From b44e278e8b45d3c7e2283f437c65925dfc06bfd7 Mon Sep 17 00:00:00 2001 From: liutong Date: Wed, 9 Aug 2023 13:28:55 +0800 Subject: [PATCH] init --- bash-5.1/ABOUT-NLS | 1379 + bash-5.1/AUTHORS | 466 + bash-5.1/CHANGES | 10312 +++ bash-5.1/COMPAT | 552 + bash-5.1/COPYING | 674 + bash-5.1/CWRU/PLATFORMS | 31 + bash-5.1/CWRU/README | 20 + bash-5.1/CWRU/changelog | 9182 ++ bash-5.1/CWRU/misc/bison | 26 + bash-5.1/CWRU/misc/errlist.c | 57 + bash-5.1/CWRU/misc/hpux10-dlfcn.h | 63 + bash-5.1/CWRU/misc/open-files.c | 39 + bash-5.1/CWRU/misc/sigs.c | 47 + bash-5.1/CWRU/misc/sigstat.c | 226 + bash-5.1/CWRU/sh-redir-hack | 15 + bash-5.1/ChangeLog | 1 + bash-5.1/INSTALL | 445 + bash-5.1/MANIFEST | 1531 + bash-5.1/Makefile.in | 1742 + bash-5.1/NEWS | 2403 + bash-5.1/NOTES | 352 + bash-5.1/POSIX | 248 + bash-5.1/RBASH | 51 + bash-5.1/README | 111 + bash-5.1/Y2K | 4 + bash-5.1/_distribution | 1 + bash-5.1/_patchlevel | 1 + bash-5.1/aclocal.m4 | 2302 + bash-5.1/alias.c | 594 + bash-5.1/alias.h | 73 + bash-5.1/array.c | 1236 + bash-5.1/array.h | 127 + bash-5.1/arrayfunc.c | 1517 + bash-5.1/arrayfunc.h | 100 + bash-5.1/assoc.c | 587 + bash-5.1/assoc.h | 65 + bash-5.1/bashansi.h | 41 + bash-5.1/bashhist.c | 1074 + bash-5.1/bashhist.h | 89 + bash-5.1/bashintl.h | 54 + bash-5.1/bashjmp.h | 46 + bash-5.1/bashline.c | 4652 + bash-5.1/bashline.h | 69 + bash-5.1/bashtypes.h | 42 + bash-5.1/bracecomp.c | 221 + bash-5.1/braces.c | 843 + bash-5.1/builtins.h | 68 + bash-5.1/builtins_org/Makefile.in | 708 + bash-5.1/builtins_org/alias.def | 241 + bash-5.1/builtins_org/bashgetopt.c | 181 + bash-5.1/builtins_org/bashgetopt.h | 42 + bash-5.1/builtins_org/bind.def | 405 + bash-5.1/builtins_org/break.def | 143 + bash-5.1/builtins_org/builtin.def | 85 + bash-5.1/builtins_org/caller.def | 156 + bash-5.1/builtins_org/cd.def | 685 + bash-5.1/builtins_org/colon.def | 76 + bash-5.1/builtins_org/command.def | 145 + bash-5.1/builtins_org/common.c | 1017 + bash-5.1/builtins_org/common.h | 252 + bash-5.1/builtins_org/complete.def | 884 + bash-5.1/builtins_org/declare.def | 1000 + bash-5.1/builtins_org/echo.def | 202 + bash-5.1/builtins_org/enable.def | 552 + bash-5.1/builtins_org/eval.def | 57 + bash-5.1/builtins_org/evalfile.c | 384 + bash-5.1/builtins_org/evalstring.c | 758 + bash-5.1/builtins_org/exec.def | 273 + bash-5.1/builtins_org/exit.def | 169 + bash-5.1/builtins_org/fc.def | 782 + bash-5.1/builtins_org/fg_bg.def | 189 + bash-5.1/builtins_org/gen-helpfiles.c | 197 + bash-5.1/builtins_org/getopt.c | 355 + bash-5.1/builtins_org/getopt.h | 82 + bash-5.1/builtins_org/getopts.def | 343 + bash-5.1/builtins_org/hash.def | 305 + bash-5.1/builtins_org/help.def | 553 + bash-5.1/builtins_org/history.def | 466 + bash-5.1/builtins_org/inlib.def | 80 + bash-5.1/builtins_org/jobs.def | 300 + bash-5.1/builtins_org/kill.def | 276 + bash-5.1/builtins_org/let.def | 131 + bash-5.1/builtins_org/mapfile.def | 374 + bash-5.1/builtins_org/mkbuiltins.c | 1682 + bash-5.1/builtins_org/printf.def | 1272 + bash-5.1/builtins_org/psize.c | 79 + bash-5.1/builtins_org/psize.sh | 45 + bash-5.1/builtins_org/pushd.def | 796 + bash-5.1/builtins_org/read.def | 1190 + bash-5.1/builtins_org/reserved.def | 288 + bash-5.1/builtins_org/return.def | 71 + bash-5.1/builtins_org/set.def | 1018 + bash-5.1/builtins_org/setattr.def | 664 + bash-5.1/builtins_org/shift.def | 90 + bash-5.1/builtins_org/shopt.def | 899 + bash-5.1/builtins_org/source.def | 200 + bash-5.1/builtins_org/suspend.def | 128 + bash-5.1/builtins_org/test.def | 159 + bash-5.1/builtins_org/times.def | 119 + bash-5.1/builtins_org/trap.def | 313 + bash-5.1/builtins_org/type.def | 420 + bash-5.1/builtins_org/ulimit.def | 800 + bash-5.1/builtins_org/umask.def | 317 + bash-5.1/builtins_org/wait.def | 364 + bash-5.1/command.h | 408 + bash-5.1/config-bot.h | 207 + bash-5.1/config-top.h | 197 + bash-5.1/config.h.in | 1249 + bash-5.1/configure | 21992 +++++ bash-5.1/configure.ac | 1312 + bash-5.1/conftypes.h | 58 + bash-5.1/copy_cmd.c | 459 + bash-5.1/cross-build/cygwin32.cache | 251 + bash-5.1/cross-build/opennt.cache | 169 + bash-5.1/cross-build/qnx.cache | 66 + bash-5.1/cross-build/x86-beos.cache | 45 + bash-5.1/dispose_cmd.c | 342 + bash-5.1/dispose_cmd.h | 40 + bash-5.1/doc/FAQ | 2412 + bash-5.1/doc/INTRO | 187 + bash-5.1/doc/Makefile.in | 340 + bash-5.1/doc/README | 36 + bash-5.1/doc/aosa-bash-full.pdf | Bin 0 -> 393895 bytes bash-5.1/doc/aosa-bash.pdf | Bin 0 -> 228239 bytes bash-5.1/doc/article.ms | 1114 + bash-5.1/doc/article.pdf | Bin 0 -> 49482 bytes bash-5.1/doc/article.ps | 1442 + bash-5.1/doc/article.txt | 1111 + bash-5.1/doc/bash.0 | 6405 ++ bash-5.1/doc/bash.1 | 11309 +++ bash-5.1/doc/bash.html | 14369 +++ bash-5.1/doc/bash.info | 12123 +++ bash-5.1/doc/bash.pdf | Bin 0 -> 381560 bytes bash-5.1/doc/bash.ps | 10059 +++ bash-5.1/doc/bashbug.0 | 52 + bash-5.1/doc/bashbug.1 | 67 + bash-5.1/doc/bashbug.ps | 297 + bash-5.1/doc/bashref.dvi | Bin 0 -> 789640 bytes bash-5.1/doc/bashref.html | 15872 ++++ bash-5.1/doc/bashref.info | 12123 +++ bash-5.1/doc/bashref.pdf | Bin 0 -> 769844 bytes bash-5.1/doc/bashref.ps | 21959 +++++ bash-5.1/doc/bashref.texi | 9583 ++ bash-5.1/doc/builtins.0 | 2014 + bash-5.1/doc/builtins.1 | 24 + bash-5.1/doc/builtins.ps | 3318 + bash-5.1/doc/fdl.texi | 506 + bash-5.1/doc/fdl.txt | 451 + bash-5.1/doc/htmlpost.sh | 19 + bash-5.1/doc/infopost.sh | 8 + bash-5.1/doc/rbash.0 | 63 + bash-5.1/doc/rbash.1 | 8 + bash-5.1/doc/rbash.ps | 290 + bash-5.1/doc/rose94.pdf | Bin 0 -> 228533 bytes bash-5.1/doc/rose94.ps | 1581 + bash-5.1/doc/texinfo.tex | 11045 +++ bash-5.1/doc/version.texi | 11 + bash-5.1/error.c | 511 + bash-5.1/error.h | 73 + bash-5.1/eval.c | 401 + bash-5.1/examples/INDEX.html | 426 + bash-5.1/examples/INDEX.txt | 103 + bash-5.1/examples/bash-completion/README | 7 + .../bash-completion-2.5.tar.xz | Bin 0 -> 276732 bytes bash-5.1/examples/complete/bash_completion | 9401 ++ .../examples/complete/bashcc-1.0.1.tar.gz | Bin 0 -> 4609 bytes bash-5.1/examples/complete/cdfunc | 76 + bash-5.1/examples/complete/complete-examples | 512 + bash-5.1/examples/functions/array-stuff | 122 + bash-5.1/examples/functions/array-to-string | 15 + bash-5.1/examples/functions/arrayops.bash | 146 + bash-5.1/examples/functions/autoload | 111 + bash-5.1/examples/functions/autoload.v2 | 192 + bash-5.1/examples/functions/autoload.v3 | 125 + bash-5.1/examples/functions/autoload.v4 | 556 + bash-5.1/examples/functions/autoload.v4.t | 184 + bash-5.1/examples/functions/basename | 23 + bash-5.1/examples/functions/csh-compat | 48 + bash-5.1/examples/functions/dirname | 21 + bash-5.1/examples/functions/dirstack | 160 + bash-5.1/examples/functions/exitstat | 22 + bash-5.1/examples/functions/external | 50 + bash-5.1/examples/functions/fact | 13 + bash-5.1/examples/functions/fstty | 77 + bash-5.1/examples/functions/func | 43 + bash-5.1/examples/functions/inetaddr | 79 + bash-5.1/examples/functions/inpath | 14 + bash-5.1/examples/functions/isnum2 | 41 + bash-5.1/examples/functions/isvalidip | 14 + bash-5.1/examples/functions/ksh-cd | 54 + bash-5.1/examples/functions/ksh-compat-test | 58 + bash-5.1/examples/functions/kshenv | 246 + bash-5.1/examples/functions/login | 11 + bash-5.1/examples/functions/notify.bash | 77 + bash-5.1/examples/functions/seq | 48 + bash-5.1/examples/functions/seq2 | 56 + bash-5.1/examples/functions/shcat | 7 + bash-5.1/examples/functions/shcat2 | 19 + bash-5.1/examples/functions/sort-pos-params | 69 + bash-5.1/examples/functions/substr | 97 + bash-5.1/examples/functions/substr2 | 99 + bash-5.1/examples/functions/whatis | 71 + bash-5.1/examples/functions/whence | 78 + bash-5.1/examples/functions/which | 62 + bash-5.1/examples/loadables/Makefile.in | 324 + bash-5.1/examples/loadables/Makefile.inc.in | 108 + bash-5.1/examples/loadables/README | 76 + bash-5.1/examples/loadables/accept.c | 234 + bash-5.1/examples/loadables/asort.c | 279 + bash-5.1/examples/loadables/basename.c | 131 + bash-5.1/examples/loadables/cat.c | 122 + bash-5.1/examples/loadables/csv.c | 206 + bash-5.1/examples/loadables/cut.c | 625 + bash-5.1/examples/loadables/dirname.c | 119 + bash-5.1/examples/loadables/fdflags.c | 374 + bash-5.1/examples/loadables/finfo.c | 629 + bash-5.1/examples/loadables/head.c | 167 + bash-5.1/examples/loadables/hello.c | 96 + bash-5.1/examples/loadables/id.c | 329 + bash-5.1/examples/loadables/ln.c | 236 + bash-5.1/examples/loadables/loadables.h | 34 + bash-5.1/examples/loadables/logname.c | 74 + bash-5.1/examples/loadables/mkdir.c | 245 + bash-5.1/examples/loadables/mkfifo.c | 146 + bash-5.1/examples/loadables/mktemp.c | 212 + bash-5.1/examples/loadables/mypid.c | 89 + bash-5.1/examples/loadables/necho.c | 54 + bash-5.1/examples/loadables/pathchk.c | 381 + bash-5.1/examples/loadables/perl/Makefile.in | 99 + bash-5.1/examples/loadables/perl/README | 6 + bash-5.1/examples/loadables/perl/bperl.c | 46 + bash-5.1/examples/loadables/perl/iperl.c | 24 + bash-5.1/examples/loadables/print.c | 192 + bash-5.1/examples/loadables/printenv.c | 94 + bash-5.1/examples/loadables/push.c | 117 + bash-5.1/examples/loadables/realpath.c | 145 + bash-5.1/examples/loadables/rm.c | 181 + bash-5.1/examples/loadables/rmdir.c | 72 + bash-5.1/examples/loadables/seq.c | 490 + bash-5.1/examples/loadables/setpgid.c | 121 + bash-5.1/examples/loadables/sleep.c | 101 + bash-5.1/examples/loadables/stat.c | 430 + bash-5.1/examples/loadables/strftime.c | 128 + bash-5.1/examples/loadables/sync.c | 53 + bash-5.1/examples/loadables/tee.c | 180 + bash-5.1/examples/loadables/template.c | 75 + bash-5.1/examples/loadables/truefalse.c | 72 + bash-5.1/examples/loadables/tty.c | 82 + bash-5.1/examples/loadables/uname.c | 162 + bash-5.1/examples/loadables/unlink.c | 74 + bash-5.1/examples/loadables/whoami.c | 75 + bash-5.1/examples/misc/aliasconv.bash | 44 + bash-5.1/examples/misc/aliasconv.sh | 42 + bash-5.1/examples/misc/cshtobash | 139 + bash-5.1/examples/scripts/cat.sh | 12 + bash-5.1/examples/scripts/center | 41 + bash-5.1/examples/scripts/inpath | 19 + bash-5.1/examples/scripts/shprompt | 153 + bash-5.1/examples/scripts/spin.bash | 37 + bash-5.1/examples/scripts/xterm_title | 44 + bash-5.1/examples/scripts/zprintf | 43 + bash-5.1/examples/startup-files/Bash_aliases | 63 + bash-5.1/examples/startup-files/Bash_profile | 18 + bash-5.1/examples/startup-files/Bashrc.bfox | 70 + bash-5.1/examples/startup-files/README | 12 + bash-5.1/examples/startup-files/bash-profile | 39 + bash-5.1/examples/startup-files/bashrc | 133 + bash-5.1/execute_cmd.c | 6326 ++ bash-5.1/execute_cmd.h | 126 + bash-5.1/expr.c | 1671 + bash-5.1/externs.h | 548 + bash-5.1/findcmd.c | 688 + bash-5.1/findcmd.h | 47 + bash-5.1/flags.c | 385 + bash-5.1/flags.h | 87 + bash-5.1/general.c | 1441 + bash-5.1/general.h | 371 + bash-5.1/hashcmd.c | 195 + bash-5.1/hashcmd.h | 43 + bash-5.1/hashlib.c | 545 + bash-5.1/hashlib.h | 92 + bash-5.1/include/ansi_stdlib.h | 54 + bash-5.1/include/chartypes.h | 113 + bash-5.1/include/filecntl.h | 53 + bash-5.1/include/gettext.h | 70 + bash-5.1/include/maxpath.h | 75 + bash-5.1/include/memalloc.h | 62 + bash-5.1/include/ocache.h | 133 + bash-5.1/include/posixdir.h | 71 + bash-5.1/include/posixjmp.h | 46 + bash-5.1/include/posixselect.h | 47 + bash-5.1/include/posixstat.h | 162 + bash-5.1/include/posixtime.h | 61 + bash-5.1/include/posixwait.h | 107 + bash-5.1/include/shmbchar.h | 112 + bash-5.1/include/shmbutil.h | 551 + bash-5.1/include/shtty.h | 112 + bash-5.1/include/stat-time.h | 214 + bash-5.1/include/stdc.h | 89 + bash-5.1/include/systimes.h | 55 + bash-5.1/include/typemax.h | 131 + bash-5.1/include/unionwait.h | 98 + bash-5.1/input.c | 677 + bash-5.1/input.h | 135 + bash-5.1/jobs.c | 5136 ++ bash-5.1/jobs.h | 321 + bash-5.1/lib/glob/Makefile.in | 168 + bash-5.1/lib/glob/collsyms.h | 140 + bash-5.1/lib/glob/doc/Makefile | 5 + bash-5.1/lib/glob/doc/glob.texi | 1 + bash-5.1/lib/glob/glob.c | 1554 + bash-5.1/lib/glob/glob.h | 46 + bash-5.1/lib/glob/glob_loop.c | 84 + bash-5.1/lib/glob/gm_loop.c | 208 + bash-5.1/lib/glob/gmisc.c | 108 + bash-5.1/lib/glob/ndir.h | 50 + bash-5.1/lib/glob/sm_loop.c | 942 + bash-5.1/lib/glob/smatch.c | 617 + bash-5.1/lib/glob/strmatch.c | 79 + bash-5.1/lib/glob/strmatch.h | 64 + bash-5.1/lib/glob/xmbsrtowcs.c | 523 + bash-5.1/lib/intl/ChangeLog | 4 + bash-5.1/lib/intl/Makefile.in | 472 + bash-5.1/lib/intl/VERSION | 1 + bash-5.1/lib/intl/bindtextdom.c | 376 + bash-5.1/lib/intl/config.charset | 465 + bash-5.1/lib/intl/dcgettext.c | 61 + bash-5.1/lib/intl/dcigettext.c | 1248 + bash-5.1/lib/intl/dcngettext.c | 62 + bash-5.1/lib/intl/dgettext.c | 61 + bash-5.1/lib/intl/dngettext.c | 63 + bash-5.1/lib/intl/eval-plural.h | 116 + bash-5.1/lib/intl/explodename.c | 195 + bash-5.1/lib/intl/finddomain.c | 197 + bash-5.1/lib/intl/gettext.c | 66 + bash-5.1/lib/intl/gettextP.h | 226 + bash-5.1/lib/intl/gmo.h | 150 + bash-5.1/lib/intl/hash-string.h | 61 + bash-5.1/lib/intl/intl-compat.c | 152 + bash-5.1/lib/intl/l10nflist.c | 459 + bash-5.1/lib/intl/libgnuintl.h.in | 311 + bash-5.1/lib/intl/loadinfo.h | 159 + bash-5.1/lib/intl/loadmsgcat.c | 1336 + bash-5.1/lib/intl/localcharset.c | 399 + bash-5.1/lib/intl/localcharset.h | 43 + bash-5.1/lib/intl/locale.alias | 78 + bash-5.1/lib/intl/localealias.c | 427 + bash-5.1/lib/intl/localename.c | 774 + bash-5.1/lib/intl/log.c | 106 + bash-5.1/lib/intl/ngettext.c | 70 + bash-5.1/lib/intl/os2compat.c | 100 + bash-5.1/lib/intl/os2compat.h | 48 + bash-5.1/lib/intl/osdep.c | 26 + bash-5.1/lib/intl/plural-exp.c | 158 + bash-5.1/lib/intl/plural-exp.h | 128 + bash-5.1/lib/intl/plural.c | 1679 + bash-5.1/lib/intl/plural.y | 411 + bash-5.1/lib/intl/ref-add.sin | 29 + bash-5.1/lib/intl/ref-del.sin | 24 + bash-5.1/lib/intl/relocatable.c | 440 + bash-5.1/lib/intl/relocatable.h | 69 + bash-5.1/lib/intl/textdomain.c | 144 + bash-5.1/lib/malloc/Makefile.in | 138 + bash-5.1/lib/malloc/alloca.c | 482 + bash-5.1/lib/malloc/getpagesize.h | 60 + bash-5.1/lib/malloc/i386-alloca.s | 16 + bash-5.1/lib/malloc/imalloc.h | 173 + bash-5.1/lib/malloc/malloc.c | 1481 + bash-5.1/lib/malloc/mstats.h | 114 + bash-5.1/lib/malloc/shmalloc.h | 70 + bash-5.1/lib/malloc/stats.c | 213 + bash-5.1/lib/malloc/stub.c | 22 + bash-5.1/lib/malloc/table.c | 429 + bash-5.1/lib/malloc/table.h | 116 + bash-5.1/lib/malloc/trace.c | 126 + bash-5.1/lib/malloc/watch.c | 151 + bash-5.1/lib/malloc/watch.h | 41 + bash-5.1/lib/malloc/x386-alloca.s | 63 + bash-5.1/lib/malloc/xleaktrace | 47 + bash-5.1/lib/malloc/xmalloc.c | 94 + bash-5.1/lib/readline/COPYING | 674 + bash-5.1/lib/readline/ChangeLog | 403 + bash-5.1/lib/readline/Makefile.in | 396 + bash-5.1/lib/readline/README | 6 + bash-5.1/lib/readline/STANDALONE | 2 + bash-5.1/lib/readline/ansi_stdlib.h | 54 + bash-5.1/lib/readline/bind.c | 2970 + bash-5.1/lib/readline/callback.c | 360 + bash-5.1/lib/readline/chardefs.h | 164 + bash-5.1/lib/readline/colors.c | 301 + bash-5.1/lib/readline/colors.h | 126 + bash-5.1/lib/readline/compat.c | 106 + bash-5.1/lib/readline/complete.c | 2990 + bash-5.1/lib/readline/display.c | 3557 + bash-5.1/lib/readline/doc/Makefile | 145 + bash-5.1/lib/readline/doc/fdl.texi | 506 + bash-5.1/lib/readline/doc/history.texi | 85 + bash-5.1/lib/readline/doc/hstech.texi | 602 + bash-5.1/lib/readline/doc/hsuser.texi | 527 + bash-5.1/lib/readline/doc/rlman.texi | 84 + bash-5.1/lib/readline/doc/rltech.texi | 2757 + bash-5.1/lib/readline/doc/rluser.texi | 2422 + bash-5.1/lib/readline/doc/rluserman.texi | 70 + bash-5.1/lib/readline/doc/version.texi | 10 + bash-5.1/lib/readline/emacs_keymap.c | 872 + bash-5.1/lib/readline/examples/Inputrc | 81 + bash-5.1/lib/readline/examples/Makefile | 44 + bash-5.1/lib/readline/examples/excallback.c | 196 + bash-5.1/lib/readline/examples/fileman.c | 506 + bash-5.1/lib/readline/examples/histexamp.c | 125 + bash-5.1/lib/readline/examples/manexamp.c | 111 + .../lib/readline/examples/rl-callbacktest.c | 90 + bash-5.1/lib/readline/examples/rl.c | 158 + bash-5.1/lib/readline/examples/rlcat.c | 179 + bash-5.1/lib/readline/examples/rltest.c | 93 + bash-5.1/lib/readline/funmap.c | 271 + bash-5.1/lib/readline/histexpand.c | 1695 + bash-5.1/lib/readline/histfile.c | 835 + bash-5.1/lib/readline/histlib.h | 85 + bash-5.1/lib/readline/history.c | 607 + bash-5.1/lib/readline/history.h | 286 + bash-5.1/lib/readline/histsearch.c | 287 + bash-5.1/lib/readline/input.c | 715 + bash-5.1/lib/readline/isearch.c | 890 + bash-5.1/lib/readline/keymaps.c | 174 + bash-5.1/lib/readline/keymaps.h | 100 + bash-5.1/lib/readline/kill.c | 866 + bash-5.1/lib/readline/macro.c | 332 + bash-5.1/lib/readline/mbutil.c | 524 + bash-5.1/lib/readline/misc.c | 737 + bash-5.1/lib/readline/nls.c | 290 + bash-5.1/lib/readline/parens.c | 180 + bash-5.1/lib/readline/parse-colors.c | 440 + bash-5.1/lib/readline/parse-colors.h | 46 + bash-5.1/lib/readline/posixdir.h | 71 + bash-5.1/lib/readline/posixjmp.h | 46 + bash-5.1/lib/readline/posixselect.h | 47 + bash-5.1/lib/readline/posixstat.h | 162 + bash-5.1/lib/readline/readline.c | 1581 + bash-5.1/lib/readline/readline.h | 969 + bash-5.1/lib/readline/rlconf.h | 79 + bash-5.1/lib/readline/rldefs.h | 166 + bash-5.1/lib/readline/rlmbutil.h | 213 + bash-5.1/lib/readline/rlprivate.h | 605 + bash-5.1/lib/readline/rlshell.h | 33 + bash-5.1/lib/readline/rlstdc.h | 57 + bash-5.1/lib/readline/rltty.c | 991 + bash-5.1/lib/readline/rltty.h | 80 + bash-5.1/lib/readline/rltypedefs.h | 100 + bash-5.1/lib/readline/rlwinsize.h | 58 + bash-5.1/lib/readline/savestring.c | 40 + bash-5.1/lib/readline/search.c | 695 + bash-5.1/lib/readline/shell.c | 214 + bash-5.1/lib/readline/signals.c | 779 + bash-5.1/lib/readline/tcap.h | 60 + bash-5.1/lib/readline/terminal.c | 845 + bash-5.1/lib/readline/text.c | 1880 + bash-5.1/lib/readline/tilde.c | 493 + bash-5.1/lib/readline/tilde.h | 80 + bash-5.1/lib/readline/undo.c | 367 + bash-5.1/lib/readline/util.c | 576 + bash-5.1/lib/readline/vi_keymap.c | 875 + bash-5.1/lib/readline/vi_mode.c | 2408 + bash-5.1/lib/readline/xfree.c | 49 + bash-5.1/lib/readline/xmalloc.c | 75 + bash-5.1/lib/readline/xmalloc.h | 45 + bash-5.1/lib/sh/Makefile.in | 639 + bash-5.1/lib/sh/casemod.c | 273 + bash-5.1/lib/sh/clktck.c | 61 + bash-5.1/lib/sh/clock.c | 87 + bash-5.1/lib/sh/dprintf.c | 70 + bash-5.1/lib/sh/eaccess.c | 244 + bash-5.1/lib/sh/fmtullong.c | 31 + bash-5.1/lib/sh/fmtulong.c | 191 + bash-5.1/lib/sh/fmtumax.c | 27 + bash-5.1/lib/sh/fnxform.c | 199 + bash-5.1/lib/sh/fpurge.c | 232 + bash-5.1/lib/sh/getcwd.c | 356 + bash-5.1/lib/sh/getenv.c | 233 + bash-5.1/lib/sh/gettimeofday.c | 35 + bash-5.1/lib/sh/inet_aton.c | 214 + bash-5.1/lib/sh/input_avail.c | 165 + bash-5.1/lib/sh/itos.c | 84 + bash-5.1/lib/sh/mailstat.c | 159 + bash-5.1/lib/sh/makepath.c | 128 + bash-5.1/lib/sh/mbscasecmp.c | 79 + bash-5.1/lib/sh/mbschr.c | 91 + bash-5.1/lib/sh/mbscmp.c | 77 + bash-5.1/lib/sh/memset.c | 29 + bash-5.1/lib/sh/mktime.c | 438 + bash-5.1/lib/sh/netconn.c | 82 + bash-5.1/lib/sh/netopen.c | 351 + bash-5.1/lib/sh/oslib.c | 301 + bash-5.1/lib/sh/pathcanon.c | 234 + bash-5.1/lib/sh/pathphys.c | 296 + bash-5.1/lib/sh/random.c | 240 + bash-5.1/lib/sh/rename.c | 76 + bash-5.1/lib/sh/setlinebuf.c | 63 + bash-5.1/lib/sh/shmatch.c | 123 + bash-5.1/lib/sh/shmbchar.c | 137 + bash-5.1/lib/sh/shquote.c | 431 + bash-5.1/lib/sh/shtty.c | 330 + bash-5.1/lib/sh/snprintf.c | 2221 + bash-5.1/lib/sh/spell.c | 212 + bash-5.1/lib/sh/strcasecmp.c | 84 + bash-5.1/lib/sh/strcasestr.c | 46 + bash-5.1/lib/sh/strchrnul.c | 35 + bash-5.1/lib/sh/strdup.c | 42 + bash-5.1/lib/sh/strerror.c | 74 + bash-5.1/lib/sh/strftime.c | 1015 + bash-5.1/lib/sh/stringlist.c | 297 + bash-5.1/lib/sh/stringvec.c | 272 + bash-5.1/lib/sh/strnlen.c | 49 + bash-5.1/lib/sh/strpbrk.c | 49 + bash-5.1/lib/sh/strstr.c | 125 + bash-5.1/lib/sh/strtod.c | 207 + bash-5.1/lib/sh/strtoimax.c | 113 + bash-5.1/lib/sh/strtol.c | 259 + bash-5.1/lib/sh/strtoll.c | 30 + bash-5.1/lib/sh/strtoul.c | 30 + bash-5.1/lib/sh/strtoull.c | 31 + bash-5.1/lib/sh/strtoumax.c | 113 + bash-5.1/lib/sh/strtrans.c | 400 + bash-5.1/lib/sh/times.c | 77 + bash-5.1/lib/sh/timeval.c | 179 + bash-5.1/lib/sh/tmpfile.c | 311 + bash-5.1/lib/sh/uconvert.c | 124 + bash-5.1/lib/sh/ufuncs.c | 140 + bash-5.1/lib/sh/unicode.c | 339 + bash-5.1/lib/sh/utf8.c | 196 + bash-5.1/lib/sh/vprint.c | 85 + bash-5.1/lib/sh/wcsdup.c | 44 + bash-5.1/lib/sh/wcsnwidth.c | 56 + bash-5.1/lib/sh/wcswidth.c | 46 + bash-5.1/lib/sh/winsize.c | 98 + bash-5.1/lib/sh/zcatfd.c | 74 + bash-5.1/lib/sh/zgetline.c | 125 + bash-5.1/lib/sh/zmapfd.c | 93 + bash-5.1/lib/sh/zread.c | 224 + bash-5.1/lib/sh/zwrite.c | 64 + bash-5.1/lib/termcap/Makefile.in | 90 + bash-5.1/lib/termcap/ltcap.h | 30 + bash-5.1/lib/termcap/termcap.c | 817 + bash-5.1/lib/termcap/termcap.h | 63 + bash-5.1/lib/termcap/tparam.c | 345 + bash-5.1/lib/termcap/version.c | 22 + bash-5.1/lib/tilde/Makefile.in | 126 + bash-5.1/lib/tilde/README | 5 + bash-5.1/lib/tilde/shell.c | 79 + bash-5.1/lib/tilde/tilde.c | 493 + bash-5.1/lib/tilde/tilde.h | 80 + bash-5.1/list.c | 136 + bash-5.1/locale.c | 639 + bash-5.1/m4/codeset.m4 | 24 + bash-5.1/m4/extern-inline.m4 | 114 + bash-5.1/m4/fcntl-o.m4 | 139 + bash-5.1/m4/gettext.m4 | 419 + bash-5.1/m4/glibc2.m4 | 31 + bash-5.1/m4/glibc21.m4 | 34 + bash-5.1/m4/host-cpu-c-abi.m4 | 644 + bash-5.1/m4/iconv.m4 | 288 + bash-5.1/m4/intdiv0.m4 | 87 + bash-5.1/m4/intl-thread-locale.m4 | 183 + bash-5.1/m4/intl.m4 | 312 + bash-5.1/m4/intlmacosx.m4 | 72 + bash-5.1/m4/intmax.m4 | 36 + bash-5.1/m4/inttypes-pri.m4 | 42 + bash-5.1/m4/inttypes.m4 | 159 + bash-5.1/m4/inttypes_h.m4 | 29 + bash-5.1/m4/lcmessage.m4 | 35 + bash-5.1/m4/lib-ld.m4 | 168 + bash-5.1/m4/lib-link.m4 | 774 + bash-5.1/m4/lib-prefix.m4 | 249 + bash-5.1/m4/lock.m4 | 47 + bash-5.1/m4/nls.m4 | 32 + bash-5.1/m4/po.m4 | 441 + bash-5.1/m4/printf-posix.m4 | 48 + bash-5.1/m4/progtest.m4 | 91 + bash-5.1/m4/pthread_rwlock_rdlock.m4 | 165 + bash-5.1/m4/size_max.m4 | 75 + bash-5.1/m4/stat-time.m4 | 61 + bash-5.1/m4/stdint_h.m4 | 27 + bash-5.1/m4/threadlib.m4 | 393 + bash-5.1/m4/timespec.m4 | 71 + bash-5.1/m4/uintmax_t.m4 | 30 + bash-5.1/m4/ulonglong.m4 | 5 + bash-5.1/m4/visibility.m4 | 77 + bash-5.1/m4/wchar_t.m4 | 24 + bash-5.1/m4/wint_t.m4 | 74 + bash-5.1/m4/xsize.m4 | 12 + bash-5.1/mailcheck.c | 491 + bash-5.1/mailcheck.h | 34 + bash-5.1/make_cmd.c | 944 + bash-5.1/make_cmd.h | 72 + bash-5.1/mksyntax.c | 415 + bash-5.1/nojobs.c | 1070 + bash-5.1/parse.y | 6921 ++ bash-5.1/parser-built | 186 + bash-5.1/parser.h | 100 + bash-5.1/patchlevel.h | 30 + bash-5.1/pathexp.c | 690 + bash-5.1/pathexp.h | 107 + bash-5.1/pathnames.h.in | 33 + bash-5.1/pcomplete.c | 1754 + bash-5.1/pcomplete.h | 177 + bash-5.1/pcomplib.c | 228 + bash-5.1/po/LINGUAS | 2 + bash-5.1/po/Makefile.in.in | 359 + bash-5.1/po/Makevars | 41 + bash-5.1/po/POTFILES.in | 81 + bash-5.1/po/README | 1 + bash-5.1/po/Rules-builtins | 19 + bash-5.1/po/Rules-quot | 42 + bash-5.1/po/af.gmo | Bin 0 -> 1321 bytes bash-5.1/po/af.po | 4909 ++ bash-5.1/po/bash.pot | 4248 + bash-5.1/po/bg.gmo | Bin 0 -> 219994 bytes bash-5.1/po/bg.po | 6214 ++ bash-5.1/po/boldquot.sed | 10 + bash-5.1/po/ca.gmo | Bin 0 -> 143614 bytes bash-5.1/po/ca.po | 5985 ++ bash-5.1/po/cs.gmo | Bin 0 -> 163842 bytes bash-5.1/po/cs.po | 6630 ++ bash-5.1/po/da.gmo | Bin 0 -> 72064 bytes bash-5.1/po/da.po | 6073 ++ bash-5.1/po/de.gmo | Bin 0 -> 94744 bytes bash-5.1/po/de.po | 5156 ++ bash-5.1/po/el.gmo | Bin 0 -> 74685 bytes bash-5.1/po/el.po | 4613 + bash-5.1/po/en@boldquot.gmo | Bin 0 -> 173562 bytes bash-5.1/po/en@boldquot.header | 25 + bash-5.1/po/en@boldquot.po | 5898 ++ bash-5.1/po/en@quot.gmo | Bin 0 -> 171914 bytes bash-5.1/po/en@quot.header | 22 + bash-5.1/po/en@quot.po | 5859 ++ bash-5.1/po/eo.gmo | Bin 0 -> 151768 bytes bash-5.1/po/eo.po | 6083 ++ bash-5.1/po/es.gmo | Bin 0 -> 162751 bytes bash-5.1/po/es.po | 6046 ++ bash-5.1/po/et.gmo | Bin 0 -> 12197 bytes bash-5.1/po/et.po | 4277 + bash-5.1/po/fi.gmo | Bin 0 -> 74465 bytes bash-5.1/po/fi.po | 5898 ++ bash-5.1/po/fr.gmo | Bin 0 -> 167579 bytes bash-5.1/po/fr.po | 7087 ++ bash-5.1/po/ga.gmo | Bin 0 -> 117387 bytes bash-5.1/po/ga.po | 5393 ++ bash-5.1/po/gl.gmo | Bin 0 -> 55254 bytes bash-5.1/po/gl.po | 4805 + bash-5.1/po/hr.gmo | Bin 0 -> 157581 bytes bash-5.1/po/hr.po | 5741 ++ bash-5.1/po/hu.gmo | Bin 0 -> 161293 bytes bash-5.1/po/hu.po | 5850 ++ bash-5.1/po/id.gmo | Bin 0 -> 87778 bytes bash-5.1/po/id.po | 6760 ++ bash-5.1/po/insert-header.sin | 23 + bash-5.1/po/it.gmo | Bin 0 -> 85368 bytes bash-5.1/po/it.po | 6136 ++ bash-5.1/po/ja.gmo | Bin 0 -> 100113 bytes bash-5.1/po/ja.po | 5897 ++ bash-5.1/po/ko.gmo | Bin 0 -> 52646 bytes bash-5.1/po/ko.po | 4447 + bash-5.1/po/lt.gmo | Bin 0 -> 28987 bytes bash-5.1/po/lt.po | 4694 + bash-5.1/po/nb.gmo | Bin 0 -> 152862 bytes bash-5.1/po/nb.po | 5867 ++ bash-5.1/po/nl.gmo | Bin 0 -> 160297 bytes bash-5.1/po/nl.po | 5919 ++ bash-5.1/po/pl.gmo | Bin 0 -> 163418 bytes bash-5.1/po/pl.po | 5989 ++ bash-5.1/po/pt.gmo | Bin 0 -> 159207 bytes bash-5.1/po/pt.po | 5990 ++ bash-5.1/po/pt_BR.gmo | Bin 0 -> 162997 bytes bash-5.1/po/pt_BR.po | 8636 ++ bash-5.1/po/quot.sed | 6 + bash-5.1/po/remove-potcdate.sin | 19 + bash-5.1/po/ro.gmo | Bin 0 -> 13361 bytes bash-5.1/po/ro.po | 6747 ++ bash-5.1/po/ru.gmo | Bin 0 -> 125446 bytes bash-5.1/po/ru.po | 8206 ++ bash-5.1/po/sk.gmo | Bin 0 -> 84939 bytes bash-5.1/po/sk.po | 6505 ++ bash-5.1/po/sl.gmo | Bin 0 -> 82089 bytes bash-5.1/po/sl.po | 5876 ++ bash-5.1/po/sr.gmo | Bin 0 -> 205797 bytes bash-5.1/po/sr.po | 5951 ++ bash-5.1/po/sv.gmo | Bin 0 -> 156712 bytes bash-5.1/po/sv.po | 5877 ++ bash-5.1/po/tr.gmo | Bin 0 -> 126804 bytes bash-5.1/po/tr.po | 6425 ++ bash-5.1/po/uk.gmo | Bin 0 -> 209517 bytes bash-5.1/po/uk.po | 6018 ++ bash-5.1/po/vi.gmo | Bin 0 -> 138318 bytes bash-5.1/po/vi.po | 5841 ++ bash-5.1/po/zh_CN.gmo | Bin 0 -> 148429 bytes bash-5.1/po/zh_CN.po | 5724 ++ bash-5.1/po/zh_TW.gmo | Bin 0 -> 149275 bytes bash-5.1/po/zh_TW.po | 5648 ++ bash-5.1/print_cmd.c | 1613 + bash-5.1/quit.h | 81 + bash-5.1/redir.c | 1505 + bash-5.1/redir.h | 40 + bash-5.1/shell.c | 2113 + bash-5.1/shell.h | 230 + bash-5.1/sig.c | 809 + bash-5.1/sig.h | 140 + bash-5.1/siglist.c | 228 + bash-5.1/siglist.h | 44 + bash-5.1/stringlib.c | 287 + bash-5.1/subst.c | 12072 +++ bash-5.1/subst.h | 354 + bash-5.1/support/Makefile.in | 88 + bash-5.1/support/SYMLINKS | 18 + bash-5.1/support/bash.pc.in | 28 + bash-5.1/support/bash.xbm | 60 + bash-5.1/support/bashbug.sh | 274 + bash-5.1/support/bashbug.sh.in | 274 + bash-5.1/support/bashversion.c | 148 + bash-5.1/support/checkbashisms | 170 + bash-5.1/support/config.guess | 1686 + bash-5.1/support/config.rpath | 684 + bash-5.1/support/config.sub | 1853 + bash-5.1/support/fixlinks | 89 + bash-5.1/support/install.sh | 247 + bash-5.1/support/man2html.c | 4088 + bash-5.1/support/missing | 187 + bash-5.1/support/mkclone | 122 + bash-5.1/support/mkconffiles | 79 + bash-5.1/support/mkdirs | 47 + bash-5.1/support/mkinstalldirs | 111 + bash-5.1/support/mksignames.c | 111 + bash-5.1/support/mkversion.sh | 168 + bash-5.1/support/printenv.c | 72 + bash-5.1/support/printenv.sh | 27 + bash-5.1/support/recho.c | 67 + bash-5.1/support/rlvers.sh | 113 + bash-5.1/support/shobj-conf | 553 + bash-5.1/support/signames.c | 446 + bash-5.1/support/texi2dvi | 1996 + bash-5.1/support/texi2html | 5428 ++ bash-5.1/support/xcase.c | 98 + bash-5.1/support/xenix-link.sh | 84 + bash-5.1/support/zecho.c | 43 + bash-5.1/syntax.h | 106 + bash-5.1/tags | 73401 ++++++++++++++++ bash-5.1/test.c | 905 + bash-5.1/test.h | 39 + bash-5.1/tests/COPYRIGHT | 9 + bash-5.1/tests/README | 3 + bash-5.1/tests/alias.right | 42 + bash-5.1/tests/alias.tests | 56 + bash-5.1/tests/alias1.sub | 33 + bash-5.1/tests/alias2.sub | 35 + bash-5.1/tests/alias3.sub | 11 + bash-5.1/tests/alias4.sub | 100 + bash-5.1/tests/alias5.sub | 28 + bash-5.1/tests/appendop.right | 28 + bash-5.1/tests/appendop.tests | 100 + bash-5.1/tests/appendop1.sub | 28 + bash-5.1/tests/appendop2.sub | 31 + bash-5.1/tests/arith-for.right | 86 + bash-5.1/tests/arith-for.tests | 128 + bash-5.1/tests/arith.right | 263 + bash-5.1/tests/arith.tests | 331 + bash-5.1/tests/arith1.sub | 51 + bash-5.1/tests/arith2.sub | 58 + bash-5.1/tests/arith3.sub | 60 + bash-5.1/tests/arith4.sub | 10 + bash-5.1/tests/arith5.sub | 72 + bash-5.1/tests/arith6.sub | 65 + bash-5.1/tests/arith7.sub | 11 + bash-5.1/tests/arith8.sub | 50 + bash-5.1/tests/array-at-star | 120 + bash-5.1/tests/array.right | 765 + bash-5.1/tests/array.tests | 427 + bash-5.1/tests/array1.sub | 1 + bash-5.1/tests/array10.sub | 65 + bash-5.1/tests/array11.sub | 48 + bash-5.1/tests/array12.sub | 34 + bash-5.1/tests/array13.sub | 12 + bash-5.1/tests/array14.sub | 43 + bash-5.1/tests/array15.sub | 37 + bash-5.1/tests/array16.sub | 34 + bash-5.1/tests/array17.sub | 91 + bash-5.1/tests/array18.sub | 47 + bash-5.1/tests/array19.sub | 175 + bash-5.1/tests/array2.right | 74 + bash-5.1/tests/array2.sub | 4 + bash-5.1/tests/array20.sub | 47 + bash-5.1/tests/array21.sub | 50 + bash-5.1/tests/array22.sub | 59 + bash-5.1/tests/array23.sub | 41 + bash-5.1/tests/array24.sub | 60 + bash-5.1/tests/array25.sub | 83 + bash-5.1/tests/array26.sub | 131 + bash-5.1/tests/array27.sub | 72 + bash-5.1/tests/array28.sub | 30 + bash-5.1/tests/array3.sub | 9 + bash-5.1/tests/array4.sub | 45 + bash-5.1/tests/array5.sub | 47 + bash-5.1/tests/array6.sub | 128 + bash-5.1/tests/array7.sub | 14 + bash-5.1/tests/array8.sub | 36 + bash-5.1/tests/array9.sub | 40 + bash-5.1/tests/assoc.right | 260 + bash-5.1/tests/assoc.tests | 246 + bash-5.1/tests/assoc1.sub | 29 + bash-5.1/tests/assoc10.sub | 30 + bash-5.1/tests/assoc11.sub | 90 + bash-5.1/tests/assoc2.sub | 28 + bash-5.1/tests/assoc3.sub | 28 + bash-5.1/tests/assoc4.sub | 35 + bash-5.1/tests/assoc5.sub | 40 + bash-5.1/tests/assoc6.sub | 159 + bash-5.1/tests/assoc7.sub | 29 + bash-5.1/tests/assoc8.sub | 7 + bash-5.1/tests/assoc9.sub | 130 + bash-5.1/tests/attr.right | 37 + bash-5.1/tests/attr.tests | 54 + bash-5.1/tests/attr1.sub | 68 + bash-5.1/tests/attr2.sub | 37 + bash-5.1/tests/braces.right | 77 + bash-5.1/tests/braces.tests | 132 + bash-5.1/tests/builtins.right | 274 + bash-5.1/tests/builtins.tests | 284 + bash-5.1/tests/builtins1.sub | 14 + bash-5.1/tests/builtins2.sub | 10 + bash-5.1/tests/builtins3.sub | 14 + bash-5.1/tests/builtins4.sub | 57 + bash-5.1/tests/builtins5.sub | 74 + bash-5.1/tests/builtins6.sub | 81 + bash-5.1/tests/builtins7.sub | 38 + bash-5.1/tests/case.right | 62 + bash-5.1/tests/case.tests | 69 + bash-5.1/tests/case1.sub | 77 + bash-5.1/tests/case2.sub | 65 + bash-5.1/tests/case3.sub | 52 + bash-5.1/tests/case4.sub | 38 + bash-5.1/tests/casemod.right | 47 + bash-5.1/tests/casemod.tests | 126 + bash-5.1/tests/complete.right | 63 + bash-5.1/tests/complete.tests | 126 + bash-5.1/tests/comsub-eof.right | 15 + bash-5.1/tests/comsub-eof.tests | 13 + bash-5.1/tests/comsub-eof0.sub | 4 + bash-5.1/tests/comsub-eof1.sub | 4 + bash-5.1/tests/comsub-eof2.sub | 2 + bash-5.1/tests/comsub-eof3.sub | 4 + bash-5.1/tests/comsub-eof4.sub | 4 + bash-5.1/tests/comsub-eof5.sub | 9 + bash-5.1/tests/comsub-eof6.sub | 5 + bash-5.1/tests/comsub-posix.right | 78 + bash-5.1/tests/comsub-posix.tests | 261 + bash-5.1/tests/comsub-posix1.sub | 3 + bash-5.1/tests/comsub-posix2.sub | 29 + bash-5.1/tests/comsub-posix3.sub | 35 + bash-5.1/tests/comsub.right | 57 + bash-5.1/tests/comsub.tests | 75 + bash-5.1/tests/comsub1.sub | 73 + bash-5.1/tests/comsub2.sub | 8 + bash-5.1/tests/comsub3.sub | 44 + bash-5.1/tests/comsub4.sub | 40 + bash-5.1/tests/cond-regexp1.sub | 69 + bash-5.1/tests/cond-regexp2.sub | 45 + bash-5.1/tests/cond-regexp3.sub | 86 + bash-5.1/tests/cond.right | 136 + bash-5.1/tests/cond.tests | 214 + bash-5.1/tests/coproc.right | 10 + bash-5.1/tests/coproc.tests | 78 + bash-5.1/tests/cprint.right | 72 + bash-5.1/tests/cprint.tests | 80 + bash-5.1/tests/dbg-support.right | 371 + bash-5.1/tests/dbg-support.sub | 39 + bash-5.1/tests/dbg-support.tests | 148 + bash-5.1/tests/dbg-support2.right | 7 + bash-5.1/tests/dbg-support2.tests | 33 + bash-5.1/tests/dbg-support3.sub | 52 + bash-5.1/tests/dollar-at-star | 313 + bash-5.1/tests/dollar-at-star1.sub | 36 + bash-5.1/tests/dollar-at-star2.sub | 220 + bash-5.1/tests/dollar-at-star3.sub | 57 + bash-5.1/tests/dollar-at-star4.sub | 112 + bash-5.1/tests/dollar-at-star5.sub | 66 + bash-5.1/tests/dollar-at-star6.sub | 42 + bash-5.1/tests/dollar-at-star7.sub | 38 + bash-5.1/tests/dollar-at-star8.sub | 14 + bash-5.1/tests/dollar-at-star9.sub | 278 + bash-5.1/tests/dollar-at1.sub | 42 + bash-5.1/tests/dollar-at2.sub | 32 + bash-5.1/tests/dollar-at3.sub | 9 + bash-5.1/tests/dollar-at4.sub | 10 + bash-5.1/tests/dollar-at5.sub | 95 + bash-5.1/tests/dollar-at6.sub | 43 + bash-5.1/tests/dollar-at7.sub | 59 + bash-5.1/tests/dollar-star1.sub | 44 + bash-5.1/tests/dollar-star10.sub | 92 + bash-5.1/tests/dollar-star2.sub | 39 + bash-5.1/tests/dollar-star3.sub | 31 + bash-5.1/tests/dollar-star4.sub | 9 + bash-5.1/tests/dollar-star5.sub | 29 + bash-5.1/tests/dollar-star6.sub | 32 + bash-5.1/tests/dollar-star7.sub | 43 + bash-5.1/tests/dollar-star8.sub | 34 + bash-5.1/tests/dollar-star9.sub | 59 + bash-5.1/tests/dollar.right | 677 + bash-5.1/tests/dstack.right | 55 + bash-5.1/tests/dstack.tests | 100 + bash-5.1/tests/dstack2.right | 24 + bash-5.1/tests/dstack2.tests | 49 + bash-5.1/tests/dynvar.right | 7 + bash-5.1/tests/dynvar.tests | 90 + bash-5.1/tests/errors.right | 200 + bash-5.1/tests/errors.tests | 302 + bash-5.1/tests/errors1.sub | 40 + bash-5.1/tests/errors2.sub | 3 + bash-5.1/tests/errors3.sub | 7 + bash-5.1/tests/errors4.sub | 31 + bash-5.1/tests/errors5.sub | 12 + bash-5.1/tests/errors6.sub | 56 + bash-5.1/tests/errors7.sub | 28 + bash-5.1/tests/errors8.sub | 14 + bash-5.1/tests/exec.right | 134 + bash-5.1/tests/exec1.sub | 1 + bash-5.1/tests/exec10.sub | 47 + bash-5.1/tests/exec11.sub | 14 + bash-5.1/tests/exec12.sub | 32 + bash-5.1/tests/exec13.sub | 34 + bash-5.1/tests/exec14.sub | 47 + bash-5.1/tests/exec2.sub | 5 + bash-5.1/tests/exec3.sub | 6 + bash-5.1/tests/exec4.sub | 8 + bash-5.1/tests/exec5.sub | 9 + bash-5.1/tests/exec6.sub | 67 + bash-5.1/tests/exec7.sub | 36 + bash-5.1/tests/exec8.sub | 1 + bash-5.1/tests/exec9.sub | 33 + bash-5.1/tests/execscript | 158 + bash-5.1/tests/exp.right | 410 + bash-5.1/tests/exp.tests | 425 + bash-5.1/tests/exp1.sub | 34 + bash-5.1/tests/exp10.sub | 39 + bash-5.1/tests/exp11.sub | 105 + bash-5.1/tests/exp12.sub | 51 + bash-5.1/tests/exp2.sub | 12 + bash-5.1/tests/exp3.sub | 7 + bash-5.1/tests/exp4.sub | 10 + bash-5.1/tests/exp5.sub | 34 + bash-5.1/tests/exp6.sub | 43 + bash-5.1/tests/exp7.sub | 36 + bash-5.1/tests/exp8.sub | 44 + bash-5.1/tests/exp9.sub | 82 + bash-5.1/tests/exportfunc.right | 14 + bash-5.1/tests/exportfunc.tests | 84 + bash-5.1/tests/exportfunc1.sub | 34 + bash-5.1/tests/exportfunc2.sub | 413 + bash-5.1/tests/exportfunc3.sub | 38 + bash-5.1/tests/extglob.right | 116 + bash-5.1/tests/extglob.tests | 392 + bash-5.1/tests/extglob1.sub | 50 + bash-5.1/tests/extglob1a.sub | 29 + bash-5.1/tests/extglob2.right | 70 + bash-5.1/tests/extglob2.sub | 7 + bash-5.1/tests/extglob2.tests | 103 + bash-5.1/tests/extglob3.right | 27 + bash-5.1/tests/extglob3.sub | 37 + bash-5.1/tests/extglob3.tests | 69 + bash-5.1/tests/extglob4.sub | 45 + bash-5.1/tests/extglob5.sub | 31 + bash-5.1/tests/func.right | 169 + bash-5.1/tests/func.tests | 192 + bash-5.1/tests/func1.sub | 68 + bash-5.1/tests/func2.sub | 40 + bash-5.1/tests/func3.sub | 67 + bash-5.1/tests/func4.sub | 52 + bash-5.1/tests/getopts.right | 68 + bash-5.1/tests/getopts.tests | 56 + bash-5.1/tests/getopts1.sub | 39 + bash-5.1/tests/getopts10.sub | 30 + bash-5.1/tests/getopts2.sub | 39 + bash-5.1/tests/getopts3.sub | 40 + bash-5.1/tests/getopts4.sub | 43 + bash-5.1/tests/getopts5.sub | 62 + bash-5.1/tests/getopts6.sub | 40 + bash-5.1/tests/getopts7.sub | 43 + bash-5.1/tests/getopts8.sub | 13 + bash-5.1/tests/getopts9.sub | 29 + bash-5.1/tests/glob.right | 257 + bash-5.1/tests/glob.tests | 409 + bash-5.1/tests/glob1.sub | 30 + bash-5.1/tests/glob2.sub | 57 + bash-5.1/tests/glob3.sub | 163 + bash-5.1/tests/glob4.sub | 41 + bash-5.1/tests/glob5.sub | 76 + bash-5.1/tests/glob6.sub | 68 + bash-5.1/tests/glob7.sub | 11 + bash-5.1/tests/glob8.sub | 31 + bash-5.1/tests/glob9.sub | 13 + bash-5.1/tests/globstar.right | 587 + bash-5.1/tests/globstar.tests | 56 + bash-5.1/tests/globstar1.sub | 34 + bash-5.1/tests/globstar2.sub | 97 + bash-5.1/tests/globstar3.sub | 37 + bash-5.1/tests/heredoc.right | 106 + bash-5.1/tests/heredoc.tests | 149 + bash-5.1/tests/heredoc1.sub | 29 + bash-5.1/tests/heredoc2.sub | 9 + bash-5.1/tests/heredoc3.sub | 98 + bash-5.1/tests/heredoc4.sub | 12 + bash-5.1/tests/heredoc5.sub | 41 + bash-5.1/tests/herestr.right | 38 + bash-5.1/tests/herestr.tests | 74 + bash-5.1/tests/herestr1.sub | 10 + bash-5.1/tests/histexp.right | 246 + bash-5.1/tests/histexp.tests | 158 + bash-5.1/tests/histexp1.sub | 36 + bash-5.1/tests/histexp2.sub | 14 + bash-5.1/tests/histexp3.sub | 57 + bash-5.1/tests/histexp4.sub | 36 + bash-5.1/tests/histexp5.sub | 41 + bash-5.1/tests/histexp6.sub | 37 + bash-5.1/tests/histexp7.sub | 18 + bash-5.1/tests/history.list | 4 + bash-5.1/tests/history.right | 266 + bash-5.1/tests/history.tests | 132 + bash-5.1/tests/history1.sub | 28 + bash-5.1/tests/history2.sub | 10 + bash-5.1/tests/history3.sub | 49 + bash-5.1/tests/history4.sub | 47 + bash-5.1/tests/history5.sub | 57 + bash-5.1/tests/ifs-posix.right | 1 + bash-5.1/tests/ifs-posix.tests | 270 + bash-5.1/tests/ifs.right | 12 + bash-5.1/tests/ifs.tests | 76 + bash-5.1/tests/ifs1.sub | 14 + bash-5.1/tests/input-line.sh | 4 + bash-5.1/tests/input-line.sub | 2 + bash-5.1/tests/input.right | 3 + bash-5.1/tests/intl.right | 57 + bash-5.1/tests/intl.tests | 68 + bash-5.1/tests/intl1.sub | 11 + bash-5.1/tests/intl2.sub | 11 + bash-5.1/tests/intl3.sub | 36 + bash-5.1/tests/invert.right | 10 + bash-5.1/tests/invert.tests | 32 + bash-5.1/tests/iquote.right | 92 + bash-5.1/tests/iquote.tests | 158 + bash-5.1/tests/iquote1.sub | 56 + bash-5.1/tests/jobs.right | 118 + bash-5.1/tests/jobs.tests | 209 + bash-5.1/tests/jobs1.sub | 30 + bash-5.1/tests/jobs2.sub | 13 + bash-5.1/tests/jobs3.sub | 39 + bash-5.1/tests/jobs4.sub | 37 + bash-5.1/tests/jobs5.sub | 61 + bash-5.1/tests/jobs6.sub | 14 + bash-5.1/tests/jobs7.sub | 6 + bash-5.1/tests/lastpipe.right | 20 + bash-5.1/tests/lastpipe.tests | 73 + bash-5.1/tests/lastpipe1.sub | 5 + bash-5.1/tests/lastpipe2.sub | 43 + bash-5.1/tests/mapfile.data | 17 + bash-5.1/tests/mapfile.right | 169 + bash-5.1/tests/mapfile.tests | 57 + bash-5.1/tests/mapfile1.sub | 11 + bash-5.1/tests/mapfile2.sub | 6 + bash-5.1/tests/misc/dev-tcp.tests | 16 + bash-5.1/tests/misc/perf-script | 81 + bash-5.1/tests/misc/perftest | 10 + bash-5.1/tests/misc/read-nchars.tests | 11 + bash-5.1/tests/misc/redir-t2.sh | 17 + bash-5.1/tests/misc/run-r2.sh | 1 + bash-5.1/tests/misc/sigint-1.sh | 9 + bash-5.1/tests/misc/sigint-2.sh | 7 + bash-5.1/tests/misc/sigint-3.sh | 11 + bash-5.1/tests/misc/sigint-4.sh | 13 + bash-5.1/tests/misc/test-minus-e.1 | 9 + bash-5.1/tests/misc/test-minus-e.2 | 11 + bash-5.1/tests/misc/wait-bg.tests | 25 + bash-5.1/tests/more-exp.right | 214 + bash-5.1/tests/more-exp.tests | 517 + bash-5.1/tests/nameref.right | 485 + bash-5.1/tests/nameref.tests | 133 + bash-5.1/tests/nameref1.sub | 13 + bash-5.1/tests/nameref10.sub | 77 + bash-5.1/tests/nameref11.sub | 76 + bash-5.1/tests/nameref12.sub | 113 + bash-5.1/tests/nameref13.sub | 115 + bash-5.1/tests/nameref14.sub | 56 + bash-5.1/tests/nameref15.sub | 117 + bash-5.1/tests/nameref16.sub | 57 + bash-5.1/tests/nameref17.sub | 116 + bash-5.1/tests/nameref18.sub | 67 + bash-5.1/tests/nameref19.sub | 64 + bash-5.1/tests/nameref2.sub | 7 + bash-5.1/tests/nameref20.sub | 84 + bash-5.1/tests/nameref21.sub | 69 + bash-5.1/tests/nameref3.sub | 50 + bash-5.1/tests/nameref4.sub | 234 + bash-5.1/tests/nameref5.sub | 63 + bash-5.1/tests/nameref6.sub | 57 + bash-5.1/tests/nameref7.sub | 31 + bash-5.1/tests/nameref8.sub | 74 + bash-5.1/tests/nameref9.sub | 8 + bash-5.1/tests/new-exp.right | 725 + bash-5.1/tests/new-exp.tests | 650 + bash-5.1/tests/new-exp1.sub | 29 + bash-5.1/tests/new-exp10.sub | 113 + bash-5.1/tests/new-exp11.sub | 59 + bash-5.1/tests/new-exp12.sub | 40 + bash-5.1/tests/new-exp13.sub | 72 + bash-5.1/tests/new-exp14.sub | 19 + bash-5.1/tests/new-exp15.sub | 29 + bash-5.1/tests/new-exp2.sub | 62 + bash-5.1/tests/new-exp3.sub | 43 + bash-5.1/tests/new-exp4.sub | 43 + bash-5.1/tests/new-exp5.sub | 53 + bash-5.1/tests/new-exp6.sub | 42 + bash-5.1/tests/new-exp7.sub | 13 + bash-5.1/tests/new-exp8.sub | 129 + bash-5.1/tests/new-exp9.sub | 44 + bash-5.1/tests/nquote.right | 64 + bash-5.1/tests/nquote.tests | 133 + bash-5.1/tests/nquote1.right | 131 + bash-5.1/tests/nquote1.sub | 6 + bash-5.1/tests/nquote1.tests | 119 + bash-5.1/tests/nquote2.right | 76 + bash-5.1/tests/nquote2.sub | 42 + bash-5.1/tests/nquote2.tests | 95 + bash-5.1/tests/nquote3.right | 60 + bash-5.1/tests/nquote3.sub | 8 + bash-5.1/tests/nquote3.tests | 98 + bash-5.1/tests/nquote4.right | 18 + bash-5.1/tests/nquote4.tests | 37 + bash-5.1/tests/nquote5.right | 86 + bash-5.1/tests/nquote5.tests | 76 + bash-5.1/tests/parser.right | 16 + bash-5.1/tests/parser.tests | 6 + bash-5.1/tests/parser1.sub | 1 + bash-5.1/tests/posix2.right | 6 + bash-5.1/tests/posix2.tests | 204 + bash-5.1/tests/posix2syntax.sub | 66 + bash-5.1/tests/posixexp.right | 288 + bash-5.1/tests/posixexp.tests | 97 + bash-5.1/tests/posixexp1.sub | 51 + bash-5.1/tests/posixexp2.right | 40 + bash-5.1/tests/posixexp2.sub | 37 + bash-5.1/tests/posixexp2.tests | 60 + bash-5.1/tests/posixexp3.sub | 65 + bash-5.1/tests/posixexp4.sub | 44 + bash-5.1/tests/posixexp5.sub | 64 + bash-5.1/tests/posixexp6.sub | 70 + bash-5.1/tests/posixexp7.sub | 13 + bash-5.1/tests/posixexp8.sub | 11 + bash-5.1/tests/posixpat.right | 42 + bash-5.1/tests/posixpat.tests | 247 + bash-5.1/tests/posixpipe.right | 41 + bash-5.1/tests/posixpipe.tests | 56 + bash-5.1/tests/prec.right | 28 + bash-5.1/tests/precedence.tests | 90 + bash-5.1/tests/printf.right | 298 + bash-5.1/tests/printf.tests | 334 + bash-5.1/tests/printf1.sub | 348 + bash-5.1/tests/printf2.sub | 7 + bash-5.1/tests/printf3.sub | 75 + bash-5.1/tests/printf4.sub | 82 + bash-5.1/tests/procsub.right | 33 + bash-5.1/tests/procsub.tests | 121 + bash-5.1/tests/procsub1.sub | 5 + bash-5.1/tests/procsub2.sub | 36 + bash-5.1/tests/quote.right | 182 + bash-5.1/tests/quote.tests | 139 + bash-5.1/tests/quote1.sub | 62 + bash-5.1/tests/quote2.sub | 55 + bash-5.1/tests/quote3.sub | 31 + bash-5.1/tests/quote4.sub | 101 + bash-5.1/tests/read.right | 58 + bash-5.1/tests/read.tests | 108 + bash-5.1/tests/read1.sub | 36 + bash-5.1/tests/read2.sub | 45 + bash-5.1/tests/read3.sub | 37 + bash-5.1/tests/read4.sub | 4 + bash-5.1/tests/read5.sub | 48 + bash-5.1/tests/read6.sub | 10 + bash-5.1/tests/redir.right | 163 + bash-5.1/tests/redir.tests | 209 + bash-5.1/tests/redir1.sub | 8 + bash-5.1/tests/redir10.sub | 37 + bash-5.1/tests/redir11.sub | 76 + bash-5.1/tests/redir2.sub | 1 + bash-5.1/tests/redir3.in1 | 2 + bash-5.1/tests/redir3.in2 | 2 + bash-5.1/tests/redir3.sub | 39 + bash-5.1/tests/redir4.in1 | 1 + bash-5.1/tests/redir4.sub | 69 + bash-5.1/tests/redir5.sub | 44 + bash-5.1/tests/redir6.sub | 10 + bash-5.1/tests/redir7.sub | 82 + bash-5.1/tests/redir8.sub | 74 + bash-5.1/tests/redir9.sub | 63 + bash-5.1/tests/rhs-exp.right | 105 + bash-5.1/tests/rhs-exp.tests | 64 + bash-5.1/tests/rhs-exp1.sub | 116 + bash-5.1/tests/rsh.right | 19 + bash-5.1/tests/rsh.tests | 49 + bash-5.1/tests/rsh1.sub | 29 + bash-5.1/tests/rsh2.sub | 30 + bash-5.1/tests/run-alias | 2 + bash-5.1/tests/run-all | 64 + bash-5.1/tests/run-appendop | 2 + bash-5.1/tests/run-arith | 2 + bash-5.1/tests/run-arith-for | 2 + bash-5.1/tests/run-array | 6 + bash-5.1/tests/run-array2 | 4 + bash-5.1/tests/run-assoc | 4 + bash-5.1/tests/run-attr | 2 + bash-5.1/tests/run-braces | 2 + bash-5.1/tests/run-builtins | 6 + bash-5.1/tests/run-case | 2 + bash-5.1/tests/run-casemod | 2 + bash-5.1/tests/run-complete | 2 + bash-5.1/tests/run-comsub | 2 + bash-5.1/tests/run-comsub-eof | 2 + bash-5.1/tests/run-comsub-posix | 2 + bash-5.1/tests/run-cond | 7 + bash-5.1/tests/run-coproc | 2 + bash-5.1/tests/run-cprint | 2 + bash-5.1/tests/run-dbg-support | 9 + bash-5.1/tests/run-dbg-support2 | 9 + bash-5.1/tests/run-dirstack | 5 + bash-5.1/tests/run-dollars | 2 + bash-5.1/tests/run-dynvar | 2 + bash-5.1/tests/run-errors | 3 + bash-5.1/tests/run-execscript | 9 + bash-5.1/tests/run-exp-tests | 2 + bash-5.1/tests/run-exportfunc | 2 + bash-5.1/tests/run-extglob | 4 + bash-5.1/tests/run-extglob2 | 4 + bash-5.1/tests/run-extglob3 | 4 + bash-5.1/tests/run-func | 5 + bash-5.1/tests/run-getopts | 2 + bash-5.1/tests/run-glob-test | 7 + bash-5.1/tests/run-globstar | 4 + bash-5.1/tests/run-heredoc | 6 + bash-5.1/tests/run-herestr | 2 + bash-5.1/tests/run-histexpand | 4 + bash-5.1/tests/run-history | 4 + bash-5.1/tests/run-ifs | 2 + bash-5.1/tests/run-ifs-posix | 2 + bash-5.1/tests/run-input-test | 2 + bash-5.1/tests/run-intl | 8 + bash-5.1/tests/run-invert | 2 + bash-5.1/tests/run-iquote | 2 + bash-5.1/tests/run-jobs | 7 + bash-5.1/tests/run-lastpipe | 2 + bash-5.1/tests/run-mapfile | 2 + bash-5.1/tests/run-minimal | 68 + bash-5.1/tests/run-more-exp | 2 + bash-5.1/tests/run-nameref | 4 + bash-5.1/tests/run-new-exp | 10 + bash-5.1/tests/run-nquote | 2 + bash-5.1/tests/run-nquote1 | 4 + bash-5.1/tests/run-nquote2 | 4 + bash-5.1/tests/run-nquote3 | 4 + bash-5.1/tests/run-nquote4 | 8 + bash-5.1/tests/run-nquote5 | 2 + bash-5.1/tests/run-parser | 2 + bash-5.1/tests/run-posix2 | 2 + bash-5.1/tests/run-posixexp | 2 + bash-5.1/tests/run-posixexp2 | 2 + bash-5.1/tests/run-posixpat | 2 + bash-5.1/tests/run-posixpipe | 2 + bash-5.1/tests/run-precedence | 2 + bash-5.1/tests/run-printf | 7 + bash-5.1/tests/run-procsub | 7 + bash-5.1/tests/run-quote | 2 + bash-5.1/tests/run-read | 4 + bash-5.1/tests/run-redir | 7 + bash-5.1/tests/run-rhs-exp | 2 + bash-5.1/tests/run-rsh | 2 + bash-5.1/tests/run-set-e | 2 + bash-5.1/tests/run-set-x | 11 + bash-5.1/tests/run-shopt | 2 + bash-5.1/tests/run-strip | 2 + bash-5.1/tests/run-test | 4 + bash-5.1/tests/run-tilde | 2 + bash-5.1/tests/run-tilde2 | 2 + bash-5.1/tests/run-trap | 6 + bash-5.1/tests/run-type | 2 + bash-5.1/tests/run-varenv | 4 + bash-5.1/tests/run-vredir | 4 + bash-5.1/tests/set-e.right | 72 + bash-5.1/tests/set-e.tests | 124 + bash-5.1/tests/set-e1.sub | 72 + bash-5.1/tests/set-e2.sub | 10 + bash-5.1/tests/set-e3.sub | 10 + bash-5.1/tests/set-e3a.sub | 7 + bash-5.1/tests/set-x.right | 60 + bash-5.1/tests/set-x.tests | 38 + bash-5.1/tests/set-x1.sub | 38 + bash-5.1/tests/shopt.right | 298 + bash-5.1/tests/shopt.tests | 113 + bash-5.1/tests/shopt1.sub | 52 + bash-5.1/tests/source1.sub | 1 + bash-5.1/tests/source2.sub | 5 + bash-5.1/tests/source3.sub | 1 + bash-5.1/tests/source4.sub | 1 + bash-5.1/tests/source5.sub | 32 + bash-5.1/tests/source6.sub | 49 + bash-5.1/tests/source7.sub | 53 + bash-5.1/tests/strip.right | 12 + bash-5.1/tests/strip.tests | 35 + bash-5.1/tests/test-glue-functions | 13 + bash-5.1/tests/test.right | 295 + bash-5.1/tests/test.tests | 453 + bash-5.1/tests/test1.sub | 34 + bash-5.1/tests/tilde.right | 28 + bash-5.1/tests/tilde.tests | 92 + bash-5.1/tests/tilde2.right | 24 + bash-5.1/tests/tilde2.tests | 83 + bash-5.1/tests/trap.right | 115 + bash-5.1/tests/trap.tests | 114 + bash-5.1/tests/trap1.sub | 4 + bash-5.1/tests/trap2.sub | 62 + bash-5.1/tests/trap2a.sub | 3 + bash-5.1/tests/trap3.sub | 9 + bash-5.1/tests/trap4.sub | 55 + bash-5.1/tests/trap5.sub | 31 + bash-5.1/tests/trap6.sub | 28 + bash-5.1/tests/type.right | 135 + bash-5.1/tests/type.tests | 110 + bash-5.1/tests/type1.sub | 10 + bash-5.1/tests/type2.sub | 29 + bash-5.1/tests/type3.sub | 34 + bash-5.1/tests/type4.sub | 56 + bash-5.1/tests/unicode1.sub | 596 + bash-5.1/tests/unicode2.sub | 37 + bash-5.1/tests/unicode3.sub | 12 + bash-5.1/tests/varenv.right | 270 + bash-5.1/tests/varenv.tests | 264 + bash-5.1/tests/varenv1.sub | 41 + bash-5.1/tests/varenv10.sub | 59 + bash-5.1/tests/varenv11.sub | 43 + bash-5.1/tests/varenv12.sub | 171 + bash-5.1/tests/varenv13.sub | 36 + bash-5.1/tests/varenv14.sub | 46 + bash-5.1/tests/varenv15.in | 3 + bash-5.1/tests/varenv15.sub | 51 + bash-5.1/tests/varenv16.sub | 51 + bash-5.1/tests/varenv17.sub | 44 + bash-5.1/tests/varenv18.sub | 41 + bash-5.1/tests/varenv19.sub | 51 + bash-5.1/tests/varenv2.sub | 57 + bash-5.1/tests/varenv20.sub | 13 + bash-5.1/tests/varenv21.sub | 48 + bash-5.1/tests/varenv3.sub | 44 + bash-5.1/tests/varenv4.sub | 71 + bash-5.1/tests/varenv5.sub | 29 + bash-5.1/tests/varenv6.sub | 41 + bash-5.1/tests/varenv7.sub | 75 + bash-5.1/tests/varenv8.sub | 14 + bash-5.1/tests/varenv9.sub | 79 + bash-5.1/tests/version | 13 + bash-5.1/tests/version.mini | 13 + bash-5.1/tests/vredir.right | 100 + bash-5.1/tests/vredir.tests | 61 + bash-5.1/tests/vredir1.sub | 30 + bash-5.1/tests/vredir2.sub | 65 + bash-5.1/tests/vredir3.sub | 8 + bash-5.1/tests/vredir4.sub | 35 + bash-5.1/tests/vredir5.sub | 36 + bash-5.1/tests/vredir6.sub | 14 + bash-5.1/tests/vredir7.sub | 36 + bash-5.1/trap.c | 1453 + bash-5.1/trap.h | 128 + bash-5.1/unwind_prot.c | 382 + bash-5.1/unwind_prot.h | 52 + bash-5.1/variables.c | 6462 ++ bash-5.1/variables.h | 458 + bash-5.1/version.c | 94 + bash-5.1/xmalloc.c | 225 + bash-5.1/xmalloc.h | 66 + record.txt | 2 + 1382 files changed, 782295 insertions(+) create mode 100644 bash-5.1/ABOUT-NLS create mode 100644 bash-5.1/AUTHORS create mode 100644 bash-5.1/CHANGES create mode 100644 bash-5.1/COMPAT create mode 100644 bash-5.1/COPYING create mode 100644 bash-5.1/CWRU/PLATFORMS create mode 100644 bash-5.1/CWRU/README create mode 100755 bash-5.1/CWRU/changelog create mode 100755 bash-5.1/CWRU/misc/bison create mode 100644 bash-5.1/CWRU/misc/errlist.c create mode 100644 bash-5.1/CWRU/misc/hpux10-dlfcn.h create mode 100644 bash-5.1/CWRU/misc/open-files.c create mode 100644 bash-5.1/CWRU/misc/sigs.c create mode 100644 bash-5.1/CWRU/misc/sigstat.c create mode 100644 bash-5.1/CWRU/sh-redir-hack create mode 120000 bash-5.1/ChangeLog create mode 100644 bash-5.1/INSTALL create mode 100644 bash-5.1/MANIFEST create mode 100644 bash-5.1/Makefile.in create mode 100644 bash-5.1/NEWS create mode 100644 bash-5.1/NOTES create mode 100644 bash-5.1/POSIX create mode 100644 bash-5.1/RBASH create mode 100644 bash-5.1/README create mode 100644 bash-5.1/Y2K create mode 100644 bash-5.1/_distribution create mode 100644 bash-5.1/_patchlevel create mode 100644 bash-5.1/aclocal.m4 create mode 100644 bash-5.1/alias.c create mode 100644 bash-5.1/alias.h create mode 100644 bash-5.1/array.c create mode 100644 bash-5.1/array.h create mode 100644 bash-5.1/arrayfunc.c create mode 100644 bash-5.1/arrayfunc.h create mode 100644 bash-5.1/assoc.c create mode 100644 bash-5.1/assoc.h create mode 100644 bash-5.1/bashansi.h create mode 100644 bash-5.1/bashhist.c create mode 100644 bash-5.1/bashhist.h create mode 100644 bash-5.1/bashintl.h create mode 100644 bash-5.1/bashjmp.h create mode 100644 bash-5.1/bashline.c create mode 100644 bash-5.1/bashline.h create mode 100644 bash-5.1/bashtypes.h create mode 100644 bash-5.1/bracecomp.c create mode 100644 bash-5.1/braces.c create mode 100644 bash-5.1/builtins.h create mode 100644 bash-5.1/builtins_org/Makefile.in create mode 100644 bash-5.1/builtins_org/alias.def create mode 100644 bash-5.1/builtins_org/bashgetopt.c create mode 100644 bash-5.1/builtins_org/bashgetopt.h create mode 100644 bash-5.1/builtins_org/bind.def create mode 100644 bash-5.1/builtins_org/break.def create mode 100644 bash-5.1/builtins_org/builtin.def create mode 100644 bash-5.1/builtins_org/caller.def create mode 100644 bash-5.1/builtins_org/cd.def create mode 100644 bash-5.1/builtins_org/colon.def create mode 100644 bash-5.1/builtins_org/command.def create mode 100644 bash-5.1/builtins_org/common.c create mode 100644 bash-5.1/builtins_org/common.h create mode 100644 bash-5.1/builtins_org/complete.def create mode 100644 bash-5.1/builtins_org/declare.def create mode 100644 bash-5.1/builtins_org/echo.def create mode 100644 bash-5.1/builtins_org/enable.def create mode 100644 bash-5.1/builtins_org/eval.def create mode 100644 bash-5.1/builtins_org/evalfile.c create mode 100644 bash-5.1/builtins_org/evalstring.c create mode 100644 bash-5.1/builtins_org/exec.def create mode 100644 bash-5.1/builtins_org/exit.def create mode 100644 bash-5.1/builtins_org/fc.def create mode 100644 bash-5.1/builtins_org/fg_bg.def create mode 100644 bash-5.1/builtins_org/gen-helpfiles.c create mode 100644 bash-5.1/builtins_org/getopt.c create mode 100644 bash-5.1/builtins_org/getopt.h create mode 100644 bash-5.1/builtins_org/getopts.def create mode 100644 bash-5.1/builtins_org/hash.def create mode 100644 bash-5.1/builtins_org/help.def create mode 100644 bash-5.1/builtins_org/history.def create mode 100644 bash-5.1/builtins_org/inlib.def create mode 100644 bash-5.1/builtins_org/jobs.def create mode 100644 bash-5.1/builtins_org/kill.def create mode 100644 bash-5.1/builtins_org/let.def create mode 100644 bash-5.1/builtins_org/mapfile.def create mode 100644 bash-5.1/builtins_org/mkbuiltins.c create mode 100644 bash-5.1/builtins_org/printf.def create mode 100644 bash-5.1/builtins_org/psize.c create mode 100644 bash-5.1/builtins_org/psize.sh create mode 100644 bash-5.1/builtins_org/pushd.def create mode 100644 bash-5.1/builtins_org/read.def create mode 100644 bash-5.1/builtins_org/reserved.def create mode 100644 bash-5.1/builtins_org/return.def create mode 100644 bash-5.1/builtins_org/set.def create mode 100644 bash-5.1/builtins_org/setattr.def create mode 100644 bash-5.1/builtins_org/shift.def create mode 100644 bash-5.1/builtins_org/shopt.def create mode 100644 bash-5.1/builtins_org/source.def create mode 100644 bash-5.1/builtins_org/suspend.def create mode 100644 bash-5.1/builtins_org/test.def create mode 100644 bash-5.1/builtins_org/times.def create mode 100644 bash-5.1/builtins_org/trap.def create mode 100644 bash-5.1/builtins_org/type.def create mode 100644 bash-5.1/builtins_org/ulimit.def create mode 100644 bash-5.1/builtins_org/umask.def create mode 100644 bash-5.1/builtins_org/wait.def create mode 100644 bash-5.1/command.h create mode 100644 bash-5.1/config-bot.h create mode 100644 bash-5.1/config-top.h create mode 100644 bash-5.1/config.h.in create mode 100755 bash-5.1/configure create mode 100644 bash-5.1/configure.ac create mode 100644 bash-5.1/conftypes.h create mode 100644 bash-5.1/copy_cmd.c create mode 100644 bash-5.1/cross-build/cygwin32.cache create mode 100644 bash-5.1/cross-build/opennt.cache create mode 100644 bash-5.1/cross-build/qnx.cache create mode 100644 bash-5.1/cross-build/x86-beos.cache create mode 100644 bash-5.1/dispose_cmd.c create mode 100644 bash-5.1/dispose_cmd.h create mode 100644 bash-5.1/doc/FAQ create mode 100644 bash-5.1/doc/INTRO create mode 100644 bash-5.1/doc/Makefile.in create mode 100644 bash-5.1/doc/README create mode 100644 bash-5.1/doc/aosa-bash-full.pdf create mode 100644 bash-5.1/doc/aosa-bash.pdf create mode 100644 bash-5.1/doc/article.ms create mode 100644 bash-5.1/doc/article.pdf create mode 100644 bash-5.1/doc/article.ps create mode 100644 bash-5.1/doc/article.txt create mode 100644 bash-5.1/doc/bash.0 create mode 100644 bash-5.1/doc/bash.1 create mode 100644 bash-5.1/doc/bash.html create mode 100644 bash-5.1/doc/bash.info create mode 100644 bash-5.1/doc/bash.pdf create mode 100644 bash-5.1/doc/bash.ps create mode 100644 bash-5.1/doc/bashbug.0 create mode 100644 bash-5.1/doc/bashbug.1 create mode 100644 bash-5.1/doc/bashbug.ps create mode 100644 bash-5.1/doc/bashref.dvi create mode 100644 bash-5.1/doc/bashref.html create mode 100644 bash-5.1/doc/bashref.info create mode 100644 bash-5.1/doc/bashref.pdf create mode 100644 bash-5.1/doc/bashref.ps create mode 100644 bash-5.1/doc/bashref.texi create mode 100644 bash-5.1/doc/builtins.0 create mode 100644 bash-5.1/doc/builtins.1 create mode 100644 bash-5.1/doc/builtins.ps create mode 100644 bash-5.1/doc/fdl.texi create mode 100644 bash-5.1/doc/fdl.txt create mode 100755 bash-5.1/doc/htmlpost.sh create mode 100755 bash-5.1/doc/infopost.sh create mode 100644 bash-5.1/doc/rbash.0 create mode 100644 bash-5.1/doc/rbash.1 create mode 100644 bash-5.1/doc/rbash.ps create mode 100644 bash-5.1/doc/rose94.pdf create mode 100644 bash-5.1/doc/rose94.ps create mode 100644 bash-5.1/doc/texinfo.tex create mode 100644 bash-5.1/doc/version.texi create mode 100644 bash-5.1/error.c create mode 100644 bash-5.1/error.h create mode 100644 bash-5.1/eval.c create mode 100644 bash-5.1/examples/INDEX.html create mode 100644 bash-5.1/examples/INDEX.txt create mode 100644 bash-5.1/examples/bash-completion/README create mode 100644 bash-5.1/examples/bash-completion/bash-completion-2.5.tar.xz create mode 100644 bash-5.1/examples/complete/bash_completion create mode 100644 bash-5.1/examples/complete/bashcc-1.0.1.tar.gz create mode 100644 bash-5.1/examples/complete/cdfunc create mode 100644 bash-5.1/examples/complete/complete-examples create mode 100644 bash-5.1/examples/functions/array-stuff create mode 100644 bash-5.1/examples/functions/array-to-string create mode 100644 bash-5.1/examples/functions/arrayops.bash create mode 100644 bash-5.1/examples/functions/autoload create mode 100644 bash-5.1/examples/functions/autoload.v2 create mode 100644 bash-5.1/examples/functions/autoload.v3 create mode 100644 bash-5.1/examples/functions/autoload.v4 create mode 100644 bash-5.1/examples/functions/autoload.v4.t create mode 100644 bash-5.1/examples/functions/basename create mode 100644 bash-5.1/examples/functions/csh-compat create mode 100644 bash-5.1/examples/functions/dirname create mode 100644 bash-5.1/examples/functions/dirstack create mode 100644 bash-5.1/examples/functions/exitstat create mode 100644 bash-5.1/examples/functions/external create mode 100644 bash-5.1/examples/functions/fact create mode 100644 bash-5.1/examples/functions/fstty create mode 100644 bash-5.1/examples/functions/func create mode 100644 bash-5.1/examples/functions/inetaddr create mode 100644 bash-5.1/examples/functions/inpath create mode 100644 bash-5.1/examples/functions/isnum2 create mode 100644 bash-5.1/examples/functions/isvalidip create mode 100644 bash-5.1/examples/functions/ksh-cd create mode 100644 bash-5.1/examples/functions/ksh-compat-test create mode 100644 bash-5.1/examples/functions/kshenv create mode 100644 bash-5.1/examples/functions/login create mode 100644 bash-5.1/examples/functions/notify.bash create mode 100644 bash-5.1/examples/functions/seq create mode 100644 bash-5.1/examples/functions/seq2 create mode 100644 bash-5.1/examples/functions/shcat create mode 100644 bash-5.1/examples/functions/shcat2 create mode 100644 bash-5.1/examples/functions/sort-pos-params create mode 100644 bash-5.1/examples/functions/substr create mode 100644 bash-5.1/examples/functions/substr2 create mode 100644 bash-5.1/examples/functions/whatis create mode 100644 bash-5.1/examples/functions/whence create mode 100644 bash-5.1/examples/functions/which create mode 100644 bash-5.1/examples/loadables/Makefile.in create mode 100644 bash-5.1/examples/loadables/Makefile.inc.in create mode 100644 bash-5.1/examples/loadables/README create mode 100644 bash-5.1/examples/loadables/accept.c create mode 100644 bash-5.1/examples/loadables/asort.c create mode 100644 bash-5.1/examples/loadables/basename.c create mode 100644 bash-5.1/examples/loadables/cat.c create mode 100644 bash-5.1/examples/loadables/csv.c create mode 100644 bash-5.1/examples/loadables/cut.c create mode 100644 bash-5.1/examples/loadables/dirname.c create mode 100644 bash-5.1/examples/loadables/fdflags.c create mode 100644 bash-5.1/examples/loadables/finfo.c create mode 100644 bash-5.1/examples/loadables/head.c create mode 100644 bash-5.1/examples/loadables/hello.c create mode 100644 bash-5.1/examples/loadables/id.c create mode 100644 bash-5.1/examples/loadables/ln.c create mode 100644 bash-5.1/examples/loadables/loadables.h create mode 100644 bash-5.1/examples/loadables/logname.c create mode 100644 bash-5.1/examples/loadables/mkdir.c create mode 100644 bash-5.1/examples/loadables/mkfifo.c create mode 100644 bash-5.1/examples/loadables/mktemp.c create mode 100644 bash-5.1/examples/loadables/mypid.c create mode 100644 bash-5.1/examples/loadables/necho.c create mode 100644 bash-5.1/examples/loadables/pathchk.c create mode 100644 bash-5.1/examples/loadables/perl/Makefile.in create mode 100644 bash-5.1/examples/loadables/perl/README create mode 100644 bash-5.1/examples/loadables/perl/bperl.c create mode 100644 bash-5.1/examples/loadables/perl/iperl.c create mode 100644 bash-5.1/examples/loadables/print.c create mode 100644 bash-5.1/examples/loadables/printenv.c create mode 100644 bash-5.1/examples/loadables/push.c create mode 100644 bash-5.1/examples/loadables/realpath.c create mode 100644 bash-5.1/examples/loadables/rm.c create mode 100644 bash-5.1/examples/loadables/rmdir.c create mode 100644 bash-5.1/examples/loadables/seq.c create mode 100644 bash-5.1/examples/loadables/setpgid.c create mode 100644 bash-5.1/examples/loadables/sleep.c create mode 100644 bash-5.1/examples/loadables/stat.c create mode 100644 bash-5.1/examples/loadables/strftime.c create mode 100644 bash-5.1/examples/loadables/sync.c create mode 100644 bash-5.1/examples/loadables/tee.c create mode 100644 bash-5.1/examples/loadables/template.c create mode 100644 bash-5.1/examples/loadables/truefalse.c create mode 100644 bash-5.1/examples/loadables/tty.c create mode 100644 bash-5.1/examples/loadables/uname.c create mode 100644 bash-5.1/examples/loadables/unlink.c create mode 100644 bash-5.1/examples/loadables/whoami.c create mode 100755 bash-5.1/examples/misc/aliasconv.bash create mode 100755 bash-5.1/examples/misc/aliasconv.sh create mode 100755 bash-5.1/examples/misc/cshtobash create mode 100644 bash-5.1/examples/scripts/cat.sh create mode 100644 bash-5.1/examples/scripts/center create mode 100755 bash-5.1/examples/scripts/inpath create mode 100755 bash-5.1/examples/scripts/shprompt create mode 100644 bash-5.1/examples/scripts/spin.bash create mode 100755 bash-5.1/examples/scripts/xterm_title create mode 100755 bash-5.1/examples/scripts/zprintf create mode 100644 bash-5.1/examples/startup-files/Bash_aliases create mode 100644 bash-5.1/examples/startup-files/Bash_profile create mode 100644 bash-5.1/examples/startup-files/Bashrc.bfox create mode 100644 bash-5.1/examples/startup-files/README create mode 100644 bash-5.1/examples/startup-files/bash-profile create mode 100644 bash-5.1/examples/startup-files/bashrc create mode 100644 bash-5.1/execute_cmd.c create mode 100644 bash-5.1/execute_cmd.h create mode 100644 bash-5.1/expr.c create mode 100644 bash-5.1/externs.h create mode 100644 bash-5.1/findcmd.c create mode 100644 bash-5.1/findcmd.h create mode 100644 bash-5.1/flags.c create mode 100644 bash-5.1/flags.h create mode 100644 bash-5.1/general.c create mode 100644 bash-5.1/general.h create mode 100644 bash-5.1/hashcmd.c create mode 100644 bash-5.1/hashcmd.h create mode 100644 bash-5.1/hashlib.c create mode 100644 bash-5.1/hashlib.h create mode 100644 bash-5.1/include/ansi_stdlib.h create mode 100644 bash-5.1/include/chartypes.h create mode 100644 bash-5.1/include/filecntl.h create mode 100644 bash-5.1/include/gettext.h create mode 100644 bash-5.1/include/maxpath.h create mode 100644 bash-5.1/include/memalloc.h create mode 100644 bash-5.1/include/ocache.h create mode 100644 bash-5.1/include/posixdir.h create mode 100644 bash-5.1/include/posixjmp.h create mode 100644 bash-5.1/include/posixselect.h create mode 100644 bash-5.1/include/posixstat.h create mode 100644 bash-5.1/include/posixtime.h create mode 100644 bash-5.1/include/posixwait.h create mode 100644 bash-5.1/include/shmbchar.h create mode 100644 bash-5.1/include/shmbutil.h create mode 100644 bash-5.1/include/shtty.h create mode 100644 bash-5.1/include/stat-time.h create mode 100644 bash-5.1/include/stdc.h create mode 100644 bash-5.1/include/systimes.h create mode 100644 bash-5.1/include/typemax.h create mode 100644 bash-5.1/include/unionwait.h create mode 100644 bash-5.1/input.c create mode 100644 bash-5.1/input.h create mode 100644 bash-5.1/jobs.c create mode 100644 bash-5.1/jobs.h create mode 100644 bash-5.1/lib/glob/Makefile.in create mode 100644 bash-5.1/lib/glob/collsyms.h create mode 100644 bash-5.1/lib/glob/doc/Makefile create mode 100644 bash-5.1/lib/glob/doc/glob.texi create mode 100644 bash-5.1/lib/glob/glob.c create mode 100644 bash-5.1/lib/glob/glob.h create mode 100644 bash-5.1/lib/glob/glob_loop.c create mode 100644 bash-5.1/lib/glob/gm_loop.c create mode 100644 bash-5.1/lib/glob/gmisc.c create mode 100644 bash-5.1/lib/glob/ndir.h create mode 100644 bash-5.1/lib/glob/sm_loop.c create mode 100644 bash-5.1/lib/glob/smatch.c create mode 100644 bash-5.1/lib/glob/strmatch.c create mode 100644 bash-5.1/lib/glob/strmatch.h create mode 100644 bash-5.1/lib/glob/xmbsrtowcs.c create mode 100644 bash-5.1/lib/intl/ChangeLog create mode 100644 bash-5.1/lib/intl/Makefile.in create mode 100644 bash-5.1/lib/intl/VERSION create mode 100644 bash-5.1/lib/intl/bindtextdom.c create mode 100644 bash-5.1/lib/intl/config.charset create mode 100644 bash-5.1/lib/intl/dcgettext.c create mode 100644 bash-5.1/lib/intl/dcigettext.c create mode 100644 bash-5.1/lib/intl/dcngettext.c create mode 100644 bash-5.1/lib/intl/dgettext.c create mode 100644 bash-5.1/lib/intl/dngettext.c create mode 100644 bash-5.1/lib/intl/eval-plural.h create mode 100644 bash-5.1/lib/intl/explodename.c create mode 100644 bash-5.1/lib/intl/finddomain.c create mode 100644 bash-5.1/lib/intl/gettext.c create mode 100644 bash-5.1/lib/intl/gettextP.h create mode 100644 bash-5.1/lib/intl/gmo.h create mode 100644 bash-5.1/lib/intl/hash-string.h create mode 100644 bash-5.1/lib/intl/intl-compat.c create mode 100644 bash-5.1/lib/intl/l10nflist.c create mode 100644 bash-5.1/lib/intl/libgnuintl.h.in create mode 100644 bash-5.1/lib/intl/loadinfo.h create mode 100644 bash-5.1/lib/intl/loadmsgcat.c create mode 100644 bash-5.1/lib/intl/localcharset.c create mode 100644 bash-5.1/lib/intl/localcharset.h create mode 100644 bash-5.1/lib/intl/locale.alias create mode 100644 bash-5.1/lib/intl/localealias.c create mode 100644 bash-5.1/lib/intl/localename.c create mode 100644 bash-5.1/lib/intl/log.c create mode 100644 bash-5.1/lib/intl/ngettext.c create mode 100644 bash-5.1/lib/intl/os2compat.c create mode 100644 bash-5.1/lib/intl/os2compat.h create mode 100644 bash-5.1/lib/intl/osdep.c create mode 100644 bash-5.1/lib/intl/plural-exp.c create mode 100644 bash-5.1/lib/intl/plural-exp.h create mode 100644 bash-5.1/lib/intl/plural.c create mode 100644 bash-5.1/lib/intl/plural.y create mode 100755 bash-5.1/lib/intl/ref-add.sin create mode 100755 bash-5.1/lib/intl/ref-del.sin create mode 100644 bash-5.1/lib/intl/relocatable.c create mode 100644 bash-5.1/lib/intl/relocatable.h create mode 100644 bash-5.1/lib/intl/textdomain.c create mode 100644 bash-5.1/lib/malloc/Makefile.in create mode 100644 bash-5.1/lib/malloc/alloca.c create mode 100644 bash-5.1/lib/malloc/getpagesize.h create mode 100644 bash-5.1/lib/malloc/i386-alloca.s create mode 100644 bash-5.1/lib/malloc/imalloc.h create mode 100644 bash-5.1/lib/malloc/malloc.c create mode 100644 bash-5.1/lib/malloc/mstats.h create mode 100644 bash-5.1/lib/malloc/shmalloc.h create mode 100644 bash-5.1/lib/malloc/stats.c create mode 100644 bash-5.1/lib/malloc/stub.c create mode 100644 bash-5.1/lib/malloc/table.c create mode 100644 bash-5.1/lib/malloc/table.h create mode 100644 bash-5.1/lib/malloc/trace.c create mode 100644 bash-5.1/lib/malloc/watch.c create mode 100644 bash-5.1/lib/malloc/watch.h create mode 100644 bash-5.1/lib/malloc/x386-alloca.s create mode 100755 bash-5.1/lib/malloc/xleaktrace create mode 100644 bash-5.1/lib/malloc/xmalloc.c create mode 100644 bash-5.1/lib/readline/COPYING create mode 100644 bash-5.1/lib/readline/ChangeLog create mode 100644 bash-5.1/lib/readline/Makefile.in create mode 100644 bash-5.1/lib/readline/README create mode 100644 bash-5.1/lib/readline/STANDALONE create mode 100644 bash-5.1/lib/readline/ansi_stdlib.h create mode 100644 bash-5.1/lib/readline/bind.c create mode 100644 bash-5.1/lib/readline/callback.c create mode 100644 bash-5.1/lib/readline/chardefs.h create mode 100644 bash-5.1/lib/readline/colors.c create mode 100644 bash-5.1/lib/readline/colors.h create mode 100644 bash-5.1/lib/readline/compat.c create mode 100644 bash-5.1/lib/readline/complete.c create mode 100644 bash-5.1/lib/readline/display.c create mode 100644 bash-5.1/lib/readline/doc/Makefile create mode 100644 bash-5.1/lib/readline/doc/fdl.texi create mode 100644 bash-5.1/lib/readline/doc/history.texi create mode 100644 bash-5.1/lib/readline/doc/hstech.texi create mode 100644 bash-5.1/lib/readline/doc/hsuser.texi create mode 100644 bash-5.1/lib/readline/doc/rlman.texi create mode 100644 bash-5.1/lib/readline/doc/rltech.texi create mode 100644 bash-5.1/lib/readline/doc/rluser.texi create mode 100644 bash-5.1/lib/readline/doc/rluserman.texi create mode 100644 bash-5.1/lib/readline/doc/version.texi create mode 100644 bash-5.1/lib/readline/emacs_keymap.c create mode 100644 bash-5.1/lib/readline/examples/Inputrc create mode 100644 bash-5.1/lib/readline/examples/Makefile create mode 100644 bash-5.1/lib/readline/examples/excallback.c create mode 100644 bash-5.1/lib/readline/examples/fileman.c create mode 100644 bash-5.1/lib/readline/examples/histexamp.c create mode 100644 bash-5.1/lib/readline/examples/manexamp.c create mode 100644 bash-5.1/lib/readline/examples/rl-callbacktest.c create mode 100644 bash-5.1/lib/readline/examples/rl.c create mode 100644 bash-5.1/lib/readline/examples/rlcat.c create mode 100644 bash-5.1/lib/readline/examples/rltest.c create mode 100644 bash-5.1/lib/readline/funmap.c create mode 100644 bash-5.1/lib/readline/histexpand.c create mode 100644 bash-5.1/lib/readline/histfile.c create mode 100644 bash-5.1/lib/readline/histlib.h create mode 100644 bash-5.1/lib/readline/history.c create mode 100644 bash-5.1/lib/readline/history.h create mode 100644 bash-5.1/lib/readline/histsearch.c create mode 100644 bash-5.1/lib/readline/input.c create mode 100644 bash-5.1/lib/readline/isearch.c create mode 100644 bash-5.1/lib/readline/keymaps.c create mode 100644 bash-5.1/lib/readline/keymaps.h create mode 100644 bash-5.1/lib/readline/kill.c create mode 100644 bash-5.1/lib/readline/macro.c create mode 100644 bash-5.1/lib/readline/mbutil.c create mode 100644 bash-5.1/lib/readline/misc.c create mode 100644 bash-5.1/lib/readline/nls.c create mode 100644 bash-5.1/lib/readline/parens.c create mode 100644 bash-5.1/lib/readline/parse-colors.c create mode 100644 bash-5.1/lib/readline/parse-colors.h create mode 100644 bash-5.1/lib/readline/posixdir.h create mode 100644 bash-5.1/lib/readline/posixjmp.h create mode 100644 bash-5.1/lib/readline/posixselect.h create mode 100644 bash-5.1/lib/readline/posixstat.h create mode 100644 bash-5.1/lib/readline/readline.c create mode 100644 bash-5.1/lib/readline/readline.h create mode 100644 bash-5.1/lib/readline/rlconf.h create mode 100644 bash-5.1/lib/readline/rldefs.h create mode 100644 bash-5.1/lib/readline/rlmbutil.h create mode 100644 bash-5.1/lib/readline/rlprivate.h create mode 100644 bash-5.1/lib/readline/rlshell.h create mode 100644 bash-5.1/lib/readline/rlstdc.h create mode 100644 bash-5.1/lib/readline/rltty.c create mode 100644 bash-5.1/lib/readline/rltty.h create mode 100644 bash-5.1/lib/readline/rltypedefs.h create mode 100644 bash-5.1/lib/readline/rlwinsize.h create mode 100644 bash-5.1/lib/readline/savestring.c create mode 100644 bash-5.1/lib/readline/search.c create mode 100644 bash-5.1/lib/readline/shell.c create mode 100644 bash-5.1/lib/readline/signals.c create mode 100644 bash-5.1/lib/readline/tcap.h create mode 100644 bash-5.1/lib/readline/terminal.c create mode 100644 bash-5.1/lib/readline/text.c create mode 100644 bash-5.1/lib/readline/tilde.c create mode 100644 bash-5.1/lib/readline/tilde.h create mode 100644 bash-5.1/lib/readline/undo.c create mode 100644 bash-5.1/lib/readline/util.c create mode 100644 bash-5.1/lib/readline/vi_keymap.c create mode 100644 bash-5.1/lib/readline/vi_mode.c create mode 100644 bash-5.1/lib/readline/xfree.c create mode 100644 bash-5.1/lib/readline/xmalloc.c create mode 100644 bash-5.1/lib/readline/xmalloc.h create mode 100644 bash-5.1/lib/sh/Makefile.in create mode 100644 bash-5.1/lib/sh/casemod.c create mode 100644 bash-5.1/lib/sh/clktck.c create mode 100644 bash-5.1/lib/sh/clock.c create mode 100644 bash-5.1/lib/sh/dprintf.c create mode 100644 bash-5.1/lib/sh/eaccess.c create mode 100644 bash-5.1/lib/sh/fmtullong.c create mode 100644 bash-5.1/lib/sh/fmtulong.c create mode 100644 bash-5.1/lib/sh/fmtumax.c create mode 100644 bash-5.1/lib/sh/fnxform.c create mode 100644 bash-5.1/lib/sh/fpurge.c create mode 100644 bash-5.1/lib/sh/getcwd.c create mode 100644 bash-5.1/lib/sh/getenv.c create mode 100644 bash-5.1/lib/sh/gettimeofday.c create mode 100644 bash-5.1/lib/sh/inet_aton.c create mode 100644 bash-5.1/lib/sh/input_avail.c create mode 100644 bash-5.1/lib/sh/itos.c create mode 100644 bash-5.1/lib/sh/mailstat.c create mode 100644 bash-5.1/lib/sh/makepath.c create mode 100644 bash-5.1/lib/sh/mbscasecmp.c create mode 100644 bash-5.1/lib/sh/mbschr.c create mode 100644 bash-5.1/lib/sh/mbscmp.c create mode 100644 bash-5.1/lib/sh/memset.c create mode 100644 bash-5.1/lib/sh/mktime.c create mode 100644 bash-5.1/lib/sh/netconn.c create mode 100644 bash-5.1/lib/sh/netopen.c create mode 100644 bash-5.1/lib/sh/oslib.c create mode 100644 bash-5.1/lib/sh/pathcanon.c create mode 100644 bash-5.1/lib/sh/pathphys.c create mode 100644 bash-5.1/lib/sh/random.c create mode 100644 bash-5.1/lib/sh/rename.c create mode 100644 bash-5.1/lib/sh/setlinebuf.c create mode 100644 bash-5.1/lib/sh/shmatch.c create mode 100644 bash-5.1/lib/sh/shmbchar.c create mode 100644 bash-5.1/lib/sh/shquote.c create mode 100644 bash-5.1/lib/sh/shtty.c create mode 100644 bash-5.1/lib/sh/snprintf.c create mode 100644 bash-5.1/lib/sh/spell.c create mode 100644 bash-5.1/lib/sh/strcasecmp.c create mode 100644 bash-5.1/lib/sh/strcasestr.c create mode 100644 bash-5.1/lib/sh/strchrnul.c create mode 100644 bash-5.1/lib/sh/strdup.c create mode 100644 bash-5.1/lib/sh/strerror.c create mode 100644 bash-5.1/lib/sh/strftime.c create mode 100644 bash-5.1/lib/sh/stringlist.c create mode 100644 bash-5.1/lib/sh/stringvec.c create mode 100644 bash-5.1/lib/sh/strnlen.c create mode 100644 bash-5.1/lib/sh/strpbrk.c create mode 100644 bash-5.1/lib/sh/strstr.c create mode 100644 bash-5.1/lib/sh/strtod.c create mode 100644 bash-5.1/lib/sh/strtoimax.c create mode 100644 bash-5.1/lib/sh/strtol.c create mode 100644 bash-5.1/lib/sh/strtoll.c create mode 100644 bash-5.1/lib/sh/strtoul.c create mode 100644 bash-5.1/lib/sh/strtoull.c create mode 100644 bash-5.1/lib/sh/strtoumax.c create mode 100644 bash-5.1/lib/sh/strtrans.c create mode 100644 bash-5.1/lib/sh/times.c create mode 100644 bash-5.1/lib/sh/timeval.c create mode 100644 bash-5.1/lib/sh/tmpfile.c create mode 100644 bash-5.1/lib/sh/uconvert.c create mode 100644 bash-5.1/lib/sh/ufuncs.c create mode 100644 bash-5.1/lib/sh/unicode.c create mode 100644 bash-5.1/lib/sh/utf8.c create mode 100644 bash-5.1/lib/sh/vprint.c create mode 100644 bash-5.1/lib/sh/wcsdup.c create mode 100644 bash-5.1/lib/sh/wcsnwidth.c create mode 100644 bash-5.1/lib/sh/wcswidth.c create mode 100644 bash-5.1/lib/sh/winsize.c create mode 100644 bash-5.1/lib/sh/zcatfd.c create mode 100644 bash-5.1/lib/sh/zgetline.c create mode 100644 bash-5.1/lib/sh/zmapfd.c create mode 100644 bash-5.1/lib/sh/zread.c create mode 100644 bash-5.1/lib/sh/zwrite.c create mode 100644 bash-5.1/lib/termcap/Makefile.in create mode 100644 bash-5.1/lib/termcap/ltcap.h create mode 100644 bash-5.1/lib/termcap/termcap.c create mode 100644 bash-5.1/lib/termcap/termcap.h create mode 100644 bash-5.1/lib/termcap/tparam.c create mode 100644 bash-5.1/lib/termcap/version.c create mode 100644 bash-5.1/lib/tilde/Makefile.in create mode 100644 bash-5.1/lib/tilde/README create mode 100644 bash-5.1/lib/tilde/shell.c create mode 100644 bash-5.1/lib/tilde/tilde.c create mode 100644 bash-5.1/lib/tilde/tilde.h create mode 100644 bash-5.1/list.c create mode 100644 bash-5.1/locale.c create mode 100644 bash-5.1/m4/codeset.m4 create mode 100644 bash-5.1/m4/extern-inline.m4 create mode 100644 bash-5.1/m4/fcntl-o.m4 create mode 100644 bash-5.1/m4/gettext.m4 create mode 100644 bash-5.1/m4/glibc2.m4 create mode 100644 bash-5.1/m4/glibc21.m4 create mode 100644 bash-5.1/m4/host-cpu-c-abi.m4 create mode 100644 bash-5.1/m4/iconv.m4 create mode 100644 bash-5.1/m4/intdiv0.m4 create mode 100644 bash-5.1/m4/intl-thread-locale.m4 create mode 100644 bash-5.1/m4/intl.m4 create mode 100644 bash-5.1/m4/intlmacosx.m4 create mode 100644 bash-5.1/m4/intmax.m4 create mode 100644 bash-5.1/m4/inttypes-pri.m4 create mode 100644 bash-5.1/m4/inttypes.m4 create mode 100644 bash-5.1/m4/inttypes_h.m4 create mode 100644 bash-5.1/m4/lcmessage.m4 create mode 100644 bash-5.1/m4/lib-ld.m4 create mode 100644 bash-5.1/m4/lib-link.m4 create mode 100644 bash-5.1/m4/lib-prefix.m4 create mode 100644 bash-5.1/m4/lock.m4 create mode 100644 bash-5.1/m4/nls.m4 create mode 100644 bash-5.1/m4/po.m4 create mode 100644 bash-5.1/m4/printf-posix.m4 create mode 100644 bash-5.1/m4/progtest.m4 create mode 100644 bash-5.1/m4/pthread_rwlock_rdlock.m4 create mode 100644 bash-5.1/m4/size_max.m4 create mode 100644 bash-5.1/m4/stat-time.m4 create mode 100644 bash-5.1/m4/stdint_h.m4 create mode 100644 bash-5.1/m4/threadlib.m4 create mode 100644 bash-5.1/m4/timespec.m4 create mode 100644 bash-5.1/m4/uintmax_t.m4 create mode 100644 bash-5.1/m4/ulonglong.m4 create mode 100644 bash-5.1/m4/visibility.m4 create mode 100644 bash-5.1/m4/wchar_t.m4 create mode 100644 bash-5.1/m4/wint_t.m4 create mode 100644 bash-5.1/m4/xsize.m4 create mode 100644 bash-5.1/mailcheck.c create mode 100644 bash-5.1/mailcheck.h create mode 100644 bash-5.1/make_cmd.c create mode 100644 bash-5.1/make_cmd.h create mode 100644 bash-5.1/mksyntax.c create mode 100644 bash-5.1/nojobs.c create mode 100644 bash-5.1/parse.y create mode 100644 bash-5.1/parser-built create mode 100644 bash-5.1/parser.h create mode 100644 bash-5.1/patchlevel.h create mode 100644 bash-5.1/pathexp.c create mode 100644 bash-5.1/pathexp.h create mode 100644 bash-5.1/pathnames.h.in create mode 100644 bash-5.1/pcomplete.c create mode 100644 bash-5.1/pcomplete.h create mode 100644 bash-5.1/pcomplib.c create mode 100644 bash-5.1/po/LINGUAS create mode 100644 bash-5.1/po/Makefile.in.in create mode 100644 bash-5.1/po/Makevars create mode 100644 bash-5.1/po/POTFILES.in create mode 100644 bash-5.1/po/README create mode 100644 bash-5.1/po/Rules-builtins create mode 100644 bash-5.1/po/Rules-quot create mode 100644 bash-5.1/po/af.gmo create mode 100644 bash-5.1/po/af.po create mode 100644 bash-5.1/po/bash.pot create mode 100644 bash-5.1/po/bg.gmo create mode 100644 bash-5.1/po/bg.po create mode 100644 bash-5.1/po/boldquot.sed create mode 100644 bash-5.1/po/ca.gmo create mode 100644 bash-5.1/po/ca.po create mode 100644 bash-5.1/po/cs.gmo create mode 100644 bash-5.1/po/cs.po create mode 100644 bash-5.1/po/da.gmo create mode 100644 bash-5.1/po/da.po create mode 100644 bash-5.1/po/de.gmo create mode 100644 bash-5.1/po/de.po create mode 100644 bash-5.1/po/el.gmo create mode 100644 bash-5.1/po/el.po create mode 100644 bash-5.1/po/en@boldquot.gmo create mode 100644 bash-5.1/po/en@boldquot.header create mode 100644 bash-5.1/po/en@boldquot.po create mode 100644 bash-5.1/po/en@quot.gmo create mode 100644 bash-5.1/po/en@quot.header create mode 100644 bash-5.1/po/en@quot.po create mode 100644 bash-5.1/po/eo.gmo create mode 100644 bash-5.1/po/eo.po create mode 100644 bash-5.1/po/es.gmo create mode 100644 bash-5.1/po/es.po create mode 100644 bash-5.1/po/et.gmo create mode 100644 bash-5.1/po/et.po create mode 100644 bash-5.1/po/fi.gmo create mode 100644 bash-5.1/po/fi.po create mode 100644 bash-5.1/po/fr.gmo create mode 100644 bash-5.1/po/fr.po create mode 100644 bash-5.1/po/ga.gmo create mode 100644 bash-5.1/po/ga.po create mode 100644 bash-5.1/po/gl.gmo create mode 100644 bash-5.1/po/gl.po create mode 100644 bash-5.1/po/hr.gmo create mode 100644 bash-5.1/po/hr.po create mode 100644 bash-5.1/po/hu.gmo create mode 100644 bash-5.1/po/hu.po create mode 100644 bash-5.1/po/id.gmo create mode 100644 bash-5.1/po/id.po create mode 100644 bash-5.1/po/insert-header.sin create mode 100644 bash-5.1/po/it.gmo create mode 100644 bash-5.1/po/it.po create mode 100644 bash-5.1/po/ja.gmo create mode 100644 bash-5.1/po/ja.po create mode 100644 bash-5.1/po/ko.gmo create mode 100644 bash-5.1/po/ko.po create mode 100644 bash-5.1/po/lt.gmo create mode 100644 bash-5.1/po/lt.po create mode 100644 bash-5.1/po/nb.gmo create mode 100644 bash-5.1/po/nb.po create mode 100644 bash-5.1/po/nl.gmo create mode 100644 bash-5.1/po/nl.po create mode 100644 bash-5.1/po/pl.gmo create mode 100644 bash-5.1/po/pl.po create mode 100644 bash-5.1/po/pt.gmo create mode 100644 bash-5.1/po/pt.po create mode 100644 bash-5.1/po/pt_BR.gmo create mode 100644 bash-5.1/po/pt_BR.po create mode 100644 bash-5.1/po/quot.sed create mode 100644 bash-5.1/po/remove-potcdate.sin create mode 100644 bash-5.1/po/ro.gmo create mode 100644 bash-5.1/po/ro.po create mode 100644 bash-5.1/po/ru.gmo create mode 100644 bash-5.1/po/ru.po create mode 100644 bash-5.1/po/sk.gmo create mode 100644 bash-5.1/po/sk.po create mode 100644 bash-5.1/po/sl.gmo create mode 100644 bash-5.1/po/sl.po create mode 100644 bash-5.1/po/sr.gmo create mode 100644 bash-5.1/po/sr.po create mode 100644 bash-5.1/po/sv.gmo create mode 100644 bash-5.1/po/sv.po create mode 100644 bash-5.1/po/tr.gmo create mode 100644 bash-5.1/po/tr.po create mode 100644 bash-5.1/po/uk.gmo create mode 100644 bash-5.1/po/uk.po create mode 100644 bash-5.1/po/vi.gmo create mode 100644 bash-5.1/po/vi.po create mode 100644 bash-5.1/po/zh_CN.gmo create mode 100644 bash-5.1/po/zh_CN.po create mode 100644 bash-5.1/po/zh_TW.gmo create mode 100644 bash-5.1/po/zh_TW.po create mode 100644 bash-5.1/print_cmd.c create mode 100644 bash-5.1/quit.h create mode 100644 bash-5.1/redir.c create mode 100644 bash-5.1/redir.h create mode 100644 bash-5.1/shell.c create mode 100644 bash-5.1/shell.h create mode 100644 bash-5.1/sig.c create mode 100644 bash-5.1/sig.h create mode 100644 bash-5.1/siglist.c create mode 100644 bash-5.1/siglist.h create mode 100644 bash-5.1/stringlib.c create mode 100644 bash-5.1/subst.c create mode 100644 bash-5.1/subst.h create mode 100644 bash-5.1/support/Makefile.in create mode 100644 bash-5.1/support/SYMLINKS create mode 100644 bash-5.1/support/bash.pc.in create mode 100644 bash-5.1/support/bash.xbm create mode 100644 bash-5.1/support/bashbug.sh create mode 100644 bash-5.1/support/bashbug.sh.in create mode 100644 bash-5.1/support/bashversion.c create mode 100755 bash-5.1/support/checkbashisms create mode 100755 bash-5.1/support/config.guess create mode 100755 bash-5.1/support/config.rpath create mode 100755 bash-5.1/support/config.sub create mode 100755 bash-5.1/support/fixlinks create mode 100755 bash-5.1/support/install.sh create mode 100644 bash-5.1/support/man2html.c create mode 100755 bash-5.1/support/missing create mode 100755 bash-5.1/support/mkclone create mode 100755 bash-5.1/support/mkconffiles create mode 100755 bash-5.1/support/mkdirs create mode 100755 bash-5.1/support/mkinstalldirs create mode 100644 bash-5.1/support/mksignames.c create mode 100755 bash-5.1/support/mkversion.sh create mode 100644 bash-5.1/support/printenv.c create mode 100755 bash-5.1/support/printenv.sh create mode 100644 bash-5.1/support/recho.c create mode 100755 bash-5.1/support/rlvers.sh create mode 100755 bash-5.1/support/shobj-conf create mode 100644 bash-5.1/support/signames.c create mode 100755 bash-5.1/support/texi2dvi create mode 100755 bash-5.1/support/texi2html create mode 100644 bash-5.1/support/xcase.c create mode 100755 bash-5.1/support/xenix-link.sh create mode 100644 bash-5.1/support/zecho.c create mode 100644 bash-5.1/syntax.h create mode 100644 bash-5.1/tags create mode 100644 bash-5.1/test.c create mode 100644 bash-5.1/test.h create mode 100644 bash-5.1/tests/COPYRIGHT create mode 100644 bash-5.1/tests/README create mode 100644 bash-5.1/tests/alias.right create mode 100644 bash-5.1/tests/alias.tests create mode 100644 bash-5.1/tests/alias1.sub create mode 100644 bash-5.1/tests/alias2.sub create mode 100644 bash-5.1/tests/alias3.sub create mode 100644 bash-5.1/tests/alias4.sub create mode 100644 bash-5.1/tests/alias5.sub create mode 100644 bash-5.1/tests/appendop.right create mode 100644 bash-5.1/tests/appendop.tests create mode 100644 bash-5.1/tests/appendop1.sub create mode 100644 bash-5.1/tests/appendop2.sub create mode 100644 bash-5.1/tests/arith-for.right create mode 100644 bash-5.1/tests/arith-for.tests create mode 100644 bash-5.1/tests/arith.right create mode 100644 bash-5.1/tests/arith.tests create mode 100644 bash-5.1/tests/arith1.sub create mode 100644 bash-5.1/tests/arith2.sub create mode 100644 bash-5.1/tests/arith3.sub create mode 100644 bash-5.1/tests/arith4.sub create mode 100644 bash-5.1/tests/arith5.sub create mode 100644 bash-5.1/tests/arith6.sub create mode 100644 bash-5.1/tests/arith7.sub create mode 100644 bash-5.1/tests/arith8.sub create mode 100755 bash-5.1/tests/array-at-star create mode 100644 bash-5.1/tests/array.right create mode 100644 bash-5.1/tests/array.tests create mode 100644 bash-5.1/tests/array1.sub create mode 100644 bash-5.1/tests/array10.sub create mode 100644 bash-5.1/tests/array11.sub create mode 100644 bash-5.1/tests/array12.sub create mode 100644 bash-5.1/tests/array13.sub create mode 100644 bash-5.1/tests/array14.sub create mode 100644 bash-5.1/tests/array15.sub create mode 100644 bash-5.1/tests/array16.sub create mode 100644 bash-5.1/tests/array17.sub create mode 100644 bash-5.1/tests/array18.sub create mode 100644 bash-5.1/tests/array19.sub create mode 100644 bash-5.1/tests/array2.right create mode 100644 bash-5.1/tests/array2.sub create mode 100644 bash-5.1/tests/array20.sub create mode 100644 bash-5.1/tests/array21.sub create mode 100644 bash-5.1/tests/array22.sub create mode 100644 bash-5.1/tests/array23.sub create mode 100644 bash-5.1/tests/array24.sub create mode 100644 bash-5.1/tests/array25.sub create mode 100644 bash-5.1/tests/array26.sub create mode 100644 bash-5.1/tests/array27.sub create mode 100644 bash-5.1/tests/array28.sub create mode 100644 bash-5.1/tests/array3.sub create mode 100644 bash-5.1/tests/array4.sub create mode 100644 bash-5.1/tests/array5.sub create mode 100644 bash-5.1/tests/array6.sub create mode 100644 bash-5.1/tests/array7.sub create mode 100644 bash-5.1/tests/array8.sub create mode 100644 bash-5.1/tests/array9.sub create mode 100644 bash-5.1/tests/assoc.right create mode 100644 bash-5.1/tests/assoc.tests create mode 100644 bash-5.1/tests/assoc1.sub create mode 100644 bash-5.1/tests/assoc10.sub create mode 100644 bash-5.1/tests/assoc11.sub create mode 100644 bash-5.1/tests/assoc2.sub create mode 100644 bash-5.1/tests/assoc3.sub create mode 100644 bash-5.1/tests/assoc4.sub create mode 100644 bash-5.1/tests/assoc5.sub create mode 100644 bash-5.1/tests/assoc6.sub create mode 100644 bash-5.1/tests/assoc7.sub create mode 100644 bash-5.1/tests/assoc8.sub create mode 100644 bash-5.1/tests/assoc9.sub create mode 100644 bash-5.1/tests/attr.right create mode 100644 bash-5.1/tests/attr.tests create mode 100644 bash-5.1/tests/attr1.sub create mode 100644 bash-5.1/tests/attr2.sub create mode 100644 bash-5.1/tests/braces.right create mode 100644 bash-5.1/tests/braces.tests create mode 100644 bash-5.1/tests/builtins.right create mode 100644 bash-5.1/tests/builtins.tests create mode 100644 bash-5.1/tests/builtins1.sub create mode 100644 bash-5.1/tests/builtins2.sub create mode 100644 bash-5.1/tests/builtins3.sub create mode 100644 bash-5.1/tests/builtins4.sub create mode 100644 bash-5.1/tests/builtins5.sub create mode 100644 bash-5.1/tests/builtins6.sub create mode 100644 bash-5.1/tests/builtins7.sub create mode 100644 bash-5.1/tests/case.right create mode 100644 bash-5.1/tests/case.tests create mode 100644 bash-5.1/tests/case1.sub create mode 100644 bash-5.1/tests/case2.sub create mode 100644 bash-5.1/tests/case3.sub create mode 100644 bash-5.1/tests/case4.sub create mode 100644 bash-5.1/tests/casemod.right create mode 100644 bash-5.1/tests/casemod.tests create mode 100644 bash-5.1/tests/complete.right create mode 100644 bash-5.1/tests/complete.tests create mode 100644 bash-5.1/tests/comsub-eof.right create mode 100644 bash-5.1/tests/comsub-eof.tests create mode 100644 bash-5.1/tests/comsub-eof0.sub create mode 100644 bash-5.1/tests/comsub-eof1.sub create mode 100644 bash-5.1/tests/comsub-eof2.sub create mode 100644 bash-5.1/tests/comsub-eof3.sub create mode 100644 bash-5.1/tests/comsub-eof4.sub create mode 100644 bash-5.1/tests/comsub-eof5.sub create mode 100644 bash-5.1/tests/comsub-eof6.sub create mode 100644 bash-5.1/tests/comsub-posix.right create mode 100644 bash-5.1/tests/comsub-posix.tests create mode 100644 bash-5.1/tests/comsub-posix1.sub create mode 100644 bash-5.1/tests/comsub-posix2.sub create mode 100644 bash-5.1/tests/comsub-posix3.sub create mode 100644 bash-5.1/tests/comsub.right create mode 100644 bash-5.1/tests/comsub.tests create mode 100644 bash-5.1/tests/comsub1.sub create mode 100644 bash-5.1/tests/comsub2.sub create mode 100644 bash-5.1/tests/comsub3.sub create mode 100644 bash-5.1/tests/comsub4.sub create mode 100644 bash-5.1/tests/cond-regexp1.sub create mode 100644 bash-5.1/tests/cond-regexp2.sub create mode 100644 bash-5.1/tests/cond-regexp3.sub create mode 100644 bash-5.1/tests/cond.right create mode 100644 bash-5.1/tests/cond.tests create mode 100644 bash-5.1/tests/coproc.right create mode 100644 bash-5.1/tests/coproc.tests create mode 100644 bash-5.1/tests/cprint.right create mode 100644 bash-5.1/tests/cprint.tests create mode 100644 bash-5.1/tests/dbg-support.right create mode 100644 bash-5.1/tests/dbg-support.sub create mode 100644 bash-5.1/tests/dbg-support.tests create mode 100644 bash-5.1/tests/dbg-support2.right create mode 100644 bash-5.1/tests/dbg-support2.tests create mode 100644 bash-5.1/tests/dbg-support3.sub create mode 100755 bash-5.1/tests/dollar-at-star create mode 100644 bash-5.1/tests/dollar-at-star1.sub create mode 100644 bash-5.1/tests/dollar-at-star2.sub create mode 100644 bash-5.1/tests/dollar-at-star3.sub create mode 100644 bash-5.1/tests/dollar-at-star4.sub create mode 100644 bash-5.1/tests/dollar-at-star5.sub create mode 100644 bash-5.1/tests/dollar-at-star6.sub create mode 100644 bash-5.1/tests/dollar-at-star7.sub create mode 100644 bash-5.1/tests/dollar-at-star8.sub create mode 100644 bash-5.1/tests/dollar-at-star9.sub create mode 100644 bash-5.1/tests/dollar-at1.sub create mode 100644 bash-5.1/tests/dollar-at2.sub create mode 100644 bash-5.1/tests/dollar-at3.sub create mode 100644 bash-5.1/tests/dollar-at4.sub create mode 100644 bash-5.1/tests/dollar-at5.sub create mode 100644 bash-5.1/tests/dollar-at6.sub create mode 100644 bash-5.1/tests/dollar-at7.sub create mode 100644 bash-5.1/tests/dollar-star1.sub create mode 100644 bash-5.1/tests/dollar-star10.sub create mode 100644 bash-5.1/tests/dollar-star2.sub create mode 100644 bash-5.1/tests/dollar-star3.sub create mode 100644 bash-5.1/tests/dollar-star4.sub create mode 100644 bash-5.1/tests/dollar-star5.sub create mode 100644 bash-5.1/tests/dollar-star6.sub create mode 100644 bash-5.1/tests/dollar-star7.sub create mode 100644 bash-5.1/tests/dollar-star8.sub create mode 100644 bash-5.1/tests/dollar-star9.sub create mode 100644 bash-5.1/tests/dollar.right create mode 100644 bash-5.1/tests/dstack.right create mode 100644 bash-5.1/tests/dstack.tests create mode 100644 bash-5.1/tests/dstack2.right create mode 100644 bash-5.1/tests/dstack2.tests create mode 100644 bash-5.1/tests/dynvar.right create mode 100644 bash-5.1/tests/dynvar.tests create mode 100644 bash-5.1/tests/errors.right create mode 100644 bash-5.1/tests/errors.tests create mode 100644 bash-5.1/tests/errors1.sub create mode 100644 bash-5.1/tests/errors2.sub create mode 100644 bash-5.1/tests/errors3.sub create mode 100644 bash-5.1/tests/errors4.sub create mode 100644 bash-5.1/tests/errors5.sub create mode 100644 bash-5.1/tests/errors6.sub create mode 100644 bash-5.1/tests/errors7.sub create mode 100644 bash-5.1/tests/errors8.sub create mode 100644 bash-5.1/tests/exec.right create mode 100755 bash-5.1/tests/exec1.sub create mode 100644 bash-5.1/tests/exec10.sub create mode 100644 bash-5.1/tests/exec11.sub create mode 100644 bash-5.1/tests/exec12.sub create mode 100644 bash-5.1/tests/exec13.sub create mode 100644 bash-5.1/tests/exec14.sub create mode 100644 bash-5.1/tests/exec2.sub create mode 100644 bash-5.1/tests/exec3.sub create mode 100644 bash-5.1/tests/exec4.sub create mode 100644 bash-5.1/tests/exec5.sub create mode 100644 bash-5.1/tests/exec6.sub create mode 100644 bash-5.1/tests/exec7.sub create mode 100644 bash-5.1/tests/exec8.sub create mode 100644 bash-5.1/tests/exec9.sub create mode 100644 bash-5.1/tests/execscript create mode 100644 bash-5.1/tests/exp.right create mode 100644 bash-5.1/tests/exp.tests create mode 100644 bash-5.1/tests/exp1.sub create mode 100644 bash-5.1/tests/exp10.sub create mode 100644 bash-5.1/tests/exp11.sub create mode 100644 bash-5.1/tests/exp12.sub create mode 100644 bash-5.1/tests/exp2.sub create mode 100644 bash-5.1/tests/exp3.sub create mode 100644 bash-5.1/tests/exp4.sub create mode 100644 bash-5.1/tests/exp5.sub create mode 100644 bash-5.1/tests/exp6.sub create mode 100644 bash-5.1/tests/exp7.sub create mode 100644 bash-5.1/tests/exp8.sub create mode 100644 bash-5.1/tests/exp9.sub create mode 100644 bash-5.1/tests/exportfunc.right create mode 100644 bash-5.1/tests/exportfunc.tests create mode 100644 bash-5.1/tests/exportfunc1.sub create mode 100644 bash-5.1/tests/exportfunc2.sub create mode 100644 bash-5.1/tests/exportfunc3.sub create mode 100644 bash-5.1/tests/extglob.right create mode 100644 bash-5.1/tests/extglob.tests create mode 100644 bash-5.1/tests/extglob1.sub create mode 100644 bash-5.1/tests/extglob1a.sub create mode 100644 bash-5.1/tests/extglob2.right create mode 100644 bash-5.1/tests/extglob2.sub create mode 100644 bash-5.1/tests/extglob2.tests create mode 100644 bash-5.1/tests/extglob3.right create mode 100644 bash-5.1/tests/extglob3.sub create mode 100644 bash-5.1/tests/extglob3.tests create mode 100644 bash-5.1/tests/extglob4.sub create mode 100644 bash-5.1/tests/extglob5.sub create mode 100644 bash-5.1/tests/func.right create mode 100644 bash-5.1/tests/func.tests create mode 100644 bash-5.1/tests/func1.sub create mode 100644 bash-5.1/tests/func2.sub create mode 100644 bash-5.1/tests/func3.sub create mode 100644 bash-5.1/tests/func4.sub create mode 100644 bash-5.1/tests/getopts.right create mode 100644 bash-5.1/tests/getopts.tests create mode 100644 bash-5.1/tests/getopts1.sub create mode 100644 bash-5.1/tests/getopts10.sub create mode 100644 bash-5.1/tests/getopts2.sub create mode 100644 bash-5.1/tests/getopts3.sub create mode 100644 bash-5.1/tests/getopts4.sub create mode 100644 bash-5.1/tests/getopts5.sub create mode 100644 bash-5.1/tests/getopts6.sub create mode 100644 bash-5.1/tests/getopts7.sub create mode 100644 bash-5.1/tests/getopts8.sub create mode 100644 bash-5.1/tests/getopts9.sub create mode 100644 bash-5.1/tests/glob.right create mode 100644 bash-5.1/tests/glob.tests create mode 100644 bash-5.1/tests/glob1.sub create mode 100644 bash-5.1/tests/glob2.sub create mode 100644 bash-5.1/tests/glob3.sub create mode 100644 bash-5.1/tests/glob4.sub create mode 100644 bash-5.1/tests/glob5.sub create mode 100644 bash-5.1/tests/glob6.sub create mode 100644 bash-5.1/tests/glob7.sub create mode 100644 bash-5.1/tests/glob8.sub create mode 100644 bash-5.1/tests/glob9.sub create mode 100644 bash-5.1/tests/globstar.right create mode 100644 bash-5.1/tests/globstar.tests create mode 100644 bash-5.1/tests/globstar1.sub create mode 100644 bash-5.1/tests/globstar2.sub create mode 100644 bash-5.1/tests/globstar3.sub create mode 100644 bash-5.1/tests/heredoc.right create mode 100644 bash-5.1/tests/heredoc.tests create mode 100644 bash-5.1/tests/heredoc1.sub create mode 100644 bash-5.1/tests/heredoc2.sub create mode 100644 bash-5.1/tests/heredoc3.sub create mode 100644 bash-5.1/tests/heredoc4.sub create mode 100644 bash-5.1/tests/heredoc5.sub create mode 100644 bash-5.1/tests/herestr.right create mode 100644 bash-5.1/tests/herestr.tests create mode 100644 bash-5.1/tests/herestr1.sub create mode 100644 bash-5.1/tests/histexp.right create mode 100644 bash-5.1/tests/histexp.tests create mode 100644 bash-5.1/tests/histexp1.sub create mode 100644 bash-5.1/tests/histexp2.sub create mode 100644 bash-5.1/tests/histexp3.sub create mode 100644 bash-5.1/tests/histexp4.sub create mode 100644 bash-5.1/tests/histexp5.sub create mode 100644 bash-5.1/tests/histexp6.sub create mode 100644 bash-5.1/tests/histexp7.sub create mode 100644 bash-5.1/tests/history.list create mode 100644 bash-5.1/tests/history.right create mode 100644 bash-5.1/tests/history.tests create mode 100644 bash-5.1/tests/history1.sub create mode 100644 bash-5.1/tests/history2.sub create mode 100644 bash-5.1/tests/history3.sub create mode 100644 bash-5.1/tests/history4.sub create mode 100644 bash-5.1/tests/history5.sub create mode 100644 bash-5.1/tests/ifs-posix.right create mode 100644 bash-5.1/tests/ifs-posix.tests create mode 100644 bash-5.1/tests/ifs.right create mode 100644 bash-5.1/tests/ifs.tests create mode 100644 bash-5.1/tests/ifs1.sub create mode 100644 bash-5.1/tests/input-line.sh create mode 100644 bash-5.1/tests/input-line.sub create mode 100644 bash-5.1/tests/input.right create mode 100644 bash-5.1/tests/intl.right create mode 100644 bash-5.1/tests/intl.tests create mode 100644 bash-5.1/tests/intl1.sub create mode 100644 bash-5.1/tests/intl2.sub create mode 100644 bash-5.1/tests/intl3.sub create mode 100644 bash-5.1/tests/invert.right create mode 100644 bash-5.1/tests/invert.tests create mode 100644 bash-5.1/tests/iquote.right create mode 100644 bash-5.1/tests/iquote.tests create mode 100644 bash-5.1/tests/iquote1.sub create mode 100644 bash-5.1/tests/jobs.right create mode 100644 bash-5.1/tests/jobs.tests create mode 100644 bash-5.1/tests/jobs1.sub create mode 100644 bash-5.1/tests/jobs2.sub create mode 100644 bash-5.1/tests/jobs3.sub create mode 100644 bash-5.1/tests/jobs4.sub create mode 100644 bash-5.1/tests/jobs5.sub create mode 100644 bash-5.1/tests/jobs6.sub create mode 100644 bash-5.1/tests/jobs7.sub create mode 100644 bash-5.1/tests/lastpipe.right create mode 100644 bash-5.1/tests/lastpipe.tests create mode 100644 bash-5.1/tests/lastpipe1.sub create mode 100644 bash-5.1/tests/lastpipe2.sub create mode 100644 bash-5.1/tests/mapfile.data create mode 100644 bash-5.1/tests/mapfile.right create mode 100644 bash-5.1/tests/mapfile.tests create mode 100644 bash-5.1/tests/mapfile1.sub create mode 100644 bash-5.1/tests/mapfile2.sub create mode 100644 bash-5.1/tests/misc/dev-tcp.tests create mode 100644 bash-5.1/tests/misc/perf-script create mode 100644 bash-5.1/tests/misc/perftest create mode 100644 bash-5.1/tests/misc/read-nchars.tests create mode 100644 bash-5.1/tests/misc/redir-t2.sh create mode 100755 bash-5.1/tests/misc/run-r2.sh create mode 100755 bash-5.1/tests/misc/sigint-1.sh create mode 100755 bash-5.1/tests/misc/sigint-2.sh create mode 100755 bash-5.1/tests/misc/sigint-3.sh create mode 100755 bash-5.1/tests/misc/sigint-4.sh create mode 100644 bash-5.1/tests/misc/test-minus-e.1 create mode 100644 bash-5.1/tests/misc/test-minus-e.2 create mode 100644 bash-5.1/tests/misc/wait-bg.tests create mode 100644 bash-5.1/tests/more-exp.right create mode 100644 bash-5.1/tests/more-exp.tests create mode 100644 bash-5.1/tests/nameref.right create mode 100644 bash-5.1/tests/nameref.tests create mode 100644 bash-5.1/tests/nameref1.sub create mode 100644 bash-5.1/tests/nameref10.sub create mode 100644 bash-5.1/tests/nameref11.sub create mode 100644 bash-5.1/tests/nameref12.sub create mode 100644 bash-5.1/tests/nameref13.sub create mode 100644 bash-5.1/tests/nameref14.sub create mode 100644 bash-5.1/tests/nameref15.sub create mode 100644 bash-5.1/tests/nameref16.sub create mode 100644 bash-5.1/tests/nameref17.sub create mode 100644 bash-5.1/tests/nameref18.sub create mode 100644 bash-5.1/tests/nameref19.sub create mode 100644 bash-5.1/tests/nameref2.sub create mode 100644 bash-5.1/tests/nameref20.sub create mode 100644 bash-5.1/tests/nameref21.sub create mode 100644 bash-5.1/tests/nameref3.sub create mode 100644 bash-5.1/tests/nameref4.sub create mode 100644 bash-5.1/tests/nameref5.sub create mode 100644 bash-5.1/tests/nameref6.sub create mode 100644 bash-5.1/tests/nameref7.sub create mode 100644 bash-5.1/tests/nameref8.sub create mode 100644 bash-5.1/tests/nameref9.sub create mode 100644 bash-5.1/tests/new-exp.right create mode 100644 bash-5.1/tests/new-exp.tests create mode 100644 bash-5.1/tests/new-exp1.sub create mode 100644 bash-5.1/tests/new-exp10.sub create mode 100644 bash-5.1/tests/new-exp11.sub create mode 100644 bash-5.1/tests/new-exp12.sub create mode 100644 bash-5.1/tests/new-exp13.sub create mode 100644 bash-5.1/tests/new-exp14.sub create mode 100644 bash-5.1/tests/new-exp15.sub create mode 100644 bash-5.1/tests/new-exp2.sub create mode 100644 bash-5.1/tests/new-exp3.sub create mode 100644 bash-5.1/tests/new-exp4.sub create mode 100644 bash-5.1/tests/new-exp5.sub create mode 100644 bash-5.1/tests/new-exp6.sub create mode 100644 bash-5.1/tests/new-exp7.sub create mode 100644 bash-5.1/tests/new-exp8.sub create mode 100644 bash-5.1/tests/new-exp9.sub create mode 100644 bash-5.1/tests/nquote.right create mode 100644 bash-5.1/tests/nquote.tests create mode 100644 bash-5.1/tests/nquote1.right create mode 100644 bash-5.1/tests/nquote1.sub create mode 100644 bash-5.1/tests/nquote1.tests create mode 100644 bash-5.1/tests/nquote2.right create mode 100644 bash-5.1/tests/nquote2.sub create mode 100644 bash-5.1/tests/nquote2.tests create mode 100644 bash-5.1/tests/nquote3.right create mode 100644 bash-5.1/tests/nquote3.sub create mode 100644 bash-5.1/tests/nquote3.tests create mode 100644 bash-5.1/tests/nquote4.right create mode 100644 bash-5.1/tests/nquote4.tests create mode 100644 bash-5.1/tests/nquote5.right create mode 100644 bash-5.1/tests/nquote5.tests create mode 100644 bash-5.1/tests/parser.right create mode 100644 bash-5.1/tests/parser.tests create mode 100644 bash-5.1/tests/parser1.sub create mode 100644 bash-5.1/tests/posix2.right create mode 100644 bash-5.1/tests/posix2.tests create mode 100644 bash-5.1/tests/posix2syntax.sub create mode 100644 bash-5.1/tests/posixexp.right create mode 100644 bash-5.1/tests/posixexp.tests create mode 100644 bash-5.1/tests/posixexp1.sub create mode 100644 bash-5.1/tests/posixexp2.right create mode 100644 bash-5.1/tests/posixexp2.sub create mode 100644 bash-5.1/tests/posixexp2.tests create mode 100644 bash-5.1/tests/posixexp3.sub create mode 100644 bash-5.1/tests/posixexp4.sub create mode 100644 bash-5.1/tests/posixexp5.sub create mode 100644 bash-5.1/tests/posixexp6.sub create mode 100644 bash-5.1/tests/posixexp7.sub create mode 100644 bash-5.1/tests/posixexp8.sub create mode 100644 bash-5.1/tests/posixpat.right create mode 100644 bash-5.1/tests/posixpat.tests create mode 100644 bash-5.1/tests/posixpipe.right create mode 100644 bash-5.1/tests/posixpipe.tests create mode 100644 bash-5.1/tests/prec.right create mode 100755 bash-5.1/tests/precedence.tests create mode 100644 bash-5.1/tests/printf.right create mode 100644 bash-5.1/tests/printf.tests create mode 100644 bash-5.1/tests/printf1.sub create mode 100644 bash-5.1/tests/printf2.sub create mode 100644 bash-5.1/tests/printf3.sub create mode 100644 bash-5.1/tests/printf4.sub create mode 100644 bash-5.1/tests/procsub.right create mode 100644 bash-5.1/tests/procsub.tests create mode 100644 bash-5.1/tests/procsub1.sub create mode 100644 bash-5.1/tests/procsub2.sub create mode 100644 bash-5.1/tests/quote.right create mode 100644 bash-5.1/tests/quote.tests create mode 100644 bash-5.1/tests/quote1.sub create mode 100644 bash-5.1/tests/quote2.sub create mode 100644 bash-5.1/tests/quote3.sub create mode 100644 bash-5.1/tests/quote4.sub create mode 100644 bash-5.1/tests/read.right create mode 100644 bash-5.1/tests/read.tests create mode 100644 bash-5.1/tests/read1.sub create mode 100644 bash-5.1/tests/read2.sub create mode 100644 bash-5.1/tests/read3.sub create mode 100644 bash-5.1/tests/read4.sub create mode 100644 bash-5.1/tests/read5.sub create mode 100644 bash-5.1/tests/read6.sub create mode 100644 bash-5.1/tests/redir.right create mode 100644 bash-5.1/tests/redir.tests create mode 100644 bash-5.1/tests/redir1.sub create mode 100644 bash-5.1/tests/redir10.sub create mode 100644 bash-5.1/tests/redir11.sub create mode 100644 bash-5.1/tests/redir2.sub create mode 100644 bash-5.1/tests/redir3.in1 create mode 100644 bash-5.1/tests/redir3.in2 create mode 100644 bash-5.1/tests/redir3.sub create mode 100644 bash-5.1/tests/redir4.in1 create mode 100644 bash-5.1/tests/redir4.sub create mode 100644 bash-5.1/tests/redir5.sub create mode 100644 bash-5.1/tests/redir6.sub create mode 100644 bash-5.1/tests/redir7.sub create mode 100644 bash-5.1/tests/redir8.sub create mode 100644 bash-5.1/tests/redir9.sub create mode 100644 bash-5.1/tests/rhs-exp.right create mode 100644 bash-5.1/tests/rhs-exp.tests create mode 100644 bash-5.1/tests/rhs-exp1.sub create mode 100644 bash-5.1/tests/rsh.right create mode 100644 bash-5.1/tests/rsh.tests create mode 100644 bash-5.1/tests/rsh1.sub create mode 100644 bash-5.1/tests/rsh2.sub create mode 100644 bash-5.1/tests/run-alias create mode 100644 bash-5.1/tests/run-all create mode 100644 bash-5.1/tests/run-appendop create mode 100644 bash-5.1/tests/run-arith create mode 100644 bash-5.1/tests/run-arith-for create mode 100644 bash-5.1/tests/run-array create mode 100644 bash-5.1/tests/run-array2 create mode 100644 bash-5.1/tests/run-assoc create mode 100644 bash-5.1/tests/run-attr create mode 100644 bash-5.1/tests/run-braces create mode 100644 bash-5.1/tests/run-builtins create mode 100644 bash-5.1/tests/run-case create mode 100644 bash-5.1/tests/run-casemod create mode 100644 bash-5.1/tests/run-complete create mode 100644 bash-5.1/tests/run-comsub create mode 100644 bash-5.1/tests/run-comsub-eof create mode 100644 bash-5.1/tests/run-comsub-posix create mode 100644 bash-5.1/tests/run-cond create mode 100644 bash-5.1/tests/run-coproc create mode 100644 bash-5.1/tests/run-cprint create mode 100644 bash-5.1/tests/run-dbg-support create mode 100644 bash-5.1/tests/run-dbg-support2 create mode 100644 bash-5.1/tests/run-dirstack create mode 100644 bash-5.1/tests/run-dollars create mode 100644 bash-5.1/tests/run-dynvar create mode 100644 bash-5.1/tests/run-errors create mode 100644 bash-5.1/tests/run-execscript create mode 100644 bash-5.1/tests/run-exp-tests create mode 100644 bash-5.1/tests/run-exportfunc create mode 100644 bash-5.1/tests/run-extglob create mode 100644 bash-5.1/tests/run-extglob2 create mode 100644 bash-5.1/tests/run-extglob3 create mode 100644 bash-5.1/tests/run-func create mode 100644 bash-5.1/tests/run-getopts create mode 100644 bash-5.1/tests/run-glob-test create mode 100644 bash-5.1/tests/run-globstar create mode 100644 bash-5.1/tests/run-heredoc create mode 100644 bash-5.1/tests/run-herestr create mode 100644 bash-5.1/tests/run-histexpand create mode 100644 bash-5.1/tests/run-history create mode 100644 bash-5.1/tests/run-ifs create mode 100644 bash-5.1/tests/run-ifs-posix create mode 100644 bash-5.1/tests/run-input-test create mode 100644 bash-5.1/tests/run-intl create mode 100644 bash-5.1/tests/run-invert create mode 100644 bash-5.1/tests/run-iquote create mode 100644 bash-5.1/tests/run-jobs create mode 100644 bash-5.1/tests/run-lastpipe create mode 100644 bash-5.1/tests/run-mapfile create mode 100644 bash-5.1/tests/run-minimal create mode 100644 bash-5.1/tests/run-more-exp create mode 100644 bash-5.1/tests/run-nameref create mode 100644 bash-5.1/tests/run-new-exp create mode 100644 bash-5.1/tests/run-nquote create mode 100644 bash-5.1/tests/run-nquote1 create mode 100644 bash-5.1/tests/run-nquote2 create mode 100644 bash-5.1/tests/run-nquote3 create mode 100644 bash-5.1/tests/run-nquote4 create mode 100644 bash-5.1/tests/run-nquote5 create mode 100644 bash-5.1/tests/run-parser create mode 100644 bash-5.1/tests/run-posix2 create mode 100644 bash-5.1/tests/run-posixexp create mode 100644 bash-5.1/tests/run-posixexp2 create mode 100644 bash-5.1/tests/run-posixpat create mode 100644 bash-5.1/tests/run-posixpipe create mode 100644 bash-5.1/tests/run-precedence create mode 100644 bash-5.1/tests/run-printf create mode 100644 bash-5.1/tests/run-procsub create mode 100644 bash-5.1/tests/run-quote create mode 100644 bash-5.1/tests/run-read create mode 100644 bash-5.1/tests/run-redir create mode 100644 bash-5.1/tests/run-rhs-exp create mode 100644 bash-5.1/tests/run-rsh create mode 100644 bash-5.1/tests/run-set-e create mode 100644 bash-5.1/tests/run-set-x create mode 100644 bash-5.1/tests/run-shopt create mode 100644 bash-5.1/tests/run-strip create mode 100644 bash-5.1/tests/run-test create mode 100644 bash-5.1/tests/run-tilde create mode 100644 bash-5.1/tests/run-tilde2 create mode 100644 bash-5.1/tests/run-trap create mode 100644 bash-5.1/tests/run-type create mode 100644 bash-5.1/tests/run-varenv create mode 100644 bash-5.1/tests/run-vredir create mode 100644 bash-5.1/tests/set-e.right create mode 100644 bash-5.1/tests/set-e.tests create mode 100644 bash-5.1/tests/set-e1.sub create mode 100644 bash-5.1/tests/set-e2.sub create mode 100644 bash-5.1/tests/set-e3.sub create mode 100644 bash-5.1/tests/set-e3a.sub create mode 100644 bash-5.1/tests/set-x.right create mode 100644 bash-5.1/tests/set-x.tests create mode 100644 bash-5.1/tests/set-x1.sub create mode 100644 bash-5.1/tests/shopt.right create mode 100644 bash-5.1/tests/shopt.tests create mode 100644 bash-5.1/tests/shopt1.sub create mode 100644 bash-5.1/tests/source1.sub create mode 100644 bash-5.1/tests/source2.sub create mode 100644 bash-5.1/tests/source3.sub create mode 100644 bash-5.1/tests/source4.sub create mode 100644 bash-5.1/tests/source5.sub create mode 100644 bash-5.1/tests/source6.sub create mode 100644 bash-5.1/tests/source7.sub create mode 100644 bash-5.1/tests/strip.right create mode 100644 bash-5.1/tests/strip.tests create mode 100644 bash-5.1/tests/test-glue-functions create mode 100644 bash-5.1/tests/test.right create mode 100644 bash-5.1/tests/test.tests create mode 100644 bash-5.1/tests/test1.sub create mode 100644 bash-5.1/tests/tilde.right create mode 100644 bash-5.1/tests/tilde.tests create mode 100644 bash-5.1/tests/tilde2.right create mode 100644 bash-5.1/tests/tilde2.tests create mode 100644 bash-5.1/tests/trap.right create mode 100644 bash-5.1/tests/trap.tests create mode 100755 bash-5.1/tests/trap1.sub create mode 100755 bash-5.1/tests/trap2.sub create mode 100755 bash-5.1/tests/trap2a.sub create mode 100644 bash-5.1/tests/trap3.sub create mode 100644 bash-5.1/tests/trap4.sub create mode 100644 bash-5.1/tests/trap5.sub create mode 100644 bash-5.1/tests/trap6.sub create mode 100644 bash-5.1/tests/type.right create mode 100644 bash-5.1/tests/type.tests create mode 100644 bash-5.1/tests/type1.sub create mode 100644 bash-5.1/tests/type2.sub create mode 100644 bash-5.1/tests/type3.sub create mode 100644 bash-5.1/tests/type4.sub create mode 100644 bash-5.1/tests/unicode1.sub create mode 100644 bash-5.1/tests/unicode2.sub create mode 100644 bash-5.1/tests/unicode3.sub create mode 100644 bash-5.1/tests/varenv.right create mode 100644 bash-5.1/tests/varenv.tests create mode 100644 bash-5.1/tests/varenv1.sub create mode 100644 bash-5.1/tests/varenv10.sub create mode 100644 bash-5.1/tests/varenv11.sub create mode 100644 bash-5.1/tests/varenv12.sub create mode 100644 bash-5.1/tests/varenv13.sub create mode 100644 bash-5.1/tests/varenv14.sub create mode 100644 bash-5.1/tests/varenv15.in create mode 100644 bash-5.1/tests/varenv15.sub create mode 100644 bash-5.1/tests/varenv16.sub create mode 100644 bash-5.1/tests/varenv17.sub create mode 100644 bash-5.1/tests/varenv18.sub create mode 100644 bash-5.1/tests/varenv19.sub create mode 100644 bash-5.1/tests/varenv2.sub create mode 100644 bash-5.1/tests/varenv20.sub create mode 100644 bash-5.1/tests/varenv21.sub create mode 100644 bash-5.1/tests/varenv3.sub create mode 100644 bash-5.1/tests/varenv4.sub create mode 100644 bash-5.1/tests/varenv5.sub create mode 100644 bash-5.1/tests/varenv6.sub create mode 100644 bash-5.1/tests/varenv7.sub create mode 100644 bash-5.1/tests/varenv8.sub create mode 100644 bash-5.1/tests/varenv9.sub create mode 100644 bash-5.1/tests/version create mode 100644 bash-5.1/tests/version.mini create mode 100644 bash-5.1/tests/vredir.right create mode 100644 bash-5.1/tests/vredir.tests create mode 100644 bash-5.1/tests/vredir1.sub create mode 100644 bash-5.1/tests/vredir2.sub create mode 100644 bash-5.1/tests/vredir3.sub create mode 100644 bash-5.1/tests/vredir4.sub create mode 100644 bash-5.1/tests/vredir5.sub create mode 100644 bash-5.1/tests/vredir6.sub create mode 100644 bash-5.1/tests/vredir7.sub create mode 100644 bash-5.1/trap.c create mode 100644 bash-5.1/trap.h create mode 100644 bash-5.1/unwind_prot.c create mode 100644 bash-5.1/unwind_prot.h create mode 100644 bash-5.1/variables.c create mode 100644 bash-5.1/variables.h create mode 100644 bash-5.1/version.c create mode 100644 bash-5.1/xmalloc.c create mode 100644 bash-5.1/xmalloc.h create mode 100644 record.txt diff --git a/bash-5.1/ABOUT-NLS b/bash-5.1/ABOUT-NLS new file mode 100644 index 0000000..3cc8286 --- /dev/null +++ b/bash-5.1/ABOUT-NLS @@ -0,0 +1,1379 @@ +1 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 free software 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 on translations can contact the appropriate team. + +1.1 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. Installers may use special +options at configuration time for changing the default behaviour. The +command: + + ./configure --disable-nls + +will _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' library and +will decide to use it. If not, you may have to to use the +'--with-libintl-prefix' option to tell 'configure' where to look for it. + + Internationalized packages usually have 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. + +1.2 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. If you happen to have the 'LC_ALL' or some other +'LC_xxx' environment variables set, you should unset them before setting +'LANG', otherwise the setting of 'LANG' will not have the desired +effect. 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 language 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'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from 'no' to 'nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under 'nb' and some older ones under 'no', it's recommended +for Norwegian users to set 'LANGUAGE' to 'nb:no' so that both newer and +older translations are used. + + 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. + +1.3 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://translationproject.org/', in the "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 'coordinator@translationproject.org' 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 skills are praised more than +programming skills, here. + +1.4 Available Packages +====================== + +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of Jun 2014. +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 af am an ar as ast az be bg bn bn_IN bs ca crh cs + +---------------------------------------------------+ + a2ps | [] [] [] | + aegis | | + anubis | | + aspell | [] [] [] | + bash | [] [] [] | + bfd | | + binutils | [] | + bison | | + bison-runtime | [] | + buzztrax | [] | + ccd2cue | | + ccide | | + cflow | | + clisp | | + coreutils | [] [] | + cpio | | + cppi | | + cpplib | [] | + cryptsetup | [] | + datamash | | + denemo | [] [] | + dfarc | [] | + dialog | [] [] [] | + dico | | + diffutils | [] | + dink | [] | + direvent | | + doodle | [] | + dos2unix | | + dos2unix-man | | + e2fsprogs | [] [] | + enscript | [] | + exif | [] | + fetchmail | [] [] | + findutils | [] | + flex | [] | + freedink | [] [] | + fusionforge | | + gas | | + gawk | [] | + gcal | [] | + gcc | | + gdbm | | + gettext-examples | [] [] [] [] [] | + gettext-runtime | [] [] [] | + gettext-tools | [] [] | + gjay | | + glunarclock | [] [] [] | + gnubiff | [] | + gnubik | [] | + gnucash | () () [] | + gnuchess | | + gnulib | [] | + gnunet | | + gnunet-gtk | | + gold | | + gphoto2 | [] | + gprof | [] | + gramadoir | | + grep | [] [] [] | + grub | [] | + gsasl | | + gss | | + gst-plugins-bad | [] [] | + gst-plugins-base | [] [] [] | + gst-plugins-good | [] [] [] | + gst-plugins-ugly | [] [] [] | + gstreamer | [] [] [] [] | + gtick | [] | + gtkam | [] [] | + gtkspell | [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] | + hello | [] | + help2man | | + help2man-texi | | + hylafax | | + idutils | | + iso_15924 | [] | + iso_3166 | [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] | + iso_639 | [] [] [] [] [] [] [] [] [] | + iso_639_3 | [] [] | + iso_639_5 | | + jwhois | | + kbd | [] | + klavaro | [] [] [] [] [] | + ld | [] | + leafpad | [] [] [] [] | + libc | [] [] [] | + libexif | () | + libextractor | | + libgnutls | [] | + libgphoto2 | [] | + libgphoto2_port | [] | + libgsasl | | + libiconv | [] [] | + libidn | [] | + liferea | [] [] [] [] | + lilypond | [] [] | + lordsawar | [] | + lprng | | + lynx | [] [] | + m4 | [] | + mailfromd | | + mailutils | | + make | [] | + man-db | [] [] | + man-db-manpages | | + midi-instruments | [] [] [] | + minicom | [] | + mkisofs | [] | + myserver | [] | + nano | [] [] [] | + opcodes | | + parted | [] | + pies | | + pnmixer | | + popt | [] | + procps-ng | | + procps-ng-man | | + psmisc | [] | + pspp | [] | + pushover | [] | + pwdutils | | + pyspread | | + radius | [] | + recode | [] [] [] | + recutils | | + rpm | | + rush | | + sarg | | + sed | [] [] [] [] | + sharutils | [] | + shishi | | + skribilo | | + solfege | [] [] | + solfege-manual | | + spotmachine | | + sudo | [] [] | + sudoers | [] [] | + sysstat | [] | + tar | [] [] [] | + texinfo | [] [] | + texinfo_document | [] [] | + tigervnc | [] | + tin | | + tin-man | | + tracgoogleappsa... | | + trader | | + util-linux | [] | + ve | | + vice | | + vmm | | + vorbis-tools | [] | + wastesedge | | + wcd | | + wcd-man | | + wdiff | [] [] | + wget | [] | + wyslij-po | | + xboard | | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + +---------------------------------------------------+ + af am an ar as ast az be bg bn bn_IN bs ca crh cs + 4 0 2 5 3 11 0 8 25 3 3 1 55 4 74 + + da de el en en_GB en_ZA eo es et eu fa fi fr + +--------------------------------------------------+ + a2ps | [] [] [] [] [] [] [] [] [] | + aegis | [] [] [] [] | + anubis | [] [] [] [] [] | + aspell | [] [] [] [] [] [] [] | + bash | [] [] [] | + bfd | [] [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] [] [] [] [] | + bison-runtime | [] [] [] [] [] [] [] [] | + buzztrax | [] [] [] [] | + ccd2cue | [] [] [] [] | + ccide | [] [] [] [] [] [] | + cflow | [] [] [] [] [] | + clisp | [] [] [] [] [] | + coreutils | [] [] [] [] [] | + cpio | [] [] [] [] [] | + cppi | [] [] [] [] [] | + cpplib | [] [] [] [] [] [] | + cryptsetup | [] [] [] [] [] | + datamash | [] [] [] [] | + denemo | [] | + dfarc | [] [] [] [] [] [] | + dialog | [] [] [] [] [] [] [] [] [] | + dico | [] [] [] [] | + diffutils | [] [] [] [] [] [] | + dink | [] [] [] [] [] [] | + direvent | [] [] [] [] | + doodle | [] [] [] [] | + dos2unix | [] [] [] [] [] | + dos2unix-man | [] [] [] | + e2fsprogs | [] [] [] [] [] | + enscript | [] [] [] [] [] [] | + exif | [] [] [] [] [] [] | + fetchmail | [] () [] [] [] [] [] | + findutils | [] [] [] [] [] [] [] [] | + flex | [] [] [] [] [] [] | + freedink | [] [] [] [] [] [] [] [] | + fusionforge | [] [] [] | + gas | [] [] [] | + gawk | [] [] [] [] [] | + gcal | [] [] [] [] | + gcc | [] | + gdbm | [] [] [] [] [] | + gettext-examples | [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] | + gjay | [] [] [] [] | + glunarclock | [] [] [] [] [] | + gnubiff | () [] [] () | + gnubik | [] [] [] [] [] | + gnucash | [] () () () () () () | + gnuchess | [] [] [] [] | + gnulib | [] [] [] [] [] [] [] | + gnunet | [] | + gnunet-gtk | [] | + gold | [] [] [] | + gphoto2 | [] () [] [] | + gprof | [] [] [] [] [] [] | + gramadoir | [] [] [] [] [] | + grep | [] [] [] [] [] [] [] | + grub | [] [] [] [] [] | + gsasl | [] [] [] [] [] | + gss | [] [] [] [] [] | + gst-plugins-bad | [] [] [] | + gst-plugins-base | [] [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] [] [] | + gtick | [] () [] [] [] | + gtkam | [] () [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] [] | + guix | [] [] | + guix-packages | | + gutenprint | [] [] [] [] | + hello | [] [] [] [] [] [] [] [] | + help2man | [] [] [] [] [] [] [] | + help2man-texi | [] [] [] | + hylafax | [] [] | + idutils | [] [] [] [] [] | + iso_15924 | [] () [] [] () [] () | + iso_3166 | [] () [] [] [] [] () [] () | + iso_3166_2 | [] () () () | + iso_4217 | [] () [] [] [] () [] () | + iso_639 | [] () [] [] () [] () | + iso_639_3 | () () () | + iso_639_5 | () () () | + jwhois | [] [] [] [] [] | + kbd | [] [] [] [] [] [] | + klavaro | [] [] [] [] [] [] [] | + ld | [] [] [] [] | + leafpad | [] [] [] [] [] [] [] [] | + libc | [] [] [] [] [] | + libexif | [] [] () [] [] | + libextractor | [] | + libgnutls | [] [] [] [] | + libgphoto2 | [] () [] | + libgphoto2_port | [] () [] [] [] [] | + libgsasl | [] [] [] [] [] | + libiconv | [] [] [] [] [] [] [] | + libidn | [] [] [] [] [] | + liferea | [] () [] [] [] [] [] | + lilypond | [] [] [] [] [] [] | + lordsawar | [] [] | + lprng | | + lynx | [] [] [] [] [] [] | + m4 | [] [] [] [] [] [] | + mailfromd | [] | + mailutils | [] [] [] [] | + make | [] [] [] [] [] | + man-db | [] [] [] [] | + man-db-manpages | [] [] | + midi-instruments | [] [] [] [] [] [] [] [] [] | + minicom | [] [] [] [] [] | + mkisofs | [] [] [] | + myserver | [] [] [] [] | + nano | [] [] [] [] [] [] [] | + opcodes | [] [] [] [] [] | + parted | [] [] [] | + pies | [] | + pnmixer | [] [] | + popt | [] [] [] [] [] [] | + procps-ng | [] [] | + procps-ng-man | [] [] | + psmisc | [] [] [] [] [] [] [] | + pspp | [] [] [] | + pushover | () [] [] [] | + pwdutils | [] [] [] | + pyspread | [] [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] | + recutils | [] [] [] [] | + rpm | [] [] [] [] [] | + rush | [] [] [] | + sarg | [] [] | + sed | [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] [] [] | + skribilo | [] [] [] | + solfege | [] [] [] [] [] [] [] [] | + solfege-manual | [] [] [] [] [] | + spotmachine | [] [] [] [] [] | + sudo | [] [] [] [] [] [] | + sudoers | [] [] [] [] [] [] | + sysstat | [] [] [] [] [] [] | + tar | [] [] [] [] [] [] [] | + texinfo | [] [] [] [] [] | + texinfo_document | [] [] [] [] | + tigervnc | [] [] [] [] [] [] | + tin | [] [] [] [] | + tin-man | [] | + tracgoogleappsa... | [] [] [] [] [] | + trader | [] [] [] [] [] [] | + util-linux | [] [] [] [] | + ve | [] [] [] [] [] | + vice | () () () | + vmm | [] [] | + vorbis-tools | [] [] [] [] | + wastesedge | [] | + wcd | [] [] [] [] | + wcd-man | [] | + wdiff | [] [] [] [] [] [] [] | + wget | [] [] [] [] [] [] | + wyslij-po | [] [] [] [] | + xboard | [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] [] [] [] | + +--------------------------------------------------+ + da de el en en_GB en_ZA eo es et eu fa fi fr + 119 131 32 1 6 0 94 95 22 13 4 102 139 + + ga gd gl gu he hi hr hu hy ia id is it ja ka kk + +-------------------------------------------------+ + a2ps | [] [] [] [] | + aegis | [] | + anubis | [] [] [] [] | + aspell | [] [] [] [] [] | + bash | [] [] [] [] | + bfd | [] [] | + binutils | [] [] [] | + bison | [] | + bison-runtime | [] [] [] [] [] [] [] [] | + buzztrax | | + ccd2cue | [] | + ccide | [] [] | + cflow | [] [] [] | + clisp | | + coreutils | [] [] | + cpio | [] [] [] [] [] [] | + cppi | [] [] [] [] [] | + cpplib | [] [] | + cryptsetup | [] | + datamash | | + denemo | [] | + dfarc | [] [] [] | + dialog | [] [] [] [] [] [] [] [] [] [] | + dico | | + diffutils | [] [] [] [] | + dink | [] | + direvent | [] | + doodle | [] [] | + dos2unix | [] [] | + dos2unix-man | | + e2fsprogs | [] [] | + enscript | [] [] [] | + exif | [] [] [] [] [] [] | + fetchmail | [] [] [] | + findutils | [] [] [] [] [] [] [] | + flex | [] | + freedink | [] [] [] [] | + fusionforge | | + gas | [] | + gawk | [] () [] | + gcal | | + gcc | | + gdbm | | + gettext-examples | [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] | + gettext-tools | [] [] [] | + gjay | [] | + glunarclock | [] [] [] [] [] [] | + gnubiff | [] [] () | + gnubik | [] [] [] | + gnucash | () () () () () | + gnuchess | | + gnulib | [] [] [] [] [] | + gnunet | | + gnunet-gtk | | + gold | [] [] | + gphoto2 | [] [] [] [] | + gprof | [] [] [] [] | + gramadoir | [] [] [] | + grep | [] [] [] [] [] [] [] | + grub | [] [] [] | + gsasl | [] [] [] [] [] | + gss | [] [] [] [] [] | + gst-plugins-bad | [] [] [] | + gst-plugins-base | [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] [] [] [] [] | + gtkam | [] [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] [] [] | + hello | [] [] [] [] [] | + help2man | [] [] [] | + help2man-texi | | + hylafax | [] | + idutils | [] [] | + iso_15924 | [] [] [] [] [] [] | + iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | [] [] | + iso_4217 | [] [] [] [] [] [] | + iso_639 | [] [] [] [] [] [] [] [] [] | + iso_639_3 | [] [] | + iso_639_5 | | + jwhois | [] [] [] [] | + kbd | [] [] [] | + klavaro | [] [] [] [] [] | + ld | [] [] [] [] | + leafpad | [] [] [] [] [] [] [] () | + libc | [] [] [] [] [] | + libexif | [] | + libextractor | | + libgnutls | [] | + libgphoto2 | [] [] | + libgphoto2_port | [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] [] [] [] [] [] | + libidn | [] [] [] [] | + liferea | [] [] [] [] [] | + lilypond | [] | + lordsawar | | + lprng | [] | + lynx | [] [] [] [] | + m4 | [] [] [] [] [] | + mailfromd | | + mailutils | | + make | [] [] [] [] | + man-db | [] [] | + man-db-manpages | [] [] | + midi-instruments | [] [] [] [] [] [] [] [] [] | + minicom | [] [] [] | + mkisofs | [] [] | + myserver | [] | + nano | [] [] [] [] [] [] | + opcodes | [] [] [] | + parted | [] [] [] [] [] | + pies | | + pnmixer | [] [] | + popt | [] [] [] [] [] [] [] [] [] [] | + procps-ng | | + procps-ng-man | | + psmisc | [] [] [] [] | + pspp | [] [] | + pushover | [] | + pwdutils | [] | + pyspread | | + radius | [] | + recode | [] [] [] [] [] [] [] | + recutils | | + rpm | [] | + rush | [] | + sarg | | + sed | [] [] [] [] [] [] [] | + sharutils | | + shishi | | + skribilo | [] | + solfege | [] [] | + solfege-manual | | + spotmachine | | + sudo | [] [] [] [] | + sudoers | [] [] [] | + sysstat | [] [] [] [] | + tar | [] [] [] [] [] [] | + texinfo | [] [] [] | + texinfo_document | [] [] [] | + tigervnc | | + tin | | + tin-man | | + tracgoogleappsa... | [] [] [] [] | + trader | [] [] | + util-linux | [] | + ve | [] | + vice | () () | + vmm | | + vorbis-tools | [] [] | + wastesedge | [] | + wcd | | + wcd-man | | + wdiff | [] [] [] | + wget | [] [] [] [] | + wyslij-po | [] [] [] | + xboard | | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] [] [] | + +-------------------------------------------------+ + ga gd gl gu he hi hr hu hy ia id is it ja ka kk + 35 2 47 4 8 2 60 71 2 6 81 11 87 57 0 3 + + kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl + +--------------------------------------------------+ + a2ps | [] [] | + aegis | [] | + anubis | [] [] [] | + aspell | [] [] | + bash | [] [] | + bfd | | + binutils | | + bison | [] | + bison-runtime | [] [] [] [] [] [] | + buzztrax | | + ccd2cue | | + ccide | [] [] | + cflow | [] | + clisp | [] | + coreutils | [] [] | + cpio | [] | + cppi | | + cpplib | [] | + cryptsetup | [] | + datamash | [] [] | + denemo | | + dfarc | [] [] | + dialog | [] [] [] [] [] [] | + dico | | + diffutils | [] [] [] | + dink | [] | + direvent | [] | + doodle | [] | + dos2unix | [] [] | + dos2unix-man | [] | + e2fsprogs | [] | + enscript | [] | + exif | [] [] [] | + fetchmail | [] | + findutils | [] [] | + flex | [] | + freedink | [] [] | + fusionforge | | + gas | | + gawk | [] | + gcal | | + gcc | | + gdbm | | + gettext-examples | [] [] [] [] [] [] | + gettext-runtime | [] [] [] | + gettext-tools | [] | + gjay | | + glunarclock | [] [] | + gnubiff | [] | + gnubik | [] [] | + gnucash | () () () () () () () [] | + gnuchess | [] [] | + gnulib | [] | + gnunet | | + gnunet-gtk | | + gold | | + gphoto2 | [] | + gprof | [] [] | + gramadoir | [] | + grep | [] [] | + grub | [] [] [] | + gsasl | [] | + gss | | + gst-plugins-bad | [] [] [] | + gst-plugins-base | [] [] [] | + gst-plugins-good | [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] | + gstreamer | [] [] [] | + gtick | [] | + gtkam | [] [] | + gtkspell | [] [] [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] | + hello | [] [] [] | + help2man | [] | + help2man-texi | | + hylafax | [] | + idutils | [] | + iso_15924 | () [] [] | + iso_3166 | [] [] [] () [] [] [] [] [] [] | + iso_3166_2 | () [] | + iso_4217 | () [] [] [] | + iso_639 | [] [] () [] [] [] [] | + iso_639_3 | [] () [] | + iso_639_5 | () | + jwhois | [] [] | + kbd | [] | + klavaro | [] [] | + ld | | + leafpad | [] [] [] [] [] | + libc | [] [] | + libexif | [] | + libextractor | [] | + libgnutls | [] [] | + libgphoto2 | [] | + libgphoto2_port | [] | + libgsasl | [] | + libiconv | [] [] | + libidn | [] | + liferea | [] [] [] | + lilypond | [] | + lordsawar | | + lprng | | + lynx | [] | + m4 | [] | + mailfromd | | + mailutils | | + make | [] [] | + man-db | [] | + man-db-manpages | [] | + midi-instruments | [] [] [] [] [] [] [] | + minicom | [] | + mkisofs | [] | + myserver | | + nano | [] [] [] | + opcodes | [] | + parted | [] [] | + pies | | + pnmixer | [] | + popt | [] [] [] [] [] | + procps-ng | | + procps-ng-man | | + psmisc | [] | + pspp | [] [] | + pushover | | + pwdutils | [] | + pyspread | | + radius | [] | + recode | [] [] | + recutils | [] | + rpm | [] | + rush | [] | + sarg | | + sed | [] [] | + sharutils | [] | + shishi | | + skribilo | | + solfege | [] [] | + solfege-manual | [] | + spotmachine | [] | + sudo | [] [] [] | + sudoers | [] [] [] | + sysstat | [] [] | + tar | [] [] [] | + texinfo | [] | + texinfo_document | [] | + tigervnc | [] | + tin | | + tin-man | | + tracgoogleappsa... | [] [] [] | + trader | [] | + util-linux | [] | + ve | [] | + vice | [] | + vmm | [] | + vorbis-tools | [] | + wastesedge | [] | + wcd | [] | + wcd-man | [] | + wdiff | [] | + wget | [] [] | + wyslij-po | [] | + xboard | [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + +--------------------------------------------------+ + kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl + 5 15 4 6 0 13 23 3 3 3 4 11 2 42 1 125 + + nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr + +------------------------------------------------+ + a2ps | [] [] [] [] [] [] [] | + aegis | [] [] | + anubis | [] [] [] | + aspell | [] [] [] [] [] [] [] | + bash | [] [] [] [] [] [] | + bfd | [] [] | + binutils | [] [] | + bison | [] [] [] | + bison-runtime | [] [] [] [] [] [] [] [] | + buzztrax | [] | + ccd2cue | [] [] | + ccide | [] [] [] | + cflow | [] [] [] | + clisp | [] | + coreutils | [] [] [] [] | + cpio | [] [] [] | + cppi | [] [] [] | + cpplib | [] [] [] | + cryptsetup | [] [] [] | + datamash | [] [] | + denemo | | + dfarc | [] [] [] | + dialog | [] [] [] [] [] [] [] | + dico | [] | + diffutils | [] [] [] | + dink | | + direvent | [] [] [] | + doodle | [] [] | + dos2unix | [] [] [] [] | + dos2unix-man | [] [] | + e2fsprogs | [] | + enscript | [] [] [] [] [] [] | + exif | [] [] [] [] [] [] | + fetchmail | [] [] [] | + findutils | [] [] [] [] [] [] | + flex | [] [] [] [] [] | + freedink | [] [] [] [] [] | + fusionforge | | + gas | | + gawk | [] | + gcal | | + gcc | | + gdbm | [] [] [] | + gettext-examples | [] [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] [] [] | + gjay | [] | + glunarclock | [] [] [] [] [] [] | + gnubiff | [] | + gnubik | [] [] [] [] | + gnucash | () () () () () [] | + gnuchess | [] [] | + gnulib | [] [] [] [] [] | + gnunet | | + gnunet-gtk | | + gold | | + gphoto2 | [] [] [] [] [] | + gprof | [] [] [] [] | + gramadoir | [] [] | + grep | [] [] [] [] [] [] | + grub | [] [] [] [] [] | + gsasl | [] [] [] | + gss | [] [] [] [] | + gst-plugins-bad | [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] [] [] | + gtick | [] [] [] [] [] | + gtkam | [] [] [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] [] | + hello | [] [] [] [] [] [] | + help2man | [] [] [] [] | + help2man-texi | [] | + hylafax | | + idutils | [] [] [] | + iso_15924 | [] () [] [] [] [] | + iso_3166 | [] [] [] [] () [] [] [] [] [] [] [] [] | + iso_3166_2 | [] () [] | + iso_4217 | [] [] () [] [] [] [] [] | + iso_639 | [] [] [] () [] [] [] [] [] [] | + iso_639_3 | [] () | + iso_639_5 | () [] | + jwhois | [] [] [] [] | + kbd | [] [] | + klavaro | [] [] [] [] [] | + ld | | + leafpad | [] [] [] [] [] [] [] [] | + libc | [] [] [] | + libexif | [] () [] | + libextractor | [] | + libgnutls | [] | + libgphoto2 | [] | + libgphoto2_port | [] [] [] [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] [] [] [] | + libidn | [] [] [] | + liferea | [] [] [] [] () [] [] | + lilypond | | + lordsawar | | + lprng | [] | + lynx | [] [] | + m4 | [] [] [] [] [] | + mailfromd | [] | + mailutils | [] | + make | [] [] [] | + man-db | [] [] [] | + man-db-manpages | [] [] [] | + midi-instruments | [] [] [] [] [] [] [] [] | + minicom | [] [] [] [] | + mkisofs | [] [] [] | + myserver | [] [] | + nano | [] [] [] [] [] [] | + opcodes | | + parted | [] [] [] [] [] [] | + pies | [] | + pnmixer | [] | + popt | [] [] [] [] [] [] | + procps-ng | [] | + procps-ng-man | [] | + psmisc | [] [] [] [] | + pspp | [] [] | + pushover | | + pwdutils | [] | + pyspread | [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] [] | + recutils | [] [] | + rpm | [] | + rush | [] [] [] | + sarg | [] [] | + sed | [] [] [] [] [] [] [] [] | + sharutils | [] [] [] | + shishi | [] [] | + skribilo | [] | + solfege | [] [] [] | + solfege-manual | [] [] | + spotmachine | [] [] | + sudo | [] [] [] [] [] [] | + sudoers | [] [] [] [] | + sysstat | [] [] [] [] [] | + tar | [] [] [] [] [] | + texinfo | [] [] [] | + texinfo_document | [] [] | + tigervnc | [] [] [] | + tin | [] | + tin-man | | + tracgoogleappsa... | [] [] [] [] | + trader | [] [] | + util-linux | [] [] | + ve | [] [] [] | + vice | | + vmm | | + vorbis-tools | [] [] [] | + wastesedge | | + wcd | | + wcd-man | | + wdiff | [] [] [] [] [] | + wget | [] [] [] [] [] | + wyslij-po | [] [] [] [] | + xboard | [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] | + +------------------------------------------------+ + nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr + 7 3 6 114 1 12 88 32 82 3 40 45 7 101 + + sv sw ta te tg th tr uk ur vi wa wo zh_CN + +----------------------------------------------+ + a2ps | [] [] [] [] [] | + aegis | [] | + anubis | [] [] [] [] | + aspell | [] [] [] [] [] | + bash | [] [] [] [] | + bfd | [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] | + bison-runtime | [] [] [] [] [] [] | + buzztrax | [] [] [] | + ccd2cue | [] [] [] | + ccide | [] [] [] [] | + cflow | [] [] [] [] | + clisp | | + coreutils | [] [] [] | + cpio | [] [] [] [] [] | + cppi | [] [] [] [] | + cpplib | [] [] [] [] [] | + cryptsetup | [] [] [] | + datamash | [] [] [] | + denemo | [] | + dfarc | [] [] | + dialog | [] [] [] [] [] [] | + dico | [] | + diffutils | [] [] [] [] [] | + dink | [] | + direvent | [] [] | + doodle | [] [] | + dos2unix | [] [] [] [] | + dos2unix-man | [] [] [] | + e2fsprogs | [] [] [] [] | + enscript | [] [] [] [] | + exif | [] [] [] [] [] | + fetchmail | [] [] [] [] | + findutils | [] [] [] [] [] | + flex | [] [] [] [] | + freedink | [] [] [] | + fusionforge | | + gas | [] | + gawk | [] [] [] | + gcal | [] [] [] | + gcc | [] | + gdbm | [] [] | + gettext-examples | [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] | + gettext-tools | [] [] [] [] [] | + gjay | [] [] [] | + glunarclock | [] [] [] [] | + gnubiff | [] [] | + gnubik | [] [] [] [] | + gnucash | () () () () [] | + gnuchess | [] [] [] | + gnulib | [] [] [] [] | + gnunet | | + gnunet-gtk | | + gold | [] [] | + gphoto2 | [] [] [] [] | + gprof | [] [] [] [] | + gramadoir | [] [] [] | + grep | [] [] [] [] [] | + grub | [] [] [] [] | + gsasl | [] [] [] [] | + gss | [] [] [] | + gst-plugins-bad | [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] [] [] | + gtkam | [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] | + guix | | + guix-packages | | + gutenprint | [] [] [] [] | + hello | [] [] [] [] [] [] | + help2man | [] [] [] | + help2man-texi | [] | + hylafax | [] | + idutils | [] [] [] | + iso_15924 | [] () [] [] () [] | + iso_3166 | [] [] () [] [] () [] [] | + iso_3166_2 | () [] [] () [] | + iso_4217 | [] () [] [] () [] | + iso_639 | [] [] [] () [] [] () [] [] | + iso_639_3 | [] () [] [] () | + iso_639_5 | () [] () | + jwhois | [] [] [] [] | + kbd | [] [] [] [] | + klavaro | [] [] [] [] [] [] | + ld | [] [] [] [] [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] [] | + libexif | [] [] () | + libextractor | [] [] | + libgnutls | [] [] [] [] | + libgphoto2 | [] [] [] | + libgphoto2_port | [] [] [] [] | + libgsasl | [] [] [] [] | + libiconv | [] [] [] [] [] | + libidn | () [] [] [] | + liferea | [] [] [] [] [] | + lilypond | [] | + lordsawar | | + lprng | [] | + lynx | [] [] [] [] | + m4 | [] [] [] | + mailfromd | [] [] | + mailutils | [] | + make | [] [] [] [] | + man-db | [] [] [] | + man-db-manpages | [] [] | + midi-instruments | [] [] [] [] [] [] | + minicom | [] [] | + mkisofs | [] [] [] | + myserver | [] | + nano | [] [] [] [] | + opcodes | [] [] [] | + parted | [] [] [] [] [] | + pies | [] [] | + pnmixer | [] [] [] | + popt | [] [] [] [] [] [] [] | + procps-ng | [] [] | + procps-ng-man | [] | + psmisc | [] [] [] [] | + pspp | [] [] [] | + pushover | [] | + pwdutils | [] [] | + pyspread | [] | + radius | [] [] | + recode | [] [] [] [] | + recutils | [] [] [] | + rpm | [] [] [] [] | + rush | [] [] | + sarg | | + sed | [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] [] | + skribilo | [] [] | + solfege | [] [] [] [] | + solfege-manual | [] | + spotmachine | [] [] [] | + sudo | [] [] [] [] [] | + sudoers | [] [] [] [] | + sysstat | [] [] [] [] [] | + tar | [] [] [] [] [] | + texinfo | [] [] [] | + texinfo_document | [] | + tigervnc | [] [] [] | + tin | [] | + tin-man | | + tracgoogleappsa... | [] [] [] [] [] | + trader | [] | + util-linux | [] [] [] [] | + ve | [] [] [] [] | + vice | () () | + vmm | | + vorbis-tools | [] [] | + wastesedge | | + wcd | [] [] [] | + wcd-man | [] | + wdiff | [] [] [] [] | + wget | [] [] [] | + wyslij-po | [] [] | + xboard | [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] | + +----------------------------------------------+ + sv sw ta te tg th tr uk ur vi wa wo zh_CN + 106 1 4 3 0 13 51 115 1 125 7 1 100 + + zh_HK zh_TW + +-------------+ + a2ps | | 30 + aegis | | 9 + anubis | | 19 + aspell | | 29 + bash | [] | 23 + bfd | | 11 + binutils | | 12 + bison | [] | 18 + bison-runtime | [] | 38 + buzztrax | | 9 + ccd2cue | | 10 + ccide | | 17 + cflow | | 16 + clisp | | 10 + coreutils | | 18 + cpio | | 20 + cppi | | 17 + cpplib | [] | 19 + cryptsetup | | 14 + datamash | | 11 + denemo | | 5 + dfarc | | 17 + dialog | [] | 42 + dico | | 6 + diffutils | | 22 + dink | | 10 + direvent | | 11 + doodle | | 12 + dos2unix | [] | 18 + dos2unix-man | | 9 + e2fsprogs | | 15 + enscript | | 21 + exif | | 27 + fetchmail | | 19 + findutils | | 29 + flex | [] | 19 + freedink | | 24 + fusionforge | | 3 + gas | | 5 + gawk | | 13 + gcal | | 8 + gcc | | 2 + gdbm | | 10 + gettext-examples | [] [] | 40 + gettext-runtime | [] [] | 35 + gettext-tools | [] | 24 + gjay | | 9 + glunarclock | [] | 27 + gnubiff | | 9 + gnubik | | 19 + gnucash | () | 6 + gnuchess | | 11 + gnulib | | 23 + gnunet | | 1 + gnunet-gtk | | 1 + gold | | 7 + gphoto2 | [] | 19 + gprof | | 21 + gramadoir | | 14 + grep | [] | 31 + grub | | 21 + gsasl | [] | 19 + gss | | 17 + gst-plugins-bad | | 21 + gst-plugins-base | | 27 + gst-plugins-good | | 32 + gst-plugins-ugly | | 34 + gstreamer | [] | 32 + gtick | | 19 + gtkam | | 24 + gtkspell | [] [] | 48 + guix | | 2 + guix-packages | | 0 + gutenprint | | 15 + hello | [] | 30 + help2man | | 18 + help2man-texi | | 5 + hylafax | | 5 + idutils | | 14 + iso_15924 | [] | 23 + iso_3166 | [] [] | 58 + iso_3166_2 | | 9 + iso_4217 | [] [] | 28 + iso_639 | [] [] | 46 + iso_639_3 | | 10 + iso_639_5 | | 2 + jwhois | [] | 20 + kbd | | 17 + klavaro | | 30 + ld | [] | 15 + leafpad | [] | 39 + libc | [] | 24 + libexif | | 10 + libextractor | | 5 + libgnutls | | 13 + libgphoto2 | | 10 + libgphoto2_port | [] | 19 + libgsasl | | 18 + libiconv | [] | 29 + libidn | | 17 + liferea | | 29 + lilypond | | 11 + lordsawar | | 3 + lprng | | 3 + lynx | | 19 + m4 | [] | 22 + mailfromd | | 4 + mailutils | | 6 + make | | 19 + man-db | | 15 + man-db-manpages | | 10 + midi-instruments | [] | 43 + minicom | [] | 17 + mkisofs | | 13 + myserver | | 9 + nano | [] | 30 + opcodes | | 12 + parted | [] | 23 + pies | | 4 + pnmixer | | 9 + popt | [] | 36 + procps-ng | | 5 + procps-ng-man | | 4 + psmisc | [] | 22 + pspp | | 13 + pushover | | 6 + pwdutils | | 8 + pyspread | | 6 + radius | | 9 + recode | | 31 + recutils | | 10 + rpm | [] | 13 + rush | | 10 + sarg | | 4 + sed | [] | 35 + sharutils | | 13 + shishi | | 7 + skribilo | | 7 + solfege | | 21 + solfege-manual | | 9 + spotmachine | | 11 + sudo | | 26 + sudoers | | 22 + sysstat | | 23 + tar | [] | 30 + texinfo | | 17 + texinfo_document | | 13 + tigervnc | | 14 + tin | [] | 7 + tin-man | | 1 + tracgoogleappsa... | [] | 22 + trader | | 12 + util-linux | | 13 + ve | | 14 + vice | | 1 + vmm | | 3 + vorbis-tools | | 13 + wastesedge | | 3 + wcd | | 8 + wcd-man | | 3 + wdiff | [] | 23 + wget | | 21 + wyslij-po | | 14 + xboard | | 10 + xdg-user-dirs | [] [] | 68 + xkeyboard-config | [] | 28 + +-------------+ + 89 teams zh_HK zh_TW + 166 domains 7 42 2809 + + 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 Jun 2014 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://translationproject.org/extra/matrix.html'. + +1.5 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 Lesser 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 +'coordinator@translationproject.org' to make the '.pot' files available +to the translation teams. diff --git a/bash-5.1/AUTHORS b/bash-5.1/AUTHORS new file mode 100644 index 0000000..9ad0ba2 --- /dev/null +++ b/bash-5.1/AUTHORS @@ -0,0 +1,466 @@ +# +# 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/mapfile.def Rocky Bernstein +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/loadables/getconf.c J.T. Conklin +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/unicode1.sub Chet Ramey, John Kearney +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 + +support/checkbashisms Julian Gilbey, Debian Linux team + +lib/readline/colors.c Richard Stallman, David MacKenzie +lib/readline/parse-colors.c Richard Stallman, David MacKenzie diff --git a/bash-5.1/CHANGES b/bash-5.1/CHANGES new file mode 100644 index 0000000..7a47c7c --- /dev/null +++ b/bash-5.1/CHANGES @@ -0,0 +1,10312 @@ +This document details the changes between this version, bash-5.1-rc3, and +the previous version, bash-5.1-rc2. + +1. Changes to Bash + +a. The `assoc_expand_once' option now affects the evaluation of the -v primary + to test and the [[ compound command. + +2. Changes to Readline + +a. Fixed a bug that could cause point to be set beyond the end of the line + buffer when aborting an incremental search. + +3. New Features in Bash + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.1-rc2, and +the previous version, bash-5.1-rc1. + +1. Changes to Bash + +a. Process substitutions started from an interactive shell no longer have their + standard input implicitly redirected from /dev/null. + +b. Fixed an issue with setting the SIGINT trap handler in an interactive shell + when temporarily running $PROMPT_COMMAND non-interactively. + +2. Changes to Readline + +a. Terminals that are named "dumb" or unknown do not enable bracketed paste + by default. + +b. Ensure that disabling bracketed paste turns off highlighting the incremental + search string when the search is successful. + +3. New Features in Bash + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.1-rc1, and +the previous version, bash-5.1-beta. + +1. Changes to Bash + +a. Fixed an inconsistency in the way HISTCMD is calculated when it's expanded + during a multi-line command. + +b. Modified the change to here-document expansion containing backslash-quoted + double quotes. + +c. Fixed a case where the shells's exit status could be greater than 255. + +d. Modified changed to process substitution so the executed command has its + stdin redirected from /dev/null if it was previously interactive and + reading commands from the terminal. + +2. New Features in Bash + +a. There is a new contributed loadable builtin: asort. + +3. Changes to Readline + +a. Fixed a bug that could cause an application with an application-specific + redisplay function to crash if the line data structures had not been + initialized. + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.1-beta, and +the previous version, bash-5.1-alpha. + +1. Changes to Bash + +a. Fixed a bug that caused name references to variables to not update the + referenced variable's assignment side effects. + +b. Tightened up the parameter transformation error checking for invalid + transformation operators. + +c. System-specific changes for: FreeBSD + +d. A few minor changes to move potential uses of stdio functions out of signal + handling paths. + +e. Make sure SIGCHLD is blocked in all cases where waitchld() is not called + from a signal handler. + +f. Changed `command' builtin processing so it no longer starts an extra process + when run asynchronously (command x &). + +g. Avoid performing tilde expansion after `:' in words that look like assignment + statements when in posix mode. + +h. Slight changes to how the `complete' builtin prints out options and actions + for completion specifications. + +i. Several changes to how `local -' restores the values of options and + $SHELLOPTS. + +j. Don't treat a word in a compound assignment as an assignment statement + unless it has a valid subscript before the `='. + +k. Fixed a bug with the DEBUG trap and process substitution that caused the + terminal's process group to be set incorrectly. + +l. Fixed a bug that left readline's signal handlers installed while running a + shell command from a bindable readline command. + +m. Fixed the `fc' builtin to clamp out of range history specifications at the + boundaries of the history list for POSIX conformance. + +n. Fixed a bug that caused ${foo@a} to treat foo as an unset variable if it + was an array without a value for subscript 0/"0" but had other set + elements. + +o. Fixed a bug that caused the history code to attempt to parse command + substitutions looking for shell comments before adding them to the history, + even while parsing here-documents. + +p. Fixed a bug that could cause a syntax error in a command read by `eval' to + exit an interactive shell. + +2. New Features in Bash + +a. If the hash builtin is listing hashed filenames portably, don't print + anything if the table is empty. + +b. GLOBIGNORE now ignores `.' and `..' as a terminal pathname component. + +c. Bash attempts to optimize away forks in the last command in a function body + under appropriate circumstances. + +d. The globbing code now uses fnmatch(3) to check collation elements (if + available) even in cases without multibyte characters. + +e. The `fg' and `bg' builtins now return an error in a command substitution + when asked to restart a job inherited from the parent shell. + +f. The shell now attempts to unlink all FIFOs on exit, whether a consuming + process has finished with them or not. + +3. Changes to Readline + +a. Make sure that all undo groups are closed when leaving vi insertion mode. + +b. Make sure that the vi-mode `C' and `c' commands enter insert mode even if + the motion command doesn't have any effect. + +c. Fixed several potential memory leaks in the callback mode context handling. + +d. If readline is handling a SIGTTOU, make sure SIGTTOU is blocked while + executing the terminal cleanup code, since it's no longer run in a signal + handling context. + +4. New Features in Readline + +a. The signal cleanup code now blocks SIGINT while processing after a SIGINT. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.1-alpha, and +the previous version, bash-5.0-release. + +1. Changes to Bash + +a. Fixed a bug that caused a posix-mode shell to not exit if the return builtin + was executed outside a function or dot script. + +b. Fixed a bug where `declare +f' could potentially turn off the function + attribute. + +c. Restored bash-4.4 pathname expansion behavior when a word to be expanded had + only backslashes, not any of the other globbing characters. This came after + an extensive POSIX group discussion (interp #1234). + +d. There are more changes to avoid performing word expansions multiple times on + arithmetic expressions. + +e. Fixed a bug with alias expansion when the alias ends with a TAB. + +f. Fixed a bug that caused programmable completion to return an error if the + shell function name supplied as an argument to `complete -F' was invalid. + +g. There are several fixes to buffer overflows found as the result of fuzzing + with random input. + +h. Fixed a bug that caused the edit-and-execute-command editing command to + start with the previous history line if invoked on an empty line. + +i. Fixed a bug that potentially caused `bind --help' to change readline's + output stream. + +j. Turning off posix mode now restores the vi-insertion mode binding for TAB + that was in effect when posix mode was enabled. + +k. Restore the previous state of job control being enabled if `exec' fails in + an interactive shell. + +l. Fixed a bug that caused the terminal's process group to be set incorrectly + if job control was turned off before starting an interactive shell. + +m. Fixed a bug that caused a crash when HISTSIZE=0. + +n. Fixed a word expansion bug that caused null strings on the rhs of expansions + to be discarded incorrectly. + +o. History list management does a better job of handling the situation where + the number of history entries from the current shell session is greater than + the number of entries in the history list. + +p. Fixed a bug that caused the `fc' builtin to attempt to dereference a newly- + freed history entry. + +q. Fixed a bug that made the `Q' variable transformation not work well with + `set -u'. + +r. There are several word expansion fixes for expanding $* and $@ in contexts + where word splitting is not going to be performed, since each positional + parameter must expand to a separate word. + +s. Fixed a bug that could cause ^D to exit bash immediately even if there were + stopped jobs. + +t. Fixed a bug with double-quoting and backslash-quoting strings containing + multibyte characters for reuse. + +u. Fixed a bug that caused the line number to be reported incorrectly if the + shell executed a (command) subshell. + +v. Fixed a bug that caused the shell to fail to reap process substitutions + when they went out of scope, which had unpredictable results. + +w. Fixed a bug that caused null strings in arguments to [[ conditional command + operators to compare incorrectly. + +x. Changed the behavior of `wait' without arguments to only wait for background + processes the current shell instance started, not background children it may + have inherited. + +y. Fixed a bug that could cause command substitution to leave file descriptors + open if the shell received many SIGINTs. + +z. Bash now behaves better if the `**' filename expansion operator encounters a + symbolic link to a directory, avoiding more cases where it might return + duplicate pathnames. + +aa. Programmable completion now canonicalizes directory names in the same way + as bash word completion, so `..' is handled consistently. + +bb. Fixed a bug when using RETURN as the delimiter to the read builtin; it + caused readline to set the binding for RETURN incorrectly. + +cc. Fixed a bug that caused `history -d' to delay printing an out-of-range + error message. + +dd. Fixed a bug with `bash -c command' where `command' ends with an expanded + alias. + +ee. Fixed a bug that could result in `history -n' adding spurious line feeds to + commands in the history list. + +ff. The $RANDOM random number generator now XORs the top and bottom halves of + the internal 32-bit value to introduce more randomness. Setting the shell + compatibility level to 50 or lower undoes this. + +gg. Fixed several problems caused by running the DEBUG trap on simple commands + executed as part of a pipeline. + +ii. Fixed a bug that didn't allow `bind -r' to remove the binding for \C-@. + +jj. Several fixes to the bash-backward-shellword bindable readline command to + behave better when at the last character on the line. + +kk. If `set -x' is enabled, bash doesn't print a command twice if it's run by + the `command' builtin. + +ll. Fixed a bug with printing function definitions containing here documents. + +mm. Fixed a bug that could cause the `bind' builtin to set $? to -1. + +nn. Fixed a bug that didn't reset the timezone information correctly when the + TZ variable was unset. + +oo. Fixed several issues with assigning an associative array variable using a + compound assignment that expands the value of the same variable. + +pp. Fixed several places where the shell set $? without setting PIPESTATUS. + +qq. Fixed a problem with glob bracket expressions containing invalid character + classes, collating symbols, or equivalence classes -- they should not + require a closing right bracket. + +rr. Fixed a bug where running a builtin in a subshell did not run the EXIT trap. + +ss. Fixed several problems with posix-mode variable assignments preceding + shell function calls and posix special builtins, so that they create and + modify variables at the current scope. + +tt. Fix history initialization so `bash +o history' works as expected. + +uu. Fixed a bug in the bindable edit-and-execute-command command that could + interfere with the shell's parsing state. + +vv. Fixed an issue with nested traps running command substitutions in command + lines with command substitutions. + +ww. Fixed a bug with globbing pathnames that contain invalid multibyte + characters (sequences that don't correspond to a character in the current + locale). + +xx. Fixed a bug that caused the shell not to exit if a function definition + failed while errexit was enabled. + +yy. Process substitution processes now get their input from /dev/null, since + they are asynchronous, not interactive, and not jobs. + +zz. Setting nocaseglob no longer turns on case-insensitive regexp matching. + +aaa. Fixed a bug that resulted in extra blank lines being added to some history + entries containing here-documents. + +bbb. Fixed a bug that resulted in incorrect matching of some patterns in word + expansion if they expanded to the empty string. + +ccc. Fixed here-string expansion so it behaves the same as expansion of the + rhs of an assignment statement. + +ddd. Changed here-document parsing to no longer allow the end of the here + document to delimit a command substitution. + +eee. Several fixes to history expansion: multiple :p modifiers work, a ^ word + designator works as part of a range, and a `-' is treated as part of a + search string if it immediately follows a `!'. + +fff. Fixed a bug in pattern substitution with null matches in a string + containing multibyte characters. + +ggg. Unbinding a key sequence bound with `bind -x' now removes the key sequence + from the additional keymap `bind -x' uses. + +hhh. Fixed a bug with command start detection for completion so that it doesn't + mistake brace expansion for the start of a command. + +iii. Fixed a bug that caused local variables with the same name as variables + appearing in a function's temporary environment to not be marked as local. + +jjj. Fixed a bug that could cause SIGCHLD to be blocked when executing return + or exec in the rightmost pipeline element with lastpipe enabled. + +kkk. Fixed a bug that could result in commands without the execute bit set + being added to the command hash table. + +lll. Fixed a bug that allowed non-digits to follow the `#' in a `base#number' + integer constant. + +mmm. Fixed a bug that made `time -- command' attempt to execute `--'. + +nnn. Fixed a couple of bugs with variable transformation using arrays + subscripted with `*' or `@'. + +ooo. A failure to create a variable using `declare' in a function no longer + causes the function to return immediately. + +ppp. Fixed a bug that could cause the := word expansion to add a non-null + value if attempting to assign a null string when double-quoted. + +qqq. Fixed a bug that could cause backslashes quoting double quotes in here + document bodies to not be removed when expanding the body. + +rrr. Fixed a bug that caused commands following a subshell while the shell is + reading input from stdin but not interactive, while job control is + enabled, to be executed twice. + +sss. Fixed a bug where receiving SIGTERM from a different process while + readline was active could cause the shell to terminate. + +ttt. In posix mode, running a trap after the read builtin now sees the exit + status of the read builtin (e.g., 130 after a SIGINT) in $?. + +uuu. Fixed a bug with nameref variables referencing array subscripts used in + arithmetic expressions. + +vvv. Fixed a bug that caused the pipeline process group id to be reset in the + middle of a command list run by a shell started to run a command + substitution. + +www. Restricted shells can no longer read and write history files with pathnames + containing slashes. + +xxx. Fixed a couple of problems with 0 and -0 used as arguments to `fc' when + not listing commands from the history. + +yyy. When `test' is supplied four or more arguments, treat an argument that + looks like an operator (e.g., -e), but is in a place where only a string + is valid, as a string, as it would be when using the POSIX rules, instead + of an operator with a missing argument. + +zzz. There is no `compat50' shopt option. Changes to the shell compatibility + level should use the BASH_COMPAT variable. + +aaaa. Redirection failures with compound commands are now treated as errors + that cause the shell to exit if `errexit' is enabled. + +bbbb. Redirection failure error messages no longer expand the word in the + redirection again. + +cccc. History expansion is no longer performed while parsing a here-document + inside a command substitution. + +2. Changes to Readline + +a. There are a number of fixes that were found as the result of fuzzing with + random input. + +b. Changed the revert-all-at-newline behavior to make sure to start at the end + of the history list when doing it, instead of the line where the user hit + return. + +c. When parsing `set' commands from the inputrc file or an application, readline + now allows trailing whitespace. + +d. Fixed a bug that left a file descriptor open to the history file if the + file size was 0. + +e. Fixed a problem with binding key sequences containing meta characters. + +f. Fixed a bug that caused the wrong line to be displayed if the user tried to + move back beyond the beginning of the history list, or forward past the end + of the history list. + +g. If readline catches SIGTSTP, it now sets a hook that allows the calling + application to handle it if it desires. + +h. Fixed a redisplay problem with a prompt string containing embedded newlines. + +i. Fixed a problem with completing filenames containing invalid multibyte + sequences when case-insensitive comparisons are enabled. + +j. Fixed a redisplay problem with prompt strings containing invisible multibyte + characters. + +k. Fixed a problem with multibyte characters mapped to editing commands that + modify the search string in incremental search. + +l. Fixed a bug with maintaining the key sequence while resolving a bound + command in the presence of ambiguous sequences (sequences with a common + prefix), in most cases while attempting to unbind it. + +m. Fixed several buffer overflows found as the result of fuzzing. + +n. Reworked backslash handling when translating key sequences for key binding + to be more uniform and consistent, which introduces a slight backwards + incompatibility. + +o. Fixed a bug with saving the history that resulted in errors not being + propagated to the calling application when the history file is not writable. + +p. Readline only calls chown(2) on a newly-written history file if it really + needs to, instead of having it be a no-op. + +q. Readline now behaves better when operate-and-get-next is used when the + history list is `full': when there are already $HISTSIZE entries. + +r. Fixed a bug that could cause vi redo (`.') of a replace command not to work + correctly in the C or POSIX locale. + +s. Fixed a bug with vi-mode digit arguments that caused the last command to be + set incorrectly. This prevents yank-last-arg from working as intended, for + example. + +3. New Features in Bash + +a. `bind -x' now supports different bindings for different editing modes and + keymaps. + +b. Bash attempts to optimize the number of times it forks when executing + commands in subshells and from `bash -c'. + +c. Here documents and here strings now use pipes for the expanded document if + it's smaller than the pipe buffer size, reverting to temporary files if it's + larger. + +d. There are new loadable builtins: mktemp, accept, mkfifo, csv, cut/lcut + +e. In posix mode, `trap -p' now displays signals whose disposition is SIG_DFL + and those that were SIG_IGN when the shell starts. + +f. The shell now expands the history number (e.g., in PS1) even if it is not + currently saving commands to the history list. + +g. `read -e' may now be used with arbitrary file descriptors (`read -u N'). + +h. The `select' builtin now runs traps if its internal call to the read builtin + is interrupted by a signal. + +i. SRANDOM: a new variable that expands to a 32-bit random number that is not + produced by an LCRNG, and uses getrandom/getentropy, falling back to + /dev/urandom or arc4random if available. There is a fallback generator if + none of these are available. + +j. shell-transpose-words: a new bindable readline command that uses the same + definition of word as shell-forward-word, etc. + +k. The shell now adds default bindings for shell-forward-word, + shell-backward-word, shell-transpose-words, and shell-kill-word. + +l. Bash now allows ARGV0 appearing in the initial shell environment to set $0. + +m. If `unset' is executed without option arguments, bash tries to unset a shell + function if a name argument cannot be a shell variable name because it's not + an identifier. + +n. The `test -N' operator uses nanosecond timestamp granularity if it's + available. + +o. Bash posix mode now treats assignment statements preceding shell function + definitions the same as in its default mode, since POSIX has changed and + no longer requires those assignments to persist after the function returns + (POSIX interp 654). + +p. BASH_REMATCH is no longer readonly. + +q. wait: has a new -p VARNAME option, which stores the PID returned by `wait -n' + or `wait' without arguments. + +r. Sorting the results of pathname expansion now uses byte-by-byte comparisons + if two strings collate equally to impose a total order; the result of a + POSIX interpretation (#963 and #1070). + +s. Bash now allows SIGINT trap handlers to execute recursively. + +t. Bash now saves and restores state around setting and unsetting posix mode, + instead of having unsetting posix mode set a known state. + +u. Process substitution is now available in posix mode. + +v. READLINE_MARK: a new variable available while executing commands bound with + `bind -x', contains the value of the mark. + +w. Bash removes SIGCHLD from the set of blocked signals if it's blocked at shell + startup. + +x. `test -v N' can now test whether or not positional parameter N is set. + +y. `local' now honors the `-p' option to display all local variables at the + current context. + +z. The `@a' variable transformation now prints attributes for unset array + variables. + +aa. The `@A' variable transformation now prints a declare command that sets a + variable's attributes if the variable has attributes but is unset. + +bb. `declare' and `local' now have a -I option that inherits attributes and + value from a variable with the same name at a previous scope. + +cc. When run from a -c command, `jobs' now reports the status of completed jobs. + +dd. New `U', `u', and `L' parameter transformations to convert to uppercase, + convert first character to uppercase, and convert to lowercase, + respectively. + +ee. PROMPT_COMMAND: can now be an array variable, each element of which can + contain a command to be executed like a string PROMPT_COMMAND variable. + +ff. `ulimit' has a -R option to report and set the RLIMIT_RTTIME resource. + +gg. Associative arrays may be assigned using a list of key-value pairs within + a compound assignment. Compound assignments where the words are not of + the form [key]=value are assumed to be key-value assignments. A missing or + empty key is an error; a missing value is treated as NULL. Assignments may + not mix the two forms. + +hh. New `K' parameter transformation to display associative arrays as key- + value pairs. + +ii. Writing history to syslog now handles messages longer than the syslog max + length by writing multiple messages with a sequence number. + +jj. SECONDS and RANDOM may now be assigned using arithmetic expressions, since + they are nominally integer variables. LINENO is not an integer variable. + +kk. Bash temporarily suppresses the verbose option when running the DEBUG trap + while running a command from the `fc' builtin. + +ll. `wait -n' now accepts a list of job specifications as arguments and will + wait for the first one in the list to change state. + +mm. The associative array implementation can now dynamically increase the + size of the hash table based on insertion patterns. + +nn. HISTFILE is now readonly in a restricted shell. + +oo. The bash malloc now returns memory that is 16-byte aligned on 64-bit + systems. + +4. New Features in Readline + +a. If a second consecutive completion attempt produces matches where the first + did not, treat it as a new completion attempt and insert a match as + appropriate. + +b. Bracketed paste mode works in more places: incremental search strings, vi + overstrike mode, character search, and reading numeric arguments. + +c. Readline automatically switches to horizontal scrolling if the terminal has + only one line. + +d. Unbinding all key sequences bound to a particular readline function now + descends into keymaps for multi-key sequences. + +e. rl-clear-display: new bindable command that clears the screen and, if + possible, the scrollback buffer (bound to emacs mode M-C-l by default). + +f. New active mark and face feature: when enabled, it will highlight the text + inserted by a bracketed paste (the `active region') and the text found by + incremental and non-incremental history searches. This is tied to bracketed + paste and can be disabled by turning off bracketed paste. + +g. Readline sets the mark in several additional commands. + +h. Bracketed paste mode is enabled by default. + +i. Readline tries to take advantage of the more regular structure of UTF-8 + characters to identify the beginning and end of characters when moving + through the line buffer. + +j. The bindable operate-and-get-next command (and its default bindings) are + now part of readline instead of a bash-specific addition. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.0-release, and +the previous version, bash-5.0-rc1. + +1. Changes to Bash + +a. Tilde expansion isn't performed on indexed array subscripts, even for + backwards compatibility. + +b. The shell doesn't exit in posix mode if the eval builtin gets a parse + error when run by the command builtin. + +c. Fixed a bug that caused a shell comment in an alias to not find the end + of the alias properly. + +d. Reverted a change from April, 2018 that caused strings containing + backslashes to be flagged as glob patterns. + +2. Changes to Readline + +3. New Features in Bash + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.0-rc1, and +the previous version, bash-5.0-beta2. + +1. Changes to Bash + +a. Fix to initial word completion detection code. + +b. Fixed a bug that caused issues with assignment statements containing ^A in + the value assigned when IFS contains ^A. + +c. Added a fallback to fnmatch() when strcoll can't correctly deal with + bracket expression character equivalence classes. + +d. Fixed a bug that caused $BASH_COMMAND to contain the trap handler command + when running a trap handler containing [[ or (( commands. + +e. Fixed a bug that caused nameref assignments in the temporary environment + to potentially create variables with invalid names. + +f. Fixed a bug that caused `local -' to turn off alias expansion in scripts. + +g. Fixed a parser issue with a command string containing EOF after an invalid + command as an argument to a special builtin not causing a posix-mode shell + to exit. + +h. Made a slight change to the FNV-1 string hash algorithm used for associative + arrays (corrected the initial seed). + +2. Changes to Readline + +3. New Features in Bash + +a. The `select' command now supports command forms without a word list + following `in'. + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.0-beta2, and +the previous version, bash-5.0-beta. + +1. Changes to Bash + +a. Fixed a bug that could cause a seg fault while parsing a subshell command + inside a command substitution. + +b. Fixed several small memory leaks uncovered by coverity. + +c. Fixed a problem with command substitution inside an interactive shell that + could cause the parent to receive a SIGHUP. + +d. Fixed a problem with using `*' and `@' as subscripts when assigning values + to an associative array with assoc_expand_once enabled. + +e. Fixed a bug that could cause a huge memory allocation when completing a + word beginning with an invalid tilde expansion. + +f. Cleaned up some incompatibilities with bash-4.4 when expanding indexed array + subscripts used in arithmetic expansions when assoc_expand_once is enabled. + +g. The ${parameter@a} expansion will display attributes even if `parameter' is + unset. + +h. Fixed a bug that caused the output of `set' to cut off some variables before + printing the value. + +i. Treat a failure to assign a variable when using the ${x:=value} expansion + as an expansion error, so non-interactive posix-mode shells exit + +j. Fixed a problem when expanding $* in a context where word splitting is not + performed when IFS is NULL. + +k. Temp files used to store here documents are forced readable, no matter what + the user's umask says. + +l. Fixed a problem where an interrupted brace expansion could cause the shell + to attempt to free an invalid memory location. + +m. Make sure to check for any terminating signals after running a trap + handler; don't wait until the next time we process traps. + +n. Fixed a bug that caused "return" to act like a special builtin with respect + to variable assignments even when preceded by "command". + +o. POSIX-mode shells now return failure if the cd builtin fails due to the + absolute directory name being longer than PATH_MAX, instead of trying + again with a relative pathname. + +p. Fixed a problem with FUNCNAME occasionally being visible when not executing + a shell function. + +q. Fixed a problem with the expansions performed on the WORD in the case + command. + +r. Fixed a slight POSIX compatibility when removing "IFS whitespace" during + word splitting and the read builtin. + +s. Fixed a problem with expanding an array with subscript `*' when all the + elements expand to the empty string, and making sure the expansion honors + the `:' specifier. + +2. Changes to Readline + +a. Fixed a bug with adding multibyte characters to an incremental search string. + +b. Fixed a bug with redoing text insertions in vi mode. + +c. Fixed a bug with pasting text into an incremental search string if bracketed + paste mode is enabled. ESC cannot be one of the incremental search + terminator characters for this to work. + +d. Fixed a bug with anchored search patterns when performing searches in vi + mode. + +3. New Features in Bash + +a. Associative and indexed arrays now allow subscripts consisting solely of + whitespace. + +b. `checkwinsize' is now enabled by default. + +c. The `localvar_unset' shopt option is now visible and documented. + +d. The `progcomp_alias' shopt option is now visible and documented. + +e. The signal name processing code now understands `SIGRTMIN+n' all the way + up to SIGRTMAX. + +f. There is a new `seq' loadable builtin. + +g. Trap execution now honors the (internal) max invocations of `eval', since + traps are supposed to be executed as if using `eval'. + +h. The $_ variable doesn't change when the shell executes a command that forks. + +i. The `kill' builtin now supports -sSIGNAME and -nSIGNUM, even though + conforming applications aren't supposed to use them. + +j. POSIX mode now enables the `shift_verbose' option. + +4. New Features in Readline + +a. Readline now allows application-defined keymap names; there is a new public + function, rl_set_keymap_name(), to do that. + +b. The "Insert" keypad key, if available, now puts readline into overwrite + mode. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.0-beta, and +the previous version, bash-5.0-alpha. + +1. Changes to Bash + +a. Fixed a bug that allowed subshells to "inherit" enclosing loops -- this + is where POSIX says the subshell is not "enclosed" by the loop. + +b. Added more UTF-8-specific versions of multibyte functions, and optimized + existing functions if the current locale uses UTF-8 encoding. + +c. In POSIX mode, assignments preceding regular builtins should not persist + when the builtin completes. + +d. Added additional checks to special array assignment (e.g., BASH_ALIASES) + so it can't be used to bypass validity checks performed in other places. + +e. The `!!' history expansion now refers to the previous history entry as + expected, even if used on the second or subsequent line of a multi-line + history entry. + +f. Fixed a bug that could cause the shell to dereference a NULL pointer if + the environment (`environ') is set to NULL. + +g. Bash uses slightly better integer overflow handling for brace sequence + expansion on systems where ints are 32 bits and intmax_t is 64 bits. + +h. Fixed a bug setting attributes for a variable named as an argument to + `declare' that also appears as a nameref in the temporary environment. + +i. Fixed several bugs that could cause assignments to namerefs to create + variables with invalid names. + +j. Fixed a bug that could result in the SIGINT handler being set incorrectly + in asynchronous subshells. + +k. Fixed a bug that could cause `bash -t' to not execute the specified command. + +l. Fixed several bugs that caused the shell to operate on the wrong variable + when using namerefs with the same name as a global variable in shell + functions. + +m. Internal changes to how the shell handles variables with invalid names in + the initial environment and to prevent variables with invalid names from + being added to the environment instead of passing them on to children. + +n. Changes to make sure that an expansion that results in a quoted null string + is reflected in the expansion, even if the word expands to nothing. + +o. Changes to make sure that $* and ${array[*]} (and $@/${array[@]}) expand + the same way after the recent changes for POSIX interpretation 888. + +p. Saving and restoring the positional parameters at function entry and exit + is considerably more efficient; noticeably so when there are large numbers + of positional parameters. + +q. Fixed a bug that caused `lastpipe' and `pipefail' to return an incorrect + status for the pipeline if there was more than one external command in a + loop body appearing in the last pipeline element. + +r. Fixed a bug that caused value conversion errors with the printf builtin's + %u and %f conversion specifications and invalid constants. + +2. Changes to Readline + +a. Added more UTF-8-specific versions of multibyte functions, and optimized + existing functions if the current locale uses UTF-8 encoding. + +b. Fixed a problem with bracketed-paste inserting more than one character and + interacting with other readline functions. + +c. Fixed a bug that caused the history library to attempt to append a history + line to a non-existent history entry. + +d. If using bracketed paste mode, output a newline after the \r that is the + last character of the mode disable string to avoid overwriting output. + +e. Fixes to the vi-mode `b', `B', `w', `W', `e', and `E' commands to better + handle multibyte characters. + +f. Fixed a redisplay problem that caused an extra newline to be generated on + accept-line when the line length is exactly the screenwidth. + +3. New Features in Bash + +a. Bash no longer allows variable assignments preceding a special builtin that + changes variable attributes to propagate back to the calling environment + unless the compatibility level is 44 or lower. + +b. You can set the default value for $HISTSIZE at build time in config-top.h. + +c. The `complete' builtin now accepts a -I option that applies the completion + to the initial word on the line. + +d. The internal bash malloc now uses mmap (if available) to satisfy requests + greater than 128K bytes, so free can use mfree to return the pages to the + kernel. + +e. The shell doesn't automatically set BASH_ARGC and BASH_ARGV at startup + unless it's in debugging mode, as the documentation has always said, but + will dynamically create them if a script references them at the top level + without having enabled debugging mode. + +f. The localvar_inherit option will not attempt to inherit a value from a + variable of an incompatible type (indexed vs. associative arrays, for + example). + +g. The `globasciiranges' option is now enabled by default; it can be set to + off by default at configuration time. + +4. New Features in Readline + +a. The history expansion library now understands command and process + substitution and extended globbing and allows them to appear anywhere in a + word. + +b. The history library has a new variable that allows applications to set the + initial quoting state, so quoting state can be inherited from a previous + line. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-5.0-alpha, and +the previous version, bash-4.4-release. + +1. Changes to Bash + +a. Fixed a bug that could cause traps in background jobs to give the terminal + to the wrong process group. + +b. Fixed a bug that caused `kill -l 0' to print an out-of-range error. + +c. Fixed a problem that could result in here-documents being displayed in + the wrong order. + +d. Fixed a number of out-of-bounds and free memory read errors found via + fuzzing. + +e. Fixed a subshell inheritance problem that could cause a subshell to wait for + the wrong process. + +f. Fixed a bug that caused SHLVL to be incremented one too many times when + creating subshells. + +g. A job dying due to SIGINT can now interrupt sourcing a file in a shell with + job control enabled. + +h. Fixed a spurious warning about unterminated ${ or $( constructs during + word completion. + +i. The shell no longer runs traps if a signal arrives while reading command + substitution output. + +j. Fixed an arithmetic expansion error that could allow ++var++ as valid + syntax. + +k. Fixed an error that allowed out-of-bounds references to the directory stack. + +l. The shell does a better job of saving multi-line history entries with + embedded comments. + +m. Fixed a bug that could cause quoted bracket expressions in regular expression + arguments to `[[' to not match correctly. + +n. Fixed a bug that could cause an IFS character in a word to result in an + extra '\001' character in the expansion. + +o. A trailing backslash in a glob pattern can match a trailing backslash in the + string. + +p. Fixed a memory leak in the process creation code path when job control is + enabled. + +q. Fixed a bug that caused `printf' to output broken surrogate pairs for + Japanese locales. + +r. Fixed a bug that caused a SIGINT generated from `kill' in a dot script to + kill an interactive shell. + +s. Fixed a bug that could cause the `read' builtin to not fully read a + multibyte character. + +t. Fixed a bug that could cause identifiers to be evaluated in conditional + arithmetic expressions even when evaluation is suppressed. + +u. Fixed a bug that could result in command substitution, when executed in a + context where word splitting is not performed, to leave a stray '\001' + character in the string. + +v. Fixed a bug that could cause history expansion to be disabled in a non- + interactive shell even if `-o histexpand' is supplied at startup. + +w. Fixed a bug that caused `read -N' to strip leading whitespace IFS characters. + +x. Fixed a bug that caused spurious tilde expansion in arithmetic expressions. + +y. If indirect expansion attempts to indirectly reference through an unset + variable, report an error. + +z. Added a guard to prevent the shell from looping while receiving an endless + stream of SIGTTIN at shell startup. + +aa. Fixed a bug with parsing here documents inside a command substitution when + looking for the closing delimiter. + +bb. Fixed a bug that caused printf to not quote all characters in the + current locale when using the `%q' format specifier. + +cc. Fixed a bug with bash's internal buffered I/O system that caused the input + pointer to not be reset when read(2) returned an EOF. + +dd. Bash now installs its SIGWINCH signal handler with SA_RESTART, so it will + not interrupt open/read/write system calls. + +ee. The ERR trap now reports line numbers more reliably. + +ff. The shell no longer tries to manipulate the terminal process group if a + command or process substitution is killed by SIGTERM when job control is + enabled. + +gg. Fixed a bug that caused extglob patterns to match filenames beginning with + a period. + +hh. File descriptors open for writing to here documents are no longer available + to subshells. + +ii. Make sure word completion doesn't perform command or process substitution. + +jj. Fixed a bug with parsing $$'...' inside a command substitution. + +kk. Fixed a bug that caused bash to remove backslash-newline pairs from the + body of a here-document with a quoted delimiter inside a command + substitution. + +ll. Fixed a bug that could cause the shell to hang when adding a pid to the + table of background process exit statuses. + +mm. Fixed a bug that could cause 0x01 characters to be doubled in the output + of process substitution. + +nn. Restricted shells now clear the hash table before making the PATH variable + read-only. + +oo. There are a number of changes to the expansion of $* and $@ in contexts + where word splitting does not occur (quoted and unquoted), with IFS set + to NULL or a non-standard value, mostly to deal with the consequences of + the behavior defined in Posix interpretation 888. + +pp. There are a number of changes to nameref variable handling to avoid + creating variables with invalid names. + +qq. A non-interactive posix mode shell no longer exits when an assignment + statement fails if the assignment is utimately being performed by the + `command' builtin. + +rr. When using character class names for globbing, don't allow case + insensitivity, even if nocaseglob is enabled. + +ss. Fixed a bug that allowed some redirections to stay in place if a later + redirection failed. + +tt. Fixed a bug in how command and process substitutions are recognized within + other parameter expansions. + +uu. Fixed a bug that caused bash to loop under certain circumstances when + performing arithmetic expansion on a variable whose value is an invalid + expression. + +vv. Fixed a bug that could cause bash to expand aliases inappropriately while + parsing compound commands like `case'. + +ww. Fixed a bug that could cause `read -N' to fail to read complete multibyte + characters, even when the sequences are incomplete or invalid, with or + without readline. + +xx. Fixed a bug that could cause `case' to fail to match patterns containing + 0x01 characters. + +yy. Fixed a bug that caused exported functions to contain stray 0x01 characters. + +zz. Fixed some inconsistencies with how the history number is handled in the + various prompt strings. + +aaa. Fixed a bug that could cause a core dump if READLINE_LINE was unset + inside a shell function bound to a key sequence with `bind -x'. + +bbb. Fixed a bug that could cause bash to not read a token terminator correctly + if a command substitution was used inside an arithmetic `for' command. + +ccc. Fixed problems that could occur with a fatal arithmetic expansion error + in a context (like prompt expansion) where you can't jump back to the + top level. + +ddd. Expression errors in arithmetic `for' commands are treated more like + shell syntax errors. + +eee. Fixed a parser synchronization error resulting from a syntax error + followed immediately by an EOF. + +fff. When executing a shell function, the first line in the function ($LINENO) + is line 1 instead of line 0, as Posix requires. + +ggg. In Posix mode, bash will canonicalize the value of PWD it inherits from + the environment and use that to set its idea of the current directory. + +hhh. If LINENO is exported, bash needs to regenerate its value each time it + constructs the environment. + +iii. Fixed a bug with restoring the SIGINT handler when using `wait -n'. + +jjj. Make sure the `coproc' command returns an appropriate status if the NAME + argument is invalid. + +kkk. Fixed a problem with arithmetic expressions containing array references + that contain arithmetic expressions with syntax errors. + +lll. The `select' command and help builtin will use $COLUMNS before the window + size returned from the kernel as the terminal width. + +mmm. `read -n 0' and `read -N 0' now try a zero-length read in an attempt to + detect file descriptor errors. + +nnn. The `read' builtin now does a better job of acting on signals that don't + interrupt read(2). + +ooo. Fixed some cases where `printf -v' did not return failure status on a + variable assignment error. + +ppp. Fixed temporary environment propagation back to the current environment + so that it doesn't happen for special builtins run by the `command' + builtin. + +qqq. Fixed a bug when searching for the end of a here-document delimiter in a + command substitution. + +rrr. Fixed a bug that could cause `cd ${DIRSTACK[0]}' to fail. + +sss. Fixed a bug that could cause reserved words to not be recognized in a + for statement without the `in' inside a command substitution. + +ttt. Fixed a bug that could cause a double-free in a timed command with an + expansion error. + +uuu. Fixed a bug that could cause a core dump if a script switches from a UTF-8 + locale to a different locale after displaying a lone surrogate character. + +vvv. Fixed cases where bash prematurely removed FIFOs attached to process + substitutions. + +www. Fixed a problem with calculating the size of the table that stores exit + statuses from background processes when the child process resource limit + is very large. + +xxx. Fixed a memory leak with functions using `return' when using FIFOs for + standard input. + +yyy. `wait' without arguments attempts to wait for all active process + substitution processes. + +zzz. Fixed a bug where an indirect parameter was subjected to word splitting + when trying to find the indirected variable name. + +aaaa. Fixed a bug that could allow restricted shell users to add commands to + the hash table. + +bbbb. When using the `!(patlist)' extended globbing operator, a filename + beginning with a `.' that doesn't match any of the patterns is not + returned as a match if leading dots must be matched explicitly. + +cccc. Fixed a bug that could cause line number and source file information for + a function definition to be incorrect if there are multiple definitions. + +dddd. Fixed a bug that could cause builtins like `readonly' to behave + differently when applied to arrays and scalar variables within functions. + +eeee. Fixed a bug that could cause alias expansion to add an extra space to + a quoted string that begins outside the alias expansion. + +ffff. Fixed a bug that could result in unwanted alias expansion after timing + the null command. + +gggg. Fixed a bug that could cause a core dump if a timestamp in a history + file overflowed a time_t. + +hhhh. Restricted shells can no longer redirect from /dev/tcp or /dev/udp, since + the kernel calls make those file descriptors read-write. + +iiii. Fixed a problem with splitting double-quoted words for programmable + completion when the double quote immediately follows another word + delimiter. + +jjjj. Fixed a bug resulting in a use-after-free if two file descriptors share + the same input buffer. + +kkkk. The error message resulting from ${x:?} and ${x?} now differs depending + on whether the variable is null or unset. + +llll. In Posix mode, the shell exits if a variable assignment fails and precedes + an empty simple command (after expansion). + +mmmm. Fixed a timing problem with SIGALRM that could cause the read builtin to + drop characters. + +nnnn. Added code to deal with kill(2) failing to send the shell a fatal signal + due to Linux pid namespace peculiarities. + +oooo. Fixed a bug that made \C-@ (NUL) unusable in key sequences used for + `bind -x' commands. + +pppp. Fixed a bug that could cause SIGINT recursion when running an external + command in a trap the shell takes after a command exits due to SIGINT. + +qqqq. Make sure the shell turns off job control before running the command- + not-found handle, so the command doesn't try to manipulate process + groups. + +rrrr. Fixed a problem with timing process substitutions that caused the shell + to print timing information for the calling command. + +ssss. Fixed a bug that caused backquotes in a here-document delimiter to mark + the delimiter as quoted (inhibiting expansion of the here-document + contents). + +tttt. Fixed several problems with 0x01 and 0x177 in case pattern lists and + conditional command pattern matches. + +uuuu. Fixed a bug that could cause the pattern matching engine to not recognize + locale-specific character classes. + +vvvv. The auto-configuration now tests for /dev/stdin and /dev/fd independently. + +wwww. The `globstar' code now skips over symbolic links to directories, + preventing them from being scanned twice. + +xxxx. When running `bind -x' commands, bash now sets READLINE_POINT based on + the number of characters in the readline line buffer, not the number of + bytes. + +yyyy. Fixed a problem that could cause recursive trap evaluation of the RETURN + trap when using `eval return'. + +zzzz. Fixed a bug with expanding 0x01 in an unquoted here-document. + +aaaaa. The process substitution code now closes and unlinks FIFOs when the + process on the other side exits, in order to prevent SIGPIPE or + waiting until a FIFO opened for read has a writer. + +bbbbb. Fixed a bug with recursive calls to the parser overwriting the token in + an {id}>foo construct. + +ccccc. After a Posix discussion, the pattern matching engine just skips over + invalid character classes in bracket expressions, instead of matching + them like individual characters in the expression. + +ddddd. Fixed a posix-mode problem with variable scoping when creating variables + from assignment statements preceding special builtins. + +eeeee. Fixed a bug that could cause patterns containing backslashes to not be + run through the pattern matching engine. + +fffff. Fixed a bug that could cause redirections to compound commands to not + be `undone' if the file descriptor in the redirection was closed when + the redirection was initially processed. + +ggggg. Fixed a bug that could cause buffer corruption when using `bind -x' in + a command execute as a result of a key binding installed by `bind -x'. + +2. Changes to Readline + +a. Added a guard to prevent nested macros from causing an infinite expansion + loop. + +b. Instead of allocating enough history list entries to hold the maximum list + size, cap the number allocated initially. + +c. Added a strategy to avoid allocating huge amounts of memory if a block of + history entries without timestamps occurs after a block with timestamps. + +d. Added support for keyboard timeouts when an ESC character is the last + character in a macro. + +e. There are several performance improvements when in a UTF-8 locale. + +f. Readline does a better job of preserving the original set of blocked + signals when using pselect() to wait for input. + +g. Fixed a bug that caused multibyte characters in macros to be mishandled. + +h. Fixed several bugs in the code that calculates line breaks when expanding + prompts that span several lines, contain multibyte characters, and contain + invisible character seqeuences. + +i. Fixed several bugs in cursor positioning when displaying lines with prompts + containing invisible characters and multibyte characters. + +j. When performing case-insensitive completion, Readline no longer sorts the + list of matches unless directed to do so. + +k. Fixed a problem with key sequences ending with a backslash. + +l. Fixed out-of-bounds and free memory read errors found via fuzzing. + +m. Fixed several cases where the mark was set to an invalid value. + +n. Fixed a problem with the case-changing operators in the case where the + lower and upper case versions of a character do not have the same number + of bytes. + +o. Handle incremental and non-incremental search character reads returning EOF. + +p. Handle the case where a failing readline command at the end of a multi-key + sequence could be misinterpreted. + +q. The history library now prints a meaningful error message if the history + file isn't a regular file. + +r. Fixed a problem with vi-mode redo (`.') on a command when trying to replace + a multibyte character. + +s. The key binding code now attempts to remove a keymap if a key unbinding + leaves it empty. + +t. Fixed a line-wrapping issue that caused problems for some terminal + emulators. + +u. If there is a key bound to the tty's VDISCARD special character, readline + disables VDISCARD while it is active. + +v. Fixed a problem with exiting bracketed paste mode on terminals that assume + the bracketed paste mode character sequence contains visible characters. + +w. Fixed a bug that could cause a key binding command to refer to an + uninitialized variable. + +3. New Features in Bash + +a. The `wait' builtin can now wait for the last process substitution created. + +b. There is an EPOCHSECONDS variable, which expands to the time in seconds + since the Unix epoch. + +c. There is an EPOCHREALTIME variable, which expands to the time in seconds + since the Unix epoch with microsecond granularity. + +d. New loadable builtins: rm, stat, fdflags. + +e. BASH_ARGV0: a new variable that expands to $0 and sets $0 on assignment. + +f. When supplied a numeric argument, the shell-expand-line bindable readline + command does not perform quote removal and suppresses command and process + substitution. + +g. `history -d' understands negative arguments: negative arguments offset from + the end of the history list. + +h. The `name' argument to the `coproc' reserved word now undergoes word + expansion, so unique coprocs can be created in loops. + +i. A nameref name resolution loop in a function now resolves to a variable by + that name in the global scope. + +j. The `wait' builtin now has a `-f' option, which signifies to wait until the + specified job or process terminates, instead of waiting until it changes + state. + +k. There is a define in config-top.h that allows the shell to use a static + value for $PATH, overriding whatever is in the environment at startup, for + use by the restricted shell. + +l. Process substitution does not inherit the `v' option, like command + substitution. + +m. If a non-interactive shell with job control enabled detects that a foreground + job died due to SIGINT, it acts as if it received the SIGINT. + +n. The SIGCHLD trap is run once for each exiting child process even if job + control is not enabled when the shell is in Posix mode. + +o. A new shopt option: localvar_inherit; if set, a local variable inherits the + value of a variable with the same name at the nearest preceding scope. + +p. `bind -r' now checks whether a key sequence is bound before binding it to + NULL, to avoid creating keymaps for a multi-key sequence. + +q. A numeric argument to the line editing `operate-and-get-next' command + specifies which history entry to use. + +r. The positional parameters are now assigned before running the shell startup + files, so startup files can use $@. + +s. There is a compile-time option that forces the shell to disable the check + for an inherited OLDPWD being a directory. + +t. The `history' builtin can now delete ranges of history entries using + `-d start-end'. + +u. The `vi-edit-and-execute-command' bindable readline command now puts readline + back in vi insertion mode after executing commands from the edited file. + +v. The command completion code now matches aliases and shell function names + case-insensitively if the readline completion-ignore-case variable is set. + +w. There is a new `assoc_expand_once' shell option that attempts to expand + associative array subscripts only once. + +x. The shell only sets up BASH_ARGV and BASH_ARGC at startup if extended + debugging mode is active. The old behavior of unconditionally setting them + is available as part of the shell compatibility options. + +y. The `umask' builtin now allows modes and masks greater than octal 777. + +z. The `times' builtin now honors the current locale when printing a decimal + point. + +aa. There is a new (disabled by default, undocumented) shell option to enable + and disable sending history to syslog at runtime. + +4. New Features in Readline + +a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as + Posix specifies (uses fnmatch(3) if available). + +b. There are new `next-screen-line' and `previous-screen-line' bindable + commands, which move the cursor to the same column in the next, or previous, + physical line, respectively. + +c. There are default key bindings for control-arrow-key key combinations. + +d. A negative argument (-N) to `quoted-insert' means to insert the next N + characters using quoted-insert. + +e. New public function: rl_check_signals(), which allows applications to + respond to signals that readline catches while waiting for input using + a custom read function. + +f. There is new support for conditionally testing the readline version in an + inputrc file, with a full set of arithmetic comparison operators available. + +g. There is a simple variable comparison facility available for use within an + inputrc file. Allowable operators are equality and inequality; string + variables may be compared to a value; boolean variables must be compared to + either `on' or `off'; variable names are separated from the operator by + whitespace. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.4-release, and +the previous version, bash-4.4-rc2. + +1. Changes to Bash + +a. Fixed a bug that could potentially result in a crash due to an integer + overflow. + +b. Fixed a bug in where commands printed due to `set -x' could be incorrectly + quoted if being printed in contexts where they haven't yet been expanded. + +c. Fixed several memory leaks. + +d. Fixed a bug that could potentially cause the terminal attributes to be + set incorrectly by a command run from a programmable completion. + +e. Fixed several potential buffer overflow issues in the word expansion code. + +2. Changes to Readline + +3. New Features in Bash + +4. New Features in Readline +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.4-rc2, and +the previous version, bash-4.4-beta2. + +1. Changes to Bash + +a. Fixed an out-of-bounds read in the redirection operator completion code. + +b. Fixed execution context so `until continue' doesn't disable execution for + subsequent commands. + +c. Fixed trap handling code so traps don't inherit a command's temporary + environment. + +d. Fixed a bug that resulted in incorrect line numbers when a function is + defined as part of another function's execution. + +e. Fixed a bug in the expansion of ${a[@]} in contexts where word splitting + is not performed and $IFS is not the default. + +f. Fixed a bug that caused ''"$@" to not expand to an empty argument when + there are no positional parameters. + +g. Fixed a bug that caused a shell compiled without job control to use the + incorrect exit status for builtin commands preceded by a command executed + from the file system that causes the shell to call waitpid(). + +h. Improved word completion for quoted strings containing unterminated command + substitutions with embedded double quotes. + +2. Changes to Readline + +a. Fixed a bug that caused mode strings to be displayed incorrectly if the + prompt was shorter than the mode string. + +3. New Features in Bash + +a. Using ${a[@]} or ${a[*]} with an array without any assigned elements when + the nounset option is enabled no longer throws an unbound variable error. + +4. New Features in Readline + +a. New application-callable function: rl_pending_signal(): returns the signal + number of any signal readline has caught but not yet handled. + +b. New application-settable variable: rl_persistent_signal_handlers: if set + to a non-zero value, readline will enable the readline-6.2 signal handler + behavior in callback mode: handlers are installed when + rl_callback_handler_install is called and removed removed when a complete + line has been read. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.4-beta2, and +the previous version, bash-4.4-rc1. + +1. Changes to Bash + +a. Fixed a memory leak when processing ${!var[@]}. + +b. Fixed a bug that caused subshells to free trap strings associated with + inherited signals. + +c. Inheriting BASHOPTS from the environment now works to force actions + associated with enabling an option, instead of just marking the option + as enabled. + +d. Fixed a bug that allowed assignments to BASH_CMDS when the shell was in + restricted mode. + +e. Fixed a bug caused by an accidental omission of part of the original patch + for EXECIGNORE. + +e. Prompt expansion now quotes the results of the \s, \h, and \H expansions. + +f. Fixed a bug that caused parsing errors in command substitutions with + consecutive case statements separated by newlines. + +g. Updated logic used to decide whether bash is running inside an emacs + terminal emulator to work with future emacs versions. + +h. Fixed two extended pattern matching bugs caused by premature short- + circuiting. + +i. Fixed a memory leak in the code that removes duplicate history entries. + +j. There are a number of bug fixes to coproc, mapfile, declare, unset, + and assignment statements that prevent nameref variables from creating + and unsetting variables with invalid names. + +k. Fixed a bug that caused variables to be inadvertently marked as both an + associative and an indexed array. + +l. Fixed a bug that caused `bash -c' to not run a trap specified in the + command string. + +j. There are a number of bug fixes to coproc, mapfile, declare, and assignment + statements that prevent nameref variables from overwriting or modifying + attributes of readonly variables. + +k. Fixed a bug that caused command substitution to attempt to set the + terminal's process group incorrectly. + +l. Fixed a bug that could cause prompt string expansion to display error + messages when the `nounset' shell option is set. + +m. Fixed a bug that caused "$@" to not expand to an empty string under the + circumstances when Posix says it should ("${@-${@-$@}}"). + +n. Fixed several bugs caused by referencing nameref variables whose values + are names of unset variables (or names that are valid for referencing + but not assignment), including creating variables in the temporary + environment. + +o. Function tracing and error tracing are disabled if --debugger is supplied + at startup but the shell can't find the debugger start file. + +p. Fixed a bug when IFS is used as the control variable in a for statement. + +q. Fixed a bug with SIGINT received by a command substitution in an interactive + shell. + +r. The checks for nameref variable self-references are more thorough. + +s. Fixed several bugs with multi-line aliases. + +t. Fixed `test' to handle the four-argument case where $1 == '(' and + $4 == ')'. + +u. Fixed a bug in the expansion of $* in the cases where word splitting is + not performed. + +v. Fixed a bug in execution of case statements where IFS includes the + pattern matching characters. + +2. Changes to Readline + +a. When refreshing the line as the result of a key sequence, Readline attempts + to redraw only the last line of a multiline prompt. + +b. Fixed an issue that caused completion of git commands to display + incorrectly when using colored-completion-prefix. + +c. Fixed several redisplay bugs having to do with multibyte characters and + invisible characters in prompt strings. + +3. New Features in Bash + +a. Value conversions (arithmetic expansions, case modification, etc.) now + happen when assigning elements of an array using compound assignment. + +b. There is a new option settable in config-top.h that makes multiple + directory arguments to `cd' a fatal error. + +c. Bash now uses mktemp() when creating internal temporary files; it produces + a warning at build time on many Linux systems. + +4. New Features in Readline + +a. The default binding for ^W in vi mode now uses word boundaries specified + by Posix (vi-unix-word-rubout is bindable command name). + +b. rl_clear_visible_line: new application-callable function; clears all + screen lines occupied by the current visible readline line. + +c. rl_tty_set_echoing: application-callable function that controls whether + or not readline thinks it is echoing terminal output. + +d. Handle >| and strings of digits preceding and following redirection + specifications as single tokens when tokenizing the line for history + expansion. + +e. Fixed a bug with displaying completions when the prefix display length + is greater than the length of the completions to be displayed. + +f. The :p history modifier now applies to the entire line, so any expansion + specifying :p causes the line to be printed instead of expanded. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.4-rc1, and +the previous version, bash-4.4-beta. + +1. Changes to Bash + +a. Fixed several problems with bash completion not special-casing bash syntax + constructs. + +b. Fixed a bug that caused the mapfile builtin to not create array variables + when a variable of the same name appears in the temporary environment. + +c. Fixed a bug that caused prompt expansion to loop when PS1 contained a + syntax error. + +d. Fixed a bug that caused the ${array[@]@A} expansion to split the results + even when double-quoted. + +e. There is a new implementation of the code that saves the last CHILD_MAX + exited background pids so their status can be queried later. + +f. Bash-4.4 can now be configured and built on very old versions of Solaris 2. + +g. Fixed problems with --help support for several builtins. + +h. Fixed values added to BASH_SOURCE and BASH_LINENO for functions inherited + from the environment. + +i. Fixed a bug that caused background processes run from non-interactive shells + with job control enabled to place the terminal in the wrong process group + under certain circumstances. + +j. Fixed a bug that caused `fc' to return an incorrect exit status when + executing commands from the history list. + +k. Fixed a bug that caused the shell to exit when a process substitution + received a SIGINT when run in certain terminal emulators. + +l. EXECIGNORE now honors the setting of `extglob' when attempting to match + executable names. + +m. Fixed a bug where `return' used the wrong exit status when executed in a + DEBUG trap. + +n. Fixed a bug that caused a command containing a here-document and an escaped + newline to be stored in the history list incorrectly. + +o. Fixed a bug that caused set -e to be honored in cases of builtins invoking + other builtins when it should be ignored. + +p. Fixed a bug that caused `readonly' and `export' to create local array + variables when used within shell functions. + +q. Fixed a bug that allowed subshells begun to execute process substitutions + to have access to the command's temporary environment. + +r. Fixed a bug that could cause the shell to dump core when receiving a + SIGCHLD for which a trap has been set while running in posix mode. + +s. Fixed a bug that caused bash to not restore BASH_ARGC, BASH_ARGV, + BASH_SOURCE, BASH_LINENO, and FUNCNAME if the shell received a SIGINT + while reading commands from a file while executing `.'. + +t. Fixed a bug that caused the `-o history' option to have no effect when + supplied on the command line when starting a new shell. + +u. Fixed a bug that caused history expansions occurring in command + substitutions to not be performed. + +v. Fixed a bug that caused `eval' run in a non-interactive shell to disable + history expansion for the remainder of the shell script, even if the script + had previously enabled it. + +w. Fixed a bug that caused "$@" to not expand to multiple words when IFS is set + to the empty string. + +x. Fixed a bug that caused process and command substitution to inherit output + buffered in the stdio library but not written. + +y. Fixed a bug that caused a terminating signal received during `echo' to run + an exit trap in a signal handler context. + +z. Fixed a bug that caused a builtin command containing a process substitution + to return the wrong exit status. + +aa. Fixed a bug that caused `()' subshells with piped input to incorrectly + redirect the standard input of some of the commands in the subshell from + /dev/null. + +bb. The history builtin now uses more descriptive error messages for missing or + invalid timestamps. + +2. Changes to Readline + +a. The history file writing functions only attempt to create and use a backup + history file if the history file exists and is a regular file. + +b. Fixed an out-of-bounds read in readline's internal tilde expansion + interface. + +c. Fixed several redisplay bugs with prompt strings containing multibyte + and non-visible characters whose physical length is longer than the screen + width. + +d. Fixed a redisplay bug with prompt strings containing invisible characters + whose physical length exceeds the screen width and using incremental search. + +e. Readline prints more descriptive error messages when it encounters errors + while reading an inputrc file. + +f. Fixed a bug in the character insertion code that attempts to optimize + typeahead when it reads a character that is not bound to self-insert and + resets the key sequence state. + +3. New Features in Bash + +a. BASH_COMPAT and FUNCNEST can be inherited and set from the shell's initial + environment. + +b. inherit_errexit: a new `shopt' option that, when set, causes command + substitutions to inherit the -e option. By default, those subshells disable + -e. It's enabled as part of turning on posix mode. + +c. New prompt string: PS0. Expanded and displayed by interactive shells after + reading a complete command but before executing it. + +d. Interactive shells now behave as if SIGTSTP/SIGTTIN/SIGTTOU are set to + SIG_DFL when the shell is started, so they are set to SIG_DFL in child + processes. + +e. Posix-mode shells now allow double quotes to quote the history expansion + character. + +f. OLDPWD can be inherited from the environment if it names a directory. + +g. Shells running as root no longer inherit PS4 from the environment, closing + a security hole involving PS4 expansion performing command substitution. + +h. If executing an implicit `cd' when the `autocd' option is set, bash will + now invoke a function named `cd' if one exists before executing the `cd' + builtin. + +4. New Features in Readline + +a. If an incremental search string has its last character removed with DEL, + the resulting empty search string no longer matches the previous line. + +b. If readline reads a history file that begins with `#' (or the value of + the history comment character) and has enabled history timestamps, the + history entries are assumed to be delimited by timestamps. This allows + multi-line history entries. + +c. Readline now throws an error if it parses a key binding without a + terminating `:' or whitespace. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.4-beta, and +the previous version, bash-4.4-alpha. + +1. Changes to Bash + +a. Fixed two bugs that caused out-of-bounds reads when skipping over assignment + statements while finding the word on which to perform programmable + completion. + +b. Fixed a memory leak in programmable completion. + +c. Fixed a bug that could cause the shell to crash when interrupting the + wait builtin. + +d. Fixed a bug that caused ${!vvv@} to be interpreted as introducing the new + `@' operator. + +e. Fixed a bug that caused the && and || operators to be incorrectly optimized. + +f. The shell now undoes redirections before exiting the shell when the `-e' + option is enabled, and a shell function fails. + +g. History expansion now skips over the history expansion character in command + and process substitution. + +h. Fixed a bug that caused stray '\001' characters to be added to the output + of `declare -p'. + +i. Fixed a memory leak when processing declare commands that perform compound + array assignments. + +j. Fixed a bug that could cause the shell to crash when reading input from a + file and the limit on open file descriptors is high. + +k. Fixed a bug that caused the ERR and RETURN traps to be unset if they were + set in a shell function but unset previously. + +l. Fixed a bug that caused several signals to be ignored if `exec' failed in + an interactive shell. + +m. A posix-mode non-interactive shell now considers a parameter expansion error + to be a fatal error. + +n. The `time' command now prints timing statistics for failed commands when + the -e option is enabled. + +o. Fixed a bug that caused the shell to crash when attempting to indirectly + expand a shell variable with an invalid name. + +p. Fixed a bug that caused the shell to crash when running a trap containing + a process substitution. + +q. Bash now prints the keyword `function' before a function with the same name + as a reserved word when using `declare -f' to avoid parse errors when + reusing the output as input. + +r. Fixed a bug that caused the shell to crash when using declare -g to attempt + to redefine an existing global indexed array variable as an associative + array. + +s. Fixed a memory leak that occurred when interrupting brace expansions + generating a sequence. + +t. Fixed a bug that resulted in alias expansion in redirections. + +u. The `declare -a' and `declare -A' commands now print fewer warnings when + attempting to create and initialize an array at the same time, but + relying on word expansions to construct the compound assignment. + +v. The `help' builtin now behaves better in locales where each wide + character occupies more than one display column. + +w. The `read' builtin no longer has a possible race condition when a timeout + occurs. + +x. Fixed several expansion problems encountered when IFS="'". + +y. Fixed a problem with the expansion of $'\c?'. + +z. Bash no longer splits the expansion of here-strings, as the documentation + has always said. + +aa. Bash now puts `s' in the value of $- if the shell is reading from standard + input, as Posix requires. + +bb. Fixed a bug that caused the shell to crash if invoked with a NULL + environment. + +cc. The shell now only trusts an inherited value for $PWD if it begins with a + `/'. + +dd. Fixed a memory leak when creating local array variables and assigning to + them using compound assignment with the `declare' builtin. + +ee. Fixed a bug that could cause the shell to crash when processing nested here + documents inside a command substitution. + +ff. Array keys and values are now displayed using $'...' quoting where + appropriate. + +gg. Fixed a bug that could cause the shell to crash if the replacement string + in pattern substitution was NULL. + +hh. Fixed a bug that could cause the shell to crash if a command substitution + contained a non-fatal syntax error. + +ii. Fixed a bug that could cause the shell to crash if variable indirection + resulted in a NULL variable. + +jj. Fixed a bug that could cause the shell to crash if a long string contained + multiple unterminated parameter expansion constructs. + +kk. Improved the code that acts on SIGINT received while waiting for a child + process only if the child exits due to SIGINT. + +ll. $BASH_SUBSHELL now has more consistent values in asynchronous simple + commands. + +2. Changes to Readline + +a. Colored completion prefixes are now displayed using a different color, less + likely to collide with files. + +b. Fixed a bug that caused vi-mode character search to misbehave when + running in callback mode. + +c. Fixed a bug that caused output to be delayed when input is coming from a + macro in vi-mode. + +d. Fixed a bug that caused the vi-mode `.' command to misbehave when redoing + a multi-key key sequence via a macro. + +e. Fixed a bug that caused problems with applications that supply their own + input function when performing completion. + +f. When read returns -1/EIO when attempting to read a key, return an error + instead of line termination back to the caller. + +g. Updated tty auditing feature based on patch from Red Hat. + +h. Fixed a bug that could cause the history library to crash on overflows + introduced by malicious editing of timestamps in the history file. + +3. New Features in Bash + +a. `make install' now installs the example loadable builtins and a set of + bash headers to use when developing new loadable builtins. + +b. `enable -f' now attempts to call functions named BUILTIN_builtin_load when + loading BUILTIN, and BUILTIN_builtin_unload when deleting it. This allows + loadable builtins to run initialization and cleanup code. + +c. There is a new BASH_LOADABLES_PATH variable containing a list of directories + where the `enable -f' command looks for shared objects containing loadable + builtins. + +d. The `complete_fullquote' option to `shopt' changes filename completion to + quote all shell metacharacters in filenames and directory names. + +e. The `kill' builtin now has a `-L' option, equivalent to `-l', for + compatibility with Linux standalone versions of kill. + +4. New Features in Readline +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.4-alpha, and +the previous version, bash-4.3-release. + +1. Changes to Bash + +a. A bug that caused pipelines to be corrupted while running the DEBUG trap + was fixed. + +b. A bug that accidentally omitted the `-R' unary operator from `test' was + fixed. + +c. A bug that could cause the shell to not restore the terminal's process + group on shell exit was fixed. + +d. Several changes were made to programmable completion to accommodate + assumptions made by the bash-completion package. + +e. Bash no longer inhibits C-style escape processing ($'...') while performing + pattern substitution word expansions. + +f. Fixed a bug that caused `return' executed from a trap handler to use the + wrong return status when one was not supplied as an argument. + +g. In Posix mode, defining a function with the same name as a special + builtin is now an error, fatal only when the shell is not interactive. + +h. Fixed a bug that caused compound array assignments to discard unset or null + variables used as subscripts, thereby making it appear as if the index was + not present. + +i. Fixed a bug that caused extended glob patterns to incorrectly match + filenames with a leading `.'. + +j. Fixed a bug involving sign extension when reallocating the input line + after a history expansion, causing segmentation faults. + +k. Bash now does a better job at identifying syntax errors during word + completion and tailoring completion appropriately. + +l. Bash now uses the current locale's decimal point in command timing output. + +m. Fixed a bug that caused segmentation faults while reading here documents if + PS2 contains a command substitution. + +n. There are several changes to how $@ is expanded when unquoted but in a + context where word splitting is not performed (e.g., on the rhs of an + assignment or in a conditional command). + +o. Bash now quotes command hash table entries that contain shell metacharacters + when displaying hash table contents. + +p. Fixed a potential file descriptor leak when dup2() fails while performing a + redirection. + +q. Fixed a bug that caused directory names evaluated during word completion to + be dequoted twice. + +r. Fixed several bugs which could result in indirect variable expansion and + namerefs creating variables with invalid names or referencing variables + set to the empty string. + +s. Fixed a bug that caused bash to not expand $0 in word expansions where it + should. + +t. Fixed a bug that caused bash to perform process substitution if <( + appeared inside an arithmetic context. + +u. Fixed a bug in extglob pattern parsing that caused slashes in the pattern + to be confused as directory names. + +v. Fixed several bugs with treatment of invisible variables (variables with + attributes that are unset because they have never been assigned values). + +w. Fixed a bug that caused the `read' builtin to not clean up readline's + state when using the -e and -t options together and the read timed out. + +x. Fixed a bug that caused the shell to exit with the wrong (but non-zero) + value if a command was not found or was not executable. + +y. Fixed a bug that caused the `time' reserved word to not be recognized as + such in all contexts where it should have been. + +z. Fixed a bug that caused the shell to close process substitution file + descriptors when executing a script without the `#!' leading line. + +aa. Fixed a typo that caused the `compat42' shell option to set the wrong + compatibility level. + +bb. The shell now handles process substitution commands with embedded + parentheses the same way as it does when parsing command substitution. + +cc. Fixed a bug that caused nested pipelines and the `lastpipe' shell option + to produce core dumps. + +dd. Fixed a bug that caused patterns containing `*' to match pathnames in cases + where slashes must be matched explicitly. + +ee. Fixed a problem with patterns containing `:' in colon-separated variables + like GLOBIGNORE. + +ff. Fixed a bug that caused indirect variable expansion using indexed arrays to + always use index 0. + +gg. Fixed a parsing problem that caused quoted newlines immediately following a + command substitution to be mishandled in certain cases. + +hh. Fixed a potential buffer overflow on systems without locale_charset or the + bash replacement. + +ii. Fixed a bug that caused background processes to modify the terminal's + process group under certain circumstances. + +jj. Asynchronous commands now always set $? to 0 and are not affected by + whether or not the command's exit status is being inverted. + +kk. Fixed a problem that caused a line ending with an escaped newline and + containingh a prior `eval' to be incorrectly parsed. + +ll. Fixed an issue with programmable completion and `!' in extglob patterns + used as arguments to `compgen -X'. + +mm. Word completion now treats the two-character token `>|' as requiring + filename expansion. + +nn. Bash no longer expands tildes in $PATH elements while in Posix mode. + +oo. Fixed a bug that caused bash to not clean up readline's state, including + the terminal settings, if it received a fatal signal while in a readline() + call (including `read -e' and `read -s'). + +pp. Fixed bug that caused importing shell functions from the environment to + execute additional commands following the function. + +qq. Fixed a bug that caused the parser to return a lookahead character pushed + back by a previous call, even when on another line. + +rr. Fixed a bug that caused many here-documents or many nested case statements + to overflow an internal stack. + +ss. Changed the way bash encodes exported functions for inclusion in the + environment to avoid name collisions with valid variable names and to + indicate that they are exported functions. + +tt. Fixed a bug that could result in an invalid memory access when processing + a here document delimited by end of file or end of string. + +uu. Fixed a bug that could cause an invalid memory access if a command was run + before initializing the job control framework. + +vv. When in Posix mode, bash prints shell function definitions as Posix + specifies them, without the leading `function' keyword. + +ww. The variable attribute display builtins no longer display variables with + invalid names that were imported from the environment. + +xx. Fixed a bug that could allow `break' or `continue' executed from shell + functions to affect loops running outside of the function. + +yy. Fixed a bug that could cause a restricted shell to attempt to import shell + functions from the environment. + +zz. The shell now allows double-quoted identifiers in arithmetic expressions. + +aaa. Fixed a bug that could allow scalar variables subscripted using [@] in + word expansions to be incorrectly quoted. + +bbb. The shell now makes sure to ignore SIGTSTP/SIGTTIN/SIGTTOU in child + processes if they were ignored at shell startup, even if job control is + in effect. + +ccc. Fixed a bug that could cause $* to be split on spaces when IFS is set to + the empty string. + +ddd. Posix says that expanding $* in a pattern context where the expansion is + double-quoted should not treat $* as if it were double quoted. + +eee. Bash now restores getopts' internal state between calls to getopts even if + a shell function declares a local copy of OPTIND. + +fff. Fixed a bug that could cause `history -r' or `history -n' to read identical + lines from the history file more than once. + +ggg. The commands executed by `bind -x' now redisplay at most the final line + of a multi-line prompt, and those commands may return 124 to indicate that + the entire prompt should be redrawn. + +hhh. Fixed a bug that could cause `mapfile' to create variables with invalid + names. + +iii. The shell only goes into debugging mode when --debugger is supplied if + the debugger initialization file is present. + +jjj. Fixed a bug that disallowed an assignment to (implicit) subscript 0 of an + existing array in a declare command that set the readonly attribute. + +kkk. Fixed a bug that inadvertently allowed assignments to FUNCNAME to disable + its special status. + +lll. Appending to an existing array variable using the compound assignment + syntax (var+=(aaa)) should not affect assignments to existing subscripts + appearing in the compound assignment. + +mmm. Fixed a bug that could cause the shell to crash when a variable with a + null value was passed in the temporary environment and the variable's + attributes are modified using `declare' while performing a redirection. + +nnn. Fixed a bug in printf so that a missing precision specifier after a `.' + is treated as 0. + +ooo. Fixed a bug that attempted to use the internal command timing to time + pipeline components if the pipeline elements are separated by newlines. + +ppp. Fixed a bug that caused `declare -al foo=(ONE TWO THREE)' to not lowercase + the values on assignment. + +qqq. Bash does a better job of determining whether or not files are executable + when running on Windows, since the X_OK flag to access(2) is not supported. + +rrr. Fixed a bug that caused some of the shell's internal traps (e.g., ERR) to + be interrupted (and leave incorrect state) by pending SIGINTs. + +sss. Fixed a bug in the bash interface to history expansion to avoid attempting + expansion if the history expansion character occurs in a command + substitution. + +ttt. Fixed a bug that caused the select command to crash if the REPLY variable + ends up empty (e.g., if it's made readonly) + +uuu. Bash handles backslash-quoting of multibyte characters better when quoting + output that is intended to be reused. + +vvv. System-specific changes for: Windows, Cygwin. + +www. Fixes for upper and lower-casing multibyte characters, some locales have + characters whose upper and lowercase versions have different numbers of + bytes. + +xxx. Fixed a bug that caused the ERR trap in a shell function to have the + wrong value for $LINENO. + +yyy. Fixed a bug that resulted in incorrect quoting of regexps for the =~ + operator when an open brace appears without a close brace. + +zzz. Fixed a bug in the array unset operation that caused it to attempt to + parse embedded single and double quotes. + +aaaa. Fixed a bug that caused $* to not expand with the first character of + $IFS as a separator in a context where word splitting will not take + place. + +bbbb. Fixed two bugs that could cause the shell to dereference a null pointer + while attempting to print an error message from arithmetic expansion. + +cccc. Fixed a bug that resulted in short-circuited evaluation when reading + commands from a string ending in an unquoted backslash, or when sourcing + a file that ends with an unquoted backslash. + +dddd. Fixed a bug that resulted in the no-fork optimization not cleaning up + any FIFOs created by process substitution. + +eeee. If the -T option is not set, allow the source builtin and shell functions + to set a DEBUG trap that persists after the sourced file or function + returns, instead of restoring the old (unset) value unconditionally. + +ffff. Fixed a bug that caused redirections to not be undone on some syntax + errors, e.g., when parsing a command substitution. + +gggg. Bash only adds asynchronous commands to the table of background pids + whose status it remembers, to avoid it growing too large during scripts + that create and reap large numbers of child processes. This means that + `wait' no longer works on synchronous jobs, but $? can be used to get + the exit status in those cases. + +hhhh. Bash now checks whether or not a shell script argument is a directory + before trying to open it; Posix says implementations may allow open(2) + on a directory. + +iiii. Fixed a bug that could cause the shell to set the terminal's process + group to a background process group when running as part of a pipeline. + +jjjj. Made a few changes to strings to avoid possible potential negative effects + caused by malicious translations. + +kkkk. Fixed a bug that caused the `unset' builtin to continue to treat its + arguments as functions after unsetting a function when invoked with no + options. + +llll. Fixed a bug that would not replace empty strings using pattern + substitution even if the pattern matched the empty string. + +mmmm. Fixed a bug with word completion that prevented some characters from + being backslash-quoted (backquote, dollar sign). + +nnnn. Fixed a bug that prevented a command from the history re-executed by the + `fc' builtin from setting verbose mode. + +oooo. Fixed a bug that caused the shell to not enable and disable function + tracing with changes to the `extdebug' shell option. + +pppp. Fixed a bug that caused assignments to nameref variables pointing to + unset variables with attributes but no values to create variables with + incorrect names. + +qqqq. Fixed a bug that caused `unset' on nameref variables (without -n) to + unset the wrong variable under certain circumstances. + +rrrr. Fixed a bug that caused close braces occurring in brace expansions within + command substitutions to incorrectly terminate parameter expansions. + +ssss. Fixed a bug that caused `command -p' to temporarily alter $PATH. + +tttt. Fixed a bug that caused interactive shells compiled without job control + to return incorrect status values for child processes when running a + single command that creates enough children to use the entire PID space. + +uuuu. `esac' should not be recognized as a reserved word when it appears as the + second or later pattern in a case statement pattern list. + +vvvv. Fixed a bug that caused the completion code to read past the end of the + readline line buffer while skipping assignment statements to find the + command name. + +wwww. Fixed a bug that caused case statements within loops contained in a + command substitution to be parsed incorrectly. + +xxxx. Fixed a bug that could cause SIGCHLD handling to be delayed after + running `wait' with no arguments and interrupting it with ^C without + a trap handler installed. + +2. Changes to Readline + +a. A bug that caused vi-mode `.' to be unable to redo `c', `d', and `y' + commands with modifiers was fixed. + +b. Fixed a bug that caused callback mode to dump core when reading a + multiple-key sequence (e.g., arrow keys). + +c. Fixed a bug that caused the redisplay code to erase some of the line when + using horizontal scrolling with incremental search. + +d. Readline's input handler now performs signal processing if read(2) is + interrupted by SIGALRM or SIGVTALRM. + +e. Fixed a problem with revert-all-at-newline freeing freed memory. + +f. Clarified the documentation for the history_quotes_inhibit_expansion + variable to note that it inhibits scanning for the history comment + character and that it only affects double-quoted strings. + +g. Fixed an off-by-one error in the prompt printed when performing searches. + +h. Use pselect(2), if available, to wait for input before calling read(2), so + a SIGWINCH can interrupt it, since it doesn't interrupt read(2). + +i. Some memory leaks caused by signals interrupting filename completion have + been fixed. + +j. Reading EOF twice on a non-empty line causes EOF to be returned, rather + than the partial line. This can cause partial lines to be executed on + SIGHUP, for example. + +k. Fixed a bug concerning deleting multibyte characters from the search + string while performing an incremental search. + +l. Fixed a bug with tilde expanding directory names in filename completion. + +m. Fixed a bug that did not allow binding sequences beginning with a `\'. + +n. Fixed a redisplay bug involving incorrect line wrapping when the prompt + contains a multibyte character in the last screen column. + +o. Fixed a bug that caused history expansion to disregard characters that are + documented to delimit a history event specifier without requiring `:'. + +p. Fixed a bug that could cause reading past the end of a string when reading + the value when binding the set of isearch terminators. + +q. Fixed a bug that caused readline commands that depend on knowing which + key invoked them to misbehave when dispatching key sequences that are + prefixes of other key bindings. + +r. Paren matching now works in vi insert mode. + +3. New Features in Bash + +a. There is now a settable configuration #define that will cause the shell + to exit if the shell is running setuid without the -p option and setuid + to the real uid fails. + +b. Command and process substitutions now turn off the `-v' option when + executing, as other shells seem to do. + +c. The default value for the `checkhash' shell option may now be set at + compile time with a #define. + +d. The `mapfile' builtin now has a -d option to use an arbitrary character + as the record delimiter, and a -t option to strip the delimiter as + supplied with -d. + +e. The maximum number of nested recursive calls to `eval' is now settable in + config-top.h; the default is no limit. + +f. The `-p' option to declare and similar builtins will display attributes for + named variables even when those variables have not been assigned values + (which are technically unset). + +g. The maximum number of nested recursive calls to `source' is now settable + in config-top.h; the default is no limit. + +h. All builtin commands recognize the `--help' option and print a usage + summary. + +i. Bash does not allow function names containing `/' and `=' to be exported. + +j. The `ulimit' builtin has new -k (kqueues) and -P (pseudoterminals) options. + +k. The shell now allows `time ; othercommand' to time null commands. + +l. There is a new `--enable-function-import' configuration option to allow + importing shell functions from the environment; import is enabled by + default. + +m. `printf -v var ""' will now set `var' to the empty string, as if `var=""' + had been executed. + +n. GLOBIGNORE, the pattern substitution word expansion, and programmable + completion match filtering now honor the value of the `nocasematch' option. + +o. There is a new ${parameter@spec} family of operators to transform the + value of `parameter'. + +p. Bash no longer attempts to perform compound assignment if a variable on the + rhs of an assignment statement argument to `declare' has the form of a + compound assignment (e.g., w='(word)' ; declare foo=$w); compound + assignments are accepted if the variable was already declared as an array, + but with a warning. + +q. The declare builtin no longer displays array variables using the compound + assignment syntax with quotes; that will generate warnings when re-used as + input, and isn't necessary. + +r. Executing the rhs of && and || will no longer cause the shell to fork if + it's not necessary. + +s. The `local' builtin takes a new argument: `-', which will cause it to save + the single-letter shell options and restore their previous values at + function return. + +t. `complete' and `compgen' have a new `-o nosort' option, which forces + readline to not sort the completion matches. + +u. Bash now allows waiting for the most recent process substitution, since it + appears as $!. + +v. The `unset' builtin now unsets a scalar variable if it is subscripted with + a `0', analogous to the ${var[0]} expansion. + +w. `set -i' is no longer valid, as in other shells. + +x. BASH_SUBSHELL is now updated for process substitution and group commands + in pipelines, and is available with the same value when running any exit + trap. + +y. Bash now checks $INSIDE_EMACS as well as $EMACS when deciding whether or + not bash is being run in a GNU Emacs shell window. + +z. Bash now treats SIGINT received when running a non-builtin command in a + loop the way it has traditionally treated running a builtin command: + running any trap handler and breaking out of the loop. + +aa. New variable: EXECIGNORE; a colon-separate list of patterns that will + cause matching filenames to be ignored when searching for commands. + +bb. Aliases whose value ends in a shell metacharacter now expand in a way to + allow them to be `pasted' to the next token, which can potentially change + the meaning of a command (e.g., turning `&' into `&&'). + +4. New Features in Readline + +a. The history truncation code now uses the same error recovery mechanism as + the history writing code, and restores the old version of the history file + on error. The error recovery mechanism handles symlinked history files. + +b. There is a new bindable variable, `enable-bracketed-paste', which enables + support for a terminal's bracketed paste mode. + +c. The editing mode indicators can now be strings and are user-settable + (new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string' + variables). Mode strings can contain invisible character sequences. + Setting mode strings to null strings restores the defaults. + +d. Prompt expansion adds the mode string to the last line of a multi-line + prompt (one with embedded newlines). + +e. There is a new bindable variable, `colored-completion-prefix', which, if + set, causes the common prefix of a set of possible completions to be + displayed in color. + +f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs- + mode yank-pop. + +g. The redisplay code underwent several efficiency improvements for multibyte + locales. + +h. The insert-char function attempts to batch-insert all pending typeahead + that maps to self-insert, as long as it is coming from the terminal. + +i. rl_callback_sigcleanup: a new application function that can clean up and + unset any state set by readline's callback mode. Intended to be used + after a signal. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.3-release, and +the previous version, bash-4.3-rc2. + +1. Changes to Bash + +a. Only Posix-mode shells should exit on an assignment failure in the + temporary environment preceding a special builtin. This is how it's been + documented. + +b. Fixed a bug that caused a failed special builtin to not exit a posix-mode + shell if the failing builtin was on the LHS of a && or ||. + +c. Changed the handling of unquoted backslashes in regular expressions to be + closer to bash-4.2. + +d. globstar (**) no longer traverses symbolic links that resolve to + directories. This eliminates some duplicate entries. + +e. Fixed a bug that caused a SIGCHLD trap handler to not be able to change the + SIGCHLD disposition. + +f. Fixed a bug that caused a crash when -x was enabled and a command + contained a printable multibyte (wide) character. + +g. Fixed a bug that caused an interactive shell without line editing enabled + to read invalid data after receiving a SIGINT. + +h. Fixed a bug that caused command word completion to fail if the directory in + $PATH where the completion would be found contained single or double quotes. + +i. Fixed a bug that caused a shell with -v enabled to print commands in $() + multiple times. + +2. Changes to Readline + +a. Fixed a bug that caused `undo' to reference freed memory or null pointers. + +3. New Features in Bash + +a. The [[ -v ]] option now understands array references (foo[1]) and returns + success if the referenced element has a value. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.3-rc2, and the +previous version, bash-4.3-rc1. + +1. Changes to Bash + +a. Fixed a bug that left variables set by printf -v marked as invisible. + +b. Fixed an off-by-one error in a job control warning message. + +c. Fixed a bug that caused the shell to crash after declaring a nameref variable + without a value. + +d. Fixed a bug that caused asynchronous commands to not set $? correctly. + +e. Fixed a bug that caused out-of-order execution when executing aliases with + embedded newlines containing `.' commands. + +f. Fixed a bug that caused error messages generated by expansion errors in + `for' commands to have the wrong line number. + +g. Fixed a bug that caused the `wait' builtin to not be interruptible in an + interactive shell with job control enabled. + +h. Fixed a bug that caused SIGINT and SIGQUIT to not be trappable in + asynchronous subshell commands. + +i. Bash now requires that the value assigned to a nameref variable be a valid + shell identifier (variable name or array reference). + +j. Converting an existing variable to a nameref variable now turns off the + -i/-l/-u/-c attributes. + +k. Displaying a nameref variable with `declare -p' now displays the nameref + variable and its value rather than following the nameref chain. + +l. Fixed a problem with interrupt handling that caused a second and subsequent + SIGINT to be ignored by interactive shells. + +m. Fixed a bug that caused certain positional parameter and array expansions + to mishandle (discard) null positional parameters and array elements. + +n. The shell no longer blocks receipt of signals while running trap handlers + for those signals, and allows most trap handlers to be run recursively + (running trap handlers while a trap handler is executing). + +o. The shell now handles backslashes in regular expression arguments to the + [[ command's =~ operator slightly differently, resulting in more + consistent behavior. + +2. Changes to Readline + +a. Fixed a bug that could cause readline to crash and seg fault attempting to + expand an empty history entry. + +b. Fixed a bug that caused a bad entry in the $LS_COLORS variable to abort all + color processing but leave color enabled. + +c. Fixed a bug that caused display problems with multi-line prompts containing + invisible characters on multiple lines. + +d. Fixed a bug that caused effects made by undoing changes to a history line to + be discarded. + +3. New Features in Bash + +4. New Features in Readline + +a. When creating shared libraries on Mac OS X, the pathname written into the + library (install_name) no longer includes the minor version number. +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.3-rc1, and the +previous version, bash-4.3-beta2. + +1. Changes to Bash + +a. Fixed a bug in bash completion that caused a tilde to be expanded even if + the `direxpand' option was not enabled. + +b. Fixed a potential bug that could cause corrupted input in interactive shells + running without line editing and with `ignoreeof' enabled. + +c. Fixed a bug that could cause failures when opening pipes back to shells + created to run process substitutions. + +d. Fixed a bug that caused an assignment to TEXTDOMAIN to require TEXTDOMAINDIR + to be set in order to actually change the current text domain. + +e. Changed the way redirections are printed to avoid confusion when the target + of an output redirection is a process substitution beginning with `>'. + +2. Changes to Readline + +a. Shared library building is now supported on Mac OS X 10.9 (Darwin 13). + +3. New Features in Bash + +a. `cd' has a new `-@' option to browse a file's extended attributes on + systems that support O_XATTR. + +4. New Features in Readline + +a. There are additional default key bindings for MinGW32 + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.3-beta2, and the +previous version, bash-4.3-beta. + +1. Changes to Bash + +a. Fixed a bug that caused assignment to an unset variable using a negative + subscript to result in a segmentation fault. + +b. Fixed a bug that caused assignment to a string variable using a negative + subscript to use the incorrect index. + +c. Fixed a bug that caused some strings to be interpreted as invalid + extended globbing expressions when used with the help builtin. + +d. Fixed a bug that caused an attempt to trap a signal whose disposition + cannot be changed to reference uninitialized memory. + +e. Command completion now skips assignment statements preceding a command + name and completes the command. + +f. Fixed a bug that caused `compgen -f' in a non-interactive shell to dump + core under certain circumstances. + +g. Fixed a bug that caused the `read -N' to misbehave when the input stream + contains 0xff. + +2. Changes to Readline + +a. Changed message when an incremental search fails to include "failed" in + the prompt and display the entire search string instead of just the last + matching portion. + +b. Fixed a bug that caused an arrow key typed to an incremental search prompt + to process the key sequence incorrectly. + +c. Additional key bindings for arrow keys on MinGW. + +3. New Features in Bash + +a. The help builtin now attempts substring matching (as it did through + bash-4.2) if exact string matching fails. + +b. The fc builtin now interprets -0 as the current command line. + +c. Completing directory names containing shell variables now adds a trailing + slash if the expanded result is a directory. + +4. New Features in Readline + +a. rl_change_environment: new application-settable variable that controls + whether or not Readline modifies the environment (currently readline + modifies only LINES and COLUMNS). + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.3-beta, and the +previous version, bash-4.3-alpha. + +1. Changes to Bash + +a. Fixed a bug in the prompt directory name "trimming" code that caused + memory corruption and garbled the results. + +b. Fixed a bug that caused single quotes that resulted from $'...' quoting + in the replacement portion of a double-quoted ${word/pat/rep} expansion + to be treated as quote characters. + +c. Fixed a bug that caused assignment statements preceding a command word to + result in assignment statements following a declaration command to not be + expanded like assignment statements. + +d. Fixed a bug with variable search order in the presence of local variables + with the same name as variables in the temporary environment supplied to + a shell function. + +e. Fixed a bug that caused constructs like 1<(2) to be interpreted as process + substitutions even in an arithmetic context. + +f. Fixed several cases where `invisible' variables (variables with attributes + but no values, which are technically unset) were treated incorrectly. + +g. Fixed a bug that caused group commands in pipelines that were not the + last element to not run the EXIT trap. + +h. Fixed a bug that caused `unset -n' to not unset a nameref variable in + certain cases. + +i. Fixed the nameref circular reference checking to be less strict and only + disallow a nameref variable with the same value as its name at the global + scope. + +j. Fixed a bug that caused trap handlers to be executed recursively, + corrupting internal data structures. + +k. Fixed a bug that could result in bash not compiling if certain options were + not enabled. + +l. Fixed a bug that caused the arithmetic expansion code to attempt variable + assignments when operator precedence prohibited them. + +m. Word expansions like ${foo##bar} now understand indirect variable references. + +n. Fixed a bug that caused `declare -fp name' to not display a function + definition. + +o. Fixed a bug that caused asynchronous child processes to modify the stdin + file pointer when bash was using it to read a script, which modified the + parent's value as well. + +2. Changes to Readline + +a. Fixed a bug in vi mode that caused the arrow keys to set the saved last + vi-mode command to the wrong value. + +b. Fixed a bug that caused double-quoted strings to be scanned incorrectly + when being used as the value of a readline variable assignment. + +c. Fixed a bug with vi mode that prevented `.' from repeating a command + entered on a previous line (command). + +d. Fixed a bug that could cause completion to core dump if it was interrupted + by a signal. + +e. Readline now sends the meta-key enable string to the terminal if the + terminal has been successfully initialized. + +f. Readline now calls the signal hook after resizing the terminal when it + receives a SIGWINCH. + +g. Fixed a bug that could cause the history list code to perform an out-of- + bounds array reference if the history list is empty. + +3. New Features in Bash + +a. Shells started to run process substitutions now run any trap set on EXIT. + +b. There is now a configure-time option to enable the globasciiranges option + by default. + +c. The read builtin now checks its first variable argument for validity before + trying to read any input. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.3-alpha, +and the previous version, bash-4.2-release. + +1. Changes to Bash + +a. Fixed several bugs concerning incomplete bracket expressions in filename + generation (globbing) patterns. + +b. Fixed a bug with single quotes and WORD in ${param op WORD} when running + in Posix mode. + +c. Fixed a bug that caused the pattern removal and pattern substitution word + expansions and case statement word expansion to not match the empty string. + +d. Fixed a bug that caused the tzset() function to not work after changing + the TZ environment variable. + +e. Fixed a bug that caused the RHS of an assignment statement to undergo + word splitting when it contained an unquoted $@. + +f. Fixed bugs that caused the shell to not react to a SIGINT sent while + waiting for a child process to exit. + +g. Bash doesn't try to run things in a signal handler context when it gets a + signal (SIGINT/SIGHUP/etc) while reading input using readline but still + be responsive to terminating signals. + +h. Fixed a bug that caused bash to go into an infinite loop if a filename + to be matched contained an invalid multibyte character. + +i. Fixed a bug that caused PS4 to end up being truncated if it is longer + than 128 bytes. + +j. Fixed a bug that caused brace expansion to not skip over double-quoted + command substitution. + +k. System-specific updates for: DJGPP, HP/UX, Mac OS X + +l. Fixed a bug in displaying commands that caused redirections to be associated + with the wrong part of the command. + +m. Fixed the coproc cleanup to unset the appropriate shell variables when a + coproc terminates. + +n. Fixed a bug that caused `fc' to dump core due to incorrect calculation of + the last history entry. + +o. Added workarounds for FreeBSD's implementation of faccessat/eaccess and + `test -x'. + +p. Fixed a bug that caused the shell to not match patterns containing + control-A. + +q. Fixed a bug that could result in doubled error messages when the `printf' + builtin got a write error. + +r. Fixed a bug that caused the shell to not correctly expand words containing + multiple consecutive quoted empty strings (""""""aa). + +s. Fixed a bug that caused the shell to not correctly parse multi-line + process substitutions containing comments and quoted strings. + +t. Fixed a problem with the bash malloc's internal idea of the top of the + memory heap that resulted in incorrect decisions to try to reduce the + break and give memory back to the kernel. + +u. There are changes to the expansions performed on compound array assignments, + in an effort to make foo=( [ind1]=bar [ind2]=baz ) identical to + foo[ind1]=bar foo[ind2]=baz. + +v. Bash now reports an error if `read -a name' is used when `name' is an + existing associative array. + +w. Fixed a bug that allowed an attempted assignment to a readonly variable + in an arithmetic expression to not return failure. + +x. Fixed several bugs that caused completion functions to be invoked even when + the cursor was before the first word in the command. + +y. Fixed a bug that caused parsing a command substitution to overwrite the + parsing state associated with the complete input line. + +z. Fixed several bugs with the built-in snprintf replacement and field widths + and floating point. + +aa. Fixed a bug that caused incorrect offset calculations and input buffer + corruption when reading files longer than 2^31 bytes. + +bb. Fixed several bugs where bash performed arithmetic evaluation in contexts + where evaluation is suppressed. + +cc. Fixed a bug that caused bash to close FIFOs used for process substitution + too early when a shell function was executing, but protect against using + all file descriptors when the shell functions are invoked inside loops. + +dd. Added checks for printable (and non-printable) multibyte characters for + use in error messages. + +ee. Fixed a bug that caused ^O (operate-and-get-next) to not work correctly + at the end of the history list. + +ff. Fixed a bug that caused command-oriented history to incorrectly combine + here documents into one line. + +gg. Fixed a bug that caused importing SHELLOPTS from the environment into a + Posix-mode shell to print an error message and refuse to parse it. + +hh. Fixed a bug that caused the shell to delete an extra history entry when + using `history -s'. + +ii. Fixed a bug that caused floating-point exceptions and overflow errors + for the / and % arithmetic operators when using INTMAX_MIN and -1. + +jj. Fixed a bug that caused parsing errors when reading an arithmetic for + loop inside a command substitution. + +kk. Fixed a bug that caused a readonly function to be unset when unset was + called without the -f or -v option. + +ll. Fixed several bugs in the code that quotes characters special to regular + expressions when used in a quoted string on the RHS of the =~ operator + to the [[ command. + +mm. Fixed a bug that caused redirections to fail because the file descriptor + limit was set to a value less than 10. + +nn. Fixed a bug that caused the `read' builtin to execute code in a signal + handler context if read timed out. + +oo. Fixed a bug that caused extended globbing patterns to not match files + beginning with `.' correctly when a `.' was explicitly supplied in the + pattern. + +pp. Fixed a bug that caused key sequences longer than two characters to not + work when used with `bind -x'. + +qq. Fixed a bug that resulted in redefined functions having the wrong source + file names in BASH_SOURCE. + +rr. Fixed a bug that caused the read builtin to assign null strings to variables + when using `read -N', which caused core dumps when referenced + +ss. Fixed a bug that caused `bash -m script' to not enable job control while + running the script. + +tt. Fixed a bug that caused `printf -v var' to dump core when used with the + %b format code. + +uu. Fixed a bug that caused the shell to exit with the wrong status if -e was + active and the shell exited on a substitution error. + +vv. Fixed a bug that caused the shell to seg fault if an array variable with + the same name as an existing associative array was implicitly created by + an assignment (declare a[n]=b). + +ww. Fixed a bug that caused a redirection to misbehave if the number specified + for a file descriptor overflows an intmax_t. + +xx. Fixed several bugs with the handling of valid and invalid unicode character + values when used with the \u and \U escape sequences to printf and $'...'. + +yy. Fixed a bug that caused tildes to not be escaped in expanded filenames, + making them subject to later expansion. + +zz. When using the pattern substitution word expansion, bash now runs the + replacement string through quote removal, since it allows quotes in that + string to act as escape characters. This is not backwards compatible, so + it can be disabled by setting the bash compatibility mode to 4.2. + +aaa. Fixed the rest of the cases where the shell runs non-allowed code in a + signal handler context. + +bbb. Fixed a bug that caused spurious DEL characters (\177) to appear in + double-quoted expansion where the RHS is evaluated to the empty string. + +ccc. Fixed a bug that caused the use of the shell's internal random number + generator for temporary file names to perturb the random number + sequence. + +ddd. Fixed several bugs that caused `declare -g' to not set the right global + variables or to misbehave when declaring global indexed arrays. + +eee. Fixed a logic bug that caused extended globbing in a multibyte locale to + cause failures when using the pattern substititution word expansions. + +fff. Fixed a bug that caused the `lastpipe' option to corrupt the file + descriptor used to read the script. + +ggg. Fixed a bug that causes the shell to delete DEL characters in the + expanded value of variables used in the same quoted string as variables + that expand to nothing. + +hhh. Fixed a bug that caused the shell to assign the wrong value from an + assignment like (( x=7 )) when `x' was an existing array variable. + +iii. Fixed a bug that caused the shell to misbehave when generating sequences + and the boundary values overflow an intmax_t. + +jjj. Fixed a bug caused expansion errors if an expansion of "$@" appeared + next to another expansion (e.g.. "${@}${x}"). + +kkk. Fixed a potential buffer overflow bug when performing /dev/fd expansion. + +lll. Fixed a bug that resulted in an extra semicolon being added to compound + assignments when they were added to the history list. + +mmm. Fixed a bug that caused mapfile to read one extra line from the input. + +nnn. Fixed a bug that caused the mail checking code to use uninitialized + values. + +ooo. Fixed a bug that prevented history timestamps from being saved if the + history comment character is unset. + +ppp. Fixed a bug that caused the case-modifying expansions to not work with + multibyte characters. + +qqq. Fixed a bug that caused the edit-and-execute bindable readline command + to see the wrong data if invoked in the middle of a multi-line quoted + string. + +rrr. Fixed a bug that resulted in the shell returning the wrong exit status + for a background command on systems that recycle PIDs very quickly. + +sss. Fixed a bug that caused asynchronous group commands to not run any EXIT + trap defined in the body of the command. + +ttt. Fixed a bug that caused `eval "... ; return"' to not clean up properly. + +uuu. Fixed a bug that caused the shell to dump core if `read' reads an escaped + IFS whitespace character. + +vvv. Fixed a bug that caused BASH_COMMAND to be set to an incorrect value when + executing a (...) subshell. + +www. Fixed a couple of pointer aliasing bugs with the token string in arithmetic + evaluation. + +xxx. Fixed a bug with parsing multi-line command substitutions when reading + the `do' keyword followed by whitespace. + +yyy. Fixed a bug that caused the shell to seg fault if the time given to the + printf %(...)T format overflowed the value accepted by localtime(3). + +zzz. Fixed a problem with displaying help topics in two columns when the + translated text contained multibyte characters. + +aaaa. Fixed a bug with the extended globbing pattern matcher where a `*' was + followed by a negated extended glob pattern. + +bbbb. Fixed a race condition with short-lived coproc creation and reaping that + caused the child process to be reaped before the various coproc shell + variables were initialized. + +cccc. Fixed a bug where turning off `errexit' in command substitution subshells + was not reflected in $SHELLOPTS. + +dddd. Partially fixed an inconsistency in how the shell treated shell + functions run from an EXIT trap. + +eeee. Fixed a bug in how the shell invalidated FIFOs used for process + substitution when executing a pipeline (once rather than in every child). + +ffff. Fixed a bug that occurred when expanding a special variable ($@, $*) + within double quotes and the expansion resulted in an empty string. + +gggg. Fixed bugs with executing a SIGCHLD trap handler to make sure that it's + executed once per exited child. + +hhhh. Fixed a bug that caused `declare' and `test' to find variables that + had been given attributes but not assigned values. Such variables are + not set. + +iiii. Fixed a bug that caused commands in process substitutions to not look in + the local temporary environment when performing word expansions. + +jjjj. Fixed several problems with globstar expansions (**/**) returning null + filenames and multiple instances of the same pathname. + +kkkk. Fixed an oversight that did not allow the exit status of `coproc' to + be inverted using `!'. + +llll. Fixed a bug that caused the -e option to be re-enabled using `set -e' + even when executing in a context where -e is ignored. + +mmmm. Fixed a (mostly theoretical) bug with input lines longer than SIZE_MAX. + +nnnn. Fixed a bug that could result in double evaluation of command + substitutions when they appear in failed redirections. + +oooo. Fixed a bug that could cause seg faults during `mapfile' callbacks if + the callback unsets the array variable mapfile is using. + +pppp. Fixed several problems with variable assignments using ${var:=value} + when the variable assignment is supposed to have side effects. + +qqqq. Fixed a bug that caused a failure of an assignment statement preceding a + builtin caused the next invocation of a special builtin to exit the shell. + +rrrr. Fixed several problems with IFS when it appears in the temporary environment + and is used in redirections. + +ssss. Fixed a problem that caused IFS changes using ${IFS:=value} to modify + how preceding expansions were split. + +tttt. Fixed a problem that caused subshells to not run an EXIT trap they set. + +uuuu. Fixed a problem that caused shells started in posix mode to attempt to + import shell functions with invalid names from the environment. We now + print a warning. + +vvvv. Worked around a kernel problem that caused SIGCHLD to interrupt open(2) + on a FIFO used for process substitution, even if the SIGCHLD handler was + installed with the SA_RESTART flag. + +wwww. Fixed a problem that resulted in inconsistent expansion of $* and ${a[*]}. + +xxxx. Fixed a problem that caused `read -t' to crash when interrupted by + SIGINT. + +yyyy. Fixed a problem that caused pattern removal to fail randomly because the + pattern matcher read beyond the end of a string. + +zzzz. Fixed a bug that caused core dumps when shell functions tried to create + local shadow copies of special variables like GROUPS. + +aaaaa. Fixed a bug that caused SIGTERM to be occasionally lost by children of + interactive shells when it arrived before the child process reset the + handler from SIG_DFL. + +bbbbb. Fixed a bug that caused redirections like <&n- to leave file descriptor + n closed if executed with a builtin command. + +ccccc. Fixed a bug that caused incorrect completion quoting when completing a + word containing a globbing character with `show-all-if-ambiguous' set. + +ddddd. Fixed a bug that caused printf's %q format specifier not to quote a + tilde even if it appeared in a location where it would be subject to + tilde expansion. + +2. Changes to Readline + +a. Fixed a bug that did not allow the `dd', `cc', or `yy' vi editing mode + commands to work on the entire line. + +b. Fixed a bug that caused redisplay problems with prompts longer than 128 + characters and history searches. + +c. Fixed a bug that caused readline to try and run code to modify its idea + of the screen size in a signal handler context upon receiving a SIGWINCH. + +d. Fixed a bug that caused the `meta' key to be enabled beyond the duration + of an individual call top readline(). + +e. Added a workaround for a wcwidth bug in Mac OS X that caused readline's + redisplay to mishandle zero-width combining characters. + +f. Fixed a bug that caused readline to `forget' part of a key sequence when + a multiple-key sequence caused it to break out of an incremental search. + +g. Fixed bugs that caused readline to execute code in a signal handler + context if interrupted while reading from the file system during completion. + +h. Fixed a bug that caused readline to `forget' part of a key sequence when + reading an unbound multi-character key sequence. + +i. Fixed a bug that caused Readline's signal handlers to be installed beyond + the bounds of a single call to readline(). + +j. Fixed a bug that caused the `.' command to not redo the most recent `R' + command in vi mode. + +k. Fixed a bug that caused ignoring case in completion matches to result in + readline using the wrong match. + +l. Paren matching now works in vi insert mode. + +m. Fix menu-completion to make show-all-if-ambiguous and menu-complete-display-prefix + work together. + +n. Fixed a bug that didn't allow the `cc', `dd', or `yy' commands to be redone + in vi editing mode. + +o. Fixed a bug that caused the filename comparison code to not compare + multibyte characters correctly when using case-sensitive or case-mapping + comparisons. + +p. Fixed the input reading loop to call the input hook function only when there + is no terminal input available. + +q. Fixed a bug that caused binding a macro to a multi-character key sequence + where the sequence and macro value share a common prefix to not perform + the macro replacement. + +r. Fixed several redisplay errors with multibyte characters and prompts + containing invisible characters when using horizontal scrolling. + +s. Fixed a bug that caused redisplay errors when trying to overwrite + existing characters using multibyte characters. + +3. New Features in Bash + +a. The `helptopic' completion action now maps to all the help topics, not just + the shell builtins. + +b. The `help' builtin no longer does prefix substring matching, so `help read' + does not match `readonly'. + +c. The shell can be compiled to not display a message about processes that + terminate due to SIGTERM. + +d. Non-interactive shells now react to the setting of checkwinsize and set + LINES and COLUMNS after a foreground job exits. + +e. There is a new shell option, `globasciiranges', which, when set to on, + forces globbing range comparisons to use character ordering as if they + were run in the C locale. + +f. There is a new shell option, `direxpand', which makes filename completion + expand variables in directory names in the way bash-4.1 did. + +g. In Posix mode, the `command' builtin does not change whether or not a + builtin it shadows is treated as an assignment builtin. + +h. The `return' and `exit' builtins accept negative exit status arguments. + +i. The word completion code checks whether or not a filename containing a + shell variable expands to a directory name and appends `/' to the word + as appropriate. The same code expands shell variables in command names + when performing command completion. + +j. In Posix mode, it is now an error to attempt to define a shell function + with the same name as a Posix special builtin. + +k. When compiled for strict Posix conformance, history expansion is disabled + by default. + +l. The history expansion character (!) does not cause history expansion when + followed by the closing quote in a double-quoted string. + +m. `complete' and its siblings compgen/compopt now takes a new `-o noquote' + option to inhibit quoting of the completions. + +n. Setting HISTSIZE to a value less than zero causes the history list to be + unlimited (setting it 0 zero disables the history list). + +o. Setting HISTFILESIZE to a value less than zero causes the history file size + to be unlimited (setting it to 0 causes the history file to be truncated + to zero size). + +p. The `read' builtin now skips NUL bytes in the input. + +q. There is a new `bind -X' option to print all key sequences bound to Unix + commands. + +r. When in Posix mode, `read' is interruptible by a trapped signal. After + running the trap handler, read returns 128+signal and throws away any + partially-read input. + +s. The command completion code skips whitespace and assignment statements + before looking for the command name word to be completed. + +t. The build process has a new mechanism for constructing separate help files + that better reflects the current set of compilation options. + +u. The -nt and -ot options to test now work with files with nanosecond + timestamp resolution. + +v. The shell saves the command history in any shell for which history is + enabled and HISTFILE is set, not just interactive shells. + +w. The shell has `nameref' variables and new -n(/+n) options to declare and + unset to use them, and a `test -R' option to test for them. + +x. The shell now allows assigning, referencing, and unsetting elements of + indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which + count back from the last element of the array. + +y. The {x} operators to [[ do string comparisons using the current locale + only if the compatibility level is greater than 40 (set to 41 by default). + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.1-alpha, +and the previous version, bash-4.0-release. + +1. Changes to Bash + +a. Fixed bugs in the parser involving new parsing of the commands contained + in command substitution when the substitution is read. + +b. Fixed a bug that caused the shell to dump core when performing programmable + completion using a shell function. + +c. Fixed a bug in `mapfile' that caused it to invoke callbacks at the wrong + time. + +d. Fixed a bug that caused the shell to dump core when listing jobs in the + `exit' builtin. + +e. Fixed several bugs encountered when reading subscripts in associative + array assignments and expansions. + +f. Fixed a bug that under some circumstances caused an associative array to + be converted to an indexed array. + +g. Fixed a bug that caused syntax errors and SIGINT interrupts to not set + $? to a value > 128. + +h. Fixed a bug that caused the shell to remove FIFOs associated with process + substitution inside shell functions. + +i. Fixed a bug that caused terminal attributes to not be reset when the + `read' builtin timed out. + +j. Fixed a bug in brace expansion that caused unwanted zero padding of the + expanded terms. + +k. Fixed a bug that prevented the |& construct from working as intended when + used with a simple command with additional redirections. + +l. Fixed a bug with the case statement ;& terminator that caused the shell to + dereference a NULL pointer. + +m. Fixed a bug that caused assignment statements or redirections preceding + a simple command name to inhibit alias expansion. + +n. Fixed the behavior of `set -u' to conform to the latest Posix interpretation: + every expansion of an unset variable except $@ and $* will cause the + shell to exit. + +o. Fixed a bug that caused double-quoted expansions of $* inside word + expansions like ${x#$*} to not expand properly when $IFS is empty. + +p. Fixed a bug that caused traps to set $LINENO to the wrong value when they + execute. + +q. Fixed a bug that caused off-by-one errors when computing history lines in + the `fc' builtin. + +r. Fixed a bug that caused some terminating signals to not exit the shell + quickly enough, forcing the kernel to send the signal (e.g., SIGSEGV) + multiple times. + +s. Fixed a bug that caused the shell to attempt to add empty lines to the + history list when reading here documents. + +t. Made some internal changes that dramatically speeds up sequential indexed + array access. + +u. Fixed a bug that caused the shell to write past the end of a string when + completing a double-quoted string ending in a backslash. + +v. Fixed a bug that caused the shell to replace too many characters when a + pattern match was null in a ${foo//bar} expansion. + +w. Fixed bugs in the expansion of ** that caused duplicate directory names + and the contents of the current directory to be omitted. + +x. Fixed a bug that caused $? to not be set correctly when referencing an + unset variable with set -u and set -e enabled. + +y. Fixed a bug caused by executing an external program from the DEBUG trap + while a pipeline was running. The effect was to disturb the pipeline + state, occasionally causing it to hang. + +z. Fixed a bug that caused the ** glob expansion to dump core if it + encountered an unsearchable directory. + +aa. Fixed a bug that caused `command -v' and `command -V' to not honor the + path set by the -p option. + +bb. Fixed a bug that caused brace expansion to take place too soon in some + compound array assignments. + +cc. Fixed a bug that caused programmable completion functions' changes to + READLINE_POINT to not be reflected back to readline. + +dd. Fixed a bug that caused the shell to dump core if a trap was executed + during a shell assignment statement. + +ee. Fixed an off-by-one error when computing the number of positional + parameters for the ${@:0:n} expansion. + +ff. Fixed a problem with setting COMP_CWORD for programmable completion + functions that could leave it set to -1. + +gg. Fixed a bug that caused the ERR trap to be triggered in some cases where + `set -e' would not have caused the shell to exit. + +hh. Fixed a bug that caused changes made by `compopt' to not persist past the + completion function in which compopt was executed. + +ii. Fixed a bug that caused the list of hostname completions to not be cleared + when HOSTNAME was unset. + +jj. Fixed a bug that caused variable expansion in here documents to look in + any temporary environment. + +kk. Bash and readline can now convert file names between precomposed and + decomposed Unicode on Mac OS X ("keyboard" and file system forms, + respectively). This affects filename completion (using new + rl_filename_rewrite_hook), globbing, and readline redisplay. + +ll. The ERR and EXIT traps now see a non-zero value for $? when a parser + error after set -e has been enabled causes the shell to exit. + +mm. Fixed a bug that in brace expansion that caused zero-prefixed terms to + not contain the correct number of digits. + +nn. Fixed a bug that caused the shell to free non-allocated memory when + unsetting an associative array which had had a value implicitly assigned + to index "0". + +oo. Fixed a memory leak in the ${!prefix@} expansion. + +pp. Fixed a bug that caused printf to not correctly report all write errors. + +qq. Fixed a bug that caused single and double quotes to act as delimiters + when splitting a command line into words for programmable completion. + +rr. Fixed a bug that caused ** globbing that caused **/path/* to match every + directory, not just those matching `path'. + +ss. Fixed a bug that caused the shell to dump core when running `help' without + arguments if the terminal width was fewer than 7 characters. + +2. Changes to Readline + +a. The SIGWINCH signal handler now avoids calling the redisplay code if + one arrives while in the middle of redisplay. + +b. Changes to the timeout code to make sure that timeout values greater + than one second are handled better. + +c. Fixed a bug in the redisplay code that was triggered by a prompt + containing invisible characters exactly the width of the screen. + +d. Fixed a bug in the redisplay code encountered when running in horizontal + scroll mode. + +e. Fixed a bug that prevented menu completion from properly completing + filenames. + +f. Fixed a redisplay bug caused by a multibyte character causing a line to + wrap. + +g. Fixed a bug that caused key sequences of two characters to not be + recognized when a longer sequence identical in the first two characters + was bound. + +h. Fixed a bug that caused history expansion to be attempted on $'...' + single-quoted strings. + +i. Fixed a bug that caused incorrect redisplay when the prompt contained + multibyte characters in an `invisible' sequence bracketed by \[ and + \]. + +j. Fixed a bug that caused history expansion to short-circuit after + encountering a multibyte character. + +3. New Features in Bash + +a. Here-documents within $(...) command substitutions may once more be + delimited by the closing right paren, instead of requiring a newline. + +b. Bash's file status checks (executable, readable, etc.) now take file + system ACLs into account on file systems that support them. + +c. Bash now passes environment variables with names that are not valid + shell variable names through into the environment passed to child + processes. + +d. The `execute-unix-command' readline function now attempts to clear and + reuse the current line rather than move to a new one after the command + executes. + +e. `printf -v' can now assign values to array indices. + +f. New `complete -E' and `compopt -E' options that work on the "empty" + completion: completion attempted on an empty command line. + +g. New complete/compgen/compopt -D option to define a `default' completion: + a completion to be invoked on command for which no completion has been + defined. If this function returns 124, programmable completion is + attempted again, allowing a user to dynamically build a set of completions + as completion is attempted by having the default completion function + install individual completion functions each time it is invoked. + +h. When displaying associative arrays, subscripts are now quoted. + +i. Changes to dabbrev-expand to make it more `emacs-like': no space appended + after matches, completions are not sorted, and most recent history entries + are presented first. + +j. The [[ and (( commands are now subject to the setting of `set -e' and the + ERR trap. + +k. The source/. builtin now removes NUL bytes from the file before attempting + to parse commands. + +l. There is a new configuration option (in config-top.h) that forces bash to + forward all history entries to syslog. + +m. A new variable $BASHOPTS to export shell options settable using `shopt' to + child processes. + +n. There is a new confgure option that forces the extglob option to be + enabled by default. + +o. New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace + output to that file descriptor. + +p. If the optional left-hand-side of a redirection is of the form {var}, the + shell assigns the file descriptor used to $var or uses $var as the file + descriptor to move or close, depending on the redirection operator. + +q. The < and > operators to the [[ conditional command now do string + comparison according to the current locale. + +r. Programmable completion now uses the completion for `b' instead of `a' + when completion is attempted on a line like: a $(b c. + +s. Force extglob on temporarily when parsing the pattern argument to + the == and != operators to the [[ command, for compatibility. + +t. Changed the behavior of interrupting the wait builtin when a SIGCHLD is + received and a trap on SIGCHLD is set to be Posix-mode only. + +u. The read builtin has a new `-N nchars' option, which reads exactly NCHARS + characters, ignoring delimiters like newline. + +4. New Features in Readline + +a. New bindable function: menu-complete-backward. + +b. In the vi insertion keymap, C-n is now bound to menu-complete by default, + and C-p to menu-complete-backward. + +c. When in vi command mode, repeatedly hitting ESC now does nothing, even + when ESC introduces a bound key sequence. This is closer to how + historical vi behaves. + +d. New bindable function: skip-csi-sequence. Can be used as a default to + consume key sequences generated by keys like Home and End without having + to bind all keys. + +e. New application-settable function: rl_filename_rewrite_hook. Can be used + to rewite or modify filenames read from the file system before they are + compared to the word to be completed. + +f. New bindable variable: skip-completed-text, active when completing in the + middle of a word. If enabled, it means that characters in the completion + that match characters in the remainder of the word are "skipped" rather + than inserted into the line. + +g. The pre-readline-6.0 version of menu completion is available as + "old-menu-complete" for users who do not like the readline-6.0 version. + +h. New bindable variable: echo-control-characters. If enabled, and the + tty ECHOCTL bit is set, controls the echoing of characters corresponding + to keyboard-generated signals. + +i. New bindable variable: enable-meta-key. Controls whether or not readline + sends the smm/rmm sequences if the terminal indicates it has a meta key + that enables eight-bit characters. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-release, +and the previous version, bash-4.0-rc1. + +1. Changes to Bash + +a. Changed the message printed when setlocale(3) fails to only include the + strerror error text if the call changes errno. + +b. Changed trap command execution to reset the line number before running a + trap (except DEBUG and RETURN traps). + +c. Fixed behavior of case-modifiying word expansions to not work on + individual words within a variable's value. + +d. Fixed a bug that caused mapfile to not be interruptible when run in an + interactive shell. + +e. Fixed a bug that caused mapfile to not run callbacks for the first line + read. + +f. Fixed a bug that caused mapfile to not honor EOF typed in an interactive + shell. + +g. Fixed the coprocess reaping code to not run straight from a signal handler. + +h. Fixed a bug that caused printf -b to ignore the first % conversion specifier + in the format string on 64-bit systems. + +i. Fixed a bug that caused incorrect word splitting when `:', `=', or `~' + appeared in $IFS. + +j. Fixed a bug that caused data corruption in the programmable completion code + when a shell function called from a completion aborted execution. + +k. Fixed a bug that caused the CPU usage reported by the `time' builtin to be + capped at 100%. + +l. Changed behavior of shell when -e option is in effect to reflect consensus + of Posix shell standardization working group. + +m. Fixed a bug introduced in bash-4.0-alpha that caused redirections to not + be displayed by `type' or `declare' when appearing in functions under + certain circumstances. + +2. Changes to Readline + +a. Fixed a bug that caused !(...) extended glob patterns to inhibit later + history expansion. + +b. Reworked the signal handling to avoid calling disallowed functions from a + signal handler. + +3. New Features in Bash + +a. `readarray' is now a synonym for `mapfile'. +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-rc1, +and the previous version, bash-4.0-beta2. + +1. Changes to Bash + +a. Fixed a bug that caused parsing errors when a $()-style command + substitution was follwed immediately by a quoted newline. + +b. Fixed a bug that caused extended shell globbing patterns beginning with + `*(' to not work when used with pattern substitution word expansions. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-beta2, +and the previous version, bash-4.0-beta. + +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. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-beta, +and the previous version, bash-4.0-alpha. + +1. Changes to Bash + +a. Fixed a typo that caused a variable to be used before initialization + while parsing Posix-style command substitutions. + +b. Fixed a bug that caused stray ^? when the expansion of a parameter used + as part of a pattern removal expansion is empty, but part of a non- + empty string. + +c. Fixed a bug that could cause strings not converted to numbers by strtol + to be treated as if the conversion had been successful. + +d. The `return' builtin now accepts no options and requires a `--' before + a negative return value, as Posix requires. + +e. Fixed a bug that caused local variables to be created with the empty + string for a value rather than no value. + +f. Changed behavior so the shell now acts as if it received an interrupt + when a pipeline is killed by SIGINT while executing a list. + +g. Fixed a bug that caused `declare var' and `typeset var' to initialize + `var' to the empty string. + +h. Changed `bind' builtin to print a warning but proceed if invoked when + line editing is not active. + +i. Fixed a bug that caused the shell to exit when the `errexit' option is + set and a command in a pipeline returns a non-zero exit status. + +j. Fixed a bug that caused the shell to not run the exit trap in a command + run with `bash -c' under some circumstances. + +k. Fixed a bug that caused parser errors to occasionally not set $? when + running commands with `eval'. + +l. Fixed a bug that caused stray control characters when evaluating compound + array assignments containing $'\x7f' escapes. + +m. Fixed a bug that caused redirections involving file descriptor 10 as the + target to behave incorrectly. + +n. Fixed a bug that could cause memory to be freed multiple times when + assigning to COMP_WORDBREAKS. + +o. Fixed a bug that could cause NULL pointer dereferences when COMP_WORDBREAKS + was unset. + +2. Changes to Readline + +3. New Features in Bash + +a. A value of 0 for the -t option to `read' now returns success if there is + input available to be read from the specified file descriptor. + +b. CDPATH and GLOBIGNORE are ignored when the shell is running in privileged + mode. + +c. New bindable readline functions shell-forward-word and shell-backward-word, + which move forward and backward words delimited by shell metacharacters + and honor shell quoting. + +d. New bindable readline functions shell-backward-kill-word and shell-kill-word + which kill words backward and forward, but use the same word boundaries + as shell-forward-word and shell-backward-word. + +4. New Features in Readline + +a. If the kernel supports it, readline displays special characters + corresponding to a keyboard-generated signal when the signal is received. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.0-alpha, +and the previous version, bash-3.2-release. + +1. Changes to Bash + +a. Fixed several bugs in old-style `` command substitution parsing, including + comment parsing and quoted string handling. + +b. Fixed problems parsing arguments to the [[ command's =~ regular expression + matching operator: metacharacter and whitespace parsing. + +c. Fixed a bug that caused the shell to inappropriately reuse high-numbered + file descriptors it used internally. + +d. Fixed a bug in pattern replacement word expansions that caused a `/' as + the first character of an expanded pattern to be mistaken for a global + replacement specifier. + +e. Fixed several problems with the asprintf and snprintf replacement functions + that caused hangs and crashes. + +f. Fixed a bug in the calculation of the current and previous job that caused + it to refer to incorrect jobs. + +g. Fixed a bug in the check for the validity of a hashed command pathname that + caused unnecessary hash table deletions and additions. + +h. Fixed a bug that caused child processes to inherit the wrong value for $!. + +i. Fixed a bug that caused `.' to fail to read and execute commands from non- + regular files such as devices or named pipes. + +j. Fixed a bug in printf formatting for the %x and %X expansions that occurred + on some systems. + +k. Fixed a bug that caused the shell to crash when creating temporary files if + $TMPDIR named a non-writable directory. + +l. Fixed a bug that caused the shell to ignore $TMPDIR when creating temporary + files under some circumstances. + +m. Fixed a bug that caused named pipes created by process substitution to not + be cleaned up. + +n. Fixed a bug that caused HISTTIMEFORMAT to not be honored when it appeared + in the initial shell environment. + +o. Fixed several bugs in the expansion of $* and $@ (quoted and unquoted) + when IFS is null or contains non-whitespace characters; the same changes + apply to arrays subscripted with * or @. + +p. Fixed several problems with pattern substitution expansions on the + positional parameters and arrays subscripted with * or @ that occurred + when $IFS was set to the empty string. + +q. Made a change to the default locale initialization code that should + result in better behavior from the locale-aware library functions. + +r. Fixed a bug that caused compacting the jobs list to drop jobs. + +s. Fixed a bug that caused jumps back to the top-level processing loop from + a builtin command to leave the shell in an inconsistent state. + +t. Fixed a bug that caused characters that would be escaped internally to be + doubled when escaped with a backslash. + +u. Fixed the initialization of mailboxes to not cause maildirs to be read + (and stat(2) called for every message file) at shell startup. + +v. Fixed a bug that caused the shell to not display $PS2 when the read builtin + reads a line continued with a backslash. + +w. Fixed a bug that caused errors in word splitting when $IFS contained + characters used for internal quoting. + +x. Fixed bugs that caused problems with output from shell builtins not being + completely displayed on some systems. + +y. Fixed a bug that caused output to be lost when a redirection is acting on + the shell's output file descriptor. + +z. Fixed bugs caused by shell builtins not checking for all write errors. + +aa. Fixed a problem that caused the shell to dump core if expansions on the + pattern passed to the pattern removal word expansions resulted in expansion + errors. + +bb. Fixed a bug that caused bash to loop infinitely after creating and + waiting for 4096 jobs. + +cc. Fixed a bug that caused bash to lose the status of a background job under + certain circumstances. + +dd. Fixed a bug that caused bash to not look in the temporary environment + when performing variable lookup under certain circumstances. + +ee. Fixed a bug that caused bash to close file descriptors greater than 10 + when they were used in redirections. + +ff. Fixed a problem that caused the shell to attempt to read from the standard + input when called as `bash -i script'. + +gg. Fixed a memory leak and variable initialization problems when the -v option + was supplied to `printf' that could cause incorrect results. + +hh. Fixed a bug that caused the `read' builtin to count bytes when the -n option + was supplied, rather than (possibly multibyte) characters. + +ii. Fixed a bug when displaying a function due to not converting the function + to an external form. + +jj. Changed job control initialization to ensure that the shell has a tty + as its controlling terminal before enabling job control. + +kk. Fixed a bug with the `test' builtin that caused it to misinterpret + arguments beginning with `-' but containing more than one character. + +ll. Fixed bug that could cause the shell to dump core in certain cases where + a command sets the SIGINT disposition to the default. + +mm. Fixed a bug in the pattern replacement (affecting both word expansion + and the `fc' builtin) that occurred when the pattern and replacement + strings were empty. + +nn. Fixed a bug that caused an arithmetic evaluation error to disable all + further evaluation. + +oo. Fixed a bug in pathname expansion that caused it to interpret backslashes + in the pathname as quoting characters. + +pp. Fixed a bug in the replacement getcwd() implementation that could cause + memory to be overwritten. + +qq. When in Posix mode, the `ulimit' builtin now uses a block size of 512 for + the `-c' and `-f' options. + +rr. Brace expansion now allows process substitutions to pass through unchanged. + +ss. Fixed a problem in the command name completion code to avoid quoting + escaped special characters twice when the command name begins with a tilde. + +tt. Fixed a problem in the printf builtin that resulted in single-byte + output for the "'" escape, even when using multibyte characters. + +uu. Fixed a bug that caused the failure exit status to be lost when redirections + attached to a compound command failed. + +vv. Fixed a bug that caused the internal random number generator to not be + re-seeded correctly when creating a subshell. + +ww. Fixed a bug that could cause the bash replacement getcwd to overwrite + memory. + +xx. Fixed a bug that caused the shell to not receive SIGINT if it was sent + while the shell was waiting for a command substitution to terminate, and + make sure the exit status is correct when it does. + +yy. Fixed a bug that resulted in the second and subsequent children spawned + by a shell begun to run a command substitution being placed into the + wrong process group. + +zz. Fixed a bug that caused the results of successful tilde expansion to be + subject to pathname expansion and word splitting. + +aaa. Fixed a bug that could cause the shell to hang if it encountered an + error that caused it to jump back to the top processing loop during a + command substitution or `eval' command. + +bbb. Fixed a bug that caused the `read' builtin to use the tty's attributes + instead of those of the file descriptor passed with the -u option when + processing the -n and -d options. + +ccc. Fixed a bug that caused incorrect expansion of ${array[@]:foo} if the + first character of $IFS was not whitespace. + +ddd. Fixed a bug that occurred when scanning for the ending delimiter of a + ${parameter/pat/sub} expansion. + +eee. Fixed a bug that caused the shell to inappropriately expand command + substitutions in words when expanding directory names for completion. + +fff. Fixed a bug that caused the `fc' builtin to look too far back in the + history list under certain circumstances. + +ggg. Fixed a bug that caused a shell running in Posix mode to search $PWD for + a file specified as an argument to source/. when the file was not found + in $PATH. + +hhh. Fixed a bug that caused the shell to modify the case of a command word + found via command completion when the shell was performing case- + insensitive completion. + +iii. Fixed a bug that caused the shell to search $PATH for an argument to + source/. even when it contained a `/'. + +jjj. Fixed a bug that caused brace expansion to misorder expansions when the + locale did not have a collating order like aAbBcC...zZ. + +kkk. Fixed a bug that did not allow `set +o history' to have any effect when + run in a startup file or from a sourced file. + +lll. Fixed a bug with the precedence of the ?: conditional arithmetic operator. + +mmm. Fixed a bug that caused side effects of temporary variable assignments + to persist in the shell environment. + +nnn. Fixed a bug that caused the terminal to be left in non-canonical mode + when using editing commands that invoke the an editor on the current + command line. + +ooo. Fixed a bug that caused globbing characters and characters in $IFS to not + be quoted appropriately when displaying assignment statements. + +ppp. Fixed a bug that caused the `-e' option to be inherited when sourcing a + file or evaluating a command with `eval' even if the return value of the + command was supposed to be ignored. + +qqq. Fixed a bug that caused the shell to attempt to created variables with + invalid names if such names appeared in the initial environment. + +rrr. Fixed a bug with quote removal in strings where the final character is a + backslash. + +sss. Fixed a bug that caused the effects of special variables to persist even + when the variables were unset as part of the shell reinitializing itself + to execute a shell script. + +ttt. Fixed a bug that caused the history to not be saved after `history -c' or + `history -d' was executed until a sufficient number of commands had been + saved to the history. + +uuu. Bash now parses command substitutions according to Posix rules: parsing + the command contained in $() to find the closing delimiter. + +vvv. Fixed a bug that caused traps on SIGCHLD set in a SIGCHLD handler to + not persist. + +www. Fixed a bug that didn't allow SIGCHLD to interrupt the `wait' builtin + as Posix specifies. + +xxx. Invalid numeric arguments to shell builtins no longer cause the shell to + short-circuit any executing compound command. + +yyy. Fixed a bug that caused the exit status to be lost when `break' was + used to short-circuit a loop's execution. + +zzz. Fixed a bug that caused stray ^? characters to be left in expansions of + "${array[*]}". + +aaaa. Bash now prints better error messages for here documents terminated by + EOF and for identifying the incorrect token in an invalid arithmetic + expression. + +bbbb. Fixed a bug in the variable length word expansion that caused it to + incorrectly calculate the number of multibyte characters. + +cccc. Fixed a race condition that could result in the top-level shell setting + the terminal's process group to an incorrect value if the process + group was changed by a child of a child of the shell. + +dddd. Fixed a bug that caused here documents belonging to commands within a + compound command to be displayed in a syntactially-incorrect form, which + prevented them from being re-read as input. + +eeee. The shell displays more warnings about failures to set the locale. + +ffff. Fixed a bug that caused the body of a here-document to not be saved to + the history list. + +gggg. Fixed a bug that caused configure to incorrectly conclude that FreeBSD + had /dev/fd available, resulting in problems with process substitution. + +2. Changes to Readline + +a. Fixed a number of redisplay errors in environments supporting multibyte + characters. + +b. Fixed bugs in vi command mode that caused motion commands to inappropriately + set the mark. + +c. When using the arrow keys in vi insertion mode, readline allows movement + beyond the current end of the line (unlike command mode). + +d. Fixed bugs that caused readline to loop when the terminal has been taken + away and reads return -1/EIO. + +e. Fixed bugs in redisplay occurring when displaying prompts containing + invisible characters. + +f. Fixed a bug that caused the completion append character to not be reset to + the default after an application-specified completion function changed it. + +g. Fixed a problem that caused incorrect positioning of the cursor while in + emacs editing mode when moving forward at the end of a line while using + a locale supporting multibyte characters. + +h. Fixed an off-by-one error that caused readline to drop every 511th + character of buffered input. + +i. Fixed a bug that resulted in SIGTERM not being caught or cleaned up. + +j. Fixed redisplay bugs caused by multiline prompts with invisible characters + or no characters following the final newline. + +k. Fixed redisplay bug caused by prompts consisting solely of invisible + characters. + +l. Fixed a bug in the code that buffers characters received very quickly in + succession which caused characters to be dropped. + +m. Fixed a bug that caused readline to reference uninitialized data structures + if it received a SIGWINCH before completing initialization. + +n. Fixed a bug that caused the vi-mode `last command' to be set incorrectly + and therefore unrepeatable. + +o. Fixed a bug that caused readline to disable echoing when it was being used + with an output file descriptor that was not a terminal. + +p. Readline now blocks SIGINT while manipulating internal data structures + during redisplay. + +q. Fixed a bug in redisplay that caused readline to segfault when pasting a + very long line (over 130,000 characters). + +r. Fixed bugs in redisplay when using prompts with no visible printing + characters. + +3. New Features in Bash + +a. When using substring expansion on the positional parameters, a starting + index of 0 now causes $0 to be prefixed to the list. + +b. The `help' builtin now prints its columns with entries sorted vertically + rather than horizontally. + +c. There is a new variable, $BASHPID, which always returns the process id of + the current shell. + +d. There is a new `autocd' option that, when enabled, causes bash to attempt + to `cd' to a directory name that is supplied as the first word of a + simple command. + +e. There is a new `checkjobs' option that causes the shell to check for and + report any running or stopped jobs at exit. + +f. The programmable completion code exports a new COMP_TYPE variable, set to + a character describing the type of completion being attempted. + +g. The programmable completion code exports a new COMP_KEY variable, set to + the character that caused the completion to be invoked (e.g., TAB). + +h. If creation of a child process fails due to insufficient resources, bash + will try again several times before reporting failure. + +i. The programmable completion code now uses the same set of characters as + readline when breaking the command line into a list of words. + +j. The block multiplier for the ulimit -c and -f options is now 512 when in + Posix mode, as Posix specifies. + +k. Changed the behavior of the read builtin to save any partial input received + in the specified variable when the read builtin times out. This also + results in variables specified as arguments to read to be set to the empty + string when there is no input available. When the read builtin times out, + it returns an exit status greater than 128. + +l. The shell now has the notion of a `compatibility level', controlled by + new variables settable by `shopt'. Setting this variable currently + restores the bash-3.1 behavior when processing quoted strings on the rhs + of the `=~' operator to the `[[' command. + +m. The `ulimit' builtin now has new -b (socket buffer size) and -T (number + of threads) options. + +n. The -p option to `declare' now displays all variable values and attributes + (or function values and attributes if used with -f). + +o. There is a new `compopt' builtin that allows completion functions to modify + completion options for existing completions or the completion currently + being executed. + +p. The `read' builtin has a new -i option which inserts text into the reply + buffer when using readline. + +q. A new `-E' option to the complete builtin allows control of the default + behavior for completion on an empty line. + +r. There is now limited support for completing command name words containing + globbing characters. + +s. Changed format of internal help documentation for all builtins to roughly + follow man page format. + +t. The `help' builtin now has a new -d option, to display a short description, + and a -m option, to print help information in a man page-like format. + +u. There is a new `mapfile' builtin to populate an array with lines from a + given file. + +v. If a command is not found, the shell attempts to execute a shell function + named `command_not_found_handle', supplying the command words as the + function arguments. + +w. There is a new shell option: `globstar'. When enabled, the globbing code + treats `**' specially -- it matches all directories (and files within + them, when appropriate) recursively. + +x. There is a new shell option: `dirspell'. When enabled, the filename + completion code performs spelling correction on directory names during + completion. + +y. The `-t' option to the `read' builtin now supports fractional timeout + values. + +z. Brace expansion now allows zero-padding of expanded numeric values and + will add the proper number of zeroes to make sure all values contain the + same number of digits. + +aa. There is a new bash-specific bindable readline function: `dabbrev-expand'. + It uses menu completion on a set of words taken from the history list. + +bb. The command assigned to a key sequence with `bind -x' now sets two new + variables in the environment of the executed command: READLINE_LINE_BUFFER + and READLINE_POINT. The command can change the current readline line + and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, + respectively. + +cc. There is a new &>> redirection operator, which appends the standard output + and standard error to the named file. + +dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects + the standard error for a command through a pipe. + +ee. The new `;&' case statement action list terminator causes execution to + continue with the action associated with the next pattern in the + statement rather than terminating the command. + +ff. The new `;;&' case statement action list terminator causes the shell to + test the next set of patterns after completing execution of the current + action, rather than terminating the command. + +gg. The shell understands a new variable: PROMPT_DIRTRIM. When set to an + integer value greater than zero, prompt expansion of \w and \W will + retain only that number of trailing pathname components and replace + the intervening characters with `...'. + +hh. There are new case-modifying word expansions: uppercase (^[^]) and + lowercase (,[,]). They can work on either the first character or + array element, or globally. They accept an optional shell pattern + that determines which characters to modify. There is an optionally- + configured feature to include capitalization operators. + +ii. The shell provides associative array variables, with the appropriate + support to create, delete, assign values to, and expand them. + +jj. The `declare' builtin now has new -l (convert value to lowercase upon + assignment) and -u (convert value to uppercase upon assignment) options. + There is an optionally-configurable -c option to capitalize a value at + assignment. + +kk. There is a new `coproc' reserved word that specifies a coprocess: an + asynchronous command run with two pipes connected to the creating shell. + Coprocs can be named. The input and output file descriptors and the + PID of the coprocess are available to the calling shell in variables + with coproc-specific names. + +4. New Features in Readline + +a. A new variable, rl_sort_completion_matches; allows applications to inhibit + match list sorting (but beware: some things don't work right if + applications do this). + +b. A new variable, rl_completion_invoking_key; allows applications to discover + the key that invoked rl_complete or rl_menu_complete. + +c. The functions rl_block_sigint and rl_release_sigint are now public and + available to calling applications who want to protect critical sections + (like redisplay). + +d. The functions rl_save_state and rl_restore_state are now public and + available to calling applications; documented rest of readline's state + flag values. + +e. A new user-settable variable, `history-size', allows setting the maximum + number of entries in the history list. + +f. There is a new implementation of menu completion, with several improvements + over the old; the most notable improvement is a better `completions + browsing' mode. + +g. The menu completion code now uses the rl_menu_completion_entry_function + variable, allowing applications to provide their own menu completion + generators. + +h. There is support for replacing a prefix of a pathname with a `...' when + displaying possible completions. This is controllable by setting the + `completion-prefix-display-length' variable. Matches with a common prefix + longer than this value have the common prefix replaced with `...'. + +i. There is a new `revert-all-at-newline' variable. If enabled, readline will + undo all outstanding changes to all history lines when `accept-line' is + executed. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.2-release, +and the previous version, bash-3.2-beta. + +1. Changes to Bash + +a. Fixed a bug that caused the temporary environment passed to a command to + affect the shell's environment under certain circumstances. + +b. Fixed a bug in the printf builtin that caused the %q format specifier to + ignore empty string arguments. + +c. Improved multibyte character environment detection at configuration time. + +d. Fixed a bug in the read builtin that left spurious escape characters in the + input after processing backslashes when assigning to an array variable. + +2. Changes to Readline + +a. Fixed a redisplay bug that occurred in multibyte-capable locales when the + prompt was one character longer than the screen width. +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.2-beta, +and the previous version, bash-3.2-alpha. + +1. Changes to Bash + +a. Changed the lexical analyzer to treat locale-specific blank characters as + white space. + +b. Fixed a bug in command printing to avoid confusion between redirections and + process substitution. + +c. Fixed problems with cross-compiling originating from inherited environment + variables. + +d. Added write error reporting to printf builtin. + +e. Fixed a bug in the variable expansion code that could cause a core dump in + a multi-byte locale. + +f. Fixed a bug that caused substring expansion of a null string to return + incorrect results. + +g. BASH_COMMAND now retains its previous value while executing commands as the + result of a trap, as the documentation states. + +2. Changes to Readline + +a. Fixed a bug with prompt redisplay in a multi-byte locale to avoid redrawing + the prompt and input line multiple times. + +b. Fixed history expansion to not be confused by here-string redirection. + +c. Readline no longer treats read errors by converting them to newlines, as + it does with EOF. This caused partial lines to be returned from readline(). + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.2-alpha, +and the previous version, bash-3.1-release. + +1. Changes to Bash + +a. Fixed a source bug that caused the minimal configuration to not compile. + +b. Fixed memory leaks in error handling for the `read' builtin. + +c. Changed the [[ and (( compound commands to set PIPESTATUS with their exit + status. + +d. Fixed some parsing problems with compound array assignments. + +e. Added additional configuration changes for: NetBSD (incomplete multibyte + character support) + +f. Fixed two bugs with local array variable creation when shadowing a variable + of the same name from a previous context. + +g. Fixed the `read' builtin to restore the correct set of completion functions + if a timeout occurs. + +h. Added code to defer the initialization of HISTSIZE (and its stifling of the + history list) until the history file is loaded, allowing a startup file to + override the default value. + +i. Tightened up the arithmetic expression parsing to produce better error + messages when presented with invalid operators. + +j. Fixed the cross-compilation support to build the signal list at shell + invocation rather than compile time if cross-compiling. + +k. Fixed multibyte support for non-gcc compilers (or compilers that do not + allow automatic array variable sizing based on a non-constant value). + +l. Several fixes to the code that manages the list of terminated jobs and + their exit statuses, and the list of active and recently-terminated jobs + to avoid pid aliasing/wraparound and allocation errors. + +m. Fixed a problem that allowed scripts to die due to SIGINT while waiting + for children, even when started in the background or otherwise ignoring + SIGINT. + +n. Fixed a bug that caused shells invoked as -/bin/bash from not being + recognized as login shells. + +o. Fixed a problem that caused shells in the background to give the terminal + to a process group other than the foreground shell process group. + +p. Fixed a problem with extracting the `varname' in ${#varname}. + +q. Fixed the code that handles SIGQUIT to not exit immediately -- thereby + calling functions that may not be called in a signal handler context -- + but set a flag and exit afterward (like SIGINT). + +r. Changed the brace expansion code to skip over braces that don't begin a + valid matched brace expansion construct. + +s. Fixed `typeset' and `declare' to not require that their shell function + operands to be valid shell identifiers. + +t. Changed `test' to use access(2) with a temporary uid/euid swap when testing + file attributes and running setuid, and access(2) in most other cases. + +u. Changed completion code to not attempt command name completion on a line + consisting solely of whitespace when no_empty_command_completion is set. + +v. The `hash' builtin now prints nothing in posix mode when the hash table is + empty, and prints a message to that effect to stdout instead of stderr + when not in posix mode. + +w. Fixed a bug in the extended pattern matching code that caused it to fail to + match periods with certain patterns. + +x. Fixed a bug that caused the shell to dump core when performing filename + generation in directories with thousands of files. + +y. Returned to the original Bourne shell rules for parsing ``: no recursive + parsing of embedded quoted strings or ${...} constructs. + +z. The inheritance of the DEBUG, RETURN, and ERR traps is now dependent only + on the settings of the `functrace' and `errtrace' shell options, rather + than whether or not the shell is in debugging mode. + +aa. Fixed a problem with $HOME being converted to ~ in the expansion of + members of the DIRSTACK array. + +bb. Fixed a problem with quoted arguments to arithmetic expansions in certain + constructs. + +cc. The command word completion code now no longer returns matching directories + while searching $PATH. + +dd. Fixed a bug with zero-padding and precision handling in snprintf() + replacement. + +ee. Fixed a bug that caused the command substitution code not to take embedded + shell comments into account. + +ff. Fixed a bug that caused $((...);(...)) to be misinterpreted as an + arithmetic substitution. + +gg. Fixed a bug in the prompt expansion code that inappropriately added a + \001 before a \002 under certain circumstances. + +hh. Fixed a bug that caused `unset LANG' to not properly reset the locale + (previous versions would set the locale back to what it was when bash + was started rather than the system's "native" locale). + +ii. Fixed a bug that could cause file descriptors > 10 to not be closed even + when closed explicitly by a script. + +jj. Fixed a bug that caused single quotes to be stripped from ANSI-C quoting + inside double-quoted command substitutions. + +kk. Fixed a bug that could cause core dumps when `return' was executed as the + last element of a pipeline inside a shell function. + +ll. Fixed a bug that caused DEBUG trap strings to overwrite commands stored in + the jobs list. + +2. Changes to Readline + +a. Fixed a problem that caused segmentation faults when using readline in + callback mode and typing consecutive DEL characters on an empty line. + +b. Fixed several redisplay problems with multibyte characters, all having to + do with the different code paths and variable meanings between single-byte + and multibyte character redisplay. + +c. Fixed a problem with key sequence translation when presented with the + sequence \M-\C-x. + +d. Fixed a problem that prevented the `a' command in vi mode from being + undone and redone properly. + +e. Fixed a problem that prevented empty inserts in vi mode from being undone + properly. + +f. Fixed a problem that caused readline to initialize with an incorrect idea + of whether or not the terminal can autowrap. + +g. Fixed output of key bindings (like bash `bind -p') to honor the setting of + convert-meta and use \e where appropriate. + +h. Changed the default filename completion function to call the filename + dequoting function if the directory completion hook isn't set. This means + that any directory completion hooks need to dequote the directory name, + since application-specific hooks need to know how the word was quoted, + even if no other changes are made. + +i. Fixed a bug with creating the prompt for a non-interactive search string + when there are non-printing characters in the primary prompt. + +j. Fixed a bug that caused prompts with invisible characters to be redrawn + multiple times in a multibyte locale. + +k. Fixed a bug that could cause the key sequence scanning code to return the + wrong function. + +l. Fixed a problem with the callback interface that caused it to fail when + using multi-character keyboard macros. + +m. Fixed a bug that could cause a core dump when an edited history entry was + re-executed under certain conditions. + +n. Fixed a bug that caused readline to reference freed memory when attmpting + to display a portion of the prompt. + +3. New Features in Bash + +a. Changed the parameter pattern replacement functions to not anchor the + pattern at the beginning of the string if doing global replacement - that + combination doesn't make any sense. + +b. When running in `word expansion only' mode (--wordexp option), inhibit + process substitution. + +c. Loadable builtins now work on MacOS X 10.[34]. + +d. Shells running in posix mode no longer set $HOME, as POSIX requires. + +e. The code that checks for binary files being executed as shell scripts now + checks only for NUL rather than any non-printing character. + +f. Quoting the string argument to the [[ command's =~ operator now forces + string matching, as with the other pattern-matching operators. + +4. New Features in Readline + +a. Calling applications can now set the keyboard timeout to 0, allowing + poll-like behavior. + +b. The value of SYS_INPUTRC (configurable at compilation time) is now used as + the default last-ditch startup file. + +c. The history file reading functions now allow windows-like \r\n line + terminators. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-3.1-release, +and the previous version, bash-3.1-rc2. + +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 to 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 + manipulate 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 documentation 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 occurred 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 systematic 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 evaluation 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 + simplified 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 definitions 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 improvements 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 + synopsis. + +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 intended to allow users to terminate searches with + the arrow keys and get the behavior they expect. diff --git a/bash-5.1/COMPAT b/bash-5.1/COMPAT new file mode 100644 index 0000000..5cfb836 --- /dev/null +++ b/bash-5.1/COMPAT @@ -0,0 +1,552 @@ +Compatibility with previous versions +==================================== + +This document details the incompatibilities between this version of bash, +bash-5.1, and the previous widely-available versions, bash-3.2 (which is +still the `standard' version for Mac OS X), 4.2/4.3 (which are still +standard on a few Linux distributions), and bash-4.4/bash-5.0, the current +widely-available versions. These were discovered by users of bash-2.x +through 5.x, so this list is not comprehensive. Some of these +incompatibilities occur between the current version and versions 2.0 and +above. + +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. If they appear in the initial + environment, the export attribute will be set, but if bash provides a + default value, they will remain local to the current shell. + +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' + +31. Beginning with bash-3.2, bash follows the Bourne-shell-style (and POSIX- + style) rules for parsing the contents of old-style backquoted command + substitutions. Previous versions of bash attempted to recursively parse + embedded quoted strings and shell constructs; bash-3.2 uses strict POSIX + rules to find the closing backquote and simply passes the contents of the + command substitution to a subshell for parsing and execution. + +32. Beginning with bash-3.2, bash uses access(2) when executing primaries for + the test builtin and the [[ compound command, rather than looking at the + file permission bits obtained with stat(2). This obeys restrictions of + the file system (e.g., read-only or noexec mounts) not available via stat. + +33. Bash-3.2 adopts the convention used by other string and pattern matching + operators for the `[[' compound command, and matches any quoted portion + of the right-hand-side argument to the =~ operator as a string rather + than a regular expression. + +34. Bash-4.0 allows the behavior in the previous item to be modified using + the notion of a shell `compatibility level'. If the compat31 shopt + option is set, quoting the pattern has no special effect. + +35. Bash-3.2 (patched) and Bash-4.0 fix a bug that leaves the shell in an + inconsistent internal state following an assignment error. One of the + changes means that compound commands or { ... } grouping commands are + aborted under some circumstances in which they previously were not. + This is what Posix specifies. + +36. Bash-4.0 now allows process substitution constructs to pass unchanged + through brace expansion, so any expansion of the contents will have to be + separately specified, and each process substitution will have to be + separately entered. + +37. Bash-4.0 now allows SIGCHLD to interrupt the wait builtin, as Posix + specifies, so the SIGCHLD trap is no longer always invoked once per + exiting child if you are using `wait' to wait for all children. As + of bash-4.2, this is the status quo only when in posix mode. + +38. Since bash-4.0 now follows Posix rules for finding the closing delimiter + of a $() command substitution, it will not behave as previous versions + did, but will catch more syntax and parsing errors before spawning a + subshell to evaluate the command substitution. + +39. The programmable completion code uses the same set of delimiting characters + as readline when breaking the command line into words, rather than the + set of shell metacharacters, so programmable completion and readline + should be more consistent. + +40. When the read builtin times out, it attempts to assign any input read to + specified variables, which also causes variables to be set to the empty + string if there is not enough input. Previous versions discarded the + characters read. + +41. Beginning with bash-4.0, when one of the commands in a pipeline is killed + by a SIGINT while executing a command list, the shell acts as if it + received the interrupt. This can be disabled by setting the compat31 or + compat32 shell options. + +42. Bash-4.0 changes the handling of the set -e option so that the shell exits + if a pipeline fails (and not just if the last command in the failing + pipeline is a simple command). This is not as Posix specifies. There is + work underway to update this portion of the standard; the bash-4.0 + behavior attempts to capture the consensus at the time of release. + +43. Bash-4.0 fixes a Posix mode bug that caused the . (source) builtin to + search the current directory for its filename argument, even if "." is + not in $PATH. Posix says that the shell shouldn't look in $PWD in this + case. + +44. Bash-4.1 uses the current locale when comparing strings using the < and + > operators to the `[[' command. This can be reverted to the previous + behavior (ASCII collating and strcmp(3)) by setting one of the + `compatNN' shopt options, where NN is less than 41. + +45. Bash-4.1 conforms to the current Posix specification for `set -u': + expansions of $@ and $* when there are no positional parameters do not + cause the shell to exit. + +46. Bash-4.1 implements the current Posix specification for `set -e' and + exits when any command fails, not just a simple command or pipeline. + +47. Command substitutions now remove the caller's trap strings when trap is + run to set a new trap in the subshell. Previous to bash-4.2, the old + trap strings persisted even though the actual signal handlers were reset. + +48. When in Posix mode, a single quote is not treated specially in a + double-quoted ${...} expansion, unless the expansion operator is + # or % or the new `//', `^', or `,' expansions. In particular, it + does not define a new quoting context. This is from Posix interpretation + 221. + +49. Posix mode shells no longer exit if a variable assignment error occurs + with an assignment preceding a command that is not a special builtin. + +50. Bash-4.2 attempts to preserve what the user typed when performing word + completion, instead of, for instance, expanding shell variable + references to their value. + +51. When in Posix mode, bash-4.2 exits if the filename supplied as an argument + to `.' is not found and the shell is not interactive. + +52. When compiled for strict Posix compatibility, bash-4.3 does not enable + history expansion by default in interactive shells, since it results in + a non-conforming environment. + +53. Bash-4.3 runs the replacement string in the pattern substitution word + expansion through quote removal. The code already treats quote + characters in the replacement string as special; if it treats them as + special, then quote removal should remove them. + +54. Bash-4.4 no longer considers a reference to ${a[@]} or ${a[*]}, where `a' + is an array without any elements set, to be a reference to an unset + variable. This means that such a reference will not cause the shell to + exit when the `-u' option is enabled. + +55. Bash-4.4 allows double quotes to quote the history expansion character (!) + when in Posix mode, since Posix specifies the effects of double quotes. + +56. Bash-4.4 does not inherit $PS4 from the environment if running as root. + +57. Bash-4.4 doesn't allow a `break' or `continue' in a function to affect + loop execution in the calling context. + +58. Bash-4.4 no longer expands tildes in $PATH elements when in Posix mode. + +59. Bash-4.4 does not attempt to perform a compound array assignment if an + argument to `declare' or a similar builtin expands to a word that looks + like a compound array assignment (e.g. declare w=$x where x='(foo)'). + +60. Bash-5.0 only sets up BASH_ARGV and BASH_ARGC at startup if extended + debugging mode is active. The old behavior of unconditionally setting + BASH_ARGC and BASH_ARGV is available at compatibility levels less than + or equal to 44. + +61. Bash-5.0 doesn't allow a `break' or `continue' in a subshell to attempt + to break or continue loop execution inherited from the calling context. + +62. Bash-5.0 doesn't allow variable assignments preceding builtins like + export and readonly to modify variables with the same name in preceding + contexts (including the global context) unless the shell is in posix + mode, since export and readonly are special builtins. + +63. Bash-5.1 changes the way posix-mode shells handle assignment statements + preceding shell function calls. Previous versions of POSIX specified that + such assignments would persist after the function returned; subsequent + versions of the standard removed that requirement (interpretation #654). + Bash-5.1 posix mode assignment statements preceding shell function calls + do not persist after the function returns. + +64. Bash-5.1 reverts to the bash-4.4 treatment of pathname expansion of words + containing backslashes but no other special globbing characters. This comes + after a protracted discussion and a POSIX interpretation (#1234). + +65. In bash-5.1, disabling posix mode attempts to restore the state of several + options that posix mode modifies to the state they had before enabling + posix mode. Previous versions restored these options to default values. + + +Shell Compatibility Level +========================= + +Bash-4.0 introduced the concept of a `shell compatibility level', specified +as a set of options to the shopt builtin (compat31, compat32, compat40, +compat41, and so on). There is only one current compatibility level -- +each option is mutually exclusive. The compatibility level is intended to +allow users to select behavior from previous versions that is incompatible +with newer versions while they migrate scripts to use current features and +behavior. It's intended to be a temporary solution. + +This section does not mention behavior that is standard for a particular +version (e.g., setting compat32 means that quoting the rhs of the regexp +matching operator quotes special regexp characters in the word, which is +default behavior in bash-3.2 and above). + +If a user enables, say, compat32, it may affect the behavior of other +compatibility levels up to and including the current compatibility level. +The idea is that each compatibility level controls behavior that changed in +that version of bash, but that behavior may have been present in earlier +versions. For instance, the change to use locale-based comparisons with +the `[[' command came in bash-4.1, and earlier versions used ASCII-based +comparisons, so enabling compat32 will enable ASCII-based comparisons as +well. That granularity may not be sufficient for all uses, and as a result +users should employ compatibility levels carefully. Read the documentation +for a particular feature to find out the current behavior. + +Bash-4.3 introduced a new shell variable: BASH_COMPAT. The value assigned +to this variable (a decimal version number like 4.2, or an integer +corresponding to the compatNN option, like 42) determines the compatibility +level. + +Starting with bash-4.4, bash has begun deprecating older compatibility +levels. Eventually, the options will be removed in favor of the +BASH_COMPAT variable. + +Bash-5.0 is the final version for which there will be an individual shopt +option for the previous version. Users should use the BASH_COMPAT variable +on bash-5.0 and later versions. + +The following table describes the behavior changes controlled by each +compatibility level setting. The `compatNN' tag is used as shorthand for +setting the compatibility level to NN using one of the following +mechanisms. For versions prior to bash-5.0, the compatibility level may be +set using the corresponding compatNN shopt option. For bash-4.3 and later +versions, the BASH_COMPAT variable is preferred, and it is required for +bash-5.1 and later versions. + +compat31 + - the < and > operators to the [[ command do not consider the current + locale when comparing strings; they use ASCII ordering + - quoting the rhs of the [[ command's regexp matching operator (=~) + has no special effect + +compat32 + - the < and > operators to the [[ command do not consider the current + locale when comparing strings; they use ASCII ordering + - interrupting a command list such as "a ; b ; c" causes the execution + of the next command in the list (in bash-4.0 and later versions, + the shell acts as if it received the interrupt, so interrupting + one command in a list aborts the execution of the entire list) + +compat40 + - the < and > operators to the [[ command do not consider the current + locale when comparing strings; they use ASCII ordering. + Bash versions prior to bash-4.1 use ASCII collation and strcmp(3); + bash-4.1 and later use the current locale's collation sequence and + strcoll(3). + +compat41 + - in posix mode, `time' may be followed by options and still be + recognized as a reserved word (this is POSIX interpretation 267) + - in posix mode, the parser requires that an even number of single + quotes occur in the `word' portion of a double-quoted ${...} + parameter expansion and treats them specially, so that characters + within the single quotes are considered quoted (this is POSIX + interpretation 221) + +compat42 + - the replacement string in double-quoted pattern substitution is not + run through quote removal, as it is in versions after bash-4.2 + - in posix mode, single quotes are considered special when expanding + the `word' portion of a double-quoted ${...} parameter expansion + and can be used to quote a closing brace or other special character + (this is part of POSIX interpretation 221); in later versions, + single quotes are not special within double-quoted word expansions + +compat43 + - the shell does not print a warning message if an attempt is made to + use a quoted compound assignment as an argument to declare + (declare -a foo='(1 2)'). Later versions warn that this usage is + deprecated. + - word expansion errors are considered non-fatal errors that cause the + current command to fail, even in posix mode (the default behavior is + to make them fatal errors that cause the shell to exit) + - when executing a shell function, the loop state (while/until/etc.) + is not reset, so `break' or `continue' in that function will break + or continue loops in the calling context. Bash-4.4 and later reset + the loop state to prevent this + +compat44 + - the shell sets up the values used by BASH_ARGV and BASH_ARGC so + they can expand to the shell's positional parameters even if extended + debug mode is not enabled + - a subshell inherits loops from its parent context, so `break' + or `continue' will cause the subshell to exit. Bash-5.0 and later + reset the loop state to prevent the exit + - variable assignments preceding builtins like export and readonly + that set attributes continue to affect variables with the same + name in the calling environment even if the shell is not in posix + mode + +compat50 (set using BASH_COMPAT) + - Bash-5.1 changed the way $RANDOM is generated to introduce slightly + more randomness. If the shell compatibility level is set to 50 or + lower, it reverts to the method from bash-5.0 and previous versions, + so seeding the random number generator by assigning a value to + RANDOM will produce the same sequence as in bash-5.0 + - If the command hash table is empty, bash versions prior to bash-5.1 + printed an informational message to that effect even when writing + output in a format that can be reused as input (-l). Bash-5.1 + suppresses that message if -l is supplied + + +------------------------------------------------------------------------------- + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without any warranty. diff --git a/bash-5.1/COPYING b/bash-5.1/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/bash-5.1/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + 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 +state 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) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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 Lesser General +Public License instead of this License. But first, please read +. diff --git a/bash-5.1/CWRU/PLATFORMS b/bash-5.1/CWRU/PLATFORMS new file mode 100644 index 0000000..f05caff --- /dev/null +++ b/bash-5.1/CWRU/PLATFORMS @@ -0,0 +1,31 @@ +The version of bash in this directory has been compiled on the +following systems: + +By chet: + +SunOS 4.1.4 +SunOS 5.5 +BSDI BSD/OS 2.1 +FreeBSD 2.2 +NetBSD 1.2 +AIX 4.2 +AIX 4.1.4 +HP/UX 9.05, 10.01, 10.10, 10.20 +Linux 2.0.29 (libc 5.3.12) +Linux 2.0.4 (libc 5.3.12) + +By other testers: + +SCO ODT 2.0 +SCO 3.2v5.0, 3.2v4.2 +SunOS 5.3 +SunOS 5.5 +BSD/OS 2.1 +FreeBSD 2.2 +SunOS 4.1.3 +Irix 5.3 +Irix 6.2 +Linux 2.0 (unknown distribution) +Digital OSF/1 3.2 +GNU Hurd 0.1 +SVR4.2 diff --git a/bash-5.1/CWRU/README b/bash-5.1/CWRU/README new file mode 100644 index 0000000..7d7ca1a --- /dev/null +++ b/bash-5.1/CWRU/README @@ -0,0 +1,20 @@ +Contents of this directory: + +changelog - my change log since the last release + +POSIX.NOTES - list of what changes for `posix mode' + +README - this file + +misc - directory with some useful tools + +The following are distributed `as-is'. They will not apply without some +modification. + +sh-redir-hack - diff to parse.y to get redirections before + compound commands + +empty-for-wordlist - diff to parse.y to allow an empty wordlist after + the `in' keyword in a `for' statement + +mh-folder-comp - diffs that reportedly add MH folder completion diff --git a/bash-5.1/CWRU/changelog b/bash-5.1/CWRU/changelog new file mode 100755 index 0000000..27f62c0 --- /dev/null +++ b/bash-5.1/CWRU/changelog @@ -0,0 +1,9182 @@ + + 9/15/2016 + --------- +[bash-4.4 released] + + 9/17 + ---- +builtins/common.c + - display_signal_list: if 0 is supplied as an argument to kill -l, + display a signal-out-of-range error. Fixes bug reported by + Martijn Dekker + + 9/18 + ---- +print_cmd.c + - print_heredoc_bodies: take a list of redirections, all here documents, + and print the here-document bodies including the ending delimiter, + followed by a newline + - print_redirection_list: print the heredoc headers the first time + through the list of redirections so we print them in the same left- + to-right order they're supplied; print the bodies and delimiters with + print_heredoc_bodies after we print all the redirections if we're + not printing a list of commands (printing_connection == 0). Fix for + problem reported by Isabella Parakiss + - print_deferred_heredocs: don't print heredoc headers, since they're + now printed in print_redirection_list + - print_deferred_heredocs: use print_heredoc_bodies + + 9/20 + ---- +builtins/mapfile.def + - readarray: update usage synopsis to include -d delim. Report and + fix from jhankins@homewood.k12.al.us + +test.c + - test_binop: if op[0] == '-', make sure op[1] != 0 before checking + op[2] or op[3]. Fixes out-of-bounds read reported by Franco + Costantini + +parse.y + - cond_term: if yylval.word->word[0] == '-' make sure word[1] != 0 + before checking word[2] and calling test_unop. Fixes out-of-bounds + read reported by Franco Costantini + - make sure to check all instances of the return value of the + simple_command production before trying to hook redirections onto it, + since it can potentially return NULL. + Reported by Franco Costantini + + 9/21 + ---- +parse.y + - token_is_assignment: make sure to check that the return value from + assignment() finds the `=' we just added at index I to avoid false + positives from g=g=g=g=g=g=(). Reported by Franco Costantini + + + 9/22 + ---- +parse.y + - token_is_assignment: if we're not using the bash malloc (which has + guard bytes after the requested allocation size), use a new + buffer so we can make sure it's big enough to hold the current + token and at least two additional characters. Reported by + Franco Costantini + + 9/23 + ---- +execute_cmd.c + - execute_in_subshell: call without_job_control for both job control + and non-job-control builds to avoid waiting for last_made_pid + inherited from parent shell. Related to fix from 8/4 to + initialize_subshell. Fixes bug reported by Martijn Dekker + + +builtins/declare.def + - local_builtin: allow `local --help' to work even when not executing + a function. Suggestion from Norm Abramovitz + + 9/25 + ---- +builtins/printf.def + - bexpand: if passed a null or empty string, return a newly-allocated + empty string (so the return value can always be freed) instead of + NULL. + - printstr: if passed a null string, treat it as if it were an empty + string so any precision or fieldwidth arguments are handled + correctly. Report from isabella parakiss + +subst.c + - skip_matched_pair: make the flags argument of 1 affect whether or + not backslash can quote characters in the string, so it affects + all quoting mechanisms + +arrayfunc.c + - unbind_array_element: now takes a third (flags) argument; flags&1 + means to not expand an associative array index. This is only called + from a shell builtin context, which means the argument should have + already undergone word expansion, so it should be ok. Will still + be a problem for uses like "unset -v 'var[$ind]'", quoted to avoid + globbing + - valid_array_reference: pass second flags argument to skipsubscript; + still set to 0 by all callers + +arrayfunc.h + - unbind_array_element: updated prototype + +builtins/set.def + - unset_builtin: add third argument of 1 to unbind_array_element calls + [TEMPORARILY DISABLED] + - unset_builtin: call valid_array_reference with second arg of 1 to + handle unmatched pairs of quotes and [/] + +array.c + - array_reference: optimize access locality as well as sequential + access by adding ability to start from last-accessed element and move + backwards or forwards depending on the desired index. Inspired by + report from Tom McCurdy and followup from + Christian Franke + +variables.c + - all_array_variables: include associative arrays, not just indexed + arrays. Reported by Grisha Levit + +execute_cmd.c + - execute_disk_command: if we're optimizing out the fork (CMD_NO_FORK), + decrement the shell level so we don't end up incrementing it twice. + We should decrement the shell level for an implicit exec like an + explicit one. Reported by Stephane Chazelas + + +builtins/exec.def + - exec_builtin: don't bother to decrement the shell level if we are + already in a `(command)' subshell. Reported by Stephane Chazelas + + +lib/readline/macro.c + - macro_level: count of macro nesting level, maintained by + _rl_push_executing_macro and _rl_pop_executing macro + - _rl_with_macro_input: if current nesting level exceeds + MAX_MACRO_LEVEL, abort the current command line with _rl_abort_internal + and return to the top level. Reported by Christian Klomp + + +lib/readine/history.c + - add_history: if allocating the history list for the first time, + make sure the max history list size isn't so large that it will + cause allocation errors. Cap it at MAX_HISTORY_INITIAL_SIZE + (8192). Reported by Sean Zha + +jobs.c + - wait_for: if a foreground job with job control enabled is killed by a + SIGINT and sourcelevel != 0, act as if we received the SIGINT so the + file sourcing can be terminated. Reported by PePa + + + 9/26 + ---- +subst.c + - read_comsub: only warn once for null bytes in command substitution + output, instead of once for every null byte + +arrayfunc.c + - array_variable_part: now takes a `flags' argument; changed all callers + to initially pass 0 + - array_variable_name: now takes a `flags' argument; changed all callers + to initially pass 0 + - array_variable_name: pass `flags' argument to skipsubscript instead + of just passing 0 + +arrayfunc.h + - array_variable_{name,part}: added new argument to prototypes + + 9/29 + ---- +bashline.c + - bash_directory_completion_hook: don't bother to try and expand a + ${ or $( that isn't complete; expand_prompt_string will complain. + Fixes reports from John Passaro and + Valentin Bajrami + +lib/readline/history.c + - _hs_append_history_line: use a strategy that attempts to avoid + realloc copying memory to a newly-allocated block if the history + line we're appending to gets `too long' (currently 256 bytes). + We reallocate in powers of 2 starting at 512, and rely on realloc + not allocating a new block and copying into it if the size is the + same as the last call to realloc. Addresses issue raised by + Hubert Schmid + +trap.h + - check_signals: new extern declaration + - trapped_signal_received: new extern declaration + +builtins/read.def + - read_builtin: if one of the zread* functions returns < 0 (which + usually only happens in Posix mode), make sure we call check_signals() + before eventually calling run_pending_traps() because zread() isn't + going to call it + - include trap.h for correct extern functions and variable declarations + +lib/sh/zread.c + - zread: if executing a builtin, call check_signals_and_traps() for + backwards compatibility. If not, call check_signals() only, because + we don't want to run traps during, for instance, reading command + substitution output. Fixes race condition bug reported by Luiz Angelo + Daros de Luca + + 9/30 + ---- +subst.c + - command_substitute: reset parse_and_execute_level to 0 in the child + process, since it's independent of the other parse_and_execute + calls. Adds command substitution inside other parse_and_execute + calls optimizations to suppress forks, as suggested by + Martijn Dekker + + 10/3 + ---- +configure.ac + - SHOBJ_STATUS: make sure it defaults to unsupported and is substituted + if the shobj-conf script isn't run. Fixes `make install' bug with + a minimal config reported by Andrew Tomazos + + 10/5 + ---- +support/shobj-conf + - darwin: set compatibility_version for a shared build of the readline + library (the standalone readline distribution shares this file) to + $(SHLIB_MAJOR)$(SHLIB_MINOR). Recommendation from Max Horn + + + 10/6 + ---- +array.h + - array_first_index: new convenience define + +array.c + - ADD_AFTER: new define, complement of ADD_BEFORE + - UNSET_LASTREF: now takes an array as an argument, prepping for move + of lastref pointer into the array struct + - array_insert: check whether we are adding at the beginning of the + array and take a fast path if so + - array_insert: use same strategy as array_reference to find the place + to insert, starting from the last-referenced element and moving + forward or back from there; use ADD_AFTER if moving backward + - array_insert: if replacing an existing element, just replace the + value with new->value instead of the entire element + - array_reference: short-circuit quickly if looking for an element + before the first assigned index + - array_reference: if we don't find the element, leave lastref pointing + to the closest element under the assumption we will be assigning or + looking for something close + - array_reference: take advantage of ordered indexes to short-circuit + when looking for element that is not set + + 10/7 + ---- +array.c + - array_remove: short-circuit if asked to remove index after max + index or before first index + + 10/10 + ----- +lib/malloc/malloc.c + - internal_realloc: if we are requesting reallocation to the same size + as the block's current size, short-circuit and return `mem' right + after doing bounds check + - internal_realloc: if we are reducing the size of an allocation, and + the new size fits in the next lower bin, just keep the same block + and adjust the size, so we can avoid some copies + +parse.y + - set_line_mbstate: keep track of the allocated size of + shell_input_line_property, only request reallocation if the size + increases, but don't let it get too big + + 10/11 + ----- +jobs.c + - wait_for_background_pids: make sure we wait for pid in + last_procsub_child since it's not found in any job -- still needs + more work to wait for multiple process substitutions + +subst.c + - process_substitute: if make_child fails, make sure we call + restore_pipeline to undo the previous save_pipeline() + + 10/15 + ----- +subst.c + - process_substitute,command_substitute: leave subshell_level (reflected + as $BASH_SUBSHELL) intact for any exit trap instead of decrementing + it. Suggested by Martijn Dekker + +builtins/evalstring.c + - optimize_subshell_command: new function, framework for optimizing + out forks for command that have already forked and are executing + in a subshell. Not used yet + +expr.c + - readtok: if we have a post-increment or post-decrement, and the + previous token is not a string, check whether the previous token is + a number that results from a pre-increment or pre-decrement, and + make that an error. Report from Conrad Hoffmann + + 10/16 + ----- +aclocal.m4 + - BASH_JOB_CONTROL_MISSING: convert from AC_TRY_RUN to AC_TRY_COMPILE + with existing set of preprocessor defines, so it can work when + cross-compiling. Suggested by Felix Janda + + 10/19 + ----- +variables.c + - get_bashpid: BASHPID is no longer readonly; assignments to it are + just ignored. + +doc/{bash.1,bashref.texi} + - BASHPID: note that assignments are ignored and unsetting BASHPID + causes it to lose its special properties + + 10/28 + ----- +builtins/pushd.def + - popd_builtin: make sure to check the normalized stack offset + (i.e., negatives counting back from the end of the stack) is within + bounds before trying to free that stack entry. Report from + Fernando Muñoz + +lib/readline/histfile.c + - chown: protect calls with HAVE_CHOWN. Fixes for MinGW{64,32} from + J. Peter Mugaas + +lib/readline/colors.c + - S_ISDIR: add define if missing + - S_ISUID, S_ISGID, S_ISLNK, S_ISSOCK: don't use unless defined. + Fixes for MinGW{64,32} from J. Peter Mugaas + +bashhist.c + - current_command_line_comment: set to the most recent line in a + possibly multi-line command that contains a shell comment; set in + maybe_add_history and bash_add_history to either the current + command number or -2 + - maybe_add_history: set current_command_line_comment for first line + of command + - bash_add_history: chars_to_add set to "\n" if the current command line + is one greater than the previous line containing a comment + (current_command_line_comment). Fixes complaint from back in + January, 2016 from Dave Rutherford + +array.h + - lastref: move last-referenced pointer into each array struct, so all + arrays can have reference locality + +array.c + - array_create: set lastref element to 0 + - array_copy: if copying the lastref in array a, set the new lastref + in the copy to the same element + - IS_LASTREF, LASTREF_START, LASTREF, INVALIDATE_LASTREF, SET_LASTREF, + UNSET_LASTREF: change to use new array `lastref' member + +pathexp.c + - quote_string_for_globbing: if quoting for a regexp, make sure to + skip and copy a leading `^' in a bracket expression, and skip and + copy a subsequent `]' (after an optional `^'), so that leading + bracket doesn't close the bracket expression. Report from + Stephane Chazelas + + 10/29 + ----- +subst.c + - extract_delimited_string: add calls to CHECK_STRING_OVERRUN for + $( inside $((, nested OPENERs, nested ALT_OPENERs, and backquotes + - skip_to_delim: add calls to CHECK_STRING_OVERRUN for $(, ${, + process substitution + - extract_dollar_brace_string: add calls to CHECK_STRING_OVERRUN for + $( + - extract_dollar_brace_string: use skipsubscript to skip over the + array subscript in ${var[sub]} (non-quoted case uses string_extract, + which already uses skipsubscript). Tagged for bash-5.0 + + 10/30 + ----- +variables.c + - EPOCHSECONDS: new dynamic variable, time in seconds since Unix + epoch; assignments are ignored. Can be used on systems where + strftime() doesn't support '%s' + - EPOCHREALTIME: new dynamic variable, time in seconds since Unix + epoch with microsecond granularity + +doc/{bash.1,bashref.texi} + - EPOCHSECONDS documentation + - EPOCHREALTIME documentation + +execute_cmd.c + - decpoint: moved to locale.c, renamed locale_decpoint; changed callers + +{bashintl,externs}.h + - locale_decpoint: extern declaration or #define if support for + localeconv() not there + + 10/31 + ----- +lib/malloc/malloc.c + - posix_memalign: add new posix-mandated interface + +examples/loadables/rm.c + - rm: minimal loadable builtin, removes files and directories, only + handles -r and -f options. Original from Tim Ruehsen + , heavily rewritten for inclusion as loadable + +examples/loadables/Makefile.in + - rm: add rules to build rm as one of the `other' targets + +examples/loadables/stat.c + - stat: new loadable builtin that takes a filename and loads the info + returned by stat(2) into an associative array specified by the -A + argument (default STAT) + + 11/1 + ---- +variables.c + - BASH_ARGV0: new dynamic variable, returns $0 on reference and sets + $0 on assignment. From a suggestion from Rocky Bernstein + a few years ago + +doc/{bash.1,bashref.texi} + - BASH_ARGV0: document + + 11/2 + ---- +lib/glob/sm_loop.c + - parse_collsym: make sure to not return an out-of-bounds read if a + collating symbol is unterminated. Fixes OOB read reported by + Jerzy Kramarz + - brackmatch: after incrementing p, before checking whether it's a + character range, check whether *p was NULL before the increment + and short-circuit the bracket expression if it is + +jobs.c + - discard_last_procsub_child: new function, safely discards + last_procsub_child and sets it to NULL + +subst.c + - process_substitute: call discard_last_procsub_child instead of + calling discard_pipeline directly. Fixes bug reported by + Christian Weisgerber + + 11/3 + ---- +shell.h + - EX_DISKFALLBACK: new special return status available to builtins; + means to attempt to execute a disk command with the same name as + the builtin + +examples/loadables/rm.c + - if we see the -i option, return EX_DISKFALLBACK + +execute_cmd.c + - execute_simple_command: if executing a builtin returns EX_DISKFALLBACK, + try running execute_disk_command instead + +bashline.c + - shell_expand_line: use expand_word to expand the readline line + buffer, which allows us to pass flags with the word. If a numeric + argument is supplied, do not perform quote removal (pass + Q_HERE_DOCUMENT since here-doc quoting does the right thing) and + do not perform command or process subsitution. From a suggestion + by Dabrien 'Dabe' Murphy based on an old bug-bash + discussion + +subst.c + - expand_word_internal: note that we have added a quoted IFS char to + istring by setting sentinel has_quoted_ifs. Usually we only add + one if we are not going to be performing word splitting, but we + will not perform word splitting if there's no expansion, so we need + to take care of that case + - expand_word_internal: when performing final word split, if there are + no expansions but has_quoted_ifs is non-zero, call remove_quoted_ifs() + to remove any quoted ifs characters we added while processing + - remove_quoted_ifs: new function, removes CTLESC chars preceding + (single-byte) chars in IFS. Used when we are not performing word + splitting. Fixes bug reported by Martijn Dekker + + 11/4 + ---- +lib/readline/macro.c + - _rl_peek_macro_key: return the next character from the current + keyboard macro; the next character from the `next' keyboard macro, + if there is one, if at the end of the current macro; or 0 to + indicate that we are at the end of a keyboard macro sequence + +lib/readline/rlprivate.h + - _rl_peek_macro_key: extern declaration + +lib/readline/readline.c + - _rl_dispatch_subseq: add test for ESC at the end of a keyboard macro, + which should cause the keyboard timeout for ESC to kick in. The + previous test didn't run the timeout code if executing from a macro, + even if we had read the last character of the macro. Fixes bug + reported by Clark Wang + +lib/glob/sm_loop.c + - GMATCH: allow trailing backslash in pattern to explicitly match a + backslash that is the last character in the string. Bug report from + Stephane Chazelas + + 11/5 + ---- +builtins/common.c + - display_signal_list: if displaying a signal name corresponding to an + exit status > 128, don't display the SIG prefix at all. Old code + made displaying the SIG prefix dependent on JOB_CONTROL define. + Report and fix from Martijn Dekker + +execute_cmd.c + - execute_subshell_builtin_or_function: call without_job_control even + if JOB_CONTROL is not defined. Similar to fix from 9/23. + Report from Martijn Dekker + +execute_cmd.c + - execute_simple_command: free memory allocated and passed to + make_child in the child process if JOB_CONTROL is defined + - execute_command_internal: free memory allocated and passed to + make_child in the child process created to run a () subshell or a + compound command within a pipeline if JOB_CONTROL is defined + - execute_coproc: free memory allocated and passed to make_child in + the child process if JOB_CONTROL is defined + - execute_disk_command: free memory allocated and passed to + make_child in the child process if JOB_CONTROL is defined. This + series of fixes is the result of reports from + Eduardo A. Bustamante López + + 11/6 + ---- +lib/sh/unicode.c + - u32toutf16: fix to prevent outputting broken surrogate pairs for + Japanese locales (ja_JP.UTF-8) on cygwin (which uses UTF-16 natively). + Report and fix from Koichi MURASE + +builtins/trap.def + - trap_builtin: if OP is `-' (revert), set the SIGINT signal handler + to sigint_sighandler if the shell is interactive and sourcing a + file (interactive_shell && sourcelevel) or running a trap + (interactive_shell && running_trap) even if it's not currently + interactive. Report from Martijn Dekker + +builtins/read.def + - check for and read multibyte characters in all cases, not just when + we are reading a specific number of characters, as long as + mb_cur_max > 1 + +subst.c + - expand_word_internal: some improvements to code that converts istring + into a WORD_LIST * to avoid multiple allocations and copies of + istring, which is already malloc'ed memory -- reduce number of malloc + and free calls + +test.c + - unary_test: make sure if we test -v array[@] or array[*] that we + free the return value from array_value + + 11/8 + ---- +expr.c + - expcond: make sure to set `noeval' before reading tokens depending on + the result of the conditional test, since readtok() can evaluate + identifiers (and recursively those containing expressions). Report + and fix from Koichi MURASE + +builtins/evalstring.c + - should_suppress_fork: make sure to check for traps on EXIT and + ERR, since any_signals_trapped() only checks for `real' signals, + not the fake shell ones. Fixes bug reported by Werner Fink + + - optimize_subshell_command: ditto + + 11/9 + ---- +eval.c + - reader_loop: change so that we don't reset the SIGINT handler every + time through the command loop in an interactive shell if the signal + is trapped (as the comment noted). Reported by Report from Martijn + Dekker + +subst.c + - parameter_brace_{patsub,remove_pattern,transform,casemod}: save and + restore this_command_name while temporarily setting it for use in + error messages. Fixes use-after-free error reported by + Jerzy Kramarz + - string_extract_verbatim: make sure when we increment i by 2 due to + a CTLESC or CTLESC-CTLNUL that we don't read past the end of the + string. This can happen if the string ends with an odd number of + CTLESC chars. Fixes oob-read error reported by + Jerzy Kramarz + + 11/11 + ----- +configure.ac,aclocal.m4 + - BASH_FUNC_SBRK: make sure sbrk actually works, instead of being just + a stub function like on several Linux distributions + +lib/malloc/malloc.c + - malloc_usable_size: return the maximum number of bytes available for + a particular memory allocation (size of block allocated for it) + + 11/12 + ----- +configure.ac + - changes to make --enable-profiling work on Linux (-pg, no static link, + no -static in LDFLAGS) + +Makefile.in + - changes to make --enable-profiling work on Linux (take + ${PROFILE_FLAGS} out of BASE_CCFLAGS, add to CCFLAGS instead; add + BASE_LDFLAGS define that doesn't include -pg or -static; use + BASE_LDFLAGS in LDFLAGS; move ${PROFILE_FLAGS} and ${STATIC_LD} to + LDFLAGS) + +tests/run-gprof + - changes to make profiling test suite with gprof work on Linux (set + GMON_OUT_PREFIX to handle multiple profiled processes per test; + change default filename to gmon.out from bash.gmon; look for + gprof output files in ${TMPDIR} instead of /tmp; handle multiple + profiling files starting with $GMON_OUT_PREFIX) + +locale.c + - locale_isutf8: use locale_charset() if it's available and nl_langinfo + isn't + - locale_isutf8: add code to parse a locale specification and determine + whether the encoding is UTF-8 (or utf8) in the absence of + nl_langinfo and locale_charset + - set_default_locale: make sure to set locale_utf8locale early on + - locale_utf8locale: set via call to locale_isutf8 wherever LANG, + LC_ALL, or LC_CTYPE is set + + 11/13 + ----- +lib/readline/display.c + - rl_redisplay: handle report of potential integer overflow in + horizontal display mode from Mateusz Lenik + +lib/sh/mbschr.c + - mbschr: if in a UTF-8 locale (locale_utf8locale) and we are looking + for an ASCII character, use (essentially) strchr as a shortcut + +lib/sh/shmbchar.c + - utf8_{mbstrlen,mblen,mbsmbchar,mbsnlen}: UTF-8-specific replacement + functions (should also be able to use utf8_mblen in subst.c: + string_extract_verbatim) + - mbsmbchar: if locale_utf8locale is true, call utf8_mbsmbchar + - mbsmbchar: in UTF-8 locale, use utf8_mblen instead of mbrlen (not + used if earlier shortcut taken) + +lib/sh/unicode.c + - u32cconv: don't use nl_langinfo early to call u32toutf8() + - u32cconv: use locale_utf8locale to set utf8locale + - u32cconv: when initializing (u32init == 0), use locale_charset, then + nl_langinfo, then stub_charset to determine the charset + - u32cconv: even if we don't have iconv, if locale_utf8locale is non- + zero, return u32toutf8 + + 11/15 + ----- +lib/readline/nls.c + - _rl_init_locale: new function, split off code that determines current + locale from _rl_init_eightbit, use it to set _rl_utf8locale + +lib/readiline/rlprivate.h + - _rl_init_locale: new extern declaration + +lib/readline/readline.c + - rl_initialize: if not initializing everything the first time, call + _rl_init_locale to check current locale and set _rl_utf8locale + +lib/readline/text.c + - _rl_insert_char: optimize cases where we are inserting a single-byte + character in a locale with multibyte characters + - _rl_insert_char: check whether character is single byte if we know + we are in a UTF-8 locale, optimize single-byte case to avoid calls + to mbrtowc and memmove/memcpy + +lib/readline/mbutil.c + - _rl_char_value: if we are in a UTF-8 locale (_rl_utf8locale) and the + current character does not have the eighth bit set ((c & 0x80) == 0), + return that char without bothering to call mbrtowc + - _rl_adjust_point: don't bother calling mbrlen if we are in a UTF-8 + locale and the current character is not a multibyte character + - _rl_find_next_mbchar_internal: if we are in a UTF-8 locale, use that + to avoid calls to mbrtowc + +lib/readline/display.c + - _rl_col_width: if in a UTF-8 locale, take advantage of that to avoid + calls to mbrlen and mbrtowc + - rl_redisplay: if in a UTF-8 locale, take advantage of that to avoid + calls to mbrtowc + + 11/17 + ----- +lib/readline/histlib.h + - PATTERN_SEARCH: new flag for history search interfaces, means to + search for a pattern as Posix specifies + +lib/readline/histsearch.c + - history_search_internal: now takes a `flags' argument instead of just + an `anchored' argument to accommodate PATTERN_SEARCH + - _hs_history_patsearch: new internal interface to use when flags + specify PATTERN_SEARCH + +lib/readline/rlprivate.h + - SF_PATTERN: new flag for non-incremental search contexts, means to + treat search string as a pattern (maps to PATTERN_SEARCH) + +lib/readline/search.c + - noninc_dosearch: takes an additional `flags' argument for SF_PATTERN + - noninc_search_from_pos: takes an additional `flags' argument for + SF_PATTERN + - noninc_dosearch: pass flags argument through to noninc_search_from_pos + - _rl_nsearch_init: if we are in vi command mode, and `pchar' (key used + to invoke the search) is `?' or `/', add SF_PATTERN to the flags + to conform to Posix spec for vi-mode editing + - _rl_nsearch_dosearch: if cxt->sflags indicates that we should do a + pattern search, pass SF_PATTERN to noninc_search_from_pos + - rl_noninc_forward_search_again: if in vi command mode and key == `N', + make sure flags arg passed to noninc_dosearch includes SF_PATTERN + - rl_noninc_reverse_search_again: if in vi command mode and key == `n', + make sure flags arg passed to noninc_dosearch includes SF_PATTERN + - rl_history_search_internal: pass extra flags arg to noninc_search_from_pos + + 11/18 + ----- +lib/readline/search.c + - noninc_search_from_pos: takes a new argument, a pointer to int where + it stores the offset of the match in the history line (if non-NULL), + modified callers + - rl_history_search_internal: pass newcol pointer to + noninc_search_from_pos to avoid having to recompute the match offset + in the matching history entry + +config.h.in + - define HAVE_FNMATCH if we have the fnmatch function (configure was + already checking for it) + +lib/readline/histsearch.c + - _hs_history_patsearch: transform the pattern into one ending in a + `*' to avoid having to perform multiple match attempts from each + index in the history line + - history_search_internal: changes to handle pattern matching if + PATTERN_SEARCH is in the flags and HAVE_FNMATCH is defined. This + makes vi-mode history searching treat the user-specified search + string as an fnmatch pattern, as Posix requires. Fixes issue + reported by + + 11/19 + ----- +builtins/shopt.def + - shopt_enable_hostname_completion: only declare this if READLINE + defined, since that's the only time it's used. Reported by + isabella parakiss + + 11/20 + ----- +builtins/common.c + - display_signal_list: make `kill -l 0' print `EXIT', modifying change + from 9/17 + + 11/21 + ----- +subst.c + - expand_word_internal: when the shell encounters a backslash as the + last character of the string, don't try to add a '\'0' to the end + of the string if the string is quoted, just add a <\> and + skip to the end of string processing. Fixes oob-read error + reported by Jerzy Kramarz + +test.c + - two_arguments: check argv[pos][1] before checking argv[pos][2] when + looking for a unary argument. Fixes oob-read error on single `-' + in unary operator position reported by Jerzy Kramarz + + - ANDOR: check s[1] before checking s[2] in case s[1] == end of string. + Fixes oob-read error reported by Jerzy Kramarz + +subst.c + - command_substitute: now takes additional flags argument, changed one + caller (param_expand) to pass through PF_ASSIGNRHS flag; other callers + pass 0 + - command_substitute: pass through flags argument to read_comsub + - read_comsub: now takes additional new flags argument to indicate + whether or not the word is in a context where word splitting will + eventually be performed + - read_comsub: if we are running in a context where word splitting + will not take place (PF_ASSIGNRHS), we read a CTLESC, and CTLESC is + in $IFS, add a CTLESC to make sure it gets through a round of + dequoting + + 11/23 + ----- +parse.y + - xparse_dolparen: since reset_parser frees the pushed string list, + and this is supposed to be a separate parsing context, we need to + save and restore pushed_string_list around the call to parse_string + and reset_parser. Fixes bug reported by Dan Douglas + + +bashhist.h + - HISTEXPAND_DEFAULT: default value of history_expansion, moved here + from flags.c + +flags.[ch] + - histexp_flag: new variable, this is what set -H/set -o histexpand + sets; history_expansion set to value of this variable; defaults to 0 + - history_expansion: now set to HISTEXPAND_DEFAULT + +bashhist.c + - bash_history_reinit: if interact == 0, set history_expansion to the + value of histexp_flag, to allow -H option to enable history + expansion + - bash_history_reinit: if interact == 0, make sure + history_expansion_inhibited is set opposite of histexp_flag, so + enabling history expansion with -H invocation option turns off + inhibited expansion. If interactive shell, we turn it off so + history_expansion controls whether or not history expansion takes + place. In practice, this function is always called with interact == 0, + and -c command still doesn't perform history expansion + +shell.c + - init_interactive: make sure histexp_flag and history_expansion are + identical in an interactive shell; allows both -H/+H option and + default compilation options (HISTEXPAND_DEFAULT) to work + + 11/24 + ----- +subst.c + - get_word_from_string: take advantage of the fact that SEPARATORS is + always a (possibly local) copy of IFS, so build a local charmap of + separators and use it instead of the (cached and possibly stale) + ifs_cmap map and isifs macro. Fixes bug with -N stripping leading + whitespace reported by Clark Wang + + 11/25 + ----- +builtins/read.def + - read_builtin: make `i' volatile, since auto variables are technically + undefined after a longjmp, and a timeout on SIGALRM causes one. + Fix suggested by Dmitry Goncharov + + 11/27 + ----- +parse.y + - shell_getc: if we are reading input from a string, and we get the + ending '\0', and we are not expanding an alias, return EOF right + away. It might be an eval'ed string that has a syntax error. + Fixes bug reported by Dan Douglas + + 11/28 + ----- +subst.c + - expand_word_internal: if we're expanding a quoted string containing + a tilde as the first character of a word, only expand the tilde if + we're expanding an array subscript (Q_ARRAYSUB), not if we're + expanding any arithmetic expression (Q_ARITH). This fixes a + backwards compatibility issue with expressions like ~0 reported by + Bize Ma + +subst.c + - parameter_brace_expand_indir: if the variable is not special and + the indirect variable is unset (!variable where variable is unset), + report an error. This is a slight incompatibility with previous + versions, which did not differentiate between indirecting an unset + variable and an indirect expansion resulting in an unset variable. + Fixes omission reported by otenba@protonmail.com + + 11/30 + ----- +lib/readline/doc/{rluser.texi,readline.3},doc/bash.1 + - do-uppercase-version: since this doesn't actually exist, replace it + with do-lowercase-version, with the caveat that do-lowercase-version + results in undefined behavior if bound to a character that's + already lowercase. Suggested by Branden Robinson + + +lib/readline/doc/rluser.texi + - history-substring-search-forward: was misspelled as "substr-search"; + ditto for search-backward + +doc/bash.1 + - history-substring-search-{backward,forward}: add documentation, text + straight from readline.3 + +jobs.c + - initialize_job_control: if the terminal's process group is valid, + but the shell is not the foreground process, check for terminating + signals (like SIGHUP, which the kernel would send if the process + group were orphaned) during the loop where we try to stop the shell + if it's not in the foreground. Not a perfect solution; the kernel + might not send SIGHUP + + 12/1 + ---- +jobs.c + - initialize_job_control: only go through the SIGTTIN loop 16 times at + most before deciding we're in the background and probably a member of + an orphaned process group; set original_pgrp to the terminal's pgrp + (so the eventual give_terminal_to doesn't leave the terminal in the + wrong pgrp); and bail on job control initialization + +tests/run-all + - unset SHELLOPTS to avoid its options `polluting' the test + environment. Suggestion from Vladimir Marek + + +tests/execscript + - use $PWD/exec8.sub to protect against someone who has a cd command + in his bashrc. Report from Vladimir Marek + + + 12/2 + ---- +shell.c + - open_shell_script: call end_job_control before exiting the shell in + case we were run as `bash -i script' and there is a problem with + executing `script'. If we don't, the terminal ends up in the wrong + process group. Fix from Clark Wang + + 12/3 + ---- +parse.y + - read_comsub: if we look for a character following a `<' and it's + not `<' (indicating that we don't have to read a here-document), + make sure we push that character back and go through the loop again + so we note the right word start location. Fixes bug reported by + parasite parasite <42parasite@gmail.com> + +subst.c + - parameter_brace_expand_indir: clean up checks for unset variables to + minimize incompatibilities with previous versions + + 12/5 + ---- +lib/readline/history.c + - add_history: don't update history_length until all of the updates to + the_history are complete, so history_length is always consistent. + Report and fix from Hong Cho + +bashline.c + - bash_backward_shellword: fix to work better at the end of the line, + with multiple trailing whitespace characters. Inspired by report + from Kirill Timofeev + +Makefile.in + - bashbug: use `^' as the sed delimiter instead of `%'; some compilers + use `%' in CFLAGS. Report from Vladimir Marek + + + 12/6 + ---- +test.c + - test_unop: make sure op[1] != 0 before testing op[2] + - term: make sure argv[pos][1] != 0 before testing argv[pos][2]. Fixes + oob-read reported by Jerzy Kramarz + + 12/7 + ---- +lib/glob/glob.c + - glob_filename: assign the return value of realloc (results, ...) to + a temp pointer, so if realloc returns NULL, we make sure we free + results. Report from Kirill Timofeev + + 12/12 + ----- +lib/sh/shquote.c + - sh_backslash_quote: if FLAGS&2, backslash-quote other single-byte + characters that are in the current locale's character class + +builtins/printf.def + - printf_builtin: when processing the `%q' format, make sure to + backslash quote all characters by making sure that FLAGS + passed to sh_backslash_quote includes 2. Fixes issue for certain + iso-8859-1 locales where character 160 (octal 240, hex 0xa0) is a + non-breaking space. Report from Stephane Chazelas + + +lib/sh/eaccess.c + - sh_stat: if DEV_FD_STAT_BROKEN is defined, take /dev/fd/N and turn + it into a stat on file descriptor N, as if /dev/fd were not + available. This is the case on some old versions of SunOS. Report + and patch from Dmitry Goncharov + +config.h.in + - DEV_FD_STAT_BROKEN: add define + +configure.ac + - --enable-dev-fd-stat-broken: new command-line option, defines + DEV_FD_STAT_BROKEN if supplied at configure time + +doc/bashref.texi + - --enable-dev-fd-stat-broken: document new command-line option for + configure + +arrayfunc.c + - assoc_expand_once: new variable, declared here just because + +arrayfunc.h + - assoc_expand_once: extern declaration + - AV_NOEXPAND: new flag value for the array_value family of functions: + means to not run associative array subscripts through word expansion + +builtins/set.def + - unset_builtin: call unbind_array_element with assoc_expand_once as + third arg, controls whether we expand associative array subscripts + (if 1, we suppress the usual expansion). With accompanying shopt, + provides backwards compatible option to solve problem with quotes + and other characters in associative array subscripts pointed out + most recently by Mingye Wang (Arthur2e5) + +builtins/shopt.def + - assoc_expand_once: new option, controls value of internal variable + with the same name. Currently undocumented because I'm not completely + sold on the name + +expr.c + - evalexp: now takes a second argument, flags. Changed all callers in + multiple other files (builtins/let.def,execute_cmd.c,arrayfunc.c, + subst.c,test.c,variables.c) + +externs.h + - EXP_EXPANDED, new flag for second argument to evalexp + +builtins/let.def + - let_builtin: add EXP_EXPANDED to flags passed to evalexp + +execute_cmd.c + - execute_arith_command: add EXP_EXPANDED to flags passed to evalexp, + since the command string is run through expand_words_no_vars before + being evaluated + +expr.c + - set expression-global variable already_expanded if flags arg to + evalexp contains EXP_EXPANDED + - if assoc_expand_once option set and already_expanded flag set, pass + 1 in flags to array_variable_part to skip over quotes and expansions + in the subscript + - if those two variables set, pass AV_NOEXPAND as flag to + get_array_value to prevent word expansions on the subscript + +arrayfunc.c + - if flags passed to unbind_array_element includes 1, pass flag on to + skipsubscript so we don't expect matched quotes or process + expansions in the subscript + - if flags to array_value_internal include AV_NOEXPAND, pass 1 as flag + to array_variable_part to pass along to skipsubscript + - if flags to array_value_internal include AV_NOEXPAND, don't call + expand_assignment_string_to_string; just use the unexpanded subscript + to produce the key [THIS IS A WORK IN PROGRESS] + + 12/14 + ----- +subst.h + - ASS_NOEXPAND: assignment flag that inhibits expansion of associative + array subscripts + +variables.c + - bind_int_variable: takes new flags arg; flags are taken from the + ASS_ set of assignment flags, changed callers (bashline.c, expr.c, + pcomplete.c) + - bind_int_variable: if flags includes ASS_NOEXPAND, pass 1 as flag to + valid_array_reference and array_variable_part to pass along to + skipsubscript, so we don't try to skip over quoted strings in the + subscript + - bind_int_variable: pass flags along to assign_array_element + +variables.h + - bind_int_variable: updated extern declaration with new flags arg + +expr.c + - expr_bind_variable: if the assoc_expand_once option is enabled, and + the flags to evalexp indicate that we have already run the expression + through word expansion, pass ASS_NOEXPAND as flag to bind_int_variable + +arrayfunc.c + - assign_array_element: if flags includes ASS_NOEXPAND, pass 1 as flag + to array_variable_name to pass along to skipsubscript + - assign_array_element: if flags includes ASS_NOEXPAND, don't run an + associative array subscript through word expansion, just use as-is + +subst.c + - param_expand: call evalexp with EXP_EXPANDED flag for arithmetic + substitution because the string has already been expanded with + expand_arith_string + + 12/15 + ----- +builtins/read.def + - read_builtin: use value of assoc_expand_once for valid_array_reference + as with other uses + - bind_read_variable: if assoc_expand_once is set, pass ASS_NOEXPAND + to assign_array_element + +general.c + - assignment: instead of checking whether flags == 0 to allow a `[', + explicitly check for (flags&1) to disallow it. This leaves the door + open for additional flag values + +builtins/printf.def + - printf_builtin: use value of assoc_expand_once for + valid_array_reference as with other uses + - bind_printf_variable: if assoc_expand_once is set, pass ASS_NOEXPAND + to assign_array_element + + 12/16 + ----- +builtins/history.def + - change history -d option to handle negative arguments; negative + arguments offset from the end of the history list (last_position + 1 + so history -d -1 deletes the history -d command that just got + added). Original patch from Piotr Grzybowski + +doc/bash.1,lib/readline/doc/hsuser.texi + - documented new behavior of negative offsets for `history -d' + + 12/17 + ----- +lib/readline/history.c + - remove_history: use memmove to move the history list around instead + of a loop that copies pointers one at a time, similar to add_history + + 12/19 + ----- +configure.ac + - linux: make sure PGRP_PIPE is defined unconditionally for all kernel + versions greater than 2.3.* + +lib/readline/history.c + - clear_history: when clearing the history, reset history_base to 1 + (its default) + - remove_history_range: new function, removes a set of history entries + and returns them all for deallocation + +lib/readline/history.h + - remove_history_range: extern declaration + + 12/20 + ----- +execute_cmd.c + - eval_arith_for_expr: pass EXP_EXPANDED to evalexp, since we run the + expression through expand_words_no_vars + + 12/21 + ----- +input.c + - b_fill_buffer: when read returns EOF or error, and we reset the + buffer and pointers, reset the input pointer to 0. Fixes issue + reported by Stephane Chazelas + + 12/22 + ----- +arrayfunc.[ch],subst.c + - array_expand_index: added new FLAGS argument, reserved for future use, + changed callers + + + 12/24 + ----- +variables.c + - can_optimize_assignment,optimized_assignment: see if we can detect + whether or not we're trying to append a string to a string variable, + and optimize that using realloc/strcpy. Based on a log-ago + suggestion from Aharon Robbins + + 12/27 + ----- +builtins/help.def + - help_builtin: don't pass return value from ngettext() directly to + printf + + 12/28 + ----- +sig.c + - set_signal_handler: set SA_RESTART for SIGWINCH, so window size + changes don't interrupt open/read/write. Suggested by + Andriy Prystupa back in 10/2016 + + 12/30 + ----- +execute_cmd.c + - coproc_pidchk: if MULTIPLE_COPROCS, call cpl_search to find coproc + associated with pid, don't remove it from the list with cpl_delete. + Just mark as dead and wait for coproc_reap/cpl_reap to take care + of disposing it + - execute_coproc: NEW FEATURE: run the coproc name through word + expansion before creating the coproc; this allows unique coprocs + to be created in loops. Originally requested way back in 2012 by + Erik Brandsberg + +command.h + - subshell_com: now has a line number member: line + +make_cmd.c + - make_subshell_command: assign current line number (line number of the + ending right paren) to `line' member + +copy_cmd.c + - copy_subshell_command: copy the `line' member + +execute_command.c + - execute_command_internal: when executing a user subshell (`(command)'), + set the line number and line number for the ERR trap from the line + number saved in the subshell command struct. Fix from + Eduardo A. Bustamante López + - execute_arith_command: set line number for ERR trap from line number + saved in the arith command struct. Fix from + Eduardo A. Bustamante López + - execute_cond_command: set line number for ERR trap from line number + saved in the cond command struct. Fix from + Eduardo A. Bustamante López + +variables.c + - bind_variable_internal: move can_optimize_assignment call to the + right place + + 12/31 + ----- +variables.c + - find_variable_nameref: treat a circular variable reference as + referring to a variable of that name in the global scope (for now), + if one exists. PROVISIONAL change: inspired by suggestion back in + 6/2016 by Grisha Levit + + 1/2/2017 + -------- +{expr,general,hashcmd}.c + - include flags.h for flag values + +make_cmd.c + - include shell.h instead of the files it includes + +flags.h + - new extern declarations for want_pending_command, read_from_stdin + +subst.h + - add extern declaration for expanding_redir, assigning_in_environment + +trap.h + - add extern declaration for running_trap + +execute_cmd.h + - added extern declarations for variables declared in execute_cmd.c, + changed files that declare lots of extern variables + +shell.h + - added extern declarations for variables declared in shell.c, + changed files that declare lots of extern variables + +parser.h + - added extern declarations for variables declared in parse.y, + changed files that declare lots of extern variables + +[lots of changes to reduce the number of extern declarations in C and DEF files] + +parse.y + - xparse_dolparen: need ALIAS or DPAREN_ARITHMETIC to be defined to + use STRING_SAVER + + 1/3 + --- +sig.c + - termsig_handler: don't call end_job_control if subshell_environment + indicates that we're in a command or process substitution. + Provisional fix for bug reported by Russell King + +jobs.c + - end_job_control: only attempt to give the terminal back to + original_pgrp if job_control != 0; don't test interactive_shell + +execute_cmd.c + - execute_disk_command: call QUIT after search_for_command, since + the only time QUIT gets called is when the path is actually + searched. It doesn't happen for an absolute pathname. Fix for + bug reported by Russell King + + 1/16 + ---- +lib/glob/glob.c + - extglob_skipname,wextglob_skipname: if we don't find a reason to + not skip the name in any subpattern (r returns 0 for any subpattern), + return 1 because we should skip the name + - extglob_skipname,wextglob_skipname: if we don't find a reason to + not skip the name in any subpattern, but the first part of the extglob + pattern is a wildcard (`*(pat)'), check the rest of the pattern, if + any, to decide whether or not to skip the name. Fixes bug reported + by Grisha Levit + +lib/glob/glob_loop.c + - CHAR -> GCHAR (unsigned char); change uses of CHAR to GCHAR + +lib/glob/glob.c + - wchkname -> wskipname + - wskipname: now takes a third `flags' argument, like the other variants + of skipname + + 1/17 + ---- +redir.c + - here_document_to_fd: set the file descriptor open for writing to the + here document to be close-on-exec. Fixes bug reported by + Siteshwar Vashisht + + 1/18 + ---- +{gmisc,gm_loop}.c + - match_pattern_char,match_pattern_wchar: moved to gm_loop.c (new file), + compile twice for single and wide characters as with the rest of + the functions + - umatchlen,wmatchlen: ditto + - extglob_pattern_p: move to gm_loop.c, generalize for regular and + wide-char versions + + 1/19 + ---- +lib/readline/complete.c + - stat_char: fix small memory leak if stat/lstat returns -1 + +bashline.c + - bash_filename_stat_hook,bash_directory_completion_hook: make sure + expand_prompt_string is caled wth W_NOPROCSUB flag + - directory_exists: don't dequote the filename passed as an argument; + this function should never get quoted pathnames + +subst.c + - expand_word_internal: when calling expand_word_internal recursively + after reading a double-quoted string, make sure the W_NOCOMSUB and + W_NOPROCSUB flags make it to the recursive invocation. Fixes bug + reported by Jens Heyens + + 1/23 + ---- +lib/readline/signals.c + - _rl_orig_sigset: original signal mask, set and restored by + rl_set_signals (rl_clear_signals doesn't block signals). If we + are not installing signal handlers, just save signal mask each + time rl_set_signals is called + +lib/readline/input.c + - rl_getc: use _rl_orig_sigmask in the call to pselect(), so we block + the set of signals originally blocked by the calling application. + Fixes bug reported by Frédéric Brière + +parse.y + - yy_readline_get: try to unset NONBLOCK mode on readline's input + file descriptor before calling readline(). Inspired by report from + Siteshwar Vashisht + + 1/30 + ---- +parse.y + - parse_comsub: don't unconditionally set the LEX_WASDOL flag when we + see a `$'; we should toggle it to accommodate things like $$. + Fixes bug reported by Christian Weisgerber + - parse_matched_pair: do the same thing with LEX_WASDOL + + 2/1 + --- +jobs.h + - JWAIT_PERROR,JWAIT_FORCE: new defines for the wait_for_ family of + functions + +jobs.c + - wait_for_job, wait_for_any_job: take new flags argument for use by + the wait builtin + - wait_for_job: if JWAIT_FORCE flag supplied, loop waiting for job to + terminate instead of change state + - wait_for_single_pid: if JWAIT_FORCE flag supplied, loop waiting for + child process to terminate instead of change state + +builtins/wait.def + - takes a new `-f' option, signifying to wait until the specified job + or process terminates, instead of changes state + +doc/{bash.1,bashref.texi} + - wait: document the new -f option and its behavior when job control + is enabled + - job control: add a paragraph describing how the wait builtin changes + behavior when job control is enabled: it returns when a job changes + state + + 2/2 + --- +examples/loadables/fdflags.c + - fdflags: new loadable builtin to set and unset file descriptor flags + (such as non-blocking, though bash undoes that) for descriptors bash + has open. Developed in consultation with Christos Zoulas + + + 2/3 + --- + +lib/readline/text.c + - rl_previous_screen_line: attempt to move to the same column on the + previous screen line of the current readline buffer by moving back + a number of characters equal to the screen width + - rl_next_screen_line: attempt to move to the same column on the + next screen line of the current readline buffer by moving forward + a number of characters equal to the screen width. Both originally + suggested by Hans Ginzel + +lib/readline/readline.h + - rl_{next,previous}_screen_line: extern declarations + +lib/readline/funmap.c + - {next,previous}-screen-line: new bindable command names + +lib/readline/doc/{rluser.texi,readline.3} + - {next,previous}-screen-line: document behavior, including limitations + + 2/5 + --- +lib/readline/input.c + - rl_read_key: when reading input from a macro, make sure to return + the next character as an unsigned char, so we handle multibyte + character sequences correctly. Report and fix from Grisha Levit + + + 2/6 + --- +shell.c + - --pretty-print: new invocation option, currently undocumented, dumps + a pretty-printed version of a shell script given as an argument to + stdout + - main: call pretty_print_loop() if we're in pretty-printing mode in + a non-interactive shell + +eval.c + - pretty_print_loop: new function, similar to reader_loop, reads + commands and prints them by displaying the result from + make_command_string() + +externs.h + - pretty_print_loop: new extern declaration + + 2/9 + --- +doc/{bash.1,bashref.texi} + - here strings: correct documentation to note they do not undergo + brace expansion. Report from Conor McCarthy + + 2/9 + --- +lib/readline/display.c + - expand_prompt: instead of recomputing the line break offsets for + prompts that span multiple screen lines on every call to rl_redisplay, + do it here. Manage a local array local_prompt_newlines; set an offset + every time `physchars' hits a multiple of the screen width. Inspired + by https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843819 + - rl_redisplay: don't calculate multi-line prompt line break indices + here; use the values calculated by expand_prompt + - rl_{save,restore}_prompt: save and restore local_prompt_newlines + + 2/11 + ---- +lib/readline/mbutil.c + - _rl_find_prev_mbchar_internal: since we're traversing the string + from the beginning, shortcut non-multibyte characters in a UTF-8 + locale + +parse.y + - parse_comsub: if we are parsing a here document with a quoted + delimiter (LEX_QUOTEDDOC), we should not remove + pairs from the body of the here document. Need to add LEX_QUOTEDDOC + to the values in tflags when calling shell_getc. Fixes bug reported + by Michael Homer , patch was originally + contributed by Geir Hauge + + 2/15 + ---- +jobs.c + - bgp_add: if hashed pid collides with bgpids.head index, print a + warning and move to the next index. Attempt to avoid collision + problem reported by Graham Northup + + 2/17 + ---- +subst.c + - process_substitute: call remove_quoted_escapes on the command string + like command substitution does, since the string will be run through + the parser again. Fixes bug reported by David Simmons + + +config-top.h + - STATIC_PATH_VALUE: new config variable, undefined by default + +variables.c + - shell_initialize: if STATIC_PATH_VALUE is defined, use it to set the + PATH variable at shell startup, overriding the environment and any + value for DEFAULT_PATH_VALUE. Based on a suggestion from + Lonnie Abelbeck + + 2/18 + ---- +shell.c + - maybe_make_restricted: clear the hash table before making the PATH + variable read-only by calling stupidly_hack_special_variables. + Suggestion from Lonnie Abelbeck + +subst.c + - expand_string_for_pat: change expansion of WORD in ${param[%[%]][#[#]]word} + to use this new function, initially identical to + expand_string_for_rhs + - getpattern: use expand_string_for_pat to expand the pattern + + 2/19 + ---- +subst.c + - expand_string_for_rhs: now that this is only used to expand the RHS + of the various non-pattern ${paramOPword} expansions, set + expand_no_split_dollar_star depending on whether or not the entire + brace expansion is going to be subjected to word splitting: if it's + quoted or if IFS is set but null, we will not be splitting so we set + this to 1 and let $* expand to separate fields separated by a space. + This was heavily debated back in October 2014 and resulted in Posix + interp 888. Reported by Martijn Dekker + + 2/20 + ---- +subst.c + - expand_string_for_rhs: now takes `op' (brace expansion operator) as + an additional argument; changed call in parameter_brace_expand_rhs + - expand_string_for_rhs: make sure to set expand_no_split_dollar_star + if `op' is `=', since we are supposed to preserve the assignment + statement expansion semantics on the RHS of ${param=word} + +jobs.c + - bgp_delindex: make sure to set ps->pid to NO_PID so we more + effectively remove it from the hash table. It shouldn't matter as + long as nothing in pidstat_table points to it, but better to be safe + - bgp_delete,bgp_search: generalize previous collision detection to + loop detection: abort search if we are going to go back to the + first index we tried + + 2/21 + ---- +lib/readline/vi_mode.c + - rl_vi_bword: if we're trying to move backward to non-whitespace + in a line that begins with whitespace, make sure we don't move + point to 0 and test memory locations before the start of the + buffer. Report and fix from Jason Hood + +lib/readline/display.c + - expand_prompt: if _rl_screenwith == 0, call rl_reset_screen_size to + initialize it. If it's still 0 after that, guess that the screen + width is 80 and use that to guess how many screen lines the prompt + consumes + +lib/readline/readline.c + - readline_internal_setup: if in emacs editing mode, and we are + showing the editing mode in the prompt, call _rl_reset_prompt() to + make sure that the updated setting of _rl_show_mode_in_prompt + (presumably set in an inputrc file) is reflected in the redisplay + performed by rl_callback_newline via readline_internal_setup. + Fix from Jason Hood + + 2/22 + ---- +builtins/complete.def + - print_one_completion,print_compopts: make sure to display the + `nosort' and `noquote' options if they've been set for a particular + compspec. Fix from Grisha Levit + +builtins/read.def + - read_builtin: if -e is supplied, read needs to free rlbuf before + returning, since it uses discard_unwind_frame at that point. Bug + and fix from ZhangXiao + +execute_cmd.c + - execute_for_command: when using a nameref as the for loop control + variable, make sure we check for readonly namerefs and make sure + that we force bind_variable to enforce restrictions on nameref + assignments. Fix from Grisha Levit + + 2/23 + ---- +general.c + - make_absolute: convert deprecated cygwin_conv_to_full_posix_path + to cygwin_conv_path (CCP_WIN_A_TO_POSIX, ...) + +{shell,variables}.c,config-top.h + - modify change from 2/17: rename STATIC_PATH_VALUE to RBASH_STATIC_PATH_VALUE; + don't use it in shell_initialize; set PATH to it just before + imposing restricted shell restrictions + + 2/24 + ---- +subst.c + - expand_string_for_rhs: revert change from 2/19 concerning setting + expand_no_split_dollar_star so we are consistent with the Posix + examples. This anticipates Martijn Dekker initiating an austin + group discussion about this case + + 2/25 + ---- +pcomplete.c + - gen_shell_function_matches: if COMPREPLY is an associative array, + don't coerce it to an indexed array, which will fail to produce any + matches anyway. Report from Grisha Levit + - bind_comp_words: if COMP_WORDS exists as a nameref variable, ignore + the nameref attribute. Report from Grisha Levit + + +subst.c + - parameter_brace_expand: if expand_no_split_dollar_star is set, make + sure chk_atstar treats ${var[*]} as quoted by passing Q_DOUBLE_QUOTES + as the second argument. Fixes differing treatment of $* and ${v[*]} + reported by Grisha Levit , because otherwise + *contains_dollar_at gets set to 1 and the word is inappropriately + split + + 3/1 + --- +subst.c + - expand_word_list_internal: if a variable assignment fails (e.g., due + to a readonly variable) in a non-interactive posix mode shell, don't + abort the shell if the assignment is being performed by the command + builtin, even if it's something like `command eval v=1'. Fixes + RedHat bug https://bugzilla.redhat.com/show_bug.cgi?id=1389838 + (reported by Denys Vlasenko) + + 3/3 + --- +builtins/shopt.def + - set_compatibility_level: make sure that changing the compatibility + level sets or modifies BASH_COMPAT. Fixes bug reported by + Stephane Chazelas + +lib/glob/smatch.c + - is_cclass: broke into two functions: is_valid_cclass and cclass_test, + for future expansion. No functionality change + +lib/glob/sm_loop.c + - BRACKMATCH: when testing a character against a character class name, + use the unfolded (original) character, since we're not performing a + comparison. This is what glibc does. Fixes bug reported by + Lukáš BaÅinka + + 3/4 + --- +doc/{bash.1,bashref.texi} + - note that the arguments to -eq and the rest of the arithmetic + operators are evaluated as expressions when using [[. Report from + Rob la Lau + + + 3/7 + --- +lib/readline/display.c + - update_line: completely rewrote the code that handles line wrapping + in the presence of multibyte/double-width characters; punts to a + dumb update in cases where the number of screen positions doesn't + match + - update_line: in one case, where we are deleting characters from the + line, if we are writing a non-space into the last screen character + position, note that we are no longer using a space as a placeholder + for a line wrap where there is a multi-width character that won't + fit on the screen line (wrapped_line[current_line+1] = 0) + + 3/10 + ---- +lib/readline/readline.c + - bind_arrow_keys_internal: add default key bindings for control- + arrow keys, suggested by Per Bothner + + 3/13 + ---- +doc/{bash.1,bashref.texi} + - clarify the prompt strings the undergo expansion (PS0, PS1, PS2, and + PS4) before being displayed. Based on a report from Grisha Levit + + + 3/14 + ---- +input.c + - bufstream_ungetc: return EOF if being asked to unget a character to + a NULL buffer + - buffered_getchar: check buffered_fd is valid and buffers[buffered_fd] + is non-NULL before trying to dereference. Fixes bug reported by + floyd + +execute_cmd.c + - execute_null_command: if we fork to execute the command, the subshell + is not interactive + - execute_null_command: for safety's sake, if a redirection attached + to a null command affects fd 0 or the fd the shell is reading for + input, and the redirection can potentially change or close that file + descriptor, force a fork so the redirection is done in a subshell + + 3/15 + ---- +lib/readline/display.c + - update_line: if we have to output some bytes, and we are outputting + the prompt string, make sure we correct _rl_last_c_pos if we are + at the wrap offset -- what if all of the characters in the prompt + are invisible, so the visible length is 0? Fixes display bug + reported by Grisha Levit + +execute_cmd.c + - undo_partial_redirects: new function, performs redirections specified + in redirection_undo_list and disposes of them. Intended to be used + to unwind redirections performed before a redirection error + - dispose_partial_redirects: new function, disposes of + redirection_undo_list and nulls the list + - execute_command_internal: use undo_partial_redirects + +execute_cmd.h + - undo_partial_redirects: extern declaration + - dispose_partial_redirects: extern declaration + +subst.c + - exp_jump_to_top_level: if we are throwing an expansion error while + expanding a redirection (expanding_redir != 0), undo any undoable + redirections by calling undo_partial_redirects() so we don't leave + any in place + +variables.c + - initialize_shell_variables: if SHELLOPTS is in the environment, + unset the readonly attribute on any existing variable with that + name. It may have been created by processing a -o option on the + command line. Fixes issue reported by Stephane Chazelas + + + 3/16 + ---- +lib/readline/histfile.c + - read_history_range: short-circuit and do nothing if the history file + is of 0 size + - read_history_range: make sure the buffer is zero-terminated so the + timestamp tests work right for history files of 1 character. Report + and recommended fix from Denis Martinez + +lib/readline/complete.c + - compute_lcd_of_matches: when trying to compute the common prefix + of a set of matches while performing case-insensitive completion + matching, don't sort the match list unless rl_sort_completion_matches + is non-zero. Fixes problem reported by Roee Bar + + 3/18 + ---- +subst.c + - extract_dollar_brace_string: handle process substitution embedded in + a ${...} expansion in the same way as command substitution. Reported + by D630 + +parse.y + - LEX_GTLT: new flag, set by parse_matched_pair when a `<' or '>' is + read + - parse_matched_pair: handle an embedded process substitution like an + embedded command substitution if we are parsing an array index or + a dollar-brace expansion. Reported by D630 + + 3/21 + ---- +subst.h + - ASS_NOEVAL, ASS_NOLONGJMP: new values for assignments, used by + make_variable_value + +variables.c + - make_variable_value: ASS_NOEVAL: if this is set, don't attempt + arithmetic evaluation or case modification, just produce the value + (still honor ASS_APPEND) + - make_variable_value: ASS_NOLONGJMP: don't longjmp back to top_level + if arithmetic evaluation fails due to a syntax error + - bind_variable_internal: make sure aflags is passed to all calls to + make_variable_value + - push_temp_var: add ASS_NOLONGJMP to the flags passed to + bind_variable_internal. Fixes bug reported by D630 + +bashline.c + - bash_execute_unix_command: don't bother to attempt optimization by + checking whether the call to parse_and_execute changes $READLINE_LINE; + it can be defeated by the new code that optimizes appends to string + variables. Bug reported by Grisha Levit + + 3/22 + ---- +subst.c + - expand_string_for_rhs: re-apply change from 2/19 based on discussion + on the austin-group mailing list about how unquoted ${var-$*} + expands when IFS is null. Originally reported by Martijn Dekker + + + 3/25 + ---- +parse.y + - read_token_word: if we read a WORD immediately after a CASE, FOR, or + SELECT, increment `expecting_in_token' to note that we're going to + be reading IN as the next non-newline token + - special_case_tokens: if we're expecting an IN (expecting_in_token > 0) + and we have an "in", return IN and decrement expecting_in_token. This + is a better implementation of Posix grammar rule 6 than the previous + code in that function (which is still there for posterity, but should + eventually be removed). Fixes bug reported by Torka Noda + + +subst.c + - string_list_pos_params: if the expansion is not quoted, and IFS is + null, return a string containing the quoted positional parameters + separated by spaces. Callers know what to do with the string + - parameter_brace_substring,parameter_brace_remove_pattern, + parameter_brace_transform,parameter_brace_patsub,parameter_brace_casemod: + for the VT_POSPARMS case, after calling the operator-specific + expansion function, which eventually calls string_list_pos_params, + leave the returned string alone, since it's already quoted properly + - parameter_brace_expand: after calling the above functions to perform + expansions, if the expansion is being performed on an unquoted $* + when IFS is null, set the W_SPLITSPACE flag in the return WORD_DESC + so that splitting on spaces is performed on the already-quoted word. + Fixes bug reported by Grisha Levit + + 3/28 + ---- +subst.c + - process_substitute: change so the subshell doesn't inherit the 'v' + option, like command substitution now does (as of bash-4.4). + Suggested by Grisha Levit + + 3/30 + ---- +subst.c + - parameter_brace_casemod: now takes a pflags parameter, like + parameter_brace_patsub; changed callers + - parameter_brace_transform: now takes a pflags parameter, like + parameter_brace_patsub; changed callers + - pos_params_pat_subst,pos_params_modcase: if mflags indicates we're + on the rhs of an assignment statement and not going to perform + word splitting, we're expanding $*, and $IFS is null, make sure + string_list_pos_params treats the expansion as double-quoted, so + the positional parameters will be concatenated. Fixes bug reported + by Grisha Levit + + 3/31 + ---- +doc/{bash.1,bashref.texi} + - add notes to the description of pipelines emphasizing that each + element of a pipeline is executed in a subshell, referring to the + description of a command execution environment, and that the + lastpipe option can modify that behavior. From a discussion with + Jean Delvare + + 4/1 + --- +subst.c + - expand_word_internal: set had_quoted_null to note for later if we + expand '', "", or "$x" when x is unset + - expand_word_internal: if we expand "$param" (or "${param}") and we + come back with a single word with the W_HAVEQUOTEDNULL flag set, + make sure we set had_quoted_null to remember it for later. In this + case, if we already have seen a quoted null and we expanded $@ in + this (sub)string expansion, we don't want to do any of the special + $@ handling. In particular, we don't want to set *expanded_something, + because that will result in word splitting and quoted null removal. + Fixes bug reported by Grisha Levit + - parameter_brace_patsub: when expanding ${*/pat/sub} in the case + where ifs_is_null != 0 and (pflags & PF_NOSPLIT2) (meaning we aren't + going to be doing word splitting), pass MATCH_ASSIGNRHS so we do + the right thing in this case. Part of a set of cases inspired by + Grisha Levit + - param_expand: case '*': if we are on the rhs of an assignment + (PF_ASSIGNRHS) and ifs is unset, and $1 == " ", we need to make sure + string_list_dollar_at gets called with Q_DOUBLE_QUOTES so it quotes + the positional parameters before joining them into a string with + string_list_internal. Otherwise, that first space gets removed by + the implicit word splitting that gets performed. Reported by + Grisha Levit + +array.c + - array_patsub,array_modcase: handle ${A[*]} identically to $* when + not quoted and IFS is null (separate with spaces). Makes things + like ${A[*]/x/y} behave the same as ${*/x/y} when IFS is null + +subst.c + - parameter_brace_patsub,parameter_brace_casemod: if expanding ${A[*]} + when the match is on the rhs of an assignment statement (PF_ASSIGNRHS) + and ifs is null, make sure the match is performed as if it were + quoted + - parameter_brace_substring: now takes a PFLAGS argument + - parameter_brace_substring: if expanding $* in a context where we + don't want to do word splitting (expand_no_split_dollar_star && + PF_NOSPLIT2), make sure we expand $* as if it were quoted + - parameter_brace_substring: if expanding an unquoted $* on the rhs of + an assignment statement when IFS is null, make sure we expand the $* + as if it were quoted + + 4/4 + --- +doc/{bash.1,bashref.texi} + - read: document that a delim argument of '' terminates each line when + a NUL character appears + + 4/5 + --- +subst.c + - parameter_brace_expand_word: handle case where unquoted $@ is + expanded in a context where word splitting is not performed (PF_NOSPLIT2) + and IFS is not equal to the standard value + - param_expand: handle case where unquoted $@ is expanded in a context + where word splitting is not performed (PF_NOSPLIT2) and IFS is not + equal to the standard value. Fixes bug with IFS == $1 when expanding + unquoted $@ reported by Grisha Levit + + 4/7 + --- +subst.c + - pos_params_pat_subst: if MATCH_ASSIGNRHS is set, don't expand $* + as quoted unless expand_no_split_dollar_star is also set. Fixes + expansion bug reported on 4/4 by Grisha Levit + - parameter_brace_transform: if we transform unquoted A[@] or A[*] + when IFS is null, don't quote the result of array_transform in the + same way we don't quote the result of parameter_list_transform, + since it will come back quoted. Fixes bug reported by + Grisha Levit + - list_transform: if we transform unquoted $* or ${a[*]} when IFS is + null and expand_no_split_dollar_star is non-zero, call + string_list_pos_params with Q_DOUBLE_QUOTES to inhibit splitting. + We do this in all cases except @Q, which is inconsistent but more + intuitive. + Fixes bug reported by Grisha Levit + + 4/8 + --- +builtins/read.def + - read_mbchar: if unbuffered == 2, we are running read -N and need to + use zreadn to read the rest of the multibyte char, since the + previous call to zreadn may have buffered characters. Fixes bug + reported by Stephane Chazelas + +pathexp.h + - QGLOB_CTLESC: new flag for quote_string_for_globbing: means to turn + CTLESC CTLESC (quoted CTLESC that's usually removed as part of + word splitting or quote removal) into CTLESC + +pathexp.c + - quote_string_for_globbing: if QGLOB_CTLESC is present in flags, + turn CTLESC CTLESC into CTLESC, even if the first CTLESC is preceded + by a backslash. Callers can't do this because the remaining CTLESC + will be treated as a quoting character and turned into a backslash + +execute_cmd.c + - execute_case_command: if the pattern is not quoted, make sure to tell + quote_string_for_globbing to turn CTLESC CTLESC into CTLESC by + passing QGLOB_CTLESC. Fixes bug reported 4/2 by Martijn Dekker + + + 4/9 + --- +subst.c + - string_transform: after calling ansiexpand for the `E' transformation, + need to call dequote_escapes because ansiexpand assumes it is being + called by the parser and arranges for ansicstr to quote CTLESC and + CTLNUL with CTLESC. Reported by Grisha Levit + +variables.c + - mk_env_string: when exporting functions, run them through + dequote_escapes because any strings containing CTLESC or CTLNUL are + still quoted with CTLESC. Reported by Grisha Levit + + +subst.[ch] + - quote_escapes,dequote_escapes: now take const char * argument + +execute_cmd.c + - execute_intern_function: if the function name contains CTLESC, run + it through dequote_escapes just in case it got CTLESC quoting + CTLESC or CTLNUL from the parser + + 4/11 + ---- +eval.c + - reader_loop: make sure PS0 is expanded and displayed before + incrementing the command number + +parse.y + - prompt_history_number: function to make history number as reported + by \!, or posix mode !!, be the same index that the (possibly multi- + line) command will be stored with. The history library increments + history_offset as soon as a new line is entered, and it's up to the + history code to store the second and subsequent lines of a command + in the same history entry. If we are expanding PS0 or PS4, or + a ${var@P} expansion, we're already past the history entry no + matter what. Inspired by patch from Grisha Levit + + - decode_prompt_string: call prompt_history_number + - decode_prompt_string: if expanding PS4 or ${var@P}, make the + command number the same as reported by PS0/PS1/PS2 + + 4/12 + ---- +support/Makefile.in + - clean: remove man2html.o as part of this production instead of + waiting until `distclean'. Reported by chrlis + +subst.c + - string_list_pos_params: if we are expanding $* in a context where + IFS is null and expand_no_split_dollar_star is set (no word + splitting), use string_list_dollar_star to force the positional + parameters to be joined without first separating them into a list + and attempting to join them later. Fixes problem with constructs + like ${var=${*:1}}, pointed out by Grisha Levit + . This undoes change to @Q from 4/7, so + list_transform change reverted + + 4/19 + ---- +builtins.h + - added BUILTINS_H include guard + +examples/loadables/Makefile.in + - install loadables.h as sample include file, along with Makefile.inc + + 4/23 + ---- +bashline.c + - maybe_make_readline_line: don't try to do anything if the passed + NEW_LINE is NULL. Report from Jaren Stangret , + fix from Eduardo Bustamante + + 4/24 + ---- +parse.y + - xparse_dolparen: if the current token (the last thing read_token + returned to yylex) is shell_eof_token, assume that it is the new + bison lookahead token and clear it. Fixes bug reported by + Werner Fink + + 4/25 + ---- +doc/{bash.1,bashref.texi} + - cmdhist: clarify that this option only has an effect if history is + enabled. Suggested by Matthew Braun + + 4/26 + ---- +jobs.c + - wait_for: if a non-interactive shell with job control enabled (set -m) + detects that a foreground job died due to SIGINT, act as if the shell + also received the SIGINT. Prompted by an austin-group-l discussion + - waitchld: run SIGCHLD trap for each child exited even if job control + is not enabled when in Posix mode. Prompted by an austin-group-l + discussion + + 4/27 + ---- +lib/readline/histfile.c + - read_history_range: if the history file is empty, free the history + filename before returning. Report and fix from Eduardo Bustamante + + +lib/readline/bind.c + - rl_parse_and_bind: make sure there is something, even if it's a + quoted empty string, before the `:' in a key binding. Report from + Eduardo Bustamante + - rl_parse_and_bind: if the right side of a key binding starts with a + quote, make sure there's a matching close quote before treating it + as a macro definition + - rl_translate_keyseq: if a key sequence ends with \C- or \M- (or + \C-\M-) make sure we break out of the loop if moving to the character + to be translated is a NUL. Old code did this only in the \C-\M- + case. Report from Eduardo Bustamante + + 4/28 + ---- +lib/glob/sm_loop.c + - GMATCH: implement a clever technique from glibc that avoids + backtracking past a `*' if we've already chosen to use it and need + matches beyond it. Look at https://research.swtch.com/glob for a + longer explanation. This results in a significant speedup for globs + with multiple instances of `*', especially with more than 4. + + 5/2 + --- +lib/readline/bind.c + - rl_translate_keyseq: make sure a trailing backslash in the key + sequence is preserved. Report from Eduardo Bustamante + + + 5/3 + --- +builtins/builtin.def + - builtin_builtin: make sure to set this_shell_builtin to the builtin + command being executed, overwriting `builtin'. Leave + last_shell_builtin alone. Fixes bug reported by Luiz Angelo Daros + de Luca + +jobs.c + - waitchld: modify change of 4/26 to run SIGCHLD traps even if job + control is not enabled + +lib/readline/misc.c + - rl_get_previous_history: if we didn't find a previous history entry + to use, call rl_maybe_unsave_line before returning because we + aren't going to use the saved line, and it has the same undo list + as rl_undo_list. Fixes fuzzing bug reported by Eduardo Bustamante + + - rl_get_{next,previous}_history: if there is no history list, don't + bother doing anything + + 5/4 + --- +expr.c + - popexp: if we error out due to stack underflow, make sure to zero out + expression and lasttp; they may contain undefined values we don't + want evalerror to print + - expr_unwind: handle expr_depth decrementing below zero + - evalexp: restore the old value of evalbuf even if we error and + longjmp; we may have called evalexp recursively + - evalerror: make sure expression is non-NULL before trying to print it. + These fix fuzzing bug reported by Eduardo Bustamante + , happens only in cases where we don't longjmp on + a fatal expansion error + + 5/5 + --- +parse.y + - read_token_word: when checking for a word that's a target of a + redirection, we can potentially call valid_array_reference, which + can end up calling the parser recursively. If it does that, we + need to make sure that yylval.word doesn't change, so we set it back + to the_word. Fixes another fuzzing bug + +parse.y + - arith_for_command: make syntax errors in the arithmetic for command + (signaled by make_arith_for_command returning NULL) more like + language syntax errors by calling YYERROR. Avoids complicated + attempts at error recovery and dealing with NULL returns from + command productions. Pointed out by Eduardo Bustamante + + +lib/readline/kill.c + - _rl_copy_to_kill_ring: make sure the current slot in the kill ring + has something in it, even if the last command was a kill, before + trying to modify it. Another fuzzing bug + + 5/6 + --- +builtins/read.def + - read_builtin: if we see a backslash when not in raw mode (not -r), + only back up `i' when we read the next character if we know we added + a CTLESC the last time through the loop (skip_ctlesc == 0), + especially if i == 0. Another fuzzing bug from Eduardo Bustamante + + + 5/8 + --- +builtins/read.def + - read_mbchar: handle zreadn/zreadc/zread returning EOF in the middle + of an incomplete multibyte sequence. Fixes another fuzzing bug + - read_builtin: use mb_cur_max instead of constant 4 when deciding + whether the next character can exceed the number of bytes available + in input_string + +lib/readline/input.c + - MinGW: include before . Fix from Eli Zaretskii + + +builtins/read.def + - read_builtin: if we get input from readline, we need to get the + remainder of a multibyte character from rlbuf instead of calling + read_mbchar. Bug reported by Eduardo Bustamante + + 5/9 + --- +parse.y + - token_is_assignment: use the allocated buffer approach in all cases, + not just if we're not using bash malloc. This avoids the assignment + to t[i+1] writing beyond the end of the allocated token if + i == token_buffer_size - 1. Another fuzzing bug + - xparse_dolparen: if parse_string returns < 0, we clear out the + current shell_input_line before performing a longjmp, since we're + abandoning parsing of this command. This is consistent with how + the parser resynchronizes after other syntax errors + - GRAMMAR: add 'error yacc_EOF' production to handle a syntax error + that's immediately followed by an EOF after resynchronization. + Fixes another fuzzing bug + + 5/10 + ---- +lib/readline/text.c + - _rl_set_mark_at_pos: don't let the mark be set to a position < 0. + Fixes a fuzzing bug + - rl_exchange_point_and_mark: don't do anything if the mark is already + less than 0 + + 5/12 + ---- +lib/readline/rlmbutil.h + - wchar_t: make sure this is defined as int if multibyte characters + aren't supported + +lib/readline/text.c + - _rl_change_case: don't force use of ascii toupper and tolower if + isascii returns true; it's not defined to work on characters outside + the 0..255 (really 0..127) range. Bug reported by + Eduardo Bustamante + + 5/14 + ---- +lib/readline/text.c + - rl_change_case: handle case where the old and new characters (after + the case change) are not the same number of bytes. Pointed out in + http://lists.gnu.org/archive/html/bug-bash/2015-01/msg00091.html + +lib/readline/display.c + - expand_prompt: use `ret' as first parameter to _rl_find_prev_mbchar + since that needs the base of the array. Bug from fuzzing reported by + Eduardo Bustamante + + 5/15 + ---- +execute_cmd.c + - execute_simple_command, execute_arith_command, execute_cond_command, + execute_arith_for_command: adjust the line number when executing a + function interactively so that the first command in the function is + line 1, not line 0, as Posix requires. Reported by Robert Elz + + - execute_simple_command, execute_arith_command, execute_cond_command, + execute_arith_for_command: ony adjust the line number when executing + a function interactively if we are not sourcing a file + (sourcelevel == 0), so this is consistent everywhere we adjust the + line number + + 5/16 + ---- +bashline.c + - bash_directory_completion_hook: when calling split_at_delims to see + whether a ${ or $( is closed, use the right value for `start' relative + to the substring beginning at `$'. Bug from fuzzing reported by + Eduardo Bustamante + +expr.c + - expassign: if the call to expcond generates a syntax error in a + context when the shell won't longjmp (like when evaluating $PS1), + it will end up NULL and we need to catch it before calling strlen. + Bug from fuzzing reported by Eduardo Bustamante + +examples/bash-completion/ + - new place to include a current or recent version of the + bash-completion package + + 5/19 + ---- +lib/readline/display.c + - CHECK_INV_LBREAKS: new versions for multibyte and single-byte chars, + so the multibyte version can check and increase the size of + line_state_invisible->wbsize and line_state_invisible->wrapped_line, + callers who call CHECK_INV_LBREAKS must update + wrapped_line[newlines] when in HANDLE_MULTIBYTE mode. Fuzzing bug + reported by Eduardo Bustamante + + 5/24 + ---- +lib/readline/search.c + - _rl_nsearch_callback,noninc_search: handle _rl_search_getchar + returning -1 (EOF or read error) by aborting the search. + Fuzzing bug reported by Eduardo Bustamante + + 5/25 + ---- +variables.c + - localvar_inherit: new variable, controlled by shopt localvar_inherit + option + - make_local_variable: if localvar_inherit is set, the new local + variable inherits a previous scope's variable's value, attributes + (except nameref), and dynamic variable information. If a local + variable inherits a value, the local is not invisible + +builtins/shopt.def + - localvar_inherit: new option + +doc/{bash.1,bashref.texi} + - localvar_inherit: document new shopt option + + 5/29 + ---- +lib/readline/readline.c + - _rl_subseq_result: only return -1 and back up the chain if we are + dealing with a result (r) that's already < 0 and we are at the end + of a multi-key sequence. Otherwise, a failing readline command (e.g., + delete-char at the end of a line) could cause this code to be + executed. Report from Nuzhna Pomoshch + +lib/readline/histfile.c + - read_history_range: if the file isn't a regular file, return an + error. Bug report from Eduardo Bustamante , + relaying from IRC + + 5/30 + ---- +variables.c + - set_pwd: if in Posix mode, and PWD appears in initial environment as + an absolute pathname to the current directory, set PWD to the result + of canonicalizing the environment value, or to the physical path if + canonicalization fails. From a suggestion by Eduardo Bustamante + + + 5/31 + ---- +builtins/read.def + - read_builtin: if -n or -N option is supplied with a 0 argument, + don't attempt to read any characters; bail out right away. Reported + by Eduardo Bustamante , relaying from IRC + + 6/3 + --- +config.h.in + - HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC: add define, used by stat-time.h + to construct a timespec from struct stat. Report and fix from + Siteshwar Vashisht + +variables.h + - att_regenerate: new internal variable attribute: if set, regenerate + dynamic variable's value when it's exported and we are creating the + export environment + +variables.c + - init_dynamic_variables: LINENO, EPOCHSECONDS, EPOCHREALTIME: set + internal regenerate attribute for these dynamic variables + - make_env_array_from_var_list: if a dynamic variable has the + regenerate attribute set, call the dynamic value function to generate + an updated value before placing it in the environment. From a report + about exporting LINENO from Robert Elz + + 6/4 + --- +lib/glob/sm_loop.c + - BRACKMATCH: at the matched: label, make sure we get the bracket + character we're looking for (char class, collating symbol. etc.) + before we decrement the count of braces we're looking for. Eventually + we could do something about badly-formed bracket expressions + + 6/7 + --- +lib/readline/histlib.h + - strchr: only declare if __STDC__ is not defined, since we already + include . Report from Chi-Hsuan Yen + + 6/9 + --- +lib/readline/display.c + - update_line: when wrapping lines with multibyte chars at the end of + the new line being wrapped, make sure we copy the NULL byte in old + when moving the contents of old around. Fuzzing bug reported by + Eduardo Bustamante + +lib/readline/mbutil.c + - _rl_get_char_len: use MB_CUR_MAX in the call to mbrlen; there's no + need to look at the rest of the string when we're just interested in + the length of a single character + + 6/12 + ---- +jobs.c + - wait_for: when waiting for the next child to exit (ANY_PID), make + sure to restore the old SIGINT handler before returning. Fixes + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864649 + + 6/14 + ---- +lib/readline/display.c + - expand_prompt: make sure `ret' is NULL-terminated before calling + _rl_prev_mbchar_internal, since that calls strlen, which requires + the passed string to be NULL-terminated. Another fuzzing bug. + + 6/15 + ---- +lib/readline/isearch.c + - _rl_isearch_fini: use rl_replace_line instead of strcpy so rl_end + gets set right + - _rl_isearch_fini: after restoring rl_point, call _rl_fix_point so + we don't set rl_point > rl_end. Fixes a fuzzing bug + +lib/readline/mbutil.c + - _rl_find_next_mbchar_internal: if _rl_adjust_point returns < 0, + just punt, treat the value as a byte, and advance point by 1 + +lib/readline/util.c + - rl_tilde_expand: rearrange code in the whitespace loop so that + `start' gets tested first and we don't try to dereference + rl_line_buffer[-1]. Another fuzzing bug from dualbus@gmail.com + +bashline.c + - bash_dequote_filename: make sure that pointers that are used as + indices into sh_syntaxtab are cast to unsigned char first, to + avoid problems with signed chars > 128. Fixes a fuzzing bug. + +lib/readline/kill.c + - _rl_copy_to_kill_ring: when reallocating the kill ring, make sure to + allocate one more than the max number of kills so the loop that + copies the kill ring entries down runs right (and to mirror the + initial allocation). Fixes a fuzzing bug. + +lib/readline/isearch.c + - _rl_isearch_dispatch: make sure that cxt->sline_index never goes < 0 + even when searching a line in reverse. Fixes a fuzzing bug + + 6/16 + ---- +parse.y + - xparse_dolparen: short-circuit immediately if passed a empty string + +lib/readline/display.c + - update_line: when wrapping multibyte characters, make sure we deal + with WCWIDTH returning -1. Fixes a fuzzing bug + + 6/17 + ---- +execute_cmd.c + - execute_coproc: make sure `invert' is set before trying to use it + when returning failure on invalid coproc name. Report and fix from + Eduardo Bustamante + - execute_command_internal: make sure execute_coproc sets + last_command_exit_value if it returns failure, so an invalid name + can set $? = 1. Report and fix from Eduardo Bustamante + + +lib/readline/display.c + - update_line: make sure all references to `wrapped_line' are wrapped + with #ifdef HANDLE_MULTIBYTE. Report and fix from Eduardo Bustamante + + +lib/readline/vi_mode.c + - _rl_vi_change_char: don't use rl_point++ when you mean to move + forward a character; use _rl_vi_append_forward to account for + multibyte characters and take vi end of line handling into account + - _rl_vi_last_replacement: now an array of chars whether we are + using multibyte chars or not. If we're not, the character we read + to use as the replacement is saved as the first element of the array + - rl_vi_change_char,_rl_vi_callback_change_char: changes to deal with + _rl_vi_last_replacement being an array. Fixes bug reported by + Eduardo Bustamante + +lib/readline/mbutil.c + - _rl_get_char_len: look at at most MB_CUR_MAX characters, but maybe + fewer if the length of the string is less + +builtins/bind.def + - unbind_keyseq: new function for the -r option; checks whether the + key sequence is actually bound before trying to bind it to NULL. + Partial fix for https://savannah.gnu.org/support/?109329 + +parse.y + - augment `error yacc_EOF' production to call YYABORT in non-interactive + shells or calls to parse_and_execute (eval, command substitution, + etc.) Fixes bug reported by Martijn Dekker + + 6/19 + ---- +bashline.c + - edit_and_execute_command: don't add rl_line_buffer to the history + list if it's empty; consistent with how other code treats an empty + line + +execute_cmd.c + - execute_builtin: make sure to preserve the temporary env across the + execution of the `read' builtin or `fc' builtin if HISTORY is + defined, in case `read -e' calls edit-and-execute-command. Should + have no side effects. Reported by Eduardo Bustamante + + +general.c + - line_isblank: new function: returns true if passed string is composed + entirely of blanks + +general.h + - line_isblank: new extern declaration + +parse.y + - history_delimiting_chars: return "" for a blank line, since there's + nothing to delimit with `;' + + 6/21 + ---- +jobs.c + - wait_for: make sure to call restore_sigint_handler before returning + if we return out of the loop due to no children. Report from + Eduardo Bustamante + +subst.c + - expand_word_internal: if split_on_spaces is set, and the word is + unquoted, and IFS is null, split the results of the previous steps + on $' \t\n' instead of just ' '. This relies on the previous steps + quoting the portions of the word that should not be split. Fixes + bug reported by Kevin Brodsky + +expr.c + - evalexp: after running expr_unwind, make sure we reset expr_depth + to 0 for the next call + - expr_streval: if after a call to get_array_value (which can call + the expression evaluator recursively) we discover that expr_depth + is less than it was before we called it, we assume there has been + some kind of error and an expr_unwind, so we treat it as an + error and either longjmp back to the expression top level or return + 0 immediately. Fixes bug reported by Eduardo Bustamante + + + 6/23 + ---- +doc/{bash.1,bashref.texi} + - add text noting that $* and ${array[*]} (unquoted) can also expand + to multiple words + + 6/29 + ---- +general.[ch] + - default_columns: new function, returns the value of COLUMNS, or + refreshes it if check_window_size is set and COLUMNS is unset. By + default, it returns 80 + +execute_cmd.c + - select_query: use default_columns() instead of fetching value of + COLUMNS directly + +builtins/help.def + - show_builtin_command_help: use default_columns() instead of fetching + value of COLUMNS directly + + 6/30 + ---- +builtins/read.def + - read_builtin: call QUIT during the read loop, just in case we get a + signal we should act on that didn't cause read to be interrupted. + Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1466737 + - read_builtin: if -n or -N is supplied with a 0 argument, try a zero- + length read to detect errors and return failure if that read returns + a value < 0. Suggested by dualbus@gmail.com + + 7/4 + --- +bashhist.c + - maybe_add_history: keep track of whether the current line is a shell + comment, even if we're not adding it because it's in a multi-line + command, so we use appropriate delimiters between it and any + subsequent lines. Fixes bug reported by Grisha Levit + back on 2/28/2017 + +bashline.c + - operate_and_get_next: if given an explicit argument, use that to + choose which line in the history to use. + +lib/readline/doc/rluser.texi,doc/bash.1 + - operate-and-get-next: document new effect of explicit numeric arg + +lib/readline/complete.c + - fnprint: make sure print_len is initialized before using it on + systems without multibyte character support. Report and fix from + Juan Manuel Guerrero + + 7/6 + --- +builtins/printf.def + - PRETURN,printf_builtin: check variable returned by bind_printf_variable, + return failure if that indicates we can't perform an assignment + because the variable is marked readonly or noassign. Fixes bug + reported by Arnaud Gaillard + + 7/7 + --- +lib/readline/text.c + - rl_quoted_insert: new feature: a negative argument means to insert + the next -COUNT characters using quoted-insert. Original feature + from Jason Hood . Still needs work on + redisplay + - _rl_insert_next_callback: implement support for negative arguments + similar to rl_quoted_insert: we just insert one at a time and keep + increasing the count until it hits 0 + +lib/readline/misc.c + - _rl_arg_callback: if the return value from _rl_arg_dispatch indicates + we should keep reading a numeric argument, update the message with + the new arg value + + 7/8 + --- +lib/readline/signals.c + - _rl_handle_signal: make sure all uses of any of the job control + signals are protected by a check for SIGTSTP being defined. Report + from Juan Manuel Guerrero + + 7/11 + ---- +lib/readline/vi_mode.c + - rl_vi_replace: when making the new keymap for vi replacement mode, + make sure that ANYOTHERKEY is set correctly, otherwise some input + will cause _rl_dispatch to return -2 to the top level. Fixes fuzzing + bug reported by Ben Wong + + 7/19 + ---- +builtins/read.def + - struct ttsave: make the attrs member a struct, not a pointer, to force + a structure copy that will survive a longjmp to another context. + Leaving it as a pointer to a local struct is not portable + + 9/10 + ---- +execute_cmd.c + - execute_builtin: make sure that we set up the unwind-protect for + pop_scope (temporary_env is non-zero) so that the temporary env + is propagated to the current environment only for special builtins + (source/eval/unset) not run by the command builtin + (flags & CMD_COMMAND_BUILTIN == 0). Fixes bug reported by + Martijn Dekker + + 9/17 + ---- +builtins/printf.def + - asciicode: don't use mblen to check whether or not a character is a + valid multibyte character; use mbtowc right away and then inspect + the return value. Fixes bug reported by Stephane Chazelas + + + 9/27 + ---- +{jobs,subst}.h + - move declaration of last_command_subst_pid to subst.h, since it's + declared in subst.c and doesn't depend on job control. Reported by + Martijn Dekker + +builtins/read.def,variables.c + - fixed a couple of problems (READLINE, ARRAY_VARS) that prevented + the minimal config from building + + 10/1 + ---- +parse.y + - special_case_tokens: if we are returning DO in a case where the last + two tokens read are `FOR' and `WORD' make sure we decrement + expecting_in_token. Fixes bug reported by Martijn Dekker + + + 10/4 + ---- +subst.c + - expand_string_for_rhs: now takes an additional PFLAGS argument from + its caller (one so far); passes that through to call_expand_word_internal + as W_ASSIGNRHS. Fixes bug reported by Martijn Dekker + + - expand_string_for_rhs: expanding b in ${a[:]=b} is now done as if + b were the rhs of an assignment statement. This means that splitting + isn't done, but tilde expansion is performed as if the statement + were `a=b'. Fixes splitting bug with $* reported by Martijn Dekker + + +command.h + - W_NOASSNTILDE: new word flag, means to not perform tilde expansion + following a `:' even if the word has the W_ASSIGNRHS flag enabled + +subst.c + - expand_word_internal: if we see a `:' with the W_NOASSNTILDE flag + set, just add the character and inhibit any subsequent tilde + expansion. Currently not set anywhere, but it could be set in + expand_string_for_rhs to satisfy its peculiar semantics + + 10/6 + ---- +lib/sh/casemod.c + - sh_modcase: convert even single-byte wide characters to wide upper + or lowercase equivalents to accommodate locales where single-byte + characters have multibyte upper and lower case conversions. Bug + reported by Stephane Chazelas + + 10/7 + ---- +doc/{bash.1,bashref.texi} + - slight changes to the description of command_not_found_handle to + clarify that it's executed in a separate execution environment, + just like if the command was found. Reported by Martijn Dekker + + + 10/8 + ---- +lib/readline/doc/{history.3,hstech.texi} + - history_get: clarify the range of valid values for the OFFSET + argument. From a report by Kevin Ryde + + 10/21 + ----- +subst.c + - expand_string_for_rhs: set W_NOASSNTILDE if the operator is `=' + for backwards compatibility with bash-4.4 + +shell.c + - main: set positional parameters before running the startup files, + so the startup files can inspect $@. Often-requested feature, + most recently from Stephane Chazelas + + 10/27 + ----- +doc/{bash.1,bashref.texi} + - Arrays: add some clarifying language to make it clear that array + references that don't use the ${a[s]} syntax are subject to + globbing when passed as arguments to commands such as unset, and + should be quoted for safety. Change prompted by a report from + Eli Barzilay + +parse.y + - parse_comsub: make sure we don't run off the end of the `ret' + buffer when checking for the here doc delimiter. Report from + Jakub Wilk , the result of a fuzzing test. Pointer + to place for the fix from Eduardo Bustamante + + 10/30 + ----- +builtins/pushd.def + - get_directory_stack: make sure the current directory (element 0 of + the stack) is passed to polite_directory_format under the same + conditions as the rest of the stack entries (flags & 1). Otherwise + something like `cd ${DIRSTACK[0]}' will fail. Fixes bug reported + by Steve Jones + +builtins/declare.def + - declare_internal: when checking for a `[' to see whether or not this + is an array variable declaration (declare -a foo[12]), make sure + we don't do the check if we're just dealing with shell functions. + Bug and pointer to fix from PJ Eby + + 11/1 + ---- +parse.y + - parse_comsub: if we read a four-character word followed by a break + character, and that word is not one of the reserved words, set + lex_rwlen to 0 since we are no longer in a reserved word. It only + hurts if another break character immediately follows, so that test + succeeds again. Turn off the RESWDOK flag only if it's not a shell + metacharacter, too. Fixes bug reported by Kjetil Torgrim Homme + + + 11/3 + ---- +lib/readline/isearch.c + - _rl_isearch_dispatch: if we are searching in reverse order, let + sline_index go to -1 to avoid searching the same line twice. It + gets reset right after that, so there's no danger of indexing into + the history line with a negative index. + + 11/7 + ---- +execute_cmd.c + - time_command: only restore command->flags if CODE indicates we didn't + perform a longjmp back to top_level. If we did, `command' has already + been freed. Fixes bug reported on savannah by + ukuvbu oibws + https://savannah.gnu.org/support/?109403 + + 11/10 + ----- +lib/sh/unicode.c + - u32cconv: make sure to initialize localconv to -1 (error) in case + we switch from a utf-8 locale to something else and call + iconv_close. Report from Egmont Koblinger ; fix + from Eduardo Bustamante + + 11/16 + ----- +subst.c + - parse_comsub: istring_index should be a size_t to avoid integer + overflow when allocating large pieces of memory. Report and fix + from Siteshwar Vashisht , originally based on + http://lists.gnu.org/archive/html/bug-bash/2017-11/msg00047.html + + 11/24 + ----- +lib/readline/bind.c + - rl_empty_keymap: new public function, returns non-zero if there are + no keys bound in the keymap passed as an argument + +lib/readline/readline.h + - rl_empty_keymap: new public extern declaration + +lib/readline/doc/rltech.texi + - rl_empty_keymap: document new function + +lib/readline/bind.c + - rl_generic_bind: keep track of the previous keymap and previous + index in a multi-key key sequence so we can remove an empty terminal + keymap and remove a previous override to ANYOTHERKEY. Right now, + this only works for one previous keymap level. Inspired by a report + from Clark Wang + + 11/25 + ----- +lib/readline/display.c + - _rl_update_final: make sure that computing the length of the visible + bottom line (botline_length) takes any invisible characters in the + prompt into account (woff). This value is used as part of the check + whether or not we want to remove the line-wrapping indicator on + terminals like xterm + - _rl_update_final: when removing the line-wrapping indicator on xterm, + make sure we take invisible characters in the prompt (woff) into + account when computing the character in the rightmost physical + screen position. Fixes cosmetic line-wrapping issue reported by + Egmont Koblinger + + 11/27 + ----- +lib/sh/ufuncs.c + - fsleep: if using select to implement sleep, use restart after + a signal interrupts the select and handle pending signals. If + pselect is available, use that instead and block SIGCHLD while + pselect is executing. + Fixes report from Thiruvadi Rajaraman + + 11/28 + ----- +lib/readline/signals.c + - rl_check_signals: new public function: a wrapper for RL_CHECK_SIGNALS + that can be used by applications that install a wrapper for + rl_getc (rl_getc_function) so they can respond to signals that + arrive while waiting for input in the same way as rl_getc. The app + can use rl_pending_signal() to get the most recently-received + signal. From a discussion about Gnuplot initiated by + Rin Okuyama + +lib/readline/readline.h + - rl_check_signals: new extern declaration + +lib/readline/doc/rltech.texi + - rl_check_signals: document new public function + +variables.c + - set_pwd: test for and force an inherited OLDPWD to be a directory + if OLDPWD_CHECK_DIRECTORY is defined in config-top.h (it is by + default). Issue raised by Mikulas Patocka + +config-top.h + - OLDPWD_CHECK_DIRECTORY: new define, defined to 1 by default + + 11/29 + ----- +Makefile.in + - pathexp.o: add dependencies on libintl.h. Reported by + Ross Burton + + 12/1 + ---- +lib/sh/ufuncs.c + - fsleep: add blocking and releasing SIGCHLD using sigprocmask + around call to select(2) even if pselect(2) is not available + + 12/3 + ---- +execute_cmd.c + - coproc_setstatus: new utility function, take a pointer to a coproc + and a status and mark the coproc as dead and having been reaped + with that status. Used by child processes who want to invalidate + the coproc's pid + + 12/5 + ---- +subst.c + - process_substitute: instead of just having a flag to denote that a + file descriptor is connected to a process substitution, store the + pid of the child process (still needs work) + - find_procsub_child,set_procsub_status,reap_procsubs: utility + functions to allow the job control code to detect that a process + substitution child has died and deallocate the file descriptors + or pathname + +subst.h + - find_procsub_child,set_procsub_status,reap_procsubs: extern + declarations + +nojobs.c + - set_pid_status: if we are reaping a process substitution, call + set_procsub_status to record the fact + +jobs.c + - waitchld: if we are reaping a process substitution, call + set_procsub_status to record the fact. Doesn't really do anything + yet + + 12/6 + ---- +execute_cmd.c + - execute_command: don't call unlink_fifo_list if we're in the + middle of executing a list of commands (executing_list != 0). + Partial fix for bug reported by Stephane Chazelas + + - execute_simple_command: don't close process substitution file + descriptors in the parent after forking children in a pipeline; + defer until pipeline completes, since parent may have inherited + fds from a calling scope (e.g., via `.'). EXPERIMENTAL + - execute_disk_command: don't close process substitution file + descriptors in the parent after forking the child. EXPERIMENTAL + + 12/7 + ---- +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - show-mode-in-prompt: clarify that this must be enabled before the + vi and emacs mode strings are prefixed to the prompt. Report from + Rob Foehl + + 12/8 + ---- +execute_cmd.c + - execute_coproc: don't warn about an existing coproc if the write and + read file descriptors are unusable (-1), as they will be after a + call to coproc_closeall in a subshell. Fixes spurious warning + reported by Tobias Hoffmann + +jobs.c + - bgp_resize: avoid overflow when calculating the new size if the + child process limit is something ridiculously large. Report and + fix from Natanael Copa + +execute_cmd.c + - execute_builtin_or_function: if we return via the return builtin, we + don't get a chance to free the saved fifo list, so add an unwind- + protect to make sure it happens. Part of fix for leak reported by + Oyvind Hvidsten + - execute_command_internal: if we unwind via the return builtin (e.g., + we execute a function which then returns via the return builtin to + a previous function), we don't free the saved fifo list, so add an + unwind-protect to make sure the free happens. Rest of fix for leak + reported by Oyvind Hvidsten + +subst.c + - add_fifo_list: for the FIFO case (no /dev/fd), make sure we + initialize the new members of the fifo list after xrealloc + + 12/9 + ---- +subst.c + - dev_fd_list: now a list of type `pid_t' so we can store process + associated with the pipe fd into the right element; change all + necessary functions (copy_fifo_list, add_fifo_list) + - process_substitute: store pid of child process into the right + index in dev_fd_list after opening the pipe. Process ID of -1 means + process has been reaped and fd needs to be closed (or FIFO needs to + be unlinked); value of 0 means slot is unused + +jobs.c + - wait_for_background_pids: call reap_procsubs to make sure we clean + up all reaped process substitutions before trying to wait for + everything (still needs work) + +tests/{run-procsub,procsub.{tests,right}} + - new file, tests of process substitution that have failed in the past + + 12/10 + ----- +jobs.c + - wait_for_background_pids: warn if one of the jobs is stopped + +subst.c + - wait_procsubs: new function, call wait_for for every "live" process + substitution + +jobs.c + - wait_for_background_pids: call wait_procsubs to reap any living + process subsitutions + + 12/13 + ----- +lib/readline/bind.c + - parser_if: add support for testing the readline version, using the + full set of arithmetic comparison operators (and supporting both + = and ==), using version numbers of the form major[.[minor]] + + 12/14 + ----- +subst.[ch] + - string_list_dollar_star: now takes QUOTED and PFLAGS arguments like + string_list_dollar_at, changed all callers. Not used yet. + + 12/16 + ----- +subst.c + - param_expand: broke out cases of expanding unquoted (quoted == 0) + $* on the rhs of an assignment statement (pflags & PF_ASSIGNRHS) + with various values of IFS (unset, null, set to non-null value) to + capture the expansion subtleties. From a report back on 11/24 by + Martijn Dekker + + 12/17 + ----- +array.h + - set_element_value: new define, sets array element AE to VALUE + +variables.c + - set_pipestatus_array: use set_element_value where appropriate + + 12/18 + ----- +subst.c + - parameter_brace_find_indir: when expanding the indirect parameter + to find the eventual variable name, we don't perform word splitting. + Make sure this does the right thing for * and @. Fixes bug + reported by isabella parakiss + + 12/19 + ----- +doc/{bash.1,bashref.texi} + - indirect expansion: make sure to note that the value of the indirect + variable does not undergo word splitting as one of its expansions, + as in fix from 12/18 + + 12/22 + ----- +subst.c + - parameter_brace_expand_rhs: make sure the value this function returns + when OP is `=' is quoted appropriately, as the callers expect. More + changes from Posix interp 221. Fixes report from Martijn Dekker + + +variables.c + - assign_hashcmd: if running in a restricted shell, make sure the + target of the hash assignment can be found via a $PATH search, to + prevent users assigning commands to the hash table they would not + ordinarily have access to. Fixes issue raised by Drew Parker + + +builtins/hash.def + - hash_builtin: if running in a restricted shell, make sure the + pathname target of `hash -p' can be found via a $PATH search, to + prevent users assigning commands to the hash table they would not + ordinarily have access to. + + 12/27 + ----- +array.c,arrayfunc.c,... + - many changes to clean up unused variables and functions. From a + report from Siteshwar Vashisht + + 12/28 + ----- +lib/readline/terminal.c + - _rl_term_clrscroll: save the `E3' termcap capability, which clears + the scrollback buffer where supported. Unused right now + +lib/readline/rlprivate.h + - _rl_term_clrscroll: extern declaration + +lib/readline/bind.c + - parser_if: added simple variable comparison capability. Allowable + operators are `=', `==', and `!='; boolean variables must be + compared to either `on' or `off'; variable names must be separated + from the operator by whitespace + +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - document new `if variable comparison value' construct + + 1/2/2018 + -------- +lib/glob/sm_loop.c + - EXTMATCH: when matching against !(patlist), if a filename beginning + with a `.' does not match any of the patterns in patlist, don't + return it as a match if leading dots need to be matched explicitly + (flags & FNM_PERIOD). Report from Eric Cook + + 1/3 + --- +variables.[ch] + - bind_function_def: takes an additional flags argument. If FLAGS&1, + overwrite any existing function_def hash table entry; if FLAGS==0, + leave any existing function_def alone. + +make_cmd.c + - make_function_def: call bind_function_def with flags == 0 + +execute_cmd.c + - execute_intern_function: call bind_function_def with flags == 1 so + we have function_def information that's correct for where the + function is defined, not just where it's last parsed. Fixes report + from Bruno Vasselle ; final piece of + fix from 12/15/2011 + + 1/4 + --- +subst.c + - param_expand: deal with string_list_dollar_star returning NULL. + Fixes bug reported by Martijn Dekker + +builtins/history.def + - history_builtin: enabled code that performs range deletion + + 1/5 + --- +subst.c + - do_assignment_internal: if performing a compound assignment, make + sure to pass ASS_CHKLOCAL flag to do_compound_assignment if the + assignment word has the W_CHKLOCAL flag set + - do_compound_assignment: honor ASS_CHKLOCAL flag and check for an + existing local variable before creating or modifying a global + variable + +builtins/declare.def + - declare_internal: new (undocumented so far) option: -G. Means to + act on global variables (create, modify) if no local variable is + found with the specified name + - declare_find_variable: new declare-specific wrapper functon for + declare builtin; obeys -g and -G options in one place + - declare_internal: if no variable is found after following any nameref + chain, look up the variable using declare_find_variable to honor the + -G option. XXX - so far, this is the only place that function is used + +subst.c + - shell_expand_word_list: before calling make_internal_declare, add + 'G' to the options list if W_CHKLOCAL is set in the word's flags. + This makes builtins like `readonly' that modify local variables in + a function behave the same for scalar and array variables + + 1/11 + ---- +parse.y + - shell_getc: move code that decides whether to append a space to an + alias expansion here from mk_alexpansion, so we can inhibit adding + a space if we're currently parsing a single or double quoted string + + 1/12 + ---- + +parse.y + - clear_string_list_expander: take a pointer to an alias that's about + to be freed and make sure there aren't any pointers to it in the + list of pushed strings. If there are, zero it out in the pushed + string list to avoid referencing freed memory in pop_string() + +alias.c + - free_alias_data: if an alias being freed is currently being expanded, + call clear_string_list_expander to remove references to it from the + list of pushed strings + + 1/14 + ---- +pcomplib.c + - progcomp_search: add code to look up an alias for the CMD argument + and return the completions for the first word of that alias if one + is found. Just a start at completing aliases, a much-requested + feature + +pcomplete.h + - COPT_LASTUSER: last flag value used by user-settable completion + options + - PCOMP_RETRYFAIL, PCOMP_NOTFOUND: new #defines, possible return values + from programmable_completions in FOUNDP argument. Moved RETRYFAIL + define here from pcomplete.c to avoid collisions with user-settable + option values (COPT_*) + + 1/15 + ---- +pcomplete.c + - programmable_completions: if we don't find any completions for a + command, and RETRY is 0, see if the command is a defined alias, + expand it, and try to expand the first word of the value as a + command, and find any programmable completions for it. Here right + now, could be moved to attempt_shell_completion later if we need + to do more analysis of the expanded line. We'll see how it works + in practice. (Disabled for now.) + + 1/16 + ---- +parse.y + - grammar: when timing the null command, make sure to turn off the + flags in parser_state (PST_REDIRLIST) that make_simple_command sets + when given a NULL second argument, since it assumes that it's going + to turn those off when it gets the next word of the simple command + (which it never gets in this case). Fixes bug reported by + Anti Räis + + 1/19 + ---- +lib/readline/rltty.c + - prepare_terminal_settings (termios/termio): if there is a function + bound to the VDISCARD character in the current keymap, set VDISCARD + to _POSIX_VDISABLE while readline is active. From a report from + Rhialto + + 1/22 + ---- +builtins/history.def + - histtime: check whether or not localtime() returns NULL, and make + sure we only call strftime() with a valid struct tm. This can happen + when the timestamps in the history file overflow a time_t. Fixes bug + reported by Luke Dashjr + +bashline.c + - edit_and_execute_command: if we're in vi editing mode, make sure + we end up in insert mode after executing the commands from the + edited file. This seems to be what other shells do. Report from + Stan Marsh + + 1/26 + ---- +bashline.c + - command_word_completion_function: match alias and shell function + names case-insensitively if the readline completion-ignore-case + variable is set. Inspired by report from + +lib/readline/display.c + - update_line: when performing a dumb update after wrapping the line + (usually due to printing the prompt), make sure we adjust + _rl_last_c_pos if there are invisible characters in prompt lines + other than the first (we assume those invisible characters are in + the last line, which is nearly always the case). We adjust by the + total number of invisible chars less the number of invisible chars + in the first prompt line. From a report in + https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1745273 + +execute_cmd.c + - execute_command_internal: if redirections attached to a compound + command fail, make sure we discard the `internal_fifos' unwind- + protect frame after freeing the copied fifo_list and before returning + + 1/30 + ---- +lib/readline/rlprivate.h + - BRACK_PASTE_FINI: add \r to the end of the string to avoid problems + with the tty driver thinking the cursor was in the wrong position. + Fixes issue reported by Egmont Koblinger + + 1/31 + ---- +lib/sh/zread.c + - zread,zreadintr: call check_signals() before calling read() to + minimize the race window between signal delivery, signal handling, + and a blocking read(2). Partial fix for FIFO read issue reported by + Oyvind Hvidsten + +doc/{bash.1,bashref.texi} + - shopt: document `assoc_expand_once' shell option + + 2/1 + --- +config-top.h + - DONT_REPORT_SIGTERM: define, so non-interactive shells will no + longer print termination messages for child processes killed by + SIGTERM + + 2/6 + --- +lib/readline/text.c + - rl_insert: don't attempt to optimize typeahead if we are only reading + a fixed number of characters (rl_num_chars_to_read > 0) + +redir.c + - redir_special_open: if the shell is restricted, return a + RESTRICTED_REDIRECT error for attempts to open /dev/tcp and /dev/udp + sockets. Inspired by report from Blake Burkhart + - do_redirection_internal: if redir_open returns RESTRICTED_REDIRECT, + return that right away (instead of errno) so we can print a better + error message + + 2/11 + ---- +jobs.c + - bgp_resize: fix problems with (pid_t) overflow when calculating new + size for table when js.c_childmax is near the limit of a pid_t + (e.g., 2**31 - 1 on a 32-bit system, or 2**63-1 on a system with + 32-bit pid_t). Fixes hang reported by Natanael Copa + based on his patch from 12/8. + - bgp_resize: cap max table size for bgpids at MAX_CHILD_MAX (32768) + +include/typemax.h + - TYPE_MINIMUM, TYPE_MAXIMUM: updated definitions from coreutils-8.29, + silences some compiler warnings + + 2/14 + ---- +Makefile.in + - maybe-clean: use cd and pwd -P to test whether or not two directory + names identical, since topdir = '.' and BUILD_DIR = full pathname + when you use something like `bash ./configure'. Problem reported by + Michael Felt + +subst.c + - split_at_delims: if SD_NOQUOTEDELIM is in the flags argument, don't + treat `'' and `"' as candidates for possible sequences of delimiters, + even if they're part of the delimiter set (the delims argument). + Fixes problem with completing lines like `foo --bar='quux baz' xx' + reported by Nick Patavalis + + 2/15 + ---- +copy_cmd.c + - copy_word_list: build the list in the right order, avoiding having + to reverse it at the end. Helps with long argument lists + +shell.c + - bind_args: build the argument list in the right order, avoiding + having to reverse it at the end. + - bind_args: only call push_args to save argc and argv as BASH_ARGC + and BASH_ARGV if debugging mode is enabled (debugging_mode != 0). + Inspired by report from Ambrose Feinstein + - bind_args: note that we've saved BASH_ARGC and BASH_ARGV by setting + bash_argv_initialized + - shell_reinitialize: reset bash_argv_initialized back to 0 so + BASH_ARGV and BASH_ARGC will be recreated if we're in debugging mode + +variables.c + - save_bash_argv: new function, initializes BASH_ARGV and BASH_ARGC + from the saved positional parameters + - init_bash_argv: initialize BASH_ARGV and BASH_ARGC if + bash_argv_initialized == 0 + +builtins/shopt.def + - shopt_set_debug_mode: if we're turning on debug mode, initialize + BASH_ARGC and BASH_ARGV if bash_argv_initialized == 0 + + 2/16 + ---- +execute_cmd.c + - execute_function: make sure BASH_ARGV and BASH_ARGC are initialized + before calling push_args (and before calling remember_args) + +builtins/source.def + - source_builtin: make sure BASH_ARGV and BASH_ARGC are initialized + before calling push_args (and before calling remember_args) + +builtins/evalfile.c + - _evalfile: if the shell compatibility level is 44 or lower, make + sure BASH_ARGV and BASH_ARGC are initialized before calling + array_push + +builtins/shopt.def + - compat44: new shell option. This will be the last compatXX option + +doc/{bash.1,bashref.texi} + - compat44: document new shell option + + 2/21 + ---- +builtins/common.h + - ISOPTION: check s[1] before s[2] to avoid out of bound reads. Fixes + bug reported by jeremy@feusi.co + +input.h + - B_SHAREDBUF: new flag for buffered input fds, indicates that this + fd shares its b_buffer with another fd + +input.c + - duplicate_buffered_stream: when duplicating *from* the buffer + corresponding to bash input, make sure the new buffer has B_SHAREDBUF + in the flags, because copy_buffered_stream copies pointers + - duplicate_buffered_stream: if the buffer being copied to has the + B_SHAREDBUF flag set, make sure the b_buffer doesn't get freed. + Fixes use-after-free bug reported by jeremy@feusi.co + - save_bash_input,close_buffered_stream: make sure a buffer with + B_SHAREDBUF set has its b_buffer set to NULL before calling + free_buffered_stream + + 2/24 + ---- +subst.c + - parameter_brace_expand_error: add parameter saying whether or not + we are checking whether value is null, so we can have different + error messages for ${x:?} and ${x?}. Report and fix from + don fong + + 3/5 + --- +lib/readline/bind.c + - _rl_read_file: instead of calling stat/open on the passed filename, + use open/fstat to avoid one possible filename translation and close + a small (benign) race condition. Report and fix from Roy Ivy + + + 3/11 + ---- +variables.c + - makunbound: if new variable localvar_unset is non-zero, mark local + vars in previous scopes as invisible and unset so they will show + up as unset until that previous scope returns (similar to how local + variables in the current local scope are handled). localvar_unset + is currently set to 0 with no way for a script to change its value. + Eventually there will be an option to modify it. From a bug-bash + discussion started by Nikolai Kondrashov back + on 2/11/2018 + + 3/13 + ---- +subst.c + - expand_word_list_internal: short-circuit and exit right away if a + variable assignment preceding a special builtin fails in posix mode + - expand_word_list_internal: if a variable assignment precedes an + empty command name (after expansion), fix to exit right away when + the shell is in posix mode + + 3/15 + ---- +doc/{bash.1,bashref.texi} + - Add text to Pathname Expansion clarifying that a slash must be + matched by a slash in the pattern when matching pathnames, but + not in other matching contexts. Suggested by + +builtins/common.c + - read_octal: allow octal numbers greater than 777 to accommodate + modes and umasks that include sticky/setuid/setgid bits. Report + and fix from Martijn Dekker + + 3/19 + ---- +lib/readline/bind.c + - rl_generic_bind: make sure we only assign to prevkey in the loop + if the key sequence index is > 0, so ic is valid. Fixes bug + reported by Koichi Murase + +builtins/read.def + - read_builtin: be slightly less aggressive checking for timeouts and + SIGALRM: if we successfully read a character, don't check for a + timeout until we store or process it. Fixes timing problem + reported by Rob Foehl + + 3/22 + ---- +sig.c + - termsig_handler: add a call to exit(1) after the kill, just in case + there are circumstances where the SIG_DFL signal handler is + ignored. Report from Andrei Vagin + + 3/25 + ---- +lib/readline/bind.c + - _rl_function_of_keyseq_internal: new internal function that takes a + length parameter to accommodate NUL in the key sequence. Patch from + Koichi Murase + - rl_function_of_keyseq_len: new application-callable function that + takes a length parameter; otherwise equivalent to rl_function_of_keyseq. + +lib/readline/readline.h + - rl_function_of_keyseq_len: add extern declaration for new function + +lib/readline/doc/rltech.texi + - rl_function_of_keyseq_len: document new function interface + +bashline.c + - bash_execute_unix_command: use rl_function_of_keyseq_len to handle + key sequences with embedded NULs (\C-@). Fix from Koichi Murase + + +lib/readline/bind.c + - rl_bind_key_if_unbound,rl_bind_key_if_unbound_in_map: run the KEY + argument through rl_untranslate_keyseq to produce a symbolic sequence + that can encode \C-@. + - rl_bind_keyseq_if_unbound_in_map: translate the key sequence in order + to accommodate symbolic key sequences; should be a no-op for `raw' + key sequences such as the arrow key seqeunces from terminfo. Change + from Koichi Murase + + 4/2 + --- +jobs.c + - wait_for: when setting the SIGINT signal handler to wait_sigint_handler + make sure we're not setting old_sigint_handler recursively, as we + can when running an external command in a trap we took after a + command exited due to SIGINT. We don't want to overwrite + old_sigint_handler here. Fixes bug reported by Dr. Werner Fink + + +execute_cmd.c + - execute_disk_command: when there is a command_not_found_hook, make + sure the subshell turns off job control before running it, in case + it runs processes. We don't want it to manipulate process groups. + Fixes bug reported by ÐиÑиллов Ðима + - execute_command_internal: make sure the command run by the `command' + builtin doesn't cause the ERR trap to be executed; wait for the + status to be returned by the command builtin. Fixes bug reported by + Martijn Dekker + + 4/4 + --- +subst.c + - process_substitute: handle longjmp back to top_level and function + returns (return_catch) in the child process, like command + substitution, so we don't longjmp back to some arbitrary spot from + the `exit' or `return' builtins, or on an expansion error, like + the command timing code. Fixes bug reported by Basin Ilya + + + 4/6 + --- +parse.y + - read_token_word: when reading a matched pair of backquotes as part + of a word, treat it as quoted so the characters are read as a single + word, but do not let the presence of the backquote mark the word as + quoted. Fixes here-document delimiter bug reported by Denys Vlasenko + + + 4/7 + --- +execute_cmd.c + - execute_case_command: call quote_string_for_globbing with the + QGLOB_CTLESC flag for both quoted and unquoted words, so it will + remove CTLESC/CTLESC in all cases while converting other quoted + characters to use a preceding backslash. Bug reported by + Martijn Dekker + + 4/9 + --- +smatch.c + - posix_cclass_only: helper function that checks whether a pattern has + only posix single-byte character classes ([:alpha:], etc.) or has + none at all + - xstrmatch: if running in a multibyte locale, make sure to short- + circuit to the single-byte matching code only if there are no + unrecognized character class names, since the wide character ctype + functions allow locales to define their own character class names + (e.g., "hyphen"). Fixes issue reported by yangyajing + + 4/10 + ---- +configure.ac,cross-build/qnx.cache + - qnx: add a configure cache file for cross-building, treat qnx 7 like + qnx 6 in terms of cpp options. Fix from Brian Carnes + + +aclocal.m4 + - BASH_CHECK_DEV_STDIN: experimental change to test for /dev/stdin + independently of /dev/fd or /proc/self/fd. Suggested for QNX by + Brian Carnes + + + 4/11 + ---- +lib/glob/glob.c + - glob_testdir: return -2 if DIR is a symlink, to differentiate it from + any other kind of non-directory file + - glob_vector: if we have GX_ALLDIRS (globstar), we want to skip over + symlinks to directories, since we will pick up the real directory + later. Fixes incompatibility reported by Murukesh Mohanan + + +bashline.c + - bash_execute_unix_command: changes to make READLINE_POINT apply to + characters instead of bytes when in a multibyte locale. Report and + fix from Koichi Murase + + 4/12 + ---- +builtins/evalstring.c + - parse_and_execute_cleanup: now takes an argument which is the value + of running_trap at some point before parse_and_execute was called; + changed callers in sig.c, builtins/evalfile.c + +builtins/common.h + - parse_and_execute_cleanup: changed prototype + + 4/13 + ---- +builtins/evalstring.c + - parse_and_execute_cleanup: if the argument holding the previous state + of running_trap is the same value as the current running_trap state, + don't call run_trap_cleanup: assume that there is a caller who will + take care of the cleanup after this returns. Fixes recursive trap + call on "eval return" reported by Martijn Dekker + +parse.y + - read_a_line: if remove_quoted_newline is non-zero, indicating the + here-document delimiter is unquoted, we will be running the contents + of the here-document through word expansion and need to quote CTLESC + and CTLNUL in the input. Fixes bug with ^A in here document reported + by Jorge Alberto Baca Garcia + + 4/18 + ---- +pathexp.c + - quote_string_for_globbing: make sure the QGLOB_CTLESC code handles + both CTLESC CTLESC and CTLESC CTLNUL in the same way. Fixes bug + reported by Martijn Dekker + + 4/19 + ---- +execute_cmd.c + - execute_command_internal: before executing any command in the current + shell, and before copying any existing FIFO list, call + reap_procsubs to unlink or close any process substitution pipes + associated with processes that have exited. Fixes hang in test suite + when trying to open a FIFO with no process having it open for + reading + + 4/26 + ---- +parse.y + - read_token_word: if returning REDIR_WORD for a {id}>foo construct, + for example, make sure to assign the_word to yylval.word before + returning, in case a recursive call to the parser overwrites it + (e.g., when evaluating array indexes). From a message to + austin-group-l from Stephane Chazelas + +lib/glob/sm_loop.c + - BRACKMATCH: if we have an invalid character class in an otherwise + well-formed bracket expression, don't try to match each character + of the (invalid) class individually; just skip over the class and + move on. From a message on the austin-group list from + Stephane Chazelas + + 4/27 + ---- +variables.c + - push_exported_var,push_func_var,push_temp_var: make sure to set the + context correctly in the variable we bind in the previous (non-temp) + scope. Report from Martijn Dekker + +pathexp.c + - unquoted_glob_pattern_p: a pattern that contains a backslash can + have it removed by the matching engine (since backslash is special + in pattern matching), so if the pattern contains a backslash, and + does not end in a backslash, we need to return true. Fixes bug + reported by Robert Elz + +lib/glob/glob_loop.c + - INTERNAL_GLOB_PATTERN_P: same change to return TRUE for a backslash + that doesn't end the pattern + +lib/sh/timeval.c + - print_timeval: use locale_decpoint() instead of fixed `.' to print + decimal point. Bug report in austin-group email from Joerg Schilling + + +lib/sh/clock.c + - print_clock_t: use locale_depoint() in the same way as print_timeval + + 4/29 + ---- +subst.c + - expand_cond_node: if special != 0, make sure to add QGLOB_CTLESC + to the flags passed to quote_string_for_globbing. Same issue as the + one with `case' fixed on 4/7, report from Martijn Dekker + + + 4/30 + ---- +redir.c + - do_redirection_internal: r_close_this: if the file descriptor is + already closed before the shell is asked to close it, make sure to + add an undo list redirect to make sure it stays closed. Report from + Martijn Dekker + + 5/2 + --- +variables.c + - push_posix_temp_var: new function, takes the SHELL_VAR * passed as + an argument and uses the name and value to create a global variable + - merge_temporary_env: if posixly_correct is set, call + push_posix_temp_var to create global variables, otherwise call + push_temp_var to preserve the old behavior. Right now, it's only + called when in posix mode, but that might change. This undoes the + change from 4/27 when in posix mode + + 5/3 + --- +sig.c + - struct that holds the terminating signal information has a new + field: whether that signal is expected to cause a core dump + - termsig_handler: if the call to kill(2) doesn't kill the process, + we have a problem. If our pid is not 1, we just exit with status + 128+sig (fake the sig exit status). If the pid is 1, we assume + we're in a Linux pid namespace and aren't allowed to send a signal + to ourselves. If we need to generate a core dump, we try to get + the kernel to SIGSEGV us by dereferencing location 0. If not, we + just exit with 128+sig. From a report and patch from Andrei Vagin + + + 5/4 + --- +bashline.c + - bash_execute_unix_command: make sure that parse_and_execute is called + with newly-allocated memory to avoid prematurely freeing the + command. Report and fix from Koichi Murase + + 5/7 + --- +builtins/shopt.def + - syslog_history: a shell option to control whether history is logged + to syslog; can be modified at runtime. Original patch from + Siteshwar Vashisht + +config-top.h + - SYSLOG_SHOPT: new configurable option, determines whether there is a + shell option to control syslogging history lines at runtime and sets + the default value of the option + +bashline.c + - syslog_history: new variable to control whether history lines are + sent to syslog; default value is the value of SYSLOG_SHOPT (or 1 + if that's not defined) + - bash_add_history: send history lines to syslog if syslog_history is + non-zero + + 5/10 + ---- + +variables.c + - push_var_context: if we are in Posix mode and manipulating the + temporary environment (temporary_env), implement behavior specified + in Posix interp 1009 and make sure that temporary assignments + preceding function calls modify the current environment *before* + the function is executed. + +[bash-5.0-alpha frozen] + + 5/12 + ---- +execute_cmd.c + - execute_in_subshell: subshells should set loop_level == 0, since + they are no longer "enclosed" by the loop, according to posix. + Report from Aeron.E. Wang + + 5/24 + ---- +Makefile.in + - pkgconfigdir: don't fail installing bash.pc if this directory doesn't + exist or isn't writable -- there's no error in failing to install + something nothing will use + - install-headers-dirs: creat $(pkgconfigdir) if it doesn't exist + +lib/sh/shmbchar.c + - utf8_mblen: replace with version from gnulib + - utf8_mbstrlen: reimplement using utf8_mblen so it handles invalid + multibyte sequences in the same way as mbstrlen + +lib/readline/mbutil.c + - _rl_utf8_mblen: utf-8 specific version of mblen from gnulib + +include/shmbutil.h + - ADVANCE_CHAR,COPY_CHAR_P: do better job detecting end of string in + UTF-8 locales (should not be called with an empty string, but to + be safe) + + 5/25 + ---- +lib/sh/utf8.c + - new file, utf-8-specific functions collected from other files + +externs.h + - extern declarations moved around for utf8.c + +include/shmbutil.h + - SADD_MBCHAR, SADD_MBQCHAR_BODY, ADVANCE_CHAR_P: if the locale is a + UTF-8 locale, don't bother with a call to mbrlen if the current + character cannot start a multibyte character + +variables.c + - push_var_context: only merge the temporary environment in posix mode + if we are executing a shell function (flags & VC_FUNCENV). Report + from Martijn Dekker + +lib/readline/mbutil.c + - _rl_get_char_len: don't call mbrlen if we are in a UTF-8 locale and + the character cannot start a multibyte sequence + +builtins/read.def + - read_builtin: if mb_cur_max > 1, call read_mbchar only if we're not + in a utf-8 locale or, if we are, the character we just read indicates + the start of a multibyte sequence + +subst.c + - string_extract_verbatim: don't call MBRLEN if we're in a utf-8 + locale and the current character can't start a multibyte sequence + - setifs: don't call MBRLEN if we're in a utf-8 locale and the first + character of $IFS can't start a multibyte sequence + +lib/readline/kill.c + - rl_bracketed_paste_begin: make sure we return 0 here if rl_insert_text + returns the right number of characters inserted to be consistent + with other functions. Returns 1 otherwise. Report and fix from + Gabe Krabbe back in March, 2018 + +lib/readline/readline.c + - rl_subseq_result: make sure r is < 0 before checking map[ANYOTHERKEY] + to see if we shadowed a key that should now be tried + + 5/27 + ---- +variables.c + - assign_aliasvar: perform same validity check on subscript assignment + as alias builtin performs on name argument. Bug report from + Mike Jonkmans + + 5/29 + ---- +builtins/setattr.def + - set_var_attribute: we should not propagate a variable assignment + preceding a builtin back to the calling environment unless the + shell is in posix mode. Since previous versions of the shell do + this, setting the shell compatibility level to 44 or less will + continue the propagation behavior + + 6/1 + --- +lib/readline/histexpand.c + - history_tokenize_word: as part of teaching history tokenization more + and more about shell syntax, allow command and process subsitution + and extended globbing patterns to appear within a word being + tokenized and not just at the beginning. Fixes bug reported back in + 2/2017 by ecki@tofex.de + +bashhist.c + - load_history: use HISTSIZE_DEFAULT (still defaults to "500") to set + the initial value of $HISTSIZE. HISTSIZE_DEFAULT can be overridden + in config-top.h + + 6/4 + --- +configure.ac + - make sure we link against an external readline library that's at + least version 8 + + 6/8 + --- +pcomplete.h + - INITIALWORD: internal compspec name for programmable completion on + the initial (usually the command) word + +bashline.c + - attempt_shell_completion: if we are in a command position and the + user has defined a compspec for INITIALWORD, use programmable + completion to complete command words. Original patch from + Luca Boccassi + +lib/readline/doc/rluser.texi,builtins/complete.def,doc/bash.1 + - make it clearer that -D takes precedence over -E when supplied as + options to `complete', not when they are applied during completion + +builtins/complete.def + - complete_builtin,compgen_builtin: add support for -I option + - print_one_completion,print_compopts: display -I when appropriate + +lib/readline/doc/rluser.texi,doc/bash.1 + - complete,compgen: document new -I option and its effect + + 6/10 + ---- +lib/readline/histfile.c + - read_history_range: don't apply the heuristic and try to append a + history line to an existing history entry if we don't have any + history entries. Bug and fix from Edward Huff + + 6/12 + ---- +bashline.c + - attempt_shell_completion: don't all the programmable completion for + INITIALWORD if programmable completion is disabled + - attempt_shell_completion: make sure in_command_position remains set + for an empty command word on an otherwise blank line, making the + presence of assignment statements optional. Report from + Luca Boccassi + + 6/20 + ---- +lib/malloc/malloc.c + - morecore,internal_malloc,internal_free: requests for more than + 128K bytes (defined as MMAP_THRESHOLD and saved in the new + malloc_mmap_threshold variable) are now satisfied via mmap and + freed via munmap. We only use mmap if we have mmap and MAP_ANON + (or MAP_ANONYMOUS). These blocks are not available for splitting + or coalescing, so every request for 128K bytes or smaller is + satisfied via sbrk(). We don't use mremap for realloc yet, but + we could in the future + +lib/malloc/mstats.h + - malloc_stats: the malloc stats now include the number of calls to + mmap and the total number of bytes requested via mmap. The number + of calls to munmap is captured in each bucket's lesscore count + +lib/malloc/stats.c + - print_malloc_stats: now prints an indication of where the change from + sbrk to mmap takes place, and prints number of mmap calls and total + number of bytes allocated using mmap + + 6/22 + ---- +variables.c + - get_bashargcv: new dynamic "fetch" variable for BASH_ARGV and + BASH_ARGC, for backwards compatibility: if a script makes a + reference to either variable at the top level (not in a shell + function) without enabling debugging mode and not having initialized + the variable previously (using a simple semaphore), create the + variables + + 6/25 + ---- +configure.ac + - opt_bash_malloc: bash malloc no longer disabled for systems that + require eight-bit alignment; the bash malloc has had this for a + long time + + 7/4 + --- +bashline.c + - pre_process_line: if command-oriented history is enabled, and the + line being expanded is the second or later in a multi-line command, + and we know the command is being saved as the current history entry, + decrease history_length before calling history_expand so references + like !! refer to the previous history entry as usual + +lib/readline/histexpand.c + - history_quoting_state: new variable, can be set by calling + application before calling history_expand to note that the string + being expanded is part of a quoted string. Can be set to a single + quote, a double quote, or 0 (no quoting) + - history_expand: look at history_quoting_state and honor the + single-quote setting by not expanding any initial portion of the + line before the closing single quote. This allows history expansions + to be performed on a line containing a closing single quote if they + appear after the single quote + +lib/readline/history.h + - history_quoting_state: extern declaration + +bashhist.c + - bash_history_inhibit_expansion: if history_quoting_state indicates + that this string is single-quoted, skip over the single-quoted + portion and determine whether or not the portion after the + quoted string needs to be inhibited from history expansion + +parse.y + - shell_getc: set history_quoting_state based on the contents of the + current delimiter before calling pre_process_line + + 7/6 + --- +lib/readline/doc/hsuser.texi + - describe the default behavior of backslash and single and double + quotes + +lib/readline/doc/hstech.texi + - history_quoting_state: describe effect of setting this variable + - history_quotes_inihibit_expansion: expand the description to include + the default quoting behavior that setting this variable enables + + 7/9 + --- +support/man2html.c + - unescape: use memmove instead of strcpy to handle overlapping strings + Report and fix from Bernhard M. Wiedemann + +lib/sh/getenv.c + - getenv: check that environ is non-NULL before looking through it. + Report and fix from Keeley Hoek + + 7/12 + ---- +braces.c + - mkseq: use better integer overflow handling for systems with 32-bit + ints and 64-bit intmax_ts. Bug reported by Simon Wörner + as the result of fuzzing + +builtins/declare.def + - declare_internal: make sure bind_variable returns non-NULL when + setting attributes for a variable named as an argument to declare + that also appears in the temporary environment (and is a nameref). + Bug reported by Simon Wörner + +parse.y,externs.h + - reset_readahead_token: new convenience function for the rest of + the shell, resets token_to_read if it's a newline (as it will be + after reset_parser is called) + +eval.c + - reader_loop: if we're just going to execute one command, make sure + the read-ahead token isn't set to something that will result in a + NULL command (by calling reset_readahead_token), since the code + will take that as the one command and set EOF_Reached + + 7/15 + ---- +doc/{bash.1,bashref.texi} + - indirect expansion: clarify that the expansion works on parameters, + not just variables (NAMEs). Suggested by konsolebox + + + 7/16 + ---- +doc/{bash.1,bashref.texi} + - INSIDE_EMACS: document its effect on line editing + + 7/17 + ---- +lib/readline/{readline.c,rlprivate.h} + - _rl_eof_found: new variable, private to the readline library, that + indicates whether the current call to readline() will return NULL + because we read EOF + +lib/readline/rltty.c + - rl_deprep_terminal: if bracketed paste mode is active, the last + character of the string to disable it is \r (to avoid confusing + the terminal driver about where the cursor is). In this case, + output a newline before returning so subsequent text (like the + `exit' bash prints) doesn't overwrite the prompt. Bug from + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=903936 + +variables.c + - make_local_assoc_variable: add second argument like corresponding + local array function, to allow this function to return an existing + local array variable to the caller for the caller to handle + +variables.h + - make_local_assoc_variable: change function prototype to add second + arg + +{subst.c,variables.c} + - make_local_assoc_variable: change callers + +builtins/declare.def + - declare_internal: call make_local_assoc_variable with a non-zero + second arg to have it return an existing local array variable to be + flagged as an error. Fixes bug reported by Grisha Levit + + - declare_internal: call make_local_array_variable with unconditional + second argument of 1 for the same reason as above + + 7/18 + ---- +variables.c + - bind_invalid_envvar: new function, takes invalid names from the + initial environment (names that are not valid shell identifiers) and + stores them in a separate hash table (invalid_env) + - maybe_make_export_env: make sure to add names from invalid_env to + the export env + - assign_in_env: for now, prevent variable names that aren't shell + identifiers from being added to the temporary environment. Addresses + issue raised by Grisha Levit + +test.c + - unary_test: rearrange code slightly to avoid a wasted variable lookup + if the argument to -v is a subscripted array reference + + 7/19 + ---- +variables.c + - nameref_transform_name: if a name doesn't resolve to a shell variable, + this function will check whether it resolves to a nameref that + points to a variable that hasn't been created yet + +variables.h + - nameref_transform_name: extern declaration + +subst.c + - do_compound_assignment: make sure that we follow any nameref chain + if the name passed resolves to a nameref that points to a variable + that doesn't exist. Fixes issue raised by Grisha Levit + + +builtins/declare.def + - declare_internal: before calling any variant of make_local_variable, + make sure to perform any transformation of the name indicated by an + existing nameref. Fixes issue raised by Grisha Levit + + + 7/20 + ---- +builtins/declare.def + - declare_internal: if we are creating a global variable with -g, even + if we're not giving it a value, check for namerefs at the global + scope to avoid confusion with namerefs at the local (function) scope. + +subst.c + - expand_word_internal: if a double-quoted string expands to nothing, + make sure we note that for later by setting had_quoted_null, just + as we do for single-quoted empty strings + +subst.[ch] + - W_SAWQUOTEDNULL: new flag (replaces W_HASCTLESC, which is unused), + means that we saw a possibly-discarded quoted null while expanding + this word + +subst.c + - expand_word_internal: if expansion results in a non-empty word but + we saw a quoted null during expansion (had_quoted_null == 1), set + W_SAWQUOTED_NULL in the returned word + - expand_word_internal: if a recursive call to param_expand comes back + with W_SAWQUOTEDNULL set in the resulting word, set had_quoted_null + to note it + - parameter_brace_expand_rhs: if a recursive call to expand_word_internal + returns a non-quoted-null string (after an optional call to + string_list) make sure we pass the W_SAWQUOTEDNULL flag back to the + caller + - word_list_split: if a word expands to nothing after expansion and + splitting, but we saw a quoted null during the expansion + (W_SAWQUOTEDNULL), return an empty word + + 7/25 + ---- + +subst.c + - do_compound_assignment: if creating a local variable, make sure to + set `newname' to the name of the variable returned from find_variable, + since that follows namerefs. Fixes issue raised by Grisha Levit + + + 7/29 + ---- +subst.c + - get_var_and_type: if VALUE is NULL, check before calling dequote_string. + Report and fix from Grisha Levit + + 7/30 + ---- +variables.c + - make_local_{array,assoc}_variable: make sure we're not trying to + inherit a value from an incompatible array type. Fixes issue raised + by Grisha Levit + - nameref_transform_name: if we're trying to resolve a nameref that + will be used to create a local variable, make sure the nameref is + at the same variable scope. Report from Grisha Levit + + + 8/2 + --- +array.c + - array_subrange: change to use string_list_pos_params after creating a + WORD_LIST from the array slice, like assoc_subrange does + +subst.c + - parameter_brace_substring: since assoc_subrange and array_subrange + both call string_list_pos_params now, treat the results the same as + the VT_POSPARAMS case (pos_params also calls string_list_pos_params). + Fixes behavior difference between ${a[@]:sub} and ${@:sub} reported + by Ilkka Virta + + 8/3 + --- +array.c + - array_patsub: rewrite to work in terms of a WORD_LIST * and call + string_list_pos_params on the result to be consistent with the + expansions of ${@/pat/rep} and ${*/pat/rep} + +assoc.c + - assoc_patsub: rewrite to work in terms of a WORD_LIST * and call + string_list_pos_params on the result to be consistent with the + expansions of ${@/pat/rep} and ${*/pat/rep} + +subst.c + - parameter_brace_patsub: change how return value of {array,assoc}_patsub + is treated to make it identical to pos_params_pat_subst, since they + all call string_list_pos_params now + - expand_string_for_pat: make sure we preserve the value of + expand_no_split_dollar_star instead of just unconditionally setting + it back to 0 in case it was 1 before this function was called + + 8/6 + --- +array.c + - array_modcase: rewrite to work in terms of a WORD_LIST * and call + string_list_pos_params on the result to be consistent with the + expansions of ${@,,} and ${*,,} + +assoc.c + - assoc_modcase: rewrite to work in terms of a WORD_LIST * and call + string_list_pos_params on the result to be consistent with the + expansions of ${@,,} and ${*,,} + +subst.c + - parameter_brace_casemod: change how return value of {array,assoc}_modcase + is treated to make it identical to pos_params_modcase, since they + all call string_list_pos_params now + + 8/8 + --- +builtins/declare.def + - declare_internal: if we are making local variables, and not dealing + with the nameref attribute, make sure that any nameref variable we + followed when resolving the name given was at the same variable + context. If not, we just want to make or use a local variable with + the name passed; if so, we want to use the nameref value as the + variable name. Report from Grisha Levit + + 8/9 + --- +configure.ac + - globasciiranges: RRI now on by default, must be turned off explicitly + at configure time or runtime with `shopt -u globasciiranges' + + 8/14 + ---- +variables.c + - dispose_saved_dollar_vars: decrement stack pointer before looking + for saved positional parameters to dispose; stack pointer always + points to the first unused slot + + 8/15 + ---- +variables.c + - dollar_arg_stack: now a stack of struct saved_dollar_vars, which has + an array for the first ten (dollar_vars) and a WORD_LIST * for the + remaining (rest_of_args). Fixes performance issue with function calls + and large numbers of positional parameters raised by + Bize Ma + - {save,restore,free,free_saved}_dollar_vars: new functions to manage + dollar_vars and dollar_arg_stack members. Need to keep these in sync + with whatever remember_args does + - push_dollar_vars: use save_dollar_vars, which just copies pointers, + and directly assign rest_of_args, without copying the words, to the + dollar_arg_stack entry. Have to clear dollar_vars and rest_of_args + with the assumption that callers will call remember_args(args, 1) + immediately following + - pop_dollar_vars: free current positional parameters and restore old + ones from pointers saved in dollar_arg_stack, making sure to + invalidate any cached value for "$@" + - dispose_saved_dollar_vars: free saved pointers from current index + into dollar_arg_stack + +doc/{bash.1,bashref.texi} + - POSIXLY_CORRECT: make sure to note that bash makes sure this variable + is set when posix mode is enabled + + 8/17 + ---- +{jobs,nojobs}.c + - set_jobs_list_frozen: set jobs_list_frozen to a particular value. + Intended to save and restore the value around code sections instead + of unconditionally unfreezing it. + +jobs.h + - set_jobs_list_frozen: extern declaration + +execute_cmd.c + - execute_pipeline: if lastpipe is enabled, save and restore the + value of jobs_list_frozen using freeze_jobs_list/set_jobs_list_frozen + to avoid problems with race conditions and nested pipelines + causing jobs to be removed from the jobs table. Fixes savannah issue + https://savannah.gnu.org/support/index.php?109541 reported by + Björn Kautler + + 8/24 + ---- +execute_cmd.c + - lastpipe_cleanup: call set_jobs_list_frozen instead of + unfreeze_jobs_list + - execute_pipeline: set up lastpipe_cleanup with old value of + jobs_list_frozen + + 9/3 + --- +builtins/printf.def + - getuintmax,getfloatmax: on a conversion error, return as much of the + value as we were able to convert instead of 0. Fixes bug reported + by Robert Elz + + 9/4 + --- +lib/readline/text.c,lib/readline/rlprivate.h + - _rl_backward_char_internal: new function, guts of rl_backward_char + and rl_backward_byte, not currently used there + +lib/readline/vi_mode.c + - _rl_vi_advance_point: new function, move point forward by one + character, handling multibyte locales and characters and the end + of line semantics + - _rl_vi_backup_point: new function, move point backward by one + character, handling multibyte locales and characters + - rl_vi_eword,rl_vi_eWord: use rl_vi_advance_point instead of a simple + increment to handle multibyte characters. Fixes bug reported by + Enrico Maria De Angelis + + 9/5 + --- +lib/readline/vi_mode.c + - rl_vi_fword,rl_vi_fWord: use rl_vi_advance_point instead of a simple + increment to handle multibyte characters + - rl_vi_bword,rl_vi_bWord: use rl_vi_backup_point instead of a simple + decrement (and _rl_vi_advance_point where necessary) to handle + multibyte characters + - rl_vi_complete,_rl_vi_change_mbchar_case,_rl_vi_domove_motion_cleanup: + use _rl_vi_advance_point instead of simple rl_point increment + - vi_delete_dispatch,vi_change_dispatch,vi_yank_dispatch: use + INCREMENT_POS instead of a simple increment to rl_mark to handle + multibyte characters + - rl_vi_column: use _rl_forward_char_internal, starting with + rl_point == 0, to handle multibyte characters (Posix says `character + position', not index) + + 9/7 + --- +configure.ac + - changed release status to `beta' + + 9/9 + --- +lib/readline/display.c + - _rl_update_final: if the bottom line has zero characters and we are + on that line at column 0, don't bother with an additional \r\n. + Fixes redisplay nit reported by Per Bothner + + +configure.ac + - openbsd needs DEV_FD_STAT_BROKEN defined + +[bash-5.0-beta frozen] + + 9/11 + ---- +builtins/exec.def + - exec_builtin: make sure to sync the buffered stream where bash is + reading input (especially if it's fd 0) so a command exec'd by the + script can read the rest of stdin after the exec + + 9/15 + ---- +lib/readline/histexpand.c + - history_tokenize_internal: if the event contains embedded newlines + (e.g., bash with command-oriented history and lithist), use them as + word delimiters, equivalent to space and tab, so they don't end up + as separate words. Fixes issue pointed out by Viktor Dukhovni + + - history_tokenize_word: don't break if we get a newline (though we + shouldn't get one due to the loop in history_tokenize_internal + - history_expand_internal: use newline as a whitespace character when + expanding by words, as we do with history_tokenize_internal + +jobs.h + - J_PIPEFAIL: new flag for `flags' element of job struct + +jobs.c + - stop_pipeline: if pipefail_opt set, newjob gets J_PIPEFAIL in its + flags word + - raw_job_exit_status: use J_PIPEFAIL (setting of pipefail when job + created) instead of current setting of pipefail status to determine + how to compute exit status of pipeline. Tentative implementation of + Posix proposal + +expr.c + - exp0: don't call expr_bind_variable with a NULL string. Fixes + fuzzing bug reported by Eduardo Bustamante + - expr_bind_variable: don't try to do anything with a NULL or empty + LHS + + 9/16 + ---- +lib/readline/undo.c + - rl_do_undo: before we release the undo list entry we've just + processed, make sure we avoid any pointer aliasing issues caused + by having the entry being removed as part of the undo list in + _rl_saved_line_for_history. Fixes fuzzing bug reported by + Eduardo Bustamante + + 9/17 + ---- +[bash-5.0-beta released] + + 9/18 + ---- +lib/readline/bind.c + - name_and_keymap: new struct for keymap names and maps + - builtin_keymap_names: static array of builtin keymap names and + maps; preparing for allowing applications to set the names of + keymaps they create; keymap_names is initially a pointer to + this array + - _rl_get_keymap_by_name,_rl_get_keymap_by_map: new functions for + searching the keymap_names array and returning an index + - rl_get_keymap_by_name, rl_get_keymap_name: rewritten in terms of + new functions above + - rl_set_keymap_name (char *name, Keymap map): new function, set + name of MAP to NAME. NAME must not be builtin; MAP must not be one + of the builtin keymaps. Request and initial implementation from + Tom Tromey + +lib/readline/readline.h + - rl_set_keymap_name: new extern declaration for new public function + +lib/readline/doc/rltech.texi + - rl_set_keymap_name: add documentation + +lib/readline/doc/rluser.texi + - add text to `set keymap' description to note that applications + can add keymap names that can be used there + + 9/20 + ---- +parse.y + - shell_getc: don't execute the alias hack (returning a space at the + end of the string) if we are parsing a command substitution that + starts with a double paren (subshell inside a comsub), in which + case the flags are PSH_DPAREN. Fixes fuzzing bug reported by + Eduardo Bustamante + +lib/readline/isearch.c + - _rl_isearch_dispatch: default case: make sure we check multibyte + char length when deciding whether to enlarge the search string + buffer, instead of using the old assumption. Fixes fuzzing bug + reported by Eduardo Bustamante + +builtins/fc.def,execute_cmd.c + - fixed some missing free()s uncovered by coverity. Report from + Siteshwar Vashisht + +lib/glob/glob.c + - glob_vector: make sure name_vector is initialized to NULL + +lib/sh/{pathcanon,pathphys}.c + - {pathcanon,pathphys}: use memmove instead of strcpy on a possibly- + overlapping region of memory + +subst.c + - parameter_list_transform: make sure to dispose the word list in all + cases before returning + - parameter_brace_expand_rhs: make sure t1 is freed before returning + due to an invalid name resulting from an indirect expansion + +support/man2html.c + - fixed a couple of memory leaks + + 9/21 + ---- +subst.c + - process_substitute: if we are part of a job control process chain + (pipeline_pgrp != shell_pgrp), have the child shell forked to run + the process substitution set pipeline_pgrp to its own PID, + effectively becoming a process group leader without changing + its own process group. Fixes stray SIGHUP issue reported by + Jeremy Townshend + + 9/23 + ---- +arrayfunc.c + - assign_array_element: if we are assigning to an existing associative + array, and assoc_expand_once is set, allow `*' and `@' as subscripts. + Partial fix for report from Grisha Levit + +variables.c + - bind_int_variable: if valid_array_reference (lhs) is not true, + make sure that the lhs is a valid identifier before assigning the + value + +arrayfunc.c + - valid_array_reference: allow blank subscripts. They are treated as + `normal' keys for associative arrays and evaluate to 0 for indexed + arrays. More of fix for report from Grisha Levit + + + 9/24 + ---- +bashline.c + - restore_tilde: if the expanded length (xl) is longer than vl + we end up requesting a negative amount of memory (an extremely + large unsigned number). Just punt and return val in this case. + Fuzzing bug reported by Eduardo Bustamante + - restore_tilde: make sure we return what the user typed if tilde + expansion fails + + 9/29 + ---- +builtins/shopt.def + - uncomment `localvar_unset' option definition + +doc/{bash.1,bashref.texi} + - document `localvar_unset' shell option + +arrayfunc.c + - valid_array_reference: if we are parsing a subscript for an existing + associative array, the `assoc_expand_once' option is set, and the + VA_ONEWORD flag is set in FLAGS (meaning there should be nothing + following the closing `]'), don't call skipsubscript to find the + closing `]', use one that is at the end of the word. Part of fix for + issue reported by Grisha Levit + +builtins/{printf,set}.def + - pass VA_ONEWORD as part of flags value everywhere valid_array_reference + is used + +config-top.h + - CHECKWINSIZE_DEFAULT: now 1, so check_window_size is on by default + - HISTEXPAND_DEFAULT: new define, allows builder to enable or disable + history expansion by default at build time + +doc/{bash.1,bashref.texi} + - checkwinsize: document new default value + +bashhist.h + - HISTEXPAND_DEFAULT: don't define if it's already defined. Strict + POSIX mode continues to default to off + + 9/30 + ---- +lib/readline/input.c + - win32_isatty: win32-specific changes from GDB. Patch submitted by + Tom Tromey , originally from Eli Zaretskii + + + 10/1 + ---- +lib/readline/vi_mode.c + - rl_vi_start_inserting: start an undo group so we can grab the text + inserted here as a single unit, avoiding any insert coalescing + performed by rl_insert_text. Report and fix from Richard Todd + + + 10/3 + ---- +subst.c + - parameter_brace_transform: if we're asked to display the attributes + of an unset variable, check that the variable exists even if + get_var_and_type returns NULL (it checks invisible_p). Requested by + Michal Pesa + +lib/readline/kill.c + - _rl_bracketed_text: new function, collects the text pasted in + bracketed paste mode and consumes the bracketed paste end marker; + returns the pasted text and its length + - rl_bracketed_paste_begin: call _rl_bracketed_text to collect the + text + +lib/readline/isearch.c + - _rl_isearch_dispatch: set cxt->lastc to -7 if the input resolves to + rl_bracketed_paste_begin + - _rl_isearch_dispatch: if cxt->lastc == -7, call _rl_bracketed_text + to collect the pasted text and add it to the accumulating search + string. Only works if ESC is not one of the isearch terminators. + Fixes issue reported in Debian bug report 891780, + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=891780 + + 10/5 + ---- +variables.c + - push_posix_tempvar_internal: new function, body of push_func_var + with additional argument saying whether it's being called from a + function or (special) builtin code path + - push_builtin_var: new function, calls push_posix_tempvar_internal + with second argument indicating builtin code path + - push_func_var: now a stub that calls push_posix_tempvar_internal + with second argument indicating function code path + - pop_scope: if called from a special builtin, call push_builtin_var + instead of push_func_var to do the right variable propagation + +builtins/shopt.def + - progcomp_alias: uncomment, make available to users + +doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi + - progcomp_alias: document shopt option, describe its use in + the section on programmable completion + +trap.c + - decode_signal: handle SIGRTMIN+n at runtime, with the `SIG' prefix + or without, case-insensitively if requested, and return SIGRTMIN+n. + These values could be different than what was available at compile + time. Report and patch from Rasmus Villemoes + + 10/8 + ---- +execute_cmd.c + - execute_command_internal: only set line_number from command->value.Subshell + if the type == cm_subshell; otherwise defer and set later + + 10/10 + ----- +examples/loadables/seq.c + - seq: new loadable builtin, derived originally from coreutils:seq.c + but with very little of that code remaining + + 10/12 + ----- +trap.c + - run_pending_traps,_run_trap_internal: honor evalnest_max and + increment/decrement evalnest accordingly, since trap actions + are processed as if run by `eval'. Feature suggsted by Mike + Gerwitz + + 10/16 + ----- +expr.c + - expr_skipsubscript: new function, calls skipsubscript with flags + similar to arrayfunc.c:valid_array_subscript if assoc_expand_once + is set and it looks like we've already expanded the subscript of + an associative array. Reported back on 8/27 by Grisha Levit + + - readtok: call expr_skipsubscript instead of skipsubscript + +arrayfunc.c + - valid_array_reference: call skipsubscript with a third arg computed + from the VA_NOEXPAND flag only if we're expanding an associative + array subscript -- we already figure out whether or not we are + +[bumped release status to beta2] + + 10/20 + ----- +builtins/setattr.def + - set_or_show_attributes: after isolating NAME, make sure to restore + the "[+]=" in case we need the word later. Issue pointed out by + Grisha Levit + + 10/21 + ----- +lib/readline/search.c + - noninc_search_from_pos: if we are supposed to be searching for a + pattern (vi mode), make sure to pass S to _hs_history_patsearch, + since that has any leading `^' stripped + +lib/readline/histsearch.c + - _hs_history_patsearch: if the search isn't anchored, put a `*' at + the beginning to force fnmatch to match anywhere in the line (could + look at this later to make a change to history_search_internal that + would avoid the need to add the leading `*') + +subst.c + - parameter_brace_expand_rhs: treat a failure to assign a variable with + a ${param:=value} expansion as an expansion error, and, in a non- + interactive posix-mode shell, exit the shell + - param_expand: don't set W_SPLITSPACE for $* unless IFS is NULL; + consistent with other uses of W_SPLITSPACE + + 10/22 + ----- +doc/{bash.1,bashref.texi} + - tweak description of bash conditional expressions to note that the + test and [ commands determine their behavior based on the number of + arguments. Suggested by Ilkka Virta + + 10/24 + ----- +execute_cmd.c + - execute_simple_command: don't set $_ to NULL when executing a + command that forks; just leave it unchanged. Tweaked the documentation + slightly as a result. Inspired by report from Ricky Tigg + + + 10/28 + ----- +redir.c + - here_document_to_fd: make sure the temp files used to store here + documents are readable (and writable, where necessary) by the user. + This can happen in the unlikely case that someone decides to shoot + himself in the foot by setting the umask to 400. Issue originally + raised back in March by Stephane Chazelas + ; fix inspired by Martijn Dekker + + + 10/29 + ----- +lib/readline/terminal.c + - bind_termcap_arrow_keys: bind the "kI" capability (what the Insert + keypad key outputs) to overwrite mode. Patch from Xose Vazquez Perez + + + 10/30 + ----- +braces.c + - mkseq: make sure to terminate result array before passing it to + strvec_dispose on an interrupt. Report and fix from Corbin Souffrant + + + 11/6 + ---- +trap.c + - _run_trap_internal: if the signal shows up as SIG_CHANGED after + running the trap handler, check for terminating signals and run any + terminating signal handler indicates. Fixes issue reported by + Owen Stephens + + 11/7 + ---- +execute_cmd.c + - execute_builtin: don't merge the temporary environment when the + `return' builtin is being executed if it's being executed by the + `command' builtin, since that's supposed to inhibit the special + builtin properties. Part of POSIX conformance problems reported + by Martin Rehak + +builtins/cd.def + - bindpwd: if canonicalization fails when -P is specified (e.g. if the + directory name length exceeds PATH_MAX), reset dirname ($PWD value) = + to the_current_working_directory (Posix cd description, step 10.) + Part of POSIX conformance problems reported by Martin Rehak + + +builtins/kill.def + - kill_builtin: support -sSIG and -nSIG without requiring them to be + separate arguments. POSIX says a "conforming implementation" should + accept them. + Part of POSIX conformance problems reported by Martin Rehak + + + 11/8 + ---- +arrayfunc.c + - array_value_internal: return NULL for invisible array variables. + Fixes issue with FUNCNAME sometimes returning invalid value reported + by Great Big Dot + +builtins/cd.def + - change_to_directory: if we are in posix mode, and the chdir to the + absolute pathname ($PWD/dirname) fails, return an error without + trying to use just `dirname' (posix cd step 10). + Part of POSIX conformance problems reported by Martin Rehak + + +execute_cmd.c + - execute_case_command: use expand_word_leave_quoted to expand the + word, then dequote the resulting string. This performs the + expansions in the order posix specifies. + Part of POSIX conformance problems reported by Martin Rehak + + +subst.c + - expand_word_unsplit: rewrite in terms of expand_word_leave_quoted + - ifs_whitespace: new macro, Posix ifs whitespace (ISSPACE; member + of current locale's space char class) + - ifs_whitesep: new macro, whitespace that is a member of $IFS; used + by list_string and get_word_from_string + - list_string: use ifs_whitesep instead of spctabnl in case $IFS + contains whitespace characters that are not space, tab, or newline + - get_word_from_string: use ifs_whitesep instead of spctabnl in case + $IFS contains whitespace characters that are not space, tab, or + newline. + Part of POSIX conformance problems reported by Martin Rehak + + + 11/9 + ---- +general.c + - posix_initialize: enable the shift_verbose option when turning on + posix mode, and disable it when posix mode is disabled. From a + report by Eric Blake + +doc/bashref.texi + - posix mode: note the effect of posix mode on shift_verbose + + 11/12 + ----- +subst.c + - parameter_brace_expand: if parameter_brace_expand_word returns an + error, make sure to set TEMP = 0 (to note that the variable is unset). + From a report by Grisha Levit + - param_expand: if expanding $! when set -u is enabled, honor the + PF_IGNUNBOUND flag and just return NULL, relying on the caller to + take care of understanding that the variable is unset + From a report by Grisha Levit + - parameter_brace_expand: if we are checking nullness, and we have a + valid array expansion, a quoted null string resulting from the array + expansion of a * or @ subscript satisfies the nullness check. + From a report by Grisha Levit + + 11/14 + ----- +aclocal.m4 + - BASH_CHECK_LIB_TERMCAP: add last-ditch check for libncursesw, since + it's apparently the only curses library on some distributions. + Report from John Frankish + + 11/16 + ----- +bashline.c + - attempt_shell_completion: allow an initial word completion to + complete a partial first word (point appears in the middle of + the word) before resorting to command completion. Report and fix + from Luca Boccassi + +[bash-5.0-beta2 frozen] + + 11/27 + ----- +bashline.c + - attempt_shell_completion: better fix for problems with fix from + 11/16. Report and fix from Tom Ryder + +expr.c + - expr_skipsubscript: fix return type. Report and fix from + Andreas Schwab + + 11/29 + ----- +subst.c + - quote_escapes_internal: refactored quote_escapes into a function + that takes an additional flag saying whether or not we are going + to split the result. If we are not, and CTLESC is in IFS, we quote + the CTLESC (ditto for CTLNUL) to prevent it being removed when the + string is dequoted. + - quote_escapes: call quote_escapes_internal with FLAGS == 0 + - quote_rhs: new function, calls quote_escapes with FLAGS == PF_NOSPLIT2 + so that a CTLESC will be quoted if CTLESC is in $IFS + - parameter_brace_expand_word: call quote_rhs on the value of a variable + if PFLAGS includes PF_ASSIGNRHS, indicating that we will not be + splitting the word, but we will be dequoting it. Fixes bug reported + by Martijn Dekker + - param_expand: same change as for parameter_brace_expand_word + +execute_cmd.c + - execute_in_subshell: if we are running a trap (running_trap > 0), + turn off the SIG_INPROGRESS and SIG_CHANGED flags for that signal + by calling run_trap_cleanup and reset running_trap to 0 (watch the + second part!). Tagged for bash-5.1. + + 11/30 + ----- +lib/readline/doc/rltech.texi + - rl_set_keymap_name: correct typo in the name; some updates to the + description that clarify usage. Report from + + 12/4 + ---- +aclocal.m4 + - BASH_FUNC_FNMATCH_EQUIV_FALLBACK: a test of whether fnmatch(3) + understands bracket equivalence classes ([=c=]) for characters + that collate with equal weights but are not identical + +configure.ac,config.h.in + - call BASH_FUNC_FNMATCH_EQUIV_FALLBACK and define + FNMATCH_EQUIV_FALLBACK to 1 if it can be used for equivalence + classes + + 12/5 + ---- +execute_cmd.c + - eval_arith_for_expr,execute_arith_command,execute_cond_command: make + sure running_trap == 0 before we reset the_printed_command_except_trap + Report from Peng Yu + +lib/glob/smatch.c + - _fnmatch_fallback_wc: new function, takes two wide characters c1 and + c2, converts them to a pattern ([[=c2=]]) and a string (c1) for + fnmatch to determine whether or not they are members of the same + equivalence class + - collequiv_wc: call _fnmatch_fallback_wc if rangecmp_wc returns + non-zero if FNMATCH_EQUIV_FALLBACK is defined, so we know that + fnmatch understands equivalence classes. Another Posix test suite + issue from Martin Rehak + + 12/6 + ---- +redir.c + - add missing cases to switch statements to shut up gcc + + 12/7 + ---- +builtins/set.def + - find_minus_o_option: new helper function, returns index into + o_options given option name + - minus_o_option_value,set_minus_o_option: use find_minus_o_option + +general.c + - new table of variables (currently all shopt options) that are + modified by going into and out of posix mode; num_posix_options() + returns the number of variables + - get_posix_options: fill in a bitmap passed as an argument (or return + a new one) of values of posix-mode-modified variables in the table + - set_posix_options: set values of posix-mode-modified variables from + the table using the passed bitmap for values + +builtins/set.def + - get_current_options: make the bitmap large enough to hold the options + in the set table and the table of posix-mode-modified variables; call + get_posix_options to fill in those values after the values from the + o_options table + - set_current_options: call set_posix_options to reset the values of + the posix-mode-modified variables at the end of the bitmap, after + the o_options values. Fixes issue reported by PJ Eby + + + 12/9 + ---- +parse.y + - select_command: add two additional productions to support select + commands without a word_list following the `in'. Fixes omission + reported by Martijn Dekker + + 12/11 + ----- +variables.c + - assign_in_env: don't allow namerefs in temporary environment + assignments to create variables with invalid names for export. Fixes + bug reported by Grisha Levit + + 12/14 + ----- +parse.y + - don't change last_command_exit_value in the 'error yacc_EOF' production + if the parser sets it to something non-zero; just make sure it + indicates an error. Fixes problem with unexpected EOF in eval + reported by Martijn Dekker + + 12/17 + ----- +expr.c + - exp2 -> expmuldiv + +lib/sh/smatch.c + - fnmatch: add extern declaration if FNMATCH_EQUIV_FALLBACK is being + used + +hashlib.c + - hash_string: add FNV offset as initial value for hash instead of + starting at 0, changes hash for associative arrays and requires a + bunch of changes to the "right" test suite files + +variables.c + - rseed: make it explicitly 32 bits; that's all we're interested in + anyway + + 12/18 + ----- + +variables.c + - brand: add some comments, make the constants explicitly 32 bits; + use signed 32-bit values for the intermediate calculations. The + algorithm is still minstd + +[bash-5.0-rc1 frozen] + + 12/21 + ----- +doc/bash.1 + - }1: remove macro definition; it's outlived its bugfix purpose. + Report from Derek Schrock + + 12/22 + ----- +subst.c + - expand_arith_string: set W_NOTILDE in the flags so we don't perform + tilde expansion at all, even for the previously-special-case array + subscript expansion. Report from Bize Ma + - expand_word_internal: take out Q_ARRAYSUB check for tilde expansion + + 12/26 + ----- +builtins/evalstring.c + - parse_and_execute: if the eval builtin gets a parser error while + parsing a string in posix mode, don't exit the shell if the eval + was run by the command builtin. report from Martijn Dekker + + +examples/loadables/{basename,dirname}.c + - dirname_builtin: skip over any `--' ending the options. Report from + Peng Yu + + 12/27 + ----- +examples/loadables/mkdir.c + - make_path: add argument noting whether or not the user specified -m; + only attempt the chmod on an existing directory if the user did so + - make_path: when creating intermediate directories, perform the + mkdir (path, 0) and chmod separately as the posix text recommends + + 12/28 + ----- +parser.h + - PST_COMMENT: new state, set when the shell is reading characters + until newline as part of comment processing + +parse.y + - shell_getc: don't return a space at the end of a token if the parser + is consuming a comment. Fixes bug reported by Harald van Dijk + + + 12/31 + ----- +lib/glob/glob_loop.c + - INTERNAL_GLOB_PATTERN_P: revert change from 4/27 that makes this + function return non-zero for a backslash in the string. Based on a + report from Tom Ryder + +[bash-5.0 frozen] + +[bash-5.0 released] + + 1/6/2019 + -------- + +examples/loadables/basename.c + - make sure to include bashgetopt.h. Reported by Angel + + +lib/malloc/malloc.c + - stdlib.h: include if botch isn't defined to provide a declaration + for abort() + +hashlib.c,Makefile.in + - fixes to make hash library testing work for others from + Eduardo Bustamante + +lib/readline/unicode.c + - u32toutf16: correct the second argument to be wchar_t *, and treat + it as such, even though it doesn't make a difference in practice. + Report and fix from Eduardo Bustamante + + 1/8 + --- + +builtins/return.def + - return_builtin: return EX_USAGE if we're not executing a shell + function or sourcing a script, so a posix-mode shell exits. Fixes + bug reported by Robert Hailey + +builtins/declare.def + - declare_internal: don't let `declare -f +f' turn off the function + attribute. Fix from Grisha Levit + - declare_internal: reject attempts to add the -A or -a attributes + to functions. Report from Grisha Levit + + 1/9 + --- +bashline.c + - completion_glob_pattern: new function, returns true if the passed + string contains a glob pattern that should be process by the glob + completion code. Completion glob patterns don't pay attention to + backslashes unless they're the last character in the string. This + is a different, more self-contained, fix for the problem reported + by Tom Ryder + +lib/glob/glob_loop.c + - INTERNAL_GLOB_PATTERN_P: restore change from 4/27 and make this + function return non-zero if it encounters a backslash in the string. + It needs to match pathexp.c:unquoted_glob_pattern_p(). Adds fix + back for issue reported by axel@freakout.de + +test.c + - arithcomp: when calling evalexp, make sure to call it with the + EXP_EXPANDED flag, since all arguments here have been evaluated + already + +arrayfunc.c + - array_expand_index: call evalexp with EXP_EXPANDED flag, since we + have run the string through expand_arith_string already + + 1/11 + ---- +parser.h + - PST_ENDALIAS: new state, means we just consumed the last character + of an alias expansion and returned the fake space + +parse.y + - shell_getc: add PST_ENDALIAS to parser_state before returning the + fake space that marks the end of the alias, making sure to do it + only once. With that set, fall through to the pop_string(), making + sure to unset PST_ENDALIAS. Fixes alias bug reported by + Ante Peric + + 1/12 + ---- +lib/glob/glob.c + - {extglob,wextglob}_skipname: make sure we check the rest of the + pattern if the extglob pattern is null, and therefore won't match + anything. If that is followed by a `.', quoted or unquoted, we can + match a leading `.' in the pathname. This code is currently not + active. + +builtins/hash.def + - hash_builtin: if -d is supplied without an argument, print an error + message and return failure, just like -t without an argument. Fixes + inconsistency reported by Dan Jacobson + + 1/13 + ---- +parse.y + - shell_getc: use shellblank when testing the last character of an + alias to determine whether or not to add a trailing space instead + of testing against a space only. These are the non-shell-metacharacters + that can delimit words. Used together with PST_ENDALIAS + + 1/17 + ---- +parse.y + - shell_getc: keep track of whether the last character read from + shell_input_line is an unquoted backslash and don't add a space to + the end of an alias if the alias value ends in an unquoted backslash. + From an austin-group mailing list discussion message from + Harald van Dijk + + 1/20 + ---- +general.c + - check_identifier: make sure CHECK_WORD is non-zero before we check + whether or not the word consists of all digits. This allows function + names to consist solely of digits when not in posix mode. From a + report by Andrey Butirsky + + 1/22 + ---- +bashline.c + - initialize_readline: only unbind ^E in vi_movement_keymap if it's + still bound to the default rl_emacs_editing_mode. Fixes bug + reported by Greg Bell + + 1/23 + ---- +builtins/shopt.def + - we need the extern declaration for syslog_history if SYSLOG_HISTORY + is defined, since it's used even if SYSLOG_SHOPT is not defined. + From a Gentoo Linux bug report, eventually reported to bug-bash by + Tomas Mozes + + 1/25 + ---- +command.h + - CMD_TRY_OPTIMIZING: new command flag, means this (simple) command is + a candidate for fork optimization (suppression) + +builtins/evalstring.c + - can_optimize_connection: new function, takes an AND_OR list (&& or + ||) from parse_and_execute, makes sure it's the last in a possibly + multi-command list, and returns non-zero if it's a simple command, + indicating that it's a candidate for fork optimization. + - parse_and_execute: if we have a cm_connection command, call + can_optimize_connection to determine if it's a suitable candidate + and set CMD_TRY_OPTIMIZING if that returns non-zero + - optimize_fork: don't bother unless the rhs of the && or || command + has the CMD_TRY_OPTIMIZING flag set. These fix the bug reported by + Brad Spencer + +execute_cmd.c + - execute_connection: case AND_AND and OR_OR: call optimize_fork on + the right side of the command before executing `second'. This will + safely restore the fork optimization we removed from + parse_and_execute() + +builtins/complete.def + - build_actions: make sure the function name argument to -F is a + valid shell function name: it doesn't contain any invalid posix- + mode characters and doesn't contain any shell break characters that + would need to be quoted when defining a function. Fixes issue + reported by Great Big Dot + + 1/28 + ---- +variables.c + - dispose_temporary_env: make sure to save temporary_env to a temp + pointer and set temporary_env to NULL before trying to dispose it, + so no flush function ever tries to add a temporary variable back + into the table (e.g., bind_variable()) + + 1/29 + ---- +builtins/evalstring.c + - can_optimize_connection,optimize_fork: add the last command in lists + separated by `;' to the list of candidates for fork optimization + + 1/30 + ---- +examples/loadables/strftime.c + - strftime_builtin: try to extend the buffer longer than tbsize*3, + which is a minimum of 24 characters, in case some of the formats + (e.g., %c) expand to something longer than that. Fixes bug + reported by Stan Marsh + + 1/31 + ---- +lib/readline/undo.c + - rl_do_undo: before inserting text while undoing UNDO_DELETE, or + performing a deletion while undoing UNDO_INSERT, make sure that + rl_point is valid by calling _rl_fix_point. Fuzzing bug and fix + from Eduardo Bustamante + +lib/readline/search.c + - _rl_nsearch_abort: validate new values for rl_point and rl_mark by + calling _rl_fix_point(). Fuzzing bug and fix from + Eduardo Bustamante + +subst.c + - string_extract_double_quoted: if we parse a syntactically-incorrect + $( expression while extracting a double-quoted string, si will + appear to go `backward'. Just skip over the rest of the string and + continue. Fuzzing bug from Eduardo Bustamante + +lib/readline/text.c + - rl_change_case: if towupper or towlower returns a valid wide char + that can't be converted back to a valid multibyte character, use + the original character and go on. Fuzzing bug from + Eduardo Bustamante + +lib/glob/glob.c + - wdequote_pathname: if there are no multibyte characters in pathname, + just call udequote_pathname and don't bother converting it to wide + characters + - glob_pattern_p: if there are no multibyte characters in the pattern, + just call internal_glob_pattern_p right away + +lib/glob/glob_loop.c + - INTERNAL_GLOB_PATTERN_P: return 2 if we see only backslash-quoted + characters without any other unquoted glob pattern characters, so + interested callers can shortcut and just dequote the pathname + +pathexp.c + - unquoted_glob_pattern_p: return 2 if we see only backslash-quoted + characters without any other unquoted glob pattern characters, + consistent with the glob library + - unquoted_glob_pattern_p: don't count a backslash quoting a slash as + a backslash that will trigger a call to shell_glob_filename, since + backslashes at the end of patterns (pathname components) will always + fail to match. XXX - this is provisional + +lib/glob/glob.c + - glob_filename: if we have a directory name that has no unquoted + special glob chars, but has backslashes, just dequote it and return + it without going through the rest of the glob expansions. Partial + fix for issue with unreadable directories reported by + Andrew Church + + 2/2 + --- +lib/readline/readline.c + - readline_internal_teardown: if revert-all-at-newline is set, make + sure that the history position is at the end of the history before + calling _rl_revert_all_lines(). Fixes bug reported by + johnlinp@gmail.com and frederik@ofb.net + + 2/4 + --- +builtins/complete.def + - complete_builtin: fix check for argument to -F to use strpbrk + instead of incomplete use of strcspn. Fix from Grisha Levit + + + 2/5 + --- +lib/readline/readline.c + - rl_parse_and_bind: change parsing of boolean variable values to + look for and consume an optional whitespace-delimited word. This + allows trailing spaces and everything that follows to work. Idea + from Bize Ma + - rl_parse_and_bind: print error message about unknown variable names + instead of calling rl_variable_bind to do it + - rl_variable_bind: report error if setting string variable returns + non-zero + + 2/6 + --- +lib/readline/histfile.c + - read_history_range: close FILE before returning if the history file + size is 0 + + 2/11 + ---- +bashline.c + - edit_and_execute_command: add the current line buffer to the history + list even if it's empty and rely on other code in bash_add_history + to take care to not add multiple semicolons with multiple blank + lines and command_oriented_history. Live with the blank lines as + history entries for now. Fixes problem reported by + Johannes Hielscher + +lib/readline/misc.c + - _rl_revert_all_lines: renamed to _rl_revert_previous_lines, since + that is basically what it does + - _rl_revert_all_lines: now just makes sure the history offset is at + the end of the history and calls _rl_revert_previous_lines. Inspired + by a suggestion from johnlinp@gmail.com + +lib/readline/readline.c + - readline_internal_teardown: revert change of 2/2, moved that code + into the (new) _rl_revert_all_lines + +lib/readline/rlprivate.h + - _rl_revert_previous_lines: new extern declaration + +builtins/bind.def + - bind_builtin: make sure the unwind-protect gets run when the --help + option is used, so use `case GETOPT_HELP:' instead of `CASE_HELPOPT;'. + Report and fix from Koichi Murase + + 2/12 + ---- +lib/readline/util.c + - _rl_abort_internal: don't just turn off the MACRODEF state, call + _rl_kill_kbd_macro to delete any traces of an in-progress macro + definition before turning it off. Fixes fuzzing bug. + + 2/13 + ---- +examples/loadables/Makefile.in + - CCFLAGS: add $(CPPFLAGS) to value, based on a report from + Christian Weisgerber + + 2/15 + ---- +bashline.c + - posix_readline_initialize: keep track of the vi insertion keymap + binding for TAB, since we change it in this function. Save the + old binding before we change it when turning posix mode on, and + restore that old binding when turning posix mode off, as long as + the current binding is still rl_insert. Suggested by a report from + Koichi Murase + + 2/17 + ---- +builtins/exec.def + - exec_builtin: save value of job_control; use it to restore the value + of job_control if an exec fails in an interactive shell instead of + enabling it by default in an interactive shell. Report from + Grisha Levit + +lib/readline/bind.c + - _rl_function_of_keyseq_internal: make sure to use checks against LEN + instead of a NULL character in KEYSEQ to determine the length of the + key sequence. + Report and fix from Koichi Murase + - rl_bind_key: make sure the KEY argument is not larger than the + largest unsigned character. + Report and fix from Koichi Murase + - rl_translate_keyseq: make sure that M-x correctly adds "\ex" to the + key sequence array when convert-meta is set. + Report and fix from Koichi Murase + - rl_translate_keyseq: now unconditionally converts meta characters to + ESC-prefixed key sequences when processing \0nnn \Xnnn and \[char] + escape sequences that resolve to meta characters and for `normal' + characters that have the meta bit set + Report and fix from Koichi Murase + +jobs.c + - end_job_control: if the terminal pgrp (terminal_pgrp) is not the same + as the original pgrp (original_pgrp), set the terminal's pgrp to the + original pgrp so when we reset the shell's pgrp to original_pgrp, + we'll continue to be able to read from the terminal if the shell is + interactive. Fixes bug with turning off job control before starting + an interactive shell reported by Grisha Levit + + + 2/19 + ---- + +jobs.c + - end_job_control: if the setpgid(0, ...) succeeds, reset the value of + shell_pgrp. Fixes pgrp mismatch after failed exec in an interactive + login shell reported by Grisha Levit + + 2/20 + ---- +bashhist.c + - pre_process_line: save history_length before calling history_expand, + and after possibly decrementing history_length, just restore the old + value instead of incrementing it. Fixes bug reported by + Michael Albinus + - bash_add_history: don't bother calling really_add_history if the + history is stifled and the max number of entries is 0 + +aclocal.m4,configure.ac,m4/*.m4 + - replace the old set of gettext m4 macros with the latest m4 files + from the gnulib and gettext distributions + + 2/21 + ---- +builtins/cd.def + - bindpwd: initialize canon_failed to 0 to prevent `cd -e' from always + failing + +command.h + - W_EXPANDRHS: new flag, set when expanding WORD in ${paramOPword} + +subst.c + - expand_string_for_rhs: set W_EXPANDRHS in word to be expanded + +subst.c + - expand_word_internal: when encountering a single or double quoted + string that expands to nothing, add a CTLNUL if the W_EXPANDRHS + flag is set and the word isn't quoted, indicating that the word + will eventually be split and we need to preserve the null to + produce an empty word. From a discussion on bug-bash started by + sunnycemetery@gmail.com + + 2/22 + ---- +bashline.c + - completion_glob_pattern: make sure to skip over a character quoted + by a backslash. Fixes bug reported by John Van Sickle + + + 2/23 + ---- +lib/readline/complete.c + - last_completion_failed: keep track of whether the last completion + attempt generated any matches + - rl_complete: if the last readline command was completion, but the + completion attempt didn't generate any matches, don't regenerate + and display the match list. Treat it as a new completion attempt. + Suggested by Richard Stallman + +bashhist.c + - maybe_append_history: try to handle the case where the number of + history entries in the current shell session is greater than the + number of entries in the history list. Based on a report from + + + 2/25 + ---- +aclocal.m4 + - BASH_FUNC_FNMATCH_EQUIV_FALLBACK: use en_US.UTF-8 instead of + de_DE.UTF-8; it's more likely to be installed + + 2/26 + ---- +doc/{bash.1,bashref.texi} + - extdebug: make sure to note that setting this option in a startup + file causes an attempt to start the debugger. Noted by Linda + Walsh + +builtins/fc.def + - fc_builtin: if we are not listing, and delete the last history entry, + make sure that histbeg or histend, whichever is greater, is clamped + at the value of last_hist to avoid dereferencing the just-removed + history index. Fixes bug reported by Chris King-Parra + + + 2/27 + ---- +shell.c + - init_interactive: assignment to histexp_flag should be protected by + #ifdef BANG_HISTORY. https://savannah.gnu.org/patch/?9759 + +subst.c + - list_string: if we have a non-null string, but quoted null character + removal leaves an empty string, set W_SAWQUOTEDNULL in the returned + word flags so the caller can deal with it + - parameter_brace_expand_rhs: deal with word with null or empty word + and W_SAWQUOTEDNULL in the flags coming back from expand_string_for_rhs + by turning it into a quoted null word and modifying the flags. Part + of fix for bug report from Grisha Levit + - expand_word_internal: if a double-quoted string comes back with a + quoted null as the expansion of "$@", note that we saw it, but still + add a quoted null into the result string instead of short-circuiting. + Part of fix for bug report from Grisha Levit + + 3/1 + --- +examples/loadables/fdflags.c + - O_CLOEXEC: instead of not using it, synthesize a definition for it + from unused bits in the file status word. It's only used as a + placeholder anyway. Fix from code by Robert Elz + +execute_cmd.c + - execute_connection: call optimize_fork on the rhs of a `;' connection + to attempt to optimize the last simple command in a list + + 3/4 + --- +subst.c + - parameter_brace_expand: add `@' to the list of operators that cause + unbound parameter errors. Fixes oversight bug reported by + Martin Schulte + + 3/5 + --- +subst.c + - expand_word_internal: update to fix from 2/21 and 2/27 to accommodate + contexts when word splitting will not take place (W_ASSIGNRHS). Fix + from Grisha Levit + - param_expand: if IFS is unset, and we are expanding $* in a context + where we're not going to be performing word splitting, just treat it + as if IFS=" " and don't set W_SPLITSPACE. Report and hint at fix + from Grisha Levit + - param_expand: if IFS is not null, and we are expanding $* in a + context where we're not going to be performing word splitting, and + we quote a null string (resulting in a quoted null), make sure we + set W_SAWQUOTEDNULL to note this for the caller + - parameter_brace_expand_rhs: make sure to remove any W_SAWQUOTEDNULL + flag for a the word on the rhs of the `=' operator if the original + string is null or the original string is not null and the returned + string (after dequoting) is not null. For instance ${v= ''} should + not have the SAWQUOTEDNULL flag set because it is " " after + expansion and dequoting, even though we saw a quoted null there + + 3/6 + --- +lib/sh/eaccess.c + - sh_eaccess: AIX needs the same kind of additional checks as FreeBSD + and Solaris when running as root and checking whether or not a file + is executable. Report and fix from REIX, Tony + + 3/7 + --- +lib/glob/glob.h + - GX_RECURSE: new flag, indicates internal call to glob_filename + +lib/glob/glob.c + - glob_filename: add GX_RECURSE to recursive call to glob_filename + - glob_filename: dequote a directory name (in the absence of a + filename) only if this is not a recursive call to glob_filename + ((flags & GX_RECURSE) == 0). Fixes bug reported by Dr. Werner Fink + + + 3/8 + --- +parse.y + - handle_eof_input_unit: before calling exit_builtin, set + last_shell_builtin and this_shell_builtin appropriately, since the + exit builtin uses them to determine whether or not to exit + immediately. Fixes bug reported by Tom Levy + +lib/sh/shquote.c + - sh_double_quote,sh_mkdoublequoted,sh_backslash_quote_for_double_quotes: + make sure to handle multibyte characters that may contain characters + that need to be quoted in double quotes; adding a spurious double + quote may turn them into different characters or uncover characters + that are special in double quotes. Fixes bug reported by + Stephane Chazelas + - sh_backslash_quote: don't call COPY_CHAR_P if we're in a UTF-8 + locale and the current character doesn't have its eighth bit set; + only check mb_cur_max and is_basic if we're not in a UTF-8 character + set + + 3/9 + --- +subst.c + - read_comsub: if it looks like we're starting a multibyte character, + read a whole multibyte character from buf and add it all at once, + so we don't quote each byte in a multibyte character sequence. Fixes + bug uncovered by shquote changes from 3/8 + + 3/11 + ---- +subst.c + - expand_word_internal: if we are in a context where word splitting + will not occur, but one where we need to make sure we eventually + expand "$@" to multiple words, add a space as quoted so we can still + split on the space separator in $@. Fixes bug reported by + Grisha Levit + + 3/13 + ---- +subst.c + - parameter_brace_substring, parameter_brace_patsub: treat the case + where pflags includes PF_ASSIGNRHS the same as if IFS is null, since + word splitting will not take place + +{subst,array,assoc}.c,subst.h + - string_list_pos_params: add a fourth argument: pflags; change all + callers to initially pass 0 as fourth arg + + 3/14 + ---- +subst.c + - expand_word_internal: split words with W_ASSIGNRHS flag set specially. + These and subsequent changes fix expansion bugs reported by + Grisha Levit + +subst.c + - string_list_pos_params: if we are expanding `@', make sure we honor + PFLAGS including PF_ASSIGNRHS and use string_list_dollar_at to make + sure the positional parameters are separated by spaces + - string_list_pos_params: if we are expanding `*', make sure we honor + PFLAGS including PF_ASSIGNRHS and separate the positional parameters + with the first character of $IFS + - pos_params_pat_subst,pos_params_modcase: calculate appropriate value + for PFLAGS depending on match flags value, and pass right value to + string_list_pos_params (affects @, * expansion) + - pos_params: now takes PFLAGS as argument to pass to string_list_pos_params; + changed caller + +array.c + - array_pat_subst,array_modcase: calculate appropriate value for + PFLAGS depending on match flags value, and pass right value to + string_list_pos_params (affects @, * subscript expansion) + +array.[ch] + - array_subrange: now takes additional PFLAGS argument to pass to + string_list_pos_params + +assoc.c + - assoc_pat_subst,assoc_modcase: calculate appropriate value for + PFLAGS depending on match flags value, and pass right value to + string_list_pos_params (affects @, * subscript expansion) + STILL NEED TO DO SUBRANGE + +subst.c + - parameter_brace_substring: add PFLAGS argument to array_subrange + +arrayfunc.c + - array_keys: use string_list_pos_params instead of calling + string_list_dollar_{star,at} directly. + +arrayfunc.[ch] + - array_keys: now takes a PFLAGS argument, passes to string_list_pos_params + +subst.c + - parameter_brace_expand: add PFLAGS argument to call to array_keys + +subst.c + - parameter_brace_expand_indir: now takes a PFLAGS argument and uses it + in the call to parameter_brace_expand_word + - parameter_brace_expand: add PFLAGS argument to call to + parameter_brace_expand_indir + + 3/15 + ---- +subst.c + - chk_atstar: now takes a PFLAGS parameter, changed callers. Will + eventually affect whether or not we saw $@ + - chk_atstar: if we see "$*" don't note that we saw $@ unless + expand_no_split_dollar_star is unset. This is what param_expand + does + + 3/18 + ---- +lib/readline/misc.c + - rl_get_previous_history: if we are trying to go back from the + beginning of the history, or if we are trying to go back before the + beginning of the history, call _rl_free_saved_history_line to just + get rid of the history line we saved instead of using + rl_maybe_unsave_line, which modifies the current line buffer. + Fixes bug reported by lessbug + + 3/20 + ---- +execute_cmd.c + - execute_command_internal: save and restore line_number around + user_subshell setting it to the line number saved in the command. + Fixes bug reported in https://bugzilla.novell.com/show_bug.cgi?id=1128936 + + 3/21 + ---- +lib/sh/strtrans.c + - ansicstr: handle multibyte characters that are not preceded by a + backslash so we skip over potential escapes in characters whose + multibyte representation contains a backslash. Fixes issue reported by + Stephane Chazelas + +subst.c + - reap_some_procsubs: reap_procsubs, but parameterized to take the + max index to check -- general function for future use + - reap_procsubs: now just calls reap_some_procsubs with the right arg + +execute_cmd.c + - execute_command_internal: if we are using /dev/fd for process + substitution, reap the procsubs at the end of this function (FIFOs + do it at the beginning -- look at this more closely). Only do it + for loops to avoid fd exhaustion. Fixes bug reported by + sunnycemetery@gmail.com + + 3/22 + ---- +lib/readline/{rlprivate.h,signals.c} + - _rl_interrupt_immediately: removed as no longer used + +redir.c + - heredoc_expand: new function, called for both here-documents and + here-strings, takes care of expanding the document and returns a + string + - write_here_document: use heredoc_expand, call write(2) once on the + entire document; structure is now very similar to write_here_string + + 3/23 + ---- +redir.c + - here_document_to_fd: expand the here document/here string first, + using heredoc_expand, then decide what to do; remove calls to + write_here_document/write_here_string in favor of calling + heredoc_write directly + - here_document_to_fd: if the expanded document is of zero length, + just open /dev/null right away and return it -- idea from yash + - here_document_to_fd: if the length of the expanded document is + between 1 and PIPESIZE (pipe capacity, computed by builtins/psize.aux + and stored in builtins/pipesize.h), try to use a pipe: write + the document to the write end and return the read end. Prompted by a + report from Daniel Kahn Gillmor + +builtins/enable.def + - dyn_load_builtin: add warning if dynamic builtin with a load function + is loaded more than once, before running the load function a second + time. From a suggestion by Stan Marsh + + 3/25 + ---- +jobs.[ch] + - wait_for_any_job: takes a new argument, a struct procstat * that + gets the PID of the exited job's process leader (the one that + contributes the status) and the same status we return from the + function + +builtins/wait.def + - wait_builtin: pass a struct procstat * to wait_for_any_job to get + the pid of the job's process leader (and the same status the + function returns). We don't do anything with it yet + + 3/28 + ---- +variable.c + - seedrand: add a couple more variables to the random seed + +lib/sh/tmpfile.c + - sh_mktmpdir: new function, makes a temporary directory using + mkdtemp if it's available, and generates a filename using + sh_mktmpname (which uses mktemp, if available) and makes a + directory with it if not + +config-{top,bot}.h + - set up to use mkdtemp if available + +externs.h + - sh_mktmpdir: extern declaration + - MT_TEMPFILE: new flag for the tempfile functions; means to use the + value in the NAMEROOT argument as a template for the mktemp/mkstemp/ + mkdtemp functions. Not used in mainline shell code + +examples/loadables/mktemp.c + - mktemp: new loadable builtin, with BSD options and basic semantics + + 3/29 + ---- +builtins/common.c,builtins/printf.def + - builtin_bind_variable: moved bind_printf_variable to common.c from + printf.def, renamed to builtin_bind_variable, made global for other + builtins to use + +builtins/read.def + - bind_read_variable: now uses builtin_bind_variable + + 4/4 + --- +lib/readline/histfile.c + - history_rename: wrapper function for rename(2) to deal with the Win32 + refusal to rename over an existing file; changed callers. Bug and fix + from + + 4/8 + --- +builtins/trap.def + - display_traps,showtrap: take an additional int argument, that, if + non-zero, means to print a trap command for a signal whose disposition + is SIG_DFL + - trap_builtin: if the -p option is given, and posix mode is enabled, + pass the `show every signal' flag to display_traps so SIG_DFL signals + are displayed as `trap -- - '. From an austin-group + interpretation (1212) initiated by Robert Elz . + Tagged for bash-5.1 + + 4/9 + --- +jobs.c + - list_one_job: printing one job counts as notifying the user about + it, so add a call to cleanup_dead_jobs like in the other job display + functions. Fixes https://savannah.gnu.org/support/?109667 reported + by "Brian K. White" + + 4/10 + ---- +redir.c + - HEREDOC_PIPESIZE: define to PIPESIZE if not defined, allow it to be + specified at build time; used in here_document_to_fd to determine + whether or not a pipe is used + - HEREDOC_PIPEMAX: allow build-time definition of the max heredoc size + that will be written to a pipe + - here_document_to_fd: if F_GETPIPE_SZ is defined (Linux), ensure that + the document is shorter than the possibly-dynamic max pipe size, + and fall back to the tempfile implementation if it is not + - HEREDOC_PARANOID: if this is defined to a non-zero value, + here_document_to_fd ensures that both file descriptors opened on + the temporary file refer to the same file + +lib/sh/zmapfd.c + - zmapfd: increased the default allocation sizes + +lib/sh/zcatfd.c + - zcatfd: increased the default allocation sizes + +input.c + - localbuf: increased the default buffer size for reads + + 4/11 + ---- +subst.c + - cond_expand_word: like expand_word_unsplit, we need to peform + quoted null character removal on both the LHS and RHS of the + operator, since we are not performing word splitting. Fixes bug + reported by Matt Whitlock in https://savannah.gnu.org/support/?109671 + + 4/12 + ---- +jobs.c + - wait_for_background_pids: don't bother with the loop that waits for + and reaps all children of the shell in the case that it's inherited + some children it doesn't care about. Report from Daniel Kahn Gillmor + + + 4/14 + ---- +subst.c + - command_substitute: add an unwind-protect to make sure the read end + of the pipe gets closed in the parent on a SIGINT that interrupts + the zread. Fixes fast SIGINT fd leak reported by Tycho Kirchner + + +bashhist.c + - history_number: if enable_history_list is set (`set -o history' has + been executed), return the current history number even if we're + not currently saving commands in the history list + (remember_on_history == 0). Prompted by report from Paul Wise + + + 4/20 + ---- +doc/bash.1,lib/readline/doc/rluser.texi + - make it clear that the `bind' builtin can be used to set readline + keybindings and variables. Suggestion from Dan Jacobson + + + 4/22 + ---- +lib/glob/glob.h + - GX_SYMLINK: new internal flag denoting we are processing a symlink to + a directory. If GX_GLOBSTAR is active, we should not `descend' into + that directory + +lib/glob/glob.c + - glob_filename: if the directory portion of the pattern is `**' + (all_starstar), we have globbed all of the directories corresponding + to that pattern, and we encounter a name that is a symlink to a + directory, don't descend into it: if the filename portion is null, + return that name only; if the filename portion is non-null, skip over + it because we will pick it up when we process the `real' directory. + This is a better fix for the issue originally reported by + Murukesh Mohanan back in 4/2018 and + addresses the issue raised by Eli Schwartz + - glob_dir_to_array: slight optimization: if array[i] is the empty + string, don't bother to strcpy it or check the result for a directory + for GX_MARKDIRS support + + 4/23 + ---- +bashline.c + - test_for_canon_directory: test a pathname for a directory, but + expand and canonicalize it first using bash_filename_stat_hook() + before calling stat(2) + - bash_progcomp_ignore_filenames: strip non-directories out of a match + list, but use the function above that canonicalizes the pathname to + expand the name before testing + - bash_directory_completion_matches: use bash_progcomp_ignore_filenames + to strip out non-directories so we get consistent results between + programmable completion and tab completion. Fixes bug reported by + Ville Skyttä + +builtins/read.def + - read_builtin: allow read -e and read -u N to be used together, by + calling fdopen(fd) if fd != 0. Save and restore rl_instream. Fixes + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=927768 + + 4/24 + ---- +lib/readline/input.c + - rl_getc: if readline catches SIGTSTP, the calling application must + not have had it ignored. Run the signal handler and set the signal + hook in case the application wants to handle it. Report from + Robert Elz + + 4/26 + ---- +parse.y + - parser_will_prompt: check and return true if we have consumed the + entire readline line buffer and will have to go back to readline for + more input, printing a prompt as a consequence + +eval.c + - parse_command: if parser_will_prompt() returns 0, indicating that we + still have unconsumed input in the readline line buffer, don't + execute PROMPT_COMMAND. TENTATIVE fix prompted by report from + Matteo Landi + +builtins/read.def + - set_eol_delim: save the old values before changing the bindings for + RETURN and the delimiter character, in case the delimiter is RETURN. + Fixes bug report from Stephane Chazelas + - read_builtin: if the delimiter is '\0' and we are using readline, + don't terminate the buffer and go back to read another character; + allow the NULL to pass through and terminate the read. + Fixes bug report from Stephane Chazelas + + 5/9 + --- +bashhist.c + - bash_delete_histent: decrement history_lines_this_session only if + remove_history returns a non-null history entry, and return failure + if it does return a null entry + +builtins/history.def + - history_builtin: when checking the argument to -d, display an error + if the argument is >= history_base + history_length, since that's + what history_get and remove_history check. Fixes issue reported by + + +support/shobj-conf + - hpux11: change stanza to create shared libraries on later versions of + HPUX 11. Contributed by Michael Osipov + +lib/readline/terminal.c + - _rl_init_terminal_io: assume TGETENT_BROKEN defined means that tgetent + returns 0 on success, as on HPUX 11. Bug reported by Michael Osipov + + +configure.ac + - hpux: add -DTGETENT_BROKEN to LOCAL_CFLAGS + +execute_cmd.c + - select_builtin: set executing_builtin around the call to read_builtin + so we can run traps if the read call is interrupted. From a report + from Andreas Kusalananda Kähäri + + 5/12 + ---- +doc/bashref.texi + - The Restricted Shell: add some language detailing the weaknesses of + the restricted shell mode in isolation, inspired by a discussion on + the zsh mailing list + + 5/15 + ---- +xmalloc.h + - malloc: define to sh_malloc to get file and line information from + malloc (not xmalloc) calls. From a suggestion by achurch@achurch.org + (Andrew Church) + +builtins/evalstring.c + - parse_and_execute: make sure the parser is not expanding an alias + before terminating the loop that processes characters in the string. + Fixes problem with -c commands that end with an alias reported by + Yu Kou + - should_suppress_fork: make sure that we don't try to optimize out a + fork if the parser is still expanding an alias + + 5/16 + ---- +lib/readline/misc.c + - rl_get_previous_history: if previous_history() returns NULL, only + free the saved history if we were the ones who saved it; leave any + existing saved history entry alone. Fixes problem with ^N not working + at the end of the history if we previously moved back to the start + of history + +lib/readline/histfile.c + - read_history_range: when reading until FROM lines with a history + file that has timestamps, make sure to skip to the end of the command + line corresponding to the FROMth line instead of leaving line_start + pointing to it, and keep track of the start of the last timestamp in + last_ts for use by the loop below. Fix for history -n bug reported + by HIROSE Masaaki + +lib/readline/display.c + - init_line_structures: if, for some reason, _rl_screenwidth ends up + bigger than the line_size default of 1024 (e.g., gdb's setting the + terminal width to 0), make sure line_size is at least _rl_screenwidth. + From a report by Tom de Vries + + 5/17 + ---- +variables.c + - brand: split the code into a function that generates a 32-bit value + given the last value in the sequence (intrand32) and a function that + returns a 16-bit random number (brand) + - seedrand: small change in hopes of adding slightly more entropy + - brand: modify the 16-bit version to XOR the top 16 bits of the 32-bit + seed with the bottom 16 bits and return the lower 15 bits of that + result as before. Based on an analysis by Andrew Church + + + 5/18 + ---- +variables.c + - genseed: break code that generates the 32-bit seed for the RNG into + a separate function; call from seedrand + - {brand32,sbrand32,seedrand32}: new 32-bit versions of the random + number generator functions that use the entire 32-bit internal value. + Prep for systems that don't have /dev/urandom or arc4random() + - perturb_rand32: shake up the 32-bit LCRNG in subshells + + 5/19 + ---- +variables.c + - get_urandom32: get a 32-bit random number by using the first one of + these that succeeds: reading from /dev/urandom (if available), + calling arc4random (if available), and using the internal 32-bit + RNG (always available) + - SRANDOM: expand to a 32-bit random number. This is not a LCRNG, so + the numbers shouldn't have any relationship to previous returned + values. Assignments are accepted but have no effect on the sequence. + Not documented yet + + 5/20 + ---- +doc/{bash.1,bashref.texi} + - SRANDOM: document new special variable + + 5/22 + ---- +jobs.c + - find_pid_in_pipeline: abstract some code from find_pipeline to look + for a PID in a specific pipline passed as an argument + - find_pipeline: if we have some saved pipeline(s), look there to find + the PID instead of returning failure. This process could have been + started from a DEBUG trap that saved the_pipeline. Fixes Linux bug + reported by Hengyang Zhao + +builtins/bind.def + - unbind_keyseq: use rl_function_of_keyseq_len so you can unbind ^@ + (which translates to 0). Fixes bug reported by + Dennis Williamson + + 5/23 + ---- +lib/readline/display.c + - rl_redisplay: make sure that the line structures can hold up to + _rl_screenwidth characters, to support applications like gdb that + set the screen width to huge values. Report and fix from + Tom de Vries + + 5/24 + ---- +lib/readline/bind.c + - rl_generic_bind: move `ic' from block scope to function scope to + avoid problems with compilers that destroy and recreate it every + time through the loop. Report and fix from Adam Richter + + + 5/30 + ---- +jobs.c + - wait_for_job: now takes an additional struct procstat * argument, + and returns the pid and status of the job's `controlling process' + to the caller + +{jobs,nojobs}.c + - wait_for_background_pids: take a struct proctstat * argument and fill + it in with pid and status of the last process to terminate + +jobs.h + - wait_for_job, wait_for_background_pids: add additional argument to + declaration + +builtins/wait.def + - wait_builtin: set pstat.{pid,status} each time through the pid-or-job + loop and for wait without arguments + + 6/4 + --- +sig.c + - termsig_handler: clean up last_procsub_child before exiting, after + unlinking all FIFOs or closing FDs to all the pipes. Might need to + send it a SIGTERM too. Fixes issue reported by mwnx + +config-top.h + - CASEMOD_CAPCASE: no longer defined by default + + 6/5 + --- +lib/glob/glob.c + - glob_always_skip_dot_and_dotdot: new global variable, if set to + a non-zero value, no glob pattern will ever match `.' or `..'. + Disabled by default + + 6/7 + --- +bashline.c + - cmd_xmap: changes to support multiple cmd_xmaps, one per editing + mode keymap (one each for vi insert and command modes). Changes from + Koichi Murase + +execute_cmd.c + - execute_arith_command: change from expanding the expression using + expand_words_no_vars to use expand_arith_string, with the accompanying + conversion from a WORD_LIST into a string. This makes it more + consistent with other arithmetic expansions. Inspired by a + discussion begun by Nils Emmerich + + 6/10 + ---- +jobs.c + - waitchld: since process substitutions are asynchronous, save the + status of one that exits (that we still know about) in the bgpids + list + + 6/12 + ---- +jobs.c + - wait_for_background_pids: wait for the last procsub only if it's the + same as last_asynchronous_pid + +bashline.c + - bash_backward_shellword: changes to behave better when at the + beginning of the last character on the line and to leave point at + the beginning of the shellword, like backward-word. Fixes from + Andrew Gaylard + + 6/13 + ---- +bashline.c + - __P: Replaced with PARAMS. First of many + - bash_transpose_shellwords: transpose-words, but using `shellword' + word boundaries like shell-forward-word and shell-backward-word. + Contributed by Andrew Gaylard + - "shell-transpose-words": new name binding for bash_transpose_shellwords + - bash_readline_initialize: add default bindings for shell-forward-word, + shell-backward-word, shell-transpose-words, and shell-kill-word. + Suggested by Andrew Gaylard + +lib/readline/doc/rluser.texi + - shell-transpose-words: document + - {shell-forward-word,shell-backward-word,shell-kill-word,shell-transpose-words}: + document new default bindings bash now adds + +variables.c + - set_argv0: function to assign argv0 if it's found in the initial + shell environment. Suggested by Cuong Manh Le + + - initialize_shell_variables: call set_argv0() as part of shell + initialization + + 6/14 + ---- +execute_cmd.c + - execute_for_command: make sure to call stupidly_hack_special_variables + on the index variable each time bind_variable is called on it. If + someone does something nonsensical like `for OPTIND in ...' we want + the side effects to happen. Reported by Stephane Chazelas + + - execute_select_command: do the same thing for the selection variable + after calling bind_variable + + 6/15 + ---- +builtins/set.def + - unset_builtin: if neither -f nor -v is supplied, and a NAME cannot + be a shell variable because it's not a shell identifier, try to + unset a shell function whether we're in posix mode or not. Suggested + back in 1/2019 by PePa65 and Robert Elz + + +execute_cmd.c + - execute_simple_command: if this is being executed by the command + builtin (flags&CMD_COMMAND_BUILTIN), don't bother to print the + command words if set -x is enabled. From a report by Martijn Dekker + back in 4/2018 + + 6/19 + ---- +lib/glob/glob.c + - glob_filename: if we are not being called recursively, and there is + only a directory name, dequote the passed pathname and see if it + names an existing directory. If it does, return it; otherwise return + failure ((char **)&glob_error_return). This is what makes backslash + escaped-characters in pathnames in shell variables work the same as + the same value passed directly. From an anonymous comment on + https://savannah.gnu.org/support/?109629 and a discussion on the + austin-group list. + + 6/20 + ---- +pathexp.c,lib/glob/glob.c + - posix_glob_backslash: variable to control whether or not pathname + expansion handles backslashes in the pattern the way Posix says it + should. Enabled by default + +pathexp.h + - posix_glob_backslash: new extern declaration + +builtins/shopt.def + - posixglob: new option, reflects the value of posix_glob_backslash + +general.c + - posix_vars: add posix_glob_backslash to the table + - posix_initialize: set posix_glob_backslash to 1 when turning on + posix mode + + 6/21 + ---- +doc/{bash.1,bashref.texi} + - pathname expansion: note that under some circumstances the shell + will invoke the matching engine for words with unquoted backslashes + - posixglob: document the new shell option and its effects + + 6/27 + ---- +{config.h.in,configure.ac} + - setresuid,setresgid: check and set HAVE_{DECL,}_SETRES[UG]ID as + appropriate + +shell.c + - disable_priv_mode: if we have setres[ug]id, use them over + set[ug]id, which only set the save user-id and group-id if the + process is running as root. From Ian Eldred Pudney + in https://savannah.gnu.org/patch/?9822 + + 6/28 + ---- +lib/glob/glob.c + - glob_vector: don't bother trying to read the directory if the filename + pattern doesn't have any globbing characters except backslash; just + dequote the pattern and try to lstat(2) it as if there were no + globbing characters at all. From an austingroup-bugs discussion + message from Stephane Chazelas + +bashline.c + - completion_glob_pattern: just call glob_pattern_p and make sure it + returns 1 (non-backslash globbing characters) + +builtins/help.def + - help_builtin: don't try pattern matching the help topic argument + unless glob_pattern_p returns 1 + +pathexp.c + - unquoted_glob_pattern_p: when in a bracket expression (open > 0), + don't allow an unquoted slash as part of the bracket expression. + Report from Stephane Chazelas + + 7/1 + --- +print_cmd.c + - print_function_def,named_function_string: make sure to call + PRINT_DEFERRED_HEREDOCS to finish printing any here documents and + delimiters before printing the function closing brace. Fixes bug + reported by Denis McKeon + +execute_cmd.c + - execute_command_internal: call reap_procsubs at the end of executing + a group command on systems that have /dev/fd. Fixes bug reported by + kfm@plushkava.net + + 7/3 + --- +jobs.c + - waitchld: this is in the potential SIGCHLD path, so don't call + bgp_add, which can potentially call malloc. The glibc malloc doesn't + handle that well. Report from howaboutsynergy@protonmail.com + + 7/5 + --- +builtins/bind.def + - bind_builtin: make sure return_code is >= 0 before returning it. + Fixes bug with bind -x and invalid key sequences reported by + bashbug@jonkmans.nl + + 7/8 + --- +doc/{bash.1,bashref.texi} + - unset: fixed up list of special variables that lose their special + properties if they are unset. Report and fix from Edward Huff + + + 7/9 + --- +test.c + - unary_test: update the `-N' test to use timespecs and nanosecond + granularity if available, and use mtime > atime instead of the + old mtime >= atime. Fixes bug reported by kfm@plushkava.net + +lib/sh/strtod.c + - strtod: make sure to use locale_decpoint() to determine the radix + character + + 7/11 + ---- +lib/sh/utf8.c + - utf8_mblen: return -2 if the UTF-8 sequence is incomplete + - utf8_mblen: 4-byte UTF-8 characters start with a byte <= 0xf4; limit + to 4-byte UTF-8 (since 5- and 6-byte code points were removed in 2003) + + 7/12 + ---- +parse.y,shell.h + - sh_input_line_state_t: if HANDLE_MULTIBYTE is defined, add members + for saving shell_input_line_property and its associated size; let + save_line_state and restore_line_state manage it. This means + restore_line_state no longer calls set_line_mbstate. From a report + from astian + +parse.y + - set_line_mbstate: if the current locale is not multibyte, just set + everything in the property array to 1 + - set_line_mbstate: use locale_utf8locale to optimize away calls to + mbrlen; just use utf8_mblen + + 7/14 + ---- +variables.c + - sv_tz: remake the export env if TZ is being unset. Fixes bug + reported by Travis Everett + +lib/readline/display.c + - rl_expand_prompt: if the prompt contains embedded newlines, compute + local_prompt_prefix before local_prompt because each call sets + local_prompt_newlines, and we want the values computed in the call + that uses local_prompt to be the ones that we use. Fixes prompt + wrapping bug reported by Tianon Gravi + + 7/16 + ---- +Makefile.in + - added a number of dependencies from Vemake Vemake + as reported in + http://savannah.gnu.org/patch/download.php?file_id=47219 + + 7/19 + ---- +lib/sh/utf8.c + - utf8_mblen: changes to handle invalid multibyte sequences better, + even when N means that the sequence would be too short anyway + +arrayfunc.c + - bind_assoc_var_internal: new convenience function to assign a + key-value pair to an associative array. It gets the SHELL_VAR * AND + a HASH_TABLE *, which may or may not correspond to the assoc_cell + of the variable, and performs the insertion into the hash table. + Callers take care of passing the right values. + - bind_assoc_variable: call bind_assoc_var_internal to do the real + work + - assign_compound_array_list: change to assign associative array + key-value pairs into a new hash table (NHASH), so we can still use + the old value for expansion. We do this in place of clearing out + the contents of the associative array before performing the expansion + and assignments. After doing all the assignments into NHASH, we swap + NHASH into the variable as its value and dispose of the old value. + Fixes inconsistency reported by Darren 'Tadgy' Austin + + + 7/20 + ---- +aclocal.m4 + - include bashansi.h in a bunch of AC_TRY_RUN recipies to avoid + exit() being flagged as an implicit declaration. Report and fix + from Chris Yungmann + +shell.c + - set_exit_status: set last_command_exit_value to the argument and make + sure to set PIPESTATUS from that exit value + +shell.h + - set_exit_status: extern declaration + +parse.y + - report_syntax_error: make sure to set PIPESTATUS if we set + last_command_exit_value on a syntax error + - parse_string_to_word_list,parse_compound_assignment: set PIPESTATUS + when we set last_command_exit_value + +sig.c + - throw_to_top_level,sigint_sighandler: set PIPESTATUS when we set + last_command_exit_value + +variables.c + - sv_locale: call set_exit_status to set PIPESTATUS and last_command_exit_value + +arrayfunc.c + - find_or_make_array_variable,array_expand_index,assign_compound_array_list: + call set_exit_status to set PIPESTATUS and last_command_exit_value + +builtins/evalstring.c + - parse_and_execute: set PIPESTATUS when we set last_command_exit_value + +braces.c + - brace_expand: call set_exit_status to set PIPESTATUS and last_command_exit_value + +eval.c + - reader_loop: call set_exit_status to set PIPESTATUS and last_command_exit_value + +make_cmd.c + - set PIPESTATUS when setting $? due to syntax errors or constructs + not being available + +expr.c + - expr_streval: set PIPESTATUS when setting $? due to syntax errors + +subst.c + - extract_delimited_string,extract_dollar_brace_string,do_assignment_internal, + call_expand_word_internal,array_length_reference,param_expand, + parameter_brace_expand_word,parameter_brace_expand_rhs, + parameter_brace_expand_error,parameter_brace_expand,err_unboundvar: + set PIPESTATUS when setting last_command_exit_value on error + conditions + +redir.c + - REDIRECTION_ERROR: set PIPESTATUS when setting last_command_exit_value + on error conditions + +subst.c + - match_upattern,match_wpattern: if the match length is greater than the + string length, short-circuit and return failure. Fixes bug + reported by Eduardo Bustamante + + 7/22 + ---- +lib/glob/sm_loop.c + - BRACKMATCH: if we think we've matched, tighten up the rules for + the closing right bracket in the bracket expression to be correct + in the presence of invalid character classes, collating symbols, + and equivalence classes. If they're invalid, they shouldn't require + additional right brackets to close them + + 7/25 + ---- +builtins/colon.def + - add the right includes so colon_builtin and false_builtin can take + a WORD_LIST * argument like the prototype says they do + + 7/29 + ---- +lib/readline/kill.c + - _rl_read_bracketed_paste_prefix: read the character prefix that + indicates a pasted string in bracketed paste mode. If we don't + read a valid bracketed paste prefix, push the other characters + back onto the input stack with _rl_unget_char + - _rl_bracketed_read_key: handle reading pasted input when bracketed + paste mode is enabled, including reading multibyte characters; push + anything beyond a single byte back onto the input stack where it + can be read by _rl_read_mbstring or subsequent input + - _rl_bracketed_read_mbstring: handle reading pasted input in bracketed + paste mode, using _rl_bracketed_read_key to get the pasted text, + then call _rl_read_mbstring to get the rest of any multibyte char + + +lib/readline/vi_mode.c + - _rl_vi_callback_getchar: call _rl_bracketed_read_mbstring to handle + bracketed paste mode input. Fixes issue with vi-change-char reported + by + - rl_vi_domove_getchar: just call _rl_bracketed_read_key and return + the result -- we're not interested in multibyte-character input here + yet + - rl_vi_replace: bind BRACK_PASTE_PREF key sequence if bracketed paste + mode has been enabled + - _rl_overstrike_bracketed_paste: key binding function for the bracketed + paste prefix key sequence in overwrite mode; reads the pasted text + and uses rl_vi_overstrike to add each character in overwrite mode. + Fixes issue reported by + + 7/31 + ---- +lib/readline/input.c + - _rl_read_mbchar: the first time through the loop (mb_len == 0), call + _rl_bracketed_read_key to process any bracketed paste characters + +lib/readline/text.c + - _rl_char_search: use _rl_bracketed_read_key in the non-multibyte + character case + +lib/readline/misc.c + - _rl_arg_dispatch: use _rl_bracketed_read_key in place of rl_read_key + +subst.c + - list_string: if string_extract_verbatim returns something, just make + a WORD_DESC * and add current_word directly to it, noting that we + don't want to free current_word (free_word = 0) + - string_extract_verbatim: if the separator string is the empty + string, don't bother with the loop -- just savestring the string, + update *sindex, and return the copy + - read_comsub: make the string we use to save the output from the pipe + 512 bytes instead of 128 (same size as the buffer used to read from + the pipe); fewer calls to xrealloc in the worst case + - parameter_brace_expand_length: optimize the common case (non-dynamic + scalar variable without `set -u' in effect) and just call MB_STRLEN + on the variable value in that case. From a report from + Alkis Georgopoulos + + 8/13 + ---- +execute_cmd.c + - execute_subshell_builtin_or_function: call subshell_exit() instead of + sh_exit() or exit() so the exit trap gets run. Fixes issue reported + in https://savannah.gnu.org/support/?109840 + - replace __P with PARAMS + +lib/readline/colors.c + - _rl_print_color_indicator: eliminate one use of S_ISLNK. + Report and fix from Christian Biesinger + + 8/22 + ---- +variables.c + - push_posix_temp_var: change to use bind_variable and modify variables + at the current local scope or create and modify variables at the + global scope, as if a standalone assignment statement had been + executed. This restores some bash-4.4 backwards compatibility with + respect to posix-mode assignment statements preceding special + builtins and shell functions. The bash-5.0 behavior, while perhaps + defensible, caused too many compatibility problems. Originally + prompted by several discussions with Martijn Dekker; the current + incarnation and tests based on a report to Debian BTS from + Thorsten Glaser + + 8/26 + ---- +shell.c,bashhist.c + - __P -> PARAMS + +shell.c + - set_option_defaults,reset_option_defaults: before calling + list_minus_o_options at invocation, call set_option_defaults to + set the options that are initialized to -1 to either 1 or 0, as + appropriate; then call reset_option_defaults to set them back to -1 + after list_minus_o_options returns + - init_interactive: if enable_history_list == -1, set it to 1, then + set remember_on_history to enable_history_list. Fixes bug reported + by Alex Kerzner + - init_noninteractive: if enable_history_list == -1, set it to 0, let + bash_history_reinit take care of setting remember_on_history + - init_interactive_script: if enable_history_list == -1, set it to 1, + then set remember_on_history to enable_history_list + +bashhist.c + - enable_history_list: initialize to -1 to note when it gets changed + by -o history or +o history at invocation + + 8/28 + ---- +lib/readline/terminal.c + - TGETENT_SUCCESS, TGETFLAG_SUCCESS: defines to represent successful + returns from tgetent and tgetflag, since HPUX manages to get them + wrong. New patch from Osipov, Michael + - TGETFLAG: new define, make sure tgetflag returns TGETENT_SUCCESS + - _rl_init_terminal_io: use TGETENT_SUCCESS and TGETFLAG + +configure.ac + - hpux: make sure to define TGETFLAG_BROKEN + + 8/30 + ---- +tests + - add copyright notices to all scripts longer than 15 lines at the + request of the FSF + + 9/1 + --- +lib/readline/complete.c + - _rl_complete_internal: move logic that checks whether the last + completion attempt failed and the current attempt returned a single + match and insert the single completion here. A better implementation + of Richard Stallman's suggestion of 2/23. + + 9/3 + --- +bashline.c + - edit_and_execute_command: reset the readahead token after calling + restore_parser_state, in case some call to reset_parser set + token_to_read. Fixes bug reported by null + + 9/9 + --- +execute_cmd.c + - execute_command_internal: if we're executing a command list + (executing_list != 0), save the old fifo list and close any new + FIFOs that the command opens. Fixes bug reported by + Kamil Cukrowski + + 9/10 + ---- +aclocal.m4,m4/intdiv0.m4 + - make sure `exit' is used consistently with included + - make sure `main' isn't declared to implicitly return int + - include before using ulimit + - include before testing string functions + - fixes from Florian Weimer + +configure.ac + - setresuid,setresgid: use AC_CHECK_FUNCS instead of AC_CHECK_DECL, + which always fails + +shell.c + - disable_priv_mode: use HAVE_SETRESUID and HAVE_SETRESGID instead of + the HAVE_DECL variants, which always fail configure tests + +m4/intl.m4 + - gt_INTL_SUBDIR_CORE: add back check for localeconv, removed in + newer gettext releases + + 9/16 + ---- +builtins/help.def + - help_builtin: make the closing quote printed after the argument list + for a glob pattern argument a translatable string to ease translation + for certain languages. Report from Roland Illig + +builtins/{reserved,complete,exec,getopts}.def + - minor typographical fixes from Roland Illig + +siglist.c + - include general.h for INT_STRLEN_BOUND + - initialize_siglist: use the same string for the strlen and xmalloc + for the message about an unknown signal number; use INT_STRLEN_BOUND + instead of a fixed 10 for the number + +builtins/getopts.def,doc/{bash.1,bashref.texi} + - getopts: minor changes to the description of the effect of supplying + additional arguments. Report from Roland Illig + + 9/17 + ---- +jobs.[ch] + - save_proc_status: external interface to bgp_add, takes care of + blocking and unblocking SIGCHLD + - __P -> PARAMS + + 9/18 + ---- +jobs.[ch] + - procsub_{free,add,search,delete,waitpid,waitall,clear,prune}: new + functions to keep track of the list of active process substitutions + and their statuses. Implementation is currently a singly-linked list + of PROCESS *, so functions that expect a PROCESS * to manipulate + continue to work. Inspired by report from leo.dalecki@ntymail.com + - find_pipeline,cleanup_dead_jobs,wait_for_background_pids: call new + procsub_* functions to manage procsub list; don't call the functions + in subst.c any more + +subst.c + - process_substitute: call procsub_add with the PROCESS * returned + from make_child; let the functions in jobs.c manage the list. + waitchld continues to set the pid field in the fifo list as a hint + that a particular fd or FIFO is no longer used and can be reaped + - process_substitute: let the child process clear out any existing + procsub pid list + - wait_procsubs: no longer compiled in + +sig.c + - termsig_handler: replace discard_last_procsub_child with call to + procsub_clear + +lib/readline/display.c + - init_line_structures: fix a problem which results in references to + uninitialized memory when gdb sets the number of columns to 32767 + (their `unlimited'). Modification of change from 5/23. Report and + fix from Andrew Burgess + + 9/19 + ---- +parse.y + - xparse_dolparen: after calling parse_string to consume input, make + sure to reset the parser (reset_parser()) before restoring the EOF + token and the parser_state variable. Fixes issue with nested traps + running command substitutions in command lines with command + substitutions reported by Travis Everett + + 9/20 + ---- +doc/{bashref.texi,bash.1} + - fixed a typo in the example for the =~ operator: the ? should follow + the (a), not precede it. Report from hk + - some changes to the text describing regular expression matching for + the =~ operator + + 9/25 + ---- +general.c,builtins/shopt.def + - posix_glob_backslash: remove references to this variable and the + `posixglob' shell option + +doc/{bash.1,bashref.texi} + - remove references to the `posixglob' shell option + + 9/26 + ---- +{jobs,nojobs}.c + - DEFAULT_MAX_CHILD: bump this up to 4096 + - set_maxchild: set lmaxchild to MAX_CHILD_MAX if getmaxchild returns + -1 without changing errno (assume that sysconf returns -1 meaning + unlimited) + - initialize_job_control: call set_maxchild instead of inline code + - mark_dead_jobs_as_notified: call set_maxchild to set js.c_childmax + if it hasn't been set yet + + 9/30 + ---- +lib/glob/xmbsrtowcs.c + - xwcsrtombs: implementation of wcsrtombs from gnulib, modified to + treat invalid wide characters (or wide characters that can't be + converted to multibyte character sequences) as bytes. Should be + used only in unusual circumstances where wcsrtombs fails. + +lib/glob/glob.c + - wdequote_pathname: if wcsrtombs fails to convert the dequoted wide + character pathname back to a sequence of multibyte characters, call + xwcsrtombs to try to treat the invalid wide characters as bytes -- + the call to xdupmbstowcs treats bytes that don't convert to wide + characters as just bytes, which kind of causes this problem in the + first place. Inspired by report from Geoff Kuenning + +lib/readline/complete.c + - compute_lcd_of_matches: use the case-folding code (which performs + character-by-character checking and compares invalid multibyte + sequences as bytes) instead of the old case-sensitive code (which + used _rl_compare_chars), converting characters to lowercase as + needed. Fixes bug with invalid sequences in common filename prefixes + reported by Grisha Levit + + 10/1 + ---- +builtins/shopt.def + - reset_shopt_options: add in resets for some missing shopt options. + Report and fix from Grisha Levit + +execute_cmd.c + - execute_command_internal: make sure a failed attempt to define a + shell function causes the shell to exit if -e is enabled. Report + from Andreas Kusalananda Kähäri + - execute_command_internal: combine cm_function_def, cm_arith, and + cm_cond cases into one switch case, since the code is virtually + identical across all three + + 10/3 + ---- +pathexp.[ch],lib/glob/glob.c,lib/glob/glob_loop.c + - remove all references to posix_glob_backslash in preparation for + implementing austin group interpretation #1234 + +pathexp.c + - unquoted_glob_pattern_p: revert to bash-4.4 behavior of returning 1 + only if there is an unquoted `*', `?', or bracket expression, as + per austin group interpretation #1234 + +lib/glob/glob_loop.c + - INTERNAL_GLOB_PATTERN_P: revert to bash-4.4 behavior of returning 1 + only if there is an unquoted `*', `?', or bracket expression, as + per austin group interpretation #1234 + + 10/4 + ---- +variables.c + - assign_seconds,get_seconds: use the tv_sec value returned from + gettimeofday() instead of time() to get a better approximation of + the number of seconds since the epoch for future calculations. + From a report by Stephane Chazelas + +pathexp.[ch],{bashline,subst}.c + - shell_glob_filename: now takes an additional flags argument to pass + to quote_string_for_globbing + + 10/6 + ---- +subst.c + - glob_expand_word_list: call shell_glob_filename with QGLOB_CTLESC + because quote removal hasn't been performed yet + + 10/7 + ---- +pathexp.c + - quote_string_for_globbing: if we have an unquoted backslash followed + by a CTLESC-quoted character (not CTLESC-CTLESC), just perform the + usual CTLESC-to-backslash conversion instead of skipping over it. + Fixes issue raised in austin-group discussion about globbing by + Geoff Clare (austin-group issue 1234), though + it's still inherently ambiguous + + 10/8 + ---- +include/shmbutil.h + - xwcsrtombs: extern declaration, to match other functions in that file + +lib/glob/glob.c + - wcdequote_pathname: new function, actual backslash quote removal code + from wdequote_pathname; wdequote_pathname calls it + +lib/glob/glob.c + - {udequote,wcdequote}_pathname: now public void functions + +lib/glob/smatch.c + - DEQUOTE_PATHNAME: defined appropriately to udequote_pathname or + wcdequote_pathname + +lib/glob/sm_loop.c + - DEQUOTE_PATHNAME: appropriate extern declaration + - BRACKMATCH: call DEQUOTE_PATHNAME to dequote a character class name + in a bracket expression. This is the result of a discussion on the + austin-group mailing list, from Geoff Clare and + Robert Elz + + 10/10 + ----- +execute_cmd.[ch] + - async_redirect_stdin: now a global function + +subst.c + - process_substitute: call async_redirect_stdin in the child to keep + it from having stdin connected to the terminal, since it's not a + job control process + + 10/11 + ----- +subst.c + - process_substitute: in the child process, set interactive = 0, since + an asynchronous process substitution process is not interactive. + Seems to fix issue reported by Grisha Levit + +lib/sh/shmatch.c + - sh_regmatch: implement a suggestion from Grisha Levit + and don't allow nocaseglob to enable case- + insensitive regexp matching. It hasn't been documented that way + in years + + 10/30 + ----- +bashhist.c + - bash_add_history: fix a couple of problems with adding extra blank + lines to history entries containing here-documents. Fixes bug + reported by Oguz + +lib/sh/shmatch.c + - BASH_REMATCH: no longer set to readonly. From a suggestion from + Rocky Bernstein + +doc/{bash.1,bashref.texi} + - BASH_REMATCH: document that it's no longer set to readonly + +subst.c + - getpattern: since expand_string_for_pat leaves the pattern quoted, + we need to remove quoted nulls before running the string through + string_list (and then quote_string_for_globbing, since QGLOB_CVTNULL + only handles pat[0] == CTLNUL). Fixes bug reported by Oguz + + + 11/4 + ---- +configure.ac,config.h.in + - AC_HEADER_MAJOR: look for `major' and `minor' in various header files + and define MAJOR_IN_MAKEDEV or MAJOR_IN_SYSMACROS as appropriate. + From a patch from Eli Schwartz + +examples/loadables/finfo.c + - include and as appropriate for + definitions of major/minor + + 11/6 + ---- +redir.c + - heredoc_expand: if we are expanding the WORD in a here-string, use + expand_assignment_string_to_string so the expansions are consistent + in contexts where word splitting is not performed. From a bug report + by Robin A. Meade + + 11/7 + ---- +parse.y + - xparse_dolparen: if the command substitution is incomplete or doesn't + end in `)', print an error message instead of allowing EOS to + terminate the comsub. From a bug report from + Oguz + + 11/11 + ----- +lib/sh/unicode.c + - u32toutf8: fix a typo that assigned the wrong value to the first + byte of a six-byte UTF-8 character. Report and fix from + István Pásztor + + 11/15 + ----- +doc/bash.1,lib/readline/doc/{history.3,hsuser.texi} + - quick substitution: make it clear that ^s1^s2^ is equivalent to + !!:s^s1^s2^, since that's the internal transformation we perform. + Reported by Jim Monte + - note that the `q' and `x' modifiers are mutually exclusive; last + one wins. Reported by Jim Monte + - note that the `G' modifier can work with `&' as well as `s'. + Reported by Jim Monte + - note that a word designator of `-' is equivalent to `0-'. + Reported by Jim Monte + - note that a missing `new' in a substitution modifier causes + instances of `old' to be deleted + +lib/readline/histexpand.c + - history_expand_internal: make multiple :p modifiers work to suppress + execution. Reported by Jim Monte + - get_history_word_specifier: fix so a `^' word designator works as + the second part of a range. + Reported by Jim Monte + - hist_error: make sure we don't blindly copy a null character into + the error string (e.g., if there is a missing word designator + following `:'). Reported by Jim Monte + - get_history_event: if the history event specifier (!) is followed + immediately by a `-' and a non-digit (e.g. !-a), make sure the - is + treated as part of a search string instead of making it an offset of + 0. Reported by Jim Monte + + 11/19 + ----- +lib/readline/{colors,complete,histfile,input}.c,support/shobj-conf + - fixes to make readline compile on the latest HPE Nonstop (Tandem) + releases. From Randall S. Becker + +subst.c + - pat_subst: if we have a null match, make sure we advance by one + character, not one byte. Bug reported by Chris Carlen + + + 11/22 + ----- +jobs.[ch],nojobs.c,builtins/jobs.def + - get_job_by_pid: now takes a PROCESS ** third argument; if non-null, + it gets a pointer to the PROCESS struct corresponding to the PID + argument. A convenience, not used by any caller yet + +builtins/wait.def + - interrupt_immediately: remove any uses, no longer used anywheren + +variables.c + - check_unbind_variable: return -2 if the variable name is readonly + (change) or non-unsettable (new) to differentiate the return value + from -1 from makunbound (which means variable not found) + +builtins/common.[ch] + - builtin_unbind_variable: identical to check_unbind_variable but calls + builtin_error; for use by builtin commands + +buitins/wait.def + - wait_builtin: now has -p VARNAME option, which takes the pid + returned by `wait -n' or wait without arguments and assigns it to + VARNAME, unsetting VARNAME first. Requested by Robert Elz + after a similar feature in netbsd sh (not + completely compatible yet) + +doc/{bash.1,bashref.texi} + - wait: document new -p option + + 11/25 + ----- +lib/readline/display.c + - rl_redisplay: auto-set horizontal scrolling if the terminal has + only one line; disable it if we auto-set it if the terminal grows + to more than one line. Fix from Sören Tempel + + +lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 + - horizontal-scroll-mode: document auto-setting behavior + +builtins/set.def + - set_posix_mode: make setting posix mode when it's already set, or + unsetting it when it's not set, a no-op. Inspired by a report + from Ulrich Mueller + + 11/26 + ----- +doc/{bash.1,bashref.texi} + - functions: clarify that when in default mode, function names are not + limited to shell identifiers. + Suggested by Reuti + + 11/27 + ----- +lib/readline/display.c + - _rl_optimize_redisplay: tell the redisplay routines to not worry + about calculating differences between the lines and just draw the + new one. Right now, it just sets the _rl_quick_redisplay flag + - rl_redisplay: if _rl_quick_redisplay is set, just draw NEW onto + the screen at column 0 with a dumb update and clear the rest of + the line. Intended to be used when the caller knows the new line is + sufficiently different from the old one (e.g., when drawing the + i-search prompt for the first time) that it doesn't pay off to do + the calculations. As a side effect, fixes the bug reported by + ÐлекÑей Шилин + +lib/readline/isearch.c + - rl_display_search: if there isn't a search string, assume this is + the first time this is called and call _rl_optimize_redisplay to + give the redisplay code a hint + + 12/2 + ---- +builtins/wait.def + - wait_builtin: allow argument to -p to be a valid array subscript + + 12/3 + ---- +lib/readline/isearch.c + - _rl_isearch_fini: add call to _rl_optimize_redisplay because we are + switching the prompt back again and it's safer to redraw everything + (even though part of the line is the same) to deal with differences + in the prompt strings. Fixes additional problem reported by + ÐлекÑей Шилин + +lib/readline/display.c + - update_line: quick redisplay no longer sets cpos_adjusted before + the dumb update + - update_line: adjust _rl_last_c_pos in the case of a dumb update if we + are redrawing the prompt that includes invisible characters, since + _rl_col_width does not. We adjust by the count of invisible chars in + the first line of the prompt + - update_line: make sure to clear the rest of the line if it looks like + the number of visible characters on the new line is less than the + number of visible characters on the current line; the old calculation + does that just for the number of bytes (which is also useful) + + 12/4 + ---- +lib/readline/display.c + - rl_redisplay: if we are changing from one line to multiple lines, + don't try quick redisplay + - update_line: changes to quick redisplay to take advantage of knowing + the physical length of the prompt to avoid having to compute column + widths of the prompt string again; moved code to call clear screen + to the quick update section; no longer performs `goto dumb_update' + - update_line: try to take advantage of prompt_physical_chars when we + know we have written the prompt string (several places) to set + _rl_last_c_pos and calculate column widths + - update_line: if the spot where the old and new lines are the same is + before the end of the prompt string, adjust NLS and OLS so we write + the entire prompt string (as long as it's all on one line) and can + take advantage of already knowing prompt_physical_chars so we don't + have to compute column widths + - update_line: when copying chars from first diff to last match, adjust + _rl_last_c_pos by prompt_invis_chars_first_line, not wrap offset, + since we are on the first line, and only do this if we inserted more + bytes than wrap_offset (old code checked _rl_last_c_pos, which is + wrong in the presence of multibyte characters) + + 12/5 + ---- +lib/readline/display.c + - ADJUST_CPOS: define macro and use it in places where _rl_last_c_pos + is changed + + 12/12 + ----- +lib/readline/isearch.c + - _rl_isearch_dispatch: check for multibyte characters mapped to one + of the editing functions we treat specially to modify the search + string + + 12/13 + ----- +support/shobj-conf + - FreeBSD and Dragonfly are ELF-only and can use the same code as + Linux, so add those to the linux stanza and remove the old FreeBSD + version-specific sections. Report and fix from Baptiste Daroussin + + +bashline.[ch] + - bash_execute_unix_command: no longer static, available for other + parts of the shell to use + +bashline.c + - unbind_unix_command: take a key sequence as an argument, and unbind + it in the appropriate unix command keymap + +builtins/bind.def + - unbind_keyseq: if we are unbinding a key sequence bound to + bash_execute_unix_command, which means it was added by `bind -x', + call unbind_unix_command() to remove it from the appropriate unix + command keymap. Fixes issue originally raised by + Koichi Murase and recently by + Å imon Let + - bind_builtin: check the number of bindings to bash_execute_unix_command + before and after a call to rl_parse_and_bind and if there are fewer + after binding, we know that the bind has re-bound one of the key + sequences that was bound to execute a shell command. We unbind any + key sequences from the list before the call to rl_parse_and_bind that + don't appear in the list after the call using unbind_unix_command + + 12/19 + ----- +include/posixstat.h + - added some definitions for MinGW. Report and patch from + Eli Zaretskii + + 12/20 + ----- +lib/readline/display.c + - update_line: when wrapping lines containing multibyte characters at + the wrap point, and the number of screen positions consumed by the + first character on the new line isn't the same as the old line, + make sure we set OE before the `goto dumb_update;' since clearing + the rest of the line may use it. Tentative fix for bug reported by + Kirill Chibisov + +lib/readline/signals.c + - _rl_signal_handler: set RL_STATE_SIGHANDLER around SIGWINCH code, + like _rl_handle_signal does + + 12/26 + ----- +lib/sh/stringvec.c + - strvec_posixcmp: new function that conforms to posix requirement for + sorting globs: perform a bytewise comparison if the two strings + collate equally. Posix interp 963 and 1070 + - strvec_sort: take a new flags argument, if non-zero use the posix + string comparison function + +pathexp.c + - shell_glob_filename: call strvec_sort with the flag value to be + posix conformant + +lib/sh/stringlist.c + - strvec_sort: change callers + + 12/29 + ----- +sig.c + - throw_to_top_level: set running_trap to 0 after calling run_trap_cleanup. + This avoids spurious (in non-release versions) warnings from + run_pending_traps the next time a trap handler for that signal + runs. Bug report from Martijn Dekker + + 1/14/2020 + --------- +bashline.c + - find_cmd_start: don't treat the open brace in brace expansion as a + command start character; only treat open brace specially if it can + be a reserved word. Fixes bug reported back in October, 2019 in + https://savannah.gnu.org/support/index.php?110063 + + 1/15 + ---- +lib/readline/readline.c + - _rl_dispatch_subseq,_rl_subseq_result: if we push back a character + with _rl_unget_char or otherwise go back up the chain without a + sequence match, make sure we back up in rl_executing_keyseq. + Report and fix from Koichi Murase + +builtins/bind.def + - unbind_keyseq: if we unbind something that ends up pointing to a + shadow keymap, restore the ANYOTHERKEY binding that we used when + binding it. + Report and fix from Koichi Murase + +bashline.c + - bash_execute_unix_command: if we walked cmd_xmap for rl_executing_keyseq + and ended up pointing to a keymap (type == ISKMAP) we want the + binding for ANYOTHERKEY instead. + Report and fix from Koichi Murase + +lib/readline/bind.c + - rl_bind_key: if we're trying to bind a key sequence containing '\0' + using the old-style binding syntax (C-SPC), make sure we quote the + NULL so it will make it through rl_translate_keyseq(). + Report and fix from Koichi Murase + - rl_bind_key: if we're overwriting a binding for a macro, make sure to + free the old macro value. + Report and fix from Koichi Murase + - rl_generic_bind: if we're overwriting a macro saved to ANYOTHERKEY in + a shadow keymap created by rl_generic_bind, make sure to free the + macro data. + Report and fix from Koichi Murase + +trap.c + - run_pending_traps: save and restore the value of running_trap around + cycle through pending signals so recursive trap handler calls don't + set running_trap to 0 + - _run_trap_internal: allow some signals the shell treats specially + (e.g., SIGINT) to run recursive handlers + - _run_trap_internal: don't turn off SIG_INPROGRESS flag if it was on + for this signal when _run_trap_internal was called + - _run_trap_internal: save and restore the value of running_trap around + running the trap handler, except for SIGCHLD. Fixes bug reported by + Martijn Dekker + + 1/16 + ---- +general.c + - posix_initialize: if turning posix mode off, restore settings from + any saved set, if one exists, instead of setting a default environment + + 1/17 + ---- +parse.y,subst.c + - process_substitution: now available in POSIX mode. Most recently + requested by Martijn Dekker ; requested several + times in the past + +doc/bashref.texi + - posix mode: remove restriction that posix mode is not available + +lib/readline/vi_mode.c + - rl_domove_motion_callback: make sure to extend rl_line_buffer so it + can hold the dummy blank character we're appending. From a fuzzing + report by Tillmann Osswald + - vi_yank_dispatch: after we do an undo, make sure to fix point to be + less than the (new) rl_end + +lib/readline/text.c + - rl_forward_word: make sure that MB_NEXTCHAR doesn't go past rl_end on + invalid multibyte sequences + + 1/18 + ---- +test.c + - for the `-v' operator, use a clever trick from Martijn Dekker and + just test whether N is between 0 and $#. + + 1/21 + ---- +lib/readline/text.c + - rl_change_case: fix argument to rl_extend_line_buffer; make sure to + reset s and e after call in case rl_line_buffer was reallocated + +lib/readline/vi_mode.c + - _rl_vi_save_replace: if start ends up being less than zero, make + sure we don't read before the start of rl_line_buffer + - rl_vi_overstrike_kill_line,rl_vi_overstrike_kill_word: replacement + functions for ^U and ^W in vi overstrike mode, to keep right value + for vi_replace_count. + - rl_vi_overstrike_yank: similar for ^Y and rl_yank + + 1/22 + ---- +lib/readline/display.c + - update_line: if we're trying to wrap lines on an autowrap terminal, + punt and do a dumb update if the number of bytes in the first char + on the new line is greater than the number of bytes in the first char + of the old line. There's no guarantee we'll be able to extend the + old line buffer enough to accommodate the new bytes + - update_line: try to avoid some operations when wrapping lines if the + number of bytes in the first characters of the old and new lines is + the same + - update_line: when updating vis_lbreaks after fixing up the lines when + wrapping, make sure we don't exceed an index of _rl_vis_botlin when + updating the line break offsets + +lib/readline/text.c + - rl_delete_text: if deleting text leaves the mark past rl_end, adjust + it to rl_end + +lib/readline/vi_mode.c + - _rl_vi_goto_mark: make sure to call _rl_fix_point after setting + rl_point to rl_mark + + 1/23 + ---- +lib/readline/kill.c + - rl_kill_region,region_kill_internal: call _rl_fix_point + +lib/readline/text.c,lib/readline/rlprivate.h + - _rl_fix_mark: new function to clamp rl_mark between 0 and rl_end + + 1/24 + ---- +lib/readline/bind.c + - rl_translate_keyseq: rework how key sequences are translated with + the intent of normalizing backslash treatment. Since the current + behavior of, e.g., \C-\\, is inconsistent, this change chooses to + effectively treat and display \\ as \\ instead of \C-\. This is not + completely backwards compatible, but it seems like the most reasonable + choice. This allows things like \M-\a but is not compatible with + pre-bash-4.4 (readline 7.0) handling of \C-\, which is now treated + like \C-\0. If that proves to be a problem, we can add code to + understand \C-\ as equivalent to \C-\\. Since attempting to bind + "\C-\" has generated an error for a long time, it doesn't seem like + it will be too much of a problem. + Fixes from Koichi Murase + - rl_invoking_keyseqs_in_map: make sure to consistently output + backslash as `\\' instead of producing `\C-\' + Fixes from Koichi Murase + + 1/29 + ---- +bashline.c + - readline_get_char_offset: translate a readline buffer offset + (rl_point, rl_mark, rl_end) into a number of (possibly multibyte) + characters + - readline_set_char_offset: translate a number of (possibly multibyte) + characters into a buffer offset in rl_line_buffer. Uses a private + readline function to do it, which is bad + - bash_execute_unix_command: use readline_{get,set}_char_offset to + translate the rl_point to a character offset + - bash_execute_unix_command: bind READLINE_MARK variable, exposing + the value of rl_mark to `bind -x' functions + +doc/{bash.1,bashref.texi} + - READLINE_MARK: document new variable set by the shell + + 1/31 + ---- +examples/loadables/accept.c + - accept: new loadable builtin that will accept a TCP connection on a + specified port. Inspired by Stan Marsh + + 2/1 + --- +lib/readline/histfile.c + - history_do_write,history_truncate_file: translate the return value rv + to errno when histfile_restore returns -1 (e.g., if rename() fails). + Report and fix from A + + 2/3 + --- +lib/sh/ufuncs.c + - fsleep: if pselect/select is interrupted by a signal, return -1 and + let the caller deal with it + +lib/sh/timeval.c + - multimeval: new function, multiply a timeval by a constant integer + - divtimeval: new function, divide a timeval by a constant integer + +lib/sh/uconvert.c + - uconvert: new additional argument: EP. If non-null, it gets the + address of the first non-digit that ends conversion (like strtod); + we try to do as much of the conversion as possible if EP is set so + the caller can clean up + + 2/4 + --- +examples/loadables/mkfifo.c + - mkfifo: new loadable builtin + + 2/6 + --- +variables.c + - make_local_variable: make sure local variables that have the same + names as variables found in the temporary environment are marked as + local. From Grisha Levit back in 12/2018 + + 2/7 + --- +sig.[ch] + - restore_sigmask: function to restore top-level signal mask using + sigprocmask + +{sig,eval,jobs,nojobs}.c + - replace calls to sigprocmask with restore_sigmask(); remove extern + declarations of top_level_mask + +sig.c + - initialize_shell_signals: if SIGCHLD is blocked at shell startup, + not only remove it from top_level_mask but make sure it's unblocked + +execute_cmd.c + - execute_pipeline: if lastpipe is enabled and we're executing the + rightmost pipeline element in the current shell, make sure to unblock + SIGCHLD before calling execute_command, in case `return' or `exec' + is run and that call doesn't return. From a report by + Harald van Dijk following up to a report + by Martijn Dekker + + 2/10 + ---- +builtins/trap.def + - trap_builtin: in posix mode, when trap is run with -p, show + the disposition of all signals, even those that are still in the + default state, including signals that were ignored when the shell + starts up and haven't been reset. Don't do it in default mode. + From an austin-group discussion back in April, 2019 (interp 1211) + +findcmd.c + - search_for_command: don't add commands without the execute bit set + to the command hash table. From https://savannah.gnu.org/patch/?9789 + contributed by michaeljs1990 + + 2/11 + ---- +expr.c + - strlong: require `base#' to be followed by an integer constant; + otherwise throw an error. From a report from Jeremy Townshend + back in June, 2019 + +test.c + - unary_test: allow -v N to test whether or not positional parameter + N is set. Most recently suggested by Peng Yu + and Martijn Dekker + +builtins/getopts.def + - dogetopts: use number_of_args() to compute the number of positional + parameters + +{findcmd,variables,subst,trap,sig}.h,builtins/common.h + - __P --> PARAMS + +builtins/shift.def,builtins/common.c + - shift_builtin: moved code that modifies dollar_vars and rest_of_args + to common.c:shift_args(int times), part of move to localize changes + to positional parameters + +builtins/common.c,variables.c + - posparam_count: keep a running count of the number of posititional + parameters when dollar_vars and rest_of_args are set + + 2/12 + ---- +subst.c + - number_of_args: just return posparam_count + +builtins/shift.def + - shift_builtin: if asked to clear the positional parameters with + something like `shift $#', just call clear_dollar_vars instead of + iterating through them, unsetting them one by one + +subst.[ch],builtins/common.[ch] + - number_of_args: moved to builtins/common.c + + 2/14 + ---- +subst.c + - clear_fifo_list: when using named pipes, clear out the FIFO list + without unlinking anything and set NFIFO to 0 + +execute_cmd.c + - execute_disk_command: in the child, clear out the FIFO list, since + we haven't created any FIFOs yet + - execute_in_subshell: clear out the FIFO list, since we haven't + created any FIFOs yet + +parse.y + - special_case_tokens: allow `time -- command' + + 2/21 + ---- +subst.c + - get_var_and_type: if an unset variable (not an array) is supplied + with the `[@]' subscript, don't return "". Fix to bug reported by + Arfrever Frehtes Taifersar Arahesis ; + original bug introduced 7/29/2018 + - array_transform: take a STARSUB argument instead of VARNAME, since + we've already computed what kind of index the array reference uses + in get_var_and_type, and passing VARNAME to figure out the index + type doesn't do the right thing when we're using indirect variable + expansion. Fixes bug reported by + Arfrever Frehtes Taifersar Arahesis + - array_remove_pattern: take the same new STARSUB argument for the + same reason + - parameter_brace_transform,parameter_brace_remove_pattern: change + callers to pass STARSUB instead of VARNAME + + 2/22 + ---- +execute_cmd.c + - fix_assignment_words: if an assignment is supplied to a builtin that + creates or modifies local variables while a function is executing, + set the W_FORCELOCAL flag for that word in addition to any of the + various assignment flags + +subst.c + - shell_expand_word_list: while processing a list of assignments that + are arguments to a builtin that creates or modifies local variables, + if make_internal_declare fails while attempting to create the local + variable (or give it attributes), skip attempting the assignment but + otherwise do not make this a fatal error. This results in two error + messages: one to create the variable or modify its attributes, and + one while attempting to assign the value, but the errors to not + cause the function to return immediately. Fixes inconsistency + reported by Arfrever Frehtes Taifersar Arahesis + + + 2/23 + ---- +trap.c + - first_pending_trap: generalize into first_pending_trap and + next_pending_trap + +wait.def + - wait_builtin: close up the trapped-signal-arrives hole a little more + by looking for a signal that arrived between the last check for + pending traps and setting wait_intr_flag and behaving as if it + arrived while wait was executing. Use first_pending_trap and + next_pending_trap to find a pending trap that is not SIGCHLD + +trap.c + - trap_handler: longjmp to wait_intr_buf unconditionally if + wait_intr_flag is set; don't bother with interrupt_immediately any + more + +variables.c + - all_local_variables: now takes an arg saying whether to restrict + return value to visible variables or return all local variables, + even those that are unset (the new default) + - visible_variable_in_context: new function, restricts return values + to set local variables in the current context; variable_in_context + now returns all local variables in the current context, even the + unset ones + +variables.h + - all_local_variables: change extern function declaration + +builtins/setattr.def + - show_local_var_attributes: show all local variables at the current + variable context, including unset ones, and their attributes + - show_localname_attributes: show attributes for NAME as long as NAME + resolves to a local variable at the current variable context, even + if NAME is unset + +builtins/common.h + - show_local_var_attributes, show_localname_attributes: new extern + declarations + +builtins/declare.def + - declare_internal: allow `-p' option for `local' builtin + - declare_internal: if `local' is supplied without options, or with + the `-p' option, but no variable name arguments, display all local + variables at the current variable context by calling + show_local_var_attributes + - declare_internal: if `local -p' is supplied with variable name + arguments, call show_localname_attributes to display the attributes + for that name if it resolves to a local variable at the current + variable context. Fixes issue reported by + pepa65 + +subst.c + - array_var_assignment: if VAR is unset, print the declare command + without the assignment statement, just with the attributes + - array_transform: special-case the 'a' attribute and return the + attribute string even if the array variable is unset. Feature request + from Arfrever Frehtes Taifersar Arahesis + - parameter_brace_transform: if asked to display the attributes and + value ('A') of an unset variable, make sure we pass the variable, if + it exists with attributes but without a value, to string_transform + - string_transform: if we don't have a value but the operator is 'A', + pass the variable through to string_var_assignment + - string_var_assignment: if we have an unset variable with attributes, + return a declare command that just sets the attributes. Feature request + from Arfrever Frehtes Taifersar Arahesis + + 2/24 + ---- +locale.c + - mblen: don't try to use unless HANDLE_MULITBYTE is defined. From + https://savannah.gnu.org/support/?110200 + - set_default_locale: if HAVE_SETLOCALE isn't defined, set the default + locale to "C" + + 2/25 + ---- +general.c + - interrupt_immediately: remove all references to this that are + already commented out + + 3/2 + --- +variables.c + - push_var_context,push_posix_tempvar_internal: assignment statements + preceding shell functions no longer persist after the function + completes in posix mode. POSIX interp #654, was in P1003.1-2017 + - push_posix_temp_var: variable assignments preceding special builtins + now act as if an assignment statement had been executed in posix mode + (the Posix `current execution environment') instead of unconditionally + creating a global variable + +trap.c + - clear_pending_traps: new function, just clears the pending traps flag + for all signals + + 3/6 + --- +execute_cmd.c + - execute_in_subshell: check for interrupts and terminating signals + before resetting the terminating signal handlers, and clear all + pending traps -- they're not pending for us and we should not run a + trap handler for them + - execute_in_subshell: enable bash-5.1 change from 11/29/2018 that + resets the signal-in-progress flag if we're running a command in + a subshell, since we're not running the trap command (we are the + trap command) + + 3/10 + ---- +subst.c + - parameter_brace_expand: if we assign the empty string to a variable + using the [:]= expansion in a quoted expansion, make sure we note + we are returning a quoted null string to the caller by setting + W_HASQUOTEDNULL. Fixes bug reported by Martin Castillo + + + 3/17 + ---- +lib/readline/histfile.c + - history_truncate_file: only chown the file if we really need to. From + alex@lisas.de via https://savannah.gnu.org/support/?110207 + +lib/readline/bind.c + - rl_unbind_function_in_map: since we are looking for functions, not + key sequences, descend into keymaps attached to the keymap passed + as an argument. From a report from lockywolf@gmail.com back on 2/27, + TENTATIVE CHANGE + +variables.h + - MKLOC_ARRAYOK,MKLOC_ASSOCOK: new flags values for + make_local_{array,assoc}_variable so we can avoid hard-coded values + of 1 and make it possible to eventually pass in additional flags + +builtins/declare.def + - declare_internal: make_local_array_variable: pass MKLOC_ASSOCOK + - declare_internal: make_local_assoc_variable: pass MKLOC_ARRAYOK + +variables.c + - make_local_{array,assoc}_variable: understand new flags, pass + MKLOC_INHERIT to make_local_variable if it appears in the flags + argument + +builtins/declare.def + - declare_internal: add a new -I option for local and declare that + inherits attributes and value from a variable with the same name + at a previous scope. Inspired by netbsd sh + - if -I option is supplied, pass MKLOC_INHERIT to make_local_variable + and its array counterparts make_local_{array,assoc}_variable + +subst.c + - shell_expand_word_list: pass -I to declare if constructing a declare + command with make_local_declare, meaning we have an array or assoc + compound assignment. (Slighty unsatisfactory, but ok for now) Fix + for bug report from Kevin Locke , + https://savannah.gnu.org/support/index.php?109669 + + 3/18 + ---- +examples/loadables/basename.c + - basename_builtin: handle -- option without crashing. Report by Peng Yu + + +jobs.c + - notify_of_job_status: if in posix-mode shell is started with -c, + jobs should print the status of completed jobs. From a report by + Robert Elz back in 12/18 + + 3/19 + ---- +variables.c + - assign_in_env: if we're assigning POSIXLY_CORRECT or POSIX_PEDANTIC + in the temporary environment, save the values of the options + affected by posix mode so we can restore them when we restore the + old value of the variable after the command executes. Suggested by + Martijn Dekker + + 3/20 + ---- +syntax.h + - slashify_in_here_document: add `"' to this list, since POSIX says + that backslashes in here documents behave like backslashes in + double quotes, and backslash can quote a double quote in a double- + quoted string. This means that given P=A, + + cat < back in 1/2019. + + 3/23 + ---- +subst.c + - string_transform: add `U' (convert to uppercase), `u' (convert + first character to uppercase), and `L' (convert to lowercase) + transformations. Inspired by a discussion with Phil Smith + back in May, 2019 + - parameter_brace_transform: make sure `u', `U', and `L' are valid + transform operators + +doc/{bash.1,bashref.texi} + - parameter transformation: document new `U', `u', and `L' operators + +eval.c + - execute_prompt_command: if an array variable PROMPT_COMMANDS exists, + prefer it to PROMPT_COMMAND and execute all of the commands contained + as array elements in index order. From a proposal by Daniel + Colascione back in 1/2018 + - execute_array_command: function for array_walk to use when executing + commands in PROMPT_COMMANDS + +doc/{bash.1,bashref.texi} + - PROMPT_COMMANDS: new array variable + + 3/24 + ---- +builtins/ulimit.def + - new -R option, for RLIMIT_RTTIME (max time a real-time process can + run without blocking). Patch from Maciej Wolny + back in 7/2017 + +doc/{bash.1,bashref.texi} + - ulimit: document new -R option + +lib/readline/{display.c,rlprivate.h} + - _rl_clear_screen: now takes an argument saying whether to attempt to + clear the terminal scrollback buffer if the right termcap capability + exists + +lib/readline/{text.c,readline.h} + - rl_clear_display: new bindable command that clears the screen and + scrollback buffer + +lib/readline/funmap.c + - clear-display: new bindable command name + +lib/readline/emacs_keymap.c + - emacs mode M-C-l now bound to clear-display + +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - clear-display: document new function and default emacs mode binding + +arrayfunc.c + - assign_assoc_from_kvlist: allow compound assignments to associative + arrays that do not contain words of the form `[key]=value', assume + such lists are of the form (key1 value1 key2 value2). A missing or + empty key is an error; a missing value is treated as NULL. You + cannot mix the two forms. Inspired by a suggestion from Sebastian + Gniazdowski back in 7/2019 + +doc/{bash.1,bashref.texi} + - documented new associative array assignment syntax + +assoc.[ch] + - assoc_to_kvpair: new function that returns a string with quoted + key/value pairs from given associative array + +array.[ch] + - array_to_kvpair: new function that returns a string with quoted + key/value pairs from given indexed array (for completeness) + +subst.c + - parameter_brace_transform: new operator `K': produces the (possibly + quoted) value of a variable, except for arrays, where it expands to + indexed or associative array assignments in key/value pair form + - string_transform,parameter_list_transform: expand `K' to (possibly + quoted) values + - array_var_assignment: take a new fourth argument saying which kind + of assoc assignment statement to produce; calls array_to_kvpair or + assoc_to_kvpair as appropriate and just returns that value if + necessary without creating a declare command + - array_transform: if the operator is `K', call array_var_assignment + with new argument that will produce a list of key/value pairs + +doc/{bash.1,bashref.texi} + - document new 'K' parameter transformation operator + + 3/25 + ---- +doc/bash.1,lib/readline/doc/{history.3,readline.3} + - some text and formatting cleanups from Bjarni Ingi Gislason + + +bashhist.c + - SYSLOG_MAXLEN: increase to 1024, since that seems to be what most + syslog daemons handle + - bash_syslog_history: if the line is longer than SYSLOG_MAXLEN minus + the header length, log it in multiple message with a sequence number + instead of truncating. Inspired by a report from + back in 7/2018 + +lib/readline/text.c + - rl_activate_mark,rl_deactivate_mark,rl_mark_is_active_p, + rl_keep_mark_active: new functions to manage an active region. We + don't do anything with an active region yet. Part of a large patch + for active regions from Daniel Colascione + originally back in 3/2018 + - rl_clear_screen: call rl_keep_mark_active to keep the region active + across the screen refresh + - rl_newline: make sure to deactivate the region even though we don't + do any redisplay with it yet + +lib/readline/readline.h + - rl_activate_mark,rl_deactivate_mark,rl_mark_is_active_p, + rl_keep_mark_active: new extern function declarations. They are + public functions for now + +lib/readline/readline.c + - readline_internal_setup: make sure the region starts out as not + active + - readline_internal_charloop: make sure to deactivate the mark after + a command, unless the command calls rl_keep_mark_active keep it + active + +lib/readline/kill.c + - rl_bracketed_paste_begin: set rl_mark before inserting the pasted + text, so the pasted text defines the region + - rl_bracketed_paste_begin: set the region as active after inserting + the pasted text + +lib/readline/util.c + - _rl_abort_internal: make sure we deactivate the region + +lib/readline/{terminal.c,rlprivate.h} + - _rl_cr: new function to just output the term_cr (or '\r'). Part of + the active region patch + +lib/readline/display.c + - _rl_cr: use where appropriate to replace MSDOS-dependent code and + calls to tputs + +lib/readline/terminal.c + - get and store the terminal sequences to enter and exit standout + (usually some background color) mode + + 3/26 + ---- +subst.[ch] + - copy_fifo_list: now returns void * + - close_new_fifos: now takes a void * as the first argument, since it's + usually the return value from copy_fifo_list + - close_new_fifos: (named pipes): cast first argument to a char *, + since copy_fifo_list will (someday) return a bitmap + - close_new_fifos: (HAVE_DEV_FD): cast first argument to a pid_t *, + since it takes a copy of dev_fd_list; use that in the loop to + determine whether or not to close file descriptors. First half of + fix for bug reported by Valentin Lab + - unlink_fifo_list: (named pipes): when compacting the list, make sure + to avoid the copy if i == j, and, after copying fifo_list[i] to + fifo_list[j], null out fifo_list[i] so we don't try to access it + later + +execute_cmd.c + - execute_command_internal: don't call reap_procsubs after executing + the command. Rest of fix for bug reported by Valentin Lab + + - execute_command_internal,execute_builtin_or_function: ofifo_list is + now a void * instead of a char * + + 3/30 + ---- +lib/readline/{terminal.c,rlprivate.h} + - _rl_standout_{on,off}: new functions, to enter and exit terminal + standout mode + +lib/readline/rlprivate.h + - _rl_refresh_line: new extern declaration + +lib/readline/display.c + - visible and invisible lines: added members to deal with tracking the + `current face' + - realloc_line: broke code to manage visible_line and invisible_line + allocation out of init_line_structures, added code to manage arrays + of visible and invisible line face info per character + - invis_{addc,adds,nul}: new functions to add characters to the + invisible line and keep the invisible face data updated with whatever + the current face is + - set_active_region: keep track of the display region that should be + in standout mode + - rl_redisplay: use invis_addc/adds/nul to update the invisible line + buffer instead of modifying invisible_line directly + - _rl_refresh_line: moved body of function here from text.c + +lib/readline/text.c + - rl_refresh_line: now just calls _rl_refresh_line and marks the display + as fixed + + 3/31 + ---- +variables.c + - bind_variable_internal: dynamic variables with assignment functions + now honor the readonly attribute by giving an error. Fixes issue + reported by Rob Landley + - assign_seconds: allow seconds to be assigned using an arithmetic + expression + - assign_random: allow RANDOM to be assigned using an arithmetic + expression + +doc/{bash.1,bashref.texi} + - HISTCMD: note that assignments to HISTCMD have no effect + + 4/2 + --- +execute_cmd.c + - execute_in_subshell: make sure we note that we're not reading our + command input from a buffered stream any more, so we don't + sync the buffered stream backwards in subsequent commands this + subshell runs. Fixes bug reported by OÄuz + + 4/3 + --- +builtins/read.def + - read_builtin: if a read in posix mode is interrupted by a signal, + make sure to preserve the value of errno around calls to + check_signals and run_pending_traps so any error message isn't quite + as confusing. Issue reported by Stan Marsh + +lib/sh/zread.c + - zread: preserve value of errno (always EINTR) around calls to + check_signals or check_signals_and_traps + +trap.c + - run_debug_trap: allow suppress_debug_trap_verbose being set to + turn off `set -v' temporarily while executing the DEBUG trap (if + it's set) + +builtins/fc.def + - set suppress_debug_trap_verbose so set -v won't be in effect while + the DEBUG trap runs. Most recently reported by Ami Fischman + ; originally raised by Boruch Baum + back in 10/2017 + + 4/6 + --- +lib/readline/display.c + - puts_face,putc_face: new functions to write strings or characters to + the display while handling standout mode + - update_line,_rl_move_cursor_relative: take additional argument(s) + describing the visible and invisible faces corresponding to the + visible and invisible lines, respectively + +lib/readline/readline.c + - _rl_enable_bracketed_paste: for the time being, initialize to 1 (on + by default) + +trap.c + - run_interrupt_trap: set pending_sigs[SIGINT] and catch_flag to 0 + since run_pending_trap usually does these things + +sig.c + - throw_to_top_level: only call the SIGINT trap if there is a SIGINT + trap pending (shouldn't matter, just a check) + +bashline.c + - bash_event_hook: try to identify the signal of interest we've + received + - bash_event_hook: if in posix mode running the read builtin, and we + get a (trappped) SIGINT, throw to top level so we can interrupt + the read. From a report by Robert Elz + + 4/7 + --- +lib/readline/display.c + - update_line: make sure to update and compare face data at the same + time as comparing old and new line data: the lines are only the same + if the face information and character information are identical + (ofd, ols, etc.) + - update_line: make sure to copy face data along with line data + - update_line: use puts_face in place of _rl_output_some_chars to + output face data along with line data + - _rl_move_cursor_relative: when we write characters, make sure to take + the face data into account using puts_face + [END OF INTEGRATION OF ACTIVE MARK AND FACE PATCHES from + Daniel Colascione ] + +{jobs,nojobs}.c + - make_child: to avoid installing a handler for SIGTERM in interactive + shells, and avoid race conditions with child processes resetting the + SIGTERM signal handler to the default, block SIGTERM and then + reset the SIGTERM handler to SIG_DFL before fork, then reset the + handler to SIG_IGN and unblock it in the parent after fork() returns. + Fix for readline and SIGTERM handling reported by Chris Down + (original change was back in 2/2013) that + allows a bash waiting in readline() for input to be killed with a + SIGTERM sent by another process + - take out calls to RESET_SIGTERM, no longer needed + +execute_cmd.c + - execute_in_subshell,execute_simple_command,execute_disk_command: + remove calls to CHECK_SIGTERM, since we don't install a handler + any more + +lib/readline/readline.c + - _rl_enable_bracketed_paste: enabled by default for the time being + + 4/9 + --- +jobs.h + - JWAIT_WAITING: new flag for wait functions; means only wait for jobs + with the J_WAITING flag set + - J_WAITING: new job flag, part of arg list to `wait -n' + - IS_WAITING(i): job i has the J_WAITING flag set + +jobs.c + - wait_for_any_job: if the flags includes JWAIT_WAITING, we only return + jobs with the J_WAITING flag already set; otherwise we skip them. + For `wait -n args' support + +builtins/wait.def + - set_waitlist: take a list of jobspecs and set the J_WAITING flag in + each valid job from the list + - unset_waitlist: turn off the J_WAITING flag for all jobs where it's + set + - wait_builtin: if -n is supplied with a list of arguments, set the + J_WAITING flag in each job in the list, call wait_for_any_job with + the JWAIT_WAITING flag, and clean up by calling unset_waitlist(). + From a suggestion from Robert Elz back in 3/2019 + (originally in 10/2017) + + 4/11 + ---- +lib/readline/display.c + - update_line: in step 5b of the line wrapping prompt code, make sure + OFDF and NFDF are set before performing a dumb update + + 4/12 + ---- +sig.c + - termsig_handler: make sure to restore TOP_LEVEL_SIGMASK before + resending a terminating signal to ourselves, in the event that this + is called in a signal handler context with the terminating signal + blocked. Inspired by a report from + + 4/13 + ---- + +lib/readline/text.c + - rl_newline: if the region is active, call rl_redisplay to clear + standout mode before returning + +lib/readline/display.c + - norm_face: new function to mark a portion of the invisible face + buffer as normal text (no standout) + - rl_redisplay: if the line consumes more than a screen's worth of + lines, mark the lines that are off the top of the display as having + a `normal' face + + 4/14 + ---- +variables.c + - LINENO: no longer has the integer attribute, since it does not take + arithmetic expressions on assignment (use $((expr)) instead) + +lib/readline/mbutil.c + - _rl_find_prev_utf8char: new function, uses the structure of UTF-8 + characters to find the start of the previous one no matter where we + start: at the beginning of the next character, at the end of a + multibyte character, or in the middle of a multibyte character. + EXPERIMENTAL + - _rl_find_prev_mbchar_internal: for now, call _rl_find_prev_utf8char + if we are in a UTF-8 locale. EXPERIMENTAL + + 4/15 + ---- +lib/readline/mbutil.c + - _rl_utf8_mblen: changes to handle invalid multibyte sequences better, + even when N means that the sequence would be too short anyway + +examples/loadables/csv.c + - csv: new loadable builtin to parse a line of csv data and store it + into an array supplied as an argument + + 4/16 + ---- +examples/loadables/cut.c + - cut: new loadable builtin + - lcut: new builtin that does what cut does but on a string supplied + as an argument (only one string for now) + + 4/17 + ---- +jobs.h + - FORK_SYNC,FORK_ASYNC,FORK_NOJOB: new flag values for the second + argument to make_child + +jobs.c + - make_child: now takes a set of flags as the second argument + +execute_cmd.c + - make_child: change callers to pass FORK_ASYNC instead of a non-zero + value as the second argument + +subst.c + - make_child: change callers to pass FORK_ASYNC instead of a non-zero + value as the second argument + +doc/{bash.1,bashref.texi} + - document that the words in a compound array assignment undergo all + the shell word expansions, including filename generation and word + splitting. From a report from E. Choroba + + 4/18 + ---- +subst.c + - command_substitute: use JOB_CONTROL instead of INTERACTIVE in the + test to determine whether or not to give the terminal back to + pipeline_pgrp + +jobs.c + - make_child: if FORK_NOTERM is set in the flags argument, don't call + give_terminal_to + +{jobs,nojobs}.c,jobs.h + - wait_for: now takes a second argument, a flags word + +{execute_cmd,subst}.c + - wait_for: change all callers to add second argument to wait_for + +jobs.c + - wait_for: if JWAIT_NOTERM is set in the flags argument, don't call + give_terminal_to + + 4/19 + ---- +subst.c + - command_substitute: block SIGINT around call to read_comsub, so we + let any interrupts affect the command substitution. Fixes issue + reported by DALECKI Léo + +hashcmd.h + - FILENAME_HASH_BUCKETS: increase to 256 + +assoc.h + - ASSOC_HASH_BUCKETS: new define, set to 1024 + +variables.c + - make_new_assoc_variable,make_local_assoc_variable: call assoc_create + with ASSOC_HASH_BUCKETS as argument. This changes the hash function + and how the array keys are ordered (which is not guaranteed) + +builtins/read.def + - read_builtin: in posix mode, or if the read call returns -1/EINTR, + don't call run_pending_traps until the read command returns. This + allows a trap action to see the same exit status that the read + builtin would return when it exits on a signal (e.g., SIGINT == 130). + From a suggestion by + + 4/20 + ---- +hashlib.c + - hash_rehash: function to rehash a table, after increasing or decreasing + the number of buckets. From patches from Thomas Kremer + (https://savannah.gnu.org/patch/?9850) and Koichi Murase + + - hash_grow,hash_shrink: grow or shrink a hash table by a factor of + HASH_REHASH_MULTIPLIER (4) + - hash_insert,hash_search: call hash_grow if necessary + +arrayfunc.c + - convert_var_to_{array,assoc}: if the original variable had no value + (it was unset), the array variable should be unset as well. Reported + by andrej@podzimek.org + + 4/21 + ---- +bashline.c + - set_saved_history: change logic used to decide where in the history + operate_and_get_next should start by using a logical offset into the + history list that is an offset from history_base. This avoids having + to take whether or not the history is stifled and full into account. + Report and fix from Greg Price + - operate_and_get_next: just calculate the logical offset of where we + should be in the history instead of an absolute offset + +lib/readline/input.c + - _rl_nchars_available: new function, returns the number of characters + available to be read if FIONREAD is available + + 4/22 + ---- +lib/readline/{readline.c,rlprivate.h} + - _rl_pending_command: new struct to hold information about a pending + command for readline to execute when the current command completes. + A command can set this up so that it gets executed like a + continuation before redisplay + +lib/readline/readline.c + - readline_internal_charloop: after _rl_dispatch returns, check + _rl_command_to_execute, and, if it's non-zero, redisplay and then + execute it as a command + - added a small set of library-private functions for managing the + executing key sequence (not used yet) + +lib/readline/isearch.c + - _rl_isearch_dispatch: if we have found an opcode or have added a + character to the search string and searched for it, reset the keymap + and okeymap members of the search context in preparation for reading + another key sequence/opcode + - _rl_isearch_dispatch: if we read a key sequence bound to an editing + command that is not an `opcode', set up _rl_command_to_execute to + execute it after the searching returns and arrange to break out of + the search + - _rl_isearch_dispatch: if we paste in text from bracketed paste, set + the mark as active so we can highlight it when we display the search + string + - _rl_isearch_dispatch: if we've found the search string, activate the + mark and set rl_point and rl_mark so the search string is highlighted + when we display the search results + - _rl_isearch_dispatch: do translation for keys that map to + rl_do_lowercase_version like we do when dispatching while reading a + key sequence + + 4/23 + ---- +lib/readline/isearch.c + - _rl_isearch_dispatch: if bracketed paste mode is enabled and there are + enough characters waiting in the terminal's input queue, try to read + the bracketed paste prefix and jump straight to the opcode execution + if we read it. Otherwise, just go on with the ESC. Inspired by report + from + +parse.y + - parse_comsub: posix-mode shells don't allow a closing right paren to + delimit a pending here-document -- it requires the newline + +doc/bashref.texi + - POSIX mode: updated posix mode description with the new here-document + delimiter requirement + +lib/readline/search.c + - _rl_nsearch_dispatch: if bracketed paste mode is enabled, and we read + an ESC, try to see if we have a bracketed paste op and insert the + pasted next. If we don't, go on with the ESC + - _rl_nsearch_dosearch: experimental code to highlight the search string + when displaying the line found in the history. Only done when we are + not searching for a pattern, since we don't have information on the + end of the matching portion of the line. Experimental because it + changes where we put point and mark if searching is successful + +expr.c + - expr_streval: if find_variable for the case where the string is not + an array reference doesn't find anything, see if we can find + something by using find_variable_last_nameref and use the value + from there in the call to expr_streval, kind of using the expression + recursion to complement the nameref recursion. Report from + Daniel Molina + + 4/24 + ---- +jobs.c + - {start,stop}_pipeline: don't reset pipeline_pgrp to 0 if it's already + the same as shell_pgrp, since we don't want to reset it in the middle + of a shell started to run a command or process substitution (after + forking a child to run one command, but before forking another, for + instance). Reported by Rob Landley + + 4/27 + ---- +parse.y + - function_def: break the productions starting with `function' without + `()' into two productions to avoid a shift-reduce conflict. Report + and patch from Dale R. Worley + +variables.h + - localvar_inherit: add extern declaration here + +subst.c + - shell_expand_word_list: take out change from 3/17 to pass -I to + make_internal_declare; it generates errors the user will find + confusing if there is a variable with the same name but a different + type at a previous scope + - shell_expand_word_list: check for and note whether or not -I is + supplied to the declaration command, since it changes the default + behavior of a compound assignment without -a or -A + - shell_expand_word_list: if we have a compound assignment that is an + argument to a declaration command, but there are no options supplied + to the command that determine the type of the array, make sure we + call make_internal_declare with either -a (no localvar_inherit or -I) + or at least -- (if we are inheriting), because we don't want the + declare to get skipped before we perform the word assignment. Fixes + bug reported by Ross Goldberg + + 4/28 + ---- +subst.c + - expand_declaration_argument: new function, broke code that handles + compound assignments that are arguments to declaration commands out + of shell_expand_word_list into this function. No functional change + yet + + 4/29 + ---- +subst.c + - expand_compound_assignment_word: helper function for + expand_declaration_argument: takes NAME[+]=( VALUE ), converts VALUE + to a list of words, then single-quotes each word and reconstructs + the original word. This assumes the result will go to + do_word_assignment, which will remove the single quotes + - expand_oneword: helper function for expand_compound_assignment_word, + takes VALUE and performs the splitting into words, and then the + expansion and single-quoting of each individual word. Indexed and + associative arrays take different code paths, because they undergo + different expansions and associative arrays need special handling to + avoid having to scan for the end of the subscript multiple times + - expand_declaration_argument: call expand_compound_assignment_word to + get the expansion-before-calling-builtins word expansion sequence + correct. Better fix for for bug report from Kevin Locke + , + https://savannah.gnu.org/support/index.php?109669 + +arrayfunc.c + - quote_array_compound_word: take [IND]=VALUE and convert it to + ['IND']='VALUE'. Called by quote_compound_array_list for each word + in the list + - expand_and_quote_assoc_qword: take [KEY]=VALUE and convert it to + ['expanded-key']='expanded-value' (or VALUE to 'expanded-value'). + Called by subst.c:expand_oneword() for each word in the list + - quote_compound_array_list: take a list of words and convert each + [IND]=VALUE to ['IND']='VALUE' (or just 'VALUE' if there is no + [IND]=). Used for indexed arrays + +arrayfunc.h + - expand_and_quote_assoc_word,quote_compound_array_list: new extern + declarations + + 4/30 + ---- +doc/{bashref.texi,bash.1} + - rework description of reserved words a little; add a reserved words + node to bashref.texi. Based on a report from Dale R. Worley + + +builtins/history.def + - history_builtin: if the shell is restricted, don't allow pathnames + with slashes to be read or written. From a report from + Diffie + +shell.c + - maybe_make_restricted: add HISTFILE to the list of readonly variables + +doc/{bashref.texi,bash.1} + - document new restricted shell restrictions + + 5/1 + --- +jobs.c + - wait_for: don't try to give the terminal to shell_pgrp if JWAIT_NOTERM + is set in the flags argument + +subst.c + - command_substitute: call make_child with FORK_NOTERM flag so it + doesn't try to set the terminal's process group + - command_substitute: call wait_for with JWAIT_NOTERM so it doesn't + try to set the terminal's process group + - command_substitute: now that wait_for doesn't try to reset the + terminal's process group, remove the code that tries to clean up + after that + + 5/4 + --- +doc/bash.1 + - make sure to mention /etc/inputrc as the ultimate default readline + init file, like other documentation does. Update from + Greg Price + +lib/readline/readline.c + - if the private startup hook function variable _rl_internal_startup_hook + is set, execute that after any user-specified startup hook + +lib/readline/rlprivate.h + - _rl_internal_startup_hook: new extern declaration + +bashline.c,lib/readline/{misc.c,readline.h} + - operate_and_get_next: moved to rl_operate_and_get_next so it's + available to all readline programs, uses _rl_internal_startup_hook. + Based on patch from Greg Price + +lib/readline/funmap.c + - "operate-and-get-next": now a bindable readline command + +lib/readline/emacs_keymap.c + - rl_operate_and_get_next: bound to ^O in emacs mode by default + +doc/bash.1,lib/readline/{readline.3,rluser.texi} + - operate-and-get-next: move to readline section of the manuals, out of + bash-specific functions section + + 5/5 + --- +hashlib.c + - hash_string: use a series of shifts and adds to avoid a multiply by + FNV_PRIME. From Landon Curt Noll's FNV web page + +builtins/fc.def + - fc_gethist,fc_gethnum: now take an additional argument indicating the + operating mode: if the arg is 1, fc is listing commands; if it is 0, + fc is executing commands. Affects how -0 is handled (fc_gethnum + returns -1). Changed callers to handle the return value appropriately. + Report from Jason Franklin about + seg fault and core dump + - fc_builtin: if fc_gethnum returns < 0 when setting histbeg or histend, + report a range error + +doc/bash.1,lib/readline/doc/hsuser.texi + - fc: document how 0 and -0 are treated for listing and executing + +shell.c + - run_one_command: call parse_and_execute with SEVAL_RESETLINE so the + line number gets set to 1. Reported by Rob Landley + + 5/8 + --- +support/config.{guess,sub} + - update to latest versions + +configure.ac + - add support for `genode' from Emery Hemingway + + 5/14 + ---- +test.c + - term: fix case where an argument that looks like a unary operator, + but doesn't have enough tokens left to have an argument to that + operator, was not being treated as a one-argument test. Affects + only uses of test with four and greater arguments, which posix says + are unspecified. This is a bug, or at least an incompatibility, at + least 30 years old. + - test_command: if there are unconsumed arguments, call test_syntax_error + with a `syntax error' argument if the first remaining argument starts + with a `-'. Better than a generic `too many arguments' error + + 5/19 + ---- +configure.ac,config.h.in + - getrandom: add test, define HAVE_GETRANDOM + - getentropy: add test, define HAVE_GETENTROPY + +variables.c + - get_urand32: use getrandom; provide imperfect emulation that uses + getentropy if available, and falls back to reading /dev/urandom if + that's not available. The idea is to use /dev/urandom as little as + possible + + 5/20 + ---- +configure.ac + - updated version to 5.1-alpha + +lib/readline/readline.h + - updated defines to readline version 8.1 + +variables.c + - brand: if shell_compatibility_level is 50 or below, don't xor the + top and bottom halves of the 32-bit random number together, since + previous versions did not + + 5/21 + ---- +COMPAT + - overhauled and updated the descriptions of the various shopt compatNN + options + +doc/bashref.texi + - Shell Compatibility Mode: new section, describes compatibility levels, + BASH_COMPAT, and the various compatNN shopt options + + 5/23 + ---- +doc/bash.1 + - added Shell Compatibility mode section + +doc/{bash.1,bashref.texi} + - changed shopt section to list the compatibility options and refer + to Shell Compatibility Mode section + - BASH_COMPAT: overhauled the text, refers to Shell Compatibility Mode + section + + 5/27 + ---- +variables.c,/lib/sh/random.c + - moved functions that manage 16-bit and 32-bit random values to + lib/sh/random.c + +alias.c + - add_alias: don't bother checking null alias values for ending in + space or tab + +braces.c,include/typemax.h + - move sh_imaxabs and overflow and underflow detection to typemax.h + so the expression evaluation code can use it in the future + + 5/28 + ---- +lib/readline/kill.c + - _rl_bracketed_read_mbstring: make sure to fill in mb[0] even if + the locale says MB_CUR_MAX == 1 in case a caller uses it. Partial + fix for bug reported by Phi Debian + +lib/readline/vi_mode.c + - rl_vi_change_char: make sure _rl_vi_last_replacement gets filled in + in the case where MB_CUR_MAX == 1. Rest of fix for bug reported by + Phi Debian + - _rl_vi_callback_change_char: same fix for _rl_vi_last_replacement + + 5/29 + ---- +lib/malloc/malloc.c + - __P -> PARAMS + - union mhead: now 16 bytes to force 16-byte alignment; extra 8 bytes + at the end of struct minfo to use for guard bytes. Enabled if + pointers are 64 bits (SIZEOF_CHAR_P == 8) + - if we have 64-bit pointers, prepopulate the 64-byte bin first instead + of the 32-byte bin (pointers and WORD_DESCs still fit into 32 bytes, + but WORD_LISTs are now 36 bytes with malloc overhead). We can still + split 64-byte blocks to satisfy 32-byte requests + - internal_malloc: fill in the new 8 mh_magic8 bytes with MAGIC1 guard + bytes + - internal_malloc: print a warning message if the returned pointer is + not aligned according to MALIGN_MASK + - internal_free: detect underflow by checking that mh_magic8 is full + of MAGIC1 bytes + - internal_realloc: detect underflow by checking that mh_magic8 is full + of MAGIC1 bytes + +lib/malloc/stats.c + - _print_malloc_stats: slight adjustment for better column alignment + + 6/1 + --- +execute_cmd.c + - execute_command_internal: treat a redirection failure with errexit + set as a command failure that exits the shell. Bug report from + Hyunho Cho + + 6/3 + --- +redir.c + - redirection_error: takes a new argument, FN, which if non-NULL is + the filename to be used in the error message. + +redir.[ch],builtins/evalstring.c + - redirection_error: changed extern declaration and callers + +redir.c + - do_redirection_internal: takes a new third parameter, FNP, a char ** + to use (*FNP, if non-NULL) to store and return the expanded filename + for those redirections that take one + - do_redirections: pass a char ** (&fn) to do_redirection_internal to + get a pointer to the expanded filename; pass it to redirection_error + if appropriate. Free FN in any case, since do_redirection_internal + won't. Fix for double expansion of filename in certain redirections + reported by OÄuz + + 6/4 + --- +parse.y + - parse_comsub: while we're reading a here-document, don't perform any + history expansion (set history_expansion_inhibited). Fixes issue + reported by "ladyrick" + +general.h,parse.y + - __P -> PARAMS + +shell.c + - shellstart: struct timeval used to initialize shell starting time; + shell_start_time now initialized from shellstart.tv_sec + +variables.c + - assign_seconds: reset shellstart to set shell starting time + +pcomplete.c + - include posixtime.h instead of + +lib/sh/{ufuncs,uconvert}.c + - include posixtime.h instead of the inline conditional includes + +aclocal.m4 + - BASH_STRUCT_TIMEVAL: convert to use AC_COMPILE_IFELSE instead of the + deprecated AC_HEADER_EGREP + +posixtime.h + - struct timeval: if HAVE_TIMEVAL is not defined, provide a replacement + definition + +lib/sh/gettimeofday.c + - gettimeofday: replacement function, so we don't have to use + HAVE_GETTIMEOFDAY in the rest of the code + + 6/5 + --- +{lots of files}.[ch] +builtins/{lots of files}.{c,h,def} +lib/glob/{lots of files}.[ch] +lib/malloc/{lots of files}.[ch] +lib/sh/{lots of files}.c +include/{lots of files}.h +examples/loadables/{lots of files}.c + - __P -> PARAMS + +doc/{bash.1,bashref.texi} + - SECONDS: clarify that the number of seconds is always determined by + querying the system clock + + 6/8 + --- +configure.ac + - if CFLAGS is not supplied in the environment or on the command line, + add the gcc options that suppress warnings about parens and print + formats in a slightly different way that will avoid some collisions + +lib/readline/readline.c + - _rl_dispatch_subseq: don't set rl_last_func to rl_vi_arg_digit, just + the same as if it were rl_digit_argument. This allows functions like + rl_yank_last_arg, which behave differently when called multiple times + in a row, to work closer to what is expected. This allows what + Leo Alekseyev reported to work, with caveats + +lib/readline/vi_mode.c + - rl_vi_yank_arg: make sure to pass `key' to rl_yank_nth_arg, in case + it needs to use it later + - rl_vi_redo: suppress attempts to redo `.' when the current keymap is + vi_movement_keymap, since that will recursively call vi_redo + + 6/11 + ---- +redir.c + - limit HEREDOC_PIPESIZE to 4096 on FreeBSD; that is where it can + handle atomic writes without hanging. Tested on FreeBSD 13 + +[bash-5.1-alpha frozen] + + 6/15 + ---- +subst.c + - do_assignment_internal: call stupidly_hack_special_variables on the + name returned from the variable assignment, in case there was a + nameref expansion, and on the original name only if the assignment + returned NULL. Fixes bug reported by James D. Lin + + 6/16 + ---- +builtins/hash.def + - hash_builtin: don't print anything if the hash table is empty when + listing portably (-l) unless the shell compatibility level is <= 50 + Issue originally raised by + + 6/17 + ---- +pathexp.c + - glob_name_is_acceptable: extend GLOBIGNORE to ignore `.' and `..' + as a terminal pathname component instead of just ignoring filenames + that are `.' or `..'. From a suggestion by Ilkka Virta + + + 6/18 + ---- +po/Makefile.in.in + - MKINSTALLDIRS: deprecated, no longer in AM_INTL_SUBDIR, so we have + to create the variable manually + +lib/readline/doc/rltech.texi + - add descriptions of the active mark functions that are available to + applications. I guess they will remain public + +subst.c + - valid_parameter_transform: new function, reject transformations + longer than a single character or invalid transformation operators + - parameter_brace_transform: call valid_parameter_transform + + 6/22 + ---- +lib/sh/zread.c + - lbuf: bump size up to ZBUFSIZ (default 4096). From a report by + Jason A. Donenfeld + +lib/sh/zcatfd.c + - zcatfd: lbuf: bump size up to ZBUFSIZ (default 4096) + +lib/sh/zmapfd.c + - zmapfd: lbuf: bump size up to ZBUFSIZ (default 4096) + + 6/29 + ---- +aclocal.m4 + - BASH_FUNC_SBRK: changes for cross-compiling on FreeBSD variants, + from Jessica Clarke + +xmalloc.c + - HAVE_SBRK: use #if instead of #ifdef so we only use it if we think + it works + +examples/loadables/finfo.c + - st_dev,st_nlink: cast to unsigned long, report from Jessica Clarke + + +unwind_prot.c + - unwind_protect_mem_internal: make sure we allocate at least as many + bytes for an entire UNWIND_ELT. Fix from Jessica Clarke + + + 7/1 + --- +eval.c + - alrm_catcher: use write(2) instead of fprintf to print the + auto-logout message to the terminal + +jobs.c + - UNQUEUE_SIGCHLD: set queue_sigchld to 1 around call to waitchld(), + since it is not being called from a signal handler and so SIGCHLD is + not blocked. Fixes report by Godmar Back + + 7/2 + --- +doc/{bash.1,bashref.texi} + - read: clarify that without any name arguments, the line assigned to + REPLY is not modified. From a question by M. Nejat AYDIN + with input from Eli Schwartz + + + 7/5 + --- +lib/readline/vi_mode.c + - _rl_vi_done_inserting: make sure to close out all undo groups when + leaving insert mode, so we don't have anything dangling. + Report and fix from David Fries + + 7/6 + --- +lib/readline/vi_mode.c + - _rl_vi_domove_motion_cleanup: the `c' and `C' commands should enter + insert mode even if the motion command doesn't delete any text. + From a report by David Fries + - _rl_vi_done_inserting: add a missing rl_end_undo_group when + _rl_vi_doing_insert is set: there should be one begun by + rl_vi_start_inserting and one begun by the command (change or replace). + From a report by David Fries + - rl_vi_replace: set _rl_vi_last_key_before_insert to 'R' explicitly, + since other code checks that and we want to allow users to rebind + this function + + 7/7 + --- +lib/readline/vi_mode.c + - rl_vi_{delete,change,yank}_to: if we have a non-null _rl_vimvcxt, + just reinitialize it so we don't have to allocate a new one. This is + a change primarily for callback mode, and fixes a memory leak + +builtins/evalstring.c + - optimize_shell_function: try to optimize away the fork in the last + command in a shell function body, under certain conditions + +execute_cmd.c + - execute_function: attempt to optimize away forks in a shell function + that is already marked NO_FORK and being executed in a command + substitution + + 7/8 + --- +{jobs,nojobs,trap,unwind_prot}.c,lib/malloc/{malloc,table}.c + - interrupt_immediately: remove, no longer used + +jobs.c + - waitchld: don't perform asynchronous notification if we are currently + executing a builtin (executing_builtin != 0). Inspired by a report + from Godmar Back + + 7/9 + --- +lib/readline/signals.c + - _rl_handle_signal: block SIGTTOU while handling a SIGTTOU, since we + no longer run this in a signal handling context where SIGTTOIU would + be blocked + + 7/14 + ---- +execute_cmd.c + - execute_simple_command: use new variable `cmdflags' instead of using + simple_command->flags directly; initialize from simple_command->flags + - check_command_builtin: take a simple command list of words starting + with `command' and including a command_word argument, and peel off + the `command' and any instances of `-p' and `--' and return the + updated list + - execute_simple_command: if the first word of the simple command is + `command', call check_command_builtin to peel off any `command' and + `-p' and `--' and go on to execute the rest of the words as a simple + command. If we're in posix mode, we've got the special builtins + handled before this runs. Fixes complaint about `command' in the + background running an extra bash process from Dmitry Alexandrov + + + 7/17 + ---- +doc/bash.1 +lib/readline/doc/{rltech,hstech,rluser}.texi +lib/readline/doc/{readline,history}.3 + - a few small tweaks to make the language gender-neutral + + 7/18 + ---- +subst.c + - expand_word_internal: case `:' make sure the shell is either not in + posix mode or W_TILDEEXP is set before turning on W_ITILDE. The old + code would turn it on unconditionally if the W_ASSIGNMENT flag was + set. Fixes bug reported by OÄuz + + 7/20 + ---- +builtins/complete.def + - replace macros used to print compspec actions, options, and other + info with a small set of functions that traverse the structs used + to hold that information and print everything instead of eumerating + each option and action separately. From a patch submitted by + Martin Kealey + + 7/27 + ---- +variables.c + - push_posix_tempvar_internal: restore $SHELLOPTS after restoring the + values of shell options saved by `local -' by calling set_shellopts(). + Report from Grisha Levit + +flags.c + - reset_shell_flags: set histexp_flag to 0 and let bash_history_reinit + take care of setting history_expansion appropriately. Report and fix + from Grisha Levit + + 7/28 + ---- +general.c + - assignment: if (FLAGS & 1), we are parsing the contents of a compound + assignment, and a word must begin with a `[' and have a valid + subscript terminated by `]' before the `=' to be considered an + assignment statemen and subsequently expanded like one. Report from + Alexey Izbyshev + + 7/30 + ---- +lib/glob/sm_loop.c + - BRACKMATCH: if the bracket expression is matching simple characters + and not a range, compare the character from the string and the + pattern directly, as required by Posix interp 948 + +lib/glob/smatch.c + - charcmp_wc: split off code that calls wcscoll from rangecmp_wc, + just return the results of wcscoll + - rangecmp_wc: call charcmp_wc and impose a total ordering + by performing a byte comparison (or wint_t comparison) of C1 and C2 + as required by Posix interp 948 (charcmp_wc takes care of the + behavior of FORCECOLL) + - collequiv_wc: call charcmp_wc instead of rangecmp_wc + - charcmp: character comparison code from rangecmp + - rangecmp: call charcmp and impose total ordering as required by + Posix interp 948 + - collequiv: call charcmp instead of rangecmp + - _fnmatch_fallback: ASCII version of fallback for equivalence classes + when there are no multibyte characters in the pattern; just calls + fnmatch with a reconstructed equivalence class pattern + - collequiv: call _fnmatch_fallback if charcmp returns non-zero and + the configure check indicates fnmatch has character class support. + Fixes issue reported by Harald van Dijk + + 8/2 + --- +lib/readline/signals.c + - _rl_handle_signal: since we're not called in a signal handler context + any more, we don't need to explicitly unblock the signal we received + so the application's signal handler will get it when we resend the + signal to ourselves. It doesn't hurt anything to do it, but we don't + have to + - _rl_handle_signal: Set up a framework for any signals that need to + be blocked during cleanup: add the signal to SET (initialized to the + existing set of blocked signals) and set BLOCK_SIG to 1. We block + that set around the call to rl_cleanup_after_signal(). + - _rl_handle_signal: on AIX, if the signal is SIGHUP, make sure we + block SIGHUP while running rl_cleanup_after_signal() + + 8/3 + --- +jobs.c + - start_job: don't allow `fg' or `bg' in a command substitution to + attempt to start a parent's jobs. Suggested by OÄuz + + +builtins/set.def + - set_current_options: only call change_flag or SET_BINARY_O_OPTION_VALUE + if the value has changed from what is stored in the bitmap, to avoid + any side effects from setting the options and save time on any + unnecessary function calls. Inspired by report from Grisha Levit + + +parse.y + - xparse_dolparen: before we jump to top level, check whether we are + still reading from the string (we might have run all the unwind- + protects) and turn off PST_CMDSUBST if we are not. Fixes fuzzing + bug reported by Jakub Wilk + + 8/4 + --- +subst.c + - process_substitute: set subshell_environment to include SUBSHELL_ASYNC + in the child process, since we passed FORK_ASYNC to make_child. Fixes + DEBUG trap problem reported by Jonathan Rascher + +subst.c + - unlink_all_fifos: new function, just unconditionally closes and + unlinks (if using FIFOs) each pipe used for process substitution. + There is an open to unblock any child processes sleeping on the + FIFO first. Inspired by a suggestion from "CHIGOT, CLEMENT" + + +shell.c + - exit_shell: call unlink_all_fifos() instead of unlink_fifo_list() + +sig.c + - termsig_handler: call unlink_all_fifos() instead of + unlink_fifo_list() + + 8/5 + --- +arrayfunc.c + - quote_compound_array_list: turn empty strings into '' instead of + leaving them unmodified. Fixes bug in changes from 4/29 reported + by andy_bash + + 8/10 + ---- +bashline.c + - edit_and_execute_command,bash_execute_unix_command: restore the bash + signal handlers before running parse_and_execute() so bash will catch + and handle signals, instead of letting readline catch them without + any opportunity to run _rl_handle_signal(). Fixes bug reported by + Stan Marsh + + 8/11 + ---- +builtins/fc.def + - fc_gethnum: return HIST_INVALID for -0 if not in listing mode + - fc_builtin: throw an out-of-range error if histbeg or histend gets + set to HIST_INVALID + - fc_builtin: don't throw errors for other out-of-range history + specifications, clamp them at the beginning or end of the history + list, as appropriate, per POSIX. Report and fix from Martijn Dekker + + + 8/12 + ---- +builtins/fc.def + - fc_gethnum: return HIST_NOTFOUND (new error) if the string is not a + number and doesn't correspond to any command in the history list + - fc_builtin: print a "no command found" error message if fc_gethnum + returns HIST_NOTFOUND + + 8/14 + ---- +flags.c + - no_invisible_vars: removed undocumented `-I' flag + +{flags,variables}.c,flags.h,builtins/{declare,setattr.def} + - no_invisible_vars: remove all references + +command.h + - PF_ALLINDS: new flag, means to expand an array variable name without + a subscript as if it were subscripted by `@' instead of `0' + +subst.c + - parameter_brace_expand_word: if PFLAGS contains PF_ALLINDS, expand + an array variable name as if it were subscripted by "@" instead of + 0/"0": a string with the element values separated by " ". Little + nuance; we're just interested in whether or not there are any + values at all + - parameter_brace_expand: if we are expanding something like ${foo@a}, + pass PF_ALLINDS to parameter_brace_expand_word and + parameter_brace_expand_indir so we don't get tripped up on `nounset' + if foo has an assigned subscript other than 0/"0". Inspired by a + report from Andrew Neff + + 8/17 + ---- +bashhist.c + - bash_add_history,maybe_add_history: don't need to call shell_comment + if we are in the middle of adding a here-document, since it may + call the parser recursively on data that is not guaranteed to be + valid input. From a report by Hyunho Cho + + 8/24 + ---- +lib/readline/complete.c + - compare_match: compare TEXT from the line buffer and MATCH, a + possible completion for TEXT, after dequoting TEXT if necessary + - rl_complete_internal,rl_menu_complete : if show-all-if-unmodified is + set, use compare_match instead of a straight strcmp to determine if + the match has changed the text to complete, so we can use it for + filenames that require quoting. Report and pointer to fix from + Abon B + + 8/25 + ---- +eval.c + - execute_prompt_command: PROMPT_COMMAND can now be an array, subsuming + PROMPT_COMMANDS, which bash no longer looks for. Prompted by a + suggestion from Martijn Dekker + + 8/26 + ---- +builtins/fc.def + - fc_gethnum: now takes a flags word as the third argument, with two + current flag values: HN_LISTING, which means we are listing history + entries, and HN_FIRST, which means we are parsing the first in a + first,last range of history entries + - fc_gethnum: if we have a number >= 0, and it's out of range, return + different values (0 or last history) depending on whether we are + parsing the first or last in a range argument. Based on a report from + Martijn Dekker + + 8/31 + ---- +parse.y + - grammar: call handle_eof_input_unit from the eof-after-error + production only from interactive top-level shells, so a syntax error + in `eval' doesn't exit an interactive shell. Report and fix from + Koichi Murase + +bashline.c + - bash_execute_unix_command: if we call parse_and_execute with allocated + memory, make sure not to include SEVAL_NOFREE in the flags so it will + free that command string before returning. Report and fix from + Koichi Murase + +array.[ch] + - array_to_argv: now takes a second argument: COUNTP; returns the number + of elements stored in the strvec + - array_to_argv: don't store array elements with null values; it makes + it hard for callers to walk the whole array reliably + +pcomplete.c + - gen_shell_function_matches: change call to array_to_argv + +array.h + - execute_array_command: now takes the entire ARRAY * as the first + parameter + +eval.c + - execute_array_command: now takes the entire array, puts the elements + into a strvec, and executes each element of the strvevc as a command. + This protects against a command from PROMPT_COMMAND[n] unsetting the + corresponding element of PROMPT_COMMAND. + From a report from Koichi Murase + + 9/7 + --- +[bash-5.1-beta frozen] + + 9/8 + --- +lib/readline/display.c + - _rl_update_final: don't bother doing anything if the line structures + have not been initialized. Report and fix from gary@catalyst.net.nz + +variables.c + - get_histcmd: perform the same adjustment as in prompt_history_number; + make sure to subtract one if we're doing this while executing a + command that has already been saved to the history list. Inspired + by a report from L A Walsh + + 9/14 + ---- +aclocal.m4 + - BASH_STRUCT_WEXITSTATUS_OFFSET: fix typo in loop condition reported + by Andreas K. Hüttel + +syntax.h + - slashify_in_here_document: restore previous value that doesn't + include double quote, since it's only special in certain cases + +subst.c + - expand_word_internal: when processing backslash-double quote inside + a ${...} construct inside a here documemt, treat it the same as if + it were double-quoted, as posix says. Fixes report from + Andreas Schwab + + 9/15 + ---- +support/signames.c + - added a number of more esoteric signal names from AIX and Solaris + +parse.y + - report_syntax_error: make sure that the exit status is only set to + one of the special builtin exit statuses if we are really executing + a builtin here, not just if parse_and_execute_level > 0. Reported by + Rob Landley + +execute_cmd.c + - EX_BADSYNTAX: make sure that gets translated into EX_BADUSAGE (2) + - execute_simple_command: if a function returns a value greater than + EX_SHERRBASE, use builtin_status to translate it, as if a builtin + were being executed + - builtin_status: make sure a status > EX_SHERRBASE gets translated to + EXECUTION_FAILURE + + 9/21 + ---- +subst.c + - process_substitute: set up input from /dev/null (standard for an + asynchronous process) only if the shell is interactive and reading + input from the terminal. This allows scripts to use process + substitution to filter stdin. From a report from + Andreas Schwab + + 9/23 + ---- +doc/{bash.1,bashref.texi} + - ENV: a couple of changes clarifying that it's only used when an + interactive shell is started in posix mode. Report from + Reuben Thomas + +examples/loadables/asort.c + - asort: loadable builtin to sort an array. Contributed by + Geir Hauge + + 10/1 + ---- + +[bash-5.1-rc1 frozen] + + 10/7 + ---- +subst.c + - process_substitute: try it without setting the stdin for a process + substitution started from an interactive shell to /dev/null. We will + have to see if this causes problems like those reported back in + 9/2019 by Grisha Levit. From a report by Hyunho Cho + +lib/readline/terminal.c + - _rl_init_terminal_io: if the terminal is unknown, disable bracketed + paste on the assumption it can't handle the enable/disable escape + sequences + + 10/8 + ---- +lib/readline/terminal.c + - _rl_init_terminal_io: if the terminal name is "dumb", disable + bracketed paste mode. Suggested by + Andreas Schwab + + 10/13 + ----- +trap.[ch] + - set_trap_state: new function to allow other signal handlers to set + the internal state that trap_handler would set to note that the + shell received a trapped signal. Used by sigint_sighandler(). + +sig.c + - sigint_sighandler: call set_trap_state to set the pending trap state + for SIGINT if trap_handler is not called. Needed because + throw_to_top_level now checks whether a signal is pending before + running the trap (change from 4/2020) + +builtins/trap.def + - trap_builtin: if the shell is interactive (interactive_shell != 0) + but running something like PROMPT_COMMAND that sets + parse_and_execute_level > 0 but interactive == 0, make sure to set + the signal handler to the default interactive shell SIGINT handler + (sigint_sighandler) instead of the default non-interactive one. + Fixes bug reported by Daniel Farina with a hint + from felix + + 10/26 + ----- + +lib/readline/{readline.c,rlprivate.h} + - _rl_enable_active_region: new variable, mirrors value of + _rl_enable_bracketed_paste + - BRACKETED_PASTE_DEFAULT: new define, default initial value of + _rl_enable_bracketed_paste and _rl_enable_active_region + +lib/readline/bind.c + - hack_special_boolean_var: make sure that _rl_enable_active_region + is set appropriately when "enable-bracketed-paste" is modified + +lib/readline/isearch.c + - _rl_isearch_dispatch: make sure that we activate the mark on finding + the search string only if _rl_enable_active_region is non-zero, even + if bracketed paste is enabled + +lib/readline/search.c + - noninc_dosearch: make sure that we activate the mark on finding + the search string only if _rl_enable_active_region is non-zero, even + if bracketed paste is enabled + +lib/readline/kill.c + - rl_bracketed_paste_begin: make sure we activate the mark only if + _rl_enable_active_region is enabled + +lib/readline/isearch.c + - _rl_isearch_dispatch: the requirement for number of available unread + characters (bytes) to trigger the bracketed paste test is now + BRACK_PASTE_SLEN-1, like for non-incremental searches + + 10/29 + ----- + +doc/bash.1,lib/readline/rluser.texi + - enable-bracketed-paste: change to note the the current default is `On' + + 10/30 + ----- +lib/glob/glob.c + - wdequote_pathname: if wcsrtombs fails, make sure to check whether it + leaves wpathname set to a non-NULL value before checking whether or + not *wpathname is a null character (indicating an incomplete + conversion). Fixes https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=972286 + with an assist from Bernhard Übelacker + + 11/1 + ---- +lib/readline/isearch.c + - _rl_isearch_dispatch: when checking whether the current character is + one of the isearch `opcodes', only check the multibyte character + member of CXT if we're currently running in a multibyte locale. Don't + assume that other parts of the code will set mb[0] = c and mb[1] = 0. + Report from Detlef Vollmann + +[bash-5.1-rc2 frozen] + + 11/10 + ----- +lib/readline/isearch.c + - _rl_isearch_dispatch: if we are aborting the search, make sure to + call _rl_fix_point and to make sure the point and mark are less + than the new rl_end, in case they got out of sync. Report and fix + from Tillmann Osswald + +test.c + - unary_test: assume the argument has already been expanded (the code + paths for [[ and [ expand it) and add AV_NOEXPAND to the flags passed + to array_value if assoc_expand_once is enabled. Prompted by a report + from Greg Wooledge + +[bash-5.1-rc3 frozen] + + 11/18 + ----- +doc/{bash.1,bashref.texi} + - small tweaks to the ulimit description to make it more consistent with + the Posix standard's terminology + + 12/4 + ---- + +[bash-5.1-release frozen] diff --git a/bash-5.1/CWRU/misc/bison b/bash-5.1/CWRU/misc/bison new file mode 100755 index 0000000..58aae79 --- /dev/null +++ b/bash-5.1/CWRU/misc/bison @@ -0,0 +1,26 @@ +#! /bin/sh +# +# bison -- just call yacc +# + +# Copyright (C) 1996-2002 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 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 . +# + +if [ "$1" = '-y' ]; then + shift +fi + +exec /usr/bin/yacc ${1+"$@"} diff --git a/bash-5.1/CWRU/misc/errlist.c b/bash-5.1/CWRU/misc/errlist.c new file mode 100644 index 0000000..53c368d --- /dev/null +++ b/bash-5.1/CWRU/misc/errlist.c @@ -0,0 +1,57 @@ +/* + * If necessary, link with lib/sh/libsh.a + */ + +/* Copyright (C) 1998-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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-5.1/CWRU/misc/hpux10-dlfcn.h b/bash-5.1/CWRU/misc/hpux10-dlfcn.h new file mode 100644 index 0000000..49d4428 --- /dev/null +++ b/bash-5.1/CWRU/misc/hpux10-dlfcn.h @@ -0,0 +1,63 @@ +/* + * HPUX 10.x stubs to implement dl* in terms of shl* + * + * Not needed for later versions; HPUX 11.x has dlopen() and friends. + * + * configure also needs to be faked out. You can create a dummy libdl.a + * with stub entries for dlopen, dlclose, dlsym, and dlerror: + * + * int dlopen() { return(0);} + * int dlclose() { return(0);} + * int dlsym() { return(0);} + * int dlerror() { return(0);} + * + * This has not been tested; I just read the manual page and coded this up. + * + * According to the ld manual page, you need to link bash with -dld and add + * the -E flag to LOCAL_LDFLAGS. + */ + +/* Copyright (C) 1998-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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-5.1/CWRU/misc/open-files.c b/bash-5.1/CWRU/misc/open-files.c new file mode 100644 index 0000000..6a55577 --- /dev/null +++ b/bash-5.1/CWRU/misc/open-files.c @@ -0,0 +1,39 @@ +/* open-files -- report files a process has open */ + +/* Copyright (C) 1989-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include +#include +#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-5.1/CWRU/misc/sigs.c b/bash-5.1/CWRU/misc/sigs.c new file mode 100644 index 0000000..bae93f8 --- /dev/null +++ b/bash-5.1/CWRU/misc/sigs.c @@ -0,0 +1,47 @@ +/* sigs - print signal dispositions for a process */ + +/* Copyright (C) 1990-2010 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include +#include + +extern const char * const 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-5.1/CWRU/misc/sigstat.c b/bash-5.1/CWRU/misc/sigstat.c new file mode 100644 index 0000000..9135baa --- /dev/null +++ b/bash-5.1/CWRU/misc/sigstat.c @@ -0,0 +1,226 @@ +/* + * sigstat - print out useful information about signal arguments + * + * Chet Ramey + * chet@po.cwru.edu + */ + +/* Copyright (C) 1991-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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-5.1/CWRU/sh-redir-hack b/bash-5.1/CWRU/sh-redir-hack new file mode 100644 index 0000000..413b297 --- /dev/null +++ b/bash-5.1/CWRU/sh-redir-hack @@ -0,0 +1,15 @@ +Add to `subshell' production in parse.y and recompile -DREDIRECTION_HACK to +get `< xx (command)' sh compatibility. + + | redirections '(' list ')' + { +#if defined (REDIRECTION_HACK) + /* XXX - C News sh compatibility hack - XXX */ + $3->redirects = $1; + $3->flags |= CMD_WANT_SUBSHELL; + $$ = $3; +#else + yyerror (); + YYABORT; +#endif + } diff --git a/bash-5.1/ChangeLog b/bash-5.1/ChangeLog new file mode 120000 index 0000000..12c9a28 --- /dev/null +++ b/bash-5.1/ChangeLog @@ -0,0 +1 @@ +CWRU/changelog \ No newline at end of file diff --git a/bash-5.1/INSTALL b/bash-5.1/INSTALL new file mode 100644 index 0000000..91f1dd9 --- /dev/null +++ b/bash-5.1/INSTALL @@ -0,0 +1,445 @@ +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-4.2$ ./configure --help + +at the Bash prompt in your Bash source directory. + +If you want to build Bash in a directory separate from the source +directory - to build for multiple architectures, for example - just use +the full path to the configure script. The following commands will +build bash in a directory under '/usr/local/build' from the source code +in '/usr/local/src/bash-4.4': + + mkdir /usr/local/build/bash-4.4 + cd /usr/local/build/bash-4.4 + bash /usr/local/src/bash-4.4/configure + make + +See *note Compiling For Multiple Architectures:: for more information +about building in a directory separate from the source. + +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.ac' is used to create 'configure' by a program +called Autoconf. You only need 'configure.ac' if you want to change it +or regenerate 'configure' using a newer version of Autoconf. If you do +this, make sure you are using Autoconf version 2.50 or newer. + +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 (*note Basic Installation::). 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.unix.org/version2/whatsnew/lfs20mar.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', +'direxpand-default', and 'xpg-echo-default' are enabled by default, +unless the operating system does not provide the necessary support. + +'--enable-alias' + Allow alias expansion and include the 'alias' and 'unalias' + 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-casemod-attributes' + Include support for case-modifying attributes in the 'declare' + builtin and assignment statements. Variables with the UPPERCASE + attribute, for example, will have their values converted to + uppercase upon assignment. + +'--enable-casemod-expansion' + Include support for case-modifying word expansions. + +'--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-coprocesses' + Include support for coprocesses and the 'coproc' reserved word + (*note Pipelines::). + +'--enable-debugger' + Include support for the bash debugger (distributed separately). + +'--enable-dev-fd-stat-broken' + If calling 'stat' on /dev/fd/N returns different results than + calling 'fstat' on file descriptor N, supply this option to enable + a workaround. This has implications for conditional commands that + test file attributes. + +'--enable-direxpand-default' + Cause the 'direxpand' shell option (*note The Shopt Builtin::) to + be enabled by default when the shell starts. It is normally + disabled by default. + +'--enable-directory-stack' + Include support for a 'csh'-like directory stack and the 'pushd', + 'popd', and 'dirs' builtins (*note The Directory Stack::). + +'--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-extended-glob-default' + Set the default value of the EXTGLOB shell option described above + under *note The Shopt Builtin:: to be enabled. + +'--enable-function-import' + Include support for importing function definitions exported by + another instance of the shell from the environment. This option is + enabled by default. + +'--enable-glob-asciirange-default' + Set the default value of the GLOBASCIIRANGES shell option described + above under *note The Shopt Builtin:: to be enabled. This controls + the behavior of character ranges when used in pattern matching + bracket expressions. + +'--enable-help-builtin' + Include the 'help' builtin, which displays help on shell builtins + and variables (*note Bash Builtins::). + +'--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 '$PS0', '$PS1', '$PS2', and '$PS4' prompt + strings. See *note Controlling the Prompt::, for a complete list + of prompt string escape sequences. + +'--enable-readline' + Include support for command-line editing and history with the Bash + 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' compound command, 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-5.1/MANIFEST b/bash-5.1/MANIFEST new file mode 100644 index 0000000..54f327c --- /dev/null +++ b/bash-5.1/MANIFEST @@ -0,0 +1,1531 @@ +# +# Master distribution manifest for bash +# +# +# Filename type +# +CWRU d +CWRU/misc d +builtins d +cross-build d +doc d +examples d +#examples/obashdb d +examples/bash-completion 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/tilde d +m4 d +po d +support d +tests d +tests/misc d +ABOUT-NLS f +ChangeLog s CWRU/changelog +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.ac f +configure f 755 +Makefile.in f +config-top.h f +config-bot.h f +config.h.in f +aclocal.m4 f +array.c f +arrayfunc.c f +assoc.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 +assoc.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/gen-helpfiles.c 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/mapfile.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 +cross-build/qnx.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/posixselect.h f +include/posixstat.h f +include/posixtime.h f +include/posixwait.h f +include/shmbchar.h f +include/shmbutil.h f +include/shtty.h f +include/stat-time.h f +include/stdc.h f +include/systimes.h f +include/typemax.h f +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/gmisc.c f +lib/glob/gm_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/xfree.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/colors.c f +lib/readline/parse-colors.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/posixselect.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/colors.h f +lib/readline/parse-colors.h f +lib/readline/xmalloc.h f +lib/readline/doc/Makefile f +lib/readline/doc/version.texi f +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-callbacktest.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/casemod.c f +lib/sh/clktck.c f +lib/sh/clock.c f +lib/sh/dprintf.c f +lib/sh/eaccess.c f +lib/sh/fmtullong.c f +lib/sh/fmtulong.c f +lib/sh/fmtumax.c f +lib/sh/fnxform.c f +lib/sh/fpurge.c f +lib/sh/getcwd.c f +lib/sh/getenv.c f +lib/sh/gettimeofday.c f +lib/sh/inet_aton.c f +lib/sh/input_avail.c f +lib/sh/itos.c f +lib/sh/mailstat.c f +lib/sh/makepath.c f +lib/sh/mbscasecmp.c f +lib/sh/mbschr.c f +lib/sh/mbscmp.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/random.c f +lib/sh/rename.c f +lib/sh/setlinebuf.c f +lib/sh/shmatch.c f +lib/sh/shmbchar.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/strcasestr.c f +lib/sh/strchrnul.c f +lib/sh/strdup.c f +lib/sh/strerror.c f +lib/sh/strftime.c f +lib/sh/stringlist.c f +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/uconvert.c f +lib/sh/ufuncs.c f +lib/sh/unicode.c f +lib/sh/utf8.c f +lib/sh/vprint.c f +lib/sh/wcsdup.c f +lib/sh/wcsnwidth.c f +lib/sh/wcswidth.c f +lib/sh/winsize.c f +lib/sh/zcatfd.c f +lib/sh/zgetline.c f +lib/sh/zmapfd.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/tilde/README f +lib/tilde/Makefile.in f +lib/tilde/tilde.c f +lib/tilde/tilde.h f +lib/tilde/shell.c f +m4/stat-time.m4 f +m4/timespec.m4 f +m4/codeset.m4 f +m4/extern-inline.m4 f +m4/fcntl-o.m4 f +m4/gettext.m4 f +m4/glibc2.m4 f +m4/glibc21.m4 f +m4/host-cpu-c-abi.m4 f +m4/iconv.m4 f +m4/intdiv0.m4 f +m4/intl-thread-locale.m4 f +m4/intl.m4 f +m4/intlmacosx.m4 f +m4/intmax.m4 f +m4/inttypes-pri.m4 f +m4/inttypes.m4 f +m4/inttypes_h.m4 f +m4/lcmessage.m4 f +m4/lib-ld.m4 f +m4/lib-link.m4 f +m4/lib-prefix.m4 f +m4/lock.m4 f +m4/nls.m4 f +m4/po.m4 f +m4/printf-posix.m4 f +m4/progtest.m4 f +m4/pthread_rwlock_rdlock.m4 f +m4/size_max.m4 f +m4/stdint_h.m4 f +m4/threadlib.m4 f +m4/uintmax_t.m4 f +m4/ulonglong.m4 f +m4/visibility.m4 f +m4/wchar_t.m4 f +m4/wint_t.m4 f +m4/xsize.m4 f +po/LINGUAS f +po/Makefile.in.in f +po/Makevars f +po/POTFILES.in f +po/README f +po/Rules-builtins f +po/Rules-quot f +po/bash.pot f +po/boldquot.sed f +po/en@boldquot.gmo f +po/en@boldquot.header f +po/en@boldquot.po f +po/en@quot.gmo f +po/en@quot.header f +po/en@quot.po f +po/af.gmo f +po/af.po f +po/bg.gmo f +po/bg.po f +po/ca.gmo f +po/ca.po f +po/cs.gmo f +po/cs.po f +po/da.gmo f +po/da.po f +po/de.gmo f +po/de.po f +po/el.gmo f +po/el.po f +po/eo.gmo f +po/eo.po f +po/es.gmo f +po/es.po f +po/et.gmo f +po/et.po f +po/fi.gmo f +po/fi.po f +po/fr.gmo f +po/fr.po f +po/ga.gmo f +po/ga.po f +po/gl.gmo f +po/gl.po f +po/hr.gmo f +po/hr.po f +po/hu.gmo f +po/hu.po f +po/id.gmo f +po/id.po f +po/it.gmo f +po/it.po f +po/ja.gmo f +po/ja.po f +po/ko.gmo f +po/ko.po f +po/lt.gmo f +po/lt.po f +po/nl.gmo f +po/nb.po f +po/nb.gmo f +po/nl.po f +po/pl.gmo f +po/pl.po f +po/pt.gmo f +po/pt.po f +po/pt_BR.gmo f +po/pt_BR.po f +po/ro.gmo f +po/ro.po f +po/ru.gmo f +po/ru.po f +po/sk.gmo f +po/sk.po f +po/sl.gmo f +po/sr.po f +po/sr.gmo f +po/sl.po f +po/sv.gmo f +po/sv.po f +po/tr.gmo f +po/tr.po f +po/uk.gmo f +po/uk.po f +po/vi.gmo f +po/vi.po f +po/zh_CN.gmo f +po/zh_CN.po f +po/zh_TW.gmo f +po/zh_TW.po 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 +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/bash.info f +doc/article.ms f +doc/htmlpost.sh f 755 +doc/infopost.sh f 755 +doc/fdl.texi f +doc/fdl.txt f +# +doc/article.ps f +doc/rose94.ps f +doc/bash.ps f +doc/bashbug.ps f +doc/builtins.ps f +doc/rbash.ps f +doc/bashref.ps f +doc/bashref.dvi f +doc/bash.0 f +doc/bashbug.0 f +doc/builtins.0 f +doc/rbash.0 f +doc/article.txt f +doc/bash.html f +doc/bashref.html f +doc/article.pdf f +doc/bash.pdf f +doc/bashref.pdf f +doc/rose94.pdf f +doc/aosa-bash.pdf f +doc/aosa-bash-full.pdf f +# +support/Makefile.in f +support/bash.pc.in f +support/bashversion.c f +support/checkbashisms f 755 +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/bashbug.sh.in f +support/man2html.c f +support/recho.c f +support/zecho.c f +support/xcase.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/obashdb/PERMISSION f +#examples/obashdb/README f +#examples/obashdb/bashdb f +#examples/obashdb/bashdb.el f +examples/bash-completion/README f +examples/bash-completion/bash-completion-2.5.tar.xz f +examples/complete/bash_completion f +examples/complete/cdfunc f +examples/complete/complete-examples f +#examples/complete/complete.ianmac f +#examples/complete/complete2.ianmac f +#examples/complete/complete.freebsd f +#examples/complete/complete.gnu-longopt f +examples/complete/bashcc-1.0.1.tar.gz f +examples/loadables/README f +examples/loadables/template.c f +examples/loadables/loadables.h f +examples/loadables/Makefile.in f +examples/loadables/Makefile.inc.in f +examples/loadables/necho.c f +examples/loadables/hello.c f +examples/loadables/asort.c f +examples/loadables/accept.c f +examples/loadables/print.c f +examples/loadables/realpath.c f +examples/loadables/seq.c f +examples/loadables/setpgid.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/fdflags.c f +examples/loadables/finfo.c f +examples/loadables/cat.c f +examples/loadables/csv.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/rm.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/mkfifo.c f +examples/loadables/mktemp.c f +examples/loadables/ln.c f +examples/loadables/mypid.c f +examples/loadables/unlink.c f +examples/loadables/stat.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/loadables/sprintf.c f +#examples/loadables/xtitle.c f +examples/functions/array-stuff f +examples/functions/array-to-string f +examples/functions/arrayops.bash f +examples/functions/autoload f +examples/functions/autoload.v2 f +examples/functions/autoload.v3 f +examples/functions/autoload.v4 f +examples/functions/autoload.v4.t 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/dirstack 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/newdirstack.bsh f +examples/functions/notify.bash f +#examples/functions/pathfuncs f +#examples/functions/recurse f +#examples/functions/repeat2 f +#examples/functions/repeat3 f +examples/functions/seq f +examples/functions/seq2 f +examples/functions/shcat f +examples/functions/shcat2 f +examples/functions/sort-pos-params f +#examples/functions/sqroot f +examples/functions/substr f +examples/functions/substr2 f +#examples/functions/term f +examples/functions/whatis f +examples/functions/whence f +examples/functions/which f +#examples/functions/xalias.bash f +#examples/functions/xfind.bash f +#examples/scripts/adventure.sh f +#examples/scripts/bash-hexdump.sh f +#examples/scripts/bcsh.sh f +examples/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/timeout2 f +#examples/scripts/timeout3 f +#examples/scripts/vtree2 f +#examples/scripts/vtree3 f +#examples/scripts/vtree3a f +#examples/scripts/websrv.sh f +examples/scripts/xterm_title f +examples/scripts/zprintf f +examples/startup-files/README f +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/COPYRIGHT f +tests/test-glue-functions f +tests/alias.tests f +tests/alias1.sub f +tests/alias2.sub f +tests/alias3.sub f +tests/alias4.sub f +tests/alias5.sub f +tests/alias.right f +tests/appendop.tests f +tests/appendop1.sub f +tests/appendop2.sub f +tests/appendop.right f +tests/arith-for.tests f +tests/arith-for.right f +tests/arith.tests f +tests/arith.right f +tests/arith1.sub f +tests/arith2.sub f +tests/arith3.sub f +tests/arith4.sub f +tests/arith5.sub f +tests/arith6.sub f +tests/arith7.sub f +tests/arith8.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/array5.sub f +tests/array6.sub f +tests/array7.sub f +tests/array8.sub f +tests/array9.sub f +tests/array10.sub f +tests/array11.sub f +tests/array12.sub f +tests/array13.sub f +tests/array14.sub f +tests/array15.sub f +tests/array16.sub f +tests/array17.sub f +tests/array18.sub f +tests/array19.sub f +tests/array20.sub f +tests/array21.sub f +tests/array22.sub f +tests/array23.sub f +tests/array24.sub f +tests/array25.sub f +tests/array26.sub f +tests/array27.sub f +tests/array28.sub f +tests/array-at-star f +tests/array2.right f +tests/assoc.tests f +tests/assoc.right f +tests/assoc1.sub f +tests/assoc2.sub f +tests/assoc3.sub f +tests/assoc4.sub f +tests/assoc5.sub f +tests/assoc6.sub f +tests/assoc7.sub f +tests/assoc8.sub f +tests/assoc9.sub f +tests/assoc10.sub f +tests/assoc11.sub f +tests/attr.tests f +tests/attr.right f +tests/attr1.sub f +tests/attr2.sub 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/builtins3.sub f +tests/builtins4.sub f +tests/builtins5.sub f +tests/builtins6.sub f +tests/builtins7.sub f +tests/source1.sub f +tests/source2.sub f +tests/source3.sub f +tests/source4.sub f +tests/source5.sub f +tests/source6.sub f +tests/source7.sub f +tests/case.tests f +tests/case.right f +tests/case1.sub f +tests/case2.sub f +tests/case3.sub f +tests/case4.sub f +tests/casemod.tests f +tests/casemod.right f +tests/complete.tests f +tests/complete.right f +tests/comsub.tests f +tests/comsub.right f +tests/comsub1.sub f +tests/comsub2.sub f +tests/comsub3.sub f +tests/comsub4.sub f +tests/comsub-eof.tests f +tests/comsub-eof0.sub f +tests/comsub-eof1.sub f +tests/comsub-eof2.sub f +tests/comsub-eof3.sub f +tests/comsub-eof4.sub f +tests/comsub-eof5.sub f +tests/comsub-eof6.sub f +tests/comsub-eof.right f +tests/comsub-posix.tests f +tests/comsub-posix.right f +tests/comsub-posix1.sub f +tests/comsub-posix2.sub f +tests/comsub-posix3.sub f +tests/cond.tests f +tests/cond.right f +tests/cond-regexp1.sub f +tests/cond-regexp2.sub f +tests/cond-regexp3.sub f +tests/coproc.tests f +tests/coproc.right f +tests/cprint.tests f +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/dbg-support3.sub f +tests/dollar-at-star f +tests/dollar-at-star1.sub f +tests/dollar-at-star2.sub f +tests/dollar-at-star3.sub f +tests/dollar-at-star4.sub f +tests/dollar-at-star5.sub f +tests/dollar-at-star6.sub f +tests/dollar-at-star7.sub f +tests/dollar-at-star8.sub f +tests/dollar-at-star9.sub f +tests/dollar-at1.sub f +tests/dollar-at2.sub f +tests/dollar-at3.sub f +tests/dollar-at4.sub f +tests/dollar-at5.sub f +tests/dollar-at6.sub f +tests/dollar-at7.sub f +tests/dollar-star1.sub f +tests/dollar-star2.sub f +tests/dollar-star3.sub f +tests/dollar-star4.sub f +tests/dollar-star5.sub f +tests/dollar-star6.sub f +tests/dollar-star7.sub f +tests/dollar-star8.sub f +tests/dollar-star9.sub f +tests/dollar-star10.sub f +tests/dollar.right f +tests/dstack.tests f +tests/dstack.right f +tests/dstack2.tests f +tests/dstack2.right f +tests/dynvar.tests f +tests/dynvar.right f +tests/errors.tests f +tests/errors.right f +tests/errors1.sub f +tests/errors2.sub f +tests/errors3.sub f +tests/errors4.sub f +tests/errors5.sub f +tests/errors6.sub f +tests/errors7.sub f +tests/errors8.sub 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/exec8.sub f +tests/exec9.sub f +tests/exec10.sub f +tests/exec11.sub f +tests/exec12.sub f +tests/exec13.sub f +tests/exec14.sub f +tests/exp.tests f +tests/exp.right f +tests/exp1.sub f +tests/exp2.sub f +tests/exp3.sub f +tests/exp4.sub f +tests/exp5.sub f +tests/exp6.sub f +tests/exp7.sub f +tests/exp8.sub f +tests/exp9.sub f +tests/exp10.sub f +tests/exp11.sub f +tests/exp12.sub f +tests/exportfunc.tests f +tests/exportfunc.right f +tests/exportfunc1.sub f +tests/exportfunc2.sub f +tests/exportfunc3.sub f +tests/extglob.tests f +tests/extglob.right f +tests/extglob1.sub f +tests/extglob1a.sub f +tests/extglob2.sub f +tests/extglob2.tests f +tests/extglob2.right f +tests/extglob3.sub f +tests/extglob3.tests f +tests/extglob3.right f +tests/extglob4.sub f +tests/extglob5.sub f +tests/func.tests f +tests/func.right f +tests/func1.sub f +tests/func2.sub f +tests/func3.sub f +tests/func4.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/getopts8.sub f +tests/getopts9.sub f +tests/getopts10.sub f +tests/glob.tests f +tests/glob1.sub f +tests/glob2.sub f +tests/glob3.sub f +tests/glob4.sub f +tests/glob5.sub f +tests/glob6.sub f +tests/glob7.sub f +tests/glob8.sub f +tests/glob9.sub f +tests/glob.right f +tests/globstar.tests f +tests/globstar.right f +tests/globstar1.sub f +tests/globstar2.sub f +tests/globstar3.sub f +tests/heredoc.tests f +tests/heredoc.right f +tests/heredoc1.sub f +tests/heredoc2.sub f +tests/heredoc3.sub f +tests/heredoc4.sub f +tests/heredoc5.sub f +tests/herestr.tests f +tests/herestr.right f +tests/herestr1.sub f +tests/histexp.tests f +tests/histexp1.sub f +tests/histexp2.sub f +tests/histexp3.sub f +tests/histexp4.sub f +tests/histexp5.sub f +tests/histexp6.sub f +tests/histexp7.sub f +tests/histexp.right f +tests/history.tests f +tests/history.right f +tests/history.list f 444 +tests/history1.sub f +tests/history2.sub f +tests/history3.sub f +tests/history4.sub f +tests/history5.sub f +tests/ifs.tests f +tests/ifs.right f +tests/ifs1.sub 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/intl1.sub f +tests/intl2.sub f +tests/intl3.sub f +tests/intl.right f +tests/iquote.tests f +tests/iquote.right f +tests/iquote1.sub f +tests/invert.tests f +tests/invert.right f +tests/jobs.tests f +tests/jobs1.sub f +tests/jobs2.sub f +tests/jobs3.sub f +tests/jobs4.sub f +tests/jobs5.sub f +tests/jobs6.sub f +tests/jobs7.sub f +tests/jobs.right f +tests/lastpipe.right f +tests/lastpipe.tests f +tests/lastpipe1.sub f +tests/lastpipe2.sub f +tests/mapfile.data f +tests/mapfile.right f +tests/mapfile.tests f +tests/mapfile1.sub f +tests/mapfile2.sub f +tests/more-exp.tests f +tests/more-exp.right f +tests/nameref.tests f +tests/nameref1.sub f +tests/nameref2.sub f +tests/nameref3.sub f +tests/nameref4.sub f +tests/nameref5.sub f +tests/nameref6.sub f +tests/nameref7.sub f +tests/nameref8.sub f +tests/nameref9.sub f +tests/nameref10.sub f +tests/nameref11.sub f +tests/nameref12.sub f +tests/nameref13.sub f +tests/nameref14.sub f +tests/nameref15.sub f +tests/nameref16.sub f +tests/nameref17.sub f +tests/nameref18.sub f +tests/nameref19.sub f +tests/nameref20.sub f +tests/nameref21.sub f +tests/nameref.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-exp6.sub f +tests/new-exp7.sub f +tests/new-exp8.sub f +tests/new-exp9.sub f +tests/new-exp10.sub f +tests/new-exp11.sub f +tests/new-exp12.sub f +tests/new-exp13.sub f +tests/new-exp14.sub f +tests/new-exp15.sub f +tests/new-exp.right f +tests/nquote.tests f +tests/nquote.right f +tests/nquote1.sub f +tests/nquote2.sub f +tests/nquote3.sub 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/nquote5.tests f +tests/nquote5.right f +tests/parser.tests f +tests/parser.right f +tests/parser1.sub f +tests/posix2.tests f +tests/posix2.right f +tests/posix2syntax.sub f +tests/posixexp.tests f +tests/posixexp.right f +tests/posixexp1.sub f +tests/posixexp2.sub f +tests/posixexp3.sub f +tests/posixexp4.sub f +tests/posixexp5.sub f +tests/posixexp6.sub f +tests/posixexp7.sub f +tests/posixexp8.sub f +tests/posixexp2.tests f +tests/posixexp2.right f +tests/posixpat.tests f +tests/posixpat.right f +tests/posixpipe.tests f +tests/posixpipe.right f +tests/prec.right f +tests/precedence.tests f +tests/printf.tests f +tests/printf.right f +tests/printf1.sub f +tests/printf2.sub f +tests/printf3.sub f +tests/printf4.sub f +tests/procsub.tests f +tests/procsub.right f +tests/procsub1.sub f +tests/procsub2.sub f +tests/quote.tests f +tests/quote.right f +tests/quote1.sub f +tests/quote2.sub f +tests/quote3.sub f +tests/quote4.sub 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/read6.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/redir8.sub f +tests/redir9.sub f +tests/redir10.sub f +tests/redir11.sub f +tests/rhs-exp.tests f +tests/rhs-exp.right f +tests/rhs-exp1.sub f +tests/rsh.tests f +tests/rsh.right f +tests/rsh1.sub f +tests/rsh2.sub 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-assoc f +tests/run-attr f +tests/run-braces f +tests/run-builtins f +tests/run-case f +tests/run-casemod f +tests/run-complete f +tests/run-comsub f +tests/run-comsub-eof f +tests/run-comsub-posix f +tests/run-cond f +tests/run-coproc 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-dynvar f +tests/run-errors f +tests/run-execscript f +tests/run-exp-tests f +tests/run-exportfunc 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-globstar 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-lastpipe f +tests/run-mapfile f +tests/run-more-exp f +tests/run-nameref f +tests/run-new-exp f +tests/run-nquote f +tests/run-nquote1 f +tests/run-nquote2 f +tests/run-nquote3 f +tests/run-nquote4 f +tests/run-nquote5 f +tests/run-parser f +tests/run-posix2 f +tests/run-posixexp f +tests/run-posixexp2 f +tests/run-posixpat f +tests/run-posixpipe f +tests/run-precedence f +tests/run-printf f +tests/run-procsub 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/run-vredir f +tests/set-e.tests f +tests/set-e1.sub f +tests/set-e2.sub f +tests/set-e3.sub f +tests/set-e3a.sub f +tests/set-e.right f +tests/set-x.tests f +tests/set-x1.sub f +tests/set-x.right f +tests/shopt.tests f +tests/shopt1.sub f +tests/shopt.right f +tests/strip.tests f +tests/strip.right f +tests/test.tests f +tests/test1.sub 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/trap3.sub f +tests/trap4.sub f +tests/trap5.sub f +tests/trap6.sub f +tests/type.tests f +tests/type.right f +tests/type1.sub f +tests/type2.sub f +tests/type3.sub f +tests/type4.sub f +tests/unicode1.sub f +tests/unicode2.sub f +tests/unicode3.sub f +tests/varenv.right f +tests/varenv.tests f +tests/varenv1.sub f +tests/varenv2.sub f +tests/varenv3.sub f +tests/varenv4.sub f +tests/varenv5.sub f +tests/varenv6.sub f +tests/varenv7.sub f +tests/varenv8.sub f +tests/varenv9.sub f +tests/varenv10.sub f +tests/varenv11.sub f +tests/varenv12.sub f +tests/varenv13.sub f +tests/varenv14.sub f +tests/varenv15.sub f +tests/varenv15.in f +tests/varenv16.sub f +tests/varenv17.sub f +tests/varenv18.sub f +tests/varenv19.sub f +tests/varenv20.sub f +tests/varenv21.sub f +tests/version f +tests/version.mini f +tests/vredir.tests f +tests/vredir.right f +tests/vredir1.sub f +tests/vredir2.sub f +tests/vredir3.sub f +tests/vredir4.sub f +tests/vredir5.sub f +tests/vredir6.sub f +tests/vredir7.sub 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-5.1/Makefile.in b/bash-5.1/Makefile.in new file mode 100644 index 0000000..3d5119a --- /dev/null +++ b/bash-5.1/Makefile.in @@ -0,0 +1,1742 @@ +# Makefile for bash-5.0, version 4.30 +# +# Copyright (C) 1996-2018 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# 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@ + +PACKAGE_TARNAME = @PACKAGE_TARNAME@ + +# Include some boilerplate Gnu makefile definitions. +prefix = @prefix@ + +exec_prefix = @exec_prefix@ + +datarootdir = @datarootdir@ + +bindir = @bindir@ +libdir = @libdir@ +infodir = @infodir@ +includedir = @includedir@ +datadir = @datadir@ +localedir = @localedir@ +pkgconfigdir = ${libdir}/pkgconfig + +loadablesdir = @loadablesdir@ +headersdir = @headersdir@ + +docdir = @docdir@ + +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@ +STRIP = strip + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALLMODE= -m 0755 +INSTALLMODE2 = -m 0555 + +TESTSCRIPT = @TESTSCRIPT@ + +DEBUGGER_START_FILE = @DEBUGGER_START_FILE@ + +#If you have purify, and want to use it, run the make as `make PURIFY=purify' +#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 = $(SYSTEM_FLAGS) $(LOCAL_DEFS) \ + $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES) + +CCFLAGS = $(ADDON_CFLAGS) $(BASE_CCFLAGS) ${PROFILE_FLAGS} $(CPPFLAGS) $(CFLAGS) + +CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) + +BASE_LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS) +LDFLAGS = ${ADDON_LDFLAGS} ${BASE_LDFLAGS} ${PROFILE_FLAGS} ${STATIC_LD} +LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD) + +ASAN_XCFLAGS = -fsanitize=address -fno-omit-frame-pointer +ASAN_XLDFLAGS = -fsanitize=address + +GCOV_XCFLAGS = -fprofile-arcs -ftest-coverage +GCOV_XLDFLAGS = -fprofile-arcs -ftest-coverage + +INCLUDES = -I. @RL_INCLUDE@ -I$(srcdir) -I$(BASHINCDIR) -I$(LIBSRC) $(INTL_INC) + +# Maybe add: -Wextra +GCC_LINT_FLAGS = -O -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wno-parentheses \ + -Wcast-align -Wstrict-prototypes -Wconversion -Wformat \ + -Wformat-nonliteral -Wmissing-braces -Wuninitialized \ + -Wmissing-declarations -Winline \ + -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}/strchrnul.c \ + ${SH_LIBSRC}/strcasecmp.c ${SH_LIBSRC}/strdup.c \ + ${SH_LIBSRC}/strerror.c \ + ${SH_LIBSRC}/strtod.c ${SH_LIBSRC}/strtol.c \ + ${SH_LIBSRC}/strtoul.c ${SH_LIBSRC}/vprint.c \ + ${SH_LIBSRC}/itos.c ${SH_LIBSRC}/rename.c \ + ${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}/strcasestr.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}/mbschr.c \ + ${SH_LIBSRC}/zcatfd.c ${SH_LIBSRC}/shmatch.c \ + ${SH_LIBSRC}/strnlen.c ${SH_LIBSRC}/winsize.c \ + ${SH_LIBSRC}/eaccess.c ${SH_LIBSRC}/wcsdup.c \ + ${SH_LIBSRC}/zmapfd.c ${SH_LIBSRC}/fpurge.c \ + ${SH_LIBSRC}/zgetline.c ${SH_LIBSRC}/mbscmp.c \ + ${SH_LIBSRC}/casemod.c ${SH_LIBSRC}/uconvert.c \ + ${SH_LIBSRC}/ufuncs.c ${SH_LIBSRC}/dprintf.c \ + ${SH_LIBSRC}/input_avail.c ${SH_LIBSRC}/mbscasecmp.c \ + ${SH_LIBSRC}/fnxform.c ${SH_LIBSRC}/unicode.c \ + ${SH_LIBSRC}/wcswidth.c ${SH_LIBSRC}/wcsnwidth.c \ + ${SH_LIBSRC}/shmbchar.c ${SH_LIBSRC}/utf8.c \ + ${SH_LIBSRC}/random.c ${SH_LIBSRC}/gettimeofday.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)/colors.h $(RL_LIBSRC)/parse-colors.h \ + $(RL_LIBSRC)/funmap.c $(RL_LIBSRC)/emacs_keymap.c \ + $(RL_LIBSRC)/search.c $(RL_LIBSRC)/vi_keymap.c \ + $(RL_LIBSRC)/keymaps.c $(RL_LIBSRC)/parens.c \ + $(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)/colors.c $(RL_LIBSRC)/parse-colors.c \ + $(RL_LIBSRC)/misc.c $(RL_LIBSRC)/mbutil.c $(RL_LIBSRC)/compat.c \ + $(RL_LIBSRC)/histexpand.c $(RL_LIBSRC)/history.c \ + $(RL_LIBSRC)/histsearch.c $(RL_LIBSRC)/histfile.c + +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 \ + $(RL_LIBDIR)/colors.o $(RL_LIBDIR)/parse-colors.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)/gmisc.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 \ + $(GLOB_LIBDIR)/gmisc.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@ + +# libiconv +LIBICONV = @LIBICONV@ + +# 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 = $(GLOB_LIB) $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) \ + $(TILDE_LIB) $(MALLOC_LIB) $(INTL_LIB) $(LIBICONV) $(LOCAL_LIBS) + +LIBDEP = $(GLOB_DEP) $(SHLIB_DEP) $(INTL_DEP) $(READLINE_DEP) $(HISTORY_DEP) $(TERMCAP_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 assoc.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 assoc.h \ + $(BASHINCFILES) + +SOURCES = $(CSOURCES) $(HSOURCES) $(BUILTIN_DEFS) + +# headers in top-level source directory that get installed by install-headers +INSTALLED_HEADERS = shell.h bashjmp.h command.h syntax.h general.h error.h \ + variables.h array.h assoc.h arrayfunc.h quit.h dispose_cmd.h \ + make_cmd.h subst.h sig.h externs.h builtins.h \ + bashtypes.h xmalloc.h config-top.h config-bot.h \ + bashintl.h bashansi.h bashjmp.h alias.h hashlib.h \ + conftypes.h unwind_prot.h jobs.h siglist.h +INSTALLED_BUILTINS_HEADERS = bashgetopt.h common.h getopt.h +INSTALLED_INCFILES = posixstat.h ansi_stdlib.h filecntl.h posixdir.h \ + memalloc.h stdc.h posixjmp.h posixwait.h posixtime.h systimes.h \ + unionwait.h maxpath.h shtty.h typemax.h ocache.h chartypes.h gettext.h \ + posixstat.h shmbchar.h shmbutil.h stat-time.h + +# 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 assoc.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 \ + $(DEFSRC)/mapfile.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 $(DEFDIR)/mapfile.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) xcase$(EXEEXT) +CREATED_SUPPORT = signames.h recho$(EXEEXT) zecho$(EXEEXT) printenv$(EXEEXT) \ + tests/recho$(EXEEXT) tests/zecho$(EXEEXT) \ + tests/printenv$(EXEEXT) xcase$(EXEEXT) tests/xcase$(EXEEXT) \ + mksignames$(EXEEXT) lsignames.h \ + mksyntax${EXEEXT} syntax.c $(VERSPROG) $(VERSOBJ) \ + buildversion.o mksignames.o signames.o buildsignames.o +CREATED_CONFIGURE = config.h config.cache config.status config.log \ + stamp-h po/POTFILES config.status.lineno +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/Makefile.inc \ + examples/loadables/perl/Makefile support/Makefile \ + lib/intl/Makefile po/Makefile po/Makefile.in +CREATED_HEADERS = signames.h config.h pathnames.h version.h y.tab.h \ + ${DEFDIR}/builtext.h + +OTHER_DOCS = $(srcdir)/CHANGES $(srcdir)/COMPAT $(srcdir)/NEWS $(srcdir)/POSIX \ + $(srcdir)/RBASH $(srcdir)/README +OTHER_INSTALLED_DOCS = CHANGES COMPAT NEWS POSIX RBASH README + +LOADABLES_DIR = ${top_builddir}/examples/loadables + +# Keep GNU Make from exporting the entire environment for small machines. +.NOEXPORT: + +.made: $(Program) bashbug $(SDIR)/man2html$(EXEEXT) + @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: $(SDIR)/bashbug.sh $(VERSPROG) + @sed -e "s%!PATCHLEVEL!%$(PatchLevel)%" \ + $(SDIR)/bashbug.sh > $@ + @chmod a+rx bashbug + +strip: $(Program) .made + $(STRIP) $(Program) + ls -l $(Program) + -$(SIZE) $(Program) + +lint: + ${MAKE} ${MFLAGS} CFLAGS='${GCC_LINT_FLAGS}' .made + +asan: + ${MAKE} ${MFLAGS} ADDON_CFLAGS='${ASAN_XCFLAGS}' ADDON_LDFLAGS='${ASAN_XLDFLAGS}' .made + +# cheating +gcov: + ${MAKE} ${MFLAGS} CFLAGS=-g ADDON_CFLAGS='${GCOV_XCFLAGS}' ADDON_LDFLAGS='${GCOV_XLDFLAGS}' .made + + +# have to make this separate because making tests depend on $(PROGRAM) +asan-tests: asan $(TESTS_SUPPORT) + @-test -d tests || mkdir tests + @cp $(TESTS_SUPPORT) tests + @( cd $(srcdir)/tests && \ + BUILD_DIR=$(BUILD_DIR) PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} ) + +profiling-tests: ${PROGRAM} + @test "X$$PROFILE_FLAGS" == "X" && { echo "profiling-tests: must be built with profiling enabled" >&2; exit 1; } + @${MAKE} ${MFLAGS} tests TESTSCRIPT=run-gprof + +version.h: $(SOURCES) config.h Makefile patchlevel.h + $(SHELL) $(SUPPORT_SRC)mkversion.sh -b -S ${topdir} -s $(RELSTATUS) -d $(Version) -o newversion.h \ + && mv newversion.h version.h + +bashversion$(EXEEXT): buildversion.o $(SUPPORT_SRC)bashversion.c + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(SUPPORT_SRC)bashversion.c buildversion.o ${LIBS_FOR_BUILD} + +buildversion.o: $(srcdir)/version.c + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -DBUILDTOOL -c -o $@ $(srcdir)/version.c + +buildversion.o: bashintl.h $(BASHINCDIR)/gettext.h +buildversion.o: version.h patchlevel.h conftypes.h + +# old rules +GRAM_H = parser-built +y.tab.o: y.tab.h y.tab.c ${GRAM_H} command.h ${BASHINCDIR}/stdc.h input.h +${GRAM_H}: y.tab.h + @-if test -f y.tab.h ; then \ + cmp -s $@ y.tab.h 2>/dev/null || cp -p y.tab.h $@; \ + fi + +y.tab.c: 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 + +y.tab.h: y.tab.c + @true + + +# Subdirs will often times want version.h, so they'll change back up to +# the top level and try to create it. This causes parallel build issues +# so just force top level sanity before we descend. +$(LIBDEP): .build +#$(LIBDEP): version.h + +$(READLINE_LIBRARY): config.h $(READLINE_SOURCE) + @echo making $@ in ${RL_LIBDIR} + @( { test "${RL_LIBDIR}" = "${libdir}" && exit 0; } || \ + cd ${RL_LIBDIR} && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} libreadline.a) || exit 1 + +$(HISTORY_LIBRARY): config.h $(HISTORY_SOURCE) $(READLINE_DEP) + @echo making $@ in ${HIST_LIBDIR} + @( { test "${HIST_LIBDIR}" = "${libdir}" && exit 0; } || \ + cd ${HIST_LIBDIR} && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} 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) XCFLAGS="${LOCAL_CFLAGS}" all) || exit 1 + +${LIBINTL_H}: ${INTL_DEP} + +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) ${LDFLAGS_FOR_BUILD} -o $@ mksignames.o buildsignames.o ${LIBS_FOR_BUILD} + +mksyntax$(EXEEXT): ${srcdir}/mksyntax.c config.h syntax.h ${BASHINCDIR}/chartypes.h bashansi.h + $(RM) $@ + ${CC_FOR_BUILD} ${CCFLAGS_FOR_BUILD} ${LDFLAGS_FOR_BUILD} -o $@ ${srcdir}/mksyntax.c ${LIBS_FOR_BUILD} + +# make a list of signals for the local system -- this is done when we're +# *not* cross-compiling +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 $(DEFDIR)/builtext.h version.h + @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} targets ) || exit 1 + +# these require special rules to circumvent make builtin rules +${DEFDIR}/common.o: $(BUILTIN_SRCDIR)/common.c + @(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 + +${DEFDIR}/pipesize.h: + @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) pipesize.h ) || exit 1 + +$(SDIR)/man2html$(EXEEXT): ${SUPPORT_SRC}/man2html.c + @(cd $(SDIR) && $(MAKE) $(MFLAGS) all ) || 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 + +Makefiles makefiles: config.status $(srcdir)/Makefile.in + @for mf in $(CREATED_MAKEFILES); do \ + CONFIG_FILES=$$mf CONFIG_HEADERS= $(SHELL) ./config.status || exit 1; \ + 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 + +pathnames.h: Makefile $(srcdir)/pathnames.h.in + @sed -e 's|@DEBUGGER_START_FILE\@|${DEBUGGER_START_FILE}|g' $(srcdir)/pathnames.h.in > pathnames.tmp + @if test -f $@; then \ + cmp -s pathnames.tmp $@ || mv pathnames.tmp $@; \ + else \ + mv pathnames.tmp $@; \ + fi + @${RM} pathnames.tmp + +# comment out for distribution +$(srcdir)/configure: $(srcdir)/configure.ac $(srcdir)/aclocal.m4 $(srcdir)/config.h.in + cd $(srcdir) && autoconf + +# for chet +reconfig: force + sh $(srcdir)/configure -C + +loadables: + cd $(LOADABLES_DIR) && $(MAKE) $(MFLAGS) all + +#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: + +# unused +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) + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(docdir) + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + +install: .made installdirs + $(INSTALL_PROGRAM) $(INSTALLMODE) $(Program) $(DESTDIR)$(bindir)/$(Program) + $(INSTALL_SCRIPT) $(INSTALLMODE2) bashbug $(DESTDIR)$(bindir)/bashbug + $(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir) + -( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) \ + man1dir=$(man1dir) man1ext=$(man1ext) \ + man3dir=$(man3dir) man3ext=$(man3ext) \ + 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 + +install-headers-dirs: + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir) + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir)/builtins + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir)/include + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(pkgconfigdir) + +install-headers: install-headers-dirs + @for hf in $(INSTALLED_HEADERS) ; do \ + ${INSTALL_DATA} $(srcdir)/"$$hf" $(DESTDIR)$(headersdir)/$$hf || exit 1; \ + done + @for hf in $(INSTALLED_INCFILES) ; do \ + ${INSTALL_DATA} $(BASHINCDIR)/"$$hf" $(DESTDIR)$(headersdir)/include/$$hf || exit 1; \ + done + @for hf in $(INSTALLED_BUILTINS_HEADERS) ; do \ + ${INSTALL_DATA} $(BUILTIN_SRCDIR)/"$$hf" $(DESTDIR)$(headersdir)/builtins/$$hf || exit 1; \ + done + @for hf in $(CREATED_HEADERS) ; do \ + if test -f $(BUILD_DIR)/"$$hf" ; then \ + ${INSTALL_DATA} $(BUILD_DIR)/"$$hf" $(DESTDIR)$(headersdir)/$$hf || exit 1; \ + else \ + ${INSTALL_DATA} $(srcdir)/"$$hf" $(DESTDIR)$(headersdir)/$$hf || exit 1; \ + fi ; \ + done + -$(INSTALL_DATA) $(SDIR)/bash.pc $(DESTDIR)$(pkgconfigdir)/bash.pc + +uninstall-headers: + -( cd $(DESTDIR)$(headersdir) && $(RM) $(INSTALLED_HEADERS) ) + -( cd $(DESTDIR)$(headersdir)/include && $(RM) $(INSTALLED_INCFILES) ) + -( cd $(DESTDIR)$(headersdir)/builtins && $(RM) $(INSTALLED_BUILTINS_HEADERS) ) + -( cd $(DESTDIR)$(headersdir) && $(RM) $(CREATED_HEADERS) ) + -( $(RM) $(DESTDIR)$(pkgconfigdir)/bash.pc ) + +uninstall: .made + $(RM) $(DESTDIR)$(bindir)/$(Program) $(DESTDIR)$(bindir)/bashbug + -( cd $(DESTDIR)$(docdir) && ${RM} ${OTHER_INSTALLED_DOCS} ) + -( cd $(DOCDIR) ; $(MAKE) $(MFLAGS) \ + man1dir=$(man1dir) man1ext=$(man1ext) \ + man3dir=$(man3dir) man3ext=$(man3ext) \ + infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ ) + -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + -( cd $(LOADABLES_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) $@ ) + -( cd $(LOADABLES_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) $@ ) + -( cd $(LOADABLES_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) $@ ) + -( cd $(LOADABLES_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) $@ ) + -( cd $(LOADABLES_DIR) && $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + $(RM) $(CREATED_CONFIGURE) $(CREATED_MAKEFILES) + $(RM) $(CREATED_SUPPORT) Makefile pathnames.h + +maybe-clean: + -if test X"`cd $(topdir) && pwd -P`" != X"`cd $(BUILD_DIR) && pwd -P`" ; then \ + $(RM) parser-built y.tab.c y.tab.h ; \ + fi + +recho$(EXEEXT): $(SUPPORT_SRC)recho.c + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(SUPPORT_SRC)recho.c ${LIBS_FOR_BUILD} + +zecho$(EXEEXT): $(SUPPORT_SRC)zecho.c + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(SUPPORT_SRC)zecho.c ${LIBS_FOR_BUILD} + +printenv$(EXEEXT): $(SUPPORT_SRC)printenv.c + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(SUPPORT_SRC)printenv.c ${LIBS_FOR_BUILD} + +xcase$(EXEEXT): $(SUPPORT_SRC)xcase.c + @$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(SUPPORT_SRC)xcase.c ${LIBS_FOR_BUILD} + +test tests check: force $(Program) $(TESTS_SUPPORT) + @-test -d tests || mkdir tests + @cp $(TESTS_SUPPORT) tests + @( cd $(srcdir)/tests && \ + BUILD_DIR=$(BUILD_DIR) 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} -t $(PACKAGE_VERSION) + +xdist: force + ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) + ( cd po && $(MAKE) $(MFLAGS) $@ ) + +depend: depends + +depends: force + $(Program) $(SUPPORT_SRC)mkdep -c ${CC} -- ${CCFLAGS} ${CSOURCES} + +#### PRIVATE TARGETS #### +hashtest: hashlib.c + $(CC) -DTEST_HASHING $(CCFLAGS) $(TEST_NBUCKETS) -o $@ $(srcdir)/hashlib.c xmalloc.o $(INTL_LIB) $(MALLOC_LIBRARY) + +############################ DEPENDENCIES ############################### + +# Files that depend on the definitions in config-top.h, which are not meant +# to be changed +array.o: $(srcdir)/config-top.h +bashhist.o: $(srcdir)/config-top.h +shell.o: $(srcdir)/config-top.h +input.o: $(srcdir)/config-top.h +y.tab.o: $(srcdir)/config-top.h +jobs.o: $(srcdir)/config-top.h +nojobs.o: $(srcdir)/config-top.h +execute_cmd.o: $(srcdir)/config-top.h +variables.o: $(srcdir)/config-top.h +findcmd.o: $(srcdir)/config-top.h +subst.o: $(srcdir)/config-top.h +builtins/cd.o: $(srcdir)/config-top.h +builtins/command.o: $(srcdir)/config-top.h +builtins/common.o: $(srcdir)/config-top.h +builtins/declare.o: $(srcdir)/config-top.h +builtins/break.o: $(srcdir)/config-top.h +builtins/echo.o: $(srcdir)/config-top.h +builtins/evalstring.o: $(srcdir)/config-top.h +builtins/exit.o: $(srcdir)/config-top.h +builtins/kill.o: $(srcdir)/config-top.h +builtins/shopt.o: $(srcdir)/config-top.h + +# XXX +${SH_LIBDIR}/tmpfile.o: $(srcdir)/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 +copy_cmd.o: bashansi.h assoc.h $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.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 +dispose_cmd.o: assoc.h ${BASHINCDIR}/chartypes.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 execute_cmd.h +error.o: input.h execute_cmd.h +error.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h assoc.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 parser.h +eval.o: input.h execute_cmd.h +eval.o: bashhist.h assoc.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.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 parser.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 +execute_cmd.o: $(DEFSRC)/getopt.h +execute_cmd.o: bashhist.h input.h ${GRAM_H} assoc.h hashcmd.h alias.h +execute_cmd.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/posixwait.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 flags.h execute_cmd.h +expr.o: ${BASHINCDIR}/chartypes.h +expr.o: assoc.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/typemax.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 execute_cmd.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 execute_cmd.h +flags.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashhist.h +flags.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h bashansi.h assoc.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 flags.h parser.h +general.o: pathexp.h +general.o: ${BASHINCDIR}/maxpath.h ${BASHINCDIR}/posixtime.h +general.o: ${BASHINCDIR}/chartypes.h +general.o: trap.h input.h assoc.h test.h findcmd.h +general.o: ${BASHINCDIR}/ocache.h $(DEFSRC)/common.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 pathnames.h hashlib.h +hashcmd.o: quit.h sig.h flags.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 +hashlib.o: assoc.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.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 +input.o: quit.h shell.h pathnames.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 +list.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h bashansi.h assoc.h +locale.o: config.h bashtypes.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 +locale.o: input.h assoc.h ${BASHINCDIR}/ocache.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 +mailcheck.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h assoc.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 sig.h siglist.h syntax.h dispose_cmd.h parser.h +make_cmd.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h ${BASHINCDIR}/ocache.h +make_cmd.o: shell.h execute_cmd.h pathnames.h +make_cmd.o: $(BASHINCDIR)/maxpath.h make_cmd.c assoc.h $(BASHINCDIR)/chartypes.h +make_cmd.o: unwind_prot.h $(BASHINCDIR)/posixjmp.h bashjmp.h $(BASHINCDIR)/posixwait.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 execute_cmd.o +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 +y.tab.o: ${BASHINCDIR}/typemax.h assoc.h ${BASHINCDIR}/ocache.h +y.tab.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h ${BASHINCDIR}/posixwait.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 ${BASHINCDIR}/shmbchar.h +pathexp.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h assoc.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: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h +print_cmd.o: ${GRAM_H} $(DEFSRC)/common.h +print_cmd.o: flags.h input.h assoc.h +print_cmd.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.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 +redir.o: ${DEFDIR}/pipesize.h +redir.o: trap.h assoc.h $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.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 parser.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 bashline.h +shell.o: ${GLOB_LIBSRC}/strmatch.h ${BASHINCDIR}/posixtime.h ${BASHINCDIR}/posixwait.h +shell.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h assoc.h alias.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 execute_cmd.h +sig.o: jobs.h siglist.h trap.h $(DEFSRC)/common.h bashline.h bashhist.h +sig.o: ${DEFDIR}/builtext.h +siglist.o: config.h bashtypes.h siglist.h trap.h +stringlib.o: bashtypes.h ${BASHINCDIR}/chartypes.h +stringlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h +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: bashansi.h pathexp.h assoc.h $(BASHINCDIR)/ocache.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 parser.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 ${BASHINCDIR}/shmbchar.h +subst.o: ${DEFDIR}/builtext.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: ${BASHINCDIR}/stat-time.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h +test.o: $(GLOB_LIBSRC)/strmatch.h bashansi.h pathexp.h assoc.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 parser.h +trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h +trap.o: signames.h $(DEFSRC)/common.h +trap.o: ${DEFDIR}/builtext.h jobs.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 +unwind_prot.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h error.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 parser.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 assoc.h ${DEFSRC}/getopt.h +variables.o: version.h $(DEFDIR)/builtext.h +version.o: conftypes.h patchlevel.h version.h +xmalloc.o: config.h bashtypes.h ${BASHINCDIR}/ansi_stdlib.h error.h +xmalloc.o: ${BASHINCDIR}/stdc.h $(ALLOC_LIBSRC)/shmalloc.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 assoc.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 parser.h +jobs.o: execute_cmd.h 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 +jobs.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h $(BASHINCDIR)/typemax.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 parser.h +nojobs.o: $(DEFDIR)/builtext.h +nojobs.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h $(BASHINCDIR)/typemax.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: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.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 pathexp.h +arrayfunc.o: execute_cmd.h +arrayfunc.o: assoc.h $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h +arrayfunc.o: $(DEFSRC)/common.h +arrayfunc.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h +assoc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +assoc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h +assoc.o: command.h ${BASHINCDIR}/stdc.h error.h +assoc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h +assoc.o: assoc.h hashlib.h +assoc.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +assoc.o: make_cmd.h subst.h sig.h pathnames.h externs.h +assoc.o: array.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h +assoc.o: $(DEFSRC)/common.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 ${BASHINCDIR}/shmbchar.h +braces.o: ${BASHINCDIR}/typemax.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.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 hashlib.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 assoc.h array.h +pcomplib.o: ${BASHINCDIR}/posixjmp.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.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 +pcomplete.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h +pcomplete.o: ${DEFDIR}/builtext.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 parser.h +bashhist.o: flags.h input.h parser.h pathexp.h $(DEFSRC)/common.h bashline.h +bashhist.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h bashhist.h assoc.h +bashhist.o: $(GLOB_LIBSRC)/strmatch.h ${GLOB_LIBSRC}/glob.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 parser.h +bashline.o: builtins.h bashhist.h bashline.h execute_cmd.h findcmd.h pathexp.h +bashline.o: trap.h flags.h assoc.h $(BASHINCDIR)/ocache.h +bashline.o: $(DEFSRC)/common.h $(GLOB_LIBSRC)/glob.h alias.h +bashline.o: pcomplete.h ${BASHINCDIR}/chartypes.h input.h +bashline.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h +bashline.o: ${DEFDIR}/builtext.h +bracecomp.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h +bracecomp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h +bracecomp.o: command.h ${BASHINCDIR}/stdc.h error.h +bracecomp.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h +bracecomp.o: array.h hashlib.h alias.h builtins.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: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h bashhist.h assoc.h +bracecomp.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h + +# library dependencies + +bashhist.o: $(RL_LIBSRC)/rltypedefs.h +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 +bashline.o: $(RL_LIBSRC)/rltypedefs.h ${RL_LIBSRC}/rlmbutil.h +bracecomp.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h +bracecomp.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h +bracecomp.o: $(RL_LIBSRC)/rltypedefs.h +y.tab.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h +y.tab.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h +y.tab.o: $(RL_LIBSRC)/rltypedefs.h +subst.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h +subst.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h +shell.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h +shell.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h +shell.o: $(RL_LIBSRC)/rltypedefs.h +variables.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h +variables.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h +variables.o: $(RL_LIBSRC)/rltypedefs.h +jobs.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h +jobs.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h +jobs.o: $(RL_LIBSRC)/rltypedefs.h + +shell.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h +variables.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 + +bashline.o: $(TILDE_LIBSRC)/tilde.h +bracecomp.o: $(TILDE_LIBSRC)/tilde.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 +jobs.o: $(TILDE_LIBSRC)/tilde.h +y.tab.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 +locale.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 +y.tab.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +pathexp.o: 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 + +# XXX +$(MALLOC_SOURCE): 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 parser.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 parser.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 pathnames.h +builtins/evalstring.o: ${DEFDIR}/builtext.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 +builtins/mkbuiltins.o: $(BASHINCDIR)/stdc.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 pathnames.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 pathnames.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/break.o: pathnames.h execute_cmd.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/builtin.o: pathnames.h execute_cmd.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 pathnames.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 pathnames.h +builtins/colon.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/colon.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/colon.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/colon.o: pathnames.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 pathnames.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 pathnames.h flags.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/echo.o: pathnames.h +builtins/echo.o: $(DEFSRC)/common.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 pathnames.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/eval.o: pathnames.h +builtins/exec.o: bashtypes.h pathnames.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/exec.o: pathnames.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/exit.o: pathnames.h execute_cmd.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 pathnames.h parser.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/fg_bg.o: pathnames.h execute_cmd.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/getopts.o: pathnames.h execute_cmd.h +builtins/hash.o: bashtypes.h execute_cmd.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/hash.o: pathnames.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 +builtins/help.o: conftypes.h quit.h execute_cmd.h +builtins/help.o: $(GLOB_LIBSRC)/glob.h pathnames.h +builtins/history.o: bashtypes.h pathnames.h parser.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/inlib.o: pathnames.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/jobs.o: pathnames.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/kill.o: pathnames.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/let.o: pathnames.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}/shmbutil.h ${BASHINCDIR}/shmbchar.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 pathnames.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/read.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h +builtins/read.o: pathnames.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/return.o: pathnames.h execute_cmd.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/set.o: pathnames.h parser.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/setattr.o: pathnames.h flags.h execute_cmd.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/shift.o: pathnames.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 pathnames.h +builtins/shopt.o: bashhist.h bashline.h +builtins/source.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/source.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/source.o: findcmd.h $(DEFSRC)/bashgetopt.h flags.h trap.h +builtins/source.o: pathnames.h execute_cmd.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/suspend.o: pathnames.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: execute_cmd.h test.h pathnames.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/times.o: pathnames.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/trap.o: pathnames.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/type.o: pathnames.h execute_cmd.h parser.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/ulimit.o: pathnames.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 pathnames.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: execute_cmd.h +builtins/wait.o: ${BASHINCDIR}/chartypes.h pathnames.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 pathnames.h general.h +builtins/complete.o: bashtypes.h ${BASHINCDIR}/chartypes.h xmalloc.h +builtins/complete.o: pcomplete.h +builtins/complete.o: ${DEFSRC}/common.h ${DEFSRC}/bashgetopt.h +builtins/mapfile.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h +builtins/mapfile.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h +builtins/mapfile.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/mapfile.o: pathnames.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/mapfile.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +builtins/mkbuiltins.o: ${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/mapfile.o: $(DEFSRC)/mapfile.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-5.1/NEWS b/bash-5.1/NEWS new file mode 100644 index 0000000..a6170be --- /dev/null +++ b/bash-5.1/NEWS @@ -0,0 +1,2403 @@ +This is a terse description of the new features added to bash-5.1 since +the release of bash-5.0. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. `bind -x' now supports different bindings for different editing modes and + keymaps. + +b. Bash attempts to optimize the number of times it forks when executing + commands in subshells and from `bash -c'. + +c. Here documents and here strings now use pipes for the expanded document if + it's smaller than the pipe buffer size, reverting to temporary files if it's + larger. + +d. There are new loadable builtins: mktemp, accept, mkfifo, csv, cut/lcut + +e. In posix mode, `trap -p' now displays signals whose disposition is SIG_DFL + and those that were SIG_IGN when the shell starts. + +f. The shell now expands the history number (e.g., in PS1) even if it is not + currently saving commands to the history list. + +g. `read -e' may now be used with arbitrary file descriptors (`read -u N'). + +h. The `select' builtin now runs traps if its internal call to the read builtin + is interrupted by a signal. + +i. SRANDOM: a new variable that expands to a 32-bit random number that is not + produced by an LCRNG, and uses getrandom/getentropy, falling back to + /dev/urandom or arc4random if available. There is a fallback generator if + none of these are available. + +j. shell-transpose-words: a new bindable readline command that uses the same + definition of word as shell-forward-word, etc. + +k. The shell now adds default bindings for shell-forward-word, + shell-backward-word, shell-transpose-words, and shell-kill-word. + +l. Bash now allows ARGV0 appearing in the initial shell environment to set $0. + +m. If `unset' is executed without option arguments, bash tries to unset a shell + function if a name argument cannot be a shell variable name because it's not + an identifier. + +n. The `test -N' operator uses nanosecond timestamp granularity if it's + available. + +o. Bash posix mode now treats assignment statements preceding shell function + definitions the same as in its default mode, since POSIX has changed and + no longer requires those assignments to persist after the function returns + (POSIX interp 654). + +p. BASH_REMATCH is no longer readonly. + +q. wait: has a new -p VARNAME option, which stores the PID returned by `wait -n' + or `wait' without arguments. + +r. Sorting the results of pathname expansion now uses byte-by-byte comparisons + if two strings collate equally to impose a total order; the result of a + POSIX interpretation. + +s. Bash now allows SIGINT trap handlers to execute recursively. + +t. Bash now saves and restores state around setting and unsetting posix mode, + instead of having unsetting posix mode set a known state. + +u. Process substitution is now available in posix mode. + +v. READLINE_MARK: a new variable available while executing commands bound with + `bind -x', contains the value of the mark. + +w. Bash removes SIGCHLD from the set of blocked signals if it's blocked at shell + startup. + +x. `test -v N' can now test whether or not positional parameter N is set. + +y. `local' now honors the `-p' option to display all local variables at the + current context. + +z. The `@a' variable transformation now prints attributes for unset array + variables. + +aa. The `@A' variable transformation now prints a declare command that sets a + variable's attributes if the variable has attributes but is unset. + +bb. `declare' and `local' now have a -I option that inherits attributes and + value from a variable with the same name at a previous scope. + +cc. When run from a -c command, `jobs' now reports the status of completed jobs. + +dd. New `U', `u', and `L' parameter transformations to convert to uppercase, + convert first character to uppercase, and convert to lowercase, + respectively. + +ee. PROMPT_COMMAND: can now be an array variable, each element of which can + contain a command to be executed like a string PROMPT_COMMAND variable. + +ff. `ulimit' has a -R option to report and set the RLIMIT_RTTIME resource. + +gg. Associative arrays may be assigned using a list of key-value pairs within + a compound assignment. Compound assignments where the words are not of + the form [key]=value are assumed to be key-value assignments. A missing or + empty key is an error; a missing value is treated as NULL. Assignments may + not mix the two forms. + +hh. New `K' parameter transformation to display associative arrays as key- + value pairs. + +ii. Writing history to syslog now handles messages longer than the syslog max + length by writing multiple messages with a sequence number. + +jj. SECONDS and RANDOM may now be assigned using arithmetic expressions, since + they are nominally integer variables. LINENO is not an integer variable. + +kk. Bash temporarily suppresses the verbose option when running the DEBUG trap + while running a command from the `fc' builtin. + +ll. `wait -n' now accepts a list of job specifications as arguments and will + wait for the first one in the list to change state. + +mm. The associative array implementation can now dynamically increase the + size of the hash table based on insertion patterns. + +nn. HISTFILE is now readonly in a restricted shell. + +oo. The bash malloc now returns memory that is 16-byte aligned on 64-bit + systems. + +pp. If the hash builtin is listing hashed filenames portably, don't print + anything if the table is empty. + +qq. GLOBIGNORE now ignores `.' and `..' as a terminal pathname component. + +rr. Bash attempts to optimize away forks in the last command in a function body + under appropriate circumstances. + +ss. The globbing code now uses fnmatch(3) to check collation elements (if + available) even in cases without multibyte characters. + +tt. The `fg' and `bg' builtins now return an error in a command substitution + when asked to restart a job inherited from the parent shell. + +uu. The shell now attempts to unlink all FIFOs on exit, whether a consuming + process has finished with them or not. + +vv. There is a new contributed loadable builtin: asort. + +2. New Features in Readline + +a. If a second consecutive completion attempt produces matches where the first + did not, treat it as a new completion attempt and insert a match as + appropriate. + +b. Bracketed paste mode works in more places: incremental search strings, vi + overstrike mode, character search, and reading numeric arguments. + +c. Readline automatically switches to horizontal scrolling if the terminal has + only one line. + +d. Unbinding all key sequences bound to a particular readline function now + descends into keymaps for multi-key sequences. + +e. rl-clear-display: new bindable command that clears the screen and, if + possible, the scrollback buffer (bound to emacs mode M-C-l by default). + +f. New active mark and face feature: when enabled, it will highlight the text + inserted by a bracketed paste (the `active region') and the text found by + incremental and non-incremental history searches. This is tied to bracketed + paste and can be disabled by turning off bracketed paste. + +g. Readline sets the mark in several additional commands. + +h. Bracketed paste mode is enabled by default. + +i. Readline tries to take advantage of the more regular structure of UTF-8 + characters to identify the beginning and end of characters when moving + through the line buffer. + +j. The bindable operate-and-get-next command (and its default bindings) are + now part of readline instead of a bash-specific addition. + +k. The signal cleanup code now blocks SIGINT while processing after a SIGINT. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-5.0 since +the release of bash-4.4. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. The `wait' builtin can now wait for the last process substitution created. + +b. There is an EPOCHSECONDS variable, which expands to the time in seconds + since the Unix epoch. + +c. There is an EPOCHREALTIME variable, which expands to the time in seconds + since the Unix epoch with microsecond granularity. + +d. New loadable builtins: rm, stat, fdflags. + +e. BASH_ARGV0: a new variable that expands to $0 and sets $0 on assignment. + +f. When supplied a numeric argument, the shell-expand-line bindable readline + command does not perform quote removal and suppresses command and process + substitution. + +g. `history -d' understands negative arguments: negative arguments offset from + the end of the history list. + +h. The `name' argument to the `coproc' reserved word now undergoes word + expansion, so unique coprocs can be created in loops. + +i. A nameref name resolution loop in a function now resolves to a variable by + that name in the global scope. + +j. The `wait' builtin now has a `-f' option, which signifies to wait until the + specified job or process terminates, instead of waiting until it changes + state. + +k. There is a define in config-top.h that allows the shell to use a static + value for $PATH, overriding whatever is in the environment at startup, for + use by the restricted shell. + +l. Process substitution does not inherit the `v' option, like command + substitution. + +m. If a non-interactive shell with job control enabled detects that a foreground + job died due to SIGINT, it acts as if it received the SIGINT. + +n. The SIGCHLD trap is run once for each exiting child process even if job + control is not enabled when the shell is in Posix mode. + +o. A new shopt option: localvar_inherit; if set, a local variable inherits the + value of a variable with the same name at the nearest preceding scope. + +p. `bind -r' now checks whether a key sequence is bound before binding it to + NULL, to avoid creating keymaps for a multi-key sequence. + +q. A numeric argument to the line editing `operate-and-get-next' command + specifies which history entry to use. + +r. The positional parameters are now assigned before running the shell startup + files, so startup files can use $@. + +s. There is a compile-time option that forces the shell to disable the check + for an inherited OLDPWD being a directory. + +t. The `history' builtin can now delete ranges of history entries using + `-d start-end'. + +u. The `vi-edit-and-execute-command' bindable readline command now puts readline + back in vi insertion mode after executing commands from the edited file. + +v. The command completion code now matches aliases and shell function names + case-insensitively if the readline completion-ignore-case variable is set. + +w. There is a new `assoc_expand_once' shell option that attempts to expand + associative array subscripts only once. + +x. The shell only sets up BASH_ARGV and BASH_ARGC at startup if extended + debugging mode is active. The old behavior of unconditionally setting them + is available as part of the shell compatibility options. + +y. The `umask' builtin now allows modes and masks greater than octal 777. + +z. The `times' builtin now honors the current locale when printing a decimal + point. + +aa. There is a new (disabled by default, undocumented) shell option to enable + and disable sending history to syslog at runtime. + +bb. Bash no longer allows variable assignments preceding a special builtin that + changes variable attributes to propagate back to the calling environment + unless the compatibility level is 44 or lower. + +cc. You can set the default value for $HISTSIZE at build time in config-top.h. + +dd. The `complete' builtin now accepts a -I option that applies the completion + to the initial word on the line. + +ee. The internal bash malloc now uses mmap (if available) to satisfy requests + greater than 128K bytes, so free can use mfree to return the pages to the + kernel. + +ff. The shell doesn't automatically set BASH_ARGC and BASH_ARGV at startup + unless it's in debugging mode, as the documentation has always said, but + will dynamically create them if a script references them at the top level + without having enabled debugging mode. + +gg. The localvar_inherit option will not attempt to inherit a value from a + variable of an incompatible type (indexed vs. associative arrays, for + example). + +hh. The `globasciiranges' option is now enabled by default; it can be set to + off by default at configuration time. + +ii. Associative and indexed arrays now allow subscripts consisting solely of + whitespace. + +jj. `checkwinsize' is now enabled by default. + +kk. The `localvar_unset' shopt option is now visible and documented. + +ll. The `progcomp_alias' shopt option is now visible and documented. + +mm. The signal name processing code now understands `SIGRTMIN+n' all the way + up to SIGRTMAX. + +nn. There is a new `seq' loadable builtin. + +oo. Trap execution now honors the (internal) max invocations of `eval', since + traps are supposed to be executed as if using `eval'. + +pp. The $_ variable doesn't change when the shell executes a command that forks. + +qq. The `kill' builtin now supports -sSIGNAME and -nSIGNUM, even though + conforming applications aren't supposed to use them. + +rr. POSIX mode now enables the `shift_verbose' option. + +2. New Features in Readline + +a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as + Posix specifies (uses fnmatch(3) if available). + +b. There are new `next-screen-line' and `previous-screen-line' bindable + commands, which move the cursor to the same column in the next, or previous, + physical line, respectively. + +c. There are default key bindings for control-arrow-key key combinations. + +d. A negative argument (-N) to `quoted-insert' means to insert the next N + characters using quoted-insert. + +e. New public function: rl_check_signals(), which allows applications to + respond to signals that readline catches while waiting for input using + a custom read function. + +f. There is new support for conditionally testing the readline version in an + inputrc file, with a full set of arithmetic comparison operators available. + +g. There is a simple variable comparison facility available for use within an + inputrc file. Allowable operators are equality and inequality; string + variables may be compared to a value; boolean variables must be compared to + either `on' or `off'; variable names are separated from the operator by + whitespace. + +h. The history expansion library now understands command and process + substitution and extended globbing and allows them to appear anywhere in a + word. + +i. The history library has a new variable that allows applications to set the + initial quoting state, so quoting state can be inherited from a previous + line. + +j. Readline now allows application-defined keymap names; there is a new public + function, rl_set_keymap_name(), to do that. + +k. The "Insert" keypad key, if available, now puts readline into overwrite + mode. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-4.4 since +the release of bash-4.3. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. There is now a settable configuration #define that will cause the shell + to exit if the shell is running setuid without the -p option and setuid + to the real uid fails. + +b. Command and process substitutions now turn off the `-v' option when + executing, as other shells seem to do. + +c. The default value for the `checkhash' shell option may now be set at + compile time with a #define. + +d. The `mapfile' builtin now has a -d option to use an arbitrary character + as the record delimiter, and a -t option to strip the delimiter as + supplied with -d. + +e. The maximum number of nested recursive calls to `eval' is now settable in + config-top.h; the default is no limit. + +f. The `-p' option to declare and similar builtins will display attributes for + named variables even when those variables have not been assigned values + (which are technically unset). + +g. The maximum number of nested recursive calls to `source' is now settable + in config-top.h; the default is no limit. + +h. All builtin commands recognize the `--help' option and print a usage + summary. + +i. Bash does not allow function names containing `/' and `=' to be exported. + +j. The `ulimit' builtin has new -k (kqueues) and -P (pseudoterminals) options. + +k. The shell now allows `time ; othercommand' to time null commands. + +l. There is a new `--enable-function-import' configuration option to allow + importing shell functions from the environment; import is enabled by + default. + +m. `printf -v var ""' will now set `var' to the empty string, as if `var=""' + had been executed. + +n. GLOBIGNORE, the pattern substitution word expansion, and programmable + completion match filtering now honor the value of the `nocasematch' option. + +o. There is a new ${parameter@spec} family of operators to transform the + value of `parameter'. + +p. Bash no longer attempts to perform compound assignment if a variable on the + rhs of an assignment statement argument to `declare' has the form of a + compound assignment (e.g., w='(word)' ; declare foo=$w); compound + assignments are accepted if the variable was already declared as an array, + but with a warning. + +q. The declare builtin no longer displays array variables using the compound + assignment syntax with quotes; that will generate warnings when re-used as + input, and isn't necessary. + +r. Executing the rhs of && and || will no longer cause the shell to fork if + it's not necessary. + +s. The `local' builtin takes a new argument: `-', which will cause it to save + and the single-letter shell options and restore their previous values at + function return. + +t. `complete' and `compgen' have a new `-o nosort' option, which forces + readline to not sort the completion matches. + +u. Bash now allows waiting for the most recent process substitution, since it + appears as $!. + +v. The `unset' builtin now unsets a scalar variable if it is subscripted with + a `0', analogous to the ${var[0]} expansion. + +w. `set -i' is no longer valid, as in other shells. + +x. BASH_SUBSHELL is now updated for process substitution and group commands + in pipelines, and is available with the same value when running any exit + trap. + +y. Bash now checks $INSIDE_EMACS as well as $EMACS when deciding whether or + not bash is being run in a GNU Emacs shell window. + +z. Bash now treats SIGINT received when running a non-builtin command in a + loop the way it has traditionally treated running a builtin command: + running any trap handler and breaking out of the loop. + +aa. New variable: EXECIGNORE; a colon-separate list of patterns that will + cause matching filenames to be ignored when searching for commands. + +bb. Aliases whose value ends in a shell metacharacter now expand in a way to + allow them to be `pasted' to the next token, which can potentially change + the meaning of a command (e.g., turning `&' into `&&'). + +cc. `make install' now installs the example loadable builtins and a set of + bash headers to use when developing new loadable builtins. + +dd. `enable -f' now attempts to call functions named BUILTIN_builtin_load when + loading BUILTIN, and BUILTIN_builtin_unload when deleting it. This allows + loadable builtins to run initialization and cleanup code. + +ee. There is a new BASH_LOADABLES_PATH variable containing a list of directories + where the `enable -f' command looks for shared objects containing loadable + builtins. + +ff. The `complete_fullquote' option to `shopt' changes filename completion to + quote all shell metacharacters in filenames and directory names. + +gg. The `kill' builtin now has a `-L' option, equivalent to `-l', for + compatibility with Linux standalone versions of kill. + +hh. BASH_COMPAT and FUNCNEST can be inherited and set from the shell's initial + environment. + +ii. inherit_errexit: a new `shopt' option that, when set, causes command + substitutions to inherit the -e option. By default, those subshells disable + -e. It's enabled as part of turning on posix mode. + +jj. New prompt string: PS0. Expanded and displayed by interactive shells after + reading a complete command but before executing it. + +kk. Interactive shells now behave as if SIGTSTP/SIGTTIN/SIGTTOU are set to + SIG_DFL when the shell is started, so they are set to SIG_DFL in child + processes. + +ll. Posix-mode shells now allow double quotes to quote the history expansion + character. + +mm. OLDPWD can be inherited from the environment if it names a directory. + +nn. Shells running as root no longer inherit PS4 from the environment, closing + a security hole involving PS4 expansion performing command substitution. + +oo. If executing an implicit `cd' when the `autocd' option is set, bash will + now invoke a function named `cd' if one exists before executing the `cd' + builtin. + +pp. Value conversions (arithmetic expansions, case modification, etc.) now + happen when assigning elements of an array using compound assignment. + +qq. There is a new option settable in config-top.h that makes multiple + directory arguments to `cd' a fatal error. + +rr. Bash now uses mktemp() when creating internal temporary files; it produces + a warning at build time on many Linux systems. + +2. New Features in Readline + +a. The history truncation code now uses the same error recovery mechanism as + the history writing code, and restores the old version of the history file + on error. The error recovery mechanism handles symlinked history files. + +b. There is a new bindable variable, `enable-bracketed-paste', which enables + support for a terminal's bracketed paste mode. + +c. The editing mode indicators can now be strings and are user-settable + (new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string' + variables). Mode strings can contain invisible character sequences. + Setting mode strings to null strings restores the defaults. + +d. Prompt expansion adds the mode string to the last line of a multi-line + prompt (one with embedded newlines). + +e. There is a new bindable variable, `colored-completion-prefix', which, if + set, causes the common prefix of a set of possible completions to be + displayed in color. + +f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs- + mode yank-pop. + +g. The redisplay code underwent several efficiency improvements for multibyte + locales. + +h. The insert-char function attempts to batch-insert all pending typeahead + that maps to self-insert, as long as it is coming from the terminal. + +i. rl_callback_sigcleanup: a new application function that can clean up and + unset any state set by readline's callback mode. Intended to be used + after a signal. + +j. If an incremental search string has its last character removed with DEL, the + resulting empty search string no longer matches the previous line. + +k. If readline reads a history file that begins with `#' (or the value of + the history comment character) and has enabled history timestamps, the + history entries are assumed to be delimited by timestamps. This allows + multi-line history entries. + +l. Readline now throws an error if it parses a key binding without a + terminating `:' or whitespace. + +m. The default binding for ^W in vi mode now uses word boundaries specified + by Posix (vi-unix-word-rubout is bindable command name). + +n. rl_clear_visible_line: new application-callable function; clears all + screen lines occupied by the current visible readline line. + +o. rl_tty_set_echoing: application-callable function that controls whether + or not readline thinks it is echoing terminal output. + +p. Handle >| and strings of digits preceding and following redirection + specifications as single tokens when tokenizing the line for history + expansion. + +q. Fixed a bug with displaying completions when the prefix display length + is greater than the length of the completions to be displayed. + +r. The :p history modifier now applies to the entire line, so any expansion + specifying :p causes the line to be printed instead of expanded. + +s. New application-callable function: rl_pending_signal(): returns the signal + number of any signal readline has caught but not yet handled. + +t. New application-settable variable: rl_persistent_signal_handlers: if set + to a non-zero value, readline will enable the readline-6.2 signal handler + behavior in callback mode: handlers are installed when + rl_callback_handler_install is called and removed removed when a complete + line has been read. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-4.3 since +the release of bash-4.2. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. The `helptopic' completion action now maps to all the help topics, not just + the shell builtins. + +b. The `help' builtin no longer does prefix substring matching first, so + `help read' does not match `readonly', but will do it if exact string + matching fails. + +c. The shell can be compiled to not display a message about processes that + terminate due to SIGTERM. + +d. Non-interactive shells now react to the setting of checkwinsize and set + LINES and COLUMNS after a foreground job exits. + +e. There is a new shell option, `globasciiranges', which, when set to on, + forces globbing range comparisons to use character ordering as if they + were run in the C locale. + +f. There is a new shell option, `direxpand', which makes filename completion + expand variables in directory names in the way bash-4.1 did. + +g. In Posix mode, the `command' builtin does not change whether or not a + builtin it shadows is treated as an assignment builtin. + +h. The `return' and `exit' builtins accept negative exit status arguments. + +i. The word completion code checks whether or not a filename containing a + shell variable expands to a directory name and appends `/' to the word + as appropriate. The same code expands shell variables in command names + when performing command completion. + +j. In Posix mode, it is now an error to attempt to define a shell function + with the same name as a Posix special builtin. + +k. When compiled for strict Posix conformance, history expansion is disabled + by default. + +l. The history expansion character (!) does not cause history expansion when + followed by the closing quote in a double-quoted string. + +m. `complete' and its siblings compgen/compopt now takes a new `-o noquote' + option to inhibit quoting of the completions. + +n. Setting HISTSIZE to a value less than zero causes the history list to be + unlimited (setting it 0 zero disables the history list). + +o. Setting HISTFILESIZE to a value less than zero causes the history file size + to be unlimited (setting it to 0 causes the history file to be truncated + to zero size). + +p. The `read' builtin now skips NUL bytes in the input. + +q. There is a new `bind -X' option to print all key sequences bound to Unix + commands. + +r. When in Posix mode, `read' is interruptible by a trapped signal. After + running the trap handler, read returns 128+signal and throws away any + partially-read input. + +s. The command completion code skips whitespace and assignment statements + before looking for the command name word to be completed. + +t. The build process has a new mechanism for constructing separate help files + that better reflects the current set of compilation options. + +u. The -nt and -ot options to test now work with files with nanosecond + timestamp resolution. + +v. The shell saves the command history in any shell for which history is + enabled and HISTFILE is set, not just interactive shells. + +w. The shell has `nameref' variables and new -n(/+n) options to declare and + unset to use them, and a `test -R' option to test for them. + +x. The shell now allows assigning, referencing, and unsetting elements of + indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which + count back from the last element of the array. + +y. The {x} operators to the [[ conditional command now do string + comparison according to the current locale if the compatibility level + is greater than 40. + +r. Programmable completion now uses the completion for `b' instead of `a' + when completion is attempted on a line like: a $(b c. + +s. Force extglob on temporarily when parsing the pattern argument to + the == and != operators to the [[ command, for compatibility. + +t. Changed the behavior of interrupting the wait builtin when a SIGCHLD is + received and a trap on SIGCHLD is set to be Posix-mode only. + +u. The read builtin has a new `-N nchars' option, which reads exactly NCHARS + characters, ignoring delimiters like newline. + +v. The mapfile/readarray builtin no longer stores the commands it invokes via + callbacks in the history list. + +w. There is a new `compat40' shopt option. + +2. New Features in Readline + +a. New bindable function: menu-complete-backward. + +b. In the vi insertion keymap, C-n is now bound to menu-complete by default, + and C-p to menu-complete-backward. + +c. When in vi command mode, repeatedly hitting ESC now does nothing, even + when ESC introduces a bound key sequence. This is closer to how + historical vi behaves. + +d. New bindable function: skip-csi-sequence. Can be used as a default to + consume key sequences generated by keys like Home and End without having + to bind all keys. + +e. New application-settable function: rl_filename_rewrite_hook. Can be used + to rewite or modify filenames read from the file system before they are + compared to the word to be completed. + +f. New bindable variable: skip-completed-text, active when completing in the + middle of a word. If enabled, it means that characters in the completion + that match characters in the remainder of the word are "skipped" rather + than inserted into the line. + +g. The pre-readline-6.0 version of menu completion is available as + "old-menu-complete" for users who do not like the readline-6.0 version. + +h. New bindable variable: echo-control-characters. If enabled, and the + tty ECHOCTL bit is set, controls the echoing of characters corresponding + to keyboard-generated signals. + +i. New bindable variable: enable-meta-key. Controls whether or not readline + sends the smm/rmm sequences if the terminal indicates it has a meta key + that enables eight-bit characters. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-4.0 since +the release of bash-3.2. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. When using substring expansion on the positional parameters, a starting + index of 0 now causes $0 to be prefixed to the list. + +b. The `help' builtin now prints its columns with entries sorted vertically + rather than horizontally. + +c. There is a new variable, $BASHPID, which always returns the process id of + the current shell. + +d. There is a new `autocd' option that, when enabled, causes bash to attempt + to `cd' to a directory name that is supplied as the first word of a + simple command. + +e. There is a new `checkjobs' option that causes the shell to check for and + report any running or stopped jobs at exit. + +f. The programmable completion code exports a new COMP_TYPE variable, set to + a character describing the type of completion being attempted. + +g. The programmable completion code exports a new COMP_KEY variable, set to + the character that caused the completion to be invoked (e.g., TAB). + +h. If creation of a child process fails due to insufficient resources, bash + will try again several times before reporting failure. + +i. The programmable completion code now uses the same set of characters as + readline when breaking the command line into a list of words. + +j. The block multiplier for the ulimit -c and -f options is now 512 when in + Posix mode, as Posix specifies. + +k. Changed the behavior of the read builtin to save any partial input received + in the specified variable when the read builtin times out. This also + results in variables specified as arguments to read to be set to the empty + string when there is no input available. When the read builtin times out, + it returns an exit status greater than 128. + +l. The shell now has the notion of a `compatibility level', controlled by + new variables settable by `shopt'. Setting this variable currently + restores the bash-3.1 behavior when processing quoted strings on the rhs + of the `=~' operator to the `[[' command. + +m. The `ulimit' builtin now has new -b (socket buffer size) and -T (number + of threads) options. + +n. The -p option to `declare' now displays all variable values and attributes + (or function values and attributes if used with -f). + +o. There is a new `compopt' builtin that allows completion functions to modify + completion options for existing completions or the completion currently + being executed. + +p. The `read' builtin has a new -i option which inserts text into the reply + buffer when using readline. + +q. A new `-E' option to the complete builtin allows control of the default + behavior for completion on an empty line. + +r. There is now limited support for completing command name words containing + globbing characters. + +s. Changed format of internal help documentation for all builtins to roughly + follow man page format. + +t. The `help' builtin now has a new -d option, to display a short description, + and a -m option, to print help information in a man page-like format. + +u. There is a new `mapfile' builtin to populate an array with lines from a + given file. The name `readarray' is a synonym. + +v. If a command is not found, the shell attempts to execute a shell function + named `command_not_found_handle', supplying the command words as the + function arguments. + +w. There is a new shell option: `globstar'. When enabled, the globbing code + treats `**' specially -- it matches all directories (and files within + them, when appropriate) recursively. + +x. There is a new shell option: `dirspell'. When enabled, the filename + completion code performs spelling correction on directory names during + completion. + +y. The `-t' option to the `read' builtin now supports fractional timeout + values. + +z. Brace expansion now allows zero-padding of expanded numeric values and + will add the proper number of zeroes to make sure all values contain the + same number of digits. + +aa. There is a new bash-specific bindable readline function: `dabbrev-expand'. + It uses menu completion on a set of words taken from the history list. + +bb. The command assigned to a key sequence with `bind -x' now sets two new + variables in the environment of the executed command: READLINE_LINE_BUFFER + and READLINE_POINT. The command can change the current readline line + and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, + respectively. + +cc. There is a new &>> redirection operator, which appends the standard output + and standard error to the named file. + +dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects + the standard error for a command through a pipe. + +ee. The new `;&' case statement action list terminator causes execution to + continue with the action associated with the next pattern in the + statement rather than terminating the command. + +ff. The new `;;&' case statement action list terminator causes the shell to + test the next set of patterns after completing execution of the current + action, rather than terminating the command. + +gg. The shell understands a new variable: PROMPT_DIRTRIM. When set to an + integer value greater than zero, prompt expansion of \w and \W will + retain only that number of trailing pathname components and replace + the intervening characters with `...'. + +hh. There are new case-modifying word expansions: uppercase (^[^]) and + lowercase (,[,]). They can work on either the first character or + array element, or globally. They accept an optional shell pattern + that determines which characters to modify. There is an optionally- + configured feature to include capitalization operators. + +ii. The shell provides associative array variables, with the appropriate + support to create, delete, assign values to, and expand them. + +jj. The `declare' builtin now has new -l (convert value to lowercase upon + assignment) and -u (convert value to uppercase upon assignment) options. + There is an optionally-configurable -c option to capitalize a value at + assignment. + +kk. There is a new `coproc' reserved word that specifies a coprocess: an + asynchronous command run with two pipes connected to the creating shell. + Coprocs can be named. The input and output file descriptors and the + PID of the coprocess are available to the calling shell in variables + with coproc-specific names. + +ll. A value of 0 for the -t option to `read' now returns success if there is + input available to be read from the specified file descriptor. + +mm. CDPATH and GLOBIGNORE are ignored when the shell is running in privileged + mode. + +nn. New bindable readline functions shell-forward-word and shell-backward-word, + which move forward and backward words delimited by shell metacharacters + and honor shell quoting. + +oo. New bindable readline functions shell-backward-kill-word and shell-kill-word + which kill words backward and forward, but use the same word boundaries + as shell-forward-word and shell-backward-word. + +2. New Features in Readline + +a. A new variable, rl_sort_completion_matches; allows applications to inhibit + match list sorting (but beware: some things don't work right if + applications do this). + +b. A new variable, rl_completion_invoking_key; allows applications to discover + the key that invoked rl_complete or rl_menu_complete. + +c. The functions rl_block_sigint and rl_release_sigint are now public and + available to calling applications who want to protect critical sections + (like redisplay). + +d. The functions rl_save_state and rl_restore_state are now public and + available to calling applications; documented rest of readline's state + flag values. + +e. A new user-settable variable, `history-size', allows setting the maximum + number of entries in the history list. + +f. There is a new implementation of menu completion, with several improvements + over the old; the most notable improvement is a better `completions + browsing' mode. + +g. The menu completion code now uses the rl_menu_completion_entry_function + variable, allowing applications to provide their own menu completion + generators. + +h. There is support for replacing a prefix of a pathname with a `...' when + displaying possible completions. This is controllable by setting the + `completion-prefix-display-length' variable. Matches with a common prefix + longer than this value have the common prefix replaced with `...'. + +i. There is a new `revert-all-at-newline' variable. If enabled, readline will + undo all outstanding changes to all history lines when `accept-line' is + executed. + +j. If the kernel supports it, readline displays special characters + corresponding to a keyboard-generated signal when the signal is received. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-3.2 since +the release of bash-3.1. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. Changed the parameter pattern replacement functions to not anchor the + pattern at the beginning of the string if doing global replacement - that + combination doesn't make any sense. + +b. When running in `word expansion only' mode (--wordexp option), inhibit + process substitution. + +c. Loadable builtins now work on MacOS X 10.[34]. + +d. Shells running in posix mode no longer set $HOME, as POSIX requires. + +e. The code that checks for binary files being executed as shell scripts now + checks only for NUL rather than any non-printing character. + +f. Quoting the string argument to the [[ command's =~ operator now forces + string matching, as with the other pattern-matching operators. + +2. New Features in Readline + +a. Calling applications can now set the keyboard timeout to 0, allowing + poll-like behavior. + +b. The value of SYS_INPUTRC (configurable at compilation time) is now used as + the default last-ditch startup file. + +c. The history file reading functions now allow windows-like \r\n line + terminators. + +------------------------------------------------------------------------------- +This is a terse description of the new features added to bash-3.1 since +the release of bash-3.0. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +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 retrieved 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 definitions 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. ${parameter: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 iteration 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. +------------------------------------------------------------------------------- + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without any warranty. diff --git a/bash-5.1/NOTES b/bash-5.1/NOTES new file mode 100644 index 0000000..6fa019a --- /dev/null +++ b/bash-5.1/NOTES @@ -0,0 +1,352 @@ +Platform-Specific Configuration and Operation Notes [very dated] +==================================================================== + +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; machines running Openstep + + 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 + Haiku OS + + 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. + + On later versions of Solaris, it may be necessary to add -lnsl before + -ldl; statically-linked versions of bash using libnsl are not guaranteed + to work correctly on future versions of Solaris. + +12. Configuring bash to build it in a cross environment. Currently only + two native versions can be compiled this way, cygwin32 and x86 BeOS. + For BeOS, you would configure it like this: + + 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. + +18. I have received reports that using -O2 with the MIPSpro results in a + binary that fails in strange ways. Using -O1 seems to work. + +19. There is special handling to ensure the shell links against static + versions of the included readline and history libraries on Mac OS X; + Apple ships inadequate dynamic libreadline and libhistory "replacements" + as standard libraries. + +20. If you're on a system like SGI Irix, and you get an error about not + being able to refer to a dynamic symbol + (ld: non-dynamic relocations refer to dynamic symbol PC), add + -DNEED_EXTERN_PC to the LOCAL_CFLAGS variable in lib/readline/Makefile.in + and rebuild. diff --git a/bash-5.1/POSIX b/bash-5.1/POSIX new file mode 100644 index 0000000..24114af --- /dev/null +++ b/bash-5.1/POSIX @@ -0,0 +1,248 @@ +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 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. Bash ensures that the 'POSIXLY_CORRECT' variable is set. + + 2. 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'. + + 3. Bash will not insert a command without the execute bit set into the + command hash table, even if it returns it as a (last-ditch) result + from a '$PATH' search. + + 4. The message printed by the job control code and builtins when a job + exits with a non-zero status is 'Done(status)'. + + 5. The message printed by the job control code and builtins when a job + is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example, + 'SIGTSTP'. + + 6. Alias expansion is always enabled, even in non-interactive shells. + + 7. Reserved words appearing in a context where reserved words are + recognized do not undergo alias expansion. + + 8. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number + and '!!' to '!' are enabled, and parameter expansion is performed + on the values of 'PS1' and 'PS2' regardless of the setting of the + 'promptvars' option. + + 9. The POSIX startup files are executed ('$ENV') rather than the + normal Bash files. + + 10. Tilde expansion is only performed on assignments preceding a + command name, rather than on all assignment statements on the line. + + 11. The default history file is '~/.sh_history' (this is the default + value of '$HISTFILE'). + + 12. Redirection operators do not perform filename expansion on the + word in the redirection unless the shell is interactive. + + 13. Redirection operators do not perform word splitting on the word in + the redirection. + + 14. 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. + + 15. Function names may not be the same as one of the POSIX special + builtins. + + 16. POSIX special builtins are found before shell functions during + command lookup. + + 17. When printing shell function definitions (e.g., by 'type'), Bash + does not print the 'function' keyword. + + 18. Literal tildes that appear as the first character in elements of + the 'PATH' variable are not expanded as described above under *note + Tilde Expansion::. + + 19. The 'time' reserved word may be used by itself as a command. When + used in this way, it displays timing statistics for the shell and + its completed children. The 'TIMEFORMAT' variable controls the + format of the timing information. + + 20. When parsing and expanding a ${...} expansion that appears within + double quotes, single quotes are no longer special and cannot be + used to quote a closing brace or other special character, unless + the operator is one of those defined to perform pattern removal. + In this case, they do not have to appear as matched pairs. + + 21. The parser does not recognize 'time' as a reserved word if the + next token begins with a '-'. + + 22. The '!' character does not introduce history expansion within a + double-quoted string, even if the 'histexpand' option is enabled. + + 23. If a POSIX special builtin returns an error status, a + non-interactive shell exits. The fatal errors are those listed in + the POSIX standard, and include things like passing incorrect + options, redirection errors, variable assignment errors for + assignments preceding the command name, and so on. + + 24. 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. + + 25. A non-interactive shell exits with an error status if a variable + assignment error occurs in an assignment statement preceding a + special builtin, but not with any other simple command. + + 26. 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. + + 27. Non-interactive shells exit if FILENAME in '.' FILENAME is not + found. + + 28. Non-interactive shells exit if a syntax error in an arithmetic + expansion results in an invalid expression. + + 29. Non-interactive shells exit if a parameter expansion error occurs. + + 30. Non-interactive shells exit if there is a syntax error in a script + read with the '.' or 'source' builtins, or in a string processed by + the 'eval' builtin. + + 31. While variable indirection is available, it may not be applied to + the '#' and '?' special parameters. + + 32. When expanding the '*' special parameter in a pattern context + where the expansion is double-quoted does not treat the '$*' as if + it were double-quoted. + + 33. Assignment statements preceding POSIX special builtins persist in + the shell environment after the builtin completes. + + 34. The 'command' builtin does not prevent builtins that take + assignment statements as arguments from expanding them as + assignment statements; when not in POSIX mode, assignment builtins + lose their assignment statement expansion properties when preceded + by 'command'. + + 35. 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. + + 36. The output of 'kill -l' prints all the signal names on a single + line, separated by spaces, without the 'SIG' prefix. + + 37. The 'kill' builtin does not accept signal names with a 'SIG' + prefix. + + 38. The 'export' and 'readonly' builtin commands display their output + in the format required by POSIX. + + 39. The 'trap' builtin displays signal names without the leading + 'SIG'. + + 40. 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. + + 41. 'trap -p' displays signals whose dispositions are set to SIG_DFL + and those that were ignored when the shell started. + + 42. The '.' and 'source' builtins do not search the current directory + for the filename argument if it is not found by searching 'PATH'. + + 43. Enabling POSIX mode has the effect of setting the + 'inherit_errexit' option, so subshells spawned to execute command + substitutions inherit the value of the '-e' option from the parent + shell. When the 'inherit_errexit' option is not enabled, Bash + clears the '-e' option in such subshells. + + 44. Enabling POSIX mode has the effect of setting the 'shift_verbose' + option, so numeric arguments to 'shift' that exceed the number of + positional parameters will result in an error message. + + 45. When the 'alias' builtin displays alias definitions, it does not + display them with a leading 'alias ' unless the '-p' option is + supplied. + + 46. When the 'set' builtin is invoked without options, it does not + display shell function names and definitions. + + 47. 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. + + 48. 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. + + 49. When the 'cd' builtin cannot change a directory because the length + of the pathname constructed from '$PWD' and the directory name + supplied as an argument exceeds PATH_MAX when all symbolic links + are expanded, 'cd' will fail instead of attempting to use only the + supplied directory name. + + 50. 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. + + 51. When listing the history, the 'fc' builtin does not include an + indication of whether or not a history entry has been modified. + + 52. The default editor used by 'fc' is 'ed'. + + 53. 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'. + + 54. The 'vi' editing mode will invoke the 'vi' editor directly when + the 'v' command is run, instead of checking '$VISUAL' and + '$EDITOR'. + + 55. 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. + + 56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + and '-f' options. + + 57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + interrupt the 'wait' builtin and cause it to return immediately. + The trap command is run once for each child that exits. + + 58. The 'read' builtin may be interrupted by a signal for which a trap + has been set. If Bash receives a trapped signal while executing + 'read', the trap handler executes and 'read' returns an exit status + greater than 128. + + 59. Bash removes an exited background process's status from the list + of such statuses after the 'wait' builtin is used to obtain it. + +There is other POSIX 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-5.1/RBASH b/bash-5.1/RBASH new file mode 100644 index 0000000..9732c76 --- /dev/null +++ b/bash-5.1/RBASH @@ -0,0 +1,51 @@ +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', 'HISTFILE', + '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 + 'history' 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. + +The restricted shell mode is only one component of a useful restricted +environment. It should be accompanied by setting 'PATH' to a value that +allows execution of only a few verified commands (commands that allow +shell escapes are particularly vulnerable), leaving the user in a +non-writable directory other than his home directory after login, not +allowing the restricted shell to execute shell scripts, and cleaning the +environment of variables that cause some commands to modify their +behavior (e.g., 'VISUAL' or 'PAGER'). + +Modern systems provide more secure ways to implement a restricted +environment, such as 'jails', 'zones', or 'containers'. + diff --git a/bash-5.1/README b/bash-5.1/README new file mode 100644 index 0000000..70b7a85 --- /dev/null +++ b/bash-5.1/README @@ -0,0 +1,111 @@ +Introduction +============ + +This is GNU Bash, version 5.1. Bash is the GNU Project's Bourne +Again SHell, a complete implementation of the POSIX 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 spec and a description of the Bash `posix mode'. + +There are some user-visible incompatibilities between this version +of Bash and previous widely-distributed versions, bash-4.4 and +bash-5.0. 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 as published by the Free Software Foundation, +version 3 of the License (or any later version). For more information, +see the file COPYING. + +A number of frequently-asked questions are answered in the file +`doc/FAQ'. + +To compile Bash, type `./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. + +Questions and requests for help with bash and bash programming may be +sent to the help-bash@gnu.org mailing list. + +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. + +Other Packages +============== + +This distribution includes, in examples/bash-completion, a recent version +of the `bash-completion' package, which provides programmable completions +for a number of commands. It's available as a package in many distributions, +and that is the first place from which to obtain it. If it's not a package +from your vendor, you may install the included version. + +The latest version of bash-completion is always available from +https://github.com/scop/bash-completion. + +Enjoy! + +Chet Ramey +chet.ramey@case.edu + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without any warranty. diff --git a/bash-5.1/Y2K b/bash-5.1/Y2K new file mode 100644 index 0000000..d12e352 --- /dev/null +++ b/bash-5.1/Y2K @@ -0,0 +1,4 @@ +Since Bash does not manipulate date strings, it is Y2K-safe. + +The only thing that Bash does with date strings is manipulate the string +returned by ctime(3) or strftime(3) in the prompt customization code. diff --git a/bash-5.1/_distribution b/bash-5.1/_distribution new file mode 100644 index 0000000..76e9e61 --- /dev/null +++ b/bash-5.1/_distribution @@ -0,0 +1 @@ +5.1.4 diff --git a/bash-5.1/_patchlevel b/bash-5.1/_patchlevel new file mode 100644 index 0000000..8445ef4 --- /dev/null +++ b/bash-5.1/_patchlevel @@ -0,0 +1 @@ +1.uelc20.1 diff --git a/bash-5.1/aclocal.m4 b/bash-5.1/aclocal.m4 new file mode 100644 index 0000000..d131798 --- /dev/null +++ b/bash-5.1/aclocal.m4 @@ -0,0 +1,2302 @@ +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([ +#include +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([ +#include +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 This could be changed to use AC_COMPILE_IFELSE instead of AC_EGREP_CPP +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 +#if HAVE_STDINT_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 +#include +int +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 +#include +#ifndef UNDER_SYS_SIGLIST_DECLARED +extern char *_sys_siglist[]; +#endif +int +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 +#include +#if !HAVE_DECL_SYS_SIGLIST +extern char *sys_siglist[]; +#endif +int +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 +#include +int +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 +#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 */ +#ifdef HAVE_SYS_STAT_H +#include +#endif +#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 */ +#include +int +main() +{ +DIR *dir; +int fd, err; +err = mkdir("bash-aclocal", 0700); +if (err < 0) { + perror("mkdir"); + exit(1); +} +unlink("bash-aclocal/not_a_directory"); +fd = open("bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); +write(fd, "\n", 1); +close(fd); +dir = opendir("bash-aclocal/not_a_directory"); +unlink("bash-aclocal/not_a_directory"); +rmdir("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 +#include +int +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_TYPE_SIG_ATOMIC_T, +[AC_CACHE_CHECK([for sig_atomic_t in signal.h], ac_cv_have_sig_atomic_t, +[AC_TRY_LINK([ +#include +],[ sig_atomic_t x; ], +ac_cv_have_sig_atomic_t=yes, ac_cv_have_sig_atomic_t=no)]) +if test "$ac_cv_have_sig_atomic_t" = "no" +then + AC_CHECK_TYPE(sig_atomic_t,int) +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 +#include +#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"; +} +int +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([ +#include +#ifdef HAVE_ULIMIT_H +#include +#endif +int +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 with 0 size]) +AC_CACHE_VAL(bash_cv_getcwd_malloc, +[AC_TRY_RUN([ +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +int +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 + +int +main() +{ +#ifdef FNM_EXTMATCH + return (0); +#else + return (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 +#include + +int +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 +#include +#include + +int +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 +#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 +], +[ +int +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, + [AC_CHECK_LIB(ncursesw, tgetent, bash_cv_termcap_lib=libncursesw, + 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_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#if HAVE_SYS_TIME_H + #include + #endif + #include + ]], + [[static struct timeval x; x.tv_sec = x.tv_usec;]] + )], + 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 +#ifdef HAVE_SYS_WAIT_H +# include +#endif +#include +int +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=yes,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 +#include + +typedef RETSIGTYPE sigfunc(); + +volatile 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++; +} + +int +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_COMPILE([ +#include +#ifdef HAVE_SYS_WAIT_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +/* add more tests in here as appropriate */ + +/* signal type */ +#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) +#error +#endif + +/* signals and tty control. */ +#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) +#error +#endif + +/* process control */ +#if !defined (WNOHANG) || !defined (WUNTRACED) +#error +#endif + +/* Posix systems have tcgetpgrp and waitpid. */ +#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) +#error +#endif + +#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) +#error +#endif + +/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ +#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) +#error +#endif + +], , bash_cv_job_control_missing=present, 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 +#include +#include + +/* Add more tests in here as appropriate. */ +int +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("bash-aclocal", 0700); +if (err < 0) { + perror ("mkdir"); + exit(1); +} +fd = mknod ("bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); +if (fd == -1) { + rmdir ("bash-aclocal"); + exit (1); +} +close(fd); +unlink ("bash-aclocal/sh-np-autoconf"); +rmdir ("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, +[bash_cv_dev_fd="" +if test -d /dev/fd && (exec test -r /dev/fd/0 < /dev/null) ; then +# check for systems like FreeBSD 5 that only provide /dev/fd/[012] + if (exec test -r /dev/fd/3 3 +#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 +#include + +#ifndef NSIG +# define NSIG 64 +#endif + +int +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_HEADERS(mbstr.h) + +AC_CHECK_FUNC(mbrlen, AC_DEFINE(HAVE_MBRLEN)) +AC_CHECK_FUNC(mbscasecmp, AC_DEFINE(HAVE_MBSCMP)) +AC_CHECK_FUNC(mbscmp, AC_DEFINE(HAVE_MBSCMP)) +AC_CHECK_FUNC(mbsnrtowcs, AC_DEFINE(HAVE_MBSNRTOWCS)) +AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS)) + +AC_REPLACE_FUNCS(mbschr) + +AC_CHECK_FUNC(wcrtomb, AC_DEFINE(HAVE_WCRTOMB)) +AC_CHECK_FUNC(wcscoll, AC_DEFINE(HAVE_WCSCOLL)) +AC_CHECK_FUNC(wcsdup, AC_DEFINE(HAVE_WCSDUP)) +AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH)) +AC_CHECK_FUNC(wctype, AC_DEFINE(HAVE_WCTYPE)) + +AC_REPLACE_FUNCS(wcswidth) + +dnl checks for both mbrtowc and mbstate_t +AC_FUNC_MBRTOWC +if test $ac_cv_func_mbrtowc = yes; then + AC_DEFINE(HAVE_MBSTATE_T) +fi + +AC_CHECK_FUNCS(iswlower iswupper towlower towupper iswctype) + +AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset, +[AC_TRY_LINK( +[#include ], +[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 check for wchar_t in +AC_CACHE_CHECK([for wchar_t in wchar.h], bash_cv_type_wchar_t, +[AC_TRY_COMPILE( +[#include +], +[ + wchar_t foo; + foo = 0; +], bash_cv_type_wchar_t=yes, bash_cv_type_wchar_t=no)]) +if test $bash_cv_type_wchar_t = yes; then + AC_DEFINE(HAVE_WCHAR_T, 1, [systems should define this type here]) +fi + +dnl check for wctype_t in +AC_CACHE_CHECK([for wctype_t in wctype.h], bash_cv_type_wctype_t, +[AC_TRY_COMPILE( +[#include ], +[ + wctype_t foo; + foo = 0; +], bash_cv_type_wctype_t=yes, bash_cv_type_wctype_t=no)]) +if test $bash_cv_type_wctype_t = yes; then + AC_DEFINE(HAVE_WCTYPE_T, 1, [systems should define this type here]) +fi + +dnl check for wint_t in +AC_CACHE_CHECK([for wint_t in wctype.h], bash_cv_type_wint_t, +[AC_TRY_COMPILE( +[#include ], +[ + wint_t foo; + foo = 0; +], bash_cv_type_wint_t=yes, bash_cv_type_wint_t=no)]) +if test $bash_cv_type_wint_t = yes; then + AC_DEFINE(HAVE_WINT_T, 1, [systems should define this type here]) +fi + +dnl check for broken wcwidth +AC_CACHE_CHECK([for wcwidth broken with unicode combining characters], +bash_cv_wcwidth_broken, +[AC_TRY_RUN([ +#include +#include +#include + +#include +#include + +int +main(c, v) +int c; +char **v; +{ + int w; + + setlocale(LC_ALL, "en_US.UTF-8"); + w = wcwidth (0x0301); + exit (w == 0); /* exit 0 if wcwidth broken */ +} +], +bash_cv_wcwidth_broken=yes, bash_cv_wcwidth_broken=no, bash_cv_wcwidth_broken=no)]) +if test "$bash_cv_wcwidth_broken" = yes; then + AC_DEFINE(WCWIDTH_BROKEN, 1, [wcwidth is usually not broken]) +fi + +if test "$am_cv_func_iconv" = yes; then + OLDLIBS="$LIBS" + LIBS="$LIBS $LIBINTL $LIBICONV" + AC_CHECK_FUNCS(locale_charset) + LIBS="$OLDLIBS" +fi + +AC_CHECK_SIZEOF(wchar_t, 4) + +]) + +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 +#include + +extern int rl_gnu_readline_p; + +int +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='8.0')]) + +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 +#include + +int +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 +#include + +#ifndef errno +extern int errno; +#endif +int +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 From gnulib +AC_DEFUN([BASH_FUNC_FPURGE], +[ + AC_CHECK_FUNCS_ONCE([fpurge]) + AC_CHECK_FUNCS_ONCE([__fpurge]) + AC_CHECK_DECLS([fpurge], , , [#include ]) +]) + +AC_DEFUN([BASH_FUNC_SNPRINTF], +[ + AC_CHECK_FUNCS_ONCE([snprintf]) + if test X$ac_cv_func_snprintf = Xyes; then + AC_CACHE_CHECK([for standard-conformant snprintf], [bash_cv_func_snprintf], + [AC_TRY_RUN([ +#include +#include + +int +main() +{ + int n; + n = snprintf (0, 0, "%s", "0123456"); + exit(n != 7); +} +], bash_cv_func_snprintf=yes, bash_cv_func_snprintf=no, + [AC_MSG_WARN([cannot check standard snprintf if cross-compiling]) + bash_cv_func_snprintf=yes] +)]) + if test $bash_cv_func_snprintf = no; then + ac_cv_func_snprintf=no + fi + fi + if test $ac_cv_func_snprintf = no; then + AC_DEFINE(HAVE_SNPRINTF, 0, + [Define if you have a standard-conformant snprintf function.]) + fi +]) + +AC_DEFUN([BASH_FUNC_VSNPRINTF], +[ + AC_CHECK_FUNCS_ONCE([vsnprintf]) + if test X$ac_cv_func_vsnprintf = Xyes; then + AC_CACHE_CHECK([for standard-conformant vsnprintf], [bash_cv_func_vsnprintf], + [AC_TRY_RUN([ +#if HAVE_STDARG_H +#include +#else +#include +#endif +#include +#include + +static int +#if HAVE_STDARG_H +foo(const char *fmt, ...) +#else +foo(format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + int n; + +#if HAVE_STDARG_H + va_start(args, fmt); +#else + va_start(args); +#endif + n = vsnprintf(0, 0, fmt, args); + va_end (args); + return n; +} + +int +main() +{ + int n; + n = foo("%s", "0123456"); + exit(n != 7); +} +], bash_cv_func_vsnprintf=yes, bash_cv_func_vsnprintf=no, + [AC_MSG_WARN([cannot check standard vsnprintf if cross-compiling]) + bash_cv_func_vsnprintf=yes] +)]) + if test $bash_cv_func_vsnprintf = no; then + ac_cv_func_vsnprintf=no + fi + fi + if test $ac_cv_func_vsnprintf = no; then + AC_DEFINE(HAVE_VSNPRINTF, 0, + [Define if you have a standard-conformant vsnprintf function.]) + fi +]) + +AC_DEFUN(BASH_STRUCT_WEXITSTATUS_OFFSET, +[AC_MSG_CHECKING(for offset of exit status in return status from wait) +AC_CACHE_VAL(bash_cv_wexitstatus_offset, +[AC_TRY_RUN([ +#include +#include + +#include + +int +main(c, v) + int c; + char **v; +{ + pid_t pid, p; + int s, i, n; + + s = 0; + pid = fork(); + if (pid == 0) + exit (42); + + /* wait for the process */ + p = wait(&s); + if (p != pid) + exit (255); + + /* crack s */ + for (i = 0; i < (sizeof(s) * 8); i++) + { + n = (s >> i) & 0xff; + if (n == 42) + exit (i); + } + + exit (254); +} +], bash_cv_wexitstatus_offset=0, bash_cv_wexitstatus_offset=$?, + [AC_MSG_WARN(cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0) + bash_cv_wexitstatus_offset=0] +)]) +if test "$bash_cv_wexitstatus_offset" -gt 32 ; then + AC_MSG_WARN(bad exit status from test program -- defaulting to 0) + bash_cv_wexitstatus_offset=0 +fi +AC_MSG_RESULT($bash_cv_wexitstatus_offset) +AC_DEFINE_UNQUOTED([WEXITSTATUS_OFFSET], [$bash_cv_wexitstatus_offset], [Offset of exit status in wait status word]) +]) + +AC_DEFUN([BASH_FUNC_SBRK], +[ + AC_MSG_CHECKING([for sbrk]) + AC_CACHE_VAL(ac_cv_func_sbrk, + [AC_TRY_LINK([#include ], + [ void *x = sbrk (4096); ], + ac_cv_func_sbrk=yes, ac_cv_func_sbrk=no)]) + AC_MSG_RESULT($ac_cv_func_sbrk) + if test X$ac_cv_func_sbrk = Xyes; then + AC_CACHE_CHECK([for working sbrk], [bash_cv_func_sbrk], + [AC_TRY_RUN([ +#include +#include + +int +main(int c, char **v) +{ + void *x; + + x = sbrk (4096); + exit ((x == (void *)-1) ? 1 : 0); +} +], bash_cv_func_sbrk=yes, bash_cv_func_snprintf=sbrk, + [AC_MSG_WARN([cannot check working sbrk if cross-compiling]) + bash_cv_func_sbrk=yes] +)]) + if test $bash_cv_func_sbrk = no; then + ac_cv_func_sbrk=no + fi + fi + if test $ac_cv_func_sbrk = yes; then + AC_DEFINE(HAVE_SBRK, 1, + [Define if you have a working sbrk function.]) + fi +]) + +AC_DEFUN(BASH_FUNC_FNMATCH_EQUIV_FALLBACK, +[AC_MSG_CHECKING(whether fnmatch can be used to check bracket equivalence classes) +AC_CACHE_VAL(bash_cv_fnmatch_equiv_fallback, +[AC_TRY_RUN([ +#include +#include +#include +#include +#include + +char *pattern = "[[=a=]]"; + +/* char *string = "ä"; */ +unsigned char string[4] = { '\xc3', '\xa4', '\0' }; + +int +main (int c, char **v) +{ + setlocale (LC_ALL, "en_US.UTF-8"); + if (fnmatch (pattern, (const char *)string, 0) != FNM_NOMATCH) + exit (0); + exit (1); +} + +], bash_cv_fnmatch_equiv_fallback=yes, bash_cv_fnmatch_equiv_fallback=no, + [AC_MSG_WARN(cannot check fnmatch if cross compiling -- defaulting to no) + bash_cv_fnmatch_equiv_fallback=no] +)]) +AC_MSG_RESULT($bash_cv_fnmatch_equiv_fallback) +if test "$bash_cv_fnmatch_equiv_fallback" = "yes" ; then + bash_cv_fnmatch_equiv_value=1 +else + bash_cv_fnmatch_equiv_value=0 +fi +AC_DEFINE_UNQUOTED([FNMATCH_EQUIV_FALLBACK], [$bash_cv_fnmatch_equiv_value], [Whether fnmatch can be used for bracket equivalence classes]) +]) diff --git a/bash-5.1/alias.c b/bash-5.1/alias.c new file mode 100644 index 0000000..cd5e99b --- /dev/null +++ b/bash-5.1/alias.c @@ -0,0 +1,594 @@ +/* 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-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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 + +#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) +# include /* mbschr */ +#endif + +#define ALIAS_HASH_BUCKETS 64 /* must be power of two */ + +typedef int sh_alias_map_func_t PARAMS((alias_t *)); + +static void free_alias_data PARAMS((PTR_T)); +static alias_t **map_over_aliases PARAMS((sh_alias_map_func_t *)); +static void sort_aliases PARAMS((alias_t **)); +static int qsort_alias_compare PARAMS((alias_t **, alias_t **)); + +#if defined (READLINE) +static int skipquotes PARAMS((char *, int)); +static int skipws PARAMS((char *, int)); +static int rd_token PARAMS((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 == 0) + 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 == 0) + { + initialize_aliases (); + temp = (alias_t *)NULL; + } + else + temp = find_alias (name); + + if (temp) + { + free (temp->value); + temp->value = savestring (value); + temp->flags &= ~AL_EXPANDNEXT; + if (value[0]) + { + 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; + + if (value[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; + + if (a->flags & AL_BEINGEXPANDED) + clear_string_list_expander (a); /* call back to the parser */ + + 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 */ + if (string[i] == 0) + break; + 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 (peekc == 0) + break; + 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 */ + if (string[i] == 0) + break; + 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 (mbschr (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-5.1/alias.h b/bash-5.1/alias.h new file mode 100644 index 0000000..4e2d67c --- /dev/null +++ b/bash-5.1/alias.h @@ -0,0 +1,73 @@ +/* alias.h -- structure definitions. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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 PARAMS((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 PARAMS((char *)); + +/* Return the value of the alias for NAME, or NULL if there is none. */ +extern char *get_alias_value PARAMS((char *)); + +/* Make a new alias from NAME and VALUE. If NAME can be found, + then replace its value. */ +extern void add_alias PARAMS((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 PARAMS((char *)); + +/* Remove all aliases. */ +extern void delete_all_aliases PARAMS((void)); + +/* Return an array of all defined aliases. */ +extern alias_t **all_aliases PARAMS((void)); + +/* Expand a single word for aliases. */ +extern char *alias_expand_word PARAMS((char *)); + +/* Return a new line, with any aliases expanded. */ +extern char *alias_expand PARAMS((char *)); + +/* Helper definition for the parser */ +extern void clear_string_list_expander PARAMS((alias_t *)); + +#endif /* _ALIAS_H_ */ diff --git a/bash-5.1/array.c b/bash-5.1/array.c new file mode 100644 index 0000000..6d3554b --- /dev/null +++ b/bash-5.1/array.c @@ -0,0 +1,1236 @@ +/* + * 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-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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) + +#define ADD_AFTER(ae, new) \ + do { \ + ae->next->prev = new; \ + new->next = ae->next; \ + new->prev = ae; \ + ae->next = new; \ + } while (0) + +static char *array_to_string_internal PARAMS((ARRAY_ELEMENT *, ARRAY_ELEMENT *, char *, int)); + +static char *spacesep = " "; + +#define IS_LASTREF(a) (a->lastref) + +#define LASTREF_START(a, i) \ + (IS_LASTREF(a) && i >= element_index(a->lastref)) ? a->lastref \ + : element_forw(a->head) + +#define LASTREF(a) (a->lastref ? a->lastref : element_forw(a->head)) + +#define INVALIDATE_LASTREF(a) a->lastref = 0 +#define SET_LASTREF(a, e) a->lastref = (e) +#define UNSET_LASTREF(a) a->lastref = 0; + +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; + r->lastref = (ARRAY_ELEMENT *)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; + INVALIDATE_LASTREF(a); +} + +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); + if (ae == LASTREF(a)) + SET_LASTREF(a1, new); + } + return(a1); +} + +/* + * 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 (mi = 0, p = s, i = 0; p != e; p = element_forw(p), i++) { + n = array_create_element (element_index(p), element_value(p)); + ADD_BEFORE(a->head, n); + mi = element_index(n); + } + a->num_elements = i; + a->max_index = mi; + return a; +} + +/* + * 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); + + INVALIDATE_LASTREF(a); + 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 = element_index(a->head->prev); + + 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 */ + a->max_index = 0; + 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); + + INVALIDATE_LASTREF(a); + 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; +} + +ARRAY * +array_quote_escapes(array) +ARRAY *array; +{ + ARRAY_ELEMENT *a; + char *t; + + if (array == 0 || array_head(array) == 0 || array_empty(array)) + return (ARRAY *)NULL; + for (a = element_forw(array->head); a != array->head; a = element_forw(a)) { + t = quote_escapes (a->value); + FREE(a->value); + a->value = t; + } + return array; +} + +ARRAY * +array_dequote(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 = dequote_string (a->value); + FREE(a->value); + a->value = t; + } + return array; +} + +ARRAY * +array_dequote_escapes(array) +ARRAY *array; +{ + ARRAY_ELEMENT *a; + char *t; + + if (array == 0 || array_head(array) == 0 || array_empty(array)) + return (ARRAY *)NULL; + for (a = element_forw(array->head); a != array->head; a = element_forw(a)) { + t = dequote_escapes (a->value); + FREE(a->value); + a->value = t; + } + return array; +} + +ARRAY * +array_remove_quoted_nulls(array) +ARRAY *array; +{ + ARRAY_ELEMENT *a; + + 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)) + a->value = remove_quoted_nulls (a->value); + 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, pflags) +ARRAY *a; +arrayind_t start, nelem; +int starsub, quoted, pflags; +{ + ARRAY *a2; + ARRAY_ELEMENT *h, *p; + arrayind_t i; + char *t; + WORD_LIST *wl; + + 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)) + ; + + a2 = array_slice(a, h, p); + + wl = array_to_word_list(a2); + array_dispose(a2); + if (wl == 0) + return (char *)NULL; + t = string_list_pos_params(starsub ? '*' : '@', wl, quoted, pflags); /* XXX */ + dispose_words(wl); + + return t; +} + +char * +array_patsub (a, pat, rep, mflags) +ARRAY *a; +char *pat, *rep; +int mflags; +{ + char *t; + int pchar, qflags, pflags; + WORD_LIST *wl, *save; + + if (a == 0 || array_head(a) == 0 || array_empty(a)) + return ((char *)NULL); + + wl = array_to_word_list(a); + if (wl == 0) + return (char *)NULL; + + for (save = wl; wl; wl = wl->next) { + t = pat_subst (wl->word->word, pat, rep, mflags); + FREE (wl->word->word); + wl->word->word = t; + } + + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + pflags = (mflags & MATCH_ASSIGNRHS) ? PF_ASSIGNRHS : 0; + + t = string_list_pos_params (pchar, save, qflags, pflags); + dispose_words(save); + + return t; +} + +char * +array_modcase (a, pat, modop, mflags) +ARRAY *a; +char *pat; +int modop; +int mflags; +{ + char *t; + int pchar, qflags, pflags; + WORD_LIST *wl, *save; + + if (a == 0 || array_head(a) == 0 || array_empty(a)) + return ((char *)NULL); + + wl = array_to_word_list(a); + if (wl == 0) + return ((char *)NULL); + + for (save = wl; wl; wl = wl->next) { + t = sh_modcase(wl->word->word, pat, modop); + FREE(wl->word->word); + wl->word->word = t; + } + + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + pflags = (mflags & MATCH_ASSIGNRHS) ? PF_ASSIGNRHS : 0; + + t = string_list_pos_params (pchar, save, qflags, pflags); + dispose_words(save); + + 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, *start; + arrayind_t startind; + int direction; + + 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++; + SET_LASTREF(a, new); + return(0); + } else if (i < array_first_index(a)) { + /* Hook at the beginning */ + ADD_AFTER(a->head, new); + a->num_elements++; + SET_LASTREF(a, new); + return(0); + } +#if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT + /* + * Otherwise we search for the spot to insert it. The lastref + * handle optimizes the case of sequential or almost-sequential + * assignments that are not at the end of the array. + */ + start = LASTREF(a); + /* Use same strategy as array_reference to avoid paying large penalty + for semi-random assignment pattern. */ + startind = element_index(start); + if (i < startind/2) { + start = element_forw(a->head); + startind = element_index(start); + direction = 1; + } else if (i >= startind) { + direction = 1; + } else { + direction = -1; + } +#else + start = element_forw(ae->head); + startind = element_index(start); + direction = 1; +#endif + for (ae = start; ae != a->head; ) { + if (element_index(ae) == i) { + /* + * Replacing an existing element. + */ + free(element_value(ae)); + /* Just swap in the new value */ + ae->value = new->value; + new->value = 0; + array_dispose_element(new); + SET_LASTREF(a, ae); + return(0); + } else if (direction == 1 && element_index(ae) > i) { + ADD_BEFORE(ae, new); + a->num_elements++; + SET_LASTREF(a, new); + return(0); + } else if (direction == -1 && element_index(ae) < i) { + ADD_AFTER(ae, new); + a->num_elements++; + SET_LASTREF(a, new); + return(0); + } + ae = direction == 1 ? element_forw(ae) : element_back(ae); + } + array_dispose_element(new); + INVALIDATE_LASTREF(a); + 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, *start; + arrayind_t startind; + int direction; + + if (a == 0 || array_empty(a)) + return((ARRAY_ELEMENT *) NULL); + if (i > array_max_index(a) || i < array_first_index(a)) + return((ARRAY_ELEMENT *)NULL); /* Keep roving pointer into array to optimize sequential access */ + start = LASTREF(a); + /* Use same strategy as array_reference to avoid paying large penalty + for semi-random assignment pattern. */ + startind = element_index(start); + if (i < startind/2) { + start = element_forw(a->head); + startind = element_index(start); + direction = 1; + } else if (i >= startind) { + direction = 1; + } else { + direction = -1; + } + for (ae = start; ae != a->head; ) { + if (element_index(ae) == i) { + ae->next->prev = ae->prev; + ae->prev->next = ae->next; + a->num_elements--; + if (i == array_max_index(a)) + a->max_index = element_index(ae->prev); +#if 0 + INVALIDATE_LASTREF(a); +#else + if (ae->next != a->head) + SET_LASTREF(a, ae->next); + else if (ae->prev != a->head) + SET_LASTREF(a, ae->prev); + else + INVALIDATE_LASTREF(a); +#endif + return(ae); + } + ae = (direction == 1) ? element_forw(ae) : element_back(ae); + if (direction == 1 && element_index(ae) > i) + break; + else if (direction == -1 && element_index(ae) < i) + break; + } + return((ARRAY_ELEMENT *) NULL); +} + +/* + * Return the value of a[i]. + */ +char * +array_reference(a, i) +ARRAY *a; +arrayind_t i; +{ + register ARRAY_ELEMENT *ae, *start; + arrayind_t startind; + int direction; + + if (a == 0 || array_empty(a)) + return((char *) NULL); + if (i > array_max_index(a) || i < array_first_index(a)) + return((char *)NULL); /* Keep roving pointer into array to optimize sequential access */ + start = LASTREF(a); /* lastref pointer */ + startind = element_index(start); + if (i < startind/2) { /* XXX - guess */ + start = element_forw(a->head); + startind = element_index(start); + direction = 1; + } else if (i >= startind) { + direction = 1; + } else { + direction = -1; + } + for (ae = start; ae != a->head; ) { + if (element_index(ae) == i) { + SET_LASTREF(a, ae); + return(element_value(ae)); + } + ae = (direction == 1) ? element_forw(ae) : element_back(ae); + /* Take advantage of index ordering to short-circuit */ + /* If we don't find it, set the lastref pointer to the element + that's `closest', assuming that the unsuccessful reference + will quickly be followed by an assignment. No worse than + not changing it from the previous value or resetting it. */ + if (direction == 1 && element_index(ae) > i) { + start = ae; /* use for SET_LASTREF below */ + break; + } else if (direction == -1 && element_index(ae) < i) { + start = ae; /* use for SET_LASTREF below */ + break; + } + } +#if 0 + UNSET_LASTREF(a); +#else + SET_LASTREF(a, start); +#endif + 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, countp) +ARRAY *a; +int *countp; +{ + char **ret, *t; + int i; + ARRAY_ELEMENT *ae; + + if (a == 0 || array_empty(a)) { + if (countp) + *countp = 0; + 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); + if (t) + ret[i++] = savestring (t); + } + ret[i] = (char *)NULL; + if (countp) + *countp = i; + return (ret); +} + +/* + * Return a string that is the concatenation of the elements in A from START + * to END, 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) + 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_kvpair (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[rlen = 0] = '\0'; + + 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) ? + (ansic_shouldquote (element_value (ae)) ? + ansic_quote (element_value(ae), 0, (int *)0) : + sh_double_quote (element_value (ae))) + : (char *)NULL; + elen = STRLEN (is) + 8 + STRLEN (valstr); + RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize); + + strcpy (result + rlen, is); + rlen += STRLEN (is); + result[rlen++] = ' '; + if (valstr) { + strcpy (result + rlen, valstr); + rlen += STRLEN (valstr); + } else { + strcpy (result + rlen, "\"\""); + rlen += 2; + } + + if (element_forw(ae) != a->head) + result[rlen++] = ' '; + + FREE (valstr); + } + RESIZE_MALLOCED_BUFFER (result, rlen, 1, rsize, 8); + 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_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) ? + (ansic_shouldquote (element_value (ae)) ? + ansic_quote (element_value(ae), 0, (int *)0) : + sh_double_quote (element_value (ae))) + : (char *)NULL; + elen = STRLEN (is) + 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-5.1/array.h b/bash-5.1/array.h new file mode 100644 index 0000000..189d646 --- /dev/null +++ b/bash-5.1/array.h @@ -0,0 +1,127 @@ +/* array.h -- definitions for the interface exported by array.c that allows + the rest of the shell to manipulate array variables. */ + +/* Copyright (C) 1997-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + + +#ifndef _ARRAY_H_ +#define _ARRAY_H_ + +#include "stdc.h" + +typedef intmax_t arrayind_t; + +enum atype {array_indexed, array_assoc}; /* only array_indexed used */ + +typedef struct array { + enum atype type; + arrayind_t max_index; + int num_elements; + struct array_element *head; + struct array_element *lastref; +} ARRAY; + +typedef struct array_element { + arrayind_t ind; + char *value; + struct array_element *next, *prev; +} ARRAY_ELEMENT; + +typedef int sh_ae_map_func_t PARAMS((ARRAY_ELEMENT *, void *)); + +/* Basic operations on entire arrays */ +extern ARRAY *array_create PARAMS((void)); +extern void array_flush PARAMS((ARRAY *)); +extern void array_dispose PARAMS((ARRAY *)); +extern ARRAY *array_copy PARAMS((ARRAY *)); +extern ARRAY *array_slice PARAMS((ARRAY *, ARRAY_ELEMENT *, ARRAY_ELEMENT *)); +extern void array_walk PARAMS((ARRAY *, sh_ae_map_func_t *, void *)); + +extern ARRAY_ELEMENT *array_shift PARAMS((ARRAY *, int, int)); +extern int array_rshift PARAMS((ARRAY *, int, char *)); +extern ARRAY_ELEMENT *array_unshift_element PARAMS((ARRAY *)); +extern int array_shift_element PARAMS((ARRAY *, char *)); + +extern ARRAY *array_quote PARAMS((ARRAY *)); +extern ARRAY *array_quote_escapes PARAMS((ARRAY *)); +extern ARRAY *array_dequote PARAMS((ARRAY *)); +extern ARRAY *array_dequote_escapes PARAMS((ARRAY *)); +extern ARRAY *array_remove_quoted_nulls PARAMS((ARRAY *)); + +extern char *array_subrange PARAMS((ARRAY *, arrayind_t, arrayind_t, int, int, int)); +extern char *array_patsub PARAMS((ARRAY *, char *, char *, int)); +extern char *array_modcase PARAMS((ARRAY *, char *, int, int)); + +/* Basic operations on array elements. */ +extern ARRAY_ELEMENT *array_create_element PARAMS((arrayind_t, char *)); +extern ARRAY_ELEMENT *array_copy_element PARAMS((ARRAY_ELEMENT *)); +extern void array_dispose_element PARAMS((ARRAY_ELEMENT *)); + +extern int array_insert PARAMS((ARRAY *, arrayind_t, char *)); +extern ARRAY_ELEMENT *array_remove PARAMS((ARRAY *, arrayind_t)); +extern char *array_reference PARAMS((ARRAY *, arrayind_t)); + +/* Converting to and from arrays */ +extern WORD_LIST *array_to_word_list PARAMS((ARRAY *)); +extern ARRAY *array_from_word_list PARAMS((WORD_LIST *)); +extern WORD_LIST *array_keys_to_word_list PARAMS((ARRAY *)); + +extern ARRAY *array_assign_list PARAMS((ARRAY *, WORD_LIST *)); + +extern char **array_to_argv PARAMS((ARRAY *, int *)); + +extern char *array_to_kvpair PARAMS((ARRAY *, int)); +extern char *array_to_assign PARAMS((ARRAY *, int)); +extern char *array_to_string PARAMS((ARRAY *, char *, int)); +extern ARRAY *array_from_string PARAMS((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_first_index(a) ((a)->head->next->ind) +#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) + +#define set_element_value(ae, val) ((ae)->value = (val)) + +/* 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) == '*') + +/* In eval.c, but uses ARRAY * */ +extern int execute_array_command PARAMS((ARRAY *, void *)); + +#endif /* _ARRAY_H_ */ diff --git a/bash-5.1/arrayfunc.c b/bash-5.1/arrayfunc.c new file mode 100644 index 0000000..8231ba1 --- /dev/null +++ b/bash-5.1/arrayfunc.c @@ -0,0 +1,1517 @@ +/* arrayfunc.c -- High-level array functions used by other parts of the shell. */ + +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#if defined (ARRAY_VARS) + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include + +#include "bashintl.h" + +#include "shell.h" +#include "execute_cmd.h" +#include "pathexp.h" + +#include "shmbutil.h" +#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) +# include /* mbschr */ +#endif + +#include "builtins/common.h" + +#ifndef LBRACK +# define LBRACK '[' +# define RBRACK ']' +#endif + +/* This variable means to not expand associative array subscripts more than + once, when performing variable expansion. */ +int assoc_expand_once = 0; + +/* Ditto for indexed array subscripts -- currently unused */ +int array_expand_once = 0; + +static SHELL_VAR *bind_array_var_internal PARAMS((SHELL_VAR *, arrayind_t, char *, char *, int)); +static SHELL_VAR *assign_array_element_internal PARAMS((SHELL_VAR *, char *, char *, char *, int, char *, int)); + +static void assign_assoc_from_kvlist PARAMS((SHELL_VAR *, WORD_LIST *, HASH_TABLE *, int)); + +static char *quote_assign PARAMS((const char *)); +static void quote_array_assignment_chars PARAMS((WORD_LIST *)); +static char *quote_compound_array_word PARAMS((char *, int)); +static char *array_value_internal PARAMS((const char *, int, int, int *, arrayind_t *)); + +/* Standard error message to use when encountering an invalid array subscript */ +const char * const 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); + if (oldval) + VUNSETATTR (var, att_invisible); + + /* Make sure it's not marked as an associative array any more */ + VUNSETATTR (var, att_assoc); + + /* Since namerefs can't be array variables, turn off nameref attribute */ + VUNSETATTR (var, att_nameref); + + return var; +} + +/* Convert a shell variable to an array variable. The original value is + saved as array[0]. */ +SHELL_VAR * +convert_var_to_assoc (var) + SHELL_VAR *var; +{ + char *oldval; + HASH_TABLE *hash; + + oldval = value_cell (var); + hash = assoc_create (0); + if (oldval) + assoc_insert (hash, savestring ("0"), oldval); + + FREE (value_cell (var)); + var_setassoc (var, hash); + + /* 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_assoc); + if (oldval) + VUNSETATTR (var, att_invisible); + + /* Make sure it's not marked as an indexed array any more */ + VUNSETATTR (var, att_array); + + /* Since namerefs can't be array variables, turn off nameref attribute */ + VUNSETATTR (var, att_nameref); + + return var; +} + +char * +make_array_variable_value (entry, ind, key, value, flags) + SHELL_VAR *entry; + arrayind_t ind; + char *key; + 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); + if (assoc_p (entry)) + newval = assoc_reference (assoc_cell (entry), key); + else + 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_assoc|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); + + return newval; +} + +/* Assign HASH[KEY]=VALUE according to FLAGS. ENTRY is an associative array + variable; HASH is the hash table to assign into. HASH may or may not be + the hash table associated with ENTRY; if it's not, the caller takes care + of it. + XXX - make sure that any dynamic associative array variables recreate the + hash table on each assignment. BASH_CMDS and BASH_ALIASES already do this */ +static SHELL_VAR * +bind_assoc_var_internal (entry, hash, key, value, flags) + SHELL_VAR *entry; + HASH_TABLE *hash; + char *key; + char *value; + int flags; +{ + char *newval; + + /* Use the existing array contents to expand the value */ + newval = make_array_variable_value (entry, 0, key, value, flags); + + if (entry->assign_func) + (*entry->assign_func) (entry, newval, 0, key); + else + assoc_insert (hash, key, newval); + + FREE (newval); + + VUNSETATTR (entry, att_invisible); /* no longer invisible */ + + /* check mark_modified_variables if we ever want to export array vars */ + return (entry); +} + +/* Perform ENTRY[IND]=VALUE or ENTRY[KEY]=VALUE. This is not called for every + assignment to an associative array; see assign_compound_array_list below. */ +static SHELL_VAR * +bind_array_var_internal (entry, ind, key, value, flags) + SHELL_VAR *entry; + arrayind_t ind; + char *key; + char *value; + int flags; +{ + char *newval; + + newval = make_array_variable_value (entry, ind, key, value, flags); + + if (entry->assign_func) + (*entry->assign_func) (entry, newval, ind, key); + else if (assoc_p (entry)) + assoc_insert (assoc_cell (entry), key, newval); + else + array_insert (array_cell (entry), ind, newval); + FREE (newval); + + VUNSETATTR (entry, att_invisible); /* no longer invisible */ + + /* check mark_modified_variables if we ever want to export array vars */ + 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 = find_shell_variable (name); + + if (entry == (SHELL_VAR *) 0) + { + /* Is NAME a nameref variable that points to an unset variable? */ + entry = find_variable_nameref_for_create (name, 0); + if (entry == INVALID_NAMEREF_VALUE) + return ((SHELL_VAR *)0); + if (entry && nameref_p (entry)) + entry = make_new_array_variable (nameref_cell (entry)); + } + if (entry == (SHELL_VAR *) 0) + entry = make_new_array_variable (name); + else if ((readonly_p (entry) && (flags&ASS_FORCE) == 0) || 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, 0, value, flags)); +} + +SHELL_VAR * +bind_array_element (entry, ind, value, flags) + SHELL_VAR *entry; + arrayind_t ind; + char *value; + int flags; +{ + return (bind_array_var_internal (entry, ind, 0, value, flags)); +} + +SHELL_VAR * +bind_assoc_variable (entry, name, key, value, flags) + SHELL_VAR *entry; + char *name; + char *key; + char *value; + int flags; +{ + if ((readonly_p (entry) && (flags&ASS_FORCE) == 0) || noassign_p (entry)) + { + if (readonly_p (entry)) + err_readonly (name); + return (entry); + } + + return (bind_assoc_var_internal (entry, assoc_cell (entry), key, 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(). + Flags are ASS_ assignment flags */ +SHELL_VAR * +assign_array_element (name, value, flags) + char *name, *value; + int flags; +{ + char *sub, *vname; + int sublen, isassoc; + SHELL_VAR *entry; + + vname = array_variable_name (name, (flags & ASS_NOEXPAND) != 0, &sub, &sublen); + + if (vname == 0) + return ((SHELL_VAR *)NULL); + + entry = find_variable (vname); + isassoc = entry && assoc_p (entry); + + if (((isassoc == 0 || (flags & ASS_NOEXPAND) == 0) && (ALL_ELEMENT_SUB (sub[0]) && sub[1] == ']')) || (sublen <= 1)) + { + free (vname); + err_badarraysub (name); + return ((SHELL_VAR *)NULL); + } + + entry = assign_array_element_internal (entry, name, vname, sub, sublen, value, flags); + + free (vname); + return entry; +} + +static SHELL_VAR * +assign_array_element_internal (entry, name, vname, sub, sublen, value, flags) + SHELL_VAR *entry; + char *name; /* only used for error messages */ + char *vname; + char *sub; + int sublen; + char *value; + int flags; +{ + char *akey; + arrayind_t ind; + + if (entry && assoc_p (entry)) + { + sub[sublen-1] = '\0'; + if ((flags & ASS_NOEXPAND) == 0) + akey = expand_assignment_string_to_string (sub, 0); /* [ */ + else + akey = savestring (sub); + sub[sublen-1] = ']'; + if (akey == 0 || *akey == 0) + { + err_badarraysub (name); + FREE (akey); + return ((SHELL_VAR *)NULL); + } + entry = bind_assoc_variable (entry, vname, akey, value, flags); + } + else + { + ind = array_expand_index (entry, sub, sublen, 0); + /* negative subscripts to indexed arrays count back from end */ + if (entry && ind < 0) + ind = (array_p (entry) ? array_max_index (array_cell (entry)) : 0) + 1 + ind; + if (ind < 0) + { + err_badarraysub (name); + return ((SHELL_VAR *)NULL); + } + entry = bind_array_variable (vname, ind, value, flags); + } + + 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 FLAGS&1 is non-zero, an existing + variable is checked for the readonly or noassign attribute in preparation + for assignment (e.g., by the `read' builtin). If FLAGS&2 is non-zero, we + create an associative array. */ +SHELL_VAR * +find_or_make_array_variable (name, flags) + char *name; + int flags; +{ + SHELL_VAR *var; + + var = find_variable (name); + if (var == 0) + { + /* See if we have a nameref pointing to a variable that hasn't been + created yet. */ + var = find_variable_last_nameref (name, 1); + if (var && nameref_p (var) && invisible_p (var)) + { + internal_warning (_("%s: removing nameref attribute"), name); + VUNSETATTR (var, att_nameref); + } + if (var && nameref_p (var)) + { + if (valid_nameref_value (nameref_cell (var), 2) == 0) + { + sh_invalidid (nameref_cell (var)); + return ((SHELL_VAR *)NULL); + } + var = (flags & 2) ? make_new_assoc_variable (nameref_cell (var)) : make_new_array_variable (nameref_cell (var)); + } + } + + if (var == 0) + var = (flags & 2) ? make_new_assoc_variable (name) : make_new_array_variable (name); + else if ((flags & 1) && (readonly_p (var) || noassign_p (var))) + { + if (readonly_p (var)) + err_readonly (name); + return ((SHELL_VAR *)NULL); + } + else if ((flags & 2) && array_p (var)) + { + set_exit_status (EXECUTION_FAILURE); + report_error (_("%s: cannot convert indexed to associative array"), name); + return ((SHELL_VAR *)NULL); + } + else if (array_p (var) == 0 && assoc_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; + int vflags; + + vflags = 1; + if (flags & ASS_MKASSOC) + vflags |= 2; + + var = find_or_make_array_variable (name, vflags); + 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++) + bind_array_var_internal (var, i, 0, l->word->word, flags & ~ASS_APPEND); + + VUNSETATTR (var, att_invisible); /* no longer invisible */ + + return var; +} + +WORD_LIST * +expand_compound_array_assignment (var, value, flags) + SHELL_VAR *var; + char *value; + int flags; +{ + WORD_LIST *list, *nlist; + char *val; + int ni; + + /* This condition is true when invoked from the declare builtin with a + command like + declare -a d='([1]="" [2]="bdef" [5]="hello world" "test")' */ + if (*value == '(') /*)*/ + { + ni = 1; + val = extract_array_assignment_list (value, &ni); + if (val == 0) + return (WORD_LIST *)NULL; + } + 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"); + + /* Note that we defer expansion of the assignment statements for associative + arrays here, so we don't have to scan the subscript and find the ending + bracket twice. See the caller below. */ + if (var && assoc_p (var)) + { + if (val != value) + free (val); + return list; + } + + /* If we're using [subscript]=value, we need to quote each [ and ] to + prevent unwanted filename expansion. This doesn't need to be done + for associative array expansion, since that uses a different expansion + function (see assign_compound_array_list below). */ + if (list) + quote_array_assignment_chars (list); + + /* 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); + + return nlist; +} + +#if ASSOC_KVPAIR_ASSIGNMENT +static void +assign_assoc_from_kvlist (var, nlist, h, flags) + SHELL_VAR *var; + WORD_LIST *nlist; + HASH_TABLE *h; + int flags; +{ + WORD_LIST *list; + char *akey, *aval, *k, *v; + int free_aval; + + for (list = nlist; list; list = list->next) + { + free_aval = 0; + + k = list->word->word; + v = list->next ? list->next->word->word : 0; + + if (list->next) + list = list->next; + + akey = expand_assignment_string_to_string (k, 0); + aval = expand_assignment_string_to_string (v, 0); + + if (akey == 0 || *akey == 0) + { + err_badarraysub (k); + FREE (akey); + continue; + } + if (aval == 0) + { + aval = (char *)xmalloc (1); + aval[0] = '\0'; /* like do_assignment_internal */ + free_aval = 1; + } + + bind_assoc_var_internal (var, h, akey, aval, flags); + if (free_aval) + free (aval); + } +} + +/* Return non-zero if L appears to be a key-value pair associative array + compound assignment. */ +int +kvpair_assignment_p (l) + WORD_LIST *l; +{ + return (l && (l->word->flags & W_ASSIGNMENT) == 0 && l->word->word[0] != '['); /*]*/ +} + +char * +expand_and_quote_kvpair_word (w) + char *w; +{ + char *t, *r; + + t = w ? expand_assignment_string_to_string (w, 0) : 0; + r = sh_single_quote (t ? t : ""); + free (t); + return r; +} +#endif + +/* Callers ensure that VAR is not NULL. Associative array assignments have not + been expanded when this is called, or have been expanded once and single- + quoted, so we don't have to scan through an unquoted expanded subscript to + find the ending bracket; indexed array assignments have been expanded and + possibly single-quoted to prevent further expansion. + + If this is an associative array, we perform the assignments into NHASH and + set NHASH to be the value of VAR after processing the assignments in NLIST */ +void +assign_compound_array_list (var, nlist, flags) + SHELL_VAR *var; + WORD_LIST *nlist; + int flags; +{ + ARRAY *a; + HASH_TABLE *h, *nhash; + WORD_LIST *list; + char *w, *val, *nval, *savecmd; + int len, iflags, free_val; + arrayind_t ind, last_ind; + char *akey; + + a = (var && array_p (var)) ? array_cell (var) : (ARRAY *)0; + nhash = h = (var && assoc_p (var)) ? assoc_cell (var) : (HASH_TABLE *)0; + + akey = (char *)0; + ind = 0; + + /* Now that we are ready to assign values to the array, kill the existing + value. */ + if ((flags & ASS_APPEND) == 0) + { + if (a && array_p (var)) + array_flush (a); + else if (h && assoc_p (var)) + nhash = assoc_create (h->nbuckets); + } + + last_ind = (a && (flags & ASS_APPEND)) ? array_max_index (a) + 1 : 0; + +#if ASSOC_KVPAIR_ASSIGNMENT + if (assoc_p (var) && kvpair_assignment_p (nlist)) + { + iflags = flags & ~ASS_APPEND; + assign_assoc_from_kvlist (var, nlist, nhash, iflags); + if (nhash && nhash != h) + { + h = assoc_cell (var); + var_setassoc (var, nhash); + assoc_dispose (h); + } + return; + } +#endif + + for (list = nlist; list; list = list->next) + { + /* Don't allow var+=(values) to make assignments in VALUES append to + existing values by default. */ + iflags = flags & ~ASS_APPEND; + w = list->word->word; + + /* We have a word of the form [ind]=value */ + if ((list->word->flags & W_ASSIGNMENT) && w[0] == '[') + { + /* Don't have to handle embedded quotes specially any more, since + associative array subscripts have not been expanded yet (see + above). */ + len = skipsubscript (w, 0, 0); + + /* XXX - changes for `+=' */ + if (w[len] != ']' || (w[len+1] != '=' && (w[len+1] != '+' || w[len+2] != '='))) + { + if (assoc_p (var)) + { + err_badarraysub (w); + continue; + } + nval = make_variable_value (var, w, flags); + if (var->assign_func) + (*var->assign_func) (var, nval, last_ind, 0); + 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) + { + set_exit_status (EXECUTION_FAILURE); + if (assoc_p (var)) + report_error (_("%s: invalid associative array key"), w); + else + report_error (_("%s: cannot assign to non-numeric index"), w); + continue; + } + + if (array_p (var)) + { + ind = array_expand_index (var, w + 1, len, 0); + /* negative subscripts to indexed arrays count back from end */ + if (ind < 0) + ind = array_max_index (array_cell (var)) + 1 + ind; + if (ind < 0) + { + err_badarraysub (w); + continue; + } + + last_ind = ind; + } + else if (assoc_p (var)) + { + /* This is not performed above, see expand_compound_array_assignment */ + w[len] = '\0'; /*[*/ + akey = expand_assignment_string_to_string (w+1, 0); + w[len] = ']'; + /* And we need to expand the value also, see below */ + if (akey == 0 || *akey == 0) + { + err_badarraysub (w); + FREE (akey); + continue; + } + } + + /* XXX - changes for `+=' -- just accept the syntax. ksh93 doesn't do this */ + if (w[len + 1] == '+' && w[len + 2] == '=') + { + iflags |= ASS_APPEND; + val = w + len + 3; + } + else + val = w + len + 2; + } + else if (assoc_p (var)) + { + set_exit_status (EXECUTION_FAILURE); + report_error (_("%s: %s: must use subscript when assigning associative array"), var->name, w); + continue; + } + else /* No [ind]=value, just a stray `=' */ + { + ind = last_ind; + val = w; + } + + free_val = 0; + /* See above; we need to expand the value here */ + if (assoc_p (var)) + { + val = expand_assignment_string_to_string (val, 0); + if (val == 0) + { + val = (char *)xmalloc (1); + val[0] = '\0'; /* like do_assignment_internal */ + } + free_val = 1; + } + + savecmd = this_command_name; + if (integer_p (var)) + this_command_name = (char *)NULL; /* no command name for errors */ + if (assoc_p (var)) + bind_assoc_var_internal (var, nhash, akey, val, iflags); + else + bind_array_var_internal (var, ind, akey, val, iflags); + last_ind++; + this_command_name = savecmd; + + if (free_val) + free (val); + } + + if (assoc_p (var) && nhash && nhash != h) + { + h = assoc_cell (var); + var_setassoc (var, nhash); + assoc_dispose (h); + } +} + +/* Perform a compound array assignment: VAR->name=( VALUE ). The + VALUE has already had the parentheses stripped. */ +SHELL_VAR * +assign_array_var_from_string (var, value, flags) + SHELL_VAR *var; + char *value; + int flags; +{ + WORD_LIST *nlist; + + if (value == 0) + return var; + + nlist = expand_compound_array_assignment (var, value, flags); + assign_compound_array_list (var, nlist, flags); + + if (nlist) + dispose_words (nlist); + + if (var) + VUNSETATTR (var, att_invisible); /* no longer invisible */ + + return (var); +} + +/* Quote globbing chars and characters in $IFS before the `=' in an assignment + statement (usually a compound array assignment) to protect them from + unwanted filename expansion or word splitting. */ +static char * +quote_assign (string) + const char *string; +{ + size_t slen; + int saw_eq; + char *temp, *t, *subs; + const char *s, *send; + int ss, se; + DECLARE_MBSTATE; + + slen = strlen (string); + send = string + slen; + + t = temp = (char *)xmalloc (slen * 2 + 1); + saw_eq = 0; + for (s = string; *s; ) + { + if (*s == '=') + saw_eq = 1; + if (saw_eq == 0 && *s == '[') /* looks like a subscript */ + { + ss = s - string; + se = skipsubscript (string, ss, 0); + subs = substring (s, ss, se); + *t++ = '\\'; + strcpy (t, subs); + t += se - ss; + *t++ = '\\'; + *t++ = ']'; + s += se + 1; + free (subs); + continue; + } + if (saw_eq == 0 && (glob_char_p (s) || isifs (*s))) + *t++ = '\\'; + + COPY_CHAR_P (t, s, send); + } + *t = '\0'; + return temp; +} + +/* Take a word W of the form [IND]=VALUE and transform it to ['IND']='VALUE' + to prevent further expansion. This is called for compound assignments to + indexed arrays. W has already undergone word expansions. If W has no [IND]=, + just single-quote and return it. */ +static char * +quote_compound_array_word (w, type) + char *w; + int type; +{ + char *nword, *sub, *value, *t; + int ind, wlen, i; + + if (w[0] != LBRACK) + return (sh_single_quote (w)); + ind = skipsubscript (w, 0, 0); + if (w[ind] != RBRACK) + return (sh_single_quote (w)); + + wlen = strlen (w); + w[ind] = '\0'; + sub = sh_single_quote (w+1); + w[ind] = RBRACK; + + nword = xmalloc (wlen * 4 + 5); /* wlen*4 is max single quoted length */ + nword[0] = LBRACK; + i = STRLEN (sub); + memcpy (nword+1, sub, i); + i++; /* accommodate the opening LBRACK */ + nword[i++] = w[ind++]; /* RBRACK */ + if (w[ind] == '+') + nword[i++] = w[ind++]; + nword[i++] = w[ind++]; + value = sh_single_quote (w + ind); + strcpy (nword + i, value); + + return nword; +} + +/* Expand the key and value in W, which is of the form [KEY]=VALUE, and + reconstruct W with the expanded and single-quoted version: + ['expanded-key']='expanded-value'. If there is no [KEY]=, single-quote the + word and return it. Very similar to previous function, but does not assume + W has already been expanded, and expands the KEY and VALUE separately. + Used for compound assignments to associative arrays that are arguments to + declaration builtins (declare -A a=( list )). */ +char * +expand_and_quote_assoc_word (w, type) + char *w; + int type; +{ + char *nword, *key, *value, *t; + int ind, wlen, i; + + if (w[0] != LBRACK) + return (sh_single_quote (w)); + ind = skipsubscript (w, 0, 0); + if (w[ind] != RBRACK) + return (sh_single_quote (w)); + + w[ind] = '\0'; + t = expand_assignment_string_to_string (w+1, 0); + w[ind] = RBRACK; + key = sh_single_quote (t ? t : ""); + free (t); + + wlen = STRLEN (key); + nword = xmalloc (wlen + 5); + nword[0] = LBRACK; + memcpy (nword+1, key, wlen); + i = wlen + 1; /* accommodate the opening LBRACK */ + + nword[i++] = w[ind++]; /* RBRACK */ + if (w[ind] == '+') + nword[i++] = w[ind++]; + nword[i++] = w[ind++]; + + t = expand_assignment_string_to_string (w+ind, 0); + value = sh_single_quote (t ? t : ""); + free (t); + nword = xrealloc (nword, wlen + 5 + STRLEN (value)); + strcpy (nword + i, value); + + free (key); + free (value); + + return nword; +} + +/* For each word in a compound array assignment, if the word looks like + [ind]=value, single-quote ind and value, but leave the brackets and + the = sign (and any `+') alone. If it's not an assignment, just single- + quote the word. This is used for indexed arrays. */ +void +quote_compound_array_list (list, type) + WORD_LIST *list; + int type; +{ + char *t; + WORD_LIST *l; + + for (l = list; l; l = l->next) + { + if (l->word == 0 || l->word->word == 0) + continue; /* should not happen, but just in case... */ + if ((l->word->flags & W_ASSIGNMENT) == 0) + t = sh_single_quote (l->word->word); + else + t = quote_compound_array_word (l->word->word, type); + free (l->word->word); + l->word->word = t; + } +} + +/* For each word in a compound array assignment, if the word looks like + [ind]=value, quote globbing chars and characters in $IFS before the `='. */ +static void +quote_array_assignment_chars (list) + WORD_LIST *list; +{ + char *nword; + 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 hasn't been recognized as an assignment or + doesn't look like [ind]=value */ + if ((l->word->flags & W_ASSIGNMENT) == 0) + continue; + if (l->word->word[0] != '[' || mbschr (l->word->word, '=') == 0) /* ] */ + continue; + + nword = quote_assign (l->word->word); + free (l->word->word); + l->word->word = nword; + l->word->flags |= W_NOGLOB; /* XXX - W_NOSPLIT also? */ + } +} + +/* skipsubscript moved to subst.c to use private functions. 2009/02/24. */ + +/* 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. */ +/* If FLAGS&1 we don't expand the subscript; we just use it as-is. */ +int +unbind_array_element (var, sub, flags) + SHELL_VAR *var; + char *sub; + int flags; +{ + int len; + arrayind_t ind; + char *akey; + ARRAY_ELEMENT *ae; + + len = skipsubscript (sub, 0, (flags&1) || (var && assoc_p(var))); /* XXX */ + 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) + { + if (array_p (var) || assoc_p (var)) + { + unbind_variable (var->name); /* XXX -- {array,assoc}_flush ? */ + return (0); + } + else + return -2; /* don't allow this to unset scalar variables */ + } + + if (assoc_p (var)) + { + akey = (flags & 1) ? sub : expand_assignment_string_to_string (sub, 0); + if (akey == 0 || *akey == 0) + { + builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg)); + FREE (akey); + return -1; + } + assoc_remove (assoc_cell (var), akey); + if (akey != sub) + free (akey); + } + else if (array_p (var)) + { + ind = array_expand_index (var, sub, len+1, 0); + /* negative subscripts to indexed arrays count back from end */ + if (ind < 0) + ind = array_max_index (array_cell (var)) + 1 + ind; + if (ind < 0) + { + builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg)); + return -1; + } + ae = array_remove (array_cell (var), ind); + if (ae) + array_dispose_element (ae); + } + else /* array_p (var) == 0 && assoc_p (var) == 0 */ + { + akey = this_command_name; + ind = array_expand_index (var, sub, len+1, 0); + this_command_name = akey; + if (ind == 0) + { + unbind_variable (var->name); + return (0); + } + else + return -2; /* any subscript other than 0 is invalid with scalar variables */ + } + + 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); + } +} + +/* Format and output an associative array assignment in compound form + VAR=(VALUES), suitable for re-use as input. */ +void +print_assoc_assignment (var, quoted) + SHELL_VAR *var; + int quoted; +{ + char *vstr; + + vstr = assoc_to_assign (assoc_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]. */ + +/* We need to reserve 1 for FLAGS, which we pass to skipsubscript. */ +int +valid_array_reference (name, flags) + const char *name; + int flags; +{ + char *t; + int r, len, isassoc; + SHELL_VAR *entry; + + t = mbschr (name, '['); /* ] */ + isassoc = 0; + if (t) + { + *t = '\0'; + r = legal_identifier (name); + if (flags & VA_NOEXPAND) /* Don't waste a lookup if we don't need one */ + isassoc = (entry = find_variable (name)) && assoc_p (entry); + *t = '['; + if (r == 0) + return 0; + + if (isassoc && ((flags & (VA_NOEXPAND|VA_ONEWORD)) == (VA_NOEXPAND|VA_ONEWORD))) + len = strlen (t) - 1; + else if (isassoc) + len = skipsubscript (t, 0, flags&VA_NOEXPAND); /* VA_NOEXPAND must be 1 */ + else + /* Check for a properly-terminated non-null subscript. */ + len = skipsubscript (t, 0, 0); /* arithmetic expression */ + + if (t[len] != ']' || len == 1 || t[len+1] != '\0') + return 0; + +#if 0 + /* Could check and allow subscripts consisting only of whitespace for + existing associative arrays, using isassoc */ + for (r = 1; r < len; r++) + if (whitespace (t[r]) == 0) + return 1; + return 0; +#else + /* This allows blank subscripts */ + return 1; +#endif + } + return 0; +} + +/* Expand the array index beginning at S and extending LEN characters. */ +arrayind_t +array_expand_index (var, s, len, flags) + SHELL_VAR *var; + char *s; + int len; + int flags; +{ + char *exp, *t, *savecmd; + int expok; + arrayind_t val; + + exp = (char *)xmalloc (len); + strncpy (exp, s, len - 1); + exp[len - 1] = '\0'; +#if 0 /* TAG: maybe bash-5.2 */ + if ((flags & AV_NOEXPAND) == 0) + t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */ + else + t = exp; +#endif + t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */ + savecmd = this_command_name; + this_command_name = (char *)NULL; + val = evalexp (t, EXP_EXPANDED, &expok); /* XXX - was 0 but we expanded exp already */ + this_command_name = savecmd; + if (t != exp) + free (t); + free (exp); + if (expok == 0) + { + set_exit_status (EXECUTION_FAILURE); + + if (no_longjmp_on_fatal_error) + return 0; + top_level_cleanup (); + 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, flags, subp, lenp) + const char *s; + int flags; + char **subp; + int *lenp; +{ + char *t, *ret; + int ind, ni; + + t = mbschr (s, '['); + if (t == 0) + { + if (subp) + *subp = t; + if (lenp) + *lenp = 0; + return ((char *)NULL); + } + ind = t - s; + ni = skipsubscript (s, ind, flags); /* XXX - was 0 not flags */ + 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, flags, subp, lenp) + const char *s; + int flags; + char **subp; + int *lenp; +{ + char *t; + SHELL_VAR *var; + + t = array_variable_name (s, flags, subp, lenp); + if (t == 0) + return ((SHELL_VAR *)NULL); + var = find_variable (t); /* XXX - handle namerefs here? */ + + free (t); + return var; /* now return invisible variables; caller must handle */ +} + +#define INDEX_ERROR() \ + do \ + { \ + if (var) \ + err_badarraysub (var->name); \ + else \ + { \ + t[-1] = '\0'; \ + err_badarraysub (s); \ + t[-1] = '['; /* ] */\ + } \ + return ((char *)NULL); \ + } \ + while (0) + +/* 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[*], 2 if the + reference is name[@], and 0 otherwise. */ +static char * +array_value_internal (s, quoted, flags, rtype, indp) + const char *s; + int quoted, flags, *rtype; + arrayind_t *indp; +{ + int len; + arrayind_t ind; + char *akey; + char *retval, *t, *temp; + WORD_LIST *l; + SHELL_VAR *var; + + var = array_variable_part (s, (flags&AV_NOEXPAND) ? 1 : 0, &t, &len); /* XXX */ + + /* 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 */ + + /* [ */ + akey = 0; + if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']') + { + if (rtype) + *rtype = (t[0] == '*') ? 1 : 2; + if ((flags & AV_ALLOWALL) == 0) + { + err_badarraysub (s); + return ((char *)NULL); + } + else if (var == 0 || value_cell (var) == 0) /* XXX - check for invisible_p(var) ? */ + return ((char *)NULL); + else if (invisible_p (var)) + return ((char *)NULL); + else if (array_p (var) == 0 && assoc_p (var) == 0) + l = add_string_to_list (value_cell (var), (WORD_LIST *)NULL); + else if (assoc_p (var)) + { + l = assoc_to_word_list (assoc_cell (var)); + if (l == (WORD_LIST *)NULL) + return ((char *)NULL); + } + else + { + l = array_to_word_list (array_cell (var)); + if (l == (WORD_LIST *)NULL) + return ((char *) NULL); + } + + /* Caller of array_value takes care of inspecting rtype and duplicating + retval if rtype == 0, so this is not a memory leak */ + if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + { + temp = string_list_dollar_star (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0); + retval = quote_string (temp); + free (temp); + } + else /* ${name[@]} or unquoted ${name[*]} */ + retval = string_list_dollar_at (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0); + + dispose_words (l); + } + else + { + if (rtype) + *rtype = 0; + if (var == 0 || array_p (var) || assoc_p (var) == 0) + { + if ((flags & AV_USEIND) == 0 || indp == 0) + { + ind = array_expand_index (var, t, len, flags); + if (ind < 0) + { + /* negative subscripts to indexed arrays count back from end */ + if (var && array_p (var)) + ind = array_max_index (array_cell (var)) + 1 + ind; + if (ind < 0) + INDEX_ERROR(); + } + if (indp) + *indp = ind; + } + else if (indp) + ind = *indp; + } + else if (assoc_p (var)) + { + t[len - 1] = '\0'; + if ((flags & AV_NOEXPAND) == 0) + akey = expand_assignment_string_to_string (t, 0); /* [ */ + else + akey = savestring (t); + t[len - 1] = ']'; + if (akey == 0 || *akey == 0) + { + FREE (akey); + INDEX_ERROR(); + } + } + + if (var == 0 || value_cell (var) == 0) /* XXX - check invisible_p(var) ? */ + { + FREE (akey); + return ((char *)NULL); + } + else if (invisible_p (var)) + { + FREE (akey); + return ((char *)NULL); + } + if (array_p (var) == 0 && assoc_p (var) == 0) + return (ind == 0 ? value_cell (var) : (char *)NULL); + else if (assoc_p (var)) + { + retval = assoc_reference (assoc_cell (var), akey); + free (akey); + } + else + 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, flags, rtype, indp) + const char *s; + int quoted, flags, *rtype; + arrayind_t *indp; +{ + return (array_value_internal (s, quoted, flags|AV_ALLOWALL, rtype, indp)); +} + +/* Return the value of the array indexing expression S as a single string. + If (FLAGS & AV_ALLOWALL) 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, flags, rtype, indp) + const char *s; + int flags, *rtype; + arrayind_t *indp; +{ + return (array_value_internal (s, 0, flags, rtype, indp)); +} + +char * +array_keys (s, quoted, pflags) + char *s; + int quoted, pflags; +{ + int len; + char *retval, *t, *temp; + WORD_LIST *l; + SHELL_VAR *var; + + var = array_variable_part (s, 0, &t, &len); + + /* [ */ + if (var == 0 || ALL_ELEMENT_SUB (t[0]) == 0 || t[1] != ']') + return (char *)NULL; + + if (var_isset (var) == 0 || invisible_p (var)) + return (char *)NULL; + + if (array_p (var) == 0 && assoc_p (var) == 0) + l = add_string_to_list ("0", (WORD_LIST *)NULL); + else if (assoc_p (var)) + l = assoc_keys_to_word_list (assoc_cell (var)); + else + l = array_keys_to_word_list (array_cell (var)); + if (l == (WORD_LIST *)NULL) + return ((char *) NULL); + + retval = string_list_pos_params (t[0], l, quoted, pflags); + + dispose_words (l); + return retval; +} +#endif /* ARRAY_VARS */ diff --git a/bash-5.1/arrayfunc.h b/bash-5.1/arrayfunc.h new file mode 100644 index 0000000..838e76d --- /dev/null +++ b/bash-5.1/arrayfunc.h @@ -0,0 +1,100 @@ +/* arrayfunc.h -- declarations for miscellaneous array functions in arrayfunc.c */ + +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_ARRAYFUNC_H_) +#define _ARRAYFUNC_H_ + +/* Must include variables.h before including this file. */ + +#if defined (ARRAY_VARS) + +/* This variable means to not expand associative array subscripts more than + once, when performing variable expansion. */ +extern int assoc_expand_once; + +/* The analog for indexed array subscripts */ +extern int array_expand_once; + +/* Flags for array_value_internal and callers array_value/get_array_value */ +#define AV_ALLOWALL 0x001 +#define AV_QUOTED 0x002 +#define AV_USEIND 0x004 +#define AV_USEVAL 0x008 /* XXX - should move this */ +#define AV_ASSIGNRHS 0x010 /* no splitting, special case ${a[@]} */ +#define AV_NOEXPAND 0x020 /* don't run assoc subscripts through word expansion */ + +/* Flags for valid_array_reference. Value 1 is reserved for skipsubscript() */ +#define VA_NOEXPAND 0x001 +#define VA_ONEWORD 0x002 + +extern SHELL_VAR *convert_var_to_array PARAMS((SHELL_VAR *)); +extern SHELL_VAR *convert_var_to_assoc PARAMS((SHELL_VAR *)); + +extern char *make_array_variable_value PARAMS((SHELL_VAR *, arrayind_t, char *, char *, int)); + +extern SHELL_VAR *bind_array_variable PARAMS((char *, arrayind_t, char *, int)); +extern SHELL_VAR *bind_array_element PARAMS((SHELL_VAR *, arrayind_t, char *, int)); +extern SHELL_VAR *assign_array_element PARAMS((char *, char *, int)); + +extern SHELL_VAR *bind_assoc_variable PARAMS((SHELL_VAR *, char *, char *, char *, int)); + +extern SHELL_VAR *find_or_make_array_variable PARAMS((char *, int)); + +extern SHELL_VAR *assign_array_from_string PARAMS((char *, char *, int)); +extern SHELL_VAR *assign_array_var_from_word_list PARAMS((SHELL_VAR *, WORD_LIST *, int)); + +extern WORD_LIST *expand_compound_array_assignment PARAMS((SHELL_VAR *, char *, int)); +extern void assign_compound_array_list PARAMS((SHELL_VAR *, WORD_LIST *, int)); +extern SHELL_VAR *assign_array_var_from_string PARAMS((SHELL_VAR *, char *, int)); + +extern char *expand_and_quote_assoc_word PARAMS((char *, int)); +extern void quote_compound_array_list PARAMS((WORD_LIST *, int)); + +extern int kvpair_assignment_p PARAMS((WORD_LIST *)); +extern char *expand_and_quote_kvpair_word PARAMS((char *)); + +extern int unbind_array_element PARAMS((SHELL_VAR *, char *, int)); +extern int skipsubscript PARAMS((const char *, int, int)); + +extern void print_array_assignment PARAMS((SHELL_VAR *, int)); +extern void print_assoc_assignment PARAMS((SHELL_VAR *, int)); + +extern arrayind_t array_expand_index PARAMS((SHELL_VAR *, char *, int, int)); +extern int valid_array_reference PARAMS((const char *, int)); +extern char *array_value PARAMS((const char *, int, int, int *, arrayind_t *)); +extern char *get_array_value PARAMS((const char *, int, int *, arrayind_t *)); + +extern char *array_keys PARAMS((char *, int, int)); + +extern char *array_variable_name PARAMS((const char *, int, char **, int *)); +extern SHELL_VAR *array_variable_part PARAMS((const char *, int, char **, int *)); + +#else + +#define AV_ALLOWALL 0 +#define AV_QUOTED 0 +#define AV_USEIND 0 +#define AV_ASSIGNRHS 0 + +#define VA_ONEWORD 0 + +#endif + +#endif /* !_ARRAYFUNC_H_ */ diff --git a/bash-5.1/assoc.c b/bash-5.1/assoc.c new file mode 100644 index 0000000..5782e85 --- /dev/null +++ b/bash-5.1/assoc.c @@ -0,0 +1,587 @@ +/* + * assoc.c - functions to manipulate associative arrays + * + * Associative arrays are standard shell hash tables. + * + * Chet Ramey + * chet@ins.cwru.edu + */ + +/* Copyright (C) 2008,2009,2011-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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 "assoc.h" +#include "builtins/common.h" + +static WORD_LIST *assoc_to_word_list_internal PARAMS((HASH_TABLE *, int)); + +/* assoc_create == hash_create */ + +void +assoc_dispose (hash) + HASH_TABLE *hash; +{ + if (hash) + { + hash_flush (hash, 0); + hash_dispose (hash); + } +} + +void +assoc_flush (hash) + HASH_TABLE *hash; +{ + hash_flush (hash, 0); +} + +int +assoc_insert (hash, key, value) + HASH_TABLE *hash; + char *key; + char *value; +{ + BUCKET_CONTENTS *b; + + b = hash_search (key, hash, HASH_CREATE); + if (b == 0) + return -1; + /* If we are overwriting an existing element's value, we're not going to + use the key. Nothing in the array assignment code path frees the key + string, so we can free it here to avoid a memory leak. */ + if (b->key != key) + free (key); + FREE (b->data); + b->data = value ? savestring (value) : (char *)0; + return (0); +} + +/* Like assoc_insert, but returns b->data instead of freeing it */ +PTR_T +assoc_replace (hash, key, value) + HASH_TABLE *hash; + char *key; + char *value; +{ + BUCKET_CONTENTS *b; + PTR_T t; + + b = hash_search (key, hash, HASH_CREATE); + if (b == 0) + return (PTR_T)0; + /* If we are overwriting an existing element's value, we're not going to + use the key. Nothing in the array assignment code path frees the key + string, so we can free it here to avoid a memory leak. */ + if (b->key != key) + free (key); + t = b->data; + b->data = value ? savestring (value) : (char *)0; + return t; +} + +void +assoc_remove (hash, string) + HASH_TABLE *hash; + char *string; +{ + BUCKET_CONTENTS *b; + + b = hash_remove (string, hash, 0); + if (b) + { + free ((char *)b->data); + free (b->key); + free (b); + } +} + +char * +assoc_reference (hash, string) + HASH_TABLE *hash; + char *string; +{ + BUCKET_CONTENTS *b; + + if (hash == 0) + return (char *)0; + + b = hash_search (string, hash, 0); + return (b ? (char *)b->data : 0); +} + +/* Quote the data associated with each element of the hash table ASSOC, + using quote_string */ +HASH_TABLE * +assoc_quote (h) + HASH_TABLE *h; +{ + int i; + BUCKET_CONTENTS *tlist; + char *t; + + if (h == 0 || assoc_empty (h)) + return ((HASH_TABLE *)NULL); + + for (i = 0; i < h->nbuckets; i++) + for (tlist = hash_items (i, h); tlist; tlist = tlist->next) + { + t = quote_string ((char *)tlist->data); + FREE (tlist->data); + tlist->data = t; + } + + return h; +} + +/* Quote escape characters in the data associated with each element + of the hash table ASSOC, using quote_escapes */ +HASH_TABLE * +assoc_quote_escapes (h) + HASH_TABLE *h; +{ + int i; + BUCKET_CONTENTS *tlist; + char *t; + + if (h == 0 || assoc_empty (h)) + return ((HASH_TABLE *)NULL); + + for (i = 0; i < h->nbuckets; i++) + for (tlist = hash_items (i, h); tlist; tlist = tlist->next) + { + t = quote_escapes ((char *)tlist->data); + FREE (tlist->data); + tlist->data = t; + } + + return h; +} + +HASH_TABLE * +assoc_dequote (h) + HASH_TABLE *h; +{ + int i; + BUCKET_CONTENTS *tlist; + char *t; + + if (h == 0 || assoc_empty (h)) + return ((HASH_TABLE *)NULL); + + for (i = 0; i < h->nbuckets; i++) + for (tlist = hash_items (i, h); tlist; tlist = tlist->next) + { + t = dequote_string ((char *)tlist->data); + FREE (tlist->data); + tlist->data = t; + } + + return h; +} + +HASH_TABLE * +assoc_dequote_escapes (h) + HASH_TABLE *h; +{ + int i; + BUCKET_CONTENTS *tlist; + char *t; + + if (h == 0 || assoc_empty (h)) + return ((HASH_TABLE *)NULL); + + for (i = 0; i < h->nbuckets; i++) + for (tlist = hash_items (i, h); tlist; tlist = tlist->next) + { + t = dequote_escapes ((char *)tlist->data); + FREE (tlist->data); + tlist->data = t; + } + + return h; +} + +HASH_TABLE * +assoc_remove_quoted_nulls (h) + HASH_TABLE *h; +{ + int i; + BUCKET_CONTENTS *tlist; + char *t; + + if (h == 0 || assoc_empty (h)) + return ((HASH_TABLE *)NULL); + + for (i = 0; i < h->nbuckets; i++) + for (tlist = hash_items (i, h); tlist; tlist = tlist->next) + { + t = remove_quoted_nulls ((char *)tlist->data); + tlist->data = t; + } + + return h; +} + +/* + * Return a string whose elements are the members of array H beginning at + * the STARTth element and spanning NELEM members. Null elements are counted. + */ +char * +assoc_subrange (hash, start, nelem, starsub, quoted, pflags) + HASH_TABLE *hash; + arrayind_t start, nelem; + int starsub, quoted, pflags; +{ + WORD_LIST *l, *save, *h, *t; + int i, j; + char *ret; + + if (assoc_empty (hash)) + return ((char *)NULL); + + save = l = assoc_to_word_list (hash); + if (save == 0) + return ((char *)NULL); + + for (i = 1; l && i < start; i++) + l = l->next; + if (l == 0) + { + dispose_words (save); + return ((char *)NULL); + } + for (j = 0,h = t = l; l && j < nelem; j++) + { + t = l; + l = l->next; + } + + t->next = (WORD_LIST *)NULL; + + ret = string_list_pos_params (starsub ? '*' : '@', h, quoted, pflags); + + if (t != l) + t->next = l; + + dispose_words (save); + return (ret); + +} + +char * +assoc_patsub (h, pat, rep, mflags) + HASH_TABLE *h; + char *pat, *rep; + int mflags; +{ + char *t; + int pchar, qflags, pflags; + WORD_LIST *wl, *save; + + if (h == 0 || assoc_empty (h)) + return ((char *)NULL); + + wl = assoc_to_word_list (h); + if (wl == 0) + return (char *)NULL; + + for (save = wl; wl; wl = wl->next) + { + t = pat_subst (wl->word->word, pat, rep, mflags); + FREE (wl->word->word); + wl->word->word = t; + } + + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + pflags = (mflags & MATCH_ASSIGNRHS) == MATCH_ASSIGNRHS ? PF_ASSIGNRHS : 0; + + t = string_list_pos_params (pchar, save, qflags, pflags); + dispose_words (save); + + return t; +} + +char * +assoc_modcase (h, pat, modop, mflags) + HASH_TABLE *h; + char *pat; + int modop; + int mflags; +{ + char *t; + int pchar, qflags, pflags; + WORD_LIST *wl, *save; + + if (h == 0 || assoc_empty (h)) + return ((char *)NULL); + + wl = assoc_to_word_list (h); + if (wl == 0) + return ((char *)NULL); + + for (save = wl; wl; wl = wl->next) + { + t = sh_modcase (wl->word->word, pat, modop); + FREE (wl->word->word); + wl->word->word = t; + } + + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + pflags = (mflags & MATCH_ASSIGNRHS) == MATCH_ASSIGNRHS ? PF_ASSIGNRHS : 0; + + t = string_list_pos_params (pchar, save, qflags, pflags); + dispose_words (save); + + return t; +} + +char * +assoc_to_kvpair (hash, quoted) + HASH_TABLE *hash; + int quoted; +{ + char *ret; + char *istr, *vstr; + int i, rsize, rlen, elen; + BUCKET_CONTENTS *tlist; + + if (hash == 0 || assoc_empty (hash)) + return (char *)0; + + ret = xmalloc (rsize = 128); + ret[rlen = 0] = '\0'; + + for (i = 0; i < hash->nbuckets; i++) + for (tlist = hash_items (i, hash); tlist; tlist = tlist->next) + { + if (ansic_shouldquote (tlist->key)) + istr = ansic_quote (tlist->key, 0, (int *)0); + else if (sh_contains_shell_metas (tlist->key)) + istr = sh_double_quote (tlist->key); + else if (ALL_ELEMENT_SUB (tlist->key[0]) && tlist->key[1] == '\0') + istr = sh_double_quote (tlist->key); + else + istr = tlist->key; + + vstr = tlist->data ? (ansic_shouldquote ((char *)tlist->data) ? + ansic_quote ((char *)tlist->data, 0, (int *)0) : + sh_double_quote ((char *)tlist->data)) + : (char *)0; + + elen = STRLEN (istr) + 4 + STRLEN (vstr); + RESIZE_MALLOCED_BUFFER (ret, rlen, (elen+1), rsize, rsize); + + strcpy (ret+rlen, istr); + rlen += STRLEN (istr); + ret[rlen++] = ' '; + if (vstr) + { + strcpy (ret + rlen, vstr); + rlen += STRLEN (vstr); + } + else + { + strcpy (ret + rlen, "\"\""); + rlen += 2; + } + ret[rlen++] = ' '; + + if (istr != tlist->key) + FREE (istr); + + FREE (vstr); + } + + RESIZE_MALLOCED_BUFFER (ret, rlen, 1, rsize, 8); + ret[rlen] = '\0'; + + if (quoted) + { + vstr = sh_single_quote (ret); + free (ret); + ret = vstr; + } + + return ret; +} + +char * +assoc_to_assign (hash, quoted) + HASH_TABLE *hash; + int quoted; +{ + char *ret; + char *istr, *vstr; + int i, rsize, rlen, elen; + BUCKET_CONTENTS *tlist; + + if (hash == 0 || assoc_empty (hash)) + return (char *)0; + + ret = xmalloc (rsize = 128); + ret[0] = '('; + rlen = 1; + + for (i = 0; i < hash->nbuckets; i++) + for (tlist = hash_items (i, hash); tlist; tlist = tlist->next) + { + if (ansic_shouldquote (tlist->key)) + istr = ansic_quote (tlist->key, 0, (int *)0); + else if (sh_contains_shell_metas (tlist->key)) + istr = sh_double_quote (tlist->key); + else if (ALL_ELEMENT_SUB (tlist->key[0]) && tlist->key[1] == '\0') + istr = sh_double_quote (tlist->key); + else + istr = tlist->key; + + vstr = tlist->data ? (ansic_shouldquote ((char *)tlist->data) ? + ansic_quote ((char *)tlist->data, 0, (int *)0) : + sh_double_quote ((char *)tlist->data)) + : (char *)0; + + elen = STRLEN (istr) + 8 + STRLEN (vstr); + RESIZE_MALLOCED_BUFFER (ret, rlen, (elen+1), rsize, rsize); + + ret[rlen++] = '['; + strcpy (ret+rlen, istr); + rlen += STRLEN (istr); + ret[rlen++] = ']'; + ret[rlen++] = '='; + if (vstr) + { + strcpy (ret + rlen, vstr); + rlen += STRLEN (vstr); + } + ret[rlen++] = ' '; + + if (istr != tlist->key) + FREE (istr); + + FREE (vstr); + } + + RESIZE_MALLOCED_BUFFER (ret, rlen, 1, rsize, 8); + ret[rlen++] = ')'; + ret[rlen] = '\0'; + + if (quoted) + { + vstr = sh_single_quote (ret); + free (ret); + ret = vstr; + } + + return ret; +} + +static WORD_LIST * +assoc_to_word_list_internal (h, t) + HASH_TABLE *h; + int t; +{ + WORD_LIST *list; + int i; + BUCKET_CONTENTS *tlist; + char *w; + + if (h == 0 || assoc_empty (h)) + return((WORD_LIST *)NULL); + list = (WORD_LIST *)NULL; + + for (i = 0; i < h->nbuckets; i++) + for (tlist = hash_items (i, h); tlist; tlist = tlist->next) + { + w = (t == 0) ? (char *)tlist->data : (char *)tlist->key; + list = make_word_list (make_bare_word(w), list); + } + return (REVERSE_LIST(list, WORD_LIST *)); +} + +WORD_LIST * +assoc_to_word_list (h) + HASH_TABLE *h; +{ + return (assoc_to_word_list_internal (h, 0)); +} + +WORD_LIST * +assoc_keys_to_word_list (h) + HASH_TABLE *h; +{ + return (assoc_to_word_list_internal (h, 1)); +} + +char * +assoc_to_string (h, sep, quoted) + HASH_TABLE *h; + char *sep; + int quoted; +{ + BUCKET_CONTENTS *tlist; + int i; + char *result, *t, *w; + WORD_LIST *list, *l; + + if (h == 0) + return ((char *)NULL); + if (assoc_empty (h)) + return (savestring ("")); + + result = NULL; + l = list = NULL; + /* This might be better implemented directly, but it's simple to implement + by converting to a word list first, possibly quoting the data, then + using list_string */ + for (i = 0; i < h->nbuckets; i++) + for (tlist = hash_items (i, h); tlist; tlist = tlist->next) + { + w = (char *)tlist->data; + if (w == 0) + continue; + t = quoted ? quote_string (w) : savestring (w); + list = make_word_list (make_bare_word(t), list); + FREE (t); + } + + l = REVERSE_LIST(list, WORD_LIST *); + + result = l ? string_list_internal (l, sep) : savestring (""); + dispose_words (l); + + return result; +} + +#endif /* ARRAY_VARS */ diff --git a/bash-5.1/assoc.h b/bash-5.1/assoc.h new file mode 100644 index 0000000..78ec073 --- /dev/null +++ b/bash-5.1/assoc.h @@ -0,0 +1,65 @@ +/* assoc.h -- definitions for the interface exported by assoc.c that allows + the rest of the shell to manipulate associative array variables. */ + +/* Copyright (C) 2008,2009-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _ASSOC_H_ +#define _ASSOC_H_ + +#include "stdc.h" +#include "hashlib.h" + +#define ASSOC_HASH_BUCKETS 1024 + +#define assoc_empty(h) ((h)->nentries == 0) +#define assoc_num_elements(h) ((h)->nentries) + +#define assoc_create(n) (hash_create((n))) + +#define assoc_copy(h) (hash_copy((h), 0)) + +#define assoc_walk(h, f) (hash_walk((h), (f)) + +extern void assoc_dispose PARAMS((HASH_TABLE *)); +extern void assoc_flush PARAMS((HASH_TABLE *)); + +extern int assoc_insert PARAMS((HASH_TABLE *, char *, char *)); +extern PTR_T assoc_replace PARAMS((HASH_TABLE *, char *, char *)); +extern void assoc_remove PARAMS((HASH_TABLE *, char *)); + +extern char *assoc_reference PARAMS((HASH_TABLE *, char *)); + +extern char *assoc_subrange PARAMS((HASH_TABLE *, arrayind_t, arrayind_t, int, int, int)); +extern char *assoc_patsub PARAMS((HASH_TABLE *, char *, char *, int)); +extern char *assoc_modcase PARAMS((HASH_TABLE *, char *, int, int)); + +extern HASH_TABLE *assoc_quote PARAMS((HASH_TABLE *)); +extern HASH_TABLE *assoc_quote_escapes PARAMS((HASH_TABLE *)); +extern HASH_TABLE *assoc_dequote PARAMS((HASH_TABLE *)); +extern HASH_TABLE *assoc_dequote_escapes PARAMS((HASH_TABLE *)); +extern HASH_TABLE *assoc_remove_quoted_nulls PARAMS((HASH_TABLE *)); + +extern char *assoc_to_kvpair PARAMS((HASH_TABLE *, int)); +extern char *assoc_to_assign PARAMS((HASH_TABLE *, int)); + +extern WORD_LIST *assoc_to_word_list PARAMS((HASH_TABLE *)); +extern WORD_LIST *assoc_keys_to_word_list PARAMS((HASH_TABLE *)); + +extern char *assoc_to_string PARAMS((HASH_TABLE *, char *, int)); +#endif /* _ASSOC_H_ */ diff --git a/bash-5.1/bashansi.h b/bash-5.1/bashansi.h new file mode 100644 index 0000000..2c33937 --- /dev/null +++ b/bash-5.1/bashansi.h @@ -0,0 +1,41 @@ +/* bashansi.h -- Typically included information required by picky compilers. */ + +/* Copyright (C) 1993-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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-5.1/bashhist.c b/bash-5.1/bashhist.c new file mode 100644 index 0000000..2a05a53 --- /dev/null +++ b/bash-5.1/bashhist.c @@ -0,0 +1,1074 @@ +/* bashhist.c -- bash interface to the GNU history library. */ + +/* Copyright (C) 1993-2019 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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" + +#if defined (SYSLOG_HISTORY) +# include +#endif + +#include "shell.h" +#include "flags.h" +#include "parser.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 + +#ifndef HISTSIZE_DEFAULT +# define HISTSIZE_DEFAULT "500" +#endif + +#if !defined (errno) +extern int errno; +#endif + +static int histignore_item_func PARAMS((struct ign *)); +static int check_history_control PARAMS((char *)); +static void hc_erasedups PARAMS((char *)); +static void really_add_history PARAMS((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 = 0; +int enable_history_list = -1; /* value for `set -o history' */ + +/* 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; +/* If non-zero, double quotes can quote the history expansion character. */ +int double_quotes_inhibit_history_expansion = 0; +#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; + +/* Set to the number of the most recent line of a possibly-multi-line command + that contains a shell comment. Used by bash_add_history() to determine + whether to add a newline or a semicolon. */ +int current_command_line_comment = 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; + +#if defined (BANG_HISTORY) +static int bash_history_inhibit_expansion PARAMS((char *, int)); +#endif +#if defined (READLINE) +static void re_edit PARAMS((char *)); +#endif +static int history_expansion_p PARAMS((char *)); +static int shell_comment PARAMS((char *)); +static int should_expand PARAMS((char *)); +static HIST_ENTRY *last_history_entry PARAMS((void)); +static char *expand_histignore_pattern PARAMS((char *)); +static int history_should_ignore PARAMS((char *)); + +#if defined (BANG_HISTORY) +/* 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; +{ + int t, si; + char hx[2]; + + hx[0] = history_expansion_char; + hx[1] = '\0'; + + /* 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); + /* The shell uses $! as a defined parameter expansion. */ + else if (i > 1 && string[i - 1] == '$' && string[i] == '!') + return (1); +#if defined (EXTENDED_GLOB) + else if (extended_glob && i > 1 && string[i+1] == '(' && member (')', string + i + 2)) + return (1); +#endif + + si = 0; + /* If we're supposed to be in single-quoted string, skip over the + single-quoted part and then look at what's left. */ + if (history_quoting_state == '\'') + { + si = skip_to_delim (string, 0, "'", SD_NOJMP|SD_HISTEXP); + if (string[si] == 0 || si >= i) + return (1); + si++; + } + + /* Make sure the history expansion should not be skipped by quoting or + command/process substitution. */ + if ((t = skip_to_histexp (string, si, hx, SD_NOJMP|SD_HISTEXP)) > 0) + { + /* Skip instances of history expansion appearing on the line before + this one. */ + while (t < i) + { + t = skip_to_histexp (string, t+1, hx, SD_NOJMP|SD_HISTEXP); + if (t <= 0) + return 0; + } + return (t > i); + } + else + return (0); +} +#endif + +void +bash_initialize_history () +{ + history_quotes_inhibit_expansion = 1; + history_search_delimiter_chars = ";&()|<>"; +#if defined (BANG_HISTORY) + history_inhibit_expansion_function = bash_history_inhibit_expansion; + sv_histchars ("histchars"); +#endif +} + +void +bash_history_reinit (interact) + int interact; +{ +#if defined (BANG_HISTORY) + history_expansion = (interact == 0) ? histexp_flag : HISTEXPAND_DEFAULT; + history_expansion_inhibited = (interact == 0) ? 1 - histexp_flag : 0; /* changed in bash_history_enable() */ + history_inhibit_expansion_function = bash_history_inhibit_expansion; +#endif + remember_on_history = enable_history_list; +} + +void +bash_history_disable () +{ + remember_on_history = 0; +#if defined (BANG_HISTORY) + history_expansion_inhibited = 1; +#endif +} + +void +bash_history_enable () +{ + remember_on_history = enable_history_list = 1; +#if defined (BANG_HISTORY) + history_expansion_inhibited = 0; + history_inhibit_expansion_function = bash_history_inhibit_expansion; +#endif + sv_history_control ("HISTCONTROL"); + sv_histignore ("HISTIGNORE"); +} + +/* Load the history list from the history file. */ +void +load_history () +{ + char *hf; + + /* 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", HISTSIZE_DEFAULT); + 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 && file_exists (hf)) + { + read_history (hf); + /* We have read all of the lines from the history file, even if we + read more lines than $HISTSIZE. Remember the total number of lines + we read so we don't count the last N lines as new over and over + again. */ + history_lines_in_file = history_lines_read_from_file; + using_history (); + /* history_lines_in_file = where_history () + history_base - 1; */ + } +} + +void +bash_clear_history () +{ + clear_history (); + history_lines_this_session = 0; + /* XXX - reset history_lines_read_from_file? */ +} + +/* Delete and free the history list entry at offset I. */ +int +bash_delete_histent (i) + int i; +{ + HIST_ENTRY *discard; + + discard = remove_history (i); + if (discard) + { + free_history_entry (discard); + history_lines_this_session--; + } + return discard != 0; +} + +int +bash_delete_history_range (first, last) + int first, last; +{ + register int i; + HIST_ENTRY **discard_list; + + discard_list = remove_history_range (first, last); + for (i = 0; discard_list && discard_list[i]; i++) + free_history_entry (discard_list[i]); + history_lines_this_session -= i; + + return 1; +} + +int +bash_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 = bash_delete_histent (i); + + if (where_history () > history_length) + history_set_pos (history_length); + + return r; +} + +#ifdef INCLUDE_UNUSED +/* Write the existing history out to the history file. */ +void +save_history () +{ + char *hf; + int r; + + hf = get_string_value ("HISTFILE"); + if (hf && *hf && file_exists (hf)) + { + /* Append only the lines that occurred this session to + the history file. */ + using_history (); + + if (history_lines_this_session <= where_history () || force_append_history) + r = append_history (history_lines_this_session, hf); + else + r = write_history (hf); + sv_histsize ("HISTFILESIZE"); + } +} +#endif + +int +maybe_append_history (filename) + char *filename; +{ + int fd, result, histlen; + struct stat buf; + + result = EXECUTION_SUCCESS; + if (history_lines_this_session > 0) + { + /* 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); + } + /* cap the number of lines we write at the length of the history list */ + histlen = where_history (); + if (histlen > 0 && history_lines_this_session > histlen) + history_lines_this_session = histlen; /* reset below anyway */ + result = append_history (history_lines_this_session, filename); + /* Pretend we already read these lines from the file because we just + added them */ + history_lines_in_file += history_lines_this_session; + history_lines_this_session = 0; + } + else + history_lines_this_session = 0; /* reset if > where_history() */ + + 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; + + result = 0; + if (history_lines_this_session > 0) + { + hf = get_string_value ("HISTFILE"); + + if (hf && *hf) + { + /* If the file doesn't exist, then create it. */ + if (file_exists (hf) == 0) + { + 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_written_to_file; + /* history_lines_in_file = where_history () + history_base - 1; */ + } + 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)) + { + int old_len; + + /* If we are expanding the second or later line of a multi-line + command, decrease history_length so references to history expansions + in these lines refer to the previous history entry and not the + current command. */ + old_len = history_length; + if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) + history_length--; + expanded = history_expand (line, &history_value); + if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1) + history_length = old_len; + + 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); + free (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. Return 2 if there is a comment after the + first non-whitespace character. Return 0 if the line does not contain a + comment. */ +static int +shell_comment (line) + char *line; +{ + char *p; + int n; + + if (line == 0) + return 0; + for (p = line; p && *p && whitespace (*p); p++) + ; + if (p && *p == '#') + return 1; + n = skip_to_delim (line, p - line, "#", SD_NOJMP|SD_GLOB|SD_EXTGLOB|SD_COMPLETE); + return (line[n] == '#') ? 2 : 0; +} + +#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 (); + temp = remove_history (r); + if (temp) + free_history_entry (temp); + } + } + 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. If we're collecting the body + of a here-document, we should act as if literal_history is enabled, because + we want to save the entire contents of the here-document as it was + entered. We also make sure to save multiple-line quoted strings or other + constructs. */ +void +maybe_add_history (line) + char *line; +{ + int is_comment; + + hist_last_line_added = 0; + is_comment = (parser_state & PST_HEREDOC) ? 0 : shell_comment (line); + + /* 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 && + ((parser_state & PST_HEREDOC) || literal_history || dstack.delimiter_depth != 0 || is_comment != 1)) + bash_add_history (line); + current_command_line_comment = is_comment ? current_command_line_count : -2; + 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_line_comment = is_comment ? current_command_line_count : -2; + 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; +} + +#if defined (SYSLOG_HISTORY) +#define SYSLOG_MAXMSG 1024 +#define SYSLOG_MAXLEN SYSLOG_MAXMSG +#define SYSLOG_MAXHDR 256 + +#ifndef OPENLOG_OPTS +#define OPENLOG_OPTS 0 +#endif + +#if defined (SYSLOG_SHOPT) +int syslog_history = SYSLOG_SHOPT; +#else +int syslog_history = 1; +#endif + +void +bash_syslog_history (line) + const char *line; +{ + char trunc[SYSLOG_MAXLEN], *msg; + char loghdr[SYSLOG_MAXHDR]; + char seqbuf[32], *seqnum; + int hdrlen, msglen, seqlen, chunks, i; + static int first = 1; + + if (first) + { + openlog (shell_name, OPENLOG_OPTS, SYSLOG_FACILITY); + first = 0; + } + + hdrlen = snprintf (loghdr, sizeof(loghdr), "HISTORY: PID=%d UID=%d", getpid(), current_user.uid); + msglen = strlen (line); + + if ((msglen + hdrlen + 1) < SYSLOG_MAXLEN) + syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "%s %s", loghdr, line); + else + { + chunks = ((msglen + hdrlen) / SYSLOG_MAXLEN) + 1; + for (msg = line, i = 0; i < chunks; i++) + { + seqnum = inttostr (i + 1, seqbuf, sizeof (seqbuf)); + seqlen = STRLEN (seqnum); + + /* 7 == "(seq=) " */ + strncpy (trunc, msg, SYSLOG_MAXLEN - hdrlen - seqlen - 7 - 1); + trunc[SYSLOG_MAXLEN - 1] = '\0'; + syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "%s (seq=%s) %s", loghdr, seqnum, trunc); + msg += SYSLOG_MAXLEN - hdrlen - seqlen - 8; + } + } +} +#endif + +/* 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, is_comment; + HIST_ENTRY *current, *old; + char *chars_to_add, *new_line; + + add_it = 1; + if (command_oriented_history && current_command_line_count > 1) + { + is_comment = (parser_state & PST_HEREDOC) ? 0 : shell_comment (line); + + /* The second and subsequent lines of a here document have the trailing + newline preserved. We don't want to add extra newlines here, but we + do want to add one after the first line (which is the command that + contains the here-doc specifier). parse.y:history_delimiting_chars() + does the right thing to take care of this for us. We don't want to + add extra newlines if the user chooses to enable literal_history, + so we have to duplicate some of what that function does here. */ + /* If we're in a here document and past the first line, + (current_command_line_count > 2) + don't add a newline here. This will also take care of the literal_history + case if the other conditions are met. */ + if ((parser_state & PST_HEREDOC) && current_command_line_count > 2 && line[strlen (line) - 1] == '\n') + chars_to_add = ""; + else if (current_command_line_count == current_command_line_comment+1) + chars_to_add = "\n"; + else if (literal_history) + chars_to_add = "\n"; + else + chars_to_add = history_delimiting_chars (line); + + using_history (); + current = previous_history (); + + current_command_line_comment = is_comment ? current_command_line_count : -2; + + 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 = ""; + } + + /* If we're not in some kind of quoted construct, the current history + entry ends with a newline, and we're going to add a semicolon, + don't. In some cases, it results in a syntax error (e.g., before + a close brace), and it should not be needed. */ + if (dstack.delimiter_depth == 0 && current->line[curlen - 1] == '\n' && *chars_to_add == ';') + 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 && history_is_stifled() && history_length == 0 && history_length == history_max_entries) + add_it = 0; + + if (add_it) + really_add_history (line); + +#if defined (SYSLOG_HISTORY) + if (syslog_history) + bash_syslog_history (line); +#endif + + 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 || enable_history_list) ? 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-5.1/bashhist.h b/bash-5.1/bashhist.h new file mode 100644 index 0000000..615f5d2 --- /dev/null +++ b/bash-5.1/bashhist.h @@ -0,0 +1,89 @@ +/* bashhist.h -- interface to the bash history functions in bashhist.c. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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) + +#if defined (STRICT_POSIX) +# undef HISTEXPAND_DEFAULT +# define HISTEXPAND_DEFAULT 0 +#else +# if !defined (HISTEXPAND_DEFAULT) +# define HISTEXPAND_DEFAULT 1 +# endif /* !HISTEXPAND_DEFAULT */ +#endif + +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; +extern int history_expansion; +extern int history_control; +extern int command_oriented_history; +extern int current_command_first_line_saved; +extern int current_command_first_line_comment; +extern int hist_last_line_added; +extern int hist_last_line_pushed; + +extern int dont_save_function_defs; + +# if defined (READLINE) +extern int hist_verify; +# endif + +# if defined (BANG_HISTORY) +extern int history_expansion_inhibited; +extern int double_quotes_inhibit_history_expansion; +# endif /* BANG_HISTORY */ + +extern void bash_initialize_history PARAMS((void)); +extern void bash_history_reinit PARAMS((int)); +extern void bash_history_disable PARAMS((void)); +extern void bash_history_enable PARAMS((void)); +extern void bash_clear_history PARAMS((void)); +extern int bash_delete_histent PARAMS((int)); +extern int bash_delete_history_range PARAMS((int, int)); +extern int bash_delete_last_history PARAMS((void)); +extern void load_history PARAMS((void)); +extern void save_history PARAMS((void)); +extern int maybe_append_history PARAMS((char *)); +extern int maybe_save_shell_history PARAMS((void)); +extern char *pre_process_line PARAMS((char *, int, int)); +extern void maybe_add_history PARAMS((char *)); +extern void bash_add_history PARAMS((char *)); +extern int check_add_history PARAMS((char *, int)); +extern int history_number PARAMS((void)); + +extern void setup_history_ignore PARAMS((char *)); + +extern char *last_history_line PARAMS((void)); + +#endif /* _BASHHIST_H_ */ diff --git a/bash-5.1/bashintl.h b/bash-5.1/bashintl.h new file mode 100644 index 0000000..dd32683 --- /dev/null +++ b/bash-5.1/bashintl.h @@ -0,0 +1,54 @@ +/* bashintl.h -- Internationalization functions and defines. */ + +/* Copyright (C) 1996-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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) + +#define P_(m1, m2, n) ngettext(m1, m2, n) + +#if defined (HAVE_SETLOCALE) && !defined (LC_ALL) +# undef HAVE_SETLOCALE +#endif + +#if !defined (HAVE_SETLOCALE) +# define setlocale(cat, loc) +#endif + +#if !defined (HAVE_LOCALE_H) || !defined (HAVE_LOCALECONV) +# define locale_decpoint() '.' +#endif + +#endif /* !_BASHINTL_H_ */ diff --git a/bash-5.1/bashjmp.h b/bash-5.1/bashjmp.h new file mode 100644 index 0000000..8ed1ac4 --- /dev/null +++ b/bash-5.1/bashjmp.h @@ -0,0 +1,46 @@ +/* bashjmp.h -- wrapper for setjmp.h with necessary bash definitions. */ + +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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 */ +extern procenv_t wait_intr_buf; + +extern int no_longjmp_on_fatal_error; + +#define SHFUNC_RETURN() sh_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-5.1/bashline.c b/bash-5.1/bashline.c new file mode 100644 index 0000000..c69c0c5 --- /dev/null +++ b/bash-5.1/bashline.c @@ -0,0 +1,4652 @@ +/* bashline.c -- Bash's interface to the readline library. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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 +#include "chartypes.h" +#include "bashansi.h" +#include "bashintl.h" + +#include "shell.h" +#include "input.h" +#include "parser.h" +#include "builtins.h" +#include "bashhist.h" +#include "bashline.h" +#include "execute_cmd.h" +#include "findcmd.h" +#include "pathexp.h" +#include "shmbutil.h" +#include "trap.h" +#include "flags.h" + +#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) +# include /* mbschr */ +#endif + +#include "builtins/common.h" +#include "builtins/builtext.h" /* for read_builtin */ + +#include +#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 + +/* Copied from rldefs.h, since that's not a public readline header file. */ +#ifndef FUNCTION_TO_KEYMAP + +#if defined (CRAY) +# define FUNCTION_TO_KEYMAP(map, key) (Keymap)((int)map[key].function) +# define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)((int)(data)) +#else +# define FUNCTION_TO_KEYMAP(map, key) (Keymap)(map[key].function) +# define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)(data) +#endif + +#endif + +#define RL_BOOLEAN_VARIABLE_VALUE(s) ((s)[0] == 'o' && (s)[1] == 'n' && (s)[2] == '\0') + +#if defined (BRACE_COMPLETION) +extern int bash_brace_completion PARAMS((int, int)); +#endif /* BRACE_COMPLETION */ + +/* To avoid including curses.h/term.h/termcap.h and that whole mess. */ +#ifdef _MINIX +extern int tputs PARAMS((const char *string, int nlines, void (*outx)(int))); +#else +extern int tputs PARAMS((const char *string, int nlines, int (*outx)(int))); +#endif + +/* Forward declarations */ + +/* Functions bound to keys in Readline for Bash users. */ +static int shell_expand_line PARAMS((int, int)); +static int display_shell_version PARAMS((int, int)); + +static int bash_ignore_filenames PARAMS((char **)); +static int bash_ignore_everything PARAMS((char **)); +static int bash_progcomp_ignore_filenames PARAMS((char **)); + +#if defined (BANG_HISTORY) +static char *history_expand_line_internal PARAMS((char *)); +static int history_expand_line PARAMS((int, int)); +static int tcsh_magic_space PARAMS((int, int)); +#endif /* BANG_HISTORY */ +#ifdef ALIAS +static int alias_expand_line PARAMS((int, int)); +#endif +#if defined (BANG_HISTORY) && defined (ALIAS) +static int history_and_alias_expand_line PARAMS((int, int)); +#endif + +static int bash_forward_shellword PARAMS((int, int)); +static int bash_backward_shellword PARAMS((int, int)); +static int bash_kill_shellword PARAMS((int, int)); +static int bash_backward_kill_shellword PARAMS((int, int)); +static int bash_transpose_shellwords PARAMS((int, int)); + +/* Helper functions for Readline. */ +static char *restore_tilde PARAMS((char *, char *)); +static char *maybe_restore_tilde PARAMS((char *, char *)); + +static char *bash_filename_rewrite_hook PARAMS((char *, int)); + +static void bash_directory_expansion PARAMS((char **)); +static int bash_filename_stat_hook PARAMS((char **)); +static int bash_command_name_stat_hook PARAMS((char **)); +static int bash_directory_completion_hook PARAMS((char **)); +static int filename_completion_ignore PARAMS((char **)); +static int bash_push_line PARAMS((void)); + +static int executable_completion PARAMS((const char *, int)); + +static rl_icppfunc_t *save_directory_hook PARAMS((void)); +static void restore_directory_hook PARAMS((rl_icppfunc_t)); + +static int directory_exists PARAMS((const char *, int)); + +static void cleanup_expansion_error PARAMS((void)); +static void maybe_make_readline_line PARAMS((char *)); +static void set_up_new_line PARAMS((char *)); + +static int check_redir PARAMS((int)); +static char **attempt_shell_completion PARAMS((const char *, int, int)); +static char *variable_completion_function PARAMS((const char *, int)); +static char *hostname_completion_function PARAMS((const char *, int)); +static char *command_subst_completion_function PARAMS((const char *, int)); + +static void build_history_completion_array PARAMS((void)); +static char *history_completion_generator PARAMS((const char *, int)); +static int dynamic_complete_history PARAMS((int, int)); +static int bash_dabbrev_expand PARAMS((int, int)); + +static void initialize_hostname_list PARAMS((void)); +static void add_host_name PARAMS((char *)); +static void snarf_hosts_from_file PARAMS((char *)); +static char **hostnames_matching PARAMS((char *)); + +static void _ignore_completion_names PARAMS((char **, sh_ignore_func_t *)); +static int name_is_acceptable PARAMS((const char *)); +static int test_for_directory PARAMS((const char *)); +static int test_for_canon_directory PARAMS((const char *)); +static int return_zero PARAMS((const char *)); + +static char *bash_dequote_filename PARAMS((char *, int)); +static char *quote_word_break_chars PARAMS((char *)); +static void set_filename_bstab PARAMS((const char *)); +static char *bash_quote_filename PARAMS((char *, int, char *)); + +#ifdef _MINIX +static void putx PARAMS((int)); +#else +static int putx PARAMS((int)); +#endif +static int readline_get_char_offset PARAMS((int)); +static void readline_set_char_offset PARAMS((int, int *)); + +static Keymap get_cmd_xmap_from_edit_mode PARAMS((void)); +static Keymap get_cmd_xmap_from_keymap PARAMS((Keymap)); + +static void init_unix_command_map PARAMS((void)); +static int isolate_sequence PARAMS((char *, int, int, int *)); + +static int set_saved_history PARAMS((void)); + +#if defined (ALIAS) +static int posix_edit_macros PARAMS((int, int)); +#endif + +static int bash_event_hook PARAMS((void)); + +#if defined (PROGRAMMABLE_COMPLETION) +static int find_cmd_start PARAMS((int)); +static int find_cmd_end PARAMS((int)); +static char *find_cmd_name PARAMS((int, int *, int *)); +static char *prog_complete_return PARAMS((const char *, int)); + +static char **prog_complete_matches; +#endif + +extern int no_symbolic_links; +extern STRING_INT_ALIST word_token_alist[]; + +/* 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 PARAMS((int, rl_compentry_func_t *)); + +static int bash_complete_filename_internal PARAMS((int)); +static int bash_complete_username_internal PARAMS((int)); +static int bash_complete_hostname_internal PARAMS((int)); +static int bash_complete_variable_internal PARAMS((int)); +static int bash_complete_command_internal PARAMS((int)); + +static int bash_complete_filename PARAMS((int, int)); +static int bash_possible_filename_completions PARAMS((int, int)); +static int bash_complete_username PARAMS((int, int)); +static int bash_possible_username_completions PARAMS((int, int)); +static int bash_complete_hostname PARAMS((int, int)); +static int bash_possible_hostname_completions PARAMS((int, int)); +static int bash_complete_variable PARAMS((int, int)); +static int bash_possible_variable_completions PARAMS((int, int)); +static int bash_complete_command PARAMS((int, int)); +static int bash_possible_command_completions PARAMS((int, int)); + +static int completion_glob_pattern PARAMS((char *)); +static char *glob_complete_word PARAMS((const char *, int)); +static int bash_glob_completion_internal PARAMS((int)); +static int bash_glob_complete_word PARAMS((int, int)); +static int bash_glob_expand_word PARAMS((int, int)); +static int bash_glob_list_expansions PARAMS((int, int)); + +#endif /* SPECIFIC_COMPLETION_FUNCTIONS */ + +static int edit_and_execute_command PARAMS((int, int, int, char *)); +#if defined (VI_MODE) +static int vi_edit_and_execute_command PARAMS((int, int)); +static int bash_vi_complete PARAMS((int, int)); +#endif +static int emacs_edit_and_execute_command PARAMS((int, int)); + +/* Non-zero once initialize_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; + +/* Perform spelling correction on directory names during word completion */ +int dircomplete_spelling = 0; + +/* Expand directory names during word/filename completion. */ +#if DIRCOMPLETE_EXPAND_DEFAULT +int dircomplete_expand = 1; +int dircomplete_expand_relpath = 1; +#else +int dircomplete_expand = 0; +int dircomplete_expand_relpath = 0; +#endif + +/* When non-zero, perform `normal' shell quoting on completed filenames + even when the completed name contains a directory name with a shell + variable reference, so dollar signs in a filename get quoted appropriately. + Set to zero to remove dollar sign (and braces or parens as needed) from + the set of characters that will be quoted. */ +int complete_fullquote = 1; + +static char *bash_completer_word_break_characters = " \t\n\"'@><=;|&(:"; +static char *bash_nohostname_word_break_characters = " \t\n\"'><=;|&(:"; +/* )) */ + +static const char *default_filename_quote_characters = " \t\n\\\"'@<>=;|&()#$`?*[!:{~"; /*}*/ +static char *custom_filename_quote_characters = 0; +static char filename_bstab[256]; + +static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL; + +static int dot_in_path = 0; + +/* Set to non-zero when dabbrev-expand is running */ +static int dabbrev_expand_active = 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 + +static rl_command_func_t *vi_tab_binding = rl_complete; + +/* 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; +{ + static char kseq[2] = { CTRL ('I'), 0 }; /* TAB */ + + if (on_or_off) + rl_variable_bind ("comment-begin", "#"); +#if defined (VI_MODE) + if (on_or_off) + { + vi_tab_binding = rl_function_of_keyseq (kseq, vi_insertion_keymap, (int *)NULL); + rl_bind_key_in_map (CTRL ('I'), rl_insert, vi_insertion_keymap); + } + else + { + if (rl_function_of_keyseq (kseq, vi_insertion_keymap, (int *)NULL) == rl_insert) + rl_bind_key_in_map (CTRL ('I'), vi_tab_binding, vi_insertion_keymap); + } +#endif +} + +void +reset_completer_word_break_chars () +{ + rl_completer_word_break_characters = perform_hostname_completion ? savestring (bash_completer_word_break_characters) : savestring (bash_nohostname_word_break_characters); +} + +/* 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 + + rl_add_defun ("shell-forward-word", bash_forward_shellword, -1); + rl_add_defun ("shell-backward-word", bash_backward_shellword, -1); + rl_add_defun ("shell-kill-word", bash_kill_shellword, -1); + rl_add_defun ("shell-backward-kill-word", bash_backward_kill_shellword, -1); + rl_add_defun ("shell-transpose-words", bash_transpose_shellwords, -1); + +#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 ("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); + rl_add_defun ("dabbrev-expand", bash_dabbrev_expand, -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 ('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) + kseq[0] = CTRL('E'); + func = rl_function_of_keyseq (kseq, vi_movement_keymap, (int *)NULL); + if (func == rl_emacs_editing_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. */ + set_directory_hook (); + + rl_filename_rewrite_hook = bash_filename_rewrite_hook; + + rl_filename_stat_hook = bash_filename_stat_hook; + + /* Tell the filename completer we want a chance to ignore some names. */ + rl_ignore_some_completions_function = filename_completion_ignore; + + /* 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 = default_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); + + rl_filename_quoting_function = bash_quote_filename; + rl_filename_dequoting_function = bash_dequote_filename; + rl_char_is_quoted_p = char_is_quoted; + + /* Add some default bindings for the "shellwords" functions, roughly + parallelling the default word bindings in emacs mode. */ + rl_bind_key_if_unbound_in_map (CTRL('B'), bash_backward_shellword, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map (CTRL('D'), bash_kill_shellword, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map (CTRL('F'), bash_forward_shellword, emacs_meta_keymap); + rl_bind_key_if_unbound_in_map (CTRL('T'), bash_transpose_shellwords, emacs_meta_keymap); + +#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; +} + +void +bashline_reinitialize () +{ + bash_readline_initialized = 0; +} + +void +bashline_set_event_hook () +{ + rl_signal_event_hook = bash_event_hook; +} + +void +bashline_reset_event_hook () +{ + rl_signal_event_hook = 0; +} + +/* On Sun systems at least, rl_attempted_completion_function can end up + getting set to NULL, and rl_completion_entry_function set to do command + word completion if Bash is interrupted while trying to complete a command + word. This just resets all the completion functions to the right thing. + It's called from throw_to_top_level(). */ +void +bashline_reset () +{ + tilde_initialize (); + rl_attempted_completion_function = attempt_shell_completion; + rl_completion_entry_function = NULL; + rl_ignore_some_completions_function = filename_completion_ignore; + rl_filename_quote_characters = default_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); + + set_directory_hook (); + rl_filename_stat_hook = bash_filename_stat_hook; + + bashline_reset_event_hook (); + + rl_sort_completion_matches = 1; +} + +/* 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 = hostname_list_initialized = 0; +} + +/* Return a NULL terminated list of hostnames which begin with TEXT. + Initialize the hostname list the first time if necessary. + 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); +} + +/* 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, *metaval; + int r, rrs, metaflag; + sh_parser_state_t ps; + + rrs = rl_readline_state; + saved_command_line_count = 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'). */ + /* This breaks down when using command-oriented history and are not + finished with the command, so we should not ignore the last command */ + using_history (); + current_command_line_count++; /* for rl_newline above */ + bash_add_history (rl_line_buffer); + current_command_line_count = 0; /* for dummy history entry */ + bash_add_history (""); + history_lines_this_session++; + using_history (); + command = savestring (edit_command); + } + + metaval = rl_variable_value ("input-meta"); + metaflag = RL_BOOLEAN_VARIABLE_VALUE (metaval); + + if (rl_deprep_term_function) + (*rl_deprep_term_function) (); + rl_clear_signals (); + save_parser_state (&ps); + r = parse_and_execute (command, (editing_mode == VI_EDITING_MODE) ? "v" : "C-xC-e", SEVAL_NOHIST); + restore_parser_state (&ps); + + /* if some kind of reset_parser was called, undo it. */ + reset_readahead_token (); + + if (rl_prep_term_function) + (*rl_prep_term_function) (metaflag); + rl_set_signals (); + + current_command_line_count = saved_command_line_count; + + /* 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; + +#if defined (VI_MODE) + if (editing_mode == VI_EDITING_MODE) + rl_vi_insertion_mode (1, c); +#endif + + 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 + +/* Bindable commands that move `shell-words': that is, sequences of + non-unquoted-metacharacters. */ + +#define WORDDELIM(c) (shellmeta(c) || shellblank(c)) + +static int +bash_forward_shellword (count, key) + int count, key; +{ + size_t slen; + int c, p; + DECLARE_MBSTATE; + + if (count < 0) + return (bash_backward_shellword (-count, key)); + + /* The tricky part of this is deciding whether or not the first character + we're on is an unquoted metacharacter. Not completely handled yet. */ + /* XXX - need to test this stuff with backslash-escaped shell + metacharacters and unclosed single- and double-quoted strings. */ + + p = rl_point; + slen = rl_end; + + while (count) + { + if (p == rl_end) + { + rl_point = rl_end; + return 0; + } + + /* Are we in a quoted string? If we are, move to the end of the quoted + string and continue the outer loop. We only want quoted strings, not + backslash-escaped characters, but char_is_quoted doesn't + differentiate. */ + if (char_is_quoted (rl_line_buffer, p) && p > 0 && rl_line_buffer[p-1] != '\\') + { + do + ADVANCE_CHAR (rl_line_buffer, slen, p); + while (p < rl_end && char_is_quoted (rl_line_buffer, p)); + count--; + continue; + } + + /* Rest of code assumes we are not in a quoted string. */ + /* Move forward until we hit a non-metacharacter. */ + while (p < rl_end && (c = rl_line_buffer[p]) && WORDDELIM (c)) + { + switch (c) + { + default: + ADVANCE_CHAR (rl_line_buffer, slen, p); + continue; /* straight back to loop, don't increment p */ + case '\\': + if (p < rl_end && rl_line_buffer[p]) + ADVANCE_CHAR (rl_line_buffer, slen, p); + break; + case '\'': + p = skip_to_delim (rl_line_buffer, ++p, "'", SD_NOJMP); + break; + case '"': + p = skip_to_delim (rl_line_buffer, ++p, "\"", SD_NOJMP); + break; + } + + if (p < rl_end) + p++; + } + + if (rl_line_buffer[p] == 0 || p == rl_end) + { + rl_point = rl_end; + rl_ding (); + return 0; + } + + /* Now move forward until we hit a non-quoted metacharacter or EOL */ + while (p < rl_end && (c = rl_line_buffer[p]) && WORDDELIM (c) == 0) + { + switch (c) + { + default: + ADVANCE_CHAR (rl_line_buffer, slen, p); + continue; /* straight back to loop, don't increment p */ + case '\\': + if (p < rl_end && rl_line_buffer[p]) + ADVANCE_CHAR (rl_line_buffer, slen, p); + break; + case '\'': + p = skip_to_delim (rl_line_buffer, ++p, "'", SD_NOJMP); + break; + case '"': + p = skip_to_delim (rl_line_buffer, ++p, "\"", SD_NOJMP); + break; + } + + if (p < rl_end) + p++; + } + + if (p == rl_end || rl_line_buffer[p] == 0) + { + rl_point = rl_end; + return (0); + } + + count--; + } + + rl_point = p; + return (0); +} + +static int +bash_backward_shellword (count, key) + int count, key; +{ + size_t slen; + int c, p, prev_p; + DECLARE_MBSTATE; + + if (count < 0) + return (bash_forward_shellword (-count, key)); + + p = rl_point; + slen = rl_end; + + while (count) + { + if (p == 0) + { + rl_point = 0; + return 0; + } + + /* Move backward until we hit a non-metacharacter. We want to deal + with the characters before point, so we move off a word if we're + at its first character. */ + BACKUP_CHAR (rl_line_buffer, slen, p); + while (p > 0) + { + c = rl_line_buffer[p]; + if (WORDDELIM (c) == 0 || char_is_quoted (rl_line_buffer, p)) + break; + BACKUP_CHAR (rl_line_buffer, slen, p); + } + + if (p == 0) + { + rl_point = 0; + return 0; + } + + /* Now move backward until we hit a metacharacter or BOL. Leave point + at the start of the shellword or at BOL. */ + prev_p = p; + while (p > 0) + { + c = rl_line_buffer[p]; + if (WORDDELIM (c) && char_is_quoted (rl_line_buffer, p) == 0) + { + p = prev_p; + break; + } + prev_p = p; + BACKUP_CHAR (rl_line_buffer, slen, p); + } + + count--; + } + + rl_point = p; + return 0; +} + +static int +bash_kill_shellword (count, key) + int count, key; +{ + int p; + + if (count < 0) + return (bash_backward_kill_shellword (-count, key)); + + p = rl_point; + bash_forward_shellword (count, key); + + if (rl_point != p) + rl_kill_text (p, rl_point); + + rl_point = p; + if (rl_editing_mode == EMACS_EDITING_MODE) /* 1 == emacs_mode */ + rl_mark = rl_point; + + return 0; +} + +static int +bash_backward_kill_shellword (count, key) + int count, key; +{ + int p; + + if (count < 0) + return (bash_kill_shellword (-count, key)); + + p = rl_point; + bash_backward_shellword (count, key); + + if (rl_point != p) + rl_kill_text (p, rl_point); + + if (rl_editing_mode == EMACS_EDITING_MODE) /* 1 == emacs_mode */ + rl_mark = rl_point; + + return 0; +} + +static int +bash_transpose_shellwords (count, key) + int count, key; +{ + char *word1, *word2; + int w1_beg, w1_end, w2_beg, w2_end; + int orig_point = rl_point; + + if (count == 0) + return 0; + + /* Find the two shell words. */ + bash_forward_shellword (count, key); + w2_end = rl_point; + bash_backward_shellword (1, key); + w2_beg = rl_point; + bash_backward_shellword (count, key); + w1_beg = rl_point; + bash_forward_shellword (1, key); + w1_end = rl_point; + + /* check that there really are two words. */ + if ((w1_beg == w2_beg) || (w2_beg < w1_end)) + { + rl_ding (); + rl_point = orig_point; + return 1; + } + + /* Get the text of the words. */ + word1 = rl_copy_text (w1_beg, w1_end); + word2 = rl_copy_text (w2_beg, w2_end); + + /* We are about to do many insertions and deletions. Remember them + as one operation. */ + rl_begin_undo_group (); + + /* Do the stuff at word2 first, so that we don't have to worry + about word1 moving. */ + rl_point = w2_beg; + rl_delete_text (w2_beg, w2_end); + rl_insert_text (word1); + + rl_point = w1_beg; + rl_delete_text (w1_beg, w1_end); + rl_insert_text (word2); + + /* This is exactly correct since the text before this point has not + changed in length. */ + rl_point = w2_end; + + /* I think that does it. */ + rl_end_undo_group (); + xfree (word1); + xfree (word2); + + return 0; +} + +/* **************************************************************** */ +/* */ +/* How To Do Shell Completion */ +/* */ +/* **************************************************************** */ + +#define COMMAND_SEPARATORS ";|&{(`" +/* )} */ +#define COMMAND_SEPARATORS_PLUS_WS ";|&{(` \t" +/* )} */ + +/* check for redirections and other character combinations that are not + command separators */ +static int +check_redir (ti) + int ti; +{ + 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 = (ti > 0) ? rl_line_buffer[ti - 1] : 0; + + if ((this_char == '&' && (prev_char == '<' || prev_char == '>')) || + (this_char == '|' && prev_char == '>')) + return (1); + else if (this_char == '{' && prev_char == '$') /*}*/ + return (1); +#if 0 /* Not yet */ + else if (this_char == '(' && prev_char == '$') /*)*/ + return (1); + else if (this_char == '(' && prev_char == '<') /*)*/ + return (1); +#if defined (EXTENDED_GLOB) + else if (extended_glob && this_char == '(' && prev_char == '!') /*)*/ + return (1); +#endif +#endif + else if (char_is_quoted (rl_line_buffer, ti)) + return (1); + return (0); +} + +#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, ns; + + os = 0; + /* Flags == SD_NOJMP only because we want to skip over command substitutions + in assignment statements. Have to test whether this affects `standalone' + command substitutions as individual words. */ + while (((s = skip_to_delim (rl_line_buffer, os, COMMAND_SEPARATORS, SD_NOJMP|SD_COMPLETE/*|SD_NOSKIPCMD*/)) <= start) && + rl_line_buffer[s]) + { + /* Handle >| token crudely; treat as > not | */ + if (s > 0 && rl_line_buffer[s] == '|' && rl_line_buffer[s-1] == '>') + { + ns = skip_to_delim (rl_line_buffer, s+1, COMMAND_SEPARATORS, SD_NOJMP|SD_COMPLETE/*|SD_NOSKIPCMD*/); + if (ns > start || rl_line_buffer[ns] == 0) + return os; + os = ns+1; + continue; + } + /* The only reserved word in COMMAND_SEPARATORS is `{', so handle that + specially, making sure it's in a spot acceptable for reserved words */ + if (s >= os && rl_line_buffer[s] == '{') + { + int pc, nc; /* index of previous non-whitespace, next char */ + for (pc = (s > os) ? s - 1 : os; pc > os && whitespace(rl_line_buffer[pc]); pc--) + ; + nc = rl_line_buffer[s+1]; + /* must be preceded by a command separator or be the first non- + whitespace character since the last command separator, and + followed by a shell break character (not another `{') to be a reserved word. */ + if ((pc > os && (rl_line_buffer[s-1] == '{' || strchr (COMMAND_SEPARATORS, rl_line_buffer[pc]) == 0)) || + (shellbreak(nc) == 0)) /* }} */ + { + /* Not a reserved word, look for another delim */ + ns = skip_to_delim (rl_line_buffer, s+1, COMMAND_SEPARATORS, SD_NOJMP|SD_COMPLETE/*|SD_NOSKIPCMD*/); + if (ns > start || rl_line_buffer[ns] == 0) + return os; + os = ns+1; + continue; + } + } + 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, SD_NOJMP|SD_COMPLETE); + return e; +} + +static char * +find_cmd_name (start, sp, ep) + int start; + int *sp, *ep; +{ + 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", SD_NOJMP|SD_COMPLETE); + + name = substring (rl_line_buffer, s, e); + + if (sp) + *sp = s; + if (ep) + *ep = 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 */ + +/* Try and catch completion attempts that are syntax errors or otherwise + invalid. */ +static int +invalid_completion (text, ind) + const char *text; + int ind; +{ + int pind; + + /* If we don't catch these here, the next clause will */ + if (ind > 0 && rl_line_buffer[ind] == '(' && /*)*/ + member (rl_line_buffer[ind-1], "$<>")) + return 0; + + pind = ind - 1; + while (pind > 0 && whitespace (rl_line_buffer[pind])) + pind--; + /* If we have only whitespace preceding a paren, it's valid */ + if (ind >= 0 && pind <= 0 && rl_line_buffer[ind] == '(') /*)*/ + return 0; + /* Flag the invalid completions, which are mostly syntax errors */ + if (ind > 0 && rl_line_buffer[ind] == '(' && /*)*/ + member (rl_line_buffer[pind], COMMAND_SEPARATORS) == 0) + return 1; + + return 0; +} + +/* 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, qc, dflags; + char **matches, *command_separator_chars; +#if defined (PROGRAMMABLE_COMPLETION) + int have_progcomps, was_assignment; + COMPSPEC *iw_compspec; +#endif + + command_separator_chars = COMMAND_SEPARATORS; + matches = (char **)NULL; + rl_ignore_some_completions_function = filename_completion_ignore; + + rl_filename_quote_characters = default_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); + set_directory_hook (); + rl_filename_stat_hook = bash_filename_stat_hook; + + rl_sort_completion_matches = 1; /* sort by default */ + + /* 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; + 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]; + 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 (parser_in_command_position ()) + 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. */ + } + + if (in_command_position && invalid_completion (text, ti)) + { + rl_attempted_completion_over = 1; + return ((char **)NULL); + } + + /* 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. Don't bother if readline found a single quote and we are + completing on the substring. */ + if (*text == '`' && rl_completion_quote_character != '\'' && + (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. */ + have_progcomps = prog_completion_enabled && (progcomp_size () > 0); + iw_compspec = progcomp_search (INITIALWORD); + if (matches == 0 && + (in_command_position == 0 || text[0] == '\0' || (in_command_position && iw_compspec)) && + current_prompt_string == ps1_prompt) + { + int s, e, s1, e1, os, foundcs; + char *n; + + /* XXX - don't free the members */ + if (prog_complete_matches) + free (prog_complete_matches); + prog_complete_matches = (char **)NULL; + + os = start; + n = 0; + was_assignment = 0; + s = find_cmd_start (os); + e = find_cmd_end (end); + do + { + /* Don't read past the end of rl_line_buffer */ + if (s > rl_end) + { + s1 = s = e1; + break; + } + /* Or past point if point is within an assignment statement */ + else if (was_assignment && s > rl_point) + { + s1 = s = e1; + break; + } + /* Skip over assignment statements preceding a command name. If we + don't find a command name at all, we can perform command name + completion. If we find a partial command name, we should perform + command name completion on it. */ + FREE (n); + n = find_cmd_name (s, &s1, &e1); + s = e1 + 1; + } + while (was_assignment = assignment (n, 0)); + s = s1; /* reset to index where name begins */ + + /* s == index of where command name begins (reset above) + e == end of current command, may be end of line + s1 = index of where command name begins + e1 == index of where command name ends + start == index of where word to be completed begins + end == index of where word to be completed ends + if (s == start) we are doing command word completion for sure + if (e1 == end) we are at the end of the command name and completing it */ + if (start == 0 && end == 0 && e != 0 && text[0] == '\0') /* beginning of non-empty line */ + foundcs = 0; + else if (start == end && start == s1 && e != 0 && e1 > end) /* beginning of command name, leading whitespace */ + foundcs = 0; + else if (e == 0 && e == s && text[0] == '\0' && have_progcomps) /* beginning of empty line */ + prog_complete_matches = programmable_completions (EMPTYCMD, text, s, e, &foundcs); + else if (start == end && text[0] == '\0' && s1 > start && whitespace (rl_line_buffer[start])) + foundcs = 0; /* whitespace before command name */ + else if (e > s && was_assignment == 0 && e1 == end && rl_line_buffer[e] == 0 && whitespace (rl_line_buffer[e-1]) == 0) + { + /* not assignment statement, but still want to perform command + completion if we are composing command word. */ + foundcs = 0; + in_command_position = s == start && STREQ (n, text); /* XXX */ + } + else if (e > s && was_assignment == 0 && have_progcomps) + { + prog_complete_matches = programmable_completions (n, text, s, e, &foundcs); + /* command completion if programmable completion fails */ + /* If we have a completion for the initial word, we can prefer that */ + in_command_position = s == start && (iw_compspec || STREQ (n, text)); /* XXX */ + if (iw_compspec && in_command_position) + foundcs = 0; + } + /* empty command name following command separator */ + else if (s >= e && n[0] == '\0' && text[0] == '\0' && start > 0 && + was_assignment == 0 && member (rl_line_buffer[start-1], COMMAND_SEPARATORS)) + { + foundcs = 0; + in_command_position = 1; + } + else if (s >= e && n[0] == '\0' && text[0] == '\0' && start > 0) + { + foundcs = 0; /* empty command name following optional assignments */ + in_command_position += was_assignment; + } + else if (s == start && e == end && STREQ (n, text) && start > 0) + { + foundcs = 0; /* partial command name following assignments */ + in_command_position = 1; + } + else + foundcs = 0; + + /* If we have defined a compspec for the initial (command) word, call + it and process the results like any other programmable completion. */ + if (in_command_position && have_progcomps && foundcs == 0 && iw_compspec) + prog_complete_matches = programmable_completions (INITIALWORD, text, s, e, &foundcs); + + 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 or + compopt. */ + if (foundcs) + { + pcomp_set_readline_variables (foundcs, 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, *t; + + matches = (char **)NULL; + + /* New posix-style command substitution or variable name? */ + if (*text == '$') + { + if (qc != '\'' && text[1] == '(') /* ) */ + matches = rl_completion_matches (text, command_subst_completion_function); + else + { + matches = rl_completion_matches (text, variable_completion_function); + /* If a single match, see if it expands to a directory name and append + a slash if it does. This requires us to expand the variable name, + so we don't want to display errors if the variable is unset. This + can happen with dynamic variables whose value has never been + requested. */ + if (matches && matches[0] && matches[1] == 0) + { + t = savestring (matches[0]); + bash_filename_stat_hook (&t); + /* doesn't use test_for_directory because that performs tilde + expansion */ + if (file_isdir (t)) + rl_completion_append_character = '/'; + free (t); + } + } + } + + /* If the word starts in `~', and there is no slash in the word, then + try completing this word as a username. */ + if (matches == 0 && *text == '~' && mbschr (text, '/') == 0) + 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 == 0 && 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 && completion_glob_pattern ((char *)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; + } + else if (matches && matches[1] && rl_completion_type == '!') + { + rl_completion_suppress_append = 1; + rl_filename_completion_desired = 0; + } + } + + return (matches); +} + +static int +bash_command_name_stat_hook (name) + char **name; +{ + char *cname, *result; + + /* If it's not something we're going to look up in $PATH, just call the + normal filename stat hook. */ + if (absolute_program (*name)) + return (bash_filename_stat_hook (name)); + + cname = *name; + /* XXX - we could do something here with converting aliases, builtins, + and functions into something that came out as executable, but we don't. */ + result = search_for_command (cname, 0); + if (result) + { + *name = result; + return 1; + } + return 0; +} + +static int +executable_completion (filename, searching_path) + const char *filename; + int searching_path; +{ + char *f; + int r; + + f = savestring (filename); + bash_directory_completion_hook (&f); + + r = searching_path ? executable_file (f) : executable_or_directory (f); + free (f); + return r; +} + +/* This is the function to call when the word to complete is in a position + where a command word can be found. It grovels $PATH, looking for commands + that match. It also scans aliases, function names, and the shell_builtin + 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 *fnhint = (char *)NULL; + static char *dequoted_hint = (char *)NULL; + static char *directory_part = (char *)NULL; + static char **glob_matches = (char **)NULL; + static int path_index, hint_len, istate, igncase; + static int mapping_over, local_index, searching_path, hint_is_dir; + static int old_glob_ignore_case, globpat; + static SHELL_VAR **varlist = (SHELL_VAR **)NULL; +#if defined (ALIAS) + static alias_t **alias_list = (alias_t **)NULL; +#endif /* ALIAS */ + char *temp, *cval; + + /* We have to map over the possibilities for command words. If we have + no state, then make one just for that purpose. */ + if (state == 0) + { + rl_filename_stat_hook = bash_command_name_stat_hook; + + if (dequoted_hint && dequoted_hint != hint) + free (dequoted_hint); + if (hint) + free (hint); + + mapping_over = searching_path = 0; + hint_is_dir = CMD_IS_DIR (hint_text); + val = (char *)NULL; + + temp = rl_variable_value ("completion-ignore-case"); + igncase = RL_BOOLEAN_VARIABLE_VALUE (temp); + + if (glob_matches) + { + free (glob_matches); + glob_matches = (char **)NULL; + } + + globpat = completion_glob_pattern ((char *)hint_text); + + /* 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 (globpat || absolute_program (hint_text)) + { + /* Perform tilde expansion on what's passed, so we don't end up + passing filenames with tildes directly to stat(). The rest of + the shell doesn't do variable expansion on the word following + the tilde, so we don't do it here even if direxpand is set. */ + if (*hint_text == '~') + { + hint = bash_tilde_expand (hint_text, 0); + directory_part = savestring (hint_text); + temp = strchr (directory_part, '/'); + if (temp) + *temp = 0; + else + { + free (directory_part); + directory_part = (char *)NULL; + } + } + else if (dircomplete_expand) + { + hint = savestring (hint_text); + bash_directory_completion_hook (&hint); + } + 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; + } + hint_len = strlen (hint); + + if (filename_hint) + free (filename_hint); + + fnhint = filename_hint = savestring (hint); + + istate = 0; + + if (globpat) + { + mapping_over = 5; + goto globword; + } + else + { + if (dircomplete_expand && path_dot_or_dotdot (filename_hint)) + { + dircomplete_expand = 0; + set_directory_hook (); + dircomplete_expand = 1; + } + mapping_over = 4; + goto inner; + } + } + + dequoted_hint = hint = savestring (hint_text); + hint_len = strlen (hint); + + if (rl_completion_found_quote && rl_completion_quote_character == 0) + dequoted_hint = bash_dequote_filename (hint, 0); + + 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 (igncase == 0 && (STREQN (alias, hint, hint_len))) + return (savestring (alias)); + else if (igncase && strncasecmp (alias, hint, hint_len) == 0) + 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; + + /* Honor completion-ignore-case for shell function names. */ + if (igncase == 0 && (STREQN (varname, hint, hint_len))) + return (savestring (varname)); + else if (igncase && strncasecmp (varname, hint, hint_len) == 0) + 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++; + } + +globword: + /* Limited support for completing command words with globbing chars. Only + a single match (multiple matches that end up reducing the number of + characters in the common prefix are bad) will ever be returned on + regular completion. */ + if (globpat) + { + if (state == 0) + { + glob_ignore_case = igncase; + glob_matches = shell_glob_filename (hint, 0); + glob_ignore_case = old_glob_ignore_case; + + if (GLOB_FAILED (glob_matches) || glob_matches == 0) + { + glob_matches = (char **)NULL; + return ((char *)NULL); + } + + local_index = 0; + + if (glob_matches[1] && rl_completion_type == TAB) /* multiple matches are bad */ + return ((char *)NULL); + } + + while (val = glob_matches[local_index++]) + { + if (executable_or_directory (val)) + { + if (*hint_text == '~' && directory_part) + { + temp = maybe_restore_tilde (val, directory_part); + free (val); + val = temp; + } + return (val); + } + free (val); + } + + glob_ignore_case = old_glob_ignore_case; + return ((char *)NULL); + } + + /* If the text passed is a directory in the current directory, return it + as a possible match. Executables in directories in the current + directory can be specified using relative pathnames and successfully + executed even when `.' is not in $PATH. */ + if (hint_is_dir) + { + hint_is_dir = 0; /* only return the hint text once */ + return (savestring (hint_text)); + } + + /* Repeatedly call filename_completion_function while we have + members of PATH left. Question: should we stat each file? + Answer: we call executable_file () on each file. */ + outer: + + istate = (val != (char *)NULL); + + if (istate == 0) + { + char *current_path; + + /* Get the next directory from the path. If there is none, then we + are all done. */ + if (path == 0 || path[path_index] == 0 || + (current_path = extract_colon_unit (path, &path_index)) == 0) + return ((char *)NULL); + + searching_path = 1; + 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 (fnhint && fnhint != filename_hint) + free (fnhint); + if (filename_hint) + free (filename_hint); + + filename_hint = sh_makepath (current_path, hint, 0); + /* Need a quoted version (though it doesn't matter much in most + cases) because rl_filename_completion_function dequotes the + filename it gets, assuming that it's been quoted as part of + the input line buffer. */ + if (strpbrk (filename_hint, "\"'\\")) + fnhint = sh_backslash_quote (filename_hint, filename_bstab, 0); + else + fnhint = filename_hint; + free (current_path); /* XXX */ + } + + inner: + val = rl_filename_completion_function (fnhint, istate); + if (mapping_over == 4 && dircomplete_expand) + set_directory_hook (); + + 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; + + 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 == '~') + temp = maybe_restore_tilde (val, directory_part); + 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, return it. + We don't return directory names when searching $PATH, since the + bash execution code won't find executables in directories which + appear in directories in $PATH when they're specified using + relative pathnames. */ +#if 0 + /* If we're not searching $PATH and we have a relative pathname, we + need to re-canonicalize it before testing whether or not it's an + executable or a directory so the shell treats .. relative to $PWD + according to the physical/logical option. The shell already + canonicalizes the directory name in order to tell readline where + to look, so not doing it here will be inconsistent. */ + /* XXX -- currently not used -- will introduce more inconsistency, + since shell does not canonicalize ../foo before passing it to + shell_execve(). */ + if (match && searching_path == 0 && *val == '.') + { + char *t, *t1; + + t = get_working_directory ("command-word-completion"); + t1 = make_absolute (val, t); + free (t); + cval = sh_canonpath (t1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + } + else +#endif + cval = val; + + if (match && executable_completion ((searching_path ? val : cval), searching_path)) + { + if (cval != val) + free (cval); + free (val); + val = ""; /* So it won't be NULL. */ + return (temp); + } + else + { + if (freetemp) + free (temp); + if (cval != val) + free (cval); + 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 == 0 || matches[cmd_index] == 0) + { + 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 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); + + 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; + char *value; + char **alist, *aentry; + int afound; + + if (state == 0) + { + FREE (sname); + + 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; *alist; alist++) + { + aentry = *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 (new_line && 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; + WORD_DESC *w; + + 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. */ + +#if 1 + w = alloc_word_desc (); + w->word = savestring (rl_line_buffer); + w->flags = rl_explicit_arg ? (W_NOPROCSUB|W_NOCOMSUB) : 0; + expanded_string = expand_word (w, rl_explicit_arg ? Q_HERE_DOCUMENT : 0); + dispose_word (w); +#else + new_line = savestring (rl_line_buffer); + expanded_string = expand_string (new_line, 0); + FREE (new_line); +#endif + + 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. NAME undergoes tilde expansion. */ +static int +test_for_directory (name) + const char *name; +{ + char *fn; + int r; + + fn = bash_tilde_expand (name, 0); + r = file_isdir (fn); + free (fn); + + return (r); +} + +static int +test_for_canon_directory (name) + const char *name; +{ + char *fn; + int r; + + fn = (*name == '~') ? bash_tilde_expand (name, 0) : savestring (name); + bash_filename_stat_hook (&fn); + r = file_isdir (fn); + free (fn); + + return (r); +} + +/* 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 +bash_progcomp_ignore_filenames (names) + char **names; +{ + _ignore_completion_names (names, test_for_canon_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; +} + +/* Replace a tilde-prefix in VAL with a `~', assuming the user typed it. VAL + is an expanded filename. DIRECTORY_PART is the tilde-prefix portion + of the un-tilde-expanded version of VAL (what the user typed). */ +static char * +restore_tilde (val, directory_part) + char *val, *directory_part; +{ + int l, vl, dl2, xl; + char *dh2, *expdir, *ret, *v; + + vl = strlen (val); + + /* We need to duplicate the expansions readline performs on the directory + portion before passing it to our completion function. */ + dh2 = directory_part ? bash_dequote_filename (directory_part, 0) : 0; + bash_directory_expansion (&dh2); + dl2 = strlen (dh2); + + expdir = bash_tilde_expand (directory_part, 0); + xl = strlen (expdir); + if (*directory_part == '~' && STREQ (directory_part, expdir)) + { + /* tilde expansion failed, so what should we return? we use what the + user typed. */ + v = mbschr (val, '/'); + vl = STRLEN (v); + ret = (char *)xmalloc (xl + vl + 2); + strcpy (ret, directory_part); + if (v && *v) + strcpy (ret + xl, v); + + free (dh2); + free (expdir); + + return ret; + } + free (expdir); + + /* + dh2 = unexpanded but dequoted tilde-prefix + dl2 = length of tilde-prefix + expdir = tilde-expanded tilde-prefix + xl = length of expanded tilde-prefix + l = length of remainder after tilde-prefix + */ + l = (vl - xl) + 1; + if (l <= 0) + { + free (dh2); + return (savestring (val)); /* XXX - just punt */ + } + + ret = (char *)xmalloc (dl2 + 2 + l); + strcpy (ret, dh2); + strcpy (ret + dl2, val + xl); + + free (dh2); + return (ret); +} + +static char * +maybe_restore_tilde (val, directory_part) + char *val, *directory_part; +{ + rl_icppfunc_t *save; + char *ret; + + save = (dircomplete_expand == 0) ? save_directory_hook () : (rl_icppfunc_t *)0; + ret = restore_tilde (val, directory_part); + if (save) + restore_directory_hook (save); + return ret; +} + +/* Simulate the expansions that will be performed by + rl_filename_completion_function. This must be called with the address of + a pointer to malloc'd memory. */ +static void +bash_directory_expansion (dirname) + char **dirname; +{ + char *d, *nd; + + d = savestring (*dirname); + + if ((rl_directory_rewrite_hook) && (*rl_directory_rewrite_hook) (&d)) + { + free (*dirname); + *dirname = d; + } + else if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&d)) + { + free (*dirname); + *dirname = d; + } + else if (rl_completion_found_quote) + { + nd = bash_dequote_filename (d, rl_completion_quote_character); + free (*dirname); + free (d); + *dirname = nd; + } +} + +/* If necessary, rewrite directory entry */ +static char * +bash_filename_rewrite_hook (fname, fnlen) + char *fname; + int fnlen; +{ + char *conv; + + conv = fnx_fromfs (fname, fnlen); + if (conv != fname) + conv = savestring (conv); + return conv; +} + +/* Functions to save and restore the appropriate directory hook */ +/* This is not static so the shopt code can call it */ +void +set_directory_hook () +{ + if (dircomplete_expand) + { + rl_directory_completion_hook = bash_directory_completion_hook; + rl_directory_rewrite_hook = (rl_icppfunc_t *)0; + } + else + { + rl_directory_rewrite_hook = bash_directory_completion_hook; + rl_directory_completion_hook = (rl_icppfunc_t *)0; + } +} + +static rl_icppfunc_t * +save_directory_hook () +{ + rl_icppfunc_t *ret; + + if (dircomplete_expand) + { + ret = rl_directory_completion_hook; + rl_directory_completion_hook = (rl_icppfunc_t *)NULL; + } + else + { + ret = rl_directory_rewrite_hook; + rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL; + } + + return ret; +} + +static void +restore_directory_hook (hookf) + rl_icppfunc_t *hookf; +{ + if (dircomplete_expand) + rl_directory_completion_hook = hookf; + else + rl_directory_rewrite_hook = hookf; +} + +/* Check whether not DIRNAME, with any trailing slash removed, exists. If + SHOULD_DEQUOTE is non-zero, we dequote the directory name first. */ +static int +directory_exists (dirname, should_dequote) + const char *dirname; + int should_dequote; +{ + char *new_dirname; + int dirlen, r; + struct stat sb; + + /* We save the string and chop the trailing slash because stat/lstat behave + inconsistently if one is present. */ + new_dirname = should_dequote ? bash_dequote_filename ((char *)dirname, rl_completion_quote_character) : savestring (dirname); + dirlen = STRLEN (new_dirname); + if (new_dirname[dirlen - 1] == '/') + new_dirname[dirlen - 1] = '\0'; +#if defined (HAVE_LSTAT) + r = lstat (new_dirname, &sb) == 0; +#else + r = stat (new_dirname, &sb) == 0; +#endif + free (new_dirname); + return (r); +} + +/* Expand a filename before the readline completion code passes it to stat(2). + The filename will already have had tilde expansion performed. */ +static int +bash_filename_stat_hook (dirname) + char **dirname; +{ + char *local_dirname, *new_dirname, *t; + int should_expand_dirname, return_value; + int global_nounset; + WORD_LIST *wl; + + local_dirname = *dirname; + should_expand_dirname = return_value = 0; + if (t = mbschr (local_dirname, '$')) + should_expand_dirname = '$'; + else if (t = mbschr (local_dirname, '`')) /* XXX */ + should_expand_dirname = '`'; + + if (should_expand_dirname && directory_exists (local_dirname, 0)) + should_expand_dirname = 0; + + if (should_expand_dirname) + { + new_dirname = savestring (local_dirname); + /* no error messages, and expand_prompt_string doesn't longjmp so we don't + have to worry about restoring this setting. */ + global_nounset = unbound_vars_is_error; + unbound_vars_is_error = 0; + wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE); /* does the right thing */ + unbound_vars_is_error = global_nounset; + if (wl) + { + free (new_dirname); + new_dirname = string_list (wl); + /* Tell the completer we actually expanded something and change + *dirname only if we expanded to something non-null -- stat + behaves unpredictably when passed null or empty strings */ + if (new_dirname && *new_dirname) + { + free (local_dirname); /* XXX */ + local_dirname = *dirname = new_dirname; + return_value = STREQ (local_dirname, *dirname) == 0; + } + else + free (new_dirname); + dispose_words (wl); + } + else + free (new_dirname); + } + + /* This is very similar to the code in bash_directory_completion_hook below, + but without spelling correction and not worrying about whether or not + we change relative pathnames. */ + if (no_symbolic_links == 0 && (local_dirname[0] != '.' || local_dirname[1])) + { + char *temp1, *temp2; + + t = get_working_directory ("symlink-hook"); + temp1 = make_absolute (local_dirname, t); + free (t); + temp2 = sh_canonpath (temp1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + + /* If we can't canonicalize, bail. */ + if (temp2 == 0) + { + free (temp1); + return return_value; + } + + free (local_dirname); + *dirname = temp2; + free (temp1); + } + + return (return_value); +} + +/* Handle symbolic link references and other directory name + expansions while hacking completion. This should return 1 if it modifies + the DIRNAME argument, 0 otherwise. It should make sure not to modify + DIRNAME if it returns 0. */ +static int +bash_directory_completion_hook (dirname) + char **dirname; +{ + char *local_dirname, *new_dirname, *t; + int return_value, should_expand_dirname, nextch, closer; + WORD_LIST *wl; + + return_value = should_expand_dirname = nextch = closer = 0; + local_dirname = *dirname; + + if (t = mbschr (local_dirname, '$')) + { + should_expand_dirname = '$'; + nextch = t[1]; + /* Deliberately does not handle the deprecated $[...] arithmetic + expansion syntax */ + if (nextch == '(') + closer = ')'; + else if (nextch == '{') + closer = '}'; + else + nextch = 0; + + if (closer) + { + int p; + char delims[2]; + + delims[0] = closer; delims[1] = 0; + p = skip_to_delim (t, 1, delims, SD_NOJMP|SD_COMPLETE); + if (t[p] != closer) + should_expand_dirname = 0; + } + } + else if (local_dirname[0] == '~') + should_expand_dirname = '~'; + else + { + t = mbschr (local_dirname, '`'); + if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0) + should_expand_dirname = '`'; + } + + if (should_expand_dirname && directory_exists (local_dirname, 1)) + should_expand_dirname = 0; + + if (should_expand_dirname) + { + new_dirname = savestring (local_dirname); + wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE); /* 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; + /* XXX - change rl_filename_quote_characters here based on + should_expand_dirname/nextch/closer. This is the only place + custom_filename_quote_characters is modified. */ + if (rl_filename_quote_characters && *rl_filename_quote_characters) + { + int i, j, c; + i = strlen (default_filename_quote_characters); + custom_filename_quote_characters = xrealloc (custom_filename_quote_characters, i+1); + for (i = j = 0; c = default_filename_quote_characters[i]; i++) + { + if (c == should_expand_dirname || c == nextch || c == closer) + continue; + custom_filename_quote_characters[j++] = c; + } + custom_filename_quote_characters[j] = '\0'; + rl_filename_quote_characters = custom_filename_quote_characters; + set_filename_bstab (rl_filename_quote_characters); + } + } + 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); + return_value = STREQ (local_dirname, new_dirname) == 0; + free (local_dirname); + local_dirname = *dirname = new_dirname; + } + + /* no_symbolic_links == 0 -> use (default) logical view of the file system. + local_dirname[0] == '.' && local_dirname[1] == '/' means files in the + current directory (./). + local_dirname[0] == '.' && local_dirname[1] == 0 means relative pathnames + in the current directory (e.g., lib/sh). + XXX - should we do spelling correction on these? */ + + /* This is test as it was in bash-4.2: skip relative pathnames in current + directory. Change test to + (local_dirname[0] != '.' || (local_dirname[1] && local_dirname[1] != '/')) + if we want to skip paths beginning with ./ also. */ + if (no_symbolic_links == 0 && (local_dirname[0] != '.' || local_dirname[1])) + { + char *temp1, *temp2; + int len1, len2; + + /* If we have a relative path + (local_dirname[0] != '/' && local_dirname[0] != '.') + that is canonical after appending it to the current directory, then + temp1 = temp2+'/' + That is, + strcmp (temp1, temp2) == 0 + after adding a slash to temp2 below. It should be safe to not + change those. + */ + t = get_working_directory ("symlink-hook"); + temp1 = make_absolute (local_dirname, t); + free (t); + temp2 = sh_canonpath (temp1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + + /* Try spelling correction if initial canonicalization fails. Make + sure we are set to replace the directory name with the results so + subsequent directory checks don't fail. */ + if (temp2 == 0 && dircomplete_spelling && dircomplete_expand) + { + temp2 = dirspell (temp1); + if (temp2) + { + free (temp1); + temp1 = temp2; + temp2 = sh_canonpath (temp1, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + return_value |= temp2 != 0; + } + } + /* If we can't canonicalize, bail. */ + if (temp2 == 0) + { + free (temp1); + return return_value; + } + 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'; + } + } + + /* dircomplete_expand_relpath == 0 means we want to leave relative + pathnames that are unchanged by canonicalization alone. + *local_dirname != '/' && *local_dirname != '.' == relative pathname + (consistent with general.c:absolute_pathname()) + temp1 == temp2 (after appending a slash to temp2) means the pathname + is not changed by canonicalization as described above. */ + if (dircomplete_expand_relpath || ((local_dirname[0] != '/' && local_dirname[0] != '.') && STREQ (temp1, temp2) == 0)) + return_value |= STREQ (local_dirname, temp2) == 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++) + ; + for ( --i; i >= 0; 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. */ + if (dabbrev_expand_active == 0) + 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) + { + if (dabbrev_expand_active) /* This is kind of messy */ + rl_completion_suppress_append = 1; + local_index = 0; + build_history_completion_array (); + text = hint_text; + len = strlen (text); + } + + while (history_completion_array && history_completion_array[local_index]) + { + /* XXX - should this use completion-ignore-case? */ + 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; + rl_compignore_func_t *orig_ignore_func; + + orig_func = rl_completion_entry_function; + orig_attempt_func = rl_attempted_completion_function; + orig_ignore_func = rl_ignore_some_completions_function; + + rl_completion_entry_function = history_completion_generator; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; + rl_ignore_some_completions_function = filename_completion_ignore; + + /* 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; + rl_ignore_some_completions_function = orig_ignore_func; + + return r; +} + +static int +bash_dabbrev_expand (count, key) + int count, key; +{ + int r, orig_suppress, orig_sort; + rl_compentry_func_t *orig_func; + rl_completion_func_t *orig_attempt_func; + rl_compignore_func_t *orig_ignore_func; + + orig_func = rl_menu_completion_entry_function; + orig_attempt_func = rl_attempted_completion_function; + orig_ignore_func = rl_ignore_some_completions_function; + orig_suppress = rl_completion_suppress_append; + orig_sort = rl_sort_completion_matches; + + rl_menu_completion_entry_function = history_completion_generator; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; + rl_ignore_some_completions_function = filename_completion_ignore; + rl_filename_completion_desired = 0; + rl_completion_suppress_append = 1; + rl_sort_completion_matches = 0; + + /* XXX - use rl_completion_mode here? */ + dabbrev_expand_active = 1; + if (rl_last_func == bash_dabbrev_expand) + rl_last_func = rl_menu_complete; + r = rl_menu_complete (count, key); + dabbrev_expand_active = 0; + + rl_last_func = bash_dabbrev_expand; + rl_menu_completion_entry_function = orig_func; + rl_attempted_completion_function = orig_attempt_func; + rl_ignore_some_completions_function = orig_ignore_func; + rl_completion_suppress_append = orig_suppress; + rl_sort_completion_matches = orig_sort; + + 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; + rl_compignore_func_t *orig_ignore_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_ignore_func = rl_ignore_some_completions_function; + orig_rl_completer_word_break_characters = rl_completer_word_break_characters; + + orig_dir_func = save_directory_hook (); + + rl_completion_entry_function = rl_filename_completion_function; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; + rl_ignore_some_completions_function = filename_completion_ignore; + 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_ignore_some_completions_function = orig_ignore_func; + rl_completer_word_break_characters = orig_rl_completer_word_break_characters; + + restore_directory_hook (orig_dir_func); + + 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 int +completion_glob_pattern (string) + char *string; +{ + return (glob_pattern_p (string) == 1); +} + +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, 0); + 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; + rl_compignore_func_t *orig_ignore_func; + int r; + + orig_func = rl_completion_entry_function; + orig_attempt_func = rl_attempted_completion_function; + orig_ignore_func = rl_ignore_some_completions_function; + rl_completion_entry_function = generator; + rl_attempted_completion_function = NULL; + rl_ignore_some_completions_function = orig_ignore_func; + + r = rl_complete_internal (what_to_do); + + rl_completion_entry_function = orig_func; + rl_attempted_completion_function = orig_attempt_func; + rl_ignore_some_completions_function = orig_ignore_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 && completion_glob_pattern (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-escaped characters to pass through unscathed. */ + if (*p == '\\') + { + /* Backslashes are preserved within single quotes. */ + if (quoted == '\'') + *r++ = *p; + /* Backslashes are preserved within double quotes unless the + character is one that is defined to be escaped */ + else if (quoted == '"' && ((sh_syntaxtab[(unsigned char)p[1]] & CBSDQUOTE) == 0)) + *r++ = *p; + + *r++ = *++p; + if (*p == '\0') + return ret; /* XXX - was 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 (mbschr (rl_completer_word_break_characters, *s)) + *r++ = '\\'; + /* XXX -- check for standalone tildes here and backslash-quote them */ + if (s == text && *s == '~' && file_exists (text)) + *r++ = '\\'; + *r++ = *s; + } + *r = '\0'; + return ret; +} + +/* Use characters in STRING to populate the table of characters that should + be backslash-quoted. The table will be used for sh_backslash_quote from + this file. */ +static void +set_filename_bstab (string) + const char *string; +{ + const char *s; + + memset (filename_bstab, 0, sizeof (filename_bstab)); + for (s = string; s && *s; s++) + filename_bstab[(unsigned char)*s] = 1; +} + +/* Quote a filename using double quotes, single quotes, or backslashes + depending on the value of completion_quoting_style. If we're + completing using backslashes, we need to quote some additional + 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 && mbschr (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 && mbschr (s, '!')) + cs = COMPLETE_BSQUOTE; + + if (*qcp == '"' && history_expansion && cs == COMPLETE_DQUOTE && + history_expansion_inhibited == 0 && mbschr (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, complete_fullquote ? 0 : filename_bstab, 0); + 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. */ + if (rtext) + { + rlen = strlen (rtext); + ret = (char *)xmalloc (rlen + 1); + strcpy (ret, rtext); + } + else + { + ret = (char *)xmalloc (rlen = 1); + ret[0] = '\0'; + } + + /* If there are multiple matches, cut off the closing quote. */ + if (rtype == MULT_MATCH && cs != COMPLETE_BSQUOTE) + ret[rlen - 1] = '\0'; + free (rtext); + return ret; +} + +/* Support for binding readline key sequences to Unix commands. Each editing + mode has a separate Unix command keymap. */ + +static Keymap emacs_std_cmd_xmap; +#if defined (VI_MODE) +static Keymap vi_insert_cmd_xmap; +static Keymap vi_movement_cmd_xmap; +#endif + +#ifdef _MINIX +static void +#else +static int +#endif +putx(c) + int c; +{ + int x; + x = putc (c, rl_outstream); +#ifndef _MINIX + return x; +#endif +} + +static int +readline_get_char_offset (ind) + int ind; +{ + int r, old_ch; + + r = ind; +#if defined (HANDLE_MULTIBYTE) + if (locale_mb_cur_max > 1) + { + old_ch = rl_line_buffer[ind]; + rl_line_buffer[ind] = '\0'; + r = MB_STRLEN (rl_line_buffer); + rl_line_buffer[ind] = old_ch; + } +#endif + return r; +} + +static void +readline_set_char_offset (ind, varp) + int ind; + int *varp; +{ + int i; + + i = ind; + +#if defined (HANDLE_MULTIBYTE) + if (i > 0 && locale_mb_cur_max > 1) + i = _rl_find_next_mbchar (rl_line_buffer, 0, i, 0); /* XXX */ +#endif + if (i != *varp) + { + if (i > rl_end) + i = rl_end; + else if (i < 0) + i = 0; + *varp = i; + } +} + +int +bash_execute_unix_command (count, key) + int count; /* ignored */ + int key; +{ + int type; + register int i, r; + intmax_t mi; + sh_parser_state_t ps; + char *cmd, *value, *ce, old_ch; + SHELL_VAR *v; + char ibuf[INT_STRLEN_BOUND(int) + 1]; + Keymap cmd_xmap; + + /* First, we need to find the right command to execute. This is tricky, + because we might have already indirected into another keymap, so we + have to walk cmd_xmap using the entire key sequence. */ + cmd_xmap = get_cmd_xmap_from_keymap (rl_get_keymap ()); + cmd = (char *)rl_function_of_keyseq_len (rl_executing_keyseq, rl_key_sequence_length, cmd_xmap, &type); + + if (type == ISKMAP && (type = ((Keymap) cmd)[ANYOTHERKEY].type) == ISMACR) + cmd = (char*)((Keymap) cmd)[ANYOTHERKEY].function; + + if (cmd == 0 || type != ISMACR) + { + rl_crlf (); + internal_error (_("bash_execute_unix_command: cannot find keymap for command")); + rl_forced_update_display (); + return 1; + } + + ce = rl_get_termcap ("ce"); + if (ce) /* clear current line */ + { + rl_clear_visible_line (); + fflush (rl_outstream); + } + else + rl_crlf (); /* move to a new line */ + + v = bind_variable ("READLINE_LINE", rl_line_buffer, 0); + if (v) + VSETATTR (v, att_exported); + + i = readline_get_char_offset (rl_point); + value = inttostr (i, ibuf, sizeof (ibuf)); + v = bind_int_variable ("READLINE_POINT", value, 0); + if (v) + VSETATTR (v, att_exported); + + i = readline_get_char_offset (rl_mark); + value = inttostr (i, ibuf, sizeof (ibuf)); + v = bind_int_variable ("READLINE_MARK", value, 0); + if (v) + VSETATTR (v, att_exported); + array_needs_making = 1; + + save_parser_state (&ps); + rl_clear_signals (); + r = parse_and_execute (savestring (cmd), "bash_execute_unix_command", SEVAL_NOHIST); + rl_set_signals (); + restore_parser_state (&ps); + + v = find_variable ("READLINE_LINE"); + maybe_make_readline_line (v ? value_cell (v) : 0); + + v = find_variable ("READLINE_POINT"); + if (v && legal_number (value_cell (v), &mi)) + readline_set_char_offset (mi, &rl_point); + + v = find_variable ("READLINE_MARK"); + if (v && legal_number (value_cell (v), &mi)) + readline_set_char_offset (mi, &rl_mark); + + check_unbind_variable ("READLINE_LINE"); + check_unbind_variable ("READLINE_POINT"); + check_unbind_variable ("READLINE_MARK"); + array_needs_making = 1; + + /* and restore the readline buffer and display after command execution. */ + /* If we clear the last line of the prompt above, redraw only that last + line. If the command returns 124, we redraw unconditionally as in + previous versions. */ + if (ce && r != 124) + rl_redraw_prompt_last_line (); + else + rl_forced_update_display (); + + return 0; +} + +int +print_unix_command_map () +{ + Keymap save, cmd_xmap; + + save = rl_get_keymap (); + cmd_xmap = get_cmd_xmap_from_keymap (save); + rl_set_keymap (cmd_xmap); + rl_macro_dumper (1); + rl_set_keymap (save); + return 0; +} + +static void +init_unix_command_map () +{ + emacs_std_cmd_xmap = rl_make_bare_keymap (); + + emacs_std_cmd_xmap[CTRL('X')].type = ISKMAP; + emacs_std_cmd_xmap[CTRL('X')].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap ()); + emacs_std_cmd_xmap[ESC].type = ISKMAP; + emacs_std_cmd_xmap[ESC].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap ()); + +#if defined (VI_MODE) + vi_insert_cmd_xmap = rl_make_bare_keymap (); + vi_movement_cmd_xmap = rl_make_bare_keymap (); +#endif +} + +static Keymap +get_cmd_xmap_from_edit_mode () +{ + if (emacs_std_cmd_xmap == 0) + init_unix_command_map (); + + switch (rl_editing_mode) + { + case EMACS_EDITING_MODE: + return emacs_std_cmd_xmap; +#if defined (VI_MODE) + case VI_EDITING_MODE: + return (get_cmd_xmap_from_keymap (rl_get_keymap ())); +#endif + default: + return (Keymap)NULL; + } +} + +static Keymap +get_cmd_xmap_from_keymap (kmap) + Keymap kmap; +{ + if (emacs_std_cmd_xmap == 0) + init_unix_command_map (); + + if (kmap == emacs_standard_keymap) + return emacs_std_cmd_xmap; + else if (kmap == emacs_meta_keymap) + return (FUNCTION_TO_KEYMAP (emacs_std_cmd_xmap, ESC)); + else if (kmap == emacs_ctlx_keymap) + return (FUNCTION_TO_KEYMAP (emacs_std_cmd_xmap, CTRL('X'))); +#if defined (VI_MODE) + else if (kmap == vi_insertion_keymap) + return vi_insert_cmd_xmap; + else if (kmap == vi_movement_keymap) + return vi_movement_cmd_xmap; +#endif + else + return (Keymap)NULL; +} + +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, cmd_xmap; + char *kseq, *value; + int i, kstart; + + 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); + FREE (kseq); + return -1; + } + + i = isolate_sequence (line, i + 1, 0, &kstart); + if (i < 0) + { + FREE (kseq); + 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 */ + cmd_xmap = get_cmd_xmap_from_keymap (kmap); + 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); + + free (kseq); + return 0; +} + +int +unbind_unix_command (kseq) + char *kseq; +{ + Keymap cmd_xmap; + + cmd_xmap = get_cmd_xmap_from_keymap (rl_get_keymap ()); + if (rl_bind_keyseq_in_map (kseq, (rl_command_func_t *)NULL, cmd_xmap) != 0) + { + builtin_error (_("`%s': cannot unbind in command keymap"), kseq); + return 0; + } + return 1; +} + +/* 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; + /* If rl_completion_found_quote != 0, rl_completion_matches will call the + filename dequoting function, causing the directory name to be dequoted + twice. */ + if (rl_dispatching && rl_completion_found_quote == 0) + dfn = bash_dequote_filename ((char *)text, qc); + else + dfn = (char *)text; + m1 = rl_completion_matches (dfn, rl_filename_completion_function); + if (dfn != text) + 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_progcomp_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); +} + +/* This event hook is designed to be called after readline receives a signal + that interrupts read(2). It gives reasonable responsiveness to interrupts + and fatal signals without executing too much code in a signal handler + context. */ +static int +bash_event_hook () +{ + int sig; + + /* XXX - see if we need to do anything here if sigterm_received == 1, + we probably don't want to reset the event hook since we will not be + jumping to the top level */ + if (sigterm_received) + { + /* RESET_SIGTERM; */ + return 0; + } + + sig = 0; + if (terminating_signal) + sig = terminating_signal; + else if (interrupt_state) + sig = SIGINT; + else if (sigalrm_seen) + sig = SIGALRM; + else + sig = first_pending_trap (); + + /* If we're going to longjmp to top_level, make sure we clean up readline. + check_signals will call QUIT, which will eventually longjmp to top_level, + calling run_interrupt_trap along the way. The check for sigalrm_seen is + to clean up the read builtin's state. */ + if (terminating_signal || interrupt_state || sigalrm_seen) + rl_cleanup_after_signal (); + bashline_reset_event_hook (); + + /* posix mode SIGINT during read -e. We only get here if SIGINT is trapped. */ + if (posixly_correct && this_shell_builtin == read_builtin && sig == 2) + { + last_command_exit_value = 128|SIGINT; + throw_to_top_level (); + } + + check_signals_and_traps (); /* XXX */ + return 0; +} + +#endif /* READLINE */ diff --git a/bash-5.1/bashline.h b/bash-5.1/bashline.h new file mode 100644 index 0000000..48c9fec --- /dev/null +++ b/bash-5.1/bashline.h @@ -0,0 +1,69 @@ +/* bashline.h -- interface to the bash readline functions in bashline.c. */ + +/* Copyright (C) 1993-2019 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_BASHLINE_H_) +#define _BASHLINE_H_ + +#include "stdc.h" + +extern int bash_readline_initialized; +extern int hostname_list_initialized; + +/* these are controlled via shopt */ +extern int perform_hostname_completion; +extern int no_empty_command_completion; +extern int force_fignore; +extern int dircomplete_spelling; +extern int dircomplete_expand; +extern int dircomplete_expand_relpath; +extern int complete_fullquote; + +extern void posix_readline_initialize PARAMS((int)); +extern void reset_completer_word_break_chars PARAMS((void)); +extern int enable_hostname_completion PARAMS((int)); +extern void initialize_readline PARAMS((void)); +extern void bashline_reset PARAMS((void)); +extern void bashline_reinitialize PARAMS((void)); +extern int bash_re_edit PARAMS((char *)); + +extern void bashline_set_event_hook PARAMS((void)); +extern void bashline_reset_event_hook PARAMS((void)); + +extern int bind_keyseq_to_unix_command PARAMS((char *)); +extern int bash_execute_unix_command PARAMS((int, int)); +extern int print_unix_command_map PARAMS((void)); +extern int unbind_unix_command PARAMS((char *)); + +extern char **bash_default_completion PARAMS((const char *, int, int, int, int)); + +void set_directory_hook PARAMS((void)); + +/* Used by programmable completion code. */ +extern char *command_word_completion_function PARAMS((const char *, int)); +extern char *bash_groupname_completion_function PARAMS((const char *, int)); +extern char *bash_servicename_completion_function PARAMS((const char *, int)); + +extern char **get_hostname_list PARAMS((void)); +extern void clear_hostname_list PARAMS((void)); + +extern char **bash_directory_completion_matches PARAMS((const char *)); +extern char *bash_dequote_text PARAMS((const char *)); + +#endif /* _BASHLINE_H_ */ diff --git a/bash-5.1/bashtypes.h b/bash-5.1/bashtypes.h new file mode 100644 index 0000000..01afef4 --- /dev/null +++ b/bash-5.1/bashtypes.h @@ -0,0 +1,42 @@ +/* bashtypes.h -- Bash system types. */ + +/* Copyright (C) 1993-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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 + +#if HAVE_STDINT_H +# include +#endif + +#endif /* _BASHTYPES_H_ */ diff --git a/bash-5.1/bracecomp.c b/bash-5.1/bracecomp.c new file mode 100644 index 0000000..2ea8ba9 --- /dev/null +++ b/bash-5.1/bracecomp.c @@ -0,0 +1,221 @@ +/* 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-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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 "shmbutil.h" + +#include "shell.h" +#include + +static int _strcompare PARAMS((char **, char **)); + +/* 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, 0, 0) + : sh_backslash_quote (array[0], 0, 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, 0, 0); + 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, 0, 0); + 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 +_strcompare (s1, s2) + char **s1, **s2; +{ + int result; + + result = **s1 - **s2; + if (result == 0) + result = strcmp (*s1, *s2); + + return result; +} + +static int +hack_braces_completion (names) + char **names; +{ + register int i; + char *temp; + + i = strvec_len (names); + if (MB_CUR_MAX > 1 && i > 2) + qsort (names+1, i-1, sizeof (char *), (QSFUNC *)_strcompare); + + temp = really_munge_braces (names, 1, i, 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-5.1/braces.c b/bash-5.1/braces.c new file mode 100644 index 0000000..e91d326 --- /dev/null +++ b/bash-5.1/braces.c @@ -0,0 +1,843 @@ +/* braces.c -- code for doing word expansion in curly braces. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* 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 + +#include "bashansi.h" +#include "bashintl.h" + +#if defined (SHELL) +# include "shell.h" +#else +# if defined (TEST) +typedef char *WORD_DESC; +typedef char **WORD_LIST; +#define _(X) X +# endif /* TEST */ +#endif /* SHELL */ + +#include "typemax.h" /* INTMAX_MIN, INTMAX_MAX */ +#include "general.h" +#include "shmbutil.h" +#include "chartypes.h" + +#ifndef errno +extern int errno; +#endif + +#define brace_whitespace(c) (!(c) || (c) == ' ' || (c) == '\t' || (c) == '\n') + +#define BRACE_SEQ_SPECIFIER ".." + +extern int asprintf PARAMS((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); + +/* 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. */ +static const int brace_arg_separator = ','; + +#if defined (PARAMS) +static int brace_gobbler PARAMS((char *, size_t, int *, int)); +static char **expand_amble PARAMS((char *, size_t, int)); +static char **expand_seqterm PARAMS((char *, size_t)); +static char **mkseq PARAMS((intmax_t, intmax_t, intmax_t, int, int)); +static char **array_concat PARAMS((char **, char **)); +#else +static int brace_gobbler (); +static char **expand_amble (); +static char **expand_seqterm (); +static char **mkseq(); +static char **array_concat (); +#endif + +#if 0 +static void +dump_result (a) + char **a; +{ + int i; + + for (i = 0; a[i]; i++) + printf ("dump_result: a[%d] = -%s-\n", i, a[i]); +} +#endif + +/* Return an array of strings; the brace expansion of TEXT. */ +char ** +brace_expand (text) + 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); + if (i > 0) + 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); + set_exit_status (EXECUTION_FAILURE); + 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 if (text[i + 1]) + { + /* If the sequence expansion fails (e.g., because the integers + overflow), but there is more in the string, try and process + the rest of the string, which may contain additional brace + expansions. Treat the unexpanded sequence term as a simple + string (including the braces). */ + tack = strvec_create (2); + tack[0] = savestring (text+start-1); + tack[0][i-start+2] = '\0'; + tack[1] = (char *)0; + goto add_tack; + } + else + { + free (amble); + 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); + if (tack != result) + strvec_dispose (tack); + + postamble = text + i + 1; + + if (postamble && *postamble) + { + tack = brace_expand (postamble); + result = array_concat (result, tack); + if (tack != result) + 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, **tresult; + char *tem; + int start, i, c; + +#if defined (SHELL) + DECLARE_MBSTATE; +#endif + + 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); + + tresult = strvec_mresize (result, lp + lr + 1); + if (tresult == 0) + { + internal_error (_("brace expansion: cannot allocate memory for %s"), tem); + free (tem); + strvec_dispose (partial); + strvec_dispose (result); + result = (char **)NULL; + return result; + } + else + result = tresult; + + for (j = 0; j < lp; j++) + result[lr + j] = partial[j]; + + result[lr + j] = (char *)NULL; + free (partial); + } + free (tem); +#if defined (SHELL) + ADVANCE_CHAR (text, tlen, i); +#else + i++; +#endif + start = i; + } + return (result); +} + +#define ST_BAD 0 +#define ST_INT 1 +#define ST_CHAR 2 +#define ST_ZINT 3 + +static char ** +mkseq (start, end, incr, type, width) + intmax_t start, end, incr; + int type, width; +{ + intmax_t n, prevn; + int i, nelem; + char **result, *t; + + if (incr == 0) + incr = 1; + + if (start > end && incr > 0) + incr = -incr; + else if (start < end && incr < 0) + { + if (incr == INTMAX_MIN) /* Don't use -INTMAX_MIN */ + return ((char **)NULL); + incr = -incr; + } + + /* Check that end-start will not overflow INTMAX_MIN, INTMAX_MAX. The +3 + and -2, not strictly necessary, are there because of the way the number + of elements and value passed to strvec_create() are calculated below. */ + if (SUBOVERFLOW (end, start, INTMAX_MIN+3, INTMAX_MAX-2)) + return ((char **)NULL); + + prevn = sh_imaxabs (end - start); + /* Need to check this way in case INT_MAX == INTMAX_MAX */ + if (INT_MAX == INTMAX_MAX && (ADDOVERFLOW (prevn, 2, INT_MIN, INT_MAX))) + return ((char **)NULL); + /* Make sure the assignment to nelem below doesn't end up <= 0 due to + intmax_t overflow */ + else if (ADDOVERFLOW ((prevn/sh_imaxabs(incr)), 1, INTMAX_MIN, INTMAX_MAX)) + return ((char **)NULL); + + /* XXX - TOFIX: potentially allocating a lot of extra memory if + imaxabs(incr) != 1 */ + /* Instead of a simple nelem = prevn + 1, something like: + nelem = (prevn / imaxabs(incr)) + 1; + would work */ + if ((prevn / sh_imaxabs (incr)) > INT_MAX - 3) /* check int overflow */ + return ((char **)NULL); + nelem = (prevn / sh_imaxabs(incr)) + 1; + result = strvec_mcreate (nelem + 1); + if (result == 0) + { + internal_error (_("brace expansion: failed to allocate memory for %u elements"), (unsigned int)nelem); + return ((char **)NULL); + } + + /* Make sure we go through the loop at least once, so {3..3} prints `3' */ + i = 0; + n = start; + do + { +#if defined (SHELL) + if (ISINTERRUPT) + { + result[i] = (char *)NULL; + strvec_dispose (result); + result = (char **)NULL; + } + QUIT; +#endif + if (type == ST_INT) + result[i++] = t = itos (n); + else if (type == ST_ZINT) + { + int len, arg; + arg = n; + len = asprintf (&t, "%0*d", width, arg); + result[i++] = t; + } + else + { + if (t = (char *)malloc (2)) + { + t[0] = n; + t[1] = '\0'; + } + result[i++] = t; + } + + /* We failed to allocate memory for this number, so we bail. */ + if (t == 0) + { + char *p, lbuf[INT_STRLEN_BOUND(intmax_t) + 1]; + + /* Easier to do this than mess around with various intmax_t printf + formats (%ld? %lld? %jd?) and PRIdMAX. */ + p = inttostr (n, lbuf, sizeof (lbuf)); + internal_error (_("brace expansion: failed to allocate memory for `%s'"), p); + strvec_dispose (result); + return ((char **)NULL); + } + + /* Handle overflow and underflow of n+incr */ + if (ADDOVERFLOW (n, incr, INTMAX_MIN, INTMAX_MAX)) + break; + + n += incr; + + if ((incr < 0 && n < end) || (incr > 0 && n > end)) + break; + } + while (1); + + result[i] = (char *)0; + return (result); +} + +static char ** +expand_seqterm (text, tlen) + char *text; + size_t tlen; +{ + char *t, *lhs, *rhs; + int lhs_t, rhs_t, lhs_l, rhs_l, width; + intmax_t lhs_v, rhs_v, incr; + intmax_t tl, tr; + char **result, *ep, *oep; + + t = strstr (text, BRACE_SEQ_SPECIFIER); + if (t == 0) + return ((char **)NULL); + + lhs_l = t - text; /* index of start of BRACE_SEQ_SPECIFIER */ + lhs = substring (text, 0, lhs_l); + rhs = substring (text, lhs_l + 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); + + /* Decide on rhs and whether or not it looks like the user specified + an increment */ + ep = 0; + if (ISDIGIT (rhs[0]) || ((rhs[0] == '+' || rhs[0] == '-') && ISDIGIT (rhs[1]))) + { + rhs_t = ST_INT; + errno = 0; + tr = strtoimax (rhs, &ep, 10); + if (errno == ERANGE || (ep && *ep != 0 && *ep != '.')) + rhs_t = ST_BAD; /* invalid */ + } + else if (ISALPHA (rhs[0]) && (rhs[1] == 0 || rhs[1] == '.')) + { + rhs_t = ST_CHAR; + ep = rhs + 1; + } + else + { + rhs_t = ST_BAD; + ep = 0; + } + + incr = 1; + if (rhs_t != ST_BAD) + { + oep = ep; + errno = 0; + if (ep && *ep == '.' && ep[1] == '.' && ep[2]) + incr = strtoimax (ep + 2, &ep, 10); + if (*ep != 0 || errno == ERANGE) + rhs_t = ST_BAD; /* invalid incr or overflow */ + tlen -= ep - oep; + } + + 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]; + width = 1; + } + else + { + lhs_v = tl; /* integer truncation */ + rhs_v = tr; + + /* Decide whether or not the terms need zero-padding */ + rhs_l = tlen - lhs_l - sizeof (BRACE_SEQ_SPECIFIER) + 1; + width = 0; + if (lhs_l > 1 && lhs[0] == '0') + width = lhs_l, lhs_t = ST_ZINT; + if (lhs_l > 2 && lhs[0] == '-' && lhs[1] == '0') + width = lhs_l, lhs_t = ST_ZINT; + if (rhs_l > 1 && rhs[0] == '0' && width < rhs_l) + width = rhs_l, lhs_t = ST_ZINT; + if (rhs_l > 2 && rhs[0] == '-' && rhs[1] == '0' && width < rhs_l) + width = rhs_l, lhs_t = ST_ZINT; + + if (width < lhs_l && lhs_t == ST_ZINT) + width = lhs_l; + if (width < rhs_l && lhs_t == ST_ZINT) + width = rhs_l; + } + + result = mkseq (lhs_v, rhs_v, incr, lhs_t, width); + + 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; +#if defined (SHELL) + ADVANCE_CHAR (text, tlen, i); +#else + i++; +#endif + 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; +#if defined (SHELL) + /* The shell allows quoted command substitutions */ + if (quoted == '"' && c == '$' && text[i+1] == '(') /*)*/ + goto comsub; +#endif +#if defined (SHELL) + ADVANCE_CHAR (text, tlen, i); +#else + i++; +#endif + continue; + } + + if (c == '"' || c == '\'' || c == '`') + { + quoted = c; + i++; + continue; + } + +#if defined (SHELL) + /* Pass new-style command and process substitutions through unchanged. */ + if ((c == '$' || c == '<' || c == '>') && text[i+1] == '(') /* ) */ + { +comsub: + si = i + 2; + t = extract_command_subst (text, &si, 0); + i = si; + 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 + +#if defined (SHELL) + ADVANCE_CHAR (text, tlen, i); +#else + i++; +#endif + } + + *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 (arr2); /* XXX - see if we can get away without copying? */ + + if (arr2 == 0) + return (arr1); /* XXX - caller expects us to free arr1 */ + + /* We can only short-circuit if the array consists of a single null element; + otherwise we need to replicate the contents of the other array and + prefix (or append, below) an empty element to each one. */ + if (arr1[0] && arr1[0][0] == 0 && arr1[1] == 0) + { + strvec_dispose (arr1); + return (arr2); /* XXX - use flags to see if we can avoid copying here */ + } + + if (arr2[0] && arr2[0][0] == 0 && arr2[1] == 0) + return (arr1); /* XXX - rather than copying and freeing it */ + + len1 = strvec_len (arr1); + len2 = strvec_len (arr2); + + result = (char **)malloc ((1 + (len1 * len2)) * sizeof (char *)); + if (result == 0) + return (result); + + 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 + +void * +xmalloc(n) + size_t n; +{ + return (malloc (n)); +} + +void * +xrealloc(p, n) + void *p; + size_t n; +{ + return (realloc (p, n)); +} + +int +internal_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]); + + strvec_dispose (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-5.1/builtins.h b/bash-5.1/builtins.h new file mode 100644 index 0000000..5b7e811 --- /dev/null +++ b/bash-5.1/builtins.h @@ -0,0 +1,68 @@ +/* builtins.h -- What a builtin looks like, and where to find them. */ + +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef BUILTINS_H +#define BUILTINS_H + +#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 0x01 /* This builtin is enabled. */ +#define BUILTIN_DELETED 0x02 /* This has been deleted with enable -d. */ +#define STATIC_BUILTIN 0x04 /* This builtin is not dynamically loaded. */ +#define SPECIAL_BUILTIN 0x08 /* This is a Posix `special' builtin. */ +#define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */ +#define POSIX_BUILTIN 0x20 /* This builtins is special in the Posix command search order. */ +#define LOCALVAR_BUILTIN 0x40 /* This builtin creates local variables */ +#define REQUIRES_BUILTIN 0x80 /* This builtin requires other files. */ + +#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 documentation. */ + 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; + +#endif /* BUILTINS_H */ diff --git a/bash-5.1/builtins_org/Makefile.in b/bash-5.1/builtins_org/Makefile.in new file mode 100644 index 0000000..e87150f --- /dev/null +++ b/bash-5.1/builtins_org/Makefile.in @@ -0,0 +1,708 @@ +# This Makefile for building libbuiltins.a is in -*- text -*- for Emacs. +# +# Copyright (C) 1996-2017 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +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@ + +datarootdir = @datarootdir@ + +includedir = @includedir@ +datadir = @datadir@ +localedir = @localedir@ + +loadablesdir = @loadablesdir@ + +# 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_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD) +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_LIBDIR = ${INTL_BUILDDIR} +INTL_LIBRARY = ${INTL_BUILDDIR}/libintl.a +INTL_INC = @INTL_INC@ +INTL_DEP = @INTL_DEP@ +LIBINTL_H = @LIBINTL_H@ + +HELPDIR = @HELPDIR@ +MKDIRS = ${topdir}/support/mkdirs + +HELPFILES_TARGET = @HELPFILES_TARGET@ + +INCLUDES = -I. -I.. @RL_INCLUDE@ -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib -I$(srcdir) ${INTL_INC} + +BASE_CCFLAGS = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) \ + ${INCLUDES} $(LOCAL_CFLAGS) + +CCFLAGS = ${ADDON_CFLAGS} $(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 ) + +# 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 $(srcdir)/mapfile.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 mapfile.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 tmpbuiltins.c \ + tmpbuiltins.h +CREATED_OBJECTS = tmpbuiltins.o gen-helpfiles.o mkbuiltins.o + +all: $(MKBUILTINS) libbuiltins.a $(HELPFILES_TARGET) +targets: libbuiltins.a $(HELPFILES_TARGET) + +libbuiltins.a: $(MKBUILTINS) $(OFILES) builtins.o + $(RM) $@ + $(AR) $(ARFLAGS) $@ $(OFILES) + -$(RANLIB) $@ + +tmpbuiltins.c: $(MKBUILTINS) $(DEFSRC) + ./$(MKBUILTINS) -externfile tmpbuiltins.h -structfile $@ \ + -noproduction -nofunctions \ + $(DIRECTDEFINE) $(HELPSTRINGS) $(DEFSRC) + +tmpbuiltins.h: tmpbuiltins.c + +gen-helpfiles.o: ../config.h +gen-helpfiles.o: gen-helpfiles.c + $(RM) $@ + $(CC_FOR_BUILD) -c $(CCFLAGS_FOR_BUILD) $< + +gen-helpfiles: tmpbuiltins.o gen-helpfiles.o + $(CC_FOR_BUILD) ${CCFLAGS_FOR_BUILD} $(LDFLAGS_FOR_BUILD) -o $@ gen-helpfiles.o tmpbuiltins.o $(LIBS_FOR_BUILD) + +builtext.h builtins.c: $(MKBUILTINS) $(DEFSRC) + @-if test -f builtins.c; then mv -f builtins.c old-builtins.c; fi + @-if test -f builtext.h; then mv -f builtext.h old-builtext.h; fi + ./$(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: gen-helpfiles + ./gen-helpfiles ${HELPDIRDEFINE} + +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 + +tmpbuiltins.o: tmpbuiltins.c +gen-helpfiles.o: gen-helpfiles.c + +ulimit.o: pipesize.h + +pipesize.h: psize.aux + $(SHELL) $(srcdir)/psize.sh > $@ + +# Technically this is wrong; the pipe size should be for the target system, +# not the build host. +psize.aux: psize.c + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(srcdir)/psize.c + +documentation: builtins.texi + +builtins.texi: $(MKBUILTINS) + ./$(MKBUILTINS) -documentonly $(DEFSRC) + +clean: + $(RM) $(OFILES) $(CREATED_FILES) libbuiltins.a + $(RM) $(MKBUILTINS) gen-helpfiles $(CREATED_OBJECTS) + -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 + +${LIBINTL_H}: + @echo making $@ in ${INTL_BUILDDIR} + @(cd ${INTL_BUILDDIR} && \ + $(MAKE) $(MFLAGS) libintl.h) || exit 1 + +# 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 +mapfile.o: mapfile.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 $(topdir)/parser.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 $(topdir)/parser.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 ../pathnames.h ./builtext.h +#evalstring.o: $(topdir)/y.tab.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 $(topdir)/sig.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 +alias.o: ../pathnames.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 $(topdir)/sig.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 $(topdir)/sig.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 +break.o: ../pathnames.h $(topdir)/execute_cmd.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 $(topdir)/sig.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 ../pathnames.h $(topdir)/execute_cmd.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 $(topdir)/sig.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 ../pathnames.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 ../pathnames.h +cd.o: $(topdir)/sig.h +colon.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h +colon.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h +colon.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h +colon.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +colon.o: $(BASHINCDIR)/maxpath.h ../pathnames.h +colon.o: $(srcdir)/common.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)/sig.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 +command.o: ../pathnames.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 $(topdir)/sig.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 $(topdir)/flags.h +declare.o: ./builtext.h ../pathnames.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 $(topdir)/sig.h +echo.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +echo.o: $(BASHINCDIR)/maxpath.h ../pathnames.h +echo.o: $(srcdir)/common.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 $(topdir)/sig.h +enable.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +enable.o: $(BASHINCDIR)/maxpath.h ../pathnames.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 $(topdir)/sig.h +eval.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +eval.o: $(BASHINCDIR)/maxpath.h ../pathnames.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 $(topdir)/sig.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 ../pathnames.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 $(topdir)/sig.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: $(topdir)/execute_cmd.h +exit.o: $(BASHINCDIR)/maxpath.h ./builtext.h ../pathnames.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 $(topdir)/parser.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 $(topdir)/sig.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 +fc.o: ../pathnames.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 $(topdir)/sig.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)/execute_cmd.h +fg_bg.o: $(topdir)/jobs.h ../pathnames.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 $(topdir)/sig.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 +getopts.o: $(topdir)/execute_cmd.h +getopts.o: ../pathnames.h +hash.o: $(topdir)/builtins.h $(topdir)/command.h $(topdir)/quit.h +hash.o: $(topdir)/findcmd.h $(topdir)/hashlib.h $(topdir)/sig.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 +hash.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h +hash.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h ../pathnames.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 +help.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h +help.o: ${srcdir}/common.h $(topdir)/sig.h ../pathnames.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 $(topdir)/sig.h $(topdir)/parser.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 +history.o: ../pathnames.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 ../pathnames.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 +jobs.o: $(topdir)/sig.h ../pathnames.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 $(topdir)/sig.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 ../pathnames.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 $(topdir)/sig.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 +let.o: ../pathnames.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 +printf.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h +printf.o: ../pathnames.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 $(topdir)/sig.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 +pushd.o: ../pathnames.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 $(topdir)/sig.h +read.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h +read.o: $(topdir)/arrayfunc.h ../pathnames.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 $(topdir)/sig.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 +return.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h +return.o: ../pathnames.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 $(topdir)/sig.h +set.o: $(topdir)/arrayfunc.h ../pathnames.h $(topdir)/parser.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 $(topdir)/flags.h $(topdir)/sig.h +setattr.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h +setattr.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h +setattr.o: $(topdir)/arrayfunc.h ../pathnames.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 $(topdir)/sig.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 +shift.o: ../pathnames.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 ../pathnames.h +shopt.o: $(topdir)/bashhist.h $(topdir)/bashline.h $(topdir)/sig.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 $(topdir)/sig.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 +source.o: $(topdir)/execute_cmd.h +source.o: ../pathnames.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 $(topdir)/sig.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 ../pathnames.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 $(topdir)/sig.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)/execute_cmd.h $(topdir)/test.h ../pathnames.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 $(topdir)/sig.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 ../pathnames.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 $(topdir)/sig.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 ../pathnames.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 $(topdir)/sig.h +type.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h +type.o: $(topdir)/execute_cmd.h $(topdir)/parser.h +type.o: $(topdir)/externs.h $(topdir)/hashcmd.h ../pathnames.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 $(topdir)/sig.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 +ulimit.o: ../pathnames.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 $(topdir)/sig.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 ../pathnames.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 $(topdir)/sig.h $(topdir)/execute_cmd.h +wait.o: $(BASHINCDIR)/chartypes.h ../pathnames.h + +complete.o: ../config.h ../pathnames.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)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h +complete.o: ${topdir}/bashtypes.h ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +complete.o: ${topdir}/builtins.h ${topdir}/general.h +complete.o: ${topdir}/bashtypes.h ${BASHINCDIR}/chartypes.h ${topdir}/xmalloc.h +complete.o: ${topdir}/pcomplete.h +complete.o: ${srcdir}/common.h ${srcdir}/bashgetopt.h +mapfile.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h +mapfile.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h +mapfile.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h +mapfile.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h +mapfile.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/variables.h $(topdir)/conftypes.h +mapfile.o: $(topdir)/arrayfunc.h ../pathnames.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 +mapfile.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +mkbuiltins.o: ${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-5.1/builtins_org/alias.def b/bash-5.1/builtins_org/alias.def new file mode 100644 index 0000000..0ab9069 --- /dev/null +++ b/bash-5.1/builtins_org/alias.def @@ -0,0 +1,241 @@ +This file is alias.def, from which is created alias.c +It implements the builtins "alias" and "unalias" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$BUILTIN alias +$FUNCTION alias_builtin +$DEPENDS_ON ALIAS +$PRODUCES alias.c +$SHORT_DOC alias [-p] [name[=value] ... ] +Define or display aliases. + +Without arguments, `alias' prints the list of aliases in the reusable +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. + +Options: + -p print all defined aliases in a reusable format + +Exit Status: +alias returns true unless a NAME is supplied 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 PARAMS((alias_t *, int)); + +/* 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; + CASE_HELPOPT; + 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 (sh_chkwrite (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 each NAME from the list of defined aliases. + +Options: + -a remove all alias definitions + +Return success unless a NAME is not an existing alias. +$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; + CASE_HELPOPT; + 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 %s", (alias->name && alias->name[0] == '-') ? "-- " : ""); + printf ("%s=%s\n", alias->name, value); + free (value); + + fflush (stdout); +} +#endif /* ALIAS */ diff --git a/bash-5.1/builtins_org/bashgetopt.c b/bash-5.1/builtins_org/bashgetopt.c new file mode 100644 index 0000000..405ced4 --- /dev/null +++ b/bash-5.1/builtins_org/bashgetopt.c @@ -0,0 +1,181 @@ +/* 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 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 . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashansi.h" +#include +#include + +#include "../shell.h" +#include "common.h" + +#include "bashgetopt.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 (ISHELP (lcurrent->word->word)) { + lhead = (WORD_LIST *)NULL; + loptend = lcurrent; + return (GETOPT_HELP); + } 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-5.1/builtins_org/bashgetopt.h b/bash-5.1/builtins_org/bashgetopt.h new file mode 100644 index 0000000..dcdaa48 --- /dev/null +++ b/bash-5.1/builtins_org/bashgetopt.h @@ -0,0 +1,42 @@ +/* bashgetopt.h -- extern declarations for stuff defined in bashgetopt.c. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* See getopt.h for the explanation of these variables. */ + +#if !defined (__BASH_GETOPT_H) +# define __BASH_GETOPT_H + +#include + +#define GETOPT_EOF -1 +#define GETOPT_HELP -99 + +extern char *list_optarg; + +extern int list_optopt; +extern int list_opttype; + +extern WORD_LIST *lcurrent; +extern WORD_LIST *loptend; + +extern int internal_getopt PARAMS((WORD_LIST *, char *)); +extern void reset_internal_getopt PARAMS((void)); + +#endif /* !__BASH_GETOPT_H */ diff --git a/bash-5.1/builtins_org/bind.def b/bash-5.1/builtins_org/bind.def new file mode 100644 index 0000000..ccfc08d --- /dev/null +++ b/bash-5.1/builtins_org/bind.def @@ -0,0 +1,405 @@ +This file is bind.def, from which is created bind.c. +It implements the builtin "bind" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES bind.c + +#include + +$BUILTIN bind +$DEPENDS_ON READLINE +$FUNCTION bind_builtin +$SHORT_DOC bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command] +Set Readline key bindings and variables. + +Bind a key sequence to a Readline function or a macro, or set a +Readline variable. The non-option argument syntax is equivalent to +that found in ~/.inputrc, but must be passed as a single argument: +e.g., bind '"\C-x\C-r": re-read-init-file'. + +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. + -S List key sequences that invoke macros and their values + -s List key sequences that invoke macros and their values + in a form that can be reused as input. + -V List variable names and values + -v List variable names and values in a form that can + be reused as input. + -q function-name Query about which keys invoke the named function. + -u function-name Unbind all keys which are bound to the named function. + -r keyseq Remove the binding for KEYSEQ. + -f filename Read key bindings from FILENAME. + -x keyseq:shell-command Cause SHELL-COMMAND to be executed when + KEYSEQ is entered. + -X List key sequences bound with -x and associated commands + in a form that can be reused as input. + +Exit Status: +bind returns 0 unless an unrecognized option is given or an error occurs. +$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 PARAMS((char *)); +static int unbind_command PARAMS((char *)); +static int unbind_keyseq PARAMS((char *)); + +#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 +#define XXFLAG 0x2000 + +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, *t; + + if (no_line_editing) + { +#if 0 + builtin_error (_("line editing not enabled")); + return (EXECUTION_FAILURE); +#else + builtin_warning (_("line editing not enabled")); +#endif + } + + kmap = saved_keymap = (Keymap) NULL; + flags = 0; + initfile = map_name = fun_name = unbind_name = remove_seq = cmd_seq = (char *)NULL; + return_code = EXECUTION_SUCCESS; + + if (bash_readline_initialized == 0) + initialize_readline (); + + begin_unwind_frame ("bind_builtin"); + unwind_protect_var (rl_outstream); + + rl_outstream = stdout; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "lvpVPsSXf:q:u:m:r:x:")) != -1) + { + 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; + case 'X': + flags |= XXFLAG; + break; + case GETOPT_HELP: + 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 == 0) + { + 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) + { + t = printable_filename (initfile, 0); + builtin_error (_("%s: cannot read: %s"), t, strerror (errno)); + if (t != initfile) + free (t); + 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) + { + opt = unbind_keyseq (remove_seq); + BIND_RETURN (opt); + } + + if (flags & XFLAG) + return_code = bind_keyseq_to_unix_command (cmd_seq); + + if (flags & XXFLAG) + return_code = print_unix_command_map (); + + /* Process the rest of the arguments as binding specifications. */ + while (list) + { + int olen, nlen, d, i; + char **obindings, **nbindings; + + obindings = rl_invoking_keyseqs (bash_execute_unix_command); + olen = obindings ? strvec_len (obindings) : 0; + + rl_parse_and_bind (list->word->word); + + nbindings = rl_invoking_keyseqs (bash_execute_unix_command); + nlen = nbindings ? strvec_len (nbindings) : 0; + + if (nlen < olen) /* fewer bind -x bindings */ + for (d = olen - nlen, i = 0; i < olen && d > 0; i++) + if (nlen == 0 || strvec_search (nbindings, obindings[i]) >= 0) + { + unbind_unix_command (obindings[i]); + d--; + } + + strvec_dispose (obindings); + strvec_dispose (nbindings); + + list = list->next; + } + + bind_exit: + if (saved_keymap) + rl_set_keymap (saved_keymap); + + run_unwind_frame ("bind_builtin"); + + if (return_code < 0) + return_code = EXECUTION_FAILURE; + + return (sh_chkwrite (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; +} + +static int +unbind_keyseq (seq) + char *seq; +{ + char *kseq; + int kslen, type; + rl_command_func_t *f; + + kseq = (char *)xmalloc ((2 * strlen (seq)) + 1); + if (rl_translate_keyseq (seq, kseq, &kslen)) + { + free (kseq); + builtin_error (_("`%s': cannot unbind"), seq); + return EXECUTION_FAILURE; + } + if ((f = rl_function_of_keyseq_len (kseq, kslen, (Keymap)0, &type)) == 0) + { + free (kseq); + return (EXECUTION_SUCCESS); + } + if (type == ISKMAP) + f = ((Keymap) f)[ANYOTHERKEY].function; + + /* I wish this didn't have to translate the key sequence again, but readline + doesn't have a binding function that takes a translated key sequence as + an argument. */ + if (rl_bind_keyseq (seq, (rl_command_func_t *)NULL) != 0) + { + free (kseq); + builtin_error (_("`%s': cannot unbind"), seq); + return (EXECUTION_FAILURE); + } + + if (f == bash_execute_unix_command) + unbind_unix_command (seq); + + free (kseq); + return (EXECUTION_SUCCESS); +} +#endif /* READLINE */ diff --git a/bash-5.1/builtins_org/break.def b/bash-5.1/builtins_org/break.def new file mode 100644 index 0000000..b73ed5e --- /dev/null +++ b/bash-5.1/builtins_org/break.def @@ -0,0 +1,143 @@ +This file is break.def, from which is created break.c. +It implements the builtins "break" and "continue" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES break.c + +$BUILTIN break +$FUNCTION break_builtin +$SHORT_DOC break [n] +Exit for, while, or until loops. + +Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing +loops. + +Exit Status: +The exit status is 0 unless N is not greater than or equal to 1. +$END +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashintl.h" + +#include "../shell.h" +#include "../execute_cmd.h" +#include "common.h" + +static int check_loop_level PARAMS((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; + + CHECK_HELPOPT (list); + + if (check_loop_level () == 0) + return (EXECUTION_SUCCESS); + + (void)get_numeric_arg (list, 1, &newbreak); + + 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 for, while, or until loops. + +Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop. +If N is specified, resumes the Nth enclosing loop. + +Exit Status: +The exit status is 0 unless N is not greater than or equal to 1. +$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; + + CHECK_HELPOPT (list); + + if (check_loop_level () == 0) + return (EXECUTION_SUCCESS); + + (void)get_numeric_arg (list, 1, &newcont); + + 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-5.1/builtins_org/builtin.def b/bash-5.1/builtins_org/builtin.def new file mode 100644 index 0000000..74060ee --- /dev/null +++ b/bash-5.1/builtins_org/builtin.def @@ -0,0 +1,85 @@ +This file is builtin.def, from which is created builtin.c. +It implements the builtin "builtin" in Bash. + +Copyright (C) 1987-2017 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES builtin.c + +$BUILTIN builtin +$FUNCTION builtin_builtin +$SHORT_DOC builtin [shell-builtin [arg ...]] +Execute shell builtins. + +Execute SHELL-BUILTIN with arguments ARGs without performing command +lookup. This is useful when you wish to reimplement a shell builtin +as a shell function, but need to execute the builtin within the function. + +Exit Status: +Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is +not a shell builtin. +$END +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../shell.h" +#include "../execute_cmd.h" +#include "common.h" +#include "bashgetopt.h" + +/* 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 == 0) + { + sh_notbuiltin (command); + return (EXECUTION_FAILURE); + } + else + { + this_command_name = command; + this_shell_builtin = function; /* overwrite "builtin" as this builtin */ + list = list->next; + return ((*function) (list)); + } +} diff --git a/bash-5.1/builtins_org/caller.def b/bash-5.1/builtins_org/caller.def new file mode 100644 index 0000000..1000979 --- /dev/null +++ b/bash-5.1/builtins_org/caller.def @@ -0,0 +1,156 @@ +This file is caller.def, from which is created caller.c. It implements the +builtin "caller" in Bash. + +Copyright (C) 2002-2008 Rocky Bernstein for Free Software Foundation, Inc. +Copyright (C) 2008-2019 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES caller.c + +$BUILTIN caller +$FUNCTION caller_builtin +$DEPENDS_ON DEBUGGER +$SHORT_DOC caller [expr] +Return the context of the current subroutine call. + +Without EXPR, returns "$line $filename". With EXPR, returns +"$line $subroutine $filename"; this extra information can be 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. + +Exit Status: +Returns 0 unless the shell is not executing a shell function or EXPR +is invalid. +$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; + intmax_t num; + + CHECK_HELPOPT (list); + + 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 (EX_USAGE); + } + + 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 \"$line $filename\". With EXPR, returns\n\ + \"$line $subroutine $filename\"; this extra information can be used to\n\ + 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-5.1/builtins_org/cd.def b/bash-5.1/builtins_org/cd.def new file mode 100644 index 0000000..7205608 --- /dev/null +++ b/bash-5.1/builtins_org/cd.def @@ -0,0 +1,685 @@ +This file is cd.def, from which is created cd.c. It implements the +builtins "cd" and "pwd" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES cd.c +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashtypes.h" +#include "posixdir.h" +#include "posixstat.h" +#if defined (HAVE_SYS_PARAM_H) +#include +#endif +#include + +#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 const char * const bash_getcwd_errstr; + +static int bindpwd PARAMS((int)); +static int setpwd PARAMS((char *)); +static char *resetpwd PARAMS((char *)); +static int change_to_directory PARAMS((char *, int, int)); + +static int cdxattr PARAMS((char *, char **)); +static void resetxattr PARAMS((void)); + +/* Change this to 1 to get cd spelling correction by default. */ +int cdspelling = 0; + +int cdable_vars; + +static int eflag; /* file scope so bindpwd() can see it */ +static int xattrflag; /* O_XATTR support for openat */ +static int xattrfd = -1; + +$BUILTIN cd +$FUNCTION cd_builtin +$SHORT_DOC cd [-L|[-P [-e]] [-@]] [dir] +Change the shell working directory. + +Change the current directory to DIR. The default DIR is the value of the +HOME shell variable. + +The variable CDPATH defines the search path for the directory containing +DIR. Alternative directory names in CDPATH are separated by a colon (:). +A null directory name is the same as the current directory. 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, +the word is assumed to be a variable name. If that variable has a value, +its value is used for DIR. + +Options: + -L force symbolic links to be followed: resolve symbolic + links in DIR after processing instances of `..' + -P use the physical directory structure without following + symbolic links: resolve symbolic links in DIR before + processing instances of `..' + -e if the -P option is supplied, and the current working + directory cannot be determined successfully, exit with + a non-zero status +#if defined (O_XATTR) + -@ on systems that support it, present a file with extended + attributes as a directory containing the file attributes +#endif + +The default is to follow symbolic links, as if `-L' were specified. +`..' is processed by removing the immediately previous pathname component +back to a slash or the beginning of DIR. + +Exit Status: +Returns 0 if the directory is changed, and if $PWD is set successfully when +-P is used; non-zero otherwise. +$END + +/* Just set $PWD, don't change OLDPWD. Used by `pwd -P' in posix mode. */ +static int +setpwd (dirname) + char *dirname; +{ + int old_anm; + SHELL_VAR *tvar; + + old_anm = array_needs_making; + tvar = bind_variable ("PWD", dirname ? dirname : "", 0); + if (tvar && readonly_p (tvar)) + return EXECUTION_FAILURE; + if (tvar && old_anm == 0 && array_needs_making && exported_p (tvar)) + { + update_export_env_inplace ("PWD=", 4, dirname ? dirname : ""); + array_needs_making = 0; + } + return EXECUTION_SUCCESS; +} + +static int +bindpwd (no_symlinks) + int no_symlinks; +{ + char *dirname, *pwdvar; + int old_anm, r, canon_failed; + SHELL_VAR *tvar; + + r = sh_chkwrite (EXECUTION_SUCCESS); + +#define tcwd the_current_working_directory + dirname = tcwd ? (no_symlinks ? sh_physpath (tcwd, 0) : tcwd) + : get_working_directory ("cd"); +#undef tcwd + + /* If canonicalization fails, reset dirname to the_current_working_directory */ + canon_failed = 0; + if (dirname == 0) + { + canon_failed = 1; + dirname = the_current_working_directory; + } + + old_anm = array_needs_making; + pwdvar = get_string_value ("PWD"); + + tvar = bind_variable ("OLDPWD", pwdvar, 0); + if (tvar && readonly_p (tvar)) + r = EXECUTION_FAILURE; + + if (old_anm == 0 && array_needs_making && exported_p (tvar)) + { + update_export_env_inplace ("OLDPWD=", 7, pwdvar); + array_needs_making = 0; + } + + if (setpwd (dirname) == EXECUTION_FAILURE) + r = EXECUTION_FAILURE; + if (canon_failed && eflag) + r = EXECUTION_FAILURE; + + if (dirname && dirname != the_current_working_directory) + free (dirname); + + return (r); +} + +/* 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); +} + +static int +cdxattr (dir, ndirp) + char *dir; /* don't assume we can always free DIR */ + char **ndirp; /* return new constructed directory name */ +{ +#if defined (O_XATTR) + int apfd, fd, r, e; + char buf[11+40+40]; /* construct new `fake' path for pwd */ + + apfd = openat (AT_FDCWD, dir, O_RDONLY|O_NONBLOCK); + if (apfd < 0) + return -1; + fd = openat (apfd, ".", O_XATTR); + e = errno; + close (apfd); /* ignore close error for now */ + errno = e; + if (fd < 0) + return -1; + r = fchdir (fd); /* assume fchdir exists everywhere with O_XATTR */ + if (r < 0) + { + close (fd); + return -1; + } + /* NFSv4 and ZFS extended attribute directories do not have names which are + visible in the standard Unix directory tree structure. To ensure we have + a valid name for $PWD, we synthesize one under /proc, but to keep that + path valid, we need to keep the file descriptor open as long as we are in + this directory. This imposes a certain structure on /proc. */ + if (ndirp) + { + sprintf (buf, "/proc/%d/fd/%d", getpid(), fd); + *ndirp = savestring (buf); + } + + if (xattrfd >= 0) + close (xattrfd); + xattrfd = fd; + + return r; +#else + return -1; +#endif +} + +/* Clean up the O_XATTR baggage. Currently only closes xattrfd */ +static void +resetxattr () +{ +#if defined (O_XATTR) + if (xattrfd >= 0) + { + close (xattrfd); + xattrfd = -1; + } +#else + xattrfd = -1; /* not strictly necessary */ +#endif +} + +#define LCD_DOVARS 0x001 +#define LCD_DOSPELL 0x002 +#define LCD_PRINTPATH 0x004 +#define LCD_FREEDIRNAME 0x008 + +/* 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, e; + +#if defined (RESTRICTED_SHELL) + if (restricted) + { + sh_restricted ((char *)NULL); + return (EXECUTION_FAILURE); + } +#endif /* RESTRICTED_SHELL */ + + eflag = 0; + no_symlinks = no_symbolic_links; + xattrflag = 0; + reset_internal_getopt (); +#if defined (O_XATTR) + while ((opt = internal_getopt (list, "eLP@")) != -1) +#else + while ((opt = internal_getopt (list, "eLP")) != -1) +#endif + { + switch (opt) + { + case 'P': + no_symlinks = 1; + break; + case 'L': + no_symlinks = 0; + break; + case 'e': + eflag = 1; + break; +#if defined (O_XATTR) + case '@': + xattrflag = 1; + break; +#endif + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + lflag = (cdable_vars ? LCD_DOVARS : 0) | + ((interactive && cdspelling) ? LCD_DOSPELL : 0); + if (eflag && no_symlinks == 0) + eflag = 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; + } +#if defined (CD_COMPLAINS) + else if (list->next) + { + builtin_error (_("too many arguments")); + return (EXECUTION_FAILURE); + } +#endif +#if 0 + else if (list->word->word[0] == '\0') + { + builtin_error (_("null directory")); + return (EXECUTION_FAILURE); + } +#endif + 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 (privileged_mode == 0 && (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, xattrflag)) + { + /* 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); + } + +#if 0 + /* changed for bash-4.2 Posix cd description steps 5-6 */ + /* POSIX.2 says that if `.' does not appear in $CDPATH, we don't + try the current directory, so we just punt now with an error + message if POSIXLY_CORRECT is non-zero. The check for cdpath[0] + 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); + } +#endif + } + 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, xattrflag)) + { + 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, xattrflag)) + { + 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 = dirspell (dirname); + if (temp && change_to_directory (temp, no_symlinks, xattrflag)) + { + printf ("%s\n", temp); + free (temp); + return (bindpwd (no_symlinks)); + } + else + FREE (temp); + } + + e = errno; + temp = printable_filename (dirname, 0); + builtin_error ("%s: %s", temp, strerror (e)); + if (temp != dirname) + free (temp); + return (EXECUTION_FAILURE); +} + +$BUILTIN pwd +$FUNCTION pwd_builtin +$SHORT_DOC pwd [-LP] +Print the name of the current working directory. + +Options: + -L print the value of $PWD if it names the current working + directory + -P print the physical directory, without any symbolic links + +By default, `pwd' behaves as if `-L' were specified. + +Exit Status: +Returns 0 unless an invalid option is given or the current directory +cannot be read. +$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; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + 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)) + { + if (directory && directory != tcwd) + free (directory); + directory = resetpwd ("pwd"); + } + +#undef tcwd + + if (directory) + { + opt = EXECUTION_SUCCESS; + printf ("%s\n", directory); + /* This is dumb but posix-mandated. */ + if (posixly_correct && pflag) + opt = setpwd (directory); + if (directory != the_current_working_directory) + free (directory); + return (sh_chkwrite (opt)); + } + 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, xattr) + char *newdir; + int nolinks, xattr; +{ + char *t, *tdir, *ndir; + int err, canon_failed, r, ndlen; + + 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); + + /* 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 defined (ENAMETOOLONG) + if (posixly_correct && nolinks == 0 && canon_failed && (errno != ENAMETOOLONG || ndlen > PATH_MAX)) +#else + if (posixly_correct && nolinks == 0 && canon_failed && ndlen > PATH_MAX) +#endif + { +#if defined ENAMETOOLONG + if (errno != ENOENT && errno != ENAMETOOLONG) +#else + if (errno != ENOENT) +#endif + errno = ENOTDIR; + free (tdir); + return (0); + } + +#if defined (O_XATTR) + if (xattrflag) + { + r = cdxattr (nolinks ? newdir : tdir, &ndir); + if (r >= 0) + { + canon_failed = 0; + free (tdir); + tdir = ndir; + } + else + { + err = errno; + free (tdir); + errno = err; + return (0); /* no xattr */ + } + } + else +#endif + { + r = chdir (nolinks ? newdir : tdir); + if (r >= 0) + resetxattr (); + } + + /* If the chdir succeeds, update the_current_working_directory. */ + if (r == 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 + free (t); + } + 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. + POSIX requires that we just fail here, so we do in posix mode. */ + if (posixly_correct == 0 && 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; +} diff --git a/bash-5.1/builtins_org/colon.def b/bash-5.1/builtins_org/colon.def new file mode 100644 index 0000000..6891b07 --- /dev/null +++ b/bash-5.1/builtins_org/colon.def @@ -0,0 +1,76 @@ +This file is colon.def, from which is created colon.c. +It implements the builtin ":" in Bash. + +Copyright (C) 1987-2019 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES colon.c + +$BUILTIN : +$DOCNAME colon +$FUNCTION colon_builtin +$SHORT_DOC : +Null command. + +No effect; the command does nothing. + +Exit Status: +Always succeeds. +$END + +$BUILTIN true +$FUNCTION colon_builtin +$SHORT_DOC true +Return a successful result. + +Exit Status: +Always succeeds. +$END + +$BUILTIN false +$FUNCTION false_builtin +$SHORT_DOC false +Return an unsuccessful result. + +Exit Status: +Always fails. +$END + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashansi.h" +#include "../shell.h" + +/* Return a successful result. */ +int +colon_builtin (ignore) + WORD_LIST *ignore; +{ + return (0); +} + +/* Return an unsuccessful result. */ +int +false_builtin (ignore) + WORD_LIST *ignore; +{ + return (1); +} diff --git a/bash-5.1/builtins_org/command.def b/bash-5.1/builtins_org/command.def new file mode 100644 index 0000000..acd46cc --- /dev/null +++ b/bash-5.1/builtins_org/command.def @@ -0,0 +1,145 @@ +This file is command.def, from which is created command.c. +It implements the builtin "command" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES command.c + +$BUILTIN command +$FUNCTION command_builtin +$SHORT_DOC command [-pVv] command [arg ...] +Execute a simple command or display information about commands. + +Runs COMMAND with ARGS suppressing shell function lookup, or display +information about the specified COMMANDs. Can be used to invoke commands +on disk when a function with the same name exists. + +Options: + -p use a default value for PATH that is guaranteed to find all of + the standard utilities + -v print a description of COMMAND similar to the `type' builtin + -V print a more verbose description of each COMMAND + +Exit Status: +Returns exit status of COMMAND, or failure if COMMAND is not found. +$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 PARAMS((int, char *, size_t)); +#endif + +/* 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; + COMMAND *command; + + verbose = use_standard_path = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "pvV")) != -1) + { + switch (opt) + { + case 'p': + use_standard_path = CDESC_STDPATH; + break; + case 'V': + verbose = CDESC_SHORTDESC|CDESC_ABSPATH; /* look in common.h for constants */ + break; + case 'v': + verbose = CDESC_REUSABLE; /* ditto */ + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) + return (EXECUTION_SUCCESS); + +#if defined (RESTRICTED_SHELL) + if (use_standard_path && restricted) + { + sh_restricted ("-p"); + return (EXECUTION_FAILURE); + } +#endif + + if (verbose) + { + int found, any_found; + + for (any_found = 0; list; list = list->next) + { + found = describe_command (list->word->word, verbose|use_standard_path); + + if (found == 0 && verbose != CDESC_REUSABLE) + sh_notfound (list->word->word); + + any_found += found; + } + + return (any_found ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + } + + begin_unwind_frame ("command_builtin"); + +#define COMMAND_BUILTIN_FLAGS (CMD_NO_FUNCTIONS | CMD_INHIBIT_EXPANSION | CMD_COMMAND_BUILTIN | (use_standard_path ? CMD_STDPATH : 0)) + +#ifdef DEBUG + itrace("command_builtin: running execute_command for `%s'", list->word->word); +#endif + + /* 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. */ + 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; + + add_unwind_protect ((char *)dispose_command, command); + result = execute_command (command); + + run_unwind_frame ("command_builtin"); + + return (result); +} diff --git a/bash-5.1/builtins_org/common.c b/bash-5.1/builtins_org/common.c new file mode 100644 index 0000000..3c9ac49 --- /dev/null +++ b/bash-5.1/builtins_org/common.c @@ -0,0 +1,1017 @@ +/* common.c - utility functions for all builtins */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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" + +#define NEED_FPURGE_DECL + +#include "../shell.h" +#include "maxpath.h" +#include "../flags.h" +#include "../parser.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 const char * const 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. */ + +static void +builtin_error_prolog () +{ + 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); +} + +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; + + builtin_error_prolog (); + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + va_end (args); + fprintf (stderr, "\n"); +} + +void +#if defined (PREFER_STDARG) +builtin_warning (const char *format, ...) +#else +builtin_warning (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + + builtin_error_prolog (); + fprintf (stderr, _("warning: ")); + + 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")); + top_level_cleanup (); + 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; +{ + int opt; + + reset_internal_getopt (); + if ((opt = internal_getopt (list, "")) != -1) + { + if (opt == GETOPT_HELP) + { + builtin_help (); + return (2); + } + 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; +{ + char *msg; + + if (*s == '0' && isdigit ((unsigned char)s[1])) + msg = _("invalid octal number"); + else if (*s == '0' && s[1] == 'x') + msg = _("invalid hex number"); + else + msg = _("invalid number"); + builtin_error ("%s: %s", s, msg); +} + +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 () +{ +#if defined (DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS) && defined (EPIPE) + if (errno != EPIPE) +#endif /* DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS && EPIPE */ + builtin_error (_("write error: %s"), strerror (errno)); +} + +void +sh_ttyerror (set) + int set; +{ + if (set) + builtin_error (_("error setting terminal attributes: %s"), strerror (errno)); + else + builtin_error (_("error getting terminal attributes: %s"), strerror (errno)); +} + +int +sh_chkwrite (s) + int s; +{ + QUIT; + fflush (stdout); + QUIT; + if (ferror (stdout)) + { + sh_wrerror (); + fpurge (stdout); + clearerr (stdout); + return (EXECUTION_FAILURE); + } + return (s); +} + +/* **************************************************************** */ +/* */ +/* 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 $1 ... $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. Set POSPARAM_COUNT + to the number of args assigned (length of LIST). */ +void +remember_args (list, destructive) + WORD_LIST *list; + int destructive; +{ + register int i; + + posparam_count = 0; + + 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[posparam_count = 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); + posparam_count += list_length (list); + } + + if (destructive) + set_dollar_vars_changed (); + + invalidate_cached_quoted_dollar_at (); +} + +void +shift_args (times) + int times; +{ + WORD_LIST *temp; + int count; + + if (times <= 0) /* caller should check */ + return; + + 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; + + posparam_count--; + } +} + +int +number_of_args () +{ +#ifdef DEBUG + 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++; + +if (n != posparam_count) + itrace("number_of_args: n (%d) != posparam_count (%d)", n, posparam_count); +#endif + + return posparam_count; +} + +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 1, call throw_to_top_level, which exits the + shell; if it's 2, call jump_to_top_level (DISCARD), which aborts the + current command; if FATAL is 0, return an indication of an invalid + number by setting *NUMOK == 0 and return -1. */ +int +get_numeric_arg (list, fatal, count) + WORD_LIST *list; + int fatal; + intmax_t *count; +{ + char *arg; + + if (count) + *count = 1; + + if (list && list->word && ISOPTION (list->word->word, '-')) + list = list->next; + + if (list) + { + arg = list->word->word; + if (arg == 0 || (legal_number (arg, count) == 0)) + { + sh_neednumarg (list->word->word ? list->word->word : "`'"); + if (fatal == 0) + return 0; + else if (fatal == 1) /* fatal == 1; abort */ + throw_to_top_level (); + else /* fatal == 2; discard current command */ + { + top_level_cleanup (); + jump_to_top_level (DISCARD); + } + } + no_args (list->next); + } + + return (1); +} + +/* 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) + { + /* If we're not running the DEBUG trap, the return builtin, when not + given any arguments, uses the value of $? before the trap ran. If + given an argument, return uses it. This means that the trap can't + change $?. The DEBUG trap gets to change $?, though, since that is + part of its reason for existing, and because the extended debug mode + does things with the return value. */ + if (this_shell_builtin == return_builtin && running_trap > 0 && running_trap != DEBUG_TRAP+1) + return (trap_saved_exit_value); + 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 EX_BADUSAGE; + } + 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 > 07777) + 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; +{ + if (no_symbolic_links) + { + FREE (the_current_working_directory); + the_current_working_directory = (char *)NULL; + } + + if (the_current_working_directory == 0) + { +#if defined (GETCWD_BROKEN) + the_current_working_directory = getcwd (0, PATH_MAX); +#else + the_current_working_directory = getcwd (0, 0); +#endif + if (the_current_working_directory == 0) + { + fprintf (stderr, _("%s: error retrieving current directory: %s: %s\n"), + (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 = strcasestr (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 + internal_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 < 0 || 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 < 5) + 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; + } + /* POSIX.2 says that `kill -l signum' prints the signal name without + the `SIG' prefix. */ + printf ("%s\n", (this_shell_builtin == kill_builtin && signum > 0) ? name + 3 : name); + } + 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); +} + +#if !defined (HELP_BUILTIN) +void +builtin_help () +{ + printf ("%s: %s\n", this_command_name, _("help not available in this version")); +} +#endif + +/* **************************************************************** */ +/* */ +/* Variable assignments during builtin commands */ +/* */ +/* **************************************************************** */ + +SHELL_VAR * +builtin_bind_variable (name, value, flags) + char *name; + char *value; + int flags; +{ + SHELL_VAR *v; + +#if defined (ARRAY_VARS) + if (valid_array_reference (name, assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0) == 0) + v = bind_variable (name, value, flags); + else + v = assign_array_element (name, value, flags | (assoc_expand_once ? ASS_NOEXPAND : 0)); +#else /* !ARRAY_VARS */ + v = bind_variable (name, value, flags); +#endif /* !ARRAY_VARS */ + + if (v && readonly_p (v) == 0 && noassign_p (v) == 0) + VUNSETATTR (v, att_invisible); + + return v; +} + +/* Like check_unbind_variable, but for use by builtins (only matters for + error messages). */ +int +builtin_unbind_variable (vname) + const char *vname; +{ + SHELL_VAR *v; + + v = find_variable (vname); + if (v && readonly_p (v)) + { + builtin_error (_("%s: cannot unset: readonly %s"), vname, "variable"); + return -2; + } + else if (v && non_unsettable_p (v)) + { + builtin_error (_("%s: cannot unset"), vname); + return -2; + } + return (unbind_variable (vname)); +} diff --git a/bash-5.1/builtins_org/common.h b/bash-5.1/builtins_org/common.h new file mode 100644 index 0000000..a4f9275 --- /dev/null +++ b/bash-5.1/builtins_org/common.h @@ -0,0 +1,252 @@ +/* common.h -- extern declarations for functions defined in common.c. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (__COMMON_H) +# define __COMMON_H + +#include "stdc.h" + +#define ISOPTION(s, c) (s[0] == '-' && s[1] == c && !s[2]) +#define ISHELP(s) (STREQ ((s), "--help")) + +#define CHECK_HELPOPT(l) \ +do { \ + if ((l) && (l)->word && ISHELP((l)->word->word)) \ + { \ + builtin_help (); \ + return (EX_USAGE); \ + } \ +} while (0) + +#define CASE_HELPOPT \ + case GETOPT_HELP: \ + builtin_help (); \ + return (EX_USAGE) + +/* 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 +#define SEVAL_PARSEONLY 0x020 +#define SEVAL_NOLONGJMP 0x040 +#define SEVAL_FUNCDEF 0x080 /* only allow function definitions */ +#define SEVAL_ONECMD 0x100 /* only allow a single command */ +#define SEVAL_NOHISTEXP 0x200 /* inhibit history expansion */ + +/* 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 ./ */ +#define CDESC_STDPATH 0x100 /* command -p */ + +/* 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 + +/* Maximum number of attribute letters */ +#define MAX_ATTRIBUTES 16 + +/* Functions from common.c */ +extern void builtin_error PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); +extern void builtin_warning PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); +extern void builtin_usage PARAMS((void)); +extern void no_args PARAMS((WORD_LIST *)); +extern int no_options PARAMS((WORD_LIST *)); + +/* common error message functions */ +extern void sh_needarg PARAMS((char *)); +extern void sh_neednumarg PARAMS((char *)); +extern void sh_notfound PARAMS((char *)); +extern void sh_invalidopt PARAMS((char *)); +extern void sh_invalidoptname PARAMS((char *)); +extern void sh_invalidid PARAMS((char *)); +extern void sh_invalidnum PARAMS((char *)); +extern void sh_invalidsig PARAMS((char *)); +extern void sh_erange PARAMS((char *, char *)); +extern void sh_badpid PARAMS((char *)); +extern void sh_badjob PARAMS((char *)); +extern void sh_readonly PARAMS((const char *)); +extern void sh_nojobs PARAMS((char *)); +extern void sh_restricted PARAMS((char *)); +extern void sh_notbuiltin PARAMS((char *)); +extern void sh_wrerror PARAMS((void)); +extern void sh_ttyerror PARAMS((int)); +extern int sh_chkwrite PARAMS((int)); + +extern char **make_builtin_argv PARAMS((WORD_LIST *, int *)); +extern void remember_args PARAMS((WORD_LIST *, int)); +extern void shift_args PARAMS((int)); +extern int number_of_args PARAMS((void)); + +extern int dollar_vars_changed PARAMS((void)); +extern void set_dollar_vars_unchanged PARAMS((void)); +extern void set_dollar_vars_changed PARAMS((void)); + +extern int get_numeric_arg PARAMS((WORD_LIST *, int, intmax_t *)); +extern int get_exitstat PARAMS((WORD_LIST *)); +extern int read_octal PARAMS((char *)); + +/* Keeps track of the current working directory. */ +extern char *the_current_working_directory; +extern char *get_working_directory PARAMS((char *)); +extern void set_working_directory PARAMS((char *)); + +#if defined (JOB_CONTROL) +extern int get_job_by_name PARAMS((const char *, int)); +extern int get_job_spec PARAMS((WORD_LIST *)); +#endif +extern int display_signal_list PARAMS((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 PARAMS((char *, int)); +extern sh_builtin_func_t *find_shell_builtin PARAMS((char *)); +extern sh_builtin_func_t *builtin_address PARAMS((char *)); +extern sh_builtin_func_t *find_special_builtin PARAMS((char *)); +extern void initialize_shell_builtins PARAMS((void)); + +/* Functions from exit.def */ +extern void bash_logout PARAMS((void)); + +/* Functions from getopts.def */ +extern void getopts_reset PARAMS((int)); + +/* Functions from help.def */ +extern void builtin_help PARAMS((void)); + +/* Functions from read.def */ +extern void read_tty_cleanup PARAMS((void)); +extern int read_tty_modified PARAMS((void)); + +/* Functions from set.def */ +extern int minus_o_option_value PARAMS((char *)); +extern void list_minus_o_opts PARAMS((int, int)); +extern char **get_minus_o_opts PARAMS((void)); +extern int set_minus_o_option PARAMS((int, char *)); + +extern void set_shellopts PARAMS((void)); +extern void parse_shellopts PARAMS((char *)); +extern void initialize_shell_options PARAMS((int)); + +extern void reset_shell_options PARAMS((void)); + +extern char *get_current_options PARAMS((void)); +extern void set_current_options PARAMS((const char *)); + +/* Functions from shopt.def */ +extern void reset_shopt_options PARAMS((void)); +extern char **get_shopt_options PARAMS((void)); + +extern int shopt_setopt PARAMS((char *, int)); +extern int shopt_listopt PARAMS((char *, int)); + +extern int set_login_shell PARAMS((char *, int)); + +extern void set_bashopts PARAMS((void)); +extern void parse_bashopts PARAMS((char *)); +extern void initialize_bashopts PARAMS((int)); + +extern void set_compatibility_opts PARAMS((void)); + +/* Functions from type.def */ +extern int describe_command PARAMS((char *, int)); + +/* Functions from setattr.def */ +extern int set_or_show_attributes PARAMS((WORD_LIST *, int, int)); +extern int show_all_var_attributes PARAMS((int, int)); +extern int show_local_var_attributes PARAMS((int, int)); +extern int show_var_attributes PARAMS((SHELL_VAR *, int, int)); +extern int show_name_attributes PARAMS((char *, int)); +extern int show_localname_attributes PARAMS((char *, int)); +extern int show_func_attributes PARAMS((char *, int)); +extern void set_var_attribute PARAMS((char *, int, int)); +extern int var_attribute_string PARAMS((SHELL_VAR *, int, char *)); + +/* Functions from pushd.def */ +extern char *get_dirstack_from_string PARAMS((char *)); +extern char *get_dirstack_element PARAMS((intmax_t, int)); +extern void set_dirstack_element PARAMS((intmax_t, int, char *)); +extern WORD_LIST *get_directory_stack PARAMS((int)); + +/* Functions from evalstring.c */ +extern int parse_and_execute PARAMS((char *, const char *, int)); +extern int evalstring PARAMS((char *, const char *, int)); +extern void parse_and_execute_cleanup PARAMS((int)); +extern int parse_string PARAMS((char *, const char *, int, char **)); +extern int should_suppress_fork PARAMS((COMMAND *)); +extern int can_optimize_connection PARAMS((COMMAND *)); +extern void optimize_fork PARAMS((COMMAND *)); +extern void optimize_subshell_command PARAMS((COMMAND *)); +extern void optimize_shell_function PARAMS((COMMAND *)); + +/* Functions from evalfile.c */ +extern int maybe_execute_file PARAMS((const char *, int)); +extern int force_execute_file PARAMS((const char *, int)); +extern int source_file PARAMS((const char *, int)); +extern int fc_execute_file PARAMS((const char *)); + +/* variables from common.c */ +extern sh_builtin_func_t *this_shell_builtin; +extern sh_builtin_func_t *last_shell_builtin; + +extern SHELL_VAR *builtin_bind_variable PARAMS((char *, char *, int)); +extern int builtin_unbind_variable PARAMS((const char *)); + +/* variables from evalfile.c */ +extern int sourcelevel; + +/* variables from evalstring.c */ +extern int parse_and_execute_level; + +/* variables from break.def/continue.def */ +extern int breaking; +extern int continuing; +extern int loop_level; + +/* variables from read.def */ +extern int sigalrm_seen; + +/* variables from shift.def */ +extern int print_shift_error; + +/* variables from source.def */ +extern int source_searches_cwd; +extern int source_uses_path; + +/* variables from wait.def */ +extern int wait_intr_flag; + +#endif /* !__COMMON_H */ diff --git a/bash-5.1/builtins_org/complete.def b/bash-5.1/builtins_org/complete.def new file mode 100644 index 0000000..28a9ec2 --- /dev/null +++ b/bash-5.1/builtins_org/complete.def @@ -0,0 +1,884 @@ +This file is complete.def, from which is created complete.c. +It implements the builtins "complete", "compgen", and "compopt" in Bash. + +Copyright (C) 1999-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES complete.c + +$BUILTIN complete +$DEPENDS_ON PROGRAMMABLE_COMPLETION +$FUNCTION complete_builtin +$SHORT_DOC complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...] +Specify how arguments are to be completed by Readline. + +For each NAME, specify how arguments are to be completed. If no options +are supplied, existing completion specifications are printed in a way that +allows them to be reused as input. + +Options: + -p print existing completion specifications in a reusable format + -r remove a completion specification for each NAME, or, if no + NAMEs are supplied, all completion specifications + -D apply the completions and actions as the default for commands + without any specific completion defined + -E apply the completions and actions to "empty" commands -- + completion attempted on a blank line + -I apply the completions and actions to the initial (usually the + command) word + +When completion is attempted, the actions are applied in the order the +uppercase-letter options are listed above. If multiple options are supplied, +the -D option takes precedence over -E, and both take precedence over -I. + +Exit Status: +Returns success unless an invalid option is supplied or an error occurs. +$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) + +/* Structure containing all the non-action (binary) options; filled in by + build_actions(). */ +struct _optflags { + int pflag; + int rflag; + int Dflag; + int Eflag; + int Iflag; +}; + +static int find_compact PARAMS((char *)); +static int find_compopt PARAMS((char *)); + +static int build_actions PARAMS((WORD_LIST *, struct _optflags *, unsigned long *, unsigned long *)); + +static int remove_cmd_completions PARAMS((WORD_LIST *)); + +static int print_one_completion PARAMS((char *, COMPSPEC *)); +static int print_compitem PARAMS((BUCKET_CONTENTS *)); +static void print_compopts PARAMS((const char *, COMPSPEC *, int)); +static void print_all_completions PARAMS((void)); +static int print_cmd_completions PARAMS((WORD_LIST *)); + +static void print_compoptions PARAMS((unsigned long, int)); +static void print_compactions PARAMS((unsigned long)); +static void print_arg PARAMS((const char *, const char *, int)); +static void print_cmd_name PARAMS((const char *)); + +static char *Garg, *Warg, *Parg, *Sarg, *Xarg, *Farg, *Carg; + +static const struct _compacts { + const char * const actname; + unsigned long 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_HELPTOPIC, 0 }, + { "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 const struct _compopt { + const char * const optname; + unsigned long optflag; +} compopts[] = { + { "bashdefault", COPT_BASHDEFAULT }, + { "default", COPT_DEFAULT }, + { "dirnames", COPT_DIRNAMES }, + { "filenames",COPT_FILENAMES}, + { "noquote", COPT_NOQUOTE }, + { "nosort", COPT_NOSORT }, + { "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 + bitmap 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, flagp, actp, optp) + WORD_LIST *list; + struct _optflags *flagp; + unsigned long *actp, *optp; +{ + int opt, ind, opt_given; + unsigned long acts, copts; + WORD_DESC w; + + 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:DEI")) != -1) + { + opt_given = 1; + switch (opt) + { + case 'r': + if (flagp) + { + flagp->rflag = 1; + break; + } + else + { + sh_invalidopt ("-r"); + builtin_usage (); + return (EX_USAGE); + } + + case 'p': + if (flagp) + { + flagp->pflag = 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 'D': + if (flagp) + { + flagp->Dflag = 1; + break; + } + else + { + sh_invalidopt ("-D"); + builtin_usage (); + return (EX_USAGE); + } + case 'E': + if (flagp) + { + flagp->Eflag = 1; + break; + } + else + { + sh_invalidopt ("-E"); + builtin_usage (); + return (EX_USAGE); + } + case 'I': + if (flagp) + { + flagp->Iflag = 1; + break; + } + else + { + sh_invalidopt ("-I"); + builtin_usage (); + return (EX_USAGE); + } + case 'F': + w.word = Farg = list_optarg; + w.flags = 0; + if (check_identifier (&w, posixly_correct) == 0 || strpbrk (Farg, shell_break_chars) != 0) + { + sh_invalidid (Farg); + return (EX_USAGE); + } + 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; + CASE_HELPOPT; + 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, rval; + unsigned long acts, copts; + COMPSPEC *cs; + struct _optflags oflags; + WORD_LIST *l, *wl; + + if (list == 0) + { + print_all_completions (); + return (EXECUTION_SUCCESS); + } + + opt_given = oflags.pflag = oflags.rflag = 0; + oflags.Dflag = oflags.Eflag = oflags.Iflag = 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, &oflags, &acts, &copts); + if (rval == EX_USAGE) + return (rval); + opt_given = rval != EXECUTION_FAILURE; + + list = loptend; + + if (oflags.Dflag) + wl = make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL); + else if (oflags.Eflag) + wl = make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL); + else if (oflags.Iflag) + wl = make_word_list (make_bare_word (INITIALWORD), (WORD_LIST *)NULL); + else + wl = (WORD_LIST *)NULL; + + /* -p overrides everything else */ + if (oflags.pflag || (list == 0 && opt_given == 0)) + { + if (wl) + { + rval = print_cmd_completions (wl); + dispose_words (wl); + return rval; + } + else if (list == 0) + { + print_all_completions (); + return (EXECUTION_SUCCESS); + } + return (print_cmd_completions (list)); + } + + /* next, -r overrides everything else. */ + if (oflags.rflag) + { + if (wl) + { + rval = remove_cmd_completions (wl); + dispose_words (wl); + return rval; + } + else if (list == 0) + { + progcomp_flush (); + return (EXECUTION_SUCCESS); + } + return (remove_cmd_completions (list)); + } + + if (wl == 0 && 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, l = wl ? wl : list ; l; l = l->next) + { + /* Add CS as the compspec for the specified commands. */ + if (progcomp_insert (l->word->word, cs) == 0) + rval = EXECUTION_FAILURE; + } + + dispose_words (wl); + 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; +} + +static void +print_compoptions (copts, full) + unsigned long copts; + int full; +{ + const struct _compopt *co; + + for (co = compopts; co->optname; co++) + if (copts & co->optflag) + printf ("-o %s ", co->optname); + else if (full) + printf ("+o %s ", co->optname); +} + +static void +print_compactions (acts) + unsigned long acts; +{ + const struct _compacts *ca; + + /* simple flags first */ + for (ca = compacts; ca->actname; ca++) + if (ca->actopt && (acts & ca->actflag)) + printf ("-%c ", ca->actopt); + + /* then the rest of the actions */ + for (ca = compacts; ca->actname; ca++) + if (ca->actopt == 0 && (acts & ca->actflag)) + printf ("-A %s ", ca->actname); +} + +static void +print_arg (arg, flag, quote) + const char *arg, *flag; + int quote; +{ + char *x; + + if (arg) + { + x = quote ? sh_single_quote (arg) : (char *)arg; + printf ("%s %s ", flag, x); + if (x != arg) + free (x); + } +} + +static void +print_cmd_name (cmd) + const char *cmd; +{ + if (STREQ (cmd, DEFAULTCMD)) + printf ("-D"); + else if (STREQ (cmd, EMPTYCMD)) + printf ("-E"); + else if (STREQ (cmd, INITIALWORD)) + printf ("-I"); + else if (*cmd == 0) /* XXX - can this happen? */ + printf ("''"); + else + printf ("%s", cmd); +} + +static int +print_one_completion (cmd, cs) + char *cmd; + COMPSPEC *cs; +{ + printf ("complete "); + + print_compoptions (cs->options, 0); + print_compactions (cs->actions); + + /* now the rest of the arguments */ + + /* arguments that require quoting */ + print_arg (cs->globpat, "-G", 1); + print_arg (cs->words, "-W", 1); + print_arg (cs->prefix, "-P", 1); + print_arg (cs->suffix, "-S", 1); + print_arg (cs->filterpat, "-X", 1); + + print_arg (cs->command, "-C", 1); + + /* simple arguments that don't require quoting */ + print_arg (cs->funcname, "-F", 0); + + print_cmd_name (cmd); + printf ("\n"); + + return (0); +} + +static void +print_compopts (cmd, cs, full) + const char *cmd; + COMPSPEC *cs; + int full; +{ + printf ("compopt "); + + print_compoptions (cs->options, full); + print_cmd_name (cmd); + + printf ("\n"); +} + +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 (sh_chkwrite (ret)); +} + +$BUILTIN compgen +$DEPENDS_ON PROGRAMMABLE_COMPLETION +$FUNCTION compgen_builtin +$SHORT_DOC compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word] +Display 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. + +Exit Status: +Returns success unless an invalid option is supplied or an error occurs. +$END + +int +compgen_builtin (list) + WORD_LIST *list; +{ + int rval; + unsigned long acts, copts; + COMPSPEC *cs; + STRINGLIST *sl; + char *word, **matches; + char *old_line; + int old_ind; + + 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, (struct _optflags *)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; + + /* probably don't have to save these, just being safe */ + old_line = pcomp_line; + old_ind = pcomp_ind; + pcomp_line = (char *)NULL; + pcomp_ind = 0; + sl = gen_compspec_completions (cs, "compgen", word, 0, 0, 0); + pcomp_line = old_line; + pcomp_ind = old_ind; + + /* 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); + strlist_dispose (sl); + 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); +} + +$BUILTIN compopt +$DEPENDS_ON PROGRAMMABLE_COMPLETION +$FUNCTION compopt_builtin +$SHORT_DOC compopt [-o|+o option] [-DEI] [name ...] +Modify or display completion options. + +Modify the completion options for each NAME, or, if no NAMEs are supplied, +the completion currently being executed. If no OPTIONs are given, print +the completion options for each NAME or the current completion specification. + +Options: + -o option Set completion option OPTION for each NAME + -D Change options for the "default" command completion + -E Change options for the "empty" command completion + -I Change options for completion on the initial word + +Using `+o' instead of `-o' turns off the specified option. + +Arguments: + +Each NAME refers to a command for which a completion specification must +have previously been defined using the `complete' builtin. If no NAMEs +are supplied, compopt must be called by a function currently generating +completions, and the options for that currently-executing completion +generator are modified. + +Exit Status: +Returns success unless an invalid option is supplied or NAME does not +have a completion specification defined. +$END + +int +compopt_builtin (list) + WORD_LIST *list; +{ + int opts_on, opts_off, *opts, opt, oind, ret, Dflag, Eflag, Iflag; + WORD_LIST *l, *wl; + COMPSPEC *cs; + + opts_on = opts_off = Eflag = Dflag = Iflag = 0; + ret = EXECUTION_SUCCESS; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "+o:DEI")) != -1) + { + opts = (list_opttype == '-') ? &opts_on : &opts_off; + + switch (opt) + { + case 'o': + oind = find_compopt (list_optarg); + if (oind < 0) + { + sh_invalidoptname (list_optarg); + return (EX_USAGE); + } + *opts |= compopts[oind].optflag; + break; + case 'D': + Dflag = 1; + break; + case 'E': + Eflag = 1; + break; + case 'I': + Iflag = 1; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (Dflag) + wl = make_word_list (make_bare_word (DEFAULTCMD), (WORD_LIST *)NULL); + else if (Eflag) + wl = make_word_list (make_bare_word (EMPTYCMD), (WORD_LIST *)NULL); + else if (Iflag) + wl = make_word_list (make_bare_word (INITIALWORD), (WORD_LIST *)NULL); + else + wl = (WORD_LIST *)NULL; + + if (list == 0 && wl == 0) + { + if (RL_ISSTATE (RL_STATE_COMPLETING) == 0 || pcomp_curcs == 0) + { + builtin_error (_("not currently executing completion function")); + return (EXECUTION_FAILURE); + } + cs = pcomp_curcs; + + if (opts_on == 0 && opts_off == 0) + { + print_compopts (pcomp_curcmd, cs, 1); + return (sh_chkwrite (ret)); + } + + /* Set the compspec options */ + pcomp_set_compspec_options (cs, opts_on, 1); + pcomp_set_compspec_options (cs, opts_off, 0); + + /* And change the readline variables the options control */ + pcomp_set_readline_variables (opts_on, 1); + pcomp_set_readline_variables (opts_off, 0); + + return (ret); + } + + for (l = wl ? wl : list; l; l = l->next) + { + cs = progcomp_search (l->word->word); + if (cs == 0) + { + builtin_error (_("%s: no completion specification"), l->word->word); + ret = EXECUTION_FAILURE; + continue; + } + if (opts_on == 0 && opts_off == 0) + { + print_compopts (l->word->word, cs, 1); + continue; /* XXX -- fill in later */ + } + + /* Set the compspec options */ + pcomp_set_compspec_options (cs, opts_on, 1); + pcomp_set_compspec_options (cs, opts_off, 0); + } + + if (wl) + dispose_words (wl); + + return (ret); +} diff --git a/bash-5.1/builtins_org/declare.def b/bash-5.1/builtins_org/declare.def new file mode 100644 index 0000000..21e4516 --- /dev/null +++ b/bash-5.1/builtins_org/declare.def @@ -0,0 +1,1000 @@ +This file is declare.def, from which is created declare.c. +It implements the builtins "declare" and "local" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES declare.c + +$BUILTIN declare +$FUNCTION declare_builtin +$SHORT_DOC declare [-aAfFgiIlnrtux] [-p] [name[=value] ...] +Set variable values and attributes. + +Declare variables and give them attributes. If no NAMEs are given, +display the attributes and values of all variables. + +Options: + -f restrict action or display to function names and definitions + -F restrict display to function names only (plus line number and + source file when debugging) + -g create global variables when used in a shell function; otherwise + ignored + -I if creating a local variable, inherit the attributes and value + of a variable with the same name at a previous scope + -p display the attributes and value of each NAME + +Options which set attributes: + -a to make NAMEs indexed arrays (if supported) + -A to make NAMEs associative arrays (if supported) + -i to make NAMEs have the `integer' attribute + -l to convert the value of each NAME to lower case on assignment + -n make NAME a reference to the variable named by its value + -r to make NAMEs readonly + -t to make NAMEs have the `trace' attribute + -u to convert the value of each NAME to upper case on assignment + -x to make NAMEs export + +Using `+' instead of `-' turns off the given attribute. + +Variables with the integer attribute have arithmetic evaluation (see +the `let' command) performed when the variable is assigned a value. + +When used in a function, `declare' makes NAMEs local, as with the `local' +command. The `-g' option suppresses this behavior. + +Exit Status: +Returns success unless an invalid option is supplied or a variable +assignment error occurs. +$END + +$BUILTIN typeset +$FUNCTION declare_builtin +$SHORT_DOC typeset [-aAfFgiIlnrtux] [-p] name[=value] ... +Set variable values and attributes. + +A synonym for `declare'. See `help 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 "../flags.h" +#include "common.h" +#include "builtext.h" +#include "bashgetopt.h" + +static SHELL_VAR *declare_find_variable PARAMS((const char *, int, int)); +static int declare_internal PARAMS((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 [option] name[=value] ... +Define local variables. + +Create a local variable called NAME, and give it VALUE. OPTION can +be any option accepted by `declare'. + +Local variables can only be used within a function; they are visible +only to the function where they are defined and its children. + +Exit Status: +Returns success unless an invalid option is supplied, a variable +assignment error occurs, or the shell is not executing a function. +$END +int +local_builtin (list) + register WORD_LIST *list; +{ + /* Catch a straight `local --help' before checking function context */ + if (list && list->word && STREQ (list->word->word, "--help")) + { + builtin_help (); + return (EX_USAGE); + } + + 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 "+acfgilnprtuxAFGI" +#else +# define DECLARE_OPTS "+cfgilnprtuxFGI" +#endif + +static SHELL_VAR * +declare_find_variable (name, mkglobal, chklocal) + const char *name; + int mkglobal, chklocal; +{ + SHELL_VAR *var; + + if (mkglobal == 0) + return (find_variable (name)); + else if (chklocal) + { + var = find_variable (name); + if (var && local_p (var) && var->context == variable_context) + return var; + return (find_global_variable (name)); + } + else + return (find_global_variable (name)); +} + +/* The workhorse function. */ +static int +declare_internal (list, local_var) + register WORD_LIST *list; + int local_var; +{ + int flags_on, flags_off, *flags; + int any_failed, assign_error, pflag, nodefs, opt, onref, offref; + int mkglobal, chklocal, inherit_flag; + char *t, *subscript_start; + SHELL_VAR *var, *refvar, *v; + FUNCTION_DEF *shell_fn; + + flags_on = flags_off = any_failed = assign_error = pflag = nodefs = 0; + mkglobal = chklocal = inherit_flag = 0; + refvar = (SHELL_VAR *)NULL; + reset_internal_getopt (); + while ((opt = internal_getopt (list, DECLARE_OPTS)) != -1) + { + flags = list_opttype == '+' ? &flags_off : &flags_on; + + /* If you add options here, see whether or not they need to be added to + the loop in subst.c:shell_expand_word_list() */ + switch (opt) + { + case 'a': +#if defined (ARRAY_VARS) + *flags |= att_array; + break; +#else + builtin_usage (); + return (EX_USAGE); +#endif + case 'A': +#if defined (ARRAY_VARS) + *flags |= att_assoc; + break; +#else + builtin_usage (); + return (EX_USAGE); +#endif + case 'p': +/* if (local_var == 0) */ + pflag++; + break; + case 'F': + nodefs++; + *flags |= att_function; + break; + case 'f': + *flags |= att_function; + break; + case 'G': + if (flags == &flags_on) + chklocal = 1; + /*FALLTHROUGH*/ + case 'g': + if (flags == &flags_on) + mkglobal = 1; + break; + case 'i': + *flags |= att_integer; + break; + case 'n': + *flags |= att_nameref; + break; + case 'r': + *flags |= att_readonly; + break; + case 't': + *flags |= att_trace; + break; + case 'x': + *flags |= att_exported; + array_needs_making = 1; + break; +#if defined (CASEMOD_ATTRS) +# if defined (CASEMOD_CAPCASE) + case 'c': + *flags |= att_capcase; + if (flags == &flags_on) + flags_off |= att_uppercase|att_lowercase; + break; +# endif + case 'l': + *flags |= att_lowercase; + if (flags == &flags_on) + flags_off |= att_capcase|att_uppercase; + break; + case 'u': + *flags |= att_uppercase; + if (flags == &flags_on) + flags_off |= att_capcase|att_lowercase; + break; +#endif /* CASEMOD_ATTRS */ + case 'I': + inherit_flag = MKLOC_INHERIT; + break; + CASE_HELPOPT; + 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 -[aAfFirtx] */ + { + /* Show local variables defined at this context level if this is + the `local' builtin. */ + if (local_var) + show_local_var_attributes (0, nodefs); /* XXX - fix up args later */ + else if (pflag && (flags_on == 0 || flags_on == att_function)) + show_all_var_attributes (flags_on == 0, nodefs); + else if (flags_on == 0) + return (set_builtin ((WORD_LIST *)NULL)); + else + set_or_show_attributes ((WORD_LIST *)NULL, flags_on, nodefs); + + return (sh_chkwrite (EXECUTION_SUCCESS)); + } + + if (pflag) /* declare -p [-aAfFirtx] name [name...] */ + { + for (any_failed = 0; list; list = list->next) + { + if (flags_on & att_function) + pflag = show_func_attributes (list->word->word, nodefs); + else if (local_var) + pflag = show_localname_attributes (list->word->word, nodefs); + else + pflag = show_name_attributes (list->word->word, nodefs); + if (pflag) + { + sh_notfound (list->word->word); + any_failed++; + } + } + return (sh_chkwrite (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 [-aAfFirx] name [name ...] */ + { + char *value, *name, *oldname; + int offset, aflags, wflags, created_var, namelen; + int assoc_noexpand; +#if defined (ARRAY_VARS) + int making_array_special, compound_array_assign, simple_array_assign; + int var_exists, array_exists, creating_array, array_subscript_assignment; +#endif + + name = savestring (list->word->word); + wflags = list->word->flags; +#if defined (ARRAY_VARS) + assoc_noexpand = assoc_expand_once && (wflags & W_ASSIGNMENT); +#else + assoc_noexpand = 0; +#endif + offset = assignment (name, assoc_noexpand ? 2 : 0); + aflags = 0; + created_var = 0; + + if (local_var && variable_context && STREQ (name, "-")) + { + var = make_local_variable ("-", 0); + FREE (value_cell (var)); /* just in case */ + value = get_current_options (); + var_setvalue (var, value); + VSETATTR (var, att_invisible); + NEXT_VARIABLE (); + } + + if (offset) /* declare [-aAfFirx] name=value */ + { + name[offset] = '\0'; + value = name + offset + 1; + if (name[offset - 1] == '+') + { + aflags |= ASS_APPEND; + name[offset - 1] = '\0'; + } + } + else + value = ""; + + /* Do some lexical error checking on the LHS and RHS of the assignment + that is specific to nameref variables. */ + if (flags_on & att_nameref) + { +#if defined (ARRAY_VARS) + if (valid_array_reference (name, 0)) + { + builtin_error (_("%s: reference variable cannot be an array"), name); + assign_error++; + NEXT_VARIABLE (); + } + else +#endif + /* disallow self references at global scope, warn at function scope */ + if (check_selfref (name, value, 0)) + { + if (variable_context == 0) + { + builtin_error (_("%s: nameref variable self references not allowed"), name); + assign_error++; + NEXT_VARIABLE (); + } + else + builtin_warning (_("%s: circular name reference"), name); + } +#if 1 + if (value && *value && (aflags & ASS_APPEND) == 0 && valid_nameref_value (value, 1) == 0) + { + builtin_error (_("`%s': invalid variable name for name reference"), value); + assign_error++; + NEXT_VARIABLE (); + } +#endif + } + +restart_new_var_name: +#if defined (ARRAY_VARS) + var_exists = array_exists = creating_array = 0; + compound_array_assign = simple_array_assign = 0; + array_subscript_assignment = 0; + subscript_start = (char *)NULL; + if ((t = strchr (name, '[')) && (flags_on & att_function) == 0) /* ] */ + { + /* If offset != 0 we have already validated any array reference + because assignment() calls skipsubscript() */ + if (offset == 0 && valid_array_reference (name, 0) == 0) + { + sh_invalidid (name); + assign_error++; + NEXT_VARIABLE (); + } + subscript_start = t; + *t = '\0'; + making_array_special = 1; /* XXX - should this check offset? */ + array_subscript_assignment = offset != 0; + } + 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. */ + refvar = (SHELL_VAR *)NULL; + if (variable_context && mkglobal == 0 && ((flags_on & att_function) == 0)) + { + char *newname; + + /* check name for validity here? */ + var = find_variable (name); + if (var == 0) + newname = nameref_transform_name (name, ASS_MKLOCAL); + else if ((flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0) + { + /* Ok, we're following namerefs here, so let's make sure that if + we followed one, it was at the same context (see below for + more details). */ + refvar = find_variable_last_nameref (name, 1); + newname = (refvar && refvar->context != variable_context) ? name : var->name; + refvar = (SHELL_VAR *)NULL; + } + else + newname = name; /* dealing with nameref attribute */ + +#if defined (ARRAY_VARS) + /* Pass 1 as second argument to make_local_{assoc,array}_variable + return an existing {array,assoc} variable to be flagged as an + error below. */ + if (flags_on & att_assoc) + var = make_local_assoc_variable (newname, MKLOC_ARRAYOK|inherit_flag); + else if ((flags_on & att_array) || making_array_special) + var = make_local_array_variable (newname, MKLOC_ASSOCOK|inherit_flag); + else +#endif + if (offset == 0 && (flags_on & att_nameref)) + { + /* First look for refvar at current scope */ + refvar = find_variable_last_nameref (name, 1); + /* VARIABLE_CONTEXT != 0, so we are attempting to create or modify + the attributes for a local variable at the same scope. If we've + used a reference from a previous context to resolve VAR, we + want to throw REFVAR and VAR away and create a new local var. */ + if (refvar && refvar->context != variable_context) + { + refvar = 0; + var = make_local_variable (name, inherit_flag); + } + else if (refvar && refvar->context == variable_context) + var = refvar; + /* Maybe we just want to create a new local variable */ + else if (var == 0 || var->context != variable_context) + var = make_local_variable (name, inherit_flag); + /* otherwise we have a var at the right context */ + } + else + /* XXX - check name for validity here with valid_nameref_value */ + var = make_local_variable ((flags_on & att_nameref) ? name : newname, inherit_flag); /* sets att_invisible for new vars */ + + if (var == 0) + { + any_failed++; + NEXT_VARIABLE (); + } + if (var && nameref_p (var) && readonly_p (var) && nameref_cell (var) && (flags_off & att_nameref)) + { + sh_readonly (name); + 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 (); + } + else if (flags_on & (att_array|att_assoc)) + { + sh_invalidopt ((flags_on & att_array) ? "-a" : "-A"); + 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), FUNC_MULTILINE|FUNC_EXTERNAL); + printf ("%s\n", t); + any_failed = sh_chkwrite (any_failed); + } + } + else /* declare -[fF] -[rx] name [name...] */ + { + VSETATTR (var, flags_on); + flags_off &= ~att_function; /* makes no sense */ + VUNSETATTR (var, flags_off); + } + } + else + any_failed++; + NEXT_VARIABLE (); + } + } + else /* declare -[aAinrx] name [name...] */ + { + /* Non-null if we just created or fetched a local variable. */ +#if 0 + /* This is bash-4.3 code. */ + /* Here's what ksh93 seems to do. If we are modifying an existing + nameref variable, we don't follow the nameref chain past the last + nameref, and we set the nameref variable's value so future + references to that variable will return the value of the variable + we're assigning right now. */ +#else + /* Here's what ksh93 seems to do as of the 2012 version: if we are + using declare -n to modify the value of an existing nameref + variable, don't follow the nameref chain at all and just search + for a nameref at the current context. If we have a nameref, + modify its value (changing which variable it references). */ +#endif + if (var == 0 && (flags_on & att_nameref)) + { + /* See if we are trying to modify an existing nameref variable, + but don't follow the nameref chain. */ + var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name); + if (var && nameref_p (var) == 0) + var = 0; + } + /* However, if we're turning off the nameref attribute on an existing + nameref variable, we first follow the nameref chain to the end, + modify the value of the variable this nameref variable references + if there is an assignment statement argument, + *CHANGING ITS VALUE AS A SIDE EFFECT*, then turn off the nameref + flag *LEAVING THE NAMEREF VARIABLE'S VALUE UNCHANGED* */ + else if (var == 0 && (flags_off & att_nameref)) + { + /* See if we are trying to modify an existing nameref variable */ + refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0); + if (refvar && nameref_p (refvar) == 0) + refvar = 0; + /* If the nameref is readonly but doesn't have a value, ksh93 + allows the nameref attribute to be removed. If it's readonly + and has a value, even if the value doesn't reference an + existing variable, we disallow the modification */ + if (refvar && nameref_cell (refvar) && readonly_p (refvar)) + { + sh_readonly (name); + any_failed++; + NEXT_VARIABLE (); + } + + /* If all we're doing is turning off the nameref attribute, don't + bother with VAR at all, whether it exists or not. Just turn it + off and go on. */ + if (refvar && flags_on == 0 && offset == 0 && (flags_off & ~att_nameref) == 0) + { + VUNSETATTR (refvar, att_nameref); + NEXT_VARIABLE (); + } + + if (refvar) + /* XXX - use declare_find_variable here? */ + var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar)); + } +#if defined (ARRAY_VARS) + /* If we have an array assignment to a nameref, remove the nameref + attribute and go on. */ + else if (var == 0 && offset && array_subscript_assignment) + { + var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name); + if (var && nameref_p (var)) + { + internal_warning (_("%s: removing nameref attribute"), name); + FREE (value_cell (var)); /* XXX - bash-4.3 compat */ + var_setvalue (var, (char *)NULL); + VUNSETATTR (var, att_nameref); + } + } +#endif + + /* See if we are trying to set flags or value (or create) for an + existing nameref that points to a non-existent variable: e.g., + declare -n foo=bar + unset foo # unsets bar + declare -i foo + foo=4+4 + declare -p foo */ + if (var == 0 && (mkglobal || flags_on || flags_off || offset)) + { + refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0); + if (refvar && nameref_p (refvar) == 0) + refvar = 0; + if (refvar) + /* XXX - use declare_find_variable here? */ + var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar)); + if (refvar && var == 0) + { + oldname = name; /* need to free this */ + + namelen = strlen (nameref_cell (refvar)); +#if defined (ARRAY_VARS) + if (subscript_start) + { + *subscript_start = '['; /*]*/ + namelen += strlen (subscript_start); + } +#endif + name = xmalloc (namelen + 2 + strlen (value) + 1); + strcpy (name, nameref_cell (refvar)); +#if defined (ARRAY_VARS) + if (subscript_start) + strcpy (name + strlen (nameref_cell (refvar)), subscript_start); +#endif + /* We are committed to using the new name, so reset */ + if (offset) + { + /* Rebuild assignment and restore offset and value */ + if (aflags & ASS_APPEND) + name[namelen++] = '+'; + name[namelen++] = '='; + if (value && *value) + strcpy (name + namelen, value); + else + name[namelen] = '\0'; + offset = assignment (name, 0); + /* if offset was valid previously, but the substituting + of the nameref value results in an invalid assignment, + throw an invalid identifier error */ + if (offset == 0) + { + free (oldname); + sh_invalidid (name); + assign_error++; + NEXT_VARIABLE (); + } + name[offset] = '\0'; + value = name + namelen; + } + free (oldname); + + /* OK, let's turn off the nameref attribute. + Now everything else applies to VAR. */ + if (flags_off & att_nameref) + VUNSETATTR (refvar, att_nameref); + + goto restart_new_var_name; + /* NOTREACHED */ + } + } + if (var == 0) + var = declare_find_variable (name, mkglobal, chklocal); + +#if defined (ARRAY_VARS) + var_exists = var != 0; + array_exists = var && (array_p (var) || assoc_p (var)); + creating_array = flags_on & (att_array|att_assoc); +#endif + + if (var == 0) + { +#if defined (ARRAY_VARS) + if (flags_on & att_assoc) + { + var = make_new_assoc_variable (name); + if (var && offset == 0) + VSETATTR (var, att_invisible); + } + else if ((flags_on & att_array) || making_array_special) + { + var = make_new_array_variable (name); + if (var && offset == 0) + VSETATTR (var, att_invisible); + } + else +#endif + { + var = mkglobal ? bind_global_variable (name, (char *)NULL, ASS_FORCE) : bind_variable (name, (char *)NULL, ASS_FORCE); + if (var && offset == 0) + VSETATTR (var, att_invisible); + } + if (var == 0) + { + /* Has to appear in brackets */ + NEXT_VARIABLE (); + } + created_var = 1; + } + /* Can't take an existing array variable and make it a nameref */ + else if ((array_p (var) || assoc_p (var)) && (flags_on & att_nameref)) + { + builtin_error (_("%s: reference variable cannot be an array"), name); + assign_error++; + NEXT_VARIABLE (); + } + else if (nameref_p (var) && (flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0 && offset && valid_nameref_value (value, 1) == 0) + { + builtin_error (_("`%s': invalid variable name for name reference"), value); + any_failed++; + NEXT_VARIABLE (); + } + else if (flags_on & att_nameref) + { +#if 1 + /* Check of offset is to allow an assignment to a nameref var as + part of the declare word to override existing value */ + if (nameref_p (var) == 0 && var_isset (var) && offset == 0 && valid_nameref_value (value_cell (var), 0) == 0) + { + builtin_error (_("`%s': invalid variable name for name reference"), value_cell (var)); + any_failed++; + NEXT_VARIABLE (); + } +#endif + if (readonly_p (var)) + { + sh_readonly (name); + any_failed++; + NEXT_VARIABLE (); + } + /* ksh93 compat: turning on nameref attribute turns off -ilu */ + VUNSETATTR (var, att_integer|att_uppercase|att_lowercase|att_capcase); + } + + /* Cannot use declare +r to turn off readonly attribute. */ + if (readonly_p (var) && (flags_off & att_readonly)) + { + sh_readonly (name_cell (var)); + 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) + /* make declare a[2]=foo as similar to a[2]=foo as possible if + a is already an array or assoc variable. */ + if (array_subscript_assignment && array_exists && creating_array == 0) + simple_array_assign = 1; + else if ((making_array_special || creating_array || array_exists) && offset) + { + int vlen; + vlen = STRLEN (value); +/*itrace("declare_builtin: name = %s value = %s flags = %d", name, value, wflags);*/ + if (shell_compatibility_level > 43 && (wflags & W_COMPASSIGN) == 0 && + value[0] == '(' && value[vlen-1] == ')') + { + /* The warning is only printed when using compound assignment + to an array variable that doesn't already exist. We use + creating_array to allow things like + declare -a foo$bar='(abc)' to work. */ + if (array_exists == 0 && creating_array == 0) + internal_warning (_("%s: quoted compound array assignment deprecated"), list->word->word); + compound_array_assign = array_exists || creating_array; + simple_array_assign = making_array_special; + } + else if (value[0] == '(' && value[vlen-1] == ')' && (shell_compatibility_level < 44 || (wflags & W_COMPASSIGN))) + compound_array_assign = 1; + else + simple_array_assign = 1; + } + + /* Cannot use declare +a name or declare +A name to remove an + array variable. */ + if (((flags_off & att_array) && array_p (var)) || ((flags_off & att_assoc) && assoc_p (var))) + { + builtin_error (_("%s: cannot destroy array variables in this way"), name); + any_failed++; + NEXT_VARIABLE (); + } + + if ((flags_on & att_array) && assoc_p (var)) + { + builtin_error (_("%s: cannot convert associative to indexed array"), name); + any_failed++; + NEXT_VARIABLE (); + } + if ((flags_on & att_assoc) && array_p (var)) + { + builtin_error (_("%s: cannot convert indexed to associative array"), name); + any_failed++; + NEXT_VARIABLE (); + } + + /* declare -A name[[n]] makes name an associative array variable. */ + if (flags_on & att_assoc) + { + if (assoc_p (var) == 0) + var = convert_var_to_assoc (var); + } + /* declare -a name[[n]] or declare name[n] makes name an indexed + array variable. */ + else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0 && assoc_p (var) == 0) + var = convert_var_to_array (var); +#endif /* ARRAY_VARS */ + + /* XXX - we note that we are turning on nameref attribute and defer + setting it until the assignment has been made so we don't do an + inadvertent nameref lookup. Might have to do the same thing for + flags_off&att_nameref. */ + /* XXX - ksh93 makes it an error to set a readonly nameref variable + using a single typeset command. */ + onref = (flags_on & att_nameref); + flags_on &= ~att_nameref; +#if defined (ARRAY_VARS) + if (array_p (var) || assoc_p (var) + || (offset && compound_array_assign) + || simple_array_assign) + onref = 0; /* array variables may not be namerefs */ +#endif + + /* ksh93 seems to do this */ + offref = (flags_off & att_nameref); + flags_off &= ~att_nameref; + + VSETATTR (var, flags_on); + VUNSETATTR (var, flags_off); + +#if defined (ARRAY_VARS) + if (offset && compound_array_assign) + assign_array_var_from_string (var, value, aflags|ASS_FORCE); + else if (simple_array_assign && subscript_start) + { + int local_aflags; + /* declare [-aA] name[N]=value */ + *subscript_start = '['; /* ] */ + /* XXX - problem here with appending */ + local_aflags = aflags&ASS_APPEND; + local_aflags |= assoc_noexpand ? ASS_NOEXPAND : 0; + var = assign_array_element (name, value, local_aflags); /* XXX - not aflags */ + *subscript_start = '\0'; + if (var == 0) /* some kind of assignment error */ + { + assign_error++; + flags_on |= onref; + flags_off |= offref; + NEXT_VARIABLE (); + } + } + else if (simple_array_assign) + { + /* let bind_{array,assoc}_variable take care of this. */ + if (assoc_p (var)) + bind_assoc_variable (var, name, savestring ("0"), value, aflags|ASS_FORCE); + else + bind_array_variable (name, 0, value, aflags|ASS_FORCE); + } + else +#endif + /* XXX - no ASS_FORCE here */ + /* bind_variable_value duplicates the essential internals of + bind_variable() */ + if (offset) + { + if (onref || nameref_p (var)) + aflags |= ASS_NAMEREF; + v = bind_variable_value (var, value, aflags); + if (v == 0 && (onref || nameref_p (var))) + { + if (valid_nameref_value (value, 1) == 0) + sh_invalidid (value); + assign_error++; + /* XXX - unset this variable? or leave it as normal var? */ + if (created_var) + delete_var (var->name, mkglobal ? global_variables : shell_variables); + flags_on |= onref; /* undo change from above */ + flags_off |= offref; + NEXT_VARIABLE (); + } + } + + /* 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); + if (tv) + { + tv->attributes |= var->attributes & ~att_tempvar; + if (tv->context > 0) + VSETATTR (tv, att_propagate); + } + free (tvalue); + } + VSETATTR (var, att_propagate); + } + } + + /* Turn on nameref attribute we deferred above. */ + /* XXX - should we turn on the noassign attribute for consistency with + ksh93 when we turn on the nameref attribute? */ + VSETATTR (var, onref); + flags_on |= onref; + VUNSETATTR (var, offref); + flags_off |= offref; + /* Yuck. ksh93 compatibility. XXX - need to investigate more but + definitely happens when turning off nameref attribute on nameref + (see comments above). Under no circumstances allow this to turn + off readonly attribute on readonly nameref variable. */ + if (refvar) + { + if (flags_off & att_readonly) + flags_off &= ~att_readonly; + VUNSETATTR (refvar, flags_off); + } + + stupidly_hack_special_variables (name); + + NEXT_VARIABLE (); + } + + return (assign_error ? EX_BADASSIGN + : ((any_failed == 0) ? EXECUTION_SUCCESS + : EXECUTION_FAILURE)); +} diff --git a/bash-5.1/builtins_org/echo.def b/bash-5.1/builtins_org/echo.def new file mode 100644 index 0000000..4e2243d --- /dev/null +++ b/bash-5.1/builtins_org/echo.def @@ -0,0 +1,202 @@ +This file is echo.def, from which is created echo.c. +It implements the builtin "echo" in Bash. + +Copyright (C) 1987-2018 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES echo.c +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashansi.h" + +#include +#include "../shell.h" + +#include "common.h" + +$BUILTIN echo +$FUNCTION echo_builtin +$DEPENDS_ON V9_ECHO +$SHORT_DOC echo [-neE] [arg ...] +Write arguments to the standard output. + +Display the ARGs, separated by a single space character and followed by a +newline, on the standard output. + +Options: + -n do not append a newline + -e enable interpretation of the following backslash escapes + -E explicitly suppress interpretation of backslash escapes + +`echo' interprets the following backslash-escaped characters: + \a alert (bell) + \b backspace + \c suppress further output + \e escape character + \E escape character + \f form feed + \n new line + \r carriage return + \t horizontal tab + \v vertical tab + \\ backslash + \0nnn the character whose ASCII code is NNN (octal). NNN can be + 0 to 3 octal digits + \xHH the eight-bit character whose value is HH (hexadecimal). HH + can be one or two hex digits + \uHHHH the Unicode character whose value is the hexadecimal value HHHH. + HHHH can be one to four hex digits. + \UHHHHHHHH the Unicode character whose value is the hexadecimal value + HHHHHHHH. HHHHHHHH can be one to eight hex digits. + +Exit Status: +Returns success unless a write error occurs. +$END + +$BUILTIN echo +$FUNCTION echo_builtin +$DEPENDS_ON !V9_ECHO +$SHORT_DOC echo [-n] [arg ...] +Write arguments to the standard output. + +Display the ARGs on the standard output followed by a newline. + +Options: + -n do not append a newline + +Exit Status: +Returns success unless a write error occurs. +$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 */ + +/* 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 + } + QUIT; + if (do_v9 && temp) + free (temp); + list = list->next; + if (i) + { + display_return = 0; + break; + } + if (list) + putchar(' '); + QUIT; + } + + if (display_return) + putchar ('\n'); + + return (sh_chkwrite (EXECUTION_SUCCESS)); +} diff --git a/bash-5.1/builtins_org/enable.def b/bash-5.1/builtins_org/enable.def new file mode 100644 index 0000000..9d9010b --- /dev/null +++ b/bash-5.1/builtins_org/enable.def @@ -0,0 +1,552 @@ +This file is enable.def, from which is created enable.c. +It implements the builtin "enable" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES enable.c + +$BUILTIN enable +$FUNCTION enable_builtin +$SHORT_DOC enable [-a] [-dnps] [-f filename] [name ...] +Enable and disable shell builtins. + +Enables and disables builtin shell commands. Disabling allows you to +execute a disk command which has the same name as a shell builtin +without using a full pathname. + +Options: + -a print a list of builtins showing whether or not each is enabled + -n disable each NAME or display a list of disabled builtins + -p print the list of builtins in a reusable format + -s print only the names of Posix `special' builtins + +Options controlling dynamic loading: + -f Load builtin NAME from shared object FILENAME + -d Remove a builtin loaded with -f + +Without options, each NAME is enabled. + +To use the `test' found in $PATH instead of the shell builtin +version, type `enable -n test'. + +Exit Status: +Returns success unless NAME is not a shell builtin or an error occurs. +$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" +#include "findcmd.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 PARAMS((WORD_LIST *, int, char *)); +#endif + +#if defined (HAVE_DLCLOSE) +static int dyn_unload_builtin PARAMS((char *)); +static void delete_builtin PARAMS((struct builtin *)); +static int local_dlclose PARAMS((void *)); +#endif + +#define STRUCT_SUFFIX "_struct" +/* for now */ +#define LOAD_SUFFIX "_builtin_load" +#define UNLOAD_SUFFIX "_builtin_unload" + +static void list_some_builtins PARAMS((int)); +static int enable_shell_command PARAMS((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 */ + CASE_HELPOPT; + 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, r; + char *struct_name, *name, *funcname; + sh_load_func_t *loadfunc; + struct builtin **new_builtins, *b, *new_shell_builtins, *old_builtin; + char *loadables_path, *load_path; + + if (list == 0) + return (EXECUTION_FAILURE); + +#ifndef RTLD_LAZY +#define RTLD_LAZY 1 +#endif + + handle = 0; + if (absolute_program (filename) == 0) + { + loadables_path = get_string_value ("BASH_LOADABLES_PATH"); + if (loadables_path) + { + load_path = find_in_path (filename, loadables_path, FS_NODIRS|FS_EXEC_PREFERRED); + if (load_path) + { +#if defined (_AIX) + handle = dlopen (load_path, RTLD_NOW|RTLD_GLOBAL); +#else + handle = dlopen (load_path, RTLD_LAZY); +#endif /* !_AIX */ + free (load_path); + } + } + } + + /* Fall back to current directory for now */ + if (handle == 0) +#if defined (_AIX) + handle = dlopen (filename, RTLD_NOW|RTLD_GLOBAL); +#else + handle = dlopen (filename, RTLD_LAZY); +#endif /* !_AIX */ + + if (handle == 0) + { + name = printable_filename (filename, 0); + builtin_error (_("cannot open shared object %s: %s"), name, dlerror ()); + if (name != filename) + free (name); + 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_SUFFIX); + + old_builtin = builtin_address_internal (name, 1); + + b = (struct builtin *)dlsym (handle, struct_name); + if (b == 0) + { + name = printable_filename (filename, 0); + builtin_error (_("cannot find %s in shared object %s: %s"), + struct_name, name, dlerror ()); + if (name != filename) + free (name); + free (struct_name); + continue; + } + + funcname = xrealloc (struct_name, size + sizeof (LOAD_SUFFIX) + 1); + strcpy (funcname, name); + strcpy (funcname + size, LOAD_SUFFIX); + + loadfunc = (sh_load_func_t *)dlsym (handle, funcname); + if (loadfunc) + { + /* Add warning if running an init function more than once */ + if (old_builtin && (old_builtin->flags & STATIC_BUILTIN) == 0) + builtin_warning (_("%s: dynamic builtin already loaded"), name); + r = (*loadfunc) (name); + if (r == 0) + { + builtin_error (_("load function for %s returns failure (%d): not loaded"), name, r); + free (funcname); + continue; + } + } + free (funcname); + + b->flags &= ~STATIC_BUILTIN; + if (flags & SPECIAL) + b->flags |= SPECIAL_BUILTIN; + b->handle = handle; + + if (old_builtin) + { + 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; + char *funcname; + sh_unload_func_t *unloadfunc; + int ref, i, size; + + 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++; + } + + /* Call any unload function */ + size = strlen (name); + funcname = xmalloc (size + sizeof (UNLOAD_SUFFIX) + 1); + strcpy (funcname, name); + strcpy (funcname + size, UNLOAD_SUFFIX); + + unloadfunc = (sh_unload_func_t *)dlsym (handle, funcname); + if (unloadfunc) + (*unloadfunc) (name); /* void function */ + free (funcname); + + /* 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-5.1/builtins_org/eval.def b/bash-5.1/builtins_org/eval.def new file mode 100644 index 0000000..a92b538 --- /dev/null +++ b/bash-5.1/builtins_org/eval.def @@ -0,0 +1,57 @@ +This file is eval.def, from which is created eval.c. +It implements the builtin "eval" in Bash. + +Copyright (C) 1987-2016 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES eval.c + +$BUILTIN eval +$FUNCTION eval_builtin +$SHORT_DOC eval [arg ...] +Execute arguments as a shell command. + +Combine ARGs into a single string, use the result as input to the shell, +and execute the resulting commands. + +Exit Status: +Returns exit status of command or success if command is null. +$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 `--' */ + + return (list ? evalstring (string_list (list), "eval", SEVAL_NOHIST) : EXECUTION_SUCCESS); +} diff --git a/bash-5.1/builtins_org/evalfile.c b/bash-5.1/builtins_org/evalfile.c new file mode 100644 index 0000000..fc3975e --- /dev/null +++ b/bash-5.1/builtins_org/evalfile.c @@ -0,0 +1,384 @@ +/* evalfile.c - read and evaluate commands from a file or file descriptor */ + +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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 "../parser.h" +#include "../jobs.h" +#include "../builtins.h" +#include "../flags.h" +#include "../input.h" +#include "../execute_cmd.h" +#include "../trap.h" + +#include + +#if defined (HISTORY) +# include "../bashhist.h" +#endif + +#include + +#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 + +/* 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, i, nnull; + ssize_t nr; /* return value from read(2) */ + char *string; + struct stat finfo; + size_t file_size; + sh_vmsg_func_t *errfunc; +#if defined (ARRAY_VARS) + SHELL_VAR *funcname_v, *bash_source_v, *bash_lineno_v; + ARRAY *funcname_a, *bash_source_a, *bash_lineno_a; + struct func_array_state *fa; +# 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)) + { + i = errno; + if (fd >= 0) + close (fd); + errno = i; + +file_error_and_exit: + if (((flags & FEVAL_ENOENTOK) == 0) || errno != ENOENT) + file_error (filename); + + if (flags & FEVAL_LONGJMP) + { + last_command_exit_value = EXECUTION_FAILURE; + jump_to_top_level (EXITPROG); + } + + return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE + : ((errno == ENOENT && (flags & FEVAL_ENOENTOK) != 0) ? 0 : -1)); + } + + errfunc = ((flags & FEVAL_BUILTIN) ? builtin_error : internal_error); + + if (S_ISDIR (finfo.st_mode)) + { + (*errfunc) (_("%s: is a directory"), filename); + close (fd); + return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); + } + else if ((flags & FEVAL_REGFILE) && S_ISREG (finfo.st_mode) == 0) + { + (*errfunc) (_("%s: not a regular file"), filename); + close (fd); + return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); + } + + 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); + close (fd); + return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1); + } + + if (S_ISREG (finfo.st_mode) && file_size <= SSIZE_MAX) + { + string = (char *)xmalloc (1 + file_size); + nr = read (fd, string, file_size); + if (nr >= 0) + string[nr] = '\0'; + } + else + nr = zmapfd (fd, &string, 0); + + return_val = errno; + close (fd); + errno = return_val; + + if (nr < 0) /* XXX was != file_size, not < 0 */ + { + free (string); + goto file_error_and_exit; + } + + if (nr == 0) + { + free (string); + return ((flags & FEVAL_BUILTIN) ? EXECUTION_SUCCESS : 1); + } + + if ((flags & FEVAL_CHECKBINARY) && + check_binary_file (string, (nr > 80) ? 80 : nr)) + { + free (string); + (*errfunc) (_("%s: cannot execute binary file"), filename); + return ((flags & FEVAL_BUILTIN) ? EX_BINARY_FILE : -1); + } + + i = strlen (string); + if (i < nr) + { + for (nnull = i = 0; i < nr; i++) + if (string[i] == '\0') + { + memmove (string+i, string+i+1, nr - i); + nr--; + /* Even if the `check binary' flag is not set, we want to avoid + sourcing files with more than 256 null characters -- that + probably indicates a binary file. */ + if ((flags & FEVAL_BUILTIN) && ++nnull > 256) + { + 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 */ + + fa = (struct func_array_state *)xmalloc (sizeof (struct func_array_state)); + fa->source_a = bash_source_a; + fa->source_v = bash_source_v; + fa->lineno_a = bash_lineno_a; + fa->lineno_v = bash_lineno_v; + fa->funcname_a = funcname_a; + fa->funcname_v = funcname_v; + if (flags & FEVAL_UNWINDPROT) + add_unwind_protect (restore_funcarray_state, fa); + +# if defined (DEBUGGER) + /* Have to figure out a better way to do this when `source' is supplied + arguments */ + if ((flags & FEVAL_NOPUSHARGS) == 0) + { + if (shell_compatibility_level <= 44) + init_bash_argv (); + array_push (bash_argv_a, (char *)filename); /* XXX - unconditionally? */ + tt[0] = '1'; tt[1] = '\0'; + array_push (bash_argc_a, tt); + if (flags & FEVAL_UNWINDPROT) + add_unwind_protect (pop_args, 0); + } +# 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_nosigs (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 (-1); + 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; +#if defined (ARRAY_VARS) + restore_funcarray_state (fa); +# if defined (DEBUGGER) + if ((flags & FEVAL_NOPUSHARGS) == 0) + { + /* Don't need to call pop_args here until we do something better + when source is passed arguments (see above). */ + array_pop (bash_argc_a); + array_pop (bash_argv_a); + } +# endif +#endif + return_catch_flag--; + sourcelevel--; + COPY_PROCENV (old_return_catch, return_catch); + } + + /* If we end up with EOF after sourcing a file, which can happen when the file + doesn't end with a newline, pretend that it did. */ + if (current_token == yacc_EOF) + push_token ('\n'); /* XXX */ + + 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; +} + +int +force_execute_file (fname, force_noninteractive) + const char *fname; + int force_noninteractive; +{ + char *filename; + int result, flags; + + filename = bash_tilde_expand (fname, 0); + flags = 0; + 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. We use FEVAL_BUILTIN to return + the result of parse_and_execute. */ + flags = FEVAL_ENOENTOK|FEVAL_HISTORY|FEVAL_REGFILE|FEVAL_BUILTIN; + 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 == 0 && executing_command_builtin == 0) + flags |= FEVAL_LONGJMP; + rval = _evalfile (filename, flags); + + run_return_trap (); + return rval; +} diff --git a/bash-5.1/builtins_org/evalstring.c b/bash-5.1/builtins_org/evalstring.c new file mode 100644 index 0000000..18928a1 --- /dev/null +++ b/bash-5.1/builtins_org/evalstring.c @@ -0,0 +1,758 @@ +/* evalstring.c - evaluate a string as one or more shell commands. */ + +/* Copyright (C) 1996-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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 "../parser.h" +#include "../input.h" +#include "../execute_cmd.h" +#include "../redir.h" +#include "../trap.h" +#include "../bashintl.h" + +#include + +#if defined (HISTORY) +# include "../bashhist.h" +#endif + +#include "common.h" +#include "builtext.h" + +#if !defined (errno) +extern int errno; +#endif + +#define IS_BUILTIN(s) (builtin_address_internal(s, 0) != (struct builtin *)NULL) + +int parse_and_execute_level = 0; + +static int cat_file PARAMS((REDIRECT *)); + +#define PE_TAG "parse_and_execute top" +#define PS_TAG "parse_string top" + +#if defined (HISTORY) +static void +set_history_remembering () +{ + remember_on_history = enable_history_list; +} +#endif + +static void +restore_lastcom (x) + char *x; +{ + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = x; +} + +int +should_suppress_fork (command) + COMMAND *command; +{ +#if 0 /* TAG: bash-5.2 */ + int subshell; + + subshell = subshell_environment & SUBSHELL_PROCSUB; /* salt to taste */ +#endif + return (startup_state == 2 && parse_and_execute_level == 1 && + running_trap == 0 && + *bash_input.location.string == '\0' && + parser_expanding_alias () == 0 && + command->type == cm_simple && + signal_is_trapped (EXIT_TRAP) == 0 && + signal_is_trapped (ERROR_TRAP) == 0 && + any_signals_trapped () < 0 && +#if 0 /* TAG: bash-5.2 */ + (subshell || (command->redirects == 0 && command->value.Simple->redirects == 0)) && +#else + command->redirects == 0 && command->value.Simple->redirects == 0 && +#endif + ((command->flags & CMD_TIME_PIPELINE) == 0) && + ((command->flags & CMD_INVERT_RETURN) == 0)); +} + +int +can_optimize_connection (command) + COMMAND *command; +{ + return (*bash_input.location.string == '\0' && + parser_expanding_alias () == 0 && + (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') && + command->value.Connection->second->type == cm_simple); +} + +void +optimize_fork (command) + COMMAND *command; +{ + if (command->type == cm_connection && + (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') && + (command->value.Connection->second->flags & CMD_TRY_OPTIMIZING) && + should_suppress_fork (command->value.Connection->second)) + { + command->value.Connection->second->flags |= CMD_NO_FORK; + command->value.Connection->second->value.Simple->flags |= CMD_NO_FORK; + } +} + +void +optimize_subshell_command (command) + COMMAND *command; +{ + if (running_trap == 0 && + command->type == cm_simple && + signal_is_trapped (EXIT_TRAP) == 0 && + signal_is_trapped (ERROR_TRAP) == 0 && + any_signals_trapped () < 0 && + command->redirects == 0 && command->value.Simple->redirects == 0 && + ((command->flags & CMD_TIME_PIPELINE) == 0) && + ((command->flags & CMD_INVERT_RETURN) == 0)) + { + command->flags |= CMD_NO_FORK; + command->value.Simple->flags |= CMD_NO_FORK; + } + else if (command->type == cm_connection && + (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR)) + optimize_subshell_command (command->value.Connection->second); +} + +void +optimize_shell_function (command) + COMMAND *command; +{ + COMMAND *fc; + + fc = (command->type == cm_group) ? command->value.Group->command : command; + + if (fc->type == cm_simple && should_suppress_fork (fc)) + { + fc->flags |= CMD_NO_FORK; + fc->value.Simple->flags |= CMD_NO_FORK; + } + else if (fc->type == cm_connection && can_optimize_connection (fc) && should_suppress_fork (fc->value.Connection->second)) + { + fc->value.Connection->second->flags |= CMD_NO_FORK; + fc->value.Connection->second->value.Simple->flags |= CMD_NO_FORK; + } +} + +/* How to force parse_and_execute () to clean up after itself. */ +void +parse_and_execute_cleanup (old_running_trap) + int old_running_trap; +{ + if (running_trap > 0) + { + /* We assume if we have a different value for running_trap than when + we started (the only caller that cares is evalstring()), the + original caller will perform the cleanup, and we should not step + on them. */ + if (running_trap != old_running_trap) + run_trap_cleanup (running_trap - 1); + unfreeze_jobs_list (); + } + + if (have_unwind_protects ()) + run_unwind_frame (PE_TAG); + else + parse_and_execute_level = 0; /* XXX */ +} + +static void +parse_prologue (string, flags, tag) + char *string; + int flags; + char *tag; +{ + char *orig_string, *lastcom; + int x; + + orig_string = string; + /* Unwind protect this invocation of parse_and_execute (). */ + begin_unwind_frame (tag); + 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 (line_number_for_err_trap); + unwind_protect_int (loop_level); + unwind_protect_int (executing_list); + unwind_protect_int (comsub_ignore_return); + if (flags & (SEVAL_NONINT|SEVAL_INTERACT)) + unwind_protect_int (interactive); + +#if defined (HISTORY) + if (parse_and_execute_level == 0) + add_unwind_protect (set_history_remembering, (char *)NULL); + else + unwind_protect_int (remember_on_history); /* can be used in scripts */ +# if defined (BANG_HISTORY) + 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); + } + + if (the_printed_command_except_trap) + { + lastcom = savestring (the_printed_command_except_trap); + add_unwind_protect (restore_lastcom, lastcom); + } + + add_unwind_protect (pop_stream, (char *)NULL); + if (parser_expanding_alias ()) + add_unwind_protect (parser_restore_alias, (char *)NULL); + + if (orig_string && ((flags & SEVAL_NOFREE) == 0)) + add_unwind_protect (xfree, orig_string); + end_unwind_frame (); + + if (flags & (SEVAL_NONINT|SEVAL_INTERACT)) + interactive = (flags & SEVAL_NONINT) ? 0 : 1; + +#if defined (HISTORY) + if (flags & SEVAL_NOHIST) + bash_history_disable (); +# if defined (BANG_HISTORY) + if (flags & SEVAL_NOHISTEXP) + history_expansion_inhibited = 1; +# endif /* BANG_HISTORY */ +#endif /* HISTORY */ +} + +/* 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 + (flags & SEVAL_NOHISTEXP) -> history_expansion_inhibited -> 1 +*/ + +int +parse_and_execute (string, from_file, flags) + char *string; + const char *from_file; + int flags; +{ + int code, lreset; + volatile int should_jump_to_top_level, last_result; + COMMAND *volatile command; + volatile sigset_t pe_sigmask; + + parse_prologue (string, flags, PE_TAG); + + parse_and_execute_level++; + + lreset = flags & SEVAL_RESETLINE; + +#if defined (HAVE_POSIX_SIGNALS) + /* If we longjmp and are going to go on, use this to restore signal mask */ + sigemptyset ((sigset_t *)&pe_sigmask); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, (sigset_t *)&pe_sigmask); +#endif + + /* Reset the line number if the caller wants us to. If we don't reset the + line number, we have to subtract one, because we will add one just + before executing the next command (resetting the line number sets it to + 0; the first line number is 1). */ + push_stream (lreset); + if (parser_expanding_alias ()) + /* push current shell_input_line */ + parser_save_alias (); + + if (lreset == 0) + line_number--; + + indirection_level++; + + code = should_jump_to_top_level = 0; + last_result = EXECUTION_SUCCESS; + + /* We need to reset enough of the token state so we can start fresh. */ + if (current_token == yacc_EOF) + current_token = '\n'; /* reset_parser() ? */ + + with_input_from_string (string, from_file); + clear_shell_input_line (); + while (*(bash_input.location.string) || parser_expanding_alias ()) + { + 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_nosigs (top_level); + + if (code) + { + should_jump_to_top_level = 0; + switch (code) + { + case ERREXIT: + /* variable_context -> 0 is what eval.c:reader_loop() does in + these circumstances. Don't bother with cleanup here because + we don't want to run the function execution cleanup stuff + that will cause pop_context and other functions to run. + XXX - change that if we want the function context to be + unwound. */ + if (exit_immediately_on_error && variable_context) + { + discard_unwind_frame ("pe_dispose"); + variable_context = 0; /* not in a function */ + } + should_jump_to_top_level = 1; + goto out; + case FORCE_EOF: + case EXITPROG: + if (command) + run_unwind_frame ("pe_dispose"); + /* 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 */ + set_pipestatus_from_exit (last_command_exit_value); + if (subshell_environment) + { + should_jump_to_top_level = 1; + goto out; + } + else + { +#if 0 + dispose_command (command); /* pe_dispose does this */ +#endif +#if defined (HAVE_POSIX_SIGNALS) + sigprocmask (SIG_SETMASK, (sigset_t *)&pe_sigmask, (sigset_t *)NULL); +#endif + continue; + } + + default: + command_error ("parse_and_execute", CMDERR_BADJUMP, code, 0); + break; + } + } + + if (parse_command () == 0) + { + if ((flags & SEVAL_PARSEONLY) || (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; + + if (flags & SEVAL_FUNCDEF) + { + char *x; + + /* If the command parses to something other than a straight + function definition, or if we have not consumed the entire + string, or if the parser has transformed the function + name (as parsing will if it begins or ends with shell + whitespace, for example), reject the attempt */ + if (command->type != cm_function_def || + ((x = parser_remaining_input ()) && *x) || + (STREQ (from_file, command->value.Function_def->name->word) == 0)) + { + internal_warning (_("%s: ignoring function definition attempt"), from_file); + should_jump_to_top_level = 0; + last_result = last_command_exit_value = EX_BADUSAGE; + set_pipestatus_from_exit (last_command_exit_value); + reset_parser (); + break; + } + } + + 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 ((subshell_environment & SUBSHELL_COMSUB) && comsub_ignore_return) + command->flags |= CMD_IGNORE_RETURN; + +#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're not going to run the exit trap 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 AND + * there aren't any traps in effect + * THEN + * tell the execution code that we don't need to fork + */ + if (should_suppress_fork (command)) + { + command->flags |= CMD_NO_FORK; + command->value.Simple->flags |= CMD_NO_FORK; + } + + /* Can't optimize forks out here execept for simple commands. + This knows that the parser sets up commands as left-side heavy + (&& and || are left-associative) and after the single parse, + if we are at the end of the command string, the last in a + series of connection commands is + command->value.Connection->second. */ + else if (command->type == cm_connection && can_optimize_connection (command)) + { + command->value.Connection->second->flags |= CMD_TRY_OPTIMIZING; + command->value.Connection->second->value.Simple->flags |= CMD_TRY_OPTIMIZING; + } +#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 && + command->value.Simple->redirects->redirector.dest == 0) + { + 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"); + + if (flags & SEVAL_ONECMD) + { + reset_parser (); + break; + } + } + } + else + { + last_result = EX_BADUSAGE; /* was EXECUTION_FAILURE */ + + if (interactive_shell == 0 && this_shell_builtin && + (this_shell_builtin == source_builtin || this_shell_builtin == eval_builtin) && + last_command_exit_value == EX_BADSYNTAX && posixly_correct && executing_command_builtin == 0) + { + should_jump_to_top_level = 1; + code = ERREXIT; + last_command_exit_value = EX_BADUSAGE; + } + + /* Since we are shell compatible, syntax errors in a script + abort the execution of the script. Right? */ + break; + } + } + + out: + + run_unwind_frame (PE_TAG); + + 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); +} + +/* Parse a command contained in STRING according to FLAGS and return the + number of characters consumed from the string. If non-NULL, set *ENDP + to the position in the string where the parse ended. Used to validate + command substitutions during parsing to obey Posix rules about finding + the end of the command and balancing parens. */ +int +parse_string (string, from_file, flags, endp) + char *string; + const char *from_file; + int flags; + char **endp; +{ + int code, nc; + volatile int should_jump_to_top_level; + COMMAND *volatile command, *oglobal; + char *ostring; + volatile sigset_t ps_sigmask; + + parse_prologue (string, flags, PS_TAG); + +#if defined (HAVE_POSIX_SIGNALS) + /* If we longjmp and are going to go on, use this to restore signal mask */ + sigemptyset ((sigset_t *)&ps_sigmask); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, (sigset_t *)&ps_sigmask); +#endif + +/*itrace("parse_string: `%s'", string);*/ + /* Reset the line number if the caller wants us to. If we don't reset the + line number, we have to subtract one, because we will add one just + before executing the next command (resetting the line number sets it to + 0; the first line number is 1). */ + push_stream (0); + if (parser_expanding_alias ()) + /* push current shell_input_line */ + parser_save_alias (); + + code = should_jump_to_top_level = 0; + oglobal = global_command; + ostring = string; + + with_input_from_string (string, from_file); + while (*(bash_input.location.string)) /* XXX - parser_expanding_alias () ? */ + { + command = (COMMAND *)NULL; + +#if 0 + if (interrupt_state) + break; +#endif + + /* Provide a location for functions which `longjmp (top_level)' to + jump to. */ + code = setjmp_nosigs (top_level); + + if (code) + { +#if defined (DEBUG) +itrace("parse_string: longjmp executed: code = %d", code); +#endif + should_jump_to_top_level = 0; + switch (code) + { + case FORCE_EOF: + case ERREXIT: + case EXITPROG: + case DISCARD: /* XXX */ + if (command) + dispose_command (command); + /* Remember to call longjmp (top_level) after the old + value for it is restored. */ + should_jump_to_top_level = 1; + goto out; + + default: +#if defined (HAVE_POSIX_SIGNALS) + sigprocmask (SIG_SETMASK, (sigset_t *)&ps_sigmask, (sigset_t *)NULL); +#endif + command_error ("parse_string", CMDERR_BADJUMP, code, 0); + break; + } + } + + if (parse_command () == 0) + { + dispose_command (global_command); + global_command = (COMMAND *)NULL; + } + else + { + if ((flags & SEVAL_NOLONGJMP) == 0) + { + should_jump_to_top_level = 1; + code = DISCARD; + } + else + reset_parser (); /* XXX - sets token_to_read */ + break; + } + + if (current_token == yacc_EOF || current_token == shell_eof_token) + break; + } + +out: + + global_command = oglobal; + nc = bash_input.location.string - ostring; + if (endp) + *endp = bash_input.location.string; + + run_unwind_frame (PS_TAG); + + /* If we return < 0, the caller (xparse_dolparen) will jump_to_top_level for + us, after doing cleanup */ + if (should_jump_to_top_level) + { + if (parse_and_execute_level == 0) + top_level_cleanup (); + if (code == DISCARD) + return -DISCARD; + jump_to_top_level (code); + } + + return (nc); +} + +/* 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 *fn; + int fd, rval; + + 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, fn); + 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); +} + +int +evalstring (string, from_file, flags) + char *string; + const char *from_file; + int flags; +{ + volatile int r, rflag, rcatch; + volatile int was_trap; + + /* Are we running a trap when we execute this function? */ + was_trap = running_trap; + + rcatch = 0; + rflag = return_catch_flag; + /* If we are in a place where `return' is valid, we have to catch + `eval "... return"' and make sure parse_and_execute cleans up. Then + we can trampoline to the previous saved return_catch location. */ + if (rflag) + { + begin_unwind_frame ("evalstring"); + + unwind_protect_int (return_catch_flag); + unwind_protect_jmp_buf (return_catch); + + return_catch_flag++; /* increment so we have a counter */ + rcatch = setjmp_nosigs (return_catch); + } + + if (rcatch) + { + /* We care about whether or not we are running the same trap we were + when we entered this function. */ + parse_and_execute_cleanup (was_trap); + r = return_catch_value; + } + else + /* Note that parse_and_execute () frees the string it is passed. */ + r = parse_and_execute (string, from_file, flags); + + if (rflag) + { + run_unwind_frame ("evalstring"); + if (rcatch && return_catch_flag) + { + return_catch_value = r; + sh_longjmp (return_catch, 1); + } + } + + return (r); +} diff --git a/bash-5.1/builtins_org/exec.def b/bash-5.1/builtins_org/exec.def new file mode 100644 index 0000000..cbcb641 --- /dev/null +++ b/bash-5.1/builtins_org/exec.def @@ -0,0 +1,273 @@ +This file is exec.def, from which is created exec.c. +It implements the builtin "exec" in Bash. + +Copyright (C) 1987-2019 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES exec.c + +$BUILTIN exec +$FUNCTION exec_builtin +$SHORT_DOC exec [-cl] [-a name] [command [argument ...]] [redirection ...] +Replace the shell with the given command. + +Execute COMMAND, replacing this shell with the specified program. +ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified, +any redirections take effect in the current shell. + +Options: + -a name pass NAME as the zeroth argument to COMMAND + -c execute COMMAND with an empty environment + -l place a dash in the zeroth argument to COMMAND + +If the command cannot be executed, a non-interactive shell exits, unless +the shell option `execfail' is set. + +Exit Status: +Returns success unless COMMAND is not found or a redirection error occurs. +$END + +#include + +#include "../bashtypes.h" +#include "posixstat.h" +#include +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#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" +#include "input.h" + +/* Not all systems declare ERRNO in errno.h... and some systems #define it! */ +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +extern REDIRECT *redirection_undo_list; +extern char *exec_argv0; + +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, orig_job_control; + char *argv0, *command, **args, **env, *newname, *com2; + + cleanenv = login = 0; + exec_argv0 = 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; + CASE_HELPOPT; + 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); + env = (char **)0; + + /* 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], 1); + + if (command == 0) + { + if (file_isdir (args[0])) + { +#if defined (EISDIR) + builtin_error (_("%s: cannot execute: %s"), args[0], strerror (EISDIR)); +#else + builtin_error (_("%s: cannot execute: %s"), args[0], strerror (errno)); +#endif + exit_value = EX_NOEXEC; + } + else + { + 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); + exec_argv0 = savestring (args[0]); + } + 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 we've already forked + and are in a subshell, we don't want to decrement the shell level, + since we are `increasing' the level */ + + if (cleanenv == 0 && (subshell_environment & SUBSHELL_PAREN) == 0) + adjust_shell_level (-1); + + if (cleanenv) + { + env = strvec_create (1); + env[0] = (char *)0; + } + 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) + orig_job_control = job_control; /* XXX - was also interactive_shell */ + if (subshell_environment == 0) + end_job_control (); + if (interactive || job_control) + default_tty_job_signals (); /* undo initialize_job_signals */ +#endif /* JOB_CONTROL */ + +#if defined (BUFFERED_INPUT) + if (default_buffered_input >= 0) + sync_buffered_stream (default_buffered_input); +#endif + + exit_value = 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 (exit_value == EX_NOTFOUND) /* no duplicate error message */ + goto failed_exec; + else 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); + + if (env && env != export_env) + strvec_dispose (env); + + initialize_traps (); + initialize_signals (1); + +#if defined (JOB_CONTROL) + if (orig_job_control) + restart_job_control (); +#endif /* JOB_CONTROL */ + + return (exit_value); +} diff --git a/bash-5.1/builtins_org/exit.def b/bash-5.1/builtins_org/exit.def new file mode 100644 index 0000000..dc6f3d5 --- /dev/null +++ b/bash-5.1/builtins_org/exit.def @@ -0,0 +1,169 @@ +This file is exit.def, from which is created exit.c. +It implements the builtins "exit", and "logout" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES exit.c + +$BUILTIN exit +$FUNCTION exit_builtin +$SHORT_DOC exit [n] +Exit the shell. + +Exits 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 "../execute_cmd.h" +#include "../jobs.h" +#include "../trap.h" + +#include "common.h" +#include "builtext.h" /* for jobs_builtin */ + +extern int check_jobs_at_exit; + +static int exit_or_logout PARAMS((WORD_LIST *)); +static int sourced_logout; + +int +exit_builtin (list) + WORD_LIST *list; +{ + CHECK_HELPOPT (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 [n] +Exit a login shell. + +Exits a login shell with exit status N. Returns an error if not executed +in a login shell. +$END + +/* How to logout. */ +int +logout_builtin (list) + WORD_LIST *list; +{ + CHECK_HELPOPT (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, stopmsg; + + 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 == 0) + { + register int i; + for (i = stopmsg = 0; i < js.j_jobslots; i++) + if (jobs[i] && STOPPED (i)) + stopmsg = JSTOPPED; + else if (check_jobs_at_exit && stopmsg == 0 && jobs[i] && RUNNING (i)) + stopmsg = JRUNNING; + + if (stopmsg == JSTOPPED) + fprintf (stderr, _("There are stopped jobs.\n")); + else if (stopmsg == JRUNNING) + fprintf (stderr, _("There are running jobs.\n")); + + if (stopmsg && check_jobs_at_exit) + list_all_jobs (JLIST_STANDARD); + + if (stopmsg) + { + /* This is NOT superfluous because EOF can get here without + going through the command parser. Set both last and this + so that either `exit', `logout', or ^D will work to exit + immediately if nothing intervenes. */ + this_shell_builtin = last_shell_builtin = exit_builtin; + return (EXECUTION_FAILURE); + } + } +#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-5.1/builtins_org/fc.def b/bash-5.1/builtins_org/fc.def new file mode 100644 index 0000000..467dbcb --- /dev/null +++ b/bash-5.1/builtins_org/fc.def @@ -0,0 +1,782 @@ +This file is fc.def, from which is created fc.c. +It implements the builtin "fc" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES fc.c + +$BUILTIN fc +$FUNCTION fc_builtin +$DEPENDS_ON HISTORY +$SHORT_DOC fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command] +Display or execute commands from the history list. + +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. + +Options: + -e ENAME select which editor to use. Default is FCEDIT, then EDITOR, + then vi + -l list lines instead of editing + -n omit line numbers when listing + -r reverse the order of the lines (newest listed first) + +With the `fc -s [pat=rep ...] [command]' format, 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. + +Exit Status: +Returns success or status of executed command; non-zero if an error occurs. +$END + +#include + +#if defined (HISTORY) +#if defined (HAVE_SYS_PARAM_H) +# 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 "../parser.h" +#include "../bashhist.h" +#include "maxpath.h" +#include +#include "bashgetopt.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#define HIST_INVALID INT_MIN +#define HIST_ERANGE INT_MIN+1 +#define HIST_NOTFOUND INT_MIN+2 + +/* Values for the flags argument to fc_gethnum */ +#define HN_LISTING 0x01 +#define HN_FIRST 0x02 + +extern int unlink PARAMS((const char *)); + +extern FILE *sh_mktmpfp PARAMS((char *, int, char **)); + +extern int suppress_debug_trap_verbose; + +/* **************************************************************** */ +/* */ +/* 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 PARAMS((char *, REPL *)); +static char *fc_gethist PARAMS((char *, HIST_ENTRY **, int)); +static int fc_gethnum PARAMS((char *, HIST_ENTRY **, int)); +static int fc_number PARAMS((WORD_LIST *)); +static void fc_replhist PARAMS((char *)); +#ifdef INCLUDE_UNUSED +static char *fc_readline PARAMS((FILE *)); +static void fc_addhist PARAMS((char *)); +#endif + +static void +set_verbose_flag () +{ + echo_input_at_read = verbose_flag; +} + +/* 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, rh, real_last; + 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 = HN_LISTING; /* for fc_gethnum */ + break; + + case 'r': + reverse = 1; + break; + + case 's': + execute = 1; + break; + + case 'e': + ename = list_optarg; + break; + + CASE_HELPOPT; + 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, 0); + + 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 */ + /* Posix says that the re-executed commands should be entered into the + history. */ + 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. */ + + /* Even though command substitution through parse_and_execute turns off + remember_on_history, command substitution in a shell when set -o history + has been enabled (interactive or not) should use it in the last_hist + calculation as if it were on. */ + rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list); + last_hist = i - rh - hist_last_line_added; + + /* Make sure that real_last is calculated the same way here and in + fc_gethnum. The return value from fc_gethnum is treated specially if + it is == real_last and we are listing commands. */ + real_last = i; + /* back up from the end to the last non-null history entry */ + while (hlist[real_last] == 0 && real_last > 0) + real_last--; + + /* XXX */ + if (i == last_hist && hlist[last_hist] == 0) + while (last_hist >= 0 && hlist[last_hist] == 0) + last_hist--; + if (last_hist < 0) + last_hist = 0; /* per POSIX */ + + if (list) + { + histbeg = fc_gethnum (list->word->word, hlist, listing|HN_FIRST); + list = list->next; + + if (list) + histend = fc_gethnum (list->word->word, hlist, listing); + else if (histbeg == real_last) + histend = listing ? real_last : histbeg; + 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; + } + + if (histbeg == HIST_INVALID || histend == HIST_INVALID) + { + sh_erange ((char *)NULL, _("history specification")); + return (EXECUTION_FAILURE); + } + else if (histbeg == HIST_ERANGE || histend == HIST_ERANGE) + { + sh_erange ((char *)NULL, _("history specification")); + return (EXECUTION_FAILURE); + } + else if (histbeg == HIST_NOTFOUND || histend == HIST_NOTFOUND) + { + builtin_error (_("no command found")); + return (EXECUTION_FAILURE); + } + + /* We don't throw an error for line specifications out of range, per POSIX */ + if (histbeg < 0) + histbeg = 0; + if (histend < 0) + histend = 0; + + /* "When not listing, the fc command that caused the editing shall not be + entered into the history list." */ + if (listing == 0 && hist_last_line_added) + { + bash_delete_last_history (); + /* If we're editing a single command -- the last command in the + history -- and we just removed the dummy command added by + edit_and_execute_command (), we need to check whether or not we + just removed the last command in the history and need to back + the pointer up. remember_on_history is off because we're running + in parse_and_execute(). */ + if (histbeg == histend && histend == last_hist && hlist[last_hist] == 0) + last_hist = histbeg = --histend; + + if (hlist[last_hist] == 0) + last_hist--; + if (histend >= last_hist) + histend = last_hist; + else if (histbeg >= last_hist) + histbeg = last_hist; + } + + if (histbeg == HIST_INVALID || histend == HIST_INVALID) + { + sh_erange ((char *)NULL, _("history specification")); + return (EXECUTION_FAILURE); + } + else if (histbeg == HIST_ERANGE || histend == HIST_ERANGE) + { + sh_erange ((char *)NULL, _("history specification")); + return (EXECUTION_FAILURE); + } + else if (histbeg == HIST_NOTFOUND || histend == HIST_NOTFOUND) + { + builtin_error (_("no command found")); + return (EXECUTION_FAILURE); + } + + /* We don't throw an error for line specifications out of range, per POSIX */ + if (histbeg < 0) + histbeg = 0; + if (histend < 0) + histend = 0; + + 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 (sh_chkwrite (EXECUTION_SUCCESS)); + + fflush (stream); + if (ferror (stream)) + { + sh_wrerror (); + fclose (stream); + FREE (fn); + return (EXECUTION_FAILURE); + } + 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); + } + +#if defined (READLINE) + /* If we're executing as part of a dispatched readline command like + {emacs,vi}_edit_and_execute_command, the readline state will indicate it. + We could remove the partial command from the history, but ksh93 doesn't + so we stay compatible. */ +#endif + + /* 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 (xfree, fn); + add_unwind_protect (unlink, fn); + add_unwind_protect (set_verbose_flag, (char *)NULL); + unwind_protect_int (suppress_debug_trap_verbose); + echo_input_at_read = 1; + suppress_debug_trap_verbose = 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. + MODE includes HN_LISTING if we are listing commands, and does not if we + are executing them. If MODE includes HN_FIRST we are looking for the + first history number specification. */ +static int +fc_gethnum (command, hlist, mode) + char *command; + HIST_ENTRY **hlist; + int mode; +{ + int sign, n, clen, rh; + register int i, j, last_hist, real_last, listing; + register char *s; + + listing = mode & HN_LISTING; + sign = 1; + /* 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. This needs to agree with the + calculation of last_hist in fc_builtin above. */ + /* Even though command substitution through parse_and_execute turns off + remember_on_history, command substitution in a shell when set -o history + has been enabled (interactive or not) should use it in the last_hist + calculation as if it were on. */ + rh = remember_on_history || ((subshell_environment & SUBSHELL_COMSUB) && enable_history_list); + last_hist = i - rh - hist_last_line_added; + + if (i == last_hist && hlist[last_hist] == 0) + while (last_hist >= 0 && hlist[last_hist] == 0) + last_hist--; + if (last_hist < 0) + return (-1); + + real_last = i; + i = last_hist; + + /* No specification defaults to most recent command. */ + if (command == NULL) + return (i); + + /* back up from the end to the last non-null history entry */ + while (hlist[real_last] == 0 && real_last > 0) + real_last--; + + /* Otherwise, there is a specification. It can be a number relative to + the current position, or an absolute history number. */ + s = command; + + /* Handle possible leading minus sign. */ + if (s && (*s == '-')) + { + sign = -1; + s++; + } + + if (s && DIGIT(*s)) + { + n = atoi (s); + n *= sign; + + /* We want to return something that is an offset to HISTORY_BASE. */ + + /* If the value is negative or zero, then it is an offset from + the current history item. */ + /* We don't use HN_FIRST here, so we don't return different values + depending on whether we're looking for the first or last in a + pair of range arguments, but nobody else does, either. */ + if (n < 0) + { + n += i + 1; + return (n < 0 ? 0 : n); + } + else if (n == 0) + return ((sign == -1) ? (listing ? real_last : HIST_INVALID) : i); + else + { + /* If we're out of range (greater than I (last history entry) or + less than HISTORY_BASE, we want to return different values + based on whether or not we are looking for the first or last + value in a desired range of history entries. */ + n -= history_base; + if (n < 0) + return (mode & HN_FIRST ? 0 : i); + else if (n >= i) + return (mode & HN_FIRST ? 0 : i); + else + return n; + } + } + + clen = strlen (command); + for (j = i; j >= 0; j--) + { + if (STREQN (command, histline (j), clen)) + return (j); + } + return (HIST_NOTFOUND); +} + +/* Locate the most recent history line which begins with + COMMAND in HLIST, and return a malloc()'ed copy of it. + MODE is 1 if we are listing commands, 0 if we are executing them. */ +static char * +fc_gethist (command, hlist, mode) + char *command; + HIST_ENTRY **hlist; + int mode; +{ + int i; + + if (hlist == 0) + return ((char *)NULL); + + i = fc_gethnum (command, hlist, mode); + + 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) + { + bash_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-5.1/builtins_org/fg_bg.def b/bash-5.1/builtins_org/fg_bg.def new file mode 100644 index 0000000..0fb5322 --- /dev/null +++ b/bash-5.1/builtins_org/fg_bg.def @@ -0,0 +1,189 @@ +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-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES fg_bg.c + +$BUILTIN fg +$FUNCTION fg_builtin +$DEPENDS_ON JOB_CONTROL +$SHORT_DOC fg [job_spec] +Move job to the foreground. + +Place the job identified by JOB_SPEC in the foreground, making it the +current job. If JOB_SPEC is not present, the shell's notion of the +current job is used. + +Exit Status: +Status of command placed in foreground, or failure if an error occurs. +$END + +#include + +#include "../bashtypes.h" +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "../bashintl.h" + +#include "../shell.h" +#include "../execute_cmd.h" +#include "../jobs.h" +#include "common.h" +#include "bashgetopt.h" + +#if defined (JOB_CONTROL) +static int fg_bg PARAMS((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; + + CHECK_HELPOPT (list); + + 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 ...] +Move jobs to the background. + +Place the jobs identified by each JOB_SPEC in the background, as if they +had been started with `&'. If JOB_SPEC is not present, the shell's notion +of the current job is used. + +Exit Status: +Returns success unless job control is not enabled or an error occurs. +$END + +#if defined (JOB_CONTROL) +/* How to put a job into the background. */ +int +bg_builtin (list) + WORD_LIST *list; +{ + int r; + + CHECK_HELPOPT (list); + + 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-5.1/builtins_org/gen-helpfiles.c b/bash-5.1/builtins_org/gen-helpfiles.c new file mode 100644 index 0000000..6bed447 --- /dev/null +++ b/bash-5.1/builtins_org/gen-helpfiles.c @@ -0,0 +1,197 @@ +/* gen-helpfiles - create files containing builtin help text */ + +/* Copyright (C) 2012-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* This links with a specially-generated version of builtins.c and takes + the long_doc members of each struct builtin element and writes those to + the file named by the `handle' member of the struct builtin element. */ + +#if !defined (CROSS_COMPILING) +# include +#else /* CROSS_COMPILING */ +/* A conservative set of defines based on POSIX/SUS3/XPG6 */ +# define HAVE_UNISTD_H +# define HAVE_STRING_H +# define HAVE_STDLIB_H + +# define HAVE_RENAME +#endif /* CROSS_COMPILING */ + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#ifndef _MINIX +# include "../bashtypes.h" +# if defined (HAVE_SYS_FILE_H) +# include +# endif +#endif + +#include "posixstat.h" +#include "filecntl.h" + +#include "../bashansi.h" +#include +#include + +#include "stdc.h" + +#include "../builtins.h" +#include "tmpbuiltins.h" + +#if defined (USING_BASH_MALLOC) +#undef xmalloc +#undef xrealloc +#undef xfree + +#undef free /* defined in xmalloc.h */ +#endif + +#ifndef errno +extern int errno; +#endif + +#if !defined (__STDC__) && !defined (strcpy) +extern char *strcpy (); +#endif /* !__STDC__ && !strcpy */ + +#define whitespace(c) (((c) == ' ') || ((c) == '\t')) + +/* Flag values that builtins can have. */ +#define BUILTIN_FLAG_SPECIAL 0x01 +#define BUILTIN_FLAG_ASSIGNMENT 0x02 +#define BUILTIN_FLAG_POSIX_BUILTIN 0x04 + +#define BASE_INDENT 4 + +/* Non-zero means to produce separate help files for each builtin, named by + the builtin name, in `./helpfiles'. */ +int separate_helpfiles = 0; + +/* Non-zero means to create single C strings for each `longdoc', with + embedded newlines, for ease of translation. */ +int single_longdoc_strings = 1; + +/* The name of a directory into which the separate external help files will + eventually be installed. */ +char *helpfile_directory; + +/* Forward declarations. */ + +int write_helpfiles PARAMS((struct builtin *)); + +/* For each file mentioned on the command line, process it and + write the information to STRUCTFILE and EXTERNFILE, while + creating the production file if necessary. */ +int +main (argc, argv) + int argc; + char **argv; +{ + int arg_index = 1; + + while (arg_index < argc && argv[arg_index][0] == '-') + { + char *arg = argv[arg_index++]; + + if (strcmp (arg, "-noproduction") == 0) + ; + else if (strcmp (arg, "-H") == 0) + helpfile_directory = argv[arg_index++]; + else if (strcmp (arg, "-S") == 0) + single_longdoc_strings = 0; + else + { + fprintf (stderr, "%s: Unknown flag %s.\n", argv[0], arg); + exit (2); + } + } + + write_helpfiles(shell_builtins); + + exit (0); +} + +/* Write DOCUMENTATION to STREAM, perhaps surrounding it with double-quotes + and quoting special characters in the string. Handle special things for + internationalization (gettext) and the single-string vs. multiple-strings + issues. */ +void +write_documentation (stream, documentation, indentation) + FILE *stream; + char *documentation; + int indentation; +{ + if (stream == 0) + return; + + if (documentation) + fprintf (stream, "%*s%s\n", indentation, " ", documentation); +} + +int +write_helpfiles (builtins) + struct builtin *builtins; +{ + char *helpfile, *bname, *fname; + FILE *helpfp; + int i, hdlen; + struct builtin b; + + i = mkdir ("helpfiles", 0777); + if (i < 0 && errno != EEXIST) + { + fprintf (stderr, "write_helpfiles: helpfiles: cannot create directory\n"); + return -1; + } + + hdlen = strlen ("helpfiles/"); + for (i = 0; i < num_shell_builtins; i++) + { + b = builtins[i]; + + fname = (char *)b.handle; + helpfile = (char *)malloc (hdlen + strlen (fname) + 1); + if (helpfile == 0) + { + fprintf (stderr, "gen-helpfiles: cannot allocate memory\n"); + exit (1); + } + sprintf (helpfile, "helpfiles/%s", fname); + + helpfp = fopen (helpfile, "w"); + if (helpfp == 0) + { + fprintf (stderr, "write_helpfiles: cannot open %s\n", helpfile); + free (helpfile); + continue; + } + + write_documentation (helpfp, b.long_doc[0], 4); + + fflush (helpfp); + fclose (helpfp); + free (helpfile); + } + return 0; +} diff --git a/bash-5.1/builtins_org/getopt.c b/bash-5.1/builtins_org/getopt.c new file mode 100644 index 0000000..9529bc3 --- /dev/null +++ b/bash-5.1/builtins_org/getopt.c @@ -0,0 +1,355 @@ +/* getopt.c - getopt for Bash. Used by the getopt builtin. */ + +/* Copyright (C) 1993-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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; +} + +sh_getopt_state_t * +sh_getopt_alloc_istate () +{ + sh_getopt_state_t *ret; + + ret = (sh_getopt_state_t *)xmalloc (sizeof (sh_getopt_state_t)); + return ret; +} + +void +sh_getopt_dispose_istate (gs) + sh_getopt_state_t *gs; +{ + free (gs); +} + +sh_getopt_state_t * +sh_getopt_save_istate () +{ + sh_getopt_state_t *ret; + + ret = sh_getopt_alloc_istate (); + + ret->gs_optarg = sh_optarg; + ret->gs_optind = sh_optind; + ret->gs_curopt = sh_curopt; + ret->gs_nextchar = nextchar; /* XXX */ + ret->gs_charindex = sh_charindex; + ret->gs_flags = 0; /* XXX for later use */ + + return ret; +} + +void +sh_getopt_restore_istate (state) + sh_getopt_state_t *state; +{ + sh_optarg = state->gs_optarg; + sh_optind = state->gs_optind; + sh_curopt = state->gs_curopt; + nextchar = state->gs_nextchar; /* XXX - probably not usable */ + sh_charindex = state->gs_charindex; + + sh_getopt_dispose_istate (state); +} + +#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-5.1/builtins_org/getopt.h b/bash-5.1/builtins_org/getopt.h new file mode 100644 index 0000000..fd97859 --- /dev/null +++ b/bash-5.1/builtins_org/getopt.h @@ -0,0 +1,82 @@ +/* getopt.h - declarations for getopt. */ + +/* Copyright (C) 1989-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* 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 PARAMS((int, char *const *, const char *)); + +typedef struct sh_getopt_state +{ + char *gs_optarg; + int gs_optind; + int gs_curopt; + char *gs_nextchar; + int gs_charindex; + int gs_flags; +} sh_getopt_state_t; + +extern void sh_getopt_restore_state PARAMS((char **)); + +extern sh_getopt_state_t *sh_getopt_alloc_istate PARAMS((void)); +extern void sh_getopt_dispose_istate PARAMS((sh_getopt_state_t *)); + +extern sh_getopt_state_t *sh_getopt_save_istate PARAMS((void)); +extern void sh_getopt_restore_istate PARAMS((sh_getopt_state_t *)); + +#endif /* _SH_GETOPT_H */ diff --git a/bash-5.1/builtins_org/getopts.def b/bash-5.1/builtins_org/getopts.def new file mode 100644 index 0000000..4c39c47 --- /dev/null +++ b/bash-5.1/builtins_org/getopts.def @@ -0,0 +1,343 @@ +This file is getopts.def, from which is created getopts.c. +It implements the builtin "getopts" in Bash. + +Copyright (C) 1987-2019 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES getopts.c + +$BUILTIN getopts +$FUNCTION getopts_builtin +$SHORT_DOC getopts optstring name [arg ...] +Parse option arguments. + +Getopts is used by shell procedures to parse positional parameters +as options. + +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, but if arguments +are supplied as ARG values, they are parsed instead. + +Exit Status: +Returns success if an option is found; fails if the end of options is +encountered or an error occurs. +$END + +#include + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashansi.h" +#include "../bashintl.h" + +#include "../shell.h" +#include "../execute_cmd.h" +#include "common.h" +#include "bashgetopt.h" +#include "getopt.h" + +#define G_EOF -1 +#define G_INVALID_OPT -2 +#define G_ARG_MISSING -3 + +static int getopts_unbind_variable PARAMS((char *)); +static int getopts_bind_variable PARAMS((char *, char *)); +static int dogetopts PARAMS((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_unbind_variable (name) + char *name; +{ +#if 0 + return (unbind_variable (name)); +#else + return (unbind_variable_noref (name)); +#endif +} + +static int +getopts_bind_variable (name, value) + char *name, *value; +{ + SHELL_VAR *v; + + if (legal_identifier (name)) + { + v = bind_variable (name, value, 0); + if (v && (readonly_p (v) || noassign_p (v))) + return (EX_MISCERROR); + return (v ? 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; + + i = number_of_args () + 1; /* +1 for $0 */ + 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) + { + getopts_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 + getopts_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, "?"); + getopts_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 ((ret = internal_getopt (list, "")) != -1) + { + if (ret == GETOPT_HELP) + builtin_help (); + else + 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-5.1/builtins_org/hash.def b/bash-5.1/builtins_org/hash.def new file mode 100644 index 0000000..c58e91c --- /dev/null +++ b/bash-5.1/builtins_org/hash.def @@ -0,0 +1,305 @@ +This file is hash.def, from which is created hash.c. +It implements the builtin "hash" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES hash.c + +$BUILTIN hash +$FUNCTION hash_builtin +$SHORT_DOC hash [-lr] [-p pathname] [-dt] [name ...] +Remember or display program locations. + +Determine and remember the full pathname of each command NAME. If +no arguments are given, information about remembered commands is displayed. + +Options: + -d forget the remembered location of each NAME + -l display in a format that may be reused as input + -p pathname use PATHNAME as the full pathname of NAME + -r forget all remembered locations + -t print the remembered location of each NAME, preceding + each location with the corresponding NAME if multiple + NAMEs are given +Arguments: + NAME Each NAME is searched for in $PATH and added to the list + of remembered commands. + +Exit Status: +Returns success unless NAME is not found or an invalid option is given. +$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 "../execute_cmd.h" +#include "../flags.h" +#include "../findcmd.h" +#include "../hashcmd.h" +#include "common.h" +#include "bashgetopt.h" + +extern int dot_found_in_search; + +static int add_hashed_command PARAMS((char *, int)); +static int print_hash_info PARAMS((BUCKET_CONTENTS *)); +static int print_portable_hash_info PARAMS((BUCKET_CONTENTS *)); +static int print_hashed_commands PARAMS((int)); +static int list_hashed_filename_targets PARAMS((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; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + /* hash -t requires at least one argument. */ + if (list == 0 && (delete || list_targets)) + { + sh_needarg (delete ? "-d" : "-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 && + (list_portably == 0 || shell_compatibility_level <= 50)) + 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) + { + if (strchr (pathname, '/')) + { + sh_restricted (pathname); + return (EXECUTION_FAILURE); + } + /* If we are changing the hash table in a restricted shell, make sure the + target pathname can be found using a $PATH search. */ + w = find_user_command (pathname); + if (w == 0 || *w == 0 || executable_file (w) == 0) + { + sh_notfound (pathname); + free (w); + return (EXECUTION_FAILURE); + } + free (w); + } +#endif + + for (opt = EXECUTION_SUCCESS; list; list = list->next) + { + /* Add, remove or rehash the specified commands. */ + w = list->word->word; + if (absolute_program (w)) + continue; + else 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 (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) + { + phash_remove (w); + 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; +{ + char *fp, *fn; + + fp = printable_filename (pathdata(item)->path, 1); + fn = printable_filename (item->key, 1); + printf ("builtin hash -p %s %s\n", fp, fn); + if (fp != pathdata(item)->path) + free (fp); + if (fn != item->key) + free (fn); + 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); + } + free (target); + } + + return (all_found ? EXECUTION_SUCCESS : EXECUTION_FAILURE); +} diff --git a/bash-5.1/builtins_org/help.def b/bash-5.1/builtins_org/help.def new file mode 100644 index 0000000..f33b2b9 --- /dev/null +++ b/bash-5.1/builtins_org/help.def @@ -0,0 +1,553 @@ +This file is help.def, from which is created help.c. +It implements the builtin "help" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES help.c + +$BUILTIN help +$FUNCTION help_builtin +$DEPENDS_ON HELP_BUILTIN +$SHORT_DOC help [-dms] [pattern ...] +Display information about builtin commands. + +Displays brief summaries of builtin commands. If PATTERN is +specified, gives detailed help on all commands matching PATTERN, +otherwise the list of help topics is printed. + +Options: + -d output short description for each topic + -m display usage in pseudo-manpage format + -s output only a short usage synopsis for each topic matching + PATTERN + +Arguments: + PATTERN Pattern specifying a help topic + +Exit Status: +Returns success unless PATTERN is not found or an invalid option is given. +$END + +#include + +#if defined (HELP_BUILTIN) +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include + +#include +#include + +#include "../bashintl.h" + +#include "../shell.h" +#include "../builtins.h" +#include "../execute_cmd.h" +#include "../pathexp.h" +#include "common.h" +#include "bashgetopt.h" + +#include +#include + +#ifndef errno +extern int errno; +#endif + +extern const char * const bash_copyright; +extern const char * const bash_license; + +static void show_builtin_command_help PARAMS((void)); +static int open_helpfile PARAMS((char *)); +static void show_desc PARAMS((char *, int)); +static void show_manpage PARAMS((char *, int)); +static void show_longdoc PARAMS((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, dflag, mflag, m, pass, this_found; + + dflag = sflag = mflag = 0; + reset_internal_getopt (); + while ((i = internal_getopt (list, "dms")) != -1) + { + switch (i) + { + case 'd': + dflag = 1; + break; + case 'm': + mflag = 1; + break; + case 's': + sflag = 1; + break; + CASE_HELPOPT; + 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) == 1) + { + printf ("%s", ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1))); + print_word_list (list, ", "); + printf ("%s", _("'\n\n")); + } + + for (match_found = 0, pattern = ""; list; list = list->next) + { + pattern = list->word->word; + plen = strlen (pattern); + + for (pass = 1, this_found = 0; pass < 3; pass++) + { + for (i = 0; name = shell_builtins[i].name; i++) + { + QUIT; + + /* First pass: look for exact string or pattern matches. + Second pass: look for prefix matches like bash-4.2 */ + if (pass == 1) + m = (strcmp (pattern, name) == 0) || + (strmatch (pattern, name, FNMATCH_EXTFLAG) != FNM_NOMATCH); + else + m = strncmp (pattern, name, plen) == 0; + + if (m) + { + this_found = 1; + match_found++; + if (dflag) + { + show_desc (name, i); + continue; + } + else if (mflag) + { + show_manpage (name, i); + continue; + } + + printf ("%s: %s\n", name, _(shell_builtins[i].short_doc)); + + if (sflag == 0) + show_longdoc (i); + } + } + if (pass == 1 && this_found == 1) + break; + } + } + + 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); +} + +void +builtin_help () +{ + int ind; + ptrdiff_t d; + + current_builtin = builtin_address_internal (this_command_name, 0); + if (current_builtin == 0) + return; + + d = current_builtin - shell_builtins; + +#if defined (__STDC__) + ind = (int)d; +#else + ind = (int)d / sizeof (struct builtin); +#endif + + printf ("%s: %s\n", this_command_name, _(shell_builtins[ind].short_doc)); + show_longdoc (ind); +} + +static int +open_helpfile (name) + char *name; +{ + int fd; + + fd = open (name, O_RDONLY); + if (fd == -1) + { + builtin_error (_("%s: cannot open: %s"), name, strerror (errno)); + return -1; + } + return fd; +} + +/* 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_helpfile (doc[0]); + if (fd < 0) + return; + zcatfd (fd, 1, doc[0]); + close (fd); + } + else if (doc) + for (j = 0; doc[j]; j++) + printf ("%*s%s\n", BASE_INDENT, " ", _(doc[j])); +} + +static void +show_desc (name, i) + char *name; + int i; +{ + register int j, r; + char **doc, *line; + int fd, usefile; + + doc = (char **)shell_builtins[i].long_doc; + + usefile = (doc && doc[0] && *doc[0] == '/' && doc[1] == (char *)NULL); + if (usefile) + { + fd = open_helpfile (doc[0]); + if (fd < 0) + return; + r = zmapfd (fd, &line, doc[0]); + close (fd); + /* XXX - handle errors if zmapfd returns < 0 */ + } + else + line = doc ? doc[0] : (char *)NULL; + + printf ("%s - ", name); + for (j = 0; line && line[j]; j++) + { + putchar (line[j]); + if (line[j] == '\n') + break; + } + + fflush (stdout); + + if (usefile) + free (line); +} + +/* Print builtin help in pseudo-manpage format. */ +static void +show_manpage (name, i) + char *name; + int i; +{ + register int j; + char **doc, *line; + int fd, usefile; + + doc = (char **)shell_builtins[i].long_doc; + + usefile = (doc && doc[0] && *doc[0] == '/' && doc[1] == (char *)NULL); + if (usefile) + { + fd = open_helpfile (doc[0]); + if (fd < 0) + return; + zmapfd (fd, &line, doc[0]); + close (fd); + } + else + line = doc ? _(doc[0]) : (char *)NULL; + + /* NAME */ + printf ("NAME\n"); + printf ("%*s%s - ", BASE_INDENT, " ", name); + for (j = 0; line && line[j]; j++) + { + putchar (line[j]); + if (line[j] == '\n') + break; + } + printf ("\n"); + + /* SYNOPSIS */ + printf ("SYNOPSIS\n"); + printf ("%*s%s\n\n", BASE_INDENT, " ", _(shell_builtins[i].short_doc)); + + /* DESCRIPTION */ + printf ("DESCRIPTION\n"); + if (usefile == 0) + { + for (j = 0; doc[j]; j++) + printf ("%*s%s\n", BASE_INDENT, " ", _(doc[j])); + } + else + { + for (j = 0; line && line[j]; j++) + { + putchar (line[j]); + if (line[j] == '\n') + printf ("%*s", BASE_INDENT, " "); + } + } + putchar ('\n'); + + /* SEE ALSO */ + printf ("SEE ALSO\n"); + printf ("%*sbash(1)\n\n", BASE_INDENT, " "); + + /* IMPLEMENTATION */ + printf ("IMPLEMENTATION\n"); + printf ("%*s", BASE_INDENT, " "); + show_shell_version (0); + printf ("%*s", BASE_INDENT, " "); + printf ("%s\n", _(bash_copyright)); + printf ("%*s", BASE_INDENT, " "); + printf ("%s\n", _(bash_license)); + + fflush (stdout); + if (usefile) + free (line); +} + +static void +dispcolumn (i, buf, bufsize, width, height) + int i; + char *buf; + size_t bufsize; + int width, height; +{ + int j; + int dispcols; + char *helpdoc; + + /* first column */ + helpdoc = _(shell_builtins[i].short_doc); + + buf[0] = (shell_builtins[i].flags & BUILTIN_ENABLED) ? ' ' : '*'; + strncpy (buf + 1, helpdoc, width - 2); + buf[width - 2] = '>'; /* indicate truncation */ + buf[width - 1] = '\0'; + printf ("%s", buf); + if (((i << 1) >= num_shell_builtins) || (i+height >= num_shell_builtins)) + { + printf ("\n"); + return; + } + + dispcols = strlen (buf); + /* two spaces */ + for (j = dispcols; j < width; j++) + putc (' ', stdout); + + /* second column */ + helpdoc = _(shell_builtins[i+height].short_doc); + + buf[0] = (shell_builtins[i+height].flags & BUILTIN_ENABLED) ? ' ' : '*'; + strncpy (buf + 1, helpdoc, width - 3); + buf[width - 3] = '>'; /* indicate truncation */ + buf[width - 2] = '\0'; + + printf ("%s\n", buf); +} + +#if defined (HANDLE_MULTIBYTE) +static void +wdispcolumn (i, buf, bufsize, width, height) + int i; + char *buf; + size_t bufsize; + int width, height; +{ + int j; + int dispcols, dispchars; + char *helpdoc; + wchar_t *wcstr; + size_t slen, n; + + /* first column */ + helpdoc = _(shell_builtins[i].short_doc); + + wcstr = 0; + slen = mbstowcs ((wchar_t *)0, helpdoc, 0); + if (slen == -1) + { + dispcolumn (i, buf, bufsize, width, height); + return; + } + + /* No bigger than the passed max width */ + if (slen >= width) + slen = width - 2; + wcstr = (wchar_t *)xmalloc (sizeof (wchar_t) * (width + 2)); + n = mbstowcs (wcstr+1, helpdoc, slen + 1); + wcstr[n+1] = L'\0'; + + /* Turn tabs and newlines into spaces for column display, since wcwidth + returns -1 for them */ + for (j = 1; j < n; j++) + if (wcstr[j] == L'\n' || wcstr[j] == L'\t') + wcstr[j] = L' '; + + /* dispchars == number of characters that will be displayed */ + dispchars = wcsnwidth (wcstr+1, slen, width - 2); + /* dispcols == number of columns required to display DISPCHARS */ + dispcols = wcswidth (wcstr+1, dispchars) + 1; /* +1 for ' ' or '*' */ + + wcstr[0] = (shell_builtins[i].flags & BUILTIN_ENABLED) ? L' ' : L'*'; + + if (dispcols >= width-2) + { + wcstr[dispchars] = L'>'; /* indicate truncation */ + wcstr[dispchars+1] = L'\0'; + } + + printf ("%ls", wcstr); + if (((i << 1) >= num_shell_builtins) || (i+height >= num_shell_builtins)) + { + printf ("\n"); + free (wcstr); + return; + } + + /* at least one space */ + for (j = dispcols; j < width; j++) + putc (' ', stdout); + + /* second column */ + helpdoc = _(shell_builtins[i+height].short_doc); + slen = mbstowcs ((wchar_t *)0, helpdoc, 0); + if (slen == -1) + { + /* for now */ + printf ("%c%s\n", (shell_builtins[i+height].flags & BUILTIN_ENABLED) ? ' ' : '*', helpdoc); + free (wcstr); + return; + } + + /* Reuse wcstr since it is already width wide chars long */ + if (slen >= width) + slen = width - 2; + n = mbstowcs (wcstr+1, helpdoc, slen + 1); + wcstr[n+1] = L'\0'; /* make sure null-terminated */ + + /* Turn tabs and newlines into spaces for column display */ + for (j = 1; j < n; j++) + if (wcstr[j] == L'\n' || wcstr[j] == L'\t') + wcstr[j] = L' '; + + /* dispchars == number of characters that will be displayed */ + dispchars = wcsnwidth (wcstr+1, slen, width - 2); + dispcols = wcswidth (wcstr+1, dispchars) + 1; /* +1 for ' ' or '*' */ + + wcstr[0] = (shell_builtins[i+height].flags & BUILTIN_ENABLED) ? L' ' : L'*'; + + /* The dispchars-1 is there for terminals that behave strangely when you + have \n in the nth column for terminal width n; this is what bash-4.3 + did. */ + if (dispcols >= width - 2) + { + wcstr[dispchars-1] = L'>'; /* indicate truncation */ + wcstr[dispchars] = L'\0'; + } + + printf ("%ls\n", wcstr); + + free (wcstr); +} +#endif /* HANDLE_MULTIBYTE */ + +static void +show_builtin_command_help () +{ + int i, j; + int height, width; + char *t, blurb[128]; + + 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")); + + width = default_columns (); + + width /= 2; + if (width > sizeof (blurb)) + width = sizeof (blurb); + if (width <= 3) + width = 40; + height = (num_shell_builtins + 1) / 2; /* number of rows */ + + for (i = 0; i < height; i++) + { + QUIT; + +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1) + wdispcolumn (i, blurb, sizeof (blurb), width, height); + else +#endif + dispcolumn (i, blurb, sizeof (blurb), width, height); + } +} +#endif /* HELP_BUILTIN */ diff --git a/bash-5.1/builtins_org/history.def b/bash-5.1/builtins_org/history.def new file mode 100644 index 0000000..5db44c2 --- /dev/null +++ b/bash-5.1/builtins_org/history.def @@ -0,0 +1,466 @@ +This file is history.def, from which is created history.c. +It implements the builtin "history" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES history.c + +$BUILTIN history +$FUNCTION history_builtin +$DEPENDS_ON HISTORY +$SHORT_DOC history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...] +Display or manipulate the history list. + +Display the history list with line numbers, prefixing each modified +entry with a `*'. An argument of N lists only the last N entries. + +Options: + -c clear the history list by deleting all of the entries + -d offset delete the history entry at position OFFSET. Negative + offsets count back from the end of the history list + + -a append history lines from this session to the history file + -n read all history lines not already read from the history file + and append them to the history list + -r read the history file and append the contents to the history + list + -w write the current history to the history file + + -p perform history expansion on each ARG and display the result + without storing it in the history list + -s append the ARGs to the history list as a single entry + +If FILENAME is given, it is used as the history file. Otherwise, +if HISTFILE has a value, that is used, else ~/.bash_history. + +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. + +Exit Status: +Returns success unless an invalid option is given or an error occurs. +$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 "../flags.h" +#include "../parser.h" +#include "../bashhist.h" +#include +#include "bashgetopt.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +static char *histtime PARAMS((HIST_ENTRY *, const char *)); +static int display_history PARAMS((WORD_LIST *)); +static void push_history PARAMS((WORD_LIST *)); +static int expand_and_print_history PARAMS((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, ind; + char *filename, *delete_arg, *range; + 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; + CASE_HELPOPT; + 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) + { + bash_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 (sh_chkwrite (EXECUTION_SUCCESS)); + } +#endif + else if ((flags & DFLAG) && (range = strchr ((delete_arg[0] == '-') ? delete_arg + 1 : delete_arg, '-'))) + { + intmax_t delete_start, delete_end; + *range++ = '\0'; + if (legal_number (delete_arg, &delete_start) == 0 || legal_number (range, &delete_end) == 0) + { + range[-1] = '-'; + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + if (delete_arg[0] == '-' && delete_start < 0) + { + /* the_history[history_length] == 0x0, so this is correct */ + delete_start += history_length; + if (delete_start < history_base) + { +start_error: + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + } + /* numbers as displayed by display_history are offset by history_base */ + else if (delete_start > 0) + delete_start -= history_base; + if (delete_start < 0 || delete_start >= history_length) + goto start_error; + if (range[0] == '-' && delete_end < 0) + { + delete_end += history_length; + if (delete_end < history_base) + { +range_error: + sh_erange (range, _("history position")); + return (EXECUTION_FAILURE); + } + } + else if (delete_end > 0) + delete_end -= history_base; + if (delete_end < 0 || delete_end >= history_length) + goto range_error; + result = bash_delete_history_range (delete_start, delete_end); + if (where_history () > history_length) + history_set_pos (history_length); + return (result ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + } + else if (flags & DFLAG) + { + if (legal_number (delete_arg, &delete_offset) == 0) + { + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + /* check for negative offsets, count back from end of list */ + if (delete_arg[0] == '-' && delete_offset < 0) + { + /* since the_history[history_length] == 0x0, this calculation means + that history -d -1 will delete the last history entry, which at + this point is the history -d -1 we just added. */ + ind = history_length + delete_offset; + if (ind < history_base) + { + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + opt = ind + history_base; /* compensate for opt - history_base below */ + } + else if ((delete_offset < history_base) || (delete_offset >= (history_base + history_length))) + { + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + else + opt = delete_offset; + + /* Positive arguments from numbers as displayed by display_history need + to be offset by history_base */ + result = bash_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) + { + result = display_history (list); + return (sh_chkwrite (result)); + } + + filename = list ? list->word->word : get_string_value ("HISTFILE"); + result = EXECUTION_SUCCESS; + +#if defined (RESTRICTED_SHELL) + if (restricted && strchr (filename, '/')) + { + sh_restricted (filename); + return (EXECUTION_FAILURE); + } +#endif + + 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); + history_lines_in_file = history_lines_read_from_file; + /* history_lines_in_file = where_history () + history_base - 1; */ + } + 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 = history_lines_read_from_file; + /* history_lines_in_file = where_history () + history_base - 1; */ + + /* 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; + struct tm *tm; + + t = history_get_time (hlist); + tm = t ? localtime (&t) : 0; + if (t && tm) + strftime (timestr, sizeof (timestr), histtimefmt, tm); + else if (hlist->timestamp && hlist->timestamp[0]) + snprintf (timestr, sizeof (timestr), _("%s: invalid timestamp"), + (hlist->timestamp[0] == '#') ? hlist->timestamp + 1: hlist->timestamp); + else + strcpy (timestr, "??"); + return timestr; +} + +static int +display_history (list) + WORD_LIST *list; +{ + register int i; + intmax_t limit; + HIST_ENTRY **hlist; + char *histtimefmt, *timestr; + + if (list) + { + if (get_numeric_arg (list, 0, &limit) == 0) + return (EXECUTION_FAILURE); + + 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++; + } + } + + return (EXECUTION_SUCCESS); +} + +/* 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 (remember_on_history && hist_last_line_pushed == 0 && + hist_last_line_added && bash_delete_last_history () == 0) +#else + if (remember_on_history && hist_last_line_pushed == 0 && + (hist_last_line_added || + (current_command_line_count > 0 && current_command_first_line_saved && command_oriented_history)) + && bash_delete_last_history () == 0) +#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 && bash_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-5.1/builtins_org/inlib.def b/bash-5.1/builtins_org/inlib.def new file mode 100644 index 0000000..c4faf0d --- /dev/null +++ b/bash-5.1/builtins_org/inlib.def @@ -0,0 +1,80 @@ +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 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 . + +$PRODUCES inlib.c +#include + +#include +#include "../shell.h" + +$BUILTIN inlib +$FUNCTION inlib_builtin +$DEPENDS_ON apollo +$SHORT_DOC inlib pathname [pathname...] +Install user-supplied library. + +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. + +Exit Status: +Returns success unless PATHNAME is not found or an error occurs. +$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-5.1/builtins_org/jobs.def b/bash-5.1/builtins_org/jobs.def new file mode 100644 index 0000000..1ce098d --- /dev/null +++ b/bash-5.1/builtins_org/jobs.def @@ -0,0 +1,300 @@ +This file is jobs.def, from which is created jobs.c. +It implements the builtins "jobs" and "disown" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES jobs.c + +$BUILTIN jobs +$FUNCTION jobs_builtin +$DEPENDS_ON JOB_CONTROL +$SHORT_DOC jobs [-lnprs] [jobspec ...] or jobs -x command [args] +Display status of jobs. + +Lists the active jobs. JOBSPEC restricts output to that job. +Without options, the status of all active jobs is displayed. + +Options: + -l lists process IDs in addition to the normal information + -n lists only processes that have changed status since the last + notification + -p lists process IDs only + -r restrict output to running jobs + -s restrict output to stopped jobs + +If -x is supplied, 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. + +Exit Status: +Returns success unless an invalid option is given or an error occurs. +If -x is used, returns the exit status of COMMAND. +$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 PARAMS((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; + + CASE_HELPOPT; + 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 ... | pid ...] +Remove jobs from current shell. + +Removes each JOBSPEC argument from the table of active jobs. Without +any JOBSPECs, the shell uses its notion of the current job. + +Options: + -a remove all jobs if JOBSPEC is not supplied + -h mark each JOBSPEC so that SIGHUP is not sent to the job if the + shell receives a SIGHUP + -r remove only running jobs + +Exit Status: +Returns success unless an invalid option or JOBSPEC is given. +$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; + CASE_HELPOPT; + 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, 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-5.1/builtins_org/kill.def b/bash-5.1/builtins_org/kill.def new file mode 100644 index 0000000..c655092 --- /dev/null +++ b/bash-5.1/builtins_org/kill.def @@ -0,0 +1,276 @@ +This file is kill.def, from which is created kill.c. +It implements the builtin "kill" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES kill.c + +$BUILTIN kill +$FUNCTION kill_builtin +$SHORT_DOC kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec] +Send a signal to a job. + +Send the processes identified by PID or JOBSPEC the signal named by +SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then +SIGTERM is assumed. + +Options: + -s sig SIG is a signal name + -n sig SIG is a signal number + -l list the signal names; if arguments follow `-l' they are + assumed to be signal numbers for which names should be listed + -L synonym for -l + +Kill is a shell builtin for two reasons: it allows job IDs to be used +instead of process IDs, and allows processes to be killed if the limit +on processes that you can create is reached. + +Exit Status: +Returns success unless an invalid option is given or an error occurs. +$END + +#include + +#include +#include +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashansi.h" +#include "../bashintl.h" + +#include + +#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 */ + +static void kill_error PARAMS((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 (EX_USAGE); + } + CHECK_HELPOPT (list); + + 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') || ISOPTION (word, 'L')) + { + listing++; + list = list->next; + } + else if (ISOPTION (word, 's') || ISOPTION (word, 'n')) + { + list = list->next; + if (list) + { + sigspec = list->word->word; +use_sigspec: + if (sigspec[0] == '0' && sigspec[1] == '\0') + sig = 0; + else + sig = decode_signal (sigspec, dflags); + list = list->next; + saw_signal++; + } + else + { + sh_needarg (word); + return (EXECUTION_FAILURE); + } + } + else if (word[0] == '-' && word[1] == 's' && ISALPHA (word[2])) + { + sigspec = word + 2; + goto use_sigspec; + } + else if (word[0] == '-' && word[1] == 'n' && ISDIGIT (word[2])) + { + sigspec = word + 2; + goto use_sigspec; + } + else if (ISOPTION (word, '-')) + { + list = list->next; + break; + } + else if (ISOPTION (word, '?')) + { + builtin_usage (); + return (EX_USAGE); + } + /* If this is a signal specification then process it. We only process + the first one seen; other arguments may signify process groups (e.g, + -num == process group num). */ + else if (*word == '-' && saw_signal == 0) + { + 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 (EX_USAGE); + } + + 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-5.1/builtins_org/let.def b/bash-5.1/builtins_org/let.def new file mode 100644 index 0000000..d090a45 --- /dev/null +++ b/bash-5.1/builtins_org/let.def @@ -0,0 +1,131 @@ +This file is let.def, from which is created let.c. +It implements the builtin "let" in Bash. + +Copyright (C) 1987-2009 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$BUILTIN let +$FUNCTION let_builtin +$PRODUCES let.c +$SHORT_DOC let arg [arg ...] +Evaluate arithmetic expressions. + +Evaluate each ARG as an arithmetic expression. 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. + +Exit Status: +If the last ARG evaluates to 0, let returns 1; let returns 0 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; + + CHECK_HELPOPT (list); + + /* 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, EXP_EXPANDED, &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, EXP_EXPANDED, &expok); + (void)free (exp); + return (((ret == 0) || (expok == 0)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS); +} +#endif diff --git a/bash-5.1/builtins_org/mapfile.def b/bash-5.1/builtins_org/mapfile.def new file mode 100644 index 0000000..65c3cb4 --- /dev/null +++ b/bash-5.1/builtins_org/mapfile.def @@ -0,0 +1,374 @@ +This file is mapfile.def, from which is created mapfile.c. +It implements the builtin "mapfile" in Bash. + +Copyright (C) 2005-2006 Rocky Bernstein for Free Software Foundation, Inc. +Copyright (C) 2008-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES mapfile.c + +$BUILTIN mapfile +$FUNCTION mapfile_builtin +$SHORT_DOC mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array] +Read lines from the standard input into an indexed array variable. + +Read lines from the standard input into the indexed array variable ARRAY, or +from file descriptor FD if the -u option is supplied. The variable MAPFILE +is the default ARRAY. + +Options: + -d delim Use DELIM to terminate lines, instead of newline + -n count Copy at most COUNT lines. If COUNT is 0, all lines are copied + -O origin Begin assigning to ARRAY at index ORIGIN. The default index is 0 + -s count Discard the first COUNT lines read + -t Remove a trailing DELIM from each line read (default newline) + -u fd Read lines from file descriptor FD instead of the standard input + -C callback Evaluate CALLBACK each time QUANTUM lines are read + -c quantum Specify the number of lines read between each call to + CALLBACK + +Arguments: + ARRAY Array variable name to use for file data + +If -C is supplied without -c, the default quantum is 5000. When +CALLBACK is evaluated, it is supplied the index of the next array +element to be assigned and the line to be assigned to that element +as additional arguments. + +If not supplied with an explicit origin, mapfile will clear ARRAY before +assigning to it. + +Exit Status: +Returns success unless an invalid option is given or ARRAY is readonly or +not an indexed array. +$END + +$BUILTIN readarray +$FUNCTION mapfile_builtin +$SHORT_DOC readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array] +Read lines from a file into an array variable. + +A synonym for `mapfile'. +$END + +#include + +#include "builtins.h" +#include "posixstat.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" +#include "bashintl.h" + +#include +#include + +#include "../bashintl.h" +#include "../shell.h" +#include "common.h" +#include "bashgetopt.h" + +#if !defined (errno) +extern int errno; +#endif + +#if defined (ARRAY_VARS) + +static int run_callback PARAMS((const char *, unsigned int, const char *)); + +#define DEFAULT_ARRAY_NAME "MAPFILE" +#define DEFAULT_VARIABLE_NAME "MAPLINE" /* not used right now */ + +/* The value specifying how frequently `mapfile' calls the callback. */ +#define DEFAULT_QUANTUM 5000 + +/* Values for FLAGS */ +#define MAPF_CLEARARRAY 0x01 +#define MAPF_CHOP 0x02 + +static int delim; + +static int +run_callback (callback, curindex, curline) + const char *callback; + unsigned int curindex; + const char *curline; +{ + unsigned int execlen; + char *execstr, *qline; + int flags; + + qline = sh_single_quote (curline); + execlen = strlen (callback) + strlen (qline) + 10; + /* 1 for each space between %s and %d, + another 1 for the last nul char for C string. */ + execlen += 3; + execstr = xmalloc (execlen); + + flags = SEVAL_NOHIST; +#if 0 + if (interactive) + flags |= SEVAL_INTERACT; +#endif + snprintf (execstr, execlen, "%s %d %s", callback, curindex, qline); + free (qline); + return evalstring (execstr, NULL, flags); +} + +static void +do_chop(line, delim) + char *line; + unsigned char delim; +{ + int length; + + length = strlen (line); + if (length && line[length-1] == delim) + line[length-1] = '\0'; +} + +static int +mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_name, delim, flags) + int fd; + long line_count_goal, origin, nskip, callback_quantum; + char *callback, *array_name; + int delim; + int flags; +{ + char *line; + size_t line_length; + unsigned int array_index, line_count; + SHELL_VAR *entry; + int unbuffered_read; + + line = NULL; + line_length = 0; + unbuffered_read = 0; + + /* The following check should be done before reading any lines. Doing it + here allows us to call bind_array_element instead of bind_array_variable + and skip the variable lookup on every call. */ + entry = find_or_make_array_variable (array_name, 1); + if (entry == 0 || readonly_p (entry) || noassign_p (entry)) + { + if (entry && readonly_p (entry)) + err_readonly (array_name); + + return (EXECUTION_FAILURE); + } + else if (array_p (entry) == 0) + { + builtin_error (_("%s: not an indexed array"), array_name); + return (EXECUTION_FAILURE); + } + else if (invisible_p (entry)) + VUNSETATTR (entry, att_invisible); /* no longer invisible */ + + if (flags & MAPF_CLEARARRAY) + array_flush (array_cell (entry)); + +#ifndef __CYGWIN__ + unbuffered_read = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE); +#else + unbuffered_read = 1; +#endif + + if (delim != '\n') + unbuffered_read = 1; + + zreset (); + + /* Skip any lines at beginning of file? */ + for (line_count = 0; line_count < nskip; line_count++) + if (zgetline (fd, &line, &line_length, delim, unbuffered_read) < 0) + break; + + line = 0; + line_length = 0; + + /* Reset the buffer for bash own stream */ + for (array_index = origin, line_count = 1; + zgetline (fd, &line, &line_length, delim, unbuffered_read) != -1; + array_index++) + { + /* Remove trailing newlines? */ + if (flags & MAPF_CHOP) + do_chop (line, delim); + + /* Has a callback been registered and if so is it time to call it? */ + if (callback && line_count && (line_count % callback_quantum) == 0) + { + run_callback (callback, array_index, line); + + /* Reset the buffer for bash own stream. */ + if (unbuffered_read == 0) + zsyncfd (fd); + } + + /* XXX - bad things can happen if the callback modifies ENTRY, e.g., + unsetting it or changing it to a non-indexed-array type. */ + bind_array_element (entry, array_index, line, 0); + + /* Have we exceeded # of lines to store? */ + line_count++; + if (line_count_goal != 0 && line_count > line_count_goal) + break; + } + + free (line); + + if (unbuffered_read == 0) + zsyncfd (fd); + + return EXECUTION_SUCCESS; +} + +int +mapfile_builtin (list) + WORD_LIST *list; +{ + int opt, code, fd, flags; + intmax_t intval; + long lines, origin, nskip, callback_quantum; + char *array_name, *callback; + + fd = 0; + lines = origin = nskip = 0; + flags = MAPF_CLEARARRAY; + callback_quantum = DEFAULT_QUANTUM; + callback = 0; + delim = '\n'; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "d:u:n:O:tC:c:s:")) != -1) + { + switch (opt) + { + case 'd': + delim = *list_optarg; + 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 'n': + code = legal_number (list_optarg, &intval); + if (code == 0 || intval < 0 || intval != (unsigned)intval) + { + builtin_error (_("%s: invalid line count"), list_optarg); + return (EXECUTION_FAILURE); + } + else + lines = intval; + break; + + case 'O': + code = legal_number (list_optarg, &intval); + if (code == 0 || intval < 0 || intval != (unsigned)intval) + { + builtin_error (_("%s: invalid array origin"), list_optarg); + return (EXECUTION_FAILURE); + } + else + origin = intval; + flags &= ~MAPF_CLEARARRAY; + break; + case 't': + flags |= MAPF_CHOP; + break; + case 'C': + callback = list_optarg; + break; + case 'c': + code = legal_number (list_optarg, &intval); + if (code == 0 || intval <= 0 || intval != (unsigned)intval) + { + builtin_error (_("%s: invalid callback quantum"), list_optarg); + return (EXECUTION_FAILURE); + } + else + callback_quantum = intval; + break; + case 's': + code = legal_number (list_optarg, &intval); + if (code == 0 || intval < 0 || intval != (unsigned)intval) + { + builtin_error (_("%s: invalid line count"), list_optarg); + return (EXECUTION_FAILURE); + } + else + nskip = intval; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) + array_name = DEFAULT_ARRAY_NAME; + else if (list->word == 0 || list->word->word == 0) + { + builtin_error ("internal error: getting variable name"); + return (EXECUTION_FAILURE); + } + else if (list->word->word[0] == '\0') + { + builtin_error (_("empty array variable name")); + return (EX_USAGE); + } + else + array_name = list->word->word; + + if (legal_identifier (array_name) == 0) + { + sh_invalidid (array_name); + return (EXECUTION_FAILURE); + } + + return mapfile (fd, lines, origin, nskip, callback_quantum, callback, array_name, delim, flags); +} + +#else + +int +mapfile_builtin (list) + WORD_LIST *list; +{ + builtin_error (_("array variable support required")); + return (EXECUTION_FAILURE); +} + +#endif /* ARRAY_VARS */ diff --git a/bash-5.1/builtins_org/mkbuiltins.c b/bash-5.1/builtins_org/mkbuiltins.c new file mode 100644 index 0000000..0a7a0e5 --- /dev/null +++ b/bash-5.1/builtins_org/mkbuiltins.c @@ -0,0 +1,1682 @@ +/* mkbuiltins.c - Create builtins.c, builtext.h, and builtdoc.c from + a single source file called builtins.def. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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. */ +/* These flags are for the C code generator, + the C which is produced (./builtin.c) + includes the flags definitions found + in ../builtins.h */ +#define BUILTIN_FLAG_SPECIAL 0x01 +#define BUILTIN_FLAG_ASSIGNMENT 0x02 +#define BUILTIN_FLAG_LOCALVAR 0x04 +#define BUILTIN_FLAG_POSIX_BUILTIN 0x08 +#define BUILTIN_FLAG_REQUIRES 0x10 + +#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 not add functions (xxx_builtin) to the members of the + produced `struct builtin []' */ +int inhibit_functions = 0; + +/* Non-zero means to produce separate help files for each builtin, named by + the builtin name, in `./helpfiles'. */ +int separate_helpfiles = 0; + +/* 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 +}; + +char *localvar_builtins[] = +{ + "declare", "local", "typeset", (char *)NULL +}; + +/* The builtin commands that are special to the POSIX search order. */ +char *posix_builtins[] = +{ + "alias", "bg", "cd", "command", "false", "fc", "fg", "getopts", "jobs", + "kill", "newgrp", "pwd", "read", "true", "umask", "unalias", "wait", + (char *)NULL +}; + +/* The builtin commands that cause requirements on other files. */ +static char *requires_builtins[] = +{ + ".", "command", "exec", "source", "inlib", + (char *)NULL +}; + +/* Forward declarations. */ +static int is_special_builtin (); +static int is_assignment_builtin (); +static int is_localvar_builtin (); +static int is_posix_builtin (); +static int is_requires_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 necessary. */ +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, "-nofunctions") == 0) + inhibit_functions = 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 0 + /* This is now done by a different program */ + if (separate_helpfiles) + { + write_helpfiles (saved_builtins); + } +#endif + + 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 necessary. */ +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 PARAMS((char *, DEF_FILE *, char *)); + +/* Structure handles processor directives. */ +typedef struct { + char *directive; + mk_handler_func_t *function; +} HANDLER_ENTRY; + +extern int builtin_handler PARAMS((char *, DEF_FILE *, char *)); +extern int function_handler PARAMS((char *, DEF_FILE *, char *)); +extern int short_doc_handler PARAMS((char *, DEF_FILE *, char *)); +extern int comment_handler PARAMS((char *, DEF_FILE *, char *)); +extern int depends_on_handler PARAMS((char *, DEF_FILE *, char *)); +extern int produces_handler PARAMS((char *, DEF_FILE *, char *)); +extern int end_handler PARAMS((char *, DEF_FILE *, char *)); +extern int docname_handler PARAMS((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); + free (buffer); + 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 (i < file_size && buffer[i] != '\n') + 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; + if (is_localvar_builtin (name)) + new->flags |= BUILTIN_FLAG_LOCALVAR; + if (is_posix_builtin (name)) + new->flags |= BUILTIN_FLAG_POSIX_BUILTIN; + if (is_requires_builtin (name)) + new->flags |= BUILTIN_FLAG_REQUIRES; + + 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-2015 Free Software Foundation, Inc.", + "", + " This file is part of GNU Bash, the Bourne Again SHell.", + "", + " Bash is free software: you can redistribute it and/or modify", + " it under the terms of the GNU General Public License as published by", + " the Free Software Foundation, either version 3 of the License, or", + " (at your option) any later version.", + "", + " Bash is distributed in the hope that it will be useful,", + " but WITHOUT ANY WARRANTY; without even the implied warranty of", + " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the", + " GNU General Public License for more details.", + "", + " You should have received a copy of the GNU General Public License", + " along with Bash. If not, see .", + "*/", + "", + "/* 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. */", + "", + "/* TRANSLATORS: Please do not translate command names in descriptions */", + "", + "#include \"../builtins.h\"", + (char *)NULL + }; + +char *structfile_footer[] = { + " { (char *)0x0, (sh_builtin_func_t *)0x0, 0, (char **)0x0, (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 necessary 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 PARAMS((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 && inhibit_functions == 0) + fprintf (structfile, "%s, ", builtin->function); + else + fprintf (structfile, "(sh_builtin_func_t *)0x0, "); + + fprintf (structfile, "%s%s%s%s%s%s, %s_doc,\n", + "BUILTIN_ENABLED | STATIC_BUILTIN", + (builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "", + (builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "", + (builtin->flags & BUILTIN_FLAG_LOCALVAR) ? " | LOCALVAR_BUILTIN" : "", + (builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "", + (builtin->flags & BUILTIN_FLAG_REQUIRES) ? " | REQUIRES_BUILTIN" : "", + document_name (builtin)); + + /* Don't translate short document summaries that are identical + to command names */ + if (builtin->shortdoc && strcmp (builtin->name, builtin->shortdoc) == 0) + { + if (inhibit_functions) + fprintf (structfile, " \"%s\", \"%s\" },\n", + builtin->shortdoc ? builtin->shortdoc : builtin->name, + document_name (builtin)); + else + fprintf (structfile, " \"%s\", (char *)NULL },\n", + builtin->shortdoc ? builtin->shortdoc : builtin->name); + } + else + { + if (inhibit_functions) + fprintf (structfile, " N_(\"%s\"), \"%s\" },\n", + builtin->shortdoc ? builtin->shortdoc : builtin->name, + document_name (builtin)); + else + fprintf (structfile, " N_(\"%s\"), (char *)NULL },\n", + builtin->shortdoc ? builtin->shortdoc : builtin->name); + } + } + + 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 necessary. */ + 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); + + } +} + +void +write_dummy_declarations (stream, builtins) + FILE *stream; + ARRAY *builtins; +{ + register int i; + BUILTIN_DESC *builtin; + + for (i = 0; structfile_header[i]; i++) + fprintf (stream, "%s\n", structfile_header[i]); + + for (i = 0; i < builtins->sindex; i++) + { + builtin = (BUILTIN_DESC *)builtins->array[i]; + + /* How to guarantee that no builtin is written more than once? */ + fprintf (stream, "int %s () { return (0); }\n", builtin->function); + } +} + +/* Write an #ifdef string saying what needs to be defined (or not defined) + in order to allow compilation of the code that will follow. + STREAM is the stream to write the information to, + 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, 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 = 0, texinfo = (flags & TEXINFO); documentation && (line = documentation[i]); i++) + { + /* Allow #ifdef's to be written out verbatim, but don't put them into + separate help files. */ + if (*line == '#') + { + if (string_array && filename_p == 0 && single_longdoc_strings == 0) + fprintf (stream, "%s\n", line); + continue; + } + + /* 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)); +} + +static int +is_localvar_builtin (name) + char *name; +{ + return (_find_in_table (name, localvar_builtins)); +} + +static int +is_posix_builtin (name) + char *name; +{ + return (_find_in_table (name, posix_builtins)); +} + +static int +is_requires_builtin (name) + char *name; +{ + return (_find_in_table (name, requires_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-5.1/builtins_org/printf.def b/bash-5.1/builtins_org/printf.def new file mode 100644 index 0000000..0a5f489 --- /dev/null +++ b/bash-5.1/builtins_org/printf.def @@ -0,0 +1,1272 @@ +This file is printf.def, from which is created printf.c. +It implements the builtin "printf" in Bash. + +Copyright (C) 1997-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES printf.c + +$BUILTIN printf +$FUNCTION printf_builtin +$SHORT_DOC printf [-v var] format [arguments] +Formats and prints ARGUMENTS under control of the FORMAT. + +Options: + -v var assign the output to shell variable VAR rather than + display it on the standard output + +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 format specifications described in printf(1), +printf interprets: + + %b expand backslash escape sequences in the corresponding argument + %q quote the argument in a way that can be reused as shell input + %(fmt)T output the date-time string resulting from using FMT as a format + string for strftime(3) + +The format is re-used as necessary to consume all of the arguments. If +there are fewer arguments than the format requires, extra format +specifications behave as if a zero value or null string, as appropriate, +had been supplied. + +Exit Status: +Returns success unless an invalid option is given or a write or assignment +error occurs. +$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 + +#if defined (PREFER_STDARG) +# include +#else +# include +#endif + +#include +#include + +#ifdef HAVE_INTTYPES_H +# include +#endif + +#include "posixtime.h" +#include "../bashansi.h" +#include "../bashintl.h" + +#define NEED_STRFTIME_DECL + +#include "../shell.h" +#include "shmbutil.h" +#include "stdc.h" +#include "bashgetopt.h" +#include "common.h" + +#if defined (PRI_MACROS_BROKEN) +# undef PRIdMAX +#endif + +#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); \ + QUIT; \ + } while (0) + +#define PF(f, func) \ + do { \ + int nw; \ + clearerr (stdout); \ + if (have_fieldwidth && have_precision) \ + nw = vflag ? vbprintf (f, fieldwidth, precision, func) : printf (f, fieldwidth, precision, func); \ + else if (have_fieldwidth) \ + nw = vflag ? vbprintf (f, fieldwidth, func) : printf (f, fieldwidth, func); \ + else if (have_precision) \ + nw = vflag ? vbprintf (f, precision, func) : printf (f, precision, func); \ + else \ + nw = vflag ? vbprintf (f, func) : printf (f, func); \ + tw += nw; \ + QUIT; \ + if (ferror (stdout)) \ + { \ + sh_wrerror (); \ + clearerr (stdout); \ + return (EXECUTION_FAILURE); \ + } \ + } while (0) + +/* We free the buffer used by mklong() if it's `too big'. */ +#define PRETURN(value) \ + do \ + { \ + QUIT; \ + if (vflag) \ + { \ + SHELL_VAR *v; \ + v = builtin_bind_variable (vname, vbuf, 0); \ + stupidly_hack_special_variables (vname); \ + if (v == 0 || readonly_p (v) || noassign_p (v)) \ + return (EXECUTION_FAILURE); \ + } \ + if (conv_bufsize > 4096 ) \ + { \ + free (conv_buf); \ + conv_bufsize = 0; \ + conv_buf = 0; \ + } \ + if (vbsize > 4096) \ + { \ + free (vbuf); \ + vbsize = 0; \ + vbuf = 0; \ + } \ + else if (vbuf) \ + vbuf[0] = 0; \ + if (ferror (stdout) == 0) \ + fflush (stdout); \ + QUIT; \ + if (ferror (stdout)) \ + { \ + sh_wrerror (); \ + clearerr (stdout); \ + return (EXECUTION_FAILURE); \ + } \ + return (value); \ + } \ + while (0) + +#define SKIP1 "#'-+ 0" +#define LENMODS "hjlLtz" + +extern time_t shell_start_time; + +#if !HAVE_ASPRINTF +extern int asprintf PARAMS((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); +#endif + +#if !HAVE_VSNPRINTF +extern int vsnprintf PARAMS((char *, size_t, const char *, va_list)) __attribute__((__format__ (printf, 3, 0))); +#endif + +static void printf_erange PARAMS((char *)); +static int printstr PARAMS((char *, char *, int, int, int)); +static int tescape PARAMS((char *, char *, int *, int *)); +static char *bexpand PARAMS((char *, int, int *, int *)); +static char *vbadd PARAMS((char *, int)); +static int vbprintf PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); +static char *mklong PARAMS((char *, char *, size_t)); +static int getchr PARAMS((void)); +static char *getstr PARAMS((void)); +static int getint PARAMS((void)); +static intmax_t getintmax PARAMS((void)); +static uintmax_t getuintmax PARAMS((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 PARAMS((void)); + +static intmax_t asciicode PARAMS((void)); + +static WORD_LIST *garglist, *orig_arglist; +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; +#if defined (HANDLE_MULTIBYTE) + char mbch[25]; /* 25 > MB_LEN_MAX, plus can handle 4-byte UTF-8 and large Unicode characters*/ + int mbind, mblen; +#endif +#if defined (ARRAY_VARS) + int arrayflags; +#endif + + conversion_error = 0; + retval = EXECUTION_SUCCESS; + + vflag = 0; + + reset_internal_getopt (); + while ((ch = internal_getopt (list, "v:")) != -1) + { + switch (ch) + { + case 'v': + vname = list_optarg; +#if defined (ARRAY_VARS) + arrayflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0; + if (legal_identifier (vname) || valid_array_reference (vname, arrayflags)) +#else + if (legal_identifier (vname)) +#endif + { + vflag = 1; + if (vbsize == 0) + vbuf = xmalloc (vbsize = 16); + vblen = 0; + if (vbuf) + vbuf[0] = 0; + } + else + { + sh_invalidid (vname); + return (EX_USAGE); + } + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; /* skip over possible `--' */ + + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + /* Allow printf -v var "" to act like var="" */ + if (vflag && list->word->word && list->word->word[0] == '\0') + { + SHELL_VAR *v; + v = builtin_bind_variable (vname, "", 0); + stupidly_hack_special_variables (vname); + return ((v == 0 || readonly_p (v) || noassign_p (v)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS); + } + + if (list->word->word == 0 || list->word->word[0] == '\0') + return (EXECUTION_SUCCESS); + + format = list->word->word; + tw = 0; + + garglist = orig_arglist = 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. */ +#if defined (HANDLE_MULTIBYTE) + /* Accommodate possible use of \u or \U, which can result in + multibyte characters */ + memset (mbch, '\0', sizeof (mbch)); + fmt += tescape (fmt, mbch, &mblen, (int *)NULL); + for (mbind = 0; mbind < mblen; mbind++) + PC (mbch[mbind]); +#else + fmt += tescape (fmt, &nextch, (int *)NULL, (int *)NULL); + PC (nextch); +#endif + 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'; + + QUIT; + switch(convch) + { + case 'c': + { + char p; + + p = getchr (); + PF(start, p); + break; + } + + case 's': + { + char *p; + + p = getstr (); + PF(start, p); + break; + } + + case '(': + { + char *timefmt, timebuf[128], *t; + int n; + intmax_t arg; + time_t secs; + struct tm *tm; + + modstart[1] = nextch; /* restore char after left paren */ + timefmt = xmalloc (strlen (fmt) + 3); + fmt++; /* skip over left paren */ + for (t = timefmt, n = 1; *fmt; ) + { + if (*fmt == '(') + n++; + else if (*fmt == ')') + n--; + if (n == 0) + break; + *t++ = *fmt++; + } + *t = '\0'; + if (*++fmt != 'T') + { + builtin_warning (_("`%c': invalid time format specification"), *fmt); + fmt = start; + free (timefmt); + PC (*fmt); + continue; + } + if (timefmt[0] == '\0') + { + timefmt[0] = '%'; + timefmt[1] = 'X'; /* locale-specific current time - should we use `+'? */ + timefmt[2] = '\0'; + } + /* argument is seconds since the epoch with special -1 and -2 */ + /* default argument is equivalent to -1; special case */ + arg = garglist ? getintmax () : -1; + if (arg == -1) + secs = NOW; /* roughly date +%s */ + else if (arg == -2) + secs = shell_start_time; /* roughly $SECONDS */ + else + secs = arg; +#if defined (HAVE_TZSET) + sv_tz ("TZ"); /* XXX -- just make sure */ +#endif + tm = localtime (&secs); + if (tm == 0) + { + secs = 0; + tm = localtime (&secs); + } + n = tm ? strftime (timebuf, sizeof (timebuf), timefmt, tm) : 0; + free (timefmt); + if (n == 0) + timebuf[0] = '\0'; + else + timebuf[sizeof(timebuf) - 1] = '\0'; + /* convert to %s format that preserves fieldwidth and precision */ + modstart[0] = 's'; + modstart[1] = '\0'; + n = printstr (start, timebuf, strlen (timebuf), fieldwidth, precision); /* XXX - %s for now */ + if (n < 0) + { + if (ferror (stdout) == 0) + { + sh_wrerror (); + clearerr (stdout); + } + PRETURN (EXECUTION_FAILURE); + } + 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) + { + if (ferror (stdout) == 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 (p && *p == 0) /* XXX - getstr never returns null */ + xp = savestring ("''"); + else if (ansic_shouldquote (p)) + xp = ansic_quote (p, 0, (int *)0); + else + xp = sh_backslash_quote (p, 0, 3); + 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)) + { + /* PRETURN will print error message. */ + 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 */ + intmax_t mfw, mpr; + + if (string == 0) + string = ""; + +#if 0 + s = fmt; +#endif + if (*fmt == '%') + fmt++; + + ljust = fw = 0; + pr = -1; + mfw = 0; + mpr = -1; + + /* skip flags */ + while (strchr (SKIP1, *fmt)) + { + if (*fmt == '-') + ljust = 1; + fmt++; + } + + /* get fieldwidth, if present. rely on caller to clamp fieldwidth at INT_MAX */ + if (*fmt == '*') + { + fmt++; + fw = fieldwidth; + if (fw < 0) + { + fw = -fw; + ljust = 1; + } + } + else if (DIGIT (*fmt)) + { + mfw = *fmt++ - '0'; + while (DIGIT (*fmt)) + mfw = (mfw * 10) + (*fmt++ - '0'); + /* Error if fieldwidth > INT_MAX here? */ + fw = (mfw < 0 || mfw > INT_MAX) ? INT_MAX : mfw; + } + + /* get precision, if present */ + if (*fmt == '.') + { + fmt++; + if (*fmt == '*') + { + fmt++; + pr = precision; + } + else if (DIGIT (*fmt)) + { + mpr = *fmt++ - '0'; + while (DIGIT (*fmt)) + mpr = (mpr * 10) + (*fmt++ - '0'); + /* Error if precision > INT_MAX here? */ + pr = (mpr < 0 || mpr > INT_MAX) ? INT_MAX : mpr; + } + else + pr = 0; /* "a null digit string is treated as zero" */ + } + +#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, lenp, sawc) + char *estart; + char *cp; + int *lenp, *sawc; +{ + register char *p; + int temp, c, evalue; + unsigned long uvalue; + + p = estart; + if (lenp) + *lenp = 1; + + 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 \xNN, where each N is a + hex digit. */ + case 'x': + for (temp = 2, evalue = 0; ISXDIGIT ((unsigned char)*p) && temp--; p++) + evalue = (evalue * 16) + HEXVALUE (*p); + if (p == estart + 1) + { + builtin_error (_("missing hex digit for \\x")); + *cp = '\\'; + return 0; + } + *cp = evalue & 0xFF; + break; + +#if defined (HANDLE_MULTIBYTE) + case 'u': + case 'U': + temp = (c == 'u') ? 4 : 8; /* \uNNNN \UNNNNNNNN */ + for (uvalue = 0; ISXDIGIT ((unsigned char)*p) && temp--; p++) + uvalue = (uvalue * 16) + HEXVALUE (*p); + if (p == estart + 1) + { + builtin_error (_("missing unicode digit for \\%c"), c); + *cp = '\\'; + return 0; + } + if (uvalue <= 0x7f) /* <= 0x7f translates directly */ + *cp = uvalue; + else + { + temp = u32cconv (uvalue, cp); + cp[temp] = '\0'; + if (lenp) + *lenp = temp; + } + break; +#endif + + 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 defined (HANDLE_MULTIBYTE) + char mbch[25]; + int mbind, mblen; +#endif + + if (string == 0 || len == 0) + { + if (sawc) + *sawc = 0; + if (lenp) + *lenp = 0; + ret = (char *)xmalloc (1); + ret[0] = '\0'; + return (ret); + } + + ret = (char *)xmalloc (len + 1); + for (r = ret, s = string; s && *s; ) + { + c = *s++; + if (c != '\\' || *s == '\0') + { + *r++ = c; + continue; + } + temp = 0; +#if defined (HANDLE_MULTIBYTE) + memset (mbch, '\0', sizeof (mbch)); + s += tescape (s, mbch, &mblen, &temp); +#else + s += tescape (s, &c, (int *)NULL, &temp); +#endif + if (temp) + { + if (sawc) + *sawc = 1; + break; + } + +#if defined (HANDLE_MULTIBYTE) + for (mbind = 0; mbind < mblen; mbind++) + *r++ = mbch[mbind]; +#else + *r++ = c; +#endif + } + + *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 if (blen > 1) + { + 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, (int)strlen (vbuf)); +#endif + + return vbuf; +} + +static int +#if defined (PREFER_STDARG) +vbprintf (const char *format, ...) +#else +vbprintf (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + size_t nlen; + int blen; + + SH_VA_START (args, format); + blen = vsnprintf (vbuf + vblen, vbsize - vblen, format, args); + va_end (args); + + nlen = vblen + blen + 1; + if (nlen >= vbsize) + { + vbsize = ((nlen + 63) >> 6) << 6; + vbuf = (char *)xrealloc (vbuf, vbsize); + SH_VA_START (args, format); + blen = vsnprintf (vbuf + vblen, vbsize - vblen, format, args); + va_end (args); + } + + vblen += blen; + vbuf[vblen] = '\0'; + +#ifdef DEBUG + if (strlen (vbuf) != vblen) + internal_error ("printf:vbprintf: vblen (%d) != strlen (vbuf) (%d)", vblen, (int)strlen (vbuf)); +#endif + + return (blen); +} + +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 (garglist == 0) + return ret; + + 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. */ +#if 0 + ret = 0; /* return partially-converted value from strtoimax */ +#endif + 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); +#if 0 + /* Same POSIX.2 conversion error requirements as getintmax(). */ + ret = 0; +#endif + 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); +#if 0 + /* Same thing about POSIX.2 conversion error requirements. */ + ret = 0; +#endif + 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 intmax_t +asciicode () +{ + register intmax_t ch; +#if defined (HANDLE_MULTIBYTE) + wchar_t wc; + size_t slen; + int mblength; +#endif + DECLARE_MBSTATE; + +#if defined (HANDLE_MULTIBYTE) + slen = strlen (garglist->word->word+1); + wc = 0; + mblength = mbtowc (&wc, garglist->word->word+1, slen); + if (mblength > 0) + ch = wc; /* XXX */ + else +#endif + ch = (unsigned char)garglist->word->word[1]; + + garglist = garglist->next; + return (ch); +} diff --git a/bash-5.1/builtins_org/psize.c b/bash-5.1/builtins_org/psize.c new file mode 100644 index 0000000..30881fb --- /dev/null +++ b/bash-5.1/builtins_org/psize.c @@ -0,0 +1,79 @@ +/* psize.c - Find pipe size. */ + +/* Copyright (C) 1987, 1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 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 . +*/ + +/* 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-5.1/builtins_org/psize.sh b/bash-5.1/builtins_org/psize.sh new file mode 100644 index 0000000..29bc115 --- /dev/null +++ b/bash-5.1/builtins_org/psize.sh @@ -0,0 +1,45 @@ +#! /bin/sh +# +# psize.sh -- determine this system's pipe size, and write a define to +# pipesize.h so ulimit.c can use it. + +: ${TMPDIR:=/tmp} +# try to use mktemp(1) if the system supports it +{ TMPFILE="`mktemp $TMPDIR/pipsize.XXXXXX 2>/dev/null`"; } 2>/dev/null +used_mktemp=true + +if [ -z "$TMPFILE" ]; then + TMPNAME=pipsize.$$ + TMPFILE=$TMPDIR/$TMPNAME + used_mktemp=false +fi + +trap 'rm -f "$TMPFILE" ; exit 1' 1 2 3 6 15 +trap 'rm -f "$TMPFILE"' 0 + +echo "/*" +echo " * pipesize.h" +echo " *" +echo " * This file is automatically generated by psize.sh" +echo " * Do not edit!" +echo " */" +echo "" + +# +# Try to avoid tempfile races. We can't really check for the file's +# existence before we run psize.aux, because `test -e' is not portable, +# `test -h' (test for symlinks) is not portable, and `test -f' only +# checks for regular files. If we used mktemp(1), we're ahead of the +# game. +# +$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-5.1/builtins_org/pushd.def b/bash-5.1/builtins_org/pushd.def new file mode 100644 index 0000000..829f827 --- /dev/null +++ b/bash-5.1/builtins_org/pushd.def @@ -0,0 +1,796 @@ +This file is pushd.def, from which is created pushd.c. It implements the +builtins "pushd", "popd", and "dirs" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES pushd.c + +$BUILTIN pushd +$FUNCTION pushd_builtin +$DEPENDS_ON PUSHD_AND_POPD +$SHORT_DOC pushd [-n] [+N | -N | dir] +Add directories to stack. + +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. + +Options: + -n Suppresses the normal change of directory when adding + directories to the stack, so only the stack is manipulated. + +Arguments: + +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. + + dir Adds DIR to the directory stack at the top, making it the + new current working directory. + +The `dirs' builtin displays the directory stack. + +Exit Status: +Returns success unless an invalid argument is supplied or the directory +change fails. +$END + +$BUILTIN popd +$FUNCTION popd_builtin +$DEPENDS_ON PUSHD_AND_POPD +$SHORT_DOC popd [-n] [+N | -N] +Remove directories from stack. + +Removes entries from the directory stack. With no arguments, removes +the top directory from the stack, and changes to the new top directory. + +Options: + -n Suppresses the normal change of directory when removing + directories from the stack, so only the stack is manipulated. + +Arguments: + +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. + +The `dirs' builtin displays the directory stack. + +Exit Status: +Returns success unless an invalid argument is supplied or the directory +change fails. +$END + +$BUILTIN dirs +$FUNCTION dirs_builtin +$DEPENDS_ON PUSHD_AND_POPD +$SHORT_DOC dirs [-clpv] [+N] [-N] +Display directory stack. + +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. + +Options: + -c clear the directory stack by deleting all of the elements + -l do not print tilde-prefixed versions of directories relative + to your home directory + -p print the directory stack with one entry per line + -v print the directory stack with one entry per line prefixed + with its position in the stack + +Arguments: + +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. + +Exit Status: +Returns success unless an invalid option is supplied or an error occurs. +$END + +#include + +#if defined (PUSHD_AND_POPD) +#include +#if defined (HAVE_SYS_PARAM_H) +# 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 PARAMS((int, char *)); +static void clear_directory_stack PARAMS((void)); +static int cd_to_string PARAMS((char *)); +static int change_to_temp PARAMS((char *)); +static void add_dirstack_element PARAMS((char *)); +static int get_dirstack_index PARAMS((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; + + CHECK_HELPOPT (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 (EX_USAGE); + } + + 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 (EX_USAGE); + } + 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; + + CHECK_HELPOPT (list); + + 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 (EX_USAGE); + } + which_word = list->word->word; + } + else if (*list->word->word == '-') + { + sh_invalidopt (list->word->word); + builtin_usage (); + return (EX_USAGE); + } + else if (*list->word->word) + { + builtin_error (_("%s: invalid argument"), list->word->word); + builtin_usage (); + return (EX_USAGE); + } + else + break; + } + + if (which > directory_list_offset || (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; + if (i < 0 || i > directory_list_offset) + { + pushd_error (directory_list_offset, which_word ? which_word : ""); + return (EXECUTION_FAILURE); + } + 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; + + CHECK_HELPOPT (list); + 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 (EX_USAGE); + } + sign = (*list->word->word == '+') ? 1 : -1; + desired_index = get_dirstack_index (i, sign, &index_flag); + } + else + { + sh_invalidopt (list->word->word); + builtin_usage (); + return (EX_USAGE); + } + } + + 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 (sh_chkwrite (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'); + + return (sh_chkwrite (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 = (flags&1) ? polite_directory_format (d) : 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\ + Options:\n\ + -c clear the directory stack by deleting all of the elements\n\ + -l do not print tilde-prefixed versions of directories relative\n\ + to your home directory\n\ + -p print the directory stack with one entry per line\n\ + -v print the directory stack with one entry per line prefixed\n\ + with its position in the stack\n\ + \n\ + Arguments:\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\ + Options:\n\ + -n Suppresses the normal change of directory when adding\n\ + directories to the stack, so only the stack is manipulated.\n\ + \n\ + Arguments:\n\ + +N Rotates the stack so that the Nth directory (counting\n\ + from the left of the list shown by `dirs', starting with\n\ + zero) is at the top.\n\ + \n\ + -N Rotates the stack so that the Nth directory (counting\n\ + from the right of the list shown by `dirs', starting with\n\ + zero) is at the top.\n\ + \n\ + dir Adds DIR to the directory stack at the top, making it the\n\ + new current working directory.\n\ + \n\ + The `dirs' builtin displays the directory stack."), + (char *)NULL +}; + +char * const popd_doc[] = { +N_("Removes entries from the directory stack. With no arguments, removes\n\ + the top directory from the stack, and changes to the new top directory.\n\ + \n\ + Options:\n\ + -n Suppresses the normal change of directory when removing\n\ + directories from the stack, so only the stack is manipulated.\n\ + \n\ + Arguments:\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\ + The `dirs' builtin displays the directory stack."), + (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-5.1/builtins_org/read.def b/bash-5.1/builtins_org/read.def new file mode 100644 index 0000000..39e16e8 --- /dev/null +++ b/bash-5.1/builtins_org/read.def @@ -0,0 +1,1190 @@ +This file is read.def, from which is created read.c. +It implements the builtin "read" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES read.c + +$BUILTIN read +$FUNCTION read_builtin +$SHORT_DOC read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...] +Read a line from the standard input and split it into fields. + +Reads a single line from the standard input, or from file descriptor FD +if the -u option is supplied. The line is split into fields as with word +splitting, and the first word is assigned to the first NAME, the second +word to the second NAME, and so on, with any 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. + +Options: + -a array assign the words read to sequential indices of the array + variable ARRAY, starting at zero + -d delim continue until the first character of DELIM is read, rather + than newline + -e use Readline to obtain the line + -i text use TEXT as the initial text for Readline + -n nchars return after reading NCHARS characters rather than waiting + for a newline, but honor a delimiter if fewer than + NCHARS characters are read before the delimiter + -N nchars return only after reading exactly NCHARS characters, unless + EOF is encountered or read times out, ignoring any + delimiter + -p prompt output the string PROMPT without a trailing newline before + attempting to read + -r do not allow backslashes to escape any characters + -s do not echo input coming from a terminal + -t timeout time out and return failure if a complete line of + input is not read within TIMEOUT seconds. The value of the + TMOUT variable is the default timeout. TIMEOUT may be a + fractional number. If TIMEOUT is 0, read returns + immediately, without trying to read any data, returning + success only if input is available on the specified + file descriptor. The exit status is greater than 128 + if the timeout is exceeded + -u fd read from file descriptor FD instead of the standard input + +Exit Status: +The return code is zero, unless end-of-file is encountered, read times out +(in which case it's greater than 128), a variable assignment error occurs, +or an invalid file descriptor is supplied as the argument to -u. +$END + +#include + +#include "bashtypes.h" +#include "posixstat.h" + +#include + +#include "bashansi.h" + +#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 "trap.h" + +#include + +#if defined (READLINE) +#include "../bashline.h" +#include +#endif + +#if defined (BUFFERED_INPUT) +# include "input.h" +#endif + +#include "shmbutil.h" + +#if !defined(errno) +extern int errno; +#endif + +struct ttsave +{ + int fd; + TTYSTRUCT attrs; +}; + +#if defined (READLINE) +static void reset_attempted_completion_function PARAMS((char *)); +static int set_itext PARAMS((void)); +static char *edit_line PARAMS((char *, char *)); +static void set_eol_delim PARAMS((int)); +static void reset_eol_delim PARAMS((char *)); +#endif +static SHELL_VAR *bind_read_variable PARAMS((char *, char *)); +#if defined (HANDLE_MULTIBYTE) +static int read_mbchar PARAMS((int, char *, int, int, int)); +#endif +static void ttyrestore PARAMS((struct ttsave *)); + +static sighandler sigalrm PARAMS((int)); +static void reset_alarm PARAMS((void)); + +/* Try this to see what the rest of the shell can do with the information. */ +procenv_t alrmbuf; +int sigalrm_seen; + +static int reading, tty_modified; +static SigHandler *old_alrm; +static unsigned char delim; + +static struct ttsave termsave; + +/* In all cases, SIGALRM just sets a flag that we check periodically. This + avoids problems with the semi-tricky stuff we do with the xfree of + input_string at the top of the unwind-protect list (see below). */ + +/* Set a flag that CHECK_ALRM can check. This relies on zread or read_builtin + calling trap.c:check_signals(), which knows about sigalrm_seen and alrmbuf. */ +static sighandler +sigalrm (s) + int s; +{ + sigalrm_seen = 1; +} + +static void +reset_alarm () +{ + /* Cancel alarm before restoring signal handler. */ + falarm (0, 0); + set_signal_handler (SIGALRM, old_alrm); +} + +/* 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, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2, nflag; + volatile int i; + int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul; + int raw, edit, nchars, silent, have_timeout, ignore_delim, fd; + int lastsig, t_errno; + int mb_cur_max; + unsigned int tmsec, tmusec; + long ival, uval; + intmax_t intval; + char c; + char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; + char *e, *t, *t1, *ps2, *tofree; + struct stat tsb; + SHELL_VAR *var; + TTYSTRUCT ttattrs, ttset; +#if defined (ARRAY_VARS) + WORD_LIST *alist; + int vflags; +#endif +#if defined (READLINE) + char *rlbuf, *itext; + int rlind; + FILE *save_instream; +#endif + + USE_VAR(size); + USE_VAR(i); + USE_VAR(pass_next); + USE_VAR(print_ps2); + USE_VAR(saw_escape); + USE_VAR(input_is_pipe); +/* USE_VAR(raw); */ + USE_VAR(edit); + USE_VAR(tmsec); + USE_VAR(tmusec); + 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); + USE_VAR(itext); +#endif + USE_VAR(list); + USE_VAR(ps2); + USE_VAR(lastsig); + + sigalrm_seen = reading = tty_modified = 0; + + 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 = itext = (char *)0; + rlind = 0; +#endif + + mb_cur_max = MB_CUR_MAX; + tmsec = tmusec = 0; /* no timeout */ + nr = nchars = input_is_tty = input_is_pipe = unbuffered_read = have_timeout = 0; + delim = '\n'; /* read until newline */ + ignore_delim = nflag = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "ersa:d:i:n:p:t:u:N:")) != -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; + case 'i': +#if defined (READLINE) + itext = list_optarg; +#endif + break; +#if defined (ARRAY_VARS) + case 'a': + arrayname = list_optarg; + break; +#endif + case 't': + code = uconvert (list_optarg, &ival, &uval, (char **)NULL); + if (code == 0 || ival < 0 || uval < 0) + { + builtin_error (_("%s: invalid timeout specification"), list_optarg); + return (EXECUTION_FAILURE); + } + else + { + have_timeout = 1; + tmsec = ival; + tmusec = uval; + } + break; + case 'N': + ignore_delim = 1; + delim = -1; + case 'n': + nflag = 1; + 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; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + /* `read -t 0 var' tests whether input is available with select/FIONREAD, + and fails if those are unavailable */ + if (have_timeout && tmsec == 0 && tmusec == 0) +#if 0 + return (EXECUTION_FAILURE); +#else + return (input_avail (fd) ? EXECUTION_SUCCESS : EXECUTION_FAILURE); +#endif + + /* Convenience: check early whether or not the first of possibly several + variable names is a valid identifier, and bail early if so. */ +#if defined (ARRAY_VARS) + vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0; + if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, vflags) == 0) +#else + if (list && legal_identifier (list->word->word) == 0) +#endif + { + sh_invalidid (list->word->word); + return (EXECUTION_FAILURE); + } + + /* If we're asked to ignore the delimiter, make sure we do. */ + if (ignore_delim) + delim = -1; + + /* IF IFS is unset, we use the default of " \t\n". */ + ifs_chars = getifs (); + if (ifs_chars == 0) /* XXX - shouldn't happen */ + ifs_chars = ""; + /* If we want to read exactly NCHARS chars, don't split on IFS */ + if (ignore_delim) + ifs_chars = ""; + for (skip_ctlesc = skip_ctlnul = 0, e = ifs_chars; *e; e++) + skip_ctlesc |= *e == CTLESC, skip_ctlnul |= *e == CTLNUL; + + input_string = (char *)xmalloc (size = 112); /* XXX was 128 */ + input_string[0] = '\0'; + + /* More input and options validation */ + if (nflag == 1 && nchars == 0) + { + retval = read (fd, &c, 0); + retval = (retval >= 0) ? EXECUTION_SUCCESS : EXECUTION_FAILURE; + goto assign_vars; /* bail early if asked to read 0 chars */ + } + + /* $TMOUT, if set, is the default timeout for read. */ + if (have_timeout == 0 && (e = get_string_value ("TMOUT"))) + { + code = uconvert (e, &ival, &uval, (char **)NULL); + if (code == 0 || ival < 0 || uval < 0) + tmsec = tmusec = 0; + else + { + tmsec = ival; + tmusec = uval; + } + } + + 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 + +#if 1 + input_is_tty = isatty (fd); +#else + input_is_tty = 1; +#endif + 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; +#if defined (READLINE) + itext = (char *)NULL; +#endif + edit = silent = 0; + } + +#if defined (READLINE) + if (edit) + add_unwind_protect (xfree, rlbuf); +#endif + + pass_next = 0; /* Non-zero signifies last char was backslash. */ + saw_escape = 0; /* Non-zero signifies that we saw an escape char */ + + if (tmsec > 0 || tmusec > 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)) + tmsec = tmusec = 0; + } + + if (tmsec > 0 || tmusec > 0) + { + code = setjmp_nosigs (alrmbuf); + if (code) + { + sigalrm_seen = 0; + /* Tricky. The top of the unwind-protect stack is the free of + input_string. We want to run all the rest and use input_string, + so we have to save input_string temporarily, run the unwind- + protects, then restore input_string so we can use it later */ + orig_input_string = 0; + input_string[i] = '\0'; /* make sure it's terminated */ + if (i == 0) + { + t = (char *)xmalloc (1); + t[0] = 0; + } + else + t = savestring (input_string); + + run_unwind_frame ("read_builtin"); + input_string = t; + retval = 128+SIGALRM; + goto assign_vars; + } + if (interactive_shell == 0) + initialize_terminating_signals (); + old_alrm = set_signal_handler (SIGALRM, sigalrm); + add_unwind_protect (reset_alarm, (char *)NULL); +#if defined (READLINE) + if (edit) + { + add_unwind_protect (reset_attempted_completion_function, (char *)NULL); + add_unwind_protect (bashline_reset_event_hook, (char *)NULL); + } +#endif + falarm (tmsec, tmusec); + } + + /* 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() */ + termsave.fd = fd; + ttgetattr (fd, &ttattrs); + termsave.attrs = ttattrs; + + ttset = ttattrs; + i = silent ? ttfd_cbreak (fd, &ttset) : ttfd_onechar (fd, &ttset); + if (i < 0) + sh_ttyerror (1); + tty_modified = 1; + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); + if (interactive_shell == 0) + initialize_terminating_signals (); + } + } + else if (silent) /* turn off echo but leave term in canonical mode */ + { + /* ttsave (); */ + termsave.fd = fd; + ttgetattr (fd, &ttattrs); + termsave.attrs = ttattrs; + + ttset = ttattrs; + i = ttfd_noecho (fd, &ttset); /* ttnoecho (); */ + if (i < 0) + sh_ttyerror (1); + + tty_modified = 1; + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); + if (interactive_shell == 0) + initialize_terminating_signals (); + } + +#if defined (READLINE) + save_instream = 0; + if (edit && fd != 0) + { + if (bash_readline_initialized == 0) + initialize_readline (); + + unwind_protect_var (rl_instream); + save_instream = rl_instream; + rl_instream = fdopen (fd, "r"); + } +#endif + + /* 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); + + CHECK_ALRM; + if ((nchars > 0) && (input_is_tty == 0) && ignore_delim) /* read -N */ + unbuffered_read = 2; + else if ((nchars > 0) || (delim != '\n') || input_is_pipe) + unbuffered_read = 1; + + if (prompt && edit == 0) + { + fprintf (stderr, "%s", prompt); + fflush (stderr); + } + +#if defined (__CYGWIN__) && defined (O_TEXT) + setmode (0, O_TEXT); +#endif + + ps2 = 0; + for (print_ps2 = eof = retval = 0;;) + { + CHECK_ALRM; + +#if defined (READLINE) + if (edit) + { + /* If we have a null delimiter, don't treat NULL as ending the line */ + if (rlbuf && rlbuf[rlind] == '\0' && delim != '\0') + { + free (rlbuf); + rlbuf = (char *)0; + } + if (rlbuf == 0) + { + reading = 1; + rlbuf = edit_line (prompt ? prompt : "", itext); + reading = 0; + rlind = 0; + } + if (rlbuf == 0) + { + eof = 1; + break; + } + c = rlbuf[rlind++]; + } + else + { +#endif + + if (print_ps2) + { + if (ps2 == 0) + ps2 = get_string_value ("PS2"); + fprintf (stderr, "%s", ps2 ? ps2 : ""); + fflush (stderr); + print_ps2 = 0; + } + + reading = 1; + CHECK_ALRM; + errno = 0; + if (unbuffered_read == 2) + retval = posixly_correct ? zreadintr (fd, &c, 1) : zreadn (fd, &c, nchars - nr); + else if (unbuffered_read) + retval = posixly_correct ? zreadintr (fd, &c, 1) : zread (fd, &c, 1); + else + retval = posixly_correct ? zreadcintr (fd, &c) : zreadc (fd, &c); + reading = 0; + + if (retval <= 0) + { + int t; + + t = errno; + if (retval < 0 && errno == EINTR) + { + check_signals (); /* in case we didn't call zread via zreadc */ + lastsig = LASTSIG(); + if (lastsig == 0) + lastsig = trapped_signal_received; +#if 0 + run_pending_traps (); /* because interrupt_immediately is not set */ +#endif + } + else + lastsig = 0; + if (terminating_signal && tty_modified) + ttyrestore (&termsave); /* fix terminal before exiting */ + CHECK_TERMSIG; + eof = 1; + errno = t; /* preserve it for the error message below */ + break; + } + + QUIT; /* in case we didn't call check_signals() */ +#if defined (READLINE) + } +#endif + + if (retval <= 0) /* XXX shouldn't happen */ + CHECK_ALRM; + + /* XXX -- use i + mb_cur_max (at least 4) for multibyte/read_mbchar */ + if (i + (mb_cur_max > 4 ? mb_cur_max : 4) >= size) + { + char *t; + t = (char *)xrealloc (input_string, size += 128); + + /* Only need to change unwind-protect if input_string changes */ + if (t != input_string) + { + input_string = t; + remove_unwind_protect (); + add_unwind_protect (xfree, input_string); + } + } + + /* If the next character is to be accepted verbatim, a backslash + newline pair still disappears from the input. */ + if (pass_next) + { + pass_next = 0; + if (c == '\n') + { + if (skip_ctlesc == 0 && i > 0) + i--; /* back up over the CTLESC */ + if (interactive && input_is_tty && raw == 0) + print_ps2 = 1; + } + else + goto add_char; + continue; + } + + /* This may cause problems if IFS contains CTLESC */ + if (c == '\\' && raw == 0) + { + pass_next++; + if (skip_ctlesc == 0) + { + saw_escape++; + input_string[i++] = CTLESC; + } + continue; + } + + if (ignore_delim == 0 && (unsigned char)c == delim) + break; + + if (c == '\0' && delim != '\0') + continue; /* skip NUL bytes in input */ + + if ((skip_ctlesc == 0 && c == CTLESC) || (skip_ctlnul == 0 && c == CTLNUL)) + { + saw_escape++; + input_string[i++] = CTLESC; + } + +add_char: + input_string[i++] = c; + CHECK_ALRM; + +#if defined (HANDLE_MULTIBYTE) + /* XXX - what if C == 127? Can DEL introduce a multibyte sequence? */ + if (mb_cur_max > 1 && is_basic (c) == 0) + { + input_string[i] = '\0'; /* for simplicity and debugging */ + /* If we got input from readline, grab the next multibyte char from + rlbuf. */ +# if defined (READLINE) + if (edit) + { + size_t clen; + clen = mbrlen (rlbuf + rlind - 1, mb_cur_max, (mbstate_t *)NULL); + /* We only deal with valid multibyte sequences longer than one + byte. If we get anything else, we leave the one character + copied and move on to the next. */ + if ((int)clen > 1) + { + memcpy (input_string+i, rlbuf+rlind, clen-1); + i += clen - 1; + rlind += clen - 1; + } + } + else +# endif + if (locale_utf8locale == 0 || ((c & 0x80) != 0)) + i += read_mbchar (fd, input_string, i, c, unbuffered_read); + } +#endif + + nr++; + + if (nchars > 0 && nr >= nchars) + break; + } + input_string[i] = '\0'; + CHECK_ALRM; + +#if defined (READLINE) + if (edit) + free (rlbuf); +#endif + + if (retval < 0) + { + t_errno = errno; + if (errno != EINTR) + builtin_error (_("read error: %d: %s"), fd, strerror (errno)); + run_unwind_frame ("read_builtin"); + return ((t_errno != EINTR) ? EXECUTION_FAILURE : 128+lastsig); + } + + if (tmsec > 0 || tmusec > 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) + ttyrestore (&termsave); + } + else if (silent) + ttyrestore (&termsave); + + if (unbuffered_read == 0) + zsyncfd (fd); + +#if defined (READLINE) + if (save_instream) + rl_instream = save_instream; /* can't portably free it */ +#endif + + discard_unwind_frame ("read_builtin"); + + retval = eof ? EXECUTION_FAILURE : EXECUTION_SUCCESS; + +assign_vars: + +#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); + free (input_string); + return (EXECUTION_FAILURE); + } + + var = find_or_make_array_variable (arrayname, 1); + if (var == 0) + { + free (input_string); + return EXECUTION_FAILURE; /* readonly or noassign */ + } + if (assoc_p (var)) + { + builtin_error (_("%s: cannot convert associative to indexed array"), arrayname); + free (input_string); + return EXECUTION_FAILURE; /* existing associative array */ + } + else if (invisible_p (var)) + VUNSETATTR (var, att_invisible); + array_flush (array_cell (var)); + + alist = list_string (input_string, ifs_chars, 0); + if (alist) + { + if (saw_escape) + dequote_list (alist); + else + word_list_remove_quoted_nulls (alist); + assign_array_var_from_word_list (var, alist, 0); + dispose_words (alist); + } + free (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); + if (var == 0 || readonly_p (var) || noassign_p (var)) + retval = EXECUTION_FAILURE; + else + 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, vflags) == 0) +#else + if (legal_identifier (varname) == 0) +#endif + { + sh_invalidid (varname); + free (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); + free (t1); + } + else + var = bind_read_variable (varname, t ? t : ""); + } + else + { + t = (char *)0; + var = bind_read_variable (varname, ""); + } + + FREE (t); + if (var == 0) + { + free (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, vflags) == 0) +#else + if (legal_identifier (list->word->word) == 0) +#endif + { + sh_invalidid (list->word->word); + free (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. */ + tofree = NULL; + if (*input_string) + { + t1 = input_string; + t = get_word_from_string (&input_string, ifs_chars, &e); + if (*input_string == 0) + tofree = input_string = t; + else + { + input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape); + tofree = t; + } + } +#endif + + if (saw_escape && input_string && *input_string) + { + t = dequote_string (input_string); + var = bind_read_variable (list->word->word, t); + free (t); + } + else + var = bind_read_variable (list->word->word, input_string ? input_string : ""); + + if (var) + { + stupidly_hack_special_variables (list->word->word); + VUNSETATTR (var, att_invisible); + } + else + retval = EXECUTION_FAILURE; + + FREE (tofree); + free (orig_input_string); + + return (retval); +} + +static SHELL_VAR * +bind_read_variable (name, value) + char *name, *value; +{ + SHELL_VAR *v; + + v = builtin_bind_variable (name, value, 0); + return (v == 0 ? v + : ((readonly_p (v) || noassign_p (v)) ? (SHELL_VAR *)NULL : v)); +} + +#if defined (HANDLE_MULTIBYTE) +static int +read_mbchar (fd, string, ind, ch, unbuffered) + int fd; + char *string; + int ind, ch, unbuffered; +{ + char mbchar[MB_LEN_MAX + 1]; + int i, n, r; + char c; + size_t ret; + mbstate_t ps, ps_back; + wchar_t wc; + + memset (&ps, '\0', sizeof (mbstate_t)); + memset (&ps_back, '\0', sizeof (mbstate_t)); + + mbchar[0] = ch; + i = 1; + for (n = 0; n <= MB_LEN_MAX; n++) + { + ps_back = ps; + ret = mbrtowc (&wc, mbchar, i, &ps); + if (ret == (size_t)-2) + { + ps = ps_back; + + /* We don't want to be interrupted during a multibyte char read */ + if (unbuffered == 2) + r = zreadn (fd, &c, 1); + else if (unbuffered) + r = zread (fd, &c, 1); + else + r = zreadc (fd, &c); + if (r <= 0) + goto mbchar_return; + mbchar[i++] = c; + continue; + } + else if (ret == (size_t)-1 || ret == (size_t)0 || ret > (size_t)0) + break; + } + +mbchar_return: + if (i > 1) /* read a multibyte char */ + /* mbchar[0] is already string[ind-1] */ + for (r = 1; r < i; r++) + string[ind+r-1] = mbchar[r]; + return i - 1; +} +#endif + + +static void +ttyrestore (ttp) + struct ttsave *ttp; +{ + ttsetattr (ttp->fd, &(ttp->attrs)); + tty_modified = 0; +} + +void +read_tty_cleanup () +{ + if (tty_modified) + ttyrestore (&termsave); +} + +int +read_tty_modified () +{ + return (tty_modified); +} + +#if defined (READLINE) +static rl_completion_func_t *old_attempted_completion_function = 0; +static rl_hook_func_t *old_startup_hook; +static char *deftext; + +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 int +set_itext () +{ + int r1, r2; + + r1 = r2 = 0; + if (old_startup_hook) + r1 = (*old_startup_hook) (); + if (deftext) + { + r2 = rl_insert_text (deftext); + deftext = (char *)NULL; + rl_startup_hook = old_startup_hook; + old_startup_hook = (rl_hook_func_t *)NULL; + } + return (r1 || r2); +} + +static char * +edit_line (p, itext) + char *p; + char *itext; +{ + 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; + bashline_set_event_hook (); + if (itext) + { + old_startup_hook = rl_startup_hook; + rl_startup_hook = set_itext; + deftext = itext; + } + + ret = readline (p); + + rl_attempted_completion_function = old_attempted_completion_function; + old_attempted_completion_function = (rl_completion_func_t *)NULL; + bashline_reset_event_hook (); + + 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 (); + + /* Save the old delimiter char binding */ + old_newline_ctype = cmap[RETURN].type; + old_newline_func = cmap[RETURN].function; + old_delim_ctype = cmap[c].type; + old_delim_func = cmap[c].function; + + /* Change newline to self-insert */ + cmap[RETURN].type = ISFUNC; + cmap[RETURN].function = rl_insert; + + /* Bind the delimiter character to accept-line. */ + 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-5.1/builtins_org/reserved.def b/bash-5.1/builtins_org/reserved.def new file mode 100644 index 0000000..33184b0 --- /dev/null +++ b/bash-5.1/builtins_org/reserved.def @@ -0,0 +1,288 @@ +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-2019 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$BUILTIN for +$SHORT_DOC for NAME [in WORDS ... ] ; do COMMANDS; done +Execute commands for each member in a list. + +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. + +Exit Status: +Returns the status of the last command executed. +$END + +$BUILTIN for (( +$DOCNAME arith_for +$SHORT_DOC for (( exp1; exp2; exp3 )); do COMMANDS; done +Arithmetic for loop. + +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. + +Exit Status: +Returns the status of the last command executed. +$END + +$BUILTIN select +$SHORT_DOC select NAME [in WORDS ... ;] do COMMANDS; done +Select words from a list and execute commands. + +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. + +Exit Status: +Returns the status of the last command executed. +$END + +$BUILTIN time +$SHORT_DOC time [-p] pipeline +Report time consumed by pipeline's execution. + +Execute PIPELINE and print a summary of the real time, user CPU time, +and system CPU time spent executing PIPELINE when it terminates. + +Options: + -p print the timing summary in the portable Posix format + +The value of the TIMEFORMAT variable is used as the output format. + +Exit Status: +The return status is the return status of PIPELINE. +$END + +$BUILTIN case +$SHORT_DOC case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac +Execute commands based on pattern matching. + +Selectively execute COMMANDS based upon WORD matching PATTERN. The +`|' is used to separate multiple patterns. + +Exit Status: +Returns the status of the last command executed. +$END + +$BUILTIN if +$SHORT_DOC if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi +Execute commands based on conditional. + +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. + +Exit Status: +Returns the status of the last command executed. +$END + +$BUILTIN while +$SHORT_DOC while COMMANDS; do COMMANDS; done +Execute commands as long as a test succeeds. + +Expand and execute COMMANDS as long as the final command in the +`while' COMMANDS has an exit status of zero. + +Exit Status: +Returns the status of the last command executed. +$END + +$BUILTIN until +$SHORT_DOC until COMMANDS; do COMMANDS; done +Execute commands as long as a test does not succeed. + +Expand and execute COMMANDS as long as the final command in the +`until' COMMANDS has an exit status which is not zero. + +Exit Status: +Returns the status of the last command executed. +$END + +$BUILTIN coproc +$SHORT_DOC coproc [NAME] command [redirections] +Create a coprocess named NAME. + +Execute COMMAND asynchronously, with the standard output and standard +input of the command connected via a pipe to file descriptors assigned +to indices 0 and 1 of an array variable NAME in the executing shell. +The default NAME is "COPROC". + +Exit Status: +The coproc command returns an exit status of 0. +$END + +$BUILTIN function +$SHORT_DOC function name { COMMANDS ; } or name () { COMMANDS ; } +Define shell function. + +Create a shell function named NAME. When invoked as a simple command, +NAME runs COMMANDs in the calling shell's context. When NAME is invoked, +the arguments are passed to the function as $1...$n, and the function's +name is in $FUNCNAME. + +Exit Status: +Returns success unless NAME is readonly. +$END + +$BUILTIN { ... } +$DOCNAME grouping_braces +$SHORT_DOC { COMMANDS ; } +Group commands as a unit. + +Run a set of commands in a group. This is one way to redirect an +entire set of commands. + +Exit Status: +Returns the status of the last command executed. +$END + +$BUILTIN % +$DOCNAME fg_percent +$SHORT_DOC job_spec [&] +Resume job in foreground. + +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'. + +Exit Status: +Returns the status of the resumed job. +$END + +$BUILTIN (( ... )) +$DOCNAME arith +$SHORT_DOC (( expression )) +Evaluate arithmetic expression. + +The EXPRESSION is evaluated according to the rules for arithmetic +evaluation. Equivalent to `let "EXPRESSION"'. + +Exit Status: +Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise. +$END + +$BUILTIN [[ ... ]] +$DOCNAME conditional +$SHORT_DOC [[ expression ]] +Execute conditional command. + +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. +When the `=~' operator is used, the string to the right of the operator +is matched as a regular expression. + +The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to +determine the expression's value. + +Exit Status: +0 or 1 depending on value of EXPRESSION. +$END + +$BUILTIN variables +$DOCNAME variable_help +$SHORT_DOC variables - Names and meanings of some shell variables +Common shell variable names and usage. + +BASH_VERSION Version information for this Bash. +CDPATH A colon-separated list of directories to search + for directories 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-5.1/builtins_org/return.def b/bash-5.1/builtins_org/return.def new file mode 100644 index 0000000..03c98eb --- /dev/null +++ b/bash-5.1/builtins_org/return.def @@ -0,0 +1,71 @@ +This file is return.def, from which is created return.c. +It implements the builtin "return" in Bash. + +Copyright (C) 1987-2015 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES return.c + +$BUILTIN return + +$FUNCTION return_builtin +$SHORT_DOC return [n] +Return from a shell function. + +Causes a function or sourced script to exit with the return value +specified by N. If N is omitted, the return status is that of the +last command executed within the function or script. + +Exit Status: +Returns N, or failure if the shell is not executing a function or script. +$END + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "../bashintl.h" + +#include "../shell.h" +#include "../execute_cmd.h" +#include "common.h" +#include "bashgetopt.h" + +/* 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; +{ + CHECK_HELPOPT (list); + + return_catch_value = get_exitstat (list); + + if (return_catch_flag) + sh_longjmp (return_catch, 1); + else + { + builtin_error (_("can only `return' from a function or sourced script")); + return (EX_USAGE); + } +} diff --git a/bash-5.1/builtins_org/set.def b/bash-5.1/builtins_org/set.def new file mode 100644 index 0000000..8ee0165 --- /dev/null +++ b/bash-5.1/builtins_org/set.def @@ -0,0 +1,1018 @@ +This file is set.def, from which is created set.c. +It implements the "set" and "unset" builtins in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$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 "../parser.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 + +$BUILTIN set +$FUNCTION set_builtin +$SHORT_DOC set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] +Set or unset values of shell options and positional parameters. + +Change the value of shell attributes and positional parameters, or +display the names and values of shell variables. + +Options: + -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 +#if defined (JOB_CONTROL) + monitor same as -m +#endif + noclobber same as -C + noexec same as -n + noglob same as -f + nolog currently accepted but ignored +#if defined (JOB_CONTROL) + notify same as -b +#endif + nounset same as -u + onecmd same as -t + physical same as -P + 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 Posix 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 resolve symbolic links when executing commands + such as cd which change the current directory. + -T If set, the DEBUG and RETURN traps are inherited by shell functions. + -- Assign any remaining arguments to the positional parameters. + If there are no remaining arguments, the positional parameters + are unset. + - 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. + +Exit Status: +Returns success unless an invalid option is given. +$END + +typedef int setopt_set_func_t PARAMS((int, char *)); +typedef int setopt_get_func_t PARAMS((char *)); + +static int find_minus_o_option PARAMS((char *)); + +static void print_minus_o_option PARAMS((char *, int, int)); +static void print_all_shell_variables PARAMS((void)); + +static int set_ignoreeof PARAMS((int, char *)); +static int set_posix_mode PARAMS((int, char *)); + +#if defined (READLINE) +static int set_edit_mode PARAMS((int, char *)); +static int get_edit_mode PARAMS((char *)); +#endif + +#if defined (HISTORY) +static int bash_set_history PARAMS((int, char *)); +#endif + +static const char * const on = "on"; +static const char * const off = "off"; + +static int previous_option_value; + +/* 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. If you add a new variable name here + that doesn't have a corresponding single-character option letter, make + sure to set the value appropriately in reset_shell_options. */ +const 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', &enable_history_list, 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 }, +#if defined (JOB_CONTROL) + { "monitor", 'm', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +#endif + { "noclobber", 'C', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "noexec", 'n', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, + { "noglob", 'f', (int *)NULL, (setopt_set_func_t *)NULL, (setopt_get_func_t *)NULL }, +#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))) + +static int +find_minus_o_option (name) + char *name; +{ + register int i; + + for (i = 0; o_options[i].name; i++) + if (STREQ (name, o_options[i].name)) + return i; + return -1; +} + +int +minus_o_option_value (name) + char *name; +{ + register int i; + int *on_or_off; + + i = find_minus_o_option (name); + if (i < 0) + return (-1); + + 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)); +} + +#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; +} + +char * +get_current_options () +{ + char *temp; + int i, posixopts; + + posixopts = num_posix_options (); /* shopts modified by posix mode */ + /* Make the buffer big enough to hold the set -o options and the shopt + options modified by posix mode. */ + temp = (char *)xmalloc (1 + N_O_OPTIONS + posixopts); + for (i = 0; o_options[i].name; i++) + { + if (o_options[i].letter) + temp[i] = *(find_flag (o_options[i].letter)); + else + temp[i] = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name); + } + + /* Add the shell options that are modified by posix mode to the end of the + bitmap. They will be handled in set_current_options() */ + get_posix_options (temp+i); + temp[i+posixopts] = '\0'; + return (temp); +} + +void +set_current_options (bitmap) + const char *bitmap; +{ + int i, v, cv, *on_or_off; + + if (bitmap == 0) + return; + + for (i = 0; o_options[i].name; i++) + { + v = bitmap[i] ? FLAG_ON : FLAG_OFF; + if (o_options[i].letter) + { + /* We should not get FLAG_UNKNOWN here */ + on_or_off = find_flag (o_options[i].letter); + cv = *on_or_off ? FLAG_ON : FLAG_OFF; + if (v != cv) + change_flag (o_options[i].letter, v); + } + else + { + cv = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name); + cv = cv ? FLAG_ON : FLAG_OFF; + if (v != cv) + SET_BINARY_O_OPTION_VALUE (i, v, o_options[i].name); + } + } + + /* Now reset the variables changed by posix mode */ + set_posix_options (bitmap+i); +} + +static int +set_ignoreeof (on_or_off, option_name) + int on_or_off; + char *option_name; +{ + ignoreeof = on_or_off == FLAG_ON; + unbind_variable_noref ("ignoreeof"); + if (ignoreeof) + bind_variable ("IGNOREEOF", "10", 0); + else + unbind_variable_noref ("IGNOREEOF"); + sv_ignoreeof ("IGNOREEOF"); + return 0; +} + +static int +set_posix_mode (on_or_off, option_name) + int on_or_off; + char *option_name; +{ + /* short-circuit on no-op */ + if ((on_or_off == FLAG_ON && posixly_correct) || + (on_or_off == FLAG_OFF && posixly_correct == 0)) + return 0; + + posixly_correct = on_or_off == FLAG_ON; + if (posixly_correct == 0) + unbind_variable_noref ("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) + { + enable_history_list = 1; + bash_history_enable (); + if (history_lines_this_session == 0) + load_history (); + } + else + { + enable_history_list = 0; + bash_history_disable (); + } + return (1 - enable_history_list); +} +#endif + +int +set_minus_o_option (on_or_off, option_name) + int on_or_off; + char *option_name; +{ + register int i; + + i = find_minus_o_option (option_name); + if (i < 0) + { + sh_invalidoptname (option_name); + return (EX_USAGE); + } + + if (o_options[i].letter == 0) + { + previous_option_value = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name); + SET_BINARY_O_OPTION_VALUE (i, on_or_off, option_name); + return (EXECUTION_SUCCESS); + } + else + { + if ((previous_option_value = change_flag (o_options[i].letter, on_or_off)) == FLAG_ERROR) + { + sh_invalidoptname (option_name); + return (EXECUTION_FAILURE); + } + else + return (EXECUTION_SUCCESS); + } +} + +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) || assoc_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 () +{ + pipefail_opt = 0; + ignoreeof = 0; + +#if defined (STRICT_POSIX) + posixly_correct = 1; +#else + posixly_correct = 0; +#endif +#if defined (HISTORY) + dont_save_function_defs = 0; + remember_on_history = enable_history_list = 1; /* XXX */ +#endif +} + +/* 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, rv, r; + register char *arg; + char s[3]; + + if (list == 0) + { + print_all_shell_variables (); + return (sh_chkwrite (EXECUTION_SUCCESS)); + } + + /* Check validity of flag arguments. */ + rv = EXECUTION_SUCCESS; + reset_internal_getopt (); + while ((flag_name = internal_getopt (list, optflags)) != -1) + { + switch (flag_name) + { + case 'i': /* don't allow set -i */ + s[0] = list_opttype; + s[1] = 'i'; + s[2] = '\0'; + sh_invalidopt (s); + builtin_usage (); + return (EX_USAGE); + CASE_HELPOPT; + 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 == '+')); + rv = sh_chkwrite (rv); + 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 ((r = set_minus_o_option (on_or_off, option_name)) != EXECUTION_SUCCESS) + { + set_shellopts (); + return (r); + } + } + 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 (rv); +} + +$BUILTIN unset +$FUNCTION unset_builtin +$SHORT_DOC unset [-f] [-v] [-n] [name ...] +Unset values and attributes of shell variables and functions. + +For each NAME, remove the corresponding variable or function. + +Options: + -f treat each NAME as a shell function + -v treat each NAME as a shell variable + -n treat each NAME as a name reference and unset the variable itself + rather than the variable it references + +Without options, unset first tries to unset a variable, and if that fails, +tries to unset a function. + +Some variables cannot be unset; also see `readonly'. + +Exit Status: +Returns success unless an invalid option is given or a NAME is read-only. +$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, nameref, any_failed; + int global_unset_func, global_unset_var, vflags, valid_id; + char *name, *tname; + + unset_function = unset_variable = unset_array = nameref = any_failed = 0; + global_unset_func = global_unset_var = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "fnv")) != -1) + { + switch (opt) + { + case 'f': + global_unset_func = 1; + break; + case 'v': + global_unset_var = 1; + break; + case 'n': + nameref = 1; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + + if (global_unset_func && global_unset_var) + { + builtin_error (_("cannot simultaneously unset a function and a variable")); + return (EXECUTION_FAILURE); + } + else if (unset_function && nameref) + nameref = 0; + +#if defined (ARRAY_VARS) + vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0; +#endif + + while (list) + { + SHELL_VAR *var; + int tem; +#if defined (ARRAY_VARS) + char *t; +#endif + + name = list->word->word; + + unset_function = global_unset_func; + unset_variable = global_unset_var; + +#if defined (ARRAY_VARS) + unset_array = 0; + /* XXX valid array reference second arg was 0 */ + if (!unset_function && nameref == 0 && valid_array_reference (name, vflags)) + { + t = strchr (name, '['); + *t++ = '\0'; + unset_array++; + } +#endif + /* Get error checking out of the way first. The low-level functions + just perform the unset, relying on the caller to verify. */ + valid_id = legal_identifier (name); + + /* Whether or not we are in posix mode, if neither -f nor -v appears, + skip over trying to unset variables with invalid names and just + treat them as potential shell function names. */ + if (global_unset_func == 0 && global_unset_var == 0 && valid_id == 0) + { + unset_variable = unset_array = 0; + unset_function = 1; + } + + /* 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 == 0 && valid_id == 0) + { + sh_invalidid (name); + NEXT_VARIABLE (); + } + + /* Search for functions here if -f supplied or if NAME cannot be a + variable name. */ + var = unset_function ? find_function (name) + : (nameref ? find_variable_last_nameref (name, 0) : find_variable (name)); + + /* Some variables (but not functions yet) cannot be unset, period. */ + if (var && unset_function == 0 && non_unsettable_p (var)) + { + builtin_error (_("%s: cannot unset"), name); + NEXT_VARIABLE (); + } + + /* if we have a nameref we want to use it */ + if (var && unset_function == 0 && nameref == 0 && STREQ (name, name_cell(var)) == 0) + name = name_cell (var); + + /* Posix.2 says try variables first, then functions. If we would + find a function after unsuccessfully searching for a variable, + note that we're acting on a function now as if -f were + supplied. The readonly check below takes care of it. */ + if (var == 0 && nameref == 0 && unset_variable == 0 && unset_function == 0) + { + if (var = find_function (name)) + unset_function = 1; + } + + /* Posix.2 says that unsetting readonly variables is an error. */ + if (var && readonly_p (var)) + { + builtin_error (_("%s: cannot unset: readonly %s"), + var->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) + { + /* Let unbind_array_element decide what to do with non-array vars */ + tem = unbind_array_element (var, t, vflags); /* XXX new third arg */ + if (tem == -2 && array_p (var) == 0 && assoc_p (var) == 0) + { + builtin_error (_("%s: not an array variable"), var->name); + NEXT_VARIABLE (); + } + else if (tem < 0) + any_failed++; + } + else +#endif /* ARRAY_VARS */ + /* If we're trying to unset a nameref variable whose value isn't a set + variable, make sure we still try to unset the nameref's value */ + if (var == 0 && nameref == 0 && unset_function == 0) + { + var = find_variable_last_nameref (name, 0); + if (var && nameref_p (var)) + { +#if defined (ARRAY_VARS) + if (valid_array_reference (nameref_cell (var), 0)) + { + tname = savestring (nameref_cell (var)); + if (var = array_variable_part (tname, 0, &t, (int *)0)) + tem = unbind_array_element (var, t, vflags); /* XXX new third arg */ + free (tname); + } + else +#endif + tem = unbind_variable (nameref_cell (var)); + } + else + tem = unbind_variable (name); + } + else + tem = unset_function ? unbind_func (name) : (nameref ? unbind_nameref (name) : unbind_variable (name)); + + /* This is what Posix.2 says: ``If neither -f nor -v + is specified, the name refers to a variable; if a variable by + that name does not exist, a function by that name, if any, + shall be unset.'' */ + if (tem == -1 && nameref == 0 && unset_function == 0 && unset_variable == 0) + tem = unbind_func (name); + + name = list->word->word; /* reset above for namerefs */ + + /* 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-5.1/builtins_org/setattr.def b/bash-5.1/builtins_org/setattr.def new file mode 100644 index 0000000..33bef4c --- /dev/null +++ b/bash-5.1/builtins_org/setattr.def @@ -0,0 +1,664 @@ +This file is setattr.def, from which is created setattr.c. +It implements the builtins "export" and "readonly", in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$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 "../execute_cmd.h" +#include "../flags.h" +#include "common.h" +#include "bashgetopt.h" + +extern sh_builtin_func_t *this_shell_builtin; + +#ifdef ARRAY_VARS +extern int declare_builtin PARAMS((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 [-fn] [name[=value] ...] or export -p +Set export attribute for shell variables. + +Marks each NAME for automatic export to the environment of subsequently +executed commands. If VALUE is supplied, assign VALUE before exporting. + +Options: + -f refer to shell functions + -n remove the export property from each NAME + -p display a list of all exported variables and functions + +An argument of `--' disables further option processing. + +Exit Status: +Returns success unless an invalid option is given or NAME is invalid. +$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 [-aAf] [name[=value] ...] or readonly -p +Mark shell variables as unchangeable. + +Mark each NAME as read-only; the values of these NAMEs may not be +changed by subsequent assignment. If VALUE is supplied, assign VALUE +before marking as read-only. + +Options: + -a refer to indexed array variables + -A refer to associative array variables + -f refer to shell functions + -p display a list of all readonly variables or functions, + depending on whether or not the -f option is given + +An argument of `--' disables further option processing. + +Exit Status: +Returns success unless an invalid option is given or NAME is invalid. +$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 "aAfnp" +#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, any_failed, assign_error, opt; + int functions_only, arrays_only, assoc_only; + int aflags; + char *name; +#if defined (ARRAY_VARS) + WORD_LIST *nlist, *tlist; + WORD_DESC *w; + char optw[8]; + int opti; +#endif + + functions_only = arrays_only = assoc_only = 0; + undo = 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; + case 'A': + assoc_only = 1; + break; +#endif + case 'p': + break; + CASE_HELPOPT; + 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 if ((attribute & att_exported) && undo == 0 && exportable_function_name (name) == 0) + { + builtin_error (_("%s: cannot export"), 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 || assoc_only) + { + tlist = list->next; + list->next = (WORD_LIST *)NULL; + /* Add -g to avoid readonly/export creating local variables: + only local/declare/typeset create local variables */ + opti = 0; + optw[opti++] = '-'; + optw[opti++] = 'g'; + if (attribute & att_readonly) + optw[opti++] = 'r'; + if (attribute & att_exported) + optw[opti++] = 'x'; + if (arrays_only) + optw[opti++] = 'a'; + else + optw[opti++] = 'A'; + optw[opti] = '\0'; + + w = make_word (optw); + 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); + if (assign) /* restore word */ + { + name[assign] = '='; + if (aflags & ASS_APPEND) + name[assign-1] = '+'; + } + 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; + } + else if (attribute & att_assoc) + { + assoc_only++; + if (attribute != att_assoc) + attribute &= ~att_assoc; + } +#endif + + if (variable_list) + { + for (i = 0; var = variable_list[i]; i++) + { +#if defined (ARRAY_VARS) + if (arrays_only && array_p (var) == 0) + continue; + else if (assoc_only && assoc_p (var) == 0) + continue; +#endif + + /* If we imported a variable that's not a valid identifier, don't + show it in any lists. */ + if ((var->attributes & (att_invisible|att_imported)) == (att_invisible|att_imported)) + continue; + + if ((var->attributes & attribute)) + { + show_var_attributes (var, READONLY_OR_EXPORT, nodefs); + if (any_failed = sh_chkwrite (any_failed)) + break; + } + } + free (variable_list); + } + } + + return (assign_error ? EX_BADASSIGN + : ((any_failed == 0) ? EXECUTION_SUCCESS + : EXECUTION_FAILURE)); +} + +/* Show all variable variables (v == 1) or functions (v == 0) with + attributes. */ +int +show_all_var_attributes (v, nodefs) + int v, nodefs; +{ + SHELL_VAR **variable_list, *var; + int any_failed; + register int i; + + variable_list = v ? all_shell_variables () : all_shell_functions (); + if (variable_list == 0) + return (EXECUTION_SUCCESS); + + for (i = any_failed = 0; var = variable_list[i]; i++) + { + show_var_attributes (var, READONLY_OR_EXPORT, nodefs); + if (any_failed = sh_chkwrite (any_failed)) + break; + } + free (variable_list); + return (any_failed == 0 ? EXECUTION_SUCCESS : EXECUTION_FAILURE); +} + +/* Show all local variable variables with their attributes. This shows unset + local variables (all_local_variables called with 0 argment). */ +int +show_local_var_attributes (v, nodefs) + int v, nodefs; +{ + SHELL_VAR **variable_list, *var; + int any_failed; + register int i; + + variable_list = all_local_variables (0); + if (variable_list == 0) + return (EXECUTION_SUCCESS); + + for (i = any_failed = 0; var = variable_list[i]; i++) + { + show_var_attributes (var, READONLY_OR_EXPORT, nodefs); + if (any_failed = sh_chkwrite (any_failed)) + break; + } + free (variable_list); + return (any_failed == 0 ? EXECUTION_SUCCESS : EXECUTION_FAILURE); +} + +int +var_attribute_string (var, pattr, flags) + SHELL_VAR *var; + int pattr; + char *flags; /* filled in with attributes */ +{ + 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'; + + if (assoc_p (var)) + flags[i++] = 'A'; +#endif + + if (function_p (var)) + flags[i++] = 'f'; + + if (integer_p (var)) + flags[i++] = 'i'; + + if (nameref_p (var)) + flags[i++] = 'n'; + + if (readonly_p (var)) + flags[i++] = 'r'; + + if (trace_p (var)) + flags[i++] = 't'; + + if (exported_p (var)) + flags[i++] = 'x'; + + if (capcase_p (var)) + flags[i++] = 'c'; + + if (lowercase_p (var)) + flags[i++] = 'l'; + + if (uppercase_p (var)) + flags[i++] = 'u'; + } + else + { +#if defined (ARRAY_VARS) + if (array_p (var)) + flags[i++] = 'a'; + + if (assoc_p (var)) + flags[i++] = 'A'; +#endif + + if (function_p (var)) + flags[i++] = 'f'; + } + + flags[i] = '\0'; + return i; +} + +/* 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[MAX_ATTRIBUTES], *x; + int i; + + i = var_attribute_string (var, pattr, flags); + + /* 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), FUNC_MULTILINE|FUNC_EXTERNAL)); + 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 (invisible_p (var) && (array_p (var) || assoc_p (var))) + printf ("%s\n", var->name); + else if (array_p (var)) + print_array_assignment (var, 0); + else if (assoc_p (var)) + print_assoc_assignment (var, 0); + 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), FUNC_MULTILINE|FUNC_EXTERNAL)); + else if (invisible_p (var) || var_isset (var) == 0) + printf ("%s\n", var->name); + else + { + x = sh_double_quote (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_noref (name); + + if (var) /* show every variable with attributes, even unset ones */ + { + show_var_attributes (var, READONLY_OR_EXPORT, nodefs); + return (0); + } + else + return (1); +} + +int +show_localname_attributes (name, nodefs) + char *name; + int nodefs; +{ + SHELL_VAR *var; + + var = find_variable_noref (name); + + if (var && local_p (var) && var->context == variable_context) /* show every variable with attributes, even unset ones */ + { + show_var_attributes (var, READONLY_OR_EXPORT, nodefs); + return (0); + } + else + return (1); +} + +int +show_func_attributes (name, nodefs) + char *name; + int nodefs; +{ + SHELL_VAR *var; + + var = find_function (name); + + if (var) + { + show_var_attributes (var, READONLY_OR_EXPORT, nodefs); + return (0); + } + else + return (1); +} + +void +set_var_attribute (name, attribute, undo) + char *name; + int attribute, undo; +{ + SHELL_VAR *var, *tv, *v, *refvar; + 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); + if (var == 0) + { + free (tvalue); + return; /* XXX - no error message here */ + } + var->attributes |= tv->attributes & ~att_tempvar; + /* This avoids an error message when propagating a read-only var + later on. */ + if (posixly_correct || shell_compatibility_level <= 44) + { + if (var->context == 0 && (attribute & att_readonly)) + { + /* Don't bother to set the `propagate to the global variables + table' flag if we've just bound the variable in that + table */ + v = find_global_variable (tv->name); + if (v != var) + VSETATTR (tv, att_propagate); + } + else + VSETATTR (tv, att_propagate); + if (var->context != 0) + VSETATTR (var, att_propagate); + } + + SETVARATTR (tv, attribute, undo); /* XXX */ + + stupidly_hack_special_variables (tv->name); + + free (tvalue); + } + else + { + var = find_variable_notempenv (name); + if (var == 0) + { + /* We might have a nameref pointing to something that we can't + resolve to a shell variable. If we do, skip it. We do a little + checking just so we can print an error message. */ + refvar = find_variable_nameref_for_create (name, 0); + if (refvar == INVALID_NAMEREF_VALUE) + return; + /* Otherwise we probably have a nameref pointing to a variable + that hasn't been created yet. bind_variable will take care + of that. */ + } + if (var == 0) + { + var = bind_variable (name, (char *)NULL, 0); + if (var) + 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 */ + + if (var) + stupidly_hack_special_variables (name); +} diff --git a/bash-5.1/builtins_org/shift.def b/bash-5.1/builtins_org/shift.def new file mode 100644 index 0000000..bb9af01 --- /dev/null +++ b/bash-5.1/builtins_org/shift.def @@ -0,0 +1,90 @@ +This file is shift.def, from which is created shift.c. +It implements the builtin "shift" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$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] +Shift positional parameters. + +Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is +not given, it is assumed to be 1. + +Exit Status: +Returns success unless N is negative or greater than $#. +$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; + int itimes, nargs; + + CHECK_HELPOPT (list); + + if (get_numeric_arg (list, 0, ×) == 0) + return (EXECUTION_FAILURE); + + if (times == 0) + return (EXECUTION_SUCCESS); + else if (times < 0) + { + sh_erange (list ? list->word->word : NULL, _("shift count")); + return (EXECUTION_FAILURE); + } + nargs = number_of_args (); + if (times > nargs) + { + if (print_shift_error) + sh_erange (list ? list->word->word : NULL, _("shift count")); + return (EXECUTION_FAILURE); + } + else if (times == nargs) + clear_dollar_vars (); + else + shift_args (itimes = times); + + invalidate_cached_quoted_dollar_at (); + + return (EXECUTION_SUCCESS); +} diff --git a/bash-5.1/builtins_org/shopt.def b/bash-5.1/builtins_org/shopt.def new file mode 100644 index 0000000..6dca224 --- /dev/null +++ b/bash-5.1/builtins_org/shopt.def @@ -0,0 +1,899 @@ +This file is shopt.def, from which is created shopt.c. +It implements the Bash `shopt' builtin. + +Copyright (C) 1994-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES shopt.c + +$BUILTIN shopt +$FUNCTION shopt_builtin +$SHORT_DOC shopt [-pqsu] [-o] [optname ...] +Set and unset shell options. + +Change the setting of each shell option OPTNAME. Without any option +arguments, list each supplied OPTNAME, or all shell options if no +OPTNAMEs are given, with an indication of whether or not each is set. + +Options: + -o restrict OPTNAMEs to those defined for use with `set -o' + -p print each shell option with an indication of its status + -q suppress output + -s enable (set) each OPTNAME + -u disable (unset) each OPTNAME + +Exit Status: +Returns success if OPTNAME is enabled; fails if an invalid option is +given or OPTNAME is disabled. +$END + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include + +#include "version.h" + +#include "../bashintl.h" + +#include "../shell.h" +#include "../flags.h" +#include "common.h" +#include "bashgetopt.h" + +#if defined (READLINE) +# include "../bashline.h" +#endif + +#if defined (HISTORY) +# include "../bashhist.h" +#endif + +#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; +extern int check_jobs_at_exit; +extern int autocd; +extern int glob_star; +extern int glob_asciirange; +extern int lastpipe_opt; +extern int inherit_errexit; +extern int localvar_inherit; +extern int localvar_unset; + +#if defined (EXTENDED_GLOB) +extern int extended_glob; +#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 dircomplete_spelling, dircomplete_expand; +extern int complete_fullquote; + +extern int enable_hostname_completion PARAMS((int)); +#endif + +#if defined (PROGRAMMABLE_COMPLETION) +extern int prog_completion_enabled; +extern int progcomp_alias; +#endif + +#if defined (DEBUGGER) +extern int debugging_mode; +#endif + +#if defined (ARRAY_VARS) +extern int assoc_expand_once; +extern int array_expand_once; +#endif + +#if defined (SYSLOG_HISTORY) +extern int syslog_history; +#endif + +static void shopt_error PARAMS((char *)); + +static int set_shellopts_after_change PARAMS((char *, int)); +static int set_compatibility_level PARAMS((char *, int)); + +#if defined (RESTRICTED_SHELL) +static int set_restricted_shell PARAMS((char *, int)); +#endif + +#if defined (READLINE) +static int shopt_enable_hostname_completion PARAMS((char *, int)); +static int shopt_set_complete_direxpand PARAMS((char *, int)); +#endif + +static int shopt_set_debug_mode PARAMS((char *, int)); + +static int shopt_login_shell; +static int shopt_compat31; +static int shopt_compat32; +static int shopt_compat40; +static int shopt_compat41; +static int shopt_compat42; +static int shopt_compat43; +static int shopt_compat44; + +typedef int shopt_set_func_t PARAMS((char *, int)); + +/* If you add a new variable name here, make sure to set the default value + appropriately in reset_shopt_options. */ + +static struct { + char *name; + int *value; + shopt_set_func_t *set_func; +} shopt_vars[] = { + { "autocd", &autocd, (shopt_set_func_t *)NULL }, +#if defined (ARRAY_VARS) + { "assoc_expand_once", &assoc_expand_once, (shopt_set_func_t *)NULL }, +#endif + { "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 }, +#if defined (JOB_CONTROL) + { "checkjobs", &check_jobs_at_exit, (shopt_set_func_t *)NULL }, +#endif + { "checkwinsize", &check_window_size, (shopt_set_func_t *)NULL }, +#if defined (HISTORY) + { "cmdhist", &command_oriented_history, (shopt_set_func_t *)NULL }, +#endif + { "compat31", &shopt_compat31, set_compatibility_level }, + { "compat32", &shopt_compat32, set_compatibility_level }, + { "compat40", &shopt_compat40, set_compatibility_level }, + { "compat41", &shopt_compat41, set_compatibility_level }, + { "compat42", &shopt_compat42, set_compatibility_level }, + { "compat43", &shopt_compat43, set_compatibility_level }, + { "compat44", &shopt_compat44, set_compatibility_level }, +#if defined (READLINE) + { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL}, + { "direxpand", &dircomplete_expand, shopt_set_complete_direxpand }, + { "dirspell", &dircomplete_spelling, (shopt_set_func_t *)NULL }, +#endif + { "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_debug_mode }, +#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 + { "globasciiranges", &glob_asciirange, (shopt_set_func_t *)NULL }, + { "globstar", &glob_star, (shopt_set_func_t *)NULL }, + { "gnu_errfmt", &gnu_error_format, (shopt_set_func_t *)NULL }, +#if defined (HISTORY) + { "histappend", &force_append_history, (shopt_set_func_t *)NULL }, +#endif +#if defined (READLINE) + { "histreedit", &history_reediting, (shopt_set_func_t *)NULL }, + { "histverify", &hist_verify, (shopt_set_func_t *)NULL }, + { "hostcomplete", &perform_hostname_completion, shopt_enable_hostname_completion }, +#endif + { "huponexit", &hup_on_exit, (shopt_set_func_t *)NULL }, + { "inherit_errexit", &inherit_errexit, (shopt_set_func_t *)NULL }, + { "interactive_comments", &interactive_comments, set_shellopts_after_change }, + { "lastpipe", &lastpipe_opt, (shopt_set_func_t *)NULL }, +#if defined (HISTORY) + { "lithist", &literal_history, (shopt_set_func_t *)NULL }, +#endif + { "localvar_inherit", &localvar_inherit, (shopt_set_func_t *)NULL }, + { "localvar_unset", &localvar_unset, (shopt_set_func_t *)NULL }, + { "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 }, +# if defined (ALIAS) + { "progcomp_alias", &progcomp_alias, (shopt_set_func_t *)NULL }, +# endif +#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 }, +#if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT) + { "syslog_history", &syslog_history, (shopt_set_func_t *)NULL }, +#endif + { "xpg_echo", &xpg_echo, (shopt_set_func_t *)NULL }, + { (char *)0, (int *)0, (shopt_set_func_t *)NULL } +}; + +#define N_SHOPT_OPTIONS (sizeof (shopt_vars) / sizeof (shopt_vars[0])) + +#define GET_SHOPT_OPTION_VALUE(i) (*shopt_vars[i].value) + +static const char * const on = "on"; +static const char * const off = "off"; + +static int find_shopt PARAMS((char *)); +static int toggle_shopts PARAMS((int, WORD_LIST *, int)); +static void print_shopt PARAMS((char *, int, int)); +static int list_shopts PARAMS((WORD_LIST *, int)); +static int list_some_shopts PARAMS((int, int)); +static int list_shopt_o_options PARAMS((WORD_LIST *, int)); +static int list_some_o_options PARAMS((int, int)); +static int set_shopt_o_options PARAMS((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; + CASE_HELPOPT; + 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. Variables from shopt_vars. */ +void +reset_shopt_options () +{ + autocd = cdable_vars = cdspelling = 0; + check_hashed_filenames = CHECKHASH_DEFAULT; + check_window_size = CHECKWINSIZE_DEFAULT; + allow_null_glob_expansion = glob_dot_filenames = 0; + no_exit_on_failed_exec = 0; + expand_aliases = 0; + extended_quote = 1; + fail_glob_expansion = 0; + glob_asciirange = GLOBASCII_DEFAULT; + glob_star = 0; + gnu_error_format = 0; + hup_on_exit = 0; + inherit_errexit = 0; + interactive_comments = 1; + lastpipe_opt = 0; + localvar_inherit = localvar_unset = 0; + mail_warning = 0; + glob_ignore_case = match_ignore_case = 0; + print_shift_error = 0; + source_uses_path = promptvars = 1; + +#if defined (JOB_CONTROL) + check_jobs_at_exit = 0; +#endif + +#if defined (EXTENDED_GLOB) + extended_glob = EXTGLOB_DEFAULT; +#endif + +#if defined (ARRAY_VARS) + assoc_expand_once = 0; +#endif + +#if defined (HISTORY) + literal_history = 0; + force_append_history = 0; + command_oriented_history = 1; +#endif + +#if defined (SYSLOG_HISTORY) +# if defined (SYSLOG_SHOPT) + syslog_history = SYSLOG_SHOPT; +# else + syslog_history = 1; +# endif /* SYSLOG_SHOPT */ +#endif + +#if defined (READLINE) + complete_fullquote = 1; + force_fignore = 1; + hist_verify = history_reediting = 0; + perform_hostname_completion = 1; +# if DIRCOMPLETE_EXPAND_DEFAULT + dircomplete_expand = 1; +# else + dircomplete_expand = 0; +#endif + dircomplete_spelling = 0; + no_empty_command_completion = 0; +#endif + +#if defined (PROGRAMMABLE_COMPLETION) + prog_completion_enabled = 1; +# if defined (ALIAS) + progcomp_alias = 0; +# endif +#endif + +#if defined (DEFAULT_ECHO_TO_XPG) || defined (STRICT_POSIX) + xpg_echo = 1; +#else + xpg_echo = 0; +#endif /* DEFAULT_ECHO_TO_XPG */ + + 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; + SHELL_VAR *v; + + 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) (shopt_vars[ind].name, mode); + } + } + + /* Don't set $BASHOPTS here if it hasn't already been initialized */ + if (v = find_variable ("BASHOPTS")) + set_bashopts (); + 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 (sh_chkwrite (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 (sh_chkwrite (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 (sh_chkwrite (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 (sh_chkwrite (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 (sh_chkwrite (rval)); +} + +static int +list_some_o_options (mode, flags) + int mode, flags; +{ + if ((flags & QFLAG) == 0) + list_minus_o_opts (mode, (flags & PFLAG)); + return (sh_chkwrite (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 (option_name, mode) + char *option_name; + int mode; +{ + set_shellopts (); + return (0); +} + +static int +shopt_set_debug_mode (option_name, mode) + char *option_name; + int mode; +{ +#if defined (DEBUGGER) + error_trace_mode = function_trace_mode = debugging_mode; + set_shellopts (); + if (debugging_mode) + init_bash_argv (); +#endif + return (0); +} + +#if defined (READLINE) +static int +shopt_enable_hostname_completion (option_name, mode) + char *option_name; + int mode; +{ + return (enable_hostname_completion (mode)); +} +#endif + +static int +set_compatibility_level (option_name, mode) + char *option_name; + int mode; +{ + int ind; + char *rhs; + + /* If we're setting something, redo some of the work we did above in + toggle_shopt(). Unset everything and reset the appropriate option + based on OPTION_NAME. */ + if (mode) + { + shopt_compat31 = shopt_compat32 = 0; + shopt_compat40 = shopt_compat41 = shopt_compat42 = shopt_compat43 = 0; + shopt_compat44 = 0; + ind = find_shopt (option_name); + *shopt_vars[ind].value = mode; + } + + /* Then set shell_compatibility_level based on what remains */ + if (shopt_compat31) + shell_compatibility_level = 31; + else if (shopt_compat32) + shell_compatibility_level = 32; + else if (shopt_compat40) + shell_compatibility_level = 40; + else if (shopt_compat41) + shell_compatibility_level = 41; + else if (shopt_compat42) + shell_compatibility_level = 42; + else if (shopt_compat43) + shell_compatibility_level = 43; + else if (shopt_compat44) + shell_compatibility_level = 44; + else + shell_compatibility_level = DEFAULT_COMPAT_LEVEL; + + /* Make sure the current compatibility level is reflected in BASH_COMPAT */ + rhs = itos (shell_compatibility_level); + bind_variable ("BASH_COMPAT", rhs, 0); + free (rhs); + + return 0; +} + +/* Set and unset the various compatibility options from the value of + shell_compatibility_level; used by sv_shcompat */ +void +set_compatibility_opts () +{ + shopt_compat31 = shopt_compat32 = 0; + shopt_compat40 = shopt_compat41 = shopt_compat42 = shopt_compat43 = 0; + shopt_compat44 = 0; + switch (shell_compatibility_level) + { + case DEFAULT_COMPAT_LEVEL: + break; + case 44: + shopt_compat44 = 1; break; + case 43: + shopt_compat43 = 1; break; + case 42: + shopt_compat42 = 1; break; + case 41: + shopt_compat41 = 1; break; + case 40: + shopt_compat40 = 1; break; + case 32: + shopt_compat32 = 1; break; + case 31: + shopt_compat31 = 1; break; + } +} + +#if defined (READLINE) +static int +shopt_set_complete_direxpand (option_name, mode) + char *option_name; + int mode; +{ + set_directory_hook (); + return 0; +} +#endif + +#if defined (RESTRICTED_SHELL) +/* Don't allow the value of restricted_shell to be modified. */ + +static int +set_restricted_shell (option_name, mode) + char *option_name; + 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 (option_name, mode) + char *option_name; + 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 (sh_chkwrite (EXECUTION_SUCCESS)); +} + +void +set_bashopts () +{ + char *value; + char tflag[N_SHOPT_OPTIONS]; + int vsize, i, vptr, *ip, exported; + SHELL_VAR *v; + + for (vsize = i = 0; shopt_vars[i].name; i++) + { + tflag[i] = 0; + if (GET_SHOPT_OPTION_VALUE (i)) + { + vsize += strlen (shopt_vars[i].name) + 1; + tflag[i] = 1; + } + } + + value = (char *)xmalloc (vsize + 1); + + for (i = vptr = 0; shopt_vars[i].name; i++) + { + if (tflag[i]) + { + strcpy (value + vptr, shopt_vars[i].name); + vptr += strlen (shopt_vars[i].name); + value[vptr++] = ':'; + } + } + + if (vptr) + vptr--; /* cut off trailing colon */ + value[vptr] = '\0'; + + v = find_variable ("BASHOPTS"); + + /* 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 ("BASHOPTS", 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_bashopts (value) + char *value; +{ + char *vname; + int vptr, ind; + + vptr = 0; + while (vname = extract_colon_unit (value, &vptr)) + { + ind = find_shopt (vname); + if (ind >= 0) + { + *shopt_vars[ind].value = 1; + if (shopt_vars[ind].set_func) + (*shopt_vars[ind].set_func) (shopt_vars[ind].name, 1); + } + free (vname); + } +} + +void +initialize_bashopts (no_bashopts) + int no_bashopts; +{ + char *temp; + SHELL_VAR *var; + + if (no_bashopts == 0) + { + var = find_variable ("BASHOPTS"); + /* set up any shell options we may have inherited. */ + if (var && imported_p (var)) + { + temp = (array_p (var) || assoc_p (var)) ? (char *)NULL : savestring (value_cell (var)); + if (temp) + { + parse_bashopts (temp); + free (temp); + } + } + } + + /* Set up the $BASHOPTS variable. */ + set_bashopts (); +} diff --git a/bash-5.1/builtins_org/source.def b/bash-5.1/builtins_org/source.def new file mode 100644 index 0000000..5b2f994 --- /dev/null +++ b/bash-5.1/builtins_org/source.def @@ -0,0 +1,200 @@ +This file is source.def, from which is created source.c. +It implements the builtins "." and "source" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES source.c + +$BUILTIN source +$FUNCTION source_builtin +$SHORT_DOC source filename [arguments] +Execute commands from a file in the current shell. + +Read and execute commands from FILENAME in the current shell. The +entries in $PATH are used to find the directory containing FILENAME. +If any ARGUMENTS are supplied, they become the positional parameters +when FILENAME is executed. + +Exit Status: +Returns the status of the last command executed in FILENAME; fails if +FILENAME cannot be read. +$END + +$BUILTIN . +$DOCNAME dot +$FUNCTION source_builtin +$SHORT_DOC . filename [arguments] +Execute commands from a file in the current shell. + +Read and execute commands from FILENAME in the current shell. The +entries in $PATH are used to find the directory containing FILENAME. +If any ARGUMENTS are supplied, they become the positional parameters +when FILENAME is executed. + +Exit Status: +Returns the status of the last command executed in FILENAME; fails if +FILENAME cannot be read. +$END + +#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 "../execute_cmd.h" +#include "../flags.h" +#include "../findcmd.h" +#include "common.h" +#include "bashgetopt.h" +#include "../trap.h" + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +static void maybe_pop_dollar_vars PARAMS((void)); + +/* 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 (); + invalidate_cached_quoted_dollar_at (); /* just invalidate to be safe */ +} + +/* 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, *x; + + 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; + /* XXX -- should this be absolute_pathname? */ + if (posixly_correct && strchr (list->word->word, '/')) + filename = savestring (list->word->word); + else if (absolute_pathname (list->word->word)) + filename = savestring (list->word->word); + else if (source_uses_path) + filename = find_path_file (list->word->word); + if (filename == 0) + { + if (source_searches_cwd == 0) + { + x = printable_filename (list->word->word, 0); + builtin_error (_("%s: file not found"), x); + if (x != list->word->word) + free (x); + if (posixly_correct && interactive_shell == 0 && executing_command_builtin == 0) + { + last_command_exit_value = EXECUTION_FAILURE; + jump_to_top_level (EXITPROG); + } + return (EXECUTION_FAILURE); + } + else + filename = savestring (list->word->word); + } + + begin_unwind_frame ("source"); + add_unwind_protect (xfree, filename); + + if (list->next) + { + push_dollar_vars (); + add_unwind_protect ((Function *)maybe_pop_dollar_vars, (char *)NULL); + if (debugging_mode || shell_compatibility_level <= 44) + init_bash_argv (); /* Initialize BASH_ARGV and BASH_ARGC */ + 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 (maybe_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-5.1/builtins_org/suspend.def b/bash-5.1/builtins_org/suspend.def new file mode 100644 index 0000000..e99fd26 --- /dev/null +++ b/bash-5.1/builtins_org/suspend.def @@ -0,0 +1,128 @@ +This file is suspend.def, from which is created suspend.c. +It implements the builtin "suspend" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES suspend.c + +$BUILTIN suspend +$DEPENDS_ON JOB_CONTROL +$FUNCTION suspend_builtin +$SHORT_DOC suspend [-f] +Suspend shell execution. + +Suspend the execution of this shell until it receives a SIGCONT signal. +Unless forced, login shells cannot be suspended. + +Options: + -f force the suspend, even if the shell is a login shell + +Exit Status: +Returns success unless job control is not enabled or an error occurs. +$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 suspend_continue PARAMS((int)); + +static SigHandler *old_cont; +#if 0 +static SigHandler *old_stop; +#endif + +/* Continue handler. */ +static 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; + CASE_HELPOPT; + 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-5.1/builtins_org/test.def b/bash-5.1/builtins_org/test.def new file mode 100644 index 0000000..bd9a203 --- /dev/null +++ b/bash-5.1/builtins_org/test.def @@ -0,0 +1,159 @@ +This file is test.def, from which is created test.c. +It implements the builtin "test" in Bash. + +Copyright (C) 1987-2015 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES test.c + +$BUILTIN test +$FUNCTION test_builtin +$SHORT_DOC test [expr] +Evaluate conditional expression. + +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 and numeric comparison operators as well. + +The behavior of test depends on the number of arguments. Read the +bash manual page for the complete specification. + +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. + -v VAR True if the shell variable VAR is set. + -R VAR True if the shell variable VAR is set and is a name + reference. + ! EXPR True if expr is false. + EXPR1 -a EXPR2 True if both expr1 AND expr2 are true. + EXPR1 -o EXPR2 True if either expr1 OR expr2 is true. + + 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. + +Exit Status: +Returns success if EXPR evaluates to true; fails if EXPR evaluates to +false or an invalid argument is given. +$END + +$BUILTIN [ +$DOCNAME test_bracket +$FUNCTION test_builtin +$SHORT_DOC [ arg... ] +Evaluate conditional expression. + +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 "../bashintl.h" + +#include "../shell.h" +#include "../execute_cmd.h" +#include "../test.h" +#include "common.h" + +/* 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-5.1/builtins_org/times.def b/bash-5.1/builtins_org/times.def new file mode 100644 index 0000000..f31f433 --- /dev/null +++ b/bash-5.1/builtins_org/times.def @@ -0,0 +1,119 @@ +This file is times.def, from which is created times.c. +It implements the builtin "times" in Bash. + +Copyright (C) 1987-2009 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES times.c + +$BUILTIN times +$FUNCTION times_builtin +$SHORT_DOC times +Display process times. + +Prints the accumulated user and system times for the shell and all of its +child processes. + +Exit Status: +Always succeeds. +$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 (sh_chkwrite (EXECUTION_SUCCESS)); +} diff --git a/bash-5.1/builtins_org/trap.def b/bash-5.1/builtins_org/trap.def new file mode 100644 index 0000000..daeec9e --- /dev/null +++ b/bash-5.1/builtins_org/trap.def @@ -0,0 +1,313 @@ +This file is trap.def, from which is created trap.c. +It implements the builtin "trap" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES trap.c + +$BUILTIN trap +$FUNCTION trap_builtin +$SHORT_DOC trap [-lp] [[arg] signal_spec ...] +Trap signals and other events. + +Defines and activates handlers to be run when the shell receives signals +or other conditions. + +ARG is a command to be read and executed when the shell receives the +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) ARG is executed on exit from the shell. If +a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If +a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a +script run by the . or source builtins finishes executing. A SIGNAL_SPEC +of ERR means to execute ARG each time a command's failure would cause the +shell to exit when the -e option is enabled. + +If no arguments are supplied, trap prints the list of commands associated +with each signal. + +Options: + -l print a list of signal names and their corresponding numbers + -p display the trap commands associated with each SIGNAL_SPEC + +Each SIGNAL_SPEC is either a signal name in or a signal number. +Signal names are case insensitive and the SIG prefix is optional. A +signal may be sent to the shell with "kill -signal $$". + +Exit Status: +Returns success unless a SIGSPEC is invalid or an invalid option is given. +$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 PARAMS((int, int)); +static int display_traps PARAMS((WORD_LIST *, int)); + +/* The trap command: + + trap + trap + trap -l + trap -p [sigspec ...] + trap [--] + + Set things up so that ARG is executed when SIGNAL(s) N is received. + 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. */ + +int +trap_builtin (list) + WORD_LIST *list; +{ + int list_signal_names, display, result, opt; + + 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; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + opt = DSIG_NOCASE|DSIG_SIGPREFIX; /* flags for decode_signal */ + + if (list_signal_names) + return (sh_chkwrite (display_signal_list ((WORD_LIST *)NULL, 1))); + else if (display || list == 0) + { + initialize_terminating_signals (); + get_all_original_signals (); + return (sh_chkwrite (display_traps (list, display && posixly_correct))); + } + 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; + } + + /* If we're in a command substitution, we haven't freed the trap strings + (though we reset the signal handlers). If we're setting a trap to + handle a signal here, free the rest of the trap strings since they + don't apply any more. */ + if (subshell_environment & SUBSHELL_RESETTRAP) + { + free_trap_strings (); + subshell_environment &= ~SUBSHELL_RESETTRAP; + } + + 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: + /* XXX - should we do this if original disposition + was SIG_IGN? */ + if (interactive) + set_signal_handler (SIGINT, sigint_sighandler); + /* special cases for interactive == 0 */ + else if (interactive_shell && (sourcelevel||running_trap||parse_and_execute_level)) + 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, show_default) + int i, show_default; +{ + char *t, *p, *sn; + + p = trap_list[i]; + if (p == (char *)DEFAULT_SIG && signal_is_hard_ignored (i) == 0) + { + if (show_default) + t = "-"; + else + return; + } + else if (signal_is_hard_ignored (i)) + t = (char *)NULL; + else + 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); + + if (show_default == 0) + FREE (t); +} + +static int +display_traps (list, show_all) + WORD_LIST *list; + int show_all; +{ + int result, i; + + if (list == 0) + { + for (i = 0; i < BASH_NSIG; i++) + showtrap (i, show_all); + 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, show_all); + } + + return (result); +} diff --git a/bash-5.1/builtins_org/type.def b/bash-5.1/builtins_org/type.def new file mode 100644 index 0000000..a8e47c0 --- /dev/null +++ b/bash-5.1/builtins_org/type.def @@ -0,0 +1,420 @@ +This file is type.def, from which is created type.c. +It implements the builtin "type" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES type.c + +$BUILTIN type +$FUNCTION type_builtin +$SHORT_DOC type [-afptP] name [name ...] +Display information about command type. + +For each NAME, indicate how it would be interpreted if used as a +command name. + +Options: + -a display all locations containing an executable named NAME; + includes aliases, builtins, and functions, if and only if + the `-p' option is not also used + -f suppress shell function lookup + -P force 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 + -p returns either the name of the disk file that would be executed, + or nothing if `type -t NAME' would not return `file' + -t output 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 not found, respectively + +Arguments: + NAME Command name to be interpreted. + +Exit Status: +Returns success if all of the NAMEs are found; fails if any are not found. +$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 "../parser.h" +#include "../execute_cmd.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 PARAMS((char *)); + +/* 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, any_failed, opt; + WORD_LIST *this; + + if (list == 0) + return (EXECUTION_SUCCESS); + + dflags = CDESC_SHORTDESC; /* default */ + any_failed = 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; + CASE_HELPOPT; + 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); + + any_failed += found == 0; + list = list->next; + } + + opt = (any_failed == 0) ? EXECUTION_SUCCESS : EXECUTION_FAILURE; + return (sh_chkwrite (opt)); +} + +/* + * 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_STDPATH command -p standard path list + * + * 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, *pathlist; + 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) + { + char *result; + + printf (_("%s is a function\n"), command); + + /* We're blowing away THE_PRINTED_COMMAND here... */ + + result = named_function_string (command, function_cell (func), FUNC_MULTILINE|FUNC_EXTERNAL); + printf ("%s\n", result); + } + 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) + { + if (posixly_correct && find_special_builtin (command) != 0) + printf (_("%s is a special shell builtin\n"), command); + else + 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 (dflags & CDESC_STDPATH) /* command -p, all cannot be non-zero */ + { + pathlist = conf_standard_path (); + full_path = find_in_path (command, pathlist, FS_EXEC_PREFERRED|FS_NODIRS); + free (pathlist); + /* Will only go through this once, since all == 0 if STDPATH set */ + } + else 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 == 0) + 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); + x = sh_makepath ((char *)NULL, full_path, f); + free (full_path); + full_path = x; + } + } + /* If we require a full path and don't have one, make one */ + else if ((dflags & CDESC_ABSPATH) && ABSPATH (full_path) == 0) + { + x = sh_makepath ((char *)NULL, full_path, MP_DOCWD|MP_RMDOT); + free (full_path); + full_path = x; + } + + 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-5.1/builtins_org/ulimit.def b/bash-5.1/builtins_org/ulimit.def new file mode 100644 index 0000000..a895c5e --- /dev/null +++ b/bash-5.1/builtins_org/ulimit.def @@ -0,0 +1,800 @@ +This file is ulimit.def, from which is created ulimit.c. +It implements the builtin "ulimit" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES ulimit.c + +$BUILTIN ulimit +$FUNCTION ulimit_builtin +$DEPENDS_ON !_MINIX +$SHORT_DOC ulimit [-SHabcdefiklmnpqrstuvxPT] [limit] +Modify shell resource limits. + +Provides control over the resources available to the shell and processes +it creates, on systems that allow such control. + +Options: + -S use the `soft' resource limit + -H use the `hard' resource limit + -a all current limits are reported + -b the socket buffer size + -c the maximum size of core files created + -d the maximum size of a process's data segment + -e the maximum scheduling priority (`nice') + -f the maximum size of files written by the shell and its children + -i the maximum number of pending signals + -k the maximum number of kqueues allocated for this process + -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 + -P the maximum number of pseudoterminals + -R the maximum time a real-time process can run before blocking + -T the maximum number of threads + +Not all options are available on all platforms. + +If LIMIT is given, it is the new value of the specified resource; the +special LIMIT values `soft', `hard', and `unlimited' stand for the +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. + +Exit Status: +Returns success unless an invalid option is supplied or an error occurs. +$END + +#if !defined (_MINIX) + +#include + +#include "../bashtypes.h" +#if defined (HAVE_SYS_PARAM_H) +# 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 +#elif defined (HAVE_SYS_TIMES_H) +# 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 (HAVE_RESOURCE) && defined (HAVE_ULIMIT_H) +# include +#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 + +/* Alternate names */ + +/* 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 */ + +#if defined (HAVE_RESOURCE) && defined (RLIMIT_POSIXLOCKS) && !defined (RLIMIT_LOCKS) +# define RLIMIT_LOCKS RLIMIT_POSIXLOCKS +#endif /* HAVE_RESOURCE && RLIMIT_POSIXLOCKS && !RLIMIT_LOCKS */ + +/* 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 (RLIMIT_PTHREAD) && defined (RLIMIT_NTHR) +# define RLIMIT_PTHREAD RLIMIT_NTHR +#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 + +/* "Blocks" are defined as 512 bytes when in Posix mode and 1024 bytes + otherwise. */ +#define POSIXBLK -2 + +#define BLOCKSIZE(x) (((x) == POSIXBLK) ? (posixly_correct ? 512 : 1024) : (x)) + +static int _findlim PARAMS((int)); + +static int ulimit_internal PARAMS((int, char *, int, int)); + +static int get_limit PARAMS((int, RLIMTYPE *, RLIMTYPE *)); +static int set_limit PARAMS((int, RLIMTYPE, int)); + +static void printone PARAMS((int, RLIMTYPE, int)); +static void print_all_limits PARAMS((int)); + +static int set_all_limits PARAMS((int, RLIMTYPE)); + +static int filesize PARAMS((RLIMTYPE *)); +static int pipesize PARAMS((RLIMTYPE *)); +static int getmaxuprc PARAMS((RLIMTYPE *)); +static int getmaxvm PARAMS((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. */ + const char * const description; /* Descriptive string to output. */ + const char * const units; /* scale */ +} RESOURCE_LIMITS; + +static RESOURCE_LIMITS limits[] = { +#ifdef RLIMIT_NPTS + { 'P', RLIMIT_NPTS, 1, "number of pseudoterminals", (char *)NULL }, +#endif +#ifdef RLIMIT_RTTIME + { 'R', RLIMIT_RTTIME, 1, "real-time non-blocking time", "microseconds" }, +#endif +#ifdef RLIMIT_PTHREAD + { 'T', RLIMIT_PTHREAD, 1, "number of threads", (char *)NULL }, +#endif +#ifdef RLIMIT_SBSIZE + { 'b', RLIMIT_SBSIZE, 1, "socket buffer size", "bytes" }, +#endif +#ifdef RLIMIT_CORE + { 'c', RLIMIT_CORE, POSIXBLK, "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, POSIXBLK, "file size", "blocks" }, +#ifdef RLIMIT_SIGPENDING + { 'i', RLIMIT_SIGPENDING, 1, "pending signals", (char *)NULL }, +#endif +#ifdef RLIMIT_KQUEUES + { 'k', RLIMIT_KQUEUES, 1, "max kqueues", (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_HELPOPT; + 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 (sh_chkwrite (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 = BLOCKSIZE(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]; + int factor; + + factor = BLOCKSIZE(limits[limind].block_factor); + 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 %20s", 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 / 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-5.1/builtins_org/umask.def b/bash-5.1/builtins_org/umask.def new file mode 100644 index 0000000..8041d56 --- /dev/null +++ b/bash-5.1/builtins_org/umask.def @@ -0,0 +1,317 @@ +This file is umask.def, from which is created umask.c. +It implements the builtin "umask" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$PRODUCES umask.c + +$BUILTIN umask +$FUNCTION umask_builtin +$SHORT_DOC umask [-p] [-S] [mode] +Display or set file mode mask. + +Sets the user file-creation mask to MODE. If MODE is omitted, prints +the current value of the mask. + +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). + +Options: + -p if MODE is omitted, output in a form that may be reused as input + -S makes the output symbolic; otherwise an octal number is output + +Exit Status: +Returns success unless MODE is invalid or an invalid option is given. +$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" + +/* **************************************************************** */ +/* */ +/* UMASK Builtin and Helpers */ +/* */ +/* **************************************************************** */ + +static void print_symbolic_umask PARAMS((mode_t)); +static int symbolic_umask PARAMS((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; + CASE_HELPOPT; + 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); + } + + return (sh_chkwrite (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 +#if defined (__STDC__) +print_symbolic_umask (mode_t um) +#else +print_symbolic_umask (um) + mode_t um; +#endif +{ + 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-5.1/builtins_org/wait.def b/bash-5.1/builtins_org/wait.def new file mode 100644 index 0000000..824c83f --- /dev/null +++ b/bash-5.1/builtins_org/wait.def @@ -0,0 +1,364 @@ +This file is wait.def, from which is created wait.c. +It implements the builtin "wait" in Bash. + +Copyright (C) 1987-2020 Free Software Foundation, Inc. + +This file is part of GNU Bash, the Bourne Again SHell. + +Bash is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Bash is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Bash. If not, see . + +$BUILTIN wait +$FUNCTION wait_builtin +$DEPENDS_ON JOB_CONTROL +$PRODUCES wait.c +$SHORT_DOC wait [-fn] [-p var] [id ...] +Wait for job completion and return exit status. + +Waits for each process identified by an ID, which may be a process ID or a +job specification, and reports its termination status. If ID is not +given, waits for all currently active child processes, and the return +status is zero. If ID is a job specification, waits for all processes +in that job's pipeline. + +If the -n option is supplied, waits for a single job from the list of IDs, +or, if no IDs are supplied, for the next job to complete and returns its +exit status. + +If the -p option is supplied, the process or job identifier of the job +for which the exit status is returned is assigned to the variable VAR +named by the option argument. The variable will be unset initially, before +any assignment. This is useful only when the -n option is supplied. + +If the -f option is supplied, and job control is enabled, waits for the +specified ID to terminate, instead of waiting for it to change status. + +Exit Status: +Returns the status of the last ID; fails if ID is invalid or an invalid +option is given, or if -n is supplied and the shell has no unwaited-for +children. +$END + +$BUILTIN wait +$FUNCTION wait_builtin +$DEPENDS_ON !JOB_CONTROL +$SHORT_DOC wait [pid ...] +Wait for process completion and return exit status. + +Waits for each process specified by a PID and reports its termination status. +If PID is not given, waits for all currently active child processes, +and the return status is zero. PID must be a process ID. + +Exit Status: +Returns the status of the last PID; fails if PID is invalid or an invalid +option is given. +$END + +#include + +#include "../bashtypes.h" +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#include "../bashansi.h" + +#include "../shell.h" +#include "../execute_cmd.h" +#include "../jobs.h" +#include "../trap.h" +#include "../sig.h" +#include "common.h" +#include "bashgetopt.h" + +extern int wait_signal_received; + +procenv_t wait_intr_buf; +int wait_intr_flag; + +static int set_waitlist PARAMS((WORD_LIST *)); +static void unset_waitlist PARAMS((void)); + +/* 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 \ + { \ + wait_signal_received = 0; \ + wait_intr_flag = 0; \ + return (s);\ + } \ + while (0) + +int +wait_builtin (list) + WORD_LIST *list; +{ + int status, code, opt, nflag, wflags; + char *vname; + SHELL_VAR *pidvar; + struct procstat pstat; + + USE_VAR(list); + + nflag = wflags = 0; + vname = NULL; + pidvar = (SHELL_VAR *)NULL; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "fnp:")) != -1) + { + switch (opt) + { +#if defined (JOB_CONTROL) + case 'n': + nflag = 1; + break; + case 'f': + wflags |= JWAIT_FORCE; + break; + case 'p': + vname = list_optarg; + break; +#endif + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + /* Sanity-check variable name if -p supplied. */ + if (vname) + { +#if defined (ARRAY_VARS) + int arrayflags; + + arrayflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0; + if (legal_identifier (vname) == 0 && valid_array_reference (vname, arrayflags) == 0) +#else + if (legal_identifier (vname) == 0) +#endif + { + sh_invalidid (vname); + WAIT_RETURN (EXECUTION_FAILURE); + } + if (builtin_unbind_variable (vname) == -2) + WAIT_RETURN (EXECUTION_FAILURE); + } + + /* 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. */ + wait_intr_flag = 1; + code = setjmp_sigs (wait_intr_buf); + + if (code) + { + last_command_exit_signal = wait_signal_received; + status = 128 + wait_signal_received; + wait_sigint_cleanup (); + WAIT_RETURN (status); + } + + opt = first_pending_trap (); +#if defined (SIGCHLD) + /* We special case SIGCHLD when not in posix mode because we don't break + out of the wait even when the signal is trapped; we run the trap after + the wait completes. See how it's handled in jobs.c:waitchld(). */ + if (opt == SIGCHLD && posixly_correct == 0) + opt = next_pending_trap (opt+1); +#endif + if (opt != -1) + { + last_command_exit_signal = wait_signal_received = opt; + status = opt + 128; + WAIT_RETURN (status); + } + + /* We support jobs or pids. + wait [pid-or-job ...] */ + +#if defined (JOB_CONTROL) + if (nflag) + { + if (list) + { + opt = set_waitlist (list); + if (opt == 0) + WAIT_RETURN (127); + wflags |= JWAIT_WAITING; + } + + status = wait_for_any_job (wflags, &pstat); + if (vname && status >= 0) + bind_var_to_int (vname, pstat.pid); + + if (status < 0) + status = 127; + if (list) + unset_waitlist (); + WAIT_RETURN (status); + } +#endif + + /* But wait without any arguments means to wait for all of the shell's + currently active background processes. */ + if (list == 0) + { + wait_for_background_pids (&pstat); + if (vname) + bind_var_to_int (vname, pstat.pid); + 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, wflags|JWAIT_PERROR); + pstat.pid = pid; + pstat.status = status; + } + else + { + sh_badpid (w); + pstat.pid = NO_PID; + pstat.status = 127; + 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 */ + pstat.pid = NO_PID; + pstat.status = status; + list = list->next; + continue; + } + + /* Job spec used. Wait for the last pid in the pipeline. */ + UNBLOCK_CHILD (oset); + status = wait_for_job (job, wflags, &pstat); + } +#endif /* JOB_CONTROL */ + else + { + sh_badpid (w); + pstat.pid = NO_PID; + pstat.status = 127; + status = EXECUTION_FAILURE; + } + + /* Don't waste time with a longjmp. */ + if (wait_signal_received) + { + last_command_exit_signal = wait_signal_received; + status = 128 + wait_signal_received; + wait_sigint_cleanup (); + WAIT_RETURN (status); + } + + list = list->next; + } + + WAIT_RETURN (status); +} + +#if defined (JOB_CONTROL) +/* Take each valid pid or jobspec in LIST and mark the corresponding job as + J_WAITING, so wait -n knows which jobs to wait for. Return the number of + jobs we found. */ +static int +set_waitlist (list) + WORD_LIST *list; +{ + sigset_t set, oset; + int job, r, njob; + intmax_t pid; + WORD_LIST *l; + + BLOCK_CHILD (set, oset); + njob = 0; + for (l = list; l; l = l->next) + { + job = NO_JOB; + job = (l && legal_number (l->word->word, &pid) && pid == (pid_t) pid) + ? get_job_by_pid ((pid_t) pid, 0, 0) + : get_job_spec (l); + if (job == NO_JOB || jobs == 0 || INVALID_JOB (job)) + { + sh_badjob (l->word->word); + continue; + } + /* We don't check yet to see if one of the desired jobs has already + terminated, but we could. We wait until wait_for_any_job(). This + has the advantage of validating all the arguments. */ + if ((jobs[job]->flags & J_WAITING) == 0) + { + njob++; + jobs[job]->flags |= J_WAITING; + } + } + UNBLOCK_CHILD (oset); + return (njob); +} + +/* Clean up after a call to wait -n jobs */ +static void +unset_waitlist () +{ + int i; + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + for (i = 0; i < js.j_jobslots; i++) + if (jobs[i] && (jobs[i]->flags & J_WAITING)) + jobs[i]->flags &= ~J_WAITING; + UNBLOCK_CHILD (oset); +} +#endif diff --git a/bash-5.1/command.h b/bash-5.1/command.h new file mode 100644 index 0000000..914198f --- /dev/null +++ b/bash-5.1/command.h @@ -0,0 +1,408 @@ +/* command.h -- The structures used internally to represent commands, and + the extern declarations of the functions used to create them. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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, + r_append_err_and_out +}; + +/* Redirection flags; values for rflags */ +#define REDIR_VARASSIGN 0x01 + +/* 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 BADVAR_REDIRECT -5 /* something wrong with {varname}redir */ + +#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 || ri == r_append_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_append_err_and_out || \ + 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, cm_coproc }; + +/* Possible values for the `flags' field of a WORD_DESC. */ +#define W_HASDOLLAR (1 << 0) /* Dollar sign present. */ +#define W_QUOTED (1 << 1) /* Some form of quote character is present. */ +#define W_ASSIGNMENT (1 << 2) /* This word is a variable assignment. */ +#define W_SPLITSPACE (1 << 3) /* Split this word on " " regardless of IFS */ +#define W_NOSPLIT (1 << 4) /* Do not perform word splitting on this word because ifs is empty string. */ +#define W_NOGLOB (1 << 5) /* Do not perform globbing on this word. */ +#define W_NOSPLIT2 (1 << 6) /* Don't split word except for $@ expansion (using spaces) because context does not allow it. */ +#define W_TILDEEXP (1 << 7) /* Tilde expand this assignment word */ +#define W_DOLLARAT (1 << 8) /* $@ and its special handling -- UNUSED */ +#define W_DOLLARSTAR (1 << 9) /* $* and its special handling -- UNUSED */ +#define W_NOCOMSUB (1 << 10) /* Don't perform command substitution on this word */ +#define W_ASSIGNRHS (1 << 11) /* Word is rhs of an assignment statement */ +#define W_NOTILDE (1 << 12) /* Don't perform tilde expansion on this word */ +#define W_ITILDE (1 << 13) /* Internal flag for word expansion */ +#define W_EXPANDRHS (1 << 14) /* Expanding word in ${paramOPword} */ +#define W_COMPASSIGN (1 << 15) /* Compound assignment */ +#define W_ASSNBLTIN (1 << 16) /* word is a builtin command that takes assignments */ +#define W_ASSIGNARG (1 << 17) /* word is assignment argument to command */ +#define W_HASQUOTEDNULL (1 << 18) /* word contains a quoted null character */ +#define W_DQUOTE (1 << 19) /* word should be treated as if double-quoted */ +#define W_NOPROCSUB (1 << 20) /* don't perform process substitution */ +#define W_SAWQUOTEDNULL (1 << 21) /* word contained a quoted null that was removed */ +#define W_ASSIGNASSOC (1 << 22) /* word looks like associative array assignment */ +#define W_ASSIGNARRAY (1 << 23) /* word looks like a compound indexed array assignment */ +#define W_ARRAYIND (1 << 24) /* word is an array index being expanded */ +#define W_ASSNGLOBAL (1 << 25) /* word is a global assignment to declare (declare/typeset -g) */ +#define W_NOBRACE (1 << 26) /* Don't perform brace expansion */ +#define W_COMPLETE (1 << 27) /* word is being expanded for completion */ +#define W_CHKLOCAL (1 << 28) /* check for local vars on assignment */ +#define W_NOASSNTILDE (1 << 29) /* don't do tilde expansion like an assignment statement */ +#define W_FORCELOCAL (1 << 30) /* force assignments to be to local variables, non-fatal on assignment errors */ + +/* Flags for the `pflags' argument to param_expand() and various + parameter_brace_expand_xxx functions; also used for string_list_dollar_at */ +#define PF_NOCOMSUB 0x01 /* Do not perform command substitution */ +#define PF_IGNUNBOUND 0x02 /* ignore unbound vars even if -u set */ +#define PF_NOSPLIT2 0x04 /* same as W_NOSPLIT2 */ +#define PF_ASSIGNRHS 0x08 /* same as W_ASSIGNRHS */ +#define PF_COMPLETE 0x10 /* same as W_COMPLETE, sets SX_COMPLETE */ +#define PF_EXPANDRHS 0x20 /* same as W_EXPANDRHS */ +#define PF_ALLINDS 0x40 /* array, act as if [@] was supplied */ + +/* 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 */ +#define SUBSHELL_PROCSUB 0x20 /* subshell caused by <(command) or >(command) */ +#define SUBSHELL_COPROC 0x40 /* subshell from a coproc pipeline */ +#define SUBSHELL_RESETTRAP 0x80 /* subshell needs to reset trap strings on first call to trap */ + +/* 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. */ + REDIRECTEE redirector; /* Descriptor or varname to be redirected. */ + int rflags; /* Private flags for this redirection */ + 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 . +*/ + +/*********************************************************/ +/* Modify or set defines based on the configure results. */ +/*********************************************************/ + +#if !defined (HAVE_VPRINTF) && defined (HAVE_DOPRNT) +# define USE_VFPRINTF_EMULATION +# define HAVE_VPRINTF +#endif + +#if defined (HAVE_SYS_RESOURCE_H) && defined (HAVE_GETRLIMIT) +# define HAVE_RESOURCE +#endif + +#if !defined (GETPGRP_VOID) +# define HAVE_BSD_PGRP +#endif + +/* Try this without testing __STDC__ for the time being. */ +#if defined (HAVE_STDARG_H) +# define PREFER_STDARG +# define USE_VARARGS +#else +# if defined (HAVE_VARARGS_H) +# define PREFER_VARARGS +# define USE_VARARGS +# endif +#endif + +#if defined (HAVE_SYS_SOCKET_H) && defined (HAVE_GETPEERNAME) && defined (HAVE_NETINET_IN_H) +# define HAVE_NETWORK +#endif + +#if defined (HAVE_REGEX_H) && defined (HAVE_REGCOMP) && defined (HAVE_REGEXEC) +# define HAVE_POSIX_REGEXP +#endif + +/* backwards compatibility between different autoconf versions */ +#if HAVE_DECL_SYS_SIGLIST && !defined (SYS_SIGLIST_DECLARED) +# define SYS_SIGLIST_DECLARED +#endif + +/***********************************************************************/ +/* Unset defines based on what configure reports as missing or broken. */ +/***********************************************************************/ + +/* Ultrix botches type-ahead when switching from canonical to + non-canonical mode, at least through version 4.3 */ +#if !defined (HAVE_TERMIOS_H) || !defined (HAVE_TCGETATTR) || defined (ultrix) +# define TERMIOS_MISSING +#endif + +/* If we have a getcwd(3), but one that does not dynamically allocate memory, + #undef HAVE_GETCWD so the replacement in getcwd.c will be built. We do + not do this on Solaris, because their implementation of loopback mounts + breaks the traditional file system assumptions that getcwd uses. */ +#if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) && !defined (SOLARIS) +# undef HAVE_GETCWD +#endif + +#if !defined (HAVE_DEV_FD) && defined (NAMED_PIPES_MISSING) +# undef PROCESS_SUBSTITUTION +#endif + +#if defined (JOB_CONTROL_MISSING) +# undef JOB_CONTROL +#endif + +#if defined (STRCOLL_BROKEN) +# undef HAVE_STRCOLL +#endif + +#if !defined (HAVE_POSIX_REGEXP) +# undef COND_REGEXP +#endif + +#if !HAVE_MKSTEMP +# undef USE_MKSTEMP +#endif + +#if !HAVE_MKDTEMP +# undef USE_MKDTMP +#endif + +/* If the shell is called by this name, it will become restricted. */ +#if defined (RESTRICTED_SHELL) +# define RESTRICTED_SHELL_NAME "rbash" +#endif + +/***********************************************************/ +/* Make sure feature defines have necessary prerequisites. */ +/***********************************************************/ + +/* BANG_HISTORY requires HISTORY. */ +#if defined (BANG_HISTORY) && !defined (HISTORY) +# define HISTORY +#endif /* BANG_HISTORY && !HISTORY */ + +#if defined (READLINE) && !defined (HISTORY) +# define HISTORY +#endif + +#if defined (PROGRAMMABLE_COMPLETION) && !defined (READLINE) +# undef PROGRAMMABLE_COMPLETION +#endif + +#if !defined (V9_ECHO) +# undef DEFAULT_ECHO_TO_XPG +#endif + +#if !defined (PROMPT_STRING_DECODE) +# undef PPROMPT +# define PPROMPT "$ " +#endif + +#if !defined (HAVE_SYSLOG) || !defined (HAVE_SYSLOG_H) +# undef SYSLOG_HISTORY +#endif + +/************************************************/ +/* check multibyte capability for I18N code */ +/************************************************/ + +/* For platforms which support the ISO C amendment 1 functionality we + support user defined character classes. */ +/* Solaris 2.5 has a bug: must be included before . */ +#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) && defined (HAVE_LOCALE_H) +# include +# include +# if defined (HAVE_ISWCTYPE) && \ + defined (HAVE_ISWLOWER) && \ + defined (HAVE_ISWUPPER) && \ + defined (HAVE_MBSRTOWCS) && \ + defined (HAVE_MBRTOWC) && \ + defined (HAVE_MBRLEN) && \ + defined (HAVE_TOWLOWER) && \ + defined (HAVE_TOWUPPER) && \ + defined (HAVE_WCHAR_T) && \ + defined (HAVE_WCTYPE_T) && \ + defined (HAVE_WINT_T) && \ + defined (HAVE_WCWIDTH) && \ + defined (HAVE_WCTYPE) + /* 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-5.1/config-top.h b/bash-5.1/config-top.h new file mode 100644 index 0000000..5149f51 --- /dev/null +++ b/bash-5.1/config-top.h @@ -0,0 +1,197 @@ +/* config-top.h - various user-settable options not under the control of autoconf. */ + +/* Copyright (C) 2002-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* 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 NON_INTERACTIVE_LOGIN_SHELLS + +/* Define BREAK_COMPLAINS if you want the non-standard, but useful + error messages about `break' and `continue' out of context. */ +#define BREAK_COMPLAINS + +/* Define CD_COMPLAINS if you want the non-standard, but sometimes-desired + error messages about multiple directory arguments to `cd'. */ +#define CD_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' terminates due to a SIGPIPE. */ +#define DONT_REPORT_SIGPIPE + +/* Define DONT_REPORT_SIGTERM if you don't want to see `Terminates' message + when a job exits due to SIGTERM, since that's the default signal sent + by the kill builtin. */ +#define DONT_REPORT_SIGTERM + +/* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins + like `echo' and `printf' to report errors when output does not succeed + due to EPIPE. */ +#define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS + +/* The default value of the PATH variable. */ +#ifndef DEFAULT_PATH_VALUE +#define DEFAULT_PATH_VALUE \ + "/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:." +#endif + +/* If you want to unconditionally set a value for PATH in every restricted + shell, set this. */ +/* #define RBASH_STATIC_PATH_VALUE "/rbin:/usr/rbin" */ + +/* 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:/usr/sbin:/sbin" +#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 + +/* Default interactive shell startup file. */ +#define DEFAULT_BASHRC "~/.bashrc" + +/* 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). This checks + for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment, + which can be fooled under certain not-uncommon circumstances. */ +#define SSH_SOURCE_BASHRC + +/* Define if you want the case-toggling operators (~[~]) and the + `capcase' variable attribute (declare -c). */ +/* TAG: bash-5.2 disable */ +#define CASEMOD_TOGGLECASE +#define CASEMOD_CAPCASE + +/* This is used as the name of a shell function to call when a command + name is not found. If you want to name it something other than the + default ("command_not_found_handle"), change it here. */ +/* #define NOTFOUND_HOOK "command_not_found_handle" */ + +/* Define if you want each line saved to the history list in bashhist.c: + bash_add_history() to be sent to syslog(). */ +/* #define SYSLOG_HISTORY */ +#if defined (SYSLOG_HISTORY) +# define SYSLOG_FACILITY LOG_USER +# define SYSLOG_LEVEL LOG_INFO +# define OPENLOG_OPTS LOG_PID +#endif + +/* Define if you want syslogging history to be controllable at runtime via a + shell option; if defined, the value is the default for the syslog_history + shopt option */ +#if defined (SYSLOG_HISTORY) +/* #define SYSLOG_SHOPT 1 */ +#endif + +/* Define if you want to include code in shell.c to support wordexp(3) */ +/* #define WORDEXP_OPTION */ + +/* Define as 1 if you want to enable code that implements multiple coprocs + executing simultaneously */ +#ifndef MULTIPLE_COPROCS +# define MULTIPLE_COPROCS 0 +#endif + +/* Define to 0 if you want the checkwinsize option off by default, 1 if you + want it on. */ +#define CHECKWINSIZE_DEFAULT 1 + +/* Define to 1 if you want to optimize for sequential array assignment when + using indexed arrays, 0 if you want bash-4.2 behavior, which favors + random access but is O(N) for each array assignment. */ +#define OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT 1 + +/* Define to 1 if you want to be able to export indexed arrays to processes + using the foo=([0]=one [1]=two) and so on */ +/* #define ARRAY_EXPORT 1 */ + +/* Define to 1 if you want the shell to exit if it is running setuid and its + attempt to drop privilege using setuid(getuid()) fails with errno == EAGAIN */ +/* #define EXIT_ON_SETUID_FAILURE 1 */ + +/* Define to 1 if you want the shell to re-check $PATH if a hashed filename + no longer exists. This behavior is the default in Posix mode. */ +#define CHECKHASH_DEFAULT 0 + +/* Define to the maximum level of recursion you want for the eval builtin + and trap handlers (since traps are run as if run by eval). + 0 means the limit is not active. */ +#define EVALNEST_MAX 0 + +/* Define to the maximum level of recursion you want for the source/. builtin. + 0 means the limit is not active. */ +#define SOURCENEST_MAX 0 + +/* Define to use libc mktemp/mkstemp instead of replacements in lib/sh/tmpfile.c */ +#define USE_MKTEMP +#define USE_MKSTEMP +#define USE_MKDTEMP + +/* Define to force the value of OLDPWD inherited from the environment to be a + directory */ +#define OLDPWD_CHECK_DIRECTORY 1 + +/* Define to set the initial size of the history list ($HISTSIZE). This must + be a string. */ +/*#define HISTSIZE_DEFAULT "500"*/ + +/* Define to 0 if you want history expansion to be disabled by default in + interactive shells; define to 1 for the historical behavior of enabling + when the shell is interactive. */ +#define HISTEXPAND_DEFAULT 1 + +/* Undefine or define to 0 if you don't want to allow associative array + assignment using a compound list of key-value pairs. */ +#define ASSOC_KVPAIR_ASSIGNMENT 1 diff --git a/bash-5.1/config.h.in b/bash-5.1/config.h.in new file mode 100644 index 0000000..369ab55 --- /dev/null +++ b/bash-5.1/config.h.in @@ -0,0 +1,1249 @@ +/* config.h -- Configuration file for bash. */ + +/* Copyright (C) 1987-2009,2011-2012,2013-2019 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +/* Template settings for autoconf */ + +#undef __EXTENSIONS__ +#undef _ALL_SOURCE +#undef _GNU_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_1_SOURCE +#undef _POSIX_PTHREAD_SEMANTICS +#undef _TANDEM_SOURCE +#undef _MINIX + +/* 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 EXTGLOB_DEFAULT to the value you'd like the extglob shell option + to have by default */ +#undef EXTGLOB_DEFAULT + +/* 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 COPROCESS_SUPPORT if you want support for ksh-like coprocesses and + the `coproc' reserved word */ +#define COPROCESS_SUPPORT + +/* 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 for case-modifying variable attributes; variables modified on + assignment */ +#undef CASEMOD_ATTRS + +/* Define for case-modifying word expansions */ +#undef CASEMOD_EXPANSIONS + +/* Define to make the `direxpand' shopt option enabled by default. */ +#undef DIRCOMPLETE_EXPAND_DEFAULT + +/* Define to make the `globasciiranges' shopt option enabled by default. */ +#undef GLOBASCII_DEFAULT + +/* Define to allow functions to be imported from the environment. */ +#undef FUNCTION_IMPORT + +/* 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 + +#undef restrict + +#undef volatile + +/* 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 __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 an `intmax_t'. */ +#undef SIZEOF_INTMAX_T + +/* The number of bytes in a `long long', if we have one. */ +#undef SIZEOF_LONG_LONG + +/* The number of bytes in a `wchar_t', if supported */ +#undef SIZEOF_WCHAR_T + +/* 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 + +/* Define if major/minor/makedev is defined in */ +#undef MAJOR_IN_MAKEDEV + +/* Define if major/minor/makedev is defined in */ +#undef MAJOR_IN_SYSMACROS + +/* 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 integer type wide enough to hold a pointer if doesn't define. */ +#undef uintptr_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 to `int' if doesn't define. */ +#undef sig_atomic_t + +#undef HAVE_MBSTATE_T + +/* Define if you have quad_t in . */ +#undef HAVE_QUAD_T + +/* Define if you have wchar_t in . */ +#undef HAVE_WCHAR_T + +/* Define if you have wctype_t in . */ +#undef HAVE_WCTYPE_T + +/* Define if you have wint_t in . */ +#undef HAVE_WINT_T + +#undef RLIMTYPE + +/* Define to the type of elements in the array set by `getgroups'. + 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 +#undef HAVE_DECL_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 + +#undef WEXITSTATUS_OFFSET + +#undef HAVE_STRUCT_TIMESPEC +#undef TIME_H_DEFINES_STRUCT_TIMESPEC +#undef SYS_TIME_H_DEFINES_STRUCT_TIMESPEC +#undef PTHREAD_H_DEFINES_STRUCT_TIMESPEC + +#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC +#undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC +#undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC +#undef HAVE_STRUCT_STAT_ST_ATIMENSEC +#undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC + +/* Characteristics of definitions in the system header files. */ + +#undef HAVE_GETPW_DECLS + +#undef HAVE_RESOURCE + +#undef HAVE_LIBC_FNM_EXTMATCH + +/* Define if you have and it defines AUDIT_USER_TTY */ +#undef HAVE_DECL_AUDIT_USER_TTY + +#undef HAVE_DECL_CONFSTR + +#undef HAVE_DECL_PRINTF + +#undef HAVE_DECL_SBRK + +#undef HAVE_DECL_STRCPY + +#undef HAVE_DECL_STRSIGNAL + +#undef HAVE_DECL_STRTOLD + +#undef PRI_MACROS_BROKEN + +#undef STRTOLD_BROKEN + +/* 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 + +/* The type of iconv's `inbuf' argument */ +#undef ICONV_CONST + +/* 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 arc4random function. */ +#undef HAVE_ARC4RANDOM + +/* 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 chown function. */ +#undef HAVE_CHOWN + +/* 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 dprintf function. */ +#undef HAVE_DPRINTF + +/* 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 faccessat function. */ +#undef HAVE_FACCESSAT + +/* Define if you have the fcntl function. */ +#undef HAVE_FCNTL + +/* Define if you have the fnmatch function. */ +#undef HAVE_FNMATCH + +/* Can fnmatch be used as a fallback to match [=equiv=] with collation weights? */ +#undef FNMATCH_EQUIV_FALLBACK + +/* Define if you have the fpurge/__fpurge function. */ +#undef HAVE_FPURGE +#undef HAVE___FPURGE +#undef HAVE_DECL_FPURGE + +/* 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 getentropy function. */ +#undef HAVE_GETENTROPY + +/* 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 getrandom function. */ +#undef HAVE_GETRANDOM + +/* 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 iconv function. */ +#undef HAVE_ICONV + +/* Define if you have the imaxdiv function. */ +#undef HAVE_IMAXDIV + +/* Define if you have the inet_aton function. */ +#undef HAVE_INET_ATON + +/* 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 isprint function. */ +#undef HAVE_ISPRINT + +/* Define if you have the isspace function. */ +#undef HAVE_ISSPACE + +/* Define if you have the iswctype function. */ +#undef HAVE_ISWCTYPE + +/* Define if you have the iswlower function. */ +#undef HAVE_ISWLOWER + +/* Define if you have the iswupper function. */ +#undef HAVE_ISWUPPER + +/* Define if you have the isxdigit function. */ +#undef HAVE_ISXDIGIT + +/* 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 locale_charset function. */ +#undef HAVE_LOCALE_CHARSET + +/* 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 mbscasecmp function. */ +#undef HAVE_MBSCASECMP + +/* Define if you have the mbschr function. */ +#undef HAVE_MBSCHR + +/* Define if you have the mbscmp function. */ +#undef HAVE_MBSCMP + +/* Define if you have the mbsnrtowcs function. */ +#undef HAVE_MBSNRTOWCS + +/* 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 mkdtemp function. */ +#undef HAVE_MKDTEMP + +/* Define if you have the mkfifo function. */ +#undef HAVE_MKFIFO + +/* Define if you have the mkstemp function. */ +#undef HAVE_MKSTEMP + +/* Define if you have the pathconf function. */ +#undef HAVE_PATHCONF + +/* Define if you have the pselect function. */ +#undef HAVE_PSELECT + +/* Define if you have the pread function. */ +#undef HAVE_PREAD + +/* 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 random function. */ +#undef HAVE_RANDOM + +/* 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 setitimer function. */ +#undef HAVE_SETITIMER + +/* 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 setregid function. */ +#undef HAVE_SETRESGID +#undef HAVE_DECL_SETRESGID + +/* Define if you have the setresuid function. */ +#undef HAVE_SETRESUID +#undef HAVE_DECL_SETRESUID + +/* 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 strcasestr function. */ +#undef HAVE_STRCASESTR + +/* Define if you have the strchr function. */ +#undef HAVE_STRCHR + +/* Define if you have the strchrnul function. */ +#undef HAVE_STRCHRNUL + +/* 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 syslog function. */ +#undef HAVE_SYSLOG + +/* 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 towlower function. */ +#undef HAVE_TOWLOWER + +/* Define if you have the towupper function. */ +#undef HAVE_TOWUPPER + +/* Define if you have the ttyname function. */ +#undef HAVE_TTYNAME + +/* 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 wcrtomb function. */ +#undef HAVE_WCRTOMB + +/* Define if you have the wcscoll function. */ +#undef HAVE_WCSCOLL + +/* Define if you have the wcsdup function. */ +#undef HAVE_WCSDUP + +/* Define if you have the wctype function. */ +#undef HAVE_WCTYPE + +/* Define if you have the wcswidth function. */ +#undef HAVE_WCSWIDTH + +/* Define if you have the wcwidth function. */ +#undef HAVE_WCWIDTH + +/* and if it works */ +#undef WCWIDTH_BROKEN + +/* Presence of certain system include files. */ + +/* Define if you have the header file. */ +#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_ELF_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_LIBAUDIT_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_MBSTR_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_STDBOOL_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_SYSLOG_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_IOCTL_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_MMAN_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_RANDOM_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_ULIMIT_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 + +/* Are we running the GNU C library, version 2.1 or later? */ +#undef GLIBC21 + +/* 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 + +#undef DEV_FD_STAT_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 you have the `localeconv' function. */ +#undef HAVE_LOCALECONV + +/* 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 `mremap' function. */ +#undef HAVE_MREMAP + +/* 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 */ + + +/* Additions for lib/readline */ + +/* Define if you have and it defines AUDIT_USER_TTY */ +#undef HAVE_DECL_AUDIT_USER_TTY + +/* End additions for lib/readline */ + +#include "config-bot.h" + +#endif /* _CONFIG_H_ */ diff --git a/bash-5.1/configure b/bash-5.1/configure new file mode 100755 index 0000000..0f1d3ed --- /dev/null +++ b/bash-5.1/configure @@ -0,0 +1,21992 @@ +#! /bin/sh +# From configure.ac for Bash 5.1, version 5.022. +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for bash 5.1-release. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-bash@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +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 + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='bash' +PACKAGE_TARNAME='bash' +PACKAGE_VERSION='5.1-release' +PACKAGE_STRING='bash 5.1-release' +PACKAGE_BUGREPORT='bug-bash@gnu.org' +PACKAGE_URL='' + +ac_unique_file="shell.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +gt_needs= +ac_header_list= +gl_use_threads_default= +ac_func_list= +ac_subst_vars='LTLIBOBJS +LOCAL_DEFS +LOCAL_LDFLAGS +LOCAL_CFLAGS +LOCAL_LIBS +MALLOC_DEBUG +DEBUG +RELSTATUS +BASHVERS +headersdir +loadablesdir +BUILD_DIR +incdir +PROFILE_FLAGS +SHOBJ_STATUS +SHOBJ_LIBS +SHOBJ_XLDFLAGS +SHOBJ_LDFLAGS +SHOBJ_LD +SHOBJ_CFLAGS +SHOBJ_CC +JOBS_O +TERMCAP_DEP +TERMCAP_LIB +SIGLIST_O +PTHREAD_H_DEFINES_STRUCT_TIMESPEC +SYS_TIME_H_DEFINES_STRUCT_TIMESPEC +TIME_H_DEFINES_STRUCT_TIMESPEC +LIBINTL_H +INTL_INC +INTL_DEP +LIBOBJS +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +INTL_LIBTOOL_SUFFIX_PREFIX +INTLOBJS +GENCAT +INSTOBJEXT +DATADIRNAME +CATOBJEXT +USE_INCLUDED_LIBINTL +BUILD_INCLUDED_LIBINTL +WINDRES +WOE32 +WOE32DLL +HAVE_NAMELESS_LOCALES +HAVE_WPRINTF +HAVE_NEWLOCALE +HAVE_SNPRINTF +HAVE_ASPRINTF +HAVE_POSIX_PRINTF +INTL_DEFAULT_VERBOSITY +ARFLAGS +INTL_MACOSX_LIBS +GLIBC21 +GNULIB_OVERRIDES_WINT_T +INTLBISON +LTLIBICONV +LIBICONV +LTLIBMULTITHREAD +LIBMULTITHREAD +LTLIBTHREAD +LIBTHREAD +LIBPTH_PREFIX +LTLIBPTH +LIBPTH +PRI_MACROS_BROKEN +ALLOCA +HAVE_VISIBILITY +CFLAG_VISIBILITY +GLIBC2 +XGETTEXT_EXTRA_OPTIONS +MSGMERGE +XGETTEXT_015 +XGETTEXT +GMSGFMT_015 +MSGFMT_015 +GMSGFMT +MSGFMT +GETTEXT_MACRO_VERSION +USE_NLS +SED +MKDIR_P +SIZE +MAKE_SHELL +SET_MAKE +YFLAGS +YACC +RANLIB +AR +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +TILDE_LIB +HIST_LIBDIR +HISTORY_DEP +HISTORY_LIB +RL_INCLUDE +RL_INCLUDEDIR +RL_LIBDIR +READLINE_DEP +READLINE_LIB +RL_MINOR +RL_MAJOR +RL_VERSION +LIBS_FOR_BUILD +STATIC_LD +SIGNAMES_O +SIGNAMES_H +CROSS_COMPILE +EGREP +GREP +CPP +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +HELPSTRINGS +HELPFILES_TARGET +HELPINSTALL +HELPDIRDEFINE +HELPDIR +MALLOC_DEP +MALLOC_LDFLAGS +MALLOC_LIBRARY +MALLOC_LIB +MALLOC_SRC +MALLOC_TARGET +TESTSCRIPT +CPPFLAGS_FOR_BUILD +LDFLAGS_FOR_BUILD +CFLAGS_FOR_BUILD +CC_FOR_BUILD +DEBUGGER_START_FILE +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_afs +with_bash_malloc +with_curses +with_gnu_malloc +with_installed_readline +enable_minimal_config +enable_alias +enable_arith_for_command +enable_array_variables +enable_bang_history +enable_brace_expansion +enable_casemod_attributes +enable_casemod_expansions +enable_command_timing +enable_cond_command +enable_cond_regexp +enable_coprocesses +enable_debugger +enable_dev_fd_stat_broken +enable_direxpand_default +enable_directory_stack +enable_disabled_builtins +enable_dparen_arithmetic +enable_extended_glob +enable_extended_glob_default +enable_function_import +enable_glob_asciiranges_default +enable_help_builtin +enable_history +enable_job_control +enable_multibyte +enable_net_redirections +enable_process_substitution +enable_progcomp +enable_prompt_string_decoding +enable_readline +enable_restricted +enable_select +enable_separate_helpfiles +enable_single_help_strings +enable_strict_posix_default +enable_usg_echo_default +enable_xpg_echo_default +enable_mem_scramble +enable_profiling +enable_static_link +enable_largefile +enable_nls +enable_threads +with_gnu_ld +enable_rpath +with_libpth_prefix +with_libiconv_prefix +with_included_gettext +with_libintl_prefix +' + ac_precious_vars='build_alias +host_alias +target_alias +DEBUGGER_START_FILE +CC_FOR_BUILD +CFLAGS_FOR_BUILD +LDFLAGS_FOR_BUILD +CPPFLAGS_FOR_BUILD +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +YACC +YFLAGS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# 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. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -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) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$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 ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -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 ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + 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 ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -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_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=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 ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# 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 + 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 + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + 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 + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# 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 5.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 \`..'] + +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] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/bash] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_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 5.1-release:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --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-casemod-attributes + include case-modifying variable attributes + --enable-casemod-expansions + include case-modifying word expansions + --enable-command-timing enable the time reserved word and command timing + --enable-cond-command enable the conditional command + --enable-cond-regexp enable extended regular expression matching in + conditional commands + --enable-coprocesses enable coprocess support and the coproc reserved + word + --enable-debugger enable support for bash debugger + --enable-dev-fd-stat-broken + enable this option if stat on /dev/fd/N and fstat on + file descriptor N don't return the same results + --enable-direxpand-default + enable the direxpand shell option by default + --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-extended-glob-default + force extended pattern matching to be enabled by + default + --enable-function-import + allow bash to import exported function definitions + by default + --enable-glob-asciiranges-default + force bracket range expressions in pattern matching + to use the C locale by default + --enable-help-builtin include the help builtin + --enable-history turn on command history + --enable-job-control enable job control features + --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 + --enable-threads={posix|solaris|pth|windows} + specify multithreading API + --disable-threads build without multithread safety + --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-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-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-libpth-prefix[=DIR] search for libpth in DIR/include and DIR/lib + --without-libpth-prefix don't search for libpth in includedir and libdir + --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_FOR_BUILD + C compiler used when compiling binaries used only at build time + CFLAGS_FOR_BUILD + Compilation options (CFLAGS) used when compiling binaries used + only at build time + LDFLAGS_FOR_BUILD + Linker options (LDFLAGS) used when compiling binaries used only + at build time + CPPFLAGS_FOR_BUILD + C preprocessor options (CPPFLAGS) used when compiling binaries + used only at build time + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + YACC The `Yet Another Compiler Compiler' implementation to use. + Defaults to the first program found out of: `bison -y', `byacc', + `yacc'. + YFLAGS The list of arguments that will be passed by default to $YACC. + This script will default YFLAGS to the empty string to avoid a + default value of `-d' given by some make applications. + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +bash configure 5.1-release +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------- ## +## Report this to bug-bash@gnu.org ## +## ------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES +# --------------------------------------------- +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_decl + +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES +# -------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_c_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid; break +else + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=$ac_mid; break +else + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + ac_lo= ac_hi= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid +else + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval () { return $2; } +static unsigned long int ulongval () { return $2; } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + echo >>conftest.val; read $3 &5 +$as_echo_n "checking for $2.$3... " >&6; } +if eval \${$4+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" +else + eval "$4=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$4 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by bash $as_me 5.1-release, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +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` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&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_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > 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 + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +gt_needs="$gt_needs need-ngettext" +as_fn_append ac_header_list " stdlib.h" +as_fn_append ac_header_list " unistd.h" +as_fn_append ac_header_list " sys/param.h" +as_fn_append ac_func_list " symlink" +as_fn_append ac_func_list " uselocale" +as_fn_append ac_header_list " xlocale.h" +as_fn_append ac_header_list " sys/time.h" +as_fn_append ac_func_list " alarm" +as_fn_append ac_func_list " fpurge" +as_fn_append ac_func_list " __fpurge" +as_fn_append ac_func_list " snprintf" +as_fn_append ac_func_list " vsnprintf" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +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 + as_fn_error $? "cannot find install-sh, install.sh, or shtool in ./support \"$srcdir\"/./support" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +ac_config_headers="$ac_config_headers config.h" + + +BASHVERS=5.1 +RELSTATUS=release + +case "$RELSTATUS" in +alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +*) DEBUG= MALLOC_DEBUG= ;; +esac + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + + +opt_bash_malloc=yes +opt_afs=no +opt_curses=no +opt_with_installed_readline=no + +#htmldir= + +case "${host_cpu}-${host_os}" in +# mostly obsolete platforms +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 +*-dgux*) opt_bash_malloc=no ;; # DG/UX machines +sparc-svr4*) opt_bash_malloc=no ;; # sparc SVR4, SVR4.2 +m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir +*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins +*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft +*-beos*) opt_bash_malloc=no ;; # they say it's suitable +# These need additional investigation +sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF +*-aix*) opt_bash_malloc=no ;; # AIX machines +*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment +# These lack a working sbrk(2) +aarch64-freebsd*) opt_bash_malloc=no ;; +riscv*-freebsd*) opt_bash_malloc=no ;; +# Mach-derived systems have a ton of extra malloc functions and lack sbrk(2) +*-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep +*-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep +*-macos*) opt_bash_malloc=no ;; # Apple MacOS X +*-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X) +*-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X) +*-machten4) opt_bash_malloc=no ;; # MachTen 4.x +# Niche or non-mainstream-shell-user systems +*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x +*-nsk*) opt_bash_malloc=no ;; # HP NonStop +*-haiku*) opt_bash_malloc=no ;; # Haiku OS +*-genode*) opt_bash_malloc=no ;; # Genode has no sbrk +esac + +# memory scrambling on free() +case "${host_os}" in +sco3.2v5*|sco3.2v4*) opt_memscramble=no ;; +*) opt_memscramble=yes ;; +esac + + + + +# Check whether --with-afs was given. +if test "${with_afs+set}" = set; then : + withval=$with_afs; opt_afs=$withval +fi + + +# Check whether --with-bash-malloc was given. +if test "${with_bash_malloc+set}" = set; then : + withval=$with_bash_malloc; opt_bash_malloc=$withval +fi + + +# Check whether --with-curses was given. +if test "${with_curses+set}" = set; then : + withval=$with_curses; opt_curses=$withval +fi + + +# Check whether --with-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 was given. +if test "${with_installed_readline+set}" = set; then : + withval=$with_installed_readline; opt_with_installed_readline=$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)' + + $as_echo "#define USING_BASH_MALLOC 1" >>confdefs.h + +else + MALLOC_LIB= + MALLOC_LIBRARY= + MALLOC_LDFLAGS= + MALLOC_DEP= +fi + +if test "$opt_afs" = yes; then + $as_echo "#define AFS 1" >>confdefs.h + +fi + +if test "$opt_curses" = yes; then + prefer_curses=yes +fi + +if test -z "${DEBUGGER_START_FILE}"; then + DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc' +fi + +opt_minimal_config=no + +opt_job_control=yes +opt_alias=yes +opt_readline=yes +opt_history=yes +opt_bang_history=yes +opt_dirstack=yes +opt_restricted=yes +opt_process_subst=yes +opt_prompt_decoding=yes +opt_select=yes +opt_help=yes +opt_array_variables=yes +opt_dparen_arith=yes +opt_extended_glob=yes +opt_brace_expansion=yes +opt_disabled_builtins=no +opt_command_timing=yes +opt_xpg_echo=no +opt_strict_posix=no +opt_cond_command=yes +opt_cond_regexp=yes +opt_coproc=yes +opt_arith_for_command=yes +opt_net_redirs=yes +opt_progcomp=yes +opt_separate_help=no +opt_multibyte=yes +opt_debugger=yes +opt_single_longdoc_strings=yes +opt_casemod_attrs=yes +opt_casemod_expansions=yes +opt_extglob_default=no +opt_dircomplete_expand_default=no +opt_globascii_default=yes +opt_function_import=yes +opt_dev_fd_stat_broken=no + +opt_static_link=no +opt_profiling=no + +# Check whether --enable-minimal-config was given. +if test "${enable_minimal_config+set}" = set; then : + enableval=$enable_minimal_config; opt_minimal_config=$enableval +fi + + +if test $opt_minimal_config = yes; then + opt_job_control=no opt_alias=no opt_readline=no + opt_history=no opt_bang_history=no opt_dirstack=no + opt_restricted=no opt_process_subst=no opt_prompt_decoding=no + opt_select=no opt_help=no opt_array_variables=no opt_dparen_arith=no + opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no + opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no + opt_net_redirs=no opt_progcomp=no opt_separate_help=no + opt_multibyte=yes opt_cond_regexp=no opt_coproc=no + opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no + opt_globascii_default=yes +fi + +# Check whether --enable-alias was given. +if test "${enable_alias+set}" = set; then : + enableval=$enable_alias; opt_alias=$enableval +fi + +# Check whether --enable-arith-for-command was given. +if test "${enable_arith_for_command+set}" = set; then : + enableval=$enable_arith_for_command; opt_arith_for_command=$enableval +fi + +# Check whether --enable-array-variables was given. +if test "${enable_array_variables+set}" = set; then : + enableval=$enable_array_variables; opt_array_variables=$enableval +fi + +# Check whether --enable-bang-history was given. +if test "${enable_bang_history+set}" = set; then : + enableval=$enable_bang_history; opt_bang_history=$enableval +fi + +# Check whether --enable-brace-expansion was given. +if test "${enable_brace_expansion+set}" = set; then : + enableval=$enable_brace_expansion; opt_brace_expansion=$enableval +fi + +# Check whether --enable-casemod-attributes was given. +if test "${enable_casemod_attributes+set}" = set; then : + enableval=$enable_casemod_attributes; opt_casemod_attrs=$enableval +fi + +# Check whether --enable-casemod-expansions was given. +if test "${enable_casemod_expansions+set}" = set; then : + enableval=$enable_casemod_expansions; opt_casemod_expansions=$enableval +fi + +# Check whether --enable-command-timing was given. +if test "${enable_command_timing+set}" = set; then : + enableval=$enable_command_timing; opt_command_timing=$enableval +fi + +# Check whether --enable-cond-command was given. +if test "${enable_cond_command+set}" = set; then : + enableval=$enable_cond_command; opt_cond_command=$enableval +fi + +# Check whether --enable-cond-regexp was given. +if test "${enable_cond_regexp+set}" = set; then : + enableval=$enable_cond_regexp; opt_cond_regexp=$enableval +fi + +# Check whether --enable-coprocesses was given. +if test "${enable_coprocesses+set}" = set; then : + enableval=$enable_coprocesses; opt_coproc=$enableval +fi + +# Check whether --enable-debugger was given. +if test "${enable_debugger+set}" = set; then : + enableval=$enable_debugger; opt_debugger=$enableval +fi + +# Check whether --enable-dev-fd-stat-broken was given. +if test "${enable_dev_fd_stat_broken+set}" = set; then : + enableval=$enable_dev_fd_stat_broken; opt_dev_fd_stat_broken=$enableval +fi + +# Check whether --enable-direxpand-default was given. +if test "${enable_direxpand_default+set}" = set; then : + enableval=$enable_direxpand_default; opt_dircomplete_expand_default=$enableval +fi + +# Check whether --enable-directory-stack was given. +if test "${enable_directory_stack+set}" = set; then : + enableval=$enable_directory_stack; opt_dirstack=$enableval +fi + +# Check whether --enable-disabled-builtins was given. +if test "${enable_disabled_builtins+set}" = set; then : + enableval=$enable_disabled_builtins; opt_disabled_builtins=$enableval +fi + +# Check whether --enable-dparen-arithmetic was given. +if test "${enable_dparen_arithmetic+set}" = set; then : + enableval=$enable_dparen_arithmetic; opt_dparen_arith=$enableval +fi + +# Check whether --enable-extended-glob was given. +if test "${enable_extended_glob+set}" = set; then : + enableval=$enable_extended_glob; opt_extended_glob=$enableval +fi + +# Check whether --enable-extended-glob-default was given. +if test "${enable_extended_glob_default+set}" = set; then : + enableval=$enable_extended_glob_default; opt_extglob_default=$enableval +fi + +# Check whether --enable-function-import was given. +if test "${enable_function_import+set}" = set; then : + enableval=$enable_function_import; opt_function_import=$enableval +fi + +# Check whether --enable-glob-asciiranges-default was given. +if test "${enable_glob_asciiranges_default+set}" = set; then : + enableval=$enable_glob_asciiranges_default; opt_globascii_default=$enableval +fi + +# Check whether --enable-help-builtin was given. +if test "${enable_help_builtin+set}" = set; then : + enableval=$enable_help_builtin; opt_help=$enableval +fi + +# Check whether --enable-history was given. +if test "${enable_history+set}" = set; then : + enableval=$enable_history; opt_history=$enableval +fi + +# Check whether --enable-job-control was given. +if test "${enable_job_control+set}" = set; then : + enableval=$enable_job_control; opt_job_control=$enableval +fi + +# Check whether --enable-multibyte was given. +if test "${enable_multibyte+set}" = set; then : + enableval=$enable_multibyte; opt_multibyte=$enableval +fi + +# Check whether --enable-net-redirections was given. +if test "${enable_net_redirections+set}" = set; then : + enableval=$enable_net_redirections; opt_net_redirs=$enableval +fi + +# Check whether --enable-process-substitution was given. +if test "${enable_process_substitution+set}" = set; then : + enableval=$enable_process_substitution; opt_process_subst=$enableval +fi + +# Check whether --enable-progcomp was given. +if test "${enable_progcomp+set}" = set; then : + enableval=$enable_progcomp; opt_progcomp=$enableval +fi + +# Check whether --enable-prompt-string-decoding was given. +if test "${enable_prompt_string_decoding+set}" = set; then : + enableval=$enable_prompt_string_decoding; opt_prompt_decoding=$enableval +fi + +# Check whether --enable-readline was given. +if test "${enable_readline+set}" = set; then : + enableval=$enable_readline; opt_readline=$enableval +fi + +# Check whether --enable-restricted was given. +if test "${enable_restricted+set}" = set; then : + enableval=$enable_restricted; opt_restricted=$enableval +fi + +# Check whether --enable-select was given. +if test "${enable_select+set}" = set; then : + enableval=$enable_select; opt_select=$enableval +fi + +# Check whether --enable-separate-helpfiles was given. +if test "${enable_separate_helpfiles+set}" = set; then : + enableval=$enable_separate_helpfiles; opt_separate_help=$enableval +fi + +# Check whether --enable-single-help-strings was given. +if test "${enable_single_help_strings+set}" = set; then : + enableval=$enable_single_help_strings; opt_single_longdoc_strings=$enableval +fi + +# Check whether --enable-strict-posix-default was given. +if test "${enable_strict_posix_default+set}" = set; then : + enableval=$enable_strict_posix_default; opt_strict_posix=$enableval +fi + +# Check whether --enable-usg-echo-default was given. +if test "${enable_usg_echo_default+set}" = set; then : + enableval=$enable_usg_echo_default; opt_xpg_echo=$enableval +fi + +# Check whether --enable-xpg-echo-default was given. +if test "${enable_xpg_echo_default+set}" = set; then : + enableval=$enable_xpg_echo_default; opt_xpg_echo=$enableval +fi + + +# Check whether --enable-mem-scramble was given. +if test "${enable_mem_scramble+set}" = set; then : + enableval=$enable_mem_scramble; opt_memscramble=$enableval +fi + +# Check whether --enable-profiling was given. +if test "${enable_profiling+set}" = set; then : + enableval=$enable_profiling; opt_profiling=$enableval +fi + +# Check whether --enable-static-link was given. +if test "${enable_static_link+set}" = set; then : + enableval=$enable_static_link; opt_static_link=$enableval +fi + + + + + + + + + +if test $opt_alias = yes; then +$as_echo "#define ALIAS 1" >>confdefs.h + +fi +if test $opt_dirstack = yes; then +$as_echo "#define PUSHD_AND_POPD 1" >>confdefs.h + +fi +if test $opt_restricted = yes; then +$as_echo "#define RESTRICTED_SHELL 1" >>confdefs.h + +fi +if test $opt_process_subst = yes; then +$as_echo "#define PROCESS_SUBSTITUTION 1" >>confdefs.h + +fi +if test $opt_prompt_decoding = yes; then +$as_echo "#define PROMPT_STRING_DECODE 1" >>confdefs.h + +fi +if test $opt_select = yes; then +$as_echo "#define SELECT_COMMAND 1" >>confdefs.h + +fi +if test $opt_help = yes; then +$as_echo "#define HELP_BUILTIN 1" >>confdefs.h + +fi +if test $opt_array_variables = yes; then +$as_echo "#define ARRAY_VARS 1" >>confdefs.h + +fi +if test $opt_dparen_arith = yes; then +$as_echo "#define DPAREN_ARITHMETIC 1" >>confdefs.h + +fi +if test $opt_brace_expansion = yes; then +$as_echo "#define BRACE_EXPANSION 1" >>confdefs.h + +fi +if test $opt_disabled_builtins = yes; then +$as_echo "#define DISABLED_BUILTINS 1" >>confdefs.h + +fi +if test $opt_command_timing = yes; then +$as_echo "#define COMMAND_TIMING 1" >>confdefs.h + +fi +if test $opt_xpg_echo = yes ; then +$as_echo "#define DEFAULT_ECHO_TO_XPG 1" >>confdefs.h + +fi +if test $opt_strict_posix = yes; then +$as_echo "#define STRICT_POSIX 1" >>confdefs.h + +fi +if test $opt_extended_glob = yes ; then +$as_echo "#define EXTENDED_GLOB 1" >>confdefs.h + +fi +if test $opt_extglob_default = yes; then +$as_echo "#define EXTGLOB_DEFAULT 1" >>confdefs.h + +else +$as_echo "#define EXTGLOB_DEFAULT 0" >>confdefs.h + +fi +if test $opt_cond_command = yes ; then +$as_echo "#define COND_COMMAND 1" >>confdefs.h + +fi +if test $opt_cond_regexp = yes ; then +$as_echo "#define COND_REGEXP 1" >>confdefs.h + +fi +if test $opt_coproc = yes; then +$as_echo "#define COPROCESS_SUPPORT 1" >>confdefs.h + +fi +if test $opt_arith_for_command = yes; then +$as_echo "#define ARITH_FOR_COMMAND 1" >>confdefs.h + +fi +if test $opt_net_redirs = yes; then +$as_echo "#define NETWORK_REDIRECTIONS 1" >>confdefs.h + +fi +if test $opt_progcomp = yes; then +$as_echo "#define PROGRAMMABLE_COMPLETION 1" >>confdefs.h + +fi +if test $opt_multibyte = no; then +$as_echo "#define NO_MULTIBYTE_SUPPORT 1" >>confdefs.h + +fi +if test $opt_debugger = yes; then +$as_echo "#define DEBUGGER 1" >>confdefs.h + +fi +if test $opt_casemod_attrs = yes; then +$as_echo "#define CASEMOD_ATTRS 1" >>confdefs.h + +fi +if test $opt_casemod_expansions = yes; then +$as_echo "#define CASEMOD_EXPANSIONS 1" >>confdefs.h + +fi +if test $opt_dircomplete_expand_default = yes; then +$as_echo "#define DIRCOMPLETE_EXPAND_DEFAULT 1" >>confdefs.h + +fi +if test $opt_globascii_default = yes; then +$as_echo "#define GLOBASCII_DEFAULT 1" >>confdefs.h + +else +$as_echo "#define GLOBASCII_DEFAULT 0" >>confdefs.h + +fi +if test $opt_function_import = yes; then +$as_echo "#define FUNCTION_IMPORT 1" >>confdefs.h + +fi +if test $opt_dev_fd_stat_broken = yes; then +$as_echo "#define DEV_FD_STAT_BROKEN 1" >>confdefs.h + +fi + +if test $opt_memscramble = yes; then +$as_echo "#define MEMSCRAMBLE 1" >>confdefs.h + +fi + +if test "$opt_minimal_config" = yes; then + TESTSCRIPT=run-minimal +else + TESTSCRIPT=run-all +fi + +HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET= +if test "$opt_separate_help" != no; then + if test "$opt_separate_help" = "yes" ; then + HELPDIR='${datadir}/bash' + else + HELPDIR=$opt_separate_help + fi + HELPDIRDEFINE='-H ${HELPDIR}' + HELPINSTALL='install-help' + HELPFILES_TARGET='helpdoc' +fi +HELPSTRINGS= +if test "$opt_single_longdoc_strings" != "yes"; then + HELPSTRINGS='-S' +fi + + + + + + + + + + + + + + + + + + +if test -z "$CFLAGS"; then + want_auto_cflags=1 +fi + +echo "" +echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}" +echo "" + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + 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 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; 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 | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +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 "$want_auto_cflags"; then + AUTO_CFLAGS="-g ${GCC+-O2}" + AUTO_LDFLAGS="-g ${GCC+-O2}" + STYLE_CFLAGS="${GCC+-Wno-parentheses} ${GCC+-Wno-format-security}" +else + AUTO_CFLAGS= AUTO_LDFLAGS= STYLE_CFLAGS= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +$as_echo_n "checking for library containing strerror... " >&6; } +if ${ac_cv_search_strerror+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (); +int +main () +{ +return strerror (); + ; + return 0; +} +_ACEOF +for ac_lib in '' cposix; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_strerror=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_strerror+:} false; then : + break +fi +done +if ${ac_cv_search_strerror+:} false; then : + +else + ac_cv_search_strerror=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +$as_echo "$ac_cv_search_strerror" >&6; } +ac_res=$ac_cv_search_strerror +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +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 + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#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)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = xyes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "#define _MINIX 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if ${ac_cv_safe_to_define___extensions__+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h + + + + +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +if ${ac_cv_sys_largefile_CC+:} false; then : + $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 + if ac_fn_c_try_compile "$LINENO"; then : + break +fi +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +$as_echo "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if ${ac_cv_sys_file_offset_bits+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -rf conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +if ${ac_cv_sys_large_files+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +$as_echo "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -rf conftest* + fi + + +fi + + + +SIGNAMES_O= +SIGNAMES_H=lsignames.h + + + +CROSS_COMPILE= +if test "x$cross_compiling" = "xyes"; then + case "${host}" in + *-cygwin*) + cross_cache=${srcdir}/cross-build/cygwin32.cache + ;; + *-mingw*) + cross_cache=${srcdir}/cross-build/cygwin32.cache + ;; + i[3456]86-*-beos*) + cross_cache=${srcdir}/cross-build/x86-beos.cache + ;; + *-qnx*) + cross_cache=${srcdir}/cross-build/qnx.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 + + + + +CFLAGS=${CFLAGS-"$AUTO_CFLAGS"} +# LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX + +if test "$opt_profiling" = "yes"; then + PROFILE_FLAGS=-pg + case "$host_os" in + solaris2*|linux*) ;; + *) opt_static_link=yes ;; + esac + DEBUG= MALLOC_DEBUG= +fi + +prefer_shared=yes +prefer_static=no + +if test "$opt_static_link" = yes; then + prefer_static=yes + prefer_shared=no + # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2 + if test -n "$GCC" || test "$ac_cv_c_compiler_gnu" = "yes"; then + STATIC_LD="-static" + case "$host_os" in + solaris2*|linux*) ;; + *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental + esac + fi +fi + +# set the appropriate make variables for building the "build tools" +# modify defaults based on whether or not we are cross compiling, since the +# options for the target host may not be appropriate for the build host +if test "X$cross_compiling" = "Xno"; then + CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'} + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)' + if test X"$opt_profiling" = Xyes; then + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(BASE_LDFLAGS)'} + else + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} + fi + # CFLAGS set above to default value if not passed in environment + if test -n "$want_auto_cflags" ; then + CFLAGS_FOR_BUILD="${CFLAGS} ${STYLE_CFLAGS}" + else + CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'} + fi + LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'} +else + CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"} + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""} + CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"} + LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""} +fi + + + + + + + + + + + + +if test $ac_cv_c_compiler_gnu = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 +$as_echo_n "checking whether $CC needs -traditional... " >&6; } +if ${ac_cv_prog_gcc_traditional+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_pattern="Autoconf.*'x'" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +Autoconf TIOCGETP +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then : + 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +Autoconf TCGETA +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then : + ac_cv_prog_gcc_traditional=yes +fi +rm -f conftest* + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 +$as_echo "$ac_cv_prog_gcc_traditional" >&6; } + if test $ac_cv_prog_gcc_traditional = yes; then + CC="$CC -traditional" + 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 +$as_echo_n "checking which library has the termcap functions... " >&6; } +_bash_needmsg= +fi +if ${bash_cv_termcap_lib+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent" +if test "x$ac_cv_func_tgetent" = xyes; then : + bash_cv_termcap_lib=libc +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 +$as_echo_n "checking for tgetent in -ltermcap... " >&6; } +if ${ac_cv_lib_termcap_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltermcap $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_termcap_tgetent=yes +else + ac_cv_lib_termcap_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 +$as_echo "$ac_cv_lib_termcap_tgetent" >&6; } +if test "x$ac_cv_lib_termcap_tgetent" = xyes; then : + bash_cv_termcap_lib=libtermcap +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 +$as_echo_n "checking for tgetent in -ltinfo... " >&6; } +if ${ac_cv_lib_tinfo_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltinfo $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_tinfo_tgetent=yes +else + ac_cv_lib_tinfo_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 +$as_echo "$ac_cv_lib_tinfo_tgetent" >&6; } +if test "x$ac_cv_lib_tinfo_tgetent" = xyes; then : + bash_cv_termcap_lib=libtinfo +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5 +$as_echo_n "checking for tgetent in -lcurses... " >&6; } +if ${ac_cv_lib_curses_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcurses $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_curses_tgetent=yes +else + ac_cv_lib_curses_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5 +$as_echo "$ac_cv_lib_curses_tgetent" >&6; } +if test "x$ac_cv_lib_curses_tgetent" = xyes; then : + bash_cv_termcap_lib=libcurses +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 +$as_echo_n "checking for tgetent in -lncurses... " >&6; } +if ${ac_cv_lib_ncurses_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lncurses $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ncurses_tgetent=yes +else + ac_cv_lib_ncurses_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 +$as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } +if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then : + bash_cv_termcap_lib=libncurses +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5 +$as_echo_n "checking for tgetent in -lncursesw... " >&6; } +if ${ac_cv_lib_ncursesw_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lncursesw $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ncursesw_tgetent=yes +else + ac_cv_lib_ncursesw_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5 +$as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; } +if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then : + bash_cv_termcap_lib=libncursesw +else + bash_cv_termcap_lib=gnutermcap +fi + +fi + +fi + +fi + +fi + +fi + +fi + +if test "X$_bash_needmsg" = "Xyes"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 +$as_echo_n "checking which library has the termcap functions... " >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5 +$as_echo "using $bash_cv_termcap_lib" >&6; } +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +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 + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking version of installed readline library" >&5 +$as_echo_n "checking version of installed readline library... " >&6; } + +# What a pain in the ass this is. + +# 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 ${ac_cv_rl_version+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_rl_version='8.0' +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +extern int rl_gnu_readline_p; + +int +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 +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_rl_version=`cat conftest.rlv` +else + ac_cv_rl_version='0.0' +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam 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 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not test version of installed readline library." >&5 +$as_echo "$as_me: WARNING: Could not test version of installed readline library." >&2;} +elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then + # set these for use by the caller + RL_PREFIX=$ac_cv_rl_prefix + RL_LIBDIR=$ac_cv_rl_libdir + RL_INCLUDEDIR=$ac_cv_rl_includedir + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rl_version" >&5 +$as_echo "$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 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rl_version" >&5 +$as_echo "$ac_cv_rl_version" >&6; } + +fi + + + case "$ac_cv_rl_version" in + 8*|9*) ;; + *) opt_with_installed_readline=no + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: installed readline library is too old to be linked with bash" >&5 +$as_echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using private bash version" >&5 +$as_echo "$as_me: WARNING: using private bash version" >&2;} + ;; + esac +fi + +TILDE_LIB=-ltilde +if test $opt_readline = yes; then + $as_echo "#define READLINE 1" >>confdefs.h + + if test "$opt_with_installed_readline" != "no" ; then + case "$opt_with_installed_readline" in + yes) RL_INCLUDE= ;; + *) case "$RL_INCLUDEDIR" in + /usr/include) ;; + *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;; + esac + ;; + esac + READLINE_DEP= + READLINE_LIB=-lreadline + # section for OS versions that don't allow unresolved symbols + # to be compiled into dynamic libraries. + case "$host_os" in + cygwin*) TILDE_LIB= ;; + esac + else + RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + READLINE_DEP='$(READLINE_LIBRARY)' + # section for OS versions that ship an older/broken version of + # readline as a standard dynamic library and don't allow a + # static version specified as -llibname to override the + # dynamic version + case "${host_os}" in + darwin[89]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;; + *) READLINE_LIB=-lreadline ;; + esac + fi +else + RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + READLINE_LIB= READLINE_DEP= +fi +if test $opt_history = yes || test $opt_bang_history = yes; then + if test $opt_history = yes; then + $as_echo "#define HISTORY 1" >>confdefs.h + + fi + if test $opt_bang_history = yes; then + $as_echo "#define BANG_HISTORY 1" >>confdefs.h + + fi + if test "$opt_with_installed_readline" != "no"; then + HIST_LIBDIR=$RL_LIBDIR + HISTORY_DEP= + HISTORY_LIB=-lhistory + case "$opt_with_installed_readline" in + yes) RL_INCLUDE= ;; + *) case "$RL_INCLUDEDIR" in + /usr/include) ;; + *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;; + esac + ;; + esac + else + HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + HISTORY_DEP='$(HISTORY_LIBRARY)' + # section for OS versions that ship an older version of + # readline as a standard dynamic library and don't allow a + # static version specified as -llibname to override the + # dynamic version + case "${host_os}" in + darwin[89]*|darwin10*) HISTORY_LIB='${HISTORY_LIBRARY}' ;; + *) HISTORY_LIB=-lhistory ;; + esac + fi +else + HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + HISTORY_LIB= HISTORY_DEP= +fi + + + + + + + + + + + +# 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. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + 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 + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# 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' + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +test -n "$ARFLAGS" || ARFLAGS="cr" +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_YACC+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_YACC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 +$as_echo "$YACC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + + +case "$ac_cv_prog_YACC" in +*bison*) ;; +*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: bison not available; needed to process parse.y" >&5 +$as_echo "$as_me: WARNING: bison not available; needed to process parse.y" >&2;} ;; +esac + +case "$host_os" in +opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;; +*) MAKE_SHELL=/bin/sh ;; +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 + + +# Checks for stat-related time functions. + +# Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2012 Free Software +# Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# st_atim.tv_nsec - Linux, Solaris, Cygwin +# st_atimespec.tv_nsec - FreeBSD, NetBSD, if ! defined _POSIX_SOURCE +# st_atimensec - FreeBSD, NetBSD, if defined _POSIX_SOURCE +# st_atim.st__tim.tv_nsec - UnixWare (at least 2.1.2 through 7.1) + +# st_birthtimespec - FreeBSD, NetBSD (hidden on OpenBSD 3.9, anyway) +# st_birthtim - Cygwin 1.7.0+ + + + +# Configure checks for struct timespec + +# Copyright (C) 2000-2001, 2003-2007, 2009-2011, 2012 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Original written by Paul Eggert and Jim Meyering. +# Modified by Chet Ramey for bash + + + + + + +# codeset.m4 serial 5 (gettext-0.18.2) + + + + + + + + +# fcntl-o.m4 serial 6 + + + + +# Test whether the flags O_NOATIME and O_NOFOLLOW actually work. +# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. +# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. + + +# gettext.m4 serial 69 (gettext-0.19.9) + + + + + + + + + + + + + + + + + +# glibc2.m4 serial 3 + +# Test for the GNU C Library, version 2.0 or newer. +# From Bruno Haible. + + + +# glibc21.m4 serial 5 + +# Test for the GNU C Library, version 2.1 or newer, or uClibc. +# From Bruno Haible. + + + +# host-cpu-c-abi.m4 serial 11 + + + + + + + +# iconv.m4 serial 21 + + + + + + + + + +# intdiv0.m4 serial 6 (gettext-0.18.2) + + + + +# intl.m4 serial 34 (gettext-0.19.9) + + + + + + + + + + + +# intlmacosx.m4 serial 6 (gettext-0.19.9) + + + +# intl-thread-locale.m4 serial 4 + + + + + +# intmax.m4 serial 6 (gettext-0.18.2) + + + + +# inttypes-pri.m4 serial 7 (gettext-0.18.2) + + + + +# Define PRI_MACROS_BROKEN if exists and defines the PRI* +# macros to non-string values. This is the case on AIX 4.3.3. + + + +# inttypes.m4 serial 27 + + + + + + +# Ensure that the PRI* and SCN* macros are defined appropriately. + + +# Define the symbol $1 to be 1 if the condition is true, 0 otherwise. +# If $2 is true, the condition is $3; otherwise if long long int is supported +# approximate the condition with $4; otherwise, assume the condition is false. +# The condition should work on all C99 platforms; the approximations should be +# good enough to work on all practical pre-C99 platforms. +# $2 is evaluated by the C preprocessor, $3 and $4 as compile-time constants. + + + + + + +# inttypes_h.m4 serial 10 + + +# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + + + +# lcmessage.m4 serial 7 (gettext-0.18.2) + + +# Check whether LC_MESSAGES is available in . + + + +# lib-ld.m4 serial 9 + + + + + + +# lib-link.m4 serial 28 + + + + + + + + + + + + + + + + + + +# lib-prefix.m4 serial 14 + + + + + + + + + + +# lock.m4 serial 14 + + + + +# Prerequisites of lib/glthread/lock.c. + + +# nls.m4 serial 5 (gettext-0.18) + + + + + + +# po.m4 serial 24a + + + + + + + + + + + + +# printf-posix.m4 serial 6 (gettext-0.18.2) + + + + +# progtest.m4 serial 7 (gettext-0.18.2) + + + + +# Search path for a program which passes the given test. + + + +# pthread_rwlock_rdlock.m4 serial 2 + + + + +# size_max.m4 serial 11 + + + + + + +# stdint_h.m4 serial 9 + + +# Define HAVE_STDINT_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + + + +# threadlib.m4 serial 16 + + + + + + + + + + + + + + + + + + + + + +# uintmax_t.m4 serial 12 + + + + +# Define uintmax_t to 'unsigned long' or 'unsigned long long' +# if it is not already defined in or . + + + +# ulonglong.m4 serial 10 + +# visibility.m4 serial 6 + + + + + +# wchar_t.m4 serial 4 (gettext-0.18.2) + + + + +# wint_t.m4 serial 7 + + + + + + +# xsize.m4 serial 5 + + + + +$as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* 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"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 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 sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$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 + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; 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 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for preprocessor stringizing operator" >&5 +$as_echo_n "checking for preprocessor stringizing operator... " >&6; } +if ${ac_cv_c_stringize+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define x(y) #y + +char *s = x(teststring); +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "#teststring" >/dev/null 2>&1; then : + ac_cv_c_stringize=no +else + ac_cv_c_stringize=yes +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stringize" >&5 +$as_echo "$ac_cv_c_stringize" >&6; } +if test $ac_cv_c_stringize = yes; then + +$as_echo "#define HAVE_STRINGIZE 1" >>confdefs.h + +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double with more range or precision than double" >&5 +$as_echo_n "checking for long double with more range or precision than double... " >&6; } +if ${ac_cv_type_long_double_wider+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + long double const a[] = + { + 0.0L, DBL_MIN, DBL_MAX, DBL_EPSILON, + LDBL_MIN, LDBL_MAX, LDBL_EPSILON + }; + long double + f (long double x) + { + return ((x + (unsigned long int) 10) * (-1 / x) + a[0] + + (x ? f (x) : 'c')); + } + +int +main () +{ +static int test_array [1 - 2 * !((0 < ((DBL_MAX_EXP < LDBL_MAX_EXP) + + (DBL_MANT_DIG < LDBL_MANT_DIG) + - (LDBL_MAX_EXP < DBL_MAX_EXP) + - (LDBL_MANT_DIG < DBL_MANT_DIG))) + && (int) LDBL_EPSILON == 0 + )]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_long_double_wider=yes +else + ac_cv_type_long_double_wider=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double_wider" >&5 +$as_echo "$ac_cv_type_long_double_wider" >&6; } + if test $ac_cv_type_long_double_wider = yes; then + +$as_echo "#define HAVE_LONG_DOUBLE_WIDER 1" >>confdefs.h + + fi + + ac_cv_c_long_double=$ac_cv_type_long_double_wider + if test $ac_cv_c_long_double = yes; then + +$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h + + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for function prototypes" >&5 +$as_echo_n "checking for function prototypes... " >&6; } +if test "$ac_cv_prog_cc_c89" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define PROTOTYPES 1" >>confdefs.h + + +$as_echo "#define __PROTOTYPES 1" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 +$as_echo_n "checking whether char is unsigned... " >&6; } +if ${ac_cv_c_char_unsigned+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((char) -1) < 0)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_char_unsigned=no +else + ac_cv_c_char_unsigned=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 +$as_echo "$ac_cv_c_char_unsigned" >&6; } +if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then + $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 +$as_echo_n "checking for working volatile... " >&6; } +if ${ac_cv_c_volatile+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +volatile int x; +int * volatile y = (int *) 0; +return !x && !y; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_volatile=yes +else + ac_cv_c_volatile=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 +$as_echo "$ac_cv_c_volatile" >&6; } +if test $ac_cv_c_volatile = no; then + +$as_echo "#define volatile /**/" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 +$as_echo_n "checking for C/C++ restrict keyword... " >&6; } +if ${ac_cv_c_restrict+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_restrict=no + # The order here caters to the fact that C++ does not require restrict. + for ac_kw in __restrict __restrict__ _Restrict restrict; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +typedef int * int_ptr; + int foo (int_ptr $ac_kw ip) { + return ip[0]; + } +int +main () +{ +int s[1]; + int * $ac_kw t = s; + t[0] = 0; + return foo(t) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_restrict=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_restrict" != no && break + done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 +$as_echo "$ac_cv_c_restrict" >&6; } + + case $ac_cv_c_restrict in + restrict) ;; + no) $as_echo "#define restrict /**/" >>confdefs.h + ;; + *) cat >>confdefs.h <<_ACEOF +#define restrict $ac_cv_c_restrict +_ACEOF + ;; + esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +$as_echo_n "checking whether NLS is requested... " >&6; } + # Check whether --enable-nls was given. +if test "${enable_nls+set}" = set; then : + enableval=$enable_nls; USE_NLS=$enableval +else + USE_NLS=yes +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MSGFMT+:} false; then : + $as_echo_n "(cached) " >&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 + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 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 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +$as_echo "$MSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GMSGFMT+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +$as_echo "$GMSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac + + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_XGETTEXT+:} false; then : + $as_echo_n "(cached) " >&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 + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 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 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +$as_echo "$XGETTEXT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + rm -f messages.po + + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MSGMERGE+:} false; then : + $as_echo_n "(cached) " >&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 + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 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 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +$as_echo "$MSGMERGE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2 or newer" >&5 +$as_echo_n "checking whether we are using the GNU C Library 2 or newer... " >&6; } +if ${ac_cv_gnu_library_2+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) && !defined __UCLIBC__ + 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=yes +else + ac_cv_gnu_library_2=no +fi +rm -f conftest* + + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2" >&5 +$as_echo "$ac_cv_gnu_library_2" >&6; } + + GLIBC2="$ac_cv_gnu_library_2" + + + + + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 +$as_echo_n "checking whether the -Werror option is usable... " >&6; } +if ${gl_cv_cc_vis_werror+:} false; then : + $as_echo_n "(cached) " >&6 +else + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_cc_vis_werror=yes +else + gl_cv_cc_vis_werror=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$gl_save_CFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 +$as_echo "$gl_cv_cc_vis_werror" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 +$as_echo_n "checking for simple visibility declarations... " >&6; } +if ${gl_cv_cc_visibility+:} false; then : + $as_echo_n "(cached) " >&6 +else + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + if test $gl_cv_cc_vis_werror = yes; then + CFLAGS="$CFLAGS -Werror" + fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); + void dummyfunc (void) {} + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_cc_visibility=yes +else + gl_cv_cc_visibility=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$gl_save_CFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 +$as_echo "$gl_cv_cc_visibility" >&6; } + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + + + +cat >>confdefs.h <<_ACEOF +#define HAVE_VISIBILITY $HAVE_VISIBILITY +_ACEOF + + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5 +$as_echo_n "checking for stdint.h... " >&6; } +if ${gl_cv_header_stdint_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include +int +main () +{ +uintmax_t i = (uintmax_t) -1; return !i; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_stdint_h=yes +else + gl_cv_header_stdint_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5 +$as_echo "$gl_cv_header_stdint_h" >&6; } + if test $gl_cv_header_stdint_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H_WITH_UINTMAX 1 +_ACEOF + + fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } +if ${ac_cv_working_alloca_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_working_alloca_h=yes +else + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } +if ${ac_cv_func_alloca_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# ifdef HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +void *alloca (size_t); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_alloca_works=yes +else + ac_cv_func_alloca_works=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +$as_echo "#define C_ALLOCA 1" >>confdefs.h + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +if ${ac_cv_os_cray+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined CRAY && ! defined CRAY2 +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then : + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } +if ${ac_cv_c_stack_direction+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_c_stack_direction=0 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_stack_direction=1 +else + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + + + for ac_header in $ac_header_list +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + +for ac_func in getpagesize +do : + ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" +if test "x$ac_cv_func_getpagesize" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETPAGESIZE 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +$as_echo_n "checking for working mmap... " >&6; } +if ${ac_cv_func_mmap_fixed_mapped+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_mmap_fixed_mapped=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + const char *cdata2; + int i, pagesize; + int fd, fd2; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 2; + if (write (fd, data, pagesize) != pagesize) + return 3; + close (fd); + + /* Next, check that the tail of a page is zero-filled. File must have + non-zero length, otherwise we risk SIGBUS for entire page. */ + fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); + if (fd2 < 0) + return 4; + cdata2 = ""; + if (write (fd2, cdata2, 1) != 1) + return 5; + data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); + if (data2 == MAP_FAILED) + return 6; + for (i = 0; i < pagesize; ++i) + if (*(data2 + i)) + return 7; + close (fd2); + if (munmap (data2, pagesize)) + return 8; + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + return 9; + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 10; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 11; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + return 12; + if (read (fd, data3, pagesize) != pagesize) + return 13; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 14; + close (fd); + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_mmap_fixed_mapped=yes +else + ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +$as_echo "#define HAVE_MMAP 1" >>confdefs.h + +fi +rm -f conftest.mmap conftest.txt + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5 +$as_echo_n "checking whether integer division by zero raises SIGFPE... " >&6; } +if ${gt_cv_int_divbyzero_sigfpe+:} false; then : + $as_echo_n "(cached) " >&6 +else + + gt_cv_int_divbyzero_sigfpe= + case "$host_os" in + macos* | darwin[6-9]* | darwin[1-9][0-9]*) + # On Mac OS X 10.2 or newer, just assume the same as when cross- + # compiling. If we were to perform the real test, 1 Crash Report + # dialog window would pop up. + case "$host_cpu" in + i[34567]86 | x86_64) + gt_cv_int_divbyzero_sigfpe="guessing yes" ;; + esac + ;; + esac + if test -z "$gt_cv_int_divbyzero_sigfpe"; then + if test "$cross_compiling" = yes; then : + + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i[34567]86 | x86_64 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +static void +sigfpe_handler (int sig) +{ + /* 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 xnan; + +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; + xnan = y / y; + exit (2); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gt_cv_int_divbyzero_sigfpe=yes +else + gt_cv_int_divbyzero_sigfpe=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5 +$as_echo "$gt_cv_int_divbyzero_sigfpe" >&6; } + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + +cat >>confdefs.h <<_ACEOF +#define INTDIV0_RAISES_SIGFPE $value +_ACEOF + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 +$as_echo_n "checking for inttypes.h... " >&6; } +if ${gl_cv_header_inttypes_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ +uintmax_t i = (uintmax_t) -1; return !i; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_header_inttypes_h=yes +else + gl_cv_header_inttypes_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5 +$as_echo "$gl_cv_header_inttypes_h" >&6; } + if test $gl_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +$as_echo_n "checking for unsigned long long int... " >&6; } +if ${ac_cv_type_unsigned_long_long_int+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main () +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +else + ac_cv_type_unsigned_long_long_int=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + + test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + +cat >>confdefs.h <<_ACEOF +#define uintmax_t $ac_type +_ACEOF + + else + +$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h + + fi + + + for ac_header in inttypes.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" +if test "x$ac_cv_header_inttypes_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H 1 +_ACEOF + +fi + +done + + if test $ac_cv_header_inttypes_h = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5 +$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; } +if ${gt_cv_inttypes_pri_broken+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef PRId32 +char *p = PRId32; +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_inttypes_pri_broken=no +else + gt_cv_inttypes_pri_broken=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5 +$as_echo "$gt_cv_inttypes_pri_broken" >&6; } + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + +cat >>confdefs.h <<_ACEOF +#define PRI_MACROS_BROKEN 1 +_ACEOF + + PRI_MACROS_BROKEN=1 + else + PRI_MACROS_BROKEN=0 + fi + + + + + + + + # Check whether --enable-threads was given. +if test "${enable_threads+set}" = set; then : + enableval=$enable_threads; gl_use_threads=$enableval +else + if test -n "$gl_use_threads_default"; then + gl_use_threads="$gl_use_threads_default" + else + case "$host_os" in + osf*) gl_use_threads=no ;; + cygwin*) + case `uname -r` in + 1.[0-5].*) gl_use_threads=no ;; + *) gl_use_threads=yes ;; + esac + ;; + *) gl_use_threads=yes ;; + esac + fi + +fi + + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # For using : + case "$host_os" in + osf*) + # On OSF/1, the compiler needs the flag -D_REENTRANT so that it + # groks . cc also understands the flag -pthread, but + # we don't use it because 1. gcc-2.95 doesn't understand -pthread, + # 2. putting a flag into CPPFLAGS that has an effect on the linker + # causes the AC_LINK_IFELSE test below to succeed unexpectedly, + # leading to wrong values of LIBTHREAD and LTLIBTHREAD. + CPPFLAGS="$CPPFLAGS -D_REENTRANT" + ;; + esac + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in . + case "$host_os" in + aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; + esac + 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 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 + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +if test -n "$LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld" >&5 +$as_echo_n "checking for ld... " >&6; } +elif test "$GCC" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test -n "$LD"; then + # Let the user override the test with a path. + : +else + if ${acl_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + + acl_cv_path_LD= # Final result of this test + ac_prog=ld # Program to search in $PATH + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + acl_output=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $acl_output in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` + while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do + acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` + done + # Got the pathname. No search in PATH is needed. + acl_cv_path_LD="$acl_output" + ac_prog= + ;; + "") + # If it fails, then pretend we aren't using GCC. + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + fi + if test -n "$ac_prog"; then + # Search for $ac_prog in $PATH. + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + 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 variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined _ARCH_PPC64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # The compiler produces 64-bit code. Add option '-b64' so that the + # linker groks 64-bit object files. + case "$acl_cv_path_LD " in + *" -b64 "*) ;; + *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;; + esac + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + sparc64-*-netbsd*) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + # The compiler produces 32-bit code. Add option '-m elf32_sparc' + # so that the linker groks 32-bit object files. + case "$acl_cv_path_LD " in + *" -m elf32_sparc "*) ;; + *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;; + esac + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + esac + +fi + + LD="$acl_cv_path_LD" +fi +if test -n "$LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${acl_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +$as_echo_n "checking for shared library run path origin... " >&6; } +if ${acl_cv_rpath+:} false; then : + $as_echo_n "(cached) " >&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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +$as_echo "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath was given. +if test "${enable_rpath+set}" = set; then : + enableval=$enable_rpath; : +else + enable_rpath=yes +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5 +$as_echo_n "checking 32-bit host C ABI... " >&6; } +if ${gl_cv_host_cpu_c_abi_32bit+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$gl_cv_host_cpu_c_abi"; then + case "$gl_cv_host_cpu_c_abi" in + i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) + gl_cv_host_cpu_c_abi_32bit=yes ;; + *) + gl_cv_host_cpu_c_abi_32bit=no ;; + esac + else + case "$host_cpu" in + + i[4567]86 ) + gl_cv_host_cpu_c_abi_32bit=yes + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) \ + && !(defined __ILP32__ || defined _ILP32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_host_cpu_c_abi_32bit=no +else + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_host_cpu_c_abi_32bit=no +else + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_host_cpu_c_abi_32bit=no +else + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_host_cpu_c_abi_32bit=yes +else + gl_cv_host_cpu_c_abi_32bit=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_host_cpu_c_abi_32bit=no +else + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined _ARCH_PPC64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_host_cpu_c_abi_32bit=no +else + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi_32bit=yes + ;; + + riscv32 | riscv64 ) + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_host_cpu_c_abi_32bit=no +else + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_host_cpu_c_abi_32bit=no +else + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_host_cpu_c_abi_32bit=no +else + gl_cv_host_cpu_c_abi_32bit=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi_32bit=no + ;; + esac + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5 +$as_echo "$gl_cv_host_cpu_c_abi_32bit" >&6; } + + HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit" + + + + + + case "$host_os" in + solaris*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +$as_echo_n "checking for 64-bit host... " >&6; } +if ${gl_cv_solaris_64bit+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _LP64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_solaris_64bit=yes +else + gl_cv_solaris_64bit=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +$as_echo "$gl_cv_solaris_64bit" >&6; };; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5 +$as_echo_n "checking for the common suffixes of directories in the library search path... " >&6; } +if ${acl_cv_libdirstems+:} false; then : + $as_echo_n "(cached) " >&6 +else + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + if test "$HOST_CPU_C_ABI_32BIT" != yes; then + searchpath=`(if test -f /usr/bin/gcc \ + && LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \ + LC_ALL=C /usr/bin/gcc -print-search-dirs; \ + else \ + LC_ALL=C $CC -print-search-dirs; \ + fi) 2>/dev/null \ + | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5 +$as_echo "$acl_cv_libdirstems" >&6; } + # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2. + acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` + acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'` + + + + gl_threads_api=none + LIBTHREAD= + LTLIBTHREAD= + LIBMULTITHREAD= + LTLIBMULTITHREAD= + if test "$gl_use_threads" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5 +$as_echo_n "checking whether imported symbols can be declared weak... " >&6; } +if ${gl_cv_have_weak+:} false; then : + $as_echo_n "(cached) " >&6 +else + gl_cv_have_weak=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +extern void xyzzy (); +#pragma weak xyzzy +int +main () +{ +xyzzy(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_cv_have_weak=maybe +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test $gl_cv_have_weak = maybe; then + if test "$cross_compiling" = yes; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __ELF__ + Extensible Linking Format + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Extensible Linking Format" >/dev/null 2>&1; then : + gl_cv_have_weak="guessing yes" +else + gl_cv_have_weak="guessing no" +fi +rm -f conftest* + + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#pragma weak fputs +int main () +{ + return (fputs == NULL); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_have_weak=yes +else + gl_cv_have_weak=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + case " $LDFLAGS " in + *" -static "*) gl_cv_have_weak=no ;; + esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5 +$as_echo "$gl_cv_have_weak" >&6; } + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that + # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. + ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" +if test "x$ac_cv_header_pthread_h" = xyes; then : + gl_have_pthread_h=yes +else + gl_have_pthread_h=no +fi + + + if test "$gl_have_pthread_h" = yes; then + # Other possible tests: + # -lpthreads (FSU threads, PCthreads) + # -lgthreads + gl_have_pthread= + # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist + # in libc. IRIX 6.5 has the first one in both libc and libpthread, but + # the second one only in libpthread, and lock.c needs it. + # + # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04 + # needs -pthread for some reason. See: + # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html + save_LIBS=$LIBS + for gl_pthread in '' '-pthread'; do + LIBS="$LIBS $gl_pthread" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + pthread_mutex_t m; + pthread_mutexattr_t ma; + +int +main () +{ +pthread_mutex_lock (&m); + pthread_mutexattr_init (&ma); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_have_pthread=yes + LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread + LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$save_LIBS + test -n "$gl_have_pthread" && break + done + + # Test for libpthread by looking for pthread_kill. (Not pthread_self, + # since it is defined as a macro on OSF/1.) + if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then + # The program links fine without libpthread. But it may actually + # need to link with libpthread in order to create multiple threads. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 +$as_echo_n "checking for pthread_kill in -lpthread... " >&6; } +if ${ac_cv_lib_pthread_pthread_kill+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_kill (); +int +main () +{ +return pthread_kill (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_kill=yes +else + ac_cv_lib_pthread_pthread_kill=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 +$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; } +if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then : + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread + # On Solaris and HP-UX, most pthread functions exist also in libc. + # Therefore pthread_in_use() needs to actually try to create a + # thread: pthread_create from libc will fail, whereas + # pthread_create will actually create a thread. + # On Solaris 10 or newer, this test is no longer needed, because + # libc contains the fully functional pthread functions. + case "$host_os" in + solaris | solaris2.1-9 | solaris2.1-9.* | hpux*) + +$as_echo "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h + + esac + +fi + + elif test -z "$gl_have_pthread"; then + # Some library is needed. Try libpthread and libc_r. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 +$as_echo_n "checking for pthread_kill in -lpthread... " >&6; } +if ${ac_cv_lib_pthread_pthread_kill+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_kill (); +int +main () +{ +return pthread_kill (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_kill=yes +else + ac_cv_lib_pthread_pthread_kill=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 +$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; } +if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then : + gl_have_pthread=yes + LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread +fi + + if test -z "$gl_have_pthread"; then + # For FreeBSD 4. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5 +$as_echo_n "checking for pthread_kill in -lc_r... " >&6; } +if ${ac_cv_lib_c_r_pthread_kill+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc_r $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_kill (); +int +main () +{ +return pthread_kill (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_c_r_pthread_kill=yes +else + ac_cv_lib_c_r_pthread_kill=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5 +$as_echo "$ac_cv_lib_c_r_pthread_kill" >&6; } +if test "x$ac_cv_lib_c_r_pthread_kill" = xyes; then : + gl_have_pthread=yes + LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r + LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r +fi + + fi + fi + if test -n "$gl_have_pthread"; then + gl_threads_api=posix + +$as_echo "#define USE_POSIX_THREADS 1" >>confdefs.h + + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + +$as_echo "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h + + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then + gl_have_solaristhread= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lthread" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ +thr_self(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_have_solaristhread=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gl_save_LIBS" + if test -n "$gl_have_solaristhread"; then + gl_threads_api=solaris + LIBTHREAD=-lthread + LTLIBTHREAD=-lthread + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + +$as_echo "#define USE_SOLARIS_THREADS 1" >>confdefs.h + + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + +$as_echo "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h + + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + if test "$gl_use_threads" = pth; then + gl_save_CPPFLAGS="$CPPFLAGS" + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5 +$as_echo_n "checking how to link with libpth... " >&6; } +if ${ac_cv_libpth_libs+:} false; then : + $as_echo_n "(cached) " >&6 +else + + + + + + + + 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-libpth-prefix was given. +if test "${with_libpth_prefix+set}" = set; then : + withval=$with_libpth_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/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && test ! -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBPTH= + LTLIBPTH= + INCPTH= + LIBPTH_PREFIX= + HAVE_LIBPTH= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='pth ' + 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" || LIBPTH="${LIBPTH}${LIBPTH:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBPTH; 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 "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$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 "$acl_hardcode_direct" = yes; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$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 $LIBPTH; 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 + LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" + else + LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBPTH="${LIBPTH}${LIBPTH:+ }$found_a" + else + LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'pth'; then + LIBPTH_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'pth'; then + LIBPTH_PREFIX="$basedir" + fi + 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* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCPTH; 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 + INCPTH="${INCPTH}${INCPTH:+ }-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/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBPTH; 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 + LIBPTH="${LIBPTH}${LIBPTH:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBPTH; 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 + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-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$,,'` + ;; + *) + LIBPTH="${LIBPTH}${LIBPTH:+ }$dep" + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$dep" + ;; + esac + done + fi + else + LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name" + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBPTH="${LIBPTH}${LIBPTH:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBPTH="${LIBPTH}${LIBPTH:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-R$found_dir" + done + fi + + + + + + ac_cv_libpth_libs="$LIBPTH" + ac_cv_libpth_ltlibs="$LTLIBPTH" + ac_cv_libpth_cppflags="$INCPTH" + ac_cv_libpth_prefix="$LIBPTH_PREFIX" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5 +$as_echo "$ac_cv_libpth_libs" >&6; } + LIBPTH="$ac_cv_libpth_libs" + LTLIBPTH="$ac_cv_libpth_ltlibs" + INCPTH="$ac_cv_libpth_cppflags" + LIBPTH_PREFIX="$ac_cv_libpth_prefix" + + for element in $INCPTH; 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 + + + + + HAVE_LIBPTH=yes + + + + gl_have_pth= + gl_save_LIBS="$LIBS" + LIBS="$LIBS $LIBPTH" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pth_self(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gl_have_pth=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gl_save_LIBS" + if test -n "$gl_have_pth"; then + gl_threads_api=pth + LIBTHREAD="$LIBPTH" + LTLIBTHREAD="$LTLIBPTH" + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + +$as_echo "#define USE_PTH_THREADS 1" >>confdefs.h + + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + +$as_echo "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h + + LIBTHREAD= + LTLIBTHREAD= + fi + fi + else + CPPFLAGS="$gl_save_CPPFLAGS" + fi + fi + if test -z "$gl_have_pthread"; then + case "$gl_use_threads" in + yes | windows | win32) # The 'win32' is for backward compatibility. + if { case "$host_os" in + mingw*) true;; + *) false;; + esac + }; then + gl_threads_api=windows + +$as_echo "#define USE_WINDOWS_THREADS 1" >>confdefs.h + + fi + ;; + esac + fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5 +$as_echo_n "checking for multithread API to use... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5 +$as_echo "$gl_threads_api" >&6; } + + + + + + + + + + + + if test "$gl_threads_api" = posix; then + # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the + # pthread_rwlock_* functions. + has_rwlock=false + ac_fn_c_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include +" +if test "x$ac_cv_type_pthread_rwlock_t" = xyes; then : + has_rwlock=true + +$as_echo "#define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h + +fi + + if $has_rwlock; then + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthread_rwlock_rdlock prefers a writer to a reader" >&5 +$as_echo_n "checking whether pthread_rwlock_rdlock prefers a writer to a reader... " >&6; } +if ${gl_cv_pthread_rwlock_rdlock_prefer_writer+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LIBS="$LIBS" + LIBS="$LIBS $LIBMULTITHREAD" + if test "$cross_compiling" = yes; then : + gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include + +#define SUCCEED() exit (0) +#define FAILURE() exit (1) +#define UNEXPECTED(n) (exit (10 + (n))) + +/* The main thread creates the waiting writer and the requesting reader threads + in the default way; this guarantees that they have the same priority. + We can reuse the main thread as first reader thread. */ + +static pthread_rwlock_t lock; +static pthread_t reader1; +static pthread_t writer; +static pthread_t reader2; +static pthread_t timer; +/* Used to pass control from writer to reader2 and from reader2 to timer, + as in a relay race. + Passing control from one running thread to another running thread + is most likely faster than to create the second thread. */ +static pthread_mutex_t baton; + +static void * +timer_func (void *ignored) +{ + /* Step 13 (can be before or after step 12): + The timer thread takes the baton, then waits a moment to make sure + it can tell whether the second reader thread is blocked at step 12. */ + if (pthread_mutex_lock (&baton)) + UNEXPECTED (13); + usleep (100000); + /* By the time we get here, it's clear that the second reader thread is + blocked at step 12. This is the desired behaviour. */ + SUCCEED (); +} + +static void * +reader2_func (void *ignored) +{ + int err; + + /* Step 8 (can be before or after step 7): + The second reader thread takes the baton, then waits a moment to make sure + the writer thread has reached step 7. */ + if (pthread_mutex_lock (&baton)) + UNEXPECTED (8); + usleep (100000); + /* Step 9: The second reader thread requests the lock. */ + err = pthread_rwlock_tryrdlock (&lock); + if (err == 0) + FAILURE (); + else if (err != EBUSY) + UNEXPECTED (9); + /* Step 10: Launch a timer, to test whether the next call blocks. */ + if (pthread_create (&timer, NULL, timer_func, NULL)) + UNEXPECTED (10); + /* Step 11: Release the baton. */ + if (pthread_mutex_unlock (&baton)) + UNEXPECTED (11); + /* Step 12: The second reader thread requests the lock. */ + err = pthread_rwlock_rdlock (&lock); + if (err == 0) + FAILURE (); + else + UNEXPECTED (12); +} + +static void * +writer_func (void *ignored) +{ + /* Step 4: Take the baton, so that the second reader thread does not go ahead + too early. */ + if (pthread_mutex_lock (&baton)) + UNEXPECTED (4); + /* Step 5: Create the second reader thread. */ + if (pthread_create (&reader2, NULL, reader2_func, NULL)) + UNEXPECTED (5); + /* Step 6: Release the baton. */ + if (pthread_mutex_unlock (&baton)) + UNEXPECTED (6); + /* Step 7: The writer thread requests the lock. */ + if (pthread_rwlock_wrlock (&lock)) + UNEXPECTED (7); + return NULL; +} + +int +main () +{ + reader1 = pthread_self (); + + /* Step 1: The main thread initializes the lock and the baton. */ + if (pthread_rwlock_init (&lock, NULL)) + UNEXPECTED (1); + if (pthread_mutex_init (&baton, NULL)) + UNEXPECTED (1); + /* Step 2: The main thread acquires the lock as a reader. */ + if (pthread_rwlock_rdlock (&lock)) + UNEXPECTED (2); + /* Step 3: Create the writer thread. */ + if (pthread_create (&writer, NULL, writer_func, NULL)) + UNEXPECTED (3); + /* Job done. Go to sleep. */ + for (;;) + { + sleep (1); + } +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_pthread_rwlock_rdlock_prefer_writer=yes +else + gl_cv_pthread_rwlock_rdlock_prefer_writer=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + LIBS="$save_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pthread_rwlock_rdlock_prefer_writer" >&5 +$as_echo "$gl_cv_pthread_rwlock_rdlock_prefer_writer" >&6; } + case "$gl_cv_pthread_rwlock_rdlock_prefer_writer" in + *yes) + +$as_echo "#define HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER 1" >>confdefs.h + + ;; + esac + + fi + # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include +int +main () +{ + +#if __FreeBSD__ == 4 +error "No, in FreeBSD 4.0 recursive mutexes actually don't work." +#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \ + && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070) +error "No, in Mac OS X < 10.7 recursive mutexes actually don't work." +#else +int x = (int)PTHREAD_MUTEX_RECURSIVE; +return !x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + 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 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/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && test ! -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + 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= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + 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 "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; 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 "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_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 "$acl_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 + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'iconv'; then + LIBICONV_PREFIX="$basedir" + fi + 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* | gnu* | k*bsd*-gnu) 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/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) 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 "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_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=\"$acl_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 + + + + + + + + + + + + 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 + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +$as_echo_n "checking for iconv... " >&6; } +if ${am_cv_func_iconv+:} false; then : + $as_echo_n "(cached) " >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +$as_echo "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +$as_echo_n "checking for working iconv... " >&6; } +if ${am_cv_func_iconv_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + if test "$cross_compiling" = yes; then : + case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main () +{ +int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + { + /* Try standardized names. */ + iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); + /* Try IRIX, OSF/1 names. */ + iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); + /* Try AIX names. */ + iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); + /* Try HP-UX names. */ + iconv_t cd4 = iconv_open ("utf8", "eucJP"); + if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) + && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) + result |= 16; + if (cd1 != (iconv_t)(-1)) + iconv_close (cd1); + if (cd2 != (iconv_t)(-1)) + iconv_close (cd2); + if (cd3 != (iconv_t)(-1)) + iconv_close (cd3); + if (cd4 != (iconv_t)(-1)) + iconv_close (cd4); + } + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +$as_echo "$am_cv_func_iconv_works" >&6; } + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + +$as_echo "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +$as_echo_n "checking how to link with libiconv... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +$as_echo "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 +$as_echo_n "checking for iconv declaration... " >&6; } + if ${am_cv_proto_iconv+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(_MSC_VER) || 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 +if ac_fn_c_try_compile "$LINENO"; then : + am_cv_proto_iconv_arg1="" +else + am_cv_proto_iconv_arg1="const" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: + $am_cv_proto_iconv" >&5 +$as_echo " + $am_cv_proto_iconv" >&6; } + else + am_cv_proto_iconv_arg1="" + fi + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + + + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; } +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +$as_echo "#define HAVE_BUILTIN_EXPECT 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + for ac_header in argz.h inttypes.h limits.h unistd.h sys/param.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + for ac_func in getcwd getegid geteuid getgid getuid mempcpy munmap \ + stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \ + argz_next __fsetlocking +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + for ac_func in localeconv +do : + ac_fn_c_check_func "$LINENO" "localeconv" "ac_cv_func_localeconv" +if test "x$ac_cv_func_localeconv" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LOCALECONV 1 +_ACEOF + +fi +done + + + ac_fn_c_check_decl "$LINENO" "feof_unlocked" "ac_cv_have_decl_feof_unlocked" "#include +" +if test "x$ac_cv_have_decl_feof_unlocked" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FEOF_UNLOCKED $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "#include +" +if test "x$ac_cv_have_decl_fgets_unlocked" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FGETS_UNLOCKED $ac_have_decl +_ACEOF + + + + + 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_INTLBISON+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_INTLBISON="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +INTLBISON=$ac_cv_prog_INTLBISON +if test -n "$INTLBISON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5 +$as_echo "$INTLBISON" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5 +$as_echo_n "checking version of bison... " >&6; } + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 2.[7-9]* | [3-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5 +$as_echo "$ac_prog_version" >&6; } + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +$as_echo_n "checking for long long int... " >&6; } +if ${ac_cv_type_long_long_int+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif +int +main () +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_type_long_long_int=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +$as_echo "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 +$as_echo_n "checking for wchar_t... " >&6; } +if ${gt_cv_c_wchar_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + wchar_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_c_wchar_t=yes +else + gt_cv_c_wchar_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 +$as_echo "$gt_cv_c_wchar_t" >&6; } + if test $gt_cv_c_wchar_t = yes; then + +$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5 +$as_echo_n "checking for wint_t... " >&6; } +if ${gt_cv_c_wint_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be included + before . */ +#include +#include +#include +#include + wint_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_c_wint_t=yes +else + gt_cv_c_wint_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5 +$as_echo "$gt_cv_c_wint_t" >&6; } + if test $gt_cv_c_wint_t = yes; then + +$as_echo "#define HAVE_WINT_T 1" >>confdefs.h + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wint_t is too small" >&5 +$as_echo_n "checking whether wint_t is too small... " >&6; } +if ${gl_cv_type_wint_t_too_small+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be + included before . */ +#if !(defined __GLIBC__ && !defined __UCLIBC__) +# include +# include +# include +#endif +#include + int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1]; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_type_wint_t_too_small=no +else + gl_cv_type_wint_t_too_small=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wint_t_too_small" >&5 +$as_echo "$gl_cv_type_wint_t_too_small" >&6; } + if test $gl_cv_type_wint_t_too_small = yes; then + GNULIB_OVERRIDES_WINT_T=1 + else + GNULIB_OVERRIDES_WINT_T=0 + fi + else + GNULIB_OVERRIDES_WINT_T=0 + fi + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5 +$as_echo_n "checking for intmax_t... " >&6; } +if ${gt_cv_c_intmax_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#endif + +int +main () +{ +intmax_t x = -1; + return !x; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_c_intmax_t=yes +else + gt_cv_c_intmax_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5 +$as_echo "$gt_cv_c_intmax_t" >&6; } + if test $gt_cv_c_intmax_t = yes; then + +$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h + + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf() supports POSIX/XSI format strings" >&5 +$as_echo_n "checking whether printf() supports POSIX/XSI format strings... " >&6; } +if ${gt_cv_func_printf_posix+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "notposix" >/dev/null 2>&1; then : + gt_cv_func_printf_posix="guessing no" +else + gt_cv_func_printf_posix="guessing yes" +fi +rm -f conftest* + + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 0); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gt_cv_func_printf_posix=yes +else + gt_cv_func_printf_posix=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_printf_posix" >&5 +$as_echo "$gt_cv_func_printf_posix" >&6; } + case $gt_cv_func_printf_posix in + *yes) + +$as_echo "#define HAVE_POSIX_PRINTF 1" >>confdefs.h + + ;; + esac + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5 +$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; } +if ${ac_cv_gnu_library_2_1+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif +#ifdef __UCLIBC__ + Lucky user +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky" >/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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5 +$as_echo "$ac_cv_gnu_library_2_1" >&6; } + + GLIBC21="$ac_cv_gnu_library_2_1" + + + + for ac_header in stdint.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H 1 +_ACEOF + +fi + +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5 +$as_echo_n "checking for SIZE_MAX... " >&6; } +if ${gl_cv_size_max+:} false; then : + $as_echo_n "(cached) " >&6 +else + + gl_cv_size_max= + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#if HAVE_STDINT_H +#include +#endif +#ifdef SIZE_MAX +Found it +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Found it" >/dev/null 2>&1; then : + gl_cv_size_max=yes +fi +rm -f conftest* + + if test -z "$gl_cv_size_max"; then + if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) * CHAR_BIT - 1" "size_t_bits_minus_1" "#include +#include "; then : + +else + size_t_bits_minus_1= +fi + + if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint" "#include "; then : + +else + fits_in_uint= +fi + + if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then + if test $fits_in_uint = 1; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + extern size_t foo; + extern unsigned long foo; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + fits_in_uint=0 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $fits_in_uint = 1; then + gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" + else + gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" + fi + else + gl_cv_size_max='((size_t)~(size_t)0)' + fi + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5 +$as_echo "$gl_cv_size_max" >&6; } + if test "$gl_cv_size_max" != yes; then + +cat >>confdefs.h <<_ACEOF +#define SIZE_MAX $gl_cv_size_max +_ACEOF + + fi + + + + + for ac_header in stdint.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H 1 +_ACEOF + +fi + +done + + + + + + for ac_func in $ac_func_list +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5 +$as_echo_n "checking for working fcntl.h... " >&6; } +if ${gl_cv_header_working_fcntl_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + case "$host_os" in + # Guess 'no' on native Windows. + mingw*) gl_cv_header_working_fcntl_h='no' ;; + *) gl_cv_header_working_fcntl_h=cross-compiling ;; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #if HAVE_UNISTD_H + # include + #else /* on Windows with MSVC */ + # include + # include + # defined sleep(n) _sleep ((n) * 1000) + #endif + #include + #ifndef O_NOATIME + #define O_NOATIME 0 + #endif + #ifndef O_NOFOLLOW + #define O_NOFOLLOW 0 + #endif + static int const constants[] = + { + O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, + O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY + }; + +int +main () +{ + + int result = !constants; + #if HAVE_SYMLINK + { + static char const sym[] = "conftest.sym"; + if (symlink ("/dev/null", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + if (unlink (sym) != 0 || symlink (".", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_RDONLY | O_NOFOLLOW); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + unlink (sym); + } + #endif + { + static char const file[] = "confdefs.h"; + int fd = open (file, O_RDONLY | O_NOATIME); + if (fd < 0) + result |= 8; + else + { + struct stat st0; + if (fstat (fd, &st0) != 0) + result |= 16; + else + { + char c; + sleep (1); + if (read (fd, &c, 1) != 1) + result |= 24; + else + { + if (close (fd) != 0) + result |= 32; + else + { + struct stat st1; + if (stat (file, &st1) != 0) + result |= 40; + else + if (st0.st_atime != st1.st_atime) + result |= 64; + } + } + } + } + } + return result; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_header_working_fcntl_h=yes +else + case $? in #( + 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( + 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( + 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( + *) gl_cv_header_working_fcntl_h='no';; + esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5 +$as_echo "$gl_cv_header_working_fcntl_h" >&6; } + + case $gl_cv_header_working_fcntl_h in #( + *O_NOATIME* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + +cat >>confdefs.h <<_ACEOF +#define HAVE_WORKING_O_NOATIME $ac_val +_ACEOF + + + case $gl_cv_header_working_fcntl_h in #( + *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + +cat >>confdefs.h <<_ACEOF +#define HAVE_WORKING_O_NOFOLLOW $ac_val +_ACEOF + + + + + + + + + + + + + + + + + if test $ac_cv_func_uselocale = yes; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether uselocale works" >&5 +$as_echo_n "checking whether uselocale works... " >&6; } +if ${gt_cv_func_uselocale_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + # Guess no on AIX, yes otherwise. + case "$host_os" in + aix*) gt_cv_func_uselocale_works="guessing no" ;; + *) gt_cv_func_uselocale_works="guessing yes" ;; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#if HAVE_XLOCALE_H +# include +#endif +int main () +{ + uselocale (NULL); + setlocale (LC_ALL, "en_US.UTF-8"); + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gt_cv_func_uselocale_works=yes +else + gt_cv_func_uselocale_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_uselocale_works" >&5 +$as_echo "$gt_cv_func_uselocale_works" >&6; } + else + gt_cv_func_uselocale_works=no + fi + case "$gt_cv_func_uselocale_works" in + *yes) + +$as_echo "#define HAVE_WORKING_USELOCALE 1" >>confdefs.h + + ;; + esac + + + case "$gt_cv_func_uselocale_works" in + *yes) + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fake locale system (OpenBSD)" >&5 +$as_echo_n "checking for fake locale system (OpenBSD)... " >&6; } +if ${gt_cv_locale_fake+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + case "$host_os" in + openbsd*) gt_cv_locale_fake="guessing yes" ;; + *) gt_cv_locale_fake="guessing no" ;; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#if HAVE_XLOCALE_H +# include +#endif +int main () +{ + locale_t loc1, loc2; + if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL) return 1; + if (setlocale (LC_ALL, "fr_FR.UTF-8") == NULL) return 1; + loc1 = newlocale (LC_ALL_MASK, "de_DE.UTF-8", (locale_t)0); + loc2 = newlocale (LC_ALL_MASK, "fr_FR.UTF-8", (locale_t)0); + return !(loc1 == loc2); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gt_cv_locale_fake=yes +else + gt_cv_locale_fake=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fake" >&5 +$as_echo "$gt_cv_locale_fake" >&6; } + ;; + *) gt_cv_locale_fake=no ;; + esac + case "$gt_cv_locale_fake" in + *yes) + +$as_echo "#define HAVE_FAKE_LOCALES 1" >>confdefs.h + + ;; + esac + + case "$gt_cv_func_uselocale_works" in + *yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris 11.4 locale system" >&5 +$as_echo_n "checking for Solaris 11.4 locale system... " >&6; } +if ${gt_cv_locale_solaris114+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$host_os" in + solaris*) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + struct _LC_locale_t *x; + locale_t y; + +int +main () +{ +*y = x; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_locale_solaris114=yes +else + gt_cv_locale_solaris114=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ;; + *) gt_cv_locale_solaris114=no ;; + esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_solaris114" >&5 +$as_echo "$gt_cv_locale_solaris114" >&6; } + ;; + *) gt_cv_locale_solaris114=no ;; + esac + if test $gt_cv_locale_solaris114 = yes; then + +$as_echo "#define HAVE_SOLARIS114_LOCALES 1" >>confdefs.h + + fi + + case "$gt_cv_func_uselocale_works" in + *yes) + for ac_func in getlocalename_l +do : + ac_fn_c_check_func "$LINENO" "getlocalename_l" "ac_cv_func_getlocalename_l" +if test "x$ac_cv_func_getlocalename_l" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETLOCALENAME_L 1 +_ACEOF + +fi +done + + ;; + esac + + gt_nameless_locales=no + if false; then + gt_nameless_locales=yes + +$as_echo "#define HAVE_NAMELESS_LOCALES 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } +if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } +if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFLocaleCopyCurrent=yes +else + gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 +$as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; } +if ${gt_cv_func_CFLocaleCopyPreferredLanguages+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyPreferredLanguages(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFLocaleCopyPreferredLanguages=yes +else + gt_cv_func_CFLocaleCopyPreferredLanguages=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 +$as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } + if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + +$as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ + || test $gt_cv_func_CFLocaleCopyCurrent = yes \ + || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flexible array members" >&5 +$as_echo_n "checking for flexible array members... " >&6; } +if ${ac_cv_c_flexmember+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + struct s { int n; double d[]; }; +int +main () +{ +int m = getchar (); + struct s *p = malloc (offsetof (struct s, d) + + m * sizeof (double)); + p->d[0] = 0.0; + return p->d != (double *) NULL; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_flexmember=yes +else + ac_cv_c_flexmember=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5 +$as_echo "$ac_cv_c_flexmember" >&6; } + if test $ac_cv_c_flexmember = yes; then + +$as_echo "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h + + else + $as_echo "#define FLEXIBLE_ARRAY_MEMBER 1" >>confdefs.h + + fi + + + + + + + + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + + case "$enable_silent_rules" in + yes) INTL_DEFAULT_VERBOSITY=0;; + no) INTL_DEFAULT_VERBOSITY=1;; + *) INTL_DEFAULT_VERBOSITY=1;; + esac + + + ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = xyes; then : + +else + +$as_echo "#define ptrdiff_t long" >>confdefs.h + + +fi + + for ac_header in features.h stddef.h stdlib.h string.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + for ac_func in asprintf fwprintf newlocale putenv setenv setlocale \ + snprintf strnlen uselocale wcslen wcsnlen mbrtowc wcrtomb +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + ac_fn_c_check_decl "$LINENO" "_snprintf" "ac_cv_have_decl__snprintf" "#include +" +if test "x$ac_cv_have_decl__snprintf" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL__SNPRINTF $ac_have_decl +_ACEOF +ac_fn_c_check_decl "$LINENO" "_snwprintf" "ac_cv_have_decl__snwprintf" "#include +" +if test "x$ac_cv_have_decl__snwprintf" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL__SNWPRINTF $ac_have_decl +_ACEOF + + + ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "#include +" +if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl +_ACEOF + + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + + if test "$ac_cv_func_newlocale" = yes; then + HAVE_NEWLOCALE=1 + else + HAVE_NEWLOCALE=0 + fi + + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 +$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } +if ${am_cv_langinfo_codeset+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char* cs = nl_langinfo(CODESET); return !cs; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_langinfo_codeset=yes +else + am_cv_langinfo_codeset=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 +$as_echo "$am_cv_langinfo_codeset" >&6; } + if test $am_cv_langinfo_codeset = yes; then + +$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 +$as_echo_n "checking for LC_MESSAGES... " >&6; } +if ${gt_cv_val_LC_MESSAGES+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_val_LC_MESSAGES=yes +else + gt_cv_val_LC_MESSAGES=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5 +$as_echo "$gt_cv_val_LC_MESSAGES" >&6; } + if test $gt_cv_val_LC_MESSAGES = yes; then + +$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h + + fi + + + if test $gt_nameless_locales = yes; then + HAVE_NAMELESS_LOCALES=1 + else + HAVE_NAMELESS_LOCALES=0 + fi + + + if test "$enable_shared" = yes; then + case "$host_os" in + mingw* | cygwin*) is_woe32dll=yes ;; + *) is_woe32dll=no ;; + esac + else + is_woe32dll=no + fi + WOE32DLL=$is_woe32dll + + + case "$host_os" in + mingw* | cygwin*) is_woe32=yes ;; + *) is_woe32=no ;; + esac + WOE32=$is_woe32 + + if test $WOE32 = yes; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. +set dummy ${ac_tool_prefix}windres; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_WINDRES+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$WINDRES"; then + ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_WINDRES="${ac_tool_prefix}windres" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +WINDRES=$ac_cv_prog_WINDRES +if test -n "$WINDRES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 +$as_echo "$WINDRES" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_WINDRES"; then + ac_ct_WINDRES=$WINDRES + # Extract the first word of "windres", so it can be a program name with args. +set dummy windres; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_WINDRES+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_WINDRES"; then + ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_WINDRES="windres" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES +if test -n "$ac_ct_WINDRES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 +$as_echo "$ac_ct_WINDRES" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_WINDRES" = x; then + WINDRES="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + WINDRES=$ac_ct_WINDRES + fi +else + WINDRES="$ac_cv_prog_WINDRES" +fi + + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } +if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } +if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFLocaleCopyCurrent=yes +else + gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5 +$as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; } +if ${gt_cv_func_CFLocaleCopyPreferredLanguages+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyPreferredLanguages(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFLocaleCopyPreferredLanguages=yes +else + gt_cv_func_CFLocaleCopyPreferredLanguages=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 +$as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } + if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + +$as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ + || test $gt_cv_func_CFLocaleCopyCurrent = yes \ + || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + + LIBINTL= + LTLIBINTL= + POSUB= + + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included gettext is requested" >&5 +$as_echo_n "checking whether included gettext is requested... " >&6; } + +# Check whether --with-included-gettext was given. +if test "${with_included_gettext+set}" = set; then : + withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval +else + nls_cv_force_use_gnu_gettext=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $nls_cv_force_use_gnu_gettext" >&5 +$as_echo "$nls_cv_force_use_gnu_gettext" >&6; } + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +$as_echo_n "checking for GNU gettext in libc... " >&6; } +if eval \${$gt_func_gnugettext_libc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + +int +main () +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$gt_func_gnugettext_libc=yes" +else + eval "$gt_func_gnugettext_libc=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$gt_func_gnugettext_libc + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "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 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/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && test ! -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + 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= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + 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 "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; 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 "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_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 "$acl_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 + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = 'intl'; then + LIBINTL_PREFIX="$basedir" + fi + 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* | gnu* | k*bsd*-gnu) 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/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) 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 "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_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=\"$acl_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 + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +$as_echo_n "checking for GNU gettext in libintl... " >&6; } +if eval \${$gt_func_gnugettext_libintl+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + +int +main () +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$gt_func_gnugettext_libintl=yes" +else + eval "$gt_func_gnugettext_libintl=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + +int +main () +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + fi + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "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 $LIBTHREAD" + LTLIBINTL="lib/intl/libintl.a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + CATOBJEXT=.gmo + fi + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +$as_echo "#define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +$as_echo_n "checking whether to use NLS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +$as_echo_n "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +$as_echo "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +$as_echo_n "checking how to link with libintl... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +$as_echo "$LIBINTL" >&6; } + + 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 + + +$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h + + +$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h + + 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 + + + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + + + INTL_LIBTOOL_SUFFIX_PREFIX= + + + + INTLLIBS="$LIBINTL" + + + + + + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } +if eval \${$as_ac_Header+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main () +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_ac_Header=yes" +else + eval "$as_ac_Header=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$as_ac_Header + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if ${ac_cv_search_opendir+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_opendir+:} false; then : + break +fi +done +if ${ac_cv_search_opendir+:} false; then : + +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if ${ac_cv_search_opendir+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_opendir+:} false; then : + break +fi +done +if ${ac_cv_search_opendir+:} false; then : + +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 +$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +if ${ac_cv_header_time+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_time=yes +else + ac_cv_header_time=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 +$as_echo "$ac_cv_header_time" >&6; } +if test $ac_cv_header_time = yes; then + +$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/types.h defines makedev" >&5 +$as_echo_n "checking whether sys/types.h defines makedev... " >&6; } +if ${ac_cv_header_sys_types_h_makedev+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +return makedev(0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_header_sys_types_h_makedev=yes +else + ac_cv_header_sys_types_h_makedev=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_types_h_makedev" >&5 +$as_echo "$ac_cv_header_sys_types_h_makedev" >&6; } + +if test $ac_cv_header_sys_types_h_makedev = no; then +ac_fn_c_check_header_mongrel "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_mkdev_h" = xyes; then : + +$as_echo "#define MAJOR_IN_MKDEV 1" >>confdefs.h + +fi + + + + if test $ac_cv_header_sys_mkdev_h = no; then + ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then : + +$as_echo "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h + +fi + + + fi +fi + + + + for ac_header in inttypes.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" +if test "x$ac_cv_header_inttypes_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H 1 +_ACEOF + +fi + +done + + + +for ac_header in unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ + memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ + stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \ + regex.h syslog.h ulimit.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \ + sys/mman.h sys/param.h sys/random.h sys/socket.h sys/stat.h \ + sys/time.h sys/times.h sys/types.h sys/wait.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +for ac_header in netinet/in.h arpa/inet.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +ac_fn_c_check_header_compile "$LINENO" "sys/ptem.h" "ac_cv_header_sys_ptem_h" " +#if HAVE_SYS_STREAM_H +# include +#endif + +" +if test "x$ac_cv_header_sys_ptem_h" = xyes; then : + +fi + + + +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" " +#if HAVE_SYS_TIME_H +# include +#endif + +" +if test "x$ac_cv_header_sys_resource_h" = xyes; then : + $as_echo "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi + + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } +if ${ac_cv_working_alloca_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_working_alloca_h=yes +else + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } +if ${ac_cv_func_alloca_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# ifdef HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +void *alloca (size_t); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_alloca_works=yes +else + ac_cv_func_alloca_works=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +$as_echo "#define C_ALLOCA 1" >>confdefs.h + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +if ${ac_cv_os_cray+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined CRAY && ! defined CRAY2 +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then : + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } +if ${ac_cv_c_stack_direction+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_c_stack_direction=0 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_stack_direction=1 +else + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +$as_echo_n "checking for uid_t in sys/types.h... " >&6; } +if ${ac_cv_type_uid_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uid_t" >/dev/null 2>&1; then : + ac_cv_type_uid_t=yes +else + ac_cv_type_uid_t=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +$as_echo "$ac_cv_type_uid_t" >&6; } +if test $ac_cv_type_uid_t = no; then + +$as_echo "#define uid_t int" >>confdefs.h + + +$as_echo "#define gid_t int" >>confdefs.h + +fi + +for ac_header in unistd.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_UNISTD_H 1 +_ACEOF + +fi + +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5 +$as_echo_n "checking for working chown... " >&6; } +if ${ac_cv_func_chown_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_chown_works=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +#include + +int +main () +{ + char *f = "conftest.chown"; + struct stat before, after; + + if (creat (f, 0600) < 0) + return 1; + if (stat (f, &before) < 0) + return 1; + if (chown (f, (uid_t) -1, (gid_t) -1) == -1) + return 1; + if (stat (f, &after) < 0) + return 1; + return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_chown_works=yes +else + ac_cv_func_chown_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +rm -f conftest.chown + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5 +$as_echo "$ac_cv_func_chown_works" >&6; } +if test $ac_cv_func_chown_works = yes; then + +$as_echo "#define HAVE_CHOWN 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5 +$as_echo_n "checking whether getpgrp requires zero arguments... " >&6; } +if ${ac_cv_func_getpgrp_void+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Use it with a single arg. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +getpgrp (0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_func_getpgrp_void=no +else + ac_cv_func_getpgrp_void=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5 +$as_echo "$ac_cv_func_getpgrp_void" >&6; } +if test $ac_cv_func_getpgrp_void = yes; then + +$as_echo "#define GETPGRP_VOID 1" >>confdefs.h + +fi + +if ${ac_cv_func_setvbuf_reversed+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_func_setvbuf_reversed=no +fi + + +for ac_func in vprintf +do : + ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" +if test "x$ac_cv_func_vprintf" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_VPRINTF 1 +_ACEOF + +ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" +if test "x$ac_cv_func__doprnt" = xyes; then : + +$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h + +fi + +fi +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +$as_echo_n "checking for working strcoll... " >&6; } +if ${ac_cv_func_strcoll_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_strcoll_works=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_strcoll_works=yes +else + ac_cv_func_strcoll_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +$as_echo "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +$as_echo "#define HAVE_STRCOLL 1" >>confdefs.h + +fi + + + +if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; then + MALLOC_TARGET=alloca + MALLOC_SRC=alloca.c + + MALLOC_LIB='-lmalloc' + MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a' + MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)' + MALLOC_DEP='$(MALLOC_LIBRARY)' +fi + +if test "$ac_cv_func_vprintf" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of vprintf in stdio.h" >&5 +$as_echo_n "checking for declaration of vprintf in stdio.h... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "[int[ ]*vprintf[^a-zA-Z0-9]]" >/dev/null 2>&1; then : + ac_cv_func_vprintf=yes +fi +rm -f conftest* + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vprintf" >&5 +$as_echo "$ac_cv_func_vprintf" >&6; } + if test $ac_cv_func_vprintf = yes; then + $as_echo "#define HAVE_VPRINTF 1" >>confdefs.h + + fi +fi + +if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then + case " $LIBOBJS " in + *" vprint.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS vprint.$ac_objext" + ;; +esac + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 +$as_echo_n "checking return type of signal handlers... " >&6; } +if ${ac_cv_type_signal+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main () +{ +return *(signal (0, 0)) (0) == 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_signal=int +else + ac_cv_type_signal=void +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 +$as_echo "$ac_cv_type_signal" >&6; } + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + +ac_fn_c_check_func "$LINENO" "__setostype" "ac_cv_func___setostype" +if test "x$ac_cv_func___setostype" = xyes; then : + $as_echo "#define HAVE_SETOSTYPE 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes; then : + $as_echo "#define HAVE_WAIT3 1" >>confdefs.h + +fi + + +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes; then : + $as_echo "#define HAVE_MKFIFO 1" >>confdefs.h + +else + $as_echo "#define MKFIFO_MISSING 1" >>confdefs.h + +fi + + +for ac_func in dup2 eaccess fcntl getdtablesize getentropy getgroups \ + gethostname getpagesize getpeername getrandom getrlimit \ + getrusage gettimeofday kill killpg lstat pselect readlink \ + select setdtablesize setitimer tcgetpgrp uname ulimit waitpid +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +ac_fn_c_check_func "$LINENO" "rename" "ac_cv_func_rename" +if test "x$ac_cv_func_rename" = xyes; then : + $as_echo "#define HAVE_RENAME 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" rename.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS rename.$ac_objext" + ;; +esac + +fi + + + +for ac_func in bcopy bzero confstr faccessat fnmatch \ + getaddrinfo gethostbyname getservbyname getservent inet_aton \ + imaxdiv memmove pathconf putenv raise random regcomp regexec \ + setenv setlinebuf setlocale setvbuf siginterrupt strchr \ + sysconf syslog tcgetattr times ttyname tzset unsetenv +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in vasprintf asprintf +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +for ac_func in isascii isblank isgraph isprint isspace isxdigit +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +for ac_func in getpwent getpwnam getpwuid +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +for ac_func in mkstemp mkdtemp +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +for ac_func in arc4random +do : + ac_fn_c_check_func "$LINENO" "arc4random" "ac_cv_func_arc4random" +if test "x$ac_cv_func_arc4random" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ARC4RANDOM 1 +_ACEOF + +fi +done + + +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes; then : + $as_echo "#define HAVE_GETCWD 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" getcwd.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS getcwd.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset" +if test "x$ac_cv_func_memset" = xyes; then : + $as_echo "#define HAVE_MEMSET 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" memset.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS memset.$ac_objext" + ;; +esac + +fi + + +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes; then : + $as_echo "#define HAVE_STRCASECMP 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strcasecmp.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strcasecmp.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strcasestr" "ac_cv_func_strcasestr" +if test "x$ac_cv_func_strcasestr" = xyes; then : + $as_echo "#define HAVE_STRCASESTR 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strcasestr.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strcasestr.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes; then : + $as_echo "#define HAVE_STRERROR 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strerror.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strerror.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" +if test "x$ac_cv_func_strftime" = xyes; then : + $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strftime.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strftime.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen" +if test "x$ac_cv_func_strnlen" = xyes; then : + $as_echo "#define HAVE_STRNLEN 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strnlen.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strnlen.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strpbrk" "ac_cv_func_strpbrk" +if test "x$ac_cv_func_strpbrk" = xyes; then : + $as_echo "#define HAVE_STRPBRK 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strpbrk.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strpbrk.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strstr" "ac_cv_func_strstr" +if test "x$ac_cv_func_strstr" = xyes; then : + $as_echo "#define HAVE_STRSTR 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strstr.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strstr.$ac_objext" + ;; +esac + +fi + + +ac_fn_c_check_func "$LINENO" "strtod" "ac_cv_func_strtod" +if test "x$ac_cv_func_strtod" = xyes; then : + $as_echo "#define HAVE_STRTOD 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtod.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtod.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol" +if test "x$ac_cv_func_strtol" = xyes; then : + $as_echo "#define HAVE_STRTOL 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtol.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtol.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul" +if test "x$ac_cv_func_strtoul" = xyes; then : + $as_echo "#define HAVE_STRTOUL 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtoul.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoul.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes; then : + $as_echo "#define HAVE_STRTOLL 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtoll.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoll.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strtoull" "ac_cv_func_strtoull" +if test "x$ac_cv_func_strtoull" = xyes; then : + $as_echo "#define HAVE_STRTOULL 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtoull.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoull.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strtoimax" "ac_cv_func_strtoimax" +if test "x$ac_cv_func_strtoimax" = xyes; then : + $as_echo "#define HAVE_STRTOIMAX 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtoimax.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoimax.$ac_objext" + ;; +esac + +fi + +ac_fn_c_check_func "$LINENO" "strtoumax" "ac_cv_func_strtoumax" +if test "x$ac_cv_func_strtoumax" = xyes; then : + $as_echo "#define HAVE_STRTOUMAX 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strtoumax.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtoumax.$ac_objext" + ;; +esac + +fi + + +ac_fn_c_check_func "$LINENO" "dprintf" "ac_cv_func_dprintf" +if test "x$ac_cv_func_dprintf" = xyes; then : + $as_echo "#define HAVE_DPRINTF 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" dprintf.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS dprintf.$ac_objext" + ;; +esac + +fi + + +ac_fn_c_check_func "$LINENO" "strchrnul" "ac_cv_func_strchrnul" +if test "x$ac_cv_func_strchrnul" = xyes; then : + $as_echo "#define HAVE_STRCHRNUL 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strchrnul.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strchrnul.$ac_objext" + ;; +esac + +fi + + +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes; then : + $as_echo "#define HAVE_STRDUP 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" strdup.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strdup.$ac_objext" + ;; +esac + +fi + + + +for ac_header in libaudit.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "libaudit.h" "ac_cv_header_libaudit_h" "$ac_includes_default" +if test "x$ac_cv_header_libaudit_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBAUDIT_H 1 +_ACEOF + +fi + +done + +ac_fn_c_check_decl "$LINENO" "AUDIT_USER_TTY" "ac_cv_have_decl_AUDIT_USER_TTY" "#include +" +if test "x$ac_cv_have_decl_AUDIT_USER_TTY" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_AUDIT_USER_TTY $ac_have_decl +_ACEOF + + +ac_fn_c_check_decl "$LINENO" "confstr" "ac_cv_have_decl_confstr" "$ac_includes_default" +if test "x$ac_cv_have_decl_confstr" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_CONFSTR $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "printf" "ac_cv_have_decl_printf" "$ac_includes_default" +if test "x$ac_cv_have_decl_printf" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_PRINTF $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "sbrk" "ac_cv_have_decl_sbrk" "$ac_includes_default" +if test "x$ac_cv_have_decl_sbrk" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SBRK $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "setregid" "ac_cv_have_decl_setregid" "$ac_includes_default" +if test "x$ac_cv_have_decl_setregid" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SETREGID $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "strcpy" "ac_cv_have_decl_strcpy" "$ac_includes_default" +if test "x$ac_cv_have_decl_strcpy" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRCPY $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "strsignal" "ac_cv_have_decl_strsignal" "$ac_includes_default" +if test "x$ac_cv_have_decl_strsignal" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRSIGNAL $ac_have_decl +_ACEOF + + +for ac_func in setresuid setresgid +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +ac_fn_c_check_decl "$LINENO" "strtold" "ac_cv_have_decl_strtold" "$ac_includes_default" +if test "x$ac_cv_have_decl_strtold" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOLD $ac_have_decl +_ACEOF +if test $ac_have_decl = 1; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken strtold" >&5 +$as_echo_n "checking for broken strtold... " >&6; } + if ${bash_cv_strtold_broken+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +long double r; char *foo, bar; r = strtold(foo, &bar); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_strtold_broken=no +else + bash_cv_strtold_broken=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_strtold_broken" >&5 +$as_echo "$bash_cv_strtold_broken" >&6; } + if test "$bash_cv_strtold_broken" = "yes" ; then + $as_echo "#define STRTOLD_BROKEN 1" >>confdefs.h + + fi + +fi + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoimax" >&5 +$as_echo_n "checking for declaration of strtoimax... " >&6; } +if ${bash_cv_decl_strtoimax+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + +int +main () +{ +return !strtoimax; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_decl_strtoimax=yes +else + bash_cv_decl_strtoimax=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoimax" >&5 +$as_echo "$bash_cv_decl_strtoimax" >&6; } +bash_tr_func=HAVE_DECL_`echo strtoimax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtoimax = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 +_ACEOF + +else + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 0 +_ACEOF + +fi + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtol" >&5 +$as_echo_n "checking for declaration of strtol... " >&6; } +if ${bash_cv_decl_strtol+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + +int +main () +{ +return !strtol; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_decl_strtol=yes +else + bash_cv_decl_strtol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtol" >&5 +$as_echo "$bash_cv_decl_strtol" >&6; } +bash_tr_func=HAVE_DECL_`echo strtol | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtol = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 +_ACEOF + +else + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 0 +_ACEOF + +fi + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoll" >&5 +$as_echo_n "checking for declaration of strtoll... " >&6; } +if ${bash_cv_decl_strtoll+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + +int +main () +{ +return !strtoll; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_decl_strtoll=yes +else + bash_cv_decl_strtoll=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoll" >&5 +$as_echo "$bash_cv_decl_strtoll" >&6; } +bash_tr_func=HAVE_DECL_`echo strtoll | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtoll = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 +_ACEOF + +else + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 0 +_ACEOF + +fi + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoul" >&5 +$as_echo_n "checking for declaration of strtoul... " >&6; } +if ${bash_cv_decl_strtoul+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + +int +main () +{ +return !strtoul; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_decl_strtoul=yes +else + bash_cv_decl_strtoul=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoul" >&5 +$as_echo "$bash_cv_decl_strtoul" >&6; } +bash_tr_func=HAVE_DECL_`echo strtoul | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtoul = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 +_ACEOF + +else + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 0 +_ACEOF + +fi + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoull" >&5 +$as_echo_n "checking for declaration of strtoull... " >&6; } +if ${bash_cv_decl_strtoull+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + +int +main () +{ +return !strtoull; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_decl_strtoull=yes +else + bash_cv_decl_strtoull=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoull" >&5 +$as_echo "$bash_cv_decl_strtoull" >&6; } +bash_tr_func=HAVE_DECL_`echo strtoull | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtoull = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 +_ACEOF + +else + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 0 +_ACEOF + +fi + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoumax" >&5 +$as_echo_n "checking for declaration of strtoumax... " >&6; } +if ${bash_cv_decl_strtoumax+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if STDC_HEADERS +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif + +int +main () +{ +return !strtoumax; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_decl_strtoumax=yes +else + bash_cv_decl_strtoumax=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoumax" >&5 +$as_echo "$bash_cv_decl_strtoumax" >&6; } +bash_tr_func=HAVE_DECL_`echo strtoumax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_strtoumax = yes; then + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 1 +_ACEOF + +else + cat >>confdefs.h <<_ACEOF +#define $bash_tr_func 0 +_ACEOF + +fi + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 +$as_echo_n "checking for working mktime... " >&6; } +if ${ac_cv_func_working_mktime+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_working_mktime=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Test program from Paul Eggert and Tony Leneis. */ +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#include +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#ifndef HAVE_ALARM +# define alarm(X) /* empty */ +#endif + +/* Work around redefinition to rpl_putenv by other config tests. */ +#undef putenv + +static time_t time_t_max; +static time_t time_t_min; + +/* Values we'll use to set the TZ environment variable. */ +static const char *tz_strings[] = { + (const char *) 0, "TZ=GMT0", "TZ=JST-9", + "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" +}; +#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) + +/* Return 0 if mktime fails to convert a date in the spring-forward gap. + Based on a problem report from Andreas Jaeger. */ +static int +spring_forward_gap () +{ + /* glibc (up to about 1998-10-07) failed this test. */ + struct tm tm; + + /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" + instead of "TZ=America/Vancouver" in order to detect the bug even + on systems that don't support the Olson extension, or don't have the + full zoneinfo tables installed. */ + putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); + + tm.tm_year = 98; + tm.tm_mon = 3; + tm.tm_mday = 5; + tm.tm_hour = 2; + tm.tm_min = 0; + tm.tm_sec = 0; + tm.tm_isdst = -1; + return mktime (&tm) != (time_t) -1; +} + +static int +mktime_test1 (time_t now) +{ + struct tm *lt; + return ! (lt = localtime (&now)) || mktime (lt) == now; +} + +static int +mktime_test (time_t now) +{ + return (mktime_test1 (now) + && mktime_test1 ((time_t) (time_t_max - now)) + && mktime_test1 ((time_t) (time_t_min + now))); +} + +static int +irix_6_4_bug () +{ + /* Based on code from Ariel Faigon. */ + struct tm tm; + tm.tm_year = 96; + tm.tm_mon = 3; + tm.tm_mday = 0; + tm.tm_hour = 0; + tm.tm_min = 0; + tm.tm_sec = 0; + tm.tm_isdst = -1; + mktime (&tm); + return tm.tm_mon == 2 && tm.tm_mday == 31; +} + +static int +bigtime_test (int j) +{ + struct tm tm; + time_t now; + tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; + now = mktime (&tm); + if (now != (time_t) -1) + { + struct tm *lt = localtime (&now); + if (! (lt + && lt->tm_year == tm.tm_year + && lt->tm_mon == tm.tm_mon + && lt->tm_mday == tm.tm_mday + && lt->tm_hour == tm.tm_hour + && lt->tm_min == tm.tm_min + && lt->tm_sec == tm.tm_sec + && lt->tm_yday == tm.tm_yday + && lt->tm_wday == tm.tm_wday + && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) + == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) + return 0; + } + return 1; +} + +static int +year_2050_test () +{ + /* The correct answer for 2050-02-01 00:00:00 in Pacific time, + ignoring leap seconds. */ + unsigned long int answer = 2527315200UL; + + struct tm tm; + time_t t; + tm.tm_year = 2050 - 1900; + tm.tm_mon = 2 - 1; + tm.tm_mday = 1; + tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + tm.tm_isdst = -1; + + /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" + instead of "TZ=America/Vancouver" in order to detect the bug even + on systems that don't support the Olson extension, or don't have the + full zoneinfo tables installed. */ + putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); + + t = mktime (&tm); + + /* Check that the result is either a failure, or close enough + to the correct answer that we can assume the discrepancy is + due to leap seconds. */ + return (t == (time_t) -1 + || (0 < t && answer - 120 <= t && t <= answer + 120)); +} + +int +main () +{ + time_t t, delta; + int i, j; + + /* This test makes some buggy mktime implementations loop. + Give up after 60 seconds; a mktime slower than that + isn't worth using anyway. */ + alarm (60); + + for (;;) + { + t = (time_t_max << 1) + 1; + if (t <= time_t_max) + break; + time_t_max = t; + } + time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; + + delta = time_t_max / 997; /* a suitable prime number */ + for (i = 0; i < N_STRINGS; i++) + { + if (tz_strings[i]) + putenv ((char*) tz_strings[i]); + + for (t = 0; t <= time_t_max - delta; t += delta) + if (! mktime_test (t)) + return 1; + if (! (mktime_test ((time_t) 1) + && mktime_test ((time_t) (60 * 60)) + && mktime_test ((time_t) (60 * 60 * 24)))) + return 1; + + for (j = 1; ; j <<= 1) + if (! bigtime_test (j)) + return 1; + else if (INT_MAX / 2 < j) + break; + if (! bigtime_test (INT_MAX)) + return 1; + } + return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_working_mktime=yes +else + ac_cv_func_working_mktime=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 +$as_echo "$ac_cv_func_working_mktime" >&6; } +if test $ac_cv_func_working_mktime = no; then + case " $LIBOBJS " in + *" mktime.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS mktime.$ac_objext" + ;; +esac + +fi + + + +for ac_header in argz.h errno.h fcntl.h malloc.h stdio_ext.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_func in getpagesize +do : + ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" +if test "x$ac_cv_func_getpagesize" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETPAGESIZE 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +$as_echo_n "checking for working mmap... " >&6; } +if ${ac_cv_func_mmap_fixed_mapped+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_mmap_fixed_mapped=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + const char *cdata2; + int i, pagesize; + int fd, fd2; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 2; + if (write (fd, data, pagesize) != pagesize) + return 3; + close (fd); + + /* Next, check that the tail of a page is zero-filled. File must have + non-zero length, otherwise we risk SIGBUS for entire page. */ + fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); + if (fd2 < 0) + return 4; + cdata2 = ""; + if (write (fd2, cdata2, 1) != 1) + return 5; + data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); + if (data2 == MAP_FAILED) + return 6; + for (i = 0; i < pagesize; ++i) + if (*(data2 + i)) + return 7; + close (fd2); + if (munmap (data2, pagesize)) + return 8; + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + return 9; + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 10; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 11; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + return 12; + if (read (fd, data3, pagesize) != pagesize) + return 13; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 14; + close (fd); + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_mmap_fixed_mapped=yes +else + ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +$as_echo "#define HAVE_MMAP 1" >>confdefs.h + +fi +rm -f conftest.mmap conftest.txt + +for ac_func in __argz_count __argz_next __argz_stringify dcgettext mempcpy \ + munmap mremap stpcpy strcspn +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +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 : + ac_fn_c_check_header_mongrel "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default" +if test "x$ac_cv_header_wctype_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_WCTYPE_H 1 +_ACEOF + +fi + +done + +for ac_header in wchar.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" +if test "x$ac_cv_header_wchar_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_WCHAR_H 1 +_ACEOF + +fi + +done + +for ac_header in langinfo.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default" +if test "x$ac_cv_header_langinfo_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LANGINFO_H 1 +_ACEOF + +fi + +done + + +for ac_header in mbstr.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "mbstr.h" "ac_cv_header_mbstr_h" "$ac_includes_default" +if test "x$ac_cv_header_mbstr_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_MBSTR_H 1 +_ACEOF + +fi + +done + + +ac_fn_c_check_func "$LINENO" "mbrlen" "ac_cv_func_mbrlen" +if test "x$ac_cv_func_mbrlen" = xyes; then : + $as_echo "#define HAVE_MBRLEN 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "mbscasecmp" "ac_cv_func_mbscasecmp" +if test "x$ac_cv_func_mbscasecmp" = xyes; then : + $as_echo "#define HAVE_MBSCMP 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "mbscmp" "ac_cv_func_mbscmp" +if test "x$ac_cv_func_mbscmp" = xyes; then : + $as_echo "#define HAVE_MBSCMP 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "mbsnrtowcs" "ac_cv_func_mbsnrtowcs" +if test "x$ac_cv_func_mbsnrtowcs" = xyes; then : + $as_echo "#define HAVE_MBSNRTOWCS 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "mbsrtowcs" "ac_cv_func_mbsrtowcs" +if test "x$ac_cv_func_mbsrtowcs" = xyes; then : + $as_echo "#define HAVE_MBSRTOWCS 1" >>confdefs.h + +fi + + +ac_fn_c_check_func "$LINENO" "mbschr" "ac_cv_func_mbschr" +if test "x$ac_cv_func_mbschr" = xyes; then : + $as_echo "#define HAVE_MBSCHR 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" mbschr.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS mbschr.$ac_objext" + ;; +esac + +fi + + + +ac_fn_c_check_func "$LINENO" "wcrtomb" "ac_cv_func_wcrtomb" +if test "x$ac_cv_func_wcrtomb" = xyes; then : + $as_echo "#define HAVE_WCRTOMB 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "wcscoll" "ac_cv_func_wcscoll" +if test "x$ac_cv_func_wcscoll" = xyes; then : + $as_echo "#define HAVE_WCSCOLL 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "wcsdup" "ac_cv_func_wcsdup" +if test "x$ac_cv_func_wcsdup" = xyes; then : + $as_echo "#define HAVE_WCSDUP 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "wcwidth" "ac_cv_func_wcwidth" +if test "x$ac_cv_func_wcwidth" = xyes; then : + $as_echo "#define HAVE_WCWIDTH 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "wctype" "ac_cv_func_wctype" +if test "x$ac_cv_func_wctype" = xyes; then : + $as_echo "#define HAVE_WCTYPE 1" >>confdefs.h + +fi + + +ac_fn_c_check_func "$LINENO" "wcswidth" "ac_cv_func_wcswidth" +if test "x$ac_cv_func_wcswidth" = xyes; then : + $as_echo "#define HAVE_WCSWIDTH 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" wcswidth.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS wcswidth.$ac_objext" + ;; +esac + +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5 +$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; } +if ${ac_cv_func_mbrtowc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +wchar_t wc; + char const s[] = ""; + size_t n = 1; + mbstate_t state; + return ! (sizeof state && (mbrtowc) (&wc, s, n, &state)); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_mbrtowc=yes +else + ac_cv_func_mbrtowc=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5 +$as_echo "$ac_cv_func_mbrtowc" >&6; } + if test $ac_cv_func_mbrtowc = yes; then + +$as_echo "#define HAVE_MBRTOWC 1" >>confdefs.h + + fi + +if test $ac_cv_func_mbrtowc = yes; then + $as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h + +fi + +for ac_func in iswlower iswupper towlower towupper iswctype +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 +$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } +if ${bash_cv_langinfo_codeset+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char* cs = nl_langinfo(CODESET); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_langinfo_codeset=yes +else + bash_cv_langinfo_codeset=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_langinfo_codeset" >&5 +$as_echo "$bash_cv_langinfo_codeset" >&6; } +if test $bash_cv_langinfo_codeset = yes; then + $as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t in wchar.h" >&5 +$as_echo_n "checking for wchar_t in wchar.h... " >&6; } +if ${bash_cv_type_wchar_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ + + wchar_t foo; + foo = 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_type_wchar_t=yes +else + bash_cv_type_wchar_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wchar_t" >&5 +$as_echo "$bash_cv_type_wchar_t" >&6; } +if test $bash_cv_type_wchar_t = yes; then + +$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t in wctype.h" >&5 +$as_echo_n "checking for wctype_t in wctype.h... " >&6; } +if ${bash_cv_type_wctype_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + + wctype_t foo; + foo = 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_type_wctype_t=yes +else + bash_cv_type_wctype_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wctype_t" >&5 +$as_echo "$bash_cv_type_wctype_t" >&6; } +if test $bash_cv_type_wctype_t = yes; then + +$as_echo "#define HAVE_WCTYPE_T 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t in wctype.h" >&5 +$as_echo_n "checking for wint_t in wctype.h... " >&6; } +if ${bash_cv_type_wint_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + + wint_t foo; + foo = 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_type_wint_t=yes +else + bash_cv_type_wint_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wint_t" >&5 +$as_echo "$bash_cv_type_wint_t" >&6; } +if test $bash_cv_type_wint_t = yes; then + +$as_echo "#define HAVE_WINT_T 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5 +$as_echo_n "checking for wcwidth broken with unicode combining characters... " >&6; } +if ${bash_cv_wcwidth_broken+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + bash_cv_wcwidth_broken=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +#include +#include + +int +main(c, v) +int c; +char **v; +{ + int w; + + setlocale(LC_ALL, "en_US.UTF-8"); + w = wcwidth (0x0301); + exit (w == 0); /* exit 0 if wcwidth broken */ +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_wcwidth_broken=yes +else + bash_cv_wcwidth_broken=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcwidth_broken" >&5 +$as_echo "$bash_cv_wcwidth_broken" >&6; } +if test "$bash_cv_wcwidth_broken" = yes; then + +$as_echo "#define WCWIDTH_BROKEN 1" >>confdefs.h + +fi + +if test "$am_cv_func_iconv" = yes; then + OLDLIBS="$LIBS" + LIBS="$LIBS $LIBINTL $LIBICONV" + for ac_func in locale_charset +do : + ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset" +if test "x$ac_cv_func_locale_charset" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LOCALE_CHARSET 1 +_ACEOF + +fi +done + + LIBS="$OLDLIBS" +fi + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5 +$as_echo_n "checking size of wchar_t... " >&6; } +if ${ac_cv_sizeof_wchar_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_wchar_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (wchar_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_wchar_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5 +$as_echo "$ac_cv_sizeof_wchar_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t +_ACEOF + + + + + +if test "$opt_static_link" != yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBDL 1 +_ACEOF + + LIBS="-ldl $LIBS" + +fi + +for ac_func in dlopen dlclose dlsym +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +fi + +ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "#include +/* NetBSD declares sys_siglist in unistd.h. */ +#ifdef HAVE_UNISTD_H +# include +#endif + +" +if test "x$ac_cv_have_decl_sys_siglist" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_SYS_SIGLIST $ac_have_decl +_ACEOF + + + +if test "$ac_cv_func_inet_aton" != 'yes'; then + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_aton" >&5 +$as_echo_n "checking for inet_aton... " >&6; } +if ${bash_cv_func_inet_aton+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +struct in_addr ap; +int +main () +{ + inet_aton("127.0.0.1", &ap); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_func_inet_aton=yes +else + bash_cv_func_inet_aton=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_inet_aton" >&5 +$as_echo "$bash_cv_func_inet_aton" >&6; } +if test $bash_cv_func_inet_aton = yes; then + $as_echo "#define HAVE_INET_ATON 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" inet_aton.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS inet_aton.$ac_objext" + ;; +esac + +fi + +fi + +case "$host_os" in +irix4*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpwent in -lsun" >&5 +$as_echo_n "checking for getpwent in -lsun... " >&6; } +if ${ac_cv_lib_sun_getpwent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsun $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char getpwent (); +int +main () +{ +return getpwent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_sun_getpwent=yes +else + ac_cv_lib_sun_getpwent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sun_getpwent" >&5 +$as_echo "$ac_cv_lib_sun_getpwent" >&6; } +if test "x$ac_cv_lib_sun_getpwent" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSUN 1 +_ACEOF + + LIBS="-lsun $LIBS" + +fi + ;; +esac + +if test "$ac_cv_func_getpeername" = no; then + +if test "X$bash_cv_have_socklib" = "X"; then +_bash_needmsg= +else +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket library" >&5 +$as_echo_n "checking for socket library... " >&6; } +_bash_needmsg=yes +fi +if ${bash_cv_have_socklib+:} false; then : + $as_echo_n "(cached) " >&6 +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpeername in -lsocket" >&5 +$as_echo_n "checking for getpeername in -lsocket... " >&6; } +if ${ac_cv_lib_socket_getpeername+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket -lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char getpeername (); +int +main () +{ +return getpeername (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_getpeername=yes +else + ac_cv_lib_socket_getpeername=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_getpeername" >&5 +$as_echo "$ac_cv_lib_socket_getpeername" >&6; } +if test "x$ac_cv_lib_socket_getpeername" = xyes; then : + bash_cv_have_socklib=yes +else + bash_cv_have_socklib=no +fi + +fi + +if test "X$_bash_needmsg" = Xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_socklib" >&5 +$as_echo "$bash_cv_have_socklib" >&6; } + _bash_needmsg= +fi +if test $bash_cv_have_socklib = yes; then + # check for libnsl, add it to LIBS if present + if test "X$bash_cv_have_libnsl" = "X"; then + _bash_needmsg= + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libnsl" >&5 +$as_echo_n "checking for libnsl... " >&6; } + _bash_needmsg=yes + fi + if ${bash_cv_have_libnsl+:} false; then : + $as_echo_n "(cached) " >&6 +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5 +$as_echo_n "checking for t_open in -lnsl... " >&6; } +if ${ac_cv_lib_nsl_t_open+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char t_open (); +int +main () +{ +return t_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nsl_t_open=yes +else + ac_cv_lib_nsl_t_open=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_t_open" >&5 +$as_echo "$ac_cv_lib_nsl_t_open" >&6; } +if test "x$ac_cv_lib_nsl_t_open" = xyes; then : + bash_cv_have_libnsl=yes +else + bash_cv_have_libnsl=no +fi + +fi + + if test "X$_bash_needmsg" = Xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_libnsl" >&5 +$as_echo "$bash_cv_have_libnsl" >&6; } + _bash_needmsg= + fi + if test $bash_cv_have_libnsl = yes; then + LIBS="-lsocket -lnsl $LIBS" + else + LIBS="-lsocket $LIBS" + fi + $as_echo "#define HAVE_LIBSOCKET 1" >>confdefs.h + + $as_echo "#define HAVE_GETPEERNAME 1" >>confdefs.h + +fi + +fi +if test "$ac_cv_func_gethostbyname" = no; then + if test "X$bash_cv_have_gethostbyname" = "X"; then +_bash_needmsg=yes +else +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in socket library" >&5 +$as_echo_n "checking for gethostbyname in socket library... " >&6; } +_bash_needmsg= +fi +if ${bash_cv_have_gethostbyname+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + struct hostent *hp; + hp = gethostbyname("localhost"); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_have_gethostbyname=yes +else + bash_cv_have_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi + +if test "X$_bash_needmsg" = Xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in socket library" >&5 +$as_echo_n "checking for gethostbyname in socket library... " >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_gethostbyname" >&5 +$as_echo "$bash_cv_have_gethostbyname" >&6; } +if test "$bash_cv_have_gethostbyname" = yes; then +$as_echo "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5 +$as_echo_n "checking type of array argument to getgroups... " >&6; } +if ${ac_cv_type_getgroups+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_type_getgroups=cross +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Mike Rendell for this test. */ +$ac_includes_default +#define NGID 256 +#undef MAX +#define MAX(x, y) ((x) > (y) ? (x) : (y)) + +int +main () +{ + gid_t gidset[NGID]; + int i, n; + union { gid_t gval; long int lval; } val; + + val.lval = -1; + for (i = 0; i < NGID; i++) + gidset[i] = val.gval; + n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1, + gidset); + /* Exit non-zero if getgroups seems to require an array of ints. This + happens when gid_t is short int but getgroups modifies an array + of ints. */ + return n > 0 && gidset[n] != val.gval; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_type_getgroups=gid_t +else + ac_cv_type_getgroups=int +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +if test $ac_cv_type_getgroups = cross; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then : + ac_cv_type_getgroups=gid_t +else + ac_cv_type_getgroups=int +fi +rm -f conftest* + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5 +$as_echo "$ac_cv_type_getgroups" >&6; } + +cat >>confdefs.h <<_ACEOF +#define GETGROUPS_T $ac_cv_type_getgroups +_ACEOF + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define off_t long int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" +if test "x$ac_cv_type_mode_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define mode_t int +_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +$as_echo_n "checking for uid_t in sys/types.h... " >&6; } +if ${ac_cv_type_uid_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uid_t" >/dev/null 2>&1; then : + ac_cv_type_uid_t=yes +else + ac_cv_type_uid_t=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +$as_echo "$ac_cv_type_uid_t" >&6; } +if test $ac_cv_type_uid_t = no; then + +$as_echo "#define uid_t int" >>confdefs.h + + +$as_echo "#define gid_t int" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" +if test "x$ac_cv_type_pid_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define pid_t int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + + + ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default" +if test "x$ac_cv_type_uintptr_t" = xyes; then : + +$as_echo "#define HAVE_UINTPTR_T 1" >>confdefs.h + +else + for ac_type in 'unsigned int' 'unsigned long int' \ + 'unsigned long long int'; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +cat >>confdefs.h <<_ACEOF +#define uintptr_t $ac_type +_ACEOF + + ac_type= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test -z "$ac_type" && break + done +fi + + + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "time_t" "ac_cv_type_time_t" "$ac_includes_default" +if test "x$ac_cv_type_time_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define time_t long +_ACEOF + +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long" >&5 +$as_echo_n "checking for long long... " >&6; } +if ${bash_cv_type_long_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_type_long_long='long long' +else + bash_cv_type_long_long='long' +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_long_long" >&5 +$as_echo "$bash_cv_type_long_long" >&6; } +if test "$bash_cv_type_long_long" = 'long long'; then + $as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long" >&5 +$as_echo_n "checking for unsigned long long... " >&6; } +if ${bash_cv_type_unsigned_long_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +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 +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_type_unsigned_long_long='unsigned long long' +else + bash_cv_type_unsigned_long_long='unsigned long' +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_unsigned_long_long" >&5 +$as_echo "$bash_cv_type_unsigned_long_long" >&6; } +if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then + $as_echo "#define HAVE_UNSIGNED_LONG_LONG 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 +$as_echo_n "checking return type of signal handlers... " >&6; } +if ${ac_cv_type_signal+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main () +{ +return *(signal (0, 0)) (0) == 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_signal=int +else + ac_cv_type_signal=void +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 +$as_echo "$ac_cv_type_signal" >&6; } + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t in signal.h" >&5 +$as_echo_n "checking for sig_atomic_t in signal.h... " >&6; } +if ${ac_cv_have_sig_atomic_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include + +int +main () +{ + sig_atomic_t x; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_have_sig_atomic_t=yes +else + ac_cv_have_sig_atomic_t=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sig_atomic_t" >&5 +$as_echo "$ac_cv_have_sig_atomic_t" >&6; } +if test "$ac_cv_have_sig_atomic_t" = "no" +then + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "$ac_includes_default" +if test "x$ac_cv_type_sig_atomic_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define sig_atomic_t int +_ACEOF + +fi + +fi + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5 +$as_echo_n "checking size of char... " >&6; } +if ${ac_cv_sizeof_char+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_char" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (char) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_char=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 +$as_echo "$ac_cv_sizeof_char" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_CHAR $ac_cv_sizeof_char +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 +$as_echo_n "checking size of short... " >&6; } +if ${ac_cv_sizeof_short+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_short" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (short) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_short=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 +$as_echo "$ac_cv_sizeof_short" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SHORT $ac_cv_sizeof_short +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 +$as_echo_n "checking size of int... " >&6; } +if ${ac_cv_sizeof_int+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_int" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (int) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_int=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 +$as_echo "$ac_cv_sizeof_int" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +$as_echo_n "checking size of long... " >&6; } +if ${ac_cv_sizeof_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +$as_echo "$ac_cv_sizeof_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char *" >&5 +$as_echo_n "checking size of char *... " >&6; } +if ${ac_cv_sizeof_char_p+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char *))" "ac_cv_sizeof_char_p" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_char_p" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (char *) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_char_p=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char_p" >&5 +$as_echo "$ac_cv_sizeof_char_p" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_CHAR_P $ac_cv_sizeof_char_p +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 +$as_echo_n "checking size of double... " >&6; } +if ${ac_cv_sizeof_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_double" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (double) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_double=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 +$as_echo "$ac_cv_sizeof_double" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_DOUBLE $ac_cv_sizeof_double +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 +$as_echo_n "checking size of long long... " >&6; } +if ${ac_cv_sizeof_long_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long long) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 +$as_echo "$ac_cv_sizeof_long_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + + +ac_fn_c_check_type "$LINENO" "u_int" "ac_cv_type_u_int" "$ac_includes_default" +if test "x$ac_cv_type_u_int" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define u_int unsigned int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "u_long" "ac_cv_type_u_long" "$ac_includes_default" +if test "x$ac_cv_type_u_long" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define u_long unsigned long +_ACEOF + +fi + + + +if test "$ac_cv_sizeof_short" = 2; then + ac_fn_c_check_type "$LINENO" "bits16_t" "ac_cv_type_bits16_t" "$ac_includes_default" +if test "x$ac_cv_type_bits16_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define bits16_t short +_ACEOF + +fi + +elif test "$ac_cv_sizeof_char" = 2; then + ac_fn_c_check_type "$LINENO" "bits16_t" "ac_cv_type_bits16_t" "$ac_includes_default" +if test "x$ac_cv_type_bits16_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define bits16_t char +_ACEOF + +fi + +else + ac_fn_c_check_type "$LINENO" "bits16_t" "ac_cv_type_bits16_t" "$ac_includes_default" +if test "x$ac_cv_type_bits16_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define bits16_t short +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_short" = 2; then + ac_fn_c_check_type "$LINENO" "u_bits16_t" "ac_cv_type_u_bits16_t" "$ac_includes_default" +if test "x$ac_cv_type_u_bits16_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define u_bits16_t unsigned short +_ACEOF + +fi + +elif test "$ac_cv_sizeof_char" = 2; then + ac_fn_c_check_type "$LINENO" "u_bits16_t" "ac_cv_type_u_bits16_t" "$ac_includes_default" +if test "x$ac_cv_type_u_bits16_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define u_bits16_t unsigned char +_ACEOF + +fi + +else + ac_fn_c_check_type "$LINENO" "u_bits16_t" "ac_cv_type_u_bits16_t" "$ac_includes_default" +if test "x$ac_cv_type_u_bits16_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define u_bits16_t unsigned short +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_int" = 4; then + ac_fn_c_check_type "$LINENO" "bits32_t" "ac_cv_type_bits32_t" "$ac_includes_default" +if test "x$ac_cv_type_bits32_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define bits32_t int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 4; then + ac_fn_c_check_type "$LINENO" "bits32_t" "ac_cv_type_bits32_t" "$ac_includes_default" +if test "x$ac_cv_type_bits32_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define bits32_t long +_ACEOF + +fi + +else + ac_fn_c_check_type "$LINENO" "bits32_t" "ac_cv_type_bits32_t" "$ac_includes_default" +if test "x$ac_cv_type_bits32_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define bits32_t int +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_int" = 4; then + ac_fn_c_check_type "$LINENO" "u_bits32_t" "ac_cv_type_u_bits32_t" "$ac_includes_default" +if test "x$ac_cv_type_u_bits32_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define u_bits32_t unsigned int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 4; then + ac_fn_c_check_type "$LINENO" "u_bits32_t" "ac_cv_type_u_bits32_t" "$ac_includes_default" +if test "x$ac_cv_type_u_bits32_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define u_bits32_t unsigned long +_ACEOF + +fi + +else + ac_fn_c_check_type "$LINENO" "u_bits32_t" "ac_cv_type_u_bits32_t" "$ac_includes_default" +if test "x$ac_cv_type_u_bits32_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define u_bits32_t unsigned int +_ACEOF + +fi + +fi + + +if test "$ac_cv_sizeof_char_p" = 8; then + ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" +if test "x$ac_cv_type_bits64_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t char * +_ACEOF + +fi + +elif test "$ac_cv_sizeof_double" = 8; then + ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" +if test "x$ac_cv_type_bits64_t" = xyes; then : + +else + +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 + ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" +if test "x$ac_cv_type_bits64_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t long long +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = 8; then + ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" +if test "x$ac_cv_type_bits64_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t long +_ACEOF + +fi + +else + ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default" +if test "x$ac_cv_type_bits64_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define bits64_t double +_ACEOF + +fi + +fi + + + +if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then + ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t int +_ACEOF + +fi + +elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then + ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = xyes; then : + +else + +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 + ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t long long +_ACEOF + +fi + +else + ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define ptrdiff_t int +_ACEOF + +fi + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +$as_echo_n "checking whether stat file-mode macros are broken... " >&6; } +if ${ac_cv_header_stat_broken+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stat_broken=no +else + ac_cv_header_stat_broken=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +$as_echo "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +$as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether #! works in shell scripts" >&5 +$as_echo_n "checking whether #! works in shell scripts... " >&6; } +if ${ac_cv_sys_interpreter+:} false; then : + $as_echo_n "(cached) " >&6 +else + echo '#! /bin/cat +exit 69 +' >conftest +chmod u+x conftest +(SHELL=/bin/sh; export SHELL; ./conftest >/dev/null 2>&1) +if test $? -ne 69; then + ac_cv_sys_interpreter=yes +else + ac_cv_sys_interpreter=no +fi +rm -f conftest +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_interpreter" >&5 +$as_echo "$ac_cv_sys_interpreter" >&6; } +interpval=$ac_cv_sys_interpreter + +if test $ac_cv_sys_interpreter = yes; then +$as_echo "#define HAVE_HASH_BANG_EXEC 1" >>confdefs.h + +fi + +if test "$ac_cv_func_lstat" = "no"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for lstat" >&5 +$as_echo_n "checking for lstat... " >&6; } +if ${bash_cv_func_lstat+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ + lstat(".",(struct stat *)0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_func_lstat=yes +else + bash_cv_func_lstat=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_lstat" >&5 +$as_echo "$bash_cv_func_lstat" >&6; } +if test $bash_cv_func_lstat = yes; then + $as_echo "#define HAVE_LSTAT 1" >>confdefs.h + +fi + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the ctype macros accept non-ascii characters" >&5 +$as_echo_n "checking whether the ctype macros accept non-ascii characters... " >&6; } +if ${bash_cv_func_ctype_nonascii+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&2;} + bash_cv_func_ctype_nonascii=no + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_LOCALE_H +#include +#endif +#include +#include +#include + +int +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 +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_func_ctype_nonascii=yes +else + bash_cv_func_ctype_nonascii=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_ctype_nonascii" >&5 +$as_echo "$bash_cv_func_ctype_nonascii" >&6; } +if test $bash_cv_func_ctype_nonascii = yes; then +$as_echo "#define CTYPE_NON_ASCII 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if dup2 fails to clear the close-on-exec flag" >&5 +$as_echo_n "checking if dup2 fails to clear the close-on-exec flag... " >&6; } +if ${bash_cv_dup2_broken+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&2;} + bash_cv_dup2_broken=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +int +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 +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_dup2_broken=yes +else + bash_cv_dup2_broken=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dup2_broken" >&5 +$as_echo "$bash_cv_dup2_broken" >&6; } +if test $bash_cv_dup2_broken = yes; then +$as_echo "#define DUP2_BROKEN 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pgrps need synchronization" >&5 +$as_echo_n "checking whether pgrps need synchronization... " >&6; } +if ${bash_cv_pgrp_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&2;} + bash_cv_pgrp_pipe=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_UNISTD_H +# include +#endif +#ifdef HAVE_SYS_WAIT_H +# include +#endif +#include +int +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 +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_pgrp_pipe=no +else + bash_cv_pgrp_pipe=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_pgrp_pipe" >&5 +$as_echo "$bash_cv_pgrp_pipe" >&6; } +if test $bash_cv_pgrp_pipe = yes; then +$as_echo "#define PGRP_PIPE 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for type of signal functions" >&5 +$as_echo_n "checking for type of signal functions... " >&6; } +if ${bash_cv_signal_vintage+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_signal_vintage=posix +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + + int mask = sigmask(SIGINT); + sigsetmask(mask); sigblock(mask); sigpause(mask); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_signal_vintage=4.2bsd +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + RETSIGTYPE foo() { } +int +main () +{ + + int mask = sigmask(SIGINT); + sigset(SIGINT, foo); sigrelse(SIGINT); + sighold(SIGINT); sigpause(SIGINT); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_signal_vintage=svr3 +else + bash_cv_signal_vintage=v7 + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_signal_vintage" >&5 +$as_echo "$bash_cv_signal_vintage" >&6; } +if test "$bash_cv_signal_vintage" = posix; then +$as_echo "#define HAVE_POSIX_SIGNALS 1" >>confdefs.h + +elif test "$bash_cv_signal_vintage" = "4.2bsd"; then +$as_echo "#define HAVE_BSD_SIGNALS 1" >>confdefs.h + +elif test "$bash_cv_signal_vintage" = svr3; then +$as_echo "#define HAVE_USG_SIGHOLD 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys_errlist and sys_nerr" >&5 +$as_echo_n "checking for sys_errlist and sys_nerr... " >&6; } +if ${bash_cv_sys_errlist+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +extern char *sys_errlist[]; + extern int sys_nerr; + char *msg = sys_errlist[sys_nerr - 1]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_sys_errlist=yes +else + bash_cv_sys_errlist=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_errlist" >&5 +$as_echo "$bash_cv_sys_errlist" >&6; } +if test $bash_cv_sys_errlist = yes; then +$as_echo "#define HAVE_SYS_ERRLIST 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys_siglist in system C library" >&5 +$as_echo_n "checking for sys_siglist in system C library... " >&6; } +if ${bash_cv_sys_siglist+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&2;} + bash_cv_sys_siglist=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#if !HAVE_DECL_SYS_SIGLIST +extern char *sys_siglist[]; +#endif +int +main() +{ +char *msg = sys_siglist[2]; +exit(msg == 0); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_sys_siglist=yes +else + bash_cv_sys_siglist=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_siglist" >&5 +$as_echo "$bash_cv_sys_siglist" >&6; } +if test $bash_cv_sys_siglist = yes; then +$as_echo "#define HAVE_SYS_SIGLIST 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sys_siglist in signal.h or unistd.h" >&5 +$as_echo_n "checking for _sys_siglist in signal.h or unistd.h... " >&6; } +if ${bash_cv_decl_under_sys_siglist+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +int +main () +{ + char *msg = _sys_siglist[2]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_decl_under_sys_siglist=yes +else + bash_cv_decl_under_sys_siglist=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_under_sys_siglist" >&5 +$as_echo "$bash_cv_decl_under_sys_siglist" >&6; } +if test $bash_cv_decl_under_sys_siglist = yes; then +$as_echo "#define UNDER_SYS_SIGLIST_DECLARED 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sys_siglist in system C library" >&5 +$as_echo_n "checking for _sys_siglist in system C library... " >&6; } +if ${bash_cv_under_sys_siglist+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&2;} + bash_cv_under_sys_siglist=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#ifndef UNDER_SYS_SIGLIST_DECLARED +extern char *_sys_siglist[]; +#endif +int +main() +{ +char *msg = (char *)_sys_siglist[2]; +exit(msg == 0); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_under_sys_siglist=yes +else + bash_cv_under_sys_siglist=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_under_sys_siglist" >&5 +$as_echo "$bash_cv_under_sys_siglist" >&6; } +if test $bash_cv_under_sys_siglist = yes; then +$as_echo "#define HAVE_UNDER_SYS_SIGLIST 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether signal handlers are of type void" >&5 +$as_echo_n "checking whether signal handlers are of type void... " >&6; } +if ${bash_cv_void_sighandler+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" +#endif +void (*signal ()) (); +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_void_sighandler=yes +else + bash_cv_void_sighandler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_void_sighandler" >&5 +$as_echo "$bash_cv_void_sighandler" >&6; } +if test $bash_cv_void_sighandler = yes; then +$as_echo "#define VOID_SIGHANDLER 1" >>confdefs.h + +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_t" >&5 +$as_echo_n "checking for clock_t... " >&6; } +if ${bash_cv_type_clock_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif +#include + +_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 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_clock_t" >&5 +$as_echo "$bash_cv_type_clock_t" >&6; } + +if test $bash_cv_type_clock_t = no; then + cat >>confdefs.h <<_ACEOF +#define clock_t long +_ACEOF + +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigset_t" >&5 +$as_echo_n "checking for sigset_t... " >&6; } +if ${bash_cv_type_sigset_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "sigset_t" >/dev/null 2>&1; then : + bash_cv_type_sigset_t=yes +else + bash_cv_type_sigset_t=no +fi +rm -f conftest* + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sigset_t" >&5 +$as_echo "$bash_cv_type_sigset_t" >&6; } + +if test $bash_cv_type_sigset_t = no; then + cat >>confdefs.h <<_ACEOF +#define sigset_t int +_ACEOF + +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t" >&5 +$as_echo_n "checking for sig_atomic_t... " >&6; } +if ${bash_cv_type_sig_atomic_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "sig_atomic_t" >/dev/null 2>&1; then : + bash_cv_type_sig_atomic_t=yes +else + bash_cv_type_sig_atomic_t=no +fi +rm -f conftest* + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sig_atomic_t" >&5 +$as_echo "$bash_cv_type_sig_atomic_t" >&6; } + +if test $bash_cv_type_sig_atomic_t = no; then + cat >>confdefs.h <<_ACEOF +#define sig_atomic_t int +_ACEOF + +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for quad_t" >&5 +$as_echo_n "checking for quad_t... " >&6; } +if ${bash_cv_type_quad_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif + + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "quad_t" >/dev/null 2>&1; then : + bash_cv_type_quad_t=yes +else + bash_cv_type_quad_t=no +fi +rm -f conftest* + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_quad_t" >&5 +$as_echo "$bash_cv_type_quad_t" >&6; } +if test $bash_cv_type_quad_t = yes; then + $as_echo "#define HAVE_QUAD_T 1" >>confdefs.h + + fi +if test $bash_cv_type_quad_t = no; then + cat >>confdefs.h <<_ACEOF +#define quad_t long +_ACEOF + +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5 +$as_echo_n "checking for intmax_t... " >&6; } +if ${bash_cv_type_intmax_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif + + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "intmax_t" >/dev/null 2>&1; then : + bash_cv_type_intmax_t=yes +else + bash_cv_type_intmax_t=no +fi +rm -f conftest* + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_intmax_t" >&5 +$as_echo "$bash_cv_type_intmax_t" >&6; } + +if test $bash_cv_type_intmax_t = no; then + cat >>confdefs.h <<_ACEOF +#define intmax_t $bash_cv_type_long_long +_ACEOF + +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uintmax_t" >&5 +$as_echo_n "checking for uintmax_t... " >&6; } +if ${bash_cv_type_uintmax_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif + + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uintmax_t" >/dev/null 2>&1; then : + bash_cv_type_uintmax_t=yes +else + bash_cv_type_uintmax_t=no +fi +rm -f conftest* + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_uintmax_t" >&5 +$as_echo "$bash_cv_type_uintmax_t" >&6; } + +if test $bash_cv_type_uintmax_t = no; then + cat >>confdefs.h <<_ACEOF +#define uintmax_t $bash_cv_type_unsigned_long_long +_ACEOF + +fi + +if test "$ac_cv_header_sys_socket_h" = "yes"; then + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5 +$as_echo_n "checking for socklen_t... " >&6; } +if ${bash_cv_type_socklen_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if STDC_HEADERS +#include +#include +#endif +#if HAVE_INTTYPES_H +#include +#endif +#if HAVE_STDINT_H +#include +#endif +#include + +_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 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_socklen_t" >&5 +$as_echo "$bash_cv_type_socklen_t" >&6; } +if test $bash_cv_type_socklen_t = yes; then + $as_echo "#define HAVE_SOCKLEN_T 1" >>confdefs.h + + fi +if test $bash_cv_type_socklen_t = no; then + cat >>confdefs.h <<_ACEOF +#define socklen_t unsigned int +_ACEOF + +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for size and type of struct rlimit fields" >&5 +$as_echo_n "checking for size and type of struct rlimit fields... " >&6; } +if ${bash_cv_type_rlimit+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +rlim_t xxx; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_type_rlimit=rlim_t +else + +if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5 +$as_echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;} + bash_cv_type_rlimit=long +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include +int +main() +{ +#ifdef HAVE_QUAD_T + struct rlimit rl; + if (sizeof(rl.rlim_cur) == sizeof(quad_t)) + exit(0); +#endif + exit(1); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_type_rlimit=quad_t +else + bash_cv_type_rlimit=long +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_rlimit" >&5 +$as_echo "$bash_cv_type_rlimit" >&6; } +if test $bash_cv_type_rlimit = quad_t; then +$as_echo "#define RLIMTYPE quad_t" >>confdefs.h + +elif test $bash_cv_type_rlimit = rlim_t; then +$as_echo "#define RLIMTYPE rlim_t" >>confdefs.h + +fi + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of intmax_t" >&5 +$as_echo_n "checking size of intmax_t... " >&6; } +if ${ac_cv_sizeof_intmax_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (intmax_t))" "ac_cv_sizeof_intmax_t" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_intmax_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (intmax_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_intmax_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_intmax_t" >&5 +$as_echo "$ac_cv_sizeof_intmax_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INTMAX_T $ac_cv_sizeof_intmax_t +_ACEOF + + + + +ac_fn_c_check_member "$LINENO" "struct termios" "c_line" "ac_cv_member_struct_termios_c_line" " +#include +#include + +" +if test "x$ac_cv_member_struct_termios_c_line" = xyes; then : + $as_echo "#define TERMIOS_LDISC 1" >>confdefs.h + +fi + + + +ac_fn_c_check_member "$LINENO" "struct termio" "c_line" "ac_cv_member_struct_termio_c_line" " +#include +#include + +" +if test "x$ac_cv_member_struct_termio_c_line" = xyes; then : + $as_echo "#define TERMIO_LDISC 1" >>confdefs.h + +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_ino" >&5 +$as_echo_n "checking for struct dirent.d_ino... " >&6; } +if ${bash_cv_dirent_has_dino+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_dirent_has_dino=yes +else + bash_cv_dirent_has_dino=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_dino" >&5 +$as_echo "$bash_cv_dirent_has_dino" >&6; } +if test $bash_cv_dirent_has_dino = yes; then +$as_echo "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_fileno" >&5 +$as_echo_n "checking for struct dirent.d_fileno... " >&6; } +if ${bash_cv_dirent_has_d_fileno+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_dirent_has_d_fileno=yes +else + bash_cv_dirent_has_d_fileno=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_fileno" >&5 +$as_echo "$bash_cv_dirent_has_d_fileno" >&6; } +if test $bash_cv_dirent_has_d_fileno = yes; then +$as_echo "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_namlen" >&5 +$as_echo_n "checking for struct dirent.d_namlen... " >&6; } +if ${bash_cv_dirent_has_d_namlen+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_dirent_has_d_namlen=yes +else + bash_cv_dirent_has_d_namlen=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_namlen" >&5 +$as_echo "$bash_cv_dirent_has_d_namlen" >&6; } +if test $bash_cv_dirent_has_d_namlen = yes; then +$as_echo "#define HAVE_STRUCT_DIRENT_D_NAMLEN 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct winsize in sys/ioctl.h and termios.h" >&5 +$as_echo_n "checking for struct winsize in sys/ioctl.h and termios.h... " >&6; } +if ${bash_cv_struct_winsize_header+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +struct winsize x; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_struct_winsize_header=ioctl_h +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +struct winsize x; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_struct_winsize_header=termios_h +else + bash_cv_struct_winsize_header=other +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +if test $bash_cv_struct_winsize_header = ioctl_h; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: sys/ioctl.h" >&5 +$as_echo "sys/ioctl.h" >&6; } + $as_echo "#define STRUCT_WINSIZE_IN_SYS_IOCTL 1" >>confdefs.h + +elif test $bash_cv_struct_winsize_header = termios_h; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: termios.h" >&5 +$as_echo "termios.h" >&6; } + $as_echo "#define STRUCT_WINSIZE_IN_TERMIOS 1" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timeval in sys/time.h and time.h" >&5 +$as_echo_n "checking for struct timeval in sys/time.h and time.h... " >&6; } +if ${bash_cv_struct_timeval+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if HAVE_SYS_TIME_H + #include + #endif + #include + +int +main () +{ +static struct timeval x; x.tv_sec = x.tv_usec; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_struct_timeval=yes +else + bash_cv_struct_timeval=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timeval" >&5 +$as_echo "$bash_cv_struct_timeval" >&6; } +if test $bash_cv_struct_timeval = yes; then + $as_echo "#define HAVE_TIMEVAL 1" >>confdefs.h + +fi + +ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BLOCKS 1 +_ACEOF + + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if ${ac_cv_struct_tm+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main () +{ +struct tm tm; + int *p = &tm.tm_sec; + return !p; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_struct_tm=time.h +else + ac_cv_struct_tm=sys/time.h +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +$as_echo "$ac_cv_struct_tm" >&6; } +if test $ac_cv_struct_tm = sys/time.h; then + +$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h + +fi + +ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include +#include <$ac_cv_struct_tm> + +" +if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_TM_TM_ZONE 1 +_ACEOF + + +fi + +if test "$ac_cv_member_struct_tm_tm_zone" = yes; then + +$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h + +else + ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include +" +if test "x$ac_cv_have_decl_tzname" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME $ac_have_decl +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 +$as_echo_n "checking for tzname... " >&6; } +if ${ac_cv_var_tzname+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if !HAVE_DECL_TZNAME +extern char *tzname[]; +#endif + +int +main () +{ +return tzname[0][0]; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_var_tzname=yes +else + ac_cv_var_tzname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 +$as_echo "$ac_cv_var_tzname" >&6; } + if test $ac_cv_var_tzname = yes; then + +$as_echo "#define HAVE_TZNAME 1" >>confdefs.h + + fi +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timezone in sys/time.h and time.h" >&5 +$as_echo_n "checking for struct timezone in sys/time.h and time.h... " >&6; } +if ${bash_cv_struct_timezone+:} false; then : + $as_echo_n "(cached) " >&6 +else + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "struct timezone" >/dev/null 2>&1; then : + bash_cv_struct_timezone=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "struct timezone" >/dev/null 2>&1; then : + bash_cv_struct_timezone=yes +else + bash_cv_struct_timezone=no +fi +rm -f conftest* + +fi +rm -f conftest* + + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timezone" >&5 +$as_echo "$bash_cv_struct_timezone" >&6; } +if test $bash_cv_struct_timezone = yes; then + $as_echo "#define HAVE_STRUCT_TIMEZONE 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for offset of exit status in return status from wait" >&5 +$as_echo_n "checking for offset of exit status in return status from wait... " >&6; } +if ${bash_cv_wexitstatus_offset+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&5 +$as_echo "$as_me: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&2;} + bash_cv_wexitstatus_offset=0 + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#include + +int +main(c, v) + int c; + char **v; +{ + pid_t pid, p; + int s, i, n; + + s = 0; + pid = fork(); + if (pid == 0) + exit (42); + + /* wait for the process */ + p = wait(&s); + if (p != pid) + exit (255); + + /* crack s */ + for (i = 0; i < (sizeof(s) * 8); i++) + { + n = (s >> i) & 0xff; + if (n == 42) + exit (i); + } + + exit (254); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_wexitstatus_offset=0 +else + bash_cv_wexitstatus_offset=$? +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +if test "$bash_cv_wexitstatus_offset" -gt 32 ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: bad exit status from test program -- defaulting to 0" >&5 +$as_echo "$as_me: WARNING: bad exit status from test program -- defaulting to 0" >&2;} + bash_cv_wexitstatus_offset=0 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wexitstatus_offset" >&5 +$as_echo "$bash_cv_wexitstatus_offset" >&6; } + +cat >>confdefs.h <<_ACEOF +#define WEXITSTATUS_OFFSET $bash_cv_wexitstatus_offset +_ACEOF + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 +$as_echo_n "checking for struct timespec in ... " >&6; } +if ${bash_cv_sys_struct_timespec_in_time_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +static struct timespec x; x.tv_sec = x.tv_nsec; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_sys_struct_timespec_in_time_h=yes +else + bash_cv_sys_struct_timespec_in_time_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_time_h" >&5 +$as_echo "$bash_cv_sys_struct_timespec_in_time_h" >&6; } + + HAVE_STRUCT_TIMESPEC=0 + TIME_H_DEFINES_STRUCT_TIMESPEC=0 + SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 + PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 + if test $bash_cv_sys_struct_timespec_in_time_h = yes; then + $as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h + + $as_echo "#define TIME_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h + + TIME_H_DEFINES_STRUCT_TIMESPEC=1 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 +$as_echo_n "checking for struct timespec in ... " >&6; } +if ${bash_cv_sys_struct_timespec_in_sys_time_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +static struct timespec x; x.tv_sec = x.tv_nsec; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_sys_struct_timespec_in_sys_time_h=yes +else + bash_cv_sys_struct_timespec_in_sys_time_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_sys_time_h" >&5 +$as_echo "$bash_cv_sys_struct_timespec_in_sys_time_h" >&6; } + if test $bash_cv_sys_struct_timespec_in_sys_time_h = yes; then + SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 + $as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h + + $as_echo "#define SYS_TIME_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h + + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 +$as_echo_n "checking for struct timespec in ... " >&6; } +if ${bash_cv_sys_struct_timespec_in_pthread_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +static struct timespec x; x.tv_sec = x.tv_nsec; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_sys_struct_timespec_in_pthread_h=yes +else + bash_cv_sys_struct_timespec_in_pthread_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_pthread_h" >&5 +$as_echo "$bash_cv_sys_struct_timespec_in_pthread_h" >&6; } + if test $bash_cv_sys_struct_timespec_in_pthread_h = yes; then + PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 + $as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h + + $as_echo "#define PTHREAD_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h + + fi + fi + fi + + + + + + + + + + ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.tv_nsec" "ac_cv_member_struct_stat_st_atim_tv_nsec" "#include + #include +" +if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1 +_ACEOF + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct stat.st_atim is of type struct timespec" >&5 +$as_echo_n "checking whether struct stat.st_atim is of type struct timespec... " >&6; } +if ${ac_cv_typeof_struct_stat_st_atim_is_struct_timespec+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #if HAVE_SYS_TIME_H + # include + #endif + #include + struct timespec ts; + struct stat st; + +int +main () +{ + + st.st_atim = ts; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes +else + ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&5 +$as_echo "$ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&6; } + if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then + +$as_echo "#define TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC 1" >>confdefs.h + + fi +else + ac_fn_c_check_member "$LINENO" "struct stat" "st_atimespec.tv_nsec" "ac_cv_member_struct_stat_st_atimespec_tv_nsec" "#include + #include +" +if test "x$ac_cv_member_struct_stat_st_atimespec_tv_nsec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC 1 +_ACEOF + + +else + ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "#include + #include +" +if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1 +_ACEOF + + +else + ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.st__tim.tv_nsec" "ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" "#include + #include +" +if test "x$ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC 1 +_ACEOF + + +fi + +fi + +fi + +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sbrk" >&5 +$as_echo_n "checking for sbrk... " >&6; } + if ${ac_cv_func_sbrk+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + void *x = sbrk (4096); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_sbrk=yes +else + ac_cv_func_sbrk=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_sbrk" >&5 +$as_echo "$ac_cv_func_sbrk" >&6; } + if test X$ac_cv_func_sbrk = Xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working sbrk" >&5 +$as_echo_n "checking for working sbrk... " >&6; } +if ${bash_cv_func_sbrk+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check working sbrk if cross-compiling" >&5 +$as_echo "$as_me: WARNING: cannot check working sbrk if cross-compiling" >&2;} + bash_cv_func_sbrk=yes + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main(int c, char **v) +{ + void *x; + + x = sbrk (4096); + exit ((x == (void *)-1) ? 1 : 0); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_func_sbrk=yes +else + bash_cv_func_snprintf=sbrk +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sbrk" >&5 +$as_echo "$bash_cv_func_sbrk" >&6; } + if test $bash_cv_func_sbrk = no; then + ac_cv_func_sbrk=no + fi + fi + if test $ac_cv_func_sbrk = yes; then + +$as_echo "#define HAVE_SBRK 1" >>confdefs.h + + fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the existence of strsignal" >&5 +$as_echo_n "checking for the existence of strsignal... " >&6; } +if ${bash_cv_have_strsignal+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +int +main () +{ +char *s = (char *)strsignal(2); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_have_strsignal=yes +else + bash_cv_have_strsignal=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_strsignal" >&5 +$as_echo "$bash_cv_have_strsignal" >&6; } +if test $bash_cv_have_strsignal = yes; then +$as_echo "#define HAVE_STRSIGNAL 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if opendir() opens non-directories" >&5 +$as_echo_n "checking if opendir() opens non-directories... " >&6; } +if ${bash_cv_opendir_not_robust+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&2;} + bash_cv_opendir_not_robust=no + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#ifdef HAVE_UNISTD_H +# include +#endif /* HAVE_UNISTD_H */ +#ifdef HAVE_SYS_STAT_H +#include +#endif +#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 */ +#include +int +main() +{ +DIR *dir; +int fd, err; +err = mkdir("bash-aclocal", 0700); +if (err < 0) { + perror("mkdir"); + exit(1); +} +unlink("bash-aclocal/not_a_directory"); +fd = open("bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); +write(fd, "\n", 1); +close(fd); +dir = opendir("bash-aclocal/not_a_directory"); +unlink("bash-aclocal/not_a_directory"); +rmdir("bash-aclocal"); +exit (dir == 0); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_opendir_not_robust=yes +else + bash_cv_opendir_not_robust=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_opendir_not_robust" >&5 +$as_echo "$bash_cv_opendir_not_robust" >&6; } +if test $bash_cv_opendir_not_robust = yes; then +$as_echo "#define OPENDIR_NOT_ROBUST 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ulimit can substitute for getdtablesize" >&5 +$as_echo_n "checking whether ulimit can substitute for getdtablesize... " >&6; } +if ${bash_cv_ulimit_maxfds+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&2;} + bash_cv_ulimit_maxfds=no + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef HAVE_ULIMIT_H +#include +#endif +int +main() +{ +long maxfds = ulimit(4, 0L); +exit (maxfds == -1L); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_ulimit_maxfds=yes +else + bash_cv_ulimit_maxfds=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_ulimit_maxfds" >&5 +$as_echo "$bash_cv_ulimit_maxfds" >&6; } +if test $bash_cv_ulimit_maxfds = yes; then +$as_echo "#define ULIMIT_MAXFDS 1" >>confdefs.h + +fi + + + + + + + + + ac_fn_c_check_decl "$LINENO" "fpurge" "ac_cv_have_decl_fpurge" "#include +" +if test "x$ac_cv_have_decl_fpurge" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FPURGE $ac_have_decl +_ACEOF + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if getenv can be redefined" >&5 +$as_echo_n "checking to see if getenv can be redefined... " >&6; } +if ${bash_cv_getenv_redef+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5 +$as_echo "$as_me: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&2;} + bash_cv_getenv_redef=yes + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_UNISTD_H +# include +#endif +#include +#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"; +} +int +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 +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_getenv_redef=yes +else + bash_cv_getenv_redef=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getenv_redef" >&5 +$as_echo "$bash_cv_getenv_redef" >&6; } +if test $bash_cv_getenv_redef = yes; then +$as_echo "#define CAN_REDEFINE_GETENV 1" >>confdefs.h + +fi + +if test "$ac_cv_func_getcwd" = "yes"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if getcwd() will dynamically allocate memory with 0 size" >&5 +$as_echo_n "checking if getcwd() will dynamically allocate memory with 0 size... " >&6; } +if ${bash_cv_getcwd_malloc+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&2;} + bash_cv_getcwd_malloc=no + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +int +main() +{ + char *xpwd; + xpwd = getcwd(0, 0); + exit (xpwd == 0); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_getcwd_malloc=yes +else + bash_cv_getcwd_malloc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getcwd_malloc" >&5 +$as_echo "$bash_cv_getcwd_malloc" >&6; } +if test $bash_cv_getcwd_malloc = no; then +$as_echo "#define GETCWD_BROKEN 1" >>confdefs.h + +case " $LIBOBJS " in + *" getcwd.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS getcwd.$ac_objext" + ;; +esac + +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5 +$as_echo_n "checking for presence of POSIX-style sigsetjmp/siglongjmp... " >&6; } +if ${bash_cv_func_sigsetjmp+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5 +$as_echo "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&2;} + bash_cv_func_sigsetjmp=missing + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include +#include + +int +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 +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_func_sigsetjmp=present +else + bash_cv_func_sigsetjmp=missing +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sigsetjmp" >&5 +$as_echo "$bash_cv_func_sigsetjmp" >&6; } +if test $bash_cv_func_sigsetjmp = present; then +$as_echo "#define HAVE_POSIX_SIGSETJMP 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether or not strcoll and strcmp differ" >&5 +$as_echo_n "checking whether or not strcoll and strcmp differ... " >&6; } +if ${bash_cv_func_strcoll_broken+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;} + bash_cv_func_strcoll_broken=no + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#if defined (HAVE_LOCALE_H) +#include +#endif +#include +#include + +int +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 +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_func_strcoll_broken=yes +else + bash_cv_func_strcoll_broken=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strcoll_broken" >&5 +$as_echo "$bash_cv_func_strcoll_broken" >&6; } +if test $bash_cv_func_strcoll_broken = yes; then +$as_echo "#define STRCOLL_BROKEN 1" >>confdefs.h + +fi + + + + + + if test X$ac_cv_func_snprintf = Xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant snprintf" >&5 +$as_echo_n "checking for standard-conformant snprintf... " >&6; } +if ${bash_cv_func_snprintf+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check standard snprintf if cross-compiling" >&5 +$as_echo "$as_me: WARNING: cannot check standard snprintf if cross-compiling" >&2;} + bash_cv_func_snprintf=yes + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main() +{ + int n; + n = snprintf (0, 0, "%s", "0123456"); + exit(n != 7); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_func_snprintf=yes +else + bash_cv_func_snprintf=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_snprintf" >&5 +$as_echo "$bash_cv_func_snprintf" >&6; } + if test $bash_cv_func_snprintf = no; then + ac_cv_func_snprintf=no + fi + fi + if test $ac_cv_func_snprintf = no; then + +$as_echo "#define HAVE_SNPRINTF 0" >>confdefs.h + + fi + + + + + + if test X$ac_cv_func_vsnprintf = Xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant vsnprintf" >&5 +$as_echo_n "checking for standard-conformant vsnprintf... " >&6; } +if ${bash_cv_func_vsnprintf+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check standard vsnprintf if cross-compiling" >&5 +$as_echo "$as_me: WARNING: cannot check standard vsnprintf if cross-compiling" >&2;} + bash_cv_func_vsnprintf=yes + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if HAVE_STDARG_H +#include +#else +#include +#endif +#include +#include + +static int +#if HAVE_STDARG_H +foo(const char *fmt, ...) +#else +foo(format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + int n; + +#if HAVE_STDARG_H + va_start(args, fmt); +#else + va_start(args); +#endif + n = vsnprintf(0, 0, fmt, args); + va_end (args); + return n; +} + +int +main() +{ + int n; + n = foo("%s", "0123456"); + exit(n != 7); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_func_vsnprintf=yes +else + bash_cv_func_vsnprintf=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_vsnprintf" >&5 +$as_echo "$bash_cv_func_vsnprintf" >&6; } + if test $bash_cv_func_vsnprintf = no; then + ac_cv_func_vsnprintf=no + fi + fi + if test $ac_cv_func_vsnprintf = no; then + +$as_echo "#define HAVE_VSNPRINTF 0" >>confdefs.h + + fi + + + +if test "$ac_cv_func_putenv" = "yes"; then + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant putenv declaration" >&5 +$as_echo_n "checking for standard-conformant putenv declaration... " >&6; } +if ${bash_cv_std_putenv+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_std_putenv=yes +else + bash_cv_std_putenv=no + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_std_putenv" >&5 +$as_echo "$bash_cv_std_putenv" >&6; } +if test $bash_cv_std_putenv = yes; then +$as_echo "#define HAVE_STD_PUTENV 1" >>confdefs.h + +fi + +else +$as_echo "#define HAVE_STD_PUTENV 1" >>confdefs.h + +fi +if test "$ac_cv_func_unsetenv" = "yes"; then + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant unsetenv declaration" >&5 +$as_echo_n "checking for standard-conformant unsetenv declaration... " >&6; } +if ${bash_cv_std_unsetenv+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +if ac_fn_c_try_link "$LINENO"; then : + bash_cv_std_unsetenv=yes +else + bash_cv_std_unsetenv=no + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_std_unsetenv" >&5 +$as_echo "$bash_cv_std_unsetenv" >&6; } +if test $bash_cv_std_unsetenv = yes; then +$as_echo "#define HAVE_STD_UNSETENV 1" >>confdefs.h + +fi + +else +$as_echo "#define HAVE_STD_UNSETENV 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for printf floating point output in hex notation" >&5 +$as_echo_n "checking for printf floating point output in hex notation... " >&6; } +if ${bash_cv_printf_a_format+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check printf if cross compiling -- defaulting to no" >&2;} + bash_cv_printf_a_format=no + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +int +main() +{ + double y = 0.0; + char abuf[1024]; + + sprintf(abuf, "%A", y); + exit(strchr(abuf, 'P') == (char *)0); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_printf_a_format=yes +else + bash_cv_printf_a_format=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_printf_a_format" >&5 +$as_echo "$bash_cv_printf_a_format" >&6; } +if test $bash_cv_printf_a_format = yes; then +$as_echo "#define HAVE_PRINTF_A_FORMAT 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fnmatch can be used to check bracket equivalence classes" >&5 +$as_echo_n "checking whether fnmatch can be used to check bracket equivalence classes... " >&6; } +if ${bash_cv_fnmatch_equiv_fallback+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&2;} + bash_cv_fnmatch_equiv_fallback=no + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include +#include + +char *pattern = "[[=a=]]"; + +/* char *string = "ä"; */ +unsigned char string[4] = { '\xc3', '\xa4', '\0' }; + +int +main (int c, char **v) +{ + setlocale (LC_ALL, "en_US.UTF-8"); + if (fnmatch (pattern, (const char *)string, 0) != FNM_NOMATCH) + exit (0); + exit (1); +} + + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_fnmatch_equiv_fallback=yes +else + bash_cv_fnmatch_equiv_fallback=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fnmatch_equiv_fallback" >&5 +$as_echo "$bash_cv_fnmatch_equiv_fallback" >&6; } +if test "$bash_cv_fnmatch_equiv_fallback" = "yes" ; then + bash_cv_fnmatch_equiv_value=1 +else + bash_cv_fnmatch_equiv_value=0 +fi + +cat >>confdefs.h <<_ACEOF +#define FNMATCH_EQUIV_FALLBACK $bash_cv_fnmatch_equiv_value +_ACEOF + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if signal handlers must be reinstalled when invoked" >&5 +$as_echo_n "checking if signal handlers must be reinstalled when invoked... " >&6; } +if ${bash_cv_must_reinstall_sighandlers+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;} + bash_cv_must_reinstall_sighandlers=no + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +typedef RETSIGTYPE sigfunc(); + +volatile 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++; +} + +int +main() +{ + nsigint = 0; + set_signal_handler(SIGINT, sigint); + kill((int)getpid(), SIGINT); + kill((int)getpid(), SIGINT); + exit(nsigint != 2); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_must_reinstall_sighandlers=no +else + bash_cv_must_reinstall_sighandlers=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_must_reinstall_sighandlers" >&5 +$as_echo "$bash_cv_must_reinstall_sighandlers" >&6; } +if test $bash_cv_must_reinstall_sighandlers = yes; then +$as_echo "#define MUST_REINSTALL_SIGHANDLERS 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of necessary job control definitions" >&5 +$as_echo_n "checking for presence of necessary job control definitions... " >&6; } +if ${bash_cv_job_control_missing+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 */ + +/* signal type */ +#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) +#error +#endif + +/* signals and tty control. */ +#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) +#error +#endif + +/* process control */ +#if !defined (WNOHANG) || !defined (WUNTRACED) +#error +#endif + +/* Posix systems have tcgetpgrp and waitpid. */ +#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) +#error +#endif + +#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) +#error +#endif + +/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ +#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) +#error +#endif + + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_job_control_missing=present +else + bash_cv_job_control_missing=missing + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_job_control_missing" >&5 +$as_echo "$bash_cv_job_control_missing" >&6; } +if test $bash_cv_job_control_missing = missing; then +$as_echo "#define JOB_CONTROL_MISSING 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of named pipes" >&5 +$as_echo_n "checking for presence of named pipes... " >&6; } +if ${bash_cv_sys_named_pipes+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5 +$as_echo "$as_me: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&2;} + bash_cv_sys_named_pipes=missing + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include + +/* Add more tests in here as appropriate. */ +int +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("bash-aclocal", 0700); +if (err < 0) { + perror ("mkdir"); + exit(1); +} +fd = mknod ("bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); +if (fd == -1) { + rmdir ("bash-aclocal"); + exit (1); +} +close(fd); +unlink ("bash-aclocal/sh-np-autoconf"); +rmdir ("bash-aclocal"); +exit(0); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_sys_named_pipes=present +else + bash_cv_sys_named_pipes=missing +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_named_pipes" >&5 +$as_echo "$bash_cv_sys_named_pipes" >&6; } +if test $bash_cv_sys_named_pipes = missing; then +$as_echo "#define NAMED_PIPES_MISSING 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5 +$as_echo_n "checking whether termios.h defines TIOCGWINSZ... " >&6; } +if ${ac_cv_sys_tiocgwinsz_in_termios_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5 +$as_echo "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; } + +if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5 +$as_echo_n "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; } +if ${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5 +$as_echo "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; } + + if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then + +$as_echo "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h + + fi +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIOCSTAT in sys/ioctl.h" >&5 +$as_echo_n "checking for TIOCSTAT in sys/ioctl.h... " >&6; } +if ${bash_cv_tiocstat_in_ioctl+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +int x = TIOCSTAT; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_tiocstat_in_ioctl=yes +else + bash_cv_tiocstat_in_ioctl=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_tiocstat_in_ioctl" >&5 +$as_echo "$bash_cv_tiocstat_in_ioctl" >&6; } +if test $bash_cv_tiocstat_in_ioctl = yes; then +$as_echo "#define TIOCSTAT_IN_SYS_IOCTL 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FIONREAD in sys/ioctl.h" >&5 +$as_echo_n "checking for FIONREAD in sys/ioctl.h... " >&6; } +if ${bash_cv_fionread_in_ioctl+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +int x = FIONREAD; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_fionread_in_ioctl=yes +else + bash_cv_fionread_in_ioctl=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fionread_in_ioctl" >&5 +$as_echo "$bash_cv_fionread_in_ioctl" >&6; } +if test $bash_cv_fionread_in_ioctl = yes; then +$as_echo "#define FIONREAD_IN_SYS_IOCTL 1" >>confdefs.h + +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5 +$as_echo_n "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... " >&6; } +if ${bash_cv_wcontinued_broken+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&5 +$as_echo "$as_me: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&2;} + bash_cv_wcontinued_broken=no + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include +#include + +#ifndef errno +extern int errno; +#endif +int +main() +{ + int x; + + x = waitpid(-1, (int *)0, WNOHANG|WCONTINUED); + if (x == -1 && errno == EINVAL) + exit (1); + else + exit (0); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_wcontinued_broken=no +else + bash_cv_wcontinued_broken=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcontinued_broken" >&5 +$as_echo "$bash_cv_wcontinued_broken" >&6; } +if test $bash_cv_wcontinued_broken = yes; then +$as_echo "#define WCONTINUED_BROKEN 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for speed_t in sys/types.h" >&5 +$as_echo_n "checking for speed_t in sys/types.h... " >&6; } +if ${bash_cv_speed_t_in_sys_types+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +speed_t x; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_speed_t_in_sys_types=yes +else + bash_cv_speed_t_in_sys_types=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_speed_t_in_sys_types" >&5 +$as_echo "$bash_cv_speed_t_in_sys_types" >&6; } +if test $bash_cv_speed_t_in_sys_types = yes; then +$as_echo "#define SPEED_T_IN_SYS_TYPES 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpw functions are declared in pwd.h" >&5 +$as_echo_n "checking whether getpw functions are declared in pwd.h... " >&6; } +if ${bash_cv_getpw_declared+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getpw_declared" >&5 +$as_echo "$bash_cv_getpw_declared" >&6; } +if test $bash_cv_getpw_declared = yes; then +$as_echo "#define HAVE_GETPW_DECLS 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unusable real-time signals due to large values" >&5 +$as_echo_n "checking for unusable real-time signals due to large values... " >&6; } +if ${bash_cv_unusable_rtsigs+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5 +$as_echo "$as_me: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&2;} + bash_cv_unusable_rtsigs=yes + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +#ifndef NSIG +# define NSIG 64 +#endif + +int +main () +{ + int n_sigs = 2 * NSIG; +#ifdef SIGRTMIN + int rtmin = SIGRTMIN; +#else + int rtmin = 0; +#endif + + exit(rtmin < n_sigs); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_unusable_rtsigs=yes +else + bash_cv_unusable_rtsigs=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_unusable_rtsigs" >&5 +$as_echo "$bash_cv_unusable_rtsigs" >&6; } +if test $bash_cv_unusable_rtsigs = yes; then +$as_echo "#define UNUSABLE_RT_SIGNALS 1" >>confdefs.h + +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*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5 +$as_echo_n "checking whether $host_os needs _KERNEL for RLIMIT defines... " >&6; } +if ${bash_cv_kernel_rlimit+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ + + int f; + f = RLIMIT_DATA; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_kernel_rlimit=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#define _KERNEL +#include +#undef _KERNEL + +int +main () +{ + + int f; + f = RLIMIT_DATA; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bash_cv_kernel_rlimit=yes +else + bash_cv_kernel_rlimit=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_kernel_rlimit" >&5 +$as_echo "$bash_cv_kernel_rlimit" >&6; } +if test $bash_cv_kernel_rlimit = yes; then +$as_echo "#define RLIMIT_NEEDS_KERNEL 1" >>confdefs.h + +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 +$as_echo_n "checking which library has the termcap functions... " >&6; } +_bash_needmsg= +fi +if ${bash_cv_termcap_lib+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent" +if test "x$ac_cv_func_tgetent" = xyes; then : + bash_cv_termcap_lib=libc +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5 +$as_echo_n "checking for tgetent in -ltermcap... " >&6; } +if ${ac_cv_lib_termcap_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltermcap $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_termcap_tgetent=yes +else + ac_cv_lib_termcap_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5 +$as_echo "$ac_cv_lib_termcap_tgetent" >&6; } +if test "x$ac_cv_lib_termcap_tgetent" = xyes; then : + bash_cv_termcap_lib=libtermcap +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5 +$as_echo_n "checking for tgetent in -ltinfo... " >&6; } +if ${ac_cv_lib_tinfo_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltinfo $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_tinfo_tgetent=yes +else + ac_cv_lib_tinfo_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5 +$as_echo "$ac_cv_lib_tinfo_tgetent" >&6; } +if test "x$ac_cv_lib_tinfo_tgetent" = xyes; then : + bash_cv_termcap_lib=libtinfo +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5 +$as_echo_n "checking for tgetent in -lcurses... " >&6; } +if ${ac_cv_lib_curses_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcurses $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_curses_tgetent=yes +else + ac_cv_lib_curses_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5 +$as_echo "$ac_cv_lib_curses_tgetent" >&6; } +if test "x$ac_cv_lib_curses_tgetent" = xyes; then : + bash_cv_termcap_lib=libcurses +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5 +$as_echo_n "checking for tgetent in -lncurses... " >&6; } +if ${ac_cv_lib_ncurses_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lncurses $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ncurses_tgetent=yes +else + ac_cv_lib_ncurses_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5 +$as_echo "$ac_cv_lib_ncurses_tgetent" >&6; } +if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then : + bash_cv_termcap_lib=libncurses +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5 +$as_echo_n "checking for tgetent in -lncursesw... " >&6; } +if ${ac_cv_lib_ncursesw_tgetent+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lncursesw $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ncursesw_tgetent=yes +else + ac_cv_lib_ncursesw_tgetent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5 +$as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; } +if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then : + bash_cv_termcap_lib=libncursesw +else + bash_cv_termcap_lib=gnutermcap +fi + +fi + +fi + +fi + +fi + +fi + +fi + +if test "X$_bash_needmsg" = "Xyes"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5 +$as_echo_n "checking which library has the termcap functions... " >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5 +$as_echo "using $bash_cv_termcap_lib" >&6; } +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +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 + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether /dev/fd is available" >&5 +$as_echo_n "checking whether /dev/fd is available... " >&6; } +if ${bash_cv_dev_fd+:} false; then : + $as_echo_n "(cached) " >&6 +else + bash_cv_dev_fd="" +if test -d /dev/fd && (exec test -r /dev/fd/0 < /dev/null) ; then +# check for systems like FreeBSD 5 that only provide /dev/fd/[012] + if (exec test -r /dev/fd/3 3&5 +$as_echo "$bash_cv_dev_fd" >&6; } +if test $bash_cv_dev_fd = "standard"; then + $as_echo "#define HAVE_DEV_FD 1" >>confdefs.h + + $as_echo "#define DEV_FD_PREFIX \"/dev/fd/\"" >>confdefs.h + +elif test $bash_cv_dev_fd = "whacky"; then + $as_echo "#define HAVE_DEV_FD 1" >>confdefs.h + + $as_echo "#define DEV_FD_PREFIX \"/proc/self/fd/\"" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether /dev/stdin stdout stderr are available" >&5 +$as_echo_n "checking whether /dev/stdin stdout stderr are available... " >&6; } +if ${bash_cv_dev_stdin+:} false; then : + $as_echo_n "(cached) " >&6 +else + if (exec test -r /dev/stdin < /dev/null) ; then + bash_cv_dev_stdin=present + else + bash_cv_dev_stdin=absent + fi + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dev_stdin" >&5 +$as_echo "$bash_cv_dev_stdin" >&6; } +if test $bash_cv_dev_stdin = "present"; then + $as_echo "#define HAVE_DEV_STDIN 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for default mail directory" >&5 +$as_echo_n "checking for default mail directory... " >&6; } +if ${bash_cv_mail_dir+:} false; then : + $as_echo_n "(cached) " >&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 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_mail_dir" >&5 +$as_echo "$bash_cv_mail_dir" >&6; } +cat >>confdefs.h <<_ACEOF +#define DEFAULT_MAIL_DIRECTORY "$bash_cv_mail_dir" +_ACEOF + + + +if test "$bash_cv_job_control_missing" = missing; then + opt_job_control=no +fi + +if test "$opt_job_control" = yes; then +$as_echo "#define JOB_CONTROL 1" >>confdefs.h + +JOBS_O=jobs.o +else +JOBS_O=nojobs.o +fi + + + + +LOCAL_DEFS=-DSHELL + + +case "${host_os}" in +sysv4.2*) $as_echo "#define SVR4_2 1" >>confdefs.h + + $as_echo "#define SVR4 1" >>confdefs.h + ;; +sysv4*) $as_echo "#define SVR4 1" >>confdefs.h + ;; +sysv5*) $as_echo "#define SVR5 1" >>confdefs.h + ;; +hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;; +hpux*) LOCAL_CFLAGS="-DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;; +dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;; +isc*) LOCAL_CFLAGS=-Disc386 ;; +rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;; +darwin*) LOCAL_CFLAGS=-DMACOSX ;; +sco3.2v5*) LOCAL_CFLAGS="-b elf -DWAITPID_BROKEN -DPATH_MAX=1024" ;; +sco3.2v4*) LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;; +sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; +sunos4*) LOCAL_CFLAGS=-DSunOS4 ;; +solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;; +solaris2.8*) LOCAL_CFLAGS=-DSOLARIS ;; +solaris2.9*) LOCAL_CFLAGS=-DSOLARIS ;; +solaris2.10*) LOCAL_CFLAGS=-DSOLARIS ;; +solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; +lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading + case "`uname -r`" in + 1.*|2.[0123]*) : ;; + *) $as_echo "#define PGRP_PIPE 1" >>confdefs.h + ;; + esac ;; +netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;; +freebsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;; +*qnx[67]*) LOCAL_LIBS="-lncurses" ;; +*qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; +powerux*) LOCAL_LIBS="-lgen" ;; +cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;; +*openstep*) LOCAL_CFLAGS="-D__APPLE_CC__" ;; +esac + +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 +bsdi5*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux +hpux11*-gcc*) LOCAL_LDFLAGS="-Wl,-E" ;; # allow dynamic loading +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 + +# turn off paren warnings in gcc +CFLAGS="$CFLAGS ${STYLE_CFLAGS}" + +# +# 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 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking shared object configuration for loadable builtins" >&5 +$as_echo_n "checking shared object configuration for loadable builtins... " >&6; } + eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"` + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHOBJ_STATUS" >&5 +$as_echo "$SHOBJ_STATUS" >&6; } +else + SHOBJ_STATUS=unsupported + +fi + +# try to create a directory tree if the source is elsewhere +# this should be packaged into a script accessible via ${srcdir}/support +case "$srcdir" in +.) ;; +*) for d in doc tests support lib examples; do # dirs + test -d $d || mkdir $d + done + for ld in readline glob tilde malloc sh termcap; do # libdirs + test -d lib/$ld || mkdir lib/$ld + done + test -d examples/loadables || mkdir examples/loadables # loadable builtins + test -d examples/loadables/perl || mkdir examples/loadables/perl + ;; +esac + +BUILD_DIR=`pwd` +case "$BUILD_DIR" in +*\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;; +*) ;; +esac + +if test -z "$localedir"; then + localedir='${datarootdir}/locale' +fi +if test -z "$datarootdir"; then + datarootdir='${prefix}/share' +fi + + + + + + +# Some versions of autoconf don't substitute these automatically + + + +# directory where we install dynamically loadable builtins +if test -z "$loadablesdir"; then + loadablesdir='${libdir}/bash' +fi + +if test -z "$headersdir"; then + headersdir='$(includedir)/$(PACKAGE_NAME)' +fi + + + + + + + + + + + + + + + + + + + + +#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/Makefile.inc examples/loadables/perl/Makefile support/bash.pc support/bashbug.sh" + +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, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + 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}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# 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} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +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 + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by bash $as_me 5.1-release, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --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_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +bash config.status 5.1-release +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + 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 || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. + 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 || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "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/Makefile.inc") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile.inc" ;; + "examples/loadables/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; + "support/bash.pc") CONFIG_FILES="$CONFIG_FILES support/bash.pc" ;; + "support/bashbug.sh") CONFIG_FILES="$CONFIG_FILES support/bashbug.sh" ;; + "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + 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 against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #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. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "po-directories":C) + 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 + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + 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" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES 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" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + 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|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|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":C) +# Makefile uses this timestamp file to record whether config.h is up to date. +echo timestamp > stamp-h + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# 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 || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/bash-5.1/configure.ac b/bash-5.1/configure.ac new file mode 100644 index 0000000..aeb3d30 --- /dev/null +++ b/bash-5.1/configure.ac @@ -0,0 +1,1312 @@ +dnl +dnl Configure script for bash-5.1 +dnl +dnl report bugs to chet@po.cwru.edu +dnl +dnl Process this file with autoconf to produce a configure script. + +# Copyright (C) 1987-2020 Free Software Foundation, Inc. + +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +AC_REVISION([for Bash 5.1, version 5.022])dnl + +define(bashvers, 5.1) +define(relstatus, release) + +AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) + +dnl make sure we are using a recent autoconf version +AC_PREREQ(2.61) + +AC_CONFIG_SRCDIR(shell.h) +dnl where to find install.sh, config.sub, and config.guess +AC_CONFIG_AUX_DIR(./support) +AC_CONFIG_HEADERS(config.h) + +dnl checks for version info +BASHVERS=bashvers +RELSTATUS=relstatus + +dnl defaults for debug settings +case "$RELSTATUS" in +alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +*) DEBUG= MALLOC_DEBUG= ;; +esac + +dnl canonicalize the host and os so we can do some tricky things before +dnl parsing options +AC_CANONICAL_HOST +AC_CANONICAL_BUILD + +dnl configure defaults +opt_bash_malloc=yes +opt_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 +# mostly obsolete platforms +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 +*-dgux*) opt_bash_malloc=no ;; # DG/UX machines +sparc-svr4*) opt_bash_malloc=no ;; # sparc SVR4, SVR4.2 +m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir +*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins +*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft +*-beos*) opt_bash_malloc=no ;; # they say it's suitable +# These need additional investigation +sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF +*-aix*) opt_bash_malloc=no ;; # AIX machines +*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment +# These lack a working sbrk(2) +aarch64-freebsd*) opt_bash_malloc=no ;; +riscv*-freebsd*) opt_bash_malloc=no ;; +# Mach-derived systems have a ton of extra malloc functions and lack sbrk(2) +*-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep +*-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep +*-macos*) opt_bash_malloc=no ;; # Apple MacOS X +*-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X) +*-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X) +*-machten4) opt_bash_malloc=no ;; # MachTen 4.x +# Niche or non-mainstream-shell-user systems +*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x +*-nsk*) opt_bash_malloc=no ;; # HP NonStop +*-haiku*) opt_bash_malloc=no ;; # Haiku OS +*-genode*) opt_bash_malloc=no ;; # Genode has no sbrk +esac + +# memory scrambling on free() +case "${host_os}" in +sco3.2v5*|sco3.2v4*) opt_memscramble=no ;; +*) opt_memscramble=yes ;; +esac + +dnl +dnl macros for the bash debugger +dnl +dnl AM_PATH_LISPDIR +AC_ARG_VAR(DEBUGGER_START_FILE, [location of bash debugger initialization file]) + +dnl arguments to configure +dnl packages +AC_ARG_WITH(afs, AC_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval) +AC_ARG_WITH(bash-malloc, AC_HELP_STRING([--with-bash-malloc], [use the Bash version of malloc]), opt_bash_malloc=$withval) +AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval) +AC_ARG_WITH(gnu-malloc, AC_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), opt_bash_malloc=$withval) +AC_ARG_WITH(installed-readline, AC_HELP_STRING([--with-installed-readline], [use a version of the readline library that is already installed]), opt_with_installed_readline=$withval) + +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_afs" = yes; then + AC_DEFINE(AFS) +fi + +if test "$opt_curses" = yes; then + prefer_curses=yes +fi + +if test -z "${DEBUGGER_START_FILE}"; then + DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc' +fi + +dnl optional shell features in config.h.in +opt_minimal_config=no + +opt_job_control=yes +opt_alias=yes +opt_readline=yes +opt_history=yes +opt_bang_history=yes +opt_dirstack=yes +opt_restricted=yes +opt_process_subst=yes +opt_prompt_decoding=yes +opt_select=yes +opt_help=yes +opt_array_variables=yes +opt_dparen_arith=yes +opt_extended_glob=yes +opt_brace_expansion=yes +opt_disabled_builtins=no +opt_command_timing=yes +opt_xpg_echo=no +opt_strict_posix=no +opt_cond_command=yes +opt_cond_regexp=yes +opt_coproc=yes +opt_arith_for_command=yes +opt_net_redirs=yes +opt_progcomp=yes +opt_separate_help=no +opt_multibyte=yes +opt_debugger=yes +opt_single_longdoc_strings=yes +opt_casemod_attrs=yes +opt_casemod_expansions=yes +opt_extglob_default=no +opt_dircomplete_expand_default=no +opt_globascii_default=yes +opt_function_import=yes +opt_dev_fd_stat_broken=no + +dnl options that affect how bash is compiled and linked +opt_static_link=no +opt_profiling=no + +dnl argument parsing for optional features +AC_ARG_ENABLE(minimal-config, AC_HELP_STRING([--enable-minimal-config], [a minimal sh-like configuration]), opt_minimal_config=$enableval) + +dnl a minimal configuration turns everything off, but features can be +dnl added individually +if test $opt_minimal_config = yes; then + opt_job_control=no opt_alias=no opt_readline=no + opt_history=no opt_bang_history=no opt_dirstack=no + opt_restricted=no opt_process_subst=no opt_prompt_decoding=no + opt_select=no opt_help=no opt_array_variables=no opt_dparen_arith=no + opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no + opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no + opt_net_redirs=no opt_progcomp=no opt_separate_help=no + opt_multibyte=yes opt_cond_regexp=no opt_coproc=no + opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no + opt_globascii_default=yes +fi + +AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval) +AC_ARG_ENABLE(arith-for-command, AC_HELP_STRING([--enable-arith-for-command], [enable arithmetic for command]), opt_arith_for_command=$enableval) +AC_ARG_ENABLE(array-variables, AC_HELP_STRING([--enable-array-variables], [include shell array variables]), opt_array_variables=$enableval) +AC_ARG_ENABLE(bang-history, AC_HELP_STRING([--enable-bang-history], [turn on csh-style history substitution]), opt_bang_history=$enableval) +AC_ARG_ENABLE(brace-expansion, AC_HELP_STRING([--enable-brace-expansion], [include brace expansion]), opt_brace_expansion=$enableval) +AC_ARG_ENABLE(casemod-attributes, AC_HELP_STRING([--enable-casemod-attributes], [include case-modifying variable attributes]), opt_casemod_attrs=$enableval) +AC_ARG_ENABLE(casemod-expansions, AC_HELP_STRING([--enable-casemod-expansions], [include case-modifying word expansions]), opt_casemod_expansions=$enableval) +AC_ARG_ENABLE(command-timing, AC_HELP_STRING([--enable-command-timing], [enable the time reserved word and command timing]), opt_command_timing=$enableval) +AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the conditional command]), opt_cond_command=$enableval) +AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval) +AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval) +AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval) +AC_ARG_ENABLE(dev-fd-stat-broken, AC_HELP_STRING([--enable-dev-fd-stat-broken], [enable this option if stat on /dev/fd/N and fstat on file descriptor N don't return the same results]), opt_dev_fd_stat_broken=$enableval) +AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval) +AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval) +AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval) +AC_ARG_ENABLE(dparen-arithmetic, AC_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval) +AC_ARG_ENABLE(extended-glob, AC_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval) +AC_ARG_ENABLE(extended-glob-default, AC_HELP_STRING([--enable-extended-glob-default], [force extended pattern matching to be enabled by default]), opt_extglob_default=$enableval) +AC_ARG_ENABLE(function-import, AC_HELP_STRING([--enable-function-import], [allow bash to import exported function definitions by default]), opt_function_import=$enableval) +AC_ARG_ENABLE(glob-asciiranges-default, AC_HELP_STRING([--enable-glob-asciiranges-default], [force bracket range expressions in pattern matching to use the C locale by default]), opt_globascii_default=$enableval) +AC_ARG_ENABLE(help-builtin, AC_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval) +AC_ARG_ENABLE(history, AC_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval) +AC_ARG_ENABLE(job-control, AC_HELP_STRING([--enable-job-control], [enable job control features]), opt_job_control=$enableval) +AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval) +AC_ARG_ENABLE(net-redirections, AC_HELP_STRING([--enable-net-redirections], [enable /dev/tcp/host/port redirection]), opt_net_redirs=$enableval) +AC_ARG_ENABLE(process-substitution, AC_HELP_STRING([--enable-process-substitution], [enable process substitution]), opt_process_subst=$enableval) +AC_ARG_ENABLE(progcomp, AC_HELP_STRING([--enable-progcomp], [enable programmable completion and the complete builtin]), opt_progcomp=$enableval) +AC_ARG_ENABLE(prompt-string-decoding, AC_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval) +AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval) +AC_ARG_ENABLE(restricted, AC_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval) +AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval) +AC_ARG_ENABLE(separate-helpfiles, AC_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval) +AC_ARG_ENABLE(single-help-strings, AC_HELP_STRING([--enable-single-help-strings], [store help documentation as a single string to ease translation]), opt_single_longdoc_strings=$enableval) +AC_ARG_ENABLE(strict-posix-default, AC_HELP_STRING([--enable-strict-posix-default], [configure bash to be posix-conformant by default]), opt_strict_posix=$enableval) +AC_ARG_ENABLE(usg-echo-default, AC_HELP_STRING([--enable-usg-echo-default], [a synonym for --enable-xpg-echo-default]), opt_xpg_echo=$enableval) +AC_ARG_ENABLE(xpg-echo-default, AC_HELP_STRING([--enable-xpg-echo-default], [make the echo builtin expand escape sequences by default]), opt_xpg_echo=$enableval) + +dnl options that alter how bash is compiled and linked +AC_ARG_ENABLE(mem-scramble, AC_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to malloc and free]), opt_memscramble=$enableval) +AC_ARG_ENABLE(profiling, AC_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt_profiling=$enableval) +AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link bash statically, for use as a root shell]), opt_static_link=$enableval) + +dnl So-called `precious' variables +AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time]) +AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compilation options (CFLAGS) used when compiling binaries used only at build time]) +AC_ARG_VAR([LDFLAGS_FOR_BUILD], [Linker options (LDFLAGS) used when compiling binaries used only at build time]) +AC_ARG_VAR([CPPFLAGS_FOR_BUILD], [C preprocessor options (CPPFLAGS) used when compiling binaries used only at build time]) + +dnl opt_job_control is handled later, after BASH_JOB_CONTROL_MISSING runs + +dnl opt_readline and opt_history are handled later, because AC_PROG_CC needs +dnl to be run before we can check the version of an already-installed readline +dnl library + +if test $opt_alias = yes; then +AC_DEFINE(ALIAS) +fi +if test $opt_dirstack = yes; then +AC_DEFINE(PUSHD_AND_POPD) +fi +if test $opt_restricted = yes; then +AC_DEFINE(RESTRICTED_SHELL) +fi +if test $opt_process_subst = yes; then +AC_DEFINE(PROCESS_SUBSTITUTION) +fi +if test $opt_prompt_decoding = yes; then +AC_DEFINE(PROMPT_STRING_DECODE) +fi +if test $opt_select = yes; then +AC_DEFINE(SELECT_COMMAND) +fi +if test $opt_help = yes; then +AC_DEFINE(HELP_BUILTIN) +fi +if test $opt_array_variables = yes; then +AC_DEFINE(ARRAY_VARS) +fi +if test $opt_dparen_arith = yes; then +AC_DEFINE(DPAREN_ARITHMETIC) +fi +if test $opt_brace_expansion = yes; then +AC_DEFINE(BRACE_EXPANSION) +fi +if test $opt_disabled_builtins = yes; then +AC_DEFINE(DISABLED_BUILTINS) +fi +if test $opt_command_timing = yes; then +AC_DEFINE(COMMAND_TIMING) +fi +if test $opt_xpg_echo = yes ; then +AC_DEFINE(DEFAULT_ECHO_TO_XPG) +fi +if test $opt_strict_posix = yes; then +AC_DEFINE(STRICT_POSIX) +fi +if test $opt_extended_glob = yes ; then +AC_DEFINE(EXTENDED_GLOB) +fi +if test $opt_extglob_default = yes; then +AC_DEFINE(EXTGLOB_DEFAULT, 1) +else +AC_DEFINE(EXTGLOB_DEFAULT, 0) +fi +if test $opt_cond_command = yes ; then +AC_DEFINE(COND_COMMAND) +fi +if test $opt_cond_regexp = yes ; then +AC_DEFINE(COND_REGEXP) +fi +if test $opt_coproc = yes; then +AC_DEFINE(COPROCESS_SUPPORT) +fi +if test $opt_arith_for_command = yes; then +AC_DEFINE(ARITH_FOR_COMMAND) +fi +if test $opt_net_redirs = yes; then +AC_DEFINE(NETWORK_REDIRECTIONS) +fi +if test $opt_progcomp = yes; then +AC_DEFINE(PROGRAMMABLE_COMPLETION) +fi +if test $opt_multibyte = no; then +AC_DEFINE(NO_MULTIBYTE_SUPPORT) +fi +if test $opt_debugger = yes; then +AC_DEFINE(DEBUGGER) +fi +if test $opt_casemod_attrs = yes; then +AC_DEFINE(CASEMOD_ATTRS) +fi +if test $opt_casemod_expansions = yes; then +AC_DEFINE(CASEMOD_EXPANSIONS) +fi +if test $opt_dircomplete_expand_default = yes; then +AC_DEFINE(DIRCOMPLETE_EXPAND_DEFAULT) +fi +if test $opt_globascii_default = yes; then +AC_DEFINE(GLOBASCII_DEFAULT, 1) +else +AC_DEFINE(GLOBASCII_DEFAULT, 0) +fi +if test $opt_function_import = yes; then +AC_DEFINE(FUNCTION_IMPORT) +fi +if test $opt_dev_fd_stat_broken = yes; then +AC_DEFINE(DEV_FD_STAT_BROKEN) +fi + +if test $opt_memscramble = yes; then +AC_DEFINE(MEMSCRAMBLE) +fi + +if test "$opt_minimal_config" = yes; then + TESTSCRIPT=run-minimal +else + TESTSCRIPT=run-all +fi + +HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET= +if test "$opt_separate_help" != no; then + if test "$opt_separate_help" = "yes" ; then + HELPDIR='${datadir}/bash' + else + HELPDIR=$opt_separate_help + fi + HELPDIRDEFINE='-H ${HELPDIR}' + HELPINSTALL='install-help' + HELPFILES_TARGET='helpdoc' +fi +HELPSTRINGS= +if test "$opt_single_longdoc_strings" != "yes"; then + HELPSTRINGS='-S' +fi + +dnl now substitute in the values generated by arguments +AC_SUBST(TESTSCRIPT) +AC_SUBST(MALLOC_TARGET) +AC_SUBST(MALLOC_SRC) + +AC_SUBST(MALLOC_LIB) +AC_SUBST(MALLOC_LIBRARY) +AC_SUBST(MALLOC_LDFLAGS) +AC_SUBST(MALLOC_DEP) + +AC_SUBST(htmldir) + +AC_SUBST(HELPDIR) +AC_SUBST(HELPDIRDEFINE) +AC_SUBST(HELPINSTALL) +AC_SUBST(HELPFILES_TARGET) +AC_SUBST(HELPSTRINGS) + +dnl We want these before the checks, so the checks can modify their values. +if test -z "$CFLAGS"; then + want_auto_cflags=1 +fi + +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 + +if test -n "$want_auto_cflags"; then + AUTO_CFLAGS="-g ${GCC+-O2}" + AUTO_LDFLAGS="-g ${GCC+-O2}" + STYLE_CFLAGS="${GCC+-Wno-parentheses} ${GCC+-Wno-format-security}" +else + AUTO_CFLAGS= AUTO_LDFLAGS= STYLE_CFLAGS= +fi + +dnl test for Unix variants +AC_ISC_POSIX +AC_MINIX + +AC_SYS_LARGEFILE + +dnl BEGIN changes for cross-building (currently cygwin, minGW, and +dnl (obsolete) BeOS) + +SIGNAMES_O= +SIGNAMES_H=lsignames.h + +dnl load up the cross-building cache file -- add more cases and cache +dnl files as necessary + +dnl Note that host and target machine are the same, and different than the +dnl build machine. +dnl Set SIGNAMES_H based on whether or not we're cross-compiling. + +CROSS_COMPILE= +if test "x$cross_compiling" = "xyes"; then + case "${host}" in + *-cygwin*) + cross_cache=${srcdir}/cross-build/cygwin32.cache + ;; + *-mingw*) + cross_cache=${srcdir}/cross-build/cygwin32.cache + ;; + i[[3456]]86-*-beos*) + cross_cache=${srcdir}/cross-build/x86-beos.cache + ;; + *-qnx*) + cross_cache=${srcdir}/cross-build/qnx.cache + ;; + *) echo "configure: cross-compiling for $host is not supported" >&2 + ;; + esac + if test -n "${cross_cache}" && test -r "${cross_cache}"; then + echo "loading cross-build cache file ${cross_cache}" + . ${cross_cache} + fi + unset cross_cache + SIGNAMES_O='signames.o' + CROSS_COMPILE='-DCROSS_COMPILING' + AC_SUBST(CROSS_COMPILE) +fi +AC_SUBST(SIGNAMES_H) +AC_SUBST(SIGNAMES_O) + +dnl END changes for cross-building + +dnl default values +CFLAGS=${CFLAGS-"$AUTO_CFLAGS"} +# LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX + +dnl handle options that alter how bash is compiled and linked +dnl these must come after the test for cc/gcc +if test "$opt_profiling" = "yes"; then + PROFILE_FLAGS=-pg + case "$host_os" in + solaris2*|linux*) ;; + *) opt_static_link=yes ;; + esac + DEBUG= MALLOC_DEBUG= +fi + +prefer_shared=yes +prefer_static=no + +if test "$opt_static_link" = yes; then + prefer_static=yes + prefer_shared=no + # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2 + if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then + STATIC_LD="-static" + case "$host_os" in + solaris2*|linux*) ;; + *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental + esac + fi +fi + +# set the appropriate make variables for building the "build tools" +# modify defaults based on whether or not we are cross compiling, since the +# options for the target host may not be appropriate for the build host +if test "X$cross_compiling" = "Xno"; then + CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'} + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)' + if test X"$opt_profiling" = Xyes; then + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(BASE_LDFLAGS)'} + else + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} + fi + # CFLAGS set above to default value if not passed in environment + if test -n "$want_auto_cflags" ; then + CFLAGS_FOR_BUILD="${CFLAGS} ${STYLE_CFLAGS}" + else + CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'} + fi + LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'} +else + CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"} + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""} + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""} + CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"} + LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""} +fi + +AC_SUBST(CFLAGS) +AC_SUBST(CPPFLAGS) +AC_SUBST(LDFLAGS) +AC_SUBST(STATIC_LD) + +AC_SUBST(CC_FOR_BUILD) +AC_SUBST(CFLAGS_FOR_BUILD) +AC_SUBST(CPPFLAGS_FOR_BUILD) +AC_SUBST(LDFLAGS_FOR_BUILD) +AC_SUBST(LIBS_FOR_BUILD) + +AC_PROG_GCC_TRADITIONAL + +dnl BEGIN READLINE and HISTORY LIBRARY SECTION +dnl prepare to allow bash to be linked against an already-installed readline + +dnl first test that the readline version is new enough to link bash against +if test "$opt_readline" = yes && test "$opt_with_installed_readline" != "no" +then + # If the user specified --with-installed-readline=PREFIX and PREFIX + # is not `yes', set ac_cv_rl_prefix to PREFIX + test $opt_with_installed_readline != "yes" && ac_cv_rl_prefix=$opt_with_installed_readline + + RL_LIB_READLINE_VERSION + + case "$ac_cv_rl_version" in + 8*|9*) ;; + *) opt_with_installed_readline=no + AC_MSG_WARN([installed readline library is too old to be linked with bash]) + AC_MSG_WARN([using private bash version]) + ;; + esac +fi + +TILDE_LIB=-ltilde +if test $opt_readline = yes; then + AC_DEFINE(READLINE) + if test "$opt_with_installed_readline" != "no" ; then + case "$opt_with_installed_readline" in + yes) RL_INCLUDE= ;; + *) case "$RL_INCLUDEDIR" in + /usr/include) ;; + *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;; + esac + ;; + esac + READLINE_DEP= + READLINE_LIB=-lreadline + # section for OS versions that don't allow unresolved symbols + # to be compiled into dynamic libraries. + case "$host_os" in + cygwin*) TILDE_LIB= ;; + esac + else + RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + READLINE_DEP='$(READLINE_LIBRARY)' + # section for OS versions that ship an older/broken version of + # readline as a standard dynamic library and don't allow a + # static version specified as -llibname to override the + # dynamic version + case "${host_os}" in + darwin[[89]]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;; + *) READLINE_LIB=-lreadline ;; + esac + fi +else + RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + READLINE_LIB= READLINE_DEP= +fi +if test $opt_history = yes || test $opt_bang_history = yes; then + if test $opt_history = yes; then + AC_DEFINE(HISTORY) + fi + if test $opt_bang_history = yes; then + AC_DEFINE(BANG_HISTORY) + fi + if test "$opt_with_installed_readline" != "no"; then + HIST_LIBDIR=$RL_LIBDIR + HISTORY_DEP= + HISTORY_LIB=-lhistory + case "$opt_with_installed_readline" in + yes) RL_INCLUDE= ;; + *) case "$RL_INCLUDEDIR" in + /usr/include) ;; + *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;; + esac + ;; + esac + else + HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + HISTORY_DEP='$(HISTORY_LIBRARY)' + # section for OS versions that ship an older version of + # readline as a standard dynamic library and don't allow a + # static version specified as -llibname to override the + # dynamic version + case "${host_os}" in + darwin[[89]]*|darwin10*) HISTORY_LIB='${HISTORY_LIBRARY}' ;; + *) HISTORY_LIB=-lhistory ;; + esac + fi +else + HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' + HISTORY_LIB= HISTORY_DEP= +fi +AC_SUBST(READLINE_LIB) +AC_SUBST(READLINE_DEP) +AC_SUBST(RL_LIBDIR) +AC_SUBST(RL_INCLUDEDIR) +AC_SUBST(RL_INCLUDE) +AC_SUBST(HISTORY_LIB) +AC_SUBST(HISTORY_DEP) +AC_SUBST(HIST_LIBDIR) +AC_SUBST(TILDE_LIB) + +dnl END READLINE and HISTORY LIBRARY SECTION + +dnl programs needed by the build and install process +AC_PROG_INSTALL +AC_CHECK_TOOL(AR, ar) +dnl Set default for ARFLAGS, since autoconf does not have a macro for it. +dnl This allows people to set it when running configure or make +test -n "$ARFLAGS" || ARFLAGS="cr" +AC_PROG_RANLIB +AC_PROG_YACC +AC_PROG_MAKE_SET + +case "$ac_cv_prog_YACC" in +*bison*) ;; +*) AC_MSG_WARN([bison not available; needed to process parse.y]) ;; +esac + +case "$host_os" in +opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;; +*) MAKE_SHELL=/bin/sh ;; +esac +AC_SUBST(MAKE_SHELL) + +dnl this is similar to the expanded AC_PROG_RANLIB +if test x$SIZE = x; then + if test x$ac_tool_prefix = x; then + SIZE=size + else + SIZE=${ac_tool_prefix}size + save_IFS=$IFS ; IFS=: + size_found=0 + for dir in $PATH; do + if test -x $dir/$SIZE ; then + size_found=1 + break + fi + done + if test $size_found -eq 0; then + SIZE=: + fi + IFS=$save_IFS + fi +fi +AC_SUBST(SIZE) + +m4_include([m4/stat-time.m4]) +m4_include([m4/timespec.m4]) + +dnl include files for gettext + +m4_include([m4/codeset.m4]) +m4_include([m4/extern-inline.m4]) +m4_include([m4/fcntl-o.m4]) +m4_include([m4/gettext.m4]) +m4_include([m4/glibc2.m4]) +m4_include([m4/glibc21.m4]) +m4_include([m4/host-cpu-c-abi.m4]) +m4_include([m4/iconv.m4]) +m4_include([m4/intdiv0.m4]) +m4_include([m4/intl.m4]) +m4_include([m4/intlmacosx.m4]) +m4_include([m4/intl-thread-locale.m4]) +m4_include([m4/intmax.m4]) +m4_include([m4/inttypes-pri.m4]) +m4_include([m4/inttypes.m4]) +m4_include([m4/inttypes_h.m4]) +m4_include([m4/lcmessage.m4]) +m4_include([m4/lib-ld.m4]) +m4_include([m4/lib-link.m4]) +m4_include([m4/lib-prefix.m4]) +m4_include([m4/lock.m4]) +m4_include([m4/nls.m4]) +m4_include([m4/po.m4]) +m4_include([m4/printf-posix.m4]) +m4_include([m4/progtest.m4]) +m4_include([m4/pthread_rwlock_rdlock.m4]) +m4_include([m4/size_max.m4]) +m4_include([m4/stdint_h.m4]) +m4_include([m4/threadlib.m4]) +m4_include([m4/uintmax_t.m4]) +m4_include([m4/ulonglong.m4]) +m4_include([m4/visibility.m4]) +m4_include([m4/wchar_t.m4]) +m4_include([m4/wint_t.m4]) +m4_include([m4/xsize.m4]) + +dnl Turn on any extensions available in the GNU C library. +AC_DEFINE(_GNU_SOURCE, 1) + +dnl C compiler characteristics +AC_C_CONST +AC_C_INLINE +AC_C_BIGENDIAN +AC_C_STRINGIZE +AC_C_LONG_DOUBLE +AC_C_PROTOTYPES +AC_C_CHAR_UNSIGNED +AC_C_VOLATILE +AC_C_RESTRICT + +dnl initialize GNU gettext +AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl]) + +dnl header files +AC_HEADER_DIRENT +AC_HEADER_TIME +AC_HEADER_MAJOR + +BASH_HEADER_INTTYPES + +AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ + memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ + stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \ + regex.h syslog.h ulimit.h) +AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \ + sys/mman.h sys/param.h sys/random.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 SunOS 4 needs to include before to compile +dnl autoconf complains about presence but inability to compile +AC_CHECK_HEADER(sys/resource.h, AC_DEFINE(HAVE_SYS_RESOURCE_H), [], [[ +#if HAVE_SYS_TIME_H +# include +#endif +]]) + +dnl special checks for libc functions +AC_FUNC_ALLOCA +AC_FUNC_CHOWN +AC_FUNC_GETPGRP +AC_FUNC_SETVBUF_REVERSED +AC_FUNC_VPRINTF +AC_FUNC_STRCOLL + +dnl if we're not using the bash malloc but require the C alloca, set things +dnl up to build a libmalloc.a containing only alloca.o + +if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; then + MALLOC_TARGET=alloca + MALLOC_SRC=alloca.c + + MALLOC_LIB='-lmalloc' + MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a' + MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)' + MALLOC_DEP='$(MALLOC_LIBRARY)' +fi + +dnl if vprintf is not in libc, see if it's defined in stdio.h +if test "$ac_cv_func_vprintf" = no; then + AC_MSG_CHECKING(for declaration of vprintf in stdio.h) + AC_EGREP_HEADER([[int[ ]*vprintf[^a-zA-Z0-9]]],stdio.h,ac_cv_func_vprintf=yes) + AC_MSG_RESULT($ac_cv_func_vprintf) + if test $ac_cv_func_vprintf = yes; then + AC_DEFINE(HAVE_VPRINTF) + fi +fi + +if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then + AC_LIBOBJ(vprint) +fi + +dnl signal stuff +AC_TYPE_SIGNAL + +dnl checks for certain version-specific system calls and libc functions +AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE)) +AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3)) + +dnl checks for missing libc functions +AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING)) + +dnl checks for system calls +AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getentropy getgroups \ + gethostname getpagesize getpeername getrandom getrlimit \ + getrusage gettimeofday kill killpg lstat pselect readlink \ + select setdtablesize setitimer tcgetpgrp uname ulimit waitpid pread) +AC_REPLACE_FUNCS(rename) + +dnl checks for c library functions +AC_CHECK_FUNCS(bcopy bzero confstr faccessat fnmatch \ + getaddrinfo gethostbyname getservbyname getservent inet_aton \ + imaxdiv memmove pathconf putenv raise random regcomp regexec \ + setenv setlinebuf setlocale setvbuf siginterrupt strchr \ + sysconf syslog tcgetattr times ttyname tzset unsetenv) + +AC_CHECK_FUNCS(vasprintf asprintf) +AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit) +AC_CHECK_FUNCS(getpwent getpwnam getpwuid) +AC_CHECK_FUNCS(mkstemp mkdtemp) +AC_CHECK_FUNCS(arc4random) + +AC_REPLACE_FUNCS(getcwd memset) +AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr) +AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax) +AC_REPLACE_FUNCS(dprintf) +AC_REPLACE_FUNCS(strchrnul) +AC_REPLACE_FUNCS(strdup) + +AC_CHECK_HEADERS(libaudit.h) +AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include ]]) + +AC_CHECK_DECLS([confstr]) +AC_CHECK_DECLS([printf]) +AC_CHECK_DECLS([sbrk]) +AC_CHECK_DECLS([setregid]) +dnl AC_CHECK_DECLS[(setresuid]) +dnl AC_CHECK_DECLS[(setresgid]) +AC_CHECK_DECLS([strcpy]) +AC_CHECK_DECLS([strsignal]) + +AC_CHECK_FUNCS(setresuid setresgid) + +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 ], + [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 mremap stpcpy strcspn]) + +INTL_DEP= INTL_INC= LIBINTL_H= +if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then + INTL_DEP='${INTL_LIBDIR}/libintl.a' + INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}' + LIBINTL_H='${INTL_BUILDDIR}/libintl.h' +fi +AC_SUBST(INTL_DEP) +AC_SUBST(INTL_INC) +AC_SUBST(LIBINTL_H) + +dnl +dnl End of checks needed by files in lib/intl +dnl + +BASH_CHECK_MULTIBYTE + +dnl checks for the dynamic loading library functions in libc and libdl +if test "$opt_static_link" != yes; then +AC_CHECK_LIB(dl, dlopen) +AC_CHECK_FUNCS(dlopen dlclose dlsym) +fi + +dnl this defines HAVE_DECL_SYS_SIGLIST +AC_DECL_SYS_SIGLIST + +dnl network functions -- check for inet_aton again +if test "$ac_cv_func_inet_aton" != 'yes'; then +BASH_FUNC_INET_ATON +fi + +dnl libraries +dnl this is reportedly no longer necessary for irix[56].? +case "$host_os" in +irix4*) AC_CHECK_LIB(sun, getpwent) ;; +esac + +dnl check for getpeername in the socket library only if it's not in libc +if test "$ac_cv_func_getpeername" = no; then + BASH_CHECK_LIB_SOCKET +fi +dnl check for gethostbyname in socket libraries if it's not in libc +if test "$ac_cv_func_gethostbyname" = no; then + BASH_FUNC_GETHOSTBYNAME +fi + +dnl system types +AC_TYPE_GETGROUPS +AC_TYPE_OFF_T +AC_TYPE_MODE_T +AC_TYPE_UID_T +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_TYPE_UINTPTR_T + +AC_CHECK_TYPE(ssize_t, int) +AC_CHECK_TYPE(time_t, long) + +BASH_TYPE_LONG_LONG +BASH_TYPE_UNSIGNED_LONG_LONG + +AC_TYPE_SIGNAL +BASH_TYPE_SIG_ATOMIC_T + +AC_CHECK_SIZEOF(char, 1) +AC_CHECK_SIZEOF(short, 2) +AC_CHECK_SIZEOF(int, 4) +AC_CHECK_SIZEOF(long, 4) +AC_CHECK_SIZEOF(char *, 4) +AC_CHECK_SIZEOF(double, 8) +AC_CHECK_SIZEOF([long long], 8) + +AC_CHECK_TYPE(u_int, [unsigned int]) +AC_CHECK_TYPE(u_long, [unsigned long]) + +BASH_TYPE_BITS16_T +BASH_TYPE_U_BITS16_T +BASH_TYPE_BITS32_T +BASH_TYPE_U_BITS32_T +BASH_TYPE_BITS64_T + +BASH_TYPE_PTRDIFF_T + +dnl structures +AC_HEADER_STAT + +dnl system services +AC_SYS_INTERPRETER +if test $ac_cv_sys_interpreter = yes; then +AC_DEFINE(HAVE_HASH_BANG_EXEC) +fi + +dnl Miscellaneous Bash tests +if test "$ac_cv_func_lstat" = "no"; then +BASH_FUNC_LSTAT +fi + +dnl behavior of system calls and library functions +BASH_FUNC_CTYPE_NONASCII +BASH_FUNC_DUP2_CLOEXEC_CHECK +BASH_SYS_PGRP_SYNC +BASH_SYS_SIGNAL_VINTAGE + +AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include ]]) + +dnl checking for the presence of certain library symbols +BASH_SYS_ERRLIST +BASH_SYS_SIGLIST +BASH_UNDER_SYS_SIGLIST + +dnl various system types +BASH_TYPE_SIGHANDLER +BASH_CHECK_TYPE(clock_t, [#include ], long) +BASH_CHECK_TYPE(sigset_t, [#include ], int) +BASH_CHECK_TYPE(sig_atomic_t, [#include ], int) +BASH_CHECK_TYPE(quad_t, , long, HAVE_QUAD_T) +BASH_CHECK_TYPE(intmax_t, , $bash_cv_type_long_long) +BASH_CHECK_TYPE(uintmax_t, , $bash_cv_type_unsigned_long_long) +if test "$ac_cv_header_sys_socket_h" = "yes"; then +BASH_CHECK_TYPE(socklen_t, [#include ], [unsigned int], HAVE_SOCKLEN_T) +fi +BASH_TYPE_RLIMIT + +AC_CHECK_SIZEOF(intmax_t, 8) + +dnl presence and contents of structures used by system calls +BASH_STRUCT_TERMIOS_LDISC +BASH_STRUCT_TERMIO_LDISC +BASH_STRUCT_DIRENT_D_INO +BASH_STRUCT_DIRENT_D_FILENO +BASH_STRUCT_DIRENT_D_NAMLEN +BASH_STRUCT_WINSIZE +BASH_STRUCT_TIMEVAL +AC_CHECK_MEMBERS([struct stat.st_blocks]) +AC_STRUCT_TM +AC_STRUCT_TIMEZONE +BASH_STRUCT_TIMEZONE + +BASH_STRUCT_WEXITSTATUS_OFFSET + +BASH_CHECK_TYPE_STRUCT_TIMESPEC +BASH_STAT_TIME + +dnl checks for system calls +BASH_FUNC_SBRK + +dnl presence and behavior of C library functions +BASH_FUNC_STRSIGNAL +BASH_FUNC_OPENDIR_CHECK +BASH_FUNC_ULIMIT_MAXFDS +BASH_FUNC_FPURGE +BASH_FUNC_GETENV +if test "$ac_cv_func_getcwd" = "yes"; then +BASH_FUNC_GETCWD +fi +BASH_FUNC_POSIX_SETJMP +BASH_FUNC_STRCOLL +BASH_FUNC_SNPRINTF +BASH_FUNC_VSNPRINTF + +dnl If putenv or unsetenv is not present, set the right define so the +dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant + +if test "$ac_cv_func_putenv" = "yes"; then +BASH_FUNC_STD_PUTENV +else +AC_DEFINE(HAVE_STD_PUTENV) +fi +if test "$ac_cv_func_unsetenv" = "yes"; then +BASH_FUNC_STD_UNSETENV +else +AC_DEFINE(HAVE_STD_UNSETENV) +fi + +BASH_FUNC_PRINTF_A_FORMAT + +BASH_FUNC_FNMATCH_EQUIV_FALLBACK + +dnl presence and behavior of OS functions +BASH_SYS_REINSTALL_SIGHANDLERS +BASH_SYS_JOB_CONTROL_MISSING +BASH_SYS_NAMED_PIPES + +dnl presence of certain CPP defines +AC_HEADER_TIOCGWINSZ +BASH_HAVE_TIOCSTAT +BASH_HAVE_FIONREAD + +BASH_CHECK_WCONTINUED + +dnl miscellaneous +BASH_CHECK_SPEED_T +BASH_CHECK_GETPW_FUNCS +BASH_CHECK_RTSIGS +BASH_CHECK_SYS_SIGLIST + +dnl special checks +case "$host_os" in +hpux*) BASH_CHECK_KERNEL_RLIMIT ;; +esac + +if test "$opt_readline" = yes; then +dnl yuck +case "$host_os" in +aix*) prefer_curses=yes ;; +esac +BASH_CHECK_LIB_TERMCAP +fi +AC_SUBST(TERMCAP_LIB) +AC_SUBST(TERMCAP_DEP) + +BASH_CHECK_DEV_FD +BASH_CHECK_DEV_STDIN +BASH_SYS_DEFAULT_MAIL_DIR + +if test "$bash_cv_job_control_missing" = missing; then + opt_job_control=no +fi + +if test "$opt_job_control" = yes; then +AC_DEFINE(JOB_CONTROL) +JOBS_O=jobs.o +else +JOBS_O=nojobs.o +fi + +AC_SUBST(JOBS_O) + +dnl Defines that we want to propagate to the Makefiles in subdirectories, +dnl like glob and readline + +LOCAL_DEFS=-DSHELL + +dnl use this section to possibly define more cpp variables, specify local +dnl libraries, and specify any additional local cc or ld flags +dnl +dnl most of these are really old; 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 -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;; +hpux*) LOCAL_CFLAGS="-DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;; +dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;; +isc*) LOCAL_CFLAGS=-Disc386 ;; +rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;; +darwin*) LOCAL_CFLAGS=-DMACOSX ;; +sco3.2v5*) LOCAL_CFLAGS="-b elf -DWAITPID_BROKEN -DPATH_MAX=1024" ;; +sco3.2v4*) LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;; +sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; +sunos4*) LOCAL_CFLAGS=-DSunOS4 ;; +solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;; +solaris2.8*) LOCAL_CFLAGS=-DSOLARIS ;; +solaris2.9*) LOCAL_CFLAGS=-DSOLARIS ;; +solaris2.10*) LOCAL_CFLAGS=-DSOLARIS ;; +solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; +lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading + case "`uname -r`" in + 1.*|2.[[0123]]*) : ;; + *) AC_DEFINE(PGRP_PIPE) ;; + esac ;; +netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;; +freebsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;; +*qnx[[67]]*) LOCAL_LIBS="-lncurses" ;; +*qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; +powerux*) LOCAL_LIBS="-lgen" ;; +cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; +opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE -DRECYCLES_PIDS" ;; +*openstep*) LOCAL_CFLAGS="-D__APPLE_CC__" ;; +esac + +dnl Stanza for OS/compiler pair-specific flags +case "${host_os}-${CC}" in +aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;; +aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;; +bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux +bsdi5*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux +hpux11*-gcc*) LOCAL_LDFLAGS="-Wl,-E" ;; # allow dynamic loading +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 + +# turn off paren warnings in gcc +CFLAGS="$CFLAGS ${STYLE_CFLAGS}" + +# +# 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) +else + SHOBJ_STATUS=unsupported + AC_SUBST(SHOBJ_STATUS) +fi + +# try to create a directory tree if the source is elsewhere +# this should be packaged into a script accessible via ${srcdir}/support +case "$srcdir" in +.) ;; +*) for d in doc tests support lib examples; do # dirs + test -d $d || mkdir $d + done + for ld in readline glob tilde malloc sh termcap; do # libdirs + test -d lib/$ld || mkdir lib/$ld + done + test -d examples/loadables || mkdir examples/loadables # loadable builtins + test -d examples/loadables/perl || mkdir examples/loadables/perl + ;; +esac + +BUILD_DIR=`pwd` +case "$BUILD_DIR" in +*\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;; +*) ;; +esac + +if test -z "$localedir"; then + localedir='${datarootdir}/locale' +fi +if test -z "$datarootdir"; then + datarootdir='${prefix}/share' +fi + +AC_SUBST(PROFILE_FLAGS) + +AC_SUBST(incdir) +AC_SUBST(BUILD_DIR) + +# Some versions of autoconf don't substitute these automatically +AC_SUBST(datarootdir) +AC_SUBST(localedir) + +# directory where we install dynamically loadable builtins +if test -z "$loadablesdir"; then + loadablesdir='${libdir}/bash' +fi +AC_SUBST(loadablesdir) +if test -z "$headersdir"; then + headersdir='$(includedir)/$(PACKAGE_NAME)' +fi +AC_SUBST(headersdir) + +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/Makefile.inc \ + examples/loadables/perl/Makefile \ + support/bash.pc support/bashbug.sh], +[ +# Makefile uses this timestamp file to record whether config.h is up to date. +echo timestamp > stamp-h +]) diff --git a/bash-5.1/conftypes.h b/bash-5.1/conftypes.h new file mode 100644 index 0000000..1c8c548 --- /dev/null +++ b/bash-5.1/conftypes.h @@ -0,0 +1,58 @@ +/* conftypes.h -- defines for build and host system. */ + +/* Copyright (C) 2001, 2005, 2008,2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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-5.1/copy_cmd.c b/bash-5.1/copy_cmd.c new file mode 100644 index 0000000..758ff23 --- /dev/null +++ b/bash-5.1/copy_cmd.c @@ -0,0 +1,459 @@ +/* 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-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#include "shell.h" + +static PATTERN_LIST *copy_case_clause PARAMS((PATTERN_LIST *)); +static PATTERN_LIST *copy_case_clauses PARAMS((PATTERN_LIST *)); +static FOR_COM *copy_for_command PARAMS((FOR_COM *)); +#if defined (ARITH_FOR_COMMAND) +static ARITH_FOR_COM *copy_arith_for_command PARAMS((ARITH_FOR_COM *)); +#endif +static GROUP_COM *copy_group_command PARAMS((GROUP_COM *)); +static SUBSHELL_COM *copy_subshell_command PARAMS((SUBSHELL_COM *)); +static COPROC_COM *copy_coproc_command PARAMS((COPROC_COM *)); +static CASE_COM *copy_case_command PARAMS((CASE_COM *)); +static WHILE_COM *copy_while_command PARAMS((WHILE_COM *)); +static IF_COM *copy_if_command PARAMS((IF_COM *)); +#if defined (DPAREN_ARITHMETIC) +static ARITH_COM *copy_arith_command PARAMS((ARITH_COM *)); +#endif +#if defined (COND_COMMAND) +static COND_COM *copy_cond_command PARAMS((COND_COM *)); +#endif +static SIMPLE_COM *copy_simple_command PARAMS((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, *tl; + + for (new_list = tl = (WORD_LIST *)NULL; list; list = list->next) + { + if (new_list == 0) + new_list = tl = make_word_list (copy_word (list->word), new_list); + else + { + tl->next = make_word_list (copy_word (list->word), (WORD_LIST *)NULL); + tl = tl->next; + } + } + + return (new_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); + new_clause->flags = clause->flags; + 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)); +#if 0 + FASTCOPY ((char *)redirect, (char *)new_redirect, (sizeof (REDIRECT))); +#else + *new_redirect = *redirect; /* let the compiler do the fast structure copy */ +#endif + + if (redirect->rflags & REDIR_VARASSIGN) + new_redirect->redirector.filename = copy_word (redirect->redirector.filename); + + switch (redirect->instruction) + { + case r_reading_until: + case r_deblank_reading_until: + new_redirect->here_doc_eof = redirect->here_doc_eof ? savestring (redirect->here_doc_eof) : 0; + /*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_append_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; + new_subshell->line = com->line; + return (new_subshell); +} + +static COPROC_COM * +copy_coproc_command (com) + COPROC_COM *com; +{ + COPROC_COM *new_coproc; + + new_coproc = (COPROC_COM *)xmalloc (sizeof (COPROC_COM)); + new_coproc->name = savestring (com->name); + new_coproc->command = copy_command (com->command); + new_coproc->flags = com->flags; + return (new_coproc); +} + +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_coproc: + new_command->value.Coproc = copy_coproc_command (command->value.Coproc); + 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-5.1/cross-build/cygwin32.cache b/bash-5.1/cross-build/cygwin32.cache new file mode 100644 index 0000000..36948da --- /dev/null +++ b/bash-5.1/cross-build/cygwin32.cache @@ -0,0 +1,251 @@ +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overriden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +ac_cv_build=${ac_cv_build='i686-pc-cygwin'} +ac_cv_build_alias=${ac_cv_build_alias='i686-pc-cygwin'} +ac_cv_c_bigendian=${ac_cv_c_bigendian='no'} +ac_cv_c_char_unsigned=${ac_cv_c_char_unsigned='no'} +ac_cv_c_compiler_gnu=${ac_cv_c_compiler_gnu='yes'} +ac_cv_c_const=${ac_cv_c_const='yes'} +ac_cv_c_inline=${ac_cv_c_inline='inline'} +ac_cv_c_long_double=${ac_cv_c_long_double='yes'} +ac_cv_c_stringize=${ac_cv_c_stringize='yes'} +ac_cv_decl_sys_siglist=${ac_cv_decl_sys_siglist='no'} +ac_cv_exeext=${ac_cv_exeext='.exe'} +ac_cv_func___setostype=${ac_cv_func___setostype='no'} +ac_cv_func__doprnt=${ac_cv_func__doprnt='no'} +ac_cv_func_alloca_works=${ac_cv_func_alloca_works='yes'} +ac_cv_func_asprintf=${ac_cv_func_asprintf='no'} +ac_cv_func_bcopy=${ac_cv_func_bcopy='yes'} +ac_cv_func_bindtextdomain=${ac_cv_func_bindtextdomain='no'} +ac_cv_func_bzero=${ac_cv_func_bzero='yes'} +ac_cv_func_confstr=${ac_cv_func_confstr='no'} +ac_cv_func_dlclose=${ac_cv_func_dlclose='yes'} +ac_cv_func_dlopen=${ac_cv_func_dlopen='yes'} +ac_cv_func_dlsym=${ac_cv_func_dlsym='yes'} +ac_cv_func_dup2=${ac_cv_func_dup2='yes'} +ac_cv_func_fnmatch=${ac_cv_func_fnmatch='no'} +ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo='no'} +ac_cv_func_getcwd=${ac_cv_func_getcwd='yes'} +ac_cv_func_getdtablesize=${ac_cv_func_getdtablesize='yes'} +ac_cv_func_getgroups=${ac_cv_func_getgroups='yes'} +ac_cv_func_gethostbyname=${ac_cv_func_gethostbyname='yes'} +ac_cv_func_gethostname=${ac_cv_func_gethostname='yes'} +ac_cv_func_getpagesize=${ac_cv_func_getpagesize='yes'} +ac_cv_func_getpeername=${ac_cv_func_getpeername='yes'} +ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void='yes'} +ac_cv_func_getrlimit=${ac_cv_func_getrlimit='yes'} +ac_cv_func_getrusage=${ac_cv_func_getrusage='yes'} +ac_cv_func_getservbyname=${ac_cv_func_getservbyname='yes'} +ac_cv_func_gettext=${ac_cv_func_gettext='no'} +ac_cv_func_gettimeofday=${ac_cv_func_gettimeofday='yes'} +ac_cv_func_inet_aton=${ac_cv_func_inet_aton='yes'} +ac_cv_func_isascii=${ac_cv_func_isascii='yes'} +ac_cv_func_isblank=${ac_cv_func_isblank='no'} +ac_cv_func_isgraph=${ac_cv_func_isgraph='yes'} +ac_cv_func_isprint=${ac_cv_func_isprint='yes'} +ac_cv_func_isspace=${ac_cv_func_isspace='yes'} +ac_cv_func_isxdigit=${ac_cv_func_isxdigit='yes'} +ac_cv_func_killpg=${ac_cv_func_killpg='yes'} +ac_cv_func_lstat=${ac_cv_func_lstat='yes'} +ac_cv_func_memmove=${ac_cv_func_memmove='yes'} +ac_cv_func_mkfifo=${ac_cv_func_mkfifo='yes'} +ac_cv_func_pathconf=${ac_cv_func_pathconf='yes'} +ac_cv_func_putenv=${ac_cv_func_putenv='yes'} +ac_cv_func_readlink=${ac_cv_func_readlink='yes'} +ac_cv_func_rename=${ac_cv_func_rename='yes'} +ac_cv_func_sbrk=${ac_cv_func_sbrk='yes'} +ac_cv_func_select=${ac_cv_func_select='yes'} +ac_cv_func_setdtablesize=${ac_cv_func_setdtablesize='yes'} +ac_cv_func_setenv=${ac_cv_func_setenv='yes'} +ac_cv_func_setlinebuf=${ac_cv_func_setlinebuf='no'} +ac_cv_func_setlocale=${ac_cv_func_setlocale='yes'} +ac_cv_func_setvbuf=${ac_cv_func_setvbuf='yes'} +ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed='no'} +ac_cv_func_siginterrupt=${ac_cv_func_siginterrupt='no'} +ac_cv_func_snprintf=${ac_cv_func_snprintf='yes'} +ac_cv_func_strcasecmp=${ac_cv_func_strcasecmp='yes'} +ac_cv_func_strchr=${ac_cv_func_strchr='yes'} +ac_cv_func_strcoll_works=${ac_cv_func_strcoll_works='yes'} +ac_cv_func_strerror=${ac_cv_func_strerror='yes'} +ac_cv_func_strpbrk=${ac_cv_func_strpbrk='yes'} +ac_cv_func_strtod=${ac_cv_func_strtod='yes'} +ac_cv_func_strtoimax=${ac_cv_func_strtoimax='no'} +ac_cv_func_strtol=${ac_cv_func_strtol='yes'} +ac_cv_func_strtoll=${ac_cv_func_strtoll='no'} +ac_cv_func_strtoul=${ac_cv_func_strtoul='yes'} +ac_cv_func_strtoull=${ac_cv_func_strtoull='no'} +ac_cv_func_strtoumax=${ac_cv_func_strtoumax='no'} +ac_cv_func_sysconf=${ac_cv_func_sysconf='yes'} +ac_cv_func_tcgetattr=${ac_cv_func_tcgetattr='yes'} +ac_cv_func_tcgetpgrp=${ac_cv_func_tcgetpgrp='yes'} +ac_cv_func_textdomain=${ac_cv_func_textdomain='no'} +ac_cv_func_times=${ac_cv_func_times='yes'} +ac_cv_func_ttyname=${ac_cv_func_ttyname='yes'} +ac_cv_func_tzset=${ac_cv_func_tzset='yes'} +ac_cv_func_ulimit=${ac_cv_func_ulimit='no'} +ac_cv_func_uname=${ac_cv_func_uname='yes'} +ac_cv_func_vasprintf=${ac_cv_func_vasprintf='no'} +ac_cv_func_vprintf=${ac_cv_func_vprintf='yes'} +ac_cv_func_vsnprintf=${ac_cv_func_vsnprintf='yes'} +ac_cv_func_wait3=${ac_cv_func_wait3='yes'} +ac_cv_func_waitpid=${ac_cv_func_waitpid='yes'} +ac_cv_have_decl_confstr=${ac_cv_have_decl_confstr='no'} +ac_cv_have_decl_printf=${ac_cv_have_decl_printf='yes'} +ac_cv_have_decl_sbrk=${ac_cv_have_decl_sbrk='yes'} +ac_cv_have_decl_strsignal=${ac_cv_have_decl_strsignal='yes'} +ac_cv_have_decl_strtold=${ac_cv_have_decl_strtold='no'} +ac_cv_header_arpa_inet_h=${ac_cv_header_arpa_inet_h='yes'} +ac_cv_header_dirent_dirent_h=${ac_cv_header_dirent_dirent_h='yes'} +ac_cv_header_dlfcn_h=${ac_cv_header_dlfcn_h='yes'} +ac_cv_header_grp_h=${ac_cv_header_grp_h='yes'} +ac_cv_header_inttypes_h=${ac_cv_header_inttypes_h='no'} +ac_cv_header_libintl_h=${ac_cv_header_libintl_h='yes'} +ac_cv_header_limits_h=${ac_cv_header_limits_h='yes'} +ac_cv_header_locale_h=${ac_cv_header_locale_h='yes'} +ac_cv_header_memory_h=${ac_cv_header_memory_h='yes'} +ac_cv_header_minix_config_h=${ac_cv_header_minix_config_h='no'} +ac_cv_header_netdb_h=${ac_cv_header_netdb_h='yes'} +ac_cv_header_netinet_in_h=${ac_cv_header_netinet_in_h='yes'} +ac_cv_header_stat_broken=${ac_cv_header_stat_broken='no'} +ac_cv_header_stdarg_h=${ac_cv_header_stdarg_h='yes'} +ac_cv_header_stdc=${ac_cv_header_stdc='yes'} +ac_cv_header_stddef_h=${ac_cv_header_stddef_h='yes'} +ac_cv_header_stdint_h=${ac_cv_header_stdint_h='no'} +ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h='yes'} +ac_cv_header_string_h=${ac_cv_header_string_h='yes'} +ac_cv_header_strings_h=${ac_cv_header_strings_h='yes'} +ac_cv_header_sys_file_h=${ac_cv_header_sys_file_h='yes'} +ac_cv_header_sys_param_h=${ac_cv_header_sys_param_h='yes'} +ac_cv_header_sys_pte_h=${ac_cv_header_sys_pte_h='no'} +ac_cv_header_sys_ptem_h=${ac_cv_header_sys_ptem_h='no'} +ac_cv_header_sys_resource_h=${ac_cv_header_sys_resource_h='yes'} +ac_cv_header_sys_select_h=${ac_cv_header_sys_select_h='yes'} +ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h='yes'} +ac_cv_header_sys_stat_h=${ac_cv_header_sys_stat_h='yes'} +ac_cv_header_sys_stream_h=${ac_cv_header_sys_stream_h='no'} +ac_cv_header_sys_time_h=${ac_cv_header_sys_time_h='yes'} +ac_cv_header_sys_times_h=${ac_cv_header_sys_times_h='yes'} +ac_cv_header_sys_types_h=${ac_cv_header_sys_types_h='yes'} +ac_cv_header_sys_wait_h=${ac_cv_header_sys_wait_h='yes'} +ac_cv_header_termcap_h=${ac_cv_header_termcap_h='yes'} +ac_cv_header_termio_h=${ac_cv_header_termio_h='yes'} +ac_cv_header_termios_h=${ac_cv_header_termios_h='yes'} +ac_cv_header_time=${ac_cv_header_time='yes'} +ac_cv_header_unistd_h=${ac_cv_header_unistd_h='yes'} +ac_cv_header_varargs_h=${ac_cv_header_varargs_h='yes'} +ac_cv_host=${ac_cv_host='i686-pc-cygwin'} +ac_cv_host_alias=${ac_cv_host_alias='i686-pc-cygwin'} +ac_cv_lib_dir_opendir=${ac_cv_lib_dir_opendir='no'} +ac_cv_lib_dl_dlopen=${ac_cv_lib_dl_dlopen='no'} +ac_cv_lib_intl_bindtextdomain=${ac_cv_lib_intl_bindtextdomain='yes'} +ac_cv_lib_termcap_tgetent=${ac_cv_lib_termcap_tgetent='yes'} +ac_cv_member_struct_stat_st_blocks=${ac_cv_member_struct_stat_st_blocks='yes'} +ac_cv_member_struct_termio_c_line=${ac_cv_member_struct_termio_c_line='yes'} +ac_cv_member_struct_termios_c_line=${ac_cv_member_struct_termios_c_line='yes'} +ac_cv_objext=${ac_cv_objext='o'} +ac_cv_path_install=${ac_cv_path_install='/usr/bin/install -c'} +ac_cv_prog_AR=${ac_cv_prog_AR='ar'} +ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'} +ac_cv_prog_YACC=${ac_cv_prog_YACC='bison -y'} +ac_cv_prog_ac_ct_CC=${ac_cv_prog_ac_ct_CC='gcc'} +ac_cv_prog_ac_ct_RANLIB=${ac_cv_prog_ac_ct_RANLIB='ranlib'} +ac_cv_prog_cc_g=${ac_cv_prog_cc_g='yes'} +ac_cv_prog_cc_stdc=${ac_cv_prog_cc_stdc=''} +ac_cv_prog_gcc_traditional=${ac_cv_prog_gcc_traditional='no'} +ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set='yes'} +ac_cv_sizeof_char=${ac_cv_sizeof_char='1'} +ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p='4'} +ac_cv_sizeof_double=${ac_cv_sizeof_double='8'} +ac_cv_sizeof_int=${ac_cv_sizeof_int='4'} +ac_cv_sizeof_long=${ac_cv_sizeof_long='4'} +ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long='8'} +ac_cv_sizeof_short=${ac_cv_sizeof_short='2'} +ac_cv_sys_file_offset_bits=${ac_cv_sys_file_offset_bits='no'} +ac_cv_sys_interpreter=${ac_cv_sys_interpreter='yes'} +ac_cv_sys_large_files=${ac_cv_sys_large_files='no'} +ac_cv_sys_largefile_CC=${ac_cv_sys_largefile_CC='no'} +ac_cv_sys_posix_termios=${ac_cv_sys_posix_termios='yes'} +ac_cv_sys_tiocgwinsz_in_termios_h=${ac_cv_sys_tiocgwinsz_in_termios_h='yes'} +ac_cv_type_bits16_t=${ac_cv_type_bits16_t='no'} +ac_cv_type_bits32_t=${ac_cv_type_bits32_t='no'} +ac_cv_type_bits64_t=${ac_cv_type_bits64_t='no'} +ac_cv_type_char=${ac_cv_type_char='yes'} +ac_cv_type_char_p=${ac_cv_type_char_p='yes'} +ac_cv_type_double=${ac_cv_type_double='yes'} +ac_cv_type_getgroups=${ac_cv_type_getgroups='gid_t'} +ac_cv_type_int=${ac_cv_type_int='yes'} +ac_cv_type_long=${ac_cv_type_long='yes'} +ac_cv_type_long_long=${ac_cv_type_long_long='yes'} +ac_cv_type_mode_t=${ac_cv_type_mode_t='yes'} +ac_cv_type_off_t=${ac_cv_type_off_t='yes'} +ac_cv_type_pid_t=${ac_cv_type_pid_t='yes'} +ac_cv_type_ptrdiff_t=${ac_cv_type_ptrdiff_t='yes'} +ac_cv_type_short=${ac_cv_type_short='yes'} +ac_cv_type_signal=${ac_cv_type_signal='void'} +ac_cv_type_size_t=${ac_cv_type_size_t='yes'} +ac_cv_type_ssize_t=${ac_cv_type_ssize_t='yes'} +ac_cv_type_time_t=${ac_cv_type_time_t='yes'} +ac_cv_type_u_bits16_t=${ac_cv_type_u_bits16_t='no'} +ac_cv_type_u_bits32_t=${ac_cv_type_u_bits32_t='no'} +ac_cv_type_u_int=${ac_cv_type_u_int='yes'} +ac_cv_type_u_long=${ac_cv_type_u_long='yes'} +ac_cv_type_uid_t=${ac_cv_type_uid_t='yes'} +ac_cv_working_alloca_h=${ac_cv_working_alloca_h='no'} + +bash_cv_decl_strtoimax=${bash_cv_decl_strtoimax='no'} +bash_cv_decl_strtol=${bash_cv_decl_strtol='yes'} +bash_cv_decl_strtoll=${bash_cv_decl_strtoll='no'} +bash_cv_decl_strtoul=${bash_cv_decl_strtoul='yes'} +bash_cv_decl_strtoull=${bash_cv_decl_strtoull='no'} +bash_cv_decl_strtoumax=${bash_cv_decl_strtoumax='no'} +bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist='no'} +bash_cv_dev_fd=${bash_cv_dev_fd='absent'} +bash_cv_dev_stdin=${bash_cv_dev_stdin='absent'} +bash_cv_dirent_has_d_fileno=${bash_cv_dirent_has_d_fileno='no'} +bash_cv_dirent_has_dino=${bash_cv_dirent_has_dino='yes'} +bash_cv_dup2_broken=${bash_cv_dup2_broken='no'} +bash_cv_fionread_in_ioctl=${bash_cv_fionread_in_ioctl='no'} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp='present'} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken='no'} +bash_cv_getenv_redef=${bash_cv_getenv_redef='yes'} +bash_cv_getpw_declared=${bash_cv_getpw_declared='yes'} +bash_cv_have_strsignal=${bash_cv_have_strsignal='yes'} +bash_cv_job_control_missing=${bash_cv_job_control_missing='present'} +bash_cv_mail_dir=${bash_cv_mail_dir='unknown'} +bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers='no'} +bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust='no'} +bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe='no'} +bash_cv_printf_a_format=${bash_cv_printf_a_format='no'} +bash_cv_signal_vintage=${bash_cv_signal_vintage='posix'} +bash_cv_speed_t_in_sys_types=${bash_cv_speed_t_in_sys_types='no'} +bash_cv_struct_timeval=${bash_cv_struct_timeval='yes'} +bash_cv_struct_winsize_header=${bash_cv_struct_winsize_header='termios_h'} +bash_cv_sys_errlist=${bash_cv_sys_errlist='no'} +bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes='present'} +bash_cv_sys_siglist=${bash_cv_sys_siglist='no'} +bash_cv_termcap_lib=${bash_cv_termcap_lib='libtermcap'} +bash_cv_tiocstat_in_ioctl=${bash_cv_tiocstat_in_ioctl='no'} +bash_cv_type_clock_t=${bash_cv_type_clock_t='yes'} +bash_cv_type_intmax_t=${bash_cv_type_intmax_t='no'} +bash_cv_type_long_long=${bash_cv_type_long_long='long long'} +bash_cv_type_quad_t=${bash_cv_type_quad_t='no'} +bash_cv_type_rlimit=${bash_cv_type_rlimit='rlim_t'} +bash_cv_type_sigset_t=${bash_cv_type_sigset_t='yes'} +bash_cv_type_socklen_t=${bash_cv_type_socklen_t='no'} +bash_cv_type_uintmax_t=${bash_cv_type_uintmax_t='no'} +bash_cv_type_unsigned_long_long=${bash_cv_type_unsigned_long_long='unsigned long long'} +bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds='no'} +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist='no'} +bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs='no'} +bash_cv_void_sighandler=${bash_cv_void_sighandler='yes'} diff --git a/bash-5.1/cross-build/opennt.cache b/bash-5.1/cross-build/opennt.cache new file mode 100644 index 0000000..ca5e7cd --- /dev/null +++ b/bash-5.1/cross-build/opennt.cache @@ -0,0 +1,169 @@ +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +ac_cv_c_bigendian=${ac_cv_c_bigendian=no} +ac_cv_decl_sys_siglist=${ac_cv_decl_sys_siglist=no} +ac_cv_func___setostype=${ac_cv_func___setostype=no} +ac_cv_func_alloca_works=${ac_cv_func_alloca_works=yes} +ac_cv_func_bcopy=${ac_cv_func_bcopy=yes} +ac_cv_func_bindtextdomain=${ac_cv_func_bindtextdomain=no} +ac_cv_func_bzero=${ac_cv_func_bzero=yes} +ac_cv_func_confstr=${ac_cv_func_confstr=yes} +ac_cv_func_dlclose=${ac_cv_func_dlclose=no} +ac_cv_func_dlopen=${ac_cv_func_dlopen=no} +ac_cv_func_dlsym=${ac_cv_func_dlsym=no} +ac_cv_func_dup2=${ac_cv_func_dup2=yes} +ac_cv_func_getcwd=${ac_cv_func_getcwd=yes} +ac_cv_func_getdtablesize=${ac_cv_func_getdtablesize=no} +ac_cv_func_getgroups=${ac_cv_func_getgroups=yes} +ac_cv_func_gethostname=${ac_cv_func_gethostname=yes} +ac_cv_func_getpagesize=${ac_cv_func_getpagesize=yes} +ac_cv_func_getpeername=${ac_cv_func_getpeername=yes} +ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void=yes} +ac_cv_func_getrlimit=${ac_cv_func_getrlimit=no} +ac_cv_func_getrusage=${ac_cv_func_getrusage=no} +ac_cv_func_gettext=${ac_cv_func_gettext=no} +ac_cv_func_gettimeofday=${ac_cv_func_gettimeofday=yes} +ac_cv_func_killpg=${ac_cv_func_killpg=yes} +ac_cv_func_lstat=${ac_cv_func_lstat=no} +ac_cv_func_memmove=${ac_cv_func_memmove=yes} +ac_cv_func_mkfifo=${ac_cv_func_mkfifo=yes} +ac_cv_func_putenv=${ac_cv_func_putenv=yes} +ac_cv_func_rename=${ac_cv_func_rename=yes} +ac_cv_func_sbrk=${ac_cv_func_sbrk=no} +ac_cv_func_select=${ac_cv_func_select=yes} +ac_cv_func_setdtablesize=${ac_cv_func_setdtablesize=no} +ac_cv_func_setenv=${ac_cv_func_setenv=yes} +ac_cv_func_setlinebuf=${ac_cv_func_setlinebuf=yes} +ac_cv_func_setlocale=${ac_cv_func_setlocale=yes} +ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no} +ac_cv_func_siginterrupt=${ac_cv_func_siginterrupt=no} +ac_cv_func_strcasecmp=${ac_cv_func_strcasecmp=yes} +ac_cv_func_strchr=${ac_cv_func_strchr=yes} +ac_cv_func_strcoll_works=${ac_cv_func_strcoll_works=yes} +ac_cv_func_strerror=${ac_cv_func_strerror=yes} +ac_cv_func_strtod=${ac_cv_func_strtod=yes} +ac_cv_func_strtol=${ac_cv_func_strtol=yes} +ac_cv_func_strtoul=${ac_cv_func_strtoul=yes} +ac_cv_func_sysconf=${ac_cv_func_sysconf=yes} +ac_cv_func_tcgetattr=${ac_cv_func_tcgetattr=yes} +ac_cv_func_tcgetpgrp=${ac_cv_func_tcgetpgrp=yes} +ac_cv_func_textdomain=${ac_cv_func_textdomain=no} +ac_cv_func_times=${ac_cv_func_times=yes} +ac_cv_func_tzset=${ac_cv_func_tzset=yes} +ac_cv_func_ulimit=${ac_cv_func_ulimit=no} +ac_cv_func_uname=${ac_cv_func_uname=yes} +ac_cv_func_vprintf=${ac_cv_func_vprintf=yes} +ac_cv_func_wait3=${ac_cv_func_wait3=no} +ac_cv_func_wait3_rusage=${ac_cv_func_wait3_rusage=no} +ac_cv_func_waitpid=${ac_cv_func_waitpid=yes} +ac_cv_header_alloca_h=${ac_cv_header_alloca_h=no} +ac_cv_header_dirent_dirent_h=${ac_cv_header_dirent_dirent_h=yes} +ac_cv_header_dlfcn_h=${ac_cv_header_dlfcn_h=no} +ac_cv_header_libintl_h=${ac_cv_header_libintl_h=no} +ac_cv_header_limits_h=${ac_cv_header_limits_h=yes} +ac_cv_header_locale_h=${ac_cv_header_locale_h=yes} +ac_cv_header_memory_h=${ac_cv_header_memory_h=yes} +ac_cv_header_minix_config_h=${ac_cv_header_minix_config_h=no} +ac_cv_header_stat_broken=${ac_cv_header_stat_broken=no} +ac_cv_header_stdarg_h=${ac_cv_header_stdarg_h=yes} +ac_cv_header_stdc=${ac_cv_header_stdc=yes} +ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h=yes} +ac_cv_header_string_h=${ac_cv_header_string_h=yes} +ac_cv_header_sys_file_h=${ac_cv_header_sys_file_h=yes} +ac_cv_header_sys_param_h=${ac_cv_header_sys_param_h=yes} +ac_cv_header_sys_pte_h=${ac_cv_header_sys_pte_h=no} +ac_cv_header_sys_ptem_h=${ac_cv_header_sys_ptem_h=no} +ac_cv_header_sys_resource_h=${ac_cv_header_sys_resource_h=no} +ac_cv_header_sys_select_h=${ac_cv_header_sys_select_h=no} +ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h=yes} +ac_cv_header_sys_stream_h=${ac_cv_header_sys_stream_h=no} +ac_cv_header_sys_time_h=${ac_cv_header_sys_time_h=yes} +ac_cv_header_sys_times_h=${ac_cv_header_sys_times_h=yes} +ac_cv_header_sys_wait_h=${ac_cv_header_sys_wait_h=yes} +ac_cv_header_termcap_h=${ac_cv_header_termcap_h=no} +ac_cv_header_termio_h=${ac_cv_header_termio_h=no} +ac_cv_header_termios_h=${ac_cv_header_termios_h=yes} +ac_cv_header_time=${ac_cv_header_time=yes} +ac_cv_header_unistd_h=${ac_cv_header_unistd_h=yes} +ac_cv_header_varargs_h=${ac_cv_header_varargs_h=no} +ac_cv_lib_dir_opendir=${ac_cv_lib_dir_opendir=no} +ac_cv_lib_dl_dlopen=${ac_cv_lib_dl_dlopen=no} +ac_cv_lib_intl_bindtextdomain=${ac_cv_lib_intl_bindtextdomain=no} +ac_cv_lib_termcap_tgetent=${ac_cv_lib_termcap_tgetent=yes} +ac_cv_path_install=${ac_cv_path_install='$INTERIX_ROOT/bin/install -c'} +ac_cv_prog_AR=${ac_cv_prog_AR=ar} +ac_cv_prog_CC=${ac_cv_prog_CC=gcc} +ac_cv_prog_CPP=${ac_cv_prog_CPP='cc -E'} +ac_cv_prog_RANLIB=${ac_cv_prog_RANLIB=:} +ac_cv_prog_cc_cross=${ac_cv_prog_cc_cross=no} +ac_cv_prog_cc_g=${ac_cv_prog_cc_g=yes} +ac_cv_prog_cc_works=${ac_cv_prog_cc_works=yes} +ac_cv_prog_gcc=${ac_cv_prog_gcc=yes} +ac_cv_prog_gcc_traditional=${ac_cv_prog_gcc_traditional=no} +ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set=yes} +ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p=4} +ac_cv_sizeof_double=${ac_cv_sizeof_double=8} +ac_cv_sizeof_int=${ac_cv_sizeof_int=4} +ac_cv_sizeof_long=${ac_cv_sizeof_long=4} +ac_cv_sys_interpreter=${ac_cv_sys_interpreter=yes} +ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls=no} +ac_cv_type_getgroups=${ac_cv_type_getgroups=gid_t} +ac_cv_type_mode_t=${ac_cv_type_mode_t=yes} +ac_cv_type_off_t=${ac_cv_type_off_t=yes} +ac_cv_type_pid_t=${ac_cv_type_pid_t=yes} +ac_cv_type_signal=${ac_cv_type_signal=void} +ac_cv_type_size_t=${ac_cv_type_size_t=yes} +ac_cv_type_time_t=${ac_cv_type_time_t=yes} +ac_cv_type_uid_t=${ac_cv_type_uid_t=yes} +bash_cv_can_redecl_getpw=${bash_cv_can_redecl_getpw=yes} +bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist=no} +bash_cv_dev_fd=${bash_cv_dev_fd=absent} +bash_cv_dirent_has_d_fileno=${bash_cv_dirent_has_d_fileno=no} +bash_cv_dirent_has_dino=${bash_cv_dirent_has_dino=yes} +bash_cv_dup2_broken=${bash_cv_dup2_broken=no} +bash_cv_fionread_in_ioctl=${bash_cv_fionread_in_ioctl=yes} +bash_cv_func_lstat=${bash_cv_func_lstat=no} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=present} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no} +bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen=no} +bash_cv_getenv_redef=${bash_cv_getenv_redef=yes} +bash_cv_have_strsignal=${bash_cv_have_strsignal=yes} +bash_cv_job_control_missing=${bash_cv_job_control_missing=present} +bash_cv_mail_dir=${bash_cv_mail_dir=/usr/spool/mail} +bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no} +bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no} +bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no} +bash_cv_printf_declared=${bash_cv_printf_declared=yes} +bash_cv_sbrk_declared=${bash_cv_sbrk_declared=no} +bash_cv_signal_vintage=${bash_cv_signal_vintage=posix} +bash_cv_speed_t_in_sys_types=${bash_cv_speed_t_in_sys_types=no} +bash_cv_struct_timeval=${bash_cv_struct_timeval=yes} +bash_cv_struct_winsize_header=${bash_cv_struct_winsize_header=ioctl_h} +bash_cv_struct_winsize_in_ioctl=${bash_cv_struct_winsize_in_ioctl=yes} +bash_cv_sys_errlist=${bash_cv_sys_errlist=yes} +bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present} +bash_cv_sys_siglist=${bash_cv_sys_siglist=yes} +bash_cv_termcap_lib=${bash_cv_termcap_lib=libtermcap} +bash_cv_termio_ldisc=${bash_cv_termio_ldisc=no} +bash_cv_termios_ldisc=${bash_cv_termios_ldisc=no} +bash_cv_tiocgwinsz_in_ioctl=${bash_cv_tiocgwinsz_in_ioctl=yes} +bash_cv_tiocstat_in_ioctl=${bash_cv_tiocstat_in_ioctl=no} +bash_cv_type_clock_t=${bash_cv_type_clock_t=yes} +bash_cv_type_quad_t=${bash_cv_type_quad_t=yes} +bash_cv_type_rlimit=${bash_cv_type_rlimit=long} +bash_cv_type_sigset_t=${bash_cv_type_sigset_t=yes} +bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=no} +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=no} +bash_cv_void_sighandler=${bash_cv_void_sighandler=yes} diff --git a/bash-5.1/cross-build/qnx.cache b/bash-5.1/cross-build/qnx.cache new file mode 100644 index 0000000..3f630fd --- /dev/null +++ b/bash-5.1/cross-build/qnx.cache @@ -0,0 +1,66 @@ +bash_cv_decl_strtoimax=${bash_cv_decl_strtoimax=yes} +bash_cv_decl_strtol=${bash_cv_decl_strtol=yes} +bash_cv_decl_strtoll=${bash_cv_decl_strtoll=yes} +bash_cv_decl_strtoul=${bash_cv_decl_strtoul=yes} +bash_cv_decl_strtoull=${bash_cv_decl_strtoull=yes} +bash_cv_decl_strtoumax=${bash_cv_decl_strtoumax=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_dev_stdin=${bash_cv_dev_stdin=present} +bash_cv_dirent_has_d_fileno=${bash_cv_dirent_has_d_fileno=no} +bash_cv_dirent_has_d_namlen=${bash_cv_dirent_has_d_namlen=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_ctype_nonascii=${bash_cv_func_ctype_nonascii=no} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=present} +bash_cv_func_snprintf=${bash_cv_func_snprintf=yes} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no} +bash_cv_func_vsnprintf=${bash_cv_func_vsnprintf=yes} +bash_cv_getcwd_malloc=${bash_cv_getcwd_malloc=yes} +bash_cv_getenv_redef=${bash_cv_getenv_redef=yes} +bash_cv_getpw_declared=${bash_cv_getpw_declared=yes} +bash_cv_have_gethostbyname=${bash_cv_have_gethostbyname=no} +bash_cv_have_socklib=${bash_cv_have_socklib=no} +bash_cv_have_strsignal=${bash_cv_have_strsignal=yes} +bash_cv_job_control_missing=${bash_cv_job_control_missing=present} +bash_cv_langinfo_codeset=${bash_cv_langinfo_codeset=no} +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=yes} +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_std_putenv=${bash_cv_std_putenv=yes} +bash_cv_std_unsetenv=${bash_cv_std_unsetenv=yes} +bash_cv_strtold_broken=${bash_cv_strtold_broken=no} +bash_cv_struct_timeval=${bash_cv_struct_timeval=yes} +bash_cv_struct_timezone=${bash_cv_struct_timezone=yes} +bash_cv_struct_winsize_header=${bash_cv_struct_winsize_header=ioctl_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=yes} +bash_cv_sys_struct_timespec_in_time_h=${bash_cv_sys_struct_timespec_in_time_h=yes} +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=yes} +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_sig_atomic_t=${bash_cv_type_sig_atomic_t=yes} +bash_cv_type_sigset_t=${bash_cv_type_sigset_t=yes} +bash_cv_type_socklen_t=${bash_cv_type_socklen_t=yes} +bash_cv_type_uintmax_t=${bash_cv_type_uintmax_t=yes} +bash_cv_type_unsigned_long_long=${bash_cv_type_unsigned_long_long='unsigned long long'} +bash_cv_type_wchar_t=${bash_cv_type_wchar_t=yes} +bash_cv_type_wctype_t=${bash_cv_type_wctype_t=yes} +bash_cv_type_wint_t=${bash_cv_type_wint_t=yes} +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} +bash_cv_wcontinued_broken=${bash_cv_wcontinued_broken=no} +bash_cv_wcwidth_broken=${bash_cv_wcwidth_broken=no} +bash_cv_wexitstatus_offset=${bash_cv_wexitstatus_offset=8} diff --git a/bash-5.1/cross-build/x86-beos.cache b/bash-5.1/cross-build/x86-beos.cache new file mode 100644 index 0000000..351aa21 --- /dev/null +++ b/bash-5.1/cross-build/x86-beos.cache @@ -0,0 +1,45 @@ +# This file is a shell script that caches the results of configure +# tests for x86 BeOS so they don't need to be done when cross-compiling. + +# AC_FUNC_GETPGRP should also define GETPGRP_VOID +ac_cv_func_getpgrp_void=${ac_cv_func_getpgrp_void='yes'} +# AC_FUNC_SETVBUF_REVERSED should not define anything else +ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed='no'} +# on BeOS, system calls do not restart +ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'} +bash_cv_sys_restartable_syscalls=${bash_cv_sys_restartable_syscalls='no'} + +ac_cv_func_tcgetattr=${ac_cv_func_tcgetattr='yes'} + +# x86 BeOS is little endian +ac_cv_c_bigendian=${ac_cv_c_bigendian='no'} +ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p='4'} +ac_cv_sizeof_int=${ac_cv_sizeof_int='4'} +ac_cv_sizeof_long=${ac_cv_sizeof_long='4'} +ac_cv_sizeof_double=${ac_cv_sizeof_double='8'} + +bash_cv_dev_fd=${bash_cv_dev_fd='absent'} +bash_cv_dup2_broken=${bash_cv_dup2_broken='no'} +bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe='no'} +bash_cv_type_rlimit=${bash_cv_type_rlimit='long'} +bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist='no'} +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist='no'} +bash_cv_sys_siglist=${bash_cv_sys_siglist='yes'} +bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust='no'} +bash_cv_getenv_redef=${bash_cv_getenv_redef='yes'} +bash_cv_printf_declared=${bash_cv_printf_declared='yes'} +bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds='no'} +bash_cv_getcwd_calls_popen=${bash_cv_getcwd_calls_popen='no'} +bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers='no'} +bash_cv_job_control_missing=${bash_cv_job_control_missing='present'} +bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes='present'} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp='missing'} +bash_cv_mail_dir=${bash_cv_mail_dir='unknown'} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken='no'} + +bash_cv_type_int32_t=${bash_cv_type_int32_t='int'} +bash_cv_type_u_int32_t=${bash_cv_type_u_int32_t='int'} + +ac_cv_type_bits64_t=${ac_cv_type_bits64_t='no'} + +# end of cross-build/x86-beos.cache diff --git a/bash-5.1/dispose_cmd.c b/bash-5.1/dispose_cmd.c new file mode 100644 index 0000000..c624605 --- /dev/null +++ b/bash-5.1/dispose_cmd.c @@ -0,0 +1,342 @@ +/* dispose_command.c -- dispose of a COMMAND structure. */ + +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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_coproc: + { + free (command->value.Coproc->name); + dispose_command (command->value.Coproc->command); + free (command->value.Coproc); + 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; + + if (t->rflags & REDIR_VARASSIGN) + dispose_word (t->redirector.filename); + + 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_append_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-5.1/dispose_cmd.h b/bash-5.1/dispose_cmd.h new file mode 100644 index 0000000..6095d44 --- /dev/null +++ b/bash-5.1/dispose_cmd.h @@ -0,0 +1,40 @@ +/* dispose_cmd.h -- Functions appearing in dispose_cmd.c. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_DISPOSE_CMD_H_) +#define _DISPOSE_CMD_H_ + +#include "stdc.h" + +extern void dispose_command PARAMS((COMMAND *)); +extern void dispose_word_desc PARAMS((WORD_DESC *)); +extern void dispose_word PARAMS((WORD_DESC *)); +extern void dispose_words PARAMS((WORD_LIST *)); +extern void dispose_word_array PARAMS((char **)); +extern void dispose_redirects PARAMS((REDIRECT *)); + +#if defined (COND_COMMAND) +extern void dispose_cond_node PARAMS((COND_COM *)); +#endif + +extern void dispose_function_def_contents PARAMS((FUNCTION_DEF *)); +extern void dispose_function_def PARAMS((FUNCTION_DEF *)); + +#endif /* !_DISPOSE_CMD_H_ */ diff --git a/bash-5.1/doc/FAQ b/bash-5.1/doc/FAQ new file mode 100644 index 0000000..104d0bc --- /dev/null +++ b/bash-5.1/doc/FAQ @@ -0,0 +1,2412 @@ +This is the Bash FAQ, version 4.15, for Bash version 5.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.ramey@case.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 4.3? +B2) Are there any user-visible incompatibilities between bash-4.3 and + previous bash versions? + +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? +E13) Why does filename completion misbehave if a colon appears in the filename? +E14) Why does quoting the pattern argument to the regular expression matching + conditional operator (=~) cause matching to stop working? +E15) Tell me more about the shell compatibility level. + +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 4.3, first made available on 26 February, 2014. + +A3) Where can I get it? + +Bash is the GNU project's shell, and so is available from the +master GNU archive site, ftp.gnu.org, and its mirrors. The +latest version is also available for FTP from ftp.cwru.edu. +The following URLs tell how to get version 4.3: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-4.3.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-4.3.tar.gz + +Formatted versions of the documentation are available with the URLs: + +ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.3.tar.gz +ftp://ftp.cwru.edu/pub/bash/bash-doc-4.3.tar.gz + +Any patches for the current version are available with the URL: + +ftp://ftp.cwru.edu/pub/bash/bash-4.3-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-3.2 and bash-4.0 to the CYGWIN environment, and both +are available as part of their current release. + +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-4.2 and later, but will gladly accept any patches that +are needed. + +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 4.3? + +Bash-4.3 is the third revision to the fourth major release of bash. + +Bash-4.3 contains the following new features (see the manual page for +complete descriptions and the CHANGES and NEWS files in the bash-4.3 +distribution): + +o The `helptopic' completion action now maps to all the help topics, not just + the shell builtins. + +o The `help' builtin no longer does prefix substring matching first, so + `help read' does not match `readonly', but will do it if exact string + matching fails. + +o The shell can be compiled to not display a message about processes that + terminate due to SIGTERM. + +o Non-interactive shells now react to the setting of checkwinsize and set + LINES and COLUMNS after a foreground job exits. + +o There is a new shell option, `globasciiranges', which, when set to on, + forces globbing range comparisons to use character ordering as if they + were run in the C locale. + +o There is a new shell option, `direxpand', which makes filename completion + expand variables in directory names in the way bash-4.1 did. + +o In Posix mode, the `command' builtin does not change whether or not a + builtin it shadows is treated as an assignment builtin. + +o The `return' and `exit' builtins accept negative exit status arguments. + +o The word completion code checks whether or not a filename containing a + shell variable expands to a directory name and appends `/' to the word + as appropriate. The same code expands shell variables in command names + when performing command completion. + +o In Posix mode, it is now an error to attempt to define a shell function + with the same name as a Posix special builtin. + +o When compiled for strict Posix conformance, history expansion is disabled + by default. + +o The history expansion character (!) does not cause history expansion when + followed by the closing quote in a double-quoted string. + +o `complete' and its siblings compgen/compopt now takes a new `-o noquote' + option to inhibit quoting of the completions. + +o Setting HISTSIZE to a value less than zero causes the history list to be + unlimited (setting it 0 zero disables the history list). + +o Setting HISTFILESIZE to a value less than zero causes the history file size + to be unlimited (setting it to 0 causes the history file to be truncated + to zero size). + +o The `read' builtin now skips NUL bytes in the input. + +o There is a new `bind -X' option to print all key sequences bound to Unix + commands. + +o When in Posix mode, `read' is interruptible by a trapped signal. After + running the trap handler, read returns 128+signal and throws away any + partially-read input. + +o The command completion code skips whitespace and assignment statements + before looking for the command name word to be completed. + +o The build process has a new mechanism for constructing separate help files + that better reflects the current set of compilation options. + +o The -nt and -ot options to test now work with files with nanosecond + timestamp resolution. + +o The shell saves the command history in any shell for which history is + enabled and HISTFILE is set, not just interactive shells. + +o The shell has `nameref' variables and new -n(/+n) options to declare and + unset to use them, and a `test -R' option to test for them. + +o The shell now allows assigning, referencing, and unsetting elements of + indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which + count back from the last element of the array. + +o The {x} operators to the [[ conditional command now do string + comparison according to the current locale. + +o Programmable completion now uses the completion for `b' instead of `a' + when completion is attempted on a line like: a $(b c. + +o Force extglob on temporarily when parsing the pattern argument to + the == and != operators to the [[ command, for compatibility. + +o Changed the behavior of interrupting the wait builtin when a SIGCHLD is + received and a trap on SIGCHLD is set to be Posix-mode only. + +o The read builtin has a new `-N nchars' option, which reads exactly NCHARS + characters, ignoring delimiters like newline. + +o The mapfile/readarray builtin no longer stores the commands it invokes via + callbacks in the history list. + +o There is a new `compat40' shopt option. + +o The < and > operators to [[ do string comparisons using the current locale + only if the compatibility level is greater than 40 (set to 41 by default). + +o New bindable readline function: menu-complete-backward. + +o In the readline vi-mode insertion keymap, C-n is now bound to menu-complete + by default, and C-p to menu-complete-backward. + +o When in readline vi command mode, repeatedly hitting ESC now does nothing, + even when ESC introduces a bound key sequence. This is closer to how + historical vi behaves. + +o New bindable readline function: skip-csi-sequence. Can be used as a + default to consume key sequences generated by keys like Home and End + without having to bind all keys. + +o New bindable readline variable: skip-completed-text, active when + completing in the middle of a word. If enabled, it means that characters + in the completion that match characters in the remainder of the word are + "skipped" rather than inserted into the line. + +o The pre-readline-6.0 version of menu completion is available as + "old-menu-complete" for users who do not like the readline-6.0 version. + +o New bindable readline variable: echo-control-characters. If enabled, and + the tty ECHOCTL bit is set, controls the echoing of characters + corresponding to keyboard-generated signals. + +o New bindable readline variable: enable-meta-key. Controls whether or not + readline sends the smm/rmm sequences if the terminal indicates it has a + meta key that enables eight-bit characters. + +Bash-4.0 contained the following new features: + +o When using substring expansion on the positional parameters, a starting + index of 0 now causes $0 to be prefixed to the list. + +o There is a new variable, $BASHPID, which always returns the process id of + the current shell. + +o There is a new `autocd' option that, when enabled, causes bash to attempt + to `cd' to a directory name that is supplied as the first word of a + simple command. + +o There is a new `checkjobs' option that causes the shell to check for and + report any running or stopped jobs at exit. + +o The programmable completion code exports a new COMP_TYPE variable, set to + a character describing the type of completion being attempted. + +o The programmable completion code exports a new COMP_KEY variable, set to + the character that caused the completion to be invoked (e.g., TAB). + +o The programmable completion code now uses the same set of characters as + readline when breaking the command line into a list of words. + +o The block multiplier for the ulimit -c and -f options is now 512 when in + Posix mode, as Posix specifies. + +o Changed the behavior of the read builtin to save any partial input received + in the specified variable when the read builtin times out. This also + results in variables specified as arguments to read to be set to the empty + string when there is no input available. When the read builtin times out, + it returns an exit status greater than 128. + +o The shell now has the notion of a `compatibility level', controlled by + new variables settable by `shopt'. Setting this variable currently + restores the bash-3.1 behavior when processing quoted strings on the rhs + of the `=~' operator to the `[[' command. + +o The `ulimit' builtin now has new -b (socket buffer size) and -T (number + of threads) options. + +o There is a new `compopt' builtin that allows completion functions to modify + completion options for existing completions or the completion currently + being executed. + +o The `read' builtin has a new -i option which inserts text into the reply + buffer when using readline. + +o A new `-E' option to the complete builtin allows control of the default + behavior for completion on an empty line. + +o There is now limited support for completing command name words containing + globbing characters. + +o The `help' builtin now has a new -d option, to display a short description, + and a -m option, to print help information in a man page-like format. + +o There is a new `mapfile' builtin to populate an array with lines from a + given file. + +o If a command is not found, the shell attempts to execute a shell function + named `command_not_found_handle', supplying the command words as the + function arguments. + +o There is a new shell option: `globstar'. When enabled, the globbing code + treats `**' specially -- it matches all directories (and files within + them, when appropriate) recursively. + +o There is a new shell option: `dirspell'. When enabled, the filename + completion code performs spelling correction on directory names during + completion. + +o The `-t' option to the `read' builtin now supports fractional timeout + values. + +o Brace expansion now allows zero-padding of expanded numeric values and + will add the proper number of zeroes to make sure all values contain the + same number of digits. + +o There is a new bash-specific bindable readline function: `dabbrev-expand'. + It uses menu completion on a set of words taken from the history list. + +o The command assigned to a key sequence with `bind -x' now sets two new + variables in the environment of the executed command: READLINE_LINE_BUFFER + and READLINE_POINT. The command can change the current readline line + and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, + respectively. + +o There is a new >>& redirection operator, which appends the standard output + and standard error to the named file. + +o The parser now understands `|&' as a synonym for `2>&1 |', which redirects + the standard error for a command through a pipe. + +o The new `;&' case statement action list terminator causes execution to + continue with the action associated with the next pattern in the + statement rather than terminating the command. + +o The new `;;&' case statement action list terminator causes the shell to + test the next set of patterns after completing execution of the current + action, rather than terminating the command. + +o The shell understands a new variable: PROMPT_DIRTRIM. When set to an + integer value greater than zero, prompt expansion of \w and \W will + retain only that number of trailing pathname components and replace + the intervening characters with `...'. + +o There are new case-modifying word expansions: uppercase (^[^]) and + lowercase (,[,]). They can work on either the first character or + array element, or globally. They accept an optional shell pattern + that determines which characters to modify. There is an optionally- + configured feature to include capitalization operators. + +o The shell provides associative array variables, with the appropriate + support to create, delete, assign values to, and expand them. + +o The `declare' builtin now has new -l (convert value to lowercase upon + assignment) and -u (convert value to uppercase upon assignment) options. + There is an optionally-configurable -c option to capitalize a value at + assignment. + +o There is a new `coproc' reserved word that specifies a coprocess: an + asynchronous command run with two pipes connected to the creating shell. + Coprocs can be named. The input and output file descriptors and the + PID of the coprocess are available to the calling shell in variables + with coproc-specific names. + +o A value of 0 for the -t option to `read' now returns success if there is + input available to be read from the specified file descriptor. + +o CDPATH and GLOBIGNORE are ignored when the shell is running in privileged + mode. + +o New bindable readline functions shell-forward-word and shell-backward-word, + which move forward and backward words delimited by shell metacharacters + and honor shell quoting. + +o New bindable readline functions shell-backward-kill-word and shell-kill-word + which kill words backward and forward, but use the same word boundaries + as shell-forward-word and shell-backward-word. + +Bash-3.2 contained the following new features: + +o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing + characters when deciding whether or not a script is a binary file. + +o Quoting the string argument to the [[ command's =~ (regexp) operator now + forces string matching, as with the other pattern-matching operators. + +Bash-3.1 contained the following new features: + +o Bash-3.1 may now be configured and built in a mode that enforces strict + POSIX compliance. + +o The `+=' assignment operator, which appends to the value of a string or + array variable, has been implemented. + +o It is now possible to ignore case when matching in contexts other than + filename generation using the new `nocasematch' shell option. + +Bash-3.0 contained the following new features: + +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 definitions 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/-i/-N, + readonly -a/-f/name=value, trap -l, set +o, + set -b/-m/-o option/-h/-p/-B/-C/-H/-P, + unset -f/-n/-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/-R + bash reads ~/.bashrc for interactive shells, $ENV for non-interactive + bash restricted shell mode is more extensive + bash allows functions and variables with the same name + 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, compopt, mapfile + 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 + autocd shell option and behavior + command-not-found hook with command_not_found_handle shell function + globstar shell option and `**' globbing behavior + |& synonym for `2>&1 |' + ;& and ;;& case action list terminators + case-modifying word expansions and variable attributes + associative arrays + coprocesses using the `coproc' reserved word and variables + shell assignment of a file descriptor used in a redirection to a variable + +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, BASHPID, 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_DIRTRIM + 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/-N, 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, compopt, mapfile + `!' 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 + autocd shell option and behavior + command-not-found hook with command_not_found_handle shell function + globstar shell option and `**' globbing behavior + |& synonym for `2>&1 |' + ;& and ;;& case action list terminators + case-modifying word expansions and variable attributes + associative arrays + coprocesses using the `coproc' reserved word and variables + shell assignment of a file descriptor used in a redirection to a variable + +Things ksh88 has or uses that bash does not: + tracked aliases (alias -t) + variables: ERRNO, FPATH, EDITOR, VISUAL + co-processes (bash uses different syntax) + 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/-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? + +This list is current through ksh93v (10/08/2013) + +New things in ksh-93 not in bash-4.3: + floating point arithmetic, variables, and constants + math library functions, including user-defined math functions + ${!name[sub]} name of subscript for associative array + `.' is allowed in variable names to create a hierarchical namespace + more extensive compound assignment syntax + discipline functions + KEYBD trap + variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, + .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT, + .sh.sig, .sh.stats, .sh.siginfo, .sh.pwdfd, .sh.op_astbin, + .sh.pool + backreferences in pattern matching (\N) + `&' operator in pattern lists for matching (match all instead of any) + exit statuses between 0 and 255 + FPATH and PATH mixing + lexical scoping for local variables in `ksh' functions + no scoping for local variables in `POSIX' functions + $'' \C[.collating-element.] escape sequence + -C/-I invocation options + print -f (bash uses printf) and rest of print builtin options + printf %(type)q, %#q + `fc' has been renamed to `hist' + `.' can execute shell functions + getopts -a + printf %B, %H, %P, %R, %Z modifiers, output base for %d, `=' flag + read -n/-N differ/-v/-S + set -o showme/-o multiline (bash default) + set -K + kill -Q/-q/-L + trap -a + `sleep' and `getconf' builtins (bash has loadable versions) + [[ -R name ]] (checks whether or not name is a nameref) + typeset -C/-S/-T/-X/-h/-s/-c/-M + experimental `type' definitions (a la typedef) using typeset + array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]} + associative array assignments using `;' as element separator + command substitution $(n<#) expands to current byte offset for fd N + new '${ ' form of command substitution, executed in current shell + new >;/<>;/<#pat/<##pat/<#/># redirections + brace expansion printf-like formats + CHLD trap triggered by SIGSTOP and SIGCONT + ~{fd} expansion, which replaces fd with the corresponding path name + $"string" expanded when referenced rather than when first parsed + job "pools", which allow a collection of jobs to be managed as a unit + +New things in ksh-93 present in bash-4.3: + associative arrays + [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 + negative subscripts for indexed array variables + the `!' reserved word + loadable builtins -- but ksh uses `builtin' while bash uses `enable' + new $'...' and $"..." quoting + FIGNORE (but bash uses GLOBIGNORE), HISTCMD + brace expansion and set -B + changes to kill builtin + `command', `builtin', `disown' builtins + echo -e + exec -c/-a + printf %T modifier + read -A (bash uses read -a) + read -t/-d + trap -p + `.' restores the positional parameters when it completes + set -o notify/-C + set -o pipefail + set -G (-o globstar) and ** + POSIX.2 `test' + umask -S + unalias -a + command and arithmetic substitution performed on PS1, PS4, and ENV + command name completion, TAB displaying possible completions + ENV processed only for interactive shells + The `+=' assignment operator + the `;&' case statement "fallthrough" pattern list terminator + csh-style history expansion and set -H + negative offsets in ${param:offset:length} + redirection operators preceded with {varname} to store fd number in varname + DEBUG can force skipping following command + [[ -v var ]] operator (checks whether or not var is set) + typeset -n and `nameref' variables + process substitutions work without /dev/fd + +Section D: Why does bash do some things differently than other Unix shells? + +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. Many Linux distributions +use GNU `which', which is a C program that can understand shell +aliases. + +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 does 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. + +E13) Why does filename completion misbehave if a colon appears in the filename? + +Filename completion (and word completion in general) may appear to behave +improperly if there is a colon in the word to be completed. + +The colon is special to readline's word completion code: it is one of the +characters that breaks words for the completer. Readline uses these characters +in sort of the same way that bash uses $IFS: they break or separate the words +the completion code hands to the application-specific or default word +completion functions. The original intent was to make it easy to edit +colon-separated lists (such as $PATH in bash) in various applications using +readline for input. + +This is complicated by the fact that some versions of the popular +`bash-completion' programmable completion package have problems with the +default completion behavior in the presence of colons. + +The current set of completion word break characters is available in bash as +the value of the COMP_WORDBREAKS variable. Removing `:' from that value is +enough to make the colon not special to completion: + +COMP_WORDBREAKS=${COMP_WORDBREAKS//:} + +You can also quote the colon with a backslash to achieve the same result +temporarily. + +E14) Why does quoting the pattern argument to the regular expression matching + conditional operator (=~) cause regexp matching to stop working? + +In versions of bash prior to bash-3.2, the effect of quoting the regular +expression argument to the [[ command's =~ operator was not specified. +The practical effect was that double-quoting the pattern argument required +backslashes to quote special pattern characters, which interfered with the +backslash processing performed by double-quoted word expansion and was +inconsistent with how the == shell pattern matching operator treated +quoted characters. + +In bash-3.2, the shell was changed to internally quote characters in single- +and double-quoted string arguments to the =~ operator, which suppresses the +special meaning of the characters special to regular expression processing +(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces +them to be matched literally. This is consistent with how the `==' pattern +matching operator treats quoted portions of its pattern argument. + +Since the treatment of quoted string arguments was changed, several issues +have arisen, chief among them the problem of white space in pattern arguments +and the differing treatment of quoted strings between bash-3.1 and bash-3.2. +Both problems may be solved by using a shell variable to hold the pattern. +Since word splitting is not performed when expanding shell variables in all +operands of the [[ command, this allows users to quote patterns as they wish +when assigning the variable, then expand the values to a single string that +may contain whitespace. The first problem may be solved by using backslashes +or any other quoting mechanism to escape the white space in the patterns. + +Bash-4.0 introduces the concept of a `compatibility level', controlled by +several options to the `shopt' builtin. If the `compat31' option is enabled, +bash reverts to the bash-3.1 behavior with respect to quoting the rhs of +the =~ operator. + +E15) Tell me more about the shell compatibility level. + +Bash-4.0 introduced the concept of a `shell compatibility level', specified +as a set of options to the shopt builtin (compat31, compat32, compat40 at +this writing). There is only one current compatibility level -- each +option is mutually exclusive. This list does not mention behavior that is +standard for a particular version (e.g., setting compat32 means that quoting +the rhs of the regexp matching operator quotes special regexp characters in +the word, which is default behavior in bash-3.2 and above). + +compat31 set + - the < and > operators to the [[ command do not consider the current + locale when comparing strings + - quoting the rhs of the regexp matching operator (=~) has no + special effect + +compat32 set + - the < and > operators to the [[ command do not consider the current + locale when comparing strings + +compat40 set + - the < and > operators to the [[ command do not consider the current + locale when comparing strings + - interrupting a command list such as "a ; b ; c" causes the execution + of the entire list to be aborted (in versions before bash-4.0, + interrupting one command in a list caused the next to be executed) + +compat41 set + - interrupting a command list such as "a ; b ; c" causes the execution + of the entire list to be aborted (in versions before bash-4.1, + interrupting one command in a list caused the next to be executed) + - when in posix mode, single quotes in the `word' portion of a + double-quoted parameter expansion define a new quoting context and + are treated specially + +compat42 set + - the replacement string in double-quoted pattern substitution is not + run through quote removal, as in previous versions + +Section F: Things to watch out for on certain Unix versions + +F1) Why can't I use command line editing in my `cmdtool'? + +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. Namerefs are available bash version 4.3, and work as in ksh93. + +G4) How can I make the bash `time' reserved word print timing output that + looks like the output from my system's /usr/bin/time? + +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 +substitution, 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. It's a variant of + + echo .[!.]* ..?* * + +(The ..?* catches files with names of three or more characters beginning +with `..') + +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, Nov. 2006). It covers +bash-3.2 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-4.0) + +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 `xx.yy' variables (including some of the .sh.* variables) and + associated discipline 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 2015. Never make predictions. + +This document is Copyright 1995-2014 by Chester Ramey. + +Permission is hereby granted, without written agreement and +without license or royalty fees, to use, copy, and distribute +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-5.1/doc/INTRO b/bash-5.1/doc/INTRO new file mode 100644 index 0000000..29f208a --- /dev/null +++ b/bash-5.1/doc/INTRO @@ -0,0 +1,187 @@ + BASH - The Bourne-Again Shell + +Bash is the shell, or command language interpreter, that will appear +in the GNU operating system. Bash is an sh-compatible shell that +incorporates useful features from the Korn shell (ksh) and C shell +(csh). It is intended to conform to the IEEE POSIX P1003.2/ISO 9945.2 +Shell and Tools standard. It offers functional improvements over sh +for both programming and interactive use. In addition, most sh scripts +can be run by Bash without modification. + +Bash is quite portable. It uses a configuration system that discovers +characteristics of the compilation platform at build time, and may +therefore be built on nearly every version of UNIX. Ports to +UNIX-like systems such as QNX and Minix and to non-UNIX systems such +as OS/2, Windows 95, and Windows NT are available. + +Bash includes the following features: + +Editing and Completion + +Bash offers a command-line editing facility which permits users to +edit command lines using familiar emacs or vi-style editing commands. +Editing allows corrections to be made without having to erase back +to the point of error or start the command line anew. The editing +facilities include a feature that allows users to complete command and +file names. + +The Bash line editing library is fully customizable. Users may define +their own key bindings -- the action taken when a key is pressed. A +number of variables to fine-tune editing behavior are also available. + +History and Command Re-entry + +The Bash history feature remembers commands entered to the shell and +allows them to be recalled and re-executed. The history list may be +of unlimited size. Bash allows users to search for previous commands +and reuse portions of those commands when composing new ones. The +history list may be saved across shell sessions. + +Bash allows users to control which commands are saved on the history +list. + +Job Control + +On systems that support it, Bash provides an interface to the +operating system's job control facilities, which allow processes +to be suspended and restarted, and moved between the foreground +and background. Bash allows users to selectively `forget' about +background jobs. + +Shell Functions and Aliases + +These mechanisms are available to bind a user-selected identifier to a +list of commands that will be executed when the identifier is used as +a command name. Functions allow local variables and recursion, and +have access to the environment of the calling shell. Aliases may be +used to create a mnemonic for a command name, expand a single word to +a complex command, or ensure that a command is called with a basic set +of options. + +Arrays + +Bash-2.0 supports indexed arrays of unlimited size. The subscript for +an array is an arithmetic expression. Arrays may be assigned to with +a new compound assignment syntax, and several builtins have options to +operate on array variables. Bash includes a number of built-in array +variables. + +Arithmetic + +Bash allows users to perform integer arithmetic in any base from two +to sixty-four. Nearly all of the C language arithmetic operators are +available with the same syntax and precedence as in C. Arithmetic +expansion allows an arithmetic expression to be evaluated and the +result substituted into the command line. Shell variables can be used +as operands, and the value of an expression may be assigned to a +variable. + +An arithmetic expression may be used as a command; the exit status of +the command is the value of the expression. + +ANSI-C Quoting + +There is a new quoting syntax that allows backslash-escaped characters +in strings to be expanded according to the ANSI C standard. + +Tilde Expansion + +Users' home directories may be expanded using this feature. Words +beginning with a tilde may also be expanded to the current or previous +working directory. + +Brace Expansion + +Brace expansion is a convenient way to generate a list of strings that +share a common prefix or suffix. + +Substring Capabilities + +Bash allows new strings to be created by removing leading or trailing +substrings from existing variable values, or by specifying a starting +offset and length. Portions of variable values may be matched against +shell patterns and the matching portion removed or a new value +substituted. + +Indirect Variable Expansion + +Bash makes it easy to find the value of a shell variable whose name is +the value of another variable. + +Expanded I/O Capabilities + +Bash provides several input and output features not available in sh, +including the ability to: + + o specify a file or file descriptor for both input and output + o read from or write to asynchronous processes using named pipes + o read lines ending in backslash + o display a prompt on the terminal before a read + o format menus and interpret responses to them + o echo lines exactly as input without escape processing + +Control of Builtin Commands + +Bash implements several builtin commands to give users more control +over which commands are executed. The enable builtin allows other +builtin commands to be selectively enabled or disabled. The command +and builtin builtins change the order in which the shell searches for +commands. + +On systems that provide dynamic loading, new builtins may be loaded +into a running shell from a shared object file. These new builtins +have access to all of the shell facilities. + +Help + +Bash includes a built-in help facility. + +Shell Optional Behavior + +There is a great deal of customizable shell behavior. The shopt +builtin command provides a unified interface that allows users to +alter shell defaults. + +Prompt Customization + +Bash allows the primary and secondary prompts to be customized by +interpreting a number of backslash-escaped special characters. +Parameter and variable expansion is also performed on the values of +the primary and secondary prompt strings before they are displayed. + +Security + +Bash provides a restricted shell environment. It is also possible to +control the execution of setuid/setgid scripts. + +Directory Stack + +Bash provides a `directory stack', to which directories may be added +and removed. The current directory may be changed to any directory in +the stack. It is easy to toggle between two directories in the stack. +The directory stack may be saved and restored across different shell +invocations. + +POSIX Mode + +Bash is nearly completely conformant to POSIX.2. POSIX mode changes +those few areas where the Bash default behavior differs from the +standard to match the standard. In POSIX mode, Bash is POSIX.2 +compliant. + +Internationalization + +Bash provides a new quoting syntax that allows strings to be +translated according to the current locale. The locale in which the +shell itself runs may also be changed, so that the shell messages +themselves may be language-specific. + +The command-line editing facilities allow the input of eight-bit +characters, so most of the ISO-8859 family of character sets are +supported. + +Command Timing + +Bash allows external commands, shell builtin commands and shell functions +to be timed. The format used to display the timing information may be +changed by the user. diff --git a/bash-5.1/doc/Makefile.in b/bash-5.1/doc/Makefile.in new file mode 100644 index 0000000..1e5c420 --- /dev/null +++ b/bash-5.1/doc/Makefile.in @@ -0,0 +1,340 @@ +# This Makefile is for the Bash/documentation directory -*- text -*-. +# +# Copyright (C) 2003-2015 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_VERSION = @PACKAGE_VERSION@ + +PACKAGE_TARNAME = @PACKAGE_TARNAME@ + +# +SHELL = @MAKE_SHELL@ +RM = rm -f + +topdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +datarootdir = @datarootdir@ + +infodir = @infodir@ + +docdir = @docdir@ + +# 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 +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 +# experimental; uses external texi2dvi for now; this needs pdftex to be present +TEXI2PDF = texi2dvi --pdf + +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 +# added the -P -c for benefit of Mac OS X, which insists on adding colors if +# it's not present +NROFF = groff -Tascii -P -c + +# 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)/fdl.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} $< + +#.texi.pdf: +# $(RM) $@ +# -${TEXI2PDF} $< + +all: ps info dvi text html $(MAN2HTML) +nodvi: ps info text html +everything: all pdf + +PSFILES = bash.ps bashbug.ps article.ps builtins.ps rbash.ps +DVIFILES = bashref.dvi bashref.ps +INFOFILES = bashref.info bash.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 || { ${RM} $@ ; exit 1; } + +bashref.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi + +# experimental +bashref.pdf: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + ${SET_TEXINPUTS} $(TEXI2PDF) $(srcdir)/bashref.texi || { ${RM} $@ ; exit 1; } + + +# can also use: +# $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi +bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + $(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi + +bash.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi -o $@ + +bash.txt: bash.1 +bash.ps: bash.1 +bash.html: bash.1 +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 +# experimental +bashref.pdf: bashref.texi +bash.pdf: bash.ps +rose94.pdf: rose94.ps + +OTHER_DOCS = $(srcdir)/FAQ $(srcdir)/INTRO +OTHER_INSTALLED_DOCS = FAQ INTRO + +$(MAN2HTML): ${topdir}/support/man2html.c + -( cd ${BUILD_DIR}/support ; ${MAKE} ${MFLAGS} man2html) + +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) + -$(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(docdir) + -if test -n "$(htmldir)" ; then \ + $(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(htmldir) ; \ + fi + +install: info installdirs + -$(INSTALL_DATA) $(srcdir)/bash.1 $(DESTDIR)$(man1dir)/bash${man1ext} + -$(INSTALL_DATA) $(srcdir)/bashbug.1 $(DESTDIR)$(man1dir)/bashbug${man1ext} + -$(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir) +# uncomment the next lines to install the builtins man page +# sed 's:bash\.1:man1/&:' $(srcdir)/builtins.1 > $${TMPDIR:-/var/tmp}/builtins.1 +# -$(INSTALL_DATA) $${TMPDIR:-/var/tmp}/builtins.1 $(DESTDIR)$(man1dir)/bash_builtins${man1ext} +# -$(RM) $${TMPDIR:-/var/tmp}/builtins.1 + -if test -f bash.info; then d=.; else d=$(srcdir); fi; \ + $(INSTALL_DATA) $$d/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 + +install_builtins: installdirs + sed 's:bash\.1:man1/&:' $(srcdir)/builtins.1 > $${TMPDIR:-/var/tmp}/builtins.1 + -$(INSTALL_DATA) $${TMPDIR:-/var/tmp}/builtins.1 $(DESTDIR)$(man1dir)/bash_builtins${man1ext} + -$(RM) $${TMPDIR:-/var/tmp}/builtins.1 + +install_everything: install install_builtins + +install-html: html + -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)$(man1dir)/bash_builtins${man1ext} + $(RM) $(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 --delete --dir-file=$(DESTDIR)$(infodir)/dir $(DESTDIR)$(infodir)/bash.info; \ + else true; fi + -( cd $(DESTDIR)$(docdir) && $(RM) $(OTHER_INSTALLED_DOCS) ) + -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 + $(SHELL) ./mkrbash + cmp -s RBASH ../RBASH || mv RBASH ../RBASH + $(RM) RBASH + +xdist: everything inst posix rbash diff --git a/bash-5.1/doc/README b/bash-5.1/doc/README new file mode 100644 index 0000000..e3a1d24 --- /dev/null +++ b/bash-5.1/doc/README @@ -0,0 +1,36 @@ +This directory contains the bash documentation. + +FAQ - a set of frequently-asked questions about Bash with answers +INTRO - a short introduction to bash +article.ms - an article I wrote about bash for The Linux Journal +bash.1 - the bash man page +builtins.1 - a man page that documents the builtins, extracted from bash.1 +bashref.texi - the `bash reference manual' +bashref.info - the `bash reference manual' processed by `makeinfo' +readline.3 - the readline man page + +The `.ps' files are postscript versions of the above. The `.html' +files are HTML versions of the man page and reference manual. The +`.0' files are formatted manual pages. The `.txt' versions are +ascii -- the output of `groff -Tascii'. + +The rest of this file explains how to use the `builtins.1' man page. + +For each command in the list of builtins create a file in man/man1 called: + +${command}.1 + +eg. +for.1 +type.1 +alias.1 +etc. + +All these files are identical as follows: + +jaws@jaws(264)$ cat alias.1 +.so man1/builtins.1 +jaws@jaws(265)$ + +Make sure you adjust the .so line in builtins.1 to reflect where you +put it. diff --git a/bash-5.1/doc/aosa-bash-full.pdf b/bash-5.1/doc/aosa-bash-full.pdf new file mode 100644 index 0000000000000000000000000000000000000000..01815492cc39e4c92cfecf6b0128f03542c34be6 GIT binary patch literal 393895 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 *B?8x6U)IuDf+^kSTI}~a|7^X{RAQls_ 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%0AQRB_L3>AXkcB%AnQjHE}A~N|qR!?Hj6gVo2 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

acK2j1vM`k-!%cMrWPWQnHF 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

Lo*QaWMd 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 KO> setpagedevice +%%EndFeature +%%IncludeResource: font Times-Bold +%%IncludeResource: font Times-Italic +%%IncludeResource: font Times-Roman +%%IncludeResource: font Courier +grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 +def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron +/scaron/zcaron/Ydieresis/trademark/quotesingle/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-Roman@0 ENC0/Times-Roman RE +/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 12/Times-Bold@0 SF(Bash \255 The GNU shell*)227.904 123 Q/F1 10 +/Times-Italic@0 SF(Chet Rame)263.85 159 Q(y)-.3 E(Case W)221.72 171 Q +(estern Reserve Univer)-.92 E(sity)-.1 E -.15(ch)250.425 183 S +(et@po.cwru.edu).15 E/F2 10/Times-Bold@0 SF 2.5(1. Intr)72 219 R +(oduction)-.18 E(Bash)97 234.6 Q/F3 10/Times-Roman@0 SF .904 +(is the shell, or command language interpreter)3.404 F 3.404(,t)-.4 G +.904(hat will appear in the GNU operating system.)-3.404 F 1.075 +(The name is an acron)72 246.6 R 1.075(ym for the \231Bourne-Ag)-.15 F +1.075(ain SHell\232, a pun on Ste)-.05 F 1.375 -.15(ve B)-.25 H 1.075 +(ourne, the author of the direct).15 F .206(ancestor of the current)72 +258.6 R/F4 8/Times-Roman@0 SF(UNIX)2.706 E F3 2.706C(hell)-2.706 E +F1(/bin/sh)2.706 E F3 2.706(,w)C .205(hich appeared in the Se)-2.706 F +-.15(ve)-.25 G .205(nth Edition Bell Labs Research v).15 F(er)-.15 E(-) +-.2 E(sion of)72 270.6 Q/F5 9/Times-Roman@0 SF(UNIX)2.5 E F3(.)A .387 +(Bash is an)97 286.2 R F2(sh)2.887 E F3 .387 +(\255compatible shell that incorporates useful features from the K)B +.388(orn shell \()-.35 F F2(ksh)A F3 2.888(\)a)C .388(nd the C)-2.888 F +.023(shell \()72 298.2 R F2(csh)A F3 .023 +(\), described later in this article.)B .022 +(It is ultimately intended to be a conformant implementation of the) +5.022 F 3.568(IEEE POSIX Shell and Utilities speci\214cation \(IEEE W)72 +310.2 R 3.568(orking Group 1003.2\).)-.8 F 3.569(It of)8.569 F 3.569 +(fers functional)-.25 F(impro)72 322.2 Q -.15(ve)-.15 G(ments o).15 E +-.15(ve)-.15 G 2.5(rs).15 G 2.5(hf)-2.5 G(or both interacti)-2.5 E .3 +-.15(ve a)-.25 H(nd programming use.).15 E .697 +(While the GNU operating system will most lik)97 337.8 R .697 +(ely include a v)-.1 F .697(ersion of the Berk)-.15 F(ele)-.1 E 3.197 +(ys)-.15 G .696(hell csh, Bash)-3.197 F .015(will be the def)72 349.8 R +.015(ault shell.)-.1 F(Lik)5.015 E 2.515(eo)-.1 G .015(ther GNU softw) +-2.515 F .016(are, Bash is quite portable.)-.1 F .016 +(It currently runs on nearly e)5.016 F -.15(ve)-.25 G(ry).15 E -.15(ve) +72 361.8 S .523(rsion of).15 F F4(UNIX)3.023 E F3 .523(and a fe)3.023 F +3.023(wo)-.25 G .523 +(ther operating systems \255 an independently-supported port e)-3.023 F +.523(xists for OS/2, and)-.15 F .706 +(there are rumors of ports to DOS and W)72 373.8 R(indo)-.4 E .706 +(ws NT)-.25 F 5.706(.P)-.74 G .706(orts to)-5.706 F F5(UNIX)3.206 E F3 +(-lik)A 3.206(es)-.1 G .706(ystems such as QNX and Minix)-3.206 F +(are part of the distrib)72 385.8 Q(ution.)-.2 E .405 +(The original author of Bash w)97 401.4 R .405(as Brian F)-.1 F .405 +(ox, an emplo)-.15 F .405(yee of the Free Softw)-.1 F .405(are F)-.1 F +2.905(oundation. The)-.15 F(cur)2.905 E(-)-.2 E(rent de)72 413.4 Q -.15 +(ve)-.25 G(loper and maintainer is Chet Rame).15 E 1.3 -.65(y, a v)-.15 +H(olunteer who w).45 E(orks at Case W)-.1 E(estern Reserv)-.8 E 2.5(eU) +-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(.)-.65 E F2 2.5(2. What')72 +437.4 R 2.5(sP)-.37 G(OSIX, anyway?)-2.5 E F1(POSIX)97 453 Q F3 .343 +(is a name originally coined by Richard Stallman for a f)2.843 F .343 +(amily of open system standards based)-.1 F(on)72 465 Q F5(UNIX)3.24 E +F3 5.74(.T)C .74(here are a number of aspects of)-5.74 F F5(UNIX)3.24 E +F3 .74(under consideration for standardization, from the basic)3.24 F +.192(system services at the system call and C library le)72 477 R -.15 +(ve)-.25 G 2.692(lt).15 G 2.692(oa)-2.692 G .192 +(pplications and tools to system administration and)-2.692 F 2.5 +(management. Each)72 489 R(area of standardization is assigned to a w) +2.5 E(orking group in the 1003 series.)-.1 E 2.814 +(The POSIX Shell and Utilities standard has been de)97 504.6 R -.15(ve) +-.25 G 2.814(loped by IEEE W).15 F 2.813(orking Group 1003.2)-.8 F .254 +(\(POSIX.2\).\210 It concentrates on the command interpreter interf)72 +516.6 R .253(ace and utility programs commonly e)-.1 F -.15(xe)-.15 G +(cuted).15 E 1.112(from the command line or by other programs.)72 528.6 +R 1.112(An initial v)6.112 F 1.113 +(ersion of the standard has been appro)-.15 F -.15(ve)-.15 G 3.613(da) +.15 G(nd)-3.613 E .365(published by the IEEE, and w)72 540.6 R .365 +(ork is currently underw)-.1 F .365(ay to update it.)-.1 F .365 +(There are four primary areas of w)5.365 F(ork)-.1 E +(in the 1003.2 standard:)72 552.6 Q 21.5<8341>72 568.2 S .835 +(spects of the shell')-21.5 F 3.335(ss)-.55 G .835 +(yntax and command language.)-3.335 F 3.335(An)5.835 G .835 +(umber of special b)-3.335 F .835(uiltins such as)-.2 F F2(cd)3.335 E F3 +(and)3.335 E F2(exec)97 580.2 Q F3 .545(are being speci\214ed as part o\ +f the shell, since their functionality usually cannot be implemented) +3.046 F(by a separate e)97 592.2 Q -.15(xe)-.15 G(cutable;).15 E 21.5 +<8341>72 607.8 S .926 +(set of utilities to be called by shell scripts and applications.) +-18.074 F .927(Examples are programs lik)5.927 F(e)-.1 E F1 .927 +(sed, tr)3.427 F(,)-1.11 E F3(and)97 619.8 Q F1(awk.)2.797 E F3 .297 +(Utilities commonly implemented as shell b)5.297 F .296 +(uiltins are described in this section, such as)-.2 F F2(test)2.796 E F3 +(and)97 631.8 Q F2(kill)3.422 E F3 5.922(.A)C 3.422(ne)-5.922 G .922 +(xpansion of this section')-3.572 F 3.423(ss)-.55 G .923 +(cope, termed the User Portability Extension, or UPE, has)-3.423 F +(standardized interacti)97 643.8 Q .3 -.15(ve p)-.25 H(rograms such as) +.15 E F1(vi)2.5 E F3(and)2.5 E F1(mailx;)2.5 E F3 21.5<8341>72 659.4 S +.288(group of functional interf)-18.712 F .287(aces to services pro)-.1 +F .287(vided by the shell, such as the traditional)-.15 F/F6 10 +/Courier@0 SF(system\(\))2.787 E F3 3.289(Cl)97 671.4 S .789 +(ibrary function.)-3.289 F .789(There are functions to perform shell w) +5.789 F .789(ord e)-.1 F .79(xpansions, perform \214lename e)-.15 F +(xpan-)-.15 E 3.624(sion \()97 683.4 R F1(globbing)A F3 3.624 +(\), obtain v)B 3.624(alues of POSIX.2 system con\214guration v)-.25 F +3.623(ariables, retrie)-.25 F 3.923 -.15(ve v)-.25 H 3.623(alues of)-.1 +F .32 LW 144 691.4 72 691.4 DL F4(*An earlier v)72 703.2 Q +(ersion of this article appeared in The Linux Journal.)-.12 E(\210IEEE,) +72 715 Q/F7 8/Times-Italic@0 SF 1.231(IEEE Standar)3.231 F 3.231(df) +-.296 G 1.231(or Information T)-3.231 F(ec)-.736 E(hnolo)-.12 E 1.231 +(gy -- P)-.08 F 1.231(ortable Oper)-.64 F 1.232 +(ating System Interface \(POSIX\) P)-.12 F 1.232(art 2:)-.64 F +(Shell and Utilities)72 725 Q F4 2(,1)C(992.)-2 E 0 Cg EP +%%Page: 2 2 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(-2-)282.17 48 Q(en)97 84 Q(vironment v)-.4 E +(ariables \()-.25 E/F1 10/Courier@0 SF(getenv\(\))A F0 +(\), and other services;).833 E 21.5<8341>72 99.6 S(suite of \231de)-19 +E -.15(ve)-.25 G(lopment\232 utilities such as).15 E/F2 10 +/Times-Italic@0 SF(c89)2.5 E F0(\(the POSIX.2 v)2.5 E(ersion of)-.15 E +F2(cc)2.5 E F0(\), and)A F2(yacc.)2.5 E F0 .483 +(Bash is concerned with the aspects of the shell')97 115.2 R 2.983(sb) +-.55 G(eha)-2.983 E .484(vior de\214ned by POSIX.2.)-.2 F .484 +(The shell command)5.484 F 1.439 +(language has of course been standardized, including the basic \215o)72 +127.2 R 3.938(wc)-.25 G 1.438(ontrol and program e)-3.938 F -.15(xe)-.15 +G 1.438(cution con-).15 F 1.284 +(structs, I/O redirection and pipelining, ar)72 139.2 R 1.284 +(gument handling, v)-.18 F 1.284(ariable e)-.25 F 1.284 +(xpansion, and quoting.)-.15 F(The)6.285 E F2(special)3.785 E F0 -.2(bu) +72 151.2 S .676 +(iltins, which must be implemented as part of the shell to pro).2 F .676 +(vide the desired functionality)-.15 F 3.176(,a)-.65 G .676 +(re speci\214ed)-3.176 F .7(as being part of the shell; e)72 163.2 R .7 +(xamples of these are)-.15 F/F3 10/Times-Bold@0 SF -2.3 -.15(ev a)3.201 +H(l).15 E F0(and)3.201 E F3(export)3.201 E F0 5.701(.O)C .701 +(ther utilities appear in the sections of)-5.701 F .256(POSIX.2 not de) +72 175.2 R -.2(vo)-.25 G .256(ted to the shell which are commonly \(and\ + in some cases must be\) implemented as b).2 F(uiltin)-.2 E .213 +(commands, such as)72 187.2 R F3 -.18(re)2.713 G(ad).18 E F0(and)2.713 E +F3(test)2.713 E F0 5.213(.P)C .213 +(OSIX.2 also speci\214es aspects of the shell')-5.213 F 2.713(si)-.55 G +(nteracti)-2.713 E .513 -.15(ve b)-.25 H(eha).15 E .214(vior as part)-.2 +F .598(of the UPE, including job control and command line editing.)72 +199.2 R .598(Interestingly enough, only)5.598 F F2(vi)3.098 E F0 .598 +(-style line edit-)B(ing commands ha)72 211.2 Q .3 -.15(ve b)-.2 H +(een standardized;).15 E F2(emacs)2.5 E F0 +(editing commands were left out due to objections.)2.5 E 1.128 +(While POSIX.2 includes much of what the shell has traditionally pro)97 +226.8 R 1.129(vided, some important things)-.15 F(ha)72 238.8 Q .344 +-.15(ve b)-.2 H .044(een omitted as being \231be).15 F .044 +(yond its scope.)-.15 F 5.043<9a54>-.7 G .043 +(here is, for instance, no mention of a dif)-5.043 F .043 +(ference between a)-.25 F F2(lo)72 250.8 Q(gin)-.1 E F0 1.445 +(shell and an)3.945 F 3.945(yo)-.15 G 1.445(ther interacti)-3.945 F +1.745 -.15(ve s)-.25 H 1.446 +(hell \(since POSIX.2 does not specify a login program\).).15 F 1.446 +(No \214x)6.446 F(ed)-.15 E(startup \214les are de\214ned, either \255 \ +the standard does not mention)72 262.8 Q F2(.pr)2.5 E(o\214le)-.45 E F0 +(.)A F3 2.5(3. Basic)72 286.8 R(Bash featur)2.5 E(es)-.18 E F0 1.448 +(Since the Bourne shell pro)97 302.4 R 1.448 +(vides Bash with most of its philosophical underpinnings, Bash inherits) +-.15 F .64(most of its features and functionality from sh.)72 314.4 R +.641(Bash implements all of the traditional sh \215o)5.641 F 3.141(wc) +-.25 G .641(ontrol con-)-3.141 F .8(structs \()72 326.4 R F2(for)A F0(,) +A F2(if)3.3 E F0(,)A F2(while)3.3 E F0 3.3(,e)C 3.3(tc.\). All)-3.3 F +.799(of the Bourne shell b)3.3 F .799 +(uiltins, including those not speci\214ed in the POSIX.2)-.2 F .536 +(standard, appear in Bash.)72 338.4 R(Shell)5.536 E F2(functions)3.036 E +F0 3.036(,i)C .536(ntroduced in the SVR2 v)-3.036 F .537 +(ersion of the Bourne shell, are similar)-.15 F .779 +(to shell scripts, b)72 350.4 R .779 +(ut are de\214ned using a special syntax and are e)-.2 F -.15(xe)-.15 G +.779(cuted in the same process as the calling).15 F 2.841(shell. Bash)72 +362.4 R .341(has shell functions which beha)2.841 F .641 -.15(ve i)-.2 H +2.841(naf).15 G .341(ashion upw)-2.941 F .342 +(ard-compatible with sh functions.)-.1 F .342(There are)5.342 F 1.447 +(certain shell v)72 374.4 R 1.446 +(ariables that Bash interprets in the same w)-.25 F 1.446 +(ay as sh, such as)-.1 F F3(PS1)3.946 E F0(,)A F3(IFS)3.946 E F0 3.946 +(,a)C(nd)-3.946 E F3 -.74(PA)3.946 G(TH)-.21 E F0 6.446(.B)C(ash)-6.446 +E 1.423(implements essentially the same grammar)72 386.4 R 3.924(,p)-.4 +G 1.424(arameter and v)-3.924 F 1.424(ariable e)-.25 F 1.424 +(xpansion semantics, redirection, and)-.15 F 1.06 +(quoting as the Bourne shell.)72 398.4 R 1.06(Where dif)6.06 F 1.06 +(ferences appear between the POSIX.2 standard and traditional sh)-.25 F +(beha)72 410.4 Q(vior)-.2 E 2.5(,B)-.4 G(ash follo)-2.5 E(ws POSIX.)-.25 +E 1.608(The K)97 426 R 1.608(orn Shell \()-.35 F F3(ksh)A F0 4.108(\)i)C +4.108(sad)-4.108 G 1.608(escendant of the Bourne shell written at A) +-4.108 F 1.609(T&T Bell Laboratories by)-1.11 F(Da)72 438 Q 1.059(vid K) +-.2 F 3.559(orn\207. It)-.35 F(pro)3.559 E 1.059 +(vides a number of useful features that POSIX and Bash ha)-.15 F 1.359 +-.15(ve a)-.2 H 3.558(dopted. Man).15 F 3.558(yo)-.15 G 3.558(ft)-3.558 +G(he)-3.558 E(interacti)72 450 Q 1.312 -.15(ve f)-.25 H 1.012 +(acilities in POSIX.2 ha).05 F 1.312 -.15(ve t)-.2 H 1.012 +(heir roots in the ksh: for e).15 F 1.013 +(xample, the POSIX and ksh job control)-.15 F -.1(fa)72 462 S .513 +(cilities are nearly identical. Bash includes features from the K).1 F +.513(orn Shell for both interacti)-.35 F .813 -.15(ve u)-.25 H .513 +(se and shell).15 F 3.905(programming. F)72 474 R 1.405 +(or programming, Bash pro)-.15 F 1.405(vides v)-.15 F 1.405 +(ariables such as)-.25 F F3(RANDOM)3.905 E F0(and)3.905 E F3(REPL)3.905 +E(Y)-.92 E F0 3.905(,t)C(he)-3.905 E F3(typeset)3.905 E F0 -.2(bu)72 486 +S .398(iltin, the ability to remo).2 F .698 -.15(ve s)-.15 H .398 +(ubstrings from v).15 F .398 +(ariables based on patterns, and shell arithmetic.)-.25 F F3(RANDOM) +5.397 E F0 -.15(ex)72 498 S .489 +(pands to a random number each time it is referenced; assigning a v).15 +F .49(alue to)-.25 F F3(RANDOM)2.99 E F0 .49(seeds the random)2.99 F +.055(number generator)72 510 R(.)-.55 E F3(REPL)5.055 E(Y)-.92 E F0 .054 +(is the def)2.554 F .054(ault v)-.1 F .054(ariable used by the)-.25 F F3 +-.18(re)2.554 G(ad).18 E F0 -.2(bu)2.554 G .054(iltin when no v).2 F +.054(ariable names are sup-)-.25 F .742(plied as ar)72 522 R 3.243 +(guments. The)-.18 F F3(typeset)3.243 E F0 -.2(bu)3.243 G .743 +(iltin is used to de\214ne v).2 F .743(ariables and gi)-.25 F 1.043 -.15 +(ve t)-.25 H .743(hem attrib).15 F .743(utes such as)-.2 F F3 -.18(re) +3.243 G(ad-).18 E(only)72 534 Q F0 5.512(.B)C .512(ash arithmetic allo) +-5.512 F .512(ws the e)-.25 F -.25(va)-.25 G .511(luation of an e).25 F +.511(xpression and the substitution of the result.)-.15 F .511(Shell v) +5.511 F(ari-)-.25 E .222 +(ables may be used as operands, and the result of an e)72 546 R .222 +(xpression may be assigned to a v)-.15 F 2.722(ariable. Nearly)-.25 F +.222(all of)2.722 F(the operators from the C language are a)72 558 Q +-.25(va)-.2 G(ilable, with the same precedence rules:).25 E F1 6($e)97 +576 S(cho $\(\(3 + 5 * 32\)\))-6 E(163)97 588 Q F0 -.15(Fo)72 609.6 S +3.24(ri).15 G(nteracti)-3.24 E 1.04 -.15(ve u)-.25 H .74 +(se, Bash implements ksh-style aliases and b).15 F .74(uiltins such as) +-.2 F F3(fc)3.24 E F0 .74(\(discussed belo)3.24 F .74(w\) and)-.25 F F3 +(jobs)3.24 E F0(.)A .291(Bash aliases allo)72 621.6 R 2.791(was)-.25 G +.291(tring to be substituted for a command name.)-2.791 F(The)5.291 E +2.791(yc)-.15 G .291(an be used to create a mnemonic)-2.791 F .568 +(for a)72 633.6 R/F4 9/Times-Roman@0 SF(UNIX)3.068 E F0 .568 +(command name \()3.068 F F1 .568(alias del=rm)B F0 .568(\), to e)B .567 +(xpand a single w)-.15 F .567(ord to a comple)-.1 F 3.067(xc)-.15 G .567 +(ommand \()-3.067 F F1(alias)A .255 +(news='xterm -g 80x45 -title trn -e trn -e -S1 -N &')72 645.6 R F0 .255 +(\), or to ensure that a command)B(is in)72 657.6 Q -.2(vo)-.4 G -.1(ke) +.2 G 2.5(dw).1 G(ith a basic set of options \()-2.5 E F1 +(alias ls="/bin/ls -F")A F0(\).)A .293(The C shell \()97 673.2 R F3(csh) +A F0 .293(\)\207, originally written by Bill Jo)B 2.792(yw)-.1 G .292 +(hile at Berk)-2.792 F(ele)-.1 E 1.592 -.65(y, i)-.15 H 2.792(sw).65 G +.292(idely used and quite popular)-2.792 F 1.499(for its interacti)72 +685.2 R 1.799 -.15(ve f)-.25 H 3.999(acilities. Bash).05 F 1.499 +(includes a csh-compatible history e)3.999 F 1.5 +(xpansion mechanism \(\231! history\232\),)-.15 F .019(brace e)72 697.2 +R .018(xpansion, access to a stack of directories via the)-.15 F F3 +(pushd)2.518 E F0(,)A F3(popd)2.518 E F0 2.518(,a)C(nd)-2.518 E F3(dirs) +2.518 E F0 -.2(bu)2.518 G .018(iltins, and tilde e).2 F(xpansion,)-.15 E +1.293(to generate users' home directories.)72 709.2 R -.35(Ti)6.294 G +1.294(lde e).35 F 1.294(xpansion has also been adopted by both the K) +-.15 F 1.294(orn Shell and)-.35 F .32 LW 144 717.2 72 717.2 DL/F5 8 +/Times-Roman@0 SF(\207Morris Bolsk)72 727.2 Q 2(ya)-.12 G(nd Da)-2 E +(vid K)-.16 E(orn,)-.28 E/F6 8/Times-Italic@0 SF(The K)2 E +(ornShell Command and Pr)-.32 E -.08(og)-.36 G -.12(ra).08 G +(mming Langua).12 E -.08(ge)-.08 G F5 2(,P).08 G(rentice Hall, 1989.)-2 +E 0 Cg 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 1.532(vidual b)72 410.4 R 1.532 +(uiltins or write a function to replace a b)-.2 F 1.533 +(uiltin, or a means to e)-.2 F 1.533(xport a shell function to a child) +-.15 F(process.)72 422.4 Q .32 +(Bash has closed a long-standing shell security hole by not using the)97 +438 R F1($IFS)2.82 E F0 -.25(va)2.82 G .32(riable to split each w).25 F +(ord)-.1 E 1.254(read by the shell, b)72 450 R 1.254 +(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 715.2 R 1.599 -.52(y, A)-.08 H 2.559(nI).52 G .559 +(ntroduction to the C Shell,)-2.559 F/F5 8/Times-Italic@0 SF .558 +(UNIX User')2.558 F 2.558(sS)-.32 G .558(upplementary Documents)-2.558 F +F4 2.558(,U)C(ni)-2.558 E -.12(ve)-.2 G .558(rsity of California at).12 +F(Berk)72 725.2 Q(ele)-.08 E 1.04 -.52(y, 1)-.12 H(986.).52 E 0 Cg 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 0 Cg 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 .518(Bash implements the)97 310.8 R F1(bind)3.018 E F0 -.2(bu)3.018 G +.518(iltin for more dynamic control of readline than the startup \214le\ + permits.).2 F F1(Bind)72 322.8 Q F0 .25(is used in se)2.75 F -.15(ve) +-.25 G .25(ral w).15 F 2.75(ays. In)-.1 F/F3 10/Times-Italic@0 SF(list) +2.75 E F0 .25(mode, it can display the current k)2.75 F .55 -.15(ey b) +-.1 H .25(indings, list all the readline edit-).15 F .149(ing directi)72 +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.759 E F0(and) +2.759 E F1(fc)2.759 E F0 -.2(bu)2.759 G .259 +(iltins to manipulate the history list.).2 F .26(The v)5.259 F .26 +(alue of)-.25 F F1($HISTFILE)2.76 E F0 .26(speci\214es the \214le where) +2.76 F .49(Bash writes the command history on e)72 594 R .489 +(xit and reads it on startup.)-.15 F F1($HISTSIZE)5.489 E F0 .489 +(is used to limit the number)2.989 F .642(of commands sa)72 606 R -.15 +(ve)-.2 G 3.142(di).15 G 3.142(nt)-3.142 G .642(he history)-3.142 F(.) +-.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 0 Cg 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 0 Cg 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 0 Cg 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 0 Cg 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 0 Cg 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 .547 +(shell running with job control acti)72 108 R .847 -.15(ve t)-.25 H +3.047<6f99>.15 G(for)-3.047 E .547 +(get about\232 one or more background jobs in its internal jobs ta-)-.18 +F 3.866(ble. Using)72 120 R F1(getconf)3.866 E F0 3.866(,f)C 1.366(or e) +-3.866 F 1.366(xample, a user could retrie)-.15 F 1.666 -.15(ve a v)-.25 +H 1.365(alue for)-.1 F F1($P)3.865 E -.95(AT)-.74 G(H).95 E F0 1.365 +(guaranteed to \214nd all of the)3.865 F .884 +(POSIX standard utilities, or \214nd out ho)72 132 R 3.385(wl)-.25 G +.885 +(ong \214lenames may be in the \214le system containing a speci\214ed) +-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 +678.2 72 678.2 DL/F5 8/Times-Roman@0 SF .781 +(\207S. R. Bourne, \231UNIX T)72 688.2 R .781(ime-Sharing System:)-.28 F +.781(The UNIX Shell\232,)4.781 F/F6 8/Times-Italic@0 SF .78 +(Bell System T)2.78 F(ec)-.736 E .78(hnical J)-.12 F(ournal)-.2 E F5 +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 0 Cg +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 710 72 710 DL/F4 8/Times-Roman@0 SF +(*BSD/386 is a trademark of Berk)72 720 Q(ele)-.08 E 2(yS)-.12 G(oftw)-2 +E(are Design, Inc.)-.08 E 0 Cg EP +%%Trailer +end +%%EOF diff --git a/bash-5.1/doc/article.txt b/bash-5.1/doc/article.txt new file mode 100644 index 0000000..c19ff92 --- /dev/null +++ b/bash-5.1/doc/article.txt @@ -0,0 +1,1111 @@ + + + + + + + + + + Bash - The GNU shell* + + + Chet Ramey + Case Western Reserve University + chet@po.cwru.edu + + + + + + +_1. _I_n_t_r_o_d_u_c_t_i_o_n + + _B_a_s_h is the shell, or command language interpreter, +that will appear in the GNU operating system. The name is +an acronym for the "Bourne-Again SHell", a pun on Steve +Bourne, the author of the direct ancestor of the current +UNIX|- shell /_b_i_n/_s_h, which appeared in the Seventh Edition +Bell Labs Research version of UNIX. + + Bash is an sh-compatible shell that incorporates useful +features from the Korn shell (ksh) and the C shell (csh), +described later in this article. It is ultimately intended +to be a conformant implementation of the IEEE POSIX Shell +and Utilities specification (IEEE Working Group 1003.2). It +offers functional improvements over sh for both interactive +and programming use. + + While the GNU operating system will most likely include +a version of the Berkeley shell csh, Bash will be the +default shell. Like other GNU software, Bash is quite port- +able. It currently runs on nearly every version of UNIX and +a few other operating systems - an independently-supported +port exists for OS/2, and there are rumors of ports to DOS +and Windows NT. Ports to UNIX-like systems such as QNX and +Minix are part of the distribution. + + The original author of Bash was Brian Fox, an employee +of the Free Software Foundation. The current developer and +maintainer is Chet Ramey, a volunteer who works at Case +Western Reserve University. + +_2. _W_h_a_t'_s _P_O_S_I_X, _a_n_y_w_a_y? + + _P_O_S_I_X is a name originally coined by Richard Stallman +_________________________ +*An earlier version of this article appeared in The +Linux Journal. +|- UNIX is a trademark of Bell Laboratories. + + + + + October 28, 1994 + + + + + + - 2 - + + +for a family of open system standards based on UNIX. There +are a number of aspects of UNIX under consideration for +standardization, from the basic system services at the sys- +tem call and C library level to applications and tools to +system administration and management. Each area of stan- +dardization is assigned to a working group in the 1003 +series. + + The POSIX Shell and Utilities standard has been +developed by IEEE Working Group 1003.2 (POSIX.2).|= It con- +centrates on the command interpreter interface and utility +programs commonly executed from the command line or by other +programs. An initial version of the standard has been +approved and published by the IEEE, and work is currently +underway to update it. There are four primary areas of work +in the 1003.2 standard: + +o+ Aspects of the shell's syntax and command language. A + number of special builtins such as _c_d and _e_x_e_c are + being specified as part of the shell, since their func- + tionality usually cannot be implemented by a separate + executable; + +o+ A set of utilities to be called by shell scripts and + applications. Examples are programs like _s_e_d, _t_r, and + _a_w_k. Utilities commonly implemented as shell builtins + are described in this section, such as _t_e_s_t and _k_i_l_l. + An expansion of this section's scope, termed the User + Portability Extension, or UPE, has standardized + interactive programs such as _v_i and _m_a_i_l_x; + +o+ A group of functional interfaces to services provided + by the shell, such as the traditional system() C + library function. There are functions to perform shell + word expansions, perform filename expansion (_g_l_o_b_b_i_n_g), + obtain values of POSIX.2 system configuration vari- + ables, retrieve values of environment variables + (getenv()), _a_n_d _o_t_h_e_r _s_e_r_v_i_c_e_s; + +o+ A suite of "development" utilities such as _c_8_9 (the + POSIX.2 version of _c_c), and _y_a_c_c. + + Bash is concerned with the aspects of the shell's +behavior defined by POSIX.2. The shell command language has +of course been standardized, including the basic flow con- +trol and program execution constructs, I/O redirection and +pipelining, argument handling, variable expansion, and quot- +ing. The _s_p_e_c_i_a_l builtins, which must be implemented as +part of the shell to provide the desired functionality, are +_________________________ +|=IEEE, _I_E_E_E _S_t_a_n_d_a_r_d _f_o_r _I_n_f_o_r_m_a_t_i_o_n _T_e_c_h_n_o_l_o_g_y -- +_P_o_r_t_a_b_l_e _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _I_n_t_e_r_f_a_c_e (_P_O_S_I_X) _P_a_r_t _2: +_S_h_e_l_l _a_n_d _U_t_i_l_i_t_i_e_s, 1992. + + + + + October 28, 1994 + + + + + + - 3 - + + +specified as being part of the shell; examples of these are +_e_v_a_l and _e_x_p_o_r_t. Other utilities appear in the sections of +POSIX.2 not devoted to the shell which are commonly (and in +some cases must be) implemented as builtin commands, such as +_r_e_a_d and _t_e_s_t. POSIX.2 also specifies aspects of the +shell's interactive behavior as part of the UPE, including +job control and command line editing. Interestingly enough, +only _v_i-style line editing commands have been standardized; +_e_m_a_c_s editing commands were left out due to objections. + + While POSIX.2 includes much of what the shell has trad- +itionally provided, some important things have been omitted +as being "beyond its scope." There is, for instance, no +mention of a difference between a _l_o_g_i_n shell and any other +interactive shell (since POSIX.2 does not specify a login +program). No fixed startup files are defined, either - the +standard does not mention ._p_r_o_f_i_l_e. + +_3. _B_a_s_i_c _B_a_s_h _f_e_a_t_u_r_e_s + + Since the Bourne shell provides Bash with most of its +philosophical underpinnings, Bash inherits most of its +features and functionality from sh. Bash implements all of +the traditional sh flow control constructs (_f_o_r, _i_f, _w_h_i_l_e, +etc.). All of the Bourne shell builtins, including those +not specified in the POSIX.2 standard, appear in Bash. +Shell _f_u_n_c_t_i_o_n_s, introduced in the SVR2 version of the +Bourne shell, are similar to shell scripts, but are defined +using a special syntax and are executed in the same process +as the calling shell. Bash has shell functions which behave +in a fashion upward-compatible with sh functions. There are +certain shell variables that Bash interprets in the same way +as sh, such as _P_S_1, _I_F_S, and _P_A_T_H. Bash implements essen- +tially the same grammar, parameter and variable expansion +semantics, redirection, and quoting as the Bourne shell. +Where differences appear between the POSIX.2 standard and +traditional sh behavior, Bash follows POSIX. + + The Korn Shell (ksh) is a descendent of the Bourne +shell written at AT&T Bell Laboratories by David Korn|-. It +provides a number of useful features that POSIX and Bash +have adopted. Many of the interactive facilities in POSIX.2 +have their roots in the ksh: for example, the POSIX and ksh +job control facilities are nearly identical. Bash includes +features from the Korn Shell for both interactive use and +shell programming. For programming, Bash provides variables +such as _R_A_N_D_O_M and _R_E_P_L_Y, the _t_y_p_e_s_e_t builtin, the ability +to remove substrings from variables based on patterns, and +shell arithmetic. _R_A_N_D_O_M expands to a random number each +time it is referenced; assigning a value to _R_A_N_D_O_M seeds the +_________________________ +|-Morris Bolsky and David Korn, _T_h_e _K_o_r_n_S_h_e_l_l _C_o_m_m_a_n_d +_a_n_d _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e, Prentice Hall, 1989. + + + + + October 28, 1994 + + + + + + - 4 - + + +random number generator. _R_E_P_L_Y is the default variable used +by the _r_e_a_d builtin when no variable names are supplied as +arguments. The _t_y_p_e_s_e_t builtin is used to define variables +and give them attributes such as readonly. Bash arithmetic +allows the evaluation of an expression and the substitution +of the result. Shell variables may be used as operands, and +the result of an expression may be assigned to a variable. +Nearly all of the operators from the C language are avail- +able, with the same precedence rules: +9 $ echo $((3 + 5 * 32)) + 163 +9 +For interactive use, Bash implements ksh-style aliases and +builtins such as _f_c (discussed below) and _j_o_b_s. Bash +aliases allow a string to be substituted for a command name. +They can be used to create a mnemonic for a UNIX command +name (alias del=rm), to expand a single word to a complex +command (alias news='xterm -g 80x45 -title trn -e trn -e -S1 +-N &'), or to ensure that a command is invoked with a basic +set of options (alias ls="/bin/ls -F"). + + The C shell (csh)|-, originally written by Bill Joy +while at Berkeley, is widely used and quite popular for its +interactive facilities. Bash includes a csh-compatible his- +tory expansion mechanism ("! history"), brace expansion, +access to a stack of directories via the _p_u_s_h_d, _p_o_p_d, and +_d_i_r_s builtins, and tilde expansion, to generate users' home +directories. Tilde expansion has also been adopted by both +the Korn Shell and POSIX.2. + + There were certain areas in which POSIX.2 felt stan- +dardization was necessary, but no existing implementation +provided the proper behavior. The working group invented +and standardized functionality in these areas, which Bash +implements. The _c_o_m_m_a_n_d builtin was invented so that shell +functions could be written to replace builtins; it makes the +capabilities of the builtin available to the function. The +reserved word "!" was added to negate the return value of a +command or pipeline; it was nearly impossible to express "if +not x" cleanly using the sh language. There exist multiple +incompatible implementations of the _t_e_s_t builtin, which +tests files for type and other attributes and performs +arithmetic and string comparisons. POSIX considered none of +these correct, so the standard behavior was specified in +terms of the number of arguments to the command. POSIX.2 +dictates exactly what will happen when four or fewer argu- +ments are given to _t_e_s_t, and leaves the behavior undefined +when more arguments are supplied. Bash uses the POSIX.2 +_________________________ +|-Bill Joy, An Introduction to the C Shell, _U_N_I_X _U_s_e_r'_s +_S_u_p_p_l_e_m_e_n_t_a_r_y _D_o_c_u_m_e_n_t_s, University of California at +Berkeley, 1986. + + + + + October 28, 1994 + + + + + + - 5 - + + +algorithm, which was conceived by David Korn. + +_3._1. _F_e_a_t_u_r_e_s _n_o_t _i_n _t_h_e _B_o_u_r_n_e _S_h_e_l_l + + There are a number of minor differences between Bash +and the version of sh present on most other versions of +UNIX. The majority of these are due to the POSIX standard, +but some are the result of Bash adopting features from other +shells. For instance, Bash includes the new "!" reserved +word, the _c_o_m_m_a_n_d builtin, the ability of the _r_e_a_d builtin +to correctly return a line ending with a backslash, symbolic +arguments to the _u_m_a_s_k builtin, variable substring removal, +a way to get the length of a variable, and the new algorithm +for the _t_e_s_t builtin from the POSIX.2 standard, none of +which appear in sh. + + Bash also implements the "$(...)" command substitution +syntax, which supersedes the sh `...` construct. The +"$(...)" construct expands to the output of the command con- +tained within the parentheses, with trailing newlines +removed. The sh syntax is accepted for backwards compati- +bility, but the "$(...)" form is preferred because its quot- +ing rules are much simpler and it is easier to nest. + + The Bourne shell does not provide such features as +brace expansion, the ability to define a variable and a +function with the same name, local variables in shell func- +tions, the ability to enable and disable individual builtins +or write a function to replace a builtin, or a means to +export a shell function to a child process. + + Bash has closed a long-standing shell security hole by +not using the $_I_F_S variable to split each word read by the +shell, but splitting only the results of expansion (ksh and +the 4.4 BSD sh have fixed this as well). Useful behavior +such as a means to abort execution of a script read with the +"." command using the return builtin or automatically +exporting variables in the shell's environment to children +is also not present in the Bourne shell. Bash provides a +much more powerful environment for both interactive use and +programming. + +_4. _B_a_s_h-_s_p_e_c_i_f_i_c _F_e_a_t_u_r_e_s + + This section details a few of the features which make +Bash unique. Most of them provide improved interactive use, +but a few programming improvements are present as well. +Full descriptions of these features can be found in the Bash +documentation. + +_4._1. _S_t_a_r_t_u_p _F_i_l_e_s + + Bash executes startup files differently than other +shells. The Bash behavior is a compromise between the csh + + + + October 28, 1994 + + + + + + - 6 - + + +principle of startup files with fixed names executed for +each shell and the sh "minimalist" behavior. An interactive +instance of Bash started as a login shell reads and executes +~/._b_a_s_h__p_r_o_f_i_l_e (the file .bash_profile in the user's home +directory), if it exists. An interactive non-login shell +reads and executes ~/._b_a_s_h_r_c. A non-interactive shell (one +begun to execute a shell script, for example) reads no fixed +startup file, but uses the value of the variable $_E_N_V, if +set, as the name of a startup file. The ksh practice of +reading $_E_N_V for every shell, with the accompanying diffi- +culty of defining the proper variables and functions for +interactive and non-interactive shells or having the file +read only for interactive shells, was considered too com- +plex. Ease of use won out here. Interestingly, the next +release of ksh will change to reading $_E_N_V only for interac- +tive shells. + +_4._2. _N_e_w _B_u_i_l_t_i_n _C_o_m_m_a_n_d_s + + There are a few builtins which are new or have been +extended in Bash. The _e_n_a_b_l_e builtin allows builtin com- +mands to be turned on and off arbitrarily. To use the ver- +sion of _e_c_h_o found in a user's search path rather than the +Bash builtin, enable -n echo suffices. The _h_e_l_p builtin +provides quick synopses of the shell facilities without +requiring access to a manual page. _B_u_i_l_t_i_n is similar to +_c_o_m_m_a_n_d in that it bypasses shell functions and directly +executes builtin commands. Access to a csh-style stack of +directories is provided via the _p_u_s_h_d, _p_o_p_d, and _d_i_r_s buil- +tins. _P_u_s_h_d and _p_o_p_d insert and remove directories from the +stack, respectively, and _d_i_r_s lists the stack contents. On +systems that allow fine-grained control of resources, the +_u_l_i_m_i_t builtin can be used to tune these settings. _U_l_i_m_i_t +allows a user to control, among other things, whether core +dumps are to be generated, how much memory the shell or a +child process is allowed to allocate, and how large a file +created by a child process can grow. The _s_u_s_p_e_n_d command +will stop the shell process when job control is active; most +other shells do not allow themselves to be stopped like +that. _T_y_p_e, the Bash answer to _w_h_i_c_h and _w_h_e_n_c_e, shows what +will happen when a word is typed as a command: +9 $ type export + export is a shell builtin + $ type -t export + builtin + $ type bash + bash is /bin/bash + $ type cd + cd is a function + cd () + { + builtin cd ${1+"$@"} && xtitle $HOST: $PWD + } +9 + + + October 28, 1994 + + + + + + - 7 - + + +Various modes tell what a command word is (reserved word, +alias, function, builtin, or file) or which version of a +command will be executed based on a user's search path. +Some of this functionality has been adopted by POSIX.2 and +folded into the _c_o_m_m_a_n_d utility. + +_4._3. _E_d_i_t_i_n_g _a_n_d _C_o_m_p_l_e_t_i_o_n + + One area in which Bash shines is command line editing. +Bash uses the _r_e_a_d_l_i_n_e library to read and edit lines when +interactive. Readline is a powerful and flexible input +facility that a user can configure to individual tastes. It +allows lines to be edited using either emacs or vi commands, +where those commands are appropriate. The full capability +of emacs is not present - there is no way to execute a named +command with M-x, for instance - but the existing commands +are more than adequate. The vi mode is compliant with the +command line editing standardized by POSIX.2. + + Readline is fully customizable. In addition to the +basic commands and key bindings, the library allows users to +define additional key bindings using a startup file. The +_i_n_p_u_t_r_c file, which defaults to the file ~/._i_n_p_u_t_r_c, is read +each time readline initializes, permitting users to maintain +a consistent interface across a set of programs. Readline +includes an extensible interface, so each program using the +library can add its own bindable commands and program- +specific key bindings. Bash uses this facility to add bind- +ings that perform history expansion or shell word expansions +on the current input line. + + Readline interprets a number of variables which further +tune its behavior. Variables exist to control whether or +not eight-bit characters are directly read as input or con- +verted to meta-prefixed key sequences (a meta-prefixed key +sequence consists of the character with the eighth bit +zeroed, preceded by the _m_e_t_a-_p_r_e_f_i_x character, usually +escape, which selects an alternate keymap), to decide +whether to output characters with the eighth bit set +directly or as a meta-prefixed key sequence, whether or not +to wrap to a new screen line when a line being edited is +longer than the screen width, the keymap to which subsequent +key bindings should apply, or even what happens when read- +line wants to ring the terminal's bell. All of these vari- +ables can be set in the inputrc file. + + The startup file understands a set of C preprocessor- +like conditional constructs which allow variables or key +bindings to be assigned based on the application using read- +line, the terminal currently being used, or the editing +mode. Users can add program-specific bindings to make their +lives easier: I have bindings that let me edit the value of +$_P_A_T_H and double-quote the current or previous word: +9 # Macros that are convenient for shell interaction + + +9 October 28, 1994 + + + + + + - 8 - + + + $if Bash + # edit the path + "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f" + # prepare to type a quoted word -- insert open and close double + # quotes and move to just after the open quote + "\C-x\"": "\"\"\C-b" + # Quote the current or previous word + "\C-xq": "\eb\"\ef\"" + $endif +9 +There is a readline command to re-read the file, so users +can edit the file, change some bindings, and begin to use +them almost immediately. + + Bash implements the _b_i_n_d builtin for more dyamic con- +trol of readline than the startup file permits. _B_i_n_d is +used in several ways. In _l_i_s_t mode, it can display the +current key bindings, list all the readline editing direc- +tives available for binding, list which keys invoke a given +directive, or output the current set of key bindings in a +format that can be incorporated directly into an inputrc +file. In _b_a_t_c_h mode, it reads a series of key bindings +directly from a file and passes them to readline. In its +most common usage, _b_i_n_d takes a single string and passes it +directly to readline, which interprets the line as if it had +just been read from the inputrc file. Both key bindings and +variable assignments may appear in the string given to _b_i_n_d. + + The readline library also provides an interface for +_w_o_r_d _c_o_m_p_l_e_t_i_o_n. When the _c_o_m_p_l_e_t_i_o_n character (usually +TAB) is typed, readline looks at the word currently being +entered and computes the set of filenames of which the +current word is a valid prefix. If there is only one possi- +ble completion, the rest of the characters are inserted +directly, otherwise the common prefix of the set of +filenames is added to the current word. A second TAB char- +acter entered immediately after a non-unique completion +causes readline to list the possible completions; there is +an option to have the list displayed immediately. Readline +provides hooks so that applications can provide specific +types of completion before the default filename completion +is attempted. This is quite flexible, though it is not com- +pletely user-programmable. Bash, for example, can complete +filenames, command names (including aliases, builtins, shell +reserved words, shell functions, and executables found in +the file system), shell variables, usernames, and hostnames. +It uses a set of heuristics that, while not perfect, is gen- +erally quite good at determining what type of completion to +attempt. + +_4._4. _H_i_s_t_o_r_y + + Access to the list of commands previously entered (the +_c_o_m_m_a_n_d _h_i_s_t_o_r_y) is provided jointly by Bash and the + + +9 October 28, 1994 + + + + + + - 9 - + + +readline library. Bash provides variables ($HISTFILE, +$HISTSIZE, and $HISTCONTROL) and the _h_i_s_t_o_r_y and _f_c builtins +to manipulate the history list. The value of $_H_I_S_T_F_I_L_E +specifes the file where Bash writes the command history on +exit and reads it on startup. $_H_I_S_T_S_I_Z_E is used to limit +the number of commands saved in the history. $_H_I_S_T_C_O_N_T_R_O_L +provides a crude form of control over which commands are +saved on the history list: a value of _i_g_n_o_r_e_s_p_a_c_e means to +not save commands which begin with a space; a value of +_i_g_n_o_r_e_d_u_p_s means to not save commands identical to the last +command saved. $HISTCONTROL was named $history_control in +earlier versions of Bash; the old name is still accepted for +backwards compatibility. The _h_i_s_t_o_r_y command can read or +write files containing the history list and display the +current list contents. The _f_c builtin, adopted from POSIX.2 +and the Korn Shell, allows display and re-execution, with +optional editing, of commands from the history list. The +readline library offers a set of commands to search the his- +tory list for a portion of the current input line or a +string typed by the user. Finally, the _h_i_s_t_o_r_y library, +generally incorporated directly into the readline library, +implements a facility for history recall, expansion, and +re-execution of previous commands very similar to csh ("bang +history", so called because the exclamation point introduces +a history substitution): +9 $ echo a b c d e + a b c d e + $ !! f g h i + echo a b c d e f g h i + a b c d e f g h i + $ !-2 + echo a b c d e + a b c d e + $ echo !-2:1-4 + echo a b c d + a b c d +9 +The command history is only saved when the shell is interac- +tive, so it is not available for use by shell scripts. + +_4._5. _N_e_w _S_h_e_l_l _V_a_r_i_a_b_l_e_s + + There are a number of convenience variables that Bash +interprets to make life easier. These include _F_I_G_N_O_R_E, +which is a set of filename suffixes identifying files to +exclude when completing filenames; _H_O_S_T_T_Y_P_E, which is +automatically set to a string describing the type of +hardware on which Bash is currently executing; +_c_o_m_m_a_n_d__o_r_i_e_n_t_e_d__h_i_s_t_o_r_y, which directs Bash to save all +lines of a multiple-line command such as a _w_h_i_l_e or _f_o_r loop +in a single history entry, allowing easy re-editing; and +_I_G_N_O_R_E_E_O_F, whose value indicates the number of consecutive +EOF characters that an interactive shell will read before + + + + October 28, 1994 + + + + + + - 10 - + + +exiting - an easy way to keep yourself from being logged out +accidentally. The _a_u_t_o__r_e_s_u_m_e variable alters the way the +shell treats simple command names: if job control is active, +and this variable is set, single-word simple commands +without redirections cause the shell to first look for and +restart a suspended job with that name before starting a new +process. + +_4._6. _B_r_a_c_e _E_x_p_a_n_s_i_o_n + + Since sh offers no convenient way to generate arbitrary +strings that share a common prefix or suffix (filename +expansion requires that the filenames exist), Bash imple- +ments _b_r_a_c_e _e_x_p_a_n_s_i_o_n, a capability picked up from csh. +Brace expansion is similar to filename expansion, but the +strings generated need not correspond to existing files. A +brace expression consists of an optional _p_r_e_a_m_b_l_e, followed +by a pair of braces enclosing a series of comma-separated +strings, and an optional _p_o_s_t_a_m_b_l_e. The preamble is +prepended to each string within the braces, and the postam- +ble is then appended to each resulting string: +9 $ echo a{d,c,b}e + ade ace abe +9 +As this example demonstrates, the results of brace expansion +are not sorted, as they are by filename expansion. + +_4._7. _P_r_o_c_e_s_s _S_u_b_s_t_i_t_u_t_i_o_n + + On systems that can support it, Bash provides a facil- +ity known as _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. Process substitution is +similar to command substitution in that its specification +includes a command to execute, but the shell does not col- +lect the command's output and insert it into the command +line. Rather, Bash opens a pipe to the command, which is +run in the background. The shell uses named pipes (FIFOs) +or the /_d_e_v/_f_d method of naming open files to expand the +process substitution to a filename which connects to the +pipe when opened. This filename becomes the result of the +expansion. Process substitution can be used to compare the +outputs of two different versions of an application as part +of a regression test: +9 $ cmp <(old_prog) <(new_prog) +9 +_4._8. _P_r_o_m_p_t _C_u_s_t_o_m_i_z_a_t_i_o_n + + One of the more popular interactive features that Bash +provides is the ability to customize the prompt. Both $_P_S_1 +and $_P_S_2, the primary and secondary prompts, are expanded +before being displayed. Parameter and variable expansion is +performed when the prompt string is expanded, so any shell +variable can be put into the prompt (e.g., $_S_H_L_V_L, which + + + + October 28, 1994 + + + + + + - 11 - + + +indicates how deeply the current shell is nested). Bash +specially interprets characters in the prompt string pre- +ceded by a backslash. Some of these backslash escapes are +replaced with the current time, the date, the current work- +ing directory, the username, and the command number or his- +tory number of the command being entered. There is even a +backslash escape to cause the shell to change its prompt +when running as root after an _s_u. Before printing each pri- +mary prompt, Bash expands the variable $_P_R_O_M_P_T__C_O_M_M_A_N_D and, +if it has a value, executes the expanded value as a command, +allowing additional prompt customization. For example, this +assignment causes the current user, the current host, the +time, the last component of the current working directory, +the level of shell nesting, and the history number of the +current command to be embedded into the primary prompt: +9 $ PS1='\u@\h [\t] \W($SHLVL:\!)\$ ' + chet@odin [21:03:44] documentation(2:636)$ cd .. + chet@odin [21:03:54] src(2:637)$ +9 +The string being assigned is surrounded by single quotes so +that if it is exported, the value of $_S_H_L_V_L will be updated +by a child shell: +9 chet@odin [21:17:35] src(2:638)$ export PS1 + chet@odin [21:17:40] src(2:639)$ bash + chet@odin [21:17:46] src(3:696)$ +9 +The \$ escape is displayed as "$" when running as a normal +user, but as "#" when running as root. + +_4._9. _F_i_l_e _S_y_s_t_e_m _V_i_e_w_s + + Since Berkeley introduced symbolic links in 4.2 BSD, +one of their most annoying properties has been the "warping" +to a completely different area of the file system when using +_c_d, and the resultant non-intuitive behavior of "cd ..". +The UNIX kernel treats symbolic links _p_h_y_s_i_c_a_l_l_y. When the +kernel is translating a pathname in which one component is a +symbolic link, it replaces all or part of the pathname while +processing the link. If the contents of the symbolic link +begin with a slash, the kernel replaces the pathname +entirely; if not, the link contents replace the current com- +ponent. In either case, the symbolic link is visible. If +the link value is an absolute pathname, the user finds him- +self in a completely different part of the file system. + + Bash provides a _l_o_g_i_c_a_l view of the file system. In +this default mode, command and filename completion and buil- +tin commands such as _c_d and _p_u_s_h_d which change the current +working directory transparently follow symbolic links as if +they were directories. The $_P_W_D variable, which holds the +shell's idea of the current working directory, depends on +the path used to reach the directory rather than its + + + + October 28, 1994 + + + + + + - 12 - + + +physical location in the local file system hierarchy. For +example: +9 $ cd /usr/local/bin + $ echo $PWD + /usr/local/bin + $ pwd + /usr/local/bin + $ /bin/pwd + /net/share/sun4/local/bin + $ cd .. + $ pwd + /usr/local + $ /bin/pwd + /net/share/sun4/local + $ cd .. + $ pwd + /usr + $ /bin/pwd + /usr +9 +One problem with this, of course, arises when programs that +do not understand the shell's logical notion of the file +system interpret ".." differently. This generally happens +when Bash completes filenames containing ".." according to a +logical hierarchy which does not correspond to their physi- +cal location. For users who find this troublesome, a +corresponding _p_h_y_s_i_c_a_l view of the file system is available: +9 $ cd /usr/local/bin + $ pwd + /usr/local/bin + $ set -o physical + $ pwd + /net/share/sun4/local/bin +9 +_4._1_0. _I_n_t_e_r_n_a_t_i_o_n_a_l_i_z_a_t_i_o_n + + One of the most significant improvements in version +1.13 of Bash was the change to "eight-bit cleanliness". +Previous versions used the eighth bit of characters to mark +whether or not they were quoted when performing word expan- +sions. While this did not affect the majority of users, +most of whom used only seven-bit ASCII characters, some +found it confining. Beginning with version 1.13, Bash +implemented a different quoting mechanism that did not alter +the eighth bit of characters. This allowed Bash to manipu- +late files with "odd" characters in their names, but did +nothing to help users enter those names, so version 1.13 +introduced changes to readline that made it eight-bit clean +as well. Options exist that force readline to attach no +special significance to characters with the eighth bit set +(the default behavior is to convert these characters to +meta-prefixed key sequences) and to output these characters + + + + October 28, 1994 + + + + + + - 13 - + + +without conversion to meta-prefixed sequences. These +changes, along with the expansion of keymaps to a full eight +bits, enable readline to work with most of the ISO-8859 fam- +ily of character sets, used by many European countries. + +_4._1_1. _P_O_S_I_X _M_o_d_e + + Although Bash is intended to be POSIX.2 conformant, +there are areas in which the default behavior is not compa- +tible with the standard. For users who wish to operate in a +strict POSIX.2 environment, Bash implements a _P_O_S_I_X _m_o_d_e. +When this mode is active, Bash modifies its default opera- +tion where it differs from POSIX.2 to match the standard. +POSIX mode is entered when Bash is started with the -_p_o_s_i_x +option. This feature is also available as an option to the +set builtin, set -o posix. For compatibility with other GNU +software that attempts to be POSIX.2 compliant, Bash also +enters POSIX mode if the variable $_P_O_S_I_X_L_Y__C_O_R_R_E_C_T is set +when Bash is started or assigned a value during execution. +$_P_O_S_I_X__P_E_D_A_N_T_I_C is accepted as well, to be compatible with +some older GNU utilities. When Bash is started in POSIX +mode, for example, it sources the file named by the value of +$_E_N_V rather than the "normal" startup files, and does not +allow reserved words to be aliased. + +_5. _N_e_w _F_e_a_t_u_r_e_s _a_n_d _F_u_t_u_r_e _P_l_a_n_s + + There are several features introduced in the current +version of Bash, version 1.14, and a number under considera- +tion for future releases. This section will briefly detail +the new features in version 1.14 and describe several +features that may appear in later versions. + +_5._1. _N_e_w _F_e_a_t_u_r_e_s _i_n _B_a_s_h-_1._1_4 + + The new features available in Bash-1.14 answer several +of the most common requests for enhancements. Most notably, +there is a mechanism for including non-visible character +sequences in prompts, such as those which cause a terminal +to print characters in different colors or in standout mode. +There was nothing preventing the use of these sequences in +earlier versions, but the readline redisplay algorithm +assumed each character occupied physical screen space and +would wrap lines prematurely. + + Readline has a few new variables, several new bindable +commands, and some additional emacs mode default key bind- +ings. A new history search mode has been implemented: in +this mode, readline searches the history for lines beginning +with the characters between the beginning of the current +line and the cursor. The existing readline incremental +search commands no longer match identical lines more than +once. Filename completion now expands variables in direc- +tory names. The history expansion facilities are now nearly + + + + October 28, 1994 + + + + + + - 14 - + + +completely csh-compatible: missing modifiers have been added +and history substitution has been extended. + + Several of the features described earlier, such as _s_e_t +-_o _p_o_s_i_x and $_P_O_S_I_X__P_E_D_A_N_T_I_C, are new in version 1.14. +There is a new shell variable, _O_S_T_Y_P_E, to which Bash assigns +a value that identifies the version of UNIX it's running on +(great for putting architecture-specific binary directories +into the $PATH). Two variables have been renamed: $_H_I_S_T_C_O_N_- +_T_R_O_L replaces $_h_i_s_t_o_r_y__c_o_n_t_r_o_l, and $_H_O_S_T_F_I_L_E replaces +$_h_o_s_t_n_a_m_e__c_o_m_p_l_e_t_i_o_n__f_i_l_e. In both cases, the old names are +accepted for backwards compatibility. The ksh _s_e_l_e_c_t con- +struct, which allows the generation of simple menus, has +been implemented. New capabilities have been added to +existing variables: $_a_u_t_o__r_e_s_u_m_e can now take values of +_e_x_a_c_t or _s_u_b_s_t_r_i_n_g, and $_H_I_S_T_C_O_N_T_R_O_L understands the value +_i_g_n_o_r_e_b_o_t_h, which combines the two previously acceptable +values. The _d_i_r_s builtin has acquired options to print out +specific members of the directory stack. The $_n_o_l_i_n_k_s vari- +able, which forces a physical view of the file system, has +been superseded by the -_P option to the _s_e_t builtin +(equivalent to set -o physical); the variable is retained +for backwards compatibility. The version string contained +in $_B_A_S_H__V_E_R_S_I_O_N now includes an indication of the patch +level as well as the "build version". Some little-used +features have been removed: the _b_y_e synonym for _e_x_i_t and +the $_N_O__P_R_O_M_P_T__V_A_R_S variable are gone. There is now an +organized test suite that can be run as a regression test +when building a new version of Bash. + + The documentation has been thoroughly overhauled: there +is a new manual page on the readline library and the _i_n_f_o +file has been updated to reflect the current version. As +always, as many bugs as possible have been fixed, although +some surely remain. + +_5._2. _O_t_h_e_r _F_e_a_t_u_r_e_s + + There are a few features that I hope to include in +later Bash releases. Some are based on work already done in +other shells. + + In addition to simple variables, a future release of +Bash will include one-dimensional arrays, using the ksh +implementation of arrays as a model. Additions to the ksh +syntax, such as _v_a_r_n_a_m_e=( ... ) to assign a list of words +directly to an array and a mechanism to allow the _r_e_a_d buil- +tin to read a list of values directly into an array, would +be desirable. Given those extensions, the ksh _s_e_t -_A syntax +may not be worth supporting (the -_A option assigns a list of +values to an array, but is a rather peculiar special case). + + Some shells include a means of _p_r_o_g_r_a_m_m_a_b_l_e word com- +pletion, where the user specifies on a per-command basis how + + + + October 28, 1994 + + + + + + - 15 - + + +the arguments of the command are to be treated when comple- +tion is attempted: as filenames, hostnames, executable +files, and so on. The other aspects of the current Bash +implementation could remain as-is; the existing heuristics +would still be valid. Only when completing the arguments to +a simple command would the programmable completion be in +effect. + + It would also be nice to give the user finer-grained +control over which commands are saved onto the history list. +One proposal is for a variable, tentatively named _H_I_S_T_I_G_- +_N_O_R_E, which would contain a colon-separated list of com- +mands. Lines beginning with these commands, after the res- +trictions of $_H_I_S_T_C_O_N_T_R_O_L have been applied, would not be +placed onto the history list. The shell pattern-matching +capabilities could also be available when specifying the +contents of $_H_I_S_T_I_G_N_O_R_E. + + One thing that newer shells such as _w_k_s_h (also known as +_d_t_k_s_h) provide is a command to dynamically load code imple- +menting additional builtin commands into a running shell. +This new builtin would take an object file or shared library +implementing the "body" of the builtin (_x_x_x__b_u_i_l_t_i_n() for +those familiar with Bash internals) and a structure contain- +ing the name of the new command, the function to call when +the new builtin is invoked (presumably defined in the shared +object specified as an argument), and the documentation to +be printed by the _h_e_l_p command (possibly present in the +shared object as well). It would manage the details of +extending the internal table of builtins. + + A few other builtins would also be desirable: two are +the POSIX.2 _g_e_t_c_o_n_f command, which prints the values of sys- +tem configuration variables defined by POSIX.2, and a _d_i_s_o_w_n +builtin, which causes a shell running with job control +active to "forget about" one or more background jobs in its +internal jobs table. Using _g_e_t_c_o_n_f, for example, a user +could retrieve a value for $_P_A_T_H guaranteed to find all of +the POSIX standard utilities, or find out how long filenames +may be in the file system containing a specified directory. + + There are no implementation timetables for any of these +features, nor are there concrete plans to include them. If +anyone has comments on these proposals, feel free to send me +electronic mail. + +_6. _R_e_f_l_e_c_t_i_o_n_s _a_n_d _L_e_s_s_o_n_s _L_e_a_r_n_e_d + + The lesson that has been repeated most often during +Bash development is that there are dark corners in the +Bourne shell, and people use all of them. In the original +description of the Bourne shell, quoting and the shell gram- +mar are both poorly specified and incomplete; subsequent +descriptions have not helped much. The grammar presented in + + + + October 28, 1994 + + + + + + - 16 - + + +Bourne's paper describing the shell distributed with the +Seventh Edition of UNIX|- is so far off that it does not +allow the command who|wc. In fact, as Tom Duff states: + + Nobody really knows what the Bourne shell's gram- + mar is. Even examination of the source code is + little help.|= + +The POSIX.2 standard includes a _y_a_c_c grammar that comes +close to capturing the Bourne shell's behavior, but it +disallows some constructs which sh accepts without complaint +- and there are scripts out there that use them. It took a +few versions and several bug reports before Bash implemented +sh-compatible quoting, and there are still some "legal" sh +constructs which Bash flags as syntax errors. Complete sh +compatibility is a tough nut. + + The shell is bigger and slower than I would like, +though the current version is substantially faster than pre- +viously. The readline library could stand a substantial +rewrite. A hand-written parser to replace the current +_y_a_c_c-generated one would probably result in a speedup, and +would solve one glaring problem: the shell could parse com- +mands in "$(...)" constructs as they are entered, rather +than reporting errors when the construct is expanded. + + As always, there is some chaff to go with the wheat. +Areas of duplicated functionality need to be cleaned up. +There are several cases where Bash treats a variable spe- +cially to enable functionality available another way +($notify vs. set -o notify and $nolinks vs. set -o physi- +cal, for instance); the special treatment of the variable +name should probably be removed. A few more things could +stand removal; the $_a_l_l_o_w__n_u_l_l__g_l_o_b__e_x_p_a_n_s_i_o_n and +$_g_l_o_b__d_o_t__f_i_l_e_n_a_m_e_s variables are of particularly question- +able value. The $[...] arithmetic evaluation syntax is +redundant now that the POSIX-mandated $((...)) construct has +been implemented, and could be deleted. It would be nice if +the text output by the _h_e_l_p builtin were external to the +shell rather than compiled into it. The behavior enabled by +$_c_o_m_m_a_n_d__o_r_i_e_n_t_e_d__h_i_s_t_o_r_y, which causes the shell to attempt +to save all lines of a multi-line command in a single his- +tory entry, should be made the default and the variable +removed. + + +_________________________ +|-S. R. Bourne, "UNIX Time-Sharing System: The UNIX +Shell", _B_e_l_l _S_y_s_t_e_m _T_e_c_h_n_i_c_a_l _J_o_u_r_n_a_l, 57(6), July- +August, 1978, pp. 1971-1990. +|=Tom Duff, "Rc - A Shell for Plan 9 and UNIX systems", +_P_r_o_c. _o_f _t_h_e _S_u_m_m_e_r _1_9_9_0 _E_U_U_G _C_o_n_f_e_r_e_n_c_e, London, July, +1990, pp. 21-33. + + + + + October 28, 1994 + + + + + + - 17 - + + +_7. _A_v_a_i_l_a_b_i_l_i_t_y + + As with all other GNU software, Bash is available for +anonymous FTP from _p_r_e_p._a_i._m_i_t._e_d_u:/_p_u_b/_g_n_u and from other +GNU software mirror sites. The current version is in _b_a_s_h- +_1._1_4._1._t_a_r._g_z in that directory. Use _a_r_c_h_i_e to find the +nearest archive site. The latest version is always avail- +able for FTP from _b_a_s_h._C_W_R_U._E_d_u:/_p_u_b/_d_i_s_t. Bash documenta- +tion is available for FTP from _b_a_s_h._C_W_R_U._E_d_u:/_p_u_b/_b_a_s_h. + + The Free Software Foundation sells tapes and CD-ROMs +containing Bash; send electronic mail to gnu@prep.ai.mit.edu +or call +1-617-876-3296 for more information. + + Bash is also distributed with several versions of +UNIX-compatible systems. It is included as /bin/sh and +/bin/bash on several Linux distributions (more about the +difference in a moment), and as contributed software in +BSDI's BSD/386* and FreeBSD. + + The Linux distribution deserves special mention. There +are two configurations included in the standard Bash distri- +bution: a "normal" configuration, in which all of the stan- +dard features are included, and a "minimal" configuration, +which omits job control, aliases, history and command line +editing, the directory stack and _p_u_s_h_d/_p_o_p_d/_d_i_r_s, process +substitution, prompt string special character decoding, and +the _s_e_l_e_c_t construct. This minimal version is designed to +be a drop-in replacement for the traditional UNIX /bin/sh, +and is included as the Linux /bin/sh in several packagings. + +_8. _C_o_n_c_l_u_s_i_o_n + + Bash is a worthy successor to sh. It is sufficiently +portable to run on nearly every version of UNIX from 4.3 BSD +to SVR4.2, and several UNIX workalikes. It is robust enough +to replace sh on most of those systems, and provides more +functionality. It has several thousand regular users, and +their feedback has helped to make it as good as it is today +- a testament to the benefits of free software. + + + + + + + + + + +_________________________ +*BSD/386 is a trademark of Berkeley Software Design, +Inc. + + + + + October 28, 1994 + + diff --git a/bash-5.1/doc/bash.0 b/bash-5.1/doc/bash.0 new file mode 100644 index 0000000..9160b09 --- /dev/null +++ b/bash-5.1/doc/bash.0 @@ -0,0 +1,6405 @@ +BASH(1) General Commands Manual BASH(1) + + + +NNAAMMEE + bash - GNU Bourne-Again SHell + +SSYYNNOOPPSSIISS + bbaasshh [options] [command_string | file] + +CCOOPPYYRRIIGGHHTT + Bash is Copyright (C) 1989-2020 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 + All of the single-character shell options documented in the description + of the sseett builtin command, including --oo, can be used as options when + the shell is invoked. In addition, bbaasshh interprets the following op- + tions when it is invoked: + + --cc If the --cc option is present, then commands are read from the + first non-option argument _c_o_m_m_a_n_d___s_t_r_i_n_g. If there are argu- + ments after the _c_o_m_m_a_n_d___s_t_r_i_n_g, the first argument is as- + signed to $$00 and any remaining arguments are assigned to the + positional parameters. The assignment to $$00 sets the name of + the shell, which is used in warning and error messages. + --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 or when reading input + through a pipe. + --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 op- + tions must appear on the command line before the single-character op- + tions 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). + ----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 IINN-- + VVOOCCAATTIIOONN 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 be- + low). + + ----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 de- + fault 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). See + SSEEEE AALLSSOO below for a reference to a document that details how + posix mode affects bash's behavior. + + ----rreessttrriicctteedd + The shell becomes restricted (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). + + ----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 ex- + ecuted, 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 (un- + less --ss is specified) 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 filenames as described below under TTiillddee EExxppaann-- + ssiioonn in the EEXXPPAANNSSIIOONN section. + + When bbaasshh is invoked as an interactive login shell, or as a non-inter- + active shell with the ----llooggiinn option, it first reads and executes com- + mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading + 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 an interactive login shell exits, or a non-interactive login shell + executes the eexxiitt builtin command, 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 ex- + ample, 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 be- + havior of historical versions of sshh as closely as possible, while con- + forming to the POSIX standard as well. When invoked as an interactive + 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 in- + hibit 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 at- + tempt 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 with its standard input + connected to a network connection, as when executed by the remote shell + daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh deter- + mines it is being run in this fashion, it reads and executes commands + from _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do + this if invoked as sshh. The ----nnoorrcc option may be used to inhibit this + behavior, and the ----rrccffiillee option may be used to force another file to + be read, but neither _r_s_h_d nor _s_s_h_d generally invoke the shell with + those options or allow them to be specified. + + If the shell is started with the effective user (group) id not equal to + the real user (group) id, and the --pp option is not supplied, no startup + files are read, shell functions are not inherited from the environment, + the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap- + pear in the environment, are ignored, and the effective user id is set + to the real user id. If the --pp option is supplied at invocation, the + startup behavior is the same, but the effective user id is not reset. + +DDEEFFIINNIITTIIOONNSS + The following definitions are used throughout the rest of this docu- + 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 nneewwlliinnee + 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 command (see SSHHEELLLL GGRRAAMMMMAARR below), the third word of a + ccaassee or sseelleecctt command (only iinn is valid), or the third word of a ffoorr + command (only iinn and ddoo are valid): + + !! ccaassee ccoopprroocc ddoo ddoonnee eelliiff eellssee eessaacc ffii ffoorr ffuunnccttiioonn iiff iinn sseelleecctt + tthheenn uunnttiill wwhhiillee {{ }} ttiimmee [[[[ ]]]] + +SSHHEELLLL GGRRAAMMMMAARR + SSiimmppllee CCoommmmaannddss + A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol- + lowed by bbllaannkk-separated words and redirections, and terminated by a + _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 ar- + guments 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 one of + the control operators || or ||&&. The format for a pipeline is: + + [ttiimmee [--pp]] [ ! ] _c_o_m_m_a_n_d [ [|||||&&] _c_o_m_m_a_n_d_2 ... ] + + The standard output of _c_o_m_m_a_n_d is connected via a pipe to the standard + input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec- + tions specified by the command (see RREEDDIIRREECCTTIIOONN below). If ||&& is used, + _c_o_m_m_a_n_d's standard error, in addition to its standard output, is con- + nected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand + for 22>>&&11 ||. This implicit redirection of the standard error to the + standard output is performed after any redirections specified by the + command. + + The return status of a pipeline is the exit status of the last command, + unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the + 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. When the shell is in _p_o_s_i_x _m_o_d_e, it does not rec- + ognize ttiimmee as a reserved word if the next token begins with a `-'. + 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. + + When the shell is in _p_o_s_i_x _m_o_d_e, ttiimmee may be followed by a newline. In + this case, the shell displays the total user and system time consumed + by the shell and its children. The TTIIMMEEFFOORRMMAATT variable may be used to + specify the format of the time information. + + Each command in a pipeline is executed as a separate process (i.e., in + a subshell). See CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT for a description of a + subshell environment. If the llaassttppiippee option is enabled using the + sshhoopptt builtin (see the description of sshhoopptt below), the last element of + a pipeline may be run by the shell process. + + 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. These are + referred to as _a_s_y_n_c_h_r_o_n_o_u_s commands. 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 exe- + cuted. + + AND and OR lists are sequences of one or more pipelines separated by + the &&&& and |||| control operators, respectively. AND and OR lists are + executed with left associativity. 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 (success). + + 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. In most cases a _l_i_s_t in a + command's description may be separated from the rest of the command by + one or more newlines, and may be followed by a newline in place of a + semicolon. + + (_l_i_s_t) _l_i_s_t is executed in a subshell environment (see CCOOMMMMAANNDD EEXXEECCUU-- + TTIIOONN EENNVVIIRROONNMMEENNTT below). Variable assignments and builtin com- + mands that affect the shell's environment do not remain in ef- + fect 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 or another shell + metacharacter. + + ((_e_x_p_r_e_s_s_i_o_n)) + The _e_x_p_r_e_s_s_i_o_n is evaluated according to the rules described be- + low under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. 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 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 used with [[[[, the << and >> operators sort lexicographically + using the current locale. + + When the ==== and !!== operators are used, the string to the right + of the operator is considered a pattern and matched according to + the rules described below under PPaatttteerrnn MMaattcchhiinngg, as if the eexxtt-- + gglloobb shell option were enabled. The == operator is equivalent to + ====. If the nnooccaasseemmaattcchh shell option is enabled, the match is + performed without regard to the case of alphabetic characters. + The return value is 0 if the string matches (====) or does not + match (!!==) the pattern, and 1 otherwise. Any part of the pat- + tern may be quoted to force the quoted portion to be matched as + a string. + + An additional binary operator, ==~~, is available, with the same + precedence as ==== and !!==. When it is used, the string to the + right of the operator is considered a POSIX extended regular ex- + pression and matched accordingly (using the POSIX _r_e_g_c_o_m_p and + _r_e_g_e_x_e_c interfaces usually described 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 condi- + tional expression's return value is 2. If the nnooccaasseemmaattcchh shell + option is enabled, the match is performed without regard to the + case of alphabetic characters. Any part of the pattern may be + quoted to force the quoted portion to be matched as a string. + Bracket expressions in regular expressions must be treated care- + fully, since normal quoting characters lose their meanings be- + tween brackets. If the pattern is stored in a shell variable, + quoting the variable expansion forces the entire pattern to be + matched as a string. + + The pattern will match if it matches any part of the string. + Anchor the pattern using the ^^ and $$ regular expression opera- + tors to force it to match the entire string. The array variable + BBAASSHH__RREEMMAATTCCHH records which parts of the string matched the pat- + tern. The element of BBAASSHH__RREEMMAATTCCHH with index 0 contains the + portion of the string matching the entire regular expression. + Substrings matched by parenthesized subexpressions within the + regular expression are saved in the remaining BBAASSHH__RREEMMAATTCCHH in- + dices. The element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion + of the string matching the _nth parenthesized subexpression. + + Expressions may be combined using the following operators, + listed in decreasing order of precedence: + + (( _e_x_p_r_e_s_s_i_o_n )) + Returns the value of _e_x_p_r_e_s_s_i_o_n. This may be used to + 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 pa- + rameter 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 er- + ror, 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 standard + 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 displayed 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 matching rules described under + PPaatttteerrnn MMaattcchhiinngg below. The _w_o_r_d is expanded using tilde expan- + sion, parameter and variable expansion, arithmetic expansion, + command substitution, process substitution and quote removal. + Each _p_a_t_t_e_r_n examined is expanded using tilde expansion, parame- + ter and variable expansion, arithmetic expansion, command sub- + stitution, and process substitution. If the nnooccaasseemmaattcchh shell + option is enabled, the match is performed without regard to the + case of alphabetic characters. When a match is found, the cor- + responding _l_i_s_t is executed. If the ;;;; operator is used, no + subsequent matches are attempted after the first pattern match. + Using ;;&& in place of ;;;; causes execution to continue with the + _l_i_s_t associated with the next set of patterns. Using ;;;;&& in + place of ;;;; causes the shell to test the next pattern list in + the statement, if any, and execute any associated _l_i_s_t on a suc- + cessful match, continuing the case statement execution as if the + pattern list had not matched. 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_-_1; ddoo _l_i_s_t_-_2; ddoonnee + uunnttiill _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee + The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long + as the last command in the list _l_i_s_t_-_1 returns an exit status of + zero. The uunnttiill command is identical to the wwhhiillee command, ex- + cept that the test is negated: _l_i_s_t_-_2 is executed as long as the + last command in _l_i_s_t_-_1 returns a non-zero exit status. The exit + status of the wwhhiillee and uunnttiill commands is the exit status of the + last command executed in _l_i_s_t_-_2, or zero if none was executed. + + CCoopprroocceesssseess + A _c_o_p_r_o_c_e_s_s is a shell command preceded by the ccoopprroocc reserved word. A + coprocess is executed asynchronously in a subshell, as if the command + had been terminated with the && control operator, with a two-way pipe + established between the executing shell and the coprocess. + + The format for a coprocess is: + + ccoopprroocc [_N_A_M_E] _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s] + + This creates a coprocess named _N_A_M_E. If _N_A_M_E is not supplied, the de- + fault name is CCOOPPRROOCC. _N_A_M_E must not be supplied if _c_o_m_m_a_n_d is a _s_i_m_p_l_e + _c_o_m_m_a_n_d (see above); otherwise, it is interpreted as the first word of + the simple command. When the coprocess is executed, the shell creates + an array variable (see AArrrraayyss below) named _N_A_M_E in the context of the + executing shell. The standard output of _c_o_m_m_a_n_d is connected via a + pipe to a file descriptor in the executing shell, and that file de- + scriptor is assigned to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is con- + nected via a pipe to a file descriptor in the executing shell, and that + file descriptor is assigned to _N_A_M_E[1]. This pipe is established be- + fore any redirections specified by the command (see RREEDDIIRREECCTTIIOONN below). + The file descriptors can be utilized as arguments to shell commands and + redirections using standard word expansions. Other than those created + to execute command and process substitutions, the file descriptors are + not available in subshells. The process ID of the shell spawned to ex- + ecute the coprocess is available as the value of the variable _N_A_M_E_PID. + The wwaaiitt builtin command may be used to wait for the coprocess to ter- + minate. + + Since the coprocess is created as an asynchronous command, the ccoopprroocc + command always returns success. The return status of a coprocess is + the exit status of _c_o_m_m_a_n_d. + + SShheellll FFuunnccttiioonn DDeeffiinniittiioonnss + A shell function is an object that is called like a simple command and + executes a compound command with a new set of positional parameters. + Shell functions are declared as follows: + + _f_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] + ffuunnccttiioonn _f_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 _f_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, with + one exception: If the ffuunnccttiioonn reserved word is used, but the + parentheses are not supplied, the braces are required. _c_o_m_- + _p_o_u_n_d_-_c_o_m_m_a_n_d is executed whenever _f_n_a_m_e is specified as the + name of a simple command. When in _p_o_s_i_x _m_o_d_e, _f_n_a_m_e must be a + valid shell _n_a_m_e and may not be the name of one of the POSIX + _s_p_e_c_i_a_l _b_u_i_l_t_i_n_s. In default mode, a function name can be any + unquoted shell word that does not contain $$. Any redirections + (see RREEDDIIRREECCTTIIOONN below) specified when a function is defined are + performed when the function is executed. The exit status of a + function definition is zero unless a syntax error occurs or a + readonly function with the same name already exists. When exe- + cuted, the exit status of a function is the exit status of the + last command executed in the body. (See FFUUNNCCTTIIOONNSS below.) + +CCOOMMMMEENNTTSS + In a non-interactive shell, or an interactive shell in which the iinntteerr-- + aaccttiivvee__ccoommmmeennttss option to the sshhoopptt builtin is enabled (see SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below), a word beginning with ## causes that word and + all remaining characters on that line to be ignored. An interactive + shell without the iinntteerraaccttiivvee__ccoommmmeennttss option enabled does not allow + 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 it- + self 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, !!. When the shell is in _p_o_s_i_x _m_o_d_e, + the !! has no special meaning within double quotes, even when history + expansion is enabled. The characters $$ and `` retain their special + meaning within double quotes. The backslash retains its special mean- + ing 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 + \\EE an escape character + \\ff form feed + \\nn new line + \\rr carriage return + \\tt horizontal tab + \\vv vertical tab + \\\\ backslash + \\'' single quote + \\"" double quote + \\?? question mark + \\_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) + \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value _H_H_H_H (one to four hex digits) + \\UU_H_H_H_H_H_H_H_H + the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits) + \\cc_x a control-_x character + + The expanded result is single-quoted, as if the dollar sign had not + been present. + + A double-quoted string preceded by a dollar sign ($$"_s_t_r_i_n_g") will cause + the string to be translated according to the current locale. The _g_e_t_- + _t_e_x_t infrastructure performs the message catalog lookup and transla- + tion, using the LLCC__MMEESSSSAAGGEESS and TTEEXXTTDDOOMMAAIINN shell variables. If the + current locale is CC or PPOOSSIIXX, or if there are no translations avail- + able, the dollar sign is ignored. If the string is translated and re- + placed, 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, eexx-- + ppoorrtt, rreeaaddoonnllyy, and llooccaall builtin commands (_d_e_c_l_a_r_a_t_i_o_n commands). + When in _p_o_s_i_x _m_o_d_e, these builtins may appear in a command after one or + more instances of the ccoommmmaanndd builtin and retain these assignment + statement properties. + + In the context where an assignment statement is assigning a value to a + shell variable or array index, the += operator can be used to append to + or add to the variable's previous value. This includes arguments to + builtin commands such as ddeeccllaarree that accept assignment statements + (_d_e_c_l_a_r_a_t_i_o_n commands). When += is applied to a variable for which the + _i_n_t_e_g_e_r attribute has been set, _v_a_l_u_e is evaluated as an arithmetic ex- + pression and added to the variable's current value, which is also eval- + uated. When += is applied to an array variable using compound assign- + ment (see AArrrraayyss below), the variable's value is not unset (as it is + when using =), and new values are appended to the array beginning at + one greater than the array's maximum index (for indexed arrays) or + added as additional key-value pairs in an associative array. When ap- + plied to a string-valued variable, _v_a_l_u_e is expanded and appended to + the variable's value. + + A variable can be assigned the _n_a_m_e_r_e_f attribute using the --nn option to + the ddeeccllaarree or llooccaall builtin commands (see the descriptions of ddeeccllaarree + and llooccaall below) to create a _n_a_m_e_r_e_f, or a reference to another vari- + able. This allows variables to be manipulated indirectly. Whenever + the nameref variable is referenced, assigned to, unset, or has its at- + tributes modified (other than using or changing the _n_a_m_e_r_e_f attribute + itself), the operation is actually performed on the variable specified + by the nameref variable's value. A nameref is commonly used within + shell functions to refer to a variable whose name is passed as an argu- + ment to the function. For instance, if a variable name is passed to a + shell function as its first argument, running + declare -n ref=$1 + inside the function creates a nameref variable rreeff whose value is the + variable name passed as the first argument. References and assignments + to rreeff, and changes to its attributes, are treated as references, as- + signments, and attribute modifications to the variable whose name was + passed as $$11. If the control variable in a ffoorr loop has the nameref + attribute, the list of words can be a list of shell variables, and a + name reference will be established for each word in the list, in turn, + when the loop is executed. Array variables cannot be given the nnaammeerreeff + attribute. However, nameref variables can reference array variables + and subscripted array variables. Namerefs can be unset using the --nn + option to the uunnsseett builtin. Otherwise, if uunnsseett is executed with the + name of a nameref variable as an argument, the variable referenced by + the nameref variable will be unset. + + PPoossiittiioonnaall PPaarraammeetteerrss + A _p_o_s_i_t_i_o_n_a_l _p_a_r_a_m_e_t_e_r is a parameter denoted by one or more digits, + 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 is not within double quotes, each positional pa- + rameter expands to a separate word. In contexts where it is + performed, those words are subject to further word splitting and + pathname expansion. When the expansion occurs within double + quotes, it expands to a single word with the value of each pa- + rameter separated by the first character of the IIFFSS special + variable. That is, "$$**" is equivalent to "$$11_c$$22_c......", where _c + is the first character of the value of the IIFFSS variable. If IIFFSS + is unset, the parameters are separated by spaces. If IIFFSS is + null, the parameters are joined without intervening separators. + @@ Expands to the positional parameters, starting from one. In + contexts where word splitting is performed, this expands each + positional parameter to a separate word; if not within double + quotes, these words are subject to word splitting. In contexts + where word splitting is not performed, this expands to a single + word with each positional parameter separated by a space. When + the expansion occurs within double quotes, each parameter ex- + pands 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 exit status of the most recently executed fore- + ground pipeline. + -- Expands to the current option flags as specified upon invoca- + tion, by the sseett builtin command, or those set by the shell it- + self (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 job most recently placed into + the background, whether executed as an asynchronous command or + using the bbgg builtin (see JJOOBB CCOONNTTRROOLL below). + 00 Expands to the name of the shell or shell script. This is set + at shell initialization. If bbaasshh is invoked with a file of com- + mands, $$00 is set to the name of that file. If bbaasshh is started + with the --cc option, then $$00 is set to the first argument after + the string to be executed, if one is present. Otherwise, it is + set to the filename used to invoke bbaasshh, as given by argument + zero. + + SShheellll VVaarriiaabblleess + The following variables are set by the shell: + + __ At shell startup, set to the 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 simple command executed in the foreground, 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. + BBAASSHH Expands to the full filename used to invoke this instance of + bbaasshh. + BBAASSHHOOPPTTSS + A colon-separated list of enabled shell options. Each word in + the list is a valid argument for the --ss option to the sshhoopptt + builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options + appearing in BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. 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. + BBAASSHHPPIIDD + Expands to the process ID of the current bbaasshh process. This + differs from $$$$ under certain circumstances, such as subshells + that do not require bbaasshh to be re-initialized. Assignments to + BBAASSHHPPIIDD have no effect. If BBAASSHHPPIIDD is unset, it loses its spe- + cial properties, even if it is subsequently reset. + BBAASSHH__AALLIIAASSEESS + An associative array variable whose members correspond to the + internal list of aliases as maintained by the aalliiaass builtin. + Elements added to this array appear in the alias list; however, + unsetting array elements currently does not cause aliases to be + removed from the alias list. If BBAASSHH__AALLIIAASSEESS is unset, it loses + its special properties, even if it is subsequently reset. + BBAASSHH__AARRGGCC + An array variable whose values are the number of parameters in + each frame of the current bbaasshh 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 op- + tion to the sshhoopptt builtin below). Setting eexxttddeebbuugg after the + shell has started to execute a script, or referencing this vari- + able when eexxttddeebbuugg is not set, may result in inconsistent val- + ues. + BBAASSHH__AARRGGVV + An array variable containing all of the parameters in the cur- + rent bbaasshh 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 be- + low). Setting eexxttddeebbuugg after the shell has started to execute a + script, or referencing this variable when eexxttddeebbuugg is not set, + may result in inconsistent values. + BBAASSHH__AARRGGVV00 + When referenced, this variable expands to the name of the shell + or shell script (identical to $$00; see the description of special + parameter 0 above). Assignment to BBAASSHH__AARRGGVV00 causes the value + assigned to also be assigned to $$00. If BBAASSHH__AARRGGVV00 is unset, it + loses its special properties, even if it is subsequently reset. + BBAASSHH__CCMMDDSS + An associative array variable whose members correspond to the + internal hash table of commands as maintained by the hhaasshh + builtin. Elements added to this array appear in the hash table; + however, unsetting array elements currently does not cause com- + mand names to be removed from the hash table. If BBAASSHH__CCMMDDSS is + unset, it loses its special properties, even if it is subse- + quently reset. + 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. If BBAASSHH__CCOOMMMMAANNDD is unset, it loses its special proper- + ties, even if it is subsequently reset. + 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 where each corresponding member of FFUUNNCCNNAAMMEE was invoked. + $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}} is the line number in the source file + ($${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}) where $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called (or + $${{BBAASSHH__LLIINNEENNOO[[_$_i_-_1]]}} if referenced within another shell func- + tion). Use LLIINNEENNOO to obtain the current line number. + BBAASSHH__LLOOAADDAABBLLEESS__PPAATTHH + A colon-separated list of directories in which the shell looks + for dynamically loadable builtins specified by the eennaabbllee com- + mand. + 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 ex- + pression. The element with index _n is the portion of the string + matching the _nth parenthesized subexpression. + BBAASSHH__SSOOUURRCCEE + An array variable whose members are the source filenames where + the corresponding shell function names in the FFUUNNCCNNAAMMEE array + variable are defined. The shell function $${{FFUUNNCCNNAAMMEE[[_$_i]]}} is de- + fined in the file $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}} and called from + $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}. + BBAASSHH__SSUUBBSSHHEELLLL + Incremented by one within each subshell or subshell environment + when the shell begins executing in that environment. The ini- + tial value is 0. If BBAASSHH__SSUUBBSSHHEELLLL is unset, it loses its spe- + cial properties, even if it is subsequently reset. + 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__KKEEYY + The key (or final key of a key sequence) used to invoke the cur- + rent completion function. + CCOOMMPP__LLIINNEE + The current command line. This variable is available only in + shell functions and external commands invoked by the program- + mable 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 program- + mable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). + CCOOMMPP__TTYYPPEE + Set to an integer value corresponding to the type of completion + attempted that caused a completion function to be called: _T_A_B, + for normal completion, _?, for listing completions after succes- + sive tabs, _!, for listing alternatives on partial word comple- + tion, _@, to list completions if the word is not unmodified, or + _%, for menu completion. This variable is available only in + shell functions and external commands invoked by the program- + mable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). + CCOOMMPP__WWOORRDDBBRREEAAKKSS + The set of characters that the rreeaaddlliinnee library treats as word + separators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS + is unset, it loses its special properties, even if it is subse- + quently reset. + CCOOMMPP__WWOORRDDSS + An array variable (see AArrrraayyss below) consisting of the individ- + ual words in the current command line. The line is split into + words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as de- + scribed above. This variable is available only in shell func- + tions invoked by the programmable completion facilities (see + PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). + CCOOPPRROOCC An array variable (see AArrrraayyss below) created to hold the file + descriptors for output from and input to an unnamed coprocess + (see CCoopprroocceesssseess above). + DDIIRRSSTTAACCKK + An array variable (see AArrrraayyss below) containing the current con- + tents of the directory stack. Directories appear in the stack + in the order they are displayed by the ddiirrss builtin. Assigning + 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 un- + set, it loses its special properties, even if it is subsequently + reset. + EEPPOOCCHHRREEAALLTTIIMMEE + Each time this parameter is referenced, it expands to the number + of seconds since the Unix Epoch (see _t_i_m_e(3)) as a floating + point value with micro-second granularity. Assignments to + EEPPOOCCHHRREEAALLTTIIMMEE are ignored. If EEPPOOCCHHRREEAALLTTIIMMEE is unset, it loses + its special properties, even if it is subsequently reset. + EEPPOOCCHHSSEECCOONNDDSS + Each time this parameter is referenced, it expands to the number + of seconds since the Unix Epoch (see _t_i_m_e(3)). Assignments to + EEPPOOCCHHSSEECCOONNDDSS are ignored. If EEPPOOCCHHSSEECCOONNDDSS is unset, it loses + its special properties, even if it is subsequently 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 (the one with the highest index) is "main". + This variable exists only when a shell function is executing. + Assignments to FFUUNNCCNNAAMMEE have no effect. If FFUUNNCCNNAAMMEE is unset, + it loses its special properties, even if it is subsequently re- + set. + + This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. + Each element of FFUUNNCCNNAAMMEE has corresponding elements in + BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For in- + stance, $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file + $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The + ccaalllleerr builtin displays the current call stack using this infor- + mation. + GGRROOUUPPSS An array variable containing the list of groups of which the + current user is a member. Assignments to GGRROOUUPPSS have no effect. + 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. Assignments to HHIISSTTCCMMDD are ignored. If HHIISSTTCCMMDD is un- + set, 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. + MMAAPPFFIILLEE + An array variable (see AArrrraayyss below) created to hold the text + read by the mmaappffiillee builtin when no variable name is supplied. + OOLLDDPPWWDD The previous working directory as set by the ccdd command. + OOPPTTAARRGG The value of the last option argument processed by the ggeettooppttss + 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, it expands to a random + integer between 0 and 32767. Assigning a value to RRAANNDDOOMM ini- + tializes (seeds) the sequence of random numbers. If RRAANNDDOOMM is + unset, it loses its special properties, even if it is subse- + quently reset. + RREEAADDLLIINNEE__LLIINNEE + The contents of the rreeaaddlliinnee line buffer, for use with "bind -x" + (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + RREEAADDLLIINNEE__MMAARRKK + The position of the mark (saved insertion point) in the rreeaaddlliinnee + line buffer, for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS + below). The characters between the insertion point and the mark + are often called the _r_e_g_i_o_n. + RREEAADDLLIINNEE__PPOOIINNTT + The position of the insertion point in the rreeaaddlliinnee line buffer, + for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when + 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. + The number of seconds at shell invocation and the current time + is always determined by querying the system clock. If SSEECCOONNDDSS + is unset, it loses its special properties, even if it is subse- + quently 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. + SSRRAANNDDOOMM + This variable expands to a 32-bit pseudo-random number each time + it is referenced. The random number generator is not linear on + systems that support /dev/urandom or _a_r_c_4_r_a_n_d_o_m, so each re- + turned number has no relationship to the numbers preceding it. + The random number generator cannot be seeded, so assignments to + this variable have no effect. If SSRRAANNDDOOMM is unset, it loses its + special properties, even if it is subsequently reset. + 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 as- + signs a default value to a variable; these cases are noted below. + + BBAASSHH__CCOOMMPPAATT + The value is used to set the shell's compatibility level. See + SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below for a description of the various + compatibility levels and their effects. The value may be a dec- + imal number (e.g., 4.2) or an integer (e.g., 42) corresponding + to the desired compatibility level. If BBAASSHH__CCOOMMPPAATT is unset or + set to the empty string, the compatibility level is set to the + default for the current version. If BBAASSHH__CCOOMMPPAATT is set to a + value that is not one of the valid compatibility levels, the + shell prints an error message and sets the compatibility level + to the default for the current version. The valid values corre- + spond to the compatibility levels described below under BBSSHHEELLLL-- + COMPATIBILITYMMOODDEE. For example, 4.2 and 42 are valid values + that correspond to the ccoommppaatt4422 sshhoopptt option and set the compat- + ibility level to 42. The current version is also a valid value. + BBAASSHH__EENNVV + If this parameter is set when bbaasshh is executing a shell script, + its value is interpreted as a filename containing commands to + initialize the shell, as in _~_/_._b_a_s_h_r_c. The value of BBAASSHH__EENNVV is + subjected to parameter expansion, command substitution, and + arithmetic expansion before being interpreted as a filename. + PPAATTHH is not used to search for the resultant filename. + BBAASSHH__XXTTRRAACCEEFFDD + If set to an integer corresponding to a valid file descriptor, + bbaasshh will write the trace output generated when _s_e_t _-_x is en- + abled to that file descriptor. The file descriptor is closed + when BBAASSHH__XXTTRRAACCEEFFDD is unset or assigned a new value. Unsetting + BBAASSHH__XXTTRRAACCEEFFDD or assigning it the empty string causes the trace + output to be sent to the standard error. Note that setting + BBAASSHH__XXTTRRAACCEEFFDD to 2 (the standard error file descriptor) and then + unsetting it will result in the standard error being closed. + CCDDPPAATTHH The search path for the ccdd command. This is a colon-separated + list of directories in which the shell looks for destination di- + rectories specified by the ccdd command. A sample value is + ".:~:/usr". + CCHHIILLDD__MMAAXX + Set the number of exited child status values for the shell to + remember. Bash will not allow this value to be decreased below + a POSIX-mandated minimum, and there is a maximum value (cur- + rently 8192) that this may not exceed. The minimum value is + system-dependent. + CCOOLLUUMMNNSS + Used by the sseelleecctt compound command to determine the terminal + width when printing selection lists. Automatically set if the + cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon + receipt of a SSIIGGWWIINNCCHH. + CCOOMMPPRREEPPLLYY + An array variable from which bbaasshh reads the possible completions + generated by a shell function invoked by the programmable com- + pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each ar- + ray element contains one possible completion. + EEMMAACCSS If bbaasshh finds this variable in the environment when the shell + starts with value "t", it assumes that the shell is running in + an Emacs shell buffer and disables line editing. + EENNVV Expanded and executed similarly to BBAASSHH__EENNVV (see IINNVVOOCCAATTIIOONN + above) when an interactive shell is invoked in _p_o_s_i_x _m_o_d_e. + EEXXEECCIIGGNNOORREE + A colon-separated list of shell patterns (see PPaatttteerrnn MMaattcchhiinngg) + defining the list of filenames to be ignored by command search + using PPAATTHH. Files whose full pathnames match one of these pat- + terns are not considered executable files for the purposes of + completion and command execution via PPAATTHH lookup. This does not + affect the behavior of the [[, tteesstt, and [[[[ commands. Full path- + names in the command hash table are not subject to EEXXEECCIIGGNNOORREE. + Use this variable to ignore shared library files that have the + executable bit set, but are not executable files. The pattern + matching honors the setting of the eexxttgglloobb shell option. + 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:~". + FFUUNNCCNNEESSTT + If set to a numeric value greater than 0, defines a maximum + function nesting level. Function invocations that exceed this + nesting level will cause the current command to abort. + GGLLOOBBIIGGNNOORREE + A colon-separated list of patterns defining the set of file + names to be ignored by pathname expansion. If a file name + 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 a shell exits. + HHIISSTTFFIILLEESSIIZZEE + The maximum number of lines contained in the history file. When + this variable is assigned a value, the history file is trun- + cated, if necessary, to contain no more than that number of + lines by removing the oldest entries. The history file is also + truncated to this size after writing it when a shell exits. If + the value is 0, the history file is truncated to zero size. + Non-numeric values and numeric values less than zero inhibit + truncation. The shell sets the default value to the value of + HHIISSTTSSIIZZEE after reading any startup files. + HHIISSTTIIGGNNOORREE + A colon-separated list of patterns used to decide which command + lines should be saved on the history list. Each pattern is an- + chored 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 HHIISSTTCCOONNTTRROOLL are + applied. In addition to the normal shell pattern matching char- + acters, `&&' matches the previous history line. `&&' may be es- + caped using a backslash; the backslash is removed before at- + tempting a match. The second and subsequent lines of a multi- + line compound command are not tested, and are added to the his- + tory regardless of the value of HHIISSTTIIGGNNOORREE. The pattern match- + ing honors the setting of the eexxttgglloobb shell option. + HHIISSTTSSIIZZEE + The number of commands to remember in the command history (see + HHIISSTTOORRYY below). If the value is 0, commands are not saved in + the history list. Numeric values less than zero result in every + command being saved on the history list (there is no limit). + The shell sets the default value to 500 after reading any + startup files. + HHIISSTTTTIIMMEEFFOORRMMAATT + If this variable is set and not null, its value is used as a + format string for _s_t_r_f_t_i_m_e(3) to print the time stamp associated + with each history entry displayed by the hhiissttoorryy builtin. If + this variable is set, time stamps are written to the history + file so they may be preserved across shell sessions. This uses + the history comment character to distinguish timestamps from + other history lines. + 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 at- + tempted 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, or does not name a readable file, bbaasshh attempts to + read _/_e_t_c_/_h_o_s_t_s to obtain the list of possible hostname comple- + tions. 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 af- + ter 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 de- + fault of _~_/_._i_n_p_u_t_r_c (see RREEAADDLLIINNEE below). + IINNSSIIDDEE__EEMMAACCSS + If this variable appears in the environment when the shell + starts, bbaasshh assumes that it is running inside an Emacs shell + buffer and may disable line editing, depending on the value of + TTEERRMM. + 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 se- + quences 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. + LLCC__TTIIMMEE + This variable determines the locale category used for data and + time formatting. + LLIINNEESS Used by the sseelleecctt compound command to determine the column + length for printing selection lists. Automatically set if the + cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon + receipt of a SSIIGGWWIINNCCHH. + MMAAIILL If this parameter is set to a file or directory name and the + MMAAIILLPPAATTHH variable is not set, bbaasshh informs the user of the ar- + rival of mail in the specified file or Maildir-format directory. + MMAAIILLCCHHEECCKK + Specifies how often (in seconds) bbaasshh checks for mail. The de- + fault 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 filenames to be checked for mail. The + message to be printed when mail arrives in a particular file may + be specified by separating the filename from the message with a + `?'. When used in the text of the message, $$__ expands to the + name of the current mailfile. Example: + MMAAIILLPPAATTHH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has + mail!"' + BBaasshh can be configured to supply a default value for this vari- + able (there is no value by default), but the location 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/local/bin:/usr/lo- + cal/sbin:/usr/bin:/usr/sbin:/bin:/sbin''. + PPOOSSIIXXLLYY__CCOORRRREECCTT + If this variable is in the environment when bbaasshh starts, the + shell enters _p_o_s_i_x _m_o_d_e before reading the startup files, as if + 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. When the shell enters + _p_o_s_i_x _m_o_d_e, it sets this variable if it was not already set. + PPRROOMMPPTT__CCOOMMMMAANNDD + If this variable is set, and is an array, the value of each set + element is executed as a command prior to issuing each primary + prompt. If this is set but not an array variable, its value is + used as a command to execute instead. + PPRROOMMPPTT__DDIIRRTTRRIIMM + If set to a number greater than zero, the value is used as the + number of trailing directory components to retain when expanding + the \\ww and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below). + Characters removed are replaced with an ellipsis. + PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) + and displayed by interactive shells after reading a command and + before the command is executed. + 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 ex- + ecution trace. The first character of the expanded value of PPSS44 + is replicated multiple times, as necessary, to indicate multiple + levels of indirection. The default is ``++ ''. + SSHHEELLLL This variable expands to the full pathname to the shell. 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\\tt%%33llSS''. If the value is null, + no timing information is displayed. A trailing newline is added + when the format string is displayed. + TTMMOOUUTT If set to a value greater than zero, TTMMOOUUTT is treated as the de- + fault 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 a line of input + after issuing the primary prompt. BBaasshh terminates after waiting + for that number of seconds if a complete line of input does not + arrive. + TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which + bbaasshh creates temporary files for the shell's use. + aauuttoo__rreessuummee + This variable controls how the shell interacts with the user and + job control. If this variable is set, single word simple com- + 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 indexed and associative array variables. + Any variable may be used as an indexed array; the ddeeccllaarree builtin will + explicitly declare an array. There is no maximum limit on the size of + an array, nor any requirement that members be indexed or assigned con- + tiguously. Indexed arrays are referenced using integers (including + arithmetic expressions) and are zero-based; associative arrays are ref- + erenced using arbitrary strings. Unless otherwise noted, indexed array + indices must be non-negative integers. + + An indexed array is created automatically if any variable is assigned + to using the syntax _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e. The _s_u_b_s_c_r_i_p_t is treated as + an arithmetic expression that must evaluate to a number. To explicitly + declare an indexed array, use ddeeccllaarree --aa _n_a_m_e (see SSHHEELLLL BBUUIILLTTIINN CCOOMM-- + MMAANNDDSS below). ddeeccllaarree --aa _n_a_m_e[[_s_u_b_s_c_r_i_p_t]] is also accepted; the _s_u_b_- + _s_c_r_i_p_t is ignored. + + Associative arrays are created using ddeeccllaarree --AA _n_a_m_e. + + 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 may be of the form [_s_u_b_- + _s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed array assignments do not require anything but + _s_t_r_i_n_g. Each _v_a_l_u_e in the list is expanded using all the shell expan- + sions described below under EEXXPPAANNSSIIOONN. When assigning to indexed ar- + rays, if the optional brackets and subscript are supplied, that index + is assigned to; otherwise the index of the element assigned is the last + index assigned to by the statement plus one. Indexing starts at zero. + + When assigning to an associative array, the words in a compound assign- + ment may be either assignment statements, for which the subscript is + required, or a list of words that is interpreted as a sequence of al- + ternating keys and values: _n_a_m_e=(( _k_e_y_1 _v_a_l_u_e_1 _k_e_y_2 _v_a_l_u_e_2 ...)). These + are treated identically to _n_a_m_e=(( [_k_e_y_1]=_v_a_l_u_e_1 [_k_e_y_2]=_v_a_l_u_e_2 ...)). + The first word in the list determines how the remaining words are in- + terpreted; all assignments in a list must be of the same type. When + using key/value pairs, the keys may not be missing or empty; a final + missing value is treated like the empty string. + + 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 in- + troduced above. When assigning to an indexed array, if _n_a_m_e is sub- + scripted by a negative number, that number is interpreted as relative + to one greater than the maximum index of _n_a_m_e, so negative indices + count back from the end of the array, and an index of -1 references the + last element. + + Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. + The braces are required to avoid conflicts with pathname expansion. If + _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 ex- + pansion 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 elements in the ar- + ray. If the _s_u_b_s_c_r_i_p_t used to reference an element of an indexed array + evaluates to a number less than zero, it is interpreted as relative to + one greater than the maximum index of the array, so negative indices + count back from the end of the array, and an index of -1 references the + last element. + + Referencing an array variable without a subscript is equivalent to ref- + erencing the array with a subscript of 0. Any reference to a variable + using a valid subscript is legal, and bbaasshh will create an array if nec- + essary. + + An array variable is considered set if a subscript has been assigned a + value. The null string is a valid value. + + It is possible to obtain the keys (indices) of an array as well as the + values. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in + array variable _n_a_m_e. The treatment when in double quotes is similar to + the expansion of the special parameters _@ and _* within double quotes. + + The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] de- + stroys the array element at index _s_u_b_s_c_r_i_p_t, for both indexed and asso- + ciative arrays. Negative subscripts to indexed arrays are interpreted + as described above. Unsetting the last element of an array variable + does not unset the variable. 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. + + When using a variable name with a subscript as an argument to a com- + mand, such as with uunnsseett, without using the word expansion syntax de- + scribed above, the argument is subject to pathname expansion. If path- + name expansion is not desired, the argument should be quoted. + + The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to + specify an indexed array and a --AA option to specify an associative ar- + ray. If both options are supplied, --AA takes precedence. The rreeaadd + builtin accepts a --aa option to assign a list of words read from the + standard input to an array. The sseett and ddeeccllaarree builtins display array + values in a way that allows them to be reused as assignments. + +EEXXPPAANNSSIIOONN + Expansion is performed on the command line after it has been split into + words. There are seven kinds of expansion performed: _b_r_a_c_e _e_x_p_a_n_s_i_o_n, + _t_i_l_d_e _e_x_p_a_n_s_i_o_n, _p_a_r_a_m_e_t_e_r _a_n_d _v_a_r_i_a_b_l_e _e_x_p_a_n_s_i_o_n, _c_o_m_m_a_n_d _s_u_b_s_t_i_t_u_- + _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, parameter + and variable expansion, arithmetic expansion, and command substitution + (done in a left-to-right fashion); word splitting; and pathname expan- + sion. + + On systems that can support it, there is an additional expansion avail- + able: _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. This is performed at the same time as + tilde, parameter, variable, and arithmetic expansion and command sub- + stitution. + + After these expansions are performed, quote characters present in the + original word are removed unless they have been quoted themselves + (_q_u_o_t_e _r_e_m_o_v_a_l). + + Only brace expansion, word splitting, and pathname expansion can in- + crease the number of words of the expansion; other expansions expand a + single word to a single word. The only exceptions to this are the ex- + pansions of "$$@@" and "$${{_n_a_m_e[[@@]]}}", and, in most cases, $$** 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[[...._i_n_c_r]]}}, where _x and _y are + either integers or single characters, and _i_n_c_r, an optional increment, + is an integer. When integers are supplied, the expression expands to + each number between _x and _y, inclusive. Supplied integers may be pre- + fixed with _0 to force each term to have the same width. When either _x + or _y begins with a zero, the shell attempts to force all generated + terms to contain the same number of digits, zero-padding where neces- + sary. When characters are supplied, the expression expands to each + character lexicographically between _x and _y, inclusive, using the de- + fault C locale. Note that both _x and _y must be of the same type. When + the increment is supplied, it is used as the difference between each + term. The default increment is 1 or -1 as appropriate. + + Brace expansion is performed before any other expansions, and any char- + acters special to other expansions are preserved in the result. It is + 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 ex- + pression. 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, and + inhibits brace expansion until the closing }}. + + 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 re- + places 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 filenames with tildes in as- + signments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the ex- + panded value. + + Bash also performs tilde expansion on words satisfying the conditions + of variable assignments (as described above under PPAARRAAMMEETTEERRSS) when they + appear as arguments to simple commands. Bash does not do this, except + for the _d_e_c_l_a_r_a_t_i_o_n commands listed above, when in _p_o_s_i_x _m_o_d_e. + + 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 em- + bedded arithmetic expansion, command substitution, or parameter expan- + sion. + + ${_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. The _p_a_r_a_m_e_t_e_r is a shell + parameter as described above PPAARRAAMMEETTEERRSS) or an array reference + (AArrrraayyss). + + If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), and + _p_a_r_a_m_e_t_e_r is not a _n_a_m_e_r_e_f, it introduces a level of indirection. BBaasshh + uses the value formed by expanding the rest of _p_a_r_a_m_e_t_e_r as the new _p_a_- + _r_a_m_e_t_e_r; this is then expanded and that value is used in the rest of + the expansion, rather than the expansion of the original _p_a_r_a_m_e_t_e_r. + This is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The value is subject to tilde ex- + pansion, parameter expansion, command substitution, and arithmetic ex- + pansion. If _p_a_r_a_m_e_t_e_r is a nameref, this expands to the name of the + parameter referenced by _p_a_r_a_m_e_t_e_r instead of performing the complete + indirect expansion. The exceptions to this are the expansions of + ${!!_p_r_e_f_i_x**} and ${!!_n_a_m_e[_@]} described below. The exclamation point + must immediately follow the left brace in order to introduce indirec- + tion. + + In each of the cases below, _w_o_r_d is subject to tilde expansion, parame- + ter expansion, command substitution, and arithmetic expansion. + + When not performing substring expansion, using the forms documented be- + low (e.g., ::--), bbaasshh tests for a parameter that is unset or null. + Omitting the colon results in a test only for a parameter that is un- + set. + + ${_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 ex- + pansion 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 pa- + rameters 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 the + value of _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_- + _s_e_t. If _p_a_r_a_m_e_t_e_r is @@, an indexed array subscripted by @@ or **, + or an associative array name, the results differ as described + below. If _l_e_n_g_t_h is omitted, expands to the substring of the + value of _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_s_e_t + and extending to the end of the value. _l_e_n_g_t_h and _o_f_f_s_e_t are + arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below). + + If _o_f_f_s_e_t evaluates to a number less than zero, the value is + used as an offset in characters from the end of the value of _p_a_- + _r_a_m_e_t_e_r. If _l_e_n_g_t_h evaluates to a number less than zero, it is + interpreted as an offset in characters from the end of the value + of _p_a_r_a_m_e_t_e_r rather than a number of characters, and the expan- + sion is the characters between _o_f_f_s_e_t and that result. Note + that a negative offset must be separated from the colon by at + least one space to avoid being confused with the ::-- expansion. + + If _p_a_r_a_m_e_t_e_r is @@, the result is _l_e_n_g_t_h positional parameters + beginning at _o_f_f_s_e_t. A negative _o_f_f_s_e_t is taken relative to one + greater than the greatest positional parameter, so an offset of + -1 evaluates to the last positional parameter. It is an expan- + sion error if _l_e_n_g_t_h evaluates to a number less than zero. + + If _p_a_r_a_m_e_t_e_r is an indexed array name subscripted by @ or *, the + result is the _l_e_n_g_t_h members of the array beginning with ${_p_a_- + _r_a_m_e_t_e_r[_o_f_f_s_e_t]}. A negative _o_f_f_s_e_t is taken relative to one + greater than the maximum index of the specified array. It is an + expansion error if _l_e_n_g_t_h evaluates to a number less than zero. + + Substring expansion applied to an associative array produces un- + defined results. + + Substring indexing is zero-based unless the positional parame- + ters are used, in which case the indexing starts at 1 by de- + fault. If _o_f_f_s_e_t is 0, and the positional parameters are used, + $$00 is prefixed to the list. + + ${!!_p_r_e_f_i_x**} + ${!!_p_r_e_f_i_x@@} + NNaammeess mmaattcchhiinngg pprreeffiixx. Expands to the names of variables whose + names begin with _p_r_e_f_i_x, separated by the first character of the + IIFFSS special variable. When _@ is used and the expansion appears + within double quotes, each variable name expands to a separate + word. + + ${!!_n_a_m_e[_@]} + ${!!_n_a_m_e[_*]} + LLiisstt ooff aarrrraayy kkeeyyss. 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} + PPaarraammeetteerr lleennggtthh. The length in characters of the value of _p_a_- + _r_a_m_e_t_e_r is substituted. If _p_a_r_a_m_e_t_e_r is ** or @@, the value sub- + stituted 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. If _p_a_r_a_m_e_t_e_r is an indexed + array name subscripted by a negative number, that number is in- + terpreted as relative to one greater than the maximum index of + _p_a_r_a_m_e_t_e_r, so negative indices count back from the end of the + array, and an index of -1 references the last element. + + ${_p_a_r_a_m_e_t_e_r##_w_o_r_d} + ${_p_a_r_a_m_e_t_e_r####_w_o_r_d} + RReemmoovvee mmaattcchhiinngg pprreeffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce + a pattern just as in pathname expansion, and matched against the + expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt-- + tteerrnn MMaattcchhiinngg below. 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 op- + eration 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 vari- + able subscripted with @@ or **, the pattern removal operation is + applied to each member of the array in turn, and the expansion + is the resultant list. + + ${_p_a_r_a_m_e_t_e_r%%_w_o_r_d} + ${_p_a_r_a_m_e_t_e_r%%%%_w_o_r_d} + RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce + a pattern just as in pathname expansion, and matched against the + expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt-- + tteerrnn MMaattcchhiinngg below. 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 ex- + pansion is the expanded value of _p_a_r_a_m_e_t_e_r with the shortest + matching pattern (the ``%%'' case) or the longest matching pat- + tern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the + pattern removal operation is applied to each positional parame- + ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_- + _e_t_e_r is an array variable subscripted with @@ or **, the pattern + removal operation is applied to each member of the array in + turn, and the expansion is the resultant list. + + ${_p_a_r_a_m_e_t_e_r//_p_a_t_t_e_r_n//_s_t_r_i_n_g} + PPaatttteerrnn ssuubbssttiittuuttiioonn. The _p_a_t_t_e_r_n is expanded to produce a pat- + tern just as in pathname expansion, _P_a_r_a_m_e_t_e_r is expanded and + the longest match of _p_a_t_t_e_r_n against its value is replaced with + _s_t_r_i_n_g. The match is performed using the rules described under + PPaatttteerrnn MMaattcchhiinngg below. If _p_a_t_t_e_r_n begins with //, all matches + of _p_a_t_t_e_r_n are replaced with _s_t_r_i_n_g. Normally only the first + match is replaced. If _p_a_t_t_e_r_n begins with ##, it must match at + the beginning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n + begins with %%, it must match at the end of the expanded value of + _p_a_r_a_m_e_t_e_r. If _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted + and the // following _p_a_t_t_e_r_n may be omitted. If the nnooccaasseemmaattcchh + shell option is enabled, the match is performed without regard + to the case of alphabetic characters. If _p_a_r_a_m_e_t_e_r is @@ or **, + the substitution operation is applied to each positional parame- + ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_- + _e_t_e_r is an array variable subscripted with @@ or **, the substitu- + tion operation is applied to each member of the array in turn, + and the expansion is the resultant list. + + ${_p_a_r_a_m_e_t_e_r^^_p_a_t_t_e_r_n} + ${_p_a_r_a_m_e_t_e_r^^^^_p_a_t_t_e_r_n} + ${_p_a_r_a_m_e_t_e_r,,_p_a_t_t_e_r_n} + ${_p_a_r_a_m_e_t_e_r,,,,_p_a_t_t_e_r_n} + CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha- + betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro- + duce a pattern just as in pathname expansion. Each character in + the expanded value of _p_a_r_a_m_e_t_e_r is tested against _p_a_t_t_e_r_n, and, + if it matches the pattern, its case is converted. The pattern + should not attempt to match more than one character. The ^^ op- + erator converts lowercase letters matching _p_a_t_t_e_r_n to uppercase; + the ,, operator converts matching uppercase letters to lowercase. + The ^^^^ and ,,,, expansions convert each matched character in the + expanded value; the ^^ and ,, expansions match and convert only + the first character in the expanded value. If _p_a_t_t_e_r_n is omit- + ted, it is treated like a ??, which matches every character. If + _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is applied + to each positional parameter in turn, and the expansion is the + resultant list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted + with @@ or **, the case modification operation is applied to each + member of the array in turn, and the expansion is the resultant + list. + + ${_p_a_r_a_m_e_t_e_r@@_o_p_e_r_a_t_o_r} + PPaarraammeetteerr ttrraannssffoorrmmaattiioonn. The expansion is either a transforma- + tion of the value of _p_a_r_a_m_e_t_e_r or information about _p_a_r_a_m_e_t_e_r + itself, depending on the value of _o_p_e_r_a_t_o_r. Each _o_p_e_r_a_t_o_r is a + single letter: + + UU The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + with lowercase alphabetic characters converted to upper- + case. + uu The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + with the first character converted to uppercase, if it is + alphabetic. + LL The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + with uppercase alphabetic characters converted to lower- + case. + QQ The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + quoted in a format that can be reused as input. + EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + with backslash escape sequences expanded as with the + $$''......'' quoting mechanism. + PP The expansion is a string that is the result of expanding + the value of _p_a_r_a_m_e_t_e_r as if it were a prompt string (see + PPRROOMMPPTTIINNGG below). + AA The expansion is a string in the form of an assignment + statement or ddeeccllaarree command that, if evaluated, will + recreate _p_a_r_a_m_e_t_e_r with its attributes and value. + KK Produces a possibly-quoted version of the value of _p_a_r_a_m_- + _e_t_e_r, except that it prints the values of indexed and as- + sociative arrays as a sequence of quoted key-value pairs + (see AArrrraayyss above). + aa The expansion is a string consisting of flag values rep- + resenting _p_a_r_a_m_e_t_e_r's attributes. + + If _p_a_r_a_m_e_t_e_r is @@ or **, the operation is applied to each posi- + tional parameter in turn, and the expansion is the resultant + list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or + **, the operation is applied to each member of the array in turn, + and the expansion is the resultant list. + + The result of the expansion is subject to word splitting and + pathname expansion as described below. + + 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 in a subshell environ- + ment 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 com- + mand 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 to- + kens in the expression undergo parameter and variable expansion, com- + mand substitution, and quote removal. The result is treated as the + arithmetic expression to be evaluated. Arithmetic expansions may be + nested. + + The evaluation is performed according to the rules listed below under + 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 allows a process's input or output to be referred + to using a filename. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The + process _l_i_s_t is run asynchronously, and its input or output appears as + a filename. This filename is passed as an argument to the current com- + mand as the result of the expansion. If the >>((_l_i_s_t)) form is used, + writing to the file will provide 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. Process substitution is supported on systems that sup- + port named pipes (_F_I_F_O_s) or the //ddeevv//ffdd method of naming open files. + + 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 using these characters as + field terminators. If IIFFSS is unset, or its value is exactly + <><><>, the default, then sequences of <>, <>, + and <> at the beginning and end of the results of the previous + expansions are ignored, and any sequence of IIFFSS characters not at the + beginning or end serves to delimit words. If IIFFSS has a value other + than the default, then sequences of the whitespace characters ssppaaccee, + ttaabb, and nneewwlliinnee are ignored at the beginning and end of the word, as + long as the whitespace character is in the value of IIFFSS (an IIFFSS white- + space character). Any character in IIFFSS that is not IIFFSS whitespace, + along with any adjacent IIFFSS whitespace characters, delimits a field. A + sequence of IIFFSS whitespace characters is also treated as a delimiter. + If the value of IIFFSS is null, no word splitting occurs. + + Explicit null arguments ("""" or '''') are retained and passed to commands + as empty strings. Unquoted implicit null arguments, resulting from the + expansion of parameters that have no values, are removed. If a parame- + ter with no value is expanded within double quotes, a null argument re- + sults and is retained and passed to a command as an empty string. When + a quoted null argument appears as part of a word whose expansion is + non-null, the null argument is removed. That is, the word -d'' becomes + -d after word splitting and null argument removal. + + 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, and is not quoted, then the word is regarded as a _p_a_t_t_e_r_n, and + replaced with an alphabetically sorted list of filenames matching the + pattern (see PPaatttteerrnn MMaattcchhiinngg below). If no matching filenames are + found, and the shell option nnuullllgglloobb is not enabled, the word is left + unchanged. If the nnuullllgglloobb option is set, and no matches are found, + the word is removed. If the ffaaiillgglloobb shell option is set, and no + matches are found, an error message is printed and the command is not + executed. If the shell option nnooccaasseegglloobb is enabled, the match is per- + formed 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 ex- + plicitly, unless the shell option ddoottgglloobb is set. The filenames ````..'''' + and ````....'''' must always be matched explicitly, even if ddoottgglloobb is set. + In other cases, the ````..'''' character is not treated specially. When + matching a pathname, the slash character must always be matched explic- + itly by a slash in the pattern, but in other matching contexts it can + be matched by a special pattern character as described below under PPaatt-- + tteerrnn MMaattcchhiinngg. See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN + CCOOMMMMAANNDDSS for a description of the nnooccaasseegglloobb, nnuullllgglloobb, ffaaiillgglloobb, and + ddoottgglloobb shell options. + + The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file + names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is set, each matching file + name that also matches one of the patterns in GGLLOOBBIIGGNNOORREE is removed + from the list of matches. If the nnooccaasseegglloobb option is set, the match- + ing against the patterns in GGLLOOBBIIGGNNOORREE is performed without regard to + case. The filenames ````..'''' and ````....'''' are always ignored when GGLLOOBBIIGG-- + NNOORREE is set and not null. However, setting GGLLOOBBIIGGNNOORREE to a non-null + value has the effect of enabling the ddoottgglloobb shell option, so all other + filenames beginning with a ````..'''' will match. To get the old behavior + of ignoring filenames beginning with a ````..'''', make ````..**'''' one of the + patterns in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when GGLLOOBBIIGGNNOORREE + is unset. The pattern matching honors the setting of the eexxttgglloobb shell + option. + + 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. When the + gglloobbssttaarr shell option is enabled, and ** is used in a + pathname expansion context, two adjacent **s used as a + single pattern will match all files and zero or more di- + rectories and subdirectories. If followed by a //, two + adjacent **s will match only directories and subdirecto- + ries. + ?? Matches any single character. + [[......]] Matches any one of the enclosed characters. A pair of + characters separated by a hyphen denotes a _r_a_n_g_e _e_x_p_r_e_s_- + _s_i_o_n; any character that falls between those two charac- + ters, inclusive, using the current locale's collating se- + quence and character set, is matched. If the first char- + acter 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 values of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell vari- + ables, if set. To obtain the traditional interpretation + of range expressions, where [[aa--dd]] is equivalent to + [[aabbccdd]], set value of the LLCC__AALLLL shell variable to CC, or + enable the gglloobbaasscciiiirraannggeess shell option. A -- may be + matched by including it as the first or last character in + the set. A ]] may be matched by including it as the first + character in the set. + + Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using + the syntax [[::_c_l_a_s_s::]], where _c_l_a_s_s is one of the following + classes defined in the POSIX standard: + aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt + ppuunncctt ssppaaccee uuppppeerr wwoorrdd xxddiiggiitt + A character class matches any character belonging to that + class. The wwoorrdd character class matches letters, digits, + and the character _. + + Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified us- + ing the syntax [[==_c==]], which matches all characters with + the same collation weight (as defined by the current lo- + cale) as the character _c. + + Within [[ and ]], the syntax [[.._s_y_m_b_o_l..]] matches the collat- + ing symbol _s_y_m_b_o_l. + + If the eexxttgglloobb shell option is enabled using the sshhoopptt builtin, several + extended pattern matching operators are recognized. In the following + 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 + + Complicated extended pattern matching against long strings is slow, es- + pecially when the patterns contain alternations and the strings contain + multiple matches. Using separate matches against shorter strings, or + using arrays of strings instead of a single long string, may be faster. + + 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 allows + commands' file handles to be duplicated, opened, closed, made to refer + to different files, and can change the files the command reads from and + writes to. Redirection may also be used to modify file handles in the + current shell execution environment. The following redirection opera- + tors may precede or appear anywhere within a _s_i_m_p_l_e _c_o_m_m_a_n_d or may fol- + low a _c_o_m_m_a_n_d. Redirections are processed in the order they appear, + from left to right. + + Each redirection that may be preceded by a file descriptor number may + instead be preceded by a word of the form {_v_a_r_n_a_m_e}. In this case, for + each redirection operator except >&- and <&-, the shell will allocate a + file descriptor greater than or equal to 10 and assign it to _v_a_r_n_a_m_e. + If >&- or <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines + the file descriptor to close. If {_v_a_r_n_a_m_e} is supplied, the redirect- + ion persists beyond the scope of the command, allowing the shell pro- + grammer to manage the file descriptor himself. + + 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 and variable expansion, command substitution, + arithmetic expansion, quote removal, pathname expansion, and word + splitting. If it expands to more than one word, bbaasshh reports an error. + + Note that the order of redirections is significant. For example, the + 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 from the standard output before the standard out- + put was redirected to _d_i_r_l_i_s_t. + + BBaasshh handles several filenames specially when they are used in redirec- + tions, as described in the following table. If the operating system on + which bbaasshh is running provides these special files, bash will use them; + otherwise it will emulate them internally with the behavior described + below. + + //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 the corresponding TCP socket. + //ddeevv//uuddpp//_h_o_s_t//_p_o_r_t + If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t + is an integer port number or service name, bbaasshh attempts + to open the corresponding UDP socket. + + A failure to open or create a file causes the redirection to fail. + + Redirections using file descriptors greater than 9 should be used with + care, as they may conflict with file descriptors the shell uses inter- + 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 ex- + pansion 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 re- + sults from the expansion of _w_o_r_d to be opened for appending on file de- + scriptor _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 + This construct allows both the standard output (file descriptor 1) and + the standard error output (file descriptor 2) to be redirected to the + file whose name is the expansion of _w_o_r_d. + + There are two formats for redirecting standard output and standard er- + ror: + + &&>>_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 + + When using the second form, _w_o_r_d may not expand to a number or --. If + it does, other redirection operators apply (see DDuupplliiccaattiinngg FFiillee DDee-- + ssccrriippttoorrss below) for compatibility reasons. + + AAppppeennddiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr + This construct allows both the standard output (file descriptor 1) and + the standard error output (file descriptor 2) to be appended to the + file whose name is the expansion of _w_o_r_d. + + The format for appending standard output and standard error is: + + &&>>>>_w_o_r_d + + This is semantically equivalent to + + >>>>_w_o_r_d 2>>&&1 + + (see DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss below). + + HHeerree DDooccuummeennttss + This type of redirection instructs the shell to read input from the + current source until a line containing only _d_e_l_i_m_i_t_e_r (with no trailing + blanks) is seen. All of the lines read up to that point are then used + as the standard input (or file descriptor _n if _n is specified) for a + command. + + The format of here-documents is: + + [_n]<<<<[--]_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 and variable expansion, command substitution, arithmetic + expansion, or pathname expansion is performed on _w_o_r_d. If any part of + _w_o_r_d is 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 un- + quoted, all lines of the here-document are subjected to parameter ex- + pansion, command substitution, and arithmetic expansion, the character + sequence \\<> is ignored, and \\ must be used to quote the charac- + ters \\, $$, 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 al- + lows here-documents within shell scripts to be indented in a natural + fashion. + + HHeerree SSttrriinnggss + A variant of here documents, the format is: + + [_n]<<<<<<_w_o_r_d + + The _w_o_r_d undergoes tilde expansion, parameter and variable expansion, + command substitution, arithmetic expansion, and quote removal. Path- + name expansion and word splitting are not performed. The result is + supplied as a single string, with a newline appended, to the command on + its standard input (or file descriptor _n if _n is specified). + + 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 de- + scriptor open for input, a redirection error occurs. If _w_o_r_d evaluates + 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. If _w_o_r_d evaluates to --, file descriptor _n is + closed. As a special case, if _n is omitted, and _w_o_r_d does not expand + to one or more digits or --, the standard output and standard error are + redirected as described previously. + + MMoovviinngg FFiillee DDeessccrriippttoorrss + The redirection operator + + [_n]<<&&_d_i_g_i_t-- + + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard + 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, and + all lines that make up a compound command, before executing any of the + commands on that line or the compound command. 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 command. As a + consequence, aliases defined in a function are not available until af- + ter that function is executed. To be safe, always put alias defini- + tions on a separate line, and do not use aalliiaass in compound 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 in- + terpret them (contrast this with the execution of a shell script). + When a function is executed, the arguments to the function become the + positional parameters during its execution. The special parameter ## is + updated to reflect the change. Special parameter 00 is unchanged. The + first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func- + tion while the function is executing. + + All other aspects of the shell execution environment are identical be- + tween a function and its caller with these exceptions: the DDEEBBUUGG and + RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been + given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin + below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett + builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN + traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell + option has been enabled. + + 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 a variable is declared llooccaall, the vari- + able's visible scope is restricted to that function and its children + (including the functions it calls). Local variables "shadow" variables + with the same name declared at previous scopes. For instance, a local + variable declared in a function hides a global variable of the same + name: references and assignments refer to the local variable, leaving + the global variable unmodified. When the function returns, the global + variable is once again visible. + + The shell uses _d_y_n_a_m_i_c _s_c_o_p_i_n_g to control a variable's visibility + within functions. With dynamic scoping, visible variables and their + values are a result of the sequence of function calls that caused exe- + cution to reach the current function. The value of a variable that a + function sees depends on its value within its caller, if any, whether + that caller is the "global" scope or another shell function. This is + also the value that a local variable declaration "shadows", and the + value that is restored when the function returns. + + For example, if a variable _v_a_r is declared as local in function _f_u_n_c_1, + and _f_u_n_c_1 calls another function _f_u_n_c_2, references to _v_a_r made from + within _f_u_n_c_2 will resolve to the local variable _v_a_r from _f_u_n_c_1, shadow- + ing any global variable named _v_a_r. + + The uunnsseett builtin also acts using the same dynamic scope: if a variable + is local to the current scope, uunnsseett will unset it; otherwise the unset + will refer to the variable found in any calling scope as described + above. If a variable at the current local scope is unset, it will re- + main so until it is reset in that scope or until the function returns. + Once the function returns, any instance of the variable at a previous + scope will become visible. If the unset acts on a variable at a previ- + ous scope, any instance of a variable with that name that had been + shadowed will become visible. + + The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, de- + fines a maximum function nesting level. Function invocations that ex- + ceed the limit cause the entire command to abort. + + If the builtin command rreettuurrnn is executed in a function, the function + completes and execution resumes with the next command after the func- + tion call. Any command associated with the RREETTUURRNN trap is executed be- + fore 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. + + Functions may be recursive. The FFUUNNCCNNEESSTT variable may be used to limit + the depth of the function call stack and restrict the number of func- + tion invocations. By default, no limit is imposed on the number of re- + cursive calls. + +AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN + The shell allows arithmetic expressions to be evaluated, under certain + circumstances (see the lleett and ddeeccllaarree builtin commands, the (((( com- + pound command, 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 fol- + lowing list of operators is grouped into levels of equal-precedence op- + erators. The levels are listed in order of decreasing precedence. + + _i_d++++ _i_d---- + variable post-increment and post-decrement + -- ++ unary minus and plus + ++++_i_d ----_i_d + variable pre-increment and pre-decrement + !! ~~ 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 _i_n_t_e_g_e_r attribute turned on + to be used in an expression. + + Integer constants follow the C language definition, without suffixes or + character constants. Constants with a leading 0 are interpreted as oc- + tal numbers. A leading 0x or 0X denotes hexadecimal. Otherwise, num- + bers take the form [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal num- + ber between 2 and 64 representing the arithmetic base, and _n is a num- + ber in that base. If _b_a_s_e_# is omitted, then base 10 is used. When + specifying _n, if a non-digit is required, 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 up- + percase letters may be used interchangeably to represent numbers be- + tween 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. The tteesstt and [[ commands determine their + behavior based on the number of arguments; see the descriptions of + those commands for any other command-specific actions. + + Expressions are formed from the following unary or binary primaries. + BBaasshh handles several filenames specially when they are used in expres- + sions. If the operating system on which bbaasshh is running provides these + special files, bash will use them; otherwise it will emulate them in- + ternally with this behavior: 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. + + When used with [[[[, the << and >> operators sort lexicographically using + the current locale. The tteesstt command sorts using ASCII ordering. + + --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. + --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. + --NN _f_i_l_e + True if _f_i_l_e exists and has been modified since it was last + read. + --OO _f_i_l_e + True if _f_i_l_e exists and is owned by the effective user id. + --SS _f_i_l_e + True if _f_i_l_e exists and is a socket. + _f_i_l_e_1 --eeff _f_i_l_e_2 + True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode num- + bers. + _f_i_l_e_1 -nntt _f_i_l_e_2 + True if _f_i_l_e_1 is newer (according to modification date) than + _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. + --oo _o_p_t_n_a_m_e + True if the shell option _o_p_t_n_a_m_e is enabled. See the list of + options under the description of the --oo option to the sseett + builtin below. + --vv _v_a_r_n_a_m_e + True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a + value). + --RR _v_a_r_n_a_m_e + True if the shell variable _v_a_r_n_a_m_e is set and is a name refer- + ence. + --zz _s_t_r_i_n_g + True if the length of _s_t_r_i_n_g is zero. + _s_t_r_i_n_g + --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 + _s_t_r_i_n_g_1 == _s_t_r_i_n_g_2 + True if the strings are equal. == should be used with the tteesstt + command for POSIX conformance. When used with the [[[[ command, + this performs pattern matching as described above (CCoommppoouunndd CCoomm-- + mmaannddss). + + _s_t_r_i_n_g_1 !!== _s_t_r_i_n_g_2 + True if the strings are not equal. + + _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. + + _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. + + _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. When used with the [[[[ command, _A_r_g_1 and + _A_r_g_2 are evaluated as arithmetic expressions (see AARRIITTHHMMEETTIICC + EEVVAALLUUAATTIIOONN above). + +SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN + When a simple command is executed, the shell performs the following ex- + pansions, assignments, and redirections, from left to right, in the + following order. + + 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 af- + fect 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 re- + member 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 searches for a defined shell function + named ccoommmmaanndd__nnoott__ffoouunndd__hhaannddllee. If that function exists, it is invoked + in a separate execution environment with the original command and the + original command's arguments as its arguments, and the function's exit + status becomes the exit status of that subshell. If that function is + not defined, the shell prints an error message and returns an exit sta- + tus 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 un- + der 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 re- + set 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. + + Subshells spawned to execute command substitutions inherit the value of + the --ee option from the parent shell. When not in _p_o_s_i_x _m_o_d_e, bbaasshh + clears the --ee option in such subshells. + + If a command is followed by a && and job control is not active, the de- + fault standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. Oth- + erwise, the invoked command inherits the file descriptors of the call- + ing 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 in- + vocation, 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 ddee-- + ccllaarree --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, re- + placing 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 filename of the command and passed to that command in its environ- + ment. + +EEXXIITT SSTTAATTUUSS + The exit status of an executed command is the value returned by the + _w_a_i_t_p_i_d system call or equivalent function. Exit statuses fall between + 0 and 255, though, as explained below, the shell may use values above + 125 specially. Exit statuses from shell builtins and compound commands + are also limited to this range. Under certain circumstances, the shell + will use special values to indicate specific failure modes. + + 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 re- + turns 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, generally in- + valid options or missing arguments. + + BBaasshh itself returns the exit status of the last command executed, un- + less 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 ig- + nores 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 ef- + fect, 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 us- + ing 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 ex- + ecution 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 in- + terface supplied jointly by the operating system kernel'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, + if the user so specifies with stty tostop, write to the terminal. + Background processes which attempt to read from (write to when stty + tostop is in effect) the terminal are sent a SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) signal + by the kernel's terminal 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 re- + turned 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 specification (_j_o_b_s_p_e_c). 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 example, %%ccee refers to a stopped job whose command name be- + gins with ccee. 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 background. The _p_r_e_v_i_o_u_s _j_o_b may + be referenced using %%--. If there is only a single job, %%++ and %%-- can + both be used to refer to that job. In output pertaining 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 ex- + its. + + If an attempt to exit bbaasshh is made while jobs are stopped (or, if the + cchheecckkjjoobbss shell option has been enabled using the sshhoopptt builtin, run- + ning), the shell prints a warning message, and, if the cchheecckkjjoobbss option + is enabled, lists the jobs and their statuses. The jjoobbss command may + then be used to inspect their status. If a second attempt to exit is + made without an intervening command, the shell does not print another + warning, and any stopped jobs are terminated. + + When the shell is waiting for a job or process using the wwaaiitt builtin, + and job control is enabled, wwaaiitt will return when the job changes + state. The --ff option causes wwaaiitt to wait until the job or process ter- + minates before returning. + +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 displays PPSS00 after it + reads a command but before executing it. BBaasshh displays PPSS44 as de- + scribed above before tracing each command when the --xx option is en- + abled. 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 in- + serted 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 (uses the value of the PPRROOMMPPTT__DDIIRRTTRRIIMM vari- + able) + \\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 be- + low), while the command number is the position in the sequence of com- + mands 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 + pprroommppttvvaarrss shell option (see the description of the sshhoopptt command under + SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). This can have unwanted side effects if + escaped portions of the string appear within command substitution or + contain characters special to word expansion. + +RREEAADDLLIINNEE + This is the library that handles reading input when using an interac- + tive shell, unless the ----nnooeeddiittiinngg option is given at shell invocation. + Line editing is also used when using the --ee option to the rreeaadd builtin. + By default, the line editing commands are similar to those of Emacs. A + vi-style line editing interface is also available. Line editing can be + enabled at any time using the --oo eemmaaccss or --oo vvii options to the sseett + builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). To turn off line editing + after the shell is running, use the ++oo eemmaaccss or ++oo vvii options to the + sseett builtin. + + 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. If that file does not exist or cannot be read, the ultimate + default is _/_e_t_c_/_i_n_p_u_t_r_c. When a program which uses the readline li- + brary 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 _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 + or using the bbiinndd builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + + 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. + bblliinnkk--mmaattcchhiinngg--ppaarreenn ((OOffff)) + If set to OOnn, readline attempts to briefly move the cursor to an + opening parenthesis when a closing parenthesis is inserted. + ccoolloorreedd--ccoommpplleettiioonn--pprreeffiixx ((OOffff)) + If set to OOnn, when listing completions, readline displays the + common prefix of the set of possible completions using a differ- + ent color. The color definitions are taken from the value of + the LLSS__CCOOLLOORRSS environment variable. + ccoolloorreedd--ssttaattss ((OOffff)) + If set to OOnn, readline displays possible completions using dif- + ferent colors to indicate their file type. The color defini- + tions are taken from the value of the LLSS__CCOOLLOORRSS environment + variable. + ccoommmmeenntt--bbeeggiinn ((````##'''')) + The string that is inserted when the readline iinnsseerrtt--ccoommmmeenntt + command is executed. This command is bound to MM--## in emacs mode + and to ## in vi command mode. + ccoommpplleettiioonn--ddiissppllaayy--wwiiddtthh ((--11)) + The number of screen columns used to display possible matches + when performing completion. The value is ignored if it is less + than 0 or greater than the terminal screen width. A value of 0 + will cause matches to be displayed one per line. The default + value is -1. + ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff)) + If set to OOnn, readline performs filename matching and completion + in a case-insensitive fashion. + ccoommpplleettiioonn--mmaapp--ccaassee ((OOffff)) + If set to OOnn, and ccoommpplleettiioonn--iiggnnoorree--ccaassee is enabled, readline + treats hyphens (_-) and underscores (__) as equivalent when per- + forming case-insensitive filename matching and completion. + ccoommpplleettiioonn--pprreeffiixx--ddiissppllaayy--lleennggtthh ((00)) + The length in characters of the common prefix of a list of pos- + sible completions that is displayed without modification. When + set to a value greater than zero, common prefixes longer than + this value are replaced with an ellipsis when displaying possi- + ble completions. + ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000)) + This determines when the user is queried about viewing the num- + ber of possible completions generated by the ppoossssiibbllee--ccoommppllee-- + ttiioonnss command. It may be set to any integer value greater than + or equal to zero. If the number of possible completions is + greater than or equal to the value of this variable, readline + will ask whether or not the user 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). The default is _O_n, but readline will set it to + _O_f_f if the locale contains eight-bit characters. + 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. + eecchhoo--ccoonnttrrooll--cchhaarraacctteerrss ((OOnn)) + When set to OOnn, on operating systems that indicate they support + it, readline echoes a character corresponding to a signal gener- + ated from the keyboard. + 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. + eemmaaccss--mmooddee--ssttrriinngg ((@@)) + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is + displayed immediately before the last line of the primary prompt + when emacs editing mode is active. The value is expanded like a + key binding, so the standard set of meta- and control prefixes + and backslash escape sequences is available. Use the \1 and \2 + escapes to begin and end sequences of non-printing characters, + which can be used to embed a terminal control sequence into the + mode string. + eennaabbllee--bbrraacckkeetteedd--ppaassttee ((OOnn)) + When set to OOnn, readline will configure the terminal in a way + that will enable it to insert each paste into the editing buffer + as a single string of characters, instead of treating each char- + acter as if it had been read from the keyboard. This can pre- + vent pasted characters from being interpreted as editing com- + mands. + 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 ar- + row keys. + eennaabbllee--mmeettaa--kkeeyy ((OOnn)) + When set to OOnn, readline will try to enable any meta modifier + key the terminal claims to support when it is called. On many + terminals, the meta key is used to send eight-bit characters. + eexxppaanndd--ttiillddee ((OOffff)) + If set to OOnn, tilde expansion is performed when readline at- + tempts 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. + hhiissttoorryy--ssiizzee ((uunnsseett)) + Set the maximum number of history entries saved in the history + list. If set to zero, any existing history entries are deleted + and no new entries are saved. If set to a value less than zero, + the number of history entries is not limited. By default, the + number of history entries is set to the value of the HHIISSTTSSIIZZEE + shell variable. If an attempt is made to set _h_i_s_t_o_r_y_-_s_i_z_e to a + non-numeric value, the maximum number of history entries will be + set to 500. + 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. This setting is automatically enabled for terminals + of height 1. + iinnppuutt--mmeettaa ((OOffff)) + If set to OOnn, readline will enable eight-bit input (that is, it + will not strip the eighth bit from the characters it reads), re- + gardless of what the terminal claims it can support. The name + mmeettaa--ffllaagg is a synonym for this variable. The default is _O_f_f, + but readline will set it to _O_n if the locale contains eight-bit + characters. + 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. + kkeeyysseeqq--ttiimmeeoouutt ((550000)) + Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when + reading an ambiguous key sequence (one that can form a complete + key sequence using the input read so far, or can take additional + input to complete a longer key sequence). If no input is re- + ceived within the timeout, _r_e_a_d_l_i_n_e will use the shorter but + complete key sequence. The value is specified in milliseconds, + so a value of 1000 means that _r_e_a_d_l_i_n_e will wait one second for + additional input. If this variable is set to a value less than + or equal to zero, or to a non-numeric value, _r_e_a_d_l_i_n_e will wait + until another key is pressed to decide which key sequence to + complete. + mmaarrkk--ddiirreeccttoorriieess ((OOnn)) + If set to OOnn, completed directory names have a slash appended. + mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff)) + If set to OOnn, history lines that have been modified are dis- + 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--ddii-- + rreeccttoorriieess). + mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn)) + This variable, when set to OOnn, causes readline to match files + whose names begin with a `.' (hidden files) when performing + filename completion. If set to OOffff, the leading `.' must be + supplied by the user in the filename to be completed. + mmeennuu--ccoommpplleettee--ddiissppllaayy--pprreeffiixx ((OOffff)) + If set to OOnn, menu completion displays the common prefix of the + list of possible completions (which may be empty) before cycling + through the list. + oouuttppuutt--mmeettaa ((OOffff)) + If set to OOnn, readline will display characters with the eighth + bit set directly rather than as a meta-prefixed escape sequence. + The default is _O_f_f, but readline will set it to _O_n if the locale + contains eight-bit characters. + 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. + rreevveerrtt--aallll--aatt--nneewwlliinnee ((OOffff)) + If set to OOnn, readline will undo all changes to history lines + before returning when aacccceepptt--lliinnee is executed. By default, his- + tory lines may be modified and retain individual undo lists + across calls to rreeaaddlliinnee. + 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 in- + stead of ringing the bell. + sshhooww--mmooddee--iinn--pprroommpptt ((OOffff)) + If set to OOnn, add a string to the beginning of the prompt indi- + cating the editing mode: emacs, vi command, or vi insertion. + The mode strings are user-settable (e.g., _e_m_a_c_s_-_m_o_d_e_-_s_t_r_i_n_g). + sskkiipp--ccoommpplleetteedd--tteexxtt ((OOffff)) + If set to OOnn, this alters the default completion behavior when + inserting a single match into the line. It's only active when + performing completion in the middle of a word. If enabled, + readline does not insert characters from the completion that + match characters after point in the word being completed, so + portions of the word following the cursor are not duplicated. + vvii--ccmmdd--mmooddee--ssttrriinngg ((((ccmmdd)))) + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is + displayed immediately before the last line of the primary prompt + when vi editing mode is active and in command mode. The value + is expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the \1 and \2 escapes to begin and end sequences of non- + printing characters, which can be used to embed a terminal con- + trol sequence into the mode string. + vvii--iinnss--mmooddee--ssttrriinngg ((((iinnss)))) + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is + displayed immediately before the last line of the primary prompt + when vi editing mode is active and in insertion mode. The value + is expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the \1 and \2 escapes to begin and end sequences of non- + printing characters, which can be used to embed a terminal con- + trol sequence into the mode string. + 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, after any comparison operator, + extends to the end of the line; unless otherwise noted, 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 in- + stance, 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 both the 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. + + vveerrssiioonn + The vveerrssiioonn test may be used to perform comparisons + against specific readline versions. The vveerrssiioonn expands + to the current readline version. The set of comparison + operators includes ==, (and ====), !!==, <<==, >>==, <<, and >>. + The version number supplied on the right side of the op- + erator consists of a major version number, an optional + decimal point, and an optional minor version (e.g., 77..11). + If the minor version is omitted, it is assumed to be 00. + The operator may be separated from the string vveerrssiioonn and + from the version number argument by whitespace. + + aapppplliiccaattiioonn + The aapppplliiccaattiioonn construct is used to include application- + specific settings. Each program using the readline li- + brary 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 + bbaasshh: + + $$iiff Bash + # Quote the current or previous word + "\C-xq": "\eb\"\ef\"" + $$eennddiiff + + _v_a_r_i_a_b_l_e + The _v_a_r_i_a_b_l_e construct provides simple equality tests for + readline variables and values. The permitted comparison + operators are _=, _=_=, and _!_=. The variable name must be + separated from the comparison operator by whitespace; the + operator may be separated from the value on the right + hand side by whitespace. Both string and boolean vari- + ables may be tested. Boolean variables must be tested + against the values _o_n and _o_f_f. + + $$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). + sshheellll--ffoorrwwaarrdd--wwoorrdd + Move forward to the end of the next word. Words are delimited + by non-quoted shell metacharacters. + sshheellll--bbaacckkwwaarrdd--wwoorrdd + Move back to the start of the current or previous word. Words + are delimited by non-quoted shell metacharacters. + pprreevviioouuss--ssccrreeeenn--lliinnee + Attempt to move point to the same physical screen column on the + previous physical screen line. This will not have the desired + effect if the current Readline line does not take up more than + one physical line or if point is not greater than the length of + the prompt plus the screen width. + nneexxtt--ssccrreeeenn--lliinnee + Attempt to move point to the same physical screen column on the + next physical screen line. This will not have the desired effect + if the current Readline line does not take up more than one + physical line or if the length of the current Readline line is + not greater than the length of the prompt plus the screen width. + cclleeaarr--ddiissppllaayy ((MM--CC--ll)) + Clear the screen and, if possible, the terminal's scrollback + buffer, then redraw the current line, leaving the current line + at the top of the screen. + cclleeaarr--ssccrreeeenn ((CC--ll)) + Clear the screen, then redraw the current line, leaving the cur- + rent 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. + hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--bbaacckkwwaarrdd + Search backward through the history for the string of characters + between the start of the current line and the current cursor po- + sition (the _p_o_i_n_t). The search string may match anywhere in a + history line. This is a non-incremental search. + hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--ffoorrwwaarrdd + Search forward through the history for the string of characters + between the start of the current line and the point. The search + string may match anywhere in a history line. This is a non-in- + cremental 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 in- + serts 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 a numeric argument, behave + exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg + move back through the history list, inserting the last word (or + the word specified by the argument to the first call) of each + line in turn. Any numeric argument supplied to these successive + calls determines the direction to move through the history. A + negative argument switches the direction through the history + (back or forward). The history expansion facilities are used to + extract the last word, as if the "!$" history expansion had been + specified. + sshheellll--eexxppaanndd--lliinnee ((MM--CC--ee)) + Expand the line as the shell does. This performs alias and his- + tory expansion as well as all of the shell word expansions. See + HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. + hhiissttoorryy--eexxppaanndd--lliinnee ((MM--^^)) + Perform history expansion on the current line. See HHIISSTTOORRYY EEXX-- + PPAANNSSIIOONN 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. A + numeric argument, if supplied, specifies the history entry to + use instead of the current line. + eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xx CC--ee)) + Invoke an editor on the current command line, and execute the + result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, $$EEDD-- + IITTOORR, and _e_m_a_c_s as the editor, in that order. + + CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt + _e_n_d_-_o_f_-_f_i_l_e ((uussuuaallllyy CC--dd)) + The character indicating end-of-file as set, for example, by + ``stty''. If this character is read when there are no charac- + ters on the line, and point is at the beginning of the line, + Readline interprets it as the end of input and returns EEOOFF. + ddeelleettee--cchhaarr ((CC--dd)) + Delete the character at point. If this function is bound to the + same character as the tty EEOOFF character, as CC--dd commonly is, see + above for the effects. + bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt)) + Delete the character behind the cursor. When given a numeric + argument, save the deleted text on the kill ring. + 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 ar- + gument, uppercase the previous word, but do not move point. + ddoowwnnccaassee--wwoorrdd ((MM--ll)) + Lowercase the current (or following) word. With a negative ar- + gument, lowercase the previous word, but do not move point. + ccaappiittaalliizzee--wwoorrdd ((MM--cc)) + Capitalize the current (or following) word. With a negative ar- + gument, 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. + sshheellll--kkiillll--wwoorrdd + 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 sshheellll--ffoorrwwaarrdd--wwoorrdd. + sshheellll--bbaacckkwwaarrdd--kkiillll--wwoorrdd + Kill the word behind point. Word boundaries are the same as + those used by sshheellll--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 nu- + meric argument, but is otherwise ignored. As a special case, if + this command is immediately followed by a character that is nei- + ther a digit nor 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 ar- + gument may be used to move backward through the list. This com- + mand is intended to be bound to TTAABB, but is unbound by default. + mmeennuu--ccoommpplleettee--bbaacckkwwaarrdd + Identical to mmeennuu--ccoommpplleettee, but moves backward through the list + of possible completions, as if mmeennuu--ccoommpplleettee had been given a + negative argument. This command 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. + ddaabbbbrreevv--eexxppaanndd + Attempt menu 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. + pprriinntt--llaasstt--kkbbdd--mmaaccrroo (()) + Print the last keyboard macro defined in a format suitable for + the _i_n_p_u_t_r_c file. + + MMiisscceellllaanneeoouuss + rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr)) + Read in the contents of the _i_n_p_u_t_r_c file, and incorporate any + 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--lloowweerrccaassee--vveerrssiioonn ((MM--AA,, MM--BB,, MM--_x,, ......)) + If the metafied character _x is uppercase, run the command that + is bound to the corresponding metafied lowercase character. The + behavior is undefined if _x is already lowercase. + 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. + sskkiipp--ccssii--sseeqquueennccee + Read enough characters to consume a multi-key sequence such as + those defined for keys like Home and End. Such sequences begin + with a Control Sequence Indicator (CSI), usually ESC-[. If this + sequence is bound to "\[", keys producing such sequences will + have no effect unless explicitly bound to a readline command, + instead of inserting stray characters into the editing buffer. + This is unbound by default, but usually bound to ESC-[. + iinnsseerrtt--ccoommmmeenntt ((MM--##)) + Without a numeric argument, the value of the readline ccoomm-- + mmeenntt--bbeeggiinn variable is inserted at the beginning of the current + 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 re- + moved, the line will be executed by the shell. + gglloobb--ccoommpplleettee--wwoorrdd ((MM--gg)) + The word before point is treated as a pattern for pathname ex- + pansion, with an asterisk implicitly appended. This pattern is + used to generate a list of matching filenames for possible com- + pletions. + gglloobb--eexxppaanndd--wwoorrdd ((CC--xx **)) + The word before point is treated as a pattern for pathname ex- + pansion, and the list of matching filenames is inserted, replac- + ing 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 program- + mable completion facilities are invoked. + + First, the command name is identified. If the command word is the + empty string (completion attempted at the beginning of an empty line), + any compspec defined with the --EE option to ccoommpplleettee is used. If a + compspec has been defined for that command, the compspec is used to + generate the list of possible completions for the word. If the command + word is a full pathname, a compspec for the full pathname is searched + for first. If no compspec is found for the full pathname, an attempt + is made to find a compspec for the portion following the final slash. + If those searches do not result in a compspec, any compspec defined + with the --DD option to ccoommpplleettee is used as the default. If there is no + default compspec, bbaasshh attempts alias expansion on the command word as + a final resort, and attempts to find a compspec for the command word + from any successful expansion. + + 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 pathname expansion pattern to the --GG op- + tion 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, CCOOMMPP__PPOOIINNTT, CCOOMMPP__KKEEYY, and CCOOMMPP__TTYYPPEE + variables are assigned values as described above under SShheellll VVaarriiaabblleess. + If a shell function is being invoked, the CCOOMMPP__WWOORRDDSS and CCOOMMPP__CCWWOORRDD + variables are also set. When the function or command is invoked, the + first argument ($$11) is the name of the command whose arguments are be- + ing completed, the second argument ($$22) is the word being completed, + and the third argument ($$33) is the word preceding the word being com- + pleted on the current command line. No filtering of the generated com- + pletions against the word being completed is performed; the function or + command has complete freedom in generating the matches. + + Any function specified with --FF is invoked first. The function may use + any of the shell facilities, including the ccoommppggeenn builtin described + below, to generate the matches. It must put the possible completions + in the CCOOMMPPRREEPPLLYY array variable, one per array element. + + Next, any command specified with the --CC option is invoked in an envi- + ronment equivalent to command substitution. It should print a list of + completions, one per line, to the standard output. Backslash may be + used to escape a newline, if necessary. + + After all of the possible completions are generated, any filter speci- + fied with the --XX option is applied to the list. The filter is a pat- + tern as used for pathname expansion; a && in the pattern is replaced + with the text of the word being completed. A literal && may be escaped + with a backslash; the backslash is removed before attempting a match. + Any completion that matches the pattern will be removed from the list. + A leading !! negates the pattern; in this case any completion not match- + ing the pattern will be removed. If the nnooccaasseemmaattcchh shell option is + enabled, the match is performed without regard to the case of alpha- + betic characters. + + 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 de- + fined, 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. + + There is some support for dynamically modifying completions. This is + most useful when used in combination with a default completion speci- + fied with ccoommpplleettee --DD. It's possible for shell functions executed as + completion handlers to indicate that completion should be retried by + returning an exit status of 124. If a shell function returns 124, and + changes the compspec associated with the command on which completion is + being attempted (supplied as the first argument when the function is + executed), programmable completion restarts from the beginning, with an + attempt to find a new compspec for that command. This allows a set of + completions to be built dynamically as completion is attempted, rather + than being loaded all at once. + + For instance, assuming that there is a library of compspecs, each kept + in a file corresponding to the name of the command, the following de- + fault completion function would load completions dynamically: + + _completion_loader() + { + . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 + } + complete -D -F _completion_loader -o bashdefault -o default + + +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. If HHIISSTTFFIILLEE-- + SSIIZZEE is unset, or set to null, a non-numeric value, or a numeric value + less than zero, the history file is not truncated. When the history + file is read, lines beginning with the history comment character fol- + lowed immediately by a digit are interpreted as timestamps for the fol- + lowing history line. These timestamps are optionally displayed depend- + ing on the value of the HHIISSTTTTIIMMEEFFOORRMMAATT variable. When a shell with + history enabled exits, the last $$HHIISSTTSSIIZZEE lines are copied from the + history list to $$HHIISSTTFFIILLEE. If the hhiissttaappppeenndd shell option is enabled + (see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the + lines are appended to the history file, otherwise the history file is + overwritten. If HHIISSTTFFIILLEE is unset, or if the history file is un- + writable, the history is not saved. If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is + set, time stamps are written to the history file, marked with the his- + tory comment character, so they may be preserved across shell sessions. + This uses the history comment character to distinguish timestamps from + other history lines. After saving the history, the history file is + truncated to contain no more than HHIISSTTFFIILLEESSIIZZEE lines. If HHIISSTTFFIILLEESSIIZZEE + is unset, or set to null, a non-numeric value, or a numeric value less + than zero, the history file is not truncated. + + The builtin command ffcc (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) may be used + to list or edit and re-execute a portion of the history list. The hhiiss-- + ttoorryy builtin may be used to display or modify the history list and ma- + nipulate 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 op- + tions. + +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, and is performed on each + line individually without taking quoting on previous lines into ac- + count. 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 avail- + able to manipulate the selected words. The line is broken into words + in the same fashion as when reading 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. His- + tory expansions are introduced by the appearance of the history expan- + sion character, which is !! by default. Only backslash (\\) and single + quotes can quote the history expansion character, but the history ex- + pansion character is also treated as quoted if it immediately precedes + the closing double quote in a double-quoted string. + + 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 op- + tion is enabled (see the description of the sshhoopptt builtin below), and + rreeaaddlliinnee 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 substitution will be reloaded into the rreeaaddlliinnee editing buffer + for correction. 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). The shell uses the history comment character to mark his- + tory timestamps when writing the history file. + + EEvveenntt DDeessiiggnnaattoorrss + An event designator is a reference to a command line entry in the his- + tory list. Unless the reference is absolute, events are relative to + the current position in the history 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 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 preceding the current position + in the history list starting with _s_t_r_i_n_g. + !!??_s_t_r_i_n_g[[??]] + Refer to the most recent command preceding the current position + in the history list containing _s_t_r_i_n_g. The trailing ?? may be + omitted if _s_t_r_i_n_g is followed immediately by a newline. If + _s_t_r_i_n_g is missing, the string from the most recent search is + used; it is an error if there is no previous search string. + ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^ + Quick substitution. Repeat the previous 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 MMooddiiffiieerrss 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 word. This is usually the last argument, but will ex- + pand to the zeroth word if there is only one word in the line. + %% The first word matched by the most recent `?_s_t_r_i_n_g?' search, if + the search string begins with a character that is part of a + word. + _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 xx is miss- + ing, it defaults to 0. + + 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 `:'. These mod- + ify, or edit, the word or words selected from the history event. + + hh Remove a trailing filename component, leaving only the head. + tt Remove all leading filename components, leaving the tail. + rr Remove a trailing suffix of the form _._x_x_x, leaving the basename. + ee Remove all but the trailing suffix. + pp Print the new command but do not execute it. + qq Quote the substituted words, escaping further substitutions. + xx Quote the substituted words as with qq, but break into words at + bbllaannkkss and newlines. The qq and xx modifiers are mutually exclu- + sive; the last one supplied is used. + ss//_o_l_d//_n_e_w// + Substitute _n_e_w for the first occurrence of _o_l_d in the event + line. Any character may be used as the delimiter 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 single 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 substi- + tutions took place, the last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search. + If _n_e_w is null, each matching _o_l_d is deleted. + && 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' or `&&' 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. The ::, ttrruuee, ffaallssee, and tteesstt/[[ builtins do not accept options + and do not treat ---- specially. The eexxiitt, llooggoouutt, rreettuurrnn, bbrreeaakk, ccoonn-- + ttiinnuuee, lleett, and sshhiifftt builtins accept and process arguments beginning + with -- without requiring ----. Other builtins that accept arguments but + are not specified as accepting options interpret arguments beginning + with -- as invalid options and require ---- to prevent this interpreta- + tion. + :: [_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. The return status is + zero. + + .. _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 en- + vironment 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, + filenames in PPAATTHH are used to find the directory containing + _f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable. + When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is + searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option + to the sshhoopptt builtin command is turned off, the PPAATTHH is not + 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 po- + sitional parameters are unchanged. If the --TT option is enabled, + ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any DDEEBBUUGG trap + string is saved and restored around the call to ssoouurrccee, and + ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If --TT is not + set, and the sourced file changes the DDEEBBUUGG trap, the new value + is retained when ssoouurrccee completes. 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 re- + turns 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] [--llppssvvPPSSVVXX] + bbiinndd [--mm _k_e_y_m_a_p] [--qq _f_u_n_c_t_i_o_n] [--uu _f_u_n_c_t_i_o_n] [--rr _k_e_y_s_e_q] + bbiinndd [--mm _k_e_y_m_a_p] --ff _f_i_l_e_n_a_m_e + bbiinndd [--mm _k_e_y_m_a_p] --xx _k_e_y_s_e_q:_s_h_e_l_l_-_c_o_m_m_a_n_d + 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 [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_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 ap- + pear 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'. Op- + tions, 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 (_v_i_-_m_o_v_e + is also a synonym); _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. + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be re- + read. + --SS Display rreeaaddlliinnee key sequences bound to macros and the + strings they output. + --vv Display rreeaaddlliinnee variable names and values in such a way + that they can be re-read. + --VV List current rreeaaddlliinnee variable names and values. + --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 en- + tered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets + the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd-- + lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT and RREEAADDLLIINNEE__MMAARRKK + variables to the current location of the insertion point + and the saved insertion point (the mark), respectively. + If the executed command changes the value of any of RREEAADD-- + LLIINNEE__LLIINNEE, RREEAADDLLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new + values will be reflected in the editing state. + --XX List all key sequences bound to shell commands and the + associated commands in a format that can be reused as in- + put. + + 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 ex- + ited. The return value is 0 unless _n is not greater than or + equal to 1. + + 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. + + 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. + + ccdd [--LL|[--PP [--ee]] [-@]] [_d_i_r] + Change the current directory to _d_i_r. if _d_i_r is not supplied, + the value of the HHOOMMEE shell variable is the default. Any addi- + tional arguments following _d_i_r are ignored. The variable CCDDPPAATTHH + defines the search path for the directory containing _d_i_r: each + directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative di- + rectory names in CCDDPPAATTHH are separated by a colon (:). A null + directory name in CCDDPPAATTHH is the same as the current directory, + i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not + used. The --PP option causes ccdd to use the physical directory + structure by resolving symbolic links while traversing _d_i_r and + before processing instances of _._. in _d_i_r (see also the --PP option + to the sseett builtin command); the --LL option forces symbolic links + to be followed by resolving the link after processing instances + of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing + the immediately previous pathname component from _d_i_r, back to a + slash or the beginning of _d_i_r. If the --ee option is supplied + with --PP, and the current working directory cannot be success- + fully determined after a successful directory change, ccdd will + return an unsuccessful status. On systems that support it, the + --@@ option presents the extended attributes associated with a + file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD + before the directory change is attempted. If a non-empty direc- + tory name from CCDDPPAATTHH is used, or if -- is the first argument, + and the directory change is successful, the absolute pathname of + the new working directory is written to the standard output. + The return value is true if the directory was successfully + changed; false otherwise. + + ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...] + Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function + lookup. Only builtin commands or commands found in the PPAATTHH are + executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is + performed using a default value for PPAATTHH that is guaranteed to + find all of the standard utilities. If either the --VV or --vv op- + tion 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 filename + used to invoke _c_o_m_m_a_n_d to be displayed; the --VV option produces a + more verbose description. If the --VV or --vv option is supplied, + the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If + 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 fa- + cilities, while available, will not have useful values. + + The matches will be generated in the same way as if the program- + mable completion code had generated them directly from a comple- + tion specification with the same flags. If _w_o_r_d is specified, + 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] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- + _p_a_t] [--WW _w_o_r_d_l_i_s_t] + [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_- + _f_i_x] _n_a_m_e [_n_a_m_e _._._.] + ccoommpplleettee --pprr [--DDEEII] [_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 --DD option indicates that other sup- + plied options and actions should apply to the ``default'' com- + mand completion; that is, completion attempted on a command for + which no completion has previously been defined. The --EE option + indicates that other supplied options and actions should apply + to ``empty'' command completion; that is, completion attempted + on a blank line. The --II option indicates that other supplied + options and actions should apply to completion on the initial + non-assignment word on the line, or after a command delimiter + such as ;; or ||, which is usually command name completion. If + multiple options are supplied, the --DD option takes precedence + over --EE, and both take precedence over --II. If any of --DD, --EE, or + --II are supplied, any other _n_a_m_e arguments are ignored; these + completions only apply to the case specified by the option. + + The process of applying these completion specifications when + word completion is attempted is described above under PPrrooggrraamm-- + mmaabbllee 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, quoting special characters, or suppress- + ing trailing spaces). Intended to be used with + shell functions. + nnooqquuoottee Tell readline not to quote the completed words + if they are filenames (quoting filenames is the + default). + nnoossoorrtt Tell readline not to sort the list of possible + completions alphabetically. + nnoossppaaccee Tell readline not to append a space (the de- + fault) to words completed at the end of the + line. + pplluussddiirrss + After any matches defined by the compspec are + generated, directory name completion is at- + tempted 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. + --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 the function is executed, the + first argument ($$11) is the name of the command whose ar- + guments are being completed, the second argument ($$22) is + the word being completed, and the third argument ($$33) is + the word preceding the word being completed on the cur- + rent command line. When it finishes, the possible com- + pletions are retrieved from the value of the CCOOMMPPRREEPPLLYY + array variable. + --GG _g_l_o_b_p_a_t + The pathname expansion pattern _g_l_o_b_p_a_t is expanded to + generate the possible completions. + --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. + --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. Shell quoting is honored within _w_o_r_d_l_i_s_t, + in order to provide a mechanism for the words to contain + shell metacharacters or characters in the value of IIFFSS. + The possible completions are the members of the resul- + tant list which match the word being completed. + --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 pathname 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. + + 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. + + ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEEII] [++oo _o_p_t_i_o_n] [_n_a_m_e] + Modify completion options for each _n_a_m_e according to the _o_p_- + _t_i_o_ns, or for the currently-executing completion if no _n_a_m_es are + supplied. If no _o_p_t_i_o_ns are given, display the completion op- + tions for each _n_a_m_e or the current completion. The possible + values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin de- + scribed above. The --DD option indicates that other supplied op- + tions should apply to the ``default'' command completion; that + is, completion attempted on a command for which no completion + has previously been defined. The --EE option indicates that other + supplied options should apply to ``empty'' command completion; + that is, completion attempted on a blank line. The --II option + indicates that other supplied options should apply to completion + on the initial non-assignment word on the line, or after a com- + mand delimiter such as ;; or ||, which is usually command name + completion. + + The return value is true unless an invalid option is supplied, + an attempt is made to modify the options for a _n_a_m_e for which no + completion specification exists, or an output error occurs. + + 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 en- + closing loops, the last enclosing loop (the ``top-level'' loop) + is resumed. The return value is 0 unless _n is not greater than + or equal to 1. + + ddeeccllaarree [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] + ttyyppeesseett [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] + Declare variables and/or give them attributes. If no _n_a_m_es are + given then display the values of variables. The --pp option will + display the attributes and values of each _n_a_m_e. When --pp is used + with _n_a_m_e arguments, additional options, other than --ff and --FF, + are ignored. When --pp is supplied without _n_a_m_e arguments, it + will display the attributes and values of all variables having + the attributes specified by the additional options. If no other + options are supplied with --pp, ddeeccllaarree will display the at- + tributes and values of all shell variables. The --ff option will + restrict the display to shell functions. The --FF option inhibits + the display of function definitions; only the function name and + attributes are printed. If the eexxttddeebbuugg shell option is enabled + using sshhoopptt, the source file name and line number where each + _n_a_m_e is defined are displayed as well. The --FF option implies + --ff. The --gg option forces variables to be created or modified at + the global scope, even when ddeeccllaarree is executed in a shell func- + tion. It is ignored in all other cases. The --II option causes + local variables to inherit the attributes (except the _n_a_m_e_r_e_f + attribute) and value of any existing variable with the same _n_a_m_e + at a surrounding scope. If there is no existing variable, the + local variable is initially unset. The following options can be + used to restrict output to variables with the specified attri- + bute or to give variables attributes: + --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss + above). + --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss + above). + --ff Use function names only. + --ii The variable is treated as an integer; arithmetic evalua- + tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when + the variable is assigned a value. + --ll When the variable is assigned a value, all upper-case + characters are converted to lower-case. The upper-case + attribute is disabled. + --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name + reference to another variable. That other variable is + defined by the value of _n_a_m_e. All references, assign- + ments, and attribute modifications to _n_a_m_e, except those + using or changing the --nn attribute itself, are performed + on the variable referenced by _n_a_m_e's value. The nameref + attribute cannot be applied to array variables. + --rr Make _n_a_m_es readonly. These names cannot then be assigned + values by subsequent assignment statements or unset. + --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions in- + herit the DDEEBBUUGG and RREETTUURRNN traps from the calling shell. + The trace attribute has no special meaning for variables. + --uu When the variable is assigned a value, all lower-case + characters are converted to upper-case. The lower-case + attribute is disabled. + --xx Mark _n_a_m_es for export to subsequent commands via the en- + vironment. + + Using `+' instead of `-' turns off the attribute instead, with + the exceptions that ++aa and ++AA may not be used to destroy array + variables and ++rr will not remove the readonly attribute. When + used in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as + with the llooccaall command, unless the --gg option is supplied. If a + variable name is followed by =_v_a_l_u_e, the value of the variable + is set to _v_a_l_u_e. When using --aa or --AA and the compound assign- + ment syntax to create array variables, additional attributes do + not take effect until subsequent assignments. The return value + is 0 unless an invalid option is encountered, an attempt is made + to define a function using ``-f foo=bar'', an attempt is made to + assign a value to a readonly variable, an attempt is made to as- + sign a value to an array variable without using the compound as- + signment 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 di- + rectories. The default display is on a single line with direc- + tory names separated by spaces. Directories are added to the + list with the ppuusshhdd command; the ppooppdd command removes entries + from the list. The current directory is always the first direc- + tory in the stack. + --cc Clears the directory stack by deleting all of the en- + tries. + --ll Produces a listing using full pathnames; the default + listing format uses a tilde to denote the home directory. + --pp Print the directory stack with one entry per line. + --vv Print the directory stack with one entry per line, pre- + fixing each entry with its index in the stack. + ++_n Displays the _nth entry counting from the left of the list + shown by ddiirrss when invoked without options, starting with + zero. + --_n Displays the _nth entry counting from the right of the + list shown by ddiirrss when invoked without options, starting + with zero. + + The return value is 0 unless an invalid option is supplied or _n + indexes beyond the end of the directory stack. + + ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ] + Without options, remove each _j_o_b_s_p_e_c from the table of active + jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr + option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option + is given, each _j_o_b_s_p_e_c is not removed from the table, but is + marked so that SSIIGGHHUUPP is not sent to the job if the shell re- + ceives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option means + to remove or mark all jobs; the --rr option without a _j_o_b_s_p_e_c ar- + gument 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 0 unless a write error occurs. If --nn is + specified, the trailing newline is suppressed. If the --ee option + is given, interpretation of the following backslash-escaped + characters is enabled. The --EE option disables the interpreta- + tion of these escape characters, even on systems where they are + interpreted by default. The xxppgg__eecchhoo shell option may be used + to dynamically determine whether or not eecchhoo expands these es- + cape characters by default. eecchhoo does not interpret ---- to mean + the end of options. eecchhoo interprets the following escape se- + quences: + \\aa alert (bell) + \\bb backspace + \\cc suppress further output + \\ee + \\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) + \\xx_H_H the eight-bit character whose value is the hexadecimal + value _H_H (one or two hex digits) + \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value _H_H_H_H (one to four hex digits) + \\UU_H_H_H_H_H_H_H_H + the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits) + + eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] + Enable and disable builtin shell commands. Disabling a builtin + 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 en- + abled. 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 argument passed to _c_o_m_m_a_n_d. This is what _l_o_- + _g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with + an empty environment. If --aa is supplied, the shell passes _n_a_m_e + as the zeroth argument to the executed command. If _c_o_m_m_a_n_d can- + not be executed for some reason, a non-interactive shell exits, + unless the eexxeeccffaaiill shell option is enabled. In that case, it + returns failure. An interactive shell returns failure if the + file cannot be executed. A subshell exits unconditionally if + eexxeecc fails. 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 names of all exported + variables is printed. The --nn option causes the export property + to be removed from each _n_a_m_e. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns + an exit status of 0 unless an invalid option is encountered, one + of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- + plied with a _n_a_m_e that is not a function. + + ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] + ffcc --ss [_p_a_t=_r_e_p] [_c_m_d] + The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t + from the history list and displays or edits and re-executes + them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate + the last command beginning with that string) or as a number (an + index into the history list, where a negative number is used as + an offset from the current command number). When listing, a + _f_i_r_s_t or _l_a_s_t of 0 is equivalent to -1 and -0 is equivalent to + the current command (usually the ffcc command); otherwise 0 is + equivalent to -1 and -0 is invalid. 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 specified, 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. _C_o_m_m_a_n_d is interpreted the same as + _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'', + so that typing ``r cc'' runs the last command beginning with + ``cc'' and typing ``r'' re-executes the last command. + + If the first form is used, the return value is 0 unless an in- + valid 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 _._._.] + 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 ex- + pected 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 op- + tion requires an argument, ggeettooppttss places that argument into the + variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automatically; + it must be manually reset between multiple calls to ggeettooppttss + within the same shell invocation if a new set of parameters is + to be used. + + When the end of options is encountered, ggeettooppttss exits with a re- + turn value greater than zero. OOPPTTIINNDD is set to the index of the + first non-option argument, and _n_a_m_e is set to ?. + + ggeettooppttss normally parses the positional parameters, but if more + arguments are supplied as _a_r_g values, ggeettooppttss parses those in- + stead. + + 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 OOPP-- + TTAARRGG 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] + Each time hhaasshh is invoked, the full pathname of the command _n_a_m_e + is determined by searching the directories in $$PPAATTHH and remem- + bered. Any previously-remembered pathname is discarded. If the + --pp option is supplied, no path search is performed, and _f_i_l_e_n_a_m_e + is used as the full filename of the command. The --rr option + causes the shell to forget all remembered locations. The --dd op- + tion 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 [--ddmmss] [_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. + --dd Display a short description of each _p_a_t_t_e_r_n + --mm Display the description of each _p_a_t_t_e_r_n in a manpage-like + format + --ss Display only a short usage synopsis for each _p_a_t_t_e_r_n + + The return status is 0 unless no command matches _p_a_t_t_e_r_n. + + hhiissttoorryy [[_n]] + hhiissttoorryy --cc + hhiissttoorryy --dd _o_f_f_s_e_t + hhiissttoorryy --dd _s_t_a_r_t-_e_n_d + 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. If _o_f_f_s_e_t + is negative, it is interpreted as relative to one greater + than the last history position, so negative indices count + back from the end of the history, and an index of -1 + refers to the current hhiissttoorryy --dd command. + --dd _s_t_a_r_t-_e_n_d + Delete the history entries between positions _s_t_a_r_t and + _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t + and _e_n_d are interpreted as described above. + --aa Append the ``new'' history lines to the history file. + These are history lines entered since the beginning of + the current bbaasshh session, but not already appended to the + history file. + --nn Read the history lines not already read from the history + file into the current history list. These are lines ap- + pended to the history file since the beginning of the + current bbaasshh session. + --rr Read the contents of the history file and append them to + the current history list. + --ww Write the current history list to the history file, over- + writing the history file's contents. + --pp Perform history substitution on the following _a_r_g_s and + display the result on the standard output. Does not + store the results in the history list. Each _a_r_g must be + 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 variable is set, the time stamp informa- + tion associated with each history entry is written to the his- + tory file, marked with the history comment character. When the + history file is read, lines beginning with the history comment + character followed immediately by a digit are interpreted as + timestamps for the following history entry. 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 sup- + plied 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. + --nn Display information only about jobs that have changed + status since the user was last notified of their status. + --pp List only the process ID of the job's process group + leader. + --rr Display only running jobs. + --ss Display only stopped jobs. + + If _j_o_b_s_p_e_c is given, output is restricted to information about + that job. The return status is 0 unless an invalid option is + 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 ex- + ecutes _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|--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. The --LL option is + equivalent to --ll. kkiillll returns true if at least one signal was + successfully sent, or false if an error occurs or an invalid op- + tion is encountered. + + lleett _a_r_g [_a_r_g ...] + Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH-- + MMEETTIICC EEVVAALLUUAATTIIOONN above). 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. If _n_a_m_e is -, the set of shell options + is made local to the function in which llooccaall is invoked: shell + options changed using the sseett builtin inside the function are + restored to their original values when the function returns. + The restore is effected as if a series of sseett commands were exe- + cuted to restore the values that were in place before the func- + tion. 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. + + mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] + rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] + Read lines from the standard input into the indexed array vari- + able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- + plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if + supplied, have the following meanings: + --dd The first character of _d_e_l_i_m is used to terminate each + input line, rather than newline. If _d_e_l_i_m is the empty + string, mmaappffiillee will terminate a line when it reads a NUL + character. + --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are + copied. + --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default + index is 0. + --ss Discard the first _c_o_u_n_t lines read. + --tt Remove a trailing _d_e_l_i_m (default newline) from each line + read. + --uu Read lines from file descriptor _f_d instead of the stan- + dard input. + --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The + --cc option specifies _q_u_a_n_t_u_m. + --cc Specify the number of lines read between each call to + _c_a_l_l_b_a_c_k. + + If --CC is specified without --cc, the default quantum is 5000. + When _c_a_l_l_b_a_c_k is evaluated, it is supplied the index of the next + array element to be assigned and the line to be assigned to that + element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after + the line is read but before the array element is assigned. + + If not supplied with an explicit origin, mmaappffiillee will clear _a_r_- + _r_a_y before assigning to it. + + mmaappffiillee returns successfully unless an invalid option or option + argument is supplied, _a_r_r_a_y is invalid or unassignable, or if + _a_r_r_a_y is not an indexed array. + + 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: + --nn Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is ma- + nipulated. + ++_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. + + 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 --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 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 _a_r_g_u_m_e_n_t. In + addition to the standard _p_r_i_n_t_f(1) format specifications, pprriinnttff + interprets the following extensions: + %%bb causes pprriinnttff to expand backslash escape sequences in the + corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee. + %%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. + %%((_d_a_t_e_f_m_t))TT + causes pprriinnttff to output the date-time string resulting + from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). + The corresponding _a_r_g_u_m_e_n_t is an integer representing the + number of seconds since the epoch. Two special argument + values may be used: -1 represents the current time, and + -2 represents the time the shell was invoked. If no ar- + gument is specified, conversion behaves as if -1 had been + given. This is an exception to the usual pprriinnttff behav- + ior. + + The %b, %q, and %T directives all use the field width and preci- + sion arguments from the format specification and write that many + bytes from (or use that wide a field for) the expanded argument, + which usually contains more characters than the original. + + Arguments to non-string format specifiers are treated as C con- + stants, except that a leading plus or minus sign is allowed, and + if the leading character is a single or double quote, the value + is the ASCII value of the following character. + + The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- + _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] [+_n] [-_n] + ppuusshhdd [--nn] [_d_i_r] + Adds a directory to the top of the directory stack, or rotates + the stack, making the new top of the stack the current working + directory. With no arguments, ppuusshhdd exchanges the top two di- + rectories and returns 0, unless the directory stack is empty. + Arguments, if supplied, have the following meanings: + --nn Suppresses the normal change of directory when rotating + or adding directories to the stack, so that only the + stack is manipulated. + ++_n Rotates the stack so that the _nth directory (counting + from the left of the list shown by ddiirrss, starting with + 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. + _d_i_r Adds _d_i_r to the directory stack at the top, making it the + new current working directory as if it had been supplied + as the argument to the ccdd builtin. + + If the ppuusshhdd command is successful, a ddiirrss is performed as well. + If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r + 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 in- + valid option is supplied. + + rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp + _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...] + One line is read from the standard input, or from the file de- + scriptor _f_d supplied as an argument to the --uu option, split into + words as described above under WWoorrdd SSpplliittttiinngg, and the first + word is assigned to the first _n_a_m_e, the second word to the sec- + ond _n_a_m_e, and so on. If there are more words than names, the + remaining words and their intervening delimiters are 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 val- + ues. The characters in IIFFSS are used to split the line into + words using the same rules the shell uses for expansion (de- + scribed above under WWoorrdd SSpplliittttiinngg). The backslash character + (\\) may be used to remove any special meaning for the next char- + acter read and for line continuation. Options, if supplied, + have the following meanings: + --aa _a_n_a_m_e + The words are assigned to sequential indices of the array + variable _a_n_a_m_e, starting at 0. _a_n_a_m_e is unset before any + new values are assigned. Other _n_a_m_e arguments are ig- + nored. + --dd _d_e_l_i_m + The first character of _d_e_l_i_m is used to terminate the in- + put line, rather than newline. If _d_e_l_i_m is the empty + string, rreeaadd will terminate a line when it reads a NUL + character. + --ee If the standard input is coming from a terminal, rreeaaddlliinnee + (see RREEAADDLLIINNEE above) is used to obtain the line. Read- + line uses the current (or default, if line editing was + not previously active) editing settings, but uses Read- + line's default filename completion. + --ii _t_e_x_t + If rreeaaddlliinnee is being used to read the line, _t_e_x_t is + placed into the editing buffer before editing begins. + --nn _n_c_h_a_r_s + rreeaadd returns after reading _n_c_h_a_r_s characters rather than + waiting for a complete line of input, but honors a delim- + iter if fewer than _n_c_h_a_r_s characters are read before the + delimiter. + --NN _n_c_h_a_r_s + rreeaadd returns after reading exactly _n_c_h_a_r_s characters + rather than waiting for a complete line of input, unless + EOF is encountered or rreeaadd times out. Delimiter charac- + ters encountered in the input are not treated specially + and do not cause rreeaadd to return until _n_c_h_a_r_s characters + are read. The result is not split on the characters in + IIFFSS; the intent is that the variable is assigned exactly + the characters read (with the exception of backslash; see + the --rr option below). + --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 then 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 (or a specified number of characters) is + not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- + mal number with a fractional portion following the deci- + mal point. This option is only effective if rreeaadd is + reading input from a terminal, pipe, or other special + file; it has no effect when reading from regular files. + If rreeaadd times out, rreeaadd saves any partial input read into + the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd re- + turns immediately, without trying to read any data. The + exit status is 0 if input is available on the specified + file descriptor, non-zero otherwise. The exit status is + greater than 128 if the timeout is exceeded. + --uu _f_d Read input from file descriptor _f_d. + + If no _n_a_m_e_s are supplied, the line read, without the ending de- + limiter but otherwise unmodified, is assigned to the variable + RREEPPLLYY. The exit status is zero, unless end-of-file is encoun- + tered, rreeaadd times out (in which case the status is greater than + 128), a variable assignment error (such as assigning to a read- + only variable) occurs, or an invalid file descriptor is supplied + as the argument to --uu. + + rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] + The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s + may not be changed by subsequent assignment. If the --ff option + is supplied, the functions corresponding to the _n_a_m_e_s are so + marked. The --aa option restricts the variables to indexed ar- + rays; the --AA option restricts the variables to associative ar- + rays. If both options are supplied, --AA takes precedence. If no + _n_a_m_e arguments are given, or if the --pp option is supplied, a + list of all readonly names is printed. The other options may be + used to restrict the output to a subset of the set of readonly + names. The --pp option causes output to be displayed in a format + that may be reused as input. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return + status is 0 unless an invalid option is encountered, one of the + _n_a_m_e_s is not a valid shell variable name, or --ff is supplied with + a _n_a_m_e that is not a function. + + rreettuurrnn [_n] + Causes a function to stop executing and return the value speci- + fied by _n to its caller. If _n is omitted, the return status is + that of the last command executed in the function body. If rree-- + ttuurrnn is executed by a trap handler, the last command used to de- + termine the status is the last command executed before the trap + handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the last + command used to determine the status is the last command exe- + cuted by the trap handler before rreettuurrnn was invoked. If rreettuurrnn + is used outside a function, but during execution of a script by + the .. (ssoouurrccee) command, it causes the shell to stop executing + that script and return either _n or the exit status of the last + command executed within the script as the exit status of the + script. If _n is supplied, the return value is its least signif- + icant 8 bits. The return status is non-zero if rreettuurrnn is sup- + plied a non-numeric argument, or is used outside a function and + not during execution of a script by .. or ssoouurrccee. Any command + associated with the RREETTUURRNN trap is executed before execution re- + sumes after the function or script. + + sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] + sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] + Without options, the name and value of each shell variable are + 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 op- + tions are specified, they set or unset shell attributes. Any + arguments remaining after option processing are treated as val- + ues for the positional parameters and are assigned, in order, to + $$11, $$22, ...... $$_n. Options, if specified, have the following + meanings: + --aa Each variable or function that is created or modified is + given the export attribute and marked 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 _p_i_p_e_l_i_n_e (which may consist of a + single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d + (see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero status. + The shell does not exit if the command that fails is + part of the command list immediately following a wwhhiillee + or uunnttiill keyword, part of the test following the iiff or + eelliiff reserved words, part of any command executed in a + &&&& or |||| list except the command following the final &&&& + or ||||, any command in a pipeline but the last, or if the + command's return value is being inverted with !!. If a + compound command other than a subshell returns a non- + zero status because a command failed while --ee was being + ignored, the shell does not exit. A trap on EERRRR, if + set, is executed before the shell exits. This option + applies to the shell environment and each subshell envi- + ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT + above), and may cause subshells to exit before executing + all the commands in the subshell. + + If a compound command or shell function executes in a + context where --ee is being ignored, none of the commands + executed within the compound command or function body + will be affected by the --ee setting, even if --ee is set + and a command returns a failure status. If a compound + command or shell function sets --ee while executing in a + context where --ee is ignored, that setting will not have + any effect until the compound command or the command + containing the function call completes. + --ff Disable pathname expansion. + --hh Remember the location of commands as they are looked up + for execution. This is enabled by default. + --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). All processes run + in a separate process group. When a background job com- + pletes, the shell prints a line containing its exit sta- + tus. + --nn Read commands but do not execute them. This may be used + to check a shell script for syntax errors. This is ig- + nored 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. This also affects the + editing interface used for rreeaadd --ee. + eerrrreexxiitt Same as --ee. + eerrrrttrraaccee + Same as --EE. + ffuunnccttrraaccee + Same as --TT. + 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 ``IG- + NOREEOF=10'' had been executed (see SShheellll VVaarrii-- + aabblleess 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). See SSEEEE AALLSSOO + below for a reference to a document that details + how posix mode affects bash's behavior. + pprriivviilleeggeedd + Same as --pp. + vveerrbboossee Same as --vv. + vvii Use a vi-style command line editing interface. + This also affects the editing interface used for + rreeaadd --ee. + 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, + BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap- + pear in the environment, are 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 sup- + plied, these actions are taken and the effective user id + is set to the real user id. If the --pp option is sup- + plied 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 and parameters other than the spe- + cial parameters "@" and "*" as an error when performing + parameter expansion. If expansion is attempted on an + unset variable or parameter, 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 resolve symbolic links when + executing commands such as ccdd that change the current + working directory. It uses the physical directory + structure instead. By default, bbaasshh follows the logical + 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 ex- + ecuted 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 op- + tions can also be specified as arguments to an invocation of the + shell. The current set of options may be found in $$--. The re- + turn 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 un- + set. _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 param- + eters 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 settings controlling optional shell behav- + ior. The settings can be either those listed below, or, if the + --oo option is used, those available with the --oo option to the sseett + builtin command. With no options, or with the --pp option, a list + of all settable options is displayed, with an indication of + whether or not each is set; if _o_p_t_n_a_m_e_s are supplied, the output + is restricted to those options. The --pp option causes output to + be displayed in a form that may be reused as input. Other op- + tions have the following meanings: + --ss Enable (set) each _o_p_t_n_a_m_e. + --uu Disable (unset) each _o_p_t_n_a_m_e. + --qq Suppresses normal output (quiet mode); the return status + 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, sshhoopptt + shows only those options which are set or unset, respectively. + Unless otherwise noted, the sshhoopptt options are disabled (unset) + by default. + + The return status when listing options is zero if all _o_p_t_n_a_m_e_s + are enabled, non-zero otherwise. When setting or unsetting op- + tions, 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: + + aassssoocc__eexxppaanndd__oonnccee + If set, the shell suppresses multiple evaluation of as- + sociative array subscripts during arithmetic expression + evaluation, while executing builtins that can perform + variable assignments, and while executing builtins that + perform array dereferencing. + aauuttooccdd If set, a command name that is the name of a directory + is executed as if it were the argument to the ccdd com- + mand. This option is only used by interactive shells. + ccddaabbllee__vvaarrss + If set, an argument to the ccdd builtin command that is + not a directory is assumed to be the name of a variable + 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 filename 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. + cchheecckkjjoobbss + If set, bbaasshh lists the status of any stopped and running + jobs before exiting an interactive shell. If any jobs + are running, this causes the exit to be deferred until a + second exit is attempted without an intervening command + (see JJOOBB CCOONNTTRROOLL above). The shell always postpones ex- + iting if any jobs are stopped. + cchheecckkwwiinnssiizzee + If set, bbaasshh checks the window size after each external + (non-builtin) command and, if necessary, updates the + values of LLIINNEESS and CCOOLLUUMMNNSS. This option is enabled by + default. + 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. This option is + enabled by default, but only has an effect if command + history is enabled, as described above under HHIISSTTOORRYY. + ccoommppaatt3311 + ccoommppaatt3322 + ccoommppaatt4400 + ccoommppaatt4411 + ccoommppaatt4422 + ccoommppaatt4433 + ccoommppaatt4444 + These control aspects of the shell's compatibility mode + (see SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below). + + ccoommpplleettee__ffuullllqquuoottee + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. + If not set, bbaasshh removes metacharacters such as the dol- + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that ex- + pand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in + versions through 4.2. + + ddiirreexxppaanndd + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing buf- + fer. If not set, bbaasshh attempts to preserve what the + user typed. + + ddiirrssppeellll + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- + tially supplied does not exist. + + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + the results of pathname expansion. The filenames ````..'''' + and ````....'''' must always be matched explicitly, even if + ddoottgglloobb is set. + + 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 at shell invocation, or in a shell startup file, + arrange to execute the debugger profile before the shell + starts, identical to the ----ddeebbuuggggeerr option. If set af- + ter invocation, 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), the shell + simulates a call to rreettuurrnn. + + 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 EERRRR trap. + + eexxttgglloobb If set, the extended pattern matching features described + above under PPaatthhnnaammee EExxppaannssiioonn are enabled. + + eexxttqquuoottee + If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed + within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double + 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 de- + scription of FFIIGGNNOORREE. This option is enabled by de- + fault. + + gglloobbaasscciiiirraannggeess + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave + as if in the traditional C locale when performing com- + parisons. That is, the current locale's collating se- + quence is not taken into account, so bb will not collate + between AA and BB, and upper-case and lower-case ASCII + characters will collate together. + + gglloobbssttaarr + If set, the pattern **** used in a pathname expansion con- + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, + only directories and subdirectories match. + + ggnnuu__eerrrrffmmtt + If set, shell error messages are written in the standard + GNU error message format. + + hhiissttaappppeenndd + If set, the history list is appended to the file named + by the value of the HHIISSTTFFIILLEE variable when the shell ex- + its, 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. + + iinnhheerriitt__eerrrreexxiitt + If set, command substitution inherits the value of the + eerrrreexxiitt option, instead of unsetting it in the subshell + environment. This option is enabled when _p_o_s_i_x _m_o_d_e is + enabled. + + 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 op- + tion is enabled by default. + + llaassttppiippee + If set, and job control is not active, the shell runs + the last command of a pipeline not executed in the back- + ground in the current shell environment. + + lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line + commands are saved to the history with embedded newlines + rather than using semicolon separators where possible. + + llooccaallvvaarr__iinnhheerriitt + If set, local variables inherit the value and attributes + of a variable of the same name that exists at a previous + scope before any new value is assigned. The nameref at- + tribute is not inherited. + + llooccaallvvaarr__uunnsseett + If set, calling uunnsseett on local variables in previous + function scopes marks them so subsequent lookups find + them unset until that function returns. This is identi- + cal to the behavior of unsetting local variables at the + current function scope. + + 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 at- + tempt 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, when performing pattern substi- + tution word expansions, or when filtering possible com- + pletions as part of programmable completion. + + 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. + + pprrooggccoommpp__aalliiaass + If set, and programmable completion is enabled, bbaasshh + treats a command name that doesn't have any completions + as a possible alias and attempts alias expansion. If it + has an alias, bbaasshh attempts programmable completion us- + ing the command word resulting from the expanded alias. + + pprroommppttvvaarrss + If set, prompt strings undergo parameter expansion, com- + mand substitution, arithmetic expansion, and quote re- + moval 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 re- + stricted 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 se- + quences by default. + + ssuussppeenndd [--ff] + Suspend the execution of this shell until it receives a SSIIGGCCOONNTT + signal. A login shell cannot be suspended; the --ff option can be + used to override this and force the suspension. The return sta- + tus is 0 unless the shell is a login shell and --ff is not sup- + plied, or if job control is not enabled. + + tteesstt _e_x_p_r + [[ _e_x_p_r ]] + Return a status of 0 (true) or 1 (false) depending on the evalu- + ation of the conditional expression _e_x_p_r. Each operator and op- + erand must be a separate argument. Expressions are composed of + the primaries described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. + tteesstt does not accept any options, nor does it accept and ignore + an argument of ---- as signifying the end of options. + + Expressions may be combined using the following operators, + listed in decreasing order of precedence. The evaluation de- + pends on the number of arguments; see below. Operator prece- + dence is used when there are five or more arguments. + !! _e_x_p_r True if _e_x_p_r is false. + (( _e_x_p_r )) + Returns the value of _e_x_p_r. This may be used to override + 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 + The following conditions are applied in the order listed. + If the second argument is one of the binary conditional + operators listed above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the + result of the expression is the result of the binary test + using the first and third arguments as operands. The --aa + and --oo operators are considered binary operators when + there are three arguments. If the first argument is !!, + the value is the negation of the two-argument test using + the second and third arguments. If the first argument is + exactly (( and the third argument is exactly )), the result + is the one-argument test of the second argument. Other- + wise, the expression is false. + 4 arguments + If the first argument is !!, the result is the negation of + the three-argument expression composed of the remaining + 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. + + When used with tteesstt or [[, the << and >> operators sort lexico- + graphically using ASCII ordering. + + ttiimmeess Print the accumulated user and system times for the shell and + 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 re- + ceives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a sin- + gle _s_i_g_s_p_e_c) or --, each specified signal is reset to its origi- + nal 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 com- + mands associated with each signal. The --ll option causes the + shell to print a list of signal names and their corresponding + numbers. Each _s_i_g_s_p_e_c is either a signal name defined in <_s_i_g_- + _n_a_l_._h>, or a signal number. Signal names are case insensitive + and the SSIIGG prefix is optional. + + If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit + from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- + cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, + _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the + first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR + above). Refer to the description of the eexxttddeebbuugg option to the + sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a + _s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell + function or a script executed with the .. or ssoouurrccee builtins fin- + ishes executing. + + If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a + pipeline (which may consist of a single simple command), a list, + or a compound command returns a non-zero exit status, subject to + the following conditions. The EERRRR trap is not executed if the + failed command is part of the command list immediately following + a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, + part of a command executed in a &&&& or |||| list except the command + following the final &&&& or ||||, any command in a pipeline but the + last, or if the command's return value is being inverted using + !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) op- + tion. + + Signals ignored upon entry to the shell cannot be trapped or re- + set. Trapped signals that are not being ignored are reset to + their original values in a subshell or subshell environment when + one 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 re- + turned. 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 specified + as a command name, or nothing if ``type -t name'' would not re- + turn _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, which is not necessar- + ily the file that appears first in PPAATTHH. If the --aa option is + used, ttyyppee prints all of the places that contain an executable + named _n_a_m_e. This includes aliases and functions, if and only if + the --pp option is not also used. The table of hashed commands is + not consulted when using --aa. The --ff option suppresses shell + function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true + if all of the arguments are found, false if any are not found. + + uulliimmiitt [--HHSS] --aa + uulliimmiitt [--HHSS] [--bbccddeeffiikkllmmnnppqqrrssttuuvvxxPPRRTT [_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 by a + non-root user once it is set; a soft limit may be increased up + to the value of the hard limit. If neither --HH nor --SS is speci- + fied, 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, re- + spectively. 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, if appropriate, are printed before the value. Other op- + tions are interpreted as follows: + --aa All current limits are reported; no limits are set + --bb The maximum socket buffer size + --cc The maximum size of core files created + --dd The maximum size of a process's data segment + --ee The maximum scheduling priority ("nice") + --ff The maximum size of files written by the shell and its + children + --ii The maximum number of pending signals + --kk The maximum number of kqueues that may be allocated + --ll The maximum size that may be locked into memory + --mm The maximum resident set size (many systems do not honor + this limit) + --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 and, on some systems, to its children + --xx The maximum number of file locks + --PP The maximum number of pseudoterminals + --RR The maximum time a real-time process can run before + blocking, in microseconds + --TT The maximum number of threads + + If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the + new value of the specified resource. If no option is given, + then --ff is assumed. Values are in 1024-byte increments, except + for --tt, which is in seconds; --RR, which is in microseconds; --pp, + which is in units of 512-byte blocks; --PP, --TT, --bb, --kk, --nn, and + --uu, which are unscaled values; and, when in posix mode, --cc and + --ff, which are in 512-byte increments. 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] [-nn] [_n_a_m_e ...] + For each _n_a_m_e, remove the corresponding variable or function. + If the --vv option is given, each _n_a_m_e refers to a shell variable, + and that variable is removed. Read-only variables may not be + unset. If --ff is specified, each _n_a_m_e refers to a shell func- + tion, and the function definition is removed. If the --nn option + is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, + _n_a_m_e will be unset rather than the variable it references. --nn + has no effect if the --ff option is supplied. If no options are + supplied, each _n_a_m_e refers to a variable; if there is no vari- + able by that name, a function with that name, if any, is unset. + Each unset variable or function is removed from the environment + passed to subsequent commands. If any of BBAASSHH__AALLIIAASSEESS, + BBAASSHH__AARRGGVV00, BBAASSHH__CCMMDDSS, BBAASSHH__CCOOMMMMAANNDD, BBAASSHH__SSUUBBSSHHEELLLL, BBAASSHHPPIIDD, + CCOOMMPP__WWOORRDDBBRREEAAKKSS, DDIIRRSSTTAACCKK, EEPPOOCCHHRREEAALLTTIIMMEE, EEPPOOCCHHSSEECCOONNDDSS, FFUUNNCC-- + NNAAMMEE, GGRROOUUPPSS, HHIISSTTCCMMDD, LLIINNEENNOO, RRAANNDDOOMM, SSEECCOONNDDSS, or SSRRAANNDDOOMM are + unset, they lose their special properties, even if they are sub- + sequently reset. The exit status is true unless a _n_a_m_e is read- + only. + + wwaaiitt [--ffnn] [--pp _v_a_r_n_a_m_e] [_i_d _._._.] + Wait for each specified child process and return its termination + status. Each _i_d 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_d is not given, wwaaiitt waits for all running + background jobs and the last-executed process substitution, if + its process id is the same as $$!!, and the return status is zero. + If the --nn option is supplied, wwaaiitt waits for a single job from + the list of _i_ds or, if no _i_ds are supplied, any job, to complete + and returns its exit status. If none of the supplied arguments + is a child of the shell, or if no arguments are supplied and the + shell has no unwaited-for children, the exit status is 127. If + the --pp option is supplied, the process or job identifier of the + job for which the exit status is returned is assigned to the + variable _v_a_r_n_a_m_e named by the option argument. The variable + will be unset initially, before any assignment. This is useful + only when the --nn option is supplied. Supplying the --ff option, + when job control is enabled, forces wwaaiitt to wait for _i_d to ter- + minate before returning its status, instead of returning when it + changes status. If _i_d 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. + +SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE + Bash-4.0 introduced the concept of a `shell compatibility level', spec- + ified as a set of options to the shopt builtin ccoommppaatt3311, ccoommppaatt3322, ccoomm-- + ppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibility + level -- each option is mutually exclusive. The compatibility level is + intended to allow users to select behavior from previous versions that + is incompatible with newer versions while they migrate scripts to use + current features and behavior. It's intended to be a temporary solu- + tion. + + This section does not mention behavior that is standard for a particu- + lar version (e.g., setting ccoommppaatt3322 means that quoting the rhs of the + regexp matching operator quotes special regexp characters in the word, + which is default behavior in bash-3.2 and above). + + If a user enables, say, ccoommppaatt3322, it may affect the behavior of other + compatibility levels up to and including the current compatibility + level. The idea is that each compatibility level controls behavior + that changed in that version of bbaasshh, but that behavior may have been + present in earlier versions. For instance, the change to use locale- + based comparisons with the [[[[ command came in bash-4.1, and earlier + versions used ASCII-based comparisons, so enabling ccoommppaatt3322 will enable + ASCII-based comparisons as well. That granularity may not be suffi- + cient for all uses, and as a result users should employ compatibility + levels carefully. Read the documentation for a particular feature to + find out the current behavior. + + Bash-4.3 introduced a new shell variable: BBAASSHH__CCOOMMPPAATT. The value as- + signed to this variable (a decimal version number like 4.2, or an inte- + ger corresponding to the ccoommppaatt_N_N option, like 42) determines the com- + patibility level. + + Starting with bash-4.4, Bash has begun deprecating older compatibility + levels. Eventually, the options will be removed in favor of BBAASSHH__CCOOMM-- + PPAATT. + + Bash-5.0 is the final version for which there will be an individual + shopt option for the previous version. Users should use BBAASSHH__CCOOMMPPAATT on + bash-5.0 and later versions. + + The following table describes the behavior changes controlled by each + compatibility level setting. The ccoommppaatt_N_N tag is used as shorthand for + setting the compatibility level to _N_N using one of the following mecha- + nisms. For versions prior to bash-5.0, the compatibility level may be + set using the corresponding ccoommppaatt_N_N shopt option. For bash-4.3 and + later versions, the BBAASSHH__CCOOMMPPAATT variable is preferred, and it is re- + quired for bash-5.1 and later versions. + + ccoommppaatt3311 + +o quoting the rhs of the [[[[ command's regexp matching oper- + ator (=~) has no special effect + + ccoommppaatt3322 + +o interrupting a command list such as "a ; b ; c" causes + the execution of the next command in the list (in + bash-4.0 and later versions, the shell acts as if it re- + ceived the interrupt, so interrupting one command in a + list aborts the execution of the entire list) + + ccoommppaatt4400 + +o the << and >> operators to the [[[[ command do not consider + the current locale when comparing strings; they use ASCII + ordering. Bash versions prior to bash-4.1 use ASCII col- + lation and _s_t_r_c_m_p(3); bash-4.1 and later use the current + locale's collation sequence and _s_t_r_c_o_l_l(3). + + ccoommppaatt4411 + +o in _p_o_s_i_x mode, ttiimmee may be followed by options and still + be recognized as a reserved word (this is POSIX interpre- + tation 267) + +o in _p_o_s_i_x mode, the parser requires that an even number of + single quotes occur in the _w_o_r_d portion of a double- + quoted parameter expansion and treats them specially, so + that characters within the single quotes are considered + quoted (this is POSIX interpretation 221) + + ccoommppaatt4422 + +o the replacement string in double-quoted pattern substitu- + tion does not undergo quote removal, as it does in ver- + sions after bash-4.2 + +o in posix mode, single quotes are considered special when + expanding the _w_o_r_d portion of a double-quoted parameter + expansion and can be used to quote a closing brace or + other special character (this is part of POSIX interpre- + tation 221); in later versions, single quotes are not + special within double-quoted word expansions + + ccoommppaatt4433 + +o the shell does not print a warning message if an attempt + is made to use a quoted compound assignment as an argu- + ment to declare (declare -a foo='(1 2)'). Later versions + warn that this usage is deprecated + +o word expansion errors are considered non-fatal errors + that cause the current command to fail, even in posix + mode (the default behavior is to make them fatal errors + that cause the shell to exit) + +o when executing a shell function, the loop state + (while/until/etc.) is not reset, so bbrreeaakk or ccoonnttiinnuuee in + that function will break or continue loops in the calling + context. Bash-4.4 and later reset the loop state to pre- + vent this + + ccoommppaatt4444 + +o the shell sets up the values used by BBAASSHH__AARRGGVV and + BBAASSHH__AARRGGCC so they can expand to the shell's positional + parameters even if extended debugging mode is not enabled + +o a subshell inherits loops from its parent context, so + bbrreeaakk or ccoonnttiinnuuee will cause the subshell to exit. + Bash-5.0 and later reset the loop state to prevent the + exit + +o variable assignments preceding builtins like eexxppoorrtt and + rreeaaddoonnllyy that set attributes continue to affect variables + with the same name in the calling environment even if the + shell is not in posix mode + + ccoommppaatt5500 + +o Bash-5.1 changed the way $$RRAANNDDOOMM is generated to intro- + duce slightly more randomness. If the shell compatibility + level is set to 50 or lower, it reverts to the method + from bash-5.0 and previous versions, so seeding the ran- + dom number generator by assigning a value to RRAANNDDOOMM will + produce the same sequence as in bash-5.0 + +o If the command hash table is empty, bash versions prior + to bash-5.1 printed an informational message to that ef- + fect, even when producing output that can be reused as + input. Bash-5.1 suppresses that message when the --ll op- + tion is supplied. + +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, HHIISSTTFFIILLEE, EENNVV, + or BBAASSHH__EENNVV + + +o specifying command names containing // + + +o specifying a filename containing a // as an argument to the .. + builtin command + + +o specifying a filename containing a slash as an argument to the + hhiissttoorryy 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 -- + http://pubs.opengroup.org/onlinepubs/9699919799/ + http://tiswww.case.edu/~chet/bash/POSIX -- a description of posix mode + _s_h(1), _k_s_h(1), _c_s_h(1) + _e_m_a_c_s(1), _v_i(1) + _r_e_a_d_l_i_n_e(3) + +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.ramey@case.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_/_g_n_u_/_b_a_s_h_/. + + Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g + command to submit a bug report. If you have a fix, you are encouraged + to mail that as well! Suggestions and `philosophical' bug reports may + be mailed to _b_u_g_-_b_a_s_h_@_g_n_u_._o_r_g or posted to the Usenet newsgroup + 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_._r_a_m_e_y_@_c_a_s_e_._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. + + Array variables may not (yet) be exported. + + There may be only one active coprocess at a time. + + + +GNU Bash 5.1 2020 October 29 BASH(1) diff --git a/bash-5.1/doc/bash.1 b/bash-5.1/doc/bash.1 new file mode 100644 index 0000000..edd2791 --- /dev/null +++ b/bash-5.1/doc/bash.1 @@ -0,0 +1,11309 @@ +.\" +.\" MAN PAGE COMMENTS to +.\" +.\" Chet Ramey +.\" Case Western Reserve University +.\" chet.ramey@case.edu +.\" +.\" Last Change: Wed Sep 23 09:28:31 EDT 2020 +.\" +.\" bash_builtins, strip all but Built-Ins section +.if \n(zZ=1 .ig zZ +.if \n(zY=1 .ig zY +.TH BASH 1 "2020 October 29" "GNU Bash 5.1" +.\" +.\" 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] +[command_string | file] +.SH COPYRIGHT +.if n Bash is Copyright (C) 1989-2020 by the Free Software Foundation, Inc. +.if t Bash is Copyright \(co 1989-2020 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 +All of the single-character shell options documented in the +description of the \fBset\fR builtin command, including \fB\-o\fP, +can be used as options when the shell is invoked. +In addition, \fBbash\fR +interprets the following options when it is invoked: +.PP +.PD 0 +.TP 10 +.B \-c +If the +.B \-c +option is present, then commands are read from the first non-option argument +.IR command_string . +If there are arguments after the +.IR command_string , +the first argument is assigned to +.B $0 +and any remaining arguments are assigned to the positional parameters. +The assignment to +.B $0 +sets the name of the shell, which is used in warning and error messages. +.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 or when reading input +through a pipe. +.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). +.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). +See +.SM +.B "SEE ALSO" +below for a reference to a document that details how posix mode affects +bash's behavior. +.TP +.B \-\-restricted +The shell becomes restricted (see +.SM +.B "RESTRICTED SHELL" +below). +.TP +.B \-\-rpm-requires +Produce the list of files that are required for the +shell script to run. This implies '-n' and is subject +to the same limitations as compile time error checking checking; +Command substitutions, Conditional expressions and +.BR eval +builtin are not parsed so some dependencies may be missed. +.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 +(unless \fB\-s\fP is specified) +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 filenames 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 an interactive login shell exits, +or a non-interactive login shell executes the \fBexit\fP builtin command, +.B bash +reads and executes commands from the files \fI~/.bash_logout\fP +and \fI/etc/bash.bash_logout\fP, if the files 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 filename. +.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 with its standard input +connected to a network connection, as when executed by the remote shell +daemon, usually \fIrshd\fP, or the secure shell daemon \fIsshd\fP. +If +.B bash +determines it is being run in this fashion, 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 neither +\fIrshd\fP nor \fIsshd\fP generally invoke the shell with those options +or allow them to be specified. +.PP +If the shell is started with the effective user (group) id not equal to the +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 +.BR SHELLOPTS , +.SM +.BR BASHOPTS , +.SM +.BR CDPATH , +and +.SM +.B GLOBIGNORE +variables, if they appear in the environment, are 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 +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 newline\fP +.if n \fB| & ; ( ) < > space tab newline\fP +.RE +.TP +.B control operator +A \fItoken\fP that performs a control function. It is one of the following +symbols: +.RS +.PP +.if t \fB|| & && ; ;; ;& ;;& ( ) | |& \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 command (see +.SM +.B SHELL GRAMMAR +below), the third word of a +.B case +or +.B select +command +(only \fBin\fP is valid), or the third word of a +.B for +command (only \fBin\fP and \fBdo\fP are valid): +.if t .RS +.PP +.B +.if n ! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]] +.if t ! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]] +.if t .RE +.SH "SHELL GRAMMAR" +.SS Simple Commands +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 +A \fIpipeline\fP is a sequence of one or more commands separated by +one of the control operators +.B | +or \fB|&\fP. +The format for a pipeline is: +.RS +.PP +[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand\fP [ [\fB|\fP\(bv\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). +If \fB|&\fP is used, \fIcommand\fP's standard error, in addition to its +standard output, is connected to +\fIcommand2\fP's standard input through the pipe; +it is shorthand for \fB2>&1 |\fP. +This implicit redirection of the standard error to the standard output is +performed after any redirections specified by the command. +.PP +The return status of a pipeline is the exit status of the last +command, unless the \fBpipefail\fP option is enabled. +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. +When the shell is in \fIposix mode\fP, it does not recognize +\fBtime\fP as a reserved word if the next token begins with a `-'. +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 +When the shell is in \fIposix mode\fP, \fBtime\fP +may be followed by a newline. In this case, the shell displays the +total user and system time consumed by the shell and its children. +The +.SM +.B TIMEFORMAT +variable may be used to specify the format of +the time information. +.PP +Each command in a pipeline is executed as a separate process (i.e., in a +subshell). +See +.SM +\fBCOMMAND EXECUTION ENVIRONMENT\fP +for a description of a subshell environment. +If the \fBlastpipe\fP option is enabled using the \fBshopt\fP builtin +(see the description of \fBshopt\fP below), +the last element of a pipeline may be run by the shell process. +.SS Lists +A \fIlist\fP is a sequence of one or more pipelines separated by one +of the operators +.BR ; , +.BR & , +.BR && , +or +.BR || , +and optionally terminated by one of +.BR ; , +.BR & , +or +.BR . +.PP +Of these list operators, +.B && +and +.B || +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. +These are referred to as \fIasynchronous\fP commands. +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 +AND and OR lists are sequences of one or more pipelines separated by the +\fB&&\fP and \fB||\fP control operators, respectively. +AND and OR lists are executed with left associativity. +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 (success). +.PP +An OR 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 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 +A \fIcompound command\fP is one of the following. +In most cases a \fIlist\fP in a command's description may be separated from +the rest of the command by one or more newlines, and may be followed by a +newline in place of a semicolon. +.TP +(\fIlist\fP) +\fIlist\fP is executed in a subshell environment (see +.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 or another +shell metacharacter. +.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 used with \fB[[\fP, the \fB<\fP and \fB>\fP operators sort +lexicographically using the current locale. +.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, +as if the \fBextglob\fP shell option were enabled. +The \fB=\fP operator is equivalent to \fB==\fP. +If the +.B nocasematch +shell option 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 the quoted portion +to be matched as a string. +.if t .sp 0.5 +.if n .sp 1 +An additional binary operator, \fB=~\fP, is available, with the same +precedence as \fB==\fP and \fB!=\fP. +When it is used, the string to the right of the operator is considered +a POSIX extended regular expression and matched accordingly +(using the POSIX \fIregcomp\fP and \fIregexec\fP interfaces +usually described 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 +.B nocasematch +shell option is enabled, the match is performed without regard to the case +of alphabetic characters. +Any part of the pattern may be quoted to force the quoted portion +to be matched as a string. +Bracket expressions in regular expressions must be treated carefully, +since normal quoting characters lose their meanings between brackets. +If the pattern is stored in a shell variable, quoting the variable +expansion forces the entire pattern to be matched as a string. +.if t .sp 0.5 +.if n .sp 1 +The pattern will match if it matches any part of the string. +Anchor the pattern using the \fB^\fP and \fB$\fP regular expression +operators to force it to match the entire string. +The array variable +.SM +.B BASH_REMATCH +records which parts of the string matched the pattern. +The element of +.SM +.B BASH_REMATCH +with index 0 contains the portion of +the string matching the entire regular expression. +Substrings matched by parenthesized subexpressions within the regular +expression are saved in the remaining +.SM +.B BASH_REMATCH +indices. The element of +.SM +.B BASH_REMATCH +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 +\fIexpression1\fP \fB||\fP \fIexpression2\fP +True if either +.I expression1 +or +.I expression2 +is true. +.PD +.LP +The \fB&&\fP and \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 +.SM +.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 +.SM +.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 matching rules +described under +.B Pattern Matching +below. +The \fIword\fP is expanded using tilde +expansion, parameter and variable expansion, arithmetic expansion, +command substitution, process substitution and quote removal. +Each \fIpattern\fP examined is expanded using tilde +expansion, parameter and variable expansion, arithmetic expansion, +command substitution, and process substitution. +If the +.B nocasematch +shell option 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. +If the \fB;;\fP operator is used, no subsequent matches are attempted after +the first pattern match. +Using \fB;&\fP in place of \fB;;\fP causes execution to continue with +the \fIlist\fP associated with the next set of patterns. +Using \fB;;&\fP in place of \fB;;\fP causes the shell to test the next +pattern list in the statement, if any, and execute any associated \fIlist\fP +on a successful match, +continuing the case statement execution as if the pattern list had not matched. +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-1\fP; \fBdo\fP \fIlist-2\fP; \fBdone\fP +.PD 0 +.TP +\fBuntil\fP \fIlist-1\fP; \fBdo\fP \fIlist-2\fP; \fBdone\fP +.PD +The \fBwhile\fP command continuously executes the list +\fIlist-2\fP as long as the last command in the list \fIlist-1\fP returns +an exit status of zero. The \fBuntil\fP command is identical +to the \fBwhile\fP command, except that the test is negated: +.I list-2 +is executed as long as the last command in +.I list-1 +returns a non-zero exit status. +The exit status of the \fBwhile\fP and \fBuntil\fP commands +is the exit status +of the last command executed in \fIlist-2\fP, or zero if +none was executed. +.SS Coprocesses +A \fIcoprocess\fP is a shell command preceded by the \fBcoproc\fP reserved +word. +A coprocess is executed asynchronously in a subshell, as if the command +had been terminated with the \fB&\fP control operator, with a two-way pipe +established between the executing shell and the coprocess. +.PP +The format for a coprocess is: +.RS +.PP +\fBcoproc\fP [\fINAME\fP] \fIcommand\fP [\fIredirections\fP] +.RE +.PP +This creates a coprocess named \fINAME\fP. +If \fINAME\fP is not supplied, the default name is \fBCOPROC\fP. +\fINAME\fP must not be supplied if \fIcommand\fP is a \fIsimple +command\fP (see above); otherwise, it is interpreted as the first word +of the simple command. +When the coprocess is executed, the shell creates an array variable (see +.B Arrays +below) named \fINAME\fP in the context of the executing shell. +The standard output of +.I command +is connected via a pipe to a file descriptor in the executing shell, +and that file descriptor is assigned to \fINAME\fP[0]. +The standard input of +.I command +is connected via a pipe to a file descriptor in the executing shell, +and that file descriptor is assigned to \fINAME\fP[1]. +This pipe is established before any redirections specified by the +command (see +.SM +.B REDIRECTION +below). +The file descriptors can be utilized as arguments to shell commands +and redirections using standard word expansions. +Other than those created to execute command and process substitutions, +the file descriptors are not available in subshells. +The process ID of the shell spawned to execute the coprocess is +available as the value of the variable \fINAME\fP_PID. +The \fBwait\fP +builtin command may be used to wait for the coprocess to terminate. +.PP +Since the coprocess is created as an asynchronous command, +the \fBcoproc\fP command always returns success. +The return status of a coprocess is the exit status of \fIcommand\fP. +.SS Shell Function Definitions +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 +\fIfname\fP () \fIcompound\-command\fP [\fIredirection\fP] +.PD 0 +.TP +\fBfunction\fP \fIfname\fP [()] \fIcompound\-command\fP [\fIredirection\fP] +.PD +This defines a function named \fIfname\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, +with one exception: If the \fBfunction\fP reserved word is used, but the +parentheses are not supplied, the braces are required. +\fIcompound\-command\fP is executed whenever \fIfname\fP is specified as the +name of a simple command. +When in \fIposix mode\fP, \fIfname\fP must be a valid shell \fIname\fP +and may not be the name of one of the +POSIX \fIspecial builtins\fP. +In default mode, a function name can be any unquoted shell word that does +not contain \fB$\fP. +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 ! . +When the shell is in \fIposix mode\fP, the \fB!\fP has no special meaning +within double quotes, even when history expansion is enabled. +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 +.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\(dq +double quote +.TP +.B \e? +question mark +.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) +.TP +.B \eu\fIHHHH\fP +the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +\fIHHHH\fP (one to four hex digits) +.TP +.B \eU\fIHHHHHHHH\fP +the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +\fIHHHHHHHH\fP (one to eight 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\(dq\fIstring\fP\(dq) +will cause the string to be translated according to the current locale. +The \fIgettext\fP infrastructure performs the message catalog lookup and +translation, using the \fBLC_MESSAGES\fP and \fBTEXTDOMAIN\fP shell +variables. +If the current locale is \fBC\fP or \fBPOSIX\fP, +or if there are no translations available, +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 (\fIdeclaration\fP commands). +When in \fIposix mode\fP, these builtins may appear in a command after +one or more instances of the \fBcommand\fP builtin and retain these +assignment statement properties. +.PP +In the context where an assignment statement is assigning a value +to a shell variable or array index, the += operator can be used to +append to or add to the variable's previous value. +This includes arguments to builtin commands such as \fBdeclare\fP that +accept assignment statements (\fIdeclaration\fP commands). +When += is applied to a variable for which the \fIinteger\fP 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 +(for indexed arrays) or added as additional key\-value pairs in an +associative array. +When applied to a string-valued variable, \fIvalue\fP is expanded and +appended to the variable's value. +.PP +A variable can be assigned the \fInameref\fP attribute using the +\fB\-n\fP option to the \fBdeclare\fP or \fBlocal\fP builtin commands +(see the descriptions of \fBdeclare\fP and \fBlocal\fP below) +to create a \fInameref\fP, or a reference to another variable. +This allows variables to be manipulated indirectly. +Whenever the nameref variable is referenced, assigned to, unset, or has +its attributes modified (other than using or changing the \fInameref\fP +attribute itself), the +operation is actually performed on the variable specified by the nameref +variable's value. +A nameref is commonly used within shell functions to refer to a variable +whose name is passed as an argument to the function. +For instance, if a variable name is passed to a shell function as its first +argument, running +.sp .5 +.RS +.if t \f(CWdeclare -n ref=$1\fP +.if n declare -n ref=$1 +.RE +.sp .5 +inside the function creates a nameref variable \fBref\fP whose value is +the variable name passed as the first argument. +References and assignments to \fBref\fP, and changes to its attributes, +are treated as references, assignments, and attribute modifications +to the variable whose name was passed as \fB$1\fP. +If the control variable in a \fBfor\fP loop has the nameref attribute, +the list of words can be a list of shell variables, and a name reference +will be established for each word in the list, in turn, when the loop is +executed. +Array variables cannot be given the \fBnameref\fP attribute. +However, nameref variables can reference array variables and subscripted +array variables. +Namerefs can be unset using the \fB\-n\fP option to the \fBunset\fP builtin. +Otherwise, if \fBunset\fP is executed with the name of a nameref variable +as an argument, the variable referenced by the nameref variable will be unset. +.SS Positional Parameters +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 +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 is not within double quotes, each positional parameter +expands to a separate word. +In contexts where it is performed, those words +are subject to further word splitting and pathname expansion. +When the expansion occurs within double quotes, it expands to a single word +with the value of each parameter separated by the first character of the +.SM +.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. +In contexts where word splitting is performed, this expands each +positional parameter to a separate word; if not within double +quotes, these words are subject to word splitting. +In contexts where word splitting is not performed, +this expands to a single word +with each positional parameter separated by a space. +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 exit 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 job most recently placed into the +background, whether executed as an asynchronous command or using +the \fBbg\fP builtin (see +.SM +.B "JOB CONTROL" +below). +.TP +.B 0 +Expands to the name of the shell or shell script. This is set at +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 filename used to invoke +.BR bash , +as given by argument zero. +.PD +.SS Shell Variables +The following variables are set by the shell: +.PP +.PD 0 +.TP +.B _ +At shell startup, set to the 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 simple +command executed in the foreground, 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. +.TP +.B BASH +Expands to the full filename used to invoke this instance of +.BR bash . +.TP +.B BASHOPTS +A colon-separated list of enabled shell options. Each word in +the list is a valid argument for the +.B \-s +option to the +.B shopt +builtin command (see +.SM +.B "SHELL BUILTIN COMMANDS" +below). The options appearing in +.SM +.B BASHOPTS +are those reported as +.I on +by \fBshopt\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 BASHPID +Expands to the process ID of the current \fBbash\fP process. +This differs from \fB$$\fP under certain circumstances, such as subshells +that do not require \fBbash\fP to be re-initialized. +Assignments to +.SM +.B BASHPID +have no effect. +If +.B BASHPID +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B BASH_ALIASES +An associative array variable whose members correspond to the internal +list of aliases as maintained by the \fBalias\fP builtin. +Elements added to this array appear in the alias list; however, +unsetting array elements currently does not cause aliases to be removed +from the alias list. +If +.B BASH_ALIASES +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B BASH_ARGC +An array variable whose values are the number of parameters in each +frame of the current \fBbash\fP 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 +.SM +.BR BASH_ARGC . +The shell sets +.SM +.B BASH_ARGC +only when in extended debugging mode (see the description of the +.B extdebug +option to the +.B shopt +builtin below). +Setting \fBextdebug\fP after the shell has started to execute a script, +or referencing this variable when \fBextdebug\fP is not set, +may result in inconsistent values. +.TP +.B BASH_ARGV +An array variable containing all of the parameters in the current \fBbash\fP +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 +.SM +.BR BASH_ARGV . +The shell sets +.SM +.B BASH_ARGV +only when in extended debugging mode +(see the description of the +.B extdebug +option to the +.B shopt +builtin below). +Setting \fBextdebug\fP after the shell has started to execute a script, +or referencing this variable when \fBextdebug\fP is not set, +may result in inconsistent values. +.TP +.B BASH_ARGV0 +When referenced, this variable expands to the name of the shell or shell +script (identical to +.BR $0 ; +see the description of special parameter 0 above). +Assignment to +.B BASH_ARGV0 +causes the value assigned to also be assigned to \fB$0\fP. +If +.B BASH_ARGV0 +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B BASH_CMDS +An associative array variable whose members correspond to the internal +hash table of commands as maintained by the \fBhash\fP builtin. +Elements added to this array appear in the hash table; however, +unsetting array elements currently does not cause command names to be removed +from the hash table. +If +.B BASH_CMDS +is unset, it loses its special properties, even if it is +subsequently reset. +.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. +If +.B BASH_COMMAND +is unset, it loses its special properties, even if it is +subsequently reset. +.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 +where each corresponding member of +.SM +.B FUNCNAME +was invoked. +\fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP is the line number in the source +file (\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP) where +\fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP was called +(or \fB${BASH_LINENO[\fP\fI$i-1\fP\fB]}\fP if referenced within another +shell function). +Use +.SM +.B LINENO +to obtain the current line number. +.TP +.B BASH_LOADABLES_PATH +A colon-separated list of directories in which the shell looks for +dynamically loadable builtins specified by the +.B enable +command. +.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. +.TP +.B BASH_SOURCE +An array variable whose members are the source filenames +where the corresponding shell function names in the +.SM +.B FUNCNAME +array variable are defined. +The shell function +\fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP is defined in the file +\fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fP and called from +\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP. +.TP +.B BASH_SUBSHELL +Incremented by one within each subshell or subshell environment when +the shell begins executing in that environment. +The initial value is 0. +If +.B BASH_SUBSHELL +is unset, it loses its special properties, even if it is +subsequently reset. +.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 +.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 +.SM +.BR MACHTYPE . +.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_KEY +The key (or final key of a key sequence) used to invoke the current +completion function. +.TP +.B COMP_LINE +The current command line. +This variable is available only in shell functions and external +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_TYPE +Set to an integer value corresponding to the type of completion attempted +that caused a completion function to be called: +\fITAB\fP, for normal completion, +\fI?\fP, for listing completions after successive tabs, +\fI!\fP, for listing alternatives on partial word completion, +\fI@\fP, to list completions if the word is not unmodified, +or +\fI%\fP, for menu completion. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (see \fBProgrammable Completion\fP +below). +.TP +.B COMP_WORDBREAKS +The set of characters that the \fBreadline\fP 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. +The line is split into words as \fBreadline\fP would split it, using +.SM +.B COMP_WORDBREAKS +as described above. +This variable is available only in shell functions invoked by the +programmable completion facilities (see \fBProgrammable Completion\fP +below). +.TP +.B COPROC +An array variable (see \fBArrays\fP below) created to hold the file descriptors +for output from and input to an unnamed coprocess (see \fBCoprocesses\fP +above). +.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 EPOCHREALTIME +Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see \fItime\fP\fR(3)\fP) as a floating point value +with micro-second granularity. +Assignments to +.SM +.B EPOCHREALTIME +are ignored. +If +.SM +.B EPOCHREALTIME +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B EPOCHSECONDS +Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see \fItime\fP\fR(3)\fP). +Assignments to +.SM +.B EPOCHSECONDS +are ignored. +If +.SM +.B EPOCHSECONDS +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 (the one with the highest index) is +.if t \f(CW"main"\fP. +.if n "main". +This variable exists only when a shell function is executing. +Assignments to +.SM +.B FUNCNAME +have no effect. +If +.SM +.B FUNCNAME +is unset, it loses its special properties, even if it is +subsequently reset. +.if t .sp 0.5 +.if n .sp 1 +This variable can be used with \fBBASH_LINENO\fP and \fBBASH_SOURCE\fP. +Each element of \fBFUNCNAME\fP has corresponding elements in +\fBBASH_LINENO\fP and \fBBASH_SOURCE\fP to describe the call stack. +For instance, \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP was called from the file +\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP at line number +\fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP. +The \fBcaller\fP builtin displays the current call stack using this +information. +.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. +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. +Assignments to +.SM +.B HISTCMD +are ignored. +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 MAPFILE +An array variable (see \fBArrays\fP below) created to hold the text +read by the \fBmapfile\fP builtin when no variable name is supplied. +.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, it expands to a random integer +between 0 and 32767. +Assigning +a value to +.SM +.BR RANDOM +initializes (seeds) the sequence of random numbers. +If +.SM +.B RANDOM +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B READLINE_LINE +The contents of the +.B readline +line buffer, for use with +.if t \f(CWbind -x\fP +.if n "bind -x" +(see +.SM +.B "SHELL BUILTIN COMMANDS" +below). +.TP +.B READLINE_MARK +The position of the mark (saved insertion point) in the +.B readline +line buffer, for use with +.if t \f(CWbind -x\fP +.if n "bind -x" +(see +.SM +.B "SHELL BUILTIN COMMANDS" +below). +The characters between the insertion point and the mark are often +called the \fIregion\fP. +.TP +.B READLINE_POINT +The position of the insertion point in the +.B readline +line buffer, for use with +.if t \f(CWbind -x\fP +.if n "bind -x" +(see +.SM +.B "SHELL BUILTIN COMMANDS" +below). +.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. +The number of seconds at shell invocation and the current time is always +determined by querying the system clock. +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 SRANDOM +This variable expands to a 32-bit pseudo-random number each time it is +referenced. The random number generator is not linear on systems that +support \f(CW/dev/urandom\fP or \fIarc4random\fP, so each returned number +has no relationship to the numbers preceding it. +The random number generator cannot be seeded, so assignments to this +variable have no effect. +If +.SM +.B SRANDOM +is unset, it loses its special properties, +even if it is subsequently reset. +.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_COMPAT +The value is used to set the shell's compatibility level. +See +.SM +.B SHELL COMPATIBILITY MODE +below for a description of the various compatibility +levels and their effects. +The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42) +corresponding to the desired compatibility level. +If \fBBASH_COMPAT\fP is unset or set to the empty string, the compatibility +level is set to the default for the current version. +If \fBBASH_COMPAT\fP is set to a value that is not one of the valid +compatibility levels, the shell prints an error message and sets the +compatibility level to the default for the current version. +The valid values correspond to the compatibility levels +described below under +.SM +.BR BSHELL COMPATIBILITY MODE . +For example, 4.2 and 42 are valid values that correspond +to the \fBcompat42\fP \fBshopt\fP option +and set the compatibility level to 42. +The current version is also a valid value. +.TP +.B BASH_ENV +If this parameter is set when \fBbash\fP is executing a shell script, +its value is interpreted as a filename containing commands to +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 filename. +.SM +.B PATH +is not used to search for the resultant filename. +.TP +.B BASH_XTRACEFD +If set to an integer corresponding to a valid file descriptor, \fBbash\fP +will write the trace output generated when +.if t \f(CWset -x\fP +.if n \fIset -x\fP +is enabled to that file descriptor. +The file descriptor is closed when +.SM +.B BASH_XTRACEFD +is unset or assigned a new value. +Unsetting +.SM +.B BASH_XTRACEFD +or assigning it the empty string causes the +trace output to be sent to the standard error. +Note that setting +.SM +.B BASH_XTRACEFD +to 2 (the standard error file +descriptor) and then unsetting it will result in the standard error +being closed. +.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 CHILD_MAX +Set the number of exited child status values for the shell to remember. +Bash will not allow this value to be decreased below a POSIX-mandated +minimum, and there is a maximum value (currently 8192) that this may +not exceed. +The minimum value is system-dependent. +.TP +.B COLUMNS +Used by the \fBselect\fP compound command to determine the terminal width +when printing selection lists. +Automatically set if the +.B checkwinsize +option is enabled or in an interactive shell upon receipt of a +.SM +.BR 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). +Each array element contains one possible completion. +.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 ENV +Expanded and executed similarly to +.SM +.B BASH_ENV +(see \fBINVOCATION\fP above) +when an interactive shell is invoked in \fIposix mode\fP. +.TP +.B EXECIGNORE +A colon-separated list of shell patterns (see \fBPattern Matching\fP) +defining the list of filenames to be ignored by command search using +\fBPATH\fP. +Files whose full pathnames match one of these patterns are not considered +executable files for the purposes of completion and command execution +via \fBPATH\fP lookup. +This does not affect the behavior of the \fB[\fP, \fBtest\fP, and \fB[[\fP +commands. +Full pathnames in the command hash table are not subject to \fBEXECIGNORE\fP. +Use this variable to ignore shared library files that have the executable +bit set, but are not executable files. +The pattern matching honors the setting of the \fBextglob\fP shell +option. +.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 FUNCNEST +If set to a numeric value greater than 0, defines a maximum function +nesting level. Function invocations that exceed this nesting level +will cause the current command to abort. +.TP +.B GLOBIGNORE +A colon-separated list of patterns defining the set of file names to +be ignored by pathname expansion. +If a file name 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 +.I 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 +.SM +.B 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 +.SM +.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 +.SM +.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 a shell exits. +.TP +.B HISTFILESIZE +The maximum number of lines contained in the history file. When this +variable is assigned a value, the history file is truncated, if +necessary, +to contain no more than that number of lines by removing the oldest entries. +The history file is also truncated to this size after +writing it when a shell exits. +If the value is 0, the history file is truncated to zero size. +Non-numeric values and numeric values less than zero inhibit truncation. +The shell sets the default value to the value of \fBHISTSIZE\fP +after reading any startup files. +.TP +.B HISTIGNORE +A colon-separated list of patterns used to decide which command lines +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 +.SM +.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 +.SM +.BR HISTIGNORE . +The pattern matching honors the setting of the \fBextglob\fP shell +option. +.TP +.B HISTSIZE +The number of commands to remember in the command history (see +.SM +.B HISTORY +below). +If the value is 0, commands are not saved in the history list. +Numeric values less than zero result in every command being saved +on the history list (there is no limit). +The shell sets the default value to 500 after reading any startup files. +.TP +.B HISTTIMEFORMAT +If this variable is set and not null, its value is used as a format string +for \fIstrftime\fP(3) to print the time stamp associated with each history +entry displayed by the \fBhistory\fP builtin. +If this variable is set, time stamps are written to the history file so +they may be preserved across shell sessions. +This uses the history comment character to distinguish timestamps from +other history lines. +.TP +.B HOME +The home directory of the current user; the default argument for the +\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, or does not name a readable file, +\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 INSIDE_EMACS +If this variable appears in the environment when the shell starts, +\fBbash\fP assumes that it is running inside an Emacs shell buffer +and may disable line editing, depending on the value of \fBTERM\fP. +.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 +.SM +.B LANG +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 LC_TIME +This variable determines the locale category used for data and time +formatting. +.TP +.B LINES +Used by the \fBselect\fP compound command to determine the column length +for printing selection lists. +Automatically set if the +.B checkwinsize +option is enabled or in an interactive shell upon receipt of a +.SM +.BR SIGWINCH . +.TP +.B MAIL +If this parameter is set to a file or directory name and the +.SM +.B MAILPATH +variable is not set, +.B bash +informs the user of the arrival of mail in the specified file or +Maildir-format directory. +.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 filenames to be checked for mail. +The message to be printed when mail arrives in a particular file +may be specified by separating the filename from the message with a `?'. +When used in the text of the message, \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 +can be configured to supply +a default value for this variable (there is no value by default), +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 +.SM +.B 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 +.BR bash . +A common value is +.na +.if t \f(CW/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin\fP. +.if n ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''. +.ad +.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. +When the shell enters \fIposix mode\fP, it sets this variable if it was +not already set. +.TP +.B PROMPT_COMMAND +If this variable is set, and is an array, +the value of each set element is executed as a command +prior to issuing each primary prompt. +If this is set but not an array variable, +its value is used as a command to execute instead. +.TP +.B PROMPT_DIRTRIM +If set to a number greater than zero, the value is used as the number of +trailing directory components to retain when expanding the \fB\ew\fP and +\fB\eW\fP prompt string escapes (see +.SM +.B PROMPTING +below). Characters removed are replaced with an ellipsis. +.TP +.B PS0 +The value of this parameter is expanded (see +.SM +.B PROMPTING +below) and displayed by interactive shells after reading a command +and before the command is executed. +.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 +.SM +.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 +.SM +.B PS1 +and the value is printed before each command +.B bash +displays during an execution trace. The first character of +the expanded value of +.SM +.B PS4 +is replicated multiple times, as necessary, to indicate multiple +levels of indirection. The default is ``\fB+ \fP''. +.TP +.B SHELL +This variable expands to the full pathname to the shell. +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\et%3lS\(aq\fP. +If the value is null, no timing information is displayed. +A trailing newline is added when the format string is displayed. +.PD 0 +.TP +.B TMOUT +If set to a value greater than zero, +.SM +.B TMOUT +is treated as the +default timeout for the \fBread\fP builtin. +The \fBselect\fP command terminates if input does not arrive +after +.SM +.B TMOUT +seconds when input is coming from a terminal. +In an interactive shell, the value is interpreted as the +number of seconds to wait for a line of input after issuing the +primary prompt. +.B Bash +terminates after waiting for that number of seconds if a complete +line of input does not arrive. +.TP +.B TMPDIR +If set, \fBbash\fP uses its value as the name of a directory in which +\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 indexed and associative array variables. +Any variable may be used as an indexed 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. +Indexed arrays are referenced using integers (including arithmetic +expressions) and are zero-based; associative arrays are referenced +using arbitrary strings. +Unless otherwise noted, indexed array indices must be non-negative integers. +.PP +An indexed array is created automatically if any variable is assigned to +using the syntax \fIname\fP[\fIsubscript\fP]=\fIvalue\fP. The +.I subscript +is treated as an arithmetic expression that must evaluate to a number. +To explicitly declare an indexed 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. +.PP +Associative arrays are created using +.BR "declare \-A \fIname\fP" . +.PP +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 may be of the form [\fIsubscript\fP]=\fIstring\fP. +Indexed array assignments do not require anything but \fIstring\fP. +Each \fIvalue\fP in the list is expanded using all the shell expansions +described below under +.SM +.BR EXPANSION . +When assigning to indexed arrays, if the optional brackets and subscript +are supplied, that index is assigned to; +otherwise the index of the element assigned is the last index assigned +to by the statement plus one. Indexing starts at zero. +.PP +When assigning to an associative array, the words in a compound assignment +may be either assignment statements, for which the subscript is required, +or a list of words that is interpreted as a sequence of alternating keys +and values: +\fIname\fP=\fB( \fP\fIkey1 value1 key2 value2\fP ...\fB)\fP. +These are treated identically to +\fIname\fP=\fB(\fP [\fIkey1\fP]=\fIvalue1\fP [\fIkey2\fP]=\fIvalue2\fP ...\fB)\fP. +The first word in the list determines how the remaining words +are interpreted; all assignments in a list must be of the same type. +When using key/value pairs, the keys may not be missing or empty; +a final missing value is treated like the empty string. +.PP +This syntax is also accepted by the +.B declare +builtin. Individual array elements may be assigned to using the +\fIname\fP[\fIsubscript\fP]=\fIvalue\fP syntax introduced above. +When assigning to an indexed array, if +.I name +is subscripted by a negative number, that number is +interpreted as relative to one greater than the maximum index of +\fIname\fP, so negative indices count back from the end of the +array, and an index of \-1 references the last element. +.PP +Any element of an array may be referenced using +${\fIname\fP[\fIsubscript\fP]}. The braces are required to avoid +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. +If the +.I subscript +used to reference an element of an indexed array +evaluates to a number less than zero, it is +interpreted as relative to one greater than the maximum index of the array, +so negative indices count back from the end of the +array, and an index of \-1 references the last element. +.PP +Referencing an array variable without a subscript is equivalent to +referencing the array with a subscript of 0. +Any reference to a variable using a valid subscript is legal, and +.B bash +will create an array if necessary. +.PP +An array variable is considered set if a subscript has been assigned a +value. The null string is a valid value. +.PP +It is possible to obtain the keys (indices) of an array as well as the values. +${\fB!\fP\fIname\fP[\fI@\fP]} and ${\fB!\fP\fIname\fP[\fI*\fP]} +expand to the indices assigned in array variable \fIname\fP. +The treatment when in double quotes is similar to the expansion of the +special parameters \fI@\fP and \fI*\fP within double quotes. +.PP +The +.B unset +builtin is used to destroy arrays. \fBunset\fP \fIname\fP[\fIsubscript\fP] +destroys the array element at index \fIsubscript\fP, +for both indexed and associative arrays. +Negative subscripts to indexed arrays are interpreted as described above. +Unsetting the last element of an array variable does not unset the variable. +\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 +When using a variable name with a subscript as an argument to a command, +such as with \fBunset\fP, without using the word expansion syntax +described above, the argument is subject to pathname expansion. +If pathname expansion is not desired, the argument should be quoted. +.PP +The +.BR declare , +.BR local , +and +.B readonly +builtins each accept a +.B \-a +option to specify an indexed array and a +.B \-A +option to specify an associative array. +If both options are supplied, +.B \-A +takes precedence. +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 and variable expansion, arithmetic expansion, +and command substitution (done in a left-to-right fashion); +word splitting; +and pathname expansion. +.PP +On systems that can support it, there is an additional expansion +available: \fIprocess substitution\fP. +This is performed at the +same time as tilde, parameter, variable, and arithmetic expansion and +command substitution. +.PP +After these expansions are performed, quote characters present in the +original word are removed unless they have been quoted themselves +(\fIquote removal\fP). +.PP +Only brace expansion, word splitting, and pathname expansion +can increase 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", +and, in most cases, \fB$*\fP and \fB${\fP\fIname\fP\fB[*]}\fP +as explained above (see +.SM +.BR PARAMETERS ). +.SS Brace Expansion +.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\fIincr\fP\fB]}\fP, +where \fIx\fP and \fIy\fP are either integers or single characters, +and \fIincr\fP, an optional increment, is an integer. +When integers are supplied, the expression expands to each number between +\fIx\fP and \fIy\fP, inclusive. +Supplied integers may be prefixed with \fI0\fP to force each term to have the +same width. +When either \fIx\fP or \fPy\fP begins with a zero, the shell +attempts to force all generated terms to contain the same number of digits, +zero-padding where necessary. +When characters are supplied, the expression expands to each character +lexicographically between \fIx\fP and \fIy\fP, inclusive, +using the default C locale. +Note that both \fIx\fP and \fIy\fP must be of the same type. +When the increment is supplied, it is used as the difference between +each term. The default increment is 1 or \-1 as appropriate. +.PP +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, and inhibits brace +expansion until the closing \fB}\fP. +.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 +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 filenames with tildes in assignments to +.SM +.BR PATH , +.SM +.BR MAILPATH , +and +.SM +.BR CDPATH , +and the shell assigns the expanded value. +.PP +Bash also performs tilde expansion on words satisfying the conditions of +variable assignments (as described above under +.SM +.BR PARAMETERS ) +when they appear as arguments to simple commands. +Bash does not do this, except for the \fIdeclaration\fP commands listed +above, when in \fIposix mode\fP. +.SS Parameter Expansion +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. +The \fIparameter\fP is a shell parameter as described above +\fBPARAMETERS\fP) or an array reference (\fBArrays\fP). +.PD +.PP +If the first character of \fIparameter\fP is an exclamation point (\fB!\fP), +and \fIparameter\fP is not a \fInameref\fP, +it introduces a level of indirection. +\fBBash\fP uses the value formed by expanding the rest of +\fIparameter\fP as the new \fIparameter\fP; this is then +expanded and that value is used in the rest of the expansion, rather +than the expansion of the original \fIparameter\fP. +This is known as \fIindirect expansion\fP. +The value is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. +If \fIparameter\fP is a nameref, this expands to the name of the +parameter referenced by \fIparameter\fP instead of performing the +complete indirect expansion. +The exceptions to this are the expansions of ${\fB!\fP\fIprefix\fP\fB*\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. +.PP +When not performing substring expansion, using the forms documented below +(e.g., \fB:-\fP), +\fBbash\fP tests for a parameter that is unset or null. Omitting the colon +results in a test only for a parameter that is unset. +.PP +.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 the value of \fIparameter\fP +starting at the character specified by \fIoffset\fP. +If \fIparameter\fP is \fB@\fP, an indexed array subscripted by +\fB@\fP or \fB*\fP, or an associative array name, the results differ as +described below. +If \fIlength\fP is omitted, expands to the substring of the value of +\fIparameter\fP starting at the character specified by \fIoffset\fP +and extending to the end of the value. +\fIlength\fP and \fIoffset\fP are arithmetic expressions (see +.SM +.B +ARITHMETIC EVALUATION +below). +.sp 1 +If \fIoffset\fP evaluates to a number less than zero, the value +is used as an offset in characters +from the end of the value of \fIparameter\fP. +If \fIlength\fP evaluates to a number less than zero, +it is interpreted as an offset in characters +from the end of the value of \fIparameter\fP rather than +a number of characters, and the expansion is the characters between +\fIoffset\fP and that result. +Note that a negative offset must be separated from the colon by at least +one space to avoid being confused with the \fB:-\fP expansion. +.sp 1 +If \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional +parameters beginning at \fIoffset\fP. +A negative \fIoffset\fP is taken relative to one greater than the greatest +positional parameter, so an offset of \-1 evaluates to the last positional +parameter. +It is an expansion error if \fIlength\fP evaluates to a number less than +zero. +.sp 1 +If \fIparameter\fP is an indexed array name subscripted by @ or *, +the result is the \fIlength\fP +members of the array beginning with ${\fIparameter\fP[\fIoffset\fP]}. +A negative \fIoffset\fP is taken relative to one greater than the maximum +index of the specified array. +It is an expansion error if \fIlength\fP evaluates to a number less than +zero. +.sp 1 +Substring expansion applied to an associative array produces undefined +results. +.sp 1 +Substring indexing is zero-based unless the positional parameters +are used, in which case the indexing starts at 1 by default. +If \fIoffset\fP is 0, and the positional parameters are used, \fB$0\fP is +prefixed to the list. +.TP +${\fB!\fP\fIprefix\fP\fB*\fP} +.PD 0 +.TP +${\fB!\fP\fIprefix\fP\fB@\fP} +.PD +\fBNames matching prefix\fP. +Expands to the names of variables whose names begin with \fIprefix\fP, +separated by the first character of the +.SM +.B IFS +special variable. +When \fI@\fP is used and the expansion appears within double quotes, each +variable name expands to a separate word. +.TP +${\fB!\fP\fIname\fP[\fI@\fP]} +.PD 0 +.TP +${\fB!\fP\fIname\fP[\fI*\fP]} +.PD +\fBList of array keys\fP. +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} +\fBParameter length\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. +If +.I parameter +is an indexed array name subscripted by a negative number, that number is +interpreted as relative to one greater than the maximum index of +\fIparameter\fP, so negative indices count back from the end of the +array, and an index of \-1 references the last element. +.TP +${\fIparameter\fP\fB#\fP\fIword\fP} +.PD 0 +.TP +${\fIparameter\fP\fB##\fP\fIword\fP} +.PD +\fBRemove matching prefix pattern\fP. +The +.I word +is expanded to produce a pattern just as in pathname +expansion, and matched against the expanded value of +.I parameter +using the rules described under +.B Pattern Matching +below. +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 +\fBRemove matching suffix pattern\fP. +The \fIword\fP is expanded to produce a pattern just as in +pathname expansion, and matched against the expanded value of +.I parameter +using the rules described under +.B Pattern Matching +below. +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} +\fBPattern substitution\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. +The match is performed using the rules described under +.B Pattern Matching +below. +If \fIpattern\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 the +.B nocasematch +shell option is enabled, the match is performed without regard to the case +of alphabetic characters. +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. +.TP +${\fIparameter\fP\fB^\fP\fIpattern\fP} +.PD 0 +.TP +${\fIparameter\fP\fB^^\fP\fIpattern\fP} +.TP +${\fIparameter\fP\fB,\fP\fIpattern\fP} +.TP +${\fIparameter\fP\fB,,\fP\fIpattern\fP} +.PD +\fBCase modification\fP. +This expansion modifies the case of alphabetic characters in \fIparameter\fP. +The \fIpattern\fP is expanded to produce a pattern just as in +pathname expansion. +Each character in the expanded value of \fIparameter\fP is tested against +\fIpattern\fP, and, if it matches the pattern, its case is converted. +The pattern should not attempt to match more than one character. +The \fB^\fP operator converts lowercase letters matching \fIpattern\fP +to uppercase; the \fB,\fP operator converts matching uppercase letters +to lowercase. +The \fB^^\fP and \fB,,\fP expansions convert each matched character in the +expanded value; the \fB^\fP and \fB,\fP expansions match and convert only +the first character in the expanded value. +If \fIpattern\fP is omitted, it is treated like a \fB?\fP, which matches +every character. +If +.I parameter +is +.B @ +or +.BR * , +the case modification 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 case modification operation is applied to each member of the +array in turn, and the expansion is the resultant list. +.TP +${\fIparameter\fP\fB@\fP\fIoperator\fP} +\fBParameter transformation\fP. +The expansion is either a transformation of the value of \fIparameter\fP +or information about \fIparameter\fP itself, depending on the value of +\fIoperator\fP. Each \fIoperator\fP is a single letter: +.sp 1 +.RS +.PD 0 +.TP +.B U +The expansion is a string that is the value of \fIparameter\fP with lowercase +alphabetic characters converted to uppercase. +.TP +.B u +The expansion is a string that is the value of \fIparameter\fP with the first +character converted to uppercase, if it is alphabetic. +.TP +.B L +The expansion is a string that is the value of \fIparameter\fP with uppercase +alphabetic characters converted to lowercase. +.TP +.B Q +The expansion is a string that is the value of \fIparameter\fP quoted in a +format that can be reused as input. +.TP +.B E +The expansion is a string that is the value of \fIparameter\fP with backslash +escape sequences expanded as with the \fB$'...'\fP quoting mechanism. +.TP +.B P +The expansion is a string that is the result of expanding the value of +\fIparameter\fP as if it were a prompt string (see \fBPROMPTING\fP below). +.TP +.B A +The expansion is a string in the form of +an assignment statement or \fBdeclare\fP command that, if +evaluated, will recreate \fIparameter\fP with its attributes and value. +.TP +.B K +Produces a possibly-quoted version of the value of \fIparameter\fP, +except that it prints the values of +indexed and associative arrays as a sequence of quoted key-value pairs +(see \fBArrays\fP above). +.TP +.B a +The expansion is a string consisting of flag values representing +\fIparameter\fP's attributes. +.PD +.PP +If +.I parameter +is +.B @ +or +.BR * , +the 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 operation is applied to each member of the +array in turn, and the expansion is the resultant list. +.sp 1 +The result of the expansion is subject to word splitting and pathname +expansion as described below. +.RE +.SS Command Substitution +\fICommand substitution\fP allows the output of a command to replace +the command name. There are two forms: +.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 in a subshell environment +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 +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 and variable expansion, +command substitution, and quote removal. +The result is treated as the arithmetic expression to be evaluated. +Arithmetic expansions may be nested. +.PP +The evaluation is performed according to the rules listed below under +.SM +.BR "ARITHMETIC EVALUATION" . +If +.I expression +is invalid, +.B bash +prints a message indicating failure and no substitution occurs. +.SS Process Substitution +\fIProcess substitution\fP allows a process's input or output to be +referred to using a filename. +It takes the form of +\fB<(\fP\fIlist\^\fP\fB)\fP +or +\fB>(\fP\fIlist\^\fP\fB)\fP. +The process \fIlist\fP is run asynchronously, and its input or output +appears as a filename. +This filename 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. +Process substitution is supported on systems that support named +pipes (\fIFIFOs\fP) or the \fB/dev/fd\fP method of naming open files. +.PP +When available, process substitution is performed +simultaneously with parameter and variable expansion, +command substitution, +and arithmetic expansion. +.SS Word Splitting +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 using these characters as field terminators. +If +.SM +.B IFS +is unset, or its +value is exactly +.BR , +the default, then +sequences of +.BR , +.BR , +and +.B +at the beginning and end of the results of the previous +expansions are ignored, and +any sequence of +.SM +.B IFS +characters not at the beginning or end serves to delimit words. +If +.SM +.B IFS +has a value other than the default, then sequences of +the whitespace characters +.BR space , +.BR tab , +and +.B newline +are ignored at the beginning and end of the +word, as long as the whitespace character is in the +value of +.SM +.B 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 +and passed to commands as empty strings. +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 +and passed to a command as an empty string. +When a quoted null argument appears as part of a word whose expansion is +non-null, the null argument is removed. +That is, the word +\f(CW\-d\(aq\^\(aq\fP becomes \f(CW\-d\fP after word splitting and +null argument removal. +.PP +Note that if no expansion occurs, no splitting +is performed. +.SS Pathname Expansion +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, and is not quoted, then the word is +regarded as a +.IR pattern , +and replaced with an alphabetically sorted list of +filenames matching the pattern +(see +.SM +.B "Pattern Matching" +below). +If no matching filenames are found, +and the shell option +.B nullglob +is not enabled, the word is left unchanged. +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. +The filenames +.B ``.'' +and +.B ``..'' +must always be matched explicitly, even if +.B dotglob +is set. +In other cases, the +.B ``.'' +character is not treated specially. +When matching a pathname, the slash character must always be +matched explicitly by a slash in the pattern, but in other matching +contexts it can be matched by a special pattern character as described +below under +.SM +.BR "Pattern Matching" . +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. +If the \fBnocaseglob\fP option is set, the matching against the patterns in +.SM +.B GLOBIGNORE +is performed without regard to case. +The filenames +.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 filenames beginning with a +.B ``.'' +will match. +To get the old behavior of ignoring filenames 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. +The pattern matching honors the setting of the \fBextglob\fP shell +option. +.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 +.RS +.TP +.B * +Matches any string, including the null string. +When the \fBglobstar\fP shell option is enabled, and \fB*\fP is used in +a pathname expansion context, two adjacent \fB*\fPs used as a single +pattern will match all files and zero or more directories and +subdirectories. +If followed by a \fB/\fP, two adjacent \fB*\fPs will match only directories +and subdirectories. +.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 falls between those two characters, inclusive, +using the current locale's collating sequence and character set, +is matched. If the first character following the +.B [ +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 values of the +.SM +.B LC_COLLATE +or +.SM +.B LC_ALL +shell variables, if set. +To obtain the traditional interpretation of range expressions, where +.B [a\-d] +is equivalent to +.BR [abcd] , +set value of the +.B LC_ALL +shell variable to +.BR C , +or enable the +.B globasciiranges +shell option. +A +.B \- +may be matched by including it as the first or last character +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 +.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 +.PP +Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. +Using separate matches against shorter strings, or using arrays of +strings instead of a single long string, may be faster. +.SS Quote Removal +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 allows commands' file handles to be +duplicated, opened, closed, +made to refer to different files, +and can change the files the command reads from and writes to. +Redirection may also be used to modify file handles in the +current shell execution environment. +The following redirection +operators may precede or appear anywhere within a +.I simple command +or may follow a +.IR command . +Redirections are processed in the order they appear, from +left to right. +.PP +Each redirection that may be preceded by a file descriptor number +may instead be preceded by a word of the form {\fIvarname\fP}. +In this case, for each redirection operator except +>&- and <&-, the shell will allocate a file descriptor greater +than or equal to 10 and assign it to \fIvarname\fP. +If >&- or <&- is preceded +by {\fIvarname\fP}, the value of \fIvarname\fP defines the file +descriptor to close. +If {\fIvarname\fP} is supplied, the redirection persists beyond +the scope of the command, allowing the shell programmer to manage +the file descriptor himself. +.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 and variable expansion, +command substitution, arithmetic expansion, quote removal, +pathname expansion, and word splitting. +If it expands to more than one word, +.B bash +reports an error. +.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 from the 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. +If the operating system on which \fBbash\fP is running provides these +special files, bash will use them; otherwise it will emulate them +internally with the behavior described below. +.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 +the corresponding TCP socket. +.TP +.B /dev/udp/\fIhost\fP/\fIport\fP +If \fIhost\fP is a valid hostname or Internet address, and \fIport\fP +is an integer port number or service name, \fBbash\fP attempts to open +the corresponding UDP 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 +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 +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 +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 +.SS Redirecting Standard Output and Standard Error +This construct allows both the +standard output (file descriptor 1) and +the standard error output (file descriptor 2) +to be redirected to the file whose name is the +expansion of +.IR word . +.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 +.PP +When using the second form, \fIword\fP may not expand to a number or +\fB\-\fP. If it does, other redirection operators apply +(see \fBDuplicating File Descriptors\fP below) for compatibility +reasons. +.SS Appending Standard Output and Standard Error +This construct allows both the +standard output (file descriptor 1) and +the standard error output (file descriptor 2) +to be appended to the file whose name is the +expansion of +.IR word . +.PP +The format for appending standard output and standard error is: +.RS +.PP +\fB&>>\fP\fIword\fP +.RE +.PP +This is semantically equivalent to +.RS +.PP +\fB>>\fP\fIword\fP 2\fB>&\fP1 +.RE +.PP +(see \fBDuplicating File Descriptors\fP below). +.SS Here Documents +This type of redirection instructs the shell to read input from the +current source until a line containing only +.I delimiter +(with no trailing blanks) +is seen. All of +the lines read up to that point are then used as the standard +input (or file descriptor \fIn\fP if \fIn\fP is specified) for a command. +.PP +The format of here-documents is: +.RS +.PP +.nf +[\fIn\fP]\fB<<\fP[\fB\-\fP]\fIword\fP + \fIhere-document\fP +\fIdelimiter\fP +.fi +.RE +.PP +No parameter and variable expansion, command substitution, +arithmetic expansion, or pathname expansion is performed on +.IR word . +If any part of +.I word +is 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, +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 +[\fIn\fP]\fB<<<\fP\fIword\fP +.fi +.RE +.PP +The \fIword\fP undergoes +tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote removal. +Pathname expansion and word splitting are not performed. +The result is supplied as a single string, with a newline appended, +to the command on its +standard input (or file descriptor \fIn\fP if \fIn\fP is specified). +.SS "Duplicating File Descriptors" +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. +If +.I word +evaluates to +.BR \- , +file descriptor +.I n +is closed. +As a special case, if \fIn\fP is omitted, and \fIword\fP does not +expand to one or more digits or \fB\-\fP, the standard output and standard +error are redirected as described previously. +.SS "Moving File Descriptors" +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" +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, +and all lines that make up a compound command, +before executing any of the commands on that line or the compound command. +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 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 \fB0\fP +is unchanged. +The first element of the +.SM +.B FUNCNAME +variable is set to the name of the function while the function +is executing. +.PP +All other aspects of the shell execution +environment are identical between a function and its caller +with these exceptions: 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), +and the +.SM +.B ERR +trap is not inherited unless the \fB\-o errtrace\fP shell option has +been enabled. +.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. +If a variable is declared \fBlocal\fP, the variable's visible scope +is restricted to that function and its children (including the functions +it calls). +Local variables "shadow" variables with the same name declared at +previous scopes. +For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. +.PP +The shell uses \fIdynamic scoping\fP to control a variable's visibility +within functions. +With dynamic scoping, visible variables and their values +are a result of the sequence of function calls that caused execution +to reach the current function. +The value of a variable that a function sees depends +on its value within its caller, if any, whether that caller is +the "global" scope or another shell function. +This is also the value that a local variable +declaration "shadows", and the value that is restored when the function +returns. +.PP +For example, if a variable \fIvar\fP is declared as local in function +\fIfunc1\fP, and \fIfunc1\fP calls another function \fIfunc2\fP, +references to \fIvar\fP made from within \fIfunc2\fP will resolve to the +local variable \fIvar\fP from \fIfunc1\fP, shadowing any global variable +named \fIvar\fP. +.PP +The \fBunset\fP builtin also acts using the same dynamic scope: if a +variable is local to the current scope, \fBunset\fP will unset it; +otherwise the unset will refer to the variable found in any calling scope +as described above. +If a variable at the current local scope is unset, it will remain so +until it is reset in that scope or until the function returns. +Once the function returns, any instance of the variable at a previous +scope will become visible. +If the unset acts on a variable at a previous scope, any instance of a +variable with that name that had been shadowed will become visible. +.PP +The \fBFUNCNEST\fP variable, if set to a numeric value greater +than 0, defines a maximum function nesting level. Function +invocations that exceed the limit cause the entire command to +abort. +.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. +.PP +Functions may be recursive. +The \fBFUNCNEST\fP variable may be used to limit the depth of the +function call stack and restrict the number of function invocations. +By default, 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, the \fB((\fP compound command, 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 \- + +unary minus and plus +.TP +.B ++\fIid\fP \-\-\fIid\fP +variable pre-increment and pre-decrement +.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 \fIinteger\fP attribute +turned on to be used in an expression. +.PP +Integer constants follow the C language definition, without suffixes or +character constants. +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 the optional \fIbase\fP +is a decimal number between 2 and 64 representing the arithmetic +base, and \fIn\fP is a number in that base. +If \fIbase#\fP is omitted, then base 10 is used. +When specifying \fIn\fP, +if a non-digit is required, +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. +The \fBtest\fP and \fB[\fP commands determine their behavior based on +the number of arguments; see the descriptions of those commands for any +other command-specific actions. +.PP +Expressions are formed from the following unary or binary primaries. +\fBBash\fP handles several filenames specially when they are used in +expressions. +If the operating system on which \fBbash\fP is running provides these +special files, bash will use them; otherwise it will emulate them +internally with this behavior: +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. +.if t .sp 0.5 +.if n .sp 1 +When used with \fB[[\fP, the \fB<\fP and \fB>\fP operators sort +lexicographically using the current locale. +The \fBtest\fP command sorts using ASCII ordering. +.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 \-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 \-N \fIfile\fP +True if \fIfile\fP exists and has been modified since it was last read. +.TP +.B \-O \fIfile\fP +True if \fIfile\fP exists and is owned by the effective user id. +.TP +.B \-S \fIfile\fP +True if \fIfile\fP exists and is a socket. +.TP +\fIfile1\fP \fB\-ef\fP \fIfile2\fP +True if \fIfile1\fP and \fIfile2\fP refer to the same device and +inode numbers. +.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 +.B \-o \fIoptname\fP +True if the 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 \-v \fIvarname\fP +True if the shell variable +.I varname +is set (has been assigned a value). +.TP +.B \-R \fIvarname\fP +True if the shell variable +.I varname +is set and is a name reference. +.TP +.B \-z \fIstring\fP +True if the length of \fIstring\fP is zero. +.TP +\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 +.PD 0 +.TP +\fIstring1\fP \fB=\fP \fIstring2\fP +.PD +True if the strings are equal. \fB=\fP should be used +with the \fBtest\fP command for POSIX conformance. +When used with the \fB[[\fP command, this performs pattern matching as +described above (\fBCompound Commands\fP). +.TP +\fIstring1\fP \fB!=\fP \fIstring2\fP +True if the strings are not equal. +.TP +\fIstring1\fP \fB<\fP \fIstring2\fP +True if \fIstring1\fP sorts before \fIstring2\fP lexicographically. +.TP +\fIstring1\fP \fB>\fP \fIstring2\fP +True if \fIstring1\fP sorts after \fIstring2\fP lexicographically. +.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. +When used with the \fB[[\fP command, +.I Arg1 +and +.I Arg2 +are evaluated as arithmetic expressions (see +.SM +.B "ARITHMETIC EVALUATION" +above). +.PD +.SH "SIMPLE COMMAND EXPANSION" +When a simple command is executed, the shell performs the following +expansions, assignments, and redirections, from left to right, in +the following order. +.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 searches for a defined shell +function named \fBcommand_not_found_handle\fP. +If that function exists, it is invoked in a separate execution environment +with the original command and +the original command's arguments as its arguments, and the function's +exit status becomes the exit status of that subshell. +If that function is not defined, 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: +.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 +.SM +.B PPID +.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. +.if n .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 +Subshells spawned to execute command substitutions inherit the value of +the \fB\-e\fP option from the parent shell. When not in \fIposix mode\fP, +\fBbash\fP clears the \fB\-e\fP option in such subshells. +.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 filename of the command and passed to that +command in its environment. +.SH "EXIT STATUS" +The exit status of an executed command is the value returned by the +\fIwaitpid\fP system call or equivalent function. Exit statuses +fall between 0 and 255, though, as explained below, the shell may +use values above 125 specially. Exit statuses from shell builtins and +compound commands are also limited to this range. Under certain +circumstances, the shell will use special values to indicate specific +failure modes. +.PP +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, +generally invalid options or missing arguments. +.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 operating system kernel'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, if the +user so specifies with \f(CWstty tostop\fP, write to the +terminal. +Background processes which attempt to read from (write to when +\f(CWstty tostop\fP is in effect) the +terminal are sent a +.SM +.B SIGTTIN (SIGTTOU) +signal by the kernel's 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 specification (\fIjobspec\fP). 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 +job whose command name begins with +.BR ce . +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 %\- . +If there is only a single job, \fB%+\fP and \fB%\-\fP can both be used +to refer to that job. +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 (or, if the \fBcheckjobs\fP shell option has +been enabled using the \fBshopt\fP builtin, running), the shell prints a +warning message, and, if the \fBcheckjobs\fP option is enabled, lists the +jobs and their statuses. +The +.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 any stopped +jobs are terminated. +.PP +When the shell is waiting for a job or process using the \fBwait\fP +builtin, and job control is enabled, \fBwait\fP will return when the +job changes state. The \fB\-f\fP option causes \fBwait\fP to wait +until the job or process terminates before returning. +.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 +displays +.SM +.B PS0 +after it reads a command but before executing it. +.B Bash +displays +.SM +.B PS4 +as described above +before tracing each command when the \fB\-x\fP option is enabled. +.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 +.SM +.B $HOME +abbreviated with a tilde +(uses the value of the +.SM +.B PROMPT_DIRTRIM +variable) +.TP +.B \eW +the basename of the current working directory, with +.SM +.B $HOME +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). +This can have unwanted side effects if escaped portions of the string +appear within command substitution or contain characters special to +word expansion. +.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. +Line editing is also used when using the \fB\-e\fP option to the +\fBread\fP builtin. +By default, the line editing commands are similar to those of Emacs. +A vi-style line editing interface is also available. +Line editing can be enabled at any time using the +.B \-o emacs +or +.B \-o vi +options to the +.B set +builtin (see +.SM +.B SHELL BUILTIN COMMANDS +below). +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. +.SS "Readline Notation" +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" +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 . +If that file does not exist or cannot be read, the ultimate default is +.IR /etc/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" +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" +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 +or using the \fBbind\fP builtin command (see +.SM +.B SHELL BUILTIN COMMANDS +below). +.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 blink\-matching\-paren (Off) +If set to \fBOn\fP, readline attempts to briefly move the cursor to an +opening parenthesis when a closing parenthesis is inserted. +.TP +.B colored\-completion\-prefix (Off) +If set to \fBOn\fP, when listing completions, readline displays the +common prefix of the set of possible completions using a different color. +The color definitions are taken from the value of the \fBLS_COLORS\fP +environment variable. +.TP +.B colored\-stats (Off) +If set to \fBOn\fP, readline displays possible completions using different +colors to indicate their file type. +The color definitions are taken from the value of the \fBLS_COLORS\fP +environment variable. +.TP +.B comment\-begin (``#'') +The string that is inserted when the readline +.B insert\-comment +command is executed. +This command is bound to +.B M\-# +in emacs mode and to +.B # +in vi command mode. +.TP +.B completion\-display\-width (\-1) +The number of screen columns used to display possible matches +when performing completion. +The value is ignored if it is less than 0 or greater than the terminal +screen width. +A value of 0 will cause matches to be displayed one per line. +The default value is \-1. +.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\-map\-case (Off) +If set to \fBOn\fP, and \fBcompletion\-ignore\-case\fP is enabled, readline +treats hyphens (\fI\-\fP) and underscores (\fI_\fP) as equivalent when +performing case\-insensitive filename matching and completion. +.TP +.B completion\-prefix\-display\-length (0) +The length in characters of the common prefix of a list of possible +completions that is displayed without modification. When set to a +value greater than zero, common prefixes longer than this value are +replaced with an ellipsis when displaying possible completions. +.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, +readline will ask whether or not the user 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). +The default is \fIOn\fP, but readline will set it to \fIOff\fP if the +locale contains eight-bit characters. +.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 echo\-control\-characters (On) +When set to \fBOn\fP, on operating systems that indicate they support it, +readline echoes a character corresponding to a signal generated from the +keyboard. +.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 emacs\-mode\-string (@) +If the \fIshow\-mode\-in\-prompt\fP variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \e1 and \e2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +.TP +.B enable\-bracketed\-paste (On) +When set to \fBOn\fP, readline will configure the terminal in a way +that will enable it to insert each paste into the editing buffer as a +single string of characters, instead of treating each character as if +it had been read from the keyboard. This can prevent pasted characters +from being interpreted as editing commands. +.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 enable\-meta\-key (On) +When set to \fBOn\fP, readline will try to enable any meta modifier +key the terminal claims to support when it is called. On many terminals, +the meta key is used to send eight-bit characters. +.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 history\-size (unset) +Set the maximum number of history entries saved in the history list. +If set to zero, any existing history entries are deleted and no new entries +are saved. +If set to a value less than zero, the number of history entries is not +limited. +By default, the number of history entries is set to the value of the +\fBHISTSIZE\fP shell variable. +If an attempt is made to set \fIhistory\-size\fP to a non-numeric value, +the maximum number of history entries will be set to 500. +.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. +This setting is automatically enabled for terminals of height 1. +.TP +.B input\-meta (Off) +If set to \fBOn\fP, readline will enable eight-bit input (that is, +it will not strip the eighth 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. +The default is \fIOff\fP, but readline will set it to \fIOn\fP if the +locale contains eight-bit characters. +.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 keyseq\-timeout (500) +Specifies the duration \fIreadline\fP will wait for a character when reading an +ambiguous key sequence (one that can form a complete key sequence using +the input read so far, or can take additional input to complete a longer +key sequence). +If no input is received within the timeout, \fIreadline\fP will use the shorter +but complete key sequence. +The value is specified in milliseconds, so a value of 1000 means that +\fIreadline\fP will wait one second for additional input. +If this variable is set to a value less than or equal to zero, or to a +non-numeric value, \fIreadline\fP will wait until another key is pressed to +decide which key sequence to complete. +.TP +.B mark\-directories (On) +If set to \fBOn\fP, completed directory names have a slash +appended. +.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. +If set to \fBOff\fP, the leading `.' must be +supplied by the user in the filename to be completed. +.TP +.B menu\-complete\-display\-prefix (Off) +If set to \fBOn\fP, menu completion displays the common prefix of the +list of possible completions (which may be empty) before cycling through +the list. +.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. +The default is \fIOff\fP, but readline will set it to \fIOn\fP if the +locale contains eight-bit characters. +.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 revert\-all\-at\-newline (Off) +If set to \fBOn\fP, readline will undo all changes to history lines +before returning when \fBaccept\-line\fP is executed. By default, +history lines may be modified and retain individual undo lists across +calls to \fBreadline\fP. +.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 show\-mode\-in\-prompt (Off) +If set to \fBOn\fP, add a string to the beginning of the prompt +indicating the editing mode: emacs, vi command, or vi insertion. +The mode strings are user-settable (e.g., \fIemacs\-mode\-string\fP). +.TP +.B skip\-completed\-text (Off) +If set to \fBOn\fP, this alters the default completion behavior when +inserting a single match into the line. It's only active when +performing completion in the middle of a word. If enabled, readline +does not insert characters from the completion that match characters +after point in the word being completed, so portions of the word +following the cursor are not duplicated. +.TP +.B vi\-cmd\-mode\-string ((cmd)) +If the \fIshow\-mode\-in\-prompt\fP variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in command mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \e1 and \e2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +.TP +.B vi\-ins\-mode\-string ((ins)) +If the \fIshow\-mode\-in\-prompt\fP variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in insertion mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \e1 and \e2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +.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" +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, after any comparison operator, + extends to the end of the line; +unless otherwise noted, 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 both the 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 \fBversion\fP +The \fBversion\fP test may be used to perform comparisons against +specific readline versions. +The \fBversion\fP expands to the current readline version. +The set of comparison operators includes +.BR = , +(and +.BR == ), +.BR != , +.BR <= , +.BR >= , +.BR < , +and +.BR > . +The version number supplied on the right side of the operator consists +of a major version number, an optional decimal point, and an optional +minor version (e.g., \fB7.1\fP). If the minor version is omitted, it +is assumed to be \fB0\fP. +The operator may be separated from the string \fBversion\fP +and from the version number argument by whitespace. +.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 \fBbash\fP: +.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 +.IP \fIvariable\fP +The \fIvariable\fP construct provides simple equality tests for readline +variables and values. +The permitted comparison operators are \fI=\fP, \fI==\fP, and \fI!=\fP. +The variable name must be separated from the comparison operator by +whitespace; the operator may be separated from the value on the right hand +side by whitespace. +Both string and boolean variables may be tested. Boolean variables must be +tested against the values \fIon\fP and \fIoff\fP. +.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 +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" +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 +.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 shell\-forward\-word +Move forward to the end of the next word. +Words are delimited by non-quoted shell metacharacters. +.TP +.B shell\-backward\-word +Move back to the start of the current or previous word. +Words are delimited by non-quoted shell metacharacters. +.TP +.B previous\-screen\-line +Attempt to move point to the same physical screen column on the previous +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if point is not +greater than the length of the prompt plus the screen width. +.TP +.B next\-screen\-line +Attempt to move point to the same physical screen column on the next +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if the length +of the current Readline line is not greater than the length of the prompt +plus the screen width. +.TP +.B clear\-display (M\-C\-l) +Clear the screen and, if possible, the terminal's scrollback buffer, +then redraw the current line, +leaving the current line at the top of the screen. +.TP +.B clear\-screen (C\-l) +Clear the screen, +then redraw the current line, +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 +.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 history\-substring\-search\-backward +Search backward through the history for the string of characters +between the start of the current line and the current cursor +position (the \fIpoint\fP). +The search string may match anywhere in a history line. +This is a non-incremental search. +.TP +.B history\-substring\-search\-forward +Search forward through the history for the string of characters +between the start of the current line and the point. +The search string may match anywhere in a history line. +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 a numeric argument, behave exactly like \fByank\-nth\-arg\fP. +Successive calls to \fByank\-last\-arg\fP move back through the history +list, inserting the last word (or the word specified by the argument to +the first call) of each line in turn. +Any numeric argument supplied to these successive calls determines +the direction to move through the history. A negative argument switches +the direction through the history (back or forward). +The history expansion facilities are used to extract the last word, +as if the "!$" history expansion had been specified. +.TP +.B shell\-expand\-line (M\-C\-e) +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. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. +.TP +.B edit\-and\-execute\-command (C\-x C\-e) +Invoke an editor on the current command line, and execute the result as shell +commands. +\fBBash\fP attempts to invoke +.SM +.BR $VISUAL , +.SM +.BR $EDITOR , +and \fIemacs\fP as the editor, in that order. +.PD +.SS Commands for Changing Text +.PD 0 +.TP +.B \fIend\-of\-file\fP (usually C\-d) +The character indicating end-of-file as set, for example, by +.if t \f(CWstty\fP. +.if n ``stty''. +If this character is read when there are no characters +on the line, and point is at the beginning of the line, Readline +interprets it as the end of input and returns +.SM +.BR EOF . +.TP +.B delete\-char (C\-d) +Delete the character at point. +If this function is bound to the +same character as the tty \fBEOF\fP character, as \fBC\-d\fP +commonly is, see above for the effects. +.TP +.B backward\-delete\-char (Rubout) +Delete the character behind the cursor. When given a numeric argument, +save the deleted text on the kill ring. +.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 +.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 shell\-kill\-word +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 \fBshell\-forward\-word\fP. +.TP +.B shell\-backward\-kill\-word +Kill the word behind point. +Word boundaries are the same as those used by \fBshell\-backward\-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 +.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 nor 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 +.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 menu\-complete\-backward +Identical to \fBmenu\-complete\fP, but moves backward through the list +of possible completions, as if \fBmenu\-complete\fP had been given a +negative argument. This command 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 dabbrev\-expand +Attempt menu 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 +.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. +.TP +.B print\-last\-kbd\-macro () +Print the last keyboard macro defined in a format suitable for the +\fIinputrc\fP file. +.PD +.SS Miscellaneous +.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\-lowercase\-version (M\-A, M\-B, M\-\fIx\fP, ...) +If the metafied character \fIx\fP is uppercase, run the command +that is bound to the corresponding metafied lowercase character. +The behavior is undefined if \fIx\fP is already lowercase. +.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 skip\-csi\-sequence +Read enough characters to consume a multi-key sequence such as those +defined for keys like Home and End. Such sequences begin with a +Control Sequence Indicator (CSI), usually ESC\-[. If this sequence is +bound to "\e[", keys producing such sequences will have no effect +unless explicitly bound to a readline command, instead of inserting +stray characters into the editing buffer. This is unbound by default, +but usually bound to ESC\-[. +.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 filenames for possible completions. +.TP +.B glob\-expand\-word (C\-x *) +The word before point is treated as a pattern for pathname expansion, +and the list of matching filenames 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 +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 the command word is the empty string (completion attempted at the +beginning of an empty line), any compspec defined with +the \fB\-E\fP option to \fBcomplete\fP is used. +If a compspec has been defined for that command, the +compspec is used to generate the list of possible completions for the word. +If the command word is a full pathname, a compspec for the full +pathname is searched for first. +If no compspec is found for the full pathname, an attempt is made to +find a compspec for the portion following the final slash. +If those searches do not result in a compspec, any compspec defined with +the \fB\-D\fP option to \fBcomplete\fP is used as the default. +If there is no default compspec, \fBbash\fP attempts alias expansion +on the command word as a final resort, and attempts to find a compspec +for the command word from any successful expansion. +.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 pathname 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 +.BR COMP_LINE , +.SM +.BR COMP_POINT , +.SM +.BR COMP_KEY , +and +.SM +.B COMP_TYPE +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 (\fB$1\fP) is the name of the command whose arguments are +being completed, +the second argument (\fB$2\fP) is the word being completed, +and the third argument (\fB$3\fP) is the word preceding the word being +completed on the current command line. +No filtering of the generated completions against the word being completed +is performed; the function or command has complete freedom in generating +the matches. +.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, one per array element. +.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. +If the +.B nocasematch +shell option is enabled, the match is performed without regard to the case +of alphabetic characters. +.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. +.PP +There is some support for dynamically modifying completions. This is +most useful when used in combination with a default completion specified +with \fBcomplete \-D\fP. +It's possible for shell functions executed as completion +handlers to indicate that completion should be retried by returning an +exit status of 124. If a shell function returns 124, and changes +the compspec associated with the command on which completion is being +attempted (supplied as the first argument when the function is executed), +programmable completion restarts from the beginning, with an +attempt to find a new compspec for that command. This allows a set of +completions to be built dynamically as completion is attempted, rather than +being loaded all at once. +.PP +For instance, assuming that there is a library of compspecs, each kept in a +file corresponding to the name of the command, the following default +completion function would load completions dynamically: +.PP +\f(CW_completion_loader() +.br +{ +.br + . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 +.br +} +.br +complete -D -F _completion_loader -o bashdefault -o default +.br +\fP +.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 +.SM +.B HISTSIZE +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 . +If \fBHISTFILESIZE\fP is unset, or set to null, a non-numeric value, +or a numeric value less than zero, the history file is not truncated. +When the history file is read, +lines beginning with the history comment character followed immediately +by a digit are interpreted as timestamps for the following history line. +These timestamps are optionally displayed depending on the value of the +.SM +.B HISTTIMEFORMAT +variable. +When a shell with history enabled 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. +If the +.SM +.B HISTTIMEFORMAT +variable is set, time stamps are written to the history file, marked +with the history comment character, so +they may be preserved across shell sessions. +This uses the history comment character to distinguish timestamps from +other history lines. +After saving the history, the history file is truncated +to contain no more than +.SM +.B HISTFILESIZE +lines. If +.SM +.B HISTFILESIZE +is unset, or set to null, a non-numeric value, +or a numeric value less than zero, the history file is not truncated. +.PP +The builtin command +.B fc +(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" +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, and is performed +on each line individually without taking quoting on previous lines into +account. +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, but the history expansion character is +also treated as quoted if it immediately precedes the closing double quote +in a double-quoted string. +.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 below), 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" ). +The shell uses +the history comment character to mark history timestamps when +writing the history file. +.SS Event Designators +An event designator is a reference to a command line entry in the +history list. +Unless the reference is absolute, events are relative to the current +position 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 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 preceding the current position in the +history list starting with +.IR string . +.TP +.B !?\fIstring\fR\fB[?]\fR +Refer to the most recent command preceding the current position in the +history list containing +.IR string . +The trailing \fB?\fP may be omitted if +.I string +is followed immediately by a newline. +If \fIstring\fP is missing, the string from the most recent search is used; +it is an error if there is no previous search string. +.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 previous command, replacing +.I string1 +with +.IR string2 . +Equivalent to +``!!:s\d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u'' +(see \fBModifiers\fP below). +.TP +.B !# +The entire command line typed so far. +.PD +.SS Word Designators +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 word. This is usually the last argument, but will expand to the +zeroth word if there is only one word in the line. +.TP +.B % +The first word matched by the most recent `?\fIstring\fR?' search, +if the search string begins with a character that is part of a word. +.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. +If \fBx\fP is missing, it defaults to 0. +.PD +.PP +If a word designator is supplied without an event specification, the +previous command is used as the event. +.SS Modifiers +After the optional word designator, there may appear a sequence of +one or more of the following modifiers, each preceded by a `:'. +These modify, or edit, the word or words selected from the history event. +.PP +.PD 0 +.TP +.B h +Remove a trailing filename component, leaving only the head. +.TP +.B t +Remove all leading filename 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. +The \fBq\fP and \fBx\fP modifiers are mutually exclusive; the last one +supplied is used. +.TP +.B s/\fIold\fP/\fInew\fP/ +Substitute +.I new +for the first occurrence of +.I old +in the event line. +Any character may be used as the delimiter 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. +If +.I new +is null, each matching +.I old +is deleted. +.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' or `\fB&\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. +The \fB:\fP, \fBtrue\fP, \fBfalse\fP, and \fBtest\fP/\fB[\fP builtins +do not accept options and do not treat \fB\-\-\fP specially. +The \fBexit\fP, \fBlogout\fP, \fBreturn\fP, +\fBbreak\fP, \fBcontinue\fP, \fBlet\fP, +and \fBshift\fP builtins accept and process arguments beginning with +\fB\-\fP without requiring \fB\-\-\fP. +Other builtins that accept arguments but are not specified as accepting +options interpret arguments beginning with \fB\-\fP as invalid options and +require \fB\-\-\fP to prevent this interpretation. +.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. +The return status is zero. +.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, filenames 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. +If the \fB\-T\fP option is enabled, \fBsource\fP inherits any trap on +\fBDEBUG\fP; if it is not, any \fBDEBUG\fP trap string is saved and +restored around the call to \fBsource\fP, and \fBsource\fP unsets the +\fBDEBUG\fP trap while it executes. +If \fB\-T\fP is not set, and the sourced file changes +the \fBDEBUG\fP trap, the new value is retained when \fBsource\fP completes. +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 +.I jobspec +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\-lpsvPSVX\fP] +.PD 0 +.TP +\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-q\fP \fIfunction\fP] [\fB\-u\fP \fIfunction\fP] [\fB\-r\fP \fIkeyseq\fP] +.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 [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\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 (\fIvi\-move\fP is also +a synonym); \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 \-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 \-v +Display \fBreadline\fP variable names and values in such a way that they +can be re-read. +.TP +.B \-V +List current \fBreadline\fP variable names and values. +.TP +.B \-f \fIfilename\fP +Read key bindings from \fIfilename\fP. +.TP +.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. +When \fIshell\-command\fP is executed, the shell sets the +.SM +.B READLINE_LINE +variable to the contents of the \fBreadline\fP line buffer and the +.SM +.B READLINE_POINT +and +.SM +.B READLINE_MARK +variables to the current location of the insertion point and the saved +insertion point (the mark), respectively. +If the executed command changes the value of any of +.SM +.BR READLINE_LINE , +.SM +.BR READLINE_POINT , +or +.SM +.BR READLINE_MARK , +those new values will be reflected in the editing state. +.TP +.B \-X +List all key sequences bound to shell commands and the associated commands +in a format that can be reused as input. +.PD +.PP +The return value is 0 unless an unrecognized option is given or an +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 \fIn\fP is not greater than or equal to 1. +.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 +\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 +\fBcd\fP [\fB\-L\fP|[\fB\-P\fP [\fB\-e\fP]] [\-@]] [\fIdir\fP] +Change the current directory to \fIdir\fP. +if \fIdir\fP is not supplied, the value of the +.SM +.B HOME +shell variable is the default. +Any additional arguments following \fIdir\fP are ignored. +The variable +.SM +.B CDPATH +defines the search path for the directory containing +.IR dir : +each directory name in +.SM +.B CDPATH +is searched for \fIdir\fP. +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 causes \fBcd\fP to use the physical directory structure +by resolving symbolic links while traversing \fIdir\fP and +before processing instances of \fI..\fP in \fIdir\fP (see also the +.B \-P +option to the +.B set +builtin command); the +.B \-L +option forces symbolic links to be followed by resolving the link +after processing instances of \fI..\fP in \fIdir\fP. +If \fI..\fP appears in \fIdir\fP, it is processed by removing the +immediately previous pathname component from \fIdir\fP, back to a slash +or the beginning of \fIdir\fP. +If the +.B \-e +option is supplied with +.BR \-P , +and the current working directory cannot be successfully determined +after a successful directory change, \fBcd\fP will return an unsuccessful +status. +On systems that support it, the \fB\-@\fP option presents the extended +attributes associated with a file as a directory. +An argument of +.B \- +is converted to +.SM +.B $OLDPWD +before the directory change is attempted. +If a non-empty directory name from +.SM +.B CDPATH +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 +\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 +.SM +.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 filename +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\-DEI\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] +.br +[\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] [\fB\-X\fP \fIfilterpat\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] \fIname\fP [\fIname ...\fP] +.PD 0 +.TP +\fBcomplete\fP \fB\-pr\fP [\fB\-DEI\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. +The \fB\-D\fP option indicates that other supplied options and actions should +apply to the ``default'' command completion; that is, completion attempted +on a command for which no completion has previously been defined. +The \fB\-E\fP option indicates that other supplied options and actions should +apply to ``empty'' command completion; that is, completion attempted on a +blank line. +The \fB\-I\fP option indicates that other supplied options and actions should +apply to completion on the initial non-assignment word on the line, or after +a command delimiter such as \fB;\fP or \fB|\fP, which is usually command +name completion. +If multiple options are supplied, the \fB\-D\fP option takes precedence +over \fB\-E\fP, and both take precedence over \fB\-I\fP. +If any of \fB\-D\fP, \fB\-E\fP, or \fB\-I\fP are supplied, any other +\fIname\fP arguments are ignored; these completions only apply to the case +specified by the option. +.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, +quoting special characters, or suppressing trailing spaces). +Intended to be used with shell functions. +.TP 8 +.B noquote +Tell readline not to quote the completed words if they are filenames +(quoting filenames is the default). +.TP 8 +.B nosort +Tell readline not to sort the list of possible completions alphabetically. +.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\-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 the function is executed, +the first argument (\fB$1\fP) is the name of the command whose arguments are +being completed, +the second argument (\fB$2\fP) is the word being completed, +and the third argument (\fB$3\fP) is the word preceding the word being +completed on the current command line. +When it finishes, the possible completions are retrieved from the value +of the +.SM +.B COMPREPLY +array variable. +.TP 8 +\fB\-G\fP \fIglobpat\fP +The pathname expansion pattern \fIglobpat\fP is expanded to generate +the possible completions. +.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. +.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. +Shell quoting is honored within \fIwordlist\fP, +in order to provide a +mechanism for the words to contain shell metacharacters or characters +in the value of +.SM +.BR IFS . +The possible completions are the members of the resultant list which +match the word being completed. +.TP 8 +\fB\-X\fP \fIfilterpat\fP +\fIfilterpat\fP is a pattern as used for pathname 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. +.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 +\fBcompopt\fP [\fB\-o\fP \fIoption\fP] [\fB\-DEI\fP] [\fB+o\fP \fIoption\fP] [\fIname\fP] +Modify completion options for each \fIname\fP according to the +\fIoption\fPs, or for the +currently-executing completion if no \fIname\fPs are supplied. +If no \fIoption\fPs are given, display the completion options for each +\fIname\fP or the current completion. +The possible values of \fIoption\fP are those valid for the \fBcomplete\fP +builtin described above. +The \fB\-D\fP option indicates that other supplied options should +apply to the ``default'' command completion; that is, completion attempted +on a command for which no completion has previously been defined. +The \fB\-E\fP option indicates that other supplied options should +apply to ``empty'' command completion; that is, completion attempted on a +blank line. +The \fB\-I\fP option indicates that other supplied options should +apply to completion on the initial non-assignment word on the line, +or after a command delimiter such as \fB;\fP or \fB|\fP, which is usually +command name completion. +.sp 1 +The return value is true unless an invalid option is supplied, an attempt +is made to modify the options for a \fIname\fP for which no completion +specification exists, or an output error occurs. +.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 \fIn\fP is not greater than or equal to 1. +.TP +\fBdeclare\fP [\fB\-aAfFgiIlnrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...] +.PD 0 +.TP +\fBtypeset\fP [\fB\-aAfFgiIlnrtux\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 with \fIname\fP arguments, additional options, +other than \fB\-f\fP and \fB\-F\fP, are ignored. +When +.B \-p +is supplied without \fIname\fP arguments, it will display the attributes +and values of all variables having the attributes specified by the +additional options. +If no other options are supplied with \fB\-p\fP, \fBdeclare\fP will display +the attributes and values of all shell variables. The \fB\-f\fP option +will restrict the display to shell functions. +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 each \fIname\fP +is defined are displayed as well. The +.B \-F +option implies +.BR \-f . +The +.B \-g +option forces variables to be created or modified at the global scope, +even when \fBdeclare\fP is executed in a shell function. +It is ignored in all other cases. +The +.B \-I +option causes local variables to inherit the attributes +(except the \fInameref\fP attribute) +and value of any existing variable with the same +\fIname\fP at a surrounding scope. +If there is no existing variable, the local variable is initially unset. +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 indexed array variable (see +.B Arrays +above). +.TP +.B \-A +Each \fIname\fP is an associative 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" +above) is performed when the variable is assigned a value. +.TP +.B \-l +When the variable is assigned a value, all upper-case characters are +converted to lower-case. +The upper-case attribute is disabled. +.TP +.B \-n +Give each \fIname\fP the \fInameref\fP attribute, making +it a name reference to another variable. +That other variable is defined by the value of \fIname\fP. +All references, assignments, and attribute modifications +to \fIname\fP, except those using or changing the +\fB\-n\fP attribute itself, are performed on the variable referenced by +\fIname\fP's value. +The nameref attribute cannot be applied to array variables. +.TP +.B \-r +Make \fIname\fPs readonly. These names cannot then be assigned values +by subsequent assignment statements or unset. +.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 \-u +When the variable is assigned a value, all lower-case characters are +converted to upper-case. +The lower-case attribute is disabled. +.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 exceptions that \fB+a\fP and \fB+A\fP +may not be used to destroy array variables and \fB+r\fP will not +remove the readonly attribute. +When used in a function, +.B declare +and +.B typeset +make each +\fIname\fP local, as with the +.B local +command, +unless the \fB\-g\fP option is supplied. +If a variable name is followed by =\fIvalue\fP, the value of +the variable is set to \fIvalue\fP. +When using \fB\-a\fP or \fB\-A\fP and the compound assignment syntax to +create array variables, additional attributes do not take effect until +subsequent assignments. +The return value is 0 unless an invalid option is encountered, +an attempt is made to define a function using +.if n ``\-f foo=bar'', +.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. +The current directory is always the first directory in the stack. +.RS +.PD 0 +.TP +.B \-c +Clears the directory stack by deleting all of the entries. +.TP +.B \-l +Produces a listing using full pathnames; +the default listing format uses a tilde to denote the home directory. +.TP +.B \-p +Print the directory stack with one entry per line. +.TP +.B \-v +Print the directory stack with one entry per line, +prefixing each entry with its index in the stack. +.TP +\fB+\fP\fIn\fP +Displays the \fIn\fPth entry counting from the left of the list +shown by +.B dirs +when invoked without options, starting with zero. +.TP +\fB\-\fP\fIn\fP +Displays the \fIn\fPth entry counting from the right of the list +shown by +.B dirs +when invoked without options, starting with zero. +.PD +.PP +The return value is 0 unless an +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 ... | \fIpid\fP ... ] +Without options, remove each +.I jobspec +from the table of active jobs. +If +.I jobspec +is not present, and neither the \fB\-a\fP nor the \fB\-r\fP option +is supplied, the \fIcurrent job\fP is used. +If the \fB\-h\fP option is given, each +.I jobspec +is not removed from the table, but is marked so that +.SM +.B SIGHUP +is not sent to the job if the shell receives a +.SM +.BR SIGHUP . +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 0 unless a write error occurs. +If \fB\-n\fP is specified, the trailing newline is +suppressed. If the \fB\-e\fP option is given, interpretation of +the following backslash-escaped characters is enabled. The +.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 further output +.TP +.B \ee +.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 \ex\fIHH\fP +the eight-bit character whose value is the hexadecimal value \fIHH\fP +(one or two hex digits) +.TP +.B \eu\fIHHHH\fP +the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +\fIHHHH\fP (one to four hex digits) +.TP +.B \eU\fIHHHHHHHH\fP +the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +\fIHHHHHHHH\fP (one to eight hex digits) +.PD +.RE +.TP +\fBenable\fP [\fB\-a\fP] [\fB\-dnps\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 argument 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 +.B execfail +shell option +is enabled. In that case, it returns failure. +An interactive shell returns failure if the file cannot be executed. +A subshell exits unconditionally if \fBexec\fP fails. +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 names of all exported variables 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\-lnr\fP] [\fIfirst\fP] [\fIlast\fP] +.PD 0 +.TP +\fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP] +.PD +The first form selects a range of commands from +.I first +to +.I last +from the history list and displays or edits and re-executes them. +.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). +When listing, a \fIfirst\fP or \fIlast\fP of +0 is equivalent to \-1 and \-0 is equivalent to the current +command (usually the \fBfc\fP command); otherwise 0 is equivalent to \-1 +and \-0 is invalid. +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. +\fICommand\fP is interpreted the same as \fIfirst\fP above. +A useful alias to use with this is +.if n ``r="fc -s"'', +.if t \f(CWr='fc \-s'\fP, +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 [\fIarg ...\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. +.SM +.B OPTIND +is set to the index of the first non-option argument, +and \fIname\fP is set to ?. +.sp 1 +.B getopts +normally parses the positional parameters, but if more arguments are +supplied as +.I arg +values, +.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] +Each time \fBhash\fP is invoked, +the full pathname of the command +.I name +is determined by searching +the directories in +.B $PATH +and remembered. Any previously-remembered pathname is discarded. +If the +.B \-p +option is supplied, no path search is performed, and +.I filename +is used as the full filename 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\-dms\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. +.RS +.PD 0 +.TP +.B \-d +Display a short description of each \fIpattern\fP +.TP +.B \-m +Display the description of each \fIpattern\fP in a manpage-like format +.TP +.B \-s +Display only a short usage synopsis for each \fIpattern\fP +.PD +.PP +The return status is 0 unless no command matches +.IR pattern . +.RE +.TP +\fBhistory [\fIn\fP] +.PD 0 +.TP +\fBhistory\fP \fB\-c\fP +.TP +\fBhistory \-d\fP \fIoffset\fP +.TP +\fBhistory \-d\fP \fIstart\fP\-\fIend\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 +.SM +.B HISTTIMEFORMAT +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. +If \fIoffset\fP is negative, it is interpreted as relative to one greater +than the last history position, so negative indices count back from the +end of the history, and an index of \-1 refers to the current +\fBhistory -d\fP command. +.TP +\fB\-d\fP \fIstart\fP\-\fIend\fP +Delete the history entries between positions \fIstart\fP and \fIend\fP, +inclusive. Positive and negative values for \fIstart\fP and \fIend\fP +are interpreted as described above. +.TP +.B \-a +Append the ``new'' history lines to the history file. +These are history lines entered since the beginning of the current +\fBbash\fP session, but not already appended 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 append them to the current history list. +.TP +.B \-w +Write the current history list 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 +.SM +.B HISTTIMEFORMAT +variable is set, the time stamp information +associated with each history entry is written to the history file, +marked with the history comment character. +When the history file is read, lines beginning with the history +comment character followed immediately by a digit are interpreted +as timestamps for the following history entry. +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 \-n +Display information only about jobs that have changed status since +the user was last notified of their status. +.TP +.B \-p +List only the process ID of the job's process group +leader. +.TP +.B \-r +Display only running jobs. +.TP +.B \-s +Display only 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|\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. +The +.B \-L +option is equivalent to \fB\-l\fP. +.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 +.B "ARITHMETIC EVALUATION" +above). +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. +If \fIname\fP is \-, the set of shell options is made local to the function +in which \fBlocal\fP is invoked: shell options changed using the +\fBset\fP builtin inside the function are restored to their original values +when the function returns. +The restore is effected as if a series of \fBset\fP commands were executed +to restore the values that were in place before the function. +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 +\fBmapfile\fP [\fB\-d\fP \fIdelim\fP] [\fB\-n\fP \fIcount\fP] [\fB\-O\fP \fIorigin\fP] [\fB\-s\fP \fIcount\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP] +.PD 0 +.TP +\fBreadarray\fP [\fB\-d\fP \fIdelim\fP] [\fB\-n\fP \fIcount\fP] [\fB\-O\fP \fIorigin\fP] [\fB\-s\fP \fIcount\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP] +.PD +Read lines from the standard input into the indexed array variable +.IR array , +or from file descriptor +.I fd +if the +.B \-u +option is supplied. +The variable +.SM +.B MAPFILE +is the default \fIarray\fP. +Options, if supplied, have the following meanings: +.RS +.PD 0 +.TP +.B \-d +The first character of \fIdelim\fP is used to terminate each input line, +rather than newline. +If \fIdelim\fP is the empty string, \fBmapfile\fP will terminate a line +when it reads a NUL character. +.TP +.B \-n +Copy at most +.I count +lines. If \fIcount\fP is 0, all lines are copied. +.TP +.B \-O +Begin assigning to +.I array +at index +.IR origin . +The default index is 0. +.TP +.B \-s +Discard the first \fIcount\fP lines read. +.TP +.B \-t +Remove a trailing \fIdelim\fP (default newline) from each line read. +.TP +.B \-u +Read lines from file descriptor \fIfd\fP instead of the standard input. +.TP +.B \-C +Evaluate +.I callback +each time \fIquantum\fP lines are read. The \fB\-c\fP option specifies +.IR quantum . +.TP +.B \-c +Specify the number of lines read between each call to +.IR callback . +.PD +.PP +If +.B \-C +is specified without +.BR \-c , +the default quantum is 5000. +When \fIcallback\fP is evaluated, it is supplied the index of the next +array element to be assigned and the line to be assigned to that element +as additional arguments. +\fIcallback\fP is evaluated after the line is read but before the +array element is assigned. +.PP +If not supplied with an explicit origin, \fBmapfile\fP will clear \fIarray\fP +before assigning to it. +.PP +\fBmapfile\fP returns successfully unless an invalid option or option +argument is supplied, \fIarray\fP is invalid or unassignable, or if +\fIarray\fP is not an indexed array. +.RE +.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 +.B \-n +Suppresses the normal change of directory when removing directories +from the stack, so that only the stack is manipulated. +.TP +\fB+\fP\fIn\fP +Removes the \fIn\fPth entry counting from the left of the list +shown by +.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. +.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 \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 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) format specifications, +\fBprintf\fP interprets the following extensions: +.RS +.PD 0 +.TP +.B %b +causes +\fBprintf\fP to expand backslash escape sequences in the corresponding +\fIargument\fP +in the same way as \fBecho \-e\fP. +.TP +.B %q +causes \fBprintf\fP to output the corresponding +\fIargument\fP in a format that can be reused as shell input. +.TP +.B %(\fIdatefmt\fP)T +causes \fBprintf\fP to output the date-time string resulting from using +\fIdatefmt\fP as a format string for \fIstrftime\fP(3). +The corresponding \fIargument\fP is an integer representing the number of +seconds since the epoch. +Two special argument values may be used: \-1 represents the current +time, and \-2 represents the time the shell was invoked. +If no argument is specified, conversion behaves as if \-1 had been given. +This is an exception to the usual \fBprintf\fP behavior. +.PD +.PP +The %b, %q, and %T directives all use the field width and precision +arguments from the format specification and write that many bytes from +(or use that wide a field for) the expanded argument, which usually +contains more characters than the original. +.PP +Arguments to non-string format specifiers are treated as C constants, +except that a leading plus or minus sign is allowed, and if the leading +character is a single or double quote, the value is the ASCII value of +the following character. +.PP +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. +.RE +.TP +\fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP] +.PD 0 +.TP +\fBpushd\fP [\fB\-n\fP] [\fIdir\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, \fBpushd\fP 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 +.B \-n +Suppresses the normal change of directory when rotating or +adding directories to the stack, so that only the stack is manipulated. +.TP +\fB+\fP\fIn\fP +Rotates the stack so that the \fIn\fPth directory +(counting from the left of the list shown by +.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 +.I dir +Adds +.I dir +to the directory stack at the top, making it the +new current working directory as if it had been supplied as the argument +to the \fBcd\fP builtin. +.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\-a\fP \fIaname\fP] [\fB\-d\fP \fIdelim\fP] [\fB\-i\fP \fItext\fP] [\fB\-n\fP \fInchars\fP] [\fB\-N\fP \fInchars\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-u\fP \fIfd\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, +split into words as described above under \fBWord Splitting\fP, +and the first word +is assigned to the first +.IR name , +the second word to the second +.IR name , +and so on. +If there are more words than names, the remaining words and their +intervening delimiters are 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 using the same rules the shell +uses for expansion (described above under \fBWord Splitting\fP). +The backslash character (\fB\e\fP) may be used to remove any special +meaning for the next character read and for line continuation. +Options, if supplied, have the following meanings: +.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. +If \fIdelim\fP is the empty string, \fBread\fP will terminate a line +when it reads a NUL character. +.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. +Readline uses the current (or default, if line editing was not previously +active) editing settings, but uses Readline's default filename completion. +.TP +.B \-i \fItext\fP +If +.B readline +is being used to read the line, \fItext\fP is placed into the editing +buffer before editing begins. +.TP +.B \-n \fInchars\fP +\fBread\fP returns after reading \fInchars\fP characters rather than +waiting for a complete line of input, but honors a delimiter if fewer +than \fInchars\fP characters are read before the delimiter. +.TP +.B \-N \fInchars\fP +\fBread\fP returns after reading exactly \fInchars\fP characters rather +than waiting for a complete line of input, unless EOF is encountered or +\fBread\fP times out. +Delimiter characters encountered in the input are +not treated specially and do not cause \fBread\fP to return until +\fInchars\fP characters are read. +The result is not split on the characters in \fBIFS\fP; the intent is +that the variable is assigned exactly the characters read +(with the exception of backslash; see the \fB\-r\fP option below). +.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 then 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 (or a specified number of characters) +is not read within \fItimeout\fP seconds. +\fItimeout\fP may be a decimal number with a fractional portion following +the decimal point. +This option is only effective if \fBread\fP is reading input from a +terminal, pipe, or other special file; it has no effect when reading +from regular files. +If \fBread\fP times out, \fBread\fP saves any partial input read into +the specified variable \fIname\fP. +If \fItimeout\fP is 0, \fBread\fP returns immediately, without trying to +read any data. The exit status is 0 if input is available on +the specified file descriptor, non-zero otherwise. +The exit status is greater than 128 if the timeout is exceeded. +.TP +.B \-u \fIfd\fP +Read input from file descriptor \fIfd\fP. +.PD +.PP +If no +.I names +are supplied, the line read, +without the ending delimiter but otherwise unmodified, +is assigned to the variable +.SM +.BR REPLY . +The exit status is zero, unless end-of-file is encountered, \fBread\fP +times out (in which case the status is greater than 128), +a variable assignment error (such as assigning to a readonly variable) occurs, +or an invalid file descriptor is supplied as the argument to \fB\-u\fP. +.RE +.TP +\fBreadonly\fP [\fB\-aAf\fP] [\fB\-p\fP] [\fIname\fP[=\fIword\fP] ...] +.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 indexed arrays; the +.B \-A +option restricts the variables to associative arrays. +If both options are supplied, +.B \-A +takes precedence. +If no +.I name +arguments are given, or if the +.B \-p +option is supplied, a list of all readonly names is printed. +The other options may be used to restrict the output to a subset of +the set of readonly names. +The +.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 stop executing and return the value specified by +.I n +to its caller. +If +.I n +is omitted, the return status is that of the last command +executed in the function body. +If \fBreturn\fP is executed by a trap handler, the last command used to +determine the status is the last command executed before the trap handler. +If \fBreturn\fP is executed during a \fBDEBUG\fP trap, the last command +used to determine the status is the last command executed by the trap +handler before \fBreturn\fP was invoked. +If +.B return +is used outside a function, +but during execution of a script by the +.B . +(\fBsource\fP) command, it causes the shell to stop executing +that script and return either +.I n +or the exit status of the last command executed within the +script as the exit status of the script. +If \fIn\fP is supplied, the return value is its least significant +8 bits. +The return status is non-zero if +.B return +is supplied a non-numeric argument, or +is used outside a +function and not during execution of a script by \fB.\fP\^ or \fBsource\fP. +Any command associated with the \fBRETURN\fP trap is executed +before execution resumes after the function or script. +.TP +\fBset\fP [\fB\-\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIoption\-name\fP] [\fIarg\fP ...] +.PD 0 +.TP +\fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIoption\-name\fP] [\fIarg\fP ...] +.PD +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 option processing 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 +Each variable or function that is created or modified is given the +export attribute and marked 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 +\fIpipeline\fP (which may consist of a single \fIsimple command\fP), +a \fIlist\fP, +or a \fIcompound command\fP +(see +.SM +.B SHELL GRAMMAR +above), exits with a non-zero status. +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 following the +.B if +or +.B elif +reserved words, part of any command executed in a +.B && +or +.B || +list except the command following the final \fB&&\fP or \fB||\fP, +any command in a pipeline but the last, +or if the command's return value is +being inverted with +.BR ! . +If a compound command other than a subshell +returns a non-zero status because a command failed +while \fB\-e\fP was being ignored, the shell does not exit. +A trap on \fBERR\fP, if set, is executed before the shell exits. +This option applies to the shell environment and each subshell environment +separately (see +.SM +.B "COMMAND EXECUTION ENVIRONMENT" +above), and may cause +subshells to exit before executing all the commands in the subshell. +.if t .sp 0.5 +.if n .sp 1 +If a compound command or shell function executes in a context +where \fB\-e\fP is being ignored, +none of the commands executed within the compound command or function body +will be affected by the \fB\-e\fP setting, even if \fB\-e\fP is set +and a command returns a failure status. +If a compound command or shell function sets \fB\-e\fP while executing in +a context where \fB\-e\fP is ignored, that setting will not have any +effect until the compound command or the command containing the function +call completes. +.TP 8 +.B \-f +Disable pathname expansion. +.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). +All processes run in a separate process group. +When a background job completes, the shell prints a line +containing its exit status. +.TP 8 +.B \-n +Read commands but do not execute them. +This may be used to 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. +This also affects the editing interface used for \fBread \-e\fP. +.TP 8 +.B errexit +Same as +.BR \-e . +.TP 8 +.B errtrace +Same as +.BR \-E . +.TP 8 +.B functrace +Same as +.BR \-T . +.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 . +.TP 8 +.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). +See +.SM +.B "SEE ALSO" +below for a reference to a document that details how posix mode affects +bash's behavior. +.TP 8 +.B privileged +Same as +.BR \-p . +.TP 8 +.B verbose +Same as +.BR \-v . +.TP 8 +.B vi +Use a vi-style command line editing interface. +This also affects the editing interface used for \fBread \-e\fP. +.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 +.BR SHELLOPTS , +.SM +.BR BASHOPTS , +.SM +.BR CDPATH , +and +.SM +.B GLOBIGNORE +variables, if they appear in the environment, are 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 and parameters other than the special +parameters "@" and "*" as an error when performing +parameter expansion. If expansion is attempted on an +unset variable or parameter, 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 resolve 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 settings controlling optional shell behavior. +The settings can be either those listed below, or, if the +.B \-o +option is used, those available with the +.B \-o +option to the \fBset\fP builtin command. +With no options, or with the +.B \-p +option, a list of all settable options is displayed, with +an indication of whether or not each is set; +if \fIoptnames\fP are supplied, the output is restricted to those options. +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, +.B shopt +shows only those options which are set or unset, respectively. +Unless otherwise noted, the \fBshopt\fP options are disabled (unset) +by default. +.PP +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 assoc_expand_once +If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation, while executing +builtins that can perform variable assignments, +and while executing builtins that perform array dereferencing. +.TP 8 +.B autocd +If set, a command name that is the name of a directory is executed as if +it were the argument to the \fBcd\fP command. +This option is only used by interactive shells. +.TP 8 +.B cdable_vars +If set, an argument to the +.B cd +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 filename 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 checkjobs +If set, \fBbash\fP lists the status of any stopped and running jobs before +exiting an interactive shell. If any jobs are running, this causes +the exit to be deferred until a second exit is attempted without an +intervening command (see +.SM +.B "JOB CONTROL" +above). The shell always +postpones exiting if any jobs are stopped. +.TP 8 +.B checkwinsize +If set, \fBbash\fP checks the window size after each external (non-builtin) +command and, if necessary, updates the values of +.SM +.B LINES +and +.SM +.BR COLUMNS . +This option is enabled by default. +.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. +This option is enabled by default, but only has an effect if command +history is enabled, as described above under +.SM +.BR HISTORY . +.PD 0 +.TP 8 +.B compat31 +.TP 8 +.B compat32 +.TP 8 +.B compat40 +.TP 8 +.B compat41 +.TP 8 +.B compat42 +.TP 8 +.B compat43 +.TP 8 +.B compat44 +.PD +These control aspects of the shell's compatibility mode +(see +.SM +.B "SHELL COMPATIBILITY MODE" +below). +.TP 8 +.B complete_fullquote +If set, +.B bash +quotes all shell metacharacters in filenames and directory names when +performing completion. +If not set, +.B bash +removes metacharacters such as the dollar sign from the set of +characters that will be quoted in completed filenames +when these metacharacters appear in shell variable references in words to be +completed. +This means that dollar signs in variable names that expand to directories +will not be quoted; +however, any dollar signs appearing in filenames will not be quoted, either. +This is active only when bash is using backslashes to quote completed +filenames. +This variable is set by default, which is the default bash behavior in +versions through 4.2. +.TP 8 +.B direxpand +If set, +.B bash +replaces directory names with the results of word expansion when performing +filename completion. This changes the contents of the readline editing +buffer. +If not set, +.B bash +attempts to preserve what the user typed. +.TP 8 +.B dirspell +If set, +.B bash +attempts spelling correction on directory names during word completion +if the directory name initially supplied does not exist. +.TP 8 +.B dotglob +If set, +.B bash +includes filenames beginning with a `.' in the results of pathname +expansion. +The filenames +.B ``.'' +and +.B ``..'' +must always be matched explicitly, even if +.B dotglob +is set. +.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 at shell invocation, +or in a shell startup file, +arrange to execute the debugger profile +before the shell starts, identical to the \fB\-\-debugger\fP option. +If set after invocation, 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), the shell simulates +a call to \fBreturn\fP. +.TP +.B 4. +.SM +.B BASH_ARGC +and +.SM +.B BASH_ARGV +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 +\fBERR\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 +.SM +.B FIGNORE +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 +.SM +.BR FIGNORE . +This option is enabled by default. +.TP 8 +.B globasciiranges +If set, range expressions used in pattern matching bracket expressions (see +.SM +.B Pattern Matching +above) behave as if in the traditional C locale when performing +comparisons. That is, the current locale's collating sequence +is not taken into account, so +.B b +will not collate between +.B A +and +.BR B , +and upper-case and lower-case ASCII characters will collate together. +.TP 8 +.B globstar +If set, the pattern \fB**\fP used in a pathname expansion context will +match all files and zero or more directories and subdirectories. +If the pattern is followed by a \fB/\fP, only directories and +subdirectories match. +.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 +.SM +.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 inherit_errexit +If set, command substitution inherits the value of the \fBerrexit\fP option, +instead of unsetting it in the subshell environment. +This option is enabled when \fIposix mode\fP is enabled. +.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 lastpipe +If set, and job control is not active, the shell runs the last command of +a pipeline not executed in the background in the current shell environment. +.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 localvar_inherit +If set, local variables inherit the value and attributes of a variable of +the same name that exists at a previous scope before any new value is +assigned. The nameref attribute is not inherited. +.TP 8 +.B localvar_unset +If set, calling \fBunset\fP on local variables in previous function scopes +marks them so subsequent lookups find them unset until that function +returns. This is identical to the behavior of unsetting local variables +at the current function scope. +.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 +.SM +.B PATH +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, +when performing pattern substitution word expansions, +or when filtering possible completions as part of programmable completion. +.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 progcomp_alias +If set, and programmable completion is enabled, \fBbash\fP treats a command +name that doesn't have any completions as a possible alias and attempts +alias expansion. If it has an alias, \fBbash\fP attempts programmable +completion using the command word resulting from the expanded alias. +.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 +.PD +.TP +\fBsuspend\fP [\fB\-f\fP] +Suspend the execution of this shell until it receives a +.SM +.B SIGCONT +signal. A login shell cannot be suspended; the +.B \-f +option can be used to override this and force the suspension. +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 (true) or 1 (false) depending on +the evaluation of the conditional expression +.IR expr . +Each operator and operand must be a separate argument. +.if \n(zZ=0 Expressions are composed of the primaries described above under +.if \n(zZ=1 Expressions are composed of the primaries described in the \fBbash\fP manual page 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. +The evaluation depends on the number of arguments; see below. +Operator precedence is used when there are five or more arguments. +.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 +The following conditions are applied in the order listed. +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. +The \fB\-a\fP and \fB\-o\fP operators are considered binary operators +when there are three arguments. +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. +.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. +.if t .sp 0.5 +.if n .sp 1 +.LP +When used with \fBtest\fP or \fB[\fP, the \fB<\fP and \fB>\fP operators +sort lexicographically using ASCII ordering. +.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 +.SM +.B SIG +prefix is optional. +.if t .sp 0.5 +.if n .sp 1 +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 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. +.if t .sp 0.5 +.if n .sp 1 +If a +.I sigspec +is +.SM +.BR ERR , +the command +.I arg +is executed whenever +a pipeline (which may consist of a single simple +command), a list, or a compound command returns a +non\-zero exit status, +subject to the following conditions. +The +.SM +.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 command executed in a +.B && +or +.B || +list except the command following the final \fB&&\fP or \fB||\fP, +any command in a pipeline but the last, +or if the command's return value is +being inverted using +.BR ! . +These are the same conditions obeyed by the \fBerrexit\fP (\fB\-e\fP) option. +.if t .sp 0.5 +.if n .sp 1 +Signals ignored upon entry to the shell cannot be trapped, reset or listed. +Trapped signals that are not being ignored are reset to their original +values in a subshell or subshell environment when one 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, which is 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 all of the arguments are found, false if +any are not found. +.TP +\fBulimit\fP [\fB\-HS\fP] \fB\-a\fP +.PD 0 +.TP +\fBulimit\fP [\fB\-HS\fP] [\fB\-bcdefiklmnpqrstuvxPRT\fP [\fIlimit\fP]] +.PD +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 by a non-root user 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, if appropriate, +are printed before the value. +Other options are interpreted as follows: +.RS +.PD 0 +.TP +.B \-a +All current limits are reported; no limits are set +.TP +.B \-b +The maximum socket buffer size +.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 written by the shell and its children +.TP +.B \-i +The maximum number of pending signals +.TP +.B \-k +The maximum number of kqueues that may be allocated +.TP +.B \-l +The maximum size that may be locked into memory +.TP +.B \-m +The maximum resident set size (many systems do not honor this limit) +.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 and, on +some systems, to its children +.TP +.B \-x +The maximum number of file locks +.TP +.B \-P +The maximum number of pseudoterminals +.TP +.B \-R +The maximum time a real-time process can run before blocking, in microseconds +.TP +.B \-T +The maximum number of threads +.PD +.PP +If +.I limit +is given, and the +.B \-a +option is not used, +\fIlimit\fP is the new value of the specified resource. +If no option is given, then +.B \-f +is assumed. Values are in 1024-byte increments, except for +.BR \-t , +which is in seconds; +.BR \-R , +which is in microseconds; +.BR \-p , +which is in units of 512-byte blocks; +.BR \-P , +.BR \-T , +.BR \-b , +.BR \-k , +.BR \-n , +and +.BR \-u , +which are unscaled values; +and, when in posix mode, +.B \-c +and +.BR \-f , +which are in 512-byte increments. +The return status is 0 unless an invalid option or argument is supplied, +or an error occurs while setting a new limit. +In POSIX Mode 512-byte blocks are used for the `-c' and `-f' options. +.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] [\-\fBn\fP] [\fIname\fP ...] +For each +.IR name , +remove the corresponding variable or function. +If the +.B \-v +option is given, each +.I name +refers to a shell variable, and that variable is removed. +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. +If the +.B \-n +option is supplied, and \fIname\fP is a variable with the \fInameref\fP +attribute, \fIname\fP will be unset rather than the variable it +references. +\fB\-n\fP has no effect if the \fB\-f\fP option is supplied. +If no options are supplied, each \fIname\fP refers to a variable; if +there is no variable by that name, a function with that name, if any, is +unset. +Each unset variable or function is removed from the environment +passed to subsequent commands. +If any of +.SM +.BR BASH_ALIASES , +.SM +.BR BASH_ARGV0 , +.SM +.BR BASH_CMDS , +.SM +.BR BASH_COMMAND , +.SM +.BR BASH_SUBSHELL , +.SM +.BR BASHPID , +.SM +.BR COMP_WORDBREAKS , +.SM +.BR DIRSTACK , +.SM +.BR EPOCHREALTIME , +.SM +.BR EPOCHSECONDS , +.SM +.BR FUNCNAME , +.SM +.BR GROUPS , +.SM +.BR HISTCMD , +.SM +.BR LINENO , +.SM +.BR RANDOM , +.SM +.BR SECONDS , +or +.SM +.B SRANDOM +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 [\fB\-fn\fP] [\fP\-p\fP \fIvarname\fP] [\fIid ...\fP] +Wait for each specified child process and return its termination status. +Each +.I id +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 id +is not given, +\fBwait\fP waits for all running background jobs and +the last-executed process substitution, if its process id is the same as +\fB$!\fP, +and the return status is zero. +If the \fB\-n\fP option is supplied, +\fBwait\fP waits for a single job +from the list of \fIid\fPs or, if no \fIid\fPs are supplied, any job, +to complete and returns its exit status. +If none of the supplied arguments is a child of the shell, or if no arguments +are supplied and the shell has no unwaited-for children, the exit status +is 127. +If the \fB\-p\fP option is supplied, the process or job identifier of the job +for which the exit status is returned is assigned to the variable +\fIvarname\fP named by the option argument. +The variable will be unset initially, before any assignment. +This is useful only when the \fB\-n\fP option is supplied. +Supplying the \fB\-f\fP option, when job control is enabled, +forces \fBwait\fP to wait for \fIid\fP to terminate before returning +its status, instead of returning when it changes status. +If +.I id +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. +.SH "SHELL COMPATIBILITY MODE" +Bash-4.0 introduced the concept of a `shell compatibility level', specified +as a set of options to the shopt builtin +.BR compat31 , +.BR compat32 , +.BR compat40 , +.BR compat41 , +and so on). +There is only one current +compatibility level -- each option is mutually exclusive. +The compatibility level is intended to allow users to select behavior +from previous versions that is incompatible with newer versions +while they migrate scripts to use current features and +behavior. It's intended to be a temporary solution. +.PP +This section does not mention behavior that is standard for a particular +version (e.g., setting \fBcompat32\fP means that quoting the rhs of the regexp +matching operator quotes special regexp characters in the word, which is +default behavior in bash-3.2 and above). +.PP +If a user enables, say, \fBcompat32\fP, it may affect the behavior of other +compatibility levels up to and including the current compatibility level. +The idea is that each compatibility level controls behavior that changed +in that version of \fBbash\fP, +but that behavior may have been present in earlier versions. +For instance, the change to use locale-based comparisons with the \fB[[\fP +command came in bash-4.1, and earlier versions used ASCII-based comparisons, +so enabling \fBcompat32\fP will enable ASCII-based comparisons as well. +That granularity may not be sufficient for +all uses, and as a result users should employ compatibility levels carefully. +Read the documentation for a particular feature to find out the +current behavior. +.PP +Bash-4.3 introduced a new shell variable: +.SM +.BR BASH_COMPAT . +The value assigned +to this variable (a decimal version number like 4.2, or an integer +corresponding to the \fBcompat\fP\fINN\fP option, like 42) determines the +compatibility level. +.PP +Starting with bash-4.4, Bash has begun deprecating older compatibility +levels. +Eventually, the options will be removed in favor of +.SM +.BR BASH_COMPAT . +.PP +Bash-5.0 is the final version for which there will be an individual shopt +option for the previous version. Users should use +.SM +.B BASH_COMPAT +on bash-5.0 and later versions. +.PP +The following table describes the behavior changes controlled by each +compatibility level setting. +The \fBcompat\fP\fINN\fP tag is used as shorthand for setting the +compatibility level +to \fINN\fP using one of the following mechanisms. +For versions prior to bash-5.0, the compatibility level may be set using +the corresponding \fBcompat\fP\fINN\fP shopt option. +For bash-4.3 and later versions, the +.SM +.B BASH_COMPAT +variable is preferred, +and it is required for bash-5.1 and later versions. +.TP +\fBcompat31\fP +.PD 0 +.RS +.IP \(bu +quoting the rhs of the \fB[[\fP command's regexp matching operator (=~) +has no special effect +.RE +.PD +.TP +\fBcompat32\fP +.PD 0 +.RS +.IP \(bu +interrupting a command list such as "a ; b ; c" causes the execution +of the next command in the list (in bash-4.0 and later versions, +the shell acts as if it received the interrupt, so +interrupting one command in a list aborts the execution of the +entire list) +.RE +.PD +.TP +\fBcompat40\fP +.PD 0 +.RS +.IP \(bu +the \fB<\fP and \fB>\fP operators to the \fB[[\fP command do not +consider the current locale when comparing strings; they use ASCII +ordering. +Bash versions prior to bash-4.1 use ASCII collation and +.IR strcmp (3); +bash-4.1 and later use the current locale's collation sequence and +.IR strcoll (3). +.RE +.PD +.TP +\fBcompat41\fP +.PD 0 +.RS +.IP \(bu +in \fIposix\fP mode, \fBtime\fP may be followed by options and still be +recognized as a reserved word (this is POSIX interpretation 267) +.IP \(bu +in \fIposix\fP mode, the parser requires that an even number of single +quotes occur in the \fIword\fP portion of a double-quoted +parameter expansion and treats them specially, so that characters within +the single quotes are considered quoted +(this is POSIX interpretation 221) +.RE +.PD +.TP +\fBcompat42\fP +.PD 0 +.RS +.IP \(bu +the replacement string in double-quoted pattern substitution does not +undergo quote removal, as it does in versions after bash-4.2 +.IP \(bu +in posix mode, single quotes are considered special when expanding +the \fIword\fP portion of a double-quoted parameter expansion +and can be used to quote a closing brace or other special character +(this is part of POSIX interpretation 221); +in later versions, single quotes +are not special within double-quoted word expansions +.RE +.PD +.TP +\fBcompat43\fP +.PD 0 +.RS +.IP \(bu +the shell does not print a warning message if an attempt is made to +use a quoted compound assignment as an argument to declare +(declare -a foo='(1 2)'). Later versions warn that this usage is +deprecated +.IP \(bu +word expansion errors are considered non-fatal errors that cause the +current command to fail, even in posix mode +(the default behavior is to make them fatal errors that cause the shell +to exit) +.IP \(bu +when executing a shell function, the loop state (while/until/etc.) +is not reset, so \fBbreak\fP or \fBcontinue\fP in that function will break +or continue loops in the calling context. Bash-4.4 and later reset +the loop state to prevent this +.RE +.PD +.TP +\fBcompat44\fP +.PD 0 +.RS +.IP \(bu +the shell sets up the values used by +.SM +.B BASH_ARGV +and +.SM +.B BASH_ARGC +so they can expand to the shell's positional parameters even if extended +debugging mode is not enabled +.IP \(bu +a subshell inherits loops from its parent context, so \fBbreak\fP +or \fBcontinue\fP will cause the subshell to exit. +Bash-5.0 and later reset the loop state to prevent the exit +.IP \(bu +variable assignments preceding builtins like \fBexport\fP and \fBreadonly\fP +that set attributes continue to affect variables with the same +name in the calling environment even if the shell is not in posix +mode +.RE +.PD +.TP +\fBcompat50\fP +.PD 0 +.RS +.IP \(bu +Bash-5.1 changed the way +.SM +.B $RANDOM +is generated to introduce slightly +more randomness. If the shell compatibility level is set to 50 or +lower, it reverts to the method from bash-5.0 and previous versions, +so seeding the random number generator by assigning a value to +.SM +.B RANDOM +will produce the same sequence as in bash-5.0 +.IP \(bu +If the command hash table is empty, bash versions prior to bash-5.1 +printed an informational message to that effect, even when producing +output that can be reused as input. Bash-5.1 suppresses that message +when the \fB\-l\fP option is supplied. +.RE +.PD +.\" 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 +.SM +.BR SHELL , +.SM +.BR PATH , +.SM +.BR HISTFILE , +.SM +.BR ENV , +or +.SM +.B BASH_ENV +.IP \(bu +specifying command names containing +.B / +.IP \(bu +specifying a filename 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 history +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 +.SM +.B SHELLOPTS +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 -- +http://pubs.opengroup.org/onlinepubs/9699919799/ +.TP +http://tiswww.case.edu/~chet/bash/POSIX -- a description of posix mode +.TP +\fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1) +.TP +\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 /etc/bash.bash_logout +The systemwide login shell cleanup file, executed when a login shell exits +.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.ramey@case.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/gnu/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.ramey@case.edu . +.SH BUGS +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 +Array variables may not (yet) be exported. +.PP +There may be only one active coprocess at a time. +.zZ +.zY diff --git a/bash-5.1/doc/bash.html b/bash-5.1/doc/bash.html new file mode 100644 index 0000000..adb9e76 --- /dev/null +++ b/bash-5.1/doc/bash.html @@ -0,0 +1,14369 @@ + +BASH(1) Manual Page + + + + +
BASH(1)2020 October 29BASH(1) +
+
Index +


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

NAME

+ +bash - GNU Bourne-Again SHell +  +

SYNOPSIS

+ +bash + +[options] +[command_string | file] +  +

COPYRIGHT

+ + +Bash is Copyright © 1989-2020 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

+ +All of the single-character shell options documented in the +description of the set builtin command, including -o, +can be used as options when the shell is invoked. +In addition, bash +interprets the following options when it is invoked: +

+ + +

+
-c + +
+If the +-c + +option is present, then commands are read from the first non-option argument +command_string. + +If there are arguments after the +command_string, + +the first argument is assigned to +$0 + +and any remaining arguments are assigned to the positional parameters. +The assignment to +$0 + +sets the name of the shell, which is used in warning and error messages. +
-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 or when reading input +through a pipe. +
-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). +
--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). +See +SEE ALSO + + +below for a reference to a document that details how posix mode affects +bash's behavior. +
--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 +(unless -s is specified) +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 filenames 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 an interactive login shell exits, +or a non-interactive login shell executes the exit builtin command, +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 filename. +

+ +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 with its standard input +connected to a network connection, as when executed by the remote shell +daemon, usually rshd, or the secure shell daemon sshd. +If +bash + +determines it is being run in this fashion, 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 neither +rshd nor sshd 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, + + +BASHOPTS, + + +CDPATH, + + +and +GLOBIGNORE + + +variables, if they appear in the environment, are 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 newline + +

+ +
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 command (see +SHELL GRAMMAR + + +below), the third word of a +case + +or +select + +command +(only in is valid), or the third word of a +for + +command (only in and do are valid): +
+ +

+ + + + +! case coproc 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 +one of the control operators +| + +or |&. +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). +If |& is used, command's standard error, in addition to its +standard output, is connected to +command2's standard input through the pipe; +it is shorthand for 2>&1 |. +This implicit redirection of the standard error to the standard output is +performed after any redirections specified by the command. +

+ +The return status of a pipeline is the exit status of the last +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. +When the shell is in posix mode, it does not recognize +time as a reserved word if the next token begins with a `-'. +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. +

+ +When the shell is in posix mode, time +may be followed by a newline. In this case, the shell displays the +total user and system time consumed by the shell and its children. +The +TIMEFORMAT + + +variable may be used to specify the format of +the time information. +

+ +Each command in a pipeline is executed as a separate process (i.e., in a +subshell). +See +COMMAND EXECUTION ENVIRONMENT +for a description of a subshell environment. +If the lastpipe option is enabled using the shopt builtin +(see the description of shopt below), +the last element of a pipeline may be run by the shell process. +  +

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. +These are referred to as asynchronous commands. +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. +

+ +AND and OR lists are sequences of one or more pipelines separated by the +&& and || control operators, respectively. +AND and OR lists are executed with left associativity. +An AND list has the form +

+

+ +command1 && command2 +

+ +

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

+ +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. +In most cases a list in a command's description may be separated from +the rest of the command by one or more newlines, and may be followed by a +newline in place of a semicolon. +
+
(list)
+list is executed in a subshell environment (see +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 or another +shell metacharacter. +
((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 used with [[, the < and > operators sort +lexicographically using the current locale. +

+ + +When the == and != operators are used, the string to the +right of the operator is considered a pattern and matched according +to the rules described below under Pattern Matching, +as if the extglob shell option were enabled. +The = operator is equivalent to ==. +If the +nocasematch + +shell option 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 the quoted portion +to be matched as a string. +

+ + +An additional binary operator, =~, is available, with the same +precedence as == and !=. +When it is used, the string to the right of the operator is considered +a POSIX extended regular expression and matched accordingly +(using the POSIX regcomp and regexec interfaces +usually described 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 +nocasematch + +shell option is enabled, the match is performed without regard to the case +of alphabetic characters. +Any part of the pattern may be quoted to force the quoted portion +to be matched as a string. +Bracket expressions in regular expressions must be treated carefully, +since normal quoting characters lose their meanings between brackets. +If the pattern is stored in a shell variable, quoting the variable +expansion forces the entire pattern to be matched as a string. +

+ + +The pattern will match if it matches any part of the string. +Anchor the pattern using the ^ and $ regular expression +operators to force it to match the entire string. +The array variable +BASH_REMATCH + + +records which parts of the string matched the pattern. +The element of +BASH_REMATCH + + +with index 0 contains the portion of +the string matching the entire regular expression. +Substrings matched by parenthesized subexpressions within the regular +expression are saved in the remaining +BASH_REMATCH + + +indices. 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 matching rules +described under +Pattern Matching + +below. +The word is expanded using tilde +expansion, parameter and variable expansion, arithmetic expansion, +command substitution, process substitution and quote removal. +Each pattern examined is expanded using tilde +expansion, parameter and variable expansion, arithmetic expansion, +command substitution, and process substitution. +If the +nocasematch + +shell option is enabled, the match is performed without regard to the case +of alphabetic characters. +When a match is found, the corresponding list is executed. +If the ;; operator is used, no subsequent matches are attempted after +the first pattern match. +Using ;& in place of ;; causes execution to continue with +the list associated with the next set of patterns. +Using ;;& in place of ;; causes the shell to test the next +pattern list in the statement, if any, and execute any associated list +on a successful match, +continuing the case statement execution as if the pattern list had not matched. +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-1; do list-2; done
+ +
until list-1; do list-2; done
+ +The while command continuously executes the list +list-2 as long as the last command in the list list-1 returns +an exit status of zero. The until command is identical +to the while command, except that the test is negated: +list-2 + +is executed as long as the last command in +list-1 + +returns a non-zero exit status. +The exit status of the while and until commands +is the exit status +of the last command executed in list-2, or zero if +none was executed. +
+  +

Coprocesses

+ +A coprocess is a shell command preceded by the coproc reserved +word. +A coprocess is executed asynchronously in a subshell, as if the command +had been terminated with the & control operator, with a two-way pipe +established between the executing shell and the coprocess. +

+ +The format for a coprocess is: +

+

+ +coproc [NAME] command [redirections] +

+ +

+ +This creates a coprocess named NAME. +If NAME is not supplied, the default name is COPROC. +NAME must not be supplied if command is a simple +command (see above); otherwise, it is interpreted as the first word +of the simple command. +When the coprocess is executed, the shell creates an array variable (see +Arrays + +below) named NAME in the context of the executing shell. +The standard output of +command + +is connected via a pipe to a file descriptor in the executing shell, +and that file descriptor is assigned to NAME[0]. +The standard input of +command + +is connected via a pipe to a file descriptor in the executing shell, +and that file descriptor is assigned to NAME[1]. +This pipe is established before any redirections specified by the +command (see +REDIRECTION + + +below). +The file descriptors can be utilized as arguments to shell commands +and redirections using standard word expansions. +Other than those created to execute command and process substitutions, +the file descriptors are not available in subshells. +The process ID of the shell spawned to execute the coprocess is +available as the value of the variable NAME_PID. +The wait +builtin command may be used to wait for the coprocess to terminate. +

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

Shell Function Definitions

+ +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: +
+
fname () compound-command [redirection]
+ +
function fname [()] compound-command [redirection]
+ +This defines a function named fname. +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, +with one exception: If the function reserved word is used, but the +parentheses are not supplied, the braces are required. +compound-command is executed whenever fname is specified as the +name of a simple command. +When in posix mode, fname must be a valid shell name +and may not be the name of one of the +POSIX special builtins. +In default mode, a function name can be any unquoted shell word that does +not contain $. +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, +!. + +When the shell is in posix mode, the ! has no special meaning +within double quotes, even 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 + +
+
\E + +
+an escape character +
\f + +
+form feed +
\n + +
+new line +
\r + +
+carriage return +
\t + +
+horizontal tab +
\v + +
+vertical tab +
\\ + +
+backslash +
\aq + +
+single quote +
\dq + +
+double quote +
\? + +
+question mark +
\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) +
\uHHHH + +
+the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +HHHH (one to four hex digits) +
\UHHHHHHHH + +
+the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +HHHHHHHH (one to eight 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 ($dqstringdq) +will cause the string to be translated according to the current locale. +The gettext infrastructure performs the message catalog lookup and +translation, using the LC_MESSAGES and TEXTDOMAIN shell +variables. +If the current locale is C or POSIX, +or if there are no translations available, +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 (declaration commands). +When in posix mode, these builtins may appear in a command after +one or more instances of the command builtin and retain these +assignment statement properties. +

+ +In the context where an assignment statement is assigning a value +to a shell variable or array index, the += operator can be used to +append to or add to the variable's previous value. +This includes arguments to builtin commands such as declare that +accept assignment statements (declaration commands). +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 +(for indexed arrays) or added as additional key-value pairs in an +associative array. +When applied to a string-valued variable, value is expanded and +appended to the variable's value. +

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

+

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

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

Positional Parameters

+ +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 is not within double quotes, each positional parameter +expands to a separate word. +In contexts where it is performed, those words +are subject to further word splitting and pathname expansion. +When the expansion occurs within double quotes, it expands to a single word +with the value of each parameter separated by the first character of the +IFS + + +special variable. That is, "$*" is equivalent +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. +In contexts where word splitting is performed, this expands each +positional parameter to a separate word; if not within double +quotes, these words are subject to word splitting. +In contexts where word splitting is not performed, +this expands to a single word +with each positional parameter separated by a space. +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 exit 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 job most recently placed into the +background, whether executed as an asynchronous command or using +the bg builtin (see +JOB CONTROL + + +below). +
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 filename used to invoke +bash, + +as given by argument zero. + +
+  +

Shell Variables

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

+ + +

+
_ + +
+At shell startup, set to the 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 simple +command executed in the foreground, 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. +
BASH + +
+Expands to the full filename used to invoke this instance of +bash. + +
BASHOPTS + +
+A colon-separated list of enabled shell options. Each word in +the list is a valid argument for the +-s + +option to the +shopt + +builtin command (see +SHELL BUILTIN COMMANDS + + +below). The options appearing in +BASHOPTS + + +are those reported as +on + +by shopt. +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. +
BASHPID + +
+Expands to the process ID of the current bash process. +This differs from $$ under certain circumstances, such as subshells +that do not require bash to be re-initialized. +Assignments to +BASHPID + + +have no effect. +If +BASHPID + +is unset, it loses its special properties, even if it is +subsequently reset. +
BASH_ALIASES + +
+An associative array variable whose members correspond to the internal +list of aliases as maintained by the alias builtin. +Elements added to this array appear in the alias list; however, +unsetting array elements currently does not cause aliases to be removed +from the alias list. +If +BASH_ALIASES + +is unset, it loses its special properties, even if it is +subsequently reset. +
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). +Setting extdebug after the shell has started to execute a script, +or referencing this variable when extdebug is not set, +may result in inconsistent values. +
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). +Setting extdebug after the shell has started to execute a script, +or referencing this variable when extdebug is not set, +may result in inconsistent values. +
BASH_ARGV0 + +
+When referenced, this variable expands to the name of the shell or shell +script (identical to +$0; + +see the description of special parameter 0 above). +Assignment to +BASH_ARGV0 + +causes the value assigned to also be assigned to $0. +If +BASH_ARGV0 + +is unset, it loses its special properties, even if it is +subsequently reset. +
BASH_CMDS + +
+An associative array variable whose members correspond to the internal +hash table of commands as maintained by the hash builtin. +Elements added to this array appear in the hash table; however, +unsetting array elements currently does not cause command names to be removed +from the hash table. +If +BASH_CMDS + +is unset, it loses its special properties, even if it is +subsequently reset. +
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. +If +BASH_COMMAND + +is unset, it loses its special properties, even if it is +subsequently reset. +
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 +where each corresponding member of +FUNCNAME + + +was invoked. +${BASH_LINENO[$i]} is the line number in the source +file (${BASH_SOURCE[$i+1]}) where +${FUNCNAME[$i]} was called +(or ${BASH_LINENO[$i-1]} if referenced within another +shell function). +Use +LINENO + + +to obtain the current line number. +
BASH_LOADABLES_PATH + +
+A colon-separated list of directories in which the shell looks for +dynamically loadable builtins specified by the +enable + +command. +
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. +
BASH_SOURCE + +
+An array variable whose members are the source filenames +where the corresponding shell function names in the +FUNCNAME + + +array variable are defined. +The shell function +${FUNCNAME[$i]} is defined in the file +${BASH_SOURCE[$i]} and called from +${BASH_SOURCE[$i+1]}. +
BASH_SUBSHELL + +
+Incremented by one within each subshell or subshell environment when +the shell begins executing in that environment. +The initial value is 0. +If +BASH_SUBSHELL + +is unset, it loses its special properties, even if it is +subsequently reset. +
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_KEY + +
+The key (or final key of a key sequence) used to invoke the current +completion function. +
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_TYPE + +
+Set to an integer value corresponding to the type of completion attempted +that caused a completion function to be called: +TAB, for normal completion, +?, for listing completions after successive tabs, +!, for listing alternatives on partial word completion, +@, to list completions if the word is not unmodified, +or +%, for menu completion. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (see Programmable Completion +below). +
COMP_WORDBREAKS + +
+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. +The line is split into words as readline would split it, using +COMP_WORDBREAKS + + +as described above. +This variable is available only in shell functions invoked by the +programmable completion facilities (see Programmable Completion +below). +
COPROC + +
+An array variable (see Arrays below) created to hold the file descriptors +for output from and input to an unnamed coprocess (see Coprocesses +above). +
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. +
EPOCHREALTIME + +
+Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see time(3)) as a floating point value +with micro-second granularity. +Assignments to +EPOCHREALTIME + + +are ignored. +If +EPOCHREALTIME + + +is unset, it loses its special properties, even if it is +subsequently reset. +
EPOCHSECONDS + +
+Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see time(3)). +Assignments to +EPOCHSECONDS + + +are ignored. +If +EPOCHSECONDS + + +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 (the one with the highest index) is +"main". + +This variable exists only when a shell function is executing. +Assignments to +FUNCNAME + + +have no effect. +If +FUNCNAME + + +is unset, it loses its special properties, even if it is +subsequently reset. +

+ + +This variable can be used with BASH_LINENO and BASH_SOURCE. +Each element of FUNCNAME has corresponding elements in +BASH_LINENO and BASH_SOURCE to describe the call stack. +For instance, ${FUNCNAME[$i]} was called from the file +${BASH_SOURCE[$i+1]} at line number +${BASH_LINENO[$i]}. +The caller builtin displays the current call stack using this +information. +

GROUPS + +
+An array variable containing the list of groups of which the current +user is a member. +Assignments to +GROUPS + + +have no effect. +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. +Assignments to +HISTCMD + + +are ignored. +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. +
MAPFILE + +
+An array variable (see Arrays below) created to hold the text +read by the mapfile builtin when no variable name is supplied. +
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, it expands to a random integer +between 0 and 32767. +Assigning +a value to +RANDOM + + +initializes (seeds) the sequence of random numbers. +If +RANDOM + + +is unset, it loses its special properties, even if it is +subsequently reset. +
READLINE_LINE + +
+The contents of the +readline + +line buffer, for use with +bind -x + +(see +SHELL BUILTIN COMMANDS + + +below). +
READLINE_MARK + +
+The position of the mark (saved insertion point) in the +readline + +line buffer, for use with +bind -x + +(see +SHELL BUILTIN COMMANDS + + +below). +The characters between the insertion point and the mark are often +called the region. +
READLINE_POINT + +
+The position of the insertion point in the +readline + +line buffer, for use with +bind -x + +(see +SHELL BUILTIN COMMANDS + + +below). +
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. +The number of seconds at shell invocation and the current time is always +determined by querying the system clock. +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. +
SRANDOM + +
+This variable expands to a 32-bit pseudo-random number each time it is +referenced. The random number generator is not linear on systems that +support /dev/urandom or arc4random, so each returned number +has no relationship to the numbers preceding it. +The random number generator cannot be seeded, so assignments to this +variable have no effect. +If +SRANDOM + + +is unset, it loses its special properties, +even if it is subsequently reset. +
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_COMPAT + +
+The value is used to set the shell's compatibility level. +See +SHELL COMPATIBILITY MODE + + +below for a description of the various compatibility +levels and their effects. +The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42) +corresponding to the desired compatibility level. +If BASH_COMPAT is unset or set to the empty string, the compatibility +level is set to the default for the current version. +If BASH_COMPAT is set to a value that is not one of the valid +compatibility levels, the shell prints an error message and sets the +compatibility level to the default for the current version. +The valid values correspond to the compatibility levels +described below under +BSHELLCOMPATIBILITYMODE. + + +For example, 4.2 and 42 are valid values that correspond +to the compat42 shopt option +and set the compatibility level to 42. +The current version is also a valid value. +
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 filename. +PATH + + +is not used to search for the resultant filename. +
BASH_XTRACEFD + +
+If set to an integer corresponding to a valid file descriptor, bash +will write the trace output generated when +set -x + +is enabled to that file descriptor. +The file descriptor is closed when +BASH_XTRACEFD + + +is unset or assigned a new value. +Unsetting +BASH_XTRACEFD + + +or assigning it the empty string causes the +trace output to be sent to the standard error. +Note that setting +BASH_XTRACEFD + + +to 2 (the standard error file +descriptor) and then unsetting it will result in the standard error +being closed. +
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". + +
CHILD_MAX + +
+Set the number of exited child status values for the shell to remember. +Bash will not allow this value to be decreased below a POSIX-mandated +minimum, and there is a maximum value (currently 8192) that this may +not exceed. +The minimum value is system-dependent. +
COLUMNS + +
+Used by the select compound command to determine the terminal width +when printing selection lists. +Automatically set if the +checkwinsize + +option is enabled or in an interactive shell 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). +Each array element contains one possible completion. +
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. +
ENV + +
+Expanded and executed similarly to +BASH_ENV + + +(see INVOCATION above) +when an interactive shell is invoked in posix mode. +
EXECIGNORE + +
+A colon-separated list of shell patterns (see Pattern Matching) +defining the list of filenames to be ignored by command search using +PATH. +Files whose full pathnames match one of these patterns are not considered +executable files for the purposes of completion and command execution +via PATH lookup. +This does not affect the behavior of the [, test, and [[ +commands. +Full pathnames in the command hash table are not subject to EXECIGNORE. +Use this variable to ignore shared library files that have the executable +bit set, but are not executable files. +The pattern matching honors the setting of the extglob shell +option. +
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:~". + +
FUNCNEST + +
+If set to a numeric value greater than 0, defines a maximum function +nesting level. Function invocations that exceed this nesting level +will cause the current command to abort. +
GLOBIGNORE + +
+A colon-separated list of patterns defining the set of file names to +be ignored by pathname expansion. +If a file name 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 a shell exits. +
HISTFILESIZE + +
+The maximum number of lines contained in the history file. When this +variable is assigned a value, the history file is truncated, if +necessary, +to contain no more than that number of lines by removing the oldest entries. +The history file is also truncated to this size after +writing it when a shell exits. +If the value is 0, the history file is truncated to zero size. +Non-numeric values and numeric values less than zero inhibit truncation. +The shell sets the default value to the value of HISTSIZE +after reading any startup files. +
HISTIGNORE + +
+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. + + +The pattern matching honors the setting of the extglob shell +option. +
HISTSIZE + +
+The number of commands to remember in the command history (see +HISTORY + + +below). +If the value is 0, commands are not saved in the history list. +Numeric values less than zero result in every command being saved +on the history list (there is no limit). +The shell sets the default value to 500 after reading any startup files. +
HISTTIMEFORMAT + +
+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. +This uses the history comment character to distinguish timestamps from +other history lines. +
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, or does not name a readable file, +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). +
INSIDE_EMACS + +
+If this variable appears in the environment when the shell starts, +bash assumes that it is running inside an Emacs shell buffer +and may disable line editing, depending on the value of TERM. +
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. +
LC_TIME + +
+This variable determines the locale category used for data and time +formatting. +
LINES + +
+Used by the select compound command to determine the column length +for printing selection lists. +Automatically set if the +checkwinsize + +option is enabled or in an interactive shell upon receipt of a +SIGWINCH. + + +
MAIL + +
+If this parameter is set to a file or directory name and the +MAILPATH + + +variable is not set, +bash + +informs the user of the arrival of mail in the specified file or +Maildir-format directory. +
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 filenames to be checked for mail. +The message to be printed when mail arrives in a particular file +may be specified by separating the filename from the message with a `?'. +When used in the text of the message, $_ expands to the name of +the current mailfile. +Example: +
+

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

+ +Bash + +can be configured to supply +a default value for this variable (there is no value by default), +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/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin. + + +
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. +When the shell enters posix mode, it sets this variable if it was +not already set. +
PROMPT_COMMAND + +
+If this variable is set, and is an array, +the value of each set element is executed as a command +prior to issuing each primary prompt. +If this is set but not an array variable, +its value is used as a command to execute instead. +
PROMPT_DIRTRIM + +
+If set to a number greater than zero, the value is used as the number of +trailing directory components to retain when expanding the \w and +\W prompt string escapes (see +PROMPTING + + +below). Characters removed are replaced with an ellipsis. +
PS0 + +
+The value of this parameter is expanded (see +PROMPTING + + +below) and displayed by interactive shells after reading a command +and before the command is executed. +
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 +the expanded value of +PS4 + + +is replicated multiple times, as necessary, to indicate multiple +levels of indirection. The default is ``+ ''. +
SHELL + +
+This variable expands to the full pathname to the shell. +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\t%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 a line of input after issuing the +primary prompt. +Bash + +terminates after waiting for that number of seconds if a complete +line of 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 indexed and associative array variables. +Any variable may be used as an indexed 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. +Indexed arrays are referenced using integers (including arithmetic +expressions) and are zero-based; associative arrays are referenced +using arbitrary strings. +Unless otherwise noted, indexed array indices must be non-negative integers. +

+ +An indexed array is created automatically if any variable is assigned to +using the syntax name[subscript]=value. The +subscript + +is treated as an arithmetic expression that must evaluate to a number. +To explicitly declare an indexed array, use +declare -a name + +(see +SHELL BUILTIN COMMANDS + + +below). +declare -a name[subscript] + +is also accepted; the subscript is ignored. +

+ +Associative arrays are created using +declare -A name. + +

+ +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 may be of the form [subscript]=string. +Indexed array assignments do not require anything but string. +Each value in the list is expanded using all the shell expansions +described below under +EXPANSION. + + +When assigning to indexed arrays, if the optional brackets and subscript +are supplied, that index is assigned to; +otherwise the index of the element assigned is the last index assigned +to by the statement plus one. Indexing starts at zero. +

+ +When assigning to an associative array, the words in a compound assignment +may be either assignment statements, for which the subscript is required, +or a list of words that is interpreted as a sequence of alternating keys +and values: +name=( key1 value1 key2 value2 ...). +These are treated identically to +name=( [key1]=value1 [key2]=value2 ...). +The first word in the list determines how the remaining words +are interpreted; all assignments in a list must be of the same type. +When using key/value pairs, the keys may not be missing or empty; +a final missing value is treated like the empty string. +

+ +This syntax is also accepted by the +declare + +builtin. Individual array elements may be assigned to using the +name[subscript]=value syntax introduced above. +When assigning to an indexed array, if +name + +is subscripted by a negative number, that number is +interpreted as relative to one greater than the maximum index of +name, so negative indices count back from the end of the +array, and an index of -1 references the last element. +

+ +Any element of an array may be referenced using +${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. +If the +subscript + +used to reference an element of an indexed array +evaluates to a number less than zero, it is +interpreted as relative to one greater than the maximum index of the array, +so negative indices count back from the end of the +array, and an index of -1 references the last element. +

+ +Referencing an array variable without a subscript is equivalent to +referencing the array with a subscript of 0. +Any reference to a variable using a valid subscript is legal, and +bash + +will create an array if necessary. +

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

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

+ +The +unset + +builtin is used to destroy arrays. unset name[subscript] +destroys the array element at index subscript, +for both indexed and associative arrays. +Negative subscripts to indexed arrays are interpreted as described above. +Unsetting the last element of an array variable does not unset the variable. +unset name, where name is an array, or +unset name[subscript], where +subscript is * or @, removes the entire array. +

+ +When using a variable name with a subscript as an argument to a command, +such as with unset, without using the word expansion syntax +described above, the argument is subject to pathname expansion. +If pathname expansion is not desired, the argument should be quoted. +

+ +The +declare, + +local, + +and +readonly + +builtins each accept a +-a + +option to specify an indexed array and a +-A + +option to specify an associative array. +If both options are supplied, +-A + +takes precedence. +The +read + +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 and variable expansion, arithmetic expansion, +and command substitution (done in a left-to-right fashion); +word splitting; +and pathname expansion. +

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

+ +After these expansions are performed, quote characters present in the +original word are removed unless they have been quoted themselves +(quote removal). +

+ +Only brace expansion, word splitting, and pathname expansion +can increase 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[@]}", +and, in most cases, $* 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[..incr]}, +where x and y are either integers or single characters, +and incr, an optional increment, is an integer. +When integers are supplied, the expression expands to each number between +x and y, inclusive. +Supplied integers may be prefixed with 0 to force each term to have the +same width. +When either x or y begins with a zero, the shell +attempts to force all generated terms to contain the same number of digits, +zero-padding where necessary. +When characters are supplied, the expression expands to each character +lexicographically between x and y, inclusive, +using the default C locale. +Note that both x and y must be of the same type. +When the increment is supplied, it is used as the difference between +each term. The default increment is 1 or -1 as appropriate. +

+ +Brace expansion is performed before any other expansions, +and any 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, and inhibits brace +expansion until the closing }. +

+ +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 filenames with tildes in assignments to +PATH, + + +MAILPATH, + + +and +CDPATH, + + +and the shell assigns the expanded value. +

+ +Bash also performs tilde expansion on words satisfying the conditions of +variable assignments (as described above under +PARAMETERS) + + +when they appear as arguments to simple commands. +Bash does not do this, except for the declaration commands listed +above, when in posix mode. +  +

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. +The parameter is a shell parameter as described above +PARAMETERS) or an array reference (Arrays). + +
+

+ +If the first character of parameter is an exclamation point (!), +and parameter is not a nameref, +it introduces a level of indirection. +Bash uses the value formed by expanding the rest of +parameter as the new parameter; this is then +expanded and that value is used in the rest of the expansion, rather +than the expansion of the original parameter. +This is known as indirect expansion. +The value is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. +If parameter is a nameref, this expands to the name of the +parameter referenced by parameter instead of performing the +complete 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, using the forms documented below +(e.g., :-), +bash tests for a parameter that is unset or null. Omitting the colon +results in a test only for a parameter that is unset. +

+ + +

+
${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 the value of parameter +starting at the character specified by offset. +If parameter is @, an indexed array subscripted by +@ or *, or an associative array name, the results differ as +described below. +If length is omitted, expands to the substring of the value of +parameter starting at the character specified by offset +and extending to the end of the value. +length and offset are arithmetic expressions (see +ARITHMETIC EVALUATION + + +below). +

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

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

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

+Substring expansion applied to an associative array produces undefined +results. +

+Substring indexing is zero-based unless the positional parameters +are used, in which case the indexing starts at 1 by default. +If offset is 0, and the positional parameters are used, $0 is +prefixed to the list. +

${!prefix*}
+ +
${!prefix@}
+ +Names matching prefix. +Expands to the names of variables whose names begin with prefix, +separated by the first character of the +IFS + + +special variable. +When @ is used and the expansion appears within double quotes, each +variable name expands to a separate word. +
${!name[@]}
+ +
${!name[*]}
+ +List of array keys. +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}
+Parameter length. +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. +If +parameter + +is an indexed array name subscripted by a negative number, that number is +interpreted as relative to one greater than the maximum index of +parameter, so negative indices count back from the end of the +array, and an index of -1 references the last element. +
${parameter#word}
+ +
${parameter##word}
+ +Remove matching prefix pattern. +The +word + +is expanded to produce a pattern just as in pathname +expansion, and matched against the expanded value of +parameter + +using the rules described under +Pattern Matching + +below. +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}
+ +Remove matching suffix pattern. +The word is expanded to produce a pattern just as in +pathname expansion, and matched against the expanded value of +parameter + +using the rules described under +Pattern Matching + +below. +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}
+Pattern substitution. +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. +The match is performed using the rules described under +Pattern Matching + +below. +If pattern 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 the +nocasematch + +shell option is enabled, the match is performed without regard to the case +of alphabetic characters. +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. +
${parameter^pattern}
+ +
${parameter^^pattern}
+
${parameter,pattern}
+
${parameter,,pattern}
+ +Case modification. +This expansion modifies the case of alphabetic characters in parameter. +The pattern is expanded to produce a pattern just as in +pathname expansion. +Each character in the expanded value of parameter is tested against +pattern, and, if it matches the pattern, its case is converted. +The pattern should not attempt to match more than one character. +The ^ operator converts lowercase letters matching pattern +to uppercase; the , operator converts matching uppercase letters +to lowercase. +The ^^ and ,, expansions convert each matched character in the +expanded value; the ^ and , expansions match and convert only +the first character in the expanded value. +If pattern is omitted, it is treated like a ?, which matches +every character. +If +parameter + +is +@ + +or +*, + +the case modification 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 case modification operation is applied to each member of the +array in turn, and the expansion is the resultant list. +
${parameter@operator}
+Parameter transformation. +The expansion is either a transformation of the value of parameter +or information about parameter itself, depending on the value of +operator. Each operator is a single letter: +

+

+ +
+
U + +
+The expansion is a string that is the value of parameter with lowercase +alphabetic characters converted to uppercase. +
u + +
+The expansion is a string that is the value of parameter with the first +character converted to uppercase, if it is alphabetic. +
L + +
+The expansion is a string that is the value of parameter with uppercase +alphabetic characters converted to lowercase. +
Q + +
+The expansion is a string that is the value of parameter quoted in a +format that can be reused as input. +
E + +
+The expansion is a string that is the value of parameter with backslash +escape sequences expanded as with the $'...' quoting mechanism. +
P + +
+The expansion is a string that is the result of expanding the value of +parameter as if it were a prompt string (see PROMPTING below). +
A + +
+The expansion is a string in the form of +an assignment statement or declare command that, if +evaluated, will recreate parameter with its attributes and value. +
K + +
+Produces a possibly-quoted version of the value of parameter, +except that it prints the values of +indexed and associative arrays as a sequence of quoted key-value pairs +(see Arrays above). +
a + +
+The expansion is a string consisting of flag values representing +parameter's attributes. + +
+

+ +If +parameter + +is +@ + +or +*, + +the 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 operation is applied to each member of the +array in turn, and the expansion is the resultant list. +

+The result of the expansion is subject to word splitting and pathname +expansion as described below. +

+ +
+  +

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 in a subshell environment +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 and variable expansion, +command substitution, and quote removal. +The result is treated as the arithmetic expression to be evaluated. +Arithmetic expansions may be nested. +

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

Process Substitution

+ +Process substitution allows a process's input or output to be +referred to using a filename. +It takes the form of +<(list) +or +>(list). +The process list is run asynchronously, and its input or output +appears as a filename. +This filename 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. +Process substitution is supported on systems that support named +pipes (FIFOs) or the /dev/fd method of naming open files. +

+ +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 using these characters as field terminators. +If +IFS + + +is unset, or its +value is exactly +<space><tab><newline>, + +the default, then +sequences of +<space>, + +<tab>, + +and +<newline> + +at the beginning and end of the results of the previous +expansions are ignored, and +any sequence of +IFS + + +characters not at the beginning or end serves to delimit words. +If +IFS + + +has a value other than the default, then sequences of +the whitespace characters +space, + +tab, + +and +newline + +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 +and passed to commands as empty strings. +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 +and passed to a command as an empty string. +When a quoted null argument appears as part of a word whose expansion is +non-null, the null argument is removed. +That is, the word +-daqaq becomes -d after word splitting and +null argument removal. +

+ +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, and is not quoted, then the word is +regarded as a +pattern, + +and replaced with an alphabetically sorted list of +filenames matching the pattern +(see +Pattern Matching + + +below). +If no matching filenames are found, +and the shell option +nullglob + +is not enabled, 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. +The filenames +``.'' + +and +``..'' + +must always be matched explicitly, even if +dotglob + +is set. +In other cases, the +``.'' + +character is not treated specially. +When matching a pathname, the slash character must always be +matched explicitly by a slash in the pattern, but in other matching +contexts it can be matched by a special pattern character as described +below under +Pattern Matching. + + +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. +If the nocaseglob option is set, the matching against the patterns in +GLOBIGNORE + + +is performed without regard to case. +The filenames +``.'' + +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 filenames beginning with a +``.'' + +will match. +To get the old behavior of ignoring filenames beginning with a +``.'', + +make +``.*'' + +one of the patterns in +GLOBIGNORE. + + +The +dotglob + +option is disabled when +GLOBIGNORE + + +is unset. +The pattern matching honors the setting of the extglob shell +option. +

+ +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. +When the globstar shell option is enabled, and * is used in +a pathname expansion context, two adjacent *s used as a single +pattern will match all files and zero or more directories and +subdirectories. +If followed by a /, two adjacent *s will match only directories +and subdirectories. +
? + +
+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 falls 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 values of the +LC_COLLATE + + +or +LC_ALL + + +shell variables, if set. +To obtain the traditional interpretation of range expressions, where +[a-d] + +is equivalent to +[abcd], + +set value of the +LC_ALL + +shell variable to +C, + +or enable the +globasciiranges + +shell option. +A +- + +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 +
+ + +

+ +Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. +Using separate matches against shorter strings, or using arrays of +strings instead of a single long string, may be faster. +  +

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 allows commands' file handles to be +duplicated, opened, closed, +made to refer to different files, +and can change the files the command reads from and writes to. +Redirection may also be used to modify file handles in the +current shell execution environment. +The following redirection +operators may precede or appear anywhere within a +simple command + +or may follow a +command. + +Redirections are processed in the order they appear, from +left to right. +

+ +Each redirection that may be preceded by a file descriptor number +may instead be preceded by a word of the form {varname}. +In this case, for each redirection operator except +>&- and <&-, the shell will allocate a file descriptor greater +than or equal to 10 and assign it to varname. +If >&- or <&- is preceded +by {varname}, the value of varname defines the file +descriptor to close. +If {varname} is supplied, the redirection persists beyond +the scope of the command, allowing the shell programmer to manage +the file descriptor himself. +

+ +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 and variable 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 from the 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. +If the operating system on which bash is running provides these +special files, bash will use them; otherwise it will emulate them +internally with the behavior described below. +

+

+ + +

+
/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 +the corresponding TCP socket. +
/dev/udp/host/port + +
+If host is a valid hostname or Internet address, and port +is an integer port number or service name, bash attempts to open +the corresponding UDP socket. + +
+ +

+ +A failure to open or create a file causes the redirection to fail. +

+ +Redirections using file descriptors greater than 9 should be used with +care, as they may conflict with file descriptors the shell uses +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

+ +This construct allows both the +standard output (file descriptor 1) and +the standard error output (file descriptor 2) +to be redirected to the file whose name is the +expansion of +word. + +

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

+ +

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

Appending Standard Output and Standard Error

+ +This construct allows both the +standard output (file descriptor 1) and +the standard error output (file descriptor 2) +to be appended to the file whose name is the +expansion of +word. + +

+ +The format for appending standard output and standard error is: +

+

+ +&>>word +

+ +

+ +This is semantically equivalent to +

+

+ +>>word 2>&1 +

+ +

+ +(see Duplicating File Descriptors below). +  +

Here Documents

+ +This type of redirection instructs the shell to read input from the +current source until a line containing only +delimiter + +(with no trailing blanks) +is seen. All of +the lines read up to that point are then used as the standard +input (or file descriptor n if n is specified) for a command. +

+ +The format of here-documents is: +

+

+ +

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

+ +No parameter and variable expansion, command substitution, +arithmetic expansion, or pathname expansion is performed on +word. + +If any part of +word + +is 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, +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: +
+

+ +

+[n]<<<word
+
+ +
+ +

+ +The word undergoes +tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote removal. +Pathname expansion and word splitting are not performed. +The result is supplied as a single string, with a newline appended, +to the command on its +standard input (or file descriptor n if n is specified). +  +

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. +If +word + +evaluates to +-, + +file descriptor +n + +is closed. +As a special case, if n is omitted, and word does not +expand to one or more digits or -, 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, +and all lines that make up a compound command, +before executing any of the commands on that line or the compound command. +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 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 these exceptions: 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), +and the +ERR + + +trap is not inherited unless the -o errtrace shell option has +been enabled. +

+ +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 a variable is declared local, the variable's visible scope +is restricted to that function and its children (including the functions +it calls). +Local variables "shadow" variables with the same name declared at +previous scopes. +For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. +

+ +The shell uses dynamic scoping to control a variable's visibility +within functions. +With dynamic scoping, visible variables and their values +are a result of the sequence of function calls that caused execution +to reach the current function. +The value of a variable that a function sees depends +on its value within its caller, if any, whether that caller is +the "global" scope or another shell function. +This is also the value that a local variable +declaration "shadows", and the value that is restored when the function +returns. +

+ +For example, if a variable var is declared as local in function +func1, and func1 calls another function func2, +references to var made from within func2 will resolve to the +local variable var from func1, shadowing any global variable +named var. +

+ +The unset builtin also acts using the same dynamic scope: if a +variable is local to the current scope, unset will unset it; +otherwise the unset will refer to the variable found in any calling scope +as described above. +If a variable at the current local scope is unset, it will remain so +until it is reset in that scope or until the function returns. +Once the function returns, any instance of the variable at a previous +scope will become visible. +If the unset acts on a variable at a previous scope, any instance of a +variable with that name that had been shadowed will become visible. +

+ +The FUNCNEST variable, if set to a numeric value greater +than 0, defines a maximum function nesting level. Function +invocations that exceed the limit cause the entire command to +abort. +

+ +If the builtin command +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. +

+ +Functions may be recursive. +The FUNCNEST variable may be used to limit the depth of the +function call stack and restrict the number of function invocations. +By default, 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, the (( compound command, 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 +
- + + +
+unary minus and plus +
++id --id + +
+variable pre-increment and pre-decrement +
! ~ + +
+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. +

+ +Integer constants follow the C language definition, without suffixes or +character constants. +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 the optional base +is a decimal number between 2 and 64 representing the arithmetic +base, and n is a number in that base. +If base# is omitted, then base 10 is used. +When specifying n, +if a non-digit is required, +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. +The test and [ commands determine their behavior based on +the number of arguments; see the descriptions of those commands for any +other command-specific actions. +

+ +Expressions are formed from the following unary or binary primaries. +Bash handles several filenames specially when they are used in +expressions. +If the operating system on which bash is running provides these +special files, bash will use them; otherwise it will emulate them +internally with this behavior: +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. +

+ + +When used with [[, the < and > operators sort +lexicographically using the current locale. +The test command sorts using ASCII ordering. +

+ +

+
-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. +
-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. +
-N file + +
+True if file exists and has been modified since it was last read. +
-O file + +
+True if file exists and is owned by the effective user id. +
-S file + +
+True if file exists and is a socket. +
file1 -ef file2
+True if file1 and file2 refer to the same device and +inode numbers. +
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. +
-o optname + +
+True if the shell option +optname + +is enabled. +See the list of options under the description of the +-o + +option to the +set + +builtin below. +
-v varname + +
+True if the shell variable +varname + +is set (has been assigned a value). +
-R varname + +
+True if the shell variable +varname + +is set and is a name reference. +
-z string + +
+True if the length of string is zero. +
string
+ +
-n string + +
+ +True if the length of +string + +is non-zero. +
string1 == string2
+ +
string1 = string2
+ +True if the strings are equal. = should be used +with the test command for POSIX conformance. +When used with the [[ command, this performs pattern matching as +described above (Compound Commands). +
string1 != string2
+True if the strings are not equal. +
string1 < string2
+True if string1 sorts before string2 lexicographically. +
string1 > string2
+True if string1 sorts after string2 lexicographically. +
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. +When used with the [[ command, +Arg1 + +and +Arg2 + +are evaluated as arithmetic expressions (see +ARITHMETIC EVALUATION + + +above). + +
+  +

SIMPLE COMMAND EXPANSION

+ +When a simple command is executed, the shell performs the following +expansions, assignments, and redirections, from left to right, in +the following order. +
+
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 searches for a defined shell +function named command_not_found_handle. +If that function exists, it is invoked in a separate execution environment +with the original command and +the original command's arguments as its arguments, and the function's +exit status becomes the exit status of that subshell. +If that function is not defined, 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. +

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

+ +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 filename of the command and passed to that +command in its environment. +  +

EXIT STATUS

+ +The exit status of an executed command is the value returned by the +waitpid system call or equivalent function. Exit statuses +fall between 0 and 255, though, as explained below, the shell may +use values above 125 specially. Exit statuses from shell builtins and +compound commands are also limited to this range. Under certain +circumstances, the shell will use special values to indicate specific +failure modes. +

+ +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, +generally invalid options or missing arguments. +

+ +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 operating system kernel'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, if the +user so specifies with stty tostop, write to the +terminal. +Background processes which attempt to read from (write to when +stty tostop is in effect) the +terminal are sent a +SIGTTIN (SIGTTOU) + + +signal by the kernel's 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 specification (jobspec). 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 +job whose command name begins with +ce. + +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 +%-. + +If there is only a single job, %+ and %- can both be used +to refer to that job. +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 (or, if the checkjobs shell option has +been enabled using the shopt builtin, running), the shell prints a +warning message, and, if the checkjobs option is enabled, lists the +jobs and their statuses. +The +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 any stopped +jobs are terminated. +

+ +When the shell is waiting for a job or process using the wait +builtin, and job control is enabled, wait will return when the +job changes state. The -f option causes wait to wait +until the job or process terminates before returning. +  +

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 + +displays +PS0 + + +after it reads a command but before executing it. +Bash + +displays +PS4 + + +as described above +before tracing each command when the -x option is enabled. +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 +(uses the value of the +PROMPT_DIRTRIM + + +variable) +
\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). +This can have unwanted side effects if escaped portions of the string +appear within command substitution or contain characters special to +word expansion. +  +

READLINE

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

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. + +If that file does not exist or cannot be read, the ultimate default is +/etc/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 +

+ +or using the bind builtin command (see +SHELL BUILTIN COMMANDS + + +below). +

+ +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. +
blink-matching-paren (Off) + +
+If set to On, readline attempts to briefly move the cursor to an +opening parenthesis when a closing parenthesis is inserted. +
colored-completion-prefix (Off) + +
+If set to On, when listing completions, readline displays the +common prefix of the set of possible completions using a different color. +The color definitions are taken from the value of the LS_COLORS +environment variable. +
colored-stats (Off) + +
+If set to On, readline displays possible completions using different +colors to indicate their file type. +The color definitions are taken from the value of the LS_COLORS +environment variable. +
comment-begin (``#'') + +
+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-display-width (-1) + +
+The number of screen columns used to display possible matches +when performing completion. +The value is ignored if it is less than 0 or greater than the terminal +screen width. +A value of 0 will cause matches to be displayed one per line. +The default value is -1. +
completion-ignore-case (Off) + +
+If set to On, readline performs filename matching and completion +in a case-insensitive fashion. +
completion-map-case (Off) + +
+If set to On, and completion-ignore-case is enabled, readline +treats hyphens (-) and underscores (_) as equivalent when +performing case-insensitive filename matching and completion. +
completion-prefix-display-length (0) + +
+The length in characters of the common prefix of a list of possible +completions that is displayed without modification. When set to a +value greater than zero, common prefixes longer than this value are +replaced with an ellipsis when displaying possible completions. +
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, +readline will ask whether or not the user 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). +The default is On, but readline will set it to Off if the +locale contains eight-bit characters. +
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. +
echo-control-characters (On) + +
+When set to On, on operating systems that indicate they support it, +readline echoes a character corresponding to a signal generated from the +keyboard. +
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. + +
emacs-mode-string (@) + +
+If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \1 and \2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +
enable-bracketed-paste (On) + +
+When set to On, readline will configure the terminal in a way +that will enable it to insert each paste into the editing buffer as a +single string of characters, instead of treating each character as if +it had been read from the keyboard. This can prevent pasted characters +from being interpreted as editing commands. +
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. +
enable-meta-key (On) + +
+When set to On, readline will try to enable any meta modifier +key the terminal claims to support when it is called. On many terminals, +the meta key is used to send eight-bit characters. +
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. +
history-size (unset) + +
+Set the maximum number of history entries saved in the history list. +If set to zero, any existing history entries are deleted and no new entries +are saved. +If set to a value less than zero, the number of history entries is not +limited. +By default, the number of history entries is set to the value of the +HISTSIZE shell variable. +If an attempt is made to set history-size to a non-numeric value, +the maximum number of history entries will be set to 500. +
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. +This setting is automatically enabled for terminals of height 1. +
input-meta (Off) + +
+If set to On, readline will enable eight-bit input (that is, +it will not strip the eighth 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. +The default is Off, but readline will set it to On if the +locale contains eight-bit characters. +
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. +
keyseq-timeout (500) + +
+Specifies the duration readline will wait for a character when reading an +ambiguous key sequence (one that can form a complete key sequence using +the input read so far, or can take additional input to complete a longer +key sequence). +If no input is received within the timeout, readline will use the shorter +but complete key sequence. +The value is specified in milliseconds, so a value of 1000 means that +readline will wait one second for additional input. +If this variable is set to a value less than or equal to zero, or to a +non-numeric value, readline will wait until another key is pressed to +decide which key sequence to complete. +
mark-directories (On) + +
+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. +If set to Off, the leading `.' must be +supplied by the user in the filename to be completed. +
menu-complete-display-prefix (Off) + +
+If set to On, menu completion displays the common prefix of the +list of possible completions (which may be empty) before cycling through +the list. +
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. +The default is Off, but readline will set it to On if the +locale contains eight-bit characters. +
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. +
revert-all-at-newline (Off) + +
+If set to On, readline will undo all changes to history lines +before returning when accept-line is executed. By default, +history lines may be modified and retain individual undo lists across +calls to readline. +
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. +
show-mode-in-prompt (Off) + +
+If set to On, add a string to the beginning of the prompt +indicating the editing mode: emacs, vi command, or vi insertion. +The mode strings are user-settable (e.g., emacs-mode-string). +
skip-completed-text (Off) + +
+If set to On, this alters the default completion behavior when +inserting a single match into the line. It's only active when +performing completion in the middle of a word. If enabled, readline +does not insert characters from the completion that match characters +after point in the word being completed, so portions of the word +following the cursor are not duplicated. +
vi-cmd-mode-string ((cmd)) + +
+If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in command mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \1 and \2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +
vi-ins-mode-string ((ins)) + +
+If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in insertion mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \1 and \2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +
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, after any comparison operator, +
 extends to the end of the line; +unless otherwise noted, 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 both the 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. +
version
+The version test may be used to perform comparisons against +specific readline versions. +The version expands to the current readline version. +The set of comparison operators includes +=, + +(and +==), + +!=, + +<=, + +>=, + +<, + +and +>. + +The version number supplied on the right side of the operator consists +of a major version number, an optional decimal point, and an optional +minor version (e.g., 7.1). If the minor version is omitted, it +is assumed to be 0. +The operator may be separated from the string version +and from the version number argument by whitespace. +
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
+
+ +
+ +
variable
+The variable construct provides simple equality tests for readline +variables and values. +The permitted comparison operators are =, ==, and !=. +The variable name must be separated from the comparison operator by +whitespace; the operator may be separated from the value on the right hand +side by whitespace. +Both string and boolean variables may be tested. Boolean variables must be +tested against the values on and off. +
+ +
$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). +
shell-forward-word + +
+Move forward to the end of the next word. +Words are delimited by non-quoted shell metacharacters. +
shell-backward-word + +
+Move back to the start of the current or previous word. +Words are delimited by non-quoted shell metacharacters. +
previous-screen-line + +
+Attempt to move point to the same physical screen column on the previous +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if point is not +greater than the length of the prompt plus the screen width. +
next-screen-line + +
+Attempt to move point to the same physical screen column on the next +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if the length +of the current Readline line is not greater than the length of the prompt +plus the screen width. +
clear-display (M-C-l) + +
+Clear the screen and, if possible, the terminal's scrollback buffer, +then redraw the current line, +leaving the current line at the top of the screen. +
clear-screen (C-l) + +
+Clear the screen, +then redraw the current line, +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. +
history-substring-search-backward + +
+Search backward through the history for the string of characters +between the start of the current line and the current cursor +position (the point). +The search string may match anywhere in a history line. +This is a non-incremental search. +
history-substring-search-forward + +
+Search forward through the history for the string of characters +between the start of the current line and the point. +The search string may match anywhere in a history line. +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 a numeric argument, behave exactly like yank-nth-arg. +Successive calls to yank-last-arg move back through the history +list, inserting the last word (or the word specified by the argument to +the first call) of each line in turn. +Any numeric argument supplied to these successive calls determines +the direction to move through the history. A negative argument switches +the direction through the history (back or forward). +The history expansion facilities are used to extract the last word, +as if the "!$" history expansion had been specified. +
shell-expand-line (M-C-e) + +
+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. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. +
edit-and-execute-command (C-x C-e) + +
+Invoke an editor on the current command line, and execute the result as shell +commands. +Bash attempts to invoke +$VISUAL, + + +$EDITOR, + + +and emacs as the editor, in that order. + +
+  +

Commands for Changing Text

+ + +
+
end-of-file (usually C-d) + +
+The character indicating end-of-file as set, for example, by +stty. + +If this character is read when there are no characters +on the line, and point is at the beginning of the line, Readline +interprets it as the end of input and returns +EOF. + + +
delete-char (C-d) + +
+Delete the character at point. +If this function is bound to the +same character as the tty EOF character, as C-d +commonly is, see above for the effects. +
backward-delete-char (Rubout) + +
+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. +
shell-kill-word + +
+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 shell-forward-word. +
shell-backward-kill-word + +
+Kill the word behind point. +Word boundaries are the same as those used by shell-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 nor 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. +
menu-complete-backward + +
+Identical to menu-complete, but moves backward through the list +of possible completions, as if menu-complete had been given a +negative argument. This command 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. +
dabbrev-expand + +
+Attempt menu 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. +
print-last-kbd-macro () + +
+Print the last keyboard macro defined in a format suitable for the +inputrc file. + +
+  +

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-lowercase-version (M-A, M-B, M-x, ...) + +
+If the metafied character x is uppercase, run the command +that is bound to the corresponding metafied lowercase character. +The behavior is undefined if x is already lowercase. +
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. +
skip-csi-sequence + +
+Read enough characters to consume a multi-key sequence such as those +defined for keys like Home and End. Such sequences begin with a +Control Sequence Indicator (CSI), usually ESC-[. If this sequence is +bound to "\[", keys producing such sequences will have no effect +unless explicitly bound to a readline command, instead of inserting +stray characters into the editing buffer. This is unbound by default, +but usually bound to ESC-[. +
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 filenames for possible completions. +
glob-expand-word (C-x *) + +
+The word before point is treated as a pattern for pathname expansion, +and the list of matching filenames is inserted, replacing the word. +If a numeric argument is supplied, an asterisk is appended before +pathname expansion. +
glob-list-expansions (C-x g) + +
+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 the command word is the empty string (completion attempted at the +beginning of an empty line), any compspec defined with +the -E option to complete is used. +If a compspec has been defined for that command, the +compspec is used to generate the list of possible completions for the word. +If the command word is a full pathname, a compspec for the full +pathname is searched for first. +If no compspec is found for the full pathname, an attempt is made to +find a compspec for the portion following the final slash. +If those searches do not result in a compspec, any compspec defined with +the -D option to complete is used as the default. +If there is no default compspec, bash attempts alias expansion +on the command word as a final resort, and attempts to find a compspec +for the command word from any successful expansion. +

+ +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 pathname 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, + + +COMP_POINT, + + +COMP_KEY, + + +and +COMP_TYPE + + +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 ($1) is the name of the command whose arguments are +being completed, +the second argument ($2) is the word being completed, +and the third argument ($3) is the word preceding the word being +completed on the current command line. +No filtering of the generated completions against the word being completed +is performed; the function or command has complete freedom in generating +the matches. +

+ +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, one per array element. +

+ +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. +If the +nocasematch + +shell option is enabled, the match is performed without regard to the case +of alphabetic characters. +

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

+ +There is some support for dynamically modifying completions. This is +most useful when used in combination with a default completion specified +with complete -D. +It's possible for shell functions executed as completion +handlers to indicate that completion should be retried by returning an +exit status of 124. If a shell function returns 124, and changes +the compspec associated with the command on which completion is being +attempted (supplied as the first argument when the function is executed), +programmable completion restarts from the beginning, with an +attempt to find a new compspec for that command. This allows a set of +completions to be built dynamically as completion is attempted, rather than +being loaded all at once. +

+ +For instance, assuming that there is a library of compspecs, each kept in a +file corresponding to the name of the command, the following default +completion function would load completions dynamically: +

+ +_completion_loader() +
+ +{ +
+ +       . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
+
+ +} +
+ +complete -D -F _completion_loader -o bashdefault -o default +
+ +
+  +

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. + + +If HISTFILESIZE is unset, or set to null, a non-numeric value, +or a numeric value less than zero, the history file is not truncated. +When the history file is read, +lines beginning with the history comment character followed immediately +by a digit are interpreted as timestamps for the following history line. +These timestamps are optionally displayed depending on the value of the +HISTTIMEFORMAT + + +variable. +When a shell with history enabled 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. +If the +HISTTIMEFORMAT + + +variable is set, time stamps are written to the history file, marked +with the history comment character, so +they may be preserved across shell sessions. +This uses the history comment character to distinguish timestamps from +other history lines. +After saving the history, the history file is truncated +to contain no more than +HISTFILESIZE + + +lines. If +HISTFILESIZE + + +is unset, or set to null, a non-numeric value, +or a numeric value less than zero, the history file is not truncated. +

+ +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, and is performed +on each line individually without taking quoting on previous lines into +account. +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, but the history expansion character is +also treated as quoted if it immediately precedes the closing double quote +in a double-quoted string. +

+ +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 below), 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). + +The shell uses +the history comment character to mark history timestamps when +writing the history file. +  +

Event Designators

+ +An event designator is a reference to a command line entry in the +history list. +Unless the reference is absolute, events are relative to the current +position 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 minus +n. + +
!! + +
+Refer to the previous command. This is a synonym for `!-1'. +
!string + +
+Refer to the most recent command preceding the current position in the +history list starting with +string. + +
!?string[?] + +
+Refer to the most recent command preceding the current position in the +history list containing +string. + +The trailing ? may be omitted if +string + +is followed immediately by a newline. +If string is missing, the string from the most recent search is used; +it is an error if there is no previous search string. +
^string1^string2^ + +
+Quick substitution. Repeat the previous 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 word. This is usually the last argument, but will expand to the +zeroth word if there is only one word in the line. +
% + +
+The first word matched by the most recent `?string?' search, +if the search string begins with a character that is part of a word. +
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 x is missing, it defaults to 0. + +
+

+ +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 `:'. +These modify, or edit, the word or words selected from the history event. +

+ + +

+
h + +
+Remove a trailing filename component, leaving only the head. +
t + +
+Remove all leading filename 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. +The q and x modifiers are mutually exclusive; the last one +supplied is used. +
s/old/new/ + +
+Substitute +new + +for the first occurrence of +old + +in the event line. +Any character may be used as the delimiter 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. +If +new + +is null, each matching +old + +is deleted. +
& + +
+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' or `&' 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. +The :, true, false, and test/[ builtins +do not accept options and do not treat -- specially. +The exit, logout, return, +break, continue, let, +and shift builtins accept and process arguments beginning with +- without requiring --. +Other builtins that accept arguments but are not specified as accepting +options interpret arguments beginning with - as invalid options and +require -- to prevent this interpretation. +

+ +

+
: [arguments]
+ +No effect; the command does nothing beyond expanding +arguments + +and performing any specified +redirections. +The return status is zero. +
. 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, filenames 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. +If the -T option is enabled, source inherits any trap on +DEBUG; if it is not, any DEBUG trap string is saved and +restored around the call to source, and source unsets the +DEBUG trap while it executes. +If -T is not set, and the sourced file changes +the DEBUG trap, the new value is retained when source completes. +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] [-lpsvPSVX]
+ +
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 [-m keymap] keyseq: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 (vi-move is also +a synonym); 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. +
-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. +
-v + +
+Display readline variable names and values in such a way that they +can be re-read. +
-V + +
+List current readline variable names and values. +
-f filename + +
+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. +When shell-command is executed, the shell sets the +READLINE_LINE + + +variable to the contents of the readline line buffer and the +READLINE_POINT + + +and +READLINE_MARK + + +variables to the current location of the insertion point and the saved +insertion point (the mark), respectively. +If the executed command changes the value of any of +READLINE_LINE, + + +READLINE_POINT, + + +or +READLINE_MARK, + + +those new values will be reflected in the editing state. +
-X + +
+List all key sequences bound to shell commands and the associated commands +in a format that can be reused as input. + +
+

+ +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 n is not greater than or equal to 1. +
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. +
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. +
cd [-L|[-P [-e]] [-@]] [dir]
+Change the current directory to dir. +if dir is not supplied, the value of the +HOME + + +shell variable is the default. +Any additional arguments following dir are ignored. +The variable +CDPATH + + +defines the search path for the directory containing +dir: + +each directory name in +CDPATH + + +is searched for 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 causes cd to use the physical directory structure +by resolving symbolic links while traversing dir and +before processing instances of .. in dir (see also the +-P + +option to the +set + +builtin command); the +-L + +option forces symbolic links to be followed by resolving the link +after processing instances of .. in dir. +If .. appears in dir, it is processed by removing the +immediately previous pathname component from dir, back to a slash +or the beginning of dir. +If the +-e + +option is supplied with +-P, + +and the current working directory cannot be successfully determined +after a successful directory change, cd will return an unsuccessful +status. +On systems that support it, the -@ option presents the extended +attributes associated with a file as a directory. +An argument of +- + +is converted to +$OLDPWD + + +before the directory change is attempted. +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. +
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 filename +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] [-DEI] [-A action] [-G globpat] [-W wordlist]
+
+ +[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] name [name ...] + +
complete -pr [-DEI] [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 -D option indicates that other supplied options and actions should +apply to the ``default'' command completion; that is, completion attempted +on a command for which no completion has previously been defined. +The -E option indicates that other supplied options and actions should +apply to ``empty'' command completion; that is, completion attempted on a +blank line. +The -I option indicates that other supplied options and actions should +apply to completion on the initial non-assignment word on the line, or after +a command delimiter such as ; or |, which is usually command +name completion. +If multiple options are supplied, the -D option takes precedence +over -E, and both take precedence over -I. +If any of -D, -E, or -I are supplied, any other +name arguments are ignored; these completions only apply to the case +specified by the option. +

+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, +quoting special characters, or suppressing trailing spaces). +Intended to be used with shell functions. +
noquote + +
+Tell readline not to quote the completed words if they are filenames +(quoting filenames is the default). +
nosort + +
+Tell readline not to sort the list of possible completions alphabetically. +
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. +
+ +
-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 the function is executed, +the first argument ($1) is the name of the command whose arguments are +being completed, +the second argument ($2) is the word being completed, +and the third argument ($3) is the word preceding the word being +completed on the current command line. +When it finishes, the possible completions are retrieved from the value +of the +COMPREPLY + + +array variable. +
-G globpat
+The pathname expansion pattern globpat is expanded to generate +the possible completions. +
-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. +
-W wordlist
+The wordlist is split using the characters in the +IFS + + +special variable as delimiters, and each resultant word is expanded. +Shell quoting is honored within wordlist, +in order to provide a +mechanism for the words to contain shell metacharacters or characters +in the value of +IFS. + + +The possible completions are the members of the resultant list which +match the word being completed. +
-X filterpat
+filterpat is a pattern as used for pathname 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. + +
+

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

+ +
compopt [-o option] [-DEI] [+o option] [name]
+Modify completion options for each name according to the +options, or for the +currently-executing completion if no names are supplied. +If no options are given, display the completion options for each +name or the current completion. +The possible values of option are those valid for the complete +builtin described above. +The -D option indicates that other supplied options should +apply to the ``default'' command completion; that is, completion attempted +on a command for which no completion has previously been defined. +The -E option indicates that other supplied options should +apply to ``empty'' command completion; that is, completion attempted on a +blank line. +The -I option indicates that other supplied options should +apply to completion on the initial non-assignment word on the line, +or after a command delimiter such as ; or |, which is usually +command name completion. +

+The return value is true unless an invalid option is supplied, an attempt +is made to modify the options for a name for which no completion +specification exists, or an output error occurs. +

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 n is not greater than or equal to 1. +
declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]
+ +
typeset [-aAfFgiIlnrtux] [-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 with name arguments, additional options, +other than -f and -F, are ignored. +When +-p + +is supplied without name arguments, it will display the attributes +and values of all variables having the attributes specified by the +additional options. +If no other options are supplied with -p, declare will display +the attributes and values of all shell variables. The -f option +will restrict the display to shell functions. +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 each name +is defined are displayed as well. The +-F + +option implies +-f. + +The +-g + +option forces variables to be created or modified at the global scope, +even when declare is executed in a shell function. +It is ignored in all other cases. +The +-I + +option causes local variables to inherit the attributes +(except the nameref attribute) +and value of any existing variable with the same +name at a surrounding scope. +If there is no existing variable, the local variable is initially unset. +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 indexed array variable (see +Arrays + +above). +
-A + +
+Each name is an associative array variable (see +Arrays + +above). +
-f + +
+Use function names only. +
-i + +
+The variable is treated as an integer; arithmetic evaluation (see +ARITHMETIC EVALUATION + + +above) is performed when the variable is assigned a value. +
-l + +
+When the variable is assigned a value, all upper-case characters are +converted to lower-case. +The upper-case attribute is disabled. +
-n + +
+Give each name the nameref attribute, making +it a name reference to another variable. +That other variable is defined by the value of name. +All references, assignments, and attribute modifications +to name, except those using or changing the +-n attribute itself, are performed on the variable referenced by +name's value. +The nameref attribute cannot be applied to array variables. +
-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. +
-u + +
+When the variable is assigned a value, all lower-case characters are +converted to upper-case. +The lower-case attribute is disabled. +
-x + +
+Mark names for export to subsequent commands via the environment. + +
+

+ +Using `+' instead of `-' +turns off the attribute instead, +with the exceptions that +a and +A +may not be used to destroy array variables and +r will not +remove the readonly attribute. +When used in a function, +declare + +and +typeset + +make each +name local, as with the +local + +command, +unless the -g option is supplied. +If a variable name is followed by =value, the value of +the variable is set to value. +When using -a or -A and the compound assignment syntax to +create array variables, additional attributes do not take effect until +subsequent assignments. +The return value is 0 unless an invalid option is encountered, +an attempt is made to define a function using + +-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. +The current directory is always the first directory in the stack. +
+ +
+
-c + +
+Clears the directory stack by deleting all of the entries. +
-l + +
+Produces a listing using full pathnames; +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. +
+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. + +
+

+ +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 ... | pid ... ]
+Without options, remove each +jobspec + +from the table of active jobs. +If +jobspec + +is not present, and neither the -a nor the -r option +is supplied, the current job is used. +If the -h option is given, each +jobspec + +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 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 0 unless a write error occurs. +If -n is specified, the trailing newline is +suppressed. If the -e option is given, interpretation of +the following backslash-escaped characters is enabled. The +-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 further output +
\e + +
+
\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) +
\xHH + +
+the eight-bit character whose value is the hexadecimal value HH +(one or two hex digits) +
\uHHHH + +
+the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +HHHH (one to four hex digits) +
\UHHHHHHHH + +
+the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +HHHHHHHH (one to eight hex digits) + +
+ +
enable [-a] [-dnps] [-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 argument 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 +execfail + +shell option +is enabled. In that case, it returns failure. +An interactive shell returns failure if the file cannot be executed. +A subshell exits unconditionally if exec fails. +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 names of all exported variables 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] [-lnr] [first] [last]
+ +
fc -s [pat=rep] [cmd]
+ +The first form selects a range of commands from +first + +to +last + +from the history list and displays or edits and re-executes them. +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). +When listing, a first or last of +0 is equivalent to -1 and -0 is equivalent to the current +command (usually the fc command); otherwise 0 is equivalent to -1 +and -0 is invalid. +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. +Command is interpreted the same as first above. +A useful alias to use with this is + +r='fc -s', +so that typing + +r cc +runs the last command beginning with + +cc +and typing + +r +re-executes the last command. +

+If the first form is used, the return value is 0 unless an invalid +option is encountered or +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 [arg ...]
+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 +supplied as +arg + +values, +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]
+Each time hash is invoked, +the full pathname of the command +name + +is determined by searching +the directories in +$PATH + +and remembered. Any previously-remembered pathname is discarded. +If the +-p + +option is supplied, no path search is performed, and +filename + +is used as the full filename 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 [-dms] [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. +
+ +
+
-d + +
+Display a short description of each pattern +
-m + +
+Display the description of each pattern in a manpage-like format +
-s + +
+Display only a short usage synopsis for each pattern + +
+

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

+ +
history [n]
+ +
history -c
+
history -d offset
+
history -d start-end
+
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. +If offset is negative, it is interpreted as relative to one greater +than the last history position, so negative indices count back from the +end of the history, and an index of -1 refers to the current +history -d command. +
-d start-end
+Delete the history entries between positions start and end, +inclusive. Positive and negative values for start and end +are interpreted as described above. +
-a + +
+Append the ``new'' history lines to the history file. +These are history lines entered since the beginning of the current +bash session, but not already appended 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 append them to the current history list. +
-w + +
+Write the current history list 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 + + +variable is set, the time stamp information +associated with each history entry is written to the history file, +marked with the history comment character. +When the history file is read, lines beginning with the history +comment character followed immediately by a digit are interpreted +as timestamps for the following history entry. +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. +
-n + +
+Display information only about jobs that have changed status since +the user was last notified of their status. +
-p + +
+List only the process ID of the job's process group +leader. +
-r + +
+Display only running jobs. +
-s + +
+Display only 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|-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. +The +-L + +option is equivalent to -l. +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 + + +above). +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. +If name is -, the set of shell options is made local to the function +in which local is invoked: shell options changed using the +set builtin inside the function are restored to their original values +when the function returns. +The restore is effected as if a series of set commands were executed +to restore the values that were in place before the function. +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. +
mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
+ +
readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
+ +Read lines from the standard input into the indexed array variable +array, + +or from file descriptor +fd + +if the +-u + +option is supplied. +The variable +MAPFILE + + +is the default array. +Options, if supplied, have the following meanings: +
+ +
+
-d + +
+The first character of delim is used to terminate each input line, +rather than newline. +If delim is the empty string, mapfile will terminate a line +when it reads a NUL character. +
-n + +
+Copy at most +count + +lines. If count is 0, all lines are copied. +
-O + +
+Begin assigning to +array + +at index +origin. + +The default index is 0. +
-s + +
+Discard the first count lines read. +
-t + +
+Remove a trailing delim (default newline) from each line read. +
-u + +
+Read lines from file descriptor fd instead of the standard input. +
-C + +
+Evaluate +callback + +each time quantum lines are read. The -c option specifies +quantum. + +
-c + +
+Specify the number of lines read between each call to +callback. + + +
+

+ +If +-C + +is specified without +-c, + +the default quantum is 5000. +When callback is evaluated, it is supplied the index of the next +array element to be assigned and the line to be assigned to that element +as additional arguments. +callback is evaluated after the line is read but before the +array element is assigned. +

+ +If not supplied with an explicit origin, mapfile will clear array +before assigning to it. +

+ +mapfile returns successfully unless an invalid option or option +argument is supplied, array is invalid or unassignable, or if +array is not an indexed array. +

+ +
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 + +
+Suppresses the normal change of directory when removing directories +from the stack, so that only the stack is manipulated. +
+n
+Removes the nth entry counting from the left of the list +shown by +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. + +
+

+ +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 -v option causes the output to be assigned to the variable +var rather than being printed to the standard output. +

+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) format specifications, +printf interprets the following extensions: +

+ +
+
%b + +
+causes +printf to expand backslash escape sequences in the corresponding +argument +in the same way as echo -e. +
%q + +
+causes printf to output the corresponding +argument in a format that can be reused as shell input. +
%(datefmt)T + +
+causes printf to output the date-time string resulting from using +datefmt as a format string for strftime(3). +The corresponding argument is an integer representing the number of +seconds since the epoch. +Two special argument values may be used: -1 represents the current +time, and -2 represents the time the shell was invoked. +If no argument is specified, conversion behaves as if -1 had been given. +This is an exception to the usual printf behavior. + +
+

+ +The %b, %q, and %T directives all use the field width and precision +arguments from the format specification and write that many bytes from +(or use that wide a field for) the expanded argument, which usually +contains more characters than the original. +

+ +Arguments to non-string format specifiers are treated as C constants, +except that a leading plus or minus sign is allowed, and if the leading +character is a single or double quote, the value is the ASCII value of +the following character. +

+ +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] [+n] [-n]
+ +
pushd [-n] [dir]
+ +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, pushd exchanges the top two directories +and returns 0, unless the directory stack is empty. +Arguments, if supplied, have the following meanings: +
+ +
+
-n + +
+Suppresses the normal change of directory when rotating or +adding directories to the stack, so that only the stack is manipulated. +
+n
+Rotates the stack so that the nth directory +(counting from the left of the list shown by +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. +
dir + +
+Adds +dir + +to the directory stack at the top, making it the +new current working directory as if it had been supplied as the argument +to the cd builtin. + +
+

+ +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] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
+One line is read from the standard input, or from the file descriptor +fd supplied as an argument to the -u option, +split into words as described above under Word Splitting, +and the first word +is assigned to the first +name, + +the second word to the second +name, + +and so on. +If there are more words than names, the remaining words and their +intervening delimiters are 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 using the same rules the shell +uses for expansion (described above under Word Splitting). +The backslash character (\) may be used to remove any special +meaning for the next character read and for line continuation. +Options, if supplied, have the following meanings: +
+ +
+
-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. +If delim is the empty string, read will terminate a line +when it reads a NUL character. +
-e + +
+If the standard input +is coming from a terminal, +readline + +(see +READLINE + + +above) is used to obtain the line. +Readline uses the current (or default, if line editing was not previously +active) editing settings, but uses Readline's default filename completion. +
-i text + +
+If +readline + +is being used to read the line, text is placed into the editing +buffer before editing begins. +
-n nchars + +
+read returns after reading nchars characters rather than +waiting for a complete line of input, but honors a delimiter if fewer +than nchars characters are read before the delimiter. +
-N nchars + +
+read returns after reading exactly nchars characters rather +than waiting for a complete line of input, unless EOF is encountered or +read times out. +Delimiter characters encountered in the input are +not treated specially and do not cause read to return until +nchars characters are read. +The result is not split on the characters in IFS; the intent is +that the variable is assigned exactly the characters read +(with the exception of backslash; see the -r option below). +
-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 then 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 (or a specified number of characters) +is not read within timeout seconds. +timeout may be a decimal number with a fractional portion following +the decimal point. +This option is only effective if read is reading input from a +terminal, pipe, or other special file; it has no effect when reading +from regular files. +If read times out, read saves any partial input read into +the specified variable name. +If timeout is 0, read returns immediately, without trying to +read any data. The exit status is 0 if input is available on +the specified file descriptor, non-zero otherwise. +The exit status is greater than 128 if the timeout is exceeded. +
-u fd + +
+Read input from file descriptor fd. + +
+

+ +If no +names + +are supplied, the line read, +without the ending delimiter but otherwise unmodified, +is assigned to the variable +REPLY. + + +The exit status is zero, unless end-of-file is encountered, read +times out (in which case the status is greater than 128), +a variable assignment error (such as assigning to a readonly variable) occurs, +or an invalid file descriptor is supplied as the argument to -u. +

+ +
readonly [-aAf] [-p] [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 indexed arrays; the +-A + +option restricts the variables to associative arrays. +If both options are supplied, +-A + +takes precedence. +If no +name + +arguments are given, or if the +-p + +option is supplied, a list of all readonly names is printed. +The other options may be used to restrict the output to a subset of +the set of readonly names. +The +-p + +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 stop executing and return the value specified by +n + +to its caller. +If +n + +is omitted, the return status is that of the last command +executed in the function body. +If return is executed by a trap handler, the last command used to +determine the status is the last command executed before the trap handler. +If return is executed during a DEBUG trap, the last command +used to determine the status is the last command executed by the trap +handler before return was invoked. +If +return + +is 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 n is supplied, the return value is its least significant +8 bits. +The return status is non-zero if +return + +is supplied a non-numeric argument, or +is used outside a +function and not during execution of a script by . or source. +Any command associated with the RETURN trap is executed +before execution resumes after the function or script. +
set [--abefhkmnptuvxBCEHPT] [-o option-name] [arg ...]
+ +
set [+abefhkmnptuvxBCEHPT] [+o option-name] [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 option processing 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 + +
+Each variable or function that is created or modified is given the +export attribute and marked 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 +pipeline (which may consist of a single simple command), +a list, +or a compound command +(see +SHELL GRAMMAR + + +above), exits with a non-zero status. +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 following the +if + +or +elif + +reserved words, part of any command executed in a +&& + +or +|| + +list except the command following the final && or ||, +any command in a pipeline but the last, +or if the command's return value is +being inverted with +!. + +If a compound command other than a subshell +returns a non-zero status because a command failed +while -e was being ignored, the shell does not exit. +A trap on ERR, if set, is executed before the shell exits. +This option applies to the shell environment and each subshell environment +separately (see +COMMAND EXECUTION ENVIRONMENT + + +above), and may cause +subshells to exit before executing all the commands in the subshell. +

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

-f + +
+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). +All processes run in a separate process group. +When a background job completes, the shell prints a line +containing its exit status. +
-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. +This also affects the editing interface used for read -e. +
errexit + +
+Same as +-e. + +
errtrace + +
+Same as +-E. + +
functrace + +
+Same as +-T. + +
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). +See +SEE ALSO + + +below for a reference to a document that details how posix mode affects +bash's behavior. +
privileged + +
+Same as +-p. + +
verbose + +
+Same as +-v. + +
vi + +
+Use a vi-style command line editing interface. +This also affects the editing interface used for read -e. +
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, + + +BASHOPTS, + + +CDPATH, + + +and +GLOBIGNORE + + +variables, if they appear in the environment, are 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 and parameters other than the special +parameters "@" and "*" as an error when performing +parameter expansion. If expansion is attempted on an +unset variable or parameter, 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 resolve 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 settings controlling optional shell behavior. +The settings can be either those listed below, or, if the +-o + +option is used, those available with the +-o + +option to the set builtin command. +With no options, or with the +-p + +option, a list of all settable options is displayed, with +an indication of whether or not each is set; +if optnames are supplied, the output is restricted to those options. +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, +shopt + +shows only 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: +

+ + + +

+
assoc_expand_once + +
+If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation, while executing +builtins that can perform variable assignments, +and while executing builtins that perform array dereferencing. +
autocd + +
+If set, a command name that is the name of a directory is executed as if +it were the argument to the cd command. +This option is only used by interactive shells. +
cdable_vars + +
+If 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 filename 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. +
checkjobs + +
+If set, bash lists the status of any stopped and running jobs before +exiting an interactive shell. If any jobs are running, this causes +the exit to be deferred until a second exit is attempted without an +intervening command (see +JOB CONTROL + + +above). The shell always +postpones exiting if any jobs are stopped. +
checkwinsize + +
+If set, bash checks the window size after each external (non-builtin) +command and, if necessary, updates the values of +LINES + + +and +COLUMNS. + + +This option is enabled by default. +
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. +This option is enabled by default, but only has an effect if command +history is enabled, as described above under +HISTORY. + + + +
compat31 + +
+
compat32 + +
+
compat40 + +
+
compat41 + +
+
compat42 + +
+
compat43 + +
+
compat44 + +
+ +These control aspects of the shell's compatibility mode +(see +SHELL COMPATIBILITY MODE + + +below). +
complete_fullquote + +
+If set, +bash + +quotes all shell metacharacters in filenames and directory names when +performing completion. +If not set, +bash + +removes metacharacters such as the dollar sign from the set of +characters that will be quoted in completed filenames +when these metacharacters appear in shell variable references in words to be +completed. +This means that dollar signs in variable names that expand to directories +will not be quoted; +however, any dollar signs appearing in filenames will not be quoted, either. +This is active only when bash is using backslashes to quote completed +filenames. +This variable is set by default, which is the default bash behavior in +versions through 4.2. +
direxpand + +
+If set, +bash + +replaces directory names with the results of word expansion when performing +filename completion. This changes the contents of the readline editing +buffer. +If not set, +bash + +attempts to preserve what the user typed. +
dirspell + +
+If set, +bash + +attempts spelling correction on directory names during word completion +if the directory name initially supplied does not exist. +
dotglob + +
+If set, +bash + +includes filenames beginning with a `.' in the results of pathname +expansion. +The filenames +``.'' + +and +``..'' + +must always be matched explicitly, even if +dotglob + +is set. +
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 at shell invocation, +or in a shell startup file, +arrange to execute the debugger profile +before the shell starts, identical to the --debugger option. +If set after invocation, 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), the shell simulates +a call to return. +
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 +ERR 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. +
globasciiranges + +
+If set, range expressions used in pattern matching bracket expressions (see +Pattern Matching + + +above) behave as if in the traditional C locale when performing +comparisons. That is, the current locale's collating sequence +is not taken into account, so +b + +will not collate between +A + +and +B, + +and upper-case and lower-case ASCII characters will collate together. +
globstar + +
+If set, the pattern ** used in a pathname expansion context will +match all files and zero or more directories and subdirectories. +If the pattern is followed by a /, only directories and +subdirectories match. +
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. +
inherit_errexit + +
+If set, command substitution inherits the value of the errexit option, +instead of unsetting it in the subshell environment. +This option is enabled when posix mode is enabled. +
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. +
lastpipe + +
+If set, and job control is not active, the shell runs the last command of +a pipeline not executed in the background in the current shell environment. +
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. +
localvar_inherit + +
+If set, local variables inherit the value and attributes of a variable of +the same name that exists at a previous scope before any new value is +assigned. The nameref attribute is not inherited. +
localvar_unset + +
+If set, calling unset on local variables in previous function scopes +marks them so subsequent lookups find them unset until that function +returns. This is identical to the behavior of unsetting local variables +at the current function scope. +
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, +when performing pattern substitution word expansions, +or when filtering possible completions as part of programmable completion. +
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. +
progcomp_alias + +
+If set, and programmable completion is enabled, bash treats a command +name that doesn't have any completions as a possible alias and attempts +alias expansion. If it has an alias, bash attempts programmable +completion using the command word resulting from the expanded alias. +
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. A login shell cannot be suspended; the +-f + +option can be used to override this and force the suspension. +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 (true) or 1 (false) 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. +The evaluation depends on the number of arguments; see below. +Operator precedence is used when there are five or more arguments. +

+ +
+
! 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
+The following conditions are applied in the order listed. +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. +The -a and -o operators are considered binary operators +when there are three arguments. +If the first argument is !, the value is the negation of +the two-argument test using the second and third arguments. +If the first argument is exactly ( and the third argument is +exactly ), the result is the one-argument test of the second +argument. +Otherwise, the expression is false. +
4 arguments
+If the first argument is !, the result is the negation of +the three-argument expression composed of the remaining 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. +

+ + +

+

+ +When used with test or [, the < and > operators +sort lexicographically using ASCII ordering. +

+ + +
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 +RETURN, + + +the command +arg + +is executed each time a shell function or a script executed with +the . or source builtins finishes executing. +

+ + +If a +sigspec + +is +ERR, + + +the command +arg + +is executed whenever +a pipeline (which may consist of a single simple +command), a list, or a compound command returns a +non-zero exit status, +subject to the following conditions. +The +ERR + + +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 command executed in a +&& + +or +|| + +list except the command following the final && or ||, +any command in a pipeline but the last, +or if the command's return value is +being inverted using +!. + +These are the same conditions obeyed by the errexit (-e) option. +

+ + +Signals ignored upon entry to the shell cannot be trapped or reset. +Trapped signals that are not being ignored are reset to their original +values in a subshell or subshell environment when one 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, which is 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 all of the arguments are found, false if +any are not found. +
ulimit [-HS] -a
+ +
ulimit [-HS] [-bcdefiklmnpqrstuvxPRT [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 by a non-root user 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, if appropriate, +are printed before the value. +Other options are interpreted as follows: +
+ +
+
-a + +
+All current limits are reported; no limits are set +
-b + +
+The maximum socket buffer size +
-c + +
+The maximum size of core files created +
-d + +
+The maximum size of a process's data segment +
-e + +
+The maximum scheduling priority ("nice") +
-f + +
+The maximum size of files written by the shell and its children +
-i + +
+The maximum number of pending signals +
-k + +
+The maximum number of kqueues that may be allocated +
-l + +
+The maximum size that may be locked into memory +
-m + +
+The maximum resident set size (many systems do not honor this limit) +
-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 and, on +some systems, to its children +
-x + +
+The maximum number of file locks +
-P + +
+The maximum number of pseudoterminals +
-R + +
+The maximum time a real-time process can run before blocking, in microseconds +
-T + +
+The maximum number of threads + +
+

+ +If +limit + +is given, and the +-a + +option is not used, +limit is the new value of the specified resource. +If no option is given, then +-f + +is assumed. Values are in 1024-byte increments, except for +-t, + +which is in seconds; +-R, + +which is in microseconds; +-p, + +which is in units of 512-byte blocks; +-P, + +-T, + +-b, + +-k, + +-n, + +and +-u, + +which are unscaled values; +and, when in posix mode, +-c + +and +-f, + +which are in 512-byte increments. +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] [-n] [name ...]
+For each +name, + +remove the corresponding variable or function. +If the +-v + +option is given, each +name + +refers to a shell variable, and that variable is removed. +Read-only variables may not be unset. +If +-f + +is specified, each +name + +refers to a shell function, and the function definition +is removed. +If the +-n + +option is supplied, and name is a variable with the nameref +attribute, name will be unset rather than the variable it +references. +-n has no effect if the -f option is supplied. +If no options are supplied, each name refers to a variable; if +there is no variable by that name, a function with that name, if any, is +unset. +Each unset variable or function is removed from the environment +passed to subsequent commands. +If any of +BASH_ALIASES, + + +BASH_ARGV0, + + +BASH_CMDS, + + +BASH_COMMAND, + + +BASH_SUBSHELL, + + +BASHPID, + + +COMP_WORDBREAKS, + + +DIRSTACK, + + +EPOCHREALTIME, + + +EPOCHSECONDS, + + +FUNCNAME, + + +GROUPS, + + +HISTCMD, + + +LINENO, + + +RANDOM, + + +SECONDS, + + +or +SRANDOM + + +are unset, they lose their special properties, even if they are +subsequently reset. The exit status is true unless a +name + +is readonly. +
wait [-fn] [-p varname] [id ...]
+Wait for each specified child process and return its termination status. +Each +id + +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 +id + +is not given, +wait waits for all running background jobs and +the last-executed process substitution, if its process id is the same as +$!, +and the return status is zero. +If the -n option is supplied, +wait waits for a single job +from the list of ids or, if no ids are supplied, any job, +to complete and returns its exit status. +If none of the supplied arguments is a child of the shell, or if no arguments +are supplied and the shell has no unwaited-for children, the exit status +is 127. +If the -p option is supplied, the process or job identifier of the job +for which the exit status is returned is assigned to the variable +varname named by the option argument. +The variable will be unset initially, before any assignment. +This is useful only when the -n option is supplied. +Supplying the -f option, when job control is enabled, +forces wait to wait for id to terminate before returning +its status, instead of returning when it changes status. +If +id + +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. +
+  +

SHELL COMPATIBILITY MODE

+ +Bash-4.0 introduced the concept of a `shell compatibility level', specified +as a set of options to the shopt builtin +compat31, + +compat32, + +compat40, + +compat41, + +and so on). +There is only one current +compatibility level -- each option is mutually exclusive. +The compatibility level is intended to allow users to select behavior +from previous versions that is incompatible with newer versions +while they migrate scripts to use current features and +behavior. It's intended to be a temporary solution. +

+ +This section does not mention behavior that is standard for a particular +version (e.g., setting compat32 means that quoting the rhs of the regexp +matching operator quotes special regexp characters in the word, which is +default behavior in bash-3.2 and above). +

+ +If a user enables, say, compat32, it may affect the behavior of other +compatibility levels up to and including the current compatibility level. +The idea is that each compatibility level controls behavior that changed +in that version of bash, +but that behavior may have been present in earlier versions. +For instance, the change to use locale-based comparisons with the [[ +command came in bash-4.1, and earlier versions used ASCII-based comparisons, +so enabling compat32 will enable ASCII-based comparisons as well. +That granularity may not be sufficient for +all uses, and as a result users should employ compatibility levels carefully. +Read the documentation for a particular feature to find out the +current behavior. +

+ +Bash-4.3 introduced a new shell variable: +BASH_COMPAT. + + +The value assigned +to this variable (a decimal version number like 4.2, or an integer +corresponding to the compatNN option, like 42) determines the +compatibility level. +

+ +Starting with bash-4.4, Bash has begun deprecating older compatibility +levels. +Eventually, the options will be removed in favor of +BASH_COMPAT. + + +

+ +Bash-5.0 is the final version for which there will be an individual shopt +option for the previous version. Users should use +BASH_COMPAT + + +on bash-5.0 and later versions. +

+ +The following table describes the behavior changes controlled by each +compatibility level setting. +The compatNN tag is used as shorthand for setting the +compatibility level +to NN using one of the following mechanisms. +For versions prior to bash-5.0, the compatibility level may be set using +the corresponding compatNN shopt option. +For bash-4.3 and later versions, the +BASH_COMPAT + + +variable is preferred, +and it is required for bash-5.1 and later versions. +

+
compat31
+ +
+
+
*
+quoting the rhs of the [[ command's regexp matching operator (=~) +has no special effect +
+ + +
compat32
+ +
+
+
*
+interrupting a command list such as "a ; b ; c" causes the execution +of the next command in the list (in bash-4.0 and later versions, +the shell acts as if it received the interrupt, so +interrupting one command in a list aborts the execution of the +entire list) +
+ + +
compat40
+ +
+
+
*
+the < and > operators to the [[ command do not +consider the current locale when comparing strings; they use ASCII +ordering. +Bash versions prior to bash-4.1 use ASCII collation and +strcmp(3); + +bash-4.1 and later use the current locale's collation sequence and +strcoll(3). + +
+ + +
compat41
+ +
+
+
*
+in posix mode, time may be followed by options and still be +recognized as a reserved word (this is POSIX interpretation 267) +
*
+in posix mode, the parser requires that an even number of single +quotes occur in the word portion of a double-quoted +parameter expansion and treats them specially, so that characters within +the single quotes are considered quoted +(this is POSIX interpretation 221) +
+ + +
compat42
+ +
+
+
*
+the replacement string in double-quoted pattern substitution does not +undergo quote removal, as it does in versions after bash-4.2 +
*
+in posix mode, single quotes are considered special when expanding +the word portion of a double-quoted parameter expansion +and can be used to quote a closing brace or other special character +(this is part of POSIX interpretation 221); +in later versions, single quotes +are not special within double-quoted word expansions +
+ + +
compat43
+ +
+
+
*
+the shell does not print a warning message if an attempt is made to +use a quoted compound assignment as an argument to declare +(declare -a foo='(1 2)'). Later versions warn that this usage is +deprecated +
*
+word expansion errors are considered non-fatal errors that cause the +current command to fail, even in posix mode +(the default behavior is to make them fatal errors that cause the shell +to exit) +
*
+when executing a shell function, the loop state (while/until/etc.) +is not reset, so break or continue in that function will break +or continue loops in the calling context. Bash-4.4 and later reset +the loop state to prevent this +
+ + +
compat44
+ +
+
+
*
+the shell sets up the values used by +BASH_ARGV + + +and +BASH_ARGC + + +so they can expand to the shell's positional parameters even if extended +debugging mode is not enabled +
*
+a subshell inherits loops from its parent context, so break +or continue will cause the subshell to exit. +Bash-5.0 and later reset the loop state to prevent the exit +
*
+variable assignments preceding builtins like export and readonly +that set attributes continue to affect variables with the same +name in the calling environment even if the shell is not in posix +mode +
+ + +
compat50
+ +
+
+
*
+Bash-5.1 changed the way +$RANDOM + + +is generated to introduce slightly +more randomness. If the shell compatibility level is set to 50 or +lower, it reverts to the method from bash-5.0 and previous versions, +so seeding the random number generator by assigning a value to +RANDOM + + +will produce the same sequence as in bash-5.0 +
*
+If the command hash table is empty, bash versions prior to bash-5.1 +printed an informational message to that effect, even when producing +output that can be reused as input. Bash-5.1 suppresses that message +when the -l option is supplied. +
+ + + + +
+  +

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, + + +HISTFILE, + + +ENV, + + +or +BASH_ENV + + +
*
+specifying command names containing +/ + +
*
+specifying a filename containing a +/ + +as an argument to the +. + +builtin command +
*
+specifying a filename containing a slash as an argument to the +history + +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 --
+http://pubs.opengroup.org/onlinepubs/9699919799/ +
http://tiswww.case.edu/~chet/bash/POSIX -- a description of posix mode
+
sh(1), ksh(1), csh(1)
+
emacs(1), vi(1)
+
readline(3)
+ +
+  +

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.ramey@case.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/gnu/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.ramey@case.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. +

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

+ +There may be only one active coprocess at a time. + + + +


+ + + +
GNU Bash 5.12020 October 29BASH(1) +
+
+ 

Index

+
+
NAME
+
SYNOPSIS
+
COPYRIGHT
+
DESCRIPTION
+
OPTIONS
+
ARGUMENTS
+
INVOCATION
+
DEFINITIONS
+
RESERVED WORDS
+
SHELL GRAMMAR
+
+
Simple Commands
+
Pipelines
+
Lists
+
Compound Commands
+
Coprocesses
+
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
+
Appending 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
+
SHELL COMPATIBILITY MODE
+
RESTRICTED SHELL
+
SEE ALSO
+
FILES
+
AUTHORS
+
BUG REPORTS
+
BUGS
+
+
+This document was created by man2html from bash.1.
+Time: 18 November 2020 15:13:09 EST + + diff --git a/bash-5.1/doc/bash.info b/bash-5.1/doc/bash.info new file mode 100644 index 0000000..2fd137a --- /dev/null +++ b/bash-5.1/doc/bash.info @@ -0,0 +1,12123 @@ +This is bash.info, produced by makeinfo version 6.7 from +bashref.texi. + +This text is a brief description of the features that are present in the +Bash shell (version 5.1, 29 October 2020). + + This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.1. + + Copyright (C) 1988-2020 Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, + Version 1.3 or any later version published by the Free Software + Foundation; with no Invariant Sections, no Front-Cover Texts, and + no Back-Cover Texts. A copy of the license is included in the + section entitled "GNU Free Documentation License". +INFO-DIR-SECTION Basics +START-INFO-DIR-ENTRY +* Bash: (bash). The GNU Bourne-Again SHell. +END-INFO-DIR-ENTRY + + +File: bash.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) + +Bash Features +************* + +This text is a brief description of the features that are present in the +Bash shell (version 5.1, 29 October 2020). The Bash home page is +. + + This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.1. + + Bash contains features that appear in other popular shells, and some +features that only appear in Bash. Some of the shells that Bash has +borrowed concepts from are the Bourne Shell ('sh'), the Korn Shell +('ksh'), and the C-shell ('csh' and its successor, 'tcsh'). The +following menu breaks the features up into categories, noting which +features were inspired by other shells and which are specific to Bash. + + This manual is meant as a brief introduction to features found in +Bash. The Bash manual page should be used as the definitive reference +on shell behavior. + +* Menu: + +* Introduction:: An introduction to the shell. +* Definitions:: Some definitions used in the rest of this + manual. +* Basic Shell Features:: The shell "building blocks". +* Shell Builtin Commands:: Commands that are a part of the shell. +* Shell Variables:: Variables used or set by Bash. +* Bash Features:: Features found only in Bash. +* Job Control:: What job control is and how Bash allows you + to use it. +* Command Line Editing:: Chapter describing the command line + editing features. +* Using History Interactively:: Command History Expansion +* Installing Bash:: How to build and install Bash on your system. +* Reporting Bugs:: How to report bugs in Bash. +* Major Differences From The Bourne Shell:: A terse list of the differences + between Bash and historical + versions of /bin/sh. +* GNU Free Documentation License:: Copying and sharing this documentation. +* Indexes:: Various indexes for this manual. + + +File: bash.info, Node: Introduction, Next: Definitions, Up: Top + +1 Introduction +************** + +* Menu: + +* What is Bash?:: A short description of Bash. +* What is a shell?:: A brief introduction to shells. + + +File: bash.info, Node: What is Bash?, Next: What is a shell?, Up: Introduction + +1.1 What is Bash? +================= + +Bash is the shell, or command language interpreter, for the GNU +operating system. The name is an acronym for the 'Bourne-Again SHell', +a pun on Stephen Bourne, the author of the direct ancestor of the +current Unix shell 'sh', which appeared in the Seventh Edition Bell Labs +Research version of Unix. + + Bash is largely compatible with 'sh' and incorporates useful features +from the Korn shell 'ksh' and the C shell 'csh'. It is intended to be a +conformant implementation of the IEEE POSIX Shell and Tools portion of +the IEEE POSIX specification (IEEE Standard 1003.1). It offers +functional improvements over 'sh' for both interactive and programming +use. + + While the GNU operating system provides other shells, including a +version of 'csh', Bash is the default shell. Like other GNU software, +Bash is quite portable. It currently runs on nearly every version of +Unix and a few other operating systems - independently-supported ports +exist for MS-DOS, OS/2, and Windows platforms. + + +File: bash.info, Node: What is a shell?, Prev: What is Bash?, Up: Introduction + +1.2 What is a shell? +==================== + +At its base, a shell is simply a macro processor that executes commands. +The term macro processor means functionality where text and symbols are +expanded to create larger expressions. + + A Unix shell is both a command interpreter and a programming +language. As a command interpreter, the shell provides the user +interface to the rich set of GNU utilities. The programming language +features allow these utilities to be combined. Files containing +commands can be created, and become commands themselves. These new +commands have the same status as system commands in directories such as +'/bin', allowing users or groups to establish custom environments to +automate their common tasks. + + Shells may be used interactively or non-interactively. In +interactive mode, they accept input typed from the keyboard. When +executing non-interactively, shells execute commands read from a file. + + A shell allows execution of GNU commands, both synchronously and +asynchronously. The shell waits for synchronous commands to complete +before accepting more input; asynchronous commands continue to execute +in parallel with the shell while it reads and executes additional +commands. The "redirection" constructs permit fine-grained control of +the input and output of those commands. Moreover, the shell allows +control over the contents of commands' environments. + + Shells also provide a small set of built-in commands ("builtins") +implementing functionality impossible or inconvenient to obtain via +separate utilities. For example, 'cd', 'break', 'continue', and 'exec' +cannot be implemented outside of the shell because they directly +manipulate the shell itself. The 'history', 'getopts', 'kill', or 'pwd' +builtins, among others, could be implemented in separate utilities, but +they are more convenient to use as builtin commands. All of the shell +builtins are described in subsequent sections. + + While executing commands is essential, most of the power (and +complexity) of shells is due to their embedded programming languages. +Like any high-level language, the shell provides variables, flow control +constructs, quoting, and functions. + + Shells offer features geared specifically for interactive use rather +than to augment the programming language. These interactive features +include job control, command line editing, command history and aliases. +Each of these features is described in this manual. + + +File: bash.info, Node: Definitions, Next: Basic Shell Features, Prev: Introduction, Up: Top + +2 Definitions +************* + +These definitions are used throughout the remainder of this manual. + +'POSIX' + A family of open system standards based on Unix. Bash is primarily + concerned with the Shell and Utilities portion of the POSIX 1003.1 + standard. + +'blank' + A space or tab character. + +'builtin' + A command that is implemented internally by the shell itself, + rather than by an executable program somewhere in the file system. + +'control operator' + A 'token' that performs a control function. It is a 'newline' or + one of the following: '||', '&&', '&', ';', ';;', ';&', ';;&', '|', + '|&', '(', or ')'. + +'exit status' + The value returned by a command to its caller. The value is + restricted to eight bits, so the maximum value is 255. + +'field' + A unit of text that is the result of one of the shell expansions. + After expansion, when executing a command, the resulting fields are + used as the command name and arguments. + +'filename' + A string of characters used to identify a file. + +'job' + A set of processes comprising a pipeline, and any processes + descended from it, that are all in the same process group. + +'job control' + A mechanism by which users can selectively stop (suspend) and + restart (resume) execution of processes. + +'metacharacter' + A character that, when unquoted, separates words. A metacharacter + is a 'space', 'tab', 'newline', or one of the following characters: + '|', '&', ';', '(', ')', '<', or '>'. + +'name' + A 'word' consisting solely of letters, numbers, and underscores, + and beginning with a letter or underscore. 'Name's are used as + shell variable and function names. Also referred to as an + 'identifier'. + +'operator' + A 'control operator' or a 'redirection operator'. *Note + Redirections::, for a list of redirection operators. Operators + contain at least one unquoted 'metacharacter'. + +'process group' + A collection of related processes each having the same process + group ID. + +'process group ID' + A unique identifier that represents a 'process group' during its + lifetime. + +'reserved word' + A 'word' that has a special meaning to the shell. Most reserved + words introduce shell flow control constructs, such as 'for' and + 'while'. + +'return status' + A synonym for 'exit status'. + +'signal' + A mechanism by which a process may be notified by the kernel of an + event occurring in the system. + +'special builtin' + A shell builtin command that has been classified as special by the + POSIX standard. + +'token' + A sequence of characters considered a single unit by the shell. It + is either a 'word' or an 'operator'. + +'word' + A sequence of characters treated as a unit by the shell. Words may + not include unquoted 'metacharacters'. + + +File: bash.info, Node: Basic Shell Features, Next: Shell Builtin Commands, Prev: Definitions, Up: Top + +3 Basic Shell Features +********************** + +Bash is an acronym for 'Bourne-Again SHell'. The Bourne shell is the +traditional Unix shell originally written by Stephen Bourne. All of the +Bourne shell builtin commands are available in Bash, The rules for +evaluation and quoting are taken from the POSIX specification for the +'standard' Unix shell. + + This chapter briefly summarizes the shell's 'building blocks': +commands, control structures, shell functions, shell parameters, shell +expansions, redirections, which are a way to direct input and output +from and to named files, and how the shell executes commands. + +* Menu: + +* Shell Syntax:: What your input means to the shell. +* Shell Commands:: The types of commands you can use. +* Shell Functions:: Grouping commands by name. +* Shell Parameters:: How the shell stores values. +* Shell Expansions:: How Bash expands parameters and the various + expansions available. +* Redirections:: A way to control where input and output go. +* Executing Commands:: What happens when you run a command. +* Shell Scripts:: Executing files of shell commands. + + +File: bash.info, Node: Shell Syntax, Next: Shell Commands, Up: Basic Shell Features + +3.1 Shell Syntax +================ + +* Menu: + +* Shell Operation:: The basic operation of the shell. +* Quoting:: How to remove the special meaning from characters. +* Comments:: How to specify comments. + +When the shell reads input, it proceeds through a sequence of +operations. If the input indicates the beginning of a comment, the +shell ignores the comment symbol ('#'), and the rest of that line. + + Otherwise, roughly speaking, the shell reads its input and divides +the input into words and operators, employing the quoting rules to +select which meanings to assign various words and characters. + + The shell then parses these tokens into commands and other +constructs, removes the special meaning of certain words or characters, +expands others, redirects input and output as needed, executes the +specified command, waits for the command's exit status, and makes that +exit status available for further inspection or processing. + + +File: bash.info, Node: Shell Operation, Next: Quoting, Up: Shell Syntax + +3.1.1 Shell Operation +--------------------- + +The following is a brief description of the shell's operation when it +reads and executes a command. Basically, the shell does the following: + + 1. Reads its input from a file (*note Shell Scripts::), from a string + supplied as an argument to the '-c' invocation option (*note + Invoking Bash::), or from the user's terminal. + + 2. Breaks the input into words and operators, obeying the quoting + rules described in *note Quoting::. These tokens are separated by + 'metacharacters'. Alias expansion is performed by this step (*note + Aliases::). + + 3. Parses the tokens into simple and compound commands (*note Shell + Commands::). + + 4. Performs the various shell expansions (*note Shell Expansions::), + breaking the expanded tokens into lists of filenames (*note + Filename Expansion::) and commands and arguments. + + 5. Performs any necessary redirections (*note Redirections::) and + removes the redirection operators and their operands from the + argument list. + + 6. Executes the command (*note Executing Commands::). + + 7. Optionally waits for the command to complete and collects its exit + status (*note Exit Status::). + + +File: bash.info, Node: Quoting, Next: Comments, Prev: Shell Operation, Up: Shell Syntax + +3.1.2 Quoting +------------- + +* Menu: + +* Escape Character:: How to remove the special meaning from a single + character. +* Single Quotes:: How to inhibit all interpretation of a sequence + of characters. +* Double Quotes:: How to suppress most of the interpretation of a + sequence of characters. +* ANSI-C Quoting:: How to expand ANSI-C sequences in quoted strings. +* Locale Translation:: How to translate strings into different languages. + +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 shell metacharacters (*note 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 (*note +History Interaction::), the HISTORY EXPANSION character, usually '!', +must be quoted to prevent history expansion. *Note Bash History +Facilities::, for more details concerning history expansion. + + There are three quoting mechanisms: the ESCAPE CHARACTER, single +quotes, and double quotes. + + +File: bash.info, Node: Escape Character, Next: Single Quotes, Up: Quoting + +3.1.2.1 Escape Character +........................ + +A non-quoted backslash '\' is the Bash 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 itself is +not quoted, the '\newline' is treated as a line continuation (that is, +it is removed from the input stream and effectively ignored). + + +File: bash.info, Node: Single Quotes, Next: Double Quotes, Prev: Escape Character, Up: Quoting + +3.1.2.2 Single Quotes +..................... + +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. + + +File: bash.info, Node: Double Quotes, Next: ANSI-C Quoting, Prev: Single Quotes, Up: Quoting + +3.1.2.3 Double Quotes +..................... + +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, '!'. When the shell is in +POSIX mode (*note Bash POSIX Mode::), the '!' has no special meaning +within double quotes, even when history expansion is enabled. The +characters '$' and '`' retain their special meaning within double quotes +(*note Shell Expansions::). The backslash retains its special meaning +only when followed by one of the following characters: '$', '`', '"', +'\', or 'newline'. Within double quotes, backslashes that are followed +by one of these characters are removed. Backslashes preceding +characters without a special meaning are left unmodified. 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 (*note Shell Parameter Expansion::). + + +File: bash.info, Node: ANSI-C Quoting, Next: Locale Translation, Prev: Double Quotes, Up: Quoting + +3.1.2.4 ANSI-C Quoting +...................... + +Words of the form '$'STRING'' 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' +'\E' + an escape character (not ANSI C) +'\f' + form feed +'\n' + newline +'\r' + carriage return +'\t' + horizontal tab +'\v' + vertical tab +'\\' + backslash +'\'' + single quote +'\"' + double quote +'\?' + question mark +'\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) +'\uHHHH' + the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value HHHH (one to four hex digits) +'\UHHHHHHHH' + the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value HHHHHHHH (one to eight hex digits) +'\cX' + a control-X character + +The expanded result is single-quoted, as if the dollar sign had not been +present. + + +File: bash.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoting + +3.1.2.5 Locale-Specific Translation +................................... + +A double-quoted string preceded by a dollar sign ('$') will cause the +string to be translated according to the current locale. The GETTEXT +infrastructure performs the message catalog lookup and translation, +using the 'LC_MESSAGES' and 'TEXTDOMAIN' shell variables, as explained +below. See the gettext documentation for additional details. If the +current locale is 'C' or 'POSIX', or if there are no translations +available, the dollar sign is ignored. If the string is translated and +replaced, the replacement is double-quoted. + + Some systems use the message catalog selected by the 'LC_MESSAGES' +shell variable. Others create the name of the message catalog from the +value of the 'TEXTDOMAIN' shell variable, possibly adding a suffix of +'.mo'. If you use the 'TEXTDOMAIN' variable, you may need to set the +'TEXTDOMAINDIR' variable to the location of the message catalog files. +Still others use both variables in this fashion: +'TEXTDOMAINDIR'/'LC_MESSAGES'/LC_MESSAGES/'TEXTDOMAIN'.mo. + + +File: bash.info, Node: Comments, Prev: Quoting, Up: Shell Syntax + +3.1.3 Comments +-------------- + +In a non-interactive shell, or an interactive shell in which the +'interactive_comments' option to the 'shopt' builtin is enabled (*note +The Shopt Builtin::), a word beginning with '#' causes that word and all +remaining characters on that line to be ignored. An interactive shell +without the 'interactive_comments' option enabled does not allow +comments. The 'interactive_comments' option is on by default in +interactive shells. *Note Interactive Shells::, for a description of +what makes a shell interactive. + + +File: bash.info, Node: Shell Commands, Next: Shell Functions, Prev: Shell Syntax, Up: Basic Shell Features + +3.2 Shell Commands +================== + +A simple shell command such as 'echo a b c' consists of the command +itself followed by arguments, separated by spaces. + + More complex shell commands are composed of simple commands arranged +together in a variety of ways: in a pipeline in which the output of one +command becomes the input of a second, in a loop or conditional +construct, or in some other grouping. + +* Menu: + +* Reserved Words:: Words that have special meaning to the shell. +* Simple Commands:: The most common type of command. +* Pipelines:: Connecting the input and output of several + commands. +* Lists:: How to execute commands sequentially. +* Compound Commands:: Shell commands for control flow. +* Coprocesses:: Two-way communication between commands. +* GNU Parallel:: Running commands in parallel. + + +File: bash.info, Node: Reserved Words, Next: Simple Commands, Up: Shell Commands + +3.2.1 Reserved Words +-------------------- + +Reserved words are words that have special meaning to the shell. They +are used to begin and end the shell's compound commands. + + The following words are recognized as reserved when unquoted and the +first word of a command (see below for exceptions): + +'if' 'then' 'elif' 'else' 'fi' 'time' +'for' 'in' 'until' 'while' 'do' 'done' +'case' 'esac' 'coproc''select''function' +'{' '}' '[[' ']]' '!' + +'in' is recognized as a reserved word if it is the third word of a +'case' or 'select' command. 'in' and 'do' are recognized as reserved +words if they are the third word in a 'for' command. + + +File: bash.info, Node: Simple Commands, Next: Pipelines, Prev: Reserved Words, Up: Shell Commands + +3.2.2 Simple Commands +--------------------- + +A simple command is the kind of command encountered most often. It's +just a sequence of words separated by 'blank's, terminated by one of the +shell's control operators (*note Definitions::). The first word +generally specifies a command to be executed, with the rest of the words +being that command's arguments. + + The return status (*note Exit Status::) of a simple command is its +exit status as provided by the POSIX 1003.1 'waitpid' function, or 128+N +if the command was terminated by signal N. + + +File: bash.info, Node: Pipelines, Next: Lists, Prev: Simple Commands, Up: Shell Commands + +3.2.3 Pipelines +--------------- + +A 'pipeline' is a sequence of one or more commands separated by one of +the control operators '|' or '|&'. + + The format for a pipeline is + [time [-p]] [!] COMMAND1 [ | or |& COMMAND2 ] ... + +The output of each command in the pipeline is connected via a pipe to +the input of the next command. That is, each command reads the previous +command's output. This connection is performed before any redirections +specified by the command. + + If '|&' is used, COMMAND1's standard error, in addition to its +standard output, is connected to COMMAND2's standard input through the +pipe; it is shorthand for '2>&1 |'. This implicit redirection of the +standard error to the standard output is performed after any +redirections specified by the command. + + The reserved word 'time' causes timing statistics to be printed for +the pipeline once it finishes. The statistics currently consist of +elapsed (wall-clock) time and user and system time consumed by the +command's execution. The '-p' option changes the output format to that +specified by POSIX. When the shell is in POSIX mode (*note Bash POSIX +Mode::), it does not recognize 'time' as a reserved word if the next +token begins with a '-'. The 'TIMEFORMAT' variable may be set to a +format string that specifies how the timing information should be +displayed. *Note Bash Variables::, for a description of the available +formats. The use of 'time' as a reserved word permits the timing of +shell builtins, shell functions, and pipelines. An external 'time' +command cannot time these easily. + + When the shell is in POSIX mode (*note Bash POSIX Mode::), 'time' may +be followed by a newline. In this case, the shell displays the total +user and system time consumed by the shell and its children. The +'TIMEFORMAT' variable may be used to specify the format of the time +information. + + If the pipeline is not executed asynchronously (*note Lists::), the +shell waits for all commands in the pipeline to complete. + + Each command in a pipeline is executed in its own subshell, which is +a separate process (*note Command Execution Environment::). If the +'lastpipe' option is enabled using the 'shopt' builtin (*note The Shopt +Builtin::), the last element of a pipeline may be run by the shell +process. + + The exit status of a pipeline is the exit status of the last command +in the pipeline, unless the 'pipefail' option is enabled (*note The Set +Builtin::). 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 the pipeline, the exit status 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. + + +File: bash.info, Node: Lists, Next: Compound Commands, Prev: Pipelines, Up: Shell Commands + +3.2.4 Lists of Commands +----------------------- + +A 'list' is a sequence of one or more pipelines separated by one of the +operators ';', '&', '&&', or '||', and optionally terminated by one of +';', '&', or a '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' to delimit +commands, equivalent to a semicolon. + + If a command is terminated by the control operator '&', the shell +executes the command asynchronously in a subshell. This is known as +executing the command in the BACKGROUND, and these are referred to as +ASYNCHRONOUS commands. The shell does not wait for the command to +finish, and the return status is 0 (true). When job control is not +active (*note Job Control::), the standard input for asynchronous +commands, in the absence of any explicit redirections, is redirected +from '/dev/null'. + + 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. + + AND and OR lists are sequences of one or more pipelines separated by +the control operators '&&' and '||', respectively. AND and OR lists are +executed with left associativity. + + An AND list has the form + COMMAND1 && COMMAND2 + +COMMAND2 is executed if, and only if, COMMAND1 returns an exit status of +zero (success). + + 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. + + +File: bash.info, Node: Compound Commands, Next: Coprocesses, Prev: Lists, Up: Shell Commands + +3.2.5 Compound Commands +----------------------- + +* Menu: + +* Looping Constructs:: Shell commands for iterative action. +* Conditional Constructs:: Shell commands for conditional execution. +* Command Grouping:: Ways to group commands. + +Compound commands are the shell programming language constructs. Each +construct begins with a reserved word or control operator and is +terminated by a corresponding reserved word or operator. Any +redirections (*note Redirections::) associated with a compound command +apply to all commands within that compound command unless explicitly +overridden. + + In most cases a list of commands in a compound command's description +may be separated from the rest of the command by one or more newlines, +and may be followed by a newline in place of a semicolon. + + Bash provides looping constructs, conditional commands, and +mechanisms to group commands and execute them as a unit. + + +File: bash.info, Node: Looping Constructs, Next: Conditional Constructs, Up: Compound Commands + +3.2.5.1 Looping Constructs +.......................... + +Bash supports the following looping constructs. + + Note that wherever a ';' appears in the description of a command's +syntax, it may be replaced with one or more newlines. + +'until' + The syntax of the 'until' command is: + + until TEST-COMMANDS; do CONSEQUENT-COMMANDS; done + + Execute CONSEQUENT-COMMANDS as long as TEST-COMMANDS has an exit + status which is not zero. The return status is the exit status of + the last command executed in CONSEQUENT-COMMANDS, or zero if none + was executed. + +'while' + The syntax of the 'while' command is: + + while TEST-COMMANDS; do CONSEQUENT-COMMANDS; done + + Execute CONSEQUENT-COMMANDS as long as TEST-COMMANDS has an exit + status of zero. The return status is the exit status of the last + command executed in CONSEQUENT-COMMANDS, or zero if none was + executed. + +'for' + The syntax of the 'for' command is: + + for NAME [ [in [WORDS ...] ] ; ] do COMMANDS; done + + Expand WORDS (*note Shell Expansions::), and execute COMMANDS once + for each member in the resultant list, with NAME bound to the + current member. If 'in WORDS' is not present, the 'for' command + executes the COMMANDS once for each positional parameter that is + set, as if 'in "$@"' had been specified (*note Special + Parameters::). + + The return status is the exit status of the last command that + executes. If there are no items in the expansion of WORDS, no + commands are executed, and the return status is zero. + + An alternate form of the 'for' command is also supported: + + for (( EXPR1 ; EXPR2 ; EXPR3 )) ; do COMMANDS ; done + + First, the arithmetic expression EXPR1 is evaluated according to + the rules described below (*note Shell Arithmetic::). The + arithmetic expression EXPR2 is then evaluated repeatedly until it + evaluates to zero. Each time EXPR2 evaluates to a non-zero value, + COMMANDS are 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 COMMANDS that is executed, or false if any of the + expressions is invalid. + + The 'break' and 'continue' builtins (*note Bourne Shell Builtins::) +may be used to control loop execution. + + +File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: Looping Constructs, Up: Compound Commands + +3.2.5.2 Conditional Constructs +.............................. + +'if' + The syntax of the 'if' command is: + + if TEST-COMMANDS; then + CONSEQUENT-COMMANDS; + [elif MORE-TEST-COMMANDS; then + MORE-CONSEQUENTS;] + [else ALTERNATE-CONSEQUENTS;] + fi + + The TEST-COMMANDS list is executed, and if its return status is + zero, the CONSEQUENT-COMMANDS list is executed. If TEST-COMMANDS + returns a non-zero status, each 'elif' list is executed in turn, + and if its exit status is zero, the corresponding MORE-CONSEQUENTS + is executed and the command completes. If 'else + ALTERNATE-CONSEQUENTS' is present, and the final command in the + final 'if' or 'elif' clause has a non-zero exit status, then + ALTERNATE-CONSEQUENTS is executed. The return status is the exit + status of the last command executed, or zero if no condition tested + true. + +'case' + The syntax of the 'case' command is: + + case WORD in + [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... + esac + + 'case' will selectively execute the COMMAND-LIST corresponding to + the first PATTERN that matches WORD. The match is performed + according to the rules described below in *note Pattern Matching::. + If the 'nocasematch' shell option (see the description of 'shopt' + in *note The Shopt Builtin::) is enabled, the match is performed + without regard to the case of alphabetic characters. The '|' is + used to separate multiple patterns, and the ')' operator terminates + a pattern list. A list of patterns and an associated command-list + is known as a CLAUSE. + + Each clause must be terminated with ';;', ';&', or ';;&'. The WORD + undergoes tilde expansion, parameter expansion, command + substitution, arithmetic expansion, and quote removal (*note Shell + Parameter Expansion::) before matching is attempted. Each PATTERN + undergoes tilde expansion, parameter expansion, command + substitution, and arithmetic expansion. + + There may be an arbitrary number of 'case' clauses, each terminated + by a ';;', ';&', or ';;&'. The first pattern that matches + determines the command-list that is executed. It's a common idiom + to use '*' as the final pattern to define the default case, since + that pattern will always match. + + Here is an example using 'case' in a script that could be used to + describe one interesting feature of an animal: + + echo -n "Enter the name of an animal: " + read ANIMAL + echo -n "The $ANIMAL has " + case $ANIMAL in + horse | dog | cat) echo -n "four";; + man | kangaroo ) echo -n "two";; + *) echo -n "an unknown number of";; + esac + echo " legs." + + + If the ';;' operator is used, no subsequent matches are attempted + after the first pattern match. Using ';&' in place of ';;' causes + execution to continue with the COMMAND-LIST associated with the + next clause, if any. Using ';;&' in place of ';;' causes the shell + to test the patterns in the next clause, if any, and execute any + associated COMMAND-LIST on a successful match, continuing the case + statement execution as if the pattern list had not matched. + + The return status is zero if no PATTERN is matched. Otherwise, the + return status is the exit status of the COMMAND-LIST executed. + +'select' + + The 'select' construct allows the easy generation of menus. It has + almost the same syntax as the 'for' command: + + select NAME [in WORDS ...]; do COMMANDS; 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 + output stream, each preceded by a number. If the 'in WORDS' is + omitted, the positional parameters are printed, as if 'in "$@"' had + been specified. The 'PS3' prompt is then displayed and a line is + read from the standard input. If the line consists of a number + corresponding to one of the displayed words, then the value of NAME + is set to that word. If the line is empty, the words and prompt + are displayed again. If 'EOF' is read, the 'select' command + completes. Any other value read causes NAME to be set to null. + The line read is saved in the variable 'REPLY'. + + The COMMANDS are executed after each selection until a 'break' + command is executed, at which point the 'select' command completes. + + Here is an example that allows the user to pick a filename from the + current directory, and displays the name and index of the file + selected. + + select fname in *; + do + echo you picked $fname \($REPLY\) + break; + done + +'((...))' + (( EXPRESSION )) + + The arithmetic EXPRESSION is evaluated according to the rules + described below (*note Shell Arithmetic::). 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" + *Note Bash Builtins::, for a full description of the 'let' builtin. + +'[[...]]' + [[ 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 in *note Bash Conditional Expressions::. + Word splitting and filename 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 used with '[[', the '<' and '>' operators sort + lexicographically using the current locale. + + When the '==' and '!=' operators are used, the string to the right + of the operator is considered a pattern and matched according to + the rules described below in *note Pattern Matching::, as if the + 'extglob' shell option were enabled. The '=' operator is identical + to '=='. If the 'nocasematch' shell option (see the description of + 'shopt' in *note The Shopt Builtin::) is enabled, the match is + performed without regard to the case of alphabetic characters. The + return value is 0 if the string matches ('==') or does not match + ('!=') the pattern, and 1 otherwise. Any part of the pattern may + be quoted to force the quoted portion to be matched as a string. + + An additional binary operator, '=~', is available, with the same + precedence as '==' and '!='. When it is used, the string to the + right of the operator is considered a POSIX extended regular + expression and matched accordingly (using the POSIX 'regcomp' and + 'regexec' interfaces usually described 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 'nocasematch' shell option + (see the description of 'shopt' in *note The Shopt Builtin::) is + enabled, the match is performed without regard to the case of + alphabetic characters. Any part of the pattern may be quoted to + force the quoted portion to be matched as a string. Bracket + expressions in regular expressions must be treated carefully, since + normal quoting characters lose their meanings between brackets. If + the pattern is stored in a shell variable, quoting the variable + expansion forces the entire pattern to be matched as a string. + + The pattern will match if it matches any part of the string. + Anchor the pattern using the '^' and '$' regular expression + operators to force it to match the entire string. The array + variable 'BASH_REMATCH' records which parts of the string matched + the pattern. The element of 'BASH_REMATCH' with index 0 contains + the portion of the string matching the entire regular expression. + Substrings matched by parenthesized subexpressions within the + regular expression are saved in the remaining 'BASH_REMATCH' + indices. The element of 'BASH_REMATCH' with index N is the portion + of the string matching the Nth parenthesized subexpression. + + For example, the following will match a line (stored in the shell + variable LINE) if there is a sequence of characters anywhere in the + value consisting of any number, including zero, of characters in + the 'space' character class, zero or one instances of 'a', then a + 'b': + [[ $line =~ [[:space:]]*(a)?b ]] + + That means values like 'aab' and ' aaaaaab' will match, as will a + line containing a 'b' anywhere in its value. + + Storing the regular expression in a shell variable is often a + useful way to avoid problems with quoting characters that are + special to the shell. It is sometimes difficult to specify a + regular expression literally without using quotes, or to keep track + of the quoting used by regular expressions while paying attention + to the shell's quote removal. Using a shell variable to store the + pattern decreases these problems. For example, the following is + equivalent to the above: + pattern='[[:space:]]*(a)?b' + [[ $line =~ $pattern ]] + + If you want to match a character that's special to the regular + expression grammar, it has to be quoted to remove its special + meaning. This means that in the pattern 'xxx.txt', the '.' matches + any character in the string (its usual regular expression meaning), + but in the pattern '"xxx.txt"' it can only match a literal '.'. + Shell programmers should take special care with backslashes, since + backslashes are used both by the shell and regular expressions to + remove the special meaning from the following character. The + following two sets of commands are _not_ equivalent: + pattern='\.' + + [[ . =~ $pattern ]] + [[ . =~ \. ]] + + [[ . =~ "$pattern" ]] + [[ . =~ '\.' ]] + + The first two matches will succeed, but the second two will not, + because in the second two the backslash will be part of the pattern + to be matched. In the first two examples, the backslash removes + the special meaning from '.', so the literal '.' matches. If the + string in the first examples were anything other than '.', say 'a', + the pattern would not match, because the quoted '.' in the pattern + loses its special meaning of matching any single character. + + 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. + + +File: bash.info, Node: Command Grouping, Prev: Conditional Constructs, Up: Compound Commands + +3.2.5.3 Grouping Commands +......................... + +Bash provides two ways to group a list of commands to be executed as a +unit. When commands are grouped, redirections may be applied to the +entire command list. For example, the output of all the commands in the +list may be redirected to a single stream. + +'()' + ( LIST ) + + Placing a list of commands between parentheses causes a subshell + environment to be created (*note Command Execution Environment::), + and each of the commands in LIST to be executed in that subshell. + Since the LIST is executed in a subshell, variable assignments do + not remain in effect after the subshell completes. + +'{}' + { LIST; } + + Placing a list of commands between curly braces causes the list to + be executed in the current shell context. No subshell is created. + The semicolon (or newline) following LIST is required. + + In addition to the creation of a subshell, there is a subtle +difference between these two constructs due to historical reasons. The +braces are 'reserved words', so they must be separated from the LIST by +'blank's or other shell metacharacters. The parentheses are +'operators', and are recognized as separate tokens by the shell even if +they are not separated from the LIST by whitespace. + + The exit status of both of these constructs is the exit status of +LIST. + + +File: bash.info, Node: Coprocesses, Next: GNU Parallel, Prev: Compound Commands, Up: Shell Commands + +3.2.6 Coprocesses +----------------- + +A 'coprocess' is a shell command preceded by the 'coproc' reserved word. +A coprocess is executed asynchronously in a subshell, as if the command +had been terminated with the '&' control operator, with a two-way pipe +established between the executing shell and the coprocess. + + The format for a coprocess is: + coproc [NAME] COMMAND [REDIRECTIONS] + +This creates a coprocess named NAME. If NAME is not supplied, the +default name is COPROC. NAME must not be supplied if COMMAND is a +simple command (*note Simple Commands::); otherwise, it is interpreted +as the first word of the simple command. + + When the coprocess is executed, the shell creates an array variable +(*note Arrays::) named 'NAME' in the context of the executing shell. +The standard output of COMMAND is connected via a pipe to a file +descriptor in the executing shell, and that file descriptor is assigned +to 'NAME'[0]. The standard input of COMMAND is connected via a pipe to +a file descriptor in the executing shell, and that file descriptor is +assigned to 'NAME'[1]. This pipe is established before any redirections +specified by the command (*note Redirections::). The file descriptors +can be utilized as arguments to shell commands and redirections using +standard word expansions. Other than those created to execute command +and process substitutions, the file descriptors are not available in +subshells. + + The process ID of the shell spawned to execute the coprocess is +available as the value of the variable 'NAME'_PID. The 'wait' builtin +command may be used to wait for the coprocess to terminate. + + Since the coprocess is created as an asynchronous command, the +'coproc' command always returns success. The return status of a +coprocess is the exit status of COMMAND. + + +File: bash.info, Node: GNU Parallel, Prev: Coprocesses, Up: Shell Commands + +3.2.7 GNU Parallel +------------------ + +There are ways to run commands in parallel that are not built into Bash. +GNU Parallel is a tool to do just that. + + GNU Parallel, as its name suggests, can be used to build and run +commands in parallel. You may run the same command with different +arguments, whether they are filenames, usernames, hostnames, or lines +read from files. GNU Parallel provides shorthand references to many of +the most common operations (input lines, various portions of the input +line, different ways to specify the input source, and so on). Parallel +can replace 'xargs' or feed commands from its input sources to several +different instances of Bash. + + For a complete description, refer to the GNU Parallel documentation. +A few examples should provide a brief introduction to its use. + + For example, it is easy to replace 'xargs' to gzip all html files in +the current directory and its subdirectories: + find . -type f -name '*.html' -print | parallel gzip +If you need to protect special characters such as newlines in file +names, use find's '-print0' option and parallel's '-0' option. + + You can use Parallel to move files from the current directory when +the number of files is too large to process with one 'mv' invocation: + printf '%s\n' * | parallel mv {} destdir + + As you can see, the {} is replaced with each line read from standard +input. While using 'ls' will work in most instances, it is not +sufficient to deal with all filenames. 'printf' is a shell builtin, and +therefore is not subject to the kernel's limit on the number of +arguments to a program, so you can use '*' (but see below about the +'dotglob' shell option). If you need to accommodate special characters +in filenames, you can use + + printf '%s\0' * | parallel -0 mv {} destdir + +as alluded to above. + + This will run as many 'mv' commands as there are files in the current +directory. You can emulate a parallel 'xargs' by adding the '-X' +option: + printf '%s\0' * | parallel -0 -X mv {} destdir + + (You may have to modify the pattern if you have the 'dotglob' option +enabled.) + + GNU Parallel can replace certain common idioms that operate on lines +read from a file (in this case, filenames listed one per line): + while IFS= read -r x; do + do-something1 "$x" "config-$x" + do-something2 < "$x" + done < file | process-output + +with a more compact syntax reminiscent of lambdas: + cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | + process-output + + Parallel provides a built-in mechanism to remove filename extensions, +which lends itself to batch file transformations or renaming: + ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}" +This will recompress all files in the current directory with names +ending in .gz using bzip2, running one job per CPU (-j+0) in parallel. +(We use 'ls' for brevity here; using 'find' as above is more robust in +the face of filenames containing unexpected characters.) Parallel can +take arguments from the command line; the above can also be written as + + parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz + + If a command generates output, you may want to preserve the input +order in the output. For instance, the following command + { + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; + } | parallel traceroute +will display as output the traceroute invocation that finishes first. +Adding the '-k' option + { + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; + } | parallel -k traceroute +will ensure that the output of 'traceroute foss.org.my' is displayed +first. + + Finally, Parallel can be used to run a sequence of shell commands in +parallel, similar to 'cat file | bash'. It is not uncommon to take a +list of filenames, create a series of shell commands to operate on them, +and feed that list of commands to a shell. Parallel can speed this up. +Assuming that 'file' contains a list of shell commands, one per line, + + parallel -j 10 < file + +will evaluate the commands using the shell (since no explicit command is +supplied as an argument), in blocks of ten shell jobs at a time. + + +File: bash.info, Node: Shell Functions, Next: Shell Parameters, Prev: Shell Commands, Up: Basic Shell Features + +3.3 Shell Functions +=================== + +Shell functions are a way to group commands for later execution using a +single name for the group. They are executed just like a "regular" +command. 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. Shell functions are executed in the current shell context; no +new process is created to interpret them. + + Functions are declared using this syntax: + FNAME () COMPOUND-COMMAND [ REDIRECTIONS ] + + or + + function FNAME [()] COMPOUND-COMMAND [ REDIRECTIONS ] + + This defines a shell function named FNAME. 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 (*note Compound Commands::). That command is +usually a LIST enclosed between { and }, but may be any compound command +listed above, with one exception: If the 'function' reserved word is +used, but the parentheses are not supplied, the braces are required. +COMPOUND-COMMAND is executed whenever FNAME is specified as the name of +a command. When the shell is in POSIX mode (*note Bash POSIX Mode::), +FNAME must be a valid shell NAME and may not be the same as one of the +special builtins (*note Special Builtins::). In default mode, a +function name can be any unquoted shell word that does not contain '$'. +Any redirections (*note Redirections::) associated with the shell +function are performed when the function is executed. A function +definition may be deleted using the '-f' option to the 'unset' builtin +(*note Bourne Shell Builtins::). + + 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. + + Note that for historical reasons, in the most common usage the curly +braces that surround the body of the function must be separated from the +body by 'blank's or newlines. This is because the braces are reserved +words and are only recognized as such when they are separated from the +command list by whitespace or another shell metacharacter. Also, when +using the braces, the LIST must be terminated by a semicolon, a '&', or +a newline. + + When a function is executed, the arguments to the function become the +positional parameters during its execution (*note Positional +Parameters::). The special parameter '#' that expands to the number of +positional parameters 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 these exceptions: the 'DEBUG' and +'RETURN' traps are not inherited unless the function has been given the +'trace' attribute using the 'declare' builtin or the '-o functrace' +option has been enabled with the 'set' builtin, (in which case all +functions inherit the 'DEBUG' and 'RETURN' traps), and the 'ERR' trap is +not inherited unless the '-o errtrace' shell option has been enabled. +*Note Bourne Shell Builtins::, for the description of the 'trap' +builtin. + + The 'FUNCNEST' variable, if set to a numeric value greater than 0, +defines a maximum function nesting level. Function invocations that +exceed the limit cause the entire command to abort. + + If the builtin command '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. If a +numeric argument is given to 'return', that is the function's return +status; otherwise the function's return status is the exit status of the +last command executed before the 'return'. + + Variables local to the function may be declared with the 'local' +builtin. These variables are visible only to the function and the +commands it invokes. This is particularly important when a shell +function calls other functions. + + Local variables "shadow" variables with the same name declared at +previous scopes. For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. + + The shell uses DYNAMIC SCOPING to control a variable's visibility +within functions. With dynamic scoping, visible variables and their +values are a result of the sequence of function calls that caused +execution to reach the current function. The value of a variable that a +function sees depends on its value within its caller, if any, whether +that caller is the "global" scope or another shell function. This is +also the value that a local variable declaration "shadows", and the +value that is restored when the function returns. + + For example, if a variable VAR is declared as local in function +FUNC1, and FUNC1 calls another function FUNC2, references to VAR made +from within FUNC2 will resolve to the local variable VAR from FUNC1, +shadowing any global variable named VAR. + + The following script demonstrates this behavior. When executed, the +script displays + + In func2, var = func1 local + + func1() + { + local var='func1 local' + func2 + } + + func2() + { + echo "In func2, var = $var" + } + + var=global + func1 + + The 'unset' builtin also acts using the same dynamic scope: if a +variable is local to the current scope, 'unset' will unset it; otherwise +the unset will refer to the variable found in any calling scope as +described above. If a variable at the current local scope is unset, it +will remain so until it is reset in that scope or until the function +returns. Once the function returns, any instance of the variable at a +previous scope will become visible. If the unset acts on a variable at +a previous scope, any instance of a variable with that name that had +been shadowed will become visible. + + Function names and definitions may be listed with the '-f' option to +the 'declare' ('typeset') builtin command (*note Bash Builtins::). 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 (*note Bourne Shell Builtins::). + + Functions may be recursive. The 'FUNCNEST' variable may be used to +limit the depth of the function call stack and restrict the number of +function invocations. By default, no limit is placed on the number of +recursive calls. + + +File: bash.info, Node: Shell Parameters, Next: Shell Expansions, Prev: Shell Functions, Up: Basic Shell Features + +3.4 Shell Parameters +==================== + +* Menu: + +* Positional Parameters:: The shell's command-line arguments. +* Special Parameters:: Parameters denoted by special characters. + +A PARAMETER is an entity that stores values. It can be a 'name', a +number, or one of the special characters listed below. 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 the description of the 'declare' builtin in *note Bash Builtins::). + + 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. + + 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 (detailed +below). If the variable has its 'integer' attribute set, then VALUE is +evaluated as an arithmetic expression even if the '$((...))' expansion +is not used (*note Arithmetic Expansion::). Word splitting is not +performed, with the exception of '"$@"' as explained below. Filename +expansion is not performed. Assignment statements may also appear as +arguments to the 'alias', 'declare', 'typeset', 'export', 'readonly', +and 'local' builtin commands (DECLARATION commands). When in POSIX mode +(*note Bash POSIX Mode::), these builtins may appear in a command after +one or more instances of the 'command' builtin and retain these +assignment statement properties. + + In the context where an assignment statement is assigning a value to +a shell variable or array index (*note Arrays::), the '+=' operator can +be used to append to or add to the variable's previous value. This +includes arguments to builtin commands such as 'declare' that accept +assignment statements (DECLARATION commands). 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 (*note Arrays::), the +variable's value is not unset (as it is when using '='), and new values +are appended to the array beginning at one greater than the array's +maximum index (for indexed arrays), or added as additional key-value +pairs in an associative array. When applied to a string-valued +variable, VALUE is expanded and appended to the variable's value. + + A variable can be assigned the NAMEREF attribute using the '-n' +option to the 'declare' or 'local' builtin commands (*note Bash +Builtins::) to create a NAMEREF, or a reference to another variable. +This allows variables to be manipulated indirectly. Whenever the +nameref variable is referenced, assigned to, unset, or has its +attributes modified (other than using or changing the nameref attribute +itself), the operation is actually performed on the variable specified +by the nameref variable's value. A nameref is commonly used within +shell functions to refer to a variable whose name is passed as an +argument to the function. For instance, if a variable name is passed to +a shell function as its first argument, running + declare -n ref=$1 +inside the function creates a nameref variable REF whose value is the +variable name passed as the first argument. References and assignments +to REF, and changes to its attributes, are treated as references, +assignments, and attribute modifications to the variable whose name was +passed as '$1'. + + If the control variable in a 'for' loop has the nameref attribute, +the list of words can be a list of shell variables, and a name reference +will be established for each word in the list, in turn, when the loop is +executed. Array variables cannot be given the nameref attribute. +However, nameref variables can reference array variables and subscripted +array variables. Namerefs can be unset using the '-n' option to the +'unset' builtin (*note Bourne Shell Builtins::). Otherwise, if 'unset' +is executed with the name of a nameref variable as an argument, the +variable referenced by the nameref variable will be unset. + + +File: bash.info, Node: Positional Parameters, Next: Special Parameters, Up: Shell Parameters + +3.4.1 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 parameter 'N' may be +referenced as '${N}', or as '$N' when 'N' consists of a single digit. +Positional parameters may not be assigned to with assignment statements. +The 'set' and 'shift' builtins are used to set and unset them (*note +Shell Builtin Commands::). The positional parameters are temporarily +replaced when a shell function is executed (*note Shell Functions::). + + When a positional parameter consisting of more than a single digit is +expanded, it must be enclosed in braces. + + +File: bash.info, Node: Special Parameters, Prev: Positional Parameters, Up: Shell Parameters + +3.4.2 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 is not within double quotes, each positional + parameter expands to a separate word. In contexts where it is + performed, those words are subject to further word splitting and + filename expansion. When the expansion occurs within double + quotes, it expands to a single word with the value of each + parameter separated by the first character of the 'IFS' special + variable. That is, '"$*"' is equivalent 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. In + contexts where word splitting is performed, this expands each + positional parameter to a separate word; if not within double + quotes, these words are subject to word splitting. In contexts + where word splitting is not performed, this expands to a single + word with each positional parameter separated by a space. When the + expansion occurs within double quotes, and word splitting is + performed, 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 exit status of the most recently executed + foreground pipeline. + +'-' + ($-, a hyphen.) Expands to the current option flags as specified + upon invocation, by the 'set' builtin command, or those set by the + shell itself (such as the '-i' option). + +'$' + ($$) Expands to the process ID of the shell. In a '()' subshell, + it expands to the process ID of the invoking shell, not the + subshell. + +'!' + ($!) Expands to the process ID of the job most recently placed + into the background, whether executed as an asynchronous command or + using the 'bg' builtin (*note Job Control Builtins::). + +'0' + ($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 (*note Shell Scripts::), '$0' is set to the name of that + file. If Bash is started with the '-c' option (*note Invoking + Bash::), then '$0' is set to the first argument after the string to + be executed, if one is present. Otherwise, it is set to the + filename used to invoke Bash, as given by argument zero. + + +File: bash.info, Node: Shell Expansions, Next: Redirections, Prev: Shell Parameters, Up: Basic Shell Features + +3.5 Shell Expansions +==================== + +Expansion is performed on the command line after it has been split into +'token's. There are seven kinds of expansion performed: + + * brace expansion + * tilde expansion + * parameter and variable expansion + * command substitution + * arithmetic expansion + * word splitting + * filename expansion + +* Menu: + +* Brace Expansion:: Expansion of expressions within braces. +* Tilde Expansion:: Expansion of the ~ character. +* Shell Parameter Expansion:: How Bash expands variables to their values. +* Command Substitution:: Using the output of a command as an argument. +* Arithmetic Expansion:: How to use arithmetic in shell expansions. +* Process Substitution:: A way to write and read to and from a + command. +* Word Splitting:: How the results of expansion are split into separate + arguments. +* Filename Expansion:: A shorthand for specifying filenames matching patterns. +* Quote Removal:: How and when quote characters are removed from + words. + + The order of expansions is: brace expansion; tilde expansion, +parameter and variable expansion, arithmetic expansion, and command +substitution (done in a left-to-right fashion); word splitting; and +filename expansion. + + On systems that can support it, there is an additional expansion +available: PROCESS SUBSTITUTION. This is performed at the same time as +tilde, parameter, variable, and arithmetic expansion and command +substitution. + + After these expansions are performed, quote characters present in the +original word are removed unless they have been quoted themselves (QUOTE +REMOVAL). + + Only brace expansion, word splitting, and filename expansion can +increase 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 '$*' (*note Special Parameters::), and +'"${NAME[@]}"' and '${NAME[*]}' (*note Arrays::). + + After all expansions, 'quote removal' (*note Quote Removal::) is +performed. + + +File: bash.info, Node: Brace Expansion, Next: Tilde Expansion, Up: Shell Expansions + +3.5.1 Brace Expansion +--------------------- + +Brace expansion is a mechanism by which arbitrary strings may be +generated. This mechanism is similar to FILENAME EXPANSION (*note +Filename 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, + bash$ echo a{d,c,b}e + ade ace abe + + A sequence expression takes the form '{X..Y[..INCR]}', where X and Y +are either integers or single characters, and INCR, an optional +increment, is an integer. When integers are supplied, the expression +expands to each number between X and Y, inclusive. Supplied integers +may be prefixed with '0' to force each term to have the same width. +When either X or Y begins with a zero, the shell attempts to force all +generated terms to contain the same number of digits, zero-padding where +necessary. When characters are supplied, the expression expands to each +character lexicographically between X and Y, inclusive, using the +default C locale. Note that both X and Y must be of the same type. +When the increment is supplied, it is used as the difference between +each term. The default increment is 1 or -1 as appropriate. + + Brace expansion is performed before any other expansions, and any +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, and inhibits brace expansion until the closing '}'. + + 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}} + + +File: bash.info, Node: Tilde Expansion, Next: Shell Parameter Expansion, Prev: Brace Expansion, Up: Shell Expansions + +3.5.2 Tilde Expansion +--------------------- + +If a word begins with an unquoted tilde character ('~'), all of the +characters up to 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 'HOME' shell variable. 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 '~+', the value of the shell variable 'PWD' +replaces the tilde-prefix. If the tilde-prefix is '~-', 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 characters +following tilde in the tilde-prefix as an argument (*note The Directory +Stack::). If the tilde-prefix, sans the tilde, consists of a number +without a leading '+' or '-', '+' is assumed. + + If the login name is invalid, or the tilde expansion fails, the word +is left 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 filenames with +tildes in assignments to 'PATH', 'MAILPATH', and 'CDPATH', and the shell +assigns the expanded value. + + The following table shows how Bash treats unquoted tilde-prefixes: + +'~' + The value of '$HOME' +'~/foo' + '$HOME/foo' + +'~fred/foo' + The subdirectory 'foo' of the home directory of the user 'fred' + +'~+/foo' + '$PWD/foo' + +'~-/foo' + '${OLDPWD-'~-'}/foo' + +'~N' + The string that would be displayed by 'dirs +N' + +'~+N' + The string that would be displayed by 'dirs +N' + +'~-N' + The string that would be displayed by 'dirs -N' + + Bash also performs tilde expansion on words satisfying the conditions +of variable assignments (*note Shell Parameters::) when they appear as +arguments to simple commands. Bash does not do this, except for the +DECLARATION commands listed above, when in POSIX mode. + + +File: bash.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions + +3.5.3 Shell 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. + + The basic form of parameter expansion is ${PARAMETER}. The value of +PARAMETER is substituted. The PARAMETER is a shell parameter as +described above (*note Shell Parameters::) or an array reference (*note +Arrays::). The braces are required when PARAMETER is a positional +parameter with more than one digit, or when PARAMETER is followed by a +character that is not to be interpreted as part of its name. + + If the first character of PARAMETER is an exclamation point (!), and +PARAMETER is not a NAMEREF, it introduces a level of indirection. Bash +uses the value formed by expanding the rest of PARAMETER as the new +PARAMETER; this is then expanded and that value is used in the rest of +the expansion, rather than the expansion of the original PARAMETER. +This is known as 'indirect expansion'. The value is subject to tilde +expansion, parameter expansion, command substitution, and arithmetic +expansion. If PARAMETER is a nameref, this expands to the name of the +variable referenced by PARAMETER instead of performing the complete +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, using the form described +below (e.g., ':-'), Bash tests for a parameter that is unset or null. +Omitting the colon results in a test only for a parameter that is unset. +Put another way, if the colon is included, the operator tests for both +PARAMETER's existence and that its value is not null; if the colon is +omitted, the operator tests only for existence. + +'${PARAMETER:-WORD}' + If PARAMETER is unset or null, the expansion of WORD is + substituted. Otherwise, the value of PARAMETER is substituted. + +'${PARAMETER:=WORD}' + 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}' + 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}' + If PARAMETER is null or unset, nothing is substituted, otherwise + the expansion of WORD is substituted. + +'${PARAMETER:OFFSET}' +'${PARAMETER:OFFSET:LENGTH}' + This is referred to as Substring Expansion. It expands to up to + LENGTH characters of the value of PARAMETER starting at the + character specified by OFFSET. If PARAMETER is '@', an indexed + array subscripted by '@' or '*', or an associative array name, the + results differ as described below. If LENGTH is omitted, it + expands to the substring of the value of PARAMETER starting at the + character specified by OFFSET and extending to the end of the + value. LENGTH and OFFSET are arithmetic expressions (*note Shell + Arithmetic::). + + If OFFSET evaluates to a number less than zero, the value is used + as an offset in characters from the end of the value of PARAMETER. + If LENGTH evaluates to a number less than zero, it is interpreted + as an offset in characters from the end of the value of PARAMETER + rather than a number of characters, and the expansion is the + characters between OFFSET and that result. Note that a negative + offset must be separated from the colon by at least one space to + avoid being confused with the ':-' expansion. + + Here are some examples illustrating substring expansion on + parameters and subscripted arrays: + + $ string=01234567890abcdefgh + $ echo ${string:7} + 7890abcdefgh + $ echo ${string:7:0} + + $ echo ${string:7:2} + 78 + $ echo ${string:7:-2} + 7890abcdef + $ echo ${string: -7} + bcdefgh + $ echo ${string: -7:0} + + $ echo ${string: -7:2} + bc + $ echo ${string: -7:-2} + bcdef + $ set -- 01234567890abcdefgh + $ echo ${1:7} + 7890abcdefgh + $ echo ${1:7:0} + + $ echo ${1:7:2} + 78 + $ echo ${1:7:-2} + 7890abcdef + $ echo ${1: -7} + bcdefgh + $ echo ${1: -7:0} + + $ echo ${1: -7:2} + bc + $ echo ${1: -7:-2} + bcdef + $ array[0]=01234567890abcdefgh + $ echo ${array[0]:7} + 7890abcdefgh + $ echo ${array[0]:7:0} + + $ echo ${array[0]:7:2} + 78 + $ echo ${array[0]:7:-2} + 7890abcdef + $ echo ${array[0]: -7} + bcdefgh + $ echo ${array[0]: -7:0} + + $ echo ${array[0]: -7:2} + bc + $ echo ${array[0]: -7:-2} + bcdef + + If PARAMETER is '@', the result is LENGTH positional parameters + beginning at OFFSET. A negative OFFSET is taken relative to one + greater than the greatest positional parameter, so an offset of -1 + evaluates to the last positional parameter. It is an expansion + error if LENGTH evaluates to a number less than zero. + + The following examples illustrate substring expansion using + positional parameters: + + $ set -- 1 2 3 4 5 6 7 8 9 0 a b c d e f g h + $ echo ${@:7} + 7 8 9 0 a b c d e f g h + $ echo ${@:7:0} + + $ echo ${@:7:2} + 7 8 + $ echo ${@:7:-2} + bash: -2: substring expression < 0 + $ echo ${@: -7:2} + b c + $ echo ${@:0} + ./bash 1 2 3 4 5 6 7 8 9 0 a b c d e f g h + $ echo ${@:0:2} + ./bash 1 + $ echo ${@: -7:0} + + + If PARAMETER is an indexed array name subscripted by '@' or '*', + the result is the LENGTH members of the array beginning with + '${PARAMETER[OFFSET]}'. A negative OFFSET is taken relative to one + greater than the maximum index of the specified array. It is an + expansion error if LENGTH evaluates to a number less than zero. + + These examples show how you can use substring expansion with + indexed arrays: + + $ array=(0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h) + $ echo ${array[@]:7} + 7 8 9 0 a b c d e f g h + $ echo ${array[@]:7:2} + 7 8 + $ echo ${array[@]: -7:2} + b c + $ echo ${array[@]: -7:-2} + bash: -2: substring expression < 0 + $ echo ${array[@]:0} + 0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h + $ echo ${array[@]:0:2} + 0 1 + $ echo ${array[@]: -7:0} + + + Substring expansion applied to an associative array produces + undefined results. + + Substring indexing is zero-based unless the positional parameters + are used, in which case the indexing starts at 1 by default. If + OFFSET is 0, and the positional parameters are used, '$0' is + prefixed to the list. + +'${!PREFIX*}' +'${!PREFIX@}' + Expands to the names of variables whose names begin with PREFIX, + separated by the first character of the 'IFS' special variable. + When '@' is used and the expansion appears within double quotes, + each variable name expands to a separate word. + +'${!NAME[@]}' +'${!NAME[*]}' + 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 expanded 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. If PARAMETER is an indexed array name + subscripted by a negative number, that number is interpreted as + relative to one greater than the maximum index of PARAMETER, so + negative indices count back from the end of the array, and an index + of -1 references the last element. + +'${PARAMETER#WORD}' +'${PARAMETER##WORD}' + The WORD is expanded to produce a pattern and matched according to + the rules described below (*note Pattern Matching::). If the + pattern matches the beginning 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%WORD}' +'${PARAMETER%%WORD}' + The WORD is expanded to produce a pattern and matched according to + the rules described below (*note Pattern Matching::). If the + pattern matches a trailing portion of the expanded value of + PARAMETER, then the result of the expansion is the 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 filename + expansion. PARAMETER is expanded and the longest match of PATTERN + against its value is replaced with STRING. The match is performed + according to the rules described below (*note Pattern Matching::). + If PATTERN 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 the 'nocasematch' shell option (see the + description of 'shopt' in *note The Shopt Builtin::) is enabled, + the match is performed without regard to the case of alphabetic + characters. 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. + +'${PARAMETER^PATTERN}' +'${PARAMETER^^PATTERN}' +'${PARAMETER,PATTERN}' +'${PARAMETER,,PATTERN}' + This expansion modifies the case of alphabetic characters in + PARAMETER. The PATTERN is expanded to produce a pattern just as in + filename expansion. Each character in the expanded value of + PARAMETER is tested against PATTERN, and, if it matches the + pattern, its case is converted. The pattern should not attempt to + match more than one character. The '^' operator converts lowercase + letters matching PATTERN to uppercase; the ',' operator converts + matching uppercase letters to lowercase. The '^^' and ',,' + expansions convert each matched character in the expanded value; + the '^' and ',' expansions match and convert only the first + character in the expanded value. If PATTERN is omitted, it is + treated like a '?', which matches every character. If PARAMETER is + '@' or '*', the case modification 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 case modification operation is applied to each member of + the array in turn, and the expansion is the resultant list. + +'${PARAMETER@OPERATOR}' + The expansion is either a transformation of the value of PARAMETER + or information about PARAMETER itself, depending on the value of + OPERATOR. Each OPERATOR is a single letter: + + 'U' + The expansion is a string that is the value of PARAMETER with + lowercase alphabetic characters converted to uppercase. + 'u' + The expansion is a string that is the value of PARAMETER with + the first character converted to uppercase, if it is + alphabetic. + 'L' + The expansion is a string that is the value of PARAMETER with + uppercase alphabetic characters converted to lowercase. + 'Q' + The expansion is a string that is the value of PARAMETER + quoted in a format that can be reused as input. + 'E' + The expansion is a string that is the value of PARAMETER with + backslash escape sequences expanded as with the '$'...'' + quoting mechanism. + 'P' + The expansion is a string that is the result of expanding the + value of PARAMETER as if it were a prompt string (*note + Controlling the Prompt::). + 'A' + The expansion is a string in the form of an assignment + statement or 'declare' command that, if evaluated, will + recreate PARAMETER with its attributes and value. + 'K' + Produces a possibly-quoted version of the value of PARAMETER, + except that it prints the values of indexed and associative + arrays as a sequence of quoted key-value pairs (*note + Arrays::). + 'a' + The expansion is a string consisting of flag values + representing PARAMETER's attributes. + + If PARAMETER is '@' or '*', the 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 operation is applied to each member of the array in turn, + and the expansion is the resultant list. + + The result of the expansion is subject to word splitting and + filename expansion as described below. + + +File: bash.info, Node: Command Substitution, Next: Arithmetic Expansion, Prev: Shell Parameter Expansion, Up: Shell Expansions + +3.5.4 Command Substitution +-------------------------- + +Command substitution allows the output of a command to replace the +command itself. Command substitution occurs when a command is enclosed +as follows: + $(COMMAND) +or + `COMMAND` + +Bash performs the expansion by executing COMMAND in a subshell +environment 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 +filename expansion are not performed on the results. + + +File: bash.info, Node: Arithmetic Expansion, Next: Process Substitution, Prev: Command Substitution, Up: Shell Expansions + +3.5.5 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 and variable expansion, +command substitution, and quote removal. The result is treated as the +arithmetic expression to be evaluated. Arithmetic expansions may be +nested. + + The evaluation is performed according to the rules listed below +(*note Shell Arithmetic::). If the expression is invalid, Bash prints a +message indicating failure to the standard error and no substitution +occurs. + + +File: bash.info, Node: Process Substitution, Next: Word Splitting, Prev: Arithmetic Expansion, Up: Shell Expansions + +3.5.6 Process Substitution +-------------------------- + +Process substitution allows a process's input or output to be referred +to using a filename. It takes the form of + <(LIST) +or + >(LIST) +The process LIST is run asynchronously, and its input or output appears +as a filename. This filename 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. Note that no space may appear between the '<' or '>' +and the left parenthesis, otherwise the construct would be interpreted +as a redirection. Process substitution is supported on systems that +support named pipes (FIFOs) or the '/dev/fd' method of naming open +files. + + When available, process substitution is performed simultaneously with +parameter and variable expansion, command substitution, and arithmetic +expansion. + + +File: bash.info, Node: Word Splitting, Next: Filename Expansion, Prev: Process Substitution, Up: Shell Expansions + +3.5.7 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 using these characters as +field terminators. If 'IFS' is unset, or its value is exactly +'', the default, then sequences of ' ', +'', and '' at the beginning and end of the results of the +previous expansions are ignored, and any sequence of 'IFS' characters +not at the beginning or end serves to delimit words. If 'IFS' has a +value other than the default, then sequences of the whitespace +characters 'space', 'tab', and 'newline' are ignored at the beginning +and end of the word, as long as the whitespace character is in the value +of 'IFS' (an 'IFS' whitespace character). Any character in 'IFS' that +is not 'IFS' whitespace, along with any adjacent 'IFS' whitespace +characters, delimits a field. A sequence of 'IFS' whitespace characters +is also treated as a delimiter. If the value of 'IFS' is null, no word +splitting occurs. + + Explicit null arguments ('""' or '''') are retained and passed to +commands as empty strings. 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 and passed to a command as an empty +string. When a quoted null argument appears as part of a word whose +expansion is non-null, the null argument is removed. That is, the word +'-d''' becomes '-d' after word splitting and null argument removal. + + Note that if no expansion occurs, no splitting is performed. + + +File: bash.info, Node: Filename Expansion, Next: Quote Removal, Prev: Word Splitting, Up: Shell Expansions + +3.5.8 Filename Expansion +------------------------ + +* Menu: + +* Pattern Matching:: How the shell matches patterns. + +After word splitting, unless the '-f' option has been set (*note The Set +Builtin::), Bash scans each word for the characters '*', '?', and '['. +If one of these characters appears, and is not quoted, then the word is +regarded as a PATTERN, and replaced with an alphabetically sorted list +of filenames matching the pattern (*note Pattern Matching::). If no +matching filenames 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 filename expansion, the character '.' at +the start of a filename or immediately following a slash must be matched +explicitly, unless the shell option 'dotglob' is set. The filenames '.' +and '..' must always be matched explicitly, even if 'dotglob' is set. +In other cases, the '.' character is not treated specially. + + When matching a filename, the slash character must always be matched +explicitly by a slash in the pattern, but in other matching contexts it +can be matched by a special pattern character as described below (*note +Pattern Matching::). + + See the description of 'shopt' in *note The Shopt Builtin::, for a +description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob' +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. If the 'nocaseglob' option is set, +the matching against the patterns in 'GLOBIGNORE' is performed without +regard to case. The filenames '.' 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 filenames beginning with a '.' will match. To get the old +behavior of ignoring filenames beginning with a '.', make '.*' one of +the patterns in 'GLOBIGNORE'. The 'dotglob' option is disabled when +'GLOBIGNORE' is unset. + + +File: bash.info, Node: Pattern Matching, Up: Filename Expansion + +3.5.8.1 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. When the 'globstar' + shell option is enabled, and '*' is used in a filename expansion + context, two adjacent '*'s used as a single pattern will match all + files and zero or more directories and subdirectories. If followed + by a '/', two adjacent '*'s will match only directories and + subdirectories. +'?' + 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 falls 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. 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. The + sorting order of characters in range expressions is determined by + the current locale and the values of the 'LC_COLLATE' and 'LC_ALL' + shell variables, if set. + + For example, in the default C locale, '[a-dx-z]' is equivalent to + '[abcdxyz]'. Many locales sort characters in dictionary order, and + in these locales '[a-dx-z]' is typically not equivalent to + '[abcdxyz]'; it might be equivalent to '[aBbCcDdxXyYz]', for + example. To obtain the traditional interpretation of ranges in + bracket expressions, you can force the use of the C locale by + setting the 'LC_COLLATE' or 'LC_ALL' environment variable to the + value 'C', or enable the 'globasciiranges' shell option. + + 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. + + Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. Using separate matches against shorter +strings, or using arrays of strings instead of a single long string, may +be faster. + + +File: bash.info, Node: Quote Removal, Prev: Filename Expansion, Up: Shell Expansions + +3.5.9 Quote Removal +------------------- + +After the preceding expansions, all unquoted occurrences of the +characters '\', ''', and '"' that did not result from one of the above +expansions are removed. + + +File: bash.info, Node: Redirections, Next: Executing Commands, Prev: Shell Expansions, Up: Basic Shell Features + +3.6 Redirections +================ + +Before a command is executed, its input and output may be REDIRECTED +using a special notation interpreted by the shell. Redirection allows +commands' file handles to be duplicated, opened, closed, made to refer +to different files, and can change the files the command reads from and +writes to. Redirection may also be used to modify file handles in the +current shell execution environment. The following redirection +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. + + Each redirection that may be preceded by a file descriptor number may +instead be preceded by a word of the form {VARNAME}. In this case, for +each redirection operator except >&- and <&-, the shell will allocate a +file descriptor greater than 10 and assign it to {VARNAME}. If >&- or +<&- is preceded by {VARNAME}, the value of VARNAME defines the file +descriptor to close. If {VARNAME} is supplied, the redirection persists +beyond the scope of the command, allowing the shell programmer to manage +the file descriptor's lifetime manually. + + 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, filename 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 (file descriptor 1) and standard error +(file descriptor 2) to the file DIRLIST, while the command + ls 2>&1 > DIRLIST +directs only the standard output to file DIRLIST, because the standard +error was made a copy of the 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. If the operating +system on which Bash is running provides these special files, bash will +use them; otherwise it will emulate them internally with the behavior +described below. + +'/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 the + corresponding TCP socket. + +'/dev/udp/HOST/PORT' + If HOST is a valid hostname or Internet address, and PORT is an + integer port number or service name, Bash attempts to open the + corresponding UDP socket. + + A failure to open or create a file causes the redirection to fail. + + Redirections using file descriptors greater than 9 should be used +with care, as they may conflict with file descriptors the shell uses +internally. + +3.6.1 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 + + 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 is not enabled, the redirection is +attempted even if the file named by WORD exists. + +3.6.3 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 + +3.6.4 Redirecting Standard Output and Standard Error +---------------------------------------------------- + +This construct allows both the standard output (file descriptor 1) and +the standard error output (file descriptor 2) to be redirected to the +file whose name is the expansion of WORD. + + 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 + When using the second form, WORD may not expand to a number or '-'. +If it does, other redirection operators apply (see Duplicating File +Descriptors below) for compatibility reasons. + +3.6.5 Appending Standard Output and Standard Error +-------------------------------------------------- + +This construct allows both the standard output (file descriptor 1) and +the standard error output (file descriptor 2) to be appended to the file +whose name is the expansion of WORD. + + The format for appending standard output and standard error is: + &>>WORD +This is semantically equivalent to + >>WORD 2>&1 + (see Duplicating File Descriptors below). + +3.6.6 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 (or file descriptor N if N is specified) for a +command. + + The format of here-documents is: + [N]<<[-]WORD + HERE-DOCUMENT + DELIMITER + + No parameter and variable expansion, command substitution, arithmetic +expansion, or filename expansion is performed on WORD. If any part of +WORD is 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, 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. + +3.6.7 Here Strings +------------------ + +A variant of here documents, the format is: + [N]<<< WORD + + The WORD undergoes tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote removal. Filename +expansion and word splitting are not performed. The result is supplied +as a single string, with a newline appended, to the command on its +standard input (or file descriptor N if N is specified). + +3.6.8 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. If WORD evaluates to '-', file descriptor N +is closed. As a special case, if N is omitted, and WORD does not expand +to one or more digits or '-', the standard output and standard error are +redirected as described previously. + +3.6.9 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. + +3.6.10 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. + + +File: bash.info, Node: Executing Commands, Next: Shell Scripts, Prev: Redirections, Up: Basic Shell Features + +3.7 Executing Commands +====================== + +* Menu: + +* Simple Command Expansion:: How Bash expands simple commands before + executing them. +* Command Search and Execution:: How Bash finds commands and runs them. +* Command Execution Environment:: The environment in which Bash + executes commands that are not + shell builtins. +* Environment:: The environment given to a command. +* Exit Status:: The status returned by commands and how Bash + interprets it. +* Signals:: What happens when Bash or a command it runs + receives a signal. + + +File: bash.info, Node: Simple Command Expansion, Next: Command Search and Execution, Up: Executing Commands + +3.7.1 Simple Command Expansion +------------------------------ + +When a simple command is executed, the shell performs the following +expansions, assignments, and redirections, from left to right, in the +following order. + + 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 (*note Shell Expansions::). 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 (*note + Redirections::). + + 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. + + +File: bash.info, Node: Command Search and Execution, Next: Command Execution Environment, Prev: Simple Command Expansion, Up: Executing Commands + +3.7.2 Command Search and 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. + + 1. 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 in *note Shell Functions::. + + 2. 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. + + 3. If the name is neither a shell function nor a builtin, and contains + no slashes, Bash searches each element of '$PATH' for a directory + containing an executable file by that name. Bash uses a hash table + to remember the full pathnames of executable files to avoid + multiple 'PATH' searches (see the description of 'hash' in *note + Bourne Shell Builtins::). 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 searches for a + defined shell function named 'command_not_found_handle'. If that + function exists, it is invoked in a separate execution environment + with the original command and the original command's arguments as + its arguments, and the function's exit status becomes the exit + status of that subshell. If that function is not defined, the + shell prints an error message and returns an exit status of 127. + + 4. 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 + supplied, if any. + + 5. 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 and the shell executes it as described in *note Shell + Scripts::. + + 6. If the command was not begun asynchronously, the shell waits for + the command to complete and collects its exit status. + + +File: bash.info, Node: Command Execution Environment, Next: Environment, Prev: Command Search and Execution, Up: Executing Commands + +3.7.3 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' (*note The Shopt Builtin::) + + * shell aliases defined with 'alias' (*note Aliases::) + + * various process IDs, including those of background jobs (*note + Lists::), 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 + (*note 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. + + 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. + + 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. + + +File: bash.info, Node: Environment, Next: Exit Status, Prev: Command Execution Environment, Up: Executing Commands + +3.7.4 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'. + + Bash 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' and 'export +-n' commands, 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 in +*note Shell Parameters::. These assignment statements affect only the +environment seen by that command. + + If the '-k' option is set (*note The Set Builtin::), 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 pathname of the command and passed to that command in its +environment. + + +File: bash.info, Node: Exit Status, Next: Signals, Prev: Environment, Up: Executing Commands + +3.7.5 Exit Status +----------------- + +The exit status of an executed command is the value returned by the +WAITPID system call or equivalent function. Exit statuses fall between +0 and 255, though, as explained below, the shell may use values above +125 specially. Exit statuses from shell builtins and compound commands +are also limited to this range. Under certain circumstances, the shell +will use special values to indicate specific failure modes. + + For the shell's purposes, a command which exits with a zero exit +status has succeeded. A non-zero exit status indicates failure. This +seemingly counter-intuitive scheme is used so there is one well-defined +way to indicate success and a variety of ways to indicate various +failure modes. When a command terminates on a fatal signal whose number +is N, Bash uses the value 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. + + The exit status is used by the Bash conditional commands (*note +Conditional Constructs::) and some of the list constructs (*note +Lists::). + + All of the Bash builtins return an exit status of zero if they +succeed and a non-zero status on failure, so they may be used by the +conditional and list constructs. All builtins return an exit status of +2 to indicate incorrect usage, generally invalid options or missing +arguments. + + +File: bash.info, Node: Signals, Prev: Exit Status, Up: Executing Commands + +3.7.6 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). When Bash receives a 'SIGINT', it breaks out of any +executing loops. In all cases, Bash ignores 'SIGQUIT'. If job control +is in effect (*note Job Control::), Bash ignores 'SIGTTIN', 'SIGTTOU', +and 'SIGTSTP'. + + Non-builtin commands started 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 'SIGHUP' signal to +a particular job, it should be removed from the jobs table with the +'disown' builtin (*note Job Control Builtins::) or marked to not receive +'SIGHUP' using 'disown -h'. + + If the 'huponexit' shell option has been set with 'shopt' (*note The +Shopt Builtin::), Bash sends a 'SIGHUP' to all jobs when an interactive +login shell exits. + + 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. + + +File: bash.info, Node: Shell Scripts, Prev: Executing Commands, Up: Basic Shell Features + +3.8 Shell Scripts +================= + +A shell script is a text file containing shell commands. When such a +file is used as the first non-option argument when invoking Bash, and +neither the '-c' nor '-s' option is supplied (*note Invoking Bash::), +Bash reads and executes commands from the file, then exits. This mode +of operation creates a non-interactive shell. The shell first searches +for the file in the current directory, and looks in the directories in +'$PATH' if not found there. + + When Bash runs a shell script, it sets the special parameter '0' to +the name of the file, rather than the name of the shell, and the +positional parameters are set to the remaining arguments, if any are +given. If no additional arguments are supplied, the positional +parameters are unset. + + A shell script may be made executable by using the 'chmod' command to +turn on the execute bit. When Bash finds such a file while searching +the '$PATH' for a command, it spawns a subshell to execute it. In other +words, executing + filename ARGUMENTS +is equivalent to executing + bash filename ARGUMENTS + +if 'filename' is an executable shell script. This subshell +reinitializes itself, so that the effect is as if a new shell had been +invoked to interpret the script, with the exception that the locations +of commands remembered by the parent (see the description of 'hash' in +*note Bourne Shell Builtins::) are retained by the child. + + Most versions of Unix make this a part of the operating system's +command execution mechanism. If the first line of a script begins with +the two characters '#!', the remainder of the line specifies an +interpreter for the program and, depending on the operating system, one +or more optional arguments for that interpreter. Thus, you can specify +Bash, 'awk', Perl, or some other interpreter and write the rest of the +script file in that language. + + The arguments to the interpreter consist of one or more optional +arguments following the interpreter name on the first line of the script +file, followed by the name of the script file, followed by the rest of +the arguments supplied to the script. The details of how the +interpreter line is split into an interpreter name and a set of +arguments vary across systems. Bash will perform this action on +operating systems that do not handle it themselves. Note that some +older versions of Unix limit the interpreter name and a single argument +to a maximum of 32 characters, so it's not portable to assume that using +more than one argument will work. + + Bash scripts often begin with '#! /bin/bash' (assuming that Bash has +been installed in '/bin'), since this ensures that Bash will be used to +interpret the script, even if it is executed under another shell. It's +a common idiom to use 'env' to find 'bash' even if it's been installed +in another directory: '#!/usr/bin/env bash' will find the first +occurrence of 'bash' in '$PATH'. + + +File: bash.info, Node: Shell Builtin Commands, Next: Shell Variables, Prev: Basic Shell Features, Up: Top + +4 Shell Builtin Commands +************************ + +* Menu: + +* Bourne Shell Builtins:: Builtin commands inherited from the Bourne + Shell. +* Bash Builtins:: Table of builtins specific to Bash. +* Modifying Shell Behavior:: Builtins to modify shell attributes and + optional behavior. +* Special Builtins:: Builtin commands classified specially by + POSIX. + +Builtin commands are contained within the shell itself. When the name +of a builtin command is used as the first word of a simple command +(*note Simple Commands::), the shell executes the command directly, +without invoking another program. Builtin commands are necessary to +implement functionality impossible or inconvenient to obtain with +separate utilities. + + This section briefly describes the builtins which Bash inherits from +the Bourne Shell, as well as the builtin commands which are unique to or +have been extended in Bash. + + Several builtin commands are described in other chapters: builtin +commands which provide the Bash interface to the job control facilities +(*note Job Control Builtins::), the directory stack (*note Directory +Stack Builtins::), the command history (*note Bash History Builtins::), +and the programmable completion facilities (*note Programmable +Completion Builtins::). + + Many of the builtins have been extended by POSIX or Bash. + + Unless otherwise noted, each builtin command documented as accepting +options preceded by '-' accepts '--' to signify the end of the options. +The ':', 'true', 'false', and 'test'/'[' builtins do not accept options +and do not treat '--' specially. The 'exit', 'logout', 'return', +'break', 'continue', 'let', and 'shift' builtins accept and process +arguments beginning with '-' without requiring '--'. Other builtins +that accept arguments but are not specified as accepting options +interpret arguments beginning with '-' as invalid options and require +'--' to prevent this interpretation. + + +File: bash.info, Node: Bourne Shell Builtins, Next: Bash Builtins, Up: Shell Builtin Commands + +4.1 Bourne Shell Builtins +========================= + +The following shell builtin commands are inherited from the Bourne +Shell. These commands are implemented as specified by the POSIX +standard. + +': (a colon)' + : [ARGUMENTS] + + Do nothing beyond expanding ARGUMENTS and performing redirections. + The return status is zero. + +'. (a period)' + . FILENAME [ARGUMENTS] + + Read and execute commands from the FILENAME argument in the current + shell context. If FILENAME does not contain a slash, the 'PATH' + variable is used to find FILENAME. When Bash is not in POSIX mode, + the current directory is searched if FILENAME is not found in + '$PATH'. If any ARGUMENTS are supplied, they become the positional + parameters when FILENAME is executed. Otherwise the positional + parameters are unchanged. If the '-T' option is enabled, 'source' + inherits any trap on 'DEBUG'; if it is not, any 'DEBUG' trap string + is saved and restored around the call to 'source', and 'source' + unsets the 'DEBUG' trap while it executes. If '-T' is not set, and + the sourced file changes the 'DEBUG' trap, the new value is + retained when 'source' completes. The return status is the exit + status of the last command executed, or zero if no commands are + executed. If FILENAME is not found, or cannot be read, the return + status is non-zero. This builtin is equivalent to 'source'. + +'break' + break [N] + + Exit from a 'for', 'while', 'until', or 'select' loop. If N is + supplied, the Nth enclosing loop is exited. N must be greater than + or equal to 1. The return status is zero unless N is not greater + than or equal to 1. + +'cd' + cd [-L|[-P [-e]] [-@] [DIRECTORY] + + Change the current working directory to DIRECTORY. If DIRECTORY is + not supplied, the value of the 'HOME' shell variable is used. Any + additional arguments following DIRECTORY are ignored. If the shell + variable 'CDPATH' exists, it is used as a search path: each + directory name in 'CDPATH' is searched for DIRECTORY, with + alternative directory names in 'CDPATH' separated by a colon (':'). + If DIRECTORY begins with a slash, 'CDPATH' is not used. + + The '-P' option means to not follow symbolic links: symbolic links + are resolved while 'cd' is traversing DIRECTORY and before + processing an instance of '..' in DIRECTORY. + + By default, or when the '-L' option is supplied, symbolic links in + DIRECTORY are resolved after 'cd' processes an instance of '..' in + DIRECTORY. + + If '..' appears in DIRECTORY, it is processed by removing the + immediately preceding pathname component, back to a slash or the + beginning of DIRECTORY. + + If the '-e' option is supplied with '-P' and the current working + directory cannot be successfully determined after a successful + directory change, 'cd' will return an unsuccessful status. + + On systems that support it, the '-@' option presents the extended + attributes associated with a file as a directory. + + If DIRECTORY is '-', it is converted to '$OLDPWD' before the + directory change is attempted. + + 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 status is zero if the directory is successfully changed, + non-zero otherwise. + +'continue' + continue [N] + + Resume the next iteration of an enclosing 'for', 'while', 'until', + or 'select' loop. If N is supplied, the execution of the Nth + enclosing loop is resumed. N must be greater than or equal to 1. + The return status is zero unless N is not greater than or equal to + 1. + +'eval' + eval [ARGUMENTS] + + The arguments are concatenated together into a single command, + which is then read and executed, and its exit status returned as + the exit status of 'eval'. If there are no arguments or only empty + arguments, the return status is zero. + +'exec' + exec [-cl] [-a NAME] [COMMAND [ARGUMENTS]] + + If COMMAND is supplied, it replaces the shell without creating a + new process. If the '-l' option is supplied, the shell places a + dash at the beginning of the zeroth argument passed to COMMAND. + This is what the 'login' program does. The '-c' option causes + COMMAND to be executed with an empty environment. If '-a' is + supplied, the shell passes NAME as the zeroth argument to COMMAND. + If COMMAND cannot be executed for some reason, a non-interactive + shell exits, unless the 'execfail' shell option is enabled. In + that case, it returns failure. An interactive shell returns + failure if the file cannot be executed. A subshell exits + unconditionally if 'exec' fails. If no COMMAND is specified, + redirections may be used to affect the current shell environment. + If there are no redirection errors, the return status is zero; + otherwise the return status is non-zero. + +'exit' + exit [N] + + Exit the shell, returning a status of N to the shell's parent. If + N is omitted, the exit status is that of the last command executed. + Any trap on 'EXIT' is executed before the shell terminates. + +'export' + export [-fn] [-p] [NAME[=VALUE]] + + Mark each NAME to be passed to child processes in the environment. + If the '-f' option is supplied, the NAMEs refer to shell functions; + otherwise the names refer to shell variables. The '-n' option + means to no longer mark each NAME for export. If no NAMES are + supplied, or if the '-p' option is given, a list of names of all + exported variables is displayed. The '-p' option displays output + in a form that may be reused as input. If a variable name is + followed by =VALUE, the value of the variable is set to VALUE. + + The return status is zero unless an invalid option is supplied, one + of the names is not a valid shell variable name, or '-f' is + supplied with a name that is not a shell function. + +'getopts' + getopts OPTSTRING NAME [ARG ...] + + 'getopts' is used by shell scripts 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 whitespace. The + colon (':') and question mark ('?') 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 supplied as ARG values, '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. + +'hash' + hash [-r] [-p FILENAME] [-dt] [NAME] + + Each time 'hash' is invoked, it remembers the full pathnames of the + commands specified as NAME arguments, so they need not be searched + for on subsequent invocations. The commands are found by searching + through the directories listed in '$PATH'. Any + previously-remembered pathname is discarded. The '-p' option + inhibits the path search, and FILENAME is used as the location of + NAME. 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 zero unless a + NAME is not found or an invalid option is supplied. + +'pwd' + pwd [-LP] + + Print the absolute pathname of the current working directory. If + the '-P' option is supplied, the pathname printed will not contain + symbolic links. If the '-L' option is supplied, the pathname + printed may contain symbolic links. The return status is zero + unless an error is encountered while determining the name of the + current directory or an invalid option is supplied. + +'readonly' + readonly [-aAf] [-p] [NAME[=VALUE]] ... + + Mark each NAME as readonly. The values of these names may not be + changed by subsequent assignment. If the '-f' option is supplied, + each NAME refers to a shell function. The '-a' option means each + NAME refers to an indexed array variable; the '-A' option means + each NAME refers to an associative array variable. If both options + are supplied, '-A' takes precedence. If no NAME arguments are + given, or if the '-p' option is supplied, a list of all readonly + names is printed. The other options may be used to restrict the + output to a subset of the set of readonly names. The '-p' option + causes output to be displayed in a format that may be reused as + input. If a variable name is followed by =VALUE, the value of the + variable is set to VALUE. The return status is zero unless an + invalid option is supplied, one of the NAME arguments is not a + valid shell variable or function name, or the '-f' option is + supplied with a name that is not a shell function. + +'return' + return [N] + + Cause a shell function to stop executing and return the value N to + its caller. If N is not supplied, the return value is the exit + status of the last command executed in the function. If 'return' + is executed by a trap handler, the last command used to determine + the status is the last command executed before the trap handler. + If 'return' is executed during a 'DEBUG' trap, the last command + used to determine the status is the last command executed by the + trap handler before 'return' was invoked. 'return' may also be + used to terminate execution of a script being executed with the '.' + ('source') builtin, returning either N or the exit status of the + last command executed within the script as the exit status of the + script. If N is supplied, the return value is its least + significant 8 bits. Any command associated with the 'RETURN' trap + is executed before execution resumes after the function or script. + The return status is non-zero if 'return' is supplied a non-numeric + argument or is used outside a function and not during the execution + of a script by '.' or 'source'. + +'shift' + shift [N] + + Shift the positional parameters to the left by N. The positional + parameters from N+1 ... '$#' are renamed to '$1' ... '$#'-N. + Parameters represented by the numbers '$#' down to '$#'-N+1 are + unset. N must be a non-negative number less than or equal to '$#'. + If N is zero or greater than '$#', the positional parameters are + not changed. If N is not supplied, it is assumed to be 1. The + return status is zero unless N is greater than '$#' or less than + zero, non-zero otherwise. + +'test' +'[' + test EXPR + + Evaluate a conditional expression EXPR and return a status of 0 + (true) or 1 (false). Each operator and operand must be a separate + argument. Expressions are composed of the primaries described + below in *note Bash Conditional Expressions::. 'test' does not + accept any options, nor does it accept and ignore an argument of + '--' as signifying the end of options. + + When the '[' form is used, the last argument to the command must be + a ']'. + + Expressions may be combined using the following operators, listed + in decreasing order of precedence. The evaluation depends on the + number of arguments; see below. Operator precedence is used when + there are five or more arguments. + + '! 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. + + The 'test' and '[' builtins 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 (*note Bash Conditional + Expressions::), the expression is true if the unary test is + true. If the first argument is not a valid unary operator, + the expression is false. + + 3 arguments + The following conditions are applied in the order listed. + + 1. If the second argument is one of the binary conditional + operators (*note Bash Conditional Expressions::), the + result of the expression is the result of the binary test + using the first and third arguments as operands. The + '-a' and '-o' operators are considered binary operators + when there are three arguments. + 2. If the first argument is '!', the value is the negation + of the two-argument test using the second and third + arguments. + 3. If the first argument is exactly '(' and the third + argument is exactly ')', the result is the one-argument + test of the second argument. + 4. Otherwise, the expression is false. + + 4 arguments + If the first argument is '!', the result is the negation of + the three-argument expression composed of the remaining + 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. + + When used with 'test' or '[', the '<' and '>' operators sort + lexicographically using ASCII ordering. + +'times' + times + + Print out the user and system times used by the shell and its + children. The return status is zero. + +'trap' + trap [-lp] [ARG] [SIGSPEC ...] + + The commands in ARG are to be read and executed when the shell + receives signal SIGSPEC. If ARG is absent (and there is a single + SIGSPEC) or equal to '-', each specified signal's disposition is + reset to the value it had when the shell was started. If ARG is + the null string, then the signal specified by each SIGSPEC is + ignored by the shell and commands it invokes. If ARG is not + present and '-p' has been supplied, the shell displays the trap + commands associated with each SIGSPEC. If no arguments are + supplied, or only '-p' is given, 'trap' prints the list of commands + associated with each signal number in a form that may be reused as + shell input. The '-l' option causes the shell to print a list of + signal names and their corresponding numbers. Each SIGSPEC is + either a signal name or a signal number. Signal names are case + insensitive and the 'SIG' prefix is optional. + + If a SIGSPEC is '0' or 'EXIT', ARG is executed when the shell + exits. 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. Refer to the description of + the 'extdebug' option to the 'shopt' builtin (*note The Shopt + Builtin::) for details of its effect on the 'DEBUG' trap. 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. + + If a SIGSPEC is 'ERR', the command ARG is executed whenever a + pipeline (which may consist of a single simple command), a list, or + a compound command returns a non-zero exit status, subject to the + following conditions. The 'ERR' trap is not executed if the failed + command is part of the command list immediately following an + 'until' or 'while' keyword, part of the test following the 'if' or + 'elif' reserved words, part of a command executed in a '&&' or '||' + list except the command following the final '&&' or '||', any + command in a pipeline but the last, or if the command's return + status is being inverted using '!'. These are the same conditions + obeyed by the 'errexit' ('-e') option. + + Signals ignored upon entry to the shell cannot be trapped or reset. + Trapped signals that are not being ignored are reset to their + original values in a subshell or subshell environment when one is + created. + + The return status is zero unless a SIGSPEC does not specify a valid + signal. + +'umask' + umask [-p] [-S] [MODE] + + Set the shell process's file creation mask to MODE. If MODE begins + with a digit, it is interpreted as an octal number; if not, it is + interpreted as a symbolic mode mask similar to that accepted by the + 'chmod' command. If MODE is omitted, the current value of the mask + is printed. If the '-S' option is supplied without a MODE + argument, the mask is printed in a symbolic format. 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 zero if the mode + is successfully changed or if no MODE argument is supplied, and + non-zero otherwise. + + Note that when the mode is interpreted as an octal number, each + number of the umask is subtracted from '7'. Thus, a umask of '022' + results in permissions of '755'. + +'unset' + unset [-fnv] [NAME] + + Remove each variable or function NAME. If the '-v' option is + given, each NAME refers to a shell variable and that variable is + removed. If the '-f' option is given, the NAMEs refer to shell + functions, and the function definition is removed. If the '-n' + option is supplied, and NAME is a variable with the NAMEREF + attribute, NAME will be unset rather than the variable it + references. '-n' has no effect if the '-f' option is supplied. If + no options are supplied, each NAME refers to a variable; if there + is no variable by that name, a function with that name, if any, is + unset. Readonly variables and functions may not be unset. Some + shell variables lose their special behavior if they are unset; such + behavior is noted in the description of the individual variables. + The return status is zero unless a NAME is readonly. + + +File: bash.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands + +4.2 Bash Builtin Commands +========================= + +This section describes builtin commands which are unique to or have been +extended in Bash. Some of these commands are specified in the POSIX +standard. + +'alias' + alias [-p] [NAME[=VALUE] ...] + + Without arguments or with the '-p' option, 'alias' prints the list + of aliases on the standard output in a form that allows them to be + reused as input. If arguments are supplied, an alias is defined + for each NAME whose VALUE is given. If no VALUE is given, the name + and value of the alias is printed. Aliases are described in *note + Aliases::. + +'bind' + bind [-m KEYMAP] [-lpsvPSVX] + 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 [-m KEYMAP] KEYSEQ:READLINE-COMMAND + + Display current Readline (*note Command Line Editing::) key and + function bindings, bind a key sequence to a Readline function or + macro, or set a Readline variable. Each non-option argument is a + command as it would appear in a Readline initialization file (*note + Readline Init File::), but each binding or command must be passed + as a separate argument; e.g., '"\C-x\C-r":re-read-init-file'. + + Options, if supplied, have the 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' ('vi-move' is also a synonym); '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 used as input or in a Readline initialization + file. + + '-P' + List current Readline function names and bindings. + + '-v' + Display Readline variable names and values in such a way that + they can be used as input or in a Readline initialization + file. + + '-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 used as input or in + a Readline initialization file. + + '-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. + When SHELL-COMMAND is executed, the shell sets the + 'READLINE_LINE' variable to the contents of the Readline line + buffer and the 'READLINE_POINT' and 'READLINE_MARK' variables + to the current location of the insertion point and the saved + insertion point (the MARK), respectively. If the executed + command changes the value of any of 'READLINE_LINE', + 'READLINE_POINT', or 'READLINE_MARK', those new values will be + reflected in the editing state. + + '-X' + List all key sequences bound to shell commands and the + associated commands in a format that can be reused as input. + + The return status is zero unless an invalid option is supplied or + an error occurs. + +'builtin' + builtin [SHELL-BUILTIN [ARGS]] + + Run a shell builtin, passing it ARGS, and return its exit status. + This is useful when defining a shell function with the same name as + a shell builtin, retaining the functionality of the builtin within + the function. The return status is non-zero if SHELL-BUILTIN is + not a shell builtin command. + +'caller' + 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' + command [-pVv] COMMAND [ARGUMENTS ...] + + Runs COMMAND with ARGUMENTS ignoring any shell function named + COMMAND. Only shell builtin commands or commands found by + searching the 'PATH' are executed. If there is a shell function + named 'ls', running 'command ls' within the function will execute + the external command 'ls' instead of calling the function + recursively. The '-p' option means to use a default value for + 'PATH' that is guaranteed to find all of the standard utilities. + The return status in this case is 127 if COMMAND cannot be found or + an error occurred, and the exit status of COMMAND otherwise. + + 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. In + this case, the return status is zero if COMMAND is found, and + non-zero if not. + +'declare' + declare [-aAfFgiIlnrtux] [-p] [NAME[=VALUE] ...] + + Declare variables and 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. When '-p' is used with NAME arguments, additional options, + other than '-f' and '-F', are ignored. + + When '-p' is supplied without NAME arguments, 'declare' will + display the attributes and values of all variables having the + attributes specified by the additional options. If no other + options are supplied with '-p', 'declare' will display the + attributes and values of all shell variables. The '-f' option will + restrict the display to shell functions. + + The '-F' option inhibits the display of function definitions; only + the function name and attributes are printed. If the 'extdebug' + shell option is enabled using 'shopt' (*note The Shopt Builtin::), + the source file name and line number where each NAME is defined are + displayed as well. '-F' implies '-f'. + + The '-g' option forces variables to be created or modified at the + global scope, even when 'declare' is executed in a shell function. + It is ignored in all other cases. + + The '-I' option causes local variables to inherit the attributes + (except the NAMEREF attribute) and value of any existing variable + with the same NAME at a surrounding scope. If there is no existing + variable, the local variable is initially unset. + + The following options can be used to restrict output to variables + with the specified attributes or to give variables attributes: + + '-a' + Each NAME is an indexed array variable (*note Arrays::). + + '-A' + Each NAME is an associative array variable (*note Arrays::). + + '-f' + Use function names only. + + '-i' + The variable is to be treated as an integer; arithmetic + evaluation (*note Shell Arithmetic::) is performed when the + variable is assigned a value. + + '-l' + When the variable is assigned a value, all upper-case + characters are converted to lower-case. The upper-case + attribute is disabled. + + '-n' + Give each NAME the NAMEREF attribute, making it a name + reference to another variable. That other variable is defined + by the value of NAME. All references, assignments, and + attribute modifications to NAME, except for those using or + changing the '-n' attribute itself, are performed on the + variable referenced by NAME's value. The nameref attribute + cannot be applied to array variables. + + '-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. + + '-u' + When the variable is assigned a value, all lower-case + characters are converted to upper-case. The lower-case + attribute is disabled. + + '-x' + Mark each NAME for export to subsequent commands via the + environment. + + Using '+' instead of '-' turns off the attribute instead, with the + exceptions that '+a' and '+A' may not be used to destroy array + variables and '+r' will not remove the readonly attribute. When + used in a function, 'declare' makes each NAME local, as with the + 'local' command, unless the '-g' option is used. If a variable + name is followed by =VALUE, the value of the variable is set to + VALUE. + + When using '-a' or '-A' and the compound assignment syntax to + create array variables, additional attributes do not take effect + until subsequent assignments. + + The return status is zero unless an invalid option is encountered, + an attempt is made to define a function using '-f foo=bar', an + attempt is made to assign a value to a readonly variable, an + attempt is made to assign a value to an array variable without + using the compound assignment syntax (*note Arrays::), 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'. + +'echo' + echo [-neE] [ARG ...] + + Output the ARGs, separated by spaces, terminated with a newline. + The return status is 0 unless a write error occurs. If '-n' is + specified, the trailing newline is suppressed. If the '-e' option + is given, interpretation of the following backslash-escaped + characters is enabled. The '-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 further output + '\e' + '\E' + escape + '\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) + '\xHH' + the eight-bit character whose value is the hexadecimal value + HH (one or two hex digits) + '\uHHHH' + the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value HHHH (one to four hex digits) + '\UHHHHHHHH' + the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value HHHHHHHH (one to eight hex digits) + +'enable' + enable [-a] [-dnps] [-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, the NAMEs become disabled. Otherwise NAMEs are enabled. + For example, to use the 'test' binary found via '$PATH' instead of + the shell builtin version, type 'enable -n test'. + + If the '-p' option is supplied, or no NAME arguments appear, a list + of shell builtins is printed. With no other arguments, the list + consists of all enabled shell builtins. The '-a' option means to + list each builtin with an indication of whether or not it is + enabled. + + 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 loaded with '-f'. + + If there are no options, a list of the shell builtins is displayed. + The '-s' option restricts 'enable' to the POSIX special builtins. + If '-s' is used with '-f', the new builtin becomes a special + builtin (*note Special Builtins::). + + The return status is zero unless a NAME is not a shell builtin or + there is an error loading a new builtin from a shared object. + +'help' + help [-dms] [PATTERN] + + Display helpful information about builtin commands. If PATTERN is + specified, 'help' gives detailed help on all commands matching + PATTERN, otherwise a list of the builtins is printed. + + Options, if supplied, have the following meanings: + + '-d' + Display a short description of each PATTERN + '-m' + Display the description of each PATTERN in a manpage-like + format + '-s' + Display only a short usage synopsis for each PATTERN + + The return status is zero unless no command matches PATTERN. + +'let' + let EXPRESSION [EXPRESSION ...] + + The 'let' builtin allows arithmetic to be performed on shell + variables. Each EXPRESSION is evaluated according to the rules + given below in *note Shell Arithmetic::. If the last EXPRESSION + evaluates to 0, 'let' returns 1; otherwise 0 is returned. + +'local' + 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'. 'local' can only be used within a function; it makes + the variable NAME have a visible scope restricted to that function + and its children. If NAME is '-', the set of shell options is made + local to the function in which 'local' is invoked: shell options + changed using the 'set' builtin inside the function are restored to + their original values when the function returns. The restore is + effected as if a series of 'set' commands were executed to restore + the values that were in place before the function. The return + status is zero unless 'local' is used outside a function, an + invalid NAME is supplied, or NAME is a readonly variable. + +'logout' + logout [N] + + Exit a login shell, returning a status of N to the shell's parent. + +'mapfile' + mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] + [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] + + Read lines from the standard input into the indexed array variable + ARRAY, or from file descriptor FD if the '-u' option is supplied. + The variable 'MAPFILE' is the default ARRAY. Options, if supplied, + have the following meanings: + + '-d' + The first character of DELIM is used to terminate each input + line, rather than newline. If DELIM is the empty string, + 'mapfile' will terminate a line when it reads a NUL character. + '-n' + Copy at most COUNT lines. If COUNT is 0, all lines are + copied. + '-O' + Begin assigning to ARRAY at index ORIGIN. The default index + is 0. + '-s' + Discard the first COUNT lines read. + '-t' + Remove a trailing DELIM (default newline) from each line read. + '-u' + Read lines from file descriptor FD instead of the standard + input. + '-C' + Evaluate CALLBACK each time QUANTUM lines are read. The '-c' + option specifies QUANTUM. + '-c' + Specify the number of lines read between each call to + CALLBACK. + + If '-C' is specified without '-c', the default quantum is 5000. + When CALLBACK is evaluated, it is supplied the index of the next + array element to be assigned and the line to be assigned to that + element as additional arguments. CALLBACK is evaluated after the + line is read but before the array element is assigned. + + If not supplied with an explicit origin, 'mapfile' will clear ARRAY + before assigning to it. + + 'mapfile' returns successfully unless an invalid option or option + argument is supplied, ARRAY is invalid or unassignable, or ARRAY is + not an indexed array. + +'printf' + printf [-v VAR] FORMAT [ARGUMENTS] + + Write the formatted ARGUMENTS to the standard output under the + control of the FORMAT. The '-v' option causes the output to be + assigned to the variable VAR rather than being printed to the + standard output. + + 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, 'printf' interprets the following + extensions: + + '%b' + Causes 'printf' to expand backslash escape sequences in the + corresponding ARGUMENT in the same way as 'echo -e' (*note + Bash Builtins::). + '%q' + Causes 'printf' to output the corresponding ARGUMENT in a + format that can be reused as shell input. + '%(DATEFMT)T' + Causes 'printf' to output the date-time string resulting from + using DATEFMT as a format string for 'strftime'(3). The + corresponding ARGUMENT is an integer representing the number + of seconds since the epoch. Two special argument values may + be used: -1 represents the current time, and -2 represents the + time the shell was invoked. If no argument is specified, + conversion behaves as if -1 had been given. This is an + exception to the usual 'printf' behavior. + + The %b, %q, and %T directives all use the field width and precision + arguments from the format specification and write that many bytes + from (or use that wide a field for) the expanded argument, which + usually contains more characters than the original. + + Arguments to non-string format specifiers are treated as C language + constants, except that a leading plus or minus sign is allowed, and + if the leading character is a single or double quote, the value is + the ASCII value of the following character. + + 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. + +'read' + read [-ers] [-a ANAME] [-d DELIM] [-i TEXT] [-n NCHARS] + [-N NCHARS] [-p PROMPT] [-t TIMEOUT] [-u FD] [NAME ...] + + One line is read from the standard input, or from the file + descriptor FD supplied as an argument to the '-u' option, split + into words as described above in *note Word Splitting::, and the + first word is assigned to the first NAME, the second word to the + second NAME, and so on. If there are more words than names, the + remaining words and their intervening delimiters are 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 the value of the 'IFS' variable are used to split the + line into words using the same rules the shell uses for expansion + (described above in *note Word Splitting::). The backslash + character '\' may be used to remove any special meaning for the + next character read and for line continuation. + + Options, if supplied, have the following meanings: + + '-a ANAME' + The words are assigned to sequential indices of the array + variable ANAME, starting at 0. All elements are removed from + ANAME before the assignment. Other NAME arguments are + ignored. + + '-d DELIM' + The first character of DELIM is used to terminate the input + line, rather than newline. If DELIM is the empty string, + 'read' will terminate a line when it reads a NUL character. + + '-e' + Readline (*note Command Line Editing::) is used to obtain the + line. Readline uses the current (or default, if line editing + was not previously active) editing settings, but uses + Readline's default filename completion. + + '-i TEXT' + If Readline is being used to read the line, TEXT is placed + into the editing buffer before editing begins. + + '-n NCHARS' + 'read' returns after reading NCHARS characters rather than + waiting for a complete line of input, but honors a delimiter + if fewer than NCHARS characters are read before the delimiter. + + '-N NCHARS' + 'read' returns after reading exactly NCHARS characters rather + than waiting for a complete line of input, unless EOF is + encountered or 'read' times out. Delimiter characters + encountered in the input are not treated specially and do not + cause 'read' to return until NCHARS characters are read. The + result is not split on the characters in 'IFS'; the intent is + that the variable is assigned exactly the characters read + (with the exception of backslash; see the '-r' option below). + + '-p PROMPT' + Display PROMPT, without a trailing newline, before attempting + to read any input. The prompt is displayed only if input is + coming from a terminal. + + '-r' + If this option is given, 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 then 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 (or a specified number of characters) is not read + within TIMEOUT seconds. TIMEOUT may be a decimal number with + a fractional portion following the decimal point. This option + is only effective if 'read' is reading input from a terminal, + pipe, or other special file; it has no effect when reading + from regular files. If 'read' times out, 'read' saves any + partial input read into the specified variable NAME. If + TIMEOUT is 0, 'read' returns immediately, without trying to + read any data. The exit status is 0 if input is available on + the specified file descriptor, non-zero otherwise. The exit + status is greater than 128 if the timeout is exceeded. + + '-u FD' + Read input from file descriptor FD. + + If no NAMEs are supplied, the line read, without the ending + delimiter but otherwise unmodified, is assigned to the variable + 'REPLY'. The exit status is zero, unless end-of-file is + encountered, 'read' times out (in which case the status is greater + than 128), a variable assignment error (such as assigning to a + readonly variable) occurs, or an invalid file descriptor is + supplied as the argument to '-u'. + +'readarray' + readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] + [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] + + Read lines from the standard input into the indexed array variable + ARRAY, or from file descriptor FD if the '-u' option is supplied. + + A synonym for 'mapfile'. + +'source' + source FILENAME + + A synonym for '.' (*note Bourne Shell Builtins::). + +'type' + type [-afptP] [NAME ...] + + For each NAME, indicate how it would be interpreted if used as a + command name. + + If the '-t' option is used, 'type' prints a single word which is + one of 'alias', 'function', 'builtin', 'file' or 'keyword', if NAME + is an alias, shell function, shell builtin, disk file, or shell + reserved word, respectively. If the NAME is not found, then + nothing is printed, and 'type' returns a failure status. + + If the '-p' option is used, 'type' either returns the name of the + disk file that would be executed, or nothing if '-t' would not + return 'file'. + + The '-P' option forces a path search for each NAME, even if '-t' + would not return 'file'. + + If a command is hashed, '-p' and '-P' print the hashed value, which + is not necessarily the file that appears first in '$PATH'. + + If the '-a' option is used, 'type' returns all of the places that + contain an executable named FILE. This includes aliases and + functions, if and only if the '-p' option is not also used. + + If the '-f' option is used, 'type' does not attempt to find shell + functions, as with the 'command' builtin. + + The return status is zero if all of the NAMES are found, non-zero + if any are not found. + +'typeset' + typeset [-afFgrxilnrtux] [-p] [NAME[=VALUE] ...] + + The 'typeset' command is supplied for compatibility with the Korn + shell. It is a synonym for the 'declare' builtin command. + +'ulimit' + ulimit [-HS] -a + ulimit [-HS] [-bcdefiklmnpqrstuvxPRT] [LIMIT] + + 'ulimit' provides control over the resources available to processes + started by the shell, on systems that allow such control. If an + option is given, it is interpreted as follows: + + '-S' + Change and report the soft limit associated with a resource. + + '-H' + Change and report the hard limit associated with a resource. + + '-a' + All current limits are reported; no limits are set. + + '-b' + The maximum socket buffer size. + + '-c' + The maximum size of core files created. + + '-d' + The maximum size of a process's data segment. + + '-e' + The maximum scheduling priority ("nice"). + + '-f' + The maximum size of files written by the shell and its + children. + + '-i' + The maximum number of pending signals. + + '-k' + The maximum number of kqueues that may be allocated. + + '-l' + The maximum size that may be locked into memory. + + '-m' + The maximum resident set size (many systems do not honor this + limit). + + '-n' + The maximum number of open file descriptors (most systems do + not allow this value to be set). + + '-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 processes available to a single user. + + '-v' + The maximum amount of virtual memory available to the shell, + and, on some systems, to its children. + + '-x' + The maximum number of file locks. + + '-P' + The maximum number of pseudoterminals. + + '-R' + The maximum time a real-time process can run before blocking, + in microseconds. + + '-T' + The maximum number of threads. + + If LIMIT is given, and the '-a' option is not used, LIMIT is the + new value of the specified resource. The special LIMIT values + 'hard', 'soft', and 'unlimited' stand for the current hard limit, + the current soft limit, and no limit, respectively. A hard limit + cannot be increased by a non-root user once it is set; a soft limit + may be increased up to the value of the hard limit. Otherwise, the + current value of the soft limit for the specified resource is + printed, unless the '-H' option is supplied. When more than one + resource is specified, the limit name and unit, if appropriate, are + printed before the value. When setting new limits, if neither '-H' + nor '-S' is supplied, both the hard and soft limits are set. If no + option is given, then '-f' is assumed. Values are in 1024-byte + increments, except for '-t', which is in seconds; '-R', which is in + microseconds; '-p', which is in units of 512-byte blocks; '-P', + '-T', '-b', '-k', '-n' and '-u', which are unscaled values; and, + when in POSIX Mode (*note Bash POSIX Mode::), '-c' and '-f', which + are in 512-byte increments. + + The return status is zero unless an invalid option or argument is + supplied, or an error occurs while setting a new limit. + +'unalias' + unalias [-a] [NAME ... ] + + Remove each NAME from the list of aliases. If '-a' is supplied, + all aliases are removed. Aliases are described in *note Aliases::. + + +File: bash.info, Node: Modifying Shell Behavior, Next: Special Builtins, Prev: Bash Builtins, Up: Shell Builtin Commands + +4.3 Modifying Shell Behavior +============================ + +* Menu: + +* The Set Builtin:: Change the values of shell attributes and + positional parameters. +* The Shopt Builtin:: Modify shell optional behavior. + + +File: bash.info, Node: The Set Builtin, Next: The Shopt Builtin, Up: Modifying Shell Behavior + +4.3.1 The Set Builtin +--------------------- + +This builtin is so complicated that it deserves its own section. 'set' +allows you to change the values of shell options and set the positional +parameters, or to display the names and values of shell variables. + +'set' + set [--abefhkmnptuvxBCEHPT] [-o OPTION-NAME] [ARGUMENT ...] + set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [ARGUMENT ...] + + If no options or arguments are supplied, 'set' displays the names + and values of all shell variables and functions, sorted according + to the current locale, in a format that may be reused as input for + setting or resetting the currently-set variables. Read-only + variables cannot be reset. In POSIX mode, only shell variables are + listed. + + When options are supplied, they set or unset shell attributes. + Options, if specified, have the following meanings: + + '-a' + Each variable or function that is created or modified is given + the export attribute and marked for export to the environment + of subsequent commands. + + '-b' + Cause the status of terminated background jobs to be reported + immediately, rather than before printing the next primary + prompt. + + '-e' + Exit immediately if a pipeline (*note Pipelines::), which may + consist of a single simple command (*note Simple Commands::), + a list (*note Lists::), or a compound command (*note Compound + Commands::) returns 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 any command executed in + a '&&' or '||' list except the command following the final + '&&' or '||', any command in a pipeline but the last, or if + the command's return status is being inverted with '!'. If a + compound command other than a subshell returns a non-zero + status because a command failed while '-e' was being ignored, + the shell does not exit. A trap on 'ERR', if set, is executed + before the shell exits. + + This option applies to the shell environment and each subshell + environment separately (*note Command Execution + Environment::), and may cause subshells to exit before + executing all the commands in the subshell. + + If a compound command or shell function executes in a context + where '-e' is being ignored, none of the commands executed + within the compound command or function body will be affected + by the '-e' setting, even if '-e' is set and a command returns + a failure status. If a compound command or shell function + sets '-e' while executing in a context where '-e' is ignored, + that setting will not have any effect until the compound + command or the command containing the function call completes. + + '-f' + Disable filename expansion (globbing). + + '-h' + Locate and remember (hash) commands as they are looked up for + execution. This option is enabled by default. + + '-k' + All arguments in the form of assignment statements are placed + in the environment for a command, not just those that precede + the command name. + + '-m' + Job control is enabled (*note Job Control::). All processes + run in a separate process group. When a background job + completes, the shell prints a line containing its exit status. + + '-n' + Read commands but do not execute them. This may be used to + check a script for syntax errors. This option is ignored by + interactive shells. + + '-o OPTION-NAME' + + Set the option corresponding to OPTION-NAME: + + 'allexport' + Same as '-a'. + + 'braceexpand' + Same as '-B'. + + 'emacs' + Use an 'emacs'-style line editing interface (*note + Command Line Editing::). This also affects the editing + interface used for 'read -e'. + + 'errexit' + Same as '-e'. + + 'errtrace' + Same as '-E'. + + 'functrace' + Same as '-T'. + + 'hashall' + Same as '-h'. + + 'histexpand' + Same as '-H'. + + 'history' + Enable command history, as described in *note Bash + History Facilities::. This option is on by default in + interactive shells. + + 'ignoreeof' + An interactive shell will not exit upon reading EOF. + + '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 + (*note Bash POSIX Mode::). This is intended to make Bash + behave as a strict superset of that standard. + + 'privileged' + Same as '-p'. + + 'verbose' + Same as '-v'. + + 'vi' + Use a 'vi'-style line editing interface. This also + affects the editing interface used for 'read -e'. + + 'xtrace' + Same as '-x'. + + '-p' + Turn on privileged mode. In this mode, the '$BASH_ENV' and + '$ENV' files are not processed, shell functions are not + inherited from the environment, and the 'SHELLOPTS', + 'BASHOPTS', 'CDPATH' and 'GLOBIGNORE' variables, if they + appear in the environment, are 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 and parameters other than the special + parameters '@' or '*' as an error when performing parameter + expansion. An error message will be written to the standard + error, and a non-interactive shell will exit. + + '-v' + Print shell input lines as they are read. + + '-x' + Print a trace of simple commands, 'for' commands, 'case' + commands, 'select' commands, and arithmetic 'for' commands and + their arguments or associated word lists after they are + expanded and before they are executed. The value of the 'PS4' + variable is expanded and the resultant value is printed before + the command and its expanded arguments. + + '-B' + The shell will perform brace expansion (*note Brace + Expansion::). This option is on by default. + + '-C' + Prevent output redirection using '>', '>&', and '<>' from + overwriting existing files. + + '-E' + If set, any trap on 'ERR' is inherited by shell functions, + command substitutions, and commands executed in a subshell + environment. The 'ERR' trap is normally not inherited in such + cases. + + '-H' + Enable '!' style history substitution (*note History + Interaction::). This option is on by default for interactive + shells. + + '-P' + If set, do not resolve symbolic links when performing commands + such as 'cd' which change the current directory. The physical + directory is used instead. By default, Bash follows the + logical chain of directories when performing commands which + change the current directory. + + For example, if '/usr/sys' is a symbolic link to + '/usr/local/sys' then: + $ cd /usr/sys; echo $PWD + /usr/sys + $ cd ..; pwd + /usr + + If 'set -P' is on, then: + $ cd /usr/sys; echo $PWD + /usr/local/sys + $ cd ..; pwd + /usr/local + + '-T' + If set, any trap on 'DEBUG' and 'RETURN' are inherited by + shell functions, command substitutions, and commands executed + in a subshell environment. The 'DEBUG' and 'RETURN' traps are + normally not inherited in such cases. + + '--' + If no arguments follow this option, then the positional + parameters are unset. Otherwise, the positional parameters + are set to the ARGUMENTS, even if some of them begin with a + '-'. + + '-' + Signal the end of options, cause all remaining ARGUMENTS to be + assigned to the positional parameters. The '-x' and '-v' + options are turned off. If there are no arguments, the + positional parameters remain unchanged. + + Using '+' rather than '-' causes these options to be turned off. + The options can also be used upon invocation of the shell. The + current set of options may be found in '$-'. + + The remaining N ARGUMENTS are positional parameters and are + assigned, in order, to '$1', '$2', ... '$N'. The special parameter + '#' is set to N. + + The return status is always zero unless an invalid option is + supplied. + + +File: bash.info, Node: The Shopt Builtin, Prev: The Set Builtin, Up: Modifying Shell Behavior + +4.3.2 The Shopt Builtin +----------------------- + +This builtin allows you to change additional shell optional behavior. + +'shopt' + shopt [-pqsu] [-o] [OPTNAME ...] + + Toggle the values of settings controlling optional shell behavior. + The settings can be either those listed below, or, if the '-o' + option is used, those available with the '-o' option to the 'set' + builtin command (*note The Set Builtin::). 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; if OPTNAMES are + supplied, the output is restricted to those options. The '-p' + option causes output to be displayed in a form that may be reused + as input. Other options have the following meanings: + + '-s' + Enable (set) each OPTNAME. + + '-u' + Disable (unset) each OPTNAME. + + '-q' + Suppresses normal output; the return status indicates whether + the OPTNAME is set or unset. If multiple OPTNAME arguments + are given with '-q', the return status is zero if all OPTNAMES + are enabled; non-zero otherwise. + + '-o' + Restricts the values of OPTNAME to be those defined for the + '-o' option to the 'set' builtin (*note The Set Builtin::). + + If either '-s' or '-u' is used with no OPTNAME arguments, 'shopt' + shows only those options which are set or unset, respectively. + + Unless otherwise noted, the 'shopt' options are disabled (off) by + default. + + The return status when listing options is zero if all OPTNAMES are + enabled, non-zero otherwise. When setting or unsetting options, + the return status is zero unless an OPTNAME is not a valid shell + option. + + The list of 'shopt' options is: + + 'assoc_expand_once' + If set, the shell suppresses multiple evaluation of + associative array subscripts during arithmetic expression + evaluation, while executing builtins that can perform variable + assignments, and while executing builtins that perform array + dereferencing. + + 'autocd' + If set, a command name that is the name of a directory is + executed as if it were the argument to the 'cd' command. This + option is only used by interactive shells. + + 'cdable_vars' + If this is set, an argument to the 'cd' builtin command that + is not a directory is assumed to be the name of a variable + whose value is the directory to change to. + + 'cdspell' + If set, minor errors in the spelling of a directory component + in a 'cd' command will be corrected. The errors checked for + are transposed characters, a missing character, and a + character too many. If a correction is found, the corrected + path is printed, and the command proceeds. This option is + only used by interactive shells. + + 'checkhash' + If this is set, Bash checks that a command found in the hash + table exists before trying to execute it. If a hashed command + no longer exists, a normal path search is performed. + + 'checkjobs' + If set, Bash lists the status of any stopped and running jobs + before exiting an interactive shell. If any jobs are running, + this causes the exit to be deferred until a second exit is + attempted without an intervening command (*note Job + Control::). The shell always postpones exiting if any jobs + are stopped. + + 'checkwinsize' + If set, Bash checks the window size after each external + (non-builtin) command and, if necessary, updates the values of + 'LINES' and 'COLUMNS'. This option is enabled by default. + + '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. This option is enabled by + default, but only has an effect if command history is enabled + (*note Bash History Facilities::). + + 'compat31' + 'compat32' + 'compat40' + 'compat41' + 'compat42' + 'compat43' + 'compat44' + These control aspects of the shell's compatibility mode (*note + Shell Compatibility Mode::). + + 'complete_fullquote' + If set, Bash quotes all shell metacharacters in filenames and + directory names when performing completion. If not set, Bash + removes metacharacters such as the dollar sign from the set of + characters that will be quoted in completed filenames when + these metacharacters appear in shell variable references in + words to be completed. This means that dollar signs in + variable names that expand to directories will not be quoted; + however, any dollar signs appearing in filenames will not be + quoted, either. This is active only when bash is using + backslashes to quote completed filenames. This variable is + set by default, which is the default Bash behavior in versions + through 4.2. + + 'direxpand' + If set, Bash replaces directory names with the results of word + expansion when performing filename completion. This changes + the contents of the readline editing buffer. If not set, Bash + attempts to preserve what the user typed. + + 'dirspell' + If set, Bash attempts spelling correction on directory names + during word completion if the directory name initially + supplied does not exist. + + 'dotglob' + If set, Bash includes filenames beginning with a '.' in the + results of filename expansion. The filenames '.' and '..' + must always be matched explicitly, even if 'dotglob' is set. + + 'execfail' + If this is set, a non-interactive shell will not exit if it + cannot execute the file specified as an argument to the 'exec' + builtin command. An interactive shell does not exit if 'exec' + fails. + + 'expand_aliases' + If set, aliases are expanded as described below under Aliases, + *note Aliases::. This option is enabled by default for + interactive shells. + + 'extdebug' + If set at shell invocation, or in a shell startup file, + arrange to execute the debugger profile before the shell + starts, identical to the '--debugger' option. If set after + invocation, behavior intended for use by debuggers is enabled: + + 1. The '-F' option to the 'declare' builtin (*note Bash + Builtins::) displays the source file name and line number + corresponding to each function name supplied as an + argument. + + 2. If the command run by the 'DEBUG' trap returns a non-zero + value, the next command is skipped and not executed. + + 3. If the command run by the 'DEBUG' trap returns a value of + 2, and the shell is executing in a subroutine (a shell + function or a shell script executed by the '.' or + 'source' builtins), the shell simulates a call to + 'return'. + + 4. 'BASH_ARGC' and 'BASH_ARGV' are updated as described in + their descriptions (*note Bash Variables::). + + 5. Function tracing is enabled: command substitution, shell + functions, and subshells invoked with '( COMMAND )' + inherit the 'DEBUG' and 'RETURN' traps. + + 6. Error tracing is enabled: command substitution, shell + functions, and subshells invoked with '( COMMAND )' + inherit the 'ERR' trap. + + 'extglob' + If set, the extended pattern matching features described above + (*note Pattern Matching::) are enabled. + + 'extquote' + If set, '$'STRING'' and '$"STRING"' quoting is performed + within '${PARAMETER}' expansions enclosed in double quotes. + This option is enabled by default. + + 'failglob' + If set, patterns which fail to match filenames during filename + expansion result in an expansion error. + + 'force_fignore' + If set, the suffixes specified by the 'FIGNORE' shell variable + cause words to be ignored when performing word completion even + if the ignored words are the only possible completions. *Note + Bash Variables::, for a description of 'FIGNORE'. This option + is enabled by default. + + 'globasciiranges' + If set, range expressions used in pattern matching bracket + expressions (*note Pattern Matching::) behave as if in the + traditional C locale when performing comparisons. That is, + the current locale's collating sequence is not taken into + account, so 'b' will not collate between 'A' and 'B', and + upper-case and lower-case ASCII characters will collate + together. + + 'globstar' + If set, the pattern '**' used in a filename expansion context + will match all files and zero or more directories and + subdirectories. If the pattern is followed by a '/', only + directories and subdirectories match. + + 'gnu_errfmt' + If set, shell error messages are written in the standard GNU + error message format. + + 'histappend' + If set, the history list is appended to the file named by the + value of the 'HISTFILE' variable when the shell exits, rather + than overwriting the file. + + 'histreedit' + If set, and Readline is being used, a user is given the + opportunity to re-edit a failed history substitution. + + 'histverify' + If set, and Readline is being used, the results of history + substitution are not immediately passed to the shell parser. + Instead, the resulting line is loaded into the Readline + editing buffer, allowing further modification. + + 'hostcomplete' + If set, and Readline is being used, Bash will attempt to + perform hostname completion when a word containing a '@' is + being completed (*note Commands For Completion::). This + option is enabled by default. + + 'huponexit' + If set, Bash will send 'SIGHUP' to all jobs when an + interactive login shell exits (*note Signals::). + + 'inherit_errexit' + If set, command substitution inherits the value of the + 'errexit' option, instead of unsetting it in the subshell + environment. This option is enabled when POSIX mode is + enabled. + + 'interactive_comments' + Allow a word beginning with '#' to cause that word and all + remaining characters on that line to be ignored in an + interactive shell. This option is enabled by default. + + 'lastpipe' + If set, and job control is not active, the shell runs the last + command of a pipeline not executed in the background in the + current shell environment. + + 'lithist' + If enabled, and the 'cmdhist' option is enabled, multi-line + commands are saved to the history with embedded newlines + rather than using semicolon separators where possible. + + 'localvar_inherit' + If set, local variables inherit the value and attributes of a + variable of the same name that exists at a previous scope + before any new value is assigned. The NAMEREF attribute is + not inherited. + + 'localvar_unset' + If set, calling 'unset' on local variables in previous + function scopes marks them so subsequent lookups find them + unset until that function returns. This is identical to the + behavior of unsetting local variables at the current function + scope. + + 'login_shell' + The shell sets this option if it is started as a login shell + (*note Invoking Bash::). The value may not be changed. + + 'mailwarn' + If set, and a file that Bash is checking for mail has been + accessed since the last time it was checked, the message '"The + mail in MAILFILE has been read"' is displayed. + + 'no_empty_cmd_completion' + If set, and Readline is being used, Bash will not attempt to + search the 'PATH' for possible completions when completion is + attempted on an empty line. + + 'nocaseglob' + If set, Bash matches filenames in a case-insensitive fashion + when performing filename expansion. + + 'nocasematch' + If set, Bash matches patterns in a case-insensitive fashion + when performing matching while executing 'case' or '[[' + conditional commands, when performing pattern substitution + word expansions, or when filtering possible completions as + part of programmable completion. + + 'nullglob' + If set, Bash allows filename patterns which match no files to + expand to a null string, rather than themselves. + + 'progcomp' + If set, the programmable completion facilities (*note + Programmable Completion::) are enabled. This option is + enabled by default. + + 'progcomp_alias' + If set, and programmable completion is enabled, Bash treats a + command name that doesn't have any completions as a possible + alias and attempts alias expansion. If it has an alias, Bash + attempts programmable completion using the command word + resulting from the expanded alias. + + 'promptvars' + If set, prompt strings undergo parameter expansion, command + substitution, arithmetic expansion, and quote removal after + being expanded as described below (*note Controlling the + Prompt::). This option is enabled by default. + + 'restricted_shell' + The shell sets this option if it is started in restricted mode + (*note The Restricted Shell::). The value may not be changed. + This is not reset when the startup files are executed, + allowing the startup files to discover whether or not a shell + is restricted. + + 'shift_verbose' + If this is set, the 'shift' builtin prints an error message + when the shift count exceeds the number of positional + parameters. + + 'sourcepath' + If set, the 'source' builtin uses the value of 'PATH' to find + the directory containing the file supplied as an argument. + This option is enabled by default. + + 'xpg_echo' + If set, the 'echo' builtin expands backslash-escape sequences + by default. + + +File: bash.info, Node: Special Builtins, Prev: Modifying Shell Behavior, Up: Shell Builtin Commands + +4.4 Special Builtins +==================== + +For historical reasons, the POSIX standard has classified several +builtin commands as _special_. When Bash is executing in POSIX mode, +the special builtins differ from other builtin commands in three +respects: + + 1. Special builtins are found before shell functions during command + lookup. + + 2. If a special builtin returns an error status, a non-interactive + shell exits. + + 3. Assignment statements preceding the command stay in effect in the + shell environment after the command completes. + + When Bash is not executing in POSIX mode, these builtins behave no +differently than the rest of the Bash builtin commands. The Bash POSIX +mode is described in *note Bash POSIX Mode::. + + These are the POSIX special builtins: + break : . continue eval exec exit export readonly return set + shift trap unset + + +File: bash.info, Node: Shell Variables, Next: Bash Features, Prev: Shell Builtin Commands, Up: Top + +5 Shell Variables +***************** + +* Menu: + +* Bourne Shell Variables:: Variables which Bash uses in the same way + as the Bourne Shell. +* Bash Variables:: List of variables that exist in Bash. + +This chapter describes the shell variables that Bash uses. Bash +automatically assigns default values to a number of variables. + + +File: bash.info, Node: Bourne Shell Variables, Next: Bash Variables, Up: Shell Variables + +5.1 Bourne Shell Variables +========================== + +Bash uses certain shell variables in the same way as the Bourne shell. +In some cases, Bash assigns a default value to the variable. + +'CDPATH' + A colon-separated list of directories used as a search path for the + 'cd' builtin command. + +'HOME' + The current user's home directory; the default for the 'cd' builtin + command. The value of this variable is also used by tilde + expansion (*note Tilde Expansion::). + +'IFS' + A list of characters that separate fields; used when the shell + splits words as part of expansion. + +'MAIL' + If this parameter is set to a filename or directory name and the + 'MAILPATH' variable is not set, Bash informs the user of the + arrival of mail in the specified file or Maildir-format directory. + +'MAILPATH' + A colon-separated list of filenames which the shell periodically + checks for new mail. Each list entry can specify the message that + is printed when new mail arrives in the mail file by separating the + filename from the message with a '?'. When used in the text of the + message, '$_' expands to the name of the current mail file. + +'OPTARG' + The value of the last option argument processed by the 'getopts' + builtin. + +'OPTIND' + The index of the last option argument processed by the 'getopts' + builtin. + +'PATH' + A colon-separated list of directories in which the shell looks for + commands. 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. + +'PS1' + The primary prompt string. The default value is '\s-\v\$ '. *Note + Controlling the Prompt::, for the complete list of escape sequences + that are expanded before 'PS1' is displayed. + +'PS2' + The secondary prompt string. The default value is '> '. 'PS2' is + expanded in the same way as 'PS1' before being displayed. + + +File: bash.info, Node: Bash Variables, Prev: Bourne Shell Variables, Up: Shell Variables + +5.2 Bash Variables +================== + +These variables are set or used by Bash, but other shells do not +normally treat them specially. + + A few variables used by Bash are described in different chapters: +variables for controlling the job control facilities (*note Job Control +Variables::). + +'_' + ($_, an underscore.) At shell startup, set to the 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 simple command executed in the foreground, + 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. + +'BASH' + The full pathname used to execute the current instance of Bash. + +'BASHOPTS' + A colon-separated list of enabled shell options. Each word in the + list is a valid argument for the '-s' option to the 'shopt' builtin + command (*note The Shopt Builtin::). The options appearing in + 'BASHOPTS' are those reported as 'on' by 'shopt'. 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 readonly. + +'BASHPID' + Expands to the process ID of the current Bash process. This + differs from '$$' under certain circumstances, such as subshells + that do not require Bash to be re-initialized. Assignments to + 'BASHPID' have no effect. If 'BASHPID' is unset, it loses its + special properties, even if it is subsequently reset. + +'BASH_ALIASES' + An associative array variable whose members correspond to the + internal list of aliases as maintained by the 'alias' builtin. + (*note Bourne Shell Builtins::). Elements added to this array + appear in the alias list; however, unsetting array elements + currently does not cause aliases to be removed from the alias list. + If 'BASH_ALIASES' is unset, it loses its special properties, even + if it is subsequently reset. + +'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 *note The Shopt Builtin:: for a description of + the 'extdebug' option to the 'shopt' builtin). Setting 'extdebug' + after the shell has started to execute a script, or referencing + this variable when 'extdebug' is not set, may result in + inconsistent values. + +'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 *note + The Shopt Builtin:: for a description of the 'extdebug' option to + the 'shopt' builtin). Setting 'extdebug' after the shell has + started to execute a script, or referencing this variable when + 'extdebug' is not set, may result in inconsistent values. + +'BASH_ARGV0' + When referenced, this variable expands to the name of the shell or + shell script (identical to '$0'; *Note Special Parameters::, for + the description of special parameter 0). Assignment to + 'BASH_ARGV0' causes the value assigned to also be assigned to '$0'. + If 'BASH_ARGV0' is unset, it loses its special properties, even if + it is subsequently reset. + +'BASH_CMDS' + An associative array variable whose members correspond to the + internal hash table of commands as maintained by the 'hash' builtin + (*note Bourne Shell Builtins::). Elements added to this array + appear in the hash table; however, unsetting array elements + currently does not cause command names to be removed from the hash + table. If 'BASH_CMDS' is unset, it loses its special properties, + even if it is subsequently reset. + +'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. If + 'BASH_COMMAND' is unset, it loses its special properties, even if + it is subsequently reset. + +'BASH_COMPAT' + The value is used to set the shell's compatibility level. *Note + Shell Compatibility Mode::, for a description of the various + compatibility levels and their effects. The value may be a decimal + number (e.g., 4.2) or an integer (e.g., 42) corresponding to the + desired compatibility level. If 'BASH_COMPAT' is unset or set to + the empty string, the compatibility level is set to the default for + the current version. If 'BASH_COMPAT' is set to a value that is + not one of the valid compatibility levels, the shell prints an + error message and sets the compatibility level to the default for + the current version. The valid values correspond to the + compatibility levels described below (*note Shell Compatibility + Mode::). For example, 4.2 and 42 are valid values that correspond + to the 'compat42' 'shopt' option and set the compatibility level to + 42. The current version is also a valid value. + +'BASH_ENV' + If this variable is set when Bash is invoked to execute a shell + script, its value is expanded and used as the name of a startup + file to read before executing the script. *Note Bash Startup + Files::. + +'BASH_EXECUTION_STRING' + The command argument to the '-c' invocation option. + +'BASH_LINENO' + An array variable whose members are the line numbers in source + files where each corresponding member of FUNCNAME was invoked. + '${BASH_LINENO[$i]}' is the line number in the source file + ('${BASH_SOURCE[$i+1]}') where '${FUNCNAME[$i]}' was called (or + '${BASH_LINENO[$i-1]}' if referenced within another shell + function). Use 'LINENO' to obtain the current line number. + +'BASH_LOADABLES_PATH' + A colon-separated list of directories in which the shell looks for + dynamically loadable builtins specified by the 'enable' command. + +'BASH_REMATCH' + An array variable whose members are assigned by the '=~' binary + operator to the '[[' conditional command (*note Conditional + Constructs::). 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. + +'BASH_SOURCE' + An array variable whose members are the source filenames where the + corresponding shell function names in the 'FUNCNAME' array variable + are defined. The shell function '${FUNCNAME[$i]}' is defined in + the file '${BASH_SOURCE[$i]}' and called from + '${BASH_SOURCE[$i+1]}' + +'BASH_SUBSHELL' + Incremented by one within each subshell or subshell environment + when the shell begins executing in that environment. The initial + value is 0. If 'BASH_SUBSHELL' is unset, it loses its special + properties, even if it is subsequently reset. + +'BASH_VERSINFO' + A readonly array variable (*note Arrays::) 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' + The version number of the current instance of Bash. + +'BASH_XTRACEFD' + If set to an integer corresponding to a valid file descriptor, Bash + will write the trace output generated when 'set -x' is enabled to + that file descriptor. This allows tracing output to be separated + from diagnostic and error messages. The file descriptor is closed + when 'BASH_XTRACEFD' is unset or assigned a new value. Unsetting + 'BASH_XTRACEFD' or assigning it the empty string causes the trace + output to be sent to the standard error. Note that setting + 'BASH_XTRACEFD' to 2 (the standard error file descriptor) and then + unsetting it will result in the standard error being closed. + +'CHILD_MAX' + Set the number of exited child status values for the shell to + remember. Bash will not allow this value to be decreased below a + POSIX-mandated minimum, and there is a maximum value (currently + 8192) that this may not exceed. The minimum value is + system-dependent. + +'COLUMNS' + Used by the 'select' command to determine the terminal width when + printing selection lists. Automatically set if the 'checkwinsize' + option is enabled (*note The Shopt Builtin::), or in an interactive + shell upon receipt of a 'SIGWINCH'. + +'COMP_CWORD' + An index into '${COMP_WORDS}' of the word containing the current + cursor position. This variable is available only in shell + functions invoked by the programmable completion facilities (*note + Programmable Completion::). + +'COMP_LINE' + The current command line. This variable is available only in shell + functions and external commands invoked by the programmable + completion facilities (*note Programmable Completion::). + +'COMP_POINT' + The index of the current cursor position relative to the beginning + of the current command. If the current cursor position is at the + end of the current command, the value of this variable is equal to + '${#COMP_LINE}'. This variable is available only in shell + functions and external commands invoked by the programmable + completion facilities (*note Programmable Completion::). + +'COMP_TYPE' + Set to an integer value corresponding to the type of completion + attempted that caused a completion function to be called: TAB, for + normal completion, '?', for listing completions after successive + tabs, '!', for listing alternatives on partial word completion, + '@', to list completions if the word is not unmodified, or '%', for + menu completion. This variable is available only in shell + functions and external commands invoked by the programmable + completion facilities (*note Programmable Completion::). + +'COMP_KEY' + The key (or final key of a key sequence) used to invoke the current + completion function. + +'COMP_WORDBREAKS' + The set of characters that the Readline library treats as word + separators when performing word completion. If 'COMP_WORDBREAKS' + is unset, it loses its special properties, even if it is + subsequently reset. + +'COMP_WORDS' + An array variable consisting of the individual words in the current + command line. The line is split into words as Readline would split + it, using 'COMP_WORDBREAKS' as described above. This variable is + available only in shell functions invoked by the programmable + completion facilities (*note Programmable Completion::). + +'COMPREPLY' + An array variable from which Bash reads the possible completions + generated by a shell function invoked by the programmable + completion facility (*note Programmable Completion::). Each array + element contains one possible completion. + +'COPROC' + An array variable created to hold the file descriptors for output + from and input to an unnamed coprocess (*note Coprocesses::). + +'DIRSTACK' + An array variable containing the current contents of the directory + stack. Directories appear in the stack in the order they are + displayed by the 'dirs' builtin. 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. + +'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. + +'ENV' + Expanded and executed similarlty to 'BASH_ENV' (*note Bash Startup + Files::) when an interactive shell is invoked in POSIX Mode (*note + Bash POSIX Mode::). + +'EPOCHREALTIME' + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch as a floating point value with + micro-second granularity (see the documentation for the C library + function TIME for the definition of Epoch). Assignments to + 'EPOCHREALTIME' are ignored. If 'EPOCHREALTIME' is unset, it loses + its special properties, even if it is subsequently reset. + +'EPOCHSECONDS' + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch (see the documentation for the C + library function TIME for the definition of Epoch). Assignments to + 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it loses + its special properties, even if it is subsequently reset. + +'EUID' + The numeric effective user id of the current user. This variable + is readonly. + +'EXECIGNORE' + A colon-separated list of shell patterns (*note Pattern Matching::) + defining the list of filenames to be ignored by command search + using 'PATH'. Files whose full pathnames match one of these + patterns are not considered executable files for the purposes of + completion and command execution via 'PATH' lookup. This does not + affect the behavior of the '[', 'test', and '[[' commands. Full + pathnames in the command hash table are not subject to + 'EXECIGNORE'. Use this variable to ignore shared library files + that have the executable bit set, but are not executable files. + The pattern matching honors the setting of the 'extglob' shell + option. + +'FCEDIT' + The editor used as a default by the '-e' option to the 'fc' builtin + command. + +'FIGNORE' + A colon-separated list of suffixes to ignore when performing + filename completion. A filename whose suffix matches one of the + entries in 'FIGNORE' is excluded from the list of matched + filenames. A sample value is '.o:~' + +'FUNCNAME' + An array variable containing the names of all shell functions + currently in the execution call stack. The element with index 0 is + the name of any currently-executing shell function. The + bottom-most element (the one with the highest index) is '"main"'. + This variable exists only when a shell function is executing. + Assignments to 'FUNCNAME' have no effect. If 'FUNCNAME' is unset, + it loses its special properties, even if it is subsequently reset. + + This variable can be used with 'BASH_LINENO' and 'BASH_SOURCE'. + Each element of 'FUNCNAME' has corresponding elements in + 'BASH_LINENO' and 'BASH_SOURCE' to describe the call stack. For + instance, '${FUNCNAME[$i]}' was called from the file + '${BASH_SOURCE[$i+1]}' at line number '${BASH_LINENO[$i]}'. The + 'caller' builtin displays the current call stack using this + information. + +'FUNCNEST' + If set to a numeric value greater than 0, defines a maximum + function nesting level. Function invocations that exceed this + nesting level will cause the current command to abort. + +'GLOBIGNORE' + A colon-separated list of patterns defining the set of file names + to be ignored by filename expansion. If a file name matched by a + filename expansion pattern also matches one of the patterns in + 'GLOBIGNORE', it is removed from the list of matches. The pattern + matching honors the setting of the 'extglob' shell option. + +'GROUPS' + An array variable containing the list of groups of which the + current user is a member. Assignments to 'GROUPS' have no effect. + If 'GROUPS' is unset, it loses its special properties, even if it + is subsequently reset. + +'histchars' + Up to three characters which control history expansion, quick + substitution, and tokenization (*note History Interaction::). The + first character is the HISTORY EXPANSION character, that is, the + character which signifies the start of a history expansion, + normally '!'. The second character is the character which + signifies 'quick substitution' when seen as the first character on + a line, normally '^'. 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, usually '#'. + 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. + +'HISTCMD' + The history number, or index in the history list, of the current + command. Assignments to 'HISTCMD' are ignored. If 'HISTCMD' is + unset, it loses its special properties, even if it is subsequently + reset. + +'HISTCONTROL' + A colon-separated list of values controlling how commands are saved + on the history list. If the list of values includes 'ignorespace', + lines which begin with a space character are not saved in the + history list. A value of 'ignoredups' causes lines which match 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 to which the command history is saved. The + default value is '~/.bash_history'. + +'HISTFILESIZE' + The maximum number of lines contained in the history file. When + this variable is assigned a value, the history file is truncated, + if necessary, to contain no more than that number of lines by + removing the oldest entries. The history file is also truncated to + this size after writing it when a shell exits. If the value is 0, + the history file is truncated to zero size. Non-numeric values and + numeric values less than zero inhibit truncation. The shell sets + the default value to the value of 'HISTSIZE' after reading any + startup files. + +'HISTIGNORE' + 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'. The pattern matching honors the setting of the + 'extglob' shell option. + + 'HISTIGNORE' subsumes the function of 'HISTCONTROL'. A pattern of + '&' is identical to 'ignoredups', and a pattern of '[ ]*' is + identical to 'ignorespace'. Combining these two patterns, + separating them with a colon, provides the functionality of + 'ignoreboth'. + +'HISTSIZE' + The maximum number of commands to remember on the history list. If + the value is 0, commands are not saved in the history list. + Numeric values less than zero result in every command being saved + on the history list (there is no limit). The shell sets the + default value to 500 after reading any startup files. + +'HISTTIMEFORMAT' + If this variable is set and not null, its value is used as a format + string for STRFTIME to print the time stamp associated with each + history entry displayed by the 'history' builtin. If this variable + is set, time stamps are written to the history file so they may be + preserved across shell sessions. This uses the history comment + character to distinguish timestamps from other history lines. + +'HOSTFILE' + Contains the name of a file in the same format as '/etc/hosts' that + should be read when the shell needs to complete a hostname. The + list of possible hostname completions may be changed while the + shell 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, or + does not name a readable file, Bash attempts to read '/etc/hosts' + to obtain the list of possible hostname completions. When + 'HOSTFILE' is unset, the hostname list is cleared. + +'HOSTNAME' + The name of the current host. + +'HOSTTYPE' + A string describing the machine Bash is running on. + +'IGNOREEOF' + Controls the action of the shell on receipt of an 'EOF' character + as the sole input. If set, the value denotes the number of + consecutive 'EOF' characters that can be read as the first + character on an input line before the shell will exit. If the + variable exists but does not have a numeric value, or has no value, + then the default is 10. If the variable does not exist, then 'EOF' + signifies the end of input to the shell. This is only in effect + for interactive shells. + +'INPUTRC' + The name of the Readline initialization file, overriding the + default of '~/.inputrc'. + +'INSIDE_EMACS' + If Bash finds this variable in the environment when the shell + starts, it assumes that the shell is running in an Emacs shell + buffer and may disable line editing depending on the value of + 'TERM'. + +'LANG' + Used to determine the locale category for any category not + specifically selected with a variable starting with 'LC_'. + +'LC_ALL' + This variable overrides the value of 'LANG' and any other 'LC_' + variable specifying a locale category. + +'LC_COLLATE' + This variable determines the collation order used when sorting the + results of filename expansion, and determines the behavior of range + expressions, equivalence classes, and collating sequences within + filename expansion and pattern matching (*note Filename + Expansion::). + +'LC_CTYPE' + This variable determines the interpretation of characters and the + behavior of character classes within filename expansion and pattern + matching (*note Filename Expansion::). + +'LC_MESSAGES' + This variable determines the locale used to translate double-quoted + strings preceded by a '$' (*note Locale Translation::). + +'LC_NUMERIC' + This variable determines the locale category used for number + formatting. + +'LC_TIME' + This variable determines the locale category used for data and time + formatting. + +'LINENO' + The line number in the script or shell function currently + executing. If 'LINENO' is unset, it loses its special properties, + even if it is subsequently reset. + +'LINES' + Used by the 'select' command to determine the column length for + printing selection lists. Automatically set if the 'checkwinsize' + option is enabled (*note The Shopt Builtin::), or in an interactive + shell upon receipt of a 'SIGWINCH'. + +'MACHTYPE' + A string that fully describes the system type on which Bash is + executing, in the standard GNU CPU-COMPANY-SYSTEM format. + +'MAILCHECK' + How often (in seconds) that the shell should check for mail in the + files specified in the 'MAILPATH' or 'MAIL' variables. The default + is 60 seconds. When it is time to check 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. + +'MAPFILE' + An array variable created to hold the text read by the 'mapfile' + builtin when no variable name is supplied. + +'OLDPWD' + The previous working directory as set by the 'cd' builtin. + +'OPTERR' + If set to the value 1, Bash displays error messages generated by + the 'getopts' builtin command. + +'OSTYPE' + A string describing the operating system Bash is running on. + +'PIPESTATUS' + An array variable (*note Arrays::) containing a list of exit status + values from the processes in the most-recently-executed foreground + pipeline (which may contain only a single command). + +'POSIXLY_CORRECT' + If this variable is in the environment when Bash starts, the shell + enters POSIX mode (*note Bash POSIX Mode::) before reading the + startup files, as if the '--posix' invocation option had been + supplied. If it is set while the shell is running, Bash enables + POSIX mode, as if the command + set -o posix + had been executed. When the shell enters POSIX mode, it sets this + variable if it was not already set. + +'PPID' + The process ID of the shell's parent process. This variable is + readonly. + +'PROMPT_COMMAND' + If this variable is set, and is an array, the value of each set + element is interpreted as a command to execute before printing the + primary prompt ('$PS1'). If this is set but not an array variable, + its value is used as a command to execute instead. + +'PROMPT_DIRTRIM' + If set to a number greater than zero, the value is used as the + number of trailing directory components to retain when expanding + the '\w' and '\W' prompt string escapes (*note Controlling the + Prompt::). Characters removed are replaced with an ellipsis. + +'PS0' + The value of this parameter is expanded like 'PS1' and displayed by + interactive shells after reading a command and before the command + is executed. + +'PS3' + The value of this variable is used as the prompt for the 'select' + command. If this variable is not set, the 'select' command prompts + with '#? ' + +'PS4' + The value of this parameter is expanded like PS1 and the expanded + value is the prompt printed before the command line is echoed when + the '-x' option is set (*note The Set Builtin::). The first + character of the expanded value is replicated multiple times, as + necessary, to indicate multiple levels of indirection. The default + is '+ '. + +'PWD' + The current working directory as set by the 'cd' builtin. + +'RANDOM' + Each time this parameter is referenced, it expands to a random + integer between 0 and 32767. Assigning a value to this variable + seeds the random number generator. If 'RANDOM' is unset, it loses + its special properties, even if it is subsequently reset. + +'READLINE_LINE' + The contents of the Readline line buffer, for use with 'bind -x' + (*note Bash Builtins::). + +'READLINE_MARK' + The position of the MARK (saved insertion point) in the Readline + line buffer, for use with 'bind -x' (*note Bash Builtins::). The + characters between the insertion point and the mark are often + called the REGION. + +'READLINE_POINT' + The position of the insertion point in the Readline line buffer, + for use with 'bind -x' (*note Bash Builtins::). + +'REPLY' + The default variable for the 'read' builtin. + +'SECONDS' + This variable expands to the number of seconds since the shell was + started. Assignment to this variable resets the count to the value + assigned, and the expanded value becomes the value assigned plus + the number of seconds since the assignment. The number of seconds + at shell invocation and the current time is always determined by + querying the system clock. If 'SECONDS' is unset, it loses its + special properties, even if it is subsequently reset. + +'SHELL' + This environment variable expands to the full pathname to the + shell. If it is not set when the shell starts, Bash assigns to it + the full pathname of the current user's login shell. + +'SHELLOPTS' + A colon-separated list of enabled shell options. Each word in the + list is a valid argument for the '-o' option to the 'set' builtin + command (*note The Set Builtin::). The options appearing in + 'SHELLOPTS' are those reported as 'on' by 'set -o'. If this + variable is in the environment when Bash starts up, each shell + option in the list will be enabled before reading any startup + files. This variable is readonly. + +'SHLVL' + Incremented by one each time a new instance of Bash is started. + This is intended to be a count of how deeply your Bash shells are + nested. + +'SRANDOM' + This variable expands to a 32-bit pseudo-random number each time it + is referenced. The random number generator is not linear on + systems that support '/dev/urandom' or 'arc4random', so each + returned number has no relationship to the numbers preceding it. + The random number generator cannot be seeded, so assignments to + this variable have no effect. If 'SRANDOM' is unset, it loses its + special properties, even if it is subsequently reset. + +'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 + $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' + 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 (*note Bash Builtins::). + The 'select' command (*note Conditional Constructs::) 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 a line of input after issuing the primary + prompt. Bash terminates after waiting for that number of seconds + if a complete line of input does not arrive. + +'TMPDIR' + If set, Bash uses its value as the name of a directory in which + Bash creates temporary files for the shell's use. + +'UID' + The numeric real user id of the current user. This variable is + readonly. + + +File: bash.info, Node: Bash Features, Next: Job Control, Prev: Shell Variables, Up: Top + +6 Bash Features +*************** + +This chapter describes features unique to Bash. + +* Menu: + +* Invoking Bash:: Command line options that you can give + to Bash. +* Bash Startup Files:: When and how Bash executes scripts. +* Interactive Shells:: What an interactive shell is. +* Bash Conditional Expressions:: Primitives used in composing expressions for + the 'test' builtin. +* Shell Arithmetic:: Arithmetic on shell variables. +* Aliases:: Substituting one command for another. +* Arrays:: Array Variables. +* The Directory Stack:: History of visited directories. +* Controlling the Prompt:: Customizing the various prompt strings. +* The Restricted Shell:: A more controlled mode of shell execution. +* Bash POSIX Mode:: Making Bash behave more closely to what + the POSIX standard specifies. +* Shell Compatibility Mode:: How Bash supports behavior that was present + in earlier versions and has changed. + + +File: bash.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash Features + +6.1 Invoking Bash +================= + + bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] [ARGUMENT ...] + bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] -c STRING [ARGUMENT ...] + bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] [ARGUMENT ...] + + All of the single-character options used with the 'set' builtin +(*note The Set Builtin::) can be used as options when the shell is +invoked. In addition, there are several multi-character options that +you can use. These options must appear on the command line before the +single-character options to be recognized. + +'--debugger' + Arrange for the debugger profile to be executed before the shell + starts. Turns on extended debugging mode (see *note The Shopt + Builtin:: for a description of the 'extdebug' option to the 'shopt' + builtin). + +'--dump-po-strings' + A list of all double-quoted strings preceded by '$' is printed on + the standard output in the GNU 'gettext' PO (portable object) file + format. Equivalent to '-D' except for the output format. + +'--dump-strings' + Equivalent to '-D'. + +'--help' + Display a usage message on standard output and exit successfully. + +'--init-file FILENAME' +'--rcfile FILENAME' + Execute commands from FILENAME (instead of '~/.bashrc') in an + interactive shell. + +'--login' + Equivalent to '-l'. + +'--noediting' + Do not use the GNU Readline library (*note Command Line Editing::) + to read command lines when the shell is interactive. + +'--noprofile' + Don't load the system-wide startup file '/etc/profile' or any of + the personal initialization files '~/.bash_profile', + '~/.bash_login', or '~/.profile' when Bash is invoked as a login + shell. + +'--norc' + Don't read the '~/.bashrc' initialization file in an interactive + shell. This 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. This is intended to + make Bash behave as a strict superset of that standard. *Note Bash + POSIX Mode::, for a description of the Bash POSIX mode. + +'--restricted' + Make the shell a restricted shell (*note The Restricted Shell::). + +'--verbose' + Equivalent to '-v'. Print shell input lines as they're read. + +'--version' + Show version information for this instance of Bash on the standard + output and exit successfully. + + There are several single-character options that may be supplied at +invocation which are not available with the 'set' builtin. + +'-c' + Read and execute commands from the first non-option argument + COMMAND_STRING, then exit. If there are arguments after the + COMMAND_STRING, the first argument is assigned to '$0' and any + remaining arguments are assigned to the positional parameters. The + assignment to '$0' sets the name of the shell, which is used in + warning and error messages. + +'-i' + Force the shell to run interactively. Interactive shells are + described in *note Interactive Shells::. + +'-l' + Make this shell act as if it had been directly invoked by login. + When the shell is interactive, this is equivalent to starting a + login shell with 'exec -l bash'. When the shell is not + interactive, the login shell startup files will be executed. 'exec + bash -l' or 'exec bash --login' will replace the current shell with + a Bash login shell. *Note Bash Startup Files::, for a description + of the special behavior of a login shell. + +'-r' + Make the shell a restricted shell (*note The Restricted Shell::). + +'-s' + If this 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 or when reading input through a pipe. + +'-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' + (*note Locale Translation::). 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 (*note The Shopt Builtin::). 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. + + A _login_ shell is one whose first character of argument zero is '-', +or one invoked with the '--login' option. + + An _interactive_ shell is one started without non-option arguments, +unless '-s' is specified, without specifying the '-c' option, and whose +input and output are both connected to terminals (as determined by +'isatty(3)'), or one started with the '-i' option. *Note Interactive +Shells::, for more information. + + 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 (*note Shell Scripts::). +When 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. + + +File: bash.info, Node: Bash Startup Files, Next: Interactive Shells, Prev: Invoking Bash, Up: Bash Features + +6.2 Bash Startup Files +====================== + +This section describes how Bash executes its startup files. If any of +the files exist but cannot be read, Bash reports an error. Tildes are +expanded in filenames as described above under Tilde Expansion (*note +Tilde Expansion::). + + Interactive shells are described in *note Interactive Shells::. + +Invoked as an interactive login shell, or with '--login' +........................................................ + +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 an interactive login shell exits, or a non-interactive login +shell executes the 'exit' builtin command, Bash reads and executes +commands from the file '~/.bash_logout', if it exists. + +Invoked as an interactive non-login shell +......................................... + +When an interactive shell that is not a login shell is started, Bash +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'. + + So, typically, your '~/.bash_profile' contains the line + if [ -f ~/.bashrc ]; then . ~/.bashrc; fi +after (or before) any login-specific initializations. + +Invoked non-interactively +......................... + +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 +filename. + + As noted above, if a non-interactive shell is invoked with the +'--login' option, Bash attempts to read and execute commands from the +login shell startup files. + +Invoked with name 'sh' +...................... + +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 as 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. + +Invoked in POSIX mode +..................... + +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. + +Invoked by remote shell daemon +.............................. + +Bash attempts to determine when it is being run with its standard input +connected to a network connection, as when executed by the remote shell +daemon, usually 'rshd', or the secure shell daemon 'sshd'. If Bash +determines it is being run in this fashion, 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 neither 'rshd' nor 'sshd' generally invoke +the shell with those options or allow them to be specified. + +Invoked with unequal effective and real UID/GIDs +................................................ + +If Bash is started with the effective user (group) id not equal to the +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', 'BASHOPTS', 'CDPATH', and 'GLOBIGNORE' variables, if +they appear in the environment, are 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. + + +File: bash.info, Node: Interactive Shells, Next: Bash Conditional Expressions, Prev: Bash Startup Files, Up: Bash Features + +6.3 Interactive Shells +====================== + +* Menu: + +* What is an Interactive Shell?:: What determines whether a shell is Interactive. +* Is this Shell Interactive?:: How to tell if a shell is interactive. +* Interactive Shell Behavior:: What changes in a interactive shell? + + +File: bash.info, Node: What is an Interactive Shell?, Next: Is this Shell Interactive?, Up: Interactive Shells + +6.3.1 What is an Interactive Shell? +----------------------------------- + +An interactive shell is one started without non-option arguments, unless +'-s' is specified, without specifying the '-c' option, and whose input +and error output are both connected to terminals (as determined by +'isatty(3)'), or one started with the '-i' option. + + An interactive shell generally reads from and writes to a user's +terminal. + + The '-s' invocation option may be used to set the positional +parameters when an interactive shell is started. + + +File: bash.info, Node: Is this Shell Interactive?, Next: Interactive Shell Behavior, Prev: What is an Interactive Shell?, Up: Interactive Shells + +6.3.2 Is this Shell Interactive? +-------------------------------- + +To determine within a startup script whether or not Bash is running +interactively, test the value of the '-' special parameter. It contains +'i' when the shell is interactive. For example: + + case "$-" in + *i*) echo This shell is interactive ;; + *) echo This shell is not interactive ;; + esac + + Alternatively, startup scripts may examine the variable 'PS1'; it is +unset in non-interactive shells, and set in interactive shells. Thus: + + if [ -z "$PS1" ]; then + echo This shell is not interactive + else + echo This shell is interactive + fi + + +File: bash.info, Node: Interactive Shell Behavior, Prev: Is this Shell Interactive?, Up: Interactive Shells + +6.3.3 Interactive Shell Behavior +-------------------------------- + +When the shell is running interactively, it changes its behavior in +several ways. + + 1. Startup files are read and executed as described in *note Bash + Startup Files::. + + 2. Job Control (*note Job Control::) is enabled by default. When job + control is in effect, Bash ignores the keyboard-generated job + control signals 'SIGTTIN', 'SIGTTOU', and 'SIGTSTP'. + + 3. Bash expands and displays 'PS1' before reading the first line of a + command, and expands and displays 'PS2' before reading the second + and subsequent lines of a multi-line command. Bash expands and + displays 'PS0' after it reads a command but before executing it. + See *note Controlling the Prompt::, for a complete list of prompt + string escape sequences. + + 4. Bash executes the values of the set elements of the + 'PROMPT_COMMANDS' array variable as commands before printing the + primary prompt, '$PS1' (*note Bash Variables::). + + 5. Readline (*note Command Line Editing::) is used to read commands + from the user's terminal. + + 6. Bash inspects the value of the 'ignoreeof' option to 'set -o' + instead of exiting immediately when it receives an 'EOF' on its + standard input when reading a command (*note The Set Builtin::). + + 7. Command history (*note Bash History Facilities::) and history + expansion (*note History Interaction::) are enabled by default. + Bash will save the command history to the file named by '$HISTFILE' + when a shell with history enabled exits. + + 8. Alias expansion (*note Aliases::) is performed by default. + + 9. In the absence of any traps, Bash ignores 'SIGTERM' (*note + Signals::). + + 10. In the absence of any traps, 'SIGINT' is caught and handled (*note + Signals::). 'SIGINT' will interrupt some shell builtins. + + 11. An interactive login shell sends a 'SIGHUP' to all jobs on exit if + the 'huponexit' shell option has been enabled (*note Signals::). + + 12. The '-n' invocation option is ignored, and 'set -n' has no effect + (*note The Set Builtin::). + + 13. Bash will check for mail periodically, depending on the values of + the 'MAIL', 'MAILPATH', and 'MAILCHECK' shell variables (*note Bash + Variables::). + + 14. Expansion errors due to references to unbound shell variables + after 'set -u' has been enabled will not cause the shell to exit + (*note The Set Builtin::). + + 15. The shell will not exit on expansion errors caused by VAR being + unset or null in '${VAR:?WORD}' expansions (*note Shell Parameter + Expansion::). + + 16. Redirection errors encountered by shell builtins will not cause + the shell to exit. + + 17. When running in POSIX mode, a special builtin returning an error + status will not cause the shell to exit (*note Bash POSIX Mode::). + + 18. A failed 'exec' will not cause the shell to exit (*note Bourne + Shell Builtins::). + + 19. Parser syntax errors will not cause the shell to exit. + + 20. Simple spelling correction for directory arguments to the 'cd' + builtin is enabled by default (see the description of the 'cdspell' + option to the 'shopt' builtin in *note The Shopt Builtin::). + + 21. The shell will check the value of the 'TMOUT' variable and exit if + a command is not read within the specified number of seconds after + printing '$PS1' (*note Bash Variables::). + + +File: bash.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic, Prev: Interactive Shells, Up: Bash Features + +6.4 Bash Conditional Expressions +================================ + +Conditional expressions are used by the '[[' compound command and the +'test' and '[' builtin commands. The 'test' and '[' commands determine +their behavior based on the number of arguments; see the descriptions of +those commands for any other command-specific actions. + + Expressions may be unary or binary, and are formed from the following +primaries. Unary expressions are often used to examine the status of a +file. There are string operators and numeric comparison operators as +well. Bash handles several filenames specially when they are used in +expressions. If the operating system on which Bash is running provides +these special files, Bash will use them; otherwise it will emulate them +internally with this behavior: If the 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. + + When used with '[[', the '<' and '>' operators sort lexicographically +using the current locale. The 'test' command uses ASCII ordering. + + 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 its set-group-id bit is set. + +'-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. + +'-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. + +'-N FILE' + True if FILE exists and has been modified since it was last read. + +'-O FILE' + True if FILE exists and is owned by the effective user id. + +'-S FILE' + True if FILE exists and is a socket. + +'FILE1 -ef FILE2' + True if FILE1 and FILE2 refer to the same device and inode numbers. + +'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. + +'-o OPTNAME' + True if the shell option OPTNAME is enabled. The list of options + appears in the description of the '-o' option to the 'set' builtin + (*note The Set Builtin::). + +'-v VARNAME' + True if the shell variable VARNAME is set (has been assigned a + value). + +'-R VARNAME' + True if the shell variable VARNAME is set and is a name reference. + +'-z STRING' + True if the length of STRING is zero. + +'-n STRING' +'STRING' + True if the length of STRING is non-zero. + +'STRING1 == STRING2' +'STRING1 = STRING2' + True if the strings are equal. When used with the '[[' command, + this performs pattern matching as described above (*note + Conditional Constructs::). + + '=' should be used with the 'test' command for POSIX conformance. + +'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. + +'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. When used with the '[[' command, + ARG1 and ARG2 are evaluated as arithmetic expressions (*note Shell + Arithmetic::). + + +File: bash.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Conditional Expressions, Up: Bash Features + +6.5 Shell Arithmetic +==================== + +The shell allows arithmetic expressions to be evaluated, as one of the +shell expansions or by using the '((' compound command, the 'let' +builtin, or the '-i' option to the 'declare' builtin. + + 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. + + Integer constants follow the C language definition, without suffixes +or character constants. 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 the optional BASE is a decimal +number between 2 and 64 representing the arithmetic base, and N is a +number in that base. If BASE'#' is omitted, then base 10 is used. When +specifying N, if a non-digit is required, 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. + + +File: bash.info, Node: Aliases, Next: Arrays, Prev: Shell Arithmetic, Up: Bash Features + +6.6 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. + + 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 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, as +in 'csh'. If arguments are needed, a shell function should be used +(*note Shell Functions::). + + Aliases are not expanded when the shell is not interactive, unless +the 'expand_aliases' shell option is set using 'shopt' (*note The Shopt +Builtin::). + + The rules concerning the definition and use of aliases are somewhat +confusing. Bash always reads at least one complete line of input, and +all lines that make up a compound command, before executing any of the +commands on that line or the compound command. 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 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, shell functions are preferred over aliases. + + +File: bash.info, Node: Arrays, Next: The Directory Stack, Prev: Aliases, Up: Bash Features + +6.7 Arrays +========== + +Bash provides one-dimensional indexed and associative array variables. +Any variable may be used as an indexed 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. Indexed arrays are referenced using integers (including +arithmetic expressions (*note Shell Arithmetic::)) and are zero-based; +associative arrays use arbitrary strings. Unless otherwise noted, +indexed array indices must be non-negative integers. + + An indexed array is created automatically if any variable is assigned +to using the syntax + NAME[SUBSCRIPT]=VALUE + +The SUBSCRIPT is treated as an arithmetic expression that must evaluate +to a number. To explicitly declare an array, use + declare -a NAME +The syntax + declare -a NAME[SUBSCRIPT] +is also accepted; the SUBSCRIPT is ignored. + +Associative arrays are created using + declare -A NAME + + 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 VALUE2 ... ) +where each VALUE may be of the form '[SUBSCRIPT]='STRING. Indexed array +assignments do not require anything but STRING. When assigning to +indexed arrays, if the optional subscript is 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. + + Each VALUE in the list undergoes all the shell expansions described +above (*note Shell Expansions::). + + When assigning to an associative array, the words in a compound +assignment may be either assignment statements, for which the subscript +is required, or a list of words that is interpreted as a sequence of +alternating keys and values: NAME=(KEY1 VALUE1 KEY2 VALUE2 ... ). These +are treated identically to NAME=( [KEY1]=VALUE1 [KEY2]=VALUE2 ... ). +The first word in the list determines how the remaining words are +interpreted; all assignments in a list must be of the same type. When +using key/value pairs, the keys may not be missing or empty; a final +missing value is treated like the empty string. + + This syntax is also accepted by the 'declare' builtin. Individual +array elements may be assigned to using the 'NAME[SUBSCRIPT]=VALUE' +syntax introduced above. + + When assigning to an indexed array, if NAME is subscripted by a +negative number, that number is interpreted as relative to one greater +than the maximum index of NAME, so negative indices count back from the +end of the array, and an index of -1 references the last element. + + Any element of an array may be referenced using '${NAME[SUBSCRIPT]}'. +The braces are required to avoid conflicts with the shell's filename +expansion operators. If the SUBSCRIPT is '@' or '*', the word expands +to all members of the array 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' 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 '*'. '${#NAME[SUBSCRIPT]}' expands to the length of +'${NAME[SUBSCRIPT]}'. If SUBSCRIPT is '@' or '*', the expansion is the +number of elements in the array. If the SUBSCRIPT used to reference an +element of an indexed array evaluates to a number less than zero, it is +interpreted as relative to one greater than the maximum index of the +array, so negative indices count back from the end of the array, and an +index of -1 refers to the last element. + + Referencing an array variable without a subscript is equivalent to +referencing with a subscript of 0. Any reference to a variable using a +valid subscript is legal, and 'bash' will create an array if necessary. + + An array variable is considered set if a subscript has been assigned +a value. The null string is a valid value. + + It is possible to obtain the keys (indices) of an array as well as +the values. ${!NAME[@]} and ${!NAME[*]} expand to the indices assigned +in array variable NAME. The treatment when in double quotes is similar +to the expansion of the special parameters '@' and '*' within double +quotes. + + The 'unset' builtin is used to destroy arrays. 'unset +NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT. +Negative subscripts to indexed arrays are interpreted as described +above. Unsetting the last element of an array variable does not unset +the variable. 'unset NAME', where NAME is an array, removes the entire +array. A subscript of '*' or '@' also removes the entire array. + + When using a variable name with a subscript as an argument to a +command, such as with 'unset', without using the word expansion syntax +described above, the argument is subject to the shell's filename +expansion. If filename expansion is not desired, the argument should be +quoted. + + The 'declare', 'local', and 'readonly' builtins each accept a '-a' +option to specify an indexed array and a '-A' option to specify an +associative array. If both options are supplied, '-A' takes precedence. +The 'read' builtin accepts a '-a' option to assign a list of words read +from the standard input to an array, and can read values from the +standard input into individual array elements. The 'set' and 'declare' +builtins display array values in a way that allows them to be reused as +input. + + +File: bash.info, Node: The Directory Stack, Next: Controlling the Prompt, Prev: Arrays, Up: Bash Features + +6.8 The Directory Stack +======================= + +* Menu: + +* Directory Stack Builtins:: Bash builtin commands to manipulate + the directory stack. + +The directory stack is a list of recently-visited directories. The +'pushd' builtin adds directories to the stack as it changes the current +directory, and the 'popd' builtin removes specified directories from the +stack and changes the current directory to the directory removed. The +'dirs' builtin displays the contents of the directory stack. The +current directory is always the "top" of the directory stack. + + The contents of the directory stack are also visible as the value of +the 'DIRSTACK' shell variable. + + +File: bash.info, Node: Directory Stack Builtins, Up: The Directory Stack + +6.8.1 Directory Stack Builtins +------------------------------ + +'dirs' + dirs [-clpv] [+N | -N] + + Display the list of currently remembered directories. Directories + are added to the list with the 'pushd' command; the 'popd' command + removes directories from the list. The current directory is always + the first directory in the stack. + + '-c' + Clears the directory stack by deleting all of the elements. + '-l' + Produces a listing using full pathnames; the default listing + format uses a tilde to denote the home directory. + '-p' + Causes 'dirs' to print the directory stack with one entry per + line. + '-v' + Causes 'dirs' to print the directory stack with one entry per + line, prefixing each entry with its index in the stack. + '+N' + Displays the Nth directory (counting from the left of the list + printed by 'dirs' when invoked without options), starting with + zero. + '-N' + Displays the Nth directory (counting from the right of the + list printed by 'dirs' when invoked without options), starting + with zero. + +'popd' + popd [-n] [+N | -N] + + When no arguments are given, 'popd' removes the top directory from + the stack and performs a 'cd' to the new top directory. The + elements are numbered from 0 starting at the first directory listed + with 'dirs'; that is, 'popd' is equivalent to 'popd +0'. + + '-n' + Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is + manipulated. + '+N' + Removes the Nth directory (counting from the left of the list + printed by 'dirs'), starting with zero. + '-N' + Removes the Nth directory (counting from the right of the list + printed by 'dirs'), starting with zero. + +'pushd' + pushd [-n] [+N | -N | DIR] + + Save the current directory on the top of the directory stack and + then 'cd' to DIR. With no arguments, 'pushd' exchanges the top two + directories and makes the new top the current directory. + + '-n' + Suppresses the normal change of directory when rotating or + adding directories to the stack, so that only the stack is + manipulated. + '+N' + Brings the Nth directory (counting from the left of the list + printed by 'dirs', starting with zero) to the top of the list + by rotating the stack. + '-N' + Brings the Nth directory (counting from the right of the list + printed by 'dirs', starting with zero) to the top of the list + by rotating the stack. + 'DIR' + Makes DIR be the top of the stack, making it the new current + directory as if it had been supplied as an argument to the + 'cd' builtin. + + +File: bash.info, Node: Controlling the Prompt, Next: The Restricted Shell, Prev: The Directory Stack, Up: Bash Features + +6.9 Controlling the Prompt +========================== + +Bash examines the value of the array variable 'PROMPT_COMMANDS' just +before printing each primary prompt. If any elements in +'PROMPT_COMMANDS' are set and non-null, Bash executes each value, in +numeric order, just as if it had been typed on the command line. + + In addition, the following table describes the special characters +which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4': + +'\a' + A bell character. +'\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 escape character. +'\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' + A newline. +'\r' + A carriage return. +'\s' + The name of the shell, the basename of '$0' (the portion following + the final slash). +'\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. +'\A' + The 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 + patchlevel (e.g., 2.00.0) +'\w' + The current working directory, with '$HOME' abbreviated with a + tilde (uses the '$PROMPT_DIRTRIM' variable). +'\W' + The basename of '$PWD', with '$HOME' abbreviated with a tilde. +'\!' + The history number of this command. +'\#' + The command number of this command. +'\$' + If the effective uid is 0, '#', otherwise '$'. +'\NNN' + The character whose ASCII code is the octal value NNN. +'\\' + A backslash. +'\[' + Begin a sequence of non-printing characters. This 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 (*note Bash History +Facilities::), 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 (*note The Shopt +Builtin::). This can have unwanted side effects if escaped portions of +the string appear within command substitution or contain characters +special to word expansion. + + +File: bash.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Controlling the Prompt, Up: Bash Features + +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', 'HISTFILE', + '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 + 'history' 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. + + The restricted shell mode is only one component of a useful +restricted environment. It should be accompanied by setting 'PATH' to a +value that allows execution of only a few verified commands (commands +that allow shell escapes are particularly vulnerable), leaving the user +in a non-writable directory other than his home directory after login, +not allowing the restricted shell to execute shell scripts, and cleaning +the environment of variables that cause some commands to modify their +behavior (e.g., 'VISUAL' or 'PAGER'). + + Modern systems provide more secure ways to implement a restricted +environment, such as 'jails', 'zones', or 'containers'. + + +File: bash.info, Node: Bash POSIX Mode, Next: Shell Compatibility Mode, Prev: The Restricted Shell, Up: Bash Features + +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 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. Bash ensures that the 'POSIXLY_CORRECT' variable is set. + + 2. 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'. + + 3. Bash will not insert a command without the execute bit set into the + command hash table, even if it returns it as a (last-ditch) result + from a '$PATH' search. + + 4. The message printed by the job control code and builtins when a job + exits with a non-zero status is 'Done(status)'. + + 5. The message printed by the job control code and builtins when a job + is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example, + 'SIGTSTP'. + + 6. Alias expansion is always enabled, even in non-interactive shells. + + 7. Reserved words appearing in a context where reserved words are + recognized do not undergo alias expansion. + + 8. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number + and '!!' to '!' are enabled, and parameter expansion is performed + on the values of 'PS1' and 'PS2' regardless of the setting of the + 'promptvars' option. + + 9. The POSIX startup files are executed ('$ENV') rather than the + normal Bash files. + + 10. Tilde expansion is only performed on assignments preceding a + command name, rather than on all assignment statements on the line. + + 11. The default history file is '~/.sh_history' (this is the default + value of '$HISTFILE'). + + 12. Redirection operators do not perform filename expansion on the + word in the redirection unless the shell is interactive. + + 13. Redirection operators do not perform word splitting on the word in + the redirection. + + 14. 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. + + 15. Function names may not be the same as one of the POSIX special + builtins. + + 16. POSIX special builtins are found before shell functions during + command lookup. + + 17. When printing shell function definitions (e.g., by 'type'), Bash + does not print the 'function' keyword. + + 18. Literal tildes that appear as the first character in elements of + the 'PATH' variable are not expanded as described above under *note + Tilde Expansion::. + + 19. The 'time' reserved word may be used by itself as a command. When + used in this way, it displays timing statistics for the shell and + its completed children. The 'TIMEFORMAT' variable controls the + format of the timing information. + + 20. When parsing and expanding a ${...} expansion that appears within + double quotes, single quotes are no longer special and cannot be + used to quote a closing brace or other special character, unless + the operator is one of those defined to perform pattern removal. + In this case, they do not have to appear as matched pairs. + + 21. The parser does not recognize 'time' as a reserved word if the + next token begins with a '-'. + + 22. The '!' character does not introduce history expansion within a + double-quoted string, even if the 'histexpand' option is enabled. + + 23. If a POSIX special builtin returns an error status, a + non-interactive shell exits. The fatal errors are those listed in + the POSIX standard, and include things like passing incorrect + options, redirection errors, variable assignment errors for + assignments preceding the command name, and so on. + + 24. 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. + + 25. A non-interactive shell exits with an error status if a variable + assignment error occurs in an assignment statement preceding a + special builtin, but not with any other simple command. + + 26. 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. + + 27. Non-interactive shells exit if FILENAME in '.' FILENAME is not + found. + + 28. Non-interactive shells exit if a syntax error in an arithmetic + expansion results in an invalid expression. + + 29. Non-interactive shells exit if a parameter expansion error occurs. + + 30. Non-interactive shells exit if there is a syntax error in a script + read with the '.' or 'source' builtins, or in a string processed by + the 'eval' builtin. + + 31. While variable indirection is available, it may not be applied to + the '#' and '?' special parameters. + + 32. When expanding the '*' special parameter in a pattern context + where the expansion is double-quoted does not treat the '$*' as if + it were double-quoted. + + 33. Assignment statements preceding POSIX special builtins persist in + the shell environment after the builtin completes. + + 34. The 'command' builtin does not prevent builtins that take + assignment statements as arguments from expanding them as + assignment statements; when not in POSIX mode, assignment builtins + lose their assignment statement expansion properties when preceded + by 'command'. + + 35. 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. + + 36. The output of 'kill -l' prints all the signal names on a single + line, separated by spaces, without the 'SIG' prefix. + + 37. The 'kill' builtin does not accept signal names with a 'SIG' + prefix. + + 38. The 'export' and 'readonly' builtin commands display their output + in the format required by POSIX. + + 39. The 'trap' builtin displays signal names without the leading + 'SIG'. + + 40. 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. + + 41. 'trap -p' displays signals whose dispositions are set to SIG_DFL + and those that were ignored when the shell started. + + 42. The '.' and 'source' builtins do not search the current directory + for the filename argument if it is not found by searching 'PATH'. + + 43. Enabling POSIX mode has the effect of setting the + 'inherit_errexit' option, so subshells spawned to execute command + substitutions inherit the value of the '-e' option from the parent + shell. When the 'inherit_errexit' option is not enabled, Bash + clears the '-e' option in such subshells. + + 44. Enabling POSIX mode has the effect of setting the 'shift_verbose' + option, so numeric arguments to 'shift' that exceed the number of + positional parameters will result in an error message. + + 45. When the 'alias' builtin displays alias definitions, it does not + display them with a leading 'alias ' unless the '-p' option is + supplied. + + 46. When the 'set' builtin is invoked without options, it does not + display shell function names and definitions. + + 47. 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. + + 48. 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. + + 49. When the 'cd' builtin cannot change a directory because the length + of the pathname constructed from '$PWD' and the directory name + supplied as an argument exceeds PATH_MAX when all symbolic links + are expanded, 'cd' will fail instead of attempting to use only the + supplied directory name. + + 50. 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. + + 51. When listing the history, the 'fc' builtin does not include an + indication of whether or not a history entry has been modified. + + 52. The default editor used by 'fc' is 'ed'. + + 53. 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'. + + 54. The 'vi' editing mode will invoke the 'vi' editor directly when + the 'v' command is run, instead of checking '$VISUAL' and + '$EDITOR'. + + 55. 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. + + 56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + and '-f' options. + + 57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + interrupt the 'wait' builtin and cause it to return immediately. + The trap command is run once for each child that exits. + + 58. The 'read' builtin may be interrupted by a signal for which a trap + has been set. If Bash receives a trapped signal while executing + 'read', the trap handler executes and 'read' returns an exit status + greater than 128. + + 59. Bash removes an exited background process's status from the list + of such statuses after the 'wait' builtin is used to obtain it. + + There is other POSIX 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::). + + +File: bash.info, Node: Shell Compatibility Mode, Prev: Bash POSIX Mode, Up: Bash Features + +6.12 Shell Compatibility Mode +============================= + +Bash-4.0 introduced the concept of a 'shell compatibility level', +specified as a set of options to the shopt builtin ('compat31', +'compat32', 'compat40', 'compat41', and so on). There is only one +current compatibility level - each option is mutually exclusive. The +compatibility level is intended to allow users to select behavior from +previous versions that is incompatible with newer versions while they +migrate scripts to use current features and behavior. It's intended to +be a temporary solution. + + This section does not mention behavior that is standard for a +particular version (e.g., setting 'compat32' means that quoting the rhs +of the regexp matching operator quotes special regexp characters in the +word, which is default behavior in bash-3.2 and above). + + If a user enables, say, 'compat32', it may affect the behavior of +other compatibility levels up to and including the current compatibility +level. The idea is that each compatibility level controls behavior that +changed in that version of Bash, but that behavior may have been present +in earlier versions. For instance, the change to use locale-based +comparisons with the '[[' command came in bash-4.1, and earlier versions +used ASCII-based comparisons, so enabling 'compat32' will enable +ASCII-based comparisons as well. That granularity may not be sufficient +for all uses, and as a result users should employ compatibility levels +carefully. Read the documentation for a particular feature to find out +the current behavior. + + Bash-4.3 introduced a new shell variable: 'BASH_COMPAT'. The value +assigned to this variable (a decimal version number like 4.2, or an +integer corresponding to the 'compat'NN option, like 42) determines the +compatibility level. + + Starting with bash-4.4, Bash has begun deprecating older +compatibility levels. Eventually, the options will be removed in favor +of 'BASH_COMPAT'. + + Bash-5.0 is the final version for which there will be an individual +shopt option for the previous version. Users should use 'BASH_COMPAT' +on bash-5.0 and later versions. + + The following table describes the behavior changes controlled by each +compatibility level setting. The 'compat'NN tag is used as shorthand +for setting the compatibility level to NN using one of the following +mechanisms. For versions prior to bash-5.0, the compatibility level may +be set using the corresponding 'compat'NN shopt option. For bash-4.3 +and later versions, the 'BASH_COMPAT' variable is preferred, and it is +required for bash-5.1 and later versions. + +'compat31' + * quoting the rhs of the '[[' command's regexp matching operator + (=~) has no special effect + +'compat32' + * interrupting a command list such as "a ; b ; c" causes the + execution of the next command in the list (in bash-4.0 and + later versions, the shell acts as if it received the + interrupt, so interrupting one command in a list aborts the + execution of the entire list) + +'compat40' + * the '<' and '>' operators to the '[[' command do not consider + the current locale when comparing strings; they use ASCII + ordering. Bash versions prior to bash-4.1 use ASCII collation + and strcmp(3); bash-4.1 and later use the current locale's + collation sequence and strcoll(3). + +'compat41' + * in posix mode, 'time' may be followed by options and still be + recognized as a reserved word (this is POSIX interpretation + 267) + * in posix mode, the parser requires that an even number of + single quotes occur in the WORD portion of a double-quoted + ${...} parameter expansion and treats them specially, so that + characters within the single quotes are considered quoted + (this is POSIX interpretation 221) + +'compat42' + * the replacement string in double-quoted pattern substitution + does not undergo quote removal, as it does in versions after + bash-4.2 + * in posix mode, single quotes are considered special when + expanding the WORD portion of a double-quoted ${...} parameter + expansion and can be used to quote a closing brace or other + special character (this is part of POSIX interpretation 221); + in later versions, single quotes are not special within + double-quoted word expansions + +'compat43' + * the shell does not print a warning message if an attempt is + made to use a quoted compound assignment as an argument to + declare (declare -a foo='(1 2)'). Later versions warn that + this usage is deprecated + * word expansion errors are considered non-fatal errors that + cause the current command to fail, even in posix mode (the + default behavior is to make them fatal errors that cause the + shell to exit) + * when executing a shell function, the loop state + (while/until/etc.) is not reset, so 'break' or 'continue' in + that function will break or continue loops in the calling + context. Bash-4.4 and later reset the loop state to prevent + this + +'compat44' + * the shell sets up the values used by 'BASH_ARGV' and + 'BASH_ARGC' so they can expand to the shell's positional + parameters even if extended debugging mode is not enabled + * a subshell inherits loops from its parent context, so 'break' + or 'continue' will cause the subshell to exit. Bash-5.0 and + later reset the loop state to prevent the exit + * variable assignments preceding builtins like 'export' and + 'readonly' that set attributes continue to affect variables + with the same name in the calling environment even if the + shell is not in posix mode + +'compat50 (set using BASH_COMPAT)' + * Bash-5.1 changed the way '$RANDOM' is generated to introduce + slightly more randomness. If the shell compatibility level is + set to 50 or lower, it reverts to the method from bash-5.0 and + previous versions, so seeding the random number generator by + assigning a value to 'RANDOM' will produce the same sequence + as in bash-5.0 + * If the command hash table is empty, Bash versions prior to + bash-5.1 printed an informational message to that effect, even + when producing output that can be reused as input. Bash-5.1 + suppresses that message when the '-l' option is supplied. + + +File: bash.info, Node: Job Control, Next: Command Line Editing, Prev: Bash Features, Up: Top + +7 Job Control +************* + +This chapter discusses what job control is, how it works, and how Bash +allows you to access its facilities. + +* Menu: + +* Job Control Basics:: How job control works. +* Job Control Builtins:: Bash builtin commands used to interact + with job control. +* Job Control Variables:: Variables Bash uses to customize job + control. + + +File: bash.info, Node: Job Control Basics, Next: Job Control Builtins, Up: Job Control + +7.1 Job Control Basics +====================== + +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 operating system kernel'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, 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, if the user so specifies with 'stty tostop', write to the +terminal. Background processes which attempt to read from (write to +when 'stty tostop' is in effect) the terminal are sent a 'SIGTTIN' +('SIGTTOU') signal by the kernel's 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 then manipulates 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 specification (JOBSPEC). + + Job number 'n' may be referred to as '%n'. 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. A +single '%' (with no accompanying job specification) also refers to the +current job. The previous job may be referenced using '%-'. If there +is only a single job, '%+' and '%-' can both be used to refer to that +job. 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 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 job whose command name begins with +'ce'. Using '%?ce', on the other hand, refers to any job containing the +string 'ce' in its command line. If the prefix or substring matches +more than one job, Bash reports an error. + + 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 is enabled, Bash reports such changes +immediately (*note The Set Builtin::). Any trap on 'SIGCHLD' is +executed for each child process that exits. + + If an attempt to exit Bash is made while jobs are stopped, (or +running, if the 'checkjobs' option is enabled - see *note The Shopt +Builtin::), the shell prints a warning message, and if the 'checkjobs' +option is enabled, lists the jobs and their statuses. The 'jobs' +command may then be used to inspect their status. If a second attempt +to exit is made without an intervening command, Bash does not print +another warning, and any stopped jobs are terminated. + + When the shell is waiting for a job or process using the 'wait' +builtin, and job control is enabled, 'wait' will return when the job +changes state. The '-f' option causes 'wait' to wait until the job or +process terminates before returning. + + +File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Prev: Job Control Basics, Up: Job Control + +7.2 Job Control Builtins +======================== + +'bg' + bg [JOBSPEC ...] + + Resume each suspended job JOBSPEC in the background, as if it had + been started with '&'. If JOBSPEC is not supplied, the current job + is used. The return status is zero unless it is run when job + control is not enabled, or, when run with job control enabled, any + JOBSPEC was not found or specifies a job that was started without + job control. + +'fg' + fg [JOBSPEC] + + Resume the job JOBSPEC in the foreground and make it the current + job. If JOBSPEC is not supplied, the current job is used. The + return status is that of the command placed into the foreground, or + non-zero if run when job control is disabled or, when run with job + control enabled, JOBSPEC does not specify a valid job or JOBSPEC + specifies a job that was started without job control. + +'jobs' + jobs [-lnprs] [JOBSPEC] + jobs -x COMMAND [ARGUMENTS] + + The first form lists the active jobs. The options have the + following meanings: + + '-l' + List process IDs in addition to the normal information. + + '-n' + Display information only about jobs that have changed status + since the user was last notified of their status. + + '-p' + List only the process ID of the job's process group leader. + + '-r' + Display only running jobs. + + '-s' + Display only stopped jobs. + + If JOBSPEC is given, output is restricted to information about that + job. If JOBSPEC is not supplied, the status of all jobs is listed. + + If the '-x' option is supplied, 'jobs' replaces any JOBSPEC found + in COMMAND or ARGUMENTS with the corresponding process group ID, + and executes COMMAND, passing it ARGUMENTs, returning its exit + status. + +'kill' + kill [-s SIGSPEC] [-n SIGNUM] [-SIGSPEC] JOBSPEC or PID + kill -l|-L [EXIT_STATUS] + + Send a signal specified by SIGSPEC or SIGNUM to the process named + by job specification JOBSPEC or process ID PID. SIGSPEC is either + a case-insensitive signal name such as 'SIGINT' (with or without + the 'SIG' prefix) or a signal number; SIGNUM is a signal number. + If SIGSPEC and SIGNUM are not present, 'SIGTERM' is used. The '-l' + option 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 zero. EXIT_STATUS + is a number specifying a signal number or the exit status of a + process terminated by a signal. The '-L' option is equivalent to + '-l'. The return status is zero if at least one signal was + successfully sent, or non-zero if an error occurs or an invalid + option is encountered. + +'wait' + wait [-fn] [-p VARNAME] [JOBSPEC or PID ...] + + Wait until the child process specified by each process ID PID or + job specification JOBSPEC exits and return the exit status of the + last command waited for. If a job spec is given, all processes in + the job are waited for. If no arguments are given, 'wait' waits + for all running background jobs and the last-executed process + substitution, if its process id is the same as $!, and the return + status is zero. If the '-n' option is supplied, 'wait' waits for a + single job from the list of PIDS or JOBSPECS or, if no arguments + are supplied, any job, to complete and returns its exit status. If + none of the supplied arguments is a child of the shell, or if no + arguments are supplied and the shell has no unwaited-for children, + the exit status is 127. If the '-p' option is supplied, the + process or job identifier of the job for which the exit status is + returned is assigned to the variable VARNAME named by the option + argument. The variable will be unset initially, before any + assignment. This is useful only when the '-n' option is supplied. + Supplying the '-f' option, when job control is enabled, forces + 'wait' to wait for each PID or JOBSPEC to terminate before + returning its status, intead of returning when it changes status. + If neither JOBSPEC nor PID specifies an active child process of the + shell, the return status is 127. + +'disown' + disown [-ar] [-h] [JOBSPEC ... | PID ... ] + + Without options, remove each JOBSPEC 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'. If JOBSPEC is not 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. + +'suspend' + suspend [-f] + + Suspend the execution of this shell until it receives a 'SIGCONT' + signal. A login shell cannot be suspended; the '-f' option can be + used to override this and force the suspension. + + When job control is not active, the 'kill' and 'wait' builtins do not +accept JOBSPEC arguments. They must be supplied process IDs. + + +File: bash.info, Node: Job Control Variables, Prev: Job Control Builtins, Up: Job Control + +7.3 Job Control Variables +========================= + +'auto_resume' + This variable controls how the shell interacts with the user and + job control. If this variable exists then single word simple + commands without redirections are treated as candidates for + resumption of an existing job. There is no ambiguity allowed; if + there is more than one job beginning with the string typed, then + the most recently accessed job will be selected. The name of a + stopped job, in this context, is the command line used to start it. + If this variable is 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 ID (*note Job Control + Basics::). If set to any other value, the supplied string must be + a prefix of a stopped job's name; this provides functionality + analogous to the '%' job ID. + + +File: bash.info, Node: Command Line Editing, Next: Using History Interactively, Prev: Job Control, Up: Top + +8 Command Line Editing +********************** + +This chapter describes the basic features of the GNU command line +editing interface. Command line editing is provided by the Readline +library, which is used by several different programs, including Bash. +Command line editing is enabled by default when using an interactive +shell, unless the '--noediting' option is supplied at shell invocation. +Line editing is also used when using the '-e' option to the 'read' +builtin command (*note Bash Builtins::). By default, the line editing +commands are similar to those of Emacs. A vi-style line editing +interface is also available. Line editing can be enabled at any time +using the '-o emacs' or '-o vi' options to the 'set' builtin command +(*note The Set Builtin::), or disabled using the '+o emacs' or '+o vi' +options to 'set'. + +* Menu: + +* Introduction and Notation:: Notation used in this text. +* Readline Interaction:: The minimum set of commands for editing a line. +* Readline Init File:: Customizing Readline from a user's view. +* Bindable Readline Commands:: A description of most of the Readline commands + available for binding +* Readline vi Mode:: A short description of how to make Readline + behave like the vi editor. +* Programmable Completion:: How to specify the possible completions for + a specific command. +* Programmable Completion Builtins:: Builtin commands to specify how to + complete arguments for a particular command. +* A Programmable Completion Example:: An example shell function for + generating possible completions. + + +File: bash.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing + +8.1 Introduction to Line Editing +================================ + +The following paragraphs describe the notation used to represent +keystrokes. + + The text 'C-k' is read as 'Control-K' and describes the character +produced when the key is pressed while the Control key is depressed. + + The text 'M-k' is read as 'Meta-K' and describes the character +produced when the Meta key (if you have one) is depressed, and the +key is pressed. The Meta key is labeled on many keyboards. On +keyboards with two keys labeled (usually to either side of the +space bar), the on the left side is generally set to work as a +Meta key. The key on the right may also be configured to work as +a Meta key or may be configured as some other modifier, such as a +Compose key for typing accented characters. + + If you do not have a Meta or key, or another key working as a +Meta key, the identical keystroke can be generated by typing +_first_, and then typing . Either process is known as "metafying" +the key. + + The text 'M-C-k' is read as 'Meta-Control-k' and describes the +character produced by "metafying" 'C-k'. + + In addition, several keys have their own names. Specifically, , +, , , , and all stand for themselves when seen +in this text, or in an init file (*note Readline Init File::). If your +keyboard lacks a key, typing will produce the desired +character. The key may be labeled or on some +keyboards. + + +File: bash.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing + +8.2 Readline Interaction +======================== + +Often during an interactive session you type in a long line of text, +only to notice that the first word on the line is misspelled. The +Readline library gives you a set of commands for manipulating the text +as you type it in, allowing you to just fix your typo, and not forcing +you to retype the majority of the line. Using these editing commands, +you move the cursor to the place that needs correction, and delete or +insert the text of the corrections. Then, when you are satisfied with +the line, you simply press . You do not have to be at the end of +the line to press ; the entire line is accepted regardless of the +location of the cursor within the line. + +* Menu: + +* Readline Bare Essentials:: The least you need to know about Readline. +* Readline Movement Commands:: Moving about the input line. +* Readline Killing Commands:: How to delete text, and how to get it back! +* Readline Arguments:: Giving numeric arguments to commands. +* Searching:: Searching through previous lines. + + +File: bash.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction + +8.2.1 Readline Bare Essentials +------------------------------ + +In order to enter characters into the line, simply type them. The typed +character appears where the cursor was, and then the cursor moves one +space to the right. If you mistype a character, you can use your erase +character to back up and delete the mistyped character. + + Sometimes you may mistype a character, and not notice the error until +you have typed several other characters. In that case, you can type +'C-b' to move the cursor to the left, and then correct your mistake. +Afterwards, you can move the cursor to the right with 'C-f'. + + When you add text in the middle of a line, you will notice that +characters to the right of the cursor are 'pushed over' to make room for +the text that you have inserted. Likewise, when you delete text behind +the cursor, characters to the right of the cursor are 'pulled back' to +fill in the blank space created by the removal of the text. A list of +the bare essentials for editing the text of an input line follows. + +'C-b' + Move back one character. +'C-f' + Move forward one character. + or + Delete the character to the left of the cursor. +'C-d' + Delete the character underneath the cursor. +Printing characters + Insert the character into the line at the cursor. +'C-_' or 'C-x C-u' + Undo the last editing command. You can undo all the way back to an + empty line. + +(Depending on your configuration, the key be set to delete +the character to the left of the cursor and the key set to delete +the character underneath the cursor, like 'C-d', rather than the +character to the left of the cursor.) + + +File: bash.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction + +8.2.2 Readline Movement Commands +-------------------------------- + +The above table describes the most basic keystrokes that you need in +order to do editing of the input line. For your convenience, many other +commands have been added in addition to 'C-b', 'C-f', 'C-d', and . +Here are some commands for moving more rapidly about the line. + +'C-a' + Move to the start of the line. +'C-e' + Move to the end of the line. +'M-f' + Move forward a word, where a word is composed of letters and + digits. +'M-b' + Move backward a word. +'C-l' + Clear the screen, reprinting the current line at the top. + + Notice how 'C-f' moves forward a character, while 'M-f' moves forward +a word. It is a loose convention that control keystrokes operate on +characters while meta keystrokes operate on words. + + +File: bash.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction + +8.2.3 Readline Killing Commands +------------------------------- + +"Killing" text means to delete the text from the line, but to save it +away for later use, usually by "yanking" (re-inserting) it back into the +line. ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.) + + If the description for a command says that it 'kills' text, then you +can be sure that you can get the text back in a different (or the same) +place later. + + When you use a kill command, the text is saved in a "kill-ring". Any +number of consecutive kills save all of the killed text together, so +that when you yank it back, you get it all. The kill ring is not line +specific; the text that you killed on a previously typed line is +available to be yanked back later, when you are typing another line. + + Here is the list of commands for killing text. + +'C-k' + Kill the text from the current cursor position to the end of the + line. + +'M-d' + Kill from the cursor 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 'M-f'. + +'M-' + Kill from the cursor the start of the current word, or, if between + words, to the start of the previous word. Word boundaries are the + same as those used by 'M-b'. + +'C-w' + Kill from the cursor to the previous whitespace. This is different + than 'M-' because the word boundaries differ. + + Here is how to "yank" the text back into the line. Yanking means to +copy the most-recently-killed text from the kill buffer. + +'C-y' + Yank the most recently killed text back into the buffer at the + cursor. + +'M-y' + Rotate the kill-ring, and yank the new top. You can only do this + if the prior command is 'C-y' or 'M-y'. + + +File: bash.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction + +8.2.4 Readline Arguments +------------------------ + +You can pass numeric arguments to Readline commands. Sometimes the +argument acts as a repeat count, other times it is the sign of the +argument that is significant. If you pass a negative argument to a +command which normally acts in a forward direction, that command will +act in a backward direction. For example, to kill text back to the +start of the line, you might type 'M-- C-k'. + + The general way to pass numeric arguments to a command is to type +meta digits before the command. If the first 'digit' typed is a minus +sign ('-'), then the sign of the argument will be negative. Once you +have typed one meta digit to get the argument started, you can type the +remainder of the digits, and then the command. For example, to give the +'C-d' command an argument of 10, you could type 'M-1 0 C-d', which will +delete the next ten characters on the input line. + + +File: bash.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction + +8.2.5 Searching for Commands in the History +------------------------------------------- + +Readline provides commands for searching through the command history +(*note Bash History Facilities::) 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. To search backward in the +history for a particular string, type 'C-r'. Typing 'C-s' searches +forward through the history. 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 and +'C-J' characters will terminate an incremental search. 'C-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 'C-r' or +'C-s' 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 will terminate the +search and accept the line, thereby executing the command from the +history list. A movement command will terminate the search, make the +last line found the current line, and begin editing. + + Readline remembers the last incremental search string. If two 'C-r's +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. + + +File: bash.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing + +8.3 Readline Init File +====================== + +Although the Readline library comes with a set of Emacs-like keybindings +installed by default, it is possible to use a different set of +keybindings. Any user can customize programs that use Readline by +putting commands in an "inputrc" file, conventionally in his home +directory. The name of this file is taken from the value of the shell +variable 'INPUTRC'. If that variable is unset, the default is +'~/.inputrc'. If that file does not exist or cannot be read, the +ultimate default is '/etc/inputrc'. The 'bind' builtin command can also +be used to set Readline keybindings and variables. *Note Bash +Builtins::. + + When a program which uses the Readline library starts up, the init +file is read, and the key bindings are set. + + In addition, the 'C-x C-r' command re-reads this init file, thus +incorporating any changes that you might have made to it. + +* Menu: + +* Readline Init File Syntax:: Syntax for the commands in the inputrc file. + +* Conditional Init Constructs:: Conditional key bindings in the inputrc file. + +* Sample Init File:: An example inputrc file. + + +File: bash.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File + +8.3.1 Readline Init File Syntax +------------------------------- + +There are only a few basic constructs allowed in the Readline init file. +Blank lines are ignored. Lines beginning with a '#' are comments. +Lines beginning with a '$' indicate conditional constructs (*note +Conditional Init Constructs::). Other lines denote variable settings +and key bindings. + +Variable Settings + You can modify the run-time behavior of Readline by altering the + values of variables in Readline using the 'set' command within the + init file. The syntax is simple: + + set VARIABLE VALUE + + Here, for example, is how to change from the default Emacs-like key + binding to use 'vi' line editing commands: + + set editing-mode vi + + Variable names and values, where appropriate, are recognized + without regard to case. Unrecognized variable names are ignored. + + Boolean variables (those that can be set to on or off) are set to + on if the value is null or empty, ON (case-insensitive), or 1. Any + other value results in the variable being set to off. + + The 'bind -V' command lists the current Readline variable names and + values. *Note Bash Builtins::. + + A great deal of run-time behavior is changeable with the following + variables. + + 'bell-style' + Controls what happens when Readline wants to ring the terminal + bell. If set to 'none', Readline never rings the bell. If + set to 'visible', Readline uses a visible bell if one is + available. If set to 'audible' (the default), Readline + attempts to ring the terminal's bell. + + 'bind-tty-special-chars' + If set to 'on' (the default), Readline attempts to bind the + control characters treated specially by the kernel's terminal + driver to their Readline equivalents. + + 'blink-matching-paren' + If set to 'on', Readline attempts to briefly move the cursor + to an opening parenthesis when a closing parenthesis is + inserted. The default is 'off'. + + 'colored-completion-prefix' + If set to 'on', when listing completions, Readline displays + the common prefix of the set of possible completions using a + different color. The color definitions are taken from the + value of the 'LS_COLORS' environment variable. The default is + 'off'. + + 'colored-stats' + If set to 'on', Readline displays possible completions using + different colors to indicate their file type. The color + definitions are taken from the value of the 'LS_COLORS' + environment variable. The default is 'off'. + + 'comment-begin' + The string to insert at the beginning of the line when the + 'insert-comment' command is executed. The default value is + '"#"'. + + 'completion-display-width' + The number of screen columns used to display possible matches + when performing completion. The value is ignored if it is + less than 0 or greater than the terminal screen width. A + value of 0 will cause matches to be displayed one per line. + The default value is -1. + + 'completion-ignore-case' + If set to 'on', Readline performs filename matching and + completion in a case-insensitive fashion. The default value + is 'off'. + + 'completion-map-case' + If set to 'on', and COMPLETION-IGNORE-CASE is enabled, + Readline treats hyphens ('-') and underscores ('_') as + equivalent when performing case-insensitive filename matching + and completion. The default value is 'off'. + + 'completion-prefix-display-length' + The length in characters of the common prefix of a list of + possible completions that is displayed without modification. + When set to a value greater than zero, common prefixes longer + than this value are replaced with an ellipsis when displaying + possible completions. + + 'completion-query-items' + The number of possible completions that determines when the + user is asked whether the list of possibilities should be + displayed. If the number of possible completions is greater + than or equal to this value, Readline will ask whether or not + the user wishes to view them; otherwise, they are simply + listed. This variable must be set to an integer value greater + than or equal to 0. A negative value means Readline should + never ask. The default limit is '100'. + + 'convert-meta' + If set to 'on', Readline will convert characters with the + eighth bit set to an ASCII key sequence by stripping the + eighth bit and prefixing an character, converting them + to a meta-prefixed key sequence. The default value is 'on', + but will be set to 'off' if the locale is one that contains + eight-bit characters. + + 'disable-completion' + If set to 'On', Readline will inhibit word completion. + Completion characters will be inserted into the line as if + they had been mapped to 'self-insert'. The default is 'off'. + + 'echo-control-characters' + When set to 'on', on operating systems that indicate they + support it, readline echoes a character corresponding to a + signal generated from the keyboard. The default is 'on'. + + 'editing-mode' + The 'editing-mode' variable controls which default set of key + bindings is used. By default, Readline starts up in Emacs + editing mode, where the keystrokes are most similar to Emacs. + This variable can be set to either 'emacs' or 'vi'. + + 'emacs-mode-string' + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when emacs editing mode is active. The value is + expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the '\1' and '\2' escapes to begin and end sequences of + non-printing characters, which can be used to embed a terminal + control sequence into the mode string. The default is '@'. + + 'enable-bracketed-paste' + When set to 'On', Readline will configure the terminal in a + way that will enable it to insert each paste into the editing + buffer as a single string of characters, instead of treating + each character as if it had been read from the keyboard. This + can prevent pasted characters from being interpreted as + editing commands. The default is 'On'. + + 'enable-keypad' + When set to 'on', Readline will try to enable the application + keypad when it is called. Some systems need this to enable + the arrow keys. The default is 'off'. + + 'enable-meta-key' + When set to 'on', Readline will try to enable any meta + modifier key the terminal claims to support when it is called. + On many terminals, the meta key is used to send eight-bit + characters. The default is 'on'. + + 'expand-tilde' + If set to 'on', tilde expansion is performed when Readline + attempts word completion. The default is 'off'. + + 'history-preserve-point' + If set to 'on', the history code attempts to place the point + (the current cursor position) at the same location on each + history line retrieved with 'previous-history' or + 'next-history'. The default is 'off'. + + 'history-size' + Set the maximum number of history entries saved in the history + list. If set to zero, any existing history entries are + deleted and no new entries are saved. If set to a value less + than zero, the number of history entries is not limited. By + default, the number of history entries is not limited. If an + attempt is made to set HISTORY-SIZE to a non-numeric value, + the maximum number of history entries will be set to 500. + + 'horizontal-scroll-mode' + This variable can be set to either 'on' or 'off'. Setting it + to 'on' means that the text of the lines being edited will + scroll horizontally on a single screen line when they are + longer than the width of the screen, instead of wrapping onto + a new screen line. This variable is automatically set to 'on' + for terminals of height 1. By default, this variable is set + to 'off'. + + 'input-meta' + If set to 'on', Readline will enable eight-bit input (it will + not clear the eighth bit in the characters it reads), + regardless of what the terminal claims it can support. The + default value is 'off', but Readline will set it to 'on' if + the locale contains eight-bit characters. The name + 'meta-flag' is a synonym for this variable. + + 'isearch-terminators' + The string of characters that should terminate an incremental + search without subsequently executing the character as a + command (*note Searching::). If this variable has not been + given a value, the characters and 'C-J' will terminate + an incremental search. + + 'keymap' + Sets Readline's idea of the current keymap for key binding + commands. Built-in 'keymap' names are 'emacs', + 'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move', + 'vi-command', and 'vi-insert'. 'vi' is equivalent to + 'vi-command' ('vi-move' is also a synonym); 'emacs' is + equivalent to 'emacs-standard'. Applications may add + additional names. The default value is 'emacs'. The value of + the 'editing-mode' variable also affects the default keymap. + + 'keyseq-timeout' + Specifies the duration Readline will wait for a character when + reading an ambiguous key sequence (one that can form a + complete key sequence using the input read so far, or can take + additional input to complete a longer key sequence). If no + input is received within the timeout, Readline will use the + shorter but complete key sequence. Readline uses this value + to determine whether or not input is available on the current + input source ('rl_instream' by default). The value is + specified in milliseconds, so a value of 1000 means that + Readline will wait one second for additional input. If this + variable is set to a value less than or equal to zero, or to a + non-numeric value, Readline will wait until another key is + pressed to decide which key sequence to complete. The default + value is '500'. + + 'mark-directories' + If set to 'on', completed directory names have a slash + appended. The default is 'on'. + + 'mark-modified-lines' + This variable, when set to 'on', causes Readline to display an + asterisk ('*') at the start of history lines which have been + modified. This variable is 'off' by default. + + 'mark-symlinked-directories' + If set to 'on', completed names which are symbolic links to + directories have a slash appended (subject to the value of + 'mark-directories'). The default is 'off'. + + 'match-hidden-files' + This variable, when set to 'on', causes Readline to match + files whose names begin with a '.' (hidden files) when + performing filename completion. If set to 'off', the leading + '.' must be supplied by the user in the filename to be + completed. This variable is 'on' by default. + + 'menu-complete-display-prefix' + If set to 'on', menu completion displays the common prefix of + the list of possible completions (which may be empty) before + cycling through the list. The default is 'off'. + + 'output-meta' + If set to 'on', Readline will display characters with the + eighth bit set directly rather than as a meta-prefixed escape + sequence. The default is 'off', but Readline will set it to + 'on' if the locale contains eight-bit characters. + + 'page-completions' + If set to 'on', Readline uses an internal 'more'-like pager to + display a screenful of possible completions at a time. This + variable is 'on' by default. + + 'print-completions-horizontally' + If set to 'on', Readline will display completions with matches + sorted horizontally in alphabetical order, rather than down + the screen. The default is 'off'. + + 'revert-all-at-newline' + If set to 'on', Readline will undo all changes to history + lines before returning when 'accept-line' is executed. By + default, history lines may be modified and retain individual + undo lists across calls to 'readline'. The default is 'off'. + + 'show-all-if-ambiguous' + This alters the default behavior of the completion functions. + If set to 'on', words which have more than one possible + completion cause the matches to be listed immediately instead + of ringing the bell. The default value is 'off'. + + 'show-all-if-unmodified' + This alters the default behavior of the completion functions + in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to + 'on', 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. The + default value is 'off'. + + 'show-mode-in-prompt' + If set to 'on', add a string to the beginning of the prompt + indicating the editing mode: emacs, vi command, or vi + insertion. The mode strings are user-settable (e.g., + EMACS-MODE-STRING). The default value is 'off'. + + 'skip-completed-text' + If set to 'on', this alters the default completion behavior + when inserting a single match into the line. It's only active + when performing completion in the middle of a word. If + enabled, readline does not insert characters from the + completion that match characters after point in the word being + completed, so portions of the word following the cursor are + not duplicated. For instance, if this is enabled, attempting + completion when the cursor is after the 'e' in 'Makefile' will + result in 'Makefile' rather than 'Makefilefile', assuming + there is a single possible completion. The default value is + 'off'. + + 'vi-cmd-mode-string' + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when vi editing mode is active and in command mode. + The value is expanded like a key binding, so the standard set + of meta- and control prefixes and backslash escape sequences + is available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '(cmd)'. + + 'vi-ins-mode-string' + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when vi editing mode is active and in insertion mode. + The value is expanded like a key binding, so the standard set + of meta- and control prefixes and backslash escape sequences + is available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '(ins)'. + + 'visible-stats' + If set to 'on', a character denoting a file's type is appended + to the filename when listing possible completions. The + default is 'off'. + +Key Bindings + The syntax for controlling key bindings in the init file is simple. + First you need to find the name of the command that you want to + change. The following sections contain tables of the command name, + the default keybinding, if any, and a short description of what the + command does. + + Once you know the name of the command, simply place on a line in + the init file the name of the key you wish to bind the command to, + a colon, and then the name of the command. There can be no space + between the key name and the colon - that will be interpreted as + part of the key name. The name of the key can be expressed in + different ways, depending on what you find most comfortable. + + In addition to command names, readline allows keys to be bound to a + string that is inserted when the key is pressed (a MACRO). + + The 'bind -p' command displays Readline function names and bindings + in a format that can put directly into an initialization file. + *Note Bash Builtins::. + + 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 example above, '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). + + A number of symbolic character names are recognized while + processing this key binding syntax: DEL, ESC, ESCAPE, LFD, + NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB. + + "KEYSEQ": FUNCTION-NAME or MACRO + KEYSEQ differs from KEYNAME above in that strings denoting an + entire key sequence can be specified, by placing the key + sequence in double quotes. Some GNU Emacs style key escapes + can be used, as in the following example, but the special + character names are not recognized. + + "\C-u": universal-argument + "\C-x\C-r": re-read-init-file + "\e[11~": "Function Key 1" + + In the above example, 'C-u' is again bound to the function + 'universal-argument' (just as it was in the first example), + ''C-x' 'C-r'' is bound to the function 're-read-init-file', + and ' <[> <1> <1> <~>' is bound to insert the text + 'Function Key 1'. + + The following GNU Emacs style escape sequences are available when + specifying key sequences: + + '\C-' + control prefix + '\M-' + meta prefix + '\e' + an escape character + '\\' + backslash + '\"' + <">, a double quotation mark + '\'' + <'>, a single quote or apostrophe + + 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 '''. For example, + the following binding will make ''C-x' \' insert a single '\' into + the line: + "\C-x\\": "\\" + + +File: bash.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File + +8.3.2 Conditional Init 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, after any comparison operator, extends to the + end of the line; unless otherwise noted, 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 both the 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. + + 'version' + The 'version' test may be used to perform comparisons against + specific Readline versions. The 'version' expands to the + current Readline version. The set of comparison operators + includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The + version number supplied on the right side of the operator + consists of a major version number, an optional decimal point, + and an optional minor version (e.g., '7.1'). If the minor + version is omitted, it is assumed to be '0'. The operator may + be separated from the string 'version' and from the version + number argument by whitespace. The following example sets a + variable if the Readline version being used is 7.0 or newer: + $if version >= 7.0 + set show-mode-in-prompt on + $endif + + 'application' + The APPLICATION construct is used to include + application-specific settings. Each program using the + Readline library sets the APPLICATION NAME, and you 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 + + 'variable' + The VARIABLE construct provides simple equality tests for + Readline variables and values. The permitted comparison + operators are '=', '==', and '!='. The variable name must be + separated from the comparison operator by whitespace; the + operator may be separated from the value on the right hand + side by whitespace. Both string and boolean variables may be + tested. Boolean variables must be tested against the values + ON and OFF. The following example is equivalent to the + 'mode=emacs' test described above: + $if editing-mode == emacs + set show-mode-in-prompt on + $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 reads from '/etc/inputrc': + $include /etc/inputrc + + +File: bash.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File + +8.3.3 Sample Init File +---------------------- + +Here is an example of an INPUTRC file. This illustrates key binding, +variable assignment, and conditional syntax. + + # This file controls the behaviour of line input editing for + # programs that use the GNU Readline library. Existing + # programs include FTP, Bash, and GDB. + # + # You can re-read the inputrc file with C-x C-r. + # Lines beginning with '#' are comments. + # + # First, include any system-wide bindings and variable + # assignments from /etc/Inputrc + $include /etc/Inputrc + + # + # Set various bindings for emacs mode. + + set editing-mode emacs + + $if mode=emacs + + Meta-Control-h: backward-kill-word Text after the function name is ignored + + # + # Arrow keys in keypad mode + # + #"\M-OD": backward-char + #"\M-OC": forward-char + #"\M-OA": previous-history + #"\M-OB": next-history + # + # Arrow keys in ANSI mode + # + "\M-[D": backward-char + "\M-[C": forward-char + "\M-[A": previous-history + "\M-[B": next-history + # + # Arrow keys in 8 bit keypad mode + # + #"\M-\C-OD": backward-char + #"\M-\C-OC": forward-char + #"\M-\C-OA": previous-history + #"\M-\C-OB": next-history + # + # Arrow keys in 8 bit ANSI mode + # + #"\M-\C-[D": backward-char + #"\M-\C-[C": forward-char + #"\M-\C-[A": previous-history + #"\M-\C-[B": next-history + + C-q: quoted-insert + + $endif + + # An old-style binding. This happens to be the default. + TAB: complete + + # Macros that are convenient for shell interaction + $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" + # insert a backslash (testing backslash escapes + # in sequences and macros) + "\C-x\\": "\\" + # Quote the current or previous word + "\C-xq": "\eb\"\ef\"" + # Add a binding to refresh the line, which is unbound + "\C-xr": redraw-current-line + # Edit variable on current line. + "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y=" + $endif + + # use a visible bell if one is available + set bell-style visible + + # don't strip characters to 7 bits when reading + set input-meta on + + # allow iso-latin1 characters to be inserted rather + # than converted to prefix-meta sequences + set convert-meta off + + # display characters with the eighth bit set directly + # rather than as meta-prefixed characters + set output-meta on + + # if there are 150 or more possible completions for a word, + # ask whether or not the user wants to see all of them + set completion-query-items 150 + + # For FTP + $if Ftp + "\C-xg": "get \M-?" + "\C-xt": "put \M-?" + "\M-.": yank-last-arg + $endif + + +File: bash.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing + +8.4 Bindable Readline Commands +============================== + +* Menu: + +* Commands For Moving:: Moving about the line. +* Commands For History:: Getting at previous lines. +* Commands For Text:: Commands for changing text. +* Commands For Killing:: Commands for killing and yanking. +* Numeric Arguments:: Specifying numeric arguments, repeat counts. +* Commands For Completion:: Getting Readline to do the typing for you. +* Keyboard Macros:: Saving and re-executing typed characters +* Miscellaneous Commands:: Other miscellaneous commands. + +This section describes Readline commands that may be bound to key +sequences. You can list your key bindings by executing 'bind -P' or, +for a more terse format, suitable for an INPUTRC file, 'bind -p'. +(*Note Bash Builtins::.) 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". + + +File: bash.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands + +8.4.1 Commands For Moving +------------------------- + +'beginning-of-line (C-a)' + Move to the start of the current line. + +'end-of-line (C-e)' + Move to the end of the line. + +'forward-char (C-f)' + Move forward a character. + +'backward-char (C-b)' + Move back a character. + +'forward-word (M-f)' + Move forward to the end of the next word. Words are composed of + letters and digits. + +'backward-word (M-b)' + Move back to the start of the current or previous word. Words are + composed of letters and digits. + +'shell-forward-word (M-C-f)' + Move forward to the end of the next word. Words are delimited by + non-quoted shell metacharacters. + +'shell-backward-word (M-C-b)' + Move back to the start of the current or previous word. Words are + delimited by non-quoted shell metacharacters. + +'previous-screen-line ()' + Attempt to move point to the same physical screen column on the + previous physical screen line. This will not have the desired + effect if the current Readline line does not take up more than one + physical line or if point is not greater than the length of the + prompt plus the screen width. + +'next-screen-line ()' + Attempt to move point to the same physical screen column on the + next physical screen line. This will not have the desired effect + if the current Readline line does not take up more than one + physical line or if the length of the current Readline line is not + greater than the length of the prompt plus the screen width. + +'clear-display (M-C-l)' + Clear the screen and, if possible, the terminal's scrollback + buffer, then redraw the current line, leaving the current line at + the top of the screen. + +'clear-screen (C-l)' + Clear the screen, then redraw the current line, leaving the current + line at the top of the screen. + +'redraw-current-line ()' + Refresh the current line. By default, this is unbound. + + +File: bash.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands + +8.4.2 Commands For Manipulating The History +------------------------------------------- + +'accept-line (Newline or Return)' + Accept the line regardless of where the cursor is. If this line is + non-empty, add it to the history list according to the setting of + the 'HISTCONTROL' and 'HISTIGNORE' variables. If this line is a + modified history line, then restore the history line to its + original state. + +'previous-history (C-p)' + Move 'back' through the history list, fetching the previous + command. + +'next-history (C-n)' + Move 'forward' through the history list, fetching the next command. + +'beginning-of-history (M-<)' + Move to the first line in the history. + +'end-of-history (M->)' + Move to the end of the input history, i.e., the line currently + being entered. + +'reverse-search-history (C-r)' + Search backward starting at the current line and moving 'up' + through the history as necessary. This is an incremental search. + This command sets the region to the matched text and activates the + mark. + +'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. + This command sets the region to the matched text and activates the + mark. + +'non-incremental-reverse-search-history (M-p)' + Search backward starting at the current line and moving 'up' + through the history as necessary using a non-incremental search for + a string supplied by the user. The search string may match + anywhere in a history line. + +'non-incremental-forward-search-history (M-n)' + Search forward starting at the current line and moving 'down' + through the history as necessary using a non-incremental search for + a string supplied by the user. The search string may match + anywhere in a history line. + +'history-search-forward ()' + Search forward through the history for the string of characters + between the start of the current line and the point. The search + string must match at the beginning of a history line. This is a + non-incremental search. By default, this command is unbound. + +'history-search-backward ()' + Search backward through the history for the string of characters + between the start of the current line and the point. The search + string must match at the beginning of a history line. This is a + non-incremental search. By default, this command is unbound. + +'history-substring-search-forward ()' + Search forward through the history for the string of characters + between the start of the current line and the point. The search + string may match anywhere in a history line. This is a + non-incremental search. By default, this command is unbound. + +'history-substring-search-backward ()' + Search backward through the history for the string of characters + between the start of the current line and the point. The search + string may match anywhere in a history line. This is a + non-incremental search. By default, this command is unbound. + +'yank-nth-arg (M-C-y)' + Insert the first argument to the previous command (usually the + second word on the previous line) at point. With an argument N, + 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-. or M-_)' + Insert last argument to the previous command (the last word of the + previous history entry). With a numeric argument, behave exactly + like 'yank-nth-arg'. Successive calls to 'yank-last-arg' move back + through the history list, inserting the last word (or the word + specified by the argument to the first call) of each line in turn. + Any numeric argument supplied to these successive calls determines + the direction to move through the history. A negative argument + switches the direction through the history (back or forward). The + history expansion facilities are used to extract the last argument, + as if the '!$' history expansion had been specified. + +'operate-and-get-next (C-o)' + Accept the current line for return to the calling application as if + a newline had been entered, and fetch the next line relative to the + current line from the history for editing. A numeric argument, if + supplied, specifies the history entry to use instead of the current + line. + + +File: bash.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands + +8.4.3 Commands For Changing Text +-------------------------------- + +'end-of-file (usually C-d)' + The character indicating end-of-file as set, for example, by + 'stty'. If this character is read when there are no characters on + the line, and point is at the beginning of the line, Readline + interprets it as the end of input and returns EOF. + +'delete-char (C-d)' + Delete the character at point. If this function is bound to the + same character as the tty EOF character, as 'C-d' commonly is, see + above for the effects. + +'backward-delete-char (Rubout)' + Delete the character behind the cursor. A numeric argument means + to kill the characters instead of deleting them. + +'forward-backward-delete-char ()' + Delete the character under the cursor, unless the cursor is at the + end of the line, in which case the character behind the cursor is + deleted. By default, this is not bound to a key. + +'quoted-insert (C-q or C-v)' + Add the next character typed to the line verbatim. This is how to + insert key sequences like 'C-q', for example. + +'self-insert (a, b, A, 1, !, ...)' + Insert yourself. + +'bracketed-paste-begin ()' + This function is intended to be bound to the "bracketed paste" + escape sequence sent by some terminals, and such a binding is + assigned by default. It allows Readline to insert the pasted text + as a single unit without treating each character as if it had been + read from the keyboard. The characters are inserted as if each one + was bound to 'self-insert' instead of executing any editing + commands. + + Bracketed paste sets the region (the characters between point and + the mark) to the inserted text. It uses the concept of an _active + mark_: when the mark is active, Readline redisplay uses the + terminal's standout mode to denote the region. + +'transpose-chars (C-t)' + Drag the character before the cursor forward over the character at + the cursor, moving the cursor forward as well. If the insertion + point is at the end of the line, then this transposes the last two + characters of the line. Negative arguments have no effect. + +'transpose-words (M-t)' + Drag the word before point past the word after point, moving point + past that word as well. If the insertion point is at the end of + the line, this transposes the last two words on the line. + +'upcase-word (M-u)' + Uppercase the current (or following) word. With a negative + argument, uppercase the previous word, but do not move the cursor. + +'downcase-word (M-l)' + Lowercase the current (or following) word. With a negative + argument, lowercase the previous word, but do not move the cursor. + +'capitalize-word (M-c)' + Capitalize the current (or following) word. With a negative + argument, capitalize the previous word, but do not move the cursor. + +'overwrite-mode ()' + Toggle overwrite mode. With an explicit positive numeric argument, + switches to overwrite mode. With an explicit non-positive numeric + argument, switches to insert mode. This command affects only + '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. + + +File: bash.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands + +8.4.4 Killing And Yanking +------------------------- + +'kill-line (C-k)' + Kill the text from point to the end of the line. With a negative + numeric argument, kill backward from the cursor to the beginning of + the current line. + +'backward-kill-line (C-x Rubout)' + Kill backward from the cursor to the beginning of the current line. + With a negative numeric argument, kill forward from the cursor to + the end of the current line. + +'unix-line-discard (C-u)' + Kill backward from the cursor to the beginning of the current line. + +'kill-whole-line ()' + Kill all characters on the current line, no matter where point is. + By default, this is unbound. + +'kill-word (M-d)' + Kill from point to the end of the current word, or if between + words, to the end of the next word. Word boundaries are the same + as 'forward-word'. + +'backward-kill-word (M-)' + Kill the word behind point. Word boundaries are the same as + 'backward-word'. + +'shell-kill-word (M-C-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 'shell-forward-word'. + +'shell-backward-kill-word ()' + Kill the word behind point. Word boundaries are the same as + 'shell-backward-word'. + +'shell-transpose-words (M-C-t)' + Drag the word before point past the word after point, moving point + past that word as well. If the insertion point is at the end of + the line, this transposes the last two words on the line. Word + boundaries are the same as 'shell-forward-word' and + 'shell-backward-word'. + +'unix-word-rubout (C-w)' + Kill the word behind point, using white space as a word boundary. + The killed text is saved on the kill-ring. + +'unix-filename-rubout ()' + Kill the word behind point, using white space and the slash + character as the word boundaries. The killed text is saved on the + kill-ring. + +'delete-horizontal-space ()' + Delete all spaces and tabs around point. By default, this is + unbound. + +'kill-region ()' + Kill the text in the current region. By default, this command is + unbound. + +'copy-region-as-kill ()' + Copy the text in the region to the kill buffer, so it can be yanked + right away. By default, this command is unbound. + +'copy-backward-word ()' + Copy the word before point to the kill buffer. The word boundaries + are the same as 'backward-word'. By default, this command is + unbound. + +'copy-forward-word ()' + Copy the word following point to the kill buffer. The word + boundaries are the same as 'forward-word'. By default, this + command is unbound. + +'yank (C-y)' + Yank the top of the kill ring into the buffer at point. + +'yank-pop (M-y)' + Rotate the kill-ring, and yank the new top. You can only do this + if the prior command is 'yank' or 'yank-pop'. + + +File: bash.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands + +8.4.5 Specifying Numeric Arguments +---------------------------------- + +'digit-argument (M-0, M-1, ... M--)' + Add this digit to the argument already accumulating, or start a new + argument. 'M--' starts a negative argument. + +'universal-argument ()' + This is another way to specify an argument. If this command is + followed by one or more digits, optionally with a leading minus + sign, those digits define the argument. 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 nor 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. + By default, this is not bound to a key. + + +File: bash.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands + +8.4.6 Letting Readline Type For You +----------------------------------- + +'complete ()' + Attempt to perform completion on the text before point. The actual + completion performed is application-specific. Bash attempts + completion treating the text as a variable (if the 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. When + displaying completions, Readline sets the number of columns used + for display to the value of 'completion-display-width', the value + of the environment variable 'COLUMNS', or the screen width, in that + order. + +'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 , but is unbound by + default. + +'menu-complete-backward ()' + Identical to 'menu-complete', but moves backward through the list + of possible completions, as if 'menu-complete' had been given a + negative argument. + +'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-)' + Attempt completion on the text before point, comparing the text + against lines from the history list for possible completion + matches. + +'dabbrev-expand ()' + Attempt menu 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 (*note Brace Expansion::). + + +File: bash.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands + +8.4.7 Keyboard Macros +--------------------- + +'start-kbd-macro (C-x ()' + Begin saving the characters typed into the current keyboard macro. + +'end-kbd-macro (C-x ))' + Stop saving the characters typed into the current keyboard macro + and save the definition. + +'call-last-kbd-macro (C-x e)' + Re-execute the last keyboard macro defined, by making the + characters in the macro appear as if typed at the keyboard. + +'print-last-kbd-macro ()' + Print the last keboard macro defined in a format suitable for the + INPUTRC file. + + +File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands + +8.4.8 Some Miscellaneous Commands +--------------------------------- + +'re-read-init-file (C-x C-r)' + Read in the contents of the INPUTRC file, and incorporate any + bindings or variable assignments found there. + +'abort (C-g)' + Abort the current editing command and ring the terminal's bell + (subject to the setting of 'bell-style'). + +'do-lowercase-version (M-A, M-B, M-X, ...)' + If the metafied character X is upper case, run the command that is + bound to the corresponding metafied lower case character. The + behavior is undefined if X is already lower case. + +'prefix-meta ()' + Metafy the next character typed. This is for keyboards without a + meta key. Typing ' f' is equivalent to typing 'M-f'. + +'undo (C-_ or C-x C-u)' + Incremental undo, separately remembered for each line. + +'revert-line (M-r)' + Undo all changes made to this line. This is like executing the + 'undo' command enough times to get back to the beginning. + +'tilde-expand (M-&)' + Perform tilde expansion on the current word. + +'set-mark (C-@)' + Set the mark to the point. If a numeric argument is supplied, the + mark is set to that position. + +'exchange-point-and-mark (C-x C-x)' + Swap the point with the mark. The current cursor position is set + to the saved position, and the old cursor position is saved as the + mark. + +'character-search (C-])' + A character is read and point is moved to the next occurrence of + that character. A negative count searches for previous + occurrences. + +'character-search-backward (M-C-])' + A character is read and point is moved to the previous occurrence + of that character. A negative count searches for subsequent + occurrences. + +'skip-csi-sequence ()' + Read enough characters to consume a multi-key sequence such as + those defined for keys like Home and End. Such sequences begin + with a Control Sequence Indicator (CSI), usually ESC-[. If this + sequence is bound to "\e[", keys producing such sequences will have + no effect unless explicitly bound to a readline command, instead of + inserting stray characters into the editing buffer. This is + unbound by default, but usually bound to ESC-[. + +'insert-comment (M-#)' + Without a numeric argument, the value of the 'comment-begin' + variable is inserted at the beginning of the current line. If a + numeric argument is supplied, this command acts as a toggle: if 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. + +'dump-functions ()' + Print all of the functions and their key bindings to the Readline + output stream. If a numeric argument is supplied, the output is + formatted in such a way that it can be made part of an INPUTRC + file. This command is unbound by default. + +'dump-variables ()' + Print all of the settable variables and their values to the + Readline output stream. If a numeric argument is supplied, the + output is formatted in such a way that it can be made part of an + INPUTRC file. This command is unbound by default. + +'dump-macros ()' + Print all of the Readline key sequences bound to macros and the + strings they output. If a numeric argument is supplied, the output + is formatted in such a way that it can be made part of an INPUTRC + file. This command is unbound by default. + +'glob-complete-word (M-g)' + The word before point is treated as a pattern for pathname + expansion, with an asterisk implicitly appended. This pattern is + used to generate a list of matching file names for possible + completions. + +'glob-expand-word (C-x *)' + The word before point is treated as a pattern for pathname + expansion, and the list of matching file names is inserted, + replacing the word. If a numeric argument is supplied, a '*' is + appended before pathname expansion. + +'glob-list-expansions (C-x g)' + The list of expansions that would have been generated by + 'glob-expand-word' is displayed, and the line is redrawn. If a + numeric argument is supplied, a '*' is appended before pathname + expansion. + +'display-shell-version (C-x C-v)' + Display version information about the current instance of Bash. + +'shell-expand-line (M-C-e)' + Expand the line as the shell does. This performs alias and history + expansion as well as all of the shell word expansions (*note Shell + Expansions::). + +'history-expand-line (M-^)' + Perform history expansion on the current line. + +'magic-space ()' + Perform history expansion on the current line and insert a space + (*note History Interaction::). + +'alias-expand-line ()' + Perform alias expansion on the current line (*note Aliases::). + +'history-and-alias-expand-line ()' + Perform history and alias expansion on the current line. + +'insert-last-argument (M-. or M-_)' + A synonym for 'yank-last-arg'. + +'edit-and-execute-command (C-x C-e)' + Invoke an editor on the current command line, and execute the + result as shell commands. Bash attempts to invoke '$VISUAL', + '$EDITOR', and 'emacs' as the editor, in that order. + + +File: bash.info, Node: Readline vi Mode, Next: Programmable Completion, Prev: Bindable Readline Commands, Up: Command Line Editing + +8.5 Readline vi Mode +==================== + +While the Readline library does not have a full set of 'vi' editing +functions, it does contain enough to allow simple editing of the line. +The Readline 'vi' mode behaves as specified in the POSIX standard. + + In order to switch interactively between 'emacs' and 'vi' editing +modes, use the 'set -o emacs' and 'set -o vi' commands (*note The Set +Builtin::). The Readline default is 'emacs' mode. + + When you enter a line in 'vi' mode, you are already placed in +'insertion' mode, as if you had typed an 'i'. Pressing switches +you into 'command' mode, where you can edit the text of the line with +the standard 'vi' movement keys, move to previous history lines with 'k' +and subsequent lines with 'j', and so forth. + + +File: bash.info, Node: Programmable Completion, Next: Programmable Completion Builtins, Prev: Readline vi Mode, Up: Command Line Editing + +8.6 Programmable Completion +=========================== + +When word completion is attempted for an argument to a command for which +a completion specification (a COMPSPEC) has been defined using the +'complete' builtin (*note Programmable Completion Builtins::), 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 the empty +string (completion attempted at the beginning of an empty line), any +compspec defined with the '-E' option to 'complete' is used. If the +command word is a full pathname, a compspec for the full pathname is +searched for first. If no compspec is found for the full pathname, an +attempt is made to find a compspec for the portion following the final +slash. If those searches do not result in a compspec, any compspec +defined with the '-D' option to 'complete' is used as the default. If +there is no default compspec, Bash attempts alias expansion on the +command word as a final resort, and attempts to find a compspec for the +command word from any successful expansion + + Once a compspec has been found, it is used to generate the list of +matching words. If a compspec is not found, the default Bash completion +described above (*note Commands For Completion::) 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. *Note Bash +Variables::, for a description of 'FIGNORE'. + + 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' shell 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 within the +string, in order to provide a mechanism for the words to contain shell +metacharacters or characters in the value of 'IFS'. Each word is then +expanded using brace expansion, tilde expansion, parameter and variable +expansion, command substitution, and arithmetic expansion, as described +above (*note Shell Expansions::). The results are split using the rules +described above (*note 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', 'COMP_POINT', +'COMP_KEY', and 'COMP_TYPE' variables are assigned values as described +above (*note Bash Variables::). If a shell function is being invoked, +the 'COMP_WORDS' and 'COMP_CWORD' variables are also set. When the +function or command is invoked, the first argument ($1) is the name of +the command whose arguments are being completed, the second argument +($2) is the word being completed, and the third argument ($3) is the +word preceding the word being completed on the current command line. No +filtering of the generated completions against the word being completed +is performed; the function or command has complete freedom in generating +the matches. + + Any function specified with '-F' is invoked first. The function may +use any of the shell facilities, including the 'compgen' and 'compopt' +builtins described below (*note Programmable Completion Builtins::), to +generate the matches. It must put the possible completions in the +'COMPREPLY' array variable, one per array element. + + 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. If the 'nocasematch' shell option +(see the description of 'shopt' in *note The Shopt Builtin::) is +enabled, the match is performed without regard to the case of alphabetic +characters. + + 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 default Bash +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. + + There is some support for dynamically modifying completions. This is +most useful when used in combination with a default completion specified +with '-D'. It's possible for shell functions executed as completion +handlers to indicate that completion should be retried by returning an +exit status of 124. If a shell function returns 124, and changes the +compspec associated with the command on which completion is being +attempted (supplied as the first argument when the function is +executed), programmable completion restarts from the beginning, with an +attempt to find a new compspec for that command. This allows a set of +completions to be built dynamically as completion is attempted, rather +than being loaded all at once. + + For instance, assuming that there is a library of compspecs, each +kept in a file corresponding to the name of the command, the following +default completion function would load completions dynamically: + + _completion_loader() + { + . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 + } + complete -D -F _completion_loader -o bashdefault -o default + + +File: bash.info, Node: Programmable Completion Builtins, Next: A Programmable Completion Example, Prev: Programmable Completion, Up: Command Line Editing + +8.7 Programmable Completion Builtins +==================================== + +Three builtin commands are available to manipulate the programmable +completion facilities: one to specify how the arguments to a particular +command are to be completed, and two to modify the completion as it is +happening. + +'compgen' + 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' + complete [-abcdefgjksuv] [-o COMP-OPTION] [-DEI] [-A ACTION] [-G GLOBPAT] + [-W WORDLIST] [-F FUNCTION] [-C COMMAND] [-X FILTERPAT] + [-P PREFIX] [-S SUFFIX] NAME [NAME ...] + complete -pr [-DEI] [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 '-D' option indicates that other + supplied options and actions should apply to the "default" command + completion; that is, completion attempted on a command for which no + completion has previously been defined. The '-E' option indicates + that other supplied options and actions should apply to "empty" + command completion; that is, completion attempted on a blank line. + The '-I' option indicates that other supplied options and actions + should apply to completion on the initial non-assignment word on + the line, or after a command delimiter such as ';' or '|', which is + usually command name completion. If multiple options are supplied, + the '-D' option takes precedence over '-E', and both take + precedence over '-I'. If any of '-D', '-E', or '-I' are supplied, + any other NAME arguments are ignored; these completions only apply + to the case specified by the option. + + The process of applying these completion specifications when word + completion is attempted is described above (*note 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, quoting special + characters, or suppressing trailing spaces). This option + is intended to be used with shell functions specified + with '-F'. + + 'noquote' + Tell Readline not to quote the completed words if they + are filenames (quoting filenames is the default). + + 'nosort' + Tell Readline not to sort the list of possible + completions alphabetically. + + '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 (*note Bindable Readline + Commands::). + + '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 (*note Bash + Builtins::). + + 'hostname' + Hostnames, as taken from the file specified by the + 'HOSTFILE' shell variable (*note Bash Variables::). + + '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 + (*note The Set Builtin::). + + 'shopt' + Shell option names as accepted by the 'shopt' builtin + (*note Bash Builtins::). + + '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'. + + '-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 is executed, $1 is the name of the + command whose arguments are being completed, $2 is the word + being completed, and $3 is the word preceding the word being + completed, as described above (*note Programmable + Completion::). When it finishes, the possible completions are + retrieved from the value of the 'COMPREPLY' array variable. + + '-G GLOBPAT' + The filename expansion pattern GLOBPAT is expanded to generate + the possible completions. + + '-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. + + '-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. + + '-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. + + 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. + +'compopt' + compopt [-o OPTION] [-DEI] [+o OPTION] [NAME] + Modify completion options for each NAME according to the OPTIONs, + or for the currently-executing completion if no NAMEs are supplied. + If no OPTIONs are given, display the completion options for each + NAME or the current completion. The possible values of OPTION are + those valid for the 'complete' builtin described above. The '-D' + option indicates that other supplied options should apply to the + "default" command completion; that is, completion attempted on a + command for which no completion has previously been defined. The + '-E' option indicates that other supplied options should apply to + "empty" command completion; that is, completion attempted on a + blank line. The '-I' option indicates that other supplied options + should apply to completion on the initial non-assignment word on + the line, or after a command delimiter such as ';' or '|', which is + usually command name completion. + + If multiple options are supplied, the '-D' option takes precedence + over '-E', and both take precedence over '-I' + + The return value is true unless an invalid option is supplied, an + attempt is made to modify the options for a NAME for which no + completion specification exists, or an output error occurs. + + +File: bash.info, Node: A Programmable Completion Example, Prev: Programmable Completion Builtins, Up: Command Line Editing + +8.8 A Programmable Completion Example +===================================== + +The most common way to obtain additional completion functionality beyond +the default actions 'complete' and 'compgen' provide is to use a shell +function and bind it to a particular command using 'complete -F'. + + The following function provides completions for the 'cd' builtin. It +is a reasonably good example of what shell functions must do when used +for completion. This function uses the word passed as '$2' to determine +the directory name to complete. You can also use the 'COMP_WORDS' array +variable; the current word is indexed by the 'COMP_CWORD' variable. + + The function relies on the 'complete' and 'compgen' builtins to do +much of the work, adding only the things that the Bash 'cd' does beyond +accepting basic directory names: tilde expansion (*note Tilde +Expansion::), searching directories in $CDPATH, which is described above +(*note Bourne Shell Builtins::), and basic support for the 'cdable_vars' +shell option (*note The Shopt Builtin::). '_comp_cd' modifies the value +of IFS so that it contains only a newline to accommodate file names +containing spaces and tabs - 'compgen' prints the possible completions +it generates one per line. + + Possible completions go into the COMPREPLY array variable, one +completion per array element. The programmable completion system +retrieves the completions from there when the function returns. + + # A completion function for the cd builtin + # based on the cd completion function from the bash_completion package + _comp_cd() + { + local IFS=$' \t\n' # normalize IFS + local cur _skipdot _cdpath + local i j k + + # Tilde expansion, which also expands tilde to full pathname + case "$2" in + \~*) eval cur="$2" ;; + *) cur=$2 ;; + esac + + # no cdpath or absolute pathname -- straight directory completion + if [[ -z "${CDPATH:-}" ]] || [[ "$cur" == @(./*|../*|/*) ]]; then + # compgen prints paths one per line; could also use while loop + IFS=$'\n' + COMPREPLY=( $(compgen -d -- "$cur") ) + IFS=$' \t\n' + # CDPATH+directories in the current directory if not in CDPATH + else + IFS=$'\n' + _skipdot=false + # preprocess CDPATH to convert null directory names to . + _cdpath=${CDPATH/#:/.:} + _cdpath=${_cdpath//::/:.:} + _cdpath=${_cdpath/%:/:.} + for i in ${_cdpath//:/$'\n'}; do + if [[ $i -ef . ]]; then _skipdot=true; fi + k="${#COMPREPLY[@]}" + for j in $( compgen -d -- "$i/$cur" ); do + COMPREPLY[k++]=${j#$i/} # cut off directory + done + done + $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") ) + IFS=$' \t\n' + fi + + # variable names if appropriate shell option set and no completions + if shopt -q cdable_vars && [[ ${#COMPREPLY[@]} -eq 0 ]]; then + COMPREPLY=( $(compgen -v -- "$cur") ) + fi + + return 0 + } + + We install the completion function using the '-F' option to +'complete': + + # Tell readline to quote appropriate and append slashes to directories; + # use the bash default completion for other arguments + complete -o filenames -o nospace -o bashdefault -F _comp_cd cd + +Since we'd like Bash and Readline to take care of some of the other +details for us, we use several other options to tell Bash and Readline +what to do. The '-o filenames' option tells Readline that the possible +completions should be treated as filenames, and quoted appropriately. +That option will also cause Readline to append a slash to filenames it +can determine are directories (which is why we might want to extend +'_comp_cd' to append a slash if we're using directories found via +CDPATH: Readline can't tell those completions are directories). The '-o +nospace' option tells Readline to not append a space character to the +directory name, in case we want to append to it. The '-o bashdefault' +option brings in the rest of the "Bash default" completions - possible +completion that Bash adds to the default Readline set. These include +things like command name completion, variable completion for words +beginning with '$' or '${', completions containing pathname expansion +patterns (*note Filename Expansion::), and so on. + + Once installed using 'complete', '_comp_cd' will be called every time +we attempt word completion for a 'cd' command. + + Many more examples - an extensive collection of completions for most +of the common GNU, Unix, and Linux commands - are available as part of +the bash_completion project. This is installed by default on many +GNU/Linux distributions. Originally written by Ian Macdonald, the +project now lives at . There +are ports for other systems such as Solaris and Mac OS X. + + An older version of the bash_completion package is distributed with +bash in the 'examples/complete' subdirectory. + + +File: bash.info, Node: Using History Interactively, Next: Installing Bash, Prev: Command Line Editing, Up: Top + +9 Using History Interactively +***************************** + +This chapter describes how to use the GNU History Library interactively, +from a user's standpoint. It should be considered a user's guide. For +information on using the GNU History Library in other programs, see the +GNU Readline Library Manual. + +* Menu: + +* Bash History Facilities:: How Bash lets you manipulate your command + history. +* Bash History Builtins:: The Bash builtin commands that manipulate + the command history. +* History Interaction:: What it feels like using History as a user. + + +File: bash.info, Node: Bash History Facilities, Next: Bash History Builtins, Up: Using History Interactively + +9.1 Bash History Facilities +=========================== + +When the '-o history' option to the 'set' builtin is enabled (*note The +Set Builtin::), the shell provides access to the "command history", the +list of commands previously typed. The value of the 'HISTSIZE' shell +variable is used as the 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 but after history expansion is performed, subject to +the values of the shell variables 'HISTIGNORE' and 'HISTCONTROL'. + + When the shell starts up, the history is initialized from the file +named by the 'HISTFILE' variable (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 the +'HISTFILESIZE' variable. When a shell with history enabled exits, the +last '$HISTSIZE' lines are copied from the history list to the file +named by '$HISTFILE'. If the 'histappend' shell option is set (*note +Bash Builtins::), 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 unset, or set to null, a +non-numeric value, or a numeric value less than zero, the history file +is not truncated. + + If the 'HISTTIMEFORMAT' is set, the time stamp information associated +with each history entry is written to the history file, marked with the +history comment character. When the history file is read, lines +beginning with the history comment character followed immediately by a +digit are interpreted as timestamps for the following history entry. + + The builtin command 'fc' may be used to list or edit and re-execute a +portion of the history list. The 'history' builtin may be used to +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 (*note Commands For +History::). + + 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. The 'shopt' builtin is used to set these +options. *Note The Shopt Builtin::, for a description of 'shopt'. + + +File: bash.info, Node: Bash History Builtins, Next: History Interaction, Prev: Bash History Facilities, Up: Using History Interactively + +9.2 Bash History Builtins +========================= + +Bash provides two builtin commands which manipulate the history list and +history file. + +'fc' + fc [-e ENAME] [-lnr] [FIRST] [LAST] + fc -s [PAT=REP] [COMMAND] + + The first form selects a range of commands from FIRST to LAST from + the history list and displays or edits and re-executes them. Both + FIRST and LAST may be specified as a string (to locate the most + recent 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). + + When listing, a FIRST or LAST of 0 is equivalent to -1 and -0 is + equivalent to the current command (usually the 'fc' command); + otherwise 0 is equivalent to -1 and -0 is invalid. + + If LAST is not specified, it is set to FIRST. If FIRST is not + specified, it is set to the previous command for editing and -16 + for listing. If the '-l' flag is given, the commands are listed on + standard output. The '-n' flag suppresses the command numbers when + listing. The '-r' flag reverses the order of the listing. + Otherwise, the editor given by ENAME is invoked on a file + containing those commands. If ENAME is not given, the value of the + following variable expansion is used: '${FCEDIT:-${EDITOR:-vi}}'. + This says to use the value of the 'FCEDIT' variable if set, or the + value of the 'EDITOR' variable if that is set, or 'vi' if neither + is set. When editing is complete, the edited commands are echoed + and executed. + + In the second form, COMMAND is re-executed after each instance of + PAT in the selected command is replaced by REP. COMMAND is + interpreted the same as FIRST above. + + A useful alias to use with the 'fc' command is 'r='fc -s'', so that + typing 'r cc' runs the last command beginning with 'cc' and typing + 'r' re-executes the last command (*note Aliases::). + +'history' + history [N] + history -c + history -d OFFSET + history -d START-END + history [-anrw] [FILENAME] + history -ps ARG + + With no options, display the history list with line numbers. Lines + prefixed 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 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. + + Options, if supplied, have the following meanings: + + '-c' + Clear the history list. This may be combined with the other + options to replace the history list completely. + + '-d OFFSET' + Delete the history entry at position OFFSET. If OFFSET is + positive, it should be specified as it appears when the + history is displayed. If OFFSET is negative, it is + interpreted as relative to one greater than the last history + position, so negative indices count back from the end of the + history, and an index of '-1' refers to the current 'history + -d' command. + + '-d START-END' + Delete the history entries between positions START and END, + inclusive. Positive and negative values for START and END are + interpreted as described above. + + '-a' + Append the new history lines to the history file. These are + history lines entered since the beginning of the current Bash + session, but not already appended to the history file. + + '-n' + Append the history lines not already read from the history + file to the current history list. These are lines appended to + the history file since the beginning of the current Bash + session. + + '-r' + Read the history file and append its contents to the history + list. + + '-w' + Write out the current history list to the history file. + + '-p' + Perform history substitution on the ARGs and display the + result on the standard output, without storing the results in + the history list. + + '-s' + The ARGs are added to the end of the history list as a single + entry. + + When any of the '-w', '-r', '-a', or '-n' options is used, if + FILENAME is given, then it is used as the history file. If not, + then the value of the 'HISTFILE' variable is used. + + +File: bash.info, Node: History Interaction, Prev: Bash History Builtins, Up: Using History Interactively + +9.3 History Expansion +===================== + +The History library provides a history expansion feature that is similar +to the history expansion provided by 'csh'. This section describes the +syntax used to manipulate the history information. + + 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, and is performed on each +line individually. Bash attempts to inform the history expansion +functions about quoting still in effect from previous lines. + + History expansion takes place in two parts. The first is to +determine which line from the history list should be used during +substitution. The second is to select portions of that line for +inclusion into the current one. The line selected from the history is +called the "event", and the portions of that line that are acted upon +are called "words". Various "modifiers" are available to manipulate the +selected words. The line is broken into words in the same fashion that +Bash does, so that several words surrounded by quotes are considered one +word. History expansions are introduced by the appearance of the +history expansion character, which is '!' by default. + + History expansion implements shell-like quoting conventions: a +backslash can be used to remove the special handling for the next +character; single quotes enclose verbatim sequences of characters, and +can be used to inhibit history expansion; and characters enclosed within +double quotes may be subject to history expansion, since backslash can +escape the history expansion character, but single quotes may not, since +they are not treated specially within double quotes. + + When using the shell, only '\' and ''' may be used to escape the +history expansion character, but the history expansion character is also +treated as quoted if it immediately precedes the closing double quote in +a double-quoted string. + + Several shell options settable with the 'shopt' builtin (*note The +Shopt Builtin::) may be used to tailor the behavior of history +expansion. If the 'histverify' shell option is enabled, 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 expansion +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. This is most useful in conjunction with Readline. + + The shell allows control of the various characters used by the +history expansion mechanism with the 'histchars' variable, as explained +above (*note Bash Variables::). The shell uses the history comment +character to mark history timestamps when writing the history file. + +* Menu: + +* Event Designators:: How to specify which history line to use. +* Word Designators:: Specifying which words are of interest. +* Modifiers:: Modifying the results of substitution. + + +File: bash.info, Node: Event Designators, Next: Word Designators, Up: History Interaction + +9.3.1 Event Designators +----------------------- + +An event designator is a reference to a command line entry in the +history list. Unless the reference is absolute, events are relative to +the current position in the history list. + +'!' + Start a history substitution, except when followed by a space, tab, + the end of the line, '=' or '(' (when the 'extglob' shell option is + enabled using the 'shopt' builtin). + +'!N' + Refer to command line N. + +'!-N' + Refer to the command N lines back. + +'!!' + Refer to the previous command. This is a synonym for '!-1'. + +'!STRING' + Refer to the most recent command preceding the current position in + the history list starting with STRING. + +'!?STRING[?]' + Refer to the most recent command preceding the current position in + the history list containing STRING. The trailing '?' may be + omitted if the STRING is followed immediately by a newline. If + STRING is missing, the string from the most recent search is used; + it is an error if there is no previous search string. + +'^STRING1^STRING2^' + Quick Substitution. Repeat the last command, replacing STRING1 + with STRING2. Equivalent to '!!:s^STRING1^STRING2^'. + +'!#' + The entire command line typed so far. + + +File: bash.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction + +9.3.2 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. + + For example, + +'!!' + designates the preceding command. When you type this, the + preceding command is repeated in toto. + +'!!:$' + designates the last argument of the preceding command. This may be + shortened to '!$'. + +'!fi:2' + designates the second argument of the most recent command starting + with the letters 'fi'. + + Here are the word designators: + +'0 (zero)' + The '0'th word. For many applications, this is the command word. + +'N' + The Nth word. + +'^' + The first argument; that is, word 1. + +'$' + The last argument. + +'%' + The first word matched by the most recent '?STRING?' search, if the + search string begins with a character that is part of a word. + +'X-Y' + A range of words; '-Y' abbreviates '0-Y'. + +'*' + All of the words, except the '0'th. 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 'x' is + missing, it defaults to 0. + + If a word designator is supplied without an event specification, the +previous command is used as the event. + + +File: bash.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction + +9.3.3 Modifiers +--------------- + +After the optional word designator, you can add a sequence of one or +more of the following modifiers, each preceded by a ':'. These modify, +or edit, the word or words selected from the history event. + +'h' + Remove a trailing pathname component, leaving only the head. + +'t' + Remove all leading pathname components, leaving the tail. + +'r' + Remove a trailing suffix of the form '.SUFFIX', 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 + spaces, tabs, and newlines. The 'q' and 'x' modifiers are mutually + exclusive; the last one supplied is used. + +'s/OLD/NEW/' + Substitute NEW for the first occurrence of OLD in the event line. + Any character may be used as the delimiter in place of '/'. 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. If NEW is is null, each + matching OLD is deleted. The final delimiter is optional if it is + the last character on the input line. + +'&' + Repeat the previous substitution. + +'g' +'a' + Cause changes to be applied over the entire event line. Used in + conjunction with 's', as in 'gs/OLD/NEW/', or with '&'. + +'G' + Apply the following 's' or '&' modifier once to each word in the + event. + + +File: bash.info, Node: Installing Bash, Next: Reporting Bugs, Prev: Using History Interactively, Up: Top + +10 Installing Bash +****************** + +This chapter provides basic instructions for installing Bash on the +various supported platforms. The distribution supports the GNU +operating systems, nearly every version of Unix, and several non-Unix +systems such as BeOS and Interix. Other independent ports exist for +MS-DOS, OS/2, and Windows platforms. + +* Menu: + +* Basic Installation:: Installation instructions. +* Compilers and Options:: How to set special options for various + systems. +* Compiling For Multiple Architectures:: How to compile Bash for more + than one kind of system from + the same source tree. +* Installation Names:: How to set the various paths used by the installation. +* Specifying the System Type:: How to configure Bash for a particular system. +* Sharing Defaults:: How to share default configuration values among GNU + programs. +* Operation Controls:: Options recognized by the configuration program. +* Optional Features:: How to enable and disable optional features when + building Bash. + + +File: bash.info, Node: Basic Installation, Next: Compilers and Options, Up: Installing Bash + +10.1 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-4.2$ ./configure --help + +at the Bash prompt in your Bash source directory. + + If you want to build Bash in a directory separate from the source +directory - to build for multiple architectures, for example - just use +the full path to the configure script. The following commands will +build bash in a directory under '/usr/local/build' from the source code +in '/usr/local/src/bash-4.4': + + mkdir /usr/local/build/bash-4.4 + cd /usr/local/build/bash-4.4 + bash /usr/local/src/bash-4.4/configure + make + + See *note Compiling For Multiple Architectures:: for more information +about building in a directory separate from the source. + + 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.ac' is used to create 'configure' by a program +called Autoconf. You only need 'configure.ac' if you want to change it +or regenerate 'configure' using a newer version of Autoconf. If you do +this, make sure you are using Autoconf version 2.50 or newer. + + 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'. + + +File: bash.info, Node: Compilers and Options, Next: Compiling For Multiple Architectures, Prev: Basic Installation, Up: Installing Bash + +10.2 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. + + +File: bash.info, Node: Compiling For Multiple Architectures, Next: Installation Names, Prev: Compilers and Options, Up: Installing Bash + +10.3 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 (*note Basic Installation::). 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. + + +File: bash.info, Node: Installation Names, Next: Specifying the System Type, Prev: Compiling For Multiple Architectures, Up: Installing Bash + +10.4 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. + + +File: bash.info, Node: Specifying the System Type, Next: Sharing Defaults, Prev: Installation Names, Up: Installing Bash + +10.5 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. + + +File: bash.info, Node: Sharing Defaults, Next: Operation Controls, Prev: Specifying the System Type, Up: Installing Bash + +10.6 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. + + +File: bash.info, Node: Operation Controls, Next: Optional Features, Prev: Sharing Defaults, Up: Installing Bash + +10.7 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. + + +File: bash.info, Node: Optional Features, Prev: Operation Controls, Up: Installing Bash + +10.8 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.unix.org/version2/whatsnew/lfs20mar.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', +'direxpand-default', and 'xpg-echo-default' are enabled by default, +unless the operating system does not provide the necessary support. + +'--enable-alias' + Allow alias expansion and include the 'alias' and 'unalias' + 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-casemod-attributes' + Include support for case-modifying attributes in the 'declare' + builtin and assignment statements. Variables with the UPPERCASE + attribute, for example, will have their values converted to + uppercase upon assignment. + +'--enable-casemod-expansion' + Include support for case-modifying word expansions. + +'--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-coprocesses' + Include support for coprocesses and the 'coproc' reserved word + (*note Pipelines::). + +'--enable-debugger' + Include support for the bash debugger (distributed separately). + +'--enable-dev-fd-stat-broken' + If calling 'stat' on /dev/fd/N returns different results than + calling 'fstat' on file descriptor N, supply this option to enable + a workaround. This has implications for conditional commands that + test file attributes. + +'--enable-direxpand-default' + Cause the 'direxpand' shell option (*note The Shopt Builtin::) to + be enabled by default when the shell starts. It is normally + disabled by default. + +'--enable-directory-stack' + Include support for a 'csh'-like directory stack and the 'pushd', + 'popd', and 'dirs' builtins (*note The Directory Stack::). + +'--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-extended-glob-default' + Set the default value of the EXTGLOB shell option described above + under *note The Shopt Builtin:: to be enabled. + +'--enable-function-import' + Include support for importing function definitions exported by + another instance of the shell from the environment. This option is + enabled by default. + +'--enable-glob-asciirange-default' + Set the default value of the GLOBASCIIRANGES shell option described + above under *note The Shopt Builtin:: to be enabled. This controls + the behavior of character ranges when used in pattern matching + bracket expressions. + +'--enable-help-builtin' + Include the 'help' builtin, which displays help on shell builtins + and variables (*note Bash Builtins::). + +'--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 '$PS0', '$PS1', '$PS2', and '$PS4' prompt + strings. See *note Controlling the Prompt::, for a complete list + of prompt string escape sequences. + +'--enable-readline' + Include support for command-line editing and history with the Bash + 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' compound command, 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. + + +File: bash.info, Node: Reporting Bugs, Next: Major Differences From The Bourne Shell, Prev: Installing Bash, Up: Top + +Appendix A Reporting Bugs +************************* + +Please report all bugs you find in Bash. 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 of Bash is always available for FTP from +. + + 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 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 Bash. + * A description of the bug behaviour. + * A short script or 'recipe' which exercises the bug and may be used + to reproduce it. + +'bashbug' inserts the first three items automatically into the template +it provides for filing a bug report. + + Please send all reports concerning this manual to . + + +File: bash.info, Node: Major Differences From The Bourne Shell, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top + +Appendix B Major Differences From The Bourne Shell +************************************************** + +Bash implements essentially the same grammar, parameter and variable +expansion, redirection, and quoting as the Bourne Shell. Bash uses the +POSIX standard as the specification of how these features are to be +implemented. There are some differences between the traditional Bourne +shell and Bash; this section quickly details the differences of +significance. A number of these differences are explained in greater +depth in previous sections. This section uses the version of 'sh' +included in SVR4.2 (the last version of the historical Bourne shell) as +the baseline reference. + + * Bash is POSIX-conformant, even where the POSIX specification + differs from traditional 'sh' behavior (*note Bash POSIX Mode::). + + * Bash has multi-character invocation options (*note Invoking + Bash::). + + * Bash has command-line editing (*note Command Line Editing::) and + the 'bind' builtin. + + * Bash provides a programmable word completion mechanism (*note + Programmable Completion::), and builtin commands 'complete', + 'compgen', and 'compopt', to manipulate it. + + * Bash has command history (*note Bash History Facilities::) and the + 'history' and 'fc' builtins to manipulate it. The Bash history + list maintains timestamp information and uses the value of the + 'HISTTIMEFORMAT' variable to display it. + + * Bash implements 'csh'-like history expansion (*note History + Interaction::). + + * Bash has one-dimensional array variables (*note Arrays::), and the + appropriate variable expansions and assignment syntax to use them. + Several of the Bash builtins take options to act on arrays. Bash + provides a number of built-in array variables. + + * The '$'...'' quoting syntax, which expands ANSI-C backslash-escaped + characters in the text between the single quotes, is supported + (*note ANSI-C Quoting::). + + * Bash supports the '$"..."' quoting syntax to do locale-specific + translation of the characters between the double quotes. The '-D', + '--dump-strings', and '--dump-po-strings' invocation options list + the translatable strings found in a script (*note Locale + Translation::). + + * Bash implements the '!' keyword to negate the return value of a + pipeline (*note Pipelines::). Very useful when an 'if' statement + needs to act only if a test fails. The Bash '-o pipefail' option + to 'set' will cause a pipeline to return a failure status if any + command fails. + + * Bash has the 'time' reserved word and command timing (*note + Pipelines::). The display of the timing statistics may be + controlled with the 'TIMEFORMAT' variable. + + * Bash implements the 'for (( EXPR1 ; EXPR2 ; EXPR3 ))' arithmetic + for command, similar to the C language (*note Looping + Constructs::). + + * Bash includes the 'select' compound command, which allows the + generation of simple menus (*note Conditional Constructs::). + + * Bash includes the '[[' compound command, which makes conditional + testing part of the shell grammar (*note Conditional Constructs::), + including optional regular expression matching. + + * Bash provides optional case-insensitive matching for the 'case' and + '[[' constructs. + + * Bash includes brace expansion (*note Brace Expansion::) and tilde + expansion (*note Tilde Expansion::). + + * Bash implements command aliases and the 'alias' and 'unalias' + builtins (*note Aliases::). + + * Bash provides shell arithmetic, the '((' compound command (*note + Conditional Constructs::), and arithmetic expansion (*note Shell + Arithmetic::). + + * Variables present in the shell's initial environment are + automatically exported to child processes. The Bourne shell does + not normally do this unless the variables are explicitly marked + using the 'export' command. + + * Bash supports the '+=' assignment operator, which appends to the + value of the variable named on the left hand side. + + * Bash includes the POSIX pattern removal '%', '#', '%%' and '##' + expansions to remove leading or trailing substrings from variable + values (*note Shell Parameter Expansion::). + + * The expansion '${#xx}', which returns the length of '${xx}', is + supported (*note Shell Parameter Expansion::). + + * The expansion '${var:'OFFSET'[:'LENGTH']}', which expands to the + substring of 'var''s value of length LENGTH, beginning at OFFSET, + is present (*note Shell Parameter Expansion::). + + * The expansion '${var/[/]'PATTERN'[/'REPLACEMENT']}', which matches + PATTERN and replaces it with REPLACEMENT in the value of 'var', is + available (*note Shell Parameter Expansion::). + + * The expansion '${!PREFIX*}' expansion, which expands to the names + of all shell variables whose names begin with PREFIX, is available + (*note Shell Parameter Expansion::). + + * Bash has INDIRECT variable expansion using '${!word}' (*note Shell + Parameter Expansion::). + + * Bash can expand positional parameters beyond '$9' using '${NUM}'. + + * The POSIX '$()' form of command substitution is implemented (*note + Command Substitution::), and preferred to the Bourne shell's '``' + (which is also implemented for backwards compatibility). + + * Bash has process substitution (*note Process Substitution::). + + * Bash automatically assigns variables that provide information about + the current user ('UID', 'EUID', and 'GROUPS'), the current host + ('HOSTTYPE', 'OSTYPE', 'MACHTYPE', and 'HOSTNAME'), and the + instance of Bash that is running ('BASH', 'BASH_VERSION', and + 'BASH_VERSINFO'). *Note Bash Variables::, for details. + + * The 'IFS' variable is used to split only the results of expansion, + not all words (*note Word Splitting::). This closes a longstanding + shell security hole. + + * The filename expansion bracket expression code uses '!' and '^' to + negate the set of characters between the brackets. The Bourne + shell uses only '!'. + + * Bash implements the full set of POSIX filename expansion operators, + including CHARACTER CLASSES, EQUIVALENCE CLASSES, and COLLATING + SYMBOLS (*note Filename Expansion::). + + * Bash implements extended pattern matching features when the + 'extglob' shell option is enabled (*note Pattern Matching::). + + * It is possible to have a variable and a function with the same + name; 'sh' does not separate the two name spaces. + + * Bash functions are permitted to have local variables using the + 'local' builtin, and thus useful recursive functions may be written + (*note Bash Builtins::). + + * Variable assignments preceding commands affect only that command, + even builtins and functions (*note Environment::). In 'sh', all + variable assignments preceding commands are global unless the + command is executed from the file system. + + * Bash performs filename expansion on filenames specified as operands + to input and output redirection operators (*note Redirections::). + + * Bash contains the '<>' redirection operator, allowing a file to be + opened for both reading and writing, and the '&>' redirection + operator, for directing standard output and standard error to the + same file (*note Redirections::). + + * Bash includes the '<<<' redirection operator, allowing a string to + be used as the standard input to a command. + + * Bash implements the '[n]<&WORD' and '[n]>&WORD' redirection + operators, which move one file descriptor to another. + + * Bash treats a number of filenames specially when they are used in + redirection operators (*note Redirections::). + + * Bash can open network connections to arbitrary machines and + services with the redirection operators (*note Redirections::). + + * The 'noclobber' option is available to avoid overwriting existing + files with output redirection (*note The Set Builtin::). The '>|' + redirection operator may be used to override 'noclobber'. + + * The Bash 'cd' and 'pwd' builtins (*note Bourne Shell Builtins::) + each take '-L' and '-P' options to switch between logical and + physical modes. + + * Bash allows a function to override a builtin with the same name, + and provides access to that builtin's functionality within the + function via the 'builtin' and 'command' builtins (*note Bash + Builtins::). + + * The 'command' builtin allows selective disabling of functions when + command lookup is performed (*note Bash Builtins::). + + * Individual builtins may be enabled or disabled using the 'enable' + builtin (*note Bash Builtins::). + + * The Bash 'exec' builtin takes additional options that allow users + to control the contents of the environment passed to the executed + command, and what the zeroth argument to the command is to be + (*note Bourne Shell Builtins::). + + * Shell functions may be exported to children via the environment + using 'export -f' (*note Shell Functions::). + + * The Bash 'export', 'readonly', and 'declare' builtins can take a + '-f' option to act on shell functions, a '-p' option to display + variables with various attributes set in a format that can be used + as shell input, a '-n' option to remove various variable + attributes, and 'name=value' arguments to set variable attributes + and values simultaneously. + + * The Bash 'hash' builtin allows a name to be associated with an + arbitrary filename, even when that filename cannot be found by + searching the '$PATH', using 'hash -p' (*note Bourne Shell + Builtins::). + + * Bash includes a 'help' builtin for quick reference to shell + facilities (*note Bash Builtins::). + + * The 'printf' builtin is available to display formatted output + (*note Bash Builtins::). + + * The Bash 'read' builtin (*note Bash Builtins::) will read a line + ending in '\' with the '-r' option, and will use the 'REPLY' + variable as a default if no non-option arguments are supplied. The + Bash 'read' builtin also accepts a prompt string with the '-p' + option and will use Readline to obtain the line when given the '-e' + option. The 'read' builtin also has additional options to control + input: the '-s' option will turn off echoing of input characters as + they are read, the '-t' option will allow 'read' to time out if + input does not arrive within a specified number of seconds, the + '-n' option will allow reading only a specified number of + characters rather than a full line, and the '-d' option will read + until a particular character rather than newline. + + * The 'return' builtin may be used to abort execution of scripts + executed with the '.' or 'source' builtins (*note Bourne Shell + Builtins::). + + * Bash includes the 'shopt' builtin, for finer control of shell + optional capabilities (*note The Shopt Builtin::), and allows these + options to be set and unset at shell invocation (*note Invoking + Bash::). + + * Bash has much more optional behavior controllable with the 'set' + builtin (*note The Set Builtin::). + + * The '-x' ('xtrace') option displays commands other than simple + commands when performing an execution trace (*note The Set + Builtin::). + + * The 'test' builtin (*note Bourne Shell Builtins::) is slightly + different, as it implements the POSIX algorithm, which specifies + the behavior based on the number of arguments. + + * Bash includes the 'caller' builtin, which displays the context of + any active subroutine call (a shell function or a script executed + with the '.' or 'source' builtins). This supports the bash + debugger. + + * The 'trap' builtin (*note Bourne Shell Builtins::) allows a 'DEBUG' + pseudo-signal specification, similar to 'EXIT'. Commands specified + with a 'DEBUG' trap are 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. + The 'DEBUG' trap is not inherited by shell functions unless the + function has been given the 'trace' attribute or the 'functrace' + option has been enabled using the 'shopt' builtin. The 'extdebug' + shell option has additional effects on the 'DEBUG' trap. + + The 'trap' builtin (*note Bourne Shell Builtins::) allows an 'ERR' + pseudo-signal specification, similar to 'EXIT' and 'DEBUG'. + Commands specified with an 'ERR' trap are executed after a simple + command fails, with a few exceptions. The 'ERR' trap is not + inherited by shell functions unless the '-o errtrace' option to the + 'set' builtin is enabled. + + The 'trap' builtin (*note Bourne Shell Builtins::) allows a + 'RETURN' pseudo-signal specification, similar to 'EXIT' and + 'DEBUG'. Commands specified with an 'RETURN' trap are executed + before execution resumes after a shell function or a shell script + executed with '.' or 'source' returns. The 'RETURN' trap is not + inherited by shell functions unless the function has been given the + 'trace' attribute or the 'functrace' option has been enabled using + the 'shopt' builtin. + + * The Bash 'type' builtin is more extensive and gives more + information about the names it finds (*note Bash Builtins::). + + * The Bash 'umask' builtin permits a '-p' option to cause the output + to be displayed in the form of a 'umask' command that may be reused + as input (*note Bourne Shell Builtins::). + + * Bash implements a 'csh'-like directory stack, and provides the + 'pushd', 'popd', and 'dirs' builtins to manipulate it (*note The + Directory Stack::). Bash also makes the directory stack visible as + the value of the 'DIRSTACK' shell variable. + + * Bash interprets special backslash-escaped characters in the prompt + strings when interactive (*note Controlling the Prompt::). + + * The Bash restricted mode is more useful (*note The Restricted + Shell::); the SVR4.2 shell restricted mode is too limited. + + * The 'disown' builtin can remove a job from the internal shell job + table (*note Job Control Builtins::) or suppress the sending of + 'SIGHUP' to a job when the shell exits as the result of a 'SIGHUP'. + + * Bash includes a number of features to support a separate debugger + for shell scripts. + + * The SVR4.2 shell has two privilege-related builtins ('mldmode' and + 'priv') not present in Bash. + + * Bash does not have the 'stop' or 'newgrp' builtins. + + * Bash does not use the 'SHACCT' variable or perform shell + accounting. + + * The SVR4.2 'sh' uses a 'TIMEOUT' variable like Bash uses 'TMOUT'. + +More features unique to Bash may be found in *note Bash Features::. + +B.1 Implementation Differences From The SVR4.2 Shell +==================================================== + +Since Bash is a completely new implementation, it does not suffer from +many of the limitations of the SVR4.2 shell. For instance: + + * Bash does not fork a subshell when redirecting into or out of a + shell control structure such as an 'if' or 'while' statement. + + * Bash does not allow unbalanced quotes. The SVR4.2 shell will + silently insert a needed closing quote at 'EOF' under certain + circumstances. This can be the cause of some hard-to-find errors. + + * The SVR4.2 shell uses a baroque memory management scheme based on + trapping 'SIGSEGV'. If the shell is started from a process with + 'SIGSEGV' blocked (e.g., by using the 'system()' C library function + call), it misbehaves badly. + + * In a questionable attempt at security, the SVR4.2 shell, when + invoked without the '-p' option, will alter its real and effective + UID and GID if they are less than some magic threshold value, + commonly 100. This can lead to unexpected results. + + * The SVR4.2 shell does not allow users to trap 'SIGSEGV', 'SIGALRM', + or 'SIGCHLD'. + + * The SVR4.2 shell does not allow the 'IFS', 'MAILCHECK', 'PATH', + 'PS1', or 'PS2' variables to be unset. + + * The SVR4.2 shell treats '^' as the undocumented equivalent of '|'. + + * Bash allows multiple option arguments when it is invoked ('-x -v'); + the SVR4.2 shell allows only one option argument ('-xv'). In fact, + some versions of the shell dump core if the second argument begins + with a '-'. + + * The SVR4.2 shell exits a script if any builtin fails; Bash exits a + script only if one of the POSIX special builtins fails, and only + for certain failures, as enumerated in the POSIX standard. + + * The SVR4.2 shell behaves differently when invoked as 'jsh' (it + turns on job control). + + +File: bash.info, Node: GNU Free Documentation License, Next: Indexes, Prev: Major Differences From The Bourne Shell, Up: Top + +Appendix C GNU Free Documentation License +***************************************** + + Version 1.3, 3 November 2008 + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document "free" in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the + author and publisher a way to get credit for their work, while not + being considered responsible for modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. We + recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, + that contains a notice placed by the copyright holder saying it can + be distributed under the terms of this License. Such a notice + grants a world-wide, royalty-free license, unlimited in duration, + to use that work under the conditions stated herein. The + "Document", below, refers to any such manual or work. Any member + of the public is a licensee, and is addressed as "you". You accept + the license if you copy, modify or distribute the work in a way + requiring permission under copyright law. + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter section + of the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall + subject (or to related matters) and contains nothing that could + fall directly within that overall subject. (Thus, if the Document + is in part a textbook of mathematics, a Secondary Section may not + explain any mathematics.) The relationship could be a matter of + historical connection with the subject or with related matters, or + of legal, commercial, philosophical, ethical or political position + regarding them. + + The "Invariant Sections" are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in the + notice that says that the Document is released under this License. + If a section does not fit the above definition of Secondary then it + is not allowed to be designated as Invariant. The Document may + contain zero Invariant Sections. If the Document does not identify + any Invariant Sections then there are none. + + The "Cover Texts" are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + that says that the Document is released under this License. A + Front-Cover Text may be at most 5 words, and a Back-Cover Text may + be at most 25 words. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images composed + of pixels) generic paint programs or (for drawings) some widely + available drawing editor, and that is suitable for input to text + formatters or for automatic translation to a variety of formats + suitable for input to text formatters. A copy made in an otherwise + Transparent file format whose markup, or absence of markup, has + been arranged to thwart or discourage subsequent modification by + readers is not Transparent. An image format is not Transparent if + used for any substantial amount of text. A copy that is not + "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and standard-conforming + simple HTML, PostScript or PDF designed for human modification. + Examples of transparent image formats include PNG, XCF and JPG. + Opaque formats include proprietary formats that can be read and + edited only by proprietary word processors, SGML or XML for which + the DTD and/or processing tools are not generally available, and + the machine-generated HTML, PostScript or PDF produced by some word + processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, "Title + Page" means the text near the most prominent appearance of the + work's title, preceding the beginning of the body of the text. + + The "publisher" means any person or entity that distributes copies + of the Document to the public. + + A section "Entitled XYZ" means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ + stands for a specific section name mentioned below, such as + "Acknowledgements", "Dedications", "Endorsements", or "History".) + To "Preserve the Title" of such a section when you modify the + Document means that it remains a section "Entitled XYZ" according + to this definition. + + The Document may include Warranty Disclaimers next to the notice + which states that this License applies to the Document. These + Warranty Disclaimers are considered to be included by reference in + this License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and + has no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow the + conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly + have printed covers) of the Document, numbering more than 100, and + the Document's license notice requires Cover Texts, you must + enclose the copies in covers that carry, clearly and legibly, all + these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the title + equally prominent and visible. You may add other material on the + covers in addition. Copying with changes limited to the covers, as + long as they preserve the title of the Document and satisfy these + conditions, can be treated as verbatim copying in other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a machine-readable + Transparent copy along with each Opaque copy, or state in or with + each Opaque copy a computer-network location from which the general + network-using public has access to download using public-standard + network protocols a complete Transparent copy of the Document, free + of added material. If you use the latter option, you must take + reasonably prudent steps, when you begin distribution of Opaque + copies in quantity, to ensure that this Transparent copy will + remain thus accessible at the stated location until at least one + year after the last time you distribute an Opaque copy (directly or + through your agents or retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of copies, + to give them a chance to provide you with an updated version of the + Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with the + Modified Version filling the role of the Document, thus licensing + distribution and modification of the Modified Version to whoever + possesses a copy of it. In addition, you must do these things in + the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of previous + versions (which should, if there were any, be listed in the + History section of the Document). You may use the same title + as a previous version if the original publisher of that + version gives permission. + + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in + the Modified Version, together with at least five of the + principal authors of the Document (all of its principal + authors, if it has fewer than five), unless they release you + from this requirement. + + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + D. Preserve all the copyright notices of the Document. + + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified + Version under the terms of this License, in the form shown in + the Addendum below. + + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document's + license notice. + + H. Include an unaltered copy of this License. + + I. Preserve the section Entitled "History", Preserve its Title, + and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on the + Title Page. If there is no section Entitled "History" in the + Document, create one stating the title, year, authors, and + publisher of the Document as given on its Title Page, then add + an item describing the Modified Version as stated in the + previous sentence. + + J. Preserve the network location, if any, given in the Document + for public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in the + "History" section. You may omit a network location for a work + that was published at least four years before the Document + itself, or if the original publisher of the version it refers + to gives permission. + + K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section + all the substance and tone of each of the contributor + acknowledgements and/or dedications given therein. + + L. Preserve all the Invariant Sections of the Document, unaltered + in their text and in their titles. Section numbers or the + equivalent are not considered part of the section titles. + + M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + + N. Do not retitle any existing section to be Entitled + "Endorsements" or to conflict in title with any Invariant + Section. + + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option designate + some or all of these sections as invariant. To do this, add their + titles to the list of Invariant Sections in the Modified Version's + license notice. These titles must be distinct from any other + section titles. + + You may add a section Entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text + has been approved by an organization as the authoritative + definition of a standard. + + You may add a passage of up to five words as a Front-Cover Text, + and a passage of up to 25 words as a Back-Cover Text, to the end of + the list of Cover Texts in the Modified Version. Only one passage + of Front-Cover Text and one of Back-Cover Text may be added by (or + through arrangements made by) any one entity. If the Document + already includes a cover text for the same cover, previously added + by you or by arrangement made by the same entity you are acting on + behalf of, you may not add another; but you may replace the old + one, on explicit permission from the previous publisher that added + the old one. + + The author(s) and publisher(s) of the Document do not by this + License give permission to use their names for publicity for or to + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination all + of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all + their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + by adding at the end of it, in parentheses, the name of the + original author or publisher of that section if known, or else a + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections Entitled + "History" in the various original documents, forming one section + Entitled "History"; likewise combine any sections Entitled + "Acknowledgements", and any sections Entitled "Dedications". You + must delete all sections Entitled "Endorsements." + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the documents + in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow this + License in all other respects regarding verbatim copying of that + document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of a + storage or distribution medium, is called an "aggregate" if the + copyright resulting from the compilation is not used to limit the + legal rights of the compilation's users beyond what the individual + works permit. When the Document is included in an aggregate, this + License does not apply to the other works in the aggregate which + are not themselves derivative works of the Document. + + If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one half + of the entire aggregate, the Document's Cover Texts may be placed + on covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic + form. Otherwise they must appear on printed covers that bracket + the whole aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warranty Disclaimers, provided that you also + include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of + this License or a notice or disclaimer, the original version will + prevail. + + If a section in the Document is Entitled "Acknowledgements", + "Dedications", or "History", the requirement (section 4) to + Preserve its Title (section 1) will typically require changing the + actual title. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense, or distribute it is void, + and will automatically terminate your rights under this License. + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the + copyright holder fails to notify you of the violation by some + reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from + that copyright holder, and you cure the violation prior to 30 days + after your receipt of the notice. + + Termination of your rights under this section does not terminate + the licenses of parties who have received copies or rights from you + under this License. If your rights have been terminated and not + permanently reinstated, receipt of a copy of some or all of the + same material does not give you any rights to use it. + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of + the GNU Free Documentation 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. See + . + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License "or any later version" applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If the + Document does not specify a version number of this License, you may + choose any version ever published (not as a draft) by the Free + Software Foundation. If the Document specifies that a proxy can + decide which future versions of this License can be used, that + proxy's public statement of acceptance of a version permanently + authorizes you to choose that version for the Document. + + 11. RELICENSING + + "Massive Multiauthor Collaboration Site" (or "MMC Site") means any + World Wide Web server that publishes copyrightable works and also + provides prominent facilities for anybody to edit those works. A + public wiki that anybody can edit is an example of such a server. + A "Massive Multiauthor Collaboration" (or "MMC") contained in the + site means any set of copyrightable works thus published on the MMC + site. + + "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 + license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license + published by that same organization. + + "Incorporate" means to publish or republish a Document, in whole or + in part, as part of another Document. + + An MMC is "eligible for relicensing" if it is licensed under this + License, and if all works that were first published under this + License somewhere other than this MMC, and subsequently + incorporated in whole or in part into the MMC, (1) had no cover + texts or invariant sections, and (2) were thus incorporated prior + to November 1, 2008. + + The operator of an MMC Site may republish an MMC contained in the + site under CC-BY-SA on the same site at any time before August 1, + 2009, provided the MMC is eligible for relicensing. + +ADDENDUM: How to use this License for your documents +==================================================== + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and license +notices just after the title page: + + Copyright (C) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU + Free Documentation License''. + + If you have Invariant Sections, Front-Cover Texts and Back-Cover +Texts, replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with + the Front-Cover Texts being LIST, and with the Back-Cover Texts + being LIST. + + If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + + If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of free +software license, such as the GNU General Public License, to permit +their use in free software. + + +File: bash.info, Node: Indexes, Prev: GNU Free Documentation License, Up: Top + +Appendix D Indexes +****************** + +* Menu: + +* Builtin Index:: Index of Bash builtin commands. +* Reserved Word Index:: Index of Bash reserved words. +* Variable Index:: Quick reference helps you find the + variable you want. +* Function Index:: Index of bindable Readline functions. +* Concept Index:: General index for concepts described in + this manual. + + +File: bash.info, Node: Builtin Index, Next: Reserved Word Index, Up: Indexes + +D.1 Index of Shell Builtin Commands +=================================== + +[index] +* Menu: + +* .: Bourne Shell Builtins. + (line 17) +* :: Bourne Shell Builtins. + (line 11) +* [: Bourne Shell Builtins. + (line 270) +* alias: Bash Builtins. (line 11) +* bg: Job Control Builtins. + (line 7) +* bind: Bash Builtins. (line 21) +* break: Bourne Shell Builtins. + (line 36) +* builtin: Bash Builtins. (line 104) +* caller: Bash Builtins. (line 113) +* cd: Bourne Shell Builtins. + (line 44) +* command: Bash Builtins. (line 130) +* compgen: Programmable Completion Builtins. + (line 12) +* complete: Programmable Completion Builtins. + (line 30) +* compopt: Programmable Completion Builtins. + (line 237) +* continue: Bourne Shell Builtins. + (line 85) +* declare: Bash Builtins. (line 150) +* dirs: Directory Stack Builtins. + (line 7) +* disown: Job Control Builtins. + (line 101) +* echo: Bash Builtins. (line 253) +* enable: Bash Builtins. (line 302) +* eval: Bourne Shell Builtins. + (line 94) +* exec: Bourne Shell Builtins. + (line 102) +* exit: Bourne Shell Builtins. + (line 120) +* export: Bourne Shell Builtins. + (line 127) +* fc: Bash History Builtins. + (line 10) +* fg: Job Control Builtins. + (line 17) +* getopts: Bourne Shell Builtins. + (line 143) +* hash: Bourne Shell Builtins. + (line 187) +* help: Bash Builtins. (line 331) +* history: Bash History Builtins. + (line 46) +* jobs: Job Control Builtins. + (line 27) +* kill: Job Control Builtins. + (line 58) +* let: Bash Builtins. (line 350) +* local: Bash Builtins. (line 358) +* logout: Bash Builtins. (line 374) +* mapfile: Bash Builtins. (line 379) +* popd: Directory Stack Builtins. + (line 35) +* printf: Bash Builtins. (line 425) +* pushd: Directory Stack Builtins. + (line 53) +* pwd: Bourne Shell Builtins. + (line 207) +* read: Bash Builtins. (line 474) +* readarray: Bash Builtins. (line 570) +* readonly: Bourne Shell Builtins. + (line 217) +* return: Bourne Shell Builtins. + (line 236) +* set: The Set Builtin. (line 11) +* shift: Bourne Shell Builtins. + (line 257) +* shopt: The Shopt Builtin. (line 9) +* source: Bash Builtins. (line 579) +* suspend: Job Control Builtins. + (line 113) +* test: Bourne Shell Builtins. + (line 270) +* times: Bourne Shell Builtins. + (line 349) +* trap: Bourne Shell Builtins. + (line 355) +* type: Bash Builtins. (line 584) +* typeset: Bash Builtins. (line 616) +* ulimit: Bash Builtins. (line 622) +* umask: Bourne Shell Builtins. + (line 404) +* unalias: Bash Builtins. (line 728) +* unset: Bourne Shell Builtins. + (line 422) +* wait: Job Control Builtins. + (line 76) + + +File: bash.info, Node: Reserved Word Index, Next: Variable Index, Prev: Builtin Index, Up: Indexes + +D.2 Index of Shell Reserved Words +================================= + +[index] +* Menu: + +* !: Pipelines. (line 9) +* [[: Conditional Constructs. + (line 125) +* ]]: Conditional Constructs. + (line 125) +* {: Command Grouping. (line 21) +* }: Command Grouping. (line 21) +* case: Conditional Constructs. + (line 28) +* do: Looping Constructs. (line 12) +* done: Looping Constructs. (line 12) +* elif: Conditional Constructs. + (line 7) +* else: Conditional Constructs. + (line 7) +* esac: Conditional Constructs. + (line 28) +* fi: Conditional Constructs. + (line 7) +* for: Looping Constructs. (line 32) +* function: Shell Functions. (line 13) +* if: Conditional Constructs. + (line 7) +* in: Conditional Constructs. + (line 28) +* select: Conditional Constructs. + (line 83) +* then: Conditional Constructs. + (line 7) +* time: Pipelines. (line 9) +* until: Looping Constructs. (line 12) +* while: Looping Constructs. (line 22) + + +File: bash.info, Node: Variable Index, Next: Function Index, Prev: Reserved Word Index, Up: Indexes + +D.3 Parameter and Variable Index +================================ + +[index] +* Menu: + +* !: Special Parameters. (line 56) +* #: Special Parameters. (line 39) +* $: Special Parameters. (line 51) +* $!: Special Parameters. (line 57) +* $#: Special Parameters. (line 40) +* $$: Special Parameters. (line 52) +* $*: Special Parameters. (line 10) +* $-: Special Parameters. (line 47) +* $0: Special Parameters. (line 62) +* $?: Special Parameters. (line 43) +* $@: Special Parameters. (line 23) +* $_: Bash Variables. (line 14) +* *: Special Parameters. (line 9) +* -: Special Parameters. (line 46) +* 0: Special Parameters. (line 61) +* ?: Special Parameters. (line 42) +* @: Special Parameters. (line 22) +* _: Bash Variables. (line 13) +* auto_resume: Job Control Variables. + (line 6) +* BASH: Bash Variables. (line 23) +* BASHOPTS: Bash Variables. (line 26) +* BASHPID: Bash Variables. (line 35) +* BASH_ALIASES: Bash Variables. (line 42) +* BASH_ARGC: Bash Variables. (line 51) +* BASH_ARGV: Bash Variables. (line 64) +* BASH_ARGV0: Bash Variables. (line 76) +* BASH_CMDS: Bash Variables. (line 84) +* BASH_COMMAND: Bash Variables. (line 93) +* BASH_COMPAT: Bash Variables. (line 100) +* BASH_ENV: Bash Variables. (line 116) +* BASH_EXECUTION_STRING: Bash Variables. (line 122) +* BASH_LINENO: Bash Variables. (line 125) +* BASH_LOADABLES_PATH: Bash Variables. (line 133) +* BASH_REMATCH: Bash Variables. (line 137) +* BASH_SOURCE: Bash Variables. (line 145) +* BASH_SUBSHELL: Bash Variables. (line 152) +* BASH_VERSINFO: Bash Variables. (line 158) +* BASH_VERSION: Bash Variables. (line 181) +* BASH_XTRACEFD: Bash Variables. (line 184) +* bell-style: Readline Init File Syntax. + (line 38) +* bind-tty-special-chars: Readline Init File Syntax. + (line 45) +* blink-matching-paren: Readline Init File Syntax. + (line 50) +* CDPATH: Bourne Shell Variables. + (line 9) +* CHILD_MAX: Bash Variables. (line 195) +* colored-completion-prefix: Readline Init File Syntax. + (line 55) +* colored-stats: Readline Init File Syntax. + (line 62) +* COLUMNS: Bash Variables. (line 202) +* comment-begin: Readline Init File Syntax. + (line 68) +* completion-display-width: Readline Init File Syntax. + (line 73) +* completion-ignore-case: Readline Init File Syntax. + (line 80) +* completion-map-case: Readline Init File Syntax. + (line 85) +* completion-prefix-display-length: Readline Init File Syntax. + (line 91) +* completion-query-items: Readline Init File Syntax. + (line 98) +* COMPREPLY: Bash Variables. (line 254) +* COMP_CWORD: Bash Variables. (line 208) +* COMP_KEY: Bash Variables. (line 237) +* COMP_LINE: Bash Variables. (line 214) +* COMP_POINT: Bash Variables. (line 219) +* COMP_TYPE: Bash Variables. (line 227) +* COMP_WORDBREAKS: Bash Variables. (line 241) +* COMP_WORDS: Bash Variables. (line 247) +* convert-meta: Readline Init File Syntax. + (line 108) +* COPROC: Bash Variables. (line 260) +* DIRSTACK: Bash Variables. (line 264) +* disable-completion: Readline Init File Syntax. + (line 116) +* echo-control-characters: Readline Init File Syntax. + (line 121) +* editing-mode: Readline Init File Syntax. + (line 126) +* EMACS: Bash Variables. (line 274) +* emacs-mode-string: Readline Init File Syntax. + (line 132) +* enable-bracketed-paste: Readline Init File Syntax. + (line 142) +* enable-keypad: Readline Init File Syntax. + (line 150) +* ENV: Bash Variables. (line 279) +* EPOCHREALTIME: Bash Variables. (line 284) +* EPOCHSECONDS: Bash Variables. (line 292) +* EUID: Bash Variables. (line 299) +* EXECIGNORE: Bash Variables. (line 303) +* expand-tilde: Readline Init File Syntax. + (line 161) +* FCEDIT: Bash Variables. (line 316) +* FIGNORE: Bash Variables. (line 320) +* FUNCNAME: Bash Variables. (line 326) +* FUNCNEST: Bash Variables. (line 343) +* GLOBIGNORE: Bash Variables. (line 348) +* GROUPS: Bash Variables. (line 355) +* histchars: Bash Variables. (line 361) +* HISTCMD: Bash Variables. (line 376) +* HISTCONTROL: Bash Variables. (line 382) +* HISTFILE: Bash Variables. (line 398) +* HISTFILESIZE: Bash Variables. (line 402) +* HISTIGNORE: Bash Variables. (line 413) +* history-preserve-point: Readline Init File Syntax. + (line 165) +* history-size: Readline Init File Syntax. + (line 171) +* HISTSIZE: Bash Variables. (line 433) +* HISTTIMEFORMAT: Bash Variables. (line 440) +* HOME: Bourne Shell Variables. + (line 13) +* horizontal-scroll-mode: Readline Init File Syntax. + (line 180) +* HOSTFILE: Bash Variables. (line 448) +* HOSTNAME: Bash Variables. (line 459) +* HOSTTYPE: Bash Variables. (line 462) +* IFS: Bourne Shell Variables. + (line 18) +* IGNOREEOF: Bash Variables. (line 465) +* input-meta: Readline Init File Syntax. + (line 189) +* INPUTRC: Bash Variables. (line 475) +* INSIDE_EMACS: Bash Variables. (line 479) +* isearch-terminators: Readline Init File Syntax. + (line 197) +* keymap: Readline Init File Syntax. + (line 204) +* LANG: Bash Variables. (line 485) +* LC_ALL: Bash Variables. (line 489) +* LC_COLLATE: Bash Variables. (line 493) +* LC_CTYPE: Bash Variables. (line 500) +* LC_MESSAGES: Locale Translation. (line 15) +* LC_MESSAGES <1>: Bash Variables. (line 505) +* LC_NUMERIC: Bash Variables. (line 509) +* LC_TIME: Bash Variables. (line 513) +* LINENO: Bash Variables. (line 517) +* LINES: Bash Variables. (line 522) +* MACHTYPE: Bash Variables. (line 528) +* MAIL: Bourne Shell Variables. + (line 22) +* MAILCHECK: Bash Variables. (line 532) +* MAILPATH: Bourne Shell Variables. + (line 27) +* MAPFILE: Bash Variables. (line 540) +* mark-modified-lines: Readline Init File Syntax. + (line 234) +* mark-symlinked-directories: Readline Init File Syntax. + (line 239) +* match-hidden-files: Readline Init File Syntax. + (line 244) +* menu-complete-display-prefix: Readline Init File Syntax. + (line 251) +* meta-flag: Readline Init File Syntax. + (line 189) +* OLDPWD: Bash Variables. (line 544) +* OPTARG: Bourne Shell Variables. + (line 34) +* OPTERR: Bash Variables. (line 547) +* OPTIND: Bourne Shell Variables. + (line 38) +* OSTYPE: Bash Variables. (line 551) +* output-meta: Readline Init File Syntax. + (line 256) +* page-completions: Readline Init File Syntax. + (line 262) +* PATH: Bourne Shell Variables. + (line 42) +* PIPESTATUS: Bash Variables. (line 554) +* POSIXLY_CORRECT: Bash Variables. (line 559) +* PPID: Bash Variables. (line 569) +* PROMPT_COMMAND: Bash Variables. (line 573) +* PROMPT_DIRTRIM: Bash Variables. (line 579) +* PS0: Bash Variables. (line 585) +* PS1: Bourne Shell Variables. + (line 48) +* PS2: Bourne Shell Variables. + (line 53) +* PS3: Bash Variables. (line 590) +* PS4: Bash Variables. (line 595) +* PWD: Bash Variables. (line 603) +* RANDOM: Bash Variables. (line 606) +* READLINE_LINE: Bash Variables. (line 612) +* READLINE_MARK: Bash Variables. (line 616) +* READLINE_POINT: Bash Variables. (line 622) +* REPLY: Bash Variables. (line 626) +* revert-all-at-newline: Readline Init File Syntax. + (line 272) +* SECONDS: Bash Variables. (line 629) +* SHELL: Bash Variables. (line 638) +* SHELLOPTS: Bash Variables. (line 643) +* SHLVL: Bash Variables. (line 652) +* show-all-if-ambiguous: Readline Init File Syntax. + (line 278) +* show-all-if-unmodified: Readline Init File Syntax. + (line 284) +* show-mode-in-prompt: Readline Init File Syntax. + (line 293) +* skip-completed-text: Readline Init File Syntax. + (line 299) +* SRANDOM: Bash Variables. (line 657) +* TEXTDOMAIN: Locale Translation. (line 15) +* TEXTDOMAINDIR: Locale Translation. (line 15) +* TIMEFORMAT: Bash Variables. (line 666) +* TMOUT: Bash Variables. (line 704) +* TMPDIR: Bash Variables. (line 716) +* UID: Bash Variables. (line 720) +* vi-cmd-mode-string: Readline Init File Syntax. + (line 312) +* vi-ins-mode-string: Readline Init File Syntax. + (line 323) +* visible-stats: Readline Init File Syntax. + (line 334) + + +File: bash.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes + +D.4 Function Index +================== + +[index] +* Menu: + +* abort (C-g): Miscellaneous Commands. + (line 10) +* accept-line (Newline or Return): Commands For History. + (line 6) +* alias-expand-line (): Miscellaneous Commands. + (line 125) +* backward-char (C-b): Commands For Moving. (line 15) +* backward-delete-char (Rubout): Commands For Text. (line 17) +* backward-kill-line (C-x Rubout): Commands For Killing. + (line 11) +* backward-kill-word (M-): Commands For Killing. + (line 28) +* backward-word (M-b): Commands For Moving. (line 22) +* beginning-of-history (M-<): Commands For History. + (line 20) +* beginning-of-line (C-a): Commands For Moving. (line 6) +* bracketed-paste-begin (): Commands For Text. (line 33) +* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) +* capitalize-word (M-c): Commands For Text. (line 66) +* character-search (C-]): Miscellaneous Commands. + (line 42) +* character-search-backward (M-C-]): Miscellaneous Commands. + (line 47) +* clear-display (M-C-l): Commands For Moving. (line 48) +* clear-screen (C-l): Commands For Moving. (line 53) +* complete (): Commands For Completion. + (line 6) +* complete-command (M-!): Commands For Completion. + (line 80) +* complete-filename (M-/): Commands For Completion. + (line 49) +* complete-hostname (M-@): Commands For Completion. + (line 72) +* complete-into-braces (M-{): Commands For Completion. + (line 100) +* complete-username (M-~): Commands For Completion. + (line 56) +* complete-variable (M-$): Commands For Completion. + (line 64) +* copy-backward-word (): Commands For Killing. + (line 69) +* copy-forward-word (): Commands For Killing. + (line 74) +* copy-region-as-kill (): Commands For Killing. + (line 65) +* dabbrev-expand (): Commands For Completion. + (line 95) +* delete-char (C-d): Commands For Text. (line 12) +* delete-char-or-list (): Commands For Completion. + (line 43) +* delete-horizontal-space (): Commands For Killing. + (line 57) +* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) +* display-shell-version (C-x C-v): Miscellaneous Commands. + (line 110) +* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands. + (line 14) +* downcase-word (M-l): Commands For Text. (line 62) +* dump-functions (): Miscellaneous Commands. + (line 74) +* dump-macros (): Miscellaneous Commands. + (line 86) +* dump-variables (): Miscellaneous Commands. + (line 80) +* dynamic-complete-history (M-): Commands For Completion. + (line 90) +* edit-and-execute-command (C-x C-e): Miscellaneous Commands. + (line 134) +* end-kbd-macro (C-x )): Keyboard Macros. (line 9) +* end-of-file (usually C-d): Commands For Text. (line 6) +* end-of-history (M->): Commands For History. + (line 23) +* end-of-line (C-e): Commands For Moving. (line 9) +* exchange-point-and-mark (C-x C-x): Miscellaneous Commands. + (line 37) +* forward-backward-delete-char (): Commands For Text. (line 21) +* forward-char (C-f): Commands For Moving. (line 12) +* forward-search-history (C-s): Commands For History. + (line 33) +* forward-word (M-f): Commands For Moving. (line 18) +* glob-complete-word (M-g): Miscellaneous Commands. + (line 92) +* glob-expand-word (C-x *): Miscellaneous Commands. + (line 98) +* glob-list-expansions (C-x g): Miscellaneous Commands. + (line 104) +* history-and-alias-expand-line (): Miscellaneous Commands. + (line 128) +* history-expand-line (M-^): Miscellaneous Commands. + (line 118) +* history-search-backward (): Commands For History. + (line 57) +* history-search-forward (): Commands For History. + (line 51) +* history-substring-search-backward (): Commands For History. + (line 69) +* history-substring-search-forward (): Commands For History. + (line 63) +* insert-comment (M-#): Miscellaneous Commands. + (line 61) +* insert-completions (M-*): Commands For Completion. + (line 22) +* insert-last-argument (M-. or M-_): Miscellaneous Commands. + (line 131) +* kill-line (C-k): Commands For Killing. + (line 6) +* kill-region (): Commands For Killing. + (line 61) +* kill-whole-line (): Commands For Killing. + (line 19) +* kill-word (M-d): Commands For Killing. + (line 23) +* magic-space (): Miscellaneous Commands. + (line 121) +* menu-complete (): Commands For Completion. + (line 26) +* menu-complete-backward (): Commands For Completion. + (line 38) +* next-history (C-n): Commands For History. + (line 17) +* next-screen-line (): Commands For Moving. (line 41) +* non-incremental-forward-search-history (M-n): Commands For History. + (line 45) +* non-incremental-reverse-search-history (M-p): Commands For History. + (line 39) +* operate-and-get-next (C-o): Commands For History. + (line 96) +* overwrite-mode (): Commands For Text. (line 70) +* possible-command-completions (C-x !): Commands For Completion. + (line 86) +* possible-completions (M-?): Commands For Completion. + (line 15) +* possible-filename-completions (C-x /): Commands For Completion. + (line 52) +* possible-hostname-completions (C-x @): Commands For Completion. + (line 76) +* possible-username-completions (C-x ~): Commands For Completion. + (line 60) +* possible-variable-completions (C-x $): Commands For Completion. + (line 68) +* prefix-meta (): Miscellaneous Commands. + (line 19) +* previous-history (C-p): Commands For History. + (line 13) +* previous-screen-line (): Commands For Moving. (line 34) +* print-last-kbd-macro (): Keyboard Macros. (line 17) +* quoted-insert (C-q or C-v): Commands For Text. (line 26) +* re-read-init-file (C-x C-r): Miscellaneous Commands. + (line 6) +* redraw-current-line (): Commands For Moving. (line 57) +* reverse-search-history (C-r): Commands For History. + (line 27) +* revert-line (M-r): Miscellaneous Commands. + (line 26) +* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 30) +* set-mark (C-@): Miscellaneous Commands. + (line 33) +* shell-backward-kill-word (): Commands For Killing. + (line 37) +* shell-backward-word (M-C-b): Commands For Moving. (line 30) +* shell-expand-line (M-C-e): Miscellaneous Commands. + (line 113) +* shell-forward-word (M-C-f): Commands For Moving. (line 26) +* shell-kill-word (M-C-d): Commands For Killing. + (line 32) +* shell-transpose-words (M-C-t): Commands For Killing. + (line 41) +* skip-csi-sequence (): Miscellaneous Commands. + (line 52) +* start-kbd-macro (C-x (): Keyboard Macros. (line 6) +* tilde-expand (M-&): Miscellaneous Commands. + (line 30) +* transpose-chars (C-t): Commands For Text. (line 47) +* transpose-words (M-t): Commands For Text. (line 53) +* undo (C-_ or C-x C-u): Miscellaneous Commands. + (line 23) +* universal-argument (): Numeric Arguments. (line 10) +* unix-filename-rubout (): Commands For Killing. + (line 52) +* unix-line-discard (C-u): Commands For Killing. + (line 16) +* unix-word-rubout (C-w): Commands For Killing. + (line 48) +* upcase-word (M-u): Commands For Text. (line 58) +* yank (C-y): Commands For Killing. + (line 79) +* yank-last-arg (M-. or M-_): Commands For History. + (line 84) +* yank-nth-arg (M-C-y): Commands For History. + (line 75) +* yank-pop (M-y): Commands For Killing. + (line 82) + + +File: bash.info, Node: Concept Index, Prev: Function Index, Up: Indexes + +D.5 Concept Index +================= + +[index] +* Menu: + +* alias expansion: Aliases. (line 6) +* arithmetic evaluation: Shell Arithmetic. (line 6) +* arithmetic expansion: Arithmetic Expansion. + (line 6) +* arithmetic, shell: Shell Arithmetic. (line 6) +* arrays: Arrays. (line 6) +* background: Job Control Basics. (line 6) +* Bash configuration: Basic Installation. (line 6) +* Bash installation: Basic Installation. (line 6) +* Bourne shell: Basic Shell Features. + (line 6) +* brace expansion: Brace Expansion. (line 6) +* builtin: Definitions. (line 17) +* command editing: Readline Bare Essentials. + (line 6) +* command execution: Command Search and Execution. + (line 6) +* command expansion: Simple Command Expansion. + (line 6) +* command history: Bash History Facilities. + (line 6) +* command search: Command Search and Execution. + (line 6) +* command substitution: Command Substitution. + (line 6) +* command timing: Pipelines. (line 9) +* commands, compound: Compound Commands. (line 6) +* commands, conditional: Conditional Constructs. + (line 6) +* commands, grouping: Command Grouping. (line 6) +* commands, lists: Lists. (line 6) +* commands, looping: Looping Constructs. (line 6) +* commands, pipelines: Pipelines. (line 6) +* commands, shell: Shell Commands. (line 6) +* commands, simple: Simple Commands. (line 6) +* comments, shell: Comments. (line 6) +* Compatibility Level: Shell Compatibility Mode. + (line 6) +* Compatibility Mode: Shell Compatibility Mode. + (line 6) +* completion builtins: Programmable Completion Builtins. + (line 6) +* configuration: Basic Installation. (line 6) +* control operator: Definitions. (line 21) +* coprocess: Coprocesses. (line 6) +* directory stack: The Directory Stack. (line 6) +* editing command lines: Readline Bare Essentials. + (line 6) +* environment: Environment. (line 6) +* evaluation, arithmetic: Shell Arithmetic. (line 6) +* event designators: Event Designators. (line 6) +* execution environment: Command Execution Environment. + (line 6) +* exit status: Definitions. (line 26) +* exit status <1>: Exit Status. (line 6) +* expansion: Shell Expansions. (line 6) +* expansion, arithmetic: Arithmetic Expansion. + (line 6) +* expansion, brace: Brace Expansion. (line 6) +* expansion, filename: Filename Expansion. (line 9) +* expansion, parameter: Shell Parameter Expansion. + (line 6) +* expansion, pathname: Filename Expansion. (line 9) +* expansion, tilde: Tilde Expansion. (line 6) +* expressions, arithmetic: Shell Arithmetic. (line 6) +* expressions, conditional: Bash Conditional Expressions. + (line 6) +* field: Definitions. (line 30) +* filename: Definitions. (line 35) +* filename expansion: Filename Expansion. (line 9) +* foreground: Job Control Basics. (line 6) +* functions, shell: Shell Functions. (line 6) +* history builtins: Bash History Builtins. + (line 6) +* history events: Event Designators. (line 8) +* history expansion: History Interaction. (line 6) +* history list: Bash History Facilities. + (line 6) +* History, how to use: A Programmable Completion Example. + (line 113) +* identifier: Definitions. (line 51) +* initialization file, readline: Readline Init File. (line 6) +* installation: Basic Installation. (line 6) +* interaction, readline: Readline Interaction. + (line 6) +* interactive shell: Invoking Bash. (line 131) +* interactive shell <1>: Interactive Shells. (line 6) +* internationalization: Locale Translation. (line 6) +* job: Definitions. (line 38) +* job control: Definitions. (line 42) +* job control <1>: Job Control Basics. (line 6) +* kill ring: Readline Killing Commands. + (line 18) +* killing text: Readline Killing Commands. + (line 6) +* localization: Locale Translation. (line 6) +* login shell: Invoking Bash. (line 128) +* matching, pattern: Pattern Matching. (line 6) +* metacharacter: Definitions. (line 46) +* name: Definitions. (line 51) +* native languages: Locale Translation. (line 6) +* notation, readline: Readline Bare Essentials. + (line 6) +* operator, shell: Definitions. (line 57) +* parameter expansion: Shell Parameter Expansion. + (line 6) +* parameters: Shell Parameters. (line 6) +* parameters, positional: Positional Parameters. + (line 6) +* parameters, special: Special Parameters. (line 6) +* pathname expansion: Filename Expansion. (line 9) +* pattern matching: Pattern Matching. (line 6) +* pipeline: Pipelines. (line 6) +* POSIX: Definitions. (line 9) +* POSIX Mode: Bash POSIX Mode. (line 6) +* process group: Definitions. (line 62) +* process group ID: Definitions. (line 66) +* process substitution: Process Substitution. + (line 6) +* programmable completion: Programmable Completion. + (line 6) +* prompting: Controlling the Prompt. + (line 6) +* quoting: Quoting. (line 6) +* quoting, ANSI: ANSI-C Quoting. (line 6) +* Readline, how to use: Job Control Variables. + (line 23) +* redirection: Redirections. (line 6) +* reserved word: Definitions. (line 70) +* reserved words: Reserved Words. (line 6) +* restricted shell: The Restricted Shell. + (line 6) +* return status: Definitions. (line 75) +* shell arithmetic: Shell Arithmetic. (line 6) +* shell function: Shell Functions. (line 6) +* shell script: Shell Scripts. (line 6) +* shell variable: Shell Parameters. (line 6) +* shell, interactive: Interactive Shells. (line 6) +* signal: Definitions. (line 78) +* signal handling: Signals. (line 6) +* special builtin: Definitions. (line 82) +* special builtin <1>: Special Builtins. (line 6) +* startup files: Bash Startup Files. (line 6) +* suspending jobs: Job Control Basics. (line 6) +* tilde expansion: Tilde Expansion. (line 6) +* token: Definitions. (line 86) +* translation, native languages: Locale Translation. (line 6) +* variable, shell: Shell Parameters. (line 6) +* variables, readline: Readline Init File Syntax. + (line 37) +* word: Definitions. (line 90) +* word splitting: Word Splitting. (line 6) +* yanking text: Readline Killing Commands. + (line 6) + + + +Tag Table: +Node: Top895 +Node: Introduction2813 +Node: What is Bash?3029 +Node: What is a shell?4143 +Node: Definitions6681 +Node: Basic Shell Features9632 +Node: Shell Syntax10851 +Node: Shell Operation11877 +Node: Quoting13170 +Node: Escape Character14470 +Node: Single Quotes14955 +Node: Double Quotes15303 +Node: ANSI-C Quoting16581 +Node: Locale Translation17840 +Node: Comments18993 +Node: Shell Commands19611 +Node: Reserved Words20549 +Node: Simple Commands21305 +Node: Pipelines21959 +Node: Lists24891 +Node: Compound Commands26682 +Node: Looping Constructs27694 +Node: Conditional Constructs30189 +Node: Command Grouping41760 +Node: Coprocesses43239 +Node: GNU Parallel45142 +Node: Shell Functions49443 +Node: Shell Parameters56650 +Node: Positional Parameters61063 +Node: Special Parameters61963 +Node: Shell Expansions65187 +Node: Brace Expansion67310 +Node: Tilde Expansion70033 +Node: Shell Parameter Expansion72650 +Node: Command Substitution87779 +Node: Arithmetic Expansion89134 +Node: Process Substitution90066 +Node: Word Splitting91186 +Node: Filename Expansion93130 +Node: Pattern Matching95679 +Node: Quote Removal99665 +Node: Redirections99960 +Node: Executing Commands109530 +Node: Simple Command Expansion110200 +Node: Command Search and Execution112154 +Node: Command Execution Environment114530 +Node: Environment117514 +Node: Exit Status119173 +Node: Signals120843 +Node: Shell Scripts122810 +Node: Shell Builtin Commands125822 +Node: Bourne Shell Builtins127860 +Node: Bash Builtins148789 +Node: Modifying Shell Behavior178898 +Node: The Set Builtin179243 +Node: The Shopt Builtin189656 +Node: Special Builtins204566 +Node: Shell Variables205545 +Node: Bourne Shell Variables205982 +Node: Bash Variables208086 +Node: Bash Features240720 +Node: Invoking Bash241733 +Node: Bash Startup Files247746 +Node: Interactive Shells252849 +Node: What is an Interactive Shell?253259 +Node: Is this Shell Interactive?253908 +Node: Interactive Shell Behavior254723 +Node: Bash Conditional Expressions258237 +Node: Shell Arithmetic262814 +Node: Aliases265754 +Node: Arrays268374 +Node: The Directory Stack274383 +Node: Directory Stack Builtins275167 +Node: Controlling the Prompt278135 +Node: The Restricted Shell281085 +Node: Bash POSIX Mode283679 +Node: Shell Compatibility Mode294715 +Node: Job Control301371 +Node: Job Control Basics301831 +Node: Job Control Builtins306827 +Node: Job Control Variables312227 +Node: Command Line Editing313383 +Node: Introduction and Notation315054 +Node: Readline Interaction316677 +Node: Readline Bare Essentials317868 +Node: Readline Movement Commands319651 +Node: Readline Killing Commands320611 +Node: Readline Arguments322529 +Node: Searching323573 +Node: Readline Init File325759 +Node: Readline Init File Syntax327018 +Node: Conditional Init Constructs347556 +Node: Sample Init File351752 +Node: Bindable Readline Commands354876 +Node: Commands For Moving356080 +Node: Commands For History358131 +Node: Commands For Text362924 +Node: Commands For Killing366573 +Node: Numeric Arguments369606 +Node: Commands For Completion370745 +Node: Keyboard Macros374936 +Node: Miscellaneous Commands375623 +Node: Readline vi Mode381307 +Node: Programmable Completion382214 +Node: Programmable Completion Builtins389994 +Node: A Programmable Completion Example400689 +Node: Using History Interactively405936 +Node: Bash History Facilities406620 +Node: Bash History Builtins409625 +Node: History Interaction414354 +Node: Event Designators417974 +Node: Word Designators419328 +Node: Modifiers421088 +Node: Installing Bash422899 +Node: Basic Installation424036 +Node: Compilers and Options427294 +Node: Compiling For Multiple Architectures428035 +Node: Installation Names429728 +Node: Specifying the System Type430546 +Node: Sharing Defaults431262 +Node: Operation Controls431935 +Node: Optional Features432893 +Node: Reporting Bugs443411 +Node: Major Differences From The Bourne Shell444605 +Node: GNU Free Documentation License461457 +Node: Indexes486634 +Node: Builtin Index487088 +Node: Reserved Word Index493915 +Node: Variable Index496363 +Node: Function Index512260 +Node: Concept Index525770 + +End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/bash-5.1/doc/bash.pdf b/bash-5.1/doc/bash.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d8d784ee712f1818200ffe00b1f2ad6ad5694d27 GIT binary patch literal 381560 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

#4s^LV!V1w%Fq{eF}A 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 xowuBl67dj)EnsO$a4 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

3r<@k&I=R9+vE9LnH==uWJsN^Lr- z%CE;N5dw83!B*1l3@!;MbCF*`%rI*mgy?$sUyanbN37c&SBl9xALl<<0Bs=wi^nBtmAdVXD1kYv_UD7wk-{Vf6m54_cZ^dYbIO&Y~$ zC$i`)LC`RgE0IsMz%S<3($5#_Xp#&|JK$X>)l2GUE9MVT0VU~}xu-;cH%@P+E-Lgj zmLEP%t@oaz^AYM=ty}rs)gkLb#KM@vD~&e=A}Wax`5MDEZ|2|K6Be)+aC9_lRJ}yO z2%w_Plp)J}Hln!-ar^2dR~iIExRx&4@)2vQ%9UNH+E_;p8xRpULF1$53?rL64HuB!3)3eL|3+z<2p6a`sN3-I*_~6pdk~wEUo3s=}D+Y1LsOMJ^tG1`Bep>y+ z#$xLMJ2MWRhlysU`U)&GMRc>=x(PWU5nUanyTA6bbeptm~%Ki{xd&4E(ItVk=l>)c&|PYvT}1s7k=Ahy1~Fx-b8jb ze4{{qAjPZuxM5PB4qc8;+R7M*pmzrHZ@>5#e`EBjl$^=myb>vRi^aGmbOc`0j6NyF z@rc@>g@E@c8!O~kej#->v>qkvFwkLqF8U(*6u<_)p_kG-H*4EFE&`uVlwVu zj(9KVLdgsNJ)!IHWboJmJ}GAlc_#{Y)V35n>}0m@#(LGh5^^v32Md}>jtx>1-85C1*y9f2IS!Eo7U&%`ma&4y9iCQQ={Ziu2$_hHPzfjn<7 zzSU=<8})EI7SS^d8z_|f0*MJBKreJh(ER`q@#Vic0rL=w>~cYg?cw) z(z@Ars)E^JObV^#M?x(~<*6wWyrTeJVIc_gjHW@ecm}?Ar*)wq`4?>vXs-XpYucs})1=3<&y(o|d?jnK!&^ z6{#Fmc1X~9R_9h2wRsf?o6Io!7d!o*^bKgOnAUs6Y>hLlo7r*6s+C5)_Nt|5s#z4| zL(6GEW7lme16VGcH$7|cHu--Rpy>j%H;A6NP*NKg2IMv;S5L(-4v)E#_q-@Qrh)M? z_2e#RLPaazv~RqLc7N{FMN|^45u$qxGU5%q(UEj#lyC0F#fbirv?B|Hr!z#e9HbD` zGIlgCDQbLOV6gLM(3zoF{lbM4eO5E$MvMlTZpa)%I^)d-2j?7Bd$qfk5WP66Xz1Tm zR$ICjH6WiEPd=!=ge8ySB%83)P`&`8vo?9{OvPo$mty49LyLjb;^>ED83nx+7r#(2 zZa3L(U-^yi{KvJ;$lwB+dwqX{K3QUj!^5OiAa_^eh-u9<&eYmvTSJ*_3jc(PTx?wN zwpu?e}y>z6#-(QkFVKDc24M1qL<^hh))J50WX1JNiViz^f9sW==Fb zH-_YUYB1auY$|&l^#b~$2Go^p*b=_NiV`)&Ef!`@Z;7e^mvP6vjx z9OYCLz@O$M7te~>+!%BW9q=0RY~)s<+QvD%VO?RXN|FSKqVu5ShbgKwgR0WwH=E$3 zl2H?bzi+Dz*YTX;WD_O4{z9`+!fAD~S%jr0irsaTUIudZH^V=u#q_C2u_J+IJWWWL zgf5$8aWeib-I=!DrfQb8&>3q&_hDH8dl#!B8wDd^zaY3t# zlAS0>*%;{B{&k(1gKaMM%EY#ppg#g<5}+9ry@r-X<=J(OPuzX*3_gX$*$a;3ME-Tx z(0$W38x7ME&x9n`SmB((VZA(k(NJE`1uvn@IK}S2VI?{u^FWPmx5mzdt^B-QwW@cD zfu|+!*4-(=Qdp$>@wWyw88FtEi$#sk7o_`>3$aH8p1_DM?gGRrw8wG z7o*8&0&50)PIs6n7h14iu5DUj0gvavsFBOJ+O;A#{bCWIdqbvRzVECgQj*ue)rQk! zfGrSlJ)y{&uIzDxrjv}WL^I@*%5x&01#GIhe@=dyHo0Id)LQs!o^_iPe26DQr$ZvD z_FiI(RN?d{@j!60n9eY`H0q(AJYy*$K6kduzJ`NbzIQjIvm@tLVY*`!#ZTRMIX?F( zx(S)lMbuGxmiC?5h#W@KgBpm995oDInz|Nu`nro%eDycrPClMvCK8-D(R)WPT3Ca< zTd%jw2Xhm0y@CI58E7Bm)+0j5S#=U&Kfj_#Exl-S_T!BgBhidBEfYqG*F59FMnEiO z2!5kNVd+mw2{y|;CLk}mg`ARe+qglnbDO=QCMG35-}HjSOJ7#^h=lsKz%KM%+Fg)az*(YTpTU}-D@2}^bYumTv+cSCuS>q!vJp)HFgV4`3fgXggT?5 z2mI^H)W>l3u%t7vq2x=F-@HxA3w`QRx$BbL;llHygW7a#ubj>o0D=_JxC7sGZMo#c z&>dapQHa}XT2MzAV$Lg&WCN3On3n1L2DnP-B&%J0t%9`~#0KV^=+e@^Ql6Di3eO+w z(o3EiYjk)trL)*K0xR);DPeOewy(nTPY$uEk7j*;47Tvv|Va2WV-^T{RSa$m?s98_Ld0JSktkcl`L? z%+B}s{J2B}Z0|QlaE{NozRI??8ew-8B8NW=C;O>3yj=-UNASOawJPTp}clIx?f18ZsmV*l~804 zmpLk^fVfhoj}LGT#2kGR(o2hvS~o-LNH=Y$fIt3=hiC|OfdWRcuU89 z`1Gs3)I~4=#hD-Yf#TviOAsyARr}++Ml5cj9x<19?*p1dR=G)X*)tV(2t|PfN$)bv z@t)O((M(e3Rs&K%UD;96RUQ#wA75q_1s1dTpJ!nc5`CR^Z$;}pf7-jxr=g_x%?}98 zc_ns2S{(>?bLqn`=DW>UyTO34O(@0C#JocZ0PPHP*1bG&VTdPU#VR z!67qgczj2n7)S)iB#kff2XyQvb9{qehIKhDY}y-h91tp473`-j0*zj~HZcHlioEkRxr)i+`&rO6<#n% zP}<%y+hw7xEC}Fb2{fss|An*7!yw)DcxowGN!#VO4d6wYyk)8g!hQOHCW~ZK^e~wF zK+{UNYi7P_Y+(=S2n%c5HMyd5O9u^Q0Iyb}c~pE-<5^|lgUsKzcZTW6Jh(KnZJS+R zz96A0XKc^d)_2H(2pu2E_?DO7MuH-!94#d0TzJ24H^ZITw#wc8F}789=0C zZ8Z5!ZXu8^uGp@_Hr%aM<2XY_eFv>1*{~D z8{8Lkj`Ecs@Md#|zfx*7GRKg>ZkdE0Og%D)d*t4QJS;<<-mnWS39Eg-avbwB5b%Q- z{JA>z|I2v)EzbS7&*v8h=l_-Q{sSkn7gE zvhS|#rr$%Os@?Zowk)YEX*4k;B>tfCALoleV_cfynj?XN^C8Ro@aS{l3P>U=BO43= z%v*aTCUnOLFjjoiX8NoCs}6V?rHSe!T3Z>#6gYXEd^#EG5tEve%qu(c_CWUgS~-3q zbcErR@S^k78bDpMc_ojh=Dl}B{(4;d_t`_LPo?(4EMy+g6p78LK=EFj^P~K)J0a--aB9K+b{d|7C@Gzwxz5puf4m857lQ= zjjjG6<>bBd)hGQoo*q1?W0QNRuDf4iJiKzsMvss!#Q75T8+JKcwG9e6MD>=~7-B?4 z2`>`iit!Lb+Kfh72u{O@Xs2A!4#}8>LRnFi9e#63*OH6nr2UrLP^Ac0xjN(ZP$p1` zTzxzX87Uty^7IW;kD_Zlg~KI0Ae+N({{_CW4ur4W03IsDv5LFoZsOZHl>~-Bw{Tip zHMo$6=Ofrprc?CZ7cyV{PZ+z?xMSreYOqraru7uAWfXoeH$R>`G!)aq0jK>FtbC-N z7`y0p-wlN8Oz?{DR!k@HB!-O{7TG5;OL!slCtZw~r$+P-(DmZ`6f(O{+w$m� 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�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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 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron +/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/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 -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(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] [command_string | \214le])2.5 E F1 +(COPYRIGHT)72 141.6 Q F0(Bash is Cop)108 153.6 Q +(yright \251 1989-2020 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 .483(All of the single-character shell options doc\ +umented in the description of the)108 252 R F2(set)2.983 E F0 -.2(bu) +2.983 G .483(iltin command, includ-).2 F(ing)108 264 Q F22.718 E +F0 2.718(,c)C .218(an be used as options when the shell is in)-2.718 F +-.2(vo)-.4 G -.1(ke).2 G 2.718(d. In).1 F(addition,)2.719 E F2(bash) +2.719 E F0 .219(interprets the follo)2.719 F .219(wing options)-.25 F +(when it is in)108 276 Q -.2(vo)-.4 G -.1(ke).2 G(d:).1 E F2108 +292.8 Q F0 .868(If the)158 292.8 R F23.368 E F0 .867(option is pr\ +esent, then commands are read from the \214rst non-option ar)3.368 F +(gument)-.18 E F3(com-)3.567 E(mand_string)158 304.8 Q F0 5.726(.I).22 G +3.226(ft)-5.726 G .726(here are ar)-3.226 F .727(guments after the)-.18 +F F3(command_string)3.427 E F0 3.227(,t).22 G .727(he \214rst ar)-3.227 +F .727(gument is assigned)-.18 F(to)158 316.8 Q F2($0)2.919 E F0 .419 +(and an)2.919 F 2.919(yr)-.15 G .419(emaining ar)-2.919 F .418 +(guments are assigned to the positional parameters.)-.18 F .418 +(The assignment)5.418 F(to)158 328.8 Q F2($0)2.5 E F0 +(sets the name of the shell, which is used in w)2.5 E +(arning and error messages.)-.1 E F2108 340.8 Q F0(If the)158 +340.8 Q F22.5 E F0(option is present, the shell is)2.5 E F3(inter) +2.51 E(active)-.15 E F0(.).18 E F2108 352.8 Q F0(Mak)158 352.8 Q +(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 364.8 Q F0(If the)158 364.8 Q 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 376.8 Q F0 .602(If the)158 376.8 R F23.102 E F0 .602 +(option is present, or if no ar)3.102 F .602 +(guments remain after option processing, then commands)-.18 F .617 +(are read from the standard input.)158 388.8 R .617(This option allo) +5.617 F .616(ws the positional parameters to be set when)-.25 F(in)158 +400.8 Q -.2(vo)-.4 G(king an interacti).2 E .3 -.15(ve s)-.25 H +(hell or when reading input through a pipe.).15 E F2108 412.8 Q F0 +3.183(Al)158 412.8 S .683(ist of all double-quoted strings preceded by) +-3.183 F F2($)3.184 E F0 .684(is printed on the standard output.)3.184 F +.684(These are)5.684 F .458(the strings that are subject to language tr\ +anslation when the current locale is not)158 424.8 R F2(C)2.958 E F0(or) +2.958 E F2(POSIX)2.958 E F0(.)A(This implies the)158 436.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 448.8 Q F3(shopt_option)A F2(])A F3(shopt_option)158 +460.8 Q F0 1.097(is one of the shell options accepted by the)3.596 F F2 +(shopt)3.597 E F0 -.2(bu)3.597 G 1.097(iltin \(see).2 F F4 1.097 +(SHELL B)3.597 F(UIL)-.09 E(TIN)-.828 E(COMMANDS)158 472.8 Q F0(belo) +3.003 E 3.253(w\). If)-.25 F F3(shopt_option)3.253 E F0 .753 +(is present,)3.253 F F23.253 E F0 .753(sets the v)3.253 F .753 +(alue of that option;)-.25 F F2(+O)3.252 E F0(unsets)3.252 E 2.624 +(it. If)158 484.8 R F3(shopt_option)2.624 E F0 .124 +(is not supplied, the names and v)2.624 F .125 +(alues of the shell options accepted by)-.25 F F2(shopt)2.625 E F0 .506 +(are printed on the standard output.)158 496.8 R .505(If the in)5.505 F +-.2(vo)-.4 G .505(cation option is).2 F F2(+O)3.005 E F0 3.005(,t)C .505 +(he output is displayed in a)-3.005 F +(format that may be reused as input.)158 508.8 Q F2108 520.8 Q F0 +(A)158 520.8 Q F23.363 E F0 .864 +(signals the end of options and disables further option processing.) +3.363 F(An)5.864 E 3.364(ya)-.15 G -.18(rg)-3.364 G .864(uments after) +.18 F(the)158 532.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 549.6 Q F0 .304 +(also interprets a number of multi-character options.)2.804 F .303 +(These options must appear on the command line)5.303 F +(before the single-character options to be recognized.)108 561.6 Q F2 +108 578.4 Q(ugger)-.2 E F0 .474(Arrange for the deb)144 +590.4 R .474(ugger pro\214le to be e)-.2 F -.15(xe)-.15 G .475 +(cuted before the shell starts.).15 F -.45(Tu)5.475 G .475(rns on e).45 +F .475(xtended deb)-.15 F(ug-)-.2 E +(ging mode \(see the description of the)144 602.4 Q F2(extdeb)2.5 E(ug) +-.2 E F0(option to the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G(iltin belo) +.2 E(w\).)-.25 E F2(\255\255dump\255po\255strings)108 614.4 Q F0(Equi) +144 626.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 638.4 Q F0(Equi)144 650.4 Q -.25(va)-.25 G +(lent to).25 E F22.5 E F0(.)A F2(\255\255help)108 662.4 Q F0 +(Display a usage message on standard output and e)144 662.4 Q +(xit successfully)-.15 E(.)-.65 E F2108 674.4 Q F3 +(\214le)2.5 E F2108 686.4 Q(c\214le)-.18 E F3(\214le)2.5 E F0 +(Ex)144 698.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 710.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E +(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(1)195.395 E 0 Cg EP +%%Page: 2 2 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(\255\255login)108 84 Q F0(Equi)144 96 Q -.25(va)-.25 G(lent to).25 E +F12.5 E F0(.)A F1(\255\255noediting)108 112.8 Q F0 +(Do not use the GNU)144 124.8 Q F1 -.18(re)2.5 G(adline).18 E F0 +(library to read command lines when the shell is interacti)2.5 E -.15 +(ve)-.25 G(.).15 E F1(\255\255nopr)108 141.6 Q(o\214le)-.18 E F0 .017 +(Do not read either the system-wide startup \214le)144 153.6 R/F2 10 +/Times-Italic@0 SF(/etc/pr)4.183 E(o\214le)-.45 E F0 .017(or an)4.183 F +2.517(yo)-.15 G 2.517(ft)-2.517 G .018 +(he personal initialization \214les)-2.517 F F2(~/.bash_pr)143.5 165.6 Q +(o\214le)-.45 E F0(,).18 E F2(~/.bash_lo)2.305 E(gin)-.1 E F0 2.805(,o) +.24 G(r)-2.805 E F2(~/.pr)2.305 E(o\214le)-.45 E F0 5.305(.B).18 G 2.805 +(yd)-5.305 G(ef)-2.805 E(ault,)-.1 E F1(bash)2.805 E F0 .305 +(reads these \214les when it is in)2.805 F -.2(vo)-.4 G -.1(ke).2 G +2.805(da).1 G(s)-2.805 E 2.5(al)144 177.6 S(ogin shell \(see)-2.5 E/F3 9 +/Times-Bold@0 SF(INV)2.5 E(OCA)-.405 E(TION)-.855 E F0(belo)2.25 E(w\).) +-.25 E F1108 194.4 Q(c)-.18 E F0 .161(Do not read and e)144 +194.4 R -.15(xe)-.15 G .162(cute the personal initialization \214le).15 +F F2(~/.bashr)2.162 E(c)-.37 E F0 .162(if the shell is interacti)2.972 F +-.15(ve)-.25 G 5.162(.T).15 G .162(his op-)-5.162 F(tion is on by def) +144 206.4 Q(ault if the shell is in)-.1 E -.2(vo)-.4 G -.1(ke).2 G 2.5 +(da).1 G(s)-2.5 E F1(sh)2.5 E F0(.)A F1(\255\255posix)108 223.2 Q F0 +1.783(Change the beha)144 235.2 R 1.782(vior of)-.2 F F1(bash)4.282 E F0 +1.782(where the def)4.282 F 1.782(ault operation dif)-.1 F 1.782 +(fers from the POSIX standard to)-.25 F .332(match the standard \()144 +247.2 R F2 .332(posix mode)B F0 2.832(\). See)B F3 .333(SEE ALSO)2.833 F +F0(belo)2.583 E 2.833(wf)-.25 G .333 +(or a reference to a document that details)-2.833 F(ho)144 259.2 Q 2.5 +(wp)-.25 G(osix mode af)-2.5 E(fects bash')-.25 E 2.5(sb)-.55 G(eha)-2.5 +E(vior)-.2 E(.)-.55 E F1108 276 Q(estricted)-.18 E F0 +(The shell becomes restricted \(see)144 288 Q F3(RESTRICTED SHELL)2.5 E +F0(belo)2.25 E(w\).)-.25 E F1108 304.8 Q(erbose)-.1 E F0(Equi) +144 316.8 Q -.25(va)-.25 G(lent to).25 E F12.5 E F0(.)A F1 +108 333.6 Q(ersion)-.1 E F0(Sho)144 345.6 Q 2.5(wv)-.25 G +(ersion information for this instance of)-2.65 E F1(bash)2.5 E F0 +(on the standard output and e)2.5 E(xit successfully)-.15 E(.)-.65 E/F4 +10.95/Times-Bold@0 SF(ARGUMENTS)72 362.4 Q F0 .017(If ar)108 374.4 R +.016(guments remain after option processing, and neither the)-.18 F F1 +2.516 E F0 .016(nor the)2.516 F F12.516 E F0 .016 +(option has been supplied, the \214rst)2.516 F(ar)108 386.4 Q .041(gume\ +nt is assumed to be the name of a \214le containing shell commands.)-.18 +F(If)5.041 E F1(bash)2.541 E F0 .041(is in)2.541 F -.2(vo)-.4 G -.1(ke) +.2 G 2.541(di).1 G 2.541(nt)-2.541 G .042(his f)-2.541 F(ashion,)-.1 E +F1($0)108 398.4 Q F0 .936(is set to the name of the \214le, and the pos\ +itional parameters are set to the remaining ar)3.436 F(guments.)-.18 E +F1(Bash)5.935 E F0 .233(reads and e)108 410.4 R -.15(xe)-.15 G .233 +(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 .234 +(xit status of the last com-)-.15 F .349(mand e)108 422.4 R -.15(xe)-.15 +G .349(cuted in the script.).15 F .349(If no commands are e)5.349 F -.15 +(xe)-.15 G .349(cuted, the e).15 F .348(xit status is 0.)-.15 F .348 +(An attempt is \214rst made to)5.348 F .253 +(open the \214le in the current directory)108 434.4 R 2.753(,a)-.65 G +.254 +(nd, if no \214le is found, then the shell searches the directories in) +-2.753 F F3 -.666(PA)2.754 G(TH)-.189 E F0(for the script.)108 446.4 Q +F4(INV)72 463.2 Q(OCA)-.493 E(TION)-1.04 E F0(A)108 475.2 Q F2(lo)2.5 E +(gin shell)-.1 E F0(is one whose \214rst character of ar)2.5 E +(gument zero is a)-.18 E F12.5 E F0 2.5(,o)C 2.5(ro)-2.5 G +(ne started with the)-2.5 E F1(\255\255login)2.5 E F0(option.)2.5 E(An) +108 492 Q F2(inter)2.734 E(active)-.15 E F0 .234 +(shell is one started without non-option ar)2.734 F .234 +(guments \(unless)-.18 F F12.734 E F0 .233 +(is speci\214ed\) and without the)2.734 F F12.733 E F0 .509(optio\ +n whose standard input and error are both connected to terminals \(as d\ +etermined by)108 504 R F2(isatty)3.019 E F0 .509(\(3\)\), or one).32 F +.946(started with the)108 516 R F13.445 E F0(option.)3.445 E F3 +(PS1)5.945 E F0 .945(is set and)3.195 F F1<24ad>3.445 E F0(includes) +3.445 E F1(i)3.445 E F0(if)3.445 E F1(bash)3.445 E F0 .945(is interacti) +3.445 F -.15(ve)-.25 G 3.445(,a).15 G(llo)-3.445 E .945 +(wing a shell script or a)-.25 F(startup \214le to test this state.)108 +528 Q .032(The follo)108 544.8 R .032(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 .033(xist b)-.15 F .033 +(ut cannot be)-.2 F(read,)108 556.8 Q F1(bash)2.6 E F0 .1 +(reports an error)2.6 F 5.1(.T)-.55 G .1(ildes are e)-5.45 F .099 +(xpanded in \214lenames as described belo)-.15 F 2.599(wu)-.25 G(nder) +-2.599 E F1 -.18(Ti)2.599 G .099(lde Expansion).18 F F0(in)2.599 E(the) +108 568.8 Q F3(EXP)2.5 E(ANSION)-.666 E F0(section.)2.25 E(When)108 +585.6 Q F1(bash)2.895 E F0 .395(is in)2.895 F -.2(vo)-.4 G -.1(ke).2 G +2.895(da).1 G 2.895(sa)-2.895 G 2.895(ni)-2.895 G(nteracti)-2.895 E .695 +-.15(ve l)-.25 H .396(ogin shell, or as a non-interacti).15 F .696 -.15 +(ve s)-.25 H .396(hell with the).15 F F1(\255\255login)2.896 E F0 .396 +(option, it)2.896 F 1.334(\214rst reads and e)108 597.6 R -.15(xe)-.15 G +1.334(cutes commands from the \214le).15 F F2(/etc/pr)3.834 E(o\214le) +-.45 E F0 3.834(,i)C 3.833(ft)-3.834 G 1.333(hat \214le e)-3.833 F 3.833 +(xists. After)-.15 F 1.333(reading that \214le, it)3.833 F .248 +(looks for)108 609.6 R F2(~/.bash_pr)2.748 E(o\214le)-.45 E F0(,)A F2 +(~/.bash_lo)2.748 E(gin)-.1 E F0 2.748(,a)C(nd)-2.748 E F2(~/.pr)2.748 E +(o\214le)-.45 E F0 2.748(,i)C 2.749(nt)-2.748 G .249(hat order)-2.749 F +2.749(,a)-.4 G .249(nd reads and e)-2.749 F -.15(xe)-.15 G .249 +(cutes commands from).15 F .076(the \214rst one that e)108 621.6 R .076 +(xists and is readable.)-.15 F(The)5.076 E F1(\255\255nopr)2.576 E +(o\214le)-.18 E F0 .076 +(option may be used when the shell is started to in-)2.576 F +(hibit this beha)108 633.6 Q(vior)-.2 E(.)-.55 E 1.104 +(When an interacti)108 650.4 R 1.404 -.15(ve l)-.25 H 1.104 +(ogin shell e).15 F 1.104(xits, or a non-interacti)-.15 F 1.404 -.15 +(ve l)-.25 H 1.104(ogin shell e).15 F -.15(xe)-.15 G 1.104(cutes the).15 +F F1(exit)3.604 E F0 -.2(bu)3.604 G 1.104(iltin command,).2 F F1(bash) +108 662.4 Q 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 679.2 R 1.998 -.15(ve s)-.25 H 1.698 +(hell that is not a login shell is started,).15 F F1(bash)4.197 E F0 +1.697(reads and e)4.197 F -.15(xe)-.15 G 1.697(cutes commands from).15 F +F2(~/.bashr)108 691.2 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G .035 +(hat \214le e)-2.535 F 2.535(xists. This)-.15 F .036 +(may be inhibited by using the)2.535 F F12.536 E(c)-.18 E F0 +2.536(option. The)2.536 F F12.536 E(c\214le)-.18 E F2(\214le) +2.536 E F0 .036(option will)2.536 F(force)108 703.2 Q F1(bash)2.5 E F0 +(to read and e)2.5 E -.15(xe)-.15 G(cute commands from).15 E F2(\214le) +2.5 E F0(instead of)2.5 E F2(~/.bashr)2.5 E(c)-.37 E F0(.)A(When)108 720 +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(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(2) +195.395 E 0 Cg EP +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0 +SF -.27(BA)108 84 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 96 Q -.15 +(xe)-.15 G(cute.).15 E/F2 10/Times-Bold@0 SF(Bash)5 E F0(beha)2.5 E -.15 +(ve)-.2 G 2.5(sa).15 G 2.5(si)-2.5 G 2.5(ft)-2.5 G(he follo)-2.5 E +(wing command were e)-.25 E -.15(xe)-.15 G(cuted:).15 E/F3 10/Courier@0 +SF(if [ \255n "$BASH_ENV" ]; then . "$BASH_ENV"; fi)144 114 Q F0 -.2(bu) +108 132 S 2.5(tt).2 G(he v)-2.5 E(alue of the)-.25 E F1 -.666(PA)2.5 G +(TH)-.189 E F0 -.25(va)2.25 G +(riable is not used to search for the \214lename.).25 E(If)108 148.8 Q +F2(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 F2(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 F2(sh)3.417 E F0(as) +3.417 E .145 +(closely as possible, while conforming to the POSIX standard as well.) +108 160.8 R .145(When in)5.145 F -.2(vo)-.4 G -.1(ke).2 G 2.645(da).1 G +2.645(sa)-2.645 G 2.645(ni)-2.645 G(nteracti)-2.645 E .445 -.15(ve l) +-.25 H(ogin).15 E 1.264(shell, or a non-interacti)108 172.8 R 1.564 -.15 +(ve s)-.25 H 1.264(hell with the).15 F F2(\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 184.8 Q/F4 10/Times-Italic@0 SF(/etc/pr) +4.173 E(o\214le)-.45 E F0(and)3.203 E F4(~/.pr)2.523 E(o\214le)-.45 E F0 +3.023(,i).18 G 3.024(nt)-3.023 G .524(hat order)-3.024 F 5.524(.T)-.55 G +(he)-5.524 E F2(\255\255nopr)3.024 E(o\214le)-.18 E F0 .524 +(option may be used to inhibit this beha)3.024 F(vior)-.2 E(.)-.55 E +.418(When in)108 196.8 R -.2(vo)-.4 G -.1(ke).2 G 2.918(da).1 G 2.918 +(sa)-2.918 G 2.918(ni)-2.918 G(nteracti)-2.918 E .718 -.15(ve s)-.25 H +.418(hell with the name).15 F F2(sh)2.918 E F0(,)A F2(bash)2.918 E F0 +.418(looks for the v)2.918 F(ariable)-.25 E F1(ENV)2.918 E/F5 9 +/Times-Roman@0 SF(,)A F0 -.15(ex)2.667 G .417(pands its v).15 F(alue) +-.25 E .171(if it is de\214ned, and uses the e)108 208.8 R .171 +(xpanded v)-.15 F .171(alue as the name of a \214le to read and e)-.25 F +-.15(xe)-.15 G 2.671(cute. Since).15 F 2.671(as)2.671 G .171(hell in) +-2.671 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E(as)108 220.8 Q F2(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 F23.08 E(c\214le)-.18 E F0 +.58(option has)3.08 F .182(no ef)108 232.8 R 2.682(fect. A)-.25 F +(non-interacti)2.682 E .482 -.15(ve s)-.25 H .182(hell in).15 F -.2(vo) +-.4 G -.1(ke).2 G 2.682(dw).1 G .182(ith the name)-2.682 F F2(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 244.8 Q -.2(vo)-.4 G -.1(ke) +.2 G 2.5(da).1 G(s)-2.5 E F2(sh)2.5 E F0(,)A F2(bash)2.5 E F0(enters)2.5 +E F4(posix)3.75 E F0(mode after the startup \214les are read.)3.03 E +(When)108 261.6 Q F2(bash)2.727 E F0 .226(is started in)2.727 F F4 +(posix)3.976 E F0 .226(mode, as with the)3.256 F F2(\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 273.6 R .341 +(In this mode, interacti)5.341 F .641 -.15(ve s)-.25 H .341(hells e).15 +F .341(xpand the)-.15 F F1(ENV)2.841 E F0 -.25(va)2.591 G .342 +(riable and commands are read and).25 F -.15(exe)108 285.6 S +(cuted from the \214le whose name is the e).15 E(xpanded v)-.15 E 2.5 +(alue. No)-.25 F(other startup \214les are read.)2.5 E F2(Bash)108 302.4 +Q F0 .224(attempts to determine when it is being run with its standard \ +input connected to a netw)2.724 F .223(ork connection,)-.1 F .025 +(as when e)108 314.4 R -.15(xe)-.15 G .025 +(cuted by the remote shell daemon, usually).15 F F4 -.1(rs)2.525 G(hd).1 +E F0 2.525(,o)C 2.525(rt)-2.525 G .025(he secure shell daemon)-2.525 F +F4(sshd)2.525 E F0 5.025(.I)C(f)-5.025 E F2(bash)2.525 E F0(deter)2.525 +E(-)-.2 E .134(mines it is being run in this f)108 326.4 R .134 +(ashion, it reads and e)-.1 F -.15(xe)-.15 G .133(cutes commands from) +.15 F F4(~/.bashr)2.633 E(c)-.37 E F0 2.633(,i)C 2.633(ft)-2.633 G .133 +(hat \214le e)-2.633 F .133(xists and is)-.15 F 2.869(readable. It)108 +338.4 R .369(will not do this if in)2.869 F -.2(vo)-.4 G -.1(ke).2 G +2.869(da).1 G(s)-2.869 E F2(sh)2.869 E F0 5.369(.T)C(he)-5.369 E F2 +2.869 E(c)-.18 E F0 .369 +(option may be used to inhibit this beha)2.869 F(vior)-.2 E 2.869(,a)-.4 +G(nd)-2.869 E(the)108 350.4 Q F22.919 E(c\214le)-.18 E F0 .419 +(option may be used to force another \214le to be read, b)2.919 F .419 +(ut neither)-.2 F F4 -.1(rs)2.919 G(hd).1 E F0(nor)2.919 E F4(sshd)2.919 +E F0 .418(generally in)2.919 F -.2(vo)-.4 G -.1(ke).2 G +(the shell with those options or allo)108 362.4 Q 2.5(wt)-.25 G +(hem to be speci\214ed.)-2.5 E .433(If the shell is started with the ef) +108 379.2 R(fecti)-.25 E .733 -.15(ve u)-.25 H .433 +(ser \(group\) id not equal to the real user \(group\) id, and the).15 F +F22.934 E F0(op-)2.934 E 1.124(tion is not supplied, no startup \ +\214les are read, shell functions are not inherited from the en)108 +391.2 R 1.124(vironment, the)-.4 F F1(SHELLOPTS)108 403.2 Q F5(,)A F1 +-.27(BA)2.959 G(SHOPTS).27 E F5(,)A F1(CDP)2.959 E -.855(AT)-.666 G(H) +.855 E F5(,)A F0(and)2.959 E F1(GLOBIGNORE)3.209 E F0 -.25(va)2.959 G +.709(riables, if the).25 F 3.209(ya)-.15 G .71(ppear in the en)-3.209 F +.71(vironment, are)-.4 F .905(ignored, and the ef)108 415.2 R(fecti)-.25 +E 1.205 -.15(ve u)-.25 H .904(ser id is set to the real user id.).15 F +.904(If the)5.904 F F23.404 E F0 .904(option is supplied at in) +3.404 F -.2(vo)-.4 G .904(cation, the).2 F(startup beha)108 427.2 Q +(vior is the same, b)-.2 E(ut the ef)-.2 E(fecti)-.25 E .3 -.15(ve u) +-.25 H(ser id is not reset.).15 E/F6 10.95/Times-Bold@0 SF(DEFINITIONS) +72 444 Q F0(The follo)108 456 Q +(wing de\214nitions are used throughout the rest of this document.)-.25 +E F2(blank)108 468 Q F0 2.5(As)144 468 S(pace or tab)-2.5 E(.)-.4 E F2 +-.1(wo)108 480 S(rd).1 E F0 2.5(As)144 480 S +(equence of characters considered as a single unit by the shell.)-2.5 E +(Also kno)5 E(wn as a)-.25 E F2(tok)2.5 E(en)-.1 E F0(.)A F2(name)108 +492 Q F0(A)144 492 Q F4(wor)3.005 E(d)-.37 E F0 .165 +(consisting only of alphanumeric characters and underscores, and be) +3.435 F .166(ginning with an alpha-)-.15 F +(betic character or an underscore.)144 504 Q(Also referred to as an)5 E +F2(identi\214er)2.5 E F0(.)A F2(metacharacter)108 516 Q F0 2.5(Ac)144 +528 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 F2 5(|&;\(\)<>s)144 540 S 2.5 +(pace tab newline)-5 F(contr)108 552 Q(ol operator)-.18 E F0(A)144 564 Q +F4(tok)2.5 E(en)-.1 E F0(that performs a control function.)2.5 E +(It is one of the follo)5 E(wing symbols:)-.25 E F2 2.5 +(|| & && ; ;; ;& ;;& \( \) | |&)144 576 R()10 E F6(RESER)72 +592.8 Q(VED W)-.602 E(ORDS)-.11 E F4 .307(Reserved wor)108 604.8 R(ds) +-.37 E F0 .307(are w)2.807 F .307(ords that ha)-.1 F .607 -.15(ve a s) +-.2 H .306(pecial meaning to the shell.).15 F .306(The follo)5.306 F +.306(wing w)-.25 F .306(ords are recognized as)-.1 F(reserv)108 616.8 Q +.313(ed when unquoted and either the \214rst w)-.15 F .314 +(ord of a command \(see)-.1 F F1 .314(SHELL GRAMMAR)2.814 F F0(belo) +2.564 E .314(w\), the third)-.25 F -.1(wo)108 628.8 S .644(rd of a).1 F +F2(case)3.144 E F0(or)3.144 E F2(select)3.143 E F0 .643(command \(only) +3.143 F F2(in)3.143 E F0 .643(is v)3.143 F .643(alid\), or the third w) +-.25 F .643(ord of a)-.1 F F2 -.25(fo)3.143 G(r).25 E F0 .643 +(command \(only)3.143 F F2(in)3.143 E F0(and)3.143 E F2(do)3.143 E F0 +(are v)108 640.8 Q(alid\):)-.25 E F2 11.295(!c)144 657.6 S 8.795 +(ase copr)-11.295 F 8.795(oc do done elif else esac \214 f)-.18 F 8.795 +(or function if in select then)-.25 F 7.5(until while { } time [[ ]])144 +669.6 R F6(SHELL GRAMMAR)72 686.4 Q F2(Simple Commands)87 698.4 Q F0(A) +108 710.4 Q F4 .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 F2(blank)2.888 E F0 .388(-separated w)B .388 +(ords and)-.1 F .815(redirections, and terminated by a)108 722.4 R F4 +(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(GNU Bash 5.1)72 768 Q(2020 October 29) +141.235 E(3)195.395 E 0 Cg EP +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(and is passed as ar)108 84 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(The return v)108 100.8 Q(alue of a) +-.25 E/F1 10/Times-Italic@0 SF(simple command)2.5 E F0(is its e)2.5 E +(xit status, or 128+)-.15 E F1(n)A F0 +(if the command is terminated by signal)3.333 E F1(n)2.86 E F0(.).24 E +/F2 10/Times-Bold@0 SF(Pipelines)87 117.6 Q F0(A)108 129.6 Q F1 +(pipeline)2.996 E F0 .496(is a sequence of one or more commands separat\ +ed by one of the control operators)2.996 F F2(|)2.996 E F0(or)2.996 E F2 +(|&)2.996 E F0 5.496(.T)C(he)-5.496 E(format for a pipeline is:)108 +141.6 Q([)144 158.4 Q F2(time)A F0([)2.5 E F2A F0(]] [ ! ])A F1 +(command)2.5 E F0 2.5([[)2.5 G F2(|)-2.5 E/F3 10/Symbol SFA F2(|&)A +F0(])A F1(command2)2.5 E F0(... ])2.5 E .231(The standard output of)108 +175.2 R F1(command)2.931 E F0 .232 +(is connected via a pipe to the standard input of)3.502 F F1(command2) +2.932 E F0 5.232(.T).02 G .232(his connec-)-5.232 F .643 +(tion is performed before an)108 187.2 R 3.143(yr)-.15 G .642 +(edirections speci\214ed by the command \(see)-3.143 F/F4 9/Times-Bold@0 +SF(REDIRECTION)3.142 E F0(belo)2.892 E 3.142(w\). If)-.25 F F2(|&)3.142 +E F0(is)3.142 E(used,)108 199.2 Q F1(command)2.663 E F0 1.263 -.55('s s) +D .163(tandard error).55 F 2.663(,i)-.4 G 2.663(na)-2.663 G .163 +(ddition to its standard output, is connected to)-2.663 F F1(command2) +2.664 E F0 1.264 -.55('s s)D .164(tandard in-).55 F .438 +(put through the pipe; it is shorthand for)108 211.2 R F2 .437(2>&1 |) +2.937 F F0 5.437(.T)C .437 +(his implicit redirection of the standard error to the stan-)-5.437 F +(dard output is performed after an)108 223.2 Q 2.5(yr)-.15 G +(edirections speci\214ed by the command.)-2.5 E .48 +(The return status of a pipeline is the e)108 240 R .48 +(xit status of the last command, unless the)-.15 F F2(pipefail)2.98 E F0 +.48(option is enabled.)2.98 F(If)108 252 Q F2(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 264 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 F2(!)3.111 E F0 .611 +(precedes a pipeline, the)5.611 F -.15(ex)108 276 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 288 +Q(alue.)-.25 E .298(If the)108 304.8 R F2(time)2.799 E F0(reserv)2.799 E +.299(ed w)-.15 F .299(ord precedes a pipeline, the elapsed as well as u\ +ser and system time consumed by its)-.1 F -.15(exe)108 316.8 S .14 +(cution are reported when the pipeline terminates.).15 F(The)5.139 E F2 +2.639 E F0 .139(option changes the output format to that spec-) +2.639 F .302(i\214ed by POSIX.)108 328.8 R .303(When the shell is in) +5.302 F F1 .303(posix mode)2.803 F F0 2.803(,i)C 2.803(td)-2.803 G .303 +(oes not recognize)-2.803 F F2(time)2.803 E F0 .303(as a reserv)2.803 F +.303(ed w)-.15 F .303(ord if the ne)-.1 F(xt)-.15 E(tok)108 340.8 Q .736 +(en be)-.1 F .736(gins with a `-'.)-.15 F(The)5.736 E F4(TIMEFORMA)3.236 +E(T)-.855 E F0 -.25(va)2.986 G .736 +(riable may be set to a format string that speci\214es ho).25 F 3.235 +(wt)-.25 G(he)-3.235 E .879 +(timing information should be displayed; see the description of)108 +352.8 R F4(TIMEFORMA)3.38 E(T)-.855 E F0(under)3.13 E F2 .88(Shell V) +3.38 F(ariables)-.92 E F0(be-)3.38 E(lo)108 364.8 Q -.65(w.)-.25 G .162 +(When the shell is in)108 381.6 R F1 .162(posix mode)2.662 F F0(,)A F2 +(time)2.662 E F0 .162(may be follo)2.662 F .161(wed by a ne)-.25 F 2.661 +(wline. In)-.25 F .161(this case, the shell displays the to-)2.661 F +.243(tal user and system time consumed by the shell and its children.) +108 393.6 R(The)5.243 E F4(TIMEFORMA)2.743 E(T)-.855 E F0 -.25(va)2.493 +G .243(riable may be used).25 F +(to specify the format of the time information.)108 405.6 Q .656 +(Each command in a pipeline is e)108 422.4 R -.15(xe)-.15 G .655 +(cuted as a separate process \(i.e., in a subshell\).).15 F(See)5.655 E +F4 .655(COMMAND EXE-)3.155 F .05(CUTION ENVIR)108 434.4 R(ONMENT)-.27 E +F0 .051(for a description of a subshell en)2.3 F 2.551(vironment. If)-.4 +F(the)2.551 E F2(lastpipe)2.551 E F0 .051(option is enabled us-)2.551 F +.416(ing the)108 446.4 R F2(shopt)2.916 E F0 -.2(bu)2.916 G .416 +(iltin \(see the description of).2 F F2(shopt)2.916 E F0(belo)2.916 E +.416(w\), the last element of a pipeline may be run by the)-.25 F +(shell process.)108 458.4 Q F2(Lists)87 475.2 Q F0(A)108 487.2 Q F1 +(list)2.849 E F0 .349(is a sequence of one or more pipelines separated \ +by one of the operators)2.849 F F2(;)2.85 E F0(,)A F2(&)2.85 E F0(,)A F2 +(&&)2.85 E F0 2.85(,o)C(r)-2.85 E F2(||)2.85 E F0 2.85(,a)C .35 +(nd option-)-2.85 F(ally terminated by one of)108 499.2 Q F2(;)2.5 E F0 +(,)A F2(&)2.5 E F0 2.5(,o)C(r)-2.5 E F2()2.5 E F0(.)A .961 +(Of these list operators,)108 516 R F2(&&)3.461 E F0(and)3.461 E F2(||) +3.461 E F0(ha)3.461 E 1.261 -.15(ve e)-.2 H .961(qual precedence, follo) +.15 F .96(wed by)-.25 F F2(;)3.46 E F0(and)3.46 E F2(&)3.46 E F0 3.46 +(,w)C .96(hich ha)-3.46 F 1.26 -.15(ve e)-.2 H .96(qual prece-).15 F +(dence.)108 528 Q 2.5(As)108 544.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 561.6 R F2(&) +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.529 E(kgr)-.2 E(ound)-.45 E F0 +(in)2.529 E 2.678(as)108 573.6 S 2.678(ubshell. The)-2.678 F .178 +(shell does not w)2.678 F .178 +(ait for the command to \214nish, and the return status is 0.)-.1 F .178 +(These are referred)5.178 F .778(to as)108 585.6 R F1(async)3.278 E(hr) +-.15 E(onous)-.45 E F0 3.278(commands. Commands)3.278 F .779 +(separated by a)3.278 F F2(;)3.279 E F0 .779(are e)3.279 F -.15(xe)-.15 +G .779(cuted sequentially; the shell w).15 F .779(aits for)-.1 F +(each command to terminate in turn.)108 597.6 Q +(The return status is the e)5 E(xit status of the last command e)-.15 E +-.15(xe)-.15 G(cuted.).15 E .172(AND and OR lists are sequences of one \ +or more pipelines separated by the)108 614.4 R F2(&&)2.671 E F0(and) +2.671 E F2(||)2.671 E F0 .171(control operators, re-)2.671 F(specti)108 +626.4 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 E +-.15(xe)-.15 G(cuted with left associati).15 E(vity)-.25 E 5(.A)-.65 G +2.5(nA)-5 G(ND list has the form)-2.5 E F1(command1)144 643.2 Q F2(&&) +2.5 E F1(command2)2.5 E(command2)108.2 660 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 \(success\).)-.15 E(An OR list has the form)108 +676.8 Q F1(command1)144 693.6 Q F2(||)2.5 E F1(command2)2.5 E(command2) +108.2 710.4 Q F0 .434(is e)2.954 F -.15(xe)-.15 G .434 +(cuted if, and only if,).15 F F1(command1)3.135 E F0 .435 +(returns a non-zero e)2.935 F .435(xit status.)-.15 F .435 +(The return status of AND)5.435 F(and OR lists is the e)108 722.4 Q +(xit status of the last command e)-.15 E -.15(xe)-.15 G +(cuted in the list.).15 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 +E(4)195.395 E 0 Cg EP +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Compound Commands)87 84 Q F0(A)108 96 Q/F2 10/Times-Italic@0 SF 1.054 +(compound command)3.554 F F0 1.054(is one of the follo)3.554 F 3.553 +(wing. In)-.25 F 1.053(most cases a)3.553 F F2(list)3.553 E F0 1.053 +(in a command')3.553 F 3.553(sd)-.55 G 1.053(escription may be)-3.553 F +1.026(separated from the rest of the command by one or more ne)108 108 R +1.026(wlines, and may be follo)-.25 F 1.027(wed by a ne)-.25 F 1.027 +(wline in)-.25 F(place of a semicolon.)108 120 Q(\()108 136.8 Q F2(list) +A F0(\))A F2(list)144 136.8 Q F0 .011(is e)2.512 F -.15(xe)-.15 G .011 +(cuted in a subshell en).15 F .011(vironment \(see)-.4 F/F3 9 +/Times-Bold@0 SF .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT)-.27 E F0 +(belo)2.261 E(w\).)-.25 E -1.11(Va)144 148.8 S .016 +(riable assignments and b)1.11 F .016(uiltin commands that af)-.2 F .016 +(fect the shell')-.25 F 2.517(se)-.55 G -.4(nv)-2.517 G .017 +(ironment do not remain in ef-).4 F(fect after the command completes.) +144 160.8 Q(The return status is the e)5 E(xit status of)-.15 E F2(list) +2.5 E F0(.)A({)108 177.6 Q F2(list)2.5 E F0 2.5(;})C F2(list)144 177.6 Q +F0 .402(is simply e)2.902 F -.15(xe)-.15 G .401 +(cuted in the current shell en).15 F(vironment.)-.4 E F2(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 189.6 R .714(is kno)3.214 F .714(wn as a)-.25 F F2 +(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715 +(he return status is the e)-5.715 F .715(xit status of)-.15 F F2(list) +3.215 E F0 5.715(.N)C(ote)-5.715 E .22(that unlik)144 201.6 R 2.72(et) +-.1 G .22(he metacharacters)-2.72 F F1(\()2.72 E F0(and)2.72 E F1(\)) +2.72 E F0(,)A F1({)2.72 E F0(and)2.72 E F1(})2.719 E F0(are)2.719 E F2 +-.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 213.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 225.6 Q F2 +(list)2.5 E F0(by whitespace or another shell metacharacter)2.5 E(.)-.55 +E(\(\()108 242.4 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144 +254.4 Q F2 -.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 F3 .051(ARITHMETIC EV)2.551 F(ALU)-1.215 E +(A-)-.54 E(TION)144 266.4 Q/F4 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 278.4 Q +(This is e)5 E(xactly equi)-.15 E -.25(va)-.25 G(lent to).25 E F1(let ") +2.5 E F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(")A F0(.)A F1([[)108 295.2 Q +F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(]])2.5 E F0 .003 +(Return a status of 0 or 1 depending on the e)144 307.2 R -.25(va)-.25 G +.003(luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)2.503 +G(pr).2 E(ession)-.37 E F0 5.003(.E)C(x-)-5.003 E .758 +(pressions are composed of the primaries described belo)144 319.2 R +3.259(wu)-.25 G(nder)-3.259 E F3(CONDITION)3.259 E .759(AL EXPRESSIONS) +-.18 F F4(.)A F0 -.8(Wo)144 331.2 S .029(rd splitting and pathname e).8 +F .029(xpansion are not performed on the w)-.15 F .029(ords between the) +-.1 F F1([[)2.528 E F0(and)2.528 E F1(]])2.528 E F0 2.528(;t)C(ilde) +-2.528 E -.15(ex)144 343.2 S 3.968(pansion, parameter and v).15 F 3.969 +(ariable e)-.25 F 3.969(xpansion, arithmetic e)-.15 F 3.969 +(xpansion, command substitution,)-.15 F .571 +(process substitution, and quote remo)144 355.2 R -.25(va)-.15 G 3.071 +(la).25 G .571(re performed.)-3.071 F .571 +(Conditional operators such as)5.571 F F13.07 E F0 .57(must be) +3.07 F(unquoted to be recognized as primaries.)144 367.2 Q +(When used with)144 385.2 Q F1([[)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E +F0(and)2.5 E F1(>)2.5 E F0(operators sort le)2.5 E +(xicographically using the current locale.)-.15 E .502(When the)144 +403.2 R F1(==)3.002 E F0(and)3.002 E F1(!=)3.002 E F0 .502(operators ar\ +e used, the string to the right of the operator is considered a pat-) +3.002 F .81(tern and matched according to the rules described belo)144 +415.2 R 3.31(wu)-.25 G(nder)-3.31 E F1 -.1(Pa)3.31 G(tter).1 E 3.31(nM) +-.15 G(atching)-3.31 E F0 3.31(,a)C 3.31(si)-3.31 G 3.31(ft)-3.31 G(he) +-3.31 E F1(ext-)3.31 E(glob)144 427.2 Q F0 .313 +(shell option were enabled.)2.813 F(The)5.313 E F1(=)2.813 E F0 .313 +(operator is equi)2.813 F -.25(va)-.25 G .313(lent to).25 F F1(==)2.813 +E F0 5.313(.I)C 2.813(ft)-5.313 G(he)-2.813 E F1(nocasematch)2.813 E F0 +.314(shell op-)2.814 F .03 +(tion is enabled, the match is performed without re)144 439.2 R -.05(ga) +-.15 G .029(rd to the case of alphabetic characters.).05 F .029(The re-) +5.029 F .258(turn v)144 451.2 R .259(alue is 0 if the string matches \() +-.25 F F1(==)A F0 2.759(\)o)C 2.759(rd)-2.759 G .259(oes not match \() +-2.759 F F1(!=)A F0 2.759(\)t)C .259(he pattern, and 1 otherwise.)-2.759 +F(An)5.259 E(y)-.15 E(part of the pattern may be quoted to force the qu\ +oted portion to be matched as a string.)144 463.2 Q .243 +(An additional binary operator)144 481.2 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 .182 +(used, the string to the right of the operator is considered a POSIX e) +144 493.2 R .182(xtended re)-.15 F .182(gular e)-.15 F .182 +(xpression and)-.15 F 2.624(matched accordingly \(using the POSIX)144 +505.2 R F2 -.37(re)5.124 G(gcomp)-.03 E F0(and)5.124 E F2 -.37(re)5.124 +G -.1(ge)-.03 G(xec)-.1 E F0(interf)5.123 E 2.623 +(aces usually described in)-.1 F F2 -.37(re)144 517.2 S -.1(ge)-.03 G(x) +-.1 E F0 3.271(\(3\)\). The)B .771(return v)3.271 F .772 +(alue is 0 if the string matches the pattern, and 1 otherwise.)-.25 F +.772(If the re)5.772 F(gular)-.15 E -.15(ex)144 529.2 S .509 +(pression is syntactically incorrect, the conditional e).15 F +(xpression')-.15 E 3.008(sr)-.55 G .508(eturn v)-3.008 F .508 +(alue is 2.)-.25 F .508(If the)5.508 F F1(nocase-)3.008 E(match)144 +541.2 Q F0 1.307 +(shell option is enabled, the match is performed without re)3.806 F -.05 +(ga)-.15 G 1.307(rd to the case of alphabetic).05 F 3.063 +(characters. An)144 553.2 R 3.063(yp)-.15 G .563(art of the pattern may\ + be quoted to force the quoted portion to be matched as a)-3.063 F 2.943 +(string. Brack)144 565.2 R .443(et e)-.1 F .443(xpressions in re)-.15 F +.443(gular e)-.15 F .443(xpressions must be treated carefully)-.15 F +2.944(,s)-.65 G .444(ince normal quoting)-2.944 F .615 +(characters lose their meanings between brack)144 577.2 R 3.115(ets. If) +-.1 F .614(the pattern is stored in a shell v)3.115 F .614 +(ariable, quot-)-.25 F(ing the v)144 589.2 Q(ariable e)-.25 E +(xpansion forces the entire pattern to be matched as a string.)-.15 E +.838(The pattern will match if it matches an)144 607.2 R 3.338(yp)-.15 G +.838(art of the string.)-3.338 F .839(Anchor the pattern using the)5.839 +F F1(^)3.339 E F0(and)3.339 E F1($)3.339 E F0(re)144 619.2 Q .847 +(gular e)-.15 F .846 +(xpression operators to force it to match the entire string.)-.15 F .846 +(The array v)5.846 F(ariable)-.25 E F3 -.27(BA)3.346 G(SH_RE-).27 E(MA) +144 631.2 Q(TCH)-.855 E F0 .321 +(records which parts of the string matched the pattern.)2.571 F .322 +(The element of)5.322 F F3 -.27(BA)2.822 G(SH_REMA).27 E(TCH)-.855 E F0 +.583(with inde)144 643.2 R 3.083(x0)-.15 G .582 +(contains the portion of the string matching the entire re)-.001 F .582 +(gular e)-.15 F 3.082(xpression. Substrings)-.15 F .249 +(matched by parenthesized sube)144 655.2 R .249 +(xpressions within the re)-.15 F .249(gular e)-.15 F .249 +(xpression are sa)-.15 F -.15(ve)-.2 G 2.749(di).15 G 2.75(nt)-2.749 G +.25(he remaining)-2.75 F F3 -.27(BA)144 667.2 S(SH_REMA).27 E(TCH)-.855 +E F0 1.13(indices. The element of)3.38 F F3 -.27(BA)3.63 G(SH_REMA).27 E +(TCH)-.855 E F0 1.13(with inde)3.38 F(x)-.15 E F2(n)3.63 E F0 1.13 +(is the portion of the)3.63 F(string matching the)144 679.2 Q F2(n)2.5 E +F0(th parenthesized sube)A(xpression.)-.15 E .785 +(Expressions may be combined using the follo)144 697.2 R .786 +(wing operators, listed in decreasing order of prece-)-.25 F(dence:)144 +709.2 Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(5)195.395 E 0 Cg +EP +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(\()144 84 Q/F2 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E(ession)-.37 +E F1(\))2.5 E F0 .523(Returns the v)180 96 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 108 Q F1(!)144 120 +Q F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0 -.35(Tr)180 132 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 144 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 156 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 168 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 180 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 196.8 +Q F1(&&)2.675 E F0(and)2.675 E F1(||)2.675 E F0 .175(operators do not e) +2.675 F -.25(va)-.25 G(luate).25 E F2 -.2(ex)2.675 G(pr).2 E(ession2) +-.37 E F0 .175(if the v)2.675 F .175(alue of)-.25 F F2 -.2(ex)2.676 G +(pr).2 E(ession1)-.37 E F0 .176(is suf)2.676 F .176(\214cient to de-) +-.25 F(termine the return v)144 208.8 Q +(alue of the entire conditional e)-.25 E(xpression.)-.15 E F1 -.25(fo) +108 225.6 S(r).25 E F2(name)2.5 E F0 2.5([[)2.5 G F1(in)A F0([)2.5 E F2 +(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5(]];])2.5 G F1(do)A F2(list)2.5 +E F0(;)2.5 E F1(done)2.5 E F0 .424(The list of w)144 237.6 R .424 +(ords follo)-.1 F(wing)-.25 E F1(in)2.924 E F0 .423(is e)2.924 F .423 +(xpanded, generating a list of items.)-.15 F .423(The v)5.423 F(ariable) +-.25 E F2(name)2.923 E F0 .423(is set to)2.923 F .653 +(each element of this list in turn, and)144 249.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 .649(command e) +144 261.6 R -.15(xe)-.15 G(cutes).15 E F2(list)3.149 E F0 .648 +(once for each positional parameter that is set \(see)3.148 F/F3 9 +/Times-Bold@0 SF -.666(PA)3.148 G(RAMETERS).666 E F0(belo)2.898 E(w\).) +-.25 E .153(The return status is the e)144 273.6 R .153 +(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.654 +(cutes. If).15 F .154(the e)2.654 F .154(xpansion of the items)-.15 F +(follo)144 285.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 302.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.236(First, the arithmetic e) +144 314.4 R(xpression)-.15 E F2 -.2(ex)3.736 G(pr1).2 E F0 1.235(is e) +3.736 F -.25(va)-.25 G 1.235 +(luated according to the rules described belo).25 F 3.735(wu)-.25 G +(nder)-3.735 E F3 .561(ARITHMETIC EV)144 326.4 R(ALU)-1.215 E -.855(AT) +-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .561(The arithmetic e) +5.061 F(xpression)-.15 E F2 -.2(ex)3.061 G(pr2).2 E F0 .562(is then e) +3.062 F -.25(va)-.25 G .562(luated repeatedly until).25 F .592(it e)144 +338.4 R -.25(va)-.25 G .592(luates to zero.).25 F .592(Each time)5.592 F +F2 -.2(ex)3.092 G(pr2).2 E F0 -.25(eva)3.092 G .592 +(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .591(is e) +3.092 F -.15(xe)-.15 G .591(cuted and the arith-).15 F .228(metic e)144 +350.4 R(xpression)-.15 E F2 -.2(ex)2.728 G(pr3).2 E F0 .229(is e)2.728 F +-.25(va)-.25 G 2.729(luated. If).25 F(an)2.729 E 2.729(ye)-.15 G .229 +(xpression is omitted, it beha)-2.879 F -.15(ve)-.2 G 2.729(sa).15 G +2.729(si)-2.729 G 2.729(fi)-2.729 G 2.729(te)-2.729 G -.25(va)-2.979 G +.229(luates to 1.).25 F .228(The return v)144 362.4 R .228 +(alue is the e)-.25 F .228(xit status of the last command in)-.15 F F2 +(list)2.728 E F0 .227(that is e)2.728 F -.15(xe)-.15 G .227(cuted, or f) +.15 F .227(alse if an)-.1 F 2.727(yo)-.15 G 2.727(ft)-2.727 G(he)-2.727 +E -.15(ex)144 374.4 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1 +(select)108 391.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 +.432(The list of w)144 403.2 R .432(ords follo)-.1 F(wing)-.25 E F1(in) +2.932 E F0 .432(is e)2.932 F .432(xpanded, generating a list of items.) +-.15 F .433(The set of e)5.433 F .433(xpanded w)-.15 F(ords)-.1 E .843 +(is printed on the standard error)144 415.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 .842 +(is omitted, the posi-)3.342 F .201(tional parameters are printed \(see) +144 427.2 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701 +(w\). The)-.25 F F3(PS3)2.701 E F0 .201(prompt is then displayed and a) +2.451 F .214(line read from the standard input.)144 439.2 R .213 +(If the line consists of a number corresponding to one of the dis-)5.214 +F 1.537(played w)144 451.2 R 1.537(ords, then the v)-.1 F 1.537(alue of) +-.25 F F2(name)4.397 E F0 1.537(is set to that w)4.217 F 4.037(ord. If) +-.1 F 1.538(the line is empty)4.038 F 4.038(,t)-.65 G 1.538(he w)-4.038 +F 1.538(ords and)-.1 F .066(prompt are displayed ag)144 463.2 R 2.566 +(ain. If)-.05 F .065(EOF is read, the command completes.)2.566 F(An) +5.065 E 2.565(yo)-.15 G .065(ther v)-2.565 F .065(alue read causes)-.25 +F F2(name)144.36 475.2 Q F0 .953(to be set to null.)3.633 F .953 +(The line read is sa)5.953 F -.15(ve)-.2 G 3.454(di).15 G 3.454(nt) +-3.454 G .954(he v)-3.454 F(ariable)-.25 E F3(REPL)3.454 E(Y)-.828 E F4 +(.)A F0(The)5.454 E F2(list)3.544 E F0 .954(is e)4.134 F -.15(xe)-.15 G +.954(cuted after).15 F .072(each selection until a)144 487.2 R F1(br) +2.571 E(eak)-.18 E F0 .071(command is e)2.571 F -.15(xe)-.15 G 2.571 +(cuted. The).15 F -.15(ex)2.571 G .071(it status of).15 F F1(select) +2.571 E F0 .071(is the e)2.571 F .071(xit status of the)-.15 F +(last command e)144 499.2 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.59 E +F0 2.5(,o).68 G 2.5(rz)-2.5 G(ero if no commands were e)-2.5 E -.15(xe) +-.15 G(cuted.).15 E F1(case)108 516 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5 E +F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F1(|)2.5 E F2 +(pattern)2.5 E F0 2.5(].)2.5 G(.. \))-2.5 E F2(list)2.5 E F0(;; ] ...) +2.5 E F1(esac)2.5 E F0(A)144 528 Q F1(case)3.264 E F0 .764 +(command \214rst e)3.264 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0 +3.264(,a)C .764(nd tries to match it ag)-3.264 F .764(ainst each)-.05 F +F2(pattern)3.264 E F0 .765(in turn, using the)3.264 F .884 +(matching rules described under)144 540 R F1 -.1(Pa)3.384 G(tter).1 E +3.384(nM)-.15 G(atching)-3.384 E F0(belo)3.384 E 4.684 -.65(w. T)-.25 H +(he).65 E F2(wor)3.384 E(d)-.37 E F0 .884(is e)3.384 F .883 +(xpanded using tilde e)-.15 F(x-)-.15 E .95(pansion, parameter and v)144 +552 R .95(ariable e)-.25 F .95(xpansion, arithmetic e)-.15 F .95 +(xpansion, command substitution, process)-.15 F .181 +(substitution and quote remo)144 564 R -.25(va)-.15 G 2.681(l. Each).25 +F F2(pattern)2.681 E F0 -.15(ex)2.681 G .181(amined is e).15 F .181 +(xpanded using tilde e)-.15 F .18(xpansion, param-)-.15 F .103 +(eter and v)144 576 R .103(ariable e)-.25 F .103(xpansion, arithmetic e) +-.15 F .103(xpansion, command substitution, and process substitution.) +-.15 F .687(If the)144 588 R F1(nocasematch)3.187 E F0 .687 +(shell option is enabled, the match is performed without re)3.187 F -.05 +(ga)-.15 G .687(rd to the case of).05 F .464(alphabetic characters.)144 +600 R .464(When a match is found, the corresponding)5.464 F F2(list) +2.964 E F0 .464(is e)2.964 F -.15(xe)-.15 G 2.964(cuted. If).15 F(the) +2.964 E F1(;;)2.964 E F0(opera-)2.964 E .675(tor is used, no subsequent\ + matches are attempted after the \214rst pattern match.)144 612 R(Using) +5.674 E F1(;&)3.174 E F0 .674(in place)3.174 F(of)144 624 Q F1(;;)2.866 +E F0 .366(causes e)2.866 F -.15(xe)-.15 G .366 +(cution to continue with the).15 F F2(list)2.866 E F0 .367 +(associated with the ne)2.866 F .367(xt set of patterns.)-.15 F(Using) +5.367 E F1(;;&)2.867 E F0 .596(in place of)144 636 R F1(;;)3.096 E F0 +.596(causes the shell to test the ne)3.096 F .595 +(xt pattern list in the statement, if an)-.15 F 1.895 -.65(y, a)-.15 H +.595(nd e).65 F -.15(xe)-.15 G .595(cute an).15 F(y)-.15 E(associated) +144 648 Q F2(list)2.96 E F0 .461 +(on a successful match, continuing the case statement e)2.96 F -.15(xe) +-.15 G .461(cution as if the pattern list).15 F .677(had not matched.) +144 660 R .677(The e)5.677 F .677 +(xit status is zero if no pattern matches.)-.15 F .676 +(Otherwise, it is the e)5.677 F .676(xit status of)-.15 F +(the last command e)144 672 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5 +E F0(.)A F1(if)108 688.8 Q F2(list)2.5 E F0(;)A F1(then)2.5 E F2(list) +2.5 E F0 2.5(;[)C F1(elif)A F2(list)2.5 E F0(;)A F1(then)2.5 E F2(list) +2.5 E F0 2.5(;].)C(.. [)-2.5 E F1(else)2.5 E F2(list)2.5 E F0 2.5(;])C +F1<8c>A F0(The)144 700.8 Q F1(if)2.977 E F2(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 F1(then)2.978 E F2(list)2.978 E F0 .478 +(is e)2.978 F -.15(xe)-.15 G 2.978(cuted. Otherwise,).15 F(each)2.978 E +F1(elif)2.978 E F2(list)2.978 E F0 1.088(is e)144 712.8 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 F1(then)3.587 E F2(list) +3.587 E F0 1.087(is e)3.587 F -.15(xe)-.15 G 1.087(cuted and the).15 F +1.239(command completes.)144 724.8 R 1.239(Otherwise, the)6.239 F F1 +(else)3.739 E F2(list)3.739 E F0 1.239(is e)3.739 F -.15(xe)-.15 G 1.239 +(cuted, if present.).15 F 1.24(The e)6.239 F 1.24(xit status is the e) +-.15 F(xit)-.15 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(6) +195.395 E 0 Cg EP +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(status of the last command e)144 84 Q -.15(xe)-.15 G +(cuted, or zero if no condition tested true.).15 E/F1 10/Times-Bold@0 SF +(while)108 100.8 Q/F2 10/Times-Italic@0 SF(list-1)2.5 E F0(;)A F1(do)2.5 +E F2(list-2)2.5 E F0(;)A F1(done)2.5 E(until)108 112.8 Q F2(list-1)2.5 E +F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 124.8 +Q F1(while)3.45 E F0 .95(command continuously e)3.45 F -.15(xe)-.15 G +.95(cutes the list).15 F F2(list-2)3.45 E F0 .95 +(as long as the last command in the list)3.45 F F2(list-1)144 136.8 Q F0 +.205(returns an e)2.705 F .205(xit status of zero.)-.15 F(The)5.205 E F1 +(until)2.705 E F0 .205(command is identical to the)2.705 F F1(while) +2.705 E F0 .205(command, e)2.705 F(xcept)-.15 E .6(that the test is ne) +144 148.8 R -.05(ga)-.15 G(ted:).05 E F2(list-2)3.19 E F0 .6(is e)3.12 F +-.15(xe)-.15 G .599(cuted as long as the last command in).15 F F2 +(list-1)3.189 E F0 .599(returns a non-zero)3.099 F -.15(ex)144 160.8 S +.204(it status.).15 F .204(The e)5.204 F .204(xit status of the)-.15 F +F1(while)2.704 E F0(and)2.704 E F1(until)2.704 E F0 .205 +(commands is the e)2.704 F .205(xit status of the last command)-.15 F +-.15(exe)144 172.8 S(cuted in).15 E F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz) +-2.5 G(ero if none w)-2.5 E(as e)-.1 E -.15(xe)-.15 G(cuted.).15 E F1 +(Copr)87 189.6 Q(ocesses)-.18 E F0(A)108 201.6 Q F2(copr)3.713 E(ocess) +-.45 E F0 1.213(is a shell command preceded by the)3.713 F F1(copr)3.712 +E(oc)-.18 E F0(reserv)3.712 E 1.212(ed w)-.15 F 3.712(ord. A)-.1 F 1.212 +(coprocess is e)3.712 F -.15(xe)-.15 G 1.212(cuted asyn-).15 F .574(chr\ +onously in a subshell, as if the command had been terminated with the) +108 213.6 R F1(&)3.075 E F0 .575(control operator)3.075 F 3.075(,w)-.4 G +.575(ith a tw)-3.075 F(o-)-.1 E -.1(wa)108 225.6 S 2.5(yp).1 G +(ipe established between the e)-2.5 E -.15(xe)-.15 G +(cuting shell and the coprocess.).15 E(The format for a coprocess is:) +108 242.4 Q F1(copr)144 259.2 Q(oc)-.18 E F0([)2.5 E F2 -.27(NA)C(ME).27 +E F0(])A F2(command)2.5 E F0([)2.5 E F2 -.37(re)C(dir).37 E(ections)-.37 +E F0(])A .709(This creates a coprocess named)108 276 R F2 -.27(NA)3.208 +G(ME).27 E F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0 .708 +(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR)3.208 +E(OC)-.3 E F0(.)A F2 -.27(NA)5.708 G(ME).27 E F0 .64 +(must not be supplied if)108 288 R F2(command)3.14 E F0 .64(is a)3.14 F +F2 .64(simple command)3.14 F F0 .64(\(see abo)3.14 F -.15(ve)-.15 G .64 +(\); otherwise, it is interpreted as the \214rst).15 F -.1(wo)108 300 S +.349(rd of the simple command.).1 F .348(When the coprocess is e)5.348 F +-.15(xe)-.15 G .348(cuted, the shell creates an array v).15 F .348 +(ariable \(see)-.25 F F1(Ar)2.848 E(-)-.37 E(rays)108 312 Q F0(belo) +3.095 E .595(w\) named)-.25 F F2 -.27(NA)3.095 G(ME).27 E F0 .595 +(in the conte)3.095 F .595(xt of the e)-.15 F -.15(xe)-.15 G .595 +(cuting shell.).15 F .596(The standard output of)5.595 F F2(command) +3.296 E F0 .596(is con-)3.866 F .387 +(nected via a pipe to a \214le descriptor in the e)108 324 R -.15(xe) +-.15 G .387(cuting shell, and that \214le descriptor is assigned to).15 +F F2 -.27(NA)2.886 G(ME).27 E F0([0].)A .57(The standard input of)108 +336 R F2(command)3.27 E F0 .571 +(is connected via a pipe to a \214le descriptor in the e)3.84 F -.15(xe) +-.15 G .571(cuting shell, and that).15 F 1.221 +(\214le descriptor is assigned to)108 348 R F2 -.27(NA)3.721 G(ME).27 E +F0 3.721([1]. This)B 1.221(pipe is established before an)3.721 F 3.72 +(yr)-.15 G 1.22(edirections speci\214ed by the)-3.72 F 1.58 +(command \(see)108 360 R/F3 9/Times-Bold@0 SF(REDIRECTION)4.08 E F0 +(belo)3.83 E 4.08(w\). The)-.25 F 1.581 +(\214le descriptors can be utilized as ar)4.08 F 1.581 +(guments to shell com-)-.18 F .149 +(mands and redirections using standard w)108 372 R .149(ord e)-.1 F +2.649(xpansions. Other)-.15 F .148(than those created to e)2.649 F -.15 +(xe)-.15 G .148(cute command and).15 F 2.462 +(process substitutions, the \214le descriptors are not a)108 384 R -.25 +(va)-.2 G 2.463(ilable in subshells.).25 F 2.463 +(The process ID of the shell)7.463 F(spa)108 396 Q 1.115(wned to e)-.15 +F -.15(xe)-.15 G 1.115(cute the coprocess is a).15 F -.25(va)-.2 G 1.115 +(ilable as the v).25 F 1.115(alue of the v)-.25 F(ariable)-.25 E F2 -.27 +(NA)3.615 G(ME).27 E F0 3.615(_PID. The)B F1(wait)3.615 E F0 -.2(bu) +3.615 G(iltin).2 E(command may be used to w)108 408 Q +(ait for the coprocess to terminate.)-.1 E .336 +(Since the coprocess is created as an asynchronous command, the)108 +424.8 R F1(copr)2.836 E(oc)-.18 E F0 .336(command al)2.836 F -.1(wa)-.1 +G .336(ys returns success.).1 F +(The return status of a coprocess is the e)108 436.8 Q(xit status of) +-.15 E F2(command)2.5 E F0(.)A F1(Shell Function De\214nitions)87 453.6 +Q F0 2.698(As)108 465.6 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 477.6 S .5 -.25(ew s) +-2.5 H(et of positional parameters.).25 E +(Shell functions are declared as follo)5 E(ws:)-.25 E F2(fname)108 494.4 +Q F0(\(\))2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C +(dir).37 E(ection)-.37 E F0(])A F1(function)108 506.4 Q F2(fname)2.5 E +F0([\(\)])2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C +(dir).37 E(ection)-.37 E F0(])A .216(This de\214nes a function named)144 +518.4 R F2(fname)2.716 E F0 5.217(.T)C .217(he reserv)-5.217 F .217 +(ed w)-.15 F(ord)-.1 E F1(function)2.717 E F0 .217(is optional.)2.717 F +.217(If the)5.217 F F1(function)2.717 E F0(re-)2.717 E(serv)144 530.4 Q +.68(ed w)-.15 F .68(ord is supplied, the parentheses are optional.)-.1 F +(The)5.68 E F2(body)3.18 E F0 .68(of the function is the compound)3.18 F +(command)144 542.4 Q F2(compound\255command)2.784 E F0(\(see)3.354 E F1 +.084(Compound Commands)2.584 F F0(abo)2.584 E -.15(ve)-.15 G 2.584 +(\). That).15 F .084(command is usually a)2.584 F F2(list)144 554.4 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 F1 .044 +(Compound Commands)2.544 F F0(abo)144 566.4 Q -.15(ve)-.15 G 2.901(,w) +.15 G .401(ith one e)-2.901 F .401(xception: If the)-.15 F F1(function) +2.901 E F0(reserv)2.901 E .401(ed w)-.15 F .401(ord is used, b)-.1 F +.402(ut the parentheses are not sup-)-.2 F 1.046 +(plied, the braces are required.)144 578.4 R F2(compound\255command) +6.046 E F0 1.046(is e)3.546 F -.15(xe)-.15 G 1.046(cuted whene).15 F +-.15(ve)-.25 G(r).15 E F2(fname)3.546 E F0 1.045(is speci\214ed as)3.546 +F .365(the name of a simple command.)144 590.4 R .365(When in)5.365 F F2 +.366(posix mode)2.865 F F0(,)A F2(fname)2.866 E F0 .366(must be a v) +2.866 F .366(alid shell)-.25 F F2(name)2.866 E F0 .366(and may)2.866 F +.894(not be the name of one of the POSIX)144 602.4 R F2 .893(special b) +3.393 F(uiltins)-.2 E F0 5.893(.I)C 3.393(nd)-5.893 G(ef)-3.393 E .893 +(ault mode, a function name can be)-.1 F(an)144 614.4 Q 3.649(yu)-.15 G +1.149(nquoted shell w)-3.649 F 1.15(ord that does not contain)-.1 F F1 +($)3.65 E F0 6.15(.A)C 1.45 -.15(ny r)-6.15 H 1.15(edirections \(see).15 +F F3(REDIRECTION)3.65 E F0(belo)3.4 E(w\))-.25 E .417(speci\214ed when \ +a function is de\214ned are performed when the function is e)144 626.4 R +-.15(xe)-.15 G 2.916(cuted. The).15 F -.15(ex)2.916 G .416(it status).15 +F .733(of a function de\214nition is zero unless a syntax error occurs \ +or a readonly function with the same)144 638.4 R .178(name already e)144 +650.4 R 2.678(xists. When)-.15 F -.15(exe)2.678 G .178(cuted, the e).15 +F .178(xit status of a function is the e)-.15 F .177 +(xit status of the last com-)-.15 F(mand e)144 662.4 Q -.15(xe)-.15 G +(cuted in the body).15 E 5(.\()-.65 G(See)-5 E F3(FUNCTIONS)2.5 E F0 +(belo)2.25 E -.65(w.)-.25 G(\)).65 E/F4 10.95/Times-Bold@0 SF(COMMENTS) +72 679.2 Q F0 .982(In a non-interacti)108 691.2 R 1.282 -.15(ve s)-.25 H +.982(hell, or an interacti).15 F 1.282 -.15(ve s)-.25 H .982 +(hell in which the).15 F F1(interacti)3.482 E -.1(ve)-.1 G(_comments).1 +E F0 .982(option to the)3.482 F F1(shopt)3.482 E F0 -.2(bu)108 703.2 S +.952(iltin is enabled \(see).2 F F3 .952(SHELL B)3.452 F(UIL)-.09 E .952 +(TIN COMMANDS)-.828 F F0(belo)3.202 E .952(w\), a w)-.25 F .952(ord be) +-.1 F .952(ginning with)-.15 F F1(#)3.451 E F0 .951(causes that w)3.451 +F(ord)-.1 E .604 +(and all remaining characters on that line to be ignored.)108 715.2 R +.605(An interacti)5.605 F .905 -.15(ve s)-.25 H .605(hell without the) +.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 727.2 Q F0 +1.337(option enabled does not allo)3.837 F 3.837(wc)-.25 G 3.836 +(omments. The)-3.837 F F1(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E +F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(GNU Bash 5.1)72 +768 Q(2020 October 29)141.235 E(7)195.395 E 0 Cg EP +%%Page: 8 8 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(interacti)108 84 Q +.3 -.15(ve s)-.25 H(hells.).15 E/F1 10.95/Times-Bold@0 SF -.11(QU)72 +100.8 S -.438(OT).11 G(ING).438 E/F2 10/Times-Italic@0 SF(Quoting)108 +112.8 Q F0 .477(is used to remo)2.977 F .777 -.15(ve t)-.15 H .477 +(he special meaning of certain characters or w).15 F .477 +(ords to the shell.)-.1 F .478(Quoting can be)5.478 F .185 +(used to disable special treatment for special characters, to pre)108 +124.8 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184 +(ords from being recognized as)-.1 F(such, and to pre)108 136.8 Q -.15 +(ve)-.25 G(nt parameter e).15 E(xpansion.)-.15 E .288(Each of the)108 +153.6 R F2(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288 +(listed abo)2.788 F .588 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 +SF(DEFINITIONS)2.788 E F0 .288 +(has special meaning to the shell and must be)2.538 F +(quoted if it is to represent itself.)108 165.6 Q 1.345 +(When the command history e)108 182.4 R 1.344(xpansion f)-.15 F 1.344 +(acilities are being used \(see)-.1 F F3(HIST)3.844 E(OR)-.162 E 3.594 +(YE)-.315 G(XP)-3.594 E(ANSION)-.666 E F0(belo)3.594 E 1.344(w\), the) +-.25 F F2(history e)108 194.4 Q(xpansion)-.2 E F0(character)2.5 E 2.5 +(,u)-.4 G(sually)-2.5 E/F4 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 211.2 Q F2 +(escape c)2.69 E(har)-.15 E(acter)-.15 E F0 2.5(,s).73 G +(ingle quotes, and double quotes.)-2.5 E 2.962(An)108 228 S .463 +(on-quoted backslash \()-2.962 F F4(\\)A F0 2.963(\)i)C 2.963(st)-2.963 +G(he)-2.963 E F2 .463(escape c)3.153 F(har)-.15 E(acter)-.15 E F0 5.463 +(.I).73 G 2.963(tp)-5.463 G(reserv)-2.963 E .463(es the literal v)-.15 F +.463(alue of the ne)-.25 F .463(xt character that)-.15 F(follo)108 240 Q +1.554(ws, with the e)-.25 F 1.553(xception of . If)-.25 F(a)4.053 E F4(\\)4.053 E F0( pair appears, and the backslash is not itself)-.25 F .347 +(quoted, the)108 252 R F4(\\)2.847 E F0( is treated as a line continuation \(that is, it is remo)-.25 F +-.15(ve)-.15 G 2.848(df).15 G .348(rom the input stream and ef-)-2.848 F +(fecti)108 264 Q -.15(ve)-.25 G(ly ignored\).).15 E .295 +(Enclosing characters in single quotes preserv)108 280.8 R .295 +(es the literal v)-.15 F .295(alue of each character within the quotes.) +-.25 F 2.795(As)5.295 G(in-)-2.795 E +(gle quote may not occur between single quotes, e)108 292.8 Q -.15(ve) +-.25 G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033 +(Enclosing characters in double quotes preserv)108 309.6 R .034 +(es the literal v)-.15 F .034 +(alue of all characters within the quotes, with the)-.25 F -.15(ex)108 +321.6 S .108(ception of).15 F F4($)2.608 E F0(,)A F4<92>2.608 E F0(,)A +F4(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107 +(xpansion is enabled,)-.15 F F4(!)2.607 E F0 5.107(.W)C .107 +(hen the shell is in)-5.107 F F2 .107(posix mode)2.607 F F0 2.607(,t)C +(he)-2.607 E F4(!)2.607 E F0 .107(has no)2.607 F .46 +(special meaning within double quotes, e)108 333.6 R -.15(ve)-.25 G 2.96 +(nw).15 G .46(hen history e)-2.96 F .46(xpansion is enabled.)-.15 F .46 +(The characters)5.46 F F4($)2.96 E F0(and)2.96 E F4<92>2.96 E F0(re-) +2.96 E .563(tain their special meaning within double quotes.)108 345.6 R +.562(The backslash retains its special meaning only when fol-)5.563 F +(lo)108 357.6 Q .601(wed by one of the follo)-.25 F .602 +(wing characters:)-.25 F F4($)3.102 E F0(,)A F4<92>3.102 E F0(,)A F4(") +3.935 E F0(,).833 E F4(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F4() +3.102 E F0 5.602(.A)C .602(double quote may be quoted within)-2.5 F .131 +(double quotes by preceding it with a backslash.)108 369.6 R .131 +(If enabled, history e)5.131 F .13(xpansion will be performed unless an) +-.15 F F4(!)2.63 E F0 +(appearing in double quotes is escaped using a backslash.)108 381.6 Q +(The backslash preceding the)5 E F4(!)2.5 E F0(is not remo)5 E -.15(ve) +-.15 G(d.).15 E(The special parameters)108 398.4 Q F4(*)2.5 E F0(and)2.5 +E F4(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H +(pecial meaning when in double quotes \(see).15 E F3 -.666(PA)2.5 G +(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 415.2 S .211 +(rds of the form).8 F F4($)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 427.2 R .604 +(Backslash escape sequences, if present, are decoded)5.605 F(as follo) +108 439.2 Q(ws:)-.25 E F4(\\a)144 451.2 Q F0(alert \(bell\))180 451.2 Q +F4(\\b)144 463.2 Q F0(backspace)180 463.2 Q F4(\\e)144 475.2 Q(\\E)144 +487.2 Q F0(an escape character)180 487.2 Q F4(\\f)144 499.2 Q F0 +(form feed)180 499.2 Q F4(\\n)144 511.2 Q F0(ne)180 511.2 Q 2.5(wl)-.25 +G(ine)-2.5 E F4(\\r)144 523.2 Q F0(carriage return)180 523.2 Q F4(\\t) +144 535.2 Q F0(horizontal tab)180 535.2 Q F4(\\v)144 547.2 Q F0 -.15(ve) +180 547.2 S(rtical tab).15 E F4(\\\\)144 559.2 Q F0(backslash)180 559.2 +Q F4<5c08>144 571.2 Q F0(single quote)180 571.2 Q F4(\\")144 583.2 Q F0 +(double quote)180 583.2 Q F4(\\?)144 595.2 Q F0(question mark)180 595.2 +Q F4(\\)144 607.2 Q F2(nnn)A F0(the eight-bit character whose v)180 +607.2 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 +(\(one to three octal digits\))2.5 E F4(\\x)144 619.2 Q F2(HH)A F0 +(the eight-bit character whose v)180 619.2 Q(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 F4(\\u)144 631.2 Q F2(HHHH)A F0 +1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 643.2 R 1.507 +(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) +4.007 E F0(\(one to four he)180 655.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F4 +(\\U)144 667.2 Q F2(HHHHHHHH)A F0 .548 +(the Unicode \(ISO/IEC 10646\) character whose v)180 679.2 R .547 +(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.047 E(HHH)180 691.2 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E F4(\\c)144 703.2 Q F2(x)A F0 2.5(ac)180 703.2 S(ontrol-) +-2.5 E F2(x)A F0(character)2.5 E(The e)108 720 Q(xpanded result is sing\ +le-quoted, as if the dollar sign had not been present.)-.15 E +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(8)195.395 E 0 Cg EP +%%Page: 9 9 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.64(Ad)108 84 S +.14(ouble-quoted string preceded by a dollar sign \()-2.64 F/F1 10 +/Times-Bold@0 SF($)A F0(")A/F2 10/Times-Italic@0 SF(string)A F0 .14 +("\) will cause the string to be translated according)B .31 +(to the current locale.)108 96 R(The)5.31 E F2 -.1(ge)2.809 G(tte).1 E +(xt)-.2 E F0 .309(infrastructure performs the message catalog lookup an\ +d translation, using)2.809 F(the)108 108 Q F1(LC_MESSA)2.625 E(GES)-.55 +E F0(and)2.625 E F1(TEXTDOMAIN)2.625 E F0 .125(shell v)2.625 F 2.625 +(ariables. If)-.25 F .126(the current locale is)2.626 F F1(C)2.626 E F0 +(or)2.626 E F1(POSIX)2.626 E F0 2.626(,o)C 2.626(ri)-2.626 G 2.626(ft) +-2.626 G(here)-2.626 E .362(are no translations a)108 120 R -.25(va)-.2 +G .362(ilable, the dollar sign is ignored.).25 F .362 +(If the string is translated and replaced, the replace-)5.362 F +(ment is double-quoted.)108 132 Q/F3 10.95/Times-Bold@0 SF -.81(PA)72 +148.8 S(RAMETERS).81 E F0(A)108 160.8 Q F2(par)4.574 E(ameter)-.15 E F0 +.824(is an entity that stores v)4.054 F 3.324(alues. It)-.25 F .824 +(can be a)3.324 F F2(name)3.685 E F0 3.325(,an).18 G(umber)-3.325 E +3.325(,o)-.4 G 3.325(ro)-3.325 G .825(ne of the special characters) +-3.325 F .802(listed belo)108 172.8 R 3.302(wu)-.25 G(nder)-3.302 E F1 +.802(Special P)3.302 F(arameters)-.1 E F0 5.802(.A)C F2(variable)-2.21 E +F0 .802(is a parameter denoted by a)3.482 F F2(name)3.662 E F0 5.801(.A) +.18 G -.25(va)-2.5 G .801(riable has a).25 F F2(value)108 184.8 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 F1(declar)2.869 E +(e)-.18 E F0 -.2(bu)2.869 G .369(iltin command \(see).2 F F1(declar) +2.869 E(e)-.18 E F0(belo)108 196.8 Q 2.5(wi)-.25 G(n)-2.5 E/F4 9 +/Times-Bold@0 SF(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E/F5 9 +/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 213.6 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 225.6 Q F1(unset)2.5 E F0 -.2(bu)2.5 +G(iltin command \(see).2 E F4(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) +-.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 242.4 Q F2(variable)2.79 E F0 +(may be assigned to by a statement of the form)2.68 E F2(name)144 259.2 +Q F0(=[)A F2(value)A F0(])A(If)108 276 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 288 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 F4(EXP)3.015 E(ANSION)-.666 E F0(belo)108 300 Q 2.698(w\). If) +-.25 F .198(the v)2.698 F .198(ariable has its)-.25 F F1(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 .902(if the $\(\(...\)\) e) +108 312 R .902(xpansion is not used \(see)-.15 F F1 .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 324 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 336 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 348 S(adonly).18 E F0 +3.288(,a)C(nd)-3.288 E F1(local)3.288 E F0 -.2(bu)3.288 G .788 +(iltin commands \().2 F F2(declar)A(ation)-.15 E F0 3.288 +(commands\). When)3.288 F(in)3.289 E F2 .789(posix mode)3.289 F F0 3.289 +(,t)C .789(hese b)-3.289 F .789(uiltins may)-.2 F 1.496 +(appear in a command after one or more instances of the)108 360 R F1 +(command)3.996 E F0 -.2(bu)3.996 G 1.496 +(iltin and retain these assignment).2 F(statement properties.)108 372 Q +.376(In the conte)108 388.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 1.631 +(operator can be used to append to or add to the v)108 400.8 R(ariable') +-.25 E 4.13(sp)-.55 G(re)-4.13 E 1.63(vious v)-.25 F 4.13(alue. This) +-.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 412.8 S +.163(iltin commands such as).2 F F1(declar)2.664 E(e)-.18 E F0 .164 +(that accept assignment statements \()2.664 F F2(declar)A(ation)-.15 E +F0 2.664(commands\). When)2.664 F .164(+= is)2.664 F .252 +(applied to a v)108 424.8 R .252(ariable for which the)-.25 F F2(inte) +2.752 E -.1(ge)-.4 G(r).1 E F0(attrib)2.752 E .252(ute has been set,)-.2 +F F2(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251 +(luated as an arithmetic e).25 F(xpres-)-.15 E .05 +(sion and added to the v)108 436.8 R(ariable')-.25 E 2.55(sc)-.55 G .05 +(urrent v)-2.55 F .05(alue, which is also e)-.25 F -.25(va)-.25 G 2.55 +(luated. When).25 F .05(+= is applied to an array v)2.55 F(ari-)-.25 E +.459(able using compound assignment \(see)108 448.8 R F1(Arrays)2.959 E +F0(belo)2.959 E .459(w\), the v)-.25 F(ariable')-.25 E 2.959(sv)-.55 G +.459(alue is not unset \(as it is when using)-3.209 F .265(=\), and ne) +108 460.8 R 2.765(wv)-.25 G .265(alues are appended to the array be) +-3.015 F .265(ginning at one greater than the array')-.15 F 2.765(sm) +-.55 G .265(aximum inde)-2.765 F 2.765(x\()-.15 G(for)-2.765 E(inde)108 +472.8 Q -.15(xe)-.15 G 3.402(da).15 G .902 +(rrays\) or added as additional k)-3.402 F -.15(ey)-.1 G.15 E .901 +(alue pairs in an associati)-.25 F 1.201 -.15(ve a)-.25 H(rray).15 E +5.901(.W)-.65 G .901(hen applied to a string-)-5.901 F -.25(va)108 484.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 3.382(Av)108 501.6 S .882(ariable can be assigned the) +-3.632 F F2(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882 +(ute using the)-.2 F F13.382 E F0 .882(option to the)3.382 F F1 +(declar)3.382 E(e)-.18 E F0(or)3.383 E F1(local)3.383 E F0 -.2(bu)3.383 +G .883(iltin com-).2 F .316(mands \(see the descriptions of)108 513.6 R +F1(declar)2.816 E(e)-.18 E F0(and)2.816 E F1(local)2.816 E F0(belo)2.816 +E .316(w\) to create a)-.25 F F2(namer)2.815 E(ef)-.37 E F0 2.815(,o)C +2.815(rar)-2.815 G .315(eference to another v)-2.815 F(ari-)-.25 E 2.918 +(able. This)108 525.6 R(allo)2.918 E .418(ws v)-.25 F .418 +(ariables to be manipulated indirectly)-.25 F 5.419(.W)-.65 G(hene) +-5.419 E -.15(ve)-.25 G 2.919(rt).15 G .419(he nameref v)-2.919 F .419 +(ariable is referenced, as-)-.25 F .133 +(signed to, unset, or has its attrib)108 537.6 R .132 +(utes modi\214ed \(other than using or changing the)-.2 F F2(namer)2.632 +E(ef)-.37 E F0(attrib)2.632 E .132(ute itself\), the)-.2 F 1.356 +(operation is actually performed on the v)108 549.6 R 1.357 +(ariable speci\214ed by the nameref v)-.25 F(ariable')-.25 E 3.857(sv) +-.55 G 3.857(alue. A)-4.107 F 1.357(nameref is)3.857 F .972 +(commonly used within shell functions to refer to a v)108 561.6 R .971 +(ariable whose name is passed as an ar)-.25 F .971(gument to the)-.18 F +2.5(function. F)108 573.6 R(or instance, if a v)-.15 E +(ariable name is passed to a shell function as its \214rst ar)-.25 E +(gument, running)-.18 E/F6 10/Courier@0 SF(declare -n ref=$1)144 591.6 Q +F0 .302(inside the function creates a nameref v)108 609.6 R(ariable)-.25 +E F1 -.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v) +-.25 F .303(ariable name passed as the \214rst ar)-.25 F(gu-)-.18 E +3.592(ment. References)108 621.6 R 1.092(and assignments to)3.592 F F1 +-.18(re)3.592 G(f).18 E F0 3.592(,a)C 1.092(nd changes to its attrib) +-3.592 F 1.092(utes, are treated as references, assign-)-.2 F .143 +(ments, and attrib)108 633.6 R .144(ute modi\214cations to the v)-.2 F +.144(ariable whose name w)-.25 F .144(as passed as)-.1 F F1($1)2.644 E +F0 5.144(.I)C 2.644(ft)-5.144 G .144(he control v)-2.644 F .144 +(ariable in a)-.25 F F1 -.25(fo)108 645.6 S(r).25 E F0 .868 +(loop has the nameref attrib)3.368 F .868(ute, the list of w)-.2 F .867 +(ords can be a list of shell v)-.1 F .867 +(ariables, and a name reference)-.25 F .509 +(will be established for each w)108 657.6 R .509 +(ord in the list, in turn, when the loop is e)-.1 F -.15(xe)-.15 G 3.009 +(cuted. Array).15 F -.25(va)3.009 G .509(riables cannot be).25 F(gi)108 +669.6 Q -.15(ve)-.25 G 3.032(nt).15 G(he)-3.032 E F1(namer)3.032 E(ef) +-.18 E F0(attrib)3.032 E 3.032(ute. Ho)-.2 F(we)-.25 E -.15(ve)-.25 G +1.332 -.4(r, n).15 H .532(ameref v).4 F .531 +(ariables can reference array v)-.25 F .531(ariables and subscripted ar) +-.25 F(-)-.2 E .533(ray v)108 681.6 R 3.033(ariables. Namerefs)-.25 F +.533(can be unset using the)3.033 F F13.033 E F0 .533 +(option to the)3.033 F F1(unset)3.033 E F0 -.2(bu)3.034 G 3.034 +(iltin. Otherwise,).2 F(if)3.034 E F1(unset)3.034 E F0 .534(is e)3.034 F +-.15(xe)-.15 G(-).15 E .443(cuted with the name of a nameref v)108 693.6 +R .442(ariable as an ar)-.25 F .442(gument, the v)-.18 F .442 +(ariable referenced by the nameref v)-.25 F(ariable)-.25 E +(will be unset.)108 705.6 Q(GNU Bash 5.1)72 768 Q(2020 October 29) +141.235 E(9)195.395 E 0 Cg EP +%%Page: 10 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF -.2(Po)87 84 S(sitional P).2 E(arameters)-.1 E F0(A)108 96 Q/F2 10 +/Times-Italic@0 SF .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 108 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 120 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 +(positional parameters are temporarily replaced when a shell function i\ +s e)108 132 Q -.15(xe)-.15 G(cuted \(see).15 E/F3 9/Times-Bold@0 SF +(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E 1.404(When a positional par\ +ameter consisting of more than a single digit is e)108 148.8 R 1.403 +(xpanded, it must be enclosed in)-.15 F(braces \(see)108 160.8 Q F3(EXP) +2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E F1(Special P)87 177.6 Q +(arameters)-.1 E F0 1.674(The shell treats se)108 189.6 R -.15(ve)-.25 G +1.674(ral parameters specially).15 F 6.675(.T)-.65 G 1.675 +(hese parameters may only be referenced; assignment to)-6.675 F +(them is not allo)108 201.6 Q(wed.)-.25 E F1(*)108 213.6 Q F0 .224 +(Expands to the positional parameters, starting from one.)144 213.6 R +.223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662 +(quotes, each positional parameter e)144 225.6 R .662 +(xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662 +(xts where it is performed,)-.15 F 1.082(those w)144 237.6 R 1.082 +(ords are subject to further w)-.1 F 1.081(ord splitting and pathname e) +-.1 F 3.581(xpansion. When)-.15 F 1.081(the e)3.581 F(xpansion)-.15 E +.914(occurs within double quotes, it e)144 249.6 R .914 +(xpands to a single w)-.15 F .915(ord with the v)-.1 F .915 +(alue of each parameter sepa-)-.25 F .891 +(rated by the \214rst character of the)144 261.6 R F3(IFS)3.39 E F0 .89 +(special v)3.14 F 3.39(ariable. That)-.25 F .89(is, ")3.39 F F1($*)A F0 +3.39("i)C 3.39(se)-3.39 G(qui)-3.39 E -.25(va)-.25 G .89(lent to ").25 F +F1($1)A F2(c)A F1($2)A F2(c)A F1(...)A F0(",)A(where)144 273.6 Q F2(c) +3.532 E F0 .832(is the \214rst character of the v)3.642 F .832 +(alue of the)-.25 F F3(IFS)3.332 E F0 -.25(va)3.082 G 3.332(riable. If) +.25 F F3(IFS)3.332 E F0 .833(is unset, the parameters are)3.082 F +(separated by spaces.)144 285.6 Q(If)5 E F3(IFS)2.5 E F0 +(is null, the parameters are joined without interv)2.25 E +(ening separators.)-.15 E F1(@)108 297.6 Q F0 .722 +(Expands to the positional parameters, starting from one.)144 297.6 R +.722(In conte)5.722 F .722(xts where w)-.15 F .722(ord splitting is per) +-.1 F(-)-.2 E 1.165(formed, this e)144 309.6 R 1.165 +(xpands each positional parameter to a separate w)-.15 F 1.165 +(ord; if not within double quotes,)-.1 F .655(these w)144 321.6 R .655 +(ords are subject to w)-.1 F .655(ord splitting.)-.1 F .655(In conte) +5.655 F .655(xts where w)-.15 F .654 +(ord splitting is not performed, this)-.1 F -.15(ex)144 333.6 S .748 +(pands to a single w).15 F .748 +(ord with each positional parameter separated by a space.)-.1 F .748 +(When the e)5.748 F(xpan-)-.15 E 1.091 +(sion occurs within double quotes, each parameter e)144 345.6 R 1.091 +(xpands to a separate w)-.15 F 3.59(ord. That)-.1 F 1.09(is, ")3.59 F F1 +($@)A F0 3.59("i)C(s)-3.59 E(equi)144 357.6 Q -.25(va)-.25 G .412 +(lent to ").25 F F1($1)A F0 2.912("")C F1($2)-2.912 E F0 2.912(".)C +2.912(.. If)-2.912 F .413(the double-quoted e)2.913 F .413 +(xpansion occurs within a w)-.15 F .413(ord, the e)-.1 F .413 +(xpansion of)-.15 F .38(the \214rst parameter is joined with the be)144 +369.6 R .379(ginning part of the original w)-.15 F .379(ord, and the e) +-.1 F .379(xpansion of the)-.15 F .771 +(last parameter is joined with the last part of the original w)144 381.6 +R 3.271(ord. When)-.1 F .772(there are no positional pa-)3.271 F +(rameters, ")144 393.6 Q F1($@)A F0 2.5("a)C(nd)-2.5 E F1($@)2.5 E F0 +-.15(ex)2.5 G(pand to nothing \(i.e., the).15 E 2.5(ya)-.15 G(re remo) +-2.5 E -.15(ve)-.15 G(d\).).15 E F1(#)108 405.6 Q F0 +(Expands to the number of positional parameters in decimal.)144 405.6 Q +F1(?)108 417.6 Q F0(Expands to the e)144 417.6 Q +(xit status of the most recently e)-.15 E -.15(xe)-.15 G(cuted fore).15 +E(ground pipeline.)-.15 E F1108 429.6 Q F0 .882 +(Expands to the current option \215ags as speci\214ed upon in)144 429.6 +R -.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 441.6 Q F12.5 E F0(option\).)2.5 E F1($)108 453.6 Q F0 .214 +(Expands to the process ID of the shell.)144 453.6 R .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 465.6 Q F1(!)108 477.6 Q F0 .499(Expands \ +to the process ID of the job most recently placed into the background, \ +whether e)144 477.6 R -.15(xe)-.15 G(cuted).15 E +(as an asynchronous command or using the)144 489.6 Q F1(bg)2.5 E F0 -.2 +(bu)2.5 G(iltin \(see).2 E F3(JOB CONTR)2.5 E(OL)-.27 E F0(belo)2.25 E +(w\).)-.25 E F1(0)108 501.6 Q F0 .886 +(Expands to the name of the shell or shell script.)144 501.6 R .886 +(This is set at shell initialization.)5.886 F(If)5.887 E F1(bash)3.387 E +F0 .887(is in-)3.387 F -.2(vo)144 513.6 S -.1(ke).2 G 2.668(dw).1 G .168 +(ith a \214le of commands,)-2.668 F F1($0)2.668 E F0 .167 +(is set to the name of that \214le.)2.667 F(If)5.167 E F1(bash)2.667 E +F0 .167(is started with the)2.667 F F12.667 E F0(op-)2.667 E .895 +(tion, then)144 525.6 R F1($0)3.395 E F0 .895(is set to the \214rst ar) +3.395 F .895(gument after the string to be e)-.18 F -.15(xe)-.15 G .896 +(cuted, if one is present.).15 F(Other)5.896 E(-)-.2 E +(wise, it is set to the \214lename used to in)144 537.6 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 +(Shell V)87 554.4 Q(ariables)-.92 E F0(The follo)108 566.4 Q(wing v)-.25 +E(ariables are set by the shell:)-.25 E F1(_)108 583.2 Q F0 1.526 +(At shell startup, set to the pathname used to in)144 583.2 R -.2(vo)-.4 +G 1.725 -.1(ke t).2 H 1.525(he shell or shell script being e).1 F -.15 +(xe)-.15 G 1.525(cuted as).15 F .173(passed in the en)144 595.2 R .173 +(vironment or ar)-.4 F .173(gument list.)-.18 F(Subsequently)5.173 E +2.673(,e)-.65 G .173(xpands to the last ar)-2.823 F .174 +(gument to the pre-)-.18 F .337(vious simple command e)144 607.2 R -.15 +(xe)-.15 G .337(cuted in the fore).15 F .336(ground, after e)-.15 F +2.836(xpansion. Also)-.15 F .336(set to the full pathname)2.836 F .365 +(used to in)144 619.2 R -.2(vo)-.4 G .565 -.1(ke e).2 H .365 +(ach command e).1 F -.15(xe)-.15 G .366(cuted and placed in the en).15 F +.366(vironment e)-.4 F .366(xported to that command.)-.15 F(When checki\ +ng mail, this parameter holds the name of the mail \214le currently bei\ +ng check)144 631.2 Q(ed.)-.1 E F1 -.3(BA)108 643.2 S(SH).3 E F0 +(Expands to the full \214lename used to in)144 643.2 Q -.2(vo)-.4 G .2 +-.1(ke t).2 H(his instance of).1 E F1(bash)2.5 E F0(.)A F1 -.3(BA)108 +655.2 S(SHOPTS).3 E F0 2.549(Ac)144 667.2 S .049 +(olon-separated list of enabled shell options.)-2.549 F .049(Each w) +5.049 F .049(ord in the list is a v)-.1 F .049(alid ar)-.25 F .049 +(gument for the)-.18 F F12.548 E F0 .115(option to the)144 679.2 R +F1(shopt)2.616 E F0 -.2(bu)2.616 G .116(iltin command \(see).2 F F3 .116 +(SHELL B)2.616 F(UIL)-.09 E .116(TIN COMMANDS)-.828 F F0(belo)2.366 E +2.616(w\). The)-.25 F .116(options ap-)2.616 F 1.067(pearing in)144 +691.2 R F3 -.27(BA)3.567 G(SHOPTS).27 E F0 1.067(are those reported as) +3.317 F F2(on)3.797 E F0(by)3.807 E F1(shopt)3.567 E F0 6.066(.I)C 3.566 +(ft)-6.066 G 1.066(his v)-3.566 F 1.066(ariable is in the en)-.25 F +(vironment)-.4 E(when)144 703.2 Q F1(bash)3.141 E F0 .642(starts up, ea\ +ch shell option in the list will be enabled before reading an)3.141 F +3.142(ys)-.15 G .642(tartup \214les.)-3.142 F(This v)144 715.2 Q +(ariable is read-only)-.25 E(.)-.65 E(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(10)190.395 E 0 Cg EP +%%Page: 11 11 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF -.3(BA)108 84 S(SHPID).3 E F0 .188 +(Expands to the process ID of the current)144 96 R F1(bash)2.688 E F0 +2.687(process. This)2.687 F(dif)2.687 E .187(fers from)-.25 F F1($$) +2.687 E F0 .187(under certain circum-)2.687 F .548 +(stances, such as subshells that do not require)144 108 R F1(bash)3.048 +E F0 .548(to be re-initialized.)3.048 F .549(Assignments to)5.549 F/F2 9 +/Times-Bold@0 SF -.27(BA)3.049 G(SHPID).27 E F0(ha)144 120 Q .3 -.15 +(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G 2.5(ect. If).25 F F1 -.3(BA)2.5 +G(SHPID).3 E F0(is unset, it loses its special properties, e)2.5 E -.15 +(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G +(ubsequently reset.)-2.5 E F1 -.3(BA)108 132 S(SH_ALIASES).3 E F0 1.195 +(An associati)144 144 R 1.495 -.15(ve a)-.25 H 1.195(rray v).15 F 1.195 +(ariable whose members correspond to the internal list of aliases as ma\ +in-)-.25 F .16(tained by the)144 156 R F1(alias)2.66 E F0 -.2(bu)2.66 G +2.66(iltin. Elements).2 F .16 +(added to this array appear in the alias list; ho)2.66 F(we)-.25 E -.15 +(ve)-.25 G .96 -.4(r, u).15 H(nsetting).4 E 4.503 +(array elements currently does not cause aliases to be remo)144 168 R +-.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If) +9.502 E F1 -.3(BA)144 180 S(SH_ALIASES).3 E F0 +(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 +(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) +-2.5 E F1 -.3(BA)108 192 S(SH_ARGC).3 E F0 .934(An array v)144 204 R +.934(ariable whose v)-.25 F .934 +(alues are the number of parameters in each frame of the current)-.25 F +F1(bash)3.435 E F0 -.15(exe)144 216 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 228 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.265(parameters passed is pushed onto)144 +240 R F2 -.27(BA)3.765 G(SH_ARGC).27 E/F3 9/Times-Roman@0 SF(.)A F0 +1.265(The shell sets)5.765 F F2 -.27(BA)3.765 G(SH_ARGC).27 E F0 1.265 +(only when in e)3.515 F(x-)-.15 E .947(tended deb)144 252 R .947 +(ugging mode \(see the description of the)-.2 F F1(extdeb)3.447 E(ug)-.2 +E F0 .947(option to the)3.447 F F1(shopt)3.447 E F0 -.2(bu)3.448 G .948 +(iltin belo).2 F(w\).)-.25 E(Setting)144 264 Q F1(extdeb)3.363 E(ug)-.2 +E F0 .863(after the shell has started to e)3.363 F -.15(xe)-.15 G .862 +(cute a script, or referencing this v).15 F .862(ariable when)-.25 F F1 +(extdeb)144 276 Q(ug)-.2 E F0(is not set, may result in inconsistent v) +2.5 E(alues.)-.25 E F1 -.3(BA)108 288 S(SH_ARGV).3 E F0 .206(An array v) +144 300 R .206(ariable containing all of the parameters in the current) +-.25 F F1(bash)2.706 E F0 -.15(exe)2.706 G .207(cution call stack.).15 F +.207(The \214-)5.207 F .567(nal parameter of the last subroutine call i\ +s at the top of the stack; the \214rst parameter of the initial)144 312 +R 1.424(call is at the bottom.)144 324 R 1.424(When a subroutine is e) +6.424 F -.15(xe)-.15 G 1.424 +(cuted, the parameters supplied are pushed onto).15 F F2 -.27(BA)144 336 +S(SH_ARGV).27 E F3(.)A F0 .854(The shell sets)5.354 F F2 -.27(BA)3.354 G +(SH_ARGV).27 E F0 .853(only when in e)3.104 F .853(xtended deb)-.15 F +.853(ugging mode \(see the de-)-.2 F .475(scription of the)144 348 R F1 +(extdeb)2.975 E(ug)-.2 E F0 .475(option to the)2.975 F F1(shopt)2.975 E +F0 -.2(bu)2.975 G .475(iltin belo).2 F 2.975(w\). Setting)-.25 F F1 +(extdeb)2.976 E(ug)-.2 E F0 .476(after the shell has)2.976 F .45 +(started to e)144 360 R -.15(xe)-.15 G .45 +(cute a script, or referencing this v).15 F .45(ariable when)-.25 F F1 +(extdeb)2.95 E(ug)-.2 E F0 .45(is not set, may result in in-)2.95 F +(consistent v)144 372 Q(alues.)-.25 E F1 -.3(BA)108 384 S(SH_ARGV0).3 E +F0 .25(When referenced, this v)144 396 R .25(ariable e)-.25 F .251 +(xpands to the name of the shell or shell script \(identical to)-.15 F +F1($0)2.751 E F0 2.751(;s)C(ee)-2.751 E .041 +(the description of special parameter 0 abo)144 408 R -.15(ve)-.15 G +2.541(\). Assignment).15 F(to)2.541 E F1 -.3(BA)2.541 G(SH_ARGV0).3 E F0 +.04(causes the v)2.541 F .04(alue as-)-.25 F .216 +(signed to also be assigned to)144 420 R F1($0)2.716 E F0 5.216(.I)C(f) +-5.216 E F1 -.3(BA)2.716 G(SH_ARGV0).3 E F0 .216 +(is unset, it loses its special properties, e)2.716 F -.15(ve)-.25 G +2.716(ni).15 G(f)-2.716 E(it is subsequently reset.)144 432 Q F1 -.3(BA) +108 444 S(SH_CMDS).3 E F0 .668(An associati)144 456 R .968 -.15(ve a) +-.25 H .668(rray v).15 F .668(ariable whose members correspond to the i\ +nternal hash table of commands)-.25 F .195(as maintained by the)144 468 +R F1(hash)2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F .196 +(added to this array appear in the hash table; ho)2.696 F(we)-.25 E -.15 +(ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently does no\ +t cause command names to be remo)144 480 R -.15(ve)-.15 G 3.352(df).15 G +.852(rom the hash)-3.352 F 2.5(table. If)144 492 R F1 -.3(BA)2.5 G +(SH_CMDS).3 E F0(is unset, it loses its special properties, e)2.5 E -.15 +(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G +(ubsequently reset.)-2.5 E F1 -.3(BA)108 504 S(SH_COMMAND).3 E F0 1.242 +(The command currently being e)144 516 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 +.263(command as the result of a trap, in which case it is the command e) +144 528 R -.15(xe)-.15 G .262(cuting at the time of the trap.).15 F(If) +144 540 Q F1 -.3(BA)2.5 G(SH_COMMAND).3 E F0 +(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 +(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) +-2.5 E F1 -.3(BA)108 552 S(SH_EXECUTION_STRING).3 E F0(The command ar) +144 564 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 576 S(SH_LINENO).3 E F0 .692 +(An array v)144 588 R .692(ariable whose members are the line numbers i\ +n source \214les where each corresponding)-.25 F .97(member of)144 600 R +F2(FUNCN)3.47 E(AME)-.18 E F0 -.1(wa)3.22 G 3.47(si).1 G -1.9 -.4(nv o) +-3.47 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E(ASH_LINENO[)-.3 E/F4 10 +/Times-Italic@0 SF($i)A F1(]})A F0 .969 +(is the line number in the source)3.469 F 14.671(\214le \()144 612 R F1 +(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171 +E F1(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F1(]})A F0 -.1(wa)17.172 G +17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 624 Q(ASH_LINENO[) +-.3 E F4($i-1)A F1(]})A F0 .115 +(if referenced within another shell function\).)2.615 F(Use)5.115 E F2 +(LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144 +636 Q(.)-.55 E F1 -.3(BA)108 648 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E +-.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 660 S 1.57(olon-separated list of\ + directories in which the shell looks for dynamically loadable b)-4.07 F +(uiltins)-.2 E(speci\214ed by the)144 672 Q F1(enable)2.5 E F0(command.) +2.5 E F1 -.3(BA)108 684 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144 +696 R .006(ariable whose members are assigned by the)-.25 F F1(=~)2.506 +E F0 .005(binary operator to the)2.506 F F1([[)2.505 E F0 .005 +(conditional com-)2.505 F 2.506(mand. The)144 708 R .007 +(element with inde)2.506 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 +(he portion of the string matching the entire re)-2.507 F .007(gular e) +-.15 F(xpression.)-.15 E 4.331(The element with inde)144 720 R(x)-.15 E +F4(n)6.831 E F0 4.331(is the portion of the string matching the)6.831 F +F4(n)6.83 E F0 4.33(th parenthesized)B(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(11)190.395 E 0 Cg EP +%%Page: 12 12 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(sube)144 84 Q +(xpression.)-.15 E/F1 10/Times-Bold@0 SF -.3(BA)108 96 S(SH_SOURCE).3 E +F0 .125(An array v)144 108 R .125(ariable whose members are the source \ +\214lenames where the corresponding shell function)-.25 F .781 +(names in the)144 120 R/F2 9/Times-Bold@0 SF(FUNCN)3.28 E(AME)-.18 E F0 +.78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78 +(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E/F3 10 +/Times-Italic@0 SF($i)A F1(]})A F0(is)3.28 E(de\214ned in the \214le)144 +132 Q F1(${B)2.5 E(ASH_SOURCE[)-.3 E F3($i)A F1(]})A F0(and called from) +2.5 E F1(${B)2.5 E(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0(.)A F1 -.3(BA) +108 144 S(SH_SUBSHELL).3 E F0 .296 +(Incremented by one within each subshell or subshell en)144 156 R .296 +(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G +(cuting).15 E 1.277(in that en)144 168 R 3.777(vironment. The)-.4 F +1.277(initial v)3.777 F 1.277(alue is 0.)-.25 F(If)6.277 E F1 -.3(BA) +3.777 G(SH_SUBSHELL).3 E F0 1.276(is unset, it loses its special)3.777 F +(properties, e)144 180 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 -.3(BA)108 192 S +(SH_VERSINFO).3 E F0 2.644(Ar)144 204 S .144(eadonly array v)-2.644 F +.144(ariable whose members hold v)-.25 F .144 +(ersion information for this instance of)-.15 F F1(bash)2.645 E F0 5.145 +(.T)C(he)-5.145 E -.25(va)144 216 S +(lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3 +(BA)144 234 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 234 Q +(ersion number \(the)-.15 E F3 -.37(re)2.5 G(lease).37 E F0(\).)A F1 -.3 +(BA)144 246 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)264 246 Q +(ersion number \(the)-.15 E F3(ver)2.5 E(sion)-.1 E F0(\).)A F1 -.3(BA) +144 258 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)264 258 Q -.15 +(ve)-.25 G(l.).15 E F1 -.3(BA)144 270 S(SH_VERSINFO[).3 E F0(3)A F1(])A +F0(The b)264 270 Q(uild v)-.2 E(ersion.)-.15 E F1 -.3(BA)144 282 S +(SH_VERSINFO[).3 E F0(4)A F1(])A F0(The release status \(e.g.,)264 282 Q +F3(beta1)2.5 E F0(\).)A F1 -.3(BA)144 294 S(SH_VERSINFO[).3 E F0(5)A F1 +(])A F0(The v)264 294 Q(alue of)-.25 E F2(MA)2.5 E(CHTYPE)-.495 E/F4 9 +/Times-Roman@0 SF(.)A F1 -.3(BA)108 306 S(SH_VERSION).3 E F0 +(Expands to a string describing the v)144 318 Q +(ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108 +330 Q(ORD)-.1 E F0 .397(An inde)144 342 R 2.897(xi)-.15 G(nto)-2.897 E +F1(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 +(ord containing the current cursor position.)-.1 F .396(This v)5.396 F +(ari-)-.25 E 1.18(able is a)144 354 R -.25(va)-.2 G 1.181 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681 +(db).1 G 3.681(yt)-3.681 G 1.181(he programmable completion f)-3.681 F +1.181(acilities \(see)-.1 F F1(Pr)144 366 Q(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 378 Q F0(The k)144 390 Q .3 +-.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3 +-.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2 +H(he current completion function.).1 E F1(COMP_LINE)108 402 Q F0 1.208 +(The current command line.)144 414 R 1.208(This v)6.208 F 1.208 +(ariable is a)-.25 F -.25(va)-.2 G 1.208 +(ilable only in shell functions and e).25 F 1.207(xternal com-)-.15 F +1.037(mands in)144 426 R -.2(vo)-.4 G -.1(ke).2 G 3.537(db).1 G 3.537 +(yt)-3.537 G 1.037(he programmable completion f)-3.537 F 1.037 +(acilities \(see)-.1 F F1(Pr)3.537 E 1.037(ogrammable Completion)-.18 F +F0(be-)3.537 E(lo)144 438 Q(w\).)-.25 E F1(COMP_POINT)108 450 Q F0 .667 +(The inde)144 462 R 3.167(xo)-.15 G 3.167(ft)-3.167 G .666 +(he current cursor position relati)-3.167 F .966 -.15(ve t)-.25 H 3.166 +(ot).15 G .666(he be)-3.166 F .666(ginning of the current command.)-.15 +F .666(If the)5.666 F .534 +(current cursor position is at the end of the current command, the v)144 +474 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1 +(${#COMP_LINE})144 486 Q F0 5.705(.T)C .705(his v)-5.705 F .704 +(ariable is a)-.25 F -.25(va)-.2 G .704 +(ilable only in shell functions and e).25 F .704(xternal commands in-) +-.15 F -.2(vo)144 498 S -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G +(he programmable completion f)-2.5 E(acilities \(see)-.1 E F1(Pr)2.5 E +(ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(COMP_TYPE)108 +510 Q F0 .041(Set to an inte)144 522 R .041(ger v)-.15 F .041(alue corr\ +esponding to the type of completion attempted that caused a completion) +-.25 F .338(function to be called:)144 534 R F3 -.5(TA)2.837 G(B).5 E F0 +2.837(,f)C .337(or normal completion,)-2.837 F F3(?)2.837 E F0 2.837(,f) +C .337(or listing completions after successi)-2.837 F .637 -.15(ve t) +-.25 H(abs,).15 E F3(!)144 546 Q F0 3.067(,f)C .567 +(or listing alternati)-3.067 F -.15(ve)-.25 G 3.067(so).15 G 3.067(np) +-3.067 G .567(artial w)-3.067 F .567(ord completion,)-.1 F F3(@)3.067 E +F0 3.067(,t)C 3.067(ol)-3.067 G .567(ist completions if the w)-3.067 F +.567(ord is not un-)-.1 F .418(modi\214ed, or)144 558 R F3(%)2.918 E F0 +2.918(,f)C .418(or menu completion.)-2.918 F .417(This v)5.417 F .417 +(ariable is a)-.25 F -.25(va)-.2 G .417 +(ilable only in shell functions and e).25 F(xter)-.15 E(-)-.2 E .704 +(nal commands in)144 570 R -.2(vo)-.4 G -.1(ke).2 G 3.204(db).1 G 3.204 +(yt)-3.204 G .704(he programmable completion f)-3.204 F .704 +(acilities \(see)-.1 F F1(Pr)3.204 E .704(ogrammable Comple-)-.18 F +(tion)144 582 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 594 Q(ORDBREAKS) +-.1 E F0 1.336(The set of characters that the)144 606 R F1 -.18(re)3.836 +G(adline).18 E F0 1.336(library treats as w)3.836 F 1.335 +(ord separators when performing w)-.1 F(ord)-.1 E 3.125(completion. If) +144 618 R F2(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 630 Q F1(COMP_W)108 642 Q(ORDS)-.1 E +F0 .654(An array v)144 654 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.191(line. The)144 666 R +.692(line is split into w)3.192 F .692(ords as)-.1 F F1 -.18(re)3.192 G +(adline).18 E F0 -.1(wo)3.192 G .692(uld split it, using).1 F F2(COMP_W) +3.192 E(ORDBREAKS)-.09 E F0 .692(as de-)2.942 F 1.558(scribed abo)144 +678 R -.15(ve)-.15 G 6.558(.T).15 G 1.558(his v)-6.558 F 1.558 +(ariable is a)-.25 F -.25(va)-.2 G 1.558 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 4.057 +(db).1 G 4.057(yt)-4.057 G 1.557(he programmable)-4.057 F(completion f) +144 690 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 702 Q(OC)-.3 E F0 .168(An array v) +144 714 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E +.169 +(w\) created to hold the \214le descriptors for output from and input) +-.25 F(to an unnamed coprocess \(see)144 726 Q F1(Copr)2.5 E(ocesses) +-.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(12)190.395 E 0 Cg EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(DIRST)108 84 Q -.55(AC)-.9 G(K).55 E F0 .79(An array v)144 96 R .79 +(ariable \(see)-.25 F F1(Arrays)3.29 E F0(belo)3.289 E .789 +(w\) containing the current contents of the directory stack.)-.25 F(Di-) +5.789 E .099(rectories appear in the stack in the order the)144 108 R +2.599(ya)-.15 G .099(re displayed by the)-2.599 F F1(dirs)2.599 E F0 -.2 +(bu)2.599 G 2.599(iltin. Assigning).2 F .099(to mem-)2.599 F .84 +(bers of this array v)144 120 R .84 +(ariable may be used to modify directories already in the stack, b)-.25 +F .84(ut the)-.2 F F1(pushd)3.34 E F0(and)144 132 Q F1(popd)3.45 E F0 +-.2(bu)3.45 G .951(iltins must be used to add and remo).2 F 1.251 -.15 +(ve d)-.15 H 3.451(irectories. Assignment).15 F .951(to this v)3.451 F +.951(ariable will)-.25 F .379(not change the current directory)144 144 R +5.379(.I)-.65 G(f)-5.379 E/F2 9/Times-Bold@0 SF(DIRST)2.879 E -.495(AC) +-.81 G(K).495 E F0 .378(is unset, it loses its special properties, e) +2.629 F -.15(ve)-.25 G 2.878(ni).15 G 2.878(fi)-2.878 G 2.878(ti)-2.878 +G(s)-2.878 E(subsequently reset.)144 156 Q F1(EPOCHREAL)108 168 Q(TIME) +-.92 E F0 .337(Each time this parameter is referenced, it e)144 180 R +.338(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see) +144 192 Q/F3 10/Times-Italic@0 SF(time)2.917 E F0 .417 +(\(3\)\) as a \215oating point v)B .416 +(alue with micro-second granularity)-.25 F 5.416(.A)-.65 G .416 +(ssignments to)-5.416 F F2(EPOCHRE-)2.916 E(AL)144 204 Q(TIME)-.828 E F0 +1.09(are ignored.)3.34 F(If)6.09 E F2(EPOCHREAL)3.59 E(TIME)-.828 E F0 +1.09(is unset, it loses its special properties, e)3.34 F -.15(ve)-.25 G +3.591(ni).15 G 3.591(fi)-3.591 G 3.591(ti)-3.591 G(s)-3.591 E +(subsequently reset.)144 216 Q F1(EPOCHSECONDS)108 228 Q F0 .338 +(Each time this parameter is referenced, it e)144 240 R .337 +(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144 +252 Q F3(time)4.041 E F0 4.041(\(3\)\). Assignments)B(to)4.041 E F2 +(EPOCHSECONDS)4.041 E F0 1.542(are ignored.)3.792 F(If)6.542 E F2 +(EPOCHSECONDS)4.042 E F0 1.542(is unset, it)3.792 F +(loses its special properties, e)144 264 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 +(EUID)108 276 Q F0 1.104(Expands to the ef)144 276 R(fecti)-.25 E 1.403 +-.15(ve u)-.25 H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G +1.103(nitialized at shell startup.)-3.603 F 1.103(This v)6.103 F 1.103 +(ariable is)-.25 F(readonly)144 288 Q(.)-.65 E F1(FUNCN)108 300 Q(AME) +-.2 E F0 .478(An array v)144 312 R .479 +(ariable containing the names of all shell functions currently in the e) +-.25 F -.15(xe)-.15 G .479(cution call stack.).15 F .277 +(The element with inde)144 324 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276 +(he name of an)-2.777 F 2.776(yc)-.15 G(urrently-e)-2.776 E -.15(xe)-.15 +G .276(cuting shell function.).15 F .276(The bottom-most)5.276 F .384 +(element \(the one with the highest inde)144 336 R .384(x\) is)-.15 F/F4 +10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .385 +(ariable e)-.25 F .385(xists only when a shell func-)-.15 F .076 +(tion is e)144 348 R -.15(xe)-.15 G 2.576(cuting. Assignments).15 F(to) +2.576 E F2(FUNCN)2.576 E(AME)-.18 E F0(ha)2.326 E .376 -.15(ve n)-.2 H +2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F2(FUNCN)2.575 E +(AME)-.18 E F0 .075(is unset, it loses its)2.325 F +(special properties, e)144 360 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 .11(This v)144 +378 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO) +.3 E F0(and)2.611 E F1 -.3(BA)2.611 G(SH_SOURCE).3 E F0 5.111(.E)C .111 +(ach element of)-5.111 F F1(FUNC-)2.611 E -.2(NA)144 390 S(ME).2 E F0 +1.404(has corresponding elements in)3.904 F F1 -.3(BA)3.904 G(SH_LINENO) +.3 E F0(and)3.904 E F1 -.3(BA)3.904 G(SH_SOURCE).3 E F0 1.404 +(to describe the)3.904 F .012(call stack.)144 402 R -.15(Fo)5.012 G +2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E F3($i)A +F1(]})A F0 -.1(wa)2.512 G 2.512(sc).1 G .012(alled from the \214le) +-2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0 1.184 +(at line number)144 414 R F1(${B)3.684 E(ASH_LINENO[)-.3 E F3($i)A F1 +(]})A F0 6.184(.T)C(he)-6.184 E F1(caller)3.683 E F0 -.2(bu)3.683 G +1.183(iltin displays the current call stack using).2 F +(this information.)144 426 Q F1(GR)108 438 Q(OUPS)-.3 E F0 1.228 +(An array v)144 450 R 1.228(ariable containing the list of groups of wh\ +ich the current user is a member)-.25 F 6.229(.A)-.55 G(ssign-)-6.229 E +.572(ments to)144 462 R F2(GR)3.072 E(OUPS)-.27 E F0(ha)2.822 E .872 +-.15(ve n)-.2 H 3.072(oe).15 G -.25(ff)-3.072 G 3.072(ect. If).25 F F2 +(GR)3.072 E(OUPS)-.27 E F0 .572 +(is unset, it loses its special properties, e)2.822 F -.15(ve)-.25 G +3.072(ni).15 G 3.071(fi)-3.072 G 3.071(ti)-3.071 G(s)-3.071 E +(subsequently reset.)144 474 Q F1(HISTCMD)108 486 Q F0 2.81 +(The history number)144 498 R 5.31(,o)-.4 G 5.31(ri)-5.31 G(nde)-5.31 E +5.311(xi)-.15 G 5.311(nt)-5.311 G 2.811 +(he history list, of the current command.)-5.311 F 2.811(Assignments to) +7.811 F F2(HISTCMD)144 510 Q F0 1.135(are ignored.)3.385 F(If)6.135 E F2 +(HISTCMD)3.635 E F0 1.135(is unset, it loses its special properties, e) +3.385 F -.15(ve)-.25 G 3.634(ni).15 G 3.634(fi)-3.634 G 3.634(ti)-3.634 +G 3.634(ss)-3.634 G(ubse-)-3.634 E(quently reset.)144 522 Q F1(HOSTN)108 +534 Q(AME)-.2 E F0(Automatically set to the name of the current host.) +144 546 Q F1(HOSTTYPE)108 558 Q F0 .222(Automatically set to a string t\ +hat uniquely describes the type of machine on which)144 570 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 +582 R(def)2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 594 Q F0 +1.408(Each time this parameter is referenced, the shell substitutes a d\ +ecimal number representing the)144 606 R .078(current sequential line n\ +umber \(starting with 1\) within a script or function.)144 618 R .079 +(When not in a script or)5.078 F .307(function, the v)144 630 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 642 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 654 Q +(CHTYPE)-.55 E F0 .898(Automatically set to a string that fully describ\ +es the system type on which)144 666 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 678 Q F3 +(cpu-company-system)2.5 E F0 2.5(format. The)2.5 F(def)2.5 E +(ault is system-dependent.)-.1 E F1(MAPFILE)108 690 Q F0 .294 +(An array v)144 702 R .294(ariable \(see)-.25 F F1(Arrays)2.794 E F0 +(belo)2.794 E .294(w\) created to hold the te)-.25 F .293 +(xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293 +(iltin when no).2 F -.25(va)144 714 S(riable name is supplied.).25 E +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(13)190.395 E 0 Cg EP +%%Page: 14 14 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(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 108 Q(ARG)-.9 E F0 1.626(The v)144 120 R 1.627 +(alue of the last option ar)-.25 F 1.627(gument processed by the)-.18 F +F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F/F2 9 +/Times-Bold@0 SF(SHELL)4.127 E -.09(BU)144 132 S(IL).09 E(TIN COMMANDS) +-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OPTIND)108 144 Q F0 1.652 +(The inde)144 156 R 4.152(xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152 +F 1.652(xt ar)-.15 F 1.652(gument to be processed by the)-.18 F F1 +(getopts)4.151 E F0 -.2(bu)4.151 G 1.651(iltin command \(see).2 F F2 +(SHELL)4.151 E -.09(BU)144 168 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(OSTYPE)108 180 Q F0 .329(Automatically set to a s\ +tring that describes the operating system on which)144 192 R F1(bash) +2.83 E F0 .33(is e)2.83 F -.15(xe)-.15 G 2.83(cuting. The).15 F(def)144 +204 Q(ault is system-dependent.)-.1 E F1(PIPEST)108 216 Q -.95(AT)-.9 G +(US).95 E F0 .61(An array v)144 228 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 240 Q -.15(xe)-.15 G(cuted fore).15 E +(ground pipeline \(which may contain only a single command\).)-.15 E F1 +(PPID)108 252 Q F0(The process ID of the shell')144 252 Q 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 264 Q F0(The current w)144 264 Q +(orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 +(RANDOM)108 276 Q F0 .417(Each time this parameter is referenced, it e) +144 288 R .417(xpands to a random inte)-.15 F .417 +(ger between 0 and 32767.)-.15 F(As-)5.417 E .551(signing a v)144 300 R +.551(alue to)-.25 F F2(RANDOM)3.051 E F0 .551 +(initializes \(seeds\) the sequence of random numbers.)2.801 F(If)5.55 E +F2(RANDOM)3.05 E F0(is)2.8 E(unset, it loses its special properties, e) +144 312 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5 +(ss)-2.5 G(ubsequently reset.)-2.5 E F1(READLINE_LINE)108 324 Q F0 1.546 +(The contents of the)144 336 R F1 -.18(re)4.047 G(adline).18 E F0 1.547 +(line b)4.047 F(uf)-.2 E(fer)-.25 E 4.047(,f)-.4 G 1.547(or use with) +-4.047 F/F3 10/Courier@0 SF 1.547(bind -x)4.047 F F0(\(see)4.047 E F2 +1.547(SHELL B)4.047 F(UIL)-.09 E 1.547(TIN COM-)-.828 F(MANDS)144 348 Q +F0(belo)2.25 E(w\).)-.25 E F1(READLINE_MARK)108 360 Q F0 .107 +(The position of the mark \(sa)144 372 R -.15(ve)-.2 G 2.607(di).15 G +.107(nsertion point\) in the)-2.607 F F1 -.18(re)2.606 G(adline).18 E F0 +.106(line b)2.606 F(uf)-.2 E(fer)-.25 E 2.606(,f)-.4 G .106(or use with) +-2.606 F F3 .106(bind -x)2.606 F F0(\(see)144 384 Q F2 1.016(SHELL B) +3.516 F(UIL)-.09 E 1.016(TIN COMMANDS)-.828 F F0(belo)3.266 E 3.516 +(w\). The)-.25 F 1.017(characters between the insertion point and the) +3.516 F(mark are often called the)144 396 Q/F4 10/Times-Italic@0 SF -.37 +(re)2.5 G(gion)-.03 E F0(.)A F1(READLINE_POINT)108 408 Q F0 .314 +(The position of the insertion point in the)144 420 R F1 -.18(re)2.813 G +(adline).18 E F0 .313(line b)2.813 F(uf)-.2 E(fer)-.25 E 2.813(,f)-.4 G +.313(or use with)-2.813 F F3 .313(bind -x)2.813 F F0(\(see)2.813 E F2 +(SHELL)2.813 E -.09(BU)144 432 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(REPL)108 444 Q(Y)-.92 E F0 +(Set to the line of input read by the)144 456 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 468 Q F0 .795(Each time this parameter is referen\ +ced, the number of seconds since shell in)144 480 R -.2(vo)-.4 G .795 +(cation is returned.).2 F .713(If a v)144 492 R .712 +(alue is assigned to)-.25 F F2(SECONDS)3.212 E/F5 9/Times-Roman@0 SF(,)A +F0 .712(the v)2.962 F .712 +(alue returned upon subsequent references is the number)-.25 F .627 +(of seconds since the assignment plus the v)144 504 R .627 +(alue assigned.)-.25 F .628(The number of seconds at shell in)5.627 F +-.2(vo)-.4 G(ca-).2 E .458(tion and the current time is al)144 516 R -.1 +(wa)-.1 G .458(ys determined by querying the system clock.).1 F(If)5.457 +E F2(SECONDS)2.957 E F0 .457(is un-)2.707 F +(set, it loses its special properties, e)144 528 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 540 Q F0 3.262(Ac)144 552 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 564 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 576 R F2 +(SHELLOPTS)2.519 E F0 .019(are those reported as)2.269 F F4(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 588 Q F1(bash)3.142 E F0 .642(starts up, each shell option in\ + the list will be enabled before reading an)3.142 F 3.141(ys)-.15 G .641 +(tartup \214les.)-3.141 F(This v)144 600 Q(ariable is read-only)-.25 E +(.)-.65 E F1(SHL)108 612 Q(VL)-.92 E F0 +(Incremented by one each time an instance of)144 624 Q F1(bash)2.5 E F0 +(is started.)2.5 E F1(SRANDOM)108 636 Q F0 .76(This v)144 648 R .76 +(ariable e)-.25 F .761(xpands to a 32-bit pseudo-random number each tim\ +e it is referenced. The random)-.15 F .565 +(number generator is not linear on systems that support)144 660 R F3 +(/dev/urandom)3.064 E F0(or)3.064 E F4(ar)3.064 E(c4r)-.37 E(andom)-.15 +E F0 3.064(,s)C 3.064(oe)-3.064 G(ach)-3.064 E .788 +(returned number has no relationship to the numbers preceding it.)144 +672 R .788(The random number generator)5.788 F .088 +(cannot be seeded, so assignments to this v)144 684 R .087(ariable ha) +-.25 F .387 -.15(ve n)-.2 H 2.587(oe).15 G -.25(ff)-2.587 G 2.587 +(ect. If).25 F F2(SRANDOM)2.587 E F0 .087(is unset, it loses its)2.337 F +(special properties, e)144 696 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(UID)108 708 Q +F0(Expands to the user ID of the current user)144 708 Q 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 724.8 R .993(wing v)-.25 F .994 +(ariables are used by the shell.)-.25 F .994(In some cases,)5.994 F F1 +(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .994 +(alue to a v)-.25 F(ariable;)-.25 E(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(14)190.395 E 0 Cg EP +%%Page: 15 15 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(these cases are noted belo)108 84 Q -.65(w.)-.25 G/F1 10/Times-Bold@0 +SF -.3(BA)108 100.8 S(SH_COMP).3 E -.95(AT)-.74 G F0 .503(The v)144 +112.8 R .502(alue is used to set the shell')-.25 F 3.002(sc)-.55 G .502 +(ompatibility le)-3.002 F -.15(ve)-.25 G 3.002(l. See).15 F/F2 9 +/Times-Bold@0 SF .502(SHELL COMP)3.002 F -.855(AT)-.666 G .502 +(IBILITY MODE).855 F F0(be-)2.752 E(lo)144 124.8 Q 2.662(wf)-.25 G .162 +(or a description of the v)-2.662 F .162(arious compatibility le)-.25 F +-.15(ve)-.25 G .162(ls and their ef).15 F 2.663(fects. The)-.25 F -.25 +(va)2.663 G .163(lue may be a dec-).25 F .33 +(imal number \(e.g., 4.2\) or an inte)144 136.8 R .33 +(ger \(e.g., 42\) corresponding to the desired compatibility le)-.15 F +-.15(ve)-.25 G 2.83(l. If).15 F F1 -.3(BA)144 148.8 S(SH_COMP).3 E -.95 +(AT)-.74 G F0 .86 +(is unset or set to the empty string, the compatibility le)4.31 F -.15 +(ve)-.25 G 3.361(li).15 G 3.361(ss)-3.361 G .861(et to the def)-3.361 F +(ault)-.1 E .39(for the current v)144 160.8 R 2.89(ersion. If)-.15 F F1 +-.3(BA)2.89 G(SH_COMP).3 E -.95(AT)-.74 G F0 .39(is set to a v)3.84 F +.39(alue that is not one of the v)-.25 F .39(alid compati-)-.25 F .277 +(bility le)144 172.8 R -.15(ve)-.25 G .278 +(ls, the shell prints an error message and sets the compatibility le).15 +F -.15(ve)-.25 G 2.778(lt).15 G 2.778(ot)-2.778 G .278(he def)-2.778 F +.278(ault for the)-.1 F 1.401(current v)144 184.8 R 3.901(ersion. The) +-.15 F -.25(va)3.901 G 1.401(lid v).25 F 1.401 +(alues correspond to the compatibility le)-.25 F -.15(ve)-.25 G 1.401 +(ls described belo).15 F 3.9(wu)-.25 G(nder)-3.9 E F2(BSHELL)144 196.8 Q +/F3 9/Times-Roman@0 SF(COMP)A -.999(AT)-.828 G(IBILITY).999 E F2(MODE)A +F3(.)A F0 -.15(Fo)4.997 G 2.997(re).15 G .497(xample, 4.2 and 42 are v) +-3.147 F .497(alid v)-.25 F .498(alues that correspond to the)-.25 F F1 +.774(compat42 shopt)144 208.8 R F0 .774 +(option and set the compatibility le)3.274 F -.15(ve)-.25 G 3.274(lt).15 +G 3.274(o4)-3.274 G 3.274(2. The)-3.274 F .774(current v)3.274 F .773 +(ersion is also a v)-.15 F(alid)-.25 E -.25(va)144 220.8 S(lue.).25 E F1 +-.3(BA)108 232.8 S(SH_ENV).3 E F0 .505(If this parameter is set when)144 +244.8 R F1(bash)3.005 E F0 .505(is e)3.005 F -.15(xe)-.15 G .506 +(cuting a shell script, its v).15 F .506 +(alue is interpreted as a \214lename)-.25 F .391 +(containing commands to initialize the shell, as in)144 256.8 R/F4 10 +/Times-Italic@0 SF(~/.bashr)2.39 E(c)-.37 E F0 5.39(.T).31 G .39(he v) +-5.39 F .39(alue of)-.25 F F2 -.27(BA)2.89 G(SH_ENV).27 E F0 .39 +(is subjected)2.64 F .525(to parameter e)144 268.8 R .525 +(xpansion, command substitution, and arithmetic e)-.15 F .525 +(xpansion before being interpreted)-.15 F(as a \214lename.)144 280.8 Q +F2 -.666(PA)5 G(TH)-.189 E F0 +(is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA) +108 292.8 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 304.8 +R .481(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 +F(,)-.4 E F1(bash)2.98 E F0 .48(will write the trace output gener)2.98 F +(-)-.2 E 3.114(ated when)144 316.8 R/F5 10/Courier@0 SF 3.114(set -x) +5.614 F F0 3.114(is enabled to that \214le descriptor)5.614 F 8.114(.T) +-.55 G 3.114(he \214le descriptor is closed when)-8.114 F F2 -.27(BA)144 +328.8 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne) +2.388 F 2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F2 -.27(BA)2.638 +G(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the \ +empty string causes the trace output to be sent to the standard error) +144 340.8 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F2 -.27(BA) +144 352.8 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error\ + \214le descriptor\) and then unsetting it will result in the)2.991 F +(standard error being closed.)144 364.8 Q F1(CDP)108 376.8 Q -.95(AT) +-.74 G(H).95 E F0 1.247(The search path for the)144 388.8 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 400.8 R +F1(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795 +(alue is)-.25 F F5(".:~:/usr")144 412.8 Q F0(.)A F1(CHILD_MAX)108 424.8 +Q F0 .997(Set the number of e)144 436.8 R .997(xited child status v)-.15 +F .997(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997 +(ash will not allo)-5.997 F 3.498(wt)-.25 G(his)-3.498 E -.25(va)144 +448.8 S 1.078(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077 +(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.077 +(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 460.8 Q +2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)-.25 E +F1(COLUMNS)108 472.8 Q F0 .828(Used by the)144 484.8 R F1(select)3.328 E +F0 .829(compound command to determine the terminal width when printing \ +selection)3.328 F 3.466(lists. Automatically)144 496.8 R .966 +(set if the)3.466 F F1(checkwinsize)3.466 E F0 .966 +(option is enabled or in an interacti)3.466 F 1.266 -.15(ve s)-.25 H +.966(hell upon re-).15 F(ceipt of a)144 508.8 Q F2(SIGWINCH)2.5 E F3(.)A +F1(COMPREPL)108 520.8 Q(Y)-.92 E F0 .847(An array v)144 532.8 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 544.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G +.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F1 +(Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E 2.785 +(w\). Each)-.25 F(array element contains one possible completion.)144 +556.8 Q F1(EMA)108 568.8 Q(CS)-.55 E F0(If)144 580.8 Q F1(bash)2.535 E +F0 .035(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036 +(vironment when the shell starts with v)-.4 F(alue)-.25 E F5(t)2.536 E +F0 2.536(,i)C 2.536(ta)-2.536 G .036(ssumes that the)-2.536 F +(shell is running in an Emacs shell b)144 592.8 Q(uf)-.2 E +(fer and disables line editing.)-.25 E F1(ENV)108 604.8 Q F0 .671 +(Expanded and e)144 604.8 R -.15(xe)-.15 G .671(cuted similarly to).15 F +F2 -.27(BA)3.17 G(SH_ENV).27 E F0(\(see)2.92 E F1(INV)3.17 E(OCA)-.45 E +(TION)-.95 E F0(abo)3.17 E -.15(ve)-.15 G 3.17(\)w).15 G .67 +(hen an interacti)-3.17 F -.15(ve)-.25 G(shell is in)144 616.8 Q -.2(vo) +-.4 G -.1(ke).2 G 2.5(di).1 G(n)-2.5 E F4(posix mode)2.5 E F0(.)A F1 +(EXECIGNORE)108 628.8 Q F0 2.716(Ac)144 640.8 S .216 +(olon-separated list of shell patterns \(see)-2.716 F F1 -.1(Pa)2.717 G +(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C .217 +(e\214ning the list of \214lenames to be)-2.717 F .117 +(ignored by command search using)144 652.8 R F1 -.74(PA)2.617 G(TH)-.21 +E F0 5.117(.F)C .116 +(iles whose full pathnames match one of these patterns)-5.117 F 1.432 +(are not considered e)144 664.8 R -.15(xe)-.15 G 1.432 +(cutable \214les for the purposes of completion and command e).15 F -.15 +(xe)-.15 G 1.433(cution via).15 F F1 -.74(PA)144 676.8 S(TH)-.21 E F0 +2.909(lookup. This)2.909 F .408(does not af)2.908 F .408(fect the beha) +-.25 F .408(vior of the)-.2 F F1([)2.908 E F0(,)A F1(test)2.908 E F0 +2.908(,a)C(nd)-2.908 E F1([[)2.908 E F0 2.908(commands. Full)2.908 F +(pathnames)2.908 E .364(in the command hash table are not subject to)144 +688.8 R F1(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364 +(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 700.8 +R 1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37 +(cutable bit set, b).15 F 1.37(ut are not e)-.2 F -.15(xe)-.15 G 1.37 +(cutable \214les.).15 F 1.37(The pattern matching)6.37 F +(honors the setting of the)144 712.8 Q F1(extglob)2.5 E F0 +(shell option.)2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(15) +190.395 E 0 Cg EP +%%Page: 16 16 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(FCEDIT)108 84 Q F0(The def)144 96 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 108 Q F0 2.598 +(Ac)144 120 S .098(olon-separated list of suf)-2.598 F<8c78>-.25 E .098 +(es to ignore when performing \214lename completion \(see)-.15 F/F2 9 +/Times-Bold@0 SF(READLINE)2.599 E F0(belo)144 132 Q 2.705(w\). A)-.25 F +.205(\214lename whose suf)2.705 F .205 +(\214x matches one of the entries in)-.25 F F2(FIGNORE)2.705 E F0 .205 +(is e)2.455 F .204(xcluded from the list)-.15 F(of matched \214lenames.) +144 144 Q 2.5(As)5 G(ample v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF +(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 156 Q F0 .23(If set to a numeric v) +144 168 R .231 +(alue greater than 0, de\214nes a maximum function nesting le)-.25 F +-.15(ve)-.25 G 2.731(l. Function).15 F(in)2.731 E -.2(vo)-.4 G(-).2 E +(cations that e)144 180 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G +2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F1 +(GLOBIGNORE)108 192 Q F0 2.924(Ac)144 204 S .423(olon-separated list of\ + patterns de\214ning the set of \214le names to be ignored by pathname \ +e)-2.924 F(xpan-)-.15 E 2.947(sion. If)144 216 R 2.947<618c>2.947 G .447 +(le name matched by a pathname e)-2.947 F .448 +(xpansion pattern also matches one of the patterns in)-.15 F F2 +(GLOBIGNORE)144 228 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 240 Q(OL)-.3 E F0 2.654(Ac)144 252 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 264 R .49(alues includes)-.25 F/F5 10 +/Times-Italic@0 SF(ignor)3 E(espace)-.37 E F0 2.99(,l).18 G .49 +(ines which be)-2.99 F .49(gin with a)-.15 F F1(space)2.99 E F0 .49 +(character are not sa)2.99 F -.15(ve)-.2 G 2.99(di).15 G 2.99(nt)-2.99 G +.49(he his-)-2.99 F .558(tory list.)144 276 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.925 +(Av)144 288 S .425(alue of)-3.175 F F5(ignor)2.935 E(eboth)-.37 E F0 +.426(is shorthand for)3.205 F F5(ignor)2.926 E(espace)-.37 E F0(and) +2.926 E F5(ignor)2.926 E(edups)-.37 E F0 5.426(.A)C -.25(va)-2.5 G .426 +(lue of).25 F F5(er)3.116 E(asedups)-.15 E F0(causes)3.196 E .699 +(all pre)144 300 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 312 Q -.15(ve)-.2 G 2.763(d. An).15 F 2.763(yv)-.15 G .263 +(alue not in the abo)-3.013 F .563 -.15(ve l)-.15 H .263 +(ist is ignored.).15 F(If)5.263 E F2(HISTCONTR)2.763 E(OL)-.27 E F0 .264 +(is unset, or does not include)2.513 F 2.942(av)144 324 S .442(alid v) +-3.192 F .442(alue, all lines read by the shell parser are sa)-.25 F +-.15(ve)-.2 G 2.941(do).15 G 2.941(nt)-2.941 G .441 +(he history list, subject to the v)-2.941 F .441(alue of)-.25 F F2 +(HISTIGNORE)144 336 Q F4(.)A F0 1.981(The second and subsequent lines o\ +f a multi-line compound command are not)6.481 F +(tested, and are added to the history re)144 348 Q -.05(ga)-.15 G +(rdless of the v).05 E(alue of)-.25 E F2(HISTCONTR)2.5 E(OL)-.27 E F4(.) +A F1(HISTFILE)108 360 Q F0 .181 +(The name of the \214le in which command history is sa)144 372 R -.15 +(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F2(HIST)2.681 E(OR)-.162 E(Y) +-.315 E F0(belo)2.431 E 2.681(w\). The)-.25 F(def)2.681 E .181(ault v) +-.1 F(alue)-.25 E(is)144 384 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 a shell e)-2.5 E(xits.)-.15 E F1(HISTFILESIZE)108 396 Q F0 +1.622(The maximum number of lines contained in the history \214le.)144 +408 R 1.623(When this v)6.623 F 1.623(ariable is assigned a)-.25 F -.25 +(va)144 420 S .125(lue, the history \214le is truncated, if necessary) +.25 F 2.625(,t)-.65 G 2.624(oc)-2.625 G .124 +(ontain no more than that number of lines by re-)-2.624 F(mo)144 432 Q +.065(ving the oldest entries.)-.15 F .066(The history \214le is also tr\ +uncated to this size after writing it when a shell)5.065 F -.15(ex)144 +444 S 2.928(its. If).15 F .428(the v)2.928 F .428 +(alue is 0, the history \214le is truncated to zero size.)-.25 F .427 +(Non-numeric v)5.427 F .427(alues and numeric)-.25 F -.25(va)144 456 S +.152(lues less than zero inhibit truncation.).25 F .152 +(The shell sets the def)5.152 F .152(ault v)-.1 F .152(alue to the v) +-.25 F .152(alue of)-.25 F F1(HISTSIZE)2.652 E F0(after reading an)144 +468 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 480 Q F0 +2.658(Ac)144 492 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 504 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 516 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 F2(HISTCONTR)144 +528 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 +(In addition to the normal shell pattern matching characters, `)6.793 F +F1(&)A F0(')A 1.44(matches the pre)144 540 R 1.44(vious history line.) +-.25 F(`)6.44 E F1(&)A F0 3.94('m)C 1.44 +(ay be escaped using a backslash; the backslash is re-)-3.94 F(mo)144 +552 Q -.15(ve)-.15 G 3.95(db).15 G 1.45(efore attempting a match.)-3.95 +F 1.45(The second and subsequent lines of a multi-line compound)6.45 F +1.269(command are not tested, and are added to the history re)144 564 R +-.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F2 +(HISTIGNORE)3.769 E F4(.)A F0 +(The pattern matching honors the setting of the)144 576 Q F1(extglob)2.5 +E F0(shell option.)2.5 E F1(HISTSIZE)108 588 Q F0 1.387 +(The number of commands to remember in the command history \(see)144 600 +R F2(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If) +-.25 F(the)3.888 E -.25(va)144 612 S .413(lue is 0, commands are not sa) +.25 F -.15(ve)-.2 G 2.913(di).15 G 2.913(nt)-2.913 G .413 +(he history list.)-2.913 F .413(Numeric v)5.413 F .412 +(alues less than zero result in e)-.25 F(v-)-.25 E .343 +(ery command being sa)144 624 R -.15(ve)-.2 G 2.843(do).15 G 2.843(nt) +-2.843 G .343(he history list \(there is no limit\).)-2.843 F .344 +(The shell sets the def)5.343 F .344(ault v)-.1 F .344(alue to)-.25 F +(500 after reading an)144 636 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1 +(HISTTIMEFORMA)108 648 Q(T)-.95 E F0 .952(If this v)144 660 R .952 +(ariable is set and not null, its v)-.25 F .951 +(alue is used as a format string for)-.25 F F5(strftime)3.451 E F0 .951 +(\(3\) to print the)B .672 +(time stamp associated with each history entry displayed by the)144 672 +R F1(history)3.173 E F0 -.2(bu)3.173 G 3.173(iltin. If).2 F .673(this v) +3.173 F .673(ariable is)-.25 F .144 +(set, time stamps are written to the history \214le so the)144 684 R +2.644(ym)-.15 G .144(ay be preserv)-2.644 F .144 +(ed across shell sessions.)-.15 F(This)5.144 E(uses the history comment\ + character to distinguish timestamps from other history lines.)144 696 Q +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(16)190.395 E 0 Cg EP +%%Page: 17 17 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(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 .138 +(adds the contents of the ne)2.638 F 2.638<778c>-.25 G .138(le to the e) +-2.638 F .138(xisting list.)-.15 F(If)5.138 E/F3 9/Times-Bold@0 SF +(HOSTFILE)2.638 E F0 .138(is set, b)2.388 F .139(ut has no v)-.2 F .139 +(alue, or)-.25 F .518(does not name a readable \214le,)144 180 R F1 +(bash)3.018 E F0 .518(attempts to read)3.018 F F2(/etc/hosts)4.683 E F0 +.517(to obtain the list of possible host-)4.683 F(name completions.)144 +192 Q(When)5 E F3(HOSTFILE)2.5 E F0 +(is unset, the hostname list is cleared.)2.25 E F1(IFS)108 204 Q F0(The) +144 204 Q 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 .26(The \214lename for the)144 300 R F1 -.18(re) +2.76 G(adline).18 E F0 .26(startup \214le, o)2.76 F -.15(ve)-.15 G .26 +(rriding the def).15 F .261(ault of)-.1 F F2(~/.inputr)4.427 E(c)-.37 E +F0(\(see)4.427 E F3(READLINE)2.761 E F0(be-)2.511 E(lo)144 312 Q(w\).) +-.25 E F1(INSIDE_EMA)108 324 Q(CS)-.55 E F0 .034(If this v)144 336 R +.034(ariable appears in the en)-.25 F .034 +(vironment when the shell starts,)-.4 F F1(bash)2.533 E F0 .033 +(assumes that it is running in-)2.533 F(side an Emacs shell b)144 348 Q +(uf)-.2 E(fer and may disable line editing, depending on the v)-.25 E +(alue of)-.25 E F1(TERM)2.5 E F0(.)A F1(LANG)108 360 Q F0 1.239 +(Used to determine the locale cate)144 360 R 1.239(gory for an)-.15 F +3.739(yc)-.15 G(ate)-3.739 E 1.24 +(gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E +(starting with)144 372 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 384 Q F0 .974 +(This v)144 396 R .974(ariable o)-.25 F -.15(ve)-.15 G .974 +(rrides the v).15 F .973(alue of)-.25 F F3(LANG)3.473 E F0 .973(and an) +3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 -.25(va)3.473 G +.973(riable specifying a locale cate-).25 F(gory)144 408 Q(.)-.65 E F1 +(LC_COLLA)108 420 Q(TE)-.95 E F0 .411(This v)144 432 R .412(ariable det\ +ermines the collation order used when sorting the results of pathname e) +-.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 444 R 1.465 +(vior of range e)-.2 F 1.464(xpressions, equi)-.15 F -.25(va)-.25 G +1.464(lence classes, and collating sequences).25 F(within pathname e)144 +456 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 468 Q F0 +1.935(This v)144 480 R 1.936 +(ariable determines the interpretation of characters and the beha)-.25 F +1.936(vior of character classes)-.2 F(within pathname e)144 492 Q +(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 504 Q(GES)-.55 E +F0(This v)144 516 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 528 Q F0(This v)144 540 Q(ariable determines the locale cate)-.25 E +(gory used for number formatting.)-.15 E F1(LC_TIME)108 552 Q F0(This v) +144 564 Q(ariable determines the locale cate)-.25 E +(gory used for data and time formatting.)-.15 E F1(LINES)108 576 Q F0 +.055(Used by the)144 576 R F1(select)2.555 E F0 .054(compound command t\ +o determine the column length for printing selection lists.)2.555 F .264 +(Automatically set if the)144 588 R F1(checkwinsize)2.764 E F0 .264 +(option is enabled or in an interacti)2.764 F .565 -.15(ve s)-.25 H .265 +(hell upon receipt of a).15 F F3(SIGWINCH)144 600 Q/F4 9/Times-Roman@0 +SF(.)A F1(MAIL)108 612 Q F0 .422 +(If this parameter is set to a \214le or directory name and the)144 612 +R F3(MAILP)2.921 E -.855(AT)-.666 G(H).855 E F0 -.25(va)2.671 G .421 +(riable is not set,).25 F F1(bash)2.921 E F0(in-)2.921 E +(forms the user of the arri)144 624 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 +(fm)-2.5 G(ail in the speci\214ed \214le or Maildir)-2.5 E +(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 636 Q F0 .098 +(Speci\214es ho)144 648 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 660 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F +(or set to a v)144 672 Q(alue that is not a number greater than or equa\ +l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 684 Q +-.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 696 S .49 +(olon-separated list of \214lenames to be check)-2.99 F .49 +(ed for mail.)-.1 F .49(The message to be printed when mail)5.49 F(arri) +144 708 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ +\214le may be speci\214ed by separating the \214lename from the message\ + with a `?'.)-2.62 F(When used in the te)144 720 Q(xt of the message,) +-.15 E F1($_)2.5 E F0 -.15(ex)2.5 G +(pands to the name of the current mail\214le.).15 E(Example:)5 E +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(17)190.395 E 0 Cg EP +%%Page: 18 18 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(MAILP)144 84 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 96 Q F0 .015 +(can be con\214gured to supply a def)2.515 F .015(ault v)-.1 F .015 +(alue for this v)-.25 F .015(ariable \(there is no v)-.25 F .015 +(alue by def)-.25 F .015(ault\), b)-.1 F(ut)-.2 E(the location of the u\ +ser mail \214les that it uses is system dependent \(e.g., /v)144 108 Q +(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 120 Q F0 .39 +(If set to the v)144 132 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 144 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 156 Q -.15(xe)-.15 G(cuted.) +.15 E F1 -.74(PA)108 168 S(TH)-.21 E F0 .588 +(The search path for commands.)144 168 R .587 +(It is a colon-separated list of directories in which the shell looks) +5.588 F .471(for commands \(see)144 180 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 192 S +.536(lue of).25 F F2 -.666(PA)3.036 G(TH)-.189 E F0 .535 +(indicates the current directory)2.786 F 5.535(.A)-.65 G .535 +(null directory name may appear as tw)-2.5 F 3.035(oa)-.1 G(djacent) +-3.035 E .867(colons, or as an initial or trailing colon.)144 204 R .868 +(The def)5.868 F .868(ault path is system-dependent, and is set by the) +-.1 F(administrator who installs)144 216 Q F1(bash)2.5 E F0 5(.A)C +(common v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF +(/usr/local/bin:/usr/lo-)2.5 E(cal/sbin:/usr/bin:/usr/sbin:/bin:/sbin) +144 228 Q F0(.)A F1(POSIXL)108 240 Q(Y_CORRECT)-.92 E F0 .471(If this v) +144 252 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 264 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 276 Q F1(bash) +4.497 E F0(enables)4.497 E F4 1.997(posix mode)4.497 F F0 4.497(,a)C +4.497(si)-4.497 G 4.497(ft)-4.497 G 1.997(he command)-4.497 F F3 1.997 +(set -o posix)4.497 F F0 1.998(had been e)4.497 F -.15(xe)-.15 G(cuted.) +.15 E(When the shell enters)144 288 Q F4(posix mode)2.5 E F0 2.5(,i)C +2.5(ts)-2.5 G(ets this v)-2.5 E(ariable if it w)-.25 E +(as not already set.)-.1 E F1(PR)108 300 Q(OMPT_COMMAND)-.3 E F0 .155 +(If this v)144 312 R .155(ariable is set, and is an array)-.25 F 2.655 +(,t)-.65 G .155(he v)-2.655 F .155(alue of each set element is e)-.25 F +-.15(xe)-.15 G .155(cuted as a command prior).15 F .407 +(to issuing each primary prompt.)144 324 R .407(If this is set b)5.407 F +.407(ut not an array v)-.2 F .407(ariable, its v)-.25 F .407 +(alue is used as a com-)-.25 F(mand to e)144 336 Q -.15(xe)-.15 G +(cute instead.).15 E F1(PR)108 348 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 +(If set to a number greater than zero, the v)144 360 R .676 +(alue is used as the number of trailing directory compo-)-.25 F .923 +(nents to retain when e)144 372 R .923(xpanding the)-.15 F F1(\\w)3.423 +E F0(and)3.423 E F1(\\W)3.423 E F0 .923(prompt string escapes \(see) +3.423 F F2(PR)3.423 E(OMPTING)-.27 E F0(belo)3.173 E(w\).)-.25 E +(Characters remo)144 384 Q -.15(ve)-.15 G 2.5(da).15 G +(re replaced with an ellipsis.)-2.5 E F1(PS0)108 396 Q F0 1.174(The v) +144 396 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see) +-.15 F F2(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174 +(w\) and displayed by interacti)-.25 F -.15(ve)-.25 G +(shells after reading a command and before the command is e)144 408 Q +-.15(xe)-.15 G(cuted.).15 E F1(PS1)108 420 Q F0 .064(The v)144 420 R +.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 432 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 444 Q F0 .118(The v)144 444 R .118 +(alue of this parameter is e)-.25 F .118(xpanded as with)-.15 F F2(PS1) +2.617 E F0 .117(and used as the secondary prompt string.)2.367 F(The) +5.117 E(def)144 456 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G +(.).74 E F1(PS3)108 468 Q F0 1.115(The v)144 468 R 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 480 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 492 Q F0 +.101(The v)144 492 R .101(alue of this parameter is e)-.25 F .101 +(xpanded as with)-.15 F F2(PS1)2.6 E F0 .1(and the v)2.35 F .1 +(alue is printed before each command)-.25 F F1(bash)144 504 Q F0 .334 +(displays during an e)2.834 F -.15(xe)-.15 G .335(cution trace.).15 F +.335(The \214rst character of the e)5.335 F .335(xpanded v)-.15 F .335 +(alue of)-.25 F F2(PS4)2.835 E F0 .335(is repli-)2.585 F +(cated multiple times, as necessary)144 516 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 528 Q F0 .543(This v)144 540 R .543(ariable e)-.25 F .543 +(xpands to the full pathname to the shell.)-.15 F .542 +(If it is not set when the shell starts,)5.543 F F1(bash)3.042 E F0 +(assigns to it the full pathname of the current user')144 552 Q 2.5(sl) +-.55 G(ogin shell.)-2.5 E F1(TIMEFORMA)108 564 Q(T)-.95 E F0 .826(The v) +144 576 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 588 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 600 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 612 Q +(ws; the braces denote optional portions.)-.25 E F1(%%)144 630 Q F0 2.5 +(Al)194 630 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 642 Q F4(p)A F1 +(][l]R)A F0(The elapsed time in seconds.)194 642 Q F1(%[)144 654 Q F4(p) +A F1(][l]U)A F0(The number of CPU seconds spent in user mode.)194 654 Q +F1(%[)144 666 Q F4(p)A F1(][l]S)A F0 +(The number of CPU seconds spent in system mode.)194 666 Q F1(%P)144 678 +Q F0(The CPU percentage, computed as \(%U + %S\) / %R.)194 678 Q .87 +(The optional)144 694.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 706.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 718.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 730.8 Q +(alue 3 is used.)-.25 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E +(18)190.395 E 0 Cg EP +%%Page: 19 19 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .667(The optional) +144 84 R/F1 10/Times-Bold@0 SF(l)3.167 E F0 .668 +(speci\214es a longer format, including minutes, of the form)3.168 F/F2 +10/Times-Italic@0 SF(MM)3.168 E F0(m)A F2(SS)A F0(.)A F2(FF)A F0 3.168 +(s. The)B -.25(va)3.168 G(lue).25 E(of)144 96 Q F2(p)2.5 E F0 +(determines whether or not the fraction is included.)2.5 E 13.365 +(If this v)144 112.8 R 13.365(ariable is not set,)-.25 F F1(bash)15.865 +E F0 13.364(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr) +144 124.8 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 +(.I)C 4.613(ft)-7.113 G 2.113(he v)-4.613 F 2.113 +(alue is null, no timing information is dis-)-.25 F 2.5(played. A)144 +136.8 R(trailing ne)2.5 E +(wline is added when the format string is displayed.)-.25 E F1(TMOUT)108 +148.8 Q F0 .941(If set to a v)144 160.8 R .941(alue greater than zero,) +-.25 F/F3 9/Times-Bold@0 SF(TMOUT)3.441 E F0 .941(is treated as the def) +3.191 F .941(ault timeout for the)-.1 F F1 -.18(re)3.441 G(ad).18 E F0 +-.2(bu)3.441 G(iltin.).2 E(The)144 172.8 Q F1(select)2.81 E F0 .31 +(command terminates if input does not arri)2.81 F .611 -.15(ve a)-.25 H +(fter).15 E F3(TMOUT)2.811 E F0 .311(seconds when input is com-)2.561 F +.886(ing from a terminal.)144 184.8 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 196.8 +S 1.05(it for a line of input after issuing the primary prompt.).1 F F1 +(Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that)-.1 +F(number of seconds if a complete line of input does not arri)144 208.8 +Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 220.8 Q F0 .391(If set,)144 232.8 +R F1(bash)2.891 E F0 .391(uses its v)2.891 F .391 +(alue as the name of a directory in which)-.25 F F1(bash)2.89 E F0 .39 +(creates temporary \214les for the)2.89 F(shell')144 244.8 Q 2.5(su)-.55 +G(se.)-2.5 E F1(auto_r)108 256.8 Q(esume)-.18 E F0 .53(This v)144 268.8 +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 280.8 R +.538(ord simple commands without redirections are treated as candidates\ + for resumption of an)-.1 F -.15(ex)144 292.8 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 +304.8 R(The)6.125 E F2(name)3.985 E F0 1.124(of a stopped job, in this) +3.805 F(conte)144 316.8 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 .606 +(match the name of a stopped job e)144 328.8 R .606(xactly; if set to) +-.15 F F2(substring)3.445 E F0 3.105(,t).22 G .605 +(he string supplied needs to match a)-3.105 F .884 +(substring of the name of a stopped job)144 340.8 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 352.8 Q F1(%?)3.334 E +F0 .834(job identi\214er \(see)5.834 F F3 .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 364.8 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 376.8 Q(.)-.55 +E F1(histchars)108 388.8 Q F0 .546(The tw)144 400.8 R 3.046(oo)-.1 G +3.046(rt)-3.046 G .546(hree characters which control history e)-3.046 F +.545(xpansion and tok)-.15 F .545(enization \(see)-.1 F F3(HIST)3.045 E +(OR)-.162 E 2.795(YE)-.315 G(X-)-2.795 E -.666(PA)144 412.8 S(NSION).666 +E F0(belo)2.987 E 3.237(w\). The)-.25 F .737(\214rst character is the) +3.237 F F2 .737(history e)3.237 F(xpansion)-.2 E F0(character)3.238 E +3.238(,t)-.4 G .738(he character which sig-)-3.238 F .761 +(nals the start of a history e)144 424.8 R .761(xpansion, normally `) +-.15 F F1(!)A F0 3.261('. The)B .76(second character is the)3.261 F F2 +(quic)3.26 E 3.26(ks)-.2 G(ubstitution)-3.26 E F0(character)144 436.8 Q +3.476(,w)-.4 G .977(hich is used as shorthand for re-running the pre) +-3.476 F .977(vious command entered, substituting)-.25 F .131 +(one string for another in the command.)144 448.8 R .131(The def)5.131 F +.131(ault is `)-.1 F F1(^)A F0 2.63('. The)B .13 +(optional third character is the char)2.63 F(-)-.2 E .276(acter which i\ +ndicates that the remainder of the line is a comment when found as the \ +\214rst character)144 460.8 R .46(of a w)144 472.8 R .46 +(ord, normally `)-.1 F F1(#)A F0 2.959('. The)B .459 +(history comment character causes history substitution to be skipped) +2.959 F .466(for the remaining w)144 484.8 R .466(ords on the line.)-.1 +F .467(It does not necessarily cause the shell parser to treat the rest) +5.467 F(of the line as a comment.)144 496.8 Q F1(Arrays)87 513.6 Q(Bash) +108 525.6 Q F0(pro)3.391 E .891(vides one-dimensional inde)-.15 F -.15 +(xe)-.15 G 3.391(da).15 G .891(nd associati)-3.391 F 1.191 -.15(ve a) +-.25 H .891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .89 +(ariable may be used as an)-3.641 F(inde)108 537.6 Q -.15(xe)-.15 G +2.573(da).15 G .073(rray; the)-2.573 F F1(declar)2.573 E(e)-.18 E F0 -.2 +(bu)2.573 G .073(iltin will e).2 F .073(xplicitly declare an array)-.15 +F 5.073(.T)-.65 G .074(here is no maximum limit on the size of)-5.073 F +.329(an array)108 549.6 R 2.829(,n)-.65 G .329(or an)-2.829 F 2.829(yr) +-.15 G .329(equirement that members be inde)-2.829 F -.15(xe)-.15 G +2.829(do).15 G 2.829(ra)-2.829 G .328(ssigned contiguously)-2.829 F +5.328(.I)-.65 G(nde)-5.328 E -.15(xe)-.15 G 2.828(da).15 G .328 +(rrays are refer)-2.828 F(-)-.2 E 1.595(enced using inte)108 561.6 R +1.595(gers \(including arithmetic e)-.15 F 1.595 +(xpressions\) and are zero-based; associati)-.15 F 1.895 -.15(ve a)-.25 +H 1.595(rrays are refer).15 F(-)-.2 E(enced using arbitrary strings.)108 +573.6 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G +(rray indices must be non-ne)-2.5 E -.05(ga)-.15 G(ti).05 E .3 -.15 +(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.463(An inde)108 590.4 R -.15(xe) +-.15 G 4.963(da).15 G 2.463(rray is created automatically if an)-4.963 F +4.963(yv)-.15 G 2.462(ariable is assigned to using the syntax)-5.213 F +F2(name)4.962 E F0([)A F2(sub-)A(script)108 602.4 Q F0(]=)A F2(value)A +F0 5.506(.T)C(he)-5.506 E F2(subscript)3.346 E F0 .507 +(is treated as an arithmetic e)3.687 F .507(xpression that must e)-.15 F +-.25(va)-.25 G .507(luate to a number).25 F 5.507(.T)-.55 G 3.007(oe) +-6.307 G(x-)-3.157 E 1.193(plicitly declare an inde)108 614.4 R -.15(xe) +-.15 G 3.693(da).15 G(rray)-3.693 E 3.693(,u)-.65 G(se)-3.693 E F1 +(declar)3.693 E 3.693<65ad>-.18 G(a)-3.693 E F2(name)3.693 E F0(\(see) +3.692 E F3 1.192(SHELL B)3.692 F(UIL)-.09 E 1.192(TIN COMMANDS)-.828 F +F0(belo)3.442 E(w\).)-.25 E F1(de-)6.192 E(clar)108 626.4 Q 2.5<65ad> +-.18 G(a)-2.5 E F2(name)2.5 E F1([)A F2(subscript)A F1(])A F0 +(is also accepted; the)2.5 E F2(subscript)2.5 E F0(is ignored.)2.5 E +(Associati)108 643.2 Q .3 -.15(ve a)-.25 H(rrays are created using).15 E +F1(declar)2.5 E 2.5<65ad>-.18 G(A)-2.5 E F2(name)2.5 E F0(.)A(Attrib)108 +660 Q .94(utes may be speci\214ed for an array v)-.2 F .941 +(ariable using the)-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.441 E F1 +-.18(re)3.441 G(adonly).18 E F0 -.2(bu)3.441 G 3.441(iltins. Each).2 F +(attrib)3.441 E(ute)-.2 E(applies to all members of an array)108 672 Q +(.)-.65 E 1.647 +(Arrays are assigned to using compound assignments of the form)108 688.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 700.8 Q F0 .211(may be of the form [)2.711 F F2 +(subscript)A F0(]=)A F2(string)A F0 5.211(.I)C(nde)-5.211 E -.15(xe)-.15 +G 2.711(da).15 G .212(rray assignments do not require an)-2.711 F .212 +(ything b)-.15 F(ut)-.2 E F2(string)2.712 E F0(.)A(Each)108 712.8 Q F2 +(value)2.53 E F0 .029(in the list is e)2.529 F .029 +(xpanded using all the shell e)-.15 F .029(xpansions described belo)-.15 +F 2.529(wu)-.25 G(nder)-2.529 E F3(EXP)2.529 E(ANSION)-.666 E/F4 9 +/Times-Roman@0 SF(.)A F0(When)4.529 E .995(assigning to inde)108 724.8 R +-.15(xe)-.15 G 3.495(da).15 G .995(rrays, if the optional brack)-3.495 F +.996(ets and subscript are supplied, that inde)-.1 F 3.496(xi)-.15 G +3.496(sa)-3.496 G .996(ssigned to;)-3.496 F(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(19)190.395 E 0 Cg EP +%%Page: 20 20 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .417 +(otherwise the inde)108 84 R 2.917(xo)-.15 G 2.917(ft)-2.917 G .417 +(he element assigned is the last inde)-2.917 F 2.917(xa)-.15 G .416 +(ssigned to by the statement plus one.)-2.917 F(Inde)5.416 E(x-)-.15 E +(ing starts at zero.)108 96 Q 1.288(When assigning to an associati)108 +112.8 R 1.588 -.15(ve a)-.25 H(rray).15 E 3.788(,t)-.65 G 1.288(he w) +-3.788 F 1.288(ords in a compound assignment may be either assignment) +-.1 F .608 +(statements, for which the subscript is required, or a list of w)108 +124.8 R .608(ords that is interpreted as a sequence of alter)-.1 F(-)-.2 +E 1.956(nating k)108 136.8 R -.15(ey)-.1 G 4.456(sa).15 G 1.956(nd v) +-4.456 F(alues:)-.25 E/F1 10/Times-Italic@0 SF(name)4.456 E F0(=)A/F2 10 +/Times-Bold@0 SF(\()A F1 -.1(ke)4.456 G 1.957(y1 value1 k)-.2 F -.3(ey) +-.1 G 4.457(2v).3 G(alue2)-4.457 E F0(...)4.457 E F2(\))A F0 6.957(.T)C +1.957(hese are treated identically to)-6.957 F F1(name)4.457 E F0(=)A F2 +(\()A F0([)108 148.8 Q F1 -.1(ke)C(y1)-.2 E F0(]=)A F1(value1)A F0([) +3.133 E F1 -.1(ke)C(y2)-.2 E F0(]=)A F1(value2)A F0(...)3.133 E F2(\))A +F0 5.633(.T)C .633(he \214rst w)-5.633 F .633 +(ord in the list determines ho)-.1 F 3.132(wt)-.25 G .632 +(he remaining w)-3.132 F .632(ords are inter)-.1 F(-)-.2 E .153 +(preted; all assignments in a list must be of the same type.)108 160.8 R +.154(When using k)5.154 F -.15(ey)-.1 G(/v).15 E .154(alue pairs, the k) +-.25 F -.15(ey)-.1 G 2.654(sm).15 G .154(ay not be)-2.654 F +(missing or empty; a \214nal missing v)108 172.8 Q(alue is treated lik) +-.25 E 2.5(et)-.1 G(he empty string.)-2.5 E .24 +(This syntax is also accepted by the)108 189.6 R F2(declar)2.74 E(e)-.18 +E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .239 +(vidual array elements may be assigned to using the)-.25 F F1(name)108 +201.6 Q F0([)A F1(subscript)A F0(]=)A F1(value)A F0 1.917 +(syntax introduced abo)4.416 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 +(hen assigning to an inde)-6.917 F -.15(xe)-.15 G 4.417(da).15 G(rray) +-4.417 E 4.417(,i)-.65 G(f)-4.417 E F1(name)4.777 E F0 1.917(is sub-) +4.597 F .116(scripted by a ne)108 213.6 R -.05(ga)-.15 G(ti).05 E .416 +-.15(ve n)-.25 H(umber).15 E 2.616(,t)-.4 G .115 +(hat number is interpreted as relati)-2.616 F .415 -.15(ve t)-.25 H +2.615(oo).15 G .115(ne greater than the maximum inde)-2.615 F(x)-.15 E +(of)108 225.6 Q F1(name)2.676 E F0 2.676(,s)C 2.676(on)-2.676 G -2.25 +-.15(eg a)-2.676 H(ti).15 E .476 -.15(ve i)-.25 H .177 +(ndices count back from the end of the array).15 F 2.677(,a)-.65 G .177 +(nd an inde)-2.677 F 2.677(xo)-.15 G 2.677<66ad>-2.677 G 2.677(1r)-2.677 +G .177(eferences the last el-)-2.677 F(ement.)108 237.6 Q(An)108 254.4 Q +3.576(ye)-.15 G 1.076(lement of an array may be referenced using ${) +-3.576 F F1(name)A F0([)A F1(subscript)A F0 3.575(]}. The)B 1.075 +(braces are required to a)3.575 F -.2(vo)-.2 G(id).2 E 1.541 +(con\215icts with pathname e)108 266.4 R 4.041(xpansion. If)-.15 F F1 +(subscript)4.041 E F0(is)4.041 E F2(@)4.041 E F0(or)4.041 E F2(*)4.041 E +F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F 1.541 +(xpands to all members of)-.15 F F1(name)4.042 E F0(.)A 1.057 +(These subscripts dif)108 278.4 R 1.057(fer only when the w)-.25 F 1.057 +(ord appears within double quotes.)-.1 F 1.056(If the w)6.056 F 1.056 +(ord is double-quoted,)-.1 F(${)108 290.4 Q F1(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 302.4 R/F3 9/Times-Bold@0 SF(IFS)3.875 E F0 1.375 +(special v)3.625 F 1.375(ariable, and ${)-.25 F F1(name)A F0 1.375 +([@]} e)B 1.375(xpands each element of)-.15 F F1(name)3.875 E F0 1.374 +(to a separate w)3.875 F 3.874(ord. When)-.1 F 2.027 +(there are no array members, ${)108 314.4 R F1(name)A F0 2.028([@]} e)B +2.028(xpands to nothing.)-.15 F 2.028(If the double-quoted e)7.028 F +2.028(xpansion occurs)-.15 F .759(within a w)108 326.4 R .759 +(ord, the e)-.1 F .759 +(xpansion of the \214rst parameter is joined with the be)-.15 F .759 +(ginning part of the original w)-.15 F(ord,)-.1 E .515(and the e)108 +338.4 R .516(xpansion of the last parameter is joined with the last par\ +t of the original w)-.15 F 3.016(ord. This)-.1 F .516(is analogous)3.016 +F .228(to the e)108 350.4 R .228(xpansion of the special parameters)-.15 +F F2(*)2.728 E F0(and)2.728 E F2(@)2.728 E F0(\(see)2.728 E F2 .228 +(Special P)2.728 F(arameters)-.1 E F0(abo)2.727 E -.15(ve)-.15 G 2.727 +(\). ${#).15 F F1(name)A F0([)A F1(subscript)A F0(]})A -.15(ex)108 362.4 +S .886(pands to the length of ${).15 F F1(name)A F0([)A F1(subscript)A +F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E F2(*)3.386 E F0(or) +3.386 E F2(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 +(xpansion is the number of ele-)-.15 F .295(ments in the array)108 374.4 +R 5.295(.I)-.65 G 2.795(ft)-5.295 G(he)-2.795 E F1(subscript)3.135 E F0 +.295(used to reference an element of an inde)3.475 F -.15(xe)-.15 G +2.794(da).15 G .294(rray e)-2.794 F -.25(va)-.25 G .294 +(luates to a number).25 F .628 +(less than zero, it is interpreted as relati)108 386.4 R .928 -.15(ve t) +-.25 H 3.128(oo).15 G .629(ne greater than the maximum inde)-3.128 F +3.129(xo)-.15 G 3.129(ft)-3.129 G .629(he array)-3.129 F 3.129(,s)-.65 G +3.129(on)-3.129 G -2.25 -.15(eg a)-3.129 H(ti).15 E -.15(ve)-.25 G +(indices count back from the end of the array)108 398.4 Q 2.5(,a)-.65 G +(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G +(eferences the last element.)-2.5 E .595(Referencing an array v)108 +415.2 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G +.595(lent to referencing the array with a subscript of).25 F 2.5(0. An) +108 427.2 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 +E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F2(bash)2.5 E +F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 444 Q +(ariable is considered set if a subscript has been assigned a v)-.25 E +2.5(alue. The)-.25 F(null string is a v)2.5 E(alid v)-.25 E(alue.)-.25 E +.417(It is possible to obtain the k)108 460.8 R -.15(ey)-.1 G 2.918(s\() +.15 G .418(indices\) of an array as well as the v)-2.918 F 2.918 +(alues. ${)-.25 F F2(!)A F1(name)A F0([)A F1(@)A F0 .418(]} and ${)B F2 +(!)A F1(name)A F0([)A F1(*)A F0(]})A -.15(ex)108 472.8 S .75 +(pand to the indices assigned in array v).15 F(ariable)-.25 E F1(name) +3.249 E F0 5.749(.T)C .749 +(he treatment when in double quotes is similar to)-5.749 F(the e)108 +484.8 Q(xpansion of the special parameters)-.15 E F1(@)2.5 E F0(and)2.5 +E F1(*)2.5 E F0(within double quotes.)2.5 E(The)108 501.6 Q F2(unset) +2.766 E F0 -.2(bu)2.766 G .267(iltin is used to destro).2 F 2.767(ya)-.1 +G(rrays.)-2.767 E F2(unset)5.267 E F1(name)2.767 E F0([)A F1(subscript)A +F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x) +-.15 E F1(sub-)2.767 E(script)108 513.6 Q F0 2.858(,f)C .358 +(or both inde)-2.858 F -.15(xe)-.15 G 2.858(da).15 G .358(nd associati) +-2.858 F .658 -.15(ve a)-.25 H 2.858(rrays. Ne).15 F -.05(ga)-.15 G(ti) +.05 E .658 -.15(ve s)-.25 H .358(ubscripts to inde).15 F -.15(xe)-.15 G +2.858(da).15 G .358(rrays are interpreted as de-)-2.858 F 1.204 +(scribed abo)108 525.6 R -.15(ve)-.15 G 6.204(.U).15 G 1.204 +(nsetting the last element of an array v)-6.204 F 1.205 +(ariable does not unset the v)-.25 F(ariable.)-.25 E F2(unset)6.205 E F1 +(name)3.705 E F0(,)A(where)108 537.6 Q F1(name)2.5 E F0(is an array)2.5 +E 2.5(,o)-.65 G(r)-2.5 E F2(unset)2.5 E F1(name)2.5 E F0([)A F1 +(subscript)A F0(], where)A F1(subscript)2.5 E F0(is)2.5 E F2(*)2.5 E F0 +(or)2.5 E F2(@)2.5 E F0 2.5(,r)C(emo)-2.5 E -.15(ve)-.15 G 2.5(st).15 G +(he entire array)-2.5 E(.)-.65 E .029(When using a v)108 554.4 R .029 +(ariable name with a subscript as an ar)-.25 F .028 +(gument to a command, such as with)-.18 F F2(unset)2.528 E F0 2.528(,w)C +.028(ithout us-)-2.528 F .937(ing the w)108 566.4 R .937(ord e)-.1 F +.937(xpansion syntax described abo)-.15 F -.15(ve)-.15 G 3.437(,t).15 G +.937(he ar)-3.437 F .938(gument is subject to pathname e)-.18 F 3.438 +(xpansion. If)-.15 F(path-)3.438 E(name e)108 578.4 Q +(xpansion is not desired, the ar)-.15 E(gument should be quoted.)-.18 E +(The)108 595.2 Q F2(declar)2.684 E(e)-.18 E F0(,)A F2(local)2.684 E F0 +2.684(,a)C(nd)-2.684 E F2 -.18(re)2.684 G(adonly).18 E F0 -.2(bu)2.684 G +.184(iltins each accept a).2 F F22.684 E F0 .184 +(option to specify an inde)2.684 F -.15(xe)-.15 G 2.683(da).15 G .183 +(rray and a)-2.683 F F22.683 E F0(op-)2.683 E .041 +(tion to specify an associati)108 607.2 R .341 -.15(ve a)-.25 H(rray).15 +E 5.041(.I)-.65 G 2.541(fb)-5.041 G .041(oth options are supplied,) +-2.541 F F22.541 E F0(tak)2.541 E .041(es precedence.)-.1 F(The) +5.041 E F2 -.18(re)2.542 G(ad).18 E F0 -.2(bu)2.542 G .042(iltin ac-).2 +F .864(cepts a)108 619.2 R F23.364 E F0 .864 +(option to assign a list of w)3.364 F .864 +(ords read from the standard input to an array)-.1 F 5.863(.T)-.65 G(he) +-5.863 E F2(set)3.363 E F0(and)3.363 E F2(declar)3.363 E(e)-.18 E F0 -.2 +(bu)108 631.2 S(iltins display array v).2 E(alues in a w)-.25 E +(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F4 10.95 +/Times-Bold@0 SF(EXP)72 648 Q(ANSION)-.81 E F0 .76(Expansion is perform\ +ed on the command line after it has been split into w)108 660 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 672 S .201(pansion performed:).15 F F1(br) +2.971 E .201(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .201(tilde e) +2.831 F(xpansion)-.2 E F0(,).24 E F1(par)3.951 E .201 +(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .2 +(command sub-)2.901 F(stitution)108 684 Q F0(,).24 E F1(arithmetic e) +2.83 E(xpansion)-.2 E F0(,).24 E F1(wor)2.84 E 2.5(ds)-.37 G(plitting) +-2.5 E F0 2.5(,a).22 G(nd)-2.5 E F1(pathname e)3.75 E(xpansion)-.2 E F0 +(.).24 E .418(The order of e)108 700.8 R .418(xpansions is: brace e)-.15 +F .418(xpansion; tilde e)-.15 F .419(xpansion, parameter and v)-.15 F +.419(ariable e)-.25 F .419(xpansion, arithmetic)-.15 F -.15(ex)108 712.8 +S .196(pansion, and command substitution \(done in a left-to-right f).15 +F .195(ashion\); w)-.1 F .195(ord splitting; and pathname e)-.1 F(xpan-) +-.15 E(sion.)108 724.8 Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E +(20)190.395 E 0 Cg EP +%%Page: 21 21 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .257 +(On systems that can support it, there is an additional e)108 84 R .257 +(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E/F1 10/Times-Italic@0 SF +(pr)2.757 E .257(ocess substitution)-.45 F F0 5.257(.T)C .257 +(his is per)-5.257 F(-)-.2 E +(formed at the same time as tilde, parameter)108 96 Q 2.5(,v)-.4 G +(ariable, and arithmetic e)-2.75 E(xpansion and command substitution.) +-.15 E .003(After these e)108 112.8 R .003 +(xpansions are performed, quote characters present in the original w) +-.15 F .002(ord are remo)-.1 F -.15(ve)-.15 G 2.502(du).15 G .002 +(nless the)-2.502 F(y)-.15 E(ha)108 124.8 Q .3 -.15(ve b)-.2 H +(een quoted themselv).15 E(es \()-.15 E F1(quote r)A(emo)-.37 E(val)-.1 +E F0(\).)A .171(Only brace e)108 141.6 R .171(xpansion, w)-.15 F .171 +(ord splitting, and pathname e)-.1 F .171 +(xpansion can increase the number of w)-.15 F .172(ords of the e)-.1 F +(x-)-.15 E .777(pansion; other e)108 153.6 R .776(xpansions e)-.15 F +.776(xpand a single w)-.15 F .776(ord to a single w)-.1 F 3.276 +(ord. The)-.1 F .776(only e)3.276 F .776(xceptions to this are the e) +-.15 F(x-)-.15 E .695(pansions of ")108 165.6 R/F2 10/Times-Bold@0 SF +($@)A F0 3.195("a)C .695(nd ")-3.195 F F2(${)A F1(name)A F2([@]})A F0 +.696(", and, in most cases,)B F2($*)3.196 E F0(and)3.196 E F2(${)3.196 E +F1(name)A F2([*]})A F0 .696(as e)3.196 F .696(xplained abo)-.15 F .996 +-.15(ve \()-.15 H(see).15 E/F3 9/Times-Bold@0 SF -.666(PA)3.196 G(-).666 +E(RAMETERS)108 177.6 Q/F4 9/Times-Roman@0 SF(\).)A F2(Brace Expansion)87 +194.4 Q F1(Br)108.58 206.4 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 218.4 Q F1 .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 .074(form of an optional)108 230.4 R F1(pr)3.823 E(eamble) +-.37 E F0 2.573(,f).18 G(ollo)-2.573 E .073 +(wed by either a series of comma-separated strings or a sequence e)-.25 +F(xpres-)-.15 E .489(sion between a pair of braces, follo)108 242.4 R +.489(wed by an optional)-.25 F F1(postscript)4.239 E F0 5.49(.T).68 G +.49(he preamble is pre\214x)-5.49 F .49(ed to each string)-.15 F .659(c\ +ontained within the braces, and the postscript is then appended to each\ + resulting string, e)108 254.4 R .658(xpanding left to)-.15 F(right.)108 +266.4 Q .718(Brace e)108 283.2 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 295.2 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F2({)A F0 +(d,c,b)A F2(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.243(As) +108 312 S .743(equence e)-3.243 F .743(xpression tak)-.15 F .743 +(es the form)-.1 F F2({)3.243 E F1(x)A F2(..)A F1(y)A F2([..)A F1(incr)A +F2(]})A F0 3.243(,w)C(here)-3.243 E F1(x)3.243 E F0(and)3.242 E F1(y) +3.242 E F0 .742(are either inte)3.242 F .742(gers or single characters,) +-.15 F(and)108 324 Q F1(incr)3.031 E F0 3.031(,a)C 3.032(no)-3.031 G +.532(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G +.532(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532 +(xpression e)-.15 F .532(xpands to each)-.15 F .078(number between)108 +336 R F1(x)2.578 E F0(and)2.578 E F1(y)2.578 E F0 2.578(,i)C(nclusi) +-2.578 E -.15(ve)-.25 G 5.078(.S).15 G .078(upplied inte)-5.078 F .077 +(gers may be pre\214x)-.15 F .077(ed with)-.15 F F1(0)2.577 E F0 .077 +(to force each term to ha)2.577 F .377 -.15(ve t)-.2 H(he).15 E .014 +(same width.)108 348 R .014(When either)5.014 F F1(x)2.514 E F0(or)2.514 +E F1(y)2.514 E F0(be)2.514 E .015(gins with a zero, the shell attempts \ +to force all generated terms to contain)-.15 F 1.143 +(the same number of digits, zero-padding where necessary)108 360 R 6.143 +(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F(xpression) +-.15 E -.15(ex)108 372 S 1.064(pands to each character le).15 F 1.064 +(xicographically between)-.15 F F1(x)3.564 E F0(and)3.564 E F1(y)3.564 E +F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G 1.064 +(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .245 +(that both)108 384 R F1(x)2.745 E F0(and)2.745 E F1(y)2.745 E F0 .245 +(must be of the same type.)2.745 F .244 +(When the increment is supplied, it is used as the dif)5.245 F .244 +(ference be-)-.25 F(tween each term.)108 396 Q(The def)5 E +(ault increment is 1 or \2551 as appropriate.)-.1 E .581(Brace e)108 +412.8 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 424.8 R .016(ed in the result.)-.15 F .016 +(It is strictly te)5.016 F(xtual.)-.15 E F2(Bash)5.016 E F0 .015 +(does not apply an)2.516 F 2.515(ys)-.15 G .015 +(yntactic interpretation to the con-)-2.515 F(te)108 436.8 Q +(xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.) +-.15 E 2.501(Ac)108 453.6 S .001(orrectly-formed brace e)-2.501 F .001(\ +xpansion must contain unquoted opening and closing braces, and at least\ + one un-)-.15 F .458(quoted comma or a v)108 465.6 R .458 +(alid sequence e)-.25 F 2.958(xpression. An)-.15 F 2.958(yi)-.15 G .458 +(ncorrectly formed brace e)-2.958 F .457(xpansion is left unchanged.) +-.15 F(A)108 477.6 Q F2({)2.521 E F0(or)2.521 E F2(,)2.521 E F0 .021 +(may be quoted with a backslash to pre)2.521 F -.15(ve)-.25 G .022 +(nt its being considered part of a brace e).15 F 2.522(xpression. T)-.15 +F 2.522(oa)-.8 G -.2(vo)-2.722 G(id).2 E .172 +(con\215icts with parameter e)108 489.6 R .172(xpansion, the string)-.15 +F F2(${)2.672 E F0 .172(is not considered eligible for brace e)2.672 F +.172(xpansion, and inhibits)-.15 F(brace e)108 501.6 Q +(xpansion until the closing)-.15 E F2(})2.5 E F0(.)A 1.476(This constru\ +ct is typically used as shorthand when the common pre\214x of the strin\ +gs to be generated is)108 518.4 R(longer than in the abo)108 530.4 Q .3 +-.15(ve ex)-.15 H(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 +547.2 Q -.65(w,)-.25 G(dist,b).65 E(ugs})-.2 E(or)108 559.2 Q(cho)144 +571.2 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 588 R .618 +(xpansion introduces a slight incompatibility with historical v)-.15 F +.618(ersions of)-.15 F F2(sh)3.118 E F0(.)A F2(sh)5.618 E F0 .618 +(does not treat open-)3.118 F .247 +(ing or closing braces specially when the)108 600 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 F2(Bash)5.248 E F0(remo)108 612 Q -.15 +(ve)-.15 G 3.53(sb).15 G 1.03(races from w)-3.53 F 1.03 +(ords as a consequence of brace e)-.1 F 3.53(xpansion. F)-.15 F 1.03 +(or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F2(sh) +3.53 E F0(as)3.53 E F1(\214le{1,2})108 624 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 F1 .515(\214le1 \214le2)4.925 F F0 .515(after e) +3.035 F .515(xpansion by)-.15 F F2(bash)3.015 E F0(.)A .437 +(If strict compatibility with)108 636 R F2(sh)2.936 E F0 .436 +(is desired, start)2.936 F F2(bash)2.936 E F0 .436(with the)2.936 F F2 +(+B)2.936 E F0 .436(option or disable brace e)2.936 F .436 +(xpansion with the)-.15 F F2(+B)108 648 Q F0(option to the)2.5 E F2(set) +2.5 E F0(command \(see)2.5 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) +-.828 E F0(belo)2.25 E(w\).)-.25 E F2 -.18(Ti)87 664.8 S(lde Expansion) +.18 E F0 1.086(If a w)108 676.8 R 1.086(ord be)-.1 F 1.086 +(gins with an unquoted tilde character \(`)-.15 F F2(~)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 688.8 R F1(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685(fn) +-5.185 G .185(one of the characters)-2.685 F .725(in the tilde-pre\214x\ + are quoted, the characters in the tilde-pre\214x follo)108 700.8 R .726 +(wing the tilde are treated as a possible)-.25 F F1(lo)108 712.8 Q .523 +(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523 +(his login name is the null string, the tilde is replaced with the v) +-3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 724.8 Q F4 +(.)A F0(If)6.735 E F3(HOME)4.735 E F0 2.236 +(is unset, the home directory of the user e)4.486 F -.15(xe)-.15 G 2.236 +(cuting the shell is substituted instead.).15 F(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(21)190.395 E 0 Cg EP +%%Page: 22 22 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(Otherwise, the ti\ +lde-pre\214x is replaced with the home directory associated with the sp\ +eci\214ed login name.)108 84 Q .093 +(If the tilde-pre\214x is a `~+', the v)108 100.8 R .092 +(alue of the shell v)-.25 F(ariable)-.25 E/F1 9/Times-Bold@0 SF(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 112.8 S .903 +(~\255', the v)-3.403 F .903(alue of the shell v)-.25 F(ariable)-.25 E +F1(OLDPWD)3.404 E/F2 9/Times-Roman@0 SF(,)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 .88 +(tilde in the tilde-pre\214x consist of a number)108 124.8 R/F3 10 +/Times-Italic@0 SF(N)3.38 E F0 3.38(,o)C .88(ptionally pre\214x)-3.38 F +.879(ed by a `+' or a `\255', the tilde-pre\214x is re-)-.15 F .138(pla\ +ced with the corresponding element from the directory stack, as it w)108 +136.8 R .138(ould be displayed by the)-.1 F/F4 10/Times-Bold@0 SF(dirs) +2.639 E F0 -.2(bu)2.639 G(iltin).2 E(in)108 148.8 Q -.2(vo)-.4 G -.1(ke) +.2 G 2.839(dw).1 G .338(ith the tilde-pre\214x as an ar)-2.839 F 2.838 +(gument. If)-.18 F .338(the characters follo)2.838 F .338 +(wing the tilde in the tilde-pre\214x consist)-.25 F +(of a number without a leading `+' or `\255', `+' is assumed.)108 160.8 +Q(If the login name is in)108 177.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 194.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 F4(:)2.667 E F0 .167(or the \214rst)2.667 F F4(=) +2.667 E F0 5.167(.I)C(n)-5.167 E .468(these cases, tilde e)108 206.4 R +.468(xpansion is also performed.)-.15 F(Consequently)5.467 E 2.967(,o) +-.65 G .467(ne may use \214lenames with tildes in assign-)-2.967 F +(ments to)108 218.4 Q F1 -.666(PA)2.5 G(TH)-.189 E F2(,)A F1(MAILP)2.25 +E -.855(AT)-.666 G(H).855 E F2(,)A F0(and)2.25 E F1(CDP)2.5 E -.855(AT) +-.666 G(H).855 E F2(,)A F0(and the shell assigns the e)2.25 E(xpanded v) +-.15 E(alue.)-.25 E .023(Bash also performs tilde e)108 235.2 R .023 +(xpansion on w)-.15 F .024(ords satisfying the conditions of v)-.1 F +.024(ariable assignments \(as described)-.25 F(abo)108 247.2 Q .77 -.15 +(ve u)-.15 H(nder).15 E F1 -.666(PA)2.97 G(RAMETERS).666 E F2(\))A F0 +.47(when the)2.72 F 2.969(ya)-.15 G .469(ppear as ar)-2.969 F .469 +(guments to simple commands.)-.18 F .469(Bash does not do this,)5.469 F +-.15(ex)108 259.2 S(cept for the).15 E F3(declar)2.5 E(ation)-.15 E F0 +(commands listed abo)2.5 E -.15(ve)-.15 G 2.5(,w).15 G(hen in)-2.5 E F3 +(posix mode)2.5 E F0(.)A F4 -.1(Pa)87 276 S(rameter Expansion).1 E F0 +.199(The `)108 288 R F4($)A F0 2.699('c)C .199 +(haracter introduces parameter e)-2.699 F .199 +(xpansion, command substitution, or arithmetic e)-.15 F 2.7 +(xpansion. The)-.15 F(pa-)2.7 E .314(rameter name or symbol to be e)108 +300 R .314(xpanded may be enclosed in braces, which are optional b)-.15 +F .314(ut serv)-.2 F 2.813(et)-.15 G 2.813(op)-2.813 G(rotect)-2.813 E +.414(the v)108 312 R .414(ariable to be e)-.25 F .414 +(xpanded from characters immediately follo)-.15 F .415 +(wing it which could be interpreted as part of)-.25 F(the name.)108 324 +Q 1.19(When braces are used, the matching ending brace is the \214rst `) +108 340.8 R F4(})A F0 3.689('n)C 1.189 +(ot escaped by a backslash or within a)-3.689 F .821 +(quoted string, and not within an embedded arithmetic e)108 352.8 R .822 +(xpansion, command substitution, or parameter e)-.15 F(x-)-.15 E +(pansion.)108 364.8 Q(${)108 381.6 Q F3(par)A(ameter)-.15 E F0(})A .106 +(The v)144 393.6 R .106(alue of)-.25 F F3(par)2.606 E(ameter)-.15 E F0 +.106(is substituted.)2.606 F .106(The braces are required when)5.106 F +F3(par)3.856 E(ameter)-.15 E F0 .106(is a positional pa-)3.336 F .11 +(rameter with more than one digit, or when)144 405.6 R F3(par)3.86 E +(ameter)-.15 E F0 .111(is follo)3.341 F .111 +(wed by a character which is not to be)-.25 F .208 +(interpreted as part of its name.)144 417.6 R(The)5.208 E F3(par)2.708 E +(ameter)-.15 E F0 .208(is a shell parameter as described abo)2.708 F +-.15(ve)-.15 G F4 -.74(PA)2.858 G(RAME-).74 E(TERS)144 429.6 Q F0 2.5 +(\)o)C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F4(Arrays)A +F0(\).)A .346(If the \214rst character of)108 446.4 R F3(par)2.846 E +(ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F +F4(!)A F0 .346(\), and)B F3(par)2.846 E(ameter)-.15 E F0 .346(is not a) +2.846 F F3(namer)2.846 E(ef)-.37 E F0 2.847(,i)C 2.847(ti)-2.847 G +(ntroduces)-2.847 E 2.907(al)108 458.4 S -2.15 -.25(ev e)-2.907 H 2.907 +(lo).25 G 2.906(fi)-2.907 G(ndirection.)-2.906 E F4(Bash)5.406 E F0 .406 +(uses the v)2.906 F .406(alue formed by e)-.25 F .406 +(xpanding the rest of)-.15 F F3(par)2.906 E(ameter)-.15 E F0 .406 +(as the ne)2.906 F(w)-.25 E F3(par)2.906 E(ame-)-.15 E(ter)108 470.4 Q +F0 2.578(;t)C .078(his is then e)-2.578 F .078(xpanded and that v)-.15 F +.079(alue is used in the rest of the e)-.25 F .079 +(xpansion, rather than the e)-.15 F .079(xpansion of the)-.15 F +(original)108 482.4 Q F3(par)2.543 E(ameter)-.15 E F0 5.043(.T)C .043 +(his is kno)-5.043 F .043(wn as)-.25 F F3(indir)2.543 E .043(ect e)-.37 +F(xpansion)-.2 E F0 5.043(.T)C .043(he v)-5.043 F .042 +(alue is subject to tilde e)-.25 F .042(xpansion, parameter)-.15 F -.15 +(ex)108 494.4 S .248(pansion, command substitution, and arithmetic e).15 +F 2.748(xpansion. If)-.15 F F3(par)2.749 E(ameter)-.15 E F0 .249 +(is a nameref, this e)2.749 F .249(xpands to the)-.15 F 1.51 +(name of the parameter referenced by)108 506.4 R F3(par)4.01 E(ameter) +-.15 E F0 1.51(instead of performing the complete indirect e)4.01 F +(xpansion.)-.15 E .387(The e)108 518.4 R .387 +(xceptions to this are the e)-.15 F .387(xpansions of ${)-.15 F F4(!)A +F3(pr)A(e\214x)-.37 E F4(*)A F0 2.887(}a)C .387(nd ${)-2.887 F F4(!)A F3 +(name)A F0([)A F3(@)A F0 .387(]} described belo)B 4.188 -.65(w. T)-.25 H +.388(he e).65 F(xclama-)-.15 E(tion point must immediately follo)108 +530.4 Q 2.5(wt)-.25 G(he left brace in order to introduce indirection.) +-2.5 E .334(In each of the cases belo)108 547.2 R -.65(w,)-.25 G F3(wor) +3.484 E(d)-.37 E F0 .334(is subject to tilde e)2.834 F .334 +(xpansion, parameter e)-.15 F .334(xpansion, command substitution,)-.15 +F(and arithmetic e)108 559.2 Q(xpansion.)-.15 E .066 +(When not performing substring e)108 576 R .067 +(xpansion, using the forms documented belo)-.15 F 2.567(w\()-.25 G +(e.g.,)-2.567 E F4(:-)2.567 E F0(\),)A F4(bash)2.567 E F0 .067 +(tests for a pa-)2.567 F(rameter that is unset or null.)108 588 Q(Omitt\ +ing the colon results in a test only for a parameter that is unset.)5 E +(${)108 604.8 Q F3(par)A(ameter)-.15 E F4<3aad>A F3(wor)A(d)-.37 E F0(}) +A F4 .723(Use Default V)144 616.8 R(alues)-.92 E F0 5.723(.I)C(f)-5.723 +E F3(par)4.473 E(ameter)-.15 E F0 .723(is unset or null, the e)3.953 F +.722(xpansion of)-.15 F F3(wor)3.562 E(d)-.37 E F0 .722(is substituted.) +3.992 F(Other)5.722 E(-)-.2 E(wise, the v)144 628.8 Q(alue of)-.25 E F3 +(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 640.8 Q F3 +(par)A(ameter)-.15 E F4(:=)A F3(wor)A(d)-.37 E F0(})A F4 .811 +(Assign Default V)144 652.8 R(alues)-.92 E F0 5.812(.I)C(f)-5.812 E F3 +(par)4.562 E(ameter)-.15 E F0 .812(is unset or null, the e)4.042 F .812 +(xpansion of)-.15 F F3(wor)3.652 E(d)-.37 E F0 .812(is assigned to)4.082 +F F3(pa-)4.562 E -.15(ra)144 664.8 S(meter).15 E F0 5.742(.T).73 G .742 +(he v)-5.742 F .742(alue of)-.25 F F3(par)4.492 E(ameter)-.15 E F0 .742 +(is then substituted.)3.972 F .741 +(Positional parameters and special parame-)5.742 F +(ters may not be assigned to in this w)144 676.8 Q(ay)-.1 E(.)-.65 E(${) +108 688.8 Q F3(par)A(ameter)-.15 E F4(:?)A F3(wor)A(d)-.37 E F0(})A F4 +.535(Display Err)144 700.8 R .535(or if Null or Unset)-.18 F F0 5.535 +(.I)C(f)-5.535 E F3(par)4.285 E(ameter)-.15 E F0 .535 +(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F3(wor)3.035 E +(d)-.37 E F0 .535(\(or a mes-)3.035 F .013(sage to that ef)144 712.8 R +.013(fect if)-.25 F F3(wor)2.853 E(d)-.37 E F0 .013(is not present\) is\ + written to the standard error and the shell, if it is not in-)3.283 F +(teracti)144 724.8 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 F3(par)2.5 E(ameter)-.15 E F0 +(is substituted.)2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E +(22)190.395 E 0 Cg EP +%%Page: 23 23 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(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 .002(Substring Expansion) +144 144 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F1(length)2.502 E +F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F1(par)2.502 E +(ameter)-.15 E F0 .002(starting at the)2.502 F .235 +(character speci\214ed by)144 156 R F1(of)2.735 E(fset)-.18 E F0 5.235 +(.I)C(f)-5.235 E F1(par)2.735 E(ameter)-.15 E F0(is)2.735 E F2(@)2.735 E +F0 2.735(,a)C 2.735(ni)-2.735 G(nde)-2.735 E -.15(xe)-.15 G 2.735(da).15 +G .235(rray subscripted by)-2.735 F F2(@)2.735 E F0(or)2.735 E F2(*) +2.735 E F0 2.735(,o)C 2.735(ra)-2.735 G 2.735(na)-2.735 G(s-)-2.735 E +(sociati)144 168 Q 1.578 -.15(ve a)-.25 H 1.278 +(rray name, the results dif).15 F 1.277(fer as described belo)-.25 F +5.077 -.65(w. I)-.25 H(f).65 E F1(length)3.777 E F0 1.277(is omitted, e) +3.777 F 1.277(xpands to the)-.15 F .042(substring of the v)144 180 R +.042(alue of)-.25 F F1(par)2.542 E(ameter)-.15 E F0 .043 +(starting at the character speci\214ed by)2.542 F F1(of)2.543 E(fset) +-.18 E F0 .043(and e)2.543 F .043(xtending to the)-.15 F .847 +(end of the v)144 192 R(alue.)-.25 E F1(length)5.846 E F0(and)3.346 E F1 +(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F .846 +(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .846(ARITHMETIC EV)3.346 F +(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 204 Q(w\).)-.25 E +(If)144 228 Q F1(of)3.028 E(fset)-.18 E F0 -.25(eva)3.029 G .529 +(luates to a number less than zero, the v).25 F .529 +(alue is used as an of)-.25 F .529(fset in characters from the)-.25 F +.046(end of the v)144 240 R .046(alue of)-.25 F F1(par)2.546 E(ameter) +-.15 E F0 5.046(.I)C(f)-5.046 E F1(length)2.546 E F0 -.25(eva)2.546 G +.046(luates to a number less than zero, it is interpreted as an).25 F +(of)144 252 Q .202(fset in characters from the end of the v)-.25 F .202 +(alue of)-.25 F F1(par)2.702 E(ameter)-.15 E F0 .203 +(rather than a number of characters, and)2.702 F .558(the e)144 264 R +.558(xpansion is the characters between)-.15 F F1(of)3.058 E(fset)-.18 E +F0 .558(and that result.)3.058 F .557(Note that a ne)5.557 F -.05(ga) +-.15 G(ti).05 E .857 -.15(ve o)-.25 H -.25(ff).15 G .557(set must be).25 +F(separated from the colon by at least one space to a)144 276 Q -.2(vo) +-.2 G(id being confused with the).2 E F2(:-)2.5 E F0 -.15(ex)2.5 G +(pansion.).15 E(If)144 300 Q F1(par)2.958 E(ameter)-.15 E F0(is)2.958 E +F2(@)2.958 E F0 2.958(,t)C .458(he result is)-2.958 F F1(length)2.959 E +F0 .459(positional parameters be)2.959 F .459(ginning at)-.15 F F1(of) +2.959 E(fset)-.18 E F0 5.459(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15 +(ve)-.25 G F1(of)3.109 E(fset)-.18 E F0 .6(is tak)144 312 R .6 +(en relati)-.1 F .9 -.15(ve t)-.25 H 3.1(oo).15 G .6 +(ne greater than the greatest positional parameter)-3.1 F 3.1(,s)-.4 G +3.1(oa)-3.1 G 3.1(no)-3.1 G -.25(ff)-3.1 G .6(set of \2551 e).25 F -.25 +(va)-.25 G(luates).25 E .639(to the last positional parameter)144 324 R +5.639(.I)-.55 G 3.139(ti)-5.639 G 3.139(sa)-3.139 G 3.139(ne)-3.139 G +.639(xpansion error if)-3.289 F F1(length)3.14 E F0 -.25(eva)3.14 G .64 +(luates to a number less than).25 F(zero.)144 336 Q(If)144 360 Q F1(par) +3.014 E(ameter)-.15 E F0 .514(is an inde)3.014 F -.15(xe)-.15 G 3.014 +(da).15 G .514(rray name subscripted by @ or *, the result is the)-3.014 +F F1(length)3.014 E F0 .513(members of)3.013 F 1.081(the array be)144 +372 R 1.081(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A +(fset)-.18 E F0 3.581(]}. A)B(ne)3.581 E -.05(ga)-.15 G(ti).05 E -.15 +(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.082(is tak)3.582 F 1.082 +(en relati)-.1 F 1.382 -.15(ve t)-.25 H 3.582(oo).15 G 1.082(ne greater) +-3.582 F 1.08(than the maximum inde)144 384 R 3.58(xo)-.15 G 3.58(ft) +-3.58 G 1.08(he speci\214ed array)-3.58 F 6.079(.I)-.65 G 3.579(ti) +-6.079 G 3.579(sa)-3.579 G 3.579(ne)-3.579 G 1.079(xpansion error if) +-3.729 F F1(length)3.579 E F0 -.25(eva)3.579 G 1.079(luates to a).25 F +(number less than zero.)144 396 Q(Substring e)144 420 Q +(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H +(rray produces unde\214ned results.).15 E .82(Substring inde)144 444 R +.821(xing is zero-based unless the positional parameters are used, in w\ +hich case the in-)-.15 F(de)144 456 Q .159(xing starts at 1 by def)-.15 +F 2.659(ault. If)-.1 F F1(of)2.659 E(fset)-.18 E F0 .159 +(is 0, and the positional parameters are used,)2.659 F F2($0)2.659 E F0 +.159(is pre\214x)2.659 F .158(ed to)-.15 F(the list.)144 468 Q(${)108 +484.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A F0(})A(${)108 496.8 Q F2(!)A +F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 .084(Names matching pr)144 508.8 +R(e\214x)-.18 E F0 5.084(.E)C .084(xpands to the names of v)-5.084 F +.084(ariables whose names be)-.25 F .085(gin with)-.15 F F1(pr)2.585 E +(e\214x)-.37 E F0 2.585(,s)C(epa-)-2.585 E .258 +(rated by the \214rst character of the)144 520.8 R F3(IFS)2.758 E F0 +.257(special v)2.507 F 2.757(ariable. When)-.25 F F1(@)2.757 E F0 .257 +(is used and the e)2.757 F .257(xpansion appears)-.15 F +(within double quotes, each v)144 532.8 Q(ariable name e)-.25 E +(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 549.6 Q F2(!)A F1(name) +A F0([)A F1(@)A F0(]})A(${)108 561.6 Q F2(!)A F1(name)A F0([)A F1(*)A F0 +(]})A F2 1.136(List of array k)144 573.6 R(eys)-.1 E F0 6.136(.I)C(f) +-6.136 E F1(name)3.636 E F0 1.136(is an array v)3.636 F 1.136 +(ariable, e)-.25 F 1.136(xpands to the list of array indices \(k)-.15 F +-.15(ey)-.1 G 1.137(s\) as-).15 F .397(signed in)144 585.6 R F1(name) +2.897 E F0 5.397(.I)C(f)-5.397 E F1(name)2.897 E F0 .397 +(is not an array)2.897 F 2.897(,e)-.65 G .397(xpands to 0 if)-3.047 F F1 +(name)2.897 E F0 .397(is set and null otherwise.)2.897 F(When)5.397 E F1 +(@)2.897 E F0(is used and the e)144 597.6 Q +(xpansion appears within double quotes, each k)-.15 E .3 -.15(ey ex)-.1 +H(pands to a separate w).15 E(ord.)-.1 E(${)108 614.4 Q F2(#)A F1(par)A +(ameter)-.15 E F0(})A F2 -.1(Pa)144 626.4 S .47(rameter length).1 F F0 +5.47(.T)C .471(he length in characters of the v)-5.47 F .471(alue of) +-.25 F F1(par)2.971 E(ameter)-.15 E F0 .471(is substituted.)2.971 F(If) +5.471 E F1(par)4.221 E(ame-)-.15 E(ter)144 638.4 Q F0(is)3.627 E F2(*) +2.897 E F0(or)2.897 E F2(@)2.897 E F0 2.897(,t)C .397(he v)-2.897 F .397 +(alue substituted is the number of positional parameters.)-.25 F(If) +5.396 E F1(par)4.146 E(ameter)-.15 E F0 .396(is an ar)3.626 F(-)-.2 E +.78(ray name subscripted by)144 650.4 R F2(*)3.28 E F0(or)3.28 E F2(@) +3.28 E F0 3.28(,t)C .78(he v)-3.28 F .781 +(alue substituted is the number of elements in the array)-.25 F 5.781 +(.I)-.65 G(f)-5.781 E F1(par)145.25 662.4 Q(ameter)-.15 E F0 .456 +(is an inde)3.686 F -.15(xe)-.15 G 2.956(da).15 G .456 +(rray name subscripted by a ne)-2.956 F -.05(ga)-.15 G(ti).05 E .756 +-.15(ve n)-.25 H(umber).15 E 2.955(,t)-.4 G .455 +(hat number is interpreted)-2.955 F .972(as relati)144 674.4 R 1.272 +-.15(ve t)-.25 H 3.472(oo).15 G .973(ne greater than the maximum inde) +-3.472 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 +3.473(,s)C 3.473(on)-3.473 G -2.25 -.15(eg a)-3.473 H(ti).15 E 1.273 +-.15(ve i)-.25 H .973(ndices count back).15 F(from the end of the array) +144 686.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 +G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 703.2 Q F1 +(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(GNU Bash 5.1)72 768 +Q(2020 October 29)141.235 E(23)190.395 E 0 Cg EP +%%Page: 24 24 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(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(Remo)144 96 Q 1.396 -.1(ve m)-.1 H 1.196 +(atching pr).1 F 1.196(e\214x patter)-.18 F(n)-.15 E F0 6.196(.T)C(he) +-6.196 E F1(wor)4.036 E(d)-.37 E F0 1.196(is e)4.466 F 1.196 +(xpanded to produce a pattern just as in path-)-.15 F .543(name e)144 +108 R .544(xpansion, and matched ag)-.15 F .544(ainst the e)-.05 F .544 +(xpanded v)-.15 F .544(alue of)-.25 F F1(par)4.294 E(ameter)-.15 E F0 +.544(using the rules described)3.774 F(under)144 120 Q F2 -.1(Pa)3.133 G +(tter).1 E 3.133(nM)-.15 G(atching)-3.133 E F0(belo)3.132 E 4.432 -.65 +(w. I)-.25 H 3.132(ft).65 G .632(he pattern matches the be)-3.132 F .632 +(ginning of the v)-.15 F .632(alue of)-.25 F F1(par)4.382 E(ameter)-.15 +E F0(,).73 E 1.151(then the result of the e)144 132 R 1.151 +(xpansion is the e)-.15 F 1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F1 +(par)4.902 E(ameter)-.15 E F0 1.152(with the shortest matching)4.382 F +.184(pattern \(the `)144 144 R(`)-.74 E F2(#)A F0 1.664 -.74('' c)D .184 +(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(##)A F0 +1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.183 E F1(par)3.933 E +(ameter)-.15 E F0(is)3.413 E F2(@)2.683 E F0(or)144 156 Q F2(*)3.018 E +F0 3.018(,t)C .518(he pattern remo)-3.018 F -.25(va)-.15 G 3.018(lo).25 +G .518 +(peration is applied to each positional parameter in turn, and the e) +-3.018 F(xpan-)-.15 E .304(sion is the resultant list.)144 168 R(If) +5.304 E F1(par)4.054 E(ameter)-.15 E F0 .303(is an array v)3.533 F .303 +(ariable subscripted with)-.25 F F2(@)2.803 E F0(or)2.803 E F2(*)2.803 E +F0 2.803(,t)C .303(he pattern re-)-2.803 F(mo)144 180 Q -.25(va)-.15 G +2.987(lo).25 G .487 +(peration is applied to each member of the array in turn, and the e) +-2.987 F .487(xpansion is the resultant)-.15 F(list.)144 192 Q(${)108 +208.8 Q F1(par)A(ameter)-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 +220.8 Q F1(par)A(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo) +144 232.8 Q .347 -.1(ve m)-.1 H .147(atching suf\214x patter).1 F(n)-.15 +E F0 5.147(.T)C(he)-5.147 E F1(wor)2.647 E(d)-.37 E F0 .147(is e)2.647 F +.146(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 +244.8 S .458(pansion, and matched ag).15 F .458(ainst the e)-.05 F .458 +(xpanded v)-.15 F .458(alue of)-.25 F F1(par)4.209 E(ameter)-.15 E F0 +.459(using the rules described under)3.689 F F2 -.1(Pa)144 256.8 S(tter) +.1 E 3.314(nM)-.15 G(atching)-3.314 E F0(belo)3.314 E 4.614 -.65(w. I) +-.25 H 3.314(ft).65 G .814 +(he pattern matches a trailing portion of the e)-3.314 F .814(xpanded v) +-.15 F .814(alue of)-.25 F F1(pa-)4.564 E -.15(ra)144 268.8 S(meter).15 +E F0 3.816(,t).73 G 1.316(hen the result of the e)-3.816 F 1.317 +(xpansion is the e)-.15 F 1.317(xpanded v)-.15 F 1.317(alue of)-.25 F F1 +(par)5.067 E(ameter)-.15 E F0 1.317(with the shortest)4.547 F 1.085 +(matching pattern \(the `)144 280.8 R(`)-.74 E F2(%)A F0 2.565 -.74 +('' c)D 1.084(ase\) or the longest matching pattern \(the `).74 F(`)-.74 +E F2(%%)A F0 2.564 -.74('' c)D 1.084(ase\) deleted.).74 F(If)6.084 E F1 +(par)145.25 292.8 Q(ameter)-.15 E F0(is)3.389 E F2(@)2.659 E F0(or)2.659 +E F2(*)2.659 E F0 2.659(,t)C .159(he pattern remo)-2.659 F -.25(va)-.15 +G 2.659(lo).25 G .16 +(peration is applied to each positional parameter in turn,)-2.659 F .51 +(and the e)144 304.8 R .51(xpansion is the resultant list.)-.15 F(If) +5.51 E F1(par)4.259 E(ameter)-.15 E F0 .509(is an array v)3.739 F .509 +(ariable subscripted with)-.25 F F2(@)3.009 E F0(or)3.009 E F2(*)3.009 E +F0(,)A .422(the pattern remo)144 316.8 R -.25(va)-.15 G 2.922(lo).25 G +.422(peration is applied to each member of the array in turn, and the e) +-2.922 F .423(xpansion is)-.15 F(the resultant list.)144 328.8 Q(${)108 +345.6 Q F1(par)A(ameter)-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0 +(})A F2 -.1(Pa)144 357.6 S(tter).1 E 3.607(ns)-.15 G(ubstitution)-3.607 +E F0 6.107(.T)C(he)-6.107 E F1(pattern)3.607 E F0 1.107(is e)3.607 F +1.106(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-) +-.15 E(sion,)144 369.6 Q F1 -.8(Pa)3.7 G -.15(ra).8 G(meter).15 E F0 1.2 +(is e)3.7 F 1.2(xpanded and the longest match of)-.15 F F1(pattern)3.7 E +F0(ag)3.7 E 1.2(ainst its v)-.05 F 1.2(alue is replaced with)-.25 F F1 +(string)144 381.6 Q F0 5.397(.T)C .397 +(he match is performed using the rules described under)-5.397 F F2 -.1 +(Pa)2.896 G(tter).1 E 2.896(nM)-.15 G(atching)-2.896 E F0(belo)2.896 E +4.196 -.65(w. I)-.25 H(f).65 E F1(pat-)2.896 E(tern)144 393.6 Q F0(be) +2.569 E .069(gins with)-.15 F F2(/)2.569 E F0 2.569(,a)C .069 +(ll matches of)-2.569 F F1(pattern)2.569 E F0 .069(are replaced with) +2.569 F F1(string)2.57 E F0 5.07(.N)C .07 +(ormally only the \214rst match is)-5.07 F 2.58(replaced. If)144 405.6 R +F1(pattern)2.58 E F0(be)2.58 E .08(gins with)-.15 F F2(#)2.58 E F0 2.58 +(,i)C 2.58(tm)-2.58 G .079(ust match at the be)-2.58 F .079 +(ginning of the e)-.15 F .079(xpanded v)-.15 F .079(alue of)-.25 F F1 +(par)2.579 E(am-)-.15 E(eter)144 417.6 Q F0 5.761(.I)C(f)-5.761 E F1 +(pattern)3.261 E F0(be)3.261 E .761(gins with)-.15 F F2(%)3.261 E F0 +3.261(,i)C 3.261(tm)-3.261 G .761(ust match at the end of the e)-3.261 F +.761(xpanded v)-.15 F .761(alue of)-.25 F F1(par)3.262 E(ameter)-.15 E +F0 5.762(.I)C(f)-5.762 E F1(string)144 429.6 Q F0 .958 +(is null, matches of)3.458 F F1(pattern)3.458 E F0 .958 +(are deleted and the)3.458 F F2(/)3.458 E F0(follo)3.458 E(wing)-.25 E +F1(pattern)3.457 E F0 .957(may be omitted.)3.457 F .957(If the)5.957 F +F2(nocasematch)144 441.6 Q F0 .492 +(shell option is enabled, the match is performed without re)2.992 F -.05 +(ga)-.15 G .492(rd to the case of alpha-).05 F .884(betic characters.) +144 453.6 R(If)5.884 E F1(par)4.634 E(ameter)-.15 E F0(is)4.114 E F2(@) +3.384 E F0(or)3.383 E F2(*)3.383 E F0 3.383(,t)C .883 +(he substitution operation is applied to each positional)-3.383 F 1.002 +(parameter in turn, and the e)144 465.6 R 1.002 +(xpansion is the resultant list.)-.15 F(If)6.002 E F1(par)4.752 E +(ameter)-.15 E F0 1.002(is an array v)4.232 F 1.002(ariable sub-)-.25 F +.159(scripted with)144 477.6 R F2(@)2.659 E F0(or)2.659 E F2(*)2.659 E +F0 2.659(,t)C .159(he substitution operation is applied to each member \ +of the array in turn, and)-2.659 F(the e)144 489.6 Q +(xpansion is the resultant list.)-.15 E(${)108 506.4 Q F1(par)A(ameter) +-.15 E F2(^)A F1(pattern)A F0(})A(${)108 518.4 Q F1(par)A(ameter)-.15 E +F2(^^)A F1(pattern)A F0(})A(${)108 530.4 Q F1(par)A(ameter)-.15 E F2(,)A +F1(pattern)A F0(})A(${)108 542.4 Q F1(par)A(ameter)-.15 E F2(,,)A F1 +(pattern)A F0(})A F2 .437(Case modi\214cation)144 554.4 R F0 5.437(.T)C +.437(his e)-5.437 F .438 +(xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par) +2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 566.4 Q +F0 .374(is e)2.874 F .374 +(xpanded to produce a pattern just as in pathname e)-.15 F 2.874 +(xpansion. Each)-.15 F .373(character in the e)2.873 F(x-)-.15 E .513 +(panded v)144 578.4 R .513(alue of)-.25 F F1(par)3.013 E(ameter)-.15 E +F0 .513(is tested ag)3.013 F(ainst)-.05 E F1(pattern)3.013 E F0 3.013 +(,a)C .514(nd, if it matches the pattern, its case is con-)-3.013 F -.15 +(ve)144 590.4 S 2.823(rted. The).15 F .323 +(pattern should not attempt to match more than one character)2.823 F +5.322(.T)-.55 G(he)-5.322 E F2(^)2.822 E F0 .322(operator con)2.822 F +-.15(ve)-.4 G(rts).15 E(lo)144 602.4 Q .18(wercase letters matching)-.25 +F F1(pattern)2.681 E F0 .181(to uppercase; the)2.681 F F2(,)2.681 E F0 +.181(operator con)2.681 F -.15(ve)-.4 G .181 +(rts matching uppercase letters).15 F .085(to lo)144 614.4 R 2.585 +(wercase. The)-.25 F F2(^^)2.585 E F0(and)2.585 E F2(,,)2.585 E F0 -.15 +(ex)2.585 G .085(pansions con).15 F -.15(ve)-.4 G .085 +(rt each matched character in the e).15 F .085(xpanded v)-.15 F .085 +(alue; the)-.25 F F2(^)2.585 E F0(and)144 626.4 Q F2(,)3.59 E F0 -.15 +(ex)3.59 G 1.09(pansions match and con).15 F -.15(ve)-.4 G 1.091 +(rt only the \214rst character in the e).15 F 1.091(xpanded v)-.15 F +3.591(alue. If)-.25 F F1(pattern)3.591 E F0(is)3.591 E 1.121 +(omitted, it is treated lik)144 638.4 R 3.621(ea)-.1 G F2(?)A F0 3.621 +(,w)C 1.121(hich matches e)-3.621 F -.15(ve)-.25 G 1.121(ry character) +.15 F 6.12(.I)-.55 G(f)-6.12 E F1(par)4.87 E(ameter)-.15 E F0(is)4.35 E +F2(@)3.62 E F0(or)3.62 E F2(*)3.62 E F0 3.62(,t)C 1.12(he case)-3.62 F +.339(modi\214cation operation is applied to each positional parameter i\ +n turn, and the e)144 650.4 R .34(xpansion is the re-)-.15 F .25 +(sultant list.)144 662.4 R(If)5.25 E F1(par)4 E(ameter)-.15 E F0 .25 +(is an array v)3.48 F .249(ariable subscripted with)-.25 F F2(@)2.749 E +F0(or)2.749 E F2(*)2.749 E F0 2.749(,t)C .249 +(he case modi\214cation oper)-2.749 F(-)-.2 E +(ation is applied to each member of the array in turn, and the e)144 +674.4 Q(xpansion is the resultant list.)-.15 E(${)108 691.2 Q F1(par)A +(ameter)-.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 703.2 S +.86(rameter transf).1 F(ormation)-.25 E F0 5.86(.T)C .86(he e)-5.86 F +.86(xpansion is either a transformation of the v)-.15 F .86(alue of)-.25 +F F1(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 715.2 R +F1(par)2.654 E(ameter)-.15 E F0 .153(itself, depending on the v)2.654 F +.153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.153(.E)C(ach)-5.153 +E F1(oper)2.653 E(ator)-.15 E F0 .153(is a sin-)2.653 F(gle letter:)144 +727.2 Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(24)190.395 E 0 +Cg EP +%%Page: 25 25 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(U)144 84 Q F0 .142(The e)180 84 R .142 +(xpansion is a string that is the v)-.15 F .142(alue of)-.25 F/F2 10 +/Times-Italic@0 SF(par)2.642 E(ameter)-.15 E F0 .142(with lo)2.642 F +.143(wercase alphabetic charac-)-.25 F(ters con)180 96 Q -.15(ve)-.4 G +(rted to uppercase.).15 E F1(u)144 108 Q F0 .43(The e)180 108 R .43 +(xpansion is a string that is the v)-.15 F .429(alue of)-.25 F F2(par) +2.929 E(ameter)-.15 E F0 .429(with the \214rst character con)2.929 F +-.15(ve)-.4 G(rted).15 E(to uppercase, if it is alphabetic.)180 120 Q F1 +(L)144 132 Q F0 .124(The e)180 132 R .124 +(xpansion is a string that is the v)-.15 F .124(alue of)-.25 F F2(par) +2.624 E(ameter)-.15 E F0 .125(with uppercase alphabetic charac-)2.625 F +(ters con)180 144 Q -.15(ve)-.4 G(rted to lo).15 E(wercase.)-.25 E F1(Q) +144 156 Q F0 1.065(The e)180 156 R 1.065 +(xpansion is a string that is the v)-.15 F 1.065(alue of)-.25 F F2(par) +3.565 E(ameter)-.15 E F0 1.064(quoted in a format that can be)3.565 F +(reused as input.)180 168 Q F1(E)144 180 Q F0 .44(The e)180 180 R .441 +(xpansion is a string that is the v)-.15 F .441(alue of)-.25 F F2(par) +2.941 E(ameter)-.15 E F0 .441(with backslash escape sequences)2.941 F +-.15(ex)180 192 S(panded as with the).15 E F1($'...)2.5 E(')-.55 E F0 +(quoting mechanism.)2.5 E F1(P)144 204 Q F0 1.073(The e)180 204 R 1.073 +(xpansion is a string that is the result of e)-.15 F 1.073 +(xpanding the v)-.15 F 1.073(alue of)-.25 F F2(par)3.573 E(ameter)-.15 E +F0 1.073(as if it)3.573 F(were a prompt string \(see)180 216 Q F1(PR)2.5 +E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F1(A)144 228 Q F0 1.137(The e) +180 228 R 1.138 +(xpansion is a string in the form of an assignment statement or)-.15 F +F1(declar)3.638 E(e)-.18 E F0(command)3.638 E(that, if e)180 240 Q -.25 +(va)-.25 G(luated, will recreate).25 E F2(par)2.5 E(ameter)-.15 E F0 +(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F1(K)144 252 Q F0 +1.34(Produces a possibly-quoted v)180 252 R 1.339(ersion of the v)-.15 F +1.339(alue of)-.25 F F2(par)3.839 E(ameter)-.15 E F0 3.839(,e)C 1.339 +(xcept that it prints the)-3.989 F -.25(va)180 264 S .257(lues of inde) +.25 F -.15(xe)-.15 G 2.757(da).15 G .257(nd associati)-2.757 F .557 -.15 +(ve a)-.25 H .257(rrays as a sequence of quoted k).15 F -.15(ey)-.1 G +(-v).15 E .257(alue pairs \(see)-.25 F F1(Ar)2.758 E(-)-.37 E(rays)180 +276 Q F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(a)144 288 Q F0(The e)180 +288 Q(xpansion is a string consisting of \215ag v)-.15 E +(alues representing)-.25 E F2(par)2.5 E(ameter)-.15 E F0 1.1 -.55('s a)D +(ttrib).55 E(utes.)-.2 E(If)144 304.8 Q F2(par)4.403 E(ameter)-.15 E F0 +(is)3.883 E F1(@)3.153 E F0(or)3.153 E F1(*)3.153 E F0 3.153(,t)C .653(\ +he operation is applied to each positional parameter in turn, and the e) +-3.153 F(x-)-.15 E .403(pansion is the resultant list.)144 316.8 R(If) +5.403 E F2(par)4.153 E(ameter)-.15 E F0 .403(is an array v)3.633 F .403 +(ariable subscripted with)-.25 F F1(@)2.903 E F0(or)2.903 E F1(*)2.903 E +F0 2.903(,t)C .403(he opera-)-2.903 F +(tion is applied to each member of the array in turn, and the e)144 +328.8 Q(xpansion is the resultant list.)-.15 E .708(The result of the e) +144 352.8 R .708(xpansion is subject to w)-.15 F .708 +(ord splitting and pathname e)-.1 F .708(xpansion as described be-)-.15 +F(lo)144 364.8 Q -.65(w.)-.25 G F1(Command Substitution)87 381.6 Q F2 +1.697(Command substitution)108 393.6 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 405.6 Q F1($\()144 422.4 Q F2 +(command)A F1(\))1.666 E F0(or)108 434.4 Q F1<92>144 446.4 Q F2(command) +A F1<92>A(Bash)108 463.2 Q F0 .089(performs the e)2.589 F .089 +(xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F2(command)2.589 E F0 +.088(in a subshell en)2.589 F .088(vironment and replacing the command) +-.4 F .41(substitution with the standard output of the command, with an) +108 475.2 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.) +-.25 F .41(Embedded ne)5.41 F(w-)-.25 E .192(lines are not deleted, b) +108 487.2 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F +-.15(ve)-.15 G 2.692(dd).15 G .192(uring w)-2.692 F .192(ord splitting.) +-.1 F .192(The command substitution)5.192 F F1($\(cat)2.691 E F2(\214le) +2.691 E F1(\))A F0(can be replaced by the equi)108 499.2 Q -.25(va)-.25 +G(lent b).25 E(ut f)-.2 E(aster)-.1 E F1($\(<)2.5 E F2(\214le)2.5 E F1 +(\))A F0(.)A 1.724(When the old-style backquote form of substitution is\ + used, backslash retains its literal meaning e)108 516 R(xcept)-.15 E +.315(when follo)108 528 R .315(wed by)-.25 F F1($)2.815 E F0(,)A F1<92> +2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E F0 5.315(.T)C .314(he \ +\214rst backquote not preceded by a backslash terminates the command su\ +b-)-5.315 F 3.886(stitution. When)108 540 R 1.386(using the $\()3.886 F +F2(command).833 E F0 3.886(\)f)1.666 G 1.387 +(orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G +3.887(pt)-3.887 G 1.387(he com-)-3.887 F +(mand; none are treated specially)108 552 Q(.)-.65 E .894 +(Command substitutions may be nested.)108 568.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 580.8 Q .422 +(If the substitution appears within double quotes, w)108 597.6 R .422 +(ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15 +F(on the results.)108 609.6 Q F1(Arithmetic Expansion)87 626.4 Q F0 +1.035(Arithmetic e)108 638.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 650.4 Q(xpansion is:)-.15 E F1($\(\() +144 667.2 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 684 Q +F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 .165 +(is treated as if it were within double quotes, b)2.905 F .166 +(ut a double quote inside the parentheses is not)-.2 F .231 +(treated specially)108 696 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231 +(ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v) +-.18 F .23(ariable e)-.25 F .23(xpansion, command substi-)-.15 F .048 +(tution, and quote remo)108 708 R -.25(va)-.15 G 2.548(l. The).25 F .048 +(result is treated as the arithmetic e)2.548 F .048(xpression to be e) +-.15 F -.25(va)-.25 G 2.549(luated. Arithmetic).25 F -.15(ex)2.549 G(-) +.15 E(pansions may be nested.)108 720 Q(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(25)190.395 E 0 Cg EP +%%Page: 26 26 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.379(The e)108 84 +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/F1 9/Times-Bold@0 SF 1.378(ARITHMETIC EV)3.878 F +(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F2 9/Times-Roman@0 SF(.)A F0 +(If)5.878 E/F3 10/Times-Italic@0 SF -.2(ex)108 96 S(pr).2 E(ession)-.37 +E F0(is in)2.74 E -.25(va)-.4 G(lid,).25 E/F4 10/Times-Bold@0 SF(bash) +2.5 E F0(prints a message indicating f)2.5 E +(ailure and no substitution occurs.)-.1 E F4(Pr)87 112.8 Q +(ocess Substitution)-.18 E F3(Pr)108 124.8 Q .405(ocess substitution) +-.45 F F0(allo)2.905 E .405(ws a process')-.25 F 2.905(si)-.55 G .405 +(nput or output to be referred to using a \214lename.)-2.905 F .405 +(It tak)5.405 F .405(es the form)-.1 F(of)108 136.8 Q F4(<\()3.251 E F3 +(list)A F4(\)).833 E F0(or)3.251 E F4(>\()3.251 E F3(list)A F4(\)).833 E +F0 5.751(.T)C .751(he process)-5.751 F F3(list)3.251 E F0 .751 +(is run asynchronously)3.251 F 3.251(,a)-.65 G .751 +(nd its input or output appears as a \214lename.)-3.251 F .147 +(This \214lename is passed as an ar)108 148.8 R .148 +(gument to the current command as the result of the e)-.18 F 2.648 +(xpansion. If)-.15 F(the)2.648 E F4(>\()2.648 E F3(list)A F4(\)).833 E +F0 .56(form is used, writing to the \214le will pro)108 160.8 R .56 +(vide input for)-.15 F F3(list)3.059 E F0 5.559(.I)C 3.059(ft)-5.559 G +(he)-3.059 E F4(<\()3.059 E F3(list)A F4(\)).833 E F0 .559 +(form is used, the \214le passed as an)3.059 F(ar)108 172.8 Q .308 +(gument should be read to obtain the output of)-.18 F F3(list)2.808 E F0 +5.308(.P)C .309(rocess substitution is supported on systems that sup-) +-5.308 F(port named pipes \()108 184.8 Q F3(FIFOs)A F0 2.5(\)o)C 2.5(rt) +-2.5 G(he)-2.5 E F4(/de)2.5 E(v/fd)-.15 E F0 +(method of naming open \214les.)2.5 E .897(When a)108 201.6 R -.25(va) +-.2 G .896(ilable, process substitution is performed simultaneously wit\ +h parameter and v).25 F .896(ariable e)-.25 F(xpansion,)-.15 E +(command substitution, and arithmetic e)108 213.6 Q(xpansion.)-.15 E F4 +-.75(Wo)87 230.4 S(rd Splitting).75 E F0 1.142 +(The shell scans the results of parameter e)108 242.4 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 254.4 Q +F3(wor)2.84 E 2.5(ds)-.37 G(plitting)-2.5 E F0(.).22 E .063 +(The shell treats each character of)108 271.2 R F1(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 .207(using these characters as \214eld terminators.) +108 283.2 R(If)5.207 E F1(IFS)2.707 E F0 .207(is unset, or its v)2.457 F +.207(alue is e)-.25 F(xactly)-.15 E F4()2.708 E F0 +(,)A .837(the def)108 295.2 R .837(ault, then sequences of)-.1 F F4 +()3.337 E F0(,)A F4()3.337 E F0 3.337(,a)C(nd)-3.337 E F4 +()3.337 E F0 .836(at the be)3.336 F .836 +(ginning and end of the results of)-.15 F .345(the pre)108 307.2 R .345 +(vious e)-.25 F .345(xpansions are ignored, and an)-.15 F 2.845(ys)-.15 +G .345(equence of)-2.845 F F1(IFS)2.845 E F0 .345 +(characters not at the be)2.595 F .345(ginning or end serv)-.15 F(es) +-.15 E 1.237(to delimit w)108 319.2 R 3.737(ords. If)-.1 F F1(IFS)3.737 +E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.236 +(ault, then sequences of the whitespace characters)-.1 F F4(space)108 +331.2 Q F0(,)A F4(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F4(newline)2.506 +E F0 .006(are ignored at the be)2.506 F .006(ginning and end of the w) +-.15 F .007(ord, as long as the whitespace charac-)-.1 F .921 +(ter is in the v)108 343.2 R .92(alue of)-.25 F F1(IFS)3.42 E F0(\(an) +3.17 E F1(IFS)3.42 E F0 .92(whitespace character\).)3.17 F(An)5.92 E +3.42(yc)-.15 G .92(haracter in)-3.42 F F1(IFS)3.42 E F0 .92(that is not) +3.17 F F1(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 355.2 +R 2.928(ya)-.15 G(djacent)-2.928 E F1(IFS)2.928 E F0 .428 +(whitespace characters, delimits a \214eld.)2.678 F 2.928(As)5.428 G +.428(equence of)-2.928 F F1(IFS)2.928 E F0 .429(whitespace charac-)2.679 +F(ters is also treated as a delimiter)108 367.2 Q 5(.I)-.55 G 2.5(ft)-5 +G(he v)-2.5 E(alue of)-.25 E F1(IFS)2.5 E F0(is null, no w)2.25 E +(ord splitting occurs.)-.1 E .783(Explicit null ar)108 384 R .783 +(guments \()-.18 F F4 .833("").833 G F0(or)2.449 E F4 .833<0808>4.115 G +F0 3.282(\)a)C .782 +(re retained and passed to commands as empty strings.)-3.282 F .782 +(Unquoted im-)5.782 F .178(plicit null ar)108 396 R .179 +(guments, resulting from the e)-.18 F .179 +(xpansion of parameters that ha)-.15 F .479 -.15(ve n)-.2 H 2.679(ov).15 +G .179(alues, are remo)-2.929 F -.15(ve)-.15 G 2.679(d. If).15 F 2.679 +(ap)2.679 G(a-)-2.679 E .319(rameter with no v)108 408 R .319(alue is e) +-.25 F .319(xpanded within double quotes, a null ar)-.15 F .319 +(gument results and is retained and passed)-.18 F +(to a command as an empty string.)108 420 Q(When a quoted null ar)5 E +.001(gument appears as part of a w)-.18 F .001(ord whose e)-.1 F +(xpansion)-.15 E .984(is non-null, the null ar)108 432 R .984 +(gument is remo)-.18 F -.15(ve)-.15 G 3.483(d. That).15 F .983 +(is, the w)3.483 F(ord)-.1 E/F5 10/Courier@0 SF -5.1673.483 +F F0(becomes)3.483 E F53.483 E F0 .983(after w)3.483 F .983 +(ord splitting and)-.1 F(null ar)108 444 Q(gument remo)-.18 E -.25(va) +-.15 G(l.).25 E(Note that if no e)108 460.8 Q +(xpansion occurs, no splitting is performed.)-.15 E F4 -.1(Pa)87 477.6 S +(thname Expansion).1 E F0 .37(After w)108 489.6 R .37 +(ord splitting, unless the)-.1 F F42.87 E F0 .37 +(option has been set,)2.87 F F4(bash)2.87 E F0 .371(scans each w)2.871 F +.371(ord for the characters)-.1 F F4(*)2.871 E F0(,)A F4(?)2.871 E F0 +2.871(,a)C(nd)-2.871 E F4([)2.871 E F0(.)A .634 +(If one of these characters appears, and is not quoted, then the w)108 +501.6 R .634(ord is re)-.1 F -.05(ga)-.15 G .633(rded as a).05 F F3 +(pattern)4.383 E F0 3.133(,a).24 G .633(nd replaced)-3.133 F 1.34(with \ +an alphabetically sorted list of \214lenames matching the pattern \(see) +108 513.6 R F1 -.09(Pa)3.84 G(tter).09 E 3.59(nM)-.135 G(atching)-3.59 E +F0(belo)3.59 E 3.84(w\). If)-.25 F(no)3.84 E .534 +(matching \214lenames are found, and the shell option)108 525.6 R F4 +(nullglob)3.034 E F0 .534(is not enabled, the w)3.034 F .534 +(ord is left unchanged.)-.1 F(If)5.534 E(the)108 537.6 Q F4(nullglob) +3.284 E F0 .785(option is set, and no matches are found, the w)3.284 F +.785(ord is remo)-.1 F -.15(ve)-.15 G 3.285(d. If).15 F(the)3.285 E F4 +(failglob)3.285 E F0 .785(shell option is)3.285 F .754(set, and no matc\ +hes are found, an error message is printed and the command is not e)108 +549.6 R -.15(xe)-.15 G 3.254(cuted. If).15 F .754(the shell)3.254 F +(option)108 561.6 Q F4(nocaseglob)3.263 E F0 .763 +(is enabled, the match is performed without re)3.263 F -.05(ga)-.15 G +.764(rd to the case of alphabetic characters.).05 F .039 +(When a pattern is used for pathname e)108 573.6 R .039 +(xpansion, the character)-.15 F F4 -.63(``)2.539 G -.55(.').63 G(')-.08 +E F0 .039(at the start of a name or immediately fol-)5.039 F(lo)108 +585.6 Q .81(wing a slash must be matched e)-.25 F(xplicitly)-.15 E 3.31 +(,u)-.65 G .81(nless the shell option)-3.31 F F4(dotglob)3.31 E F0 .81 +(is set.)3.31 F .81(The \214lenames)5.81 F F4 -.63(``)3.31 G -.55(.').63 +G(')-.08 E F0(and)5.81 E F4 -.63(``)108 597.6 S(..).63 E -.63('')-.55 G +F0 1.182(must al)6.812 F -.1(wa)-.1 G 1.182(ys be matched e).1 F +(xplicitly)-.15 E 3.682(,e)-.65 G -.15(ve)-3.932 G 3.682(ni).15 G(f) +-3.682 E F4(dotglob)3.682 E F0 1.182(is set.)3.682 F 1.181 +(In other cases, the)6.182 F F4 -.63(``)3.681 G -.55(.').63 G(')-.08 E +F0 1.181(character is not)6.181 F .613(treated specially)108 609.6 R +5.613(.W)-.65 G .613 +(hen matching a pathname, the slash character must al)-5.613 F -.1(wa) +-.1 G .614(ys be matched e).1 F .614(xplicitly by a)-.15 F .655 +(slash in the pattern, b)108 621.6 R .655(ut in other matching conte)-.2 +F .655(xts it can be matched by a special pattern character as de-)-.15 +F .719(scribed belo)108 633.6 R 3.219(wu)-.25 G(nder)-3.219 E F1 -.09 +(Pa)3.219 G(tter).09 E 2.969(nM)-.135 G(atching)-2.969 E F2(.)A F0 .719 +(See the description of)5.219 F F4(shopt)3.219 E F0(belo)3.219 E 3.22 +(wu)-.25 G(nder)-3.22 E F1 .72(SHELL B)3.22 F(UIL)-.09 E .72(TIN COM-) +-.828 F(MANDS)108 645.6 Q F0(for a description of the)2.25 E F4 +(nocaseglob)2.5 E F0(,)A F4(nullglob)2.5 E F0(,)A F4(failglob)2.5 E F0 +2.5(,a)C(nd)-2.5 E F4(dotglob)2.5 E F0(shell options.)2.5 E(The)108 +662.4 Q F1(GLOBIGNORE)2.562 E F0 .062(shell v)2.312 F .061 +(ariable may be used to restrict the set of \214le names matching a)-.25 +F F3(pattern)3.811 E F0 5.061(.I).24 G(f)-5.061 E F1(GLO-)2.561 E +(BIGNORE)108 674.4 Q F0 1.096(is set, each matching \214le name that al\ +so matches one of the patterns in)3.346 F F1(GLOBIGNORE)3.597 E F0 1.097 +(is re-)3.347 F(mo)108 686.4 Q -.15(ve)-.15 G 2.851(df).15 G .351 +(rom the list of matches.)-2.851 F .351(If the)5.351 F F4(nocaseglob) +2.851 E F0 .351(option is set, the matching ag)2.851 F .351 +(ainst the patterns in)-.05 F F1(GLO-)2.85 E(BIGNORE)108 698.4 Q F0 1.48 +(is performed without re)3.73 F -.05(ga)-.15 G 1.48(rd to case.).05 F +1.48(The \214lenames)6.48 F F4 -.63(``)3.98 G -.55(.').63 G(')-.08 E F0 +(and)6.48 E F4 -.63(``)3.98 G(..).63 E -.63('')-.55 G F0 1.481(are al) +7.11 F -.1(wa)-.1 G 1.481(ys ignored when).1 F F1(GLOBIGNORE)108 710.4 Q +F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15(ve)-.25 G +1.627 -.4(r, s).15 H(etting).4 E F1(GLOBIGNORE)3.327 E F0 .827 +(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of)-.25 F +.682(enabling the)108 722.4 R F4(dotglob)3.182 E F0 .682 +(shell option, so all other \214lenames be)3.182 F .682(ginning with a) +-.15 F F4 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.) +5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(GNU Bash 5.1)72 768 +Q(2020 October 29)141.235 E(26)190.395 E 0 Cg EP +%%Page: 27 27 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(beha)108 84 Q +1.185(vior of ignoring \214lenames be)-.2 F 1.185(ginning with a)-.15 F +/F1 10/Times-Bold@0 SF -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684 +(,m)C(ak)-3.684 E(e)-.1 E F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.184 +(one of the patterns in)6.184 F/F2 9/Times-Bold@0 SF(GLOBIGNORE)3.684 E +/F3 9/Times-Roman@0 SF(.)A F0(The)108 96 Q F1(dotglob)3.131 E F0 .631 +(option is disabled when)3.131 F F2(GLOBIGNORE)3.132 E F0 .632 +(is unset.)2.882 F .632(The pattern matching honors the setting of)5.632 +F(the)108 108 Q F1(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108 +124.8 S(tter).1 E 2.5(nM)-.15 G(atching)-2.5 E F0(An)108 141.6 Q 3.138 +(yc)-.15 G .638(haracter that appears in a pattern, other than the spec\ +ial pattern characters described belo)-3.138 F 1.938 -.65(w, m)-.25 H +(atches).65 E 2.721(itself. The)108 153.6 R .221 +(NUL character may not occur in a pattern.)2.721 F 2.721(Ab)5.221 G .221 +(ackslash escapes the follo)-2.721 F .222(wing character; the es-)-.25 F +.418(caping backslash is discarded when matching.)108 165.6 R .418 +(The special pattern characters must be quoted if the)5.418 F 2.918(ya) +-.15 G .418(re to)-2.918 F(be matched literally)108 177.6 Q(.)-.65 E +(The special pattern characters ha)108 194.4 Q .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1(*)144 211.2 Q F0 .376 +(Matches an)180 211.2 R 2.876(ys)-.15 G .376 +(tring, including the null string.)-2.876 F .376(When the)5.376 F F1 +(globstar)2.876 E F0 .377(shell option is enabled,)2.876 F(and)180 223.2 +Q F1(*)3.275 E F0 .775(is used in a pathname e)3.275 F .775 +(xpansion conte)-.15 F .775(xt, tw)-.15 F 3.275(oa)-.1 G(djacent)-3.275 +E F1(*)3.275 E F0 3.275(su)C .775(sed as a single pattern)-3.275 F 1.058 +(will match all \214les and zero or more directories and subdirectories\ +.)180 235.2 R 1.058(If follo)6.058 F 1.058(wed by a)-.25 F F1(/)3.558 E +F0(,)A(tw)180 247.2 Q 2.5(oa)-.1 G(djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C +(ill match only directories and subdirectories.)-2.5 E F1(?)144 259.2 Q +F0(Matches an)180 259.2 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E +F1([...])144 271.2 Q F0 .579(Matches an)180 271.2 R 3.079(yo)-.15 G .579 +(ne of the enclosed characters.)-3.079 F 3.079(Ap)5.579 G .578 +(air of characters separated by a h)-3.079 F(yphen)-.05 E .684 +(denotes a)180 283.2 R/F4 10/Times-Italic@0 SF -.15(ra)3.184 G(ng).15 E +3.184(ee)-.1 G(xpr)-3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c) +-3.184 H .684(haracter that f).15 F .684(alls between those tw)-.1 F +3.185(oc)-.1 G .685(haracters, inclu-)-3.185 F(si)180 295.2 Q -.15(ve) +-.25 G 3.713(,u).15 G 1.213(sing the current locale')-3.713 F 3.712(sc) +-.55 G 1.212(ollating sequence and character set, is matched.)-3.712 F +1.212(If the)6.212 F 1.123(\214rst character follo)180 307.2 R 1.123 +(wing the)-.25 F F1([)3.623 E F0 1.123(is a)3.623 F F1(!)3.623 E F0 +1.124(or a)6.123 F F1(^)3.624 E F0 1.124(then an)3.624 F 3.624(yc)-.15 G +1.124(haracter not enclosed is matched.)-3.624 F .895 +(The sorting order of characters in range e)180 319.2 R .894 +(xpressions is determined by the current locale)-.15 F .375(and the v) +180 331.2 R .375(alues of the)-.25 F F2(LC_COLLA)2.875 E(TE)-.855 E F0 +(or)2.625 E F2(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 +(ariables, if set.)-.25 F 1.976 -.8(To o)5.376 H .376(btain the tra-).8 +F .068(ditional interpretation of range e)180 343.2 R .068 +(xpressions, where)-.15 F F1([a\255d])2.568 E F0 .067(is equi)2.567 F +-.25(va)-.25 G .067(lent to).25 F F1([abcd])2.567 E F0 2.567(,s)C .067 +(et v)-2.567 F(alue)-.25 E .156(of the)180 355.2 R F1(LC_ALL)2.656 E F0 +.156(shell v)2.656 F .156(ariable to)-.25 F F1(C)2.657 E F0 2.657(,o)C +2.657(re)-2.657 G .157(nable the)-2.657 F F1(globasciiranges)2.657 E F0 +.157(shell option.)2.657 F(A)5.157 E F12.657 E F0(may)2.657 E .193(\ +be matched by including it as the \214rst or last character in the set.) +180 367.2 R(A)5.193 E F1(])2.693 E F0 .193(may be matched by)2.693 F +(including it as the \214rst character in the set.)180 379.2 Q -.4(Wi) +180 397.2 S(thin).4 E F1([)3.07 E F0(and)3.07 E F1(])3.07 E F0(,)A F4 +-.15(ch)3.07 G(ar).15 E .571(acter classes)-.15 F F0 .571 +(can be speci\214ed using the syntax)3.071 F F1([:)3.071 E F4(class)A F1 +(:])A F0 3.071(,w)C(here)-3.071 E F4(class)3.071 E F0 +(is one of the follo)180 409.2 Q +(wing classes de\214ned in the POSIX standard:)-.25 E F1 5.889 +(alnum alpha ascii blank cntrl digit graph lo)180 421.2 R 5.889 +(wer print punct space up-)-.1 F 5(per w)180 433.2 R 5(ord xdigit)-.1 F +F0 4.289(Ac)180 445.2 S 1.789(haracter class matches an)-4.289 F 4.289 +(yc)-.15 G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E +F1 -.1(wo)4.29 G(rd).1 E F0(character)4.29 E +(class matches letters, digits, and the character _.)180 457.2 Q -.4(Wi) +180 475.2 S(thin).4 E F1([)4.537 E F0(and)4.537 E F1(])4.537 E F0 4.537 +(,a)C(n)-4.537 E F4 2.037(equivalence class)4.537 F F0 2.036 +(can be speci\214ed using the syntax)4.536 F F1([=)4.536 E F4(c)A F1(=]) +A F0 4.536(,w)C(hich)-4.536 E .125(matches all characters with the same\ + collation weight \(as de\214ned by the current locale\) as)180 487.2 R +(the character)180 499.2 Q F4(c)2.5 E F0(.)A -.4(Wi)180 517.2 S(thin).4 +E F1([)2.5 E F0(and)2.5 E F1(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F1([.) +2.5 E F4(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F4 +(symbol)2.5 E F0(.)A .705(If the)108 534 R F1(extglob)3.205 E F0 .705 +(shell option is enabled using the)3.205 F F1(shopt)3.205 E F0 -.2(bu) +3.205 G .704(iltin, se).2 F -.15(ve)-.25 G .704(ral e).15 F .704 +(xtended pattern matching operators)-.15 F .255(are recognized.)108 546 +R .255(In the follo)5.255 F .255(wing description, a)-.25 F F4 +(pattern-list)2.755 E F0 .255 +(is a list of one or more patterns separated by a)2.755 F F1(|)2.756 E +F0(.)A(Composite patterns may be formed using one or more of the follo) +108 558 Q(wing sub-patterns:)-.25 E F1(?\()144 582 Q F4(pattern-list) +.833 E F1(\)).833 E F0(Matches zero or one occurrence of the gi)180 594 +Q -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(*\()144 606 Q F4 +(pattern-list).833 E F1(\)).833 E F0 +(Matches zero or more occurrences of the gi)180 618 Q -.15(ve)-.25 G 2.5 +(np).15 G(atterns)-2.5 E F1(+\()144 630 Q F4(pattern-list).833 E F1(\)) +.833 E F0(Matches one or more occurrences of the gi)180 642 Q -.15(ve) +-.25 G 2.5(np).15 G(atterns)-2.5 E F1(@\()144 654 Q F4(pattern-list).833 +E F1(\)).833 E F0(Matches one of the gi)180 666 Q -.15(ve)-.25 G 2.5(np) +.15 G(atterns)-2.5 E F1(!\()144 678 Q F4(pattern-list).833 E F1(\)).833 +E F0(Matches an)180 690 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 .969(Complicated e)108 706.8 +R .969(xtended pattern matching ag)-.15 F .969 +(ainst long strings is slo)-.05 F 2.268 -.65(w, e)-.25 H .968 +(specially when the patterns contain).65 F .09 +(alternations and the strings contain multiple matches.)108 718.8 R .091 +(Using separate matches ag)5.091 F .091(ainst shorter strings, or us-) +-.05 F(ing arrays of strings instead of a single long string, may be f) +108 730.8 Q(aster)-.1 E(.)-.55 E(GNU Bash 5.1)72 768 Q(2020 October 29) +141.235 E(27)190.395 E 0 Cg EP +%%Page: 28 28 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Quote Remo)87 84 Q -.1(va)-.1 G(l).1 E F0 1.113 +(After the preceding e)108 96 R 1.113 +(xpansions, all unquoted occurrences of the characters)-.15 F F1(\\) +3.613 E F0(,)A F1<08>3.612 E F0 3.612(,a)C(nd)-3.612 E F1(")4.445 E F0 +1.112(that did not result)4.445 F(from one of the abo)108 108 Q .3 -.15 +(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F2 10.95 +/Times-Bold@0 SF(REDIRECTION)72 124.8 Q F0 .545(Before a command is e) +108 136.8 R -.15(xe)-.15 G .545(cuted, its input and output may be).15 F +/F3 10/Times-Italic@0 SF -.37(re)3.045 G(dir).37 E(ected)-.37 E F0 .545 +(using a special notation interpreted)3.815 F .405(by the shell.)108 +148.8 R .405(Redirection allo)5.405 F .405(ws commands' \214le handles \ +to be duplicated, opened, closed, made to refer to)-.25 F(dif)108 160.8 +Q 1.019(ferent \214les, and can change the \214les the command reads fr\ +om and writes to.)-.25 F 1.02(Redirection may also be)6.02 F .215 +(used to modify \214le handles in the current shell e)108 172.8 R -.15 +(xe)-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E +.215(wing redirection operators)-.25 F .862(may precede or appear an)108 +184.8 R .862(ywhere within a)-.15 F F3 .862(simple command)3.702 F F0 +.862(or may follo)4.132 F 3.362(wa)-.25 G F3(command).2 E F0 5.862(.R) +.77 G .862(edirections are)-5.862 F(processed in the order the)108 196.8 +Q 2.5(ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771 +(Each redirection that may be preceded by a \214le descriptor number ma\ +y instead be preceded by a w)108 213.6 R .771(ord of)-.1 F .292 +(the form {)108 225.6 R F3(varname)A F0 2.793(}. In)B .293 +(this case, for each redirection operator e)2.793 F .293 +(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 237.6 S +.679(le descriptor greater than or equal to 10 and assign it to)-3.18 F +F3(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679 +(&- or <&- is preceded by {)-3.179 F F3(var)A(-)-.2 E(name)108 249.6 Q +F0 .599(}, the v)B .599(alue of)-.25 F F3(varname)3.099 E F0 .599 +(de\214nes the \214le descriptor to close.)3.099 F .6(If {)5.6 F F3 +(varname)A F0 3.1(}i)C 3.1(ss)-3.1 G .6(upplied, the redirection)-3.1 F +1.238(persists be)108 261.6 R 1.238(yond the scope of the command, allo) +-.15 F 1.238(wing the shell programmer to manage the \214le descriptor) +-.25 F(himself.)108 273.6 Q .283(In the follo)108 290.4 R .284(wing des\ +criptions, if the \214le descriptor number is omitted, and the \214rst \ +character of the redirect-)-.25 F .513(ion operator is)108 302.4 R F1(<) +3.012 E F0 3.012(,t)C .512 +(he redirection refers to the standard input \(\214le descriptor 0\).) +-3.012 F .512(If the \214rst character of the)5.512 F +(redirection operator is)108 314.4 Q F1(>)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 331.2 R .824(ord follo)-.1 F .824 +(wing the redirection operator in the follo)-.25 F .825 +(wing descriptions, unless otherwise noted, is sub-)-.25 F .463 +(jected to brace e)108 343.2 R .463(xpansion, tilde e)-.15 F .462 +(xpansion, parameter and v)-.15 F .462(ariable e)-.25 F .462 +(xpansion, command substitution, arith-)-.15 F .866(metic e)108 355.2 R +.866(xpansion, quote remo)-.15 F -.25(va)-.15 G .866(l, pathname e).25 F +.867(xpansion, and w)-.15 F .867(ord splitting.)-.1 F .867(If it e)5.867 +F .867(xpands to more than one)-.15 F -.1(wo)108 367.2 S(rd,).1 E F1 +(bash)2.5 E F0(reports an error)2.5 E(.)-.55 E +(Note that the order of redirections is signi\214cant.)108 384 Q -.15 +(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 400.8 Q F1(>)2.5 +E F0(dirlist 2)2.5 E F1(>&)A F0(1)A +(directs both standard output and standard error to the \214le)108 417.6 +Q F3(dirlist)2.85 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 +434.4 Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .505 +(directs only the standard output to \214le)108 451.2 R F3(dirlist)3.355 +E F0 3.005(,b).68 G .505(ecause the standard error w)-3.005 F .505 +(as duplicated from the standard)-.1 F +(output before the standard output w)108 463.2 Q(as redirected to)-.1 E +F3(dirlist)2.85 E F0(.).68 E F1(Bash)108 480 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 3.478(table. If)108 492 R .978 +(the operating system on which)3.478 F F1(bash)3.478 E F0 .978 +(is running pro)3.478 F .977 +(vides these special \214les, bash will use them;)-.15 F +(otherwise it will emulate them internally with the beha)108 504 Q +(vior described belo)-.2 E -.65(w.)-.25 G F1(/de)144 520.8 Q(v/fd/)-.15 +E F3(fd)A F0(If)180 532.8 Q F3(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 F3(fd)2.5 E F0 +(is duplicated.)2.5 E F1(/de)144 544.8 Q(v/stdin)-.15 E F0 +(File descriptor 0 is duplicated.)180 556.8 Q F1(/de)144 568.8 Q +(v/stdout)-.15 E F0(File descriptor 1 is duplicated.)180 580.8 Q F1(/de) +144 592.8 Q(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180 +604.8 Q F1(/de)144 616.8 Q(v/tcp/)-.15 E F3(host)A F1(/)A F3(port)A F0 +(If)180 628.8 Q F3(host)2.996 E F0 .496(is a v)2.996 F .496 +(alid hostname or Internet address, and)-.25 F F3(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 640.8 Q F1(bash)2.5 E F0 +(attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E F1(/de)144 +652.8 Q(v/udp/)-.15 E F3(host)A F1(/)A F3(port)A F0(If)180 664.8 Q F3 +(host)2.997 E F0 .497(is a v)2.997 F .497 +(alid hostname or Internet address, and)-.25 F F3(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 676.8 Q F1(bash)2.5 E F0 +(attempts to open the corresponding UDP sock)2.5 E(et.)-.1 E 2.5(Af)108 +693.6 S(ailure to open or create a \214le causes the redirection to f) +-2.6 E(ail.)-.1 E .045(Redirections using \214le descriptors greater th\ +an 9 should be used with care, as the)108 710.4 R 2.546(ym)-.15 G .046 +(ay con\215ict with \214le de-)-2.546 F +(scriptors the shell uses internally)108 722.4 Q(.)-.65 E(GNU Bash 5.1) +72 768 Q(2020 October 29)141.235 E(28)190.395 E 0 Cg EP +%%Page: 29 29 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Redir)87 84 Q(ecting Input)-.18 E F0 .391 +(Redirection of input causes the \214le whose name results from the e) +108 96 R .391(xpansion of)-.15 F/F2 10/Times-Italic@0 SF(wor)3.231 E(d) +-.37 E F0 .391(to be opened for read-)3.661 F(ing on \214le descriptor) +108 108 Q F2(n)2.86 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 124.8 Q([)144 141.6 Q +F2(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 158.4 Q +(ecting Output)-.18 E F0 .174 +(Redirection of output causes the \214le whose name results from the e) +108 170.4 R .175(xpansion of)-.15 F F2(wor)3.015 E(d)-.37 E F0 .175 +(to be opened for writ-)3.445 F .084(ing on \214le descriptor)108 182.4 +R F2(n)2.944 E F0 2.583(,o).24 G 2.583(rt)-2.583 G .083 +(he standard output \(\214le descriptor 1\) if)-2.583 F F2(n)2.943 E F0 +.083(is not speci\214ed.)2.823 F .083(If the \214le does not e)5.083 F +(x-)-.15 E(ist it is created; if it does e)108 194.4 Q +(xist it is truncated to zero size.)-.15 E +(The general format for redirecting output is:)108 211.2 Q([)144 228 Q +F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .154 +(If the redirection operator is)108 244.8 R F1(>)2.654 E F0 2.654(,a)C +.154(nd the)-2.654 F F1(noclob)2.654 E(ber)-.1 E F0 .154(option to the) +2.654 F F1(set)2.655 E F0 -.2(bu)2.655 G .155 +(iltin has been enabled, the redirection).2 F .658(will f)108 256.8 R +.658(ail if the \214le whose name results from the e)-.1 F .658 +(xpansion of)-.15 F F2(wor)3.158 E(d)-.37 E F0 -.15(ex)3.158 G .657 +(ists and is a re).15 F .657(gular \214le.)-.15 F .657(If the redi-) +5.657 F .408(rection operator is)108 268.8 R F1(>|)2.909 E F0 2.909(,o)C +2.909(rt)-2.909 G .409(he redirection operator is)-2.909 F F1(>)2.909 E +F0 .409(and the)2.909 F F1(noclob)2.909 E(ber)-.1 E F0 .409 +(option to the)2.909 F F1(set)2.909 E F0 -.2(bu)2.909 G .409 +(iltin command).2 F(is not enabled, the redirection is attempted e)108 +280.8 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 +297.6 S(pending Redir).25 E(ected Output)-.18 E F0 .642 +(Redirection of output in this f)108 309.6 R .642 +(ashion causes the \214le whose name results from the e)-.1 F .641 +(xpansion of)-.15 F F2(wor)3.481 E(d)-.37 E F0 .641(to be)3.911 F .454 +(opened for appending on \214le descriptor)108 321.6 R F2(n)3.315 E F0 +2.955(,o).24 G 2.955(rt)-2.955 G .455 +(he standard output \(\214le descriptor 1\) if)-2.955 F F2(n)3.315 E F0 +.455(is not speci\214ed.)3.195 F(If)5.455 E(the \214le does not e)108 +333.6 Q(xist it is created.)-.15 E +(The general format for appending output is:)108 350.4 Q([)144 367.2 Q +F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 384 Q +(ecting Standard Output and Standard Err)-.18 E(or)-.18 E F0 .249 +(This construct allo)108 396 R .249(ws both the standard output \(\214l\ +e descriptor 1\) and the standard error output \(\214le descrip-)-.25 F +(tor 2\) to be redirected to the \214le whose name is the e)108 408 Q +(xpansion of)-.15 E F2(wor)2.84 E(d)-.37 E F0(.).77 E(There are tw)108 +424.8 Q 2.5(of)-.1 G +(ormats for redirecting standard output and standard error:)-2.5 E F1 +(&>)144 441.6 Q F2(wor)A(d)-.37 E F0(and)108 453.6 Q F1(>&)144 465.6 Q +F2(wor)A(d)-.37 E F0(Of the tw)108 482.4 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 499.2 Q F2(wor)A(d)-.37 E F0(2)2.5 +E F1(>&)A F0(1)A .114(When using the second form,)108 516 R F2(wor)2.614 +E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or)-.15 F F1 +2.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.615(td)-2.614 G .115 +(oes, other redirection operators)-2.615 F(apply \(see)108 528 Q F1 +(Duplicating File Descriptors)2.5 E F0(belo)2.5 E +(w\) for compatibility reasons.)-.25 E F1 -.25(Ap)87 544.8 S +(pending Standard Output and Standard Err).25 E(or)-.18 E F0 .249 +(This construct allo)108 556.8 R .249(ws both the standard output \(\ +\214le descriptor 1\) and the standard error output \(\214le descrip-) +-.25 F(tor 2\) to be appended to the \214le whose name is the e)108 +568.8 Q(xpansion of)-.15 E F2(wor)2.84 E(d)-.37 E F0(.).77 E +(The format for appending standard output and standard error is:)108 +585.6 Q F1(&>>)144 602.4 Q F2(wor)A(d)-.37 E F0 +(This is semantically equi)108 619.2 Q -.25(va)-.25 G(lent to).25 E F1 +(>>)144 636 Q F2(wor)A(d)-.37 E F0(2)2.5 E F1(>&)A F0(1)A(\(see)108 +652.8 Q F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E(w\).)-.25 E +F1(Her)87 669.6 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of red\ +irection instructs the shell to read input from the current source unti\ +l a line containing only)108 681.6 R F2(delimiter)108.35 693.6 Q F0 .615 +(\(with no trailing blanks\) is seen.)3.845 F .615 +(All of the lines read up to that point are then used as the stan-)5.615 +F(dard input \(or \214le descriptor)108 705.6 Q F2(n)2.5 E F0(if)2.5 E +F2(n)2.5 E F0(is speci\214ed\) for a command.)2.5 E +(The format of here-documents is:)108 722.4 Q(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(29)190.395 E 0 Cg EP +%%Page: 30 30 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E([)144 84 Q/F1 10 +/Times-Italic@0 SF(n)A F0(])A/F2 10/Times-Bold@0 SF(<<)A F0([)A F2A +F0(])A F1(wor)A(d)-.37 E(her)164 96 Q(e-document)-.37 E(delimiter)144 +108 Q F0 .301(No parameter and v)108 124.8 R .302(ariable e)-.25 F .302 +(xpansion, command substitution, arithmetic e)-.15 F .302 +(xpansion, or pathname e)-.15 F(xpansion)-.15 E .381(is performed on)108 +136.8 R F1(wor)3.221 E(d)-.37 E F0 5.381(.I).77 G 2.881(fa)-5.381 G .681 +-.15(ny p)-2.881 H .381(art of).15 F F1(wor)3.221 E(d)-.37 E F0 .381 +(is quoted, the)3.651 F F1(delimiter)3.231 E F0 .381 +(is the result of quote remo)3.611 F -.25(va)-.15 G 2.881(lo).25 G(n) +-2.881 E F1(wor)3.221 E(d)-.37 E F0(,).77 E .773 +(and the lines in the here-document are not e)108 148.8 R 3.274 +(xpanded. If)-.15 F F1(wor)3.274 E(d)-.37 E F0 .774 +(is unquoted, all lines of the here-document)3.274 F 1.195 +(are subjected to parameter e)108 160.8 R 1.194 +(xpansion, command substitution, and arithmetic e)-.15 F 1.194 +(xpansion, the character se-)-.15 F(quence)108 172.8 Q F2(\\) +2.5 E F0(is ignored, and)2.5 E F2(\\)2.5 E F0 +(must be used to quote the characters)2.5 E F2(\\)2.5 E F0(,)A F2($)2.5 +E F0 2.5(,a)C(nd)-2.5 E F2<92>2.5 E F0(.)A .601 +(If the redirection operator is)108 189.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 201.6 Q F1(delimiter)2.85 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 218.4 Q 2.5(eS)-.18 G(trings)-2.5 E F0 +2.5(Av)108 230.4 S(ariant of here documents, the format is:)-2.75 E([) +144 247.2 Q F1(n)A F0(])A F2(<<<)A F1(wor)A(d)-.37 E F0(The)108 264 Q F1 +(wor)3.292 E(d)-.37 E F0(under)3.292 E .792(goes tilde e)-.18 F .792 +(xpansion, parameter and v)-.15 F .792(ariable e)-.25 F .791 +(xpansion, command substitution, arithmetic)-.15 F -.15(ex)108 276 S +1.187(pansion, and quote remo).15 F -.25(va)-.15 G 3.687(l. P).25 F +1.187(athname e)-.15 F 1.187(xpansion and w)-.15 F 1.187 +(ord splitting are not performed.)-.1 F 1.188(The result is)6.187 F .375 +(supplied as a single string, with a ne)108 288 R .374(wline appended, \ +to the command on its standard input \(or \214le descrip-)-.25 F(tor)108 +300 Q F1(n)2.5 E F0(if)2.5 E F1(n)2.5 E F0(is speci\214ed\).)2.5 E F2 +(Duplicating File Descriptors)87 316.8 Q F0(The redirection operator)108 +328.8 Q([)144 345.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 362.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 +374.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 386.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 398.4 Q +(The operator)108 415.2 Q([)144 432 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 448.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 .565 +(tor 1\) is used.)108 460.8 R .565(If the digits in)5.565 F F1(wor)3.406 +E(d)-.37 E F0 .566(do not specify a \214le descriptor open for output, \ +a redirection error oc-)3.836 F 3.204(curs. If)108 472.8 R F1(wor)3.544 +E(d)-.37 E F0 -.25(eva)3.974 G .704(luates to).25 F F23.204 E F0 +3.204<2c8c>C .704(le descriptor)-3.204 F F1(n)3.563 E F0 .703 +(is closed.)3.443 F .703(As a special case, if)5.703 F F1(n)3.203 E F0 +.703(is omitted, and)3.203 F F1(wor)3.203 E(d)-.37 E F0(does)3.203 E +.965(not e)108 484.8 R .965(xpand to one or more digits or)-.15 F F2 +3.465 E F0 3.466(,t)C .966 +(he standard output and standard error are redirected as described) +-3.466 F(pre)108 496.8 Q(viously)-.25 E(.)-.65 E F2(Mo)87 513.6 Q +(ving File Descriptors)-.1 E F0(The redirection operator)108 525.6 Q([) +144 542.4 Q F1(n)A F0(])A F2(<&)A F1(digit)A F2A F0(mo)108 559.2 Q +-.15(ve)-.15 G 3.018(st).15 G .518(he \214le descriptor)-3.018 F F1 +(digit)3.018 E F0 .518(to \214le descriptor)3.018 F F1(n)3.378 E F0 +3.018(,o).24 G 3.018(rt)-3.018 G .517 +(he standard input \(\214le descriptor 0\) if)-3.018 F F1(n)3.017 E F0 +.517(is not speci-)3.017 F(\214ed.)108 571.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 588 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([)144 604.8 Q F1 +(n)A F0(])A F2(>&)A F1(digit)A F2A F0(mo)108 621.6 Q -.15(ve)-.15 G +2.767(st).15 G .267(he \214le descriptor)-2.767 F F1(digit)2.767 E F0 +.267(to \214le descriptor)2.767 F F1(n)3.127 E F0 2.767(,o).24 G 2.767 +(rt)-2.767 G .268(he standard output \(\214le descriptor 1\) if)-2.767 F +F1(n)2.768 E F0 .268(is not speci-)2.768 F(\214ed.)108 633.6 Q F2 +(Opening File Descriptors f)87 650.4 Q(or Reading and Writing)-.25 E F0 +(The redirection operator)108 662.4 Q([)144 679.2 Q F1(n)A F0(])A F2(<>) +A F1(wor)A(d)-.37 E F0 .518(causes the \214le whose name is the e)108 +696 R .518(xpansion of)-.15 F F1(wor)3.358 E(d)-.37 E F0 .518 +(to be opened for both reading and writing on \214le de-)3.788 F +(scriptor)108 708 Q F1(n)2.86 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(GNU Bash 5.1) +72 768 Q(2020 October 29)141.235 E(30)190.395 E 0 Cg EP +%%Page: 31 31 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 +/Times-Bold@0 SF(ALIASES)72 84 Q/F2 10/Times-Italic@0 SF(Aliases)108 96 +Q F0(allo)3.173 E 3.173(was)-.25 G .674(tring to be substituted for a w) +-3.173 F .674(ord when it is used as the \214rst w)-.1 F .674 +(ord of a simple command.)-.1 F .394(The shell maintains a list of alia\ +ses that may be set and unset with the)108 108 R/F3 10/Times-Bold@0 SF +(alias)2.893 E F0(and)2.893 E F3(unalias)2.893 E F0 -.2(bu)2.893 G .393 +(iltin commands).2 F(\(see)108 120 Q/F4 9/Times-Bold@0 SF 1.979(SHELL B) +4.479 F(UIL)-.09 E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E 4.48 +(w\). The)-.25 F 1.98(\214rst w)4.48 F 1.98 +(ord of each simple command, if unquoted, is)-.1 F(check)108 132 Q .473 +(ed to see if it has an alias.)-.1 F .473(If so, that w)5.473 F .472 +(ord is replaced by the te)-.1 F .472(xt of the alias.)-.15 F .472 +(The characters)5.472 F F3(/)2.972 E F0(,)A F3($)2.972 E F0(,)A F3<92> +2.972 E F0(,)A(and)108 144 Q F3(=)3.611 E F0 1.111(and an)3.611 F 3.611 +(yo)-.15 G 3.611(ft)-3.611 G 1.111(he shell)-3.611 F F2(metac)3.612 E +(har)-.15 E(acter)-.15 E(s)-.1 E F0 1.112 +(or quoting characters listed abo)3.612 F 1.412 -.15(ve m)-.15 H 1.112 +(ay not appear in an alias).15 F 3.62(name. The)108 156 R 1.12 +(replacement te)3.62 F 1.119(xt may contain an)-.15 F 3.619(yv)-.15 G +1.119(alid shell input, including shell metacharacters.)-3.869 F 1.119 +(The \214rst)6.119 F -.1(wo)108 168 S .513(rd of the replacement te).1 F +.513(xt is tested for aliases, b)-.15 F .513(ut a w)-.2 F .514 +(ord that is identical to an alias being e)-.1 F .514(xpanded is)-.15 F +.296(not e)108 180 R .296(xpanded a second time.)-.15 F .296 +(This means that one may alias)5.296 F F3(ls)2.796 E F0(to)2.796 E F3 +.296(ls \255F)2.796 F F0 2.796(,f)C .295(or instance, and)-2.796 F F3 +(bash)2.795 E F0 .295(does not try)2.795 F .528(to recursi)108 192 R +-.15(ve)-.25 G .528(ly e).15 F .528(xpand the replacement te)-.15 F +3.028(xt. If)-.15 F .528(the last character of the alias v)3.028 F .529 +(alue is a)-.25 F F2(blank)3.299 E F0 3.029(,t).67 G .529(hen the ne) +-3.029 F(xt)-.15 E(command w)108 204 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 220.8 Q F3(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 F3 +(unalias)2.5 E F0(command.)2.5 E .284 +(There is no mechanism for using ar)108 237.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 249.6 Q F4(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E .282 +(Aliases are not e)108 266.4 R .282 +(xpanded when the shell is not interacti)-.15 F -.15(ve)-.25 G 2.782(,u) +.15 G .282(nless the)-2.782 F F3(expand_aliases)2.783 E F0 .283 +(shell option is set us-)2.783 F(ing)108 278.4 Q F3(shopt)2.5 E F0 +(\(see the description of)2.5 E F3(shopt)2.5 E F0(under)2.5 E F4 +(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 +E .436 +(The rules concerning the de\214nition and use of aliases are some)108 +295.2 R .435(what confusing.)-.25 F F3(Bash)5.435 E F0(al)2.935 E -.1 +(wa)-.1 G .435(ys reads at least).1 F .67 +(one complete line of input, and all lines that mak)108 307.2 R 3.17(eu) +-.1 G 3.17(pac)-3.17 G .67(ompound command, before e)-3.17 F -.15(xe) +-.15 G .67(cuting an).15 F 3.17(yo)-.15 G 3.17(ft)-3.17 G(he)-3.17 E +1.059(commands on that line or the compound command.)108 319.2 R 1.059 +(Aliases are e)6.059 F 1.058(xpanded when a command is read, not)-.15 F +.074(when it is e)108 331.2 R -.15(xe)-.15 G 2.574(cuted. Therefore,).15 +F .075(an alias de\214nition appearing on the same line as another comm\ +and does not)2.574 F(tak)108 343.2 Q 2.838(ee)-.1 G -.25(ff)-2.838 G +.338(ect until the ne).25 F .338(xt line of input is read.)-.15 F .337 +(The commands follo)5.337 F .337 +(wing the alias de\214nition on that line are)-.25 F .551(not af)108 +355.2 R .551(fected by the ne)-.25 F 3.051(wa)-.25 G 3.051(lias. This) +-3.051 F(beha)3.051 E .551(vior is also an issue when functions are e) +-.2 F -.15(xe)-.15 G 3.051(cuted. Aliases).15 F .552(are e)3.052 F(x-) +-.15 E .426(panded when a function de\214nition is read, not when the f\ +unction is e)108 367.2 R -.15(xe)-.15 G .425 +(cuted, because a function de\214nition).15 F .403(is itself a command.) +108 379.2 R .403 +(As a consequence, aliases de\214ned in a function are not a)5.403 F +-.25(va)-.2 G .404(ilable until after that func-).25 F .862(tion is e) +108 391.2 R -.15(xe)-.15 G 3.362(cuted. T).15 F 3.362(ob)-.8 G 3.362(es) +-3.362 G .862(afe, al)-3.362 F -.1(wa)-.1 G .862 +(ys put alias de\214nitions on a separate line, and do not use).1 F F3 +(alias)3.362 E F0 .862(in com-)3.362 F(pound commands.)108 403.2 Q -.15 +(Fo)108 420 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 F1 +(FUNCTIONS)72 436.8 Q F0 3.467(As)108 448.8 S .967 +(hell function, de\214ned as described abo)-3.467 F 1.267 -.15(ve u)-.15 +H(nder).15 E F4 .967(SHELL GRAMMAR)3.467 F/F5 9/Times-Roman@0 SF(,)A F0 +.968(stores a series of commands for)3.217 F 1.002(later e)108 460.8 R +-.15(xe)-.15 G 3.502(cution. When).15 F 1.002(the name of a shell funct\ +ion is used as a simple command name, the list of com-)3.502 F .315 +(mands associated with that function name is e)108 472.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 484.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 496.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 508.8 +R F3(#)3.033 E F0 .532(is updated to re\215ect the change.)3.033 F .532 +(Special parameter)5.532 F F3(0)3.032 E F0 .532(is unchanged.)3.032 F +.532(The \214rst ele-)5.532 F(ment of the)108 520.8 Q F4(FUNCN)2.5 E +(AME)-.18 E F0 -.25(va)2.25 G +(riable is set to the name of the function while the function is e).25 E +-.15(xe)-.15 G(cuting.).15 E 1.25(All other aspects of the shell e)108 +537.6 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25 +(vironment are identical between a function and its caller with)-.4 F +1.215(these e)108 549.6 R 1.215(xceptions: the)-.15 F F4(DEB)3.715 E(UG) +-.09 E F0(and)3.465 E F3(RETURN)3.715 E F0 1.215 +(traps \(see the description of the)3.715 F F3(trap)3.714 E F0 -.2(bu) +3.714 G 1.214(iltin under).2 F F4(SHELL)3.714 E -.09(BU)108 561.6 S(IL) +.09 E .478(TIN COMMANDS)-.828 F F0(belo)2.728 E .479 +(w\) are not inherited unless the function has been gi)-.25 F -.15(ve) +-.25 G 2.979(nt).15 G(he)-2.979 E F3(trace)2.979 E F0(attrib)2.979 E +.479(ute \(see)-.2 F .421(the description of the)108 573.6 R F4(declar) +2.92 E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the) +-.25 F F3 .42(\255o functrace)2.92 F F0 .42 +(shell option has been enabled with the)2.92 F F3(set)2.92 E F0 -.2(bu) +108 585.6 S .071(iltin \(in which case all functions inherit the).2 F F3 +(DEB)2.572 E(UG)-.1 E F0(and)2.572 E F3(RETURN)2.572 E F0 .072 +(traps\), and the)2.572 F F4(ERR)2.572 E F0 .072(trap is not inher)2.322 +F(-)-.2 E(ited unless the)108 597.6 Q F3(\255o errtrace)2.5 E F0 +(shell option has been enabled.)2.5 E -1.11(Va)108 614.4 S .656 +(riables local to the function may be declared with the)1.11 F F3(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 .05(their v)108 626.4 R .05 +(alues are shared between the function and its caller)-.25 F 5.051(.I) +-.55 G 2.551(fav)-5.051 G .051(ariable is declared)-2.801 F F3(local) +2.551 E F0 2.551(,t)C .051(he v)-2.551 F(ariable')-.25 E 2.551(sv)-.55 G +(isi-)-2.551 E 1.186(ble scope is restricted to that function and its c\ +hildren \(including the functions it calls\).)108 638.4 R 1.185(Local v) +6.185 F(ariables)-.25 E("shado)108 650.4 Q .154(w" v)-.25 F .154 +(ariables with the same name declared at pre)-.25 F .155(vious scopes.) +-.25 F -.15(Fo)5.155 G 2.655(ri).15 G .155(nstance, a local v)-2.655 F +.155(ariable declared)-.25 F .67(in a function hides a global v)108 +662.4 R .669(ariable of the same name: references and assignments refer\ + to the local v)-.25 F(ari-)-.25 E .688(able, lea)108 674.4 R .688 +(ving the global v)-.2 F .688(ariable unmodi\214ed.)-.25 F .688 +(When the function returns, the global v)5.688 F .688 +(ariable is once ag)-.25 F(ain)-.05 E(visible.)108 686.4 Q .727 +(The shell uses)108 703.2 R F2 .727(dynamic scoping)3.227 F F0 .726 +(to control a v)3.227 F(ariable')-.25 E 3.226(sv)-.55 G .726 +(isibility within functions.)-3.226 F -.4(Wi)5.726 G .726 +(th dynamic scoping,).4 F .007(visible v)108 715.2 R .007 +(ariables and their v)-.25 F .007 +(alues are a result of the sequence of function calls that caused e)-.25 +F -.15(xe)-.15 G .008(cution to reach).15 F .814(the current function.) +108 727.2 R .813(The v)5.814 F .813(alue of a v)-.25 F .813 +(ariable that a function sees depends on its v)-.25 F .813 +(alue within its caller)-.25 F 3.313(,i)-.4 G(f)-3.313 E(GNU Bash 5.1)72 +768 Q(2020 October 29)141.235 E(31)190.395 E 0 Cg EP +%%Page: 32 32 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(an)108 84 Q 2.116 +-.65(y, w)-.15 H .816 +(hether that caller is the "global" scope or another shell function.).65 +F .817(This is also the v)5.816 F .817(alue that a local)-.25 F -.25(va) +108 96 S(riable declaration "shado).25 E(ws", and the v)-.25 E +(alue that is restored when the function returns.)-.25 E -.15(Fo)108 +112.8 S 2.724(re).15 G .224(xample, if a v)-2.874 F(ariable)-.25 E/F1 10 +/Times-Italic@0 SF(var)2.724 E F0 .223(is declared as local in function) +2.724 F F1(func1)2.723 E F0 2.723(,a)C(nd)-2.723 E F1(func1)2.723 E F0 +.223(calls another function)2.723 F F1(func2)2.723 E F0(,)A .463 +(references to)108 124.8 R F1(var)2.963 E F0 .463(made from within)2.963 +F F1(func2)2.963 E F0 .463(will resolv)2.963 F 2.964(et)-.15 G 2.964(ot) +-2.964 G .464(he local v)-2.964 F(ariable)-.25 E F1(var)2.964 E F0(from) +2.964 E F1(func1)2.964 E F0 2.964(,s)C(hado)-2.964 E .464(wing an)-.25 F +(y)-.15 E(global v)108 136.8 Q(ariable named)-.25 E F1(var)2.5 E F0(.)A +(The)108 153.6 Q/F2 10/Times-Bold@0 SF(unset)2.983 E F0 -.2(bu)2.983 G +.483(iltin also acts using the same dynamic scope: if a v).2 F .482 +(ariable is local to the current scope,)-.25 F F2(unset)2.982 E F0 .19 +(will unset it; otherwise the unset will refer to the v)108 165.6 R .19 +(ariable found in an)-.25 F 2.69(yc)-.15 G .19 +(alling scope as described abo)-2.69 F -.15(ve)-.15 G 5.19(.I).15 G(f) +-5.19 E 2.721(av)108 177.6 S .221(ariable at the current local scope is\ + unset, it will remain so until it is reset in that scope or until the \ +func-)-2.971 F .013(tion returns.)108 189.6 R .013 +(Once the function returns, an)5.013 F 2.513(yi)-.15 G .014 +(nstance of the v)-2.513 F .014(ariable at a pre)-.25 F .014 +(vious scope will become visible.)-.25 F .567(If the unset acts on a v) +108 201.6 R .566(ariable at a pre)-.25 F .566(vious scope, an)-.25 F +3.066(yi)-.15 G .566(nstance of a v)-3.066 F .566 +(ariable with that name that had been)-.25 F(shado)108 213.6 Q +(wed will become visible.)-.25 E(The)108 230.4 Q F2(FUNCNEST)3.528 E F0 +-.25(va)3.528 G 1.028(riable, if set to a numeric v).25 F 1.028 +(alue greater than 0, de\214nes a maximum function nesting)-.25 F(le)108 +242.4 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G +(cations that e).2 E(xceed the limit cause the entire command to abort.) +-.15 E .044(If the b)108 259.2 R .043(uiltin command)-.2 F F2 -.18(re) +2.543 G(tur).18 E(n)-.15 E F0 .043(is e)2.543 F -.15(xe)-.15 G .043 +(cuted in a function, the function completes and e).15 F -.15(xe)-.15 G +.043(cution resumes with).15 F 1.011(the ne)108 271.2 R 1.011 +(xt command after the function call.)-.15 F(An)6.011 E 3.511(yc)-.15 G +1.011(ommand associated with the)-3.511 F F2(RETURN)3.512 E F0 1.012 +(trap is e)3.512 F -.15(xe)-.15 G(cuted).15 E .214(before e)108 283.2 R +-.15(xe)-.15 G .214(cution resumes.).15 F .213 +(When a function completes, the v)5.214 F .213 +(alues of the positional parameters and the spe-)-.25 F(cial parameter) +108 295.2 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E +2.5(yh)-.15 G(ad prior to the function')-2.5 E 2.5(se)-.55 G -.15(xe) +-2.65 G(cution.).15 E 1.358 +(Function names and de\214nitions may be listed with the)108 312 R F2 +3.858 E F0 1.358(option to the)3.858 F F2(declar)3.858 E(e)-.18 E +F0(or)3.859 E F2(typeset)3.859 E F0 -.2(bu)3.859 G 1.359(iltin com-).2 F +3.39(mands. The)108 324 R F23.39 E F0 .89(option to)3.39 F F2 +(declar)3.39 E(e)-.18 E F0(or)3.39 E F2(typeset)3.39 E F0 .89 +(will list the function names only \(and optionally the source)3.39 F +.326(\214le and line number)108 336 R 2.826(,i)-.4 G 2.826(ft)-2.826 G +(he)-2.826 E F2(extdeb)2.826 E(ug)-.2 E F0 .326 +(shell option is enabled\).)2.826 F .327(Functions may be e)5.327 F .327 +(xported so that subshells)-.15 F 1.298(automatically ha)108 348 R 1.598 +-.15(ve t)-.2 H 1.298(hem de\214ned with the).15 F F23.798 E F0 +1.298(option to the)3.798 F F2(export)3.797 E F0 -.2(bu)3.797 G 3.797 +(iltin. A).2 F 1.297(function de\214nition may be)3.797 F +(deleted using the)108 360 Q F22.5 E F0(option to the)2.5 E F2 +(unset)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .371(Functions may be recursi) +108 376.8 R -.15(ve)-.25 G 5.371(.T).15 G(he)-5.371 E F2(FUNCNEST)2.871 +E F0 -.25(va)2.871 G .371 +(riable may be used to limit the depth of the function call).25 F .323 +(stack and restrict the number of function in)108 388.8 R -.2(vo)-.4 G +2.822(cations. By).2 F(def)2.822 E .322 +(ault, no limit is imposed on the number of re-)-.1 F(cursi)108 400.8 Q +.3 -.15(ve c)-.25 H(alls.).15 E/F3 10.95/Times-Bold@0 SF(ARITHMETIC EV) +72 417.6 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 1.088 +(The shell allo)108 429.6 R 1.088(ws arithmetic e)-.25 F 1.089 +(xpressions to be e)-.15 F -.25(va)-.25 G 1.089 +(luated, under certain circumstances \(see the).25 F F2(let)3.589 E F0 +(and)3.589 E F2(de-)3.589 E(clar)108 441.6 Q(e)-.18 E F0 -.2(bu)3.453 G +.953(iltin commands, the).2 F F2(\(\()3.453 E F0 .952 +(compound command, and)3.452 F F2 .952(Arithmetic Expansion)3.452 F F0 +3.452(\). Ev)B .952(aluation is done in)-.25 F<8c78>108 453.6 Q 1.057 +(ed-width inte)-.15 F 1.057(gers with no check for o)-.15 F -.15(ve)-.15 +G(r\215o).15 E 2.357 -.65(w, t)-.25 H 1.057(hough di).65 F 1.057 +(vision by 0 is trapped and \215agged as an error)-.25 F(.)-.55 E .829 +(The operators and their precedence, associati)108 465.6 R(vity)-.25 E +3.329(,a)-.65 G .829(nd v)-3.329 F .829 +(alues are the same as in the C language.)-.25 F .828(The fol-)5.828 F +(lo)108 477.6 Q .439(wing list of operators is grouped into le)-.25 F +-.15(ve)-.25 G .439(ls of equal-precedence operators.).15 F .44(The le) +5.44 F -.15(ve)-.25 G .44(ls are listed in order).15 F +(of decreasing precedence.)108 489.6 Q F1(id)108 506.4 Q F2(++)A F1(id) +2.5 E F2A F0 -.25(va)144 518.4 S +(riable post-increment and post-decrement).25 E F2 2.5108 530.4 S +F0(unary minus and plus)144 530.4 Q F2(++)108 542.4 Q F1(id)A F2 +2.5 E F1(id)A F0 -.25(va)144 554.4 S +(riable pre-increment and pre-decrement).25 E F2 2.5(!~)108 566.4 S F0 +(logical and bitwise ne)144 566.4 Q -.05(ga)-.15 G(tion).05 E F2(**)108 +578.4 Q F0 -.15(ex)144 578.4 S(ponentiation).15 E F2 2.5(*/%)108 590.4 S +F0(multiplication, di)144 590.4 Q(vision, remainder)-.25 E F2 2.5<2bad> +108 602.4 S F0(addition, subtraction)144 602.4 Q F2(<< >>)108 614.4 Q F0 +(left and right bitwise shifts)144 614.4 Q F2(<= >= < >)108 626.4 Q F0 +(comparison)144 638.4 Q F2(== !=)108 650.4 Q F0(equality and inequality) +144 650.4 Q F2(&)108 662.4 Q F0(bitwise AND)144 662.4 Q F2(^)108 674.4 Q +F0(bitwise e)144 674.4 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|) +108 686.4 Q F0(bitwise OR)144 686.4 Q F2(&&)108 698.4 Q F0(logical AND) +144 698.4 Q F2(||)108 710.4 Q F0(logical OR)144 710.4 Q(GNU Bash 5.1)72 +768 Q(2020 October 29)141.235 E(32)190.395 E 0 Cg EP +%%Page: 33 33 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF -.2(ex)108 84 S(pr).2 E/F2 10/Times-Bold@0 SF(?)A F1 +-.2(ex)C(pr).2 E F2(:)A F1 -.2(ex)C(pr).2 E F0(conditional operator)144 +96 Q F2 2.5(=*)108 108 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 120 +Q F1 -.2(ex)108 132 S(pr1).2 E F2(,)2.5 E F1 -.2(ex)2.5 G(pr2).2 E F0 +(comma)144 144 Q .68(Shell v)108 160.8 R .68(ariables are allo)-.25 F +.68(wed as operands; parameter e)-.25 F .68 +(xpansion is performed before the e)-.15 F .68(xpression is e)-.15 F +-.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 172.8 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 184.8 S .165(pansion syntax.).15 F 2.665(As)5.165 G +.165(hell v)-2.665 F .165(ariable that is null or unset e)-.25 F -.25 +(va)-.25 G .165(luates to 0 when referenced by name without us-).25 F +.42(ing the parameter e)108 196.8 R .42(xpansion syntax.)-.15 F .42 +(The v)5.42 F .421(alue of a v)-.25 F .421(ariable is e)-.25 F -.25(va) +-.25 G .421(luated as an arithmetic e).25 F .421(xpression when)-.15 F +.154(it is referenced, or when a v)108 208.8 R .154 +(ariable which has been gi)-.25 F -.15(ve)-.25 G 2.654(nt).15 G(he) +-2.654 E F1(inte)2.654 E -.1(ge)-.4 G(r).1 E F0(attrib)2.654 E .153 +(ute using)-.2 F F2(declar)2.653 E 2.653<65ad>-.18 G(i)-2.653 E F0 .153 +(is assigned a)2.653 F -.25(va)108 220.8 S 2.857(lue. A).25 F .357 +(null v)2.857 F .357(alue e)-.25 F -.25(va)-.25 G .357(luates to 0.).25 +F 2.857(As)5.357 G .357(hell v)-2.857 F .357(ariable need not ha)-.25 F +.657 -.15(ve i)-.2 H(ts).15 E F1(inte)2.857 E -.1(ge)-.4 G(r).1 E F0 +(attrib)2.857 E .357(ute turned on to be used)-.2 F(in an e)108 232.8 Q +(xpression.)-.15 E(Inte)108 249.6 Q .518(ger constants follo)-.15 F +3.018(wt)-.25 G .518(he C language de\214nition, without suf)-3.018 F +<8c78>-.25 E .517(es or character constants.)-.15 F .517(Constants with) +5.517 F 3.282(al)108 261.6 S .782 +(eading 0 are interpreted as octal numbers.)-3.282 F 3.283(Al)5.782 G +.783(eading 0x or 0X denotes he)-3.283 F 3.283(xadecimal. Otherwise,) +-.15 F(num-)3.283 E .816(bers tak)108 273.6 R 3.316(et)-.1 G .816 +(he form [)-3.316 F F1(base#)A F0 .815(]n, where the optional)B F1(base) +3.315 E F0 .815(is a decimal number between 2 and 64 representing)3.315 +F .349(the arithmetic base, and)108 285.6 R F1(n)2.849 E F0 .349 +(is a number in that base.)2.849 F(If)5.35 E F1(base#)2.85 E F0 .35 +(is omitted, then base 10 is used.)2.85 F .35(When speci-)5.35 F(fying) +108 297.6 Q F1(n)2.975 E F0 2.975(,i)C 2.975(fan)-2.975 G .474(on-digit\ + is required, the digits greater than 9 are represented by the lo)-2.975 +F .474(wercase letters, the up-)-.25 F .518 +(percase letters, @, and _, in that order)108 309.6 R 5.518(.I)-.55 G(f) +-5.518 E F1(base)3.018 E F0 .518(is less than or equal to 36, lo)3.018 F +.518(wercase and uppercase letters)-.25 F +(may be used interchangeably to represent numbers between 10 and 35.)108 +321.6 Q .235(Operators are e)108 338.4 R -.25(va)-.25 G .235 +(luated in order of precedence.).25 F(Sub-e)5.234 E .234 +(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .234 +(luated \214rst and may).25 F -.15(ove)108 350.4 S +(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F3 10.95 +/Times-Bold@0 SF(CONDITION)72 367.2 Q(AL EXPRESSIONS)-.219 E F0 .255 +(Conditional e)108 379.2 R .255(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.756 E F0 -.2(bu)2.756 G .256(iltin commands to test).2 F +.134(\214le attrib)108 391.2 R .134 +(utes and perform string and arithmetic comparisons.)-.2 F(The)5.133 E +F2(test)2.633 E F0(and)2.633 E F2([)2.633 E F0 .133 +(commands determine their be-)2.633 F(ha)108 403.2 Q .197 +(vior based on the number of ar)-.2 F .198 +(guments; see the descriptions of those commands for an)-.18 F 2.698(yo) +-.15 G .198(ther command-)-2.698 F(speci\214c actions.)108 415.2 Q .235 +(Expressions are formed from the follo)108 432 R .234 +(wing unary or binary primaries.)-.25 F F2(Bash)5.234 E F0 .234 +(handles se)2.734 F -.15(ve)-.25 G .234(ral \214lenames spe-).15 F .424 +(cially when the)108 444 R 2.924(ya)-.15 G .424(re used in e)-2.924 F +2.925(xpressions. If)-.15 F .425(the operating system on which)2.925 F +F2(bash)2.925 E F0 .425(is running pro)2.925 F .425(vides these)-.15 F +.345(special \214les, bash will use them; otherwise it will emulate the\ +m internally with this beha)108 456 R .344(vior: If an)-.2 F(y)-.15 E F1 +(\214le)2.844 E F0(ar)2.844 E(-)-.2 E .805 +(gument to one of the primaries is of the form)108 468 R F1(/de)3.305 E +(v/fd/n)-.15 E F0 3.306(,t)C .806(hen \214le descriptor)-3.306 F F1(n) +3.306 E F0 .806(is check)3.306 F 3.306(ed. If)-.1 F(the)3.306 E F1 +(\214le)3.306 E F0(ar)3.306 E(gu-)-.18 E .03 +(ment to one of the primaries is one of)108 480 R F1(/de)2.53 E(v/stdin) +-.15 E F0(,)A F1(/de)2.529 E(v/stdout)-.15 E F0 2.529(,o)C(r)-2.529 E F1 +(/de)2.529 E(v/stderr)-.15 E F0 2.529<2c8c>C .029 +(le descriptor 0, 1, or 2, respec-)-2.529 F(ti)108 492 Q -.15(ve)-.25 G +(ly).15 E 2.5(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .721 +(Unless otherwise speci\214ed, primaries that operate on \214les follo) +108 508.8 R 3.221(ws)-.25 G .722(ymbolic links and operate on the tar) +-3.221 F(get)-.18 E(of the link, rather than the link itself.)108 520.8 +Q 1.096(When used with)108 538.8 R F2([[)3.596 E F0 3.596(,t)C(he)-3.596 +E F2(<)3.596 E F0(and)3.595 E F2(>)3.595 E F0 1.095(operators sort le) +3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.095 +E F2(test)3.595 E F0(com-)3.595 E(mand sorts using ASCII ordering.)108 +550.8 Q F2108 574.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 574.8 S +(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F2108 +586.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 586.8 S(ue if).35 E F1(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is a block special \214le.).15 E F2108 +598.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 598.8 S(ue if).35 E F1(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is a character special \214le.).15 E F2 +108 610.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 610.8 S(ue if).35 E F1 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F2 +108 622.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 622.8 S(ue if).35 E F1 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F2108 634.8 Q F1 +(\214le)2.5 E F0 -.35(Tr)144 634.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a re).15 E(gular \214le.)-.15 E F2108 646.8 +Q F1(\214le)2.5 E F0 -.35(Tr)144 646.8 S(ue if).35 E F1(\214le)2.5 E F0 +-.15(ex)2.5 G(ists and is set-group-id.).15 E F2108 658.8 Q F1 +(\214le)2.5 E F0 -.35(Tr)144 658.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a symbolic link.).15 E F2108 670.8 Q F1 +(\214le)2.5 E F0 -.35(Tr)144 670.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and its `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G +(it is set.)-2.5 E F2108 682.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 +682.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is a named pipe \(FIFO\).).15 E F2108 694.8 Q F1(\214le) +2.5 E F0 -.35(Tr)144 694.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 +G(ists and is readable.).15 E F2108 706.8 Q F1(\214le)2.5 E F0 +-.35(Tr)144 706.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and has a size greater than zero.).15 E F2108 718.8 Q F1(fd) +2.5 E F0 -.35(Tr)144 718.8 S(ue if \214le descriptor).35 E F1(fd)4.47 E +F0(is open and refers to a terminal.)3.27 E(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(33)190.395 E 0 Cg EP +%%Page: 34 34 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF108 84 Q/F2 10/Times-Italic@0 SF(\214le)2.5 E F0 -.35(Tr)144 84 +S(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 96 Q F2(\214le)2.5 E F0 -.35(Tr)144 +96 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is writable.) +.15 E F1108 108 Q F2(\214le)2.5 E F0 -.35(Tr)144 108 S(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 120 Q F2(\214le)2.5 E F0 -.35(Tr)144 120 S +(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 132 Q F2(\214le)2.5 E F0 -.35(Tr)144 132 S(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 144 Q F2(\214le)2.5 E F0 -.35(Tr)144 144 S(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 F1108 156 Q F2(\214le)2.5 E F0 -.35(Tr) +144 156 S(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 168 Q F2(\214le)2.5 E F0 -.35(Tr)144 168 S(ue if).35 E F2 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F2 +(\214le1)108 180 Q F1(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 192 S +(ue if).35 E F2(\214le1)2.5 E F0(and)2.5 E F2(\214le2)2.5 E F0 +(refer to the same de)2.5 E(vice and inode numbers.)-.25 E F2(\214le1) +108 204 Q F02.5 E F1(nt)A F2(\214le2)2.5 E F0 -.35(Tr)144 216 S +(ue if).35 E F2(\214le1)2.5 E F0(is ne)2.5 E +(wer \(according to modi\214cation date\) than)-.25 E F2(\214le2)2.5 E +F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le1)2.5 E F0 -.15(ex)2.5 G +(ists and).15 E F2(\214le2)2.5 E F0(does not.)2.5 E F2(\214le1)108 228 Q +F02.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144 240 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 F1108 252 Q F2(optname)2.5 E F0 +-.35(Tr)144 264 S .262(ue if the shell option).35 F F2(optname)2.992 E +F0 .262(is enabled.)2.942 F .262 +(See the list of options under the description of the)5.262 F F1 +2.763 E F0(option to the)144 276 Q F1(set)2.5 E F0 -.2(bu)2.5 G +(iltin belo).2 E -.65(w.)-.25 G F1108 288 Q F2(varname)2.5 E F0 +-.35(Tr)144 300 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)2.79 +E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E F1108 +312 Q F2(varname)2.5 E F0 -.35(Tr)144 324 S(ue if the shell v).35 E +(ariable)-.25 E F2(varname)2.79 E F0(is set and is a name reference.) +2.68 E F1108 336 Q F2(string)2.5 E F0 -.35(Tr)144 348 S +(ue if the length of).35 E F2(string)2.5 E F0(is zero.)2.5 E F2(string) +108 360 Q F1108 372 Q F2(string)2.5 E F0 -.35(Tr)144 384 S +(ue if the length of).35 E F2(string)2.84 E F0(is non-zero.)2.72 E F2 +(string1)108 400.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 412.8 Q F1 +(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 424.8 S .862 +(ue if the strings are equal.).35 F F1(=)5.861 E F0 .861 +(should be used with the)3.361 F F1(test)3.361 E F0 .861 +(command for POSIX conformance.)3.361 F .446(When used with the)144 +436.8 R F1([[)2.946 E F0 .446 +(command, this performs pattern matching as described abo)2.946 F .747 +-.15(ve \()-.15 H F1(Compound).15 E(Commands)144 448.8 Q F0(\).)A F2 +(string1)108 465.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 477.6 S +(ue if the strings are not equal.).35 E F2(string1)108 494.4 Q F1(<)2.5 +E F2(string2)2.5 E F0 -.35(Tr)144 506.4 S(ue if).35 E F2(string1)2.5 E +F0(sorts before)2.5 E F2(string2)2.5 E F0(le)2.5 E(xicographically)-.15 +E(.)-.65 E F2(string1)108 523.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35 +(Tr)144 535.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2 +(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F2(ar)108.33 +552 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 564 Q F0 .385(is one of)2.635 F F1(\255eq)2.885 E F0(,)A F1 +(\255ne)2.885 E F0(,)A F1(\255lt)2.885 E F0(,)A F1(\255le)2.885 E F0(,)A +F1(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F1(\255ge)2.885 E F0 5.385 +(.T)C .385(hese arithmetic binary operators return true if)-5.385 F F2 +(ar)2.884 E(g1)-.37 E F0 .845(is equal to, not equal to, less than, les\ +s than or equal to, greater than, or greater than or equal to)144 576 R +F2(ar)144 588 Q(g2)-.37 E F0 3.59(,r)C(especti)-3.59 E -.15(ve)-.25 G +(ly).15 E(.)-.65 E F2(Ar)7.1 E(g1)-.37 E F0(and)3.59 E F2(ar)3.92 E(g2) +-.37 E F0 1.089(may be positi)3.61 F 1.389 -.15(ve o)-.25 H 3.589(rn).15 +G -2.25 -.15(eg a)-3.589 H(ti).15 E 1.389 -.15(ve i)-.25 H(nte).15 E +3.589(gers. When)-.15 F 1.089(used with the)3.589 F F1([[)3.589 E F0 +(command,)144 600 Q F2(Ar)4.447 E(g1)-.37 E F0(and)3.437 E F2(Ar)4.447 E +(g2)-.37 E F0 .937(are e)3.457 F -.25(va)-.25 G .937 +(luated as arithmetic e).25 F .937(xpressions \(see)-.15 F F3 .937 +(ARITHMETIC EV)3.437 F(ALU)-1.215 E(A-)-.54 E(TION)144 612 Q F0(abo)2.25 +E -.15(ve)-.15 G(\).).15 E/F4 10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP) +72 628.8 Q(ANSION)-.81 E F0 .614(When a simple command is e)108 640.8 R +-.15(xe)-.15 G .614(cuted, the shell performs the follo).15 F .613 +(wing e)-.25 F .613(xpansions, assignments, and redi-)-.15 F +(rections, from left to right, in the follo)108 652.8 Q(wing order)-.25 +E(.)-.55 E(1.)108 669.6 Q 1.848(The w)144 669.6 R 1.848 +(ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.849 +(ariable assignments \(those preceding the command)-.25 F +(name\) and redirections are sa)144 681.6 Q -.15(ve)-.2 G 2.5(df).15 G +(or later processing.)-2.5 E(2.)108 698.4 Q .18(The w)144 698.4 R .18 +(ords that are not v)-.1 F .179 +(ariable assignments or redirections are e)-.25 F 2.679(xpanded. If)-.15 +F(an)2.679 E 2.679(yw)-.15 G .179(ords remain af-)-2.779 F .346(ter e) +144 710.4 R .346(xpansion, the \214rst w)-.15 F .346(ord is tak)-.1 F +.347(en to be the name of the command and the remaining w)-.1 F .347 +(ords are)-.1 F(the ar)144 722.4 Q(guments.)-.18 E(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(34)190.395 E 0 Cg EP +%%Page: 35 35 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(3.)108 84 Q +(Redirections are performed as described abo)144 84 Q .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(4.)108 100.8 Q .717(The te)144 100.8 R .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 .339 +(command substitution, arithmetic e)144 112.8 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 124.8 Q +.332(If no command name results, the v)108 141.6 R .332 +(ariable assignments af)-.25 F .332(fect the current shell en)-.25 F +2.832(vironment. Otherwise,)-.4 F(the)2.832 E -.25(va)108 153.6 S .757 +(riables are added to the en).25 F .757(vironment of the e)-.4 F -.15 +(xe)-.15 G .757(cuted command and do not af).15 F .757 +(fect the current shell en)-.25 F(vi-)-.4 E 3.177(ronment. If)108 165.6 +R(an)3.177 E 3.177(yo)-.15 G 3.177(ft)-3.177 G .677 +(he assignments attempts to assign a v)-3.177 F .677 +(alue to a readonly v)-.25 F .676(ariable, an error occurs, and)-.25 F +(the command e)108 177.6 Q(xits with a non-zero status.)-.15 E .149 +(If no command name results, redirections are performed, b)108 194.4 R +.149(ut do not af)-.2 F .15(fect the current shell en)-.25 F 2.65 +(vironment. A)-.4 F(redirection error causes the command to e)108 206.4 +Q(xit with a non-zero status.)-.15 E 1.064 +(If there is a command name left after e)108 223.2 R 1.064(xpansion, e) +-.15 F -.15(xe)-.15 G 1.064(cution proceeds as described belo).15 F +4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .068(command e)108 +235.2 R 2.568(xits. If)-.15 F .069(one of the e)2.568 F .069 +(xpansions contained a command substitution, the e)-.15 F .069 +(xit status of the command)-.15 F .467(is the e)108 247.2 R .466 +(xit status of the last command substitution performed.)-.15 F .466 +(If there were no command substitutions, the)5.466 F(command e)108 259.2 +Q(xits with a status of zero.)-.15 E/F4 10.95/Times-Bold@0 SF +(COMMAND EXECUTION)72 276 Q F0 .546 +(After a command has been split into w)108 288 R .547 +(ords, if it results in a simple command and an optional list of ar)-.1 +F(gu-)-.18 E(ments, the follo)108 300 Q(wing actions are tak)-.25 E(en.) +-.1 E .379(If the command name contains no slashes, the shell attempts \ +to locate it.)108 316.8 R .379(If there e)5.379 F .379 +(xists a shell function by)-.15 F .246(that name, that function is in) +108 328.8 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G +.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E 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 340.8 Q 2.5 +(uiltins. If)-.2 F 2.5(am)2.5 G(atch is found, that b)-2.5 E +(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .31 +(If the name is neither a shell function nor a b)108 357.6 R .309 +(uiltin, and contains no slashes,)-.2 F F3(bash)2.809 E F0 .309 +(searches each element of)2.809 F(the)108 369.6 Q F1 -.666(PA)3.162 G +(TH)-.189 E F0 .662(for a directory containing an e)2.912 F -.15(xe)-.15 +G .662(cutable \214le by that name.).15 F F3(Bash)5.662 E F0 .663 +(uses a hash table to remember)3.162 F 1.915(the full pathnames of e)108 +381.6 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.914(TIN COMMANDS) +-.828 F F0(belo)4.164 E 4.414(w\). A)-.25 F(full)4.414 E .719 +(search of the directories in)108 393.6 R F1 -.666(PA)3.219 G(TH)-.189 E +F0 .72(is performed only if the command is not found in the hash table.) +2.969 F .72(If the)5.72 F .956(search is unsuccessful, the shell search\ +es for a de\214ned shell function named)108 405.6 R F3(command_not_f) +3.455 E(ound_han-)-.25 E(dle)108 417.6 Q F0 6.005(.I)C 3.505(ft)-6.005 G +1.005(hat function e)-3.505 F 1.005(xists, it is in)-.15 F -.2(vo)-.4 G +-.1(ke).2 G 3.506(di).1 G 3.506(nas)-3.506 G 1.006(eparate e)-3.506 F +-.15(xe)-.15 G 1.006(cution en).15 F 1.006 +(vironment with the original command)-.4 F .256 +(and the original command')108 429.6 R 2.756(sa)-.55 G -.18(rg)-2.756 G +.256(uments as its ar).18 F .256(guments, and the function')-.18 F 2.755 +(se)-.55 G .255(xit status becomes the e)-2.905 F .255(xit sta-)-.15 F +.263(tus of that subshell.)108 441.6 R .263(If that function is not de\ +\214ned, the shell prints an error message and returns an e)5.263 F .263 +(xit sta-)-.15 F(tus of 127.)108 453.6 Q 1.089(If the search is success\ +ful, or if the command name contains one or more slashes, the shell e) +108 470.4 R -.15(xe)-.15 G 1.089(cutes the).15 F .197 +(named program in a separate e)108 482.4 R -.15(xe)-.15 G .197 +(cution en).15 F 2.698(vironment. Ar)-.4 F .198 +(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .198 +(n, and the remain-).15 F(ing ar)108 494.4 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.049(If this e)108 511.2 R +-.15(xe)-.15 G 1.049(cution f).15 F 1.049 +(ails because the \214le is not in e)-.1 F -.15(xe)-.15 G 1.048 +(cutable format, and the \214le is not a directory).15 F 3.548(,i)-.65 G +3.548(ti)-3.548 G 3.548(sa)-3.548 G(s-)-3.548 E .042(sumed to be a)108 +523.2 R/F5 10/Times-Italic@0 SF .042(shell script)2.542 F F0 2.542 +(,a\214)C .043(le containing shell commands.)-2.542 F 2.543(As)5.043 G +.043(ubshell is spa)-2.543 F .043(wned to e)-.15 F -.15(xe)-.15 G .043 +(cute it.).15 F .043(This sub-)5.043 F .275 +(shell reinitializes itself, so that the ef)108 535.2 R .274 +(fect is as if a ne)-.25 F 2.774(ws)-.25 G .274(hell had been in)-2.774 +F -.2(vo)-.4 G -.1(ke).2 G 2.774(dt).1 G 2.774(oh)-2.774 G .274 +(andle the script, with the)-2.774 F -.15(ex)108 547.2 S 2.357 +(ception that the locations of commands remembered by the parent \(see) +.15 F F3(hash)4.858 E F0(belo)4.858 E 4.858(wu)-.25 G(nder)-4.858 E F1 +(SHELL)4.858 E -.09(BU)108 559.2 S(IL).09 E(TIN COMMANDS)-.828 E F2(\))A +F0(are retained by the child.)2.25 E .348(If the program is a \214le be) +108 576 R .348(ginning with)-.15 F F3(#!)2.848 E F0 2.848(,t)C .347(he \ +remainder of the \214rst line speci\214es an interpreter for the pro-) +-2.848 F 3.178(gram. The)108 588 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 .206(format themselv) +108 600 R 2.706(es. The)-.15 F(ar)2.706 E .206 +(guments to the interpreter consist of a single optional ar)-.18 F .206 +(gument follo)-.18 F .206(wing the in-)-.25 F .267 +(terpreter name on the \214rst line of the program, follo)108 612 R .268 +(wed by the name of the program, follo)-.25 F .268(wed by the com-)-.25 +F(mand ar)108 624 Q(guments, if an)-.18 E -.65(y.)-.15 G F4 +(COMMAND EXECUTION ENVIR)72 640.8 Q(ONMENT)-.329 E F0(The shell has an) +108 652.8 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<83>108 669.6 Q +1.406(open \214les inherited by the shell at in)144 669.6 R -.2(vo)-.4 G +1.405(cation, as modi\214ed by redirections supplied to the).2 F F3 +(exec)3.905 E F0 -.2(bu)144 681.6 S(iltin).2 E<83>108 698.4 Q +(the current w)144 698.4 Q(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 +<83>108 715.2 Q(the \214le creation mode mask as set by)144 715.2 Q F3 +(umask)2.5 E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent) +-2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(35)190.395 E 0 Cg +EP +%%Page: 36 36 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q +(current traps set by)144 84 Q/F1 10/Times-Bold@0 SF(trap)2.5 E F0<83> +108 100.8 Q .256(shell parameters that are set by v)144 100.8 R .256 +(ariable assignment or with)-.25 F F1(set)2.756 E F0 .257 +(or inherited from the shell')2.756 F 2.757(sp)-.55 G(arent)-2.757 E +(in the en)144 112.8 Q(vironment)-.4 E<83>108 129.6 Q +(shell functions de\214ned during e)144 129.6 Q -.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<83>108 146.4 Q +(options enabled at in)144 146.4 Q -.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<83>108 163.2 Q(options enabled by)144 163.2 Q F1(shopt)2.5 E F0 +<83>108 180 Q(shell aliases de\214ned with)144 180 Q F1(alias)2.5 E F0 +<83>108 196.8 Q -.25(va)144 196.8 S +(rious process IDs, including those of background jobs, the v).25 E +(alue of)-.25 E F1($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E +/F2 9/Times-Bold@0 SF(PPID)2.5 E F0 .427 +(When a simple command other than a b)108 213.6 R .426 +(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .426 +(cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.926(di).1 G 2.926(nas) +-2.926 G(eparate)-2.926 E -.15(exe)108 225.6 S .133(cution en).15 F .133 +(vironment that consists of the follo)-.4 F 2.634(wing. Unless)-.25 F +.134(otherwise noted, the v)2.634 F .134(alues are inherited from)-.25 F +(the shell.)108 237.6 Q<83>108 254.4 Q 1.056(the shell')144 254.4 R +3.556(so)-.55 G 1.056(pen \214les, plus an)-3.556 F 3.556(ym)-.15 G +1.056 +(odi\214cations and additions speci\214ed by redirections to the com-) +-3.556 F(mand)144 266.4 Q<83>108 283.2 Q(the current w)144 283.2 Q +(orking directory)-.1 E<83>108 300 Q(the \214le creation mode mask)144 +300 Q<83>108 316.8 Q .856(shell v)144 316.8 R .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 328.8 Q(vironment) +-.4 E<83>108 345.6 Q .307(traps caught by the shell are reset to the v) +144 345.6 R .306(alues inherited from the shell')-.25 F 2.806(sp)-.55 G +.306(arent, and traps ignored)-2.806 F(by the shell are ignored)144 +357.6 Q 2.5(Ac)108 374.4 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 391.2 R -.2(vo)-.4 G -.1 +(ke).2 G 3.078(di).1 G(n)-3.078 E 2.745(as)108 403.2 S .245(ubshell en) +-2.745 F .245(vironment that is a duplicate of the shell en)-.4 F .244 +(vironment, e)-.4 F .244(xcept that traps caught by the shell are)-.15 F +.358(reset to the v)108 415.2 R .358 +(alues that the shell inherited from its parent at in)-.25 F -.2(vo)-.4 +G 2.858(cation. Builtin).2 F .359(commands that are in)2.859 F -.2(vo) +-.4 G -.1(ke).2 G(d).1 E .857(as part of a pipeline are also e)108 427.2 +R -.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.356 +(vironment. Changes)-.4 F .856(made to the subshell en)3.356 F(viron-) +-.4 E(ment cannot af)108 439.2 Q(fect the shell')-.25 E 2.5(se)-.55 G +-.15(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.376(Subshells spa)108 +456 R 1.376(wned to e)-.15 F -.15(xe)-.15 G 1.377 +(cute command substitutions inherit the v).15 F 1.377(alue of the)-.25 F +F13.877 E F0 1.377(option from the parent)3.877 F 2.5(shell. When) +108 468 R(not in)2.5 E/F3 10/Times-Italic@0 SF(posix mode)2.5 E F0(,)A +F1(bash)2.5 E F0(clears the)2.5 E F12.5 E F0 +(option in such subshells.)2.5 E .405(If a command is follo)108 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 F3(/de)2.697 E(v/null)-.15 E F0 5.197(.O)C .197 +(therwise, the in)-5.197 F -.2(vo)-.4 G -.1(ke).2 G 2.697(dc).1 G .198 +(ommand inherits the \214le descriptors of the calling shell)-2.697 F +(as modi\214ed by redirections.)108 508.8 Q/F4 10.95/Times-Bold@0 SF +(ENVIR)72 525.6 Q(ONMENT)-.329 E F0 2.344(When a program is in)108 537.6 +R -.2(vo)-.4 G -.1(ke).2 G 4.843(di).1 G 4.843(ti)-4.843 G 4.843(sg) +-4.843 G -2.15 -.25(iv e)-4.843 H 4.843(na).25 G 4.843(na)-4.843 G 2.343 +(rray of strings called the)-4.843 F F3(en)5.033 E(vir)-.4 E(onment)-.45 +E F0 7.343(.T).68 G 2.343(his is a list of)-7.343 F F3(name)108 549.6 Q +F0A F3(value)A F0(pairs, of the form)2.5 E F3(name)2.86 E F0(=)A F3 +(value)A F0(.).18 E .438(The shell pro)108 566.4 R .438(vides se)-.15 F +-.15(ve)-.25 G .438(ral w).15 F .438(ays to manipulate the en)-.1 F +2.938(vironment. On)-.4 F(in)2.938 E -.2(vo)-.4 G .438 +(cation, the shell scans its o).2 F .439(wn en-)-.25 F .709(vironment a\ +nd creates a parameter for each name found, automatically marking it fo\ +r)108 578.4 R F3 -.2(ex)3.208 G(port).2 E F0 .708(to child pro-)3.888 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 .332 +(eters and functions to be added to and deleted from the en)108 602.4 R +2.832(vironment. If)-.4 F .332(the v)2.832 F .332 +(alue of a parameter in the en-)-.25 F .131 +(vironment is modi\214ed, the ne)108 614.4 R 2.631(wv)-.25 G .131 +(alue becomes part of the en)-2.881 F .132 +(vironment, replacing the old.)-.4 F .132(The en)5.132 F(vironment)-.4 E +.321(inherited by an)108 626.4 R 2.821(ye)-.15 G -.15(xe)-2.971 G .321 +(cuted command consists of the shell').15 F 2.821(si)-.55 G .321 +(nitial en)-2.821 F .32(vironment, whose v)-.4 F .32(alues may be modi-) +-.25 F .533(\214ed in the shell, less an)108 638.4 R 3.033(yp)-.15 G +.534(airs remo)-3.033 F -.15(ve)-.15 G 3.034(db).15 G 3.034(yt)-3.034 G +(he)-3.034 E F1(unset)3.034 E F0 .534(command, plus an)3.034 F 3.034(ya) +-.15 G .534(dditions via the)-3.034 F F1(export)3.034 E F0(and)3.034 E +F1(de-)3.034 E(clar)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 F3 +.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 F2 -.666(PA)2.702 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF +(.)A F0 .202(These assignment statements af)4.702 F .203(fect only the) +-.25 F(en)108 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 +F3(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 5.1)72 768 Q(2020 October 29)141.235 E(36)190.395 E 0 Cg +EP +%%Page: 37 37 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(When)108 84 Q/F1 +10/Times-Bold@0 SF(bash)3.585 E F0(in)3.585 E -.2(vo)-.4 G -.1(ke).2 G +3.585(sa).1 G 3.585(ne)-3.585 G 1.085(xternal command, the v)-3.735 F +(ariable)-.25 E F1(_)3.585 E F0 1.086 +(is set to the full \214lename of the command and)3.586 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 .151 +(The e)108 124.8 R .151(xit status of an e)-.15 F -.15(xe)-.15 G .151 +(cuted command is the v).15 F .15(alue returned by the)-.25 F/F3 10 +/Times-Italic@0 SF(waitpid)2.65 E F0 .15(system call or equi)2.65 F -.25 +(va)-.25 G .15(lent func-).25 F 2.847(tion. Exit)108 136.8 R .347 +(statuses f)2.847 F .347(all between 0 and 255, though, as e)-.1 F .347 +(xplained belo)-.15 F 1.647 -.65(w, t)-.25 H .347(he shell may use v).65 +F .348(alues abo)-.25 F .648 -.15(ve 1)-.15 H(25).15 E(specially)108 +148.8 Q 5.507(.E)-.65 G .507(xit statuses from shell b)-5.507 F .507 +(uiltins and compound commands are also limited to this range.)-.2 F +(Under)5.506 E(certain circumstances, the shell will use special v)108 +160.8 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15 +(Fo)108 177.6 S 3.372(rt).15 G .872(he shell')-3.372 F 3.372(sp)-.55 G +.873(urposes, a command which e)-3.372 F .873(xits with a zero e)-.15 F +.873(xit status has succeeded.)-.15 F .873(An e)5.873 F .873 +(xit status of)-.15 F .049(zero indicates success.)108 189.6 R 2.549(An) +5.049 G .049(on-zero e)-2.549 F .049(xit status indicates f)-.15 F 2.549 +(ailure. When)-.1 F 2.549(ac)2.549 G .048(ommand terminates on a f) +-2.549 F .048(atal sig-)-.1 F(nal)108 201.6 Q F3(N)2.5 E F0(,)A F1(bash) +2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F3(N)A F0(as the e)2.5 E +(xit status.)-.15 E .404 +(If a command is not found, the child process created to e)108 218.4 R +-.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .405 +(If a command is)5.405 F(found b)108 230.4 Q(ut is not e)-.2 E -.15(xe) +-.15 G(cutable, the return status is 126.).15 E(If a command f)108 247.2 +Q(ails because of an error during e)-.1 E +(xpansion or redirection, the e)-.15 E(xit status is greater than zero.) +-.15 E .081(Shell b)108 264 R .081 +(uiltin commands return a status of 0 \()-.2 F F3(true)A F0 2.581(\)i)C +2.581(fs)-2.581 G .08(uccessful, and non-zero \()-2.581 F F3(false)A F0 +2.58(\)i)C 2.58(fa)-2.58 G 2.58(ne)-2.58 G .08(rror occurs while)-2.58 F +(the)108 276 Q 2.967(ye)-.15 G -.15(xe)-3.117 G 2.967(cute. All).15 F +-.2(bu)2.967 G .467(iltins return an e).2 F .468 +(xit status of 2 to indicate incorrect usage, generally in)-.15 F -.25 +(va)-.4 G .468(lid options or).25 F(missing ar)108 288 Q(guments.)-.18 E +F1(Bash)108 304.8 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 316.8 +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 333.6 Q(ALS)-.219 E F0(When)108 345.6 Q F1(bash)2.502 E F0 .002 +(is interacti)2.502 F -.15(ve)-.25 G 2.502(,i).15 G 2.502(nt)-2.502 G +.002(he absence of an)-2.502 F 2.502(yt)-.15 G .002(raps, it ignores) +-2.502 F/F4 9/Times-Bold@0 SF(SIGTERM)2.502 E F0 .002(\(so that)2.252 F +F1 .002(kill 0)2.502 F F0 .002(does not kill an in-)2.502 F(teracti)108 +357.6 Q 1.216 -.15(ve s)-.25 H .916(hell\), and).15 F F4(SIGINT)3.416 E +F0 .915(is caught and handled \(so that the)3.166 F F1(wait)3.415 E F0 +-.2(bu)3.415 G .915(iltin is interruptible\).).2 F .915(In all cases,) +5.915 F F1(bash)108 369.6 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 386.4 +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 +398.4 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 410.4 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 422.4 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 439.2 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 451.2 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 463.2 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 475.2 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 487.2 Q F0(using)2.25 E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A +.166(If the)108 504 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 +516 Q(xits.)-.15 E(If)108 532.8 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 544.8 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 .326 +(via the)108 556.8 R F1(wait)2.826 E F0 -.2(bu)2.826 G .327(iltin, the \ +reception of a signal for which a trap has been set will cause the).2 F +F1(wait)2.827 E F0 -.2(bu)2.827 G .327(iltin to re-).2 F +(turn immediately with an e)108 568.8 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 585.6 Q(OL)-.329 E F3 -.25 +(Jo)108 597.6 S 3.369(bc).25 G(ontr)-3.369 E(ol)-.45 E F0 .868 +(refers to the ability to selecti)3.879 F -.15(ve)-.25 G .868 +(ly stop \().15 F F3(suspend)A F0 3.368(\)t)C .868(he e)-3.368 F -.15 +(xe)-.15 G .868(cution of processes and continue \().15 F F3 -.37(re)C +(-).37 E(sume)108 609.6 Q F0 2.664(\)t)C .164(heir e)-2.664 F -.15(xe) +-.15 G .164(cution at a later point.).15 F 2.665(Au)5.165 G .165 +(ser typically emplo)-2.665 F .165(ys this f)-.1 F .165 +(acility via an interacti)-.1 F .465 -.15(ve i)-.25 H(nterf).15 E .165 +(ace sup-)-.1 F(plied jointly by the operating system k)108 621.6 Q +(ernel')-.1 E 2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 +G(nd)-2.5 E F1(bash)2.5 E F0(.)A .785(The shell associates a)108 638.4 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 .324(listed with the)108 650.4 R F1 +(jobs)2.824 E F0 2.824(command. When)2.824 F F1(bash)2.825 E F0 .325 +(starts a job asynchronously \(in the)2.825 F F3(bac)3.095 E(kgr)-.2 E +(ound)-.45 E F0 .325(\), it prints a line).77 F(that looks lik)108 662.4 +Q(e:)-.1 E([1] 25647)144 679.2 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 696 R .732(with this job is 25647.)108 708 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 720 Q F3(job) +4.24 E F0(abstraction as the basis for job control.)2.73 E(GNU Bash 5.1) +72 768 Q(2020 October 29)141.235 E(37)190.395 E 0 Cg EP +%%Page: 38 38 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.982 -.8(To f)108 +84 T .382(acilitate the implementation of the user interf).7 F .382 +(ace to job control, the operating system maintains the no-)-.1 F 1.537 +(tion of a)108 96 R/F1 10/Times-Italic@0 SF(curr)4.037 E 1.537 +(ent terminal pr)-.37 F 1.537(ocess gr)-.45 F 1.537(oup ID)-.45 F F0 +6.537(.M)C 1.538(embers of this process group \(processes whose process) +-6.537 F .023 +(group ID is equal to the current terminal process group ID\) recei)108 +108 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 +(board-generated signals such as).15 F/F2 9/Times-Bold@0 SF(SIG-)2.522 E +(INT)108 120 Q/F3 9/Times-Roman@0 SF(.)A F0 1.215 +(These processes are said to be in the)5.715 F F1(for)5.685 E -.4(eg) +-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F1(Bac)6.795 E(kgr)-.2 E(ound) +-.45 E F0 1.216(processes are those whose process)4.485 F .146 +(group ID dif)108 132 R .146(fers from the terminal')-.25 F .146 +(s; such processes are immune to k)-.55 F -.15(ey)-.1 G .145 +(board-generated signals.).15 F .145(Only fore-)5.145 F .16 +(ground processes are allo)108 144 R .16(wed to read from or)-.25 F 2.66 +(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F4 10 +/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter) +-2.66 F(-)-.2 E 3.052(minal. Background)108 156 R .551 +(processes which attempt to read from \(write to when)3.052 F F4 .551 +(stty tostop)3.051 F F0 .551(is in ef)3.051 F .551(fect\) the)-.25 F +.717(terminal are sent a)108 168 R F2 .717(SIGTTIN \(SIGTT)3.217 F(OU\)) +-.162 E F0 .718(signal by the k)2.967 F(ernel')-.1 E 3.218(st)-.55 G +.718(erminal dri)-3.218 F -.15(ve)-.25 G 1.518 -.4(r, w).15 H .718 +(hich, unless caught, sus-).4 F(pends the process.)108 180 Q 1.088 +(If the operating system on which)108 196.8 R/F5 10/Times-Bold@0 SF +(bash)3.588 E F0 1.088(is running supports job control,)3.588 F F5(bash) +3.587 E F0 1.087(contains f)3.587 F 1.087(acilities to use it.)-.1 F -.8 +(Ty)108 208.8 S .301(ping the).8 F F1(suspend)3.141 E F0 .301 +(character \(typically)3.571 F F5(^Z)2.801 E F0 2.801(,C)C .301 +(ontrol-Z\) while a process is running causes that process to be)-2.801 +F 2.143(stopped and returns control to)108 220.8 R F5(bash)4.642 E F0 +7.142(.T)C 2.142(yping the)-7.942 F F1 2.142(delayed suspend)4.992 F F0 +2.142(character \(typically)5.412 F F5(^Y)4.642 E F0 4.642(,C)C +(ontrol-Y\))-4.642 E .021(causes the process to be stopped when it atte\ +mpts to read input from the terminal, and control to be returned)108 +232.8 R(to)108 244.8 Q F5(bash)3.392 E F0 5.892(.T)C .892 +(he user may then manipulate the state of this job, using the)-5.892 F +F5(bg)3.392 E F0 .892(command to continue it in the)3.392 F .17 +(background, the)108 256.8 R F5(fg)2.67 E F0 .17 +(command to continue it in the fore)2.67 F .17(ground, or the)-.15 F F5 +(kill)2.67 E F0 .17(command to kill it.)2.67 F(A)5.17 E F5(^Z)2.67 E F0 +(tak)2.67 E .17(es ef-)-.1 F 1.419(fect immediately)108 268.8 R 3.919 +(,a)-.65 G 1.418(nd has the additional side ef)-3.919 F 1.418 +(fect of causing pending output and typeahead to be dis-)-.25 F(carded.) +108 280.8 Q .777(There are a number of w)108 297.6 R .777 +(ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F5 +(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 309.6 +Q F1(jobspec)A F0 3.458(\). Job)B(number)3.458 E F1(n)3.818 E F0 .957 +(may be referred to as)3.697 F F5(%n)3.457 E F0 5.957(.A)C .957 +(job may also be referred to using a pre\214x of the)-2.5 F .59(name us\ +ed to start it, or using a substring that appears in its command line.) +108 321.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F5(%ce)3.09 E +F0 .59(refers to a)3.09 F .385(stopped job whose command name be)108 +333.6 R .385(gins with)-.15 F F5(ce)2.885 E F0 5.385(.I)C 2.885(fap) +-5.385 G .385(re\214x matches more than one job,)-2.885 F F5(bash)2.885 +E F0 .385(reports an)2.885 F(error)108 345.6 Q 5.194(.U)-.55 G(sing) +-5.194 E F5(%?ce)2.694 E F0 2.694(,o)C 2.694(nt)-2.694 G .194 +(he other hand, refers to an)-2.694 F 2.694(yj)-.15 G .194 +(ob containing the string)-2.694 F F5(ce)2.694 E F0 .194 +(in its command line.)2.694 F .194(If the)5.194 F .306 +(substring matches more than one job,)108 357.6 R F5(bash)2.806 E F0 +.306(reports an error)2.806 F 5.306(.T)-.55 G .306(he symbols)-5.306 F +F5(%%)2.806 E F0(and)2.806 E F5(%+)2.806 E F0 .306(refer to the shell') +2.806 F(s)-.55 E .132(notion of the)108 369.6 R F1(curr)2.832 E .133 +(ent job)-.37 F F0 2.633(,w).23 G .133 +(hich is the last job stopped while it w)-2.633 F .133(as in the fore) +-.1 F .133(ground or started in the back-)-.15 F 2.576(ground. The)108 +381.6 R F1(pr)3.826 E -.15(ev)-.37 G .076(ious job).15 F F0 .076 +(may be referenced using)2.806 F F5<25ad>2.576 E F0 5.076(.I)C 2.576(ft) +-5.076 G .075(here is only a single job,)-2.576 F F5(%+)2.575 E F0(and) +2.575 E F5<25ad>2.575 E F0 .075(can both)2.575 F .317 +(be used to refer to that job)108 393.6 R 5.317(.I)-.4 G 2.817(no)-5.317 +G .317(utput pertaining to jobs \(e.g., the output of the)-2.817 F F5 +(jobs)2.817 E F0 .317(command\), the current)2.817 F .033(job is al)108 +405.6 R -.1(wa)-.1 G .033(ys \215agged with a).1 F F5(+)2.533 E F0 2.533 +(,a)C .033(nd the pre)-2.533 F .033(vious job with a)-.25 F F52.533 +E F0 5.033(.A)C .033(single % \(with no accompan)-2.5 F .032 +(ying job speci-)-.15 F(\214cation\) also refers to the current job)108 +417.6 Q(.)-.4 E .443 +(Simply naming a job can be used to bring it into the fore)108 434.4 R +(ground:)-.15 E F5(%1)2.944 E F0 .444(is a synon)2.944 F .444(ym for) +-.15 F F5 -.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 +446.4 R 3.973(ground. Similarly)-.15 F(,)-.65 E F5 -.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 458.4 Q -.25(va)-.25 G(lent to).25 E F5 -.63(``)2.5 G(bg %1') +.63 E(')-.63 E F0(.)A .13(The shell learns immediately whene)108 475.2 R +-.15(ve)-.25 G 2.63(raj).15 G .13(ob changes state.)-2.63 F(Normally) +5.131 E(,)-.65 E F5(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 487.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 F52.657 E F0 .157 +(option to)2.657 F(the)108 499.2 Q F5(set)2.647 E F0 -.2(bu)2.647 G .147 +(iltin command is enabled,).2 F F5(bash)2.647 E F0 .148 +(reports such changes immediately)2.648 F 5.148(.A)-.65 G .448 -.15 +(ny t)-5.148 H .148(rap on).15 F F2(SIGCHLD)2.648 E F0 .148(is e)2.398 F +-.15(xe)-.15 G(-).15 E(cuted for each child that e)108 511.2 Q(xits.) +-.15 E .033(If an attempt to e)108 528 R(xit)-.15 E F5(bash)2.533 E F0 +.033(is made while jobs are stopped \(or)2.533 F 2.532(,i)-.4 G 2.532 +(ft)-2.532 G(he)-2.532 E F5(checkjobs)2.532 E F0 .032 +(shell option has been enabled)2.532 F 1.002(using the)108 540 R F5 +(shopt)3.502 E F0 -.2(bu)3.502 G 1.002 +(iltin, running\), the shell prints a w).2 F 1.002 +(arning message, and, if the)-.1 F F5(checkjobs)3.503 E F0 1.003 +(option is en-)3.503 F .956(abled, lists the jobs and their statuses.) +108 552 R(The)5.955 E F5(jobs)3.455 E F0 .955 +(command may then be used to inspect their status.)3.455 F .955(If a) +5.955 F .603(second attempt to e)108 564 R .604 +(xit is made without an interv)-.15 F .604 +(ening command, the shell does not print another w)-.15 F(arning,)-.1 E +(and an)108 576 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E .645 +(When the shell is w)108 592.8 R .645 +(aiting for a job or process using the)-.1 F F5(wait)3.144 E F0 -.2(bu) +3.144 G .644(iltin, and job control is enabled,).2 F F5(wait)3.144 E F0 +(will)3.144 E .282(return when the job changes state. The)108 604.8 R F5 +2.782 E F0 .282(option causes)2.782 F F5(wait)2.782 E F0 .282 +(to w)2.782 F .282(ait until the job or process terminates be-)-.1 F +(fore returning.)108 616.8 Q/F6 10.95/Times-Bold@0 SF(PR)72 633.6 Q +(OMPTING)-.329 E F0 .645(When e)108 645.6 R -.15(xe)-.15 G .645 +(cuting interacti).15 F -.15(ve)-.25 G(ly).15 E(,)-.65 E F5(bash)3.145 E +F0 .645(displays the primary prompt)3.145 F F2(PS1)3.145 E F0 .645 +(when it is ready to read a command,)2.895 F .427 +(and the secondary prompt)108 657.6 R F2(PS2)2.927 E F0 .427 +(when it needs more input to complete a command.)2.677 F F5(Bash)5.428 E +F0(displays)2.928 E F2(PS0)2.928 E F0(after)2.678 E .038 +(it reads a command b)108 669.6 R .038(ut before e)-.2 F -.15(xe)-.15 G +.038(cuting it.).15 F F5(Bash)5.038 E F0(displays)2.537 E F2(PS4)2.537 E +F0 .037(as described abo)2.287 F .337 -.15(ve b)-.15 H .037 +(efore tracing each com-).15 F 1.121(mand when the)108 681.6 R F5 +3.621 E F0 1.122(option is enabled.)3.621 F F5(Bash)6.122 E F0(allo) +3.622 E 1.122(ws these prompt strings to be customized by inserting a) +-.25 F(number of backslash-escaped special characters that are decoded \ +as follo)108 693.6 Q(ws:)-.25 E F5(\\a)144 705.6 Q F0 +(an ASCII bell character \(07\))180 705.6 Q F5(\\d)144 717.6 Q F0 +(the date in "W)180 717.6 Q(eekday Month Date" format \(e.g., "T)-.8 E +(ue May 26"\))-.45 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(38) +190.395 E 0 Cg EP +%%Page: 39 39 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(\\D{)144 84 Q/F2 10/Times-Italic@0 SF(format)A F1(})A F0(the)180 96 Q +F2(format)3.927 E F0 1.427(is passed to)3.927 F F2(strftime)3.927 E F0 +1.427(\(3\) and the result is inserted into the prompt string; an)B +(empty)180 108 Q F2(format)2.5 E F0 +(results in a locale-speci\214c time representation.)2.5 E +(The braces are required)5 E F1(\\e)144 120 Q F0 +(an ASCII escape character \(033\))180 120 Q F1(\\h)144 132 Q F0 +(the hostname up to the \214rst `.)180 132 Q(')-.7 E F1(\\H)144 144 Q F0 +(the hostname)180 144 Q F1(\\j)144 156 Q F0 +(the number of jobs currently managed by the shell)180 156 Q F1(\\l)144 +168 Q F0(the basename of the shell')180 168 Q 2.5(st)-.55 G(erminal de) +-2.5 E(vice name)-.25 E F1(\\n)144 180 Q F0(ne)180 180 Q(wline)-.25 E F1 +(\\r)144 192 Q F0(carriage return)180 192 Q F1(\\s)144 204 Q F0 +(the name of the shell, the basename of)180 204 Q F1($0)2.5 E F0 +(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F1(\\t)144 +216 Q F0(the current time in 24-hour HH:MM:SS format)180 216 Q F1(\\T) +144 228 Q F0(the current time in 12-hour HH:MM:SS format)180 228 Q F1 +(\\@)144 240 Q F0(the current time in 12-hour am/pm format)180 240 Q F1 +(\\A)144 252 Q F0(the current time in 24-hour HH:MM format)180 252 Q F1 +(\\u)144 264 Q F0(the username of the current user)180 264 Q F1(\\v)144 +276 Q F0(the v)180 276 Q(ersion of)-.15 E F1(bash)2.5 E F0 +(\(e.g., 2.00\))2.5 E F1(\\V)144 288 Q F0(the release of)180 288 Q F1 +(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5 +(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 300 Q F0 .115(the current w) +180 300 R .115(orking directory)-.1 F 2.615(,w)-.65 G(ith)-2.615 E/F3 9 +/Times-Bold@0 SF($HOME)2.615 E F0(abbre)2.365 E .116 +(viated with a tilde \(uses the v)-.25 F .116(alue of the)-.25 F F3(PR) +180 312 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E +F1(\\W)144 324 Q F0(the basename of the current w)180 324 Q +(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F3($HOME)2.5 E F0 +(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 336 Q F0 +(the history number of this command)180 336 Q F1(\\#)144 348 Q F0 +(the command number of this command)180 348 Q F1(\\$)144 360 Q F0 +(if the ef)180 360 Q(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 372 Q F2(nnn) +A F0(the character corresponding to the octal number)180 372 Q F2(nnn) +2.5 E F1(\\\\)144 384 Q F0 2.5(ab)180 384 S(ackslash)-2.5 E F1(\\[)144 +396 Q F0(be)180 396 Q 1.257(gin a sequence of non-printing characters, \ +which could be used to embed a terminal)-.15 F +(control sequence into the prompt)180 408 Q F1(\\])144 420 Q F0 +(end a sequence of non-printing characters)180 420 Q .119 +(The command number and the history number are usually dif)108 436.8 R +.12(ferent: the history number of a command is its)-.25 F .547(position\ + in the history list, which may include commands restored from the hist\ +ory \214le \(see)108 448.8 R F3(HIST)3.046 E(OR)-.162 E(Y)-.315 E F0 +(be-)2.796 E(lo)108 460.8 Q .354(w\), while the command number is the p\ +osition in the sequence of commands e)-.25 F -.15(xe)-.15 G .355 +(cuted during the current).15 F .823(shell session.)108 472.8 R .822 +(After the string is decoded, it is e)5.823 F .822 +(xpanded via parameter e)-.15 F .822(xpansion, command substitution,) +-.15 F .682(arithmetic e)108 484.8 R .682(xpansion, and quote remo)-.15 +F -.25(va)-.15 G .682(l, subject to the v).25 F .683(alue of the)-.25 F +F1(pr)3.183 E(omptv)-.18 E(ars)-.1 E F0 .683(shell option \(see the de-) +3.183 F 1.198(scription of the)108 496.8 R F1(shopt)3.698 E F0 1.198 +(command under)3.698 F F3 1.197(SHELL B)3.697 F(UIL)-.09 E 1.197 +(TIN COMMANDS)-.828 F F0(belo)3.447 E 3.697(w\). This)-.25 F 1.197 +(can ha)3.697 F 1.497 -.15(ve u)-.2 H(nw).15 E(anted)-.1 E .322(side ef) +108 508.8 R .322(fects if escaped portions of the string appear within \ +command substitution or contain characters spe-)-.25 F(cial to w)108 +520.8 Q(ord e)-.1 E(xpansion.)-.15 E/F4 10.95/Times-Bold@0 SF(READLINE) +72 537.6 Q F0 .151 +(This is the library that handles reading input when using an interacti) +108 549.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 .384(is gi)108 561.6 R -.15 +(ve)-.25 G 2.884(na).15 G 2.884(ts)-2.884 G .384(hell in)-2.884 F -.2 +(vo)-.4 G 2.884(cation. Line).2 F .384 +(editing is also used when using the)2.884 F F12.885 E F0 .385 +(option to the)2.885 F F1 -.18(re)2.885 G(ad).18 E F0 -.2(bu)2.885 G +2.885(iltin. By).2 F(de-)2.885 E -.1(fa)108 573.6 S 1.407 +(ult, the line editing commands are similar to those of Emacs.).1 F +3.906(Av)6.406 G 1.406(i-style line editing interf)-3.906 F 1.406 +(ace is also)-.1 F -.2(av)108 585.6 S 3.35(ailable. Line)-.05 F .85 +(editing can be enabled at an)3.35 F 3.35(yt)-.15 G .85(ime using the) +-3.35 F F1 .85(\255o emacs)3.35 F F0(or)3.35 E F1 .85(\255o vi)3.35 F F0 +.85(options to the)3.35 F F1(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E +(\(see)108 597.6 Q F3 .763(SHELL B)3.263 F(UIL)-.09 E .763(TIN COMMANDS) +-.828 F F0(belo)3.013 E 3.263(w\). T)-.25 F 3.263(ot)-.8 G .763(urn of) +-3.263 F 3.263(fl)-.25 G .763 +(ine editing after the shell is running, use the)-3.263 F F1(+o)3.262 E +(emacs)108 609.6 Q F0(or)2.5 E F1(+o vi)2.5 E F0(options to the)2.5 E F1 +(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(Readline Notation)87 626.4 Q +F0 .463(In this section, the Emacs-style notation is used to denote k) +108 638.4 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke) +2.963 G .463(ys are denoted by C\255)-.05 F F2 -.1(ke)C(y)-.2 E F0(,)A +1.153(e.g., C\255n means Control\255N.)108 650.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 662.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 674.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 686.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 .595(Readline commands may be gi)108 703.2 R -.15(ve)-.25 G 3.096 +(nn).15 G(umeric)-3.096 E F2(ar)3.426 E(guments)-.37 E F0 3.096(,w).27 G +.596(hich normally act as a repeat count.)-3.096 F(Sometimes,)5.596 E +(ho)108 715.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 2.938(acts in the forw)108 727.2 R 2.938 +(ard direction \(e.g.,)-.1 F F1(kill\255line)5.438 E F0 5.438(\)c)C +2.938(auses that command to act in a backw)-5.438 F 2.938 +(ard direction.)-.1 F(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E +(39)190.395 E 0 Cg EP +%%Page: 40 40 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(Commands whose beha)108 84 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 100.8 R/F1 10/Times-Italic@0 SF +(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 F1 +(yank-)-3.311 E(ing)108 112.8 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 F1 +.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 124.8 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 136.8 Q/F2 10/Times-Bold@0 SF(Readline Initialization)87 153.6 Q F0 +.091(Readline is customized by putting commands in an initialization \ +\214le \(the)108 165.6 R F1(inputr)2.591 E(c)-.37 E F0 2.591 +(\214le\). The)2.591 F .092(name of this \214le)2.591 F .573(is tak)108 +177.6 R .573(en from the v)-.1 F .573(alue of the)-.25 F/F3 9 +/Times-Bold@0 SF(INPUTRC)3.073 E F0 -.25(va)2.823 G 3.073(riable. If).25 +F .573(that v)3.073 F .573(ariable is unset, the def)-.25 F .573 +(ault is)-.1 F F1(~/.inputr)2.573 E(c)-.37 E F0 5.572(.I).31 G 3.072(ft) +-5.572 G(hat)-3.072 E 3.061(\214le does)108 189.6 R .561(not e)3.061 F +.562(xist or cannot be read, the ultimate def)-.15 F .562(ault is)-.1 F +F1(/etc/inputr)4.212 E(c)-.37 E F0 5.562(.W).31 G .562 +(hen a program which uses the)-5.562 F .175(readline library starts up,\ + the initialization \214le is read, and the k)108 201.6 R .474 -.15 +(ey b)-.1 H .174(indings and v).15 F .174(ariables are set.)-.25 F .174 +(There are)5.174 F .238(only a fe)108 213.6 R 2.738(wb)-.25 G .238 +(asic constructs allo)-2.738 F .239 +(wed in the readline initialization \214le.)-.25 F .239 +(Blank lines are ignored.)5.239 F .239(Lines be)5.239 F(gin-)-.15 E .554 +(ning with a)108 225.6 R F2(#)3.054 E F0 .554(are comments.)3.054 F .554 +(Lines be)5.554 F .554(ginning with a)-.15 F F2($)3.054 E F0 .554 +(indicate conditional constructs.)3.054 F .553(Other lines denote)5.553 +F -.1(ke)108 237.6 S 2.5(yb)-.05 G(indings and v)-2.5 E +(ariable settings.)-.25 E .986(The def)108 254.4 R .986(ault k)-.1 F +-.15(ey)-.1 G .987(-bindings may be changed with an).15 F F1(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 266.4 Q +(wn commands and bindings.)-.25 E -.15(Fo)108 283.2 S 2.5(re).15 G +(xample, placing)-2.65 E(M\255Control\255u: uni)144 300 Q -.15(ve)-.25 G +(rsal\255ar).15 E(gument)-.18 E(or)108 312 Q(C\255Meta\255u: uni)144 324 +Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 336 Q F1 +(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.58 E(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.011(The follo) +108 352.8 R 1.011(wing symbolic character names are recognized:)-.25 F +F1 -.4(RU)3.511 G(BOUT).4 E F0(,)1.27 E F1(DEL)4.091 E F0(,).53 E F1 +(ESC)4.021 E F0(,).72 E F1(LFD)4.091 E F0(,).28 E F1(NEWLINE)4.21 E F0 +(,).73 E F1(RET)4.14 E F0(,)1.27 E F1(RETURN)108.63 364.8 Q F0(,)1.1 E +F1(SPC)2.83 E F0(,).72 E F1(SP)2.83 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 381.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 393.6 Q F1(macr)2.5 E(o)-.45 E F0(\).)A F2 +(Readline K)87 410.4 Q(ey Bindings)-.25 E F0 .366 +(The syntax for controlling k)108 422.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 .263(command or the te)108 434.4 R .264(xt of a macro and a k) +-.15 F .564 -.15(ey s)-.1 H .264(equence to which it should be bound.) +.15 F .264(The name may be speci-)5.264 F .139(\214ed in one of tw)108 +446.4 R 2.638(ow)-.1 G .138(ays: as a symbolic k)-2.738 F .438 -.15 +(ey n)-.1 H .138(ame, possibly with).15 F F1(Meta\255)2.638 E F0(or) +2.638 E F1(Contr)2.638 E(ol\255)-.45 E F0(pre\214x)2.638 E .138 +(es, or as a k)-.15 F .438 -.15(ey s)-.1 H(e-).15 E(quence.)108 458.4 Q +.16(When using the form)108 475.2 R F2 -.1(ke)2.66 G(yname).1 E F0(:)A +F1(function\255name).833 E F0(or)2.66 E F1(macr)2.66 E(o)-.45 E F0(,)A +F1 -.1(ke)2.66 G(yname)-.2 E F0 .161(is the name of a k)2.84 F .461 -.15 +(ey s)-.1 H .161(pelled out in Eng-).15 F 2.5(lish. F)108 487.2 R(or e) +-.15 E(xample:)-.15 E(Control-u: uni)144 511.2 Q -.15(ve)-.25 G +(rsal\255ar).15 E(gument)-.18 E(Meta-Rubout: backw)144 523.2 Q +(ard-kill-w)-.1 E(ord)-.1 E(Control-o: "> output")144 535.2 Q .699 +(In the abo)108 552 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 564 Q F2(backward\255kill\255w) +2.758 E(ord)-.1 E F0 2.758(,a)C(nd)-2.758 E F1(C\255o)2.598 E F0 .258 +(is bound to run the macro e)2.938 F .259 +(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108 +576 Q(xt)-.15 E/F4 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 +(into the line\).)2.5 E .056(In the second form,)108 592.8 R F2("k)2.556 +E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr) +2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055 +(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15 +(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284 +(denoting an entire k)108 604.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 .386(GNU Emacs style k)108 616.8 R .686 -.15(ey e)-.1 H +.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385 +(xample, b)-.15 F .385(ut the symbolic character names)-.2 F +(are not recognized.)108 628.8 Q("\\C\255u": uni)144 652.8 Q -.15(ve) +-.25 G(rsal\255ar).15 E(gument)-.18 E +("\\C\255x\\C\255r": re\255read\255init\255\214le)144 664.8 Q +("\\e[11~": "Function K)144 676.8 Q .3 -.15(ey 1)-.25 H(").15 E .314 +(In this e)108 693.6 R(xample,)-.15 E F1(C\255u)2.654 E F0 .314(is ag) +3.064 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 +.315(is bound to the func-)3.545 F(tion)108 705.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 F4 +(Function Key 1)2.5 E F0(.)A +(The full set of GNU Emacs style escape sequences is)108 722.4 Q +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(40)190.395 E 0 Cg EP +%%Page: 41 41 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF<5c43ad>144 84 Q F0(control pre\214x)180 84 Q F1<5c4dad>144 96 Q F0 +(meta pre\214x)180 96 Q F1(\\e)144 108 Q F0(an escape character)180 108 +Q F1(\\\\)144 120 Q F0(backslash)180 120 Q F1(\\")144 132 Q F0 +(literal ")180 132 Q F1<5c08>144 144 Q F0(literal \010)180 144 Q(In add\ +ition to the GNU Emacs style escape sequences, a second set of backslas\ +h escapes is a)108 160.8 Q -.25(va)-.2 G(ilable:).25 E F1(\\a)144 172.8 +Q F0(alert \(bell\))180 172.8 Q F1(\\b)144 184.8 Q F0(backspace)180 +184.8 Q F1(\\d)144 196.8 Q F0(delete)180 196.8 Q F1(\\f)144 208.8 Q F0 +(form feed)180 208.8 Q F1(\\n)144 220.8 Q F0(ne)180 220.8 Q(wline)-.25 E +F1(\\r)144 232.8 Q F0(carriage return)180 232.8 Q F1(\\t)144 244.8 Q F0 +(horizontal tab)180 244.8 Q F1(\\v)144 256.8 Q F0 -.15(ve)180 256.8 S +(rtical tab).15 E F1(\\)144 268.8 Q/F2 10/Times-Italic@0 SF(nnn)A F0 +(the eight-bit character whose v)180 268.8 Q(alue is the octal v)-.25 E +(alue)-.25 E F2(nnn)2.5 E F0(\(one to three digits\))2.5 E F1(\\x)144 +280.8 Q F2(HH)A F0(the eight-bit character whose v)180 280.8 Q +(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 +(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.142 +(When entering the te)108 297.6 R 1.141(xt of a macro, single or double\ + quotes must be used to indicate a macro de\214nition.)-.15 F .089 +(Unquoted te)108 309.6 R .089(xt is assumed to be a function name.)-.15 +F .09(In the macro body)5.089 F 2.59(,t)-.65 G .09 +(he backslash escapes described abo)-2.59 F -.15(ve)-.15 G(are e)108 +321.6 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G +(ther character in the macro te)-2.5 E(xt, including " and \010.)-.15 E +F1(Bash)108 338.4 Q F0(allo)2.93 E .43(ws the current readline k)-.25 F +.73 -.15(ey b)-.1 H .429(indings to be displayed or modi\214ed with the) +.15 F F1(bind)2.929 E F0 -.2(bu)2.929 G .429(iltin command.).2 F .045 +(The editing mode may be switched during interacti)108 350.4 R .345 -.15 +(ve u)-.25 H .046(se by using the).15 F F12.546 E F0 .046 +(option to the)2.546 F F1(set)2.546 E F0 -.2(bu)2.546 G .046 +(iltin command).2 F(\(see)108 362.4 Q/F3 9/Times-Bold@0 SF(SHELL B)2.5 E +(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 +(Readline V)87 379.2 Q(ariables)-.92 E F0 .044(Readline has v)108 391.2 +R .043(ariables that can be used to further customize its beha)-.25 F +(vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043 +(riable may be set in the).25 F F2(inpu-)2.553 E(tr)108 403.2 Q(c)-.37 E +F0(\214le with a statement of the form)2.81 E F1(set)144 420 Q F2 +(variable\255name value)2.5 E F0(or using the)108 432 Q F1(bind)2.5 E F0 +-.2(bu)2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E +(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E .79 +(Except where noted, readline v)108 448.8 R .79(ariables can tak)-.25 F +3.29(et)-.1 G .79(he v)-3.29 F(alues)-.25 E F1(On)3.29 E F0(or)3.29 E F1 +(Off)3.29 E F0 .79(\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).) +.05 F(Unrecog-)5.79 E .449(nized v)108 460.8 R .448 +(ariable names are ignored.)-.25 F .448(When a v)5.448 F .448(ariable v) +-.25 F .448(alue is read, empty or null v)-.25 F .448 +(alues, "on" \(case-insensi-)-.25 F(ti)108 472.8 Q -.15(ve)-.25 G .467 +(\), and "1" are equi).15 F -.25(va)-.25 G .468(lent to).25 F F1(On) +2.968 E F0 5.468(.A)C .468(ll other v)-5.468 F .468(alues are equi)-.25 +F -.25(va)-.25 G .468(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .468 +(he v)-5.468 F .468(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 +484.8 S(lues are:).25 E F1(bell\255style \(audible\))108 501.6 Q F0 .011 +(Controls what happens when readline w)144 513.6 R .011 +(ants to ring the terminal bell.)-.1 F .01(If set to)5.01 F F1(none)2.51 +E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94 +(rings the bell.)144 525.6 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 537.6 Q 2.5(sb)-.55 G(ell.) +-2.5 E F1(bind\255tty\255special\255chars \(On\))108 549.6 Q F0 .056 +(If set to)144 561.6 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempt\ +s to bind the control characters treated specially by the k)-2.556 F +(ernel')-.1 E 2.555(st)-.55 G(ermi-)-2.555 E(nal dri)144 573.6 Q -.15 +(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va) +-.25 G(lents.).25 E F1(blink\255matching\255par)108 585.6 Q(en \(Off\)) +-.18 E F0 .21(If set to)144 597.6 R F1(On)2.71 E F0 2.71(,r)C .21 +(eadline attempts to brie\215y mo)-2.71 F .51 -.15(ve t)-.15 H .21 +(he cursor to an opening parenthesis when a closing).15 F +(parenthesis is inserted.)144 609.6 Q F1(color)108 621.6 Q +(ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to) +144 633.6 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, r\ +eadline displays the common pre\214x of the set of possible)-3.015 F +2.935(completions using a dif)144 645.6 R 2.935(ferent color)-.25 F +7.936(.T)-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.936 +(en from the v)-.1 F 2.936(alue of the)-.25 F F1(LS_COLORS)144 657.6 Q +F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 669.6 Q +(ed\255stats \(Off\))-.18 E F0 1.58(If set to)144 681.6 R F1(On)4.08 E +F0 4.08(,r)C 1.579(eadline displays possible completions using dif)-4.08 +F 1.579(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144 +693.6 R(color de\214nitions are tak)2.5 E(en from the v)-.1 E +(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E +(ariable.)-.25 E F1(comment\255begin \(`)108 705.6 Q(`#')-.63 E('\))-.63 +E F0 .884(The string that is inserted when the readline)144 717.6 R F1 +(insert\255comment)3.385 E F0 .885(command is e)3.385 F -.15(xe)-.15 G +3.385(cuted. This).15 F(com-)3.385 E(mand is bound to)144 729.6 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(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 +E(41)190.395 E 0 Cg EP +%%Page: 42 42 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(completion\255display\255width \(\2551\))108 84 Q F0 1.453(The numbe\ +r of screen columns used to display possible matches when performing co\ +mpletion.)144 96 R .193(The v)144 108 R .193(alue is ignored if it is l\ +ess than 0 or greater than the terminal screen width.)-.25 F 2.694(Av) +5.194 G .194(alue of 0 will)-2.944 F +(cause matches to be displayed one per line.)144 120 Q(The def)5 E +(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 132 Q +(e\255case \(Off\))-.18 E F0(If set to)144 144 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\255map\255case \(Off\))108 156 Q F0 .094(If set to)144 168 R +F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor)2.593 E +(e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F .093 +(yphens \()-.05 F/F2 10/Times-Italic@0 SFA F0 2.593(\)a)C .093 +(nd underscores)-2.593 F(\()144 180 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G +(qui)-2.5 E -.25(va)-.25 G(lent when performing case\255insensiti).25 E +.3 -.15(ve \214)-.25 H(lename matching and completion.).15 E F1 +(completion\255pr)108 192 Q(e\214x\255display\255length \(0\))-.18 E F0 +.829(The length in characters of the common pre\214x of a list of possi\ +ble completions that is displayed)144 204 R 1.275 +(without modi\214cation.)144 216 R 1.275(When set to a v)6.275 F 1.274 +(alue greater than zero, common pre\214x)-.25 F 1.274 +(es longer than this)-.15 F -.25(va)144 228 S(lue are replaced with an \ +ellipsis when displaying possible completions.).25 E F1 +(completion\255query\255items \(100\))108 240 Q F0 .529 +(This determines when the user is queried about vie)144 252 R .53 +(wing the number of possible completions gen-)-.25 F .561(erated by the) +144 264 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 276 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 288 S .368 +(riable, readline will ask whether or not the user wishes to vie).25 F +2.867(wt)-.25 G .367(hem; otherwise the)-2.867 F 2.867(ya)-.15 G .367 +(re simply)-2.867 F(listed on the terminal.)144 300 Q F1(con)108 312 Q +-.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 324 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 336 R .541(fect, using escape as the)-.25 F F2 .541(meta pr)3.041 F +(e-)-.37 E<8c78>144 348 Q F0 2.5(\). The)B(def)2.5 E(ault is)-.1 E F2 +(On)2.5 E F0 2.5(,b)C(ut readline will set it to)-2.7 E F2(Of)2.5 E(f) +-.18 E F0(if the locale contains eight-bit characters.)2.5 E F1 +(disable\255completion \(Off\))108 360 Q F0 .038(If set to)144 372 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 384 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 +(.)A F1(echo\255contr)108 396 Q(ol\255characters \(On\))-.18 E F0 1.211 +(When set to)144 408 R F1(On)3.711 E F0 3.711(,o)C 3.711(no)-3.711 G +1.211(perating systems that indicate the)-3.711 F 3.711(ys)-.15 G 1.21 +(upport it, readline echoes a character)-3.711 F +(corresponding to a signal generated from the k)144 420 Q -.15(ey)-.1 G +(board.).15 E F1(editing\255mode \(emacs\))108 432 Q F0 .141 +(Controls whether readline be)144 444 R .141(gins with a set of k)-.15 F +.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.642 E F0 +(or)2.642 E F2(vi)2.642 E F0(.)A F1(editing\255mode)5.142 E F0 +(can be set to either)144 456 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E +F0(.)A F1(emacs\255mode\255string \(@\))108 468 Q F0 .518(If the)144 480 +R F2(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F0 -.25(va)3.018 G +.517(riable is enabled, this string is displayed immediately before the) +.25 F .622 +(last line of the primary prompt when emacs editing mode is acti)144 492 +R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F +.622(xpanded lik)-.15 F 3.122(ea)-.1 G -.1(ke)144 504 S 3.34(yb)-.05 G +.839(inding, so the standard set of meta- and control pre\214x)-3.34 F +.839(es and backslash escape sequences is)-.15 F -.2(av)144 516 S 2.798 +(ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F .298 +(gin and end sequences of non-printing characters, which)-.15 F +(can be used to embed a terminal control sequence into the mode string.) +144 528 Q F1(enable\255brack)108 540 Q(eted\255paste \(On\))-.1 E F0 +1.222(When set to)144 552 R F1(On)3.721 E F0 3.721(,r)C 1.221 +(eadline will con\214gure the terminal in a w)-3.721 F 1.221 +(ay that will enable it to insert each)-.1 F .353 +(paste into the editing b)144 564 R(uf)-.2 E .353(fer as a single strin\ +g of characters, instead of treating each character as if)-.25 F .544 +(it had been read from the k)144 576 R -.15(ey)-.1 G 3.043(board. This) +.15 F .543(can pre)3.043 F -.15(ve)-.25 G .543 +(nt pasted characters from being interpreted as).15 F(editing commands.) +144 588 Q 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(enable\255meta\255k)108 636 Q(ey \(On\))-.1 E F0 .64 +(When set to)144 648 R F1(On)3.14 E F0 3.14(,r)C .64 +(eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64 +(eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64 +(he terminal claims to support).15 F(when it is called.)144 660 Q +(On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H +2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1 +(expand\255tilde \(Off\))108 672 Q F0(If set to)144 684 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 696 Q(eser)-.18 E -.1 +(ve)-.1 G(\255point \(Off\)).1 E F0 .552(If set to)144 708 R F1(On)3.052 +E F0 3.052(,t)C .552(he history code attempts to place point at the sam\ +e location on each history line re-)-3.052 F(trie)144 720 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(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(42)190.395 E 0 Cg EP +%%Page: 43 43 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(history\255size \(unset\))108 84 Q F0 .949 +(Set the maximum number of history entries sa)144 96 R -.15(ve)-.2 G +3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .948 +(If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598 E .482 +(history entries are deleted and no ne)144 108 R 2.982(we)-.25 G .483 +(ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483(set to a v) +2.983 F .483(alue less than zero, the num-)-.25 F .278 +(ber of history entries is not limited.)144 120 R .277(By def)5.278 F +.277(ault, the number of history entries is set to the v)-.1 F .277 +(alue of)-.25 F(the)144 132 Q F1(HISTSIZE)3.41 E F0 .91(shell v)3.41 F +3.41(ariable. If)-.25 F .911(an attempt is made to set)3.41 F/F2 10 +/Times-Italic@0 SF(history\255size)3.411 E F0 .911(to a non-numeric v) +3.411 F(alue,)-.25 E +(the maximum number of history entries will be set to 500.)144 144 Q F1 +(horizontal\255scr)108 156 Q(oll\255mode \(Off\))-.18 E F0 .449 +(When set to)144 168 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448 +(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .448 +(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 180 R(w)-.25 E 2.5(line. This)144 192 R +(setting is automatically enabled for terminals of height 1.)2.5 E F1 +(input\255meta \(Off\))108 204 Q F0 1.062(If set to)144 216 R F1(On) +3.562 E F0 3.562(,r)C 1.061(eadline will enable eight-bit input \(that \ +is, it will not strip the eighth bit from the)-3.562 F .335 +(characters it reads\), re)144 228 R -.05(ga)-.15 G .335 +(rdless of what the terminal claims it can support.).05 F .336(The name) +5.336 F F1(meta\255\215ag)2.836 E F0(is)2.836 E 2.865(as)144 240 S(ynon) +-2.865 E .365(ym for this v)-.15 F 2.864(ariable. The)-.25 F(def)2.864 E +.364(ault is)-.1 F F2(Of)2.864 E(f)-.18 E F0 2.864(,b)C .364 +(ut readline will set it to)-3.064 F F2(On)2.864 E F0 .364 +(if the locale contains)2.864 F(eight-bit characters.)144 252 Q F1 +(isear)108 264 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\)) +-.63 E F0 .439(The string of characters that should terminate an increm\ +ental search without subsequently e)144 276 R -.15(xe)-.15 G(cut-).15 E +.935(ing the character as a command.)144 288 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(ESC)3.434 E F0(and)144 300 Q F2 +(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E F1 -.1(ke) +108 312 S(ymap \(emacs\)).1 E F0 2.02(Set the current readline k)144 324 +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 .042 +(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 336 R F0 2.542(,a)C +(nd)-2.542 E F2(vi\255insert)2.832 E F0(.).68 E F2(vi)5.042 E F0 .042 +(is equi)2.542 F -.25(va)-.25 G .042(lent to).25 F F2(vi\255command) +2.541 E F0(;)A F2(emacs)2.541 E F0 .448(is equi)144 348 R -.25(va)-.25 G +.448(lent to).25 F F2(emacs\255standar)2.948 E(d)-.37 E F0 5.448(.T)C +.448(he def)-5.448 F .448(ault v)-.1 F .449(alue is)-.25 F F2(emacs) +3.139 E F0 2.949(;t).27 G .449(he v)-2.949 F .449(alue of)-.25 F F1 +(editing\255mode)2.949 E F0 .449(also af-)2.949 F(fects the def)144 360 +Q(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)108 372 S +(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration)144 384 R +F2 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367 +(ait for a character when reading an ambiguous k)-.1 F .667 -.15(ey s) +-.1 H(equence).15 E .524(\(one that can form a complete k)144 396 R .824 +-.15(ey s)-.1 H .524(equence using the input read so f).15 F(ar)-.1 E +3.025(,o)-.4 G 3.025(rc)-3.025 G .525(an tak)-3.025 F 3.025(ea)-.1 G +.525(dditional in-)-3.025 F .807(put to complete a longer k)144 408 R +1.106 -.15(ey s)-.1 H 3.306(equence\). If).15 F .806(no input is recei) +3.306 F -.15(ve)-.25 G 3.306(dw).15 G .806(ithin the timeout,)-3.306 F +F2 -.37(re)3.306 G(adline).37 E F0(will)3.306 E .906(use the shorter b) +144 420 R .907(ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407 +(equence. The).15 F -.25(va)3.407 G .907 +(lue is speci\214ed in milliseconds, so a v).25 F .907(alue of)-.25 F +.05(1000 means that)144 432 R F2 -.37(re)2.55 G(adline).37 E F0 .05 +(will w)2.55 F .05(ait one second for additional input.)-.1 F .05 +(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051 +(less than or equal to zero, or to a non-numeric v)144 444 R(alue,)-.25 +E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 +(ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed) +-2.552 E(to decide which k)144 456 Q .3 -.15(ey s)-.1 H +(equence to complete.).15 E F1(mark\255dir)108 468 Q(ectories \(On\)) +-.18 E F0(If set to)144 480 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 492 Q F0(If set to)144 +504 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 516 Q(ed\255dir)-.1 E +(ectories \(Off\))-.18 E F0 .175(If set to)144 528 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 540 +Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 +(match\255hidden\255\214les \(On\))108 552 Q F0 .192(This v)144 564 R +.192(ariable, when set to)-.25 F F1(On)2.692 E F0 2.692(,c)C .192 +(auses readline to match \214les whose names be)-2.692 F .193 +(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E .457 +(\214les\) when performing \214lename completion.)144 576 R .456 +(If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.) +-2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F +(user in the \214lename to be completed.)144 588 Q F1 +(menu\255complete\255display\255pr)108 600 Q(e\214x \(Off\))-.18 E F0 +1.585(If set to)144 612 R F1(On)4.085 E F0 4.085(,m)C 1.585(enu complet\ +ion displays the common pre\214x of the list of possible completions) +-4.085 F(\(which may be empty\) before c)144 624 Q +(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 636 Q F0 +.507(If set to)144 648 R F1(On)3.007 E F0 3.007(,r)C .507(eadline will \ +display characters with the eighth bit set directly rather than as a me\ +ta-)-3.007 F(pre\214x)144 660 Q .884(ed escape sequence.)-.15 F .884 +(The def)5.884 F .884(ault is)-.1 F F2(Of)3.384 E(f)-.18 E F0 3.384(,b)C +.884(ut readline will set it to)-3.584 F F2(On)3.384 E F0 .885 +(if the locale contains)3.384 F(eight-bit characters.)144 672 Q F1 +(page\255completions \(On\))108 684 Q F0 .809(If set to)144 696 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 708 Q(GNU Bash 5.1)72 768 Q(2020 October 29) +141.235 E(43)190.395 E 0 Cg EP +%%Page: 44 44 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(print\255completions\255horizontally \(Off\))108 84 Q F0 .227 +(If set to)144 96 R F1(On)2.727 E F0 2.727(,r)C .227(eadline will displ\ +ay completions with matches sorted horizontally in alphabetical or) +-2.727 F(-)-.2 E(der)144 108 Q 2.5(,r)-.4 G(ather than do)-2.5 E +(wn the screen.)-.25 E F1 -2.29 -.18(re v)108 120 T +(ert\255all\255at\255newline \(Off\)).08 E F0 .699(If set to)144 132 R +F1(On)3.199 E F0 3.199(,r)C .699 +(eadline will undo all changes to history lines before returning when) +-3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 144 S +2.686(cuted. By).15 F(def)2.686 E .186 +(ault, history lines may be modi\214ed and retain indi)-.1 F .186 +(vidual undo lists across calls to)-.25 F F1 -.18(re)144 156 S(adline) +.18 E F0(.)A F1(sho)108 168 Q(w\255all\255if\255ambiguous \(Off\))-.1 E +F0 .304(This alters the def)144 180 R .304(ault beha)-.1 F .304 +(vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On) +2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.15(ve m)-.2 H +(ore).15 E 1.264(than one possible completion cause the matches to be l\ +isted immediately instead of ringing the)144 192 R(bell.)144 204 Q F1 +(sho)108 216 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 +(This alters the def)144 228 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 240 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C +4.19(fs)-6.69 G 1.691(et to)-4.19 F F1(On)4.191 E F0 4.191(,w)C 1.691 +(ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691 +(ore than one possible completion).15 F 1.04(without an)144 252 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 264 Q F1 +(sho)108 276 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021 +(If set to)144 288 R F1(On)3.521 E F0 3.521(,a)C 1.022 +(dd a string to the be)-3.521 F 1.022 +(ginning of the prompt indicating the editing mode: emacs, vi)-.15 F +(command, or vi insertion.)144 300 Q(The mode strings are user)5 E +(-settable \(e.g.,)-.2 E/F2 10/Times-Italic@0 SF +(emacs\255mode\255string)2.5 E F0(\).)A F1 +(skip\255completed\255text \(Off\))108 312 Q F0 .095(If set to)144 324 R +F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095 +(ault completion beha)-.1 F .094 +(vior when inserting a single match into the line.)-.2 F(It')144 336 Q +2.545(so)-.55 G .045(nly acti)-2.545 F .345 -.15(ve w)-.25 H .046 +(hen performing completion in the middle of a w).15 F 2.546(ord. If)-.1 +F .046(enabled, readline does not)2.546 F 1.394(insert characters from \ +the completion that match characters after point in the w)144 348 R +1.394(ord being com-)-.1 F(pleted, so portions of the w)144 360 Q +(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 +(vi\255cmd\255mode\255string \(\(cmd\)\))108 372 Q F0 .517(If the)144 +384 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G +.518(riable is enabled, this string is displayed immediately before the) +.25 F .475(last line of the primary prompt when vi editing mode is acti) +144 396 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475 +(The v)5.475 F(alue)-.25 E .33(is e)144 408 R .33(xpanded lik)-.15 F +2.83(eak)-.1 G .63 -.15(ey b)-2.93 H .33 +(inding, so the standard set of meta- and control pre\214x).15 F .33 +(es and backslash es-)-.15 F .245(cape sequences is a)144 420 R -.25(va) +-.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F +.244(gin and end sequences of non-printing)-.15 F(characters, which can\ + be used to embed a terminal control sequence into the mode string.)144 +432 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 444 Q F0 .517 +(If the)144 456 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 +-.25(va)3.017 G .518 +(riable is enabled, this string is displayed immediately before the).25 +F .186(last line of the primary prompt when vi editing mode is acti)144 +468 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v) +5.186 F .186(alue is)-.25 F -.15(ex)144 480 S .923(panded lik).15 F +3.423(eak)-.1 G 1.223 -.15(ey b)-3.523 H .924 +(inding, so the standard set of meta- and control pre\214x).15 F .924 +(es and backslash es-)-.15 F .245(cape sequences is a)144 492 R -.25(va) +-.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F +.244(gin and end sequences of non-printing)-.15 F(characters, which can\ + be used to embed a terminal control sequence into the mode string.)144 +504 Q F1(visible\255stats \(Off\))108 516 Q F0 .846(If set to)144 528 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 540 Q F1 +(Readline Conditional Constructs)87 556.8 Q F0 .05 +(Readline implements a f)108 568.8 R .05(acility similar in spirit to t\ +he conditional compilation features of the C preprocessor)-.1 F .096 +(which allo)108 580.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 592.8 Q -.15(ve)-.25 G 2.5 +(su).15 G(sed.)-2.5 E F1($if)108 609.6 Q F0(The)144 609.6 Q F1($if)2.963 +E F0 .463(construct allo)2.963 F .462(ws bindings to be made based on t\ +he editing mode, the terminal being used,)-.25 F +(or the application using readline.)144 621.6 Q(The te)5 E +(xt of the test, after an)-.15 E 2.5(yc)-.15 G(omparison operator)-2.5 E +(,)-.4 E -.15(ex)146.5 633.6 S(tends to the end of the line; unless oth\ +erwise noted, no characters are required to isolate it.).15 E F1(mode) +144 650.4 Q F0(The)180 650.4 Q F1(mode=)3.711 E F0 1.211(form of the) +3.711 F F1($if)3.711 E F0(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711 +(su).15 G 1.211(sed to test whether readline is in emacs or vi)-3.711 F +3.065(mode. This)180 662.4 R .565(may be used in conjunction with the) +3.065 F F1 .565(set k)3.065 F(eymap)-.1 E F0 .565 +(command, for instance, to)3.065 F .735(set bindings in the)180 674.4 R +F2(emacs\255standar)3.235 E(d)-.37 E F0(and)3.235 E F2(emacs\255ctlx) +3.235 E F0 -.1(ke)3.235 G .735(ymaps only if readline is starting)-.05 F +(out in emacs mode.)180 686.4 Q F1(term)144 703.2 Q F0(The)180 703.2 Q +F1(term=)3.197 E F0 .696 +(form may be used to include terminal-speci\214c k)3.197 F .996 -.15 +(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 715.2 R +.954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154 +(sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1 +(wo)3.154 G .654(rd on the right side of).1 F(the)180 727.2 Q F1(=)3.232 +E F0 .732(is tested ag)3.232 F .732(ainst both the full name of the ter\ +minal and the portion of the terminal)-.05 F(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(44)190.395 E 0 Cg EP +%%Page: 45 45 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(name before the \214rst)180 84 Q/F1 10/Times-Bold@0 SF2.5 E F0 5 +(.T)C(his allo)-5 E(ws)-.25 E/F2 10/Times-Italic@0 SF(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.84 E +F0 2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 100.8 S(rsion).1 E F0 +(The)180 112.8 Q F1 -.1(ve)3.108 G(rsion).1 E F0 .608 +(test may be used to perform comparisons ag)3.108 F .609 +(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 124.8 Q F1 +-.1(ve)2.772 G(rsion).1 E F0 -.15(ex)2.772 G .272 +(pands to the current readline v).15 F 2.771(ersion. The)-.15 F .271 +(set of comparison operators in-)2.771 F(cludes)180 136.8 Q F1(=)3.063 E +F0 3.063(,\()C(and)-3.063 E F1(==)3.063 E F0(\),)A F1(!=)3.063 E F0(,)A +F1(<=)3.063 E F0(,)A F1(>=)3.063 E F0(,)A F1(<)3.063 E F0 3.063(,a)C(nd) +-3.063 E F1(>)3.064 E F0 5.564(.T)C .564(he v)-5.564 F .564 +(ersion number supplied on the right side)-.15 F .318 +(of the operator consists of a major v)180 148.8 R .318(ersion number) +-.15 F 2.818(,a)-.4 G 2.818(no)-2.818 G .318 +(ptional decimal point, and an op-)-2.818 F .1(tional minor v)180 160.8 +R .1(ersion \(e.g.,)-.15 F F1(7.1)2.6 E F0 .1(\). If the minor v)B .101 +(ersion is omitted, it is assumed to be)-.15 F F1(0)2.601 E F0 5.101(.T) +C(he)-5.101 E .06(operator may be separated from the string)180 172.8 R +F1 -.1(ve)2.56 G(rsion).1 E F0 .06(and from the v)2.56 F .06 +(ersion number ar)-.15 F(gument)-.18 E(by whitespace.)180 184.8 Q F1 +(application)144 201.6 Q F0(The)180 213.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 +225.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 .5(particular v)180 +237.6 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15 +(ey s)-.1 H .501(equences to functions useful for a spe-).15 F .397 +(ci\214c program.)180 249.6 R -.15(Fo)5.397 G 2.896(ri).15 G .396 +(nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15 +(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 261.6 +Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 285.6 Q F0 +(Bash)2.5 E 2.5(#Q)180 297.6 S(uote the current or pre)-2.5 E(vious w) +-.25 E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 309.6 Q F1($endif)180 +321.6 Q F2(variable)144 338.4 Q F0(The)180 350.4 Q F2(variable)3.776 E +F0 1.276(construct pro)3.776 F 1.276 +(vides simple equality tests for readline v)-.15 F 1.277(ariables and v) +-.25 F(alues.)-.25 E .08(The permitted comparison operators are)180 +362.4 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2 +(!=)2.579 E F0 5.079(.T)C .079(he v)-5.079 F .079 +(ariable name must be sepa-)-.25 F .98(rated from the comparison operat\ +or by whitespace; the operator may be separated from)180 374.4 R .13 +(the v)180 386.4 R .13(alue on the right hand side by whitespace.)-.25 F +.129(Both string and boolean v)5.129 F .129(ariables may be)-.25 F +(tested. Boolean v)180 398.4 Q(ariables must be tested ag)-.25 E +(ainst the v)-.05 E(alues)-.25 E F2(on)2.5 E F0(and)2.5 E F2(of)2.5 E(f) +-.18 E F0(.)A F1($endif)108 415.2 Q F0(This command, as seen in the pre) +144 415.2 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0 +(command.)2.5 E F1($else)108 432 Q F0(Commands in this branch of the)144 +432 Q 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 448.8 Q +F0 .356(This directi)144 460.8 R .656 -.15(ve t)-.25 H(ak).15 E .356 +(es a single \214lename as an ar)-.1 F .357 +(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) +144 472.8 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 496.8 Q F2(/etc/inputr)5.833 E(c)-.37 E F1(Sear)87 513.6 Q +(ching)-.18 E F0 .835(Readline pro)108 525.6 R .835 +(vides commands for searching through the command history \(see)-.15 F +/F3 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E +.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 537.6 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.86 E(emental)-.37 E F0(.).51 +E .697(Incremental searches be)108 554.4 R .697 +(gin before the user has \214nished typing the search string.)-.15 F +.698(As each character of the)5.698 F .113 +(search string is typed, readline displays the ne)108 566.4 R .112 +(xt entry from the history matching the string typed so f)-.15 F(ar)-.1 +E 5.112(.A)-.55 G(n)-5.112 E .542 +(incremental search requires only as man)108 578.4 R 3.042(yc)-.15 G +.542(haracters as needed to \214nd the desired history entry)-3.042 F +5.542(.T)-.65 G .542(he char)-5.542 F(-)-.2 E .224 +(acters present in the v)108 590.4 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 602.4 R .66(ariable has not been assigned a v)-.25 F .66 +(alue the Escape and Control-J characters will terminate an incre-)-.25 +F .097(mental search.)108 614.4 R .096(Control-G will abort an incremen\ +tal search and restore the original line.)5.097 F .096 +(When the search is)5.096 F(terminated, the history entry containing th\ +e search string becomes the current line.)108 626.4 Q 2.938 -.8(To \214) +108 643.2 T 1.339(nd other matching entries in the history list, type C\ +ontrol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675 +(search backw)108 655.2 R .675(ard or forw)-.1 F .675 +(ard in the history for the ne)-.1 F .674 +(xt entry matching the search string typed so f)-.15 F(ar)-.1 E 5.674 +(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 667.2 R .474 -.15(ey s)-.1 +H .174 +(equence bound to a readline command will terminate the search and e).15 +F -.15(xe)-.15 G .175(cute that command.).15 F -.15(Fo)5.175 G(r).15 E +.541(instance, a)108 679.2 R F2(ne)3.041 E(wline)-.15 E F0 .541 +(will terminate the search and accept the line, thereby e)3.041 F -.15 +(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 691.2 +Q .653(Readline remembers the last incremental search string.)108 708 R +.653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an) +-3.153 F 3.153(yi)-.15 G(nterv)-3.153 E(en-)-.15 E +(ing characters de\214ning a ne)108 720 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(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(45)190.395 E 0 Cg +EP +%%Page: 46 46 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .567(Non-incremen\ +tal searches read the entire search string before starting to search fo\ +r matching history lines.)108 84 R(The search string may be typed by th\ +e user or be part of the contents of the current line.)108 96 Q/F1 10 +/Times-Bold@0 SF(Readline Command Names)87 112.8 Q F0 1.391(The follo) +108 124.8 R 1.391 +(wing is a list of the names of the commands and the def)-.25 F 1.391 +(ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F +3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 136.8 R .122 +(names without an accompan)2.622 F .122(ying k)-.15 F .421 -.15(ey s)-.1 +H .121(equence are unbound by def).15 F 2.621(ault. In)-.1 F .121 +(the follo)2.621 F(wing)-.25 E(descriptions,)108 148.8 Q/F2 10 +/Times-Italic@0 SF(point)3.41 E F0 .91 +(refers to the current cursor position, and)3.41 F F2(mark)3.411 E F0 +.911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db).15 G +3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 160.8 Q F0 2.5 +(command. The)2.5 F(te)2.5 E +(xt between the point and mark is referred to as the)-.15 E F2 -.37(re) +2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 177.6 Q(or Mo)-.25 E(ving)-.1 +E(beginning\255of\255line \(C\255a\))108 189.6 Q F0(Mo)144 201.6 Q .3 +-.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1 +(end\255of\255line \(C\255e\))108 213.6 Q F0(Mo)144 225.6 Q .3 -.15 +(ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 +237.6 S(rward\255char \(C\255f\)).25 E F0(Mo)144 249.6 Q .3 -.15(ve f) +-.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1 +(backward\255char \(C\255b\))108 261.6 Q F0(Mo)144 273.6 Q .3 -.15(ve b) +-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 285.6 S(rward\255w) +.25 E(ord \(M\255f\))-.1 E F0(Mo)144 297.6 Q .823 -.15(ve f)-.15 H(orw) +.15 E .523(ard to the end of the ne)-.1 F .523(xt w)-.15 F 3.023(ord. W) +-.1 F .522(ords are composed of alphanumeric characters \(let-)-.8 F +(ters and digits\).)144 309.6 Q F1(backward\255w)108 321.6 Q +(ord \(M\255b\))-.1 E F0(Mo)144 333.6 Q 1.71 -.15(ve b)-.15 H 1.41 +(ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91 +(ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F +(characters \(letters and digits\).)144 345.6 Q F1(shell\255f)108 357.6 +Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 369.6 Q .784 -.15(ve f)-.15 H +(orw).15 E .484(ard to the end of the ne)-.1 F .484(xt w)-.15 F 2.984 +(ord. W)-.1 F .484(ords are delimited by non-quoted shell metacharac-) +-.8 F(ters.)144 381.6 Q F1(shell\255backward\255w)108 393.6 Q(ord)-.1 E +F0(Mo)144 405.6 Q .908 -.15(ve b)-.15 H .609 +(ack to the start of the current or pre).15 F .609(vious w)-.25 F 3.109 +(ord. W)-.1 F .609(ords are delimited by non-quoted shell)-.8 F +(metacharacters.)144 417.6 Q F1(pr)108 429.6 Q -.15(ev)-.18 G +(ious\255scr).15 E(een\255line)-.18 E F0 .891(Attempt to mo)144 441.6 R +1.191 -.15(ve p)-.15 H .891(oint to the same ph).15 F .891 +(ysical screen column on the pre)-.05 F .89(vious ph)-.25 F .89 +(ysical screen line.)-.05 F .87(This will not ha)144 453.6 R 1.17 -.15 +(ve t)-.2 H .87(he desired ef).15 F .87 +(fect if the current Readline line does not tak)-.25 F 3.37(eu)-.1 G +3.37(pm)-3.37 G .87(ore than one)-3.37 F(ph)144 465.6 Q(ysical line or \ +if point is not greater than the length of the prompt plus the screen w\ +idth.)-.05 E F1(next\255scr)108 477.6 Q(een\255line)-.18 E F0 .638 +(Attempt to mo)144 489.6 R .938 -.15(ve p)-.15 H .638 +(oint to the same ph).15 F .637(ysical screen column on the ne)-.05 F +.637(xt ph)-.15 F .637(ysical screen line. This)-.05 F .008(will not ha) +144 501.6 R .309 -.15(ve t)-.2 H .009(he desired ef).15 F .009 +(fect if the current Readline line does not tak)-.25 F 2.509(eu)-.1 G +2.509(pm)-2.509 G .009(ore than one ph)-2.509 F(ysical)-.05 E .772(line\ + or if the length of the current Readline line is not greater than the \ +length of the prompt plus)144 513.6 R(the screen width.)144 525.6 Q F1 +(clear\255display \(M\255C\255l\))108 537.6 Q F0 1.498 +(Clear the screen and, if possible, the terminal')144 549.6 R 3.999(ss) +-.55 G 1.499(crollback b)-3.999 F(uf)-.2 E(fer)-.25 E 3.999(,t)-.4 G +1.499(hen redra)-3.999 F 3.999(wt)-.15 G 1.499(he current line,)-3.999 F +(lea)144 561.6 Q(ving the current line at the top of the screen.)-.2 E +F1(clear\255scr)108 573.6 Q(een \(C\255l\))-.18 E F0 1.36 +(Clear the screen, then redra)144 585.6 R 3.86(wt)-.15 G 1.36 +(he current line, lea)-3.86 F 1.36 +(ving the current line at the top of the screen.)-.2 F -.4(Wi)144 597.6 +S(th an ar).4 E +(gument, refresh the current line without clearing the screen.)-.18 E F1 +-.18(re)108 609.6 S(draw\255curr).18 E(ent\255line)-.18 E F0 +(Refresh the current line.)144 621.6 Q F1(Commands f)87 638.4 Q +(or Manipulating the History)-.25 E(accept\255line \(Newline, Retur)108 +650.4 Q(n\))-.15 E F0 .158(Accept the line re)144 662.4 R -.05(ga)-.15 G +.158(rdless of where the cursor is.).05 F .158 +(If this line is non-empty)5.158 F 2.659(,a)-.65 G .159 +(dd it to the history list)-2.659 F .699(according to the state of the) +144 674.4 R/F3 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 686.4 Q F1(pr)108 +698.4 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 +(Fetch the pre)144 710.4 Q(vious command from the history list, mo)-.25 +E(ving back in the list.)-.15 E(GNU Bash 5.1)72 768 Q(2020 October 29) +141.235 E(46)190.395 E 0 Cg EP +%%Page: 47 47 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(next\255history \(C\255n\))108 84 Q F0(Fetch the ne)144 96 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 108 +Q F0(Mo)144 120 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 132 Q F0(Mo)144 144 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 +156 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 1.47 +(Search backw)144 168 R 1.471(ard starting at the current line and mo) +-.1 F 1.471(ving `up' through the history as necessary)-.15 F(.)-.65 E +(This is an incremental search.)144 180 Q F1 -.25(fo)108 192 S +(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132 +(Search forw)144 204 R 1.132(ard starting at the current line and mo)-.1 +F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary)-.25 +F(.)-.65 E(This is an incremental search.)144 216 Q F1(non\255incr)108 +228 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H(rse\255sear).15 E +(ch\255history \(M\255p\))-.18 E F0 .164(Search backw)144 240 R .164(ar\ +d through the history starting at the current line using a non-incremen\ +tal search for)-.1 F 2.5(as)144 252 S(tring supplied by the user)-2.5 E +(.)-.55 E F1(non\255incr)108 264 Q(emental\255f)-.18 E(orward\255sear) +-.25 E(ch\255history \(M\255n\))-.18 E F0 1.354(Search forw)144 276 R +1.354(ard through the history using a non-incremental search for a stri\ +ng supplied by the)-.1 F(user)144 288 Q(.)-.55 E F1(history\255sear)108 +300 Q(ch\255f)-.18 E(orward)-.25 E F0 .248(Search forw)144 312 R .249(a\ +rd through the history for the string of characters between the start o\ +f the current line)-.1 F(and the point.)144 324 Q +(This is a non-incremental search.)5 E F1(history\255sear)108 336 Q +(ch\255backward)-.18 E F0 .951(Search backw)144 348 R .951(ard through \ +the history for the string of characters between the start of the curre\ +nt)-.1 F(line and the point.)144 360 Q +(This is a non-incremental search.)5 E F1(history\255substring\255sear) +108 372 Q(ch\255backward)-.18 E F0 .95(Search backw)144 384 R .951(ard \ +through the history for the string of characters between the start of t\ +he current)-.1 F .007(line and the current cursor position \(the)144 396 +R/F2 10/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B .007 +(search string may match an)2.507 F .006(ywhere in a history)-.15 F 2.5 +(line. This)144 408 R(is a non-incremental search.)2.5 E F1 +(history\255substring\255sear)108 420 Q(ch\255f)-.18 E(orward)-.25 E F0 +.248(Search forw)144 432 R .249(ard through the history for the string \ +of characters between the start of the current line)-.1 F .319 +(and the point.)144 444 R .319(The search string may match an)5.319 F +.319(ywhere in a history line.)-.15 F .318(This is a non-incremental) +5.318 F(search.)144 456 Q F1(yank\255nth\255ar)108 468 Q 2.5(g\()-.1 G +<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 480 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 .773(at point.)144 +492 R -.4(Wi)5.773 G .773(th an ar).4 F(gument)-.18 E F2(n)3.633 E F0 +3.273(,i).24 G .773(nsert the)-3.273 F F2(n)3.273 E F0 .773(th w)B .773 +(ord from the pre)-.1 F .773(vious command \(the w)-.25 F .773 +(ords in the)-.1 F(pre)144 504 Q .291(vious command be)-.25 F .291 +(gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a) +-2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291 +(ument inserts the).18 F F2(n)2.791 E F0 .291(th w)B .292 +(ord from the end of)-.1 F .282(the pre)144 516 R .282(vious command.) +-.25 F .282(Once the ar)5.282 F(gument)-.18 E F2(n)2.781 E F0 .281 +(is computed, the ar)2.781 F .281(gument is e)-.18 F .281 +(xtracted as if the "!)-.15 F F2(n)A F0(")A(history e)144 528 Q +(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 540 Q +2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307 +(Insert the last ar)144 552 R 1.307(gument to the pre)-.18 F 1.307 +(vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308 +(vious history entry\).)-.25 F -.4(Wi)144 564 S .204(th a numeric ar).4 +F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e) +-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.203(.S)C(uccessi)-5.203 +E .503 -.15(ve c)-.25 H .203(alls to).15 F F1(yank\255last\255ar)2.703 E +(g)-.1 E F0(mo)144 576 Q .806 -.15(ve b)-.15 H .507 +(ack through the history list, inserting the last w).15 F .507 +(ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E +.416(to the \214rst call\) of each line in turn.)144 588 R(An)5.416 E +2.916(yn)-.15 G .416(umeric ar)-2.916 F .416 +(gument supplied to these successi)-.18 F .715 -.15(ve c)-.25 H .415 +(alls de-).15 F 1.217(termines the direction to mo)144 600 R 1.518 -.15 +(ve t)-.15 H 1.218(hrough the history).15 F 6.218(.A)-.65 G(ne)-2.5 E +-.05(ga)-.15 G(ti).05 E 1.518 -.15(ve a)-.25 H -.18(rg).15 G 1.218 +(ument switches the direction).18 F .494 +(through the history \(back or forw)144 612 R 2.994(ard\). The)-.1 F +.494(history e)2.994 F .494(xpansion f)-.15 F .494 +(acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144 +624 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.) +-.15 E F1(shell\255expand\255line \(M\255C\255e\))108 636 Q F0 .622 +(Expand the line as the shell does.)144 648 R .622 +(This performs alias and history e)5.622 F .623 +(xpansion as well as all of the)-.15 F(shell w)144 660 Q(ord e)-.1 E 2.5 +(xpansions. See)-.15 F/F3 9/Times-Bold@0 SF(HIST)2.5 E(OR)-.162 E 2.25 +(YE)-.315 G(XP)-2.25 E(ANSION)-.666 E F0(belo)2.25 E 2.5(wf)-.25 G +(or a description of history e)-2.5 E(xpansion.)-.15 E F1 +(history\255expand\255line \(M\255^\))108 672 Q F0 .939 +(Perform history e)144 684 R .939(xpansion on the current line.)-.15 F +(See)5.939 E F3(HIST)3.439 E(OR)-.162 E 3.189(YE)-.315 G(XP)-3.189 E +(ANSION)-.666 E F0(belo)3.189 E 3.438(wf)-.25 G .938(or a descrip-) +-3.438 F(tion of history e)144 696 Q(xpansion.)-.15 E(GNU Bash 5.1)72 +768 Q(2020 October 29)141.235 E(47)190.395 E 0 Cg EP +%%Page: 48 48 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(magic\255space)108 84 Q F0 .437(Perform history e)144 96 R .437 +(xpansion on the current line and insert a space.)-.15 F(See)5.438 E/F2 +9/Times-Bold@0 SF(HIST)2.938 E(OR)-.162 E 2.688(YE)-.315 G(XP)-2.688 E +(ANSION)-.666 E F0(be-)2.688 E(lo)144 108 Q 2.5(wf)-.25 G +(or a description of history e)-2.5 E(xpansion.)-.15 E F1 +(alias\255expand\255line)108 120 Q F0 .395(Perform alias e)144 132 R +.395(xpansion on the current line.)-.15 F(See)5.395 E F2(ALIASES)2.895 E +F0(abo)2.645 E .694 -.15(ve f)-.15 H .394(or a description of alias e) +.15 F(xpan-)-.15 E(sion.)144 144 Q F1 +(history\255and\255alias\255expand\255line)108 156 Q F0 +(Perform history and alias e)144 168 Q(xpansion on the current line.) +-.15 E F1(insert\255last\255ar)108 180 Q(gument \(M\255.)-.1 E 2.5(,M) +.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 192 S(ynon)-2.5 E(ym for) +-.15 E F1(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F1 +(operate\255and\255get\255next \(C\255o\))108 204 Q F0 .947 +(Accept the current line for e)144 216 R -.15(xe)-.15 G .948 +(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.248 -.15 +(ve t)-.25 H 3.448(ot).15 G .948(he current line from the)-3.448 F .73 +(history for editing.)144 228 R 3.23(An)5.73 G .73(umeric ar)-3.23 F +.729 +(gument, if supplied, speci\214es the history entry to use instead of) +-.18 F(the current line.)144 240 Q F1 +(edit\255and\255execute\255command \(C\255x C\255e\))108 252 Q F0(In)144 +264 Q -.2(vo)-.4 G .346 -.1(ke a).2 H 2.646(ne).1 G .146 +(ditor on the current command line, and e)-2.646 F -.15(xe)-.15 G .146 +(cute the result as shell commands.).15 F F1(Bash)5.147 E F0(at-)2.647 E +(tempts to in)144 276 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL)-.54 +E/F3 9/Times-Roman@0 SF(,)A F2($EDIT)2.25 E(OR)-.162 E F3(,)A F0(and) +2.25 E/F4 10/Times-Italic@0 SF(emacs)2.5 E F0(as the editor)2.5 E 2.5 +(,i)-.4 G 2.5(nt)-2.5 G(hat order)-2.5 E(.)-.55 E F1(Commands f)87 292.8 +Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 304.8 Q F1 +(\(usually C\255d\))2.5 E F0 .799 +(The character indicating end-of-\214le as set, for e)144 316.8 R .799 +(xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.298 +(ft)-5.799 G .798(his character is read when)-3.298 F .592 +(there are no characters on the line, and point is at the be)144 328.8 R +.593(ginning of the line, Readline interprets it)-.15 F +(as the end of input and returns)144 340.8 Q F2(EOF)2.5 E F3(.)A F1 +(delete\255char \(C\255d\))108 352.8 Q F0 .442 +(Delete the character at point.)144 364.8 R .442 +(If this function is bound to the same character as the tty)5.442 F F1 +(EOF)2.941 E F0(char)2.941 E(-)-.2 E(acter)144 376.8 Q 2.5(,a)-.4 G(s) +-2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H +(or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\)) +108 388.8 Q F0 .552(Delete the character behind the cursor)144 400.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 412.8 Q F1 +-.25(fo)108 424.8 S(rward\255backward\255delete\255char).25 E F0 .474 +(Delete the character under the cursor)144 436.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 448.8 Q F1 +(quoted\255insert \(C\255q, C\255v\))108 460.8 Q F0 .778(Add the ne)144 +472.8 R .779(xt character typed to the line v)-.15 F 3.279 +(erbatim. This)-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279 +G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.279 E F0 3.279 +(,f)C(or)-3.279 E -.15(ex)144 484.8 S(ample.).15 E F1 +(tab\255insert \(C\255v T)108 496.8 Q(AB\))-.9 E F0 +(Insert a tab character)144 508.8 Q(.)-.55 E F1 +(self\255insert \(a, b, A, 1, !, ...\))108 520.8 Q F0 +(Insert the character typed.)144 532.8 Q F1 +(transpose\255chars \(C\255t\))108 544.8 Q F0 .322 +(Drag the character before point forw)144 556.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 .372 +(If point is at the end of the line, then this transposes the tw)144 +568.8 R 2.872(oc)-.1 G .373(haracters before point.)-2.872 F(Ne)5.373 E +-.05(ga)-.15 G(ti).05 E .673 -.15(ve a)-.25 H -.2(r-).15 G(guments ha) +144 580.8 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 +(transpose\255w)108 592.8 Q(ords \(M\255t\))-.1 E F0 .024(Drag the w)144 +604.8 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 616.8 Q 2.5 +(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 628.8 Q +(ord \(M\255u\))-.1 E F0 1.698(Uppercase the current \(or follo)144 +640.8 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F +-.05(ga)-.15 G(ti).05 E 1.999 -.15(ve a)-.25 H -.18(rg).15 G 1.699 +(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 652.8 S(rd, b).1 +E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 664.8 Q +(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 676.8 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 688.8 S(rd, b).1 E(ut do not mo)-.2 E .3 +-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 700.8 Q +(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144 +712.8 R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F +-.05(ga)-.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.975 +(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 724.8 S(rd, b) +.1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E(GNU Bash 5.1)72 +768 Q(2020 October 29)141.235 E(48)190.395 E 0 Cg EP +%%Page: 49 49 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF -.1(ove)108 84 S(rwrite\255mode).1 E F0 -.8(To)144 96 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 108 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 120 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 132 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 144 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 156 Q +(By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87 +172.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 184.8 Q F0 +(Kill the te)144 196.8 Q(xt from point to the end of the line.)-.15 E F1 +(backward\255kill\255line \(C\255x Rubout\))108 208.8 Q F0(Kill backw) +144 220.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 +(unix\255line\255discard \(C\255u\))108 232.8 Q F0(Kill backw)144 244.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 256.8 Q F0 +(Kill all characters on the current line, no matter where point is.)144 +268.8 Q F1(kill\255w)108 280.8 Q(ord \(M\255d\))-.1 E F0 .728 +(Kill from point to the end of the current w)144 292.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 304.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 316.8 Q +(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 328.8 Q(ord behind point.) +-.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1 +(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 340.8 Q +(ord)-.1 E F0 .729(Kill from point to the end of the current w)144 352.8 +R .728(ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F +.728(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 364.8 S +(rd boundaries are the same as those used by).8 E F1(shell\255f)2.5 E +(orward\255w)-.25 E(ord)-.1 E F0(.)A F1(shell\255backward\255kill\255w) +108 376.8 Q(ord)-.1 E F0 3.025(Kill the w)144 388.8 R 3.025 +(ord behind point.)-.1 F -.8(Wo)8.025 G 3.025 +(rd boundaries are the same as those used by).8 F F1(shell\255back-) +5.525 E(ward\255w)144 400.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 412.8 Q +(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 424.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 +436.8 Q F1(unix\255\214lename\255rubout)108 448.8 Q F0 .166(Kill the w) +144 460.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 472.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 484.8 Q F0 +(Delete all spaces and tabs around point.)144 496.8 Q F1(kill\255r)108 +508.8 Q(egion)-.18 E F0(Kill the te)144 520.8 Q(xt in the current re) +-.15 E(gion.)-.15 E F1(copy\255r)108 532.8 Q(egion\255as\255kill)-.18 E +F0(Cop)144 544.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 556.8 Q(ord)-.1 E F0(Cop)144 568.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 580.8 +Q(ord)-.1 E F0(.)A F1(copy\255f)108 592.8 Q(orward\255w)-.25 E(ord)-.1 E +F0(Cop)144 604.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 616.8 Q(ord)-.1 E F0(.) +A F1(yank \(C\255y\))108 628.8 Q F0 -1(Ya)144 640.8 S +(nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25 +E F1(yank\255pop \(M\255y\))108 652.8 Q F0 +(Rotate the kill ring, and yank the ne)144 664.8 Q 2.5(wt)-.25 G 2.5 +(op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E +F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 681.6 Q +(guments)-.1 E(digit\255ar)108 693.6 Q +(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367 +(Add this digit to the ar)144 705.6 R .367 +(gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18 +(rg)-2.867 G 2.867(ument. M\255\255).18 F .366(starts a ne)2.867 F -.05 +(ga)-.15 G(-).05 E(ti)144 717.6 Q .3 -.15(ve a)-.25 H -.18(rg).15 G +(ument.).18 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(49)190.395 +E 0 Cg EP +%%Page: 50 50 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(uni)108 84 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .778 +(This is another w)144 96 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 +108 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 +120 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 132 R .898 +(As a special case, if this command is immediately follo)5.899 F .898 +(wed by a character that is)-.25 F 1.23 +(neither a digit nor minus sign, the ar)144 144 R 1.23 +(gument count for the ne)-.18 F 1.23(xt command is multiplied by four) +-.15 F(.)-.55 E .823(The ar)144 156 R .823 +(gument count is initially one, so e)-.18 F -.15(xe)-.15 G .823 +(cuting this function the \214rst time mak).15 F .822(es the ar)-.1 F +(gument)-.18 E(count four)144 168 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 184.8 Q(complete \(T)108 196.8 Q(AB\))-.9 E F0 1.137 +(Attempt to perform completion on the te)144 208.8 R 1.137 +(xt before point.)-.15 F F1(Bash)6.137 E F0 1.137 +(attempts completion treating the)3.637 F(te)144 220.8 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 232.8 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 244.8 Q F1 +(possible\255completions \(M\255?\))108 256.8 Q F0 +(List the possible completions of the te)144 268.8 Q(xt before point.) +-.15 E F1(insert\255completions \(M\255*\))108 280.8 Q F0 .783 +(Insert all completions of the te)144 292.8 R .783 +(xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H +.783(een generated by).15 F F1(possible\255com-)3.282 E(pletions)144 +304.8 Q F0(.)A F1(menu\255complete)108 316.8 Q F0 .928(Similar to)144 +328.8 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 340.8 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 352.8 R .828 +(At the end of the list of completions, the bell is rung)5.828 F .727 +(\(subject to the setting of)144 364.8 R F1(bell\255style)3.227 E F0 +3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F +.727(An ar)5.727 F .727(gument of)-.18 F/F2 10/Times-Italic@0 SF(n)3.227 +E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.227 E F0 1.73 +(positions forw)144 376.8 R 1.73(ard in the list of matches; a ne)-.1 F +-.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73 +(ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1 +E(through the list.)144 388.8 Q(This command is intended to be bound to) +5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E +(ault.)-.1 E F1(menu\255complete\255backward)108 400.8 Q F0 .82 +(Identical to)144 412.8 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 +(ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82 +(ard through the list of possible completions, as if)-.1 F F1 +(menu\255complete)144 424.8 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 +(nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg) +.15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E +F1(delete\255char\255or\255list)108 436.8 Q F0 .234 +(Deletes the character under the cursor if not at the be)144 448.8 R +.234(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char) +2.735 E F0(\).)A .425(If at the end of the line, beha)144 460.8 R -.15 +(ve)-.2 G 2.925(si).15 G .425(dentically to)-2.925 F F1 +(possible\255completions)2.925 E F0 5.425(.T)C .425 +(his command is unbound)-5.425 F(by def)144 472.8 Q(ault.)-.1 E F1 +(complete\255\214lename \(M\255/\))108 484.8 Q F0 +(Attempt \214lename completion on the te)144 496.8 Q(xt before point.) +-.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 508.8 Q +F0(List the possible completions of the te)144 520.8 Q +(xt before point, treating it as a \214lename.)-.15 E F1 +(complete\255user)108 532.8 Q(name \(M\255~\))-.15 E F0 +(Attempt completion on the te)144 544.8 Q +(xt before point, treating it as a username.)-.15 E F1(possible\255user) +108 556.8 Q(name\255completions \(C\255x ~\))-.15 E F0 +(List the possible completions of the te)144 568.8 Q +(xt before point, treating it as a username.)-.15 E F1(complete\255v)108 +580.8 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 +592.8 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E +F1(possible\255v)108 604.8 Q(ariable\255completions \(C\255x $\))-.1 E +F0(List the possible completions of the te)144 616.8 Q +(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 +(complete\255hostname \(M\255@\))108 628.8 Q F0 +(Attempt completion on the te)144 640.8 Q +(xt before point, treating it as a hostname.)-.15 E F1 +(possible\255hostname\255completions \(C\255x @\))108 652.8 Q F0 +(List the possible completions of the te)144 664.8 Q +(xt before point, treating it as a hostname.)-.15 E F1 +(complete\255command \(M\255!\))108 676.8 Q F0 .58 +(Attempt completion on the te)144 688.8 R .581 +(xt before point, treating it as a command name.)-.15 F .581 +(Command comple-)5.581 F .715(tion attempts to match the te)144 700.8 R +.715(xt ag)-.15 F .715(ainst aliases, reserv)-.05 F .715(ed w)-.15 F +.715(ords, shell functions, shell b)-.1 F .715(uiltins, and)-.2 F +(\214nally e)144 712.8 Q -.15(xe)-.15 G +(cutable \214lenames, in that order).15 E(.)-.55 E(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(50)190.395 E 0 Cg EP +%%Page: 51 51 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(possible\255command\255completions \(C\255x !\))108 84 Q F0 +(List the possible completions of the te)144 96 Q +(xt before point, treating it as a command name.)-.15 E F1 +(dynamic\255complete\255history \(M\255T)108 108 Q(AB\))-.9 E F0 .424 +(Attempt completion on the te)144 120 R .425 +(xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .425 +(ainst lines from the history list)-.05 F +(for possible completion matches.)144 132 Q F1(dab)108 144 Q(br)-.1 E +-.15(ev)-.18 G(\255expand).15 E F0 .611 +(Attempt menu completion on the te)144 156 R .611 +(xt before point, comparing the te)-.15 F .61(xt ag)-.15 F .61 +(ainst lines from the his-)-.05 F +(tory list for possible completion matches.)144 168 Q F1 +(complete\255into\255braces \(M\255{\))108 180 Q F0 .4(Perform \214lena\ +me completion and insert the list of possible completions enclosed with\ +in braces so)144 192 R(the list is a)144 204 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 220.8 S(yboard Macr).25 E(os)-.18 +E(start\255kbd\255macr)108 232.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) +.833 E F0(Be)144 244.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 256.8 Q 2.5(o\()-.18 G +(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 268.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 280.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 +E F0(Re-e)144 292.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 304.8 Q -.15(ey)-.1 G(board.).15 E F1 +(print\255last\255kbd\255macr)108 316.8 Q 2.5(o\()-.18 G(\))-2.5 E F0 +(Print the last k)144 328.8 Q -.15(ey)-.1 G +(board macro de\214ned in a format suitable for the).15 E/F2 10 +/Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1 +(Miscellaneous)87 345.6 Q -.18(re)108 357.6 S.18 E +(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776 +(Read in the contents of the)144 369.6 R F2(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 +381.6 Q F1(abort \(C\255g\))108 393.6 Q F0 3.249 +(Abort the current editing command and ring the terminal')144 405.6 R +5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1 +(bell\255style)144 417.6 Q F0(\).)A F1(do\255lo)108 429.6 Q(wer)-.1 E +(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.738(If the meta\214ed character)144 441.6 R F2(x) +4.238 E F0 1.739 +(is uppercase, run the command that is bound to the corresponding)4.238 +F(meta\214ed lo)144 453.6 Q(wercase character)-.25 E 5(.T)-.55 G +(he beha)-5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo) +2.5 E(wercase.)-.25 E F1(pr)108 465.6 Q(e\214x\255meta \(ESC\))-.18 E F0 +(Metafy the ne)144 477.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 489.6 Q F0 +(Incremental undo, separately remembered for each line.)144 501.6 Q F1 +-2.29 -.18(re v)108 513.6 T(ert\255line \(M\255r\)).08 E F0 .231 +(Undo all changes made to this line.)144 525.6 R .231(This is lik)5.231 +F 2.731(ee)-.1 G -.15(xe)-2.881 G .23(cuting the).15 F F1(undo)2.73 E F0 +.23(command enough times to re-)2.73 F +(turn the line to its initial state.)144 537.6 Q F1 +(tilde\255expand \(M\255&\))108 549.6 Q F0(Perform tilde e)144 561.6 Q +(xpansion on the current w)-.15 E(ord.)-.1 E F1 +(set\255mark \(C\255@, M\255\))108 573.6 Q F0 +(Set the mark to the point.)144 585.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 597.6 Q F0(Sw) +144 609.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 621.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 633.6 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 +645.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 657.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 669.6 Q +(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 681.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 693.6 Q F1 +(skip\255csi\255sequence)108 705.6 Q F0 1.827 +(Read enough characters to consume a multi-k)144 717.6 R 2.126 -.15 +(ey s)-.1 H 1.826(equence such as those de\214ned for k).15 F -.15(ey) +-.1 G 4.326(sl).15 G(ik)-4.326 E(e)-.1 E .79(Home and End.)144 729.6 R +.791(Such sequences be)5.79 F .791 +(gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(51)190.395 E 0 Cg EP +%%Page: 52 52 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .332 +(If this sequence is bound to "\\[", k)144 84 R -.15(ey)-.1 G 2.831(sp) +.15 G .331(roducing such sequences will ha)-2.831 F .631 -.15(ve n)-.2 H +2.831(oe).15 G -.25(ff)-2.831 G .331(ect unless e).25 F(xplic-)-.15 E +.026(itly bound to a readline command, instead of inserting stray chara\ +cters into the editing b)144 96 R(uf)-.2 E(fer)-.25 E 5.026(.T)-.55 G +(his)-5.026 E(is unbound by def)144 108 Q(ault, b)-.1 E +(ut usually bound to ESC\255[.)-.2 E/F1 10/Times-Bold@0 SF +(insert\255comment \(M\255#\))108 120 Q F0 -.4(Wi)144 132 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 144 Q .244 +(ginning of the current line.)-.15 F .245(If a numeric ar)5.244 F .245 +(gument is supplied, this command acts as a toggle: if)-.18 F .322 +(the characters at the be)144 156 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 .831(inserted, otherwise the characters in)144 168 R F1 +(comment\255begin)3.331 E F0 .832(are deleted from the be)3.331 F .832 +(ginning of the line.)-.15 F 1.469 +(In either case, the line is accepted as if a ne)144 180 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 192 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 204 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 216 Q +(ord \(M\255g\))-.1 E F0 .792(The w)144 228 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 240 +R(pattern is used to generate a list of matching \214lenames for possib\ +le completions.)2.5 E F1(glob\255expand\255w)108 252 Q(ord \(C\255x *\)) +-.1 E F0 .175(The w)144 264 R .176 +(ord before point is treated as a pattern for pathname e)-.1 F .176 +(xpansion, and the list of matching \214le-)-.15 F .516 +(names is inserted, replacing the w)144 276 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 288 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) +108 300 Q F0 .923(The list of e)144 312 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 324 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 336 S(pansion.).15 E F1(dump\255functions)108 348 Q F0 .626 +(Print all of the functions and their k)144 360 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 372 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 384 Q(ariables)-.1 E F0 +.763(Print all of the settable readline v)144 396 R .762 +(ariables and their v)-.25 F .762(alues to the readline output stream.) +-.25 F .762(If a nu-)5.762 F .108(meric ar)144 408 R .108 +(gument is supplied, the output is formatted in such a w)-.18 F .109 +(ay that it can be made part of an)-.1 F F2(in-)2.609 E(putr)144 420 Q +(c)-.37 E F0(\214le.)2.5 E F1(dump\255macr)108 432 Q(os)-.18 E F0 .593 +(Print all of the readline k)144 444 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 456 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 468 Q F1(display\255shell\255v)108 480 Q +(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 492 Q +(ersion information about the current instance of)-.15 E F1(bash)2.5 E +F0(.)A F1(Pr)87 508.8 Q(ogrammable Completion)-.18 E F0 .147(When w)108 +520.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 532.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 544.8 Q(acilities are in)-.1 E -.2 +(vo)-.4 G -.1(ke).2 G(d.).1 E .498 +(First, the command name is identi\214ed.)108 561.6 R .498 +(If the command w)5.498 F .497 +(ord is the empty string \(completion attempted at)-.1 F .233(the be)108 +573.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 +(ompspec de\214ned with the)-2.733 F F12.733 E F0 .233(option to) +2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .234(If a comp-) +5.234 F .481(spec has been de\214ned for that command, the compspec is \ +used to generate the list of possible completions)108 585.6 R .822 +(for the w)108 597.6 R 3.322(ord. If)-.1 F .822(the command w)3.322 F +.823(ord is a full pathname, a compspec for the full pathname is search\ +ed for)-.1 F 2.867(\214rst. If)108 609.6 R .366(no compspec is found fo\ +r the full pathname, an attempt is made to \214nd a compspec for the po\ +rtion)2.867 F(follo)108 621.6 Q .298(wing the \214nal slash.)-.25 F .298 +(If those searches do not result in a compspec, an)5.298 F 2.799(yc)-.15 +G .299(ompspec de\214ned with the)-2.799 F F12.799 E F0 .057 +(option to)108 633.6 R F1(complete)2.557 E F0 .056(is used as the def) +2.556 F 2.556(ault. If)-.1 F .056(there is no def)2.556 F .056 +(ault compspec,)-.1 F F1(bash)2.556 E F0 .056(attempts alias e)2.556 F +.056(xpansion on)-.15 F .332(the command w)108 645.6 R .332(ord as a \ +\214nal resort, and attempts to \214nd a compspec for the command w)-.1 +F .332(ord from an)-.1 F 2.833(ys)-.15 G(uc-)-2.833 E(cessful e)108 +657.6 Q(xpansion.)-.15 E .817(Once a compspec has been found, it is use\ +d to generate the list of matching w)108 674.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 686.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 .463 +(First, the actions speci\214ed by the compspec are used.)108 703.2 R +.464(Only matches which are pre\214x)5.464 F .464(ed by the w)-.15 F +.464(ord being)-.1 F .596(completed are returned.)108 715.2 R .596 +(When the)5.596 F F13.096 E F0(or)3.095 E F13.095 E F0 .595 +(option is used for \214lename or directory name completion, the)3.095 F +(shell v)108 727.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0 +(is used to \214lter the matches.)2.25 E(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(52)190.395 E 0 Cg EP +%%Page: 53 53 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(An)108 84 Q 4.084 +(yc)-.15 G 1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584 +(xpansion pattern to the)-.15 F/F1 10/Times-Bold@0 SF4.084 E F0 +1.584(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 96 +S .555(rds generated by the pattern need not match the w).1 F .554 +(ord being completed.)-.1 F(The)5.554 E/F2 9/Times-Bold@0 SF(GLOBIGNORE) +3.054 E F0 .554(shell v)2.804 F(ari-)-.25 E +(able is not used to \214lter the matches, b)108 108 Q(ut the)-.2 E F2 +(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 124.8 Q +.32(xt, the string speci\214ed as the ar)-.15 F .32(gument to the)-.18 F +F12.82 E F0 .321(option is considered.)2.821 F .321 +(The string is \214rst split using the)5.321 F .413(characters in the) +108 136.8 R F2(IFS)2.913 E F0 .412(special v)2.663 F .412 +(ariable as delimiters.)-.25 F .412(Shell quoting is honored.)5.412 F +.412(Each w)5.412 F .412(ord is then e)-.1 F(xpanded)-.15 E .091 +(using brace e)108 148.8 R .091(xpansion, tilde e)-.15 F .092 +(xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .092 +(xpansion, command substitution, and arith-)-.15 F 1.397(metic e)108 +160.8 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H +(nder).15 E F2(EXP)3.896 E(ANSION)-.666 E/F3 9/Times-Roman@0 SF(.)A F0 +1.396(The results are split using the rules described)5.896 F(abo)108 +172.8 Q .509 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.709 G .209 +(rd Splitting).75 F F0 5.209(.T)C .209(he results of the e)-5.209 F .209 +(xpansion are pre\214x-matched ag)-.15 F .21(ainst the w)-.05 F .21 +(ord being com-)-.1 F(pleted, and the matching w)108 184.8 Q +(ords become the possible completions.)-.1 E .234 +(After these matches ha)108 201.6 R .534 -.15(ve b)-.2 H .234 +(een generated, an).15 F 2.734(ys)-.15 G .233 +(hell function or command speci\214ed with the)-2.734 F F12.733 E +F0(and)2.733 E F12.733 E F0(op-)2.733 E 4.208(tions is in)108 +213.6 R -.2(vo)-.4 G -.1(ke).2 G 6.708(d. When).1 F 4.209 +(the command or function is in)6.708 F -.2(vo)-.4 G -.1(ke).2 G 4.209 +(d, the).1 F F2(COMP_LINE)6.709 E F3(,)A F2(COMP_POINT)6.459 E F3(,)A F2 +(COMP_KEY)108 225.6 Q F3(,)A F0(and)2.408 E F2(COMP_TYPE)2.658 E F0 -.25 +(va)2.408 G .157(riables are assigned v).25 F .157 +(alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F1 .157 +(Shell V)2.657 F(ariables)-.92 E F0 5.157(.I)C(f)-5.157 E 3.485(as)108 +237.6 S .986(hell function is being in)-3.485 F -.2(vo)-.4 G -.1(ke).2 G +.986(d, the).1 F F2(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F2 +(COMP_CW)3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986 +(riables are also set.).25 F(When)5.986 E .347 +(the function or command is in)108 249.6 R -.2(vo)-.4 G -.1(ke).2 G .347 +(d, the \214rst ar).1 F .346(gument \()-.18 F F1($1)A F0 2.846(\)i)C +2.846(st)-2.846 G .346(he name of the command whose ar)-2.846 F(guments) +-.18 E .263(are being completed, the second ar)108 261.6 R .263 +(gument \()-.18 F F1($2)A F0 2.763(\)i)C 2.763(st)-2.763 G .264(he w) +-2.763 F .264(ord being completed, and the third ar)-.1 F .264 +(gument \()-.18 F F1($3)A F0 2.764(\)i)C(s)-2.764 E .629(the w)108 273.6 +R .629(ord preceding the w)-.1 F .629 +(ord being completed on the current command line.)-.1 F .628 +(No \214ltering of the generated)5.629 F .714(completions ag)108 285.6 R +.714(ainst the w)-.05 F .714(ord being completed is performed; the func\ +tion or command has complete free-)-.1 F(dom in generating the matches.) +108 297.6 Q(An)108 314.4 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 326.4 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 +338.4 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 +E(Ne)108 355.2 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 367.2 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 +379.2 Q(wline, if necessary)-.25 E(.)-.65 E .377 +(After all of the possible completions are generated, an)108 396 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 408 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 420 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 432 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 444 Q -.05(ga)-.15 G .764 +(tes the pattern; in this case an).05 F 3.264(yc)-.15 G .764 +(ompletion not matching the pattern will be remo)-3.264 F -.15(ve)-.15 G +3.264(d. If).15 F(the)3.264 E F1(nocase-)3.264 E(match)108 456 Q F0 +(shell option is enabled, the match is performed without re)2.5 E -.05 +(ga)-.15 G(rd to the case of alphabetic characters.).05 E(Finally)108 +472.8 Q 3.086(,a)-.65 G .886 -.15(ny p)-3.086 H .586(re\214x and suf).15 +F .587(\214x speci\214ed with the)-.25 F F13.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 comple\ +tion code as the list of possible completions.)108 484.8 Q .247 +(If the pre)108 501.6 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 .246(as supplied to)-.1 F +F1(complete)108 513.6 Q F0(when the compspec w)2.5 E +(as de\214ned, directory name completion is attempted.)-.1 E .461 +(If the)108 530.4 R F1 .462(\255o plusdirs)2.961 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 542.4 Q 2.5(ym)-.15 G +(atches are added to the results of the other actions.)-2.5 E .56 +(By def)108 559.2 R .56(ault, if a compspec is found, whate)-.1 F -.15 +(ve)-.25 G 3.06(ri).15 G 3.06(tg)-3.06 G .559 +(enerates is returned to the completion code as the full set)-3.06 F +.631(of possible completions.)108 571.2 R .631(The def)5.631 F(ault)-.1 +E F1(bash)3.131 E F0 .631 +(completions are not attempted, and the readline def)3.131 F .632 +(ault of \214le-)-.1 F .559(name completion is disabled.)108 583.2 R +.559(If the)5.559 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w) +3.059 F .559(as supplied to)-.1 F F1(complete)3.058 E F0 .558 +(when the compspec)3.058 F -.1(wa)108 595.2 S 3.171(sd).1 G .671 +(e\214ned, the)-3.171 F F1(bash)3.171 E F0(def)3.171 E .671 +(ault completions are attempted if the compspec generates no matches.) +-.1 F .672(If the)5.672 F F13.172 E(default)108 607.2 Q F0 1.207 +(option w)3.707 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.206(ault completion)-.1 F +(will be performed if the compspec \(and, if attempted, the def)108 +619.2 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 636 R .633(tions force r\ +eadline to append a slash to completed names which are symbolic links t\ +o directories, subject)108 648 R 2.761(to the v)108 660 R 2.761 +(alue of the)-.25 F F1(mark\255dir)5.261 E(ectories)-.18 E F0 2.761 +(readline v)5.261 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.762 +(rdless of the setting of the).05 F F1(mark-sym-)5.262 E(link)108 672 Q +(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E +.191(There is some support for dynamically modifying completions.)108 +688.8 R .19(This is most useful when used in combina-)5.191 F 1.172 +(tion with a def)108 700.8 R 1.172(ault completion speci\214ed with)-.1 +F F1 1.172(complete \255D)3.672 F F0 6.172(.I)C(t')-6.172 E 3.672(sp) +-.55 G 1.172(ossible for shell functions e)-3.672 F -.15(xe)-.15 G 1.172 +(cuted as).15 F .93(completion handlers to indicate that completion sho\ +uld be retried by returning an e)108 712.8 R .93(xit status of 124.)-.15 +F .93(If a)5.93 F .1(shell function returns 124, and changes the compsp\ +ec associated with the command on which completion is)108 724.8 R +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(53)190.395 E 0 Cg EP +%%Page: 54 54 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .666 +(being attempted \(supplied as the \214rst ar)108 84 R .665 +(gument when the function is e)-.18 F -.15(xe)-.15 G .665 +(cuted\), programmable completion).15 F .083(restarts from the be)108 96 +R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)-.25 G +.084(ompspec for that command.)-2.584 F .084(This allo)5.084 F .084 +(ws a set of)-.25 F(completions to be b)108 108 Q(uilt dynamically as c\ +ompletion is attempted, rather than being loaded all at once.)-.2 E -.15 +(Fo)108 124.8 S 2.637(ri).15 G .137 +(nstance, assuming that there is a library of compspecs, each k)-2.637 F +.137(ept in a \214le corresponding to the name of)-.1 F +(the command, the follo)108 136.8 Q(wing def)-.25 E +(ault completion function w)-.1 E(ould load completions dynamically:)-.1 +E/F1 10/Courier@0 SF(_completion_loader\(\))108 153.6 Q({)108 165.6 Q 6 +(.")144 177.6 S +(/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108 +189.6 Q(complete -D -F _completion_loader -o bashdefault -o default)108 +201.6 Q/F2 10.95/Times-Bold@0 SF(HIST)72 230.4 Q(OR)-.197 E(Y)-.383 E F0 +.371(When the)108 242.4 R/F3 10/Times-Bold@0 SF .371(\255o history)2.871 +F F0 .371(option to the)2.871 F F3(set)2.872 E F0 -.2(bu)2.872 G .372 +(iltin is enabled, the shell pro).2 F .372(vides access to the)-.15 F/F4 +10/Times-Italic@0 SF .372(command history)2.872 F F0(,)A .305 +(the list of commands pre)108 254.4 R .305(viously typed.)-.25 F .305 +(The v)5.305 F .304(alue of the)-.25 F/F5 9/Times-Bold@0 SF(HISTSIZE) +2.804 E F0 -.25(va)2.554 G .304(riable is used as the number of com-).25 +F .429(mands to sa)108 266.4 R .729 -.15(ve i)-.2 H 2.929(nah).15 G .429 +(istory list.)-2.929 F .429(The te)5.429 F .429(xt of the last)-.15 F F5 +(HISTSIZE)2.93 E F0 .43(commands \(def)2.68 F .43(ault 500\) is sa)-.1 F +-.15(ve)-.2 G 2.93(d. The).15 F(shell)2.93 E .287 +(stores each command in the history list prior to parameter and v)108 +278.4 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E +(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 290.4 +S 4.065(ta).2 G 1.565(fter history e)-4.065 F 1.565 +(xpansion is performed, subject to the v)-.15 F 1.565 +(alues of the shell v)-.25 F(ariables)-.25 E F5(HISTIGNORE)4.065 E F0 +(and)3.816 E F5(HISTCONTR)108 302.4 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) +A F0 .082 +(On startup, the history is initialized from the \214le named by the v) +108 319.2 R(ariable)-.25 E F5(HISTFILE)2.582 E F0(\(def)2.332 E(ault)-.1 +E F4(~/.bash_history)2.582 E F0(\).)A .315(The \214le named by the v)108 +331.2 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315 +(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 .659 +(lines speci\214ed by the v)108 343.2 R .659(alue of)-.25 F F5 +(HISTFILESIZE)3.158 E F6(.)A F0(If)5.158 E F3(HISTFILESIZE)3.158 E F0 +.658(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 355.2 S +.142(lue, or a numeric v).25 F .142 +(alue less than zero, the history \214le is not truncated.)-.25 F .142 +(When the history \214le is read, lines)5.142 F(be)108 367.2 Q 1.605 +(ginning with the history comment character follo)-.15 F 1.604 +(wed immediately by a digit are interpreted as time-)-.25 F .15 +(stamps for the follo)108 379.2 R .15(wing history line.)-.25 F .151 +(These timestamps are optionally displayed depending on the v)5.151 F +.151(alue of)-.25 F(the)108 391.2 Q F5(HISTTIMEFORMA)3.559 E(T)-.855 E +F0 -.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059 +(hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F5 +($HISTSIZE)3.559 E F0 1.058(lines are)3.309 F .158 +(copied from the history list to)108 403.2 R F5($HISTFILE)2.658 E F6(.)A +F0 .158(If the)4.658 F F3(histappend)2.658 E F0 .159 +(shell option is enabled \(see the description of)2.659 F F3(shopt)108 +415.2 Q F0(under)2.582 E F5 .082(SHELL B)2.582 F(UIL)-.09 E .082 +(TIN COMMANDS)-.828 F F0(belo)2.332 E .082 +(w\), the lines are appended to the history \214le, otherwise the)-.25 F +.196(history \214le is o)108 427.2 R -.15(ve)-.15 G 2.696(rwritten. If) +.15 F F5(HISTFILE)2.696 E F0 .197(is unset, or if the history \214le is\ + unwritable, the history is not sa)2.446 F -.15(ve)-.2 G(d.).15 E .584 +(If the)108 439.2 R F5(HISTTIMEFORMA)3.084 E(T)-.855 E F0 -.25(va)2.834 +G .584 +(riable is set, time stamps are written to the history \214le, mark).25 +F .583(ed with the his-)-.1 F 1.147(tory comment character)108 451.2 R +3.647(,s)-.4 G 3.647(ot)-3.647 G(he)-3.647 E 3.647(ym)-.15 G 1.147 +(ay be preserv)-3.647 F 1.147(ed across shell sessions.)-.15 F 1.148 +(This uses the history comment)6.148 F 1.377 +(character to distinguish timestamps from other history lines.)108 463.2 +R 1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.876(,t)-.65 G +1.376(he history \214le is)-3.876 F .756 +(truncated to contain no more than)108 475.2 R F5(HISTFILESIZE)3.257 E +F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757 +(is unset, or set to null, a non-)3.007 F(numeric v)108 487.2 Q +(alue, or a numeric v)-.25 E +(alue less than zero, the history \214le is not truncated.)-.25 E .299 +(The b)108 504 R .299(uiltin command)-.2 F F3(fc)2.799 E F0(\(see)2.799 +E F5 .299(SHELL B)2.799 F(UIL)-.09 E .299(TIN COMMANDS)-.828 F F0(belo) +2.549 E .298(w\) may be used to list or edit and re-e)-.25 F -.15(xe) +-.15 G(-).15 E .471(cute a portion of the history list.)108 516 R(The) +5.471 E F3(history)2.971 E F0 -.2(bu)2.971 G .472 +(iltin may be used to display or modify the history list and).2 F .002 +(manipulate the history \214le.)108 528 R .001 +(When using command-line editing, search commands are a)5.002 F -.25(va) +-.2 G .001(ilable in each edit-).25 F(ing mode that pro)108 540 Q +(vide access to the history list.)-.15 E 1.485(The shell allo)108 556.8 +R 1.485(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486 +(hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 G 3.986(nt) +-3.986 G 1.486(he history list.)-3.986 F(The)6.486 E F5(HISTCONTR)3.986 +E(OL)-.27 E F0(and)3.736 E F5(HISTIGNORE)108 568.8 Q F0 -.25(va)2.708 G +.458(riables may be set to cause the shell to sa).25 F .757 -.15(ve o) +-.2 H .457(nly a subset of the commands entered.).15 F(The)5.457 E F3 +(cmdhist)108 580.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 592.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 F3(lithist)3.576 E F0 +.373(shell option causes the shell to sa)108 604.8 R .674 -.15(ve t)-.2 +H .374(he command with embedded ne).15 F .374 +(wlines instead of semicolons.)-.25 F .374(See the)5.374 F .319 +(description of the)108 616.8 R F3(shopt)2.819 E F0 -.2(bu)2.819 G .318 +(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F5 .318(SHELL B)2.818 F +(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .318 +(for information on setting and)2.568 F(unsetting shell options.)108 +628.8 Q F2(HIST)72 645.6 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E +(ANSION)-.81 E F0 .61(The shell supports a history e)108 657.6 R .611 +(xpansion feature that is similar to the history e)-.15 F .611 +(xpansion in)-.15 F F3(csh)3.111 E F0 5.611(.T)C .611(his section)-5.611 +F .871(describes what syntax features are a)108 669.6 R -.25(va)-.2 G +3.371(ilable. This).25 F .871(feature is enabled by def)3.371 F .87 +(ault for interacti)-.1 F 1.17 -.15(ve s)-.25 H .87(hells, and).15 F +.949(can be disabled using the)108 681.6 R F3(+H)3.449 E F0 .949 +(option to the)3.449 F F3(set)3.449 E F0 -.2(bu)3.449 G .949 +(iltin command \(see).2 F F5 .949(SHELL B)3.449 F(UIL)-.09 E .95 +(TIN COMMANDS)-.828 F F0(be-)3.2 E(lo)108 693.6 Q 2.5 +(w\). Non-interacti)-.25 F .3 -.15(ve s)-.25 H +(hells do not perform history e).15 E(xpansion by def)-.15 E(ault.)-.1 E +1.306(History e)108 710.4 R 1.306(xpansions introduce w)-.15 F 1.306(or\ +ds from the history list into the input stream, making it easy to repea\ +t)-.1 F .209(commands, insert the ar)108 722.4 R .209(guments to a pre) +-.18 F .21 +(vious command into the current input line, or \214x errors in pre)-.25 +F(vious)-.25 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(54) +190.395 E 0 Cg EP +%%Page: 55 55 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(commands quickly) +108 84 Q(.)-.65 E 1.164(History e)108 100.8 R 1.163(xpansion is perform\ +ed immediately after a complete line is read, before the shell breaks i\ +t into)-.15 F -.1(wo)108 112.8 S .251 +(rds, and is performed on each line indi).1 F .251 +(vidually without taking quoting on pre)-.25 F .252 +(vious lines into account.)-.25 F(It)5.252 E(tak)108 124.8 Q .146 +(es place in tw)-.1 F 2.646(op)-.1 G 2.646(arts. The)-2.646 F .146(\214\ +rst is to determine which line from the history list to use during subs\ +titution.)2.646 F .766(The second is to select portions of that line fo\ +r inclusion into the current one.)108 136.8 R .767 +(The line selected from the)5.767 F .254(history is the)108 148.8 R/F1 +10/Times-Italic@0 SF -.15(ev)2.754 G(ent).15 E F0 2.753(,a)C .253 +(nd the portions of that line that are acted upon are)-2.753 F F1(wor) +2.753 E(ds)-.37 E F0 5.253(.V)C(arious)-6.363 E F1(modi\214er)2.753 E(s) +-.1 E F0 .253(are a)2.753 F -.25(va)-.2 G(il-).25 E .538 +(able to manipulate the selected w)108 160.8 R 3.038(ords. The)-.1 F +.538(line is brok)3.038 F .538(en into w)-.1 F .539(ords in the same f) +-.1 F .539(ashion as when reading)-.1 F .573(input, so that se)108 172.8 +R -.15(ve)-.25 G(ral).15 E F1(metac)3.073 E(har)-.15 E(acter)-.15 E F0 +.572(-separated w)B .572(ords surrounded by quotes are considered one w) +-.1 F 3.072(ord. His-)-.1 F .355(tory e)108 184.8 R .355 +(xpansions are introduced by the appearance of the history e)-.15 F .355 +(xpansion character)-.15 F 2.855(,w)-.4 G .356(hich is)-2.855 F/F2 10 +/Times-Bold@0 SF(!)3.689 E F0 .356(by def)3.689 F(ault.)-.1 E .791 +(Only backslash \()108 196.8 R F2(\\).833 E F0 3.291(\)a).833 G .79 +(nd single quotes can quote the history e)-3.291 F .79 +(xpansion character)-.15 F 3.29(,b)-.4 G .79(ut the history e)-3.49 F +(xpansion)-.15 E .789(character is also treated as quoted if it immedia\ +tely precedes the closing double quote in a double-quoted)108 208.8 R +(string.)108 220.8 Q(Se)108 237.6 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 249.6 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 261.6 Q(xpansion.)-.15 E(Se)108 278.4 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 .231(If the)108 290.4 R F2 +(histv)2.731 E(erify)-.1 E F0 .231 +(shell option is enabled \(see the description of the)2.731 F F2(shopt) +2.731 E F0 -.2(bu)2.731 G .231(iltin belo).2 F .231(w\), and)-.25 F F2 +-.18(re)2.731 G(adline).18 E F0 .232(is be-)2.732 F .449(ing used, hist\ +ory substitutions are not immediately passed to the shell parser)108 +302.4 R 5.449(.I)-.55 G .448(nstead, the e)-5.449 F .448 +(xpanded line is)-.15 F 2.228(reloaded into the)108 314.4 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 326.4 +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 338.4 S -.25(ff).2 G +.303(er for correction.).25 F(The)5.303 E F22.803 E F0 .303 +(option to the)2.803 F F2(history)2.804 E F0 -.2(bu)2.804 G .304 +(iltin command may be used to see what a history e).2 F(x-)-.15 E .52 +(pansion will do before using it.)108 350.4 R(The)5.52 E F23.02 E +F0 .52(option to the)3.02 F F2(history)3.02 E F0 -.2(bu)3.02 G .52 +(iltin may be used to add commands to the).2 F +(end of the history list without actually e)108 362.4 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 1.108(The shell allo)108 379.2 R +1.108(ws control of the v)-.25 F 1.108 +(arious characters used by the history e)-.25 F 1.108 +(xpansion mechanism \(see the de-)-.15 F .163(scription of)108 391.2 R +F2(histchars)2.663 E F0(abo)2.663 E .463 -.15(ve u)-.15 H(nder).15 E F2 +.163(Shell V)2.663 F(ariables)-.92 E F0 2.663(\). The)B .162 +(shell uses the history comment character to mark)2.663 F +(history timestamps when writing the history \214le.)108 403.2 Q F2(Ev) +87 420 Q(ent Designators)-.1 E F0 .204(An e)108 432 R -.15(ve)-.25 G +.204(nt designator is a reference to a command line entry in the histor\ +y list.).15 F .205(Unless the reference is abso-)5.204 F(lute, e)108 444 +Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5(ot).15 G +(he current position in the history list.)-2.5 E F2(!)108 460.8 Q F0 +1.608(Start a history substitution, e)144 460.8 R 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 472.8 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 484.8 Q F1(n)A F0(Refer to command line)144 +484.8 Q F1(n)2.86 E F0(.).24 E F2<21ad>108 496.8 Q F1(n)A F0 +(Refer to the current command minus)144 496.8 Q F1(n)2.86 E F0(.).24 E +F2(!!)108 508.8 Q F0(Refer to the pre)144 508.8 Q(vious command.)-.25 E +(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 520.8 Q F1(string) +A F0 .865(Refer to the most recent command preceding the current positi\ +on in the history list starting with)144 520.8 R F1(string)144.34 532.8 +Q F0(.).22 E F2(!?)108 544.8 Q F1(string)A F2([?])A F0 1.503(Refer to t\ +he most recent command preceding the current position in the history li\ +st containing)144 556.8 R F1(string)144.34 568.8 Q F0 5.496(.T).22 G +.496(he trailing)-5.496 F F2(?)2.996 E F0 .496(may be omitted if)2.996 F +F1(string)3.336 E F0 .497(is follo)3.216 F .497(wed immediately by a ne) +-.25 F 2.997(wline. If)-.25 F F1(string)2.997 E F0(is)2.997 E .391(miss\ +ing, the string from the most recent search is used; it is an error if \ +there is no pre)144 580.8 R .39(vious search)-.25 F(string.)144 592.8 Q +/F3 12/Times-Bold@0 SF(^)108 609.8 Q F1(string1)-5 I F3(^)5 I F1 +(string2)-5 I F3(^)5 I F0 .752(Quick substitution.)144 616.8 R .752 +(Repeat the pre)5.752 F .753(vious command, replacing)-.25 F F1(string1) +3.593 E F0(with)3.253 E F1(string2)3.593 E F0 5.753(.E).02 G(qui)-5.753 +E -.25(va)-.25 G .753(lent to).25 F -.74(``)144 628.8 S(!!:s).74 E/F4 12 +/Times-Roman@0 SF(^)5 I F1(string1)-5 I F4(^)5 I F1(string2)-5 I F4(^)5 +I F0 1.48 -.74('' \()-5 L(see).74 E F2(Modi\214ers)2.5 E F0(belo)2.5 E +(w\).)-.25 E F2(!#)108 640.8 Q F0(The entire command line typed so f)144 +640.8 Q(ar)-.1 E(.)-.55 E F2 -.75(Wo)87 657.6 S(rd Designators).75 E F0 +-.8(Wo)108 669.6 S 1.314(rd designators are used to select desired w).8 +F 1.314(ords from the e)-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:) +3.814 E F0 1.313(separates the e)3.813 F -.15(ve)-.25 G 1.313 +(nt speci\214cation).15 F .529(from the w)108 681.6 R .529 +(ord designator)-.1 F 5.529(.I)-.55 G 3.029(tm)-5.529 G .529 +(ay be omitted if the w)-3.029 F .529(ord designator be)-.1 F .529 +(gins with a)-.15 F F2(^)3.029 E F0(,)A F2($)3.029 E F0(,)A F2(*)3.029 E +F0(,)A F23.029 E F0 3.029(,o)C(r)-3.029 E F2(%)3.029 E F0 5.53(.W)C +(ords)-6.33 E .516(are numbered from the be)108 693.6 R .516 +(ginning of the line, with the \214rst w)-.15 F .516 +(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)5.515 G .515(rds are in-) +.8 F(serted into the current line separated by single spaces.)108 705.6 +Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(55)190.395 E 0 Cg EP +%%Page: 56 56 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF 2.5(0\()108 84 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 96 Q 2.5 +(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E/F2 +10/Times-Italic@0 SF(n)108.36 108 Q F0(The)144 108 Q F2(n)2.5 E F0(th w) +A(ord.)-.1 E F1(^)108 120 Q F0(The \214rst ar)144 120 Q 2.5 +(gument. That)-.18 F(is, w)2.5 E(ord 1.)-.1 E F1($)108 132 Q F0 .063 +(The last w)144 132 R 2.563(ord. This)-.1 F .063(is usually the last ar) +2.563 F .064(gument, b)-.18 F .064(ut will e)-.2 F .064 +(xpand to the zeroth w)-.15 F .064(ord if there is only)-.1 F(one w)144 +144 Q(ord in the line.)-.1 E F1(%)108 156 Q F0 1.42(The \214rst w)144 +156 R 1.42(ord matched by the most recent `?)-.1 F F2(string)A F0 1.419 +(?' search, if the search string be)B 1.419(gins with a)-.15 F +(character that is part of a w)144 168 Q(ord.)-.1 E F2(x)108.77 180 Q F1 +A F2(y)A F0 2.5(Ar)144 180 S(ange of w)-2.5 E(ords; `\255)-.1 E F2 +(y)A F0 2.5('a)C(bbre)-2.5 E(viates `0\255)-.25 E F2(y)A F0('.)A F1(*) +108 192 Q F0 .315(All of the w)144 192 R .315(ords b)-.1 F .315 +(ut the zeroth.)-.2 F .315(This is a synon)5.315 F .315(ym for `)-.15 F +F2(1\255$)A F0 2.815('. It)B .315(is not an error to use)2.815 F F1(*) +2.816 E F0 .316(if there is)2.816 F(just one w)144 204 Q(ord in the e) +-.1 E -.15(ve)-.25 G(nt; the empty string is returned in that case.).15 +E F1(x*)108 216 Q F0(Abbre)144 216 Q(viates)-.25 E F2(x\255$)2.5 E F0(.) +A F1<78ad>108 228 Q F0(Abbre)144 228 Q(viates)-.25 E F2(x\255$)2.5 E F0 +(lik)2.5 E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E +2.5(ord. If)-.1 F F1(x)2.5 E F0(is missing, it def)2.5 E(aults to 0.)-.1 +E(If a w)108 244.8 Q(ord designator is supplied without an e)-.1 E -.15 +(ve)-.25 G(nt speci\214cation, the pre).15 E +(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1 +(Modi\214ers)87 261.6 Q F0 .184(After the optional w)108 273.6 R .184 +(ord designator)-.1 F 2.684(,t)-.4 G .183 +(here may appear a sequence of one or more of the follo)-2.684 F .183 +(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 285.6 Q +(These modify)5 E 2.5(,o)-.65 G 2.5(re)-2.5 G(dit, the w)-2.5 E +(ord or w)-.1 E(ords selected from the history e)-.1 E -.15(ve)-.25 G +(nt.).15 E F1(h)108 302.4 Q F0(Remo)144 302.4 Q .3 -.15(ve a t)-.15 H +(railing \214lename component, lea).15 E(ving only the head.)-.2 E F1(t) +108 314.4 Q F0(Remo)144 314.4 Q .3 -.15(ve a)-.15 H +(ll leading \214lename components, lea).15 E(ving the tail.)-.2 E F1(r) +108 326.4 Q F0(Remo)144 326.4 Q .3 -.15(ve a t)-.15 H(railing suf).15 E +(\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E +(ving the basename.)-.2 E F1(e)108 338.4 Q F0(Remo)144 338.4 Q .3 -.15 +(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 +350.4 Q F0(Print the ne)144 350.4 Q 2.5(wc)-.25 G(ommand b)-2.5 E +(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 362.4 Q F0 +(Quote the substituted w)144 362.4 Q +(ords, escaping further substitutions.)-.1 E F1(x)108 374.4 Q F0 .385 +(Quote the substituted w)144 374.4 R .385(ords as with)-.1 F F1(q)2.885 +E F0 2.885(,b)C .386(ut break into w)-3.085 F .386(ords at)-.1 F F1 +(blanks)2.886 E F0 .386(and ne)2.886 F 2.886(wlines. The)-.25 F F1(q) +2.886 E F0(and)2.886 E F1(x)2.886 E F0(modi\214ers are mutually e)144 +386.4 Q(xclusi)-.15 E -.15(ve)-.25 G 2.5(;t).15 G +(he last one supplied is used.)-2.5 E F1(s/)108 398.4 Q F2(old)A F1(/)A +F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 410.4 Q F2(ne)3.329 E(w)-.15 E +F0 .469(for the \214rst occurrence of)3.279 F F2(old)3.199 E F0 .469 +(in the e)3.739 F -.15(ve)-.25 G .469(nt line.).15 F(An)5.469 E 2.969 +(yc)-.15 G .469(haracter may be used as the)-2.969 F .953 +(delimiter in place of /.)144 422.4 R .953 +(The \214nal delimiter is optional if it is the last character of the e) +5.953 F -.15(ve)-.25 G .954(nt line.).15 F .131 +(The delimiter may be quoted in)144 434.4 R F2(old)2.861 E F0(and)3.401 +E F2(ne)2.991 E(w)-.15 E F0 .131(with a single backslash.)2.941 F .131 +(If & appears in)5.131 F F2(ne)2.991 E(w)-.15 E F0 2.631(,i).31 G 2.631 +(ti)-2.631 G 2.631(sr)-2.631 G(e-)-2.631 E .619(placed by)144 446.4 R F2 +(old)3.349 E F0 5.619(.A).77 G .619(single backslash will quote the &.) +-2.5 F(If)5.619 E F2(old)3.349 E F0 .619(is null, it is set to the last) +3.889 F F2(old)3.349 E F0(substi-)3.89 E .487(tuted, or)144 458.4 R +2.987(,i)-.4 G 2.987(fn)-2.987 G 2.987(op)-2.987 G(re)-2.987 E .486 +(vious history substitutions took place, the last)-.25 F F2(string)3.326 +E F0 .486(in a)3.206 F F1(!?)2.986 E F2(string)A F1([?])A F0 2.986 +(search. If)5.486 F F2(ne)144.36 470.4 Q(w)-.15 E F0 +(is null, each matching)2.81 E F2(old)2.73 E F0(is deleted.)3.27 E F1(&) +108 482.4 Q F0(Repeat the pre)144 482.4 Q(vious substitution.)-.25 E F1 +(g)108 494.4 Q F0 .397(Cause changes to be applied o)144 494.4 R -.15 +(ve)-.15 G 2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398 +(nt line.).15 F .398(This is used in conjunction with `)5.398 F F1(:s)A +F0 2.898('\()C(e.g.,)-2.898 E(`)144 506.4 Q F1(:gs/)A F2(old)A F1(/)A F2 +(ne)A(w)-.15 E F1(/)A F0 .351('\) or `)B F1(:&)A F0 2.851('. If)B .351 +(used with `)2.851 F F1(:s)A F0 .351(', an)B 2.851(yd)-.15 G .35 +(elimiter can be used in place of /, and the \214nal de-)-2.851 F +(limiter is optional if it is the last character of the e)144 518.4 Q +-.15(ve)-.25 G(nt line.).15 E(An)5 E F1(a)2.5 E F0 +(may be used as a synon)2.5 E(ym for)-.15 E F1(g)2.5 E F0(.)A F1(G)108 +530.4 Q F0(Apply the follo)144 530.4 Q(wing `)-.25 E F1(s)A F0 2.5('o)C +2.5(r`)-2.5 G F1(&)-2.5 E F0 2.5('m)C(odi\214er once to each w)-2.5 E +(ord in the e)-.1 E -.15(ve)-.25 G(nt line.).15 E/F3 10.95/Times-Bold@0 +SF(SHELL B)72 547.2 Q(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .062 +(Unless otherwise noted, each b)108 559.2 R .062(uiltin command documen\ +ted in this section as accepting options preceded by)-.2 F F1108 +571.2 Q F0(accepts)3.077 E F13.077 E F0 .577 +(to signify the end of the options.)3.077 F(The)5.577 E F1(:)3.077 E F0 +(,)A F1(true)3.077 E F0(,)A F1(false)3.077 E F0 3.077(,a)C(nd)-3.077 E +F1(test)3.077 E F0(/)A F1([)A F0 -.2(bu)3.077 G .577 +(iltins do not accept options).2 F .461(and do not treat)108 583.2 R F1 +2.961 E F0(specially)2.961 E 5.461(.T)-.65 G(he)-5.461 E F1(exit) +2.961 E F0(,)A F1(logout)2.961 E F0(,)A F1 -.18(re)2.961 G(tur).18 E(n) +-.15 E F0(,)A F1(br)2.961 E(eak)-.18 E F0(,)A F1(continue)2.961 E F0(,)A +F1(let)2.961 E F0 2.961(,a)C(nd)-2.961 E F1(shift)2.961 E F0 -.2(bu) +2.962 G .462(iltins accept and).2 F .261(process ar)108 595.2 R .261 +(guments be)-.18 F .261(ginning with)-.15 F F12.761 E F0 .261 +(without requiring)2.761 F F12.761 E F0 5.261(.O)C .261(ther b) +-5.261 F .26(uiltins that accept ar)-.2 F .26(guments b)-.18 F .26 +(ut are not)-.2 F 1.154(speci\214ed as accepting options interpret ar) +108 607.2 R 1.154(guments be)-.18 F 1.154(ginning with)-.15 F F1 +3.654 E F0 1.154(as in)3.654 F -.25(va)-.4 G 1.154 +(lid options and require).25 F F13.654 E F0(to)3.654 E(pre)108 +619.2 Q -.15(ve)-.25 G(nt this interpretation.).15 E F1(:)108 637.2 Q F0 +([)2.5 E F2(ar)A(guments)-.37 E F0(])A .452(No ef)144 649.2 R .452 +(fect; the command does nothing be)-.25 F .452(yond e)-.15 F(xpanding) +-.15 E F2(ar)3.282 E(guments)-.37 E F0 .451(and performing an)3.221 F +2.951(ys)-.15 G(peci\214ed)-2.951 E 2.5(redirections. The)144 661.2 R +(return status is zero.)2.5 E F1(.)110.5 678 Q F2(\214lename)6.666 E F0 +([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 690 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 702 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.331 +(status of the last command e)144 714 R -.15(xe)-.15 G 1.331(cuted from) +.15 F F2(\214lename)5.741 E F0 6.331(.I).18 G(f)-6.331 E F2(\214lename) +5.741 E F0 1.33(does not contain a slash, \214le-)4.011 F .488(names in) +144 726 R/F4 9/Times-Bold@0 SF -.666(PA)2.988 G(TH)-.189 E F0 .488 +(are used to \214nd the directory containing)2.738 F F2(\214lename)4.899 +E F0 5.489(.T).18 G .489(he \214le searched for in)-5.489 F F4 -.666(PA) +2.989 G(TH)-.189 E F0(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E +(56)190.395 E 0 Cg EP +%%Page: 57 57 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .833 +(need not be e)144 84 R -.15(xe)-.15 G 3.333(cutable. When).15 F/F1 10 +/Times-Bold@0 SF(bash)3.333 E F0 .832(is not in)3.333 F/F2 10 +/Times-Italic@0 SF .832(posix mode)3.332 F F0 3.332(,t)C .832 +(he current directory is searched if no)-3.332 F .981 +(\214le is found in)144 96 R/F3 9/Times-Bold@0 SF -.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 .982(f, the)-.25 F F3 -.666 +(PA)144 108 S(TH)-.189 E F0 .112(is not searched.)2.363 F .112(If an) +5.112 F(y)-.15 E F2(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the) +2.612 F 2.612(yb)-.15 G .112(ecome the positional parameters when)-2.612 +F F2(\214lename)144 120 Q F0 .485(is e)2.985 F -.15(xe)-.15 G 2.985 +(cuted. Otherwise).15 F .485(the positional parameters are unchanged.) +2.985 F .485(If the)5.485 F F12.985 E F0 .485(option is en-)2.985 +F(abled,)144 132 Q F1(sour)3.325 E(ce)-.18 E F0 .825(inherits an)3.325 F +3.325(yt)-.15 G .825(rap on)-3.325 F F1(DEB)3.325 E(UG)-.1 E F0 3.325 +(;i)C 3.325(fi)-3.325 G 3.324(ti)-3.325 G 3.324(sn)-3.324 G .824(ot, an) +-3.324 F(y)-.15 E F1(DEB)3.324 E(UG)-.1 E F0 .824(trap string is sa) +3.324 F -.15(ve)-.2 G 3.324(da).15 G .824(nd re-)-3.324 F .817 +(stored around the call to)144 144 R F1(sour)3.317 E(ce)-.18 E F0 3.317 +(,a)C(nd)-3.317 E F1(sour)3.317 E(ce)-.18 E F0 .817(unsets the)3.317 F +F1(DEB)3.317 E(UG)-.1 E F0 .817(trap while it e)3.317 F -.15(xe)-.15 G +3.317(cutes. If).15 F F13.317 E F0(is)3.318 E 1.435 +(not set, and the sourced \214le changes the)144 156 R F1(DEB)3.935 E +(UG)-.1 E F0 1.435(trap, the ne)3.935 F 3.935(wv)-.25 G 1.435 +(alue is retained when)-4.185 F F1(sour)3.935 E(ce)-.18 E F0 3.762 +(completes. The)144 168 R 1.262 +(return status is the status of the last command e)3.762 F 1.263 +(xited within the script \(0 if no)-.15 F(commands are e)144 180 Q -.15 +(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E F0 +(is not found or cannot be read.)2.68 E F1(alias)108 196.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 208.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 220.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 232.8 Q F2(value)2.509 E F0 .009(is gi)2.509 F -.15 +(ve)-.25 G 2.509(n. A).15 F .009(trailing space in)2.509 F F2(value) +2.509 E F0 .009(causes the ne)2.509 F .009(xt w)-.15 F .009 +(ord to be check)-.1 F .008(ed for alias substi-)-.1 F .579 +(tution when the alias is e)144 244.8 R 3.079(xpanded. F)-.15 F .579 +(or each)-.15 F F2(name)3.079 E F0 .579(in the ar)3.079 F .579 +(gument list for which no)-.18 F F2(value)3.079 E F0 .579(is sup-)3.079 +F 1.314(plied, the name and v)144 256.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 268.8 Q F1(bg)108 285.6 Q F0([) +2.5 E F2(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144 +297.6 R F2(jobspec)3.244 E F0 .745 +(in the background, as if it had been started with)3.244 F F1(&)3.245 E +F0 5.745(.I)C(f)-5.745 E F2(job-)4.985 E(spec)144 309.6 Q F0 .672 +(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the) +-3.172 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1 +(bg)5.671 E F2(jobspec)4.911 E F0 .671(returns 0 unless run)3.481 F .418 +(when job control is disabled or)144 321.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 333.6 Q(as started without job control.)-.1 +E F1(bind)108 350.4 Q F0([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0 +2.5(][)C F1(\255lpsvPSVX)-2.5 E F0(])A F1(bind)108 362.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 374.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 386.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 398.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 410.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 -.37(re)C +(adline\255command).37 E F0 .239(Display current)144 422.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 434.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.23 446.4 Q(c)-.37 E F0 2.968(,b).31 G .467 +(ut each binding or command must be passed as a separate ar)-3.168 F +.467(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 +(re\255read\255init\255\214le'. Options,)144 458.4 R(if supplied, ha)2.5 +E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 +470.4 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 482.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 494.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 506.4 Q F0 4.089(,a)C(nd)-4.089 E F2(vi\255insert) +4.379 E F0(.).68 E F2(vi)6.589 E F0 1.589(is equi)4.089 F -.25(va)-.25 G +1.589(lent to).25 F F2(vi\255command)4.089 E F0(\()4.089 E F2(vi\255mo)A +(ve)-.1 E F0 1.59(is also a syn-)4.089 F(on)180 518.4 Q(ym\);)-.15 E F2 +(emacs)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2 +(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1144 530.4 Q F0 +(List the names of all)180 530.4 Q F1 -.18(re)2.5 G(adline).18 E F0 +(functions.)2.5 E F1144 542.4 Q F0(Display)180 542.4 Q 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 554.4 +Q F0(List current)180 554.4 Q F1 -.18(re)2.5 G(adline).18 E F0 +(function names and bindings.)2.5 E F1144 566.4 Q F0(Display)180 +566.4 Q 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 578.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 590.4 Q +F0(Display)180 590.4 Q 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 602.4 Q F0(Display)180 602.4 Q 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 614.4 Q F0(List current)180 614.4 Q +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 626.4 Q F2(\214lename)2.5 E F0(Read k)180 +638.4 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A +F1144 650.4 Q F2(function)2.5 E F0(Query about which k)180 662.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 674.4 Q F2(function) +2.5 E F0(Unbind all k)180 686.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 F1144 698.4 Q +F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 710.4 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(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(57)190.395 E 0 Cg +EP +%%Page: 58 58 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(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 F1(:)A +F2(shell\255command)A F0(Cause)180 96 Q F2(shell\255command)4.325 E F0 +1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve) +-.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F +(When)6.825 E F2(shell\255com-)4.325 E(mand)180 108 Q F0 1.765(is e) +4.265 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F/F3 9 +/Times-Bold@0 SF(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765 +(riable to the contents of the).25 F F1 -.18(re)180 120 S(adline).18 E +F0 .375(line b)2.874 F(uf)-.2 E .375(fer and the)-.25 F F3 +(READLINE_POINT)2.875 E F0(and)2.625 E F3(READLINE_MARK)2.875 E F0 -.25 +(va)2.625 G .375(riables to the).25 F 1.186 +(current location of the insertion point and the sa)180 132 R -.15(ve) +-.2 G 3.685(di).15 G 1.185(nsertion point \(the mark\), respec-)-3.685 F +(ti)180 144 Q -.15(ve)-.25 G(ly).15 E 5.701(.I)-.65 G 3.201(ft)-5.701 G +.701(he e)-3.201 F -.15(xe)-.15 G .701(cuted command changes the v).15 F +.702(alue of an)-.25 F 3.202(yo)-.15 G(f)-3.202 E F3(READLINE_LINE)3.202 +E/F4 9/Times-Roman@0 SF(,)A F3(READ-)2.952 E(LINE_POINT)180 156 Q F4(,)A +F0(or)3.581 E F3(READLINE_MARK)3.831 E F4(,)A F0 1.331(those ne)3.581 F +3.831(wv)-.25 G 1.33(alues will be re\215ected in the editing)-4.081 F +(state.)180 168 Q F1144 180 Q F0 .829(List all k)180 180 R 1.129 +-.15(ey s)-.1 H .829 +(equences bound to shell commands and the associated commands in a for) +.15 F(-)-.2 E(mat that can be reused as input.)180 192 Q(The return v) +144 208.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 225.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .055 +(Exit from within a)144 237.6 R F1 -.25(fo)2.555 G(r).25 E F0(,)A F1 +(while)2.555 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1 +(select)2.555 E F0 2.555(loop. If)2.555 F F2(n)2.555 E F0 .055 +(is speci\214ed, break)2.555 F F2(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G +(ls.).15 E F2(n)5.414 E F0 .054(must be)2.794 F/F5 10/Symbol SF2.554 +E F0(1.)2.554 E(If)144 249.6 Q F2(n)3.074 E F0 .215(is greater than the\ + number of enclosing loops, all enclosing loops are e)2.954 F 2.715 +(xited. The)-.15 F .215(return v)2.715 F(alue)-.25 E(is 0 unless)144 +261.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 +(bu)108 278.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 290.4 Q .771 +(ecute the speci\214ed shell b)-.15 F .771(uiltin, passing it)-.2 F F2 +(ar)3.601 E(guments)-.37 E F0 3.271(,a).27 G .771(nd return its e)-3.271 +F .77(xit status.)-.15 F .77(This is useful)5.77 F .615 +(when de\214ning a function whose name is the same as a shell b)144 +302.4 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144 +314.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 326.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(caller)108 343.2 Q F0([)2.5 E F2 -.2(ex)C(pr) +.2 E F0(])A .253(Returns the conte)144 355.2 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 367.2 Q +(ce)-.18 E F0 -.2(bu)2.825 G 2.825(iltins\). W).2 F(ithout)-.4 E F2 -.2 +(ex)2.825 G(pr).2 E F0(,)A F1(caller)2.825 E F0 .324 +(displays the line number and source \214lename of the current)2.824 F +.253(subroutine call.)144 379.2 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 391.2 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e) +144 403.2 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 415.2 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 427.2 Q +(alid position in the call stack.)-.25 E F1(cd)108 444 Q F0([)2.5 E F1 +A F0(|[)A F1A F0([)2.5 E F1A F0(]] [\255@]] [)A F2 +(dir)A F0(])A .321(Change the current directory to)144 456 R F2(dir) +2.821 E F0 5.321(.i)C(f)-5.321 E F2(dir)2.821 E F0 .322 +(is not supplied, the v)2.821 F .322(alue of the)-.25 F F3(HOME)2.822 E +F0 .322(shell v)2.572 F .322(ariable is)-.25 F 1.036(the def)144 468 R +3.536(ault. An)-.1 F 3.536(ya)-.15 G 1.035(dditional ar)-3.536 F 1.035 +(guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.) +3.535 F 1.035(The v)6.035 F(ariable)-.25 E F3(CDP)3.535 E -.855(AT)-.666 +G(H).855 E F0(de\214nes)3.285 E .826 +(the search path for the directory containing)144 480 R F2(dir)3.676 E +F0 3.326(:e).73 G .826(ach directory name in)-3.326 F F3(CDP)3.326 E +-.855(AT)-.666 G(H).855 E F0 .827(is searched for)3.077 F F2(dir)144 492 +Q F0 5.665(.A)C(lternati)-5.665 E .965 -.15(ve d)-.25 H .665 +(irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 +.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .664 +(ull directory name)-3.165 F(in)144 504 Q F3(CDP)3.101 E -.855(AT)-.666 +G(H).855 E F0 .601(is the same as the current directory)2.851 F 3.102 +(,i)-.65 G .602(.e., `)-3.102 F(`)-.74 E F1(.)A F0 -.74('')C 5.602(.I) +.74 G(f)-5.602 E F2(dir)3.452 E F0(be)3.832 E .602 +(gins with a slash \(/\), then)-.15 F F3(CD-)3.102 E -.666(PA)144 516 S +(TH)-.189 E F0 1.003(is not used.)3.254 F(The)6.003 E F13.503 E F0 +1.003(option causes)3.503 F F1(cd)3.503 E F0 1.003(to use the ph)3.503 F +1.003(ysical directory structure by resolving)-.05 F .123 +(symbolic links while tra)144 528 R -.15(ve)-.2 G(rsing).15 E F2(dir) +2.623 E F0 .123(and before processing instances of)2.623 F F2(..)2.623 E +F0(in)2.623 E F2(dir)2.623 E F0 .123(\(see also the)2.623 F F1 +2.623 E F0(op-)2.623 E .43(tion to the)144 540 R F1(set)2.93 E F0 -.2 +(bu)2.93 G .43(iltin command\); the).2 F F12.929 E F0 .429 +(option forces symbolic links to be follo)2.929 F .429(wed by resolving) +-.25 F .472(the link after processing instances of)144 552 R F2(..)2.972 +E F0(in)2.972 E F2(dir)2.973 E F0 5.473(.I)C(f)-5.473 E F2(..)2.973 E F0 +.473(appears in)2.973 F F2(dir)2.973 E F0 2.973(,i)C 2.973(ti)-2.973 G +2.973(sp)-2.973 G .473(rocessed by remo)-2.973 F .473(ving the)-.15 F +.948(immediately pre)144 564 R .948(vious pathname component from)-.25 F +F2(dir)3.448 E F0 3.448(,b)C .948(ack to a slash or the be)-3.448 F .948 +(ginning of)-.15 F F2(dir)3.448 E F0 5.948(.I)C(f)-5.948 E(the)144 576 Q +F12.868 E F0 .368(option is supplied with)2.868 F F12.868 E +F0 2.868(,a)C .368(nd the current w)-2.868 F .368 +(orking directory cannot be successfully deter)-.1 F(-)-.2 E .612 +(mined after a successful directory change,)144 588 R F1(cd)3.112 E F0 +.612(will return an unsuccessful status.)3.112 F .612(On systems that) +5.612 F .353(support it, the)144 600 R F12.853 E F0 .354 +(option presents the e)2.853 F .354(xtended attrib)-.15 F .354 +(utes associated with a \214le as a directory)-.2 F 5.354(.A)-.65 G(n) +-5.354 E(ar)144 612 Q .072(gument of)-.18 F F12.572 E F0 .072 +(is con)2.572 F -.15(ve)-.4 G .072(rted to).15 F F3($OLDPWD)2.572 E F0 +.072(before the directory change is attempted.)2.322 F .072 +(If a non-empty)5.072 F .054(directory name from)144 624 R F3(CDP)2.554 +E -.855(AT)-.666 G(H).855 E F0 .054(is used, or if)2.304 F F12.555 E +F0 .055(is the \214rst ar)2.555 F .055 +(gument, and the directory change is suc-)-.18 F .168 +(cessful, the absolute pathname of the ne)144 636 R 2.668(ww)-.25 G .168 +(orking directory is written to the standard output.)-2.768 F(The)5.168 +E(return v)144 648 Q(alue is true if the directory w)-.25 E +(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F1(command)108 +664.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 676.8 Q F2(command)2.764 E F0(with) +3.334 E F2(ar)2.894 E(gs)-.37 E F0 .065 +(suppressing the normal shell function lookup.)2.834 F .065(Only b)5.065 +F .065(uiltin commands or)-.2 F .502(commands found in the)144 688.8 R +F3 -.666(PA)3.002 G(TH)-.189 E F0 .502(are e)2.752 F -.15(xe)-.15 G +3.002(cuted. If).15 F(the)3.002 E 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 .399(performed using a def)144 700.8 R .399(ault v)-.1 F +.399(alue for)-.25 F F3 -.666(PA)2.899 G(TH)-.189 E F0 .4 +(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) +5.4 E .175(either the)144 712.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.317(as)144 724.8 S .817(ingle w)-3.317 F .817 +(ord indicating the command or \214lename used to in)-.1 F -.2(vo)-.4 G +-.1(ke).2 G F2(command)3.618 E F0 .818(to be displayed; the)4.088 F +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(58)190.395 E 0 Cg EP +%%Page: 59 59 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 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 96 R/F2 10/Times-Italic@0 SF +(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 108 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 120 S +(iltin is the e).2 E(xit status of)-.15 E F2(command)2.7 E F0(.).77 E F1 +(compgen)108 136.8 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 148.8 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 160.8 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 .13(standard output.)144 172.8 R .13(When using the)5.13 F F1 +2.63 E F0(or)2.63 E F12.631 E F0 .131(options, the v)2.631 F +.131(arious shell v)-.25 F .131(ariables set by the program-)-.25 F +(mable completion f)144 184.8 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 208.8 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 +220.8 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 232.8 Q F2(wor)2.5 E(d)-.37 E F0 +(will be displayed.)2.5 E(The return v)144 256.8 Q +(alue is true unless an in)-.25 E -.25(va)-.4 G +(lid option is supplied, or no matches were generated.).25 E F1 +(complete)108 273.6 Q F0([)2.5 E F1(\255abcdefgjksuv)A F0 2.5(][)C F1 +-2.5 E F2(comp-option)2.5 E F0 2.5(][)C F1(\255DEI)-2.5 E F0 2.5 +(][)C F1-2.5 E F2(action)2.5 E F0 2.5(][)C F1-2.5 E F2 +(globpat)2.5 E F0 2.5(][)C F1-2.5 E F2(wor)2.5 E(dlist)-.37 E F0 +(])A([)144 285.6 Q F1A F2(function)2.5 E F0 2.5(][)C F1-2.5 +E F2(command)2.5 E F0 2.5(][)C F1-2.5 E F2(\214lterpat)2.5 E F0 +2.5(][)C F1-2.5 E F2(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F1 +-2.5 E F2(suf)2.5 E<8c78>-.18 E F0(])A F2(name)2.5 E F0([)2.5 E F2 +(name ...)A F0(])A F1(complete \255pr)108 297.6 Q F0([)2.5 E F1(\255DEI) +A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E .634(Specify ho)144 309.6 R +3.134(wa)-.25 G -.18(rg)-3.134 G .634(uments to each).18 F F2(name)3.134 +E F0 .634(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 321.6 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 +333.6 R(The)5.31 E F12.81 E F0 .31(option remo)2.81 F -.15(ve)-.15 +G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F2(name) +2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F2 +(name)2.81 E F0(s)A 1.207 +(are supplied, all completion speci\214cations.)144 345.6 R(The)6.207 E +F13.707 E F0 1.208(option indicates that other supplied options) +3.708 F .5(and actions should apply to the `)144 357.6 R(`def)-.74 E +(ault')-.1 E 3('c)-.74 G .5 +(ommand completion; that is, completion attempted on)-3 F 3.455(ac)144 +369.6 S .955(ommand for which no completion has pre)-3.455 F .955 +(viously been de\214ned.)-.25 F(The)5.955 E F13.455 E F0 .955 +(option indicates that)3.455 F .876 +(other supplied options and actions should apply to `)144 381.6 R +(`empty')-.74 E 3.376('c)-.74 G .876(ommand completion; that is, com-) +-3.376 F .447(pletion attempted on a blank line.)144 393.6 R(The)5.447 E +F12.947 E F0 .448 +(option indicates that other supplied options and actions)2.947 F .123 +(should apply to completion on the initial non-assignment w)144 405.6 R +.123(ord on the line, or after a command de-)-.1 F 1.02(limiter such as) +144 417.6 R F1(;)3.52 E F0(or)3.52 E F1(|)3.52 E F0 3.52(,w)C 1.021 +(hich is usually command name completion.)-3.52 F 1.021 +(If multiple options are sup-)6.021 F .708(plied, the)144 429.6 R F1 +3.208 E F0 .708(option tak)3.208 F .708(es precedence o)-.1 F -.15 +(ve)-.15 G(r).15 E F13.208 E F0 3.208(,a)C .708(nd both tak)-3.208 +F 3.208(ep)-.1 G .707(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F1 +3.207 E F0 5.707(.I)C 3.207(fa)-5.707 G 1.007 -.15(ny o)-3.207 H +(f).15 E F13.207 E F0(,)A F1144 441.6 Q F0 2.603(,o)C(r) +-2.603 E F12.603 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15 +G(ther)-2.603 E F2(name)2.603 E F0(ar)2.603 E .103 +(guments are ignored; these completions only apply to the)-.18 F +(case speci\214ed by the option.)144 453.6 Q .153 +(The process of applying these completion speci\214cations when w)144 +477.6 R .152(ord completion is attempted is de-)-.1 F(scribed abo)144 +489.6 Q .3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E +(ogrammable Completion)-.18 E F0(.)A .555 +(Other options, if speci\214ed, ha)144 513.6 R .855 -.15(ve t)-.2 H .555 +(he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555 +(guments to the)-.18 F F13.056 E F0(,)A F13.056 E F0 3.056 +(,a)C(nd)-3.056 E F13.056 E F0 .723(options \(and, if necessary) +144 525.6 R 3.223(,t)-.65 G(he)-3.223 E F13.223 E F0(and)3.223 E +F13.223 E F0 .722 +(options\) should be quoted to protect them from e)3.223 F(xpan-)-.15 E +(sion before the)144 537.6 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 549.6 Q +F2(comp-option)2.5 E F0(The)184 561.6 Q F2(comp-option)2.79 E F0 .291 +(controls se)2.791 F -.15(ve)-.25 G .291(ral aspects of the compspec') +.15 F 2.791(sb)-.55 G(eha)-2.791 E .291(vior be)-.2 F .291 +(yond the simple)-.15 F(generation of completions.)184 573.6 Q F2 +(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 585.6 Q F0 +.281(Perform the rest of the def)224 597.6 R(ault)-.1 E F1(bash)2.781 E +F0 .281(completions if the compspec generates no)2.781 F(matches.)224 +609.6 Q F1(default)184 621.6 Q F0 2.875(Use readline')224 621.6 R 5.375 +(sd)-.55 G(ef)-5.375 E 2.876 +(ault \214lename completion if the compspec generates no)-.1 F(matches.) +224 633.6 Q F1(dir)184 645.6 Q(names)-.15 E F0(Perform directory name c\ +ompletion if the compspec generates no matches.)224 657.6 Q F1 +(\214lenames)184 669.6 Q F0 -.7(Te)224 681.6 S .137(ll readline that th\ +e compspec generates \214lenames, so it can perform an).7 F 2.636<798c> +-.15 G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 693.6 R +2.634(ea)-.1 G .134(dding a slash to directory names, quoting spe-) +-2.634 F .45(cial characters, or suppressing trailing spaces\).)224 +705.6 R .45(Intended to be used with shell)5.45 F(functions.)224 717.6 Q +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(59)190.395 E 0 Cg EP +%%Page: 60 60 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(noquote)184 84 Q F0 -.7(Te)224 84 S .814 +(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F +3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F +(\214lenames is the def)224 96 Q(ault\).)-.1 E F1(nosort)184 108 Q F0 +-.7(Te)224 108 S(ll readline not to sort the list of possible completio\ +ns alphabetically).7 E(.)-.65 E F1(nospace)184 120 Q F0 -.7(Te)224 120 S +.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 132 Q F1 +(plusdirs)184 144 Q F0 1.985(After an)224 144 R 4.485(ym)-.15 G 1.985 +(atches de\214ned by the compspec are generated, directory name)-4.485 F +.584(completion is attempted and an)224 156 R 3.084(ym)-.15 G .584 +(atches are added to the results of the other)-3.084 F(actions.)224 168 +Q F1144 180 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 192 +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 +204 Q F0(Alias names.)224 204 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(arrayv)184 216 Q(ar)-.1 E F0(Array v)224 228 Q +(ariable names.)-.25 E F1(binding)184 240 Q(Readline)224 240 Q F0 -.1 +(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 252 S(iltin) +.2 E F0(Names of shell b)224 252 Q(uiltin commands.)-.2 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 264 +Q F0(Command names.)224 276 Q(May also be speci\214ed as)5 E F12.5 +E F0(.)A F1(dir)184 288 Q(ectory)-.18 E F0(Directory names.)224 300 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 312 +Q F0(Names of disabled shell b)224 324 Q(uiltins.)-.2 E F1(enabled)184 +336 Q F0(Names of enabled shell b)224 336 Q(uiltins.)-.2 E F1(export)184 +348 Q F0(Names of e)224 348 Q(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 +360 Q F0(File names.)224 360 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(function)184 372 Q F0(Names of shell functions.)224 384 +Q F1(gr)184 396 Q(oup)-.18 E F0(Group names.)224 396 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(helptopic)184 +408 Q F0(Help topics as accepted by the)224 420 Q F1(help)2.5 E F0 -.2 +(bu)2.5 G(iltin.).2 E F1(hostname)184 432 Q F0(Hostnames, as tak)224 444 +Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF +(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 456 Q F0 +(Job names, if job control is acti)224 456 Q -.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 468 S +(yw).1 E(ord)-.1 E F0(Shell reserv)224 480 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 +492 Q F0(Names of running jobs, if job control is acti)224 492 Q -.15 +(ve)-.25 G(.).15 E F1(ser)184 504 Q(vice)-.1 E F0(Service names.)224 504 +Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 516 +Q F0 -1.11(Va)224 516 S(lid ar)1.11 E(guments for the)-.18 E F12.5 +E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 +(shopt)184 528 Q F0(Shell option names as accepted by the)224 528 Q F1 +(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 540 Q F0 +(Signal names.)224 540 Q F1(stopped)184 552 Q F0 +(Names of stopped jobs, if job control is acti)224 552 Q -.15(ve)-.25 G +(.).15 E F1(user)184 564 Q F0(User names.)224 564 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 576 S +(riable).1 E F0(Names of all shell v)224 576 Q 2.5(ariables. May)-.25 F +(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 588 Q F2 +(command)2.5 E(command)184 600 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 612 Q F1144 624 Q F2(function)2.5 E F0 .114 +(The shell function)184 636 R F2(function)2.614 E F0 .114(is e)2.614 F +-.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614 +(vironment. When)-.4 F .113(the func-)2.613 F .816(tion is e)184 648 R +-.15(xe)-.15 G .816(cuted, the \214rst ar).15 F .816(gument \()-.18 F F1 +($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .817 +(he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 +(are being completed, the second ar)184 660 R 1.407(gument \()-.18 F F1 +($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407 +(ord being completed, and the)-.1 F .103(third ar)184 672 R .103 +(gument \()-.18 F F1($3)A F0 2.603(\)i)C 2.603(st)-2.603 G .103(he w) +-2.603 F .104(ord preceding the w)-.1 F .104 +(ord being completed on the current com-)-.1 F .102(mand line.)184 684 R +.102(When it \214nishes, the possible completions are retrie)5.102 F +-.15(ve)-.25 G 2.601(df).15 G .101(rom the v)-2.601 F .101(alue of the) +-.25 F F3(COMPREPL)184 696 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(60)190.395 E 0 Cg EP +%%Page: 61 61 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q/F2 10/Times-Italic@0 SF(globpat)2.5 E F0 1.007 +(The pathname e)184 96 R 1.007(xpansion pattern)-.15 F F2(globpat)3.507 +E F0 1.007(is e)3.507 F 1.008(xpanded to generate the possible comple-) +-.15 F(tions.)184 108 Q F1144 120 Q F2(pr)2.5 E(e\214x)-.37 E(pr) +184 132 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534 +(ginning of each possible completion after all other options ha)-.15 F +-.15(ve)-.2 G(been applied.)184 144 Q F1144 156 Q F2(suf)2.5 E +<8c78>-.18 E(suf)184 156 Q<8c78>-.18 E F0 +(is appended to each possible completion after all other options ha)2.5 +E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 168 Q F2(wor)2.5 E +(dlist)-.37 E F0(The)184 180 Q F2(wor)3.639 E(dlist)-.37 E F0 1.14 +(is split using the characters in the)3.639 F/F3 9/Times-Bold@0 SF(IFS) +3.64 E F0 1.14(special v)3.39 F 1.14(ariable as delimiters, and)-.25 F +.981(each resultant w)184 192 R .981(ord is e)-.1 F 3.481 +(xpanded. Shell)-.15 F .981(quoting is honored within)3.481 F F2(wor) +3.481 E(dlist)-.37 E F0 3.48(,i)C 3.48(no)-3.48 G .98(rder to)-3.48 F +(pro)184 204 Q .765(vide a mechanism for the w)-.15 F .766 +(ords to contain shell metacharacters or characters in the)-.1 F -.25 +(va)184 216 S 1.965(lue of).25 F F3(IFS)4.465 E/F4 9/Times-Roman@0 SF(.) +A F0 1.964 +(The possible completions are the members of the resultant list which) +6.465 F(match the w)184 228 Q(ord being completed.)-.1 E F1144 240 +Q F2(\214lterpat)2.5 E(\214lterpat)184 252 Q F0 .455 +(is a pattern as used for pathname e)2.955 F 2.956(xpansion. It)-.15 F +.456(is applied to the list of possible)2.956 F 1.596 +(completions generated by the preceding options and ar)184 264 R 1.596 +(guments, and each completion)-.18 F(matching)184 276 Q F2(\214lterpat) +3.204 E F0 .704(is remo)3.204 F -.15(ve)-.15 G 3.204(df).15 G .704 +(rom the list.)-3.204 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 +(in)3.204 E F2(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705 +(tes the pattern;).05 F(in this case, an)184 288 Q 2.5(yc)-.15 G +(ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E +-.15(ve)-.15 G(d.).15 E .467(The return v)144 304.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 316.8 R F2(name)3.861 E F0(ar)3.861 E 1.361 +(gument, an attempt is made to remo)-.18 F 1.662 -.15(ve a c)-.15 H +1.362(ompletion speci\214cation for a).15 F F2(name)144 328.8 Q F0 +(for which no speci\214cation e)2.5 E +(xists, or an error occurs adding a completion speci\214cation.)-.15 E +F1(compopt)108 345.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C +F1(\255DEI)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C +F2(name)-2.5 E F0(])A .447(Modify completion options for each)144 357.6 +R F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 +.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .725 +(completion if no)144 369.6 R F2(name)3.225 E F0 3.225(sa)C .725 +(re supplied.)-3.225 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) +C .725(re gi)-3.225 F -.15(ve)-.25 G .726 +(n, display the completion options for).15 F(each)144 381.6 Q F2(name) +3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v) +5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 +F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 393.6 Q F0 -.2(bu) +2.677 G .177(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he) +-5.178 E F12.678 E F0 .178 +(option indicates that other supplied options should apply to)2.678 F +1.228(the `)144 405.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\ +mmand completion; that is, completion attempted on a command for which \ +no)-3.728 F 2.038(completion has pre)144 417.6 R 2.038 +(viously been de\214ned.)-.25 F(The)7.038 E F14.538 E F0 2.039 +(option indicates that other supplied options)4.538 F 1.539 +(should apply to `)144 429.6 R(`empty')-.74 E 4.039('c)-.74 G 1.538 +(ommand completion; that is, completion attempted on a blank line.) +-4.039 F(The)144 441.6 Q F13.02 E F0 .52(option indicates that ot\ +her supplied options should apply to completion on the initial non-)3.02 +F .868(assignment w)144 453.6 R .868 +(ord on the line, or after a command delimiter such as)-.1 F F1(;)3.368 +E F0(or)3.368 E F1(|)3.368 E F0 3.367(,w)C .867(hich is usually com-) +-3.367 F(mand name completion.)144 465.6 Q .431(The return v)144 489.6 R +.431(alue is true unless an in)-.25 F -.25(va)-.4 G .431 +(lid option is supplied, an attempt is made to modify the op-).25 F +(tions for a)144 501.6 Q F2(name)2.5 E F0 +(for which no completion speci\214cation e)2.5 E +(xists, or an output error occurs.)-.15 E F1(continue)108 518.4 Q F0([) +2.5 E F2(n)A F0(])A .851(Resume the ne)144 530.4 R .851 +(xt iteration of the enclosing)-.15 F F1 -.25(fo)3.351 G(r).25 E F0(,)A +F1(while)3.351 E F0(,)A F1(until)3.351 E F0 3.351(,o)C(r)-3.351 E F1 +(select)3.35 E F0 3.35(loop. If)3.35 F F2(n)3.71 E F0 .85 +(is speci\214ed, re-)3.59 F .203(sume at the)144 542.4 R F2(n)2.703 E F0 +.203(th enclosing loop.)B F2(n)5.563 E F0 .203(must be)2.943 F/F5 10 +/Symbol SF2.703 E F0 2.704(1. If)2.703 F F2(n)3.064 E F0 .204 +(is greater than the number of enclosing loops,)2.944 F 1.184 +(the last enclosing loop \(the `)144 554.4 R(`top-le)-.74 E -.15(ve)-.25 +G(l').15 E 3.684('l)-.74 G 1.184(oop\) is resumed.)-3.684 F 1.183 +(The return v)6.184 F 1.183(alue is 0 unless)-.25 F F2(n)3.683 E F0 +1.183(is not)3.683 F(greater than or equal to 1.)144 566.4 Q F1(declar) +108 583.2 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgiIlnrtux)A F0 2.5(][)C F1 +-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(..])-2.5 E F1(typeset)108 595.2 Q F0([)2.5 E F1(\255aAfFgiIlnrtux)A F0 +2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 +2.5(].)C(..])-2.5 E 1.264(Declare v)144 607.2 R 1.264 +(ariables and/or gi)-.25 F 1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F +3.765(utes. If)-.2 F(no)3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265 +(re gi)-3.765 F -.15(ve)-.25 G 3.765(nt).15 G 1.265(hen display the v) +-3.765 F 1.265(alues of)-.25 F -.25(va)144 619.2 S 3.46(riables. The).25 +F F13.46 E F0 .96(option will display the attrib)3.46 F .96 +(utes and v)-.2 F .96(alues of each)-.25 F F2(name)3.82 E F0 5.96(.W).18 +G(hen)-5.96 E F13.46 E F0 .96(is used)3.46 F(with)144 631.2 Q F2 +(name)2.774 E F0(ar)2.774 E .274 +(guments, additional options, other than)-.18 F F12.775 E F0(and) +2.775 E F12.775 E F0 2.775(,a)C .275(re ignored.)-2.775 F(When) +5.275 E F12.775 E F0 .275(is supplied)2.775 F(without)144 643.2 Q +F2(name)3.79 E F0(ar)3.79 E 1.29(guments, it will display the attrib) +-.18 F 1.289(utes and v)-.2 F 1.289(alues of all v)-.25 F 1.289 +(ariables ha)-.25 F 1.289(ving the at-)-.2 F(trib)144 655.2 Q .38 +(utes speci\214ed by the additional options.)-.2 F .38 +(If no other options are supplied with)5.38 F F12.88 E F0(,)A F1 +(declar)2.88 E(e)-.18 E F0(will)2.88 E 1.107(display the attrib)144 +667.2 R 1.107(utes and v)-.2 F 1.106(alues of all shell v)-.25 F 3.606 +(ariables. The)-.25 F F13.606 E F0 1.106 +(option will restrict the display to)3.606 F .299(shell functions.)144 +679.2 R(The)5.299 E F12.799 E F0 .299(option inhibits the display\ + of function de\214nitions; only the function name)2.799 F 1.54 +(and attrib)144 691.2 R 1.54(utes are printed.)-.2 F 1.54(If the)6.54 F +F1(extdeb)4.04 E(ug)-.2 E F0 1.54(shell option is enabled using)4.04 F +F1(shopt)4.04 E F0 4.04(,t)C 1.54(he source \214le)-4.04 F .648 +(name and line number where each)144 703.2 R F2(name)3.148 E F0 .648 +(is de\214ned are displayed as well.)3.148 F(The)5.648 E F13.148 E +F0 .649(option implies)3.149 F F1144 715.2 Q F0 5.837(.T)C(he) +-5.837 E F13.337 E F0 .837(option forces v)3.337 F .836 +(ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 +(ve)-.25 G 3.336(nw).15 G(hen)-3.336 E F1(de-)3.336 E(clar)144 727.2 Q +(e)-.18 E F0 .818(is e)3.318 F -.15(xe)-.15 G .818 +(cuted in a shell function.).15 F .818 +(It is ignored in all other cases.)5.818 F(The)5.819 E F13.319 E +F0 .819(option causes local)3.319 F(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(61)190.395 E 0 Cg EP +%%Page: 62 62 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)144 84 S +.694(riables to inherit the attrib).25 F .694(utes \(e)-.2 F .694 +(xcept the)-.15 F/F1 10/Times-Italic@0 SF(namer)3.194 E(ef)-.37 E F0 +(attrib)3.194 E .693(ute\) and v)-.2 F .693(alue of an)-.25 F 3.193(ye) +-.15 G .693(xisting v)-3.343 F(ariable)-.25 E .82(with the same)144 96 R +F1(name)3.32 E F0 .82(at a surrounding scope.)3.32 F .82 +(If there is no e)5.82 F .82(xisting v)-.15 F .82(ariable, the local v) +-.25 F .82(ariable is)-.25 F .38(initially unset.)144 108 R .38 +(The follo)5.38 F .379(wing options can be used to restrict output to v) +-.25 F .379(ariables with the speci\214ed)-.25 F(attrib)144 120 Q +(ute or to gi)-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 +E/F2 10/Times-Bold@0 SF144 132 Q F0(Each)180 132 Q F1(name)2.5 E +F0(is an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E +(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).) +.15 E F2144 144 Q F0(Each)180 144 Q F1(name)2.5 E F0 +(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v).15 E(ariable \(see) +-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2144 +156 Q F0(Use function names only)180 156 Q(.)-.65 E F2144 168 Q F0 +.557(The v)180 168 R .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 180 Q F0(abo)2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G +(erformed when the v)-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E +F2144 192 Q F0 .91(When the v)180 192 R .909 +(ariable is assigned a v)-.25 F .909(alue, all upper)-.25 F .909 +(-case characters are con)-.2 F -.15(ve)-.4 G .909(rted to lo).15 F(wer) +-.25 E(-)-.2 E 2.5(case. The)180 204 R(upper)2.5 E(-case attrib)-.2 E +(ute is disabled.)-.2 E F2144 216 Q F0(Gi)180 216 Q 1.619 -.15 +(ve e)-.25 H(ach).15 E F1(name)3.819 E F0(the)3.819 E F1(namer)3.819 E +(ef)-.37 E F0(attrib)3.819 E 1.319 +(ute, making it a name reference to another v)-.2 F(ariable.)-.25 E .478 +(That other v)180 228 R .478(ariable is de\214ned by the v)-.25 F .478 +(alue of)-.25 F F1(name)2.978 E F0 5.478(.A)C .478 +(ll references, assignments, and at-)-5.478 F(trib)180 240 Q .781 +(ute modi\214cations to)-.2 F F1(name)3.281 E F0 3.281(,e)C .782 +(xcept those using or changing the)-3.431 F F23.282 E F0(attrib) +3.282 E .782(ute itself, are)-.2 F .809(performed on the v)180 252 R +.809(ariable referenced by)-.25 F F1(name)3.308 E F0 1.908 -.55('s v)D +3.308(alue. The).3 F .808(nameref attrib)3.308 F .808(ute cannot be)-.2 +F(applied to array v)180 264 Q(ariables.)-.25 E F2144 276 Q F0 +(Mak)180 276 Q(e)-.1 E F1(name)3.654 E F0 3.654(sr)C(eadonly)-3.654 E +6.154(.T)-.65 G 1.154(hese names cannot then be assigned v)-6.154 F +1.155(alues by subsequent as-)-.25 F(signment statements or unset.)180 +288 Q F2144 300 Q F0(Gi)180 300 Q .73 -.15(ve e)-.25 H(ach).15 E +F1(name)2.93 E F0(the)2.929 E F1(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 F2(DEB)2.929 +E(UG)-.1 E F0(and)2.929 E F2(RETURN)2.929 E F0 +(traps from the calling shell.)180 312 Q(The trace attrib)5 E +(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2144 324 +Q F0 .909(When the v)180 324 R .909(ariable is assigned a v)-.25 F .909 +(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 F -.15 +(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 336 R(lo)2.5 +E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2144 348 Q +F0(Mark)180 348 Q F1(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 .144 +(Using `+' instead of `\255' turns of)144 364.8 R 2.643(ft)-.25 G .143 +(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .143 +(xceptions that)-.15 F F2(+a)2.643 E F0(and)2.643 E F2(+A)2.643 E F0 +.143(may not)2.643 F .578(be used to destro)144 376.8 R 3.079(ya)-.1 G +.579(rray v)-3.079 F .579(ariables and)-.25 F F2(+r)3.079 E F0 .579 +(will not remo)3.079 F .879 -.15(ve t)-.15 H .579(he readonly attrib).15 +F 3.079(ute. When)-.2 F .579(used in a)3.079 F(function,)144 388.8 Q F2 +(declar)3.544 E(e)-.18 E F0(and)3.544 E F2(typeset)3.544 E F0(mak)3.544 +E 3.544(ee)-.1 G(ach)-3.544 E F1(name)3.543 E F0 1.043 +(local, as with the)3.543 F F2(local)3.543 E F0 1.043 +(command, unless the)3.543 F F23.543 E F0 1.205 +(option is supplied.)144 400.8 R 1.205(If a v)6.205 F 1.205 +(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F1(value)A F0 3.705 +(,t)C 1.205(he v)-3.705 F 1.205(alue of the v)-.25 F 1.205 +(ariable is set to)-.25 F F1(value)144 412.8 Q F0 5.218(.W)C .218 +(hen using)-5.218 F F22.718 E F0(or)2.718 E F22.718 E F0 +.217(and the compound assignment syntax to create array v)2.717 F .217 +(ariables, addi-)-.25 F .882(tional attrib)144 424.8 R .882 +(utes do not tak)-.2 F 3.382(ee)-.1 G -.25(ff)-3.382 G .882 +(ect until subsequent assignments.).25 F .882(The return v)5.882 F .882 +(alue is 0 unless an)-.25 F(in)144 436.8 Q -.25(va)-.4 G .366(lid optio\ +n is encountered, an attempt is made to de\214ne a function using).25 F +/F4 10/Courier@0 SF .365(\255f foo=bar)2.865 F F0 2.865(,a)C 2.865(na) +-2.865 G(t-)-2.865 E .548(tempt is made to assign a v)144 448.8 R .548 +(alue to a readonly v)-.25 F .549 +(ariable, an attempt is made to assign a v)-.25 F .549(alue to an)-.25 F +1.749(array v)144 460.8 R 1.749 +(ariable without using the compound assignment syntax \(see)-.25 F F2 +(Arrays)4.248 E F0(abo)4.248 E -.15(ve)-.15 G 1.748(\), one of the).15 F +F1(names)144 472.8 Q F0 .359(is not a v)2.858 F .359(alid shell v)-.25 F +.359(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G +.359(eadonly status for a read-)-2.859 F 1.213(only v)144 484.8 R 1.213 +(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213 +(rray status for an array v)-3.713 F 1.212(ariable, or an attempt is) +-.25 F(made to display a non-e)144 496.8 Q(xistent function with)-.15 E +F22.5 E F0(.)A F2(dirs [\255clpv] [+)108 513.6 Q F1(n)A F2 2.5(][) +C-2.5 E F1(n)A F2(])A F0 -.4(Wi)144 525.6 S .328 +(thout options, displays the list of currently remembered directories.) +.4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238 +(single line with directory names separated by spaces.)144 537.6 R 1.238 +(Directories are added to the list with the)6.238 F F2(pushd)144 549.6 Q +F0 .927(command; the)3.427 F F2(popd)3.428 E F0 .928(command remo)3.428 +F -.15(ve)-.15 G 3.428(se).15 G .928(ntries from the list.)-3.428 F .928 +(The current directory is al-)5.928 F -.1(wa)144 561.6 S +(ys the \214rst directory in the stack.).1 E F2144 573.6 Q F0 +(Clears the directory stack by deleting all of the entries.)180 573.6 Q +F2144 585.6 Q F0 .882 +(Produces a listing using full pathnames; the def)180 585.6 R .881 +(ault listing format uses a tilde to denote)-.1 F(the home directory)180 +597.6 Q(.)-.65 E F2144 609.6 Q F0 +(Print the directory stack with one entry per line.)180 609.6 Q F2 +144 621.6 Q F0 .272(Print the directory stack with one entry per line, \ +pre\214xing each entry with its inde)180 621.6 R 2.773(xi)-.15 G 2.773 +(nt)-2.773 G(he)-2.773 E(stack.)180 633.6 Q F2(+)144 645.6 Q F1(n)A F0 +1.565(Displays the)180 645.6 R F1(n)4.065 E F0 1.565 +(th entry counting from the left of the list sho)B 1.564(wn by)-.25 F F2 +(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 657.6 Q F2144 669.6 Q F1 +(n)A F0 1.194(Displays the)180 669.6 R F1(n)3.694 E F0 1.194 +(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F +F2(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 681.6 Q .258(The return v)144 +698.4 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 +(lid option is supplied or).25 F F1(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 710.4 Q(GNU Bash 5.1)72 768 Q(2020 October 29) +141.235 E(62)190.395 E 0 Cg EP +%%Page: 63 63 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(diso)108 84 Q(wn)-.1 E F0([)2.5 E F1(\255ar)A F0 2.5(][)C F1 +-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(jobspec)-2.5 E F0(... |)2.5 E +F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 96 S .121(thout options, remo).4 +F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec)4.362 E F0 .122 +(from the table of acti)2.932 F .422 -.15(ve j)-.25 H 2.622(obs. If).15 +F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 F .096 +(neither the)144 108 R F12.596 E F0 .096(nor the)2.596 F F1 +2.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E .096 +(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 +2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each).15 F +F2(jobspec)145.74 120 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 G 3.085 +(df).15 G .585(rom the table, b)-3.085 F .585(ut is mark)-.2 F .585 +(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586 +(is not sent to the job if the)2.835 F .962(shell recei)144 132 R -.15 +(ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 +(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 +3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 144 R F1 +3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 +(ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F +1.359(The return)6.359 F -.25(va)144 156 S(lue is 0 unless a).25 E F2 +(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E +F1(echo)108 172.8 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .425(Output the)144 184.8 R F2(ar)2.925 E(g)-.37 E +F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 +(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307 +(error occurs.)144 196.8 R(If)5.307 E F12.807 E F0 .307 +(is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25 +F .308(If the)5.308 F F12.808 E F0 .308(option is gi)2.808 F -.15 +(ve)-.25 G .308(n, inter).15 F(-)-.2 E .198(pretation of the follo)144 +208.8 R .198(wing backslash-escaped characters is enabled.)-.25 F(The) +5.198 E F12.698 E F0 .197(option disables the in-)2.697 F .067 +(terpretation of these escape characters, e)144 220.8 R -.15(ve)-.25 G +2.567(no).15 G 2.567(ns)-2.567 G .067(ystems where the)-2.567 F 2.567 +(ya)-.15 G .067(re interpreted by def)-2.567 F 2.568(ault. The)-.1 F F1 +(xpg_echo)144 232.8 Q F0 .602 +(shell option may be used to dynamically determine whether or not)3.102 +F F1(echo)3.101 E F0 -.15(ex)3.101 G .601(pands these).15 F .658 +(escape characters by def)144 244.8 R(ault.)-.1 E F1(echo)5.658 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.659 E F0(inter)3.159 E(-) +-.2 E(prets the follo)144 256.8 Q(wing escape sequences:)-.25 E F1(\\a) +144 268.8 Q F0(alert \(bell\))180 268.8 Q F1(\\b)144 280.8 Q F0 +(backspace)180 280.8 Q F1(\\c)144 292.8 Q F0(suppress further output)180 +292.8 Q F1(\\e)144 304.8 Q(\\E)144 316.8 Q F0(an escape character)180 +316.8 Q F1(\\f)144 328.8 Q F0(form feed)180 328.8 Q F1(\\n)144 340.8 Q +F0(ne)180 340.8 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 352.8 Q F0 +(carriage return)180 352.8 Q F1(\\t)144 364.8 Q F0(horizontal tab)180 +364.8 Q F1(\\v)144 376.8 Q F0 -.15(ve)180 376.8 S(rtical tab).15 E F1 +(\\\\)144 388.8 Q F0(backslash)180 388.8 Q F1(\\0)144 400.8 Q F2(nnn)A +F0(the eight-bit character whose v)180 400.8 Q(alue is the octal v)-.25 +E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1 +(\\x)144 412.8 Q F2(HH)A F0(the eight-bit character whose v)180 412.8 Q +(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 +(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 +(\\u)144 424.8 Q F2(HHHH)A F0 1.507 +(the Unicode \(ISO/IEC 10646\) character whose v)180 436.8 R 1.506 +(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) +4.006 E F0(\(one to four he)180 448.8 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 460.8 Q F2(HHHHHHHH)A F0 .547 +(the Unicode \(ISO/IEC 10646\) character whose v)180 472.8 R .547 +(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.048 E(HHH)180 484.8 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E F1(enable)108 501.6 Q F0([)2.5 E F1A F0 2.5(][)C +F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 +(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 513.6 R +.278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 +(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833 +(the same name as a shell b)144 525.6 R .834(uiltin to be e)-.2 F -.15 +(xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 +(ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99 +(the shell normally searches for b)144 537.6 R .989 +(uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .989 +(is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F .648 +(abled; otherwise,)144 549.6 R F2(names)3.148 E F0 .648(are enabled.) +3.148 F -.15(Fo)5.648 G 3.148(re).15 G .648(xample, to use the)-3.298 F +F1(test)3.148 E F0 .648(binary found via the)3.148 F F3 -.666(PA)3.148 G +(TH)-.189 E F0(in-)2.899 E .539(stead of the shell b)144 561.6 R .538 +(uiltin v)-.2 F .538(ersion, run)-.15 F/F5 10/Courier@0 SF .538 +(enable -n test)3.038 F F0 5.538(.T)C(he)-5.538 E F13.038 E F0 +.538(option means to load the ne)3.038 F(w)-.25 E -.2(bu)144 573.6 S +1.365(iltin command).2 F F2(name)4.225 E F0 1.365(from shared object) +4.045 F F2(\214lename)5.775 E F0 3.865(,o).18 G 3.865(ns)-3.865 G 1.365 +(ystems that support dynamic loading.)-3.865 F(The)144 585.6 Q F1 +2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F +.367(viously loaded with)-.25 F F12.866 E F0 5.366(.I)C 2.866(fn) +-5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi) +-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 597.6 R F1 +2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 +(uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 +F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144 +609.6 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 +(is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F +(If)5.098 E F12.598 E F0 .905 +(is supplied, the list printed includes all b)144 621.6 R .905 +(uiltins, with an indication of whether or not each is en-)-.2 F 2.873 +(abled. If)144 633.6 R F12.873 E F0 .372 +(is supplied, the output is restricted to the POSIX)2.873 F F2(special) +2.872 E F0 -.2(bu)2.872 G 2.872(iltins. The).2 F .372(return v)2.872 F +.372(alue is)-.25 F 2.5(0u)144 645.6 S(nless a)-2.5 E F2(name)2.86 E F0 +(is not a shell b)2.68 E(uiltin or there is an error loading a ne)-.2 E +2.5(wb)-.25 G(uiltin from a shared object.)-2.7 E F1 -2.3 -.15(ev a)108 +662.4 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 674.4 +Q F2(ar)3.17 E(g)-.37 E F0 3.17(sa)C .671 +(re read and concatenated together into a single command.)-3.17 F .671 +(This command is then read)5.671 F .479(and e)144 686.4 R -.15(xe)-.15 G +.479(cuted by the shell, and its e).15 F .479 +(xit status is returned as the v)-.15 F .478(alue of)-.25 F F1 -2.3 -.15 +(ev a)2.978 H(l).15 E F0 5.478(.I)C 2.978(ft)-5.478 G .478(here are no) +-2.978 F F2(ar)3.308 E(gs)-.37 E F0(,).27 E(or only null ar)144 698.4 Q +(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(63)190.395 E 0 Cg EP +%%Page: 64 64 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(exec)108 84 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E/F2 10 +/Times-Italic@0 SF(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 96 Q F2(command)3.005 E F0 .305 +(is speci\214ed, it replaces the shell.)3.575 F .305(No ne)5.305 F 2.805 +(wp)-.25 G .306(rocess is created.)-2.805 F(The)5.306 E F2(ar)3.136 E +(guments)-.37 E F0(become)3.076 E .177(the ar)144 108 R .177(guments to) +-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G(he)-2.676 E F1 +2.676 E F0 .176 +(option is supplied, the shell places a dash at the be)2.676 F .176 +(ginning of)-.15 F .48(the zeroth ar)144 120 R .48(gument passed to)-.18 +F F2(command)3.18 E F0 5.48(.T).77 G .48(his is what)-5.48 F F2(lo)3.07 +E(gin)-.1 E F0 .48(\(1\) does.).24 F(The)5.48 E F12.98 E F0 .48 +(option causes)2.98 F F2(com-)3.18 E(mand)144 132 Q F0 .639(to be e) +3.909 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 +(vironment. If)-.4 F F13.138 E F0 .638 +(is supplied, the shell passes)3.138 F F2(name)3.498 E F0 .638(as the) +3.318 F 1.077(zeroth ar)144 144 R 1.077(gument to the e)-.18 F -.15(xe) +-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 1.077 +(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a).15 F +(non-interacti)144 156 Q .877 -.15(ve s)-.25 H .577(hell e).15 F .577 +(xits, unless the)-.15 F F1(execfail)3.077 E F0 .577 +(shell option is enabled.)3.077 F .576(In that case, it returns f)5.577 +F(ail-)-.1 E 3.32(ure. An)144 168 R(interacti)3.32 E 1.12 -.15(ve s)-.25 +H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 F +-.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82 +(xits uncondi-)-.15 F .288(tionally if)144 180 R F1(exec)2.788 E F0 -.1 +(fa)2.788 G 2.788(ils. If).1 F F2(command)2.988 E F0 .288 +(is not speci\214ed, an)3.558 F 2.787(yr)-.15 G .287(edirections tak) +-2.787 F 2.787(ee)-.1 G -.25(ff)-2.787 G .287(ect in the current shell,) +.25 F(and the return status is 0.)144 192 Q +(If there is a redirection error)5 E 2.5(,t)-.4 G +(he return status is 1.)-2.5 E F1(exit)108 208.8 Q F0([)2.5 E F2(n)A F0 +(])A .095(Cause the shell to e)144 208.8 R .095(xit with a status of) +-.15 F F2(n)2.595 E F0 5.095(.I)C(f)-5.095 E F2(n)2.955 E F0 .096 +(is omitted, the e)2.835 F .096(xit status is that of the last command) +-.15 F -.15(exe)144 220.8 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 +/Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G +(cuted before the shell terminates.).15 E F1(export)108 237.6 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 249.6 Q F0 .257(The supplied)144 261.6 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.626(commands. If)144 273.6 R(the)2.626 E F1 +2.626 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 .127 +(n, or if the).15 F F1144 285.6 Q F0 .048 +(option is supplied, a list of names of all e)2.548 F .048(xported v) +-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F12.547 E F0 +.047(option causes the)2.547 F -.15(ex)144 297.6 S 1.446 +(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 +(rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G +1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) +-.37 E F0 3.947(,t)C(he)-3.947 E -.25(va)144 309.6 S .742(lue of the v) +.25 F .742(ariable is set to)-.25 F F2(wor)3.242 E(d)-.37 E F0(.)A F1 +(export)5.742 E F0 .742(returns an e)3.242 F .741 +(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .741(lid option is) +.25 F .031(encountered, one of the)144 321.6 R F2(names)2.531 E F0 .031 +(is not a v)2.531 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 +F F12.532 E F0 .032(is supplied with a)2.532 F F2(name)2.892 E F0 +(that)2.712 E(is not a function.)144 333.6 Q F1(fc)108 350.4 Q F0([)2.5 +E F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 +<8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 +362.4 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 .432 +(The \214rst form selects a range of commands from)144 374.4 R F2<8c72> +4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .431 +(from the history list and displays or)3.612 F .141(edits and re-e)144 +386.4 R -.15(xe)-.15 G .141(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +.45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 +(may be speci\214ed as a string \(to locate the last command)3.321 F(be) +144 398.4 Q .311(ginning with that string\) or as a number \(an inde) +-.15 F 2.811(xi)-.15 G .31(nto the history list, where a ne)-2.811 F +-.05(ga)-.15 G(ti).05 E .61 -.15(ve n)-.25 H(umber).15 E .071 +(is used as an of)144 410.4 R .071 +(fset from the current command number\).)-.25 F .071(When listing, a) +5.071 F F2<8c72>2.571 E(st)-.1 E F0(or)2.571 E F2(last)2.571 E F0 .071 +(of 0 is equi)2.571 F -.25(va)-.25 G(-).25 E .653 +(lent to \2551 and \2550 is equi)144 422.4 R -.25(va)-.25 G .653 +(lent to the current command \(usually the).25 F F1(fc)3.153 E F0 .653 +(command\); otherwise 0 is)3.153 F(equi)144 434.4 Q -.25(va)-.25 G .242 +(lent to \2551 and \2550 is in).25 F -.25(va)-.4 G 2.742(lid. If).25 F +F2(last)2.832 E F0 .242 +(is not speci\214ed, it is set to the current command for list-)3.422 F +.093(ing \(so that)144 446.4 R/F4 10/Courier@0 SF .093(fc \255l \25510) +2.593 F F0 .093(prints the last 10 commands\) and to)2.593 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 .092(is not speci-)3.272 F(\214ed, it is set to the pre)144 458.4 Q +(vious command for editing and \25516 for listing.)-.25 E(The)144 482.4 +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 494.4 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 +.334(the editor gi)144 506.4 R -.15(ve)-.25 G 2.834(nb).15 G(y)-2.834 E +F2(ename)3.024 E F0 .335(is in)3.014 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.335 E F2(ename)3.025 E F0 .335(is not gi)3.015 F -.15(ve)-.25 G +(n,).15 E .631(the v)144 518.4 R .631(alue of the)-.25 F F3(FCEDIT)3.131 +E F0 -.25(va)2.881 G .631(riable is used, and the v).25 F .631(alue of) +-.25 F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.13 E F0 .63 +(is not set.)2.88 F .63(If nei-)5.63 F .005(ther v)144 530.4 R .005 +(ariable is set,)-.25 F F2(vi)4.171 E F0 .005(is used.)4.171 F .005 +(When editing is complete, the edited commands are echoed and e)5.005 F +(x-)-.15 E(ecuted.)144 542.4 Q .789(In the second form,)144 566.4 R F2 +(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 +(cuted after each instance of).15 F F2(pat)3.288 E F0 .788 +(is replaced by)3.288 F F2 -.37(re)3.288 G(p).37 E F0(.)A F2(Com-)5.788 +E(mand)144 578.4 Q F0 .171(is interpreted the same as)2.671 F F2<8c72> +2.671 E(st)-.1 E F0(abo)2.671 E -.15(ve)-.15 G 5.171(.A).15 G .172 +(useful alias to use with this is)-2.499 F F4 .172(r='fc \255s')2.672 F +F0 2.672(,s)C 2.672(ot)-2.672 G(hat)-2.672 E(typing)144 590.4 Q F4 7.166 +(rc)3.666 G(c)-7.166 E F0 1.166(runs the last command be)3.666 F 1.166 +(ginning with)-.15 F F4(cc)3.666 E F0 1.165(and typing)3.666 F F4(r) +3.665 E F0(re-e)3.665 E -.15(xe)-.15 G 1.165(cutes the last com-).15 F +(mand.)144 602.4 Q .142(If the \214rst form is used, the return v)144 +626.4 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 638.4 +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 650.4 R -.15(xe)-.15 G .787 +(cuted or f).15 F .788 +(ailure if an error occurs with the temporary \214le of commands.)-.1 F +.788(If the)5.788 F 1.136 +(second form is used, the return status is that of the command re-e)144 +662.4 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 674.4 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 691.2 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) +144 703.2 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 715.2 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 727.2 Q +.362(ground, or f)-.15 F .362 +(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .363 +(hen run with job control enabled, if)-2.862 F(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(64)190.395 E 0 Cg EP +%%Page: 65 65 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(jobspec)145.74 84 Q F0(does not specify a v)2.81 E +(alid job or)-.25 E F1(jobspec)4.24 E F0(speci\214es a job that w)2.81 E +(as started without job control.)-.1 E/F2 10/Times-Bold@0 SF(getopts)108 +100.8 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A 2.5(g.)-.37 G(..)-2.5 +E F0(])A F2(getopts)144 112.8 Q F0 .793 +(is used by shell procedures to parse positional parameters.)3.294 F F1 +(optstring)6.023 E F0 .793(contains the option)3.513 F .149 +(characters to be recognized; if a character is follo)144 124.8 R .15 +(wed by a colon, the option is e)-.25 F .15(xpected to ha)-.15 F .45 +-.15(ve a)-.2 H(n).15 E(ar)144 136.8 Q .579 +(gument, which should be separated from it by white space.)-.18 F .578 +(The colon and question mark char)5.579 F(-)-.2 E .636 +(acters may not be used as option characters.)144 148.8 R .636 +(Each time it is in)5.636 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts) +3.136 E F0 .636(places the ne)3.136 F .636(xt op-)-.15 F .03 +(tion in the shell v)144 160.8 R(ariable)-.25 E F1(name)2.89 E F0 2.53 +(,i).18 G(nitializing)-2.53 E F1(name)2.89 E F0 .029(if it does not e) +2.71 F .029(xist, and the inde)-.15 F 2.529(xo)-.15 G 2.529(ft)-2.529 G +.029(he ne)-2.529 F .029(xt ar)-.15 F(gu-)-.18 E .065 +(ment to be processed into the v)144 172.8 R(ariable)-.25 E/F3 9 +/Times-Bold@0 SF(OPTIND)2.565 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND) +4.565 E F0 .066(is initialized to 1 each time the shell or a)2.315 F +.885(shell script is in)144 184.8 R -.2(vo)-.4 G -.1(ke).2 G 3.385 +(d. When).1 F .885(an option requires an ar)3.385 F(gument,)-.18 E F2 +(getopts)3.385 E F0 .885(places that ar)3.385 F .885(gument into)-.18 F +.566(the v)144 196.8 R(ariable)-.25 E F3(OPT)3.066 E(ARG)-.81 E F4(.)A +F0 .566(The shell does not reset)5.066 F F3(OPTIND)3.066 E F0 .567 +(automatically; it must be manually reset)2.816 F .39 +(between multiple calls to)144 208.8 R F2(getopts)2.89 E F0 .39 +(within the same shell in)2.89 F -.2(vo)-.4 G .389(cation if a ne).2 F +2.889(ws)-.25 G .389(et of parameters is to)-2.889 F(be used.)144 220.8 +Q 2.043(When the end of options is encountered,)144 244.8 R F2(getopts) +4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044 +(alue greater than zero.)-.25 F F3(OPTIND)144 256.8 Q F0 +(is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G +(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0 +(is set to ?.)2.5 E F2(getopts)144 280.8 Q F0 .485 +(normally parses the positional parameters, b)2.985 F .485 +(ut if more ar)-.2 F .485(guments are supplied as)-.18 F F1(ar)3.315 E +(g)-.37 E F0 -.25(va)3.205 G(l-).25 E(ues,)144 292.8 Q F2(getopts)2.5 E +F0(parses those instead.)2.5 E F2(getopts)144 316.8 Q F0 .345 +(can report errors in tw)2.845 F 2.845(ow)-.1 G 2.845(ays. If)-2.945 F +.345(the \214rst character of)2.845 F F1(optstring)3.075 E F0 .345 +(is a colon,)3.065 F F1(silent)3.185 E F0 .345(error re-)3.525 F 1.669 +(porting is used.)144 328.8 R 1.668 +(In normal operation, diagnostic messages are printed when in)6.669 F +-.25(va)-.4 G 1.668(lid options or).25 F .393(missing option ar)144 +340.8 R .393(guments are encountered.)-.18 F .394(If the v)5.394 F +(ariable)-.25 E F3(OPTERR)2.894 E F0 .394 +(is set to 0, no error messages)2.644 F(will be displayed, e)144 352.8 Q +-.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E +F1(optstring)2.73 E F0(is not a colon.)2.72 E .667(If an in)144 376.8 R +-.25(va)-.4 G .667(lid option is seen,).25 F F2(getopts)3.167 E F0 .667 +(places ? into)3.167 F F1(name)3.527 E F0 .666 +(and, if not silent, prints an error message)3.347 F .399(and unsets)144 +388.8 R F3(OPT)2.899 E(ARG)-.81 E F4(.)A F0(If)4.899 E F2(getopts)2.899 +E F0 .399(is silent, the option character found is placed in)2.899 F F3 +(OPT)2.899 E(ARG)-.81 E F0 .4(and no)2.65 F +(diagnostic message is printed.)144 400.8 Q 1.242(If a required ar)144 +424.8 R 1.242(gument is not found, and)-.18 F F2(getopts)3.741 E F0 +1.241(is not silent, a question mark \()3.741 F F2(?).833 E F0 3.741 +(\)i).833 G 3.741(sp)-3.741 G 1.241(laced in)-3.741 F F1(name)144.36 +436.8 Q F0(,).18 E F3(OPT)2.713 E(ARG)-.81 E F0 .213 +(is unset, and a diagnostic message is printed.)2.463 F(If)5.213 E F2 +(getopts)2.713 E F0 .213(is silent, then a colon \()2.713 F F2(:).833 E +F0(\)).833 E(is placed in)144 448.8 Q F1(name)2.86 E F0(and)2.68 E F3 +(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F2 +(getopts)144 472.8 Q F0 .902 +(returns true if an option, speci\214ed or unspeci\214ed, is found.) +3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F +(options is encountered or an error occurs.)144 484.8 Q F2(hash)108 +501.6 Q F0([)2.5 E F2(\255lr)A F0 2.5(][)C F2-2.5 E F1(\214lename) +2.5 E F0 2.5(][)C F2(\255dt)-2.5 E F0 2.5(][)C F1(name)-2.5 E F0(])A +.858(Each time)144 513.6 R F2(hash)3.358 E F0 .858(is in)3.358 F -.2(vo) +-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F1(name) +3.718 E F0 .858(is determined by searching)3.538 F .956 +(the directories in)144 525.6 R F2($P)3.456 E -.95(AT)-.74 G(H).95 E F0 +.956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 +(viously-remembered pathname is discarded.)-.25 F .242(If the)144 537.6 +R F22.742 E F0 .243 +(option is supplied, no path search is performed, and)2.742 F F1 +(\214lename)4.653 E F0 .243(is used as the full \214lename)2.923 F .615 +(of the command.)144 549.6 R(The)5.615 E F23.115 E F0 .615 +(option causes the shell to for)3.115 F .615 +(get all remembered locations.)-.18 F(The)5.615 E F23.115 E F0 +(op-)3.115 E .293(tion causes the shell to for)144 561.6 R .293 +(get the remembered location of each)-.18 F F1(name)2.794 E F0 5.294(.I) +C 2.794(ft)-5.294 G(he)-2.794 E F22.794 E F0 .294 +(option is supplied,)2.794 F .028(the full pathname to which each)144 +573.6 R F1(name)2.528 E F0 .028(corresponds is printed.)2.528 F .028 +(If multiple)5.028 F F1(name)2.528 E F0(ar)2.528 E .028 +(guments are sup-)-.18 F .175(plied with)144 585.6 R F22.675 E F0 +2.675(,t)C(he)-2.675 E F1(name)2.675 E F0 .175 +(is printed before the hashed full pathname.)2.675 F(The)5.175 E F2 +2.676 E F0 .176(option causes output to)2.676 F .783 +(be displayed in a format that may be reused as input.)144 597.6 R .783 +(If no ar)5.783 F .783(guments are gi)-.18 F -.15(ve)-.25 G .783 +(n, or if only).15 F F23.283 E F0(is)3.283 E .807 +(supplied, information about remembered commands is printed.)144 609.6 R +.807(The return status is true unless a)5.807 F F1(name)144.36 621.6 Q +F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) +.25 E F2(help)108 638.4 Q F0([)2.5 E F2(\255dms)A F0 2.5(][)C F1 +(pattern)-2.5 E F0(])A .867(Display helpful information about b)144 +650.4 R .867(uiltin commands.)-.2 F(If)5.867 E F1(pattern)4.617 E F0 +.866(is speci\214ed,)3.607 F F2(help)3.366 E F0(gi)3.366 E -.15(ve)-.25 +G 3.366(sd).15 G(etailed)-3.366 E .223(help on all commands matching)144 +662.4 R F1(pattern)3.973 E F0 2.723(;o).24 G .223 +(therwise help for all the b)-2.723 F .224 +(uiltins and shell control struc-)-.2 F(tures is printed.)144 674.4 Q F2 +144 686.4 Q F0(Display a short description of each)180 686.4 Q F1 +(pattern)2.5 E F2144 698.4 Q F0(Display the description of each) +180 698.4 Q F1(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G +(ormat)-2.5 E F2144 710.4 Q F0 +(Display only a short usage synopsis for each)180 710.4 Q F1(pattern)2.5 +E F0(The return status is 0 unless no command matches)144 727.2 Q F1 +(pattern)3.75 E F0(.).24 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 +E(65)190.395 E 0 Cg EP +%%Page: 66 66 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(history [)108 84 Q/F2 10/Times-Italic@0 SF(n)A F1(])A(history \255c) +108 96 Q(history \255d)108 108 Q F2(of)2.5 E(fset)-.18 E F1 +(history \255d)108 120 Q F2(start)2.5 E F0A F2(end)A F1 +(history \255anrw)108 132 Q F0([)2.5 E F2(\214lename)A F0(])A F1 +(history \255p)108 144 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5(g.) +-.37 G(..)-2.5 E F0(])A F1(history \255s)108 156 Q F2(ar)2.5 E(g)-.37 E +F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 168 S .752 +(th no options, display the command history list with line numbers.).4 F +.752(Lines listed with a)5.752 F F1(*)3.251 E F0(ha)3.251 E -.15(ve)-.2 +G .38(been modi\214ed.)144 180 R .38(An ar)5.38 F .38(gument of)-.18 F +F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 +(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 +/Times-Bold@0 SF(HISTTIMEFOR-)2.881 E(MA)144 192 Q(T)-.855 E F0 .265 +(is set and not null, it is used as a format string for)2.515 F F2 +(strftime)2.764 E F0 .264(\(3\) to display the time stamp asso-)B 1.019 +(ciated with each displayed history entry)144 204 R 6.019(.N)-.65 G +3.519(oi)-6.019 G(nterv)-3.519 E 1.019 +(ening blank is printed between the formatted)-.15 F .176 +(time stamp and the history line.)144 216 R(If)5.176 E F2(\214lename) +2.676 E F0 .176 +(is supplied, it is used as the name of the history \214le; if)2.676 F +(not, the v)144 228 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)2.25 +E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 240 Q F0 +(Clear the history list by deleting all the entries.)180 240 Q F1 +144 252 Q F2(of)2.5 E(fset)-.18 E F0 .389 +(Delete the history entry at position)180 264 R F2(of)2.889 E(fset)-.18 +E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne)2.889 +F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.89(,i).15 G 2.89(ti)-2.89 G +2.89(si)-2.89 G .39(nterpreted as relati)-2.89 F -.15(ve)-.25 G .599 +(to one greater than the last history position, so ne)180 276 R -.05(ga) +-.15 G(ti).05 E .899 -.15(ve i)-.25 H .598 +(ndices count back from the end).15 F(of the history)180 288 Q 2.5(,a) +-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G +(efers to the current)-2.5 E F1(history -d)2.5 E F0(command.)2.5 E F1 +144 300 Q F2(start)2.5 E F0A F2(end)A F0 .757 +(Delete the history entries between positions)180 312 R F2(start)3.257 E +F0(and)3.258 E F2(end)3.258 E F0 3.258(,i)C(nclusi)-3.258 E -.15(ve)-.25 +G 5.758(.P).15 G(ositi)-5.758 E 1.058 -.15(ve a)-.25 H .758(nd ne).15 F +-.05(ga)-.15 G(-).05 E(ti)180 324 Q .3 -.15(ve v)-.25 H(alues for)-.1 E +F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0 +(are interpreted as described abo)2.5 E -.15(ve)-.15 G(.).15 E F1 +144 336 Q F0 .565(Append the `)180 336 R(`ne)-.74 E(w')-.25 E 3.065('h) +-.74 G .564(istory lines to the history \214le.)-3.065 F .564 +(These are history lines entered since)5.564 F(the be)180 348 Q +(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E +(ut not already appended to the history \214le.)-.2 E F1144 360 Q +F0 .854(Read the history lines not already read from the history \214le\ + into the current history list.)180 360 R .773 +(These are lines appended to the history \214le since the be)180 372 R +.772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E +(sion.)180 384 Q F1144 396 Q F0(Read the contents of the history \ +\214le and append them to the current history list.)180 396 Q F1 +144 408 Q F0(Write the current history list to the history \214le, o)180 +408 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G +(ontents.)-2.5 E F1144 420 Q F0 .625 +(Perform history substitution on the follo)180 420 R(wing)-.25 E F2(ar) +3.125 E(gs)-.37 E F0 .626(and display the result on the standard)3.125 F +2.975(output. Does)180 432 R .475 +(not store the results in the history list.)2.975 F(Each)5.475 E F2(ar) +2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F +(normal history e)180 444 Q(xpansion.)-.15 E F1144 456 Q F0 .362 +(Store the)180 456 R F2(ar)3.192 E(gs)-.37 E F0 .363 +(in the history list as a single entry)3.132 F 5.363(.T)-.65 G .363 +(he last command in the history list is)-5.363 F(remo)180 468 Q -.15(ve) +-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 +(are added.)2.77 E .146(If the)144 484.8 R F3(HISTTIMEFORMA)2.645 E(T) +-.855 E F0 -.25(va)2.395 G .145 +(riable is set, the time stamp information associated with each history) +.25 F .668(entry is written to the history \214le, mark)144 496.8 R .669 +(ed with the history comment character)-.1 F 5.669(.W)-.55 G .669 +(hen the history)-5.669 F .956(\214le is read, lines be)144 508.8 R .956 +(ginning with the history comment character follo)-.15 F .955 +(wed immediately by a digit)-.25 F .832 +(are interpreted as timestamps for the follo)144 520.8 R .832 +(wing history entry)-.25 F 5.833(.T)-.65 G .833(he return v)-5.833 F +.833(alue is 0 unless an in-)-.25 F -.25(va)144 532.8 S .168(lid option\ + is encountered, an error occurs while reading or writing the history \ +\214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)2.668 E(f-)-.18 E(set) +144 544.8 Q F0(is supplied as an ar)2.5 E(gument to)-.18 E F12.5 E +F0 2.5(,o)C 2.5(rt)-2.5 G(he history e)-2.5 E +(xpansion supplied as an ar)-.15 E(gument to)-.18 E F12.5 E F0 -.1 +(fa)2.5 G(ils.).1 E F1(jobs)108 561.6 Q F0([)2.5 E F1(\255lnprs)A F0 2.5 +(][)C F2(jobspec)A F0(... ])2.5 E F1(jobs \255x)108 573.6 Q F2(command) +2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 E F0(... ])2.5 E +(The \214rst form lists the acti)144 585.6 Q .3 -.15(ve j)-.25 H 2.5 +(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 597.6 Q F0 +(List process IDs in addition to the normal information.)180 597.6 Q F1 +144 609.6 Q F0 .193(Display information only about jobs that ha) +180 609.6 R .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 621.6 Q F1 +144 633.6 Q F0(List only the process ID of the job')180 633.6 Q 2.5(sp) +-.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 645.6 Q F0 +(Display only running jobs.)180 645.6 Q F1144 657.6 Q F0 +(Display only stopped jobs.)180 657.6 Q(If)144 674.4 Q F2(jobspec)4.554 +E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314 +(n, output is restricted to information about that job).15 F 5.313(.T) +-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 686.4 Q -.25 +(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 +E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 703.2 R F1 +2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 +.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) +3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395 +(with the corre-)3.164 F(sponding process group ID, and e)144 715.2 Q +-.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) +2.83 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 +E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(66)190.395 E 0 Cg EP +%%Page: 67 67 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(kill)108 84 Q F0([)2.5 E F1A/F2 10/Times-Italic@0 SF(sigspec) +2.5 E F0(|)2.5 E F12.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2 +(sigspec)A F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5 +(].)C(..)-2.5 E F1(kill \255l)108 96 Q F0(|)A F1A F0([)2.5 E F2 +(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .017 +(Send the signal named by)144 108 R F2(sigspec)2.857 E F0(or)2.827 E F2 +(signum)2.857 E F0 .017(to the processes named by)2.837 F F2(pid)3.767 E +F0(or)3.287 E F2(jobspec)4.257 E F0(.).31 E F2(sigspec)5.357 E F0(is) +2.827 E .318(either a case-insensiti)144 120 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 132 Q F2(signum)3.268 E F0 +.427(is a signal number)3.247 F 5.427(.I)-.55 G(f)-5.427 E F2(sigspec) +3.267 E F0 .427(is not present, then)3.237 F F3(SIGTERM)2.927 E F0 .427 +(is assumed.)2.677 F .427(An ar)5.427 F(-)-.2 E .313(gument of)144 144 R +F12.813 E F0 .314(lists the signal names.)2.814 F .314(If an)5.314 +F 2.814(ya)-.15 G -.18(rg)-2.814 G .314(uments are supplied when).18 F +F12.814 E F0 .314(is gi)2.814 F -.15(ve)-.25 G .314 +(n, the names of).15 F .12(the signals corresponding to the ar)144 156 R +.119(guments are listed, and the return status is 0.)-.18 F(The)5.119 E +F2 -.2(ex)2.619 G(it_status).2 E F0(ar)2.619 E(-)-.2 E .799(gument to) +144 168 R F13.299 E F0 .799 +(is a number specifying either a signal number or the e)3.299 F .8 +(xit status of a process termi-)-.15 F .963(nated by a signal.)144 180 R +(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va)-.25 +G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 +(returns true if at least one signal w)3.462 F(as)-.1 E +(successfully sent, or f)144 192 Q(alse if an error occurs or an in)-.1 +E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 208.8 Q F2 +(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 +220.8 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 +(xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197 +(ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo) +2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 232.8 Q F2(ar) +2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0 +(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 249.6 Q F0([)2.5 +E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(.. | \255 ])-2.5 E -.15(Fo)144 261.6 S 2.542(re).15 G .042(ach ar) +-2.542 F .042(gument, a local v)-.18 F .042(ariable named)-.25 F F2 +(name)2.902 E F0 .042(is created, and assigned)2.722 F F2(value)2.832 E +F0 5.042(.T).18 G(he)-5.042 E F2(option)2.542 E F0 .041(can be)2.541 F +(an)144 273.6 Q 3.152(yo)-.15 G 3.152(ft)-3.152 G .652 +(he options accepted by)-3.152 F F1(declar)3.152 E(e)-.18 E F0 5.652(.W) +C(hen)-5.652 E F1(local)3.152 E F0 .653 +(is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 +285.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H +.422(isible scope restricted to that function and its children.).15 F +(If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F .509 +(of shell options is made local to the function in which)144 297.6 R F1 +(local)3.01 E F0 .51(is in)3.01 F -.2(vo)-.4 G -.1(ke).2 G .51 +(d: shell options changed us-).1 F 1.171(ing the)144 309.6 R F1(set) +3.671 E F0 -.2(bu)3.671 G 1.171 +(iltin inside the function are restored to their original v).2 F 1.17 +(alues when the function re-)-.25 F 3.38(turns. The)144 321.6 R .88 +(restore is ef)3.38 F .88(fected as if a series of)-.25 F F1(set)3.381 E +F0 .881(commands were e)3.381 F -.15(xe)-.15 G .881 +(cuted to restore the v).15 F(alues)-.25 E .788 +(that were in place before the function.)144 333.6 R -.4(Wi)5.788 G .788 +(th no operands,).4 F F1(local)3.288 E F0 .787(writes a list of local v) +3.288 F .787(ariables to)-.25 F .654(the standard output.)144 345.6 R +.654(It is an error to use)5.654 F F1(local)3.154 E F0 .654 +(when not within a function.)3.154 F .655(The return status is 0)5.654 F +(unless)144 357.6 Q F1(local)2.5 E F0(is used outside a function, an in) +2.5 E -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or)2.68 E +F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout)108 +374.4 Q F0(Exit a login shell.)144 374.4 Q F1(map\214le)108 391.2 Q F0 +([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) +2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 +-2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 +-2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E +F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E +(ay)-.15 E F0(])A F1 -.18(re)108 403.2 S(adarray).18 E F0([)2.5 E F1 +A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5 +(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1-2.5 E F2 +(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1-2.5 E F2 +(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][) +C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0 +(])A .159(Read lines from the standard input into the inde)144 415.2 R +-.15(xe)-.15 G 2.659(da).15 G .159(rray v)-2.659 F(ariable)-.25 E F2 +(arr)2.989 E(ay)-.15 E F0 2.659(,o).32 G 2.658(rf)-2.659 G .158 +(rom \214le descriptor)-2.658 F F2(fd)4.628 E F0 1.248(if the)144 427.2 +R F13.748 E F0 1.248(option is supplied.)3.748 F 1.249(The v)6.249 +F(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 +E F2(arr)3.749 E(ay)-.15 E F0 6.249(.O)C 1.249(ptions, if supplied,) +-6.249 F(ha)144 439.2 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 451.2 Q F0 .911 +(The \214rst character of)180 451.2 R F2(delim)3.411 E F0 .911 +(is used to terminate each input line, rather than ne)3.411 F 3.41 +(wline. If)-.25 F F2(delim)180 463.2 Q F0(is the empty string,)2.5 E F1 +(map\214le)2.5 E F0(will terminate a line when it reads a NUL character) +2.5 E(.)-.55 E F1144 475.2 Q F0(Cop)180 475.2 Q 2.5(ya)-.1 G 2.5 +(tm)-2.5 G(ost)-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count) +2.5 E F0(is 0, all lines are copied.)2.5 E F1144 487.2 Q F0(Be)180 +487.2 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 +E(x)-.15 E F2(origin)2.73 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E +2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 499.2 Q F0 +(Discard the \214rst)180 499.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1 +144 511.2 Q F0(Remo)180 511.2 Q .3 -.15(ve a t)-.15 H(railing).15 +E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E +(wline\) from each line read.)-.25 E F1144 523.2 Q F0 +(Read lines from \214le descriptor)180 523.2 Q F2(fd)2.5 E F0 +(instead of the standard input.)2.5 E F1144 535.2 Q F0(Ev)180 +535.2 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 +(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 +(option speci\214es)2.5 E F2(quantum)2.75 E F0(.).32 E F1144 547.2 +Q F0(Specify the number of lines read between each call to)180 547.2 Q +F2(callbac)2.7 E(k)-.2 E F0(.).67 E(If)144 564 Q F12.967 E F0 .467 +(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 +(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 +(callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 +(luated, it is sup-).25 F .262(plied the inde)144 576 R 2.762(xo)-.15 G +2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be assig\ +ned and the line to be assigned to that element)-.15 F .274 +(as additional ar)144 588 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E +F0 .274(is e)2.774 F -.25(va)-.25 G .274 +(luated after the line is read b).25 F .275 +(ut before the array element is)-.2 F(assigned.)144 600 Q +(If not supplied with an e)144 616.8 Q(xplicit origin,)-.15 E F1 +(map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 +(before assigning to it.)2.5 E F1(map\214le)144 633.6 Q F0 .797 +(returns successfully unless an in)3.298 F -.25(va)-.4 G .797 +(lid option or option ar).25 F .797(gument is supplied,)-.18 F F2(arr) +3.297 E(ay)-.15 E F0 .797(is in-)3.297 F -.25(va)144 645.6 S +(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 +(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E +F1(popd)108 662.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 +2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 674.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 +686.4 R F1(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479 +(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.478 +(uments, if supplied, ha).18 F 1.778 -.15(ve t)-.2 H 1.478(he follo).15 +F(wing)-.25 E(meanings:)144 698.4 Q F1144 710.4 Q F0 .551 +(Suppresses the normal change of directory when remo)180 710.4 R .551 +(ving directories from the stack, so)-.15 F +(that only the stack is manipulated.)180 722.4 Q(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(67)190.395 E 0 Cg EP +%%Page: 68 68 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(+)144 84 Q/F2 10/Times-Italic@0 SF(n)A F0(Remo)180 84 Q -.15(ve)-.15 +G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0 .14 +(th entry counting from the left of the list sho)B .14(wn by)-.25 F F1 +(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 96 +S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0(remo) +2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,)-.65 E +F3(popd +1)2.5 E F0(the second.)2.5 E F1144 108 Q F2(n)A F0(Remo)180 +108 Q -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E F0 1.259 +(th entry counting from the right of the list sho)B 1.26(wn by)-.25 F F1 +(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5(zero. F)180 120 +R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0(remo)2.5 E -.15(ve)-.15 +G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 E F3(popd -1)2.5 E F0 +(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 136.8 R F1(popd)3.144 E +F0 .644(command is successful, a)3.144 F F1(dirs)3.143 E F0 .643 +(is performed as well, and the return status is 0.)3.143 F F1(popd)5.643 +E F0 .415(returns f)144 148.8 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 160.8 Q +(ails.)-.1 E F1(printf)108 177.6 Q F0([)2.5 E F1A F2(var)2.5 E F0 +(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .358 +(Write the formatted)144 189.6 R F2(ar)2.858 E(guments)-.37 E F0 .358 +(to the standard output under the control of the)2.858 F F2(format)2.857 +E F0 5.357(.T)C(he)-5.357 E F12.857 E F0(op-)2.857 E .714 +(tion causes the output to be assigned to the v)144 201.6 R(ariable)-.25 +E F2(var)3.214 E F0 .714(rather than being printed to the standard)3.214 +F(output.)144 213.6 Q(The)144 237.6 Q F2(format)3.018 E F0 .517(is a ch\ +aracter string which contains three types of objects: plain characters,\ + which are)3.018 F .704(simply copied to standard output, character esc\ +ape sequences, which are con)144 249.6 R -.15(ve)-.4 G .704 +(rted and copied to).15 F .036(the standard output, and format speci\ +\214cations, each of which causes printing of the ne)144 261.6 R .036 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 273.6 Q(gument)-.37 E F0 +5.531(.I)C 3.031(na)-5.531 G .531(ddition to the standard)-3.031 F F2 +(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.032 +E F0 .532(interprets the follo)3.032 F(w-)-.25 E(ing e)144 285.6 Q +(xtensions:)-.15 E F1(%b)144 297.6 Q F0(causes)180 297.6 Q F1(printf) +2.596 E F0 .096(to e)2.596 F .096 +(xpand backslash escape sequences in the corresponding)-.15 F F2(ar) +2.596 E(gument)-.37 E F0 .095(in the)2.595 F(same w)180 309.6 Q(ay as) +-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 321.6 Q F0(causes)180 321.6 Q +F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E +(gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F +(input.)180 333.6 Q F1(%\()144 345.6 Q F2(datefmt)A F1(\)T)A F0(causes) +180 357.6 Q F1(printf)4.404 E F0 1.904 +(to output the date-time string resulting from using)4.404 F F2(datefmt) +4.404 E F0 1.903(as a format)4.404 F .38(string for)180 369.6 R F2 +(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) +2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 +(ger representing the number)-.15 F .293(of seconds since the epoch.)180 +381.6 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F +.293(alues may be used: \2551 represents the)-.25 F .693 +(current time, and \2552 represents the time the shell w)180 393.6 R +.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.194(d. If).1 F .694(no ar) +3.194 F .694(gument is speci-)-.18 F .21(\214ed, con)180 405.6 R -.15 +(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71 +G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25 +G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F +F1(printf)2.71 E F0(beha)180 417.6 Q(vior)-.2 E(.)-.55 E .901 +(The %b, %q, and %T directi)144 434.4 R -.15(ve)-.25 G 3.401(sa).15 G +.901(ll use the \214eld width and precision ar)-3.401 F .902 +(guments from the format)-.18 F .358(speci\214cation and write that man) +144 446.4 R 2.858(yb)-.15 G .357 +(ytes from \(or use that wide a \214eld for\) the e)-2.858 F .357 +(xpanded ar)-.15 F(gument,)-.18 E +(which usually contains more characters than the original.)144 458.4 Q +(Ar)144 475.2 Q .463(guments to non-string format speci\214ers are trea\ +ted as C constants, e)-.18 F .464(xcept that a leading plus or)-.15 F +1.259(minus sign is allo)144 487.2 R 1.259 +(wed, and if the leading character is a single or double quote, the v) +-.25 F 1.258(alue is the)-.25 F(ASCII v)144 499.2 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 516 Q F2(format)2.514 E F0 +.015(is reused as necessary to consume all of the)2.514 F F2(ar)2.515 E +(guments)-.37 E F0 5.015(.I)C 2.515(ft)-5.015 G(he)-2.515 E F2(format) +2.515 E F0 .015(requires more)2.515 F F2(ar)2.515 E(-)-.2 E(guments)144 +528 Q F0 .566(than are supplied, the e)3.066 F .566 +(xtra format speci\214cations beha)-.15 F .866 -.15(ve a)-.2 H 3.066(si) +.15 G 3.065(faz)-3.066 G .565(ero v)-3.065 F .565(alue or null string,) +-.25 F(as appropriate, had been supplied.)144 540 Q(The return v)5 E +(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) +108 556.8 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C +-2.5 E F2(n)A F0(])A F1(pushd)108 568.8 Q F0([)2.5 E F1A F0 +2.5(][)C F2(dir)-2.5 E F0(])A .639(Adds a directory to the top of the d\ +irectory stack, or rotates the stack, making the ne)144 580.8 R 3.14(wt) +-.25 G .64(op of the)-3.14 F .417(stack the current w)144 592.8 R .416 +(orking directory)-.1 F 5.416(.W)-.65 G .416(ith no ar)-5.816 F +(guments,)-.18 E F1(pushd)2.916 E F0 -.15(ex)2.916 G .416 +(changes the top tw).15 F 2.916(od)-.1 G(irectories)-2.916 E 1.625 +(and returns 0, unless the directory stack is empty)144 604.8 R 6.625 +(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 +-.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 616.8 Q +F1144 628.8 Q F0 1.811(Suppresses the normal change of directory \ +when rotating or adding directories to the)180 628.8 R +(stack, so that only the stack is manipulated.)180 640.8 Q F1(+)144 +652.8 Q F2(n)A F0 1.267(Rotates the stack so that the)180 652.8 R F2(n) +3.767 E F0 1.268(th directory \(counting from the left of the list sho)B +1.268(wn by)-.25 F F1(dirs)180 664.8 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E F1144 676.8 Q F2(n)A F0 +.92(Rotates the stack so that the)180 676.8 R 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 688.8 Q F0 2.5(,s)C(tarting with zero\) is at the top.) +-2.5 E F2(dir)144.35 700.8 Q F0(Adds)180 700.8 Q F2(dir)3.137 E F0 .287 +(to the directory stack at the top, making it the ne)3.517 F 2.788(wc) +-.25 G .288(urrent w)-2.788 F .288(orking directory as)-.1 F +(if it had been supplied as the ar)180 712.8 Q(gument to the)-.18 E F1 +(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 729.6 R F1(pushd) +2.989 E F0 .489(command is successful, a)2.989 F F1(dirs)2.988 E F0 .488 +(is performed as well.)2.988 F .488(If the \214rst form is used,)5.488 F +F1(pushd)2.988 E F0(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(68) +190.395 E 0 Cg EP +%%Page: 69 69 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.039 +(returns 0 unless the cd to)144 84 R/F1 10/Times-Italic@0 SF(dir)3.889 E +F0 -.1(fa)4.269 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 F/F2 +10/Times-Bold@0 SF(pushd)3.54 E F0 1.04(returns 0 unless the directory) +3.54 F .847(stack is empty)144 96 R 3.347(,an)-.65 G(on-e)-3.347 E .847 +(xistent directory stack element is speci\214ed, or the directory chang\ +e to the)-.15 F(speci\214ed ne)144 108 Q 2.5(wc)-.25 G +(urrent directory f)-2.5 E(ails.)-.1 E F2(pwd)108 124.8 Q F0([)2.5 E F2 +(\255LP)A F0(])A .844(Print the absolute pathname of the current w)144 +136.8 R .845(orking directory)-.1 F 5.845(.T)-.65 G .845 +(he pathname printed contains no)-5.845 F .182(symbolic links if the)144 +148.8 R F22.681 E F0 .181(option is supplied or the)2.681 F F2 +.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F2 +(set)2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263 +(enabled. If)144 160.8 R(the)3.263 E F23.263 E F0 .763 +(option is used, the pathname printed may contain symbolic links.)3.263 +F .764(The return)5.764 F .405(status is 0 unless an error occurs while\ + reading the name of the current directory or an in)144 172.8 R -.25(va) +-.4 G .405(lid op-).25 F(tion is supplied.)144 184.8 Q F2 -.18(re)108 +201.6 S(ad).18 E F0([)3.816 E F2(\255ers)A F0 3.816(][)C F2-3.816 +E F1(aname)3.816 E F0 3.816(][)C F2-3.816 E F1(delim)3.816 E F0 +3.816(][)C F2-3.816 E F1(te)3.816 E(xt)-.2 E F0 3.816(][)C F2 +-3.816 E F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F2 +-3.817 E F1(nc)3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F2-3.817 E +F1(pr)3.817 E(ompt)-.45 E F0 3.817(][)C F2-3.817 E F1(timeout) +3.817 E F0 3.817(][)C F2-3.817 E F1(fd)3.817 E F0(])A([)108 213.6 +Q F1(name)A F0(...])2.5 E .516(One line is read from the standard input\ +, or from the \214le descriptor)144 225.6 R F1(fd)3.016 E F0 .516 +(supplied as an ar)3.016 F .516(gument to)-.18 F(the)144 237.6 Q F2 +2.935 E F0 .435(option, split into w)2.935 F .435 +(ords as described abo)-.1 F .735 -.15(ve u)-.15 H(nder).15 E F2 -.75 +(Wo)2.935 G .435(rd Splitting).75 F F0 2.935(,a)C .436(nd the \214rst w) +-2.935 F .436(ord is as-)-.1 F .376(signed to the \214rst)144 249.6 R F1 +(name)3.236 E F0 2.876(,t).18 G .376(he second w)-2.876 F .376 +(ord to the second)-.1 F F1(name)3.236 E F0 2.876(,a).18 G .376 +(nd so on.)-2.876 F .375(If there are more w)5.376 F(ords)-.1 E .236 +(than names, the remaining w)144 261.6 R .237(ords and their interv)-.1 +F .237(ening delimiters are assigned to the last)-.15 F F1(name)3.097 E +F0 5.237(.I).18 G(f)-5.237 E .875(there are fe)144 273.6 R .875(wer w) +-.25 F .875(ords read from the input stream than names, the remaining n\ +ames are assigned)-.1 F .517(empty v)144 285.6 R 3.017(alues. The)-.25 F +.517(characters in)3.017 F/F3 9/Times-Bold@0 SF(IFS)3.017 E F0 .518 +(are used to split the line into w)2.767 F .518 +(ords using the same rules the)-.1 F .027(shell uses for e)144 297.6 R +.026(xpansion \(described abo)-.15 F .326 -.15(ve u)-.15 H(nder).15 E F2 +-.75(Wo)2.526 G .026(rd Splitting).75 F F0 2.526(\). The)B .026 +(backslash character \()2.526 F F2(\\)A F0 2.526(\)m)C(ay)-2.526 E .488 +(be used to remo)144 309.6 R .788 -.15(ve a)-.15 H .788 -.15(ny s).15 H +.488(pecial meaning for the ne).15 F .488 +(xt character read and for line continuation.)-.15 F(Op-)5.489 E +(tions, if supplied, ha)144 321.6 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F2144 333.6 Q F1(aname)2.5 E F0 1.026 +(The w)180 345.6 R 1.026 +(ords are assigned to sequential indices of the array v)-.1 F(ariable) +-.25 E F1(aname)3.855 E F0 3.525(,s).18 G 1.025(tarting at 0.)-3.525 F +F1(aname)180.33 357.6 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 F1(name)2.5 E F0 +(ar)2.5 E(guments are ignored.)-.18 E F2144 369.6 Q F1(delim)2.5 E +F0 .28(The \214rst character of)180 381.6 R F1(delim)2.78 E F0 .281 +(is used to terminate the input line, rather than ne)2.78 F 2.781 +(wline. If)-.25 F F1(de-)2.781 E(lim)180 393.6 Q F0 +(is the empty string,)2.5 E F2 -.18(re)2.5 G(ad).18 E F0 +(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F2 +144 405.6 Q F0 .373 +(If the standard input is coming from a terminal,)180 405.6 R F2 -.18 +(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.872 E F0(abo) +2.622 E -.15(ve)-.15 G 2.872(\)i).15 G 2.872(su)-2.872 G(sed)-2.872 E +.218(to obtain the line.)180 417.6 R .218 +(Readline uses the current \(or def)5.218 F .218 +(ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E +(acti)180 429.6 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E +(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E +(ault \214lename completion.)-.1 E F2144 441.6 Q F1(te)2.5 E(xt) +-.2 E F0(If)180 441.6 Q F2 -.18(re)2.716 G(adline).18 E F0 .216 +(is being used to read the line,)2.716 F F1(te)2.716 E(xt)-.2 E F0 .216 +(is placed into the editing b)2.716 F(uf)-.2 E .215(fer before edit-) +-.25 F(ing be)180 453.6 Q(gins.)-.15 E F2144 465.6 Q F1(nc)2.5 E +(har)-.15 E(s)-.1 E F2 -.18(re)180 477.6 S(ad).18 E F0 .322 +(returns after reading)2.822 F F1(nc)2.823 E(har)-.15 E(s)-.1 E F0 .323 +(characters rather than w)2.823 F .323 +(aiting for a complete line of in-)-.1 F(put, b)180 489.6 Q +(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F1(nc)2.5 E(har)-.15 +E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F2 +144 501.6 Q F1(nc)2.5 E(har)-.15 E(s)-.1 E F2 -.18(re)180 513.6 S +(ad).18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F1(nc) +3.769 E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F +1.269(aiting for a complete)-.1 F .274 +(line of input, unless EOF is encountered or)180 525.6 R F2 -.18(re) +2.775 G(ad).18 E F0 .275(times out.)2.775 F .275 +(Delimiter characters encoun-)5.275 F 1.003 +(tered in the input are not treated specially and do not cause)180 537.6 +R F2 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F1(nc) +3.502 E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 549.6 R .608 +(The result is not split on the characters in)5.608 F F2(IFS)3.108 E F0 +3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 561.6 S .67 +(riable is assigned e).25 F .669 +(xactly the characters read \(with the e)-.15 F .669 +(xception of backslash; see the)-.15 F F2180 573.6 Q F0 +(option belo)2.5 E(w\).)-.25 E F2144 585.6 Q F1(pr)2.5 E(ompt)-.45 +E F0(Display)180 597.6 Q F1(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 609.6 Q +2.5(yi)-.15 G 2.5(nput. The)-2.5 F +(prompt is displayed only if input is coming from a terminal.)2.5 E F2 +144 621.6 Q F0 .544(Backslash does not act as an escape character) +180 621.6 R 5.543(.T)-.55 G .543 +(he backslash is considered to be part of)-5.543 F .492(the line.)180 +633.6 R .492(In particular)5.492 F 2.992(,ab)-.4 G(ackslash-ne)-2.992 E +.493(wline pair may not then be used as a line continua-)-.25 F(tion.) +180 645.6 Q F2144 657.6 Q F0(Silent mode.)180 657.6 Q +(If input is coming from a terminal, characters are not echoed.)5 E F2 +144 669.6 Q F1(timeout)2.5 E F0(Cause)180 681.6 Q F2 -.18(re)2.929 +G(ad).18 E F0 .428(to time out and return f)2.929 F .428 +(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56 +(ber of characters\) is not read within)180 693.6 R F1(timeout)3.061 E +F0(seconds.)3.061 E F1(timeout)5.561 E F0 .561(may be a decimal number) +3.061 F(with a fractional portion follo)180 705.6 Q +(wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E +.3 -.15(ve i)-.25 H(f).15 E F2 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ +g input from a terminal, pipe, or other special \214le; it has no ef)180 +717.6 R .506(fect when reading)-.25 F .59(from re)180 729.6 R .59 +(gular \214les.)-.15 F(If)5.59 E F2 -.18(re)3.09 G(ad).18 E F0 .589 +(times out,)3.09 F F2 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2 +G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589 +(artial input read into the speci\214ed).15 F(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(69)190.395 E 0 Cg EP +%%Page: 70 70 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)180 84 S +(riable).25 E/F1 10/Times-Italic@0 SF(name)2.77 E F0 5.27(.I)C(f)-5.27 E +F1(timeout)2.77 E F0 .27(is 0,)2.77 F/F2 10/Times-Bold@0 SF -.18(re)2.77 +G(ad).18 E F0 .27(returns immediately)2.77 F 2.77(,w)-.65 G .27 +(ithout trying to read an)-2.77 F 2.77(yd)-.15 G(ata.)-2.77 E 1.12 +(The e)180 96 R 1.12(xit status is 0 if input is a)-.15 F -.25(va)-.2 G +1.12(ilable on the speci\214ed \214le descriptor).25 F 3.62(,n)-.4 G +1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 108 R -.15(ex)2.5 G +(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E +F2144 120 Q F1(fd)2.5 E F0(Read input from \214le descriptor)180 +120 Q F1(fd)2.5 E F0(.)A .522(If no)144 136.8 R F1(names)3.382 E F0 .522 +(are supplied, the line read, without the ending delimiter b)3.292 F +.522(ut otherwise unmodi\214ed, is)-.2 F 1.187(assigned to the v)144 +148.8 R(ariable)-.25 E/F3 9/Times-Bold@0 SF(REPL)3.686 E(Y)-.828 E/F4 9 +/Times-Roman@0 SF(.)A F0 1.186(The e)5.686 F 1.186 +(xit status is zero, unless end-of-\214le is encountered,)-.15 F F2 -.18 +(re)3.686 G(ad).18 E F0 .96 +(times out \(in which case the status is greater than 128\), a v)144 +160.8 R .961(ariable assignment error \(such as as-)-.25 F .707 +(signing to a readonly v)144 172.8 R .706(ariable\) occurs, or an in) +-.25 F -.25(va)-.4 G .706(lid \214le descriptor is supplied as the ar) +.25 F .706(gument to)-.18 F F2144 184.8 Q F0(.)A F2 -.18(re)108 +201.6 S(adonly).18 E F0([)2.5 E F2(\255aAf)A F0 2.5(][)C F2-2.5 E +F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(wor)A(d)-.37 E F0 2.5(].)C(..]) +-2.5 E .77(The gi)144 213.6 R -.15(ve)-.25 G(n).15 E F1(names)3.27 E F0 +.77(are mark)3.27 F .77(ed readonly; the v)-.1 F .77(alues of these)-.25 +F F1(names)3.63 E F0 .77(may not be changed by subse-)3.54 F 1.097 +(quent assignment.)144 225.6 R 1.097(If the)6.097 F F23.597 E F0 +1.097(option is supplied, the functions corresponding to the)3.597 F F1 +(names)3.596 E F0 1.096(are so)3.596 F(mark)144 237.6 Q 3.334(ed. The) +-.1 F F23.334 E F0 .834(option restricts the v)3.334 F .834 +(ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) +-3.334 F F23.334 E F0 .834(option restricts the v)3.334 F(ari-) +-.25 E .777(ables to associati)144 249.6 R 1.077 -.15(ve a)-.25 H 3.277 +(rrays. If).15 F .777(both options are supplied,)3.277 F F23.277 E +F0(tak)3.277 E .776(es precedence.)-.1 F .776(If no)5.776 F F1(name) +3.636 E F0(ar)3.456 E(gu-)-.18 E .521(ments are gi)144 261.6 R -.15(ve) +-.25 G .521(n, or if the).15 F F23.021 E F0 .521 +(option is supplied, a list of all readonly names is printed.)3.021 F +.522(The other)5.521 F .295(options may be used to restrict the output \ +to a subset of the set of readonly names.)144 273.6 R(The)5.295 E F2 +2.795 E F0(option)2.795 E .786 +(causes output to be displayed in a format that may be reused as input.) +144 285.6 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144 +297.6 Q .718(wed by =)-.25 F F1(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +-3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F1(wor) +3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) +-5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) +144 309.6 R F1(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +-.25 F .26(ariable name, or)-.25 F F22.76 E F0 .26 +(is supplied with a)2.76 F F1(name)144.36 321.6 Q F0 +(that is not a function.)2.68 E F2 -.18(re)108 338.4 S(tur).18 E(n)-.15 +E F0([)2.5 E F1(n)A F0(])A .021(Causes a function to stop e)144 350.4 R +-.15(xe)-.15 G .021(cuting and return the v).15 F .021 +(alue speci\214ed by)-.25 F F1(n)2.88 E F0 .02(to its caller)2.76 F 5.02 +(.I)-.55 G(f)-5.02 E F1(n)2.88 E F0 .02(is omitted,)2.76 F .596 +(the return status is that of the last command e)144 362.4 R -.15(xe) +-.15 G .597(cuted in the function body).15 F 5.597(.I)-.65 G(f)-5.597 E +F2 -.18(re)3.097 G(tur).18 E(n)-.15 E F0 .597(is e)3.097 F -.15(xe)-.15 +G(cuted).15 E .267(by a trap handler)144 374.4 R 2.767(,t)-.4 G .267 +(he last command used to determine the status is the last command e) +-2.767 F -.15(xe)-.15 G .267(cuted be-).15 F .02(fore the trap handler) +144 386.4 R 5.02(.I)-.55 G(f)-5.02 E F2 -.18(re)2.52 G(tur).18 E(n)-.15 +E F0 .02(is e)2.52 F -.15(xe)-.15 G .02(cuted during a).15 F F2(DEB)2.52 +E(UG)-.1 E F0 .02(trap, the last command used to deter)2.52 F(-)-.2 E +.886(mine the status is the last command e)144 398.4 R -.15(xe)-.15 G +.886(cuted by the trap handler before).15 F F2 -.18(re)3.385 G(tur).18 E +(n)-.15 E F0 -.1(wa)3.385 G 3.385(si).1 G -1.9 -.4(nv o)-3.385 H -.1(ke) +.4 G 3.385(d. If).1 F F2 -.18(re)144 410.4 S(tur).18 E(n)-.15 E F0 .627 +(is used outside a function, b)3.127 F .628(ut during e)-.2 F -.15(xe) +-.15 G .628(cution of a script by the).15 F F2(.)3.128 E F0(\()5.628 E +F2(sour)A(ce)-.18 E F0 3.128(\)c)C .628(ommand, it)-3.128 F .589 +(causes the shell to stop e)144 422.4 R -.15(xe)-.15 G .589 +(cuting that script and return either).15 F F1(n)3.448 E F0 .588 +(or the e)3.328 F .588(xit status of the last com-)-.15 F .325(mand e) +144 434.4 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F +.326(xit status of the script.)-.15 F(If)5.326 E F1(n)2.826 E F0 .326 +(is supplied, the return v)2.826 F .326(alue is)-.25 F .445 +(its least signi\214cant 8 bits.)144 446.4 R .444 +(The return status is non-zero if)5.445 F F2 -.18(re)2.944 G(tur).18 E +(n)-.15 E F0 .444(is supplied a non-numeric ar)2.944 F(gu-)-.18 E .381 +(ment, or is used outside a function and not during e)144 458.4 R -.15 +(xe)-.15 G .381(cution of a script by).15 F F2(.)2.881 E F0(or)3.714 E +F2(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15 +E .75(mand associated with the)144 470.4 R F2(RETURN)3.249 E F0 .749 +(trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15 +G .749(cution resumes after the function).15 F(or script.)144 482.4 Q F2 +(set)108 499.2 Q F0([)2.5 E F2(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C +F2-2.5 E F1(option\255name)2.5 E F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E +F0(...])2.5 E F2(set)108 511.2 Q F0([)2.5 E F2(+abefhkmnptuvxBCEHPT)A F0 +2.5(][)C F2(+o)-2.5 E F1(option\255name)2.5 E F0 2.5(][)C F1(ar)-2.5 E +(g)-.37 E F0(...])2.5 E -.4(Wi)144 523.2 S .835 +(thout options, the name and v).4 F .835(alue of each shell v)-.25 F +.836(ariable are displayed in a format that can be)-.25 F .784 +(reused as input for setting or resetting the currently-set v)144 535.2 +R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783 +(riables cannot be).25 F 2.946(reset. In)144 547.2 R F1 .447(posix mode) +2.946 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447 +(ariables are listed.)-.25 F .447 +(The output is sorted according to the current)5.447 F 3.531 +(locale. When)144 559.2 R 1.031(options are speci\214ed, the)3.531 F +3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An) +-.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F .584 +(after option processing are treated as v)144 571.2 R .585 +(alues for the positional parameters and are assigned, in or)-.25 F(-) +-.2 E(der)144 583.2 Q 2.5(,t)-.4 G(o)-2.5 E F2($1)2.5 E F0(,)A F2($2)2.5 +E F0(,)A F2 2.5(... $)2.5 F F1(n)A F0 5(.O)C(ptions, if speci\214ed, ha) +-5 E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F2144 +595.2 Q F0 1.378(Each v)184 595.2 R 1.377 +(ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve) +-.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.377(xport attrib)-.15 F +1.377(ute and)-.2 F(mark)184 607.2 Q(ed for e)-.1 E(xport to the en)-.15 +E(vironment of subsequent commands.)-.4 E F2144 619.2 Q F0 .131 +(Report the status of terminated background jobs immediately)184 619.2 R +2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E +(primary prompt.)184 631.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F2144 643.2 Q F0 +.088(Exit immediately if a)184 643.2 R F1(pipeline)2.588 E F0 .087 +(\(which may consist of a single)2.588 F F1 .087(simple command)2.587 F +F0 .087(\), a)B F1(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 655.2 Q +F1 1.52(compound command)4.02 F F0(\(see)4.021 E F3 1.521(SHELL GRAMMAR) +4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e).15 F 1.521 +(xits with a non-zero status.)-.15 F .08(The shell does not e)184 667.2 +R .079(xit if the command that f)-.15 F .079 +(ails is part of the command list immediately)-.1 F(follo)184 679.2 Q +1.654(wing a)-.25 F F2(while)4.154 E F0(or)4.154 E F2(until)4.154 E F0 +-.1(ke)4.154 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.655 +(wing the)-.25 F F2(if)4.155 E F0(or)4.155 E F2(elif)4.155 E F0(reserv) +4.155 E(ed)-.15 E -.1(wo)184 691.2 S .582(rds, part of an).1 F 3.082(yc) +-.15 G .582(ommand e)-3.082 F -.15(xe)-.15 G .581(cuted in a).15 F F2 +(&&)3.081 E F0(or)3.081 E F2(||)3.081 E F0 .581(list e)3.081 F .581 +(xcept the command follo)-.15 F(wing)-.25 E .917(the \214nal)184 703.2 R +F2(&&)3.417 E F0(or)3.417 E F2(||)3.417 E F0 3.417(,a)C 1.217 -.15(ny c) +-3.417 H .918(ommand in a pipeline b).15 F .918 +(ut the last, or if the command')-.2 F 3.418(sr)-.55 G(eturn)-3.418 E +-.25(va)184 715.2 S .661(lue is being in).25 F -.15(ve)-.4 G .661 +(rted with).15 F F2(!)3.161 E F0 5.661(.I)C 3.161(fac)-5.661 G .66 +(ompound command other than a subshell returns a)-3.161 F 1.112 +(non-zero status because a command f)184 727.2 R 1.112(ailed while)-.1 F +F23.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.113 +(eing ignored, the shell does)-3.612 F(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(70)190.395 E 0 Cg EP +%%Page: 71 71 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .178(not e)184 84 +R 2.678(xit. A)-.15 F .178(trap on)2.678 F/F1 10/Times-Bold@0 SF(ERR) +2.678 E F0 2.678(,i)C 2.678(fs)-2.678 G .178(et, is e)-2.678 F -.15(xe) +-.15 G .178(cuted before the shell e).15 F 2.677(xits. This)-.15 F .177 +(option applies to)2.677 F .617(the shell en)184 96 R .617 +(vironment and each subshell en)-.4 F .617(vironment separately \(see) +-.4 F/F2 9/Times-Bold@0 SF .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR) +184 108 R(ONMENT)-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 +(\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 +(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 120 Q +.998(If a compound command or shell function e)184 138 R -.15(xe)-.15 G +.999(cutes in a conte).15 F .999(xt where)-.15 F F13.499 E F0 .999 +(is being ig-)3.499 F .089(nored, none of the commands e)184 150 R -.15 +(xe)-.15 G .089(cuted within the compound command or function body).15 F +.502(will be af)184 162 R .502(fected by the)-.25 F F13.002 E F0 +.502(setting, e)3.002 F -.15(ve)-.25 G 3.002(ni).15 G(f)-3.002 E F1 +3.002 E F0 .502(is set and a command returns a f)3.002 F .503 +(ailure sta-)-.1 F 4.184(tus. If)184 174 R 4.184(ac)4.184 G 1.684 +(ompound command or shell function sets)-4.184 F F14.183 E F0 +1.683(while e)4.183 F -.15(xe)-.15 G 1.683(cuting in a conte).15 F(xt) +-.15 E(where)184 186 Q F13.153 E F0 .653 +(is ignored, that setting will not ha)3.153 F .954 -.15(ve a)-.2 H .954 +-.15(ny e).15 H -.25(ff).15 G .654(ect until the compound command).25 F +(or the command containing the function call completes.)184 198 Q F1 +144 210 Q F0(Disable pathname e)184 210 Q(xpansion.)-.15 E F1 +144 222 Q F0 .988(Remember the location of commands as the)184 222 +R 3.488(ya)-.15 G .988(re look)-3.488 F .988(ed up for e)-.1 F -.15(xe) +-.15 G 3.488(cution. This).15 F .987(is en-)3.487 F(abled by def)184 234 +Q(ault.)-.1 E F1144 246 Q F0 .513(All ar)184 246 R .514 +(guments in the form of assignment statements are placed in the en)-.18 +F .514(vironment for a)-.4 F +(command, not just those that precede the command name.)184 258 Q F1 +144 270 Q F0 .149(Monitor mode.)184 270 R .149 +(Job control is enabled.)5.149 F .148(This option is on by def)5.149 F +.148(ault for interacti)-.1 F .448 -.15(ve s)-.25 H(hells).15 E .65 +(on systems that support it \(see)184 282 R F2 .651(JOB CONTR)3.151 F +(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .651 +(processes run in a separate)3.151 F .679(process group.)184 294 R .678 +(When a background job completes, the shell prints a line containing it\ +s)5.679 F -.15(ex)184 306 S(it status.).15 E F1144 318 Q F0 .652 +(Read commands b)184 318 R .652(ut do not e)-.2 F -.15(xe)-.15 G .652 +(cute them.).15 F .653(This may be used to check a shell script for) +5.652 F(syntax errors.)184 330 Q(This is ignored by interacti)5 E .3 +-.15(ve s)-.25 H(hells.).15 E F1144 342 Q/F3 10/Times-Italic@0 SF +(option\255name)2.5 E F0(The)184 354 Q F3(option\255name)2.5 E F0 +(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 366 Q F0 +(Same as)224 378 Q F12.5 E F0(.)A F1(braceexpand)184 390 Q F0 +(Same as)224 402 Q F12.5 E F0(.)A F1(emacs)184 414 Q F0 .089 +(Use an emacs-style command line editing interf)224 414 R 2.589 +(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 +(when the shell is interacti)224 426 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 2.5(option. This)224 438 R(also af)2.5 E(fects the editing interf) +-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err) +184 450 Q(exit)-.18 E F0(Same as)224 450 Q F12.5 E F0(.)A F1 +(errtrace)184 462 Q F0(Same as)224 462 Q F12.5 E F0(.)A F1 +(functrace)184 474 Q F0(Same as)224 486 Q F12.5 E F0(.)A F1 +(hashall)184 498 Q F0(Same as)224 498 Q F12.5 E F0(.)A F1 +(histexpand)184 510 Q F0(Same as)224 522 Q F12.5 E F0(.)A F1 +(history)184 534 Q F0 .587(Enable command history)224 534 R 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 546 Q +(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 +558 Q(eeof)-.18 E F0 1.656(The ef)224 570 R 1.656 +(fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10) +4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224 +582 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 594 S(yw).1 E(ord)-.1 E F0(Same as)224 606 Q F1 +2.5 E F0(.)A F1(monitor)184 618 Q F0(Same as)224 618 Q F12.5 +E F0(.)A F1(noclob)184 630 Q(ber)-.1 E F0(Same as)224 642 Q F12.5 +E F0(.)A F1(noexec)184 654 Q F0(Same as)224 654 Q F12.5 E F0(.)A +F1(noglob)184 666 Q F0(Same as)224 666 Q F12.5 E F0(.)A F1(nolog) +184 678 Q F0(Currently ignored.)224 678 Q F1(notify)184 690 Q F0 +(Same as)224 690 Q F12.5 E F0(.)A F1(nounset)184 702 Q F0(Same as) +224 702 Q F12.5 E F0(.)A F1(onecmd)184 714 Q F0(Same as)224 714 Q +F12.5 E F0(.)A(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(71) +190.395 E 0 Cg EP +%%Page: 72 72 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(ph)184 84 Q(ysical)-.15 E F0(Same as)224 84 Q F12.5 E F0(.)A F1 +(pipefail)184 96 Q F0 1.03(If set, the return v)224 96 R 1.029 +(alue of a pipeline is the v)-.25 F 1.029 +(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 108 R +1.136 +(xit with a non-zero status, or zero if all commands in the pipeline) +-.15 F -.15(ex)224 120 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 132 Q F0 +2.091(Change the beha)224 132 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 +2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 +(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 +144 R/F2 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9 +/Times-Bold@0 SF 1.212(SEE ALSO)3.712 F F0(belo)3.463 E(w)-.25 E .955 +(for a reference to a document that details ho)224 156 R 3.454(wp)-.25 G +.954(osix mode af)-3.454 F .954(fects bash')-.25 F 3.454(sb)-.55 G(e-) +-3.454 E(ha)224 168 Q(vior)-.2 E(.)-.55 E F1(pri)184 180 Q(vileged)-.1 E +F0(Same as)224 192 Q F12.5 E F0(.)A F1 -.1(ve)184 204 S(rbose).1 E +F0(Same as)224 204 Q F12.5 E F0(.)A F1(vi)184 216 Q F0 .209 +(Use a vi-style command line editing interf)224 216 R 2.709(ace. This) +-.1 F .209(also af)2.709 F .21(fects the editing in-)-.25 F(terf)224 228 +Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(xtrace) +184 240 Q F0(Same as)224 240 Q F12.5 E F0(.)A(If)184 258 Q F1 +3.053 E F0 .553(is supplied with no)3.053 F F2(option\255name) +3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552 +(alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184 +270 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 282 Q F1 +144 294 Q F0 -.45(Tu)184 294 S 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($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.5 +(cessed, shell functions are not inherited from the en)184 306 R 1.501 +(vironment, and the)-.4 F F3(SHELLOPTS)4.001 E/F4 9/Times-Roman@0 SF(,)A +F3 -.27(BA)184 318 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G +(H).855 E F4(,)A F0(and)2.775 E F3(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G +.524(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F +(vironment,)-.4 E .379(are ignored.)184 330 R .379 +(If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15 +(ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462 +(user \(group\) id, and the)184 342 R F12.961 E F0 .461 +(option is not supplied, these actions are tak)2.961 F .461 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 354 Q .694 -.15(ve u)-.25 H .394 +(ser id is set to the real user id.).15 F .395(If the)5.395 F F1 +2.895 E F0 .395(option is supplied at startup, the ef)2.895 F(fecti)-.25 +E -.15(ve)-.25 G .387(user id is not reset.)184 366 R -.45(Tu)5.387 G +.387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886 +F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F +(set to the real user and group ids.)184 378 Q F1144 390 Q F0 +(Exit after reading and e)184 390 Q -.15(xe)-.15 G(cuting one command.) +.15 E F1144 402 Q F0 -.35(Tr)184 402 S .043(eat unset v).35 F .044 +(ariables and parameters other than the special parameters "@" and "*" \ +as an)-.25 F .183(error when performing parameter e)184 414 R 2.683 +(xpansion. If)-.15 F -.15(ex)2.683 G .182 +(pansion is attempted on an unset v).15 F(ari-)-.25 E .746 +(able or parameter)184 426 R 3.246(,t)-.4 G .746 +(he shell prints an error message, and, if not interacti)-3.246 F -.15 +(ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184 +438 Q F1144 450 Q F0(Print shell input lines as the)184 450 Q 2.5 +(ya)-.15 G(re read.)-2.5 E F1144 462 Q F0 .315(After e)184 462 R +.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 +474 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F +1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0 +(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 486 Q +(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 +144 498 Q F0 1.206(The shell performs brace e)184 498 R 1.206 +(xpansion \(see)-.15 F F1 1.205(Brace Expansion)3.705 F F0(abo)3.705 E +-.15(ve)-.15 G 3.705(\). This).15 F 1.205(is on by de-)3.705 F -.1(fa) +184 510 S(ult.).1 E F1144 522 Q F0 .213(If set,)184 522 R 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 534 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +(rridden when creating output \214les by using the redirection opera-) +.15 F(tor)184 546 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 558 Q F0 .103(If set, an)184 558 R 2.603(yt)-.15 G .103 +(rap on)-2.603 F F1(ERR)2.603 E F0 .104 +(is inherited by shell functions, command substitutions, and com-)2.603 +F .839(mands e)184 570 R -.15(xe)-.15 G .839(cuted in a subshell en).15 +F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838 +(trap is normally not inherited in)3.338 F(such cases.)184 582 Q F1 +144 594 Q F0(Enable)184 594 Q F1(!)3.031 E F0 .531 +(style history substitution.)5.531 F .531(This option is on by def)5.531 +F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 606 Q -.15 +(ve)-.25 G(.).15 E F1144 618 Q F0 .96 +(If set, the shell does not resolv)184 618 R 3.459(es)-.15 G .959 +(ymbolic links when e)-3.459 F -.15(xe)-.15 G .959 +(cuting commands such as).15 F F1(cd)3.459 E F0 1.452 +(that change the current w)184 630 R 1.452(orking directory)-.1 F 6.452 +(.I)-.65 G 3.953(tu)-6.452 G 1.453(ses the ph)-3.953 F 1.453 +(ysical directory structure in-)-.05 F 3.335(stead. By)184 642 R(def) +3.335 E(ault,)-.1 E F1(bash)3.334 E F0(follo)3.334 E .834 +(ws the logical chain of directories when performing com-)-.25 F +(mands which change the current directory)184 654 Q(.)-.65 E F1144 +666 Q F0 .89(If set, an)184 666 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 +(DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 +(are inherited by shell functions, command)3.39 F 1.932 +(substitutions, and commands e)184 678 R -.15(xe)-.15 G 1.932 +(cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E +(UG)-.1 E F0(and)4.432 E F1(RETURN)184 690 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 702 Q +F0 .4(If no ar)184 702 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401 +(his option, then the positional parameters are unset.)-2.901 F +(Otherwise,)5.401 E(the positional parameters are set to the)184 714 Q +F2(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G +(ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(72)190.395 E 0 Cg EP +%%Page: 73 73 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q F0 .797(Signal the end of options, cause all remaining) +184 84 R/F2 10/Times-Italic@0 SF(ar)3.297 E(g)-.37 E F0 3.297(st)C 3.297 +(ob)-3.297 G 3.296(ea)-3.297 G .796(ssigned to the positional pa-)-3.296 +F 3.021(rameters. The)184 96 R F13.021 E F0(and)3.022 E F1 +3.022 E F0 .522(options are turned of)3.022 F 3.022(f. If)-.25 F .522 +(there are no)3.022 F F2(ar)3.022 E(g)-.37 E F0 .522 +(s, the positional pa-)B(rameters remain unchanged.)184 108 Q .425 +(The options are of)144 124.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef) +-2.925 E .425(ault unless otherwise noted.)-.1 F .425 +(Using + rather than \255 causes these options)5.425 F .177 +(to be turned of)144 136.8 R 2.677(f. The)-.25 F .178 +(options can also be speci\214ed as ar)2.678 F .178(guments to an in) +-.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066 +(current set of options may be found in)144 148.8 R F1<24ad>2.566 E F0 +5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 +(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F +(is encountered.)144 160.8 Q F1(shift)108 177.6 Q F0([)2.5 E F2(n)A F0 +(])A .428(The positional parameters from)144 189.6 R F2(n)2.928 E F0 +.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G +.429(rameters represented by the num-).15 F(bers)144 201.6 Q F1($#)2.583 +E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0A F2(n)A F0 .083 +(+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga) +-.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to) +.15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06 +(is 0, no parameters are changed.)144 213.6 R(If)5.06 E F2(n)2.92 E F0 +.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F +(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56 +(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 225.6 R +.144(The return status is greater than zero if)5.144 F F2(n)3.003 E F0 +.143(is greater than)2.883 F F1($#)2.643 E F0 +(or less than zero; otherwise 0.)144 237.6 Q F1(shopt)108 254.4 Q F0([) +2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname) +-2.5 E F0(...])2.5 E -.8(To)144 266.4 S .639(ggle the v).8 F .639 +(alues of settings controlling optional shell beha)-.25 F(vior)-.2 E +5.639(.T)-.55 G .64(he settings can be either those)-5.639 F .375 +(listed belo)144 278.4 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H +2.875(ft).4 G(he)-2.875 E F12.875 E F0 .375 +(option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 +F F12.875 E F0 .374(option to the)2.875 F F1(set)2.874 E F0 -.2 +(bu)2.874 G .374(iltin com-).2 F 2.565(mand. W)144 290.4 R .065 +(ith no options, or with the)-.4 F F12.566 E F0 .066 +(option, a list of all settable options is displayed, with an in-)2.566 +F .074(dication of whether or not each is set; if)144 302.4 R F2 +(optnames)2.574 E F0 .074 +(are supplied, the output is restricted to those op-)2.574 F 3.105 +(tions. The)144 314.4 R F13.105 E F0 .605(option causes output to\ + be displayed in a form that may be reused as input.)3.105 F(Other)5.605 +E(options ha)144 326.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 338.4 Q F0(Enable \(set\) each)180 +338.4 Q F2(optname)2.5 E F0(.)A F1144 350.4 Q F0 +(Disable \(unset\) each)180 350.4 Q F2(optname)2.5 E F0(.)A F1144 +362.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ +tus indicates whether the)180 362.4 R F2(optname)2.503 E F0(is)2.503 E +.255(set or unset.)180 374.4 R .255(If multiple)5.255 F F2(optname)2.755 +E F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G +(ith)-2.756 E F12.756 E F0 2.756(,t)C .256 +(he return status is zero if)-2.756 F(all)180 386.4 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E F1144 398.4 Q F0 +(Restricts the v)180 398.4 Q(alues of)-.25 E F2(optname)2.5 E F0 +(to be those de\214ned for the)2.5 E F12.5 E F0(option to the)2.5 +E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .625(If either)144 415.2 R F1 +3.125 E F0(or)3.124 E F13.124 E F0 .624(is used with no) +3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124 +E F0(sho)3.124 E .624(ws only those options which are)-.25 F .983 +(set or unset, respecti)144 427.2 R -.15(ve)-.25 G(ly).15 E 5.983(.U) +-.65 G .983(nless otherwise noted, the)-5.983 F F1(shopt)3.484 E F0 .984 +(options are disabled \(unset\) by de-)3.484 F -.1(fa)144 439.2 S(ult.) +.1 E 1.544(The return status when listing options is zero if all)144 456 +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 468 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell) +-.25 F(option.)144 480 Q(The list of)144 496.8 Q F1(shopt)2.5 E F0 +(options is:)2.5 E F1(assoc_expand_once)144 514.8 Q F0 1.945 +(If set, the shell suppresses multiple e)184 526.8 R -.25(va)-.25 G +1.944(luation of associati).25 F 2.244 -.15(ve a)-.25 H 1.944 +(rray subscripts during).15 F .885(arithmetic e)184 538.8 R .885 +(xpression e)-.15 F -.25(va)-.25 G .885(luation, while e).25 F -.15(xe) +-.15 G .885(cuting b).15 F .885(uiltins that can perform v)-.2 F .885 +(ariable as-)-.25 F(signments, and while e)184 550.8 Q -.15(xe)-.15 G +(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F1 +(autocd)144 562.8 Q F0 .2 +(If set, a command name that is the name of a directory is e)184 562.8 R +-.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E +(ment to the)184 574.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F +(option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E +F1(cdable_v)144 586.8 Q(ars)-.1 E F0 .155(If set, an ar)184 598.8 R .155 +(gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156 +(iltin command that is not a directory is assumed to be the).2 F +(name of a v)184 610.8 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 622.8 Q F0 +1.055 +(If set, minor errors in the spelling of a directory component in a)184 +622.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987 +(corrected. The)184 634.8 R 1.487(errors check)3.987 F 1.487 +(ed for are transposed characters, a missing character)-.1 F 3.988(,a) +-.4 G(nd)-3.988 E .77(one character too man)184 646.8 R 4.57 -.65(y. I) +-.15 H 3.27(fac).65 G .77 +(orrection is found, the corrected \214lename is printed, and)-3.27 F +(the command proceeds.)184 658.8 Q +(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(checkhash)144 670.8 Q F0 .736(If set,)184 682.8 R F1(bash)3.236 +E F0 .736(checks that a command found in the hash table e)3.236 F .737 +(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 +694.8 Q(If a hashed command no longer e)5 E +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 706.8 +Q F0 .449(If set,)184 718.8 R F1(bash)2.949 E F0 .449 +(lists the status of an)2.949 F 2.949(ys)-.15 G .448 +(topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15 +F -.15(ve)-.25 G 3.438(shell. If)184 730.8 R(an)3.438 E 3.438(yj)-.15 G +.938(obs are running, this causes the e)-3.438 F .938 +(xit to be deferred until a second e)-.15 F .939(xit is)-.15 F +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(73)190.395 E 0 Cg EP +%%Page: 74 74 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .817 +(attempted without an interv)184 84 R .817(ening command \(see)-.15 F/F1 +9/Times-Bold@0 SF .816(JOB CONTR)3.316 F(OL)-.27 E F0(abo)3.066 E -.15 +(ve)-.15 G 3.316(\). The).15 F .816(shell al-)3.316 F -.1(wa)184 96 S +(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G(obs are stopped.) +-2.5 E/F2 10/Times-Bold@0 SF(checkwinsize)144 108 Q F0 1.09(If set,)184 +120 R F2(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09 +(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09 +(uiltin\) command and, if)-.2 F(necessary)184 132 Q 3.351(,u)-.65 G .851 +(pdates the v)-3.351 F .85(alues of)-.25 F F1(LINES)3.35 E F0(and)3.1 E +F1(COLUMNS)3.35 E/F3 9/Times-Roman@0 SF(.)A F0 .85 +(This option is enabled by de-)5.35 F -.1(fa)184 144 S(ult.).1 E F2 +(cmdhist)144 156 Q F0 .172(If set,)184 156 R F2(bash)2.672 E F0 .172 +(attempts to sa)2.672 F .472 -.15(ve a)-.2 H .173 +(ll lines of a multiple-line command in the same history en-).15 F(try) +184 168 Q 5.597(.T)-.65 G .597(his allo)-5.597 F .597 +(ws easy re-editing of multi-line commands.)-.25 F .597 +(This option is enabled by de-)5.597 F -.1(fa)184 180 S 1.287(ult, b).1 +F 1.288(ut only has an ef)-.2 F 1.288 +(fect if command history is enabled, as described abo)-.25 F 1.588 -.15 +(ve u)-.15 H(nder).15 E F1(HIST)184 192 Q(OR)-.162 E(Y)-.315 E F3(.)A F2 +(compat31)144 204 Q(compat32)144 216 Q(compat40)144 228 Q(compat41)144 +240 Q(compat42)144 252 Q(compat43)144 264 Q(compat44)144 276 Q F0 .889 +(These control aspects of the shell')184 288 R 3.389(sc)-.55 G .889 +(ompatibility mode \(see)-3.389 F F1 .889(SHELL COMP)3.389 F -.855(AT) +-.666 G(IBILITY).855 E(MODE)184 300 Q F0(belo)2.25 E(w\).)-.25 E F2 +(complete_fullquote)144 316.8 Q F0 .653(If set,)184 328.8 R F2(bash) +3.153 E F0 .653(quotes all shell metacharacters in \214lenames and dire\ +ctory names when per)3.153 F(-)-.2 E 1.525(forming completion.)184 340.8 +R 1.524(If not set,)6.525 F F2(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 +G 4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F +2.667(from the set of characters that will be quoted in completed \214l\ +enames when these)184 352.8 R .029(metacharacters appear in shell v)184 +364.8 R .028(ariable references in w)-.25 F .028(ords to be completed.) +-.1 F .028(This means)5.028 F 1.072(that dollar signs in v)184 376.8 R +1.073(ariable names that e)-.25 F 1.073 +(xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 +(ev e)184 388.8 T 1.923 -.4(r, a).25 H 1.423 -.15(ny d).4 H 1.123 +(ollar signs appearing in \214lenames will not be quoted, either).15 F +6.123(.T)-.55 G 1.122(his is acti)-6.123 F -.15(ve)-.25 G .59 +(only when bash is using backslashes to quote completed \214lenames.)184 +400.8 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 412.8 Q +(ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E +(ersions through 4.2.)-.15 E F2(dir)144 429.6 Q(expand)-.18 E F0 .487 +(If set,)184 441.6 R F2(bash)2.987 E F0 .486 +(replaces directory names with the results of w)2.986 F .486(ord e)-.1 F +.486(xpansion when perform-)-.15 F .179(ing \214lename completion.)184 +453.6 R .179(This changes the contents of the readline editing b)5.179 F +(uf)-.2 E(fer)-.25 E 5.18(.I)-.55 G 2.68(fn)-5.18 G(ot)-2.68 E(set,)184 +465.6 Q F2(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F2(dirspell)144 482.4 Q F0 .859(If set,)184 +482.4 R F2(bash)3.359 E F0 .858 +(attempts spelling correction on directory names during w)3.359 F .858 +(ord completion if)-.1 F +(the directory name initially supplied does not e)184 494.4 Q(xist.)-.15 +E F2(dotglob)144 511.2 Q F0 .165(If set,)184 511.2 R F2(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(The \214lenames)184 523.2 Q F2 -.63(``)2.5 G -.55(.') +.63 G(')-.08 E F0(and)5 E F2 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0 +(must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5 +(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F2(dotglob)2.5 E F0 +(is set.)2.5 E F2(execfail)144 540 Q F0 .517(If set, a non-interacti)184 +540 R .817 -.15(ve s)-.25 H .517(hell will not e).15 F .516 +(xit if it cannot e)-.15 F -.15(xe)-.15 G .516 +(cute the \214le speci\214ed as an ar).15 F(-)-.2 E(gument to the)184 +552 Q F2(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 F2(exec)2.5 E F0 +-.1(fa)2.5 G(ils.).1 E F2(expand_aliases)144 568.8 Q F0 .716 +(If set, aliases are e)184 580.8 R .717(xpanded as described abo)-.15 F +1.017 -.15(ve u)-.15 H(nder).15 E F1(ALIASES)3.217 E F3(.)A F0 .717 +(This option is enabled)5.217 F(by def)184 592.8 Q(ault for interacti) +-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F2(extdeb)144 609.6 Q(ug)-.2 E F0 +.17(If set at shell in)184 621.6 R -.2(vo)-.4 G .17 +(cation, or in a shell startup \214le, arrange to e).2 F -.15(xe)-.15 G +.17(cute the deb).15 F .17(ugger pro\214le)-.2 F 1.081 +(before the shell starts, identical to the)184 633.6 R F2 +3.582 E(ugger)-.2 E F0 3.582(option. If)3.582 F 1.082(set after in)3.582 +F -.2(vo)-.4 G 1.082(cation, be-).2 F(ha)184 645.6 Q +(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F2(1.)184 +662.4 Q F0(The)220 662.4 Q F24.251 E F0 1.751(option to the)4.251 +F F2(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 674.4 +Q(gument.)-.18 E F2(2.)184 691.2 Q F0 1.667(If the command run by the) +220 691.2 R F2(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 703.2 Q -.15(xe)-.15 G(cuted.).15 E +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(74)190.395 E 0 Cg EP +%%Page: 75 75 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(3.)184 84 Q F0 .841(If the command run by the)220 84 R 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 96 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 108 Q(ce)-.18 E F0 -.2(bu)2.5 G +(iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E +(n)-.15 E F0(.)A F1(4.)184 124.8 Q/F2 9/Times-Bold@0 SF -.27(BA)220 +124.8 S(SH_ARGC).27 E F0(and)3.154 E F2 -.27(BA)3.404 G(SH_ARGV).27 E F0 +.904(are updated as described in their descriptions)3.154 F(abo)220 +136.8 Q -.15(ve)-.15 G(.).15 E F1(5.)184 153.6 Q F0 1.637(Function trac\ +ing is enabled: command substitution, shell functions, and sub-)220 +153.6 R(shells in)220 165.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith) +-2.5 E F1(\()2.5 E/F3 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 +(inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0 +(traps.)2.5 E F1(6.)184 182.4 Q F0 1.082(Error tracing is enabled: comm\ +and substitution, shell functions, and subshells)220 182.4 R(in)220 +194.4 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3 +(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.) +2.5 E F1(extglob)144 211.2 Q F0 .4(If set, the e)184 211.2 R .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 223.2 Q +F0(are enabled.)2.5 E F1(extquote)144 240 Q F0 .86(If set,)184 252 R F1 +($)3.36 E F0<08>A F3(string)A F0 3.36<0861>C(nd)-3.36 E F1($)3.36 E F0 +(")A F3(string)A F0 3.36("q)C .86(uoting is performed within)-3.36 F F1 +(${)3.36 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)3.36 G .86 +(pansions en-).15 F(closed in double quotes.)184 264 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 280.8 Q +F0 .242(If set, patterns which f)184 280.8 R .243 +(ail to match \214lenames during pathname e)-.1 F .243 +(xpansion result in an e)-.15 F(x-)-.15 E(pansion error)184 292.8 Q(.) +-.55 E F1 -.25(fo)144 309.6 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.937(If set, the suf)184 321.6 R<8c78>-.25 E .936(es speci\214ed by the) +-.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) +-.25 F .936(ords to be ignored)-.1 F .32(when performing w)184 333.6 R +.32(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G +.32(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.948 +(pletions. See)184 345.6 R F2 .448(SHELL V)2.948 F(ARIABLES)-1.215 E F0 +(abo)2.698 E .748 -.15(ve f)-.15 H .448(or a description of).15 F F2 +(FIGNORE)2.947 E/F4 9/Times-Roman@0 SF(.)A F0 .447(This option is)4.947 +F(enabled by def)184 357.6 Q(ault.)-.1 E F1(globasciiranges)144 374.4 Q +F0 2.518(If set, range e)184 386.4 R 2.519 +(xpressions used in pattern matching brack)-.15 F 2.519(et e)-.1 F 2.519 +(xpressions \(see)-.15 F F2 -.09(Pa)5.019 G(tter).09 E(n)-.135 E +(Matching)184 398.4 Q F0(abo)2.965 E -.15(ve)-.15 G 3.215(\)b).15 G(eha) +-3.215 E 1.015 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 +(nt)-3.214 G .714(he traditional C locale when performing comparisons.) +-3.214 F 1.02(That is, the current locale')184 410.4 R 3.52(sc)-.55 G +1.02(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F +F1(b)3.52 E F0 1.02(will not)3.52 F .957(collate between)184 422.4 R F1 +(A)3.457 E F0(and)3.457 E F1(B)3.457 E F0 3.457(,a)C .957(nd upper) +-3.457 F .957(-case and lo)-.2 F(wer)-.25 E .956 +(-case ASCII characters will collate)-.2 F(together)184 434.4 Q(.)-.55 E +F1(globstar)144 451.2 Q F0 .518(If set, the pattern)184 451.2 R F1(**) +3.018 E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F +.519(xt will match all \214les and zero)-.15 F .432 +(or more directories and subdirectories.)184 463.2 R .431 +(If the pattern is follo)5.432 F .431(wed by a)-.25 F F1(/)2.931 E F0 +2.931(,o)C .431(nly directories)-2.931 F(and subdirectories match.)184 +475.2 Q F1(gnu_errfmt)144 492 Q F0(If set, shell error messages are wri\ +tten in the standard GNU error message format.)184 504 Q F1(histappend) +144 520.8 Q F0 .676 +(If set, the history list is appended to the \214le named by the v)184 +532.8 R .676(alue of the)-.25 F F2(HISTFILE)3.177 E F0 -.25(va)2.927 G +(ri-).25 E(able when the shell e)184 544.8 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 561.6 Q(eedit) +-.18 E F0 .576(If set, and)184 573.6 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 585.6 Q F1(histv)144 602.4 Q(erify)-.1 E F0 .402 +(If set, and)184 614.4 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 626.4 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 638.4 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 655.2 Q F0 1.181(If set, and)184 667.2 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 679.2 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 +F2(READLINE)3.88 E F0(abo)184 691.2 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(75)190.395 E 0 Cg EP +%%Page: 76 76 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(huponexit)144 84 Q F0(If set,)184 96 Q F1(bash)2.5 E F0(will send)2.5 +E/F2 9/Times-Bold@0 SF(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 +(inherit_err)144 112.8 Q(exit)-.18 E F0 .219 +(If set, command substitution inherits the v)184 124.8 R .219 +(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .22 +(option, instead of unsetting)2.719 F(it in the subshell en)184 136.8 Q +2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F3 10 +/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti) +144 153.6 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 165.6 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 177.6 R 1.267 +-.15(ve s)-.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 +E -.15(ve)-.15 G 3.467(\). This).15 F .968(option is)3.468 F +(enabled by def)184 189.6 Q(ault.)-.1 E F1(lastpipe)144 206.4 Q F0 .066 +(If set, and job control is not acti)184 206.4 R -.15(ve)-.25 G 2.566 +(,t).15 G .066(he shell runs the last command of a pipeline not e)-2.566 +F -.15(xe)-.15 G(-).15 E +(cuted in the background in the current shell en)184 218.4 Q(vironment.) +-.4 E F1(lithist)144 235.2 Q F0 .654(If set, and the)184 235.2 R 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 247.2 Q +(wlines rather than using semicolon separators where possible.)-.25 E F1 +(localv)144 264 Q(ar_inherit)-.1 E F0 .422(If set, local v)184 276 R +.422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422 +(utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184 +288 S .173(ists at a pre).15 F .173(vious scope before an)-.25 F 2.673 +(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .174 +(The nameref attrib)5.174 F .174(ute is not)-.2 F(inherited.)184 300 Q +F1(localv)144 316.8 Q(ar_unset)-.1 E F0 .329(If set, calling)184 328.8 R +F1(unset)2.829 E F0 .329(on local v)2.829 F .329(ariables in pre)-.25 F +.328(vious function scopes marks them so subse-)-.25 F .543(quent looku\ +ps \214nd them unset until that function returns. This is identical to \ +the beha)184 340.8 R(v-)-.2 E(ior of unsetting local v)184 352.8 Q +(ariables at the current function scope.)-.25 E F1(login_shell)144 369.6 +Q F0 .486 +(The shell sets this option if it is started as a login shell \(see)184 +381.6 R F2(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 393.6 S(lue may not be changed.) +.25 E F1(mailwar)144 410.4 Q(n)-.15 E F0 .814(If set, and a \214le that) +184 422.4 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 434.4 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +(`The mail in)-.74 E F3(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 +451.2 Q F0 .325(If set, and)184 463.2 R F1 -.18(re)2.825 G(adline).18 E +F0 .325(is being used,)2.825 F F1(bash)2.824 E F0 .324 +(will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH)-.189 E +F0 .324(for possible)2.574 F +(completions when completion is attempted on an empty line.)184 475.2 Q +F1(nocaseglob)144 492 Q F0 .436(If set,)184 504 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 516 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 532.8 Q F0 1.194(If set,)184 +544.8 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 .551(while e)184 556.8 R +-.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0(or)3.051 E F1([[)3.051 E +F0 .551(conditional commands, when performing pattern substitution)3.051 +F -.1(wo)184 568.8 S .623(rd e).1 F .623(xpansions, or when \214ltering\ + possible completions as part of programmable com-)-.15 F(pletion.)184 +580.8 Q F1(nullglob)144 597.6 Q F0 .854(If set,)184 609.6 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 621.6 S +(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 +638.4 Q(ogcomp)-.18 E F0 .677(If set, the programmable completion f)184 +650.4 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 662.4 Q(This option is enabled by def)5 E(ault.)-.1 E +F1(pr)144 679.2 Q(ogcomp_alias)-.18 E F0 2.124 +(If set, and programmable completion is enabled,)184 691.2 R F1(bash) +4.624 E F0 2.124(treats a command name that)4.624 F(doesn')184 703.2 Q +3.289(th)-.18 G -2.25 -.2(av e)-3.289 H(an)3.489 E 3.289(yc)-.15 G .789 +(ompletions as a possible alias and attempts alias e)-3.289 F .788 +(xpansion. If it has)-.15 F 1.473(an alias,)184 715.2 R F1(bash)3.973 E +F0 1.473(attempts programmable completion using the command w)3.973 F +1.473(ord resulting)-.1 F(from the e)184 727.2 Q(xpanded alias.)-.15 E +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(76)190.395 E 0 Cg EP +%%Page: 77 77 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(pr)144 84 Q(omptv)-.18 E(ars)-.1 E F0 1.448 +(If set, prompt strings under)184 96 R 1.448(go parameter e)-.18 F 1.447 +(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 108 S .17 +(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.671 E(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G +(.).15 E(This option is enabled by def)184 120 Q(ault.)-.1 E F1 -.18(re) +144 136.8 S(stricted_shell).18 E F0 1.069 +(The shell sets this option if it is started in restricted mode \(see) +184 148.8 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 160.8 Q 2.86 +(w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 +(This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G +(-).15 E(cuted, allo)184 172.8 Q(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 189.6 Q(erbose)-.1 E F0 .502(If set, the)184 201.6 R F1 +(shift)3.002 E F0 -.2(bu)3.002 G .501 +(iltin prints an error message when the shift count e).2 F .501 +(xceeds the number)-.15 F(of positional parameters.)184 213.6 Q F1(sour) +144 230.4 Q(cepath)-.18 E F0 .77(If set, the)184 242.4 R F1(sour)3.27 E +(ce)-.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47 +F .771(alue of)-.25 F F2 -.666(PA)3.271 G(TH)-.189 E F0 .771 +(to \214nd the directory containing the)3.021 F +(\214le supplied as an ar)184 254.4 Q 2.5(gument. This)-.18 F +(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 271.2 Q F0 +(If set, the)184 283.2 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 300 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 312 R -.15 +(xe)-.15 G 1.002(cution of this shell until it recei).15 F -.15(ve)-.25 +G 3.501(sa).15 G F2(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001 +(login shell cannot be)3.501 F .022(suspended; the)144 324 R F1 +2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022 +(rride this and force the suspension.).15 F .023(The return status is) +5.023 F 2.5(0u)144 336 S(nless the shell is a login shell and)-2.5 E F1 +2.5 E F0(is not supplied, or if job control is not enabled.)2.5 E +F1(test)108 352.8 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) +108 364.8 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 +(Return a status of 0 \(true\) or 1 \(f)144 364.8 R .877 +(alse\) depending on the e)-.1 F -.25(va)-.25 G .877 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 376.8 +S(pr).2 E F0 5.53(.E).73 G .53 +(ach operator and operand must be a separate ar)-5.53 F 3.03 +(gument. Expressions)-.18 F .53(are composed of the)3.03 F 1.361 +(primaries described abo)144 388.8 R 1.661 -.15(ve u)-.15 H(nder).15 E +F2(CONDITION)3.861 E 1.36(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.) +A F1(test)5.86 E F0 1.36(does not accept an)3.86 F 3.86(yo)-.15 G(p-) +-3.86 E(tions, nor does it accept and ignore an ar)144 400.8 Q +(gument of)-.18 E F12.5 E F0(as signifying the end of options.)2.5 +E .785(Expressions may be combined using the follo)144 418.8 R .786 +(wing operators, listed in decreasing order of prece-)-.25 F 3.412 +(dence. The)144 430.8 R -.25(eva)3.412 G .912 +(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F +4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F +(used when there are \214v)144 442.8 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G +(ore ar)-2.5 E(guments.)-.18 E F1(!)144 454.8 Q F3 -.2(ex)2.5 G(pr).2 E +F0 -.35(Tr)180 454.8 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 +E(alse.)-.1 E F1(\()144 466.8 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 +.26(Returns the v)180 466.8 R .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 478.8 Q F3 -.2 +(ex)144 490.8 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 +-.35(Tr)180 502.8 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 514.8 S +(pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 +526.8 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 543.6 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 561.6 S -.18(rg)-2.5 G(uments).18 E(The e) +180 573.6 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 585.6 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 597.6 Q +(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 +E 2.5(2a)144 609.6 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 621.6 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 633.6 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 645.6 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 657.6 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 669.6 S -.18(rg)-2.5 G +(uments).18 E .236(The follo)180 681.6 R .236 +(wing conditions are applied in the order listed.)-.25 F .236 +(If the second ar)5.236 F .236(gument is one of)-.18 F .855 +(the binary conditional operators listed abo)180 693.6 R 1.155 -.15 +(ve u)-.15 H(nder).15 E F2(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F +F4(,)A F0(the)3.104 E .578(result of the e)180 705.6 R .578(xpression i\ +s the result of the binary test using the \214rst and third ar)-.15 F +(guments)-.18 E 1.333(as operands.)180 717.6 R(The)6.333 E F13.833 +E F0(and)3.833 E F13.832 E F0 1.332 +(operators are considered binary operators when there are)3.832 F .558 +(three ar)180 729.6 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 +F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F +.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F +(o-ar)-.1 E(gument)-.18 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 +E(77)190.395 E 0 Cg EP +%%Page: 78 78 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .521 +(test using the second and third ar)180 84 R 3.021(guments. If)-.18 F +.521(the \214rst ar)3.021 F .52(gument is e)-.18 F(xactly)-.15 E/F1 10 +/Times-Bold@0 SF(\()3.02 E F0 .52(and the third)3.02 F(ar)180 96 Q .485 +(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 2.985(,t)C .485 +(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18 +F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 108 Q +(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 120 S -.18(rg)-2.5 G +(uments).18 E .385(If the \214rst ar)180 132 R .385(gument is)-.18 F F1 +(!)2.885 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 +G .384(tion of the three-ar).05 F .384(gument e)-.18 F .384 +(xpression com-)-.15 F .284(posed of the remaining ar)180 144 R 2.784 +(guments. Otherwise,)-.18 F .284(the e)2.784 F .284 +(xpression is parsed and e)-.15 F -.25(va)-.25 G .285(luated ac-).25 F +(cording to precedence using the rules listed abo)180 156 Q -.15(ve)-.15 +G(.).15 E 2.5(5o)144 168 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 E +1.635(The e)180 180 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 192 Q -.15(ve)-.15 G(.).15 E(When used with)144 210 Q F1(test) +2.5 E F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 +E F1(>)2.5 E F0(operators sort le)2.5 E +(xicographically using ASCII ordering.)-.15 E F1(times)108 226.8 Q F0 +1.229(Print the accumulated user and system times for the shell and for\ + processes run from the shell.)144 226.8 R(The return status is 0.)144 +238.8 Q F1(trap)108 255.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 .683(The command)144 267.6 R F2(ar)3.513 E(g)-.37 E F0 .683 +(is to be read and e)3.403 F -.15(xe)-.15 G .682 +(cuted when the shell recei).15 F -.15(ve)-.25 G 3.182(ss).15 G +(ignal\(s\))-3.182 E F2(sigspec)3.522 E F0 5.682(.I).31 G(f)-5.682 E F2 +(ar)3.512 E(g)-.37 E F0(is)3.402 E .608(absent \(and there is a single) +144 279.6 R F2(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.108 E +F0 3.108(,e)C .608 +(ach speci\214ed signal is reset to its original disposition)-3.108 F +.659(\(the v)144 291.6 R .659(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 +(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) +144.34 303.6 Q F0 .58(is ignored by the shell and by the commands it in) +3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E +F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 +(been supplied, then the trap commands associated with each)144 315.6 R +F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 +F(gu-)-.18 E .86(ments are supplied or if only)144 327.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 339.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.31 +(bers. Each)144 351.6 R F2(sigspec)4.65 E F0 1.811 +(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811 +(>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E +(names are case insensiti)144 363.6 Q .3 -.15(ve a)-.25 H(nd the).15 E +/F3 9/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E .667 +(If a)144 381.6 R F2(sigspec)3.507 E F0(is)3.477 E F3(EXIT)3.167 E F0 +.667(\(0\) the command)2.917 F F2(ar)3.496 E(g)-.37 E F0 .666(is e)3.386 +F -.15(xe)-.15 G .666(cuted on e).15 F .666(xit from the shell.)-.15 F +.666(If a)5.666 F F2(sigspec)3.506 E F0(is)3.476 E F3(DE-)3.166 E -.09 +(BU)144 393.6 S(G).09 E/F4 9/Times-Roman@0 SF(,)A F0 .483(the command) +2.733 F F2(ar)3.313 E(g)-.37 E F0 .483(is e)3.203 F -.15(xe)-.15 G .484 +(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F2 .484(simple command) +2.984 F F0(,)A F2(for)2.984 E F0(command,)2.984 E F2(case)2.984 E F0 +(command,)2.984 E F2(select)144 405.6 Q F0 .563(command, e)3.063 F -.15 +(ve)-.25 G .563(ry arithmetic).15 F F2(for)3.063 E F0 .563 +(command, and before the \214rst command e)3.063 F -.15(xe)-.15 G .562 +(cutes in a shell).15 F .622(function \(see)144 417.6 R F3 .622 +(SHELL GRAMMAR)3.122 F F0(abo)2.872 E -.15(ve)-.15 G 3.122(\). Refer).15 +F .622(to the description of the)3.122 F F1(extdeb)3.122 E(ug)-.2 E F0 +.622(option to the)3.122 F F1(shopt)144 429.6 Q F0 -.2(bu)2.996 G .496 +(iltin for details of its ef).2 F .496(fect on the)-.25 F F1(DEB)2.996 E +(UG)-.1 E F0 2.996(trap. If)2.996 F(a)2.996 E F2(sigspec)3.336 E F0(is) +3.306 E F3(RETURN)2.996 E F4(,)A F0 .496(the command)2.746 F F2(ar) +144.33 441.6 Q(g)-.37 E F0 .18(is e)2.9 F -.15(xe)-.15 G .18 +(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G .18 +(cuted with the).15 F F1(.)2.68 E F0(or)2.68 E F1(sour)2.68 E(ce)-.18 E +F0 -.2(bu)2.68 G .18(iltins \214nishes).2 F -.15(exe)144 453.6 S +(cuting.).15 E .961(If a)144 471.6 R F2(sigspec)3.801 E F0(is)3.771 E F3 +(ERR)3.461 E F4(,)A F0 .961(the command)3.211 F F2(ar)3.791 E(g)-.37 E +F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 +G 3.461(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(sin\ +gle simple command\), a list, or a compound command returns a non\255ze\ +ro e)144 483.6 R .185(xit status, subject to)-.15 F .452(the follo)144 +495.6 R .452(wing conditions.)-.25 F(The)5.452 E F3(ERR)2.952 E F0 .451 +(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451 +(ailed command is part of the com-)-.1 F .387 +(mand list immediately follo)144 507.6 R .387(wing a)-.25 F F1(while) +2.887 E F0(or)2.887 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 +(ord, part of the test in an)-.1 F F2(if)2.898 E F0 .388 +(statement, part)4.848 F .778(of a command e)144 519.6 R -.15(xe)-.15 G +.778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778 +(list e)3.278 F .778(xcept the command follo)-.15 F .778 +(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.277 E F0 +3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 531.6 R +1.28(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v) +-3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F +F1(!)3.78 E F0(.)A(These are the same conditions obe)144 543.6 Q +(yed by the)-.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1A F0 2.5 +(\)o)C(ption.)-2.5 E .133 +(Signals ignored upon entry to the shell cannot be trapped or reset.)144 +561.6 R -.35(Tr)5.132 G .132(apped signals that are not be-).35 F .117 +(ing ignored are reset to their original v)144 573.6 R .117 +(alues in a subshell or subshell en)-.25 F .117 +(vironment when one is cre-)-.4 F 2.5(ated. The)144 585.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 602.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 614.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 626.4 Q F0 .715(option is used,)3.215 F F1(type)3.215 E F0 +.715(prints a string which is one of)3.215 F F2(alias)3.545 E F0(,).27 E +F2 -.1(ke)3.215 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)5.185 E F0 +(,).24 E F2 -.2(bu)3.215 G(iltin).2 E F0 3.215(,o).24 G(r)-3.215 E F2 +(\214le)5.125 E F0(if)3.395 E F2(name)144.36 638.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 650.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 662.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 .528(mand name, or nothing if) +144 674.4 R/F5 10/Courier@0 SF .528(type -t name)3.028 F F0 -.1(wo)3.028 +G .528(uld not return).1 F F2(\214le)4.938 E F0 5.528(.T).18 G(he)-5.528 +E F13.028 E F0 .529(option forces a)3.028 F F3 -.666(PA)3.029 G +(TH)-.189 E F0 .007(search for each)144 686.4 R F2(name)2.507 E F0 2.507 +(,e)C -.15(ve)-2.757 G 2.507(ni).15 G(f)-2.507 E F5 .007(type -t name) +2.507 F F0 -.1(wo)2.507 G .007(uld not return).1 F F2(\214le)4.417 E F0 +5.006(.I).18 G 2.506(fac)-5.006 G .006(ommand is hashed,)-2.506 F F1 +2.506 E F0(and)144 698.4 Q F13.23 E F0 .73 +(print the hashed v)3.23 F .731 +(alue, which is not necessarily the \214le that appears \214rst in)-.25 +F F3 -.666(PA)3.231 G(TH)-.189 E F4(.)A F0 .731(If the)5.231 F F1 +144 710.4 Q F0 .824(option is used,)3.324 F F1(type)3.324 E F0 .824 +(prints all of the places that contain an e)3.324 F -.15(xe)-.15 G .823 +(cutable named).15 F F2(name)3.683 E F0 5.823(.T).18 G .823(his in-) +-5.823 F 1.176(cludes aliases and functions, if and only if the)144 +722.4 R F13.676 E F0 1.176(option is not also used.)3.676 F 1.177 +(The table of hashed)6.176 F(GNU Bash 5.1)72 768 Q(2020 October 29) +141.235 E(78)190.395 E 0 Cg EP +%%Page: 79 79 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.223 +(commands is not consulted when using)144 84 R/F1 10/Times-Bold@0 SF +3.723 E F0 6.223(.T)C(he)-6.223 E F13.723 E F0 1.223 +(option suppresses shell function lookup, as)3.723 F .325(with the)144 +96 R F1(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F1(type)5.325 E F0 +.325(returns true if all of the ar)2.825 F .326(guments are found, f) +-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326(re not)-2.826 F +(found.)144 108 Q F1(ulimit)108 124.8 Q F0([)2.5 E F1(\255HS)A F0(])A F1 +2.5 E(ulimit)108 136.8 Q F0([)2.5 E F1(\255HS)A F0 2.5(][)C F1 +(\255bcde\214klmnpqrstuvxPR)-2.5 E(T)-.4 E F0([)2.5 E/F2 10 +/Times-Italic@0 SF(limit)A F0(]])A(Pro)144 148.8 Q .244(vides control o) +-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244(he resources a)-2.744 F -.25 +(va)-.2 G .244 +(ilable to the shell and to processes started by it, on systems).25 F +.943(that allo)144 160.8 R 3.443(ws)-.25 G .943(uch control.)-3.443 F +(The)5.943 E F13.443 E F0(and)3.443 E F13.444 E F0 .944 +(options specify that the hard or soft limit is set for the)3.444 F(gi) +144 172.8 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +(hard limit cannot be increased by a non-root user once it is set; a so\ +ft limit may)2.709 F .425(be increased up to the v)144 184.8 R .425 +(alue of the hard limit.)-.25 F .426(If neither)5.425 F F12.926 E +F0(nor)2.926 E F12.926 E F0 .426 +(is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 +196.8 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139 +(can be a number in the unit speci\214ed for the resource or one)3.319 F +.741(of the special v)144 208.8 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w) +C .741(hich stand for the current hard limit, the current)-3.241 F .024 +(soft limit, and no limit, respecti)144 220.8 R -.15(ve)-.25 G(ly).15 E +5.023(.I)-.65 G(f)-5.023 E F2(limit)2.613 E F0 .023 +(is omitted, the current v)3.203 F .023 +(alue of the soft limit of the re-)-.25 F .984 +(source is printed, unless the)144 232.8 R F13.484 E F0 .984 +(option is gi)3.484 F -.15(ve)-.25 G 3.484(n. When).15 F .985 +(more than one resource is speci\214ed, the)3.484 F .7 +(limit name and unit, if appropriate, are printed before the v)144 244.8 +R 3.2(alue. Other)-.25 F .7(options are interpreted as)3.2 F(follo)144 +256.8 Q(ws:)-.25 E F1144 268.8 Q F0 +(All current limits are reported; no limits are set)180 268.8 Q F1 +144 280.8 Q F0(The maximum sock)180 280.8 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F1144 292.8 Q F0 +(The maximum size of core \214les created)180 292.8 Q F1144 304.8 +Q F0(The maximum size of a process')180 304.8 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F1144 316.8 Q F0 +(The maximum scheduling priority \("nice"\))180 316.8 Q F1144 +328.8 Q F0 +(The maximum size of \214les written by the shell and its children)180 +328.8 Q F1144 340.8 Q F0(The maximum number of pending signals)180 +340.8 Q F1144 352.8 Q F0 +(The maximum number of kqueues that may be allocated)180 352.8 Q F1 +144 364.8 Q F0(The maximum size that may be lock)180 364.8 Q +(ed into memory)-.1 E F1144 376.8 Q F0 +(The maximum resident set size \(man)180 376.8 Q 2.5(ys)-.15 G +(ystems do not honor this limit\))-2.5 E F1144 388.8 Q F0 .791(Th\ +e maximum number of open \214le descriptors \(most systems do not allo) +180 388.8 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F +(be set\))180 400.8 Q F1144 412.8 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 412.8 Q F1 +144 424.8 Q F0 +(The maximum number of bytes in POSIX message queues)180 424.8 Q F1 +144 436.8 Q F0(The maximum real-time scheduling priority)180 436.8 +Q F1144 448.8 Q F0(The maximum stack size)180 448.8 Q F1144 +460.8 Q F0(The maximum amount of cpu time in seconds)180 460.8 Q F1 +144 472.8 Q F0(The maximum number of processes a)180 472.8 Q -.25 +(va)-.2 G(ilable to a single user).25 E F1144 484.8 Q F0 .47 +(The maximum amount of virtual memory a)180 484.8 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 +496.8 Q F1144 508.8 Q F0(The maximum number of \214le locks)180 +508.8 Q F1144 520.8 Q F0(The maximum number of pseudoterminals)180 +520.8 Q F1144 532.8 Q F0(The maximum time a real-time process can\ + run before blocking, in microseconds)180 532.8 Q F1144 544.8 Q F0 +(The maximum number of threads)180 544.8 Q(If)144 561.6 Q F2(limit)3.058 +E F0 .468(is gi)3.648 F -.15(ve)-.25 G .468(n, and the).15 F F1 +2.968 E F0 .468(option is not used,)2.968 F F2(limit)2.968 E F0 .468 +(is the ne)2.968 F 2.968(wv)-.25 G .468 +(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .045 +(no option is gi)144 573.6 R -.15(ve)-.25 G .045(n, then).15 F F1 +2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F1 +2.544 E F0 2.544(,w)C .044(hich is)-2.544 F .67(in seconds;)144 +585.6 R F13.17 E F0 3.17(,w)C .67(hich is in microseconds;)-3.17 F +F13.17 E F0 3.17(,w)C .67(hich is in units of 512-byte blocks;) +-3.17 F F13.17 E F0(,)A F13.17 E F0(,)A F13.17 E F0(,) +A F1144 597.6 Q F0(,)A F13.737 E F0 3.737(,a)C(nd)-3.737 E +F13.736 E F0 3.736(,w)C 1.236(hich are unscaled v)-3.736 F 1.236 +(alues; and, when in posix mode,)-.25 F F13.736 E F0(and)3.736 E +F13.736 E F0 3.736(,w)C 1.236(hich are in)-3.736 F .238 +(512-byte increments.)144 609.6 R .238 +(The return status is 0 unless an in)5.238 F -.25(va)-.4 G .238 +(lid option or ar).25 F .238(gument is supplied, or an)-.18 F +(error occurs while setting a ne)144 621.6 Q 2.5(wl)-.25 G(imit.)-2.5 E +F1(umask)108 638.4 Q F0([)2.5 E F1A F0 2.5(][)C F1-2.5 E F0 +2.5(][)C F2(mode)-2.5 E F0(])A .18 +(The user \214le-creation mask is set to)144 650.4 R F2(mode)3.06 E F0 +5.18(.I).18 G(f)-5.18 E F2(mode)3.06 E F0(be)2.86 E .18 +(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 662.4 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +674.4 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 +(alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 +(option causes the mask to be)2.882 F .547 +(printed in symbolic form; the def)144 686.4 R .547 +(ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G +(he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 +(mode)144.38 698.4 Q F0 .552 +(is omitted, the output is in a form that may be reused as input.)3.232 +F .551(The return status is 0 if the)5.551 F(mode w)144 710.4 Q +(as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E +(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E +(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(79)190.395 E 0 Cg EP +%%Page: 80 80 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(unalias)108 84 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C/F2 10 +/Times-Italic@0 SF(name)-2.5 E F0(...])2.5 E(Remo)144 96 Q 1.057 -.15 +(ve e)-.15 H(ach).15 E F2(name)3.257 E F0 .757 +(from the list of de\214ned aliases.)3.257 F(If)5.758 E F13.258 E +F0 .758(is supplied, all alias de\214nitions are re-)3.258 F(mo)144 108 +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 124.8 Q F0<5bad>2.5 E F1 +(fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) +2.5 E -.15(Fo)144 136.8 S 3.804(re).15 G(ach)-3.804 E F2(name)4.164 E F0 +3.804(,r).18 G(emo)-3.804 E 1.604 -.15(ve t)-.15 H 1.304 +(he corresponding v).15 F 1.303(ariable or function.)-.25 F 1.303 +(If the)6.303 F F13.803 E F0 1.303(option is gi)3.803 F -.15(ve) +-.25 G 1.303(n, each).15 F F2(name)144.36 148.8 Q F0 .464 +(refers to a shell v)3.144 F .464(ariable, and that v)-.25 F .464 +(ariable is remo)-.25 F -.15(ve)-.15 G 2.965(d. Read-only).15 F -.25(va) +2.965 G .465(riables may not be un-).25 F 2.769(set. If)144 160.8 R F1 +2.769 E F0 .269(is speci\214ed, each)2.769 F F2(name)3.129 E F0 +.269(refers to a shell function, and the function de\214nition is remo) +2.949 F -.15(ve)-.15 G(d.).15 E .403(If the)144 172.8 R F12.903 E +F0 .404(option is supplied, and)2.904 F F2(name)2.904 E F0 .404(is a v) +2.904 F .404(ariable with the)-.25 F F2(namer)2.904 E(ef)-.37 E F0 +(attrib)2.904 E(ute,)-.2 E F2(name)2.904 E F0 .404(will be unset)2.904 F +.72(rather than the v)144 184.8 R .72(ariable it references.)-.25 F F1 +5.72 E F0 .72(has no ef)3.22 F .719(fect if the)-.25 F F1 +3.219 E F0 .719(option is supplied.)3.219 F .719(If no options)5.719 F +.736(are supplied, each)144 196.8 R F2(name)3.236 E F0 .736 +(refers to a v)3.236 F .737(ariable; if there is no v)-.25 F .737 +(ariable by that name, a function with)-.25 F 1.762(that name, if an)144 +208.8 R 3.062 -.65(y, i)-.15 H 4.262(su).65 G 4.261(nset. Each)-4.262 F +1.761(unset v)4.261 F 1.761(ariable or function is remo)-.25 F -.15(ve) +-.15 G 4.261(df).15 G 1.761(rom the en)-4.261 F(vironment)-.4 E 3.171 +(passed to subsequent commands.)144 220.8 R 3.172(If an)8.172 F 5.672 +(yo)-.15 G(f)-5.672 E/F3 9/Times-Bold@0 SF -.27(BA)5.672 G(SH_ALIASES) +.27 E/F4 9/Times-Roman@0 SF(,)A F3 -.27(BA)5.422 G(SH_ARGV0).27 E F4(,)A +F3 -.27(BA)5.422 G(SH_CMDS).27 E F4(,)A F3 -.27(BA)144 232.8 S +(SH_COMMAND).27 E F4(,)A F3 -.27(BA)11.482 G(SH_SUBSHELL).27 E F4(,)A F3 +-.27(BA)11.482 G(SHPID).27 E F4(,)A F3(COMP_W)11.482 E(ORDBREAKS)-.09 E +F4(,)A F3(DIRST)11.481 E -.495(AC)-.81 G(K).495 E F4(,)A F3(EPOCHREAL) +144 244.8 Q(TIME)-.828 E F4(,)A F3(EPOCHSECONDS)2.67 E F4(,)A F3(FUNCN) +2.67 E(AME)-.18 E F4(,)A F3(GR)2.67 E(OUPS)-.27 E F4(,)A F3(HISTCMD)2.67 +E F4(,)A F3(LINENO)2.67 E F4(,)A F3(RANDOM)2.67 E F4(,)A F3(SECONDS)144 +256.8 Q F4(,)A F0(or)4.03 E F3(SRANDOM)4.28 E F0 1.779(are unset, the) +4.03 F 4.279(yl)-.15 G 1.779(ose their special properties, e)-4.279 F +-.15(ve)-.25 G 4.279(ni).15 G 4.279(ft)-4.279 G(he)-4.279 E 4.279(ya) +-.15 G 1.779(re subse-)-4.279 F(quently reset.)144 268.8 Q(The e)5 E +(xit status is true unless a)-.15 E F2(name)2.86 E F0(is readonly)2.68 E +(.)-.65 E F1(wait)108 285.6 Q F0([)2.5 E F1(\255fn)A F0 2.5(][)C F1 +-2.5 E F2(varname)2.5 E F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8 +(Wa)144 297.6 S .659(it for each speci\214ed child process and return i\ +ts termination status.).8 F(Each)5.659 E F2(id)3.169 E F0 .659 +(may be a process)3.929 F .009 +(ID or a job speci\214cation; if a job spec is gi)144 309.6 R -.15(ve) +-.25 G .008(n, all processes in that job').15 F 2.508(sp)-.55 G .008 +(ipeline are w)-2.508 F .008(aited for)-.1 F 5.008(.I)-.55 G(f)-5.008 E +F2(id)144.01 321.6 Q F0 .441(is not gi)3.711 F -.15(ve)-.25 G(n,).15 E +F1(wait)2.941 E F0 -.1(wa)2.941 G .441 +(its for all running background jobs and the last-e).1 F -.15(xe)-.15 G +.442(cuted process substitu-).15 F .598 +(tion, if its process id is the same as)144 333.6 R F1($!)3.098 E F0 +3.098(,a)C .598(nd the return status is zero.)-3.098 F .597(If the)5.597 +F F13.097 E F0 .597(option is supplied,)3.097 F F1(wait)144 345.6 +Q F0 -.1(wa)3.082 G .583(its for a single job from the list of).1 F F2 +(id)3.083 E F0 3.083(so)C 1.383 -.4(r, i)-3.083 H 3.083(fn).4 G(o)-3.083 +E F2(id)3.083 E F0 3.083(sa)C .583(re supplied, an)-3.083 F 3.083(yj) +-.15 G .583(ob, to complete and)-3.083 F .404(returns its e)144 357.6 R +.404(xit status.)-.15 F .403(If none of the supplied ar)5.403 F .403 +(guments is a child of the shell, or if no ar)-.18 F(guments)-.18 E .572 +(are supplied and the shell has no unw)144 369.6 R .573 +(aited-for children, the e)-.1 F .573(xit status is 127.)-.15 F .573 +(If the)5.573 F F13.073 E F0 .573(option is)3.073 F .39 +(supplied, the process or job identi\214er of the job for which the e) +144 381.6 R .39(xit status is returned is assigned to)-.15 F .905(the v) +144 393.6 R(ariable)-.25 E F2(varname)3.405 E F0 .905 +(named by the option ar)3.405 F 3.405(gument. The)-.18 F -.25(va)3.405 G +.905(riable will be unset initially).25 F 3.405(,b)-.65 G(efore)-3.405 E +(an)144 405.6 Q 3.89(ya)-.15 G 3.89(ssignment. This)-3.89 F 1.39 +(is useful only when the)3.89 F F13.89 E F0 1.39 +(option is supplied.)3.89 F 1.39(Supplying the)6.39 F F13.89 E F0 +(option,)3.89 E .574(when job control is enabled, forces)144 417.6 R F1 +(wait)3.075 E F0 .575(to w)3.075 F .575(ait for)-.1 F F2(id)3.075 E F0 +.575(to terminate before returning its status, in-)3.075 F .635 +(stead of returning when it changes status.)144 429.6 R(If)5.635 E F2 +(id)3.145 E F0 .635(speci\214es a non-e)3.905 F .635 +(xistent process or job, the return)-.15 F(status is 127.)144 441.6 Q +(Otherwise, the return status is the e)5 E +(xit status of the last process or job w)-.15 E(aited for)-.1 E(.)-.55 E +/F5 10.95/Times-Bold@0 SF(SHELL COMP)72 458.4 Q -1.04(AT)-.81 G +(IBILITY MODE)1.04 E F0 .911 +(Bash-4.0 introduced the concept of a `shell compatibility le)108 470.4 +R -.15(ve)-.25 G .912(l', speci\214ed as a set of options to the shopt) +.15 F -.2(bu)108 482.4 S(iltin).2 E F1(compat31)3.378 E F0(,)A F1 +(compat32)3.378 E F0(,)A F1(compat40)3.378 E F0(,)A F1(compat41)3.378 E +F0 3.378(,a)C .878(nd so on\).)-3.378 F .877 +(There is only one current compatibility)5.878 F(le)108 494.4 Q -.15(ve) +-.25 G 3.253(l-).15 G 3.253(-e)-3.253 G .753(ach option is mutually e) +-3.253 F(xclusi)-.15 E -.15(ve)-.25 G 5.753(.T).15 G .753 +(he compatibility le)-5.753 F -.15(ve)-.25 G 3.254(li).15 G 3.254(si) +-3.254 G .754(ntended to allo)-3.254 F 3.254(wu)-.25 G .754 +(sers to select be-)-3.254 F(ha)108 506.4 Q 1.084(vior from pre)-.2 F +1.084(vious v)-.25 F 1.083(ersions that is incompatible with ne)-.15 F +1.083(wer v)-.25 F 1.083(ersions while the)-.15 F 3.583(ym)-.15 G 1.083 +(igrate scripts to use)-3.583 F(current features and beha)108 518.4 Q +(vior)-.2 E 2.5(.I)-.55 G(t')-2.5 E 2.5(si)-.55 G +(ntended to be a temporary solution.)-2.5 E 1.456 +(This section does not mention beha)108 535.2 R 1.457 +(vior that is standard for a particular v)-.2 F 1.457 +(ersion \(e.g., setting)-.15 F F1(compat32)3.957 E F0 .887 +(means that quoting the rhs of the re)108 547.2 R(ge)-.15 E .886 +(xp matching operator quotes special re)-.15 F(ge)-.15 E .886 +(xp characters in the w)-.15 F(ord,)-.1 E(which is def)108 559.2 Q +(ault beha)-.1 E(vior in bash-3.2 and abo)-.2 E -.15(ve)-.15 G(\).).15 E +.522(If a user enables, say)108 576 R(,)-.65 E F1(compat32)3.023 E F0 +3.023(,i)C 3.023(tm)-3.023 G .523(ay af)-3.023 F .523(fect the beha)-.25 +F .523(vior of other compatibility le)-.2 F -.15(ve)-.25 G .523 +(ls up to and includ-).15 F .26(ing the current compatibility le)108 588 +R -.15(ve)-.25 G 2.76(l. The).15 F .259 +(idea is that each compatibility le)2.759 F -.15(ve)-.25 G 2.759(lc).15 +G .259(ontrols beha)-2.759 F .259(vior that changed)-.2 F 1.645 +(in that v)108 600 R 1.646(ersion of)-.15 F F1(bash)4.146 E F0 4.146(,b) +C 1.646(ut that beha)-4.346 F 1.646(vior may ha)-.2 F 1.946 -.15(ve b) +-.2 H 1.646(een present in earlier v).15 F 4.146(ersions. F)-.15 F 1.646 +(or instance, the)-.15 F .761 +(change to use locale-based comparisons with the)108 612 R F1([[)3.261 E +F0 .76(command came in bash-4.1, and earlier v)3.261 F .76(ersions used) +-.15 F 1.904(ASCII-based comparisons, so enabling)108 624 R F1(compat32) +4.404 E F0 1.905(will enable ASCII-based comparisons as well.)4.404 F +(That)6.905 E .296(granularity may not be suf)108 636 R .296 +(\214cient for all uses, and as a result users should emplo)-.25 F 2.796 +(yc)-.1 G .295(ompatibility le)-2.796 F -.15(ve)-.25 G .295(ls care-).15 +F(fully)108 648 Q 5(.R)-.65 G(ead the documentation for a particular fe\ +ature to \214nd out the current beha)-5 E(vior)-.2 E(.)-.55 E .531 +(Bash-4.3 introduced a ne)108 664.8 R 3.031(ws)-.25 G .531(hell v)-3.031 +F(ariable:)-.25 E F3 -.27(BA)3.031 G(SH_COMP).27 E -.855(AT)-.666 G F4 +(.).855 E F0 .531(The v)5.031 F .531(alue assigned to this v)-.25 F .532 +(ariable \(a decimal)-.25 F -.15(ve)108 676.8 S .108(rsion number lik) +.15 F 2.608(e4)-.1 G .108(.2, or an inte)-2.608 F .108 +(ger corresponding to the)-.15 F F1(compat)2.607 E F2(NN)A F0 .107 +(option, lik)2.607 F 2.607(e4)-.1 G .107(2\) determines the com-)-2.607 +F(patibility le)108 688.8 Q -.15(ve)-.25 G(l.).15 E .387 +(Starting with bash-4.4, Bash has be)108 705.6 R .388 +(gun deprecating older compatibility le)-.15 F -.15(ve)-.25 G 2.888 +(ls. Ev).15 F(entually)-.15 E 2.888(,t)-.65 G .388(he options will) +-2.888 F(be remo)108 717.6 Q -.15(ve)-.15 G 2.5(di).15 G 2.5(nf)-2.5 G +-.2(avo)-2.6 G 2.5(ro).2 G(f)-2.5 E F3 -.27(BA)2.5 G(SH_COMP).27 E -.855 +(AT)-.666 G F4(.).855 E F0(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 +E(80)190.395 E 0 Cg EP +%%Page: 81 81 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.164 +(Bash-5.0 is the \214nal v)108 84 R 1.164 +(ersion for which there will be an indi)-.15 F 1.163 +(vidual shopt option for the pre)-.25 F 1.163(vious v)-.25 F(ersion.) +-.15 E(Users should use)108 96 Q/F1 9/Times-Bold@0 SF -.27(BA)2.5 G +(SH_COMP).27 E -.855(AT)-.666 G F0(on bash-5.0 and later v)3.105 E +(ersions.)-.15 E 1.613(The follo)108 112.8 R 1.613 +(wing table describes the beha)-.25 F 1.613 +(vior changes controlled by each compatibility le)-.2 F -.15(ve)-.25 G +4.113(ls).15 G 4.114(etting. The)-4.113 F/F2 10/Times-Bold@0 SF(compat) +108 124.8 Q/F3 10/Times-Italic@0 SF(NN)A F0 1.186 +(tag is used as shorthand for setting the compatibility le)3.686 F -.15 +(ve)-.25 G 3.686(lt).15 G(o)-3.686 E F3(NN)3.686 E F0 1.186 +(using one of the follo)3.686 F(wing)-.25 E 3.806(mechanisms. F)108 +136.8 R 1.306(or v)-.15 F 1.306 +(ersions prior to bash-5.0, the compatibility le)-.15 F -.15(ve)-.25 G +3.807(lm).15 G 1.307(ay be set using the corresponding)-3.807 F F2 +(compat)108 148.8 Q F3(NN)A F0 .502(shopt option.)3.002 F -.15(Fo)5.502 +G 3.002(rb).15 G .502(ash-4.3 and later v)-3.002 F .502(ersions, the) +-.15 F F1 -.27(BA)3.002 G(SH_COMP).27 E -.855(AT)-.666 G F0 -.25(va) +3.607 G .502(riable is preferred, and it).25 F +(is required for bash-5.1 and later v)108 160.8 Q(ersions.)-.15 E F2 +(compat31)108 177.6 Q F0<83>144 189.6 Q(quoting the rhs of the)180 189.6 +Q F2([[)2.5 E F0(command')2.5 E 2.5(sr)-.55 G -.15(eg)-2.5 G -.15(ex).15 +G 2.5(pm).15 G(atching operator \(=~\) has no special ef)-2.5 E(fect) +-.25 E F2(compat32)108 206.4 Q F0<83>144 218.4 Q .35 +(interrupting a command list such as "a ; b ; c" causes the e)180 218.4 +R -.15(xe)-.15 G .35(cution of the ne).15 F .35(xt command)-.15 F .018 +(in the list \(in bash-4.0 and later v)180 230.4 R .018 +(ersions, the shell acts as if it recei)-.15 F -.15(ve)-.25 G 2.517(dt) +.15 G .017(he interrupt, so in-)-2.517 F +(terrupting one command in a list aborts the e)180 242.4 Q -.15(xe)-.15 +G(cution of the entire list\)).15 E F2(compat40)108 259.2 Q F0<83>144 +271.2 Q(the)180 271.2 Q F2(<)2.673 E F0(and)2.673 E F2(>)2.673 E F0 .173 +(operators to the)2.673 F F2([[)2.673 E F0 .173 +(command do not consider the current locale when compar)2.673 F(-)-.2 E +.068(ing strings; the)180 283.2 R 2.568(yu)-.15 G .068 +(se ASCII ordering.)-2.568 F .068(Bash v)5.068 F .067 +(ersions prior to bash-4.1 use ASCII collation)-.15 F(and)180 295.2 Q F3 +(str)4.742 E(cmp)-.37 E F0 1.902 +(\(3\); bash-4.1 and later use the current locale').19 F 4.403(sc)-.55 G +1.903(ollation sequence and)-4.403 F F3(str)4.743 E(-)-.2 E(coll)180 +307.2 Q F0(\(3\).).51 E F2(compat41)108 324 Q F0<83>144 336 Q(in)180 336 +Q F3(posix)3.79 E F0(mode,)3.79 E F2(time)3.79 E F0 1.29(may be follo) +3.79 F 1.29(wed by options and still be recognized as a reserv)-.25 F +(ed)-.15 E -.1(wo)180 348 S(rd \(this is POSIX interpretation 267\)).1 E +<83>144 360 Q(in)180 360 Q F3(posix)2.708 E F0 .208 +(mode, the parser requires that an e)2.708 F -.15(ve)-.25 G 2.708(nn).15 +G .208(umber of single quotes occur in the)-2.708 F F3(wor)2.709 E(d) +-.37 E F0 .282(portion of a double-quoted parameter e)180 372 R .282 +(xpansion and treats them specially)-.15 F 2.781(,s)-.65 G 2.781(ot) +-2.781 G .281(hat charac-)-2.781 F(ters within the single quotes are co\ +nsidered quoted \(this is POSIX interpretation 221\))180 384 Q F2 +(compat42)108 400.8 Q F0<83>144 412.8 Q 1.055(the replacement string in\ + double-quoted pattern substitution does not under)180 412.8 R 1.056 +(go quote re-)-.18 F(mo)180 424.8 Q -.25(va)-.15 G(l, as it does in v) +.25 E(ersions after bash-4.2)-.15 E<83>144 436.8 Q .021 +(in posix mode, single quotes are considered special when e)180 436.8 R +.021(xpanding the)-.15 F F3(wor)2.52 E(d)-.37 E F0 .02(portion of a)2.52 +F .017(double-quoted parameter e)180 448.8 R .017 +(xpansion and can be used to quote a closing brace or other spe-)-.15 F +.999(cial character \(this is part of POSIX interpretation 221\); in la\ +ter v)180 460.8 R .998(ersions, single quotes)-.15 F +(are not special within double-quoted w)180 472.8 Q(ord e)-.1 E +(xpansions)-.15 E F2(compat43)108 489.6 Q F0<83>144 501.6 Q 1.07 +(the shell does not print a w)180 501.6 R 1.071 +(arning message if an attempt is made to use a quoted com-)-.1 F .249 +(pound assignment as an ar)180 513.6 R .248 +(gument to declare \(declare -a foo='\(1 2\)'\). Later v)-.18 F .248 +(ersions w)-.15 F(arn)-.1 E(that this usage is deprecated)180 525.6 Q +<83>144 537.6 Q -.1(wo)180 537.6 S .5(rd e).1 F .501 +(xpansion errors are considered non-f)-.15 F .501 +(atal errors that cause the current command to)-.1 F -.1(fa)180 549.6 S +.605(il, e).1 F -.15(ve)-.25 G 3.105(ni).15 G 3.105(np)-3.105 G .605 +(osix mode \(the def)-3.105 F .605(ault beha)-.1 F .605(vior is to mak) +-.2 F 3.105(et)-.1 G .605(hem f)-3.105 F .605 +(atal errors that cause the)-.1 F(shell to e)180 561.6 Q(xit\))-.15 E +<83>144 573.6 Q .354(when e)180 573.6 R -.15(xe)-.15 G .354 +(cuting a shell function, the loop state \(while/until/etc.\)).15 F .355 +(is not reset, so)5.354 F F2(br)2.855 E(eak)-.18 E F0(or)2.855 E F2 +(continue)180 585.6 Q F0 .052 +(in that function will break or continue loops in the calling conte) +2.553 F .052(xt. Bash-4.4 and)-.15 F(later reset the loop state to pre) +180 597.6 Q -.15(ve)-.25 G(nt this).15 E F2(compat44)108 614.4 Q F0<83> +144 626.4 Q .719(the shell sets up the v)180 626.4 R .719(alues used by) +-.25 F F1 -.27(BA)3.219 G(SH_ARGV).27 E F0(and)2.969 E F1 -.27(BA)3.219 +G(SH_ARGC).27 E F0 .719(so the)2.969 F 3.219(yc)-.15 G .719(an e)-3.219 +F(xpand)-.15 E(to the shell')180 638.4 Q 2.5(sp)-.55 G +(ositional parameters e)-2.5 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(fe)-2.5 G +(xtended deb)-2.65 E(ugging mode is not enabled)-.2 E<83>144 650.4 Q +2.635(as)180 650.4 S .135(ubshell inherits loops from its parent conte) +-2.635 F .135(xt, so)-.15 F F2(br)2.635 E(eak)-.18 E F0(or)2.635 E F2 +(continue)2.634 E F0 .134(will cause the sub-)2.634 F(shell to e)180 +662.4 Q 2.5(xit. Bash-5.0)-.15 F(and later reset the loop state to pre) +2.5 E -.15(ve)-.25 G(nt the e).15 E(xit)-.15 E<83>144 674.4 Q -.25(va) +180 674.4 S .618(riable assignments preceding b).25 F .618(uiltins lik) +-.2 F(e)-.1 E F2(export)3.118 E F0(and)3.118 E F2 -.18(re)3.118 G +(adonly).18 E F0 .618(that set attrib)3.118 F .619(utes con-)-.2 F .12 +(tinue to af)180 686.4 R .12(fect v)-.25 F .119 +(ariables with the same name in the calling en)-.25 F .119(vironment e) +-.4 F -.15(ve)-.25 G 2.619(ni).15 G 2.619(ft)-2.619 G .119(he shell is) +-2.619 F(not in posix mode)180 698.4 Q(GNU Bash 5.1)72 768 Q +(2020 October 29)141.235 E(81)190.395 E 0 Cg EP +%%Page: 82 82 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(compat50)108 84 Q F0<83>144 96 Q 1.209(Bash-5.1 changed the w)180 96 +R(ay)-.1 E/F2 9/Times-Bold@0 SF($RANDOM)3.709 E F0 1.209 +(is generated to introduce slightly more random-)3.459 F 1.019 +(ness. If the shell compatibility le)180 108 R -.15(ve)-.25 G 3.518(li) +.15 G 3.518(ss)-3.518 G 1.018(et to 50 or lo)-3.518 F(wer)-.25 E 3.518 +(,i)-.4 G 3.518(tr)-3.518 G -2.15 -.25(ev e)-3.518 H 1.018 +(rts to the method from).25 F .732(bash-5.0 and pre)180 120 R .732 +(vious v)-.25 F .733 +(ersions, so seeding the random number generator by assigning a)-.15 F +-.25(va)180 132 S(lue to).25 E F2(RANDOM)2.5 E F0 +(will produce the same sequence as in bash-5.0)2.25 E<83>144 144 Q .696 +(If the command hash table is empty)180 144 R 3.196(,b)-.65 G .696 +(ash v)-3.196 F .695(ersions prior to bash-5.1 printed an informa-)-.15 +F 1.32(tional message to that ef)180 156 R 1.321(fect, e)-.25 F -.15(ve) +-.25 G 3.821(nw).15 G 1.321 +(hen producing output that can be reused as input.)-3.821 F +(Bash-5.1 suppresses that message when the)180 168 Q F12.5 E F0 +(option is supplied.)2.5 E/F3 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 +184.8 Q F0(If)108 196.8 Q F1(bash)3.582 E F0 1.081 +(is started with the name)3.581 F F1(rbash)3.581 E F0 3.581(,o)C 3.581 +(rt)-3.581 G(he)-3.581 E F13.581 E F0 1.081 +(option is supplied at in)3.581 F -.2(vo)-.4 G 1.081 +(cation, the shell becomes re-).2 F 2.976(stricted. A)108 208.8 R .476 +(restricted shell is used to set up an en)2.976 F .476 +(vironment more controlled than the standard shell.)-.4 F .477(It be-) +5.477 F(ha)108 220.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E +F1(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E +(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 237.6 Q +(changing directories with)144 237.6 Q F1(cd)2.5 E F0<83>108 254.4 Q +(setting or unsetting the v)144 254.4 Q(alues of)-.25 E F2(SHELL)2.5 E +/F4 9/Times-Roman@0 SF(,)A F2 -.666(PA)2.25 G(TH)-.189 E F4(,)A F2 +(HISTFILE)2.25 E F4(,)A F2(ENV)2.25 E F4(,)A F0(or)2.25 E F2 -.27(BA)2.5 +G(SH_ENV).27 E F0<83>108 271.2 Q(specifying command names containing)144 +271.2 Q F1(/)2.5 E F0<83>108 288 Q(specifying a \214lename containing a) +144 288 Q F1(/)2.5 E F0(as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E +F0 -.2(bu)5 G(iltin command).2 E<83>108 304.8 Q +(specifying a \214lename containing a slash as an ar)144 304.8 Q +(gument to the)-.18 E F1(history)2.5 E F0 -.2(bu)2.5 G(iltin command).2 +E<83>108 321.6 Q .45 +(specifying a \214lename containing a slash as an ar)144 321.6 R .449 +(gument to the)-.18 F F12.949 E F0 .449(option to the)2.949 F F1 +(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 333.6 Q +<83>108 350.4 Q(importing function de\214nitions from the shell en)144 +350.4 Q(vironment at startup)-.4 E<83>108 367.2 Q(parsing the v)144 +367.2 Q(alue of)-.25 E F2(SHELLOPTS)2.5 E F0(from the shell en)2.25 E +(vironment at startup)-.4 E<83>108 384 Q(redirecting output using the >\ +, >|, <>, >&, &>, and >> redirection operators)144 384 Q<83>108 400.8 Q +(using the)144 400.8 Q F1(exec)2.5 E F0 -.2(bu)2.5 G +(iltin command to replace the shell with another command).2 E<83>108 +417.6 Q(adding or deleting b)144 417.6 Q(uiltin commands with the)-.2 E +F12.5 E F0(and)2.5 E F12.5 E F0(options to the)2.5 E F1 +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 434.4 Q +(using the)144 434.4 Q F1(enable)2.5 E F0 -.2(bu)2.5 G +(iltin command to enable disabled shell b).2 E(uiltins)-.2 E<83>108 +451.2 Q(specifying the)144 451.2 Q F12.5 E F0(option to the)2.5 E +F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 468 Q +(turning of)144 468 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F1 +(set +r)2.5 E F0(or)2.5 E F1(set +o r)2.5 E(estricted)-.18 E F0(.)A +(These restrictions are enforced after an)108 484.8 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 501.6 R -.15 +(xe)-.15 G 1.567(cuted \(see).15 F F2 1.567(COMMAND EXECUTION)4.067 F F0 +(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1(rbash)108 513.6 Q F0(turns of) +2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H(estrictions in the shell spa).15 +E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E F3(SEE ALSO)72 +530.4 Q/F5 10/Times-Italic@0 SF(Bash Refer)108 542.4 Q(ence Manual)-.37 +E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F5 +(The Gnu Readline Libr)108 554.4 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E +(ox and Chet Rame)-.15 E(y)-.15 E F5(The Gnu History Libr)108 566.4 Q +(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E +F5 -.8(Po)108 578.4 S(rtable Oper).8 E +(ating System Interface \(POSIX\) P)-.15 E(art 2: Shell and Utilities) +-.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 590.4 Q +(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 602.4 Q +(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F5(sh) +108 614.4 Q F0(\(1\),)A F5(ksh)2.5 E F0(\(1\),)A F5(csh)2.5 E F0(\(1\))A +F5(emacs)108 626.4 Q F0(\(1\),)A F5(vi)2.5 E F0(\(1\))A F5 -.37(re)108 +638.4 S(adline).37 E F0(\(3\))A F3(FILES)72 655.2 Q F5(/bin/bash)109.666 +667.2 Q F0(The)144 679.2 Q F1(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E +F5(/etc/pr)109.666 691.2 Q(o\214le)-.45 E F0 +(The systemwide initialization \214le, e)144 703.2 Q -.15(xe)-.15 G +(cuted for login shells).15 E(GNU Bash 5.1)72 768 Q(2020 October 29) +141.235 E(82)190.395 E 0 Cg EP +%%Page: 83 83 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(~/.bash_pr)109.666 84 Q(o\214le)-.45 E F0 +(The personal initialization \214le, e)144 96 Q -.15(xe)-.15 G +(cuted for login shells).15 E F1(~/.bashr)109.666 108 Q(c)-.37 E F0 +(The indi)144 120 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G +(-shell startup \214le).15 E F1(~/.bash_lo)109.666 132 Q(gout)-.1 E F0 +(The indi)144 144 Q(vidual login shell cleanup \214le, e)-.25 E -.15(xe) +-.15 G(cuted when a login shell e).15 E(xits)-.15 E F1(~/.inputr)109.666 +156 Q(c)-.37 E F0(Indi)144 168 Q(vidual)-.25 E F1 -.37(re)2.5 G(adline) +.37 E F0(initialization \214le)2.5 E/F2 10.95/Times-Bold@0 SF -.548(AU) +72 184.8 S(THORS).548 E F0(Brian F)108 196.8 Q(ox, Free Softw)-.15 E +(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 208.8 Q(g)-.18 E +(Chet Rame)108 225.6 Q 1.3 -.65(y, C)-.15 H(ase W).65 E(estern Reserv) +-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(chet.rame)108 +237.6 Q(y@case.edu)-.15 E F2 -.11(BU)72 254.4 S 2.738(GR).11 G(EPOR) +-2.738 E(TS)-.438 E F0 .568(If you \214nd a b)108 266.4 R .568(ug in)-.2 +F/F3 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 278.4 R 5.625(ersion of)-.15 F F3 +(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.626 +(ersion is al)-.15 F -.1(wa)-.1 G 5.626(ys a).1 F -.25(va)-.2 G 5.626 +(ilable from).25 F F1(ftp://ftp.gnu.or)108 290.4 Q(g/pub/gnu/bash/)-.37 +E F0(.)A .411(Once you ha)108 307.2 R .711 -.15(ve d)-.2 H .411 +(etermined that a b).15 F .411(ug actually e)-.2 F .411(xists, use the) +-.15 F F1(bashb)3.18 E(ug)-.2 E F0 .41(command to submit a b)3.13 F .41 +(ug report.)-.2 F(If)5.41 E .594(you ha)108 319.2 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 331.2 Q F1 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 +(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F3(gnu.bash.b)2.5 E(ug) +-.2 E F0(.)A(ALL b)108 348 Q(ug reports should include:)-.2 E(The v)108 +364.8 Q(ersion number of)-.15 E F3(bash)2.5 E F0(The hardw)108 376.8 Q +(are and operating system)-.1 E(The compiler used to compile)108 388.8 Q +2.5(Ad)108 400.8 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 E +2.5(As)108 412.8 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 G +(rcises the b).15 E(ug)-.2 E F1(bashb)108.27 429.6 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 +446.4 Q(ug reports concerning this manual page should be directed to)-.2 +E F1 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) +.25 E F2 -.11(BU)72 463.2 S(GS).11 E F0(It')108 475.2 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 492 R 1.869(ferences between)-.25 F F3 +(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869(ersions of)-.15 F +F3(sh)4.368 E F0 4.368(,m)C 1.868(ostly because of the)-4.368 F/F4 9 +/Times-Bold@0 SF(POSIX)108 504 Q F0(speci\214cation.)2.25 E +(Aliases are confusing in some uses.)108 520.8 Q(Shell b)108 537.6 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 554.4 R .39 +(process suspension is attempted.)108 566.4 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 578.4 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 590.4 Q(Array v)108 +607.2 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E +(There may be only one acti)108 624 Q .3 -.15(ve c)-.25 H +(oprocess at a time.).15 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 +E(83)190.395 E 0 Cg EP +%%Trailer +end +%%EOF diff --git a/bash-5.1/doc/bashbug.0 b/bash-5.1/doc/bashbug.0 new file mode 100644 index 0000000..373c47b --- /dev/null +++ b/bash-5.1/doc/bashbug.0 @@ -0,0 +1,52 @@ +BASHBUG(1) General Commands Manual BASHBUG(1) + + + +NNAAMMEE + bashbug - report a bug in bash + +SSYYNNOOPPSSIISS + bbaasshhbbuugg [_-_-_v_e_r_s_i_o_n] [_-_-_h_e_l_p] [_e_m_a_i_l_-_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 spec- + ified by the environment variable EEDDIITTOORR on a temporary copy of the bug + report format 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 _e_m_a_i_l_-_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 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. + +EENNVVIIRROONNMMEENNTT + bbaasshhbbuugg will utilize the following environment variables if they exist: + + EEDDIITTOORR Specifies the preferred editor. If EEDDIITTOORR is not set, bbaasshhbbuugg + attempts to locate a number of alternative editors, including + eemmaaccss. If bbaasshhbbuugg cannot locate any of the alternative editors, + it attempts to execute vvii. + + HHOOMMEE Directory in which the failed bug report is saved if the mail + fails. + + TTMMPPDDIIRR Directory in which to create temporary files and directories. + +SSEEEE AALLSSOO + _b_a_s_h(1) + +AAUUTTHHOORRSS + Brian Fox, Free Software Foundation + bfox@gnu.org + + Chet Ramey, Case Western Reserve University + chet@po.cwru.edu + + + +GNU Bash 5.1 2020 August 1 BASHBUG(1) diff --git a/bash-5.1/doc/bashbug.1 b/bash-5.1/doc/bashbug.1 new file mode 100644 index 0000000..abcaf48 --- /dev/null +++ b/bash-5.1/doc/bashbug.1 @@ -0,0 +1,67 @@ +.\" +.\" MAN PAGE COMMENTS to +.\" +.\" Chet Ramey +.\" Case Western Reserve University +.\" chet@po.cwru.edu +.\" +.\" Last Change: Sun Aug 2 15:39:07 EDT 2020 +.\" +.TH BASHBUG 1 "2020 August 1" "GNU Bash 5.1" +.SH NAME +bashbug \- report a bug in bash +.SH SYNOPSIS +\fBbashbug\fP [\fI--version\fP] [\fI--help\fP] [\fIemail-address\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 +\fIemail-address\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 +attempts to locate a number of alternative editors, including +.BR emacs . +If +.B bashbug +cannot locate any of the alternative editors, it attempts to execute \fBvi\fP. +.TP +.B HOME +Directory in which the failed bug report is saved if the mail fails. +.TP +.B TMPDIR +Directory in which to create temporary files and directories. +.SH "SEE ALSO" +.TP +\fIbash\fP(1) +.SH AUTHORS +Brian Fox, Free Software Foundation +.br +bfox@gnu.org +.PP +Chet Ramey, Case Western Reserve University +.br +chet@po.cwru.edu diff --git a/bash-5.1/doc/bashbug.ps b/bash-5.1/doc/bashbug.ps new file mode 100644 index 0000000..9c60a33 --- /dev/null +++ b/bash-5.1/doc/bashbug.ps @@ -0,0 +1,297 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.22.4 +%%CreationDate: Fri Aug 7 11:58:10 2020 +%%DocumentNeededResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%DocumentSuppliedResources: procset grops 1.22 4 +%%Pages: 1 +%%PageOrder: Ascend +%%DocumentMedia: Default 612 792 0 () () +%%Orientation: Portrait +%%EndComments +%%BeginDefaults +%%PageMedia: Default +%%EndDefaults +%%BeginProlog +%%BeginResource: procset grops 1.22 4 +%!PS-Adobe-3.0 Resource-ProcSet +/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 +DEFS/BPhook known{DEFS begin BPhook end}if +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}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 +/Fr{ +setrgbcolor fill +}bind def +/setcmykcolor where{ +pop +/Fk{ +setcmykcolor fill +}bind def +}if +/Fg{ +setgray fill +}bind def +/FL/fill load def +/LW/setlinewidth load def +/Cr/setrgbcolor load def +/setcmykcolor where{ +pop +/Ck/setcmykcolor load def +}if +/Cg/setgray load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne +2 index/UniqueID ne +and +{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 +/setpagedevice{}def +mark +}bind def +/PEND{ +cleartomark +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%EndProlog +%%BeginSetup +%%BeginFeature: *PageSize Default +<< /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice +%%EndFeature +%%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/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 +/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 -.35(BA)72 48 S(SHB).35 E 116.13 +(UG\(1\) General)-.1 F(Commands Manual)2.5 E -.35(BA)118.63 G(SHB).35 E +(UG\(1\))-.1 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 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(--ver)A(sion)-.1 E F0 2.5(][)C F3(--help)-2.5 E F0 +2.5(][)C F3(email-addr)-2.5 E(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/F4 9/Times-Bold@0 SF(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 appropriate \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 1.141 +(mails the completed report to)108 189.6 R F3 -.2(bu)3.641 G +(g-bash@gnu.or).2 E(g)-.37 E F0 3.641(,o)C(r)-3.641 E F3(email-addr) +3.641 E(ess)-.37 E F0 6.141(.I)C 3.641(ft)-6.141 G 1.142 +(he report cannot be mailed, it is)-3.641 F(sa)108 201.6 Q -.15(ve)-.2 G +2.5(di).15 G 2.5(nt)-2.5 G(he \214le)-2.5 E 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)-.329 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 .327(Speci\214es the preferred editor)144 +312 R 2.827(.I)-.55 G(f)-2.827 E F4(EDIT)2.827 E(OR)-.162 E F0 .327 +(is not set,)2.577 F F2(bashb)2.827 E(ug)-.2 E F0 .328 +(attempts to locate a number of alter)2.827 F(-)-.2 E(nati)144 324 Q +1.925 -.15(ve e)-.25 H 1.625(ditors, including).15 F F2(emacs)4.125 E F0 +6.625(.I)C(f)-6.625 E F2(bashb)4.125 E(ug)-.2 E F0 1.625 +(cannot locate an)4.125 F 4.125(yo)-.15 G 4.125(ft)-4.125 G 1.625 +(he alternati)-4.125 F 1.925 -.15(ve e)-.25 H 1.625(ditors, it at-).15 F +(tempts to e)144 336 Q -.15(xe)-.15 G(cute).15 E F2(vi)2.5 E F0(.)A F2 +(HOME)108 352.8 Q F0(Directory in which the f)144 364.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 F2(TMPDIR)108 381.6 Q F0 +(Directory in which to create temporary \214les and directories.)144 +393.6 Q F1(SEE ALSO)72 410.4 Q F3(bash)108 422.4 Q F0(\(1\))A F1 -.548 +(AU)72 439.2 S(THORS).548 E F0(Brian F)108 451.2 Q(ox, Free Softw)-.15 E +(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 463.2 Q(g)-.18 E +(Chet Rame)108 480 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 492 Q(GNU Bash 5.1)72 768 Q(2020 August 1)145.395 E(1)199.555 E 0 Cg +EP +%%Trailer +end +%%EOF diff --git a/bash-5.1/doc/bashref.dvi b/bash-5.1/doc/bashref.dvi new file mode 100644 index 0000000000000000000000000000000000000000..2b682d27696646a1393ebce7d4d6520eedfb49d7 GIT binary patch literal 789640 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

%fmN{zn9T!VhG<~SJob4=2uOyU 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ξ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%0A)WrMqH36qyVdl}=xQt{r+;&pv$4jH?U0qT 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

yTTTOra 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 + + + + + +Bash Reference Manual + + + + + + + + + + + + + + + + +

Bash Reference Manual

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

Table of Contents

+ +
+ + +
+ + +
+

+Next: , Previous: , Up: (dir)   [Contents][Index]

+
+

Bash Features

+ +

This text is a brief description of the features that are present in +the Bash shell (version 5.1, 29 October 2020). +The Bash home page is http://www.gnu.org/software/bash/. +

+

This is Edition 5.1, last updated 29 October 2020, +of The GNU Bash Reference Manual, +for Bash, Version 5.1. +

+

Bash contains features that appear in other popular shells, and some +features that only appear in Bash. Some of the shells that Bash has +borrowed concepts from are the Bourne Shell (sh), the Korn Shell +(ksh), and the C-shell (csh and its successor, +tcsh). The following menu breaks the features up into +categories, noting which features were inspired by other shells and +which are specific to Bash. +

+

This manual is meant as a brief introduction to features found in +Bash. The Bash manual page should be used as the definitive +reference on shell behavior. +

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

+Next: , Up: Top   [Contents][Index]

+
+

1 Introduction

+ + + + + +
+ +

1.1 What is Bash?

+ +

Bash is the shell, or command language interpreter, +for the GNU operating system. +The name is an acronym for the ‘Bourne-Again SHell’, +a pun on Stephen Bourne, the author of the direct ancestor of +the current Unix shell sh, +which appeared in the Seventh Edition Bell Labs Research version +of Unix. +

+

Bash is largely compatible with sh and incorporates useful +features from the Korn shell ksh and the C shell csh. +It is intended to be a conformant implementation of the IEEE +POSIX Shell and Tools portion of the IEEE POSIX +specification (IEEE Standard 1003.1). +It offers functional improvements over sh for both interactive and +programming use. +

+

While the GNU operating system provides other shells, including +a version of csh, Bash is the default shell. +Like other GNU software, Bash is quite portable. It currently runs +on nearly every version of Unix and a few other operating systems - +independently-supported ports exist for MS-DOS, OS/2, +and Windows platforms. +

+
+
+

+Previous: , Up: Introduction   [Contents][Index]

+
+

1.2 What is a shell?

+ +

At its base, a shell is simply a macro processor that executes +commands. The term macro processor means functionality where text +and symbols are expanded to create larger expressions. +

+

A Unix shell is both a command interpreter and a programming +language. As a command interpreter, the shell provides the user +interface to the rich set of GNU utilities. The programming +language features allow these utilities to be combined. +Files containing commands can be created, and become +commands themselves. These new commands have the same status as +system commands in directories such as /bin, allowing users +or groups to establish custom environments to automate their common +tasks. +

+

Shells may be used interactively or non-interactively. In +interactive mode, they accept input typed from the keyboard. +When executing non-interactively, shells execute commands read +from a file. +

+

A shell allows execution of GNU commands, both synchronously and +asynchronously. +The shell waits for synchronous commands to complete before accepting +more input; asynchronous commands continue to execute in parallel +with the shell while it reads and executes additional commands. +The redirection constructs permit +fine-grained control of the input and output of those commands. +Moreover, the shell allows control over the contents of commands’ +environments. +

+

Shells also provide a small set of built-in +commands (builtins) implementing functionality impossible +or inconvenient to obtain via separate utilities. +For example, cd, break, continue, and +exec cannot be implemented outside of the shell because +they directly manipulate the shell itself. +The history, getopts, kill, or pwd +builtins, among others, could be implemented in separate utilities, +but they are more convenient to use as builtin commands. +All of the shell builtins are described in +subsequent sections. +

+

While executing commands is essential, most of the power (and +complexity) of shells is due to their embedded programming +languages. Like any high-level language, the shell provides +variables, flow control constructs, quoting, and functions. +

+

Shells offer features geared specifically for +interactive use rather than to augment the programming language. +These interactive features include job control, command line +editing, command history and aliases. Each of these features is +described in this manual. +

+
+
+

+Next: , Previous: , Up: Top   [Contents][Index]

+
+

2 Definitions

+

These definitions are used throughout the remainder of this manual. +

+
+
POSIX
+
+

A family of open system standards based on Unix. Bash +is primarily concerned with the Shell and Utilities portion of the +POSIX 1003.1 standard. +

+
+
blank
+

A space or tab character. +

+
+
builtin
+
+

A command that is implemented internally by the shell itself, rather +than by an executable program somewhere in the file system. +

+
+
control operator
+
+

A token that performs a control function. It is a newline +or one of the following: +‘||’, ‘&&’, ‘&’, ‘;’, ‘;;’, ‘;&’, ‘;;&’, +‘|’, ‘|&’, ‘(’, or ‘)’. +

+
+
exit status
+
+

The value returned by a command to its caller. The value is restricted +to eight bits, so the maximum value is 255. +

+
+
field
+
+

A unit of text that is the result of one of the shell expansions. After +expansion, when executing a command, the resulting fields are used as +the command name and arguments. +

+
+
filename
+
+

A string of characters used to identify a file. +

+
+
job
+
+

A set of processes comprising a pipeline, and any processes descended +from it, that are all in the same process group. +

+
+
job control
+
+

A mechanism by which users can selectively stop (suspend) and restart +(resume) execution of processes. +

+
+
metacharacter
+
+

A character that, when unquoted, separates words. A metacharacter is +a space, tab, newline, or one of the following characters: +‘|’, ‘&’, ‘;’, ‘(’, ‘)’, ‘<’, or +‘>’. +

+
+
name
+
+ +

A word consisting solely of letters, numbers, and underscores, +and beginning with a letter or underscore. Names are used as +shell variable and function names. +Also referred to as an identifier. +

+
+
operator
+
+

A control operator or a redirection operator. +See Redirections, for a list of redirection operators. +Operators contain at least one unquoted metacharacter. +

+
+
process group
+
+

A collection of related processes each having the same process +group ID. +

+
+
process group ID
+
+

A unique identifier that represents a process group +during its lifetime. +

+
+
reserved word
+
+

A word that has a special meaning to the shell. Most reserved +words introduce shell flow control constructs, such as for and +while. +

+
+
return status
+
+

A synonym for exit status. +

+
+
signal
+
+

A mechanism by which a process may be notified by the kernel +of an event occurring in the system. +

+
+
special builtin
+
+

A shell builtin command that has been classified as special by the +POSIX standard. +

+
+
token
+
+

A sequence of characters considered a single unit by the shell. +It is either a word or an operator. +

+
+
word
+
+

A sequence of characters treated as a unit by the shell. +Words may not include unquoted metacharacters. +

+
+ +
+
+

+Next: , Previous: , Up: Top   [Contents][Index]

+
+

3 Basic Shell Features

+ + +

Bash is an acronym for ‘Bourne-Again SHell’. +The Bourne shell is +the traditional Unix shell originally written by Stephen Bourne. +All of the Bourne shell builtin commands are available in Bash, +The rules for evaluation and quoting are taken from the POSIX +specification for the ‘standard’ Unix shell. +

+

This chapter briefly summarizes the shell’s ‘building blocks’: +commands, control structures, shell functions, shell parameters, +shell expansions, +redirections, which are a way to direct input and output from +and to named files, and how the shell executes commands. +

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

3.1 Shell Syntax

+ + + + + + +

When the shell reads input, it proceeds through a +sequence of operations. If the input indicates the beginning of a +comment, the shell ignores the comment symbol (‘#’), and the rest +of that line. +

+

Otherwise, roughly speaking, the shell reads its input and +divides the input into words and operators, employing the quoting rules +to select which meanings to assign various words and characters. +

+

The shell then parses these tokens into commands and other constructs, +removes the special meaning of certain words or characters, expands +others, redirects input and output as needed, executes the specified +command, waits for the command’s exit status, and makes that exit status +available for further inspection or processing. +

+
+
+

+Next: , Up: Shell Syntax   [Contents][Index]

+
+

3.1.1 Shell Operation

+ +

The following is a brief description of the shell’s operation when it +reads and executes a command. Basically, the shell does the +following: +

+
    +
  1. Reads its input from a file (see Shell Scripts), from a string +supplied as an argument to the -c invocation option +(see Invoking Bash), or from the user’s terminal. + +
  2. Breaks the input into words and operators, obeying the quoting rules +described in Quoting. These tokens are separated by +metacharacters. Alias expansion is performed by this step +(see Aliases). + +
  3. Parses the tokens into simple and compound commands +(see Shell Commands). + +
  4. Performs the various shell expansions (see Shell Expansions), breaking +the expanded tokens into lists of filenames (see Filename Expansion) +and commands and arguments. + +
  5. Performs any necessary redirections (see Redirections) and removes +the redirection operators and their operands from the argument list. + +
  6. Executes the command (see Executing Commands). + +
  7. Optionally waits for the command to complete and collects its exit +status (see Exit Status). + +
+ +
+
+

+Next: , Previous: , Up: Shell Syntax   [Contents][Index]

+
+

3.1.2 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 shell metacharacters (see 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 Interaction), the +history expansion character, usually ‘!’, must be quoted +to prevent history expansion. See Bash History Facilities, for +more details concerning history expansion. +

+

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

+
+
+

+Next: , Up: Quoting   [Contents][Index]

+
+

3.1.2.1 Escape Character

+

A non-quoted backslash ‘\’ is the Bash 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 itself is not quoted, the \newline +is treated as a line continuation (that is, it is removed from +the input stream and effectively ignored). +

+
+
+

+Next: , Previous: , Up: Quoting   [Contents][Index]

+
+

3.1.2.2 Single Quotes

+ +

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

+
+
+

+Next: , Previous: , Up: Quoting   [Contents][Index]

+
+

3.1.2.3 Double Quotes

+ +

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, ‘!’. +When the shell is in +POSIX mode (see Bash POSIX Mode), +the ‘!’ has no special meaning +within double quotes, even when history expansion is enabled. +The characters ‘$’ and ‘`’ +retain their special meaning within double quotes (see Shell Expansions). +The backslash retains its special meaning only when followed by one of +the following characters: +‘$’, ‘`’, ‘"’, ‘\’, or newline. +Within double quotes, backslashes that are followed by one of these +characters are removed. Backslashes preceding characters without a +special meaning are left unmodified. +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 Shell Parameter Expansion). +

+
+
+

+Next: , Previous: , Up: Quoting   [Contents][Index]

+
+

3.1.2.4 ANSI-C Quoting

+ + +

Words of the form $'string' 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
+
\E
+

an escape character (not ANSI C) +

+
\f
+

form feed +

+
\n
+

newline +

+
\r
+

carriage return +

+
\t
+

horizontal tab +

+
\v
+

vertical tab +

+
\\
+

backslash +

+
\'
+

single quote +

+
\"
+

double quote +

+
\?
+

question mark +

+
\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) +

+
\uHHHH
+

the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +HHHH (one to four hex digits) +

+
\UHHHHHHHH
+

the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +HHHHHHHH (one to eight hex digits) +

+
\cx
+

a control-x character +

+
+ +

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

+
+
+

+Previous: , Up: Quoting   [Contents][Index]

+
+

3.1.2.5 Locale-Specific Translation

+ + + + + +

A double-quoted string preceded by a dollar sign (‘$’) +will cause the string to be translated according to the current locale. +The gettext infrastructure performs the message catalog lookup and +translation, using the LC_MESSAGES and TEXTDOMAIN shell +variables, as explained below. See the gettext documentation for additional +details. +If the current locale is C or POSIX, +or if there are no translations available, +the dollar sign is ignored. +If the string is translated and replaced, the replacement is +double-quoted. +

+ + + +

Some systems use the message catalog selected by the LC_MESSAGES +shell variable. Others create the name of the message catalog from the +value of the TEXTDOMAIN shell variable, possibly adding a +suffix of ‘.mo’. If you use the TEXTDOMAIN variable, you +may need to set the TEXTDOMAINDIR variable to the location of +the message catalog files. Still others use both variables in this +fashion: +TEXTDOMAINDIR/LC_MESSAGES/LC_MESSAGES/TEXTDOMAIN.mo. +

+
+
+

+Previous: , Up: Shell Syntax   [Contents][Index]

+
+

3.1.3 Comments

+ + +

In a non-interactive shell, or an interactive shell in which the +interactive_comments option to the shopt +builtin is enabled (see The Shopt Builtin), +a word beginning with ‘#’ +causes that word and all remaining characters on that line to +be ignored. An interactive shell without the interactive_comments +option enabled does not allow comments. The interactive_comments +option is on by default in interactive shells. +See Interactive Shells, for a description of what makes +a shell interactive. +

+
+ +

3.2 Shell Commands

+ + +

A simple shell command such as echo a b c consists of the command +itself followed by arguments, separated by spaces. +

+

More complex shell commands are composed of simple commands arranged together +in a variety of ways: in a pipeline in which the output of one command +becomes the input of a second, in a loop or conditional construct, or in +some other grouping. +

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

3.2.1 Reserved Words

+ + +

Reserved words are words that have special meaning to the shell. +They are used to begin and end the shell’s compound commands. +

+

The following words are recognized as reserved when unquoted and +the first word of a command (see below for exceptions): +

+ + + + + +
ifthenelifelsefitime
forinuntilwhiledodone
caseesaccoprocselectfunction
{}[[]]!
+ +

in is recognized as a reserved word if it is the third word of a +case or select command. +in and do are recognized as reserved +words if they are the third word in a for command. +

+
+
+

+Next: , Previous: , Up: Shell Commands   [Contents][Index]

+
+

3.2.2 Simple Commands

+ + +

A simple command is the kind of command encountered most often. +It’s just a sequence of words separated by blanks, terminated +by one of the shell’s control operators (see Definitions). The +first word generally specifies a command to be executed, with the +rest of the words being that command’s arguments. +

+

The return status (see Exit Status) of a simple command is +its exit status as provided +by the POSIX 1003.1 waitpid function, or 128+n if +the command was terminated by signal n. +

+
+
+

+Next: , Previous: , Up: Shell Commands   [Contents][Index]

+
+

3.2.3 Pipelines

+ + + +

A pipeline is a sequence of one or more commands separated by +one of the control operators ‘|’ or ‘|&’. +

+ + + +

The format for a pipeline is +

+
[time [-p]] [!] command1 [ | or |& command2 ] …
+
+ +

The output of each command in the pipeline is connected via a pipe +to the input of the next command. +That is, each command reads the previous command’s output. This +connection is performed before any redirections specified by the +command. +

+

If ‘|&’ is used, command1’s standard error, in addition to +its standard output, is connected to +command2’s standard input through the pipe; +it is shorthand for 2>&1 |. +This implicit redirection of the standard error to the standard output is +performed after any redirections specified by the command. +

+

The reserved word time causes timing statistics +to be printed for the pipeline once it finishes. +The statistics currently consist of elapsed (wall-clock) time and +user and system time consumed by the command’s execution. +The -p option changes the output format to that specified +by POSIX. +When the shell is in POSIX mode (see Bash POSIX Mode), +it does not recognize time as a reserved word if the next +token begins with a ‘-’. +The TIMEFORMAT variable may be set to a format string that +specifies how the timing information should be displayed. +See Bash Variables, for a description of the available formats. +The use of time as a reserved word permits the timing of +shell builtins, shell functions, and pipelines. An external +time command cannot time these easily. +

+

When the shell is in POSIX mode (see Bash POSIX Mode), time +may be followed by a newline. In this case, the shell displays the +total user and system time consumed by the shell and its children. +The TIMEFORMAT variable may be used to specify the format of +the time information. +

+

If the pipeline is not executed asynchronously (see Lists), the +shell waits for all commands in the pipeline to complete. +

+

Each command in a pipeline is executed in its own subshell, which is a +separate process (see Command Execution Environment). +If the lastpipe option is enabled using the shopt builtin +(see The Shopt Builtin), +the last element of a pipeline may be run by the shell process. +

+

The exit +status of a pipeline is the exit status of the last command in the +pipeline, unless the pipefail option is enabled +(see The Set Builtin). +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 the pipeline, the +exit status 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. +

+
+
+

+Next: , Previous: , Up: Shell Commands   [Contents][Index]

+
+

3.2.4 Lists of Commands

+ + +

A list is a sequence of one or more pipelines separated by one +of the operators ‘;’, ‘&’, ‘&&’, or ‘||’, +and optionally terminated by one of ‘;’, ‘&’, or a +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 +to delimit commands, equivalent to a semicolon. +

+

If a command is terminated by the control operator ‘&’, +the shell executes the command asynchronously in a subshell. +This is known as executing the command in the background, +and these are referred to as asynchronous commands. +The shell does not wait for the command to finish, and the return +status is 0 (true). +When job control is not active (see Job Control), +the standard input for asynchronous commands, in the absence of any +explicit redirections, is redirected from /dev/null. +

+

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

+

AND and OR lists are sequences of one or more pipelines +separated by the control operators ‘&&’ and ‘||’, +respectively. AND and OR lists are executed with left +associativity. +

+

An AND list has the form +

+
command1 && command2
+
+ +

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

+

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

+
+
+

+Next: , Previous: , Up: Shell Commands   [Contents][Index]

+
+

3.2.5 Compound Commands

+ + + + + + + + +

Compound commands are the shell programming language constructs. +Each construct begins with a reserved word or control operator and is +terminated by a corresponding reserved word or operator. +Any redirections (see Redirections) associated with a compound command +apply to all commands within that compound command unless explicitly overridden. +

+

In most cases a list of commands in a compound command’s description may be +separated from the rest of the command by one or more newlines, and may be +followed by a newline in place of a semicolon. +

+

Bash provides looping constructs, conditional commands, and mechanisms +to group commands and execute them as a unit. +

+
+ +

3.2.5.1 Looping Constructs

+ + +

Bash supports the following looping constructs. +

+

Note that wherever a ‘;’ appears in the description of a +command’s syntax, it may be replaced with one or more newlines. +

+
+
until
+
+ + +

The syntax of the until command is: +

+
+
until test-commands; do consequent-commands; done
+
+ +

Execute consequent-commands as long as +test-commands has an exit status which is not zero. +The return status is the exit status of the last command executed +in consequent-commands, or zero if none was executed. +

+
+
while
+
+

The syntax of the while command is: +

+
+
while test-commands; do consequent-commands; done
+
+ +

Execute consequent-commands as long as +test-commands has an exit status of zero. +The return status is the exit status of the last command executed +in consequent-commands, or zero if none was executed. +

+
+
for
+
+

The syntax of the for command is: +

+
+
for name [ [in [words …] ] ; ] do commands; done
+
+ +

Expand words (see Shell Expansions), and execute commands +once for each member +in the resultant list, with name bound to the current member. +If ‘in words’ is not present, the for command +executes the commands once for each positional parameter that is +set, as if ‘in "$@"’ had been specified +(see Special Parameters). +

+

The return status is the exit status of the last command that executes. +If there are no items in the expansion of words, no commands are +executed, and the return status is zero. +

+

An alternate form of the for command is also supported: +

+
+
for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
+
+ +

First, the arithmetic expression expr1 is evaluated according +to the rules described below (see Shell Arithmetic). +The arithmetic expression expr2 is then evaluated repeatedly +until it evaluates to zero. +Each time expr2 evaluates to a non-zero value, commands are +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 commands +that is executed, or false if any of the expressions is invalid. +

+
+ +

The break and continue builtins (see Bourne Shell Builtins) +may be used to control loop execution. +

+
+ +

3.2.5.2 Conditional Constructs

+ + +
+
if
+
+ + + + +

The syntax of the if command is: +

+
+
if test-commands; then
+  consequent-commands;
+[elif more-test-commands; then
+  more-consequents;]
+[else alternate-consequents;]
+fi
+
+ +

The test-commands list is executed, and if its return status is zero, +the consequent-commands list is executed. +If test-commands returns a non-zero status, each elif list +is executed in turn, and if its exit status is zero, +the corresponding more-consequents is executed and the +command completes. +If ‘else alternate-consequents’ is present, and +the final command in the final if or elif clause +has a non-zero exit status, then alternate-consequents is executed. +The return status is the exit status of the last command executed, or +zero if no condition tested true. +

+
+
case
+
+ + +

The syntax of the case command is: +

+
+
case word in
+    [ [(] pattern [| pattern]…) command-list ;;]…
+esac
+
+ +

case will selectively execute the command-list corresponding to +the first pattern that matches word. +The match is performed according +to the rules described below in Pattern Matching. +If the nocasematch shell option +(see the description of shopt in The Shopt Builtin) +is enabled, the match is performed without regard to the case +of alphabetic characters. +The ‘|’ is used to separate multiple patterns, and the ‘)’ +operator terminates a pattern list. +A list of patterns and an associated command-list is known +as a clause. +

+

Each clause must be terminated with ‘;;’, ‘;&’, or ‘;;&’. +The word undergoes tilde expansion, parameter expansion, command +substitution, arithmetic expansion, and quote removal +(see Shell Parameter Expansion) +before matching is +attempted. Each pattern undergoes tilde expansion, parameter +expansion, command substitution, and arithmetic expansion. +

+

There may be an arbitrary number of case clauses, each terminated +by a ‘;;’, ‘;&’, or ‘;;&’. +The first pattern that matches determines the +command-list that is executed. +It’s a common idiom to use ‘*’ as the final pattern to define the +default case, since that pattern will always match. +

+

Here is an example using case in a script that could be used to +describe one interesting feature of an animal: +

+
+
echo -n "Enter the name of an animal: "
+read ANIMAL
+echo -n "The $ANIMAL has "
+case $ANIMAL in
+  horse | dog | cat) echo -n "four";;
+  man | kangaroo ) echo -n "two";;
+  *) echo -n "an unknown number of";;
+esac
+echo " legs."
+
+ + +

If the ‘;;’ operator is used, no subsequent matches are attempted after +the first pattern match. +Using ‘;&’ in place of ‘;;’ causes execution to continue with +the command-list associated with the next clause, if any. +Using ‘;;&’ in place of ‘;;’ causes the shell to test the patterns +in the next clause, if any, and execute any associated command-list +on a successful match, +continuing the case statement execution as if the pattern list had not matched. +

+

The return status is zero if no pattern is matched. Otherwise, the +return status is the exit status of the command-list executed. +

+
+
select
+
+ +

The select construct allows the easy generation of menus. +It has almost the same syntax as the for command: +

+
+
select name [in words …]; do commands; 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 output stream, each preceded by a number. If the +‘in words’ is omitted, the positional parameters are printed, +as if ‘in "$@"’ had been specified. +The PS3 prompt is then displayed and a line is read from the +standard input. +If the line consists of a number corresponding to one of the displayed +words, then the value of name is set to that word. +If the line is empty, the words and prompt are displayed again. +If EOF is read, the select command completes. +Any other value read causes name to be set to null. +The line read is saved in the variable REPLY. +

+

The commands are executed after each selection until a +break command is executed, at which +point the select command completes. +

+

Here is an example that allows the user to pick a filename from the +current directory, and displays the name and index of the file +selected. +

+
+
select fname in *;
+do
+	echo you picked $fname \($REPLY\)
+	break;
+done
+
+ +
+
((…))
+
+
(( expression ))
+
+ +

The arithmetic expression is evaluated according to the rules +described below (see Shell Arithmetic). +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"
+
+

See Bash Builtins, for a full description of the let builtin. +

+
+
[[…]]
+
+ +
+
[[ 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 in +Bash Conditional Expressions. +Word splitting and filename 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 used with [[, the ‘<’ and ‘>’ operators sort +lexicographically using the current locale. +

+

When the ‘==’ and ‘!=’ operators are used, the string to the +right of the operator is considered a pattern and matched according +to the rules described below in Pattern Matching, +as if the extglob shell option were enabled. +The ‘=’ operator is identical to ‘==’. +If the nocasematch shell option +(see the description of shopt in The Shopt Builtin) +is enabled, the match is performed without regard to the case +of alphabetic characters. +The return value is 0 if the string matches (‘==’) or does not +match (‘!=’) the pattern, and 1 otherwise. +Any part of the pattern may be quoted to force the quoted portion +to be matched as a string. +

+

An additional binary operator, ‘=~’, is available, with the same +precedence as ‘==’ and ‘!=’. +When it is used, the string to the right of the operator is considered +a POSIX extended regular expression and matched accordingly +(using the POSIX regcomp and regexec interfaces +usually described 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 nocasematch shell option +(see the description of shopt in The Shopt Builtin) +is enabled, the match is performed without regard to the case +of alphabetic characters. +Any part of the pattern may be quoted to force the quoted portion +to be matched as a string. +Bracket expressions in regular expressions must be treated carefully, +since normal quoting characters lose their meanings between brackets. +If the pattern is stored in a shell variable, quoting the variable +expansion forces the entire pattern to be matched as a string. +

+

The pattern will match if it matches any part of the string. +Anchor the pattern using the ‘^’ and ‘$’ regular expression +operators to force it to match the entire string. +The array variable BASH_REMATCH records which parts of the string +matched the pattern. +The element of BASH_REMATCH with index 0 contains the portion of +the string matching the entire regular expression. +Substrings matched by parenthesized subexpressions within the regular +expression are saved in the remaining BASH_REMATCH indices. +The element of BASH_REMATCH with index n is the portion of the +string matching the nth parenthesized subexpression. +

+

For example, the following will match a line +(stored in the shell variable line) +if there is a sequence of characters anywhere in the value consisting of +any number, including zero, of +characters in the space character class, +zero or one instances of ‘a’, then a ‘b’: +

+
[[ $line =~ [[:space:]]*(a)?b ]]
+
+ +

That means values like ‘aab’ and ‘ aaaaaab’ will match, as +will a line containing a ‘b’ anywhere in its value. +

+

Storing the regular expression in a shell variable is often a useful +way to avoid problems with quoting characters that are special to the +shell. +It is sometimes difficult to specify a regular expression literally +without using quotes, or to keep track of the quoting used by regular +expressions while paying attention to the shell’s quote removal. +Using a shell variable to store the pattern decreases these problems. +For example, the following is equivalent to the above: +

+
pattern='[[:space:]]*(a)?b'
+[[ $line =~ $pattern ]]
+
+ +

If you want to match a character that’s special to the regular expression +grammar, it has to be quoted to remove its special meaning. +This means that in the pattern ‘xxx.txt’, the ‘.’ matches any +character in the string (its usual regular expression meaning), but in the +pattern ‘"xxx.txt"’ it can only match a literal ‘.’. +Shell programmers should take special care with backslashes, since backslashes +are used both by the shell and regular expressions to remove the special +meaning from the following character. +The following two sets of commands are not equivalent: +

+
pattern='\.'
+
+[[ . =~ $pattern ]]
+[[ . =~ \. ]]
+
+[[ . =~ "$pattern" ]]
+[[ . =~ '\.' ]]
+
+ +

The first two matches will succeed, but the second two will not, because +in the second two the backslash will be part of the pattern to be matched. +In the first two examples, the backslash removes the special meaning from +‘.’, so the literal ‘.’ matches. +If the string in the first examples were anything other than ‘.’, say +‘a’, the pattern would not match, because the quoted ‘.’ in the +pattern loses its special meaning of matching any single character. +

+

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

+
+ +
+ +

3.2.5.3 Grouping Commands

+ + +

Bash provides two ways to group a list of commands to be executed +as a unit. When commands are grouped, redirections may be applied +to the entire command list. For example, the output of all the +commands in the list may be redirected to a single stream. +

+
+
()
+
+
( list )
+
+ +

Placing a list of commands between parentheses causes a subshell +environment to be created (see Command Execution Environment), and each +of the commands in list to be executed in that subshell. Since the +list is executed in a subshell, variable assignments do not remain in +effect after the subshell completes. +

+
+
{}
+
+ +
+
{ list; }
+
+ +

Placing a list of commands between curly braces causes the list to +be executed in the current shell context. No subshell is created. +The semicolon (or newline) following list is required. +

+
+ +

In addition to the creation of a subshell, there is a subtle difference +between these two constructs due to historical reasons. The braces +are reserved words, so they must be separated from the list +by blanks or other shell metacharacters. +The parentheses are operators, and are +recognized as separate tokens by the shell even if they are not separated +from the list by whitespace. +

+

The exit status of both of these constructs is the exit status of +list. +

+
+
+

+Next: , Previous: , Up: Shell Commands   [Contents][Index]

+
+

3.2.6 Coprocesses

+ + +

A coprocess is a shell command preceded by the coproc +reserved word. +A coprocess is executed asynchronously in a subshell, as if the command +had been terminated with the ‘&’ control operator, with a two-way pipe +established between the executing shell and the coprocess. +

+

The format for a coprocess is: +

+
coproc [NAME] command [redirections]
+
+ +

This creates a coprocess named NAME. +If NAME is not supplied, the default name is COPROC. +NAME must not be supplied if command is a simple +command (see Simple Commands); otherwise, it is interpreted as +the first word of the simple command. +

+

When the coprocess is executed, the shell creates an array variable +(see Arrays) +named NAME in the context of the executing shell. +The standard output of command +is connected via a pipe to a file descriptor in the executing shell, +and that file descriptor is assigned to NAME[0]. +The standard input of command +is connected via a pipe to a file descriptor in the executing shell, +and that file descriptor is assigned to NAME[1]. +This pipe is established before any redirections specified by the +command (see Redirections). +The file descriptors can be utilized as arguments to shell commands +and redirections using standard word expansions. +Other than those created to execute command and process substitutions, +the file descriptors are not available in subshells. +

+

The process ID of the shell spawned to execute the coprocess is +available as the value of the variable NAME_PID. +The wait +builtin command may be used to wait for the coprocess to terminate. +

+

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

+
+
+

+Previous: , Up: Shell Commands   [Contents][Index]

+
+

3.2.7 GNU Parallel

+ +

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

+

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

+

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

+

For example, it is easy to replace xargs to gzip all html files in the +current directory and its subdirectories: +

+
find . -type f -name '*.html' -print | parallel gzip
+
+

If you need to protect special characters such as newlines in file names, +use find’s -print0 option and parallel’s -0 option. +

+

You can use Parallel to move files from the current directory when the +number of files is too large to process with one mv invocation: +

+
printf '%s\n' * | parallel mv {} destdir
+
+ +

As you can see, the {} is replaced with each line read from standard input. +While using ls will work in most instances, it is not sufficient to +deal with all filenames. printf is a shell builtin, and therefore is +not subject to the kernel’s limit on the number of arguments to a program, +so you can use ‘*’ (but see below about the dotglob shell option). +If you need to accommodate special characters in filenames, you can use +

+
+
printf '%s\0' * | parallel -0 mv {} destdir
+
+ +

as alluded to above. +

+

This will run as many mv commands as there are files in the current +directory. +You can emulate a parallel xargs by adding the -X option: +

+
printf '%s\0' * | parallel -0 -X mv {} destdir
+
+ +

(You may have to modify the pattern if you have the dotglob option +enabled.) +

+

GNU Parallel can replace certain common idioms that operate on lines read +from a file (in this case, filenames listed one per line): +

+
	while IFS= read -r x; do
+		do-something1 "$x" "config-$x"
+		do-something2 < "$x"
+	done < file | process-output
+
+ +

with a more compact syntax reminiscent of lambdas: +

+
cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" |
+           process-output
+
+ +

Parallel provides a built-in mechanism to remove filename extensions, which +lends itself to batch file transformations or renaming: +

+
ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}"
+
+

This will recompress all files in the current directory with names ending +in .gz using bzip2, running one job per CPU (-j+0) in parallel. +(We use ls for brevity here; using find as above is more +robust in the face of filenames containing unexpected characters.) +Parallel can take arguments from the command line; the above can also be +written as +

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

If a command generates output, you may want to preserve the input order in +the output. For instance, the following command +

+
{
+    echo foss.org.my ;
+    echo debian.org ;
+    echo freenetproject.org ;
+} | parallel traceroute
+
+

will display as output the traceroute invocation that finishes first. +Adding the -k option +

+
{
+    echo foss.org.my ;
+    echo debian.org ;
+    echo freenetproject.org ;
+} | parallel -k traceroute
+
+

will ensure that the output of traceroute foss.org.my is displayed first. +

+

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

+
+
parallel -j 10 < file
+
+ +

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

+
+ +

3.3 Shell Functions

+ + + +

Shell functions are a way to group commands for later execution +using a single name for the group. They are executed just like +a "regular" command. +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. +Shell functions are executed in the current +shell context; no new process is created to interpret them. +

+

Functions are declared using this syntax: + +

+
fname () compound-command [ redirections ]
+
+ +

or +

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

This defines a shell function named fname. 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). +That command is usually a list enclosed between { and }, but +may be any compound command listed above, +with one exception: If the function reserved word is used, but the +parentheses are not supplied, the braces are required. +compound-command is executed whenever fname is specified as the +name of a command. +When the shell is in POSIX mode (see Bash POSIX Mode), +fname must be a valid shell name and +may not be the same as one of the special builtins +(see Special Builtins). +In default mode, a function name can be any unquoted shell word that does +not contain ‘$’. +Any redirections (see Redirections) associated with the shell function +are performed when the function is executed. +A function definition may be deleted using the -f option to the +unset builtin (see Bourne Shell Builtins). +

+

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

+

Note that for historical reasons, in the most common usage the curly braces +that surround the body of the function must be separated from the body by +blanks or newlines. +This is because the braces are reserved words and are only recognized +as such when they are separated from the command list +by whitespace or another shell metacharacter. +Also, when using the braces, the list must be terminated by a semicolon, +a ‘&’, or a newline. +

+

When a function is executed, the arguments to the +function become the positional parameters +during its execution (see Positional Parameters). +The special parameter ‘#’ that expands to the number of +positional parameters 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 these exceptions: +the DEBUG and RETURN traps +are not inherited unless the function has been given the +trace attribute using the declare builtin or +the -o functrace option has been enabled with +the set builtin, +(in which case all functions inherit the DEBUG and RETURN traps), +and the ERR trap is not inherited unless the -o errtrace +shell option has been enabled. +See Bourne Shell Builtins, for the description of the +trap builtin. +

+

The FUNCNEST variable, if set to a numeric value greater +than 0, defines a maximum function nesting level. Function +invocations that exceed the limit cause the entire command to +abort. +

+

If the builtin command 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. If a numeric argument is given to return, +that is the function’s return status; otherwise the function’s +return status is the exit status of the last command executed +before the return. +

+

Variables local to the function may be declared with the +local builtin. These variables are visible only to +the function and the commands it invokes. This is particularly +important when a shell function calls other functions. +

+

Local variables "shadow" variables with the same name declared at +previous scopes. For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. +

+

The shell uses dynamic scoping to control a variable’s visibility +within functions. +With dynamic scoping, visible variables and their values +are a result of the sequence of function calls that caused execution +to reach the current function. +The value of a variable that a function sees depends +on its value within its caller, if any, whether that caller is +the "global" scope or another shell function. +This is also the value that a local variable +declaration "shadows", and the value that is restored when the function +returns. +

+

For example, if a variable var is declared as local in function +func1, and func1 calls another function func2, +references to var made from within func2 will resolve to the +local variable var from func1, shadowing any global variable +named var. +

+

The following script demonstrates this behavior. +When executed, the script displays +

+
+
In func2, var = func1 local
+
+ +
+
func1()
+{
+    local var='func1 local'
+    func2
+}
+
+func2()
+{
+    echo "In func2, var = $var"
+}
+
+var=global
+func1
+
+ +

The unset builtin also acts using the same dynamic scope: if a +variable is local to the current scope, unset will unset it; +otherwise the unset will refer to the variable found in any calling scope +as described above. +If a variable at the current local scope is unset, it will remain so +until it is reset in that scope or until the function returns. +Once the function returns, any instance of the variable at a previous +scope will become visible. +If the unset acts on a variable at a previous scope, any instance of a +variable with that name that had been shadowed will become visible. +

+

Function names and definitions may be listed with the +-f option to the declare (typeset) +builtin command (see Bash Builtins). +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 +(see Bourne Shell Builtins). +

+

Functions may be recursive. +The FUNCNEST variable may be used to limit the depth of the +function call stack and restrict the number of function invocations. +By default, no limit is placed on the number of recursive calls. +

+
+ +

3.4 Shell Parameters

+ + + + + + + + + +

A parameter is an entity that stores values. +It can be a name, a number, or one of the special characters +listed below. +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 the description of the declare builtin in Bash Builtins). +

+

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

+

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 (detailed 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). +Word splitting is not performed, with the exception +of "$@" as explained below. +Filename expansion is not performed. +Assignment statements may also appear as arguments to the +alias, +declare, typeset, export, readonly, +and local builtin commands (declaration commands). +When in POSIX mode (see Bash POSIX Mode), these builtins may appear +in a command after one or more instances of the command builtin +and retain these assignment statement properties. +

+

In the context where an assignment statement is assigning a value +to a shell variable or array index (see Arrays), the ‘+=’ +operator can be used to +append to or add to the variable’s previous value. +This includes arguments to builtin commands such as declare that +accept assignment statements (declaration commands). +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), the +variable’s value is not unset (as it is when using ‘=’), and new +values are appended to the array beginning at one greater than the array’s +maximum index (for indexed arrays), or added as additional key-value pairs +in an associative array. +When applied to a string-valued variable, value is expanded and +appended to the variable’s value. +

+

A variable can be assigned the nameref attribute using the +-n option to the declare or local builtin commands +(see Bash Builtins) +to create a nameref, or a reference to another variable. +This allows variables to be manipulated indirectly. +Whenever the nameref variable is referenced, assigned to, unset, or has +its attributes modified (other than using or changing the nameref +attribute itself), the +operation is actually performed on the variable specified by the nameref +variable’s value. +A nameref is commonly used within shell functions to refer to a variable +whose name is passed as an argument to the function. +For instance, if a variable name is passed to a shell function as its first +argument, running +

+
declare -n ref=$1
+
+

inside the function creates a nameref variable ref whose value is +the variable name passed as the first argument. +References and assignments to ref, and changes to its attributes, +are treated as references, assignments, and attribute modifications +to the variable whose name was passed as $1. +

+

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

+
+ +

3.4.1 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 parameter N may be referenced as ${N}, or +as $N when N consists of a single digit. +Positional parameters may not be assigned to with assignment statements. +The set and shift builtins are used to set and +unset them (see Shell Builtin Commands). +The positional parameters are +temporarily replaced when a shell function is executed +(see Shell Functions). +

+

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

+
+ +

3.4.2 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 is not within double quotes, each positional parameter +expands to a separate word. +In contexts where it is performed, those words +are subject to further word splitting and filename expansion. +When the expansion occurs within double quotes, it expands to a single word +with the value of each parameter separated by the first character of the +IFS special variable. That is, "$*" is equivalent +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. +In contexts where word splitting is performed, this expands each +positional parameter to a separate word; if not within double +quotes, these words are subject to word splitting. +In contexts where word splitting is not performed, +this expands to a single word +with each positional parameter separated by a space. +When the +expansion occurs within double quotes, and word splitting is performed, +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 exit status of the most recently executed foreground +pipeline. +

+
+
- + +
+
+

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

+
+
$ + +
+
+

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

+
+
! + +
+
+

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

+
+
0 + +
+
+

($0) Expands to the name of the shell or shell script. This is set at +shell initialization. If Bash is invoked with a file of commands +(see Shell Scripts), $0 is set to the name of that file. +If Bash is started with the -c option (see Invoking Bash), +then $0 is set to the first argument after the string to be +executed, if one is present. Otherwise, it is set +to the filename used to invoke Bash, as given by argument zero. +

+
+ +
+ +

3.5 Shell Expansions

+ + +

Expansion is performed on the command line after it has been split into +tokens. There are seven kinds of expansion performed: +

+
    +
  • brace expansion +
  • tilde expansion +
  • parameter and variable expansion +
  • command substitution +
  • arithmetic expansion +
  • word splitting +
  • filename expansion +
+ + + + + + + + + + + + + +

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

+

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

+

After these expansions are performed, quote characters present in the +original word are removed unless they have been quoted themselves +(quote removal). +

+

Only brace expansion, word splitting, and filename expansion +can increase 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 $* (see Special Parameters), and +"${name[@]}" and ${name[*]} +(see Arrays). +

+

After all expansions, quote removal (see Quote Removal) +is performed. +

+
+ +

3.5.1 Brace Expansion

+ + + +

Brace expansion is a mechanism by which arbitrary strings may be generated. +This mechanism is similar to +filename expansion (see Filename 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, +

+
bash$ echo a{d,c,b}e
+ade ace abe
+
+ +

A sequence expression takes the form {x..y[..incr]}, +where x and y are either integers or single characters, +and incr, an optional increment, is an integer. +When integers are supplied, the expression expands to each number between +x and y, inclusive. +Supplied integers may be prefixed with ‘0’ to force each term to have the +same width. +When either x or y begins with a zero, the shell +attempts to force all generated terms to contain the same number of digits, +zero-padding where necessary. +When characters are supplied, the expression expands to each character +lexicographically between x and y, inclusive, +using the default C locale. +Note that both x and y must be of the same type. +When the increment is supplied, it is used as the difference between +each term. The default increment is 1 or -1 as appropriate. +

+

Brace expansion is performed before any other expansions, +and any 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, +and inhibits brace expansion until the closing ‘}’. +

+

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

3.5.2 Tilde Expansion

+ + + +

If a word begins with an unquoted tilde character (‘~’), all of the +characters up to 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 HOME shell variable. +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 ‘~+’, the value of +the shell variable PWD replaces the tilde-prefix. +If the tilde-prefix is ‘~-’, 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 characters following tilde +in the tilde-prefix as an argument (see The Directory Stack). +If the tilde-prefix, sans the tilde, consists of a number without a +leading ‘+’ or ‘-’, ‘+’ is assumed. +

+

If the login name is invalid, or the tilde expansion fails, the word is +left 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 filenames with tildes in assignments to +PATH, MAILPATH, and CDPATH, +and the shell assigns the expanded value. +

+

The following table shows how Bash treats unquoted tilde-prefixes: +

+
+
~
+

The value of $HOME +

+
~/foo
+

$HOME/foo +

+
+
~fred/foo
+

The subdirectory foo of the home directory of the user +fred +

+
+
~+/foo
+

$PWD/foo +

+
+
~-/foo
+

${OLDPWD-'~-'}/foo +

+
+
~N
+

The string that would be displayed by ‘dirs +N’ +

+
+
~+N
+

The string that would be displayed by ‘dirs +N’ +

+
+
~-N
+

The string that would be displayed by ‘dirs -N’ +

+
+ +

Bash also performs tilde expansion on words satisfying the conditions of +variable assignments (see Shell Parameters) +when they appear as arguments to simple commands. +Bash does not do this, except for the declaration commands listed +above, when in POSIX mode. +

+
+ +

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

+

The basic form of parameter expansion is ${parameter}. +The value of parameter is substituted. +The parameter is a shell parameter as described above +(see Shell Parameters) or an array reference (see Arrays). +The braces are required when parameter +is a positional parameter with more than one digit, +or when parameter is followed by a character that is not to be +interpreted as part of its name. +

+

If the first character of parameter is an exclamation point (!), +and parameter is not a nameref, +it introduces a level of indirection. +Bash uses the value formed by expanding the rest of +parameter as the new parameter; this is then +expanded and that value is used in the rest of the expansion, rather +than the expansion of the original parameter. +This is known as indirect expansion. +The value is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. +If parameter is a nameref, this expands to the name of the +variable referenced by parameter instead of performing the +complete 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, using the form described +below (e.g., ‘:-’), Bash tests for a parameter that is unset or null. +Omitting the colon results in a test only for a parameter that is unset. +Put another way, if the colon is included, +the operator tests for both parameter’s existence and that its value +is not null; if the colon is omitted, the operator tests only for existence. +

+
+
${parameter:-word}
+

If parameter is unset or null, the expansion of +word is substituted. Otherwise, the value of +parameter is substituted. +

+
+
${parameter:=word}
+

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

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

If parameter +is null or unset, nothing is substituted, otherwise the expansion of +word is substituted. +

+
+
${parameter:offset}
+
${parameter:offset:length}
+

This is referred to as Substring Expansion. +It expands to up to length characters of the value of parameter +starting at the character specified by offset. +If parameter is ‘@’, an indexed array subscripted by +‘@’ or ‘*’, or an associative array name, the results differ as +described below. +If length is omitted, it expands to the substring of the value of +parameter starting at the character specified by offset +and extending to the end of the value. +length and offset are arithmetic expressions +(see Shell Arithmetic). +

+

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

+

Here are some examples illustrating substring expansion on parameters and +subscripted arrays: +

+
$ string=01234567890abcdefgh
+$ echo ${string:7}
+7890abcdefgh
+$ echo ${string:7:0}
+
+$ echo ${string:7:2}
+78
+$ echo ${string:7:-2}
+7890abcdef
+$ echo ${string: -7}
+bcdefgh
+$ echo ${string: -7:0}
+
+$ echo ${string: -7:2}
+bc
+$ echo ${string: -7:-2}
+bcdef
+$ set -- 01234567890abcdefgh
+$ echo ${1:7}
+7890abcdefgh
+$ echo ${1:7:0}
+
+$ echo ${1:7:2}
+78
+$ echo ${1:7:-2}
+7890abcdef
+$ echo ${1: -7}
+bcdefgh
+$ echo ${1: -7:0}
+
+$ echo ${1: -7:2}
+bc
+$ echo ${1: -7:-2}
+bcdef
+$ array[0]=01234567890abcdefgh
+$ echo ${array[0]:7}
+7890abcdefgh
+$ echo ${array[0]:7:0}
+
+$ echo ${array[0]:7:2}
+78
+$ echo ${array[0]:7:-2}
+7890abcdef
+$ echo ${array[0]: -7}
+bcdefgh
+$ echo ${array[0]: -7:0}
+
+$ echo ${array[0]: -7:2}
+bc
+$ echo ${array[0]: -7:-2}
+bcdef
+
+

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

+

The following examples illustrate substring expansion using positional +parameters: +

+
$ set -- 1 2 3 4 5 6 7 8 9 0 a b c d e f g h
+$ echo ${@:7}
+7 8 9 0 a b c d e f g h
+$ echo ${@:7:0}
+
+$ echo ${@:7:2}
+7 8
+$ echo ${@:7:-2}
+bash: -2: substring expression < 0
+$ echo ${@: -7:2}
+b c
+$ echo ${@:0}
+./bash 1 2 3 4 5 6 7 8 9 0 a b c d e f g h
+$ echo ${@:0:2}
+./bash 1
+$ echo ${@: -7:0}
+
+
+

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

+

These examples show how you can use substring expansion with indexed +arrays: +

+
$ array=(0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h)
+$ echo ${array[@]:7}
+7 8 9 0 a b c d e f g h
+$ echo ${array[@]:7:2}
+7 8
+$ echo ${array[@]: -7:2}
+b c
+$ echo ${array[@]: -7:-2}
+bash: -2: substring expression < 0
+$ echo ${array[@]:0}
+0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h
+$ echo ${array[@]:0:2}
+0 1
+$ echo ${array[@]: -7:0}
+
+
+

Substring expansion applied to an associative array produces undefined +results. +

+

Substring indexing is zero-based unless the positional parameters +are used, in which case the indexing starts at 1 by default. +If offset is 0, and the positional parameters are used, $0 is +prefixed to the list. +

+
+
${!prefix*}
+
${!prefix@}
+

Expands to the names of variables whose names begin with prefix, +separated by the first character of the IFS special variable. +When ‘@’ is used and the expansion appears within double quotes, each +variable name expands to a separate word. +

+
+
${!name[@]}
+
${!name[*]}
+

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 expanded 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. +If parameter +is an indexed array name subscripted by a negative number, that number is +interpreted as relative to one greater than the maximum index of +parameter, so negative indices count back from the end of the +array, and an index of -1 references the last element. +

+
+
${parameter#word}
+
${parameter##word}
+

The word +is expanded to produce a pattern and matched according to the rules +described below (see Pattern Matching). If the pattern matches +the beginning 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%word}
+
${parameter%%word}
+

The word +is expanded to produce a pattern and matched according to the rules +described below (see Pattern Matching). +If the pattern matches a trailing portion of the expanded value of +parameter, then the result of the expansion is the 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 +filename expansion. +Parameter is expanded and the longest match of pattern +against its value is replaced with string. +The match is performed according to the rules described below +(see Pattern Matching). +If pattern 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 the nocasematch shell option +(see the description of shopt in The Shopt Builtin) +is enabled, the match is performed without regard to the case +of alphabetic characters. +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. +

+
+
${parameter^pattern}
+
${parameter^^pattern}
+
${parameter,pattern}
+
${parameter,,pattern}
+

This expansion modifies the case of alphabetic characters in parameter. +The pattern is expanded to produce a pattern just as in +filename expansion. +Each character in the expanded value of parameter is tested against +pattern, and, if it matches the pattern, its case is converted. +The pattern should not attempt to match more than one character. +The ‘^’ operator converts lowercase letters matching pattern +to uppercase; the ‘,’ operator converts matching uppercase letters +to lowercase. +The ‘^^’ and ‘,,’ expansions convert each matched character in the +expanded value; the ‘^’ and ‘,’ expansions match and convert only +the first character in the expanded value. +If pattern is omitted, it is treated like a ‘?’, which matches +every character. +If parameter is ‘@’ or ‘*’, +the case modification 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 case modification operation is applied to each member of the +array in turn, and the expansion is the resultant list. +

+
+
${parameter@operator}
+

The expansion is either a transformation of the value of parameter +or information about parameter itself, depending on the value of +operator. Each operator is a single letter: +

+
+
U
+

The expansion is a string that is the value of parameter with lowercase +alphabetic characters converted to uppercase. +

+
u
+

The expansion is a string that is the value of parameter with the first +character converted to uppercase, if it is alphabetic. +

+
L
+

The expansion is a string that is the value of parameter with uppercase +alphabetic characters converted to lowercase. +

+
Q
+

The expansion is a string that is the value of parameter quoted in a +format that can be reused as input. +

+
E
+

The expansion is a string that is the value of parameter with backslash +escape sequences expanded as with the $'…' quoting mechanism. +

+
P
+

The expansion is a string that is the result of expanding the value of +parameter as if it were a prompt string (see Controlling the Prompt). +

+
A
+

The expansion is a string in the form of +an assignment statement or declare command that, if +evaluated, will recreate parameter with its attributes and value. +

+
K
+

Produces a possibly-quoted version of the value of parameter, +except that it prints the values of +indexed and associative arrays as a sequence of quoted key-value pairs +(see Arrays). +

+
a
+

The expansion is a string consisting of flag values representing +parameter’s attributes. +

+
+ +

If parameter is ‘@’ or ‘*’, +the 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 operation is applied to each member of the +array in turn, and the expansion is the resultant list. +

+

The result of the expansion is subject to word splitting and filename +expansion as described below. +

+
+ +
+ +

3.5.4 Command Substitution

+ + +

Command substitution allows the output of a command to replace +the command itself. +Command substitution occurs when a command is enclosed as follows: +

+
$(command)
+
+

or +

+
`command`
+
+ +

Bash performs the expansion by executing command in a subshell environment +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 +filename expansion are not performed on the results. +

+
+ +

3.5.5 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 and variable expansion, +command substitution, and quote removal. +The result is treated as the arithmetic expression to be evaluated. +Arithmetic expansions may be nested. +

+

The evaluation is performed according to the rules listed below +(see Shell Arithmetic). +If the expression is invalid, Bash prints a message indicating +failure to the standard error and no substitution occurs. +

+
+ +

3.5.6 Process Substitution

+ + +

Process substitution allows a process’s input or output to be +referred to using a filename. +It takes the form of +

+
<(list)
+
+

or +

+
>(list)
+
+

The process list is run asynchronously, and its input or output +appears as a filename. +This filename 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. +Note that no space may appear between the < or > +and the left parenthesis, otherwise the construct would be interpreted +as a redirection. +Process substitution is supported on systems that support named +pipes (FIFOs) or the /dev/fd method of naming open files. +

+

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

+
+ +

3.5.7 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 using these characters +as field terminators. +If IFS is unset, or its value is exactly <space><tab><newline>, +the default, then sequences of + <space>, <tab>, and <newline> +at the beginning and end of the results of the previous +expansions are ignored, and any sequence of IFS +characters not at the beginning or end serves to delimit words. +If IFS has a value other than the default, then sequences of +the whitespace characters space, tab, and newline +are ignored at the beginning and end of the +word, as long as the whitespace character is in the +value of IFS (an IFS whitespace character). +Any character in IFS that is not IFS +whitespace, along with any adjacent IFS +whitespace characters, delimits a field. A sequence of IFS +whitespace characters is also treated as a delimiter. +If the value of IFS is null, no word splitting occurs. +

+

Explicit null arguments ("" or '') are retained +and passed to commands as empty strings. +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 +and passed to a command as an empty string. +When a quoted null argument appears as part of a word whose expansion is +non-null, the null argument is removed. +That is, the word +-d'' becomes -d after word splitting and +null argument removal. +

+

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

+
+
+

+Next: , Previous: , Up: Shell Expansions   [Contents][Index]

+
+

3.5.8 Filename Expansion

+ + + + + + + + +

After word splitting, unless the -f option has been set +(see The Set Builtin), Bash scans each word for the characters +‘*’, ‘?’, and ‘[’. +If one of these characters appears, and is not quoted, then the word is +regarded as a pattern, +and replaced with an alphabetically sorted list of +filenames matching the pattern (see Pattern Matching). +If no matching filenames 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 filename expansion, the character ‘.’ +at the start of a filename or immediately following a slash +must be matched explicitly, unless the shell option dotglob is set. +The filenames ‘.’ and ‘..’ must always be matched explicitly, +even if dotglob is set. +In other cases, the ‘.’ character is not treated specially. +

+

When matching a filename, the slash character must always be +matched explicitly by a slash in the pattern, but in other matching +contexts it can be matched by a special pattern character as described +below (see Pattern Matching). +

+

See the description of shopt in The Shopt Builtin, +for a description of the nocaseglob, nullglob, +failglob, and dotglob 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. +If the nocaseglob option is set, the matching against the patterns in +GLOBIGNORE is performed without regard to case. +The filenames +. 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 filenames beginning with a +‘.’ will match. +To get the old behavior of ignoring filenames beginning with a +‘.’, make ‘.*’ one of the patterns in GLOBIGNORE. +The dotglob option is disabled when GLOBIGNORE +is unset. +

+
+ +

3.5.8.1 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. +When the globstar shell option is enabled, and ‘*’ is used in +a filename expansion context, two adjacent ‘*’s used as a single +pattern will match all files and zero or more directories and +subdirectories. +If followed by a ‘/’, two adjacent ‘*’s will match only +directories and subdirectories. +

+
?
+

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 falls 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. 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. +The sorting order of characters in range expressions is determined by +the current locale and the values of the +LC_COLLATE and LC_ALL shell variables, if set. +

+

For example, in the default C locale, ‘[a-dx-z]’ is equivalent to +‘[abcdxyz]’. Many locales sort characters in dictionary order, and in +these locales ‘[a-dx-z]’ is typically not equivalent to ‘[abcdxyz]’; +it might be equivalent to ‘[aBbCcDdxXyYz]’, for example. To obtain +the traditional interpretation of ranges in bracket expressions, you can +force the use of the C locale by setting the LC_COLLATE or +LC_ALL environment variable to the value ‘C’, or enable the +globasciiranges shell option. +

+

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

+
+ +

Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. +Using separate matches against shorter strings, or using arrays of +strings instead of a single long string, may be faster. +

+
+ +

3.5.9 Quote Removal

+ +

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

+
+ +

3.6 Redirections

+ + +

Before a command is executed, its input and output +may be redirected +using a special notation interpreted by the shell. +Redirection allows commands’ file handles to be +duplicated, opened, closed, +made to refer to different files, +and can change the files the command reads from and writes to. +Redirection may also be used to modify file handles in the +current shell execution environment. The following redirection +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. +

+

Each redirection that may be preceded by a file descriptor number +may instead be preceded by a word of the form {varname}. +In this case, for each redirection operator except +>&- and <&-, the shell will allocate a file descriptor greater +than 10 and assign it to {varname}. If >&- or <&- is preceded +by {varname}, the value of varname defines the file +descriptor to close. +If {varname} is supplied, the redirection persists beyond +the scope of the command, allowing the shell programmer to manage +the file descriptor’s lifetime manually. +

+

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, filename 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 (file descriptor 1) and standard error +(file descriptor 2) to the file dirlist, while the command +

+
ls 2>&1 > dirlist
+
+

directs only the standard output to file dirlist, +because the standard error was made a copy of the 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. +If the operating system on which Bash is running provides these +special files, bash will use them; otherwise it will emulate them +internally with the behavior described below. +

+
+
/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 +the corresponding TCP socket. +

+
+
/dev/udp/host/port
+

If host is a valid hostname or Internet address, and port +is an integer port number or service name, Bash attempts to open +the corresponding UDP socket. +

+
+ +

A failure to open or create a file causes the redirection to fail. +

+

Redirections using file descriptors greater than 9 should be used with +care, as they may conflict with file descriptors the shell uses +internally. +

+

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

3.6.2 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 is not enabled, the redirection +is attempted even if the file named by word exists. +

+

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

3.6.4 Redirecting Standard Output and Standard Error

+

This construct allows both the +standard output (file descriptor 1) and +the standard error output (file descriptor 2) +to be redirected to the file whose name is the +expansion of word. +

+

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

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

+

3.6.5 Appending Standard Output and Standard Error

+

This construct allows both the +standard output (file descriptor 1) and +the standard error output (file descriptor 2) +to be appended to the file whose name is the +expansion of word. +

+

The format for appending standard output and standard error is: +

+
&>>word
+
+

This is semantically equivalent to +

+
>>word 2>&1
+
+

(see Duplicating File Descriptors below). +

+

3.6.6 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 (or file descriptor n if n is specified) for a command. +

+

The format of here-documents is: +

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

No parameter and variable expansion, command substitution, +arithmetic expansion, or filename expansion is performed on +word. If any part of word is 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, +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. +

+

3.6.7 Here Strings

+

A variant of here documents, the format is: +

+
[n]<<< word
+
+ +

The word undergoes +tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote removal. +Filename expansion and word splitting are not performed. +The result is supplied as a single string, +with a newline appended, +to the command on its +standard input (or file descriptor n if n is specified). +

+

3.6.8 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. +If word +evaluates to ‘-’, file descriptor n is closed. +As a special case, if n is omitted, and word does not +expand to one or more digits or ‘-’, the standard output and standard +error are redirected as described previously. +

+

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

+

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

+
+ +

3.7 Executing Commands

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

3.7.1 Simple Command Expansion

+ + +

When a simple command is executed, the shell performs the following +expansions, assignments, and redirections, from left to right, in +the following order. +

+
    +
  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 (see Shell Expansions). +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 (see Redirections). + +
  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. +

+
+ +

3.7.2 Command Search and 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. +

+
    +
  1. 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 in Shell Functions. + +
  2. 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. + +
  3. If the name is neither a shell function nor a builtin, +and contains no slashes, Bash searches each element of +$PATH for a directory containing an executable file +by that name. Bash uses a hash table to remember the full +pathnames of executable files to avoid multiple PATH searches +(see the description of hash in Bourne Shell Builtins). +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 searches for a defined shell +function named command_not_found_handle. +If that function exists, it is invoked in a separate execution environment +with the original command and +the original command’s arguments as its arguments, and the function’s +exit status becomes the exit status of that subshell. +If that function is not defined, the shell prints an error +message and returns an exit status of 127. + +
  4. 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 supplied, if any. + +
  5. 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 and the shell executes it as described in +Shell Scripts. + +
  6. If the command was not begun asynchronously, the shell waits for +the command to complete and collects its exit status. + +
+ +
+ +

3.7.3 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 (see The Shopt Builtin) + +
  • shell aliases defined with alias (see Aliases) + +
  • various process IDs, including those of background jobs +(see Lists), 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 (see 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. +

+

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

+

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

+
+ +

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

+

Bash 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 and ‘export -n’ +commands, 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 in Shell Parameters. +These assignment statements affect only the environment seen +by that command. +

+

If the -k option is set (see The Set Builtin), 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 pathname of the command and passed to that +command in its environment. +

+
+
+

+Next: , Previous: , Up: Executing Commands   [Contents][Index]

+
+

3.7.5 Exit Status

+ + +

The exit status of an executed command is the value returned by the +waitpid system call or equivalent function. Exit statuses +fall between 0 and 255, though, as explained below, the shell may +use values above 125 specially. Exit statuses from shell builtins and +compound commands are also limited to this range. Under certain +circumstances, the shell will use special values to indicate specific +failure modes. +

+

For the shell’s purposes, a command which exits with a +zero exit status has succeeded. +A non-zero exit status indicates failure. +This seemingly counter-intuitive scheme is used so there +is one well-defined way to indicate success and a variety of +ways to indicate various failure modes. +When a command terminates on a fatal signal whose number is N, +Bash uses the value 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. +

+

The exit status is used by the Bash conditional commands +(see Conditional Constructs) and some of the list +constructs (see Lists). +

+

All of the Bash builtins return an exit status of zero if they succeed +and a non-zero status on failure, so they may be used by the +conditional and list constructs. +All builtins return an exit status of 2 to indicate incorrect usage, +generally invalid options or missing arguments. +

+
+
+

+Previous: , Up: Executing Commands   [Contents][Index]

+
+

3.7.6 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). +When Bash receives a SIGINT, it breaks out of any executing loops. +In all cases, Bash ignores SIGQUIT. +If job control is in effect (see Job Control), Bash +ignores SIGTTIN, SIGTTOU, and SIGTSTP. +

+

Non-builtin commands started 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 SIGHUP signal to a +particular job, it should be removed +from the jobs table with the disown +builtin (see Job Control Builtins) or marked +to not receive SIGHUP using disown -h. +

+

If the huponexit shell option has been set with shopt +(see The Shopt Builtin), 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. +

+
+ +

3.8 Shell Scripts

+ + +

A shell script is a text file containing shell commands. When such +a file is used as the first non-option argument when invoking Bash, +and neither the -c nor -s option is supplied +(see Invoking Bash), +Bash reads and executes commands from the file, then exits. This +mode of operation creates a non-interactive shell. The shell first +searches for the file in the current directory, and looks in the +directories in $PATH if not found there. +

+

When Bash runs +a shell script, it sets the special parameter 0 to the name +of the file, rather than the name of the shell, and the positional +parameters are set to the remaining arguments, if any are given. +If no additional arguments are supplied, the positional parameters +are unset. +

+

A shell script may be made executable by using the chmod command +to turn on the execute bit. When Bash finds such a file while +searching the $PATH for a command, it spawns a subshell to +execute it. In other words, executing +

+
filename arguments
+
+

is equivalent to executing +

+
bash filename arguments
+
+ +

if filename is an executable shell script. +This subshell reinitializes itself, so that the effect is as if a +new shell had been invoked to interpret the script, with the +exception that the locations of commands remembered by the parent +(see the description of hash in Bourne Shell Builtins) +are retained by the child. +

+

Most versions of Unix make this a part of the operating system’s command +execution mechanism. If the first line of a script begins with +the two characters ‘#!’, the remainder of the line specifies +an interpreter for the program and, depending on the operating system, one +or more optional arguments for that interpreter. +Thus, you can specify Bash, awk, Perl, or some other +interpreter and write the rest of the script file in that language. +

+

The arguments to the interpreter +consist of one or more optional arguments following the interpreter +name on the first line of the script file, followed by the name of +the script file, followed by the rest of the arguments supplied to the +script. +The details of how the interpreter line is split into an interpreter name +and a set of arguments vary across systems. +Bash will perform this action on operating systems that do not handle it +themselves. +Note that some older versions of Unix limit the interpreter +name and a single argument to a maximum of 32 characters, so it’s not +portable to assume that using more than one argument will work. +

+

Bash scripts often begin with #! /bin/bash (assuming that +Bash has been installed in /bin), since this ensures that +Bash will be used to interpret the script, even if it is executed +under another shell. It’s a common idiom to use env to find +bash even if it’s been installed in another directory: +#!/usr/bin/env bash will find the first occurrence of bash +in $PATH. +

+
+
+

+Next: , Previous: , Up: Top   [Contents][Index]

+
+

4 Shell Builtin Commands

+ + + + + + + + +

Builtin commands are contained within the shell itself. +When the name of a builtin command is used as the first word of +a simple command (see Simple Commands), the shell executes +the command directly, without invoking another program. +Builtin commands are necessary to implement functionality impossible +or inconvenient to obtain with separate utilities. +

+

This section briefly describes the builtins which Bash inherits from +the Bourne Shell, as well as the builtin commands which are unique +to or have been extended in Bash. +

+

Several builtin commands are described in other chapters: builtin +commands which provide the Bash interface to the job control +facilities (see Job Control Builtins), the directory stack +(see Directory Stack Builtins), the command history +(see Bash History Builtins), and the programmable completion +facilities (see Programmable Completion Builtins). +

+

Many of the builtins have been extended by POSIX or Bash. +

+

Unless otherwise noted, each builtin command documented as accepting +options preceded by ‘-’ accepts ‘--’ +to signify the end of the options. +The :, true, false, and test/[ +builtins do not accept options and do not treat ‘--’ specially. +The exit, logout, return, +break, continue, let, +and shift builtins accept and process arguments beginning +with ‘-’ without requiring ‘--’. +Other builtins that accept arguments but are not specified as accepting +options interpret arguments beginning with ‘-’ as invalid options and +require ‘--’ to prevent this interpretation. +

+
+ +

4.1 Bourne Shell Builtins

+ +

The following shell builtin commands are inherited from the Bourne Shell. +These commands are implemented as specified by the POSIX standard. +

+
+
: (a colon)
+
+
+
: [arguments]
+
+ +

Do nothing beyond expanding arguments and performing redirections. +The return status is zero. +

+
+
. (a period)
+
+
+
. filename [arguments]
+
+ +

Read and execute commands from the filename argument in the +current shell context. If filename does not contain a slash, +the PATH variable is used to find filename. +When Bash is not in POSIX mode, the current directory is searched +if filename is not found in $PATH. +If any arguments are supplied, they become the positional +parameters when filename is executed. Otherwise the positional +parameters are unchanged. +If the -T option is enabled, source inherits any trap on +DEBUG; if it is not, any DEBUG trap string is saved and +restored around the call to source, and source unsets the +DEBUG trap while it executes. +If -T is not set, and the sourced file changes +the DEBUG trap, the new value is retained when source completes. +The return status is the exit status of the last command executed, or +zero if no commands are executed. If filename is not found, or +cannot be read, the return status is non-zero. +This builtin is equivalent to source. +

+
+
break
+
+
+
break [n]
+
+ +

Exit from a for, while, until, or select loop. +If n is supplied, the nth enclosing loop is exited. +n must be greater than or equal to 1. +The return status is zero unless n is not greater than or equal to 1. +

+
+
cd
+
+
+
cd [-L|[-P [-e]] [-@] [directory]
+
+ +

Change the current working directory to directory. +If directory is not supplied, the value of the HOME +shell variable is used. +Any additional arguments following directory are ignored. +If the shell variable +CDPATH exists, it is used as a search path: +each directory name in CDPATH is searched for +directory, with alternative directory names in CDPATH +separated by a colon (‘:’). +If directory begins with a slash, CDPATH is not used. +

+

The -P option means to not follow symbolic links: symbolic links +are resolved while cd is traversing directory and before +processing an instance of ‘..’ in directory. +

+

By default, or when the -L option is supplied, symbolic links +in directory are resolved after cd processes an instance +of ‘..’ in directory. +

+

If ‘..’ appears in directory, it is processed by removing the +immediately preceding pathname component, back to a slash or the beginning +of directory. +

+

If the -e option is supplied with -P +and the current working directory cannot be successfully determined +after a successful directory change, cd will return an unsuccessful +status. +

+

On systems that support it, the -@ option presents the extended +attributes associated with a file as a directory. +

+

If directory is ‘-’, it is converted to $OLDPWD +before the directory change is attempted. +

+

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 status is zero if the directory is successfully changed, +non-zero otherwise. +

+
+
continue
+
+
+
continue [n]
+
+ +

Resume the next iteration of an enclosing for, while, +until, or select loop. +If n is supplied, the execution of the nth enclosing loop +is resumed. +n must be greater than or equal to 1. +The return status is zero unless n is not greater than or equal to 1. +

+
+
eval
+
+
+
eval [arguments]
+
+ +

The arguments are concatenated together into a single command, which is +then read and executed, and its exit status returned as the exit status +of eval. +If there are no arguments or only empty arguments, the return status is +zero. +

+
+
exec
+
+
+
exec [-cl] [-a name] [command [arguments]]
+
+ +

If command +is supplied, it replaces the shell without creating a new process. +If the -l option is supplied, the shell places a dash at the +beginning of the zeroth argument passed to command. +This is what the login program does. +The -c option causes command to be executed with an empty +environment. +If -a is supplied, the shell passes name as the zeroth +argument to command. +If command +cannot be executed for some reason, a non-interactive shell exits, +unless the execfail shell option +is enabled. In that case, it returns failure. +An interactive shell returns failure if the file cannot be executed. +A subshell exits unconditionally if exec fails. +If no command is specified, redirections may be used to affect +the current shell environment. If there are no redirection errors, the +return status is zero; otherwise the return status is non-zero. +

+
+
exit
+
+
+
exit [n]
+
+ +

Exit the shell, returning a status of n to the shell’s parent. +If n is omitted, the exit status is that of the last command executed. +Any trap on EXIT is executed before the shell terminates. +

+
+
export
+
+
+
export [-fn] [-p] [name[=value]]
+
+ +

Mark each name to be passed to child processes +in the environment. If the -f option is supplied, the names +refer to shell functions; otherwise the names refer to shell variables. +The -n option means to no longer mark each name for export. +If no names are supplied, or if the -p option is given, a +list of names of all exported variables is displayed. +The -p option displays output in a form that may be reused as input. +If a variable name is followed by =value, the value of +the variable is set to value. +

+

The return status is zero unless an invalid option is supplied, one of +the names is not a valid shell variable name, or -f is supplied +with a name that is not a shell function. +

+
+
getopts
+
+
+
getopts optstring name [arg …]
+
+ +

getopts is used by shell scripts 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 whitespace. +The colon (‘:’) and question mark (‘?’) 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 +supplied as arg values, 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. +

+
+
hash
+
+
+
hash [-r] [-p filename] [-dt] [name]
+
+ +

Each time hash is invoked, it remembers the full pathnames of the +commands specified as name arguments, +so they need not be searched for on subsequent invocations. +The commands are found by searching through the directories listed in +$PATH. +Any previously-remembered pathname is discarded. +The -p option inhibits the path search, and filename is +used as the location of name. +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 zero unless a name is not found or an invalid +option is supplied. +

+
+
pwd
+
+
+
pwd [-LP]
+
+ +

Print the absolute pathname of the current working directory. +If the -P option is supplied, the pathname printed will not +contain symbolic links. +If the -L option is supplied, the pathname printed may contain +symbolic links. +The return status is zero unless an error is encountered while +determining the name of the current directory or an invalid option +is supplied. +

+
+
readonly
+
+
+
readonly [-aAf] [-p] [name[=value]] …
+
+ +

Mark each name as readonly. +The values of these names may not be changed by subsequent assignment. +If the -f option is supplied, each name refers to a shell +function. +The -a option means each name refers to an indexed +array variable; the -A option means each name refers +to an associative array variable. +If both options are supplied, -A takes precedence. +If no name arguments are given, or if the -p +option is supplied, a list of all readonly names is printed. +The other options may be used to restrict the output to a subset of +the set of readonly names. +The -p option causes output to be displayed in a format that +may be reused as input. +If a variable name is followed by =value, the value of +the variable is set to value. +The return status is zero unless an invalid option is supplied, one of +the name arguments is not a valid shell variable or function name, +or the -f option is supplied with a name that is not a shell function. +

+
+
return
+
+
+
return [n]
+
+ +

Cause a shell function to stop executing and return the value n +to its caller. +If n is not supplied, the return value is the exit status of the +last command executed in the function. +If return is executed by a trap handler, the last command used to +determine the status is the last command executed before the trap handler. +If return is executed during a DEBUG trap, the last command +used to determine the status is the last command executed by the trap +handler before return was invoked. +return may also be used to terminate execution of a script +being executed with the . (source) builtin, +returning either n or +the exit status of the last command executed within the script as the exit +status of the script. +If n is supplied, the return value is its least significant +8 bits. +Any command associated with the RETURN trap is executed +before execution resumes after the function or script. +The return status is non-zero if return is supplied a non-numeric +argument or is used outside a function +and not during the execution of a script by . or source. +

+
+
shift
+
+
+
shift [n]
+
+ +

Shift the positional parameters to the left by n. +The positional parameters from n+1 … $# are +renamed to $1$#-n. +Parameters represented by the numbers $# down to $#-n+1 +are unset. +n must be a non-negative number less than or equal to $#. +If n is zero or greater than $#, the positional parameters +are not changed. +If n is not supplied, it is assumed to be 1. +The return status is zero unless n is greater than $# or +less than zero, non-zero otherwise. +

+
+
test
+
[
+
+ +
+
test expr
+
+ +

Evaluate a conditional expression expr and return a status of 0 +(true) or 1 (false). +Each operator and operand must be a separate argument. +Expressions are composed of the primaries described below in +Bash Conditional Expressions. +test does not accept any options, nor does it accept and ignore +an argument of -- as signifying the end of options. +

+

When the [ form is used, the last argument to the command must +be a ]. +

+

Expressions may be combined using the following operators, listed in +decreasing order of precedence. +The evaluation depends on the number of arguments; see below. +Operator precedence is used when there are five or more arguments. +

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

+
+ +

The test and [ builtins 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 +(see Bash Conditional Expressions), the expression +is true if the unary test is true. +If the first argument is not a valid unary operator, the expression is +false. +

+
+
3 arguments
+

The following conditions are applied in the order listed. +

+
    +
  1. If the second argument is one of the binary conditional +operators (see Bash Conditional Expressions), the +result of the expression is the result of the binary test using the +first and third arguments as operands. +The ‘-a’ and ‘-o’ operators are considered binary operators +when there are three arguments. +
  2. If the first argument is ‘!’, the value is the negation of +the two-argument test using the second and third arguments. +
  3. If the first argument is exactly ‘(’ and the third argument is +exactly ‘)’, the result is the one-argument test of the second +argument. +
  4. Otherwise, the expression is false. +
+ +
+
4 arguments
+

If the first argument is ‘!’, the result is the negation of +the three-argument expression composed of the remaining 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. +

+
+ +

When used with test or ‘[’, the ‘<’ and ‘>’ +operators sort lexicographically using ASCII ordering. +

+
+
times
+
+
+
times
+
+ +

Print out the user and system times used by the shell and its children. +The return status is zero. +

+
+
trap
+
+
+
trap [-lp] [arg] [sigspec …]
+
+ +

The commands in arg are to be read and executed when the +shell receives signal sigspec. If arg is absent (and +there is a single sigspec) or +equal to ‘-’, each specified signal’s disposition is reset +to the value it had when the shell was started. +If arg is the null string, then the signal specified by +each sigspec is ignored by the shell and commands it invokes. +If arg is not present and -p has been supplied, +the shell displays the trap commands associated with each sigspec. +If no arguments are supplied, or +only -p is given, trap prints the list of commands +associated with each signal number in a form that may be reused as +shell input. +The -l option causes the shell to print a list of signal names +and their corresponding numbers. +Each sigspec is either a signal name or a signal number. +Signal names are case insensitive and the SIG prefix is optional. +

+

If a sigspec +is 0 or EXIT, arg is executed when the shell exits. +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. +Refer to the description of the extdebug option to the +shopt builtin (see The Shopt Builtin) for details of its +effect on the DEBUG trap. +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. +

+

If a sigspec is ERR, the command arg +is executed whenever +a pipeline (which may consist of a single simple +command), a list, or a compound command returns a +non-zero exit status, +subject to the following conditions. +The ERR trap is not executed if the failed command is part of the +command list immediately following an until or while keyword, +part of the test following the if or elif reserved words, +part of a command executed in a && or || list +except the command following the final && or ||, +any command in a pipeline but the last, +or if the command’s return +status is being inverted using !. +These are the same conditions obeyed by the errexit (-e) +option. +

+

Signals ignored upon entry to the shell cannot be trapped or reset. +Trapped signals that are not being ignored are reset to their original +values in a subshell or subshell environment when one is created. +

+

The return status is zero unless a sigspec does not specify a +valid signal. +

+
+
umask
+
+
+
umask [-p] [-S] [mode]
+
+ +

Set the shell process’s file creation mask to mode. If +mode begins with a digit, it is interpreted as an octal number; +if not, it is interpreted as a symbolic mode mask similar +to that accepted by the chmod command. If mode is +omitted, the current value of the mask is printed. If the -S +option is supplied without a mode argument, the mask is printed +in a symbolic format. +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 zero if the mode is successfully changed or if +no mode argument is supplied, and non-zero otherwise. +

+

Note that when the mode is interpreted as an octal number, each number +of the umask is subtracted from 7. Thus, a umask of 022 +results in permissions of 755. +

+
+
unset
+
+
+
unset [-fnv] [name]
+
+ +

Remove each variable or function name. +If the -v option is given, each +name refers to a shell variable and that variable is removed. +If the -f option is given, the names refer to shell +functions, and the function definition is removed. +If the -n option is supplied, and name is a variable with +the nameref attribute, name will be unset rather than the +variable it references. +-n has no effect if the -f option is supplied. +If no options are supplied, each name refers to a variable; if +there is no variable by that name, a function with that name, if any, is +unset. +Readonly variables and functions may not be unset. +Some shell variables lose their special behavior if they are unset; such +behavior is noted in the description of the individual variables. +The return status is zero unless a name is readonly. +

+
+ +
+ +

4.2 Bash Builtin Commands

+ +

This section describes builtin commands which are unique to +or have been extended in Bash. +Some of these commands are specified in the POSIX standard. +

+
+
alias
+
+
+
alias [-p] [name[=value] …]
+
+ +

Without arguments or with the -p option, alias prints +the list of aliases on the standard output in a form that allows +them to be reused as input. +If arguments are supplied, an alias is defined for each name +whose value is given. If no value is given, the name +and value of the alias is printed. +Aliases are described in Aliases. +

+
+
bind
+
+
+
bind [-m keymap] [-lpsvPSVX]
+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 [-m keymap] keyseq:readline-command
+
+ +

Display current Readline (see Command Line Editing) +key and function bindings, +bind a key sequence to a Readline function or macro, +or set a Readline variable. +Each non-option argument is a command as it would appear in a +Readline initialization file (see Readline Init File), +but each binding or command must be passed as a separate argument; e.g., +‘"\C-x\C-r":re-read-init-file’. +

+

Options, if supplied, have the 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 (vi-move is also a +synonym); 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 used as input or in a Readline initialization file. +

+
+
-P
+

List current Readline function names and bindings. +

+
+
-v
+

Display Readline variable names and values in such a way that they +can be used as input or in a Readline initialization file. +

+
+
-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 used as input or in a Readline +initialization file. +

+
+
-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. +When shell-command is executed, the shell sets the +READLINE_LINE variable to the contents of the Readline line +buffer and the READLINE_POINT and READLINE_MARK variables +to the current location of the insertion point and the saved insertion +point (the mark), respectively. +If the executed command changes the value of any of READLINE_LINE, +READLINE_POINT, or READLINE_MARK, those new values will be +reflected in the editing state. +

+
+
-X
+

List all key sequences bound to shell commands and the associated commands +in a format that can be reused as input. +

+
+ +

The return status is zero unless an invalid option is supplied or an +error occurs. +

+
+
builtin
+
+
+
builtin [shell-builtin [args]]
+
+ +

Run a shell builtin, passing it args, and return its exit status. +This is useful when defining a shell function with the same +name as a shell builtin, retaining the functionality of the builtin within +the function. +The return status is non-zero if shell-builtin is not a shell +builtin command. +

+
+
caller
+
+
+
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
+
+
+
command [-pVv] command [arguments …]
+
+ +

Runs command with arguments ignoring any shell function +named command. +Only shell builtin commands or commands found by searching the +PATH are executed. +If there is a shell function named ls, running ‘command ls’ +within the function will execute the external command ls +instead of calling the function recursively. +The -p option means to use a default value for PATH +that is guaranteed to find all of the standard utilities. +The return status in this case is 127 if command cannot be +found or an error occurred, and the exit status of command +otherwise. +

+

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. In this case, the return status is +zero if command is found, and non-zero if not. +

+
+
declare
+
+
+
declare [-aAfFgiIlnrtux] [-p] [name[=value] …]
+
+ +

Declare variables and 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. +When -p is used with name arguments, additional options, +other than -f and -F, are ignored. +

+

When -p is supplied without name arguments, declare +will display the attributes and values of all variables having the +attributes specified by the additional options. +If no other options are supplied with -p, declare will +display the attributes and values of all shell variables. The -f +option will restrict the display to shell functions. +

+

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 +(see The Shopt Builtin), the source file name and line number where +each name is defined are displayed as well. +-F implies -f. +

+

The -g option forces variables to be created or modified at +the global scope, even when declare is executed in a shell function. +It is ignored in all other cases. +

+

The -I option causes local variables to inherit the attributes +(except the nameref attribute) +and value of any existing variable with the same +name at a surrounding scope. +If there is no existing variable, the local variable is initially unset. +

+

The following options can be used to restrict output to variables with +the specified attributes or to give variables attributes: +

+
+
-a
+

Each name is an indexed array variable (see Arrays). +

+
+
-A
+

Each name is an associative array variable (see Arrays). +

+
+
-f
+

Use function names only. +

+
+
-i
+

The variable is to be treated as +an integer; arithmetic evaluation (see Shell Arithmetic) is +performed when the variable is assigned a value. +

+
+
-l
+

When the variable is assigned a value, all upper-case characters are +converted to lower-case. +The upper-case attribute is disabled. +

+
+
-n
+

Give each name the nameref attribute, making +it a name reference to another variable. +That other variable is defined by the value of name. +All references, assignments, and attribute modifications +to name, except for those using or changing the +-n attribute itself, are performed on the variable referenced by +name’s value. +The nameref attribute cannot be applied to array variables. +

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

+
+
-u
+

When the variable is assigned a value, all lower-case characters are +converted to upper-case. +The lower-case attribute is disabled. +

+
+
-x
+

Mark each name for export to subsequent commands via +the environment. +

+
+ +

Using ‘+’ instead of ‘-’ turns off the attribute instead, +with the exceptions that ‘+a’ and ‘+A’ +may not be used to destroy array variables and ‘+r’ will not +remove the readonly attribute. +When used in a function, declare makes each name local, +as with the local command, unless the -g option is used. +If a variable name is followed by =value, the value of the variable +is set to value. +

+

When using -a or -A and the compound assignment syntax to +create array variables, additional attributes do not take effect until +subsequent assignments. +

+

The return status is zero unless an invalid option is encountered, +an attempt is made to define a function using ‘-f foo=bar’, +an attempt is made to assign a value to a readonly variable, +an attempt is made to assign a value to an array variable without +using the compound assignment syntax (see Arrays), +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. +

+
+
echo
+
+
+
echo [-neE] [arg …]
+
+ +

Output the args, separated by spaces, terminated with a +newline. +The return status is 0 unless a write error occurs. +If -n is specified, the trailing newline is suppressed. +If the -e option is given, interpretation of the following +backslash-escaped characters is enabled. +The -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 further output +

+
\e
+
\E
+

escape +

+
\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) +

+
\xHH
+

the eight-bit character whose value is the hexadecimal value HH +(one or two hex digits) +

+
\uHHHH
+

the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +HHHH (one to four hex digits) +

+
\UHHHHHHHH
+

the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +HHHHHHHH (one to eight hex digits) +

+
+ +
+
enable
+
+
+
enable [-a] [-dnps] [-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, the names become disabled. Otherwise +names are enabled. For example, to use the test binary +found via $PATH instead of the shell builtin version, type +‘enable -n test’. +

+

If the -p option is supplied, or no name arguments appear, +a list of shell builtins is printed. With no other arguments, the list +consists of all enabled shell builtins. +The -a option means to list +each builtin with an indication of whether or not it is enabled. +

+

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 loaded with -f. +

+

If there are no options, a list of the shell builtins is displayed. +The -s option restricts enable to the POSIX special +builtins. If -s is used with -f, the new builtin becomes +a special builtin (see Special Builtins). +

+

The return status is zero unless a name is not a shell builtin +or there is an error loading a new builtin from a shared object. +

+
+
help
+
+
+
help [-dms] [pattern]
+
+ +

Display helpful information about builtin commands. +If pattern is specified, help gives detailed help +on all commands matching pattern, otherwise a list of +the builtins is printed. +

+

Options, if supplied, have the following meanings: +

+
+
-d
+

Display a short description of each pattern +

+
-m
+

Display the description of each pattern in a manpage-like format +

+
-s
+

Display only a short usage synopsis for each pattern +

+
+ +

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

+
+
let
+
+
+
let expression [expression …]
+
+ +

The let builtin allows arithmetic to be performed on shell +variables. Each expression is evaluated according to the +rules given below in Shell Arithmetic. If the +last expression evaluates to 0, let returns 1; +otherwise 0 is returned. +

+
+
local
+
+
+
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. +local can only be used within a function; it makes the variable +name have a visible scope restricted to that function and its +children. +If name is ‘-’, the set of shell options is made local to the +function in which local is invoked: shell options changed using +the set builtin inside the function are restored to their original +values when the function returns. +The restore is effected as if a series of set commands were executed +to restore the values that were in place before the function. +The return status is zero unless local is used outside +a function, an invalid name is supplied, or name is a +readonly variable. +

+
+
logout
+
+
+
logout [n]
+
+ +

Exit a login shell, returning a status of n to the shell’s +parent. +

+
+
mapfile
+
+
+
mapfile [-d delim] [-n count] [-O origin] [-s count]
+    [-t] [-u fd] [-C callback] [-c quantum] [array]
+
+ +

Read lines from the standard input into the indexed array variable array, +or from file descriptor fd +if the -u option is supplied. +The variable MAPFILE is the default array. +Options, if supplied, have the following meanings: +

+
+
-d
+

The first character of delim is used to terminate each input line, +rather than newline. +If delim is the empty string, mapfile will terminate a line +when it reads a NUL character. +

+
-n
+

Copy at most count lines. If count is 0, all lines are copied. +

+
-O
+

Begin assigning to array at index origin. +The default index is 0. +

+
-s
+

Discard the first count lines read. +

+
-t
+

Remove a trailing delim (default newline) from each line read. +

+
-u
+

Read lines from file descriptor fd instead of the standard input. +

+
-C
+

Evaluate callback each time quantum lines are read. +The -c option specifies quantum. +

+
-c
+

Specify the number of lines read between each call to callback. +

+
+ +

If -C is specified without -c, +the default quantum is 5000. +When callback is evaluated, it is supplied the index of the next +array element to be assigned and the line to be assigned to that element +as additional arguments. +callback is evaluated after the line is read but before the +array element is assigned. +

+

If not supplied with an explicit origin, mapfile will clear array +before assigning to it. +

+

mapfile returns successfully unless an invalid option or option +argument is supplied, array is invalid or unassignable, or array +is not an indexed array. +

+
+
printf
+
+
+
printf [-v var] format [arguments]
+
+ +

Write the formatted arguments to the standard output under the +control of the format. +The -v option causes the output to be assigned to the variable +var rather than being printed to the standard output. +

+

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, printf +interprets the following extensions: +

+
+
%b
+

Causes printf to expand backslash escape sequences in the +corresponding argument in the same way as echo -e +(see Bash Builtins). +

+
%q
+

Causes printf to output the +corresponding argument in a format that can be reused as shell input. +

+
%(datefmt)T
+

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

+
+ +

The %b, %q, and %T directives all use the field width and precision +arguments from the format specification and write that many bytes from +(or use that wide a field for) the expanded argument, which usually +contains more characters than the original. +

+

Arguments to non-string format specifiers are treated as C language constants, +except that a leading plus or minus sign is allowed, and if the leading +character is a single or double quote, the value is the ASCII value of +the following character. +

+

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

+
+
read
+
+
+
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars]
+    [-N nchars] [-p prompt] [-t timeout] [-u fd] [name …]
+
+ +

One line is read from the standard input, or from the file descriptor +fd supplied as an argument to the -u option, +split into words as described above in Word Splitting, +and the first word +is assigned to the first name, the second word to the second name, +and so on. +If there are more words than names, +the remaining words and their intervening delimiters are 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 the value of the IFS variable +are used to split the line into words using the same rules the shell +uses for expansion (described above in Word Splitting). +The backslash character ‘\’ may be used to remove any special +meaning for the next character read and for line continuation. +

+

Options, if supplied, have the following meanings: +

+
+
-a aname
+

The words are assigned to sequential indices of the array variable +aname, starting at 0. +All elements are removed from aname before the assignment. +Other name arguments are ignored. +

+
+
-d delim
+

The first character of delim is used to terminate the input line, +rather than newline. +If delim is the empty string, read will terminate a line +when it reads a NUL character. +

+
+
-e
+

Readline (see Command Line Editing) is used to obtain the line. +Readline uses the current (or default, if line editing was not previously +active) editing settings, but uses Readline’s default filename completion. +

+
+
-i text
+

If Readline is being used to read the line, text is placed into +the editing buffer before editing begins. +

+
+
-n nchars
+

read returns after reading nchars characters rather than +waiting for a complete line of input, but honors a delimiter if fewer +than nchars characters are read before the delimiter. +

+
+
-N nchars
+

read returns after reading exactly nchars characters rather +than waiting for a complete line of input, unless EOF is encountered or +read times out. +Delimiter characters encountered in the input are +not treated specially and do not cause read to return until +nchars characters are read. +The result is not split on the characters in IFS; the intent is +that the variable is assigned exactly the characters read +(with the exception of backslash; see the -r option below). +

+
+
-p prompt
+

Display prompt, without a trailing newline, before attempting +to read any input. +The prompt is displayed only if input is coming from a terminal. +

+
+
-r
+

If this option is given, 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 then 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 (or a specified number of characters) +is not read within timeout seconds. +timeout may be a decimal number with a fractional portion following +the decimal point. +This option is only effective if read is reading input from a +terminal, pipe, or other special file; it has no effect when reading +from regular files. +If read times out, read saves any partial input read into +the specified variable name. +If timeout is 0, read returns immediately, without trying to +read any data. The exit status is 0 if input is available on +the specified file descriptor, non-zero otherwise. +The exit status is greater than 128 if the timeout is exceeded. +

+
+
-u fd
+

Read input from file descriptor fd. +

+
+ +

If no names are supplied, the line read, +without the ending delimiter but otherwise unmodified, +is assigned to the +variable REPLY. +The exit status is zero, unless end-of-file is encountered, read +times out (in which case the status is greater than 128), +a variable assignment error (such as assigning to a readonly variable) occurs, +or an invalid file descriptor is supplied as the argument to -u. +

+
+
readarray
+
+
+
readarray [-d delim] [-n count] [-O origin] [-s count]
+    [-t] [-u fd] [-C callback] [-c quantum] [array]
+
+ +

Read lines from the standard input into the indexed array variable array, +or from file descriptor fd +if the -u option is supplied. +

+

A synonym for mapfile. +

+
+
source
+
+
+
source filename
+
+ +

A synonym for . (see Bourne Shell Builtins). +

+
+
type
+
+
+
type [-afptP] [name …]
+
+ +

For each name, indicate how it would be interpreted if used as a +command name. +

+

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

+

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

+

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

+

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

+

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

+

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

+

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

+
+
typeset
+
+
+
typeset [-afFgrxilnrtux] [-p] [name[=value] …]
+
+ +

The typeset command is supplied for compatibility with the Korn +shell. +It is a synonym for the declare builtin command. +

+
+
ulimit
+
+
+
ulimit [-HS] -a
+ulimit [-HS] [-bcdefiklmnpqrstuvxPRT] [limit]
+
+ +

ulimit provides control over the resources available to processes +started by the shell, on systems that allow such control. If an +option is given, it is interpreted as follows: +

+
+
-S
+

Change and report the soft limit associated with a resource. +

+
+
-H
+

Change and report the hard limit associated with a resource. +

+
+
-a
+

All current limits are reported; no limits are set. +

+
+
-b
+

The maximum socket buffer size. +

+
+
-c
+

The maximum size of core files created. +

+
+
-d
+

The maximum size of a process’s data segment. +

+
+
-e
+

The maximum scheduling priority ("nice"). +

+
+
-f
+

The maximum size of files written by the shell and its children. +

+
+
-i
+

The maximum number of pending signals. +

+
+
-k
+

The maximum number of kqueues that may be allocated. +

+
+
-l
+

The maximum size that may be locked into memory. +

+
+
-m
+

The maximum resident set size (many systems do not honor this limit). +

+
+
-n
+

The maximum number of open file descriptors (most systems do not +allow this value to be set). +

+
+
-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 processes available to a single user. +

+
+
-v
+

The maximum amount of virtual memory available to the shell, and, on +some systems, to its children. +

+
+
-x
+

The maximum number of file locks. +

+
+
-P
+

The maximum number of pseudoterminals. +

+
+
-R
+

The maximum time a real-time process can run before blocking, in microseconds. +

+
+
-T
+

The maximum number of threads. +

+
+ +

If limit is given, and the -a option is not used, +limit is the new value of the specified resource. +The special limit values hard, soft, and +unlimited stand for the current hard limit, the current soft limit, +and no limit, respectively. +A hard limit cannot be increased by a non-root user once it is set; +a soft limit may be increased up to the value of the hard limit. +Otherwise, the current value of the soft limit for the specified resource +is printed, unless the -H option is supplied. +When more than one +resource is specified, the limit name and unit, if appropriate, +are printed before the value. +When setting new limits, if neither -H nor -S is supplied, +both the hard and soft limits are set. +If no option is given, then -f is assumed. Values are in 1024-byte +increments, except for +-t, which is in seconds; +-R, which is in microseconds; +-p, which is in units of 512-byte blocks; +-P, +-T, +-b, +-k, +-n and -u, which are unscaled values; +and, when in POSIX Mode (see Bash POSIX Mode), +-c and -f, which are in 512-byte increments. +

+

The return status is zero unless an invalid option or argument is supplied, +or an error occurs while setting a new limit. +

+
+
unalias
+
+
+
unalias [-a] [name … ]
+
+ +

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

+
+ +
+ +

4.3 Modifying Shell Behavior

+ + + + + + +
+ +

4.3.1 The Set Builtin

+ +

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

+
+
set
+
+
+
set [--abefhkmnptuvxBCEHPT] [-o option-name] [argument …]
+set [+abefhkmnptuvxBCEHPT] [+o option-name] [argument …]
+
+ +

If no options or arguments are supplied, set displays the names +and values of all shell variables and functions, sorted according to the +current locale, in a format that may be reused as input +for setting or resetting the currently-set variables. +Read-only variables cannot be reset. +In POSIX mode, only shell variables are listed. +

+

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

+
+
-a
+

Each variable or function that is created or modified is given the +export attribute and marked for export to the environment of +subsequent commands. +

+
+
-b
+

Cause the status of terminated background jobs to be reported +immediately, rather than before printing the next primary prompt. +

+
+
-e
+

Exit immediately if +a pipeline (see Pipelines), which may consist of a single simple command +(see Simple Commands), +a list (see Lists), +or a compound command (see Compound Commands) +returns 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 any command executed in a && or || list except +the command following the final && or ||, +any command in a pipeline but the last, +or if the command’s return status is being inverted with !. +If a compound command other than a subshell +returns a non-zero status because a command failed +while -e was being ignored, the shell does not exit. +A trap on ERR, if set, is executed before the shell exits. +

+

This option applies to the shell environment and each subshell environment +separately (see Command Execution Environment), and may cause +subshells to exit before executing all the commands in the subshell. +

+

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

+
+
-f
+

Disable filename expansion (globbing). +

+
+
-h
+

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

+
+
-k
+

All arguments in the form of assignment statements are placed +in the environment for a command, not just those that precede +the command name. +

+
+
-m
+

Job control is enabled (see Job Control). +All processes run in a separate process group. +When a background job completes, the shell prints a line +containing its exit status. +

+
+
-n
+

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

+
+
-o option-name
+
+

Set the option corresponding to option-name: +

+
+
allexport
+

Same as -a. +

+
+
braceexpand
+

Same as -B. +

+
+
emacs
+

Use an emacs-style line editing interface (see Command Line Editing). +This also affects the editing interface used for read -e. +

+
+
errexit
+

Same as -e. +

+
+
errtrace
+

Same as -E. +

+
+
functrace
+

Same as -T. +

+
+
hashall
+

Same as -h. +

+
+
histexpand
+

Same as -H. +

+
+
history
+

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

+
+
ignoreeof
+

An interactive shell will not exit upon reading EOF. +

+
+
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 +(see Bash POSIX Mode). +This is intended to make Bash behave as a strict superset of that +standard. +

+
+
privileged
+

Same as -p. +

+
+
verbose
+

Same as -v. +

+
+
vi
+

Use a vi-style line editing interface. +This also affects the editing interface used for read -e. +

+
+
xtrace
+

Same as -x. +

+
+ +
+
-p
+

Turn on privileged mode. +In this mode, the $BASH_ENV and $ENV files are not +processed, shell functions are not inherited from the environment, +and the SHELLOPTS, BASHOPTS, CDPATH and GLOBIGNORE +variables, if they appear in the environment, are 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 and parameters other than the special parameters +‘@’ or ‘*’ as an error when performing parameter expansion. +An error message will be written to the standard error, and a non-interactive +shell will exit. +

+
+
-v
+

Print shell input lines as they are read. +

+
+
-x
+

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

+
+
-B
+

The shell will perform brace expansion (see Brace Expansion). +This option is on by default. +

+
+
-C
+

Prevent output redirection using ‘>’, ‘>&’, and ‘<>’ +from overwriting existing files. +

+
+
-E
+

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

+
+
-H
+

Enable ‘!’ style history substitution (see History Interaction). +This option is on by default for interactive shells. +

+
+
-P
+

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

+

For example, if /usr/sys is a symbolic link to /usr/local/sys +then: +

+
$ cd /usr/sys; echo $PWD
+/usr/sys
+$ cd ..; pwd
+/usr
+
+ +

If set -P is on, then: +

+
$ cd /usr/sys; echo $PWD
+/usr/local/sys
+$ cd ..; pwd
+/usr/local
+
+ +
+
-T
+

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

+
+
--
+

If no arguments follow this option, then the positional parameters are +unset. Otherwise, the positional parameters are set to the +arguments, even if some of them begin with a ‘-’. +

+
+
-
+

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

+
+ +

Using ‘+’ rather than ‘-’ causes these options to be +turned off. The options can also be used upon invocation of the +shell. The current set of options may be found in $-. +

+

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

+

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

+
+ +
+ +

4.3.2 The Shopt Builtin

+ +

This builtin allows you to change additional shell optional behavior. +

+
+
shopt
+
+
+
shopt [-pqsu] [-o] [optname …]
+
+ +

Toggle the values of settings controlling optional shell behavior. +The settings can be either those listed below, or, if the +-o option is used, those available with the -o +option to the set builtin command (see The Set Builtin). +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; +if optnames are supplied, the output is restricted to those options. +The -p option causes output to be displayed in a form that +may be reused as input. +Other options have the following meanings: +

+
+
-s
+

Enable (set) each optname. +

+
+
-u
+

Disable (unset) each optname. +

+
+
-q
+

Suppresses normal output; the return status +indicates whether the optname is set or unset. +If multiple optname arguments are given with -q, +the return status is zero if all optnames are enabled; +non-zero otherwise. +

+
+
-o
+

Restricts the values of +optname to be those defined for the -o option to the +set builtin (see The Set Builtin). +

+
+ +

If either -s or -u +is used with no optname arguments, shopt shows only +those options which are set or unset, respectively. +

+

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

+

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

+

The list of shopt options is: +

+
assoc_expand_once
+

If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation, while executing +builtins that can perform variable assignments, +and while executing builtins that perform array dereferencing. +

+
+
autocd
+

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

+
+
cdable_vars
+

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

+
+
cdspell
+

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

+
+
checkhash
+

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

+
+
checkjobs
+

If set, Bash lists the status of any stopped and running jobs before +exiting an interactive shell. If any jobs are running, this causes +the exit to be deferred until a second exit is attempted without an +intervening command (see Job Control). +The shell always postpones exiting if any jobs are stopped. +

+
+
checkwinsize
+

If set, Bash checks the window size after each external (non-builtin) +command and, if necessary, updates the values of +LINES and COLUMNS. +This option is enabled by default. +

+
+
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. +This option is enabled by default, but only has an effect if command +history is enabled (see Bash History Facilities). +

+
+
compat31
+
compat32
+
compat40
+
compat41
+
compat42
+
compat43
+
compat44
+

These control aspects of the shell’s compatibility mode +(see Shell Compatibility Mode). +

+
+
complete_fullquote
+

If set, Bash +quotes all shell metacharacters in filenames and directory names when +performing completion. +If not set, Bash +removes metacharacters such as the dollar sign from the set of +characters that will be quoted in completed filenames +when these metacharacters appear in shell variable references in words to be +completed. +This means that dollar signs in variable names that expand to directories +will not be quoted; +however, any dollar signs appearing in filenames will not be quoted, either. +This is active only when bash is using backslashes to quote completed +filenames. +This variable is set by default, which is the default Bash behavior in +versions through 4.2. +

+
+
direxpand
+

If set, Bash +replaces directory names with the results of word expansion when performing +filename completion. This changes the contents of the readline editing +buffer. +If not set, Bash attempts to preserve what the user typed. +

+
+
dirspell
+

If set, Bash +attempts spelling correction on directory names during word completion +if the directory name initially supplied does not exist. +

+
+
dotglob
+

If set, Bash includes filenames beginning with a ‘.’ in +the results of filename expansion. +The filenames ‘.’ and ‘..’ must always be matched explicitly, +even if dotglob is set. +

+
+
execfail
+

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

+
+
expand_aliases
+

If set, aliases are expanded as described below under Aliases, +Aliases. +This option is enabled by default for interactive shells. +

+
+
extdebug
+

If set at shell invocation, +or in a shell startup file, +arrange to execute the debugger profile +before the shell starts, identical to the --debugger option. +If set after invocation, behavior intended for use by debuggers is enabled: +

+
    +
  1. The -F option to the declare builtin (see Bash Builtins) +displays the source file name and line number corresponding to each function +name supplied as an argument. + +
  2. If the command run by the DEBUG trap returns a non-zero value, the +next command is skipped and not executed. + +
  3. If the command run by the DEBUG trap returns a value of 2, and the +shell is executing in a subroutine (a shell function or a shell script +executed by the . or source builtins), the shell simulates +a call to return. + +
  4. BASH_ARGC and BASH_ARGV are updated as described in their +descriptions (see Bash Variables). + +
  5. Function tracing is enabled: command substitution, shell functions, and +subshells invoked with ( command ) inherit the +DEBUG and RETURN traps. + +
  6. Error tracing is enabled: command substitution, shell functions, and +subshells invoked with ( command ) inherit the +ERR trap. +
+ +
+
extglob
+

If set, the extended pattern matching features described above +(see Pattern Matching) are enabled. +

+
+
extquote
+

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

+
+
failglob
+

If set, patterns which fail to match filenames during filename 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 Bash Variables, for a description of FIGNORE. +This option is enabled by default. +

+
+
globasciiranges
+

If set, range expressions used in pattern matching bracket expressions +(see Pattern Matching) +behave as if in the traditional C locale when performing +comparisons. That is, the current locale’s collating sequence +is not taken into account, so +‘b’ will not collate between ‘A’ and ‘B’, +and upper-case and lower-case ASCII characters will collate together. +

+
+
globstar
+

If set, the pattern ‘**’ used in a filename expansion context will +match all files and zero or more directories and subdirectories. +If the pattern is followed by a ‘/’, only directories and +subdirectories match. +

+
+
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 Commands For Completion). This option is enabled +by default. +

+
+
huponexit
+

If set, Bash will send SIGHUP to all jobs when an interactive +login shell exits (see Signals). +

+
+
inherit_errexit
+

If set, command substitution inherits the value of the errexit option, +instead of unsetting it in the subshell environment. +This option is enabled when POSIX mode is enabled. +

+
+
interactive_comments
+

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

+
+
lastpipe
+

If set, and job control is not active, the shell runs the last command of +a pipeline not executed in the background in the current shell environment. +

+
+
lithist
+

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

+
+
localvar_inherit
+

If set, local variables inherit the value and attributes of a variable of +the same name that exists at a previous scope before any new value is +assigned. The nameref attribute is not inherited. +

+
+
localvar_unset
+

If set, calling unset on local variables in previous function scopes +marks them so subsequent lookups find them unset until that function +returns. This is identical to the behavior of unsetting local variables +at the current function scope. +

+
+
login_shell
+

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

+
+
mailwarn
+

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

+
+
no_empty_cmd_completion
+

If set, and Readline is being used, Bash will not attempt to search +the PATH for possible completions when completion is attempted +on an empty line. +

+
+
nocaseglob
+

If set, Bash matches filenames in a case-insensitive fashion when +performing filename expansion. +

+
+
nocasematch
+

If set, Bash matches patterns in a case-insensitive fashion when +performing matching while executing case or [[ +conditional commands, +when performing pattern substitution word expansions, +or when filtering possible completions as part of programmable completion. +

+
+
nullglob
+

If set, Bash allows filename patterns which match no +files to expand to a null string, rather than themselves. +

+
+
progcomp
+

If set, the programmable completion facilities +(see Programmable Completion) are enabled. +This option is enabled by default. +

+
+
progcomp_alias
+

If set, and programmable completion is enabled, Bash treats a command +name that doesn’t have any completions as a possible alias and attempts +alias expansion. If it has an alias, Bash attempts programmable +completion using the command word resulting from the expanded alias. +

+
+
promptvars
+

If set, prompt strings undergo +parameter expansion, command substitution, arithmetic +expansion, and quote removal after being expanded +as described below (see Controlling the Prompt). +This option is enabled by default. +

+
+
restricted_shell
+

The shell sets this option if it is started in restricted mode +(see The Restricted Shell). +The value may not be changed. +This is not reset when the startup files are executed, allowing +the startup files to discover whether or not a shell is restricted. +

+
+
shift_verbose
+

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

+
+
sourcepath
+

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

+
+
xpg_echo
+

If set, the echo builtin expands backslash-escape sequences +by default. +

+
+
+
+
+ +
+ +

4.4 Special Builtins

+ + +

For historical reasons, the POSIX standard has classified +several builtin commands as special. +When Bash is executing in POSIX mode, the special builtins +differ from other builtin commands in three respects: +

+
    +
  1. Special builtins are found before shell functions during command lookup. + +
  2. If a special builtin returns an error status, a non-interactive shell exits. + +
  3. Assignment statements preceding the command stay in effect in the shell +environment after the command completes. +
+ +

When Bash is not executing in POSIX mode, these builtins behave no +differently than the rest of the Bash builtin commands. +The Bash POSIX mode is described in Bash POSIX Mode. +

+

These are the POSIX special builtins: +

+
break : . continue eval exec exit export readonly return set
+shift trap unset
+
+ +
+
+

+Next: , Previous: , Up: Top   [Contents][Index]

+
+

5 Shell Variables

+ + + + + + +

This chapter describes the shell variables that Bash uses. +Bash automatically assigns default values to a number of variables. +

+
+ +

5.1 Bourne Shell Variables

+ +

Bash uses certain shell variables in the same way as the Bourne shell. +In some cases, Bash assigns a default value to the variable. +

+
+
CDPATH + +
+

A colon-separated list of directories used as a search path for +the cd builtin command. +

+
+
HOME + +
+

The current user’s home directory; the default for the cd builtin +command. +The value of this variable is also used by tilde expansion +(see Tilde Expansion). +

+
+
IFS + +
+

A list of characters that separate fields; used when the shell splits +words as part of expansion. +

+
+
MAIL + +
+

If this parameter is set to a filename or directory name +and the MAILPATH variable +is not set, Bash informs the user of the arrival of mail in +the specified file or Maildir-format directory. +

+
+
MAILPATH + +
+

A colon-separated list of filenames which the shell periodically checks +for new mail. +Each list entry can specify the message that is printed when new mail +arrives in the mail file by separating the filename from the message with +a ‘?’. +When used in the text of the message, $_ expands to the name of +the current mail file. +

+
+
OPTARG + +
+

The value of the last option argument processed by the getopts builtin. +

+
+
OPTIND + +
+

The index of the last option argument processed by the getopts builtin. +

+
+
PATH + +
+

A colon-separated list of directories in which the shell looks for +commands. +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. +

+
+
PS1 + +
+

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

+
+
PS2 + +
+

The secondary prompt string. The default value is ‘> ’. +PS2 is expanded in the same way as PS1 before being +displayed. +

+
+
+ +
+ +

5.2 Bash Variables

+ +

These variables are set or used by Bash, but other shells +do not normally treat them specially. +

+

A few variables used by Bash are described in different chapters: +variables for controlling the job control facilities +(see Job Control Variables). +

+
+
_ + +
+
+

($_, an underscore.) +At shell startup, set to the 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 simple +command executed in the foreground, 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. +

+
+
BASH + +
+

The full pathname used to execute the current instance of Bash. +

+
+
BASHOPTS + +
+

A colon-separated list of enabled shell options. Each word in +the list is a valid argument for the -s option to the +shopt builtin command (see The Shopt Builtin). +The options appearing in BASHOPTS are those reported +as ‘on’ by ‘shopt’. +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 readonly. +

+
+
BASHPID + +
+

Expands to the process ID of the current Bash process. +This differs from $$ under certain circumstances, such as subshells +that do not require Bash to be re-initialized. +Assignments to BASHPID have no effect. +If BASHPID +is unset, it loses its special properties, even if it is +subsequently reset. +

+
+
BASH_ALIASES + +
+

An associative array variable whose members correspond to the internal +list of aliases as maintained by the alias builtin. +(see Bourne Shell Builtins). +Elements added to this array appear in the alias list; however, +unsetting array elements currently does not cause aliases to be removed +from the alias list. +If BASH_ALIASES +is unset, it loses its special properties, even if it is +subsequently reset. +

+
+
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 Shopt Builtin +for a description of the extdebug option to the shopt +builtin). +Setting extdebug after the shell has started to execute a script, +or referencing this variable when extdebug is not set, +may result in inconsistent values. +

+
+
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 Shopt Builtin +for a description of the extdebug option to the shopt +builtin). +Setting extdebug after the shell has started to execute a script, +or referencing this variable when extdebug is not set, +may result in inconsistent values. +

+
+
BASH_ARGV0 + +
+

When referenced, this variable expands to the name of the shell or shell +script (identical to $0; See Special Parameters, +for the description of special parameter 0). +Assignment to BASH_ARGV0 +causes the value assigned to also be assigned to $0. +If BASH_ARGV0 +is unset, it loses its special properties, even if it is +subsequently reset. +

+
+
BASH_CMDS + +
+

An associative array variable whose members correspond to the internal +hash table of commands as maintained by the hash builtin +(see Bourne Shell Builtins). +Elements added to this array appear in the hash table; however, +unsetting array elements currently does not cause command names to be removed +from the hash table. +If BASH_CMDS +is unset, it loses its special properties, even if it is +subsequently reset. +

+
+
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. +If BASH_COMMAND +is unset, it loses its special properties, even if it is +subsequently reset. +

+
+
BASH_COMPAT + +
+

The value is used to set the shell’s compatibility level. +See Shell Compatibility Mode, for a description of the various +compatibility levels and their effects. +The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42) +corresponding to the desired compatibility level. +If BASH_COMPAT is unset or set to the empty string, the compatibility +level is set to the default for the current version. +If BASH_COMPAT is set to a value that is not one of the valid +compatibility levels, the shell prints an error message and sets the +compatibility level to the default for the current version. +The valid values correspond to the compatibility levels +described below (see Shell Compatibility Mode). +For example, 4.2 and 42 are valid values that correspond +to the compat42 shopt option +and set the compatibility level to 42. +The current version is also a valid value. +

+
+
BASH_ENV + +
+

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

+
+
BASH_EXECUTION_STRING + +
+

The command argument to the -c invocation option. +

+
+
BASH_LINENO + +
+

An array variable whose members are the line numbers in source files +where each corresponding member of FUNCNAME was invoked. +${BASH_LINENO[$i]} is the line number in the source file +(${BASH_SOURCE[$i+1]}) where +${FUNCNAME[$i]} was called (or ${BASH_LINENO[$i-1]} if +referenced within another shell function). +Use LINENO to obtain the current line number. +

+
+
BASH_LOADABLES_PATH + +
+

A colon-separated list of directories in which the shell looks for +dynamically loadable builtins specified by the +enable command. +

+
+
BASH_REMATCH + +
+

An array variable whose members are assigned by the ‘=~’ binary +operator to the [[ conditional command +(see Conditional Constructs). +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. +

+
+
BASH_SOURCE + +
+

An array variable whose members are the source filenames where the +corresponding shell function names in the FUNCNAME array +variable are defined. +The shell function ${FUNCNAME[$i]} is defined in the file +${BASH_SOURCE[$i]} and called from ${BASH_SOURCE[$i+1]} +

+
+
BASH_SUBSHELL + +
+

Incremented by one within each subshell or subshell environment when +the shell begins executing in that environment. +The initial value is 0. +If BASH_SUBSHELL +is unset, it loses its special properties, even if it is +subsequently reset. +

+
+
BASH_VERSINFO + +
+

A readonly array variable (see Arrays) +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 + +
+

The version number of the current instance of Bash. +

+
+
BASH_XTRACEFD + +
+

If set to an integer corresponding to a valid file descriptor, Bash +will write the trace output generated when ‘set -x’ +is enabled to that file descriptor. +This allows tracing output to be separated from diagnostic and error +messages. +The file descriptor is closed when BASH_XTRACEFD is unset or assigned +a new value. +Unsetting BASH_XTRACEFD or assigning it the empty string causes the +trace output to be sent to the standard error. +Note that setting BASH_XTRACEFD to 2 (the standard error file +descriptor) and then unsetting it will result in the standard error +being closed. +

+
+
CHILD_MAX + +
+

Set the number of exited child status values for the shell to remember. +Bash will not allow this value to be decreased below a POSIX-mandated +minimum, and there is a maximum value (currently 8192) that this may +not exceed. +The minimum value is system-dependent. +

+
+
COLUMNS + +
+

Used by the select command to determine the terminal width +when printing selection lists. +Automatically set if the checkwinsize option is enabled +(see The Shopt Builtin), or in an interactive shell upon receipt of a +SIGWINCH. +

+
+
COMP_CWORD + +
+

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

+
+
COMP_LINE + +
+

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

+
+
COMP_POINT + +
+

The index of the current cursor position relative to the beginning of +the current command. +If the current cursor position is at the end of the current command, +the value of this variable is equal to ${#COMP_LINE}. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (see Programmable Completion). +

+
+
COMP_TYPE + +
+

Set to an integer value corresponding to the type of completion attempted +that caused a completion function to be called: +TAB, for normal completion, +‘?’, for listing completions after successive tabs, +‘!’, for listing alternatives on partial word completion, +‘@’, to list completions if the word is not unmodified, +or +‘%’, for menu completion. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (see Programmable Completion). +

+
+
COMP_KEY + +
+

The key (or final key of a key sequence) used to invoke the current +completion function. +

+
+
COMP_WORDBREAKS + +
+

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

+
+
COMP_WORDS + +
+

An array variable consisting of the individual +words in the current command line. +The line is split into words as Readline would split it, using +COMP_WORDBREAKS as described above. +This variable is available only in shell functions invoked by the +programmable completion facilities (see Programmable Completion). +

+
+
COMPREPLY + +
+

An array variable from which Bash reads the possible completions +generated by a shell function invoked by the programmable completion +facility (see Programmable Completion). +Each array element contains one possible completion. +

+
+
COPROC + +
+

An array variable created to hold the file descriptors +for output from and input to an unnamed coprocess (see Coprocesses). +

+
+
DIRSTACK + +
+

An array variable containing the current contents of the directory stack. +Directories appear in the stack in the order they are displayed by the +dirs builtin. +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. +

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

+
+
ENV + +
+

Expanded and executed similarlty to BASH_ENV +(see Bash Startup Files) +when an interactive shell is invoked in +POSIX Mode (see Bash POSIX Mode). +

+
+
EPOCHREALTIME + +
+

Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch as a floating point value with micro-second granularity +(see the documentation for the C library function time for the +definition of Epoch). +Assignments to EPOCHREALTIME are ignored. +If EPOCHREALTIME +is unset, it loses its special properties, even if +it is subsequently reset. +

+
+
EPOCHSECONDS + +
+

Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see the documentation for the C library function +time for the definition of Epoch). +Assignments to EPOCHSECONDS are ignored. +If EPOCHSECONDS +is unset, it loses its special properties, even if +it is subsequently reset. +

+
+
EUID + +
+

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

+
+
EXECIGNORE + +
+

A colon-separated list of shell patterns (see Pattern Matching) +defining the list of filenames to be ignored by command search using +PATH. +Files whose full pathnames match one of these patterns are not considered +executable files for the purposes of completion and command execution +via PATH lookup. +This does not affect the behavior of the [, test, and [[ +commands. +Full pathnames in the command hash table are not subject to EXECIGNORE. +Use this variable to ignore shared library files that have the executable +bit set, but are not executable files. +The pattern matching honors the setting of the extglob shell +option. +

+
+
FCEDIT + +
+

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

+
+
FIGNORE + +
+

A colon-separated list of suffixes to ignore when performing +filename completion. +A filename whose suffix matches one of the entries in +FIGNORE +is excluded from the list of matched filenames. A sample +value is ‘.o:~’ +

+
+
FUNCNAME + +
+

An array variable containing the names of all shell functions +currently in the execution call stack. +The element with index 0 is the name of any currently-executing +shell function. +The bottom-most element (the one with the highest index) +is "main". +This variable exists only when a shell function is executing. +Assignments to FUNCNAME have no effect. +If FUNCNAME +is unset, it loses its special properties, even if +it is subsequently reset. +

+

This variable can be used with BASH_LINENO and BASH_SOURCE. +Each element of FUNCNAME has corresponding elements in +BASH_LINENO and BASH_SOURCE to describe the call stack. +For instance, ${FUNCNAME[$i]} was called from the file +${BASH_SOURCE[$i+1]} at line number ${BASH_LINENO[$i]}. +The caller builtin displays the current call stack using this +information. +

+
+
FUNCNEST + +
+

If set to a numeric value greater than 0, defines a maximum function +nesting level. Function invocations that exceed this nesting level +will cause the current command to abort. +

+
+
GLOBIGNORE + +
+

A colon-separated list of patterns defining the set of file names to +be ignored by filename expansion. +If a file name matched by a filename expansion pattern also matches one +of the patterns in GLOBIGNORE, it is removed from the list +of matches. +The pattern matching honors the setting of the extglob shell +option. +

+
+
GROUPS + +
+

An array variable containing the list of groups of which the current +user is a member. +Assignments to GROUPS have no effect. +If GROUPS +is unset, it loses its special properties, even if it is +subsequently reset. +

+
+
histchars + +
+

Up to three characters which control history expansion, quick +substitution, and tokenization (see History Interaction). +The first character is the +history expansion character, that is, the character which signifies the +start of a history expansion, normally ‘!’. The second character is the +character which signifies ‘quick substitution’ when seen as the first +character on a line, normally ‘^’. 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, usually ‘#’. 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. +

+
+
HISTCMD + +
+

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

+
+
HISTCONTROL + +
+

A colon-separated list of values controlling how commands are saved on +the history list. +If the list of values includes ‘ignorespace’, lines which begin +with a space character are not saved in the history list. +A value of ‘ignoredups’ causes lines which match 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 to which the command history is saved. The +default value is ~/.bash_history. +

+
+
HISTFILESIZE + +
+

The maximum number of lines contained in the history file. +When this variable is assigned a value, the history file is truncated, +if necessary, to contain no more than that number of lines +by removing the oldest entries. +The history file is also truncated to this size after +writing it when a shell exits. +If the value is 0, the history file is truncated to zero size. +Non-numeric values and numeric values less than zero inhibit truncation. +The shell sets the default value to the value of HISTSIZE +after reading any startup files. +

+
+
HISTIGNORE + +
+

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. +The pattern matching honors the setting of the extglob shell +option. +

+

HISTIGNORE subsumes the function of HISTCONTROL. A +pattern of ‘&’ is identical to ignoredups, and a +pattern of ‘[ ]*’ is identical to ignorespace. +Combining these two patterns, separating them with a colon, +provides the functionality of ignoreboth. +

+
+
HISTSIZE + +
+

The maximum number of commands to remember on the history list. +If the value is 0, commands are not saved in the history list. +Numeric values less than zero result in every command being saved +on the history list (there is no limit). +The shell sets the default value to 500 after reading any startup files. +

+
+
HISTTIMEFORMAT + +
+

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

+
+
HOSTFILE + +
+

Contains the name of a file in the same format as /etc/hosts that +should be read when the shell needs to complete a hostname. +The list of possible hostname completions may be changed while the shell +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, or does not name a readable file, +Bash attempts to read +/etc/hosts to obtain the list of possible hostname completions. +When HOSTFILE is unset, the hostname list is cleared. +

+
+
HOSTNAME + +
+

The name of the current host. +

+
+
HOSTTYPE + +
+

A string describing the machine Bash is running on. +

+
+
IGNOREEOF + +
+

Controls the action of the shell on receipt of an EOF character +as the sole input. If set, the value denotes the number +of consecutive EOF characters that can be read as the +first character on an input line +before the shell will exit. If the variable exists but does not +have a numeric value, or has no value, then the default is 10. +If the variable does not exist, then EOF signifies the end of +input to the shell. This is only in effect for interactive shells. +

+
+
INPUTRC + +
+

The name of the Readline initialization file, overriding the default +of ~/.inputrc. +

+
+
INSIDE_EMACS + +
+

If Bash finds this variable in the environment when the shell +starts, it assumes that the shell is running in an Emacs shell buffer +and may disable line editing depending on the value of TERM. +

+
+
LANG + +
+

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

+
+
LC_ALL + +
+

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

+
+
LC_COLLATE + +
+

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

+
+
LC_CTYPE + +
+

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

+
+
LC_MESSAGES + +
+

This variable determines the locale used to translate double-quoted +strings preceded by a ‘$’ (see Locale Translation). +

+
+
LC_NUMERIC + +
+

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

+
+
LC_TIME + +
+

This variable determines the locale category used for data and time +formatting. +

+
+
LINENO + +
+

The line number in the script or shell function currently executing. +If LINENO +is unset, it loses its special properties, even if it is +subsequently reset. +

+
+
LINES + +
+

Used by the select command to determine the column length +for printing selection lists. +Automatically set if the checkwinsize option is enabled +(see The Shopt Builtin), or in an interactive shell upon receipt of a +SIGWINCH. +

+
+
MACHTYPE + +
+

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

+
+
MAILCHECK + +
+

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

+
+
MAPFILE + +
+

An array variable created to hold the text read by the +mapfile builtin when no variable name is supplied. +

+
+
OLDPWD + +
+

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

+
+
OPTERR + +
+

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

+
+
OSTYPE + +
+

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

+
+
PIPESTATUS + +
+

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

+
+
POSIXLY_CORRECT + +
+

If this variable is in the environment when Bash starts, the shell +enters POSIX mode (see Bash POSIX Mode) before reading the +startup files, as if the --posix invocation option had been supplied. +If it is set while the shell is running, Bash enables POSIX mode, +as if the command +

+
set -o posix
+
+

had been executed. +When the shell enters POSIX mode, it sets this variable if it was +not already set. +

+
+
PPID + +
+

The process ID of the shell’s parent process. This variable +is readonly. +

+
+
PROMPT_COMMAND + +
+

If this variable is set, and is an array, +the value of each set element is interpreted as a command to execute +before printing the primary prompt ($PS1). +If this is set but not an array variable, +its value is used as a command to execute instead. +

+
+
PROMPT_DIRTRIM + +
+

If set to a number greater than zero, the value is used as the number of +trailing directory components to retain when expanding the \w and +\W prompt string escapes (see Controlling the Prompt). +Characters removed are replaced with an ellipsis. +

+
+
PS0 + +
+

The value of this parameter is expanded like PS1 +and displayed by interactive shells after reading a command +and before the command is executed. +

+
+
PS3 + +
+

The value of this variable is used as the prompt for the +select command. If this variable is not set, the +select command prompts with ‘#? ’ +

+
+
PS4 + +
+

The value of this parameter is expanded like PS1 +and the expanded value is the prompt printed before the command line +is echoed when the -x option is set (see The Set Builtin). +The first character of the expanded value is replicated multiple times, +as necessary, to indicate multiple levels of indirection. +The default is ‘+ ’. +

+
+
PWD + +
+

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

+
+
RANDOM + +
+

Each time this parameter is referenced, it expands to a random integer +between 0 and 32767. Assigning a value to this +variable seeds the random number generator. +If RANDOM +is unset, it loses its special properties, even if it is +subsequently reset. +

+
+
READLINE_LINE + +
+

The contents of the Readline line buffer, for use +with ‘bind -x’ (see Bash Builtins). +

+
+
READLINE_MARK + +
+

The position of the mark (saved insertion point) in the +Readline line buffer, for use +with ‘bind -x’ (see Bash Builtins). +The characters between the insertion point and the mark are often +called the region. +

+
+
READLINE_POINT + +
+

The position of the insertion point in the Readline line buffer, for use +with ‘bind -x’ (see Bash Builtins). +

+
+
REPLY + +
+

The default variable for the read builtin. +

+
+
SECONDS + +
+

This variable expands to the number of seconds since the +shell was started. Assignment to this variable resets +the count to the value assigned, and the expanded value +becomes the value assigned plus the number of seconds +since the assignment. +The number of seconds at shell invocation and the current time is always +determined by querying the system clock. +If SECONDS +is unset, it loses its special properties, +even if it is subsequently reset. +

+
+
SHELL + +
+

This environment variable expands to the full pathname to the shell. +If it is not set when the shell starts, +Bash assigns to it the full pathname of the current user’s login shell. +

+
+
SHELLOPTS + +
+

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

+
+
SHLVL + +
+

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

+
+
SRANDOM + +
+

This variable expands to a 32-bit pseudo-random number each time it is +referenced. The random number generator is not linear on systems that +support /dev/urandom or arc4random, so each returned number +has no relationship to the numbers preceding it. +The random number generator cannot be seeded, so assignments to this +variable have no effect. +If SRANDOM +is unset, it loses its special properties, +even if it is subsequently reset. +

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

+
$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
+
+

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 (see Bash Builtins). +The select command (see Conditional Constructs) 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 a line of input after issuing +the primary prompt. +Bash +terminates after waiting for that number of seconds if a complete +line of input does not arrive. +

+
+
TMPDIR + +
+

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

+
+
UID + +
+

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

+
+
+ +
+
+

+Next: , Previous: , Up: Top   [Contents][Index]

+
+

6 Bash Features

+ +

This chapter describes features unique to Bash. +

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

6.1 Invoking Bash

+ +
+
bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o option]
+    [-O shopt_option] [argument …]
+bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o option]
+    [-O shopt_option] -c string [argument …]
+bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o option]
+    [-O shopt_option] [argument …]
+
+ +

All of the single-character options used with the set builtin +(see The Set Builtin) can be used as options when the shell is invoked. +In addition, there are several multi-character +options that you can use. These options must appear on the command +line before the single-character options to be recognized. +

+
+
--debugger
+

Arrange for the debugger profile to be executed before the shell +starts. Turns on extended debugging mode (see The Shopt Builtin +for a description of the extdebug option to the shopt +builtin). +

+
+
--dump-po-strings
+

A list of all double-quoted strings preceded by ‘$’ +is printed on the standard output +in the GNU gettext PO (portable object) file format. +Equivalent to -D except for the output format. +

+
+
--dump-strings
+

Equivalent to -D. +

+
+
--help
+

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

+
+
--init-file filename
+
--rcfile filename
+

Execute commands from filename (instead of ~/.bashrc) +in an interactive shell. +

+
+
--login
+

Equivalent to -l. +

+
+
--noediting
+

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

+
+
--noprofile
+

Don’t load the system-wide startup file /etc/profile +or any of the personal initialization files +~/.bash_profile, ~/.bash_login, or ~/.profile +when Bash is invoked as a login shell. +

+
+
--norc
+

Don’t read the ~/.bashrc initialization file in an +interactive shell. This 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. This +is intended to make Bash behave as a strict superset of that +standard. See Bash POSIX Mode, for a description of the Bash +POSIX mode. +

+
+
--restricted
+

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

+
+
--verbose
+

Equivalent to -v. Print shell input lines as they’re read. +

+
+
--version
+

Show version information for this instance of +Bash on the standard output and exit successfully. +

+
+ +

There are several single-character options that may be supplied at +invocation which are not available with the set builtin. +

+
+
-c
+

Read and execute commands from the first non-option argument +command_string, then exit. +If there are arguments after the command_string, +the first argument is assigned to $0 +and any remaining arguments are assigned to the positional parameters. +The assignment to $0 sets the name of the shell, which is used +in warning and error messages. +

+
+
-i
+

Force the shell to run interactively. Interactive shells are +described in Interactive Shells. +

+
+
-l
+

Make this shell act as if it had been directly invoked by login. +When the shell is interactive, this is equivalent to starting a +login shell with ‘exec -l bash’. +When the shell is not interactive, the login shell startup files will +be executed. +‘exec bash -l’ or ‘exec bash --login’ +will replace the current shell with a Bash login shell. +See Bash Startup Files, for a description of the special behavior +of a login shell. +

+
+
-r
+

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

+
+
-s
+

If this 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 or when reading input +through a pipe. +

+
+
-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 (see Locale Translation). +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 The Shopt Builtin). +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. +

+
+ + +

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

+ +

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

+

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 (see Shell Scripts). +When 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. +

+
+
+

+Next: , Previous: , Up: Bash Features   [Contents][Index]

+
+

6.2 Bash Startup Files

+ + +

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

+

Interactive shells are described in Interactive Shells. +

+

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

+ +

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 an interactive login shell exits, +or a non-interactive login shell executes the exit builtin command, +Bash reads and executes commands from +the file ~/.bash_logout, if it exists. +

+

Invoked as an interactive non-login shell

+ +

When an interactive shell that is not a login shell is started, Bash +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. +

+

So, typically, your ~/.bash_profile contains the line +

+
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
+
+

after (or before) any login-specific initializations. +

+

Invoked non-interactively

+ +

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

+

As noted above, if a non-interactive shell is invoked with the +--login option, Bash attempts to read and execute commands from the +login shell startup files. +

+

Invoked with name sh

+ +

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

+

Invoked in POSIX mode

+ +

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

+

Invoked by remote shell daemon

+ +

Bash attempts to determine when it is being run with its standard input +connected to a network connection, as when executed by the remote shell +daemon, usually rshd, or the secure shell daemon sshd. +If Bash determines it is being run in +this fashion, 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 +neither rshd nor sshd generally invoke the shell with those +options or allow them to be specified. +

+

Invoked with unequal effective and real UID/GIDs

+ +

If Bash is started with the effective user (group) id not equal to the +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, BASHOPTS, CDPATH, and GLOBIGNORE +variables, if they appear in the environment, are 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. +

+
+ +

6.3 Interactive Shells

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

6.3.1 What is an Interactive Shell?

+ +

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

+

An interactive shell generally reads from and writes to a user’s +terminal. +

+

The -s invocation option may be used to set the positional parameters +when an interactive shell is started. +

+
+ +

6.3.2 Is this Shell Interactive?

+ +

To determine within a startup script whether or not Bash is +running interactively, +test the value of the ‘-’ special parameter. +It contains i when the shell is interactive. For example: +

+
+
case "$-" in
+*i*)	echo This shell is interactive ;;
+*)	echo This shell is not interactive ;;
+esac
+
+ +

Alternatively, startup scripts may examine the variable +PS1; it is unset in non-interactive shells, and set in +interactive shells. Thus: +

+
+
if [ -z "$PS1" ]; then
+        echo This shell is not interactive
+else
+        echo This shell is interactive
+fi
+
+ +
+ +

6.3.3 Interactive Shell Behavior

+ +

When the shell is running interactively, it changes its behavior in +several ways. +

+
    +
  1. Startup files are read and executed as described in Bash Startup Files. + +
  2. Job Control (see Job Control) is enabled by default. When job +control is in effect, Bash ignores the keyboard-generated job control +signals SIGTTIN, SIGTTOU, and SIGTSTP. + +
  3. Bash expands and displays PS1 before reading the first line +of a command, and expands and displays PS2 before reading the +second and subsequent lines of a multi-line command. +Bash expands and displays PS0 after it reads a command but before +executing it. +See Controlling the Prompt, for a complete list of prompt +string escape sequences. + +
  4. Bash executes the values of the set elements of the PROMPT_COMMANDS +array variable as commands before printing the primary prompt, $PS1 +(see Bash Variables). + +
  5. Readline (see Command Line Editing) is used to read commands from +the user’s terminal. + +
  6. Bash inspects the value of the ignoreeof option to set -o +instead of exiting immediately when it receives an EOF on its +standard input when reading a command (see The Set Builtin). + +
  7. Command history (see Bash History Facilities) +and history expansion (see History Interaction) +are enabled by default. +Bash will save the command history to the file named by $HISTFILE +when a shell with history enabled exits. + +
  8. Alias expansion (see Aliases) is performed by default. + +
  9. In the absence of any traps, Bash ignores SIGTERM +(see Signals). + +
  10. In the absence of any traps, SIGINT is caught and handled +(see Signals). +SIGINT will interrupt some shell builtins. + +
  11. An interactive login shell sends a SIGHUP to all jobs on exit +if the huponexit shell option has been enabled (see Signals). + +
  12. The -n invocation option is ignored, and ‘set -n’ has +no effect (see The Set Builtin). + +
  13. Bash will check for mail periodically, depending on the values of the +MAIL, MAILPATH, and MAILCHECK shell variables +(see Bash Variables). + +
  14. Expansion errors due to references to unbound shell variables after +‘set -u’ has been enabled will not cause the shell to exit +(see The Set Builtin). + +
  15. The shell will not exit on expansion errors caused by var being unset +or null in ${var:?word} expansions +(see Shell Parameter Expansion). + +
  16. Redirection errors encountered by shell builtins will not cause the +shell to exit. + +
  17. When running in POSIX mode, a special builtin returning an error +status will not cause the shell to exit (see Bash POSIX Mode). + +
  18. A failed exec will not cause the shell to exit +(see Bourne Shell Builtins). + +
  19. Parser syntax errors will not cause the shell to exit. + +
  20. Simple spelling correction for directory arguments to the cd +builtin is enabled by default (see the description of the cdspell +option to the shopt builtin in The Shopt Builtin). + +
  21. The shell will check the value of the TMOUT variable and exit +if a command is not read within the specified number of seconds after +printing $PS1 (see Bash Variables). + +
+ +
+ +

6.4 Bash Conditional Expressions

+ + +

Conditional expressions are used by the [[ compound command +and the test and [ builtin commands. The test +and [ commands determine their behavior based on the number +of arguments; see the descriptions of those commands for any other +command-specific actions. +

+

Expressions may be unary or binary, +and are formed from the following primaries. +Unary expressions are often used to examine the status of a file. +There are string operators and numeric comparison operators as well. +Bash handles several filenames specially when they are used in +expressions. +If the operating system on which Bash is running provides these +special files, Bash will use them; otherwise it will emulate them +internally with this behavior: +If the 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. +

+

When used with [[, the ‘<’ and ‘>’ operators sort +lexicographically using the current locale. +The test command uses ASCII ordering. +

+

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 its set-group-id bit is set. +

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

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

+
+
-N file
+

True if file exists and has been modified since it was last read. +

+
+
-O file
+

True if file exists and is owned by the effective user id. +

+
+
-S file
+

True if file exists and is a socket. +

+
+
file1 -ef file2
+

True if file1 and file2 refer to the same device and +inode numbers. +

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

+
+
-o optname
+

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

+
+
-v varname
+

True if the shell variable varname is set (has been assigned a value). +

+
+
-R varname
+

True if the shell variable varname is set and is a name reference. +

+
+
-z string
+

True if the length of string is zero. +

+
+
-n string
+
string
+

True if the length of string is non-zero. +

+
+
string1 == string2
+
string1 = string2
+

True if the strings are equal. +When used with the [[ command, this performs pattern matching as +described above (see Conditional Constructs). +

+

=’ should be used with the test command for POSIX conformance. +

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

+
+
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. +When used with the [[ command, Arg1 and Arg2 +are evaluated as arithmetic expressions (see Shell Arithmetic). +

+
+ +
+ +

6.5 Shell Arithmetic

+ + + + + + +

The shell allows arithmetic expressions to be evaluated, as one of +the shell expansions or by using the (( compound command, the +let builtin, or the -i option to the declare builtin. +

+

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

+

Integer constants follow the C language definition, without suffixes or +character constants. +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 the optional base +is a decimal number between 2 and 64 representing the arithmetic +base, and n is a number in that base. +If base# is omitted, then base 10 is used. +When specifying n, +if a non-digit is required, +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. +

+
+
+

+Next: , Previous: , Up: Bash Features   [Contents][Index]

+
+

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

+

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 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, +as in csh. +If arguments are needed, a shell function should be used +(see Shell Functions). +

+

Aliases are not expanded when the shell is not interactive, +unless the expand_aliases shell option is set using +shopt (see The Shopt Builtin). +

+

The rules concerning the definition and use of aliases are +somewhat confusing. Bash +always reads at least one complete line of input, +and all lines that make up a compound command, +before executing any of the commands on that line or the compound command. +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 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, shell functions are preferred over aliases. +

+
+
+

+Next: , Previous: , Up: Bash Features   [Contents][Index]

+
+

6.7 Arrays

+ + +

Bash provides one-dimensional indexed and associative array variables. +Any variable may be used as an indexed 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. +Indexed arrays are referenced using integers (including arithmetic +expressions (see Shell Arithmetic)) and are zero-based; +associative arrays use arbitrary strings. +Unless otherwise noted, indexed array indices must be non-negative integers. +

+

An indexed array is created automatically if any variable is assigned to +using the syntax +

+
name[subscript]=value
+
+ +

The subscript +is treated as an arithmetic expression that must evaluate to a number. +To explicitly declare an array, use +

+
declare -a name
+
+

The syntax +

+
declare -a name[subscript]
+
+

is also accepted; the subscript is ignored. +

+

Associative arrays are created using +

+
declare -A name
+
+ +

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 value2 … )
+
+

where each +value may be of the form [subscript]=string. +Indexed array assignments do not require anything but string. +When assigning to indexed arrays, if +the optional subscript is 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. +

+

Each value in the list undergoes all the shell expansions +described above (see Shell Expansions). +

+

When assigning to an associative array, the words in a compound assignment +may be either assignment statements, for which the subscript is required, +or a list of words that is interpreted as a sequence of alternating keys +and values: +name=(key1 value1 key2 value2 … ). +These are treated identically to +name=( [key1]=value1 [key2]=value2 … ). +The first word in the list determines how the remaining words +are interpreted; all assignments in a list must be of the same type. +When using key/value pairs, the keys may not be missing or empty; +a final missing value is treated like the empty string. +

+

This syntax is also accepted by the declare +builtin. Individual array elements may be assigned to using the +name[subscript]=value syntax introduced above. +

+

When assigning to an indexed array, if name +is subscripted by a negative number, that number is +interpreted as relative to one greater than the maximum index of +name, so negative indices count back from the end of the +array, and an index of -1 references the last element. +

+

Any element of an array may be referenced using +${name[subscript]}. +The braces are required to avoid +conflicts with the shell’s filename expansion operators. If the +subscript is ‘@’ or ‘*’, the word expands to all members +of the array 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 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 ‘*’. +${#name[subscript]} expands to the length of +${name[subscript]}. +If subscript is ‘@’ or +‘*’, the expansion is the number of elements in the array. +If the subscript +used to reference an element of an indexed array +evaluates to a number less than zero, it is +interpreted as relative to one greater than the maximum index of the array, +so negative indices count back from the end of the array, +and an index of -1 refers to the last element. +

+

Referencing an array variable without a subscript is equivalent to +referencing with a subscript of 0. +Any reference to a variable using a valid subscript is legal, and +bash will create an array if necessary. +

+

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

+

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

+

The unset builtin is used to destroy arrays. +unset name[subscript] +destroys the array element at index subscript. +Negative subscripts to indexed arrays are interpreted as described above. +Unsetting the last element of an array variable does not unset the variable. +unset name, where name is an array, removes the +entire array. A subscript of ‘*’ or ‘@’ also removes the +entire array. +

+

When using a variable name with a subscript as an argument to a command, +such as with unset, without using the word expansion syntax +described above, the argument is subject to the shell’s filename expansion. +If filename expansion is not desired, the argument should be quoted. +

+

The declare, local, and readonly +builtins each accept a -a option to specify an indexed +array and a -A option to specify an associative array. +If both options are supplied, -A takes precedence. +The read builtin accepts a -a +option to assign a list of words read from the standard input +to an array, and can read values from the standard input into +individual array elements. The set and declare +builtins display array values in a way that allows them to be +reused as input. +

+
+
+

+Next: , Previous: , Up: Bash Features   [Contents][Index]

+
+

6.8 The Directory Stack

+ + + + + + +

The directory stack is a list of recently-visited directories. The +pushd builtin adds directories to the stack as it changes +the current directory, and the popd builtin removes specified +directories from the stack and changes the current directory to +the directory removed. The dirs builtin displays the contents +of the directory stack. The current directory is always the "top" +of the directory stack. +

+

The contents of the directory stack are also visible +as the value of the DIRSTACK shell variable. +

+
+ +

6.8.1 Directory Stack Builtins

+ +
+
dirs
+
+
+
dirs [-clpv] [+N | -N]
+
+ +

Display the list of currently remembered directories. Directories +are added to the list with the pushd command; the +popd command removes directories from the list. +The current directory is always the first directory in the stack. +

+
+
-c
+

Clears the directory stack by deleting all of the elements. +

+
-l
+

Produces a listing using full pathnames; +the default listing format uses a tilde to denote the home directory. +

+
-p
+

Causes dirs to print the directory stack with one entry per +line. +

+
-v
+

Causes dirs to print the directory stack with one entry per +line, prefixing each entry with its index in the stack. +

+
+N
+

Displays the Nth directory (counting from the left of the +list printed by dirs when invoked without options), starting +with zero. +

+
-N
+

Displays the Nth directory (counting from the right of the +list printed by dirs when invoked without options), starting +with zero. +

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

When no arguments are given, popd +removes the top directory from the stack and +performs a cd to the new top directory. +The elements are numbered from 0 starting at the first directory +listed with dirs; that is, popd is equivalent to popd +0. +

+
+
-n
+

Suppresses the normal change of directory when removing directories +from the stack, so that only the stack is manipulated. +

+
+N
+

Removes the Nth directory (counting from the left of the +list printed by dirs), starting with zero. +

+
-N
+

Removes the Nth directory (counting from the right of the +list printed by dirs), starting with zero. +

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

Save the current directory on the top of the directory stack +and then cd to dir. +With no arguments, pushd exchanges the top two directories +and makes the new top the current directory. +

+
+
-n
+

Suppresses the normal change of directory when rotating or +adding directories to the stack, so that only the stack is manipulated. +

+
+N
+

Brings the Nth directory (counting from the left of the +list printed by dirs, starting with zero) to the top of +the list by rotating the stack. +

+
-N
+

Brings the Nth directory (counting from the right of the +list printed by dirs, starting with zero) to the top of +the list by rotating the stack. +

+
dir
+

Makes dir be the top of the stack, making +it the new current directory as if it had been supplied as an argument +to the cd builtin. +

+
+
+
+ +
+ +

6.9 Controlling the Prompt

+ + +

Bash examines the value of the array variable PROMPT_COMMANDS just before +printing each primary prompt. +If any elements in PROMPT_COMMANDS are set and non-null, Bash +executes each value, in numeric order, +just as if it had been typed on the command line. +

+

In addition, the following table describes the special characters which +can appear in the prompt variables PS0, PS1, PS2, and +PS4: +

+
+
\a
+

A bell character. +

+
\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 escape character. +

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

A newline. +

+
\r
+

A carriage return. +

+
\s
+

The name of the shell, the basename of $0 (the portion +following the final slash). +

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

+
\A
+

The 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 + patchlevel (e.g., 2.00.0) +

+
\w
+

The current working directory, with $HOME abbreviated with a tilde +(uses the $PROMPT_DIRTRIM variable). +

+
\W
+

The basename of $PWD, with $HOME abbreviated with a tilde. +

+
\!
+

The history number of this command. +

+
\#
+

The command number of this command. +

+
\$
+

If the effective uid is 0, #, otherwise $. +

+
\nnn
+

The character whose ASCII code is the octal value nnn. +

+
\\
+

A backslash. +

+
\[
+

Begin a sequence of non-printing characters. This 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 Bash History Facilities), 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 Shopt Builtin). +This can have unwanted side effects if escaped portions of the string +appear within command substitution or contain characters special to +word expansion. +

+
+ +

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, +HISTFILE, +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 history +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 +(see Shell Scripts), rbash turns off any restrictions in +the shell spawned to execute the script. +

+

The restricted shell mode is only one component of a useful restricted +environment. It should be accompanied by setting PATH to a value +that allows execution of only a few verified commands (commands that +allow shell escapes are particularly vulnerable), leaving the user +in a non-writable directory other than his home directory after login, +not allowing the restricted shell to execute shell scripts, and cleaning +the environment of variables that cause some commands to modify their +behavior (e.g., VISUAL or PAGER). +

+

Modern systems provide more secure ways to implement a restricted environment, +such as jails, zones, or containers. +

+ +
+ +

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 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. Bash ensures that the POSIXLY_CORRECT variable is set. + +
  2. 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’. + +
  3. Bash will not insert a command without the execute bit set into the +command hash table, even if it returns it as a (last-ditch) result +from a $PATH search. + +
  4. The message printed by the job control code and builtins when a job +exits with a non-zero status is ‘Done(status)’. + +
  5. The message printed by the job control code and builtins when a job +is stopped is ‘Stopped(signame)’, where signame is, for +example, SIGTSTP. + +
  6. Alias expansion is always enabled, even in non-interactive shells. + +
  7. Reserved words appearing in a context where reserved words are recognized +do not undergo alias expansion. + +
  8. The POSIX PS1 and PS2 expansions of ‘!’ to +the history number and ‘!!’ to ‘!’ are enabled, +and parameter expansion is performed on the values of PS1 and +PS2 regardless of the setting of the promptvars option. + +
  9. The POSIX startup files are executed ($ENV) rather than +the normal Bash files. + +
  10. Tilde expansion is only performed on assignments preceding a command +name, rather than on all assignment statements on the line. + +
  11. The default history file is ~/.sh_history (this is the +default value of $HISTFILE). + +
  12. Redirection operators do not perform filename expansion on the word +in the redirection unless the shell is interactive. + +
  13. Redirection operators do not perform word splitting on the word in the +redirection. + +
  14. Function names must be valid shell names. 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. + +
  15. Function names may not be the same as one of the POSIX special +builtins. + +
  16. POSIX special builtins are found before shell functions +during command lookup. + +
  17. When printing shell function definitions (e.g., by type), Bash does +not print the function keyword. + +
  18. Literal tildes that appear as the first character in elements of +the PATH variable are not expanded as described above +under Tilde Expansion. + +
  19. The time reserved word may be used by itself as a command. When +used in this way, it displays timing statistics for the shell and its +completed children. The TIMEFORMAT variable controls the format +of the timing information. + +
  20. When parsing and expanding a ${…} expansion that appears within +double quotes, single quotes are no longer special and cannot be used to +quote a closing brace or other special character, unless the operator is +one of those defined to perform pattern removal. In this case, they do +not have to appear as matched pairs. + +
  21. The parser does not recognize time as a reserved word if the next +token begins with a ‘-’. + + +
  22. The ‘!’ character does not introduce history expansion within a +double-quoted string, even if the histexpand option is enabled. + +
  23. If a POSIX special builtin returns an error status, a +non-interactive shell exits. The fatal errors are those listed in +the POSIX standard, and include things like passing incorrect options, +redirection errors, variable assignment errors for assignments preceding +the command name, and so on. + +
  24. 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. + +
  25. A non-interactive shell exits with an error status if a variable +assignment error occurs in an assignment statement preceding a special +builtin, but not with any other simple command. + +
  26. 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. + +
  27. Non-interactive shells exit if filename in . filename +is not found. + +
  28. Non-interactive shells exit if a syntax error in an arithmetic expansion +results in an invalid expression. + +
  29. Non-interactive shells exit if a parameter expansion error occurs. + +
  30. Non-interactive shells exit if there is a syntax error in a script read +with the . or source builtins, or in a string processed by +the eval builtin. + +
  31. While variable indirection is available, it may not be applied to the +‘#’ and ‘?’ special parameters. + +
  32. When expanding the ‘*’ special parameter in a pattern context where the +expansion is double-quoted does not treat the $* as if it were +double-quoted. + +
  33. Assignment statements preceding POSIX special builtins +persist in the shell environment after the builtin completes. + +
  34. The command builtin does not prevent builtins that take assignment +statements as arguments from expanding them as assignment statements; +when not in POSIX mode, assignment builtins lose their assignment +statement expansion properties when preceded by command. + +
  35. 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. + +
  36. The output of ‘kill -l’ prints all the signal names on a single line, +separated by spaces, without the ‘SIG’ prefix. + +
  37. The kill builtin does not accept signal names with a ‘SIG’ +prefix. + +
  38. The export and readonly builtin commands display their +output in the format required by POSIX. + +
  39. The trap builtin displays signal names without the leading +SIG. + +
  40. 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. + +
  41. trap -p displays signals whose dispositions are set to SIG_DFL and +those that were ignored when the shell started. + +
  42. The . and source builtins do not search the current directory +for the filename argument if it is not found by searching PATH. + +
  43. Enabling POSIX mode has the effect of setting the +inherit_errexit option, so +subshells spawned to execute command substitutions inherit the value of +the -e option from the parent shell. +When the inherit_errexit option is not enabled, +Bash clears the -e option in such subshells. + +
  44. Enabling POSIX mode has the effect of setting the +shift_verbose option, so numeric arguments to shift +that exceed the number of positional parameters will result in an +error message. + +
  45. When the alias builtin displays alias definitions, it does not +display them with a leading ‘alias ’ unless the -p option +is supplied. + +
  46. When the set builtin is invoked without options, it does not display +shell function names and definitions. + +
  47. 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. + +
  48. 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. + +
  49. When the cd builtin cannot change a directory because the +length of the pathname +constructed from $PWD and the directory name supplied as an argument +exceeds PATH_MAX when all symbolic links are expanded, cd will +fail instead of attempting to use only the supplied directory name. + +
  50. 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. + +
  51. When listing the history, the fc builtin does not include an +indication of whether or not a history entry has been modified. + +
  52. The default editor used by fc is ed. + +
  53. 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. + +
  54. The vi editing mode will invoke the vi editor directly when +the ‘v’ command is run, instead of checking $VISUAL and +$EDITOR. + +
  55. 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. + +
  56. The ulimit builtin uses a block size of 512 bytes for the -c +and -f options. + +
  57. The arrival of SIGCHLD when a trap is set on SIGCHLD does +not interrupt the wait builtin and cause it to return immediately. +The trap command is run once for each child that exits. + +
  58. The read builtin may be interrupted by a signal for which a trap +has been set. +If Bash receives a trapped signal while executing read, the trap +handler executes and read returns an exit status greater than 128. + +
  59. Bash removes an exited background process’s status from the list of such +statuses after the wait builtin is used to obtain it. + +
+ +

There is other POSIX 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 +(see Optional Features). +

+
+
+

+Previous: , Up: Bash Features   [Contents][Index]

+
+

6.12 Shell Compatibility Mode

+ + + +

Bash-4.0 introduced the concept of a ‘shell compatibility level’, specified +as a set of options to the shopt builtin +(compat31, +compat32, +compat40, +compat41, +and so on). +There is only one current +compatibility level – each option is mutually exclusive. +The compatibility level is intended to allow users to select behavior +from previous versions that is incompatible with newer versions +while they migrate scripts to use current features and +behavior. It’s intended to be a temporary solution. +

+

This section does not mention behavior that is standard for a particular +version (e.g., setting compat32 means that quoting the rhs of the regexp +matching operator quotes special regexp characters in the word, which is +default behavior in bash-3.2 and above). +

+

If a user enables, say, compat32, it may affect the behavior of other +compatibility levels up to and including the current compatibility level. +The idea is that each compatibility level controls behavior that changed +in that version of Bash, +but that behavior may have been present in earlier versions. +For instance, the change to use locale-based comparisons with the [[ +command came in bash-4.1, and earlier versions used ASCII-based comparisons, +so enabling compat32 will enable ASCII-based comparisons as well. +That granularity may not be sufficient for +all uses, and as a result users should employ compatibility levels carefully. +Read the documentation for a particular feature to find out the +current behavior. +

+

Bash-4.3 introduced a new shell variable: BASH_COMPAT. +The value assigned +to this variable (a decimal version number like 4.2, or an integer +corresponding to the compatNN option, like 42) determines the +compatibility level. +

+

Starting with bash-4.4, Bash has begun deprecating older compatibility +levels. +Eventually, the options will be removed in favor of BASH_COMPAT. +

+

Bash-5.0 is the final version for which there will be an individual shopt +option for the previous version. Users should use BASH_COMPAT +on bash-5.0 and later versions. +

+

The following table describes the behavior changes controlled by each +compatibility level setting. +The compatNN tag is used as shorthand for setting the +compatibility level +to NN using one of the following mechanisms. +For versions prior to bash-5.0, the compatibility level may be set using +the corresponding compatNN shopt option. +For bash-4.3 and later versions, the BASH_COMPAT variable is preferred, +and it is required for bash-5.1 and later versions. +

+
+
compat31
+
    +
  • quoting the rhs of the [[ command’s regexp matching operator (=~) +has no special effect +
+ +
+
compat32
+
    +
  • interrupting a command list such as "a ; b ; c" causes the execution +of the next command in the list (in bash-4.0 and later versions, +the shell acts as if it received the interrupt, so +interrupting one command in a list aborts the execution of the +entire list) +
+ +
+
compat40
+
    +
  • the ‘<’ and ‘>’ operators to the [[ command do not +consider the current locale when comparing strings; they use ASCII +ordering. +Bash versions prior to bash-4.1 use ASCII collation and strcmp(3); +bash-4.1 and later use the current locale’s collation sequence and +strcoll(3). +
+ +
+
compat41
+
    +
  • in posix mode, time may be followed by options and still be +recognized as a reserved word (this is POSIX interpretation 267) +
  • in posix mode, the parser requires that an even number of single +quotes occur in the word portion of a double-quoted ${…} +parameter expansion and treats them specially, so that characters within +the single quotes are considered quoted +(this is POSIX interpretation 221) +
+ +
+
compat42
+
    +
  • the replacement string in double-quoted pattern substitution does not +undergo quote removal, as it does in versions after bash-4.2 +
  • in posix mode, single quotes are considered special when expanding +the word portion of a double-quoted ${…} parameter expansion +and can be used to quote a closing brace or other special character +(this is part of POSIX interpretation 221); +in later versions, single quotes +are not special within double-quoted word expansions +
+ +
+
compat43
+
    +
  • the shell does not print a warning message if an attempt is made to +use a quoted compound assignment as an argument to declare +(declare -a foo=’(1 2)’). Later versions warn that this usage is +deprecated +
  • word expansion errors are considered non-fatal errors that cause the +current command to fail, even in posix mode +(the default behavior is to make them fatal errors that cause the shell +to exit) +
  • when executing a shell function, the loop state (while/until/etc.) +is not reset, so break or continue in that function will break +or continue loops in the calling context. Bash-4.4 and later reset +the loop state to prevent this +
+ +
+
compat44
+
    +
  • the shell sets up the values used by BASH_ARGV and BASH_ARGC +so they can expand to the shell’s positional parameters even if extended +debugging mode is not enabled +
  • a subshell inherits loops from its parent context, so break +or continue will cause the subshell to exit. +Bash-5.0 and later reset the loop state to prevent the exit +
  • variable assignments preceding builtins like export and readonly +that set attributes continue to affect variables with the same +name in the calling environment even if the shell is not in posix +mode +
+ +
+
compat50 (set using BASH_COMPAT)
+
    +
  • Bash-5.1 changed the way $RANDOM is generated to introduce slightly +more randomness. If the shell compatibility level is set to 50 or +lower, it reverts to the method from bash-5.0 and previous versions, +so seeding the random number generator by assigning a value to +RANDOM will produce the same sequence as in bash-5.0 +
  • If the command hash table is empty, Bash versions prior to bash-5.1 +printed an informational message to that effect, even when producing +output that can be reused as input. Bash-5.1 suppresses that message +when the -l option is supplied. +
+
+
+ +
+
+

+Next: , Previous: , Up: Top   [Contents][Index]

+
+

7 Job Control

+ +

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

+ + + + + + +
+ +

7.1 Job Control Basics

+ + + + + +

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 operating system kernel’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, 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, if +the user so specifies with stty tostop, write to the terminal. +Background processes which attempt to +read from (write to when stty tostop is in effect) the +terminal are sent a SIGTTIN (SIGTTOU) +signal by the kernel’s 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 then manipulates 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 specification (jobspec). +

+

Job number n may be referred to as ‘%n’. +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. +A single ‘%’ (with no accompanying job specification) also refers +to the current job. +The previous job may be referenced using ‘%-’. +If there is only a single job, ‘%+’ and ‘%-’ can both be used +to refer to that job. +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 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 job whose command name begins with ‘ce’. +Using ‘%?ce’, on the +other hand, refers to any job containing the string ‘ce’ in +its command line. If the prefix or substring matches more than one job, +Bash reports an error. +

+

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 is enabled, +Bash reports such changes immediately (see The Set Builtin). +Any trap on SIGCHLD is executed for each child process +that exits. +

+

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

+

When the shell is waiting for a job or process using the wait +builtin, and job control is enabled, wait will return when the +job changes state. The -f option causes wait to wait +until the job or process terminates before returning. +

+
+ +

7.2 Job Control Builtins

+ +
+
bg
+
+
+
bg [jobspec …]
+
+ +

Resume each suspended job jobspec in the background, as if it +had been started with ‘&’. +If jobspec is not supplied, the current job is used. +The return status is zero unless it is run when job control is not +enabled, or, when run with job control enabled, any +jobspec was not found or specifies a job +that was started without job control. +

+
+
fg
+
+
+
fg [jobspec]
+
+ +

Resume the job jobspec in the foreground and make it the current job. +If jobspec is not supplied, the current job is used. +The return status is that of the command placed into the foreground, +or non-zero if run when job control is disabled or, when run with +job control enabled, jobspec does not specify a valid job or +jobspec specifies a job that was started without job control. +

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

The first form lists the active jobs. The options have the +following meanings: +

+
+
-l
+

List process IDs in addition to the normal information. +

+
+
-n
+

Display information only about jobs that have changed status since +the user was last notified of their status. +

+
+
-p
+

List only the process ID of the job’s process group leader. +

+
+
-r
+

Display only running jobs. +

+
+
-s
+

Display only stopped jobs. +

+
+ +

If jobspec is given, +output is restricted to information about that job. +If jobspec is not supplied, the status of all jobs is +listed. +

+

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

+
+
kill
+
+
+
kill [-s sigspec] [-n signum] [-sigspec] jobspec or pid
+kill -l|-L [exit_status]
+
+ +

Send a signal specified by sigspec or signum to the process +named by job specification jobspec or process ID pid. +sigspec is either a case-insensitive signal name such as +SIGINT (with or without the SIG prefix) +or a signal number; signum is a signal number. +If sigspec and signum are not present, SIGTERM is used. +The -l option 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 zero. +exit_status is a number specifying a signal number or the exit +status of a process terminated by a signal. +The -L option is equivalent to -l. +The return status is zero if at least one signal was successfully sent, +or non-zero if an error occurs or an invalid option is encountered. +

+
+
wait
+
+
+
wait [-fn] [-p varname] [jobspec or pid …]
+
+ +

Wait until the child process specified by each process ID pid +or job specification jobspec exits and return the exit status of the +last command waited for. +If a job spec is given, all processes in the job are waited for. +If no arguments are given, +wait waits for all running background jobs and +the last-executed process substitution, if its process id is the same as +$!, +and the return status is zero. +If the -n option is supplied, wait waits for a single job +from the list of pids or jobspecs or, if no arguments are +supplied, any job, +to complete and returns its exit status. +If none of the supplied arguments is a child of the shell, or if no arguments +are supplied and the shell has no unwaited-for children, the exit status +is 127. +If the -p option is supplied, the process or job identifier of the job +for which the exit status is returned is assigned to the variable +varname named by the option argument. +The variable will be unset initially, before any assignment. +This is useful only when the -n option is supplied. +Supplying the -f option, when job control is enabled, +forces wait to wait for each pid or jobspec to +terminate before returning its status, intead of returning when it changes +status. +If neither jobspec nor pid specifies an active child process +of the shell, the return status is 127. +

+
+
disown
+
+
+
disown [-ar] [-h] [jobspec … | pid … ]
+
+ +

Without options, remove each jobspec 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. +If jobspec is not 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. +

+
+
suspend
+
+
+
suspend [-f]
+
+ +

Suspend the execution of this shell until it receives a +SIGCONT signal. +A login shell cannot be suspended; the -f +option can be used to override this and force the suspension. +

+
+ +

When job control is not active, the kill and wait +builtins do not accept jobspec arguments. They must be +supplied process IDs. +

+
+
+

+Previous: , Up: Job Control   [Contents][Index]

+
+

7.3 Job Control Variables

+ +
+
auto_resume + +
+

This variable controls how the shell interacts with the user and +job control. If this variable exists then single word simple +commands without redirections are treated as candidates for resumption +of an existing job. There is no ambiguity allowed; if there is +more than one job beginning with the string typed, then +the most recently accessed job will be selected. +The name of a stopped job, in this context, is the command line +used to start it. If this variable is 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 ID (see Job Control Basics). +If set to any other value, the supplied string must +be a prefix of a stopped job’s name; this provides functionality +analogous to the ‘%’ job ID. +

+
+
+ + + + + + +
+
+

+Next: , Previous: , Up: Top   [Contents][Index]

+
+

8 Command Line Editing

+ +

This chapter describes the basic features of the GNU +command line editing interface. +Command line editing is provided by the Readline library, which is +used by several different programs, including Bash. +Command line editing is enabled by default when using an interactive shell, +unless the --noediting option is supplied at shell invocation. +Line editing is also used when using the -e option to the +read builtin command (see Bash Builtins). +By default, the line editing commands are similar to those of Emacs. +A vi-style line editing interface is also available. +Line editing can be enabled at any time using the -o emacs or +-o vi options to the set builtin command +(see The Set Builtin), or disabled using the +o emacs or ++o vi options to set. +

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

8.1 Introduction to Line Editing

+ +

The following paragraphs describe the notation used to represent +keystrokes. +

+

The text C-k is read as ‘Control-K’ and describes the character +produced when the k key is pressed while the Control key +is depressed. +

+

The text M-k is read as ‘Meta-K’ and describes the character +produced when the Meta key (if you have one) is depressed, and the k +key is pressed. +The Meta key is labeled ALT on many keyboards. +On keyboards with two keys labeled ALT (usually to either side of +the space bar), the ALT on the left side is generally set to +work as a Meta key. +The ALT key on the right may also be configured to work as a +Meta key or may be configured as some other modifier, such as a +Compose key for typing accented characters. +

+

If you do not have a Meta or ALT key, or another key working as +a Meta key, the identical keystroke can be generated by typing ESC +first, and then typing k. +Either process is known as metafying the k key. +

+

The text M-C-k is read as ‘Meta-Control-k’ and describes the +character produced by metafying C-k. +

+

In addition, several keys have their own names. Specifically, +DEL, ESC, LFD, SPC, RET, and TAB all +stand for themselves when seen in this text, or in an init file +(see Readline Init File). +If your keyboard lacks a LFD key, typing C-j will +produce the desired character. +The RET key may be labeled Return or Enter on +some keyboards. +

+
+ +

8.2 Readline Interaction

+ + +

Often during an interactive session you type in a long line of text, +only to notice that the first word on the line is misspelled. The +Readline library gives you a set of commands for manipulating the text +as you type it in, allowing you to just fix your typo, and not forcing +you to retype the majority of the line. Using these editing commands, +you move the cursor to the place that needs correction, and delete or +insert the text of the corrections. Then, when you are satisfied with +the line, you simply press RET. You do not have to be at the +end of the line to press RET; the entire line is accepted +regardless of the location of the cursor within the line. +

+ + + + + + + + +
+ +

8.2.1 Readline Bare Essentials

+ + + + +

In order to enter characters into the line, simply type them. The typed +character appears where the cursor was, and then the cursor moves one +space to the right. If you mistype a character, you can use your +erase character to back up and delete the mistyped character. +

+

Sometimes you may mistype a character, and +not notice the error until you have typed several other characters. In +that case, you can type C-b to move the cursor to the left, and then +correct your mistake. Afterwards, you can move the cursor to the right +with C-f. +

+

When you add text in the middle of a line, you will notice that characters +to the right of the cursor are ‘pushed over’ to make room for the text +that you have inserted. Likewise, when you delete text behind the cursor, +characters to the right of the cursor are ‘pulled back’ to fill in the +blank space created by the removal of the text. A list of the bare +essentials for editing the text of an input line follows. +

+
+
C-b
+

Move back one character. +

+
C-f
+

Move forward one character. +

+
DEL or Backspace
+

Delete the character to the left of the cursor. +

+
C-d
+

Delete the character underneath the cursor. +

+
Printing characters
+

Insert the character into the line at the cursor. +

+
C-_ or C-x C-u
+

Undo the last editing command. You can undo all the way back to an +empty line. +

+
+ +

(Depending on your configuration, the Backspace key be set to +delete the character to the left of the cursor and the DEL key set +to delete the character underneath the cursor, like C-d, rather +than the character to the left of the cursor.) +

+
+ +

8.2.2 Readline Movement Commands

+ + +

The above table describes the most basic keystrokes that you need +in order to do editing of the input line. For your convenience, many +other commands have been added in addition to C-b, C-f, +C-d, and DEL. Here are some commands for moving more rapidly +about the line. +

+
+
C-a
+

Move to the start of the line. +

+
C-e
+

Move to the end of the line. +

+
M-f
+

Move forward a word, where a word is composed of letters and digits. +

+
M-b
+

Move backward a word. +

+
C-l
+

Clear the screen, reprinting the current line at the top. +

+
+ +

Notice how C-f moves forward a character, while M-f moves +forward a word. It is a loose convention that control keystrokes +operate on characters while meta keystrokes operate on words. +

+
+ +

8.2.3 Readline Killing Commands

+ + + + +

Killing text means to delete the text from the line, but to save +it away for later use, usually by yanking (re-inserting) +it back into the line. +(‘Cut’ and ‘paste’ are more recent jargon for ‘kill’ and ‘yank’.) +

+

If the description for a command says that it ‘kills’ text, then you can +be sure that you can get the text back in a different (or the same) +place later. +

+

When you use a kill command, the text is saved in a kill-ring. +Any number of consecutive kills save all of the killed text together, so +that when you yank it back, you get it all. The kill +ring is not line specific; the text that you killed on a previously +typed line is available to be yanked back later, when you are typing +another line. + +

+

Here is the list of commands for killing text. +

+
+
C-k
+

Kill the text from the current cursor position to the end of the line. +

+
+
M-d
+

Kill from the cursor 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 M-f. +

+
+
M-DEL
+

Kill from the cursor the start of the current word, or, if between +words, to the start of the previous word. +Word boundaries are the same as those used by M-b. +

+
+
C-w
+

Kill from the cursor to the previous whitespace. This is different than +M-DEL because the word boundaries differ. +

+
+
+ +

Here is how to yank the text back into the line. Yanking +means to copy the most-recently-killed text from the kill buffer. +

+
+
C-y
+

Yank the most recently killed text back into the buffer at the cursor. +

+
+
M-y
+

Rotate the kill-ring, and yank the new top. You can only do this if +the prior command is C-y or M-y. +

+
+ +
+ +

8.2.4 Readline Arguments

+ +

You can pass numeric arguments to Readline commands. Sometimes the +argument acts as a repeat count, other times it is the sign of the +argument that is significant. If you pass a negative argument to a +command which normally acts in a forward direction, that command will +act in a backward direction. For example, to kill text back to the +start of the line, you might type ‘M-- C-k’. +

+

The general way to pass numeric arguments to a command is to type meta +digits before the command. If the first ‘digit’ typed is a minus +sign (‘-’), then the sign of the argument will be negative. Once +you have typed one meta digit to get the argument started, you can type +the remainder of the digits, and then the command. For example, to give +the C-d command an argument of 10, you could type ‘M-1 0 C-d’, +which will delete the next ten characters on the input line. +

+
+ +

8.2.5 Searching for Commands in the History

+ +

Readline provides commands for searching through the command history +(see Bash History Facilities) +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. +To search backward in the history for a particular string, type +C-r. Typing C-s searches forward through the history. +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 ESC and +C-J characters will terminate an incremental search. +C-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 C-r or +C-s 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 RET will terminate the search and accept +the line, thereby executing the command from the history list. +A movement command will terminate the search, make the last line found +the current line, and begin editing. +

+

Readline remembers the last incremental search string. If two +C-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. +

+
+ +

8.3 Readline Init File

+ + +

Although the Readline library comes with a set of Emacs-like +keybindings installed by default, it is possible to use a different set +of keybindings. +Any user can customize programs that use Readline by putting +commands in an inputrc file, conventionally in his home directory. +The name of this +file is taken from the value of the shell variable INPUTRC. If +that variable is unset, the default is ~/.inputrc. If that +file does not exist or cannot be read, the ultimate default is +/etc/inputrc. +The bind builtin command can also be used to set Readline +keybindings and variables. +See Bash Builtins. +

+

When a program which uses the Readline library starts up, the +init file is read, and the key bindings are set. +

+

In addition, the C-x C-r command re-reads this init file, thus +incorporating any changes that you might have made to it. +

+ + + + + + +
+ +

8.3.1 Readline Init File Syntax

+ +

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

+
+
Variable Settings
+

You can modify the run-time behavior of Readline by +altering the values of variables in Readline +using the set command within the init file. +The syntax is simple: +

+
+
set variable value
+
+ +

Here, for example, is how to +change from the default Emacs-like key binding to use +vi line editing commands: +

+
+
set editing-mode vi
+
+ +

Variable names and values, where appropriate, are recognized without regard +to case. Unrecognized variable names are ignored. +

+

Boolean variables (those that can be set to on or off) are set to on if +the value is null or empty, on (case-insensitive), or 1. Any other +value results in the variable being set to off. +

+

The bind -V command lists the current Readline variable names +and values. See Bash Builtins. +

+

A great deal of run-time behavior is changeable with the following +variables. +

+ +
+
bell-style
+
+

Controls what happens when Readline wants to ring the terminal bell. +If set to ‘none’, Readline never rings the bell. If set to +‘visible’, Readline uses a visible bell if one is available. +If set to ‘audible’ (the default), Readline attempts to ring +the terminal’s bell. +

+
+
bind-tty-special-chars
+
+

If set to ‘on’ (the default), Readline attempts to bind the control +characters treated specially by the kernel’s terminal driver to their +Readline equivalents. +

+
+
blink-matching-paren
+
+

If set to ‘on’, Readline attempts to briefly move the cursor to an +opening parenthesis when a closing parenthesis is inserted. The default +is ‘off’. +

+
+
colored-completion-prefix
+
+

If set to ‘on’, when listing completions, Readline displays the +common prefix of the set of possible completions using a different color. +The color definitions are taken from the value of the LS_COLORS +environment variable. +The default is ‘off’. +

+
+
colored-stats
+
+

If set to ‘on’, Readline displays possible completions using different +colors to indicate their file type. +The color definitions are taken from the value of the LS_COLORS +environment variable. +The default is ‘off’. +

+
+
comment-begin
+
+

The string to insert at the beginning of the line when the +insert-comment command is executed. The default value +is "#". +

+
+
completion-display-width
+
+

The number of screen columns used to display possible matches +when performing completion. +The value is ignored if it is less than 0 or greater than the terminal +screen width. +A value of 0 will cause matches to be displayed one per line. +The default value is -1. +

+
+
completion-ignore-case
+
+

If set to ‘on’, Readline performs filename matching and completion +in a case-insensitive fashion. +The default value is ‘off’. +

+
+
completion-map-case
+
+

If set to ‘on’, and completion-ignore-case is enabled, Readline +treats hyphens (‘-’) and underscores (‘_’) as equivalent when +performing case-insensitive filename matching and completion. +The default value is ‘off’. +

+
+
completion-prefix-display-length
+
+

The length in characters of the common prefix of a list of possible +completions that is displayed without modification. When set to a +value greater than zero, common prefixes longer than this value are +replaced with an ellipsis when displaying possible completions. +

+
+
completion-query-items
+
+

The number of possible completions that determines when the user is +asked whether the list of possibilities should be displayed. +If the number of possible completions is greater than or equal to this value, +Readline will ask whether or not the user wishes to view them; +otherwise, they are simply listed. +This variable must be set to an integer value greater than or equal to 0. +A negative value means Readline should never ask. +The default limit is 100. +

+
+
convert-meta
+
+

If set to ‘on’, Readline will convert characters with the +eighth bit set to an ASCII key sequence by stripping the eighth +bit and prefixing an ESC character, converting them to a +meta-prefixed key sequence. The default value is ‘on’, but +will be set to ‘off’ if the locale is one that contains +eight-bit characters. +

+
+
disable-completion
+
+

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

+
+
echo-control-characters
+
+

When set to ‘on’, on operating systems that indicate they support it, +readline echoes a character corresponding to a signal generated from the +keyboard. The default is ‘on’. +

+
+
editing-mode
+
+

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

+
+
emacs-mode-string
+
+

If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is ‘@’. +

+
+
enable-bracketed-paste
+
+

When set to ‘On’, Readline will configure the terminal in a way +that will enable it to insert each paste into the editing buffer as a +single string of characters, instead of treating each character as if +it had been read from the keyboard. This can prevent pasted characters +from being interpreted as editing commands. The default is ‘On’. +

+
+
enable-keypad
+
+

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

+
+
enable-meta-key
+

When set to ‘on’, Readline will try to enable any meta modifier +key the terminal claims to support when it is called. On many terminals, +the meta key is used to send eight-bit characters. +The default is ‘on’. +

+
+
expand-tilde
+
+

If set to ‘on’, tilde expansion is performed when Readline +attempts word completion. The default is ‘off’. +

+
+
history-preserve-point
+
+

If set to ‘on’, the history code attempts to place the point (the +current cursor position) at the +same location on each history line retrieved with previous-history +or next-history. The default is ‘off’. +

+
+
history-size
+
+

Set the maximum number of history entries saved in the history list. +If set to zero, any existing history entries are deleted and no new entries +are saved. +If set to a value less than zero, the number of history entries is not +limited. +By default, the number of history entries is not limited. +If an attempt is made to set history-size to a non-numeric value, +the maximum number of history entries will be set to 500. +

+
+
horizontal-scroll-mode
+
+

This variable can be set to either ‘on’ or ‘off’. Setting it +to ‘on’ means that the text of the lines being edited will scroll +horizontally on a single screen line when they are longer than the width +of the screen, instead of wrapping onto a new screen line. +This variable is automatically set to ‘on’ for terminals of height 1. +By default, this variable is set to ‘off’. +

+
+
input-meta
+
+ +

If set to ‘on’, Readline will enable eight-bit input (it +will not clear the eighth bit in the characters it reads), +regardless of what the terminal claims it can support. The +default value is ‘off’, but Readline will set it to ‘on’ if the +locale contains eight-bit characters. +The name meta-flag is a synonym for this variable. +

+
+
isearch-terminators
+
+

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

+
+
keymap
+
+

Sets Readline’s idea of the current keymap for key binding commands. +Built-in keymap names are +emacs, +emacs-standard, +emacs-meta, +emacs-ctlx, +vi, +vi-move, +vi-command, and +vi-insert. +vi is equivalent to vi-command (vi-move is also a +synonym); emacs is equivalent to emacs-standard. +Applications may add additional names. +The default value is emacs. +The value of the editing-mode variable also affects the +default keymap. +

+
+
keyseq-timeout
+

Specifies the duration Readline will wait for a character when reading an +ambiguous key sequence (one that can form a complete key sequence using +the input read so far, or can take additional input to complete a longer +key sequence). +If no input is received within the timeout, Readline will use the shorter +but complete key sequence. +Readline uses this value to determine whether or not input is +available on the current input source (rl_instream by default). +The value is specified in milliseconds, so a value of 1000 means that +Readline will wait one second for additional input. +If this variable is set to a value less than or equal to zero, or to a +non-numeric value, Readline will wait until another key is pressed to +decide which key sequence to complete. +The default value is 500. +

+
+
mark-directories
+

If set to ‘on’, completed directory names have a slash +appended. The default is ‘on’. +

+
+
mark-modified-lines
+
+

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

+
+
mark-symlinked-directories
+
+

If set to ‘on’, completed names which are symbolic links +to directories have a slash appended (subject to the value of +mark-directories). +The default is ‘off’. +

+
+
match-hidden-files
+
+

This variable, when set to ‘on’, causes Readline to match files whose +names begin with a ‘.’ (hidden files) when performing filename +completion. +If set to ‘off’, the leading ‘.’ must be +supplied by the user in the filename to be completed. +This variable is ‘on’ by default. +

+
+
menu-complete-display-prefix
+
+

If set to ‘on’, menu completion displays the common prefix of the +list of possible completions (which may be empty) before cycling through +the list. The default is ‘off’. +

+
+
output-meta
+
+

If set to ‘on’, Readline will display characters with the +eighth bit set directly rather than as a meta-prefixed escape +sequence. +The default is ‘off’, but Readline will set it to ‘on’ if the +locale contains eight-bit characters. +

+
+
page-completions
+
+

If set to ‘on’, Readline uses an internal more-like pager +to display a screenful of possible completions at a time. +This variable is ‘on’ by default. +

+
+
print-completions-horizontally
+

If set to ‘on’, Readline will display completions with matches +sorted horizontally in alphabetical order, rather than down the screen. +The default is ‘off’. +

+
+
revert-all-at-newline
+
+

If set to ‘on’, Readline will undo all changes to history lines +before returning when accept-line is executed. By default, +history lines may be modified and retain individual undo lists across +calls to readline. The default is ‘off’. +

+
+
show-all-if-ambiguous
+
+

This alters the default behavior of the completion functions. If +set to ‘on’, +words which have more than one possible completion cause the +matches to be listed immediately instead of ringing the bell. +The default value is ‘off’. +

+
+
show-all-if-unmodified
+
+

This alters the default behavior of the completion functions in +a fashion similar to show-all-if-ambiguous. +If set to ‘on’, +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. +The default value is ‘off’. +

+
+
show-mode-in-prompt
+
+

If set to ‘on’, add a string to the beginning of the prompt +indicating the editing mode: emacs, vi command, or vi insertion. +The mode strings are user-settable (e.g., emacs-mode-string). +The default value is ‘off’. +

+
+
skip-completed-text
+
+

If set to ‘on’, this alters the default completion behavior when +inserting a single match into the line. It’s only active when +performing completion in the middle of a word. If enabled, readline +does not insert characters from the completion that match characters +after point in the word being completed, so portions of the word +following the cursor are not duplicated. +For instance, if this is enabled, attempting completion when the cursor +is after the ‘e’ in ‘Makefile’ will result in ‘Makefile’ +rather than ‘Makefilefile’, assuming there is a single possible +completion. +The default value is ‘off’. +

+
+
vi-cmd-mode-string
+
+

If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in command mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is ‘(cmd)’. +

+
+
vi-ins-mode-string
+
+

If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in insertion mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is ‘(ins)’. +

+
+
visible-stats
+
+

If set to ‘on’, a character denoting a file’s type +is appended to the filename when listing possible +completions. The default is ‘off’. +

+
+
+ +
+
Key Bindings
+

The syntax for controlling key bindings in the init file is +simple. First you need to find the name of the command that you +want to change. The following sections contain tables of the command +name, the default keybinding, if any, and a short description of what +the command does. +

+

Once you know the name of the command, simply place on a line +in the init file the name of the key +you wish to bind the command to, a colon, and then the name of the +command. +There can be no space between the key name and the colon – that will be +interpreted as part of the key name. +The name of the key can be expressed in different ways, depending on +what you find most comfortable. +

+

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

+

The bind -p command displays Readline function names and +bindings in a format that can put directly into an initialization file. +See Bash Builtins. +

+
+
keynamefunction-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 example above, 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). +

+

A number of symbolic character names are recognized while +processing this key binding syntax: +DEL, +ESC, +ESCAPE, +LFD, +NEWLINE, +RET, +RETURN, +RUBOUT, +SPACE, +SPC, +and +TAB. +

+
+
"keyseq": function-name or macro
+

keyseq differs from keyname above in that strings +denoting an entire key sequence can be specified, by placing +the key sequence in double quotes. Some GNU Emacs style key +escapes can be used, as in the following example, but the +special character names are not recognized. +

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

In the above example, C-u is again bound to the function +universal-argument (just as it was in the first example), +‘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 following GNU Emacs style escape sequences are available when +specifying key sequences: +

+
+
\C-
+

control prefix +

+
\M-
+

meta prefix +

+
\e
+

an escape character +

+
\\
+

backslash +

+
\"
+

", a double quotation mark +

+
\'
+

', a single quote or apostrophe +

+
+ +

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 ‘'’. +For example, the following binding will make ‘C-x \’ +insert a single ‘\’ into the line: +

+
"\C-x\\": "\\"
+
+ +
+
+ +
+ +

8.3.2 Conditional Init 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, after any comparison operator, +extends to the end of the line; +unless otherwise noted, 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 both the 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. +

+
+
version
+

The version test may be used to perform comparisons against +specific Readline versions. +The version expands to the current Readline version. +The set of comparison operators includes +‘=’ (and ‘==’), ‘!=’, ‘<=’, ‘>=’, ‘<’, +and ‘>’. +The version number supplied on the right side of the operator consists +of a major version number, an optional decimal point, and an optional +minor version (e.g., ‘7.1’). If the minor version is omitted, it +is assumed to be ‘0’. +The operator may be separated from the string version and +from the version number argument by whitespace. +The following example sets a variable if the Readline version being used +is 7.0 or newer: +

+
$if version >= 7.0
+set show-mode-in-prompt on
+$endif
+
+ +
+
application
+

The application construct is used to include +application-specific settings. Each program using the Readline +library sets the application name, and you 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
+
+ +
+
variable
+

The variable construct provides simple equality tests for Readline +variables and values. +The permitted comparison operators are ‘=’, ‘==’, and ‘!=’. +The variable name must be separated from the comparison operator by +whitespace; the operator may be separated from the value on the right hand +side by whitespace. +Both string and boolean variables may be tested. Boolean variables must be +tested against the values on and off. +The following example is equivalent to the mode=emacs test described +above: +

+
$if editing-mode == emacs
+set show-mode-in-prompt on
+$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 reads from /etc/inputrc: +

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

8.3.3 Sample Init File

+ +

Here is an example of an inputrc file. This illustrates key +binding, variable assignment, and conditional syntax. +

+
+
# This file controls the behaviour of line input editing for
+# programs that use the GNU Readline library.  Existing
+# programs include FTP, Bash, and GDB.
+#
+# You can re-read the inputrc file with C-x C-r.
+# Lines beginning with '#' are comments.
+#
+# First, include any system-wide bindings and variable
+# assignments from /etc/Inputrc
+$include /etc/Inputrc
+
+#
+# Set various bindings for emacs mode.
+
+set editing-mode emacs 
+
+$if mode=emacs
+
+Meta-Control-h:	backward-kill-word	Text after the function name is ignored
+
+#
+# Arrow keys in keypad mode
+#
+#"\M-OD":        backward-char
+#"\M-OC":        forward-char
+#"\M-OA":        previous-history
+#"\M-OB":        next-history
+#
+# Arrow keys in ANSI mode
+#
+"\M-[D":        backward-char
+"\M-[C":        forward-char
+"\M-[A":        previous-history
+"\M-[B":        next-history
+#
+# Arrow keys in 8 bit keypad mode
+#
+#"\M-\C-OD":       backward-char
+#"\M-\C-OC":       forward-char
+#"\M-\C-OA":       previous-history
+#"\M-\C-OB":       next-history
+#
+# Arrow keys in 8 bit ANSI mode
+#
+#"\M-\C-[D":       backward-char
+#"\M-\C-[C":       forward-char
+#"\M-\C-[A":       previous-history
+#"\M-\C-[B":       next-history
+
+C-q: quoted-insert
+
+$endif
+
+# An old-style binding.  This happens to be the default.
+TAB: complete
+
+# Macros that are convenient for shell interaction
+$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"
+# insert a backslash (testing backslash escapes
+# in sequences and macros)
+"\C-x\\": "\\"
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+# Add a binding to refresh the line, which is unbound
+"\C-xr": redraw-current-line
+# Edit variable on current line.
+"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+$endif
+
+# use a visible bell if one is available
+set bell-style visible
+
+# don't strip characters to 7 bits when reading
+set input-meta on
+
+# allow iso-latin1 characters to be inserted rather
+# than converted to prefix-meta sequences
+set convert-meta off
+
+# display characters with the eighth bit set directly
+# rather than as meta-prefixed characters
+set output-meta on
+
+# if there are 150 or more possible completions for a word,
+# ask whether or not the user wants to see all of them
+set completion-query-items 150
+
+# For FTP
+$if Ftp
+"\C-xg": "get \M-?"
+"\C-xt": "put \M-?"
+"\M-.": yank-last-arg
+$endif
+
+ +
+ +

8.4 Bindable Readline Commands

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

This section describes Readline commands that may be bound to key +sequences. +You can list your key bindings by executing +bind -P or, for a more terse format, suitable for an +inputrc file, bind -p. (See Bash Builtins.) +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. +

+
+ +

8.4.1 Commands For Moving

+
+
beginning-of-line (C-a) + +
+

Move to the start of the current line. +

+
+
end-of-line (C-e) + +
+

Move to the end of the line. +

+
+
forward-char (C-f) + +
+

Move forward a character. +

+
+
backward-char (C-b) + +
+

Move back a character. +

+
+
forward-word (M-f) + +
+

Move forward to the end of the next word. +Words are composed of letters and digits. +

+
+
backward-word (M-b) + +
+

Move back to the start of the current or previous word. +Words are composed of letters and digits. +

+
+
shell-forward-word (M-C-f) + +
+

Move forward to the end of the next word. +Words are delimited by non-quoted shell metacharacters. +

+
+
shell-backward-word (M-C-b) + +
+

Move back to the start of the current or previous word. +Words are delimited by non-quoted shell metacharacters. +

+
+
previous-screen-line () + +
+

Attempt to move point to the same physical screen column on the previous +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if point is not +greater than the length of the prompt plus the screen width. +

+
+
next-screen-line () + +
+

Attempt to move point to the same physical screen column on the next +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if the length +of the current Readline line is not greater than the length of the prompt +plus the screen width. +

+
+
clear-display (M-C-l) + +
+

Clear the screen and, if possible, the terminal’s scrollback buffer, +then redraw the current line, +leaving the current line at the top of the screen. +

+
+
clear-screen (C-l) + +
+

Clear the screen, +then redraw the current line, +leaving the current line at the top of the screen. +

+
+
redraw-current-line () + +
+

Refresh the current line. By default, this is unbound. +

+
+
+ +
+ +

8.4.2 Commands For Manipulating The History

+ +
+
accept-line (Newline or Return) + +
+

Accept the line regardless of where the cursor is. +If this line is +non-empty, add it to the history list according to the setting of +the HISTCONTROL and HISTIGNORE variables. +If this line is a modified history line, then restore the history line +to its original state. +

+
+
previous-history (C-p) + +
+

Move ‘back’ through the history list, fetching the previous command. +

+
+
next-history (C-n) + +
+

Move ‘forward’ through the history list, fetching the next command. +

+
+
beginning-of-history (M-<) + +
+

Move to the first line in the history. +

+
+
end-of-history (M->) + +
+

Move to the end of the input history, i.e., the line currently +being entered. +

+
+
reverse-search-history (C-r) + +
+

Search backward starting at the current line and moving ‘up’ through +the history as necessary. This is an incremental search. +This command sets the region to the matched text and activates the mark. +

+
+
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. +This command sets the region to the matched text and activates the mark. +

+
+
non-incremental-reverse-search-history (M-p) + +
+

Search backward starting at the current line and moving ‘up’ +through the history as necessary using a non-incremental search +for a string supplied by the user. +The search string may match anywhere in a history line. +

+
+
non-incremental-forward-search-history (M-n) + +
+

Search forward starting at the current line and moving ‘down’ +through the history as necessary using a non-incremental search +for a string supplied by the user. +The search string may match anywhere in a history line. +

+
+
history-search-forward () + +
+

Search forward through the history for the string of characters +between the start of the current line and the point. +The search string must match at the beginning of a history line. +This is a non-incremental search. +By default, this command is unbound. +

+
+
history-search-backward () + +
+

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

+
+
history-substring-search-forward () + +
+

Search forward through the history for the string of characters +between the start of the current line and the point. +The search string may match anywhere in a history line. +This is a non-incremental search. +By default, this command is unbound. +

+
+
history-substring-search-backward () + +
+

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

+
+
yank-nth-arg (M-C-y) + +
+

Insert the first argument to the previous command (usually +the second word on the previous line) at point. +With an argument n, +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-. or M-_) + +
+

Insert last argument to the previous command (the last word of the +previous history entry). +With a numeric argument, behave exactly like yank-nth-arg. +Successive calls to yank-last-arg move back through the history +list, inserting the last word (or the word specified by the argument to +the first call) of each line in turn. +Any numeric argument supplied to these successive calls determines +the direction to move through the history. A negative argument switches +the direction through the history (back or forward). +The history expansion facilities are used to extract the last argument, +as if the ‘!$’ history expansion had been specified. +

+
+
operate-and-get-next (C-o) + +
+

Accept the current line for return to the calling application as if a +newline had been entered, +and fetch the next line relative to the current line from the history +for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. +

+
+
+ +
+ +

8.4.3 Commands For Changing Text

+ +
+
end-of-file (usually C-d) + +
+

The character indicating end-of-file as set, for example, by +stty. If this character is read when there are no characters +on the line, and point is at the beginning of the line, Readline +interprets it as the end of input and returns EOF. +

+
+
delete-char (C-d) + +
+

Delete the character at point. If this function is bound to the +same character as the tty EOF character, as C-d +commonly is, see above for the effects. +

+
+
backward-delete-char (Rubout) + +
+

Delete the character behind the cursor. A numeric argument means +to kill the characters instead of deleting them. +

+
+
forward-backward-delete-char () + +
+

Delete the character under the cursor, unless the cursor is at the +end of the line, in which case the character behind the cursor is +deleted. By default, this is not bound to a key. +

+
+
quoted-insert (C-q or C-v) + +
+

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

+ +
+
self-insert (a, b, A, 1, !, …) + +
+

Insert yourself. +

+
+
bracketed-paste-begin () + +
+

This function is intended to be bound to the "bracketed paste" escape +sequence sent by some terminals, and such a binding is assigned by default. +It allows Readline to insert the pasted text as a single unit without treating +each character as if it had been read from the keyboard. The characters +are inserted as if each one was bound to self-insert instead of +executing any editing commands. +

+

Bracketed paste sets the region (the characters between point and the mark) +to the inserted text. It uses the concept of an active mark: when the +mark is active, Readline redisplay uses the terminal’s standout mode to +denote the region. +

+
+
transpose-chars (C-t) + +
+

Drag the character before the cursor forward over +the character at the cursor, moving the +cursor forward as well. If the insertion point +is at the end of the line, then this +transposes the last two characters of the line. +Negative arguments have no effect. +

+
+
transpose-words (M-t) + +
+

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

+
+
upcase-word (M-u) + +
+

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

+
+
downcase-word (M-l) + +
+

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

+
+
capitalize-word (M-c) + +
+

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

+
+
overwrite-mode () + +
+

Toggle overwrite mode. With an explicit positive numeric argument, +switches to overwrite mode. With an explicit non-positive numeric +argument, switches to insert mode. This command affects only +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. +

+
+
+ +
+ +

8.4.4 Killing And Yanking

+ +
+
kill-line (C-k) + +
+

Kill the text from point to the end of the line. +With a negative numeric argument, kill backward from the cursor to the +beginning of the current line. +

+
+
backward-kill-line (C-x Rubout) + +
+

Kill backward from the cursor to the beginning of the current line. +With a negative numeric argument, kill forward from the cursor to the +end of the current line. +

+
+
unix-line-discard (C-u) + +
+

Kill backward from the cursor to the beginning of the current line. +

+
+
kill-whole-line () + +
+

Kill all characters on the current line, no matter where point is. +By default, this is unbound. +

+
+
kill-word (M-d) + +
+

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

+
+
backward-kill-word (M-DEL) + +
+

Kill the word behind point. +Word boundaries are the same as backward-word. +

+
+
shell-kill-word (M-C-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 shell-forward-word. +

+
+
shell-backward-kill-word () + +
+

Kill the word behind point. +Word boundaries are the same as shell-backward-word. +

+
+
shell-transpose-words (M-C-t) + +
+

Drag the word before point past the word after point, +moving point past that word as well. +If the insertion point is at the end of the line, this transposes +the last two words on the line. +Word boundaries are the same as shell-forward-word and +shell-backward-word. +

+
+
unix-word-rubout (C-w) + +
+

Kill the word behind point, using white space as a word boundary. +The killed text is saved on the kill-ring. +

+
+
unix-filename-rubout () + +
+

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

+
+
delete-horizontal-space () + +
+

Delete all spaces and tabs around point. By default, this is unbound. +

+
+
kill-region () + +
+

Kill the text in the current region. +By default, this command is unbound. +

+
+
copy-region-as-kill () + +
+

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

+
+
copy-backward-word () + +
+

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

+
+
copy-forward-word () + +
+

Copy the word following point to the kill buffer. +The word boundaries are the same as forward-word. +By default, this command is unbound. +

+
+
yank (C-y) + +
+

Yank the top of the kill ring into the buffer at point. +

+
+
yank-pop (M-y) + +
+

Rotate the kill-ring, and yank the new top. You can only do this if +the prior command is yank or yank-pop. +

+
+ +
+ +

8.4.5 Specifying Numeric Arguments

+
+
digit-argument (M-0, M-1, … M--) + +
+

Add this digit to the argument already accumulating, or start a new +argument. M-- starts a negative argument. +

+
+
universal-argument () + +
+

This is another way to specify an argument. +If this command is followed by one or more digits, optionally with a +leading minus sign, those digits define the argument. +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 nor 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. +By default, this is not bound to a key. +

+
+ +
+ +

8.4.6 Letting Readline Type For You

+ +
+
complete (TAB) + +
+

Attempt to perform completion on the text before point. +The actual completion performed is application-specific. +Bash attempts completion treating the text as a variable (if the +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. +When displaying completions, Readline sets the number of columns used +for display to the value of completion-display-width, the value of +the environment variable COLUMNS, or the screen width, in that order. +

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

+
+
menu-complete-backward () + +
+

Identical to menu-complete, but moves backward through the list +of possible completions, as if menu-complete had been given a +negative argument. +

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

+
+
dabbrev-expand () + +
+

Attempt menu 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). +

+
+
+ +
+ +

8.4.7 Keyboard Macros

+
+
start-kbd-macro (C-x () + +
+

Begin saving the characters typed into the current keyboard macro. +

+
+
end-kbd-macro (C-x )) + +
+

Stop saving the characters typed into the current keyboard macro +and save the definition. +

+
+
call-last-kbd-macro (C-x e) + +
+

Re-execute the last keyboard macro defined, by making the characters +in the macro appear as if typed at the keyboard. +

+
+
print-last-kbd-macro () + +
+

Print the last keboard macro defined in a format suitable for the +inputrc file. +

+
+
+ +
+ +

8.4.8 Some Miscellaneous Commands

+
+
re-read-init-file (C-x C-r) + +
+

Read in the contents of the inputrc file, and incorporate +any bindings or variable assignments found there. +

+
+
abort (C-g) + +
+

Abort the current editing command and +ring the terminal’s bell (subject to the setting of +bell-style). +

+
+
do-lowercase-version (M-A, M-B, M-x, …) + +
+

If the metafied character x is upper case, run the command +that is bound to the corresponding metafied lower case character. +The behavior is undefined if x is already lower case. +

+
+
prefix-meta (ESC) + +
+

Metafy the next character typed. This is for keyboards +without a meta key. Typing ‘ESC f’ is equivalent to typing +M-f. +

+
+
undo (C-_ or C-x C-u) + +
+

Incremental undo, separately remembered for each line. +

+
+
revert-line (M-r) + +
+

Undo all changes made to this line. This is like executing the undo +command enough times to get back to the beginning. +

+
+
tilde-expand (M-&) + +
+

Perform tilde expansion on the current word. +

+
+
set-mark (C-@) + +
+

Set the mark to the point. If a +numeric argument is supplied, the mark is set to that position. +

+
+
exchange-point-and-mark (C-x C-x) + +
+

Swap the point with the mark. The current cursor position is set to +the saved position, and the old cursor position is saved as the mark. +

+
+
character-search (C-]) + +
+

A character is read and point is moved to the next occurrence of that +character. A negative count searches for previous occurrences. +

+
+
character-search-backward (M-C-]) + +
+

A character is read and point is moved to the previous occurrence +of that character. A negative count searches for subsequent +occurrences. +

+
+
skip-csi-sequence () + +
+

Read enough characters to consume a multi-key sequence such as those +defined for keys like Home and End. Such sequences begin with a +Control Sequence Indicator (CSI), usually ESC-[. If this sequence is +bound to "\e[", keys producing such sequences will have no effect +unless explicitly bound to a readline command, instead of inserting +stray characters into the editing buffer. This is unbound by default, +but usually bound to ESC-[. +

+
+
insert-comment (M-#) + +
+

Without a numeric argument, the value of the comment-begin +variable is inserted at the beginning of the current line. +If a numeric argument is supplied, this command acts as a toggle: if +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. +

+
+
dump-functions () + +
+

Print all of the functions and their key bindings to the +Readline output stream. If a numeric argument is supplied, +the output is formatted in such a way that it can be made part +of an inputrc file. This command is unbound by default. +

+
+
dump-variables () + +
+

Print all of the settable variables and their values to the +Readline output stream. If a numeric argument is supplied, +the output is formatted in such a way that it can be made part +of an inputrc file. This command is unbound by default. +

+
+
dump-macros () + +
+

Print all of the Readline key sequences bound to macros and the +strings they output. If a numeric argument is supplied, +the output is formatted in such a way that it can be made part +of an inputrc file. This command is unbound by default. +

+
+
glob-complete-word (M-g) + +
+

The word before point is treated as a pattern for pathname expansion, +with an asterisk implicitly appended. This pattern is used to +generate a list of matching file names for possible completions. +

+
+
glob-expand-word (C-x *) + +
+

The word before point is treated as a pattern for pathname expansion, +and the list of matching file names is inserted, replacing the word. +If a numeric argument is supplied, a ‘*’ is appended before +pathname expansion. +

+
+
glob-list-expansions (C-x g) + +
+

The list of expansions that would have been generated by +glob-expand-word is displayed, and the line is redrawn. +If a numeric argument is supplied, a ‘*’ is appended before +pathname expansion. +

+
+
display-shell-version (C-x C-v) + +
+

Display version information about the current instance of Bash. +

+
+
shell-expand-line (M-C-e) + +
+

Expand the line as the shell does. +This performs alias and history expansion as well as all of the shell +word expansions (see Shell Expansions). +

+
+
history-expand-line (M-^) + +
+

Perform history expansion on the current line. +

+
+
magic-space () + +
+

Perform history expansion on the current line and insert a space +(see History Interaction). +

+
+
alias-expand-line () + +
+

Perform alias expansion on the current line (see Aliases). +

+
+
history-and-alias-expand-line () + +
+

Perform history and alias expansion on the current line. +

+
+
insert-last-argument (M-. or M-_) + +
+

A synonym for yank-last-arg. +

+
+
edit-and-execute-command (C-x C-e) + +
+

Invoke an editor on the current command line, and execute the result as shell +commands. +Bash attempts to invoke +$VISUAL, $EDITOR, and emacs +as the editor, in that order. +

+ + +
+
+ +
+ +

8.5 Readline vi Mode

+ +

While the Readline library does not have a full set of vi +editing functions, it does contain enough to allow simple editing +of the line. The Readline vi mode behaves as specified in +the POSIX standard. +

+

In order to switch interactively between emacs and vi +editing modes, use the ‘set -o emacs’ and ‘set -o vi’ +commands (see The Set Builtin). +The Readline default is emacs mode. +

+

When you enter a line in vi mode, you are already placed in +‘insertion’ mode, as if you had typed an ‘i’. Pressing ESC +switches you into ‘command’ mode, where you can edit the text of the +line with the standard vi movement keys, move to previous +history lines with ‘k’ and subsequent lines with ‘j’, and +so forth. +

+
+ +

8.6 Programmable Completion

+ + +

When word completion is attempted for an argument to a command for +which a completion specification (a compspec) has been defined +using the complete builtin (see Programmable Completion Builtins), +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 the empty string (completion attempted at the +beginning of an empty line), any compspec defined with +the -E option to complete is used. +If the command word is a full pathname, a compspec for the full +pathname is searched for first. +If no compspec is found for the full pathname, an attempt is made to +find a compspec for the portion following the final slash. +If those searches do not result in a compspec, any compspec defined with +the -D option to complete is used as the default. +If there is no default compspec, Bash attempts alias expansion +on the command word as a final resort, and attempts to find a compspec +for the command word from any successful expansion +

+

Once a compspec has been found, it is used to generate the list of +matching words. +If a compspec is not found, the default Bash completion +described above (see Commands For Completion) 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. +See Bash Variables, for a description of FIGNORE. +

+

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 shell 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 within the string, in order to provide a +mechanism for the words to contain shell metacharacters or characters +in the value of IFS. +Each word is then expanded using +brace expansion, tilde expansion, parameter and variable expansion, +command substitution, and arithmetic expansion, +as described above (see Shell Expansions). +The results are split using the rules described above +(see 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, +COMP_POINT, COMP_KEY, and COMP_TYPE variables are +assigned values as described above (see Bash Variables). +If a shell function is being invoked, the COMP_WORDS and +COMP_CWORD variables are also set. +When the function or command is invoked, the first argument ($1) is the +name of the command whose arguments are being completed, the +second argument ($2) is the word being completed, and the third argument +($3) is the word preceding the word being completed on the current command +line. +No filtering of the generated completions against the word being completed +is performed; the function or command has complete freedom in generating +the matches. +

+

Any function specified with -F is invoked first. +The function may use any of the shell facilities, including the +compgen and compopt builtins described below +(see Programmable Completion Builtins), to generate the matches. +It must put the possible completions in the COMPREPLY array +variable, one per array element. +

+

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. +If the nocasematch shell option +(see the description of shopt in The Shopt Builtin) +is enabled, the match is performed without regard to the case +of alphabetic characters. +

+

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

+

There is some support for dynamically modifying completions. This is +most useful when used in combination with a default completion specified +with -D. It’s possible for shell functions executed as completion +handlers to indicate that completion should be retried by returning an +exit status of 124. If a shell function returns 124, and changes +the compspec associated with the command on which completion is being +attempted (supplied as the first argument when the function is executed), +programmable completion restarts from the beginning, with an +attempt to find a new compspec for that command. This allows a set of +completions to be built dynamically as completion is attempted, rather than +being loaded all at once. +

+

For instance, assuming that there is a library of compspecs, each kept in a +file corresponding to the name of the command, the following default +completion function would load completions dynamically: +

+
+
_completion_loader()
+{
+    . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
+}
+complete -D -F _completion_loader -o bashdefault -o default
+
+ +
+ +

8.7 Programmable Completion Builtins

+ + +

Three builtin commands are available to manipulate the programmable completion +facilities: one to specify how the arguments to a particular command are to +be completed, and two to modify the completion as it is happening. +

+
+
compgen
+
+
+
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
+
+
+
complete [-abcdefgjksuv] [-o comp-option] [-DEI] [-A action] [-G globpat]
+[-W wordlist] [-F function] [-C command] [-X filterpat]
+[-P prefix] [-S suffix] name [name …]
+complete -pr [-DEI] [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 -D option indicates that other supplied options and actions should +apply to the “default” command completion; that is, completion attempted +on a command for which no completion has previously been defined. +The -E option indicates that other supplied options and actions should +apply to “empty” command completion; that is, completion attempted on a +blank line. +The -I option indicates that other supplied options and actions should +apply to completion on the initial non-assignment word on the line, or after a +command delimiter such as ‘;’ or ‘|’, which is usually command +name completion. +If multiple options are supplied, the -D option takes precedence +over -E, and both take precedence over -I. +If any of -D, -E, or -I are supplied, any other +name arguments are ignored; these completions only apply to the case +specified by the option. +

+

The process of applying these completion specifications when word completion +is attempted is described above (see 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, +quoting special characters, or suppressing trailing spaces). +This option is intended to be used with shell functions specified +with -F. +

+
+
noquote
+

Tell Readline not to quote the completed words if they are filenames +(quoting filenames is the default). +

+
+
nosort
+

Tell Readline not to sort the list of possible completions alphabetically. +

+
+
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 (see Bindable Readline Commands). +

+
+
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 (see Bash Builtins). +

+
+
hostname
+

Hostnames, as taken from the file specified by the +HOSTFILE shell variable (see Bash Variables). +

+
+
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 +(see The Set Builtin). +

+
+
shopt
+

Shell option names as accepted by the shopt builtin +(see Bash Builtins). +

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

+
+ +
+
-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 is executed, $1 is the name of the command whose arguments are +being completed, $2 is the word being completed, and $3 is the word +preceding the word being completed, as described above +(see Programmable Completion). +When it finishes, the possible completions are retrieved from the value +of the COMPREPLY array variable. +

+
+
-G globpat
+

The filename expansion pattern globpat is expanded to generate +the possible completions. +

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

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

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

+
+ +

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

+
+
compopt
+
+
+
compopt [-o option] [-DEI] [+o option] [name]
+
+

Modify completion options for each name according to the +options, or for the currently-executing completion if no names +are supplied. +If no options are given, display the completion options for each +name or the current completion. +The possible values of option are those valid for the complete +builtin described above. +The -D option indicates that other supplied options should +apply to the “default” command completion; that is, completion attempted +on a command for which no completion has previously been defined. +The -E option indicates that other supplied options should +apply to “empty” command completion; that is, completion attempted on a +blank line. +The -I option indicates that other supplied options should +apply to completion on the initial non-assignment word on the line, or after a +command delimiter such as ‘;’ or ‘|’, which is usually command +name completion. +

+

If multiple options are supplied, the -D option takes precedence +over -E, and both take precedence over -I +

+

The return value is true unless an invalid option is supplied, an attempt +is made to modify the options for a name for which no completion +specification exists, or an output error occurs. +

+
+
+ +
+ +

8.8 A Programmable Completion Example

+ +

The most common way to obtain additional completion functionality beyond +the default actions complete and compgen provide is to use +a shell function and bind it to a particular command using complete -F. +

+

The following function provides completions for the cd builtin. +It is a reasonably good example of what shell functions must do when +used for completion. This function uses the word passed as $2 +to determine the directory name to complete. You can also use the +COMP_WORDS array variable; the current word is indexed by the +COMP_CWORD variable. +

+

The function relies on the complete and compgen builtins +to do much of the work, adding only the things that the Bash cd +does beyond accepting basic directory names: +tilde expansion (see Tilde Expansion), +searching directories in $CDPATH, which is described above +(see Bourne Shell Builtins), +and basic support for the cdable_vars shell option +(see The Shopt Builtin). +_comp_cd modifies the value of IFS so that it contains only +a newline to accommodate file names containing spaces and tabs – +compgen prints the possible completions it generates one per line. +

+

Possible completions go into the COMPREPLY array variable, one +completion per array element. The programmable completion system retrieves +the completions from there when the function returns. +

+
+
# A completion function for the cd builtin
+# based on the cd completion function from the bash_completion package
+_comp_cd()
+{
+    local IFS=$' \t\n'    # normalize IFS
+    local cur _skipdot _cdpath
+    local i j k
+
+    # Tilde expansion, which also expands tilde to full pathname
+    case "$2" in
+    \~*)    eval cur="$2" ;;
+    *)      cur=$2 ;;
+    esac
+
+    # no cdpath or absolute pathname -- straight directory completion
+    if [[ -z "${CDPATH:-}" ]] || [[ "$cur" == @(./*|../*|/*) ]]; then
+        # compgen prints paths one per line; could also use while loop
+        IFS=$'\n'
+        COMPREPLY=( $(compgen -d -- "$cur") )
+        IFS=$' \t\n'
+    # CDPATH+directories in the current directory if not in CDPATH
+    else
+        IFS=$'\n'
+        _skipdot=false
+        # preprocess CDPATH to convert null directory names to .
+        _cdpath=${CDPATH/#:/.:}
+        _cdpath=${_cdpath//::/:.:}
+        _cdpath=${_cdpath/%:/:.}
+        for i in ${_cdpath//:/$'\n'}; do
+            if [[ $i -ef . ]]; then _skipdot=true; fi
+            k="${#COMPREPLY[@]}"
+            for j in $( compgen -d -- "$i/$cur" ); do
+                COMPREPLY[k++]=${j#$i/}        # cut off directory
+            done
+        done
+        $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") )
+        IFS=$' \t\n'
+    fi
+
+    # variable names if appropriate shell option set and no completions
+    if shopt -q cdable_vars && [[ ${#COMPREPLY[@]} -eq 0 ]]; then
+        COMPREPLY=( $(compgen -v -- "$cur") )
+    fi
+
+    return 0
+}
+
+ +

We install the completion function using the -F option to +complete: +

+
+
# Tell readline to quote appropriate and append slashes to directories;
+# use the bash default completion for other arguments
+complete -o filenames -o nospace -o bashdefault -F _comp_cd cd
+
+ +

Since we’d like Bash and Readline to take care of some +of the other details for us, we use several other options to tell Bash +and Readline what to do. The -o filenames option tells Readline +that the possible completions should be treated as filenames, and quoted +appropriately. That option will also cause Readline to append a slash to +filenames it can determine are directories (which is why we might want to +extend _comp_cd to append a slash if we’re using directories found +via CDPATH: Readline can’t tell those completions are directories). +The -o nospace option tells Readline to not append a space +character to the directory name, in case we want to append to it. +The -o bashdefault option brings in the rest of the "Bash default" +completions – possible completion that Bash adds to the default Readline +set. These include things like command name completion, variable completion +for words beginning with ‘$’ or ‘${’, completions containing pathname +expansion patterns (see Filename Expansion), and so on. +

+

Once installed using complete, _comp_cd will be called every +time we attempt word completion for a cd command. +

+

Many more examples – an extensive collection of completions for most of +the common GNU, Unix, and Linux commands – are available as part of the +bash_completion project. This is installed by default on many GNU/Linux +distributions. Originally written by Ian Macdonald, the project now lives +at https://github.com/scop/bash-completion/. There are ports for +other systems such as Solaris and Mac OS X. +

+

An older version of the bash_completion package is distributed with bash +in the examples/complete subdirectory. +

+ + +
+
+

+Next: , Previous: , Up: Top   [Contents][Index]

+
+

9 Using History Interactively

+ + +

This chapter describes how to use the GNU History Library +interactively, from a user’s standpoint. +It should be considered a user’s guide. +For information on using the GNU History Library in other programs, +see the GNU Readline Library Manual. +

+ + + + + + +
+ +

9.1 Bash History Facilities

+ + + +

When the -o history option to the set builtin +is enabled (see The Set Builtin), +the shell provides access to the command history, +the list of commands previously typed. +The value of the HISTSIZE shell variable is used as the +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 +but after history expansion is performed, subject to the +values of the shell variables +HISTIGNORE and HISTCONTROL. +

+

When the shell starts up, the history is initialized from the +file named by the HISTFILE variable (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 the HISTFILESIZE variable. +When a shell with history enabled exits, the last +$HISTSIZE lines are copied from the history list to the file +named by $HISTFILE. +If the histappend shell option is set (see Bash Builtins), +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 unset, or set to null, a non-numeric value, or +a numeric value less than zero, the history file is not truncated. +

+

If the HISTTIMEFORMAT is set, the time stamp information +associated with each history entry is written to the history file, +marked with the history comment character. +When the history file is read, lines beginning with the history +comment character followed immediately by a digit are interpreted +as timestamps for the following history entry. +

+

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

+

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. +The shopt builtin is used to set these options. +See The Shopt Builtin, for a description of shopt. +

+
+ +

9.2 Bash History Builtins

+ + +

Bash provides two builtin commands which manipulate the +history list and history file. +

+
+
fc
+
+
+
fc [-e ename] [-lnr] [first] [last]
+fc -s [pat=rep] [command]
+
+ +

The first form selects a range of commands from first to +last from the history list and displays or edits and re-executes +them. +Both first and +last may be specified as a string (to locate the most recent +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). +

+

When listing, a first or last of 0 is equivalent to -1 +and -0 is equivalent to the current command (usually the fc +command); +otherwise 0 is equivalent to -1 and -0 is invalid. +

+

If last is not specified, it is set to +first. If first is not specified, it is set to the previous +command for editing and -16 for listing. If the -l flag is +given, the commands are listed on standard output. The -n flag +suppresses the command numbers when listing. The -r flag +reverses the order of the listing. Otherwise, the editor given by +ename is invoked on a file containing those commands. If +ename is not given, the value of the following variable expansion +is used: ${FCEDIT:-${EDITOR:-vi}}. This says to use the +value of the FCEDIT variable if set, or the value of the +EDITOR variable if that is set, or vi if neither is set. +When editing is complete, the edited commands are echoed and executed. +

+

In the second form, command is re-executed after each instance +of pat in the selected command is replaced by rep. +command is interpreted the same as first above. +

+

A useful alias to use with the fc command is r='fc -s', so +that typing ‘r cc’ runs the last command beginning with cc +and typing ‘r’ re-executes the last command (see Aliases). +

+
+
history
+
+
+
history [n]
+history -c
+history -d offset
+history -d start-end
+history [-anrw] [filename]
+history -ps arg
+
+ +

With no options, display the history list with line numbers. +Lines prefixed 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 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. +

+

Options, if supplied, have the following meanings: +

+
+
-c
+

Clear the history list. This may be combined +with the other options to replace the history list completely. +

+
+
-d offset
+

Delete the history entry at position offset. +If offset is positive, it should be specified as it appears when +the history is displayed. +If offset is negative, it is interpreted as relative to one greater +than the last history position, so negative indices count back from the +end of the history, and an index of ‘-1’ refers to the current +history -d command. +

+
+
-d start-end
+

Delete the history entries between positions start and end, +inclusive. Positive and negative values for start and end +are interpreted as described above. +

+
+
-a
+

Append the new history lines to the history file. +These are history lines entered since the beginning of the current +Bash session, but not already appended to the history file. +

+
+
-n
+

Append the history lines not already read from the history file +to the current history list. These are lines appended to the history +file since the beginning of the current Bash session. +

+
+
-r
+

Read the history file and append its contents to +the history list. +

+
+
-w
+

Write out the current history list to the history file. +

+
+
-p
+

Perform history substitution on the args and display the result +on the standard output, without storing the results in the history list. +

+
+
-s
+

The args are added to the end of +the history list as a single entry. +

+
+
+ +

When any of the -w, -r, -a, or -n options is +used, if filename +is given, then it is used as the history file. If not, then +the value of the HISTFILE variable is used. +

+
+
+ +
+ +

9.3 History Expansion

+ + +

The History library provides a history expansion feature that is similar +to the history expansion provided by csh. This section +describes the syntax used to manipulate the history information. +

+

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, and is performed +on each line individually. Bash attempts to inform the history +expansion functions about quoting still in effect from previous lines. +

+

History expansion takes place in two parts. The first is to determine +which line from the history list should be used during substitution. +The second is to select portions of that line for inclusion into the +current one. The line selected from the history is called the +event, and the portions of that line that are acted upon are +called words. Various modifiers are available to manipulate +the selected words. The line is broken into words in the same fashion +that Bash does, so that several words +surrounded by quotes are considered one word. +History expansions are introduced by the appearance of the +history expansion character, which is ‘!’ by default. +

+

History expansion implements shell-like quoting conventions: +a backslash can be used to remove the special handling for the next character; +single quotes enclose verbatim sequences of characters, and can be used to +inhibit history expansion; +and characters enclosed within double quotes may be subject to history +expansion, since backslash can escape the history expansion character, +but single quotes may not, since they are not treated specially within +double quotes. +

+

When using the shell, only ‘\’ and ‘'’ may be used to escape the +history expansion character, but the history expansion character is +also treated as quoted if it immediately precedes the closing double quote +in a double-quoted string. +

+

Several shell options settable with the shopt +builtin (see The Shopt Builtin) may be used to tailor +the behavior of history expansion. If the +histverify shell option is enabled, 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 expansion 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. +This is most useful in conjunction with Readline. +

+

The shell allows control of the various characters used by the +history expansion mechanism with the histchars variable, +as explained above (see Bash Variables). The shell uses +the history comment character to mark history timestamps when +writing the history file. +

+ + + + + + +
+ +

9.3.1 Event Designators

+ + +

An event designator is a reference to a command line entry in the +history list. +Unless the reference is absolute, events are relative to the current +position in the history list. + +

+
+
!
+

Start a history substitution, except when followed by a space, tab, +the end of the line, ‘=’ or ‘(’ (when the +extglob shell option is enabled using the shopt builtin). +

+
+
!n
+

Refer to command line n. +

+
+
!-n
+

Refer to the command n lines back. +

+
+
!!
+

Refer to the previous command. This is a synonym for ‘!-1’. +

+
+
!string
+

Refer to the most recent command +preceding the current position in the history list +starting with string. +

+
+
!?string[?]
+

Refer to the most recent command +preceding the current position in the history list +containing string. +The trailing +‘?’ may be omitted if the string is followed immediately by +a newline. +If string is missing, the string from the most recent search is used; +it is an error if there is no previous search string. +

+
+
^string1^string2^
+

Quick Substitution. Repeat the last command, replacing string1 +with string2. Equivalent to +!!:s^string1^string2^. +

+
+
!#
+

The entire command line typed so far. +

+
+
+ +
+ +

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

+

For example, +

+
+
!!
+

designates the preceding command. When you type this, the preceding +command is repeated in toto. +

+
+
!!:$
+

designates the last argument of the preceding command. This may be +shortened to !$. +

+
+
!fi:2
+

designates the second argument of the most recent command starting with +the letters fi. +

+
+ +

Here are the word designators: +

+
+
0 (zero)
+

The 0th word. For many applications, this is the command word. +

+
+
n
+

The nth word. +

+
+
^
+

The first argument; that is, word 1. +

+
+
$
+

The last argument. +

+
+
%
+

The first word matched by the most recent ‘?string?’ search, +if the search string begins with a character that is part of a word. +

+
+
x-y
+

A range of words; ‘-y’ abbreviates ‘0-y’. +

+
+
*
+

All of the words, except the 0th. 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 ‘x’ is missing, it defaults to 0. +

+
+
+ +

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

+
+ +

9.3.3 Modifiers

+ +

After the optional word designator, you can add a sequence of one or more +of the following modifiers, each preceded by a ‘:’. +These modify, or edit, the word or words selected from the history event. +

+
+
h
+

Remove a trailing pathname component, leaving only the head. +

+
+
t
+

Remove all leading pathname components, leaving the tail. +

+
+
r
+

Remove a trailing suffix of the form ‘.suffix’, 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 spaces, tabs, and newlines. +The ‘q’ and ‘x’ modifiers are mutually exclusive; the last one +supplied is used. +

+
+
s/old/new/
+

Substitute new for the first occurrence of old in the +event line. +Any character may be used as the delimiter in place of ‘/’. +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. +If new is is null, each matching old is deleted. +The final delimiter is optional if it is the last +character on the input line. +

+
+
&
+

Repeat the previous substitution. +

+
+
g
+
a
+

Cause changes to be applied over the entire event line. Used in +conjunction with ‘s’, as in gs/old/new/, +or with ‘&’. +

+
+
G
+

Apply the following ‘s’ or ‘&’ modifier once to each word +in the event. +

+
+
+ +
+
+

+Next: , Previous: , Up: Top   [Contents][Index]

+
+

10 Installing Bash

+ +

This chapter provides basic instructions for installing Bash on +the various supported platforms. The distribution supports the +GNU operating systems, nearly every version of Unix, and several +non-Unix systems such as BeOS and Interix. +Other independent ports exist for +MS-DOS, OS/2, and Windows platforms. +

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

10.1 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-4.2$ ./configure --help
+
+ +

at the Bash prompt in your Bash source directory. +

+

If you want to build Bash in a directory separate from the source +directory – to build for multiple architectures, for example – +just use the full path to the configure script. The following commands +will build bash in a directory under /usr/local/build from +the source code in /usr/local/src/bash-4.4: +

+
+
mkdir /usr/local/build/bash-4.4
+cd /usr/local/build/bash-4.4
+bash /usr/local/src/bash-4.4/configure
+make
+
+ +

See Compiling For Multiple Architectures for more information +about building in a directory separate from the source. +

+

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 +bash-maintainers@gnu.org so they can be +considered for the next release. +

+

The file configure.ac is used to create configure +by a program called Autoconf. You only need +configure.ac if you want to change it or regenerate +configure using a newer version of Autoconf. If +you do this, make sure you are using Autoconf version 2.50 or +newer. +

+

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

+
+ +

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

+
+ +

10.3 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 +(see Basic Installation). +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. +

+
+ +

10.4 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 DESTDIRmake’ +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. +

+
+ +

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

+
+ +

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

+
+ +

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

+
+ +

10.8 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 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’, +‘direxpand-default’, and +‘xpg-echo-default’ are +enabled by default, unless the operating system does not provide the +necessary support. +

+
+
--enable-alias
+

Allow alias expansion and include the alias and unalias +builtins (see Aliases). +

+
+
--enable-arith-for-command
+

Include support for the alternate form of the for command +that behaves like the C language for statement +(see Looping Constructs). +

+
+
--enable-array-variables
+

Include support for one-dimensional array shell variables +(see Arrays). +

+
+
--enable-bang-history
+

Include support for csh-like history substitution +(see History Interaction). +

+
+
--enable-brace-expansion
+

Include csh-like brace expansion +( b{a,b}cbac bbc ). +See Brace Expansion, for a complete description. +

+
+
--enable-casemod-attributes
+

Include support for case-modifying attributes in the declare builtin +and assignment statements. Variables with the uppercase attribute, +for example, will have their values converted to uppercase upon assignment. +

+
+
--enable-casemod-expansion
+

Include support for case-modifying word expansions. +

+
+
--enable-command-timing
+

Include support for recognizing time as a reserved word and for +displaying timing statistics for the pipeline following time +(see Pipelines). +This allows pipelines as well as shell builtins and functions to be timed. +

+
+
--enable-cond-command
+

Include support for the [[ conditional command. +(see Conditional Constructs). +

+
+
--enable-cond-regexp
+

Include support for matching POSIX regular expressions using the +‘=~’ binary operator in the [[ conditional command. +(see Conditional Constructs). +

+
+
--enable-coprocesses
+

Include support for coprocesses and the coproc reserved word +(see Pipelines). +

+
+
--enable-debugger
+

Include support for the bash debugger (distributed separately). +

+
+
--enable-dev-fd-stat-broken
+

If calling stat on /dev/fd/N returns different results than +calling fstat on file descriptor N, supply this option to +enable a workaround. +This has implications for conditional commands that test file attributes. +

+
+
--enable-direxpand-default
+

Cause the direxpand shell option (see The Shopt Builtin) +to be enabled by default when the shell starts. +It is normally disabled by default. +

+
+
--enable-directory-stack
+

Include support for a csh-like directory stack and the +pushd, popd, and dirs builtins +(see 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 Bash Builtins, for details of the builtin and +enable builtin commands. +

+
+
--enable-dparen-arithmetic
+

Include support for the ((…)) command +(see Conditional Constructs). +

+
+
--enable-extended-glob
+

Include support for the extended pattern matching features described +above under Pattern Matching. +

+
+
--enable-extended-glob-default
+

Set the default value of the extglob shell option described +above under The Shopt Builtin to be enabled. +

+
+
--enable-function-import
+

Include support for importing function definitions exported by another +instance of the shell from the environment. This option is enabled by +default. +

+
+
--enable-glob-asciirange-default
+

Set the default value of the globasciiranges shell option described +above under The Shopt Builtin to be enabled. +This controls the behavior of character ranges when used in pattern matching +bracket expressions. +

+
+
--enable-help-builtin
+

Include the help builtin, which displays help on shell builtins and +variables (see Bash Builtins). +

+
+
--enable-history
+

Include command history and the fc and history +builtin commands (see Bash History Facilities). +

+
+
--enable-job-control
+

This enables the job control features (see 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 (see Redirections). +

+
+
--enable-process-substitution
+

This enables process substitution (see Process Substitution) if +the operating system provides the necessary support. +

+
+
--enable-progcomp
+

Enable the programmable completion facilities +(see 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 $PS0, $PS1, $PS2, and $PS4 prompt +strings. See Controlling the Prompt, for a complete list of prompt +string escape sequences. +

+
+
--enable-readline
+

Include support for command-line editing and history with the Bash +version of the Readline library (see 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 +The Restricted Shell, for a description of restricted mode. +

+
+
--enable-select
+

Include the select compound command, which allows the generation of +simple menus (see 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 (see 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. +See 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. +

+
+ +

Appendix A Reporting Bugs

+ +

Please report all bugs you find in Bash. +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 of Bash is always available for FTP from +ftp://ftp.gnu.org/pub/gnu/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 Bash. +
  • A description of the bug behaviour. +
  • A short script or ‘recipe’ which exercises the bug and may be used +to reproduce it. +
+ +

bashbug inserts the first three items automatically into +the template it provides for filing a bug report. +

+

Please send all reports concerning this manual to +bug-bash@gnu.org. +

+
+ +

Appendix B Major Differences From The Bourne Shell

+ +

Bash implements essentially the same grammar, parameter and +variable expansion, redirection, and quoting as the Bourne Shell. +Bash uses the POSIX standard as the specification of +how these features are to be implemented. There are some +differences between the traditional Bourne shell and Bash; this +section quickly details the differences of significance. A +number of these differences are explained in greater depth in +previous sections. +This section uses the version of sh included in SVR4.2 (the +last version of the historical Bourne shell) as the baseline reference. +

+
    +
  • Bash is POSIX-conformant, even where the POSIX specification +differs from traditional sh behavior (see Bash POSIX Mode). + +
  • Bash has multi-character invocation options (see Invoking Bash). + +
  • Bash has command-line editing (see Command Line Editing) and +the bind builtin. + +
  • Bash provides a programmable word completion mechanism +(see Programmable Completion), and builtin commands +complete, compgen, and compopt, to +manipulate it. + +
  • Bash has command history (see Bash History Facilities) and the +history and fc builtins to manipulate it. +The Bash history list maintains timestamp information and uses the +value of the HISTTIMEFORMAT variable to display it. + +
  • Bash implements csh-like history expansion +(see History Interaction). + +
  • Bash has one-dimensional array variables (see Arrays), and the +appropriate variable expansions and assignment syntax to use them. +Several of the Bash builtins take options to act on arrays. +Bash provides a number of built-in array variables. + +
  • The $'…' quoting syntax, which expands ANSI-C +backslash-escaped characters in the text between the single quotes, +is supported (see ANSI-C Quoting). + +
  • Bash supports the $"…" quoting syntax to do +locale-specific translation of the characters between the double +quotes. The -D, --dump-strings, and --dump-po-strings +invocation options list the translatable strings found in a script +(see Locale Translation). + +
  • Bash implements the ! keyword to negate the return value of +a pipeline (see Pipelines). +Very useful when an if statement needs to act only if a test fails. +The Bash ‘-o pipefail’ option to set will cause a pipeline to +return a failure status if any command fails. + +
  • Bash has the time reserved word and command timing (see Pipelines). +The display of the timing statistics may be controlled with the +TIMEFORMAT variable. + +
  • Bash implements the for (( expr1 ; expr2 ; expr3 )) +arithmetic for command, similar to the C language (see Looping Constructs). + +
  • Bash includes the select compound command, which allows the +generation of simple menus (see Conditional Constructs). + +
  • Bash includes the [[ compound command, which makes conditional +testing part of the shell grammar (see Conditional Constructs), including +optional regular expression matching. + +
  • Bash provides optional case-insensitive matching for the case and +[[ constructs. + +
  • Bash includes brace expansion (see Brace Expansion) and tilde +expansion (see Tilde Expansion). + +
  • Bash implements command aliases and the alias and unalias +builtins (see Aliases). + +
  • Bash provides shell arithmetic, the (( compound command +(see Conditional Constructs), +and arithmetic expansion (see Shell Arithmetic). + +
  • Variables present in the shell’s initial environment are automatically +exported to child processes. The Bourne shell does not normally do +this unless the variables are explicitly marked using the export +command. + +
  • Bash supports the ‘+=’ assignment operator, which appends to the value +of the variable named on the left hand side. + +
  • Bash includes the POSIX pattern removal ‘%’, ‘#’, ‘%%’ +and ‘##’ expansions to remove leading or trailing substrings from +variable values (see Shell Parameter Expansion). + +
  • The expansion ${#xx}, which returns the length of ${xx}, +is supported (see Shell Parameter Expansion). + +
  • The expansion ${var:offset[:length]}, +which expands to the substring of var’s value of length +length, beginning at offset, is present +(see Shell Parameter Expansion). + +
  • The expansion +${var/[/]pattern[/replacement]}, +which matches pattern and replaces it with replacement in +the value of var, is available (see Shell Parameter Expansion). + +
  • The expansion ${!prefix*} expansion, which expands to +the names of all shell variables whose names begin with prefix, +is available (see Shell Parameter Expansion). + +
  • Bash has indirect variable expansion using ${!word} +(see Shell Parameter Expansion). + +
  • Bash can expand positional parameters beyond $9 using +${num}. + +
  • The POSIX $() form of command substitution +is implemented (see Command Substitution), +and preferred to the Bourne shell’s `` (which +is also implemented for backwards compatibility). + +
  • Bash has process substitution (see Process Substitution). + +
  • Bash automatically assigns variables that provide information about the +current user (UID, EUID, and GROUPS), the current host +(HOSTTYPE, OSTYPE, MACHTYPE, and HOSTNAME), +and the instance of Bash that is running (BASH, +BASH_VERSION, and BASH_VERSINFO). See Bash Variables, +for details. + +
  • The IFS variable is used to split only the results of expansion, +not all words (see Word Splitting). +This closes a longstanding shell security hole. + +
  • The filename expansion bracket expression code uses ‘!’ and ‘^’ +to negate the set of characters between the brackets. +The Bourne shell uses only ‘!’. + +
  • Bash implements the full set of POSIX filename expansion operators, +including character classes, equivalence classes, and +collating symbols (see Filename Expansion). + +
  • Bash implements extended pattern matching features when the extglob +shell option is enabled (see Pattern Matching). + +
  • It is possible to have a variable and a function with the same name; +sh does not separate the two name spaces. + +
  • Bash functions are permitted to have local variables using the +local builtin, and thus useful recursive functions may be written +(see Bash Builtins). + +
  • Variable assignments preceding commands affect only that command, even +builtins and functions (see Environment). +In sh, all variable assignments +preceding commands are global unless the command is executed from the +file system. + +
  • Bash performs filename expansion on filenames specified as operands +to input and output redirection operators (see Redirections). + +
  • Bash contains the ‘<>’ redirection operator, allowing a file to be +opened for both reading and writing, and the ‘&>’ redirection +operator, for directing standard output and standard error to the same +file (see Redirections). + +
  • Bash includes the ‘<<<’ redirection operator, allowing a string to +be used as the standard input to a command. + +
  • Bash implements the ‘[n]<&word’ and ‘[n]>&word’ +redirection operators, which move one file descriptor to another. + +
  • Bash treats a number of filenames specially when they are +used in redirection operators (see Redirections). + +
  • Bash can open network connections to arbitrary machines and services +with the redirection operators (see Redirections). + +
  • The noclobber option is available to avoid overwriting existing +files with output redirection (see The Set Builtin). +The ‘>|’ redirection operator may be used to override noclobber. + +
  • The Bash cd and pwd builtins (see Bourne Shell Builtins) +each take -L and -P options to switch between logical and +physical modes. + +
  • Bash allows a function to override a builtin with the same name, and provides +access to that builtin’s functionality within the function via the +builtin and command builtins (see Bash Builtins). + +
  • The command builtin allows selective disabling of functions +when command lookup is performed (see Bash Builtins). + +
  • Individual builtins may be enabled or disabled using the enable +builtin (see Bash Builtins). + +
  • The Bash exec builtin takes additional options that allow users +to control the contents of the environment passed to the executed +command, and what the zeroth argument to the command is to be +(see Bourne Shell Builtins). + +
  • Shell functions may be exported to children via the environment +using export -f (see Shell Functions). + +
  • The Bash export, readonly, and declare builtins can +take a -f option to act on shell functions, a -p option to +display variables with various attributes set in a format that can be +used as shell input, a -n option to remove various variable +attributes, and ‘name=value’ arguments to set variable attributes +and values simultaneously. + +
  • The Bash hash builtin allows a name to be associated with +an arbitrary filename, even when that filename cannot be found by +searching the $PATH, using ‘hash -p’ +(see Bourne Shell Builtins). + +
  • Bash includes a help builtin for quick reference to shell +facilities (see Bash Builtins). + +
  • The printf builtin is available to display formatted output +(see Bash Builtins). + +
  • The Bash read builtin (see Bash Builtins) +will read a line ending in ‘\’ with +the -r option, and will use the REPLY variable as a +default if no non-option arguments are supplied. +The Bash read builtin +also accepts a prompt string with the -p option and will use +Readline to obtain the line when given the -e option. +The read builtin also has additional options to control input: +the -s option will turn off echoing of input characters as +they are read, the -t option will allow read to time out +if input does not arrive within a specified number of seconds, the +-n option will allow reading only a specified number of +characters rather than a full line, and the -d option will read +until a particular character rather than newline. + +
  • The return builtin may be used to abort execution of scripts +executed with the . or source builtins +(see Bourne Shell Builtins). + +
  • Bash includes the shopt builtin, for finer control of shell +optional capabilities (see The Shopt Builtin), and allows these options +to be set and unset at shell invocation (see Invoking Bash). + +
  • Bash has much more optional behavior controllable with the set +builtin (see The Set Builtin). + +
  • The ‘-x’ (xtrace) option displays commands other than +simple commands when performing an execution trace +(see The Set Builtin). + +
  • The test builtin (see Bourne Shell Builtins) +is slightly different, as it implements the POSIX algorithm, +which specifies the behavior based on the number of arguments. + +
  • Bash includes the caller builtin, which displays the context of +any active subroutine call (a shell function or a script executed with +the . or source builtins). This supports the bash +debugger. + +
  • The trap builtin (see Bourne Shell Builtins) allows a +DEBUG pseudo-signal specification, similar to EXIT. +Commands specified with a DEBUG trap are 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. +The DEBUG trap is not inherited by shell functions unless the +function has been given the trace attribute or the +functrace option has been enabled using the shopt builtin. +The extdebug shell option has additional effects on the +DEBUG trap. + +

    The trap builtin (see Bourne Shell Builtins) allows an +ERR pseudo-signal specification, similar to EXIT and DEBUG. +Commands specified with an ERR trap are executed after a simple +command fails, with a few exceptions. +The ERR trap is not inherited by shell functions unless the +-o errtrace option to the set builtin is enabled. +

    +

    The trap builtin (see Bourne Shell Builtins) allows a +RETURN pseudo-signal specification, similar to +EXIT and DEBUG. +Commands specified with an RETURN trap are executed before +execution resumes after a shell function or a shell script executed with +. or source returns. +The RETURN trap is not inherited by shell functions unless the +function has been given the trace attribute or the +functrace option has been enabled using the shopt builtin. +

    +
  • The Bash type builtin is more extensive and gives more information +about the names it finds (see Bash Builtins). + +
  • The Bash umask builtin permits a -p option to cause +the output to be displayed in the form of a umask command +that may be reused as input (see Bourne Shell Builtins). + +
  • Bash implements a csh-like directory stack, and provides the +pushd, popd, and dirs builtins to manipulate it +(see The Directory Stack). +Bash also makes the directory stack visible as the value of the +DIRSTACK shell variable. + +
  • Bash interprets special backslash-escaped characters in the prompt +strings when interactive (see Controlling the Prompt). + +
  • The Bash restricted mode is more useful (see The Restricted Shell); +the SVR4.2 shell restricted mode is too limited. + +
  • The disown builtin can remove a job from the internal shell +job table (see Job Control Builtins) or suppress the sending +of SIGHUP to a job when the shell exits as the result of a +SIGHUP. + +
  • Bash includes a number of features to support a separate debugger for +shell scripts. + +
  • The SVR4.2 shell has two privilege-related builtins +(mldmode and priv) not present in Bash. + +
  • Bash does not have the stop or newgrp builtins. + +
  • Bash does not use the SHACCT variable or perform shell accounting. + +
  • The SVR4.2 sh uses a TIMEOUT variable like Bash uses +TMOUT. + +
+ +

More features unique to Bash may be found in Bash Features. +

+ +

B.1 Implementation Differences From The SVR4.2 Shell

+ +

Since Bash is a completely new implementation, it does not suffer from +many of the limitations of the SVR4.2 shell. For instance: +

+
    +
  • Bash does not fork a subshell when redirecting into or out of +a shell control structure such as an if or while +statement. + +
  • Bash does not allow unbalanced quotes. The SVR4.2 shell will silently +insert a needed closing quote at EOF under certain circumstances. +This can be the cause of some hard-to-find errors. + +
  • The SVR4.2 shell uses a baroque memory management scheme based on +trapping SIGSEGV. If the shell is started from a process with +SIGSEGV blocked (e.g., by using the system() C library +function call), it misbehaves badly. + +
  • In a questionable attempt at security, the SVR4.2 shell, +when invoked without the -p option, will alter its real +and effective UID and GID if they are less than some +magic threshold value, commonly 100. +This can lead to unexpected results. + +
  • The SVR4.2 shell does not allow users to trap SIGSEGV, +SIGALRM, or SIGCHLD. + +
  • The SVR4.2 shell does not allow the IFS, MAILCHECK, +PATH, PS1, or PS2 variables to be unset. + +
  • The SVR4.2 shell treats ‘^’ as the undocumented equivalent of +‘|’. + +
  • Bash allows multiple option arguments when it is invoked (-x -v); +the SVR4.2 shell allows only one option argument (-xv). In +fact, some versions of the shell dump core if the second argument begins +with a ‘-’. + +
  • The SVR4.2 shell exits a script if any builtin fails; Bash exits +a script only if one of the POSIX special builtins fails, and +only for certain failures, as enumerated in the POSIX standard. + +
  • The SVR4.2 shell behaves differently when invoked as jsh +(it turns on job control). +
+ +
+ +

Appendix C GNU Free Documentation License

+ +
Version 1.3, 3 November 2008 +
+ +
+
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+http://fsf.org/
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+ +
    +
  1. PREAMBLE + +

    The purpose of this License is to make a manual, textbook, or other +functional and useful document free in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. +

    +

    This License is a kind of “copyleft”, which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. +

    +

    We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. +

    +
  2. APPLICABILITY AND DEFINITIONS + +

    This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The “Document”, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as “you”. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. +

    +

    A “Modified Version” of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. +

    +

    A “Secondary Section” is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document’s overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. +

    +

    The “Invariant Sections” are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. +

    +

    The “Cover Texts” are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. +

    +

    A “Transparent” copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not “Transparent” is called “Opaque”. +

    +

    Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for +output purposes only. +

    +

    The “Title Page” means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work’s title, +preceding the beginning of the body of the text. +

    +

    The “publisher” means any person or entity that distributes copies +of the Document to the public. +

    +

    A section “Entitled XYZ” means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as “Acknowledgements”, +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” +of such a section when you modify the Document means that it remains a +section “Entitled XYZ” according to this definition. +

    +

    The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. +

    +
  3. VERBATIM COPYING + +

    You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. +

    +

    You may also lend copies, under the same conditions stated above, and +you may publicly display copies. +

    +
  4. COPYING IN QUANTITY + +

    If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document’s license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. +

    +

    If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. +

    +

    If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. +

    +

    It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. +

    +
  5. MODIFICATIONS + +

    You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: +

    +
      +
    1. Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +
    2. List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +
    3. State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +
    4. Preserve all the copyright notices of the Document. + +
    5. Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +
    6. Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +
    7. Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document’s license notice. + +
    8. Include an unaltered copy of this License. + +
    9. Preserve the section Entitled “History”, Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled “History” in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +
    10. Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the “History” section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +
    11. For any section Entitled “Acknowledgements” or “Dedications”, Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +
    12. Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +
    13. Delete any section Entitled “Endorsements”. Such a section +may not be included in the Modified Version. + +
    14. Do not retitle any existing section to be Entitled “Endorsements” or +to conflict in title with any Invariant Section. + +
    15. Preserve any Warranty Disclaimers. +
    + +

    If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version’s license notice. +These titles must be distinct from any other section titles. +

    +

    You may add a section Entitled “Endorsements”, provided it contains +nothing but endorsements of your Modified Version by various +parties—for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. +

    +

    You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. +

    +

    The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. +

    +
  6. COMBINING DOCUMENTS + +

    You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. +

    +

    The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. +

    +

    In the combination, you must combine any sections Entitled “History” +in the various original documents, forming one section Entitled +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” +

    +
  7. COLLECTIONS OF DOCUMENTS + +

    You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. +

    +

    You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. +

    +
  8. AGGREGATION WITH INDEPENDENT WORKS + +

    A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an “aggregate” if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation’s users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. +

    +

    If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document’s Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. +

    +
  9. TRANSLATION + +

    Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. +

    +

    If a section in the Document is Entitled “Acknowledgements”, +“Dedications”, or “History”, the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. +

    +
  10. TERMINATION + +

    You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. +

    +

    However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. +

    +

    Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. +

    +

    Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. +

    +
  11. FUTURE REVISIONS OF THIS LICENSE + +

    The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation 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. See +http://www.gnu.org/copyleft/. +

    +

    Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy’s public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. +

    +
  12. RELICENSING + +

    “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +“Massive Multiauthor Collaboration” (or “MMC”) contained in the +site means any set of copyrightable works thus published on the MMC +site. +

    +

    “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. +

    +

    “Incorporate” means to publish or republish a Document, in whole or +in part, as part of another Document. +

    +

    An MMC is “eligible for relicensing” if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole +or in part into the MMC, (1) had no cover texts or invariant sections, +and (2) were thus incorporated prior to November 1, 2008. +

    +

    The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. +

    +
+ +

ADDENDUM: How to use this License for your documents

+ +

To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: +

+
+
  Copyright (C)  year  your name.
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.3
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts.  A copy of the license is included in the section entitled ``GNU
+  Free Documentation License''.
+
+ +

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with…Texts.” line with this: +

+
+
    with the Invariant Sections being list their titles, with
+    the Front-Cover Texts being list, and with the Back-Cover Texts
+    being list.
+
+ +

If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. +

+

If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. +

+ + +
+ +

Appendix D Indexes

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

+Next: , Up: Indexes   [Contents][Index]

+
+

D.1 Index of Shell Builtin Commands

+
Jump to:   . +   +: +   +[ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +J +   +K +   +L +   +M +   +P +   +R +   +S +   +T +   +U +   +W +   +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry  Section

.
.: Bourne Shell Builtins

:
:: Bourne Shell Builtins

[
[: Bourne Shell Builtins

A
alias: Bash Builtins

B
bg: Job Control Builtins
bind: Bash Builtins
break: Bourne Shell Builtins
builtin: Bash Builtins

C
caller: Bash Builtins
cd: Bourne Shell Builtins
command: Bash Builtins
compgen: Programmable Completion Builtins
complete: Programmable Completion Builtins
compopt: Programmable Completion Builtins
continue: Bourne Shell Builtins

D
declare: Bash Builtins
dirs: Directory Stack Builtins
disown: Job Control Builtins

E
echo: Bash Builtins
enable: Bash Builtins
eval: Bourne Shell Builtins
exec: Bourne Shell Builtins
exit: Bourne Shell Builtins
export: Bourne Shell Builtins

F
fc: Bash History Builtins
fg: Job Control Builtins

G
getopts: Bourne Shell Builtins

H
hash: Bourne Shell Builtins
help: Bash Builtins
history: Bash History Builtins

J
jobs: Job Control Builtins

K
kill: Job Control Builtins

L
let: Bash Builtins
local: Bash Builtins
logout: Bash Builtins

M
mapfile: Bash Builtins

P
popd: Directory Stack Builtins
printf: Bash Builtins
pushd: Directory Stack Builtins
pwd: Bourne Shell Builtins

R
read: Bash Builtins
readarray: Bash Builtins
readonly: Bourne Shell Builtins
return: Bourne Shell Builtins

S
set: The Set Builtin
shift: Bourne Shell Builtins
shopt: The Shopt Builtin
source: Bash Builtins
suspend: Job Control Builtins

T
test: Bourne Shell Builtins
times: Bourne Shell Builtins
trap: Bourne Shell Builtins
type: Bash Builtins
typeset: Bash Builtins

U
ulimit: Bash Builtins
umask: Bourne Shell Builtins
unalias: Bash Builtins
unset: Bourne Shell Builtins

W
wait: Job Control Builtins

+
Jump to:   . +   +: +   +[ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +J +   +K +   +L +   +M +   +P +   +R +   +S +   +T +   +U +   +W +   +
+ +
+
+

+Next: , Previous: , Up: Indexes   [Contents][Index]

+
+

D.2 Index of Shell Reserved Words

+
Jump to:   ! +   +[ +   +] +   +{ +   +} +   +
+C +   +D +   +E +   +F +   +I +   +S +   +T +   +U +   +W +   +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry  Section

!
!: Pipelines

[
[[: Conditional Constructs

]
]]: Conditional Constructs

{
{: Command Grouping

}
}: Command Grouping

C
case: Conditional Constructs

D
do: Looping Constructs
done: Looping Constructs

E
elif: Conditional Constructs
else: Conditional Constructs
esac: Conditional Constructs

F
fi: Conditional Constructs
for: Looping Constructs
function: Shell Functions

I
if: Conditional Constructs
in: Conditional Constructs

S
select: Conditional Constructs

T
then: Conditional Constructs
time: Pipelines

U
until: Looping Constructs

W
while: Looping Constructs

+
Jump to:   ! +   +[ +   +] +   +{ +   +} +   +
+C +   +D +   +E +   +F +   +I +   +S +   +T +   +U +   +W +   +
+ +
+
+

+Next: , Previous: , Up: Indexes   [Contents][Index]

+
+

D.3 Parameter and Variable Index

+
Jump to:   ! +   +# +   +$ +   +* +   +- +   +0 +   +? +   +@ +   +_ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +K +   +L +   +M +   +O +   +P +   +R +   +S +   +T +   +U +   +V +   +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry  Section

!
!: Special Parameters

#
#: Special Parameters

$
$: Special Parameters
$!: Special Parameters
$#: Special Parameters
$$: Special Parameters
$*: Special Parameters
$-: Special Parameters
$0: Special Parameters
$?: Special Parameters
$@: Special Parameters
$_: Bash Variables

*
*: Special Parameters

-
-: Special Parameters

0
0: Special Parameters

?
?: Special Parameters

@
@: Special Parameters

_
_: Bash Variables

A
auto_resume: Job Control Variables

B
BASH: Bash Variables
BASHOPTS: Bash Variables
BASHPID: Bash Variables
BASH_ALIASES: Bash Variables
BASH_ARGC: Bash Variables
BASH_ARGV: Bash Variables
BASH_ARGV0: Bash Variables
BASH_CMDS: Bash Variables
BASH_COMMAND: Bash Variables
BASH_COMPAT: Bash Variables
BASH_ENV: Bash Variables
BASH_EXECUTION_STRING: Bash Variables
BASH_LINENO: Bash Variables
BASH_LOADABLES_PATH: Bash Variables
BASH_REMATCH: Bash Variables
BASH_SOURCE: Bash Variables
BASH_SUBSHELL: Bash Variables
BASH_VERSINFO: Bash Variables
BASH_VERSION: Bash Variables
BASH_XTRACEFD: Bash Variables
bell-style: Readline Init File Syntax
bind-tty-special-chars: Readline Init File Syntax
blink-matching-paren: Readline Init File Syntax

C
CDPATH: Bourne Shell Variables
CHILD_MAX: Bash Variables
colored-completion-prefix: Readline Init File Syntax
colored-stats: Readline Init File Syntax
COLUMNS: Bash Variables
comment-begin: Readline Init File Syntax
completion-display-width: Readline Init File Syntax
completion-ignore-case: Readline Init File Syntax
completion-map-case: Readline Init File Syntax
completion-prefix-display-length: Readline Init File Syntax
completion-query-items: Readline Init File Syntax
COMPREPLY: Bash Variables
COMP_CWORD: Bash Variables
COMP_KEY: Bash Variables
COMP_LINE: Bash Variables
COMP_POINT: Bash Variables
COMP_TYPE: Bash Variables
COMP_WORDBREAKS: Bash Variables
COMP_WORDS: Bash Variables
convert-meta: Readline Init File Syntax
COPROC: Bash Variables

D
DIRSTACK: Bash Variables
disable-completion: Readline Init File Syntax

E
echo-control-characters: Readline Init File Syntax
editing-mode: Readline Init File Syntax
EMACS: Bash Variables
emacs-mode-string: Readline Init File Syntax
enable-bracketed-paste: Readline Init File Syntax
enable-keypad: Readline Init File Syntax
ENV: Bash Variables
EPOCHREALTIME: Bash Variables
EPOCHSECONDS: Bash Variables
EUID: Bash Variables
EXECIGNORE: Bash Variables
expand-tilde: Readline Init File Syntax

F
FCEDIT: Bash Variables
FIGNORE: Bash Variables
FUNCNAME: Bash Variables
FUNCNEST: Bash Variables

G
GLOBIGNORE: Bash Variables
GROUPS: Bash Variables

H
histchars: Bash Variables
HISTCMD: Bash Variables
HISTCONTROL: Bash Variables
HISTFILE: Bash Variables
HISTFILESIZE: Bash Variables
HISTIGNORE: Bash Variables
history-preserve-point: Readline Init File Syntax
history-size: Readline Init File Syntax
HISTSIZE: Bash Variables
HISTTIMEFORMAT: Bash Variables
HOME: Bourne Shell Variables
horizontal-scroll-mode: Readline Init File Syntax
HOSTFILE: Bash Variables
HOSTNAME: Bash Variables
HOSTTYPE: Bash Variables

I
IFS: Bourne Shell Variables
IGNOREEOF: Bash Variables
input-meta: Readline Init File Syntax
INPUTRC: Bash Variables
INSIDE_EMACS: Bash Variables
isearch-terminators: Readline Init File Syntax

K
keymap: Readline Init File Syntax

L
LANG: Bash Variables
LC_ALL: Bash Variables
LC_COLLATE: Bash Variables
LC_CTYPE: Bash Variables
LC_MESSAGES: Locale Translation
LC_MESSAGES: Bash Variables
LC_NUMERIC: Bash Variables
LC_TIME: Bash Variables
LINENO: Bash Variables
LINES: Bash Variables

M
MACHTYPE: Bash Variables
MAIL: Bourne Shell Variables
MAILCHECK: Bash Variables
MAILPATH: Bourne Shell Variables
MAPFILE: Bash Variables
mark-modified-lines: Readline Init File Syntax
mark-symlinked-directories: Readline Init File Syntax
match-hidden-files: Readline Init File Syntax
menu-complete-display-prefix: Readline Init File Syntax
meta-flag: Readline Init File Syntax

O
OLDPWD: Bash Variables
OPTARG: Bourne Shell Variables
OPTERR: Bash Variables
OPTIND: Bourne Shell Variables
OSTYPE: Bash Variables
output-meta: Readline Init File Syntax

P
page-completions: Readline Init File Syntax
PATH: Bourne Shell Variables
PIPESTATUS: Bash Variables
POSIXLY_CORRECT: Bash Variables
PPID: Bash Variables
PROMPT_COMMAND: Bash Variables
PROMPT_DIRTRIM: Bash Variables
PS0: Bash Variables
PS1: Bourne Shell Variables
PS2: Bourne Shell Variables
PS3: Bash Variables
PS4: Bash Variables
PWD: Bash Variables

R
RANDOM: Bash Variables
READLINE_LINE: Bash Variables
READLINE_MARK: Bash Variables
READLINE_POINT: Bash Variables
REPLY: Bash Variables
revert-all-at-newline: Readline Init File Syntax

S
SECONDS: Bash Variables
SHELL: Bash Variables
SHELLOPTS: Bash Variables
SHLVL: Bash Variables
show-all-if-ambiguous: Readline Init File Syntax
show-all-if-unmodified: Readline Init File Syntax
show-mode-in-prompt: Readline Init File Syntax
skip-completed-text: Readline Init File Syntax
SRANDOM: Bash Variables

T
TEXTDOMAIN: Locale Translation
TEXTDOMAINDIR: Locale Translation
TIMEFORMAT: Bash Variables
TMOUT: Bash Variables
TMPDIR: Bash Variables

U
UID: Bash Variables

V
vi-cmd-mode-string: Readline Init File Syntax
vi-ins-mode-string: Readline Init File Syntax
visible-stats: Readline Init File Syntax

+
Jump to:   ! +   +# +   +$ +   +* +   +- +   +0 +   +? +   +@ +   +_ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +K +   +L +   +M +   +O +   +P +   +R +   +S +   +T +   +U +   +V +   +
+ +
+
+

+Next: , Previous: , Up: Indexes   [Contents][Index]

+
+

D.4 Function Index

+
Jump to:   A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +K +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +Y +   +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry  Section

A
abort (C-g): Miscellaneous Commands
accept-line (Newline or Return): Commands For History
alias-expand-line (): Miscellaneous Commands

B
backward-char (C-b): Commands For Moving
backward-delete-char (Rubout): Commands For Text
backward-kill-line (C-x Rubout): Commands For Killing
backward-kill-word (M-DEL): Commands For Killing
backward-word (M-b): Commands For Moving
beginning-of-history (M-<): Commands For History
beginning-of-line (C-a): Commands For Moving
bracketed-paste-begin (): Commands For Text

C
call-last-kbd-macro (C-x e): Keyboard Macros
capitalize-word (M-c): Commands For Text
character-search (C-]): Miscellaneous Commands
character-search-backward (M-C-]): Miscellaneous Commands
clear-display (M-C-l): Commands For Moving
clear-screen (C-l): Commands For Moving
complete (TAB): Commands For Completion
complete-command (M-!): Commands For Completion
complete-filename (M-/): Commands For Completion
complete-hostname (M-@): Commands For Completion
complete-into-braces (M-{): Commands For Completion
complete-username (M-~): Commands For Completion
complete-variable (M-$): Commands For Completion
copy-backward-word (): Commands For Killing
copy-forward-word (): Commands For Killing
copy-region-as-kill (): Commands For Killing

D
dabbrev-expand (): Commands For Completion
delete-char (C-d): Commands For Text
delete-char-or-list (): Commands For Completion
delete-horizontal-space (): Commands For Killing
digit-argument (M-0, M-1, … M--): Numeric Arguments
display-shell-version (C-x C-v): Miscellaneous Commands
do-lowercase-version (M-A, M-B, M-x, …): Miscellaneous Commands
downcase-word (M-l): Commands For Text
dump-functions (): Miscellaneous Commands
dump-macros (): Miscellaneous Commands
dump-variables (): Miscellaneous Commands
dynamic-complete-history (M-TAB): Commands For Completion

E
edit-and-execute-command (C-x C-e): Miscellaneous Commands
end-kbd-macro (C-x )): Keyboard Macros
end-of-file (usually C-d): Commands For Text
end-of-history (M->): Commands For History
end-of-line (C-e): Commands For Moving
exchange-point-and-mark (C-x C-x): Miscellaneous Commands

F
forward-backward-delete-char (): Commands For Text
forward-char (C-f): Commands For Moving
forward-search-history (C-s): Commands For History
forward-word (M-f): Commands For Moving

G
glob-complete-word (M-g): Miscellaneous Commands
glob-expand-word (C-x *): Miscellaneous Commands
glob-list-expansions (C-x g): Miscellaneous Commands

H
history-and-alias-expand-line (): Miscellaneous Commands
history-expand-line (M-^): Miscellaneous Commands
history-search-backward (): Commands For History
history-search-forward (): Commands For History
history-substring-search-backward (): Commands For History
history-substring-search-forward (): Commands For History

I
insert-comment (M-#): Miscellaneous Commands
insert-completions (M-*): Commands For Completion
insert-last-argument (M-. or M-_): Miscellaneous Commands

K
kill-line (C-k): Commands For Killing
kill-region (): Commands For Killing
kill-whole-line (): Commands For Killing
kill-word (M-d): Commands For Killing

M
magic-space (): Miscellaneous Commands
menu-complete (): Commands For Completion
menu-complete-backward (): Commands For Completion

N
next-history (C-n): Commands For History
next-screen-line (): Commands For Moving
non-incremental-forward-search-history (M-n): Commands For History
non-incremental-reverse-search-history (M-p): Commands For History

O
operate-and-get-next (C-o): Commands For History
overwrite-mode (): Commands For Text

P
possible-command-completions (C-x !): Commands For Completion
possible-completions (M-?): Commands For Completion
possible-filename-completions (C-x /): Commands For Completion
possible-hostname-completions (C-x @): Commands For Completion
possible-username-completions (C-x ~): Commands For Completion
possible-variable-completions (C-x $): Commands For Completion
prefix-meta (ESC): Miscellaneous Commands
previous-history (C-p): Commands For History
previous-screen-line (): Commands For Moving
print-last-kbd-macro (): Keyboard Macros

Q
quoted-insert (C-q or C-v): Commands For Text

R
re-read-init-file (C-x C-r): Miscellaneous Commands
redraw-current-line (): Commands For Moving
reverse-search-history (C-r): Commands For History
revert-line (M-r): Miscellaneous Commands

S
self-insert (a, b, A, 1, !, …): Commands For Text
set-mark (C-@): Miscellaneous Commands
shell-backward-kill-word (): Commands For Killing
shell-backward-word (M-C-b): Commands For Moving
shell-expand-line (M-C-e): Miscellaneous Commands
shell-forward-word (M-C-f): Commands For Moving
shell-kill-word (M-C-d): Commands For Killing
shell-transpose-words (M-C-t): Commands For Killing
skip-csi-sequence (): Miscellaneous Commands
start-kbd-macro (C-x (): Keyboard Macros

T
tilde-expand (M-&): Miscellaneous Commands
transpose-chars (C-t): Commands For Text
transpose-words (M-t): Commands For Text

U
undo (C-_ or C-x C-u): Miscellaneous Commands
universal-argument (): Numeric Arguments
unix-filename-rubout (): Commands For Killing
unix-line-discard (C-u): Commands For Killing
unix-word-rubout (C-w): Commands For Killing
upcase-word (M-u): Commands For Text

Y
yank (C-y): Commands For Killing
yank-last-arg (M-. or M-_): Commands For History
yank-nth-arg (M-C-y): Commands For History
yank-pop (M-y): Commands For Killing

+
Jump to:   A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +K +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +Y +   +
+ +
+
+

+Previous: , Up: Indexes   [Contents][Index]

+
+

D.5 Concept Index

+
Jump to:   A +   +B +   +C +   +D +   +E +   +F +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +V +   +W +   +Y +   +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry  Section

A
alias expansion: Aliases
arithmetic evaluation: Shell Arithmetic
arithmetic expansion: Arithmetic Expansion
arithmetic, shell: Shell Arithmetic
arrays: Arrays

B
background: Job Control Basics
Bash configuration: Basic Installation
Bash installation: Basic Installation
Bourne shell: Basic Shell Features
brace expansion: Brace Expansion
builtin: Definitions

C
command editing: Readline Bare Essentials
command execution: Command Search and Execution
command expansion: Simple Command Expansion
command history: Bash History Facilities
command search: Command Search and Execution
command substitution: Command Substitution
command timing: Pipelines
commands, compound: Compound Commands
commands, conditional: Conditional Constructs
commands, grouping: Command Grouping
commands, lists: Lists
commands, looping: Looping Constructs
commands, pipelines: Pipelines
commands, shell: Shell Commands
commands, simple: Simple Commands
comments, shell: Comments
Compatibility Level: Shell Compatibility Mode
Compatibility Mode: Shell Compatibility Mode
completion builtins: Programmable Completion Builtins
configuration: Basic Installation
control operator: Definitions
coprocess: Coprocesses

D
directory stack: The Directory Stack

E
editing command lines: Readline Bare Essentials
environment: Environment
evaluation, arithmetic: Shell Arithmetic
event designators: Event Designators
execution environment: Command Execution Environment
exit status: Definitions
exit status: Exit Status
expansion: Shell Expansions
expansion, arithmetic: Arithmetic Expansion
expansion, brace: Brace Expansion
expansion, filename: Filename Expansion
expansion, parameter: Shell Parameter Expansion
expansion, pathname: Filename Expansion
expansion, tilde: Tilde Expansion
expressions, arithmetic: Shell Arithmetic
expressions, conditional: Bash Conditional Expressions

F
field: Definitions
filename: Definitions
filename expansion: Filename Expansion
foreground: Job Control Basics
functions, shell: Shell Functions

H
history builtins: Bash History Builtins
history events: Event Designators
history expansion: History Interaction
history list: Bash History Facilities
History, how to use: A Programmable Completion Example

I
identifier: Definitions
initialization file, readline: Readline Init File
installation: Basic Installation
interaction, readline: Readline Interaction
interactive shell: Invoking Bash
interactive shell: Interactive Shells
internationalization: Locale Translation

J
job: Definitions
job control: Definitions
job control: Job Control Basics

K
kill ring: Readline Killing Commands
killing text: Readline Killing Commands

L
localization: Locale Translation
login shell: Invoking Bash

M
matching, pattern: Pattern Matching
metacharacter: Definitions

N
name: Definitions
native languages: Locale Translation
notation, readline: Readline Bare Essentials

O
operator, shell: Definitions

P
parameter expansion: Shell Parameter Expansion
parameters: Shell Parameters
parameters, positional: Positional Parameters
parameters, special: Special Parameters
pathname expansion: Filename Expansion
pattern matching: Pattern Matching
pipeline: Pipelines
POSIX: Definitions
POSIX Mode: Bash POSIX Mode
process group: Definitions
process group ID: Definitions
process substitution: Process Substitution
programmable completion: Programmable Completion
prompting: Controlling the Prompt

Q
quoting: Quoting
quoting, ANSI: ANSI-C Quoting

R
Readline, how to use: Job Control Variables
redirection: Redirections
reserved word: Definitions
reserved words: Reserved Words
restricted shell: The Restricted Shell
return status: Definitions

S
shell arithmetic: Shell Arithmetic
shell function: Shell Functions
shell script: Shell Scripts
shell variable: Shell Parameters
shell, interactive: Interactive Shells
signal: Definitions
signal handling: Signals
special builtin: Definitions
special builtin: Special Builtins
startup files: Bash Startup Files
suspending jobs: Job Control Basics

T
tilde expansion: Tilde Expansion
token: Definitions
translation, native languages: Locale Translation

V
variable, shell: Shell Parameters
variables, readline: Readline Init File Syntax

W
word: Definitions
word splitting: Word Splitting

Y
yanking text: Readline Killing Commands

+
Jump to:   A +   +B +   +C +   +D +   +E +   +F +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +V +   +W +   +Y +   +
+ +
+ + + + + diff --git a/bash-5.1/doc/bashref.info b/bash-5.1/doc/bashref.info new file mode 100644 index 0000000..20ebf24 --- /dev/null +++ b/bash-5.1/doc/bashref.info @@ -0,0 +1,12123 @@ +This is bashref.info, produced by makeinfo version 6.7 from +bashref.texi. + +This text is a brief description of the features that are present in the +Bash shell (version 5.1, 29 October 2020). + + This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.1. + + Copyright (C) 1988-2020 Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, + Version 1.3 or any later version published by the Free Software + Foundation; with no Invariant Sections, no Front-Cover Texts, and + no Back-Cover Texts. A copy of the license is included in the + section entitled "GNU Free Documentation License". +INFO-DIR-SECTION Basics +START-INFO-DIR-ENTRY +* Bash: (bash). The GNU Bourne-Again SHell. +END-INFO-DIR-ENTRY + + +File: bashref.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) + +Bash Features +************* + +This text is a brief description of the features that are present in the +Bash shell (version 5.1, 29 October 2020). The Bash home page is +. + + This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.1. + + Bash contains features that appear in other popular shells, and some +features that only appear in Bash. Some of the shells that Bash has +borrowed concepts from are the Bourne Shell ('sh'), the Korn Shell +('ksh'), and the C-shell ('csh' and its successor, 'tcsh'). The +following menu breaks the features up into categories, noting which +features were inspired by other shells and which are specific to Bash. + + This manual is meant as a brief introduction to features found in +Bash. The Bash manual page should be used as the definitive reference +on shell behavior. + +* Menu: + +* Introduction:: An introduction to the shell. +* Definitions:: Some definitions used in the rest of this + manual. +* Basic Shell Features:: The shell "building blocks". +* Shell Builtin Commands:: Commands that are a part of the shell. +* Shell Variables:: Variables used or set by Bash. +* Bash Features:: Features found only in Bash. +* Job Control:: What job control is and how Bash allows you + to use it. +* Command Line Editing:: Chapter describing the command line + editing features. +* Using History Interactively:: Command History Expansion +* Installing Bash:: How to build and install Bash on your system. +* Reporting Bugs:: How to report bugs in Bash. +* Major Differences From The Bourne Shell:: A terse list of the differences + between Bash and historical + versions of /bin/sh. +* GNU Free Documentation License:: Copying and sharing this documentation. +* Indexes:: Various indexes for this manual. + + +File: bashref.info, Node: Introduction, Next: Definitions, Up: Top + +1 Introduction +************** + +* Menu: + +* What is Bash?:: A short description of Bash. +* What is a shell?:: A brief introduction to shells. + + +File: bashref.info, Node: What is Bash?, Next: What is a shell?, Up: Introduction + +1.1 What is Bash? +================= + +Bash is the shell, or command language interpreter, for the GNU +operating system. The name is an acronym for the 'Bourne-Again SHell', +a pun on Stephen Bourne, the author of the direct ancestor of the +current Unix shell 'sh', which appeared in the Seventh Edition Bell Labs +Research version of Unix. + + Bash is largely compatible with 'sh' and incorporates useful features +from the Korn shell 'ksh' and the C shell 'csh'. It is intended to be a +conformant implementation of the IEEE POSIX Shell and Tools portion of +the IEEE POSIX specification (IEEE Standard 1003.1). It offers +functional improvements over 'sh' for both interactive and programming +use. + + While the GNU operating system provides other shells, including a +version of 'csh', Bash is the default shell. Like other GNU software, +Bash is quite portable. It currently runs on nearly every version of +Unix and a few other operating systems - independently-supported ports +exist for MS-DOS, OS/2, and Windows platforms. + + +File: bashref.info, Node: What is a shell?, Prev: What is Bash?, Up: Introduction + +1.2 What is a shell? +==================== + +At its base, a shell is simply a macro processor that executes commands. +The term macro processor means functionality where text and symbols are +expanded to create larger expressions. + + A Unix shell is both a command interpreter and a programming +language. As a command interpreter, the shell provides the user +interface to the rich set of GNU utilities. The programming language +features allow these utilities to be combined. Files containing +commands can be created, and become commands themselves. These new +commands have the same status as system commands in directories such as +'/bin', allowing users or groups to establish custom environments to +automate their common tasks. + + Shells may be used interactively or non-interactively. In +interactive mode, they accept input typed from the keyboard. When +executing non-interactively, shells execute commands read from a file. + + A shell allows execution of GNU commands, both synchronously and +asynchronously. The shell waits for synchronous commands to complete +before accepting more input; asynchronous commands continue to execute +in parallel with the shell while it reads and executes additional +commands. The "redirection" constructs permit fine-grained control of +the input and output of those commands. Moreover, the shell allows +control over the contents of commands' environments. + + Shells also provide a small set of built-in commands ("builtins") +implementing functionality impossible or inconvenient to obtain via +separate utilities. For example, 'cd', 'break', 'continue', and 'exec' +cannot be implemented outside of the shell because they directly +manipulate the shell itself. The 'history', 'getopts', 'kill', or 'pwd' +builtins, among others, could be implemented in separate utilities, but +they are more convenient to use as builtin commands. All of the shell +builtins are described in subsequent sections. + + While executing commands is essential, most of the power (and +complexity) of shells is due to their embedded programming languages. +Like any high-level language, the shell provides variables, flow control +constructs, quoting, and functions. + + Shells offer features geared specifically for interactive use rather +than to augment the programming language. These interactive features +include job control, command line editing, command history and aliases. +Each of these features is described in this manual. + + +File: bashref.info, Node: Definitions, Next: Basic Shell Features, Prev: Introduction, Up: Top + +2 Definitions +************* + +These definitions are used throughout the remainder of this manual. + +'POSIX' + A family of open system standards based on Unix. Bash is primarily + concerned with the Shell and Utilities portion of the POSIX 1003.1 + standard. + +'blank' + A space or tab character. + +'builtin' + A command that is implemented internally by the shell itself, + rather than by an executable program somewhere in the file system. + +'control operator' + A 'token' that performs a control function. It is a 'newline' or + one of the following: '||', '&&', '&', ';', ';;', ';&', ';;&', '|', + '|&', '(', or ')'. + +'exit status' + The value returned by a command to its caller. The value is + restricted to eight bits, so the maximum value is 255. + +'field' + A unit of text that is the result of one of the shell expansions. + After expansion, when executing a command, the resulting fields are + used as the command name and arguments. + +'filename' + A string of characters used to identify a file. + +'job' + A set of processes comprising a pipeline, and any processes + descended from it, that are all in the same process group. + +'job control' + A mechanism by which users can selectively stop (suspend) and + restart (resume) execution of processes. + +'metacharacter' + A character that, when unquoted, separates words. A metacharacter + is a 'space', 'tab', 'newline', or one of the following characters: + '|', '&', ';', '(', ')', '<', or '>'. + +'name' + A 'word' consisting solely of letters, numbers, and underscores, + and beginning with a letter or underscore. 'Name's are used as + shell variable and function names. Also referred to as an + 'identifier'. + +'operator' + A 'control operator' or a 'redirection operator'. *Note + Redirections::, for a list of redirection operators. Operators + contain at least one unquoted 'metacharacter'. + +'process group' + A collection of related processes each having the same process + group ID. + +'process group ID' + A unique identifier that represents a 'process group' during its + lifetime. + +'reserved word' + A 'word' that has a special meaning to the shell. Most reserved + words introduce shell flow control constructs, such as 'for' and + 'while'. + +'return status' + A synonym for 'exit status'. + +'signal' + A mechanism by which a process may be notified by the kernel of an + event occurring in the system. + +'special builtin' + A shell builtin command that has been classified as special by the + POSIX standard. + +'token' + A sequence of characters considered a single unit by the shell. It + is either a 'word' or an 'operator'. + +'word' + A sequence of characters treated as a unit by the shell. Words may + not include unquoted 'metacharacters'. + + +File: bashref.info, Node: Basic Shell Features, Next: Shell Builtin Commands, Prev: Definitions, Up: Top + +3 Basic Shell Features +********************** + +Bash is an acronym for 'Bourne-Again SHell'. The Bourne shell is the +traditional Unix shell originally written by Stephen Bourne. All of the +Bourne shell builtin commands are available in Bash, The rules for +evaluation and quoting are taken from the POSIX specification for the +'standard' Unix shell. + + This chapter briefly summarizes the shell's 'building blocks': +commands, control structures, shell functions, shell parameters, shell +expansions, redirections, which are a way to direct input and output +from and to named files, and how the shell executes commands. + +* Menu: + +* Shell Syntax:: What your input means to the shell. +* Shell Commands:: The types of commands you can use. +* Shell Functions:: Grouping commands by name. +* Shell Parameters:: How the shell stores values. +* Shell Expansions:: How Bash expands parameters and the various + expansions available. +* Redirections:: A way to control where input and output go. +* Executing Commands:: What happens when you run a command. +* Shell Scripts:: Executing files of shell commands. + + +File: bashref.info, Node: Shell Syntax, Next: Shell Commands, Up: Basic Shell Features + +3.1 Shell Syntax +================ + +* Menu: + +* Shell Operation:: The basic operation of the shell. +* Quoting:: How to remove the special meaning from characters. +* Comments:: How to specify comments. + +When the shell reads input, it proceeds through a sequence of +operations. If the input indicates the beginning of a comment, the +shell ignores the comment symbol ('#'), and the rest of that line. + + Otherwise, roughly speaking, the shell reads its input and divides +the input into words and operators, employing the quoting rules to +select which meanings to assign various words and characters. + + The shell then parses these tokens into commands and other +constructs, removes the special meaning of certain words or characters, +expands others, redirects input and output as needed, executes the +specified command, waits for the command's exit status, and makes that +exit status available for further inspection or processing. + + +File: bashref.info, Node: Shell Operation, Next: Quoting, Up: Shell Syntax + +3.1.1 Shell Operation +--------------------- + +The following is a brief description of the shell's operation when it +reads and executes a command. Basically, the shell does the following: + + 1. Reads its input from a file (*note Shell Scripts::), from a string + supplied as an argument to the '-c' invocation option (*note + Invoking Bash::), or from the user's terminal. + + 2. Breaks the input into words and operators, obeying the quoting + rules described in *note Quoting::. These tokens are separated by + 'metacharacters'. Alias expansion is performed by this step (*note + Aliases::). + + 3. Parses the tokens into simple and compound commands (*note Shell + Commands::). + + 4. Performs the various shell expansions (*note Shell Expansions::), + breaking the expanded tokens into lists of filenames (*note + Filename Expansion::) and commands and arguments. + + 5. Performs any necessary redirections (*note Redirections::) and + removes the redirection operators and their operands from the + argument list. + + 6. Executes the command (*note Executing Commands::). + + 7. Optionally waits for the command to complete and collects its exit + status (*note Exit Status::). + + +File: bashref.info, Node: Quoting, Next: Comments, Prev: Shell Operation, Up: Shell Syntax + +3.1.2 Quoting +------------- + +* Menu: + +* Escape Character:: How to remove the special meaning from a single + character. +* Single Quotes:: How to inhibit all interpretation of a sequence + of characters. +* Double Quotes:: How to suppress most of the interpretation of a + sequence of characters. +* ANSI-C Quoting:: How to expand ANSI-C sequences in quoted strings. +* Locale Translation:: How to translate strings into different languages. + +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 shell metacharacters (*note 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 (*note +History Interaction::), the HISTORY EXPANSION character, usually '!', +must be quoted to prevent history expansion. *Note Bash History +Facilities::, for more details concerning history expansion. + + There are three quoting mechanisms: the ESCAPE CHARACTER, single +quotes, and double quotes. + + +File: bashref.info, Node: Escape Character, Next: Single Quotes, Up: Quoting + +3.1.2.1 Escape Character +........................ + +A non-quoted backslash '\' is the Bash 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 itself is +not quoted, the '\newline' is treated as a line continuation (that is, +it is removed from the input stream and effectively ignored). + + +File: bashref.info, Node: Single Quotes, Next: Double Quotes, Prev: Escape Character, Up: Quoting + +3.1.2.2 Single Quotes +..................... + +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. + + +File: bashref.info, Node: Double Quotes, Next: ANSI-C Quoting, Prev: Single Quotes, Up: Quoting + +3.1.2.3 Double Quotes +..................... + +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, '!'. When the shell is in +POSIX mode (*note Bash POSIX Mode::), the '!' has no special meaning +within double quotes, even when history expansion is enabled. The +characters '$' and '`' retain their special meaning within double quotes +(*note Shell Expansions::). The backslash retains its special meaning +only when followed by one of the following characters: '$', '`', '"', +'\', or 'newline'. Within double quotes, backslashes that are followed +by one of these characters are removed. Backslashes preceding +characters without a special meaning are left unmodified. 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 (*note Shell Parameter Expansion::). + + +File: bashref.info, Node: ANSI-C Quoting, Next: Locale Translation, Prev: Double Quotes, Up: Quoting + +3.1.2.4 ANSI-C Quoting +...................... + +Words of the form '$'STRING'' 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' +'\E' + an escape character (not ANSI C) +'\f' + form feed +'\n' + newline +'\r' + carriage return +'\t' + horizontal tab +'\v' + vertical tab +'\\' + backslash +'\'' + single quote +'\"' + double quote +'\?' + question mark +'\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) +'\uHHHH' + the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value HHHH (one to four hex digits) +'\UHHHHHHHH' + the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value HHHHHHHH (one to eight hex digits) +'\cX' + a control-X character + +The expanded result is single-quoted, as if the dollar sign had not been +present. + + +File: bashref.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoting + +3.1.2.5 Locale-Specific Translation +................................... + +A double-quoted string preceded by a dollar sign ('$') will cause the +string to be translated according to the current locale. The GETTEXT +infrastructure performs the message catalog lookup and translation, +using the 'LC_MESSAGES' and 'TEXTDOMAIN' shell variables, as explained +below. See the gettext documentation for additional details. If the +current locale is 'C' or 'POSIX', or if there are no translations +available, the dollar sign is ignored. If the string is translated and +replaced, the replacement is double-quoted. + + Some systems use the message catalog selected by the 'LC_MESSAGES' +shell variable. Others create the name of the message catalog from the +value of the 'TEXTDOMAIN' shell variable, possibly adding a suffix of +'.mo'. If you use the 'TEXTDOMAIN' variable, you may need to set the +'TEXTDOMAINDIR' variable to the location of the message catalog files. +Still others use both variables in this fashion: +'TEXTDOMAINDIR'/'LC_MESSAGES'/LC_MESSAGES/'TEXTDOMAIN'.mo. + + +File: bashref.info, Node: Comments, Prev: Quoting, Up: Shell Syntax + +3.1.3 Comments +-------------- + +In a non-interactive shell, or an interactive shell in which the +'interactive_comments' option to the 'shopt' builtin is enabled (*note +The Shopt Builtin::), a word beginning with '#' causes that word and all +remaining characters on that line to be ignored. An interactive shell +without the 'interactive_comments' option enabled does not allow +comments. The 'interactive_comments' option is on by default in +interactive shells. *Note Interactive Shells::, for a description of +what makes a shell interactive. + + +File: bashref.info, Node: Shell Commands, Next: Shell Functions, Prev: Shell Syntax, Up: Basic Shell Features + +3.2 Shell Commands +================== + +A simple shell command such as 'echo a b c' consists of the command +itself followed by arguments, separated by spaces. + + More complex shell commands are composed of simple commands arranged +together in a variety of ways: in a pipeline in which the output of one +command becomes the input of a second, in a loop or conditional +construct, or in some other grouping. + +* Menu: + +* Reserved Words:: Words that have special meaning to the shell. +* Simple Commands:: The most common type of command. +* Pipelines:: Connecting the input and output of several + commands. +* Lists:: How to execute commands sequentially. +* Compound Commands:: Shell commands for control flow. +* Coprocesses:: Two-way communication between commands. +* GNU Parallel:: Running commands in parallel. + + +File: bashref.info, Node: Reserved Words, Next: Simple Commands, Up: Shell Commands + +3.2.1 Reserved Words +-------------------- + +Reserved words are words that have special meaning to the shell. They +are used to begin and end the shell's compound commands. + + The following words are recognized as reserved when unquoted and the +first word of a command (see below for exceptions): + +'if' 'then' 'elif' 'else' 'fi' 'time' +'for' 'in' 'until' 'while' 'do' 'done' +'case' 'esac' 'coproc''select''function' +'{' '}' '[[' ']]' '!' + +'in' is recognized as a reserved word if it is the third word of a +'case' or 'select' command. 'in' and 'do' are recognized as reserved +words if they are the third word in a 'for' command. + + +File: bashref.info, Node: Simple Commands, Next: Pipelines, Prev: Reserved Words, Up: Shell Commands + +3.2.2 Simple Commands +--------------------- + +A simple command is the kind of command encountered most often. It's +just a sequence of words separated by 'blank's, terminated by one of the +shell's control operators (*note Definitions::). The first word +generally specifies a command to be executed, with the rest of the words +being that command's arguments. + + The return status (*note Exit Status::) of a simple command is its +exit status as provided by the POSIX 1003.1 'waitpid' function, or 128+N +if the command was terminated by signal N. + + +File: bashref.info, Node: Pipelines, Next: Lists, Prev: Simple Commands, Up: Shell Commands + +3.2.3 Pipelines +--------------- + +A 'pipeline' is a sequence of one or more commands separated by one of +the control operators '|' or '|&'. + + The format for a pipeline is + [time [-p]] [!] COMMAND1 [ | or |& COMMAND2 ] ... + +The output of each command in the pipeline is connected via a pipe to +the input of the next command. That is, each command reads the previous +command's output. This connection is performed before any redirections +specified by the command. + + If '|&' is used, COMMAND1's standard error, in addition to its +standard output, is connected to COMMAND2's standard input through the +pipe; it is shorthand for '2>&1 |'. This implicit redirection of the +standard error to the standard output is performed after any +redirections specified by the command. + + The reserved word 'time' causes timing statistics to be printed for +the pipeline once it finishes. The statistics currently consist of +elapsed (wall-clock) time and user and system time consumed by the +command's execution. The '-p' option changes the output format to that +specified by POSIX. When the shell is in POSIX mode (*note Bash POSIX +Mode::), it does not recognize 'time' as a reserved word if the next +token begins with a '-'. The 'TIMEFORMAT' variable may be set to a +format string that specifies how the timing information should be +displayed. *Note Bash Variables::, for a description of the available +formats. The use of 'time' as a reserved word permits the timing of +shell builtins, shell functions, and pipelines. An external 'time' +command cannot time these easily. + + When the shell is in POSIX mode (*note Bash POSIX Mode::), 'time' may +be followed by a newline. In this case, the shell displays the total +user and system time consumed by the shell and its children. The +'TIMEFORMAT' variable may be used to specify the format of the time +information. + + If the pipeline is not executed asynchronously (*note Lists::), the +shell waits for all commands in the pipeline to complete. + + Each command in a pipeline is executed in its own subshell, which is +a separate process (*note Command Execution Environment::). If the +'lastpipe' option is enabled using the 'shopt' builtin (*note The Shopt +Builtin::), the last element of a pipeline may be run by the shell +process. + + The exit status of a pipeline is the exit status of the last command +in the pipeline, unless the 'pipefail' option is enabled (*note The Set +Builtin::). 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 the pipeline, the exit status 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. + + +File: bashref.info, Node: Lists, Next: Compound Commands, Prev: Pipelines, Up: Shell Commands + +3.2.4 Lists of Commands +----------------------- + +A 'list' is a sequence of one or more pipelines separated by one of the +operators ';', '&', '&&', or '||', and optionally terminated by one of +';', '&', or a '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' to delimit +commands, equivalent to a semicolon. + + If a command is terminated by the control operator '&', the shell +executes the command asynchronously in a subshell. This is known as +executing the command in the BACKGROUND, and these are referred to as +ASYNCHRONOUS commands. The shell does not wait for the command to +finish, and the return status is 0 (true). When job control is not +active (*note Job Control::), the standard input for asynchronous +commands, in the absence of any explicit redirections, is redirected +from '/dev/null'. + + 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. + + AND and OR lists are sequences of one or more pipelines separated by +the control operators '&&' and '||', respectively. AND and OR lists are +executed with left associativity. + + An AND list has the form + COMMAND1 && COMMAND2 + +COMMAND2 is executed if, and only if, COMMAND1 returns an exit status of +zero (success). + + 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. + + +File: bashref.info, Node: Compound Commands, Next: Coprocesses, Prev: Lists, Up: Shell Commands + +3.2.5 Compound Commands +----------------------- + +* Menu: + +* Looping Constructs:: Shell commands for iterative action. +* Conditional Constructs:: Shell commands for conditional execution. +* Command Grouping:: Ways to group commands. + +Compound commands are the shell programming language constructs. Each +construct begins with a reserved word or control operator and is +terminated by a corresponding reserved word or operator. Any +redirections (*note Redirections::) associated with a compound command +apply to all commands within that compound command unless explicitly +overridden. + + In most cases a list of commands in a compound command's description +may be separated from the rest of the command by one or more newlines, +and may be followed by a newline in place of a semicolon. + + Bash provides looping constructs, conditional commands, and +mechanisms to group commands and execute them as a unit. + + +File: bashref.info, Node: Looping Constructs, Next: Conditional Constructs, Up: Compound Commands + +3.2.5.1 Looping Constructs +.......................... + +Bash supports the following looping constructs. + + Note that wherever a ';' appears in the description of a command's +syntax, it may be replaced with one or more newlines. + +'until' + The syntax of the 'until' command is: + + until TEST-COMMANDS; do CONSEQUENT-COMMANDS; done + + Execute CONSEQUENT-COMMANDS as long as TEST-COMMANDS has an exit + status which is not zero. The return status is the exit status of + the last command executed in CONSEQUENT-COMMANDS, or zero if none + was executed. + +'while' + The syntax of the 'while' command is: + + while TEST-COMMANDS; do CONSEQUENT-COMMANDS; done + + Execute CONSEQUENT-COMMANDS as long as TEST-COMMANDS has an exit + status of zero. The return status is the exit status of the last + command executed in CONSEQUENT-COMMANDS, or zero if none was + executed. + +'for' + The syntax of the 'for' command is: + + for NAME [ [in [WORDS ...] ] ; ] do COMMANDS; done + + Expand WORDS (*note Shell Expansions::), and execute COMMANDS once + for each member in the resultant list, with NAME bound to the + current member. If 'in WORDS' is not present, the 'for' command + executes the COMMANDS once for each positional parameter that is + set, as if 'in "$@"' had been specified (*note Special + Parameters::). + + The return status is the exit status of the last command that + executes. If there are no items in the expansion of WORDS, no + commands are executed, and the return status is zero. + + An alternate form of the 'for' command is also supported: + + for (( EXPR1 ; EXPR2 ; EXPR3 )) ; do COMMANDS ; done + + First, the arithmetic expression EXPR1 is evaluated according to + the rules described below (*note Shell Arithmetic::). The + arithmetic expression EXPR2 is then evaluated repeatedly until it + evaluates to zero. Each time EXPR2 evaluates to a non-zero value, + COMMANDS are 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 COMMANDS that is executed, or false if any of the + expressions is invalid. + + The 'break' and 'continue' builtins (*note Bourne Shell Builtins::) +may be used to control loop execution. + + +File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Prev: Looping Constructs, Up: Compound Commands + +3.2.5.2 Conditional Constructs +.............................. + +'if' + The syntax of the 'if' command is: + + if TEST-COMMANDS; then + CONSEQUENT-COMMANDS; + [elif MORE-TEST-COMMANDS; then + MORE-CONSEQUENTS;] + [else ALTERNATE-CONSEQUENTS;] + fi + + The TEST-COMMANDS list is executed, and if its return status is + zero, the CONSEQUENT-COMMANDS list is executed. If TEST-COMMANDS + returns a non-zero status, each 'elif' list is executed in turn, + and if its exit status is zero, the corresponding MORE-CONSEQUENTS + is executed and the command completes. If 'else + ALTERNATE-CONSEQUENTS' is present, and the final command in the + final 'if' or 'elif' clause has a non-zero exit status, then + ALTERNATE-CONSEQUENTS is executed. The return status is the exit + status of the last command executed, or zero if no condition tested + true. + +'case' + The syntax of the 'case' command is: + + case WORD in + [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... + esac + + 'case' will selectively execute the COMMAND-LIST corresponding to + the first PATTERN that matches WORD. The match is performed + according to the rules described below in *note Pattern Matching::. + If the 'nocasematch' shell option (see the description of 'shopt' + in *note The Shopt Builtin::) is enabled, the match is performed + without regard to the case of alphabetic characters. The '|' is + used to separate multiple patterns, and the ')' operator terminates + a pattern list. A list of patterns and an associated command-list + is known as a CLAUSE. + + Each clause must be terminated with ';;', ';&', or ';;&'. The WORD + undergoes tilde expansion, parameter expansion, command + substitution, arithmetic expansion, and quote removal (*note Shell + Parameter Expansion::) before matching is attempted. Each PATTERN + undergoes tilde expansion, parameter expansion, command + substitution, and arithmetic expansion. + + There may be an arbitrary number of 'case' clauses, each terminated + by a ';;', ';&', or ';;&'. The first pattern that matches + determines the command-list that is executed. It's a common idiom + to use '*' as the final pattern to define the default case, since + that pattern will always match. + + Here is an example using 'case' in a script that could be used to + describe one interesting feature of an animal: + + echo -n "Enter the name of an animal: " + read ANIMAL + echo -n "The $ANIMAL has " + case $ANIMAL in + horse | dog | cat) echo -n "four";; + man | kangaroo ) echo -n "two";; + *) echo -n "an unknown number of";; + esac + echo " legs." + + + If the ';;' operator is used, no subsequent matches are attempted + after the first pattern match. Using ';&' in place of ';;' causes + execution to continue with the COMMAND-LIST associated with the + next clause, if any. Using ';;&' in place of ';;' causes the shell + to test the patterns in the next clause, if any, and execute any + associated COMMAND-LIST on a successful match, continuing the case + statement execution as if the pattern list had not matched. + + The return status is zero if no PATTERN is matched. Otherwise, the + return status is the exit status of the COMMAND-LIST executed. + +'select' + + The 'select' construct allows the easy generation of menus. It has + almost the same syntax as the 'for' command: + + select NAME [in WORDS ...]; do COMMANDS; 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 + output stream, each preceded by a number. If the 'in WORDS' is + omitted, the positional parameters are printed, as if 'in "$@"' had + been specified. The 'PS3' prompt is then displayed and a line is + read from the standard input. If the line consists of a number + corresponding to one of the displayed words, then the value of NAME + is set to that word. If the line is empty, the words and prompt + are displayed again. If 'EOF' is read, the 'select' command + completes. Any other value read causes NAME to be set to null. + The line read is saved in the variable 'REPLY'. + + The COMMANDS are executed after each selection until a 'break' + command is executed, at which point the 'select' command completes. + + Here is an example that allows the user to pick a filename from the + current directory, and displays the name and index of the file + selected. + + select fname in *; + do + echo you picked $fname \($REPLY\) + break; + done + +'((...))' + (( EXPRESSION )) + + The arithmetic EXPRESSION is evaluated according to the rules + described below (*note Shell Arithmetic::). 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" + *Note Bash Builtins::, for a full description of the 'let' builtin. + +'[[...]]' + [[ 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 in *note Bash Conditional Expressions::. + Word splitting and filename 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 used with '[[', the '<' and '>' operators sort + lexicographically using the current locale. + + When the '==' and '!=' operators are used, the string to the right + of the operator is considered a pattern and matched according to + the rules described below in *note Pattern Matching::, as if the + 'extglob' shell option were enabled. The '=' operator is identical + to '=='. If the 'nocasematch' shell option (see the description of + 'shopt' in *note The Shopt Builtin::) is enabled, the match is + performed without regard to the case of alphabetic characters. The + return value is 0 if the string matches ('==') or does not match + ('!=') the pattern, and 1 otherwise. Any part of the pattern may + be quoted to force the quoted portion to be matched as a string. + + An additional binary operator, '=~', is available, with the same + precedence as '==' and '!='. When it is used, the string to the + right of the operator is considered a POSIX extended regular + expression and matched accordingly (using the POSIX 'regcomp' and + 'regexec' interfaces usually described 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 'nocasematch' shell option + (see the description of 'shopt' in *note The Shopt Builtin::) is + enabled, the match is performed without regard to the case of + alphabetic characters. Any part of the pattern may be quoted to + force the quoted portion to be matched as a string. Bracket + expressions in regular expressions must be treated carefully, since + normal quoting characters lose their meanings between brackets. If + the pattern is stored in a shell variable, quoting the variable + expansion forces the entire pattern to be matched as a string. + + The pattern will match if it matches any part of the string. + Anchor the pattern using the '^' and '$' regular expression + operators to force it to match the entire string. The array + variable 'BASH_REMATCH' records which parts of the string matched + the pattern. The element of 'BASH_REMATCH' with index 0 contains + the portion of the string matching the entire regular expression. + Substrings matched by parenthesized subexpressions within the + regular expression are saved in the remaining 'BASH_REMATCH' + indices. The element of 'BASH_REMATCH' with index N is the portion + of the string matching the Nth parenthesized subexpression. + + For example, the following will match a line (stored in the shell + variable LINE) if there is a sequence of characters anywhere in the + value consisting of any number, including zero, of characters in + the 'space' character class, zero or one instances of 'a', then a + 'b': + [[ $line =~ [[:space:]]*(a)?b ]] + + That means values like 'aab' and ' aaaaaab' will match, as will a + line containing a 'b' anywhere in its value. + + Storing the regular expression in a shell variable is often a + useful way to avoid problems with quoting characters that are + special to the shell. It is sometimes difficult to specify a + regular expression literally without using quotes, or to keep track + of the quoting used by regular expressions while paying attention + to the shell's quote removal. Using a shell variable to store the + pattern decreases these problems. For example, the following is + equivalent to the above: + pattern='[[:space:]]*(a)?b' + [[ $line =~ $pattern ]] + + If you want to match a character that's special to the regular + expression grammar, it has to be quoted to remove its special + meaning. This means that in the pattern 'xxx.txt', the '.' matches + any character in the string (its usual regular expression meaning), + but in the pattern '"xxx.txt"' it can only match a literal '.'. + Shell programmers should take special care with backslashes, since + backslashes are used both by the shell and regular expressions to + remove the special meaning from the following character. The + following two sets of commands are _not_ equivalent: + pattern='\.' + + [[ . =~ $pattern ]] + [[ . =~ \. ]] + + [[ . =~ "$pattern" ]] + [[ . =~ '\.' ]] + + The first two matches will succeed, but the second two will not, + because in the second two the backslash will be part of the pattern + to be matched. In the first two examples, the backslash removes + the special meaning from '.', so the literal '.' matches. If the + string in the first examples were anything other than '.', say 'a', + the pattern would not match, because the quoted '.' in the pattern + loses its special meaning of matching any single character. + + 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. + + +File: bashref.info, Node: Command Grouping, Prev: Conditional Constructs, Up: Compound Commands + +3.2.5.3 Grouping Commands +......................... + +Bash provides two ways to group a list of commands to be executed as a +unit. When commands are grouped, redirections may be applied to the +entire command list. For example, the output of all the commands in the +list may be redirected to a single stream. + +'()' + ( LIST ) + + Placing a list of commands between parentheses causes a subshell + environment to be created (*note Command Execution Environment::), + and each of the commands in LIST to be executed in that subshell. + Since the LIST is executed in a subshell, variable assignments do + not remain in effect after the subshell completes. + +'{}' + { LIST; } + + Placing a list of commands between curly braces causes the list to + be executed in the current shell context. No subshell is created. + The semicolon (or newline) following LIST is required. + + In addition to the creation of a subshell, there is a subtle +difference between these two constructs due to historical reasons. The +braces are 'reserved words', so they must be separated from the LIST by +'blank's or other shell metacharacters. The parentheses are +'operators', and are recognized as separate tokens by the shell even if +they are not separated from the LIST by whitespace. + + The exit status of both of these constructs is the exit status of +LIST. + + +File: bashref.info, Node: Coprocesses, Next: GNU Parallel, Prev: Compound Commands, Up: Shell Commands + +3.2.6 Coprocesses +----------------- + +A 'coprocess' is a shell command preceded by the 'coproc' reserved word. +A coprocess is executed asynchronously in a subshell, as if the command +had been terminated with the '&' control operator, with a two-way pipe +established between the executing shell and the coprocess. + + The format for a coprocess is: + coproc [NAME] COMMAND [REDIRECTIONS] + +This creates a coprocess named NAME. If NAME is not supplied, the +default name is COPROC. NAME must not be supplied if COMMAND is a +simple command (*note Simple Commands::); otherwise, it is interpreted +as the first word of the simple command. + + When the coprocess is executed, the shell creates an array variable +(*note Arrays::) named 'NAME' in the context of the executing shell. +The standard output of COMMAND is connected via a pipe to a file +descriptor in the executing shell, and that file descriptor is assigned +to 'NAME'[0]. The standard input of COMMAND is connected via a pipe to +a file descriptor in the executing shell, and that file descriptor is +assigned to 'NAME'[1]. This pipe is established before any redirections +specified by the command (*note Redirections::). The file descriptors +can be utilized as arguments to shell commands and redirections using +standard word expansions. Other than those created to execute command +and process substitutions, the file descriptors are not available in +subshells. + + The process ID of the shell spawned to execute the coprocess is +available as the value of the variable 'NAME'_PID. The 'wait' builtin +command may be used to wait for the coprocess to terminate. + + Since the coprocess is created as an asynchronous command, the +'coproc' command always returns success. The return status of a +coprocess is the exit status of COMMAND. + + +File: bashref.info, Node: GNU Parallel, Prev: Coprocesses, Up: Shell Commands + +3.2.7 GNU Parallel +------------------ + +There are ways to run commands in parallel that are not built into Bash. +GNU Parallel is a tool to do just that. + + GNU Parallel, as its name suggests, can be used to build and run +commands in parallel. You may run the same command with different +arguments, whether they are filenames, usernames, hostnames, or lines +read from files. GNU Parallel provides shorthand references to many of +the most common operations (input lines, various portions of the input +line, different ways to specify the input source, and so on). Parallel +can replace 'xargs' or feed commands from its input sources to several +different instances of Bash. + + For a complete description, refer to the GNU Parallel documentation. +A few examples should provide a brief introduction to its use. + + For example, it is easy to replace 'xargs' to gzip all html files in +the current directory and its subdirectories: + find . -type f -name '*.html' -print | parallel gzip +If you need to protect special characters such as newlines in file +names, use find's '-print0' option and parallel's '-0' option. + + You can use Parallel to move files from the current directory when +the number of files is too large to process with one 'mv' invocation: + printf '%s\n' * | parallel mv {} destdir + + As you can see, the {} is replaced with each line read from standard +input. While using 'ls' will work in most instances, it is not +sufficient to deal with all filenames. 'printf' is a shell builtin, and +therefore is not subject to the kernel's limit on the number of +arguments to a program, so you can use '*' (but see below about the +'dotglob' shell option). If you need to accommodate special characters +in filenames, you can use + + printf '%s\0' * | parallel -0 mv {} destdir + +as alluded to above. + + This will run as many 'mv' commands as there are files in the current +directory. You can emulate a parallel 'xargs' by adding the '-X' +option: + printf '%s\0' * | parallel -0 -X mv {} destdir + + (You may have to modify the pattern if you have the 'dotglob' option +enabled.) + + GNU Parallel can replace certain common idioms that operate on lines +read from a file (in this case, filenames listed one per line): + while IFS= read -r x; do + do-something1 "$x" "config-$x" + do-something2 < "$x" + done < file | process-output + +with a more compact syntax reminiscent of lambdas: + cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | + process-output + + Parallel provides a built-in mechanism to remove filename extensions, +which lends itself to batch file transformations or renaming: + ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}" +This will recompress all files in the current directory with names +ending in .gz using bzip2, running one job per CPU (-j+0) in parallel. +(We use 'ls' for brevity here; using 'find' as above is more robust in +the face of filenames containing unexpected characters.) Parallel can +take arguments from the command line; the above can also be written as + + parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz + + If a command generates output, you may want to preserve the input +order in the output. For instance, the following command + { + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; + } | parallel traceroute +will display as output the traceroute invocation that finishes first. +Adding the '-k' option + { + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; + } | parallel -k traceroute +will ensure that the output of 'traceroute foss.org.my' is displayed +first. + + Finally, Parallel can be used to run a sequence of shell commands in +parallel, similar to 'cat file | bash'. It is not uncommon to take a +list of filenames, create a series of shell commands to operate on them, +and feed that list of commands to a shell. Parallel can speed this up. +Assuming that 'file' contains a list of shell commands, one per line, + + parallel -j 10 < file + +will evaluate the commands using the shell (since no explicit command is +supplied as an argument), in blocks of ten shell jobs at a time. + + +File: bashref.info, Node: Shell Functions, Next: Shell Parameters, Prev: Shell Commands, Up: Basic Shell Features + +3.3 Shell Functions +=================== + +Shell functions are a way to group commands for later execution using a +single name for the group. They are executed just like a "regular" +command. 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. Shell functions are executed in the current shell context; no +new process is created to interpret them. + + Functions are declared using this syntax: + FNAME () COMPOUND-COMMAND [ REDIRECTIONS ] + + or + + function FNAME [()] COMPOUND-COMMAND [ REDIRECTIONS ] + + This defines a shell function named FNAME. 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 (*note Compound Commands::). That command is +usually a LIST enclosed between { and }, but may be any compound command +listed above, with one exception: If the 'function' reserved word is +used, but the parentheses are not supplied, the braces are required. +COMPOUND-COMMAND is executed whenever FNAME is specified as the name of +a command. When the shell is in POSIX mode (*note Bash POSIX Mode::), +FNAME must be a valid shell NAME and may not be the same as one of the +special builtins (*note Special Builtins::). In default mode, a +function name can be any unquoted shell word that does not contain '$'. +Any redirections (*note Redirections::) associated with the shell +function are performed when the function is executed. A function +definition may be deleted using the '-f' option to the 'unset' builtin +(*note Bourne Shell Builtins::). + + 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. + + Note that for historical reasons, in the most common usage the curly +braces that surround the body of the function must be separated from the +body by 'blank's or newlines. This is because the braces are reserved +words and are only recognized as such when they are separated from the +command list by whitespace or another shell metacharacter. Also, when +using the braces, the LIST must be terminated by a semicolon, a '&', or +a newline. + + When a function is executed, the arguments to the function become the +positional parameters during its execution (*note Positional +Parameters::). The special parameter '#' that expands to the number of +positional parameters 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 these exceptions: the 'DEBUG' and +'RETURN' traps are not inherited unless the function has been given the +'trace' attribute using the 'declare' builtin or the '-o functrace' +option has been enabled with the 'set' builtin, (in which case all +functions inherit the 'DEBUG' and 'RETURN' traps), and the 'ERR' trap is +not inherited unless the '-o errtrace' shell option has been enabled. +*Note Bourne Shell Builtins::, for the description of the 'trap' +builtin. + + The 'FUNCNEST' variable, if set to a numeric value greater than 0, +defines a maximum function nesting level. Function invocations that +exceed the limit cause the entire command to abort. + + If the builtin command '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. If a +numeric argument is given to 'return', that is the function's return +status; otherwise the function's return status is the exit status of the +last command executed before the 'return'. + + Variables local to the function may be declared with the 'local' +builtin. These variables are visible only to the function and the +commands it invokes. This is particularly important when a shell +function calls other functions. + + Local variables "shadow" variables with the same name declared at +previous scopes. For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. + + The shell uses DYNAMIC SCOPING to control a variable's visibility +within functions. With dynamic scoping, visible variables and their +values are a result of the sequence of function calls that caused +execution to reach the current function. The value of a variable that a +function sees depends on its value within its caller, if any, whether +that caller is the "global" scope or another shell function. This is +also the value that a local variable declaration "shadows", and the +value that is restored when the function returns. + + For example, if a variable VAR is declared as local in function +FUNC1, and FUNC1 calls another function FUNC2, references to VAR made +from within FUNC2 will resolve to the local variable VAR from FUNC1, +shadowing any global variable named VAR. + + The following script demonstrates this behavior. When executed, the +script displays + + In func2, var = func1 local + + func1() + { + local var='func1 local' + func2 + } + + func2() + { + echo "In func2, var = $var" + } + + var=global + func1 + + The 'unset' builtin also acts using the same dynamic scope: if a +variable is local to the current scope, 'unset' will unset it; otherwise +the unset will refer to the variable found in any calling scope as +described above. If a variable at the current local scope is unset, it +will remain so until it is reset in that scope or until the function +returns. Once the function returns, any instance of the variable at a +previous scope will become visible. If the unset acts on a variable at +a previous scope, any instance of a variable with that name that had +been shadowed will become visible. + + Function names and definitions may be listed with the '-f' option to +the 'declare' ('typeset') builtin command (*note Bash Builtins::). 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 (*note Bourne Shell Builtins::). + + Functions may be recursive. The 'FUNCNEST' variable may be used to +limit the depth of the function call stack and restrict the number of +function invocations. By default, no limit is placed on the number of +recursive calls. + + +File: bashref.info, Node: Shell Parameters, Next: Shell Expansions, Prev: Shell Functions, Up: Basic Shell Features + +3.4 Shell Parameters +==================== + +* Menu: + +* Positional Parameters:: The shell's command-line arguments. +* Special Parameters:: Parameters denoted by special characters. + +A PARAMETER is an entity that stores values. It can be a 'name', a +number, or one of the special characters listed below. 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 the description of the 'declare' builtin in *note Bash Builtins::). + + 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. + + 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 (detailed +below). If the variable has its 'integer' attribute set, then VALUE is +evaluated as an arithmetic expression even if the '$((...))' expansion +is not used (*note Arithmetic Expansion::). Word splitting is not +performed, with the exception of '"$@"' as explained below. Filename +expansion is not performed. Assignment statements may also appear as +arguments to the 'alias', 'declare', 'typeset', 'export', 'readonly', +and 'local' builtin commands (DECLARATION commands). When in POSIX mode +(*note Bash POSIX Mode::), these builtins may appear in a command after +one or more instances of the 'command' builtin and retain these +assignment statement properties. + + In the context where an assignment statement is assigning a value to +a shell variable or array index (*note Arrays::), the '+=' operator can +be used to append to or add to the variable's previous value. This +includes arguments to builtin commands such as 'declare' that accept +assignment statements (DECLARATION commands). 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 (*note Arrays::), the +variable's value is not unset (as it is when using '='), and new values +are appended to the array beginning at one greater than the array's +maximum index (for indexed arrays), or added as additional key-value +pairs in an associative array. When applied to a string-valued +variable, VALUE is expanded and appended to the variable's value. + + A variable can be assigned the NAMEREF attribute using the '-n' +option to the 'declare' or 'local' builtin commands (*note Bash +Builtins::) to create a NAMEREF, or a reference to another variable. +This allows variables to be manipulated indirectly. Whenever the +nameref variable is referenced, assigned to, unset, or has its +attributes modified (other than using or changing the nameref attribute +itself), the operation is actually performed on the variable specified +by the nameref variable's value. A nameref is commonly used within +shell functions to refer to a variable whose name is passed as an +argument to the function. For instance, if a variable name is passed to +a shell function as its first argument, running + declare -n ref=$1 +inside the function creates a nameref variable REF whose value is the +variable name passed as the first argument. References and assignments +to REF, and changes to its attributes, are treated as references, +assignments, and attribute modifications to the variable whose name was +passed as '$1'. + + If the control variable in a 'for' loop has the nameref attribute, +the list of words can be a list of shell variables, and a name reference +will be established for each word in the list, in turn, when the loop is +executed. Array variables cannot be given the nameref attribute. +However, nameref variables can reference array variables and subscripted +array variables. Namerefs can be unset using the '-n' option to the +'unset' builtin (*note Bourne Shell Builtins::). Otherwise, if 'unset' +is executed with the name of a nameref variable as an argument, the +variable referenced by the nameref variable will be unset. + + +File: bashref.info, Node: Positional Parameters, Next: Special Parameters, Up: Shell Parameters + +3.4.1 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 parameter 'N' may be +referenced as '${N}', or as '$N' when 'N' consists of a single digit. +Positional parameters may not be assigned to with assignment statements. +The 'set' and 'shift' builtins are used to set and unset them (*note +Shell Builtin Commands::). The positional parameters are temporarily +replaced when a shell function is executed (*note Shell Functions::). + + When a positional parameter consisting of more than a single digit is +expanded, it must be enclosed in braces. + + +File: bashref.info, Node: Special Parameters, Prev: Positional Parameters, Up: Shell Parameters + +3.4.2 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 is not within double quotes, each positional + parameter expands to a separate word. In contexts where it is + performed, those words are subject to further word splitting and + filename expansion. When the expansion occurs within double + quotes, it expands to a single word with the value of each + parameter separated by the first character of the 'IFS' special + variable. That is, '"$*"' is equivalent 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. In + contexts where word splitting is performed, this expands each + positional parameter to a separate word; if not within double + quotes, these words are subject to word splitting. In contexts + where word splitting is not performed, this expands to a single + word with each positional parameter separated by a space. When the + expansion occurs within double quotes, and word splitting is + performed, 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 exit status of the most recently executed + foreground pipeline. + +'-' + ($-, a hyphen.) Expands to the current option flags as specified + upon invocation, by the 'set' builtin command, or those set by the + shell itself (such as the '-i' option). + +'$' + ($$) Expands to the process ID of the shell. In a '()' subshell, + it expands to the process ID of the invoking shell, not the + subshell. + +'!' + ($!) Expands to the process ID of the job most recently placed + into the background, whether executed as an asynchronous command or + using the 'bg' builtin (*note Job Control Builtins::). + +'0' + ($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 (*note Shell Scripts::), '$0' is set to the name of that + file. If Bash is started with the '-c' option (*note Invoking + Bash::), then '$0' is set to the first argument after the string to + be executed, if one is present. Otherwise, it is set to the + filename used to invoke Bash, as given by argument zero. + + +File: bashref.info, Node: Shell Expansions, Next: Redirections, Prev: Shell Parameters, Up: Basic Shell Features + +3.5 Shell Expansions +==================== + +Expansion is performed on the command line after it has been split into +'token's. There are seven kinds of expansion performed: + + * brace expansion + * tilde expansion + * parameter and variable expansion + * command substitution + * arithmetic expansion + * word splitting + * filename expansion + +* Menu: + +* Brace Expansion:: Expansion of expressions within braces. +* Tilde Expansion:: Expansion of the ~ character. +* Shell Parameter Expansion:: How Bash expands variables to their values. +* Command Substitution:: Using the output of a command as an argument. +* Arithmetic Expansion:: How to use arithmetic in shell expansions. +* Process Substitution:: A way to write and read to and from a + command. +* Word Splitting:: How the results of expansion are split into separate + arguments. +* Filename Expansion:: A shorthand for specifying filenames matching patterns. +* Quote Removal:: How and when quote characters are removed from + words. + + The order of expansions is: brace expansion; tilde expansion, +parameter and variable expansion, arithmetic expansion, and command +substitution (done in a left-to-right fashion); word splitting; and +filename expansion. + + On systems that can support it, there is an additional expansion +available: PROCESS SUBSTITUTION. This is performed at the same time as +tilde, parameter, variable, and arithmetic expansion and command +substitution. + + After these expansions are performed, quote characters present in the +original word are removed unless they have been quoted themselves (QUOTE +REMOVAL). + + Only brace expansion, word splitting, and filename expansion can +increase 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 '$*' (*note Special Parameters::), and +'"${NAME[@]}"' and '${NAME[*]}' (*note Arrays::). + + After all expansions, 'quote removal' (*note Quote Removal::) is +performed. + + +File: bashref.info, Node: Brace Expansion, Next: Tilde Expansion, Up: Shell Expansions + +3.5.1 Brace Expansion +--------------------- + +Brace expansion is a mechanism by which arbitrary strings may be +generated. This mechanism is similar to FILENAME EXPANSION (*note +Filename 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, + bash$ echo a{d,c,b}e + ade ace abe + + A sequence expression takes the form '{X..Y[..INCR]}', where X and Y +are either integers or single characters, and INCR, an optional +increment, is an integer. When integers are supplied, the expression +expands to each number between X and Y, inclusive. Supplied integers +may be prefixed with '0' to force each term to have the same width. +When either X or Y begins with a zero, the shell attempts to force all +generated terms to contain the same number of digits, zero-padding where +necessary. When characters are supplied, the expression expands to each +character lexicographically between X and Y, inclusive, using the +default C locale. Note that both X and Y must be of the same type. +When the increment is supplied, it is used as the difference between +each term. The default increment is 1 or -1 as appropriate. + + Brace expansion is performed before any other expansions, and any +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, and inhibits brace expansion until the closing '}'. + + 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}} + + +File: bashref.info, Node: Tilde Expansion, Next: Shell Parameter Expansion, Prev: Brace Expansion, Up: Shell Expansions + +3.5.2 Tilde Expansion +--------------------- + +If a word begins with an unquoted tilde character ('~'), all of the +characters up to 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 'HOME' shell variable. 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 '~+', the value of the shell variable 'PWD' +replaces the tilde-prefix. If the tilde-prefix is '~-', 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 characters +following tilde in the tilde-prefix as an argument (*note The Directory +Stack::). If the tilde-prefix, sans the tilde, consists of a number +without a leading '+' or '-', '+' is assumed. + + If the login name is invalid, or the tilde expansion fails, the word +is left 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 filenames with +tildes in assignments to 'PATH', 'MAILPATH', and 'CDPATH', and the shell +assigns the expanded value. + + The following table shows how Bash treats unquoted tilde-prefixes: + +'~' + The value of '$HOME' +'~/foo' + '$HOME/foo' + +'~fred/foo' + The subdirectory 'foo' of the home directory of the user 'fred' + +'~+/foo' + '$PWD/foo' + +'~-/foo' + '${OLDPWD-'~-'}/foo' + +'~N' + The string that would be displayed by 'dirs +N' + +'~+N' + The string that would be displayed by 'dirs +N' + +'~-N' + The string that would be displayed by 'dirs -N' + + Bash also performs tilde expansion on words satisfying the conditions +of variable assignments (*note Shell Parameters::) when they appear as +arguments to simple commands. Bash does not do this, except for the +DECLARATION commands listed above, when in POSIX mode. + + +File: bashref.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions + +3.5.3 Shell 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. + + The basic form of parameter expansion is ${PARAMETER}. The value of +PARAMETER is substituted. The PARAMETER is a shell parameter as +described above (*note Shell Parameters::) or an array reference (*note +Arrays::). The braces are required when PARAMETER is a positional +parameter with more than one digit, or when PARAMETER is followed by a +character that is not to be interpreted as part of its name. + + If the first character of PARAMETER is an exclamation point (!), and +PARAMETER is not a NAMEREF, it introduces a level of indirection. Bash +uses the value formed by expanding the rest of PARAMETER as the new +PARAMETER; this is then expanded and that value is used in the rest of +the expansion, rather than the expansion of the original PARAMETER. +This is known as 'indirect expansion'. The value is subject to tilde +expansion, parameter expansion, command substitution, and arithmetic +expansion. If PARAMETER is a nameref, this expands to the name of the +variable referenced by PARAMETER instead of performing the complete +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, using the form described +below (e.g., ':-'), Bash tests for a parameter that is unset or null. +Omitting the colon results in a test only for a parameter that is unset. +Put another way, if the colon is included, the operator tests for both +PARAMETER's existence and that its value is not null; if the colon is +omitted, the operator tests only for existence. + +'${PARAMETER:-WORD}' + If PARAMETER is unset or null, the expansion of WORD is + substituted. Otherwise, the value of PARAMETER is substituted. + +'${PARAMETER:=WORD}' + 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}' + 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}' + If PARAMETER is null or unset, nothing is substituted, otherwise + the expansion of WORD is substituted. + +'${PARAMETER:OFFSET}' +'${PARAMETER:OFFSET:LENGTH}' + This is referred to as Substring Expansion. It expands to up to + LENGTH characters of the value of PARAMETER starting at the + character specified by OFFSET. If PARAMETER is '@', an indexed + array subscripted by '@' or '*', or an associative array name, the + results differ as described below. If LENGTH is omitted, it + expands to the substring of the value of PARAMETER starting at the + character specified by OFFSET and extending to the end of the + value. LENGTH and OFFSET are arithmetic expressions (*note Shell + Arithmetic::). + + If OFFSET evaluates to a number less than zero, the value is used + as an offset in characters from the end of the value of PARAMETER. + If LENGTH evaluates to a number less than zero, it is interpreted + as an offset in characters from the end of the value of PARAMETER + rather than a number of characters, and the expansion is the + characters between OFFSET and that result. Note that a negative + offset must be separated from the colon by at least one space to + avoid being confused with the ':-' expansion. + + Here are some examples illustrating substring expansion on + parameters and subscripted arrays: + + $ string=01234567890abcdefgh + $ echo ${string:7} + 7890abcdefgh + $ echo ${string:7:0} + + $ echo ${string:7:2} + 78 + $ echo ${string:7:-2} + 7890abcdef + $ echo ${string: -7} + bcdefgh + $ echo ${string: -7:0} + + $ echo ${string: -7:2} + bc + $ echo ${string: -7:-2} + bcdef + $ set -- 01234567890abcdefgh + $ echo ${1:7} + 7890abcdefgh + $ echo ${1:7:0} + + $ echo ${1:7:2} + 78 + $ echo ${1:7:-2} + 7890abcdef + $ echo ${1: -7} + bcdefgh + $ echo ${1: -7:0} + + $ echo ${1: -7:2} + bc + $ echo ${1: -7:-2} + bcdef + $ array[0]=01234567890abcdefgh + $ echo ${array[0]:7} + 7890abcdefgh + $ echo ${array[0]:7:0} + + $ echo ${array[0]:7:2} + 78 + $ echo ${array[0]:7:-2} + 7890abcdef + $ echo ${array[0]: -7} + bcdefgh + $ echo ${array[0]: -7:0} + + $ echo ${array[0]: -7:2} + bc + $ echo ${array[0]: -7:-2} + bcdef + + If PARAMETER is '@', the result is LENGTH positional parameters + beginning at OFFSET. A negative OFFSET is taken relative to one + greater than the greatest positional parameter, so an offset of -1 + evaluates to the last positional parameter. It is an expansion + error if LENGTH evaluates to a number less than zero. + + The following examples illustrate substring expansion using + positional parameters: + + $ set -- 1 2 3 4 5 6 7 8 9 0 a b c d e f g h + $ echo ${@:7} + 7 8 9 0 a b c d e f g h + $ echo ${@:7:0} + + $ echo ${@:7:2} + 7 8 + $ echo ${@:7:-2} + bash: -2: substring expression < 0 + $ echo ${@: -7:2} + b c + $ echo ${@:0} + ./bash 1 2 3 4 5 6 7 8 9 0 a b c d e f g h + $ echo ${@:0:2} + ./bash 1 + $ echo ${@: -7:0} + + + If PARAMETER is an indexed array name subscripted by '@' or '*', + the result is the LENGTH members of the array beginning with + '${PARAMETER[OFFSET]}'. A negative OFFSET is taken relative to one + greater than the maximum index of the specified array. It is an + expansion error if LENGTH evaluates to a number less than zero. + + These examples show how you can use substring expansion with + indexed arrays: + + $ array=(0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h) + $ echo ${array[@]:7} + 7 8 9 0 a b c d e f g h + $ echo ${array[@]:7:2} + 7 8 + $ echo ${array[@]: -7:2} + b c + $ echo ${array[@]: -7:-2} + bash: -2: substring expression < 0 + $ echo ${array[@]:0} + 0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h + $ echo ${array[@]:0:2} + 0 1 + $ echo ${array[@]: -7:0} + + + Substring expansion applied to an associative array produces + undefined results. + + Substring indexing is zero-based unless the positional parameters + are used, in which case the indexing starts at 1 by default. If + OFFSET is 0, and the positional parameters are used, '$0' is + prefixed to the list. + +'${!PREFIX*}' +'${!PREFIX@}' + Expands to the names of variables whose names begin with PREFIX, + separated by the first character of the 'IFS' special variable. + When '@' is used and the expansion appears within double quotes, + each variable name expands to a separate word. + +'${!NAME[@]}' +'${!NAME[*]}' + 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 expanded 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. If PARAMETER is an indexed array name + subscripted by a negative number, that number is interpreted as + relative to one greater than the maximum index of PARAMETER, so + negative indices count back from the end of the array, and an index + of -1 references the last element. + +'${PARAMETER#WORD}' +'${PARAMETER##WORD}' + The WORD is expanded to produce a pattern and matched according to + the rules described below (*note Pattern Matching::). If the + pattern matches the beginning 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%WORD}' +'${PARAMETER%%WORD}' + The WORD is expanded to produce a pattern and matched according to + the rules described below (*note Pattern Matching::). If the + pattern matches a trailing portion of the expanded value of + PARAMETER, then the result of the expansion is the 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 filename + expansion. PARAMETER is expanded and the longest match of PATTERN + against its value is replaced with STRING. The match is performed + according to the rules described below (*note Pattern Matching::). + If PATTERN 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 the 'nocasematch' shell option (see the + description of 'shopt' in *note The Shopt Builtin::) is enabled, + the match is performed without regard to the case of alphabetic + characters. 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. + +'${PARAMETER^PATTERN}' +'${PARAMETER^^PATTERN}' +'${PARAMETER,PATTERN}' +'${PARAMETER,,PATTERN}' + This expansion modifies the case of alphabetic characters in + PARAMETER. The PATTERN is expanded to produce a pattern just as in + filename expansion. Each character in the expanded value of + PARAMETER is tested against PATTERN, and, if it matches the + pattern, its case is converted. The pattern should not attempt to + match more than one character. The '^' operator converts lowercase + letters matching PATTERN to uppercase; the ',' operator converts + matching uppercase letters to lowercase. The '^^' and ',,' + expansions convert each matched character in the expanded value; + the '^' and ',' expansions match and convert only the first + character in the expanded value. If PATTERN is omitted, it is + treated like a '?', which matches every character. If PARAMETER is + '@' or '*', the case modification 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 case modification operation is applied to each member of + the array in turn, and the expansion is the resultant list. + +'${PARAMETER@OPERATOR}' + The expansion is either a transformation of the value of PARAMETER + or information about PARAMETER itself, depending on the value of + OPERATOR. Each OPERATOR is a single letter: + + 'U' + The expansion is a string that is the value of PARAMETER with + lowercase alphabetic characters converted to uppercase. + 'u' + The expansion is a string that is the value of PARAMETER with + the first character converted to uppercase, if it is + alphabetic. + 'L' + The expansion is a string that is the value of PARAMETER with + uppercase alphabetic characters converted to lowercase. + 'Q' + The expansion is a string that is the value of PARAMETER + quoted in a format that can be reused as input. + 'E' + The expansion is a string that is the value of PARAMETER with + backslash escape sequences expanded as with the '$'...'' + quoting mechanism. + 'P' + The expansion is a string that is the result of expanding the + value of PARAMETER as if it were a prompt string (*note + Controlling the Prompt::). + 'A' + The expansion is a string in the form of an assignment + statement or 'declare' command that, if evaluated, will + recreate PARAMETER with its attributes and value. + 'K' + Produces a possibly-quoted version of the value of PARAMETER, + except that it prints the values of indexed and associative + arrays as a sequence of quoted key-value pairs (*note + Arrays::). + 'a' + The expansion is a string consisting of flag values + representing PARAMETER's attributes. + + If PARAMETER is '@' or '*', the 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 operation is applied to each member of the array in turn, + and the expansion is the resultant list. + + The result of the expansion is subject to word splitting and + filename expansion as described below. + + +File: bashref.info, Node: Command Substitution, Next: Arithmetic Expansion, Prev: Shell Parameter Expansion, Up: Shell Expansions + +3.5.4 Command Substitution +-------------------------- + +Command substitution allows the output of a command to replace the +command itself. Command substitution occurs when a command is enclosed +as follows: + $(COMMAND) +or + `COMMAND` + +Bash performs the expansion by executing COMMAND in a subshell +environment 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 +filename expansion are not performed on the results. + + +File: bashref.info, Node: Arithmetic Expansion, Next: Process Substitution, Prev: Command Substitution, Up: Shell Expansions + +3.5.5 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 and variable expansion, +command substitution, and quote removal. The result is treated as the +arithmetic expression to be evaluated. Arithmetic expansions may be +nested. + + The evaluation is performed according to the rules listed below +(*note Shell Arithmetic::). If the expression is invalid, Bash prints a +message indicating failure to the standard error and no substitution +occurs. + + +File: bashref.info, Node: Process Substitution, Next: Word Splitting, Prev: Arithmetic Expansion, Up: Shell Expansions + +3.5.6 Process Substitution +-------------------------- + +Process substitution allows a process's input or output to be referred +to using a filename. It takes the form of + <(LIST) +or + >(LIST) +The process LIST is run asynchronously, and its input or output appears +as a filename. This filename 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. Note that no space may appear between the '<' or '>' +and the left parenthesis, otherwise the construct would be interpreted +as a redirection. Process substitution is supported on systems that +support named pipes (FIFOs) or the '/dev/fd' method of naming open +files. + + When available, process substitution is performed simultaneously with +parameter and variable expansion, command substitution, and arithmetic +expansion. + + +File: bashref.info, Node: Word Splitting, Next: Filename Expansion, Prev: Process Substitution, Up: Shell Expansions + +3.5.7 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 using these characters as +field terminators. If 'IFS' is unset, or its value is exactly +'', the default, then sequences of ' ', +'', and '' at the beginning and end of the results of the +previous expansions are ignored, and any sequence of 'IFS' characters +not at the beginning or end serves to delimit words. If 'IFS' has a +value other than the default, then sequences of the whitespace +characters 'space', 'tab', and 'newline' are ignored at the beginning +and end of the word, as long as the whitespace character is in the value +of 'IFS' (an 'IFS' whitespace character). Any character in 'IFS' that +is not 'IFS' whitespace, along with any adjacent 'IFS' whitespace +characters, delimits a field. A sequence of 'IFS' whitespace characters +is also treated as a delimiter. If the value of 'IFS' is null, no word +splitting occurs. + + Explicit null arguments ('""' or '''') are retained and passed to +commands as empty strings. 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 and passed to a command as an empty +string. When a quoted null argument appears as part of a word whose +expansion is non-null, the null argument is removed. That is, the word +'-d''' becomes '-d' after word splitting and null argument removal. + + Note that if no expansion occurs, no splitting is performed. + + +File: bashref.info, Node: Filename Expansion, Next: Quote Removal, Prev: Word Splitting, Up: Shell Expansions + +3.5.8 Filename Expansion +------------------------ + +* Menu: + +* Pattern Matching:: How the shell matches patterns. + +After word splitting, unless the '-f' option has been set (*note The Set +Builtin::), Bash scans each word for the characters '*', '?', and '['. +If one of these characters appears, and is not quoted, then the word is +regarded as a PATTERN, and replaced with an alphabetically sorted list +of filenames matching the pattern (*note Pattern Matching::). If no +matching filenames 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 filename expansion, the character '.' at +the start of a filename or immediately following a slash must be matched +explicitly, unless the shell option 'dotglob' is set. The filenames '.' +and '..' must always be matched explicitly, even if 'dotglob' is set. +In other cases, the '.' character is not treated specially. + + When matching a filename, the slash character must always be matched +explicitly by a slash in the pattern, but in other matching contexts it +can be matched by a special pattern character as described below (*note +Pattern Matching::). + + See the description of 'shopt' in *note The Shopt Builtin::, for a +description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob' +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. If the 'nocaseglob' option is set, +the matching against the patterns in 'GLOBIGNORE' is performed without +regard to case. The filenames '.' 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 filenames beginning with a '.' will match. To get the old +behavior of ignoring filenames beginning with a '.', make '.*' one of +the patterns in 'GLOBIGNORE'. The 'dotglob' option is disabled when +'GLOBIGNORE' is unset. + + +File: bashref.info, Node: Pattern Matching, Up: Filename Expansion + +3.5.8.1 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. When the 'globstar' + shell option is enabled, and '*' is used in a filename expansion + context, two adjacent '*'s used as a single pattern will match all + files and zero or more directories and subdirectories. If followed + by a '/', two adjacent '*'s will match only directories and + subdirectories. +'?' + 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 falls 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. 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. The + sorting order of characters in range expressions is determined by + the current locale and the values of the 'LC_COLLATE' and 'LC_ALL' + shell variables, if set. + + For example, in the default C locale, '[a-dx-z]' is equivalent to + '[abcdxyz]'. Many locales sort characters in dictionary order, and + in these locales '[a-dx-z]' is typically not equivalent to + '[abcdxyz]'; it might be equivalent to '[aBbCcDdxXyYz]', for + example. To obtain the traditional interpretation of ranges in + bracket expressions, you can force the use of the C locale by + setting the 'LC_COLLATE' or 'LC_ALL' environment variable to the + value 'C', or enable the 'globasciiranges' shell option. + + 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. + + Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. Using separate matches against shorter +strings, or using arrays of strings instead of a single long string, may +be faster. + + +File: bashref.info, Node: Quote Removal, Prev: Filename Expansion, Up: Shell Expansions + +3.5.9 Quote Removal +------------------- + +After the preceding expansions, all unquoted occurrences of the +characters '\', ''', and '"' that did not result from one of the above +expansions are removed. + + +File: bashref.info, Node: Redirections, Next: Executing Commands, Prev: Shell Expansions, Up: Basic Shell Features + +3.6 Redirections +================ + +Before a command is executed, its input and output may be REDIRECTED +using a special notation interpreted by the shell. Redirection allows +commands' file handles to be duplicated, opened, closed, made to refer +to different files, and can change the files the command reads from and +writes to. Redirection may also be used to modify file handles in the +current shell execution environment. The following redirection +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. + + Each redirection that may be preceded by a file descriptor number may +instead be preceded by a word of the form {VARNAME}. In this case, for +each redirection operator except >&- and <&-, the shell will allocate a +file descriptor greater than 10 and assign it to {VARNAME}. If >&- or +<&- is preceded by {VARNAME}, the value of VARNAME defines the file +descriptor to close. If {VARNAME} is supplied, the redirection persists +beyond the scope of the command, allowing the shell programmer to manage +the file descriptor's lifetime manually. + + 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, filename 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 (file descriptor 1) and standard error +(file descriptor 2) to the file DIRLIST, while the command + ls 2>&1 > DIRLIST +directs only the standard output to file DIRLIST, because the standard +error was made a copy of the 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. If the operating +system on which Bash is running provides these special files, bash will +use them; otherwise it will emulate them internally with the behavior +described below. + +'/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 the + corresponding TCP socket. + +'/dev/udp/HOST/PORT' + If HOST is a valid hostname or Internet address, and PORT is an + integer port number or service name, Bash attempts to open the + corresponding UDP socket. + + A failure to open or create a file causes the redirection to fail. + + Redirections using file descriptors greater than 9 should be used +with care, as they may conflict with file descriptors the shell uses +internally. + +3.6.1 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 + + 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 is not enabled, the redirection is +attempted even if the file named by WORD exists. + +3.6.3 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 + +3.6.4 Redirecting Standard Output and Standard Error +---------------------------------------------------- + +This construct allows both the standard output (file descriptor 1) and +the standard error output (file descriptor 2) to be redirected to the +file whose name is the expansion of WORD. + + 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 + When using the second form, WORD may not expand to a number or '-'. +If it does, other redirection operators apply (see Duplicating File +Descriptors below) for compatibility reasons. + +3.6.5 Appending Standard Output and Standard Error +-------------------------------------------------- + +This construct allows both the standard output (file descriptor 1) and +the standard error output (file descriptor 2) to be appended to the file +whose name is the expansion of WORD. + + The format for appending standard output and standard error is: + &>>WORD +This is semantically equivalent to + >>WORD 2>&1 + (see Duplicating File Descriptors below). + +3.6.6 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 (or file descriptor N if N is specified) for a +command. + + The format of here-documents is: + [N]<<[-]WORD + HERE-DOCUMENT + DELIMITER + + No parameter and variable expansion, command substitution, arithmetic +expansion, or filename expansion is performed on WORD. If any part of +WORD is 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, 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. + +3.6.7 Here Strings +------------------ + +A variant of here documents, the format is: + [N]<<< WORD + + The WORD undergoes tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote removal. Filename +expansion and word splitting are not performed. The result is supplied +as a single string, with a newline appended, to the command on its +standard input (or file descriptor N if N is specified). + +3.6.8 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. If WORD evaluates to '-', file descriptor N +is closed. As a special case, if N is omitted, and WORD does not expand +to one or more digits or '-', the standard output and standard error are +redirected as described previously. + +3.6.9 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. + +3.6.10 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. + + +File: bashref.info, Node: Executing Commands, Next: Shell Scripts, Prev: Redirections, Up: Basic Shell Features + +3.7 Executing Commands +====================== + +* Menu: + +* Simple Command Expansion:: How Bash expands simple commands before + executing them. +* Command Search and Execution:: How Bash finds commands and runs them. +* Command Execution Environment:: The environment in which Bash + executes commands that are not + shell builtins. +* Environment:: The environment given to a command. +* Exit Status:: The status returned by commands and how Bash + interprets it. +* Signals:: What happens when Bash or a command it runs + receives a signal. + + +File: bashref.info, Node: Simple Command Expansion, Next: Command Search and Execution, Up: Executing Commands + +3.7.1 Simple Command Expansion +------------------------------ + +When a simple command is executed, the shell performs the following +expansions, assignments, and redirections, from left to right, in the +following order. + + 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 (*note Shell Expansions::). 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 (*note + Redirections::). + + 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. + + +File: bashref.info, Node: Command Search and Execution, Next: Command Execution Environment, Prev: Simple Command Expansion, Up: Executing Commands + +3.7.2 Command Search and 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. + + 1. 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 in *note Shell Functions::. + + 2. 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. + + 3. If the name is neither a shell function nor a builtin, and contains + no slashes, Bash searches each element of '$PATH' for a directory + containing an executable file by that name. Bash uses a hash table + to remember the full pathnames of executable files to avoid + multiple 'PATH' searches (see the description of 'hash' in *note + Bourne Shell Builtins::). 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 searches for a + defined shell function named 'command_not_found_handle'. If that + function exists, it is invoked in a separate execution environment + with the original command and the original command's arguments as + its arguments, and the function's exit status becomes the exit + status of that subshell. If that function is not defined, the + shell prints an error message and returns an exit status of 127. + + 4. 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 + supplied, if any. + + 5. 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 and the shell executes it as described in *note Shell + Scripts::. + + 6. If the command was not begun asynchronously, the shell waits for + the command to complete and collects its exit status. + + +File: bashref.info, Node: Command Execution Environment, Next: Environment, Prev: Command Search and Execution, Up: Executing Commands + +3.7.3 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' (*note The Shopt Builtin::) + + * shell aliases defined with 'alias' (*note Aliases::) + + * various process IDs, including those of background jobs (*note + Lists::), 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 + (*note 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. + + 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. + + 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. + + +File: bashref.info, Node: Environment, Next: Exit Status, Prev: Command Execution Environment, Up: Executing Commands + +3.7.4 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'. + + Bash 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' and 'export +-n' commands, 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 in +*note Shell Parameters::. These assignment statements affect only the +environment seen by that command. + + If the '-k' option is set (*note The Set Builtin::), 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 pathname of the command and passed to that command in its +environment. + + +File: bashref.info, Node: Exit Status, Next: Signals, Prev: Environment, Up: Executing Commands + +3.7.5 Exit Status +----------------- + +The exit status of an executed command is the value returned by the +WAITPID system call or equivalent function. Exit statuses fall between +0 and 255, though, as explained below, the shell may use values above +125 specially. Exit statuses from shell builtins and compound commands +are also limited to this range. Under certain circumstances, the shell +will use special values to indicate specific failure modes. + + For the shell's purposes, a command which exits with a zero exit +status has succeeded. A non-zero exit status indicates failure. This +seemingly counter-intuitive scheme is used so there is one well-defined +way to indicate success and a variety of ways to indicate various +failure modes. When a command terminates on a fatal signal whose number +is N, Bash uses the value 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. + + The exit status is used by the Bash conditional commands (*note +Conditional Constructs::) and some of the list constructs (*note +Lists::). + + All of the Bash builtins return an exit status of zero if they +succeed and a non-zero status on failure, so they may be used by the +conditional and list constructs. All builtins return an exit status of +2 to indicate incorrect usage, generally invalid options or missing +arguments. + + +File: bashref.info, Node: Signals, Prev: Exit Status, Up: Executing Commands + +3.7.6 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). When Bash receives a 'SIGINT', it breaks out of any +executing loops. In all cases, Bash ignores 'SIGQUIT'. If job control +is in effect (*note Job Control::), Bash ignores 'SIGTTIN', 'SIGTTOU', +and 'SIGTSTP'. + + Non-builtin commands started 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 'SIGHUP' signal to +a particular job, it should be removed from the jobs table with the +'disown' builtin (*note Job Control Builtins::) or marked to not receive +'SIGHUP' using 'disown -h'. + + If the 'huponexit' shell option has been set with 'shopt' (*note The +Shopt Builtin::), Bash sends a 'SIGHUP' to all jobs when an interactive +login shell exits. + + 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. + + +File: bashref.info, Node: Shell Scripts, Prev: Executing Commands, Up: Basic Shell Features + +3.8 Shell Scripts +================= + +A shell script is a text file containing shell commands. When such a +file is used as the first non-option argument when invoking Bash, and +neither the '-c' nor '-s' option is supplied (*note Invoking Bash::), +Bash reads and executes commands from the file, then exits. This mode +of operation creates a non-interactive shell. The shell first searches +for the file in the current directory, and looks in the directories in +'$PATH' if not found there. + + When Bash runs a shell script, it sets the special parameter '0' to +the name of the file, rather than the name of the shell, and the +positional parameters are set to the remaining arguments, if any are +given. If no additional arguments are supplied, the positional +parameters are unset. + + A shell script may be made executable by using the 'chmod' command to +turn on the execute bit. When Bash finds such a file while searching +the '$PATH' for a command, it spawns a subshell to execute it. In other +words, executing + filename ARGUMENTS +is equivalent to executing + bash filename ARGUMENTS + +if 'filename' is an executable shell script. This subshell +reinitializes itself, so that the effect is as if a new shell had been +invoked to interpret the script, with the exception that the locations +of commands remembered by the parent (see the description of 'hash' in +*note Bourne Shell Builtins::) are retained by the child. + + Most versions of Unix make this a part of the operating system's +command execution mechanism. If the first line of a script begins with +the two characters '#!', the remainder of the line specifies an +interpreter for the program and, depending on the operating system, one +or more optional arguments for that interpreter. Thus, you can specify +Bash, 'awk', Perl, or some other interpreter and write the rest of the +script file in that language. + + The arguments to the interpreter consist of one or more optional +arguments following the interpreter name on the first line of the script +file, followed by the name of the script file, followed by the rest of +the arguments supplied to the script. The details of how the +interpreter line is split into an interpreter name and a set of +arguments vary across systems. Bash will perform this action on +operating systems that do not handle it themselves. Note that some +older versions of Unix limit the interpreter name and a single argument +to a maximum of 32 characters, so it's not portable to assume that using +more than one argument will work. + + Bash scripts often begin with '#! /bin/bash' (assuming that Bash has +been installed in '/bin'), since this ensures that Bash will be used to +interpret the script, even if it is executed under another shell. It's +a common idiom to use 'env' to find 'bash' even if it's been installed +in another directory: '#!/usr/bin/env bash' will find the first +occurrence of 'bash' in '$PATH'. + + +File: bashref.info, Node: Shell Builtin Commands, Next: Shell Variables, Prev: Basic Shell Features, Up: Top + +4 Shell Builtin Commands +************************ + +* Menu: + +* Bourne Shell Builtins:: Builtin commands inherited from the Bourne + Shell. +* Bash Builtins:: Table of builtins specific to Bash. +* Modifying Shell Behavior:: Builtins to modify shell attributes and + optional behavior. +* Special Builtins:: Builtin commands classified specially by + POSIX. + +Builtin commands are contained within the shell itself. When the name +of a builtin command is used as the first word of a simple command +(*note Simple Commands::), the shell executes the command directly, +without invoking another program. Builtin commands are necessary to +implement functionality impossible or inconvenient to obtain with +separate utilities. + + This section briefly describes the builtins which Bash inherits from +the Bourne Shell, as well as the builtin commands which are unique to or +have been extended in Bash. + + Several builtin commands are described in other chapters: builtin +commands which provide the Bash interface to the job control facilities +(*note Job Control Builtins::), the directory stack (*note Directory +Stack Builtins::), the command history (*note Bash History Builtins::), +and the programmable completion facilities (*note Programmable +Completion Builtins::). + + Many of the builtins have been extended by POSIX or Bash. + + Unless otherwise noted, each builtin command documented as accepting +options preceded by '-' accepts '--' to signify the end of the options. +The ':', 'true', 'false', and 'test'/'[' builtins do not accept options +and do not treat '--' specially. The 'exit', 'logout', 'return', +'break', 'continue', 'let', and 'shift' builtins accept and process +arguments beginning with '-' without requiring '--'. Other builtins +that accept arguments but are not specified as accepting options +interpret arguments beginning with '-' as invalid options and require +'--' to prevent this interpretation. + + +File: bashref.info, Node: Bourne Shell Builtins, Next: Bash Builtins, Up: Shell Builtin Commands + +4.1 Bourne Shell Builtins +========================= + +The following shell builtin commands are inherited from the Bourne +Shell. These commands are implemented as specified by the POSIX +standard. + +': (a colon)' + : [ARGUMENTS] + + Do nothing beyond expanding ARGUMENTS and performing redirections. + The return status is zero. + +'. (a period)' + . FILENAME [ARGUMENTS] + + Read and execute commands from the FILENAME argument in the current + shell context. If FILENAME does not contain a slash, the 'PATH' + variable is used to find FILENAME. When Bash is not in POSIX mode, + the current directory is searched if FILENAME is not found in + '$PATH'. If any ARGUMENTS are supplied, they become the positional + parameters when FILENAME is executed. Otherwise the positional + parameters are unchanged. If the '-T' option is enabled, 'source' + inherits any trap on 'DEBUG'; if it is not, any 'DEBUG' trap string + is saved and restored around the call to 'source', and 'source' + unsets the 'DEBUG' trap while it executes. If '-T' is not set, and + the sourced file changes the 'DEBUG' trap, the new value is + retained when 'source' completes. The return status is the exit + status of the last command executed, or zero if no commands are + executed. If FILENAME is not found, or cannot be read, the return + status is non-zero. This builtin is equivalent to 'source'. + +'break' + break [N] + + Exit from a 'for', 'while', 'until', or 'select' loop. If N is + supplied, the Nth enclosing loop is exited. N must be greater than + or equal to 1. The return status is zero unless N is not greater + than or equal to 1. + +'cd' + cd [-L|[-P [-e]] [-@] [DIRECTORY] + + Change the current working directory to DIRECTORY. If DIRECTORY is + not supplied, the value of the 'HOME' shell variable is used. Any + additional arguments following DIRECTORY are ignored. If the shell + variable 'CDPATH' exists, it is used as a search path: each + directory name in 'CDPATH' is searched for DIRECTORY, with + alternative directory names in 'CDPATH' separated by a colon (':'). + If DIRECTORY begins with a slash, 'CDPATH' is not used. + + The '-P' option means to not follow symbolic links: symbolic links + are resolved while 'cd' is traversing DIRECTORY and before + processing an instance of '..' in DIRECTORY. + + By default, or when the '-L' option is supplied, symbolic links in + DIRECTORY are resolved after 'cd' processes an instance of '..' in + DIRECTORY. + + If '..' appears in DIRECTORY, it is processed by removing the + immediately preceding pathname component, back to a slash or the + beginning of DIRECTORY. + + If the '-e' option is supplied with '-P' and the current working + directory cannot be successfully determined after a successful + directory change, 'cd' will return an unsuccessful status. + + On systems that support it, the '-@' option presents the extended + attributes associated with a file as a directory. + + If DIRECTORY is '-', it is converted to '$OLDPWD' before the + directory change is attempted. + + 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 status is zero if the directory is successfully changed, + non-zero otherwise. + +'continue' + continue [N] + + Resume the next iteration of an enclosing 'for', 'while', 'until', + or 'select' loop. If N is supplied, the execution of the Nth + enclosing loop is resumed. N must be greater than or equal to 1. + The return status is zero unless N is not greater than or equal to + 1. + +'eval' + eval [ARGUMENTS] + + The arguments are concatenated together into a single command, + which is then read and executed, and its exit status returned as + the exit status of 'eval'. If there are no arguments or only empty + arguments, the return status is zero. + +'exec' + exec [-cl] [-a NAME] [COMMAND [ARGUMENTS]] + + If COMMAND is supplied, it replaces the shell without creating a + new process. If the '-l' option is supplied, the shell places a + dash at the beginning of the zeroth argument passed to COMMAND. + This is what the 'login' program does. The '-c' option causes + COMMAND to be executed with an empty environment. If '-a' is + supplied, the shell passes NAME as the zeroth argument to COMMAND. + If COMMAND cannot be executed for some reason, a non-interactive + shell exits, unless the 'execfail' shell option is enabled. In + that case, it returns failure. An interactive shell returns + failure if the file cannot be executed. A subshell exits + unconditionally if 'exec' fails. If no COMMAND is specified, + redirections may be used to affect the current shell environment. + If there are no redirection errors, the return status is zero; + otherwise the return status is non-zero. + +'exit' + exit [N] + + Exit the shell, returning a status of N to the shell's parent. If + N is omitted, the exit status is that of the last command executed. + Any trap on 'EXIT' is executed before the shell terminates. + +'export' + export [-fn] [-p] [NAME[=VALUE]] + + Mark each NAME to be passed to child processes in the environment. + If the '-f' option is supplied, the NAMEs refer to shell functions; + otherwise the names refer to shell variables. The '-n' option + means to no longer mark each NAME for export. If no NAMES are + supplied, or if the '-p' option is given, a list of names of all + exported variables is displayed. The '-p' option displays output + in a form that may be reused as input. If a variable name is + followed by =VALUE, the value of the variable is set to VALUE. + + The return status is zero unless an invalid option is supplied, one + of the names is not a valid shell variable name, or '-f' is + supplied with a name that is not a shell function. + +'getopts' + getopts OPTSTRING NAME [ARG ...] + + 'getopts' is used by shell scripts 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 whitespace. The + colon (':') and question mark ('?') 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 supplied as ARG values, '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. + +'hash' + hash [-r] [-p FILENAME] [-dt] [NAME] + + Each time 'hash' is invoked, it remembers the full pathnames of the + commands specified as NAME arguments, so they need not be searched + for on subsequent invocations. The commands are found by searching + through the directories listed in '$PATH'. Any + previously-remembered pathname is discarded. The '-p' option + inhibits the path search, and FILENAME is used as the location of + NAME. 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 zero unless a + NAME is not found or an invalid option is supplied. + +'pwd' + pwd [-LP] + + Print the absolute pathname of the current working directory. If + the '-P' option is supplied, the pathname printed will not contain + symbolic links. If the '-L' option is supplied, the pathname + printed may contain symbolic links. The return status is zero + unless an error is encountered while determining the name of the + current directory or an invalid option is supplied. + +'readonly' + readonly [-aAf] [-p] [NAME[=VALUE]] ... + + Mark each NAME as readonly. The values of these names may not be + changed by subsequent assignment. If the '-f' option is supplied, + each NAME refers to a shell function. The '-a' option means each + NAME refers to an indexed array variable; the '-A' option means + each NAME refers to an associative array variable. If both options + are supplied, '-A' takes precedence. If no NAME arguments are + given, or if the '-p' option is supplied, a list of all readonly + names is printed. The other options may be used to restrict the + output to a subset of the set of readonly names. The '-p' option + causes output to be displayed in a format that may be reused as + input. If a variable name is followed by =VALUE, the value of the + variable is set to VALUE. The return status is zero unless an + invalid option is supplied, one of the NAME arguments is not a + valid shell variable or function name, or the '-f' option is + supplied with a name that is not a shell function. + +'return' + return [N] + + Cause a shell function to stop executing and return the value N to + its caller. If N is not supplied, the return value is the exit + status of the last command executed in the function. If 'return' + is executed by a trap handler, the last command used to determine + the status is the last command executed before the trap handler. + If 'return' is executed during a 'DEBUG' trap, the last command + used to determine the status is the last command executed by the + trap handler before 'return' was invoked. 'return' may also be + used to terminate execution of a script being executed with the '.' + ('source') builtin, returning either N or the exit status of the + last command executed within the script as the exit status of the + script. If N is supplied, the return value is its least + significant 8 bits. Any command associated with the 'RETURN' trap + is executed before execution resumes after the function or script. + The return status is non-zero if 'return' is supplied a non-numeric + argument or is used outside a function and not during the execution + of a script by '.' or 'source'. + +'shift' + shift [N] + + Shift the positional parameters to the left by N. The positional + parameters from N+1 ... '$#' are renamed to '$1' ... '$#'-N. + Parameters represented by the numbers '$#' down to '$#'-N+1 are + unset. N must be a non-negative number less than or equal to '$#'. + If N is zero or greater than '$#', the positional parameters are + not changed. If N is not supplied, it is assumed to be 1. The + return status is zero unless N is greater than '$#' or less than + zero, non-zero otherwise. + +'test' +'[' + test EXPR + + Evaluate a conditional expression EXPR and return a status of 0 + (true) or 1 (false). Each operator and operand must be a separate + argument. Expressions are composed of the primaries described + below in *note Bash Conditional Expressions::. 'test' does not + accept any options, nor does it accept and ignore an argument of + '--' as signifying the end of options. + + When the '[' form is used, the last argument to the command must be + a ']'. + + Expressions may be combined using the following operators, listed + in decreasing order of precedence. The evaluation depends on the + number of arguments; see below. Operator precedence is used when + there are five or more arguments. + + '! 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. + + The 'test' and '[' builtins 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 (*note Bash Conditional + Expressions::), the expression is true if the unary test is + true. If the first argument is not a valid unary operator, + the expression is false. + + 3 arguments + The following conditions are applied in the order listed. + + 1. If the second argument is one of the binary conditional + operators (*note Bash Conditional Expressions::), the + result of the expression is the result of the binary test + using the first and third arguments as operands. The + '-a' and '-o' operators are considered binary operators + when there are three arguments. + 2. If the first argument is '!', the value is the negation + of the two-argument test using the second and third + arguments. + 3. If the first argument is exactly '(' and the third + argument is exactly ')', the result is the one-argument + test of the second argument. + 4. Otherwise, the expression is false. + + 4 arguments + If the first argument is '!', the result is the negation of + the three-argument expression composed of the remaining + 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. + + When used with 'test' or '[', the '<' and '>' operators sort + lexicographically using ASCII ordering. + +'times' + times + + Print out the user and system times used by the shell and its + children. The return status is zero. + +'trap' + trap [-lp] [ARG] [SIGSPEC ...] + + The commands in ARG are to be read and executed when the shell + receives signal SIGSPEC. If ARG is absent (and there is a single + SIGSPEC) or equal to '-', each specified signal's disposition is + reset to the value it had when the shell was started. If ARG is + the null string, then the signal specified by each SIGSPEC is + ignored by the shell and commands it invokes. If ARG is not + present and '-p' has been supplied, the shell displays the trap + commands associated with each SIGSPEC. If no arguments are + supplied, or only '-p' is given, 'trap' prints the list of commands + associated with each signal number in a form that may be reused as + shell input. The '-l' option causes the shell to print a list of + signal names and their corresponding numbers. Each SIGSPEC is + either a signal name or a signal number. Signal names are case + insensitive and the 'SIG' prefix is optional. + + If a SIGSPEC is '0' or 'EXIT', ARG is executed when the shell + exits. 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. Refer to the description of + the 'extdebug' option to the 'shopt' builtin (*note The Shopt + Builtin::) for details of its effect on the 'DEBUG' trap. 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. + + If a SIGSPEC is 'ERR', the command ARG is executed whenever a + pipeline (which may consist of a single simple command), a list, or + a compound command returns a non-zero exit status, subject to the + following conditions. The 'ERR' trap is not executed if the failed + command is part of the command list immediately following an + 'until' or 'while' keyword, part of the test following the 'if' or + 'elif' reserved words, part of a command executed in a '&&' or '||' + list except the command following the final '&&' or '||', any + command in a pipeline but the last, or if the command's return + status is being inverted using '!'. These are the same conditions + obeyed by the 'errexit' ('-e') option. + + Signals ignored upon entry to the shell cannot be trapped or reset. + Trapped signals that are not being ignored are reset to their + original values in a subshell or subshell environment when one is + created. + + The return status is zero unless a SIGSPEC does not specify a valid + signal. + +'umask' + umask [-p] [-S] [MODE] + + Set the shell process's file creation mask to MODE. If MODE begins + with a digit, it is interpreted as an octal number; if not, it is + interpreted as a symbolic mode mask similar to that accepted by the + 'chmod' command. If MODE is omitted, the current value of the mask + is printed. If the '-S' option is supplied without a MODE + argument, the mask is printed in a symbolic format. 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 zero if the mode + is successfully changed or if no MODE argument is supplied, and + non-zero otherwise. + + Note that when the mode is interpreted as an octal number, each + number of the umask is subtracted from '7'. Thus, a umask of '022' + results in permissions of '755'. + +'unset' + unset [-fnv] [NAME] + + Remove each variable or function NAME. If the '-v' option is + given, each NAME refers to a shell variable and that variable is + removed. If the '-f' option is given, the NAMEs refer to shell + functions, and the function definition is removed. If the '-n' + option is supplied, and NAME is a variable with the NAMEREF + attribute, NAME will be unset rather than the variable it + references. '-n' has no effect if the '-f' option is supplied. If + no options are supplied, each NAME refers to a variable; if there + is no variable by that name, a function with that name, if any, is + unset. Readonly variables and functions may not be unset. Some + shell variables lose their special behavior if they are unset; such + behavior is noted in the description of the individual variables. + The return status is zero unless a NAME is readonly. + + +File: bashref.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands + +4.2 Bash Builtin Commands +========================= + +This section describes builtin commands which are unique to or have been +extended in Bash. Some of these commands are specified in the POSIX +standard. + +'alias' + alias [-p] [NAME[=VALUE] ...] + + Without arguments or with the '-p' option, 'alias' prints the list + of aliases on the standard output in a form that allows them to be + reused as input. If arguments are supplied, an alias is defined + for each NAME whose VALUE is given. If no VALUE is given, the name + and value of the alias is printed. Aliases are described in *note + Aliases::. + +'bind' + bind [-m KEYMAP] [-lpsvPSVX] + 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 [-m KEYMAP] KEYSEQ:READLINE-COMMAND + + Display current Readline (*note Command Line Editing::) key and + function bindings, bind a key sequence to a Readline function or + macro, or set a Readline variable. Each non-option argument is a + command as it would appear in a Readline initialization file (*note + Readline Init File::), but each binding or command must be passed + as a separate argument; e.g., '"\C-x\C-r":re-read-init-file'. + + Options, if supplied, have the 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' ('vi-move' is also a synonym); '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 used as input or in a Readline initialization + file. + + '-P' + List current Readline function names and bindings. + + '-v' + Display Readline variable names and values in such a way that + they can be used as input or in a Readline initialization + file. + + '-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 used as input or in + a Readline initialization file. + + '-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. + When SHELL-COMMAND is executed, the shell sets the + 'READLINE_LINE' variable to the contents of the Readline line + buffer and the 'READLINE_POINT' and 'READLINE_MARK' variables + to the current location of the insertion point and the saved + insertion point (the MARK), respectively. If the executed + command changes the value of any of 'READLINE_LINE', + 'READLINE_POINT', or 'READLINE_MARK', those new values will be + reflected in the editing state. + + '-X' + List all key sequences bound to shell commands and the + associated commands in a format that can be reused as input. + + The return status is zero unless an invalid option is supplied or + an error occurs. + +'builtin' + builtin [SHELL-BUILTIN [ARGS]] + + Run a shell builtin, passing it ARGS, and return its exit status. + This is useful when defining a shell function with the same name as + a shell builtin, retaining the functionality of the builtin within + the function. The return status is non-zero if SHELL-BUILTIN is + not a shell builtin command. + +'caller' + 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' + command [-pVv] COMMAND [ARGUMENTS ...] + + Runs COMMAND with ARGUMENTS ignoring any shell function named + COMMAND. Only shell builtin commands or commands found by + searching the 'PATH' are executed. If there is a shell function + named 'ls', running 'command ls' within the function will execute + the external command 'ls' instead of calling the function + recursively. The '-p' option means to use a default value for + 'PATH' that is guaranteed to find all of the standard utilities. + The return status in this case is 127 if COMMAND cannot be found or + an error occurred, and the exit status of COMMAND otherwise. + + 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. In + this case, the return status is zero if COMMAND is found, and + non-zero if not. + +'declare' + declare [-aAfFgiIlnrtux] [-p] [NAME[=VALUE] ...] + + Declare variables and 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. When '-p' is used with NAME arguments, additional options, + other than '-f' and '-F', are ignored. + + When '-p' is supplied without NAME arguments, 'declare' will + display the attributes and values of all variables having the + attributes specified by the additional options. If no other + options are supplied with '-p', 'declare' will display the + attributes and values of all shell variables. The '-f' option will + restrict the display to shell functions. + + The '-F' option inhibits the display of function definitions; only + the function name and attributes are printed. If the 'extdebug' + shell option is enabled using 'shopt' (*note The Shopt Builtin::), + the source file name and line number where each NAME is defined are + displayed as well. '-F' implies '-f'. + + The '-g' option forces variables to be created or modified at the + global scope, even when 'declare' is executed in a shell function. + It is ignored in all other cases. + + The '-I' option causes local variables to inherit the attributes + (except the NAMEREF attribute) and value of any existing variable + with the same NAME at a surrounding scope. If there is no existing + variable, the local variable is initially unset. + + The following options can be used to restrict output to variables + with the specified attributes or to give variables attributes: + + '-a' + Each NAME is an indexed array variable (*note Arrays::). + + '-A' + Each NAME is an associative array variable (*note Arrays::). + + '-f' + Use function names only. + + '-i' + The variable is to be treated as an integer; arithmetic + evaluation (*note Shell Arithmetic::) is performed when the + variable is assigned a value. + + '-l' + When the variable is assigned a value, all upper-case + characters are converted to lower-case. The upper-case + attribute is disabled. + + '-n' + Give each NAME the NAMEREF attribute, making it a name + reference to another variable. That other variable is defined + by the value of NAME. All references, assignments, and + attribute modifications to NAME, except for those using or + changing the '-n' attribute itself, are performed on the + variable referenced by NAME's value. The nameref attribute + cannot be applied to array variables. + + '-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. + + '-u' + When the variable is assigned a value, all lower-case + characters are converted to upper-case. The lower-case + attribute is disabled. + + '-x' + Mark each NAME for export to subsequent commands via the + environment. + + Using '+' instead of '-' turns off the attribute instead, with the + exceptions that '+a' and '+A' may not be used to destroy array + variables and '+r' will not remove the readonly attribute. When + used in a function, 'declare' makes each NAME local, as with the + 'local' command, unless the '-g' option is used. If a variable + name is followed by =VALUE, the value of the variable is set to + VALUE. + + When using '-a' or '-A' and the compound assignment syntax to + create array variables, additional attributes do not take effect + until subsequent assignments. + + The return status is zero unless an invalid option is encountered, + an attempt is made to define a function using '-f foo=bar', an + attempt is made to assign a value to a readonly variable, an + attempt is made to assign a value to an array variable without + using the compound assignment syntax (*note Arrays::), 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'. + +'echo' + echo [-neE] [ARG ...] + + Output the ARGs, separated by spaces, terminated with a newline. + The return status is 0 unless a write error occurs. If '-n' is + specified, the trailing newline is suppressed. If the '-e' option + is given, interpretation of the following backslash-escaped + characters is enabled. The '-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 further output + '\e' + '\E' + escape + '\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) + '\xHH' + the eight-bit character whose value is the hexadecimal value + HH (one or two hex digits) + '\uHHHH' + the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value HHHH (one to four hex digits) + '\UHHHHHHHH' + the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value HHHHHHHH (one to eight hex digits) + +'enable' + enable [-a] [-dnps] [-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, the NAMEs become disabled. Otherwise NAMEs are enabled. + For example, to use the 'test' binary found via '$PATH' instead of + the shell builtin version, type 'enable -n test'. + + If the '-p' option is supplied, or no NAME arguments appear, a list + of shell builtins is printed. With no other arguments, the list + consists of all enabled shell builtins. The '-a' option means to + list each builtin with an indication of whether or not it is + enabled. + + 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 loaded with '-f'. + + If there are no options, a list of the shell builtins is displayed. + The '-s' option restricts 'enable' to the POSIX special builtins. + If '-s' is used with '-f', the new builtin becomes a special + builtin (*note Special Builtins::). + + The return status is zero unless a NAME is not a shell builtin or + there is an error loading a new builtin from a shared object. + +'help' + help [-dms] [PATTERN] + + Display helpful information about builtin commands. If PATTERN is + specified, 'help' gives detailed help on all commands matching + PATTERN, otherwise a list of the builtins is printed. + + Options, if supplied, have the following meanings: + + '-d' + Display a short description of each PATTERN + '-m' + Display the description of each PATTERN in a manpage-like + format + '-s' + Display only a short usage synopsis for each PATTERN + + The return status is zero unless no command matches PATTERN. + +'let' + let EXPRESSION [EXPRESSION ...] + + The 'let' builtin allows arithmetic to be performed on shell + variables. Each EXPRESSION is evaluated according to the rules + given below in *note Shell Arithmetic::. If the last EXPRESSION + evaluates to 0, 'let' returns 1; otherwise 0 is returned. + +'local' + 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'. 'local' can only be used within a function; it makes + the variable NAME have a visible scope restricted to that function + and its children. If NAME is '-', the set of shell options is made + local to the function in which 'local' is invoked: shell options + changed using the 'set' builtin inside the function are restored to + their original values when the function returns. The restore is + effected as if a series of 'set' commands were executed to restore + the values that were in place before the function. The return + status is zero unless 'local' is used outside a function, an + invalid NAME is supplied, or NAME is a readonly variable. + +'logout' + logout [N] + + Exit a login shell, returning a status of N to the shell's parent. + +'mapfile' + mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] + [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] + + Read lines from the standard input into the indexed array variable + ARRAY, or from file descriptor FD if the '-u' option is supplied. + The variable 'MAPFILE' is the default ARRAY. Options, if supplied, + have the following meanings: + + '-d' + The first character of DELIM is used to terminate each input + line, rather than newline. If DELIM is the empty string, + 'mapfile' will terminate a line when it reads a NUL character. + '-n' + Copy at most COUNT lines. If COUNT is 0, all lines are + copied. + '-O' + Begin assigning to ARRAY at index ORIGIN. The default index + is 0. + '-s' + Discard the first COUNT lines read. + '-t' + Remove a trailing DELIM (default newline) from each line read. + '-u' + Read lines from file descriptor FD instead of the standard + input. + '-C' + Evaluate CALLBACK each time QUANTUM lines are read. The '-c' + option specifies QUANTUM. + '-c' + Specify the number of lines read between each call to + CALLBACK. + + If '-C' is specified without '-c', the default quantum is 5000. + When CALLBACK is evaluated, it is supplied the index of the next + array element to be assigned and the line to be assigned to that + element as additional arguments. CALLBACK is evaluated after the + line is read but before the array element is assigned. + + If not supplied with an explicit origin, 'mapfile' will clear ARRAY + before assigning to it. + + 'mapfile' returns successfully unless an invalid option or option + argument is supplied, ARRAY is invalid or unassignable, or ARRAY is + not an indexed array. + +'printf' + printf [-v VAR] FORMAT [ARGUMENTS] + + Write the formatted ARGUMENTS to the standard output under the + control of the FORMAT. The '-v' option causes the output to be + assigned to the variable VAR rather than being printed to the + standard output. + + 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, 'printf' interprets the following + extensions: + + '%b' + Causes 'printf' to expand backslash escape sequences in the + corresponding ARGUMENT in the same way as 'echo -e' (*note + Bash Builtins::). + '%q' + Causes 'printf' to output the corresponding ARGUMENT in a + format that can be reused as shell input. + '%(DATEFMT)T' + Causes 'printf' to output the date-time string resulting from + using DATEFMT as a format string for 'strftime'(3). The + corresponding ARGUMENT is an integer representing the number + of seconds since the epoch. Two special argument values may + be used: -1 represents the current time, and -2 represents the + time the shell was invoked. If no argument is specified, + conversion behaves as if -1 had been given. This is an + exception to the usual 'printf' behavior. + + The %b, %q, and %T directives all use the field width and precision + arguments from the format specification and write that many bytes + from (or use that wide a field for) the expanded argument, which + usually contains more characters than the original. + + Arguments to non-string format specifiers are treated as C language + constants, except that a leading plus or minus sign is allowed, and + if the leading character is a single or double quote, the value is + the ASCII value of the following character. + + 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. + +'read' + read [-ers] [-a ANAME] [-d DELIM] [-i TEXT] [-n NCHARS] + [-N NCHARS] [-p PROMPT] [-t TIMEOUT] [-u FD] [NAME ...] + + One line is read from the standard input, or from the file + descriptor FD supplied as an argument to the '-u' option, split + into words as described above in *note Word Splitting::, and the + first word is assigned to the first NAME, the second word to the + second NAME, and so on. If there are more words than names, the + remaining words and their intervening delimiters are 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 the value of the 'IFS' variable are used to split the + line into words using the same rules the shell uses for expansion + (described above in *note Word Splitting::). The backslash + character '\' may be used to remove any special meaning for the + next character read and for line continuation. + + Options, if supplied, have the following meanings: + + '-a ANAME' + The words are assigned to sequential indices of the array + variable ANAME, starting at 0. All elements are removed from + ANAME before the assignment. Other NAME arguments are + ignored. + + '-d DELIM' + The first character of DELIM is used to terminate the input + line, rather than newline. If DELIM is the empty string, + 'read' will terminate a line when it reads a NUL character. + + '-e' + Readline (*note Command Line Editing::) is used to obtain the + line. Readline uses the current (or default, if line editing + was not previously active) editing settings, but uses + Readline's default filename completion. + + '-i TEXT' + If Readline is being used to read the line, TEXT is placed + into the editing buffer before editing begins. + + '-n NCHARS' + 'read' returns after reading NCHARS characters rather than + waiting for a complete line of input, but honors a delimiter + if fewer than NCHARS characters are read before the delimiter. + + '-N NCHARS' + 'read' returns after reading exactly NCHARS characters rather + than waiting for a complete line of input, unless EOF is + encountered or 'read' times out. Delimiter characters + encountered in the input are not treated specially and do not + cause 'read' to return until NCHARS characters are read. The + result is not split on the characters in 'IFS'; the intent is + that the variable is assigned exactly the characters read + (with the exception of backslash; see the '-r' option below). + + '-p PROMPT' + Display PROMPT, without a trailing newline, before attempting + to read any input. The prompt is displayed only if input is + coming from a terminal. + + '-r' + If this option is given, 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 then 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 (or a specified number of characters) is not read + within TIMEOUT seconds. TIMEOUT may be a decimal number with + a fractional portion following the decimal point. This option + is only effective if 'read' is reading input from a terminal, + pipe, or other special file; it has no effect when reading + from regular files. If 'read' times out, 'read' saves any + partial input read into the specified variable NAME. If + TIMEOUT is 0, 'read' returns immediately, without trying to + read any data. The exit status is 0 if input is available on + the specified file descriptor, non-zero otherwise. The exit + status is greater than 128 if the timeout is exceeded. + + '-u FD' + Read input from file descriptor FD. + + If no NAMEs are supplied, the line read, without the ending + delimiter but otherwise unmodified, is assigned to the variable + 'REPLY'. The exit status is zero, unless end-of-file is + encountered, 'read' times out (in which case the status is greater + than 128), a variable assignment error (such as assigning to a + readonly variable) occurs, or an invalid file descriptor is + supplied as the argument to '-u'. + +'readarray' + readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] + [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] + + Read lines from the standard input into the indexed array variable + ARRAY, or from file descriptor FD if the '-u' option is supplied. + + A synonym for 'mapfile'. + +'source' + source FILENAME + + A synonym for '.' (*note Bourne Shell Builtins::). + +'type' + type [-afptP] [NAME ...] + + For each NAME, indicate how it would be interpreted if used as a + command name. + + If the '-t' option is used, 'type' prints a single word which is + one of 'alias', 'function', 'builtin', 'file' or 'keyword', if NAME + is an alias, shell function, shell builtin, disk file, or shell + reserved word, respectively. If the NAME is not found, then + nothing is printed, and 'type' returns a failure status. + + If the '-p' option is used, 'type' either returns the name of the + disk file that would be executed, or nothing if '-t' would not + return 'file'. + + The '-P' option forces a path search for each NAME, even if '-t' + would not return 'file'. + + If a command is hashed, '-p' and '-P' print the hashed value, which + is not necessarily the file that appears first in '$PATH'. + + If the '-a' option is used, 'type' returns all of the places that + contain an executable named FILE. This includes aliases and + functions, if and only if the '-p' option is not also used. + + If the '-f' option is used, 'type' does not attempt to find shell + functions, as with the 'command' builtin. + + The return status is zero if all of the NAMES are found, non-zero + if any are not found. + +'typeset' + typeset [-afFgrxilnrtux] [-p] [NAME[=VALUE] ...] + + The 'typeset' command is supplied for compatibility with the Korn + shell. It is a synonym for the 'declare' builtin command. + +'ulimit' + ulimit [-HS] -a + ulimit [-HS] [-bcdefiklmnpqrstuvxPRT] [LIMIT] + + 'ulimit' provides control over the resources available to processes + started by the shell, on systems that allow such control. If an + option is given, it is interpreted as follows: + + '-S' + Change and report the soft limit associated with a resource. + + '-H' + Change and report the hard limit associated with a resource. + + '-a' + All current limits are reported; no limits are set. + + '-b' + The maximum socket buffer size. + + '-c' + The maximum size of core files created. + + '-d' + The maximum size of a process's data segment. + + '-e' + The maximum scheduling priority ("nice"). + + '-f' + The maximum size of files written by the shell and its + children. + + '-i' + The maximum number of pending signals. + + '-k' + The maximum number of kqueues that may be allocated. + + '-l' + The maximum size that may be locked into memory. + + '-m' + The maximum resident set size (many systems do not honor this + limit). + + '-n' + The maximum number of open file descriptors (most systems do + not allow this value to be set). + + '-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 processes available to a single user. + + '-v' + The maximum amount of virtual memory available to the shell, + and, on some systems, to its children. + + '-x' + The maximum number of file locks. + + '-P' + The maximum number of pseudoterminals. + + '-R' + The maximum time a real-time process can run before blocking, + in microseconds. + + '-T' + The maximum number of threads. + + If LIMIT is given, and the '-a' option is not used, LIMIT is the + new value of the specified resource. The special LIMIT values + 'hard', 'soft', and 'unlimited' stand for the current hard limit, + the current soft limit, and no limit, respectively. A hard limit + cannot be increased by a non-root user once it is set; a soft limit + may be increased up to the value of the hard limit. Otherwise, the + current value of the soft limit for the specified resource is + printed, unless the '-H' option is supplied. When more than one + resource is specified, the limit name and unit, if appropriate, are + printed before the value. When setting new limits, if neither '-H' + nor '-S' is supplied, both the hard and soft limits are set. If no + option is given, then '-f' is assumed. Values are in 1024-byte + increments, except for '-t', which is in seconds; '-R', which is in + microseconds; '-p', which is in units of 512-byte blocks; '-P', + '-T', '-b', '-k', '-n' and '-u', which are unscaled values; and, + when in POSIX Mode (*note Bash POSIX Mode::), '-c' and '-f', which + are in 512-byte increments. + + The return status is zero unless an invalid option or argument is + supplied, or an error occurs while setting a new limit. + +'unalias' + unalias [-a] [NAME ... ] + + Remove each NAME from the list of aliases. If '-a' is supplied, + all aliases are removed. Aliases are described in *note Aliases::. + + +File: bashref.info, Node: Modifying Shell Behavior, Next: Special Builtins, Prev: Bash Builtins, Up: Shell Builtin Commands + +4.3 Modifying Shell Behavior +============================ + +* Menu: + +* The Set Builtin:: Change the values of shell attributes and + positional parameters. +* The Shopt Builtin:: Modify shell optional behavior. + + +File: bashref.info, Node: The Set Builtin, Next: The Shopt Builtin, Up: Modifying Shell Behavior + +4.3.1 The Set Builtin +--------------------- + +This builtin is so complicated that it deserves its own section. 'set' +allows you to change the values of shell options and set the positional +parameters, or to display the names and values of shell variables. + +'set' + set [--abefhkmnptuvxBCEHPT] [-o OPTION-NAME] [ARGUMENT ...] + set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [ARGUMENT ...] + + If no options or arguments are supplied, 'set' displays the names + and values of all shell variables and functions, sorted according + to the current locale, in a format that may be reused as input for + setting or resetting the currently-set variables. Read-only + variables cannot be reset. In POSIX mode, only shell variables are + listed. + + When options are supplied, they set or unset shell attributes. + Options, if specified, have the following meanings: + + '-a' + Each variable or function that is created or modified is given + the export attribute and marked for export to the environment + of subsequent commands. + + '-b' + Cause the status of terminated background jobs to be reported + immediately, rather than before printing the next primary + prompt. + + '-e' + Exit immediately if a pipeline (*note Pipelines::), which may + consist of a single simple command (*note Simple Commands::), + a list (*note Lists::), or a compound command (*note Compound + Commands::) returns 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 any command executed in + a '&&' or '||' list except the command following the final + '&&' or '||', any command in a pipeline but the last, or if + the command's return status is being inverted with '!'. If a + compound command other than a subshell returns a non-zero + status because a command failed while '-e' was being ignored, + the shell does not exit. A trap on 'ERR', if set, is executed + before the shell exits. + + This option applies to the shell environment and each subshell + environment separately (*note Command Execution + Environment::), and may cause subshells to exit before + executing all the commands in the subshell. + + If a compound command or shell function executes in a context + where '-e' is being ignored, none of the commands executed + within the compound command or function body will be affected + by the '-e' setting, even if '-e' is set and a command returns + a failure status. If a compound command or shell function + sets '-e' while executing in a context where '-e' is ignored, + that setting will not have any effect until the compound + command or the command containing the function call completes. + + '-f' + Disable filename expansion (globbing). + + '-h' + Locate and remember (hash) commands as they are looked up for + execution. This option is enabled by default. + + '-k' + All arguments in the form of assignment statements are placed + in the environment for a command, not just those that precede + the command name. + + '-m' + Job control is enabled (*note Job Control::). All processes + run in a separate process group. When a background job + completes, the shell prints a line containing its exit status. + + '-n' + Read commands but do not execute them. This may be used to + check a script for syntax errors. This option is ignored by + interactive shells. + + '-o OPTION-NAME' + + Set the option corresponding to OPTION-NAME: + + 'allexport' + Same as '-a'. + + 'braceexpand' + Same as '-B'. + + 'emacs' + Use an 'emacs'-style line editing interface (*note + Command Line Editing::). This also affects the editing + interface used for 'read -e'. + + 'errexit' + Same as '-e'. + + 'errtrace' + Same as '-E'. + + 'functrace' + Same as '-T'. + + 'hashall' + Same as '-h'. + + 'histexpand' + Same as '-H'. + + 'history' + Enable command history, as described in *note Bash + History Facilities::. This option is on by default in + interactive shells. + + 'ignoreeof' + An interactive shell will not exit upon reading EOF. + + '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 + (*note Bash POSIX Mode::). This is intended to make Bash + behave as a strict superset of that standard. + + 'privileged' + Same as '-p'. + + 'verbose' + Same as '-v'. + + 'vi' + Use a 'vi'-style line editing interface. This also + affects the editing interface used for 'read -e'. + + 'xtrace' + Same as '-x'. + + '-p' + Turn on privileged mode. In this mode, the '$BASH_ENV' and + '$ENV' files are not processed, shell functions are not + inherited from the environment, and the 'SHELLOPTS', + 'BASHOPTS', 'CDPATH' and 'GLOBIGNORE' variables, if they + appear in the environment, are 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 and parameters other than the special + parameters '@' or '*' as an error when performing parameter + expansion. An error message will be written to the standard + error, and a non-interactive shell will exit. + + '-v' + Print shell input lines as they are read. + + '-x' + Print a trace of simple commands, 'for' commands, 'case' + commands, 'select' commands, and arithmetic 'for' commands and + their arguments or associated word lists after they are + expanded and before they are executed. The value of the 'PS4' + variable is expanded and the resultant value is printed before + the command and its expanded arguments. + + '-B' + The shell will perform brace expansion (*note Brace + Expansion::). This option is on by default. + + '-C' + Prevent output redirection using '>', '>&', and '<>' from + overwriting existing files. + + '-E' + If set, any trap on 'ERR' is inherited by shell functions, + command substitutions, and commands executed in a subshell + environment. The 'ERR' trap is normally not inherited in such + cases. + + '-H' + Enable '!' style history substitution (*note History + Interaction::). This option is on by default for interactive + shells. + + '-P' + If set, do not resolve symbolic links when performing commands + such as 'cd' which change the current directory. The physical + directory is used instead. By default, Bash follows the + logical chain of directories when performing commands which + change the current directory. + + For example, if '/usr/sys' is a symbolic link to + '/usr/local/sys' then: + $ cd /usr/sys; echo $PWD + /usr/sys + $ cd ..; pwd + /usr + + If 'set -P' is on, then: + $ cd /usr/sys; echo $PWD + /usr/local/sys + $ cd ..; pwd + /usr/local + + '-T' + If set, any trap on 'DEBUG' and 'RETURN' are inherited by + shell functions, command substitutions, and commands executed + in a subshell environment. The 'DEBUG' and 'RETURN' traps are + normally not inherited in such cases. + + '--' + If no arguments follow this option, then the positional + parameters are unset. Otherwise, the positional parameters + are set to the ARGUMENTS, even if some of them begin with a + '-'. + + '-' + Signal the end of options, cause all remaining ARGUMENTS to be + assigned to the positional parameters. The '-x' and '-v' + options are turned off. If there are no arguments, the + positional parameters remain unchanged. + + Using '+' rather than '-' causes these options to be turned off. + The options can also be used upon invocation of the shell. The + current set of options may be found in '$-'. + + The remaining N ARGUMENTS are positional parameters and are + assigned, in order, to '$1', '$2', ... '$N'. The special parameter + '#' is set to N. + + The return status is always zero unless an invalid option is + supplied. + + +File: bashref.info, Node: The Shopt Builtin, Prev: The Set Builtin, Up: Modifying Shell Behavior + +4.3.2 The Shopt Builtin +----------------------- + +This builtin allows you to change additional shell optional behavior. + +'shopt' + shopt [-pqsu] [-o] [OPTNAME ...] + + Toggle the values of settings controlling optional shell behavior. + The settings can be either those listed below, or, if the '-o' + option is used, those available with the '-o' option to the 'set' + builtin command (*note The Set Builtin::). 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; if OPTNAMES are + supplied, the output is restricted to those options. The '-p' + option causes output to be displayed in a form that may be reused + as input. Other options have the following meanings: + + '-s' + Enable (set) each OPTNAME. + + '-u' + Disable (unset) each OPTNAME. + + '-q' + Suppresses normal output; the return status indicates whether + the OPTNAME is set or unset. If multiple OPTNAME arguments + are given with '-q', the return status is zero if all OPTNAMES + are enabled; non-zero otherwise. + + '-o' + Restricts the values of OPTNAME to be those defined for the + '-o' option to the 'set' builtin (*note The Set Builtin::). + + If either '-s' or '-u' is used with no OPTNAME arguments, 'shopt' + shows only those options which are set or unset, respectively. + + Unless otherwise noted, the 'shopt' options are disabled (off) by + default. + + The return status when listing options is zero if all OPTNAMES are + enabled, non-zero otherwise. When setting or unsetting options, + the return status is zero unless an OPTNAME is not a valid shell + option. + + The list of 'shopt' options is: + + 'assoc_expand_once' + If set, the shell suppresses multiple evaluation of + associative array subscripts during arithmetic expression + evaluation, while executing builtins that can perform variable + assignments, and while executing builtins that perform array + dereferencing. + + 'autocd' + If set, a command name that is the name of a directory is + executed as if it were the argument to the 'cd' command. This + option is only used by interactive shells. + + 'cdable_vars' + If this is set, an argument to the 'cd' builtin command that + is not a directory is assumed to be the name of a variable + whose value is the directory to change to. + + 'cdspell' + If set, minor errors in the spelling of a directory component + in a 'cd' command will be corrected. The errors checked for + are transposed characters, a missing character, and a + character too many. If a correction is found, the corrected + path is printed, and the command proceeds. This option is + only used by interactive shells. + + 'checkhash' + If this is set, Bash checks that a command found in the hash + table exists before trying to execute it. If a hashed command + no longer exists, a normal path search is performed. + + 'checkjobs' + If set, Bash lists the status of any stopped and running jobs + before exiting an interactive shell. If any jobs are running, + this causes the exit to be deferred until a second exit is + attempted without an intervening command (*note Job + Control::). The shell always postpones exiting if any jobs + are stopped. + + 'checkwinsize' + If set, Bash checks the window size after each external + (non-builtin) command and, if necessary, updates the values of + 'LINES' and 'COLUMNS'. This option is enabled by default. + + '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. This option is enabled by + default, but only has an effect if command history is enabled + (*note Bash History Facilities::). + + 'compat31' + 'compat32' + 'compat40' + 'compat41' + 'compat42' + 'compat43' + 'compat44' + These control aspects of the shell's compatibility mode (*note + Shell Compatibility Mode::). + + 'complete_fullquote' + If set, Bash quotes all shell metacharacters in filenames and + directory names when performing completion. If not set, Bash + removes metacharacters such as the dollar sign from the set of + characters that will be quoted in completed filenames when + these metacharacters appear in shell variable references in + words to be completed. This means that dollar signs in + variable names that expand to directories will not be quoted; + however, any dollar signs appearing in filenames will not be + quoted, either. This is active only when bash is using + backslashes to quote completed filenames. This variable is + set by default, which is the default Bash behavior in versions + through 4.2. + + 'direxpand' + If set, Bash replaces directory names with the results of word + expansion when performing filename completion. This changes + the contents of the readline editing buffer. If not set, Bash + attempts to preserve what the user typed. + + 'dirspell' + If set, Bash attempts spelling correction on directory names + during word completion if the directory name initially + supplied does not exist. + + 'dotglob' + If set, Bash includes filenames beginning with a '.' in the + results of filename expansion. The filenames '.' and '..' + must always be matched explicitly, even if 'dotglob' is set. + + 'execfail' + If this is set, a non-interactive shell will not exit if it + cannot execute the file specified as an argument to the 'exec' + builtin command. An interactive shell does not exit if 'exec' + fails. + + 'expand_aliases' + If set, aliases are expanded as described below under Aliases, + *note Aliases::. This option is enabled by default for + interactive shells. + + 'extdebug' + If set at shell invocation, or in a shell startup file, + arrange to execute the debugger profile before the shell + starts, identical to the '--debugger' option. If set after + invocation, behavior intended for use by debuggers is enabled: + + 1. The '-F' option to the 'declare' builtin (*note Bash + Builtins::) displays the source file name and line number + corresponding to each function name supplied as an + argument. + + 2. If the command run by the 'DEBUG' trap returns a non-zero + value, the next command is skipped and not executed. + + 3. If the command run by the 'DEBUG' trap returns a value of + 2, and the shell is executing in a subroutine (a shell + function or a shell script executed by the '.' or + 'source' builtins), the shell simulates a call to + 'return'. + + 4. 'BASH_ARGC' and 'BASH_ARGV' are updated as described in + their descriptions (*note Bash Variables::). + + 5. Function tracing is enabled: command substitution, shell + functions, and subshells invoked with '( COMMAND )' + inherit the 'DEBUG' and 'RETURN' traps. + + 6. Error tracing is enabled: command substitution, shell + functions, and subshells invoked with '( COMMAND )' + inherit the 'ERR' trap. + + 'extglob' + If set, the extended pattern matching features described above + (*note Pattern Matching::) are enabled. + + 'extquote' + If set, '$'STRING'' and '$"STRING"' quoting is performed + within '${PARAMETER}' expansions enclosed in double quotes. + This option is enabled by default. + + 'failglob' + If set, patterns which fail to match filenames during filename + expansion result in an expansion error. + + 'force_fignore' + If set, the suffixes specified by the 'FIGNORE' shell variable + cause words to be ignored when performing word completion even + if the ignored words are the only possible completions. *Note + Bash Variables::, for a description of 'FIGNORE'. This option + is enabled by default. + + 'globasciiranges' + If set, range expressions used in pattern matching bracket + expressions (*note Pattern Matching::) behave as if in the + traditional C locale when performing comparisons. That is, + the current locale's collating sequence is not taken into + account, so 'b' will not collate between 'A' and 'B', and + upper-case and lower-case ASCII characters will collate + together. + + 'globstar' + If set, the pattern '**' used in a filename expansion context + will match all files and zero or more directories and + subdirectories. If the pattern is followed by a '/', only + directories and subdirectories match. + + 'gnu_errfmt' + If set, shell error messages are written in the standard GNU + error message format. + + 'histappend' + If set, the history list is appended to the file named by the + value of the 'HISTFILE' variable when the shell exits, rather + than overwriting the file. + + 'histreedit' + If set, and Readline is being used, a user is given the + opportunity to re-edit a failed history substitution. + + 'histverify' + If set, and Readline is being used, the results of history + substitution are not immediately passed to the shell parser. + Instead, the resulting line is loaded into the Readline + editing buffer, allowing further modification. + + 'hostcomplete' + If set, and Readline is being used, Bash will attempt to + perform hostname completion when a word containing a '@' is + being completed (*note Commands For Completion::). This + option is enabled by default. + + 'huponexit' + If set, Bash will send 'SIGHUP' to all jobs when an + interactive login shell exits (*note Signals::). + + 'inherit_errexit' + If set, command substitution inherits the value of the + 'errexit' option, instead of unsetting it in the subshell + environment. This option is enabled when POSIX mode is + enabled. + + 'interactive_comments' + Allow a word beginning with '#' to cause that word and all + remaining characters on that line to be ignored in an + interactive shell. This option is enabled by default. + + 'lastpipe' + If set, and job control is not active, the shell runs the last + command of a pipeline not executed in the background in the + current shell environment. + + 'lithist' + If enabled, and the 'cmdhist' option is enabled, multi-line + commands are saved to the history with embedded newlines + rather than using semicolon separators where possible. + + 'localvar_inherit' + If set, local variables inherit the value and attributes of a + variable of the same name that exists at a previous scope + before any new value is assigned. The NAMEREF attribute is + not inherited. + + 'localvar_unset' + If set, calling 'unset' on local variables in previous + function scopes marks them so subsequent lookups find them + unset until that function returns. This is identical to the + behavior of unsetting local variables at the current function + scope. + + 'login_shell' + The shell sets this option if it is started as a login shell + (*note Invoking Bash::). The value may not be changed. + + 'mailwarn' + If set, and a file that Bash is checking for mail has been + accessed since the last time it was checked, the message '"The + mail in MAILFILE has been read"' is displayed. + + 'no_empty_cmd_completion' + If set, and Readline is being used, Bash will not attempt to + search the 'PATH' for possible completions when completion is + attempted on an empty line. + + 'nocaseglob' + If set, Bash matches filenames in a case-insensitive fashion + when performing filename expansion. + + 'nocasematch' + If set, Bash matches patterns in a case-insensitive fashion + when performing matching while executing 'case' or '[[' + conditional commands, when performing pattern substitution + word expansions, or when filtering possible completions as + part of programmable completion. + + 'nullglob' + If set, Bash allows filename patterns which match no files to + expand to a null string, rather than themselves. + + 'progcomp' + If set, the programmable completion facilities (*note + Programmable Completion::) are enabled. This option is + enabled by default. + + 'progcomp_alias' + If set, and programmable completion is enabled, Bash treats a + command name that doesn't have any completions as a possible + alias and attempts alias expansion. If it has an alias, Bash + attempts programmable completion using the command word + resulting from the expanded alias. + + 'promptvars' + If set, prompt strings undergo parameter expansion, command + substitution, arithmetic expansion, and quote removal after + being expanded as described below (*note Controlling the + Prompt::). This option is enabled by default. + + 'restricted_shell' + The shell sets this option if it is started in restricted mode + (*note The Restricted Shell::). The value may not be changed. + This is not reset when the startup files are executed, + allowing the startup files to discover whether or not a shell + is restricted. + + 'shift_verbose' + If this is set, the 'shift' builtin prints an error message + when the shift count exceeds the number of positional + parameters. + + 'sourcepath' + If set, the 'source' builtin uses the value of 'PATH' to find + the directory containing the file supplied as an argument. + This option is enabled by default. + + 'xpg_echo' + If set, the 'echo' builtin expands backslash-escape sequences + by default. + + +File: bashref.info, Node: Special Builtins, Prev: Modifying Shell Behavior, Up: Shell Builtin Commands + +4.4 Special Builtins +==================== + +For historical reasons, the POSIX standard has classified several +builtin commands as _special_. When Bash is executing in POSIX mode, +the special builtins differ from other builtin commands in three +respects: + + 1. Special builtins are found before shell functions during command + lookup. + + 2. If a special builtin returns an error status, a non-interactive + shell exits. + + 3. Assignment statements preceding the command stay in effect in the + shell environment after the command completes. + + When Bash is not executing in POSIX mode, these builtins behave no +differently than the rest of the Bash builtin commands. The Bash POSIX +mode is described in *note Bash POSIX Mode::. + + These are the POSIX special builtins: + break : . continue eval exec exit export readonly return set + shift trap unset + + +File: bashref.info, Node: Shell Variables, Next: Bash Features, Prev: Shell Builtin Commands, Up: Top + +5 Shell Variables +***************** + +* Menu: + +* Bourne Shell Variables:: Variables which Bash uses in the same way + as the Bourne Shell. +* Bash Variables:: List of variables that exist in Bash. + +This chapter describes the shell variables that Bash uses. Bash +automatically assigns default values to a number of variables. + + +File: bashref.info, Node: Bourne Shell Variables, Next: Bash Variables, Up: Shell Variables + +5.1 Bourne Shell Variables +========================== + +Bash uses certain shell variables in the same way as the Bourne shell. +In some cases, Bash assigns a default value to the variable. + +'CDPATH' + A colon-separated list of directories used as a search path for the + 'cd' builtin command. + +'HOME' + The current user's home directory; the default for the 'cd' builtin + command. The value of this variable is also used by tilde + expansion (*note Tilde Expansion::). + +'IFS' + A list of characters that separate fields; used when the shell + splits words as part of expansion. + +'MAIL' + If this parameter is set to a filename or directory name and the + 'MAILPATH' variable is not set, Bash informs the user of the + arrival of mail in the specified file or Maildir-format directory. + +'MAILPATH' + A colon-separated list of filenames which the shell periodically + checks for new mail. Each list entry can specify the message that + is printed when new mail arrives in the mail file by separating the + filename from the message with a '?'. When used in the text of the + message, '$_' expands to the name of the current mail file. + +'OPTARG' + The value of the last option argument processed by the 'getopts' + builtin. + +'OPTIND' + The index of the last option argument processed by the 'getopts' + builtin. + +'PATH' + A colon-separated list of directories in which the shell looks for + commands. 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. + +'PS1' + The primary prompt string. The default value is '\s-\v\$ '. *Note + Controlling the Prompt::, for the complete list of escape sequences + that are expanded before 'PS1' is displayed. + +'PS2' + The secondary prompt string. The default value is '> '. 'PS2' is + expanded in the same way as 'PS1' before being displayed. + + +File: bashref.info, Node: Bash Variables, Prev: Bourne Shell Variables, Up: Shell Variables + +5.2 Bash Variables +================== + +These variables are set or used by Bash, but other shells do not +normally treat them specially. + + A few variables used by Bash are described in different chapters: +variables for controlling the job control facilities (*note Job Control +Variables::). + +'_' + ($_, an underscore.) At shell startup, set to the 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 simple command executed in the foreground, + 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. + +'BASH' + The full pathname used to execute the current instance of Bash. + +'BASHOPTS' + A colon-separated list of enabled shell options. Each word in the + list is a valid argument for the '-s' option to the 'shopt' builtin + command (*note The Shopt Builtin::). The options appearing in + 'BASHOPTS' are those reported as 'on' by 'shopt'. 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 readonly. + +'BASHPID' + Expands to the process ID of the current Bash process. This + differs from '$$' under certain circumstances, such as subshells + that do not require Bash to be re-initialized. Assignments to + 'BASHPID' have no effect. If 'BASHPID' is unset, it loses its + special properties, even if it is subsequently reset. + +'BASH_ALIASES' + An associative array variable whose members correspond to the + internal list of aliases as maintained by the 'alias' builtin. + (*note Bourne Shell Builtins::). Elements added to this array + appear in the alias list; however, unsetting array elements + currently does not cause aliases to be removed from the alias list. + If 'BASH_ALIASES' is unset, it loses its special properties, even + if it is subsequently reset. + +'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 *note The Shopt Builtin:: for a description of + the 'extdebug' option to the 'shopt' builtin). Setting 'extdebug' + after the shell has started to execute a script, or referencing + this variable when 'extdebug' is not set, may result in + inconsistent values. + +'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 *note + The Shopt Builtin:: for a description of the 'extdebug' option to + the 'shopt' builtin). Setting 'extdebug' after the shell has + started to execute a script, or referencing this variable when + 'extdebug' is not set, may result in inconsistent values. + +'BASH_ARGV0' + When referenced, this variable expands to the name of the shell or + shell script (identical to '$0'; *Note Special Parameters::, for + the description of special parameter 0). Assignment to + 'BASH_ARGV0' causes the value assigned to also be assigned to '$0'. + If 'BASH_ARGV0' is unset, it loses its special properties, even if + it is subsequently reset. + +'BASH_CMDS' + An associative array variable whose members correspond to the + internal hash table of commands as maintained by the 'hash' builtin + (*note Bourne Shell Builtins::). Elements added to this array + appear in the hash table; however, unsetting array elements + currently does not cause command names to be removed from the hash + table. If 'BASH_CMDS' is unset, it loses its special properties, + even if it is subsequently reset. + +'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. If + 'BASH_COMMAND' is unset, it loses its special properties, even if + it is subsequently reset. + +'BASH_COMPAT' + The value is used to set the shell's compatibility level. *Note + Shell Compatibility Mode::, for a description of the various + compatibility levels and their effects. The value may be a decimal + number (e.g., 4.2) or an integer (e.g., 42) corresponding to the + desired compatibility level. If 'BASH_COMPAT' is unset or set to + the empty string, the compatibility level is set to the default for + the current version. If 'BASH_COMPAT' is set to a value that is + not one of the valid compatibility levels, the shell prints an + error message and sets the compatibility level to the default for + the current version. The valid values correspond to the + compatibility levels described below (*note Shell Compatibility + Mode::). For example, 4.2 and 42 are valid values that correspond + to the 'compat42' 'shopt' option and set the compatibility level to + 42. The current version is also a valid value. + +'BASH_ENV' + If this variable is set when Bash is invoked to execute a shell + script, its value is expanded and used as the name of a startup + file to read before executing the script. *Note Bash Startup + Files::. + +'BASH_EXECUTION_STRING' + The command argument to the '-c' invocation option. + +'BASH_LINENO' + An array variable whose members are the line numbers in source + files where each corresponding member of FUNCNAME was invoked. + '${BASH_LINENO[$i]}' is the line number in the source file + ('${BASH_SOURCE[$i+1]}') where '${FUNCNAME[$i]}' was called (or + '${BASH_LINENO[$i-1]}' if referenced within another shell + function). Use 'LINENO' to obtain the current line number. + +'BASH_LOADABLES_PATH' + A colon-separated list of directories in which the shell looks for + dynamically loadable builtins specified by the 'enable' command. + +'BASH_REMATCH' + An array variable whose members are assigned by the '=~' binary + operator to the '[[' conditional command (*note Conditional + Constructs::). 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. + +'BASH_SOURCE' + An array variable whose members are the source filenames where the + corresponding shell function names in the 'FUNCNAME' array variable + are defined. The shell function '${FUNCNAME[$i]}' is defined in + the file '${BASH_SOURCE[$i]}' and called from + '${BASH_SOURCE[$i+1]}' + +'BASH_SUBSHELL' + Incremented by one within each subshell or subshell environment + when the shell begins executing in that environment. The initial + value is 0. If 'BASH_SUBSHELL' is unset, it loses its special + properties, even if it is subsequently reset. + +'BASH_VERSINFO' + A readonly array variable (*note Arrays::) 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' + The version number of the current instance of Bash. + +'BASH_XTRACEFD' + If set to an integer corresponding to a valid file descriptor, Bash + will write the trace output generated when 'set -x' is enabled to + that file descriptor. This allows tracing output to be separated + from diagnostic and error messages. The file descriptor is closed + when 'BASH_XTRACEFD' is unset or assigned a new value. Unsetting + 'BASH_XTRACEFD' or assigning it the empty string causes the trace + output to be sent to the standard error. Note that setting + 'BASH_XTRACEFD' to 2 (the standard error file descriptor) and then + unsetting it will result in the standard error being closed. + +'CHILD_MAX' + Set the number of exited child status values for the shell to + remember. Bash will not allow this value to be decreased below a + POSIX-mandated minimum, and there is a maximum value (currently + 8192) that this may not exceed. The minimum value is + system-dependent. + +'COLUMNS' + Used by the 'select' command to determine the terminal width when + printing selection lists. Automatically set if the 'checkwinsize' + option is enabled (*note The Shopt Builtin::), or in an interactive + shell upon receipt of a 'SIGWINCH'. + +'COMP_CWORD' + An index into '${COMP_WORDS}' of the word containing the current + cursor position. This variable is available only in shell + functions invoked by the programmable completion facilities (*note + Programmable Completion::). + +'COMP_LINE' + The current command line. This variable is available only in shell + functions and external commands invoked by the programmable + completion facilities (*note Programmable Completion::). + +'COMP_POINT' + The index of the current cursor position relative to the beginning + of the current command. If the current cursor position is at the + end of the current command, the value of this variable is equal to + '${#COMP_LINE}'. This variable is available only in shell + functions and external commands invoked by the programmable + completion facilities (*note Programmable Completion::). + +'COMP_TYPE' + Set to an integer value corresponding to the type of completion + attempted that caused a completion function to be called: TAB, for + normal completion, '?', for listing completions after successive + tabs, '!', for listing alternatives on partial word completion, + '@', to list completions if the word is not unmodified, or '%', for + menu completion. This variable is available only in shell + functions and external commands invoked by the programmable + completion facilities (*note Programmable Completion::). + +'COMP_KEY' + The key (or final key of a key sequence) used to invoke the current + completion function. + +'COMP_WORDBREAKS' + The set of characters that the Readline library treats as word + separators when performing word completion. If 'COMP_WORDBREAKS' + is unset, it loses its special properties, even if it is + subsequently reset. + +'COMP_WORDS' + An array variable consisting of the individual words in the current + command line. The line is split into words as Readline would split + it, using 'COMP_WORDBREAKS' as described above. This variable is + available only in shell functions invoked by the programmable + completion facilities (*note Programmable Completion::). + +'COMPREPLY' + An array variable from which Bash reads the possible completions + generated by a shell function invoked by the programmable + completion facility (*note Programmable Completion::). Each array + element contains one possible completion. + +'COPROC' + An array variable created to hold the file descriptors for output + from and input to an unnamed coprocess (*note Coprocesses::). + +'DIRSTACK' + An array variable containing the current contents of the directory + stack. Directories appear in the stack in the order they are + displayed by the 'dirs' builtin. 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. + +'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. + +'ENV' + Expanded and executed similarlty to 'BASH_ENV' (*note Bash Startup + Files::) when an interactive shell is invoked in POSIX Mode (*note + Bash POSIX Mode::). + +'EPOCHREALTIME' + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch as a floating point value with + micro-second granularity (see the documentation for the C library + function TIME for the definition of Epoch). Assignments to + 'EPOCHREALTIME' are ignored. If 'EPOCHREALTIME' is unset, it loses + its special properties, even if it is subsequently reset. + +'EPOCHSECONDS' + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch (see the documentation for the C + library function TIME for the definition of Epoch). Assignments to + 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it loses + its special properties, even if it is subsequently reset. + +'EUID' + The numeric effective user id of the current user. This variable + is readonly. + +'EXECIGNORE' + A colon-separated list of shell patterns (*note Pattern Matching::) + defining the list of filenames to be ignored by command search + using 'PATH'. Files whose full pathnames match one of these + patterns are not considered executable files for the purposes of + completion and command execution via 'PATH' lookup. This does not + affect the behavior of the '[', 'test', and '[[' commands. Full + pathnames in the command hash table are not subject to + 'EXECIGNORE'. Use this variable to ignore shared library files + that have the executable bit set, but are not executable files. + The pattern matching honors the setting of the 'extglob' shell + option. + +'FCEDIT' + The editor used as a default by the '-e' option to the 'fc' builtin + command. + +'FIGNORE' + A colon-separated list of suffixes to ignore when performing + filename completion. A filename whose suffix matches one of the + entries in 'FIGNORE' is excluded from the list of matched + filenames. A sample value is '.o:~' + +'FUNCNAME' + An array variable containing the names of all shell functions + currently in the execution call stack. The element with index 0 is + the name of any currently-executing shell function. The + bottom-most element (the one with the highest index) is '"main"'. + This variable exists only when a shell function is executing. + Assignments to 'FUNCNAME' have no effect. If 'FUNCNAME' is unset, + it loses its special properties, even if it is subsequently reset. + + This variable can be used with 'BASH_LINENO' and 'BASH_SOURCE'. + Each element of 'FUNCNAME' has corresponding elements in + 'BASH_LINENO' and 'BASH_SOURCE' to describe the call stack. For + instance, '${FUNCNAME[$i]}' was called from the file + '${BASH_SOURCE[$i+1]}' at line number '${BASH_LINENO[$i]}'. The + 'caller' builtin displays the current call stack using this + information. + +'FUNCNEST' + If set to a numeric value greater than 0, defines a maximum + function nesting level. Function invocations that exceed this + nesting level will cause the current command to abort. + +'GLOBIGNORE' + A colon-separated list of patterns defining the set of file names + to be ignored by filename expansion. If a file name matched by a + filename expansion pattern also matches one of the patterns in + 'GLOBIGNORE', it is removed from the list of matches. The pattern + matching honors the setting of the 'extglob' shell option. + +'GROUPS' + An array variable containing the list of groups of which the + current user is a member. Assignments to 'GROUPS' have no effect. + If 'GROUPS' is unset, it loses its special properties, even if it + is subsequently reset. + +'histchars' + Up to three characters which control history expansion, quick + substitution, and tokenization (*note History Interaction::). The + first character is the HISTORY EXPANSION character, that is, the + character which signifies the start of a history expansion, + normally '!'. The second character is the character which + signifies 'quick substitution' when seen as the first character on + a line, normally '^'. 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, usually '#'. + 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. + +'HISTCMD' + The history number, or index in the history list, of the current + command. Assignments to 'HISTCMD' are ignored. If 'HISTCMD' is + unset, it loses its special properties, even if it is subsequently + reset. + +'HISTCONTROL' + A colon-separated list of values controlling how commands are saved + on the history list. If the list of values includes 'ignorespace', + lines which begin with a space character are not saved in the + history list. A value of 'ignoredups' causes lines which match 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 to which the command history is saved. The + default value is '~/.bash_history'. + +'HISTFILESIZE' + The maximum number of lines contained in the history file. When + this variable is assigned a value, the history file is truncated, + if necessary, to contain no more than that number of lines by + removing the oldest entries. The history file is also truncated to + this size after writing it when a shell exits. If the value is 0, + the history file is truncated to zero size. Non-numeric values and + numeric values less than zero inhibit truncation. The shell sets + the default value to the value of 'HISTSIZE' after reading any + startup files. + +'HISTIGNORE' + 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'. The pattern matching honors the setting of the + 'extglob' shell option. + + 'HISTIGNORE' subsumes the function of 'HISTCONTROL'. A pattern of + '&' is identical to 'ignoredups', and a pattern of '[ ]*' is + identical to 'ignorespace'. Combining these two patterns, + separating them with a colon, provides the functionality of + 'ignoreboth'. + +'HISTSIZE' + The maximum number of commands to remember on the history list. If + the value is 0, commands are not saved in the history list. + Numeric values less than zero result in every command being saved + on the history list (there is no limit). The shell sets the + default value to 500 after reading any startup files. + +'HISTTIMEFORMAT' + If this variable is set and not null, its value is used as a format + string for STRFTIME to print the time stamp associated with each + history entry displayed by the 'history' builtin. If this variable + is set, time stamps are written to the history file so they may be + preserved across shell sessions. This uses the history comment + character to distinguish timestamps from other history lines. + +'HOSTFILE' + Contains the name of a file in the same format as '/etc/hosts' that + should be read when the shell needs to complete a hostname. The + list of possible hostname completions may be changed while the + shell 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, or + does not name a readable file, Bash attempts to read '/etc/hosts' + to obtain the list of possible hostname completions. When + 'HOSTFILE' is unset, the hostname list is cleared. + +'HOSTNAME' + The name of the current host. + +'HOSTTYPE' + A string describing the machine Bash is running on. + +'IGNOREEOF' + Controls the action of the shell on receipt of an 'EOF' character + as the sole input. If set, the value denotes the number of + consecutive 'EOF' characters that can be read as the first + character on an input line before the shell will exit. If the + variable exists but does not have a numeric value, or has no value, + then the default is 10. If the variable does not exist, then 'EOF' + signifies the end of input to the shell. This is only in effect + for interactive shells. + +'INPUTRC' + The name of the Readline initialization file, overriding the + default of '~/.inputrc'. + +'INSIDE_EMACS' + If Bash finds this variable in the environment when the shell + starts, it assumes that the shell is running in an Emacs shell + buffer and may disable line editing depending on the value of + 'TERM'. + +'LANG' + Used to determine the locale category for any category not + specifically selected with a variable starting with 'LC_'. + +'LC_ALL' + This variable overrides the value of 'LANG' and any other 'LC_' + variable specifying a locale category. + +'LC_COLLATE' + This variable determines the collation order used when sorting the + results of filename expansion, and determines the behavior of range + expressions, equivalence classes, and collating sequences within + filename expansion and pattern matching (*note Filename + Expansion::). + +'LC_CTYPE' + This variable determines the interpretation of characters and the + behavior of character classes within filename expansion and pattern + matching (*note Filename Expansion::). + +'LC_MESSAGES' + This variable determines the locale used to translate double-quoted + strings preceded by a '$' (*note Locale Translation::). + +'LC_NUMERIC' + This variable determines the locale category used for number + formatting. + +'LC_TIME' + This variable determines the locale category used for data and time + formatting. + +'LINENO' + The line number in the script or shell function currently + executing. If 'LINENO' is unset, it loses its special properties, + even if it is subsequently reset. + +'LINES' + Used by the 'select' command to determine the column length for + printing selection lists. Automatically set if the 'checkwinsize' + option is enabled (*note The Shopt Builtin::), or in an interactive + shell upon receipt of a 'SIGWINCH'. + +'MACHTYPE' + A string that fully describes the system type on which Bash is + executing, in the standard GNU CPU-COMPANY-SYSTEM format. + +'MAILCHECK' + How often (in seconds) that the shell should check for mail in the + files specified in the 'MAILPATH' or 'MAIL' variables. The default + is 60 seconds. When it is time to check 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. + +'MAPFILE' + An array variable created to hold the text read by the 'mapfile' + builtin when no variable name is supplied. + +'OLDPWD' + The previous working directory as set by the 'cd' builtin. + +'OPTERR' + If set to the value 1, Bash displays error messages generated by + the 'getopts' builtin command. + +'OSTYPE' + A string describing the operating system Bash is running on. + +'PIPESTATUS' + An array variable (*note Arrays::) containing a list of exit status + values from the processes in the most-recently-executed foreground + pipeline (which may contain only a single command). + +'POSIXLY_CORRECT' + If this variable is in the environment when Bash starts, the shell + enters POSIX mode (*note Bash POSIX Mode::) before reading the + startup files, as if the '--posix' invocation option had been + supplied. If it is set while the shell is running, Bash enables + POSIX mode, as if the command + set -o posix + had been executed. When the shell enters POSIX mode, it sets this + variable if it was not already set. + +'PPID' + The process ID of the shell's parent process. This variable is + readonly. + +'PROMPT_COMMAND' + If this variable is set, and is an array, the value of each set + element is interpreted as a command to execute before printing the + primary prompt ('$PS1'). If this is set but not an array variable, + its value is used as a command to execute instead. + +'PROMPT_DIRTRIM' + If set to a number greater than zero, the value is used as the + number of trailing directory components to retain when expanding + the '\w' and '\W' prompt string escapes (*note Controlling the + Prompt::). Characters removed are replaced with an ellipsis. + +'PS0' + The value of this parameter is expanded like 'PS1' and displayed by + interactive shells after reading a command and before the command + is executed. + +'PS3' + The value of this variable is used as the prompt for the 'select' + command. If this variable is not set, the 'select' command prompts + with '#? ' + +'PS4' + The value of this parameter is expanded like PS1 and the expanded + value is the prompt printed before the command line is echoed when + the '-x' option is set (*note The Set Builtin::). The first + character of the expanded value is replicated multiple times, as + necessary, to indicate multiple levels of indirection. The default + is '+ '. + +'PWD' + The current working directory as set by the 'cd' builtin. + +'RANDOM' + Each time this parameter is referenced, it expands to a random + integer between 0 and 32767. Assigning a value to this variable + seeds the random number generator. If 'RANDOM' is unset, it loses + its special properties, even if it is subsequently reset. + +'READLINE_LINE' + The contents of the Readline line buffer, for use with 'bind -x' + (*note Bash Builtins::). + +'READLINE_MARK' + The position of the MARK (saved insertion point) in the Readline + line buffer, for use with 'bind -x' (*note Bash Builtins::). The + characters between the insertion point and the mark are often + called the REGION. + +'READLINE_POINT' + The position of the insertion point in the Readline line buffer, + for use with 'bind -x' (*note Bash Builtins::). + +'REPLY' + The default variable for the 'read' builtin. + +'SECONDS' + This variable expands to the number of seconds since the shell was + started. Assignment to this variable resets the count to the value + assigned, and the expanded value becomes the value assigned plus + the number of seconds since the assignment. The number of seconds + at shell invocation and the current time is always determined by + querying the system clock. If 'SECONDS' is unset, it loses its + special properties, even if it is subsequently reset. + +'SHELL' + This environment variable expands to the full pathname to the + shell. If it is not set when the shell starts, Bash assigns to it + the full pathname of the current user's login shell. + +'SHELLOPTS' + A colon-separated list of enabled shell options. Each word in the + list is a valid argument for the '-o' option to the 'set' builtin + command (*note The Set Builtin::). The options appearing in + 'SHELLOPTS' are those reported as 'on' by 'set -o'. If this + variable is in the environment when Bash starts up, each shell + option in the list will be enabled before reading any startup + files. This variable is readonly. + +'SHLVL' + Incremented by one each time a new instance of Bash is started. + This is intended to be a count of how deeply your Bash shells are + nested. + +'SRANDOM' + This variable expands to a 32-bit pseudo-random number each time it + is referenced. The random number generator is not linear on + systems that support '/dev/urandom' or 'arc4random', so each + returned number has no relationship to the numbers preceding it. + The random number generator cannot be seeded, so assignments to + this variable have no effect. If 'SRANDOM' is unset, it loses its + special properties, even if it is subsequently reset. + +'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 + $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' + 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 (*note Bash Builtins::). + The 'select' command (*note Conditional Constructs::) 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 a line of input after issuing the primary + prompt. Bash terminates after waiting for that number of seconds + if a complete line of input does not arrive. + +'TMPDIR' + If set, Bash uses its value as the name of a directory in which + Bash creates temporary files for the shell's use. + +'UID' + The numeric real user id of the current user. This variable is + readonly. + + +File: bashref.info, Node: Bash Features, Next: Job Control, Prev: Shell Variables, Up: Top + +6 Bash Features +*************** + +This chapter describes features unique to Bash. + +* Menu: + +* Invoking Bash:: Command line options that you can give + to Bash. +* Bash Startup Files:: When and how Bash executes scripts. +* Interactive Shells:: What an interactive shell is. +* Bash Conditional Expressions:: Primitives used in composing expressions for + the 'test' builtin. +* Shell Arithmetic:: Arithmetic on shell variables. +* Aliases:: Substituting one command for another. +* Arrays:: Array Variables. +* The Directory Stack:: History of visited directories. +* Controlling the Prompt:: Customizing the various prompt strings. +* The Restricted Shell:: A more controlled mode of shell execution. +* Bash POSIX Mode:: Making Bash behave more closely to what + the POSIX standard specifies. +* Shell Compatibility Mode:: How Bash supports behavior that was present + in earlier versions and has changed. + + +File: bashref.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash Features + +6.1 Invoking Bash +================= + + bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] [ARGUMENT ...] + bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] -c STRING [ARGUMENT ...] + bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] + [-O SHOPT_OPTION] [ARGUMENT ...] + + All of the single-character options used with the 'set' builtin +(*note The Set Builtin::) can be used as options when the shell is +invoked. In addition, there are several multi-character options that +you can use. These options must appear on the command line before the +single-character options to be recognized. + +'--debugger' + Arrange for the debugger profile to be executed before the shell + starts. Turns on extended debugging mode (see *note The Shopt + Builtin:: for a description of the 'extdebug' option to the 'shopt' + builtin). + +'--dump-po-strings' + A list of all double-quoted strings preceded by '$' is printed on + the standard output in the GNU 'gettext' PO (portable object) file + format. Equivalent to '-D' except for the output format. + +'--dump-strings' + Equivalent to '-D'. + +'--help' + Display a usage message on standard output and exit successfully. + +'--init-file FILENAME' +'--rcfile FILENAME' + Execute commands from FILENAME (instead of '~/.bashrc') in an + interactive shell. + +'--login' + Equivalent to '-l'. + +'--noediting' + Do not use the GNU Readline library (*note Command Line Editing::) + to read command lines when the shell is interactive. + +'--noprofile' + Don't load the system-wide startup file '/etc/profile' or any of + the personal initialization files '~/.bash_profile', + '~/.bash_login', or '~/.profile' when Bash is invoked as a login + shell. + +'--norc' + Don't read the '~/.bashrc' initialization file in an interactive + shell. This 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. This is intended to + make Bash behave as a strict superset of that standard. *Note Bash + POSIX Mode::, for a description of the Bash POSIX mode. + +'--restricted' + Make the shell a restricted shell (*note The Restricted Shell::). + +'--verbose' + Equivalent to '-v'. Print shell input lines as they're read. + +'--version' + Show version information for this instance of Bash on the standard + output and exit successfully. + + There are several single-character options that may be supplied at +invocation which are not available with the 'set' builtin. + +'-c' + Read and execute commands from the first non-option argument + COMMAND_STRING, then exit. If there are arguments after the + COMMAND_STRING, the first argument is assigned to '$0' and any + remaining arguments are assigned to the positional parameters. The + assignment to '$0' sets the name of the shell, which is used in + warning and error messages. + +'-i' + Force the shell to run interactively. Interactive shells are + described in *note Interactive Shells::. + +'-l' + Make this shell act as if it had been directly invoked by login. + When the shell is interactive, this is equivalent to starting a + login shell with 'exec -l bash'. When the shell is not + interactive, the login shell startup files will be executed. 'exec + bash -l' or 'exec bash --login' will replace the current shell with + a Bash login shell. *Note Bash Startup Files::, for a description + of the special behavior of a login shell. + +'-r' + Make the shell a restricted shell (*note The Restricted Shell::). + +'-s' + If this 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 or when reading input through a pipe. + +'-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' + (*note Locale Translation::). 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 (*note The Shopt Builtin::). 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. + + A _login_ shell is one whose first character of argument zero is '-', +or one invoked with the '--login' option. + + An _interactive_ shell is one started without non-option arguments, +unless '-s' is specified, without specifying the '-c' option, and whose +input and output are both connected to terminals (as determined by +'isatty(3)'), or one started with the '-i' option. *Note Interactive +Shells::, for more information. + + 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 (*note Shell Scripts::). +When 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. + + +File: bashref.info, Node: Bash Startup Files, Next: Interactive Shells, Prev: Invoking Bash, Up: Bash Features + +6.2 Bash Startup Files +====================== + +This section describes how Bash executes its startup files. If any of +the files exist but cannot be read, Bash reports an error. Tildes are +expanded in filenames as described above under Tilde Expansion (*note +Tilde Expansion::). + + Interactive shells are described in *note Interactive Shells::. + +Invoked as an interactive login shell, or with '--login' +........................................................ + +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 an interactive login shell exits, or a non-interactive login +shell executes the 'exit' builtin command, Bash reads and executes +commands from the file '~/.bash_logout', if it exists. + +Invoked as an interactive non-login shell +......................................... + +When an interactive shell that is not a login shell is started, Bash +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'. + + So, typically, your '~/.bash_profile' contains the line + if [ -f ~/.bashrc ]; then . ~/.bashrc; fi +after (or before) any login-specific initializations. + +Invoked non-interactively +......................... + +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 +filename. + + As noted above, if a non-interactive shell is invoked with the +'--login' option, Bash attempts to read and execute commands from the +login shell startup files. + +Invoked with name 'sh' +...................... + +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 as 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. + +Invoked in POSIX mode +..................... + +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. + +Invoked by remote shell daemon +.............................. + +Bash attempts to determine when it is being run with its standard input +connected to a network connection, as when executed by the remote shell +daemon, usually 'rshd', or the secure shell daemon 'sshd'. If Bash +determines it is being run in this fashion, 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 neither 'rshd' nor 'sshd' generally invoke +the shell with those options or allow them to be specified. + +Invoked with unequal effective and real UID/GIDs +................................................ + +If Bash is started with the effective user (group) id not equal to the +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', 'BASHOPTS', 'CDPATH', and 'GLOBIGNORE' variables, if +they appear in the environment, are 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. + + +File: bashref.info, Node: Interactive Shells, Next: Bash Conditional Expressions, Prev: Bash Startup Files, Up: Bash Features + +6.3 Interactive Shells +====================== + +* Menu: + +* What is an Interactive Shell?:: What determines whether a shell is Interactive. +* Is this Shell Interactive?:: How to tell if a shell is interactive. +* Interactive Shell Behavior:: What changes in a interactive shell? + + +File: bashref.info, Node: What is an Interactive Shell?, Next: Is this Shell Interactive?, Up: Interactive Shells + +6.3.1 What is an Interactive Shell? +----------------------------------- + +An interactive shell is one started without non-option arguments, unless +'-s' is specified, without specifying the '-c' option, and whose input +and error output are both connected to terminals (as determined by +'isatty(3)'), or one started with the '-i' option. + + An interactive shell generally reads from and writes to a user's +terminal. + + The '-s' invocation option may be used to set the positional +parameters when an interactive shell is started. + + +File: bashref.info, Node: Is this Shell Interactive?, Next: Interactive Shell Behavior, Prev: What is an Interactive Shell?, Up: Interactive Shells + +6.3.2 Is this Shell Interactive? +-------------------------------- + +To determine within a startup script whether or not Bash is running +interactively, test the value of the '-' special parameter. It contains +'i' when the shell is interactive. For example: + + case "$-" in + *i*) echo This shell is interactive ;; + *) echo This shell is not interactive ;; + esac + + Alternatively, startup scripts may examine the variable 'PS1'; it is +unset in non-interactive shells, and set in interactive shells. Thus: + + if [ -z "$PS1" ]; then + echo This shell is not interactive + else + echo This shell is interactive + fi + + +File: bashref.info, Node: Interactive Shell Behavior, Prev: Is this Shell Interactive?, Up: Interactive Shells + +6.3.3 Interactive Shell Behavior +-------------------------------- + +When the shell is running interactively, it changes its behavior in +several ways. + + 1. Startup files are read and executed as described in *note Bash + Startup Files::. + + 2. Job Control (*note Job Control::) is enabled by default. When job + control is in effect, Bash ignores the keyboard-generated job + control signals 'SIGTTIN', 'SIGTTOU', and 'SIGTSTP'. + + 3. Bash expands and displays 'PS1' before reading the first line of a + command, and expands and displays 'PS2' before reading the second + and subsequent lines of a multi-line command. Bash expands and + displays 'PS0' after it reads a command but before executing it. + See *note Controlling the Prompt::, for a complete list of prompt + string escape sequences. + + 4. Bash executes the values of the set elements of the + 'PROMPT_COMMANDS' array variable as commands before printing the + primary prompt, '$PS1' (*note Bash Variables::). + + 5. Readline (*note Command Line Editing::) is used to read commands + from the user's terminal. + + 6. Bash inspects the value of the 'ignoreeof' option to 'set -o' + instead of exiting immediately when it receives an 'EOF' on its + standard input when reading a command (*note The Set Builtin::). + + 7. Command history (*note Bash History Facilities::) and history + expansion (*note History Interaction::) are enabled by default. + Bash will save the command history to the file named by '$HISTFILE' + when a shell with history enabled exits. + + 8. Alias expansion (*note Aliases::) is performed by default. + + 9. In the absence of any traps, Bash ignores 'SIGTERM' (*note + Signals::). + + 10. In the absence of any traps, 'SIGINT' is caught and handled (*note + Signals::). 'SIGINT' will interrupt some shell builtins. + + 11. An interactive login shell sends a 'SIGHUP' to all jobs on exit if + the 'huponexit' shell option has been enabled (*note Signals::). + + 12. The '-n' invocation option is ignored, and 'set -n' has no effect + (*note The Set Builtin::). + + 13. Bash will check for mail periodically, depending on the values of + the 'MAIL', 'MAILPATH', and 'MAILCHECK' shell variables (*note Bash + Variables::). + + 14. Expansion errors due to references to unbound shell variables + after 'set -u' has been enabled will not cause the shell to exit + (*note The Set Builtin::). + + 15. The shell will not exit on expansion errors caused by VAR being + unset or null in '${VAR:?WORD}' expansions (*note Shell Parameter + Expansion::). + + 16. Redirection errors encountered by shell builtins will not cause + the shell to exit. + + 17. When running in POSIX mode, a special builtin returning an error + status will not cause the shell to exit (*note Bash POSIX Mode::). + + 18. A failed 'exec' will not cause the shell to exit (*note Bourne + Shell Builtins::). + + 19. Parser syntax errors will not cause the shell to exit. + + 20. Simple spelling correction for directory arguments to the 'cd' + builtin is enabled by default (see the description of the 'cdspell' + option to the 'shopt' builtin in *note The Shopt Builtin::). + + 21. The shell will check the value of the 'TMOUT' variable and exit if + a command is not read within the specified number of seconds after + printing '$PS1' (*note Bash Variables::). + + +File: bashref.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic, Prev: Interactive Shells, Up: Bash Features + +6.4 Bash Conditional Expressions +================================ + +Conditional expressions are used by the '[[' compound command and the +'test' and '[' builtin commands. The 'test' and '[' commands determine +their behavior based on the number of arguments; see the descriptions of +those commands for any other command-specific actions. + + Expressions may be unary or binary, and are formed from the following +primaries. Unary expressions are often used to examine the status of a +file. There are string operators and numeric comparison operators as +well. Bash handles several filenames specially when they are used in +expressions. If the operating system on which Bash is running provides +these special files, Bash will use them; otherwise it will emulate them +internally with this behavior: If the 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. + + When used with '[[', the '<' and '>' operators sort lexicographically +using the current locale. The 'test' command uses ASCII ordering. + + 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 its set-group-id bit is set. + +'-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. + +'-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. + +'-N FILE' + True if FILE exists and has been modified since it was last read. + +'-O FILE' + True if FILE exists and is owned by the effective user id. + +'-S FILE' + True if FILE exists and is a socket. + +'FILE1 -ef FILE2' + True if FILE1 and FILE2 refer to the same device and inode numbers. + +'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. + +'-o OPTNAME' + True if the shell option OPTNAME is enabled. The list of options + appears in the description of the '-o' option to the 'set' builtin + (*note The Set Builtin::). + +'-v VARNAME' + True if the shell variable VARNAME is set (has been assigned a + value). + +'-R VARNAME' + True if the shell variable VARNAME is set and is a name reference. + +'-z STRING' + True if the length of STRING is zero. + +'-n STRING' +'STRING' + True if the length of STRING is non-zero. + +'STRING1 == STRING2' +'STRING1 = STRING2' + True if the strings are equal. When used with the '[[' command, + this performs pattern matching as described above (*note + Conditional Constructs::). + + '=' should be used with the 'test' command for POSIX conformance. + +'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. + +'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. When used with the '[[' command, + ARG1 and ARG2 are evaluated as arithmetic expressions (*note Shell + Arithmetic::). + + +File: bashref.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Conditional Expressions, Up: Bash Features + +6.5 Shell Arithmetic +==================== + +The shell allows arithmetic expressions to be evaluated, as one of the +shell expansions or by using the '((' compound command, the 'let' +builtin, or the '-i' option to the 'declare' builtin. + + 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. + + Integer constants follow the C language definition, without suffixes +or character constants. 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 the optional BASE is a decimal +number between 2 and 64 representing the arithmetic base, and N is a +number in that base. If BASE'#' is omitted, then base 10 is used. When +specifying N, if a non-digit is required, 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. + + +File: bashref.info, Node: Aliases, Next: Arrays, Prev: Shell Arithmetic, Up: Bash Features + +6.6 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. + + 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 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, as +in 'csh'. If arguments are needed, a shell function should be used +(*note Shell Functions::). + + Aliases are not expanded when the shell is not interactive, unless +the 'expand_aliases' shell option is set using 'shopt' (*note The Shopt +Builtin::). + + The rules concerning the definition and use of aliases are somewhat +confusing. Bash always reads at least one complete line of input, and +all lines that make up a compound command, before executing any of the +commands on that line or the compound command. 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 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, shell functions are preferred over aliases. + + +File: bashref.info, Node: Arrays, Next: The Directory Stack, Prev: Aliases, Up: Bash Features + +6.7 Arrays +========== + +Bash provides one-dimensional indexed and associative array variables. +Any variable may be used as an indexed 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. Indexed arrays are referenced using integers (including +arithmetic expressions (*note Shell Arithmetic::)) and are zero-based; +associative arrays use arbitrary strings. Unless otherwise noted, +indexed array indices must be non-negative integers. + + An indexed array is created automatically if any variable is assigned +to using the syntax + NAME[SUBSCRIPT]=VALUE + +The SUBSCRIPT is treated as an arithmetic expression that must evaluate +to a number. To explicitly declare an array, use + declare -a NAME +The syntax + declare -a NAME[SUBSCRIPT] +is also accepted; the SUBSCRIPT is ignored. + +Associative arrays are created using + declare -A NAME + + 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 VALUE2 ... ) +where each VALUE may be of the form '[SUBSCRIPT]='STRING. Indexed array +assignments do not require anything but STRING. When assigning to +indexed arrays, if the optional subscript is 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. + + Each VALUE in the list undergoes all the shell expansions described +above (*note Shell Expansions::). + + When assigning to an associative array, the words in a compound +assignment may be either assignment statements, for which the subscript +is required, or a list of words that is interpreted as a sequence of +alternating keys and values: NAME=(KEY1 VALUE1 KEY2 VALUE2 ... ). These +are treated identically to NAME=( [KEY1]=VALUE1 [KEY2]=VALUE2 ... ). +The first word in the list determines how the remaining words are +interpreted; all assignments in a list must be of the same type. When +using key/value pairs, the keys may not be missing or empty; a final +missing value is treated like the empty string. + + This syntax is also accepted by the 'declare' builtin. Individual +array elements may be assigned to using the 'NAME[SUBSCRIPT]=VALUE' +syntax introduced above. + + When assigning to an indexed array, if NAME is subscripted by a +negative number, that number is interpreted as relative to one greater +than the maximum index of NAME, so negative indices count back from the +end of the array, and an index of -1 references the last element. + + Any element of an array may be referenced using '${NAME[SUBSCRIPT]}'. +The braces are required to avoid conflicts with the shell's filename +expansion operators. If the SUBSCRIPT is '@' or '*', the word expands +to all members of the array 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' 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 '*'. '${#NAME[SUBSCRIPT]}' expands to the length of +'${NAME[SUBSCRIPT]}'. If SUBSCRIPT is '@' or '*', the expansion is the +number of elements in the array. If the SUBSCRIPT used to reference an +element of an indexed array evaluates to a number less than zero, it is +interpreted as relative to one greater than the maximum index of the +array, so negative indices count back from the end of the array, and an +index of -1 refers to the last element. + + Referencing an array variable without a subscript is equivalent to +referencing with a subscript of 0. Any reference to a variable using a +valid subscript is legal, and 'bash' will create an array if necessary. + + An array variable is considered set if a subscript has been assigned +a value. The null string is a valid value. + + It is possible to obtain the keys (indices) of an array as well as +the values. ${!NAME[@]} and ${!NAME[*]} expand to the indices assigned +in array variable NAME. The treatment when in double quotes is similar +to the expansion of the special parameters '@' and '*' within double +quotes. + + The 'unset' builtin is used to destroy arrays. 'unset +NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT. +Negative subscripts to indexed arrays are interpreted as described +above. Unsetting the last element of an array variable does not unset +the variable. 'unset NAME', where NAME is an array, removes the entire +array. A subscript of '*' or '@' also removes the entire array. + + When using a variable name with a subscript as an argument to a +command, such as with 'unset', without using the word expansion syntax +described above, the argument is subject to the shell's filename +expansion. If filename expansion is not desired, the argument should be +quoted. + + The 'declare', 'local', and 'readonly' builtins each accept a '-a' +option to specify an indexed array and a '-A' option to specify an +associative array. If both options are supplied, '-A' takes precedence. +The 'read' builtin accepts a '-a' option to assign a list of words read +from the standard input to an array, and can read values from the +standard input into individual array elements. The 'set' and 'declare' +builtins display array values in a way that allows them to be reused as +input. + + +File: bashref.info, Node: The Directory Stack, Next: Controlling the Prompt, Prev: Arrays, Up: Bash Features + +6.8 The Directory Stack +======================= + +* Menu: + +* Directory Stack Builtins:: Bash builtin commands to manipulate + the directory stack. + +The directory stack is a list of recently-visited directories. The +'pushd' builtin adds directories to the stack as it changes the current +directory, and the 'popd' builtin removes specified directories from the +stack and changes the current directory to the directory removed. The +'dirs' builtin displays the contents of the directory stack. The +current directory is always the "top" of the directory stack. + + The contents of the directory stack are also visible as the value of +the 'DIRSTACK' shell variable. + + +File: bashref.info, Node: Directory Stack Builtins, Up: The Directory Stack + +6.8.1 Directory Stack Builtins +------------------------------ + +'dirs' + dirs [-clpv] [+N | -N] + + Display the list of currently remembered directories. Directories + are added to the list with the 'pushd' command; the 'popd' command + removes directories from the list. The current directory is always + the first directory in the stack. + + '-c' + Clears the directory stack by deleting all of the elements. + '-l' + Produces a listing using full pathnames; the default listing + format uses a tilde to denote the home directory. + '-p' + Causes 'dirs' to print the directory stack with one entry per + line. + '-v' + Causes 'dirs' to print the directory stack with one entry per + line, prefixing each entry with its index in the stack. + '+N' + Displays the Nth directory (counting from the left of the list + printed by 'dirs' when invoked without options), starting with + zero. + '-N' + Displays the Nth directory (counting from the right of the + list printed by 'dirs' when invoked without options), starting + with zero. + +'popd' + popd [-n] [+N | -N] + + When no arguments are given, 'popd' removes the top directory from + the stack and performs a 'cd' to the new top directory. The + elements are numbered from 0 starting at the first directory listed + with 'dirs'; that is, 'popd' is equivalent to 'popd +0'. + + '-n' + Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is + manipulated. + '+N' + Removes the Nth directory (counting from the left of the list + printed by 'dirs'), starting with zero. + '-N' + Removes the Nth directory (counting from the right of the list + printed by 'dirs'), starting with zero. + +'pushd' + pushd [-n] [+N | -N | DIR] + + Save the current directory on the top of the directory stack and + then 'cd' to DIR. With no arguments, 'pushd' exchanges the top two + directories and makes the new top the current directory. + + '-n' + Suppresses the normal change of directory when rotating or + adding directories to the stack, so that only the stack is + manipulated. + '+N' + Brings the Nth directory (counting from the left of the list + printed by 'dirs', starting with zero) to the top of the list + by rotating the stack. + '-N' + Brings the Nth directory (counting from the right of the list + printed by 'dirs', starting with zero) to the top of the list + by rotating the stack. + 'DIR' + Makes DIR be the top of the stack, making it the new current + directory as if it had been supplied as an argument to the + 'cd' builtin. + + +File: bashref.info, Node: Controlling the Prompt, Next: The Restricted Shell, Prev: The Directory Stack, Up: Bash Features + +6.9 Controlling the Prompt +========================== + +Bash examines the value of the array variable 'PROMPT_COMMANDS' just +before printing each primary prompt. If any elements in +'PROMPT_COMMANDS' are set and non-null, Bash executes each value, in +numeric order, just as if it had been typed on the command line. + + In addition, the following table describes the special characters +which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4': + +'\a' + A bell character. +'\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 escape character. +'\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' + A newline. +'\r' + A carriage return. +'\s' + The name of the shell, the basename of '$0' (the portion following + the final slash). +'\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. +'\A' + The 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 + patchlevel (e.g., 2.00.0) +'\w' + The current working directory, with '$HOME' abbreviated with a + tilde (uses the '$PROMPT_DIRTRIM' variable). +'\W' + The basename of '$PWD', with '$HOME' abbreviated with a tilde. +'\!' + The history number of this command. +'\#' + The command number of this command. +'\$' + If the effective uid is 0, '#', otherwise '$'. +'\NNN' + The character whose ASCII code is the octal value NNN. +'\\' + A backslash. +'\[' + Begin a sequence of non-printing characters. This 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 (*note Bash History +Facilities::), 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 (*note The Shopt +Builtin::). This can have unwanted side effects if escaped portions of +the string appear within command substitution or contain characters +special to word expansion. + + +File: bashref.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Controlling the Prompt, Up: Bash Features + +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', 'HISTFILE', + '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 + 'history' 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. + + The restricted shell mode is only one component of a useful +restricted environment. It should be accompanied by setting 'PATH' to a +value that allows execution of only a few verified commands (commands +that allow shell escapes are particularly vulnerable), leaving the user +in a non-writable directory other than his home directory after login, +not allowing the restricted shell to execute shell scripts, and cleaning +the environment of variables that cause some commands to modify their +behavior (e.g., 'VISUAL' or 'PAGER'). + + Modern systems provide more secure ways to implement a restricted +environment, such as 'jails', 'zones', or 'containers'. + + +File: bashref.info, Node: Bash POSIX Mode, Next: Shell Compatibility Mode, Prev: The Restricted Shell, Up: Bash Features + +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 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. Bash ensures that the 'POSIXLY_CORRECT' variable is set. + + 2. 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'. + + 3. Bash will not insert a command without the execute bit set into the + command hash table, even if it returns it as a (last-ditch) result + from a '$PATH' search. + + 4. The message printed by the job control code and builtins when a job + exits with a non-zero status is 'Done(status)'. + + 5. The message printed by the job control code and builtins when a job + is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example, + 'SIGTSTP'. + + 6. Alias expansion is always enabled, even in non-interactive shells. + + 7. Reserved words appearing in a context where reserved words are + recognized do not undergo alias expansion. + + 8. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number + and '!!' to '!' are enabled, and parameter expansion is performed + on the values of 'PS1' and 'PS2' regardless of the setting of the + 'promptvars' option. + + 9. The POSIX startup files are executed ('$ENV') rather than the + normal Bash files. + + 10. Tilde expansion is only performed on assignments preceding a + command name, rather than on all assignment statements on the line. + + 11. The default history file is '~/.sh_history' (this is the default + value of '$HISTFILE'). + + 12. Redirection operators do not perform filename expansion on the + word in the redirection unless the shell is interactive. + + 13. Redirection operators do not perform word splitting on the word in + the redirection. + + 14. 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. + + 15. Function names may not be the same as one of the POSIX special + builtins. + + 16. POSIX special builtins are found before shell functions during + command lookup. + + 17. When printing shell function definitions (e.g., by 'type'), Bash + does not print the 'function' keyword. + + 18. Literal tildes that appear as the first character in elements of + the 'PATH' variable are not expanded as described above under *note + Tilde Expansion::. + + 19. The 'time' reserved word may be used by itself as a command. When + used in this way, it displays timing statistics for the shell and + its completed children. The 'TIMEFORMAT' variable controls the + format of the timing information. + + 20. When parsing and expanding a ${...} expansion that appears within + double quotes, single quotes are no longer special and cannot be + used to quote a closing brace or other special character, unless + the operator is one of those defined to perform pattern removal. + In this case, they do not have to appear as matched pairs. + + 21. The parser does not recognize 'time' as a reserved word if the + next token begins with a '-'. + + 22. The '!' character does not introduce history expansion within a + double-quoted string, even if the 'histexpand' option is enabled. + + 23. If a POSIX special builtin returns an error status, a + non-interactive shell exits. The fatal errors are those listed in + the POSIX standard, and include things like passing incorrect + options, redirection errors, variable assignment errors for + assignments preceding the command name, and so on. + + 24. 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. + + 25. A non-interactive shell exits with an error status if a variable + assignment error occurs in an assignment statement preceding a + special builtin, but not with any other simple command. + + 26. 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. + + 27. Non-interactive shells exit if FILENAME in '.' FILENAME is not + found. + + 28. Non-interactive shells exit if a syntax error in an arithmetic + expansion results in an invalid expression. + + 29. Non-interactive shells exit if a parameter expansion error occurs. + + 30. Non-interactive shells exit if there is a syntax error in a script + read with the '.' or 'source' builtins, or in a string processed by + the 'eval' builtin. + + 31. While variable indirection is available, it may not be applied to + the '#' and '?' special parameters. + + 32. When expanding the '*' special parameter in a pattern context + where the expansion is double-quoted does not treat the '$*' as if + it were double-quoted. + + 33. Assignment statements preceding POSIX special builtins persist in + the shell environment after the builtin completes. + + 34. The 'command' builtin does not prevent builtins that take + assignment statements as arguments from expanding them as + assignment statements; when not in POSIX mode, assignment builtins + lose their assignment statement expansion properties when preceded + by 'command'. + + 35. 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. + + 36. The output of 'kill -l' prints all the signal names on a single + line, separated by spaces, without the 'SIG' prefix. + + 37. The 'kill' builtin does not accept signal names with a 'SIG' + prefix. + + 38. The 'export' and 'readonly' builtin commands display their output + in the format required by POSIX. + + 39. The 'trap' builtin displays signal names without the leading + 'SIG'. + + 40. 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. + + 41. 'trap -p' displays signals whose dispositions are set to SIG_DFL + and those that were ignored when the shell started. + + 42. The '.' and 'source' builtins do not search the current directory + for the filename argument if it is not found by searching 'PATH'. + + 43. Enabling POSIX mode has the effect of setting the + 'inherit_errexit' option, so subshells spawned to execute command + substitutions inherit the value of the '-e' option from the parent + shell. When the 'inherit_errexit' option is not enabled, Bash + clears the '-e' option in such subshells. + + 44. Enabling POSIX mode has the effect of setting the 'shift_verbose' + option, so numeric arguments to 'shift' that exceed the number of + positional parameters will result in an error message. + + 45. When the 'alias' builtin displays alias definitions, it does not + display them with a leading 'alias ' unless the '-p' option is + supplied. + + 46. When the 'set' builtin is invoked without options, it does not + display shell function names and definitions. + + 47. 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. + + 48. 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. + + 49. When the 'cd' builtin cannot change a directory because the length + of the pathname constructed from '$PWD' and the directory name + supplied as an argument exceeds PATH_MAX when all symbolic links + are expanded, 'cd' will fail instead of attempting to use only the + supplied directory name. + + 50. 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. + + 51. When listing the history, the 'fc' builtin does not include an + indication of whether or not a history entry has been modified. + + 52. The default editor used by 'fc' is 'ed'. + + 53. 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'. + + 54. The 'vi' editing mode will invoke the 'vi' editor directly when + the 'v' command is run, instead of checking '$VISUAL' and + '$EDITOR'. + + 55. 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. + + 56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + and '-f' options. + + 57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + interrupt the 'wait' builtin and cause it to return immediately. + The trap command is run once for each child that exits. + + 58. The 'read' builtin may be interrupted by a signal for which a trap + has been set. If Bash receives a trapped signal while executing + 'read', the trap handler executes and 'read' returns an exit status + greater than 128. + + 59. Bash removes an exited background process's status from the list + of such statuses after the 'wait' builtin is used to obtain it. + + There is other POSIX 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::). + + +File: bashref.info, Node: Shell Compatibility Mode, Prev: Bash POSIX Mode, Up: Bash Features + +6.12 Shell Compatibility Mode +============================= + +Bash-4.0 introduced the concept of a 'shell compatibility level', +specified as a set of options to the shopt builtin ('compat31', +'compat32', 'compat40', 'compat41', and so on). There is only one +current compatibility level - each option is mutually exclusive. The +compatibility level is intended to allow users to select behavior from +previous versions that is incompatible with newer versions while they +migrate scripts to use current features and behavior. It's intended to +be a temporary solution. + + This section does not mention behavior that is standard for a +particular version (e.g., setting 'compat32' means that quoting the rhs +of the regexp matching operator quotes special regexp characters in the +word, which is default behavior in bash-3.2 and above). + + If a user enables, say, 'compat32', it may affect the behavior of +other compatibility levels up to and including the current compatibility +level. The idea is that each compatibility level controls behavior that +changed in that version of Bash, but that behavior may have been present +in earlier versions. For instance, the change to use locale-based +comparisons with the '[[' command came in bash-4.1, and earlier versions +used ASCII-based comparisons, so enabling 'compat32' will enable +ASCII-based comparisons as well. That granularity may not be sufficient +for all uses, and as a result users should employ compatibility levels +carefully. Read the documentation for a particular feature to find out +the current behavior. + + Bash-4.3 introduced a new shell variable: 'BASH_COMPAT'. The value +assigned to this variable (a decimal version number like 4.2, or an +integer corresponding to the 'compat'NN option, like 42) determines the +compatibility level. + + Starting with bash-4.4, Bash has begun deprecating older +compatibility levels. Eventually, the options will be removed in favor +of 'BASH_COMPAT'. + + Bash-5.0 is the final version for which there will be an individual +shopt option for the previous version. Users should use 'BASH_COMPAT' +on bash-5.0 and later versions. + + The following table describes the behavior changes controlled by each +compatibility level setting. The 'compat'NN tag is used as shorthand +for setting the compatibility level to NN using one of the following +mechanisms. For versions prior to bash-5.0, the compatibility level may +be set using the corresponding 'compat'NN shopt option. For bash-4.3 +and later versions, the 'BASH_COMPAT' variable is preferred, and it is +required for bash-5.1 and later versions. + +'compat31' + * quoting the rhs of the '[[' command's regexp matching operator + (=~) has no special effect + +'compat32' + * interrupting a command list such as "a ; b ; c" causes the + execution of the next command in the list (in bash-4.0 and + later versions, the shell acts as if it received the + interrupt, so interrupting one command in a list aborts the + execution of the entire list) + +'compat40' + * the '<' and '>' operators to the '[[' command do not consider + the current locale when comparing strings; they use ASCII + ordering. Bash versions prior to bash-4.1 use ASCII collation + and strcmp(3); bash-4.1 and later use the current locale's + collation sequence and strcoll(3). + +'compat41' + * in posix mode, 'time' may be followed by options and still be + recognized as a reserved word (this is POSIX interpretation + 267) + * in posix mode, the parser requires that an even number of + single quotes occur in the WORD portion of a double-quoted + ${...} parameter expansion and treats them specially, so that + characters within the single quotes are considered quoted + (this is POSIX interpretation 221) + +'compat42' + * the replacement string in double-quoted pattern substitution + does not undergo quote removal, as it does in versions after + bash-4.2 + * in posix mode, single quotes are considered special when + expanding the WORD portion of a double-quoted ${...} parameter + expansion and can be used to quote a closing brace or other + special character (this is part of POSIX interpretation 221); + in later versions, single quotes are not special within + double-quoted word expansions + +'compat43' + * the shell does not print a warning message if an attempt is + made to use a quoted compound assignment as an argument to + declare (declare -a foo='(1 2)'). Later versions warn that + this usage is deprecated + * word expansion errors are considered non-fatal errors that + cause the current command to fail, even in posix mode (the + default behavior is to make them fatal errors that cause the + shell to exit) + * when executing a shell function, the loop state + (while/until/etc.) is not reset, so 'break' or 'continue' in + that function will break or continue loops in the calling + context. Bash-4.4 and later reset the loop state to prevent + this + +'compat44' + * the shell sets up the values used by 'BASH_ARGV' and + 'BASH_ARGC' so they can expand to the shell's positional + parameters even if extended debugging mode is not enabled + * a subshell inherits loops from its parent context, so 'break' + or 'continue' will cause the subshell to exit. Bash-5.0 and + later reset the loop state to prevent the exit + * variable assignments preceding builtins like 'export' and + 'readonly' that set attributes continue to affect variables + with the same name in the calling environment even if the + shell is not in posix mode + +'compat50 (set using BASH_COMPAT)' + * Bash-5.1 changed the way '$RANDOM' is generated to introduce + slightly more randomness. If the shell compatibility level is + set to 50 or lower, it reverts to the method from bash-5.0 and + previous versions, so seeding the random number generator by + assigning a value to 'RANDOM' will produce the same sequence + as in bash-5.0 + * If the command hash table is empty, Bash versions prior to + bash-5.1 printed an informational message to that effect, even + when producing output that can be reused as input. Bash-5.1 + suppresses that message when the '-l' option is supplied. + + +File: bashref.info, Node: Job Control, Next: Command Line Editing, Prev: Bash Features, Up: Top + +7 Job Control +************* + +This chapter discusses what job control is, how it works, and how Bash +allows you to access its facilities. + +* Menu: + +* Job Control Basics:: How job control works. +* Job Control Builtins:: Bash builtin commands used to interact + with job control. +* Job Control Variables:: Variables Bash uses to customize job + control. + + +File: bashref.info, Node: Job Control Basics, Next: Job Control Builtins, Up: Job Control + +7.1 Job Control Basics +====================== + +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 operating system kernel'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, 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, if the user so specifies with 'stty tostop', write to the +terminal. Background processes which attempt to read from (write to +when 'stty tostop' is in effect) the terminal are sent a 'SIGTTIN' +('SIGTTOU') signal by the kernel's 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 then manipulates 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 specification (JOBSPEC). + + Job number 'n' may be referred to as '%n'. 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. A +single '%' (with no accompanying job specification) also refers to the +current job. The previous job may be referenced using '%-'. If there +is only a single job, '%+' and '%-' can both be used to refer to that +job. 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 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 job whose command name begins with +'ce'. Using '%?ce', on the other hand, refers to any job containing the +string 'ce' in its command line. If the prefix or substring matches +more than one job, Bash reports an error. + + 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 is enabled, Bash reports such changes +immediately (*note The Set Builtin::). Any trap on 'SIGCHLD' is +executed for each child process that exits. + + If an attempt to exit Bash is made while jobs are stopped, (or +running, if the 'checkjobs' option is enabled - see *note The Shopt +Builtin::), the shell prints a warning message, and if the 'checkjobs' +option is enabled, lists the jobs and their statuses. The 'jobs' +command may then be used to inspect their status. If a second attempt +to exit is made without an intervening command, Bash does not print +another warning, and any stopped jobs are terminated. + + When the shell is waiting for a job or process using the 'wait' +builtin, and job control is enabled, 'wait' will return when the job +changes state. The '-f' option causes 'wait' to wait until the job or +process terminates before returning. + + +File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, Prev: Job Control Basics, Up: Job Control + +7.2 Job Control Builtins +======================== + +'bg' + bg [JOBSPEC ...] + + Resume each suspended job JOBSPEC in the background, as if it had + been started with '&'. If JOBSPEC is not supplied, the current job + is used. The return status is zero unless it is run when job + control is not enabled, or, when run with job control enabled, any + JOBSPEC was not found or specifies a job that was started without + job control. + +'fg' + fg [JOBSPEC] + + Resume the job JOBSPEC in the foreground and make it the current + job. If JOBSPEC is not supplied, the current job is used. The + return status is that of the command placed into the foreground, or + non-zero if run when job control is disabled or, when run with job + control enabled, JOBSPEC does not specify a valid job or JOBSPEC + specifies a job that was started without job control. + +'jobs' + jobs [-lnprs] [JOBSPEC] + jobs -x COMMAND [ARGUMENTS] + + The first form lists the active jobs. The options have the + following meanings: + + '-l' + List process IDs in addition to the normal information. + + '-n' + Display information only about jobs that have changed status + since the user was last notified of their status. + + '-p' + List only the process ID of the job's process group leader. + + '-r' + Display only running jobs. + + '-s' + Display only stopped jobs. + + If JOBSPEC is given, output is restricted to information about that + job. If JOBSPEC is not supplied, the status of all jobs is listed. + + If the '-x' option is supplied, 'jobs' replaces any JOBSPEC found + in COMMAND or ARGUMENTS with the corresponding process group ID, + and executes COMMAND, passing it ARGUMENTs, returning its exit + status. + +'kill' + kill [-s SIGSPEC] [-n SIGNUM] [-SIGSPEC] JOBSPEC or PID + kill -l|-L [EXIT_STATUS] + + Send a signal specified by SIGSPEC or SIGNUM to the process named + by job specification JOBSPEC or process ID PID. SIGSPEC is either + a case-insensitive signal name such as 'SIGINT' (with or without + the 'SIG' prefix) or a signal number; SIGNUM is a signal number. + If SIGSPEC and SIGNUM are not present, 'SIGTERM' is used. The '-l' + option 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 zero. EXIT_STATUS + is a number specifying a signal number or the exit status of a + process terminated by a signal. The '-L' option is equivalent to + '-l'. The return status is zero if at least one signal was + successfully sent, or non-zero if an error occurs or an invalid + option is encountered. + +'wait' + wait [-fn] [-p VARNAME] [JOBSPEC or PID ...] + + Wait until the child process specified by each process ID PID or + job specification JOBSPEC exits and return the exit status of the + last command waited for. If a job spec is given, all processes in + the job are waited for. If no arguments are given, 'wait' waits + for all running background jobs and the last-executed process + substitution, if its process id is the same as $!, and the return + status is zero. If the '-n' option is supplied, 'wait' waits for a + single job from the list of PIDS or JOBSPECS or, if no arguments + are supplied, any job, to complete and returns its exit status. If + none of the supplied arguments is a child of the shell, or if no + arguments are supplied and the shell has no unwaited-for children, + the exit status is 127. If the '-p' option is supplied, the + process or job identifier of the job for which the exit status is + returned is assigned to the variable VARNAME named by the option + argument. The variable will be unset initially, before any + assignment. This is useful only when the '-n' option is supplied. + Supplying the '-f' option, when job control is enabled, forces + 'wait' to wait for each PID or JOBSPEC to terminate before + returning its status, intead of returning when it changes status. + If neither JOBSPEC nor PID specifies an active child process of the + shell, the return status is 127. + +'disown' + disown [-ar] [-h] [JOBSPEC ... | PID ... ] + + Without options, remove each JOBSPEC 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'. If JOBSPEC is not 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. + +'suspend' + suspend [-f] + + Suspend the execution of this shell until it receives a 'SIGCONT' + signal. A login shell cannot be suspended; the '-f' option can be + used to override this and force the suspension. + + When job control is not active, the 'kill' and 'wait' builtins do not +accept JOBSPEC arguments. They must be supplied process IDs. + + +File: bashref.info, Node: Job Control Variables, Prev: Job Control Builtins, Up: Job Control + +7.3 Job Control Variables +========================= + +'auto_resume' + This variable controls how the shell interacts with the user and + job control. If this variable exists then single word simple + commands without redirections are treated as candidates for + resumption of an existing job. There is no ambiguity allowed; if + there is more than one job beginning with the string typed, then + the most recently accessed job will be selected. The name of a + stopped job, in this context, is the command line used to start it. + If this variable is 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 ID (*note Job Control + Basics::). If set to any other value, the supplied string must be + a prefix of a stopped job's name; this provides functionality + analogous to the '%' job ID. + + +File: bashref.info, Node: Command Line Editing, Next: Using History Interactively, Prev: Job Control, Up: Top + +8 Command Line Editing +********************** + +This chapter describes the basic features of the GNU command line +editing interface. Command line editing is provided by the Readline +library, which is used by several different programs, including Bash. +Command line editing is enabled by default when using an interactive +shell, unless the '--noediting' option is supplied at shell invocation. +Line editing is also used when using the '-e' option to the 'read' +builtin command (*note Bash Builtins::). By default, the line editing +commands are similar to those of Emacs. A vi-style line editing +interface is also available. Line editing can be enabled at any time +using the '-o emacs' or '-o vi' options to the 'set' builtin command +(*note The Set Builtin::), or disabled using the '+o emacs' or '+o vi' +options to 'set'. + +* Menu: + +* Introduction and Notation:: Notation used in this text. +* Readline Interaction:: The minimum set of commands for editing a line. +* Readline Init File:: Customizing Readline from a user's view. +* Bindable Readline Commands:: A description of most of the Readline commands + available for binding +* Readline vi Mode:: A short description of how to make Readline + behave like the vi editor. +* Programmable Completion:: How to specify the possible completions for + a specific command. +* Programmable Completion Builtins:: Builtin commands to specify how to + complete arguments for a particular command. +* A Programmable Completion Example:: An example shell function for + generating possible completions. + + +File: bashref.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing + +8.1 Introduction to Line Editing +================================ + +The following paragraphs describe the notation used to represent +keystrokes. + + The text 'C-k' is read as 'Control-K' and describes the character +produced when the key is pressed while the Control key is depressed. + + The text 'M-k' is read as 'Meta-K' and describes the character +produced when the Meta key (if you have one) is depressed, and the +key is pressed. The Meta key is labeled on many keyboards. On +keyboards with two keys labeled (usually to either side of the +space bar), the on the left side is generally set to work as a +Meta key. The key on the right may also be configured to work as +a Meta key or may be configured as some other modifier, such as a +Compose key for typing accented characters. + + If you do not have a Meta or key, or another key working as a +Meta key, the identical keystroke can be generated by typing +_first_, and then typing . Either process is known as "metafying" +the key. + + The text 'M-C-k' is read as 'Meta-Control-k' and describes the +character produced by "metafying" 'C-k'. + + In addition, several keys have their own names. Specifically, , +, , , , and all stand for themselves when seen +in this text, or in an init file (*note Readline Init File::). If your +keyboard lacks a key, typing will produce the desired +character. The key may be labeled or on some +keyboards. + + +File: bashref.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing + +8.2 Readline Interaction +======================== + +Often during an interactive session you type in a long line of text, +only to notice that the first word on the line is misspelled. The +Readline library gives you a set of commands for manipulating the text +as you type it in, allowing you to just fix your typo, and not forcing +you to retype the majority of the line. Using these editing commands, +you move the cursor to the place that needs correction, and delete or +insert the text of the corrections. Then, when you are satisfied with +the line, you simply press . You do not have to be at the end of +the line to press ; the entire line is accepted regardless of the +location of the cursor within the line. + +* Menu: + +* Readline Bare Essentials:: The least you need to know about Readline. +* Readline Movement Commands:: Moving about the input line. +* Readline Killing Commands:: How to delete text, and how to get it back! +* Readline Arguments:: Giving numeric arguments to commands. +* Searching:: Searching through previous lines. + + +File: bashref.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction + +8.2.1 Readline Bare Essentials +------------------------------ + +In order to enter characters into the line, simply type them. The typed +character appears where the cursor was, and then the cursor moves one +space to the right. If you mistype a character, you can use your erase +character to back up and delete the mistyped character. + + Sometimes you may mistype a character, and not notice the error until +you have typed several other characters. In that case, you can type +'C-b' to move the cursor to the left, and then correct your mistake. +Afterwards, you can move the cursor to the right with 'C-f'. + + When you add text in the middle of a line, you will notice that +characters to the right of the cursor are 'pushed over' to make room for +the text that you have inserted. Likewise, when you delete text behind +the cursor, characters to the right of the cursor are 'pulled back' to +fill in the blank space created by the removal of the text. A list of +the bare essentials for editing the text of an input line follows. + +'C-b' + Move back one character. +'C-f' + Move forward one character. + or + Delete the character to the left of the cursor. +'C-d' + Delete the character underneath the cursor. +Printing characters + Insert the character into the line at the cursor. +'C-_' or 'C-x C-u' + Undo the last editing command. You can undo all the way back to an + empty line. + +(Depending on your configuration, the key be set to delete +the character to the left of the cursor and the key set to delete +the character underneath the cursor, like 'C-d', rather than the +character to the left of the cursor.) + + +File: bashref.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction + +8.2.2 Readline Movement Commands +-------------------------------- + +The above table describes the most basic keystrokes that you need in +order to do editing of the input line. For your convenience, many other +commands have been added in addition to 'C-b', 'C-f', 'C-d', and . +Here are some commands for moving more rapidly about the line. + +'C-a' + Move to the start of the line. +'C-e' + Move to the end of the line. +'M-f' + Move forward a word, where a word is composed of letters and + digits. +'M-b' + Move backward a word. +'C-l' + Clear the screen, reprinting the current line at the top. + + Notice how 'C-f' moves forward a character, while 'M-f' moves forward +a word. It is a loose convention that control keystrokes operate on +characters while meta keystrokes operate on words. + + +File: bashref.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction + +8.2.3 Readline Killing Commands +------------------------------- + +"Killing" text means to delete the text from the line, but to save it +away for later use, usually by "yanking" (re-inserting) it back into the +line. ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.) + + If the description for a command says that it 'kills' text, then you +can be sure that you can get the text back in a different (or the same) +place later. + + When you use a kill command, the text is saved in a "kill-ring". Any +number of consecutive kills save all of the killed text together, so +that when you yank it back, you get it all. The kill ring is not line +specific; the text that you killed on a previously typed line is +available to be yanked back later, when you are typing another line. + + Here is the list of commands for killing text. + +'C-k' + Kill the text from the current cursor position to the end of the + line. + +'M-d' + Kill from the cursor 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 'M-f'. + +'M-' + Kill from the cursor the start of the current word, or, if between + words, to the start of the previous word. Word boundaries are the + same as those used by 'M-b'. + +'C-w' + Kill from the cursor to the previous whitespace. This is different + than 'M-' because the word boundaries differ. + + Here is how to "yank" the text back into the line. Yanking means to +copy the most-recently-killed text from the kill buffer. + +'C-y' + Yank the most recently killed text back into the buffer at the + cursor. + +'M-y' + Rotate the kill-ring, and yank the new top. You can only do this + if the prior command is 'C-y' or 'M-y'. + + +File: bashref.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction + +8.2.4 Readline Arguments +------------------------ + +You can pass numeric arguments to Readline commands. Sometimes the +argument acts as a repeat count, other times it is the sign of the +argument that is significant. If you pass a negative argument to a +command which normally acts in a forward direction, that command will +act in a backward direction. For example, to kill text back to the +start of the line, you might type 'M-- C-k'. + + The general way to pass numeric arguments to a command is to type +meta digits before the command. If the first 'digit' typed is a minus +sign ('-'), then the sign of the argument will be negative. Once you +have typed one meta digit to get the argument started, you can type the +remainder of the digits, and then the command. For example, to give the +'C-d' command an argument of 10, you could type 'M-1 0 C-d', which will +delete the next ten characters on the input line. + + +File: bashref.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction + +8.2.5 Searching for Commands in the History +------------------------------------------- + +Readline provides commands for searching through the command history +(*note Bash History Facilities::) 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. To search backward in the +history for a particular string, type 'C-r'. Typing 'C-s' searches +forward through the history. 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 and +'C-J' characters will terminate an incremental search. 'C-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 'C-r' or +'C-s' 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 will terminate the +search and accept the line, thereby executing the command from the +history list. A movement command will terminate the search, make the +last line found the current line, and begin editing. + + Readline remembers the last incremental search string. If two 'C-r's +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. + + +File: bashref.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing + +8.3 Readline Init File +====================== + +Although the Readline library comes with a set of Emacs-like keybindings +installed by default, it is possible to use a different set of +keybindings. Any user can customize programs that use Readline by +putting commands in an "inputrc" file, conventionally in his home +directory. The name of this file is taken from the value of the shell +variable 'INPUTRC'. If that variable is unset, the default is +'~/.inputrc'. If that file does not exist or cannot be read, the +ultimate default is '/etc/inputrc'. The 'bind' builtin command can also +be used to set Readline keybindings and variables. *Note Bash +Builtins::. + + When a program which uses the Readline library starts up, the init +file is read, and the key bindings are set. + + In addition, the 'C-x C-r' command re-reads this init file, thus +incorporating any changes that you might have made to it. + +* Menu: + +* Readline Init File Syntax:: Syntax for the commands in the inputrc file. + +* Conditional Init Constructs:: Conditional key bindings in the inputrc file. + +* Sample Init File:: An example inputrc file. + + +File: bashref.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File + +8.3.1 Readline Init File Syntax +------------------------------- + +There are only a few basic constructs allowed in the Readline init file. +Blank lines are ignored. Lines beginning with a '#' are comments. +Lines beginning with a '$' indicate conditional constructs (*note +Conditional Init Constructs::). Other lines denote variable settings +and key bindings. + +Variable Settings + You can modify the run-time behavior of Readline by altering the + values of variables in Readline using the 'set' command within the + init file. The syntax is simple: + + set VARIABLE VALUE + + Here, for example, is how to change from the default Emacs-like key + binding to use 'vi' line editing commands: + + set editing-mode vi + + Variable names and values, where appropriate, are recognized + without regard to case. Unrecognized variable names are ignored. + + Boolean variables (those that can be set to on or off) are set to + on if the value is null or empty, ON (case-insensitive), or 1. Any + other value results in the variable being set to off. + + The 'bind -V' command lists the current Readline variable names and + values. *Note Bash Builtins::. + + A great deal of run-time behavior is changeable with the following + variables. + + 'bell-style' + Controls what happens when Readline wants to ring the terminal + bell. If set to 'none', Readline never rings the bell. If + set to 'visible', Readline uses a visible bell if one is + available. If set to 'audible' (the default), Readline + attempts to ring the terminal's bell. + + 'bind-tty-special-chars' + If set to 'on' (the default), Readline attempts to bind the + control characters treated specially by the kernel's terminal + driver to their Readline equivalents. + + 'blink-matching-paren' + If set to 'on', Readline attempts to briefly move the cursor + to an opening parenthesis when a closing parenthesis is + inserted. The default is 'off'. + + 'colored-completion-prefix' + If set to 'on', when listing completions, Readline displays + the common prefix of the set of possible completions using a + different color. The color definitions are taken from the + value of the 'LS_COLORS' environment variable. The default is + 'off'. + + 'colored-stats' + If set to 'on', Readline displays possible completions using + different colors to indicate their file type. The color + definitions are taken from the value of the 'LS_COLORS' + environment variable. The default is 'off'. + + 'comment-begin' + The string to insert at the beginning of the line when the + 'insert-comment' command is executed. The default value is + '"#"'. + + 'completion-display-width' + The number of screen columns used to display possible matches + when performing completion. The value is ignored if it is + less than 0 or greater than the terminal screen width. A + value of 0 will cause matches to be displayed one per line. + The default value is -1. + + 'completion-ignore-case' + If set to 'on', Readline performs filename matching and + completion in a case-insensitive fashion. The default value + is 'off'. + + 'completion-map-case' + If set to 'on', and COMPLETION-IGNORE-CASE is enabled, + Readline treats hyphens ('-') and underscores ('_') as + equivalent when performing case-insensitive filename matching + and completion. The default value is 'off'. + + 'completion-prefix-display-length' + The length in characters of the common prefix of a list of + possible completions that is displayed without modification. + When set to a value greater than zero, common prefixes longer + than this value are replaced with an ellipsis when displaying + possible completions. + + 'completion-query-items' + The number of possible completions that determines when the + user is asked whether the list of possibilities should be + displayed. If the number of possible completions is greater + than or equal to this value, Readline will ask whether or not + the user wishes to view them; otherwise, they are simply + listed. This variable must be set to an integer value greater + than or equal to 0. A negative value means Readline should + never ask. The default limit is '100'. + + 'convert-meta' + If set to 'on', Readline will convert characters with the + eighth bit set to an ASCII key sequence by stripping the + eighth bit and prefixing an character, converting them + to a meta-prefixed key sequence. The default value is 'on', + but will be set to 'off' if the locale is one that contains + eight-bit characters. + + 'disable-completion' + If set to 'On', Readline will inhibit word completion. + Completion characters will be inserted into the line as if + they had been mapped to 'self-insert'. The default is 'off'. + + 'echo-control-characters' + When set to 'on', on operating systems that indicate they + support it, readline echoes a character corresponding to a + signal generated from the keyboard. The default is 'on'. + + 'editing-mode' + The 'editing-mode' variable controls which default set of key + bindings is used. By default, Readline starts up in Emacs + editing mode, where the keystrokes are most similar to Emacs. + This variable can be set to either 'emacs' or 'vi'. + + 'emacs-mode-string' + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when emacs editing mode is active. The value is + expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the '\1' and '\2' escapes to begin and end sequences of + non-printing characters, which can be used to embed a terminal + control sequence into the mode string. The default is '@'. + + 'enable-bracketed-paste' + When set to 'On', Readline will configure the terminal in a + way that will enable it to insert each paste into the editing + buffer as a single string of characters, instead of treating + each character as if it had been read from the keyboard. This + can prevent pasted characters from being interpreted as + editing commands. The default is 'On'. + + 'enable-keypad' + When set to 'on', Readline will try to enable the application + keypad when it is called. Some systems need this to enable + the arrow keys. The default is 'off'. + + 'enable-meta-key' + When set to 'on', Readline will try to enable any meta + modifier key the terminal claims to support when it is called. + On many terminals, the meta key is used to send eight-bit + characters. The default is 'on'. + + 'expand-tilde' + If set to 'on', tilde expansion is performed when Readline + attempts word completion. The default is 'off'. + + 'history-preserve-point' + If set to 'on', the history code attempts to place the point + (the current cursor position) at the same location on each + history line retrieved with 'previous-history' or + 'next-history'. The default is 'off'. + + 'history-size' + Set the maximum number of history entries saved in the history + list. If set to zero, any existing history entries are + deleted and no new entries are saved. If set to a value less + than zero, the number of history entries is not limited. By + default, the number of history entries is not limited. If an + attempt is made to set HISTORY-SIZE to a non-numeric value, + the maximum number of history entries will be set to 500. + + 'horizontal-scroll-mode' + This variable can be set to either 'on' or 'off'. Setting it + to 'on' means that the text of the lines being edited will + scroll horizontally on a single screen line when they are + longer than the width of the screen, instead of wrapping onto + a new screen line. This variable is automatically set to 'on' + for terminals of height 1. By default, this variable is set + to 'off'. + + 'input-meta' + If set to 'on', Readline will enable eight-bit input (it will + not clear the eighth bit in the characters it reads), + regardless of what the terminal claims it can support. The + default value is 'off', but Readline will set it to 'on' if + the locale contains eight-bit characters. The name + 'meta-flag' is a synonym for this variable. + + 'isearch-terminators' + The string of characters that should terminate an incremental + search without subsequently executing the character as a + command (*note Searching::). If this variable has not been + given a value, the characters and 'C-J' will terminate + an incremental search. + + 'keymap' + Sets Readline's idea of the current keymap for key binding + commands. Built-in 'keymap' names are 'emacs', + 'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move', + 'vi-command', and 'vi-insert'. 'vi' is equivalent to + 'vi-command' ('vi-move' is also a synonym); 'emacs' is + equivalent to 'emacs-standard'. Applications may add + additional names. The default value is 'emacs'. The value of + the 'editing-mode' variable also affects the default keymap. + + 'keyseq-timeout' + Specifies the duration Readline will wait for a character when + reading an ambiguous key sequence (one that can form a + complete key sequence using the input read so far, or can take + additional input to complete a longer key sequence). If no + input is received within the timeout, Readline will use the + shorter but complete key sequence. Readline uses this value + to determine whether or not input is available on the current + input source ('rl_instream' by default). The value is + specified in milliseconds, so a value of 1000 means that + Readline will wait one second for additional input. If this + variable is set to a value less than or equal to zero, or to a + non-numeric value, Readline will wait until another key is + pressed to decide which key sequence to complete. The default + value is '500'. + + 'mark-directories' + If set to 'on', completed directory names have a slash + appended. The default is 'on'. + + 'mark-modified-lines' + This variable, when set to 'on', causes Readline to display an + asterisk ('*') at the start of history lines which have been + modified. This variable is 'off' by default. + + 'mark-symlinked-directories' + If set to 'on', completed names which are symbolic links to + directories have a slash appended (subject to the value of + 'mark-directories'). The default is 'off'. + + 'match-hidden-files' + This variable, when set to 'on', causes Readline to match + files whose names begin with a '.' (hidden files) when + performing filename completion. If set to 'off', the leading + '.' must be supplied by the user in the filename to be + completed. This variable is 'on' by default. + + 'menu-complete-display-prefix' + If set to 'on', menu completion displays the common prefix of + the list of possible completions (which may be empty) before + cycling through the list. The default is 'off'. + + 'output-meta' + If set to 'on', Readline will display characters with the + eighth bit set directly rather than as a meta-prefixed escape + sequence. The default is 'off', but Readline will set it to + 'on' if the locale contains eight-bit characters. + + 'page-completions' + If set to 'on', Readline uses an internal 'more'-like pager to + display a screenful of possible completions at a time. This + variable is 'on' by default. + + 'print-completions-horizontally' + If set to 'on', Readline will display completions with matches + sorted horizontally in alphabetical order, rather than down + the screen. The default is 'off'. + + 'revert-all-at-newline' + If set to 'on', Readline will undo all changes to history + lines before returning when 'accept-line' is executed. By + default, history lines may be modified and retain individual + undo lists across calls to 'readline'. The default is 'off'. + + 'show-all-if-ambiguous' + This alters the default behavior of the completion functions. + If set to 'on', words which have more than one possible + completion cause the matches to be listed immediately instead + of ringing the bell. The default value is 'off'. + + 'show-all-if-unmodified' + This alters the default behavior of the completion functions + in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to + 'on', 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. The + default value is 'off'. + + 'show-mode-in-prompt' + If set to 'on', add a string to the beginning of the prompt + indicating the editing mode: emacs, vi command, or vi + insertion. The mode strings are user-settable (e.g., + EMACS-MODE-STRING). The default value is 'off'. + + 'skip-completed-text' + If set to 'on', this alters the default completion behavior + when inserting a single match into the line. It's only active + when performing completion in the middle of a word. If + enabled, readline does not insert characters from the + completion that match characters after point in the word being + completed, so portions of the word following the cursor are + not duplicated. For instance, if this is enabled, attempting + completion when the cursor is after the 'e' in 'Makefile' will + result in 'Makefile' rather than 'Makefilefile', assuming + there is a single possible completion. The default value is + 'off'. + + 'vi-cmd-mode-string' + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when vi editing mode is active and in command mode. + The value is expanded like a key binding, so the standard set + of meta- and control prefixes and backslash escape sequences + is available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '(cmd)'. + + 'vi-ins-mode-string' + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when vi editing mode is active and in insertion mode. + The value is expanded like a key binding, so the standard set + of meta- and control prefixes and backslash escape sequences + is available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '(ins)'. + + 'visible-stats' + If set to 'on', a character denoting a file's type is appended + to the filename when listing possible completions. The + default is 'off'. + +Key Bindings + The syntax for controlling key bindings in the init file is simple. + First you need to find the name of the command that you want to + change. The following sections contain tables of the command name, + the default keybinding, if any, and a short description of what the + command does. + + Once you know the name of the command, simply place on a line in + the init file the name of the key you wish to bind the command to, + a colon, and then the name of the command. There can be no space + between the key name and the colon - that will be interpreted as + part of the key name. The name of the key can be expressed in + different ways, depending on what you find most comfortable. + + In addition to command names, readline allows keys to be bound to a + string that is inserted when the key is pressed (a MACRO). + + The 'bind -p' command displays Readline function names and bindings + in a format that can put directly into an initialization file. + *Note Bash Builtins::. + + 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 example above, '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). + + A number of symbolic character names are recognized while + processing this key binding syntax: DEL, ESC, ESCAPE, LFD, + NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB. + + "KEYSEQ": FUNCTION-NAME or MACRO + KEYSEQ differs from KEYNAME above in that strings denoting an + entire key sequence can be specified, by placing the key + sequence in double quotes. Some GNU Emacs style key escapes + can be used, as in the following example, but the special + character names are not recognized. + + "\C-u": universal-argument + "\C-x\C-r": re-read-init-file + "\e[11~": "Function Key 1" + + In the above example, 'C-u' is again bound to the function + 'universal-argument' (just as it was in the first example), + ''C-x' 'C-r'' is bound to the function 're-read-init-file', + and ' <[> <1> <1> <~>' is bound to insert the text + 'Function Key 1'. + + The following GNU Emacs style escape sequences are available when + specifying key sequences: + + '\C-' + control prefix + '\M-' + meta prefix + '\e' + an escape character + '\\' + backslash + '\"' + <">, a double quotation mark + '\'' + <'>, a single quote or apostrophe + + 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 '''. For example, + the following binding will make ''C-x' \' insert a single '\' into + the line: + "\C-x\\": "\\" + + +File: bashref.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File + +8.3.2 Conditional Init 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, after any comparison operator, extends to the + end of the line; unless otherwise noted, 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 both the 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. + + 'version' + The 'version' test may be used to perform comparisons against + specific Readline versions. The 'version' expands to the + current Readline version. The set of comparison operators + includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The + version number supplied on the right side of the operator + consists of a major version number, an optional decimal point, + and an optional minor version (e.g., '7.1'). If the minor + version is omitted, it is assumed to be '0'. The operator may + be separated from the string 'version' and from the version + number argument by whitespace. The following example sets a + variable if the Readline version being used is 7.0 or newer: + $if version >= 7.0 + set show-mode-in-prompt on + $endif + + 'application' + The APPLICATION construct is used to include + application-specific settings. Each program using the + Readline library sets the APPLICATION NAME, and you 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 + + 'variable' + The VARIABLE construct provides simple equality tests for + Readline variables and values. The permitted comparison + operators are '=', '==', and '!='. The variable name must be + separated from the comparison operator by whitespace; the + operator may be separated from the value on the right hand + side by whitespace. Both string and boolean variables may be + tested. Boolean variables must be tested against the values + ON and OFF. The following example is equivalent to the + 'mode=emacs' test described above: + $if editing-mode == emacs + set show-mode-in-prompt on + $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 reads from '/etc/inputrc': + $include /etc/inputrc + + +File: bashref.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File + +8.3.3 Sample Init File +---------------------- + +Here is an example of an INPUTRC file. This illustrates key binding, +variable assignment, and conditional syntax. + + # This file controls the behaviour of line input editing for + # programs that use the GNU Readline library. Existing + # programs include FTP, Bash, and GDB. + # + # You can re-read the inputrc file with C-x C-r. + # Lines beginning with '#' are comments. + # + # First, include any system-wide bindings and variable + # assignments from /etc/Inputrc + $include /etc/Inputrc + + # + # Set various bindings for emacs mode. + + set editing-mode emacs + + $if mode=emacs + + Meta-Control-h: backward-kill-word Text after the function name is ignored + + # + # Arrow keys in keypad mode + # + #"\M-OD": backward-char + #"\M-OC": forward-char + #"\M-OA": previous-history + #"\M-OB": next-history + # + # Arrow keys in ANSI mode + # + "\M-[D": backward-char + "\M-[C": forward-char + "\M-[A": previous-history + "\M-[B": next-history + # + # Arrow keys in 8 bit keypad mode + # + #"\M-\C-OD": backward-char + #"\M-\C-OC": forward-char + #"\M-\C-OA": previous-history + #"\M-\C-OB": next-history + # + # Arrow keys in 8 bit ANSI mode + # + #"\M-\C-[D": backward-char + #"\M-\C-[C": forward-char + #"\M-\C-[A": previous-history + #"\M-\C-[B": next-history + + C-q: quoted-insert + + $endif + + # An old-style binding. This happens to be the default. + TAB: complete + + # Macros that are convenient for shell interaction + $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" + # insert a backslash (testing backslash escapes + # in sequences and macros) + "\C-x\\": "\\" + # Quote the current or previous word + "\C-xq": "\eb\"\ef\"" + # Add a binding to refresh the line, which is unbound + "\C-xr": redraw-current-line + # Edit variable on current line. + "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y=" + $endif + + # use a visible bell if one is available + set bell-style visible + + # don't strip characters to 7 bits when reading + set input-meta on + + # allow iso-latin1 characters to be inserted rather + # than converted to prefix-meta sequences + set convert-meta off + + # display characters with the eighth bit set directly + # rather than as meta-prefixed characters + set output-meta on + + # if there are 150 or more possible completions for a word, + # ask whether or not the user wants to see all of them + set completion-query-items 150 + + # For FTP + $if Ftp + "\C-xg": "get \M-?" + "\C-xt": "put \M-?" + "\M-.": yank-last-arg + $endif + + +File: bashref.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing + +8.4 Bindable Readline Commands +============================== + +* Menu: + +* Commands For Moving:: Moving about the line. +* Commands For History:: Getting at previous lines. +* Commands For Text:: Commands for changing text. +* Commands For Killing:: Commands for killing and yanking. +* Numeric Arguments:: Specifying numeric arguments, repeat counts. +* Commands For Completion:: Getting Readline to do the typing for you. +* Keyboard Macros:: Saving and re-executing typed characters +* Miscellaneous Commands:: Other miscellaneous commands. + +This section describes Readline commands that may be bound to key +sequences. You can list your key bindings by executing 'bind -P' or, +for a more terse format, suitable for an INPUTRC file, 'bind -p'. +(*Note Bash Builtins::.) 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". + + +File: bashref.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands + +8.4.1 Commands For Moving +------------------------- + +'beginning-of-line (C-a)' + Move to the start of the current line. + +'end-of-line (C-e)' + Move to the end of the line. + +'forward-char (C-f)' + Move forward a character. + +'backward-char (C-b)' + Move back a character. + +'forward-word (M-f)' + Move forward to the end of the next word. Words are composed of + letters and digits. + +'backward-word (M-b)' + Move back to the start of the current or previous word. Words are + composed of letters and digits. + +'shell-forward-word (M-C-f)' + Move forward to the end of the next word. Words are delimited by + non-quoted shell metacharacters. + +'shell-backward-word (M-C-b)' + Move back to the start of the current or previous word. Words are + delimited by non-quoted shell metacharacters. + +'previous-screen-line ()' + Attempt to move point to the same physical screen column on the + previous physical screen line. This will not have the desired + effect if the current Readline line does not take up more than one + physical line or if point is not greater than the length of the + prompt plus the screen width. + +'next-screen-line ()' + Attempt to move point to the same physical screen column on the + next physical screen line. This will not have the desired effect + if the current Readline line does not take up more than one + physical line or if the length of the current Readline line is not + greater than the length of the prompt plus the screen width. + +'clear-display (M-C-l)' + Clear the screen and, if possible, the terminal's scrollback + buffer, then redraw the current line, leaving the current line at + the top of the screen. + +'clear-screen (C-l)' + Clear the screen, then redraw the current line, leaving the current + line at the top of the screen. + +'redraw-current-line ()' + Refresh the current line. By default, this is unbound. + + +File: bashref.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands + +8.4.2 Commands For Manipulating The History +------------------------------------------- + +'accept-line (Newline or Return)' + Accept the line regardless of where the cursor is. If this line is + non-empty, add it to the history list according to the setting of + the 'HISTCONTROL' and 'HISTIGNORE' variables. If this line is a + modified history line, then restore the history line to its + original state. + +'previous-history (C-p)' + Move 'back' through the history list, fetching the previous + command. + +'next-history (C-n)' + Move 'forward' through the history list, fetching the next command. + +'beginning-of-history (M-<)' + Move to the first line in the history. + +'end-of-history (M->)' + Move to the end of the input history, i.e., the line currently + being entered. + +'reverse-search-history (C-r)' + Search backward starting at the current line and moving 'up' + through the history as necessary. This is an incremental search. + This command sets the region to the matched text and activates the + mark. + +'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. + This command sets the region to the matched text and activates the + mark. + +'non-incremental-reverse-search-history (M-p)' + Search backward starting at the current line and moving 'up' + through the history as necessary using a non-incremental search for + a string supplied by the user. The search string may match + anywhere in a history line. + +'non-incremental-forward-search-history (M-n)' + Search forward starting at the current line and moving 'down' + through the history as necessary using a non-incremental search for + a string supplied by the user. The search string may match + anywhere in a history line. + +'history-search-forward ()' + Search forward through the history for the string of characters + between the start of the current line and the point. The search + string must match at the beginning of a history line. This is a + non-incremental search. By default, this command is unbound. + +'history-search-backward ()' + Search backward through the history for the string of characters + between the start of the current line and the point. The search + string must match at the beginning of a history line. This is a + non-incremental search. By default, this command is unbound. + +'history-substring-search-forward ()' + Search forward through the history for the string of characters + between the start of the current line and the point. The search + string may match anywhere in a history line. This is a + non-incremental search. By default, this command is unbound. + +'history-substring-search-backward ()' + Search backward through the history for the string of characters + between the start of the current line and the point. The search + string may match anywhere in a history line. This is a + non-incremental search. By default, this command is unbound. + +'yank-nth-arg (M-C-y)' + Insert the first argument to the previous command (usually the + second word on the previous line) at point. With an argument N, + 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-. or M-_)' + Insert last argument to the previous command (the last word of the + previous history entry). With a numeric argument, behave exactly + like 'yank-nth-arg'. Successive calls to 'yank-last-arg' move back + through the history list, inserting the last word (or the word + specified by the argument to the first call) of each line in turn. + Any numeric argument supplied to these successive calls determines + the direction to move through the history. A negative argument + switches the direction through the history (back or forward). The + history expansion facilities are used to extract the last argument, + as if the '!$' history expansion had been specified. + +'operate-and-get-next (C-o)' + Accept the current line for return to the calling application as if + a newline had been entered, and fetch the next line relative to the + current line from the history for editing. A numeric argument, if + supplied, specifies the history entry to use instead of the current + line. + + +File: bashref.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands + +8.4.3 Commands For Changing Text +-------------------------------- + +'end-of-file (usually C-d)' + The character indicating end-of-file as set, for example, by + 'stty'. If this character is read when there are no characters on + the line, and point is at the beginning of the line, Readline + interprets it as the end of input and returns EOF. + +'delete-char (C-d)' + Delete the character at point. If this function is bound to the + same character as the tty EOF character, as 'C-d' commonly is, see + above for the effects. + +'backward-delete-char (Rubout)' + Delete the character behind the cursor. A numeric argument means + to kill the characters instead of deleting them. + +'forward-backward-delete-char ()' + Delete the character under the cursor, unless the cursor is at the + end of the line, in which case the character behind the cursor is + deleted. By default, this is not bound to a key. + +'quoted-insert (C-q or C-v)' + Add the next character typed to the line verbatim. This is how to + insert key sequences like 'C-q', for example. + +'self-insert (a, b, A, 1, !, ...)' + Insert yourself. + +'bracketed-paste-begin ()' + This function is intended to be bound to the "bracketed paste" + escape sequence sent by some terminals, and such a binding is + assigned by default. It allows Readline to insert the pasted text + as a single unit without treating each character as if it had been + read from the keyboard. The characters are inserted as if each one + was bound to 'self-insert' instead of executing any editing + commands. + + Bracketed paste sets the region (the characters between point and + the mark) to the inserted text. It uses the concept of an _active + mark_: when the mark is active, Readline redisplay uses the + terminal's standout mode to denote the region. + +'transpose-chars (C-t)' + Drag the character before the cursor forward over the character at + the cursor, moving the cursor forward as well. If the insertion + point is at the end of the line, then this transposes the last two + characters of the line. Negative arguments have no effect. + +'transpose-words (M-t)' + Drag the word before point past the word after point, moving point + past that word as well. If the insertion point is at the end of + the line, this transposes the last two words on the line. + +'upcase-word (M-u)' + Uppercase the current (or following) word. With a negative + argument, uppercase the previous word, but do not move the cursor. + +'downcase-word (M-l)' + Lowercase the current (or following) word. With a negative + argument, lowercase the previous word, but do not move the cursor. + +'capitalize-word (M-c)' + Capitalize the current (or following) word. With a negative + argument, capitalize the previous word, but do not move the cursor. + +'overwrite-mode ()' + Toggle overwrite mode. With an explicit positive numeric argument, + switches to overwrite mode. With an explicit non-positive numeric + argument, switches to insert mode. This command affects only + '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. + + +File: bashref.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands + +8.4.4 Killing And Yanking +------------------------- + +'kill-line (C-k)' + Kill the text from point to the end of the line. With a negative + numeric argument, kill backward from the cursor to the beginning of + the current line. + +'backward-kill-line (C-x Rubout)' + Kill backward from the cursor to the beginning of the current line. + With a negative numeric argument, kill forward from the cursor to + the end of the current line. + +'unix-line-discard (C-u)' + Kill backward from the cursor to the beginning of the current line. + +'kill-whole-line ()' + Kill all characters on the current line, no matter where point is. + By default, this is unbound. + +'kill-word (M-d)' + Kill from point to the end of the current word, or if between + words, to the end of the next word. Word boundaries are the same + as 'forward-word'. + +'backward-kill-word (M-)' + Kill the word behind point. Word boundaries are the same as + 'backward-word'. + +'shell-kill-word (M-C-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 'shell-forward-word'. + +'shell-backward-kill-word ()' + Kill the word behind point. Word boundaries are the same as + 'shell-backward-word'. + +'shell-transpose-words (M-C-t)' + Drag the word before point past the word after point, moving point + past that word as well. If the insertion point is at the end of + the line, this transposes the last two words on the line. Word + boundaries are the same as 'shell-forward-word' and + 'shell-backward-word'. + +'unix-word-rubout (C-w)' + Kill the word behind point, using white space as a word boundary. + The killed text is saved on the kill-ring. + +'unix-filename-rubout ()' + Kill the word behind point, using white space and the slash + character as the word boundaries. The killed text is saved on the + kill-ring. + +'delete-horizontal-space ()' + Delete all spaces and tabs around point. By default, this is + unbound. + +'kill-region ()' + Kill the text in the current region. By default, this command is + unbound. + +'copy-region-as-kill ()' + Copy the text in the region to the kill buffer, so it can be yanked + right away. By default, this command is unbound. + +'copy-backward-word ()' + Copy the word before point to the kill buffer. The word boundaries + are the same as 'backward-word'. By default, this command is + unbound. + +'copy-forward-word ()' + Copy the word following point to the kill buffer. The word + boundaries are the same as 'forward-word'. By default, this + command is unbound. + +'yank (C-y)' + Yank the top of the kill ring into the buffer at point. + +'yank-pop (M-y)' + Rotate the kill-ring, and yank the new top. You can only do this + if the prior command is 'yank' or 'yank-pop'. + + +File: bashref.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands + +8.4.5 Specifying Numeric Arguments +---------------------------------- + +'digit-argument (M-0, M-1, ... M--)' + Add this digit to the argument already accumulating, or start a new + argument. 'M--' starts a negative argument. + +'universal-argument ()' + This is another way to specify an argument. If this command is + followed by one or more digits, optionally with a leading minus + sign, those digits define the argument. 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 nor 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. + By default, this is not bound to a key. + + +File: bashref.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands + +8.4.6 Letting Readline Type For You +----------------------------------- + +'complete ()' + Attempt to perform completion on the text before point. The actual + completion performed is application-specific. Bash attempts + completion treating the text as a variable (if the 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. When + displaying completions, Readline sets the number of columns used + for display to the value of 'completion-display-width', the value + of the environment variable 'COLUMNS', or the screen width, in that + order. + +'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 , but is unbound by + default. + +'menu-complete-backward ()' + Identical to 'menu-complete', but moves backward through the list + of possible completions, as if 'menu-complete' had been given a + negative argument. + +'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-)' + Attempt completion on the text before point, comparing the text + against lines from the history list for possible completion + matches. + +'dabbrev-expand ()' + Attempt menu 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 (*note Brace Expansion::). + + +File: bashref.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands + +8.4.7 Keyboard Macros +--------------------- + +'start-kbd-macro (C-x ()' + Begin saving the characters typed into the current keyboard macro. + +'end-kbd-macro (C-x ))' + Stop saving the characters typed into the current keyboard macro + and save the definition. + +'call-last-kbd-macro (C-x e)' + Re-execute the last keyboard macro defined, by making the + characters in the macro appear as if typed at the keyboard. + +'print-last-kbd-macro ()' + Print the last keboard macro defined in a format suitable for the + INPUTRC file. + + +File: bashref.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands + +8.4.8 Some Miscellaneous Commands +--------------------------------- + +'re-read-init-file (C-x C-r)' + Read in the contents of the INPUTRC file, and incorporate any + bindings or variable assignments found there. + +'abort (C-g)' + Abort the current editing command and ring the terminal's bell + (subject to the setting of 'bell-style'). + +'do-lowercase-version (M-A, M-B, M-X, ...)' + If the metafied character X is upper case, run the command that is + bound to the corresponding metafied lower case character. The + behavior is undefined if X is already lower case. + +'prefix-meta ()' + Metafy the next character typed. This is for keyboards without a + meta key. Typing ' f' is equivalent to typing 'M-f'. + +'undo (C-_ or C-x C-u)' + Incremental undo, separately remembered for each line. + +'revert-line (M-r)' + Undo all changes made to this line. This is like executing the + 'undo' command enough times to get back to the beginning. + +'tilde-expand (M-&)' + Perform tilde expansion on the current word. + +'set-mark (C-@)' + Set the mark to the point. If a numeric argument is supplied, the + mark is set to that position. + +'exchange-point-and-mark (C-x C-x)' + Swap the point with the mark. The current cursor position is set + to the saved position, and the old cursor position is saved as the + mark. + +'character-search (C-])' + A character is read and point is moved to the next occurrence of + that character. A negative count searches for previous + occurrences. + +'character-search-backward (M-C-])' + A character is read and point is moved to the previous occurrence + of that character. A negative count searches for subsequent + occurrences. + +'skip-csi-sequence ()' + Read enough characters to consume a multi-key sequence such as + those defined for keys like Home and End. Such sequences begin + with a Control Sequence Indicator (CSI), usually ESC-[. If this + sequence is bound to "\e[", keys producing such sequences will have + no effect unless explicitly bound to a readline command, instead of + inserting stray characters into the editing buffer. This is + unbound by default, but usually bound to ESC-[. + +'insert-comment (M-#)' + Without a numeric argument, the value of the 'comment-begin' + variable is inserted at the beginning of the current line. If a + numeric argument is supplied, this command acts as a toggle: if 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. + +'dump-functions ()' + Print all of the functions and their key bindings to the Readline + output stream. If a numeric argument is supplied, the output is + formatted in such a way that it can be made part of an INPUTRC + file. This command is unbound by default. + +'dump-variables ()' + Print all of the settable variables and their values to the + Readline output stream. If a numeric argument is supplied, the + output is formatted in such a way that it can be made part of an + INPUTRC file. This command is unbound by default. + +'dump-macros ()' + Print all of the Readline key sequences bound to macros and the + strings they output. If a numeric argument is supplied, the output + is formatted in such a way that it can be made part of an INPUTRC + file. This command is unbound by default. + +'glob-complete-word (M-g)' + The word before point is treated as a pattern for pathname + expansion, with an asterisk implicitly appended. This pattern is + used to generate a list of matching file names for possible + completions. + +'glob-expand-word (C-x *)' + The word before point is treated as a pattern for pathname + expansion, and the list of matching file names is inserted, + replacing the word. If a numeric argument is supplied, a '*' is + appended before pathname expansion. + +'glob-list-expansions (C-x g)' + The list of expansions that would have been generated by + 'glob-expand-word' is displayed, and the line is redrawn. If a + numeric argument is supplied, a '*' is appended before pathname + expansion. + +'display-shell-version (C-x C-v)' + Display version information about the current instance of Bash. + +'shell-expand-line (M-C-e)' + Expand the line as the shell does. This performs alias and history + expansion as well as all of the shell word expansions (*note Shell + Expansions::). + +'history-expand-line (M-^)' + Perform history expansion on the current line. + +'magic-space ()' + Perform history expansion on the current line and insert a space + (*note History Interaction::). + +'alias-expand-line ()' + Perform alias expansion on the current line (*note Aliases::). + +'history-and-alias-expand-line ()' + Perform history and alias expansion on the current line. + +'insert-last-argument (M-. or M-_)' + A synonym for 'yank-last-arg'. + +'edit-and-execute-command (C-x C-e)' + Invoke an editor on the current command line, and execute the + result as shell commands. Bash attempts to invoke '$VISUAL', + '$EDITOR', and 'emacs' as the editor, in that order. + + +File: bashref.info, Node: Readline vi Mode, Next: Programmable Completion, Prev: Bindable Readline Commands, Up: Command Line Editing + +8.5 Readline vi Mode +==================== + +While the Readline library does not have a full set of 'vi' editing +functions, it does contain enough to allow simple editing of the line. +The Readline 'vi' mode behaves as specified in the POSIX standard. + + In order to switch interactively between 'emacs' and 'vi' editing +modes, use the 'set -o emacs' and 'set -o vi' commands (*note The Set +Builtin::). The Readline default is 'emacs' mode. + + When you enter a line in 'vi' mode, you are already placed in +'insertion' mode, as if you had typed an 'i'. Pressing switches +you into 'command' mode, where you can edit the text of the line with +the standard 'vi' movement keys, move to previous history lines with 'k' +and subsequent lines with 'j', and so forth. + + +File: bashref.info, Node: Programmable Completion, Next: Programmable Completion Builtins, Prev: Readline vi Mode, Up: Command Line Editing + +8.6 Programmable Completion +=========================== + +When word completion is attempted for an argument to a command for which +a completion specification (a COMPSPEC) has been defined using the +'complete' builtin (*note Programmable Completion Builtins::), 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 the empty +string (completion attempted at the beginning of an empty line), any +compspec defined with the '-E' option to 'complete' is used. If the +command word is a full pathname, a compspec for the full pathname is +searched for first. If no compspec is found for the full pathname, an +attempt is made to find a compspec for the portion following the final +slash. If those searches do not result in a compspec, any compspec +defined with the '-D' option to 'complete' is used as the default. If +there is no default compspec, Bash attempts alias expansion on the +command word as a final resort, and attempts to find a compspec for the +command word from any successful expansion + + Once a compspec has been found, it is used to generate the list of +matching words. If a compspec is not found, the default Bash completion +described above (*note Commands For Completion::) 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. *Note Bash +Variables::, for a description of 'FIGNORE'. + + 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' shell 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 within the +string, in order to provide a mechanism for the words to contain shell +metacharacters or characters in the value of 'IFS'. Each word is then +expanded using brace expansion, tilde expansion, parameter and variable +expansion, command substitution, and arithmetic expansion, as described +above (*note Shell Expansions::). The results are split using the rules +described above (*note 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', 'COMP_POINT', +'COMP_KEY', and 'COMP_TYPE' variables are assigned values as described +above (*note Bash Variables::). If a shell function is being invoked, +the 'COMP_WORDS' and 'COMP_CWORD' variables are also set. When the +function or command is invoked, the first argument ($1) is the name of +the command whose arguments are being completed, the second argument +($2) is the word being completed, and the third argument ($3) is the +word preceding the word being completed on the current command line. No +filtering of the generated completions against the word being completed +is performed; the function or command has complete freedom in generating +the matches. + + Any function specified with '-F' is invoked first. The function may +use any of the shell facilities, including the 'compgen' and 'compopt' +builtins described below (*note Programmable Completion Builtins::), to +generate the matches. It must put the possible completions in the +'COMPREPLY' array variable, one per array element. + + 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. If the 'nocasematch' shell option +(see the description of 'shopt' in *note The Shopt Builtin::) is +enabled, the match is performed without regard to the case of alphabetic +characters. + + 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 default Bash +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. + + There is some support for dynamically modifying completions. This is +most useful when used in combination with a default completion specified +with '-D'. It's possible for shell functions executed as completion +handlers to indicate that completion should be retried by returning an +exit status of 124. If a shell function returns 124, and changes the +compspec associated with the command on which completion is being +attempted (supplied as the first argument when the function is +executed), programmable completion restarts from the beginning, with an +attempt to find a new compspec for that command. This allows a set of +completions to be built dynamically as completion is attempted, rather +than being loaded all at once. + + For instance, assuming that there is a library of compspecs, each +kept in a file corresponding to the name of the command, the following +default completion function would load completions dynamically: + + _completion_loader() + { + . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 + } + complete -D -F _completion_loader -o bashdefault -o default + + +File: bashref.info, Node: Programmable Completion Builtins, Next: A Programmable Completion Example, Prev: Programmable Completion, Up: Command Line Editing + +8.7 Programmable Completion Builtins +==================================== + +Three builtin commands are available to manipulate the programmable +completion facilities: one to specify how the arguments to a particular +command are to be completed, and two to modify the completion as it is +happening. + +'compgen' + 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' + complete [-abcdefgjksuv] [-o COMP-OPTION] [-DEI] [-A ACTION] [-G GLOBPAT] + [-W WORDLIST] [-F FUNCTION] [-C COMMAND] [-X FILTERPAT] + [-P PREFIX] [-S SUFFIX] NAME [NAME ...] + complete -pr [-DEI] [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 '-D' option indicates that other + supplied options and actions should apply to the "default" command + completion; that is, completion attempted on a command for which no + completion has previously been defined. The '-E' option indicates + that other supplied options and actions should apply to "empty" + command completion; that is, completion attempted on a blank line. + The '-I' option indicates that other supplied options and actions + should apply to completion on the initial non-assignment word on + the line, or after a command delimiter such as ';' or '|', which is + usually command name completion. If multiple options are supplied, + the '-D' option takes precedence over '-E', and both take + precedence over '-I'. If any of '-D', '-E', or '-I' are supplied, + any other NAME arguments are ignored; these completions only apply + to the case specified by the option. + + The process of applying these completion specifications when word + completion is attempted is described above (*note 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, quoting special + characters, or suppressing trailing spaces). This option + is intended to be used with shell functions specified + with '-F'. + + 'noquote' + Tell Readline not to quote the completed words if they + are filenames (quoting filenames is the default). + + 'nosort' + Tell Readline not to sort the list of possible + completions alphabetically. + + '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 (*note Bindable Readline + Commands::). + + '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 (*note Bash + Builtins::). + + 'hostname' + Hostnames, as taken from the file specified by the + 'HOSTFILE' shell variable (*note Bash Variables::). + + '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 + (*note The Set Builtin::). + + 'shopt' + Shell option names as accepted by the 'shopt' builtin + (*note Bash Builtins::). + + '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'. + + '-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 is executed, $1 is the name of the + command whose arguments are being completed, $2 is the word + being completed, and $3 is the word preceding the word being + completed, as described above (*note Programmable + Completion::). When it finishes, the possible completions are + retrieved from the value of the 'COMPREPLY' array variable. + + '-G GLOBPAT' + The filename expansion pattern GLOBPAT is expanded to generate + the possible completions. + + '-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. + + '-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. + + '-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. + + 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. + +'compopt' + compopt [-o OPTION] [-DEI] [+o OPTION] [NAME] + Modify completion options for each NAME according to the OPTIONs, + or for the currently-executing completion if no NAMEs are supplied. + If no OPTIONs are given, display the completion options for each + NAME or the current completion. The possible values of OPTION are + those valid for the 'complete' builtin described above. The '-D' + option indicates that other supplied options should apply to the + "default" command completion; that is, completion attempted on a + command for which no completion has previously been defined. The + '-E' option indicates that other supplied options should apply to + "empty" command completion; that is, completion attempted on a + blank line. The '-I' option indicates that other supplied options + should apply to completion on the initial non-assignment word on + the line, or after a command delimiter such as ';' or '|', which is + usually command name completion. + + If multiple options are supplied, the '-D' option takes precedence + over '-E', and both take precedence over '-I' + + The return value is true unless an invalid option is supplied, an + attempt is made to modify the options for a NAME for which no + completion specification exists, or an output error occurs. + + +File: bashref.info, Node: A Programmable Completion Example, Prev: Programmable Completion Builtins, Up: Command Line Editing + +8.8 A Programmable Completion Example +===================================== + +The most common way to obtain additional completion functionality beyond +the default actions 'complete' and 'compgen' provide is to use a shell +function and bind it to a particular command using 'complete -F'. + + The following function provides completions for the 'cd' builtin. It +is a reasonably good example of what shell functions must do when used +for completion. This function uses the word passed as '$2' to determine +the directory name to complete. You can also use the 'COMP_WORDS' array +variable; the current word is indexed by the 'COMP_CWORD' variable. + + The function relies on the 'complete' and 'compgen' builtins to do +much of the work, adding only the things that the Bash 'cd' does beyond +accepting basic directory names: tilde expansion (*note Tilde +Expansion::), searching directories in $CDPATH, which is described above +(*note Bourne Shell Builtins::), and basic support for the 'cdable_vars' +shell option (*note The Shopt Builtin::). '_comp_cd' modifies the value +of IFS so that it contains only a newline to accommodate file names +containing spaces and tabs - 'compgen' prints the possible completions +it generates one per line. + + Possible completions go into the COMPREPLY array variable, one +completion per array element. The programmable completion system +retrieves the completions from there when the function returns. + + # A completion function for the cd builtin + # based on the cd completion function from the bash_completion package + _comp_cd() + { + local IFS=$' \t\n' # normalize IFS + local cur _skipdot _cdpath + local i j k + + # Tilde expansion, which also expands tilde to full pathname + case "$2" in + \~*) eval cur="$2" ;; + *) cur=$2 ;; + esac + + # no cdpath or absolute pathname -- straight directory completion + if [[ -z "${CDPATH:-}" ]] || [[ "$cur" == @(./*|../*|/*) ]]; then + # compgen prints paths one per line; could also use while loop + IFS=$'\n' + COMPREPLY=( $(compgen -d -- "$cur") ) + IFS=$' \t\n' + # CDPATH+directories in the current directory if not in CDPATH + else + IFS=$'\n' + _skipdot=false + # preprocess CDPATH to convert null directory names to . + _cdpath=${CDPATH/#:/.:} + _cdpath=${_cdpath//::/:.:} + _cdpath=${_cdpath/%:/:.} + for i in ${_cdpath//:/$'\n'}; do + if [[ $i -ef . ]]; then _skipdot=true; fi + k="${#COMPREPLY[@]}" + for j in $( compgen -d -- "$i/$cur" ); do + COMPREPLY[k++]=${j#$i/} # cut off directory + done + done + $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") ) + IFS=$' \t\n' + fi + + # variable names if appropriate shell option set and no completions + if shopt -q cdable_vars && [[ ${#COMPREPLY[@]} -eq 0 ]]; then + COMPREPLY=( $(compgen -v -- "$cur") ) + fi + + return 0 + } + + We install the completion function using the '-F' option to +'complete': + + # Tell readline to quote appropriate and append slashes to directories; + # use the bash default completion for other arguments + complete -o filenames -o nospace -o bashdefault -F _comp_cd cd + +Since we'd like Bash and Readline to take care of some of the other +details for us, we use several other options to tell Bash and Readline +what to do. The '-o filenames' option tells Readline that the possible +completions should be treated as filenames, and quoted appropriately. +That option will also cause Readline to append a slash to filenames it +can determine are directories (which is why we might want to extend +'_comp_cd' to append a slash if we're using directories found via +CDPATH: Readline can't tell those completions are directories). The '-o +nospace' option tells Readline to not append a space character to the +directory name, in case we want to append to it. The '-o bashdefault' +option brings in the rest of the "Bash default" completions - possible +completion that Bash adds to the default Readline set. These include +things like command name completion, variable completion for words +beginning with '$' or '${', completions containing pathname expansion +patterns (*note Filename Expansion::), and so on. + + Once installed using 'complete', '_comp_cd' will be called every time +we attempt word completion for a 'cd' command. + + Many more examples - an extensive collection of completions for most +of the common GNU, Unix, and Linux commands - are available as part of +the bash_completion project. This is installed by default on many +GNU/Linux distributions. Originally written by Ian Macdonald, the +project now lives at . There +are ports for other systems such as Solaris and Mac OS X. + + An older version of the bash_completion package is distributed with +bash in the 'examples/complete' subdirectory. + + +File: bashref.info, Node: Using History Interactively, Next: Installing Bash, Prev: Command Line Editing, Up: Top + +9 Using History Interactively +***************************** + +This chapter describes how to use the GNU History Library interactively, +from a user's standpoint. It should be considered a user's guide. For +information on using the GNU History Library in other programs, see the +GNU Readline Library Manual. + +* Menu: + +* Bash History Facilities:: How Bash lets you manipulate your command + history. +* Bash History Builtins:: The Bash builtin commands that manipulate + the command history. +* History Interaction:: What it feels like using History as a user. + + +File: bashref.info, Node: Bash History Facilities, Next: Bash History Builtins, Up: Using History Interactively + +9.1 Bash History Facilities +=========================== + +When the '-o history' option to the 'set' builtin is enabled (*note The +Set Builtin::), the shell provides access to the "command history", the +list of commands previously typed. The value of the 'HISTSIZE' shell +variable is used as the 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 but after history expansion is performed, subject to +the values of the shell variables 'HISTIGNORE' and 'HISTCONTROL'. + + When the shell starts up, the history is initialized from the file +named by the 'HISTFILE' variable (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 the +'HISTFILESIZE' variable. When a shell with history enabled exits, the +last '$HISTSIZE' lines are copied from the history list to the file +named by '$HISTFILE'. If the 'histappend' shell option is set (*note +Bash Builtins::), 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 unset, or set to null, a +non-numeric value, or a numeric value less than zero, the history file +is not truncated. + + If the 'HISTTIMEFORMAT' is set, the time stamp information associated +with each history entry is written to the history file, marked with the +history comment character. When the history file is read, lines +beginning with the history comment character followed immediately by a +digit are interpreted as timestamps for the following history entry. + + The builtin command 'fc' may be used to list or edit and re-execute a +portion of the history list. The 'history' builtin may be used to +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 (*note Commands For +History::). + + 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. The 'shopt' builtin is used to set these +options. *Note The Shopt Builtin::, for a description of 'shopt'. + + +File: bashref.info, Node: Bash History Builtins, Next: History Interaction, Prev: Bash History Facilities, Up: Using History Interactively + +9.2 Bash History Builtins +========================= + +Bash provides two builtin commands which manipulate the history list and +history file. + +'fc' + fc [-e ENAME] [-lnr] [FIRST] [LAST] + fc -s [PAT=REP] [COMMAND] + + The first form selects a range of commands from FIRST to LAST from + the history list and displays or edits and re-executes them. Both + FIRST and LAST may be specified as a string (to locate the most + recent 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). + + When listing, a FIRST or LAST of 0 is equivalent to -1 and -0 is + equivalent to the current command (usually the 'fc' command); + otherwise 0 is equivalent to -1 and -0 is invalid. + + If LAST is not specified, it is set to FIRST. If FIRST is not + specified, it is set to the previous command for editing and -16 + for listing. If the '-l' flag is given, the commands are listed on + standard output. The '-n' flag suppresses the command numbers when + listing. The '-r' flag reverses the order of the listing. + Otherwise, the editor given by ENAME is invoked on a file + containing those commands. If ENAME is not given, the value of the + following variable expansion is used: '${FCEDIT:-${EDITOR:-vi}}'. + This says to use the value of the 'FCEDIT' variable if set, or the + value of the 'EDITOR' variable if that is set, or 'vi' if neither + is set. When editing is complete, the edited commands are echoed + and executed. + + In the second form, COMMAND is re-executed after each instance of + PAT in the selected command is replaced by REP. COMMAND is + interpreted the same as FIRST above. + + A useful alias to use with the 'fc' command is 'r='fc -s'', so that + typing 'r cc' runs the last command beginning with 'cc' and typing + 'r' re-executes the last command (*note Aliases::). + +'history' + history [N] + history -c + history -d OFFSET + history -d START-END + history [-anrw] [FILENAME] + history -ps ARG + + With no options, display the history list with line numbers. Lines + prefixed 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 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. + + Options, if supplied, have the following meanings: + + '-c' + Clear the history list. This may be combined with the other + options to replace the history list completely. + + '-d OFFSET' + Delete the history entry at position OFFSET. If OFFSET is + positive, it should be specified as it appears when the + history is displayed. If OFFSET is negative, it is + interpreted as relative to one greater than the last history + position, so negative indices count back from the end of the + history, and an index of '-1' refers to the current 'history + -d' command. + + '-d START-END' + Delete the history entries between positions START and END, + inclusive. Positive and negative values for START and END are + interpreted as described above. + + '-a' + Append the new history lines to the history file. These are + history lines entered since the beginning of the current Bash + session, but not already appended to the history file. + + '-n' + Append the history lines not already read from the history + file to the current history list. These are lines appended to + the history file since the beginning of the current Bash + session. + + '-r' + Read the history file and append its contents to the history + list. + + '-w' + Write out the current history list to the history file. + + '-p' + Perform history substitution on the ARGs and display the + result on the standard output, without storing the results in + the history list. + + '-s' + The ARGs are added to the end of the history list as a single + entry. + + When any of the '-w', '-r', '-a', or '-n' options is used, if + FILENAME is given, then it is used as the history file. If not, + then the value of the 'HISTFILE' variable is used. + + +File: bashref.info, Node: History Interaction, Prev: Bash History Builtins, Up: Using History Interactively + +9.3 History Expansion +===================== + +The History library provides a history expansion feature that is similar +to the history expansion provided by 'csh'. This section describes the +syntax used to manipulate the history information. + + 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, and is performed on each +line individually. Bash attempts to inform the history expansion +functions about quoting still in effect from previous lines. + + History expansion takes place in two parts. The first is to +determine which line from the history list should be used during +substitution. The second is to select portions of that line for +inclusion into the current one. The line selected from the history is +called the "event", and the portions of that line that are acted upon +are called "words". Various "modifiers" are available to manipulate the +selected words. The line is broken into words in the same fashion that +Bash does, so that several words surrounded by quotes are considered one +word. History expansions are introduced by the appearance of the +history expansion character, which is '!' by default. + + History expansion implements shell-like quoting conventions: a +backslash can be used to remove the special handling for the next +character; single quotes enclose verbatim sequences of characters, and +can be used to inhibit history expansion; and characters enclosed within +double quotes may be subject to history expansion, since backslash can +escape the history expansion character, but single quotes may not, since +they are not treated specially within double quotes. + + When using the shell, only '\' and ''' may be used to escape the +history expansion character, but the history expansion character is also +treated as quoted if it immediately precedes the closing double quote in +a double-quoted string. + + Several shell options settable with the 'shopt' builtin (*note The +Shopt Builtin::) may be used to tailor the behavior of history +expansion. If the 'histverify' shell option is enabled, 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 expansion +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. This is most useful in conjunction with Readline. + + The shell allows control of the various characters used by the +history expansion mechanism with the 'histchars' variable, as explained +above (*note Bash Variables::). The shell uses the history comment +character to mark history timestamps when writing the history file. + +* Menu: + +* Event Designators:: How to specify which history line to use. +* Word Designators:: Specifying which words are of interest. +* Modifiers:: Modifying the results of substitution. + + +File: bashref.info, Node: Event Designators, Next: Word Designators, Up: History Interaction + +9.3.1 Event Designators +----------------------- + +An event designator is a reference to a command line entry in the +history list. Unless the reference is absolute, events are relative to +the current position in the history list. + +'!' + Start a history substitution, except when followed by a space, tab, + the end of the line, '=' or '(' (when the 'extglob' shell option is + enabled using the 'shopt' builtin). + +'!N' + Refer to command line N. + +'!-N' + Refer to the command N lines back. + +'!!' + Refer to the previous command. This is a synonym for '!-1'. + +'!STRING' + Refer to the most recent command preceding the current position in + the history list starting with STRING. + +'!?STRING[?]' + Refer to the most recent command preceding the current position in + the history list containing STRING. The trailing '?' may be + omitted if the STRING is followed immediately by a newline. If + STRING is missing, the string from the most recent search is used; + it is an error if there is no previous search string. + +'^STRING1^STRING2^' + Quick Substitution. Repeat the last command, replacing STRING1 + with STRING2. Equivalent to '!!:s^STRING1^STRING2^'. + +'!#' + The entire command line typed so far. + + +File: bashref.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction + +9.3.2 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. + + For example, + +'!!' + designates the preceding command. When you type this, the + preceding command is repeated in toto. + +'!!:$' + designates the last argument of the preceding command. This may be + shortened to '!$'. + +'!fi:2' + designates the second argument of the most recent command starting + with the letters 'fi'. + + Here are the word designators: + +'0 (zero)' + The '0'th word. For many applications, this is the command word. + +'N' + The Nth word. + +'^' + The first argument; that is, word 1. + +'$' + The last argument. + +'%' + The first word matched by the most recent '?STRING?' search, if the + search string begins with a character that is part of a word. + +'X-Y' + A range of words; '-Y' abbreviates '0-Y'. + +'*' + All of the words, except the '0'th. 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 'x' is + missing, it defaults to 0. + + If a word designator is supplied without an event specification, the +previous command is used as the event. + + +File: bashref.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction + +9.3.3 Modifiers +--------------- + +After the optional word designator, you can add a sequence of one or +more of the following modifiers, each preceded by a ':'. These modify, +or edit, the word or words selected from the history event. + +'h' + Remove a trailing pathname component, leaving only the head. + +'t' + Remove all leading pathname components, leaving the tail. + +'r' + Remove a trailing suffix of the form '.SUFFIX', 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 + spaces, tabs, and newlines. The 'q' and 'x' modifiers are mutually + exclusive; the last one supplied is used. + +'s/OLD/NEW/' + Substitute NEW for the first occurrence of OLD in the event line. + Any character may be used as the delimiter in place of '/'. 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. If NEW is is null, each + matching OLD is deleted. The final delimiter is optional if it is + the last character on the input line. + +'&' + Repeat the previous substitution. + +'g' +'a' + Cause changes to be applied over the entire event line. Used in + conjunction with 's', as in 'gs/OLD/NEW/', or with '&'. + +'G' + Apply the following 's' or '&' modifier once to each word in the + event. + + +File: bashref.info, Node: Installing Bash, Next: Reporting Bugs, Prev: Using History Interactively, Up: Top + +10 Installing Bash +****************** + +This chapter provides basic instructions for installing Bash on the +various supported platforms. The distribution supports the GNU +operating systems, nearly every version of Unix, and several non-Unix +systems such as BeOS and Interix. Other independent ports exist for +MS-DOS, OS/2, and Windows platforms. + +* Menu: + +* Basic Installation:: Installation instructions. +* Compilers and Options:: How to set special options for various + systems. +* Compiling For Multiple Architectures:: How to compile Bash for more + than one kind of system from + the same source tree. +* Installation Names:: How to set the various paths used by the installation. +* Specifying the System Type:: How to configure Bash for a particular system. +* Sharing Defaults:: How to share default configuration values among GNU + programs. +* Operation Controls:: Options recognized by the configuration program. +* Optional Features:: How to enable and disable optional features when + building Bash. + + +File: bashref.info, Node: Basic Installation, Next: Compilers and Options, Up: Installing Bash + +10.1 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-4.2$ ./configure --help + +at the Bash prompt in your Bash source directory. + + If you want to build Bash in a directory separate from the source +directory - to build for multiple architectures, for example - just use +the full path to the configure script. The following commands will +build bash in a directory under '/usr/local/build' from the source code +in '/usr/local/src/bash-4.4': + + mkdir /usr/local/build/bash-4.4 + cd /usr/local/build/bash-4.4 + bash /usr/local/src/bash-4.4/configure + make + + See *note Compiling For Multiple Architectures:: for more information +about building in a directory separate from the source. + + 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.ac' is used to create 'configure' by a program +called Autoconf. You only need 'configure.ac' if you want to change it +or regenerate 'configure' using a newer version of Autoconf. If you do +this, make sure you are using Autoconf version 2.50 or newer. + + 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'. + + +File: bashref.info, Node: Compilers and Options, Next: Compiling For Multiple Architectures, Prev: Basic Installation, Up: Installing Bash + +10.2 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. + + +File: bashref.info, Node: Compiling For Multiple Architectures, Next: Installation Names, Prev: Compilers and Options, Up: Installing Bash + +10.3 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 (*note Basic Installation::). 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. + + +File: bashref.info, Node: Installation Names, Next: Specifying the System Type, Prev: Compiling For Multiple Architectures, Up: Installing Bash + +10.4 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. + + +File: bashref.info, Node: Specifying the System Type, Next: Sharing Defaults, Prev: Installation Names, Up: Installing Bash + +10.5 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. + + +File: bashref.info, Node: Sharing Defaults, Next: Operation Controls, Prev: Specifying the System Type, Up: Installing Bash + +10.6 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. + + +File: bashref.info, Node: Operation Controls, Next: Optional Features, Prev: Sharing Defaults, Up: Installing Bash + +10.7 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. + + +File: bashref.info, Node: Optional Features, Prev: Operation Controls, Up: Installing Bash + +10.8 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.unix.org/version2/whatsnew/lfs20mar.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', +'direxpand-default', and 'xpg-echo-default' are enabled by default, +unless the operating system does not provide the necessary support. + +'--enable-alias' + Allow alias expansion and include the 'alias' and 'unalias' + 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-casemod-attributes' + Include support for case-modifying attributes in the 'declare' + builtin and assignment statements. Variables with the UPPERCASE + attribute, for example, will have their values converted to + uppercase upon assignment. + +'--enable-casemod-expansion' + Include support for case-modifying word expansions. + +'--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-coprocesses' + Include support for coprocesses and the 'coproc' reserved word + (*note Pipelines::). + +'--enable-debugger' + Include support for the bash debugger (distributed separately). + +'--enable-dev-fd-stat-broken' + If calling 'stat' on /dev/fd/N returns different results than + calling 'fstat' on file descriptor N, supply this option to enable + a workaround. This has implications for conditional commands that + test file attributes. + +'--enable-direxpand-default' + Cause the 'direxpand' shell option (*note The Shopt Builtin::) to + be enabled by default when the shell starts. It is normally + disabled by default. + +'--enable-directory-stack' + Include support for a 'csh'-like directory stack and the 'pushd', + 'popd', and 'dirs' builtins (*note The Directory Stack::). + +'--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-extended-glob-default' + Set the default value of the EXTGLOB shell option described above + under *note The Shopt Builtin:: to be enabled. + +'--enable-function-import' + Include support for importing function definitions exported by + another instance of the shell from the environment. This option is + enabled by default. + +'--enable-glob-asciirange-default' + Set the default value of the GLOBASCIIRANGES shell option described + above under *note The Shopt Builtin:: to be enabled. This controls + the behavior of character ranges when used in pattern matching + bracket expressions. + +'--enable-help-builtin' + Include the 'help' builtin, which displays help on shell builtins + and variables (*note Bash Builtins::). + +'--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 '$PS0', '$PS1', '$PS2', and '$PS4' prompt + strings. See *note Controlling the Prompt::, for a complete list + of prompt string escape sequences. + +'--enable-readline' + Include support for command-line editing and history with the Bash + 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' compound command, 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. + + +File: bashref.info, Node: Reporting Bugs, Next: Major Differences From The Bourne Shell, Prev: Installing Bash, Up: Top + +Appendix A Reporting Bugs +************************* + +Please report all bugs you find in Bash. 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 of Bash is always available for FTP from +. + + 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 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 Bash. + * A description of the bug behaviour. + * A short script or 'recipe' which exercises the bug and may be used + to reproduce it. + +'bashbug' inserts the first three items automatically into the template +it provides for filing a bug report. + + Please send all reports concerning this manual to . + + +File: bashref.info, Node: Major Differences From The Bourne Shell, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top + +Appendix B Major Differences From The Bourne Shell +************************************************** + +Bash implements essentially the same grammar, parameter and variable +expansion, redirection, and quoting as the Bourne Shell. Bash uses the +POSIX standard as the specification of how these features are to be +implemented. There are some differences between the traditional Bourne +shell and Bash; this section quickly details the differences of +significance. A number of these differences are explained in greater +depth in previous sections. This section uses the version of 'sh' +included in SVR4.2 (the last version of the historical Bourne shell) as +the baseline reference. + + * Bash is POSIX-conformant, even where the POSIX specification + differs from traditional 'sh' behavior (*note Bash POSIX Mode::). + + * Bash has multi-character invocation options (*note Invoking + Bash::). + + * Bash has command-line editing (*note Command Line Editing::) and + the 'bind' builtin. + + * Bash provides a programmable word completion mechanism (*note + Programmable Completion::), and builtin commands 'complete', + 'compgen', and 'compopt', to manipulate it. + + * Bash has command history (*note Bash History Facilities::) and the + 'history' and 'fc' builtins to manipulate it. The Bash history + list maintains timestamp information and uses the value of the + 'HISTTIMEFORMAT' variable to display it. + + * Bash implements 'csh'-like history expansion (*note History + Interaction::). + + * Bash has one-dimensional array variables (*note Arrays::), and the + appropriate variable expansions and assignment syntax to use them. + Several of the Bash builtins take options to act on arrays. Bash + provides a number of built-in array variables. + + * The '$'...'' quoting syntax, which expands ANSI-C backslash-escaped + characters in the text between the single quotes, is supported + (*note ANSI-C Quoting::). + + * Bash supports the '$"..."' quoting syntax to do locale-specific + translation of the characters between the double quotes. The '-D', + '--dump-strings', and '--dump-po-strings' invocation options list + the translatable strings found in a script (*note Locale + Translation::). + + * Bash implements the '!' keyword to negate the return value of a + pipeline (*note Pipelines::). Very useful when an 'if' statement + needs to act only if a test fails. The Bash '-o pipefail' option + to 'set' will cause a pipeline to return a failure status if any + command fails. + + * Bash has the 'time' reserved word and command timing (*note + Pipelines::). The display of the timing statistics may be + controlled with the 'TIMEFORMAT' variable. + + * Bash implements the 'for (( EXPR1 ; EXPR2 ; EXPR3 ))' arithmetic + for command, similar to the C language (*note Looping + Constructs::). + + * Bash includes the 'select' compound command, which allows the + generation of simple menus (*note Conditional Constructs::). + + * Bash includes the '[[' compound command, which makes conditional + testing part of the shell grammar (*note Conditional Constructs::), + including optional regular expression matching. + + * Bash provides optional case-insensitive matching for the 'case' and + '[[' constructs. + + * Bash includes brace expansion (*note Brace Expansion::) and tilde + expansion (*note Tilde Expansion::). + + * Bash implements command aliases and the 'alias' and 'unalias' + builtins (*note Aliases::). + + * Bash provides shell arithmetic, the '((' compound command (*note + Conditional Constructs::), and arithmetic expansion (*note Shell + Arithmetic::). + + * Variables present in the shell's initial environment are + automatically exported to child processes. The Bourne shell does + not normally do this unless the variables are explicitly marked + using the 'export' command. + + * Bash supports the '+=' assignment operator, which appends to the + value of the variable named on the left hand side. + + * Bash includes the POSIX pattern removal '%', '#', '%%' and '##' + expansions to remove leading or trailing substrings from variable + values (*note Shell Parameter Expansion::). + + * The expansion '${#xx}', which returns the length of '${xx}', is + supported (*note Shell Parameter Expansion::). + + * The expansion '${var:'OFFSET'[:'LENGTH']}', which expands to the + substring of 'var''s value of length LENGTH, beginning at OFFSET, + is present (*note Shell Parameter Expansion::). + + * The expansion '${var/[/]'PATTERN'[/'REPLACEMENT']}', which matches + PATTERN and replaces it with REPLACEMENT in the value of 'var', is + available (*note Shell Parameter Expansion::). + + * The expansion '${!PREFIX*}' expansion, which expands to the names + of all shell variables whose names begin with PREFIX, is available + (*note Shell Parameter Expansion::). + + * Bash has INDIRECT variable expansion using '${!word}' (*note Shell + Parameter Expansion::). + + * Bash can expand positional parameters beyond '$9' using '${NUM}'. + + * The POSIX '$()' form of command substitution is implemented (*note + Command Substitution::), and preferred to the Bourne shell's '``' + (which is also implemented for backwards compatibility). + + * Bash has process substitution (*note Process Substitution::). + + * Bash automatically assigns variables that provide information about + the current user ('UID', 'EUID', and 'GROUPS'), the current host + ('HOSTTYPE', 'OSTYPE', 'MACHTYPE', and 'HOSTNAME'), and the + instance of Bash that is running ('BASH', 'BASH_VERSION', and + 'BASH_VERSINFO'). *Note Bash Variables::, for details. + + * The 'IFS' variable is used to split only the results of expansion, + not all words (*note Word Splitting::). This closes a longstanding + shell security hole. + + * The filename expansion bracket expression code uses '!' and '^' to + negate the set of characters between the brackets. The Bourne + shell uses only '!'. + + * Bash implements the full set of POSIX filename expansion operators, + including CHARACTER CLASSES, EQUIVALENCE CLASSES, and COLLATING + SYMBOLS (*note Filename Expansion::). + + * Bash implements extended pattern matching features when the + 'extglob' shell option is enabled (*note Pattern Matching::). + + * It is possible to have a variable and a function with the same + name; 'sh' does not separate the two name spaces. + + * Bash functions are permitted to have local variables using the + 'local' builtin, and thus useful recursive functions may be written + (*note Bash Builtins::). + + * Variable assignments preceding commands affect only that command, + even builtins and functions (*note Environment::). In 'sh', all + variable assignments preceding commands are global unless the + command is executed from the file system. + + * Bash performs filename expansion on filenames specified as operands + to input and output redirection operators (*note Redirections::). + + * Bash contains the '<>' redirection operator, allowing a file to be + opened for both reading and writing, and the '&>' redirection + operator, for directing standard output and standard error to the + same file (*note Redirections::). + + * Bash includes the '<<<' redirection operator, allowing a string to + be used as the standard input to a command. + + * Bash implements the '[n]<&WORD' and '[n]>&WORD' redirection + operators, which move one file descriptor to another. + + * Bash treats a number of filenames specially when they are used in + redirection operators (*note Redirections::). + + * Bash can open network connections to arbitrary machines and + services with the redirection operators (*note Redirections::). + + * The 'noclobber' option is available to avoid overwriting existing + files with output redirection (*note The Set Builtin::). The '>|' + redirection operator may be used to override 'noclobber'. + + * The Bash 'cd' and 'pwd' builtins (*note Bourne Shell Builtins::) + each take '-L' and '-P' options to switch between logical and + physical modes. + + * Bash allows a function to override a builtin with the same name, + and provides access to that builtin's functionality within the + function via the 'builtin' and 'command' builtins (*note Bash + Builtins::). + + * The 'command' builtin allows selective disabling of functions when + command lookup is performed (*note Bash Builtins::). + + * Individual builtins may be enabled or disabled using the 'enable' + builtin (*note Bash Builtins::). + + * The Bash 'exec' builtin takes additional options that allow users + to control the contents of the environment passed to the executed + command, and what the zeroth argument to the command is to be + (*note Bourne Shell Builtins::). + + * Shell functions may be exported to children via the environment + using 'export -f' (*note Shell Functions::). + + * The Bash 'export', 'readonly', and 'declare' builtins can take a + '-f' option to act on shell functions, a '-p' option to display + variables with various attributes set in a format that can be used + as shell input, a '-n' option to remove various variable + attributes, and 'name=value' arguments to set variable attributes + and values simultaneously. + + * The Bash 'hash' builtin allows a name to be associated with an + arbitrary filename, even when that filename cannot be found by + searching the '$PATH', using 'hash -p' (*note Bourne Shell + Builtins::). + + * Bash includes a 'help' builtin for quick reference to shell + facilities (*note Bash Builtins::). + + * The 'printf' builtin is available to display formatted output + (*note Bash Builtins::). + + * The Bash 'read' builtin (*note Bash Builtins::) will read a line + ending in '\' with the '-r' option, and will use the 'REPLY' + variable as a default if no non-option arguments are supplied. The + Bash 'read' builtin also accepts a prompt string with the '-p' + option and will use Readline to obtain the line when given the '-e' + option. The 'read' builtin also has additional options to control + input: the '-s' option will turn off echoing of input characters as + they are read, the '-t' option will allow 'read' to time out if + input does not arrive within a specified number of seconds, the + '-n' option will allow reading only a specified number of + characters rather than a full line, and the '-d' option will read + until a particular character rather than newline. + + * The 'return' builtin may be used to abort execution of scripts + executed with the '.' or 'source' builtins (*note Bourne Shell + Builtins::). + + * Bash includes the 'shopt' builtin, for finer control of shell + optional capabilities (*note The Shopt Builtin::), and allows these + options to be set and unset at shell invocation (*note Invoking + Bash::). + + * Bash has much more optional behavior controllable with the 'set' + builtin (*note The Set Builtin::). + + * The '-x' ('xtrace') option displays commands other than simple + commands when performing an execution trace (*note The Set + Builtin::). + + * The 'test' builtin (*note Bourne Shell Builtins::) is slightly + different, as it implements the POSIX algorithm, which specifies + the behavior based on the number of arguments. + + * Bash includes the 'caller' builtin, which displays the context of + any active subroutine call (a shell function or a script executed + with the '.' or 'source' builtins). This supports the bash + debugger. + + * The 'trap' builtin (*note Bourne Shell Builtins::) allows a 'DEBUG' + pseudo-signal specification, similar to 'EXIT'. Commands specified + with a 'DEBUG' trap are 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. + The 'DEBUG' trap is not inherited by shell functions unless the + function has been given the 'trace' attribute or the 'functrace' + option has been enabled using the 'shopt' builtin. The 'extdebug' + shell option has additional effects on the 'DEBUG' trap. + + The 'trap' builtin (*note Bourne Shell Builtins::) allows an 'ERR' + pseudo-signal specification, similar to 'EXIT' and 'DEBUG'. + Commands specified with an 'ERR' trap are executed after a simple + command fails, with a few exceptions. The 'ERR' trap is not + inherited by shell functions unless the '-o errtrace' option to the + 'set' builtin is enabled. + + The 'trap' builtin (*note Bourne Shell Builtins::) allows a + 'RETURN' pseudo-signal specification, similar to 'EXIT' and + 'DEBUG'. Commands specified with an 'RETURN' trap are executed + before execution resumes after a shell function or a shell script + executed with '.' or 'source' returns. The 'RETURN' trap is not + inherited by shell functions unless the function has been given the + 'trace' attribute or the 'functrace' option has been enabled using + the 'shopt' builtin. + + * The Bash 'type' builtin is more extensive and gives more + information about the names it finds (*note Bash Builtins::). + + * The Bash 'umask' builtin permits a '-p' option to cause the output + to be displayed in the form of a 'umask' command that may be reused + as input (*note Bourne Shell Builtins::). + + * Bash implements a 'csh'-like directory stack, and provides the + 'pushd', 'popd', and 'dirs' builtins to manipulate it (*note The + Directory Stack::). Bash also makes the directory stack visible as + the value of the 'DIRSTACK' shell variable. + + * Bash interprets special backslash-escaped characters in the prompt + strings when interactive (*note Controlling the Prompt::). + + * The Bash restricted mode is more useful (*note The Restricted + Shell::); the SVR4.2 shell restricted mode is too limited. + + * The 'disown' builtin can remove a job from the internal shell job + table (*note Job Control Builtins::) or suppress the sending of + 'SIGHUP' to a job when the shell exits as the result of a 'SIGHUP'. + + * Bash includes a number of features to support a separate debugger + for shell scripts. + + * The SVR4.2 shell has two privilege-related builtins ('mldmode' and + 'priv') not present in Bash. + + * Bash does not have the 'stop' or 'newgrp' builtins. + + * Bash does not use the 'SHACCT' variable or perform shell + accounting. + + * The SVR4.2 'sh' uses a 'TIMEOUT' variable like Bash uses 'TMOUT'. + +More features unique to Bash may be found in *note Bash Features::. + +B.1 Implementation Differences From The SVR4.2 Shell +==================================================== + +Since Bash is a completely new implementation, it does not suffer from +many of the limitations of the SVR4.2 shell. For instance: + + * Bash does not fork a subshell when redirecting into or out of a + shell control structure such as an 'if' or 'while' statement. + + * Bash does not allow unbalanced quotes. The SVR4.2 shell will + silently insert a needed closing quote at 'EOF' under certain + circumstances. This can be the cause of some hard-to-find errors. + + * The SVR4.2 shell uses a baroque memory management scheme based on + trapping 'SIGSEGV'. If the shell is started from a process with + 'SIGSEGV' blocked (e.g., by using the 'system()' C library function + call), it misbehaves badly. + + * In a questionable attempt at security, the SVR4.2 shell, when + invoked without the '-p' option, will alter its real and effective + UID and GID if they are less than some magic threshold value, + commonly 100. This can lead to unexpected results. + + * The SVR4.2 shell does not allow users to trap 'SIGSEGV', 'SIGALRM', + or 'SIGCHLD'. + + * The SVR4.2 shell does not allow the 'IFS', 'MAILCHECK', 'PATH', + 'PS1', or 'PS2' variables to be unset. + + * The SVR4.2 shell treats '^' as the undocumented equivalent of '|'. + + * Bash allows multiple option arguments when it is invoked ('-x -v'); + the SVR4.2 shell allows only one option argument ('-xv'). In fact, + some versions of the shell dump core if the second argument begins + with a '-'. + + * The SVR4.2 shell exits a script if any builtin fails; Bash exits a + script only if one of the POSIX special builtins fails, and only + for certain failures, as enumerated in the POSIX standard. + + * The SVR4.2 shell behaves differently when invoked as 'jsh' (it + turns on job control). + + +File: bashref.info, Node: GNU Free Documentation License, Next: Indexes, Prev: Major Differences From The Bourne Shell, Up: Top + +Appendix C GNU Free Documentation License +***************************************** + + Version 1.3, 3 November 2008 + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document "free" in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the + author and publisher a way to get credit for their work, while not + being considered responsible for modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. We + recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, + that contains a notice placed by the copyright holder saying it can + be distributed under the terms of this License. Such a notice + grants a world-wide, royalty-free license, unlimited in duration, + to use that work under the conditions stated herein. The + "Document", below, refers to any such manual or work. Any member + of the public is a licensee, and is addressed as "you". You accept + the license if you copy, modify or distribute the work in a way + requiring permission under copyright law. + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter section + of the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall + subject (or to related matters) and contains nothing that could + fall directly within that overall subject. (Thus, if the Document + is in part a textbook of mathematics, a Secondary Section may not + explain any mathematics.) The relationship could be a matter of + historical connection with the subject or with related matters, or + of legal, commercial, philosophical, ethical or political position + regarding them. + + The "Invariant Sections" are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in the + notice that says that the Document is released under this License. + If a section does not fit the above definition of Secondary then it + is not allowed to be designated as Invariant. The Document may + contain zero Invariant Sections. If the Document does not identify + any Invariant Sections then there are none. + + The "Cover Texts" are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + that says that the Document is released under this License. A + Front-Cover Text may be at most 5 words, and a Back-Cover Text may + be at most 25 words. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images composed + of pixels) generic paint programs or (for drawings) some widely + available drawing editor, and that is suitable for input to text + formatters or for automatic translation to a variety of formats + suitable for input to text formatters. A copy made in an otherwise + Transparent file format whose markup, or absence of markup, has + been arranged to thwart or discourage subsequent modification by + readers is not Transparent. An image format is not Transparent if + used for any substantial amount of text. A copy that is not + "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and standard-conforming + simple HTML, PostScript or PDF designed for human modification. + Examples of transparent image formats include PNG, XCF and JPG. + Opaque formats include proprietary formats that can be read and + edited only by proprietary word processors, SGML or XML for which + the DTD and/or processing tools are not generally available, and + the machine-generated HTML, PostScript or PDF produced by some word + processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, "Title + Page" means the text near the most prominent appearance of the + work's title, preceding the beginning of the body of the text. + + The "publisher" means any person or entity that distributes copies + of the Document to the public. + + A section "Entitled XYZ" means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ + stands for a specific section name mentioned below, such as + "Acknowledgements", "Dedications", "Endorsements", or "History".) + To "Preserve the Title" of such a section when you modify the + Document means that it remains a section "Entitled XYZ" according + to this definition. + + The Document may include Warranty Disclaimers next to the notice + which states that this License applies to the Document. These + Warranty Disclaimers are considered to be included by reference in + this License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and + has no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow the + conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly + have printed covers) of the Document, numbering more than 100, and + the Document's license notice requires Cover Texts, you must + enclose the copies in covers that carry, clearly and legibly, all + these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the title + equally prominent and visible. You may add other material on the + covers in addition. Copying with changes limited to the covers, as + long as they preserve the title of the Document and satisfy these + conditions, can be treated as verbatim copying in other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a machine-readable + Transparent copy along with each Opaque copy, or state in or with + each Opaque copy a computer-network location from which the general + network-using public has access to download using public-standard + network protocols a complete Transparent copy of the Document, free + of added material. If you use the latter option, you must take + reasonably prudent steps, when you begin distribution of Opaque + copies in quantity, to ensure that this Transparent copy will + remain thus accessible at the stated location until at least one + year after the last time you distribute an Opaque copy (directly or + through your agents or retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of copies, + to give them a chance to provide you with an updated version of the + Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with the + Modified Version filling the role of the Document, thus licensing + distribution and modification of the Modified Version to whoever + possesses a copy of it. In addition, you must do these things in + the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of previous + versions (which should, if there were any, be listed in the + History section of the Document). You may use the same title + as a previous version if the original publisher of that + version gives permission. + + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in + the Modified Version, together with at least five of the + principal authors of the Document (all of its principal + authors, if it has fewer than five), unless they release you + from this requirement. + + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + D. Preserve all the copyright notices of the Document. + + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified + Version under the terms of this License, in the form shown in + the Addendum below. + + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document's + license notice. + + H. Include an unaltered copy of this License. + + I. Preserve the section Entitled "History", Preserve its Title, + and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on the + Title Page. If there is no section Entitled "History" in the + Document, create one stating the title, year, authors, and + publisher of the Document as given on its Title Page, then add + an item describing the Modified Version as stated in the + previous sentence. + + J. Preserve the network location, if any, given in the Document + for public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in the + "History" section. You may omit a network location for a work + that was published at least four years before the Document + itself, or if the original publisher of the version it refers + to gives permission. + + K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section + all the substance and tone of each of the contributor + acknowledgements and/or dedications given therein. + + L. Preserve all the Invariant Sections of the Document, unaltered + in their text and in their titles. Section numbers or the + equivalent are not considered part of the section titles. + + M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + + N. Do not retitle any existing section to be Entitled + "Endorsements" or to conflict in title with any Invariant + Section. + + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option designate + some or all of these sections as invariant. To do this, add their + titles to the list of Invariant Sections in the Modified Version's + license notice. These titles must be distinct from any other + section titles. + + You may add a section Entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text + has been approved by an organization as the authoritative + definition of a standard. + + You may add a passage of up to five words as a Front-Cover Text, + and a passage of up to 25 words as a Back-Cover Text, to the end of + the list of Cover Texts in the Modified Version. Only one passage + of Front-Cover Text and one of Back-Cover Text may be added by (or + through arrangements made by) any one entity. If the Document + already includes a cover text for the same cover, previously added + by you or by arrangement made by the same entity you are acting on + behalf of, you may not add another; but you may replace the old + one, on explicit permission from the previous publisher that added + the old one. + + The author(s) and publisher(s) of the Document do not by this + License give permission to use their names for publicity for or to + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination all + of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all + their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + by adding at the end of it, in parentheses, the name of the + original author or publisher of that section if known, or else a + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections Entitled + "History" in the various original documents, forming one section + Entitled "History"; likewise combine any sections Entitled + "Acknowledgements", and any sections Entitled "Dedications". You + must delete all sections Entitled "Endorsements." + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the documents + in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow this + License in all other respects regarding verbatim copying of that + document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of a + storage or distribution medium, is called an "aggregate" if the + copyright resulting from the compilation is not used to limit the + legal rights of the compilation's users beyond what the individual + works permit. When the Document is included in an aggregate, this + License does not apply to the other works in the aggregate which + are not themselves derivative works of the Document. + + If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one half + of the entire aggregate, the Document's Cover Texts may be placed + on covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic + form. Otherwise they must appear on printed covers that bracket + the whole aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warranty Disclaimers, provided that you also + include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of + this License or a notice or disclaimer, the original version will + prevail. + + If a section in the Document is Entitled "Acknowledgements", + "Dedications", or "History", the requirement (section 4) to + Preserve its Title (section 1) will typically require changing the + actual title. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense, or distribute it is void, + and will automatically terminate your rights under this License. + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the + copyright holder fails to notify you of the violation by some + reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from + that copyright holder, and you cure the violation prior to 30 days + after your receipt of the notice. + + Termination of your rights under this section does not terminate + the licenses of parties who have received copies or rights from you + under this License. If your rights have been terminated and not + permanently reinstated, receipt of a copy of some or all of the + same material does not give you any rights to use it. + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of + the GNU Free Documentation 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. See + . + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License "or any later version" applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If the + Document does not specify a version number of this License, you may + choose any version ever published (not as a draft) by the Free + Software Foundation. If the Document specifies that a proxy can + decide which future versions of this License can be used, that + proxy's public statement of acceptance of a version permanently + authorizes you to choose that version for the Document. + + 11. RELICENSING + + "Massive Multiauthor Collaboration Site" (or "MMC Site") means any + World Wide Web server that publishes copyrightable works and also + provides prominent facilities for anybody to edit those works. A + public wiki that anybody can edit is an example of such a server. + A "Massive Multiauthor Collaboration" (or "MMC") contained in the + site means any set of copyrightable works thus published on the MMC + site. + + "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 + license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license + published by that same organization. + + "Incorporate" means to publish or republish a Document, in whole or + in part, as part of another Document. + + An MMC is "eligible for relicensing" if it is licensed under this + License, and if all works that were first published under this + License somewhere other than this MMC, and subsequently + incorporated in whole or in part into the MMC, (1) had no cover + texts or invariant sections, and (2) were thus incorporated prior + to November 1, 2008. + + The operator of an MMC Site may republish an MMC contained in the + site under CC-BY-SA on the same site at any time before August 1, + 2009, provided the MMC is eligible for relicensing. + +ADDENDUM: How to use this License for your documents +==================================================== + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and license +notices just after the title page: + + Copyright (C) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU + Free Documentation License''. + + If you have Invariant Sections, Front-Cover Texts and Back-Cover +Texts, replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with + the Front-Cover Texts being LIST, and with the Back-Cover Texts + being LIST. + + If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + + If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of free +software license, such as the GNU General Public License, to permit +their use in free software. + + +File: bashref.info, Node: Indexes, Prev: GNU Free Documentation License, Up: Top + +Appendix D Indexes +****************** + +* Menu: + +* Builtin Index:: Index of Bash builtin commands. +* Reserved Word Index:: Index of Bash reserved words. +* Variable Index:: Quick reference helps you find the + variable you want. +* Function Index:: Index of bindable Readline functions. +* Concept Index:: General index for concepts described in + this manual. + + +File: bashref.info, Node: Builtin Index, Next: Reserved Word Index, Up: Indexes + +D.1 Index of Shell Builtin Commands +=================================== + +[index] +* Menu: + +* .: Bourne Shell Builtins. + (line 17) +* :: Bourne Shell Builtins. + (line 11) +* [: Bourne Shell Builtins. + (line 270) +* alias: Bash Builtins. (line 11) +* bg: Job Control Builtins. + (line 7) +* bind: Bash Builtins. (line 21) +* break: Bourne Shell Builtins. + (line 36) +* builtin: Bash Builtins. (line 104) +* caller: Bash Builtins. (line 113) +* cd: Bourne Shell Builtins. + (line 44) +* command: Bash Builtins. (line 130) +* compgen: Programmable Completion Builtins. + (line 12) +* complete: Programmable Completion Builtins. + (line 30) +* compopt: Programmable Completion Builtins. + (line 237) +* continue: Bourne Shell Builtins. + (line 85) +* declare: Bash Builtins. (line 150) +* dirs: Directory Stack Builtins. + (line 7) +* disown: Job Control Builtins. + (line 101) +* echo: Bash Builtins. (line 253) +* enable: Bash Builtins. (line 302) +* eval: Bourne Shell Builtins. + (line 94) +* exec: Bourne Shell Builtins. + (line 102) +* exit: Bourne Shell Builtins. + (line 120) +* export: Bourne Shell Builtins. + (line 127) +* fc: Bash History Builtins. + (line 10) +* fg: Job Control Builtins. + (line 17) +* getopts: Bourne Shell Builtins. + (line 143) +* hash: Bourne Shell Builtins. + (line 187) +* help: Bash Builtins. (line 331) +* history: Bash History Builtins. + (line 46) +* jobs: Job Control Builtins. + (line 27) +* kill: Job Control Builtins. + (line 58) +* let: Bash Builtins. (line 350) +* local: Bash Builtins. (line 358) +* logout: Bash Builtins. (line 374) +* mapfile: Bash Builtins. (line 379) +* popd: Directory Stack Builtins. + (line 35) +* printf: Bash Builtins. (line 425) +* pushd: Directory Stack Builtins. + (line 53) +* pwd: Bourne Shell Builtins. + (line 207) +* read: Bash Builtins. (line 474) +* readarray: Bash Builtins. (line 570) +* readonly: Bourne Shell Builtins. + (line 217) +* return: Bourne Shell Builtins. + (line 236) +* set: The Set Builtin. (line 11) +* shift: Bourne Shell Builtins. + (line 257) +* shopt: The Shopt Builtin. (line 9) +* source: Bash Builtins. (line 579) +* suspend: Job Control Builtins. + (line 113) +* test: Bourne Shell Builtins. + (line 270) +* times: Bourne Shell Builtins. + (line 349) +* trap: Bourne Shell Builtins. + (line 355) +* type: Bash Builtins. (line 584) +* typeset: Bash Builtins. (line 616) +* ulimit: Bash Builtins. (line 622) +* umask: Bourne Shell Builtins. + (line 404) +* unalias: Bash Builtins. (line 728) +* unset: Bourne Shell Builtins. + (line 422) +* wait: Job Control Builtins. + (line 76) + + +File: bashref.info, Node: Reserved Word Index, Next: Variable Index, Prev: Builtin Index, Up: Indexes + +D.2 Index of Shell Reserved Words +================================= + +[index] +* Menu: + +* !: Pipelines. (line 9) +* [[: Conditional Constructs. + (line 125) +* ]]: Conditional Constructs. + (line 125) +* {: Command Grouping. (line 21) +* }: Command Grouping. (line 21) +* case: Conditional Constructs. + (line 28) +* do: Looping Constructs. (line 12) +* done: Looping Constructs. (line 12) +* elif: Conditional Constructs. + (line 7) +* else: Conditional Constructs. + (line 7) +* esac: Conditional Constructs. + (line 28) +* fi: Conditional Constructs. + (line 7) +* for: Looping Constructs. (line 32) +* function: Shell Functions. (line 13) +* if: Conditional Constructs. + (line 7) +* in: Conditional Constructs. + (line 28) +* select: Conditional Constructs. + (line 83) +* then: Conditional Constructs. + (line 7) +* time: Pipelines. (line 9) +* until: Looping Constructs. (line 12) +* while: Looping Constructs. (line 22) + + +File: bashref.info, Node: Variable Index, Next: Function Index, Prev: Reserved Word Index, Up: Indexes + +D.3 Parameter and Variable Index +================================ + +[index] +* Menu: + +* !: Special Parameters. (line 56) +* #: Special Parameters. (line 39) +* $: Special Parameters. (line 51) +* $!: Special Parameters. (line 57) +* $#: Special Parameters. (line 40) +* $$: Special Parameters. (line 52) +* $*: Special Parameters. (line 10) +* $-: Special Parameters. (line 47) +* $0: Special Parameters. (line 62) +* $?: Special Parameters. (line 43) +* $@: Special Parameters. (line 23) +* $_: Bash Variables. (line 14) +* *: Special Parameters. (line 9) +* -: Special Parameters. (line 46) +* 0: Special Parameters. (line 61) +* ?: Special Parameters. (line 42) +* @: Special Parameters. (line 22) +* _: Bash Variables. (line 13) +* auto_resume: Job Control Variables. + (line 6) +* BASH: Bash Variables. (line 23) +* BASHOPTS: Bash Variables. (line 26) +* BASHPID: Bash Variables. (line 35) +* BASH_ALIASES: Bash Variables. (line 42) +* BASH_ARGC: Bash Variables. (line 51) +* BASH_ARGV: Bash Variables. (line 64) +* BASH_ARGV0: Bash Variables. (line 76) +* BASH_CMDS: Bash Variables. (line 84) +* BASH_COMMAND: Bash Variables. (line 93) +* BASH_COMPAT: Bash Variables. (line 100) +* BASH_ENV: Bash Variables. (line 116) +* BASH_EXECUTION_STRING: Bash Variables. (line 122) +* BASH_LINENO: Bash Variables. (line 125) +* BASH_LOADABLES_PATH: Bash Variables. (line 133) +* BASH_REMATCH: Bash Variables. (line 137) +* BASH_SOURCE: Bash Variables. (line 145) +* BASH_SUBSHELL: Bash Variables. (line 152) +* BASH_VERSINFO: Bash Variables. (line 158) +* BASH_VERSION: Bash Variables. (line 181) +* BASH_XTRACEFD: Bash Variables. (line 184) +* bell-style: Readline Init File Syntax. + (line 38) +* bind-tty-special-chars: Readline Init File Syntax. + (line 45) +* blink-matching-paren: Readline Init File Syntax. + (line 50) +* CDPATH: Bourne Shell Variables. + (line 9) +* CHILD_MAX: Bash Variables. (line 195) +* colored-completion-prefix: Readline Init File Syntax. + (line 55) +* colored-stats: Readline Init File Syntax. + (line 62) +* COLUMNS: Bash Variables. (line 202) +* comment-begin: Readline Init File Syntax. + (line 68) +* completion-display-width: Readline Init File Syntax. + (line 73) +* completion-ignore-case: Readline Init File Syntax. + (line 80) +* completion-map-case: Readline Init File Syntax. + (line 85) +* completion-prefix-display-length: Readline Init File Syntax. + (line 91) +* completion-query-items: Readline Init File Syntax. + (line 98) +* COMPREPLY: Bash Variables. (line 254) +* COMP_CWORD: Bash Variables. (line 208) +* COMP_KEY: Bash Variables. (line 237) +* COMP_LINE: Bash Variables. (line 214) +* COMP_POINT: Bash Variables. (line 219) +* COMP_TYPE: Bash Variables. (line 227) +* COMP_WORDBREAKS: Bash Variables. (line 241) +* COMP_WORDS: Bash Variables. (line 247) +* convert-meta: Readline Init File Syntax. + (line 108) +* COPROC: Bash Variables. (line 260) +* DIRSTACK: Bash Variables. (line 264) +* disable-completion: Readline Init File Syntax. + (line 116) +* echo-control-characters: Readline Init File Syntax. + (line 121) +* editing-mode: Readline Init File Syntax. + (line 126) +* EMACS: Bash Variables. (line 274) +* emacs-mode-string: Readline Init File Syntax. + (line 132) +* enable-bracketed-paste: Readline Init File Syntax. + (line 142) +* enable-keypad: Readline Init File Syntax. + (line 150) +* ENV: Bash Variables. (line 279) +* EPOCHREALTIME: Bash Variables. (line 284) +* EPOCHSECONDS: Bash Variables. (line 292) +* EUID: Bash Variables. (line 299) +* EXECIGNORE: Bash Variables. (line 303) +* expand-tilde: Readline Init File Syntax. + (line 161) +* FCEDIT: Bash Variables. (line 316) +* FIGNORE: Bash Variables. (line 320) +* FUNCNAME: Bash Variables. (line 326) +* FUNCNEST: Bash Variables. (line 343) +* GLOBIGNORE: Bash Variables. (line 348) +* GROUPS: Bash Variables. (line 355) +* histchars: Bash Variables. (line 361) +* HISTCMD: Bash Variables. (line 376) +* HISTCONTROL: Bash Variables. (line 382) +* HISTFILE: Bash Variables. (line 398) +* HISTFILESIZE: Bash Variables. (line 402) +* HISTIGNORE: Bash Variables. (line 413) +* history-preserve-point: Readline Init File Syntax. + (line 165) +* history-size: Readline Init File Syntax. + (line 171) +* HISTSIZE: Bash Variables. (line 433) +* HISTTIMEFORMAT: Bash Variables. (line 440) +* HOME: Bourne Shell Variables. + (line 13) +* horizontal-scroll-mode: Readline Init File Syntax. + (line 180) +* HOSTFILE: Bash Variables. (line 448) +* HOSTNAME: Bash Variables. (line 459) +* HOSTTYPE: Bash Variables. (line 462) +* IFS: Bourne Shell Variables. + (line 18) +* IGNOREEOF: Bash Variables. (line 465) +* input-meta: Readline Init File Syntax. + (line 189) +* INPUTRC: Bash Variables. (line 475) +* INSIDE_EMACS: Bash Variables. (line 479) +* isearch-terminators: Readline Init File Syntax. + (line 197) +* keymap: Readline Init File Syntax. + (line 204) +* LANG: Bash Variables. (line 485) +* LC_ALL: Bash Variables. (line 489) +* LC_COLLATE: Bash Variables. (line 493) +* LC_CTYPE: Bash Variables. (line 500) +* LC_MESSAGES: Locale Translation. (line 15) +* LC_MESSAGES <1>: Bash Variables. (line 505) +* LC_NUMERIC: Bash Variables. (line 509) +* LC_TIME: Bash Variables. (line 513) +* LINENO: Bash Variables. (line 517) +* LINES: Bash Variables. (line 522) +* MACHTYPE: Bash Variables. (line 528) +* MAIL: Bourne Shell Variables. + (line 22) +* MAILCHECK: Bash Variables. (line 532) +* MAILPATH: Bourne Shell Variables. + (line 27) +* MAPFILE: Bash Variables. (line 540) +* mark-modified-lines: Readline Init File Syntax. + (line 234) +* mark-symlinked-directories: Readline Init File Syntax. + (line 239) +* match-hidden-files: Readline Init File Syntax. + (line 244) +* menu-complete-display-prefix: Readline Init File Syntax. + (line 251) +* meta-flag: Readline Init File Syntax. + (line 189) +* OLDPWD: Bash Variables. (line 544) +* OPTARG: Bourne Shell Variables. + (line 34) +* OPTERR: Bash Variables. (line 547) +* OPTIND: Bourne Shell Variables. + (line 38) +* OSTYPE: Bash Variables. (line 551) +* output-meta: Readline Init File Syntax. + (line 256) +* page-completions: Readline Init File Syntax. + (line 262) +* PATH: Bourne Shell Variables. + (line 42) +* PIPESTATUS: Bash Variables. (line 554) +* POSIXLY_CORRECT: Bash Variables. (line 559) +* PPID: Bash Variables. (line 569) +* PROMPT_COMMAND: Bash Variables. (line 573) +* PROMPT_DIRTRIM: Bash Variables. (line 579) +* PS0: Bash Variables. (line 585) +* PS1: Bourne Shell Variables. + (line 48) +* PS2: Bourne Shell Variables. + (line 53) +* PS3: Bash Variables. (line 590) +* PS4: Bash Variables. (line 595) +* PWD: Bash Variables. (line 603) +* RANDOM: Bash Variables. (line 606) +* READLINE_LINE: Bash Variables. (line 612) +* READLINE_MARK: Bash Variables. (line 616) +* READLINE_POINT: Bash Variables. (line 622) +* REPLY: Bash Variables. (line 626) +* revert-all-at-newline: Readline Init File Syntax. + (line 272) +* SECONDS: Bash Variables. (line 629) +* SHELL: Bash Variables. (line 638) +* SHELLOPTS: Bash Variables. (line 643) +* SHLVL: Bash Variables. (line 652) +* show-all-if-ambiguous: Readline Init File Syntax. + (line 278) +* show-all-if-unmodified: Readline Init File Syntax. + (line 284) +* show-mode-in-prompt: Readline Init File Syntax. + (line 293) +* skip-completed-text: Readline Init File Syntax. + (line 299) +* SRANDOM: Bash Variables. (line 657) +* TEXTDOMAIN: Locale Translation. (line 15) +* TEXTDOMAINDIR: Locale Translation. (line 15) +* TIMEFORMAT: Bash Variables. (line 666) +* TMOUT: Bash Variables. (line 704) +* TMPDIR: Bash Variables. (line 716) +* UID: Bash Variables. (line 720) +* vi-cmd-mode-string: Readline Init File Syntax. + (line 312) +* vi-ins-mode-string: Readline Init File Syntax. + (line 323) +* visible-stats: Readline Init File Syntax. + (line 334) + + +File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes + +D.4 Function Index +================== + +[index] +* Menu: + +* abort (C-g): Miscellaneous Commands. + (line 10) +* accept-line (Newline or Return): Commands For History. + (line 6) +* alias-expand-line (): Miscellaneous Commands. + (line 125) +* backward-char (C-b): Commands For Moving. (line 15) +* backward-delete-char (Rubout): Commands For Text. (line 17) +* backward-kill-line (C-x Rubout): Commands For Killing. + (line 11) +* backward-kill-word (M-): Commands For Killing. + (line 28) +* backward-word (M-b): Commands For Moving. (line 22) +* beginning-of-history (M-<): Commands For History. + (line 20) +* beginning-of-line (C-a): Commands For Moving. (line 6) +* bracketed-paste-begin (): Commands For Text. (line 33) +* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) +* capitalize-word (M-c): Commands For Text. (line 66) +* character-search (C-]): Miscellaneous Commands. + (line 42) +* character-search-backward (M-C-]): Miscellaneous Commands. + (line 47) +* clear-display (M-C-l): Commands For Moving. (line 48) +* clear-screen (C-l): Commands For Moving. (line 53) +* complete (): Commands For Completion. + (line 6) +* complete-command (M-!): Commands For Completion. + (line 80) +* complete-filename (M-/): Commands For Completion. + (line 49) +* complete-hostname (M-@): Commands For Completion. + (line 72) +* complete-into-braces (M-{): Commands For Completion. + (line 100) +* complete-username (M-~): Commands For Completion. + (line 56) +* complete-variable (M-$): Commands For Completion. + (line 64) +* copy-backward-word (): Commands For Killing. + (line 69) +* copy-forward-word (): Commands For Killing. + (line 74) +* copy-region-as-kill (): Commands For Killing. + (line 65) +* dabbrev-expand (): Commands For Completion. + (line 95) +* delete-char (C-d): Commands For Text. (line 12) +* delete-char-or-list (): Commands For Completion. + (line 43) +* delete-horizontal-space (): Commands For Killing. + (line 57) +* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) +* display-shell-version (C-x C-v): Miscellaneous Commands. + (line 110) +* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands. + (line 14) +* downcase-word (M-l): Commands For Text. (line 62) +* dump-functions (): Miscellaneous Commands. + (line 74) +* dump-macros (): Miscellaneous Commands. + (line 86) +* dump-variables (): Miscellaneous Commands. + (line 80) +* dynamic-complete-history (M-): Commands For Completion. + (line 90) +* edit-and-execute-command (C-x C-e): Miscellaneous Commands. + (line 134) +* end-kbd-macro (C-x )): Keyboard Macros. (line 9) +* end-of-file (usually C-d): Commands For Text. (line 6) +* end-of-history (M->): Commands For History. + (line 23) +* end-of-line (C-e): Commands For Moving. (line 9) +* exchange-point-and-mark (C-x C-x): Miscellaneous Commands. + (line 37) +* forward-backward-delete-char (): Commands For Text. (line 21) +* forward-char (C-f): Commands For Moving. (line 12) +* forward-search-history (C-s): Commands For History. + (line 33) +* forward-word (M-f): Commands For Moving. (line 18) +* glob-complete-word (M-g): Miscellaneous Commands. + (line 92) +* glob-expand-word (C-x *): Miscellaneous Commands. + (line 98) +* glob-list-expansions (C-x g): Miscellaneous Commands. + (line 104) +* history-and-alias-expand-line (): Miscellaneous Commands. + (line 128) +* history-expand-line (M-^): Miscellaneous Commands. + (line 118) +* history-search-backward (): Commands For History. + (line 57) +* history-search-forward (): Commands For History. + (line 51) +* history-substring-search-backward (): Commands For History. + (line 69) +* history-substring-search-forward (): Commands For History. + (line 63) +* insert-comment (M-#): Miscellaneous Commands. + (line 61) +* insert-completions (M-*): Commands For Completion. + (line 22) +* insert-last-argument (M-. or M-_): Miscellaneous Commands. + (line 131) +* kill-line (C-k): Commands For Killing. + (line 6) +* kill-region (): Commands For Killing. + (line 61) +* kill-whole-line (): Commands For Killing. + (line 19) +* kill-word (M-d): Commands For Killing. + (line 23) +* magic-space (): Miscellaneous Commands. + (line 121) +* menu-complete (): Commands For Completion. + (line 26) +* menu-complete-backward (): Commands For Completion. + (line 38) +* next-history (C-n): Commands For History. + (line 17) +* next-screen-line (): Commands For Moving. (line 41) +* non-incremental-forward-search-history (M-n): Commands For History. + (line 45) +* non-incremental-reverse-search-history (M-p): Commands For History. + (line 39) +* operate-and-get-next (C-o): Commands For History. + (line 96) +* overwrite-mode (): Commands For Text. (line 70) +* possible-command-completions (C-x !): Commands For Completion. + (line 86) +* possible-completions (M-?): Commands For Completion. + (line 15) +* possible-filename-completions (C-x /): Commands For Completion. + (line 52) +* possible-hostname-completions (C-x @): Commands For Completion. + (line 76) +* possible-username-completions (C-x ~): Commands For Completion. + (line 60) +* possible-variable-completions (C-x $): Commands For Completion. + (line 68) +* prefix-meta (): Miscellaneous Commands. + (line 19) +* previous-history (C-p): Commands For History. + (line 13) +* previous-screen-line (): Commands For Moving. (line 34) +* print-last-kbd-macro (): Keyboard Macros. (line 17) +* quoted-insert (C-q or C-v): Commands For Text. (line 26) +* re-read-init-file (C-x C-r): Miscellaneous Commands. + (line 6) +* redraw-current-line (): Commands For Moving. (line 57) +* reverse-search-history (C-r): Commands For History. + (line 27) +* revert-line (M-r): Miscellaneous Commands. + (line 26) +* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 30) +* set-mark (C-@): Miscellaneous Commands. + (line 33) +* shell-backward-kill-word (): Commands For Killing. + (line 37) +* shell-backward-word (M-C-b): Commands For Moving. (line 30) +* shell-expand-line (M-C-e): Miscellaneous Commands. + (line 113) +* shell-forward-word (M-C-f): Commands For Moving. (line 26) +* shell-kill-word (M-C-d): Commands For Killing. + (line 32) +* shell-transpose-words (M-C-t): Commands For Killing. + (line 41) +* skip-csi-sequence (): Miscellaneous Commands. + (line 52) +* start-kbd-macro (C-x (): Keyboard Macros. (line 6) +* tilde-expand (M-&): Miscellaneous Commands. + (line 30) +* transpose-chars (C-t): Commands For Text. (line 47) +* transpose-words (M-t): Commands For Text. (line 53) +* undo (C-_ or C-x C-u): Miscellaneous Commands. + (line 23) +* universal-argument (): Numeric Arguments. (line 10) +* unix-filename-rubout (): Commands For Killing. + (line 52) +* unix-line-discard (C-u): Commands For Killing. + (line 16) +* unix-word-rubout (C-w): Commands For Killing. + (line 48) +* upcase-word (M-u): Commands For Text. (line 58) +* yank (C-y): Commands For Killing. + (line 79) +* yank-last-arg (M-. or M-_): Commands For History. + (line 84) +* yank-nth-arg (M-C-y): Commands For History. + (line 75) +* yank-pop (M-y): Commands For Killing. + (line 82) + + +File: bashref.info, Node: Concept Index, Prev: Function Index, Up: Indexes + +D.5 Concept Index +================= + +[index] +* Menu: + +* alias expansion: Aliases. (line 6) +* arithmetic evaluation: Shell Arithmetic. (line 6) +* arithmetic expansion: Arithmetic Expansion. + (line 6) +* arithmetic, shell: Shell Arithmetic. (line 6) +* arrays: Arrays. (line 6) +* background: Job Control Basics. (line 6) +* Bash configuration: Basic Installation. (line 6) +* Bash installation: Basic Installation. (line 6) +* Bourne shell: Basic Shell Features. + (line 6) +* brace expansion: Brace Expansion. (line 6) +* builtin: Definitions. (line 17) +* command editing: Readline Bare Essentials. + (line 6) +* command execution: Command Search and Execution. + (line 6) +* command expansion: Simple Command Expansion. + (line 6) +* command history: Bash History Facilities. + (line 6) +* command search: Command Search and Execution. + (line 6) +* command substitution: Command Substitution. + (line 6) +* command timing: Pipelines. (line 9) +* commands, compound: Compound Commands. (line 6) +* commands, conditional: Conditional Constructs. + (line 6) +* commands, grouping: Command Grouping. (line 6) +* commands, lists: Lists. (line 6) +* commands, looping: Looping Constructs. (line 6) +* commands, pipelines: Pipelines. (line 6) +* commands, shell: Shell Commands. (line 6) +* commands, simple: Simple Commands. (line 6) +* comments, shell: Comments. (line 6) +* Compatibility Level: Shell Compatibility Mode. + (line 6) +* Compatibility Mode: Shell Compatibility Mode. + (line 6) +* completion builtins: Programmable Completion Builtins. + (line 6) +* configuration: Basic Installation. (line 6) +* control operator: Definitions. (line 21) +* coprocess: Coprocesses. (line 6) +* directory stack: The Directory Stack. (line 6) +* editing command lines: Readline Bare Essentials. + (line 6) +* environment: Environment. (line 6) +* evaluation, arithmetic: Shell Arithmetic. (line 6) +* event designators: Event Designators. (line 6) +* execution environment: Command Execution Environment. + (line 6) +* exit status: Definitions. (line 26) +* exit status <1>: Exit Status. (line 6) +* expansion: Shell Expansions. (line 6) +* expansion, arithmetic: Arithmetic Expansion. + (line 6) +* expansion, brace: Brace Expansion. (line 6) +* expansion, filename: Filename Expansion. (line 9) +* expansion, parameter: Shell Parameter Expansion. + (line 6) +* expansion, pathname: Filename Expansion. (line 9) +* expansion, tilde: Tilde Expansion. (line 6) +* expressions, arithmetic: Shell Arithmetic. (line 6) +* expressions, conditional: Bash Conditional Expressions. + (line 6) +* field: Definitions. (line 30) +* filename: Definitions. (line 35) +* filename expansion: Filename Expansion. (line 9) +* foreground: Job Control Basics. (line 6) +* functions, shell: Shell Functions. (line 6) +* history builtins: Bash History Builtins. + (line 6) +* history events: Event Designators. (line 8) +* history expansion: History Interaction. (line 6) +* history list: Bash History Facilities. + (line 6) +* History, how to use: A Programmable Completion Example. + (line 113) +* identifier: Definitions. (line 51) +* initialization file, readline: Readline Init File. (line 6) +* installation: Basic Installation. (line 6) +* interaction, readline: Readline Interaction. + (line 6) +* interactive shell: Invoking Bash. (line 131) +* interactive shell <1>: Interactive Shells. (line 6) +* internationalization: Locale Translation. (line 6) +* job: Definitions. (line 38) +* job control: Definitions. (line 42) +* job control <1>: Job Control Basics. (line 6) +* kill ring: Readline Killing Commands. + (line 18) +* killing text: Readline Killing Commands. + (line 6) +* localization: Locale Translation. (line 6) +* login shell: Invoking Bash. (line 128) +* matching, pattern: Pattern Matching. (line 6) +* metacharacter: Definitions. (line 46) +* name: Definitions. (line 51) +* native languages: Locale Translation. (line 6) +* notation, readline: Readline Bare Essentials. + (line 6) +* operator, shell: Definitions. (line 57) +* parameter expansion: Shell Parameter Expansion. + (line 6) +* parameters: Shell Parameters. (line 6) +* parameters, positional: Positional Parameters. + (line 6) +* parameters, special: Special Parameters. (line 6) +* pathname expansion: Filename Expansion. (line 9) +* pattern matching: Pattern Matching. (line 6) +* pipeline: Pipelines. (line 6) +* POSIX: Definitions. (line 9) +* POSIX Mode: Bash POSIX Mode. (line 6) +* process group: Definitions. (line 62) +* process group ID: Definitions. (line 66) +* process substitution: Process Substitution. + (line 6) +* programmable completion: Programmable Completion. + (line 6) +* prompting: Controlling the Prompt. + (line 6) +* quoting: Quoting. (line 6) +* quoting, ANSI: ANSI-C Quoting. (line 6) +* Readline, how to use: Job Control Variables. + (line 23) +* redirection: Redirections. (line 6) +* reserved word: Definitions. (line 70) +* reserved words: Reserved Words. (line 6) +* restricted shell: The Restricted Shell. + (line 6) +* return status: Definitions. (line 75) +* shell arithmetic: Shell Arithmetic. (line 6) +* shell function: Shell Functions. (line 6) +* shell script: Shell Scripts. (line 6) +* shell variable: Shell Parameters. (line 6) +* shell, interactive: Interactive Shells. (line 6) +* signal: Definitions. (line 78) +* signal handling: Signals. (line 6) +* special builtin: Definitions. (line 82) +* special builtin <1>: Special Builtins. (line 6) +* startup files: Bash Startup Files. (line 6) +* suspending jobs: Job Control Basics. (line 6) +* tilde expansion: Tilde Expansion. (line 6) +* token: Definitions. (line 86) +* translation, native languages: Locale Translation. (line 6) +* variable, shell: Shell Parameters. (line 6) +* variables, readline: Readline Init File Syntax. + (line 37) +* word: Definitions. (line 90) +* word splitting: Word Splitting. (line 6) +* yanking text: Readline Killing Commands. + (line 6) + + + +Tag Table: +Node: Top895 +Node: Introduction2813 +Node: What is Bash?3029 +Node: What is a shell?4143 +Node: Definitions6681 +Node: Basic Shell Features9632 +Node: Shell Syntax10851 +Node: Shell Operation11877 +Node: Quoting13170 +Node: Escape Character14470 +Node: Single Quotes14955 +Node: Double Quotes15303 +Node: ANSI-C Quoting16581 +Node: Locale Translation17840 +Node: Comments18993 +Node: Shell Commands19611 +Node: Reserved Words20549 +Node: Simple Commands21305 +Node: Pipelines21959 +Node: Lists24891 +Node: Compound Commands26682 +Node: Looping Constructs27694 +Node: Conditional Constructs30189 +Node: Command Grouping41760 +Node: Coprocesses43239 +Node: GNU Parallel45142 +Node: Shell Functions49443 +Node: Shell Parameters56650 +Node: Positional Parameters61063 +Node: Special Parameters61963 +Node: Shell Expansions65187 +Node: Brace Expansion67310 +Node: Tilde Expansion70033 +Node: Shell Parameter Expansion72650 +Node: Command Substitution87779 +Node: Arithmetic Expansion89134 +Node: Process Substitution90066 +Node: Word Splitting91186 +Node: Filename Expansion93130 +Node: Pattern Matching95679 +Node: Quote Removal99665 +Node: Redirections99960 +Node: Executing Commands109530 +Node: Simple Command Expansion110200 +Node: Command Search and Execution112154 +Node: Command Execution Environment114530 +Node: Environment117514 +Node: Exit Status119173 +Node: Signals120843 +Node: Shell Scripts122810 +Node: Shell Builtin Commands125822 +Node: Bourne Shell Builtins127860 +Node: Bash Builtins148789 +Node: Modifying Shell Behavior178898 +Node: The Set Builtin179243 +Node: The Shopt Builtin189656 +Node: Special Builtins204566 +Node: Shell Variables205545 +Node: Bourne Shell Variables205982 +Node: Bash Variables208086 +Node: Bash Features240720 +Node: Invoking Bash241733 +Node: Bash Startup Files247746 +Node: Interactive Shells252849 +Node: What is an Interactive Shell?253259 +Node: Is this Shell Interactive?253908 +Node: Interactive Shell Behavior254723 +Node: Bash Conditional Expressions258237 +Node: Shell Arithmetic262814 +Node: Aliases265754 +Node: Arrays268374 +Node: The Directory Stack274383 +Node: Directory Stack Builtins275167 +Node: Controlling the Prompt278135 +Node: The Restricted Shell281085 +Node: Bash POSIX Mode283679 +Node: Shell Compatibility Mode294715 +Node: Job Control301371 +Node: Job Control Basics301831 +Node: Job Control Builtins306827 +Node: Job Control Variables312227 +Node: Command Line Editing313383 +Node: Introduction and Notation315054 +Node: Readline Interaction316677 +Node: Readline Bare Essentials317868 +Node: Readline Movement Commands319651 +Node: Readline Killing Commands320611 +Node: Readline Arguments322529 +Node: Searching323573 +Node: Readline Init File325759 +Node: Readline Init File Syntax327018 +Node: Conditional Init Constructs347556 +Node: Sample Init File351752 +Node: Bindable Readline Commands354876 +Node: Commands For Moving356080 +Node: Commands For History358131 +Node: Commands For Text362924 +Node: Commands For Killing366573 +Node: Numeric Arguments369606 +Node: Commands For Completion370745 +Node: Keyboard Macros374936 +Node: Miscellaneous Commands375623 +Node: Readline vi Mode381307 +Node: Programmable Completion382214 +Node: Programmable Completion Builtins389994 +Node: A Programmable Completion Example400689 +Node: Using History Interactively405936 +Node: Bash History Facilities406620 +Node: Bash History Builtins409625 +Node: History Interaction414354 +Node: Event Designators417974 +Node: Word Designators419328 +Node: Modifiers421088 +Node: Installing Bash422899 +Node: Basic Installation424036 +Node: Compilers and Options427294 +Node: Compiling For Multiple Architectures428035 +Node: Installation Names429728 +Node: Specifying the System Type430546 +Node: Sharing Defaults431262 +Node: Operation Controls431935 +Node: Optional Features432893 +Node: Reporting Bugs443411 +Node: Major Differences From The Bourne Shell444605 +Node: GNU Free Documentation License461457 +Node: Indexes486634 +Node: Builtin Index487088 +Node: Reserved Word Index493915 +Node: Variable Index496363 +Node: Function Index512260 +Node: Concept Index525770 + +End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/bash-5.1/doc/bashref.pdf b/bash-5.1/doc/bashref.pdf new file mode 100644 index 0000000000000000000000000000000000000000..50b64fbae5b2045fe6516b54da269560bbae3aaa GIT binary patch literal 769844 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 z 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 z%0DO!%yK;mCBG_qLczqRmX4#Mjgo#fthR#e_ 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

aVv=B!uDQ=bs7GzB{b%G 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

oy>|XK$WR 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

tmxaX=?HJ8+aMd|f^kAYF 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ús7R8icQdPyum3XIs9P zeZ`~b?0vpGvjdu}`tk&gHnPNtsNZAFNF(~#CKhq^vJKat%R(|jeh09&&ok44rUyX; zkRD;^a)_Ia!O%bM8e*PK{;1xBKH%xuO`y+8L4>DNquikDLrpQn0kf2JrS!AH~lw|dG_)5(mAodJdTibNi z1N1`C-0f@Xct|JtDH|q3IpQ79b2D+_yqx8QJHEuOTPk0+{NKk4Xldy&cYUImAv9p` zJQH$zL(rJXEyCyM*1mssu;yp`BLa=1Xuy9Wb*5&Wxkk}4c&3N|GJ@*smmvbZ3W z$$M*>YCo$o@f8Proxs7#4&g^Ij6#R=5bUgn-t>#Pu@%ikzX1l~z`=U%TpJy{QgC#}Hz^^rQsIFMpUaVzde3}JU!*Tj#}3D_!E1vu!ttWE z+hHzM-yCUGWPiJXh}f^b$fpp}y?t+~WaOv|=~7%$ZDW@#3){f;2oig|Q1kJ!!2@s6 zU_fWQjB7LP3unEy(0|j0es4DWZtj}42o~20oF8x!cAME0RJh~Tk>2ufSXF|HC5tHV z|Di;#0=&ZoI>tFKCEtj~ zInO83r54ZO#K=p1^OBLtPfHEI;&p|y8J9EH%RBaNq|DUz@Pw|X`U*Me8T*%P9`a%}y>kD=#79q~o8`sQ43G&0 z`#I4O7jdxL7aU%65VZ`#Zf4OIg80VzO;FAMCs+-q^1f>n7Kr8zYb8SC)b>nRq`6&~ zYOk*FjC)K;Wd5~UO6vQRUut^&BRTg79xQXYp2F%YtUQd2RTOHqvRk|wQMLGSZ5kp1 zJQKS2TYO!$3HJfCGBGj+H2hPP8nn~?+nkU=4nNdhfl~`m)Z+&wWu|Bvd$zllIr8Ot z84v8Cz<=U$!65|^NB(dS430^QJ~r z0=jZNK@OaEE6n+UzH{YU%lMp>%U(hWPB}0cA@bEV3z14DBn%SCM-Z?<^>IhZiMiyU zFlM@hDJ4v+h%b*(d0a=)w9!QI;B-iHiJ{oDH}lDK`-p=izvUp12IOLMILQ%c@1{aD z(=-_T6nPjdS)Knon3(WvCgZy;bjZlIvR(=U*88U{PEk-ehwL)MY;=_FsGxcg zGmqgbzHeXdT*^i;jmE?rUymZfVOz^S_Wb&}gGqwi1qCq1`}FARh^M&(vTP74SS_F? z?@~O`#>8{zwM5JYcRAKjYqZHBT-7&%i7GJFQL6sD^gzaH&;?2)nw11+wT&NrH(fwWo$u6Q^Ks$IA?Ou99yCH%j-< zQ#-3cXbA%bVrCo~Mvv+B22a6e{f?2ua!Ad06PDXb5;uorw_ggv;I7*2KAaf$k*WEL z6hoN}W`GAtTytDikC;FV|6IuRVRb?i5p6uWaIc8M zq)-c##r5*l1bvrr`Xd@PF{!5Hd9H7xs-a;2Apc}`iM%WTn&4+s4rkVr&jzJe^;^xViQQ53U-6a_r8=2X`|Z(=0IVc;o?)0WQ$S+I9AQOcp1|YS0>e z=|gwKg3?QyA60H;N%4 zm#fNTZ?hN`N_>dZYWtYD-Tt*|+DI6FUsaI<#78nMp4xsLj!B$0Q7pbWmBWnKc4hyG z(fPzmg8I0>w*Abbpbr)cRg8E##DQ+wYv-?zh<+wSZT9gi(wV^1`NCl5?;oKYcAXL` z@oBCgJ(5+*bMOP4?Knfycb-`4s&^avmD z*5Vw1dTa!TSDE>3C3;Cw;6KUUx}jN!7K#*PZqbhDM|H1D@8iByAEq?{ZiqYmB-Mp# zdQ(Zag=q&@DK&8uV7TZ$DsVs==TI#y1S8?Ej1$S-?Vvq?ej-~VIYk20nyQ9qes9Px z^${B_+L=TygRu!wZRBO|VtL3yME1h@<260SzGMeYSx$!yk!t?fQ zisK6^i+t<^b+lA|qxUYpxq=3iUf3?&>QIVmAPNnvQ@*V7Kl7m#Wya*+mzU-B^_?c$@80E| z8rIHKACBFrm?+Rout~tA%ai{-8mxu!x6S9qBY^9$jq+U*9A=gYzGX4L!H1V zUWxOvge5SPMj~dV@=R7O?o=lv=*A|GKUau?ZLpGq5VIP)5>LOt}kUH621F zH*!R0oIa0OW-eYj@ zbmYdr1bIpbpzNVY8uE6iW(J%i#Hv%y zhD2&P<+t@$^!O)0bj{P$du*MWzO94>pbJdkhWCa+j8050a(HxQI1iE~;NH4FOVJLj zn}afuI9#L6@;*?^8|Qr+*>a`3XjzUxtyGO}RzGY`_DdkbO5Uop=-Z|nEV>S-Xdf%* zF#a&N@@<3qe{#0;q9|<+Zhn=<8%06@|J%^y?05B%vfrG(&x63We-8&4HkCq>Il+~= zh03(+T#Jiiz(kg266wa*SK$zgdv@#dw9ModM~#WHBjO?Lreh>Z!wz}Ow7snoGNE`( zX&uFgF#*Z*-H34XAU9cCB7o>uGROJAipgQsuyU)s2R|XHG7^)*s=>7gA0Gq)bxKBO zWWcjt(C5B}hrWK5Dx%+0_UKc`1C>yga`Jln+iaoNMuRwfV2#m>vHll&#b{1sOBS^AL? z@G}l)oeTna;H4`_2Y}(D1^pWpPI_M~2FcxS4t@{%Ib`(__&{fx3>~} z*brjCTyTuhba+Y}uFP-GBg0wmb&_hfGO$Y>RiH3`F3tj#n$@_HO4VBH|GqAnXOlhI z@WNOo<|UdjuA0#>_(mY`IpQZ&$*#ydr)_EyWVBz+GlRuwi+lL;6BSL8NqBUMD$qc=UrFdmWOsiinv>%*vYb-L?;quXkg z;M1+W+&_ym0|@@K_*gH%ia9TDZU8;Nuk|*LN%`T!B|!GNU=YP~aZ?Obw@dLbRRgMK zi@%2ASSXc`>tmG*RS?cAKFWL;>_s<^nTm(G=pAtX8iFm!gVPTWwMNO5Y(6H#L6u%m%FF>Izt+D)OQS z6+$L#T`Oi3G^m;lDt_G1$m%LyjwHcdV%^74WWNd;+wKYwcqKVd{t^5+@{RTVtMTXd zNuBHa22LQ5Oj<2Z*q9zWd9Eu^ICBI7ZvwZ>R@MlwsYioBK-fZ3?b9AEc=<5VDq7Q5 zRCu4)E95PDH@0yl!=3x7A{RYk@adY)VhBurqw33UFMrEDPMRg zNi>!#NRBn-3P$8DxVe%C5fKxv2sSjl>Elq$>}%=2IoMwwqD!>V$AZyjQdM_uR||n6 zL1ZyQk8_(V*+hte!}F#?LqKcOg~WQ2NE>!Vvzx}O6yL{9G-#M~a>EPNHhe*tAY42L zJQOxPu+?Q06Am=|8Ur)!__?F?xiFz+i4M;*&s1E^{b~HTJ2wS0od7m{FfWl^u z)I4|P(K!w^d!+)ddF*5xRM(-b0kC};?;XjbQ|4r3nWMO6azf$#L zT3j@etycS_*(Kaya)j9zwzmmj7=l?~ws9A>NeQ>w)AcTCdL}D zb4$k~3!sA3gK`ToYX#x}Y|Ny(8iddO1{-)~sY_I2RTMwnL1L(OT zX#1nB;a;6Uwg7!CvkAZ+LHx9Gy0Uos$5!Wj@>AKES%ssI!NT}M;at)5%iSoD!;@3j zVFP61=U0~jDYyZ0e;ZXj!~tUO@s9%U{W<+$-}3AFg)%;UYGoc(0?9ZYY(6;Aio{FzeU~T=Jeux|2DPaCa1pa z)vAB6-=A}7aC!!yp7uON#_*l%hAhV?Cw&IK`g>dcyLtR;we}nN@N2a5YbWc72M6b;&G5Z?^lJj> z*yMEg9tZ0j%u6umqTmur7qa-vx(xo?I9y>s%?&^LTd5lCpKnEYZVZfTlaIhn|I7b} z+l`akt}Z1McWB||mhoM@>T`92bB!~AHGBK|$8!n5Une{JR~&qsRod(9a0r(x$FH() zPW5BAszEMwM$PXUhaI0E;OGSGLGUmb4wW4rzb_8DBU{bjw)YgXum9!;PZA+h@Q_`Q+5DT#Tqb81`{$b`)F?|IWl0SRKhp-v_fe%(Yy#p7LcKeE%`#yamW_rpP-2dWcUqbt^{Sbzw z-8zO3M!Wf-e-NnF<;^abynCJcZ3%oid;u4Va{C1?82)7oz2OBPT7muICU=hJB+#4j z;}F<t&&i8uO|M}bo1@j7`oliy2p%op_XAg1PWtB+u0CXew0DE(>%i}F`pFhAg zXkFjut3cdTPrOIlg(x|lG>_hlT*e%%92gWMOBf%4c3+2Z!Xc22C7z+-Nq)gp;wY`@VJ$*W%I#Z@btZ!-Y-8Tww^tP>`dj6z9aZ65 zH%24!#{49s+fS&VjA7y1q#pX{Vy;5gu@Kgh;Uz{&{M3?!@7~PYb^;w0q?GP0_?Ylu z9$x|t%`_+lxW5wtzr}Ckl}zes__;RmCko@Wc6~z3kEXJ(6l7r`q65+#sV5H9-CKq_ zEkTK6OuA9B>rCeLD_G`q9pqs_;_0MOF)wo*QnpNMlRlMgYEEP z6V!0BUsGQBZ`4m_H&@=+3FR^--O7;^@NQB@DuL82CElXKxK?86t8*dcT4KqfbloS( zBWW@}{b_P~e=~kreI4W#T%mR=m~&gK{468iG-V%{GuHDUkGiC<>BG4gLZxu)RF$9+ z>TYMAXq}dcah(p+2s>f(#|MT}xD7%or8ytxu!VqH`#`(D6Lwzr)p3XK)W6GOHr=}e zN}Eg_-cOH5R3j)bVtGO?I=qWLD(u{;=um!J;m{_Lb4h3!8O)gSudNA*e$0#A`Y_tS z&FBEuGJ+U!4qo(qCICUq=>6fLPnuF<$(;~(>r!5I;)|qfrXEQ>f;u_;iT0}I2=DHW zGL5ZPM$!Wmf~OHvXbUS|RPD_g&(=;STTIz2uRQQ&kKFvzm?jJEW`q1|=%BN$Z*Wd< zu140jgA408@~**?{uZ)FTvf`4PHD;s$(q% z%s0~dU9?`>Nt^o4C>{lllaIYoxo1|*_W>#U@x6R#r)n(p2YM19%WV6V2UKJOo!jy5bPNmb1$j20+to1hz zU)G;slhf{hW-cz#OT*Cf{@&MQWokQf91e!8X~+?mjU}@P(4F=dW>Aw-4B6j2fmute zgq8P?wr1|DGq=_q7tLH3;IGlYUb8n#K*#$af3`QqwE@W&lfm@fvJAJBS@cL8=8u$n zNVM_QDIIwx*dv%7nt<4~R1uc1TSU_R!!M5-Z9Apwa%W3(=j+nvt;WU0qHN?~H4WbT$lEQxLJT$RzNOZ0CEicNZ|0#W1 zV!YYpu8rJPSfXgxG4sT(H54Z8d3dwEtgKGNxs_Co!V9zl7;z{$ftBmYROz(8Nz>m+ zW=@vx)pGOkNWk-hD3?lU>lr}x;*4x!WW1ryxo;b{^qibbyQMXsa@YE;|JbydqYoC7 zbBn%=Gy8#~>pq&N9OAPqsKgBT=Ir4(=gno(kUvbVJucJW7|FU>ZBRVIi;fY-lof*0 z(QhVYbl6|ePUe?OA2(*flU#I{GC$ZkdW%j^*{v~QjHOg^;>v=)CDdnXBC^^y|BzUv zxbiHnU9?9)RX@kT*BWp((k8vs7|{$P0})q5`)E){Po|KfAnMArxM21AgI^9paD_XVj-(r$DvDVyEEN_>p*`s|VPwqvEigoNN1 zMp^VFnOTa&TrX}v)}w`gMh>IgX|3UaD$9W+81b_2=n^kO;QYpu9Gmp#oU-U7^w0A3fdF-%Lkf%UTa+4f_4P|Nf15iaV2;U`a#9kA-+~-gl#;F+P_I%ZR=MeS@)lUi$U4VVZ!|u zaa_bz(2Nv}C{GjT87syM_2aE-3bwkXR~rtPpDMeqTVdnc(b5kqqxlbr%oHjq+h8Hf zKOEBNYFgmibgZ(kFj_ul-j9)nX-lOMjb(iGC^Anc$K*Ou^F`IvW8o_fejIfO3nto$ zumw9;%C%w(9p0jJO|J2Qt2^C&JW6=ZqSrg5`bTzC?LU2){fOsu8yJn=B%SLog&3Ov zr@D6>CXyA;tLdg~U2DP{#X$EQK0i9S?drD&QSz$b{nmyl5OPU~_d^=iB|{r5B;b^) zYxwacLu(#d82dHjJ%lzr9BFsAJfn>I_{bK_YawvNR!nYYKF6cA82X8^!=HtmA~Q-#rgu{+pR; z=rF2)HEg`lmC}0LN|l=^#=KW)sK@;5vF$`u$nULIv6oP!D&!q@;-51e2;Rc8PC-It zP&XoK7DnLnOK7_dv$-K@V-~eL_CX!Eo&}Sq^jnziS{5y)`(9Pnr2;xRTo0`u?Jo`>n@5gG7qw{WX5D)L@_0ivVkxJxQpKem$xdcto5(+OhU^bK5;HZ2M&^_8 ztmWd_+HjV{(;|+*?lusg5{-n^Tog+IIud4VN$%?q%^X zLKKD>(ChL~;6+ADuUnh9RMiI#w-Te2LB0*~N&I%QF02SsZp0K@BD`{;O#;&n3>{hg zZXI;4F|cjcCiWz(c+vcEHI?Y^5n`C}x(t=9SUy^0cemKOJ|MaSDiF%Kvg++HbFhud zW1*nRpc9#)1JnIBK$G?@u&eP>)d5P!?w+Zs2$){>F{^WoU+-pI2xMr{{d&J^8%it_ zrqv~k`A(JfJ&1Y*-yW4l@}5k^=aizA_+mJSXfc)K`*X-7W46f7F816=E+kulhcKM9 zp|Vpu2;3Xf4zCMutU1;=b<}3ZN^881!ica&?D3`hu;$)6>|*IF#ugX%fXAN{GeX<{ z>9btiR_>(y12KnNPb&xiHj_oV#3>Jcxz|uJj5o7AD|u3Ol`lcB3{Y1bUC5Eaa6*GOx2+@RtNKEP;Azc z1FzM8lKVj*nB}6GXgm2<@bo!yPcO7}k{$`Sl~REt|es61I5f2)Tsk@;=)` znjletDxQ^4(6EU78$CAwg>jOH*9yCxx(9OJ-L`&Nj?;5DTP~-DtxPToyRr0rNu4{& z{}}RC?kixOSp$Q>Wa2ni5k*yUgu8XDbXf!fxO*qR8~3y}N+$P6Gjk7ovEN>-bHSUI zkB+vL1JqVQ8R)R%#2%zDZvua+OkS4A1opZ$?6;fjwo<&mD-EEdhnnl!*rcj3j%b;{ zWi-{L4OaQtpnW%e62RyRxjiD~P#TAdMjowJqU2;N5>bS^Pj75 z`9V1-U(R7uBj^}OAEvx*Ru3v< zOtL^PL=?nB>xAC&Gqic84mE9g9jge&#eB4zYcD|NmThqk7XSC@}$(OWA0>@zS zLW989(J5<=tJv-Hq#WMj4A+w4@-$SgC|6KoYaedwWT>!u8H&LHauU;4!W6BuD?LA_Mbp>HtA2-go1PBU22ApqxS@x0GgzluAD9%^GBIpE)dbk5{cv; zXhFKLkoVv)r1@jmpc#y`_%TFtlUQtcA&s@s2VjodoSt*Wr0?e^MotTxlMO7dori^k zgvrB$Shlr2qRJ>M!wArv?{39~_*pJjm`8`xYVvW4G~U}WjGMn`R^3&7c8o_?Avenz zv^vUMj=G{3$J_;InR`HjB9{Lvg-=b&XXg849PxnPZwEwN2B(bbZxZZ$v1T262bEoO zQS(M5iDPiZA$7v!>Bg(@Nx5oPdsE1Ij6}B4KfmG*vg)#y3?p z7{z+a$<%J;BN_~FKcFkV6_)PROZ;u+b#2lAGMos#W^ppINJGJ?>lYFUD2^N|EB4Oo z<+Zz*Ch6G2`s}3L8SNwQuL|Le{OOOY+D+cj&iT7S6r3mfc%2rYW*HpPmn+GyEh#$x zagT(k8UpQUM3|pGSd0{Mnk{5yD4fxD#03sHg%>zd_Y=rS-rxra@mgOEC>_5EoXhyq z&@Ds3ugTxQVZW}hC?y+Rn@4?`HP}5e9+2H7;;5?mrY>cS2SJAtUW(gfd% zX0Ui~`>f-KGD<%ugAo7zObbC z7%>w(1SQ)E8}{9^%Lj>OZ!%=uXQCulzQhMhkgh-u)#l;9lYz~%BZOqS1)75@*Lom) z!pun?>n^N7PXFSqq*4JuE;!Q!NiXZaW;PxKfm51RlC}DLBPfH@ya)F%B+qR&<|{eE zd4_G*jD)tbI->6H{&TjuE~>_hGrvoyfw)^m0`a)%XI-|QJ^Q3=SQX8duSZ~q6S*oQ z%ffYOmgH5?-wtPTJ=P7$;&s`7$o=+kF1~~0OOXJWz3QImO6h6C+2V>Rkmv#5D`aLK zDMW&)Hw)d(Re%?fIcm^HGVD)W)XGohV^_>3H72i6L$P;S+B{SX^n{^P;9VhobaU&aklH{dpJ^)s`3i!&uhd4^`Dl`SE1>6mqfsZL?{{B{97+wWI zIm~S_RY7Uq1;IwLzUMV{iHhA@dv+b~q_i>Hr%W)pZoD%tZeAf(!2QanbsNc?pIW-R zJsDA!J^{Y$Xpye;-KF&v{l1a#GlAC(96!)DWeTc9IQs88RF~z3In%1KNjCA(kK196 zYF9wKjtP2^|Qw}f!(z4ibY&<5Pu}jl% zfI{A!lps*yy!r=j#5phWhDV-UCAXUN=8ZkH>OSFqev9vTenOTom(ALPYwASrjD%i* zV3PHm_WkpKrrfE|WBbcQB_1p4-0I~Xdp^{tpeagGjCYLDRZ%Dq`yEU*PRg97s2ajr_vEbHJ1^>JsvNoVTWp$0q(w~gc=A@Qu zI*sygbRIiOjK6Kj@_JaBO_Jrc;5^T>45OE-*l+2dLTGTXa=Uio3Np^$Im~aYI-#<9 ziMI`h^I^64SnlkHhn+VH^Stafc2f3$_eD}0(KQ>bKpNu7|9S^ihv;G~Cl_^*6k_e4)Fgbs)f%#R+58L@3d>mqtmQnSY-DND?gv@@Xhe30CE? z5Qo93tc}l>dg)-s3wzmZOF*l^-CdyXvEp=Z1#FdgNCwqP;4-n1!S+WIVg-Bv=rq?p zTU+vae~~trSL-<(-#f#(;MD66x3j~ouh-B*C}k<1S)>`0bN!u?w;QvQDHD2U7s+hT z33t;M9(n62=*e#)`y$%h*2&4i$~cg9wbE9TdT)rAz~G1KbL-LMBDDRYG|8py?D2N> z9;*NQEs{W~_{!Y-S-<#vz4{{)ot=K8QibuCBD34eksSPt z&WHwXH_y?~?-Cn2a#Ll>?BNlNSpG;QcUp0DZe8W{yw zn{UasuFk-biJ8h0Jz)HA^oU_{_hJKJoycfe{7Zb)&c{Eaw%x&3`0_WZk328<*UqN36S~bPlu@&=LCS~y7M6^Bn zNgNJ%4A$GBXxT(MGETZ3ZEk4e8g-*L0`J^Xx_GCW!56#mZ6d5COqBx-%p%2A)OH#j1I6&{l36cbH?0A*A0|?yc4X ze<<(^dkAcFJ=VrBT2CE&$59yd+EBrX>umF=v`8d?U5`E#&{KJ(HQ7`F41YL7P~8o7 zZ<)$pu0uDy!C~LOn|YeCeDZ9Y63T%0!%OUUcuYH$NUqlDwGJ-CjOpT9G2j~*LcUK9 zqstf{FPfpsqyNrAs0M;AQRVVnB~m-_?gy*h6~QR?{llo`G4ccJ&K8HC!4T=>&h9yp zb*yKAcJ2j^JcP>Y$%0q#spj^9T+i-Ko8V(8;B|MoF$0HuknF_!sp3sF?Aq<8GjS@+ z5e}sV+%tSg^gP+FU_TYhEy@u(8qH3OIirVTMM7kH%C)}Z*w8I(TAV8^z1!SL#M@qX zj~}|u{xP)gYxjZpTB28q;F1=EA!lB_x{BQ}RP}8p*+>iAVo8wNSR59G7NZ6hGF{4I z=c(%>dpMgLi8Bf~4=LsYbf;i4pt%&Px$NWc@h}EgX4yEmQ^&8`y)6$8X+ay%ns;rK0gcfy~~!oQQp_Bln==o!~1!+>olPrOF;9$+MVR7v`5Xbh7Gm zov3XLgWYR8w>f85w$`e?Ox4!{#LJa=18SC#U7|U|HeV+Iyoqm~jwLm=uMqJeKxB3$ zY-lS(;7cTc&8S*~w3j=l1OuP@!~e#1Mco#FF|0Y=kcoqV^#$^e${AA(Gbb zo6YIx7%sQ9%IF@7(Vy z`mv;a#F8J?LSM1F^Kn!rjvQ7r#qHEScFMPUjmYDJ%riS$FO(qdk94zKCe0ODDM(o^ z0*GF5`|MQ-q|7}Mj#!ExHFT&$*wi1dkVo6uPvS22)Z^JM9_hM|qRTlETx!iaYM+uS z#>ujBSR-j5Gn4g{7FT&Ff%qeLPTQ)J`|o9n8H;a8Tb1g8i&OjHo0boGS!Gp)W9iNF{9&%o-8Px?eLK$`B=w1(p*rdp>h6K(jOLZV5LYxF zv%C83Y)oz{T(9wy0+&n3tvcBRsouPQNBdIRKNIy%jpT>pD7R#AJR24+(M31cxw&{8 zP)&?2&SnRDp|+luf*hpeSk5ZGK*5Y=;G{6$;O*{WB{?o3&TaHv;_^n0F0gPGq>ZH=N{>4X$OFEwSVdypMy77y0 z8#7boa%#}1?CEgew*`{zj-S3e6!k0+KEa=8X6*$c+U^`(AqP5j|SA4Eh?xL#*E;w$FkcBz!cl>UpZSwqR>wdw^W$RJ1WbNf)DL!w}IETNPjANLti^< za1_`mB~KVsHE9JFHeO*V5en^-p#!r2gqoLoEw=4Ep*dwi%&U|WZ)sZXeg$C_?cPGiC#*y>rRn)fi>QqJ4-!>zR341-@uY%}*lSR*s5bFF`T3kx-)>LgW_s2&eb1XSBSnY;h<@ zh1+ZCp$4H?NG$(^(T4oP9$1mI4`kj=>WiKRqUmniX`Zyj#1N}efyCf~#&qQ%)g6KEraglE&`1T`x593e z1DL#9<2|7ny1WgoFrtHaQX;Xi;&7#P)9X#ORr-!NXto(}fQ&MhXl=qX960JpG_qs| z5U)n>Q4E|2k5x5?w}0^)L`Pas!a$zH5~~rm^_H?0tUBdc@vV(m&Kf`SxQ#Pu?my7{ za>29Ww9AxmktYQVJh7NR@#$r`$v+{APgMZ*T2D@pRE!-8#8lr}KAKCk#jv%H5zQ$` z))7Z8dwT+I%d|FadBak@A*fF4W}CJy^OTxOBpBWY6I){70BR7yv3Bo#mSV~%E}NYt zkDR1AHhZc2Jqf3Zh%~197QfDwE{=pqAPa8Zi$vo5L2p*3pxafVcuHH{x9$3@*yo=4 zTi3buh^2Hg1C1|=OC)@nxU8O$lfLF97R~_@d9E2&)Umms=F>M=UFZw6kZ;3&z-FU@}n0*53 z?fJL}n+XW_=EN%<2ppn}W#=?Y$6dhG>mXpbT|NU}m8M*%;=&h2AlHyDW(B4Q4Jk1d zHmrkbv-t(~tYOM)k;S|J4s9zEoBeO6oiA!Kmqp}IX#&!CCOsFWK^DyTSltR3aqkR? zCW|n}qIyV@_xyck0rp`SXTRE_=@58}zFEDO{9_|G>NbS$zC7Blq0dLBB(V#3N^~a; z)Cy%9w+Pj^CZ)8)Ktwvc*@zs~q~XOPM_3Pa_g2_CsavM6*c?J#1ar89#s0@|b?JT0 zZ-_Sl`dp!j(S)wSrb2O$iRl9`K54LA>9g;r#+9!cn$?owMhu>XRZW3Zvl3hWYVOE8 zZM1^)Ai^JWUn>YJ2B>~x!=uU2)zn525ChWwaq1JGy8s75B1p$isAIaIV4OO^?|&x= zl&DkvYvoo(UlDe3l#G7R$*<2IwM^#yBE)Khq_0XLPkWvN$xVN%crYo1jt{8QFjHAq zc7^Nc%rwMMNQ*LJL#n9ZgXg%E$K~C2*tSb{%_rndy!#^eY5%+}ruWpmk(gqcuzt^E z%k|n2F_kM9b>N}B+aK>X!cUmjj0CZjGTY=A+y1l zq7vPMk9;5*2yXbV7#ajBo-m8mq8%tpTl(U_llsJLg)5d-7?yl^Ul^YSxVwm;V1-ln znss}7bHe>TbYX4PrA?G9qy%P>r{+%AH;S##AI zzEOIVxl6YLb^P_*VoP*W|y6e*%5Nnk# zmL}?C{>>ruZEWsKf%1ll1&Cicd;SAFKI-T#SK!SoXa!8hY^8!aXf#a6A+QOpGwzfM zUFID$n~fAOxa|CF59`JFaU1Eq!IKb>INy1nuU$Ia0vKhqsnpcRKEx@!DJo>)5-S-{ z^V%>{91P2x5LQz8u@)onEfRROp?AeU_r3YU>1 z91f&37CPIX$ELNv_qR%F*FnkOub_`lB2fsyhoQFZqNB!Ke_dirIb+s#c(x}=tGv9A zeV5BJ3 zw}?}aJm!-N6-OuLnqh+lupI3vwpuGkv<;!Hijf`38)v?$T$ANSvzPeO0dTq^(KSV0 zVIhdGhaz{5Kg<`?+b7OYsbn}4lJPL5Rq|lH`nwyruEmG2SaDgW)Sxj*KzXf_NRZRa1p7JQ9p~=4ADPF&FJzTN zUR`N)Xy_ z{jRTud5=+_g+b4$DP8|`Yn_bR_02i(+sM7(6W)6M3Z8LX?KsxVo!y#sjH_qcR42s! z(ILW@veJP{MQ`HWd}=J;dGnvrY*|#Gh*SDj9o*iIzt45j1!rq`OjhUa`2-Y3Qb5;ggRm1BIZj@o;F`0Po8d%~Uff<`IVNFjR7} z-0UjyVp`oX?RdovLC8lkEu(|{CkH3hfX@y-`Cs-a@)}0(MX(%n`#tcR=0(~AM=GSV zXO|9J(#YOY-TNNJ@w4Pt8I!Mtt(*}zm`AIsZRQE|cjY6-$nWh67siO(?tU_H%g*Hx z`OK%3zS<*j_4JA^*xj?+uYqUp>=hY*rMLD(-#Eq?0`5fk%{5yNuIO)6J9o;~M>a*!7D@71?$WtoW%4F$soQBX zSLhTB#Ho6w8FYVyQQxY&37COUR_U*VLjk{@}KS6 zv@mpwLIbtuueXWswkFIKW6*<@@e;fRP!OB3@y)f1n{3%z8yU@FR z8ga-ZU0&}T%e4*Vk_B28U{WquRm~ZU`LO7ZgVN48upzeuVNt6?Z$1&yeQL};g_@xh zE#BRb=+lVi?}hTNIw1NIiro!&SFJX5j#>U>>{WTaDF9`gHQFgHhgGVVGnsHAF+vc6 zc7Jo>0RoZ?kNW`cL>a+g{Uxvqh)01*TGMNo&!0t8u9DOM%1SduFF*&NPwzxax>G;h zGIqG5MMG3n^8H+edI&DNkjs-vTziD$_S?{$qniH-Fa|f_xET9M zrU_Ob8R%Hx;cepgJDFg9E3nzT+Zui^x>Wk-Pc)h4W*FbczMV81#2Y1(2Ub*%D~fe> zv*LcnOC@d4{zLBw3%=?F3Cm?`EIP5qtX`?fnPkL4{f{G><>Zj&1XuF9YhapBzy|d` z;pa7a?zjv~FVpv(`WN1hc8%}e_B&|Vo{=>DBw|y0_n3_RT*GLPBe@lL??(TePPVIZ zF_*{}Yy>aCaoT)NJ~^C9VJH&tW(GBV?EHtxLI_G;LO%)Z5HdT-`RhS5KO1>R@W>ha z55H|$90j{YF7+c3fGw40X2s%#f6X5j?e?HrOH%Cnk<9h0Pr1!b2d-76d$-iEA{$m} z_EN&+i;HLyEJ`KqB_G^#u&WZQ7;~3(xSP zdH%S!6!_Z-Im;ax2m}jE=&1;}S#(K08K`D6=`A8LSia9K)4WQD*23lwiZd3eKsL0< zCbu(`t+Jwp7>LP_44I89hw(T%`G7x4QM`(Mf`7XoI;P+f>6Tg$s~?z`(g>I{t!1Vv z9B-m^|-xh0^uzigqz) z9$k|R6Npr*Bi9CGGjHj$=#L{qoqhtX(A_u(YzN;073_W5=cga3`yGpZYyQax6V2N9 z)#VCQ%ASBe4C>ZIQ_;R36F+9GTx~eFZzV#^vq6%ds$C@N7a)#}B=Ktb(x_A9yST`k zxPTO4)8|E|%)OCJb4K4&w7Ep4@lyQD2CbtMIad(vwzAwKMrU-Qk?z{EsGcoZzX4H+ zkbRURe+p>K}ALfa(uDmB@rqxPB9V&QyYmrfBDL%9prjQ=yX`}vW zS4B)o01NpDubDW;E2-?r<)3*x9Pg-xiKdojV5VH7$x>3NHVI6`C^$K%J z7Tv*voJz-E=%vA)poZCQsb-rdM-i#Gx6PqW7(tV7QfP=3@+fQ-e=yHh^q7a^NU{`Us8fSzA@0ZxW)&k_OjDMFmsu#_Z+&T1n+vobv+MMI zl$K|6caw9lDbyK#kdFEz`UQ41^a{eLcKpRrvJByQY#6o;E`+zCn=~P#3EWyrae`!h ztO?dF5nTx-`D$mXh9QH%=;DH8hoIpPK4S0tH87iXth?~nMhtiHz(~=mjpoZFs|XrU zPIQwYA>Cm<6j7Bso!|O+JHlcXIkFE9)Qk{T`?Nmsk)&{}VM5d%v%68V;Gr(AvBuO%cJ%e*W9KeG(XN3sl^fUiT~THo4=LHN_`XHm76+j*-aP6^Lnq zfU`p-snKA)vjm+9Ycd@p`N>?*1GRNmA!)p)snqwj5az@qy~f*9J!GXu5EonWn$c)!+ubQO+e_{j1*e*(sW^F`h$*%sGORa?eWbkusT#e{&BFZlXBf|wY@d1w> zOh7gdaVP_tm$$J=?eY4cD_h7DnuF>DzIb21(XKZnARY*Y{3R&l2}yb_NWilBS(}KK z#nRJT`flk=S%l{|uL~4bWLZ=aoT|ibek6WhYT3GPENC@nHy=xNt%K)RLZK{uGK**R z*5^0*dzyjBy?eTaCMHynC-8C=$Ful83Hz~R^K!1|P$GWkAmsehqev@Q3^VhOMGU!V zm+@&%VEj~h)>?DM7Phz#@{SmdC1xYn)Z(D{QNl@tpfOFb;xKDzvXnd$TE#X_?C(_l>`He_3_#MEH;sioI)g zF}_xI7pTy|J6_zk&McE2J})NyGlIT^Oo|yexVU8dSc~1E|EgnzLA$!9c2NKq@H~`x zDL+-Rc}l9*b@dZ{LBeoe*5{J%`>PUIGw3*W$Emz0aZic|S)iAp5Zh}k@B+-C>pu`L z^}pZ-?u4`dH6_XPUs95cENra*iA6FIu(7Z({%7~ULz3()%$x-Oe?ifUSy(%pI1%FC@e|0~Sl6#}i2;>8ZriUvR$eIQ{xn-)d`8d%QBwPUWsYPRXgIV>&;z zA7AaY7?^Otj8BgOqkvPGUt~Q10t(~KpJBM%;yoP890D9UdfWSC^ zj6<+ajFl*=ikV8W^E4_h(Ndm-$oP)Kmzot?i-2V z#sJ}R!`J1)|0c)CAf1rhXba%UOk_aL8O%g+eTfJ6X-f{cb{ z2ppgjuy2Pzd`BM}XTJu(O9gWeAe2&vL zm-d8}ZJud4?eMGe$Pe@Qc>iBM($<#|pf#NVp>K4Q90maq5eVdqIW`vdsFvqvP#xA3 z9z6V865U14uk`9Y4Q%ZP3&FLI-^ik0aRL;0?T7Y>T!4@O;(6rNFZI(d?Kf}2PxM_s zUuZb`$ z<`||+6oJCRmkrQg)3dx!s(u0cPW{0VdJ>pA2e;Pye$i*FW+b4u`+|}MxT|mNDF8h@ z44eo@zfVIJG2R~Ld0f4@!hd{4y3-pN>>=R_5yN$wFxG#K!NXWpppnQY5+MAzE z|BZ;%;Stn;;9qE^=+qP}nwr$(CZQHhOt6z20!4Ep$>8jc_F=kIYU*DLf z&Q+u=Gfp_7VB<8;o6~attZIg1Qd?`4FMDPIlO6&C$Ccd7!;9tgmxP?{y=12)Afk+g zzR+)Ym;L*eMI3PYEUfGaJ#8XFkAQc2v6Pg#O{~RirXjZ%4(%dU{f}kUdnr_d4QcCt z@=dZXJVUV(QQpLf+fBh(CL?_fftYk2{0N^t+uSp~JQH@GKwQYM-lW^Gg74D?ecT+T zhOTcG7kfN`y<+jM8j&`RfS|C&@aGH?)uT8l<7BA-h5Yv)JFEv^7YE~!c-iJdzYl&Fbo)MtalCBS;j&Qx2LvICQov{KCTs2PWKIU!K$Hd0(&4ZbPa!=pCwq`*j6 zA5Q|hYTyzloEA3S?o?^uczK4T^Kt`o2KE|{Xx_s^4nGEf3dRDtfE*tSk1d8pEDsQ~ zPf00Olx*|GjGnc=tY=M`^F!bUgs?>VMp+-&U7L~I_&j=?a<%xlilyBWLIYANR=$Ds z|ISd|oS)k)zab{I!evgGTbtHAGu(gp!wU4KY9wv&E>|j~S-d0y3^0#Y275=>+7c0q_E}-fsQY>#8V(GqsS!#^~$JNpRm}2?%^}4`$G9XVfw=x?IwSsbODT5{u22R?Ec~=qW

L1y6rGG_SS=sr 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 aOK;ymZ&ZFrQUX;ACP~1>rSe>r;C})2JMQWL literal 0 HcmV?d00001 diff --git a/bash-5.1/doc/bashref.ps b/bash-5.1/doc/bashref.ps new file mode 100644 index 0000000..0ef38c1 --- /dev/null +++ b/bash-5.1/doc/bashref.ps @@ -0,0 +1,21959 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 2020.1 Copyright 2020 Radical Eye Software +%%Title: bashref.dvi +%%CreationDate: Wed Nov 18 20:13:07 2020 +%%Pages: 189 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSL10 CMSY10 CMMI12 CMMI10 CMCSC10 +%%+ CMTI10 CMSLTT10 SFRM1095 CMTT12 CMTT9 CMMI9 CMR9 SFRM1440 +%%DocumentPaperSizes: Letter +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi +%DVIPSParameters: dpi=600 +%DVIPSSource: TeX output 2020.11.18:1513 +%%BeginProcSet: tex.pro 0 0 +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 +def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 +rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 +N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop +false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A +length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} +forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{ +BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat +{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch +round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 +rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B +/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M} +B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p +-3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{ +0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: cm-super-t1.enc 0 0 +% This file is generated from `T1uni.map' and `glyphlist.txt', `gl-other.txt' +% +% LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ; +% LIGKERN quoteleft quoteleft =: quotedblleft ; +% LIGKERN quoteright quoteright =: quotedblright ; +% LIGKERN comma comma =: quotedblbase ; less less =: guillemotleft ; +% LIGKERN greater greater =: guillemotright ; +% LIGKERN f f =: ff ; f i =: fi ; f l =: fl ; ff i =: ffi ; ff l =: ffl ; +% +% LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ; +% LIGKERN one {} * ; * {} one ; two {} * ; * {} two ; +% LIGKERN three {} * ; * {} three ; four {} * ; * {} four ; +% LIGKERN five {} * ; * {} five ; six {} * ; * {} six ; +% LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ; +% LIGKERN nine {} * ; * {} nine ; +% +/T1Encoding [ +% 0x00 +/grave +/acute +/circumflex +/tilde +/dieresis +/hungarumlaut +/ring +/caron +/breve +/macron +/dotaccent +/cedilla +/ogonek +/quotesinglbase +/guilsinglleft +/guilsinglright +% 0x10 +/quotedblleft +/quotedblright +/quotedblbase +/guillemotleft +/guillemotright +/endash +/emdash +/afii61664 +/perthousandzero % PERTHOUSAND ZERO +/dotlessi +/dotlessj +/ff +/fi +/fl +/ffi +/ffl +% 0x20 +/uni2423 +/exclam +/quotedbl +/numbersign +/dollar +/percent +/ampersand +/quoteright +/parenleft +/parenright +/asterisk +/plus +/comma +/hyphen +/period +/slash +% 0x30 +/zero +/one +/two +/three +/four +/five +/six +/seven +/eight +/nine +/colon +/semicolon +/less +/equal +/greater +/question +% 0x40 +/at +/A +/B +/C +/D +/E +/F +/G +/H +/I +/J +/K +/L +/M +/N +/O +% 0x50 +/P +/Q +/R +/S +/T +/U +/V +/W +/X +/Y +/Z +/bracketleft +/backslash +/bracketright +/asciicircum +/underscore +% 0x60 +/quoteleft +/a +/b +/c +/d +/e +/f +/g +/h +/i +/j +/k +/l +/m +/n +/o +% 0x70 +/p +/q +/r +/s +/t +/u +/v +/w +/x +/y +/z +/braceleft +/bar +/braceright +/asciitilde +/hyphen.alt % HANGING HYPHEN +% 0x80 +/Abreve +/Aogonek +/Cacute +/Ccaron +/Dcaron +/Ecaron +/Eogonek +/Gbreve +/Lacute +/Lcaron +/Lslash +/Nacute +/Ncaron +/Eng +/Ohungarumlaut +/Racute +% 0x90 +/Rcaron +/Sacute +/Scaron +/Scedilla +/Tcaron +/Tcommaaccent +/Uhungarumlaut +/Uring +/Ydieresis +/Zacute +/Zcaron +/Zdotaccent +/IJ +/Idotaccent +/dcroat +/section +% 0xA0 +/abreve +/aogonek +/cacute +/ccaron +/dcaron +/ecaron +/eogonek +/gbreve +/lacute +/lcaron +/lslash +/nacute +/ncaron +/eng +/ohungarumlaut +/racute +% 0xB0 +/rcaron +/sacute +/scaron +/scedilla +/tcaron +/tcommaaccent +/uhungarumlaut +/uring +/ydieresis +/zacute +/zcaron +/zdotaccent +/ij +/exclamdown +/questiondown +/sterling +% 0xC0 +/Agrave +/Aacute +/Acircumflex +/Atilde +/Adieresis +/Aring +/AE +/Ccedilla +/Egrave +/Eacute +/Ecircumflex +/Edieresis +/Igrave +/Iacute +/Icircumflex +/Idieresis +% 0xD0 +/Eth +/Ntilde +/Ograve +/Oacute +/Ocircumflex +/Otilde +/Odieresis +/OE +/Oslash +/Ugrave +/Uacute +/Ucircumflex +/Udieresis +/Yacute +/Thorn +/SS % Germandbls +% 0xE0 +/agrave +/aacute +/acircumflex +/atilde +/adieresis +/aring +/ae +/ccedilla +/egrave +/eacute +/ecircumflex +/edieresis +/igrave +/iacute +/icircumflex +/idieresis +% 0xF0 +/eth +/ntilde +/ograve +/oacute +/ocircumflex +/otilde +/odieresis +/oe +/oslash +/ugrave +/uacute +/ucircumflex +/udieresis +/yacute +/thorn +/germandbls % or /germandbls.alt +] def + +%%EndProcSet +%%BeginProcSet: texps.pro 0 0 +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 +ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ +pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get +div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup +sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll +mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def +end + +%%EndProcSet +%%BeginFont: SFRM1440 +%!FontType1-1.0: SFRM1440 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecrm1440, tcrm1440, larm1440, lbrm1440, lcrm1440, rxrm1440. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Roman) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch false def +/Weight (Medium) def +end readonly def +/FontName /SFRM1440 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-178 -319 1370 944}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E4875AA6B96583CD5632BAD9EB3D511DF934CD36447A31 +D420FA313B5721C37085F478B27E13191957AD30B8B082BCE733AF8402AA3B7D +EC69807BBAA8142AF1CE151D99F5A59AD18798F94781EFAD48BEC8C62C05C56A +336D71AB584F6DF014C56523108606FADE931125496247870E980A65AB33C0C6 +D5B074864D0F58CBE333EFA1201AF335FBDBFB1CC8B1294856C250F222BFB8BE +5DE74F808904F7678552F213C674497F829E96812D340939F73737731D289801 +54E5A8F7F5067ACD9D768F4649B51E54513F2F7878141FC719627C23FC5FBBB6 +3F663343D902E95C56C559B588088227B22378FAAB29392FA62933283D2FB2EA +FDAEC6C1A94ABA0B5BEFA1E728A2052434BFBF6D9759D02A2C6092D4EF794241 +CC28BC939A424AFA193F96530985EE89E2731F6A99BC84C6551A3FEA1342509D +D389F786C8EAF972B8C98B79003B6C71E6696518BE4CAD2A317C5D29621031B4 +00A035445D8CFB67D6C136B3F6D82396E11A3679BC82498519C27601236F1FCA +073DA7817B529424CAF49A0AEE8FF7520C0F204A3B1725F46C2C6953C20E93B6 +2F3EED0EEDF87A350CB841516107D9571503A3D62A2F81840070D43392160783 +D111F3463760EBE634515DA1A1B6C3A5D14FC475F277BAC792FB69B4219E9BF5 +E6F8520584096A7B7BFE439A1604C2BBBB9140A4F4728B4B553A27E1AF52181D +701E90C4FBB16EA8DB39B562E5A2932D45893081D52E020A1FCBC44DC204F4A5 +BEE47F9D25876644CC856B1FC225B61124B89B896C39CDAB0ACCA8277F827382 +6F58A0C8456DC41217219D894B42968FB2EC75D5518B6C4413BAC889532F0B0B +A8D728949CEA00D4A1FD757B3A2336D472842ACF8EB9869044947C67D9AC7BBF +7386DDE209A8DC9F18085952818F67FDC6088D9C8BC51BA6DC0FA37A0F81EDB8 +6F259FA8C0FA3D55BC44529889E72E407C89ACF658631A0508FD7991088644B4 +C958031B52421F9CE73A0479A3175231EFD9E0F7A7B08380E9BAF015730B175B +93C380D1D0F3EB929B7182691BE7E2116CE295CA4331ABD7ECAD7D2DD46FE3E0 +5D3893ED100135901FD42B4E11BEB2689A13E86F1E68635DD81E5A720082E802 +89B440A111B2CDC6BFE79E5B2EB0C528FA0E958F0E981EC29C3B02A9186D7907 +A0CC29251E567958BA95DE609A421581433DD50AF96A82A5ADEFD1C9540D87A8 +D74A7709AF84AD36753784ED8267D3C2521A32C7A9D5BE01E0AF3B349200639C +90C8BF2E26920AC410A9C5D1EB85C0ADD16BAA83B6C0BFE82483D3B719DC19AC +89155140691E3E37F861C53A6F39441B5F229828B198DF5BF6286060DCB64433 +F43499E4AB973F84655311A644ED0921B41B9AE7A8060CB1F45E824FB3497C63 +0A13CB5902294E66186E4496A825447734DF4AB581803488B912E7DCD6007527 +B4CFDC5AD5D1DB430007AE929F969EE332CCF235DAF977D387E47BE0EE337118 +8CFAAC0907E16B0BEAECC3B39221867AE6464BE9AB4CE591B2E24B45AD2C70E2 +A183065810D6AC3DE8EA9F66615113F1E683A4475CE5817491ECBDD4A4818AED +EAFEAB8B93FBDB335D02FAF9276958EFAEE1057C45D313419D195068076D77B2 +C0FF6EA8D6F3F0A899D17E04B8B2141EE335 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR9 +%!PS-AdobeFont-1.0: CMR9 003.002 +%%Title: CMR9 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMR9. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup +/UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMR9 def +/FontBBox {-39 -250 1036 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR9.) readonly def +/FullName (CMR9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 12 /fi put +dup 44 /comma put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 54 /six put +dup 55 /seven put +dup 56 /eight put +dup 57 /nine put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 72 /H put +dup 73 /I put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 82 /R put +dup 83 /S put +dup 88 /X put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340 +15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E +ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4 +B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029 +85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C +DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955 +F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D +2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5 +B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7 +78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7 +E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3 +41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277 +B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072 +55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA +700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9 +8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A +F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4 +FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4 +3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15 +B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2 +AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013 +461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC +CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85 +CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C +4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F +291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223 +D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181 +C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115 +D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9 +9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405 +2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380 +A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB +2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E +2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6 +AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577 +9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB +B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67 +0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D +9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B +42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0 +C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35 +623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6 +B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4 +E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97 +CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D +07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7 +53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350 +EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9 +52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88 +F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC +D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3 +81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D +B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6 +B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A +31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF +E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293 +846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733 +46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E +44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08 +A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A +BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5 +1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4 +D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344 +6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A +E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E +24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E +75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D +EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51 +C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0 +5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034 +099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281 +7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE +53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84 +7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F +7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C +D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933 +CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD +866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B +B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826 +ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B +B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64 +FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B +40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643 +D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8 +2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787 +39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2 +1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4 +F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9 +253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B +14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085 +6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E +E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B +9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E +EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339 +FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F +289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3 +A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5 +5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46 +5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652 +152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE +67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3 +BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59 +3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88 +713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF +2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5 +D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143 +6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB +A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9 +F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95 +26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A +C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970 +350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700 +70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5 +F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95 +F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8 +9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2 +DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473 +F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D +064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF +1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325 +A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E +E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF +01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C +40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C +72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645 +24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1 +EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775 +D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311 +83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483 +5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448 +1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69 +AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC +4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3 +7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9 +65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063 +B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6 +FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6 +4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490 +8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6 +1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3 +10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B +C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4 +8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A +C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0 +7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F +852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C +3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997 +648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD +855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE +1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C +1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0 +B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7 +D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99 +24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C +552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733 +6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0 +800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8 +6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659 +E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4 +5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2 +00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F +E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4 +82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7 +6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3 +128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D +744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507 +84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF +AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86 +5C7018E5F1DFB86B739C4749DDCFB2F40529E1F15174DF4AE9833958B66ED869 +920CFB9524F05AB2FA84A4AC41A02490699F277A3B4ECC3C31ACF79E884B979C +AEFF660A8EEF118C79F8DA266F89F32078B1C333DFA5264D6B64371276ED4DBD +5A2DF213D85A56B1CA85DEA53ED0299C1FA48D463B11FC9A0751C986CAABB184 +829B1133CA8422DC11C6CEAAD463FEB468FC7AA2DDBE2E708D27D89164B12BD8 +B9A71A1D06D2FA9ED0B02168B32F6CC0FE765F2AF8A19C7196EE55648E642184 +BDF993C99EF7C10AD2A7962DB9B7851E6EE24A0C53475186BB44083AE18254B9 +F1CEA0B66A6581C81DE19DA8EEC9330A030F3384C1DF8216E5A25FB38C1B94F3 +403C3541593A016CB5FD306F41F40E82D4561EBCBF76153BDFCF338284348755 +0208360C5842FCD6B2D614387575B6E49F4B5A4DA281A352ABE8B76CFCD94A00 +1C586D19B68D965BD8D7EF0DC87271478CB4D0D1633676A2FC51B36876002A9B +F5D632ED778BA9EA1C3741FFCC15AEEC11C8E1544DA7358473325812E50C2135 +84ECE7DCE281956681179C09C0E8DBAC5E4424AAD00FDA269BCD6412F1D6DCE0 +2BC7CABF85AE803D620F5140C63DAC4B0E5F7896343973FBB99486B93B6DB58F +38ACBE8868CC58B3918C1AB4406FBCC7BE8496C78C9D628716BF1E306AA802D4 +5FAC522B1EE90448387DB8E85235FFAAF3754E2317B693D567A488753993B8C5 +DA3C8FA50A35202958FD0BF2900A6CE175920C2EC7CD449D4DB189A50958BF17 +644345CC38250088A694CF0F482ECC55ADCD02E17B3CCE66213A6163B8B44C9A +89068E3B5301D2364F85BF9DF7C77342796363A7B6B294CE26DBB9179DC15756 +E1B32CE919AF44BC79A3AA8FDF6118345B2AE03F3B11D57D9AF50EBCF7152E37 +15510FBF60F16756FC674E2BF58E88CAB2CA2E8B47F50096C51179684331FD61 +8B34520C9C7D01E1511C924FA76B3CAF79501E0AA2C6E1EC6F00CB6CE24B4123 +F493B149B5A5147EF6BF1EF3CD21A76945B95082E1FB3C5A150D8AF793348E8C +A988354FA46E3775486A6999E022EBE293E8396C8F9416929607730606CFA772 +BC8388BA5D64B79E52DD2048ABF21661121A001E6A75731B5DC43CE040396BD7 +B85603C8A0F37E522FD0CBA63C454B12960451CE65A69F98FB2FDBAE725C0999 +05FB68B4C1D320F5F3D61FA8446BE6F8BC46AD9CFA5674A3EC73B8F3419AF9EF +7A1A3C9EDE3BD6359902D4B5F3AB4E3FF9CB2E1937937AFA182C651985703F20 +FB70E37AADED6345EF4E83CB140FF92310BACFBDA11F2CD5AD93AA7563D7426B +0D4B6CF9B669F9A702956CA845E3814E4B5491E58F8C89714229942165A6E8E6 +58982D89C4FA7BC557214BF9ACE2C63AD88F2D1B18A04F510211687C35AA1F7F +D2003D4E60400B95E70422024A7111D926F1B5A77074910710594B95680CFC4D +911FC16B928D9644340A9D2382767FE6AD453E8E4CBF19F77D3DA2934B11FC95 +A6900C3CA3F2B6AE4290A005F908305CB37700680D76C4999AFE509B18305D28 +88C36292D6DA208A8D42F8B81FDEA7E93EE59D6AF3F1A3522EE91BE71BC655B9 +79C49B033A036E1FCD94FC581AE732A224F055503CFC69FBCDEA39CB00DC8A0B +4BEFED99CFC4E44ED51DEDF9EA825FF6BB97D316726531CB4BA083B033C0B69B +8068D5D3E3E31DED5F6267439F149549A6E12B00BA85818AEB491978364D9F7D +7375CBD6C5511CC846D0058BD2CE5467EBCEACE5CBEB2D33AC8E12A84CA620EA +99A0ED916B7770A056F6A9C361CD5118B5DDB10A5A4E643FFB8FC5DCBACDCB28 +696E26D030C5918548AD8B87E21E1B4BAA91AF23663CDE350A21C2CEEFD28947 +BC07BB49404FA39F251E36B95B7338EF03F2E63FBE0E023452097F21931A2599 +4EBA7BFA669EBEDC0F5B33375DFE6DB1638D19D4B5112B5338B14C93F707D340 +056B2B75AFE418EAF9CD57ED842F7B5FFF037B3A4B369C63E4DF9F0BDB4E39C6 +C5BE8EDA628F1C6FEEBC9D9886DBE502CCAA86092646094118069757DAC25C38 +2CA53CBA27577BAF2C57196489CBA54B96C650A1C130184A4444CDE2D0CB1A49 +FADCAF1FE3A66334F85FAFB00F142F28AF2D8FEFC29FE8E0FDA448F181040BF1 +62EA7AE75100BA46B49EF30F596CD9091164AF70666E254938BF6A44F01BBD2C +4160164FD89FCD358E48908BEFBAAC4411B52390CEED6B46D729698CCA8E164C +F77CEBB50C5254F81570E414B1E9E79269D3B2575E161620CC732C0405A29ED7 +1E5A6597D35B11EE08DC09FC9C27F0126C22C73A0EED657D7F91790777E7D8B1 +EBAFB0EC9ADAEFEF7F6A91A1028E46D76289EB1BC15D3597CFCD78D88B633759 +93CB4477596E28A1E413BE25D513BA611757C994AE812C5A6D9AD3F770499252 +C7F53E585E03B2FF056EECFB7ABAC474A981D757AB3B6F2815E7AA8AF8BBA42D +4D83EF8A0FE21CA5EBC295042AE5D74E6D05BECCEFDC74ACDD0A59AFDAD3E94F +141E4BFA04ABEF7E6C43418A5EC54C6E8CCEA1C34DDFAC9CC87DD5E9D4BEE705 +F11B003956DB37B145DDEF022C645C19329E6C04E1EDCDB5F6A33AF1EDB9A17F +79066B1C3579E70B2D43DD89D1F5FD2B2015FA5009D612781CF4916DD8C7B1B5 +21FF0CFAFCE882A106D356D8851F73635A4E7C81FE0BF6378DC2219BC883E3A8 +23290969A2ACC06A77866A8AB83B39289EB14B4F67511FC97F3BE410B4DE91C3 +54876DEB96AB3C60D1FB17D29172F96E98D3FA77B772C69D17A757B6CE32D2C1 +67182DC41B5E19F31F669A886DD4D08092AFAE132C0E0FF810FCBF937EB3AF0F +5AF1416C11508EBDE0C0EC1C618CB6F66658D9CA3793D523D224F8C9A8ADF6B8 +16CE7D210FD4771ADCFEF08809C0E9A37170F0C02A9C9907FE38DF8795C6093E +0DD464FC59313CA7EEF4658A498CFDA9458AA1A86B2A0933182954BFEC58E9AB +3BF65DEF9BE5289826A7AE0AB0E93D83178049CCF8BADDAA7BCBCCA47F983E22 +3CCBB9D2D522DA2A5EDF409A862A52297FAC35CE11176A8B89671BE758CEA324 +5BD245937C46D52F15241E22F803F77E7B5ED83B6395F5387EA7CA46E1DB1F8D +239374BE3F4640A6FE06CE65A07123B722523AB913DA6EA385F524940432DC0D +CE2A2A50539C42DC0942ACC30D372BACF8192645F9943391A602A019EDD69241 +BB0EF67C1C367344D82F5669A75D5234A3FE9312EB4C6BE310722AF8065835F7 +E55443034F04E4B41F321B7CF95EF163231979A8D7D2E7B982D6DE774E8F4CCD +D846A38D9029028C50A99ECE834C67F7CA30F39F4D1803B3CDF4D19FBC3D1FED +EA3F72427D13D6C51FB97E417D38E4AD86E93498AC245EA17317EEE503D11C60 +E6981F07798D11364ACCAA0F06E6D748584EEC92720F50B71157AB2887406B13 +491C79A0054F145417D7E4902CBB38AF4DFAB4F84E25985A6FBF308D974457D0 +8FACC57B056749382FD35F7D9CFC58B2616D205CA0328294C7F47AB9EB50E1D3 +56B4AA213B1605985939AA68DEBCA1F50407136AE16196EA910089D913A4DDA8 +079F046AAD1DFBBD36DF39C43CF356E40972D8AE3F044F31320A3567520331CD +67227812DF611C31DF6C7B420A170B43A478D0678F615AE88B94646F0F1A400D +3E6FE22E584B1197B373FF2A0CA5C90CCF064A5C8A08170269E967DA2833840B +BE87A26B8A5C80F8460100D97C17B62BB62F5F4DDF270DCE6C4F08A733EE750F +6FA75D57A96F5EA3D089D5634FE7C29D6A3DD8206FFAC31EFD273484042313DC +406A646C898E7FCAB097C6E362CE13741CC04549691C6BC246D9FA598AD671DE +81A05E8D011A838E3B9F984676E03BB77EAA1B1256C04028801748155A2B5082 +57E9BFA74C3C18BBBDB7458B5AA3D484CA516A265A9132CA6A16A1C6A1E8F600 +9F9368F4E22AC348EBB52736035A4A4524BCD4B2EF54314007FC9AF134754FD2 +C20294DA556EF82639E26A3014F597955B8766C1E317D21E978A2ACEBAAFD25B +6D27E861E254230360B34431BB58A0037C3372CFDF13DD806DC6ED6B0CA4C96F +B7018FE26AA64C1D23879F117F9969FCBD649805FE66D5B439F6531E5D841B0F +43D110BFE886A11CE54869E036D6480F6C6E0DDE33B40D605671D99A6D297C82 +65B1F442602A026AB0B73BCBCE1B098C423CC623D40D679E45052492E5129675 +F1CA105AE94D7BBF162E8B3CFECC63429E866ED4CBB69F25687DB74A330C7F5F +9727BD3DCF5890FA9BEE5A7BD997433CDD1315850B490DD4EF503BC1A4F30F93 +F032E761C9B4A099ECB96F1DDCE4262FBD75620EDD89659CBC70EE3FEF7C50AE +CB47D9BD8BDDFB7D5ADFCE11EF6871AB41369A582211BB5680DEE2BC141259C3 +08B73E26815015B99AC3683EDD9EBC880A5A64EA728DE0AD8B038D666955E6C4 +0CB961183309835A70BE28AC86A0C90EBCDE36B2C2F9DCF6E61B27845C048932 +1D9CD3F5E7EE7157A478A9B624C46E044AA050942FF1E15C8553321D36EA7586 +3D4A7CB9D971063AF089F6B2A288A83513B4EE3A0F3CF537633604E31FD22B04 +A7A63C54535D31129C4713E5561100F41F596A2771E3399A84C7798C187AC61D +359E2181B61DEC7EBB1E38A5B188A85B9E0A4CC22E0AE4FDFCFE8DD776C703DF +D581E9F3F68DC63B91B7CC430EAE05D7451345EE9928B18947D1EF0907138FE8 +EC9F98CEECEABDB91CE0DC993391632A2993E0F23EDB138C388ED74AA061F4AB +A9879A48EF233D72C2CC6A976212801677FF31818CAA227205687600362634E6 +380A6FE49F7A3E111B50DC40B97D58A7138BEF9BF2D58633643715D96F09568F +D192E619E4DF5BAD6E934C3AA1E29579E85127024193F3866F235C58A9A097F1 +56158AEDDC8A1B66777C28E798DFFD2404507A1E793E990ABEA01D772343B3C8 +0258461306AB5112B36455E39B024D544BC723C61AE4756B78B97566546201F4 +77EF79F142297609B74AAF54FBB44473197E0B5A706FF921C1D7B80CBFF03524 +C6C9B37BF5FF366B0D60026FBE01D9A213905B384449F62FFC7F872114C64F01 +1BD76FF84899641A793D10A504F0B56A7500354C748A68EA4396296F0EE9448C +1997C351D262E9055D2265E4C467FBA11F97E80B6A862D398D341E46212B0389 +08BFCB93BB7ED61C0E4D3BAB05C9A620E78E19342F02A9433B97CF7ACB027528 +E70EA97389D55DDA0FE4BAF2BA8205D3ECD294BC8EC81293C9A11F79C87EEFC6 +C18A8AEEA8F0987BC183C9EED25A91F77408952DDBA65BA715018CDF4145B64A +393ABA54A176F8DCF83A5238D538B3E7B569229F5C4CFAC3CC9827661AF20F1B +44A7930D1DA6688FC1B11BAF855E3E994751E9FE7BF4D588816618A022E25673 +F9C2D9D9AD9C6A16CCC923BD9E94E9A916C6561E692724C499F0A49E13762197 +DE52122CCBF93E3505209FF7F66A36780C7492650F4534E5984642BC7844C69C +0DC60DD6145A5B1662884BB82E4A97EFF6541D10D8799707CA86591BD8CD4CB8 +59BFD8D36AF4D1DCCA1433F20CDD724F3550D88875CDF3FFD49C6F1EA956576B +A1C64746D10C0EE07644371CD7FA3388C308B0E20918061607730E92A11057C2 +27303C387E163212DA3C5EE8952BD9F7F328E35D7AD3CC0FB84943ADB0BAD7E9 +6B4426FA53EEA4F2155359CD3F8E8DD5F0A1FB0B6C8F6A83F5B8BB179FB57256 +57A3DB758AE0F7B0D3A636F09AD0A86BE31303A6F48F2B925B6EF764DE59C3E7 +C995C5422BB61BDD691A5980CCC3639234A7A48A351E67E7ED9F0314B2074210 +36725D5306BBA32DB24BCDBE3F989EC1BB9CFFFDC156280BE9A7F7253F7F4516 +0F368A18CA6B1DCAA5C99693B6B0F593400D09AB18EC8F741091A32E5B5F9BE6 +B628F840E28643A9BF7E24D37E9C39A05BB70479AE6C9905E9B763F23E546A54 +8231D1A6009C658AEA37CA6FD5D2A36604370262583DE5CE3568999E594E5A3F +4D665BBE80C7109A6FF96A856B511F4251555B7FCFA55FB1F739922F7E62F396 +482ED48EFC10B10E6D68148DE88308307BB7643999890BBBAAF2D11484425A43 +B41A4F2F076CA8D187074F3621C0E4326F7B48D5F582A91763A02CAA769947C6 +A424FA57F87E92EB9B199A540A05D4C65D121321BDD09F99EFFD4D43536EC180 +2A2DA1672CA05956D8737D514B088DCAB5D09C633A75BFD6CD35105A9DE88968 +F46E049EB38822AABEFC6EFC14A693555A7D35BD96764D7B915E6A1153A9F5B3 +84A79D547CA8DFFCC4D1F1C168EB6EF6450DC470DBE0A72D1264EDD2375C69AE +554AB2DCC7F966F013F0A76F0FBEA1CAACBCE1B372F098EB069DC35688E6A4AD +6F29454E371DA51CEA13A8E8ACFE916389DBCB162CC81964B4ABE791BB71A27C +51E24E7571CD8FD16BB862199B562E1B9965AD602A77A644E687129A6980F2F0 +F6C1CB584BB8FD1D1A1F8BAA3812CE8D051D23014622A8A508E4296541EE9846 +4A2551A843B6977091E90E9006ED40E62D487ABF2B48633F09080C6C06B390BA +CEF77C69E858E23547FBF6F22BC51C1C5ECF5430588F006EF7B3DC6DC0B0356E +CC8F8099721A5E3475857C1F906A11BDADD1FB27B3A8683FBE50BAF54CD4F4F9 +9EB56147DDDE5B5D861CC8B89DFF9502E088AF20947AE7F72BD6F427F617A7C4 +6A3062AF9029071BE53A25E8C329CD0EE5FD191FA2CC3DFD4D623217C5F6C82D +5FC9661900C111EAD81C6A88FDD47AF5D4B72B0FF9C658139FA478A05EE75DEB +83AD2C79BF78D9CA975BE573AFAAB5E5F0F01E0DD9ED868BEFFACB15DEF79237 +6E685CEEC76F5884B37F94D8FF36D3FE25A771CE4523D4F4D7D53904683BBF91 +18996F3FA2090CDDAFF660AD63D9B5CABFEBD576C0F8ADA93B13EEB8147C1976 +C0172D637ED71C995EDA78AB85C3654D1441DCB41083C4EF1A123980F96FDD80 +6D4190183B4153BC8BE62232A0D6493D7A17C1644057A21E1AFE7322406F27C3 +94E714925202996554228981A8C39EF9AFB30F5EBCEDDF39DEEE3824D78C6437 +FA7FEE75F3B2280DAC4D76339F99F5848B0BB425B127DCC6EB20C1CA50A5233C +793276BFA23F8B2CC4E061BD5797563ABCD7DDF79BF0957436A26D32723EE772 +AA63FC5F282FB238676439B1868946D59ABA007C5C5A2100A0878AE07DEA3CBB +B14FF6E4F69F2A443D7551A6BEBA2C1654E3A8F3058DA2DC0A26CA05C8724013 +39D3B730E70893F0AB453F43DD2E802A46CF66A3E67CAAAB0C4357F167FFC174 +A9BF4E1BEBCF56DFAE9C5A76577FE0AEB09A738E6BED9E62BDF7BCF5B624312F +E48B9DE428BAF38EF9AF8F450CF90E8BCF452D1888C42CEF8BBF2A75953E1F64 +AE35EE604F03199852323AFCCC72CCB2C20C489F2514BF347BBB5930BD425888 +6FF69321A007E21D77F57367F9D41E5D0E01171E96EECA01175F3F85A946C621 +9531EE5570189773AEC2E9D9F2AE5E4CEF742E80FBF22B0A3D4C56D825689D81 +6F6186E00B39E9054559F4C05D35EEA024C8B2AD71F0573BCD1B781F31BB44E6 +FDCE0787C66554093121FB5DCFBF83F06092DFF4E1FD10E6195ED375F9B4AF57 +0186238CFBC277EADC64675C7A9F2F2E17BB2652024C2E9AFBB0D9852D6D4B15 +2ED2EE3374436C58A78EAA552617F8694F123FDA2ED16E7E2D4C45593E0EB4B6 +3257A22F303D0D0AFF77A320967E5FBCCE40BA0FEBB14DCD0649B63A68C6F78E +53DB018C87D8FF4FD1DD789159E76F50CAE880AAB7850FFD309B0B929A641DE0 +FBA51339C4ED5D050398A37EEAAF4D84EB7223D3557E846123462EB60CB8C35F +8B5A628A16692B1EDDEF9ADA7C53FC1BFC1159A2290682ABA5888506482FC7C5 +26A27CDAE23C5D7079FCFE42CB1BCAF8358886B08585872528C6699442358D53 +FDA54CBF9A6D5AFA19450A5D394D209570C970679BB11806423E7A451D7811AD +6284843A4CBB0B7591646B650BDB39E17C6344F846A2F3318CABA7BE6BEE67D4 +712AABD80A4623DB2D797B9D109B7403C46659EA299C8274CB49E9D31A0A9889 +5747621182A9986751141890719C900A785C4DD03C8476C2A3DDF1FC85441D6D +089C7C126A72D8950A453C8C40CF92FBF4107DCC4653E836264BD29F584E1B73 +47B9234FDAEBF0768968BB1F75871DBC0C39CED01611F823B6A17742FF4C407F +6E514DA20DAB72B53D3752B3F2CB8AA720A3F1A4E71938DEE47821E16E97E0F5 +32C9F57335B12B0CEF6B20917C1CC06F035E23F93B6376BE83467C23F0B3A687 +57D9616B932D6BBBF181B6DF116B3D88E5B6B4327F84A16DBABC9ECF4562A96E +D89A445409AB5599175743E559E9C642361DA758611C0D56ADBEE0B686AF487A +EF7EC4FA9CD87239886968B7FC3144313F5F9B90D1A76E45718DB65D2F44D123 +81189F26088D950335E085EB3BB1BDAC3AEE5F5A1AD7C44BD119D04693454422 +CFC2855C6667E64CD8FCC76088F3DB888DA386CB77A060B52930576B80E6CCE1 +D393E689AD64D9A3A3BB37C0EC3CF9286488CFAB18D656E1A0F1B078BC8F5D63 +4B56A82578844BE89201880C0863BBF7F35F1983FBC70C5D6372E298B877E6D9 +89B3A60FFCD876C5372605CF2B5C6E3EB4642D14C75DE75DB264111AD783D49E +F63C3CA3B6D27A2BDA9C9593E6AA5C0A851CA1B8420249B8A3294664BB8025E1 +EF9246BA8D12186C6EBFF3EAE52B4169832CD1E95EFC52F70F0AC1C4AD47E661 +80997CAE243FD5F4B924C597F32E0FE4E32BE29C6063F4813DDCBB96F25955AE +2E691AE1A7268B0592C934FF2AC5B6F7F54C8858406D1204EF17B09C3CFA171C +5FD08034D00EF30FE2276F9E1C0788FF3CFA161EA1B9F233991B949E21942DA0 +B1026B5EF71B85BF1393E114FEDFD47189BA3DD480D3633A8A208DCA897150A3 +C47EAA87B8789E7D57543973497D119AD04F4E3FBFC5DC7741FD7645CEA76742 +8F2F551AD179A45C361D5B314692CE4C4E5A571583804F35D3A45A941C46E168 +68844DD4CD99284F2580E45DA23300B47C10B666E1F7B5C25B8BC054ACD1DC44 +12668056ED2E045E777D11836A5BFBF6B1C79AF48659C57910472C8232C37447 +328185C6FFF6CE1E24EB9D29D0B21E6F40BFA843E2FC6DB59A3A576EA7C26F0D +9275663D03ED3AF206727909CF6E82B1916FED911C5390D4089E33E01D3A3580 +EE8A6D35421297812C7250FAFA6B333655B2A249BA8489146EF66CD31BB734F8 +EC289D5B6541A15D423BA486E7D173676282FA6A12DFAB03FB706DBF0A2C0332 +DAE3E859146D2ADCC1EEDF29AB5E98A4B4085F8F312CE94E5448F93653A44AEB +1DB10210A1EA1597064BF3BDC2BF8BE227B8E0321884DC1B2C1F426370929D30 +22D72F8329C8DEF5D80E6DECD597158968F60F4B5F910537749E1963C161DBD8 +83D94CC3C7A334722545D617B9A8586489D5B866429D9130E785AFF3DB7F5AA6 +571A01DEF40E75570CC9F48C4BDD044C5D9412683C282406BF2C5DA0B0661528 +7834CECCAF019ACA31D27C4865A11BB664EA1BE6377A972E76A05F12E697569E +2C400B018F1EB7BB747BD91DE1557E8B85F890A983D5459EEC773DC0CE99B403 +B15CBA9EED2EA4887C7961E8B62C566CAEE124F329F21BAD56E8CA6ECE16A249 +6256504DDF5C84F5D1222076B4DFA6FB430D2142ECD3765B65DF8A6C87278435 +45E4C826C1922E357DF688EB6F4A6AFB6438D94F7E3C444C0372B7C7CD26AAF5 +6C7B8A44EBE6DD58CE6F878747F7E59FFE8F680661EFDD36DFC4771EECE0403C +F83B20412E006F32870ECF167167974906F99BA655BB23E5E26288535A4AE670 +D3D087F96E076E060AE6A3544570264FC780DA250805993A69D237712BFFE3AD +E587B70D2970692918D3F80E38A769697E98EF5D034C9CFF6D8387D95E16AF89 +4B558561839DD96439349C745BA98D28DE129BA9334EF36994171DB9F358A41E +C1E7CEE3DB6B8CA16E93ED1DABD8C89AB3BA454C20F201D24895D2F2186B9079 +B15430E6742BCD6DBF54A4915CA100B043B341B489F9AB72F5AAB8546E1B2704 +E4E8D752DC3E90B1B153A78CD30E00B87B9E812693BB5F8A72BE121FE861DEC2 +EFBC76D20201C0357C93662F6243AB7C003D51B1B3E4C94830361C81B606C747 +6FE16472E5FF087A25540E66BDB10A7B23641E893396A1BE38C102EB4C391648 +DD50D074BC2B3A10AE6E3A2732C5A94DE40547D21B7F9DC11635B8D6D6AC72AB +4048758EA9F043295973B44B0917B14A8FDDB152D47E92731762B5FBE7E2D424 +A9BCEF2D296B3D8F41E724B6FA037540C465A087037AC77F1AA11A8AFA6B6E1C +8960CDB46F764CED85F36A34D12AAB1B6722910A9233134C1544DFFB42B98D2F +83A97B3898EC57DC07EC4BD53D01E467AAFE50DCFF7135DE13ABF0B826558D66 +5B4FC5862C48A5ED474B3F7BE7EFAB84D141BC92EA5AC299AAA26A6AB4C1DE9A +AF8EF838CBB14C4959BEE5928DC77A84786A0DE55B91B86290651481CB528085 +AECE1722541CC470971F6A2DE7F4B116667189630CA8CBB78541807DBECDE55A +D5CACBC8BF7AE4100130E499ADA3521C7D59FFF2ADC8826FB85A4B8A7F6A7B5B +ED19E9C421D8873270FF623B39A4DB33ED21A32A6A282597595C1FF9E849CC85 +F7AEE01F8CBB21F75660B5520501226CD6B872E116BBB746FB9DDD3B3C545175 +0F4661041FA2A8F5EC7601C145AFE3DF783F676291A3BFE672C743CE2254677A +646CCF082F592F8A2B074ED57BDD4AF9A5DD8D11C86694CFF16A0C67D1FA1C92 +6653A957054357BB9EAEA4C8988599D7B0EB635C03ACD63463EB8F449FDDEC80 +EA43FDD1B6CAB14E3D9B0C2AD3E118E0A0BEBACE1F893939E2DFABE6BD99BAC7 +96083DFF40B552F469AF20D34A434E48EA180BFC8E900F20992601761DA723C6 +1C37176DE8455D0D9D563CD165FF48348F3B5401A5F192F9FED4321E5E765DDD +824ED3671F21A449D9A623264174B5D64904CC1B10C10AA482E25100F764D76E +E73A630AC8A559DE6C260965DC16BA31B46517ABC20C5C3D89FC6FC187D0303A +516C7A2C1C5462E313DAC0C11EAD5D7E771B42B468AB101F284BB94A82432278 +D77E799D2E8F968EA055EB2512EBB67607569173BD75F5154BD3E8BC74B1991E +5224C3930CBE1E222A4568A043C508FDA7B3A9FC07C994D90DA667C78D28EDF5 +2CD2CE44DDBD236316CB70DFD53D179A78A01F3A0243A88B94B69CE85588A85C +FFD9A23A0156293DF9A3F5FD01DB8E1674D691E7ECE78E5767271185C231EBC4 +5D91DE1ADFA89EC1A8FE743062D934120AEDB02006FE70DE82F5EE24B36E829B +0BF2BB312BE578CC81F4F4DA811E6F25DA2D82173620AC20966C9AAEA2819AF9 +0EDE7FD2EA43F7C02A52DBC4E3E91F287D115B835646E53627A041F700D5B631 +1C9236501F2717B2BADA21C20CD9BA48F7BAC488913DF34E5B8679CC4BA71F87 +0FA9968E9D00C5D0CF8AA0FEE7DFF80131C8F5736361C016BDFCD85E28DF8239 +8DE792BC87B0886EFF1D313EFA13D6486478E6A52F5B6383CE563FF948DF4B8C +33F95133650F966B3D38E9AC0C61C47527193CCFA54EC6368542691480DEF9EF +0B74E4382CD2D7EAC72D0DDCF86F9FADED7F2E11C10F992BFD6C74A1AA8A1013 +D317438AFC7F22DD3C7EB64AEB8C8F267FA73F398BAA4434254B993FB12E1922 +EEF8515BE3CDF0BD57C1F0433F9ED466963E0136644C0A4280902C1BE9A86656 +729343D578E0E335407B7D73B9E6657E28675941D76836073E1BDF1768E657E8 +9A06266FED44EB127C0A20650528E3FB33D5771EE49F579C7A70E8231E093A59 +4B8390600524F0198C313F2E6AD936B382098C1BC7FB228F5A647E7EFC382F93 +AF398A0640C5999880057A5619AEAD4CD6BC34F70E7F8B9D5EA6BFCF432C6BBA +8A23510A0C306C5EA0BB33407C56ADC76892EB7407110CD7D2B2B063F870AFE8 +B1ED86BF1593426FF9CFAB3082CB3ECE1BC3F103E0006B2BA846DEB0A0ADC549 +1AA0D92AA01094F8F5CEFA6C86FD432B40D010C148EFADCB035BEC296A4D6F38 +12406270DE9046C76E80FF56FEE665465BE12AC6FA74C2F4C648D29164248CE5 +8831C4BE49DABD324754CF75DCD125F59948B2B1D1F0E116DF84BD02A99E5803 +1D3309C72875BEF544DC1BD37F4AF566745A2BE93CAD7E55EEF5DB17BA290B5E +DA86BFE145591C2034BF045006BB8D59AC0B1C585959AAD12B0B50C2A6175093 +3CB5F54B957712912FC0B2BEB6033012D928859F510312EEB5374ED10CFD5C19 +8749731A97AB9DA6A2A63C44A399A1FD09FF17AF1DFE301232A8383A6AC2F797 +40A188F69CD72FFC973B0BA64F7BA901DAFD00F28F986582D9AFE5DA387714E3 +41B60BF69D803539F0A1B0D3D42896D449DF4411348A00C05C38ED31265DD53B +967427E22F0089F357B5A39B81C1281248214FDD1148F92E75761D4D7D5E8982 +95CDBFE275FE44399FF05DC34245C4BDC38C4F7D265A4F3C1E11717A6F3FCE2E +720FC5142AF5CEAA75CC1868D172425A72253EE3EF7CB99A09D1E46609E3A935 +0F39505442E1A756FB0AAE7D30BA8D3DDD938D0AB9D746E65349D5705B36F60B +335DBD91662CD5A12983EE0161F8C4338336575EF6C9C6842E0611331EBB34B4 +DC778CA9FE0CAB8839FD80D19AB95CF070A73CFB99467256F91D37BB669A470F +C5E25FE5342423A2969CEAB12CCBA86DB276A8ABF9BCDBF377C187CA63BA2087 +FF862833B9F03FFF0132E790064B08913C625E7CEE675C1D4226AD06B75C49CD +DB8CB63A2D32C57031959F177AC8720313569A540BFD5B31E92EB12A923B7329 +A128E58C06A6A0A056FF16F02B37270C9BC345B8459A7A66E1BBDBAAE72547A1 +D4D7571BD1D23FBA973C096C0ECB08E93EF56EAB20D009C7A1A9F396151964FA +57DD810E1784731BDCFAC8868F84C666009FEBE9452934099E7DC25EBEDCA33E +A81D7D49A1FFC7839AEC3A6F621C7170C6BB0F13A2FECBE5A1590A6EA8934E1F +7396AB950A313852EE08A87B98F103C9E67AB7FBD9641DC4D63B0708B2401D9A +D2A864D1DB420628B35A9908E9AD019245C30312E8E64819C1D221B964CEA54B +A195B12E517CF48AE685D2B50D34CB38B685370E762E95455ED521B4D2D9D441 +AD04B19E87CEE1E101E0F6258B66E470A0068EA4ED6AC706D7BB0A4B7A9F56D7 +E166CEB698465FFA3FDD7F63CB9C2F07AA7221BAF32E8066E1608D5CBBC0F1AC +D7A8460668E59A7C8DF2AD01851199D997CD10496D687413D05E934BBD028721 +EDB1CBB81993265D6547FA78E7BD9D01FF60FA333F90AEAC3B6944D629F5E9FB +5F8FD93E49E4DE564F9441B83BD8D93D6121C76F8AB0DFE84E62F21C34585514 +CE0C80F8BBCA8E5472404DE3D990015828187F7BDA1D66C324F9217A3AE1C9D8 +6F5AAAA20A7F6AB652BA36971B40C4F0A90D762864F8E2AB4F5327CAB2CD70C6 +F5020B01155F908799EE5B906487A3BAF15579C814D94BA8A38EC38515582A40 +439F347A516379BB54F9770E1449D08F89717E1EC32C305C2D6CDDC35D0D5F8A +8189D3378D09D6B333C6D5B83CA36C7029FA7795C9DF09EA6DE61362AF79A5FD +38EA53024DD44FB8E53BDB29EB2BB60A7A284EA01B429DFC9BBD5421C8DF7EA1 +93665459A202289AB7217576CB845E2A1D83EC6693FD3CDE809A0AAB042E3778 +F9506DBA544E1032F690F0C783CD4E7CAA58228247DB04F1FD4B90F3305B0B21 +002737BF3F1DC28217AB98D7632B6F966D9CFDAEF72C2973FF3EFF17E02AD8B2 +1084C5E4DFBCC76B3E1EB7762B965D2D8844A771F08434253A0364120634AE38 +54CE24483F46388CD94601F361FF3FE78A304C549B82F178D204C5E4BE9B2485 +8A39D1D0CE1AF954AEC6B2982EEBDF8A0FADECC33733CBC144576FCA8F58D0EC +77431B64BE9C9D3744E26BE5FEBF912DA0B16AF22EFDFD92526E9A65431D70DB +547D241269D266DE9EAF67A24B1EC9E329310DFC31E23EBCBE7FE8DBC78AB553 +6A257514969808E1E79E5AE3C6C24FA363E4F616F52B4724291996DEB52D8E74 +391357477DFD2A594A0B1F10B2831579F4C526B234BEB990A4223F0E5AE15A59 +ADD7112BDE6E257EA454C9E0D439D24E6412520CA5CDD3D5B85EB35934EE5E92 +404C808346B7C97C61CB21908AC35347545F7F426B363175D50AEC231460BD2C +035BD4A94C40B213D13654E2C778277EE429444F098B2C81D37DF81EF898C799 +E645375E86DE4F00D18B26F303C3102B4E8EFBA1DD6B64E49EA81FB5FF52E94A +281C8AD2733339FD58E207D80F6E225D53ED62F1BB2FFFE2764F35B80CDFF711 +A3B84DBF388EADE65A4F7E38D6AFAE2DD00E3A161F85F68B79DE87CE4CD5D77A +73641E1B8E6B355A84740D5CA4E74EB3B245C261F6F769E789C855BC6985090F +564FAECE25C11FC509D63C661A8E6A8FF1FBE8AAEEB3759CD25FAC35BBEF23BA +745FE0A1ABA7A477C8FB63968B8AD3F7DA8E248CDA0AD67445B9D6F6FC034B99 +792BE166BBB0781BB3B5BE5B9EF6B3EBD02C01A4BB1AB7FC048A71F0C429B78A +182BF84D462645F2A11A2A41CB1C94CFEBF17ADBBB9063B4F5D0FA9CDEAEFD14 +FB9E03BD6D5A7737FA1CBF6A7387F84178453B2419CCE7018184E0EAD5F40981 +55A1D215AEB571A861A1F12DFF84A17B142925582709DC5BFB6237C7D37D5ADB +706179768BB1EAA959137401AB9DF46CD54314F93E31A4CBEC0E1C589134F6D1 +C3D3B273E947D09DEB0704A928571D1468C3CB347EB545040E07D3A670816D72 +764998EC7988C5A25E6D2403382866FE5408037BEAEE7EA98BD8EE300B957965 +5B79E8F4BC6F84E4CB037270D4D9FCBC0008408485D855E67D3CB8ADCF7380A9 +09350593ED80A9BE9CF77DE6D1D4A170DAFE7583CF6851970B14219A3A2B4684 +A8010B4F7B422DD699C167BEE110E3890699D710148550482CBF2BD5CEFBA8A5 +C1B45320C9D0C8838546474830316E1E238CE2704C12D43211639333E9AEB018 +68C7068212A440912FB4E58124325DCC233A8BAE6D634C9E47DBDF449974F42D +1D346C206E452F1C1AAF76852A3FD5F156AE0FE1DC777E460DFF136FB94A6879 +54F0E6D4825AC0C6F72A71DBCEBBE355BCF1D0A336043325BE80D780DD21992B +5240312D13CD85C2C2C9F236CCED4F364ACEB22B8712BC0598B75E565BD05A9E +B579CD12D262FF8114D93BFE09D1EBE2B38C6856938C0224D6D900EA9E3C033E +18F7C4E9D4954BBF699B4F7BF5424EFBC36C9DAD6A54C1304A425DA7BF3CC236 +CC82139A00874BA953C4581ABC1B6B06567CDCDF78247C090644C8101E0454F7 +37B42EEAA2743D855C90D03A0DCE75EC28AE7765A5AC7888B477AEE2922C1121 +FBAD4188E125B110C216A7AAF048F41AA81E7F32ABBF1A3F597069561BB6470C +1FA96B179FED4D6781C6F70A343A9CA3D757AD37E73D062970AFC4DD6B54304E +A9D7F87154801D7DFD1C45E0717387EA331B8A5DB13DA5AFE56B341FE296A775 +EACD862B7D6987BAF4B73B04455341B07BB91830868639DA3FD78C0E570E8CF0 +4E85BA82CADB689E7E5DE5777D0200DBF1691AF7A44D0E3ACB9700B1829AE038 +50566EDDE5A9FDA33AAABD737E5F73FD76FB021805406F8E525EEF4FE985B6ED +178570FA9B4453535E38C6D3472BD475A07DB82B0EAE3950D569F7D0C16C17B8 +3737B780DA66F50B7F678B8020527277E243001434176C6E8B9B9DAC87139FBC +30F676E3621F59D2F8F0476FF8C528302C7748CBAEB2997645DC7724FA8588FF +C2969DD8921AFE6E1773AD1135775DEFA1EFD197C113AD53A656D4B7BC1613F3 +8C56B27578F856FDDA30652F7D6DB38B819D1E536B2745421DAB8F5E21932B7E +20412937F8668163EA41BF6D7855B884943179FFE4F2C0C3340C86ECFF4B6DBB +F41CBF9DED39E7BFDABE6AD603FD6202A47536E5102E7181FD60166EB10D51EA +5729F7FBDBCA979A65A8FE0A387F78A99CC7E41D87E0D791EEC0136BE1A077C0 +19FC4B16C601DED739DF6FE9CEFA9E48997624B7C768FD5259D0766A9C94B0BA +9FC8336C05005DFEC39BF559A36962F16F21F208F2691705BB19FE25AA2FB0D1 +DB727839FA045A900A0BCC2717A35A2FF401D10B7E504FCE43C58769563D8289 +03EB34FF2A2C34107C0D2F8984ED +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMMI9 +%!PS-AdobeFont-1.0: CMMI9 003.002 +%%Title: CMMI9 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMMI9. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup +/UniqueID get 5087384 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMMI9 def +/FontBBox {-29 -250 1075 750 }readonly def +/PaintType 0 def +/FontInfo 10 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI9.) readonly def +/FullName (CMMI9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/ascent 750 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 58 /period put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 +45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 +7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 +72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E +BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 +974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 +11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB +7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67 +7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8 +BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365 +82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC +E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74 +91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E +540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112 +7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8 +93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D +EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756 +972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A +6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149 +796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94 +DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B +D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80 +E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D +0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83 +F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9 +ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97 +72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F +F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9 +4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1 +692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C +BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109 +4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1 +CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59 +41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A +9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20 +5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292 +2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5 +8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B +33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28 +03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1 +749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE +CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE +3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F +64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F +90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05 +DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8 +F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D +4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF +49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4 +E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117 +58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE +88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3 +B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE +7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776 +01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46 +19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41 +194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55 +53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3 +F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4 +412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6 +C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC +C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108 +4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831 +E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81 +AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF +00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A +E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91 +C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC +B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8 +2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980 +F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50 +0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023 +28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4 +E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A +C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42 +20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B +7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE +5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4 +74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4 +90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55 +3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621 +98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066 +54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7 +93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC +19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A +9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD +E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84 +A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB +107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA +5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08 +22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95 +B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D +403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789 +D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6 +20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6 +943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33 +AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F +A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70 +B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA +2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84 +2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F +E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D +E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F +8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642 +87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4 +2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842 +D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC +512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4 +4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559 +6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9 +9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A +0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040 +9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B +FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1 +430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8 +56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE +718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3 +F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE +95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B +EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE +6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7 +6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867 +630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111 +6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA +89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475 +3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2 +90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47 +38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34 +EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9 +B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376 +9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9 +1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF +1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C +62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5 +84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2 +AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618 +D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196 +BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6 +4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6 +531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24 +FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2 +43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256 +D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6 +0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4 +E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53 +DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358 +99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD +8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1 +8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73 +A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5 +362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3 +C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79 +E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2 +07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F +0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6 +190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4 +5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D +F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50 +005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8 +6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C +D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9 +F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087 +F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE +2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752 +F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0 +0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD +73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2 +62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79 +5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98 +F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F +6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7 +DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109 +EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222 +E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107 +536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18 +36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF +B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3 +F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0 +431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900 +5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C +074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78 +E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77 +2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600 +324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F +FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMSLTT10 +%!PS-AdobeFont-1.0: CMSLTT10 003.002 +%%Title: CMSLTT10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMSLTT10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup +/UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMSLTT10 def +/FontBBox {-20 -233 617 696 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSLTT10.) readonly def +/FullName (CMSLTT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -9.46 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 39 /quoteright put +dup 45 /hyphen put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 58 /colon put +dup 65 /A put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 72 /H put +dup 73 /I put +dup 74 /J put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 80 /P put +dup 82 /R put +dup 84 /T put +dup 88 /X put +dup 92 /backslash put +dup 95 /underscore put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3 +2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777 +6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18 +979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E +ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF +B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59 +A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA +3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F +D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC +6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F +3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C +4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90 +DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2 +753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131 +54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D +107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3 +7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231 +328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9 +85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C +2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7 +308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450 +CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195 +739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93 +FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6 +F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312 +3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A +A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F +55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC +A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB +69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50 +82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0 +8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8 +0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6 +0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8 +1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1 +D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F +B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737 +170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863 +767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D +EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F +AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3 +826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235 +8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048 +345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE +67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD +802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E +20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127 +5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07 +0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36 +22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC +4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF +CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B +4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880 +0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5 +220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403 +7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005 +27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE +B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300 +7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07 +A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D +45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10 +F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7 +C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65 +AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012 +DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781 +FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA +997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4 +3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A +2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605 +31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22 +A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891 +43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D +4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5 +94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E +425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616 +FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5 +51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9 +859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852 +E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F +2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910 +82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA +22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D +200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5 +892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32 +0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140 +437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3 +BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9 +E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402 +DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1 +CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551 +80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F +FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA +9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41 +031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90 +9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3 +9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891 +4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB +57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B +2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39 +0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9 +03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067 +22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79 +06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC +39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD +E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163 +A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6 +9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6 +B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F +79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553 +2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5 +8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA +1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA +0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2 +BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3 +312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3 +B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F +9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16 +A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6 +91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F +7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D +78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC +7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09 +766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11 +016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D +C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3 +8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278 +E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC +6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8 +B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959 +44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB +C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE +5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB +42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A +F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57 +CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009 +9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2 +82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72 +0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5 +F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9 +EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA +E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD +D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD +F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F +14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8 +BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2 +9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5 +6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A +6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116 +4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE +C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B +A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C +9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780 +42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE +7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024 +1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D +4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540 +CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4 +D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81 +CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1 +0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9 +92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0 +57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4 +5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4 +57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158 +8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0 +C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3 +7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7 +B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674 +EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521 +D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9 +DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074 +F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D +D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0 +56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8 +46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40 +52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA +19477F075ACF64D424279612DA5AE02B2A140048386D01B1F30EADF2050B71A7 +993773D5B68C6FE65EAC53411AC6E7E26E49BE5FE1079A8BC565D2CEB7E3B896 +593D720DBF66CDB26DA5D8E533A346845E31374A7C85FB6B06C3D54FE3408013 +864CB0954A2FFC00ED17CC167AF714716376B789A71059DF2032E0E907761E81 +F0C887810337F52662AF43FA1A7528923B0A30A217FA184ACB73207EB3018D5C +09EA88CA0873AE690E94D43B360D9C1070D7CBAE9BBA72E82EF9914D3AED6D1A +5539585EA969F0A1407C8FEDAB69BA3EEE3097D5B123C5770D5ACBCB0882F35A +E8A3E3B1FE3903A941EA2090266B60D218407AB99EEF38F18C9FA307D73E2F5C +42F8C37E2F668BA6B0779791D8404E2B2CA52E28F0B34C85250B0D6AAF9D2DCA +A12133B5B601D971345EB6D892B85FB971DB8C4A4188ADA6575DC6DC42D2F0C8 +4EB946AB47F487B6B4C4C59B2FCEB1291C386805C5B62B61FD7310A13B4620BA +650DDF28FC1AF21FA124C16EE8ABB98904F03E7F49E54348B1AF2211A1768768 +D62E35EA2EF7F2756B58168F9FFB5785DAEAB324C90FDF6207E670DF277D6AB5 +F0924B26BCF52CDA2980680320314F41244B73DA6367C434B5DCDB96B6F0F454 +89BE7553B58CB230BE71B2C7A7F1D63C3B1E80C159DD941027EA44D54767355C +6EB30D38D407FA1189474C2F9D3FD92F5CC6CECC63CF6CA6B33D77F08D274A1B +0AD7C2DCEE55F1B425BCB98F24D0BD431A5BAF6F42BF897BDE9198E6BB331C81 +6B5B63F3604235FB733A882BA5464A3E5415341C8E9A2E79A5896C8C334CCBB8 +A2047CB4E6BB167BD586FFC4A1409B4C13DA0B84608126D10754D562A9812A79 +F2B3078B7CD1D0A37A192E1D58623331B582E62291B6EF6FE3C92E8EC9A40C37 +B251270944393FCF133426FBCE86A318E16141654DD7BB12AD46B60A05E86D3F +14BDDE12FE3B17F9E2443E057FD0A25677D1F17C2BD87F84BA7D6AE3E7EF3EF9 +3DEB268B580A7823253430FF8D80FEFA0F9E4F66D0733E251E7F680B8B23B7B5 +A614F4FAEFAB880843451E4D9840AF7B8BBB6333E010A169528748AFBAE9A6D9 +499E221149C0AA19D536F3F121DF1AE056D3D0FF5C6D837BD8061153501F0209 +79076B4E0C63738C54BB31156F2273A327D3B6D0DDB5039D27D1C4020E90C94E +4A4B156B32F28DD132D2AB4D9CFE18B7851A65BA965382B23CCC0915EB6847A0 +B14492B0405395BDDAB36C2205F229891D989196608455629CB3CD67E07DEDB6 +A09E68BE431182D6CE52CE41B8531FF111ECECA60A68E7E7BDB6B91C7B694688 +47786E04588AE7D21DC6F2309D492FC9795DD054C150ED94110A7F89CF3E92F7 +4649D3F4C778FBF02ADA9E577C5EBA24A1F0278E9D9DC5556A60EADEC068AC57 +5359E9FD0D2E3E7B0006127F95F333D2BE77C70EBB163EA9679207C76C999903 +50D76BDAB2DF0D6A506EEA9C952A3D28D419FB78CC64078CD91C39A5D4FCD9B9 +D135A4E24E373E24047EF1180D3BF51DE4167F3945825B7124198FCDF7432E20 +C35BE9B0C7C0CC194867C4CE9BCD27860826C14749B811E8FEE29015CD65E7F5 +307300B316054B7914CB7464E6AA37DFF4BD0AFC04C0E8BFD1269E2D4CB5A201 +785C32B6B5656A7F6CA6AD8F7C77DF8F70B8F99C88BD8D548E78986096C917F1 +C0C195F4CE7972F1354B95D1BD84934D80CFD09FA14F3DF37300B5E8C208C66B +C544BFBF9B18AA7E27AC4E8567CB7188C20B1807BE56BB2B348C551767F40A07 +022EBCBE0749DE0D8FF1E2792A0BF2B84C940A127203E2216EA4F8689C84C739 +58D5693082E057B67C9BD80FBCA6463D9EFBA2B9F4D3C8F239C1A70D8A4A824C +B045489E1C6BCD28DA4F1BEA2BD80D424722479D0E8A1A99A8B2FE26822D3198 +722E2D276A123A95128EB6C5C6AF9AAD213D088EE92917E0870179888296F4D1 +0FFB87A340D7F052B07C6274027559A8B3843F2422C3640848CD8BF664645EA7 +20EBCB14E9B15F552E9E793B2F5D7BFE849817CCDD9BAF7DBA26BEED536DF80B +E250F831A12EC703AEE5ED6F5C688849B00C85AF124451A29CB67398FD3D4015 +C5D8824B7EC81F85CE9170560BEACD43ABF5EB5329A4E38431F243099B8F88F6 +58E8F6A7DF8AED9153CA90F9C941320750E5C26262BD14CE3CDBA9AED2270546 +24917E378761B5A96F0689511C12A0E598E7BD54A6ABD40AA4FE651AAB9DE733 +88677F863423C714476E797F4A22B94AF646819D91F9612E6E5CCFD9F7D11AB2 +DBDD3C8ED9D257E5A8BE4B7DF9997EB2ED23EBF4BFCBA1993796E34AD93C8CAD +DDEE75EC199BF642C34BA24E323A7099C4B7D232328ED3C7A3BD476FC0B3D921 +8E773970ED221BFD47FC656BD14FEE47F06834C55C0EF960DF0265E847EA4421 +CF81FDFB40A4C997B1EDA3556FCD8BB4EB141EAF4DF853FD353120BBD37D4B44 +2CA1C1D5D8A5626870AAFD925B461A65FA0E2924A197F27B224E53A7140A83C3 +10A7F3868E4801C216EBFC5F8391A1576C69537686DB1CF7F2AE299FB03CF222 +6A38A57466A9C0DC13E9A8200649DA837A6C40E002C25114F0CFB3D2C0A9AF20 +C7B387856AEEE008AD60FA1B26179D95B3486DD3E5BBD096D4B105117418F60B +26AEFDF53A815F712956AFAE0585B243D5A2B4AF5B517023867F57ECE2D538D3 +89804EFA77C0D9CE905A3303F19A9AB3B228A03B88CB26631814A36C27D09E56 +E965514293048ACF6BBAC80329F0422591F06637A274F2582A6BC59ECE5DBB7B +7CB5056822A2426E4359DE632F89734AEB6F783952B007EA1D2EBB7CFB1C1D78 +7EADDF28CA76CE34F78E568B11AA69FAB64D8B0FC933FAD372B9EF19D5F31A25 +35BAF075193980F69141538B7E7586E8DB534762CBD9E95442AD17C8C2F438D4 +DAC23C5F5D772D1809ECEB13809662C6C8B97DCFA5AFD46C6CF3FC6F07BDD604 +5A4C473C7FF3ED34462A79487EB47D5BD4580E98BD44CFF016DCC942E831F7BC +759A345622F5C65C067C83F7474EBEEF62E63F5B49519E0E1A7BA279784977DB +C646DFE8D0AC7D78CD27B8F9D8E18A3A1C1AD427A85401543B0CE4F4469FE14F +BFD02FEBB2050BD06558FEBA3F61D35AE7A0E49639DF68910174F41A20F5C839 +79545CB64FA870FA9AAB20B80CE7D85DB8A0F64915E1742E5835B5152BCD4B89 +4E7BC34E8D8CC93F5DE675090B7BDAD2728022F29D6A7D0F5508A189B8E0CCBB +87AB29B9680978381252A9A37AD5CEBA8E4F8CA2C06D7A2133FF94B3AF05EA7B +0C1497955A4E04183092871E66A7386E063B58764B62C33B6997F2E0D7F4AB76 +6093F606DF3C4E5F8A06E9D602E36F2DF4CA2E8C59EA6F8537A8269EEE427271 +E1FFFFEC053811328AB1FC60821F4C13D277EC66F56F27E0208726C915CBF178 +D2DFBEB767FE08AF1DEF4219F6C97BA5505DA3CF06BCE02E8E5013872DDB0E9B +01103E8F7213F1A00C473349820BA7F202C9F8632B9D7AC4FCC98287175CB2EC +7800B05D4A7617335D1CCC2094F70BA6556A99F2B9365409971DA4BA1913B7E8 +D6D84BBF1CB40FFCBC9B1C6306E9A148F39874A1E2A8FC677EB621FB46304D59 +B982A381886E99BE387640FAEFCE8182A2CC9AC76C1078D9E03CEAFA0747AACE +16F9A95F5A97265A208ABD10C3BF49C1856461B710A29887CB6D57B61D24DDC1 +5DBBFEE1DD43EA93F9B0B70276253A89546A4E3918B5C93A991AD372606F091F +EC35362E95CAAC00280DB8BA15DFA28F9AF7A6F9EC51FB2ADE3D15599AF01627 +B4D96F3D35FC4995EB18DA916FB6D24B56D60084E0CD8A32AB934845FF24B689 +67883D3EAB40BAB8FEBC3C17F6145CE0B96BA50A9ABEC6F1FF955C9FF80DF500 +BEEC7AEEA8C2FAA50968A57FFA5E9AFBAFF08451A63625918621B8FE9A46255C +86B9E145C2526E4D27F974D74221FC90BC691454D7CC6413AEE3321D64E57F58 +81DF5C5954C794492D4135F130855678C8BB7C4A3E3551D2E89F3DF6B049D857 +9115B3697E07024C34985FDAF5EF24210B2864F9471879835FBFED10D7535002 +E806CE05BEC90ACF31E49AA6C62D9E169196A7C358E1AA5C886C1E1544568C2B +500F208319AFCB37CBE4A568136B1791844DB5B627F66C75DBB7FCAAC4EA4620 +323DD1FC501727D74CEEA2C3D1B4D63779120AE0B0843FC978E1EAA6FE4FC337 +46F12F90D6168313CA077B85990EF9C6EB27F71D3B8C262FDBB297B1B88625E4 +62143BD515F6FEFEBAAF35ADF8B57486A14DC57614488C332E2B81B946397168 +1069CE21C21E8F44B2DB9EFC2F4160F17ADC55DA7218DBE64FBD5BABCA4C5718 +9748B61B8F7F9573847E7BB62DCA710100AD39FA555C2C3B3800BCE7C78BA404 +3DBEE48BA6328F47B1E72A507432BE4A7EA3F0AF034B2E29A4CFFAE8B30AF806 +F71936B5FE86F73F9C4B81123E1AE017B60EB2EB108EAC9579F3EF142CEEC861 +EAECCABA38C637306D8379C02548B4B33FB5D8A6169B3899A2D0499899946371 +BCD7D8D37924B66E4DFDF25ECD17408AA78A9A1D1C8A3615E428EDAE3E56017A +0C2CD79A0D92E6DDC54746E5095B4659D73A251F3B7FD7625CE7EAC3EFB61409 +C1463D4015619BA3746F278188E2F30F997D477491D39625C2B829845D4EA97E +56D7F3883CDD5938BF1BDCA2DF5BBD0E3D495554A01840E7E7A081A736DF6D7E +6BDD580F717261F6A3953157DA05AA3B57FBB1E977C6A43555F7BDFCB35C8B8E +B6356A4F1B01317B029918AB1C0400CD32A41515CA55E59CDC9C4641A570DA65 +96FA304094735B8B070FCDBA01DABC55C493A390F3A0B60D31C6EE3176BD5257 +F6CFCD17682833155B9DE734CE94A232BF9FD8AA45C35DCC0B16FEE6EC241BC1 +E944B183ACFFCBA57219D6BD9132E9610780D4AB07FB2F77428114E800CB5855 +0C26502E4B09AD0EC8A4B342DA732E24CBCBC7BEB15322BC3A4B004CB9652D27 +B85525C0E59DF15D972EE00D5D6DCDDE1A141DEDF0BF9309463C7D5D0D95077C +F41EACAFA40CBA65004AC680983DB2CC892C1089A58514051E2C0FC16D74056B +34151DCA72FADD08765BF73139A2A15A46067064490DAC5AB5039C545DE452F7 +35416482DD79C77BD0256D6BE9005C80902D9BE36F06FA4431F1DFBA7C982C66 +E141DA88A07902D83D1A83C0538DF2F8F8719409259196EC46B9D7815E17F836 +4F06E024C1A05A594BCC8C7489B3DE9E9C3B9D2D15B8149F6D09A35A8444CE1C +704E2B8F273FAD8128A6033E871F1A36B95969EF3EA5EE8DE9B2720FED92D43A +B894DFB54E6F3E4D92E18AFD7B4D72FD675AB7447729F4F618FAC4938ABBE9BF +29045FD578CFEDE3BAFA55419C564CE39F324592304FF7B339DC2D889C157BE3 +A182E42DBCB6BEA7773CE2A058EE2076C77CC98F0C37CE8128E1671D8BD8AEB3 +1E724BE5297AEF6F8F90719D75E2218470034C970C7C3BC4CE46234CF25F3092 +526AD39838F4DD2399A4DE9BE341EA932FC616B02FBFE7EC68AD6E98F5AB3040 +C00C615ED7C7D427387D5AA99594EAFD54D3CE88DEEAB0A408C14B48217D73B7 +AAFF60D219FC71262E05BF9D15DA7739FAB52683D27A3E094B40D84E3C272D26 +F9CC125000AADA491137363EEBDE57EF302943F26E7DE08EC71707B62E717F92 +BE14CB7F5D4FF8A802030B10FA8AB4D93286AC064E0547032E2AAFA3E353F4A2 +4B3EA80EF4221C81BA5698D58A460C0412B1C1BF143E547DCA6CCA584011B55F +526742925DBE8300564D621015796CD280DE573A0A733C5F6B2D4AD811EE4778 +FE60F46ACF6B6943B07B0EB0E4636823430A301B06BE688CC24785A8896BCD42 +39B97D9963BB74BD8BF05217B615983E27994FBEDB0577010E46BCAA04DB1A72 +77F4ED8257D145EC44B2B65B408BC71239F1C2E8434C1C2FEE4642BEA1C60C7A +F02BF44140D0DA3E94D7658312A212FABFC0AA74F3512D513E82248BACD86A15 +B5A2C71F3692C8D702FA11B262ECE33B382C681D54BC275FBAB326D928A6A327 +AB2ABFF6C4A65339D945A671AD839DEACA7412ACA3253B399BA17E363B213FCC +962725E0BD8CCE55985438700204353C507E4DB96C1B57DD7A071124476A5095 +BDA4C678F514AA63CADCF7003C73F0C505590526C0D1BCD7DAC0236243AEE48A +5F351E12194DE6754336416227A63FE6C37D472EA1688AFD88FC94922094E799 +930F9952B2B1B86D1436C843A90AA230139B82449E16EA8B29108AA624933D1F +5BB7E1EC1E7F570BD1DC0D2A9C338F4590D590AFE417D289B103E11156D66DEF +F9E1F1F3A68DF07D69FB9CF4D09F2E2D47C2168E0BCECB8BA1CF856826B51D23 +D440D7EE177DC922BA367BC69871D037A508B80E75F43C331F7BB5FC96493932 +0B3CA39DB05BB29C08348C3F0FAC71ADA5C07BCFD160FE677A8A030BDE2C4A6C +A866D89CAFBFE647B36F7931664F82997CBFDECB6F88C795609D1C94DC80F09A +87221FDA3A699D0748F97E682B5B8C7B1EBA75BD44070DDBECB03824F9EA4E1B +BC66A08A1A0F8AA3DC482D408C83B469315A2ABA685726CEA99BC3D15799D28D +F81E0BB958E34A1670C23FCEE68A0DADD2BE3CFCC1914A9FA1B1A661693ADFC6 +378969C2E400E5D4AB0CB7DC0FA364893D2484DA98264CB50205B7B9A2532492 +81A2697B7FA4FC77E71D3117608ED7C474AA2FFEE8B3F1DD942CB16A1FF06C6F +3741AF6972D09A5EDA91B4EDE291A7B3E3D481005BB578DC5AF13C88EEE51380 +78E57D8E073FA46B89A1DD73D51AB11B44048CE2F031031018697B2DA15BB05E +B69E9E54F85E09EE3EBCFF390A9CF28B6F0932A46C9306911F2F36B8CA3ABC14 +022697A6BC560C0A688BD1E49AA9F9CF4917130ECF08F8C500E0096A8BE65E01 +EE5A2618E3C9DDD1D227EB584EB0763C6294B91DADC65AA8F1DB42BA25E77B9B +AAAABEC083135CC61C18987128961505D602E409C3DB90F301CE2C792AB7ABD8 +1B7442AB1C8D5B1FB5AB30444752254A530B227A1E7CBC615B045031FB07468D +DADBE63C9D1AC6F9742738FCF2896ECE73C131063E6FB3B954A77D1CD1F5764E +3D65A43B627E8E7E10C5966C93E9794A3211D8B349D7F82427A65DA39B4AD1AE +A98733594453F400B9841AD3207DF9A908372B8B7F8EAC363D0DDFB90411A468 +1F3F0E7A8DE83F3CEC745BF43D341A20F53BD0667B70613FDB9B1379FA61BC9E +516118F7B1DC7A7B049E116A7A254F0A363694920EA156DF045038B14C229E6D +19417309B6DFF125580B5279D6CAE9AACA31A1D21AAEA8DE32180F3456AF61E8 +AE8011BFA62D7B5A8123A02131D2F622211D74F104CD729CBE44EBC70672C064 +6D8CE2956C78B8CAF172B77E78F715DDA875A492CDD8357CB3AA3ED817043631 +0D278C6AB079AEC3C765D5E0267BD01C1D3F7AAACD0CF34EF8DD2FC5FF8FE85D +E410CBDCE53C792C0ED5092162DB85E6465C058D95816008077E22EB8A98B8D2 +5A4069933FD3F3DE33926152C7DC712807784C17863EC78F9FD11A335BF8C700 +F4963F7C1A72505DB453012507A3EE51F7F2E814CB77769356C7654B9569B68D +36C1EBCFACDF5C8D91D664820758BA73A83EA9660E33D4589C6950CC5C612710 +E9E97BEB5CB43F4109FC0F9E5EA126C1A9F2C4617CA146013F01E810EED40041 +5D09159A5B53FAF73B151499CF4BA3B79A19034CE461298D1B805E161CE837C1 +AE9A7298DB9DD9E54C347E64772AF100A5C736173D5D9EF4C45B8FF6B0ECA17D +C1ED7FA96FAC530778D72CAB4D9920BC6C137EB3187B1DEE669419753B6472C4 +D29CF8ECD1D43AC03DB1413FE6D4A883857E2574C68AEC9AC7F7D3173E9EA7AD +1A8762EB2841D29BA98B8C59BF52ADB41A1C06A50FA66C169605BF950AFFFED3 +6CF7FEE0126C0AF7DD7A85796BE7D93A124581EF530AA62DF4CB06A15A17D5E3 +F6B6B72CD7481D238B2EF97123EE55872A43599ADCD48443DD9DFBFD469C71D2 +624FE39A15FB5CC331E29B20DD1994FDBADF7E2843ADFEFFB38AF6E727638848 +4BB02352C312A363C3920604853550205484499FE4B1D8A29A4913F440E37CBA +9CFE762651749B33BA532DDFEBA257869BE4585699ED7E918FF72D25F3EC0C71 +FC49EF6C38DD1105AE50D5DC13F6F1AE2FC3264C549FB4D8D1A959F25DFE913C +1ABC41ECBB5B538BA1C4870E73599BA518FF41B6445D40C9B9BDAC2D552E4533 +670DE0C40C155E46AEDF4B74BD44A521815B69981F4F33EBB774391320D8B6DB +AD9C9545557E21A90EA55CFA69B967F3E136CCA7A1E4C9D312D9D08940DECDC9 +1CF646FB7704DFDF783BBB1739DA1D2EF502B7B3A1FBEAD958DC99F086E6B623 +F33ADC3A758138E47EA3DE1FEC42EBC6D675C658B9AAA4C4054B1F81CCC4D216 +9559BDFD542140F2A101095F2B3FFEA124F407A8B650032265A48F065C3C5BD9 +66D843E3A2BA4CD7BF56A6A10D90345B51969A03DF45C91EBC2F3023A3E71B4A +B6A7DADD9E3EC5C70207F743157A9A0ECE23A7A95798C2174281A7900919878D +955EBCA90D02F07876BC3F5EB1252A82D891FB3E0FB9FC032080E6F700981030 +0E81FC3E75AC8623405CCAFA66161D5D471EA952F0FD4021754CB61A7B1445AC +0547EBD4D78F141651A5DEA6262F0A05559DEFD434C5485FFBEEE7DA647AFECD +6468D4D3905576FC4F670BA39F9956149CC371A31ACA929CAF0668B667DC2CF1 +8810C6CF9EA23CD5576C110183155DBF15F24CF0973532800274127C6C5C9C79 +EB121C5F0B74D824DDFA3EC4BD7BBB8799875B8A4776B60F840AE96A8F65724F +AAC3BB862EA6F8697D935C60C2DF962F042521BB1D3EB9C064F2CBFD84208D94 +0E9DD9242157F4D3DB05194E82FAD5EF8C09092055463620D1B4ACE3BF9CFDC4 +989840A2CE7BF62D69BBC387D0184EBD87755E4DCEB8296D1005E79779A19B14 +354345A8A0324F1E61D88A22BC423D3DB4686ACB6CCA3CC515B6A5CCA6C888FD +EC2CCB767778AE3FFD7ECBD8BF1828E5BDDF119247F11B299D5272C475C67113 +8F124D25A87AD26E8B7713A5189FDD920EAFC2D9069664744B6E7DE1AB20E798 +8BF9B8885BED5CBAB904032F6245AC752F392524C2FE09F636B59B17ACCE1E56 +ECDE4533FEE75C6ACA81D3FD7F6032B865D8B6F34DF1A99E01FB6534659921FB +81631346B4530CC2E6B15389D7D494A4851C5F7CB502B394E840ECB67D359B77 +E940F25E96B3AA4DBFB0689C0C8D41EBFB5A9ABF7B817AC487093BA1013E345F +B42647E031C22B77A319062324A7BBFDC9DAB8D5B1E0FA4FBF8036AD46E554F9 +6B925144323B7A79B103E808A43954DB3A03120EE5BF48438C0ED2807DE82FF1 +6800AA8EEEA5C70DE747B76246A437B09F402C8E1B545636E0860F670D10E42D +9A579DEFDAFC447917E0AE0AD49F49EFEEAD72A83149A22A82F909670FDF4A9A +B106147A6CD6D9CA4FD64191B7883E89C30FFC30D3262B9B09CD7D2440D85F28 +983B191CEDBCDBC06375195625EB247DAF10FC3F01259E59184F462B79592181 +DF37D70E698785E55E0810FC9A5094CA115B2067FBEE8ECB004856C68A18AE7C +9BB1186342D173068A4BD0020FC703BC1AE0D6C8EF419288D7D0F09042C5CAC3 +6DDFFAF9A79B811C55F41AC87F93DF99604165A6D6E5938016C155EC65393512 +EF633ED422AD5BF8C66AD82B3B2B0FC59F40ACA8B62B2195D84478F920C39EFC +328C9EEAB999D28CB365ABA1A99475D57D5BE151E107BCA6C65D535D8E83EF91 +35EC4BBDC0C5A124CE24ED6438F2103FA03BC103F899CC0E12428A807763DDC6 +CD11E4E11749145810B387906A7B3065BCF1E29A1815ED266DB7A429C3FB2860 +AF3305E4FE74E02626385FAB8833954B803CFF6231810CA8CE55EDB2DC2B1548 +82CFD8F105CC916B0A55E3955BEF60680B544501937E9A6FBDFF46E12B114967 +2066512D019B1D727D3759A708E5D8D8FCD99AEB82B3F660602F8BAF091A7AE9 +ECBF15E7720F671E85C5FE0F2871CE1EC0A7B8E923EDD845F6C8F8CEACC70DDD +B2F87D25890FF1DB39BFF89A3A35B8B14742B4571F412CDF868177E406C9D07D +B759D6D32A7CE22D9E9FD13802A170F20E9FD757B9DA76B12712FF6DD0E8F4E7 +4A296ED2795FFA5A0C3CE468C7A9CCA440C599C207BB084B1DEE83817A7F23EA +1A4ECF72B3786D72D12FE3123D33559793046B7773C9E93AC1172026014A1917 +4B66A90C5AF50072C231F0B633F00EFED86156FF0FBD451C161DD06EDF438A38 +91FA7FFBA022A4468296A7132A3D88AC243B69C70F21B7AEB32BB5AA21800620 +BE6C8116466BB843FEBE361D1DE93F7C38033C95EBFA922FCC45E812B48B1A23 +C33DE814EE885A2354B37C05E405D27A0D3870E19CC718284FDD45F7926758DC +62D79AC3C0EAF56B6812049148970442ABD34E0C0F49A6711A134C5568004C24 +F92B455E8085D77F48ECE5FE9F27FA91379C939919E78B60A54E235B0936B3F0 +E1300BB4CBFD05A18DBBBD76524B4084D54D990F5EA51E5670906E358B4977C1 +83A7124F6BC09AEC282DB90C2FCCD9D909B57959E6E68D2E50344100EB1B6BD0 +1A1FF2C2F0B250AC9B1FFB4A4EF3F28C022F7F873C7B3AF76E1830C9B039154F +B3C3BD97DB32958B718D53B552A7A0B033E84EE515B42184A22A10D77FFE32EC +0E1CD1708021D7931DC73448FB098A61C93B7D03F98465BA42D4B927AB115C49 +C0CB10C0BD55B16E6BA017306506D3D610ABECFA480D8840DAAF23CA03AFD9CF +1075C8E9B821499DE23D4882C081D51649E5C9BBFF1431057D95D61351287B03 +0C9A6BD89F33C02555E1D3DA7F03CC395C1E3633FC902F060DF903FC96C19719 +A5B6A39E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMTT9 +%!PS-AdobeFont-1.0: CMTT9 003.002 +%%Title: CMTT9 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT9. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup +/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMTT9 def +/FontBBox {-6 -233 542 698 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def +/FullName (CMTT9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 33 /exclam put +dup 35 /numbersign put +dup 36 /dollar put +dup 38 /ampersand put +dup 39 /quoteright put +dup 40 /parenleft put +dup 41 /parenright put +dup 42 /asterisk put +dup 44 /comma put +dup 45 /hyphen put +dup 46 /period put +dup 47 /slash put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 58 /colon put +dup 59 /semicolon put +dup 60 /less put +dup 62 /greater put +dup 63 /question put +dup 64 /at put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 88 /X put +dup 89 /Y put +dup 90 /Z put +dup 91 /bracketleft put +dup 93 /bracketright put +dup 94 /asciicircum put +dup 95 /underscore put +dup 96 /quoteleft put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +dup 123 /braceleft put +dup 125 /braceright put +dup 126 /asciitilde put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0 +42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259 +4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457 +689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521 +0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA +610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8 +3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735 +C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933 +995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE +EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723 +2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0 +4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC +B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014 +D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE +510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5 +BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF +93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC +F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385 +45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757 +4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47 +088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8 +9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A +09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988 +E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C +0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A +FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C +94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741 +03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF +409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71 +45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95 +39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971 +58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85 +84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A +0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F +F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD +B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD +D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B +3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B +7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D +8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737 +712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E +C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3 +E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA +A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC +2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467 +757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C +54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981 +DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9 +08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD +6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2 +A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5 +336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D +E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB +3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A +E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627 +1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903 +FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72 +A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6 +465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0 +3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32 +CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF +573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA +9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D +15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D +D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5 +15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1 +64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789 +D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C +D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8 +576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540 +ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135 +EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC +9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099 +3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A +1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD +FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598 +C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA +4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0 +CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7 +3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D +D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9 +BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6 +1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D +4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442 +C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D +80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C +AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6 +59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647 +3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6 +14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59 +B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34 +F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8 +54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588 +34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191 +825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439 +BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54 +4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F +66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E +2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF +F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A +1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416 +37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6 +741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1 +39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC +887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49 +B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD +15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526 +5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1 +80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839 +A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404 +BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048 +2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B +B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598 +F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B +9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483 +CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91 +DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62 +6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B +7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7 +D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B +9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9 +EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12 +0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2 +1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10 +85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0 +EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F +D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518 +E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0 +88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842 +E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8 +01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68 +54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A +97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78 +B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2 +D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9 +18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE +A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13 +1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62 +31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5 +408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF +1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E +29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33 +BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B +AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8 +0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D +99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE +480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC +D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481 +FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB +587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51 +A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C +C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C +AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D +AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4 +48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367 +385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56 +8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38 +4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C +839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C +320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63 +7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E +DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D +DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F +461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A +BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449 +1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A +3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500 +0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77 +EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA +AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8 +F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4 +097C4995B2C3BAB2DD04B1A7097DE16DFDD76465E79ADEEBA90489ADD0914EBA +53E11A43ECB11D072C68D2131BE1C7C43CB9DD5FBA0A67BA43D6851AD4CD3BC7 +39AE2E22CCC183A56CEB71D4F9F578518E376426E42B6390426A8434B5A83E78 +77A5B9963BAECD5FA5521C2A29418764E4EC1A72462B04957F823E2817A7F8D0 +1512919889500024B1C42EC107E8B8533C0B314EE4E23313A4C1BDB009A2073F +9BAB479A3F9DA76CCD65629CCEF78015ADBC2D0D124B3BB2D322FC4D209E417D +84BC3C758B6AB64A01E25C9C7B71D741AF90A19A339F99A0BE9FC39622F04C6F +737474CFEC19C890A657BCE192B9DCD8F273CDC5294875DD4507DC5723EBB357 +73DB0933927DC21081E67E5DCF4E41FAA6E00E8DF04128F86348FB0718068FA9 +918319C4EE9D090CDF348153B6CC48648C55E889B4FFD3D75466F1B50C437546 +7DD9CF20980B148F60BB146402DC0732A27F255DCB859CFB6F9D329C12FB14A6 +7824D6DE27B03FF85BC59703A5D6C5B7D1CEBCF3C3FCD71D6D6F0311E41BF8BF +0609D23C84720FA9EAC961C9D49C2E962D9618C32BAFBAA8CAB0B2F616E57DA6 +8CB44C5595A22377B28599F7D34A3BEA4173E1D31A2A6C5670D1F026EE2092A1 +DD0D2BBACAB46E5B0A7113B1BC379709C5870981E482E01EE3D16AF9ACF1A5D8 +7ABDB4BA5C3B13AF047826F360C8892642B482C3C61FAC97F332888AE156B35C +5C8415A75B4F0F25F8E95BC4102FEB4A8287C544C99778EB0C163C22481F615B +0004F764FB7CCB01AE01A614AFC9650D3934F748E8785416BBC89F66C696AF5B +B5F6F125F115241728D85E7159FCDBB10B64598249BB0E6FF1AF845B0A2370AE +E6A973023FCAC4BB6158D48B0C928ABC4E29A0DD611D0F5266AAC8239064C266 +82D4D33B032418967406BC98156CFCE1F091F733D8BAB9523690B4D6765DBADC +210E814DB8715A269474EC0501CF66FA0D8FD224EDDE93AF243032E73714F730 +FB382372C0F9B9372450FA6F13689C9429EDE1A105F234B216263A7D0A917A15 +D1FC128580A16B5572436E398C353A0EC62539CAA188901FC30DF7511C1BF6E3 +B462203AE937653C4562FFFF03078EE7A184F554E6F01932AFD07722A00E50BB +2D2BB785961F76273A16CEEB0EE833DFE14BBA539CC7E48F67A9D20C94283137 +BE84025E86C714DC9C6FD7CE4D1D0C50B6EDC79E066521FDFAB6285C83A68B4E +B1A119875B4E45BF5403950A25286214CB4183C345173F72E6ACFEA5C13B4D2D +FD12BD235193EE6BB66519B553CD963EDD68E7EF9439DF0411C8193ACB183C09 +4143657304B1BE2AB8D2D0203E677FA1DD01152D2ECF9D987B16C3FE0B3F5F12 +5C920243E1CB5FDCBE97DF55102EDED12811F3F7165F4FE1F6FD5A6BA809824C +041FF9441529509EF4442EA873E8E7FF507607D526DD27315859B31D0AC11475 +53C573EBF9DC37A4667133E99D8AA608ACB729F90B736395211043CCA3272AD1 +470F1EB485629AA8B9DCB56479F734703D859F1E4EE8789FD6F739D0122348F5 +1D487FAF1F24EF7A14CF69ADE7A87550F55F394506BC7627A5E319B30F362528 +8AB497EC03B69B58736A5EE0AD63743E7F22125536104674EA63F9AC5286A746 +47C73EE8E0320E7DC098CF43F23EDEF32D213523125110140F46202435EA8E79 +E285C7F3AA0C5877F75FE0F16BDF478A00A6F380C7B677BE479FE900ED3C4A0C +832966F634C63211B58E9AAC3A3346ACACBD040164B491287B45E0131479046F +B430EDCF59B0DB6B0594775AA57CE029EE8DC445463169EA976945A5765AC390 +CA615933FD05173C47D30DD5CCBD56D89B4557C7192C31D7B500B779D7DD3707 +BD4B64980767B6C9A1BC9A948DFB8518AEF581A1D888C6F767F3315EE99F57E8 +4EAA54D04A3A9E34B100024AA7C49DFE273231E3DF17073CCAF5B0EF20566755 +6831F85C57454D1B0A5A8438EFC7F4E396F09CC200643564BADECD2208915FEC +78E94025CEC8ED965EEE5F6B8BA081478231547355F93491915CFC4DBD619862 +0F99133CE7F44756C593C8DF1874E973237ACB17F9614B79D45672CF62AFE009 +EC61B395BD96B0081DE750421A41E9D474F0E030C6B8591D364F29A6D7246EF1 +6B4CF9B931A9A474011C62D504F408651692921AE83116CA0E4E6F41AF877FC3 +CE77764197719291E68B01570AB7038D91B8B81EA501DCB5ECB6083B6764BE3D +DF21B4B3A1E1A5C917F324A1CE5AF92BE3B2F8634A140637425F9BDFBD21FF33 +CBA42069981B230D211602FEF410EFDC199B6DF283343FA5E6B4FF2804DE56A1 +61DDC684579F82C65DAC3A4F92B34FFB6273EF4F4591317B8D2250850BBA236B +C1E36185BC3C8C7A7654B24D7A10A489BDF675F6EFE7B4253F14CB3B5ECD1756 +1882F3D139EB5EC7860D70A176D1536F5119A6C23EE9AE9AB21B586DA19B483C +6BEBA87C457B9DE3D7C71DD7F97E352B642D84455E44EFC54417ADBE7E190F7B +7ABF6FA0EA84A394C8316BF420D6E2DE5B867E6D602365925C3ACFC69ED653A1 +DA30FF3B49D407237196B9401B1EDB7EF2260E582D02B18EDD38AC0016F28896 +0A61CA720216012D0FE2B58D5D675D25A679B1D70FAC10A4EB38060C0BB1AD1D +D1C59BD5F44FDD8768EFBE75B6795543533C02198E21A4B8A5430C2C432E45AA +0C0937D6CED532EE6714C58ADFE2B15B117E9AEDFFC1E172716C756260BA9931 +23AB837CCC7C36BD6B86B628BAA7D6002720AF00411E9D039E435EE479D5015E +23DC9F3993546E50A442CD9D0429F7AF22D9F14064CADF2A3062F218582CA520 +3FD8E0F30B224408594EC426C8DEA57ED60FAB24461611E86302C421BA600CDF +D4EDBF4044F0E2893143D4BABF0A6AA09F28FB4190B779B82A61C65264A199D7 +C2F50BD82837F08970F630E1CC74B4EF421B1032967FEF552DF3C1C83ED995BC +CB9192ED8AAA906CD9708A4882150B27B1E75FFC0D1383C50BB3E6C36F5CBF28 +C0572BD2F01AFFEE5927EBE3B6CB8FE778ED2B524E252F59AF00A3F8F880116B +8EA655D9C6A68CAA28DB7A75003D0C3B653C7587BD1A7D93BE73CA6219024EA1 +07C31E7F7BC9B874183C9337538C925226CDC48FA25D51A6A0677A2BFF699AE1 +E28D9E58369BD6AD73ABA706531DE565E1984A9C89D0C1EC6FC030A93D3D863F +C45EA66F195CFEFF9A03A1673BC544FB4F491AE5E50ECFF7F34B095DA96288F4 +31C02347DCB6792ABE9DE684A1A92318A2BDA38C2D8DDEF29B8FED450DCDCC7A +5C5D124FF0DA047D37E8874370D5537AEE869E771835EA607E1634BC0707C0FF +75D5764B867BEDD8FA075F0CBBA7191B3CBAFC9EF8DFE79E9D7FD5A58916101A +A920F37BC5EC845621EFE3A953C19853C2989FD31952FC4876A8F7C58C4F21C1 +31E6ECE0389BFDC8D6E391B04D443EDEFAEB77985808C398583BC4D8C9979A38 +9842C4FCB7A4E84BD67BE72551A43B2B330293D8655A3D6655A2358E014F5686 +613D19B474AE0A92A80E6E701F4B63EDAF59C3E12DD961A5B413FD1CB5400743 +91F673B3502C6FD90A1349D649EBA4F5D8A6E5AA41F1A4DE1C387E22C9CC2733 +D542291D5B2E5CCD0E1FC1835BD6A74F5DB97FC174730AF33CFE5E68349BEFB6 +F2C76171C578412F075F9730567BE7A2644B17012DDA04D681018CBE09BDFCA6 +1BB460699CBD6006C031A02634BE0B16375FDB9C582EBE6683B60768BC3901E7 +4388A7E058B61713E3046F28F5ABF58417DA878E1870787C472FA08C2FAC7517 +4CE71727BB69D19BB40AEB50F1BD66704EA37D2A0B82F60D72E15440BD27064C +E67CA41D97349309151DA28E1A7850587569A794E9FE46848A4611066291973C +A6CD19857B92F0E36B271F24D54ED663A7C64DE3534B0989D41E21E01469AD69 +916AE35C5177C6BA8CEDA45C92694077DF3EBB0377269619F9925876919A472D +14751E6515118EF9B84A5DD8C92695818BA4C959485EE1EDB6C6D3553B6FBD27 +A0FC42DDF20BB335F7D46F0951C51E9BB69FA6E7C76A8C960FB6A4305FDD2A30 +234A5EFA64C34948422255C14C2A0D8A57174AFB7DF3DB2F520EBB401CA2DD79 +FDF6C624654DFFCEA8FCF5B34C34CAA7C6EAEBA6DC98E8557042126E49E51C3E +BB7C91497A44A69E4EBCBDC0656AA5A7F419D0443576F530C8136AE8612589CE +781205654730006F3A39B4F3E5301784F164A2C87C2F86C894EAFB5E79D7231B +E410219BED0210BADEFCF27EEF683A01FE01DAB70AC8DC4E82ACCF6B5BFB4DAC +A42AEF344755A06DE8A6BF6F2786435E2EB1D103C8FA4306573BE699571880DA +53548A1FC1F24E50B3C2BACE9261C0245F671694A0FBFB4ADAD535AB9949C020 +DEFE36F7EA12B3F8D80E3E3D7B3CBBD8B6EB0AD2573DD5DD0B4FABBC790C9F28 +428B33CA533D5A6348D1A64D868863F4385A3F19D9F4766B6B81CF634981090D +AF0D763F09A2919A9DABC0DC4602D72F8747176F947A92077956FF59FD0D88CF +FE224B9B16C5DD710E6DE3B94D47DED695BCE5414A3794E4CEB7845915272ECF +E4A657C7B53DE7DE96A8C901DA24D54A467EE083181CEE606E5917FED2C97728 +57887C7D19EEA950AADF6E8A99798789757BA126D925E330BB7D931FDF4EE14A +04F58858CE09DCB1F57B8F780DABEDD1C26D72C9A5287C9DD30365693C5DD06D +7365B309AF1C97BD3443B393309929F6D1AE27A1CB55C2F5085EE81928E138F4 +4FA21E90C89F0397C9CDB4D707780F2418B38D8A8D76793C868D4BBF10AFBCD2 +9BBB8202DCC02C37BE63D3CD22208A23743025921A54307A72037E6356EF807F +B2E7DF2B94C51F19895C3C059DB4C42C2DBF4E08E27E31A294B580E2367D2F63 +0C074F03DB73EEC7293AB98DEF387B3C18761C716EE02C95315A36D42BC5334D +984E6E35587BC0711D1B7F8EA8656C8059683C49CA41B0520D6FE1952A1991DC +659D83269307EAAF5A9CA8000FA086B55587FCD0C798FD93905B1CD88A9AA33E +9DBC2FE2A89CC800565567422052BCF5BAA443EB441E3B7B6AF0322014458764 +7AAEF162D0E03F28F1D0A0EEED8714442E9DC41FD4B90436DB8A7E3A9431E726 +FAC0CB7151B6236B2438DCE9EE814A358DC10699244FAFB932C928E0E878D91E +36E840135A9F372A0DC2EECA730E8490F4D42DE218150497C5EE87A5FF5C2282 +3AA9D4B71996F86F8BDA700EBC01E3054459AA3F87CAB9C3A230551D4534C3AD +18F6C76C41E10DB9DD67D19614A516BDD39C432005676C78B36C53BDB3646934 +3AE6BC84D339851BD4D07CEC26129467C7181760DE58D0A288FF1F0DEE52D68A +8423FEA92D3D9331F75E3B062BDB37BEE45D5C338BFC462612D1CA5CFF432D7D +89D34ABEB9F42CB40A63BBECECACC033538136B3F9B81F1230453A52549B648F +E8AA9EE2B0AE82A1904FB78A6237247DD96B906B82945AAA772DA058B85494B5 +DBF53ADE76C1013C1DCC7A19AA3ADD198E3EEDE3269C4F3A6DFE54CBD17C7608 +3BF7513E37D9C8D688087E2A09B863882D46454A5B99CBFF538C008FA9BADC2C +004ED4ECE65C4301862323B134BA11C6D4E691AA899C0E83CEA6A625AED13F65 +78D330A389A6D6EC23CD82D70D53D4F571C9D872E1A09679444FE686A12647B1 +6BB67C8AA4D500F6DACCB2E0C682C835D24C646A51259A72ED3E281C93743832 +A51B3B89D38E575B8521A39D87F8105F892AE9BE53FD758B8DBE2021716ACFB7 +350D5408C621CDEDC04E63DC4468C301435C2C2D61F3B2C24117F9ACBCD9E3A6 +BEA36A9A4227287DCACA0EBB1C6267F23BC0C3E0F28A89184FACFB919D49843B +AEA30EDC40944FFE38FFBD7B33B6B05F5AE1D0E168E924AC698B7200D2E86C14 +E79E6768E27E848768A75DD694B48FE4839058824A9F5C472081962020B96FE8 +45DBD7153E2086C2DECB97B99850286211660573EB090E315BD727C989B8FE41 +D25635F195218A2F15FE8A5C5FAD2857F75969D1257158EE5C52055C1E11D18A +8770E2DE895D7118B3886FD549441424F56DCB3820D5709B9D838435AAE4D64B +6F49CB37B640BD905D6C3FC1E53C8304B0EB694269D6C48D81300DD537373040 +65B95EF64F81AEE581FFAFFF8B32DBFC16B4F1F7FF9DDCE9CF5D6A8A6D79E4C4 +209E47E16C32343B7D8B65D863F33717FC01CEF14A0F012805FAA46552535809 +14126B88CCC2F0E276F5EB42E0C7628CB2397645DD951E31566B9D80F4379A57 +8D10288DD980E93AD47F7F5EB41C4E0DE8AFC5118CFE87A804F309C6A9D1E126 +C0912E55D9B1FA95611FE7FD22C722610746316AA8703953AEE8D52F4B67F0E8 +1C12A3A1A38B3AFC87E78B29AB79174E1CB09880DED63F5EE28AE6916E9BDF2D +3DBBF6F8A09A229BCFE45B37D0E28A3A519DD20CD8B7AFAABCF0EEE058EC5BEC +98CA3FF46CDB8324A5CFD9985AFD545B1425BA1B1F8A3209D159925194C2C7B4 +F353F587F1CEC839996FB9761DA1343F24A17BBE4206324041E9DB6DC5CFB21E +789DCC82093269E3D2894773C8BCD25DB0D6B3DBF7A799276936132C262C2F0C +980D6689EBC8459C62E19C91EF5169439185F8DB0946D7156108A689F9B0A52D +10E02422207CDF2CEF1C2B5D3D50E4D458B4A6C936CE9E6A6C4975AFD8790E5D +057FACE7B96263BAE67A549B42F8CA016C5EF42B55C2FDF20D3A25A68B13FA44 +99D57478B9FFB6BACF69CABEA3C64B559A0D0897176CE2BE218396DD2CB25D70 +59BB599060F97D2CA6422F46D28D3FED8AA36FE161A91DADE4B621EC24BEB0DB +31FAB9F4B67209C5DA12F4AC49B8BADD510C8226962D4657A80DD7DD49104E88 +A0287F75C8784516C98BD7BD15D91F4513384B46BB097291EF6D6229A529BF62 +0A5F4AF3C21150A058B08D0B47DAF540DB98EAAFC88E117BC9DBA9AC19DDD756 +9A90C45BA3E8C37368C7E44BD6BDFD96619ED819CB067ECBC13BE325409987C6 +CB804C705C040AE82EEA129A1A7AD4B7B362E799F2CE5C0390722A16FC60B1E8 +44B0B85D097AE0D5E08DEC18C3E576E22268D7F0CDA46D9469019C20EAE9BA74 +7B49EA6166F5AC94672063D25C4C0E8FCE359712939ACEDFFF9AB5E7442A2A00 +A7E7A05E9E10A209672155C03EB12CD5E80155A5DEE3D503BA08D71E423C472B +A74CD26E15A200FBAB8E94086928E73860E50BB7389B3A8E0E833ABAC5FF8C62 +B894E007E5C220FAE6D53ADE85C747BD84D88BD0F40132A0D1FE51ECDCE1BE9B +BD89734A56C3577515520025A7743F45B01D74588DAED6FCC209CC819CE0DC65 +B590337F93D92D71615422728C6A8AA4D357A4E350BF6CE2480D4E1A818EFD9C +E6243B96F72EF5C5E88645A73189D9772E97911A0713A03201A69D78A98F743C +C0C8562CD876F8DE0A488CCAA3EC11142190BC32B2D8FFBEE6E155EFD20BB003 +055C74D843F2AB34D9552E5620FACE9E40C04DD84E29A602151B7C3352798963 +94674A8246B77CECFCC9A896B64F296EBD891E669A538343C0394E6634D9BDB7 +AB6D9C584DC7DEDF6AEB695FF83953653CED9E2B7F6E5D2A965B60F1FD3DC752 +3FE4EBD010AD47E0A9FD989B15559783B429F50B3A70A1D8CFCBC150A492A8C6 +4F570111E78A66DB463BB2EA226890FC25BD5CCFAEDAB7DEB2D081480821426B +45EDFD5C048A41F295415C43E86930C53961D954B54F6886044A1C5F6D2526EF +F6521BFA9BCEA510AB3E1731719DA2E83729BD08AA2814663532756B1AC5E199 +329025C143B47106919977514AC51B681FBBF5B115AB82A15E24C7315091DFD4 +CD11E813DCFB89355F4CFAFBBD54822018E7EA7ACB3A06DE7B571267E0C66BD5 +6DEFA8A8AED615B9A7F40B138841D094D5BEB32197BF5213BA572AED3C87AC6F +6ED6356BA2A2B9A3E26E43B3E6780BB66CC93A1A2CE94C90D48ADCA2BE608B64 +7C0C0410A9134B81EF24CCDC7426E5096CAE44EE96D666A4F3F72774105AB03E +320FC752F294CA8A537BE8EB6FA85F069E6809553D3A9CB3384E132275D2028A +DC6CE52E75DE9142E8D19C656F7A74D985BEC5367F151A151E5D41346AF70ED3 +14D68F0C83E4EC225E6F60A48200AAA0FAC3725551B8859AF513FFBE2AB3C205 +DCD56B1177021C5D819DC38BA8A042DB92A0A34224E37250AA0F65707C2786C6 +189F518C2E635D327D999949C4358402F4EFB6237C8A0A8BBC01E9B01F58A83E +3BF161E39EF504F2E31BB62F27B4830EAE9B05977DA47EF338817109E0BA1059 +6DFFC6426DBBCE33297E6D36D3492B098C1691DEA31FDF967BE80808199760C8 +46E9D075B01F433DD5A43A2AD872061B3852B74BB421B3564E57C44ED0DE500B +D976E02B51C656974673846B1B5E31F7F9EB5FAB81F92F62ED34EA0715950780 +6F5674E2D6120A4B9B89F749120921EE65043A66F0272B75C05BDDD09217A10F +E9E93E647617CA513F52252556D23F34248D0EBDB3FFCA6BD7C31E3369CB1F0C +20BF53BDF7C4F7A1C37BAD112254C227FACDFD40CA33EDF4688600E16586A5B1 +D53C2AFEEAA2416B29948B4FA677FC1EAC94B4A7A2AA4EFFA901F90B56BC2F04 +921AAC33FA46982497BD267EC185F64A2C6F51C48691908568A4F9814175AC6B +E1B34565EF12D99AD27B74481FCBA29E4C58C8D031DAC1E58E24AE5E432C74E4 +CFDA7278C66FE60C11D9501EE25CFB8F816F06D1427D8A8A119F7E9A66471847 +90BEA16129627D6E12463C9DB6E4CBF9AC20F51EEFC808ED48D41F334115616C +FC0F037AAEAB996F754FA6A8653B8912BA0A9BD0D0EA381B3A54A86155156D1E +BF1BFF694F9EEA20EBE388D4F01CE5117C0EA6E061B807AD4B53270006E6CC45 +5016272BB7FE8540070D51A260A018E09D9A1C7CB3E3C6409BC1993E59667A42 +049F2393C872D0E8EC41FBC2671D0F5E4B99BDC5AD13F7B0930B881CC049FC39 +938DD4D270BA8FD68DFF2ADCC21C7C24ABD1391C947142F1C7CC6E7EE5D31252 +F84B92C304757C0B8394E9E2C2D4DCEBD7709FA645B883D8A5F9657FE6116F2C +891F3DB3BD7DEA5922EE488678297C5A043720DDD777451AB916FA664519A6A8 +9BE9214DC67D68FAF516E19E1F65F162C246B6C010911220978C2FAEEA7023CD +E2C2A175D2C79817AD4E4364090B9C6B95CE86840857599448EA77982CDEE30D +F4E739DE78F7C1831B2FAD322EB48FCA0ED8FE56A0BE9E26E6921171C31F8E79 +D5A59BC6225A0AA217FEB684D1CCF1B12E21DBEF1F1315C920EB46163B5C2F46 +80669943D09CD519256D5A4DE9144FD5103B52774A530D2A4318E9ABFFEF15A0 +24F0590F23BA7612351FC0BD9E5F9A5A8D6ECB677978C4E2AFC4560986B7A8DD +0CC30A82C2CBD2707A18D988C164F2B8CED74B1C12991E705F005E3A8D10BB25 +F5A45974096ED5C5F8A09ADA293175C763CDF9C3484C4B9ABA9839BB9028425F +DD34E700820CA4B2BAF969C1DEEE659A6FF568EDE7B58400C07BDA06310B92EE +17FEF247A7FAFBB56044FAD23EB2933D8F313A161767FE211FC103F392A9A1E8 +B633A259920A15D19A4F5780C09071ED04C83FBAB9ABF344A1B0F1FBD2A96A87 +E03F2785DD00CFD5B3B95736CFE6315E86E8A5E838F4C02B36859AB4CA203FED +4AB0D43E2964FEF26993ACA619F1CF12D3DCFBD8E50AD02A72A6593EB876E244 +D5CDFEE1128408A5C10B5E70D680299E8A33489E1179FA0F753B7FABBB826BD1 +39D7F7A8E7C15C359E24B6569640123700FF628B2D76E2B7B2DE7C2F098A7A46 +8309CCDEA49CD277E96366EF221C4DBCCF17882C4565340EA41EBE83998AC89F +D66825F75F751395FACA772DFCEDA5E3368094CF378C31DF2B405D92690F2546 +AA982FE7F32660E0FB33BF253F632FE978DDAFEECCF840997558C607ECF0CD57 +5CDB3EE71642ADAC37D462F7A23541F850382BC1140C8437FC62C34CD9BE7002 +0C136657F2ED4AF914AD3AEC860B2E873A77C818E491440EEE98075FBD7EE393 +B68FAB94C574EC914FAE259B065C8666CBB2D3604F9FFAA52DEB5F157079D53D +3FBBCC93C598FD83769A8C039EFA0C7BDC027A34721E437E548F120137EC099B +15D65CF68B5F2E5ACBD11A46A6E2168F6E38DACB52D0AF949B8BFC8AA92A6C1B +E5A362B1B05A46F3E58921F6A1CD4C97730B14D31F0C1E2C132D25B2A63D631D +C65813C00332FB695789D21D9903B3CD1425CC36C25C18C7D49014F85BB771C8 +D0D18204492ECCBF69D97B2342457C95A7CBD46C489690CE6B4A4363653B9D46 +A5A03BB8BC675B56A1CDFC8E0C3BC7DD7E4804E61DD27EB6D25119887EEF49DE +905543AEA98A60471A3D512D63CFA12F8768CBDCF8F9EDD9AF084027DBF313DD +059EC75136FC08C22D280B76F1A4AE628CF21DB9A6E567085DCEF55E68812A8D +F72DFBF59786430216884E02416419FEC67428E36B62093250EE61EDA4E9FDC9 +08F01063F9841E1A5FC54F34A65F738A9E330E8074930BD9E85F05AB0E9DDCF1 +2CCC343C8BA7619FA512292B53F37BC95635A3EE07C3E4E91B123E2CC34EA9F9 +123C38F41B1DF9C2A7034BD05D83CFC2B86D69639B8C34940F53F44D5F549305 +F196464989975EF35F33B2B4B52CA9EDC6B32033B63BB03462CC58BBED662365 +2F36F7A46A371A60B245D53F9A7DAA64428EECD40A8F4C93D460490B092558CB +647E53E34771DC04DEEB2C285965F4DCF2CCB8669ADB238CC12897F7DF46E6DB +FD9D5BFBEA1DD262C4CC1B24E681643FAB80B34D057BC920ABAED5B39D2ACFE7 +4CA3A1999ACF8C9AD0F99B12922D37C03D06B77985EF38B3FBCBD6AFD21572BF +84A7BB8C4ED5C3BE657673F8E9F3A1655C0179A4CA565D3B6F0949B2CBBEC189 +B0B46D5727EA5EDB274B66C9FD872C00969B9C6B7CDC3A8CEC053A443CB847F2 +540FAE81CBE3F6B306D1B8B913919D1B9FC029CD5D414DB2E16C7EC97F0BC73C +1BDCD5F3FB0695EB84873FA73629005D7CE48A9A1374CD2A0DAC7F507D3F04EA +A8F71F37B65C4D5F5928C7A59BDB73E1702D4E9508519508DF62DD29AE1209FA +8766D6311A78B12C830AC0D870CB02DAC0D6434801CB48972C196E0CC92BDDEA +398622BAA5B384FB8A0396777CF517A08F646774EFD5C6CAB81C37ED7AF68276 +C86AD81C3C41476A6398A6A22D65421526EEC405F6CC9F2520FAD97FFDDBA3EF +9E8DD5295CE2390650C5B19930B45A410083442196A24413ED58BC3994D003EE +F13DA0A43E7D99C70365FE768AADD61628BDF66FFC0D4195AE0CB7FF33EE475E +2B0EB97F66B2FE63D3436568729519B2639BF5AD17F7061BF9F8A2EADDC7F806 +50C1EBC0AF0BAB233868B10EC7711A0C2FFAACDCE3C49D3A0301C49B82A2DD78 +92BD6740EC601CBD20D460B90EED562B2AE48E55A7C28C8643B4DACAE95AD33F +27F2CB34AC65A0E62BE71CDC3D05361D1F07584945E4E89514C40D8A3132C707 +A4D56B054572CAF5F12E40406C26E5077C9E255516000F1733B136CA5C58961D +A9B22F6FEE7B57DA278A3F8F2B8A2B52B5E2E1FED54F14AFC9F13B18734E42C5 +C04846F7CEE4700920DAC45D381100CF7D5DF4E601D3B933998D86D5FDFDF666 +CC4ECF675477D74327EAB256DC1727A44C3F7A6A970D9598EB46A5C38E81F3C5 +10D8307C19D849BBEB0C962BFBB37409195756E505278D619A73140B2C661235 +2091B4C6A3C81A3F532B8168E69EB1DA998C84834C2C87A910A2A65B264A20AD +50F7B5B8DDA82DC3F45F394BAAE1BAAF5FE217BB95A30E2164C3193083013EDB +950B9F2F8559B483BD35507E77A8C59CE5E6571EF07AA5ADFC51C4E54346AE1E +6E22EE5A58C7B31687B936299B29547E214971677A0D5FDC566E61EA08E86BC6 +976077F73FBC8EA0CFCA796D37DDF0977130FF25C4791DC6CD5B7450A594BD1B +291A8650DFFFAB3154F4129AEBE08C3A0F76A61F23A6662795F20B096772DA49 +FDC818E8F431C8D7488139A55443B81474F5D80D63E1CC6B1AA2241C0AEE0169 +9077ED92D2CB61C71F765AEB0A26665F2677D214B6C5EF0111171B165531D3E4 +7E9E43F1659A4F3E96BFE53F74D902BCCB2557013D900D19B86DBEE27F12CE31 +A94697D4DA12D98DF2F197BF7B7F6380E1CD7D1F9E13B65D5841A990642DE6F8 +0F86E9C087D82FD2A903B7C5191D7D87CB2797C3B24432F7D29BB50DE05D37A5 +B9090F2D26B1AF1EF3DF11645E317BBAD8136611F64885A3D635C3C1F1F42995 +83BB3D6719766FE2D016B42753A30887C1D57DF9CB860FAC2F95BF993EB7DC4B +F61EA29CCCA247F2728D4504648A8EE0B7FA0A766282E63511F89CAD7B612348 +7E83A9D8F233757716321B251D122D9793FCC20090AB7BE19B1575A3AD6CB93B +9FED5A9A6CDD855A1F09FCBE5C9DD97F93C49FAD92D3DAB4B32DFAE82E36165D +5A6BFCE2AEA0F568A481C480D75C1F32ABA8FB904CCBF3FA6AAF58C02B501A62 +4D6C1F8F690BB4B7325A31B13A712549AFA18174BDFDA6010BBFECCCDFDB06B9 +406732F56AA41EFBC80266EBF0B9852EE08E76EEB14A276935114FAD24214CB5 +D177262C90AB93798A00D55A152D635C96846D70395C7EAC49F7A750027F9024 +3781BEE23D56131397B4B241BC6976A4F2B04C8C64EFD55E801D833664019765 +7A22B810889C096B55AD2B4D8963CE240D5DF0FDAB71E9091A167A80F5A3418F +DF87AA78FFB1EFEBD8A2C97E8E7667B289BC23CFC16F0B138CE179402015CC4D +F36912CAE318490F6A050B56B778DCEDA7AD335FBB6F3F05C526C8B5EF0B7BD2 +DFBCF5FD5C40F39B6A3455B86B34E89060AB0E6AB96C3914019CEE49EED033F2 +EE547725E1EDD60358DDF57F9EC734134515949C482D52079316D9A2481A1547 +94B4CA6724EFABBE3DE13F07951329A119D84A07CA8CDB199704694F4B3AF26B +95DABE0B18F99025A88898EDE46BB3C314FDDA77018279B5DC8C854096F3C7F5 +4DE88F3BE84881A03C5E19A77B769EC57B4F6E5BB885485CF242A23C6E5FC322 +04511A00F27AB274232A97A2E5C45188538013667C552E804283C579F1700DD8 +B3C70F6D22FE133C15FA6D5095582333F9B4495282BAD0537B90BC6548427F7E +12C9D744869A3F5F133CB2CA078C83B80F95AAEE5D64203110CA1AF12E5E0273 +298B2EB72DBB5FBC3F6A6D7004FAA17AEFB086870C83E8D742EE560DEAA5F727 +CD7BA16A4D6FAB7ED191AB92BA39300BFB73EE31B7820D85DAE74DE35B2E3FF5 +8879D9D02B251D7903CA30DA07E2B5694F23631CFB5EB08656AECE21A93DA6B9 +EB6CE1A290631B795A55CA75A5EFBC99BD1E21C40D7374181C96B43B696F9079 +E7BC8BCC96044E09E48EAA625B9D5C53CAF79C84E8032A0F976EC2FEEA9583AC +25DCC02DEC8D4798E0C145CC523E5EEE82A1A73AE0EFBB08876278A7983FFF86 +527052AC0100CB273390888702DA5C62889808C3DC427BCC5B0A8D787102E641 +2ABFCA74C325F26A74AE2CC7637C9996547B34F33CE355165910F2C0E6445E7E +70DE25D7D187EF97902D4D535956A4ADA1F1FA0CE9881399477A0B72CFB5F841 +1893157F662F071419B5AAB14EE66E1D478AA9DDA4E4DCDAFB7060EC629ADFAF +5C779DE9AB8A65A65722109954599B931C42DE431F5A988459BE94F48F7D2539 +1A8D09133020EA37FA9C7CF8A32C9C1BAE51E112CFCF59CD7FA6E9676BAFD4D8 +093CBF4FCC3BB2E468ED55E28D75DF47CCF621662632E2087A8227945723823C +02629CCDF94D5168A3810B815522588487CD8AD69EDE6D7FA593E638F603D808 +0E2DC9278B63534E63D22876BDEE3A7CAB88C637DC55C9D1C4F3309C01DF68F0 +3919523B2CE7CA52961AA3C2E618EFE1BBCD2C8DC65EC648CD380E3421F287C7 +6F7308C13F6D857C74522BE6A0B09E15420CFAAE8DE28CFE6350217DA9DB5083 +D15B0CA455D343119E3C1D25F1CA143D5568D63CE32856F21328D5AAD69236BD +208BEC83099D6652E91253440A613155EBE7F2D902CAC765F5049FB5433AD361 +7C7EF2BF062877DB1981B9481F961A097D0402CD89E0BFA180027E29B990C2EF +138AACF0D146CE117990CB9561FA6C0A8D1929D5B8BA4C4D9168D6A744ED4B4F +457EFD4B36189371E60DCE4D2D97EDE139145241DFB26394A142D4457AFC0E04 +990DBBF7E40FF9CC5B0624E9B898CEED3A63865690D1CA256330F472EFA9059E +81920A9D365AD4CF9618E64AF8FE19DEFEFAAABF8B878C42C07490AA600C0E56 +76E6C97F5B0038169395855E4338C84108D1ACB59E5482AF5FA034769A116EF2 +F408FDFAF2205DAD5AE5324EE9F1AC7192E070EA40EF350817F8A69D680DCEE2 +1B30277FDCE432D5541D27536E9086C2C74B2B0D5AB976C3E188EBED10777172 +76F7D7F73E38D15D03809B350C2F55E80AB7EB7D4C4C9B7DD97179F36DB5E4F0 +1140662023CA3C389A8B168A68303117179A4AF84A64B2C2A56ACCBECD6A98AA +14CD43B8CD3FB79202D957E0D5BFFB49967E5421426205FE24C9608E5F591854 +DF895083505CD0A4F53DA06D931AFE3BB68F3FC3DCEC7059D3FF5218BF5F1082 +CDEA29587E7E9E357EC1329411FCCA0C3078E9787A12EA78D59B2E8CF2AF09C8 +DA12B2B0EA4A43283C8FC9AC945EB0E63CCFE272BE758B0F8B2C9BAC46F3BA97 +D05C0E720C584E805589D2804EFEFEDA9962B4CD5B145FF7305FA959B660FC9B +37C79503EBC2D1639D2593B0A9F24EE3CC07352614C0B6C531585F27CFB6EFCF +044F2F2A261B0C2D79FF78899DB6B1F2FB06BFAFEB488504D2FD579F55980DFE +9D15DBCCC176E41EA7AD6364D40D931CE561E0AB57F5FEA21549290E539A3C7F +DCE12F4ED93538385B2D30DFA578BAC6DC92A144A72D1C2CEA334ACA6F6C2133 +D1996B97AE8B102EC56426ED5D59DBBA11BA7D6FD39A8692F0931B64538975F5 +61B79F8640773407E873FB4714516037A5C6FFA8C796A9B01898CDFDC2A3F2A1 +5D3BD4C09165F6AFA9EEA3E0C84DB1D058A4C54EC0673860170038CC318DCCF7 +1F3960F12AA2C9447090D91B0EF8A320E933FC8E89FDA5D5897266A4D156BDB4 +077745CC076FB9A12F9D3BE989E2F8ABF44F4BF842DF548111DE129B36B535ED +E5ECF8AB96D94EDB9E0484E00BF942491ED250EA8E062FC59F223A85F26649CC +AB1AF18824045625756CE044529471B253B1F3B5FA2BBC3DCEDC457C0A42E29D +7A152AE14C8D60122C5AEAF5D4360E51BE81A84F3A6CB164181DD1B62AB204E2 +3F078794D9FE570D6115B1C9DEA193996CEBDC5A32D8EF3EA3C309B9F87C726C +5F2957494663A92639A418C450D42D027053DE7342921EEFD3CCF162DBD32E16 +9C8FF39084FE1117958230EF168E6FA9B48590EDC108D7FDCEBD76BAAAFFBD0A +4EBBA485DEA8C89778456A1A36F420FE78B0A8F854CFDE7E26E76CDC2270C983 +1D5D914F3EEEC7E4105228ADD1646013CAE11C03108C6971EAD9C13524537A4C +2CC3D193CE5CF0FED9939AF23E241FF6C82FCBE73CACA6B4B6F88C17A18CE4D3 +4F49BEFCF830777A1B26CF228DA61EA5177A826645B18F21C10E06C748E113C9 +03402DFE318270EAA54F518FF635C340FF581055C1529CD6976951F6819D5A45 +A4DD081C55E7597D257DB9E2E3DBD46B0878895155DB0C4D859B1E61291EAFFA +7F2816E365A5D6AF6EACFD49362833DE3ECA447871D071BEACE9EB8591F31EC7 +CBCE3C2EA428301FCEB42ED2E082F89476F39F7EB993044B8DC23832B25DD3AB +FD6E0A199A3CF03A79F323FF826682C8FEC47BB2B74C22A92D01F0E0CD8CEBB5 +C59ECEE83A7B02E949225EDEE26D5D11521DB381A26E30CEAC4D8E2FFB87E0F1 +44ED94C0E3C022D4B2DC2922321EEF1BB71DE6C221535B0EB6A9837C8A775440 +BDC58FAA05C859F05A654242BBB4620D92E5E8B3C5A937B98064BF97549E68B8 +8FD29B4E57EE27055217C910A199900E2A465051AE0573E3D46E5CD541BBBA59 +5062CF9444E95536CAB30FDCD35A56AF4F5038E65690633DA9890CE8229F6EB9 +E5BAA68E54F9AF6590B4FDAD42B7BC0A6708A1C2E809B743A5767ED46FCB9847 +8274E288E9B2A49803D238ED5FAEFBDE3863B29D55118E3ADC937E4B02287439 +B452DD41CE8298B10AE99AE275D45C5E0EB5680DDDE9F449855FF97B28AD1A9B +BE728BC56C8B4632938A4337D794EFDB56050F5459C031DCCBB1CFAEBBA79348 +F5514685F1F16FADF390B55DB5B671D0E020C03C8D301683FDA4BE8CDB3C7948 +2F5648A2E049A495608CE414857236A70AAEF5EBAABAF1A0950A2B0B814AFD0D +443CD6D2E0365332CEBFD557DD16FE1E3342A85057C5C8337ECEE5466406A324 +B7A5F881BBB2E442C9775A1C33B5321887E3A8E8001ABAA65B1B2BD1191D6659 +3BBD32F2B01A37BBFE2A3964BF37646262E4D667BEBCAF970226BE5AFFB86A1A +21CC0D74E7376B9634EC8BCC46D551FAA67603D4B707DCBF6C65D932FC76C2B4 +8B2D03F5E29C4E2327F5791CCE1E42395319739422607AFC0B6962680A04A5CE +B9FCA10C3EA7F9B1CFEA675F44029F68E3C9C0B90CD7751040239137508E1E3F +1FFCA19DA7B0933ACEB8239703097AFA4DBEC0FD8F94AA7854F83DF191A44326 +EA23CB5F18E342A9110D30A1D9427492564E7CA82FA80CDE8B7ADD8787B3FCDF +A5D52B14B6147262461F3563101CD20A457672F78F9BCB7F996D7699975C018C +07ABAE4E0987AEB32A45577BA6157B51E9BBC37839FCBB886B8987389D8C82C2 +0281A89F98874003140328866916A547FF0B47F24982E346FEC11458EF35C95B +033F35334E2956A631F7192A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.0: CMR10 003.002 +%%Title: CMR10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMR10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup +/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMR10 def +/FontBBox {-40 -250 1009 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 11 /ff put +dup 12 /fi put +dup 13 /fl put +dup 14 /ffi put +dup 33 /exclam put +dup 34 /quotedblright put +dup 35 /numbersign put +dup 36 /dollar put +dup 37 /percent put +dup 38 /ampersand put +dup 39 /quoteright put +dup 40 /parenleft put +dup 41 /parenright put +dup 42 /asterisk put +dup 44 /comma put +dup 45 /hyphen put +dup 46 /period put +dup 47 /slash put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 54 /six put +dup 55 /seven put +dup 56 /eight put +dup 57 /nine put +dup 58 /colon put +dup 59 /semicolon put +dup 61 /equal put +dup 63 /question put +dup 64 /at put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 74 /J put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 81 /Q put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 88 /X put +dup 89 /Y put +dup 90 /Z put +dup 91 /bracketleft put +dup 92 /quotedblleft put +dup 93 /bracketright put +dup 96 /quoteleft put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +dup 123 /endash put +dup 124 /emdash put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 +569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 +24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A +2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 +8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E +3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 +D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 +D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B +03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 +767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A +8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B +DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E +94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 +22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 +72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C +8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 +344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A +64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B +07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC +1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 +78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 +CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 +7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 +BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 +4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A +5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D +EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE +EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 +4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE +0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 +C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 +314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E +DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 +EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 +DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E +DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 +7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 +1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 +69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE +EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 +7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 +CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D +38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 +22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C +0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 +BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D +4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F +3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD +B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE +15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 +849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 +FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 +4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 +1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 +84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF +7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 +CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA +4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B +3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 +F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D +F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 +DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 +D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 +56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 +8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 +59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED +49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 +87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B +8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 +C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 +D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 +D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 +F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 +0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B +5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 +229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC +17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 +01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 +F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 +3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 +689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 +4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F +A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 +DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D +364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F +7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F +26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 +43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD +8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 +C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 +94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 +C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 +B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 +4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 +7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 +204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE +B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 +7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 +279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB +E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 +CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A +65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 +BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 +6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 +B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 +63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 +4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A +A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 +67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C +DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A +5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 +C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C +9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D +B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 +963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 +D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB +B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B +72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE +B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 +8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB +3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 +668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 +ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 +69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 +C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 +3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 +407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 +11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF +2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 +4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 +2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF +9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 +CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 +DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 +0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 +5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 +9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A +EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 +09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A +2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 +AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 +324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 +486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A +EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 +52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 +9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 +4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D +B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 +BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 +6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 +B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 +16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED +E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 +546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED +6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 +559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B +C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A +ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 +04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B +7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A +8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B +A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 +94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB +C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC +41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 +7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 +18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 +9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD +E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 +5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F +4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F +E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF +9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 +89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 +7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 +AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 +3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E +61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B +F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F +D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6 +652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA +07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11 +6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB +EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2 +BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77 +2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDC250E2AC3 +9A160EC8C9654FCEB36AC2B586E978D54744FC8A0E963D8EF6E228ADD22D093B +B889C940206F504F14DD921D909BE06EC9BACBC23EB9E9D137FBC983570FFD2E +CC5D2EB5D2A4A8604A4AD418B800EDC6B89809E0009760E9470F037FDD15E649 +93E9C8FCD9436AF02447C7F5AC380FBE69D1405189E8DBFDACF0E7DAECFA095F +E6AE1A2E9ACFC032BA9A5DEDE9DDEE22A88D9A1F1E0FD9BAE2D88FA168386D43 +4B93EFF3AD84A9C05A80462BB3A940B2F7311CF7054F501BDD4F1347213C9327 +5653B73E9D78866901235C66B0C49CBDE3A1BA3A11991E6B8443117745D96020 +38F4A74D9676E4E99291D4420C57ADE4A8D5214D07B14916D83DF15114393048 +FBE0DB83223F609ABE120AB877FEF549B6E2389487BB7ECF1979BCB0785DAD1A +2916961A1DA60AB491FC90BCD6578571226B4DFD204E75FF18FB5E72DFE8A028 +C66F8576254930567A877DBD22F8372E7BA4F23F9497ED653906F5F67A66A1B2 +51957AEB8D443550161075E5523F3D2AFF386E2640B276C3EC5EDAB74AC0DC94 +7D975D7F5781A652BD13AA7F97ADDBE68847167997ACDD038E74E930D8248F0C +2CCBC094031C7147BD8D4DD664184695CF8C474845692540FE2B8A72CDF9DB62 +BE05E15A05F59D56E5EDBE7C371BE5CB3B276FC7A03B5942057EC3136591A1B9 +15E504DC497B663A9DD1729EFD1478C233B9317351D000DC0982F061BFF25A3A +8983E560AE31E321DFB137C77C0AEC704F8DA99024232F26AA6920D58CB17DE3 +C1BC8E20988FBC4705E594569BEFC3F6666785B2FFA49367E3CC695F2A1EB846 +DEB37E120B0F4C0783C0D54655C143C4F74DA0690C6D08D07ED225F361BC0F86 +572D79540730791DCAC15823991FD5DF1AB8F25F84EF40C085B17C9070C59EE6 +31DCE45AFA78440BDE4C69A4D954C2006070A2C310179851F2D39B1B5D3EDBAA +289570BE80F25D75116BBDA61F002B832F9EF2C32B53258B15A1174225168B28 +EC3324C6EC61E5711811E658A1BA65C8D2D47CEC6071CD88DBCDE9CFD2BC34DF +1ECD2226AD588B50AF2399D171E99D8086DDE33E24640A767F249797B1B742CC +F4E95A64E1AF8D88FB128194673CDEFD6A1672DD1D03B6749E729587C0CB7C6D +13BFC785759F35578D611E924CD89FF87DFBC5C93FA7BE150624825F7D137CBB +FBFB1238C1A397826B8D1DF0A39EBDABA5F10B37FE8C27568E1C088F279A0E28 +020DFD377694024FA154AB5C06EDC3CAAC3CB5A69297E1079F5C2F351D81614C +D73ED708907A96F6F8FB0994D3247045E8D41028432E91C7ADB2F22066D6F8D2 +701298CC9FDA7928F99CA135B69808AF6FA1E0A3CCE1BFDE234E9218A565FE28 +96541CB9381E887182873FD7866F5F8415EBE92E51E7FF064D6CEB7BDBEE4DF9 +97633E53488AB11EE93137AA185AA7E4AA043BC73DF1739C92B4D3A8C46BA689 +B9F8FA73BE010D7C4F9007937AD0EE3EE4E3041C72A2C4DB92C6C5433DF33A10 +700F9E891885DAFDA44A00781BD019A9FFFDB6FDF9361520D50AA5037E654C8A +ACD179511AF61BA10DB29A0535972DDE8B838091B5EC3F6C3408E02B8CBB3FD1 +E213E2C53DB7AB14D465CB0E4FE2A2CAFA20E74BF4601CC23687FA7921CB1B86 +6DB57E04C99BF7F56FED75A052362016840676DE91888490B4A1DFE0C079C88D +C8C3BD3527F7C006E1403DABB47C3F9174208A379C221931724F06270985BDE6 +A53263227EDB00124C5677613BEA94BA029F9D6F8BD1F7B87C4426210AE554C0 +7BC707199BF6DB673E40D55741CE1F0853504A414099BA8E0BC7F5EBA5392684 +79552A5D4F7C0CD3A6D80B18014008AB011C8C66C74D32AAD748EF30C1AD484D +B56BFB090C5BB937E81189912665F332911E11E83CCE75A79DEC2838E811D5B7 +DA85AD6ACB7D8A98D15DEC66504CF2131FF06AC9A8A4FBC4CF34EFB8455C231D +0F73A50052AC8FCFB2B2ACB95033AF04078E9CB99551FBB1C46EE6C413D86C90 +AE8BD7FBDB7BA6E9087658C79C4758E242256C0546DB76A3857BC89F26A4DD9A +F4A848104BF1ADB2DCDA25C79BBBDB66CE1C1A45C7427FE7CE5BDDA7CB599B4D +B5D346B15414DC9688A9D00F0372DB98FD33E6164E5D78D6CCEEF0FEA60A7F5A +9873AA7E2A7F98893AC5A9598B71BD06D13D2766489248190A262E5EAA459888 +6D0A38261697EBFA55180F3D416C2190B36C309202D1619A405764612BAA3506 +7D157F49FA1E0A7F252FCB0B8459A30975E02748AE1A891FD6BB288E0D7C144A +1D348F1DDD145912678DAE1906796591E35012373AE01E18515F5CC3BB29A629 +F8B28B54376A9E10D0CFB29B81981E66F27B6AF44DDE0A3621B9ADADA9588201 +11A0362FEF840B200C84480177C9E3F0777350BE92707BA916A90AA81160D498 +6417DB6C7E15766EC5C9058CD51879041BDF2D2514B0D6B968CA0A300EE2E30B +6AE41238D76DF324B0502BF79D58C2DA1FF7E384891182AA59918DC8EDF92299 +BA162134FC3DADB6FA5CEABB94D1CA9BE1635F769EAA88377AD96510A4DA8F8C +5319E0C06CDBDA1BA9845302F716DECFF7B965BE413A7BCFF3C4EADC91626070 +9A5776EC64C67DDBDBBC66F16962306631D70E62616DE4997ECFE39DC6BC9A75 +D2297C2159066195F43B7002138456AE7EF69220925877C87405D06144D250E3 +55EEF1575DE8564BF98E2ED403591F2EA4F6AD71A126A9B1F5D350819058FE4A +949B8C3A7907A725B463B752EB3B44B090C731EBB86FAFE24340D1A89D3FC0A6 +B89E64C3FA480C91DFCCE4922C000B0533A052FB9305EA3B58A38A3AC2688715 +A7C7418637C393439725F0509B3B08E07DE5E0350A005E4C5DB815CD317EDACF +6460DADCF9281BC6523DC8FFFFE18CFFB2EC61884E7B324806851A91F7E0336C +F86AF2C88F1EA1EAF0F87013AFC7DAB6F6BE426D92A406437E38C75614AAC461 +4EDBD8F129D985A1385B0F9F1A4E6D9936FEC600F4E431C653DFD1D56F694471 +FABDCEC7BAAA0C266D35D7380AEE587F61DA5CD1229D99F82BFA7B1A45A165FB +658A4E7A741E11931D6E5C1358CF76056CC0DCF4B623C2A8CCED91694E46661F +BCBA0225541BA9A58EA1F2E2B2402299EF2B691C39A87AB3D5C722DB2738EDC6 +8ADEB09750D714286EB392D198A55784AD908470517724B92849D539ACAE89E7 +A8E37CF20CA87635FF92F1140DDBAA76CD52BFC0B40FBFCA768F837D0AFBC7E9 +BBC89422CBD6429B284F67AD2DF917AF69346A5BFE8DA3DA8F9597C2265F3BC5 +A90CCE79572DB45176AED6E1A5FBADC98816F0E29BF58DBCEF62EF76A8D8C845 +4C7E9AB94A0EA43D2FA271BEA800890613D8247171938596CE4948BCBC7960AD +5B2BA3E0A4384749A7D88F3DD515CC1DA7292EE9775B67F621E156020419D0D2 +1A6AF5B51E64D3EA7D182AA65AD1F663FB28739B86F9EE5880A5A96C3AE1C563 +7A002FD0ECE3AEE80AF18A0FBCA3EDD496C18C8974E856BA39226C382CF8541F +F7E2C35B3CEB1DEE3BA8F346199944BE2F350E4C3DC89D789250C3C5192236AC +513D1A3058230470BBA11E0B39141F48065B808B6FC459A897C304B749B5A656 +38B55950D6F379A535CE2816498DE36D03747FD07514C2DA1764217BF2DE17BF +C8FB2F06382136D301953DC42EA0B429489275571F6B86AAF496E6A2EB196547 +B76BD6DFF6054DAFC9CDC11FBC541426DF0351ED027FE76128411F6F62DAD159 +C116B43AC59C885B3308B158EB74405541F2BD247BEED5D3B35554EABCC133F1 +B71EA3C7C7876661EEDC141818A3E8A9C519E7054E26DC023320A0166FED1C19 +DB1C3044D23E5BA7F039D86ACFBCB5F881A6FF9135E1F5DCF910A873E6F7DF8F +11372C039D09A875DDACA3FFADB73504C1749932C3792CA80D78979CE0269AD7 +47CBE7CA39E26FCE1E71DB711D176644423FB964CF8CCDF16FBB686877B1B99B +FC570BBEE55DC7F2AED8E81FF38DFD61322F1FB69E5CD6EEB8135128A35FC23A +5ADD95D4F873B2EFD14A1FF76CD20454BD3BD2752C9A5F0C21F1E5F39C5865C6 +D4874580E6224B22FAB9240E0346C843AF0C495E7FD5B3310D90A6308D47E882 +EAF80772C87D3F7FB9DDA52F253FE4E3D1E56EBFCBDB9BB9A977DC7E9772428C +47EDCE4D4F793F4DB9C66E65827109E83723E50424A87B36D6E74DD05B327128 +E407252F937ABE315B18312C8BE965E84ED9C895D275A331EBA6E872DBCEE1BB +C6254960940B95F46CAB4F8469E7412F546E62683AA356366F454308367A789E +B1E6F3A07B87829111DD17856727E948E0FAECA4EB00192F125C2331011AABA8 +F4067FD01D56853FA445ADEAE5901242DF460ED8AEF939332F87D81DBE9A30A4 +18884AFF8A7F00530BC7DDD3A1E6C40549BE3E567B225E7C8844F0AF3E19A4A7 +E61F818A5F1BC836012FBB9AC4A5AE737FFA908EBFC88B2EAA62877B05B1B1BB +65062420B89BC4C3C4B7CFAD1148C6A373F26ABA9A8DDC74DBFE47937035DB49 +20F0B8E788C0AD02381732BEB2B9587D6B50E6F7B4E9DAD171B8C64B60A04776 +F70BDD9C6C8831AE39561701FB54D68810E4C3249C32E4D39BB40C500C8A735D +F316A68985E3A0338D8CF730881326E2B76D75BD2566D7387C0DD8C5724592D5 +1FEE9798B269DE09387D3A1EDAB20063BA852726BC7EF07CED98E2DD1957F94F +7E336F6047A935E128444DA8F525FF1E458ADBCB1B6D910B68955DCC59512591 +2F1228007F9524A0AA6113FC6805AC4ED806D5CE6E03AC9EB6830EA9A7AE975D +99A4FDA50B92FB6977BCE8BCBE2D8EA44BCE9B39718584A452205C4349561CBC +7B1E281C058D0BE636CDDE883E1C1AE3802A35C5426443AEB6FF705EC26AF94A +2A7BC536F373C0EBAB41C780E56F5BD1CA645DCED5090CF32D4F0E5A780651A0 +477CB27558B2D0E2AE3D0A02565EE38D5F437D01308A6BEF55E80422F5B5B56F +6DD11ED717B034083F9BB1536D76E321255A137E618B398875B5BB8F5AF02B6E +B4DFFB173C424B24BCAF3C9271A54166A65927519C9770B0DC44CE276ED0C20C +8EF41AC3AEBEB0996DEE664E8F872023710D0BA81DD3A3EBF79BC24717BA1280 +9E9CEE362F5BBADAF6D8200835311B1063FAE4D6EC8325A694EC516AFD24FF99 +EEE758AC14E76FA1573462BCAA75D246AC363C412185D20CDF1539011C35D1C9 +B3B3717F6A37DE522943CF9B3D8CF284B4C0068A1ABD9B58FDFC20CFDC45BCA3 +DD054AF00C18CD7EAF8DFFD45C28A82C7B417AB7188BDB49A5871320B2EFE0B0 +25CE25F3BEFB53856689A44D365C55218190B407B7BF9855ADCBEC5C0094CA63 +11E014EAFA0D1BB324D3B1D94DA4A7AAE9D29C71E2D5F122F1C79726731FD066 +6545816A5E05DE1F8DEF865DDAE0D80E9AD0120A0C81384AFA5BCAED3F8FF80B +B9F8C8A7517A3863034C312BE64AEABAD77A5269253883D460DCB2F0A3B28700 +255BB96397D1D613A14C3368C9F27F3E42B887108793F4B12E2233E5A3620BC4 +F886F124503FE64421C1A40C37B25127094476713D39EB73004CB56E877935BF +BA0C7B095414A1FD59CA11573B86EA32E297BA38B907938B3A25992F0563022D +CF54FD863B8792EFB58A27DC2CA6C4DF48B9388F5676CD462C1AC745488F6BA4 +2B923427A7D29935417E010099FEB69B16BE5A2AF7B4883BBA80815A09693AD3 +2B78D3A939FF18798043F7C88A76BDD527B554BEBAEF922FDC9B381D72C7CD3C +49698A1444FC33E276D3B9263CAFA375F1E64C8B39C89D4A65FC42A7183E41F4 +1C3F0CF7EBBE5260F862EBBA059765497817B8597DECFCDDDA5C1D15AFD3C3D1 +6F1A8E43709540948B1E3B41E32AC13B469222867483B0E765FB427300AE9BB5 +4CED17DE5C45EC8391687036EF43D57835CFE689B99FA0B860E3FAA6471417AB +BD505F23013DBD726BB5645F3006BDAFFD5ED0CAA7428EAFB448E0A30F8B7858 +311E3FC16FAF9FAC5E86998E4954AC4C9E32FBE6E9DF280B457BE80DDA2959A4 +0A874282A7F9AE5236843298C26D5D4160A4554ADBD3EF0254C4F2D108D49DAD +E1D1B996D5147560D574FC238DD005D18CB32A6CD73C265F05E0AEA17C73E3F7 +2FAA00290D1A6361CF67EEAA68800D9212BB5B8F0259FC8D133A21E6BD375FF0 +4BB0FB1E78F065E51298E97164C1FF241336428932D1AB97E1D0ADEE93BA8903 +A8124A3169AE0B905465D7E8DF132D903C9B4C64074147F2BDB1F722BC261E10 +D366C246E8D664CB57A92883CD7174218655BA68D9919D0C8678DC4E7A7E66B5 +DD7DA4E011769991DA9D93311A06A623B680DDCA32B287104A1D7BBD05AA061E +019BE06684F9BF987FA635B9764DCEC3A3286340A7D50355663D5556103267CF +8CD9DDB4DAF109C47176A1E9443F3E2703788B85B6FDC8951783D08F02DF72AB +DB5F8739B2B9B38CC813796F48FCC21B0CFEBC8F074E464989AE5EDDEE5CC3EA +69C281CC4CC295360FC11F67AF3746CE3598A215FA109709A4B193BFEA270261 +8ACB9B7081A9D60CC49AB3F25B0B6F922672E58708BD707AF7DF35E32E7CB939 +CC25BE8392B3DF687FB67F25342671FA831264230CA39D189AB6267095B7CBE5 +09DDBFD5512A8831DFDCF53CDA45E3F0C097C0C4DA1F12589F7AB3D83178E9FB +2E9B5236ABD35A872EB9A37ED9545C6ADAF8FF2000E67AA8C8A8E61C9829F29C +5555FA19BF6949AE81487EBA68E8ACB6244ED2EE8CD537155B68BD1305FCE20D +710147B9AB3CCF6BBC0F2C3D8D77D783ADFA68B208829F05522211E28432729E +AE8A8C09C04174BAEF8D560D62733BBAF506D2EBA030AA77F18A38EA8E98B38B +C03B5A3C33A7B36EBFD1D55D503FC06F19056EEF9D1D01CE279D2BF23B04E880 +D6873E16AAA583ABBEF1EA8E5D6C3D038738573081E264C01DFBEEEF02B8844B +19BB8D27BAD7354AD310ED720DE2D4240F3106275AEF6F7ED61735D799306DB6 +4A3BECE20525769A0D99EB90D957297D5913CC48A98EEE84FEE5D02B30651CA3 +B7573DE50F1B9D8D50E5746394DA8C5BA5D71CF1647F80BC9337F00EC31476E3 +1019B41BD01DE7FD55886402565F688D1E09810DD8AF982032B048548D87AEBF +B20C6B938C6D8F96C2D7B42A1E69DBFE6AC28D166804E03AC698B180A48503D0 +0549D2DD2EBA5C601841A711DBE9D7019E5DE56CF78457F412E42CEEC248DC5A +C0F349903F745E40897D0331124749D0F9F9C71B704E4CB0898AC7120A880215 +236800020AC60B1E5682656534F3332C2DB06A7510AEA061D9206B4C033A80F8 +77DC8EAF7D32A7B791FA3930647CB1A29228DE62A9733C6AE072144BEFF15651 +791C8F99508DA1E3F8B451985DC68251044FEF9F91C7578A2F3956D97D544D3D +0E6A3F7719F9561B47D76612D833BDB64780728A6456E8CF273BB708FFFEF743 +CF069E55B1A871718E02778CA80A5D21597D597246C260AD390E5F4A285A5CCD +E55AE1C37589EE307C6D2E1DEFC605C9BC33511968CC8AA7E61F5390951087AC +F4376C5BC48DCB22D8F0CA6CABF25383616DADD012FAD655FF4198245209E305 +274D18A98D760203C8AB09F7204A967D07B75E7650BE0A0595742F821F74193D +CA0AF1A4875F50D1F3F2786C5532EA3913B3589215386E78157D6F38C4860698 +7DC51E51908A7AA304DF1233ABAE2B3C9B03F2496B320DCA5B7DE98FFBFD6FF6 +EFD2FFECDCEA32D0A7F799382366C6325B89C94B37CED9A1A1BC88602AC5D9BD +1BEDB8D5CD2D38FD1FA33703C41F979BC24F1609B3B35295CF756551F9F2D770 +ADC3D23C5B7C6A777CB33A06791EE8481BF577A94016A061D8AF8882466F7499 +E66E7E93F104E599C79CB6F76D42608B9BC1171A9AFAAD93E846008330DC3C0B +6E8BC7623E8693C1E7E8B5B8BC426B1EF8EE705D2E806486775BAC15660BDB75 +66BD708939D23762BFB8628A863C4F9978F83733049F63709066CD4203476CF4 +575DB5CA5B5F01D8E4DF345D78C2A938B5EEEE618507B2AC9EB9C4BC9B64CFBD +AECF052FA5D93B306C075AA8A645E5B93D1005C252F0DAB540243C7E3C3EE52C +0886A5D89A30DAAB4ED8F38ECE11217F0198347E62BDA7A1BEB6D46482BE3726 +33CFBB23A78756BA63741693D764467273078167DA48362985CCEA2889133C7F +A5B0BA827E92333BB02221F6757E4ACB8C2198BD7A976A29387CFB9B7F51C65C +2E151D1D1F73470B14587A6F11AAD77465975961CB77306E7793EDAC65EA7AD5 +E562F2673FBE78794C9D38659647EF5189F6ADD9B4250085A59F84C0448EE47A +A073B712B6B1CE984DDE3125960C16AC77098424004666BA6116A042551B48E7 +507FA464B21209D31C506D1DAFB628FC2AB30279E6148F3A2DFDD183FD770551 +0CD3FE854FD619E7D2B62A8888C300838E41744BA759EA4E4F19AD5CD249E8DF +74E81BFBFBEE42B2F67370B748B1B3FD5C6201866D8CFFF8D9ED127F43F4009A +CB5D9651587B54ACB8C6D410128362A74EB358437D0CEBB9E0FEA7FFC27A5509 +E799762B27F30B5FAA4ED3B492752B04702E48B1D0C55155157FD7B4E578A560 +5C0343A472546826E9B9B80E91867D2D4C3EEC02133BC338954AC6B58499AA9D +24CC3CBD2023E962D147618C08BBDDCDF36E91EC2D51D6DEB97A1477D8156707 +9C1B858385FBA45CF0FE74563A5D5A51ACCC3EFE991429A8CE57131AD56F352C +E95401BEE11B310C96E9C3CFACACA00114625BA7B4400FFBC5947574317E8699 +90BD8678107AAFFE1516A59027E9907359B61C6B8A97B4F99A338BEFDA2C25DC +D6413A0CAC46051E76BF732CFFCCD0FF1408DD26C76DFFB54F7745C79F3A7ED3 +1D9F8BED7C6977067E6C8E46EFEC63AE0D3953175A6E51DA38EFA2DEF475DD93 +1C34376F5C6C6218DF78EB84773361B9339FA58A88E96C646F291CEEF398D281 +E0DEB2EE21C3EDE0996427EDA0CA0A44247B1A0E03BD9366E75F763C9B1D2BD8 +00D2066BEF933DC6AB3586EEBD04E6D750A22978ABE902200200B468135B690F +B840BEAD5EF80E068F6F87442D93848684A127EA79F4A8A24DE737A373ECCA3B +B405847430C138E51DC18C367702E868CBAAEF6890FEE68A75C5781F32B96D86 +BF5A0C99F04DF2B7FE968B6566BD816C96D7EE35A863C0D4635047FF09F68302 +EF62B9293BBB8BADCFA64C6CD9024C4F739C8C730BD62F2B613C6E1923F04BD5 +62C556E3927411C2655045B9744C9DCB7F1DA9C1B5C70A145E9A35DACF1B68A8 +B5DAE1C62DF9220483F1DC721D559B87D7CD802AB539AF1BF3E434EBCB796A8E +378B1139CB3DD3134DE8F40C716BA87185D3E406E3C941D336A1436D891803E3 +D2C8E627204A343811FA82FD1A232FFD6915501C1B158E890C534CB94FCD9ABA +F64EAF649056C1198F0F58F56D3E1C91C167D4D9B4481D48A12CE297D5DCD0BB +8BE16BF18DE1D58F7D2587B70FF5734EF8391DC5F709BC39E729713CDCFC2EC4 +5E7AA863CBEE1CE8185E657E7FA6565EBD6868F478554E96FA808A708B48E463 +AACC817DF43EB9A5233606A402F3A83FCE99F73B8DD819A4D014FB435BA7F23D +F2AC40C473A34FEAF0A5DE457AB5A18A6CEEE95A55FF604AB5225C5C1DB6C6C7 +0C7647F075E5FD3CBA9F3B316887B4A01F1C2FE09719B4BD09A84C5A3DCB82BF +F5EE9FD0133F987FCF77098E0CB919CA7FB8468059FD35088B97705F180D5A19 +CDEFA29A02C5D3EC4893985A2478B0BE83B18FABD32654040A2F2A9BF7BB4F7B +5781D2A6B5E416BA14BDBB481B3D619B0C885CB392111E32B2AD6C8BA13E9F93 +49CC4B5A35B1F93B68A5ACCA4823DE44BA8979181E50A3804E43D6245488A15A +BD51999A729A20B9DE927F728E59312ABCF89176C35BDED4BEBEC14636B19989 +CB8BF2927C1BDF5460BBB09BA81FB83020BE4D4B69179C8E3B838D6763946166 +B328ED82B448CAB5EC2331CE7601EE8B39B334BCE11038B0EBD8437E5463C640 +73C5FACEA06A219AE83515674CEF03AA2F5FEACF656ADBAB944CBB237813CDC5 +06C303EA518CC59486410D65F5E5395DE84D0EBF8EA37633BECF5A08851B4758 +1BAE6460B2B67D29A8F88FBE52A26DE7A6E6D859CA00BF437837DC123C459B9E +43FB6DA6B79DC16C60F9035EE3B10E2CCEA9F7ED4FE29667E0559A3A34F6B550 +E4184ED8E953247B104DE7D912C5BF66F3259214FF091096DAD710C9F4EF531B +B4C6B3BFBB4715F3654587A5EAC63C917E100F37862B03EC240E762F2DF72CCC +9CBF233ED204EB966F6A34519C0A169EA6130D18CB8E53EE96B7A63C828CFB28 +45CDBBF7FD775137119B7C7BB2A665074691199B387ECF452A3DC5F859D4248F +3A02D4D65167A9E6C92E0A16D293ACE234C049D98E961D14D070DF2A7F55C232 +B2CBF0378ED83686DF80E05DD417153A3FB34A7B2F0DEFA69A34E19CBFF56D1F +14EB4CEFE99DE9CABC5F0FDDEDED79A50F29151294E2576CE97CA00F734702C7 +B94243299D8080957B7102AB370D5448226870CBB5DEA5A295D3D5C8F7D1B5C9 +44E6F16F703E4CD3F74B37AD19BB53635CC4801A317C953F2A131F82DBF39694 +FE552FC18B94EEFC490A579F263DCF470D2AF1336C166F0FC69D84800CB1765D +85937598431461E7B5DB95839BFA81D51ADE49E4242E2DEA4560DF41D27C7733 +2D1F036614FA1AB505537197F419E6722D4EBAF5DB087FCFF838E782D239BE68 +43AB130B26003747C36CFFE7A96CF8522F3F369E1E6443C923C4EF6616241DC2 +5366259FA9FB2559B5B797ECFA474D491E96F2CF07DFCB0765A1A7B0FA8EB181 +0A82708A93C8C8C2EC711CEB46D4A4D51ED42E6D023932F6C29F7E4D9735A5D5 +269481F9A92673E88970CD15DD2F532A2D96C48150C10854F3A98B200612EED5 +C2074848780E53C5E086AB78EBD0444A064C5377945680900997D1739E93EABB +520519269E2516C7757FFACF312E6725805BB2261552C760CB68A7BCDDA0438E +0BD4E6DD87C204039396684FDFC4398421E1D94B110F2831AC0DA589822357AD +A78CEF72FAB2EFCC848DE7C5486AC56D56DBD0BCB39D608F40E0981572B9FB0E +51F11778CDE7A9DCE029ACD63D61C22135CA5AC9DA490C29FF12165AE20F3127 +9D57AF7441F31659BDA2872A720100F3F63D9CBEB596FCC23FE1BDC7DAB26FD8 +00182A4EB8C9ED92B3BB9971AD01063CA67ABE06F51F66232545EA42AC145113 +1BB165ED65DCC3A1C0E288FED14706BD7FA08D3D4F143B8B3BA68BEABE09225D +2D0524B51E2D7ECDFAC0F8D66C7D96D885D0D87B7657F6134B3E7D0493E4BA5A +6DD7591027A957EF7E04AD08B10D93205A5F268E65B30242AD7D07C2EF59238F +F5B6FB46BAFB04D0E354072DD934FC5C63A4FD47541A4BA4B68E531E4614BEF5 +15AC43BEB87A1204B9BC873E9E79BAE958F4622077B7F7C2EBC0FFB7F7B6EA39 +C9D47152C26BC4A41188B367569A22762B8800E715416B7B396BB3B5ABC11A19 +C427DA9CC6EFAB2450C54030DC95A775422AF14156388FC0DB8901D3D13CB248 +B774DC8E8E36C7FEB216ECD93288F0520FDA6FCAC443C62347D680CFE38039F4 +1D15F56B06632BB1E91AA8E098EF73D8A054AF1A8E327BC6E7D37EF19166633D +1714371B2E916869E420A69BFC9AF4CCD3F1DA4569D3542AA43722748E5079E6 +EBDAD7306314586BB17C9C7FF0825D865AF14F0FB03EA08F5E2D22A97B9702A4 +8A169602A94B3F08ED7A0CF6B9288E35FD989F2D0020411EE777702C408920E2 +7A7F37E36734BA4937FEC3B14FB1FCC92BE0944C9D893929A63DEA8030DFD9BF +86C40A4E5421C663BEE7F2C29248B4839E441AD9D04F051AA0991A6D6EC47280 +10CEF96A41D329CB263A566A2D0C993FB918C6356C1249BC14BBE3B39596F7FE +DF719A7A9175B271E37F0C3B46B6F1A53ED40E6C3EA4313A7C90B65997EBD308 +E2F08EA3B7038E0694294BE05E9583BC74306255DE19846A692C0D0D64506C30 +F1E7B83EE2090F0B0C9A1DE01474DF9DC7D618193149E95DB2F6BD8C0DDE48C9 +625313BC0C265A6A4BF5FC9598EF8E16477DD19068CD1AB4C52777E9CBD2EF5F +99E28F5A2CE31E2924C196492A8E3319B1024C84CBD4FC175BE286F1F0829E3C +7628AA9FFFB1810C93336E3749A818E46206A3E415139064C9C7D004D0CEC1F1 +FAB611B672C0EB951AB9CEFE67BEB2817BE9248F887836DB614BD26A59CCA79F +04CA82700DDD8D792E89EA14D0B90FB3F8D6648090A39C99894C8CB638EADAEB +D9BC62555D36EBED36A39AD7601BCE938D26C84EB1A6302CA1111B0C362C7718 +3791067E2B506460D1BE71A13D02451036C4FAD7B917CC9CB347E8FC30EDE59E +8BF9874561A4B0E4235BBA799471EFBAAA64DC644958D1695526A86D56DAA3B6 +8AFA3A1AA7B66C840DDA7860072BF4C937B37FDA41922388FF8B4E3C305335BB +ED114714115CFE1385261C6EF0EC27CE200A0B2434BE519CF064FD5860CB7395 +C934A9D7B06DAA01F039DCF3318F393E22AA8CCEA80F58094F5129B06A5856C6 +9DB2EEB9B377135ACDD04876012CFCE0CAEFA831CDDE6B3ABF574573EB6D72D6 +F03D294CE59A42D5348781C90D1F0D8BDCF770E6989A939E3FD42A68D34E6B0E +A0AE88E2B52577B1BAA36EEA23071FCFB8FC4C41A8FCB9F8871F265D78B274B2 +D0D8F92D55011A124E037B5254162E7956465E96DC76D0CD96643AF172BD33A9 +DD48C30161EF717BA3AE6C7231F05DC4E330964C01F6BE6EE652AEE0AA41086A +B2FB3DEE6697965BF24EFDEB87D49BB4D617A10480CC29C978C953A0B826E470 +BC73AB39F4A8A94306CAC840DE844C60F650537E695C6323991AB9038DB838DC +0264EDB30E27E3F38B9073C8F7FAEEEF4B8285FDFEFF1C7CB16E43C712D78345 +813848FC335ACBA0768BCA0A9D57E99026CF04808F002FD842AF9DDD4E72BC61 +4997B2B39E28E971F60F8D96B66D8EB5911B8856287E3CC2D24D662312C238F3 +777745B73A30CF91BCAF4C6205808A2286285462580052DE31EC1EDB0BBDE46E +5DBA461A815EEDCA60F8D64F7A2A84613DEB4C4745EBD6C04DAE969BF4681B5A +F95ABFAFD2E9FB49A8504348551E67EB6EED4F87362FF9A5CC9BF06478E815E9 +EB946FBAC21430CF51569E331E0060BABFC7B21535D987B480FE1264A3738EB9 +F67197E54D9C2B032A06AAACD80FEEE298763DF5CFD00E2814F58A69A8643AB3 +3902057079A36C46D8ABE38C48ECCC6F7491D4D4A581A452C48CFC961DD8E85A +5929131DD9543262E81C96631C7FD7B94C724102DE9C365AD97D6ABAF44AEFEC +BFFCB5DB96D395117A665FD30A70E8090C3883FCF7ABE76954BFC07E4467E5D6 +262D9C949ADA532E94F9676D15DE90911D34BA384081A789D304584C688025BA +4F6EABB4ABBD427CD00FF823773B11F283241BAA9B9719808D7FC5E77FCFFFA4 +F95DAA339D4843AD99133A1DE37103F386B4092343814923FCC22A87D8A91F98 +3E72139EA419D61789C36D99A207600C188477278887467F15D6A6635BC18D38 +53FC280A6AF75015E003E2C80F312FC1D967203234583FF829FF13890D62FDAD +69DBF4D1AA69AB22A11A64662AFA11952042294C55F890EC1805936402B7C229 +F0A33C29453754544D92CB1E338AB7F3337BAFDC535CC93DCA0A049368B91FB7 +07670DEC8F84592CA1B4B8CF94E0D6A64A0DF9C0C239382D283AB166206B1893 +510E6320866A16450FBC2B0F82A38E460689EB07AD663A0785971D53E42EDD4A +4BA81BAECF10B93B346B20FBAA70E4D15AFEFBE7CCA040D982A92E7853D055E2 +065A09DEBCFA1B2ECAE26C38F8DBD378E976FF597397C27828EE0E6791B8641A +95CEAAEE1849027B06DA878994B70F94C835444F6B69A2DFBD6E4FECA5160C53 +7F12F395CBB410A6C92DFF74F8CDDAF64EFCF4F8ED9B832AD75E48B3F01DBFA8 +86D7ABCC22CA3C13603580C64B639948E2B74654FC8AF03B4F56BC8302645BB3 +B682950933DF6086F8641FEA62CC01F451312D22F4CC5804EDCDF981F6DEE997 +BB777110A8E8ACADFAF6428096108F535472D856AF4165C255A1B43342202F3B +A72C931CD8A966D1898B78B12B14DBC0D3663983A9E2153CBC23184A4FDA6A0F +779AF83DB6FA36FF6258473B17FB452EA4AB02F0D34C0B8C8E1FBBB35B680D94 +0201AB0D0F0637DDE7031FDD239BCD083FF5A28AC9AAB7271D9179A8AE589B26 +A897659AA8E9CA50ADCECF5D5F4D21C7142D4A85678466CBF033D883ADF819FD +CD27E3A6046F3EAEF987DD9171440DE702ECFD3AA51C12AEAB971FB8E3128291 +592A3619A00A4DDE933F960CF460C31AB712D12AE4A37357E42CAA235672926B +00FF510B7686F013ED7841FD01805D2496293CC262F80E730D2FB94EF320314B +2E9BFC65A17A0BCC2233F53ACCC3ADFFAE00F19277AFABBBE4D2E377BE54EC2D +82038A9D3A35D7B13744E468A1AB3D0231D394EBEFF06BC1D52F18430F7F77E8 +DB47FE2A958D86452CB7FB6FAB65198AC7507BAC92FF4F46B97A265BB80E99EE +B2211B9989BBF73B1753B4BD6730271DB7679FAF4D3B223839094C1C980C15D3 +2C9E74DC9DCE7CE0D48B1E2A8E2E3DEBE2DCF6FF7B8407FA88F59A8D572E818F +0C6AEF5B4A99F83398F97B162429D82A62E2377361853F630E7D0A7D728DFEC6 +EE39A9DAD89967BF1579C57AB99CD78DE820C407CAE52C2D7E65C97A594FCE3D +378AC8FF6F8867E8953FBE91D2D8131AF97821F28D6EAA5A9F025DF790FA0967 +2C0A1339E953EEE5FC75F76FEEEE780F332A1C0C08DD80EEF52F1CB7E02DFE52 +86F148A998753B27CB823FA9B4907B37007A5FDB8395AB3FEE7CCD947D1F6CFE +E81CD88BC9690E2F89F7CB130C9A2834F938B3D562A42CEFDC45A38E6BF62ADA +1517974E61F6D35267795C7A9E945856824329B14E70EB350C997756A8FC0A8F +7CBABC48C4AAF0A5D6A8F58AC190AC3F980C00D93FEFF1539D417AF2DFBE1021 +2882782C625D2BD323B9E0D53F1494F8CEF84ABEE30CA90C251887075A697386 +89F38001C3B2FDA9991D9A5EDA186C37DFBD0A77D47E24204981DC0A45B3AC66 +DD14D43A8A9826A0BBD96FE2279638F5AF12F010474075C381BE0243E3217199 +ABF00214D7D13F66411A6AB4FDBFDDF295163DEF72E788302F63FA8225F08ECE +1F32D71BDBCC1ECBBC067187C9713C686E3EDF304BD3C58981C76B6943E66F34 +2BE57CB3145FE9A286F570074DC259CDAB2A415DCFDCAF46FA3E195FD43C38F5 +A612D653E3F178E16D9FCCB637CAC9AFEA648AF52B945B9BFE37F241DF9DDD61 +5425B37F903B079F337E8E15B70CCDB8920F15AF89538608A573E7C9008BE814 +FFAD305F0B94C7AE5F3DB35D34C04C1A250E89C252759581AD933896B468547F +BF0AFC136FEC40C7436120A944979C9DB4D492A52B0FD658E8083E0EACBC60DE +67DCC01E3F87F04754223A34732D211B43248A5A5BDB19992CAF481A564DC9DE +B16CABD3BBF40BB4F84D67015773F7261FB175806DBA97597A0A8AF8920596A1 +3C77C728F23CDA310161CC8573ADE490419AE08CEB622DB6883CF0B75D43F0B8 +B37715EB9AFD9CBA33DEC10BD2D78E541499738D77A6450B93B795EBAD5F44C7 +311134D264B1881069ED3422281C15D1822DE565FF7768B80B58096D5B03D168 +0158B52A52B7B5B94609793DB02F8EA785A2E0A039FE4F8CBA3CD0C2A934F2D0 +A2F862F75093FFB2743748EAE9947B5D9F56CA0D67ABCC01E4432BE67E22DE05 +39664D8D7E9D732A897F03DF889A0D3C09E60C4F3A3996AED7293B8743353739 +DE1D41C5FEDC2BBF6662BFC35660CF8EA4F2C0DA06AE90AE91A9E0A8BC94D43A +B79F3778BB68BB937032EE09062E1C4611EF8E86CB7007F2AA7DD3E46A31AC00 +8CC36771023DE9E9BB5483C051FFEF412A14A65F30DF95C91990408BBB8A1E6E +FE801BA15666D3C270F045A8178BE9E424998653471706D0D86D49967771961C +3F62F1B6F36652DE97526AD89E748221893C9B6E5915C1504FF46B6CD09D85F5 +57F881284D70C35BEA64731C99C0D865E2E9C9FFBD50806164157CE198DF009F +B560FA76FD75CF742308B01F8ABF13E7F9DF82298FE454C1F709387B6F23C306 +61FD8651CA2F51C5F28786D6766B4339928115601BB265F6895712C39D4EB75E +1E1EBE9BD2E808299CAD5092397B7AFC8B386E992AF8A47FB618101925514570 +2CF7F3D9418ECDF120DE0D9B14BA35A19312BB4C87C9A1862E7AC946AAF7E0DB +9126282D6813095178325D6F7510550788D387CC3F7936E5BDFC55543FC2AD73 +0A47BF75CB6B625FE8F087C3E53330DA3EDA69BEB3601FE3223BF111C6235FC6 +8ACA71E69693779A68F93DB849000C3915225B007E9F1A64211A66634F67247D +CB39A389107705AD40B0EE4D1E1AFB6B6F6E7F1D59D12847F748BAA026367172 +61FB9E0FF8EAD4609047340623E92C4954683F777B761B09A1B6E06E13977B66 +B7D5B557C9E0682A0E4EB4B04EC5191E68ED14DB179A9E167389023CEBD2F046 +05B7B10F352B91FBC1D499BC63A8B63A782692732DD2C49C0532E0D98BF9B5B9 +F1EDF5A5E00EA42DF50F9FF5700FA06DE26B5EFDBD15375BFB87068ABFD6101E +4DCFB11A4F6CE0A126B1AF08A0DD21B487FCE447DB919FB215BF614D5027E67C +CBDD8B631B0755EF9B2F6E261D4EE7D892285D1579F3027F9B04BCB1DB28A8E3 +BB0E83592AB3BF25CB92A3BA038A91C5854402DD5C47E1F535750D1090DEE1BB +A5AB0785C67806FE7A4D1C7DA3A8D40E5F8EECD2DB7F5221ECC3AAE50BC607A5 +6B91C718E2092102B2958EEE11B3FAA96868D425513142D1C374886E63A705EE +6D996AE31AC5F89456AD296DD490CA6E63BA98B78E4E9FC2AB540F27D47BAA6D +C8BA9D2F10FB380F3C37575FDCAFC69F42E83301FCFA1DC31DEE29087614B306 +F158970D92374D7435EF08EFB3B32BECBC3C6C9FBD42951801B86C715A7FB306 +65B90CFF9FDE5AA20F20BC8DA696E5FE7214E98F39D2EE60185F926027A6CD5B +960579744D143C1A7BC8BDF10C70003858B2A6EE72F854CD35ECCEC8E92BD664 +F9734FEBD981C41DAA2A42AE83697E3B030C9E2C6C3969293D324A7D68274044 +487004C3F6FAC5B64BA149DF711EDF2F17881864AEDE3E1E4C3147BB3DDB4ED0 +2F79305B402E76F974CD56CB04A4B562DFF36B40DBED2F35D38DBCA5CE8DDD12 +70C28A19C891D126927DAAECF16B2DF41802882956716BDBB442E9F062DAF65F +6E3808CF58F9A4912209644195F04B4A5B209314017E96A700903AF6F4A8E8EA +6CE36F67EA9139F816CC75A806C3585BBFD882F14028770670FEA22F34358E0D +CD9626705BEDEB3A0965697647220C1962FCE67D0D3E2B9FC5DA3C3861F84209 +C56B90CC792B95076CD73D35974433DF6567FCE72A24162B434208A79117055E +53BE3CDCA527E33638F940BED805EE57A3526186F80ADC5B6ACAEE25E2081A63 +3E6D985A8A6256F923B971E34BDA04D21EA99D34095AB201BF44B62258B19ECC +45149754F896F64FBBBA939E41A11082C307165C5EA32F7C8CDEB80851B5219B +7A680F7A8D02C9BAB72FE3B941E324F554E34F5DD5E4936250A82DB846F5966B +779F29A9A4E53BCEA49CB4C6CC7D0034515E9F7B357B6AFC0FCC6FCDA1A34B5B +103062647367EB77762F6B47773264536E40536C5DB2985C3048969F9D6C698A +EEB959112EC964BDB8DC3C6F307477C2615BB536C03E9C9B346A7916D1C69C0E +116DD955FEE0B8F6A0B476DDF245B7C901473A96C2C53DFB5BF4833F984F4D42 +C06B6751BFA6D96E9493139AEE7BE7839B8CB2290735C80542C40D266283CF68 +4DE60FABB54F29A930357CD2AAA60F5E85D1E674610F2E7C280401061AD47B55 +5A1EA0B0196423DD4DC994CD41094818332B99FC9218B2D628E86983DBC5B842 +AEDB7362D479C940452A947973C8BCCD46588808F0F9FFC55EF2D75C1C075BF7 +FE6C21DF51E5F6B00D807B033ACD1C7C6A8B3CCB7332E5ADC93433422095C0C3 +8CBDC619DC8EAC0382428C88443B16ED0DF49CD042D38082CDA4DFB035CE50C3 +9271344F46D3765ACA3E1B2942215F559EF1E308DBC2AF0659DC980F5DCEC6DA +B33D596CB3F26EDD5A11D6647DB7AC5AC4FD41B62BC353356CD12DA5FC6EC2ED +86DB312ED5C8323E1C766A0108ECE43C11D2BA0A63F1BE2B0A9D40EB995647C1 +82D5C9FC55169F50121ECA94D1953CFBF9F38B1FE0C7DD8B786902A841F24A23 +B8762B929FB5AF021414A5321C7288BCA19A240EE15D106043DA19354C4EE1B2 +434A967968C29B9125BE84A907D22B0BC2A2CD09AED00F3CC3C5C7C9AE7C906A +7050756D4E67E11F2F2C14DE59A92C013849CAD0A1B6CD32C0CEAD2A4B20AD3E +ACF8CE2AA125F1EE154B79690659E1B90563E3884B47699AE1F7A71579C3C4CD +B66E6FA9BF98769452C5A2BD8B54112351F05BB77D3D3E3EE9250953BBA94EC9 +C0DAF20B0606C3CFCE4815A876F9CAB8A9A2E5662F7764050A0F5A7852B9AE4B +5799C95B8718D481452AB4262A843E01CCE943DBB8377B7052FB397600962A01 +25E5FA112149DF197FD9C8F16BE5819096B87CB3555969026B8A5F4FCDBF3171 +BB1D5F36E7CF89D94457F4CFFFECFD8BB3E009655D799C4F262FBEF937E5107A +511677585FE4D4560C34F03183E6293EC2BDECF5DB400CD1A29BA1678083CBDF +EAFE8D078B72B42BC1CEF9FB5FAB5B2EAA044F5E98D99D9B907A3FE4E1BD4E0A +2B845C58D7D0119C323AAC85463968D97A651A087DF3B6866EE0D09BA5583D8A +8DB9837B487DF5FA27624BE3C7F17E6C734D294A1D200D971EAECF983A0A2378 +BC2FF6B206A5121EC01229C14E0C22CFE7371AE1007ED8F556B54347ED545D05 +EB488D7DBD5F668F45986703122FFF97A19523731B7D3CDFF8FE45ECCF2B91A2 +0907AB03E8698E0E3F6D846A4417B9F66703DEC16AB8DE158431D3424BF6462A +70085CD88F8BD3DF2023F0738FA6E3F36E752DBE7590F6BBFE1BA8092CB69B54 +BA30D871F6200BB9CEAAD3D6A5AD721FD4A48D002BDFD8E339483D6E32ABE379 +914BE6B673F6FF3CC20BB2A971184433A714E802CBAFE2C85DD5F0E29B5F9459 +16AFA7D594B373139006786FB5B8594D50C91217D49ECE8E684C292946D79658 +A9BC010ACED5F757796BB9C32F98409ECA6511351E340C2C9E3CE2AC1007A52E +95E6DA9F56E11D4B0586F88A149FA8A2BE78DD25F89BF504A99140A7453E4C3B +EC9F94B300E4F6AB24C4528E029DBC0C61E116BDA8F0AE3108E3269A76927509 +95B41AAF17DB3759D04E9F0E7CA4863A9A771A49293B1EE6CB38E33A125342D0 +6C63AB27F308D08F60F4DEB8C0A335B115D25683F8AFF549598A3B1E88BBCBFB +7C418723054B346E748DB987ADF0EB40FD0B8FAAFE5871EDDF9D68821C8C9643 +7A3EF4FD3BDE591022C83EECE829BE8189C6D819708103BB96A29CD107F416FE +3230C3E7E358722AFD9469FFF2C7FD9DEC35BE527B99BAFF00C799B99080BE0E +C88272197BFDEE472E29D1A197083F1BF10324E834C9D76190223E095487AB37 +50BB4FC92179754DD1138F9A55269137543FDE3173BB57BF3E5A2C42F5C58536 +BF4FE748D9033B0E319E3061A7044883A795BFF107E9C12F2449197FD29A2BD4 +C5B7DBC42C28596D43CA57E4184250213D3EE5D447A0D8023E2BDCA6B095DAB2 +3094B07797FA4AD49A4BC874F462D46F9DB4A21773BA0181B3482CF9235D9C78 +B967B280FF82EF3938F51211D5822F527127A5B4D7D643A443581EC8599C62A9 +A91D57B358D8787A39DFC4AD363869F6002E1EE878EC3573521ABBA11B6FAA80 +2F73E889DE675B42463A8488C72AF383482D6509F49786ADA521F76D93C4A91B +7A5B23417305F5F89FB34261C2FF16B3BF983B19DBAB9BB6B1A2EBA3C2AF80C7 +450248EFADA22E1F8D18CBEE599C8D210498432C47CA067449143710A73DA7C1 +38C859665D0D88FF0E4ACB573E954655B5DD4B8C7DBE9B8A3B2C4526872CEB80 +45CB40C3D53F89ACEF33BF54BA05439AB4137D9F6A5F7CC983CC0344216AEE0E +2BCED1790BF4506A8908E1D7AC441366E9938551A962C6AF4BF5E2E6B706CB0D +8572EC4AC8CA0714A5EF6D4861932F42509F217477AC1547A3F96CCD15787A6B +B7DFFA17B0F44E83A08486E779A1E36B7748B17F2D09FE6D7717E1CD3E306004 +F69F2EE47DD0A9FEDA1D43558C8217FC810C109B8E55446B6F151D44C08FC996 +63530C24C7F0B8A59AE9FB7ECD212902BD8E4115A6F6411266A57CA3F7532E2F +C631F18FAAEE1F1B7224B598AC585A4279155501B1BE29E06893A8C56DE80D66 +4D5586C74C54B88D1B61602D44CAC618E21F447A3A17123F9032AE7B7854C08E +E63B5335540A7F4B36DCD11A47FC8E672E8EDBD9BE813702927FA8B0E0715943 +E1AD81AFDA2350A8D9C05295A208EAB36592672ED05E16C4D9392B3CDC1EAC2C +526F600BACC7C2F6E0AD1283259B1388E83880DF85DC9790DCED3EE2CB06245C +3FA795567CF8F6E63059D974D5E2DA8B5262CBEAE15984ED2D6FBE0C5580CD20 +05640AC7C4D28C5692D3F814A1A90A7BA2633A68A7A9752AE74761AD428B19DB +79133438C8E0CACA1624A5780A14DF07A74003E6EF75F75662EF6E817223BACB +0B0B47C05B22016F6EC2E518EA8AF4DA0BDC4B02EBBA5D746CCD8F698E5F25CC +47184CA13E1670BC214C44C27A70CE6DFBFA31B6C82B015C1A4F64F2C767960D +E2E40BC61F84B19C6F874381488053602966F43AE5058C0FAD7FCD563D01DC11 +09C7252BD1FC94D7975F72047395F685A7FABA083130F64B8DEA9029F14C6AC6 +874B97B05248E3D6A435711263526F395BA49D30A21D4AE548141E399FBAB5B1 +6EE081015FE3C5663CCC484B8B4183EFB92E69EFFDD7F01F518569E03A72C4FB +6772A0644FA922FC56B0B99B1F35832A11D929CAEC8280793D062109E3BC57B9 +43E01331FCA8548A573FEB914F916BE1D06D2561296972C28F6AB92BD7C739FB +B1D5251FC46E2ACA742585DA6C13ABF373F66B51B45B44DB1471220A3C5AC33D +B1CBEA5B541B8C1AAEE38ED30735CB1C12D02DF0F6770979AE08BA566887CFF7 +54C4AF9ACC382793D4BF251D09A088691EDF51E72BD9BF9F2455A8380D40723B +1D90B78C210ED9972BA6BEAD25A7B240219C012E3757353802DA6183C365F51D +D94C2C57373A44EC5C422D3959C140BD87F1271405B33BB9747A78E5460A96DE +2C1E98D4B4FD3A15E10989FAFBBA5C57644D6206CDB81493667B3E4FD684F3F5 +8FAEC6F36B47625DAC46AF37D9A04536EB5D64B84D17FA194BA862BADF76E107 +548B078BD5DEAFEC764E789E6CC8E78039801CC4716FFF5E7857B0FA3BC31CA7 +E1AB37C519A9EFC58DD1D3926226A3AB147EEDF10D63CBCDAF2DE66E4356711D +EFB9601764562A81D21D943A01AAA3D814DA167531C164BDE763F6E3D619FE40 +4705A2A03672929945500B4D11F01ECB2B09CED1927029D49A9ABC19B23463EB +0FAB85297CE11F97C1D560C5CFD27691E39FAAA95B468A502988BA484664EF88 +2630187E829EAFC67146942DAFE5DD566A72FD6BF32B33F27B383ABF99F9E438 +C30F7CF8513F209A6B4E76F16BEA603005E8F71C817BA98D25B415B930988A1D +4EFC4CC7BA7801869D53863261CCAF234BBC398FFC8D7F736F231E77DC9C0EA3 +1AA359D0A1962649825F59DBBA3B5975D70B2D6FBEE024FEBB2908E47858568D +4BF000D59D21F549FBC46726878B0123BC5F2450F60B092AB46065DDC9BB7D41 +8E3CDB9982369E2CED9B88B58D47A94A108324E6BC009395CB656230FD9C5EC3 +8631D1F70F5B29CBABA91706687A4EC238AADFD7BC3B43166134AC044E72007B +8BB28A578560F256B2C9F818D948CD3CB57E351BA8F34834C164F3AF6F544B64 +0DA5FF8D23E70669BE37DDD66EDD81132EE4AC92607D6309C5CDFC6D800FA012 +BEDEF9E53F5F3DE3B0955FF6D7F6AFAF7C5026F2B989F8103E4FD2E39176E5C7 +A50333B89EC266B1C39E2534EA4AB75B62B90962065D26D8958DE43A879FB0A6 +316D86559080C6048BF798AAB878E578673FF67A92741F60CADD40265C658184 +A42E9B85997CC8BB4696F50CB08AA5F0F1A658041F6C32A0859B99E9B41A0141 +E9EC90FDA5A358995A7FE0F8E7D5B74F1CEE7C6EE8272B35BD242B5219AC103B +CDD20FB4F83F7BC30E2D0DC150B036CEB93C92908D53C6FD6D2D5BE1A1EB1596 +CD9374A4F388507EB1624048C79366F13C1319E410B9EEF4F33C5BC5BA7392CE +852B8F2F649AF0781AD969BA91CE623BAAE3A45626D4A6D98F210C30C60DFB30 +72C19559C54ECD9FBE406551B0B3C8B1833A8834E1BFECD87A20D90B25F4859A +3A7A21054BD82BD20A3E2112F447ADAD7BDE83EE87ED04683DAB283627AEC13E +450DA15C25855BC4ADA345C1D92CB5880AD4466DDA84568FF703A824A8EE8E29 +F0E221661D6BCF20BF046F80C044A860A2925E96063CCE02D044DAA35923E5FF +6DAEFA7845ECDA7EB4D3145F0436EB4850AB3A65120C32BD2AFAFF65518A7529 +AF8B2E8F5DB78B7F789ED6144D3EE5588A64DC1709E64C69B3907A8B4872AAC2 +896172C0119889060CFC265751C8A781208282157BA8F925BFDFE72E4AE0BB4C +D472F838F9FD40E229A3B36F18D96C99FE8D88CA44BD2702C5723D7BD75CA5E7 +E606909DC6EF9550DC7866C54E6F08F6993E6AC0E78CA0FDB60DB16AFE9149D9 +CE9E29E6461C1FDCAC59B0CA7814F7CB663BD335998F2B946407D92791AB32CA +BC3FAF02A19178205981B654FBC761D3316337936BB9C02F4435E9FF33A93228 +CDCB3DBD347E15779CEB58473E78A5AF2F234F2FF350FF5F2589FD2A3F38EA2A +0411507AE1ED51B550AD45D561344D3A6470C9449E25522F261E9F861A87F272 +250144D4A7FF42EFE2F53F262B4D50A9296958A5FCCAB2A72192C87AA4D7163E +F5C23005FB2BFDDBB7696A39A987822C4D71A1BCFFF58FCE32435CE6580DC9FF +F02B40A04772837D1C090B31D98E73E79D6E63D973AF32C762643D50575E99B2 +D2944583F89A5C23DB7BC78F34E2A23079DFE9CE9E9AD70C5EA9AC910B721861 +9CD2CF56C2E9F92311D2F4319C4E55411BCE3D593188E4324A653B730C2435DA +3D2839B68C3919AF4DFE343C1F1BE951985F50F264253552CC514B6962EA363D +CA92F7AFF2A2F64B14194F69137D3EE3E4854B0BE9E9D9400EF10A9F1B40A01F +0AB88A7542A3F40A29B012ACD52C644EBE181CD24FBAA9A2687A182BDC142695 +6013E51C2A8E561A067760B4696EC55E2DF1D6A04CEE65E74A11F712BCB2F8A6 +9994358EC86660EC04F7DA6C7A133CAB415B034B567F36DC71EDD3DEF8F0802D +437DC1488532EDEC290E147FC9279F4821F0EA2F5BA6E2A43B64CAF0B1942F33 +215C18ED620C928F1EA7D0452613927FE3A78377C01542FBA8A397D0C6D6D26B +AEE8F0A3C15AE5CC927CA38E4C0CD2AB9C71B6780E5EE878523177130C291C70 +75D865FD73B3A875F450331C332ED0205F74355A07C528AA047568789CE16005 +A3CDB32578707DFABCA888B476BDB2FBC69425F9157AE29C0E807B4D996DA7E0 +75C8F714F2EF2803C456E2EE318F6111C286CC7305D2C1E270643BAD7587DC7D +4030E32069D4CB84C8F07D0DF1E492E4F4C9AC6C71ADC174925CECA25FE6878C +4C2BD2D4E3A3CFF16E0FCD8C308B759C2A4FEEDF484BEB0F5BB9B7895DC641D2 +922631FD2E23257128523B31B369AEC4D3A63E3AB3DBE2F649BA1C2E4BB4F8FA +7CC579D3C6FBF2B045EAEC3E5522802DF1E107179B98CDB9F0A9D400CC5DC89C +561A93455644ECF841E34C28FD690062504AEF2D5E09E9E84230E93B56B741D1 +1AC88BDB4E77B90D49DAFF1333758F9E72CC153F4F1823407E9EA929067E180B +989D5B459D867D3B242CECABDA3439BA08BE3F96155B62E3323FFD874DB7897B +CC139739546D83739C5C1665F6CCD89F74CB7C07138891E23DACABD4B67AD04A +1DA2D547378B8E77D1D6CF3A89295BC499F383FEE55EA8359544EF60ACF1F750 +1C607FFAA1AA10A361DDDE23B2858E77C71F0FD2D47ECDE5E77CEE1DA878A8B1 +40211679D7691011B81246ACFF2B487F106FEFF52E79B7B7B05442D846FA7381 +98E1EE04940FD3446A516B47C815943870C9CA9C1B1BDA2894AD89DEA6E1B96E +60C94BE49C89A0FC4B009AEAA8B9E658798B79AB404EB06515D23D0C83465473 +4833AFB6B56761858EDBC5E125891D58DE477CD512943AEFCFCCA741D39CFA02 +E0CBD9045ED5FAF2580C39A1102196A85E1CBC67A1C56A7CDFA12BE2AD351D9F +37D4783CD6A8B0EA717B5FE28D7B39000712E37E622A821D040AC927726402E3 +63345131FE928E3147B83D619DA8F212E144B19EDA829C7F6CBDE636F76ABEB7 +82658AE7276C2F8BEFD02188598DC592E05666984DA2BC8C9F3549E96DF45D44 +9FC713AF972127020E99F95AF3904EAA898F4B67D19BA296AA36FBC14C4DC5AB +C88DCCE567002214C7518098D015FA37AF02BEA5D9F5845FE3FF9037C15EBC79 +4CDCB7D79129ACBFD2573A884EDEAF3939E2D3D6967F1A0117A0DC6C8597FD47 +01813A0B01D60D7709BC55D5DDFCB08F53B441D7EEC6544FF96638CF1ED431EC +794A0E716F63233C0D80E8B4123F30E632AD427857EF57A6CF6A106F5382EF74 +F9088615AF05E3362609E86DC9CB58CD2F709F8196FB61FB4F82F9B1F0792B09 +D6AD2F194A9353F60EDE331B84B7704F0C797415FAC6F5DBD56D39B44A45D1DE +B6A2319784AF1B2A9573DB75B573926AFC074627FAA9E8B4BF773A802896CC96 +65B535DDA172851A2F052934E7D7D593D3E2644444F7C635179D00536099420E +CC56526A9FBCA1B2DDFC48D479DD9A928197AE138735926D72737FE8EF7D1B21 +6425B94AF20B5EE8BC00FD87705DB8DF11ADF16715177FE917C2AAE6DC1CE5EC +EBFA2BBC044398B8F85DF05D50BA8A53E97F44D6CCE9690F901A50B844416408 +91F0DA30C55BC25008122D9A08EE92A8C84F6CEACF40591E4320A114E2B62F15 +92971E5DD0613D6D323245F1DE0C5397802E88C79D9C8C7719F4A13902828BDB +34D6E8D8B68BEEF5A4AB6A4DFCD93AF6ACE8C60A16A593474CB17982F611D6B1 +3294A28699B8E8E73C27C68910AB90B2CC147944323A5F339A5844B674AD75EE +7BA8094D3BFA4FBE6D1EFBBF7603607E38B920BF9CE43E418452E4D61A6D28C1 +F91CC04699210332A1555931106ECB43AC1FE2D08882F0E9180E5924C0335693 +AA13697E9F7F1091D71360D373661CBAA631992B3B2627DA5340DC655F712572 +FD675340127A1CBEFE3656AB4009BCD1BAE64048275146C32E79F031EEC428A2 +0B786601B1B44D5BF9E464CAF224E5636B0D2D83EF07E81A545EE9A5F9A531D2 +064EC94A90714E13760440450A6ACF3DD244C32A9ED0A65C546BA46C27FD7801 +C94F5C0735A1E9E6934D30AD680799FB3A761896C9E1F1BC0422CEEDDE021770 +1837B9A79B0F8775340CE0C2A18E260F6C471E98A3C6E4AC73A148CAB6EFAB3C +E50F14240785645FEE335349C9B8D59B99FD884EA4A1C878A5AB6934511DA544 +7D009675FD5B62F999ED528C3B70D337A7D93D4D14522D1270B5C345B5ADE5ED +518AB80590221630B0E66A85B1DC67A6CDC6B3694F8EE53BF90223FD68ACF7D9 +A4106D543E16EA756EC3CF9C96FAD7E45A8966B8BBBD5B1E5E9509F2DDA57EC1 +AB2B457D495F9C8452376C11C649FE4015844D876967666AF9824AE5E3ED033C +D3DE8808897B223FB36CC42BF7867775B8B97610CAD61760B48C7F3F2DE23908 +035EA9A89551B4AC734DEFF55D121AA9D365BFE4C621AC78344A11360E042213 +EE8F7EB0EEC8BEC6C9294D22467B5D6DB1A0B0E03F371E1AE162C5DD46DD127F +F8F75142EA07F5F5E3B4848E9F4B884F0257D4FCBA87797839A716CAAF03EE52 +FF4479EB9FA912146C609AD0784C7EBC41CD480FB7B3CBA7D5BB91BEBA43B5BC +AA5E4A9CEDB68B34B4EF7A15AE58EEBD677D7D2ACB6570A569F79AA9F8C08334 +2575F0AD37AD980DECA14BD61D6D0F38DA4C8F5E4350778BE866AB63AA8260F0 +3D9105FD3738B1C5417EBC9BE27027718016DAB611E3D06529A5F9C2C0A05371 +3A7B87144805AE4E317F26B518FAC096F5A9BAA8EA45D77BE19CDD1E352FC955 +1ADDD93B080C6E95DE94CE3CC6AE60E797B09EB9FF1EA0B5C60822953F8612A5 +93923E7D7FA07A86AD52B23D3D0B88630B88D6E8C62D009DEF41CC7D95EAC8EB +B26AC8E3DCF0929016378EC4841E1C4F951059105BB7F4D9D827ABA155102A09 +0242EDC57D050CBB9A0B6C5302B1534EC041093CF0C05C0E30F0B3513F3F5356 +75E913640AE066B795197E009D880CF19ED6C92FBE4D9CD3C96C88A59F2097E3 +D9F0F923CF7537FC69D5C714DA5E53CBEF307D8BA7FEB8CAF2DC63B9B07D4556 +CF751C7AA7CB1268BEE3591838C5DA625BDD22B4748A2118B7073C7AC7A885A1 +4996A7900CE4F42B19383E12F0BFBF0862E3A539F952038E1149B57D3B92DD18 +FC33B2AEFF202D53D5212300869B57A104AD5640DDE1A5E3F1240482EA9CC7DD +A63BE8B6DB82A2FBB5DFD31E72A6CED413ABA65C6DD3674A76E547A4CC9C1C5A +504992A649C7F2AC469A9BCA5E9C84333AA74C686A863A05FB73110E466A34C1 +3E3AE5E21B912282BEDAE14864E420B05F9E2EE8B1C523B362A4237929BF2D06 +A0D398D91ADCFD021113D4489736B4D8E703D77F2BB92973874EE461E76ECFE3 +D114EEB3F611531FF20CE6310C338C6C426F2CDE535C69E3F14CBFE16F48C7E7 +7420777D9A175710174DD5E23B2BA6FFEC521907939AD66488857BE8021B385B +D6E1162BFD8BB36174E0D5C238BFD778BA5817BF31B2624429080A5B93AC98E3 +B6C5E9C792F9B1CBA7BBDF63277A28B6891DDCD36D0CF656C4F510C77AA08991 +0545717C76D2289D77C79DB34F2FF22E29AFB3F5E9B6313A2F582E4DDD2373CE +6064843D24FBC35B1A08AAD4A9B408541301166DBE585317FF2A8E15C25DA94F +5A5B9D11F5F0B1A658648C529717151A96623F590FD41908A5CA20CDC0D75D84 +6DBFD25E5D4739177AF9 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMCSC10 +%!PS-AdobeFont-1.0: CMCSC10 003.002 +%%Title: CMCSC10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMCSC10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup +/UniqueID get 5087402 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMCSC10 def +/FontBBox {14 -250 1077 750 }readonly def +/PaintType 0 def +/FontInfo 10 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMCSC10.) readonly def +/FullName (CMCSC10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/ascent 750 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 45 /hyphen put +dup 47 /slash put +dup 50 /two put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 105 /i put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 117 /u put +dup 120 /x put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 +45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 +7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 +72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E +BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 +974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 +11453BC81C443407AF41AF8A831A85A700CFC65E2181BB89566A9BDEC70EB4F2 +048A6EB631F05C014D372103E37FC3FA317EBC9973565A638403DA02E48B7D31 +CFF6C241DC5CDB470561002FF46437C06EF93BC99352DF04393C661FFFBF4BA2 +0723ABD9B3E9CA9E63BA57EFDBAE684655CBBDBA15ADAE43E1A2C98A3CF060A3 +D16AF8FE3A49B50A24C20EEED716E49AF6013D4D38CD9CC41A91C17E4D04D79D +567E1EF49110AA9C34464E95D81A730ECEB2C9AF38FBA6B45E253288438B4CB3 +DC75B3A906D4357293BA41E59C35223A6C9CBD6FF5FC90C2D07CBB376C7320FF +435A6251822BFCBB612CE630EDF826C37E95F541C21B93FCE127591D5E38165E +2B58A34AAE37712BC58B63FFD70AB80F4F24612CFD2F1466BAAF3CA2BCB45148 +D0DEA0E9B8FBA4C4FF5B8B3CB02E461355051842BD1C94F41066B9B909DB83B1 +DCDCBEF7CD00A43E4C0B8191A29600CA197F0BA227FB8309BB539D2A620BAC70 +8A1AB2DFA51ADC9873B8E5582DCD3ED154E5D727D1665F99BD89883D69E6CC2F +DB3A57AEB612171A88E22F038461DE03FC357F771675E34E90D4D19B4B36891C +9D2333960400E97494F4FC4DBCE6A73C34A0409E433BBDC0AAAEBA7D3555066E +1CFBB4515C8B573C9B9DD12ED5B6ECEBE35AD0DDEA9DB004FC6CB540B5117B49 +59CABE5FD74C6F5B6482B42C20B5FF0467D1DBD7CED2CC651CA57852B6FBB402 +A6764DB342889132C911CAA713A7F2FDD8A5E849345D6C81025E02F5B8B682BA +90CC9B467FBC37362436EA6BF8EB62D784B01D5430147945BC09D1F49EE89F2E +3E2B8E6D439248A56F82F2E03EA5C7A922F2813BE6538A3A423BEBC55B345AFB +3B3C125306749E137C647D78028AE1FBF3E1A82C260132832A9668F454D39C41 +736717DED0A99F6B11F005F0E1D07FE84713AAB4C042FDC166AA146D7B5E9198 +E4F485BE5B135EA281FF1C1E616B5AAF02771F58C5840CB5A427FF9794F93E94 +17FD799C78AED1DC4810BCEF4C6C51D3C1504EA2C6F2B29805B7ECF97B5F637D +FE92E168CB9029E90404CB54FB312FC7AA8A9F2F524C03E61F03B1E31D4F061E +1677B39D5D30C9FD4673E1723F4AE3CCF38593AD6D7F61E9DF3C010E51F25085 +35D51105E1464BA146A78D7297D4D310AD91342A0BB942034A3EC0696B467367 +3E39D202D637E6B14D0EBCA6AD3CF22B07D4CA69C0FCBB6C93782B2F0DFC5AC1 +5D8A16CB5EDB671A0C1BA9D10F63CEAFCD0E06E42C730C8EF769CCFD57937245 +658F486036D37E8BDDE5670A212FB488A8753322A5B170C9662750AA958C0BBD +8E97D8239D2A08B30416504DEEC4E506013E037C91785C674F8A6A44E23FEE6F +CCC00CC5E4D355B0871FDB8ECD64F70EE32449BB5D6F84F8C8AA2D5B1A489BA9 +D7FF2DBAA8D0B84054E93D64D3E77850A3724824914A0F821EEC3D605DD851A7 +606936B8B9E24D6E932E16C448140FE94DD96C75AECB73850035ED9C04A1D93C +64B21E7D4657E030483EC5C3554AEF8BE4D0FE5B9743B875340B09E01273DAE8 +F256C50A1A8F2E0417440A8BB0173F59E11523E1CEF2593A4AC5AF2167627B00 +C5EA97D125EB8A4BD4C372877ABF10F5B7B149D73787E0834BFB3084E9508DF7 +072DD71637019599252059738D4D6BC57A9358E4B14F6AF9C4B31DB8E25C29B3 +7A15F9953BD73ACDE5F0445A5DC406BB4635FAE51C1D8202AE31730E6F355317 +1DC197DB0B6177307C60E5D38F4487363EE051B2E609A52BC4D45B14B6558B6B +5E1618748794B8340752CDBE7756C068975B559615D4CD5A97CE30BAA7B2B1A3 +2FEF2E055232B24FD8A21BECDE1B6A479A28EC80AE2CD16DB50B30B4A6CFCF06 +491C7CD5AC29FB964D4846415233947522676DEABDA0D9535F8507D33693930C +B4E4240A02B0CE7EA288516B8A6EF908D7F8BAF9012D052C6AC96D9F8F6ADB07 +8984F3559C5E7E3022A957982155FC9CD599C74E18328D3AB46F9DD15D1C4C3F +9B93ADB4489BA02CFCF57DE6270F3AD2F8597BE71786510EF08142F430EE5568 +4F9DDB792B7C46B6135E341DBBF062FBC50FABA80CD4A384157BAE57CBEA9781 +AA4416323265168AC097DE7E30A0D4750143A4FCE70A863A31876A8FA5327C3E +36E89589E363AA2B1A6E8B09F5AEB8FFFD0396067173465B6503383DE517A6EA +88C0FC08578398C2A721E5AEB29F4AC9BC990A50CD87BD35A11F9E81F68E7B85 +5E5B95A4F9A5D30379EF90D78E1E466DEF867BAEFC4F5ED2C762BFF099C1C2B3 +5E0DA1C2FB33BE1379413CDDB1EE6BB3A495331F72F2FAEB8152E8AD5FD334A8 +AAB0082A71D5574B618EA8D487B8FAF1B445F3395B1E21224F5492A0E06F5152 +7726835C900E2E52BE3B7B654183AEDEC68053DD0AF19EF6DBC10B6FC08EC7D0 +CC0E2C8FAF8C9A4C21FB7C34E074BBA4EE64226BEC8C928A784C1BEE35B72EC8 +E9295240B29DDC2539CD118BAC38DB3917D14CD33AB45FE47E827F2A2B193AFF +53C5396C52CEA4F43F06AC2D08C74CC85D608CBA267175EC31311EE25AB48DD9 +FE811B411AE426C9FC0B6044D1EBF130231623F1566CEA4D1C06D8032FD9808A +94479C842BC41B675CF6B90113BD681F8D43F51D5016D80EDC11D7640FB950D4 +E709A46184406ED90D0892A4CD9062938A8205697A200DBE1F38EB166EFEA0EC +4FCB45CDAF82EA103DD6FDD03D146F3E42EDA6496064DB3F4FC1C5280C9E604B +D5EBCA08BF2AAC90156C11EF68137DC76502EBF216F3AF3EE30DD2676D218428 +F41C655093F8B530FCA378B5769F262A6FDB4B66B83F18F050E77227E28D71F4 +5F4425CB8D51B3DAE872CD86D7804F870BC564A6DA1CA13EDB00D131CE4F6460 +7021661B99612629DCC20C85CF155EDC5111E015A77B0B82A8FC1EBB374B7EF2 +361419BA93B857D5C9944BB5B4AEDD86ABCC261542077FE09701C96370168579 +5F89D5AAA08D700E2643E88C2FB8D1D56D37AAA9744872E7C050B4CE046B47A7 +83F224FA9FD311C955EFBF173042C8FC66524135F579B1397828870D5C9DC71F +8615FADE2A1CFAEA90F732B6C266E2F3048FC43EDA7A6B6D98E9DB793CF457B3 +F5877E7A055C92B0246FEA8C72B3B3456F93BF36E2651D32CD614C3AECC0B4BC +F824C8363E593A6458D37408FC5B09883B280005DD24123E2D4B1B85F4113327 +EEDD9186A4AF2CD6439B46C5C168C125CA80F9EE9E68906620EE126CFBF26E15 +B269838A54224EDCFE2A373EB750D4829BFA410DE5F1541E428BB1E024AF496D +F5F1C151F5A645C8622F2EF9088D57A2811868A8A8BFCDBFCE3ACB8463AC35B4 +8B6F44E1C1232805842F56FA468F81FF37D5D55B81CA56058558544C142EB3BE +07CFB1F75DECB1E48C14D6AFDD455989AA6FFE8B8DC54F462B3C20E31D270BCE +8E68E2B43A6625AC7E9792704FAAD6CE8BBE0B341DA7189EBB3E9D5375B27FD4 +12506D5BCA50AEDC6955E6C3C7BAA84BACAF7ABDF3A270C7734EC3C6EC22793B +E67B0E288F99699D38DA8B79F2D21DD97945FBDDD132A8F0BF947950D3C0B4AA +EB7B2C435AFE54489E1930610311D718AC610C21A644F34CB2D1959B3066F39B +EADEAB5CFC6AF4D191D86B02402B00D1C5262707861C5308730579795EB53207 +A291A27A8B5C4DAE0A87A0C6A260026CA3CB620E1002E066A515D7990F3DEA29 +0FAC962E0B82B7A6C86B1EDC54007822BAECED673FAAEF88C8109777EB79A53F +AF3C58546974F2F56E70E9B5CB59ACB5C27CB01895557B2D82134D7F02029B24 +3331621F38E68717F5CB68A8892D0B9C0A8ED4F8BB56E80505170D44C6856128 +2DED0254ADA4875CF56B4D97372AAE730D4C77A2940DC8C178274DF88A9EE037 +215C6FE7B9D481EE4DE809B124C0270782411ACCCF89906A8B143D0BA8B2CEDE +E9B90465C3E57A4FD9AD2702323450256ABD09A1F8C26F08480317C08B75B720 +70A161C99715A35A94DD5C9647ED0F8A5337B774C8E54F9653AC859485A1FED5 +37B725A7E4BA58711CBCDA6054E34CBD8E9F9460179DA7DBD243D81A1531FDDE +BF2BD425BD9DBE75EAA333B1F5793669A215549A774597E6ADA16D323FE5601A +EDA41092730009A99BF5B5AAE281844A6BF3292D4D4EDE36B4FD8BCAEB6EB72F +AC5D3CD53D0D621CA9EA8D254FDCB2B5161EE9E80B266563F669805A3A15271A +0753983004A1ECC7FBADF62AFEA4DAB49A178C231759857DB910668BDB07CB3F +7E8EC24901863088B3231EE3FA563924032C91CA9D68DB398F9BD9AC0C651EC8 +9051C9F709CD784F3FF5951DECD7E869ACC34B83AECDB011E6594347855EE7F5 +28811F744A4BD70D4E9077EA7EC19FFCF612689F12B34332857AE41F13E6D16A +962DB9B6AAAC167B9FBDF0068EA13412F318384134B29F3F0C399F1973A3564E +F9C3C39B5BDD4C98D81A6CB476E565860B50704BD65ABD630A5F1372F2D826F3 +3AD47C08B8AD3176A170C369EF3CEEB190134006D6135C5B8CCDBE1C11FFF1EC +3F6D8C46E15C4F5EB9ED9F31A129594D542D40DC3815CD075A0DBB648D868AF5 +15A05C4BDB28BF23653A3AD96CF6AFC065DCCCB23D5D9A945F8CBB539DD3BFA8 +DB8F1FBF9B6F25B41EB4309995CA3D5D6ABD70CBB4A2F0C6364E5439AD1045FF +72F6B45A30BD3A548CFAADDCC6C15D46F6D783D3E520215751DC98335A4ED512 +D7D19235CDF911CC69F3CF4365B678EBF3E87C456A4E77339C74930083445588 +462529C22A96A28C5CE87AFA0C981F26CAED5A1C8DBCDDA612624DBE0373F026 +465185A4D8C73CCD8D71EE97116F8F7D341B87FD78F9CCB9FBDA2A7799711607 +6BBA855AE9D5C505870DC85FDFAAA130A351D56AADBFBD6A7D52055E3200F8B7 +8AE9A00092B55DEA8BDE224B4BA7FD4A191CB1FFC4CB995FEE1AC2883AB69E1A +AFFC09AB5B9AE311A030A5BA05E2213F9BBF016C8FA80689C069314D91274B20 +53FCC65C7D7B3A7504887525BFFA060304931672A078BCD7F269595686310E34 +E1ECA868899BC402D17EC36CE40D5041D7CEDA77F7764C9D98793F5334F574DF +E93CB10A5E8ADAE95CE63D2339557091B4B4911A4987CF21B7F1DBADBC2DD605 +8EB72473C1F2EABCC44E0D0339EECB55DA74085606C3F89D57ACFBF5755A5395 +CA8D4BD47E4EE8D8B882D3AB31A1F0C62E74654C7E041E4FF2693A38A9796064 +46526B0A37E6B5BF8E48E80EDEF81E34DA8F6CC9025936A4D0E6D709D61B7B5C +AB550397117F3F9D2F5A542A64DEA8E1178F7337124D6B56BA92F659AAD694D7 +391028731E01284BFEA635314A8DA8DF7A34EA3B6B2F8803BE6DCB423A9E8015 +55EBD90EBAE8A00298B3B6B1C02BA516AF528122C1F2B07EF69F5466C2C36643 +0D665D6561705509B7582D8301AF3C32E2F3B9433E3E04D62117C7E8A368BDE1 +0D4DAA1C415B2A6573116D2A169AFEF700A83F55D88813585E89C94C07802BA8 +3AE8F9BC3CDBFD9C2E35D062B1FD6E79E1EF104FC70B0AB09D12CA027F33F85A +22F0ECBB4AD55FE8C616B82C46CE69A600E4F767BD7A9C5F9B37A3196B038384 +5DEF76A8884425FE598A63AEB19FA698C2AF7CAA4983CEC789268E22BA051EE0 +20A40633D22D8F707626ED30E8273EAAD1C065F0B2E1718B5AC853ABE09330C3 +B0082A71D557169BC1559B6D285A3499D41C4CCF1F74884EC3917EB9C574371E +AFE8578DDCA459B8D22C0188A8D150437B05FB92022C95EB6FBCC954216B5FED +CBC7C90B9A1F061376A9840FB64390A6BA99CFC8279A86A730C6DBFD14C53C4B +7277D676BD42203677E9ABEEC8C97E13DAA626474513B06F8734DD784F2FBBB9 +B3B448B8E8221E380AB4A86D3A683B86A54129519D50DD4FE63B30954D805CED +A9A5D9A39C58B65B08E1C19555E927C6DBF7FD07252B2B57F62B905D6B488201 +213D106A41033B26FFBAC2E616DA6ADA6D560BADF10E68872806CFD6F6E19D7B +57CF1F7A030A7BAD374F16A977E0ECB8742D034ADAF9C247DA19C8AEA74EF6CE +DAFD6B1DC562FD3B77E4D008BDE4D8C7FCA9895DA1AC9EAA01C32A0DA712B082 +9438E77230D38FC4153E1711417B918BA6CC03203A5FF082AF880F48518D8271 +C1121E4F1386B30A7F1BC6F10EA98443F8A65C867A109336B808BC9A8E2A75AC +F950835AA84B56F59DA4C8A18859C3B68F6B6DE09A6675F639EA9107BDB67B0F +54EBC564BC2D781B61C14363A54956BA78A2BB89C9F966C94EEFC29EE9F4E23E +C0BF750144DC289F0DEE1F8A25BB52E54F656FAFEE4BD2DA57E1306BBE648051 +1D0CFD6A23A3DF082E3CF13197BF1B7FB22B2CD427BB78F455C9634DF989DC90 +7BB2AE247B1C99AB2062855B2948341B0F857ACD750B59E370A6698C6A1F5287 +72A4A9628A592E313956C242DF8277EDD2F1FDFB07CDC104275FFBF796D7518A +DF49FF3CDEC3BDFF1D290C382F244DF18005ECDABF0C5C2C64EEC4383E2E07DC +5C82587C071E59B46B7BEF31D268F39D9B12D534344FBA515E9DE8F166FAD1E2 +7D1558967AAAD3829D3F7EC6938D20E5379F414532976ABA844D97A5E9078901 +EAE4D0ED1F4C7EE7A2D80D891A5013D6409A38ACFA497F5A169EB7F9F4890DC4 +62FA6A89EA48267331F086992B9CA9305E16611E6AEE67DCDD588A25D37F45B1 +0DE75C802EE021E574B64B3969DE2E5061ED9364B646C38D4BBA86802CA6338A +94E135D2256920EBFB1AA22D9E90C7D16853F0DF9F2D942748EE540E4FCE63C6 +5380D7AB4ADD6CB00FE8F7867E4862D8DB432F28331428CC350CDF7F447A65ED +D7683ECA35A22ADD06E9FE6BAF060913AEEE7B2B8EE4798E437698CC9EB2428E +74CE73F84D0D2292DE709D71FFF8901C3505370E6F1D4E28E6B7372492C65A88 +159371B1D60D77CEC93B272B6C5394EE1D2EF9969DB2838B8E128553879A1BA5 +2884B0A596E8FC3D1E648B7E26A4AC57DF09B9CE09B2F91D8CA618CA52AB3DBD +D005A56A420366069B73146A6F58E88BA49671A1AB7C2070C3D42AA770285143 +40AE7D7868C0E1993506B07C086AD7D4F28CE2D15853FC5FBCBF9425D8012B9E +DB6E1E5002517659C8DA69DCEACA94F368537668843D281FC11782F1C5F71977 +CA215349EE6F20565DE3D8D8212A40E1227A4B22965FA64A0B02C62BFDE97E6F +C3C54FED4057EF9D258C42D7440C78C5E0CC58A40DD74ECED4152F70A93CE71A +1B3A57C46F74A6D27BF98C97CCD31A8EA487260F224A3E40F52C65490AB4098A +7B9EEB54A5A415C8C88568F7D9EFE74BBB785FA18AA27D9201F28BBC477A20A5 +D1307AA78EB8C7CAD409AB64B29E4115E45F5FADDCC80CA74B296C4265A40614 +37F2ACD8386AC0202D6FDB6711E8CB06442F209D781E940ADDD6D881D4F8E874 +357C533115923B90138FFE31D3577C6AAE60D768970FAAB682CD0DCA3E9A9A68 +6393E4B772691C1013ADFFC90C508D51B02D2518ADCC7E79F7DE5DF9D18B8435 +6129064DD1A3995E5A6F45D78287CC10A0EAFBF47223494C5EA934B1BC2F7C53 +686C5880303F9E3ADC8B100D441D944686E1FD811C646C6DD0224F6CF55FA87F +D132EF50450879A25242A18683BD6D0266F8F333F3768D1952B0F32AA75106D8 +EC0AB703F287E847CB91FFB88CD9DA174B49171822BDE34621CF41EA772230A6 +3088F8D19CF2364A329162D39E166AC728B15800222E54C40FDA8B73C48CE82B +B2B3E7EF15157FB4510BCDD7EEBBE3FDDF708EA08540D94827AF3EA1B210446C +DEA9EE0EE9B4758863AA33FC296740F0DD9B42A45861516AAE6208F189D8CB8E +BBBDDBCC34B65A7D17B8BE932148C39084A9C71516582BCE25EBF7C1E0D84314 +45B273AF903055D53313DBD159BB698038A397AEF418B4446739318E8D273642 +095B1E04CC60718A2DC2BCD99B34202878786A58AE7C2F43D985874AB8A3F204 +4DBD4B9240EE96F0487CB687830972BF302F262C6381B2C79773EEB152B712E9 +34E8229E0B59788EB9B9FC1AC1E123751D1FF032610410F0847E6B9B9A575306 +53FC00ED82D0BDA8EB008F2380FDBA06D2F8C0210A261508BA95DD600436E0BF +5E8A00CE3C92859961557763D413E79CDD37FDB07131FDC420EF525CC0B5377F +9772D3876DBFDB57FE6275D187832F2B7A635967B201E70B532E85838ED3874B +82B36AB9EAB7DD4D2B5C4140419CA04E87316E802CC93DE6336C22FEBE80C3A5 +D43A0F808E5E6A17F7BCF812FF5EE5AC1959E07F36B24C9192E375FCA3C0A84C +1D1DD2093D4F151B9FEFBA90DB4E94A1D68E49DF5A715A5BE04E7B7D8C384D61 +5DDD71F057FEF51DE7D002AB3BFE0096C47EB3AAC7B89EEEB9E2F9CFC6BCDFD9 +A438C1097D5253E49DC0DE5B6E8F976AE8894914BF8CAB5236C8A3BB2A437CE6 +374D96AFC592F1238357817E1F2836EA763A3C0DEA2DD3F7D758BA61307C21F4 +796A18638504797DD9A5131EC48DB0D23FC9A3E069B2FECA5B36A2260C6FED2E +6EBDE3AED119EDFA96B837C56202ADF7F7747291A43CDDED6EB7DB5B9373CB78 +F6FA0B92BB2C17AD8DA549E878D8DEA681028539E5E2A223E2F9BA4CA09A6FF4 +EA195F1EAE62CC33F2282888962B9032D1C83EC4EDD832866A472426EBA6080A +75E02F39CE0421C5C06B9D593022C23D675D7BE879FCE0B20A9CBB394F9D3815 +9C847518BB8DDBF3A89D699C1FA84E704B02BC85D61ADA5E548CD8DBE269A3E7 +03626A0FEE75E116F95B5D31C73BC852C5FDCF524542BFD9D05D8EB4B2A114E0 +C2FFCE282CBD87D82C1D4E64772B0492068B139B1795E287899CED7791EF5C8F +E77391C51552FF08DAA85BC8B9896CB5C792C3E1C4D44E3CAC1EAEC02E4B986F +E5059463613DD3643F8DCE2264FA66D712A0DACCF86DDAB315393219F5EBD18E +E220AD61CE3C67664615A5F9734421152382E8EA9CBED8269ACFFC37873BA329 +20649A6F684D31BF37194952496E8B962B75B83CEDE72F0DAAB761120B710677 +F3AECF2A67F512F7C423B1DA012D0D0D44F009346C4953447950F514731830D1 +59D01BFF4511CD0257D5ECC2CC4A859E0ED92627F659547C8F137DC0F49F06D6 +02F624EEBDBC779FBECB1816A88F02B3565A9C3D42E919F755F3D80F6FAB681B +585B5A49F62581EDE1D1DF1906007A8926932FE74FA2A94B92026DE9D678EA3B +ABC3C2EE5A3757317AD5F5CD361A511F4019CAF77C46C8FFE4615CD6CFDF7F8C +8CD06F1A2DDBD3BBA03FBBF8DCC898EE71E7D19CDE66971150359310D0BB68B8 +65F3E41D34C8D063A71C27B6C0F27753A9E35D291477858E5B734D72C40C4573 +203C5529340CB56BC00EA0E02B3DB54173E6480D29D957E6735146163980F0A8 +CA4086192E6095F411939DD3FF19854F8F58B39A23D3ABA22BEAE05C4B6B6845 +98968C08559A037DE955F77359FC39249C1149BC4634D10DAABB086A23D9A37A +73A61EAB63BE3B1A8D8E76ED94E731169E892B469056757EC885D8AC4FF50E5C +1D80EFE20E40E26006953C53D765B3BCB4C5396646DB3AEF01F939BD163ADD87 +FEB1E55A73722A0866DEC922EFF8B06AFDF2FC742EB1CA422822BB378310A994 +794062BE62D5BC4D44C25655C902F4FB4FA63CE21E095E4DF3723CFE7D2D961F +10A715B194ED855942588BDA460A28F1B5D849A34D85756CC8CE874E2384AD9F +3A1C348996EA94927BCE9715A8B229C0D7FCC2C07592052796D7BAE23DF895DA +1CF991E912EAC97601FD79F35616A1F23D82647BCB49C360740CF010CA4E8ADF +97A9CAC032D12919CC167CA4C2E6C60EBB4AB87C8F2BDF71E28E91A9BC96056F +5D905902AE964E5336CFDACC8C5CFC5607D75CA5F364AB8E9A65FD372BF15FA9 +0CE1519CD7DBF31F92D2A078754E4BF90F3121F6F698DEC238404EDDD4EEA153 +0335941E4EB8F08DE0104FD8633BE277E9ED26FC65D28FC1D604D8504B2F788A +11E2206ACE8AB33D14CE9D4CFC917008D44AFA2B1877C3D42455593889867784 +7CE696EABDEF95872F065DAFEFAC253F367D47127CE76FCB85BBF0684DD1663C +876E68EC35B21593A10EA5553311880B8EF744014CD1ACFC067FDFD46978BA23 +C86FBA05CEB66E67621680BEE0ABF82364D4E3235A20033437C6B84A71FB34E6 +F8A160AC477A1302B4F98D00FDDB2A35ED9B315700669D9D8A3D254F786316AF +882CAC6555A766281A0836CD45D8CD8245CA69729260D54C11DB43032A0FAC0B +05869ED0A432CEF854FE665BACB0F780C9123B4DA1E1895F8717DDE4A58BD3FD +D214195066D4587463E839EDF667E475BC04EEDAEC41422AC9BC27C238E88318 +7DFFED5D04AAFB1F63AC651B1A4113B7CE9838ABAF75632EDA8B5EE0C8474678 +58898AD595ACD99029DC34EB4BADE834C04444941C3D8280B93951A9E8554EF9 +5F0FAA218DD8224B94807CE2D8DF7E4A5E2B28C44A551DB0708B5D6D5F000B96 +0422A8E953233296B6E5EA698921F1EEEBDF0C5CC72263663895940B4C1EA28E +E0E3AF21698D5430D6495E32E0D5F5E538EF835FBCF4A96DAD8F011B145584EF +1C33809372DF602D1FB3D80A4EAB65897F672642E4317926DF178BAB6F9851C7 +63613B3DB11FF07F9C7582592B620C7767D005D7B0C28AF2D309E6CAC222055F +2C20A58AC1B407641B483D571B9E959A3AE0DEF316EFF7A4514D5313C47AAFBE +82CC583BEB32F20E4C3A5650B58812EF357B68F26882D30A6BBEBDE64E2FD910 +AB8D974CE5C968C7D34390529F4714A9F1D2373DB1D912D418225932541FB250 +9C74346749DE9C5662B1C40437E783A78A283AD6EF43B2C111DEFBEECEB17ED7 +3630AE404B310F1148C82F4969A794D945CA5E1C18F39BB6F9C46EDC8BC3C88B +FAC2116B2338E1AF9C975ECC8474BCA351E3FDF89ED4352FF6A3D6C7EF7A7BDC +DD4B2DA9E7C77F8A6623B670963D2B9B9A80F8445E17B85194AD45E02FF10484 +85E0A700BDE9F574487F9494B424646D48999EA67D469A22B9CB72123F31EA5E +51C07370BFB1C5EDB4ADE75E7111A0116C212920F1362353BF58F33D7E8EE680 +DBF8085B46AFC40ED9FFD7AE756CB267D0F321FDB71F2DD35FBD3003E91E2758 +3DED65748BE5CD0D2D244E8FA187749FED44ED0C71056AD954FCF656DE28E70B +93A79EB4D7BD59E92911EC64EA794732A79B9908B7C6DD42C99BDF07AAA06E07 +5CD6497C489BC56B09E44D22D0FE69521A9BA20ACBFDAB8EE718625711BF479E +512FEC4A8F9EC7CF66D4CC44E2D0EA1235BF17C3D0AD6859385CECA3D4A640B0 +762D325D3A449BF7115CE8469A493C494721D6636BCB9C55ACF1D0F3489E5534 +4A76A8F3E3AD6252D8CBD3EDFDAC890A7B497286241AFE35B2261B66018A1523 +4B9FD31AE07A6CCA6B91A176BC38BC03F97D71F80270E14B83B012FA5270B7B4 +73F889DED2D4BFB24536E495F96BDF408E3840AF1567E9960A4F22F0B749749B +C156336BD7F349F2F82CE54B459462CB7C9846CC090E752DCDC871FF0873076E +8885B0AEF490DB0C9FA98A8FDF84EDFD52AB0F992EEB236A79FB8FB52718EBA6 +E0D586512F81079D468A75336540163B966670B437304F3272CF6E49252662C6 +419E8B2B14D240A1DB0CF6EF14E024F9D8C6882F865D7E007B46DB65E2E6AB1A +22C5F096B255E91CABA7C441A3149FFB4E19BA97E5D43779C2A80208E279A91E +8B8A281C079B819BBB6A5B1A62F34D59B7223D9FBB5F5E96F0D9AFEBD3CE3D57 +A4C4D2345776FCA140EA95242C8AF1EE7B93D2676209B750ABFCFC8CAF50F578 +4C364CF8BC46839A4379624D56B7B917743E9D6A284E7B315D461ED66B262413 +A9AE1741C633A92061DF92AAF78A18586CDCA41248C586F7D272378F9CA76980 +202A391CC9FD46794140F06CC75AF2F4986D690939E083CDF9B96D066B1EC8F3 +DE3B68AC8FAB84970B1A199B3F3AA5BE27ED8119F306CC5F26230C16E9D9FB31 +1EE9D3F5175E4D4D7A8A2945000C37BC73816AEDE6F2AC0F09B788C9988BA69B +82CF336482F490F05725696EB080E460FC03B3E28C1B3613C8E5FE3DEA048D97 +4AC72C9955FDE282FA8C8385B30E3A7EFE247B48B370DCB439FA721BED19AF4C +FDC3D3543A25A4E0273419B6CDD7209FB336C1542BA56257E5D31B70529C12D7 +524617868F4F3B49799322EDF504750D1BAAE307ABC4843704B64ED8AD4996B7 +5193CEA660390527734BF1448AC09998E70FF15BD70F8B6388B0A987CBC783FC +990F7A5EA016EBC024F12BC9812C7C4DD6E991DB89415A49D0B265E453732F4D +2B6BB50E995E719B00DEBE74E7D1E291A739C4EAB39B5A61763DDB65BDA6E1C9 +17C49BF1A76546BE0EDAAA17310AB2D01BDF059B066263C8FFBDA53281C882DA +E2DA35ECE5B4454C8031DBECD8675B60E54261A7D1F70560C6D8CBAB436EF058 +5A0189426AF00AD7EB43FBD13976D8D769ED2639ACBF613A308C941CDB5A632F +F76E14224909A8E7E45B9B5A47BDC9B7B3E3616AEC4DEEAF2899A59B6E144802 +534109EB0E3ECD270E417B2E9CD8D27DE637AC798ED5CCF791061297A0B218A6 +1188C03BAC8DD8DD783BBBF8C4C9AE98E8F1EFC4684CA4BEE6D533458BB229ED +4E31392DC4591DF2D2D07632EBEC0A5FA2C4508C1FD48D56EE871EAF4A84AC07 +A1E34CA2CD81ED369043998A23DD01301D41C582963F07EC3417F09ABF45844E +A74F386BA813F0AC462FE268407B9D2A8813FFCA604C342CE82493DAF631B2B3 +B6D3E9F3398761C4B958569F0D833D27973B07F9DA9D84AC512C284844C04866 +74A325E4ED894F640B8F802097B7C6C4F04BBBC8A7BC6EAECC60EBBF4E676A30 +4A5D0DE4AB45D0C913CCEEB8032D1946A35928BFB0FD76AE324E7E3CEB5B99C9 +0A0A6EBAA6F6D8E4292F9C5408D3859CFDEBFC9413032FA1A6E194C5F616A3D6 +FB0FEB8966534CCC9E6D67DFCA105E8994810D8EE414DAFC80B8A95CAFA254CA +CCAA72B84130B5E485529013A35040074072A8A63B2F4384D976BBFA0A743C5A +0A079A2CD15E598801AD121303CC37A2FD3942776FD1AA0805BED2B646D4D1CD +9DE65CB859735EDC177C5A4D1A54C3E8BE7A91BCA91AB93A9DACAC90204CC207 +8432E95B2C47654DA02EC1664566E2137860F16F798E0A1EFFC819F4304B0FE2 +AA54AFE0AF6CC26D417B0CC9E3F5F6B9BD6DDDE6A2D7FC4C840E4AEF73452D16 +241FF01413DF2125BA3563B3A49EECC8EC4D0BF06283B3C8242F362A546E71B6 +21F3C6DA63882992A14E295926387D66EA6D9F296455276D4FEF0CDC706FBC25 +57169AAF546A1BC72114A3A6DC3A1A76CE001962D771C267864A987188BF6087 +183573E3E9DED10D7023965D29F19C8950B6B9B83E680010995360E54911AAAB +44D07524518EE59F58E49485E885F56FF2CF8D30FC5779770685C305AEC4262C +B8C0C194C26F5E122DF5E4153316C971460C3B3B336C1B72 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMTT12 +%!PS-AdobeFont-1.0: CMTT12 003.002 +%%Title: CMTT12 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT12. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup +/UniqueID get 5000833 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMTT12 def +/FontBBox {-1 -234 524 695 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT12.) readonly def +/FullName (CMTT12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 45 /hyphen put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 108 /l put +dup 110 /n put +dup 111 /o put +dup 115 /s put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 +5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 +8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 +EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C +02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D +46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A +4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0 +7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3 +A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3 +4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C +A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251 +75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0 +9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507 +098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02 +ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581 +DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B +5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2 +F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914 +2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4 +E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21 +C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23 +42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D +4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068 +95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9 +830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305FBE5 +5925388A2E95AE46E8806E0F7B954D1A9F70EE29B069A9FEB0349298CE5311BB +CAB039C21AEB714781BBCDBF2FFCBE7C4750D7693ED142ED0475EE9DB5D5F94F +4D4613E2C379E494464447C4167C625D70B9DBE4756DEF299974B704A3C238DC +FCD3AD96645559ACA5056F7FD695D2AA709960E30F055ADBDCC7FDF641920A9F +A279AAB98424E76D01937F9CFE3CF4E3779650D7C2DC38AB27FB81EB16C19B13 +D47E0AC60C83641CCC1A00136625FE274C6AC706B516CBF14C54000BC2B7BD20 +A28D40FCD6D9B321855BDA608E23BD365208DAB23983C0D8A7C9DDC28ED62216 +12A20A3068D843B5FA016B8C6B9BBD36356BF85A128F96F0CE861FB9C998BB21 +E8624E3DE453C686D41DA7B72ABD919C5BE2F24440D11962C77742A8C0115A72 +9E974E71247FCD58318A4347813D4D5A73CF882A7513E2EFE05CE8C7195BDDC7 +DF250B59AD14D02D2991E2D0CF2D0022EF52D78F043D6D7FEEC3E77B6982B1C0 +8CE51E4D3C8342C08ABD84EFCC8239883D8E66CB0FB0BFE8699155B179CCD63E +884C502F7F0496A01360C67D7A9BFC8533346485646AF058A743472B3276FB96 +EC4C82188A4A67763ABCE6AF7898C3B924A01118DCE34C77F22E62BB4C4CB561 +75C93226142D43D5ECB9F43C3A275A52F9E5AE4C9BB9E614082AAEAC5E7453DE +B3F71F9FB747033E227E84E853E75E79771B71495CACE8F911329274CE752AFC +46C993132BA8CF6B9DA2CFC11A0BD57C9A4BC11B7A6D68A4C346D9768E6A6204 +4227F51932162DA350878EF80D0F4084C82CC61F3223010D771EBE7DEC1B80CF +327393AAD4C689BF6A791CA2925878C51069C4F06ABFA42B66860082301FCA71 +EA52BED540116A9B12D9741A4C078F207F92B78923C7965A47A3130CCAEF480F +6B4AD58077FBECC4F99F53BC1F4F24CF3777182A7ADC32FE3260C774E5244912 +470697609A0726EECB72390E6C5C5A1204521D45316989E3C0B4D398958D4363 +3C7A4524B500241161C55C4D8C4CB06034BD825AA2CF2A6895BB9A30BFF00422 +553E4346A53B271C70DE5D0A5AEB92F81CAC1A0E75E47229AA80C8DB09EE3B19 +6E9D3EC0E7ECAB7B879C652282A376C52E5BBF5D4BAF051A0A995460B7F427E9 +521743E74783312E8D7100DE1F31C1C7C85DA33D8D0A626E6E6184DDD538EA7F +46D50247225E036DB3E6072395C88026D429659DFCFC6416D22A9BE285EEA910 +F7B1B74275B8B043721A829F2D4FE6140E5AFB78F0CFCC27FF27ACE773131462 +48B271781695D31C909FED024B2F3220C206B63601A1B02DBBE2C5D94D027982 +F9E7EA6D4B0A812D28855CF62D372A040F138069F7C28BE3344262EA72795CAC +2CC8E21D1A666ABFED384875FD2D098066FF0CD902AD6725AECFE61B2CD83860 +82E587B8893F5E09B155EBD813030499E534C050D6902E5F8BA296030512ACCE +BF19933ECDDA6DAAA1848686DAC81EC429CA7AB1A73B7DFEC0750B404F601F1E +6755F07C0784A56E403C5962905E9147E44E8042C3858E4A91F7B8A71143263C +21DC47E481DF1A38EC4A9F682FE059FE80F257576FEF3A3300A36BC27273152A +78019783D0BC34AB29353EDAEDF48FF6C5DC27C1633CE1CE2C03509992549B87 +75AE1100939A6A2F5AA2BC7C534357687DA72129B9C9F2E511BD95452F10DF8C +A698CEE0BCAF726111B63C4838F05AC5B2EB43D04115145CDBF2EDCC1EFAB612 +5E35EF5CCC5F4296536DC96F1326B86C65DE657BA06E5B97BB7C4F8ED11DF9CD +969FA4302F06A5D43B48D40D3DE360F6A7B8F329022CF5B13A33980E8BE54325 +17FE37C9D78E73A74B5734231ADF0594A2E5F2DAD9BCB682A0F5C59507032DE3 +AD0C62E50C258F1F820ADF788D6611CBE6D1988D09D07F8813D6A3EDEBE034C8 +05F7EDC5DD2E4C15B60FE9284E267C8F7DF53F3CC13C131201DE819049324E53 +499FE93874A92EF07AD0121B8FDA88F7D60DE52E2B20AF958A77421F221F8B29 +B2188307F484E1832988059E5A68C52AA7E840D805E646F17DFFDCE1A2A8C0B5 +2CF6F218A06EE1E2543461030E9697624B086FC6619205C04230CC8DADA60721 +F5C4622673ACA45BEABBE3941E7F40080D652567DED98AA3404A4384DA3006A4 +E8A9298AC3FEF04C92A273 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: SFRM1095 +%!FontType1-1.0: SFRM1095 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecrm1095, tcrm1095, larm1095, lbrm1095, lcrm1095, rxrm1095. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Roman) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch false def +/Weight (Medium) def +end readonly def +/FontName /SFRM1095 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-188 -320 1445 942}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E48759F33528B839DFD4B92DF0482493852D12053A7904 +BF6E144B9488970F220C299E80886366662C1276120E72472BF84082B9EEC729 +F7007ECDC5A850C88810EA679DABE81714004E65D938DA9ABDF29C949A52EF02 +EDA8451563235D51286E9133FFC7A27067DF0332ED614AC2D4FAB88EC84E6CB9 +FAB41C933E84B88097BA8742BC30A81416D1CAA3545F08E2554B28362B99B79E +FC42281922B94604AABAF5F7A9B8E2D9A4358F38F2382EF9544B859D098DF243 +034CC475CEDEBF0EDD0A60C907127BB32F7D85A62A44E90B4056D9B4B2FF3A49 +786032C6B25794E2C0003C7852C6B0688351FBFC43300FB0B72880BB7B58BB61 +3D1064E7D4DDB128A9B38EF7510B7E5F82BDE39489E2D1DF08816781B13836E4 +89390F84577F31776FE43A5F94F817A4AA4A698AA4AE84B178FCB65F1B5A5CE1 +334417595F6E40849041565BAA497F6E4B8F4305D849128C9A26A98B909EABE9 +8F2659189ED27C588ADC7C744712B4D9AD0C5DD25D1233E979DE7F53C5F1C47C +E9DF254086E5EC70EBC6B7E080060BA72F15E6BB75C75011B15B7ABB6BF761DD +428FF1BD688938C75BEABA7DEE2AF49364D2E198FDC7F8FA2313BBE598ED3703 +7ECAAA4670BE3A85C693ACA829A5936778BCDCDB38A5981D4CAC8994E2B2F086 +26D8793AC1393D49A8F2FE391F0EF8899F63CFA5A77BC739C867C6CFB9A226B4 +620AED34573F068052604331B7E8E1F0C3BC0BD7DF733F056DB8C3F57E3035BB +EC82DF5B511453A952D429AC721A4F94D5C9BA5B83545948643D0596F4C6C9C5 +796BEC7B26EB9D729F337E0FDFA91E5955585C330D0C4F193FAC870A28CE054C +8942BDA170717B7AE9927C936DF0076507F55CA2979BADD3EFACC0A599933EB6 +F148BB7C3D61066CCC93A5856D253D759F30E37534743210743F0D53F58D0B45 +463F053E19A16E5A1B111915D1E664802F8C6C3ACA0F1BFCF3E209D1FD6C79D1 +5D867E142AD6E69933768274F4E2AB57CC518AD5A1C120887EEDDDF18C291BE7 +B3DB17E8FDB124B11B6142DC60F560DDD668D700614732F3FBAC4637B9F41361 +54CD2D8757A9D9BEDD1EC72FDAAED3CE4A1144F1E919FDB952BA7CA1E3D31C3E +9E434E2E44E7A83AE3480EBE89E0881584045E4AA5814897382EEE5FB5C9410C +2DC7A2136551DE2AA713487A77B911A7E7AEE41F0BEA1FDAC1950473B1394479 +513741DE60091BFB9751C780D99F2DADD5AD8283DC9CD1C81B902C9F3C9C3EB9 +55608E09D6DD423540BCF72394A24F81135C9D9063C0F4441BFE0120E03558D3 +4A16744457EC281AB2A60432C97DEDD16B2F1FF4C1A90D72D46C9F9BE984C6E3 +E239F98B59A938C2A6490889B437CFC21D923572530E41B7567A9C7E2464DB2B +18FAF3EB7CBFE7BED6E77219C0366A7D54D469CE3FF62E75FCA2ED6A46F3E5C4 +489992EE1A42C19DA52F0CB2B1A6956BB3F1767B97FDF225685FF7C9E9243497 +144D31ECF634CABABB79E323CFD483BD7A7B0C2679A9C3DFF0D44F09F084CF3E +886CBC91C5386A266730CE2AF3863534E2450583F6ABB520C27C4EFEA01EBC8A +F019D25B7BDB40CD6712D7DF2DEBF0BC70A92D3B64D1FDF723DBF3D4AE939E96 +D93646BAAE0BC57BB244AAF47ADE59A5228F057192D917E2BBBF588335E09095 +1CD4AA406C1D10C8EE6812DA676A8FD166461064BE4150CB95C41FC055FF8FA1 +89A4BAACB0B978A58EDDDB0CBEBF6566D47CC0AFC93110751B59EA33AB5D6EAB +0DB9A65CB16A053495F06B0D49A70BA8A7826EB571B8428AFE5EBB99AB9B56C6 +F69DCC77C25BBBB53FF25C5DB5CB8E742E3C0BFC25098B4CAEF12D299C886881 +0D4EB71D637BC0CD4D63BD6B4F5FEF9B083D95C34FB9E7BC9FCCAC0B9C7D8AB1 +1816B17AFBFE1DA146662723887E435E17AD2E2315AD800EBEE700B3C12B50EF +4A48C2839AB4BB367E908F59BB5AB88635C3E1B89948BE9F32EFEDC2E439CC79 +BD9754280477F7C982850438092D309C213D70F8D476728119E8FA03762C22B8 +89AC2A2A7C0BEBB0C91CAA95BCCDF91AA918766C82A978B7313870327F89107E +11A44FF02F597C8D4B085F6D7A098233ADADA521CDF34A78081F8965DCA615FB +55DB12C1E3459E49C273ABD2663B13447365C9C1C52E192282E96049FD58506F +FBC9507DDD77014C29275D1352CD5FC765853E858A5781F2DA41360D32FB5A54 +D04E088FD99F8C01DF740E587AACB0E431E03E170CBDA9FF1FCDE8D9FF5E43A5 +73166AF5990B238122AB322F709FEF2F0E2FA7C04FBB62C5383997BC9CFAC8EE +3FAD26E788DB37ECB388CD80A7D861AA9E9199E7BD065BD7A4D21A0D56DA9323 +2AFAE158CBB662283EA7310D32FB5A54D04E088FD99F8C01DF7535A5156B8344 +F1CCDE84A46AB2CC7F0CFD113074A1C4D90758EE58F61589051A0150121A7BAB +A636171E6814A1398DCB9F13FE9B11ED5A5F2EEAC14E0C831B2540D10BC0EDAE +833A83965A33180B0AEA361848DF8FE8E50DF6856F1D10C8EE6BB5198CFB7607 +B6B044160CBE8D4CFF067DF3579918B19B9128C2A83512FC0567CF47B38961BD +CC60FB8C6330A30AFEA9B276DA89313D6A83343298F34461B13C382575BE392E +F94E3EA3004D6D37C025DA3F1846E41606DD510D2C7D0BE9DD194E46BE7CAAF7 +A60D496CE85D2393457C50B2D586E010C7C4C7272F496F0CED0084EA956455F6 +2EE57D13B6485B968190360A3E30210D2664BF91C73AD1A811651CAC09A9DC0E +3A328E1DCA16082699B41A3D533703E58E366E871C982F262478E41DA3483028 +6BDBF03E444C6F0F4DA2CE9AB049F324F887732D21C4BF9C5365C603C9971CFA +7E45249203329FB9B4054B163C166E1322DED12CAAE39E289C126301D25076D0 +2FD409FABA5247D7A25945AD5881E18C2DAEC09606228CF925557DDFA155400F +8D446CFB8AD19704B6C544CFCE47ACCB854A74DEB5C646318679DD738987F800 +96844722729076811B5054DA998F9AEBE37DE5068418F41A007E645599C0BC21 +8363573C695B3F68111CE4A6199C8BD40D61E46A153C3C25D0C7DC125415D125 +D0C6130BB6B603ED78153E0CFE7384F7481FD4EDA141C27898B3636398EFBBC1 +9E81060816655B2F7052016A4C72A6A1CDB83BCCB2EB475A9BE17EB08A5ADA04 +CA8AACF6FE68BBDE580243B111BE76EC06E70CB7751A8B206143D0134BF52670 +BB3F44DD8AA7D26283A483CB46286EE0A9BB4FDB0337342BBF362C236C30A120 +D85812760265E3B283F48C05E78F47CF5C678F54658A30EBD7AAD5840F3C7B9E +21D8CA390CFD164792FF2040E07FA087FDA110A93430C7FAD65C951AEEF79D91 +FC25EC950E250511BB22156C2886A249CD442575934D385554B2B4534AC28C31 +43A657DC937CFAF3F6C87EF4F2826BB02C41DB634D91B70BCCC4F83F4C32796F +C5664490597DA5F2CAC7C0013B18373EF51520DFE081F95E0C1693D02E39AA2B +E356FD312C233285B2A8C8C337504C1EA7E9E1F6BD250B5874842F68C92DA11D +F74E6068495709EDCC6E4BB3A96AA3A4C89411FF06B66DA03FCBB052CF5DE837 +4834FDB84E2248DBC10CD7454636E97E399A7AC5A16A2191D763AFC09588F5EE +57E80130CBDAF18FE2F530BDBD2CFC21D684AF84A8CA37BF2258C80CA61485BB +27EFEBB52E5FDDA77E57AC8EEB3811BE2BC948A926FBBBAE974D9CE89333C945 +A9DFE37E5F34BA68EE97019BDBDAC7482826B8F71EC51A777B64C52B1C37326D +1172F83F6E4DF93B37E66CDD6344810758B10B2EA8C68918DBDBC72F8821F1E1 +96AB78288A2E00C2E03FA05640009DD0EB0D0D318C6A726DE5D8F2B1B035C658 +D09053A4B27B18F18BE4396C900A730908D832F3E8A21C36E32F2D603D0263C0 +8EADB43290CC59C43AD57D357057B13C9ABE55F11DAAA8D78574C430939CEF9E +FB36B462DA71CFB6E86C72ACAA04D5FE4732AC386F52D4AC92C47F9B11FC32E5 +B188AF2890EE3786AE2772D2FBC5D75A7FC59B0519F32D930B71AAEC8B88F1F5 +DCBACC2CBB9951DCC8F21A26F197A309C26ABBC4C25E3FF22B2A511A96F0BFF1 +2BD9AA37DA5DDDF261EAB0E48C62DE0885B8D074A7642D59C8E216B5F0A8B327 +1794E0BA5B672E41832562DE119AC5DA1AFB74AA66885ADB605AF60B44C1D904 +EF85F00E1F143A19DAC00F751E77EE62D394ACD26B463F7C7EBE4EFD40DD93F8 +81C2956C4250F5F28207671D7AFB3AC09FDD0126533384CF1B2004F31E053135 +44EDCAD0114140E52B7E153C354CF3F2BF37A15E2D19A2ED688710B6F9F83C5B +BA14795934112F7963FFD217F016DE82353B915549CECBDF7BDFC6FA4F7B74BE +E202170C9F25C7448970684BC555C8390E34A5098F55E0B003B841CAE775D48C +1603730AF8C091C0622640AC5A0B46757165B44F0AE1EC1072DA26A8EE0DA335 +A6BC8AF994F5508921F3D9E4E09B375A58ACBB9E6B0448903E19A5CF2A51F619 +81D2A539A4556B9C25722D4DFAAB480586C90874DCDFC2D70716B18572557BE9 +E9CAB7F5A3959D5419DD9FEC22D015EBB5D4BB5CABE110D76E8A76D6EF3513DB +5C23D3AE05BEFA77BF6B4ED5C413E8DB87B5ABD1B2FA9B3BF37A81C784ABC42B +1FEFDE6DF012974241B33B67AA67FA38798336F7354F0984D612DBB455D0662B +C8F15F12DA07E391480C1A150213ABBBB0F2927D223D5752B69C930053655C34 +FC487DD271A8AF594F457F6A083C4150686FBCBD60832E4E7D0D4987CAE5484B +CA81A230A21F9C49DFBEB24C94C93ADC954B9B3B3EC484C502BD0DFD605F6D5E +13158237535FA2EADA044ADCC1E1AD42918C8C67320F6621369C250D5335FC05 +AFEA1B294EA5D2A6F335FADB80CB26FCE9EBC0A4EBF72DD47806EBA23C3BCD77 +7F175E2041EA03E2F0B2BD2B81E9A6DD43BA3486375883C30B8606D917C678B6 +6E567A92A0E0DE89BEE5E5AC45C9202D46EED5E045302B71EABAC5FD997A9A7D +8F522B2CA316B7FDF16CE4981DBC25E4E2FCE3981324B16A18236476FE242584 +AE70C683199B7647325D295528EB7CB15A7E3940FE2D248945015E9DEEB9EB26 +7012041740F5A2A6C7DB7B2358EBC0358E9385E734D208957ADFC7DEF83F5E5F +4EDE55E2F078E994312214EEAF63F8D0B481C3D523E712901AD838AF2D840055 +E57D34F8FDD4C842D64D3D94B1CA46CEADF497A2FC75A45AC59F8696DE49672E +E33773AEB31A204F01793262E820E813949115DB90A7C798BDDEA0D5D1E699ED +753593F2B6373BD24D4647CF35A448037ED5E72DF3175DD6744ABAA0E2E0864A +2F4EFF3B07B035520A598CDF1AA97D7DC3057414513DDDDE40C2A9DEFB23631C +B2291ECEEF4D18652CEA451BB1559C0743FE3205BFB6711F1026A613D244BB07 +DB3830F07F32EA637775BCC1B2CEF0C6B0D119AF6CCA17DB1B03AB1E9281C568 +33502239B067013D261BBF33358AAB8803C451B2F570EC34BBA052170AB42F95 +F9386DA11A2C7BB9C05E8C9FDC96111549EAC90DFD8DC906C03F0281C40EC1BF +EB6B15455CF32FCE5C7DF6F55C91132223FD13FBD62A787EB15CF3E4E6E59AB7 +A529DA186B178CC6E8A4D876794527F3AD72FA86B7C2BAE14D3E5A41D8F90754 +AA28185D92C9ECBBDE4EE53E2BBDF05AB4C9700C1367B3D81FFC1AA34A79CEC1 +1CA7D422CB58C8E21870F680E48EB1B2D5A30D974A7E9B24DE13958976C76225 +45415635E32FF316DC4A69B3CD5EFC6EF5F845C8E24C92166C9076691817FA6E +AA5D1F1CE12235DEA3902F3C355CBDA5CC344376A5394AAA7C2CB50BCF32DB50 +4B6D9BED63F0A8928C0C06829558B714FD54F355501EEBE29882185A6CA1703F +6AE65F03CB07406324CCDF00093EBC76627A11A84B5EDB688D20DF49616D8D3F +7491719761E7627CF8FDCFC0DD2265160BEB33ADBE3AD01E7464370E3E0F9D45 +51FC9A87C678EAE5B16A564333DB11687FCB4D1D82C75A2F551FB4F940E0C71D +74CFDDA0974D787BE959B2B87FE13DC290C53819DBDC2081CCD16F34F0A61AF4 +3CF53914B713820BF8F2243C0679345EFD56307165AEDF16E3BC771EFBFF595E +C6B1DB8B028342D5DA1E8CF3FF4269126B48BDDE9BEEF7896CBA70EC77063CFB +0EB3C6FF697509736BCACAA7F03C4C326875396F0499B198DAF7842384C36C2F +36B17A65A1D9FB77649DD78499592C817679F344E0B88D80B8D78EEF9EC6A9FF +41F4D635520B2269035CEDDCB3B5518D63DEBAD4F365A70533AE119F11323AB2 +EF07047536DA6370C07B2215C3A82BFDB44DA593C6B3A33BACC38A105BEA2109 +06DC63737E3EB362A122FE90CE8EF37B9C73FA6933BF27C39EBDE137F15AC495 +7F58F6549759FFD86C2BD3A09490AB47B60E204B16910AFB0C18E4F2361AA033 +9BE5EF972F4B52F18548E3CB947F083768C7254FC019CBD8C4DE7E01DFA456A1 +065EF834C7B146FD395ADBB9FB72B8EABF58EE9E2B2276C87FB83CEAD49BBA55 +7DA56ECA50BE1AE4819EA3C72DBE30F363D43C75287945B0DE47D1FF0283C494 +EA65527E8708279B3B2437BF1CA2456E260020E4FC0A85BA18562CDB8261FDBE +0B928EF40F0DD40E215B8BBD40BB5B5DCF2FD9AB4D5AF64F82EC77BFF8C37BE3 +74BB9B2E44C819E84CE2C634D55A9EEB4F6DA28025C3831B601AD254108178F3 +3EC068E78ED8C72AFC5C3BE0BFE17F31A23B55E7158FFC40381F36DFEB6612EF +33A54D2004D92F0A44B3468DBAC0ED5E34F70561F5E77DA369754685B7F6B04F +233454A59AFDF45F28383B05B6120717744B58D2A96BA706CC9317B5E7FD0848 +56665EB38E31C7F8C87B0C65041A5D2E349CB4264523AABF9C10CA95CDD3BE1D +9923C1A11D046FFC2E82A09E36ED0146978DC383AC6D70EABB20327360CF7EE1 +DC4DE736760F5CF3B47F7BA082DCBF881ED8DEBC1A4580C287418295CFEBFB01 +51B09DFC98C8A8C9C5F9AAA6971CA95D96A23166E5931F7E464B288F4E357112 +4111BB33FB7F0E042448478D3ED7AAEA57D1B0B4E237F919152F8D9E86229BFC +B8D59BF9FB9E0062A3ED67A367669D0F2F8EFEB2219E5FFE7400A9DC725ADA62 +706D4D1860BC04D4432F49D7F4271376678D381B148D72DAD9012173FF3779A1 +7C4D92B28D3117888C864440902499FF0F9BEAB0C83FBD788E26B0BA47484188 +FC01B0349E045421E7D912E1BD329A536F61169344F16D65F6B90DB87E22F72D +8E6F486F8D21E6DAE282C35A2723464F560CAD8B31A931CCA7A2FDB9530769FC +BE0A5F66F1D4DBC0EAF834D078CFAFA415F43DC87AC62A1D8913334016B3FF37 +20902A7E5644848A57346228A13D7B1C757DFA9B5FC4E9E1DCB2C2AA2FD37386 +87E6B350662256D158D8C7DCD2F7AB1E02D6C5C8E3ECB1C6055A6C0B807B8FF7 +997E562EDBEDF7646B64165A55DED91178BF13FD30ADC1A6B6D621B1A7AEE1F4 +2E30D49CF3BD0656F584CECE76A17151913D7ADB223727B47EB3D7F491385112 +D36848973526DDAD7C1C1C0FB672EC627172D10DD33ADF2445483470F28AF65F +29CB086189B3FFA31E0CDA710B6DE2B0EE515A46A3FCFC354AF01AF5C5D0B301 +C8FDEADC6DB9D492554777965E2751A715F8FFB6E0248AC51928DD65CA4F6574 +BB1E01B3ED95D736691EBEA8ADFCD8265F128A67C372720840A206056F66A7A4 +10E1722E4C1BDEA8C980250F9E034C29FE0F7D2F5DAACAE3173C865CA9C4C240 +49B6D4D0CD90B75D3BC68B8C84605923075A9A2D5D6F7008365E52796975CCA5 +02770D168EAF28C337D45762A08817666907C68142CFAB9D75C4F6D6A73FB4C0 +748F038F140CB009A24A80270037C9B5E514E04AEAD7CA8468C4D22E1059F2D2 +EA0E7CA2979C7066F1629B49FDB893DBECF6620FF9C48132297E81F717820A90 +BDB45E16CA1D0D9C152B12D50AF4E1B2519FBB2B779218C5E42E31FDF82448E3 +5AFC5F90AA018902EFFC4D5A14D4326911F7055F9B7AC5B592E2E2D3A198E2C7 +F476CB49DBA0FFB2CAAF494DAD087639203084CEA25DED422E0F8A30634FF1DF +EE5C61FEEC33D547A17961534B3535AA673AE15F560DDFF08EA7AC126882B57F +A1AE8A5313E6D21F67FB6D16AD32690FCE021616D0DB89C51001090A4A7FB515 +139B751F6137DFEA833004F4689474DE3A8FF64D98EF09D25802C3B35DD2DED9 +FB5300E4F50E5CC70FAD3A21917D15D5DAAFE30DC1CCF79A359B81AA3F21359D +297B9795636C03E483A80D47A4826930854329FAC093193AEE3A19BA91063421 +988EA0ACD987862A716C42F071140254B72AC91B91911CD6A9D275FD7F6636B7 +4B1B0A47FD39120411E1D5442E711A6C1EB0741C67B0A44C1A2F98C9FF245A9D +5AE4A04B529CC5FDBABB1C6E8C1590B3CE658EB77B58F4D04803DC351C5645D0 +4DB49D76906E068C3FB553AE91FDFF5F22F734DC4BF8E9D019B06D3A1BB7CDCE +9101E9D2276CCACFB36B9EC74AD213BCE896FAC45D08EBE43E676816DDA135EA +8B78003042DA8581975D4C14CBDECE0B027AE87DF28611F387E64B951812C848 +B661FCC0DF91B39DEF14976D7D00609DE2DB8195C186E376F4029CBACE3AF24D +AABB788FB1AC87D58BF341F95EC2DBD14BFF27D3DAD9A06569FD4EEE40C516AC +D809E761BFCA049DCD6F8E43E60A0BFE64BCB922D1989CC14EAC1987147A5559 +4F1CA14635DF029AC387BE36036BAEA8AE7DD09D090EBE271FE59FD806894A72 +61C714D6D08322726CAAF168C08CE31F26CDF6613C06CC50DBD59B70DA211B44 +1BFA22AD62D56AD098FFB998E25FABBD89A2C17EB7A3AE81F79C05AA4677D744 +7F412484C16CFB322FABEACF98AF9F152E3217D0F2593D6863E7872C5B6F82BB +FDFD09B13FA639680E972DC7B086D7DAAB076CF346814556119BDFBDC3A16374 +E7B92CE50B3BEE8B7C26856BDD3C2ED98337C2B877ED5EE4878C50F06A64F750 +E9C8CA83B7FE6C91E10FA717CCEC0D2F8E21CB5A2367B5C90A81897B6973FAD7 +D4D95F6BEDE4E1EBE6D852A937D5D814AA6BA62324C08AC12FC09C5037588F7B +1B043BC503D725EC657F47DE02CBA939ECD8418F4B7C705EDA3E9AF1E623A989 +074165DB0DDD59B7ECF513C714B7D0A1013E4E3F2B071F6A6DB89B7BBC2774B8 +87ADA7C572B0AA702156B715159829BA38A9EC28E1CF3494B0CEC876A97B4617 +2CC9162F204C36850CA9188B0B97300CDB1AB4F57B55D39BC539BFA5047B032F +02A88CDF11D098FD30F6A6B82B98AB9D288570FE18E4E6A707179D96287D438F +2D5D3C2305C5FAF075E0979EAB1DB645AD9DC87A621219C260FF67C2DB8D541F +8BE9E20ACDCF64C4C721AEF5B2B65761D0310CEF36B1A3E57092DEFB978A43F8 +B553169F523517518CA0618E31F9A5940EDA42D8B9D851AD1E77BC1C0C8EED23 +F469B0568B5A556A5FD5A20F5F4E00FA6F030ECC5E711865F1549E409792F7DA +D1FFD1BE1E6DD22619163B98EB0425319E738254ADA0AE57FE29E121B0D8F172 +DD717E0B59842BE9F6B37FEC3F1BBECE15664851EDA3DA3A1848191C38F2CF60 +7A262D4440322C26150C605AADAD4EC3EF0CA22D6A2F63BE63C9C08EA643B68B +9C88ED95D2F2F0868CC40278DC2752A1E61C793FB87EE69A6D348F98A0174B09 +5AE09E214EDA066174A6823347B831ADF2619281E43A71D549FE194D5AD4ED5B +1DE112CA90BB9D92C57FC3D89F1A57F7CEF2ACE8E944B8B725557F567D9DFC72 +3D28B0E11DA3F81633C042B5FD05513542A2B431B3744E2E9581ED828F5F8A8A +C600F526EA874274FEB94E64F0AD787F47C98899DAA4552E447D4B97B3774334 +8DF26A38D7CD36EA79B64CB31DB0302BFD0DD2280E10FFDEF59E2D1F6452FB09 +E2A7015523BC1A46AC2F816135FD4EC198D30E95203ECD2623E83FFC1436FF74 +068CFF87C1ABDE2D31AD1FEEE6031D889A25B9F2C05036F16BBDC143705545D8 +4D14A2467639644AFF1D239BB08AA769BB5476DD4FE9974DC01E85C02F82958C +12C3AAE071BF1E57C358F72290F15A2655C1C79DB5E5264133AD0139F9F9B540 +972A3FD82BF0377FDB8711A746B9F4C6016172C30CB33CEC0B327DA0DE2668BB +CD41 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX12 +%!PS-AdobeFont-1.0: CMBX12 003.002 +%%Title: CMBX12 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMBX12. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup +/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMBX12 def +/FontBBox {-53 -251 1139 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX12.) readonly def +/FullName (CMBX12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 11 /ff put +dup 12 /fi put +dup 33 /exclam put +dup 35 /numbersign put +dup 36 /dollar put +dup 42 /asterisk put +dup 44 /comma put +dup 45 /hyphen put +dup 46 /period put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 54 /six put +dup 55 /seven put +dup 56 /eight put +dup 57 /nine put +dup 58 /colon put +dup 63 /question put +dup 64 /at put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 74 /J put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 81 /Q put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 88 /X put +dup 89 /Y put +dup 91 /bracketleft put +dup 93 /bracketright put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 123 /endash put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE +0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D +2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608 +1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C +42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557 +FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE +78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18 +22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE +A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811 +4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065 +4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7 +95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D +9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC +5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF +9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3 +CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511 +BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65 +9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68 +EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A +D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE +2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE +947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B +0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6 +4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C +BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2 +F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4 +6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514 +D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415 +F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8 +481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24 +FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D +419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6 +7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B +70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988 +2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE +0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC +9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A +C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D +1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2 +A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969 +21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530 +7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198 +17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60 +30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F +3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257 +96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3 +B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950 +1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B +57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE +B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC +8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91 +8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59 +B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E +BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC +21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91 +D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4 +FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F +A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4 +A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082 +A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA +DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38 +7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F +07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9 +BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E +8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89 +E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C +B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5 +45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67 +2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5 +5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF +A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28 +5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975 +E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01 +5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94 +6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30 +8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB +BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6 +9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB +B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B +B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E +8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD +595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E +FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15 +13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A +FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3 +DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB +313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248 +C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89 +F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD +DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844 +8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753 +E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197 +A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3 +C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20 +417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43 +19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4 +9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85 +12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83 +3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1 +A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68 +90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94 +3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5 +B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B +82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550 +1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94 +AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D +9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985 +2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5 +99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A +31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414 +3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86 +F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5 +70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E +5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891 +84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978 +BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047 +8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7 +5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7 +9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B +F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E +94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE +0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC +E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4 +7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581 +596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442 +F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E +7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1 +1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785 +AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE +4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F +744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D +67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA +054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA +6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B +8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE +CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39 +EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4 +C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76 +57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5 +5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F +C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1 +CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2 +848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C +B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB +77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28 +87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58 +3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8 +409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7 +A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B +72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D +99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD +8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB +E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C +82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3 +C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0 +EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634 +23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A +59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F +C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0 +1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C +403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90 +1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893 +75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E +0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35 +82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25 +C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8 +A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC +9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06 +0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C +5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060 +62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D +6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E +1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5 +648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1 +FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6 +754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A +E124929876488AFA97FAD262BE3D172E2F03F564F1325C9F1E050C83C12E0CE3 +C7F58270B5C40B46B3F592FB41FFB7F59EBD69B2F489441E398FEF7F84C85055 +531D95FD21629B0E509C2FCEE995D025BAD5D3F28CDBA5CD414405ACBD936C3F +AA4CB2620D7426002161F983AE95E542EB8553AFF7E57B82E05FDD5FC433E1DB +BBCFFB1ED92299DB0291CAB10A84529B7FE279C62628A24A2FC36B01976E13A9 +C528A198B8EC8654AD69CCB5C209964A2B25D6DA9BA0FFB366D19D8C69701D7E +8ECBEA88569601C80ACCC2D5487DDBDC27DC463A53A8E59F9EC17D0ECB7D2188 +B6CEC6BBCEE631DBB9959A9855B997481B5D88B8BA29995053CF42C5518A3E8C +AD21553A0F6BC3483624B013D3537F7C85D7C558A9C772554CFC1C3FE7A70633 +318A99508F5D2FB656B5A91E94F80F74C7472F507428AADC375AB9F18CCED8EE +9DD57456CA8DB8D3B133596CFF2D510746BFA00B23F4001A3D0E8A24476C497F +A14422160995F3378EC9A74A5D72D776BF8BF91146E73518E61C94AC5C7ACEE7 +783E29B29962E638F75366A0C0235475327F024CC6C824A52A6C25E669546A39 +C3459E06945AF250269C9F7B541B1EDA04DF9B9C7B442CC7484595E7B1A860C2 +EE36E1F845BC6E79C445E11925A881A0D3A9849030954BC5FBFED8D254AB3307 +A399E20BC127C05EC76D54C928A3CE1F99F672A8F47C8520C5D444D1EACEE114 +A71EBF58CA1088DEF117A723C391F62C0AF3985BCFD5526503360C33B1DB957C +039360854589686E27DCA9375B709FF2F8F5EAED9564F979A245AE2498556344 +69E2A27804B51D5C52844E3582CFA648E82492354EE0A312AFCC4E90866F63CD +173E4CC6A74D82568D0CD88E078BEB0A5232202C7F74C3A8C80DA4CA4BE6C421 +15B80B4A2A50F91F7841F60C5EBB4DC67ABB15A3A285214E20B5090E25EC9C7A +2A8F1C9F2FD755368F61370634A37A2EBDC4B8728D2439D55B73596A2D5B28BB +A83A38BFCE4B84AA3D8D373C53DCF5DBB5A327D9364288907C0ABC0D5E6B1D1F +7E57E3E21ECD67DD9E3F0E86E00BAE52ABF645D6FE70EEBAD9C853FE34801A46 +8F6BAB6A2C22BAE5DED459A3F06096ECBA2D20C707A5F47FA067FCEC8C8D6466 +9E478B07712A577400F5FFC65EC107578C4E6F28961509BB7C41E49F5E45FC1F +ED4AF951E8BF1B261E06E4D8AC3B4CD60AA0FC495E73E6203605E5473047818A +46C98482D55F198EFECEA05092BF11A982798FACA6AC540293AA90208B56E2B4 +05A05AA45B2F8A67CA109A6987A670340523EAABC230E0034454E773C31543EB +C1C2A99CBD1DC7532E2D2169C3C25B5853E2F0148E4AB501112B8BF210A5B39C +1C4E8991DD2DDCC634D3D63415B5C7DFC564102751C1BCA38AEAA8F4E69D603C +13A5B5A81BAACDBF724AAF76189BF3DB6239A7E19A1B2D6DB4943910A0FEC76B +233994CDB5A903872A55E51561F06A6B999E0F91C9FEA20E0176612E869FC157 +CA648E8C2C4859D3C17905352F1E950675D8C56369B50BC8C75413021319BE2D +C982926A6CFC9FDFD4BD728E8FC1B6FA1074FD7271C136B260C013A9A33CDFED +A82DB154C0423B391E7BDD9C5B35D92D3C4F5CA5C773AD3712840EF3BD5F3C0C +9BF19092B9296CFDA740566999ABF31B92E8AA5A92D29840D33625338A3E7C02 +5854A6B272591E3B581BFCFC1620C9C0F0B128B0B69CF0FE34E56B191FF65DD0 +59BB27457FB4CAE161551620278082F048A6BE2B9073ACF7A6BFAC7D1F9F7F0B +3DBB05CBA5BE5424E1A07BA58458074101EB3731E775802C97133C9FEAE5494F +C0EAA6D6CF2DDBC064CE7696F610A3DD93024161BFF27FA1D8075A295BE3B80F +CC225A257619628F07D9D740349854CBF43BD72E25F63249470C6AD3E171C6AE +149931C1434F22B467BC377604669C077F5806E9193F9E16A737C19BD3FD5C3B +7420A718C022EF57CFC7D7BDFE22C3FE896EF34BFDC09A6D5A6E559D6E1F4D31 +8A6B69C544385C1CB338D352749ED74FD1A051ED6579D5F1673522CB02BC25D4 +5A9A51D740B3A9B6AA52F2B9532A32F4C22FECE7BE96873ACFA2836063BABD50 +D4D0647FCF2FC9975A2ADAB86FE1AB14A5FB4C3A576387A993E9EAD3D401D3B9 +F231F890215B7192A71327BE72F2405E94E47EB82C9A7479B00C6122A94DFEB3 +293F1F328765B0AB7A2D4B51C48E5E2B6E7C96C765EFB49FEBCB593DF1A90284 +4C0723CBD625288D62D821F47FC3C28473B3C5DD3322C8D16C4EBEA14523376A +844F4E51F255B2C1FEFDE840EF9F3E5812411FDB55185100403155B295C63B3A +DBC92BAC9D6973F0D609CD11CC3C3BE89C92CDB21B6C976164FCE64C78C7DCFC +DC64B362067DB28BA59ECB57C2A5880EDCE8DF84606B2A87979DB086E06ABE21 +2663D35368F31CE867F91BF71FF831CE0E38084F98D501095CD4706C2B82FD59 +4E1501EDA7B03CCA974AA84EE5B39FED998FFC3D641B2634D72D92AE5B8BE9BF +64FBCA1B8A80969285372EBCF24A27AE19B48009B144376992058FC36C23CC5A +6E4A0CF12337A9EB8AF4EB6694621877CAD1C713A85940DCCE4FA1EFB2CAC5A1 +5FC3CBB1E61418DE140D044900F52A6BACC68CECF39C9491756BD3153D07768E +9D271FDF798A9BE772E9D6203CB03206020B45BF76810C0315448861A5A2030F +DA8EC1254C22D7CC89684B5AAA2141B7FE3AA4EA3BF55D907B8AD5FDD7488DF2 +A92B28261638A4862130B2EDC13E78F97B9E61B0E933F0AA0EDF58A66BE288FE +84C209CC1881C5E57ACB026EE9EEA1CBCD4A4B02E7FDEE62BF76D885E26B2297 +2C274B7FB21A9B660E934FEA1471473999B90DF953DCFB6D68DF5D2E021349D3 +14314662237C892EE094D4735D2858FFCD6DD748530645E493C98D80A8285CE5 +6715A6328533B1397C3705CD56E0C75387838B370112A8B235ADC17A0A56E03C +D175FB1AC49115DF3A8068BFAE58E8CBBCE530216BBBD0F9F3944427571544F2 +8C62339695952397AB33C31BB14D2B0C9F3ADA35ADFA8E4C4B60412A4ED03363 +7EB00119980897F8FAD36DD39AAEB4D841CB7FD8A232A277AF527D50DE49C5BD +936E0784FA8D2E9820110C5BA10584B294B2791FD0E49A687753DEE31EA923DE +BBD92D8C08FBACD88FE0677BCAB4938C5902229AE85756DA918D1EAAC6290FF7 +D9F6060953B2BEF26E8C07CC430D70EB307F1C727A57F3D46BD6267A03FF3437 +E1D2A9716E3C4054FC42D3C0246721BDC61D4A5BDD65016F90D55BE8FB63BFD7 +06B527A49F84B91FB321607879A9669EDFBA9668D1B4DBD407A7D53F7EF6CC40 +83B4F1A930BA2432BF2C984C4EA14CBFB7030CD0BC1DE50473BE03E04BE50DD1 +7FB991971A7410A7EE4118F6FE4198835C448B709D612075D0187F1D064A55D0 +BF3AEBDEAC29A16EB33EB458F44B0664E74A58EA5BDD24B9EE38374F68E2A923 +8E6EF9E9F26315A22BFE353D875F5ADDF0821009F568476C9642BD3B942090F9 +39B7902DA57E8C13BDD10ED0E137F3521D1B29F287FD6CDFA7D26E2EAF839C7A +38F06ACD6D713FCBFF0510C4C35038553E463A0761F0A23DC9030F6CC4FF96BF +99AF97F7D9267593812BE751607032E736626FAE21BA2912CB67547A5624F9FF +3253923D889FEADC594F8975A032E566CEB10E876AF5047937881C262732BFB8 +1F73C6FD56077C00902C6EBB852D1747B8FFFB1468E8204A9400C4AAF7F7504B +89244B5317C1DB608BAF91FABC56827754D6AB01EB4188C1DD73EB4258F962F6 +D18B5C14089225B509D23D5CD4C1DC4EBDEAD354A1B108466BDC3DD86535C7D5 +9DC062AC8F099821864264F13C4AB2441E7ACD2C47AF331AAEE509B0BA31A92F +18CCEE565B5CE02FF94D635AAAFD9497FD00E8CFD213D22F06BE684D43369131 +24DA92CD0D50373B137892A8B6A9D619094621247B06BE1E433FDB25CBEDDE0C +A7DBFF7A6CCD6DD55186F56A089E3901136B014C0F5AC86C819D5824292E6FBB +17704445C90AC7BE8252FEB750B78804B33B2CDA000073A5530C7A7F2A4AE279 +4D627939E1DF094EFFD5FCE391C4CF81949BF45203819647EDEC018D18CC1D5A +C0C1B1FE3D2BCBABEA21861E2F2FE5DA884F134A93F17F001DE4D595014F3E76 +D4ABF5249A652CA8B53ECE9461924FD87EA819F5F68893EED1A7A1FE4F231514 +3E69D4993A48F014F7E4FAAFF2D8685DF2FF50A41F309F5626E6328EBE3D7793 +6B8EB46F10997C63901343326BC91D6945666C8B3362A1A94A73AAD158E38E2D +1436AF6B3AD32B064A6FFFBEAE70AD11ABCE5ACBF810974EED6623FF916F947E +8897C2171970FE02EF18874092950F75632A916FC6EE77883AF461597245F0AE +8C9C7005217A59C63F192A57B8CB74D07048E7A25F294418AAAB0ED28B0229D4 +2571A21B6B46570EC066319191D8B155B903598F4942F692E3547AFE51D76191 +3A16F163FCB3A73C36471EE438FD549754C91190553CAD1FCC0BA3B1C1921470 +78784DBF40B54294F9EC7EC7F5A8D574CF9CF9D22B5AFA790BA5659631FA3059 +E2E1953F58FB83780B1C99407D48B75A13999CC536089B8AED30485E52DC4985 +82D1A5790B451407C982AD06399DABB46A1A4AFAB1FB85F11B558723706CA227 +37FA6429311FC4A178800ED5DAFFE353929EE385E7AC9E04E4FC63C66296C1E6 +3C5E2DEDD62975D7743C6D35155A5A8367EF7395E4092F095745C3192A5A66A9 +7AE6B45029753FB2230B881A5F7B0A393AB2193B15C06535458598458618C70A +CA5EAAA28AAFE895B5D4CF0A6B2E3C2573F790EB4E0B91C69E1E17FA78B77CC1 +376510918CDF6E955F231BD7DBE1D4B0C1B663DDDBBCD1D95024181273D58215 +A7455285B8DE11E9795DC15B579EA328D21E9E2F8F276D3D7DD7DD69A5BED0A9 +351216C84EBFDB27DA7A3E151B42BFD9165B491D670014B3FA0274F15863F51C +54C322A69313804D6960AA6F0CD14A970F28182796656266DF384B25F627CF3B +5D51F9831719A33AE20EB9CD0511871B416E3DDD76916219B7C93431CF22C76B +DBBF4D6E85432A920C532D8EED18515C4352A52E0B3CECCBADFC1C1133267F2E +D66668799BCCA45FB84FEC96E1BE5F9F62784043B71C05383C353CC53F04162A +9D8419FF16DF736F4CEDF9EC973C501587145DB5E1F1ED63838CD8312011F19F +94F8BDA1CF1225204B9510B972ABAA4F6E9A92A86787127AD97A42BD3952C5D5 +3C588E96FBC8B48C088979F3881BE01C85B53BD456E0EAC91B8A899BFE0E5C1B +D6E38EB78BBA172D26B7F1F6E90F029AFD3CCC6E3B101777F6E045D8892C2005 +12CEE278F85797C382624E847BDC406BDFC013F099F6236C6B4C21D85F205D3E +6FFE140165D3176467E7B241E4BCEDCB0850B03E2810045E79E3190BC6D251C9 +8A2D9CA4314B334868DD0B63DB9D00CCE4D80B4D359E54E9E81F01799905F8A5 +FC2860201F49F53045CAF0D9DDF9EEA4B00221BE2EEEB189D5E1CB6B15DC91E2 +DA3C7A24A571BB9517F8FAC84F7DD0A41F53148D61BC69C6BA042714A69340D2 +86F5874B6653A43EFFD735CBAF59B539B91C1B05E6699A74B1995D5E6AB5601F +9A606A94F85F32DE43ACF78E3E2B75411565BCD9A90491E29E22DB3596F92BA6 +F7C2DE622841483492295376FCE5EE8BA0B13D54740109D82F686810A03CED91 +CA7442086B0E3A5DCC22F11FAADA1474AE0B6A893B3CA6065343D21B834F7239 +48B88675A71B046352293E2FA73932485BFFE08C8CF502F6BE95E999660D8B2A +0FA634AB11C8C4765CB478F19595D5AC0EEAC22E20BD6F30B1A1E3B10805CE25 +FA694E5DEA8DC007C05D654BA6593C846B1FB7548A7ADB2579811D5785EAD68B +AD679E1B61F5FF45E4F8684C7EB447EBB9C9F19C1D346A1D321F2D49E84FD923 +5C54CAA7F85B97232B8CEE6BD06F88F71755AFBD86D0CD6FA10ACF67CE92B40C +605C488E397A2CC9C206C3D96133EF0CCBAEA910F86DD04D645AB8D40F440439 +3D5F0DE8C89DD451C007793ACB6592E65441A9F49BAADB4C33EEF1BB685A74A1 +25BFB78143CF48AE6E4220532452C6437E8FA281C961C9D205DB1B9ECE54A7B2 +02128113842C8454CDD922610DEDEC6AFA3605F800A2C66B1E014EE0520FA2EC +E033F8E7BA6C6A64334D877426070CC64F4A30CF382F2FA2511FCC4E8F32B68B +10D7EEC8A2D3FEB524B64E1ACC9A5D888916D1C52CB3358E4064926E46A0E80A +D7D379A531BE1B3679CD227B51E6D6C02FF46437C0689E7E5346D47AF8694844 +8DD0BA48D36677A4E612DF41F5109385E07B96AE023621BEEFA0A691E2AA2B90 +E8CADEA34F5570B8B23BC40420ED1D6B2561C28A147E099EEDA54721E38D48EF +4C685E67F4228E94F657486A8066269822E58B38B3BC343F9D5F57987579C683 +1568DB43597420CE2BACAC2BB30614464BA2D6CD239CAA21F4CABD42E0025967 +017314B488D7E5EE80E110F82477CCEE750ED06A76054A57FEA3E58EDA4E3C3E +E420DAF021E8ED0D4EF74864A7A1E824C4FF703ECE2C7A1E6BBEDCF03E07B370 +4E1165A4EDD682BE80FFB57B031CF2F1AA3A087FD8F0097423DD6C5CB7534B5D +657B06513CBA6B7003EEF17DE1694B408603A07E466032CE47A12D891803588E +B1C2A4654A823859C31F6A9C1E43A6CD1BC33ED401C057ACF6226FB683A81D5A +9275BE95DC05E58600D03387859171860B5CC021542EC0F9A1D09564CD5D1AB9 +AB4D7912746DB575690193F7AF9F1E8796C9D768C36CC1E7881B7DAF0B577A49 +3120506D2C28E487509CE32C3AF08DDAD24E3661C510A118B1E6532BBF715A0D +6823411E2F423322A0AE1278664A2A391525C51407FC44082FA112B052D18241 +C4BD149FD298430464B8805A392636365F16B552C3A8C85FB4391779C219E8C8 +7666533C8173D05FBD8380AF078D402E8ECD110D8211100B61C2B3AD289F2ED8 +06513E48847DEC3265DDA8589CE2D08462D88BC1DE42C42C7B85C5814FDE1A22 +185627E533C6D6FEF2F08829E4308401F9A3688E43966F682E008CBCEA1FAA78 +AF167872B047977087BABE9CBD0D32C5BEE00DBA8FB601CA91632BCBCF931FB2 +6A7545A1B85240B4CC322AB87215F7FD0861E2E15D6610793D37343DDD37CFE2 +DA8FE76F21F89D36681AA6A43DC0A18AEE2B8890A7888DEBDC7706B0950C5941 +1B4E0DA58D126082D077CDED69545AEC02608232764F1BD76E619096084F6A40 +E2C90B7DCC3EC1B44B0A9D57CF9A26175839B5E794DDF3D971A66BD17066F96B +8F5BCD802920130F76E434A76F8FAE8CE36A682B88013043CD4FC58F0E43957E +6BAD3CD19DA0CDDC20A1A59232EBA4B3D7BFBDFB03B340476C88C8D1E2610162 +AFA87AE597856905EA9E3BF9A9F876708E4EE74EA2B873CD6334EF39934E82EF +57FED286EC865B17F0458D8C80EEA530A48AE583D90327BEF4D5572C2D6302B7 +2826CDC8273D472681AADF689B1C35468B4BD921176E2E6110B701CEE8849057 +1308F271EB8865D933305FAC772D81DBB57AB63B9FE4A099FC5C12A3D0C3B53E +5734D8F9A6363E7A495DA00171614BB09EAC3DBDF70FF4BE66A1B7CBDB0EE947 +A66EFB7FE439A044014FE080B3456E6882885826AB7F7607B83420EB3F1938BC +CD256A898830737E39B674A2AA18FFEF4A5060294EB206535C95C56EBDE03FC6 +58A99B4F468DFA4BE4F63E1355C57B9365CFC853D4DA74774E8C6EC887F1BA26 +5D1850271128267EAD0C2B707BC18382C8F1C30F45DE1BA668B694AA78AFBB5D +C8948DA576469BA18204F616F978E606BE2B07BD972F3247351D3F8119EFA501 +7C471171B70EF45ED3557A26501F599B7606A1F3D3F543C840B38AB2A9AE7D3F +9AA1633E6DE860AB2378329FB9513F1B479B9C553EE43B4565E49D4FB7E39CD2 +998D5FC63EEDA03C1CFB5CC07F3203AACA07C853B69DABD3B48FF745B79AE1F4 +E6013DA04F13E069648104D5A38A2678F31BB1DD166D07578DA08A3476E773E0 +9C23D8E05016ED76A0CCA6BC01BF814996AAF260249389C47CC8CE66B454A5E9 +2643DC04C42CFB12FBB9ADB0E78C79C982D7F24B2FB4E5D32EE804FFEDC9FDC0 +B9984261D8124B3086B2303636C1DCD552AB7CD18AE2E6BFE248D02882014F5D +659C48DB8AE75DD1C5589272EC3D33A552089E26F80142AD0CC676F70A94E2A8 +70BD0F2DE0F1BEAA038C6EE73CF58AA15BE408EFFDE8BC1B2645E1C13272EEB2 +45E63EC4B4E34DE3F1BF7E8530DDDCAD1DB9477E253BB0CDD7DB76423668F37B +6D8CF668643783F562D1A88F831885F92165158476A408B5891AE6583B10E0A8 +2DC1178398D7DDD886B05FEEEF6505C499EAE9A4ED51099D3D424879E7BBD4AA +61C14D18B0239F63C1E6A3D559D232C4833E09C36B5E7A22ADC68E1963610666 +1A6BDFB86A6693CC2CB647A4E339C09BF17FDD40BF22CD952491A5F5A66B9732 +017B68D7961C360A317C013F335CD54FAED7A0F75C75C25C575DE3E65E3F0FDE +C30C7FA545BAA0A3A1A22BB859C16F58E93FB0CA74E98E3899D7923C055AE485 +E75FE2C05DFF8874F452796F95BAB9CBD271423DB40C6087626C5122454C6A9C +BBF205BC00D07D9830F8AD3A76A5A228E9911583358D2122F959B233A8F590FE +BB916539D2AF54A10C52AC6541B1C1CE997480908E02A722256EDB75BEC4E962 +1CE8BDDABF01A673F31775C408EAA2A5FED6AAC014B05C36F3C54D9AD2DCD025 +BB70733EA2185F9FD618788854DF25427E870D37224C6B6617E3FA0C251C3FB0 +6B358CA539D752088A0945DF665D6488E37017EBCC6502CABE9CE267BA87A6DA +E48B1F12FAA0BF3C12FA2E860259C6586FA7843F584CDA55404C88D283141685 +41812C6FEFA7A66AE6C731929D09CE093EC6712749285DC2FD2512F40EC1B114 +70B7613B43D761CB6A02F570A059331ADFA10921C3A3C4E6BE9637FC8B690F23 +138A098D8E1EC01EFF56C86D246BE7270FFAA7C512C6FBD96E3C472F939C1893 +C8A3394C34045B700CF10355913744AF99463D6E2573106B2FB9ED07B79ECEDA +F9F6D041B6061CFD8E02887E5C5B0194243F3DCB40909C3C03333A279E0D9A9B +037B84BD6F7300D0E5EAF980EE53B7FD883886528D521DDE4F74536C7F1C5BA8 +6CF279C90DDBB82DDD1EED77FDB05E8350DA91080BCEE5E3C84F003325433D10 +D03C08B43EF95318EA3748DB9BF84D57A712C0308E80F5A54A38F0B2F7AA403B +C57BD4BB6243F7A0B09AB0C885735D9861115ACA7567ADEA6FEC6F59973584BD +43B3AFD18824327CD6C21D4FE1F16F6C67D01B97FBB6F70DB5D7D6E46FDE0D09 +DBC1E45DCF82E9FB3D465175DCBBF254C59447D3C3DF1F66E0EF8CB6653EA52E +4C1D346D33499D2CF129D9704D74AC399DA2A23092216969B5B8D8B520F05DB0 +345E1BE31E211BE01A1B1FEDCD9F2699E9533385D29F0C80F990CA5A874EC60D +8CDBC045FC2E2F6E7A2E426C485DD04C4052A80568951B7C5B7A7FDF8DD163A3 +CA1D6A36A80B7CB4401674E6E1B9E8F2DEF2ACBF87879AF5131DBDF6A0458B01 +3243CAFB8284DF8C4F946C328B453A363103665491D387CB40A493B9159F46F1 +E95207F8E71D827A15A895EB17899D2C0FD610B9C3D3F8378310602034DA6BB4 +6131CE208D659FD3AEB590D2CA5918ABD2C10E16DC378CC922D605C66850C6FF +2CA7BB0A1538BE6DD5CCBE51CA7509A995F2FBA6D2813AFFFB625604D25D5BE3 +4B677D6CC459FED33F0A58E740A1EF93455D2B7CD3B6D7ABEE83D3BC3823F2AA +FA77DA4784BB1DBDA4083D991F9104BB62EFE168D1BA37A2E3EA54BFE6FC2C94 +47078B5E340D2237B312258AA715FE854291D40061B6AA9F9907146EB2FA3B1E +A1CCF2C8D2FB8230406FEBA3D184317B4F7F777410261D500F55751A0A445DCF +8B100FE5B149B2D2880C3390422BBB8E8C6B8A8B773072A0091C1BBF8415B329 +D16FE300AD05CB4B62C90ED22ECCE09B5786547455213BDCA572889B926E3DC2 +6FCA839E42D5519C1C2CDCF412755B645AF3BC38897CE7750B8E47F6E352702C +9C554B0E2ADB99F2A0CDF93DCF419AA331BA310ACD315C11912F4F8898EE964D +C1E9B8606981B25AEB7E411114D74B37952C0528E51447675CD888D80A0F15C6 +21A42FC33BB3346D51B6BA20B726EC79F582A90EC43EE690F0A83B83D2E23F3E +4F5C12E8BD48F1CFD04A189937925596C040562F4DA681B185BEABB00F7EEF7E +1E44F8ADFC6792AFC7C3C809338A6B1C046917289139040D382F60652624775E +6C6214AF5BE1D81A2A23CF2380BF6A13E88E87E2F1095B60798AB4F657A26671 +FE1C598578506C804FD43FFBFB76DF8D4C8E647F9D021C46011E70880A8AEDA8 +CBF3F181533340999B7620066A460E564C3C23FA8B29CC1BC8D337E2B1E49ED6 +9D10EAD96A52AB4D06982F4C48873C6F4872054695F253B592B83A1BC90A4BA9 +8371C4D319DD261B9A0AB13F74274E5B376A3288FF60C93421F114B51355E725 +FB265D39C00AABB2DE4300968FBE7F652C4EC71A7EBD58A20F2B4C1E2D1E3646 +902A0F815E9D67B50861D6CC2AE3AB45BDDF3782D685ED8E41C0D8F1FA37F238 +00A8A3ACAD22D898CF8E95855558179BC84D199C6C79A3EE2651167A4067A9A3 +49109AE7F53B59EEB1F57DFD4A00077DFC2BD2CB1E3169F0A348D4DDD2D9BFDB +A31951065B0230504FEC2975FB5015838759745EEA1347DE8591A58783F1EA48 +C7A7456E94BD2ECB916B85160277F98FDEC95DEFA7FC19532AF90C6AB3399C55 +86BF03B871A4C4386714AC62E44857919EEB2658D1AD72570D70F1F9926D6B3A +D12988299F620196898ADC3125C5A7D11765025B237983BA1DB66418B484B022 +EA1018CB14150269A089EE9CB3EAF08D4F7E15E29048F729B9D39A15C00B8715 +F030F927C8AC027A3B040CCD0CA1FFC5C6BCBD00457BDDB418BA3805C30AC43B +A8DAAE706D404E22DFEB24AF9874D741C9DA45B3163C259E8DBFFB6ECECE2B97 +6BD4335015222631F5D86490C0F9BD7C22ABD32D6DD412DF772548B38399EC08 +0E28700A2ADAE8F0D50EFC4CA8642E0E996D72BFCDEE1CFB252A6F4D8E03347E +F6328BF18282ECBC88DE3FF382726F910FAC2DD599E63EF7C3068C1CD785D101 +16B7671ECE1E0D30CCA1C6F2D3AB5E81E309696DBE4973F71D240C207CF73CAA +D620DBE563AC9B2000A628E8657A45A24030432AC74B5ABDD022CCF6AB855E1A +61619EB4DBB848A6C2ED5745005938EC8F516979806AF5E714704027A0CECE87 +4C44DAE80608392EE0EE0E39555ACADF1D3A873D35CA84D87ECC2AC41937CB62 +B250E3C1AB878BA32AE2E161D13FA536A305B352E3E0210636A81C6655CFED25 +A2B75AAA6FB0D2FCF696358223E78DBC2B9BCA15271F7612769ADC00BA66A2FA +8E38ACEB99E18B7B4A5C2B7977169EC141121F0664EAD87EDDA372BE22988222 +27D477A6A4715C71091CB2F01C6B3176160BEE79CC8FC854166DBB093A49DCF5 +E45AB3B20EF3223684E83C8FFB2D5DE9CB49754799E038B748E75C99EBA6D69B +36E162CC3860E33896371D0164C14138181F2E00FFC08E2A3619E1820A560C7F +63B054216AC8CBA7B034AEEA8E735705AEBB0D78F17856E1A0476DA6E543E985 +4F7AAD98E3ABB2D7B4B1629FB0E24B9FF10F06192AC8475CF8C35EE3E635BEF6 +ACA79F1847FB84C4B20E6067BC0593C7C39657E08A3CFF64915F887D5B99356D +91C0722A917B347945E1A867B062C016EBB7D924F11C74873EB4656B61A41CCE +DA1780D204D28B6F0CDCB1E059B3517A5AB44D45B43221DC53FC699BBDC4F2D2 +865C697EAA3B49D2AF5A4CBB66244196A3D8A09C8815FFDA307DA47760CFAD34 +434D00946C23BE41A6292220F0CC19CED3277801C9C1C3CBFC755A261B4ADA4A +0C9C3E7F8ADB77A5C68021775619D9CE770B4FE975CD468BC5CED173CE1356CD +A26E6AE273197511E50A014B19A5B79C7B75A57B08185B20AED966A4C9DB4426 +1294A5BF040A05A4FE60FB202C7CD2BE018DA7702CDE728193B72F03C3C0F1EE +58CEF81EF167CE9F8967B4DB7A3A3BC0868B8542DFF05D46DA08CA79F62ABDC4 +39373C66A08D536491CCB5EE828E410576057488E85A47D5D9F99F748E19AC88 +E207C21EB573B9429A7086A93CA63467B3EDFE08931BF575DB82B76AA9C05E00 +29C7D4F53CA16E6DD53BF23A0991B1C5B4902E4DDD5178E55C2BAEA308C5877A +3A21D1184FDAF68ADF993920AAD2EDB045E98C990584EFED9250A332BBC01217 +DD58CCBF7DB9C0E51473CA37655DECE639C28E04EB47E5B52DCA10E92BF83F08 +AF3EC395D0A74BCD4377EB7AFBD1F0B521F6D8F0741A07BE28D6A8C235B90B7E +B448354C9FD450F98270B3083515004B56718E81C4C6654E40B692780D83695C +3F456A401A6D24740C67A485AA8B616B94B23EB889AE93CE66F5CD6916E32C66 +809F5D3C4D52195D1335F89D1AEA6C07A1AC8E8F30AC662E11541536C50A6763 +5D8C71FA8E0EA2BB0141FCADA7AF9CA0A69AC758DF87159707038D81DD706B6D +123D53212F77FBF6AC06A7771FE86D254F9E6B29045CB60628EF491A26226D02 +D799A4B2E1E4DC25BB157BBDFD0958E1A4617EFF11145D3EB94A389F514D1247 +4B6A4CDE1DDF18A826C0BA8FBDCA2045C3BD3465C371248428A4CE147069B2DE +63E85D5F92038E8986DF08510C6FF1DCD615A7164A287A8C8C869C4B1151820C +8BE898107D19E768E66125C6A6BCA28D1A99BD7E6F58F60DA14E77ABA2001B54 +899B488C4DE7DA167A762CA3CAB0E8D157F6BED3679F019546F0322A7F6ED7E0 +D6AB34BF0F646E07A4C08EABC1DC40062E17386A406F88FF43C3AD322E8A85B3 +9EC8C24C751ECCA65BC7A2ABC5BC0E8C883ED0FE37DC111181650CC6DF943495 +5F0DEE475D1CFED3C23655E6053A884DC41E8A4D194A02051E5F7F38C625FF89 +5894F611575CF75A533095881952BAB2C81BD8C303C903C81D937E4D72A28261 +2167382EB3632D975CADB689A7DD5419F12E32DE2345CFAD7A85A9ACE0E63BB5 +3C49A690274EBCC5CDE015218223D2FAE1A1E7344932BD8CD076FE564F523B92 +6B50380301C36A67A264AC735C9B038CFD7D897ADAEC00EC65E174F47EF1EF0E +F4A1C83EAEC77CD415ADBFF5E3AF7769661AD8506C356C20595B1BBB7BFF1808 +92015E73FEBB58376DB5368C54BD47B486330BD22F9E1804A05B350671BA373D +737BD0BBF7E78ECE5C76FCE2B1DA10BDC7074164DCE3D2940F1CDBD02A996EB9 +7F4227B2446C7BDC11AA79B727696467941A4C2E3D51E3EAF366EAC7857F8180 +AB05461898B99098E955BFA09A8371FCF1EB671DE86C89776B7C90AFB9A4EE02 +39B35FFDE25BE1585476BDE88912D1E2D4C1083BA56BA4346B90EE84E6CE5BDD +A7CB599B4D716F7F25668D8C559E2347F20311D49CC7D3D4AA0117D017F065D6 +E43EB82320EEE8B29B7C7B83A6CF79D3A20B16393235FCE7F9D0D5592A80B33C +E664FD2F2B0FFDF29C89F7F5A5B0EA96456CC42DE1C2BC36E791BDEE54293D48 +BAD9DFA71606A78B5C2B8120A45F17A394F417C60CC181EB7ACA7D461A1A8095 +2372E368C1869D19E4A1A23607B6C2B0FAEF474C703492E7C1D68A3248CB8F77 +FB17BDF28A502BACFB2E4601BE018D24EC2CEAA4537271B2B9BB7807CF447BDF +5A7DF27A00D96C481ABE0B02EC0B61606505E357FBC1BF8F1A198A184BFC8B88 +1ECCF1EEAFADC8D299F72370BF10AF53EDCA219DBBE145E0F1FF317515BEC422 +623045574C79B689412F5E7E5B66FB463E11C507DCFAF31AC1AC380F35CB7DA3 +FF9A0B82402DE0696CA50B4CAF93667A489C1640867AD454CB797645710D9929 +4857D74A887D7E458109B90202A50ED46F0375F71482C7C6BC14E5CA6B001206 +62A44754C351B56B41AA8324EECF26A80E7D3FD85086741E70FD33C8BBD546C6 +3AA832DD5BDB976D17B28481B7DAF12DEF348DDFAAC53E3455F82DEB8056C13E +931F9159178FF1C744AA7882E7D49D88398EB3D023A272B8A89FB5659AF715D3 +0809BB26F3EF80A788CF54449988A73B416219862845F904E091951992A279F8 +33FF4A4CC37F9AFD5521E41F6FF1F12B1D9C7C0482BB38D1BE007DDCCCC37C9E +1F7F34B5ECEC3E6DDF6F6EDFD95605BF60F55F2B1D345430A89813FE189F391E +844C44571502F66FC3A56B222DFEF0D676041A660E6D741D8F72967DDE8C0A3E +96BC0FE3243DC07CBC1F0E99619BEA04EE85039B404122E496AA7BE34A4775AD +E4A310C1C020AFC6E74279DBDD0F6F374691D8E3B6EEC90B11AABD20E59F8595 +3397C7E9BA2052454250585469A67EF40741A9F09BA2A2A04885CED6AAAC081D +0475A63CA91BFA5D6A3770C1CF80F9D01521A51D815ABB1F31A89EA13412BA42 +7F1916165E012C0A94135C485E42A5161C7B94A02724B5E6D196D42BE3F408A1 +C11D207F5EA2CC3F2DEDBACF246719BD222861389AAC1ACFB94496CDFC5F3348 +4ED4336E52D03342822CC7E267C2C9694D9C07448ED043C56C57123B08124AB6 +8EC0700E42478E6F0FEFBB0549B2BE787570D2AED16C44AACBD6933A925055A2 +022517A427181398FF7ADAAF7910954360EB4403E16A92D7203A4587ADB06169 +EADDEBC7EA4AD684C2FCB0C1008CA92508C4B755E93401568145C5555C8B794E +F9FE03CDD2D904FF6B3C4429188DE0ACA011BC44D0ADAC60939EEDBAB25AD69D +48A5E171F88DC43B1511C6883DA9AEA734590F09FB58793D0BA23CC46DFE5FE8 +A9C82D1411002EC457793FE7DA76D29FB65F026587DB905A1EE651AF6E4F2122 +A8561A524984E0FA2FBDFEB7A8A4935DF29E126C1CF41ED66412FCDA7D07053F +EEDB110E865CED746D2530704C3D906DA828873B6AF2FC2D9E9EFD835D71BEB4 +A0C889B6156AE539B48E0D8026F5A8FD0DEB71FF8EAFC66BEA2130B9005645C7 +6FCA01DE45783C2D7B75EE9A9A6A8F5BA5F1B13EBDAF2F246D701507DADB5518 +CA8E75918A1975617EDD5F5701AC7FDD1365F9408E3BA2171D4903A78D223BB8 +0CA0E842DDBBA3C6B41D2339A7C620692F10C4FA9E8C950AAC4E86607955BD81 +A4E3B0131984BEF21770B436B286B93456646004854BA2055C3DE31CDF212205 +883E2D4DDF58152F192E50B4663F0F9779B455C665ACD6F40E7948351BD9F78F +24550832F18950ED308B402D5FC6327CFE094F1090871431A59C7238CF1AA562 +3A976BCD5808405E7BCC3DED691D332C9B279C849936CD65A6FEBCF58CC2311A +054CBD1D630459B59071379C3865C3C6A14E22B5B0381F44372DF1DBC8727B1C +59A733C294C4322E243223A986FB8D2BF832755B5CEED304E6B3699998B223E8 +E28EA70BEA1358C2CEB7AB07112D30B83197B263E56937CDD0F074EC29FAE7BC +8D6A89133CE8F837D64B703BC40EB64F2DCC73C763A0D31F3C058B5E9443EEB7 +52874573C500ACAE072071AF89FB9C4F4641AECCD14F7315150E5947731C8963 +55403D9A4A92EFAAAC4F5F6E95B4751351C4177271712F85495397CCFCCEE992 +98E7DBADAE9D3C1F273AA78F75012CA5AA357DB035655B3D98ACC2988169E894 +C573D80D60010DFE08394A6D05932944E07BAF050AEC00E45E04A424C6C351C1 +511DB1E856616281570F6DB61D75078B2D1DB18629731358D8663C615782D63D +E6D7D9464CD95D8B446E563D684D16914B0CA2978C473CB514A5A06D25522569 +9CD74C4E46C95DCA19C8AE79ECF576A677BBEE3510F93C4176A4B5F1A4F24E36 +E0C5CEB30DCED55B7B051C01AB5251CB839AC2E371944C169D9CA4AE4B91450C +5503BFFCEBFE1AFE8574E2020D3DF2BC16BEDEEEB76C7FBE3FEF7F085BBF4BCF +2513333E3A01DCA64322049010D1802D1E50B50E39768F960BA243AE4A79C12A +54D8F7CB63476916E634273F76663E4496466DB6BC16CE9E74727C9EE9FE79FD +B27EF3DF0E46EA9C028AA3FE5470E983BB251AC803FC07164644F385B6BA347F +3FC80E540BB262BB5E0CA619CBED3C8A4311B9C2B0EB70DAAAB4DBD04CA642A9 +53FA5B77D48384A8FE1F706DAE7DC478145A2F97FE5075092149C536F32A83C8 +32DEB9CBF5177AB311222565F16AAC5109F31F7C84321824ED15CF558D65BCA4 +9A73C570753D325F081EE9A3A78AA2F18258C5DFB32739242C0297C185C22200 +34C6F979B51240A7B1A3326677929904B567550051B4D548F3AAA253111F7316 +D3C84FC22E64F65882773C7AC585041DFFE3A6A15F365D825FA0C43DE16DB215 +243E53975DFAB3C1FA30D6CB8B52B9C55FEF96526624D5D8807AA901B16293F3 +AE0C4E03E6E22ABD78342AF9837A380BB99B68ADF493C1FB18CC4B968D707AB7 +B744D296FFEB8F2178B7C47D94DEDEAA916AABF76FA32BC0B86E2526F66ECF17 +6FE4A289C2571DE0F86B9B44459726C41C6C648838F928A8E6FA682A43DEA7FC +3C724137DAEBD60591A73E72F2A92373103808D3973501F08647028F83F2A9FF +400344095BCEC1EDA8A93325FDD58769ECB58511436843AFC403B5ACA14B7F22 +AD9D64C888F1A8F4E2FAD374804A72E16C0DCC0F2F56B91B3908FAF52A2C6DAD +EB9BF87C40FE29015B6E655F40FAC45FEE240C5DE731CF7B54C0F48027697146 +3A6FF6ADE84F6CC90E3799331799DA11AA92F445929BF4A95E9C5F4BD4D63CA1 +C84FE7BE3CDCA2ADF4DCEA99EBCD25D7724760516259D45DDC9D6CDF7E538128 +F3D92F8676AC2D0CFC3687AFB29E8BAE8671ADE209AECC9CED20037759EAB6AE +42E1B41111C9BB92D422CD344E7CB85A7403788C7765AAFA62CBA09A5522A6A5 +0EBE06D0ACD23E77BEF1A15A9E99A4713E67E7C08467C6B2890EEE9AA1F0558F +EC24065FBFB04573E13C52137EACC7A931791A5D5F675AB42E9B716DECB6308D +EF96E59E36E8D40B99A1E6D9F2DA7F32C1E47091733341D89DD109FCA2AFD4B6 +2D65D6366EAFE4A5BB0891B9344557DB94F065B3CD7D75874AD92F24454C2B21 +C4D2600AAD92684996A07B4DBC73BF4A3A01620373202E31B7495DCA42DA4B50 +6464003C1431AF808D30E08C4AF67E5CAE26F78188000AA0E8C97151491BF1C4 +94B1CDD72126412E0673ACD9B9322C3EBAA2AA1D039EFB53BD2C708873BF77A4 +7C89B9A48EFAB9E55ABE4FBB6FE868A9B2D86F96A5DB527514C6361DEAB44B53 +BC93CE3D3546324D72B13FDCB33F519812C1D9D66ECC126F8C3724F4D194DCD6 +3FA6E6F06B2509FCEF85C6A80F9C2ADC3D15A9562D2A65C4D1392FF915679CA4 +36E048D8C93D540DFE0265952094E7E6C8CB33BDCD517247FB81D564670F3964 +E65AD1F253EC49752D8ABF2CE12B2425551E7F03D5AFF08A7AF854E99322B8AD +4C2A300672CB3A06B668A11B752BBE824C07531EB46698EE6C6B65112CB77F0A +FEFA9A531F51D29EE7F45E8D0C73ADA57B32099FE3F0DD59BB97BCEF2CBA4E84 +D892E8B6880397808D46E78E05F42AACF717A2DDEC317BE5E5FFCAEA963032AE +515B76D34F880C049F3DF624FB85DAAFE31882A2D7CC9C29E7EF28E2AA4C46A2 +FE2B035FF8303879C436EA4A2BC67DF287FF0C3430E9566857F0CAF38CDFD955 +559249751A61BB9ABB4946A31881ADED4F938C6468318A97B9F1D60A59C996C9 +C8154F002185DDE6063E67449A6E0A9D9155EF95A7EEC84568EC8DEC4E3E9D6D +5E3E37F01FA5CD500715E0777C0B8FC6940C4BB4E6BE1CBFF8D7F461CCEF1641 +9FBBE9EF79801121137F5336350701ECC4A2ED838874BA412944545B2395C1CC +6873816AFAB5F4B71E978EBA442C309799F81E66312BD6585FDF500075CCD649 +DA023880E008D9E046660FEE0C93B5FF18722BDF423C5D820DCE694C6803B83B +101E61412650B945C63348D5053C3F97B6D38821A262600A8231E151718268DE +4DCB22329C49DF12D9135872A03CD900DAF07D8F3A396A39FC9A5FD04C8AD26D +4A41211D509B31D9032418D372A90CA0AF2E16DB8996E659CF103EC725BC4820 +9ACFB3C8D5155D87A2AFCE311BA6A18F95E37A9218BB5A45620FA20FD485FBC6 +DFBA5A3FA163833657572CC295C5BE868D584046555006623FAACB6602F612B5 +E6DA8CF67C8C7664992B8062C25E877B578194A33F29039ABD44B3DF14980E77 +18F51B2AC035CF9CC17F6C6C3D75D2FF145B14CBC4F9A551D5050B7E52C855E7 +B5D02F32D2807518958AF87E7380B6968C51A54C735000F02DD66B2E837EE0FD +BAD9D9603E517B55B8A9765B5C6301040A83E56AE013786CB760C98DB9537966 +8D9AE205EE938ACEAE707397C3BE2980B090C3B50C814A247F82B3267FD63506 +A21E253CA1FE7DA323C9AEE3F8BFAB2D9DF4A01F18DD530E3C618C889B219610 +E313775F33870ED4791EAFA21B649142534100060E28CA081A2391F1458F3ECD +CAB0BB41419C90D0C9CA95C5A4631A01DF76F52DDE04C6570F22578D556AB841 +A38FFC5A97300AAAB48177442755D76247F84BF57284B05E5D8DE15D0F69D689 +0264FCC502E5A8D8FC2DE3F7823A0363F1BDEC4B694282D0850CCCBFFD84F4AC +06CEB968973837652E674C1F953725039933EB7988BA490D4D8567EE3BAE7BD0 +21CC586C3CDD38F79B0A3A94FB81FACD7D9ED04B4007345A4C7A47860E38F965 +8CB23565121D1E7A0D0F3F3B7DA86BC3BDF2B4CF412BEBE667E6C427F3F86E63 +DCF7920FECF73F2E421E54F6F0A8E84A8BDE2D0B9C5E441F4C428CE8622360CF +6D319385106B2590E0D1A8B6C56DFDE8874A3F30D6DC25C1ECB02356D488BAA8 +C2BA0E8CFF8EF6DA75E2EEA6D27E822F511BBA288F7AB46B3C519FA75B676B55 +72E553764D23EC460CB17BAB327FACE33450E14D8329F2339600F0366869153A +D775A0F12471286F485A65054859B96A00723E1C451C6A8A05C88B32D10AB013 +94D834F675EE8DE2A26910F924583509BBAB4B1DCC5B1FC8781D80E8CF024EAE +BED6FE0FBBE088F73987477FCE10B4055C28199A91BFDCE080B5F52A1DD5EF9E +8506B78DE1DAAA88DCDE13C048AAC003735970A5A74E469EA21D2078FF721966 +FEC29EB8D667540184E3CE37797EBA575CFE7F484C71F16D84ACFCC11A769250 +585B7E825E70BC5AF10B9DA5D4E0D7661B486DE2B1357259D473A57598E257B3 +993F51D3FC6E6EEB9F4792150179796020914877D26AEB07C527CAA4468AC50B +56D8BF2F137F59E55AF7E778DB993EA55FF446CEE4E8E5D87852F211CC342557 +D2F3647F6BC423260E2AC6398D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMTI10 +%!PS-AdobeFont-1.0: CMTI10 003.002 +%%Title: CMTI10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTI10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup +/UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMTI10 def +/FontBBox {-35 -250 1124 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTI10.) readonly def +/FullName (CMTI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 12 /fi put +dup 45 /hyphen put +dup 97 /a put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 103 /g put +dup 105 /i put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 118 /v put +dup 120 /x put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 +5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 +8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 +EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C +02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D +46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A +4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E +2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A +EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD +8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF +CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2 +7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC +32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09 +482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF +118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381 +1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC +C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA +8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4 +61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20 +C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504 +3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70 +9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A +D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0 +125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8 +34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A +30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9 +39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49 +9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184 +2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF +0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348 +3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D +9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757 +802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28 +FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0 +98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9 +5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF +AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD +A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93 +5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815 +DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37 +4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC +8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B +A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362 +E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F +42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96 +3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59 +A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F +7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4 +49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428 +D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C +0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955 +CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485 +1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB +8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388 +6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468 +83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29 +60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284 +42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2 +1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A +21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA +206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9 +D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7 +7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B +55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4 +6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762 +4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392 +871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E +9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645 +DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5 +41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8 +2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F +220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001 +A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D +981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F +337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8 +139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B +1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC +100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A +1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905 +F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB +72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7 +A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D +310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928 +7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989 +1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2 +8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33 +80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610 +3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C +C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996 +4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB +865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B +301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48 +3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9 +1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B +E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29 +0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0 +30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E +2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0 +C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89 +14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A +44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC +CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654 +DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34 +9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87 +4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3 +2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676 +21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26 +47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4 +F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9 +D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F +03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5 +886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8 +352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD +9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0 +9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3 +92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F +821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93 +3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0 +47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0 +F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B +9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1 +AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71 +C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978 +B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED +D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD +F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E +81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038 +970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C +6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7 +97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668 +A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE +AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594 +971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96 +514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7 +8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C +392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170 +3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F +464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE +C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E +F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053 +911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6 +261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED +D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA +147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D +C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516 +C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB +61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD +FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3 +F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C +2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C +7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193 +11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C +9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66 +C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3 +1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692 +5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5 +6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0 +EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E +F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23 +AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D +8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94 +376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6 +B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B +02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56 +4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF +9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD +751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198 +3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A +40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962 +2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360 +D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A +0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E +8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946 +AFFD0B2B724EF0F28393F2034B2E69DA5061426805353EB4D80E20739BC4C510 +6C45275B8261DCBA10DE1D104B12F46ACD230977EE7D7D1D35D2814139E38C4B +CA6937CCFA653349B1EF64A98457F7B4B5D8F2978F16ECCEF7054905863AA46E +DD524CB33459220C71E9EFA7845A3A760A507B3D3ABC525B35930B613710A13D +098832C58EBBC8B0CA6AD516E6385792C59220331D0922A1F6F838A8DE13C337 +900462F952EABBDC2EB1FBF94A66186C177501453CD3FE3582073DD86F04406B +41B6AEB440DA475E13240445D46726A6D45185D56BAB8807CEC8A8F7CE1AD149 +7CE2E1BB5DE4E5B9592241DD136479A65905FD0062C91DFF7349874BFEA5D9EA +2F610ADB9AE7757B2307A1BB9D6797D9F9C4844A59841C7C7682105E23A374BC +A91885E7410F56F60C29AB8B417E2D6092F8BB70A2DD5DEDD4BA1077D7CC62FD +EA43428C6F79C332342E15F75B08A1ED360B3511F823E75AD49BA7AE63B19238 +2AFE8FAC2715E2FDC895E95036D23127557837506A3B542B0E4651CE2B89C252 +31EE8ADC26E2C04E8E30A9CA12F066CE01953BE7867171FF6C7E834742C36C3B +58E74E4B482CB85FD4D24DB03D753F260A585D552CDC9E1941446F2F5B45FF24 +2DA4932B973139F328E7E92828B900BFD398B6F41DAA0D6861C66AA7F5E3299C +87A5925CE0E0F9E09AAE0792954A1F2C0AAA8288DEEFFE579E38A3CE8A943EB4 +55322A87C1634074EBEC25F724DC1BCC1BC10458CA6C4395659B0DB6B612C151 +557CC669D8DC37769E59A5AC6BF061C79FEE265DBB59520EB8FFEA273601D1E8 +2984B8AE31AE343F37D03E2BF97DC48AFE50BB6138C7B9F9B5E28672A37BD8F5 +8F8C98DC43DB22C6537028798198E2D3B0453ED72487267D653DD50F1BBBDA92 +833A987A95FC1F275B90B581B4BB62B6863A4CFAE37F715EDF3EA5A33679FEB6 +4847ABB4B3D170C275B9F1AC3156D731198DACE0B051674E85B758500AC9FBEE +ECC75EBBD85F8D62AAA328FB09C6526F853077AEF7EFBFC2B6A29D6D508B1E19 +EAFA4C67EEE44045B9F15B9762B3DDF5CE5C18B23A5C2F73A1F6DF7F8679AB78 +843AA41FD2A7DC02B45B729EB76C66A89F5F76E5C4A0C0563B1EC5E75D72EE35 +A7F1FC89216B60D82F6F2B8DBE85E4FF4D63712C689E696F60B52AB622C2A4F9 +37C380775EDB72638D3F81F61D8D74C76D813DDFFF35ABD9A502F2BC7FF65754 +2A8660A5A53E0CDC2E8A95B6E33CA153EB711DC796D313C8183D707D3F0E3EE8 +BA65E0FCE3F1C07F3D93F77056688B5496AE35A6BA0B59619DE78640A8C3F7D9 +7DC5E94894E1E63A7D80600B945B1CCA50F1B85F57673C6CE09EFC4E229D4635 +48AB466118D273BAF7C1B52A067A88C00EBFA7FCB378F1575BC0145F294E6F7F +8007602C6560476FA20BDB91831B22404DB1C4C167594B1216C25226D262FEC6 +F5D0DBAC4B8D743C669CFF2068CB9BCD2DAE8CD6EE1B33BBF7514C4E5EA79D46 +11AAEEA72B791C22A1822E686F3858E95A37D9CEF904EDEC7EBFB0E60995CF64 +57CF0EAAE6D4925126349DE06E101868BED82BB51E911852E6780772912570AF +CD5690C6DA70110DD9903BAA3BAD581D206571D1E57712C75D112254C7A3DC8C +892B66CA346EE682E7D910343C1CCD07465D9E49489839BEDA6174FB2E0DB935 +2D2CBA6B67ADDA1BAA6A51690A10C819692C9BD35BDC689F9DEFEA78BFE79C47 +C9CCFB3D04D20F1D3E0B73498FC0BDC50A3BA6DDB3FAB9458803BB26487C1397 +511717CA3493A7590E27B34C2E2E1BE2ED884CAFD5F7C185CD6EDA68951673D6 +384E6CD12944F86D178E73C8D78D9048A5B1E2FCB489E723F8178F842B362BC9 +F3E4D511B369670908B2C8087AA29F8B592B8AF7018311C0F12A8D45A3625096 +D4C88B19890571C60821F38310685F8DEE7A7A5D209265986F92AAF11143DC85 +F435BC210621851001B6A402E3A07D0F204A3B0D75DA3CD7FF6637D1F434B962 +F404DB3C6BC318EF517AA0836A975C5196976250B5D6B21DF528FB47181F5279 +E1EEBBA0F344D7EABE71904B5C1DB0FD07694C469085D50DF4990E294334E785 +5E5BCC4ADCD38685147CE535B23F3027AAC01A0D65AC751D9CA289B4A8906A64 +165427976FE6FD699442196B0C247C960C9086AB2E440885D11BDD314A3FFD40 +9C5FFF29B40110381ED22F58CA53CB2407E5B993930DE5E32CBC4CDB2FC46604 +AE51C1375F9A41D7B5CB2B2FA52F65CB925BDA5CE18BDCFC46933071789E3F20 +C08FC64F367F409C38279E5F88EDFBEE38105A2469CF009344F9E846419519E5 +8A5EC45DE2F6837C65A883C524305D18769A563691F5887D920CAA8EF0D9D56F +F208395E7390570C6DBBE5AF515BF64478059F922068F0E473C020E54CEBF22D +495D5E843839912C58FDE0A61D4E390E4502E9973562BCA49B3A17BCAC0352AE +5C27DA44578C4FA5821B9A3B03FFAA97E15E83CE09AE155BE919EA42301E6195 +F59C0A9131C4089E97223BF614A37B5C7603190DD465105AD86DFEB74E65479B +BBCEC9EF93508604339454483E244A348A78F29EC4A60554E77136749A4A74BE +F4DE4955FFDB6AEEBE19705EA184605994D2A5284C05A479A33D56FF398DDF3C +5B474F53743255BD5F42DADADD7F71BAC446A10084DE15876FF74765654405C3 +470144E2902EF213A594FB721D0B0FD823DAC347777B7AA58688EA834514299F +75A3C80BCF2FD24D19650B7D2C21ED664D290EFB9122C125F5DE1B2C4A817905 +06C27E7188C9BF3965A6A25A5A9C0353A53D05BF64FD4C226837AF6D9599BE70 +04142CC78E03626BF10D68CE17C2D081B3A4248FF392E985A6946D89BE97AF1B +C6BE7E9820405D06F5FFC06D6304028E5697E8AE15225A8FE19CDF3DFA2079A8 +BA537833DDBEB6106BAADD45E9ABD1C7B5157C5CB26F971B0E7EE8069E3C8FD4 +A7A1833B19CB43DE4E7497D505AE0B7BFEBB3E489315842DCB3D6CB7E6E43AEE +E215D011B2854A3CEE5AADB34A9CB5AE595F2F02CC5CAEA9AB28161FD93F3FD5 +87D17D564939ED05A5055029D1AAAD21726C1AEFA777EFEDF8D687D9F2FCA607 +CE3B585E044A8CFFBD6E93849467378BAE5AB8C02615AA974546C3D7AD70AF26 +55C62A9C4EFE256B5303BBD0B9E13544F408F8AFD7265425BE1421FE6B1E41E3 +B6D9C509B4EB820507F2B41A92F93A584AF62987450095DCE78F9862284F0C53 +F46B02549CA9EA57C9C4CA8A0BC1EBE947AFE73B8F7958853BEAF81D78E23C25 +3BEB6EC3823E1DC7524E38CD63577795EC3DDE03027369957906C85A22F9D805 +2EBD287C2CAEE0D3985264AE614380E421EF23453A68F6E616B3191B506113AD +F6D569E4A20D3B23961DFB3ECE07B382AFD2CCB1F2BC4F3C1974C06C8652682B +EE7ED59D4B2F9EB8492FF978747AB12E123932B34C0F9F3335587C7B8B8E13A4 +0E1EE5212AB1671DD7A2AB5AF2373B60B3353C22FF8128198A5245F9C701B6E9 +80E92AB14A77AE7BA217D33ABDED222EEE9B5888AC6653459EA8738703FF7423 +8391380AF83E56A3BDFD3AD43F2F00E87DB9153D99A3B358A38313A7E6D6B43B +07804A9929FE01EE112C0B1960B286C97E7F563D552250DEB189F3467ADE8491 +9C25A473EC8D590BC6EE6E7F340991D4317F1F0E29737ED93D18BA4DEF6A6C0C +F9A71EFDDBE489F1A5E27699F8C120DDBC96C4F3F3F2F90AC5014F78AF6517F3 +3C8E2B548C7BD7CA91ABC4E71930761D5C609CCB41B7CE490389C7CA6B1A7B34 +7130074DADA12806475998153EC604A5FD7A04AF35D00DA9564123A384E39126 +B228353532842504229FD646A0FA1C24AC462A75A119743C17071D0F3C370D04 +2FBBB8155EC868014066C6EFEA257752846195C4158AF9DF215C8B20AE276F50 +67AB636CF7A49D34B26435233460DFF6F728E91F1FC4224A7AB1C991C94D3224 +E75B5764642BF2972C9F72A347861CA23B78BD37E0902CE7E3776E347AB20388 +2F97386F31D1D41B43B5A1F52C11C908155E7C3AD9C818BD5F8AB022FE979EFC +695DB2B79BE6264EF7DEBC936048FF17E81408CC701C0B1C742B11F6D9442E4D +2BE899B3D354D07CDD71FB19ED3972363ACB918BF229ECDF8C5D6F9ABD5263A1 +81A0BB786D0A859C53BBEEF61872E24BB550FDEF14A66FB0C09836F4677DD4FF +26FB82FFD120F2F8947B51B0A38F47E65A8019C88A1C343E144F7CCDD1E9C541 +640452BFC800ACD27D181077E8F59E12CFFD7C67DF26CD9DE94B87A16BCA14D5 +9EC57D1963A82E2E1667BA64E7C10015A22C4C6FA06B9D76A9CF591FBD2003C9 +116043C62347D68F99214E90E01E80D140B1D3E8AF7526C17AC8A2056B63E192 +031101D44760E5679C4FFA2FF739CBA5A80AE9F95DDD80973F32D0411F9A43A3 +887CB08E116C823DF5921C157390E1568C76B82DD9A7C69FC76501712D2F24DE +7478B1FF5F7C648754860E394340F17D90865DF0D75A1A7770C177ED1052E10A +2A60B370A9DE3A6876B9E102A6706E464A91DFF642F498162C9BDB4F0827AA54 +0D1F36557B76DC6FAB62E52078C40F608CBE6C447CCD32A29C9751C53ED48951 +3E2466B2BC8C28CF21A439CF54B50E6DEA50761A23333E8E96233215BE86B870 +461D46D227790B1E65198B0C32C44F9861B94EDC731836D157B0B3419AB6AA9F +41BEF201D3637F1F6C3F7DCB71BD670EC111B24C411D0AE3310DFC4C9279BCB8 +F5D936F0211B5FC10B7957259D2C3874724EDF11A646D951E79CD958B60EB6E8 +071CD06657B15B5D0BF492312911076FA5E74F7DD94729A1A17393FE5891280B +D0BA2F31DFA6B3E01C0C0F662D02EF94590EDA84EDEFE9F28F5E7DE75B79D8F9 +4178ACBA78D1F147820EF76DB4850910C3249DCE6EA13C1161DA6EC36BC129FF +E9C97EFAF481A1605F788CDD66DAC83A95BF09FA47850FA0D7A844AB7014D9C4 +95A1C6AF0D3AA8A0DBE08FAF4E4FF7D6039F6115845EF41EEBC31D1D6B2CA95C +FB29A10E77935F79EC66A5D14FA898CF1347CA2502496BFC44DC1057AD6B00D9 +E22C8A982C04B48494C7B1C630FFB2FD1701F65B0558C5A2BE9C5A017B3788A4 +B9A22CA8E87600A54D570A6391D814FB95FCCA3631B123AD03A9EE0ECF9A8B6B +A5C050A34767371D99220A3395B8EEE63067AD64C93F4323A1C33BAAB8ED8B85 +FB1F71CCB36B381463157A5F19F0CD76CA14C77839BE94271264F5B454044D8F +4458AF7DC8A85ACD3EC014E424D102D2FED460A7AC342E23B960846056031213 +25CAE1315149CC2069E8963AB540265026F4B11BABD9C4711875217188D5B5DB +6E9CC8E436A56D53B37809295276DC0A21F0CF2D50CD5FEA1AD417F1098A8999 +F4163AEA50ACBF468E0863C901DC518029692C076C5BBD7954DEE6504EBB39CE +8F680420CEE573D8338DB67A5BB2B5361734D36D029812BF3AF22AE71CC4BE7C +8C0E047CA409DA46AA3EF4E6B345A3E1A53A9892A1943BB32ECFD340439C1D52 +14BC35A77EE696CF792BC25DE49B75F3B04F09704B64C8B1EA9FF39E6E8D9B4C +A39ADDE4B5B49E3FBE3A7F0AC51988057E46379173D5D3AB9E786EDF308B5F0A +5B2DA6D030F881DFA0D479D8D6D97D66F3D25ED946128B38DECFD701E607221D +EE1069CADB078D3434253AA89970029EADFE217FF24C825718F68575379A653A +0024F720B6355DB4C7EA81077DC68DD6DC61F85C2AE59E28FE04234E7887A9DA +E4E9E36FB0012C49B48F057C1E98380639744B5EF0B135596964BB2F020ADF92 +812966653E399B2EF9D5044A6F8E2C788EAEF6108AEB70166157E322EB549002 +12A5FC7F4DB295C0DC64BE331D154D07E49DB9090DA8194B941117326D763EA0 +4CCC8B7F97881190EA60F9D0B33BD2DFF04BA5AC81143068D66DBA61A08D3930 +439A0A87540C2CD06F56A3D732CA041DCA2F74DFB4CD05FBD76455E389095AEB +4CE5ED7BE40BFE6003C9D6534F19D150FF8AF8DA936D0739EBE9128BCAD016BE +70EAC25338227E83963F81AD1466C3618B8044AFA276879B9E621F00B96B0B67 +2E8C2D95E222EA6F4586EC05BE9768957AC121965B9BBF9481EA4C513BC092F9 +A4D44F4F949E5537C1F59F74B48AFAFA371F62823286B5E005EADCC936729DAC +4817750D66C15D3508DAEF758FDFB5C84245DF6C040EC0A91B207A1377DEEC10 +5387A82D27199E8826C00B44A5C2A4DC784B1A8288769428FD632D7AF1C3508C +C42FC3ECAE21E060637D961D448568FBF539B8E85B7AD60F1A573995C7857AD9 +9755535F9D04B4ADD5DF7EAAAA0819A5F21F111D9D9821089D071907307025F9 +B6E4C4DCB3E7F6F06492BA6EEF4F32B38393CB787BA9E00D8F60A8B4CC91B228 +0FADC305AC966F9C2547DAE80B4F60959658AEFBFF9F63B95F106EA226978D84 +C7863BEA1C71B13A5FDAC35FE9D7037758574081CB58AF6DDE2C80E90ABC48E6 +DC0716B13DD52ECE01079EE01A114E444C1F09AA1788356432E51806D996A99A +BF169DFBE02DF5728D88FEC214B3B272CB1A7C9B9168F302B505C54584A0B428 +17CBA6046E0319FB5041FB9319E75E7F805232DBE8312E63C639F35CD679638A +60E1B0BAE1F1F9D359A2786AB8838694270C368D7BC92E9D65D119BF317B8909 +7BFD7AF55533BCA289460558977CFC99E3E89D0C4A3B50C17DE43E2A7D7210E0 +96F0B6BA7A4C654A8C59DF2DD5881BE5AFACB64489FEC5B129ABFB10FA17B3A7 +426E2445778B53336CE63969C5F3567DC66DEF49A7D1A6C19C84EDE1C2FDDA4D +4FA5854F4F15C7FC1AC8175587087D068E2150D05141970845D173E5312CAC9F +8B9CAA28EC46FBDDF610B9371BAC2F577ACFF2F7CE3634CB13941BD437390F84 +ED894384E3130E663F5C0EE25C2C8096B7BF90F7783FE1B00F6EB78D92DC41D6 +BADF384149742D6B9CCF1BA890446599FD957258E9E3041201B958C2E5BA6842 +32176AB1367690BF1AE79B6075315D538C7D6634117A20DD82FD8067F5237B5C +C93F4989D054A45FEA482AA961738EF0B9CA8D6711DA94A512BA132038866CF6 +E59012950C870598644FC143CB205494BB65EB649FDD6157FACC5814014C5B46 +1153221D8F2D3B3FAFEB01DFF0BEAA0C00353668793379A88FD7C9827277860C +516724161906BE5B164E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.0: CMMI10 003.002 +%%Title: CMMI10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMMI10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup +/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMMI10 def +/FontBBox {-32 -250 1048 750 }readonly def +/PaintType 0 def +/FontInfo 10 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/ascent 750 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 58 /period put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 +45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 +7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 +72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E +BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 +974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 +11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2 +1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C +7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B +0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085 +EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37 +404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133 +78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF +A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE +88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4 +C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC +BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88 +98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760 +E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44 +143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3 +981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490 +88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285 +4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683 +FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F +347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F +FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB +C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04 +B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733 +F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA +29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66 +36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12 +048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0 +80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C +9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B +75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E +4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC +74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B +D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355 +E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097 +EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D +543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883 +710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6 +EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F +7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93 +03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2 +01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89 +500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F +F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208 +AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE +1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915 +85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C +4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1 +6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F +55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18 +085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02 +BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951 +2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D +CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E +BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E +D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1 +991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125 +6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754 +E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80 +E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1 +B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3 +4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65 +1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB +B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7 +8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA +FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6 +AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E +BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051 +E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD +38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3 +7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751 +2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27 +DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D +22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6 +8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB +44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90 +D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A +42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF +C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E +0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE +66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6 +E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1 +6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E +1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10 +B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B +897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E +EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40 +A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3 +F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA +A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126 +2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6 +51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3 +598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F +87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE +178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6 +4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78 +7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6 +AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6 +3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379 +337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547 +C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5 +DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA +7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD +6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC +98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355 +821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4 +C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886 +7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6 +B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16 +A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325 +23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF +C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3 +969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10 +3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B +9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725 +1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239 +B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966 +95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7 +FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE +44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986 +FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4 +E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA +633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D +6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F +FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD +375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2 +6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7 +EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C +E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D +F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156 +DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891 +D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538 +D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4 +9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B +9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6 +B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0 +D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF +8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93 +FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26 +B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F +00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50 +909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49 +5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF +7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA +BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0 +C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1 +BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37 +BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D +4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075 +94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1 +F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9 +E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA +92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0 +63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A +CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271 +B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9 +5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E +86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0 +AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180 +3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC +35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD +155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580 +AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255 +E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F +226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496 +9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B +8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B +919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE +A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7 +9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0 +523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7 +88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D +2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF +AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66 +B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22 +CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744 +3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8 +404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84 +262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953 +084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341 +E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMMI12 +%!PS-AdobeFont-1.0: CMMI12 003.002 +%%Title: CMMI12 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMMI12. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup +/UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMMI12 def +/FontBBox {-31 -250 1026 750 }readonly def +/PaintType 0 def +/FontInfo 10 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI12.) readonly def +/FullName (CMMI12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +/ascent 750 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 58 /period put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 +45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 +7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 +72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E +BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 +974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 +11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE +882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3 +2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A +7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541 +0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69 +987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7 +609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC +182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A +CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A +1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE +C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D +3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6 +D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E +E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200 +761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24 +8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F +68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D +10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4 +262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6 +922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16 +56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26 +32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA +7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460 +7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A +46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD +754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF +88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F +CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A +7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760 +8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0 +BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B +CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25 +8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B +D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300 +135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A +C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812 +1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86 +07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39 +14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D +7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D +2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D +639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3 +D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F +90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948 +10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E +1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E +8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC +D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9 +1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33 +9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875 +EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE +DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3 +60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8 +FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D +203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608 +FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09 +DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F +2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D +244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077 +31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B +724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8 +F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7 +D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA +AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907 +CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF +01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D +CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA +287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605 +8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9 +9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1 +6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5 +7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C +192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA +AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4 +A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9 +50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67 +A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912 +3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF +CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6 +5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96 +8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE +084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7 +92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2 +AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27 +97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF +92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5 +7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824 +5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199 +13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76 +6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1 +5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5 +6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83 +F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E +A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4 +7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A +9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817 +E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962 +AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD +F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8 +0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003 +1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31 +7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E +38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8 +5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F +3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B +B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85 +15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B +AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674 +6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6 +CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322 +EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82 +A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D +806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4 +461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1 +4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361 +9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C +172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6 +69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E +ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690 +356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0 +E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78 +7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C +B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A +31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF +EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7 +98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30 +C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61 +AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208 +E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900 +76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40 +8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573 +CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7 +761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A +2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138 +89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60 +D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF +C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485 +D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8 +B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39 +AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F +D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3 +866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD +207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73 +756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7 +60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD +A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A +1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4 +A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048 +C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3 +03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321 +1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B +97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE +D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8 +4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF +94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97 +201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7 +9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000 +CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7 +29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939 +4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED +66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31 +14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53 +84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74 +6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12 +49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C +224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5 +5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4 +A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498 +1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D +5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6 +40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C +E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B +C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD +CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D +2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE +710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45 +FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8 +FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736 +5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMSY10 +%!PS-AdobeFont-1.0: CMSY10 003.002 +%%Title: CMSY10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMSY10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup +/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMSY10 def +/FontBBox {-29 -960 1116 775 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /minus put +dup 13 /circlecopyrt put +dup 15 /bullet put +dup 33 /arrowright put +dup 55 /mapsto put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 +7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 +DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 +511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 +1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD +028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 +1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 +3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 +91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 +E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A +11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 +C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 +D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 +B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 +93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F +10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D +7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF +B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B +491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB +F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 +019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 +915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 +356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 +5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D +9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 +3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 +FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 +720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 +D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 +BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 +7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 +DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 +AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 +A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E +0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 +AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 +CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 +0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD +5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B +5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F +E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB +54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 +E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F +A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 +4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 +4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 +038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 +B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 +5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC +B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 +A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD +2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D +CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 +455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE +FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 +16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C +16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F +483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 +67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 +3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 +1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 +93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA +051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B +8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 +8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 +6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 +06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 +84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 +D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 +DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB +0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD +8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC +C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 +754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 +1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 +CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 +1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F +153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 +905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 +617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 +8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A +98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 +53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B +888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D +052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A +CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 +A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F +07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 +B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 +10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 +CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D +3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 +D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F +849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 +648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE +84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA +2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD +2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 +9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 +B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B +D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 +135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE +EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 +C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 +7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 +4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 +9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 +050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 +3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 +C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 +843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 +CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B +B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 +3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 +19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 +FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 +17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 +8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B +CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 +F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 +1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E +4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 +2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 +9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 +E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB +8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB +BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 +04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 +C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 +ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C +4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 +84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 +C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 +09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 +D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 +56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF +035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB +FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 +CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 +B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A +F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD +CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B +0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C +B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 +33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 +4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D +F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E +2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A +CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 +88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 +17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 +55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A +A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 +2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 +406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 +AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B +60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 +C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 +5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 +822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E +94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 +D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA +343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE +894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 +DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 +DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F +8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 +A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA +DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 +E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 +DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC +4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 +5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 +02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 +88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B15A0 +657F5ED27D204449A841ED19E01432CFFE928E921321113780D036D34F2797DE +D4459CFD15BB117B5C9745EF3CD2B296D91FAD48C80B136D94476967E255F808 +AD2B5D522ADEC64176833756510391815A1D4A8DA1D0AEE7CAD36A1D161889F2 +3347D5B6BC503300FDDD48F594F391D5FB42C42113C538E707C16EE24A3F375E +7C506E8F49CE50FF9DEF3B4A4C1BEB3848EAA3477349833BA22D2A9012287D8B +A8C4CB4307A1188ACC0E6E9338E1559BE5FAFF381BD82A6C71C267409468B3C0 +2C1A29F4281D565836EAE57F680490FEA4A952FF64C8CD11C377C294DCD1EC25 +CEFB2B6DCE959D0208F85B6E32E9B44FD455F9B134A5306D95EA29F37BB8B86D +9E592159338E1293F449380E13C21AE42E6D6952083BFD432F72DFB7B6F9257F +5784C683A6E9ACD72334E0EA8060A81E14EE32300055040E24B49810DFA1468D +A962DE1D1AEE09B49109257898F155A63A83D514996DCD2F96BC0F52796267DD +DA6229F5E9024F78B02154C27EFDB9B6E09B131C9E9E4DB41A0FAEDD93A05512 +A919AC8869C09FC929682B51174D816B85DADE28C00F6391429BA98327848AA8 +C52FEFEBB2296BB78F06BC1950A8E0405EDBA2D8C51F1F607E73F5A2173E5469 +BEB7918844D450B652DCFBC4C0D0C4AC2AD678B7165AA8F053B717C1D417ECF2 +3A2909E864E503059135C05EA8F7CF185DA45CE17FA40B4076ABDD8B167B6F02 +3C8962F09CE07257495ECE5357F755C48E49F4385DB5CE4FBACA3AD4D18E39B8 +F7057F4BF581ED26ADAEE218CE130B0CCCA0C7B273E51D7F314F53EC8EC84100 +8292750A37A4D4551A5C2A65D2382DB0941409D83FE1005752BAD1980307F153 +BD7C92FC12AEBC7C04839FD7F01BC85F0880DB22FE524204FB924445B6B3DF6E +1B657353086539BF4E60909524FFC4CCFBC8E0139F65F53ACF3EEC572C673CD0 +64AB1C29253049B26888A322E0FFCF7DF8871F701CAF5BE7B509E090C43B4755 +B100C929D5A8A4B9646E8EB39F2E705006AD23EEC58E0E1CD0C18A346D8ED66B +D0D2E215F637D25EC4F05C449FF8E25250211635C9D5121EE0D51E712B7A8699 +19E96ED8451ECBE97A7197337C65CCB44FA2522EF6735BFB60CD053EFAC10381 +C70053C2DB3B6DB8DAD720DA6DA25069131FD9759EC2182D1B649AE67FE4181D +B223BA15F5FEB0BBA498F9993F6A9C8DB9088DFACF064ECCB56FC4951EC8F9 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMSL10 +%!PS-AdobeFont-1.0: CMSL10 003.002 +%%Title: CMSL10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMSL10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup +/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMSL10 def +/FontBBox {-62 -250 1123 750 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSL10.) readonly def +/FullName (CMSL10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -9.46 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 11 /ff put +dup 12 /fi put +dup 14 /ffi put +dup 33 /exclam put +dup 36 /dollar put +dup 45 /hyphen put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 87 /W put +dup 88 /X put +dup 89 /Y put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 +5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 +8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 +EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C +02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D +46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A +4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D +DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384 +7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0 +C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814 +25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5 +7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581 +299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8 +80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB +5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584 +8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894 +5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F +F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B +966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E +A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5 +9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4 +A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD +94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A +DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669 +E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929 +5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23 +8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5 +155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E +4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038 +44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D +8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0 +04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC +A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F +F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07 +111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344 +8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C +567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728 +C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214 +C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094 +51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01 +66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58 +9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6 +2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4 +4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7 +5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256 +0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9 +233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D +BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF +62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086 +B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88 +DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0 +C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA +CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC +38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D +FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24 +303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2 +8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1 +8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2 +C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53 +9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363 +4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29 +03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212 +93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8 +91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0 +FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27 +06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179 +95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954 +9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2 +7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972 +6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31 +5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262 +3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91 +CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1 +797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0 +DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112 +CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19 +8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51 +04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757 +78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE +730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F +021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79 +CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57 +90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD +97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0 +F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9 +4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394 +40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7 +3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B +362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7 +DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136 +7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233 +04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8 +DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B +C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049 +B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F +9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229 +3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE +D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2 +B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571 +74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A +44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5 +A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8 +3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1 +BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64 +01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4 +6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD +DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A +CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C +683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D +87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF +550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6 +2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB +17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB +3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E +F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F +B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B +1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514 +61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7 +124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2 +ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746 +0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246 +D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933 +F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2 +BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003 +75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A +8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3 +B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E +7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD +F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F +F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7 +322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E +523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017 +6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77 +66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633 +B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182 +5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1 +093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838 +B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72 +6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394 +EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF +A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966 +8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE +144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0 +7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F +172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9 +254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6 +5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71 +011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460 +B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC +0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E +3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB +E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E +993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E +0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9 +18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0 +ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F +CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228 +1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3 +A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A +6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B +BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20 +DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323 +1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761 +93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082 +E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62 +4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB +F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526 +4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1 +361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36 +95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C +AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 +50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 +88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 +AB7916D44EC2210CB941B1455867E510E9D8A0B83CB645BCABDCDBFCD51A4E12 +60CFFEF0CCA548F654037D01CD631FC4E1F97B4F65DA9AE79D99F13A726E93DC +BBB027B7D175FD17A704C4668F6F8428262959DACA9F8C687C923CFA053804C9 +9B2005FA7E0F07D81E52A9A37AD5CEBA8EA63929093ED0DAB9F7C99C82A50E6C +6440387049A0C359218F5268C9A28F581783BB9D29E08772D7252FAFA6739687 +22570150178893C418531769CB3D96F799BF1C6415820F96B6EFAB5344E82796 +38A0DF66609F5EA332C1065274EC93027D264B84B52AA8AD82E13E2A41AED340 +B240D1888CB89FBB748FD10B214773D466A44AA2AF44371CA8B9A4450DA76EDC +0167B4015A270B9983B89EFFA023A3DFFDE181B90C51D70557B08444263B84F8 +A2A807C55D74265931B553F6D7F132B110DDDD3361BC9563803C888B89881DD5 +09E1A623957F074F5B3644BB3F93D7F96770C73499AC0AFC3D7157EA08BF9D15 +DA7739FAB528A8BC30C0EA7899A3193CB9E8EB51EF67DF4F97D36005EC228B30 +E54D14471A6ADD6DFC0A9E18243743457F55C92DC10202632F8ED3DA25B4EC18 +A8602DA1E1AB8DEA6778893BA825CD9DE6E52089AACB336885882690FFE504C6 +7C0098265EDD8DCF06F07452CC311A8B516C61EBE50214B11B72132EE0033528 +13181B4280F37E2CDE07919B43D2120C22971BAE4821E799143EE8E2726D21A5 +E8728B8F0768597285E8420B583BF7E84B02BAC1991ABC1A5917039DF9EF3B8C +86C9A3CB4F1666755BBFC2E5623339D0ADDF433A6845728195D58C7AE4C04487 +F42B90E877B053AE9A6DD19B8910851CDBBB0702EAA0294506CBBC0A9A1049AE +CB08948CBFA5E8F07D51336C68A034893B6D146B0897024D482176B14FC63C97 +1F08988DDA2846BAA3E4EA0084642063BD71B165479641E15AB05BE6D9598891 +B18215FFF0BF4BF195D34703919C1DFB595F52568E46ECCC2855F69A375C25D5 +10718CE804ABB8C07763C09D9FF6A363C6210E108AC351864AFB17CB5A4AE336 +B582016781DE6A38EF6BEBA595FF4AE88B8C995D96417152176B66F9180FB6FB +5F6D7C6CFF01901E954BBA64CDDD83A0ADA2FF7CD6DD1EC365080E5159E51E66 +E2B32369F28D845BE68AAE8C67C30D2CD4E6ACB627A8DC9568CCCD414D85A2FD +CAFE36BD8991420E3672E2812D9ADFB4B7FA0C0E027503B6FDFC245B725D7EC6 +8AE43F6C8B168111F7E25DEDFD64AAC0BC8776F2D257A3AA8A74FA883092E4A2 +A887EFBD80EE15DF491C5D43D0CFABA834C11583ABC8D549E1DDEDD1A1A3CD5D +5659FC5808D20FF87DC95BEC80CD71B9E5BE3F304A1A03C2F666597072DE657F +75A1AB1193B5EADB81D92C4E4E41648666F0AC8AEBCD484D30FBDEBDD87E6BB5 +06265B9C04BA54625207A13FE4B6F292D27C3014F20FA77588CEC44C3F67DC59 +7F9A77E3CB226C5CC7167A33C006AF85B806097DA22428AF5F2AC68413EF5F44 +A29A02773A2E0C3116B0A016E5D1F5B212896772ECDA058AAB5FE55C60C89AF1 +0ADFAC6A1EEBB828671CC95C7604D4CCB1CCD89FC758131645522626D280A8D3 +B40E343B18EB52ABCF3511C9DE75D9D10E91FD5D780D5D36E484206EE99BBBD7 +FA03A5526800EAECA69F8B9B62E25017576CFB81783F420DCAED6C94CE71E8E7 +CD158B8F7DCA917ACDC5CBAECC9E0DDBF21BFB63DE462B810031D61B385EDBA3 +5FAC4BE68B0442575E0FB9FAB7113797A7EDE04BB699EAE0A23A47009ED0EE95 +58637EF6A5C077B9A0ABDDC9267290F878E80CF79DC2E65842879F2A7AB9D6E3 +0E296776CBDE5DEB9EDEF38BD020DFBD31379A6FED182FB3A0DCCB340A70DB0D +81280D3A0D373A2E672C68D2B2F08AF6061917779FE33419F77A5CA2ECF6E46F +E11D9803E4BAF5A7D0971F6708931CE92B5F83C998FA4716B73AE9A29E6F732D +A89F2A3E686DF93E5DBB6BC6C45C30736081395456D16E25AF42B0F8064DEB21 +2A9E1E4BC599A18E08955209F5195DAE5217F8189CEC5550C1491EE792B7F6B9 +BA2EF22477B92F0F9F6FE8AB9EAD6D6206377D202660FD7FB4BBB21C9F9E289D +D8F6AABC3862D7CAFE7AE4AA3E02B154749C029337C30E0E6452A8FCCB32B0D3 +E8FB74DC71D0874777F5E78D71E8C3D9FE33939CB3A910651438ABC55BDA1906 +4432BA1EA0366DB8B07247E4D1E5EEAF6AA804350D319AF66CCCDEB1104541BE +4C621C23CF07173F423D277173989655AE4EC72786203E00B223F19A4A1FEBBF +7C48EDEF9252AE6330304B5A92DFD8B3BEEEAC5CA058A9F8562E1D016CFFBC02 +539B46123685E87FDCEFFEC42D0106DAFFA86835667DAF47212A9B715DA7A446 +FDE048EC64661262495A7A9D01EF11109EDDB180C43EB9DB662963265EBCFAF9 +5470DD411214CCAEC8AC7F182DF8BD93FE984E1BFA8A1171F4619D213EA9810C +44C65998F3639A7278966684A56FD3A83060A36416430CB1CAADD42112E4302B +E3331562F5CCF6B5B68B60851AF7EC86B534CE1963A2149D9582820E4360870F +8FB29E163121459FACE85EB665765E6455A2D719C9619D55D60DCA65D46F1EB7 +3A5FCDE0284F82FAA0A49ED106D226D7C0052F647F0904556C4729D50455DBFE +7CFD9F8503FF76A117DFDD2B28BD444DD1B0EFDA48D1F6C2B26D805BF4506D7F +167850D37D16FD07CB5AFCA2C78769292AE449D53AFABBDAB026162AA850F133 +96D2213EEB37C3CBD535554FA70AA75964F357A5E847E63936740D9AB95B13D2 +90F334D8FEDA273BA84C7B370FB27D4701598BD6FD563DBD3A5F7B98FA97A9B3 +3E1F87D9664D7AF53A3B7CBFECE3A57856D03C766F8E1552EB33E441AC3AA6DF +1DCA2B9B577B646BEF8F0B25C3AA843939CD0AD20E0659885C7F8E488D2E8E4C +437ED072CCF065697FAEAF59D6D9E83592121D9B40A202003126983D7E169094 +F7FFF67C8F1F0B9F5F48C616BDA5C100804F8B9E6B4824949DC26B4634AA6C21 +E2B1B891A55E5B954D7987B7E6E3CB5E0FC645D7D0B8F7C627F5C642F4DC0453 +5A8E6494B9F4005D2E5F3432D7418111F730707FA9A0623AE971BAD1AB5FB931 +5EDDAC1DB70CDC151BF085D241202D7F1692A45BFA18EAEE8E8F79D5828C9592 +8D945F5177DDF3AF5062AE044BB523CA31378DAC15E19675497988764781797E +2EF746525D1857B45A0FDA679076ADBB5C4C2644A29225CD1E15744B1635B21A +D64C21EAB13BB8EE8B2759504217D8A06DCB690080DA7CDB2D9BC5BCA23017DF +3C73811C1840B092E3AFF36E3F322E3FD4B6E8A6CFF25BFC2EFA25940FDD4985 +F3D447E20960EA675B7CDC617974772691DEB833CED5F18D98FAC99B1F00CDB6 +EBD9E77A98413284C98E4CFB3726987F80B8A82DEC86085943750ABAF974BFF4 +5348BFF04DA5B9DE8238C13D8937427F03C1CDEE994B0C6ECA9D6ABF474DA97D +F34ABCC065173765858424E545421E38E79CE216F4FD5791FB51DB485D1467DB +0EF3A6DB914F763E3B0FC6BF0AF856A0C2BEC44E875C6D6D5A6AD777DA3B17A9 +91A9825B4C3C0AF1ED5D5F43036FE58CF48106D42825AF00D193BBF3B8465BED +00A2267AED6A07EAD4F5747E1EC018D2645FC78EBFE8D5C49FE792F33DFD8CB8 +CEDE83AE62B5A3112C6F5693A6CA7850D01F2F6582B00E7F9F20672C460A3B80 +09F6C9BBA22780BBA997534DAB7B0FD5DBE4003E3FFE8539900458CB905FB0D1 +8E76029048C7E070D2C24E8840A3269EB340B2394D37B3628EC608366FB2A695 +7FDBE02249D82AB905AD105804B6D8E912F2BB7C9625F4B09A7F99325CD7EBA9 +E7083842781FD5746AAF7AEBD6AB5ECCA4D5928B9913D360AEA835FF9379A782 +7B47DC824CB51E77317540378971D2AACDBBE242BAF561128AF71E639F67ACD0 +B04251C644C9C9B26C6D1AF06AC685B5A0D008EC6FD0105F64976613BFAAD28D +83AB4F5D1CB5C570AD134575EBB95781C701BF4C9FF8C344251773C12E1C0859 +119108448094F41E3EA84BA93A582FFBF33CD086F1FB78AC26E44858863AE3F2 +15DDBE2B9C27D8484C480EC74C1847E4DAF520E507A6B5BDC786145EAD85FACB +66900381C821444834B653F6D511AF6553FB221112A438BCC8193B330881027A +908CFAA18E86A2D326326FFC25457C9041BB23701584BAE3FC9185B4B5AB6956 +D8F2BA841F98B0B93F8144B35234067B12FFFDD274DE40183837AAFFEE380CD7 +28DC181C76DA7A4AF637197F53A931D2666E751A2B899F20FFF9FA312A1A79DF +E04432E4D4591C525B67D008DB6FB611CE089A96D25457291663FA9F264576B0 +74A5AF80BDEA1D411DC027775EB5F1A1B135B5E5ACFACE7EF66A2EDBE90771D7 +5D52FD964D4DDE1C419EF7812B15EFBF7481F90F44C276CB3AB69FD5C16EDD5D +41A3F665C6B86CAA2F7C832AEDE7CE813DE65EB0424D45A721CF7CC7E2E2ACA2 +2F0FB88F1D61B60F5B7557BB94A88B94CC15BB89B9E67B1C93156586703EA237 +398EF6F454C70B7F93AD86E1CA3A722BAE4EB6912D19B56DA223484ABFB4C863 +AE40A43BCA384B6FA642B5FDC1877D993BEB7DC9C572B096F15F33A5C95F66EE +8DD97A03EAA53F319C3BC9D2F12F0AEF079256604C6DF649E264EDE6E30E7828 +7B74BB86578FB903BA583C955B1A4CAD417073145D7B2405F03AA98F989D1C90 +8C3F625B28B2B5A8BB5C3E97DF05017B0DF1C7E32F8203556EC952BB2FA045FD +76A9903FEA605A8F03BC4025B4737BBF8C35DA55D0DC2E2DCFD8B9D6C1310AFD +481FCB0AE96095FF7E54BE72F713E00C5553B95EB23247C8F17CBCF9D76CD146 +86543993C53CD843B2284EDF996A0014140A2BC3D6B7CF1883541F932CF17A68 +09030CB936AE925C6CEDE67B053BDA271A427CAC85EADBEEB559E50FE1983DA5 +69476CEAE07BEF681CF40593806F3766189536EBDF92AC72270EBAA9DEC38C82 +8E27F56DC72BB45C38BDEF1E809B69E8C9A787FA37E636C678B7684A74B718B3 +CEF980C3214631C7E89947CC1577259B3E7ED37BCEC9622538B3E21677C48974 +A1F687EB3BB9662F88E6A3D387C9A30C30EB4E206F586B4A90B61729A84A612B +395975B134FEAE92AA05AF675A9D995F60BFA37FCA4D098F91B9D0854B0D1992 +8A3DBA87301552C291F404FA4F590243B24E3D4C6F23CD9874D4EBEDCD51C1E2 +BAF3EB9B690ADE288031FD6481D5C40044F71CEC3AE50F6704D9236839EF9B1C +7FDA3F6E4039FBD2E5B99BB31573BDDA7236FED53D49CF51E3D4B1EECC9F530E +41E5FD3099C5BBDE367D1ABA42A476DC8C7015E1E028595994748D526E2E1D78 +D8DEE2625BD9EBA9A23BD4FAC1BD00DC3C08B078F96F4252843A566B22718B8D +0D4A3B7FFF310A76ED12B345A3AEE2F6C8A1AD394665A6F8C9EBD044A4AB0706 +958E404F955C4E46DF196E1C9BD16E47D60D4EC935864D1A922A5F08DDFCFD34 +21285BADA201BE83254B4A817F7372B64481B3929F1292E12BC91667763E382D +66720076AC19BF952A5B6A7A36D50338F256119F85E44093EE26D7EEA0DB0A6A +2D11DEDFC942EA5E22F4202359C91C65F4B7623EBC539EBA75815866CC964AFA +6369952AB12AF0F7D0F3BADACE96BCC865B4C246D392F6D118CAD444A97E6F89 +3100F3D786EE03431E1B3F1F45E2BC45AD0EF659667E757BAB0E7182DE558C8F +4CF615B2B286B2EDAA9B8A28312DDC1E586CC1225FF6435465A4AF56CCB2694E +B131A72BA2650689E03239761A264AA922FB6544395D991C3DB620F50006C140 +4258D85225E8013155B4531A6FA2017EA450F77F91AC191C50C1A2FAE77B1B05 +F40339270FF24D91BD842CCADBF9DFEA5AA13CA2C8EA069A242C93A73B9BF6CB +5C01247F02AE06329464E02C5A3F6835C3B2A1F110E0E72D907C8629DC0219E0 +4BD43EAD38454B8100021E55FA294C53188B6323F64C0042CC2F9728F776C99F +66B34990B279FD59B4AE356D1DB317F18DA66AF2E12EB5C9553D58BD075424A3 +00BFA49F981FBC0733F388710A62EE9216A96A959B700B02FD79E2174093D6EE +30E5CA22AD61E0563AA18865E47A4DF8FFD40FCAAF36FA72136533B3184BA684 +87E2C88C4A8F119F1DCC5B7CC8BCA31CD23806E08CB77530038FB09CABC6A035 +E21971E5088665D46747FC3D66B0626295252642C833862FCEF1C749CA6B6199 +738198327FBCD7DA364D6F0AE000DC56AA44D8A7D3E74BB7A7C91B117203257C +1ED384C741B14E526571B06E3665865D89A494F32D78674BB62063DF2A48989E +12293072B16049DBC1AAD7EDEBE0DF69F69FAC857D950BD962E17C8BF097DD63 +DA98E41A07C1C299FF834D41D6B075C8802E1081764B017809361A4C1043D141 +C340AA469642D10EAD0ED5F01314CDC9024EBE21924D5488B9FF775934B1B563 +591AF1D8973CF814A987637E8C8231653036AC5714B74680F23D2A41770C1E02 +22659A92D305AFCE2AFC973776939095B142E60375D5CC0AA54CE490BDE293A9 +F19DBD653D7BA4D9C968FDDEBB95A0B6035016FE534D438DD0BF26336F83C555 +1BF5AD6CA8F02CD063CC67D2929D2B6ABB42DFE5FCEE51D583155BD8FE72AB28 +BD423808157195E0293F75818ED5ECD68294C8B6866948084078D83246E9ED70 +38667D6B3398710C5ABC172F446AA0C5AF3F4023F08CC22D02E51D804299A12B +9503C2AA055914AA5DD5481A1B92CF8F70BFED758B447EEB256272CE393FAB8C +08F090E434EA61838AAA3CF02356D5EA8A8323881E413579C55123F64E817D51 +7504A8A473E7D6C39662B665556F9C5CF0F3DF9D42C0C03AA3FBD95DEAF4DA64 +B41FF342092A5445E96FCC6CC910DD9EDF8DAABDF255814A0D0D874B03D3687B +1441639C03FE3176093361CFF731478E609E4A86AF8810832EF983C5EACE4CF1 +AB8419AE0655F8DD18DE8E68F320BC1C1FA89DF622A03866E8AC8EBCBC336E76 +8AF4E24D9D53E0003E4FEE40D4386BC59E6FE3FB13AB6FB94D28FBBD95576A20 +8F8ECFC0952959796BE533D4867224DFC44D079FB8166AEF46F118CFC1B114DD +C87AA0156DFA28A10D8599B40588E1F84907CE0300C7A8CF3C6DB63505A79D04 +1AE29BB896A6B2266FEFB1CA6799CF384B1113F54ECE96FB5C8C90E0B36367AF +5E580A75E1EA2278CFBD60956D333FA75BCAFBEB7FA767EB960097BD38D4F4F3 +E16F00AB29674C802F1EBE7291B4452664260992AF6F834C1D02273BF1B3EA24 +5D6CB3D611F1A99F27300035ED706E6C3D18F56C7CFC472134A96690FCF476D0 +6843014794534851A4CAAA547D5DC4AADC3D94A03BE478FCDCE19CB05BC7CF54 +8B88D9698141D2309327680139F05275D56D025ECA13A25B3211A0F07AFEFFAF +2FB4A48CD4CC4915F988A619C6410A2E16B031EC19B7FDB904D149467F1D295D +6777FDC0712AA90E529D4768339EF966B5907B41CB1258BE514B39C8F853D28A +8951224C1FD0EA80D19D0BEF548A23E70E9D172A2FC6E6BAE3900D81D4E6C530 +1317BBAC68FFE952F47EDFDE434966B89B9E6DB348C6D3D8D10EF6254AAD9B9E +427FCA129A3867C5A0CA1723D4828F8DB1D99774606CC00BEBDB15E02A88F7AA +2B3F47F420E12A5104A09D6AC903E0C9C715BB99A87DBC453829F2ED8CC6A934 +FE875D5947EB0B7C5FBF193769C209CFB55AB5E331DA007C22517035295F7833 +C5F54040629BFE9CF0FD9FA9FF10A7DA143138CE41689004557E0DA6A51349BB +9530B852DBB52EC7FAFA39FCF8381CE3419AF0E9E6D69B14E5020C8DECFB66CA +7071451B87A1FDD2789736E5A3DAB0644CC9727B58529B5A807388CF904C1BEB +8CD7B322676FF8B7CC6A25F887CBCA97DE6A7CC53DD7142BBBD1FB447634E2A5 +E52158C7CA2951E87722298B50ACCD1A381F3FCEA2B8669026C751898DFBE999 +49B86879D78B50F5CBB3FFF59FB9CC55D6C0AFD190C521C9D087B8F0C34B11BE +7F5C705FCED255F6376E3A86A49B49E8059406A6A387FA711478EAC4007E5D80 +C907C72BCB7DF583F76B6685ED9B4262F607D69B23554D1D275A03692D5DFE85 +5002120CD7786263ACDE7CA7158644D8D8D78A757182C03620DC5112538E66F1 +61B30CC11B60AAA0B1873A846DB6281D7AE2420A76E6F66FA5D5B288B8888666 +F707AA8F77363AE3C2B0BBF0577D0131F0F7FAB358AB10A0511605B28C5402B5 +C5EA4466ABBAC85601CF8E61101D80F84D7FD7629620B931302E14E7A89B8955 +41D7A89413A906399D5E375665A4C24DEBA6DFFBC751E23F4D17642D391A4626 +F8397EC5553572023B0F57D5430E35163156F76CFE24442D041B6FA0B44AF48C +15FE0C8C9CBC300AF3A8BBB79B5BA6D2D1F45A294E201DC327BCFFBB5CBCF384 +CF4FDE8C9B07874E8C954603C4A4F0EE585610B19976F6682B41FE2EB56299BA +25EFC2604FBD73F7DE1AF858F325DB0D1FD2A3F8965A1DB71CB68C23ECFFE678 +E08C34E52C0E0B4F61B2CBAF3E765ABABDBE364B31C5C7AD94BB7CD5C92AB012 +43DDCD9A83C43F021176F69945AE6A702FCCACEBF5DBCBA63A92D82453DE824B +B240CFF9B29DF6677D635BCDB3A22DE9F1C0172F32136BC107A1CF2C614897F5 +D6D1C35B2ECDE7E0C8D8BDBF30944D46DEDBCF50E9C45D49A4AECDD5E079BA5E +4866856A603494B605E4E5BE811E626B6A5F54938324785CF96240C12CF83F2A +5302D5588F54E27486A9BB00BAA9262145DA0B7A1DA5E514DD6789692290109C +3F6C8C1C63E49C74BBCDF5FD1D7CC7CBBDEE68BDEED59DAA8BF185044C159365 +0CE5077F69F99A1368365057527484D54BE5461BE90AD66334149EDB5EE3317A +E9070F453CC27111F223C18081AE540DEB5F17E1978E28FB47C5033AA48E55E1 +AD0574F400E446499C63C0937ECBC03CD00E75355E2C41BCC160FB1D793D0407 +355BE741FF520F35C41C0EE6F7FE36065F33B4E30C6DCE227B4B514A575D09A0 +47A0BB2C03240393E73A976A06C6FAF22B9EB30619149F05E9B65F651F8E6199 +634F9485E2AAB2BDED709E56126111165A08D0171538BA37E325A173E4982BE2 +55023BBA920F46060883183231565C764196AFB26DEA93056F0FB140630E9725 +1EE72FB4374FF43A2A8E0807B8F77EB429B7B9D5ABBDC04072836F7EFB4DEE53 +26C1CEC5F6CF13334B84F47EBD1975A83FAE789C309A9243919104C844B6220C +F0FF4E9C6E693A6E4EB2D260D7DA96FDB956216E30C5EAC29AA568894361FAB2 +F9EEEDBFD197B278BAB7F2AD3DEBF46B0B1EE58F005132844C96171806BCD864 +2FD40897CC3E719856A9D137B772AFEEDDAB2D2B353C0705EFEDDC42D169818F +A2D0404F7C84DC9F9CB7527A36F7D8555FAC44AF8A91E872985FA0D758D1C898 +35BE8560D6B584ED66CF9D834C9EA63434575FBB33E54554D9E4B127EC94F55E +7B761616E717A84216C8BC656F79B0E567553932D9F30D3355A30BCB9DC8BC80 +1779D6995E35B3D97D019601BFB970E3CBE8483FF168860909534621D8873D37 +0073F48FEE38F40A8468FC016F7F76E6E1F09D33DD992FEDCFB2ED3860472E84 +6204643E41699ADF19440FDD4F0DCEEEEF52351B782DD90583361B7B8B5541BB +61D25A5AF18FA9F70C599F424C8F9DCFB47420CF4104120FC6F9EF03DF7133FB +27ECF4D848F5E067A27377985CCD10DF85D1E517B813DAD36E8A40664B352FAA +184A8DA90C0DE095DBEF531A2481BB31996107FC057A9D6263514089FA589C0E +AFD82DD4EFEF08B80F0F5D91B22E47A0474E27A0EE54755D6280AF36D52E0938 +C57614778147BEB2E89B4236B540457C7FF03BDB6C6978BB69584FCB58AE4625 +CE733497EC0DF25BEDB7E116C6C5D3FEEEB88D771D616AF3D050B3FA5568F6BB +0752DD30E42B427CB6E6065CD968C6257F2B325F94CC09F5729FD6FD3797E1B6 +C403A0F1B8F3784A856226E64EC3FDE9F4837B512BA76F78F781E44888186DC9 +C2CABDCD59EC4145F6A70B539A55941E830E6237C72AA0B9BF6EFBA37C0DA4B1 +CB4A72627A658600CEA384EC9C5B0CCD3C1ED49530A29C6A6091529CD8D6B2B7 +027E5759C87D353F4090802F13CCB8BBADF1AB157AA24310AA275F0A4FFDA93E +00E05E4E534735CF2E575DD02FCA3CFA96A9896451E9C0365CFB4952667E2CFD +D46D3ABC40FA8F73EC68072FB5AE920E14B37C19FF936649DF5E8A978E9DC653 +FC7DADD3C2DCB18A1839CDA3653470E56E62230A148304BFD323CB1D39F6B50E +D5444C8608AB03D73183210E6F4AAA2EB97005E0824AA42A2ACA2732A58B1D36 +B1EC88C9C5E2848AADED90D2F1BDA936C84263BE055793C553B986B73FE8A22C +1AD099E1D845D5AA1106670C003D889E169ED1877DC454B7601112DC539F56A4 +E936C65227E657BE26FEB41C8E950BCF54224805D9FD6D2516C4DEC09FAA3753 +262B0A82357EBA2978E80C291B267EE5FC19FB8B6BD509DEE723E032FBCAD28A +658F6516D60AE9498A14E1B0AD1FDDC65025EE114FD73EB506992C1FCA660041 +98B6C72AB28D643BFFE1160F600543585524AD00C04BA1C54335536D65B7C471 +FC823F7AEF385E4A013C4924750DC2DC8F12388029D0D958368C15B9C19D718A +AC77E9831E75A330583871159AB63A0332984FDF9D0498AFFD678ABA43FB885D +EB0662034DCEB9576F66174254B26CC515DDAF9EDFFADA446BB02E356E2B6499 +C6B7F4BADF5F949F6E50CD85E869646102F2E5222E62405A4798955E7F4D8018 +050125F9F5F1D8B2AD8F4A6472C2661DF0BBC6B669868C6CB8B52D528F389911 +CD58F5AA9592027BE25DB1946ED1216F2E915B4333AF69C8C0CCAEA467A46376 +D0AC46F291251D3B09883EFCF8EDA7386BBE03A5DA3B5F2FEDE4EC516FDCD92F +12D72BF6C7E690AE3FFCD13C587D2A48574653F562526B0ADCA0B701BE848951 +3A281BE4957189FC236B8CD68FD182FDE918E5C7FE2EFE91C4E6573BD9D0F0C6 +2DDA5F477152DBF21676DEAB763F441C7984F7650920CE6EF3DC77D707F8E03F +622F8E97AA3E7749D080FF7CC0FD1CC561B84714BB4BEFF4628DDC90711AA7DD +6EDA62DF8F73B9829904E802D8E0D60AF8F06A0DAB973B4C6A89020D3030B61A +D8C92ED9D14E29AA92C5305FC4687061998CF71056FE50AEA39BB265E6DF72F5 +F6EF4287D4DB779617F1CFFB3AB1E9D9DF73512C86CF2A82354749586EC9F273 +8CD928A02590A5C51CFB2FBD5F5CF25488800090376519E4A5CF5F0D1FC98BDB +101ED47F36A3678FBE57A31C09FBDBE605F0E9CBCD3254D415061AB3B9E668C2 +4CF41E833517AC0A07C3A0AD412E608CB5F0996D27E7341A2C637931B1BFD660 +1C330898C707F7323B1A47A6E6794AA94EF07C99D9BCD106108EEB903549140F +31D5E0DE52FA3FCDE78C9DB6F202940E69F86DA4AFFC8974D669A8802E6D5C49 +D60E640E5433F7474BD623580D24432927E6919E575FEC9FD044398D6174DA64 +7E6B7B042777003E55C4DF4981DC0A45B3AC04B1512380CE39B97544D3420C4C +B926016CDC82F5CD160FE7106DB362DDACEDAECEBD20464513AFA156038414C7 +DAECA2AE5D517DC2BE95B0E4707E0B191B3730EFB539CC0D3B80E1CC7B6ADCC9 +1F142222BE572124CFAA7246975BD131748A110B0362874FB61D91EA94A4E330 +B88C30A9CC1F7EA5AEAA12018A02EC5681D000A889B19641609A6E712116B7D2 +C7A04AA207CFE9A619290044CC4BDB7979502B5E7182D742DB646A923973EC3D +04382E589C9FDB590D5B25A1D414060802E1251E1F0DBED3B2674DE3FEB7ED96 +50AC23B0E3D9E44F2904B064D06A002AB11A44813BBE243F907681F6A5B7E4B4 +2BBB1D15AA391977FC0D644B9E4EDDEA1F6593F9D6D64F30F1F8DD238E762E53 +CC5B588DA5014CFDF4E281A34CC875656BF31B1ABE80617C269D3C32EDC40CA8 +E354DD255A369C4DF775C35EC9FFA8941D71FA984261AC1BE8C09C5B656658CC +CC2AD41D7CCE283A5530AE8DD2B8D03BCBB3B6B3696FD601C563289526310DBA +FFA90463815A687ECF1D69F69F7B449AEDA02A15E1A9227B0FEBC29F6E16866E +9E0FF502CB87D973ACC8D1BD08B5B76798CAB1A5D8A17DA7CC244EF085F080AC +96CB5CF0F0B2DCE2A1DB769A8777C971A7A4550C759071440654E195A7DC4044 +F60BD207C81295CA20A54903E0E2EBA0726C82DE70F2880A52198CFF2AECC6FF +0DC562A031D56847F6B8E3FEDBEC86862162F3E982169743CBA32DCEF2DFEA24 +D548A862DACE88B14677B0657420CF60E9E186B35AF3863BE4A9E5455BDAE62D +D39E6C7DE4B3E079BEB082842A1486DB5F8E759204926F146037DA7A77CE50B6 +8C29BC9B5299739FE52778D232B44833033A7DFB300429DD002E14F37EF31D08 +069B7D94E70BD31F90495D237B4F175540B12675874396FC75F9D005497F0424 +F68BED0F8CE28AFCCCDE87BF0D0F5301DADCF69980812F989CA9A7642FC5D50E +0632D79277781F3CD9E014E9DA160B2A56CA7EB621EE3D89018774B34E943F8E +EAC217CB05EB834B562B03CCEE6E457C681692C54339506BC7447B943D151012 +93F026765C80712D5398D3EC320BD4864BBA9C4F7242FD066CEBA54390D119BA +C3A15E45CF70E4999BCD0BA14FBA7C6480DA52D9900CC36DDE18693DD1FDDCC7 +FB5BCB5328E5304C0B3189166A2D7F3F3EFA16A4D8C8EAA30CDA83EC1BA519CD +C6CDF954A680DC9487D5397201A20B1530AC427F0DD32A17B8823428E4D1AD8C +8C512FF0F9576EBB8639852BF36E043E302D19A3B559F5F43D4077AC0F9CCDC4 +1A0B6BF5A5F657CB0378772D7476027E060D592492534DA6CFDC84639FDCF136 +036EAB94BBF6AE2A3302A6640EB48A537B579532A557C69240B5BE6DCB609E65 +B248336A2F7A326E85B9651659AD493245223EA204DC2ABBF33007DFA9307E34 +90F924B657395F3622C5449CB9965988E90A9B840FBC2F8B74BB2151B50467FB +0478F1423A776F79DF8AC78E999B1D6081A9B83F714ADABB5C548CD2AF4E9EF5 +A631BD50FC51817AED8EBC6BF7A46767E562BA211561347D89308D28FBC7C04C +61A1324C22E2352DF95EAABCE7EC3ADF40B863589557962D4330F443D0A14F5C +F3DE678CC2C45E6582F47F4EB36EBB12A73B395149CCDBD9A92E3E7A9EFAC658 +13AF608A3BF637A36A7318A342FCC9804352E361AF67436E7B4E6361FEB8656E +6FC5328E38D8C855BB6994E602481654E5372BEBBCBF48C63F6CFACC9F3D4FD3 +95B963ABCCD595D90C427ABE71671BC690DB170494938B4A9B8C0B329C4B0F65 +28B3BBB68584C7CEC9975566FFBF29EA166441185340639DD0FB38BA355A969B +1460753D46ADC2B94315E08A56E5023BA5473DA1933EAF6CF46C1C6413966EB6 +246A6F259FB72738C4DF24F91061764EDCCB4B1834F6EEB9BD80AB12CCBB6BAE +3E9715FC068386456612014DC8457AC3EA92D3140C7E9901856FBF9406F5FEEC +C4814CB0CEB13A44908644A5B6D69DDCACE742080D4A41A70D93705433D8B1D7 +51C782D483FE38BD619D1E0E863BD24AF8D1ED22CCFD1DDC63E481DD1D525BD3 +A69323974D440E4C676A8480ADA8BEDB2F8D7B82DF7E8CF71E9BFB6594A59055 +A50BF0B479C6D1E62E1C25E9BF89C898F815558AA20DB908210E6156A3C0C98C +DB0215DC67BEE211C018E82F504DA56DC959DE82E9467C9889CFC353D379E8D3 +08B40C015840E9EA9F9B11AEB3B1690F7B51E00181EAFC769C32A0EB57EDB2CB +B8304C16B1E391D9C83496A99F765A2F593AE9E60170F93E68D99414A71B2298 +F869CC5617669A5842F10170D8C73BE732CFCE2A2803B1ED4CC582817356A304 +2E80D38F53DB04091D403F76E9648FE51BD4CD3728FE0E27C563DDBA778D2B57 +8B9082ED2A2EA10C0A9EC44DC8695E1B930F408604FC497BB411F34718535925 +A8C763ABD12D21129E018416D6A7F3B85010642706F63E9109CA68AC84FF543F +5CE4ACEA6680A279A54A7E0A83F28B661684AB955DDFBCF3483D2255986F8CC5 +2141404DA424CE7C0F45AC2938AD5A9908B18259FD2C7865B242C3A6427DFC53 +B2AB4291DDA1CD7484AADAEEBEAEE1F6D9AFD997644C576E703F9588338E7DC3 +3E8BF6265048FD288DABEB790875CB83D7102EE1EF1ADEBD252146F5F1C34CA9 +270577C4D71EE41705F6A2F76A17463C8E553BF1E09C06CE00A600B907F36611 +464B9D2974D1C9C8BCB589AC5BB056FA8502E4CDB65B7FD34F5FDC2108915465 +E92B246505C67119DFB1E0A251ED432409F6674195B591E704B029E40E2AA827 +8D8C6A1E2E6E8A0FFEBEFB75896E0943E394F90F03A0DF61ED23E57A24E0C2D2 +79F9977AAA33E6AA211B48720A1D0AD4789608A29ED895DAA0D4A2428654EFFD +F5EA4087E6F727DE7C5EA25C15FA2A6A967FD0A240E890997D78AF8466EEB7DF +8D8BE4552E1996C4684BCE3E853E1C541C7D9C2333ED357D179E4E92A44518B1 +06D92F646AE65F7A27F746EC366EF4921D088CC6CDFD723838AE89648D6B6EAF +824C08B6AFC9D8439DAA5CCC862FFA61AC4B0EEFB2453C972B1A64FE31C071FA +A2DCF66B9CEED757FE42B9DCAE3302F807F7CB2C779F7441EC5F11C776036719 +427F1799BEF7CDFAB114B7C30F27C43CE3D71A71C7BA87C4FC34B711FFCCF892 +23450E5CB964642AE0E4638FF80A913FB7BEDF489DA43E315E8CB8506A4AE884 +BC0832A6B83CB4B390519DA862769AEEF454D3C4CAC6CD3899238A044718FEBB +59F5D7C79EE547269AAEF1ADB1DB7A97E5A01435D957413FF0FB229527025DFB +E1BC87C4198E5EFCFEFA3ACB877B1370D222C1CC30D0AA411440B6A59D545D53 +7D72D4D98337E08107FE636E3F25932D57108A8E3BA3F72006744D1B2E33EE8B +CABD44AEEA44A3307ABF8AC6B68F8D83CD6EDA68951673D6984DC6E2FE260C16 +A8673467A85E727DF7D5F2E5909BD2D22D272F87C945B0E93B4EC1A759393A9B +75F7C462B34542FA02DF5548CAB66E75B88A834354AB7439DDE480C6068A214F +D3748CE5C2B2F1693DE0EA5162771F7FBD17F5A1A7467667CAAAD0610F38CADD +89102E1351F7B5DB870DD9A3CEA56863C249263A102E649FD16FD827BD60BD19 +E680DAB90D235E5BF75D5315B2BE376EA7C1FC97D709FA12CCD937CDAC17845D +C373FDDBB0533C37169A34CF072F187E5661FE60DB1285920E3AD01EE806C874 +48BF676D73DCE4A919E3BD19B6A6DF8C4A23BA65A599774CF0E45F2F20410EAD +5A9E43CE85B335F953A0879CC8327B903C0F24CBDF65AE01836745EC4946749C +DC9810CEC0A4868C3356DE8D6447547785EEBD102E069C2DB83EB107696C8EAA +EB71EDB076E924F27351293F26EEE77DE1ED19EEF02EFF9DC8AD8827BFD0E10F +E3301ED3500E006F4898D0FA373F902A40DEAFD33850059A0EDBCC4FB23B7BFA +5087714FF84D9D987933D86D6533C0784BC72A32DE5E26A4CAEAC39715A19360 +79DAAFB08C7097553749CC993001EF6C17100AEDAF505DB97CE45372632F5CEC +A48C77B21F9E50E81EDE28E19D604ED0D7398D9621B7428F729FFA20F9DA8847 +F83FE50721CCF7260F38E1DF313C9D545D237A28C15934B1018C513F0AE93D72 +F0F22E8F2385686BCE5435122C3EB067F4AA14FDCFB812E7DEB5BA9ADECFBC44 +BA562AAF8AAAC463FC0B2E04A4BA98460A16C49B8AF7B9D624012D432E29FE9C +44836E970CCD5900BA3C2E7A9F4FA98E4AC8DCDD503162CEF4C0CF1598EF607B +E11D60FA839D420207FF3B46E1F432A69C99722BD77535A5A1827C0370BFDB83 +5EA905F8EBD42B427A38FAA2CF4E819C9FD74BF27F548875248AB6D00D2E29FC +6060F2F151C48B758F2C85C1EBF5868A18A1B747D324F7DB49855024F213092E +FF0BA46976813383A25196A4BF30EB1D2214362C75603407488823D2869ED813 +2D84E759F25F9BAB59629C2AB691076AA9BE254A27B49652B05E9AF71865E5E7 +BC324DDD2A1400F4B2888620E60EB08A9EFABB287CA0E52575A364CB0F22380F +E27FC8A0DD537BC0959413A2657AE6FE12936A61EA31ACA64F08523AD9B21514 +0F352F2EF3DDC159795F83E9E12870C13D1D9B98D3E152CED06D3BBEF27B9531 +000CE08D0B280C2C37C8D295557F1BA92C8233259A007E1F0FA0D54762E7A6C4 +28AA751CB4E4D6AB5466D8A04E4AE9F64A3781B730A0BCC6108C9D5198810D35 +CC353F1E76DD3C78D33772F3B3245716DC623F4177418224AC4A5F3E2CA59D03 +95BD0C240231093AB97FD553194ED4B63856045E23D72F67BB6D6A4D6CBC0FA6 +B62BBDF0AABB66C36DACD73A99801E813C6F3BBEE1AFA053BFC3530F2699D2CD +31F66636514A088710DD1DB370BEAFC47470A122381AB4F374BBFBD2AB39A953 +DD0FC82DEDEA60A99C9EB07EC0F702547C9ADF01164D5B22D6A41059984F347F +CAFE7146B3626AC97EC8AFB2614D085CD5FEDDA92EC73D7EC86FC0DD5BC9E912 +D68AFBC4DD321E00B6954F14D5CD9D6580C8DDDDB34ECC92B16BE8953B035AEF +0523D929EF5A086E7064E1117DD2AE2CFC346889116731CF431A2E22C6FE34B7 +6B7535EBAD4AE760956837944EAAF4F001120CB784D249E6CACCE4E0E0FFD8F0 +330C57C7A6E27545825F36189476B887BD56A72802D8947A42323C36114FBD24 +B47F11B3B0F7C5498463F54EA557574F1A8EAAD4D47964B9B244D75FEF37327E +6096D66FCA9E617E441978D58AD792A93E3C37FDB5FDE506AFE0BC0588FDDEA1 +2E64D54283E22364267A5B499EB52F623FFA9CB11DE74FC33715AF2ACFE57C25 +A621B07E7D39E56F4ED2AC442C1B85B412DFA95C574BBDE5111A09F2F70F46CD +FF84965EE534CC63034A2E579FA7928906DD2E64560CA3405B7B5247ACE33391 +F24669DB56F6BD022BBFA47934547003902ED8344277AE5761DBF7604D69C02A +33A7F20EE06494669AAE3403BDAB6E4C4373DD56DF66F9700A06FA86B030F3F1 +3B8210C9948A6EEF8400C952C4A81159316390109680E5C9C22595D8E6FA6717 +B0D6803E850AA03F2E854F0A39F819B64357D53B3FA73AE0981ABFEE4352353B +E5A31D3C3672F07FC2AB8FCA25E5B047F2AEABA8A658ECE9E35579E4214A9834 +C6EEA901E3A72FB1521D22FF6F117C6E80396CF1FAB02A8597F2407BF6CAE3BA +976537E118C6E84C69C76889DEEAFAD6D658CD83381C8CAF989C52BFC59334DC +7ED97D2741940291B677BB4AB0F02D45CD63379DA8F02F35658F13AF64F9D6AA +A42A77A6D2A1653BB1A0FBB7A52249D8133440827678AC81A66FC3DAB5A55F25 +B821E7B5153C6FACED54C203E5FA9F6DFDDFAF54C9C870B719EB0EA4C1131C98 +5DE4047C1862E71FCAD3E4FD982FAC9CC900FC22F6770712FF82BD27683CC442 +9B684AAB15FB663A04001D434E26690056EC7EE8EF3D3E4AF36DFDACEBF21B2D +681A134805B6D34D639782170DAFEBF22C888757E4BBAED1F72F2AEA9ED6CFF2 +C477430514D06ACD1E2AB0BF1EB27EA4DEE773DD77D140F02D2F4D5DB55B07D8 +23AEDB701A2885BD8AC950E8DD285172BBC6CC90A000EE8D5FB6C4D2693C70C3 +B90F94B7F806D4584935D69257CA0CB3F72BCFF88087865C9326F94BD3FAB401 +6C89D92242195DBE02F2437F6A96170F1D0C28623D6921EC424B6222838D18FA +E07B02189A3A79B317770FF5ABAA3D8EC721A5AF14B5276651930AED5B20CACC +34128430F8D6AE1BB7A52DCC22A9796792C926528C0DAC4FD652906A43D695B8 +267B1E89FC1B96628CD003FC2A3E8890E68655532146DC927D36C60E98E956C7 +F86DC4B803247084EF8014C3711867EB692B06F90E1B099501F4CD9AE0EEE694 +5A2B34E927E5239DEA54A8E9BD542DA437CD7928C67AFB661A72B9A2914416FB +6441889C6316F0D4045E09419F5D507152644126C4B614013B868D9F7631EB98 +46A5979176C2E3F9F6463BE83908141553E90F523420FDA7ED53F711C27A4517 +1052685F33B23C9A3D34288073B7FE4AC7796A0C3D7669531B4A4CD47C8BA1BC +9179E425B3C5C004A93ADE699B521F798B9AAE48753028A9F95F68ABB41792E8 +D067F9819247E7D81AFA10D72D0A7B3EFB3C202DE67ADEF30EFF42B4FA14DFE8 +573AFA45CF40E34AEE040ED718C7A37604E898F79184D346AFA0299ACE9BE973 +90B606F0B88DB4336292577439829D202B8BC881559868C2D32DACB708DC7EEC +59632D3E618D37B284780AF2666CC81BADB341C10C9745A1437015AA91AF676E +36741DEA9046B9EE93C70CDE6E5BE30C1574E295A592B03B951137A5443F980D +C36ED9B52125EB8A71078F51FC10BB49CFB048A54824A6911D945641933857D0 +A9DC80654384B562FA3F5AB575ACFFBC53B493A0FB579DC9DE1231A49FDF4375 +865FAB1BA20E74E4B314211692DD359441E47068397D57E608871CA05FB89BCF +E0D46BB5F84BF354BE90BDDE0ED7C565B84C32CF953F2BE1136D9C651891A894 +FC786EC9FACBB8E3F0ABFFE37463BEB48D313D59BAB7210BA2B6CFAE1B2A8BE1 +ED6B45CC9E251C4E8003E5F562EC048B69CF13A634680A2C67550CC94CEF59A1 +F217EE7665184E18D63DC0C91F5C606AD52F2987D379088B39E217C33CA14538 +DF3FF835551D339BF2B836957217D3ABB4DC57BDCEBBCCE14B70DAB6821FAF0E +FE68781DAB924B6966569A4FE5134ED14A74F72FCCEC988EEC4868DCD443A503 +0974EAE6F07E8311C1979A3B2B586188EB5BBABE38017D31FE9685EA852AD59D +8CD75108CDD566599D06B611AEDE7C492B3E82186980527C9281DE79D7449BB9 +660A8353E924B4DB1B9F6166553F436409A93BD5C603021AC613D5C470EFB743 +A6ABA267B872D32B531399BF9ECB63364379CFC3D1804CA7BFDDC19D8AB9560C +66B7D20F94E6AB76722D02E681D3E4561DEE24E21977A4C76967FD8D6499B435 +18BC23E58ABAEB635A8683C4D13551CCFE2B2179661992E3AE95EED9F0470693 +D09152B40DFBBB0298A9429F8B2300676D0353522265ECF91369F3A9888A26 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +%%BeginFont: CMTT10 +%!PS-AdobeFont-1.0: CMTT10 003.002 +%%Title: CMTT10 +%Version: 003.002 +%%CreationDate: Mon Jul 13 16:17:00 2009 +%%Creator: David M. Jones +%Copyright: Copyright (c) 1997, 2009 American Mathematical Society +%Copyright: (), with Reserved Font Name CMTT10. +% This Font Software is licensed under the SIL Open Font License, Version 1.1. +% This license is in the accompanying file OFL.txt, and is also +% available with a FAQ at: http://scripts.sil.org/OFL. +%%EndComments +FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup +/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /CMTT10 def +/FontBBox {-4 -233 537 696 }readonly def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (003.002) readonly def +/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def +/FullName (CMTT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 33 /exclam put +dup 34 /quotedbl put +dup 35 /numbersign put +dup 36 /dollar put +dup 37 /percent put +dup 38 /ampersand put +dup 39 /quoteright put +dup 40 /parenleft put +dup 41 /parenright put +dup 42 /asterisk put +dup 43 /plus put +dup 44 /comma put +dup 45 /hyphen put +dup 46 /period put +dup 47 /slash put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 54 /six put +dup 55 /seven put +dup 56 /eight put +dup 57 /nine put +dup 58 /colon put +dup 59 /semicolon put +dup 60 /less put +dup 61 /equal put +dup 62 /greater put +dup 63 /question put +dup 64 /at put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 81 /Q put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 88 /X put +dup 89 /Y put +dup 90 /Z put +dup 91 /bracketleft put +dup 92 /backslash put +dup 93 /bracketright put +dup 94 /asciicircum put +dup 95 /underscore put +dup 96 /quoteleft put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +dup 123 /braceleft put +dup 124 /bar put +dup 125 /braceright put +dup 126 /asciitilde put +readonly def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA +0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 +51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 +7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 +E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 +0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 +C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3 +7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260 +6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89 +14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0 +0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397 +3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4 +BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F +D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0 +FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB +556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F +8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E +F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB +B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673 +125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787 +A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77 +4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC +56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178 +E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F +15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385 +2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9 +05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390 +6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD +04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728 +C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4 +70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA +4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A +A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473 +62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364 +240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D +69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2 +ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84 +121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4 +0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB +D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A +0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157 +D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C +550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844 +CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A +9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4 +FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F +7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06 +E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6 +50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A +2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05 +9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2 +44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE +49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9 +385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091 +8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011 +6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C +EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0 +E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB +C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE +484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29 +4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0 +0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C +6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F +5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C +1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3 +909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8 +BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506 +CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0 +2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0 +CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08 +EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811 +0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6 +9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A +D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4 +21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0 +7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F +52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A +FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD +AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7 +F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429 +067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E +E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431 +C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937 +5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B +0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD +CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC +2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD +E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714 +56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957 +F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F +E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F +0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D +67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046 +EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7 +CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8 +9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5 +9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0 +C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861 +327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203 +F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC +60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD +A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4 +B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5 +0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F +1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1 +DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D +55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C +7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E +75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5 +E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149 +8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E +F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB +8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F +D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914 +54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0 +49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9 +CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0 +34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276 +1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA +6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A +DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4 +E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD +4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD +2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC +ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934 +3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE +97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C +FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570 +A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF +639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4 +D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615 +E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2 +1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E +A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3 +F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780 +5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5 +4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50 +664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844 +4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8 +35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04 +1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6 +01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A +5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82 +2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0 +DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C +BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507 +39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1 +C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665 +99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481 +7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE +D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8 +6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184 +5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38 +6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B +F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81 +E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9 +39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81 +7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5 +ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77 +6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882 +2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230 +1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41 +06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE +5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A +288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E +7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F +759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF +E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E +03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A +6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859 +314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266 +74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D +906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36 +673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E +A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901 +931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B +CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390 +E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1 +4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136 +2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE +F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B +E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE +E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE +251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71 +7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6 +46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C +E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33 +DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813 +F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46 +507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025 +46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49 +2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C +C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23 +CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176 +57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6 +788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B +A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C +C63B5B76ADB05D44BD5BC0BB3EBCE2E74E1AE5F7DE07A59D90C932DAA2553505 +27F2AFC05F7CEB39E1C7E54F69FB0BBB069959F2FBD11709F8E81F6E7CA06DBA +1CBDD8E7A78487462596DA288B50B295E46F4C3D9BA862688C68859734B232A7 +4B371D2BD786924F186524765E789EEAA30B20C069322D42C893A30BF1BD2C46 +F8F3732DDFE80B8FC1789239345944D8B457824FD80D11184E73FBA30EB80A9F +2FD466826D4E666E3A835B98A1D4AE5D17053A6A648E26E77BD08F9A3E02956A +AE82C4929E9666F539079846527D0E326FE7CBBF86E3722BA3E53F8A5121080B +ACF8D3C67A2A1DF624B9DB92105D3C833F5A6ECEC108E026E1D3D968967A1447 +15CEFDD09123D56606134BC3449404ADAB1330C9238DE48F3CDFBC91EB86D7B3 +8B85B5BA97376A0673E434DBFF19798EA90BFBD94493E2D21976F8106FC0C276 +C81C9B9F7D4A68120DDA56FC6EC65FFA40DB78A60A05EC270A106DEEBD2CB92B +F0622BD2B1D43771DF39AAD3ECB655F317AB483F7290C148690903AAA636583C +99DE3DBA99EFE20773D3D8DDD816A28D7BD8881DE570BAF5C7A30679179E1214 +FCFED81605FE56AEA21C1894167F93D648B474352A65C0756F812F97AB435ADD +22C031A21714A626DE35308AC51CD676DB1748DD2773532294FA77CFB2AAFD32 +A72BB7A045F12B4934A768F89217233DBBD69B900B28492A26713CA5D61A9042 +A982CB071F1F875718FAC168E4E275860DB6369B8114E1BDD4801110B62C3E3E +CF140554C826967A99F4E9726526E87D57BF845CE38E33893E5F9788769B6A4B +A4577C38C8D45AF2EDC9F4FA7DD9979AB8E14FF5D8956233AB4C02982BE8E561 +C63B7BC314793F634DB6F086E1A60D9FC3B69D3A7C20A99FBF3CB028CDBCEB60 +E803C8DC3C5F0CCAC030905E72BBAC052520CB0E40E23B46B2150DE67F61E4B1 +8C4D55904B7F90DDE4A4A78B11AE1009DE46DA396791B1C0EA63FB6897FDFA0F +42474042E7E9B06A703A7C6E672AC6705506F3C0B6861BC85CEBB9DC9BCFDE0D +43F5248CD7CAD4B89835BACABBCE6C791BC35FE7211E775C009844FC75CBF6CA +DA6A6B7B488270BFAFFA3E9950914CB0F88C8AB7CDEFD2FDE11ADA7073037EF3 +1A5CEEE37090F3A56D06FBC70597907A26498593783878C02722ECFD5D65903C +7D421CAFA78924DD27756853568535B02533C3393183D6E30DA6ED4BD6582E09 +A5A4B4404EC452E91CB44515AC6124EBADAAE8A98D8A95E7D14DA39951EBC461 +D426490071462F246794023DE1BDC04AB0F1834D50F748C3C60A07E1FB8EF400 +78DBAB90B59500BD1232A872ED51928329CC8F06E83164FBB2D0B24222223EE5 +992241E8E00D5DCCD6DB9A8E2325ADBE12FC8512AC127BBEABDA739672C1644B +554850CD75724E6779A7E76424CAF89E9455860E0AE2679231F4A535C0ED4336 +313717D6F7A4A4DA833847A1BCFC7BF99234FA645F2B85C9A9AAF7108931E3CB +077A9C571E57B0D7EFD92B56C3AA4FCEC0BCAA96005E649AE8012366BE6E62CD +9E742F8F45AE4C96BCD73AD80AFB6F061D629ABEAEC3018CFF45E41F46751953 +44E490B1355DC49C1E10BF343307263584091D122ABB1E3892E532B6DBAA105F +CD48375C112331EC5DB49E4D4CE2D126C9274B21E678E5E3EAAD4EA0CAAA29A7 +86FD8819217B195EC6E40AF23ABCD71156656DAD38C931C8730715A2773DC44C +4DEF14D92C2A054739F27D7EF349A0EB76D952BD9BA169B4F85C09D80984D232 +2CB4A3812BDE539DC79E2EDC7C221739D16B10246A5F57151C210878556D4176 +31EFF3AB6C4D78C4F0DF81692B3C9BDE4F85242BF0E84BACBFA39688BB222A81 +E85E9CB332868ED5B64E140C66E242B97A90C13B6DFBC3D285A49BA9D4BA1A47 +64D83577FFB50BF974D953F42A249ADF9AC228CC4D8E82213FD463BC757AFF26 +DF4D1678FBCD55AFD5FB3014C0380B2F8CA9D6400DF2AA041580A6FA5694ADBA +674286F00E531693DB28F7C996D5A66F80AAAF53001EDFBC065C72FA5BE3F114 +1FA3354376AEF7374AE1D0A8E9B06C58FD029922164DC9FA09343FB6652232E2 +2EE34C662F0092BE479D739ACE775C6F589775DD768B736F7391B9AEBDE7F760 +727702E145CF749DC457B2E98A36C52416107B1E59084B5F777B61511B8D17AC +88386A7933CAF852CA23FE179B67DF8DCF15800755605847ECC0FD77873727FC +1AF2BA8BC75D30E26C40913771E528724FD7C5DE284A8B58AE55A5C48AF26AC8 +02E155B8FCD6755D8F7F5A6F1AE66E4D24A13567B6463B18E65972BD75ABF732 +FB41F87A62FECE9A50C697BCEA1E3B3DF1E3DC961DCA598220CC746326F85F83 +72E803A4E69106EC5BCA01139F92171DBF9964BBEC8D3370039623CA1F927CBF +FE7DA71B04B4321EB4D3FCB27F8404994CC7DE5F26AB8FC019A203D6DF2F449D +85A4F103F7604986A1AC1F7D05D239E728FD6AD1DB5024B0A0542130D2B0E7EA +4432F910F9FD75568F5732EAC95F7A87CEBC359949C26595741533E952327791 +87E42DF84E1064E1BDD3F5A6455087B8E9C783AB9ABBCAF032E9FA32C27ED7E6 +CA7E3D1D76CD1905166090BD81A85485B9B4E976DB2E19A8E62EFB795FD6298C +9ADA57D5BDA2FEBB227F0EFEC59E4B51E06B8358006F9D79C1EFE92510D6046B +6AFEEDC793137DE622A8B3F5C9E3B21F29A98A589D9CEE75E348FD4D206415CE +508AB95A7496236AF1F6F5ED6B3ADFBAF1E35B51484F9B1E0C11C5AEAB9336F5 +A8861ACE1EC74C4A145A64E4FC8F6BEB3A16B021AFF4AEDA59B06326A8D7FCB3 +3B75F9729BFB7EEEDA8A1774728C80AED40BC35D42045E5CEEBBBEFAD2566CB1 +AD69A9A972826DF0F2303BB232367E611C115E8955DC97779B1AF269B84574C0 +9D816C88BAE3AACA6428CFC648FCF0869AD9236591E3B8FA326BD2EDE7F97286 +511C75F4EE4F7B4DA33BA2CE7F778D92AE7C1B4844CAB3ED8FCA285454D78469 +1639D24729E8002E4507A114407DF51543CF7DFFDB7E05ADB2D36E139F2DBACF +D90AF274AFB3E5AB5B38918A28EDFCF6EACA78248BEFDC2FAC0E041AD35B130F +8A91E20251CE976680FCE3F8B65B33118EF7C138CA1260D3CA855C94FCC02CC2 +B29C94A3FFD38056ACE512DE680DA29D97BCFC35FB2A85057E484FC9F72C9A7D +08AFAFCA705335C6E9AEDAFA97D884E0E463E79D8AB45DDF86C56EC922283C4B +777EAABC0D57BEE30D4D47FFA16FEAE2FA972E36516480E1FCAFFA5CE692B7E8 +8F887C5AE573B96643F10BC62FAFA4BC6CD04F5353C0D40CBCEFBBA4DE7B8960 +352E7F6497C9C4489779028934084522336B5E5DF6FF84A78158ED5035FFFC9F +F199AFD543D5D81C0155F3EE0E7F6FAF7898F7F26941D417F7AB37703FE67D37 +C263078FDC85C5430CF379E657FF9ADA0C00DBD605386F5494459C63D4AC057B +2E061B06E17B54AEF38A9EB401FD4C76C6755F2AB651473DA2F19E28C89229E3 +FD385D8559EFFEEE5D0CEF127A8A6CF9017459466E0FAC341DE1994C03A0CA5A +799CCD03DD2B41A05F7B36493638AAF8D7CD380E03726B0A18B02A46A0BCA027 +9BF16ED75AE0494C36161ED2C22DD7036FBBA2E319106B9A56FECC732B87E2F2 +596167125221D42DE9D4435DAD321F878FDA68B9E72DBC2E31178621327BAC50 +72148C123D4C8568DE822169839906B9F0ACAF3B4DCEB9352C8A9E246A9A5EA7 +31E04981D0A53F44B6905704CFFB9F0463518C02538DEF2DBDABE936D1213FBB +FCD28F833C5872057CAA92536B8E8EBA129745E2E2B5A9F07086A1212D466785 +EE640432A0E47C91CCFF3FED5669C8ABC2B43551AD04E7A2FEE2F3C16511F7D4 +048A8207351E83AD32A72360A2DB1AA8F78C5D2630D770F5E13D5C49BE166475 +79483B2F7FEBC1D73B04E0E5D9B8243DBEF7E5D201D9F644B150A230B5CF9B90 +CA34BB8474BCF408E37757B8CE5B33FE7400A68C70F542C7E2A22B8C0AB1EF9F +2BBA7A646A4C872C43C0A748F078AA98A13E882085B460050CB3F5B09B62EC01 +AB87AF8DFCA6823ED6CF8426EC115C5E4DA335FE416E1D37311B7FD56793CCA0 +BF90B579B0FD4E4E1D0A26FB0C1D490D99CF4994693630FA343960E15AFFC596 +49BB7297BFB82FD56BBCB36DC1597F94A157AEDFC53419BA867CC02C26464BC0 +2875127C688DA6902567716A908153DB4CBF710CDBCE50AB98E0CCF1DF5CC571 +00027F6582CF6AB4E584436471D3C8DA2D780E5B02A9B1717364899D51EC679D +CF5F4A4981EDC24F710E892772E4F891AD02B7B98A113FB1AD2B5A51046693A4 +19D03A75A3140C19791C85A0DDD173BB3618E9498CDDC8696CCA6EF81729AD1E +EFE4F3D6242E1766A3079371D1D1833841F46F04F2F8029D8C1943F6986A95E4 +9E77806F221CECAFB3EAE0F979DADC5D2E4715BFB5C64245CBD2300E59030B99 +0885F08417E1A0C57C3746230F9EF4E968C0F41F67706BDA2E983012BF317612 +38E9C0178F027EDA0E679F306AF71F0D8985C712C4B4BBBFC57A86AE052CC2FE +5C1BDFD948801509ADFD4FF9FA7A25E30D6CCC7C7E418EEAB34C4ECC6AC8FADA +637B5CC70136EA5A57B727EB11075755A7840215CE2B9939BBB6C3A7E22DE42E +B3725C1AD0BEE0A54C0B57CB93E6A20E319E2FE4515D80D09972E0A742D20DE0 +55117C1B9F3C181456406FCA70A7E3B757A813F7CF9E3562EB8CAE1CFB65DAA2 +B384C17AE103C20851906846AA4AA5EEE5EE989F292D42B11EB4C4FC057EE4BB +B09A4D81E8AF0CE1C851B2E328E977207A6989F13F7FF039A4E295507CF0A53F +10A345A516EDB7C5FD5763CC27543452249D229BC22099C6FC1DFCC07A35144C +6267BE8D5BDCE57F9C7C65F6A64A74DC2207C8601231477DD57BC8259B26C683 +22FD4DBF0E3BD814E31C9E194CE2EB212268A249216DB084226802B79DC72AAB +FAC4ED3AF6BC51E2D9A1D5A37F5124BEBB1E0B010C34A1B7FBCED45414AD2285 +43BE684BC7BB56C5036D182AFECC061F749522456B4DCD80E3315F48E7E8AB98 +40C4FBDE71DA957C8FD860C4AB02C97578BC8299EF448A526CFC585F27EA14E8 +88F9928CBF87C8E46F69100F0CB43E2720B0BC8DCA50D59FEFBB84383B4036A3 +0ED89F67B433AB4BF686487194107C63BF989A80D761EF3FB20146A0A496E5E9 +26375866581146F3537156051C61F82AA5C68B6E8418297DDA7704EA50262775 +B96E1E1D7643370288780188ABCF25B9B23BBE408EC5DE254F51469D5FB06FF6 +2EA926F94CF1730E014F34822ED267643B773B7CADF967D431B6F3DDC998E56A +243880E9F772F3BAB3702C19C5DC92ACF864D6A771783E178F4A7BFBAD36008A +F0A61C5B437A69E31235DDA9898B4B081F1176C197C0834CAA25FDC9BEB696AA +8ABD1FDBE17E30070690EDA533E2EBC19180DCE4CA8146D6657BDDB765DDFB21 +D0CDB86912E49DB109F66DBB9226E297945BCE9073E724EBABB58E42AD94CDA4 +C9DAEC40F79F3A3D36777B18C61DC9D22EC351324FAC3426917C893E36C8D953 +4ACFACA05F8764BC61A17F6B40D3A97177B97CF88C2B0023ECB3F29F9CB347DC +E686012FB31904DCA042679776108D9D611EEE971D341ABCEACBD0866DA21DCC +270D3DBBBC9CD438F4F651B58D1405A82960CA991CF690B8B564033154645D8D +ED5E4E059D9DFAF3A5C2BA1C1AFE1B865901C8D117262CAB210A3C7A03443544 +E22EA5577AEF1378A9A4528592F32A8AEBCB1CB6A7E4948FF78C6FD230A5892B +D8953ED89392929FB91C042D31E7E8A4912FC701E722D7FAF0308625B3B748F2 +26DE427383236E131022A95395C72B3DEBB139C81811582FA4E9C7F970FA605D +C8DBB3ED8B141428ACE6DF426B2567B10C5D68A4060F25D5D64BA262101CF5C3 +4B7948CDEB6CAC66FFFA0F1795C5F3174F7D319D252DC2D22BD08FAB54CEA742 +64C0C6B94BDF182DC0942C0C82E82A0B04654A7C2E6BE685EC3DAF1D5FE48790 +DA815DBBD0A176BB4D4424ED7F893B4CED54C2EF94D73CBB154E547CD33D874A +E754A17AD1F10C23BC5FA4E709330A10A73C93B843D8CD8A65D5A4241B35CD19 +938F2BA2FA95551F0C2FEF1CB8B056D9A9120F7607BD4C497762C577B66B2DF6 +8F3F661EBD7F3E73E3A0032790ED80F774423A026F8ADE2FA82129E1FF27DB3A +1B6E603479668FD783735606F7AC6BE9D65C17F7ECCA3B622C13F0FC95F8259D +DA4801A7EE18656AAC3D730CF2E17FCE8657AD6289850DC06E897A759F7B53CA +502E764B07FDDBE6E99D25ECF1600D6646622334871C57133A8AFD03FBBC2368 +1BCDABFA9FF4C4A9EF150045F694A3AA487BE461BDD2BF1BBB38BBC365837063 +70963C7C1E7E4809797F4E497DBF6D5A90A71D6E89BEEDD5D16B31ADCAD67A81 +A9A3085B4CA7BD93E1A9591BD4A7C88FF930EE7A131C5F3338817D88AE31813A +C09D5E7120AFA6565B0A647A40CA94B78F20905B7110FE44A90794F7F0CD63DB +E99675C781255B7BA257CEB14DFDF9C13A02701B0FE41C6A6F50CC62C028A3BA +E9A918549B7F9F206DA0909F2009CC87BBB565F281F24D0ACBCB71F12709DB31 +5D355415D97F66DB25CAC37E90BEDB51F2FA97E0A61EF85E845F702D0B3AF935 +14F3EB201323209D76C7C5970AEFCE4225FFB4A1477B177BB52332AA0539291B +9B8004F23CE4E055F7AB6D6F2A8E74C2994306A407A4FC831D1C887C42FFD0DF +EF07891681C7F4AA914AECC427057A8D73261E25F82DC3EEE7295C0870E91523 +E15187584B32B8F8B0F2E9BF4E67E5A2858F00B0C59DA1B1B59B00374C6C6AD9 +741E0998EE0DCC6F5ACD1925CC40807D5B66E971CDCFA4651BBF2490FADD15EF +C8A7EA3ECD078D34D875C3EC5EDAB74AC0DCA00F2329184455C24C97EB0AD4C5 +40B8E4AA2CE6E7816580F9DBCDAE7F01AF0533397CD37C401D4841B60CB976EB +E3093FC863F368C85AECE6E6CF7D9ADABDF628D9806C1269A0EE06FEC90948E5 +CBE40C0A2C72E08D9AD94F07470692D571F595E465CB32BF486AE9C3971B6F7B +FBBDE2699E1FC9DACB156D880DA379262A98C6708A9850FF8EE36C35FF636E46 +D8D00FB3550786C1D73E6B91F9B35D6998F33BC953E0C8AFF996F4C707F8DBAA +AFD76432E45605D5E703C2569856A0BD8C8ACB29BCAC87F1A72F859D20205328 +6272929343C1CBCB053D7E19AEC4B2EFAA765B2002F43E7F62ED5281C94ABDAE +750B2C88B3801559FC6DF0D66E55952FD67AD41718D49D35DBF2B7CCBC1E755E +800ABB45EA4D7547756CE9E6D3AE0B80D8D97D681DFFCF4D5D5330F0FD6AA729 +5BCB1475F18E9612197D6F5F7C7AE8FB931C242993D385AAE7829391D370819A +496B9518C6F913E666C27F0896C7684AA1DB1A335C7B50762B4F8445D45C907B +9E30F7FD84E403DACCB0A8DFF2940312386C315FFA700B0E42242EEE04042E2A +3F4840E719A42FAC426870CC20DF083537010550A6B43A02A330D92CE15222FB +BE6A9F6EFA44F7987224533983D96BD2E1E536437F89E2E43884AE09FF5C7902 +A284704F78AC067C332EA207F53CAB61ED51EF3FE79A9B7A373C3DF72A4F3A5D +67B4F60BB470E5D093FD880AD32809160E550CC1EE67E01CFA80318C03E6FDAD +A8E744FEA593E2761C60D2CE83F3F6D3A2B203739C62A69D4E271FA12372C45F +6C378E4CC21B9B0CBFCF43233562E4BD4D52F7A634D1F0493F8DE445D140EA4A +D3956E9971263B7C3CAEC8AC83E541D58F52E00C1C80EBD9A31F0A9D17FA2D63 +E5E0D22CA28D51E39A055C40AB769EF224AEFE2AF714E322FDCB9770EB00686B +208AAEE2160D059DEED823FF4F9769359C183A6A6398F9E4ED55397F02C68FB1 +016CB495A0599DED25BF1006343DF9AB7C3BAEBD1EB2F99F4FCB07E84AD2D959 +D1D573B89C220DAD815D9EBA41CEF4D664630082DB97645AEA6779A8F0D7765E +B76A4B8B429CF95F22474EEF2FF1C792DD525E50E1EE0A1ECD78570970B62293 +43DBE6E9B97585B754AEFE28E960B5F8B3F549EC7F168FFFC5EBB52C7CDDACCB +DF9E1FD89F2F8CEE44285E79724FDDFED021AAD2025006239EE5CA8543B86200 +C7E8522668B07608615F6F102E295003B1B89264810A2BFC3DAFECFF126B1807 +2388839274203BEEC2B319C7F263ABBE6B181FECB5FDB9516E8F0456B6A1BEAD +7F45DB0F95F4943B2ACF52CB30DFDC6EC936A6292DC2AD0BD67164900CECF3DC +097528073246A88607DDEE1DE4BCFC298892F3B73E897734D7001A466170F60E +5F2948ED36A6AC13975086A2D68B6CD8B033CD14C1B85EEE4AD3679D74DEB998 +AF62D045BF1102FB3927E5B9078F8AF93A0ADDF1937276C423CD346F30D17D3C +C57CE052053EC21A2991D063B157FD535850DD63E55890427BC2C883785DFBA2 +436BDED247251001AB1AE56EA19880B88B3F1BFA6C232876E6C002E9EA850700 +517C80537C27033737A162B10B179624F869FEC056F339D5A292E6E945E7BB31 +A271CA30990B4AA5874CAD851C1154275BBA868EDA5D156F4663E2D436DE6DD2 +74E6579AB19EC803927046D9130BD9E735D64248A6FA78F1DD6B51DF0B1DD553 +316D96795355878C426BDA09F052D54880E5F3E5C1F29786DA0A8084D81A5849 +B2A301BFF171446EEB4DAECAF40D8C4F6C489BEA6C592F8257E68C514180756D +A13569A03827561348B73584D69626B3175247018DB9DFAA9E989E55C97F9A32 +B02423EA16FADA78FE1E3C56EF4122C640EB8D77C5E957B5E425A2FBFD173423 +E8AA1758A91E1B5B85D174D7DA1F11B3AA76761346D2464BDBA290435A6DA50C +1F14E14FE29396C918E3E4C388E93D1C3F7A7161FC61DFA1543D4CA86B6A3A5D +B64FC69BADC3F3E0F7DA2AA5FD6C39700C2CB8A6C823D2620D39FBB0B507003B +6D28C8D67F57C019DE3D8A4B6BD01CF0B305163BB1229F470AAD7436D13C326C +5D205B4C818D0F765E2B9FDDE26B033D1060EBEEAD6E5C49EC8C6F395B54C259 +4E24E89DB787773423E358A1C64C3FDEE4CCBAAC4AC652012A0CD7269A062643 +0F52A1BD1DEE9401B5835752C48CD0B705476B00458D31E70599761C793987D1 +1A14288D5EB2C9452C2C4524202A40A8C773AA8A3B9D10ABFF457478532B2C58 +0DA8776E116853B77D1A8EE320C87B23A693BB5D3E77A9C419772675690DD75C +7AC5BC3ACF97BB11C70C0261EB5DECD96577D755B03EECBC66B3B8FAFAD87950 +94AA617A40E4CFE88939F28D0D36C5C6FB5B4F6E4321BDBF12DCD428BDEC76DC +192AD968A9699084DBFFA3FE06D5F79D336DD6CFCA4C9E1F427A29DB1F4F0492 +A29F5F052310D455E8AE1847083B70EE57C4799FF4B470655D855B8298FD3694 +66E00CF5D04415601598C0ABD6802FA0DC4C12965546076E46C2DE87467CCC8D +F9ED9FE429CDE1DB2AFE61363327B4D11F46C678B59E74F8F09D8B9C14C48004 +CEC93F33A4A6906CD71B2414C05B3599E4D1FC1EB839D4B5E5968711359D3BB2 +8E6E262896409C7EE86DF7A8CF1DCA1EDCB2BE723CAAF5B1D7DC94F093864855 +7FB08EF776FDCF9DD8342ECB7F7B307542880A7C04D3BD09D65BE13F80E36120 +24BBE4C422F1CC0DC956CE53261B903ABA0E0CF1CB0AA8895C0DA8127DE3DC9D +4B491926B5408AC8D29D2FE62CC3CEF548C0A57A1DA202EAEA8F4584D8B64E49 +A3D11A48600CC0913B744180AFB6873BE72DCDFF8EA2203E34082E011C87C3F8 +EE91457705ED0BD4E2C193B7E818B50DDDD734F2BA1B876D262C39D94B0FC27F +0B5A87423EAE91BDAB38BE457EB0309D05FA5E458109305C03295FC39B0D06BD +BFA2B4520DD610E12C3AF842A94296108FB67495B300991C3491F0983B5A0403 +68A8D19218D9429EE400C3B91DDE2A9F163684D9F28120B584FEC88628EAA60F +79F5988BE7BE31153A675BC7B344E7F62CE85E8850361D1996D57E71690472BB +8055755DE965D795E6D2424F7D76AE7F249AEF4BFD75103B2CE4D62FECCD2FAE +3702A57A3320C54D19D5015ABA5AF39B237C53D38DBD80773C0B9D6406574BFA +48BA4EE71769AD140E202D24D9F1691BA072E1AF182FD6DC06C2FD25E3437E38 +ED1D0033E77D2B188F3A84EAE17787110EC5462EF5CD0FEBBE5CE39976B5CDA4 +8206BE5EB8A06C7698C5E6A45EC7F59CAD3D6ED3AC19FABF3D29C9AEBEFDD74A +6B7261D349FE509BD769D9A24B16C276C917F0CBE8B25FFE19BF8528E1C46D38 +3738E3CEE8170E3EE323A464A3C8FF30B3DAD0BE87518E008E37F60DB471E3EC +110E9B8AAA5C875AF759126B39B90A8E7BCB25FA3EFA783AF7B069AED1887A19 +6A75C799940E5352C34A93F125DE82A7387CFDD7073A28C1026C9E06A1D8163B +E66DC3BAAEBBDF96B7B3143B9414AB45643D022294C2AF8C87EBFF1276EF991B +7A1C720C1A7CFD392F211A190A530A19012EB117670AFAE4CF700048D901A5BE +074F9B05AA555FA4ED6D0A92C08E4B795279F9BE48887886B5121DDD857E8A86 +A2885B9A672C72BAB990E0AF6DCCC769A7E18E65A86B3E1482D8297FD98E0510 +30B27AFCB9B261771A1AFC298F96E272E779A8B6AB6B03410ECE32B7B69369C7 +5597FDD08BF2E6CA29E093428DBB0BC53C64E5ECBF216111AC90E82822E7604B +A9AF479BE9FD2FB2ED27EBF4027C22357DB27A5A6FBC6B14607DC26F95A81BA5 +1737D6C406B19857FFF2903F966DCD56BB73B06F5F74C917517DF95D8D5E5108 +350AB839CBDFD7D1F3C687D0B6B576FFE108AE8708B967C29F9840A0D6784789 +DDD7A0D76E92082162603CC916ADAD75BB205E7C9B7A72D286C5411F3771EB6B +9F9022BB24AC9EE7700907280F52862F1D542605F3D3AB06679252DB9A8A4E41 +FD9740AE35473A9FD025F364B863DDD063AF91A114EB529A38F28C4B4551E276 +F76C254669B81BD3CA8479F0C7208AFE5A1927F2AB12FBEC47FE0BF9AC3DBF3C +340DC67125FA0D65B245260B32FB74F90CCA6D327874BDB6C252614C75425F20 +2AD8C9ADD15733715B9281DB9D73C66B9664491416643C04165C64F5939CA73F +F8D7652592F391E59B82EF0BEDA9DC7F42713005E4AEAA1111EAB4E74BD99119 +D86490DEE3DA6C021B36D7AFDF9EEDBB1E3253176EF0607469E0982034AF57A8 +83F024DD4B42B99BBA110514E52498F6BE463B3053DF5114F2D6644FA27702D3 +15DB327F632E3750171BDAD75F0B7D2A84267C712132373A2FE740BB086D53B5 +C3E9A68583159E46FE46ED3B645B0FD505D206E09D438052E27B75EFE7F5D83F +BC153E4BAD47FF241AD46BE13605E1840C5C2CE3492C29EA5FFF5550AA3986E4 +FF28A404908C88269D821EB2FBB193DC311750F6163D75872603A254B949C756 +CB97829F0BE3AD796D52969E483A0A53CA650CFB9AD57E0F4DED89C7746341EB +3D3333F06556BC61BABC3553C7B0D83DDC5B3BFDC77DBD9B6DE41680DD6439E9 +4C9FA49DF62830C86E7A4B1CBD37F2794EB6DAFC3F1676697392A6A635E626DD +3A3BC9E2378C152F9895178C694596191B37BE3DD8C0FF34C82C386289EBD7CC +B63139A3243F193EA10211A8E390B4C4046663CEC373928556F5CC99FE094ED2 +841DDF013CAA6CA5C48CD9382CB776964B38BC24BB009DF203DB81D4EE3A4463 +C5F2BD876E0C9B9B226FF39C0CE6E67589A38388A02A81D3DEA72CC031BB8B2F +66C481F00167DC0BEEE6740A78D736F429B44B82A3B01ED2127052646DB442FC +C1EC78B100F11D42512810F26EEABFFDEE3E46DD584FCC2194896F7BB5670634 +480771223C1E2641A253CE2490AD75591FD94F19B2DBA95F0CD64EE4BA03D3B2 +BB0C7A6437B610004CA4F1B914D9075051F7CBB6CDA305F6337307F317CC05C7 +8BA5A409ED6D915263680852670F8A474AB0646ACF77FA3AC35332DFE2B00CEA +FA99D25DAC950B173DB84ACD9DD99AB23973390FE32E384C6003FEB9A4D3FB1A +CA17FE87AD558921F203432EC00D0BD9E0294A0364048A9743516F46EAC01B7A +AF23DACE21FC2D26692D8F1A85F1B0AA8156D6360B322724C4804FAE55DFA814 +ACCE2F8508335CD775539E7931007A73DFDEEF7695487B10BB0D95FCA66D0F53 +6E86DD15234A025709C4F7DD08761711D05655EAD8122D8BA2F7177E820B48C2 +5EC82CD16644832ADF374ACF193975B4635FB374451D0AED47030807CFDCF240 +783160D79230AAC1F2E5066F09C327ACE24CA2D712D08749FC63C3D8EDADCE22 +B81A7E03350AE88F30BE8222B6954ED0D2910AECBA460EC21BB032C4D5DC1B12 +39F1EB91215B384CDE3F1FBDABA298E37D4460D0B07B0493053444AC73654815 +376ADD2F64BDE78BF59CD75D93A3A3BC730562E9A1F2A730A2F766AA19DE458F +06DD501B215E0C2070CD64DDE13E99719671FA4809FBCB6623E206253081A50F +5329F16F1B0F0F69276852A7A0AC023A821B8E7880F9D7AE5DA74D0483AACB4F +FF09D975ABF439500ADEADA4990CA29A50D82C0A7704F11DDE0C9C8E4DA21382 +C4F7289719D9A4A44BF2735CCAA2BCA698A5FAEC9A3BCCDDA1C88CCE18510733 +5A88B88A193C9DF15ACD00F20A965C11DD8A35CE316EF3E4716AB3FB4EC6288A +91C0F824FC9933315C9A71CA786C9305A9A30F407777F0AEA7D341D1D9605378 +72CF445A4A2E3666C0075E2F9AAC3F452811EF7E60E6C04F37F3808FE8BD39F2 +346F5E25757E3ED2232F1B9B4DADF83DA45F7F302809251973F705CF71E34C18 +7C452C4B5D29E0CB74CD6EA67637FFF0E9D9B211FF96E04FFFE9A27BE5E13BF6 +B51EF214FF4F0A58C5D5734E6BCB0ECD419AE3CF79AB67D1B3EAE70FC1E83691 +095D0C370C9CF847C2A914F0B810124D763A972464C5F2C1F69914A8672D46EE +30F9EFFA7E9628D667E5DB582C123160BF28E77DBBD77598F14A32DD74F67032 +B4A0537D0FF938CC61BB0F9798B600FFB1AD7AE6AEE67E0FC6557FC3FBAA1E4E +C793B0D207EE0395913818CB2446E9B82B880537C1625C70ACBC87F97CEA8C77 +82E6229E1734F80FBF8477F062F3836FA9DCF83A4BA49703FE3DCB5F2CF6266F +4480EDFA91B1D98FAB8BE14DA6E84B9D58B46DE5D034734496474241F59317F4 +4AE4AFFABA7CA3FA149A26CF5050B83BDCB1C56B529900AA20EE6098D135E65E +61026EF0852D497B3799DA044CB378332924CA360A1C62E24B5A0628813829AF +A1236DD728559DAA01188D6EBBF3CEF983C5201904D03A46B62A41E9C5F494DB +135F6B62BD5F3745625E96E1B401848BFD935AD1FE128507866FB807693E8376 +634F1B39763087EE7E454069D5CED93DAE8BE9D1366669A152968E2DF13EFA54 +D1A631CCCA33D914CC1DA8C0DF8ECE2FABD18641FFB43BB5E82DD0A56CC20DCC +64EC0A7A04709085C80C2A1477CF85A29D0C11F204CEA455072DFBA6F5F5C693 +CB2B56EA189926EB51E92D2B5D89F25AB94E1F7FA208916FFE89601B616B41EB +EFA70F4C8CFC3FAD1D056E4076E8CDC2C3058A2B35B34FA0A29A2ED3746060AD +1A6B6988B1B0986DE495FDE9A8C45119DA7EC756E1C83C89842C8744AC4B80DC +264792E2E8D5AE4120BC57C170C742EEB0EAE8C9C4537AE432654DA4DF89FD45 +AE0DBDD92D0DDFA0C90C4FB90FD5A7ABB522A193117153CF578A584447FCD674 +548ECB9250DA4669DDC8CDBEBBA49999F2519DE29B0CE693DEB2F420D4B0CE02 +D9AA3C2C15A6DC98495E1EA54C7670482E2B1034B91692285AC47EFD6271659E +400D6D7DC137A904647FD092B1B4D59170F1EED8E29FCD584FEA2C77642AB839 +0A44403D75504E8DDF1BDBBA6B51B7F9F64B63676B6FBDE514701B9333312126 +4D8AC19B638254A4BFDEACA80AB2CBC4DD12AB48BC34771E210FB576FA0DE013 +5C49E765028D57C056BD7C14E6941B0A92A2073CA3CCA67E9A18F18BE4934550 +EFB984B486B9036B8E3221F63D8642E2C71E6547A8E4B25FC3EC3C42D27DFD85 +E85F2D08C69CDCF3174A09E363E92A8B3D75BFD57CA37144D5267BA4D1750988 +8FA3A9B9100838AA7DFFA97C5E4D2516F5649CA756C97C5A3D500A60D2AC5039 +812B603639C2E3CE36F26CC0AFCB385A5BBD582E7BD1B5920F67DBAF9ABF9EE5 +FCF66EECB566DD87F0618AB73199C230034DE379CAC1F6BD17526305D6B6ECD5 +8C5C57FA76FA775B2A25C7F5C83C27A1F4C71DCA93487469004EDFF855A156C0 +8C8EE1972CEB91B9292F5619118F7DA38B1FCDD069D71D0DAE61BE55AF0E255B +3B8D2DE974592BCA7D92F0DE92538C74A801CF16A424621627BEE5BEC2CC5E68 +9B88BE0ADDB7C8125F7C35D74A52779C6D5D87143506EAB799765589617D08F3 +1305B15752D134A97F7D872CF330F4B3BB62946570C5EA7DB77612DF9B7F91E9 +22321623627FEC40FA04FDC1AA21DECC7AE531510375D6F68A68C6B8BD649A67 +A3E24B30E04ACC2171A510DCD77F7688E2ABD7D3346BD84E8363BCDB2EABBE0E +5BC87A595CE80F977190EF06D3D0BE12DA50EA0C33D25617A9DA8940967906B5 +F5317F4CDCE1DCC7ED48B4AC4DA131EBCCD11F7D241551AF8A2A723A5C634EAC +575113186D3B83F8B6E2E50796481B6CA50D440D5B20C5206A85F539FB7D52B8 +B831EF10B784D195BF7EFF05A9125A3B90CE131D84ADBBE6E47AAC2FBE51DDDF +1286C0DCCA8343F7803FCB25CD690EF9FB49C1C3B91BB7FCE5D330C781744502 +AE46FEC050B4C695101F3B86ACE09D502572DFF5F8534DBE6DEAE838B4000712 +4B21697BA3FCDCCB3B858251438F05B3EA1F8CABC08A502C5324D1315214E7DA +6B62576C10E6EE9A69FDB9D424FE1C7BC32CF37EE9EFC42B9F6726C486762574 +03913F9B3F5A20B1EFA8D4E072EA2F641D7AF64403C4EC76E3A81185B976499D +C78FAD546598AB094B628942EBA51C11FD572264BFC7B0E97A1715D7443F29EB +7BB4E6848383836F99850E22316C73B76B0E6848008B832E49B7373A94DADEE4 +E7EB32C428F531FFA2067E3316A47C08068D93E27525A9A2A915CD9F204AB4DE +01EF65ECE8167C184DFA747930AA322FC136DE0D412E99E6F37ACF87A788141B +3043A3B0D20DDE8C2137EF0DA77A899A581A51AC4CD5A1031F84BD428D0A17A9 +989877277917D07CB806DF051C23F1AB0049FBDE843B34CFC9DEC4147D97759E +983C395F0C9DC2832139DFDE0455002BEBC392E7617156400301F76441347A3E +E94D2FB65A31DA189BCC3CE94AFC1613B546D424A36EB2F83F3444DDAB0F03A0 +F3C270A9B8BC62465F46D83929DB7F0240E52CAC458194BFD50645F825D0C41C +773B1D6757625906C7643BDCE990E24467C011ACDAF6D4A26A62D71FAF1F475C +F14CA4D545E9E4F80BB01F3AC573D046DA7356FB9884CAE3A29DC357BC8CB255 +E5108AB355F0E087902C9BB458DCE8F341F1AEB79E468EE9A45855FE037780E7 +9EA9ADC1CFA141A3F976DFEF51A428D237F234BF5C694DAD4CCF2AE84FFAB574 +A25C1FBA2F38110C305D962420A310FE93301B8677478BDBBBDC518B8C94E819 +26BD2529D0EBF0E770CB3A1E107440D135848D2F90CE8F37693EDAF6071B79F4 +FEA5ABF4D9F2DC67F2468F2BDA3FA968EED4CAF8D7A22CB28AA43804F72F56B9 +545DBD0E3F27DD5617329305CD8577AF38CD4C472CB181CF3DBEA07CD42C6C1C +51E819286FFFC75E38F5EFF96C763F51A31A78B0848CF56DE1A2CBE2F39B0C41 +FC7C0D42D48D6C75516316B27F6C34AE6D5F5873233914790ECE044C014E9796 +20E200F53FC51ABFEC15C1E08D36E9A4DA7E58DAC014E2C0627EE8ACC6AD021A +D2E2C431ACE954602EB99D4584250637F807507A17DA18521B6820E066058B09 +8C2B4609FDEA9E02007A097F833C7A9854D74B38DC81016759DD8FC6F98071FE +620AFA1A8DE5AA974C281A1DEC9C8B866E7E350BE5EF3C7C53F82280790CF239 +C847E4C7F74BCEBED8BCC57D4C01BC4394F0E9EC5AD01852B3B06B93A477A1AB +AA97B588415A03C1984B0C9619C899DFD4766A2CE91CD6A65120E07756100696 +297345CACCE1551A2CB549077A292B73ECD47C3A098049BC49F2125BBF004DAA +8827C407B06A07E5F39CC17843FE876FB2DC6CA2ADC0A4D8812901FC82913ECF +BD04C66B3647B7A698B4BC6C2F136C04AF4792F10C31231F2A04E4B55538CC17 +AFE4B47BA2F575BB4E7E222E9F6A4F904F11CBBC6DF6C2F3C15DCF268A39D6AB +DEB9D091EFE6ECD5DF61ED23E570D484A6AFD5F8D34B7D484F76F150D3D97EBE +5E91D7A458FAB380BE167E7F2FAAC82BC2C7F3C14BDFD06D9665F5AB2CE34800 +E779AC43B70E22199D3BC4A2A14EFD5D20AF12D8CC26BCE54762ECCA9D9F5FDE +84B43104575B2D6533FD3BD245AAAA4B82314EAEC2E6E566EB32AE367D2F2BBE +8F6DF9D63F56693D701E259ED828A3E27561A5901B87F606AADBEDDD7E846AC1 +F07D1ACCEC90CF6AB18114A140FE4BC918EDC9B06284B40E2C82D4BE3C1EAB92 +E2E2F0DE115737561F7ACA173B81C9AF7EFCD6797BC1AE6366646C8F1ADC38A9 +F1928933BFB6AB474FA81D8C006AA11B76461ED98DB4DCB95D7772E3D15C2A29 +F116DF0437225E8EA1FC5C3997633CD63539069F7788AAB84BC9FA8A1A61316D +2C0F07D2914A61B0418912B276561540BE5DBC1F7A20241E85ED95BB775E16D4 +1F22262C8128967F53031EBA86D0A2184DEB01D51D4F7E15BADE50B7DE246C05 +38B9B49D264A4B29A372FCBF57323308C71A0E14748850B56D51BB932B1DCAA3 +A1469E84536A42B0D8B55A0292C8050D6CD1BFDCC4D287B15082801EA40AB8DE +CD8628D0E1252DBC57333D74841246D7A6392F158EAA9FD5BC6CB2E535DDBEAB +F16FF32617952596187203D41342DF7FC1E0CAEA2EE8F012236DAB0208A626E4 +5FC5EC819580727F7890BF2B114523A3006CFE3B67F19419A009826C635C4B2C +10CED88293D753A6FC63C5C17A424E911169E316DAC022EE37A5F93A6D7BB446 +5402EDB1F758FFCCBE83F7842CF09E84DAC17CC8A5D0521CDBCA8B320D90F24F +32AA9B86DAFD068FB0D234C94EC0889134DCCF83F8B0C89F67D660EC4D6E2B34 +D4CC5E094049ACFA09767E7C0AFD789767D0660825FC94878BFCA40105597194 +BDF88A8636D180BAFEF635601218B47E1242497D1E90E7A0F1098FE4161E6C7D +D1E920DBECEDE54FD9D8EA40E25881F0E31C3FECCA22ED507DF496122D25AF56 +E6E690952EC746BE46F4D228D54C634B04D036DD33252E5A5B6309E559EB9CF9 +DD17101EF262D5FEBE9C207007A2E7F3BCCCE3243333F0A79C1779E727414D60 +B451BDC14BA3FFCBB9D49641DE51BE92C7D136C2C910559A6EE106DC05CB4890 +322BC12FD592C4789FD8368DFB7827A67FF8FADE351646D0B4B35F74A924E229 +DDCBE1B5D24D049CBD4424B123B6AAE7F5AF8AEEC7F862431541F6B755A272CE +177CAB058D297A35041646435664056644B2422B2CB890080C3BEC3C52C6363C +B843F24977C482C7A37CF18DEDE4E8FECB280E86263BBB5BD413A9BE19329817 +EC424B1AEEEF713A52D68143AF0DC2B02F293425F041A616D148ABED9E7FA7A0 +AE99B5762A52E38BE8E7148EF22808632CBDEA8613948D8E3D576580FA3F4B3E +0B5F9E1B240BC7D0744FB1D121E3231994DEDE24B919A72869C15B839DDD9917 +D3BF2466E673B142E4B527B17893D3405603E1271E2D005A6318DC98CFA3D25C +3A7B59A16B1D6C5C31F267B964E951DFDB1143F8D9005E378A3D4F5B072911CC +814C191A806A989BC176544E45BA9A5CB16281394572CC6275A96865BEAB6F9D +06DD94701FB30DEAC86652473C182379F43877528F28AB0B5FD9669347003055 +2E6169601690053E00E18BE7FA7143DA61EA74326BE8122E56485E65B0572821 +BBE05576C1D9706EE219A8377338E93DFFFEE5E37E6054412A9B875A092C948C +C4663F161AEBAFBB964859E9056D42B76A806A2B1C435318459E272DD51339B6 +B16BC73787ADF1D7A2CD630CA98F8B6C479693BA427D7096E83AAC35B6D1CCAE +B5879B03B706C6AA3FC1A1D180315A2252DE59C45E9429E107D7A73A645AB182 +6FCD53B44907874A1B286BC50D9051160CBFB374856E59C961C376C3B553454B +108BC5FFAC60EB8C7426A70A1FFC2CE80D8989A3EEC43A9AD51771D48884BB32 +1749E328FDCCD4FDD104E80EB6813FB98D83139791DD2A2C9ED7A70BC458DB09 +5D73B21DAF0FFC110324B8F2BC145FA61962C5D78B4D6C8D014D6938AF09F36A +2A3E5634A140A1A525BFCAA00616AA1D8195A8A68E4260B8ADDDF789B131C074 +01EF325E06AEA94A459CE1F51F312C3C19142528AC941551F324BE2653BBCF38 +46DDC6BDF7EF77D68C32F4DE7D8604E63A632AB2108086C77B94DC31D926D1E7 +1D3653D8B35CC5AC431368B7B2D7C3A565FEE9D9B2E366F265A627FE7B4378C4 +81A0C4DBDDE6F7DD940F08764D307A5B09097320431AA76A41C4ADE92C260588 +522B197B802DC488FA2169BC2E13AE36A98591E1673C1CAC29B4E0E15D2227E7 +80928CA4C060FECE89B014C3FB6A42313FC438E448DDD73CB66ADEF1FACF2E2A +4601F76ECFF658D97BC22C765C0B1B04B03EE08A41E2C778A8E5954CABE7B386 +BFC2DC7C60E720BAB2B1A726D8AF4933355F21731FD7C930F31720C1E16F6C01 +C0C8B6747961B605CDFFB02FD6D6A7758B1097AA1D47C6DA9DBF0F87E55672AD +FE93D17DA6FE7B2E3A5360C5BF0C3F4715165CC6748BC95CFA74D4AD57B481B9 +3784040A6B1BB028CA9F69B6AE52CFF8FF3FD169FDE1A85B52651D99B4042E72 +D5E952BD9F976EFA21C935F2ECBF5C8D4D8BA0AA97DD1458650F6DB9C80B3B21 +F60761C150944567DE98E9DED3BB831A57DE2A5C8CC4417D0D02BF24EB09C2A7 +B8262EFB223FDEDB45E75E2559190060C676B43721B5894EA52440AAAF72B77D +42138ABF062B92255DCE006EC18492D4CC0CA6FE753E8851305B967B4B01D481 +85D8A1B78CAEBEB99ED44E5BD7B0CD242B46F8C3C4B1DCE6B103497A89D0C48A +FCA2DDB3CBEF2CC076673FE28DD397F4975BF03EABF542C8ECAE8311822A6564 +14C20DE022F9AFBF672B31D124F96E2475073E6B53F8032685A45AC7181B0158 +A6FDBF2DFCC9D842D42E098BC02AEFABA6D571821604BBDC389E80931BC8A767 +A92DC7CE49EDDC3C89521CD3AF5AEFF121EAA27B74A37BF043B1AC045A0D9A38 +8767D85D15DBF0F5ABC495207AA3AD05BE201642206044F470EFDF4A8D52C050 +D600F04B97ACED3F7FC8A56E7640A6A4AAAE1816F3A77D887A378AA0B130B509 +72A8ADBD5808E9BBB7F83216D995EC74FD168D5A3D171AB9C52A0E21169172A2 +9C680D926D2327A314835700D399CE25A8311D22D1127B43CB8A9D900133C4D1 +CA1F71C4331F37DBE7F26650B4D512C5E192635CD8CF4C560AB5BFFE0671424D +456BA00271A643AA2477DAB650F682D89B932BEBB5A66EBC9072A469EE78E0B3 +86F58B1BA76F31B978C167A0E5CE18889C4DA968CEF94EFA70060960E1D53535 +17230FC0C8AA0E878AD3D6E306533800DB46BF785219872DBCAAEC33A236A8AA +E86D9C9316CEE8D75888217824D56420EF7AFE70E18C6AC6E7E71161373D574A +D399548B201868F2D1B2DEC136ECFEFE25C307630331F2F893FE36E0CCC8113F +9D7A6DE87881BC713E6B438F1E804B2C6F00DAA4FF0A33F2B051EE2655BD8583 +9AA5BB2F7A4AD400F34963FA1BD28D5AB933EAE84C047D636122BE431DB097BC +85D7CB6C30B09333A567F7DFC0A0482E4373512294562297BACC2F53E2BF1718 +4E23AA470CB1879235832D66846522B8EC1536E17172B8DA9DEB14877C9405D4 +531E548E8ACEBE66D41992C0D0A25CE7FE2641DC2F06A1399C864A7C1155DDD4 +20A2D292688E6426B147572C2CD3706C96C22C977A4A6C4A30A54C7DDD50DCB9 +7BBC5C0B744CD85DF88166B916C0F1909A38742C6BCB58045C4223B70F4B3BAD +74EBBE8395A3F64A14D6838554EB6AB7CE417DD7448EBB4F3EE10B13B454C4EA +949AF16A87E72ED21159408171A4847199C5E403FADCC67D0FFA5A58452ADC67 +FC3C597826B20BD85A1AC7BFA715531D99DDA5155185E3FBF29DDF559A103F75 +538AC8CC0B4C4041288E89B387F6ABE04F90E8CEB2099293D1DC4FE00647C80C +5DBE532282708D050BC6A226F45DBC314D109554BB25CF04770ED4874EED1B1F +E18E006F254BB4297C435B416A9AFC6FC51568D89317BCDD9885E2D1ED15F4F7 +AF253B5FAEE5CC44BF9D860982B7F4706C8B8018E6488E337B773A4A7AAF9998 +6796B30721736F7AB66CE22EBEF616FE5847929A2E08D64DA7E912F4CA899F73 +6A0A1F1F2163886A7C5E6999D98AB9708EADE2030050B2D05AEF0AA9447F8698 +7C191DD81DB9131D0DC19BB7CD0CD9A60AEBBA3FAD203CA51B6FECB75EC91C14 +EE75CBB49420594C7B9A56EDE29343B5D1817AFF27B71F0BF2B8D59D8198C2B7 +A9F4091A085C973412051D6ACCD3F0B37D502D8FE193CD5E42769D1F497847CF +B986233F0DE24FE2F4ED03BFA105DD04182887D3C6CB827A1D5B00170B8DFA5E +EB1BE4FEEACCC82A5BB4BCE2C8320CBCF6EEBFC955025F3980763F51170EA440 +C2144AD36893326E5A3DC214AF59FF505E8168593AB9543FC6690F0D63262FBB +978B833906430E5D2DC99D729D1CCE7A0A91725537BCF91DFBF8073EEE494A2B +E38F1AA3D81C602D05FAD3CA3A8A5A7E1F0A7F7CA736B561F3C29275E68D01E1 +FA253D089243988C475ABF8077C71DD93F1414E69FAEE565F42C863C61BE554B +44C92919D78D898E70510D9EA1FCAB702FD53337263606A777A001224390AA6C +D8CA04FE8F34D61F03E083D0A050EA3985ED026479142A7184494C615A7AC675 +97B6196C56F2034850A77938B7585B18AEEA2D249E41D25302DFF2416FCADC13 +E69030FD907778821C66F93220A31991386640AC2315A5B7DB80B4AE91A6A4D7 +8BC19E632295CFECA8D65B4045C5A7614852CD48686A27D61F6DC6ED6120D30D +92C97F4D0B5135823FA4A59DFB7633 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +TeXDict begin 40258431 52099146 1000 600 600 (bashref.dvi) +@start /Fa 130[55 1[55 123[{ T1Encoding ReEncodeFont }2 +116.231 /SFRM1440 rf /Fb 133[34 41 41 55 41 43 30 30 +30 41 43 38 43 64 21 41 23 21 43 38 23 34 43 34 43 38 +8[58 4[43 57 1[52 60 58 70 48 2[28 58 3[59 55 54 58 7[38 +38 38 38 38 38 38 38 38 38 3[21 31[43 12[{}52 74.7198 +/CMR9 rf /Fc 197[21 58[{}1 74.7198 /CMMI9 rf /Fd 134[39 +39 2[39 39 39 39 2[39 39 39 39 2[39 39 1[39 39 39 2[39 +19[39 27[39 39 2[39 45[{}20 74.7198 /CMSLTT10 rf /Fe +129[39 39 1[39 39 39 39 39 39 39 39 39 39 39 39 39 39 +39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 1[39 +39 39 39 39 39 39 39 39 39 1[39 39 39 39 39 39 1[39 39 +39 39 39 39 39 39 39 39 39 39 1[39 39 39 5[39 39 39 39 +39 39 39 39 39 1[39 39 39 39 39 1[39 39 1[39 33[{}81 +74.7198 /CMTT9 rf /Ff 167[62 3[60 46 2[57 1[62 76 52 +1[43 1[62 65 54 1[63 60 67[{}13 83.022 /CMR10 rf /Fg +135[67 2[67 1[50 2[61 69 5[33 1[70 2[68 52[60 47[{}9 +109.174 /CMCSC10 rf /Fh 140[56 3[56 56 1[56 2[56 56 56 +57[56 45[{}8 109.091 /CMTT12 rf /Fi 130[45 1[45 123[{ + T1Encoding ReEncodeFont }2 91.3242 /SFRM1095 rf /Fj +134[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 1[48 2[48 3[48 3[48 1[48 1[48 +1[48 48 48 1[48 48 48 1[48 48 48 48 1[48 6[48 6[48 48 +48 48 2[48 5[48 39[{}49 90.9091 /CMSLTT10 rf /Fk 134[65 +65 89 65 68 48 48 50 65 68 61 68 102 34 65 1[34 68 61 +37 56 68 55 68 60 7[93 1[127 1[94 85 68 92 92 84 92 96 +116 74 96 1[46 96 96 77 81 94 89 87 93 1[58 5[61 61 61 +61 61 61 61 61 61 61 1[34 41 34 31[68 72 11[{}62 109.091 +/CMBX12 rf /Fl 135[42 1[42 1[30 37 38 1[46 46 51 74 23 +42 1[28 1[42 1[42 46 42 1[46 51[33 32[51 12[{}19 90.9091 +/CMTI10 rf /Fm 135[56 2[56 1[42 55 1[51 58 56 68 47 2[27 +1[58 49 51 57 54 53 56 46[50 2[50 1[34 45[{}20 90.9091 +/CMCSC10 rf /Fn 197[25 58[{}1 90.9091 /CMMI10 rf /Fo +197[33 58[{}1 119.552 /CMMI12 rf /Fp 134[85 85 1[85 90 +63 64 66 1[90 81 90 134 45 1[49 45 90 81 49 74 90 72 +90 78 10[122 124 112 90 120 3[126 153 97 1[83 60 126 +127 101 106 124 117 115 122 7[81 81 81 81 81 81 81 81 +81 81 35[90 94 11[{}52 143.462 /CMBX12 rf /Fq 200[0 21[91 +17[45 1[91 12[71{}5 90.9091 /CMSY10 rf /Fr 133[40 48 +48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 +28 40 51 40 51 45 7[68 68 93 1[68 66 51 67 1[62 71 68 +83 57 71 1[33 68 71 59 62 69 66 64 68 13[45 45 45 3[30 +8[45 2[25 18[76 1[51 53 11[{}57 90.9091 /CMSL10 rf /Fs +132[67 1[71 71 97 71 75 52 53 55 1[75 67 75 112 37 71 +41 37 75 67 41 61 75 60 75 65 3[37 1[37 1[102 102 139 +102 103 94 75 100 101 92 101 105 128 81 105 69 50 105 +106 85 88 103 97 96 102 105 64 4[37 67 67 67 67 67 67 +67 67 67 67 1[37 1[37 1[67 5[67 112 1[41 20[75 78 11[{}73 +119.552 /CMBX12 rf /Ft 129[48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 48 48 48 33[{}93 90.9091 +/CMTT10 rf /Fu 131[91 45 40 48 48 66 48 51 35 36 36 48 +51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 +45 25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 +47 33 68 71 59 62 69 66 64 68 71 43 1[71 1[25 25 45 45 +45 45 45 45 45 45 45 45 45 25 30 25 1[45 35 35 25 71 +76 45 76 45 25 18[76 51 51 53 11[{}91 90.9091 /CMR10 +rf /Fv 138[108 1[76 79 3[108 1[54 3[108 1[59 88 1[86 +1[94 14[144 4[184 10[138 66[{}13 172.154 /CMBX12 rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%BeginPaperSize: Letter +/setpagedevice where +{ pop << /PageSize [612 792] >> setpagedevice } +{ /letter where { pop letter } if } +ifelse +%%EndPaperSize + end +%%EndSetup +%%Page: 1 1 +TeXDict begin 1 0 bop 150 1318 a Fv(Bash)64 b(Reference)j(Man)-5 +b(ual)p 150 1385 3600 34 v 2361 1481 a Fu(Reference)31 +b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(5.1,)g(for)f +Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.1.)3217 1697 y(Octob)s(er)f(2020)150 +4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 +b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 +b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 +b(oundation)p 150 5141 3600 17 v eop end +%%Page: 2 2 +TeXDict begin 2 1 bop 150 4279 a Fu(This)35 b(text)h(is)g(a)g(brief)f +(description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f +(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.1,)c(29)f(Octob)s(er)f +(2020\).)150 4523 y(This)35 b(is)g(Edition)h(5.1,)i(last)f(up)s(dated)d +(29)i(Octob)s(er)g(2020,)j(of)c Fr(The)h(GNU)g(Bash)f(Reference)i(Man)m +(ual)p Fu(,)150 4633 y(for)30 b Ft(Bash)p Fu(,)g(V)-8 +b(ersion)31 b(5.1.)150 4767 y(Cop)m(yrigh)m(t)602 4764 +y(c)577 4767 y Fq(\015)f Fu(1988{2020)35 b(F)-8 b(ree)31 +b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 4902 +y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 +b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f +(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 +b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26 +b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43 +b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 +b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46 +b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31 +b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 +b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 +5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8 +b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end +%%Page: -1 3 +TeXDict begin -1 2 bop 3725 -116 a Fu(i)150 299 y Fp(T)-13 +b(able)53 b(of)h(Con)l(ten)l(ts)150 649 y Fs(1)135 b(In)l(tro)t +(duction)31 b Fo(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)h(:)f(:)g(:)44 b Fs(1)275 786 y Fu(1.1)92 +b(What)31 b(is)f(Bash?)10 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)23 b Fu(1)275 896 y(1.2)92 b(What)31 +b(is)f(a)h(shell?)22 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)35 b Fu(1)150 1147 y Fs(2)135 b(De\014nitions)31 +b Fo(:)20 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:) +f(:)h(:)f(:)g(:)h(:)43 b Fs(3)150 1425 y(3)135 b(Basic)45 +b(Shell)g(F)-11 b(eatures)19 b Fo(:)h(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +h(:)f(:)32 b Fs(5)275 1562 y Fu(3.1)92 b(Shell)30 b(Syn)m(tax)13 +b Fn(:)j(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +27 b Fu(5)399 1671 y(3.1.1)93 b(Shell)30 b(Op)s(eration)14 +b Fn(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(5)399 +1781 y(3.1.2)93 b(Quoting)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)37 b Fu(6)524 1890 y(3.1.2.1)93 +b(Escap)s(e)30 b(Character)19 b Fn(:)d(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)33 b Fu(6)524 +2000 y(3.1.2.2)93 b(Single)31 b(Quotes)16 b Fn(:)g(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 +b Fu(6)524 2110 y(3.1.2.3)93 b(Double)31 b(Quotes)14 +b Fn(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)28 b Fu(6)524 2219 y(3.1.2.4)93 +b(ANSI-C)30 b(Quoting)15 b Fn(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)29 b Fu(6)524 +2329 y(3.1.2.5)93 b(Lo)s(cale-Sp)s(eci\014c)32 b(T)-8 +b(ranslation)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)30 +b Fu(7)399 2438 y(3.1.3)93 b(Commen)m(ts)14 b Fn(:)i(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(7)275 2548 y(3.2)92 +b(Shell)30 b(Commands)9 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)23 b Fu(8)399 2658 y(3.2.1)93 b(Reserv)m(ed)31 +b(W)-8 b(ords)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)40 +b Fu(8)399 2767 y(3.2.2)93 b(Simple)30 b(Commands)15 +b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b Fu(8)399 2877 y(3.2.3)93 +b(Pip)s(elines)26 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)40 b Fu(8)399 2986 y(3.2.4)93 b(Lists)30 +b(of)h(Commands)23 b Fn(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)36 b Fu(9)399 +3096 y(3.2.5)93 b(Comp)s(ound)28 b(Commands)9 b Fn(:)14 +b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +22 b Fu(10)524 3205 y(3.2.5.1)93 b(Lo)s(oping)30 b(Constructs)16 +b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)29 +b Fu(10)524 3315 y(3.2.5.2)93 b(Conditional)31 b(Constructs)25 +b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 +b Fu(11)524 3425 y(3.2.5.3)93 b(Grouping)30 b(Commands)22 +b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)36 +b Fu(15)399 3534 y(3.2.6)93 b(Copro)s(cesses)26 b Fn(:)15 +b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(15)399 +3644 y(3.2.7)93 b(GNU)31 b(P)m(arallel)13 b Fn(:)k(:)f(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)26 b Fu(16)275 3753 y(3.3)92 b(Shell)30 +b(F)-8 b(unctions)16 b Fn(:)g(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)29 b Fu(18)275 3863 y(3.4)92 b(Shell)30 b(P)m(arameters)c +Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 b +Fu(20)399 3973 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8 +b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)21 b Fu(21)399 4082 y(3.4.2)93 b(Sp)s(ecial)30 +b(P)m(arameters)c Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(21)275 4192 +y(3.5)92 b(Shell)30 b(Expansions)24 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)38 b Fu(22)399 4301 y(3.5.1)93 b(Brace)31 +b(Expansion)9 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b +Fu(23)399 4411 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b +Fn(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(24)399 4521 y(3.5.3)93 +b(Shell)30 b(P)m(arameter)i(Expansion)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(25)399 4630 y(3.5.4)93 +b(Command)29 b(Substitution)20 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(31)399 4740 +y(3.5.5)93 b(Arithmetic)31 b(Expansion)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b +Fu(31)399 4849 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15 +b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)28 b Fu(32)399 4959 y(3.5.7)93 b(W)-8 +b(ord)31 b(Splitting)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 +b Fu(32)399 5068 y(3.5.8)93 b(Filename)32 b(Expansion)22 +b Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)35 b Fu(33)524 5178 y(3.5.8.1)93 b(P)m(attern)31 +b(Matc)m(hing)14 b Fn(:)k(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(33)399 5288 y(3.5.9)93 +b(Quote)31 b(Remo)m(v)-5 b(al)17 b Fn(:)g(:)e(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)30 +b Fu(35)p eop end +%%Page: -2 4 +TeXDict begin -2 3 bop 3699 -116 a Fu(ii)275 83 y(3.6)92 +b(Redirections)14 b Fn(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)27 b Fu(35)399 193 y(3.6.1)93 b(Redirecting)31 +b(Input)11 b Fn(:)j(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(36)399 302 +y(3.6.2)93 b(Redirecting)31 b(Output)15 b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28 +b Fu(36)399 412 y(3.6.3)93 b(App)s(ending)28 b(Redirected)k(Output)20 +b Fn(:)14 b(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(36)399 +521 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h(and)f(Standard)h +(Error)16 b Fn(:)e(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)29 b +Fu(37)399 631 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and)h +(Standard)f(Error)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40 +b Fu(37)399 741 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15 +b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(37)399 850 y(3.6.7)93 +b(Here)31 b(Strings)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 +b Fu(38)399 960 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25 +b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 +b Fu(38)399 1069 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d +Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +40 b Fu(38)399 1179 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f +(for)f(Reading)h(and)f(W)-8 b(riting)29 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f +(:)41 b Fu(38)275 1289 y(3.7)92 b(Executing)31 b(Commands)24 +b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(39)399 1398 y(3.7.1)93 +b(Simple)30 b(Command)f(Expansion)11 b Fn(:)k(:)g(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)24 b Fu(39)399 1508 y(3.7.2)93 b(Command)29 +b(Searc)m(h)i(and)f(Execution)15 b Fn(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +28 b Fu(39)399 1617 y(3.7.3)93 b(Command)29 b(Execution)i(En)m +(vironmen)m(t)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(40)399 +1727 y(3.7.4)93 b(En)m(vironmen)m(t)26 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)39 b Fu(41)399 1836 y(3.7.5)93 b(Exit)31 +b(Status)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 +b Fu(41)399 1946 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(42)275 +2056 y(3.8)92 b(Shell)30 b(Scripts)12 b Fn(:)i(:)i(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(42)150 2306 +y Fs(4)135 b(Shell)45 b(Builtin)g(Commands)14 b Fo(:)20 +b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)27 b Fs(44)275 2443 y Fu(4.1)92 b(Bourne)30 +b(Shell)g(Builtins)16 b Fn(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)29 +b Fu(44)275 2553 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13 +b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)26 b Fu(51)275 2663 y(4.3)92 b(Mo)s(difying)30 +b(Shell)g(Beha)m(vior)18 b Fn(:)f(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(62)399 +2772 y(4.3.1)93 b(The)30 b(Set)g(Builtin)14 b Fn(:)i(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)27 b Fu(62)399 2882 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21 +b Fn(:)16 b(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(66)275 2991 y(4.4)92 +b(Sp)s(ecial)30 b(Builtins)9 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)22 b Fu(72)150 3242 y Fs(5)135 b(Shell)45 +b(V)-11 b(ariables)11 b Fo(:)20 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(73)275 3379 y Fu(5.1)92 +b(Bourne)30 b(Shell)g(V)-8 b(ariables)10 b Fn(:)17 b(:)e(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +23 b Fu(73)275 3489 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26 +b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 +b Fu(73)150 3739 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32 +b Fo(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +44 b Fs(86)275 3876 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16 +b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)29 +b Fu(86)275 3986 y(6.2)92 b(Bash)30 b(Startup)g(Files)f +Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(88)275 +4095 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)19 b Fn(:)d(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(89)399 4205 y(6.3.1)93 +b(What)31 b(is)f(an)h(In)m(teractiv)m(e)h(Shell?)25 b +Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 +b Fu(90)399 4315 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m +(e?)22 b Fn(:)d(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)35 b Fu(90)399 4424 y(6.3.3)93 b(In)m(teractiv)m(e)33 +b(Shell)d(Beha)m(vior)11 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(90)275 4534 y(6.4)92 b(Bash)30 +b(Conditional)h(Expressions)10 b Fn(:)k(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(91)275 4643 y(6.5)92 +b(Shell)30 b(Arithmetic)13 b Fn(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)26 b Fu(93)275 4753 y(6.6)92 b(Aliases)20 b Fn(:)d(:)e(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 +b Fu(94)275 4863 y(6.7)92 b(Arra)m(ys)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)38 +b Fu(95)275 4972 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)16 +b Fn(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(97)399 5082 +y(6.8.1)93 b(Directory)32 b(Stac)m(k)f(Builtins)23 b +Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +36 b Fu(97)275 5191 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)13 +b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(98)275 5301 y(6.10)92 +b(The)30 b(Restricted)h(Shell)9 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22 +b Fu(100)p eop end +%%Page: -3 5 +TeXDict begin -3 4 bop 3674 -116 a Fu(iii)275 83 y(6.11)92 +b(Bash)31 b(POSIX)e(Mo)s(de)14 b Fn(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28 +b Fu(101)275 193 y(6.12)92 b(Shell)30 b(Compatibilit)m(y)i(Mo)s(de)25 +b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)38 b Fu(104)150 443 y Fs(7)135 b(Job)45 b(Con)l(trol)35 +b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) +g(:)48 b Fs(107)275 580 y Fu(7.1)92 b(Job)30 b(Con)m(trol)h(Basics)23 +b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(107)275 690 +y(7.2)92 b(Job)30 b(Con)m(trol)h(Builtins)11 b Fn(:)k(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)24 b Fu(108)275 800 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8 +b(ariables)26 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(110)150 +1050 y Fs(8)135 b(Command)45 b(Line)g(Editing)11 b Fo(:)20 +b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)k Fs(111)275 1187 y Fu(8.1)92 b(In)m(tro)s(duction) +30 b(to)h(Line)f(Editing)12 b Fn(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(111)275 1297 y(8.2)92 +b(Readline)31 b(In)m(teraction)14 b Fn(:)j(:)e(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)27 +b Fu(111)399 1406 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13 +b Fn(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)26 +b Fu(112)399 1516 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i +(Commands)13 b Fn(:)i(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)27 +b Fu(112)399 1626 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24 +b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 +b Fu(113)399 1735 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17 +b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)30 b Fu(113)399 1845 y(8.2.5)93 b(Searc)m(hing)31 +b(for)f(Commands)f(in)h(the)h(History)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(113)275 +1954 y(8.3)92 b(Readline)31 b(Init)f(File)8 b Fn(:)17 +b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(114)399 2064 +y(8.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)21 +b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)34 +b Fu(114)399 2174 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14 +b Fn(:)h(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27 +b Fu(122)399 2283 y(8.3.3)93 b(Sample)30 b(Init)g(File)20 +b Fn(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(124)275 2393 y(8.4)92 +b(Bindable)30 b(Readline)h(Commands)19 b Fn(:)c(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(127)399 2502 y(8.4.1)93 +b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)16 b Fn(:)h(:)e(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(127)399 +2612 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f +(History)c Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)39 b Fu(128)399 2721 y(8.4.3)93 b(Commands)29 b(F)-8 +b(or)31 b(Changing)f(T)-8 b(ext)9 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)23 b Fu(130)399 2831 y(8.4.4)93 b(Killing)31 +b(And)e(Y)-8 b(anking)10 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(131)399 +2941 y(8.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)25 +b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(132)399 +3050 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8 +b(or)31 b(Y)-8 b(ou)20 b Fn(:)c(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33 +b Fu(133)399 3160 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9 +b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(134)399 3269 y(8.4.8)93 +b(Some)30 b(Miscellaneous)j(Commands)14 b Fn(:)f(:)j(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)27 b Fu(135)275 3379 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e +Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(137)275 +3489 y(8.6)92 b(Programmable)30 b(Completion)25 b Fn(:)15 +b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 +b Fu(137)275 3598 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14 +b Fn(:)i(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(139)275 +3708 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)8 +b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(143)150 3958 y +Fs(9)135 b(Using)45 b(History)h(In)l(teractiv)l(ely)28 +b Fo(:)22 b(:)d(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)41 b Fs(146)275 4095 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8 +b(acilities)9 b Fn(:)19 b(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(146)275 +4205 y(9.2)92 b(Bash)30 b(History)h(Builtins)d Fn(:)16 +b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)h(:)f(:)41 b Fu(146)275 4315 y(9.3)92 b(History)31 +b(Expansion)10 b Fn(:)k(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)23 +b Fu(148)399 4424 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19 +b Fn(:)e(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)32 b Fu(149)399 4534 y(9.3.2)93 b(W)-8 +b(ord)31 b(Designators)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(150)399 +4643 y(9.3.3)93 b(Mo)s(di\014ers)15 b Fn(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)29 b Fu(150)p eop end +%%Page: -4 6 +TeXDict begin -4 5 bop 3677 -116 a Fu(iv)150 83 y Fs(10)135 +b(Installing)46 b(Bash)16 b Fo(:)j(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)h(:)f(:)29 b Fs(152)275 220 y Fu(10.1)92 b(Basic)32 +b(Installation)8 b Fn(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22 +b Fu(152)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17 +b Fn(:)d(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)30 b Fu(153)275 439 y(10.3)92 b(Compiling)30 +b(F)-8 b(or)32 b(Multiple)f(Arc)m(hitectures)10 b Fn(:)16 +b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(153)275 549 y(10.4)92 +b(Installation)32 b(Names)22 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)35 +b Fu(153)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s +(e)21 b Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)34 b Fu(154)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24 +b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(154)275 +878 y(10.7)92 b(Op)s(eration)30 b(Con)m(trols)12 b Fn(:)k(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)25 b Fu(154)275 987 y(10.8)92 b(Optional)31 +b(F)-8 b(eatures)19 b Fn(:)d(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)32 +b Fu(155)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46 +b(Bugs)21 b Fo(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)35 b Fs(160)150 1498 y(App)t(endix)44 +b(B)125 b(Ma)7 b(jor)46 b(Di\013erences)g(F)-11 b(rom)284 +1639 y(The)45 b(Bourne)f(Shell)35 b Fo(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)47 b Fs(161)275 1776 y Fu(B.1)92 +b(Implemen)m(tation)31 b(Di\013erences)h(F)-8 b(rom)31 +b(The)e(SVR4.2)j(Shell)22 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)35 b Fu(165)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36 +b(F)-11 b(ree)35 b(Do)t(cumen)l(tation)i(License)25 b +Fo(:)20 b(:)29 b Fs(167)150 2305 y(App)t(endix)44 b(D)118 +b(Indexes)27 b Fo(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)40 +b Fs(175)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h +(Commands)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)38 +b Fu(175)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8 +b(ords)20 b Fn(:)c(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)34 +b Fu(176)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8 +b(ariable)32 b(Index)27 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)42 b Fu(177)275 2771 y(D.4)92 b(F)-8 b(unction)31 +b(Index)24 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 +b Fu(179)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b +Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b +Fu(181)p eop end +%%Page: 1 7 +TeXDict begin 1 6 bop 3705 -116 a Fu(1)150 299 y Fp(1)80 +b(In)l(tro)t(duction)150 604 y Fs(1.1)68 b(What)45 b(is)g(Bash?)150 +763 y Fu(Bash)38 b(is)g(the)g(shell,)i(or)d(command)h(language)h(in)m +(terpreter,)h(for)e(the)g Fm(gnu)f Fu(op)s(erating)h(system.)63 +b(The)150 873 y(name)33 b(is)g(an)g(acron)m(ym)g(for)g(the)g(`)p +Ft(Bourne-Again)27 b(SHell)p Fu(',)32 b(a)i(pun)d(on)i(Stephen)f +(Bourne,)h(the)g(author)150 983 y(of)f(the)f(direct)h(ancestor)h(of)e +(the)h(curren)m(t)f(Unix)g(shell)h Ft(sh)p Fu(,)f(whic)m(h)g(app)s +(eared)g(in)g(the)h(Sev)m(en)m(th)g(Edition)150 1092 +y(Bell)g(Labs)e(Researc)m(h)h(v)m(ersion)g(of)f(Unix.)275 +1221 y(Bash)f(is)g(largely)i(compatible)f(with)f Ft(sh)g +Fu(and)g(incorp)s(orates)g(useful)g(features)g(from)g(the)g(Korn)g +(shell)150 1330 y Ft(ksh)37 b Fu(and)h(the)g(C)g(shell)g +Ft(csh)p Fu(.)64 b(It)38 b(is)g(in)m(tended)g(to)h(b)s(e)f(a)g +(conforman)m(t)h(implemen)m(tation)h(of)e(the)g Fm(ieee)150 +1440 y(posix)c Fu(Shell)g(and)g(T)-8 b(o)s(ols)35 b(p)s(ortion)f(of)g +(the)h Fm(ieee)f(posix)f Fu(sp)s(eci\014cation)j(\()p +Fm(ieee)e Fu(Standard)f(1003.1\).)56 b(It)150 1550 y(o\013ers)31 +b(functional)f(impro)m(v)m(emen)m(ts)i(o)m(v)m(er)g Ft(sh)d +Fu(for)i(b)s(oth)e(in)m(teractiv)m(e)k(and)d(programming)g(use.)275 +1678 y(While)h(the)g Fm(gnu)f Fu(op)s(erating)h(system)g(pro)m(vides)f +(other)h(shells,)g(including)f(a)h(v)m(ersion)g(of)g +Ft(csh)p Fu(,)f(Bash)150 1788 y(is)j(the)h(default)f(shell.)49 +b(Lik)m(e)34 b(other)g Fm(gnu)f Fu(soft)m(w)m(are,)i(Bash)f(is)f(quite) +h(p)s(ortable.)49 b(It)33 b(curren)m(tly)g(runs)f(on)150 +1897 y(nearly)c(ev)m(ery)g(v)m(ersion)g(of)f(Unix)h(and)e(a)i(few)f +(other)h(op)s(erating)g(systems)f Fq(\000)g Fu(indep)s(enden)m +(tly-supp)s(orted)150 2007 y(p)s(orts)j(exist)h(for)f +Fm(ms-dos)p Fu(,)f Fm(os/2)p Fu(,)i(and)f(Windo)m(ws)g(platforms.)150 +2236 y Fs(1.2)68 b(What)45 b(is)g(a)h(shell?)150 2395 +y Fu(A)m(t)32 b(its)f(base,)h(a)f(shell)g(is)h(simply)e(a)h(macro)h +(pro)s(cessor)f(that)g(executes)i(commands.)42 b(The)30 +b(term)h(macro)150 2505 y(pro)s(cessor)25 b(means)g(functionalit)m(y)i +(where)d(text)j(and)d(sym)m(b)s(ols)h(are)h(expanded)e(to)i(create)h +(larger)f(expres-)150 2615 y(sions.)275 2743 y(A)34 b(Unix)h(shell)g +(is)f(b)s(oth)g(a)h(command)g(in)m(terpreter)g(and)f(a)h(programming)f +(language.)55 b(As)35 b(a)g(com-)150 2853 y(mand)30 b(in)m(terpreter,)i +(the)g(shell)f(pro)m(vides)g(the)h(user)e(in)m(terface)j(to)f(the)f +(ric)m(h)h(set)g(of)f Fm(gnu)g Fu(utilities.)44 b(The)150 +2962 y(programming)30 b(language)h(features)f(allo)m(w)h(these)g +(utilities)g(to)g(b)s(e)e(com)m(bined.)41 b(Files)31 +b(con)m(taining)g(com-)150 3072 y(mands)e(can)i(b)s(e)e(created,)j(and) +d(b)s(ecome)i(commands)f(themselv)m(es.)42 b(These)30 +b(new)f(commands)h(ha)m(v)m(e)i(the)150 3182 y(same)j(status)g(as)g +(system)g(commands)f(in)g(directories)i(suc)m(h)e(as)h +Ft(/bin)p Fu(,)g(allo)m(wing)h(users)e(or)g(groups)g(to)150 +3291 y(establish)d(custom)f(en)m(vironmen)m(ts)h(to)g(automate)h(their) +f(common)f(tasks.)275 3420 y(Shells)j(ma)m(y)h(b)s(e)f(used)g(in)m +(teractiv)m(ely)k(or)d(non-in)m(teractiv)m(ely)-8 b(.)54 +b(In)33 b(in)m(teractiv)m(e)j(mo)s(de,)f(they)e(accept)150 +3529 y(input)21 b(t)m(yp)s(ed)h(from)g(the)h(k)m(eyb)s(oard.)37 +b(When)22 b(executing)i(non-in)m(teractiv)m(ely)-8 b(,)27 +b(shells)c(execute)g(commands)150 3639 y(read)30 b(from)g(a)h(\014le.) +275 3768 y(A)41 b(shell)g(allo)m(ws)h(execution)h(of)e +Fm(gnu)g Fu(commands,)i(b)s(oth)e(sync)m(hronously)f(and)h(async)m +(hronously)-8 b(.)150 3877 y(The)29 b(shell)g(w)m(aits)i(for)e(sync)m +(hronous)f(commands)h(to)h(complete)h(b)s(efore)e(accepting)i(more)e +(input;)g(asyn-)150 3987 y(c)m(hronous)22 b(commands)h(con)m(tin)m(ue)h +(to)f(execute)h(in)e(parallel)i(with)f(the)f(shell)h(while)g(it)g +(reads)g(and)f(executes)150 4096 y(additional)35 b(commands.)50 +b(The)33 b Fr(redirection)h Fu(constructs)g(p)s(ermit)f(\014ne-grained) +g(con)m(trol)i(of)f(the)g(input)150 4206 y(and)40 b(output)f(of)i +(those)f(commands.)70 b(Moreo)m(v)m(er,)45 b(the)c(shell)f(allo)m(ws)h +(con)m(trol)h(o)m(v)m(er)g(the)e(con)m(ten)m(ts)i(of)150 +4316 y(commands')30 b(en)m(vironmen)m(ts.)275 4444 y(Shells)k(also)i +(pro)m(vide)g(a)f(small)h(set)f(of)g(built-in)g(commands)g(\()p +Fr(builtins)t Fu(\))g(implemen)m(ting)h(function-)150 +4554 y(alit)m(y)i(imp)s(ossible)e(or)g(incon)m(v)m(enien)m(t)j(to)e +(obtain)g(via)g(separate)g(utilities.)61 b(F)-8 b(or)37 +b(example,)i Ft(cd)p Fu(,)e Ft(break)p Fu(,)150 4663 +y Ft(continue)p Fu(,)28 b(and)i Ft(exec)f Fu(cannot)i(b)s(e)f(implemen) +m(ted)h(outside)g(of)f(the)h(shell)f(b)s(ecause)h(they)f(directly)h +(ma-)150 4773 y(nipulate)d(the)g(shell)g(itself.)41 b(The)27 +b Ft(history)p Fu(,)g Ft(getopts)p Fu(,)f Ft(kill)p Fu(,)i(or)g +Ft(pwd)f Fu(builtins,)h(among)g(others,)h(could)150 4883 +y(b)s(e)34 b(implemen)m(ted)g(in)g(separate)h(utilities,)i(but)d(they)g +(are)g(more)h(con)m(v)m(enien)m(t)h(to)f(use)f(as)g(builtin)g(com-)150 +4992 y(mands.)40 b(All)31 b(of)f(the)h(shell)f(builtins)g(are)h +(describ)s(ed)e(in)h(subsequen)m(t)g(sections.)275 5121 +y(While)39 b(executing)h(commands)e(is)g(essen)m(tial,)43 +b(most)c(of)g(the)g(p)s(o)m(w)m(er)f(\(and)g(complexit)m(y\))j(of)e +(shells)150 5230 y(is)34 b(due)f(to)i(their)f(em)m(b)s(edded)f +(programming)h(languages.)52 b(Lik)m(e)35 b(an)m(y)f(high-lev)m(el)i +(language,)h(the)d(shell)150 5340 y(pro)m(vides)c(v)-5 +b(ariables,)32 b(\015o)m(w)e(con)m(trol)i(constructs,)f(quoting,)g(and) +f(functions.)p eop end +%%Page: 2 8 +TeXDict begin 2 7 bop 150 -116 a Fu(Chapter)30 b(1:)41 +b(In)m(tro)s(duction)2592 b(2)275 299 y(Shells)21 b(o\013er)i(features) +f(geared)h(sp)s(eci\014cally)g(for)f(in)m(teractiv)m(e)j(use)d(rather)g +(than)g(to)h(augmen)m(t)g(the)f(pro-)150 408 y(gramming)32 +b(language.)48 b(These)32 b(in)m(teractiv)m(e)j(features)d(include)g +(job)g(con)m(trol,)j(command)c(line)i(editing,)150 518 +y(command)d(history)g(and)g(aliases.)42 b(Eac)m(h)31 +b(of)g(these)g(features)f(is)h(describ)s(ed)e(in)h(this)g(man)m(ual.)p +eop end +%%Page: 3 9 +TeXDict begin 3 8 bop 3705 -116 a Fu(3)150 299 y Fp(2)80 +b(De\014nitions)150 552 y Fu(These)30 b(de\014nitions)g(are)h(used)e +(throughout)h(the)h(remainder)f(of)g(this)h(man)m(ual.)150 +720 y Ft(POSIX)240 b Fu(A)27 b(family)g(of)g(op)s(en)f(system)g +(standards)g(based)g(on)h(Unix.)39 b(Bash)27 b(is)g(primarily)f +(concerned)630 830 y(with)k(the)h(Shell)f(and)g(Utilities)i(p)s(ortion) +e(of)h(the)f Fm(posix)g Fu(1003.1)j(standard.)150 995 +y Ft(blank)240 b Fu(A)30 b(space)h(or)g(tab)f(c)m(haracter.)150 +1161 y Ft(builtin)144 b Fu(A)35 b(command)g(that)g(is)g(implemen)m(ted) +g(in)m(ternally)h(b)m(y)f(the)g(shell)g(itself,)i(rather)d(than)h(b)m +(y)630 1271 y(an)30 b(executable)i(program)e(somewhere)h(in)f(the)g +(\014le)h(system.)150 1436 y Ft(control)d(operator)630 +1546 y Fu(A)20 b Ft(token)f Fu(that)i(p)s(erforms)e(a)i(con)m(trol)g +(function.)37 b(It)21 b(is)f(a)h Ft(newline)d Fu(or)j(one)f(of)h(the)f +(follo)m(wing:)630 1655 y(`)p Ft(||)p Fu(',)31 b(`)p +Ft(&&)p Fu(',)f(`)p Ft(&)p Fu(',)h(`)p Ft(;)p Fu(',)g(`)p +Ft(;;)p Fu(',)f(`)p Ft(;&)p Fu(',)h(`)p Ft(;;&)p Fu(',)f(`)p +Ft(|)p Fu(',)h(`)p Ft(|&)p Fu(',)f(`)p Ft(\()p Fu(',)h(or)f(`)p +Ft(\))p Fu('.)150 1821 y Ft(exit)f(status)630 1931 y +Fu(The)f(v)-5 b(alue)29 b(returned)e(b)m(y)h(a)h(command)f(to)h(its)g +(caller.)41 b(The)28 b(v)-5 b(alue)29 b(is)f(restricted)h(to)h(eigh)m +(t)630 2040 y(bits,)h(so)f(the)h(maxim)m(um)f(v)-5 b(alue)31 +b(is)f(255.)150 2206 y Ft(field)240 b Fu(A)27 b(unit)g(of)g(text)h +(that)g(is)f(the)g(result)g(of)g(one)h(of)f(the)g(shell)g(expansions.) +40 b(After)27 b(expansion,)630 2315 y(when)e(executing)h(a)g(command,)h +(the)f(resulting)f(\014elds)g(are)h(used)f(as)h(the)g(command)f(name) +630 2425 y(and)30 b(argumen)m(ts.)150 2591 y Ft(filename)96 +b Fu(A)30 b(string)h(of)f(c)m(haracters)i(used)e(to)h(iden)m(tify)g(a)f +(\014le.)150 2756 y Ft(job)336 b Fu(A)31 b(set)h(of)f(pro)s(cesses)g +(comprising)g(a)g(pip)s(eline,)g(and)g(an)m(y)g(pro)s(cesses)g +(descended)g(from)f(it,)630 2866 y(that)h(are)g(all)g(in)f(the)h(same)f +(pro)s(cess)g(group.)150 3031 y Ft(job)f(control)630 +3141 y Fu(A)22 b(mec)m(hanism)g(b)m(y)f(whic)m(h)h(users)f(can)h +(selectiv)m(ely)i(stop)e(\(susp)s(end\))e(and)h(restart)i(\(resume\)) +630 3251 y(execution)32 b(of)e(pro)s(cesses.)150 3416 +y Ft(metacharacter)630 3526 y Fu(A)23 b(c)m(haracter)h(that,)h(when)d +(unquoted,)h(separates)h(w)m(ords.)37 b(A)23 b(metac)m(haracter)i(is)e +(a)g Ft(space)p Fu(,)630 3635 y Ft(tab)p Fu(,)29 b Ft(newline)p +Fu(,)e(or)i(one)h(of)f(the)h(follo)m(wing)g(c)m(haracters:)42 +b(`)p Ft(|)p Fu(',)29 b(`)p Ft(&)p Fu(',)h(`)p Ft(;)p +Fu(',)g(`)p Ft(\()p Fu(',)g(`)p Ft(\))p Fu(',)g(`)p Ft(<)p +Fu(',)f(or)h(`)p Ft(>)p Fu('.)150 3801 y Ft(name)288 +b Fu(A)37 b Ft(word)f Fu(consisting)i(solely)h(of)e(letters,)j(n)m(um)m +(b)s(ers,)e(and)f(underscores,)h(and)f(b)s(eginning)630 +3910 y(with)23 b(a)g(letter)h(or)f(underscore.)38 b Ft(Name)p +Fu(s)22 b(are)h(used)f(as)i(shell)f(v)-5 b(ariable)24 +b(and)e(function)h(names.)630 4020 y(Also)31 b(referred)f(to)h(as)f(an) +h Ft(identifier)p Fu(.)150 4186 y Ft(operator)96 b Fu(A)38 +b Ft(control)28 b(operator)36 b Fu(or)h(a)i Ft(redirection)27 +b(operator)p Fu(.)61 b(See)38 b(Section)g(3.6)h([Redirec-)630 +4295 y(tions],)f(page)f(35,)i(for)d(a)g(list)h(of)f(redirection)h(op)s +(erators.)58 b(Op)s(erators)35 b(con)m(tain)j(at)f(least)630 +4405 y(one)31 b(unquoted)e Ft(metacharacter)p Fu(.)150 +4570 y Ft(process)f(group)630 4680 y Fu(A)i(collection)k(of)c(related)h +(pro)s(cesses)g(eac)m(h)g(ha)m(ving)g(the)g(same)f(pro)s(cess)g(group)g +Fm(id)p Fu(.)150 4846 y Ft(process)e(group)h(ID)630 4955 +y Fu(A)h(unique)g(iden)m(ti\014er)h(that)f(represen)m(ts)h(a)g +Ft(process)d(group)h Fu(during)g(its)i(lifetime.)150 +5121 y Ft(reserved)d(word)630 5230 y Fu(A)h Ft(word)e +Fu(that)i(has)f(a)h(sp)s(ecial)g(meaning)f(to)h(the)g(shell.)40 +b(Most)30 b(reserv)m(ed)e(w)m(ords)g(in)m(tro)s(duce)630 +5340 y(shell)j(\015o)m(w)f(con)m(trol)i(constructs,)f(suc)m(h)f(as)g +Ft(for)g Fu(and)g Ft(while)p Fu(.)p eop end +%%Page: 4 10 +TeXDict begin 4 9 bop 150 -116 a Fu(Chapter)30 b(2:)41 +b(De\014nitions)2662 b(4)150 299 y Ft(return)29 b(status)630 +408 y Fu(A)h(synon)m(ym)g(for)g Ft(exit)g(status)p Fu(.)150 +568 y Ft(signal)192 b Fu(A)40 b(mec)m(hanism)h(b)m(y)e(whic)m(h)h(a)h +(pro)s(cess)e(ma)m(y)i(b)s(e)e(noti\014ed)h(b)m(y)g(the)h(k)m(ernel)f +(of)g(an)g(ev)m(en)m(t)630 677 y(o)s(ccurring)30 b(in)g(the)h(system.) +150 837 y Ft(special)d(builtin)630 946 y Fu(A)j(shell)f(builtin)g +(command)h(that)g(has)f(b)s(een)g(classi\014ed)h(as)g(sp)s(ecial)g(b)m +(y)f(the)h Fm(posix)f Fu(stan-)630 1056 y(dard.)150 1215 +y Ft(token)240 b Fu(A)38 b(sequence)h(of)f(c)m(haracters)h(considered)f +(a)h(single)g(unit)e(b)m(y)h(the)h(shell.)64 b(It)38 +b(is)g(either)h(a)630 1325 y Ft(word)29 b Fu(or)i(an)f +Ft(operator)p Fu(.)150 1484 y Ft(word)288 b Fu(A)28 b(sequence)g(of)g +(c)m(haracters)h(treated)g(as)f(a)g(unit)f(b)m(y)h(the)g(shell.)40 +b(W)-8 b(ords)28 b(ma)m(y)g(not)g(include)630 1594 y(unquoted)i +Ft(metacharacters)p Fu(.)p eop end +%%Page: 5 11 +TeXDict begin 5 10 bop 3705 -116 a Fu(5)150 299 y Fp(3)80 +b(Basic)54 b(Shell)e(F)-13 b(eatures)150 601 y Fu(Bash)21 +b(is)g(an)f(acron)m(ym)i(for)e(`)p Ft(Bourne-Again)27 +b(SHell)p Fu('.)37 b(The)20 b(Bourne)g(shell)h(is)g(the)g(traditional)h +(Unix)f(shell)150 710 y(originally)h(written)f(b)m(y)f(Stephen)g +(Bourne.)38 b(All)21 b(of)g(the)g(Bourne)f(shell)h(builtin)f(commands)g +(are)i(a)m(v)-5 b(ailable)150 820 y(in)26 b(Bash,)h(The)f(rules)f(for)h +(ev)-5 b(aluation)28 b(and)d(quoting)h(are)h(tak)m(en)g(from)f(the)g +Fm(posix)f Fu(sp)s(eci\014cation)i(for)f(the)150 929 +y(`standard')k(Unix)g(shell.)275 1086 y(This)h(c)m(hapter)i(brie\015y)e +(summarizes)h(the)h(shell's)f(`building)g(blo)s(c)m(ks':)45 +b(commands,)32 b(con)m(trol)i(struc-)150 1196 y(tures,)k(shell)e +(functions,)h(shell)g Fl(p)-5 b(ar)g(ameters)p Fu(,)41 +b(shell)36 b(expansions,)i Fl(r)-5 b(e)g(dir)g(e)g(ctions)p +Fu(,)40 b(whic)m(h)c(are)h(a)f(w)m(a)m(y)h(to)150 1306 +y(direct)31 b(input)e(and)h(output)g(from)g(and)g(to)h(named)f +(\014les,)g(and)g(ho)m(w)g(the)h(shell)g(executes)g(commands.)150 +1580 y Fs(3.1)68 b(Shell)45 b(Syn)l(tax)150 1740 y Fu(When)40 +b(the)h(shell)g(reads)f(input,)i(it)f(pro)s(ceeds)f(through)g(a)h +(sequence)g(of)g(op)s(erations.)71 b(If)40 b(the)h(input)150 +1849 y(indicates)31 b(the)f(b)s(eginning)f(of)h(a)g(commen)m(t,)h(the)f +(shell)g(ignores)g(the)g(commen)m(t)h(sym)m(b)s(ol)f(\(`)p +Ft(#)p Fu('\),)h(and)e(the)150 1959 y(rest)i(of)f(that)h(line.)275 +2116 y(Otherwise,)h(roughly)f(sp)s(eaking,)i(the)f(shell)g(reads)g(its) +g(input)f(and)h(divides)f(the)i(input)e(in)m(to)h(w)m(ords)150 +2225 y(and)23 b(op)s(erators,)j(emplo)m(ying)e(the)g(quoting)h(rules)e +(to)h(select)i(whic)m(h)d(meanings)h(to)h(assign)f(v)-5 +b(arious)23 b(w)m(ords)150 2335 y(and)30 b(c)m(haracters.)275 +2492 y(The)38 b(shell)h(then)f(parses)g(these)h(tok)m(ens)h(in)m(to)f +(commands)g(and)f(other)h(constructs,)i(remo)m(v)m(es)f(the)150 +2602 y(sp)s(ecial)31 b(meaning)f(of)g(certain)h(w)m(ords)f(or)g(c)m +(haracters,)i(expands)d(others,)h(redirects)h(input)e(and)g(output)150 +2711 y(as)d(needed,)g(executes)g(the)g(sp)s(eci\014ed)e(command,)j(w)m +(aits)f(for)f(the)g(command's)g(exit)i(status,)f(and)f(mak)m(es)150 +2821 y(that)31 b(exit)g(status)g(a)m(v)-5 b(ailable)33 +b(for)d(further)f(insp)s(ection)h(or)h(pro)s(cessing.)150 +3043 y Fk(3.1.1)63 b(Shell)41 b(Op)s(eration)150 3190 +y Fu(The)c(follo)m(wing)h(is)f(a)h(brief)e(description)i(of)f(the)g +(shell's)h(op)s(eration)f(when)f(it)i(reads)f(and)f(executes)j(a)150 +3299 y(command.)h(Basically)-8 b(,)34 b(the)c(shell)h(do)s(es)f(the)h +(follo)m(wing:)199 3456 y(1.)61 b(Reads)42 b(its)h(input)e(from)h(a)g +(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(42\),)k +(from)41 b(a)i(string)330 3566 y(supplied)30 b(as)h(an)g(argumen)m(t)h +(to)g(the)f Ft(-c)g Fu(in)m(v)m(o)s(cation)i(option)f(\(see)g(Section)g +(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(86\),)h(or)e(from)g +(the)h(user's)f(terminal.)199 3821 y(2.)61 b(Breaks)43 +b(the)g(input)f(in)m(to)h(w)m(ords)f(and)g(op)s(erators,)k(ob)s(eying)d +(the)g(quoting)g(rules)f(describ)s(ed)f(in)330 3931 y(Section)27 +b(3.1.2)i([Quoting],)f(page)f(6.)40 b(These)26 b(tok)m(ens)i(are)f +(separated)g(b)m(y)f Ft(metacharacters)p Fu(.)36 b(Alias)330 +4040 y(expansion)30 b(is)h(p)s(erformed)d(b)m(y)j(this)f(step)g(\(see)i +(Section)f(6.6)g([Aliases],)i(page)e(94\).)199 4186 y(3.)61 +b(P)m(arses)35 b(the)g(tok)m(ens)g(in)m(to)h(simple)e(and)g(comp)s +(ound)f(commands)h(\(see)h(Section)h(3.2)f([Shell)g(Com-)330 +4296 y(mands],)30 b(page)h(8\).)199 4442 y(4.)61 b(P)m(erforms)40 +b(the)h(v)-5 b(arious)40 b(shell)h(expansions)f(\(see)h(Section)g(3.5)g +([Shell)g(Expansions],)h(page)f(22\),)330 4551 y(breaking)35 +b(the)g(expanded)g(tok)m(ens)h(in)m(to)g(lists)f(of)g(\014lenames)h +(\(see)g(Section)f(3.5.8)i([Filename)g(Ex-)330 4661 y(pansion],)30 +b(page)h(33\))h(and)e(commands)g(and)g(argumen)m(ts.)199 +4807 y(5.)61 b(P)m(erforms)36 b(an)m(y)i(necessary)f(redirections)g +(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(35\))g(and)e(re-)330 +4916 y(mo)m(v)m(es)c(the)e(redirection)h(op)s(erators)g(and)f(their)g +(op)s(erands)f(from)h(the)h(argumen)m(t)f(list.)199 5062 +y(6.)61 b(Executes)31 b(the)g(command)f(\(see)h(Section)g(3.7)h +([Executing)f(Commands],)f(page)h(39\).)199 5208 y(7.)61 +b(Optionally)40 b(w)m(aits)g(for)f(the)g(command)g(to)h(complete)g(and) +f(collects)i(its)f(exit)g(status)f(\(see)h(Sec-)330 5317 +y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(41\).)p +eop end +%%Page: 6 12 +TeXDict begin 6 11 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(6)150 299 +y Fk(3.1.2)63 b(Quoting)150 446 y Fu(Quoting)32 b(is)h(used)e(to)i +(remo)m(v)m(e)h(the)e(sp)s(ecial)h(meaning)f(of)h(certain)g(c)m +(haracters)g(or)f(w)m(ords)g(to)h(the)f(shell.)150 555 +y(Quoting)c(can)f(b)s(e)g(used)f(to)j(disable)e(sp)s(ecial)h(treatmen)m +(t)h(for)e(sp)s(ecial)h(c)m(haracters,)i(to)e(prev)m(en)m(t)g(reserv)m +(ed)150 665 y(w)m(ords)i(from)g(b)s(eing)g(recognized)h(as)g(suc)m(h,)f +(and)g(to)h(prev)m(en)m(t)g(parameter)g(expansion.)275 +795 y(Eac)m(h)22 b(of)g(the)g(shell)g(metac)m(haracters)i(\(see)f +(Chapter)e(2)i([De\014nitions],)h(page)f(3\))g(has)e(sp)s(ecial)i +(meaning)150 905 y(to)40 b(the)g(shell)f(and)g(m)m(ust)g(b)s(e)g +(quoted)g(if)h(it)g(is)f(to)h(represen)m(t)g(itself.)68 +b(When)39 b(the)h(command)f(history)150 1015 y(expansion)i(facilities)j +(are)e(b)s(eing)f(used)g(\(see)h(Section)h(9.3)f([History)h(In)m +(teraction],)j(page)c(148\),)47 b(the)150 1124 y Fr(history)30 +b(expansion)h Fu(c)m(haracter,)h(usually)f(`)p Ft(!)p +Fu(',)g(m)m(ust)f(b)s(e)g(quoted)h(to)g(prev)m(en)m(t)g(history)g +(expansion.)41 b(See)150 1234 y(Section)22 b(9.1)g([Bash)f(History)h(F) +-8 b(acilities],)26 b(page)c(146,)j(for)20 b(more)h(details)h +(concerning)g(history)f(expansion.)275 1364 y(There)37 +b(are)h(three)f(quoting)h(mec)m(hanisms:)56 b(the)38 +b Fr(escap)s(e)g(c)m(haracter)p Fu(,)j(single)d(quotes,)i(and)d(double) +150 1474 y(quotes.)150 1665 y Fk(3.1.2.1)63 b(Escap)s(e)41 +b(Character)150 1812 y Fu(A)36 b(non-quoted)f(bac)m(kslash)h(`)p +Ft(\\)p Fu(')g(is)f(the)h(Bash)g(escap)s(e)f(c)m(haracter.)58 +b(It)36 b(preserv)m(es)f(the)h(literal)h(v)-5 b(alue)36 +b(of)150 1921 y(the)27 b(next)g(c)m(haracter)h(that)f(follo)m(ws,)i +(with)d(the)h(exception)g(of)g Ft(newline)p Fu(.)38 b(If)26 +b(a)h Ft(\\newline)d Fu(pair)i(app)s(ears,)150 2031 y(and)k(the)h(bac)m +(kslash)g(itself)g(is)g(not)g(quoted,)g(the)f Ft(\\newline)f +Fu(is)h(treated)i(as)f(a)g(line)g(con)m(tin)m(uation)h(\(that)150 +2140 y(is,)f(it)g(is)f(remo)m(v)m(ed)h(from)f(the)h(input)e(stream)i +(and)f(e\013ectiv)m(ely)j(ignored\).)150 2331 y Fk(3.1.2.2)63 +b(Single)42 b(Quotes)150 2478 y Fu(Enclosing)24 b(c)m(haracters)h(in)e +(single)h(quotes)g(\(`)p Ft(')p Fu('\))g(preserv)m(es)g(the)f(literal)i +(v)-5 b(alue)24 b(of)g(eac)m(h)g(c)m(haracter)h(within)150 +2588 y(the)31 b(quotes.)42 b(A)31 b(single)h(quote)f(ma)m(y)g(not)g(o)s +(ccur)g(b)s(et)m(w)m(een)g(single)h(quotes,)f(ev)m(en)h(when)d +(preceded)i(b)m(y)g(a)150 2697 y(bac)m(kslash.)150 2888 +y Fk(3.1.2.3)63 b(Double)42 b(Quotes)150 3035 y Fu(Enclosing)24 +b(c)m(haracters)h(in)f(double)f(quotes)h(\(`)p Ft(")p +Fu('\))g(preserv)m(es)g(the)g(literal)h(v)-5 b(alue)24 +b(of)g(all)g(c)m(haracters)h(within)150 3145 y(the)34 +b(quotes,)h(with)f(the)g(exception)h(of)f(`)p Ft($)p +Fu(',)h(`)p Ft(`)p Fu(',)g(`)p Ft(\\)p Fu(',)g(and,)f(when)f(history)g +(expansion)h(is)g(enabled,)h(`)p Ft(!)p Fu('.)150 3254 +y(When)c(the)g(shell)g(is)g(in)f Fm(posix)h Fu(mo)s(de)f(\(see)i +(Section)g(6.11)g([Bash)f(POSIX)f(Mo)s(de],)i(page)g(101\),)h(the)e(`)p +Ft(!)p Fu(')150 3364 y(has)d(no)g(sp)s(ecial)h(meaning)g(within)f +(double)g(quotes,)h(ev)m(en)g(when)f(history)g(expansion)g(is)g +(enabled.)40 b(The)150 3474 y(c)m(haracters)h(`)p Ft($)p +Fu(')e(and)g(`)p Ft(`)p Fu(')g(retain)h(their)f(sp)s(ecial)h(meaning)f +(within)g(double)g(quotes)h(\(see)g(Section)g(3.5)150 +3583 y([Shell)29 b(Expansions],)g(page)h(22\).)41 b(The)28 +b(bac)m(kslash)i(retains)f(its)h(sp)s(ecial)f(meaning)g(only)g(when)f +(follo)m(w)m(ed)150 3693 y(b)m(y)41 b(one)f(of)h(the)g(follo)m(wing)h +(c)m(haracters:)63 b(`)p Ft($)p Fu(',)43 b(`)p Ft(`)p +Fu(',)h(`)p Ft(")p Fu(',)g(`)p Ft(\\)p Fu(',)f(or)e Ft(newline)p +Fu(.)69 b(Within)41 b(double)f(quotes,)150 3802 y(bac)m(kslashes)25 +b(that)h(are)f(follo)m(w)m(ed)h(b)m(y)e(one)h(of)g(these)g(c)m +(haracters)h(are)f(remo)m(v)m(ed.)40 b(Bac)m(kslashes)26 +b(preceding)150 3912 y(c)m(haracters)35 b(without)e(a)h(sp)s(ecial)f +(meaning)h(are)f(left)h(unmo)s(di\014ed.)47 b(A)34 b(double)f(quote)g +(ma)m(y)h(b)s(e)f(quoted)150 4022 y(within)h(double)h(quotes)g(b)m(y)g +(preceding)g(it)g(with)g(a)g(bac)m(kslash.)55 b(If)35 +b(enabled,)h(history)f(expansion)g(will)150 4131 y(b)s(e)f(p)s +(erformed)g(unless)g(an)h(`)p Ft(!)p Fu(')g(app)s(earing)f(in)h(double) +f(quotes)i(is)f(escap)s(ed)g(using)f(a)h(bac)m(kslash.)55 +b(The)150 4241 y(bac)m(kslash)31 b(preceding)f(the)h(`)p +Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 4371 y(The)41 +b(sp)s(ecial)h(parameters)f(`)p Ft(*)p Fu(')h(and)f(`)p +Ft(@)p Fu(')h(ha)m(v)m(e)g(sp)s(ecial)g(meaning)g(when)f(in)g(double)g +(quotes)h(\(see)150 4481 y(Section)31 b(3.5.3)h([Shell)f(P)m(arameter)h +(Expansion],)e(page)h(25\).)150 4672 y Fk(3.1.2.4)63 +b(ANSI-C)40 b(Quoting)150 4819 y Fu(W)-8 b(ords)43 b(of)f(the)h(form)f +Ft($')p Fj(string)p Ft(')e Fu(are)j(treated)g(sp)s(ecially)-8 +b(.)79 b(The)42 b(w)m(ord)g(expands)f(to)j Fr(string)p +Fu(,)h(with)150 4928 y(bac)m(kslash-escap)s(ed)f(c)m(haracters)h +(replaced)f(as)g(sp)s(eci\014ed)f(b)m(y)g(the)g(ANSI)g(C)g(standard.)79 +b(Bac)m(kslash)150 5038 y(escap)s(e)31 b(sequences,)g(if)f(presen)m(t,) +h(are)g(deco)s(ded)f(as)g(follo)m(ws:)150 5189 y Ft(\\a)384 +b Fu(alert)31 b(\(b)s(ell\))150 5340 y Ft(\\b)384 b Fu(bac)m(kspace)p +eop end +%%Page: 7 13 +TeXDict begin 7 12 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(7)150 299 +y Ft(\\e)150 408 y(\\E)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)h +(\(not)f(ANSI)f(C\))150 566 y Ft(\\f)384 b Fu(form)30 +b(feed)150 723 y Ft(\\n)384 b Fu(newline)150 880 y Ft(\\r)g +Fu(carriage)32 b(return)150 1037 y Ft(\\t)384 b Fu(horizon)m(tal)32 +b(tab)150 1194 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150 +1351 y Ft(\\\\)384 b Fu(bac)m(kslash)150 1508 y Ft(\\')g +Fu(single)31 b(quote)150 1665 y Ft(\\")384 b Fu(double)30 +b(quote)150 1823 y Ft(\\?)384 b Fu(question)31 b(mark)150 +1980 y Ft(\\)p Fj(nnn)288 b Fu(the)36 b(eigh)m(t-bit)h(c)m(haracter)g +(whose)f(v)-5 b(alue)36 b(is)f(the)h(o)s(ctal)h(v)-5 +b(alue)36 b Fr(nnn)e Fu(\(one)i(to)h(three)f(o)s(ctal)630 +2089 y(digits\))150 2246 y Ft(\\x)p Fj(HH)288 b Fu(the)36 +b(eigh)m(t-bit)i(c)m(haracter)f(whose)f(v)-5 b(alue)36 +b(is)g(the)g(hexadecimal)h(v)-5 b(alue)36 b Fr(HH)46 +b Fu(\(one)37 b(or)f(t)m(w)m(o)630 2356 y(hex)30 b(digits\))150 +2513 y Ft(\\u)p Fj(HHHH)192 b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g +(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g +(hexadecimal)g(v)-5 b(alue)630 2623 y Fr(HHHH)41 b Fu(\(one)31 +b(to)g(four)f(hex)g(digits\))150 2780 y Ft(\\U)p Fj(HHHHHHHH)630 +2889 y Fu(the)j(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f +(whose)e(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 +b(alue)630 2999 y Fr(HHHHHHHH)42 b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g +(digits\))150 3156 y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p +Fr(x)38 b Fu(c)m(haracter)150 3313 y(The)30 b(expanded)f(result)i(is)f +(single-quoted,)i(as)f(if)f(the)g(dollar)h(sign)g(had)e(not)i(b)s(een)f +(presen)m(t.)150 3510 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 +b(T)-10 b(ranslation)150 3657 y Fu(A)28 b(double-quoted)g(string)f +(preceded)h(b)m(y)f(a)h(dollar)h(sign)e(\(`)p Ft($)p +Fu('\))i(will)f(cause)g(the)g(string)g(to)g(b)s(e)f(translated)150 +3767 y(according)37 b(to)g(the)f(curren)m(t)g(lo)s(cale.)59 +b(The)36 b Fr(gettext)k Fu(infrastructure)35 b(p)s(erforms)g(the)h +(message)h(catalog)150 3876 y(lo)s(okup)21 b(and)g(translation,)k +(using)c(the)h Ft(LC_MESSAGES)d Fu(and)i Ft(TEXTDOMAIN)e +Fu(shell)i(v)-5 b(ariables,)25 b(as)d(explained)150 3986 +y(b)s(elo)m(w.)57 b(See)36 b(the)g(gettext)i(do)s(cumen)m(tation)e(for) +g(additional)g(details.)58 b(If)35 b(the)h(curren)m(t)f(lo)s(cale)j(is) +e Ft(C)f Fu(or)150 4096 y Ft(POSIX)p Fu(,)g(or)g(if)g(there)g(are)h(no) +f(translations)h(a)m(v)-5 b(ailable,)38 b(the)e(dollar)f(sign)g(is)g +(ignored.)55 b(If)35 b(the)g(string)g(is)150 4205 y(translated)c(and)f +(replaced,)h(the)f(replacemen)m(t)i(is)f(double-quoted.)275 +4339 y(Some)20 b(systems)h(use)f(the)h(message)h(catalog)h(selected)f +(b)m(y)f(the)g Ft(LC_MESSAGES)c Fu(shell)k(v)-5 b(ariable.)39 +b(Others)150 4448 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog) +i(from)d(the)g(v)-5 b(alue)37 b(of)g(the)h Ft(TEXTDOMAIN)c +Fu(shell)j(v)-5 b(ariable,)150 4558 y(p)s(ossibly)31 +b(adding)g(a)g(su\016x)g(of)h(`)p Ft(.mo)p Fu('.)43 b(If)31 +b(y)m(ou)h(use)f(the)h Ft(TEXTDOMAIN)c Fu(v)-5 b(ariable,)33 +b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150 4667 y(the)22 +b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23 b(to)g(the)f(lo)s(cation)i +(of)e(the)h(message)g(catalog)i(\014les.)38 b(Still)23 +b(others)f(use)g(b)s(oth)150 4777 y(v)-5 b(ariables)31 +b(in)f(this)g(fashion:)41 b Ft(TEXTDOMAINDIR)p Fu(/)p +Ft(LC_MESSAGES)p Fu(/LC)p 2528 4777 28 4 v 34 w(MESSA)m(GES/)p +Ft(TEXTDOMAIN)p Fu(.mo.)150 4974 y Fk(3.1.3)63 b(Commen)m(ts)150 +5121 y Fu(In)21 b(a)i(non-in)m(teractiv)m(e)h(shell,)g(or)e(an)g(in)m +(teractiv)m(e)j(shell)d(in)g(whic)m(h)g(the)g Ft(interactive_comments) +16 b Fu(option)150 5230 y(to)40 b(the)f Ft(shopt)e Fu(builtin)h(is)h +(enabled)g(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)k(page)e +(66\),)i(a)d(w)m(ord)150 5340 y(b)s(eginning)26 b(with)g(`)p +Ft(#)p Fu(')g(causes)h(that)f(w)m(ord)g(and)g(all)h(remaining)g(c)m +(haracters)g(on)f(that)h(line)g(to)g(b)s(e)f(ignored.)p +eop end +%%Page: 8 14 +TeXDict begin 8 13 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(8)150 299 +y(An)43 b(in)m(teractiv)m(e)j(shell)e(without)f(the)g +Ft(interactive_comments)38 b Fu(option)44 b(enabled)f(do)s(es)g(not)g +(allo)m(w)150 408 y(commen)m(ts.)56 b(The)34 b Ft(interactive_comments) +c Fu(option)35 b(is)g(on)g(b)m(y)g(default)g(in)g(in)m(teractiv)m(e)j +(shells.)55 b(See)150 518 y(Section)30 b(6.3)f([In)m(teractiv)m(e)j +(Shells],)d(page)h(89,)g(for)e(a)i(description)e(of)h(what)g(mak)m(es)h +(a)f(shell)g(in)m(teractiv)m(e.)150 757 y Fs(3.2)68 b(Shell)45 +b(Commands)150 916 y Fu(A)d(simple)g(shell)g(command)f(suc)m(h)h(as)g +Ft(echo)29 b(a)h(b)g(c)41 b Fu(consists)i(of)f(the)f(command)h(itself)h +(follo)m(w)m(ed)g(b)m(y)150 1026 y(argumen)m(ts,)31 b(separated)g(b)m +(y)f(spaces.)275 1159 y(More)h(complex)h(shell)f(commands)g(are)g(comp) +s(osed)g(of)g(simple)g(commands)g(arranged)g(together)h(in)150 +1269 y(a)f(v)-5 b(ariet)m(y)32 b(of)f(w)m(a)m(ys:)41 +b(in)31 b(a)g(pip)s(eline)f(in)g(whic)m(h)g(the)h(output)f(of)h(one)f +(command)h(b)s(ecomes)f(the)h(input)f(of)150 1378 y(a)h(second,)f(in)h +(a)f(lo)s(op)h(or)f(conditional)i(construct,)f(or)f(in)g(some)h(other)g +(grouping.)150 1575 y Fk(3.2.1)63 b(Reserv)m(ed)40 b(W)-10 +b(ords)150 1722 y Fu(Reserv)m(ed)33 b(w)m(ords)g(are)g(w)m(ords)g(that) +g(ha)m(v)m(e)h(sp)s(ecial)g(meaning)f(to)h(the)f(shell.)49 +b(They)32 b(are)h(used)g(to)g(b)s(egin)150 1832 y(and)d(end)f(the)i +(shell's)g(comp)s(ound)e(commands.)275 1965 y(The)k(follo)m(wing)i(w)m +(ords)e(are)h(recognized)i(as)e(reserv)m(ed)f(when)g(unquoted)g(and)g +(the)h(\014rst)f(w)m(ord)h(of)g(a)150 2075 y(command)c(\(see)h(b)s(elo) +m(w)g(for)f(exceptions\):)150 2208 y Ft(if)364 b(then)168 +b(elif)g(else)g(fi)336 b(time)150 2318 y(for)316 b(in)264 +b(until)120 b(while)g(do)336 b(done)150 2427 y(case)268 +b(esac)168 b(coproc)72 b(select)g(function)150 2537 y({)412 +b(})312 b([[)264 b(]])g(!)150 2670 y(in)33 b Fu(is)h(recognized)h(as)f +(a)g(reserv)m(ed)f(w)m(ord)h(if)f(it)h(is)g(the)g(third)f(w)m(ord)g(of) +h(a)g Ft(case)e Fu(or)i Ft(select)e Fu(command.)150 2780 +y Ft(in)e Fu(and)g Ft(do)f Fu(are)i(recognized)h(as)e(reserv)m(ed)h(w)m +(ords)f(if)g(they)h(are)f(the)h(third)f(w)m(ord)g(in)g(a)g +Ft(for)g Fu(command.)150 2977 y Fk(3.2.2)63 b(Simple)41 +b(Commands)150 3124 y Fu(A)29 b(simple)f(command)g(is)h(the)g(kind)e +(of)i(command)f(encoun)m(tered)h(most)g(often.)40 b(It's)29 +b(just)f(a)h(sequence)g(of)150 3233 y(w)m(ords)22 b(separated)i(b)m(y)e +Ft(blank)p Fu(s,)i(terminated)f(b)m(y)g(one)g(of)g(the)g(shell's)g(con) +m(trol)h(op)s(erators)f(\(see)h(Chapter)f(2)150 3343 +y([De\014nitions],)37 b(page)e(3\).)54 b(The)35 b(\014rst)e(w)m(ord)i +(generally)g(sp)s(eci\014es)g(a)g(command)f(to)h(b)s(e)f(executed,)j +(with)150 3452 y(the)31 b(rest)f(of)h(the)f(w)m(ords)g(b)s(eing)g(that) +h(command's)f(argumen)m(ts.)275 3586 y(The)h(return)h(status)g(\(see)i +(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(41\))g(of)g(a)g(simple)f +(command)g(is)h(its)150 3695 y(exit)38 b(status)f(as)g(pro)m(vided)f(b) +m(y)h(the)g Fm(posix)f Fu(1003.1)j Ft(waitpid)c Fu(function,)j(or)f +(128)p Ft(+)p Fr(n)g Fu(if)g(the)g(command)150 3805 y(w)m(as)31 +b(terminated)g(b)m(y)f(signal)h Fr(n)p Fu(.)150 4002 +y Fk(3.2.3)63 b(Pip)s(elines)150 4149 y Fu(A)21 b Ft(pipeline)d +Fu(is)j(a)g(sequence)g(of)g(one)g(or)g(more)g(commands)f(separated)h(b) +m(y)g(one)g(of)g(the)g(con)m(trol)h(op)s(erators)150 +4259 y(`)p Ft(|)p Fu(')31 b(or)f(`)p Ft(|&)p Fu('.)275 +4392 y(The)f(format)i(for)f(a)h(pip)s(eline)f(is)390 +4525 y Ft([time)46 b([-p]])h([!])g Fj(command1)e Ft([)j(|)f(or)g(|&)g +Fj(command2)f Ft(])h(...)150 4659 y Fu(The)25 b(output)f(of)i(eac)m(h)g +(command)f(in)f(the)i(pip)s(eline)e(is)i(connected)g(via)f(a)h(pip)s(e) +e(to)i(the)f(input)f(of)h(the)h(next)150 4768 y(command.)40 +b(That)29 b(is,)h(eac)m(h)h(command)e(reads)g(the)h(previous)f +(command's)g(output.)40 b(This)29 b(connection)150 4878 +y(is)h(p)s(erformed)f(b)s(efore)h(an)m(y)h(redirections)g(sp)s +(eci\014ed)f(b)m(y)g(the)g(command.)275 5011 y(If)k(`)p +Ft(|&)p Fu(')h(is)f(used,)i Fr(command1)7 b Fu('s)35 +b(standard)f(error,)i(in)e(addition)h(to)h(its)f(standard)f(output,)i +(is)e(con-)150 5121 y(nected)h(to)g Fr(command2)7 b Fu('s)35 +b(standard)f(input)f(through)h(the)g(pip)s(e;)i(it)f(is)g(shorthand)e +(for)h Ft(2>&1)29 b(|)p Fu(.)53 b(This)150 5230 y(implicit)41 +b(redirection)f(of)g(the)g(standard)f(error)g(to)h(the)g(standard)f +(output)g(is)h(p)s(erformed)e(after)j(an)m(y)150 5340 +y(redirections)31 b(sp)s(eci\014ed)f(b)m(y)g(the)g(command.)p +eop end +%%Page: 9 15 +TeXDict begin 9 14 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(9)275 299 +y(The)36 b(reserv)m(ed)g(w)m(ord)g Ft(time)g Fu(causes)h(timing)g +(statistics)h(to)f(b)s(e)f(prin)m(ted)g(for)g(the)h(pip)s(eline)f(once) +h(it)150 408 y(\014nishes.)51 b(The)34 b(statistics)i(curren)m(tly)e +(consist)h(of)f(elapsed)h(\(w)m(all-clo)s(c)m(k\))i(time)e(and)f(user)f +(and)h(system)150 518 y(time)e(consumed)e(b)m(y)h(the)g(command's)g +(execution.)44 b(The)31 b Ft(-p)f Fu(option)i(c)m(hanges)g(the)f +(output)g(format)g(to)150 628 y(that)j(sp)s(eci\014ed)e(b)m(y)h +Fm(posix)p Fu(.)49 b(When)33 b(the)g(shell)g(is)h(in)e +Fm(posix)h Fu(mo)s(de)g(\(see)h(Section)g(6.11)g([Bash)g(POSIX)150 +737 y(Mo)s(de],)j(page)e(101\),)j(it)e(do)s(es)e(not)i(recognize)g +Ft(time)e Fu(as)h(a)h(reserv)m(ed)f(w)m(ord)f(if)h(the)g(next)g(tok)m +(en)h(b)s(egins)150 847 y(with)d(a)g(`)p Ft(-)p Fu('.)49 +b(The)33 b Ft(TIMEFORMAT)d Fu(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(set) +g(to)h(a)g(format)f(string)g(that)h(sp)s(eci\014es)f(ho)m(w)g(the)150 +956 y(timing)38 b(information)g(should)e(b)s(e)h(displa)m(y)m(ed.)62 +b(See)38 b(Section)g(5.2)g([Bash)g(V)-8 b(ariables],)41 +b(page)d(73,)i(for)e(a)150 1066 y(description)27 b(of)g(the)h(a)m(v)-5 +b(ailable)29 b(formats.)40 b(The)26 b(use)h(of)g Ft(time)f +Fu(as)i(a)f(reserv)m(ed)g(w)m(ord)g(p)s(ermits)f(the)h(timing)150 +1176 y(of)38 b(shell)g(builtins,)i(shell)e(functions,)i(and)d(pip)s +(elines.)63 b(An)38 b(external)h Ft(time)e Fu(command)h(cannot)g(time) +150 1285 y(these)31 b(easily)-8 b(.)275 1418 y(When)26 +b(the)h(shell)g(is)g(in)g Fm(posix)f Fu(mo)s(de)g(\(see)i(Section)f +(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(101\),)h Ft(time)150 +1527 y Fu(ma)m(y)d(b)s(e)f(follo)m(w)m(ed)j(b)m(y)d(a)h(newline.)39 +b(In)25 b(this)h(case,)i(the)d(shell)h(displa)m(ys)g(the)g(total)h +(user)e(and)g(system)h(time)150 1637 y(consumed)33 b(b)m(y)h(the)h +(shell)f(and)f(its)i(c)m(hildren.)51 b(The)34 b Ft(TIMEFORMAT)d +Fu(v)-5 b(ariable)35 b(ma)m(y)g(b)s(e)e(used)g(to)i(sp)s(ecify)150 +1746 y(the)c(format)f(of)h(the)f(time)h(information.)275 +1879 y(If)24 b(the)h(pip)s(eline)g(is)g(not)g(executed)h(async)m +(hronously)f(\(see)h(Section)g(3.2.4)h([Lists],)g(page)e(9\),)i(the)f +(shell)150 1988 y(w)m(aits)31 b(for)f(all)i(commands)e(in)g(the)g(pip)s +(eline)g(to)h(complete.)275 2121 y(Eac)m(h)e(command)g(in)g(a)g(pip)s +(eline)g(is)g(executed)h(in)e(its)i(o)m(wn)f(subshell,)f(whic)m(h)h(is) +g(a)g(separate)h(pro)s(cess)150 2230 y(\(see)g(Section)g(3.7.3)h +([Command)e(Execution)h(En)m(vironmen)m(t],)g(page)g(40\).)41 +b(If)29 b(the)g Ft(lastpipe)e Fu(option)j(is)150 2340 +y(enabled)35 b(using)g(the)g Ft(shopt)f Fu(builtin)g(\(see)i(Section)g +(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f(66\),)i(the)d(last)150 +2450 y(elemen)m(t)d(of)e(a)h(pip)s(eline)f(ma)m(y)h(b)s(e)f(run)f(b)m +(y)h(the)h(shell)f(pro)s(cess.)275 2582 y(The)24 b(exit)i(status)f(of)h +(a)f(pip)s(eline)g(is)g(the)g(exit)h(status)f(of)h(the)f(last)h +(command)f(in)f(the)i(pip)s(eline,)g(unless)150 2692 +y(the)31 b Ft(pipefail)d Fu(option)j(is)g(enabled)f(\(see)i(Section)f +(4.3.1)i([The)d(Set)h(Builtin],)g(page)h(62\).)42 b(If)30 +b Ft(pipefail)150 2801 y Fu(is)f(enabled,)g(the)f(pip)s(eline's)g +(return)g(status)h(is)f(the)h(v)-5 b(alue)29 b(of)f(the)h(last)g +(\(righ)m(tmost\))i(command)d(to)h(exit)150 2911 y(with)34 +b(a)h(non-zero)g(status,)i(or)d(zero)i(if)e(all)i(commands)e(exit)h +(successfully)-8 b(.)54 b(If)34 b(the)h(reserv)m(ed)g(w)m(ord)f(`)p +Ft(!)p Fu(')150 3020 y(precedes)e(the)f(pip)s(eline,)h(the)f(exit)i +(status)f(is)f(the)h(logical)i(negation)f(of)e(the)h(exit)g(status)g +(as)g(describ)s(ed)150 3130 y(ab)s(o)m(v)m(e.)63 b(The)38 +b(shell)f(w)m(aits)i(for)e(all)i(commands)e(in)g(the)h(pip)s(eline)f +(to)h(terminate)h(b)s(efore)e(returning)g(a)150 3240 +y(v)-5 b(alue.)150 3435 y Fk(3.2.4)63 b(Lists)41 b(of)h(Commands)150 +3582 y Fu(A)37 b Ft(list)e Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more) +h(pip)s(elines)f(separated)h(b)m(y)g(one)g(of)f(the)h(op)s(erators)g(`) +p Ft(;)p Fu(',)i(`)p Ft(&)p Fu(',)150 3691 y(`)p Ft(&&)p +Fu(',)31 b(or)f(`)p Ft(||)p Fu(',)g(and)g(optionally)i(terminated)f(b)m +(y)f(one)h(of)f(`)p Ft(;)p Fu(',)h(`)p Ft(&)p Fu(',)g(or)f(a)h +Ft(newline)p Fu(.)275 3824 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p +Ft(&&)p Fu(')d(and)g(`)p Ft(||)p Fu(')h(ha)m(v)m(e)h(equal)f +(precedence,)i(follo)m(w)m(ed)f(b)m(y)f(`)p Ft(;)p Fu(')g(and)f(`)p +Ft(&)p Fu(',)i(whic)m(h)150 3933 y(ha)m(v)m(e)32 b(equal)e(precedence.) +275 4066 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h +(app)s(ear)f(in)h(a)g Ft(list)e Fu(to)j(delimit)f(commands,)g(equiv-) +150 4175 y(alen)m(t)i(to)f(a)g(semicolon.)275 4308 y(If)c(a)h(command)f +(is)h(terminated)g(b)m(y)g(the)g(con)m(trol)h(op)s(erator)f(`)p +Ft(&)p Fu(',)h(the)e(shell)h(executes)h(the)f(command)150 +4418 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28 +b(is)h(kno)m(wn)f(as)h(executing)h(the)f(command)g(in)f(the)h +Fr(bac)m(kground)p Fu(,)150 4527 y(and)42 b(these)i(are)f(referred)g +(to)g(as)h Fr(async)m(hronous)i Fu(commands.)78 b(The)43 +b(shell)g(do)s(es)g(not)g(w)m(ait)h(for)f(the)150 4637 +y(command)34 b(to)h(\014nish,)f(and)f(the)h(return)f(status)i(is)f(0)g +(\(true\).)53 b(When)34 b(job)g(con)m(trol)h(is)f(not)h(activ)m(e)h +(\(see)150 4746 y(Chapter)27 b(7)h([Job)f(Con)m(trol],)i(page)g(107\),) +h(the)d(standard)g(input)f(for)i(async)m(hronous)f(commands,)h(in)f +(the)150 4856 y(absence)k(of)f(an)m(y)h(explicit)h(redirections,)f(is)f +(redirected)h(from)f Ft(/dev/null)p Fu(.)275 4988 y(Commands)19 +b(separated)j(b)m(y)f(a)g(`)p Ft(;)p Fu(')g(are)h(executed)g(sequen)m +(tially;)k(the)21 b(shell)g(w)m(aits)h(for)f(eac)m(h)h(command)150 +5098 y(to)31 b(terminate)h(in)e(turn.)39 b(The)30 b(return)f(status)i +(is)f(the)h(exit)g(status)g(of)g(the)f(last)h(command)f(executed.)275 +5230 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one) +g(or)f(more)h(pip)s(elines)e(separated)i(b)m(y)g(the)f(con)m(trol)i(op) +s(er-)150 5340 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p +Ft(||)p Fu(',)h(resp)s(ectiv)m(ely)-8 b(.)42 b Fm(and)30 +b Fu(and)f Fm(or)h Fu(lists)h(are)g(executed)g(with)f(left)h(asso)s +(ciativit)m(y)-8 b(.)p eop end +%%Page: 10 16 +TeXDict begin 10 15 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(10)275 299 +y(An)30 b Fm(and)f Fu(list)i(has)f(the)h(form)390 433 +y Fj(command1)46 b Ft(&&)h Fj(command2)150 567 y Fr(command2)38 +b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h Fr(command1)38 +b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero)g(\(success\).)275 +701 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390 835 +y Fj(command1)46 b Ft(||)h Fj(command2)150 969 y Fr(command2)38 +b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h Fr(command1)38 +b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275 1103 +y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h Fm(or)f +Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f +(executed)150 1213 y(in)d(the)h(list.)150 1412 y Fk(3.2.5)63 +b(Comp)s(ound)42 b(Commands)150 1558 y Fu(Comp)s(ound)29 +b(commands)h(are)i(the)f(shell)g(programming)f(language)j(constructs.) +42 b(Eac)m(h)32 b(construct)f(b)s(e-)150 1668 y(gins)25 +b(with)f(a)i(reserv)m(ed)f(w)m(ord)f(or)h(con)m(trol)h(op)s(erator)f +(and)g(is)g(terminated)g(b)m(y)g(a)g(corresp)s(onding)f(reserv)m(ed)150 +1778 y(w)m(ord)i(or)g(op)s(erator.)40 b(An)m(y)26 b(redirections)g +(\(see)i(Section)f(3.6)g([Redirections],)h(page)f(35\))h(asso)s(ciated) +f(with)150 1887 y(a)k(comp)s(ound)f(command)h(apply)f(to)i(all)g +(commands)f(within)f(that)i(comp)s(ound)d(command)i(unless)f(ex-)150 +1997 y(plicitly)i(o)m(v)m(erridden.)275 2131 y(In)20 +b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp)s(ound)f +(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150 +2240 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g +(more)g(newlines,)g(and)f(ma)m(y)i(b)s(e)e(follo)m(w)m(ed)i(b)m(y)f(a)g +(newline)150 2350 y(in)f(place)h(of)g(a)g(semicolon.)275 +2484 y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e +(commands,)j(and)44 b(mec)m(hanisms)i(to)g(group)150 +2594 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150 +2792 y Fk(3.2.5.1)63 b(Lo)s(oping)43 b(Constructs)150 +2939 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g +(constructs.)275 3073 y(Note)k(that)f(wherev)m(er)g(a)g(`)p +Ft(;)p Fu(')g(app)s(ears)f(in)h(the)g(description)g(of)g(a)g(command's) +g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 3183 y(replaced)c(with)f(one)h +(or)f(more)g(newlines.)150 3341 y Ft(until)240 b Fu(The)30 +b(syn)m(tax)h(of)f(the)h Ft(until)e Fu(command)h(is:)870 +3476 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj +(consequent-commands)p Ft(;)c(done)630 3610 y Fu(Execute)f +Fr(consequen)m(t-commands)k Fu(as)41 b(long)h(as)f Fr(test-commands)46 +b Fu(has)41 b(an)g(exit)h(status)630 3719 y(whic)m(h)c(is)h(not)g +(zero.)67 b(The)38 b(return)g(status)h(is)f(the)h(exit)h(status)f(of)g +(the)g(last)g(command)630 3829 y(executed)31 b(in)f Fr(consequen)m +(t-commands)p Fu(,)i(or)e(zero)h(if)g(none)f(w)m(as)h(executed.)150 +3987 y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h +Ft(while)e Fu(command)h(is:)870 4122 y Ft(while)46 b +Fj(test-commands)p Ft(;)e(do)j Fj(consequent-commands)p +Ft(;)c(done)630 4256 y Fu(Execute)f Fr(consequen)m(t-commands)k +Fu(as)41 b(long)h(as)f Fr(test-commands)46 b Fu(has)41 +b(an)g(exit)h(status)630 4365 y(of)34 b(zero.)53 b(The)34 +b(return)f(status)h(is)h(the)f(exit)h(status)g(of)f(the)g(last)h +(command)f(executed)h(in)630 4475 y Fr(consequen)m(t-commands)p +Fu(,)c(or)g(zero)g(if)f(none)g(w)m(as)h(executed.)150 +4633 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f(the)h +Ft(for)e Fu(command)i(is:)870 4768 y Ft(for)47 b Fj(name)g +Ft([)g([in)g([)p Fj(words)f Ft(...)o(])i(])f(;)h(])f(do)g +Fj(commands)p Ft(;)e(done)630 4902 y Fu(Expand)30 b Fr(w)m(ords)k +Fu(\(see)d(Section)h(3.5)g([Shell)f(Expansions],)g(page)g(22\),)i(and)d +(execute)i Fr(com-)630 5011 y(mands)43 b Fu(once)e(for)g(eac)m(h)g(mem) +m(b)s(er)f(in)g(the)h(resultan)m(t)g(list,)j(with)c Fr(name)46 +b Fu(b)s(ound)39 b(to)i(the)630 5121 y(curren)m(t)34 +b(mem)m(b)s(er.)53 b(If)35 b(`)p Ft(in)30 b Fj(words)p +Fu(')j(is)i(not)g(presen)m(t,)h(the)f Ft(for)e Fu(command)i(executes)h +(the)630 5230 y Fr(commands)j Fu(once)e(for)f(eac)m(h)h(p)s(ositional)g +(parameter)f(that)h(is)f(set,)i(as)e(if)g(`)p Ft(in)30 +b("$@")p Fu(')36 b(had)630 5340 y(b)s(een)30 b(sp)s(eci\014ed)f(\(see)j +(Section)f(3.4.2)h([Sp)s(ecial)f(P)m(arameters],)h(page)f(21\).)p +eop end +%%Page: 11 17 +TeXDict begin 11 16 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)630 299 +y(The)27 b(return)f(status)h(is)g(the)h(exit)g(status)f(of)g(the)h +(last)g(command)e(that)i(executes.)41 b(If)27 b(there)630 +408 y(are)38 b(no)f(items)g(in)g(the)h(expansion)f(of)g +Fr(w)m(ords)p Fu(,)i(no)e(commands)g(are)g(executed,)j(and)d(the)630 +518 y(return)29 b(status)i(is)f(zero.)630 644 y(An)g(alternate)i(form)e +(of)h(the)f Ft(for)g Fu(command)g(is)g(also)h(supp)s(orted:)870 +771 y Ft(for)47 b(\(\()g Fj(expr1)f Ft(;)i Fj(expr2)e +Ft(;)i Fj(expr3)e Ft(\)\))h(;)h(do)f Fj(commands)e Ft(;)j(done)630 +897 y Fu(First,)38 b(the)f(arithmetic)h(expression)e +Fr(expr1)43 b Fu(is)36 b(ev)-5 b(aluated)38 b(according)f(to)g(the)g +(rules)f(de-)630 1007 y(scrib)s(ed)41 b(b)s(elo)m(w)h(\(see)h(Section)g +(6.5)g([Shell)g(Arithmetic],)j(page)d(93\).)77 b(The)42 +b(arithmetic)630 1116 y(expression)33 b Fr(expr2)41 b +Fu(is)34 b(then)f(ev)-5 b(aluated)35 b(rep)s(eatedly)f(un)m(til)g(it)g +(ev)-5 b(aluates)35 b(to)g(zero.)51 b(Eac)m(h)630 1226 +y(time)23 b Fr(expr2)30 b Fu(ev)-5 b(aluates)25 b(to)e(a)g(non-zero)h +(v)-5 b(alue,)25 b Fr(commands)h Fu(are)d(executed)g(and)g(the)g +(arith-)630 1335 y(metic)29 b(expression)f Fr(expr3)36 +b Fu(is)28 b(ev)-5 b(aluated.)41 b(If)28 b(an)m(y)h(expression)f(is)g +(omitted,)i(it)f(b)s(eha)m(v)m(es)g(as)630 1445 y(if)i(it)h(ev)-5 +b(aluates)32 b(to)g(1.)44 b(The)30 b(return)g(v)-5 b(alue)32 +b(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f(in)630 +1555 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m +(y)h(of)g(the)f(expressions)g(is)h(in)m(v)-5 b(alid.)275 +1698 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h +(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(44\))g(ma)m(y) +150 1807 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)150 +1990 y Fk(3.2.5.2)63 b(Conditional)42 b(Constructs)150 +2154 y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h +Ft(if)f Fu(command)g(is:)870 2280 y Ft(if)47 b Fj(test-commands)p +Ft(;)d(then)965 2390 y Fj(consequent-commands)p Ft(;)870 +2500 y([elif)i Fj(more-test-commands)p Ft(;)d(then)965 +2609 y Fj(more-consequents)p Ft(;])870 2719 y([else)j +Fj(alternate-consequents)p Ft(;])870 2828 y(fi)630 2955 +y Fu(The)53 b Fr(test-commands)58 b Fu(list)c(is)g(executed,)60 +b(and)53 b(if)g(its)h(return)e(status)i(is)f(zero,)61 +b(the)630 3064 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f +(executed.)70 b(If)40 b Fr(test-commands)k Fu(returns)39 +b(a)h(non-zero)630 3174 y(status,)45 b(eac)m(h)e Ft(elif)d +Fu(list)i(is)g(executed)h(in)e(turn,)j(and)d(if)g(its)h(exit)h(status)f +(is)f(zero,)46 b(the)630 3284 y(corresp)s(onding)37 b +Fr(more-consequen)m(ts)42 b Fu(is)c(executed)g(and)f(the)h(command)g +(completes.)63 b(If)630 3393 y(`)p Ft(else)29 b Fj +(alternate-consequents)p Fu(')c(is)30 b(presen)m(t,)h(and)f(the)g +(\014nal)g(command)g(in)g(the)g(\014nal)630 3503 y Ft(if)44 +b Fu(or)g Ft(elif)f Fu(clause)i(has)f(a)h(non-zero)g(exit)g(status,)j +(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 3612 +y(executed.)k(The)34 b(return)g(status)h(is)f(the)h(exit)h(status)f(of) +g(the)g(last)g(command)g(executed,)630 3722 y(or)30 b(zero)i(if)e(no)g +(condition)h(tested)g(true.)150 3865 y Ft(case)288 b +Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(case)e Fu(command)h(is:)870 +3991 y Ft(case)47 b Fj(word)f Ft(in)1061 4101 y([)h([\(])g +Fj(pattern)f Ft([|)h Fj(pattern)p Ft(]...)m(\))h Fj(command-list)c +Ft(;;]...)870 4211 y(esac)630 4337 y(case)20 b Fu(will)i(selectiv)m +(ely)j(execute)e(the)e Fr(command-list)k Fu(corresp)s(onding)20 +b(to)i(the)g(\014rst)f Fr(pattern)630 4446 y Fu(that)h(matc)m(hes)h +Fr(w)m(ord)p Fu(.)38 b(The)21 b(matc)m(h)h(is)g(p)s(erformed)e +(according)j(to)f(the)g(rules)g(describ)s(ed)e(b)s(e-)630 +4556 y(lo)m(w)25 b(in)e(Section)i(3.5.8.1)h([P)m(attern)f(Matc)m +(hing],)i(page)e(33.)39 b(If)23 b(the)h Ft(nocasematch)d +Fu(shell)j(op-)630 4666 y(tion)j(\(see)g(the)f(description)g(of)g +Ft(shopt)f Fu(in)g(Section)i(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f +(66\))630 4775 y(is)40 b(enabled,)i(the)e(matc)m(h)h(is)e(p)s(erformed) +g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630 +4885 y(c)m(haracters.)48 b(The)32 b(`)p Ft(|)p Fu(')g(is)h(used)e(to)i +(separate)h(m)m(ultiple)f(patterns,)g(and)f(the)g(`)p +Ft(\))p Fu(')h(op)s(erator)630 4994 y(terminates)f(a)f(pattern)g(list.) +43 b(A)31 b(list)g(of)g(patterns)g(and)f(an)h(asso)s(ciated)h +(command-list)g(is)630 5104 y(kno)m(wn)e(as)g(a)h Fr(clause)p +Fu(.)630 5230 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h +(with)e(`)p Ft(;;)p Fu(',)45 b(`)p Ft(;&)p Fu(',)f(or)d(`)p +Ft(;;&)p Fu('.)73 b(The)41 b Fr(w)m(ord)j Fu(under-)630 +5340 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g +(command)f(substitution,)h(arithmetic)p eop end +%%Page: 12 18 +TeXDict begin 12 17 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(12)630 299 +y(expansion,)35 b(and)f(quote)g(remo)m(v)-5 b(al)36 b(\(see)f(Section)g +(3.5.3)h([Shell)e(P)m(arameter)h(Expansion],)630 408 +y(page)22 b(25\))g(b)s(efore)f(matc)m(hing)h(is)g(attempted.)38 +b(Eac)m(h)22 b Fr(pattern)g Fu(undergo)s(es)e(tilde)i(expansion,)630 +518 y(parameter)31 b(expansion,)f(command)g(substitution,)h(and)f +(arithmetic)h(expansion.)630 651 y(There)f(ma)m(y)g(b)s(e)f(an)h +(arbitrary)g(n)m(um)m(b)s(er)f(of)h Ft(case)f Fu(clauses,)i(eac)m(h)g +(terminated)g(b)m(y)e(a)i(`)p Ft(;;)p Fu(',)630 761 y(`)p +Ft(;&)p Fu(',)c(or)e(`)p Ft(;;&)p Fu('.)39 b(The)25 b(\014rst)g +(pattern)h(that)g(matc)m(hes)h(determines)e(the)h(command-list)g(that) +630 870 y(is)35 b(executed.)55 b(It's)35 b(a)g(common)g(idiom)g(to)g +(use)g(`)p Ft(*)p Fu(')g(as)g(the)g(\014nal)f(pattern)h(to)h(de\014ne)e +(the)630 980 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m +(a)m(ys)h(matc)m(h.)630 1113 y(Here)j(is)g(an)g(example)h(using)e +Ft(case)g Fu(in)g(a)h(script)g(that)h(could)f(b)s(e)f(used)g(to)h +(describ)s(e)g(one)630 1223 y(in)m(teresting)d(feature)f(of)f(an)g +(animal:)870 1356 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f +(animal:)f(")870 1465 y(read)h(ANIMAL)870 1575 y(echo)g(-n)g("The)f +($ANIMAL)g(has)h(")870 1684 y(case)g($ANIMAL)e(in)965 +1794 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)965 +1904 y(man)g(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965 +2013 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)870 +2123 y(esac)870 2232 y(echo)h(")g(legs.")630 2389 y Fu(If)40 +b(the)i(`)p Ft(;;)p Fu(')e(op)s(erator)i(is)f(used,)i(no)e(subsequen)m +(t)f(matc)m(hes)i(are)f(attempted)h(after)g(the)630 2498 +y(\014rst)c(pattern)h(matc)m(h.)67 b(Using)39 b(`)p Ft(;&)p +Fu(')g(in)f(place)i(of)f(`)p Ft(;;)p Fu(')g(causes)g(execution)h(to)g +(con)m(tin)m(ue)630 2608 y(with)34 b(the)g Fr(command-list)j +Fu(asso)s(ciated)f(with)e(the)h(next)f(clause,)i(if)f(an)m(y)-8 +b(.)53 b(Using)34 b(`)p Ft(;;&)p Fu(')g(in)630 2718 y(place)c(of)f(`)p +Ft(;;)p Fu(')g(causes)h(the)f(shell)h(to)g(test)g(the)f(patterns)g(in)g +(the)g(next)h(clause,)g(if)f(an)m(y)-8 b(,)31 b(and)630 +2827 y(execute)26 b(an)m(y)f(asso)s(ciated)h Fr(command-list)h +Fu(on)e(a)f(successful)h(matc)m(h,)i(con)m(tin)m(uing)e(the)g(case)630 +2937 y(statemen)m(t)32 b(execution)g(as)e(if)h(the)f(pattern)h(list)g +(had)f(not)g(matc)m(hed.)630 3070 y(The)c(return)f(status)h(is)g(zero)h +(if)f(no)g Fr(pattern)g Fu(is)g(matc)m(hed.)40 b(Otherwise,)27 +b(the)g(return)e(status)630 3180 y(is)30 b(the)h(exit)g(status)g(of)f +(the)h Fr(command-list)i Fu(executed.)150 3336 y Ft(select)630 +3469 y Fu(The)g Ft(select)f Fu(construct)i(allo)m(ws)h(the)f(easy)g +(generation)h(of)e(men)m(us.)50 b(It)34 b(has)f(almost)i(the)630 +3579 y(same)c(syn)m(tax)g(as)f(the)h Ft(for)e Fu(command:)870 +3712 y Ft(select)46 b Fj(name)h Ft([in)g Fj(words)f Ft(...)o(];)h(do)h +Fj(commands)p Ft(;)d(done)630 3845 y Fu(The)25 b(list)h(of)f(w)m(ords)g +(follo)m(wing)i Ft(in)d Fu(is)h(expanded,)h(generating)h(a)e(list)h(of) +g(items.)39 b(The)25 b(set)h(of)630 3954 y(expanded)i(w)m(ords)h(is)g +(prin)m(ted)f(on)h(the)g(standard)f(error)h(output)f(stream,)i(eac)m(h) +g(preceded)630 4064 y(b)m(y)21 b(a)g(n)m(um)m(b)s(er.)37 +b(If)20 b(the)i(`)p Ft(in)30 b Fj(words)p Fu(')20 b(is)h(omitted,)j +(the)d(p)s(ositional)h(parameters)g(are)f(prin)m(ted,)630 +4174 y(as)28 b(if)f(`)p Ft(in)j("$@")p Fu(')d(had)f(b)s(een)h(sp)s +(eci\014ed.)39 b(The)27 b Ft(PS3)g Fu(prompt)f(is)i(then)f(displa)m(y)m +(ed)h(and)f(a)h(line)630 4283 y(is)h(read)f(from)h(the)f(standard)g +(input.)39 b(If)29 b(the)g(line)g(consists)g(of)g(a)g(n)m(um)m(b)s(er)e +(corresp)s(onding)630 4393 y(to)36 b(one)f(of)h(the)f(displa)m(y)m(ed)h +(w)m(ords,)g(then)f(the)g(v)-5 b(alue)36 b(of)f Fr(name)40 +b Fu(is)35 b(set)h(to)g(that)g(w)m(ord.)54 b(If)630 4502 +y(the)37 b(line)h(is)f(empt)m(y)-8 b(,)39 b(the)e(w)m(ords)g(and)f +(prompt)g(are)i(displa)m(y)m(ed)f(again.)62 b(If)37 b +Ft(EOF)f Fu(is)h(read,)630 4612 y(the)c Ft(select)e Fu(command)i +(completes.)50 b(An)m(y)33 b(other)g(v)-5 b(alue)33 b(read)g(causes)g +Fr(name)38 b Fu(to)c(b)s(e)e(set)630 4722 y(to)f(n)m(ull.)41 +b(The)30 b(line)g(read)h(is)f(sa)m(v)m(ed)h(in)g(the)f(v)-5 +b(ariable)31 b Ft(REPLY)p Fu(.)630 4855 y(The)42 b Fr(commands)j +Fu(are)d(executed)h(after)g(eac)m(h)g(selection)h(un)m(til)e(a)h +Ft(break)d Fu(command)i(is)630 4964 y(executed,)32 b(at)f(whic)m(h)f(p) +s(oin)m(t)g(the)h Ft(select)d Fu(command)i(completes.)630 +5097 y(Here)39 b(is)g(an)g(example)h(that)f(allo)m(ws)i(the)e(user)f +(to)i(pic)m(k)f(a)g(\014lename)h(from)e(the)h(curren)m(t)630 +5207 y(directory)-8 b(,)32 b(and)d(displa)m(ys)i(the)f(name)h(and)f +(index)f(of)i(the)g(\014le)f(selected.)870 5340 y Ft(select)46 +b(fname)g(in)i(*;)p eop end +%%Page: 13 19 +TeXDict begin 13 18 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(13)870 299 +y Ft(do)870 408 y(echo)47 b(you)g(picked)f($fname)g(\\\($REPLY\\\))870 +518 y(break;)870 628 y(done)150 788 y(\(\(...)o(\)\))870 +923 y(\(\()h Fj(expression)e Ft(\)\))630 1058 y Fu(The)33 +b(arithmetic)i Fr(expression)f Fu(is)f(ev)-5 b(aluated)35 +b(according)g(to)f(the)g(rules)f(describ)s(ed)g(b)s(elo)m(w)630 +1167 y(\(see)j(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)f(93\).)55 +b(If)34 b(the)h(v)-5 b(alue)35 b(of)g(the)g(expression)g(is)630 +1277 y(non-zero,)27 b(the)f(return)e(status)i(is)g(0;)h(otherwise)f +(the)g(return)e(status)i(is)g(1.)39 b(This)25 b(is)g(exactly)630 +1386 y(equiv)-5 b(alen)m(t)32 b(to)870 1521 y Ft(let)47 +b(")p Fj(expression)p Ft(")630 1656 y Fu(See)25 b(Section)h(4.2)h +([Bash)e(Builtins],)i(page)f(51,)i(for)c(a)i(full)f(description)g(of)g +(the)h Ft(let)e Fu(builtin.)150 1816 y Ft([[...)o(]])870 +1951 y([[)47 b Fj(expression)e Ft(]])630 2086 y Fu(Return)25 +b(a)h(status)f(of)h(0)g(or)g(1)g(dep)s(ending)e(on)h(the)h(ev)-5 +b(aluation)27 b(of)e(the)h(conditional)h(expres-)630 +2196 y(sion)j Fr(expression)p Fu(.)41 b(Expressions)29 +b(are)i(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s(elo)m +(w)h(in)630 2305 y(Section)36 b(6.4)h([Bash)f(Conditional)g +(Expressions],)h(page)f(91.)57 b(W)-8 b(ord)36 b(splitting)h(and)e +(\014le-)630 2415 y(name)d(expansion)g(are)h(not)g(p)s(erformed)d(on)j +(the)f(w)m(ords)g(b)s(et)m(w)m(een)h(the)f Ft([[)g Fu(and)f +Ft(]])p Fu(;)i(tilde)630 2524 y(expansion,)e(parameter)g(and)f(v)-5 +b(ariable)31 b(expansion,)g(arithmetic)g(expansion,)g(command)630 +2634 y(substitution,)40 b(pro)s(cess)f(substitution,)h(and)e(quote)h +(remo)m(v)-5 b(al)40 b(are)f(p)s(erformed.)63 b(Condi-)630 +2744 y(tional)32 b(op)s(erators)e(suc)m(h)g(as)h(`)p +Ft(-f)p Fu(')f(m)m(ust)g(b)s(e)g(unquoted)g(to)h(b)s(e)e(recognized)j +(as)f(primaries.)630 2878 y(When)k(used)f(with)h Ft([[)p +Fu(,)h(the)f(`)p Ft(<)p Fu(')g(and)g(`)p Ft(>)p Fu(')g(op)s(erators)g +(sort)g(lexicographically)j(using)d(the)630 2988 y(curren)m(t)30 +b(lo)s(cale.)630 3123 y(When)22 b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p +Ft(!=)p Fu(')g(op)s(erators)h(are)g(used,)g(the)g(string)f(to)i(the)e +(righ)m(t)h(of)g(the)g(op)s(erator)630 3232 y(is)31 b(considered)g(a)h +(pattern)f(and)g(matc)m(hed)h(according)g(to)g(the)g(rules)f(describ)s +(ed)f(b)s(elo)m(w)h(in)630 3342 y(Section)d(3.5.8.1)h([P)m(attern)f +(Matc)m(hing],)h(page)f(33,)g(as)f(if)g(the)g Ft(extglob)d +Fu(shell)j(option)g(w)m(ere)630 3452 y(enabled.)46 b(The)31 +b(`)p Ft(=)p Fu(')h(op)s(erator)h(is)f(iden)m(tical)h(to)g(`)p +Ft(==)p Fu('.)46 b(If)31 b(the)h Ft(nocasematch)d Fu(shell)j(option)630 +3561 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d +Fu(in)i(Section)h(4.3.2)h([The)e(Shopt)f(Builtin],)45 +b(page)d(66\))630 3671 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s +(erformed)g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630 +3780 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28 +b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(\(`)p Ft(==)p +Fu('\))f(or)g(do)s(es)f(not)h(matc)m(h)630 3890 y(\(`)p +Ft(!=)p Fu('\))j(the)f(pattern,)h(and)e(1)i(otherwise.)41 +b(An)m(y)30 b(part)g(of)h(the)f(pattern)g(ma)m(y)h(b)s(e)f(quoted)g(to) +630 4000 y(force)h(the)g(quoted)f(p)s(ortion)g(to)h(b)s(e)f(matc)m(hed) +h(as)g(a)f(string.)630 4134 y(An)44 b(additional)h(binary)f(op)s +(erator,)49 b(`)p Ft(=~)p Fu(',)f(is)c(a)m(v)-5 b(ailable,)51 +b(with)44 b(the)h(same)f(precedence)630 4244 y(as)c(`)p +Ft(==)p Fu(')g(and)f(`)p Ft(!=)p Fu('.)69 b(When)40 b(it)g(is)g(used,)i +(the)e(string)g(to)g(the)g(righ)m(t)h(of)f(the)g(op)s(erator)g(is)630 +4354 y(considered)23 b(a)g Fm(posix)g Fu(extended)g(regular)g +(expression)g(and)f(matc)m(hed)i(accordingly)g(\(using)630 +4463 y(the)29 b Fm(posix)g Ft(regcomp)e Fu(and)h Ft(regexec)g +Fu(in)m(terfaces)i(usually)f(describ)s(ed)f(in)h Fl(r)-5 +b(e)g(gex)11 b Fu(\(3\)\).)42 b(The)630 4573 y(return)20 +b(v)-5 b(alue)21 b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(the)f +(pattern,)j(and)c(1)h(otherwise.)38 b(If)21 b(the)g(regular)630 +4682 y(expression)k(is)h(syn)m(tactically)i(incorrect,)g(the)e +(conditional)h(expression's)e(return)g(v)-5 b(alue)26 +b(is)630 4792 y(2.)39 b(If)24 b(the)h Ft(nocasematch)c +Fu(shell)k(option)g(\(see)h(the)e(description)h(of)g +Ft(shopt)e Fu(in)h(Section)h(4.3.2)630 4902 y([The)e(Shopt)g(Builtin],) +j(page)e(66\))h(is)e(enabled,)i(the)f(matc)m(h)g(is)g(p)s(erformed)e +(without)h(regard)630 5011 y(to)36 b(the)g(case)h(of)f(alphab)s(etic)g +(c)m(haracters.)58 b(An)m(y)36 b(part)g(of)g(the)g(pattern)f(ma)m(y)i +(b)s(e)e(quoted)630 5121 y(to)f(force)g(the)f(quoted)h(p)s(ortion)f(to) +h(b)s(e)f(matc)m(hed)h(as)f(a)h(string.)50 b(Brac)m(k)m(et)35 +b(expressions)e(in)630 5230 y(regular)g(expressions)g(m)m(ust)g(b)s(e)f +(treated)i(carefully)-8 b(,)35 b(since)e(normal)g(quoting)g(c)m +(haracters)630 5340 y(lose)25 b(their)f(meanings)g(b)s(et)m(w)m(een)h +(brac)m(k)m(ets.)40 b(If)23 b(the)h(pattern)h(is)f(stored)g(in)f(a)i +(shell)f(v)-5 b(ariable,)p eop end +%%Page: 14 20 +TeXDict begin 14 19 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(14)630 299 +y(quoting)41 b(the)f(v)-5 b(ariable)42 b(expansion)e(forces)h(the)f(en) +m(tire)h(pattern)g(to)g(b)s(e)f(matc)m(hed)h(as)g(a)630 +408 y(string.)630 555 y(The)26 b(pattern)g(will)h(matc)m(h)g(if)f(it)h +(matc)m(hes)h(an)m(y)e(part)h(of)f(the)h(string.)39 b(Anc)m(hor)26 +b(the)h(pattern)630 664 y(using)f(the)i(`)p Ft(^)p Fu(')f(and)f(`)p +Ft($)p Fu(')h(regular)h(expression)e(op)s(erators)h(to)h(force)g(it)f +(to)h(matc)m(h)g(the)f(en)m(tire)630 774 y(string.)81 +b(The)44 b(arra)m(y)g(v)-5 b(ariable)45 b Ft(BASH_REMATCH)40 +b Fu(records)k(whic)m(h)f(parts)h(of)g(the)g(string)630 +883 y(matc)m(hed)31 b(the)f(pattern.)41 b(The)30 b(elemen)m(t)i(of)e +Ft(BASH_REMATCH)d Fu(with)j(index)g(0)g(con)m(tains)i(the)630 +993 y(p)s(ortion)20 b(of)h(the)g(string)f(matc)m(hing)i(the)f(en)m +(tire)g(regular)g(expression.)37 b(Substrings)19 b(matc)m(hed)630 +1103 y(b)m(y)30 b(paren)m(thesized)g(sub)s(expressions)e(within)i(the)g +(regular)g(expression)g(are)g(sa)m(v)m(ed)h(in)f(the)630 +1212 y(remaining)j Ft(BASH_REMATCH)c Fu(indices.)49 b(The)32 +b(elemen)m(t)i(of)f Ft(BASH_REMATCH)d Fu(with)i(index)g +Fr(n)630 1322 y Fu(is)e(the)h(p)s(ortion)f(of)g(the)h(string)f(matc)m +(hing)i(the)e Fr(n)p Fu(th)g(paren)m(thesized)h(sub)s(expression.)630 +1468 y(F)-8 b(or)34 b(example,)h(the)e(follo)m(wing)i(will)f(matc)m(h)g +(a)g(line)f(\(stored)h(in)f(the)h(shell)f(v)-5 b(ariable)34 +b Fr(line)5 b Fu(\))630 1577 y(if)42 b(there)h(is)g(a)f(sequence)h(of)g +(c)m(haracters)h(an)m(ywhere)e(in)g(the)h(v)-5 b(alue)43 +b(consisting)g(of)g(an)m(y)630 1687 y(n)m(um)m(b)s(er,)30 +b(including)h(zero,)h(of)f(c)m(haracters)i(in)e(the)g +Ft(space)f Fu(c)m(haracter)i(class,)h(zero)f(or)f(one)630 +1797 y(instances)g(of)f(`)p Ft(a)p Fu(',)h(then)f(a)h(`)p +Ft(b)p Fu(':)870 1943 y Ft([[)47 b($line)g(=~)g([[:space:]]*\(a\)?b)c +(]])630 2089 y Fu(That)24 b(means)g(v)-5 b(alues)24 b(lik)m(e)h(`)p +Ft(aab)p Fu(')e(and)h(`)30 b Ft(aaaaaab)p Fu(')22 b(will)i(matc)m(h,)j +(as)d(will)g(a)g(line)g(con)m(taining)630 2198 y(a)31 +b(`)p Ft(b)p Fu(')f(an)m(ywhere)h(in)f(its)g(v)-5 b(alue.)630 +2345 y(Storing)31 b(the)g(regular)g(expression)f(in)h(a)g(shell)g(v)-5 +b(ariable)31 b(is)g(often)g(a)g(useful)f(w)m(a)m(y)i(to)f(a)m(v)m(oid) +630 2454 y(problems)f(with)g(quoting)h(c)m(haracters)i(that)e(are)g(sp) +s(ecial)g(to)h(the)f(shell.)41 b(It)31 b(is)g(sometimes)630 +2564 y(di\016cult)24 b(to)h(sp)s(ecify)f(a)h(regular)g(expression)f +(literally)i(without)f(using)e(quotes,)k(or)d(to)h(k)m(eep)630 +2673 y(trac)m(k)33 b(of)g(the)f(quoting)g(used)g(b)m(y)g(regular)g +(expressions)g(while)g(pa)m(ying)h(atten)m(tion)h(to)f(the)630 +2783 y(shell's)25 b(quote)g(remo)m(v)-5 b(al.)40 b(Using)25 +b(a)g(shell)g(v)-5 b(ariable)26 b(to)f(store)g(the)g(pattern)g +(decreases)g(these)630 2892 y(problems.)40 b(F)-8 b(or)31 +b(example,)g(the)g(follo)m(wing)h(is)e(equiv)-5 b(alen)m(t)32 +b(to)f(the)g(ab)s(o)m(v)m(e:)870 3039 y Ft(pattern='[[:space:]]*\(a\))o +(?b')870 3148 y([[)47 b($line)g(=~)g($pattern)e(]])630 +3294 y Fu(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(a)e(c)m +(haracter)j(that's)e(sp)s(ecial)g(to)g(the)g(regular)f(expression)g +(gram-)630 3404 y(mar,)g(it)g(has)g(to)g(b)s(e)f(quoted)h(to)g(remo)m +(v)m(e)h(its)f(sp)s(ecial)g(meaning.)40 b(This)27 b(means)g(that)h(in)g +(the)630 3513 y(pattern)e(`)p Ft(xxx.txt)p Fu(',)g(the)h(`)p +Ft(.)p Fu(')f(matc)m(hes)i(an)m(y)e(c)m(haracter)i(in)e(the)h(string)f +(\(its)h(usual)f(regular)630 3623 y(expression)g(meaning\),)i(but)e(in) +g(the)h(pattern)f(`)p Ft("xxx.txt")p Fu(')f(it)i(can)g(only)f(matc)m(h) +i(a)e(literal)630 3733 y(`)p Ft(.)p Fu('.)56 b(Shell)35 +b(programmers)f(should)h(tak)m(e)i(sp)s(ecial)e(care)i(with)e(bac)m +(kslashes,)i(since)f(bac)m(k-)630 3842 y(slashes)27 b(are)g(used)f(b)s +(oth)g(b)m(y)h(the)f(shell)h(and)f(regular)h(expressions)g(to)g(remo)m +(v)m(e)h(the)f(sp)s(ecial)630 3952 y(meaning)h(from)f(the)h(follo)m +(wing)i(c)m(haracter.)41 b(The)27 b(follo)m(wing)j(t)m(w)m(o)f(sets)f +(of)g(commands)g(are)630 4061 y Fl(not)40 b Fu(equiv)-5 +b(alen)m(t:)870 4208 y Ft(pattern='\\.')870 4427 y([[)47 +b(.)h(=~)f($pattern)e(]])870 4536 y([[)i(.)h(=~)f(\\.)g(]])870 +4756 y([[)g(.)h(=~)f("$pattern")e(]])870 4865 y([[)i(.)h(=~)f('\\.')f +(]])630 5011 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h(matc)m(hes)g(will)f +(succeed,)h(but)f(the)g(second)g(t)m(w)m(o)h(will)f(not,)h(b)s(ecause)f +(in)g(the)630 5121 y(second)39 b(t)m(w)m(o)i(the)e(bac)m(kslash)h(will) +f(b)s(e)g(part)g(of)g(the)h(pattern)f(to)h(b)s(e)e(matc)m(hed.)68 +b(In)39 b(the)630 5230 y(\014rst)31 b(t)m(w)m(o)h(examples,)h(the)e +(bac)m(kslash)h(remo)m(v)m(es)h(the)f(sp)s(ecial)g(meaning)f(from)g(`)p +Ft(.)p Fu(',)h(so)g(the)630 5340 y(literal)f(`)p Ft(.)p +Fu(')e(matc)m(hes.)42 b(If)28 b(the)i(string)f(in)g(the)g(\014rst)g +(examples)g(w)m(ere)h(an)m(ything)g(other)f(than)p eop +end +%%Page: 15 21 +TeXDict begin 15 20 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(15)630 299 +y(`)p Ft(.)p Fu(',)29 b(sa)m(y)g(`)p Ft(a)p Fu(',)g(the)f(pattern)g(w)m +(ould)g(not)h(matc)m(h,)h(b)s(ecause)e(the)g(quoted)g(`)p +Ft(.)p Fu(')h(in)e(the)i(pattern)630 408 y(loses)i(its)g(sp)s(ecial)g +(meaning)f(of)h(matc)m(hing)g(an)m(y)g(single)g(c)m(haracter.)630 +542 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h +(follo)m(wing)h(op)s(erators,)g(listed)f(in)f(decreasing)630 +651 y(order)30 b(of)g(precedence:)630 808 y Ft(\()g Fj(expression)e +Ft(\))1110 918 y Fu(Returns)i(the)h(v)-5 b(alue)31 b(of)g +Fr(expression)p Fu(.)42 b(This)30 b(ma)m(y)i(b)s(e)e(used)g(to)i(o)m(v) +m(erride)g(the)1110 1027 y(normal)e(precedence)h(of)g(op)s(erators.)630 +1184 y Ft(!)f Fj(expression)1110 1293 y Fu(T)-8 b(rue)30 +b(if)g Fr(expression)g Fu(is)h(false.)630 1450 y Fj(expression1)c +Ft(&&)j Fj(expression2)1110 1560 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g +Fr(expression1)38 b Fu(and)29 b Fr(expression2)38 b Fu(are)31 +b(true.)630 1716 y Fj(expression1)c Ft(||)j Fj(expression2)1110 +1826 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38 +b Fu(or)30 b Fr(expression2)38 b Fu(is)30 b(true.)630 +1983 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g +(ev)-5 b(aluate)27 b Fr(expression2)32 b Fu(if)25 b(the)g(v)-5 +b(alue)25 b(of)g Fr(expression1)630 2092 y Fu(is)30 b(su\016cien)m(t)h +(to)g(determine)g(the)f(return)g(v)-5 b(alue)31 b(of)f(the)h(en)m(tire) +g(conditional)h(expression.)150 2289 y Fk(3.2.5.3)63 +b(Grouping)43 b(Commands)150 2436 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m +(o)h(w)m(a)m(ys)f(to)h(group)e(a)h(list)g(of)g(commands)f(to)i(b)s(e)e +(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 2545 +y(mands)h(are)i(group)s(ed,)f(redirections)h(ma)m(y)g(b)s(e)e(applied)i +(to)g(the)f(en)m(tire)h(command)g(list.)44 b(F)-8 b(or)32 +b(example,)150 2655 y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g +(the)h(list)g(ma)m(y)g(b)s(e)e(redirected)i(to)g(a)g(single)g(stream.) +150 2812 y Ft(\(\))870 2945 y(\()47 b Fj(list)g Ft(\))630 +3078 y Fu(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i +(paren)m(theses)e(causes)i(a)f(subshell)e(en)m(vironmen)m(t)630 +3188 y(to)k(b)s(e)e(created)j(\(see)f(Section)g(3.7.3)h([Command)d +(Execution)i(En)m(vironmen)m(t],)g(page)f(40\),)630 3297 +y(and)d(eac)m(h)h(of)g(the)f(commands)g(in)g Fr(list)j +Fu(to)f(b)s(e)d(executed)j(in)e(that)h(subshell.)38 b(Since)28 +b(the)f Fr(list)630 3407 y Fu(is)i(executed)g(in)f(a)h(subshell,)g(v)-5 +b(ariable)29 b(assignmen)m(ts)g(do)g(not)g(remain)f(in)g(e\013ect)j +(after)e(the)630 3516 y(subshell)g(completes.)150 3673 +y Ft({})870 3806 y({)47 b Fj(list)p Ft(;)g(})630 3939 +y Fu(Placing)30 b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h(curly)f +(braces)g(causes)h(the)f(list)h(to)g(b)s(e)f(executed)630 +4049 y(in)d(the)h(curren)m(t)g(shell)f(con)m(text.)42 +b(No)27 b(subshell)f(is)g(created.)41 b(The)26 b(semicolon)i(\(or)f +(newline\))630 4159 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275 +4315 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j +(there)e(is)f(a)g(subtle)g(di\013erence)h(b)s(et)m(w)m(een)f(these)150 +4425 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67 +b(The)39 b(braces)g(are)h Ft(reserved)28 b(words)p Fu(,)40 +b(so)g(they)f(m)m(ust)150 4535 y(b)s(e)d(separated)h(from)f(the)g +Fr(list)j Fu(b)m(y)e Ft(blank)p Fu(s)e(or)h(other)h(shell)f(metac)m +(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 4644 +y Ft(operators)p Fu(,)23 b(and)h(are)g(recognized)i(as)e(separate)i +(tok)m(ens)f(b)m(y)f(the)g(shell)h(ev)m(en)g(if)f(they)g(are)h(not)f +(separated)150 4754 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.) +275 4887 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h +(constructs)g(is)f(the)h(exit)g(status)f(of)h Fr(list)p +Fu(.)150 5083 y Fk(3.2.6)63 b(Copro)s(cesses)150 5230 +y Fu(A)37 b Ft(coprocess)c Fu(is)k(a)g(shell)f(command)h(preceded)f(b)m +(y)g(the)h Ft(coproc)d Fu(reserv)m(ed)j(w)m(ord.)59 b(A)36 +b(copro)s(cess)h(is)150 5340 y(executed)g(async)m(hronously)g(in)f(a)h +(subshell,)g(as)g(if)g(the)f(command)h(had)f(b)s(een)f(terminated)i +(with)g(the)p eop end +%%Page: 16 22 +TeXDict begin 16 21 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)150 299 +y(`)p Ft(&)p Fu(')34 b(con)m(trol)h(op)s(erator,)g(with)f(a)g(t)m(w)m +(o-w)m(a)m(y)i(pip)s(e)d(established)h(b)s(et)m(w)m(een)h(the)f +(executing)h(shell)f(and)f(the)150 408 y(copro)s(cess.)275 +550 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390 +691 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g +Ft([)p Fj(redirections)p Ft(])150 833 y Fu(This)39 b(creates)j(a)e +(copro)s(cess)h(named)f Fr(NAME)p Fu(.)70 b(If)40 b Fr(NAME)46 +b Fu(is)40 b(not)g(supplied,)i(the)e(default)h(name)f(is)150 +942 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23 +b(not)g(b)s(e)e(supplied)h(if)g Fr(command)k Fu(is)d(a)g(simple)f +(command)g(\(see)i(Section)f(3.2.2)150 1052 y([Simple)39 +b(Commands],)h(page)g(8\);)k(otherwise,)e(it)d(is)g(in)m(terpreted)h +(as)f(the)g(\014rst)f(w)m(ord)h(of)g(the)g(simple)150 +1162 y(command.)275 1303 y(When)j(the)i(copro)s(cess)f(is)g(executed,) +48 b(the)43 b(shell)g(creates)i(an)e(arra)m(y)g(v)-5 +b(ariable)44 b(\(see)g(Section)g(6.7)150 1413 y([Arra)m(ys],)32 +b(page)g(95\))h(named)e Ft(NAME)f Fu(in)h(the)h(con)m(text)h(of)e(the)h +(executing)g(shell.)44 b(The)31 b(standard)f(output)150 +1522 y(of)39 b Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to) +i(a)f(\014le)f(descriptor)h(in)f(the)h(executing)h(shell,)h(and)d(that) +150 1632 y(\014le)i(descriptor)h(is)f(assigned)h(to)g +Ft(NAME)p Fu([0].)70 b(The)40 b(standard)f(input)h(of)g +Fr(command)k Fu(is)c(connected)h(via)150 1741 y(a)h(pip)s(e)f(to)i(a)f +(\014le)g(descriptor)g(in)f(the)h(executing)i(shell,)h(and)c(that)h +(\014le)g(descriptor)g(is)g(assigned)g(to)150 1851 y +Ft(NAME)p Fu([1].)69 b(This)39 b(pip)s(e)g(is)h(established)g(b)s +(efore)f(an)m(y)h(redirections)h(sp)s(eci\014ed)e(b)m(y)g(the)h +(command)g(\(see)150 1961 y(Section)45 b(3.6)h([Redirections],)k(page) +45 b(35\).)84 b(The)44 b(\014le)h(descriptors)f(can)h(b)s(e)f(utilized) +h(as)g(argumen)m(ts)150 2070 y(to)d(shell)g(commands)f(and)g +(redirections)h(using)f(standard)g(w)m(ord)g(expansions.)74 +b(Other)41 b(than)g(those)150 2180 y(created)27 b(to)g(execute)g +(command)f(and)f(pro)s(cess)h(substitutions,)h(the)f(\014le)g +(descriptors)g(are)g(not)h(a)m(v)-5 b(ailable)150 2289 +y(in)30 b(subshells.)275 2431 y(The)d(pro)s(cess)h(ID)h(of)f(the)h +(shell)f(spa)m(wned)g(to)h(execute)h(the)e(copro)s(cess)h(is)f(a)m(v)-5 +b(ailable)31 b(as)d(the)h(v)-5 b(alue)29 b(of)150 2540 +y(the)k(v)-5 b(ariable)33 b Ft(NAME)p 850 2540 28 4 v +39 w Fu(PID.)g(The)f Ft(wait)f Fu(builtin)h(command)g(ma)m(y)h(b)s(e)f +(used)g(to)h(w)m(ait)h(for)e(the)h(copro)s(cess)150 2650 +y(to)e(terminate.)275 2791 y(Since)20 b(the)g(copro)s(cess)h(is)g +(created)g(as)g(an)f(async)m(hronous)g(command,)i(the)f +Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150 2901 y(returns)29 +b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h(copro)s(cess)g(is)f +(the)h(exit)g(status)g(of)f Fr(command)p Fu(.)150 3107 +y Fk(3.2.7)63 b(GNU)41 b(P)m(arallel)150 3254 y Fu(There)30 +b(are)h(w)m(a)m(ys)g(to)g(run)f(commands)g(in)g(parallel)h(that)h(are)e +(not)h(built)g(in)m(to)g(Bash.)41 b(GNU)31 b(P)m(arallel)i(is)150 +3364 y(a)e(to)s(ol)g(to)g(do)f(just)g(that.)275 3505 +y(GNU)e(P)m(arallel,)i(as)e(its)g(name)f(suggests,)j(can)d(b)s(e)g +(used)g(to)h(build)f(and)g(run)f(commands)h(in)h(parallel.)150 +3615 y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h(command)f(with)g +(di\013eren)m(t)h(argumen)m(ts,)j(whether)39 b(they)i(are)g +(\014lenames,)150 3724 y(usernames,)27 b(hostnames,)h(or)e(lines)h +(read)f(from)h(\014les.)39 b(GNU)27 b(P)m(arallel)i(pro)m(vides)d +(shorthand)g(references)150 3834 y(to)38 b(man)m(y)g(of)g(the)g(most)g +(common)g(op)s(erations)g(\(input)f(lines,)j(v)-5 b(arious)38 +b(p)s(ortions)f(of)h(the)g(input)e(line,)150 3943 y(di\013eren)m(t)f(w) +m(a)m(ys)h(to)f(sp)s(ecify)f(the)h(input)f(source,)i(and)e(so)h(on\).) +54 b(P)m(arallel)36 b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150 +4053 y(commands)30 b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f +(di\013eren)m(t)g(instances)g(of)g(Bash.)275 4194 y(F)-8 +b(or)33 b(a)g(complete)h(description,)g(refer)e(to)i(the)f(GNU)g(P)m +(arallel)i(do)s(cumen)m(tation.)48 b(A)33 b(few)f(examples)150 +4304 y(should)d(pro)m(vide)i(a)g(brief)e(in)m(tro)s(duction)i(to)g(its) +g(use.)275 4445 y(F)-8 b(or)37 b(example,)i(it)e(is)f(easy)h(to)g +(replace)h Ft(xargs)d Fu(to)i(gzip)g(all)g(h)m(tml)g(\014les)f(in)h +(the)f(curren)m(t)g(directory)150 4555 y(and)30 b(its)h(sub)s +(directories:)390 4696 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html') +g(-print)g(|)h(parallel)f(gzip)150 4838 y Fu(If)30 b(y)m(ou)h(need)f +(to)h(protect)h(sp)s(ecial)f(c)m(haracters)g(suc)m(h)g(as)f(newlines)h +(in)f(\014le)g(names,)h(use)f(\014nd's)f Ft(-print0)150 +4948 y Fu(option)i(and)f(parallel's)h Ft(-0)f Fu(option.)275 +5089 y(Y)-8 b(ou)34 b(can)g(use)f(P)m(arallel)j(to)e(mo)m(v)m(e)h +(\014les)f(from)f(the)h(curren)m(t)f(directory)h(when)f(the)h(n)m(um)m +(b)s(er)e(of)i(\014les)150 5199 y(is)c(to)s(o)i(large)f(to)g(pro)s +(cess)f(with)g(one)h Ft(mv)f Fu(in)m(v)m(o)s(cation:)390 +5340 y Ft(printf)46 b('\045s\\n')g(*)i(|)f(parallel)f(mv)h({})g +(destdir)p eop end +%%Page: 17 23 +TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)275 299 +y(As)28 b(y)m(ou)h(can)g(see,)g(the)g Fi({})g Fu(is)g(replaced)g(with)f +(eac)m(h)i(line)f(read)f(from)g(standard)g(input.)39 +b(While)29 b(using)150 408 y Ft(ls)34 b Fu(will)i(w)m(ork)f(in)g(most)g +(instances,)i(it)f(is)f(not)g(su\016cien)m(t)h(to)g(deal)f(with)g(all)h +(\014lenames.)55 b Ft(printf)33 b Fu(is)j(a)150 518 y(shell)31 +b(builtin,)f(and)g(therefore)h(is)g(not)g(sub)5 b(ject)30 +b(to)h(the)g(k)m(ernel's)g(limit)g(on)g(the)g(n)m(um)m(b)s(er)e(of)i +(argumen)m(ts)150 628 y(to)37 b(a)f(program,)h(so)g(y)m(ou)f(can)g(use) +g(`)p Ft(*)p Fu(')g(\(but)f(see)i(b)s(elo)m(w)f(ab)s(out)g(the)g +Ft(dotglob)e Fu(shell)i(option\).)58 b(If)36 b(y)m(ou)150 +737 y(need)30 b(to)h(accommo)s(date)h(sp)s(ecial)f(c)m(haracters)h(in)e +(\014lenames,)h(y)m(ou)g(can)f(use)390 877 y Ft(printf)46 +b('\045s\\0')g(*)i(|)f(parallel)f(-0)h(mv)g({})g(destdir)150 +1017 y Fu(as)31 b(alluded)f(to)h(ab)s(o)m(v)m(e.)275 +1157 y(This)e(will)i(run)e(as)h(man)m(y)h Ft(mv)e Fu(commands)h(as)h +(there)f(are)h(\014les)f(in)h(the)f(curren)m(t)g(directory)-8 +b(.)42 b(Y)-8 b(ou)31 b(can)150 1267 y(em)m(ulate)h(a)f(parallel)g +Ft(xargs)e Fu(b)m(y)h(adding)g(the)h Ft(-X)f Fu(option:)390 +1407 y Ft(printf)46 b('\045s\\0')g(*)i(|)f(parallel)f(-0)h(-X)g(mv)g +({})g(destdir)275 1547 y Fu(\(Y)-8 b(ou)31 b(ma)m(y)g(ha)m(v)m(e)g(to)g +(mo)s(dify)f(the)h(pattern)f(if)g(y)m(ou)h(ha)m(v)m(e)h(the)e +Ft(dotglob)f Fu(option)h(enabled.\))275 1687 y(GNU)h(P)m(arallel)i(can) +e(replace)h(certain)g(common)g(idioms)f(that)g(op)s(erate)h(on)f(lines) +g(read)g(from)f(a)i(\014le)150 1797 y(\(in)e(this)h(case,)g +(\014lenames)g(listed)g(one)f(p)s(er)g(line\):)390 1937 +y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390 2046 y(do-something1)d +("$x")j("config-$x")390 2156 y(do-something2)d(<)k("$x")390 +2265 y(done)f(<)g(file)g(|)g(process-output)150 2405 +y Fu(with)30 b(a)h(more)f(compact)i(syn)m(tax)f(reminiscen)m(t)g(of)g +(lam)m(b)s(das:)390 2545 y Ft(cat)47 b(list)g(|)g(parallel)f +("do-something1)d({})48 b(config-{})d(;)i(do-something2)e(<)i({}")g(|) +915 2655 y(process-output)275 2795 y Fu(P)m(arallel)31 +b(pro)m(vides)e(a)h(built-in)g(mec)m(hanism)g(to)g(remo)m(v)m(e)h +(\014lename)e(extensions,)i(whic)m(h)e(lends)g(itself)150 +2905 y(to)i(batc)m(h)g(\014le)g(transformations)f(or)g(renaming:)390 +3045 y Ft(ls)47 b(*.gz)g(|)g(parallel)f(-j+0)g("zcat)h({})g(|)g(bzip2)g +(>{.}.bz2)e(&&)j(rm)f({}")150 3185 y Fu(This)28 b(will)i(recompress)e +(all)i(\014les)f(in)g(the)g(curren)m(t)g(directory)g(with)g(names)g +(ending)f(in)h(.gz)h(using)f(bzip2,)150 3294 y(running)37 +b(one)i(job)f(p)s(er)f(CPU)h(\(-j)p Ft(+)p Fu(0\))i(in)e(parallel.)66 +b(\(W)-8 b(e)40 b(use)e Ft(ls)g Fu(for)h(brevit)m(y)g(here;)j(using)c +Ft(find)g Fu(as)150 3404 y(ab)s(o)m(v)m(e)e(is)g(more)f(robust)f(in)h +(the)h(face)g(of)f(\014lenames)h(con)m(taining)g(unexp)s(ected)f(c)m +(haracters.\))57 b(P)m(arallel)150 3513 y(can)31 b(tak)m(e)h(argumen)m +(ts)e(from)g(the)h(command)f(line;)h(the)f(ab)s(o)m(v)m(e)i(can)f(also) +g(b)s(e)f(written)g(as)390 3654 y Ft(parallel)46 b("zcat)g({})h(|)h +(bzip2)e(>{.}.bz2)f(&&)j(rm)f({}")g(:::)g(*.gz)275 3794 +y Fu(If)24 b(a)i(command)f(generates)h(output,)g(y)m(ou)g(ma)m(y)f(w)m +(an)m(t)h(to)g(preserv)m(e)g(the)f(input)f(order)h(in)g(the)g(output.) +150 3903 y(F)-8 b(or)31 b(instance,)g(the)g(follo)m(wing)h(command)390 +4043 y Ft({)581 4153 y(echo)47 b(foss.org.my)d(;)581 +4262 y(echo)j(debian.org)e(;)581 4372 y(echo)i(freenetproject.org)42 +b(;)390 4482 y(})47 b(|)h(parallel)d(traceroute)150 4622 +y Fu(will)31 b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m(v)m +(o)s(cation)h(that)e(\014nishes)e(\014rst.)40 b(Adding)30 +b(the)g Ft(-k)g Fu(option)390 4762 y Ft({)581 4871 y(echo)47 +b(foss.org.my)d(;)581 4981 y(echo)j(debian.org)e(;)581 +5090 y(echo)i(freenetproject.org)42 b(;)390 5200 y(})47 +b(|)h(parallel)d(-k)j(traceroute)150 5340 y Fu(will)31 +b(ensure)e(that)i(the)g(output)f(of)g Ft(traceroute)e(foss.org.my)f +Fu(is)k(displa)m(y)m(ed)g(\014rst.)p eop end +%%Page: 18 24 +TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)275 299 +y(Finally)-8 b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i(run)d(a)i +(sequence)h(of)f(shell)g(commands)f(in)h(parallel,)h(similar)f(to)150 +408 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 b(It)35 +b(is)g(not)g(uncommon)f(to)i(tak)m(e)g(a)f(list)h(of)f(\014lenames,)h +(create)g(a)g(series)f(of)g(shell)150 518 y(commands)24 +b(to)h(op)s(erate)h(on)e(them,)i(and)e(feed)g(that)h(list)h(of)e +(commands)g(to)i(a)f(shell.)39 b(P)m(arallel)26 b(can)f(sp)s(eed)150 +628 y(this)30 b(up.)40 b(Assuming)30 b(that)h Ft(file)e +Fu(con)m(tains)i(a)g(list)g(of)g(shell)f(commands,)h(one)f(p)s(er)g +(line,)390 772 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150 +917 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h +(shell)g(\(since)g(no)f(explicit)i(command)e(is)h(supplied)e(as)i(an) +150 1027 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h +(jobs)f(at)h(a)g(time.)150 1283 y Fs(3.3)68 b(Shell)45 +b(F)-11 b(unctions)150 1442 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m +(a)m(y)g(to)h(group)e(commands)g(for)h(later)g(execution)h(using)e(a)h +(single)g(name)g(for)150 1552 y(the)f(group.)55 b(They)35 +b(are)g(executed)h(just)f(lik)m(e)h(a)g Ft(")p Fu(regular)p +Ft(")f Fu(command.)54 b(When)35 b(the)h(name)f(of)g(a)h(shell)150 +1661 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e +(list)h(of)f(commands)g(asso)s(ciated)i(with)d(that)150 +1771 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25 +b(functions)g(are)i(executed)f(in)f(the)h(curren)m(t)g(shell)g(con)m +(text;)j(no)c(new)150 1881 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m +(terpret)g(them.)275 2025 y(F)-8 b(unctions)30 b(are)h(declared)g +(using)f(this)g(syn)m(tax:)390 2170 y Fj(fname)46 b Ft(\(\))i +Fj(compound-command)43 b Ft([)k Fj(redirections)e Ft(])275 +2315 y Fu(or)390 2460 y Ft(function)h Fj(fname)g Ft([\(\)])h +Fj(compound-command)c Ft([)k Fj(redirections)e Ft(])275 +2604 y Fu(This)37 b(de\014nes)h(a)h(shell)f(function)g(named)g +Fr(fname)p Fu(.)65 b(The)38 b(reserv)m(ed)h(w)m(ord)f +Ft(function)e Fu(is)j(optional.)150 2714 y(If)33 b(the)g +Ft(function)e Fu(reserv)m(ed)i(w)m(ord)g(is)g(supplied,)g(the)g(paren)m +(theses)h(are)f(optional.)50 b(The)33 b Fr(b)s(o)s(dy)39 +b Fu(of)34 b(the)150 2824 y(function)41 b(is)h(the)g(comp)s(ound)e +(command)h Fr(comp)s(ound-command)j Fu(\(see)e(Section)h(3.2.5)g([Comp) +s(ound)150 2933 y(Commands],)30 b(page)h(10\).)42 b(That)30 +b(command)g(is)g(usually)h(a)f Fr(list)j Fu(enclosed)e(b)s(et)m(w)m +(een)g Fi({)g Fu(and)f Fi(})p Fu(,)h(but)e(ma)m(y)150 +3043 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v) +m(e,)j(with)d(one)g(exception:)60 b(If)39 b(the)h Ft(function)e +Fu(reserv)m(ed)150 3152 y(w)m(ord)g(is)g(used,)h(but)f(the)g(paren)m +(theses)h(are)f(not)h(supplied,)g(the)f(braces)g(are)h(required.)63 +b Fr(comp)s(ound-)150 3262 y(command)37 b Fu(is)d(executed)g(whenev)m +(er)f Fr(fname)39 b Fu(is)34 b(sp)s(eci\014ed)e(as)i(the)g(name)g(of)f +(a)h(command.)50 b(When)34 b(the)150 3371 y(shell)e(is)f(in)g +Fm(posix)f Fu(mo)s(de)h(\(see)i(Section)f(6.11)h([Bash)e(POSIX)g(Mo)s +(de],)h(page)g(101\),)h Fr(fname)k Fu(m)m(ust)31 b(b)s(e)g(a)150 +3481 y(v)-5 b(alid)37 b(shell)f Fr(name)42 b Fu(and)36 +b(ma)m(y)h(not)f(b)s(e)g(the)g(same)h(as)g(one)f(of)h(the)g(sp)s(ecial) +g(builtins)e(\(see)j(Section)f(4.4)150 3591 y([Sp)s(ecial)e(Builtins],) +h(page)e(72\).)54 b(In)33 b(default)h(mo)s(de,)h(a)g(function)f(name)g +(can)g(b)s(e)g(an)m(y)g(unquoted)g(shell)150 3700 y(w)m(ord)g(that)h +(do)s(es)e(not)i(con)m(tain)g(`)p Ft($)p Fu('.)53 b(An)m(y)34 +b(redirections)h(\(see)g(Section)g(3.6)g([Redirections],)i(page)e(35\)) +150 3810 y(asso)s(ciated)30 b(with)e(the)h(shell)f(function)g(are)h(p)s +(erformed)e(when)h(the)g(function)g(is)h(executed.)41 +b(A)28 b(function)150 3919 y(de\014nition)g(ma)m(y)h(b)s(e)f(deleted)h +(using)f(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(unset)e +Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)150 4029 +y(Shell)g(Builtins],)h(page)h(44\).)275 4174 y(The)26 +b(exit)i(status)g(of)f(a)h(function)f(de\014nition)g(is)g(zero)h +(unless)f(a)g(syn)m(tax)h(error)f(o)s(ccurs)g(or)g(a)h(readonly)150 +4283 y(function)k(with)f(the)i(same)f(name)g(already)h(exists.)46 +b(When)32 b(executed,)h(the)f(exit)h(status)g(of)f(a)g(function)150 +4393 y(is)e(the)h(exit)g(status)g(of)f(the)h(last)g(command)f(executed) +i(in)e(the)g(b)s(o)s(dy)-8 b(.)275 4538 y(Note)22 b(that)f(for)f +(historical)i(reasons,)h(in)e(the)g(most)g(common)g(usage)g(the)g +(curly)f(braces)h(that)g(surround)150 4647 y(the)38 b(b)s(o)s(dy)d(of)j +(the)f(function)g(m)m(ust)g(b)s(e)g(separated)h(from)f(the)g(b)s(o)s +(dy)f(b)m(y)h Ft(blank)p Fu(s)f(or)h(newlines.)62 b(This)150 +4757 y(is)38 b(b)s(ecause)g(the)h(braces)f(are)h(reserv)m(ed)f(w)m +(ords)g(and)f(are)i(only)f(recognized)i(as)e(suc)m(h)g(when)f(they)i +(are)150 4866 y(separated)26 b(from)f(the)h(command)f(list)i(b)m(y)e +(whitespace)h(or)g(another)g(shell)g(metac)m(haracter.)41 +b(Also,)28 b(when)150 4976 y(using)i(the)g(braces,)h(the)g +Fr(list)i Fu(m)m(ust)d(b)s(e)g(terminated)h(b)m(y)f(a)h(semicolon,)h(a) +e(`)p Ft(&)p Fu(',)h(or)g(a)f(newline.)275 5121 y(When)i(a)i(function)f +(is)g(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome) +g(the)h(p)s(ositional)g(pa-)150 5230 y(rameters)42 b(during)e(its)i +(execution)h(\(see)f(Section)g(3.4.1)h([P)m(ositional)h(P)m +(arameters],)i(page)c(21\).)75 b(The)150 5340 y(sp)s(ecial)37 +b(parameter)f(`)p Ft(#)p Fu(')g(that)h(expands)e(to)i(the)f(n)m(um)m(b) +s(er)f(of)h(p)s(ositional)h(parameters)f(is)g(up)s(dated)f(to)p +eop end +%%Page: 19 25 +TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)150 299 +y(re\015ect)36 b(the)f(c)m(hange.)56 b(Sp)s(ecial)35 +b(parameter)h Ft(0)f Fu(is)g(unc)m(hanged.)54 b(The)35 +b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 408 +y Fu(v)-5 b(ariable)31 b(is)g(set)f(to)i(the)e(name)h(of)f(the)h +(function)f(while)g(the)h(function)f(is)g(executing.)275 +540 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en)m +(vironmen)m(t)g(are)f(iden)m(tical)h(b)s(et)m(w)m(een)g(a)f(function)g +(and)150 650 y(its)35 b(caller)i(with)d(these)i(exceptions:)50 +b(the)36 b Ft(DEBUG)d Fu(and)h Ft(RETURN)g Fu(traps)g(are)i(not)f +(inherited)f(unless)h(the)150 759 y(function)26 b(has)g(b)s(een)f(giv)m +(en)i(the)g Ft(trace)d Fu(attribute)j(using)f(the)g Ft(declare)e +Fu(builtin)i(or)g(the)h Ft(-o)i(functrace)150 869 y Fu(option)f(has)e +(b)s(een)h(enabled)g(with)g(the)g Ft(set)f Fu(builtin,)i(\(in)f(whic)m +(h)f(case)j(all)f(functions)e(inherit)h(the)g Ft(DEBUG)150 +978 y Fu(and)33 b Ft(RETURN)f Fu(traps\),)j(and)e(the)h +Ft(ERR)f Fu(trap)h(is)g(not)g(inherited)f(unless)g(the)h +Ft(-o)c(errtrace)h Fu(shell)j(option)150 1088 y(has)h(b)s(een)f +(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f(Shell)g(Builtins],)i +(page)f(44,)i(for)c(the)i(description)f(of)150 1198 y(the)c +Ft(trap)e Fu(builtin.)275 1329 y(The)38 b Ft(FUNCNEST)f +Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric)f(v)-5 +b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150 +1439 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25 +b(in)m(v)m(o)s(cations)i(that)e(exceed)g(the)g(limit)g(cause)g(the)g +(en)m(tire)g(command)150 1548 y(to)31 b(ab)s(ort.)275 +1680 y(If)37 b(the)g(builtin)g(command)h Ft(return)d +Fu(is)j(executed)g(in)g(a)g(function,)h(the)e(function)h(completes)h +(and)150 1789 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f +(after)i(the)f(function)f(call.)40 b(An)m(y)24 b(command)f(asso)s +(ciated)150 1899 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed) +g(b)s(efore)f(execution)i(resumes.)57 b(When)37 b(a)f(function)g +(completes,)150 2008 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s +(ositional)h(parameters)f(and)g(the)g(sp)s(ecial)h(parameter)f(`)p +Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 2118 y(v)-5 +b(alues)26 b(they)f(had)g(prior)f(to)i(the)g(function's)f(execution.)40 +b(If)25 b(a)h(n)m(umeric)f(argumen)m(t)h(is)f(giv)m(en)h(to)g +Ft(return)p Fu(,)150 2228 y(that)j(is)g(the)f(function's)h(return)e +(status;)j(otherwise)f(the)f(function's)h(return)e(status)i(is)f(the)h +(exit)h(status)150 2337 y(of)h(the)f(last)h(command)f(executed)i(b)s +(efore)e(the)g Ft(return)p Fu(.)275 2469 y(V)-8 b(ariables)31 +b(lo)s(cal)g(to)f(the)g(function)f(ma)m(y)i(b)s(e)e(declared)h(with)f +(the)h Ft(local)f Fu(builtin.)40 b(These)29 b(v)-5 b(ariables)150 +2578 y(are)25 b(visible)h(only)f(to)g(the)g(function)g(and)f(the)i +(commands)e(it)i(in)m(v)m(ok)m(es.)40 b(This)24 b(is)h(particularly)h +(imp)s(ortan)m(t)150 2688 y(when)j(a)i(shell)g(function)f(calls)h +(other)g(functions.)275 2819 y(Lo)s(cal)41 b(v)-5 b(ariables)42 +b Ft(")p Fu(shado)m(w)p Ft(")e Fu(v)-5 b(ariables)42 +b(with)f(the)g(same)g(name)g(declared)h(at)f(previous)g(scop)s(es.)150 +2929 y(F)-8 b(or)41 b(instance,)j(a)d(lo)s(cal)h(v)-5 +b(ariable)41 b(declared)g(in)f(a)h(function)f(hides)g(a)h(global)h(v)-5 +b(ariable)41 b(of)g(the)g(same)150 3039 y(name:)59 b(references)40 +b(and)f(assignmen)m(ts)h(refer)f(to)i(the)f(lo)s(cal)g(v)-5 +b(ariable,)43 b(lea)m(ving)f(the)d(global)i(v)-5 b(ariable)150 +3148 y(unmo)s(di\014ed.)39 b(When)30 b(the)g(function)g(returns,)g(the) +g(global)i(v)-5 b(ariable)31 b(is)g(once)g(again)g(visible.)275 +3280 y(The)f(shell)h(uses)g Fr(dynamic)g(scoping)39 b +Fu(to)32 b(con)m(trol)g(a)f(v)-5 b(ariable's)32 b(visibilit)m(y)h +(within)d(functions.)42 b(With)150 3389 y(dynamic)31 +b(scoping,)i(visible)e(v)-5 b(ariables)32 b(and)f(their)h(v)-5 +b(alues)32 b(are)f(a)h(result)g(of)f(the)h(sequence)g(of)f(function)150 +3499 y(calls)37 b(that)g(caused)g(execution)g(to)g(reac)m(h)g(the)g +(curren)m(t)f(function.)58 b(The)36 b(v)-5 b(alue)36 +b(of)h(a)g(v)-5 b(ariable)37 b(that)g(a)150 3608 y(function)24 +b(sees)g(dep)s(ends)f(on)h(its)g(v)-5 b(alue)25 b(within)e(its)i +(caller,)i(if)d(an)m(y)-8 b(,)26 b(whether)e(that)g(caller)i(is)e(the)g +Ft(")p Fu(global)p Ft(")150 3718 y Fu(scop)s(e)41 b(or)g(another)g +(shell)g(function.)73 b(This)40 b(is)h(also)h(the)f(v)-5 +b(alue)41 b(that)h(a)f(lo)s(cal)i(v)-5 b(ariable)41 b(declaration)150 +3828 y Ft(")p Fu(shado)m(ws)p Ft(")p Fu(,)30 b(and)g(the)g(v)-5 +b(alue)31 b(that)g(is)f(restored)h(when)e(the)i(function)f(returns.)275 +3959 y(F)-8 b(or)41 b(example,)j(if)d(a)g(v)-5 b(ariable)41 +b Fr(v)-5 b(ar)48 b Fu(is)40 b(declared)h(as)g(lo)s(cal)h(in)f +(function)f Fr(func1)p Fu(,)j(and)d Fr(func1)48 b Fu(calls)150 +4069 y(another)33 b(function)g Fr(func2)p Fu(,)g(references)g(to)h +Fr(v)-5 b(ar)39 b Fu(made)33 b(from)f(within)h Fr(func2)39 +b Fu(will)34 b(resolv)m(e)g(to)g(the)f(lo)s(cal)150 4178 +y(v)-5 b(ariable)31 b Fr(v)-5 b(ar)37 b Fu(from)30 b +Fr(func1)p Fu(,)g(shado)m(wing)h(an)m(y)f(global)i(v)-5 +b(ariable)31 b(named)f Fr(v)-5 b(ar)p Fu(.)275 4310 y(The)29 +b(follo)m(wing)j(script)f(demonstrates)f(this)h(b)s(eha)m(vior.)40 +b(When)31 b(executed,)g(the)g(script)f(displa)m(ys)390 +4441 y Ft(In)47 b(func2,)f(var)h(=)h(func1)e(local)390 +4573 y(func1\(\))390 4682 y({)581 4792 y(local)g(var='func1)f(local') +581 4902 y(func2)390 5011 y(})390 5230 y(func2\(\))390 +5340 y({)p eop end +%%Page: 20 26 +TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)581 299 +y Ft(echo)47 b("In)f(func2,)h(var)f(=)i($var")390 408 +y(})390 628 y(var=global)390 737 y(func1)275 878 y Fu(The)32 +b Ft(unset)g Fu(builtin)g(also)i(acts)g(using)e(the)i(same)f(dynamic)g +(scop)s(e:)46 b(if)33 b(a)g(v)-5 b(ariable)34 b(is)f(lo)s(cal)h(to)g +(the)150 987 y(curren)m(t)i(scop)s(e,)h Ft(unset)e Fu(will)h(unset)g +(it;)j(otherwise)e(the)f(unset)f(will)h(refer)g(to)h(the)f(v)-5 +b(ariable)37 b(found)d(in)150 1097 y(an)m(y)j(calling)h(scop)s(e)f(as)g +(describ)s(ed)f(ab)s(o)m(v)m(e.)61 b(If)36 b(a)h(v)-5 +b(ariable)38 b(at)f(the)g(curren)m(t)g(lo)s(cal)h(scop)s(e)e(is)h +(unset,)h(it)150 1207 y(will)27 b(remain)h(so)f(un)m(til)g(it)h(is)f +(reset)h(in)f(that)g(scop)s(e)h(or)f(un)m(til)g(the)h(function)e +(returns.)39 b(Once)27 b(the)g(function)150 1316 y(returns,)34 +b(an)m(y)h(instance)g(of)f(the)g(v)-5 b(ariable)35 b(at)g(a)g(previous) +e(scop)s(e)i(will)f(b)s(ecome)h(visible.)52 b(If)34 b(the)g(unset)150 +1426 y(acts)e(on)f(a)h(v)-5 b(ariable)32 b(at)g(a)f(previous)g(scop)s +(e,)h(an)m(y)f(instance)h(of)f(a)h(v)-5 b(ariable)32 +b(with)f(that)h(name)f(that)h(had)150 1535 y(b)s(een)e(shado)m(w)m(ed)g +(will)h(b)s(ecome)g(visible.)275 1676 y(F)-8 b(unction)51 +b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s(e)e(listed)h(with)f(the)h +Ft(-f)f Fu(option)h(to)g(the)g Ft(declare)150 1786 y +Fu(\()p Ft(typeset)p Fu(\))35 b(builtin)g(command)h(\(see)h(Section)g +(4.2)g([Bash)f(Builtins],)i(page)f(51\).)59 b(The)35 +b Ft(-F)h Fu(option)g(to)150 1895 y Ft(declare)e Fu(or)i +Ft(typeset)e Fu(will)i(list)h(the)f(function)g(names)g(only)g(\(and)g +(optionally)h(the)f(source)g(\014le)h(and)150 2005 y(line)c(n)m(um)m(b) +s(er,)g(if)f(the)h Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled\).)49 +b(F)-8 b(unctions)33 b(ma)m(y)h(b)s(e)e(exp)s(orted)g(so)h(that)150 +2114 y(subshells)j(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f +(with)h(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(export)d +Fu(builtin)i(\(see)150 2224 y(Section)31 b(4.1)h([Bourne)e(Shell)g +(Builtins],)h(page)h(44\).)275 2365 y(F)-8 b(unctions)33 +b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48 b(The)32 b Ft(FUNCNEST)f +Fu(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)f(used)g(to)i(limit)g(the)f +(depth)f(of)150 2474 y(the)27 b(function)f(call)i(stac)m(k)h(and)d +(restrict)h(the)g(n)m(um)m(b)s(er)f(of)h(function)f(in)m(v)m(o)s +(cations.)42 b(By)27 b(default,)g(no)g(limit)150 2584 +y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f +(calls.)150 2834 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150 +2993 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that) +f(stores)g(v)-5 b(alues.)39 b(It)23 b(can)h(b)s(e)f(a)g +Ft(name)p Fu(,)h(a)g(n)m(um)m(b)s(er,)f(or)h(one)f(of)h(the)f(sp)s +(ecial)150 3103 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39 +b(A)23 b Fr(v)-5 b(ariable)30 b Fu(is)23 b(a)g(parameter)h(denoted)f(b) +m(y)h(a)f Ft(name)p Fu(.)37 b(A)24 b(v)-5 b(ariable)24 +b(has)f(a)g Fr(v)-5 b(alue)150 3212 y Fu(and)33 b(zero)i(or)f(more)g +Fr(attributes)p Fu(.)52 b(A)m(ttributes)35 b(are)f(assigned)g(using)g +(the)g Ft(declare)e Fu(builtin)h(command)150 3322 y(\(see)e(the)g +(description)f(of)h(the)f Ft(declare)f Fu(builtin)h(in)g(Section)h(4.2) +g([Bash)g(Builtins],)g(page)g(51\).)275 3462 y(A)d(parameter)h(is)g +(set)g(if)f(it)h(has)f(b)s(een)g(assigned)h(a)g(v)-5 +b(alue.)40 b(The)28 b(n)m(ull)h(string)f(is)h(a)g(v)-5 +b(alid)28 b(v)-5 b(alue.)41 b(Once)150 3572 y(a)31 b(v)-5 +b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g(only)h(b)m(y)f +(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 3713 +y(A)g(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(assigned)g(to)i(b)m(y)e(a)h +(statemen)m(t)h(of)e(the)h(form)390 3853 y Fj(name)p +Ft(=[)p Fj(value)p Ft(])150 3994 y Fu(If)j Fr(v)-5 b(alue)40 +b Fu(is)35 b(not)g(giv)m(en,)h(the)f(v)-5 b(ariable)35 +b(is)g(assigned)g(the)f(n)m(ull)h(string.)53 b(All)35 +b Fr(v)-5 b(alue)5 b Fu(s)35 b(undergo)f(tilde)h(ex-)150 +4103 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36 +b(expansion,)f(command)g(substitution,)h(arithmetic)g(expansion,)150 +4213 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).) +72 b(If)40 b(the)h(v)-5 b(ariable)41 b(has)g(its)g Ft(integer)e +Fu(attribute)i(set,)j(then)150 4323 y Fr(v)-5 b(alue)38 +b Fu(is)33 b(ev)-5 b(aluated)34 b(as)f(an)g(arithmetic)h(expression)f +(ev)m(en)h(if)e(the)h Ft($\(\(...)o(\)\))f Fu(expansion)h(is)g(not)g +(used)150 4432 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f +(page)h(31\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s +(erformed,)f(with)150 4542 y(the)35 b(exception)h(of)f +Ft("$@")f Fu(as)h(explained)g(b)s(elo)m(w.)54 b(Filename)36 +b(expansion)f(is)g(not)g(p)s(erformed.)53 b(Assign-)150 +4651 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g(app)s(ear)f(as)g +(argumen)m(ts)h(to)g(the)g Ft(alias)p Fu(,)e Ft(declare)p +Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p Fu(,)150 4761 +y Ft(readonly)p Fu(,)38 b(and)g Ft(local)f Fu(builtin)h(commands)g(\()p +Fr(declaration)j Fu(commands\).)64 b(When)39 b(in)f Fm(posix)f +Fu(mo)s(de)150 4871 y(\(see)29 b(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s +(de],)j(page)f(101\),)h(these)f(builtins)f(ma)m(y)h(app)s(ear)f(in)g(a) +h(command)150 4980 y(after)34 b(one)g(or)f(more)h(instances)g(of)f(the) +h Ft(command)d Fu(builtin)i(and)g(retain)h(these)g(assignmen)m(t)g +(statemen)m(t)150 5090 y(prop)s(erties.)275 5230 y(In)29 +b(the)h(con)m(text)i(where)d(an)h(assignmen)m(t)h(statemen)m(t)h(is)e +(assigning)g(a)h(v)-5 b(alue)30 b(to)h(a)f(shell)g(v)-5 +b(ariable)31 b(or)150 5340 y(arra)m(y)24 b(index)f(\(see)h(Section)g +(6.7)g([Arra)m(ys],)i(page)e(95\),)i(the)e(`)p Ft(+=)p +Fu(')f(op)s(erator)g(can)h(b)s(e)f(used)f(to)i(app)s(end)e(to)i(or)p +eop end +%%Page: 21 27 +TeXDict begin 21 26 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)150 299 +y(add)28 b(to)i(the)f(v)-5 b(ariable's)30 b(previous)e(v)-5 +b(alue.)41 b(This)28 b(includes)g(argumen)m(ts)i(to)f(builtin)g +(commands)f(suc)m(h)h(as)150 408 y Ft(declare)e Fu(that)i(accept)h +(assignmen)m(t)f(statemen)m(ts)h(\()p Fr(declaration)h +Fu(commands\).)40 b(When)28 b(`)p Ft(+=)p Fu(')h(is)f(applied)150 +518 y(to)d(a)f(v)-5 b(ariable)24 b(for)g(whic)m(h)f(the)h +Fr(in)m(teger)32 b Fu(attribute)24 b(has)g(b)s(een)f(set,)j +Fr(v)-5 b(alue)29 b Fu(is)24 b(ev)-5 b(aluated)25 b(as)f(an)g +(arithmetic)150 628 y(expression)30 b(and)f(added)g(to)i(the)f(v)-5 +b(ariable's)30 b(curren)m(t)g(v)-5 b(alue,)31 b(whic)m(h)e(is)h(also)h +(ev)-5 b(aluated.)42 b(When)29 b(`)p Ft(+=)p Fu(')h(is)150 +737 y(applied)25 b(to)h(an)f(arra)m(y)h(v)-5 b(ariable)26 +b(using)f(comp)s(ound)f(assignmen)m(t)i(\(see)g(Section)g(6.7)g([Arra)m +(ys],)h(page)f(95\),)150 847 y(the)33 b(v)-5 b(ariable's)33 +b(v)-5 b(alue)33 b(is)g(not)g(unset)f(\(as)h(it)g(is)g(when)e(using)i +(`)p Ft(=)p Fu('\),)g(and)f(new)g(v)-5 b(alues)33 b(are)g(app)s(ended)e +(to)150 956 y(the)26 b(arra)m(y)h(b)s(eginning)e(at)i(one)f(greater)h +(than)f(the)g(arra)m(y's)h(maxim)m(um)f(index)f(\(for)i(indexed)e(arra) +m(ys\),)j(or)150 1066 y(added)c(as)i(additional)g(k)m(ey-v)-5 +b(alue)26 b(pairs)f(in)g(an)g(asso)s(ciativ)m(e)j(arra)m(y)-8 +b(.)40 b(When)24 b(applied)h(to)h(a)g(string-v)-5 b(alued)150 +1176 y(v)g(ariable,)31 b Fr(v)-5 b(alue)36 b Fu(is)31 +b(expanded)e(and)h(app)s(ended)f(to)i(the)f(v)-5 b(ariable's)32 +b(v)-5 b(alue.)275 1319 y(A)28 b(v)-5 b(ariable)29 b(can)f(b)s(e)f +(assigned)i(the)f Fr(nameref)45 b Fu(attribute)29 b(using)f(the)g +Ft(-n)f Fu(option)i(to)g(the)f Ft(declare)e Fu(or)150 +1428 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h +([Bash)f(Builtins],)h(page)f(51\))h(to)f(create)i(a)e +Fr(nameref)p Fu(,)g(or)g(a)150 1538 y(reference)f(to)g(another)f(v)-5 +b(ariable.)40 b(This)24 b(allo)m(ws)j(v)-5 b(ariables)26 +b(to)g(b)s(e)e(manipulated)h(indirectly)-8 b(.)40 b(Whenev)m(er)150 +1647 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g +(assigned)h(to,)g(unset,)f(or)g(has)f(its)i(attributes)f(mo)s(di\014ed) +f(\(other)150 1757 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f +(attribute)i(itself)7 b(\),)29 b(the)d(op)s(eration)h(is)g(actually)h +(p)s(erformed)d(on)150 1867 y(the)31 b(v)-5 b(ariable)31 +b(sp)s(eci\014ed)f(b)m(y)g(the)h(nameref)f(v)-5 b(ariable's)31 +b(v)-5 b(alue.)42 b(A)30 b(nameref)g(is)h(commonly)g(used)e(within)150 +1976 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5 +b(ariable)31 b(whose)f(name)h(is)f(passed)g(as)g(an)g(argumen)m(t)h(to) +g(the)f(function.)150 2086 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5 +b(ariable)31 b(name)f(is)h(passed)e(to)j(a)e(shell)h(function)f(as)h +(its)f(\014rst)g(argumen)m(t,)h(running)390 2229 y Ft(declare)46 +b(-n)h(ref=$1)150 2372 y Fu(inside)31 b(the)h(function)f(creates)i(a)g +(nameref)e(v)-5 b(ariable)32 b Fr(ref)49 b Fu(whose)32 +b(v)-5 b(alue)32 b(is)g(the)f(v)-5 b(ariable)33 b(name)e(passed)150 +2481 y(as)e(the)h(\014rst)e(argumen)m(t.)41 b(References)30 +b(and)e(assignmen)m(ts)i(to)g Fr(ref)p Fu(,)f(and)g(c)m(hanges)h(to)g +(its)f(attributes,)i(are)150 2591 y(treated)g(as)f(references,)g +(assignmen)m(ts,)h(and)e(attribute)i(mo)s(di\014cations)f(to)h(the)f(v) +-5 b(ariable)30 b(whose)g(name)150 2701 y(w)m(as)h(passed)f(as)g +Ft($1)p Fu(.)275 2844 y(If)h(the)g(con)m(trol)i(v)-5 +b(ariable)32 b(in)g(a)f Ft(for)g Fu(lo)s(op)h(has)f(the)g(nameref)h +(attribute,)g(the)g(list)g(of)g(w)m(ords)f(can)h(b)s(e)150 +2953 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f +(reference)g(will)g(b)s(e)f(established)h(for)g(eac)m(h)h(w)m(ord)e(in) +h(the)g(list,)150 3063 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g +(executed.)41 b(Arra)m(y)30 b(v)-5 b(ariables)30 b(cannot)h(b)s(e)e +(giv)m(en)h(the)g(nameref)g(attribute.)150 3172 y(Ho)m(w)m(ev)m(er,)39 +b(nameref)d(v)-5 b(ariables)36 b(can)g(reference)g(arra)m(y)g(v)-5 +b(ariables)37 b(and)e(subscripted)f(arra)m(y)i(v)-5 b(ariables.)150 +3282 y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h +Ft(-n)e Fu(option)i(to)g(the)g Ft(unset)e Fu(builtin)h(\(see)h(Section) +g(4.1)h([Bourne)150 3392 y(Shell)43 b(Builtins],)j(page)e(44\).)79 +b(Otherwise,)45 b(if)e Ft(unset)e Fu(is)i(executed)h(with)e(the)h(name) +g(of)g(a)g(nameref)150 3501 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m +(t,)h(the)g(v)-5 b(ariable)31 b(referenced)f(b)m(y)g(the)h(nameref)f(v) +-5 b(ariable)31 b(will)g(b)s(e)f(unset.)150 3709 y Fk(3.4.1)63 +b(P)m(ositional)41 b(P)m(arameters)150 3856 y Fu(A)28 +b Fr(p)s(ositional)h(parameter)35 b Fu(is)28 b(a)g(parameter)g(denoted) +g(b)m(y)g(one)g(or)g(more)g(digits,)h(other)g(than)e(the)h(single)150 +3965 y(digit)34 b Ft(0)p Fu(.)48 b(P)m(ositional)36 b(parameters)d(are) +g(assigned)h(from)e(the)i(shell's)f(argumen)m(ts)g(when)f(it)i(is)f(in) +m(v)m(ok)m(ed,)150 4075 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using) +e(the)h Ft(set)g Fu(builtin)f(command.)67 b(P)m(ositional)41 +b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 4185 y(referenced)34 +b(as)h Ft(${N})p Fu(,)g(or)f(as)h Ft($N)e Fu(when)h Ft(N)g +Fu(consists)h(of)f(a)h(single)g(digit.)54 b(P)m(ositional)37 +b(parameters)d(ma)m(y)150 4294 y(not)j(b)s(e)f(assigned)h(to)g(with)f +(assignmen)m(t)i(statemen)m(ts.)61 b(The)36 b Ft(set)g +Fu(and)g Ft(shift)f Fu(builtins)h(are)h(used)f(to)150 +4404 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h +(Builtin)g(Commands],)h(page)f(44\).)68 b(The)39 b(p)s(ositional)150 +4513 y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h +(shell)g(function)g(is)g(executed)g(\(see)h(Section)g(3.3)150 +4623 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(18\).)275 +4766 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f +(than)g(a)g(single)h(digit)g(is)f(expanded,)g(it)h(m)m(ust)150 +4876 y(b)s(e)h(enclosed)h(in)f(braces.)150 5083 y Fk(3.4.2)63 +b(Sp)s(ecial)41 b(P)m(arameters)150 5230 y Fu(The)d(shell)g(treats)h +(sev)m(eral)g(parameters)f(sp)s(ecially)-8 b(.)65 b(These)38 +b(parameters)h(ma)m(y)f(only)g(b)s(e)g(referenced;)150 +5340 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)p +eop end +%%Page: 22 28 +TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)150 299 +y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h +(parameters,)h(starting)f(from)f(one.)59 b(When)36 b(the)g(ex-)630 +408 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s +(ositional)f(parameter)g(expands)f(to)i(a)630 518 y(separate)23 +b(w)m(ord.)38 b(In)21 b(con)m(texts)j(where)e(it)g(is)h(p)s(erformed,)f +(those)h(w)m(ords)e(are)i(sub)5 b(ject)22 b(to)h(fur-)630 +628 y(ther)k(w)m(ord)g(splitting)i(and)e(\014lename)g(expansion.)40 +b(When)27 b(the)h(expansion)f(o)s(ccurs)g(within)630 +737 y(double)37 b(quotes,)k(it)d(expands)f(to)h(a)g(single)h(w)m(ord)e +(with)h(the)f(v)-5 b(alue)39 b(of)f(eac)m(h)g(parameter)630 +847 y(separated)g(b)m(y)g(the)f(\014rst)g(c)m(haracter)i(of)f(the)g +Ft(IFS)f Fu(sp)s(ecial)h(v)-5 b(ariable.)63 b(That)38 +b(is,)h Ft("$*")e Fu(is)630 956 y(equiv)-5 b(alen)m(t)39 +b(to)g Ft("$1)p Fj(c)p Ft($2)p Fj(c)p Ft(...)m(")p Fu(,)h(where)d +Fr(c)44 b Fu(is)38 b(the)g(\014rst)g(c)m(haracter)h(of)f(the)g(v)-5 +b(alue)39 b(of)f(the)630 1066 y Ft(IFS)29 b Fu(v)-5 b(ariable.)41 +b(If)29 b Ft(IFS)g Fu(is)h(unset,)f(the)h(parameters)g(are)g(separated) +g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 1176 +y(n)m(ull,)i(the)f(parameters)h(are)g(joined)f(without)g(in)m(terv)m +(ening)i(separators.)150 1334 y Ft(@)432 b Fu(\($@\))43 +b(Expands)f(to)h(the)g(p)s(ositional)g(parameters,)k(starting)c(from)f +(one.)78 b(In)42 b(con)m(texts)630 1444 y(where)35 b(w)m(ord)h +(splitting)g(is)g(p)s(erformed,)g(this)g(expands)e(eac)m(h)j(p)s +(ositional)g(parameter)f(to)630 1553 y(a)d(separate)h(w)m(ord;)g(if)f +(not)g(within)g(double)f(quotes,)j(these)e(w)m(ords)g(are)g(sub)5 +b(ject)33 b(to)g(w)m(ord)630 1663 y(splitting.)60 b(In)36 +b(con)m(texts)j(where)d(w)m(ord)g(splitting)h(is)g(not)g(p)s(erformed,) +g(this)f(expands)g(to)630 1773 y(a)c(single)h(w)m(ord)e(with)h(eac)m(h) +h(p)s(ositional)g(parameter)f(separated)g(b)m(y)g(a)g(space.)46 +b(When)32 b(the)630 1882 y(expansion)i(o)s(ccurs)h(within)e(double)i +(quotes,)h(and)e(w)m(ord)g(splitting)h(is)g(p)s(erformed,)f(eac)m(h)630 +1992 y(parameter)23 b(expands)f(to)i(a)f(separate)h(w)m(ord.)37 +b(That)23 b(is,)i Ft("$@")c Fu(is)i(equiv)-5 b(alen)m(t)24 +b(to)g Ft("$1")29 b("$2")630 2101 y(...)o Fu(.)39 b(If)26 +b(the)g(double-quoted)g(expansion)f(o)s(ccurs)h(within)f(a)h(w)m(ord,)h +(the)f(expansion)g(of)g(the)630 2211 y(\014rst)31 b(parameter)h(is)g +(joined)f(with)g(the)h(b)s(eginning)f(part)h(of)f(the)h(original)h(w)m +(ord,)f(and)f(the)630 2321 y(expansion)25 b(of)g(the)h(last)g +(parameter)f(is)h(joined)f(with)g(the)g(last)h(part)f(of)g(the)h +(original)g(w)m(ord.)630 2430 y(When)i(there)g(are)g(no)g(p)s +(ositional)g(parameters,)h Ft("$@")e Fu(and)g Ft($@)h +Fu(expand)f(to)h(nothing)g(\(i.e.,)630 2540 y(they)j(are)f(remo)m(v)m +(ed\).)150 2698 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m +(um)m(b)s(er)e(of)h(p)s(ositional)i(parameters)e(in)g(decimal.)150 +2857 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status) +f(of)g(the)g(most)h(recen)m(tly)g(executed)g(foreground)630 +2967 y(pip)s(eline.)150 3125 y Ft(-)432 b Fu(\($-,)24 +b(a)e(h)m(yphen.\))37 b(Expands)20 b(to)i(the)f(curren)m(t)h(option)f +(\015ags)h(as)f(sp)s(eci\014ed)g(up)s(on)f(in)m(v)m(o)s(cation,)630 +3235 y(b)m(y)38 b(the)h Ft(set)f Fu(builtin)g(command,)j(or)d(those)i +(set)f(b)m(y)f(the)h(shell)g(itself)g(\(suc)m(h)g(as)g(the)g +Ft(-i)630 3344 y Fu(option\).)150 3503 y Ft($)432 b Fu(\($$\))31 +b(Expands)d(to)j(the)e(pro)s(cess)h Fm(id)f Fu(of)h(the)g(shell.)41 +b(In)28 b(a)i Ft(\(\))f Fu(subshell,)h(it)g(expands)e(to)j(the)630 +3613 y(pro)s(cess)f Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g +(not)g(the)f(subshell.)150 3771 y Ft(!)432 b Fu(\($!\))51 +b(Expands)32 b(to)i(the)g(pro)s(cess)f Fm(id)h Fu(of)f(the)h(job)f +(most)h(recen)m(tly)h(placed)f(in)m(to)g(the)g(bac)m(k-)630 +3881 y(ground,)26 b(whether)g(executed)g(as)h(an)f(async)m(hronous)f +(command)h(or)g(using)g(the)g Ft(bg)f Fu(builtin)630 +3990 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g +(page)h(108\).)150 4149 y Ft(0)432 b Fu(\($0\))46 b(Expands)d(to)i(the) +g(name)g(of)f(the)h(shell)g(or)f(shell)h(script.)83 b(This)44 +b(is)g(set)h(at)h(shell)630 4259 y(initialization.)d(If)27 +b(Bash)h(is)g(in)m(v)m(ok)m(ed)h(with)e(a)i(\014le)e(of)h(commands)g +(\(see)g(Section)h(3.8)g([Shell)630 4368 y(Scripts],)g(page)g(42\),)h +Ft($0)e Fu(is)h(set)g(to)g(the)f(name)h(of)f(that)h(\014le.)41 +b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 4478 y +Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m(oking)h(Bash],)g +(page)f(86\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630 +4587 y(argumen)m(t)g(after)g(the)g(string)g(to)g(b)s(e)f(executed,)i +(if)f(one)g(is)f(presen)m(t.)42 b(Otherwise,)31 b(it)g(is)f(set)630 +4697 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m(ok)m(e)h(Bash,)f +(as)g(giv)m(en)g(b)m(y)f(argumen)m(t)h(zero.)150 4937 +y Fs(3.5)68 b(Shell)45 b(Expansions)150 5096 y Fu(Expansion)27 +b(is)i(p)s(erformed)d(on)i(the)g(command)g(line)h(after)f(it)h(has)f(b) +s(een)f(split)h(in)m(to)i Ft(token)p Fu(s.)38 b(There)28 +b(are)150 5206 y(sev)m(en)j(kinds)e(of)i(expansion)f(p)s(erformed:)225 +5340 y Fq(\017)60 b Fu(brace)31 b(expansion)p eop end +%%Page: 23 29 +TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)225 299 +y Fq(\017)60 b Fu(tilde)31 b(expansion)225 436 y Fq(\017)60 +b Fu(parameter)31 b(and)f(v)-5 b(ariable)31 b(expansion)225 +574 y Fq(\017)60 b Fu(command)30 b(substitution)225 711 +y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225 849 y +Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 986 y Fq(\017)60 +b Fu(\014lename)31 b(expansion)275 1155 y(The)24 b(order)h(of)h +(expansions)f(is:)39 b(brace)25 b(expansion;)j(tilde)e(expansion,)g +(parameter)g(and)f(v)-5 b(ariable)26 b(ex-)150 1264 y(pansion,)j +(arithmetic)i(expansion,)f(and)f(command)g(substitution)g(\(done)g(in)h +(a)f(left-to-righ)m(t)k(fashion\);)150 1374 y(w)m(ord)d(splitting;)h +(and)f(\014lename)h(expansion.)275 1515 y(On)42 b(systems)h(that)h(can) +g(supp)s(ort)e(it,)47 b(there)d(is)f(an)h(additional)g(expansion)f(a)m +(v)-5 b(ailable:)69 b Fr(pro)s(cess)150 1624 y(substitution)p +Fu(.)50 b(This)33 b(is)h(p)s(erformed)e(at)j(the)f(same)g(time)g(as)g +(tilde,)i(parameter,)f(v)-5 b(ariable,)35 b(and)f(arith-)150 +1734 y(metic)d(expansion)g(and)e(command)i(substitution.)275 +1874 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m +(haracters)h(presen)m(t)e(in)g(the)g(original)i(w)m(ord)e(are)150 +1984 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g +(themselv)m(es)i(\()p Fr(quote)f(remo)m(v)-5 b(al)t Fu(\).)275 +2124 y(Only)31 b(brace)i(expansion,)h(w)m(ord)e(splitting,)i(and)e +(\014lename)h(expansion)f(can)h(increase)g(the)g(n)m(um)m(b)s(er)150 +2234 y(of)24 b(w)m(ords)g(of)g(the)h(expansion;)h(other)e(expansions)g +(expand)g(a)g(single)h(w)m(ord)f(to)h(a)f(single)h(w)m(ord.)38 +b(The)24 b(only)150 2344 y(exceptions)i(to)f(this)g(are)g(the)g +(expansions)g(of)g Ft("$@")f Fu(and)g Ft($*)g Fu(\(see)i(Section)f +(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)150 2453 y(page)31 +b(21\),)h(and)e Ft("${)p Fj(name)p Ft([@]}")d Fu(and)i +Ft(${)p Fj(name)p Ft([*]})f Fu(\(see)j(Section)h(6.7)f([Arra)m(ys],)g +(page)g(95\).)275 2594 y(After)41 b(all)i(expansions,)h +Ft(quote)29 b(removal)40 b Fu(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m +(v)-5 b(al],)47 b(page)42 b(35\))h(is)150 2703 y(p)s(erformed.)150 +2908 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 3055 y +Fu(Brace)32 b(expansion)f(is)f(a)i(mec)m(hanism)f(b)m(y)f(whic)m(h)h +(arbitrary)f(strings)h(ma)m(y)g(b)s(e)f(generated.)43 +b(This)30 b(mec)m(h-)150 3165 y(anism)35 b(is)h(similar)f(to)h +Fr(\014lename)g(expansion)f Fu(\(see)i(Section)f(3.5.8)h([Filename)g +(Expansion],)f(page)g(33\),)150 3275 y(but)26 b(the)h(\014lenames)g +(generated)h(need)f(not)g(exist.)40 b(P)m(atterns)28 +b(to)f(b)s(e)g(brace)g(expanded)f(tak)m(e)i(the)f(form)g(of)150 +3384 y(an)j(optional)h Fr(pream)m(ble)p Fu(,)g(follo)m(w)m(ed)g(b)m(y)f +(either)g(a)h(series)f(of)g(comma-separated)i(strings)d(or)h(a)h +(sequence)150 3494 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i +(braces,)g(follo)m(w)m(ed)h(b)m(y)e(an)g(optional)h Fr(p)s(ostscript)p +Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 3603 y(pre\014xed)28 +b(to)h(eac)m(h)h(string)f(con)m(tained)h(within)e(the)h(braces,)g(and)g +(the)g(p)s(ostscript)f(is)h(then)f(app)s(ended)f(to)150 +3713 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ) +m(t.)275 3853 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59 +b(The)36 b(results)g(of)h(eac)m(h)g(expanded)f(string)g(are)h(not)g +(sorted;)150 3963 y(left)31 b(to)g(righ)m(t)g(order)f(is)g(preserv)m +(ed.)41 b(F)-8 b(or)31 b(example,)390 4104 y Ft(bash$)46 +b(echo)h(a{d,c,b}e)390 4213 y(ade)g(ace)g(abe)275 4354 +y Fu(A)23 b(sequence)g(expression)g(tak)m(es)i(the)e(form)g +Ft({)p Fj(x)p Ft(..)p Fj(y)p Ft([..)p Fj(incr)p Ft(]})p +Fu(,)e(where)i Fr(x)29 b Fu(and)23 b Fr(y)30 b Fu(are)24 +b(either)g(in)m(tegers)150 4463 y(or)42 b(single)h(c)m(haracters,)48 +b(and)41 b Fr(incr)p Fu(,)46 b(an)c(optional)i(incremen)m(t,)i(is)c(an) +h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 4573 +y(supplied,)f(the)f(expression)f(expands)f(to)i(eac)m(h)h(n)m(um)m(b)s +(er)d(b)s(et)m(w)m(een)i Fr(x)47 b Fu(and)41 b Fr(y)p +Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 4682 y(in)m(tegers)33 +b(ma)m(y)e(b)s(e)g(pre\014xed)f(with)h(`)p Ft(0)p Fu(')h(to)g(force)g +(eac)m(h)g(term)g(to)g(ha)m(v)m(e)g(the)g(same)g(width.)42 +b(When)31 b(either)150 4792 y Fr(x)43 b Fu(or)36 b Fr(y)44 +b Fu(b)s(egins)36 b(with)g(a)h(zero,)i(the)e(shell)g(attempts)g(to)g +(force)g(all)h(generated)f(terms)g(to)g(con)m(tain)h(the)150 +4902 y(same)e(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h +(necessary)-8 b(.)57 b(When)35 b(c)m(haracters)i(are)f(supplied,)g(the) +150 5011 y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g +(lexicographically)h(b)s(et)m(w)m(een)e Fr(x)30 b Fu(and)24 +b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 5121 +y(default)32 b(C)g(lo)s(cale.)48 b(Note)34 b(that)f(b)s(oth)e +Fr(x)39 b Fu(and)31 b Fr(y)40 b Fu(m)m(ust)32 b(b)s(e)g(of)g(the)h +(same)f(t)m(yp)s(e.)47 b(When)32 b(the)g(incremen)m(t)150 +5230 y(is)d(supplied,)g(it)h(is)f(used)f(as)i(the)f(di\013erence)h(b)s +(et)m(w)m(een)g(eac)m(h)g(term.)41 b(The)29 b(default)g(incremen)m(t)h +(is)f(1)h(or)f(-1)150 5340 y(as)i(appropriate.)p eop +end +%%Page: 24 30 +TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)275 299 +y(Brace)36 b(expansion)g(is)f(p)s(erformed)f(b)s(efore)h(an)m(y)h +(other)g(expansions,)h(and)e(an)m(y)g(c)m(haracters)i(sp)s(ecial)150 +408 y(to)32 b(other)g(expansions)g(are)g(preserv)m(ed)f(in)h(the)f +(result.)45 b(It)32 b(is)g(strictly)g(textual.)46 b(Bash)32 +b(do)s(es)f(not)h(apply)150 518 y(an)m(y)27 b(syn)m(tactic)i(in)m +(terpretation)g(to)f(the)f(con)m(text)i(of)e(the)g(expansion)g(or)g +(the)h(text)g(b)s(et)m(w)m(een)f(the)h(braces.)275 656 +y(A)h(correctly-formed)i(brace)f(expansion)f(m)m(ust)h(con)m(tain)h +(unquoted)e(op)s(ening)g(and)g(closing)i(braces,)150 +766 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5 +b(alid)33 b(sequence)g(expression.)48 b(An)m(y)33 b(incorrectly)h +(formed)150 875 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275 +1013 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted) +h(with)f(a)g(bac)m(kslash)h(to)g(prev)m(en)m(t)g(its)g(b)s(eing)f +(considered)g(part)g(of)h(a)g(brace)150 1123 y(expression.)51 +b(T)-8 b(o)34 b(a)m(v)m(oid)i(con\015icts)e(with)g(parameter)g +(expansion,)h(the)f(string)g(`)p Ft(${)p Fu(')g(is)g(not)g(considered) +150 1232 y(eligible)e(for)e(brace)h(expansion,)f(and)g(inhibits)g +(brace)h(expansion)f(un)m(til)g(the)h(closing)h(`)p Ft(})p +Fu('.)275 1370 y(This)e(construct)h(is)g(t)m(ypically)i(used)d(as)h +(shorthand)f(when)g(the)h(common)g(pre\014x)f(of)h(the)g(strings)g(to) +150 1480 y(b)s(e)f(generated)h(is)g(longer)g(than)f(in)g(the)g(ab)s(o)m +(v)m(e)i(example:)390 1618 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o +(ew,)o(dist)o(,bug)o(s})275 1756 y Fu(or)390 1894 y Ft(chown)g(root)h +(/usr/{ucb/{ex,edit},lib/)o({ex?)o(.?*,)o(how)o(_ex})o(})150 +2097 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 2243 y +Fu(If)29 b(a)h(w)m(ord)g(b)s(egins)f(with)g(an)h(unquoted)f(tilde)h(c)m +(haracter)h(\(`)p Ft(~)p Fu('\),)g(all)g(of)f(the)g(c)m(haracters)h(up) +d(to)j(the)f(\014rst)150 2353 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m +(haracters,)h(if)e(there)g(is)f(no)h(unquoted)e(slash\))i(are)g +(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)150 2463 y(If)38 +b(none)g(of)g(the)h(c)m(haracters)g(in)f(the)h(tilde-pre\014x)f(are)h +(quoted,)h(the)f(c)m(haracters)h(in)d(the)i(tilde-pre\014x)150 +2572 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s +(ossible)g Fr(login)h(name)p Fu(.)39 b(If)27 b(this)g(login)h(name)f +(is)g(the)g(n)m(ull)g(string,)150 2682 y(the)35 b(tilde)g(is)g +(replaced)g(with)f(the)h(v)-5 b(alue)35 b(of)g(the)g +Ft(HOME)e Fu(shell)i(v)-5 b(ariable.)54 b(If)34 b Ft(HOME)g +Fu(is)h(unset,)g(the)g(home)150 2791 y(directory)e(of)g(the)f(user)g +(executing)i(the)e(shell)h(is)f(substituted)g(instead.)47 +b(Otherwise,)33 b(the)g(tilde-pre\014x)150 2901 y(is)d(replaced)h(with) +f(the)h(home)f(directory)h(asso)s(ciated)h(with)e(the)h(sp)s(eci\014ed) +e(login)j(name.)275 3039 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p +Ft(~+)p Fu(',)g(the)g(v)-5 b(alue)33 b(of)g(the)g(shell)g(v)-5 +b(ariable)34 b Ft(PWD)d Fu(replaces)j(the)f(tilde-pre\014x.)47 +b(If)150 3149 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p +Fu(',)h(the)f(v)-5 b(alue)31 b(of)g(the)f(shell)h(v)-5 +b(ariable)31 b Ft(OLDPWD)p Fu(,)e(if)h(it)h(is)g(set,)g(is)f +(substituted.)275 3287 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the) +e(tilde)g(in)g(the)g(tilde-pre\014x)g(consist)g(of)g(a)h(n)m(um)m(b)s +(er)d Fr(N)p Fu(,)j(optionally)150 3396 y(pre\014xed)22 +b(b)m(y)h(a)h(`)p Ft(+)p Fu(')f(or)h(a)f(`)p Ft(-)p Fu(',)j(the)d +(tilde-pre\014x)g(is)h(replaced)f(with)g(the)h(corresp)s(onding)e +(elemen)m(t)j(from)e(the)150 3506 y(directory)36 b(stac)m(k,)i(as)e(it) +g(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)g(the)f +Ft(dirs)g Fu(builtin)g(in)m(v)m(ok)m(ed)i(with)e(the)g(c)m(haracters) +150 3615 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g +(an)f(argumen)m(t)h(\(see)h(Section)f(6.8)h([The)e(Directory)i(Stac)m +(k],)150 3725 y(page)c(97\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans) +e(the)h(tilde,)h(consists)f(of)g(a)f(n)m(um)m(b)s(er)f(without)i(a)f +(leading)h(`)p Ft(+)p Fu(')g(or)150 3834 y(`)p Ft(-)p +Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 3972 y(If)e(the)i(login) +g(name)g(is)f(in)m(v)-5 b(alid,)31 b(or)g(the)f(tilde)h(expansion)f +(fails,)i(the)e(w)m(ord)g(is)h(left)g(unc)m(hanged.)275 +4110 y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m +(k)m(ed)j(for)d(unquoted)g(tilde-pre\014xes)h(immediately)g(follo)m +(wing)150 4220 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p +Ft(=)p Fu('.)54 b(In)34 b(these)h(cases,)i(tilde)e(expansion)g(is)g +(also)h(p)s(erformed.)52 b(Consequen)m(tly)-8 b(,)37 +b(one)150 4330 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g +(assignmen)m(ts)g(to)h Ft(PATH)p Fu(,)f Ft(MAILPATH)p +Fu(,)e(and)h Ft(CDPATH)p Fu(,)g(and)h(the)g(shell)150 +4439 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 4577 +y(The)29 b(follo)m(wing)j(table)g(sho)m(ws)e(ho)m(w)g(Bash)h(treats)g +(unquoted)e(tilde-pre\014xes:)150 4742 y Ft(~)432 b Fu(The)30 +b(v)-5 b(alue)31 b(of)f Ft($HOME)150 4905 y(~/foo)240 +b($HOME/foo)150 5068 y(~fred/foo)630 5177 y Fu(The)30 +b(sub)s(directory)f Ft(foo)h Fu(of)g(the)h(home)f(directory)h(of)g(the) +f(user)g Ft(fred)150 5340 y(~+/foo)192 b($PWD/foo)p eop +end +%%Page: 25 31 +TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)150 299 +y Ft(~-/foo)192 b(${OLDPWD-'~-'}/foo)150 471 y(~)p Fj(N)384 +b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m +(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 644 y Ft(~+)p +Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m +(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 816 y +Ft(~-)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g +(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p Fj(N)p Fu(')275 +995 y(Bash)40 b(also)h(p)s(erforms)e(tilde)h(expansion)g(on)h(w)m(ords) +e(satisfying)i(the)f(conditions)h(of)f(v)-5 b(ariable)41 +b(as-)150 1105 y(signmen)m(ts)f(\(see)h(Section)g(3.4)g([Shell)f(P)m +(arameters],)k(page)d(20\))g(when)e(they)h(app)s(ear)f(as)i(argumen)m +(ts)150 1215 y(to)c(simple)f(commands.)57 b(Bash)36 b(do)s(es)f(not)h +(do)g(this,)i(except)f(for)e(the)h Fr(declaration)i Fu(commands)d +(listed)150 1324 y(ab)s(o)m(v)m(e,)d(when)d(in)h Fm(posix)g +Fu(mo)s(de.)150 1536 y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f +(Expansion)150 1683 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m +(tro)s(duces)d(parameter)h(expansion,)j(command)d(substitution,)i(or)e +(arithmetic)150 1793 y(expansion.)d(The)22 b(parameter)h(name)f(or)g +(sym)m(b)s(ol)h(to)g(b)s(e)e(expanded)h(ma)m(y)h(b)s(e)f(enclosed)h(in) +f(braces,)i(whic)m(h)150 1903 y(are)31 b(optional)g(but)f(serv)m(e)h +(to)h(protect)f(the)g(v)-5 b(ariable)31 b(to)g(b)s(e)f(expanded)g(from) +g(c)m(haracters)i(immediately)150 2012 y(follo)m(wing)g(it)f(whic)m(h)f +(could)g(b)s(e)g(in)m(terpreted)h(as)f(part)h(of)f(the)h(name.)275 +2160 y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f +(brace)g(is)g(the)g(\014rst)g(`)p Ft(})p Fu(')g(not)g(escap)s(ed)h(b)m +(y)f(a)150 2269 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,) +j(and)c(not)i(within)e(an)h(em)m(b)s(edded)f(arithmetic)j(expansion,) +150 2379 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275 +2526 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p +Fi({)p Fr(parameter)7 b Fi(})p Fu(.)74 b(The)41 b(v)-5 +b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 2636 y(substituted.)43 +b(The)31 b Fr(parameter)39 b Fu(is)31 b(a)h(shell)f(parameter)h(as)g +(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(3.4)h([Shell)150 +2746 y(P)m(arameters],)e(page)f(20\))h(or)e(an)g(arra)m(y)h(reference)f +(\(see)i(Section)f(6.7)g([Arra)m(ys],)g(page)g(95\).)42 +b(The)29 b(braces)150 2855 y(are)j(required)g(when)f +Fr(parameter)39 b Fu(is)32 b(a)h(p)s(ositional)f(parameter)h(with)f +(more)g(than)g(one)g(digit,)i(or)e(when)150 2965 y Fr(parameter)37 +b Fu(is)31 b(follo)m(w)m(ed)h(b)m(y)e(a)h(c)m(haracter)h(that)f(is)f +(not)h(to)g(b)s(e)f(in)m(terpreted)g(as)h(part)f(of)h(its)f(name.)275 +3112 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42 +b Fu(is)35 b(an)g(exclamation)i(p)s(oin)m(t)e(\(!\),)i(and)d +Fr(parameter)42 b Fu(is)34 b(not)i(a)150 3222 y Fr(nameref)p +Fu(,)c(it)f(in)m(tro)s(duces)h(a)f(lev)m(el)i(of)f(indirection.)44 +b(Bash)31 b(uses)g(the)g(v)-5 b(alue)32 b(formed)f(b)m(y)g(expanding)g +(the)150 3332 y(rest)c(of)f Fr(parameter)33 b Fu(as)27 +b(the)g(new)f Fr(parameter)7 b Fu(;)28 b(this)e(is)g(then)g(expanded)g +(and)g(that)h(v)-5 b(alue)27 b(is)f(used)g(in)g(the)150 +3441 y(rest)33 b(of)f(the)h(expansion,)g(rather)g(than)f(the)h +(expansion)f(of)h(the)g(original)g Fr(parameter)p Fu(.)48 +b(This)32 b(is)g(kno)m(wn)150 3551 y(as)42 b Ft(indirect)28 +b(expansion)p Fu(.)71 b(The)41 b(v)-5 b(alue)41 b(is)h(sub)5 +b(ject)41 b(to)h(tilde)g(expansion,)i(parameter)e(expansion,)150 +3660 y(command)31 b(substitution,)g(and)g(arithmetic)h(expansion.)43 +b(If)31 b Fr(parameter)38 b Fu(is)32 b(a)f(nameref,)h(this)f(expands) +150 3770 y(to)d(the)g(name)g(of)f(the)h(v)-5 b(ariable)28 +b(referenced)g(b)m(y)f Fr(parameter)35 b Fu(instead)27 +b(of)h(p)s(erforming)e(the)i(complete)h(in-)150 3880 +y(direct)e(expansion.)39 b(The)25 b(exceptions)i(to)g(this)f(are)h(the) +f(expansions)g(of)g($)p Fi({)p Fu(!)p Fr(pre\014x)6 b +Fu(*)p Fi(})28 b Fu(and)d($)p Fi({)p Fu(!)p Fr(name)5 +b Fu([@])p Fi(})150 3989 y Fu(describ)s(ed)28 b(b)s(elo)m(w.)41 +b(The)28 b(exclamation)j(p)s(oin)m(t)f(m)m(ust)f(immediately)h(follo)m +(w)g(the)g(left)f(brace)h(in)f(order)f(to)150 4099 y(in)m(tro)s(duce)i +(indirection.)275 4246 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m +(w,)i Fr(w)m(ord)h Fu(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j +(parameter)e(expansion,)150 4356 y(command)30 b(substitution,)g(and)g +(arithmetic)i(expansion.)275 4503 y(When)h(not)h(p)s(erforming)e +(substring)h(expansion,)h(using)g(the)f(form)h(describ)s(ed)e(b)s(elo)m +(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 4613 y(Bash)d(tests)h(for)e(a)i +(parameter)f(that)h(is)e(unset)h(or)g(n)m(ull.)48 b(Omitting)33 +b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 4723 +y(for)c(a)i(parameter)f(that)g(is)g(unset.)41 b(Put)31 +b(another)f(w)m(a)m(y)-8 b(,)33 b(if)e(the)f(colon)i(is)f(included,)f +(the)h(op)s(erator)g(tests)150 4832 y(for)36 b(b)s(oth)g +Fr(parameter)7 b Fu('s)37 b(existence)h(and)e(that)i(its)f(v)-5 +b(alue)37 b(is)g(not)f(n)m(ull;)k(if)d(the)g(colon)h(is)e(omitted,)k +(the)150 4942 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150 +5121 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p Fj(word)p +Ft(})630 5230 y Fu(If)g Fr(parameter)37 b Fu(is)30 b(unset)g(or)h(n)m +(ull,)f(the)h(expansion)f(of)g Fr(w)m(ord)k Fu(is)c(substituted.)40 +b(Otherwise,)630 5340 y(the)31 b(v)-5 b(alue)30 b(of)h +Fr(parameter)37 b Fu(is)31 b(substituted.)p eop end +%%Page: 26 32 +TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)150 299 +y Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 408 +y Fu(If)33 b Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h(the)f +(expansion)g(of)g Fr(w)m(ord)j Fu(is)d(assigned)g(to)h +Fr(parameter)p Fu(.)630 518 y(The)c(v)-5 b(alue)32 b(of)f +Fr(parameter)38 b Fu(is)31 b(then)g(substituted.)42 b(P)m(ositional)33 +b(parameters)e(and)f(sp)s(ecial)630 628 y(parameters)h(ma)m(y)g(not)f +(b)s(e)g(assigned)h(to)g(in)f(this)g(w)m(a)m(y)-8 b(.)150 +786 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630 +896 y Fu(If)26 b Fr(parameter)33 b Fu(is)26 b(n)m(ull)g(or)g(unset,)h +(the)f(expansion)g(of)g Fr(w)m(ord)k Fu(\(or)c(a)h(message)g(to)g(that) +f(e\013ect)630 1005 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h +(is)f(written)g(to)h(the)f(standard)f(error)h(and)f(the)h(shell,)h(if)f +(it)h(is)f(not)630 1115 y(in)m(teractiv)m(e,)33 b(exits.)42 +b(Otherwise,)30 b(the)h(v)-5 b(alue)31 b(of)f Fr(parameter)38 +b Fu(is)30 b(substituted.)150 1273 y Ft(${)p Fj(parameter)p +Ft(:+)p Fj(word)p Ft(})630 1383 y Fu(If)35 b Fr(parameter)42 +b Fu(is)36 b(n)m(ull)f(or)h(unset,)g(nothing)g(is)f(substituted,)i +(otherwise)e(the)h(expansion)630 1492 y(of)31 b Fr(w)m(ord)i +Fu(is)e(substituted.)150 1650 y Ft(${)p Fj(parameter)p +Ft(:)p Fj(offset)p Ft(})150 1760 y(${)p Fj(parameter)p +Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 1870 +y Fu(This)f(is)h(referred)f(to)h(as)g(Substring)f(Expansion.)41 +b(It)31 b(expands)f(to)h(up)f(to)h Fr(length)g Fu(c)m(harac-)630 +1979 y(ters)k(of)g(the)h(v)-5 b(alue)35 b(of)g Fr(parameter)42 +b Fu(starting)36 b(at)g(the)f(c)m(haracter)i(sp)s(eci\014ed)d(b)m(y)h +Fr(o\013set)p Fu(.)55 b(If)630 2089 y Fr(parameter)32 +b Fu(is)26 b(`)p Ft(@)p Fu(',)g(an)f(indexed)g(arra)m(y)h(subscripted)e +(b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(or)g(an)f(asso)s +(ciativ)m(e)j(ar-)630 2198 y(ra)m(y)g(name,)h(the)f(results)g(di\013er) +g(as)g(describ)s(ed)f(b)s(elo)m(w.)40 b(If)28 b Fr(length)g +Fu(is)g(omitted,)i(it)f(expands)630 2308 y(to)e(the)g(substring)f(of)g +(the)h(v)-5 b(alue)27 b(of)g Fr(parameter)33 b Fu(starting)28 +b(at)f(the)g(c)m(haracter)h(sp)s(eci\014ed)e(b)m(y)630 +2418 y Fr(o\013set)37 b Fu(and)d(extending)g(to)h(the)f(end)g(of)g(the) +g(v)-5 b(alue.)53 b Fr(length)34 b Fu(and)g Fr(o\013set)j +Fu(are)e(arithmetic)630 2527 y(expressions)30 b(\(see)h(Section)g(6.5)h +([Shell)e(Arithmetic],)i(page)f(93\).)630 2661 y(If)39 +b Fr(o\013set)k Fu(ev)-5 b(aluates)41 b(to)f(a)g(n)m(um)m(b)s(er)f +(less)h(than)f(zero,)k(the)d(v)-5 b(alue)40 b(is)g(used)e(as)i(an)g +(o\013set)630 2771 y(in)33 b(c)m(haracters)i(from)f(the)f(end)g(of)h +(the)g(v)-5 b(alue)34 b(of)g Fr(parameter)p Fu(.)51 b(If)33 +b Fr(length)h Fu(ev)-5 b(aluates)35 b(to)g(a)630 2880 +y(n)m(um)m(b)s(er)23 b(less)h(than)g(zero,)j(it)d(is)h(in)m(terpreted)f +(as)g(an)h(o\013set)g(in)f(c)m(haracters)h(from)f(the)g(end)g(of)630 +2990 y(the)31 b(v)-5 b(alue)31 b(of)g Fr(parameter)38 +b Fu(rather)30 b(than)h(a)g(n)m(um)m(b)s(er)f(of)g(c)m(haracters,)j +(and)d(the)h(expansion)630 3099 y(is)39 b(the)g(c)m(haracters)i(b)s(et) +m(w)m(een)f Fr(o\013set)i Fu(and)c(that)i(result.)67 +b(Note)40 b(that)g(a)g(negativ)m(e)h(o\013set)630 3209 +y(m)m(ust)27 b(b)s(e)g(separated)g(from)g(the)g(colon)i(b)m(y)e(at)h +(least)g(one)f(space)h(to)g(a)m(v)m(oid)h(b)s(eing)e(confused)630 +3319 y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630 +3453 y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f +(expansion)g(on)g(parameters)h(and)630 3562 y(subscripted)29 +b(arra)m(ys:)630 3696 y Ft($)47 b(string=01234567890abcdefgh)630 +3806 y($)g(echo)g(${string:7})630 3915 y(7890abcdefgh)630 +4025 y($)g(echo)g(${string:7:0})630 4244 y($)g(echo)g(${string:7:2})630 +4354 y(78)630 4463 y($)g(echo)g(${string:7:-2})630 4573 +y(7890abcdef)630 4682 y($)g(echo)g(${string:)e(-7})630 +4792 y(bcdefgh)630 4902 y($)i(echo)g(${string:)e(-7:0})630 +5121 y($)i(echo)g(${string:)e(-7:2})630 5230 y(bc)630 +5340 y($)i(echo)g(${string:)e(-7:-2})p eop end +%%Page: 27 33 +TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)630 299 +y Ft(bcdef)630 408 y($)47 b(set)g(--)h(01234567890abcdefgh)630 +518 y($)f(echo)g(${1:7})630 628 y(7890abcdefgh)630 737 +y($)g(echo)g(${1:7:0})630 956 y($)g(echo)g(${1:7:2})630 +1066 y(78)630 1176 y($)g(echo)g(${1:7:-2})630 1285 y(7890abcdef)630 +1395 y($)g(echo)g(${1:)g(-7})630 1504 y(bcdefgh)630 1614 +y($)g(echo)g(${1:)g(-7:0})630 1833 y($)g(echo)g(${1:)g(-7:2})630 +1943 y(bc)630 2052 y($)g(echo)g(${1:)g(-7:-2})630 2162 +y(bcdef)630 2271 y($)g(array[0]=01234567890abcdef)o(gh)630 +2381 y($)g(echo)g(${array[0]:7})630 2491 y(7890abcdefgh)630 +2600 y($)g(echo)g(${array[0]:7:0})630 2819 y($)g(echo)g +(${array[0]:7:2})630 2929 y(78)630 3039 y($)g(echo)g(${array[0]:7:-2}) +630 3148 y(7890abcdef)630 3258 y($)g(echo)g(${array[0]:)e(-7})630 +3367 y(bcdefgh)630 3477 y($)i(echo)g(${array[0]:)e(-7:0})630 +3696 y($)i(echo)g(${array[0]:)e(-7:2})630 3806 y(bc)630 +3915 y($)i(echo)g(${array[0]:)e(-7:-2})630 4025 y(bcdef)630 +4171 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p +Fu(',)i(the)e(result)g(is)g Fr(length)h Fu(p)s(ositional)f(parameters)h +(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 4281 y(A)36 +b(negativ)m(e)j Fr(o\013set)g Fu(is)e(tak)m(en)g(relativ)m(e)i(to)e +(one)g(greater)g(than)f(the)h(greatest)h(p)s(ositional)630 +4390 y(parameter,)29 b(so)f(an)g(o\013set)h(of)f(-1)g(ev)-5 +b(aluates)30 b(to)e(the)g(last)h(p)s(ositional)g(parameter.)40 +b(It)28 b(is)g(an)630 4500 y(expansion)i(error)g(if)h +Fr(length)f Fu(ev)-5 b(aluates)32 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i +(than)f(zero.)630 4646 y(The)i(follo)m(wing)i(examples)f(illustrate)h +(substring)d(expansion)i(using)f(p)s(ositional)h(param-)630 +4755 y(eters:)630 4902 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h(6)f +(7)h(8)f(9)h(0)f(a)h(b)f(c)g(d)h(e)f(f)h(g)f(h)630 5011 +y($)g(echo)g(${@:7})630 5121 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f(f)h +(g)f(h)630 5230 y($)g(echo)g(${@:7:0})p eop end +%%Page: 28 34 +TeXDict begin 28 33 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)630 299 +y Ft($)47 b(echo)g(${@:7:2})630 408 y(7)g(8)630 518 y($)g(echo)g +(${@:7:-2})630 628 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630 +737 y($)g(echo)g(${@:)g(-7:2})630 847 y(b)g(c)630 956 +y($)g(echo)g(${@:0})630 1066 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h +(9)f(0)h(a)f(b)h(c)f(d)g(e)h(f)f(g)h(h)630 1176 y($)f(echo)g(${@:0:2}) +630 1285 y(./bash)f(1)630 1395 y($)h(echo)g(${@:)g(-7:0})630 +1677 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y) +g(name)g(subscripted)f(b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p +Ft(*)p Fu(',)h(the)e(result)g(is)630 1786 y(the)j Fr(length)g +Fu(mem)m(b)s(ers)f(of)h(the)f(arra)m(y)i(b)s(eginning)d(with)i +Ft(${)p Fj(parameter)p Ft([)p Fj(offset)p Ft(]})p Fu(.)60 +b(A)630 1896 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h +(relativ)m(e)g(to)g(one)f(greater)g(than)g(the)f(maxim)m(um)h(index)f +(of)h(the)630 2005 y(sp)s(eci\014ed)38 b(arra)m(y)-8 +b(.)65 b(It)38 b(is)g(an)h(expansion)f(error)f(if)i Fr(length)f +Fu(ev)-5 b(aluates)40 b(to)f(a)g(n)m(um)m(b)s(er)e(less)630 +2115 y(than)30 b(zero.)630 2287 y(These)23 b(examples)i(sho)m(w)e(ho)m +(w)h(y)m(ou)g(can)g(use)f(substring)f(expansion)i(with)f(indexed)g +(arra)m(ys:)630 2459 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7) +f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))630 2569 +y($)f(echo)g(${array[@]:7})630 2679 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h +(e)f(f)h(g)f(h)630 2788 y($)g(echo)g(${array[@]:7:2})630 +2898 y(7)g(8)630 3007 y($)g(echo)g(${array[@]:)e(-7:2})630 +3117 y(b)i(c)630 3226 y($)g(echo)g(${array[@]:)e(-7:-2})630 +3336 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630 +3446 y($)g(echo)g(${array[@]:0})630 3555 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f +(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 3665 +y($)g(echo)g(${array[@]:0:2})630 3774 y(0)g(1)630 3884 +y($)g(echo)g(${array[@]:)e(-7:0})630 4166 y Fu(Substring)25 +b(expansion)g(applied)h(to)h(an)f(asso)s(ciativ)m(e)j(arra)m(y)d(pro)s +(duces)f(unde\014ned)f(results.)630 4338 y(Substring)32 +b(indexing)i(is)f(zero-based)i(unless)e(the)h(p)s(ositional)g +(parameters)g(are)g(used,)g(in)630 4448 y(whic)m(h)29 +b(case)i(the)f(indexing)g(starts)g(at)g(1)g(b)m(y)g(default.)41 +b(If)29 b Fr(o\013set)k Fu(is)d(0,)g(and)f(the)h(p)s(ositional)630 +4557 y(parameters)h(are)f(used,)g Ft($0)g Fu(is)g(pre\014xed)g(to)h +(the)f(list.)150 4792 y Ft(${!)p Fj(prefix)p Ft(*})150 +4902 y(${!)p Fj(prefix)p Ft(@})630 5011 y Fu(Expands)24 +b(to)h(the)g(names)g(of)g(v)-5 b(ariables)26 b(whose)f(names)f(b)s +(egin)h(with)f Fr(pre\014x)p Fu(,)i(separated)f(b)m(y)630 +5121 y(the)k(\014rst)f(c)m(haracter)j(of)e(the)g Ft(IFS)f +Fu(sp)s(ecial)i(v)-5 b(ariable.)41 b(When)29 b(`)p Ft(@)p +Fu(')g(is)g(used)f(and)h(the)g(expan-)630 5230 y(sion)35 +b(app)s(ears)g(within)f(double)h(quotes,)i(eac)m(h)f(v)-5 +b(ariable)36 b(name)f(expands)g(to)g(a)h(separate)630 +5340 y(w)m(ord.)p eop end +%%Page: 29 35 +TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)150 299 +y Ft(${!)p Fj(name)p Ft([@]})150 408 y(${!)p Fj(name)p +Ft([*]})630 518 y Fu(If)26 b Fr(name)32 b Fu(is)27 b(an)f(arra)m(y)h(v) +-5 b(ariable,)29 b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices) +g(\(k)m(eys\))h(assigned)630 628 y(in)c Fr(name)p Fu(.)39 +b(If)24 b Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8 +b(,)27 b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24 +b(set)h(and)f(n)m(ull)g(otherwise.)630 737 y(When)39 +b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f(the)i(expansion)f(app)s(ears)g +(within)f(double)h(quotes,)k(eac)m(h)d(k)m(ey)630 847 +y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 1011 +y Ft(${#)p Fj(parameter)p Ft(})630 1121 y Fu(The)40 b(length)g(in)g(c)m +(haracters)i(of)e(the)h(expanded)e(v)-5 b(alue)41 b(of)f +Fr(parameter)47 b Fu(is)40 b(substituted.)630 1230 y(If)i +Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p +Ft(@)p Fu(',)k(the)c(v)-5 b(alue)43 b(substituted)f(is)h(the)g(n)m(um)m +(b)s(er)f(of)h(p)s(ositional)630 1340 y(parameters.)i(If)32 +b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(name)g(subscripted)f(b)m +(y)g(`)p Ft(*)p Fu(')h(or)g(`)p Ft(@)p Fu(',)g(the)g(v)-5 +b(alue)630 1450 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i +(elemen)m(ts)i(in)d(the)h(arra)m(y)-8 b(.)43 b(If)30 +b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 1559 +y(arra)m(y)37 b(name)g(subscripted)f(b)m(y)h(a)g(negativ)m(e)i(n)m(um)m +(b)s(er,)f(that)f(n)m(um)m(b)s(er)f(is)g(in)m(terpreted)i(as)630 +1669 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f +(index)g(of)g Fr(parameter)p Fu(,)50 b(so)c(negativ)m(e)630 +1778 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f +(arra)m(y)-8 b(,)32 b(and)e(an)g(index)g(of)g(-1)h(references)g(the)630 +1888 y(last)g(elemen)m(t.)150 2052 y Ft(${)p Fj(parameter)p +Ft(#)p Fj(word)p Ft(})150 2162 y(${)p Fj(parameter)p +Ft(##)p Fj(word)p Ft(})630 2271 y Fu(The)43 b Fr(w)m(ord)k +Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h(pattern)g(and)f(matc)m(hed)i +(according)f(to)h(the)630 2381 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w) +h(\(see)h(Section)g(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f +(33\).)46 b(If)32 b(the)630 2491 y(pattern)37 b(matc)m(hes)h(the)f(b)s +(eginning)f(of)h(the)g(expanded)f(v)-5 b(alue)38 b(of)f +Fr(parameter)p Fu(,)i(then)e(the)630 2600 y(result)f(of)h(the)f +(expansion)h(is)f(the)h(expanded)e(v)-5 b(alue)37 b(of)g +Fr(parameter)43 b Fu(with)36 b(the)h(shortest)630 2710 +y(matc)m(hing)31 b(pattern)e(\(the)h(`)p Ft(#)p Fu(')g(case\))h(or)e +(the)h(longest)h(matc)m(hing)f(pattern)g(\(the)g(`)p +Ft(##)p Fu(')g(case\))630 2819 y(deleted.)49 b(If)32 +b Fr(parameter)40 b Fu(is)33 b(`)p Ft(@)p Fu(')g(or)g(`)p +Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 b(al)34 b(op)s(eration)g(is) +f(applied)f(to)630 2929 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f +(turn,)h(and)e(the)h(expansion)g(is)h(the)f(resultan)m(t)h(list.)61 +b(If)630 3039 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5 +b(ariable)32 b(subscripted)e(with)h(`)p Ft(@)p Fu(')g(or)h(`)p +Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 b(al)630 3148 +y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e(of)h +(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630 +3258 y(the)h(resultan)m(t)g(list.)150 3422 y Ft(${)p +Fj(parameter)p Ft(\045)p Fj(word)p Ft(})150 3532 y(${)p +Fj(parameter)p Ft(\045\045)p Fj(word)p Ft(})630 3641 +y Fu(The)43 b Fr(w)m(ord)k Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h +(pattern)g(and)f(matc)m(hed)i(according)f(to)h(the)630 +3751 y(rules)f(describ)s(ed)g(b)s(elo)m(w)h(\(see)h(Section)g(3.5.8.1)h +([P)m(attern)f(Matc)m(hing],)51 b(page)45 b(33\).)85 +b(If)630 3861 y(the)43 b(pattern)g(matc)m(hes)h(a)g(trailing)g(p)s +(ortion)e(of)h(the)g(expanded)g(v)-5 b(alue)43 b(of)g +Fr(parameter)p Fu(,)630 3970 y(then)c(the)g(result)g(of)h(the)f +(expansion)g(is)h(the)f(v)-5 b(alue)40 b(of)f Fr(parameter)46 +b Fu(with)39 b(the)h(shortest)630 4080 y(matc)m(hing)31 +b(pattern)e(\(the)h(`)p Ft(\045)p Fu(')g(case\))h(or)e(the)h(longest)h +(matc)m(hing)f(pattern)g(\(the)g(`)p Ft(\045\045)p Fu(')g(case\))630 +4189 y(deleted.)49 b(If)32 b Fr(parameter)40 b Fu(is)33 +b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 +b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 4299 y(eac)m(h)38 +b(p)s(ositional)g(parameter)g(in)f(turn,)h(and)e(the)h(expansion)g(is)h +(the)f(resultan)m(t)h(list.)61 b(If)630 4408 y Fr(parameter)38 +b Fu(is)32 b(an)f(arra)m(y)h(v)-5 b(ariable)32 b(subscripted)e(with)h +(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 +b(al)630 4518 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m +(b)s(er)e(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g +(is)630 4628 y(the)h(resultan)m(t)g(list.)150 4792 y +Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p Fj(stri)o(ng)p +Ft(})630 4902 y Fu(The)37 b Fr(pattern)g Fu(is)g(expanded)g(to)h(pro)s +(duce)e(a)h(pattern)g(just)g(as)h(in)e(\014lename)i(expansion.)630 +5011 y Fr(P)m(arameter)46 b Fu(is)38 b(expanded)f(and)g(the)i(longest)g +(matc)m(h)g(of)f Fr(pattern)g Fu(against)h(its)f(v)-5 +b(alue)39 b(is)630 5121 y(replaced)31 b(with)g Fr(string)p +Fu(.)42 b(The)30 b(matc)m(h)h(is)g(p)s(erformed)f(according)h(to)h(the) +f(rules)f(describ)s(ed)630 5230 y(b)s(elo)m(w)f(\(see)h(Section)g +(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f(33\).)41 +b(If)29 b Fr(pattern)g Fu(b)s(egins)f(with)630 5340 y(`)p +Ft(/)p Fu(',)43 b(all)e(matc)m(hes)g(of)f Fr(pattern)g +Fu(are)h(replaced)f(with)g Fr(string)p Fu(.)69 b(Normally)41 +b(only)f(the)h(\014rst)p eop end +%%Page: 30 36 +TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)630 299 +y(matc)m(h)28 b(is)f(replaced.)40 b(If)26 b Fr(pattern)h +Fu(b)s(egins)f(with)h(`)p Ft(#)p Fu(',)h(it)f(m)m(ust)g(matc)m(h)h(at)g +(the)f(b)s(eginning)f(of)630 408 y(the)32 b(expanded)f(v)-5 +b(alue)32 b(of)g Fr(parameter)p Fu(.)45 b(If)31 b Fr(pattern)h +Fu(b)s(egins)f(with)g(`)p Ft(\045)p Fu(',)i(it)f(m)m(ust)g(matc)m(h)g +(at)630 518 y(the)24 b(end)f(of)h(the)h(expanded)e(v)-5 +b(alue)24 b(of)g Fr(parameter)p Fu(.)39 b(If)24 b Fr(string)31 +b Fu(is)24 b(n)m(ull,)i(matc)m(hes)f(of)f Fr(pattern)630 +628 y Fu(are)36 b(deleted)g(and)f(the)g Ft(/)g Fu(follo)m(wing)i +Fr(pattern)e Fu(ma)m(y)h(b)s(e)f(omitted.)57 b(If)34 +b(the)i Ft(nocasematch)630 737 y Fu(shell)31 b(option)h(\(see)g(the)g +(description)f(of)g Ft(shopt)f Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)f +(Builtin],)630 847 y(page)45 b(66\))h(is)f(enabled,)j(the)d(matc)m(h)g +(is)g(p)s(erformed)e(without)i(regard)f(to)h(the)g(case)h(of)630 +956 y(alphab)s(etic)36 b(c)m(haracters.)56 b(If)34 b +Fr(parameter)42 b Fu(is)36 b(`)p Ft(@)p Fu(')f(or)g(`)p +Ft(*)p Fu(',)h(the)g(substitution)e(op)s(eration)i(is)630 +1066 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e +(turn,)h(and)f(the)h(expansion)g(is)f(the)h(resultan)m(t)630 +1176 y(list.)38 b(If)21 b Fr(parameter)28 b Fu(is)22 +b(an)f(arra)m(y)h(v)-5 b(ariable)22 b(subscripted)e(with)h(`)p +Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)j(the)d(substitution)630 +1285 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e +(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630 +1395 y(the)h(resultan)m(t)g(list.)150 1551 y Ft(${)p +Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150 1661 y(${)p +Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150 1771 y(${)p +Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150 1880 y(${)p +Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630 1990 y Fu(This)36 +b(expansion)g(mo)s(di\014es)g(the)g(case)i(of)f(alphab)s(etic)g(c)m +(haracters)h(in)e Fr(parameter)p Fu(.)59 b(The)630 2099 +y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s(duce)d(a)j(pattern)e +(just)g(as)h(in)g(\014lename)g(expansion.)47 b(Eac)m(h)630 +2209 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 b(alue)31 +b(of)f Fr(parameter)37 b Fu(is)30 b(tested)h(against)h +Fr(pattern)p Fu(,)e(and,)g(if)630 2318 y(it)j(matc)m(hes)h(the)g +(pattern,)f(its)h(case)g(is)f(con)m(v)m(erted.)49 b(The)33 +b(pattern)g(should)f(not)h(attempt)630 2428 y(to)f(matc)m(h)g(more)f +(than)g(one)g(c)m(haracter.)44 b(The)30 b(`)p Ft(^)p +Fu(')i(op)s(erator)f(con)m(v)m(erts)h(lo)m(w)m(ercase)i(letters)630 +2538 y(matc)m(hing)i Fr(pattern)f Fu(to)h(upp)s(ercase;)h(the)e(`)p +Ft(,)p Fu(')g(op)s(erator)g(con)m(v)m(erts)i(matc)m(hing)f(upp)s +(ercase)630 2647 y(letters)e(to)f(lo)m(w)m(ercase.)50 +b(The)32 b(`)p Ft(^^)p Fu(')h(and)f(`)p Ft(,,)p Fu(')g(expansions)h +(con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)630 +2757 y(acter)c(in)f(the)h(expanded)e(v)-5 b(alue;)30 +b(the)e(`)p Ft(^)p Fu(')g(and)g(`)p Ft(,)p Fu(')g(expansions)g(matc)m +(h)h(and)f(con)m(v)m(ert)i(only)630 2866 y(the)37 b(\014rst)g(c)m +(haracter)i(in)e(the)g(expanded)g(v)-5 b(alue.)61 b(If)37 +b Fr(pattern)g Fu(is)h(omitted,)i(it)e(is)f(treated)630 +2976 y(lik)m(e)h(a)f(`)p Ft(?)p Fu(',)i(whic)m(h)d(matc)m(hes)i(ev)m +(ery)f(c)m(haracter.)61 b(If)37 b Fr(parameter)43 b Fu(is)37 +b(`)p Ft(@)p Fu(')g(or)f(`)p Ft(*)p Fu(',)j(the)e(case)630 +3086 y(mo)s(di\014cation)29 b(op)s(eration)f(is)g(applied)g(to)h(eac)m +(h)h(p)s(ositional)f(parameter)f(in)g(turn,)g(and)g(the)630 +3195 y(expansion)38 b(is)g(the)g(resultan)m(t)h(list.)65 +b(If)37 b Fr(parameter)46 b Fu(is)38 b(an)g(arra)m(y)g(v)-5 +b(ariable)39 b(subscripted)630 3305 y(with)26 b(`)p Ft(@)p +Fu(')f(or)h(`)p Ft(*)p Fu(',)h(the)f(case)h(mo)s(di\014cation)f(op)s +(eration)h(is)e(applied)h(to)h(eac)m(h)g(mem)m(b)s(er)e(of)h(the)630 +3414 y(arra)m(y)31 b(in)f(turn,)f(and)h(the)h(expansion)f(is)g(the)h +(resultan)m(t)g(list.)150 3571 y Ft(${)p Fj(parameter)p +Ft(@)p Fj(operator)p Ft(})630 3680 y Fu(The)d(expansion)h(is)f(either)h +(a)g(transformation)g(of)g(the)g(v)-5 b(alue)29 b(of)g +Fr(parameter)35 b Fu(or)29 b(informa-)630 3790 y(tion)e(ab)s(out)f +Fr(parameter)33 b Fu(itself,)28 b(dep)s(ending)c(on)i(the)h(v)-5 +b(alue)26 b(of)h Fr(op)s(erator)p Fu(.)39 b(Eac)m(h)27 +b Fr(op)s(erator)630 3900 y Fu(is)j(a)h(single)g(letter:)630 +4056 y Ft(U)432 b Fu(The)31 b(expansion)g(is)g(a)g(string)h(that)f(is)h +(the)f(v)-5 b(alue)32 b(of)f Fr(parameter)38 b Fu(with)31 +b(lo)m(w-)1110 4166 y(ercase)g(alphab)s(etic)g(c)m(haracters)h(con)m(v) +m(erted)g(to)f(upp)s(ercase.)630 4322 y Ft(u)432 b Fu(The)34 +b(expansion)g(is)g(a)h(string)f(that)h(is)g(the)f(v)-5 +b(alue)35 b(of)f Fr(parameter)42 b Fu(with)34 b(the)1110 +4432 y(\014rst)c(c)m(haracter)i(con)m(v)m(erted)f(to)h(upp)s(ercase,)d +(if)i(it)g(is)f(alphab)s(etic.)630 4589 y Ft(L)432 b +Fu(The)33 b(expansion)h(is)g(a)g(string)g(that)h(is)f(the)g(v)-5 +b(alue)34 b(of)g Fr(parameter)41 b Fu(with)34 b(up-)1110 +4698 y(p)s(ercase)c(alphab)s(etic)h(c)m(haracters)h(con)m(v)m(erted)g +(to)f(lo)m(w)m(ercase.)630 4855 y Ft(Q)432 b Fu(The)30 +b(expansion)h(is)g(a)g(string)f(that)i(is)f(the)g(v)-5 +b(alue)31 b(of)g Fr(parameter)37 b Fu(quoted)31 b(in)1110 +4964 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i(input.)630 +5121 y Ft(E)432 b Fu(The)27 b(expansion)g(is)g(a)g(string)h(that)f(is)h +(the)f(v)-5 b(alue)28 b(of)f Fr(parameter)34 b Fu(with)27 +b(bac)m(k-)1110 5230 y(slash)e(escap)s(e)h(sequences)f(expanded)g(as)g +(with)g(the)h Ft($'...)o(')e Fu(quoting)i(mec)m(h-)1110 +5340 y(anism.)p eop end +%%Page: 31 37 +TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)630 299 +y Ft(P)432 b Fu(The)22 b(expansion)h(is)g(a)g(string)g(that)g(is)g(the) +g(result)g(of)g(expanding)f(the)h(v)-5 b(alue)24 b(of)1110 +408 y Fr(parameter)31 b Fu(as)24 b(if)f(it)h(w)m(ere)g(a)g(prompt)f +(string)h(\(see)g(Section)h(6.9)g([Con)m(trolling)1110 +518 y(the)31 b(Prompt],)f(page)h(98\).)630 676 y Ft(A)432 +b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g(form)g(of)h(an)f +(assignmen)m(t)h(statemen)m(t)h(or)1110 785 y Ft(declare)h +Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31 b(will)e(recreate)i +Fr(parameter)36 b Fu(with)1110 895 y(its)31 b(attributes)g(and)e(v)-5 +b(alue.)630 1052 y Ft(K)432 b Fu(Pro)s(duces)33 b(a)i(p)s +(ossibly-quoted)e(v)m(ersion)i(of)f(the)h(v)-5 b(alue)34 +b(of)h Fr(parameter)p Fu(,)g(ex-)1110 1162 y(cept)46 +b(that)h(it)f(prin)m(ts)f(the)h(v)-5 b(alues)47 b(of)f(indexed)f(and)g +(asso)s(ciativ)m(e)k(arra)m(ys)1110 1271 y(as)37 b(a)g(sequence)f(of)h +(quoted)g(k)m(ey-v)-5 b(alue)38 b(pairs)e(\(see)h(Section)h(6.7)f +([Arra)m(ys],)1110 1381 y(page)31 b(95\).)630 1539 y +Ft(a)432 b Fu(The)30 b(expansion)g(is)g(a)h(string)f(consisting)h(of)g +(\015ag)g(v)-5 b(alues)30 b(represen)m(ting)h Fr(pa-)1110 +1648 y(rameter)7 b Fu('s)31 b(attributes.)630 1806 y(If)e +Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p +Ft(*)p Fu(',)g(the)g(op)s(eration)g(is)g(applied)f(to)i(eac)m(h)g(p)s +(ositional)f(parameter)630 1915 y(in)24 b(turn,)g(and)f(the)h +(expansion)g(is)g(the)g(resultan)m(t)h(list.)39 b(If)23 +b Fr(parameter)31 b Fu(is)24 b(an)g(arra)m(y)g(v)-5 b(ariable)630 +2025 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p +Ft(*)p Fu(',)h(the)e(op)s(eration)h(is)g(applied)f(to)h(eac)m(h)h(mem)m +(b)s(er)e(of)h(the)f(arra)m(y)630 2134 y(in)30 b(turn,)g(and)f(the)i +(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 2268 +y(The)c(result)h(of)g(the)f(expansion)h(is)g(sub)5 b(ject)27 +b(to)h(w)m(ord)g(splitting)g(and)f(\014lename)h(expansion)630 +2378 y(as)j(describ)s(ed)e(b)s(elo)m(w.)150 2575 y Fk(3.5.4)63 +b(Command)41 b(Substitution)150 2722 y Fu(Command)f(substitution)h +(allo)m(ws)i(the)e(output)g(of)h(a)f(command)g(to)h(replace)g(the)g +(command)f(itself.)150 2831 y(Command)29 b(substitution)h(o)s(ccurs)h +(when)e(a)i(command)f(is)g(enclosed)h(as)g(follo)m(ws:)390 +2965 y Ft($\()p Fj(command)p Ft(\))150 3098 y Fu(or)390 +3232 y Ft(`)p Fj(command)p Ft(`)150 3366 y Fu(Bash)20 +b(p)s(erforms)f(the)i(expansion)f(b)m(y)g(executing)i +Fr(command)h Fu(in)d(a)h(subshell)e(en)m(vironmen)m(t)i(and)f +(replacing)150 3475 y(the)40 b(command)g(substitution)f(with)h(the)g +(standard)f(output)g(of)h(the)g(command,)i(with)e(an)m(y)g(trailing)150 +3585 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g +(not)g(deleted,)j(but)d(they)g(ma)m(y)h(b)s(e)e(remo)m(v)m(ed)i(during) +150 3694 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g +(substitution)h Ft($\(cat)e Fj(file)p Ft(\))g Fu(can)h(b)s(e)g +(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 3804 +y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)275 +3937 y(When)j(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g +(substitution)g(is)g(used,)h(bac)m(kslash)f(retains)h(its)f(literal)150 +4047 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p +Ft($)p Fu(',)j(`)p Ft(`)p Fu(',)f(or)e(`)p Ft(\\)p Fu('.)64 +b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g(b)m(y)g(a)150 +4157 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72 +b(When)41 b(using)f(the)i Ft($\()p Fj(command)p Ft(\))c +Fu(form,)43 b(all)150 4266 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the) +f(paren)m(theses)h(mak)m(e)g(up)f(the)g(command;)h(none)f(are)h +(treated)g(sp)s(ecially)-8 b(.)275 4400 y(Command)22 +b(substitutions)g(ma)m(y)i(b)s(e)e(nested.)39 b(T)-8 +b(o)23 b(nest)g(when)f(using)h(the)g(bac)m(kquoted)h(form,)g(escap)s(e) +150 4509 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275 +4643 y(If)e(the)i(substitution)e(app)s(ears)h(within)g(double)f +(quotes,)i(w)m(ord)f(splitting)h(and)f(\014lename)g(expansion)150 +4753 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 +4950 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 5097 +y Fu(Arithmetic)25 b(expansion)g(allo)m(ws)g(the)g(ev)-5 +b(aluation)26 b(of)f(an)f(arithmetic)i(expression)e(and)g(the)g +(substitution)150 5206 y(of)31 b(the)f(result.)41 b(The)30 +b(format)g(for)g(arithmetic)i(expansion)e(is:)390 5340 +y Ft($\(\()47 b Fj(expression)e Ft(\)\))p eop end +%%Page: 32 38 +TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)275 299 +y(The)33 b(expression)g(is)h(treated)g(as)g(if)g(it)g(w)m(ere)g(within) +f(double)h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150 +408 y(the)k(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8 +b(.)65 b(All)38 b(tok)m(ens)h(in)f(the)g(expression)f(undergo)g +(parameter)150 518 y(and)26 b(v)-5 b(ariable)28 b(expansion,)g(command) +e(substitution,)i(and)e(quote)i(remo)m(v)-5 b(al.)41 +b(The)26 b(result)h(is)g(treated)h(as)150 628 y(the)j(arithmetic)g +(expression)f(to)h(b)s(e)f(ev)-5 b(aluated.)42 b(Arithmetic)31 +b(expansions)g(ma)m(y)g(b)s(e)e(nested.)275 761 y(The)34 +b(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e(according)i(to)g(the)g +(rules)f(listed)h(b)s(elo)m(w)g(\(see)g(Section)g(6.5)h([Shell)150 +870 y(Arithmetic],)32 b(page)f(93\).)42 b(If)30 b(the)h(expression)f +(is)g(in)m(v)-5 b(alid,)32 b(Bash)e(prin)m(ts)g(a)h(message)g +(indicating)h(failure)150 980 y(to)f(the)g(standard)e(error)h(and)g(no) +g(substitution)g(o)s(ccurs.)150 1177 y Fk(3.5.6)63 b(Pro)s(cess)42 +b(Substitution)150 1324 y Fu(Pro)s(cess)33 b(substitution)g(allo)m(ws)i +(a)e(pro)s(cess's)g(input)f(or)h(output)g(to)h(b)s(e)f(referred)f(to)i +(using)f(a)g(\014lename.)150 1433 y(It)d(tak)m(es)i(the)f(form)f(of)390 +1567 y Ft(<\()p Fj(list)p Ft(\))150 1700 y Fu(or)390 +1833 y Ft(>\()p Fj(list)p Ft(\))150 1966 y Fu(The)e(pro)s(cess)h +Fr(list)j Fu(is)d(run)e(async)m(hronously)-8 b(,)30 b(and)e(its)i +(input)e(or)h(output)f(app)s(ears)h(as)g(a)g(\014lename.)41 +b(This)150 2076 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h +(to)g(the)f(curren)m(t)g(command)g(as)g(the)g(result)g(of)g(the)h +(expansion.)38 b(If)150 2186 y(the)28 b Ft(>\()p Fj(list)p +Ft(\))d Fu(form)i(is)g(used,)h(writing)f(to)h(the)g(\014le)f(will)h +(pro)m(vide)g(input)e(for)h Fr(list)p Fu(.)41 b(If)26 +b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 2295 y(is)g(used,)g(the) +f(\014le)h(passed)f(as)h(an)f(argumen)m(t)h(should)e(b)s(e)h(read)h(to) +g(obtain)g(the)f(output)g(of)h Fr(list)p Fu(.)40 b(Note)25 +b(that)150 2405 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m +(een)i(the)f Ft(<)f Fu(or)h Ft(>)f Fu(and)g(the)h(left)h(paren)m +(thesis,)f(otherwise)h(the)f(construct)150 2514 y(w)m(ould)j(b)s(e)g +(in)m(terpreted)g(as)h(a)f(redirection.)59 b(Pro)s(cess)36 +b(substitution)g(is)h(supp)s(orted)d(on)i(systems)g(that)150 +2624 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p +Fu(s\))h(or)h(the)f Ft(/dev/fd)f Fu(metho)s(d)h(of)g(naming)g(op)s(en)g +(\014les.)275 2757 y(When)36 b(a)m(v)-5 b(ailable,)40 +b(pro)s(cess)c(substitution)h(is)f(p)s(erformed)f(sim)m(ultaneously)i +(with)g(parameter)g(and)150 2867 y(v)-5 b(ariable)31 +b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.) +150 3064 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150 +3210 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g +(expansion,)g(command)g(substitution,)g(and)f(arithmetic)150 +3320 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h +(quotes)h(for)f(w)m(ord)g(splitting.)275 3453 y(The)e(shell)g(treats)i +(eac)m(h)g(c)m(haracter)g(of)f Ft($IFS)e Fu(as)i(a)g(delimiter,)h(and)e +(splits)g(the)h(results)f(of)h(the)g(other)150 3563 y(expansions)22 +b(in)m(to)i(w)m(ords)e(using)h(these)g(c)m(haracters)h(as)f(\014eld)f +(terminators.)39 b(If)22 b Ft(IFS)g Fu(is)h(unset,)h(or)e(its)h(v)-5 +b(alue)150 3672 y(is)36 b(exactly)j Ft()p +Fu(,)32 b(the)37 b(default,)h(then)e(sequences)h(of)67 +b Ft()p Fu(,)36 b Ft()p Fu(,)h(and)150 3782 +y Ft()28 b Fu(at)k(the)f(b)s(eginning)f(and)h(end)f(of)h(the)g +(results)g(of)g(the)g(previous)g(expansions)f(are)i(ignored,)150 +3892 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f +(at)h(the)f(b)s(eginning)f(or)h(end)f(serv)m(es)h(to)h(delimit)f(w)m +(ords.)150 4001 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5 +b(alue)43 b(other)h(than)f(the)g(default,)k(then)c(sequences)h(of)f +(the)h(whitespace)f(c)m(haracters)150 4111 y Ft(space)p +Fu(,)29 b Ft(tab)p Fu(,)h(and)g Ft(newline)e Fu(are)j(ignored)g(at)g +(the)f(b)s(eginning)g(and)g(end)g(of)g(the)h(w)m(ord,)f(as)h(long)g(as) +g(the)150 4220 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5 +b(alue)27 b(of)g Ft(IFS)e Fu(\(an)i Ft(IFS)e Fu(whitespace)i(c)m +(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 4330 +y Ft(IFS)c Fu(that)h(is)g(not)f Ft(IFS)g Fu(whitespace,)j(along)f(with) +e(an)m(y)h(adjacen)m(t)h Ft(IFS)e Fu(whitespace)h(c)m(haracters,)i +(delimits)150 4440 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f +Ft(IFS)g Fu(whitespace)h(c)m(haracters)h(is)e(also)h(treated)h(as)f(a)f +(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 4549 y(of)31 +b Ft(IFS)e Fu(is)h(n)m(ull,)h(no)f(w)m(ord)g(splitting)h(o)s(ccurs.)275 +4682 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g +Fu(or)g Ft('')p Fu(\))f(are)h(retained)h(and)e(passed)g(to)i(commands)e +(as)i(empt)m(y)f(strings.)150 4792 y(Unquoted)37 b(implicit)i(n)m(ull)f +(argumen)m(ts,)i(resulting)d(from)g(the)h(expansion)g(of)g(parameters)f +(that)i(ha)m(v)m(e)150 4902 y(no)32 b(v)-5 b(alues,)33 +b(are)f(remo)m(v)m(ed.)47 b(If)32 b(a)g(parameter)h(with)e(no)h(v)-5 +b(alue)33 b(is)f(expanded)f(within)h(double)f(quotes,)j(a)150 +5011 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f +(passed)g(to)i(a)f(command)g(as)g(an)f(empt)m(y)i(string.)40 +b(When)150 5121 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as) +i(part)f(of)g(a)g(w)m(ord)g(whose)g(expansion)g(is)h(non-n)m(ull,)h +(the)e(n)m(ull)150 5230 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69 +b(That)39 b(is,)j(the)e(w)m(ord)f Ft(-d'')f Fu(b)s(ecomes)i +Ft(-d)e Fu(after)i(w)m(ord)f(splitting)h(and)f(n)m(ull)150 +5340 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)p eop end +%%Page: 33 39 +TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)275 299 +y(Note)31 b(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h(splitting)g +(is)f(p)s(erformed.)150 505 y Fk(3.5.8)63 b(Filename)41 +b(Expansion)150 652 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d +(the)i Ft(-f)f Fu(option)h(has)f(b)s(een)g(set)h(\(see)g(Section)h +(4.3.1)g([The)e(Set)h(Builtin],)150 762 y(page)d(62\),)i(Bash)d(scans)h +(eac)m(h)h(w)m(ord)e(for)g(the)h(c)m(haracters)g(`)p +Ft(*)p Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39 +b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 872 y(app)s(ears,)34 +b(and)f(is)g(not)h(quoted,)h(then)e(the)h(w)m(ord)f(is)h(regarded)f(as) +h(a)g Fr(pattern)p Fu(,)h(and)e(replaced)h(with)f(an)150 +981 y(alphab)s(etically)41 b(sorted)e(list)h(of)g(\014lenames)f(matc)m +(hing)i(the)e(pattern)g(\(see)i(Section)f(3.5.8.1)i([P)m(attern)150 +1091 y(Matc)m(hing],)e(page)e(33\).)60 b(If)36 b(no)h(matc)m(hing)g +(\014lenames)g(are)g(found,)g(and)f(the)g(shell)h(option)g +Ft(nullglob)150 1200 y Fu(is)k(disabled,)i(the)f(w)m(ord)e(is)h(left)h +(unc)m(hanged.)72 b(If)40 b(the)h Ft(nullglob)e Fu(option)i(is)g(set,)k +(and)40 b(no)h(matc)m(hes)150 1310 y(are)c(found,)g(the)g(w)m(ord)f(is) +g(remo)m(v)m(ed.)60 b(If)36 b(the)h Ft(failglob)d Fu(shell)j(option)g +(is)g(set,)i(and)c(no)i(matc)m(hes)h(are)150 1420 y(found,)e(an)g +(error)f(message)i(is)f(prin)m(ted)f(and)h(the)g(command)f(is)h(not)g +(executed.)58 b(If)35 b(the)h(shell)g(option)150 1529 +y Ft(nocaseglob)e Fu(is)j(enabled,)i(the)e(matc)m(h)h(is)f(p)s +(erformed)e(without)i(regard)g(to)h(the)f(case)h(of)f(alphab)s(etic)150 +1639 y(c)m(haracters.)275 1781 y(When)23 b(a)h(pattern)f(is)h(used)f +(for)g(\014lename)h(expansion,)h(the)e(c)m(haracter)i(`)p +Ft(.)p Fu(')f(at)g(the)g(start)g(of)g(a)g(\014lename)150 +1890 y(or)f(immediately)i(follo)m(wing)g(a)f(slash)f(m)m(ust)h(b)s(e)f +(matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g(shell)h(option)g +Ft(dotglob)150 2000 y Fu(is)k(set.)41 b(The)28 b(\014lenames)g(`)p +Ft(.)p Fu(')g(and)g(`)p Ft(..)p Fu(')g(m)m(ust)g(alw)m(a)m(ys)i(b)s(e)e +(matc)m(hed)h(explicitly)-8 b(,)30 b(ev)m(en)f(if)g Ft(dotglob)d +Fu(is)i(set.)150 2109 y(In)i(other)g(cases,)i(the)e(`)p +Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h(treated)g(sp)s(ecially)-8 +b(.)275 2251 y(When)30 b(matc)m(hing)i(a)f(\014lename,)h(the)f(slash)f +(c)m(haracter)j(m)m(ust)d(alw)m(a)m(ys)j(b)s(e)d(matc)m(hed)h +(explicitly)i(b)m(y)e(a)150 2361 y(slash)d(in)f(the)h(pattern,)h(but)e +(in)h(other)g(matc)m(hing)h(con)m(texts)h(it)e(can)g(b)s(e)g(matc)m +(hed)g(b)m(y)g(a)g(sp)s(ecial)h(pattern)150 2470 y(c)m(haracter)j(as)f +(describ)s(ed)e(b)s(elo)m(w)h(\(see)i(Section)f(3.5.8.1)i([P)m(attern)e +(Matc)m(hing],)i(page)e(33\).)275 2612 y(See)d(the)g(description)g(of)g +Ft(shopt)e Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i(page)g +(66,)g(for)f(a)g(descrip-)150 2722 y(tion)j(of)f(the)h +Ft(nocaseglob)p Fu(,)d Ft(nullglob)p Fu(,)g Ft(failglob)p +Fu(,)h(and)g Ft(dotglob)g Fu(options.)275 2864 y(The)36 +b Ft(GLOBIGNORE)d Fu(shell)k(v)-5 b(ariable)37 b(ma)m(y)g(b)s(e)f(used) +g(to)h(restrict)g(the)g(set)g(of)g(\014le)f(names)h(matc)m(hing)150 +2973 y(a)42 b(pattern.)74 b(If)41 b Ft(GLOBIGNORE)e Fu(is)i(set,)k(eac) +m(h)e(matc)m(hing)f(\014le)g(name)f(that)h(also)h(matc)m(hes)f(one)g +(of)g(the)150 3083 y(patterns)34 b(in)g Ft(GLOBIGNORE)d +Fu(is)k(remo)m(v)m(ed)g(from)f(the)g(list)h(of)f(matc)m(hes.)54 +b(If)33 b(the)i Ft(nocaseglob)c Fu(option)k(is)150 3192 +y(set,)c(the)e(matc)m(hing)i(against)g(the)f(patterns)f(in)h +Ft(GLOBIGNORE)c Fu(is)k(p)s(erformed)e(without)i(regard)f(to)i(case.) +150 3302 y(The)d(\014lenames)h Ft(.)g Fu(and)f Ft(..)h +Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f Ft(GLOBIGNORE)f +Fu(is)i(set)g(and)f(not)h(n)m(ull.)41 b(Ho)m(w)m(ev)m(er,)150 +3412 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5 +b(alue)30 b(has)f(the)g(e\013ect)i(of)f(enabling)f(the)h +Ft(dotglob)d Fu(shell)i(option,)150 3521 y(so)j(all)h(other)f +(\014lenames)g(b)s(eginning)f(with)h(a)g(`)p Ft(.)p Fu(')g(will)h(matc) +m(h.)46 b(T)-8 b(o)32 b(get)h(the)f(old)g(b)s(eha)m(vior)g(of)h +(ignoring)150 3631 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p +Ft(.)p Fu(',)f(mak)m(e)h(`)p Ft(.*)p Fu(')f(one)h(of)f(the)g(patterns)g +(in)g Ft(GLOBIGNORE)p Fu(.)37 b(The)29 b Ft(dotglob)150 +3740 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d +Fu(is)k(unset.)150 3947 y Fk(3.5.8.1)63 b(P)m(attern)40 +b(Matc)m(hing)150 4094 y Fu(An)m(y)24 b(c)m(haracter)h(that)f(app)s +(ears)f(in)g(a)h(pattern,)i(other)e(than)f(the)h(sp)s(ecial)g(pattern)g +(c)m(haracters)h(describ)s(ed)150 4203 y(b)s(elo)m(w,)31 +b(matc)m(hes)g(itself.)42 b(The)29 b Fm(nul)h Fu(c)m(haracter)i(ma)m(y) +e(not)h(o)s(ccur)f(in)g(a)h(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s +(es)150 4313 y(the)38 b(follo)m(wing)g(c)m(haracter;)43 +b(the)37 b(escaping)i(bac)m(kslash)e(is)h(discarded)f(when)f(matc)m +(hing.)63 b(The)36 b(sp)s(ecial)150 4423 y(pattern)30 +b(c)m(haracters)i(m)m(ust)f(b)s(e)e(quoted)i(if)f(they)h(are)f(to)i(b)s +(e)d(matc)m(hed)i(literally)-8 b(.)275 4564 y(The)29 +b(sp)s(ecial)i(pattern)g(c)m(haracters)h(ha)m(v)m(e)f(the)g(follo)m +(wing)h(meanings:)150 4735 y Ft(*)432 b Fu(Matc)m(hes)31 +b(an)m(y)e(string,)h(including)f(the)g(n)m(ull)g(string.)41 +b(When)29 b(the)g Ft(globstar)e Fu(shell)i(option)630 +4844 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h +(\014lename)g(expansion)g(con)m(text,)j(t)m(w)m(o)e(adjacen)m(t)g(`)p +Ft(*)p Fu('s)630 4954 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc) +m(h)i(all)f(\014les)f(and)g(zero)h(or)g(more)f(directories)i(and)630 +5064 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p +Ft(/)p Fu(',)h(t)m(w)m(o)g(adjacen)m(t)h(`)p Ft(*)p Fu('s)e(will)g +(matc)m(h)h(only)f(directories)630 5173 y(and)k(sub)s(directories.)150 +5340 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.)p +eop end +%%Page: 34 40 +TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299 +y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g(the)g +(enclosed)g(c)m(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters)i +(separated)e(b)m(y)g(a)630 408 y(h)m(yphen)k(denotes)i(a)g +Fr(range)g(expression)p Fu(;)f(an)m(y)h(c)m(haracter)h(that)f(falls)g +(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 518 y(c)m(haracters,)d +(inclusiv)m(e,)f(using)d(the)h(curren)m(t)f(lo)s(cale's)j(collating)g +(sequence)e(and)f(c)m(haracter)630 628 y(set,)31 b(is)f(matc)m(hed.)42 +b(If)30 b(the)g(\014rst)g(c)m(haracter)i(follo)m(wing)g(the)e(`)p +Ft([)p Fu(')h(is)f(a)h(`)p Ft(!)p Fu(')f(or)g(a)h(`)p +Ft(^)p Fu(')g(then)f(an)m(y)630 737 y(c)m(haracter)c(not)f(enclosed)g +(is)g(matc)m(hed.)40 b(A)25 b(`)p Fq(\000)p Fu(')f(ma)m(y)i(b)s(e)e +(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 847 +y(\014rst)32 b(or)h(last)h(c)m(haracter)h(in)e(the)g(set.)50 +b(A)33 b(`)p Ft(])p Fu(')g(ma)m(y)h(b)s(e)e(matc)m(hed)i(b)m(y)f +(including)g(it)g(as)h(the)630 956 y(\014rst)25 b(c)m(haracter)i(in)e +(the)h(set.)40 b(The)25 b(sorting)h(order)f(of)h(c)m(haracters)h(in)f +(range)g(expressions)f(is)630 1066 y(determined)h(b)m(y)h(the)g(curren) +m(t)f(lo)s(cale)j(and)d(the)h(v)-5 b(alues)27 b(of)g(the)g +Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 1176 y Fu(shell)31 +b(v)-5 b(ariables,)31 b(if)f(set.)630 1312 y(F)-8 b(or)34 +b(example,)g(in)f(the)g(default)g(C)f(lo)s(cale,)k(`)p +Ft([a-dx-z])p Fu(')31 b(is)i(equiv)-5 b(alen)m(t)34 b(to)g(`)p +Ft([abcdxyz])p Fu('.)630 1422 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m +(haracters)h(in)e(dictionary)i(order,)76 b(and)67 b(in)g(these)h(lo)s +(cales)630 1531 y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e +(equiv)-5 b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m +(t)f(b)s(e)f(equiv)-5 b(alen)m(t)630 1641 y(to)34 b(`)p +Ft([aBbCcDdxXyYz])p Fu(',)c(for)j(example.)49 b(T)-8 +b(o)33 b(obtain)h(the)f(traditional)h(in)m(terpretation)h(of)630 +1751 y(ranges)e(in)f(brac)m(k)m(et)i(expressions,)g(y)m(ou)f(can)g +(force)g(the)g(use)f(of)h(the)g(C)f(lo)s(cale)i(b)m(y)f(setting)630 +1860 y(the)c Ft(LC_COLLATE)e Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i +(v)-5 b(ariable)30 b(to)g(the)f(v)-5 b(alue)30 b(`)p +Ft(C)p Fu(',)g(or)f(enable)h(the)630 1970 y Ft(globasciiranges)c +Fu(shell)31 b(option.)630 2106 y(Within)23 b(`)p Ft([)p +Fu(')h(and)e(`)p Ft(])p Fu(',)j Fr(c)m(haracter)g(classes)j +Fu(can)c(b)s(e)e(sp)s(eci\014ed)h(using)f(the)i(syn)m(tax)f +Ft([:)p Fr(class)t Ft(:])p Fu(,)630 2216 y(where)30 b +Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h(follo)m(wing)h(classes)f +(de\014ned)e(in)h(the)h Fm(posix)f Fu(standard:)870 2353 +y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g(digit)g(graph)g(lower) +870 2462 y(print)g(punct)g(space)f(upper)h(word)190 b(xdigit)630 +2599 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h(an)m(y)f(c)m +(haracter)h(b)s(elonging)f(to)g(that)g(class.)75 b(The)41 +b Ft(word)630 2709 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h +(letters,)f(digits,)h(and)d(the)i(c)m(haracter)h(`)p +Ft(_)p Fu('.)630 2845 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p +Ft(])p Fu(',)i(an)e Fr(equiv)-5 b(alence)26 b(class)j +Fu(can)24 b(b)s(e)g(sp)s(eci\014ed)g(using)g(the)g(syn)m(tax)h +Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 2955 y(whic)m(h)29 +b(matc)m(hes)i(all)f(c)m(haracters)h(with)e(the)h(same)g(collation)h(w) +m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 3064 +y(curren)m(t)g(lo)s(cale\))j(as)d(the)h(c)m(haracter)h +Fr(c)p Fu(.)630 3201 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p +Ft(])p Fu(',)j(the)d(syn)m(tax)h Ft([.)p Fr(sym)m(b)s(ol)t +Ft(.])e Fu(matc)m(hes)i(the)g(collating)i(sym)m(b)s(ol)d +Fr(sym)m(b)s(ol)p Fu(.)275 3367 y(If)29 b(the)g Ft(extglob)f +Fu(shell)h(option)h(is)g(enabled)f(using)g(the)h Ft(shopt)e +Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 3477 +y(matc)m(hing)37 b(op)s(erators)e(are)h(recognized.)58 +b(In)35 b(the)g(follo)m(wing)i(description,)g(a)f Fr(pattern-list)j +Fu(is)d(a)g(list)g(of)150 3586 y(one)d(or)f(more)h(patterns)f +(separated)h(b)m(y)f(a)h(`)p Ft(|)p Fu('.)47 b(Comp)s(osite)33 +b(patterns)f(ma)m(y)i(b)s(e)d(formed)h(using)g(one)h(or)150 +3696 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 +3862 y Ft(?\()p Fj(pattern-list)p Ft(\))630 3971 y Fu(Matc)m(hes)h +(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)150 +4135 y Ft(*\()p Fj(pattern-list)p Ft(\))630 4245 y Fu(Matc)m(hes)h +(zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.) +150 4408 y Ft(+\()p Fj(pattern-list)p Ft(\))630 4518 +y Fu(Matc)m(hes)h(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m +(en)i(patterns.)150 4682 y Ft(@\()p Fj(pattern-list)p +Ft(\))630 4791 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.) +150 4955 y Ft(!\()p Fj(pattern-list)p Ft(\))630 5064 +y Fu(Matc)m(hes)h(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g +(patterns.)275 5230 y(Complicated)41 b(extended)f(pattern)g(matc)m +(hing)h(against)h(long)f(strings)f(is)g(slo)m(w,)k(esp)s(ecially)d +(when)150 5340 y(the)29 b(patterns)g(con)m(tain)i(alternations)f(and)f +(the)g(strings)g(con)m(tain)h(m)m(ultiple)g(matc)m(hes.)42 +b(Using)29 b(separate)p eop end +%%Page: 35 41 +TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)150 299 +y(matc)m(hes)38 b(against)g(shorter)e(strings,)i(or)f(using)f(arra)m +(ys)h(of)g(strings)f(instead)h(of)g(a)g(single)g(long)h(string,)150 +408 y(ma)m(y)31 b(b)s(e)f(faster.)150 614 y Fk(3.5.9)63 +b(Quote)41 b(Remo)m(v)-7 b(al)150 760 y Fu(After)32 b(the)g(preceding)g +(expansions,)h(all)f(unquoted)f(o)s(ccurrences)h(of)g(the)h(c)m +(haracters)g(`)p Ft(\\)p Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p +Ft(")p Fu(')150 870 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g +(the)f(ab)s(o)m(v)m(e)i(expansions)e(are)h(remo)m(v)m(ed.)150 +1120 y Fs(3.6)68 b(Redirections)150 1279 y Fu(Before)32 +b(a)f(command)f(is)h(executed,)h(its)f(input)e(and)h(output)h(ma)m(y)g +(b)s(e)f Fr(redirected)k Fu(using)c(a)i(sp)s(ecial)f(no-)150 +1389 y(tation)d(in)m(terpreted)f(b)m(y)f(the)h(shell.)40 +b(Redirection)27 b(allo)m(ws)h(commands')f(\014le)f(handles)g(to)i(b)s +(e)e(duplicated,)150 1498 y(op)s(ened,)i(closed,)i(made)e(to)h(refer)f +(to)h(di\013eren)m(t)f(\014les,)h(and)f(can)g(c)m(hange)h(the)g +(\014les)f(the)g(command)g(reads)150 1608 y(from)39 b(and)g(writes)h +(to.)69 b(Redirection)40 b(ma)m(y)g(also)h(b)s(e)e(used)g(to)h(mo)s +(dify)f(\014le)g(handles)g(in)g(the)h(curren)m(t)150 +1717 y(shell)e(execution)h(en)m(vironmen)m(t.)65 b(The)37 +b(follo)m(wing)j(redirection)f(op)s(erators)f(ma)m(y)g(precede)h(or)f +(app)s(ear)150 1827 y(an)m(ywhere)30 b(within)f(a)h(simple)f(command)h +(or)f(ma)m(y)i(follo)m(w)g(a)f(command.)40 b(Redirections)30 +b(are)g(pro)s(cessed)150 1936 y(in)g(the)h(order)f(they)g(app)s(ear,)g +(from)g(left)h(to)g(righ)m(t.)275 2077 y(Eac)m(h)45 b(redirection)h +(that)f(ma)m(y)h(b)s(e)e(preceded)g(b)m(y)h(a)h(\014le)f(descriptor)f +(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b)s(e)150 2186 +y(preceded)41 b(b)m(y)g(a)h(w)m(ord)f(of)g(the)h(form)f +Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(.)74 b(In)41 b(this)g(case,)k +(for)c(eac)m(h)i(redirection)f(op)s(erator)150 2296 y(except)37 +b Ft(>)p Fu(&-)e(and)g Ft(<)p Fu(&-,)i(the)f(shell)g(will)g(allo)s +(cate)j(a)d(\014le)g(descriptor)f(greater)i(than)f(10)g(and)f(assign)h +(it)150 2406 y(to)e Fi({)p Fr(v)-5 b(arname)5 b Fi(})p +Fu(.)52 b(If)33 b Ft(>)p Fu(&-)g(or)h Ft(<)p Fu(&-)f(is)g(preceded)h(b) +m(y)f Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(,)36 b(the)e(v)-5 +b(alue)34 b(of)f Fr(v)-5 b(arname)39 b Fu(de\014nes)33 +b(the)150 2515 y(\014le)e(descriptor)g(to)h(close.)43 +b(If)31 b Fi({)p Fr(v)-5 b(arname)5 b Fi(})32 b Fu(is)f(supplied,)f +(the)h(redirection)g(p)s(ersists)f(b)s(ey)m(ond)h(the)g(scop)s(e)150 +2625 y(of)42 b(the)f(command,)j(allo)m(wing)f(the)f(shell)g(programmer) +f(to)h(manage)g(the)g(\014le)f(descriptor's)h(lifetime)150 +2734 y(man)m(ually)-8 b(.)275 2875 y(In)27 b(the)i(follo)m(wing)h +(descriptions,)g(if)e(the)h(\014le)g(descriptor)f(n)m(um)m(b)s(er)g(is) +g(omitted,)i(and)f(the)f(\014rst)g(c)m(har-)150 2984 +y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g(is)g(`)p +Ft(<)p Fu(',)i(the)e(redirection)g(refers)g(to)g(the)g(standard)f +(input)f(\(\014le)150 3094 y(descriptor)33 b(0\).)49 +b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f(redirection)g(op)s +(erator)h(is)f(`)p Ft(>)p Fu(',)h(the)f(redirection)g(refers)150 +3203 y(to)e(the)g(standard)e(output)h(\(\014le)h(descriptor)f(1\).)275 +3344 y(The)h(w)m(ord)h(follo)m(wing)i(the)f(redirection)g(op)s(erator)f +(in)g(the)h(follo)m(wing)h(descriptions,)f(unless)e(other-)150 +3453 y(wise)21 b(noted,)i(is)e(sub)5 b(jected)21 b(to)h(brace)f +(expansion,)i(tilde)f(expansion,)h(parameter)e(expansion,)i(command)150 +3563 y(substitution,)31 b(arithmetic)h(expansion,)f(quote)h(remo)m(v)-5 +b(al,)33 b(\014lename)e(expansion,)g(and)f(w)m(ord)h(splitting.)150 +3672 y(If)f(it)h(expands)e(to)i(more)g(than)f(one)h(w)m(ord,)f(Bash)h +(rep)s(orts)e(an)h(error.)275 3813 y(Note)h(that)g(the)g(order)f(of)g +(redirections)h(is)g(signi\014can)m(t.)41 b(F)-8 b(or)31 +b(example,)h(the)e(command)390 3953 y Ft(ls)47 b(>)h +Fj(dirlist)d Ft(2>&1)150 4093 y Fu(directs)28 b(b)s(oth)f(standard)g +(output)g(\(\014le)h(descriptor)f(1\))i(and)e(standard)f(error)i +(\(\014le)g(descriptor)f(2\))h(to)h(the)150 4203 y(\014le)h +Fr(dirlist)p Fu(,)h(while)f(the)h(command)390 4343 y +Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 4484 y Fu(directs)28 +b(only)f(the)h(standard)e(output)i(to)g(\014le)f Fr(dirlist)p +Fu(,)h(b)s(ecause)g(the)f(standard)g(error)g(w)m(as)h(made)f(a)h(cop)m +(y)150 4593 y(of)j(the)f(standard)g(output)g(b)s(efore)g(the)g +(standard)g(output)g(w)m(as)g(redirected)h(to)g Fr(dirlist)p +Fu(.)275 4733 y(Bash)26 b(handles)f(sev)m(eral)j(\014lenames)e(sp)s +(ecially)h(when)f(they)g(are)g(used)g(in)g(redirections,)i(as)e +(describ)s(ed)150 4843 y(in)38 b(the)h(follo)m(wing)h(table.)66 +b(If)38 b(the)h(op)s(erating)g(system)f(on)h(whic)m(h)f(Bash)h(is)f +(running)f(pro)m(vides)h(these)150 4953 y(sp)s(ecial)27 +b(\014les,)g(bash)e(will)i(use)f(them;)h(otherwise)g(it)f(will)h(em)m +(ulate)h(them)e(in)m(ternally)h(with)f(the)g(b)s(eha)m(vior)150 +5062 y(describ)s(ed)j(b)s(elo)m(w.)150 5230 y Ft(/dev/fd/)p +Fj(fd)630 5340 y Fu(If)h Fr(fd)j Fu(is)d(a)h(v)-5 b(alid)31 +b(in)m(teger,)h(\014le)e(descriptor)h Fr(fd)i Fu(is)d(duplicated.)p +eop end +%%Page: 36 42 +TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)150 299 +y Ft(/dev/stdin)630 408 y Fu(File)32 b(descriptor)e(0)h(is)f +(duplicated.)150 577 y Ft(/dev/stdout)630 687 y Fu(File)i(descriptor)e +(1)h(is)f(duplicated.)150 856 y Ft(/dev/stderr)630 965 +y Fu(File)i(descriptor)e(2)h(is)f(duplicated.)150 1134 +y Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 1244 y +Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 b(alid)41 b(hostname)h(or)f(In)m +(ternet)h(address,)i(and)c Fr(p)s(ort)j Fu(is)f(an)f(in)m(teger)i(p)s +(ort)630 1354 y(n)m(um)m(b)s(er)23 b(or)i(service)h(name,)g(Bash)f +(attempts)h(to)f(op)s(en)f(the)h(corresp)s(onding)f(TCP)g(so)s(c)m(k)m +(et.)150 1522 y Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)630 +1632 y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 b(alid)41 +b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c Fr(p)s(ort)j +Fu(is)f(an)f(in)m(teger)i(p)s(ort)630 1742 y(n)m(um)m(b)s(er)23 +b(or)h(service)h(name,)h(Bash)e(attempts)h(to)g(op)s(en)f(the)g +(corresp)s(onding)f(UDP)i(so)s(c)m(k)m(et.)275 1915 y(A)30 +b(failure)h(to)g(op)s(en)e(or)i(create)h(a)e(\014le)h(causes)g(the)f +(redirection)h(to)g(fail.)275 2059 y(Redirections)f(using)e(\014le)i +(descriptors)f(greater)h(than)f(9)h(should)e(b)s(e)h(used)f(with)h +(care,)h(as)g(they)f(ma)m(y)150 2169 y(con\015ict)i(with)f(\014le)h +(descriptors)f(the)g(shell)h(uses)f(in)m(ternally)-8 +b(.)150 2378 y Fk(3.6.1)63 b(Redirecting)40 b(Input)150 +2525 y Fu(Redirection)35 b(of)f(input)f(causes)i(the)f(\014le)g(whose)g +(name)g(results)g(from)g(the)g(expansion)g(of)g Fr(w)m(ord)k +Fu(to)d(b)s(e)150 2634 y(op)s(ened)d(for)g(reading)g(on)g(\014le)h +(descriptor)f Ft(n)p Fu(,)h(or)f(the)g(standard)g(input)f(\(\014le)i +(descriptor)f(0\))h(if)f Ft(n)g Fu(is)h(not)150 2744 +y(sp)s(eci\014ed.)275 2888 y(The)c(general)j(format)e(for)h +(redirecting)g(input)e(is:)390 3032 y Ft([)p Fj(n)p Ft(]<)p +Fj(word)150 3241 y Fk(3.6.2)63 b(Redirecting)40 b(Output)150 +3388 y Fu(Redirection)31 b(of)g(output)f(causes)h(the)f(\014le)h(whose) +f(name)g(results)h(from)e(the)i(expansion)f(of)h Fr(w)m(ord)i +Fu(to)f(b)s(e)150 3497 y(op)s(ened)d(for)g(writing)g(on)g(\014le)h +(descriptor)f Fr(n)p Fu(,)g(or)g(the)h(standard)e(output)h(\(\014le)h +(descriptor)f(1\))h(if)g Fr(n)e Fu(is)i(not)150 3607 +y(sp)s(eci\014ed.)40 b(If)30 b(the)g(\014le)h(do)s(es)f(not)h(exist)g +(it)g(is)f(created;)i(if)e(it)h(do)s(es)f(exist)h(it)g(is)g(truncated)f +(to)h(zero)g(size.)275 3751 y(The)e(general)j(format)e(for)h +(redirecting)g(output)f(is:)390 3895 y Ft([)p Fj(n)p +Ft(]>[|])p Fj(word)275 4039 y Fu(If)g(the)h(redirection)g(op)s(erator)g +(is)g(`)p Ft(>)p Fu(',)g(and)f(the)h Ft(noclobber)d Fu(option)j(to)g +(the)g Ft(set)f Fu(builtin)g(has)h(b)s(een)150 4148 y(enabled,)h(the)g +(redirection)h(will)f(fail)h(if)e(the)i(\014le)e(whose)h(name)g +(results)g(from)f(the)h(expansion)g(of)g Fr(w)m(ord)150 +4258 y Fu(exists)f(and)f(is)g(a)h(regular)g(\014le.)41 +b(If)30 b(the)h(redirection)g(op)s(erator)g(is)f(`)p +Ft(>|)p Fu(',)h(or)f(the)h(redirection)g(op)s(erator)g(is)150 +4367 y(`)p Ft(>)p Fu(')36 b(and)f(the)g Ft(noclobber)e +Fu(option)j(is)g(not)g(enabled,)h(the)e(redirection)h(is)g(attempted)g +(ev)m(en)h(if)e(the)h(\014le)150 4477 y(named)30 b(b)m(y)g +Fr(w)m(ord)k Fu(exists.)150 4686 y Fk(3.6.3)63 b(App)s(ending)42 +b(Redirected)e(Output)150 4833 y Fu(Redirection)23 b(of)e(output)h(in)f +(this)h(fashion)f(causes)h(the)g(\014le)g(whose)f(name)h(results)f +(from)g(the)h(expansion)g(of)150 4942 y Fr(w)m(ord)28 +b Fu(to)e(b)s(e)e(op)s(ened)g(for)h(app)s(ending)e(on)i(\014le)g +(descriptor)g Fr(n)p Fu(,)g(or)g(the)g(standard)f(output)h(\(\014le)g +(descriptor)150 5052 y(1\))31 b(if)f Fr(n)g Fu(is)h(not)f(sp)s +(eci\014ed.)40 b(If)30 b(the)h(\014le)f(do)s(es)g(not)h(exist)g(it)g +(is)f(created.)275 5196 y(The)f(general)j(format)e(for)h(app)s(ending)e +(output)h(is:)390 5340 y Ft([)p Fj(n)p Ft(]>>)p Fj(word)p +eop end +%%Page: 37 43 +TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)150 299 +y Fk(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g(Standard)g +(Error)150 446 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s(oth)f(the)g +(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f(the)g +(standard)f(error)150 555 y(output)d(\(\014le)h(descriptor)f(2\))h(to)g +(b)s(e)f(redirected)h(to)g(the)f(\014le)h(whose)f(name)h(is)f(the)g +(expansion)h(of)f Fr(w)m(ord)p Fu(.)275 712 y(There)f(are)i(t)m(w)m(o)h +(formats)e(for)h(redirecting)g(standard)e(output)h(and)g(standard)f +(error:)390 870 y Ft(&>)p Fj(word)150 1027 y Fu(and)390 +1184 y Ft(>&)p Fj(word)150 1341 y Fu(Of)h(the)g(t)m(w)m(o)i(forms,)e +(the)h(\014rst)e(is)i(preferred.)39 b(This)30 b(is)g(seman)m(tically)j +(equiv)-5 b(alen)m(t)32 b(to)390 1498 y Ft(>)p Fj(word)46 +b Ft(2>&1)275 1655 y Fu(When)41 b(using)g(the)h(second)f(form,)k +Fr(w)m(ord)f Fu(ma)m(y)e(not)g(expand)f(to)h(a)g(n)m(um)m(b)s(er)f(or)g +(`)p Ft(-)p Fu('.)75 b(If)41 b(it)h(do)s(es,)150 1764 +y(other)27 b(redirection)g(op)s(erators)f(apply)h(\(see)g(Duplicating)h +(File)f(Descriptors)h(b)s(elo)m(w\))f(for)f(compatibilit)m(y)150 +1874 y(reasons.)150 2096 y Fk(3.6.5)63 b(App)s(ending)42 +b(Standard)f(Output)g(and)g(Standard)g(Error)150 2243 +y Fu(This)33 b(construct)i(allo)m(ws)g(b)s(oth)f(the)g(standard)g +(output)f(\(\014le)i(descriptor)f(1\))h(and)f(the)g(standard)f(error) +150 2352 y(output)d(\(\014le)h(descriptor)f(2\))h(to)g(b)s(e)f(app)s +(ended)f(to)i(the)f(\014le)h(whose)f(name)g(is)h(the)f(expansion)h(of)f +Fr(w)m(ord)p Fu(.)275 2509 y(The)f(format)i(for)f(app)s(ending)f +(standard)h(output)g(and)f(standard)h(error)g(is:)390 +2666 y Ft(&>>)p Fj(word)150 2823 y Fu(This)g(is)g(seman)m(tically)j +(equiv)-5 b(alen)m(t)32 b(to)390 2980 y Ft(>>)p Fj(word)46 +b Ft(2>&1)275 3138 y Fu(\(see)31 b(Duplicating)h(File)f(Descriptors)g +(b)s(elo)m(w\).)150 3359 y Fk(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150 +3506 y Fu(This)26 b(t)m(yp)s(e)g(of)h(redirection)g(instructs)f(the)g +(shell)h(to)g(read)f(input)g(from)g(the)g(curren)m(t)h(source)f(un)m +(til)h(a)g(line)150 3616 y(con)m(taining)h(only)e Fr(w)m(ord)k +Fu(\(with)c(no)g(trailing)h(blanks\))f(is)g(seen.)40 +b(All)27 b(of)f(the)g(lines)h(read)f(up)f(to)i(that)g(p)s(oin)m(t)150 +3725 y(are)k(then)f(used)f(as)i(the)g(standard)e(input)h(\(or)g(\014le) +h(descriptor)f Fr(n)g Fu(if)g Fr(n)g Fu(is)g(sp)s(eci\014ed\))g(for)h +(a)f(command.)275 3883 y(The)f(format)i(of)g(here-do)s(cumen)m(ts)f +(is:)390 4040 y Ft([)p Fj(n)p Ft(]<<[)p Fq(\000)p Ft(])p +Fj(word)772 4149 y(here-document)390 4259 y(delimiter)275 +4416 y Fu(No)i(parameter)h(and)f(v)-5 b(ariable)32 b(expansion,)h +(command)f(substitution,)h(arithmetic)g(expansion,)g(or)150 +4525 y(\014lename)26 b(expansion)g(is)g(p)s(erformed)e(on)i +Fr(w)m(ord)p Fu(.)39 b(If)25 b(an)m(y)i(part)e(of)h Fr(w)m(ord)j +Fu(is)d(quoted,)i(the)e Fr(delimiter)33 b Fu(is)26 b(the)150 +4635 y(result)33 b(of)g(quote)g(remo)m(v)-5 b(al)34 b(on)f +Fr(w)m(ord)p Fu(,)g(and)f(the)h(lines)g(in)g(the)g(here-do)s(cumen)m(t) +g(are)g(not)g(expanded.)47 b(If)150 4745 y Fr(w)m(ord)26 +b Fu(is)c(unquoted,)h(all)g(lines)g(of)g(the)f(here-do)s(cumen)m(t)g +(are)h(sub)5 b(jected)22 b(to)h(parameter)g(expansion,)h(com-)150 +4854 y(mand)30 b(substitution,)g(and)g(arithmetic)h(expansion,)g(the)f +(c)m(haracter)i(sequence)f Ft(\\newline)d Fu(is)j(ignored,)150 +4964 y(and)f(`)p Ft(\\)p Fu(')g(m)m(ust)h(b)s(e)e(used)h(to)h(quote)g +(the)g(c)m(haracters)g(`)p Ft(\\)p Fu(',)g(`)p Ft($)p +Fu(',)g(and)f(`)p Ft(`)p Fu('.)275 5121 y(If)21 b(the)i(redirection)g +(op)s(erator)g(is)f(`)p Ft(<<-)p Fu(',)i(then)e(all)h(leading)g(tab)g +(c)m(haracters)h(are)e(stripp)s(ed)f(from)h(input)150 +5230 y(lines)33 b(and)f(the)h(line)h(con)m(taining)g +Fr(delimiter)p Fu(.)49 b(This)32 b(allo)m(ws)i(here-do)s(cumen)m(ts)f +(within)f(shell)i(scripts)e(to)150 5340 y(b)s(e)e(inden)m(ted)g(in)g(a) +h(natural)f(fashion.)p eop end +%%Page: 38 44 +TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)150 299 +y Fk(3.6.7)63 b(Here)41 b(Strings)150 446 y Fu(A)30 b(v)-5 +b(arian)m(t)32 b(of)e(here)h(do)s(cumen)m(ts,)f(the)g(format)h(is:)390 +600 y Ft([)p Fj(n)p Ft(]<<<)46 b Fj(word)275 753 y Fu(The)29 +b Fr(w)m(ord)k Fu(undergo)s(es)c(tilde)i(expansion,)f(parameter)h(and)e +(v)-5 b(ariable)31 b(expansion,)f(command)g(sub-)150 +863 y(stitution,)f(arithmetic)f(expansion,)g(and)f(quote)h(remo)m(v)-5 +b(al.)41 b(Filename)29 b(expansion)e(and)f(w)m(ord)h(splitting)150 +973 y(are)35 b(not)g(p)s(erformed.)51 b(The)34 b(result)h(is)g +(supplied)e(as)i(a)f(single)i(string,)f(with)g(a)g(newline)f(app)s +(ended,)g(to)150 1082 y(the)d(command)f(on)g(its)h(standard)e(input)h +(\(or)g(\014le)h(descriptor)f Fr(n)g Fu(if)g Fr(n)g Fu(is)h(sp)s +(eci\014ed\).)150 1301 y Fk(3.6.8)63 b(Duplicating)41 +b(File)g(Descriptors)150 1448 y Fu(The)30 b(redirection)h(op)s(erator) +390 1602 y Ft([)p Fj(n)p Ft(]<&)p Fj(word)150 1755 y +Fu(is)k(used)e(to)j(duplicate)f(input)f(\014le)g(descriptors.)53 +b(If)34 b Fr(w)m(ord)k Fu(expands)c(to)h(one)g(or)g(more)g(digits,)h +(the)f(\014le)150 1865 y(descriptor)e(denoted)h(b)m(y)f +Fr(n)g Fu(is)g(made)h(to)g(b)s(e)f(a)g(cop)m(y)h(of)g(that)g(\014le)f +(descriptor.)50 b(If)33 b(the)h(digits)g(in)f Fr(w)m(ord)150 +1975 y Fu(do)c(not)h(sp)s(ecify)f(a)h(\014le)f(descriptor)g(op)s(en)g +(for)g(input,)g(a)h(redirection)g(error)f(o)s(ccurs.)40 +b(If)29 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)150 2084 y(to)31 +b(`)p Ft(-)p Fu(',)g(\014le)g(descriptor)g Fr(n)f Fu(is)g(closed.)43 +b(If)30 b Fr(n)g Fu(is)g(not)h(sp)s(eci\014ed,)f(the)h(standard)f +(input)g(\(\014le)h(descriptor)f(0\))150 2194 y(is)g(used.)275 +2348 y(The)f(op)s(erator)390 2502 y Ft([)p Fj(n)p Ft(]>&)p +Fj(word)150 2655 y Fu(is)40 b(used)g(similarly)h(to)g(duplicate)f +(output)g(\014le)h(descriptors.)70 b(If)40 b Fr(n)f Fu(is)i(not)f(sp)s +(eci\014ed,)i(the)f(standard)150 2765 y(output)30 b(\(\014le)g +(descriptor)g(1\))h(is)f(used.)39 b(If)30 b(the)g(digits)h(in)e +Fr(w)m(ord)34 b Fu(do)29 b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g +(op)s(en)150 2875 y(for)35 b(output,)h(a)g(redirection)g(error)e(o)s +(ccurs.)55 b(If)35 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)37 +b(to)f(`)p Ft(-)p Fu(',)h(\014le)e(descriptor)g Fr(n)g +Fu(is)g(closed.)150 2984 y(As)f(a)g(sp)s(ecial)h(case,)h(if)e +Fr(n)f Fu(is)h(omitted,)i(and)e Fr(w)m(ord)j Fu(do)s(es)d(not)g(expand) +f(to)i(one)f(or)g(more)g(digits)h(or)f(`)p Ft(-)p Fu(',)150 +3094 y(the)d(standard)e(output)h(and)g(standard)f(error)h(are)h +(redirected)g(as)g(describ)s(ed)e(previously)-8 b(.)150 +3312 y Fk(3.6.9)63 b(Mo)m(ving)41 b(File)h(Descriptors)150 +3459 y Fu(The)30 b(redirection)h(op)s(erator)390 3613 +y Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150 3767 y Fu(mo)m(v)m(es)i +(the)f(\014le)g(descriptor)f Fr(digit)k Fu(to)d(\014le)g(descriptor)g +Fr(n)p Fu(,)f(or)h(the)g(standard)f(input)f(\(\014le)j(descriptor)e +(0\))150 3876 y(if)f Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)40 +b Fr(digit)33 b Fu(is)e(closed)g(after)g(b)s(eing)f(duplicated)g(to)h +Fr(n)p Fu(.)275 4030 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s +(erator)390 4184 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p +Ft(-)150 4338 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f +Fr(digit)k Fu(to)e(\014le)f(descriptor)g Fr(n)p Fu(,)g(or)g(the)g +(standard)f(output)h(\(\014le)g(descriptor)g(1\))150 +4448 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150 +4666 y Fk(3.6.10)63 b(Op)s(ening)42 b(File)g(Descriptors)g(for)g +(Reading)e(and)h(W)-10 b(riting)150 4813 y Fu(The)30 +b(redirection)h(op)s(erator)390 4967 y Ft([)p Fj(n)p +Ft(]<>)p Fj(word)150 5121 y Fu(causes)39 b(the)g(\014le)g(whose)g(name) +g(is)g(the)g(expansion)g(of)g Fr(w)m(ord)j Fu(to)d(b)s(e)g(op)s(ened)f +(for)g(b)s(oth)h(reading)g(and)150 5230 y(writing)33 +b(on)f(\014le)h(descriptor)f Fr(n)p Fu(,)h(or)g(on)f(\014le)h +(descriptor)g(0)g(if)f Fr(n)g Fu(is)h(not)g(sp)s(eci\014ed.)47 +b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 5340 y(exist,)e(it)g(is)g +(created.)p eop end +%%Page: 39 45 +TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)150 299 +y Fs(3.7)68 b(Executing)46 b(Commands)150 523 y Fk(3.7.1)63 +b(Simple)41 b(Command)h(Expansion)150 670 y Fu(When)33 +b(a)g(simple)g(command)g(is)g(executed,)h(the)g(shell)f(p)s(erforms)e +(the)i(follo)m(wing)i(expansions,)e(assign-)150 779 y(men)m(ts,)e(and)f +(redirections,)h(from)f(left)h(to)g(righ)m(t,)g(in)f(the)h(follo)m +(wing)h(order.)199 913 y(1.)61 b(The)38 b(w)m(ords)f(that)i(the)g +(parser)e(has)h(mark)m(ed)g(as)h(v)-5 b(ariable)39 b(assignmen)m(ts)g +(\(those)g(preceding)f(the)330 1023 y(command)30 b(name\))h(and)f +(redirections)h(are)f(sa)m(v)m(ed)i(for)e(later)h(pro)s(cessing.)199 +1157 y(2.)61 b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5 +b(ariable)40 b(assignmen)m(ts)h(or)e(redirections)i(are)f(expanded)f +(\(see)h(Sec-)330 1267 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g +(22\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h +(the)e(\014rst)330 1376 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f +(the)g(name)h(of)f(the)h(command)f(and)f(the)i(remaining)f(w)m(ords)g +(are)g(the)h(argu-)330 1486 y(men)m(ts.)199 1620 y(3.)61 +b(Redirections)25 b(are)f(p)s(erformed)f(as)h(describ)s(ed)f(ab)s(o)m +(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(35\).)199 +1754 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p +Fu(')h(in)e(eac)m(h)j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es) +e(tilde)i(expansion,)g(parameter)330 1864 y(expansion,)49 +b(command)d(substitution,)j(arithmetic)d(expansion,)k(and)45 +b(quote)h(remo)m(v)-5 b(al)46 b(b)s(efore)330 1973 y(b)s(eing)30 +b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 2132 y(If)32 +b(no)i(command)f(name)g(results,)h(the)g(v)-5 b(ariable)34 +b(assignmen)m(ts)g(a\013ect)h(the)f(curren)m(t)f(shell)h(en)m(viron-) +150 2242 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 b(ariables)26 +b(are)g(added)f(to)h(the)f(en)m(vironmen)m(t)h(of)g(the)f(executed)h +(command)g(and)150 2351 y(do)35 b(not)f(a\013ect)j(the)d(curren)m(t)h +(shell)g(en)m(vironmen)m(t.)54 b(If)34 b(an)m(y)h(of)g(the)f(assignmen) +m(ts)i(attempts)f(to)h(assign)150 2461 y(a)j(v)-5 b(alue)39 +b(to)g(a)g(readonly)f(v)-5 b(ariable,)42 b(an)c(error)g(o)s(ccurs,)j +(and)c(the)i(command)f(exits)h(with)g(a)f(non-zero)150 +2570 y(status.)275 2705 y(If)33 b(no)g(command)g(name)h(results,)g +(redirections)g(are)g(p)s(erformed,)f(but)g(do)h(not)f(a\013ect)i(the)f +(curren)m(t)150 2814 y(shell)d(en)m(vironmen)m(t.)41 +b(A)30 b(redirection)h(error)f(causes)h(the)g(command)f(to)h(exit)g +(with)f(a)h(non-zero)g(status.)275 2948 y(If)26 b(there)i(is)f(a)h +(command)f(name)h(left)g(after)g(expansion,)g(execution)h(pro)s(ceeds)e +(as)g(describ)s(ed)f(b)s(elo)m(w.)150 3058 y(Otherwise,)39 +b(the)e(command)g(exits.)62 b(If)37 b(one)g(of)g(the)h(expansions)f +(con)m(tained)h(a)g(command)f(substitu-)150 3167 y(tion,)i(the)d(exit)h +(status)g(of)f(the)h(command)f(is)h(the)f(exit)h(status)g(of)f(the)h +(last)g(command)f(substitution)150 3277 y(p)s(erformed.)55 +b(If)35 b(there)g(w)m(ere)h(no)g(command)f(substitutions,)i(the)e +(command)h(exits)g(with)f(a)h(status)g(of)150 3387 y(zero.)150 +3585 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h(Execution)150 +3732 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h(in)m(to)h(w)m +(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g(and)f(an)150 +3842 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g(follo)m(wing)g +(actions)h(are)f(tak)m(en.)199 3976 y(1.)61 b(If)24 b(the)g(command)g +(name)g(con)m(tains)i(no)e(slashes,)i(the)e(shell)h(attempts)g(to)g(lo) +s(cate)h(it.)39 b(If)24 b(there)g(exists)330 4085 y(a)h(shell)g +(function)f(b)m(y)g(that)h(name,)h(that)f(function)f(is)h(in)m(v)m(ok)m +(ed)h(as)e(describ)s(ed)g(in)g(Section)h(3.3)h([Shell)330 +4195 y(F)-8 b(unctions],)31 b(page)h(18.)199 4329 y(2.)61 +b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e(function,)j(the)e +(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h(of)g(shell)330 +4439 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g(that)h(builtin) +f(is)g(in)m(v)m(ok)m(ed.)199 4573 y(3.)61 b(If)40 b(the)g(name)h(is)f +(neither)h(a)f(shell)h(function)f(nor)g(a)g(builtin,)j(and)d(con)m +(tains)h(no)g(slashes,)i(Bash)330 4682 y(searc)m(hes)c(eac)m(h)g +(elemen)m(t)g(of)g Ft($PATH)d Fu(for)i(a)g(directory)h(con)m(taining)g +(an)f(executable)h(\014le)f(b)m(y)g(that)330 4792 y(name.)56 +b(Bash)36 b(uses)f(a)h(hash)e(table)j(to)f(remem)m(b)s(er)f(the)h(full) +f(pathnames)g(of)h(executable)h(\014les)e(to)330 4902 +y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f Fu(searc)m(hes)i(\(see)f(the)g +(description)g(of)f Ft(hash)g Fu(in)g(Section)i(4.1)f([Bourne)g(Shell) +330 5011 y(Builtins],)37 b(page)f(44\).)55 b(A)35 b(full)g(searc)m(h)g +(of)g(the)g(directories)h(in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h +(if)g(the)330 5121 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f +(table.)39 b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g +(shell)g(searc)m(hes)330 5230 y(for)e(a)h(de\014ned)e(shell)h(function) +h(named)e Ft(command_not_found_handle)p Fu(.)32 b(If)23 +b(that)h(function)f(exists,)330 5340 y(it)33 b(is)f(in)m(v)m(ok)m(ed)i +(in)e(a)h(separate)h(execution)f(en)m(vironmen)m(t)g(with)f(the)h +(original)h(command)e(and)g(the)p eop end +%%Page: 40 46 +TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)330 299 +y(original)26 b(command's)e(argumen)m(ts)h(as)g(its)g(argumen)m(ts,)h +(and)e(the)h(function's)f(exit)i(status)f(b)s(ecomes)330 +408 y(the)j(exit)g(status)g(of)f(that)h(subshell.)39 +b(If)27 b(that)h(function)f(is)h(not)g(de\014ned,)f(the)g(shell)h(prin) +m(ts)f(an)g(error)330 518 y(message)k(and)f(returns)f(an)i(exit)g +(status)g(of)f(127.)199 654 y(4.)61 b(If)33 b(the)g(searc)m(h)h(is)g +(successful,)g(or)f(if)g(the)h(command)f(name)g(con)m(tains)i(one)f(or) +f(more)g(slashes,)i(the)330 763 y(shell)g(executes)h(the)f(named)f +(program)g(in)h(a)g(separate)h(execution)f(en)m(vironmen)m(t.)55 +b(Argumen)m(t)35 b(0)330 873 y(is)30 b(set)h(to)h(the)e(name)h(giv)m +(en,)g(and)f(the)h(remaining)f(argumen)m(ts)h(to)g(the)g(command)f(are) +h(set)g(to)g(the)330 983 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 +b(.)199 1118 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g +(the)f(\014le)h(is)g(not)g(in)f(executable)j(format,)f(and)e(the)h +(\014le)g(is)g(not)330 1228 y(a)d(directory)-8 b(,)34 +b(it)f(is)g(assumed)e(to)j(b)s(e)d(a)i Fr(shell)g(script)h +Fu(and)e(the)h(shell)f(executes)i(it)f(as)g(describ)s(ed)e(in)330 +1338 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(42.)199 +1473 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async) +m(hronously)-8 b(,)42 b(the)c(shell)h(w)m(aits)h(for)e(the)h(command)f +(to)330 1583 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150 +1785 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150 +1932 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t) +p Fu(,)h(whic)m(h)e(consists)h(of)f(the)h(follo)m(wing:)225 +2069 y Fq(\017)60 b Fu(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f +(shell)h(at)g(in)m(v)m(o)s(cation,)j(as)c(mo)s(di\014ed)g(b)m(y)g +(redirections)h(supplied)e(to)330 2178 y(the)g Ft(exec)e +Fu(builtin)225 2314 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking) +h(directory)g(as)f(set)h(b)m(y)f Ft(cd)p Fu(,)g Ft(pushd)p +Fu(,)g(or)g Ft(popd)p Fu(,)g(or)g(inherited)g(b)m(y)g(the)h(shell)f(at) +330 2424 y(in)m(v)m(o)s(cation)225 2560 y Fq(\017)60 +b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g(as)h(set)g(b)m(y)f +Ft(umask)f Fu(or)h(inherited)g(from)g(the)h(shell's)f(paren)m(t)225 +2695 y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m(y)f +Ft(trap)225 2831 y Fq(\017)60 b Fu(shell)30 b(parameters)f(that)h(are)g +(set)g(b)m(y)g(v)-5 b(ariable)30 b(assignmen)m(t)g(or)g(with)f +Ft(set)f Fu(or)i(inherited)f(from)g(the)330 2941 y(shell's)i(paren)m(t) +f(in)g(the)h(en)m(vironmen)m(t)225 3077 y Fq(\017)60 +b Fu(shell)44 b(functions)f(de\014ned)f(during)h(execution)i(or)e +(inherited)h(from)f(the)h(shell's)g(paren)m(t)f(in)h(the)330 +3186 y(en)m(vironmen)m(t)225 3322 y Fq(\017)60 b Fu(options)33 +b(enabled)g(at)h(in)m(v)m(o)s(cation)h(\(either)f(b)m(y)f(default)g(or) +g(with)g(command-line)g(argumen)m(ts\))h(or)330 3432 +y(b)m(y)c Ft(set)225 3567 y Fq(\017)60 b Fu(options)31 +b(enabled)f(b)m(y)g Ft(shopt)f Fu(\(see)j(Section)f(4.3.2)h([The)e +(Shopt)g(Builtin],)h(page)g(66\))225 3703 y Fq(\017)60 +b Fu(shell)31 b(aliases)g(de\014ned)f(with)g Ft(alias)f +Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(94\))225 +3839 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f +Fm(id)p Fu(s,)55 b(including)49 b(those)i(of)e(bac)m(kground)h(jobs)f +(\(see)i(Section)g(3.2.4)g([Lists],)330 3948 y(page)31 +b(9\),)g(the)g(v)-5 b(alue)31 b(of)f Ft($$)p Fu(,)g(and)g(the)h(v)-5 +b(alue)31 b(of)f Ft($PPID)275 4112 y Fu(When)k(a)g(simple)h(command)f +(other)g(than)g(a)h(builtin)f(or)g(shell)h(function)f(is)g(to)h(b)s(e)f +(executed,)i(it)f(is)150 4221 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g +(separate)h(execution)g(en)m(vironmen)m(t)g(that)f(consists)g(of)h(the) +f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 4331 y(noted,)31 +b(the)f(v)-5 b(alues)31 b(are)g(inherited)f(from)g(the)g(shell.)225 +4468 y Fq(\017)60 b Fu(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e +(an)m(y)h(mo)s(di\014cations)h(and)e(additions)h(sp)s(eci\014ed)g(b)m +(y)g(redirections)g(to)330 4578 y(the)g(command)225 4713 +y Fq(\017)60 b Fu(the)31 b(curren)m(t)f(w)m(orking)g(directory)225 +4849 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 +4985 y Fq(\017)60 b Fu(shell)32 b(v)-5 b(ariables)33 +b(and)e(functions)h(mark)m(ed)g(for)g(exp)s(ort,)g(along)h(with)f(v)-5 +b(ariables)32 b(exp)s(orted)g(for)g(the)330 5095 y(command,)e(passed)g +(in)g(the)h(en)m(vironmen)m(t)g(\(see)g(Section)g(3.7.4)i([En)m +(vironmen)m(t],)e(page)g(41\))225 5230 y Fq(\017)60 b +Fu(traps)31 b(caugh)m(t)h(b)m(y)f(the)g(shell)h(are)f(reset)h(to)g(the) +f(v)-5 b(alues)32 b(inherited)e(from)h(the)g(shell's)h(paren)m(t,)g +(and)330 5340 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored)p +eop end +%%Page: 41 47 +TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)275 299 +y(A)41 b(command)g(in)m(v)m(ok)m(ed)i(in)e(this)h(separate)g(en)m +(vironmen)m(t)g(cannot)g(a\013ect)h(the)f(shell's)g(execution)150 +408 y(en)m(vironmen)m(t.)275 552 y(Command)35 b(substitution,)j +(commands)e(group)s(ed)f(with)i(paren)m(theses,)h(and)e(async)m +(hronous)g(com-)150 662 y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i +(subshell)e(en)m(vironmen)m(t)h(that)h(is)f(a)g(duplicate)h(of)f(the)g +(shell)g(en)m(vironmen)m(t,)150 772 y(except)i(that)g(traps)f(caugh)m +(t)h(b)m(y)f(the)h(shell)f(are)g(reset)h(to)g(the)f(v)-5 +b(alues)35 b(that)g(the)f(shell)h(inherited)e(from)150 +881 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49 +b(Builtin)32 b(commands)g(that)h(are)g(in)m(v)m(ok)m(ed)h(as)e(part)g +(of)h(a)f(pip)s(eline)g(are)h(also)150 991 y(executed)41 +b(in)f(a)h(subshell)e(en)m(vironmen)m(t.)72 b(Changes)40 +b(made)g(to)h(the)g(subshell)e(en)m(vironmen)m(t)i(cannot)150 +1100 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 +1244 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions) +g(inherit)g(the)g(v)-5 b(alue)31 b(of)f(the)h Ft(-e)e +Fu(option)150 1354 y(from)23 b(the)i(paren)m(t)f(shell.)38 +b(When)24 b(not)g(in)g Fm(posix)f Fu(mo)s(de,)i(Bash)f(clears)h(the)f +Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 1498 +y(If)f(a)h(command)g(is)g(follo)m(w)m(ed)h(b)m(y)f(a)g(`)p +Ft(&)p Fu(')g(and)f(job)h(con)m(trol)h(is)f(not)g(activ)m(e,)k(the)c +(default)g(standard)f(input)150 1607 y(for)35 b(the)g(command)g(is)g +(the)g(empt)m(y)h(\014le)f Ft(/dev/null)p Fu(.)52 b(Otherwise,)37 +b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 1717 +y(the)c(\014le)f(descriptors)g(of)h(the)f(calling)i(shell)f(as)f(mo)s +(di\014ed)g(b)m(y)g(redirections.)150 1926 y Fk(3.7.4)63 +b(En)m(vironmen)m(t)150 2073 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m +(ok)m(ed)h(it)g(is)f(giv)m(en)g(an)g(arra)m(y)g(of)g(strings)g(called)h +(the)f Fr(en)m(vironmen)m(t)p Fu(.)41 b(This)28 b(is)h(a)150 +2182 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g +Ft(name=value)p Fu(.)275 2326 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w) +m(a)m(ys)g(to)f(manipulate)f(the)h(en)m(vironmen)m(t.)69 +b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 2436 +y(scans)g(its)h(o)m(wn)f(en)m(vironmen)m(t)h(and)f(creates)i(a)f +(parameter)f(for)g(eac)m(h)i(name)e(found,)i(automatically)150 +2545 y(marking)26 b(it)g(for)g Fr(exp)s(ort)h Fu(to)g(c)m(hild)f(pro)s +(cesses.)39 b(Executed)26 b(commands)g(inherit)g(the)g(en)m(vironmen)m +(t.)39 b(The)150 2655 y Ft(export)c Fu(and)i(`)p Ft(declare)29 +b(-x)p Fu(')36 b(commands)h(allo)m(w)i(parameters)e(and)g(functions)g +(to)h(b)s(e)e(added)h(to)h(and)150 2765 y(deleted)21 +b(from)f(the)h(en)m(vironmen)m(t.)38 b(If)20 b(the)h(v)-5 +b(alue)21 b(of)g(a)g(parameter)g(in)f(the)g(en)m(vironmen)m(t)i(is)e +(mo)s(di\014ed,)i(the)150 2874 y(new)31 b(v)-5 b(alue)32 +b(b)s(ecomes)f(part)h(of)f(the)h(en)m(vironmen)m(t,)g(replacing)h(the)e +(old.)44 b(The)31 b(en)m(vironmen)m(t)h(inherited)150 +2984 y(b)m(y)f(an)m(y)g(executed)h(command)f(consists)g(of)g(the)g +(shell's)h(initial)g(en)m(vironmen)m(t,)g(whose)f(v)-5 +b(alues)31 b(ma)m(y)h(b)s(e)150 3093 y(mo)s(di\014ed)26 +b(in)g(the)h(shell,)h(less)f(an)m(y)g(pairs)f(remo)m(v)m(ed)i(b)m(y)f +(the)g Ft(unset)e Fu(and)h(`)p Ft(export)j(-n)p Fu(')e(commands,)g +(plus)150 3203 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d +Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 3347 +y(The)j(en)m(vironmen)m(t)i(for)f(an)m(y)g(simple)h(command)f(or)g +(function)g(ma)m(y)g(b)s(e)g(augmen)m(ted)h(temp)s(orarily)150 +3457 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h +(as)e(describ)s(ed)g(in)g(Section)i(3.4)g([Shell)e(P)m(arameters],)150 +3566 y(page)g(20.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g +(a\013ect)f(only)g(the)f(en)m(vironmen)m(t)h(seen)g(b)m(y)f(that)h +(command.)275 3710 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g +(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(62\),)h(then)e(all)g +(parameter)150 3820 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m +(vironmen)m(t)g(for)g(a)g(command,)f(not)h(just)f(those)i(that)f +(precede)g(the)150 3929 y(command)g(name.)275 4073 y(When)h(Bash)h(in)m +(v)m(ok)m(es)i(an)e(external)h(command,)f(the)g(v)-5 +b(ariable)33 b(`)p Ft($_)p Fu(')f(is)g(set)h(to)f(the)g(full)g +(pathname)150 4183 y(of)f(the)f(command)g(and)g(passed)g(to)h(that)g +(command)f(in)g(its)h(en)m(vironmen)m(t.)150 4392 y Fk(3.7.5)63 +b(Exit)40 b(Status)150 4538 y Fu(The)26 b(exit)h(status)f(of)g(an)g +(executed)h(command)f(is)g(the)h(v)-5 b(alue)26 b(returned)f(b)m(y)h +(the)g Fr(w)m(aitpid)k Fu(system)d(call)g(or)150 4648 +y(equiv)-5 b(alen)m(t)33 b(function.)45 b(Exit)32 b(statuses)g(fall)g +(b)s(et)m(w)m(een)h(0)f(and)f(255,)i(though,)f(as)g(explained)g(b)s +(elo)m(w,)h(the)150 4758 y(shell)i(ma)m(y)g(use)f(v)-5 +b(alues)35 b(ab)s(o)m(v)m(e)g(125)h(sp)s(ecially)-8 b(.)54 +b(Exit)35 b(statuses)g(from)f(shell)h(builtins)f(and)f(comp)s(ound)150 +4867 y(commands)j(are)g(also)h(limited)g(to)g(this)f(range.)58 +b(Under)36 b(certain)h(circumstances,)h(the)e(shell)h(will)f(use)150 +4977 y(sp)s(ecial)31 b(v)-5 b(alues)31 b(to)g(indicate)g(sp)s(eci\014c) +f(failure)h(mo)s(des.)275 5121 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s +(oses,)e(a)j(command)e(whic)m(h)h(exits)g(with)g(a)g(zero)g(exit)h +(status)f(has)f(succeeded.)150 5230 y(A)e(non-zero)h(exit)g(status)g +(indicates)g(failure.)40 b(This)28 b(seemingly)i(coun)m(ter-in)m +(tuitiv)m(e)i(sc)m(heme)e(is)f(used)g(so)150 5340 y(there)34 +b(is)g(one)g(w)m(ell-de\014ned)g(w)m(a)m(y)g(to)h(indicate)g(success)f +(and)f(a)h(v)-5 b(ariet)m(y)35 b(of)f(w)m(a)m(ys)h(to)f(indicate)h(v)-5 +b(arious)p eop end +%%Page: 42 48 +TeXDict begin 42 47 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(42)150 299 +y(failure)38 b(mo)s(des.)62 b(When)37 b(a)h(command)f(terminates)i(on)e +(a)h(fatal)h(signal)g(whose)e(n)m(um)m(b)s(er)f(is)i +Fr(N)p Fu(,)i(Bash)150 408 y(uses)30 b(the)g(v)-5 b(alue)31 +b(128)p Ft(+)p Fr(N)42 b Fu(as)30 b(the)h(exit)g(status.)275 +537 y(If)k(a)h(command)g(is)g(not)g(found,)g(the)g(c)m(hild)h(pro)s +(cess)e(created)i(to)g(execute)g(it)g(returns)d(a)j(status)f(of)150 +647 y(127.)42 b(If)30 b(a)h(command)f(is)g(found)f(but)h(is)g(not)h +(executable,)h(the)f(return)e(status)i(is)f(126.)275 +776 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f(during) +g(expansion)h(or)g(redirection,)i(the)f(exit)g(status)150 +885 y(is)c(greater)i(than)e(zero.)275 1014 y(The)38 b(exit)h(status)g +(is)g(used)f(b)m(y)g(the)h(Bash)g(conditional)h(commands)e(\(see)h +(Section)h(3.2.5.2)h([Con-)150 1123 y(ditional)i(Constructs],)h(page)f +(11\))g(and)e(some)i(of)f(the)g(list)g(constructs)g(\(see)h(Section)f +(3.2.4)i([Lists],)150 1233 y(page)31 b(9\).)275 1362 +y(All)40 b(of)g(the)h(Bash)f(builtins)f(return)g(an)h(exit)h(status)g +(of)f(zero)h(if)f(they)g(succeed)g(and)g(a)g(non-zero)150 +1471 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m(y)g(b)s(e)f(used)g +(b)m(y)g(the)h(conditional)h(and)e(list)h(constructs.)50 +b(All)35 b(builtins)150 1581 y(return)e(an)i(exit)g(status)g(of)f(2)h +(to)g(indicate)h(incorrect)f(usage,)h(generally)g(in)m(v)-5 +b(alid)35 b(options)g(or)f(missing)150 1691 y(argumen)m(ts.)150 +1878 y Fk(3.7.6)63 b(Signals)150 2025 y Fu(When)36 b(Bash)g(is)h(in)m +(teractiv)m(e,)j(in)c(the)h(absence)f(of)h(an)m(y)f(traps,)i(it)e +(ignores)h Ft(SIGTERM)d Fu(\(so)j(that)g(`)p Ft(kill)150 +2135 y(0)p Fu(')c(do)s(es)g(not)g(kill)g(an)g(in)m(teractiv)m(e)j +(shell\),)f(and)d Ft(SIGINT)f Fu(is)i(caugh)m(t)h(and)f(handled)f(\(so) +h(that)h(the)f Ft(wait)150 2244 y Fu(builtin)24 b(is)h(in)m +(terruptible\).)39 b(When)24 b(Bash)g(receiv)m(es)j(a)d +Ft(SIGINT)p Fu(,)h(it)g(breaks)f(out)h(of)f(an)m(y)h(executing)h(lo)s +(ops.)150 2354 y(In)31 b(all)h(cases,)h(Bash)f(ignores)g +Ft(SIGQUIT)p Fu(.)42 b(If)32 b(job)f(con)m(trol)i(is)e(in)h(e\013ect)h +(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 2464 y(page)f(107\),)h +(Bash)f(ignores)g Ft(SIGTTIN)p Fu(,)d Ft(SIGTTOU)p Fu(,)h(and)h +Ft(SIGTSTP)p Fu(.)275 2592 y(Non-builtin)h(commands)g(started)g(b)m(y)g +(Bash)h(ha)m(v)m(e)g(signal)g(handlers)e(set)i(to)g(the)g(v)-5 +b(alues)31 b(inherited)150 2702 y(b)m(y)37 b(the)h(shell)g(from)f(its)h +(paren)m(t.)62 b(When)38 b(job)f(con)m(trol)i(is)e(not)h(in)f +(e\013ect,)k(async)m(hronous)c(commands)150 2812 y(ignore)f +Ft(SIGINT)e Fu(and)h Ft(SIGQUIT)e Fu(in)j(addition)f(to)i(these)f +(inherited)f(handlers.)55 b(Commands)35 b(run)f(as)i(a)150 +2921 y(result)27 b(of)h(command)f(substitution)h(ignore)g(the)g(k)m +(eyb)s(oard-generated)g(job)g(con)m(trol)h(signals)f +Ft(SIGTTIN)p Fu(,)150 3031 y Ft(SIGTTOU)p Fu(,)h(and)g +Ft(SIGTSTP)p Fu(.)275 3160 y(The)h(shell)i(exits)g(b)m(y)f(default)g +(up)s(on)f(receipt)i(of)f(a)h Ft(SIGHUP)p Fu(.)42 b(Before)32 +b(exiting,)h(an)e(in)m(teractiv)m(e)j(shell)150 3269 +y(resends)41 b(the)i Ft(SIGHUP)e Fu(to)i(all)g(jobs,)i(running)c(or)h +(stopp)s(ed.)76 b(Stopp)s(ed)41 b(jobs)h(are)h(sen)m(t)g +Ft(SIGCONT)d Fu(to)150 3379 y(ensure)32 b(that)h(they)g(receiv)m(e)i +(the)e Ft(SIGHUP)p Fu(.)47 b(T)-8 b(o)33 b(prev)m(en)m(t)g(the)g(shell) +g(from)g(sending)f(the)h Ft(SIGHUP)e Fu(signal)150 3488 +y(to)i(a)g(particular)g(job,)g(it)g(should)f(b)s(e)g(remo)m(v)m(ed)h +(from)g(the)f(jobs)g(table)i(with)e(the)h Ft(disown)e +Fu(builtin)h(\(see)150 3598 y(Section)c(7.2)g([Job)e(Con)m(trol)i +(Builtins],)g(page)g(108\))h(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i +Ft(SIGHUP)c Fu(using)i Ft(disown)150 3707 y(-h)p Fu(.)275 +3836 y(If)38 b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f +(set)i(with)f Ft(shopt)e Fu(\(see)j(Section)g(4.3.2)h([The)e(Shopt)150 +3946 y(Builtin],)31 b(page)g(66\),)h(Bash)f(sends)e(a)i +Ft(SIGHUP)e Fu(to)i(all)g(jobs)f(when)f(an)i(in)m(teractiv)m(e)i(login) +e(shell)g(exits.)275 4075 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g +(command)f(to)i(complete)g(and)e(receiv)m(es)j(a)e(signal)h(for)e(whic) +m(h)h(a)g(trap)150 4184 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g +(not)g(b)s(e)f(executed)i(un)m(til)f(the)g(command)f(completes.)55 +b(When)35 b(Bash)g(is)150 4294 y(w)m(aiting)j(for)f(an)g(async)m +(hronous)g(command)g(via)h(the)f Ft(wait)f Fu(builtin,)i(the)g +(reception)g(of)f(a)g(signal)h(for)150 4403 y(whic)m(h)d(a)g(trap)g +(has)g(b)s(een)f(set)h(will)h(cause)f(the)g Ft(wait)f +Fu(builtin)h(to)g(return)f(immediately)i(with)f(an)g(exit)150 +4513 y(status)c(greater)g(than)f(128,)i(immediately)g(after)f(whic)m(h) +f(the)h(trap)f(is)g(executed.)150 4742 y Fs(3.8)68 b(Shell)45 +b(Scripts)150 4902 y Fu(A)30 b(shell)f(script)h(is)f(a)h(text)h(\014le) +f(con)m(taining)h(shell)f(commands.)40 b(When)29 b(suc)m(h)g(a)h +(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 5011 y(non-option)c +(argumen)m(t)h(when)e(in)m(v)m(oking)i(Bash,)g(and)f(neither)g(the)g +Ft(-c)g Fu(nor)f Ft(-s)h Fu(option)g(is)g(supplied)f(\(see)150 +5121 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(86\),)i +(Bash)d(reads)g(and)f(executes)i(commands)f(from)f(the)i(\014le,)150 +5230 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f +(creates)i(a)e(non-in)m(teractiv)m(e)j(shell.)46 b(The)31 +b(shell)i(\014rst)e(searc)m(hes)150 5340 y(for)d(the)g(\014le)g(in)g +(the)g(curren)m(t)f(directory)-8 b(,)30 b(and)d(lo)s(oks)i(in)e(the)i +(directories)g(in)e Ft($PATH)g Fu(if)h(not)g(found)e(there.)p +eop end +%%Page: 43 49 +TeXDict begin 43 48 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(43)275 299 +y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f(sp)s +(ecial)i(parameter)f Ft(0)f Fu(to)h(the)g(name)g(of)g(the)g(\014le,)150 +408 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j(and)d(the)h(p)s +(ositional)g(parameters)f(are)h(set)g(to)g(the)g(remain-)150 +518 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m(en.)67 +b(If)39 b(no)g(additional)g(argumen)m(ts)h(are)f(supplied,)h(the)f(p)s +(ositional)150 628 y(parameters)31 b(are)f(unset.)275 +762 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m +(y)e(using)g(the)h Ft(chmod)e Fu(command)h(to)h(turn)e(on)i(the)150 +872 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h +(\014le)f(while)g(searc)m(hing)h(the)f Ft($PATH)f Fu(for)h(a)h +(command,)h(it)150 981 y(spa)m(wns)30 b(a)g(subshell)g(to)h(execute)h +(it.)41 b(In)30 b(other)g(w)m(ords,)g(executing)390 1116 +y Ft(filename)46 b Fj(arguments)150 1250 y Fu(is)30 b(equiv)-5 +b(alen)m(t)32 b(to)f(executing)390 1385 y Ft(bash)47 +b(filename)e Fj(arguments)150 1519 y Fu(if)30 b Ft(filename)d +Fu(is)j(an)f(executable)j(shell)e(script.)40 b(This)29 +b(subshell)g(reinitializes)i(itself,)g(so)f(that)h(the)e(e\013ect)150 +1629 y(is)36 b(as)h(if)g(a)f(new)g(shell)h(had)f(b)s(een)g(in)m(v)m(ok) +m(ed)h(to)h(in)m(terpret)e(the)h(script,)h(with)e(the)h(exception)h +(that)f(the)150 1738 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s +(ered)h(b)m(y)g(the)g(paren)m(t)g(\(see)h(the)f(description)g(of)g +Ft(hash)f Fu(in)h(Section)h(4.1)150 1848 y([Bourne)30 +b(Shell)h(Builtins],)g(page)g(44\))h(are)e(retained)h(b)m(y)f(the)h(c)m +(hild.)275 1983 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g +(a)g(part)f(of)h(the)g(op)s(erating)g(system's)f(command)h(execution) +150 2092 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h +(script)f(b)s(egins)g(with)g(the)g(t)m(w)m(o)i(c)m(haracters)g(`)p +Ft(#!)p Fu(',)f(the)g(remainder)150 2202 y(of)27 b(the)g(line)g(sp)s +(eci\014es)g(an)g(in)m(terpreter)g(for)g(the)g(program)g(and,)g(dep)s +(ending)e(on)i(the)g(op)s(erating)h(system,)150 2311 +y(one)e(or)g(more)g(optional)h(argumen)m(ts)f(for)g(that)g(in)m +(terpreter.)40 b(Th)m(us,)26 b(y)m(ou)g(can)g(sp)s(ecify)g(Bash,)h +Ft(awk)p Fu(,)f(P)m(erl,)150 2421 y(or)k(some)h(other)g(in)m(terpreter) +g(and)e(write)i(the)f(rest)h(of)g(the)f(script)g(\014le)h(in)f(that)h +(language.)275 2555 y(The)k(argumen)m(ts)h(to)h(the)f(in)m(terpreter)h +(consist)f(of)h(one)f(or)g(more)g(optional)h(argumen)m(ts)f(follo)m +(wing)150 2665 y(the)e(in)m(terpreter)g(name)g(on)g(the)g(\014rst)g +(line)g(of)g(the)g(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y)e(the)g +(name)g(of)g(the)g(script)150 2775 y(\014le,)k(follo)m(w)m(ed)g(b)m(y)e +(the)g(rest)g(of)g(the)h(argumen)m(ts)f(supplied)f(to)i(the)f(script.) +58 b(The)35 b(details)i(of)g(ho)m(w)f(the)150 2884 y(in)m(terpreter)26 +b(line)g(is)g(split)g(in)m(to)h(an)f(in)m(terpreter)g(name)g(and)f(a)h +(set)h(of)e(argumen)m(ts)i(v)-5 b(ary)25 b(across)i(systems.)150 +2994 y(Bash)j(will)f(p)s(erform)g(this)g(action)i(on)e(op)s(erating)h +(systems)g(that)g(do)f(not)h(handle)f(it)h(themselv)m(es.)42 +b(Note)150 3103 y(that)e(some)g(older)g(v)m(ersions)g(of)g(Unix)f +(limit)i(the)f(in)m(terpreter)g(name)g(and)f(a)h(single)g(argumen)m(t)g +(to)h(a)150 3213 y(maxim)m(um)21 b(of)g(32)h(c)m(haracters,)j(so)c +(it's)h(not)g(p)s(ortable)f(to)h(assume)e(that)i(using)f(more)g(than)g +(one)g(argumen)m(t)150 3323 y(will)31 b(w)m(ork.)275 +3457 y(Bash)h(scripts)g(often)g(b)s(egin)g(with)g Ft(#!)e(/bin/bash)g +Fu(\(assuming)i(that)h(Bash)f(has)g(b)s(een)f(installed)i(in)150 +3567 y Ft(/bin)p Fu(\),)26 b(since)h(this)f(ensures)f(that)i(Bash)f +(will)h(b)s(e)f(used)f(to)i(in)m(terpret)f(the)h(script,)g(ev)m(en)g +(if)f(it)h(is)f(executed)150 3676 y(under)h(another)h(shell.)41 +b(It's)28 b(a)h(common)g(idiom)f(to)h(use)f Ft(env)g +Fu(to)h(\014nd)e Ft(bash)g Fu(ev)m(en)i(if)f(it's)i(b)s(een)d +(installed)150 3786 y(in)h(another)g(directory:)40 b +Ft(#!/usr/bin/env)27 b(bash)f Fu(will)j(\014nd)d(the)j(\014rst)e(o)s +(ccurrence)h(of)g Ft(bash)f Fu(in)h Ft($PATH)p Fu(.)p +eop end +%%Page: 44 50 +TeXDict begin 44 49 bop 3659 -116 a Fu(44)150 299 y Fp(4)80 +b(Shell)53 b(Builtin)f(Commands)150 499 y Fu(Builtin)34 +b(commands)f(are)h(con)m(tained)g(within)f(the)h(shell)g(itself.)50 +b(When)34 b(the)f(name)h(of)f(a)h(builtin)f(com-)150 +608 y(mand)26 b(is)i(used)e(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)f +(simple)h(command)f(\(see)h(Section)g(3.2.2)h([Simple)f(Commands],)150 +718 y(page)21 b(8\),)j(the)d(shell)g(executes)h(the)f(command)f +(directly)-8 b(,)24 b(without)d(in)m(v)m(oking)h(another)f(program.)37 +b(Builtin)150 828 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g +(functionalit)m(y)h(imp)s(ossible)e(or)h(incon)m(v)m(enien)m(t)h(to)f +(obtain)150 937 y(with)30 b(separate)h(utilities.)275 +1065 y(This)c(section)j(brie\015y)e(describ)s(es)g(the)h(builtins)f +(whic)m(h)g(Bash)h(inherits)f(from)g(the)h(Bourne)g(Shell,)g(as)150 +1174 y(w)m(ell)i(as)g(the)g(builtin)e(commands)h(whic)m(h)h(are)f +(unique)g(to)h(or)f(ha)m(v)m(e)i(b)s(een)d(extended)i(in)f(Bash.)275 +1302 y(Sev)m(eral)45 b(builtin)e(commands)h(are)h(describ)s(ed)e(in)h +(other)g(c)m(hapters:)69 b(builtin)43 b(commands)h(whic)m(h)150 +1412 y(pro)m(vide)23 b(the)h(Bash)f(in)m(terface)i(to)f(the)g(job)f +(con)m(trol)i(facilities)g(\(see)f(Section)h(7.2)f([Job)f(Con)m(trol)h +(Builtins],)150 1521 y(page)37 b(108\),)i(the)d(directory)g(stac)m(k)h +(\(see)g(Section)g(6.8.1)g([Directory)h(Stac)m(k)f(Builtins],)h(page)e +(97\),)j(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h +([Bash)f(History)g(Builtins],)h(page)g(146\),)h(and)d(the)h +(programmable)150 1740 y(completion)32 b(facilities)g(\(see)g(Section)f +(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(139\).)275 +1868 y(Man)m(y)f(of)f(the)h(builtins)e(ha)m(v)m(e)j(b)s(een)e(extended) +g(b)m(y)g Fm(posix)g Fu(or)g(Bash.)275 1996 y(Unless)20 +b(otherwise)h(noted,)h(eac)m(h)g(builtin)e(command)g(do)s(cumen)m(ted)g +(as)h(accepting)h(options)e(preceded)150 2105 y(b)m(y)42 +b(`)p Ft(-)p Fu(')g(accepts)h(`)p Ft(--)p Fu(')f(to)h(signify)f(the)g +(end)f(of)h(the)g(options.)76 b(The)41 b Ft(:)p Fu(,)k +Ft(true)p Fu(,)f Ft(false)p Fu(,)g(and)d Ft(test)p Fu(/)p +Ft([)150 2215 y Fu(builtins)32 b(do)g(not)h(accept)h(options)f(and)f +(do)g(not)h(treat)g(`)p Ft(--)p Fu(')g(sp)s(ecially)-8 +b(.)48 b(The)32 b Ft(exit)p Fu(,)g Ft(logout)p Fu(,)f +Ft(return)p Fu(,)150 2325 y Ft(break)p Fu(,)38 b Ft(continue)p +Fu(,)f Ft(let)p Fu(,)i(and)d Ft(shift)g Fu(builtins)h(accept)i(and)e +(pro)s(cess)g(argumen)m(ts)h(b)s(eginning)e(with)150 +2434 y(`)p Ft(-)p Fu(')h(without)f(requiring)g(`)p Ft(--)p +Fu('.)59 b(Other)36 b(builtins)g(that)h(accept)h(argumen)m(ts)f(but)f +(are)h(not)g(sp)s(eci\014ed)f(as)150 2544 y(accepting)28 +b(options)f(in)m(terpret)g(argumen)m(ts)g(b)s(eginning)e(with)i(`)p +Ft(-)p Fu(')f(as)h(in)m(v)-5 b(alid)27 b(options)g(and)f(require)g(`)p +Ft(--)p Fu(')150 2653 y(to)31 b(prev)m(en)m(t)g(this)f(in)m +(terpretation.)150 2880 y Fs(4.1)68 b(Bourne)45 b(Shell)g(Builtins)150 +3040 y Fu(The)22 b(follo)m(wing)j(shell)d(builtin)h(commands)f(are)h +(inherited)g(from)f(the)h(Bourne)g(Shell.)38 b(These)22 +b(commands)150 3149 y(are)31 b(implemen)m(ted)g(as)f(sp)s(eci\014ed)g +(b)m(y)g(the)h Fm(posix)e Fu(standard.)150 3295 y Ft(:)h +Fu(\(a)h(colon\))870 3405 y Ft(:)47 b([)p Fj(arguments)p +Ft(])630 3532 y Fu(Do)c(nothing)f(b)s(ey)m(ond)g(expanding)f +Fr(argumen)m(ts)46 b Fu(and)c(p)s(erforming)f(redirections.)76 +b(The)630 3642 y(return)29 b(status)i(is)f(zero.)150 +3788 y Ft(.)g Fu(\(a)h(p)s(erio)s(d\))870 3897 y Ft(.)47 +b Fj(filename)f Ft([)p Fj(arguments)p Ft(])630 4025 y +Fu(Read)34 b(and)f(execute)i(commands)e(from)g(the)h +Fr(\014lename)39 b Fu(argumen)m(t)34 b(in)f(the)h(curren)m(t)g(shell) +630 4134 y(con)m(text.)45 b(If)31 b Fr(\014lename)37 +b Fu(do)s(es)31 b(not)g(con)m(tain)i(a)e(slash,)h(the)g +Ft(PATH)e Fu(v)-5 b(ariable)32 b(is)f(used)f(to)i(\014nd)630 +4244 y Fr(\014lename)p Fu(.)52 b(When)34 b(Bash)g(is)h(not)f(in)g +Fm(posix)f Fu(mo)s(de,)i(the)g(curren)m(t)f(directory)g(is)g(searc)m +(hed)630 4354 y(if)d Fr(\014lename)36 b Fu(is)31 b(not)h(found)d(in)i +Ft($PATH)p Fu(.)41 b(If)31 b(an)m(y)g Fr(argumen)m(ts)k +Fu(are)c(supplied,)f(they)i(b)s(ecome)630 4463 y(the)e(p)s(ositional)h +(parameters)g(when)e Fr(\014lename)35 b Fu(is)30 b(executed.)42 +b(Otherwise)30 b(the)g(p)s(ositional)630 4573 y(parameters)40 +b(are)f(unc)m(hanged.)67 b(If)39 b(the)g Ft(-T)g Fu(option)g(is)h +(enabled,)h Ft(source)d Fu(inherits)h(an)m(y)630 4682 +y(trap)31 b(on)g Ft(DEBUG)p Fu(;)f(if)i(it)f(is)g(not,)h(an)m(y)g +Ft(DEBUG)e Fu(trap)h(string)g(is)g(sa)m(v)m(ed)h(and)f(restored)g +(around)630 4792 y(the)41 b(call)i(to)e Ft(source)p Fu(,)i(and)d +Ft(source)f Fu(unsets)i(the)g Ft(DEBUG)f Fu(trap)h(while)g(it)g +(executes.)74 b(If)630 4902 y Ft(-T)39 b Fu(is)g(not)h(set,)j(and)c +(the)g(sourced)h(\014le)f(c)m(hanges)i(the)e Ft(DEBUG)f +Fu(trap,)k(the)e(new)f(v)-5 b(alue)40 b(is)630 5011 y(retained)e(when)e +Ft(source)g Fu(completes.)63 b(The)37 b(return)f(status)h(is)h(the)f +(exit)i(status)e(of)h(the)630 5121 y(last)g(command)e(executed,)j(or)e +(zero)h(if)e(no)h(commands)f(are)h(executed.)61 b(If)36 +b Fr(\014lename)42 b Fu(is)630 5230 y(not)f(found,)h(or)e(cannot)h(b)s +(e)f(read,)j(the)e(return)e(status)i(is)g(non-zero.)71 +b(This)40 b(builtin)g(is)630 5340 y(equiv)-5 b(alen)m(t)32 +b(to)f Ft(source)p Fu(.)p eop end +%%Page: 45 51 +TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(45)150 299 y Ft(break)870 +428 y(break)46 b([)p Fj(n)p Ft(])630 558 y Fu(Exit)f(from)f(a)g +Ft(for)p Fu(,)k Ft(while)p Fu(,)e Ft(until)p Fu(,)h(or)d +Ft(select)f Fu(lo)s(op.)83 b(If)44 b Fr(n)g Fu(is)g(supplied,)j(the)e +Fr(n)p Fu(th)630 667 y(enclosing)c(lo)s(op)f(is)h(exited.)70 +b Fr(n)40 b Fu(m)m(ust)g(b)s(e)f(greater)j(than)d(or)i(equal)f(to)h(1.) +70 b(The)40 b(return)630 777 y(status)31 b(is)f(zero)h(unless)f +Fr(n)g Fu(is)g(not)h(greater)g(than)g(or)f(equal)h(to)g(1.)150 +927 y Ft(cd)870 1056 y(cd)47 b([-L|[-P)f([-e]])g([-@])h([)p +Fj(directory)p Ft(])630 1186 y Fu(Change)27 b(the)g(curren)m(t)f(w)m +(orking)h(directory)g(to)h Fr(directory)p Fu(.)40 b(If)26 +b Fr(directory)35 b Fu(is)27 b(not)g(supplied,)630 1295 +y(the)f(v)-5 b(alue)26 b(of)f(the)h Ft(HOME)e Fu(shell)i(v)-5 +b(ariable)26 b(is)g(used.)38 b(An)m(y)25 b(additional)i(argumen)m(ts)e +(follo)m(wing)630 1405 y Fr(directory)39 b Fu(are)31 +b(ignored.)41 b(If)30 b(the)h(shell)g(v)-5 b(ariable)31 +b Ft(CDPATH)e Fu(exists,)i(it)g(is)g(used)f(as)g(a)h(searc)m(h)630 +1514 y(path:)39 b(eac)m(h)29 b(directory)g(name)f(in)f +Ft(CDPATH)g Fu(is)h(searc)m(hed)g(for)g Fr(directory)p +Fu(,)h(with)f(alternativ)m(e)630 1624 y(directory)j(names)g(in)f +Ft(CDPATH)f Fu(separated)j(b)m(y)e(a)h(colon)h(\(`)p +Ft(:)p Fu('\).)43 b(If)30 b Fr(directory)39 b Fu(b)s(egins)30 +b(with)630 1733 y(a)h(slash,)f Ft(CDPATH)f Fu(is)h(not)h(used.)630 +1863 y(The)g Ft(-P)h Fu(option)g(means)g(to)h(not)f(follo)m(w)h(sym)m +(b)s(olic)g(links:)44 b(sym)m(b)s(olic)32 b(links)g(are)g(resolv)m(ed) +630 1973 y(while)41 b Ft(cd)f Fu(is)h(tra)m(v)m(ersing)h +Fr(directory)49 b Fu(and)40 b(b)s(efore)g(pro)s(cessing)h(an)f +(instance)i(of)f(`)p Ft(..)p Fu(')f(in)630 2082 y Fr(directory)p +Fu(.)630 2212 y(By)34 b(default,)h(or)e(when)g(the)g +Ft(-L)g Fu(option)h(is)g(supplied,)f(sym)m(b)s(olic)h(links)f(in)h +Fr(directory)42 b Fu(are)630 2321 y(resolv)m(ed)31 b(after)g +Ft(cd)f Fu(pro)s(cesses)g(an)g(instance)h(of)g(`)p Ft(..)p +Fu(')f(in)g Fr(directory)p Fu(.)630 2451 y(If)35 b(`)p +Ft(..)p Fu(')f(app)s(ears)h(in)f Fr(directory)p Fu(,)j(it)f(is)f(pro)s +(cessed)f(b)m(y)h(remo)m(ving)h(the)f(immediately)h(pre-)630 +2560 y(ceding)31 b(pathname)f(comp)s(onen)m(t,)h(bac)m(k)g(to)g(a)g +(slash)f(or)h(the)f(b)s(eginning)g(of)g Fr(directory)p +Fu(.)630 2690 y(If)i(the)i Ft(-e)e Fu(option)h(is)g(supplied)f(with)g +Ft(-P)h Fu(and)f(the)h(curren)m(t)g(w)m(orking)g(directory)g(cannot)630 +2800 y(b)s(e)k(successfully)g(determined)g(after)i(a)e(successful)h +(directory)g(c)m(hange,)i Ft(cd)d Fu(will)h(return)630 +2909 y(an)30 b(unsuccessful)f(status.)630 3039 y(On)41 +b(systems)h(that)h(supp)s(ort)d(it,)46 b(the)c Ft(-@)g +Fu(option)g(presen)m(ts)g(the)g(extended)g(attributes)630 +3148 y(asso)s(ciated)32 b(with)e(a)h(\014le)f(as)h(a)f(directory)-8 +b(.)630 3278 y(If)41 b Fr(directory)49 b Fu(is)41 b(`)p +Ft(-)p Fu(',)j(it)e(is)f(con)m(v)m(erted)h(to)g Ft($OLDPWD)d +Fu(b)s(efore)i(the)g(directory)h(c)m(hange)g(is)630 3387 +y(attempted.)630 3517 y(If)33 b(a)h(non-empt)m(y)g(directory)g(name)f +(from)g Ft(CDPATH)f Fu(is)h(used,)h(or)g(if)f(`)p Ft(-)p +Fu(')h(is)f(the)h(\014rst)f(argu-)630 3626 y(men)m(t,)28 +b(and)e(the)h(directory)g(c)m(hange)h(is)f(successful,)h(the)f +(absolute)g(pathname)g(of)f(the)h(new)630 3736 y(w)m(orking)k +(directory)g(is)f(written)g(to)i(the)e(standard)g(output.)630 +3866 y(The)f(return)g(status)h(is)f(zero)i(if)e(the)h(directory)g(is)g +(successfully)g(c)m(hanged,)g(non-zero)g(oth-)630 3975 +y(erwise.)150 4125 y Ft(continue)870 4254 y(continue)46 +b([)p Fj(n)p Ft(])630 4384 y Fu(Resume)32 b(the)g(next)g(iteration)i +(of)e(an)g(enclosing)h Ft(for)p Fu(,)f Ft(while)p Fu(,)f +Ft(until)p Fu(,)g(or)h Ft(select)f Fu(lo)s(op.)630 4493 +y(If)f Fr(n)h Fu(is)g(supplied,)e(the)j(execution)g(of)f(the)g +Fr(n)p Fu(th)f(enclosing)i(lo)s(op)f(is)f(resumed.)42 +b Fr(n)30 b Fu(m)m(ust)h(b)s(e)630 4603 y(greater)39 +b(than)f(or)g(equal)g(to)h(1.)63 b(The)38 b(return)e(status)j(is)e +(zero)i(unless)e Fr(n)h Fu(is)g(not)g(greater)630 4712 +y(than)30 b(or)g(equal)h(to)g(1.)150 4862 y Ft(eval)870 +4991 y(eval)47 b([)p Fj(arguments)p Ft(])630 5121 y Fu(The)25 +b(argumen)m(ts)h(are)g(concatenated)i(together)f(in)m(to)f(a)g(single)h +(command,)f(whic)m(h)g(is)f(then)630 5230 y(read)35 b(and)g(executed,)j +(and)d(its)h(exit)g(status)g(returned)e(as)h(the)h(exit)g(status)g(of)g +Ft(eval)p Fu(.)54 b(If)630 5340 y(there)31 b(are)f(no)h(argumen)m(ts)f +(or)h(only)f(empt)m(y)h(argumen)m(ts,)g(the)f(return)g(status)g(is)h +(zero.)p eop end +%%Page: 46 52 +TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f +(Builtin)h(Commands)2079 b(46)150 299 y Ft(exec)870 430 +y(exec)47 b([-cl])f([-a)h Fj(name)p Ft(])f([)p Fj(command)g +Ft([)p Fj(arguments)p Ft(]])630 562 y Fu(If)36 b Fr(command)k +Fu(is)c(supplied,)h(it)g(replaces)h(the)e(shell)h(without)f(creating)i +(a)f(new)f(pro)s(cess.)630 671 y(If)k(the)h Ft(-l)e Fu(option)i(is)g +(supplied,)h(the)e(shell)h(places)g(a)g(dash)f(at)h(the)f(b)s(eginning) +g(of)h(the)630 781 y(zeroth)36 b(argumen)m(t)h(passed)e(to)h +Fr(command)p Fu(.)57 b(This)35 b(is)h(what)f(the)h Ft(login)e +Fu(program)i(do)s(es.)630 891 y(The)i Ft(-c)g Fu(option)g(causes)h +Fr(command)j Fu(to)d(b)s(e)f(executed)h(with)f(an)g(empt)m(y)h(en)m +(vironmen)m(t.)630 1000 y(If)c Ft(-a)g Fu(is)h(supplied,)f(the)h(shell) +g(passes)f Fr(name)41 b Fu(as)36 b(the)f(zeroth)i(argumen)m(t)f(to)g +Fr(command)p Fu(.)630 1110 y(If)c Fr(command)j Fu(cannot)e(b)s(e)f +(executed)h(for)f(some)g(reason,)h(a)g(non-in)m(teractiv)m(e)i(shell)d +(exits,)630 1219 y(unless)27 b(the)g Ft(execfail)e Fu(shell)i(option)h +(is)f(enabled.)40 b(In)27 b(that)g(case,)j(it)d(returns)f(failure.)40 +b(An)630 1329 y(in)m(teractiv)m(e)35 b(shell)d(returns)f(failure)h(if)g +(the)g(\014le)g(cannot)h(b)s(e)e(executed.)47 b(A)32 +b(subshell)f(exits)630 1439 y(unconditionally)j(if)g +Ft(exec)f Fu(fails.)52 b(If)33 b(no)h Fr(command)j Fu(is)d(sp)s +(eci\014ed,)h(redirections)f(ma)m(y)h(b)s(e)630 1548 +y(used)30 b(to)i(a\013ect)g(the)f(curren)m(t)g(shell)g(en)m(vironmen)m +(t.)43 b(If)30 b(there)i(are)f(no)g(redirection)g(errors,)630 +1658 y(the)g(return)e(status)i(is)f(zero;)h(otherwise)g(the)g(return)e +(status)i(is)f(non-zero.)150 1811 y Ft(exit)870 1943 +y(exit)47 b([)p Fj(n)p Ft(])630 2074 y Fu(Exit)30 b(the)g(shell,)h +(returning)d(a)j(status)f(of)g Fr(n)f Fu(to)h(the)g(shell's)g(paren)m +(t.)41 b(If)30 b Fr(n)f Fu(is)h(omitted,)h(the)630 2184 +y(exit)c(status)g(is)g(that)g(of)g(the)g(last)g(command)f(executed.)41 +b(An)m(y)26 b(trap)h(on)f Ft(EXIT)f Fu(is)i(executed)630 +2293 y(b)s(efore)j(the)h(shell)f(terminates.)150 2447 +y Ft(export)870 2578 y(export)46 b([-fn])g([-p])h([)p +Fj(name)p Ft([=)p Fj(value)p Ft(]])630 2710 y Fu(Mark)40 +b(eac)m(h)h Fr(name)k Fu(to)40 b(b)s(e)f(passed)g(to)i(c)m(hild)f(pro)s +(cesses)f(in)g(the)h(en)m(vironmen)m(t.)70 b(If)39 b(the)630 +2819 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h +Fr(name)5 b Fu(s)33 b(refer)g(to)i(shell)e(functions;)i(otherwise)f +(the)g(names)630 2929 y(refer)c(to)h(shell)g(v)-5 b(ariables.)41 +b(The)30 b Ft(-n)f Fu(option)i(means)f(to)h(no)f(longer)h(mark)f(eac)m +(h)i Fr(name)j Fu(for)630 3039 y(exp)s(ort.)52 b(If)33 +b(no)h Fr(names)k Fu(are)c(supplied,)g(or)g(if)g(the)g +Ft(-p)g Fu(option)g(is)g(giv)m(en,)j(a)d(list)h(of)f(names)630 +3148 y(of)d(all)h(exp)s(orted)e(v)-5 b(ariables)31 b(is)g(displa)m(y)m +(ed.)43 b(The)30 b Ft(-p)g Fu(option)i(displa)m(ys)e(output)h(in)f(a)h +(form)630 3258 y(that)25 b(ma)m(y)g(b)s(e)f(reused)g(as)h(input.)38 +b(If)24 b(a)h(v)-5 b(ariable)25 b(name)g(is)g(follo)m(w)m(ed)h(b)m(y)e +(=)p Fr(v)-5 b(alue)p Fu(,)27 b(the)d(v)-5 b(alue)630 +3367 y(of)31 b(the)f(v)-5 b(ariable)31 b(is)g(set)g(to)g +Fr(v)-5 b(alue)p Fu(.)630 3499 y(The)29 b(return)e(status)j(is)f(zero)h +(unless)e(an)h(in)m(v)-5 b(alid)29 b(option)h(is)f(supplied,)f(one)i +(of)f(the)g(names)630 3608 y(is)k(not)g(a)h(v)-5 b(alid)33 +b(shell)h(v)-5 b(ariable)33 b(name,)i(or)e Ft(-f)f Fu(is)h(supplied)f +(with)h(a)g(name)g(that)h(is)f(not)h(a)630 3718 y(shell)d(function.)150 +3871 y Ft(getopts)870 4003 y(getopts)46 b Fj(optstring)f(name)i +Ft([)p Fj(arg)f Ft(...])630 4134 y(getopts)28 b Fu(is)i(used)g(b)m(y)g +(shell)g(scripts)g(to)g(parse)g(p)s(ositional)h(parameters.)41 +b Fr(optstring)d Fu(con-)630 4244 y(tains)k(the)g(option)f(c)m +(haracters)i(to)g(b)s(e)d(recognized;)49 b(if)42 b(a)f(c)m(haracter)j +(is)d(follo)m(w)m(ed)i(b)m(y)f(a)630 4354 y(colon,)33 +b(the)f(option)g(is)g(exp)s(ected)g(to)h(ha)m(v)m(e)g(an)e(argumen)m +(t,)i(whic)m(h)f(should)e(b)s(e)h(separated)630 4463 +y(from)40 b(it)g(b)m(y)g(whitespace.)70 b(The)40 b(colon)h(\(`)p +Ft(:)p Fu('\))g(and)e(question)h(mark)g(\(`)p Ft(?)p +Fu('\))h(ma)m(y)f(not)h(b)s(e)630 4573 y(used)d(as)g(option)h(c)m +(haracters.)67 b(Eac)m(h)39 b(time)g(it)g(is)f(in)m(v)m(ok)m(ed,)k +Ft(getopts)37 b Fu(places)i(the)g(next)630 4682 y(option)29 +b(in)f(the)h(shell)g(v)-5 b(ariable)30 b Fr(name)p Fu(,)f(initializing) +i Fr(name)j Fu(if)28 b(it)h(do)s(es)g(not)g(exist,)h(and)e(the)630 +4792 y(index)33 b(of)g(the)h(next)f(argumen)m(t)h(to)g(b)s(e)e(pro)s +(cessed)h(in)m(to)h(the)g(v)-5 b(ariable)34 b Ft(OPTIND)p +Fu(.)48 b Ft(OPTIND)630 4902 y Fu(is)41 b(initialized)i(to)f(1)f(eac)m +(h)h(time)g(the)f(shell)g(or)g(a)g(shell)g(script)g(is)g(in)m(v)m(ok)m +(ed.)74 b(When)41 b(an)630 5011 y(option)36 b(requires)e(an)h(argumen)m +(t,)i Ft(getopts)c Fu(places)j(that)g(argumen)m(t)g(in)m(to)g(the)f(v) +-5 b(ariable)630 5121 y Ft(OPTARG)p Fu(.)55 b(The)35 +b(shell)g(do)s(es)h(not)g(reset)g Ft(OPTIND)e Fu(automatically;)41 +b(it)36 b(m)m(ust)f(b)s(e)g(man)m(ually)630 5230 y(reset)i(b)s(et)m(w)m +(een)g(m)m(ultiple)h(calls)f(to)g Ft(getopts)e Fu(within)h(the)h(same)g +(shell)f(in)m(v)m(o)s(cation)j(if)e(a)630 5340 y(new)30 +b(set)h(of)f(parameters)h(is)f(to)i(b)s(e)d(used.)p eop +end +%%Page: 47 53 +TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(When)41 +b(the)h(end)e(of)i(options)g(is)f(encoun)m(tered,)k Ft(getopts)39 +b Fu(exits)j(with)f(a)h(return)e(v)-5 b(alue)630 408 +y(greater)32 b(than)e(zero.)41 b Ft(OPTIND)29 b Fu(is)h(set)h(to)g(the) +g(index)f(of)g(the)h(\014rst)f(non-option)g(argumen)m(t,)630 +518 y(and)g Fr(name)35 b Fu(is)c(set)g(to)g(`)p Ft(?)p +Fu('.)630 655 y Ft(getopts)c Fu(normally)j(parses)e(the)i(p)s +(ositional)g(parameters,)g(but)e(if)i(more)f(argumen)m(ts)h(are)630 +765 y(supplied)f(as)i Fr(arg)38 b Fu(v)-5 b(alues,)31 +b Ft(getopts)e Fu(parses)h(those)h(instead.)630 902 y +Ft(getopts)h Fu(can)h(rep)s(ort)g(errors)g(in)h(t)m(w)m(o)h(w)m(a)m +(ys.)51 b(If)33 b(the)h(\014rst)e(c)m(haracter)k(of)d +Fr(optstring)42 b Fu(is)34 b(a)630 1011 y(colon,)g Fr(silen)m(t)h +Fu(error)d(rep)s(orting)f(is)i(used.)45 b(In)31 b(normal)h(op)s +(eration,)h(diagnostic)h(messages)630 1121 y(are)c(prin)m(ted)e(when)g +(in)m(v)-5 b(alid)30 b(options)g(or)f(missing)g(option)g(argumen)m(ts)h +(are)f(encoun)m(tered.)630 1230 y(If)34 b(the)g(v)-5 +b(ariable)35 b Ft(OPTERR)d Fu(is)i(set)h(to)f(0,)i(no)e(error)g +(messages)h(will)f(b)s(e)f(displa)m(y)m(ed,)j(ev)m(en)f(if)630 +1340 y(the)c(\014rst)e(c)m(haracter)j(of)f Ft(optstring)d +Fu(is)i(not)h(a)f(colon.)630 1477 y(If)39 b(an)h(in)m(v)-5 +b(alid)41 b(option)f(is)g(seen,)i Ft(getopts)c Fu(places)j(`)p +Ft(?)p Fu(')f(in)m(to)h Fr(name)k Fu(and,)d(if)e(not)g(silen)m(t,)630 +1587 y(prin)m(ts)f(an)h(error)f(message)h(and)f(unsets)g +Ft(OPTARG)p Fu(.)67 b(If)39 b Ft(getopts)f Fu(is)i(silen)m(t,)j(the)c +(option)630 1696 y(c)m(haracter)32 b(found)d(is)h(placed)h(in)f +Ft(OPTARG)f Fu(and)h(no)g(diagnostic)i(message)f(is)g(prin)m(ted.)630 +1833 y(If)c(a)g(required)f(argumen)m(t)i(is)f(not)g(found,)g(and)f +Ft(getopts)f Fu(is)i(not)h(silen)m(t,)h(a)e(question)g(mark)630 +1943 y(\(`)p Ft(?)p Fu('\))h(is)g(placed)g(in)f Fr(name)p +Fu(,)h Ft(OPTARG)e Fu(is)h(unset,)h(and)f(a)g(diagnostic)i(message)g +(is)e(prin)m(ted.)39 b(If)630 2052 y Ft(getopts)28 b +Fu(is)h(silen)m(t,)i(then)e(a)h(colon)h(\(`)p Ft(:)p +Fu('\))f(is)g(placed)g(in)f Fr(name)35 b Fu(and)29 b +Ft(OPTARG)f Fu(is)h(set)h(to)h(the)630 2162 y(option)g(c)m(haracter)h +(found.)150 2326 y Ft(hash)870 2463 y(hash)47 b([-r])f([-p)h +Fj(filename)p Ft(])e([-dt])i([)p Fj(name)p Ft(])630 2600 +y Fu(Eac)m(h)32 b(time)g Ft(hash)e Fu(is)h(in)m(v)m(ok)m(ed,)j(it)d +(remem)m(b)s(ers)g(the)g(full)g(pathnames)g(of)h(the)f(commands)630 +2710 y(sp)s(eci\014ed)i(as)i Fr(name)k Fu(argumen)m(ts,)c(so)g(they)f +(need)g(not)g(b)s(e)f(searc)m(hed)i(for)f(on)g(subsequen)m(t)630 +2819 y(in)m(v)m(o)s(cations.)79 b(The)41 b(commands)h(are)h(found)e(b)m +(y)h(searc)m(hing)i(through)d(the)i(directories)630 2929 +y(listed)37 b(in)g Ft($PATH)p Fu(.)58 b(An)m(y)37 b(previously-remem)m +(b)s(ered)f(pathname)h(is)g(discarded.)59 b(The)37 b +Ft(-p)630 3039 y Fu(option)d(inhibits)f(the)h(path)g(searc)m(h,)h(and)e +Fr(\014lename)39 b Fu(is)34 b(used)f(as)h(the)f(lo)s(cation)j(of)e +Fr(name)p Fu(.)630 3148 y(The)42 b Ft(-r)g Fu(option)h(causes)f(the)h +(shell)g(to)g(forget)g(all)h(remem)m(b)s(ered)d(lo)s(cations.)79 +b(The)42 b Ft(-d)630 3258 y Fu(option)31 b(causes)g(the)f(shell)h(to)g +(forget)h(the)f(remem)m(b)s(ered)e(lo)s(cation)j(of)f(eac)m(h)h +Fr(name)p Fu(.)41 b(If)30 b(the)630 3367 y Ft(-t)39 b +Fu(option)h(is)g(supplied,)g(the)g(full)f(pathname)h(to)g(whic)m(h)f +(eac)m(h)i Fr(name)k Fu(corresp)s(onds)38 b(is)630 3477 +y(prin)m(ted.)i(If)28 b(m)m(ultiple)h Fr(name)34 b Fu(argumen)m(ts)29 +b(are)g(supplied)f(with)g Ft(-t)p Fu(,)h(the)g Fr(name)34 +b Fu(is)28 b(prin)m(ted)630 3587 y(b)s(efore)h(the)i(hashed)e(full)g +(pathname.)41 b(The)29 b Ft(-l)g Fu(option)i(causes)f(output)f(to)i(b)s +(e)e(displa)m(y)m(ed)630 3696 y(in)23 b(a)h(format)g(that)g(ma)m(y)g(b) +s(e)f(reused)f(as)i(input.)37 b(If)23 b(no)h(argumen)m(ts)f(are)h(giv)m +(en,)i(or)e(if)f(only)h Ft(-l)630 3806 y Fu(is)35 b(supplied,)f +(information)h(ab)s(out)g(remem)m(b)s(ered)f(commands)g(is)h(prin)m +(ted.)53 b(The)34 b(return)630 3915 y(status)d(is)f(zero)h(unless)f(a)h +Fr(name)k Fu(is)c(not)f(found)f(or)i(an)f(in)m(v)-5 b(alid)31 +b(option)g(is)f(supplied.)150 4080 y Ft(pwd)870 4217 +y(pwd)47 b([-LP])630 4354 y Fu(Prin)m(t)29 b(the)g(absolute)h(pathname) +e(of)h(the)h(curren)m(t)e(w)m(orking)h(directory)-8 b(.)42 +b(If)28 b(the)h Ft(-P)f Fu(option)630 4463 y(is)39 b(supplied,)h(the)f +(pathname)g(prin)m(ted)g(will)g(not)h(con)m(tain)g(sym)m(b)s(olic)f +(links.)67 b(If)38 b(the)i Ft(-L)630 4573 y Fu(option)k(is)g(supplied,) +i(the)e(pathname)f(prin)m(ted)h(ma)m(y)g(con)m(tain)h(sym)m(b)s(olic)f +(links.)80 b(The)630 4682 y(return)26 b(status)h(is)h(zero)g(unless)e +(an)h(error)g(is)g(encoun)m(tered)g(while)h(determining)f(the)g(name) +630 4792 y(of)k(the)f(curren)m(t)g(directory)h(or)f(an)h(in)m(v)-5 +b(alid)31 b(option)g(is)f(supplied.)150 4956 y Ft(readonly)870 +5093 y(readonly)46 b([-aAf])g([-p])g([)p Fj(name)p Ft([=)p +Fj(value)p Ft(]])e(...)630 5230 y Fu(Mark)33 b(eac)m(h)h +Fr(name)39 b Fu(as)33 b(readonly)-8 b(.)49 b(The)32 b(v)-5 +b(alues)34 b(of)f(these)g(names)g(ma)m(y)h(not)f(b)s(e)f(c)m(hanged)630 +5340 y(b)m(y)38 b(subsequen)m(t)g(assignmen)m(t.)65 b(If)38 +b(the)h Ft(-f)f Fu(option)g(is)h(supplied,)g(eac)m(h)h +Fr(name)j Fu(refers)38 b(to)p eop end +%%Page: 48 54 +TeXDict begin 48 53 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 y(a)37 +b(shell)g(function.)59 b(The)36 b Ft(-a)g Fu(option)h(means)f(eac)m(h)i +Fr(name)k Fu(refers)36 b(to)h(an)f(indexed)g(arra)m(y)630 +408 y(v)-5 b(ariable;)28 b(the)f Ft(-A)e Fu(option)h(means)g(eac)m(h)h +Fr(name)k Fu(refers)26 b(to)g(an)g(asso)s(ciativ)m(e)i(arra)m(y)f(v)-5 +b(ariable.)630 518 y(If)35 b(b)s(oth)g(options)h(are)h(supplied,)f +Ft(-A)f Fu(tak)m(es)i(precedence.)58 b(If)35 b(no)h Fr(name)k +Fu(argumen)m(ts)d(are)630 628 y(giv)m(en,)k(or)c(if)h(the)g +Ft(-p)f Fu(option)h(is)f(supplied,)i(a)f(list)g(of)g(all)g(readonly)g +(names)f(is)h(prin)m(ted.)630 737 y(The)32 b(other)g(options)g(ma)m(y)h +(b)s(e)f(used)f(to)i(restrict)g(the)f(output)g(to)h(a)f(subset)g(of)g +(the)g(set)h(of)630 847 y(readonly)c(names.)41 b(The)28 +b Ft(-p)h Fu(option)h(causes)g(output)e(to)j(b)s(e)d(displa)m(y)m(ed)i +(in)f(a)h(format)f(that)630 956 y(ma)m(y)j(b)s(e)e(reused)g(as)i +(input.)42 b(If)30 b(a)i(v)-5 b(ariable)31 b(name)h(is)f(follo)m(w)m +(ed)h(b)m(y)f(=)p Fr(v)-5 b(alue)p Fu(,)32 b(the)f(v)-5 +b(alue)32 b(of)630 1066 y(the)i(v)-5 b(ariable)34 b(is)f(set)i(to)f +Fr(v)-5 b(alue)p Fu(.)50 b(The)33 b(return)g(status)g(is)h(zero)g +(unless)f(an)g(in)m(v)-5 b(alid)34 b(option)630 1176 +y(is)c(supplied,)f(one)h(of)g(the)g Fr(name)35 b Fu(argumen)m(ts)30 +b(is)g(not)g(a)g(v)-5 b(alid)31 b(shell)f(v)-5 b(ariable)30 +b(or)g(function)630 1285 y(name,)h(or)f(the)h Ft(-f)e +Fu(option)i(is)g(supplied)e(with)h(a)h(name)f(that)h(is)f(not)h(a)g +(shell)f(function.)150 1462 y Ft(return)870 1606 y(return)46 +b([)p Fj(n)p Ft(])630 1749 y Fu(Cause)37 b(a)g(shell)h(function)f(to)g +(stop)h(executing)g(and)e(return)h(the)g(v)-5 b(alue)37 +b Fr(n)g Fu(to)h(its)f(caller.)630 1858 y(If)h Fr(n)h +Fu(is)g(not)g(supplied,)h(the)f(return)e(v)-5 b(alue)40 +b(is)f(the)g(exit)g(status)g(of)g(the)g(last)h(command)630 +1968 y(executed)i(in)f(the)g(function.)72 b(If)41 b Ft(return)e +Fu(is)i(executed)h(b)m(y)f(a)h(trap)f(handler,)i(the)e(last)630 +2078 y(command)d(used)f(to)i(determine)f(the)g(status)g(is)h(the)f +(last)h(command)e(executed)i(b)s(efore)630 2187 y(the)27 +b(trap)g(handler.)39 b(If)26 b Ft(return)g Fu(is)h(executed)h(during)d +(a)j Ft(DEBUG)d Fu(trap,)j(the)f(last)h(command)630 2297 +y(used)f(to)h(determine)g(the)f(status)h(is)g(the)f(last)i(command)e +(executed)h(b)m(y)g(the)f(trap)h(handler)630 2406 y(b)s(efore)e +Ft(return)f Fu(w)m(as)i(in)m(v)m(ok)m(ed.)41 b Ft(return)25 +b Fu(ma)m(y)i(also)g(b)s(e)f(used)g(to)h(terminate)h(execution)g(of)630 +2516 y(a)34 b(script)g(b)s(eing)g(executed)g(with)g(the)g +Ft(.)g Fu(\()p Ft(source)p Fu(\))f(builtin,)h(returning)f(either)i +Fr(n)e Fu(or)h(the)630 2626 y(exit)j(status)f(of)g(the)g(last)h +(command)e(executed)i(within)e(the)h(script)g(as)g(the)g(exit)h(status) +630 2735 y(of)i(the)g(script.)65 b(If)38 b Fr(n)g Fu(is)h(supplied,)h +(the)f(return)e(v)-5 b(alue)39 b(is)g(its)g(least)h(signi\014can)m(t)g +(8)f(bits.)630 2845 y(An)m(y)g(command)f(asso)s(ciated)j(with)d(the)h +Ft(RETURN)e Fu(trap)i(is)g(executed)g(b)s(efore)g(execution)630 +2954 y(resumes)29 b(after)h(the)g(function)g(or)g(script.)40 +b(The)29 b(return)g(status)h(is)g(non-zero)g(if)g Ft(return)e +Fu(is)630 3064 y(supplied)h(a)i(non-n)m(umeric)g(argumen)m(t)g(or)f(is) +h(used)f(outside)h(a)g(function)f(and)g(not)h(during)630 +3173 y(the)g(execution)g(of)g(a)f(script)h(b)m(y)f Ft(.)g +Fu(or)g Ft(source)p Fu(.)150 3351 y Ft(shift)870 3494 +y(shift)46 b([)p Fj(n)p Ft(])630 3637 y Fu(Shift)41 b(the)g(p)s +(ositional)h(parameters)g(to)g(the)f(left)h(b)m(y)g Fr(n)p +Fu(.)73 b(The)40 b(p)s(ositional)j(parameters)630 3747 +y(from)34 b Fr(n)p Ft(+)p Fu(1)39 b(.)22 b(.)h(.)45 b +Ft($#)34 b Fu(are)g(renamed)g(to)h Ft($1)k Fu(.)22 b(.)g(.)46 +b Ft($#)p Fu(-)p Fr(n)p Fu(.)51 b(P)m(arameters)36 b(represen)m(ted)e +(b)m(y)g(the)630 3856 y(n)m(um)m(b)s(ers)d Ft($#)i Fu(do)m(wn)f(to)i +Ft($#)p Fu(-)p Fr(n)p Ft(+)p Fu(1)e(are)h(unset.)48 b +Fr(n)32 b Fu(m)m(ust)h(b)s(e)f(a)h(non-negativ)m(e)i(n)m(um)m(b)s(er)d +(less)630 3966 y(than)g(or)g(equal)h(to)g Ft($#)p Fu(.)46 +b(If)31 b Fr(n)h Fu(is)g(zero)h(or)f(greater)i(than)e +Ft($#)p Fu(,)g(the)h(p)s(ositional)g(parameters)630 4075 +y(are)e(not)h(c)m(hanged.)43 b(If)31 b Fr(n)g Fu(is)g(not)g(supplied,)f +(it)i(is)f(assumed)f(to)i(b)s(e)f(1.)43 b(The)31 b(return)f(status)630 +4185 y(is)g(zero)i(unless)d Fr(n)h Fu(is)g(greater)i(than)e +Ft($#)g Fu(or)g(less)h(than)f(zero,)i(non-zero)e(otherwise.)150 +4362 y Ft(test)150 4472 y([)870 4615 y(test)47 b Fj(expr)630 +4758 y Fu(Ev)-5 b(aluate)43 b(a)f(conditional)h(expression)f +Fr(expr)48 b Fu(and)41 b(return)g(a)h(status)g(of)g(0)g(\(true\))h(or)f +(1)630 4868 y(\(false\).)g(Eac)m(h)31 b(op)s(erator)f(and)f(op)s(erand) +g(m)m(ust)h(b)s(e)f(a)i(separate)g(argumen)m(t.)41 b(Expressions)630 +4977 y(are)26 b(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s +(elo)m(w)h(in)g(Section)h(6.4)h([Bash)e(Conditional)630 +5087 y(Expressions],)39 b(page)g(91.)64 b Ft(test)37 +b Fu(do)s(es)g(not)h(accept)i(an)m(y)e(options,)i(nor)e(do)s(es)f(it)h +(accept)630 5197 y(and)30 b(ignore)h(an)f(argumen)m(t)h(of)f +Ft(--)g Fu(as)h(signifying)f(the)h(end)f(of)g(options.)630 +5340 y(When)g(the)h Ft([)f Fu(form)g(is)g(used,)g(the)g(last)i(argumen) +m(t)e(to)i(the)e(command)g(m)m(ust)h(b)s(e)e(a)i Ft(])p +Fu(.)p eop end +%%Page: 49 55 +TeXDict begin 49 54 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y(Expressions)23 +b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h(follo)m(wing)h(op)s +(erators,)g(listed)f(in)f(decreasing)630 408 y(order)30 +b(of)h(precedence.)43 b(The)30 b(ev)-5 b(aluation)33 +b(dep)s(ends)28 b(on)j(the)g(n)m(um)m(b)s(er)f(of)h(argumen)m(ts;)g +(see)630 518 y(b)s(elo)m(w.)41 b(Op)s(erator)30 b(precedence)h(is)f +(used)g(when)f(there)i(are)f(\014v)m(e)h(or)f(more)h(argumen)m(ts.)630 +673 y Ft(!)f Fj(expr)210 b Fu(T)-8 b(rue)30 b(if)g Fr(expr)37 +b Fu(is)30 b(false.)630 829 y Ft(\()g Fj(expr)f Ft(\))133 +b Fu(Returns)23 b(the)i(v)-5 b(alue)25 b(of)f Fr(expr)p +Fu(.)38 b(This)24 b(ma)m(y)h(b)s(e)e(used)h(to)h(o)m(v)m(erride)g(the)g +(normal)1110 938 y(precedence)31 b(of)f(op)s(erators.)630 +1093 y Fj(expr1)f Ft(-a)h Fj(expr2)1110 1203 y Fu(T)-8 +b(rue)30 b(if)g(b)s(oth)g Fr(expr1)37 b Fu(and)30 b Fr(expr2)38 +b Fu(are)30 b(true.)630 1358 y Fj(expr1)f Ft(-o)h Fj(expr2)1110 +1468 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expr1)38 b +Fu(or)30 b Fr(expr2)37 b Fu(is)31 b(true.)630 1623 y(The)37 +b Ft(test)f Fu(and)g Ft([)h Fu(builtins)g(ev)-5 b(aluate)39 +b(conditional)f(expressions)f(using)g(a)g(set)h(of)f(rules)630 +1733 y(based)30 b(on)g(the)h(n)m(um)m(b)s(er)e(of)h(argumen)m(ts.)630 +1888 y(0)h(argumen)m(ts)1110 1998 y(The)f(expression)g(is)g(false.)630 +2153 y(1)h(argumen)m(t)1110 2262 y(The)f(expression)g(is)g(true)h(if,)f +(and)g(only)g(if,)h(the)g(argumen)m(t)f(is)h(not)f(n)m(ull.)630 +2418 y(2)h(argumen)m(ts)1110 2527 y(If)f(the)h(\014rst)f(argumen)m(t)h +(is)g(`)p Ft(!)p Fu(',)g(the)g(expression)g(is)g(true)f(if)h(and)f +(only)h(if)g(the)1110 2637 y(second)j(argumen)m(t)f(is)h(n)m(ull.)50 +b(If)33 b(the)h(\014rst)e(argumen)m(t)i(is)g(one)g(of)f(the)h(unary) +1110 2746 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f +([Bash)g(Conditional)g(Expres-)1110 2856 y(sions],)34 +b(page)f(91\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e +(test)j(is)f(true.)47 b(If)1110 2966 y(the)33 b(\014rst)g(argumen)m(t)h +(is)f(not)g(a)h(v)-5 b(alid)34 b(unary)e(op)s(erator,)i(the)g +(expression)f(is)1110 3075 y(false.)630 3230 y(3)e(argumen)m(ts)1110 +3340 y(The)f(follo)m(wing)i(conditions)f(are)f(applied)h(in)f(the)g +(order)g(listed.)1159 3472 y(1.)61 b(If)29 b(the)g(second)g(argumen)m +(t)h(is)f(one)h(of)f(the)h(binary)e(conditional)j(op)s(era-)1290 +3582 y(tors)c(\(see)h(Section)g(6.4)g([Bash)g(Conditional)f +(Expressions],)h(page)f(91\),)1290 3692 y(the)d(result)g(of)f(the)h +(expression)g(is)g(the)f(result)h(of)g(the)g(binary)f(test)h(using)1290 +3801 y(the)35 b(\014rst)e(and)h(third)g(argumen)m(ts)h(as)f(op)s +(erands.)52 b(The)34 b(`)p Ft(-a)p Fu(')g(and)g(`)p Ft(-o)p +Fu(')1290 3911 y(op)s(erators)24 b(are)g(considered)g(binary)f(op)s +(erators)h(when)f(there)h(are)h(three)1290 4020 y(argumen)m(ts.)1159 +4153 y(2.)61 b(If)41 b(the)h(\014rst)e(argumen)m(t)i(is)f(`)p +Ft(!)p Fu(',)k(the)d(v)-5 b(alue)41 b(is)h(the)f(negation)i(of)f(the) +1290 4262 y(t)m(w)m(o-argumen)m(t)33 b(test)e(using)f(the)g(second)h +(and)e(third)h(argumen)m(ts.)1159 4395 y(3.)61 b(If)35 +b(the)h(\014rst)e(argumen)m(t)i(is)g(exactly)h(`)p Ft(\()p +Fu(')f(and)f(the)g(third)g(argumen)m(t)h(is)1290 4504 +y(exactly)i(`)p Ft(\))p Fu(',)g(the)f(result)f(is)h(the)f(one-argumen)m +(t)i(test)f(of)f(the)h(second)1290 4614 y(argumen)m(t.)1159 +4746 y(4.)61 b(Otherwise,)30 b(the)h(expression)f(is)g(false.)630 +4902 y(4)h(argumen)m(ts)1110 5011 y(If)h(the)i(\014rst)e(argumen)m(t)h +(is)g(`)p Ft(!)p Fu(',)h(the)f(result)g(is)g(the)g(negation)h(of)f(the) +g(three-)1110 5121 y(argumen)m(t)h(expression)f(comp)s(osed)h(of)f(the) +h(remaining)g(argumen)m(ts.)50 b(Oth-)1110 5230 y(erwise,)34 +b(the)f(expression)g(is)g(parsed)g(and)f(ev)-5 b(aluated)34 +b(according)h(to)e(prece-)1110 5340 y(dence)e(using)e(the)i(rules)f +(listed)h(ab)s(o)m(v)m(e.)p eop end +%%Page: 50 56 +TeXDict begin 50 55 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(50)630 299 y(5)31 +b(or)f(more)h(argumen)m(ts)1110 408 y(The)43 b(expression)f(is)i +(parsed)e(and)g(ev)-5 b(aluated)45 b(according)f(to)f(precedence)1110 +518 y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)630 +690 y(When)40 b(used)f(with)g Ft(test)g Fu(or)h(`)p Ft([)p +Fu(',)j(the)d(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g +(sort)g(lexicographically)630 800 y(using)30 b(ASCI)s(I)f(ordering.)150 +972 y Ft(times)870 1113 y(times)630 1254 y Fu(Prin)m(t)37 +b(out)h(the)g(user)e(and)h(system)g(times)h(used)f(b)m(y)g(the)h(shell) +f(and)g(its)h(c)m(hildren.)61 b(The)630 1363 y(return)29 +b(status)i(is)f(zero.)150 1536 y Ft(trap)870 1677 y(trap)47 +b([-lp])f([)p Fj(arg)p Ft(])g([)p Fj(sigspec)g Ft(...)o(])630 +1817 y Fu(The)d(commands)f(in)h Fr(arg)51 b Fu(are)44 +b(to)g(b)s(e)e(read)h(and)g(executed)h(when)e(the)h(shell)g(receiv)m +(es)630 1927 y(signal)36 b Fr(sigsp)s(ec)p Fu(.)57 b(If)35 +b Fr(arg)44 b Fu(is)36 b(absen)m(t)g(\(and)f(there)h(is)g(a)f(single)i +Fr(sigsp)s(ec)6 b Fu(\))35 b(or)h(equal)g(to)h(`)p Ft(-)p +Fu(',)630 2037 y(eac)m(h)k(sp)s(eci\014ed)e(signal's)h(disp)s(osition)g +(is)f(reset)i(to)f(the)g(v)-5 b(alue)40 b(it)g(had)f(when)g(the)h +(shell)630 2146 y(w)m(as)33 b(started.)47 b(If)32 b Fr(arg)41 +b Fu(is)32 b(the)h(n)m(ull)f(string,)i(then)e(the)g(signal)i(sp)s +(eci\014ed)d(b)m(y)i(eac)m(h)g Fr(sigsp)s(ec)630 2256 +y Fu(is)g(ignored)h(b)m(y)f(the)g(shell)h(and)e(commands)h(it)h(in)m(v) +m(ok)m(es.)51 b(If)33 b Fr(arg)41 b Fu(is)33 b(not)h(presen)m(t)f(and)g +Ft(-p)630 2365 y Fu(has)g(b)s(een)g(supplied,)f(the)i(shell)f(displa)m +(ys)h(the)f(trap)g(commands)g(asso)s(ciated)i(with)e(eac)m(h)630 +2475 y Fr(sigsp)s(ec)p Fu(.)47 b(If)31 b(no)i(argumen)m(ts)f(are)h +(supplied,)e(or)i(only)f Ft(-p)g Fu(is)g(giv)m(en,)i +Ft(trap)d Fu(prin)m(ts)h(the)g(list)630 2585 y(of)c(commands)f(asso)s +(ciated)i(with)f(eac)m(h)h(signal)f(n)m(um)m(b)s(er)e(in)i(a)g(form)f +(that)h(ma)m(y)h(b)s(e)e(reused)630 2694 y(as)f(shell)h(input.)38 +b(The)26 b Ft(-l)f Fu(option)i(causes)f(the)g(shell)h(to)g(prin)m(t)e +(a)i(list)f(of)h(signal)g(names)f(and)630 2804 y(their)33 +b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47 b(Eac)m(h)34 +b Fr(sigsp)s(ec)39 b Fu(is)33 b(either)g(a)h(signal)g(name)f(or)g(a)g +(signal)630 2913 y(n)m(um)m(b)s(er.)39 b(Signal)31 b(names)f(are)h +(case)h(insensitiv)m(e)f(and)f(the)g Ft(SIG)g Fu(pre\014x)f(is)i +(optional.)630 3054 y(If)k(a)g Fr(sigsp)s(ec)41 b Fu(is)35 +b Ft(0)g Fu(or)g Ft(EXIT)p Fu(,)g Fr(arg)43 b Fu(is)35 +b(executed)h(when)e(the)h(shell)h(exits.)55 b(If)35 b(a)g +Fr(sigsp)s(ec)41 b Fu(is)630 3164 y Ft(DEBUG)p Fu(,)32 +b(the)g(command)g Fr(arg)40 b Fu(is)33 b(executed)g(b)s(efore)f(ev)m +(ery)h(simple)f(command,)h Ft(for)e Fu(com-)630 3273 +y(mand,)d Ft(case)g Fu(command,)h Ft(select)e Fu(command,)i(ev)m(ery)h +(arithmetic)g Ft(for)d Fu(command,)j(and)630 3383 y(b)s(efore)22 +b(the)g(\014rst)f(command)h(executes)i(in)e(a)g(shell)h(function.)37 +b(Refer)22 b(to)h(the)g(description)f(of)630 3493 y(the)i +Ft(extdebug)d Fu(option)j(to)h(the)f Ft(shopt)e Fu(builtin)h(\(see)i +(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 3602 +y(page)33 b(66\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)g +Ft(DEBUG)f Fu(trap.)46 b(If)31 b(a)i Fr(sigsp)s(ec)38 +b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 3712 y(command)h +Fr(arg)41 b Fu(is)33 b(executed)g(eac)m(h)h(time)f(a)g(shell)g +(function)g(or)f(a)h(script)g(executed)g(with)630 3821 +y(the)e Ft(.)f Fu(or)g Ft(source)f Fu(builtins)g(\014nishes)h +(executing.)630 3962 y(If)20 b(a)i Fr(sigsp)s(ec)27 b +Fu(is)21 b Ft(ERR)p Fu(,)h(the)f(command)g Fr(arg)29 +b Fu(is)21 b(executed)h(whenev)m(er)e(a)i(pip)s(eline)e(\(whic)m(h)h +(ma)m(y)630 4072 y(consist)35 b(of)g(a)f(single)h(simple)g(command\),)h +(a)e(list,)j(or)d(a)h(comp)s(ound)e(command)h(returns)630 +4181 y(a)41 b(non-zero)g(exit)h(status,)h(sub)5 b(ject)41 +b(to)g(the)g(follo)m(wing)h(conditions.)72 b(The)40 b +Ft(ERR)f Fu(trap)i(is)630 4291 y(not)c(executed)h(if)f(the)h(failed)f +(command)g(is)g(part)g(of)h(the)f(command)g(list)h(immediately)630 +4401 y(follo)m(wing)30 b(an)e Ft(until)f Fu(or)i Ft(while)e +Fu(k)m(eyw)m(ord,)i(part)g(of)f(the)h(test)g(follo)m(wing)h(the)f +Ft(if)f Fu(or)g Ft(elif)630 4510 y Fu(reserv)m(ed)45 +b(w)m(ords,)j(part)c(of)h(a)g(command)g(executed)g(in)g(a)g +Ft(&&)f Fu(or)h Ft(||)f Fu(list)h(except)h(the)630 4620 +y(command)28 b(follo)m(wing)j(the)d(\014nal)h Ft(&&)f +Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f(in)h(a)g(pip)s(eline)f(but)g +(the)h(last,)630 4729 y(or)d(if)g(the)f(command's)h(return)f(status)h +(is)g(b)s(eing)f(in)m(v)m(erted)i(using)e Ft(!)p Fu(.)39 +b(These)25 b(are)i(the)f(same)630 4839 y(conditions)31 +b(ob)s(ey)m(ed)f(b)m(y)h(the)f Ft(errexit)f Fu(\()p Ft(-e)p +Fu(\))h(option.)630 4980 y(Signals)37 b(ignored)f(up)s(on)f(en)m(try)i +(to)g(the)f(shell)h(cannot)g(b)s(e)f(trapp)s(ed)f(or)h(reset.)59 +b(T)-8 b(rapp)s(ed)630 5089 y(signals)28 b(that)f(are)h(not)f(b)s(eing) +g(ignored)g(are)g(reset)h(to)g(their)f(original)h(v)-5 +b(alues)28 b(in)e(a)i(subshell)630 5199 y(or)i(subshell)g(en)m +(vironmen)m(t)h(when)e(one)i(is)f(created.)630 5340 y(The)g(return)f +(status)i(is)f(zero)h(unless)f(a)h Fr(sigsp)s(ec)36 b +Fu(do)s(es)30 b(not)h(sp)s(ecify)f(a)g(v)-5 b(alid)31 +b(signal.)p eop end +%%Page: 51 57 +TeXDict begin 51 56 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(51)150 299 y Ft(umask)870 +434 y(umask)46 b([-p])h([-S])g([)p Fj(mode)p Ft(])630 +570 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f(\014le)h(creation)g +(mask)g(to)g Fr(mo)s(de)p Fu(.)40 b(If)29 b Fr(mo)s(de)34 +b Fu(b)s(egins)29 b(with)g(a)h(digit,)630 679 y(it)e(is)f(in)m +(terpreted)g(as)g(an)g(o)s(ctal)i(n)m(um)m(b)s(er;)e(if)g(not,)h(it)g +(is)f(in)m(terpreted)g(as)g(a)h(sym)m(b)s(olic)f(mo)s(de)630 +789 y(mask)i(similar)g(to)g(that)h(accepted)g(b)m(y)f(the)g +Ft(chmod)e Fu(command.)40 b(If)28 b Fr(mo)s(de)34 b Fu(is)28 +b(omitted,)j(the)630 899 y(curren)m(t)39 b(v)-5 b(alue)40 +b(of)f(the)g(mask)g(is)h(prin)m(ted.)66 b(If)39 b(the)g +Ft(-S)g Fu(option)g(is)h(supplied)d(without)j(a)630 1008 +y Fr(mo)s(de)d Fu(argumen)m(t,)d(the)e(mask)g(is)h(prin)m(ted)f(in)g(a) +g(sym)m(b)s(olic)h(format.)47 b(If)32 b(the)g Ft(-p)g +Fu(option)h(is)630 1118 y(supplied,)f(and)f Fr(mo)s(de)37 +b Fu(is)32 b(omitted,)i(the)f(output)f(is)g(in)g(a)g(form)g(that)h(ma)m +(y)g(b)s(e)e(reused)h(as)630 1227 y(input.)62 b(The)38 +b(return)f(status)h(is)g(zero)g(if)g(the)g(mo)s(de)g(is)g(successfully) +g(c)m(hanged)g(or)g(if)g(no)630 1337 y Fr(mo)s(de)d Fu(argumen)m(t)c +(is)f(supplied,)g(and)f(non-zero)i(otherwise.)630 1473 +y(Note)38 b(that)e(when)g(the)g(mo)s(de)g(is)g(in)m(terpreted)h(as)f +(an)g(o)s(ctal)i(n)m(um)m(b)s(er,)e(eac)m(h)i(n)m(um)m(b)s(er)d(of)630 +1582 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p +Fu(.)53 b(Th)m(us,)34 b(a)h(umask)e(of)i Ft(022)e Fu(results)h(in)g(p)s +(ermissions)630 1692 y(of)d Ft(755)p Fu(.)150 1853 y +Ft(unset)870 1989 y(unset)46 b([-fnv])g([)p Fj(name)p +Ft(])630 2124 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35 +b(or)f(function)f Fr(name)p Fu(.)52 b(If)33 b(the)i Ft(-v)e +Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 2234 +y Fu(refers)27 b(to)h(a)g(shell)f(v)-5 b(ariable)28 b(and)f(that)h(v)-5 +b(ariable)28 b(is)f(remo)m(v)m(ed.)41 b(If)27 b(the)g +Ft(-f)g Fu(option)g(is)h(giv)m(en,)630 2343 y(the)37 +b Fr(name)5 b Fu(s)37 b(refer)f(to)i(shell)f(functions,)h(and)e(the)h +(function)g(de\014nition)f(is)h(remo)m(v)m(ed.)61 b(If)630 +2453 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g +Fr(name)38 b Fu(is)c(a)f(v)-5 b(ariable)34 b(with)g(the)f +Fr(nameref)51 b Fu(attribute,)630 2563 y Fr(name)42 b +Fu(will)37 b(b)s(e)f(unset)g(rather)g(than)h(the)g(v)-5 +b(ariable)37 b(it)g(references.)60 b Ft(-n)36 b Fu(has)g(no)h(e\013ect) +h(if)630 2672 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65 +b(If)39 b(no)g(options)h(are)f(supplied,)h(eac)m(h)h +Fr(name)j Fu(refers)39 b(to)h(a)630 2782 y(v)-5 b(ariable;)45 +b(if)39 b(there)g(is)g(no)g(v)-5 b(ariable)40 b(b)m(y)f(that)h(name,)h +(a)f(function)f(with)g(that)g(name,)j(if)630 2891 y(an)m(y)-8 +b(,)34 b(is)e(unset.)46 b(Readonly)33 b(v)-5 b(ariables)33 +b(and)f(functions)g(ma)m(y)h(not)f(b)s(e)g(unset.)46 +b(Some)33 b(shell)630 3001 y(v)-5 b(ariables)29 b(lose)h(their)e(sp)s +(ecial)h(b)s(eha)m(vior)g(if)f(they)h(are)g(unset;)g(suc)m(h)f(b)s(eha) +m(vior)h(is)g(noted)f(in)630 3110 y(the)35 b(description)h(of)f(the)g +(individual)g(v)-5 b(ariables.)56 b(The)34 b(return)g(status)i(is)f +(zero)h(unless)f(a)630 3220 y Fr(name)h Fu(is)30 b(readonly)-8 +b(.)150 3464 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150 +3623 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m +(h)g(are)h(unique)e(to)j(or)e(ha)m(v)m(e)h(b)s(een)f(extended)g(in)150 +3733 y(Bash.)g(Some)30 b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g +(in)g(the)h Fm(posix)e Fu(standard.)150 3895 y Ft(alias)870 +4031 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p +Ft(])d(...)o(])630 4166 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f +(the)h Ft(-p)g Fu(option,)h Ft(alias)e Fu(prin)m(ts)g(the)h(list)h(of)f +(aliases)h(on)f(the)630 4276 y(standard)g(output)g(in)g(a)h(form)f +(that)h(allo)m(ws)h(them)e(to)h(b)s(e)f(reused)g(as)g(input.)39 +b(If)25 b(argumen)m(ts)630 4385 y(are)j(supplied,)e(an)i(alias)g(is)f +(de\014ned)f(for)h(eac)m(h)h Fr(name)33 b Fu(whose)27 +b Fr(v)-5 b(alue)33 b Fu(is)27 b(giv)m(en.)41 b(If)26 +b(no)h Fr(v)-5 b(alue)630 4495 y Fu(is)37 b(giv)m(en,)j(the)d(name)g +(and)g(v)-5 b(alue)37 b(of)h(the)f(alias)h(is)f(prin)m(ted.)61 +b(Aliases)38 b(are)f(describ)s(ed)f(in)630 4605 y(Section)31 +b(6.6)h([Aliases],)g(page)f(94.)150 4766 y Ft(bind)870 +4902 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870 +5011 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p +Ft(])f([-u)g Fj(function)p Ft(])g([-r)h Fj(keyseq)p Ft(])870 +5121 y(bind)g([-m)g Fj(keymap)p Ft(])e(-f)j Fj(filename)870 +5230 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command) +870 5340 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name)p +eop end +%%Page: 52 58 +TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(52)870 299 y Ft(bind)47 +b([-m)g Fj(keymap)p Ft(])e Fj(keyseq:readline-command)630 +432 y Fu(Displa)m(y)22 b(curren)m(t)f(Readline)h(\(see)f(Chapter)g(8)g +([Command)f(Line)h(Editing],)j(page)e(111\))g(k)m(ey)630 +542 y(and)36 b(function)g(bindings,)i(bind)d(a)i(k)m(ey)g(sequence)g +(to)h(a)f(Readline)g(function)f(or)h(macro,)630 651 y(or)44 +b(set)h(a)g(Readline)f(v)-5 b(ariable.)83 b(Eac)m(h)45 +b(non-option)g(argumen)m(t)f(is)g(a)h(command)f(as)g(it)630 +761 y(w)m(ould)e(app)s(ear)f(in)h(a)h(Readline)g(initialization)i +(\014le)d(\(see)h(Section)g(8.3)g([Readline)g(Init)630 +870 y(File],)c(page)d(114\),)j(but)c(eac)m(h)h(binding)f(or)g(command)h +(m)m(ust)f(b)s(e)g(passed)g(as)h(a)g(separate)630 980 +y(argumen)m(t;)31 b(e.g.,)h(`)p Ft("\\C-x\\C-r":re-read-init-f)o(ile)p +Fu('.)630 1113 y(Options,)e(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m +(wing)h(meanings:)630 1270 y Ft(-m)e Fj(keymap)66 b Fu(Use)54 +b Fr(k)m(eymap)j Fu(as)d(the)g(k)m(eymap)g(to)h(b)s(e)e(a\013ected)i(b) +m(y)f(the)g(subsequen)m(t)1110 1379 y(bindings.)46 b(Acceptable)34 +b Fr(k)m(eymap)i Fu(names)c(are)h Ft(emacs)p Fu(,)f Ft(emacs-standard)p +Fu(,)1110 1489 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p +Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p +Fu(,)f(and)1110 1598 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44 +b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g Ft(vi-command)c +Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 1708 y(synon)m(ym\);)30 +b Ft(emacs)f Fu(is)i(equiv)-5 b(alen)m(t)32 b(to)f Ft(emacs-standard)p +Fu(.)630 1864 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g +(Readline)g(functions.)630 2021 y Ft(-p)384 b Fu(Displa)m(y)34 +b(Readline)f(function)g(names)g(and)f(bindings)f(in)i(suc)m(h)f(a)i(w)m +(a)m(y)f(that)1110 2131 y(they)e(can)f(b)s(e)g(used)g(as)g(input)g(or)g +(in)g(a)h(Readline)g(initialization)i(\014le.)630 2287 +y Ft(-P)384 b Fu(List)31 b(curren)m(t)f(Readline)h(function)f(names)g +(and)g(bindings.)630 2444 y Ft(-v)384 b Fu(Displa)m(y)25 +b(Readline)f(v)-5 b(ariable)25 b(names)f(and)f(v)-5 b(alues)24 +b(in)g(suc)m(h)f(a)i(w)m(a)m(y)f(that)h(they)1110 2553 +y(can)31 b(b)s(e)e(used)h(as)h(input)e(or)h(in)g(a)h(Readline)g +(initialization)j(\014le.)630 2710 y Ft(-V)384 b Fu(List)31 +b(curren)m(t)f(Readline)h(v)-5 b(ariable)31 b(names)f(and)g(v)-5 +b(alues.)630 2866 y Ft(-s)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g +(sequences)f(b)s(ound)f(to)i(macros)g(and)f(the)g(strings)1110 +2976 y(they)d(output)f(in)h(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(they)g +(can)g(b)s(e)f(used)g(as)h(input)e(or)i(in)g(a)1110 3086 +y(Readline)d(initialization)i(\014le.)630 3242 y Ft(-S)384 +b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g(sequences)f(b)s(ound)f(to)i +(macros)g(and)f(the)g(strings)1110 3352 y(they)31 b(output.)630 +3508 y Ft(-f)f Fj(filename)1110 3618 y Fu(Read)h(k)m(ey)g(bindings)e +(from)h Fr(\014lename)p Fu(.)630 3774 y Ft(-q)g Fj(function)1110 +3884 y Fu(Query)g(ab)s(out)g(whic)m(h)g(k)m(eys)h(in)m(v)m(ok)m(e)h +(the)f(named)f Fr(function)p Fu(.)630 4041 y Ft(-u)g +Fj(function)1110 4150 y Fu(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i +(the)f(named)g Fr(function)p Fu(.)630 4307 y Ft(-r)g +Fj(keyseq)66 b Fu(Remo)m(v)m(e)32 b(an)m(y)f(curren)m(t)f(binding)f +(for)h Fr(k)m(eyseq)p Fu(.)630 4463 y Ft(-x)g Fj(keyseq:shell-command) +1110 4573 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h +(whenev)m(er)f Fr(k)m(eyseq)j Fu(is)d(en)m(tered.)1110 +4682 y(When)46 b Fr(shell-command)k Fu(is)c(executed,)51 +b(the)46 b(shell)g(sets)g(the)g Ft(READLINE_)1110 4792 +y(LINE)37 b Fu(v)-5 b(ariable)38 b(to)g(the)g(con)m(ten)m(ts)i(of)e +(the)g(Readline)g(line)g(bu\013er)f(and)g(the)1110 4902 +y Ft(READLINE_POINT)21 b Fu(and)k Ft(READLINE_MARK)c +Fu(v)-5 b(ariables)26 b(to)g(the)g(curren)m(t)f(lo)s(ca-)1110 +5011 y(tion)f(of)g(the)g(insertion)g(p)s(oin)m(t)g(and)f(the)h(sa)m(v)m +(ed)h(insertion)f(p)s(oin)m(t)g(\(the)g Fr(mark)6 b Fu(\),)1110 +5121 y(resp)s(ectiv)m(ely)-8 b(.)43 b(If)30 b(the)h(executed)g(command) +g(c)m(hanges)g(the)g(v)-5 b(alue)31 b(of)g(an)m(y)g(of)1110 +5230 y Ft(READLINE_LINE)p Fu(,)40 b Ft(READLINE_POINT)p +Fu(,)f(or)i Ft(READLINE_MARK)p Fu(,)e(those)i(new)1110 +5340 y(v)-5 b(alues)31 b(will)f(b)s(e)g(re\015ected)h(in)f(the)h +(editing)g(state.)p eop end +%%Page: 53 59 +TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y Ft(-X)384 +b Fu(List)27 b(all)i(k)m(ey)f(sequences)f(b)s(ound)e(to)j(shell)g +(commands)e(and)h(the)g(asso)s(ciated)1110 408 y(commands)j(in)g(a)h +(format)g(that)f(can)h(b)s(e)f(reused)f(as)i(input.)630 +568 y(The)26 b(return)f(status)i(is)f(zero)i(unless)d(an)i(in)m(v)-5 +b(alid)27 b(option)g(is)f(supplied)f(or)i(an)f(error)g(o)s(ccurs.)150 +727 y Ft(builtin)870 862 y(builtin)46 b([)p Fj(shell-builtin)e +Ft([)p Fj(args)p Ft(]])630 996 y Fu(Run)35 b(a)i(shell)f(builtin,)i +(passing)e(it)h Fr(args)p Fu(,)h(and)e(return)f(its)i(exit)g(status.)59 +b(This)35 b(is)i(useful)630 1106 y(when)29 b(de\014ning)h(a)g(shell)h +(function)f(with)g(the)g(same)h(name)f(as)h(a)g(shell)f(builtin,)g +(retaining)630 1215 y(the)k(functionalit)m(y)h(of)f(the)f(builtin)g +(within)g(the)h(function.)50 b(The)33 b(return)g(status)h(is)f(non-)630 +1325 y(zero)e(if)g Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f +(builtin)g(command.)150 1484 y Ft(caller)870 1619 y(caller)46 +b([)p Fj(expr)p Ft(])630 1753 y Fu(Returns)34 b(the)g(con)m(text)j(of)e +(an)m(y)g(activ)m(e)i(subroutine)c(call)j(\(a)f(shell)g(function)f(or)h +(a)g(script)630 1863 y(executed)c(with)f(the)h Ft(.)f +Fu(or)g Ft(source)f Fu(builtins\).)630 1998 y(Without)45 +b Fr(expr)p Fu(,)j Ft(caller)43 b Fu(displa)m(ys)i(the)f(line)h(n)m(um) +m(b)s(er)f(and)g(source)g(\014lename)h(of)g(the)630 2107 +y(curren)m(t)35 b(subroutine)g(call.)58 b(If)35 b(a)h(non-negativ)m(e)i +(in)m(teger)f(is)f(supplied)e(as)i Fr(expr)p Fu(,)h Ft(caller)630 +2217 y Fu(displa)m(ys)k(the)f(line)h(n)m(um)m(b)s(er,)h(subroutine)d +(name,)44 b(and)c(source)g(\014le)h(corresp)s(onding)e(to)630 +2326 y(that)c(p)s(osition)g(in)f(the)h(curren)m(t)f(execution)i(call)g +(stac)m(k.)54 b(This)34 b(extra)h(information)g(ma)m(y)630 +2436 y(b)s(e)30 b(used,)g(for)g(example,)h(to)g(prin)m(t)f(a)h(stac)m +(k)h(trace.)42 b(The)29 b(curren)m(t)i(frame)f(is)g(frame)h(0.)630 +2570 y(The)d(return)g(v)-5 b(alue)29 b(is)g(0)g(unless)f(the)h(shell)g +(is)g(not)g(executing)h(a)f(subroutine)e(call)j(or)f +Fr(expr)630 2680 y Fu(do)s(es)h(not)h(corresp)s(ond)e(to)i(a)g(v)-5 +b(alid)30 b(p)s(osition)h(in)f(the)g(call)i(stac)m(k.)150 +2839 y Ft(command)870 2974 y(command)46 b([-pVv])g Fj(command)g +Ft([)p Fj(arguments)f Ft(...)o(])630 3108 y Fu(Runs)32 +b Fr(command)k Fu(with)d Fr(argumen)m(ts)k Fu(ignoring)c(an)m(y)g +(shell)h(function)e(named)h Fr(command)p Fu(.)630 3218 +y(Only)39 b(shell)i(builtin)e(commands)h(or)g(commands)f(found)g(b)m(y) +h(searc)m(hing)h(the)f Ft(PATH)f Fu(are)630 3328 y(executed.)59 +b(If)36 b(there)h(is)f(a)h(shell)f(function)g(named)g +Ft(ls)p Fu(,)h(running)e(`)p Ft(command)29 b(ls)p Fu(')35 +b(within)630 3437 y(the)c(function)f(will)h(execute)g(the)g(external)g +(command)g Ft(ls)f Fu(instead)g(of)h(calling)h(the)f(func-)630 +3547 y(tion)36 b(recursiv)m(ely)-8 b(.)56 b(The)34 b +Ft(-p)h Fu(option)g(means)g(to)h(use)f(a)g(default)h(v)-5 +b(alue)35 b(for)g Ft(PATH)f Fu(that)i(is)630 3656 y(guaran)m(teed)f(to) +f(\014nd)e(all)j(of)f(the)g(standard)f(utilities.)52 +b(The)33 b(return)g(status)h(in)f(this)h(case)630 3766 +y(is)29 b(127)g(if)g Fr(command)j Fu(cannot)d(b)s(e)e(found)h(or)g(an)g +(error)h(o)s(ccurred,)f(and)g(the)h(exit)g(status)g(of)630 +3875 y Fr(command)34 b Fu(otherwise.)630 4010 y(If)e(either)h(the)f +Ft(-V)g Fu(or)g Ft(-v)g Fu(option)h(is)f(supplied,)g(a)h(description)f +(of)h Fr(command)j Fu(is)c(prin)m(ted.)630 4120 y(The)f +Ft(-v)h Fu(option)g(causes)g(a)g(single)h(w)m(ord)f(indicating)g(the)g +(command)g(or)g(\014le)g(name)g(used)630 4229 y(to)40 +b(in)m(v)m(ok)m(e)h Fr(command)h Fu(to)e(b)s(e)e(displa)m(y)m(ed;)44 +b(the)39 b Ft(-V)f Fu(option)i(pro)s(duces)d(a)j(more)f(v)m(erb)s(ose) +630 4339 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e +(status)h(is)g(zero)h(if)f Fr(command)k Fu(is)c(found,)h(and)630 +4448 y(non-zero)31 b(if)f(not.)150 4608 y Ft(declare)870 +4742 y(declare)46 b([-aAfFgiIlnrtux])d([-p])k([)p Fj(name)p +Ft([=)p Fj(value)p Ft(])d(...)o(])630 4877 y Fu(Declare)29 +b(v)-5 b(ariables)28 b(and)e(giv)m(e)j(them)e(attributes.)40 +b(If)27 b(no)g Fr(name)5 b Fu(s)27 b(are)h(giv)m(en,)h(then)e(displa)m +(y)630 4986 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31 +b(instead.)630 5121 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f +(the)h(attributes)g(and)e(v)-5 b(alues)36 b(of)f(eac)m(h)i +Fr(name)p Fu(.)55 b(When)36 b Ft(-p)630 5230 y Fu(is)i(used)g(with)g +Fr(name)43 b Fu(argumen)m(ts,)e(additional)e(options,)i(other)d(than)g +Ft(-f)g Fu(and)g Ft(-F)p Fu(,)i(are)630 5340 y(ignored.)p +eop end +%%Page: 54 60 +TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(When)40 +b Ft(-p)g Fu(is)g(supplied)f(without)i Fr(name)k Fu(argumen)m(ts,)f +Ft(declare)38 b Fu(will)j(displa)m(y)f(the)h(at-)630 +408 y(tributes)31 b(and)f(v)-5 b(alues)31 b(of)g(all)h(v)-5 +b(ariables)31 b(ha)m(ving)h(the)f(attributes)g(sp)s(eci\014ed)f(b)m(y)h +(the)g(addi-)630 518 y(tional)k(options.)52 b(If)34 b(no)g(other)g +(options)g(are)g(supplied)f(with)h Ft(-p)p Fu(,)g Ft(declare)e +Fu(will)j(displa)m(y)630 628 y(the)e(attributes)h(and)e(v)-5 +b(alues)33 b(of)g(all)h(shell)f(v)-5 b(ariables.)50 b(The)32 +b Ft(-f)g Fu(option)i(will)f(restrict)h(the)630 737 y(displa)m(y)d(to)g +(shell)f(functions.)630 877 y(The)41 b Ft(-F)f Fu(option)i(inhibits)e +(the)i(displa)m(y)f(of)g(function)g(de\014nitions;)47 +b(only)41 b(the)g(function)630 986 y(name)30 b(and)f(attributes)i(are)f +(prin)m(ted.)40 b(If)30 b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g +(enabled)g(using)630 1096 y Ft(shopt)24 b Fu(\(see)i(Section)g(4.3.2)i +([The)d(Shopt)f(Builtin],)k(page)e(66\),)i(the)d(source)h(\014le)f +(name)h(and)630 1205 y(line)31 b(n)m(um)m(b)s(er)e(where)h(eac)m(h)h +Fr(name)36 b Fu(is)30 b(de\014ned)f(are)i(displa)m(y)m(ed)g(as)g(w)m +(ell.)41 b Ft(-F)30 b Fu(implies)h Ft(-f)p Fu(.)630 1345 +y(The)36 b Ft(-g)g Fu(option)h(forces)g(v)-5 b(ariables)37 +b(to)g(b)s(e)f(created)i(or)e(mo)s(di\014ed)g(at)h(the)g(global)h(scop) +s(e,)630 1455 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f +(a)g(shell)h(function.)61 b(It)37 b(is)g(ignored)h(in)f(all)h(other)630 +1564 y(cases.)630 1704 y(The)50 b Ft(-I)h Fu(option)g(causes)h(lo)s +(cal)g(v)-5 b(ariables)51 b(to)h(inherit)f(the)g(attributes)g(\(except) +i(the)630 1813 y Fr(nameref)63 b Fu(attribute\))46 b(and)f(v)-5 +b(alue)45 b(of)h(an)m(y)f(existing)i(v)-5 b(ariable)46 +b(with)f(the)g(same)h Fr(name)630 1923 y Fu(at)40 b(a)f(surrounding)d +(scop)s(e.)66 b(If)39 b(there)g(is)g(no)f(existing)i(v)-5 +b(ariable,)42 b(the)d(lo)s(cal)h(v)-5 b(ariable)40 b(is)630 +2032 y(initially)32 b(unset.)630 2172 y(The)27 b(follo)m(wing)h +(options)g(can)f(b)s(e)g(used)f(to)i(restrict)g(output)e(to)i(v)-5 +b(ariables)28 b(with)f(the)g(sp)s(ec-)630 2281 y(i\014ed)j(attributes)h +(or)f(to)h(giv)m(e)h(v)-5 b(ariables)31 b(attributes:)630 +2451 y Ft(-a)384 b Fu(Eac)m(h)36 b Fr(name)k Fu(is)34 +b(an)h(indexed)g(arra)m(y)g(v)-5 b(ariable)36 b(\(see)f(Section)h(6.7)g +([Arra)m(ys],)1110 2560 y(page)31 b(95\).)630 2730 y +Ft(-A)384 b Fu(Eac)m(h)24 b Fr(name)k Fu(is)23 b(an)g(asso)s(ciativ)m +(e)j(arra)m(y)e(v)-5 b(ariable)24 b(\(see)g(Section)g(6.7)g([Arra)m +(ys],)1110 2839 y(page)31 b(95\).)630 3009 y Ft(-f)384 +b Fu(Use)31 b(function)f(names)g(only)-8 b(.)630 3178 +y Ft(-i)384 b Fu(The)36 b(v)-5 b(ariable)37 b(is)f(to)h(b)s(e)f +(treated)h(as)g(an)f(in)m(teger;)41 b(arithmetic)c(ev)-5 +b(aluation)1110 3288 y(\(see)29 b(Section)f(6.5)h([Shell)f +(Arithmetic],)i(page)e(93\))h(is)f(p)s(erformed)e(when)h(the)1110 +3397 y(v)-5 b(ariable)31 b(is)g(assigned)f(a)h(v)-5 b(alue.)630 +3567 y Ft(-l)384 b Fu(When)26 b(the)g(v)-5 b(ariable)27 +b(is)f(assigned)g(a)g(v)-5 b(alue,)28 b(all)f(upp)s(er-case)e(c)m +(haracters)j(are)1110 3676 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.) +43 b(The)30 b(upp)s(er-case)g(attribute)h(is)g(disabled.)630 +3846 y Ft(-n)384 b Fu(Giv)m(e)28 b(eac)m(h)g Fr(name)k +Fu(the)27 b Fr(nameref)44 b Fu(attribute,)28 b(making)f(it)h(a)f(name)f +(reference)1110 3955 y(to)32 b(another)g(v)-5 b(ariable.)46 +b(That)31 b(other)h(v)-5 b(ariable)33 b(is)f(de\014ned)e(b)m(y)i(the)g +(v)-5 b(alue)32 b(of)1110 4065 y Fr(name)p Fu(.)54 b(All)35 +b(references,)h(assignmen)m(ts,)h(and)d(attribute)h(mo)s(di\014cations) +g(to)1110 4174 y Fr(name)p Fu(,)27 b(except)f(for)f(those)h(using)f(or) +g(c)m(hanging)h(the)f Ft(-n)g Fu(attribute)h(itself,)i(are)1110 +4284 y(p)s(erformed)22 b(on)h(the)g(v)-5 b(ariable)25 +b(referenced)e(b)m(y)g Fr(name)5 b Fu('s)23 b(v)-5 b(alue.)39 +b(The)23 b(nameref)1110 4394 y(attribute)31 b(cannot)g(b)s(e)f(applied) +g(to)h(arra)m(y)g(v)-5 b(ariables.)630 4563 y Ft(-r)384 +b Fu(Mak)m(e)25 b Fr(name)5 b Fu(s)23 b(readonly)-8 b(.)39 +b(These)24 b(names)f(cannot)h(then)f(b)s(e)g(assigned)h(v)-5 +b(alues)1110 4672 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h +(statemen)m(ts)h(or)f(unset.)630 4842 y Ft(-t)384 b Fu(Giv)m(e)33 +b(eac)m(h)h Fr(name)j Fu(the)32 b Ft(trace)f Fu(attribute.)46 +b(T)-8 b(raced)32 b(functions)g(inherit)g(the)1110 4951 +y Ft(DEBUG)26 b Fu(and)h Ft(RETURN)f Fu(traps)h(from)g(the)h(calling)h +(shell.)40 b(The)27 b(trace)i(attribute)1110 5061 y(has)h(no)g(sp)s +(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630 5230 y +Ft(-u)384 b Fu(When)28 b(the)h(v)-5 b(ariable)29 b(is)f(assigned)h(a)f +(v)-5 b(alue,)30 b(all)f(lo)m(w)m(er-case)i(c)m(haracters)f(are)1110 +5340 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40 b(The)30 +b(lo)m(w)m(er-case)j(attribute)e(is)g(disabled.)p eop +end +%%Page: 55 61 +TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y Ft(-x)384 +b Fu(Mark)30 b(eac)m(h)h Fr(name)k Fu(for)29 b(exp)s(ort)h(to)g +(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110 +408 y(ronmen)m(t.)630 560 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g(`) +p Ft(-)p Fu(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f +(the)g(exceptions)h(that)630 670 y(`)p Ft(+a)p Fu(')23 +b(and)f(`)p Ft(+A)p Fu(')h(ma)m(y)h(not)f(b)s(e)f(used)g(to)i(destro)m +(y)g(arra)m(y)f(v)-5 b(ariables)24 b(and)e(`)p Ft(+r)p +Fu(')h(will)g(not)g(remo)m(v)m(e)630 780 y(the)36 b(readonly)h +(attribute.)59 b(When)36 b(used)f(in)h(a)h(function,)g +Ft(declare)d Fu(mak)m(es)j(eac)m(h)h Fr(name)630 889 +y Fu(lo)s(cal,)e(as)d(with)h(the)f Ft(local)f Fu(command,)j(unless)d +(the)i Ft(-g)f Fu(option)h(is)f(used.)49 b(If)33 b(a)h(v)-5 +b(ariable)630 999 y(name)30 b(is)h(follo)m(w)m(ed)h(b)m(y)e(=)p +Fr(v)-5 b(alue)p Fu(,)31 b(the)f(v)-5 b(alue)31 b(of)g(the)f(v)-5 +b(ariable)32 b(is)e(set)h(to)g Fr(v)-5 b(alue)p Fu(.)630 +1130 y(When)41 b(using)g Ft(-a)g Fu(or)h Ft(-A)e Fu(and)h(the)h(comp)s +(ound)e(assignmen)m(t)i(syn)m(tax)g(to)g(create)h(arra)m(y)630 +1239 y(v)-5 b(ariables,)28 b(additional)f(attributes)g(do)f(not)h(tak)m +(e)h(e\013ect)g(un)m(til)e(subsequen)m(t)g(assignmen)m(ts.)630 +1370 y(The)35 b(return)f(status)i(is)g(zero)g(unless)f(an)g(in)m(v)-5 +b(alid)36 b(option)g(is)g(encoun)m(tered,)h(an)f(attempt)630 +1480 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g(using)f(`)p +Ft(-f)f(foo=bar)p Fu(',)h(an)h(attempt)g(is)g(made)g(to)h(assign)630 +1589 y(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5 +b(ariable,)47 b(an)42 b(attempt)h(is)f(made)g(to)h(assign)f(a)h(v)-5 +b(alue)42 b(to)h(an)630 1699 y(arra)m(y)30 b(v)-5 b(ariable)30 +b(without)g(using)e(the)i(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g +(\(see)h(Section)f(6.7)630 1808 y([Arra)m(ys],)47 b(page)c(95\),)48 +b(one)43 b(of)g(the)g Fr(names)k Fu(is)c(not)g(a)g(v)-5 +b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630 +1918 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g +(for)g(a)h(readonly)f(v)-5 b(ariable,)29 b(an)e(attempt)630 +2028 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g +(arra)m(y)h(v)-5 b(ariable,)30 b(or)e(an)g(attempt)i(is)e(made)g(to)630 +2137 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g +Ft(-f)p Fu(.)150 2289 y Ft(echo)870 2420 y(echo)47 b([-neE])f([)p +Fj(arg)g Ft(...])630 2551 y Fu(Output)31 b(the)i Fr(arg)8 +b Fu(s,)33 b(separated)g(b)m(y)g(spaces,)g(terminated)g(with)f(a)h +(newline.)47 b(The)32 b(return)630 2660 y(status)f(is)f(0)h(unless)f(a) +h(write)g(error)f(o)s(ccurs.)41 b(If)30 b Ft(-n)g Fu(is)h(sp)s +(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 2770 +y(suppressed.)38 b(If)29 b(the)h Ft(-e)f Fu(option)h(is)f(giv)m(en,)i +(in)m(terpretation)g(of)e(the)h(follo)m(wing)h(bac)m(kslash-)630 +2880 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78 +b(The)42 b Ft(-E)g Fu(option)h(disables)g(the)g(in)m(terpretation)h(of) +630 2989 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g +(systems)f(where)g(they)h(are)g(in)m(terpreted)g(b)m(y)f(default.)630 +3099 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e +(used)g(to)h(dynamically)h(determine)f(whether)f(or)630 +3208 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g +(b)m(y)f(default.)48 b Ft(echo)32 b Fu(do)s(es)g(not)i(in)m(terpret)630 +3318 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630 +3449 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f +(sequences:)630 3601 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 +3753 y Ft(\\b)384 b Fu(bac)m(kspace)630 3905 y Ft(\\c)g +Fu(suppress)28 b(further)h(output)630 4057 y Ft(\\e)630 +4166 y(\\E)384 b Fu(escap)s(e)630 4318 y Ft(\\f)g Fu(form)30 +b(feed)630 4470 y Ft(\\n)384 b Fu(new)30 b(line)630 4622 +y Ft(\\r)384 b Fu(carriage)32 b(return)630 4774 y Ft(\\t)384 +b Fu(horizon)m(tal)32 b(tab)630 4926 y Ft(\\v)384 b Fu(v)m(ertical)32 +b(tab)630 5078 y Ft(\\\\)384 b Fu(bac)m(kslash)630 5230 +y Ft(\\0)p Fj(nnn)240 b Fu(the)32 b(eigh)m(t-bit)i(c)m(haracter)g +(whose)e(v)-5 b(alue)33 b(is)f(the)g(o)s(ctal)i(v)-5 +b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 5340 y(three)e(o)s(ctal)g +(digits\))p eop end +%%Page: 56 62 +TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y Ft(\\x)p +Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e(v)-5 +b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39 b +Fr(HH)1110 408 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630 +563 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41 b(Unico)s(de)g(\(ISO/IEC)f +(10646\))j(c)m(haracter)g(whose)e(v)-5 b(alue)41 b(is)g(the)g(hex-)1110 +673 y(adecimal)32 b(v)-5 b(alue)31 b Fr(HHHH)41 b Fu(\(one)31 +b(to)g(four)e(hex)h(digits\))630 828 y Ft(\\U)p Fj(HHHHHHHH)1110 +938 y Fu(the)41 b(Unico)s(de)g(\(ISO/IEC)f(10646\))j(c)m(haracter)g +(whose)e(v)-5 b(alue)41 b(is)g(the)g(hex-)1110 1047 y(adecimal)32 +b(v)-5 b(alue)31 b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e +(digits\))150 1202 y Ft(enable)870 1334 y(enable)46 b([-a])h([-dnps])f +([-f)g Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])630 +1467 y Fu(Enable)36 b(and)f(disable)h(builtin)g(shell)g(commands.)56 +b(Disabling)37 b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630 +1576 y(command)e(whic)m(h)g(has)g(the)g(same)h(name)f(as)h(a)f(shell)h +(builtin)e(to)i(b)s(e)f(executed)h(without)630 1686 y(sp)s(ecifying)27 +b(a)g(full)g(pathname,)g(ev)m(en)h(though)f(the)g(shell)g(normally)g +(searc)m(hes)h(for)f(builtins)630 1795 y(b)s(efore)35 +b(disk)g(commands.)55 b(If)35 b Ft(-n)g Fu(is)g(used,)h(the)g +Fr(name)5 b Fu(s)35 b(b)s(ecome)h(disabled.)55 b(Otherwise)630 +1905 y Fr(name)5 b Fu(s)44 b(are)h(enabled.)82 b(F)-8 +b(or)45 b(example,)k(to)c(use)f(the)g Ft(test)f Fu(binary)h(found)f +(via)h Ft($PATH)630 2015 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g +(v)m(ersion,)h(t)m(yp)s(e)g(`)p Ft(enable)e(-n)h(test)p +Fu('.)630 2147 y(If)45 b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or) +d(no)g Fr(name)51 b Fu(argumen)m(ts)46 b(app)s(ear,)k(a)c(list)h(of)f +(shell)630 2256 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38 +b(no)f(other)h(argumen)m(ts,)j(the)d(list)g(consists)g(of)g(all)h +(enabled)630 2366 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h +Fu(option)g(means)g(to)g(list)h(eac)m(h)g(builtin)f(with)f(an)h +(indication)h(of)630 2476 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.) +630 2608 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g +(builtin)f(command)h Fr(name)27 b Fu(from)22 b(shared)f(ob)5 +b(ject)630 2717 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp) +s(ort)d(dynamic)i(loading.)46 b(The)31 b Ft(-d)g Fu(option)h(will)h +(delete)630 2827 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p +Fu(.)630 2959 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the) +g(shell)g(builtins)g(is)g(displa)m(y)m(ed.)52 b(The)33 +b Ft(-s)g Fu(option)630 3069 y(restricts)j Ft(enable)d +Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54 +b(If)34 b Ft(-s)h Fu(is)g(used)f(with)g Ft(-f)p Fu(,)i(the)f(new)630 +3178 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i +(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(72\).)630 +3311 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i +Fr(name)k Fu(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g +(error)630 3420 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g +(ob)5 b(ject.)150 3575 y Ft(help)870 3707 y(help)47 b([-dms])f([)p +Fj(pattern)p Ft(])630 3840 y Fu(Displa)m(y)40 b(helpful)e(information)h +(ab)s(out)g(builtin)f(commands.)66 b(If)38 b Fr(pattern)h +Fu(is)g(sp)s(eci\014ed,)630 3949 y Ft(help)28 b Fu(giv)m(es)i(detailed) +g(help)e(on)h(all)h(commands)e(matc)m(hing)i Fr(pattern)p +Fu(,)g(otherwise)f(a)g(list)h(of)630 4059 y(the)h(builtins)e(is)i(prin) +m(ted.)630 4191 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo) +m(wing)h(meanings:)630 4346 y Ft(-d)384 b Fu(Displa)m(y)32 +b(a)e(short)g(description)h(of)f(eac)m(h)i Fr(pattern)630 +4501 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h) +h Fr(pattern)e Fu(in)g(a)h(manpage-lik)m(e)h(format)630 +4656 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(a)h(short)f(usage)h +(synopsis)e(for)i(eac)m(h)g Fr(pattern)630 4811 y Fu(The)f(return)f +(status)i(is)f(zero)h(unless)f(no)g(command)h(matc)m(hes)g +Fr(pattern)p Fu(.)150 4966 y Ft(let)870 5098 y(let)47 +b Fj(expression)e Ft([)p Fj(expression)g Ft(...)o(])630 +5230 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s +(e)d(p)s(erformed)g(on)i(shell)g(v)-5 b(ariables.)74 +b(Eac)m(h)630 5340 y Fr(expression)31 b Fu(is)g(ev)-5 +b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en)h(b)s(elo)m(w)f +(in)f(Section)i(6.5)g([Shell)p eop end +%%Page: 57 63 +TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y(Arithmetic],)51 +b(page)46 b(93.)87 b(If)45 b(the)g(last)h Fr(expression)g +Fu(ev)-5 b(aluates)47 b(to)f(0,)k Ft(let)44 b Fu(returns)g(1;)630 +408 y(otherwise)31 b(0)g(is)f(returned.)150 568 y Ft(local)870 +702 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p +Fj(value)p Ft(])e(...)630 836 y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m +(t,)g(a)f(lo)s(cal)h(v)-5 b(ariable)27 b(named)e Fr(name)31 +b Fu(is)26 b(created,)i(and)d(assigned)h Fr(v)-5 b(alue)p +Fu(.)630 946 y(The)37 b Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f(the) +h(options)g(accepted)g(b)m(y)g Ft(declare)p Fu(.)59 b +Ft(local)36 b Fu(can)i(only)630 1055 y(b)s(e)j(used)h(within)f(a)i +(function;)48 b(it)42 b(mak)m(es)h(the)f(v)-5 b(ariable)43 +b Fr(name)48 b Fu(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)630 +1165 y(restricted)h(to)f(that)h(function)e(and)g(its)i(c)m(hildren.)78 +b(If)42 b Fr(name)48 b Fu(is)43 b(`)p Ft(-)p Fu(',)j(the)d(set)h(of)f +(shell)630 1275 y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f +(function)g(in)g(whic)m(h)g Ft(local)f Fu(is)h(in)m(v)m(ok)m(ed:)48 +b(shell)34 b(options)630 1384 y(c)m(hanged)e(using)e(the)i +Ft(set)e Fu(builtin)h(inside)g(the)g(function)g(are)g(restored)h(to)g +(their)f(original)630 1494 y(v)-5 b(alues)36 b(when)e(the)i(function)f +(returns.)54 b(The)35 b(restore)h(is)g(e\013ected)h(as)e(if)h(a)g +(series)f(of)h Ft(set)630 1603 y Fu(commands)j(w)m(ere)g(executed)h(to) +f(restore)h(the)f(v)-5 b(alues)39 b(that)h(w)m(ere)f(in)f(place)i(b)s +(efore)f(the)630 1713 y(function.)j(The)30 b(return)g(status)h(is)g +(zero)h(unless)e Ft(local)g Fu(is)h(used)f(outside)h(a)g(function,)g +(an)630 1823 y(in)m(v)-5 b(alid)31 b Fr(name)k Fu(is)c(supplied,)e(or)i +Fr(name)k Fu(is)c(a)f(readonly)h(v)-5 b(ariable.)150 +1982 y Ft(logout)870 2116 y(logout)46 b([)p Fj(n)p Ft(])630 +2250 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i(status)g(of)f +Fr(n)g Fu(to)h(the)g(shell's)f(paren)m(t.)150 2409 y +Ft(mapfile)870 2544 y(mapfile)46 b([-d)h Fj(delim)p Ft(])f([-n)h +Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g Fj(count)p +Ft(])1061 2653 y([-t])h([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p +Ft(])f([-c)g Fj(quantum)p Ft(])g([)p Fj(array)p Ft(])630 +2788 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j +(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p +Fu(,)i(or)630 2897 y(from)28 b(\014le)h(descriptor)f +Fr(fd)k Fu(if)c(the)h Ft(-u)f Fu(option)h(is)g(supplied.)39 +b(The)28 b(v)-5 b(ariable)29 b Ft(MAPFILE)e Fu(is)i(the)630 +3007 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30 +b(if)g(supplied,)g(ha)m(v)m(e)h(the)g(follo)m(wing)h(meanings:)630 +3166 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f +Fr(delim)g Fu(is)f(used)g(to)h(terminate)h(eac)m(h)g(input)d(line,)1110 +3275 y(rather)41 b(than)h(newline.)74 b(If)41 b Fr(delim)h +Fu(is)g(the)f(empt)m(y)h(string,)j Ft(mapfile)40 b Fu(will)1110 +3385 y(terminate)31 b(a)g(line)g(when)e(it)i(reads)f(a)h(NUL)g(c)m +(haracter.)630 3544 y Ft(-n)384 b Fu(Cop)m(y)30 b(at)h(most)g +Fr(coun)m(t)i Fu(lines.)41 b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h +(lines)e(are)h(copied.)630 3703 y Ft(-O)384 b Fu(Begin)31 +b(assigning)g(to)g Fr(arra)m(y)39 b Fu(at)31 b(index)f +Fr(origin)p Fu(.)41 b(The)30 b(default)h(index)f(is)g(0.)630 +3862 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g Fr(coun)m(t)j +Fu(lines)e(read.)630 4021 y Ft(-t)384 b Fu(Remo)m(v)m(e)32 +b(a)f(trailing)g Fr(delim)g Fu(\(default)g(newline\))f(from)g(eac)m(h)i +(line)f(read.)630 4180 y Ft(-u)384 b Fu(Read)31 b(lines)f(from)g +(\014le)h(descriptor)f Fr(fd)j Fu(instead)e(of)f(the)h(standard)e +(input.)630 4340 y Ft(-C)384 b Fu(Ev)-5 b(aluate)26 b +Fr(callbac)m(k)33 b Fu(eac)m(h)26 b(time)g Fr(quan)m(tum)f +Fu(lines)g(are)g(read.)39 b(The)25 b Ft(-c)f Fu(option)1110 +4449 y(sp)s(eci\014es)30 b Fr(quan)m(tum)p Fu(.)630 4608 +y Ft(-c)384 b Fu(Sp)s(ecify)30 b(the)g(n)m(um)m(b)s(er)f(of)i(lines)f +(read)h(b)s(et)m(w)m(een)g(eac)m(h)g(call)h(to)f Fr(callbac)m(k)p +Fu(.)630 4767 y(If)36 b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g +Ft(-c)p Fu(,)h(the)g(default)f(quan)m(tum)g(is)h(5000.)60 +b(When)36 b Fr(callbac)m(k)44 b Fu(is)630 4877 y(ev)-5 +b(aluated,)30 b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f(next)g +(arra)m(y)g(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630 +4986 y(the)39 b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i +(as)e(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47 +b Fu(is)630 5096 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read) +g(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630 +5230 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g +Ft(mapfile)c Fu(will)j(clear)g Fr(arra)m(y)34 b Fu(b)s(efore)24 +b(assigning)630 5340 y(to)31 b(it.)p eop end +%%Page: 58 64 +TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y Ft(mapfile)41 +b Fu(returns)g(successfully)i(unless)e(an)i(in)m(v)-5 +b(alid)43 b(option)g(or)g(option)g(argumen)m(t)g(is)630 +408 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5 +b(alid)31 b(or)g(unassignable,)f(or)h Fr(arra)m(y)38 +b Fu(is)31 b(not)f(an)h(indexed)e(arra)m(y)-8 b(.)150 +564 y Ft(printf)870 697 y(printf)46 b([-v)h Fj(var)p +Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 830 +y Fu(W)-8 b(rite)27 b(the)g(formatted)f Fr(argumen)m(ts)k +Fu(to)d(the)f(standard)f(output)h(under)e(the)i(con)m(trol)i(of)e(the) +630 939 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g +(the)g(output)g(to)g(b)s(e)f(assigned)h(to)h(the)f(v)-5 +b(ariable)39 b Fr(v)-5 b(ar)630 1049 y Fu(rather)30 b(than)g(b)s(eing)g +(prin)m(ted)g(to)h(the)g(standard)e(output.)630 1181 +y(The)36 b Fr(format)i Fu(is)f(a)f(c)m(haracter)i(string)e(whic)m(h)g +(con)m(tains)i(three)e(t)m(yp)s(es)g(of)h(ob)5 b(jects:)53 +b(plain)630 1291 y(c)m(haracters,)41 b(whic)m(h)c(are)h(simply)e +(copied)i(to)g(standard)f(output,)i(c)m(haracter)g(escap)s(e)e(se-)630 +1401 y(quences,)g(whic)m(h)f(are)g(con)m(v)m(erted)h(and)f(copied)g(to) +g(the)g(standard)f(output,)i(and)f(format)630 1510 y(sp)s +(eci\014cations,)j(eac)m(h)e(of)g(whic)m(h)f(causes)g(prin)m(ting)g(of) +h(the)f(next)h(successiv)m(e)g Fr(argumen)m(t)p Fu(.)630 +1620 y(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e +Fu(formats,)27 b Ft(printf)c Fu(in)m(terprets)i(the)f(follo)m(wing)630 +1729 y(extensions:)630 1885 y Ft(\045b)384 b Fu(Causes)38 +b Ft(printf)f Fu(to)j(expand)e(bac)m(kslash)h(escap)s(e)g(sequences)g +(in)f(the)h(cor-)1110 1995 y(resp)s(onding)31 b Fr(argumen)m(t)j +Fu(in)e(the)h(same)f(w)m(a)m(y)h(as)g Ft(echo)c(-e)j +Fu(\(see)h(Section)g(4.2)1110 2104 y([Bash)e(Builtins],)g(page)g(51\).) +630 2260 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e +Fu(to)i(output)g(the)g(corresp)s(onding)f Fr(argumen)m(t)j +Fu(in)d(a)i(format)1110 2370 y(that)e(can)g(b)s(e)e(reused)h(as)h +(shell)f(input.)630 2525 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110 +2635 y Fu(Causes)f Ft(printf)e Fu(to)j(output)f(the)g(date-time)i +(string)e(resulting)h(from)e(using)1110 2744 y Fr(datefm)m(t)45 +b Fu(as)d(a)g(format)g(string)g(for)g Ft(strftime)p Fu(\(3\).)74 +b(The)41 b(corresp)s(onding)1110 2854 y Fr(argumen)m(t)h +Fu(is)e(an)g(in)m(teger)i(represen)m(ting)e(the)g(n)m(um)m(b)s(er)f(of) +h(seconds)g(since)1110 2964 y(the)24 b(ep)s(o)s(c)m(h.)38 +b(Tw)m(o)24 b(sp)s(ecial)h(argumen)m(t)f(v)-5 b(alues)24 +b(ma)m(y)h(b)s(e)e(used:)36 b(-1)25 b(represen)m(ts)1110 +3073 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i(represen)m(ts)f(the)g +(time)h(the)f(shell)g(w)m(as)g(in)m(v)m(ok)m(ed.)1110 +3183 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m +(ersion)f(b)s(eha)m(v)m(es)g(as)g(if)f(-1)h(had)f(b)s(een)1110 +3292 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g +Ft(printf)f Fu(b)s(eha)m(vior.)630 3448 y(The)d(\045b,)h(\045q,)h(and)e +(\045T)g(directiv)m(es)j(all)e(use)g(the)g(\014eld)f(width)g(and)h +(precision)g(argumen)m(ts)630 3558 y(from)f(the)g(format)h(sp)s +(eci\014cation)g(and)e(write)i(that)f(man)m(y)h(b)m(ytes)f(from)g(\(or) +h(use)e(that)i(wide)630 3667 y(a)42 b(\014eld)g(for\))g(the)h(expanded) +e(argumen)m(t,)k(whic)m(h)d(usually)g(con)m(tains)h(more)f(c)m +(haracters)630 3777 y(than)30 b(the)h(original.)630 3910 +y(Argumen)m(ts)d(to)h(non-string)e(format)i(sp)s(eci\014ers)e(are)h +(treated)h(as)g(C)e(language)j(constan)m(ts,)630 4019 +y(except)22 b(that)g(a)g(leading)g(plus)e(or)h(min)m(us)f(sign)i(is)f +(allo)m(w)m(ed,)k(and)c(if)g(the)g(leading)h(c)m(haracter)h(is)630 +4129 y(a)i(single)g(or)f(double)h(quote,)h(the)f(v)-5 +b(alue)25 b(is)f(the)h(ASCI)s(I)e(v)-5 b(alue)25 b(of)f(the)h(follo)m +(wing)h(c)m(haracter.)630 4261 y(The)31 b Fr(format)i +Fu(is)f(reused)e(as)i(necessary)f(to)i(consume)e(all)h(of)f(the)h +Fr(argumen)m(ts)p Fu(.)44 b(If)30 b(the)i Fr(for-)630 +4371 y(mat)c Fu(requires)e(more)g Fr(argumen)m(ts)k Fu(than)25 +b(are)i(supplied,)e(the)h(extra)h(format)f(sp)s(eci\014cations)630 +4481 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g(v)-5 b(alue)29 +b(or)g(n)m(ull)f(string,)h(as)g(appropriate,)g(had)f(b)s(een)g +(supplied.)38 b(The)630 4590 y(return)29 b(v)-5 b(alue)31 +b(is)g(zero)g(on)f(success,)h(non-zero)g(on)f(failure.)150 +4746 y Ft(read)870 4879 y(read)47 b([-ers])f([-a)h Fj(aname)p +Ft(])f([-d)h Fj(delim)p Ft(])f([-i)h Fj(text)p Ft(])f([-n)h +Fj(nchars)p Ft(])1061 4988 y([-N)g Fj(nchars)p Ft(])f([-p)h +Fj(prompt)p Ft(])e([-t)i Fj(timeout)p Ft(])f([-u)h Fj(fd)p +Ft(])g([)p Fj(name)f Ft(...)o(])630 5121 y Fu(One)38 +b(line)g(is)g(read)g(from)g(the)g(standard)f(input,)j(or)e(from)f(the)i +(\014le)f(descriptor)g Fr(fd)j Fu(sup-)630 5230 y(plied)34 +b(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(-u)g Fu(option,)i(split)f(in)m +(to)g(w)m(ords)f(as)g(describ)s(ed)g(ab)s(o)m(v)m(e)h(in)630 +5340 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(32,)j +(and)36 b(the)i(\014rst)f(w)m(ord)g(is)g(assigned)h(to)g(the)p +eop end +%%Page: 59 65 +TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(59)630 299 y(\014rst)32 +b Fr(name)p Fu(,)h(the)g(second)g(w)m(ord)f(to)h(the)g(second)g +Fr(name)p Fu(,)g(and)f(so)h(on.)47 b(If)32 b(there)h(are)g(more)630 +408 y(w)m(ords)39 b(than)g(names,)j(the)e(remaining)f(w)m(ords)g(and)g +(their)h(in)m(terv)m(ening)g(delimiters)h(are)630 518 +y(assigned)29 b(to)h(the)g(last)g Fr(name)p Fu(.)40 b(If)29 +b(there)g(are)h(few)m(er)f(w)m(ords)g(read)g(from)g(the)g(input)g +(stream)630 628 y(than)35 b(names,)i(the)e(remaining)h(names)f(are)h +(assigned)f(empt)m(y)h(v)-5 b(alues.)56 b(The)34 b(c)m(haracters)630 +737 y(in)e(the)h(v)-5 b(alue)33 b(of)g(the)g Ft(IFS)f +Fu(v)-5 b(ariable)33 b(are)h(used)d(to)j(split)f(the)g(line)g(in)m(to)g +(w)m(ords)g(using)f(the)630 847 y(same)d(rules)f(the)g(shell)h(uses)f +(for)g(expansion)g(\(describ)s(ed)g(ab)s(o)m(v)m(e)i(in)e(Section)h +(3.5.7)h([W)-8 b(ord)630 956 y(Splitting],)38 b(page)f(32\).)60 +b(The)35 b(bac)m(kslash)i(c)m(haracter)h(`)p Ft(\\)p +Fu(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m(e)h(an)m(y)630 +1066 y(sp)s(ecial)31 b(meaning)g(for)f(the)g(next)h(c)m(haracter)h +(read)e(and)g(for)g(line)h(con)m(tin)m(uation.)630 1196 +y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h +(meanings:)630 1348 y Ft(-a)e Fj(aname)114 b Fu(The)34 +b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m(tial)h(indices)e(of)g(the)g +(arra)m(y)h(v)-5 b(ariable)1110 1457 y Fr(aname)p Fu(,)29 +b(starting)h(at)f(0.)40 b(All)29 b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i +(from)d Fr(aname)34 b Fu(b)s(efore)1110 1567 y(the)d(assignmen)m(t.)41 +b(Other)30 b Fr(name)36 b Fu(argumen)m(ts)30 b(are)h(ignored.)630 +1718 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f +Fr(delim)g Fu(is)g(used)g(to)g(terminate)h(the)f(input)f(line,)1110 +1828 y(rather)31 b(than)g(newline.)42 b(If)30 b Fr(delim)h +Fu(is)g(the)h(empt)m(y)f(string,)g Ft(read)f Fu(will)h(termi-)1110 +1937 y(nate)g(a)g(line)f(when)g(it)h(reads)f(a)h(NUL)f(c)m(haracter.) +630 2089 y Ft(-e)384 b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command) +f(Line)h(Editing],)50 b(page)45 b(111\))i(is)1110 2198 +y(used)37 b(to)i(obtain)g(the)f(line.)65 b(Readline)39 +b(uses)e(the)i(curren)m(t)f(\(or)g(default,)j(if)1110 +2308 y(line)h(editing)g(w)m(as)g(not)g(previously)f(activ)m(e\))k +(editing)d(settings,)j(but)c(uses)1110 2418 y(Readline's)31 +b(default)g(\014lename)f(completion.)630 2569 y Ft(-i)g +Fj(text)162 b Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g +(the)g(line,)j Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110 +2679 y(editing)31 b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630 +2830 y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j +(reading)f Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m +(aiting)1110 2939 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f +(honors)g(a)h(delimiter)g(if)f(few)m(er)h(than)1110 3049 +y Fr(nc)m(hars)d Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g +(delimiter.)630 3200 y Ft(-N)g Fj(nchars)66 b Ft(read)39 +b Fu(returns)f(after)j(reading)e(exactly)j Fr(nc)m(hars)h +Fu(c)m(haracters)f(rather)d(than)1110 3310 y(w)m(aiting)32 +b(for)f(a)g(complete)i(line)e(of)g(input,)g(unless)f(EOF)h(is)g(encoun) +m(tered)g(or)1110 3420 y Ft(read)f Fu(times)i(out.)43 +b(Delimiter)33 b(c)m(haracters)f(encoun)m(tered)g(in)f(the)g(input)g +(are)1110 3529 y(not)g(treated)h(sp)s(ecially)f(and)f(do)h(not)g(cause) +g Ft(read)e Fu(to)j(return)d(un)m(til)i Fr(nc)m(hars)1110 +3639 y Fu(c)m(haracters)26 b(are)f(read.)38 b(The)24 +b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e +Ft(IFS)p Fu(;)1110 3748 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5 +b(ariable)23 b(is)f(assigned)g(exactly)i(the)e(c)m(haracters)i(read) +1110 3858 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g +(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 4009 y +Ft(-p)f Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p +Fu(,)g(without)e(a)h(trailing)h(newline,)h(b)s(efore)d(attempting)i(to) +1110 4119 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m +(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 4228 y(from)30 +b(a)h(terminal.)630 4380 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f +(giv)m(en,)k(bac)m(kslash)d(do)s(es)f(not)h(act)h(as)f(an)f(escap)s(e)h +(c)m(haracter.)1110 4489 y(The)30 b(bac)m(kslash)i(is)f(considered)g +(to)h(b)s(e)e(part)h(of)g(the)g(line.)43 b(In)30 b(particular,)i(a)1110 +4599 y(bac)m(kslash-newline)26 b(pair)e(ma)m(y)h(not)g(then)g(b)s(e)f +(used)g(as)h(a)g(line)g(con)m(tin)m(uation.)630 4750 +y Ft(-s)384 b Fu(Silen)m(t)28 b(mo)s(de.)40 b(If)27 b(input)f(is)i +(coming)g(from)f(a)h(terminal,)h(c)m(haracters)g(are)f(not)1110 +4860 y(ec)m(ho)s(ed.)630 5011 y Ft(-t)i Fj(timeout)1110 +5121 y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f +(failure)i(if)g(a)g(complete)h(line)f(of)1110 5230 y(input)26 +b(\(or)h(a)g(sp)s(eci\014ed)f(n)m(um)m(b)s(er)g(of)h(c)m(haracters\))h +(is)f(not)g(read)g(within)f Fr(time-)1110 5340 y(out)37 +b Fu(seconds.)53 b Fr(timeout)38 b Fu(ma)m(y)d(b)s(e)f(a)h(decimal)h(n) +m(um)m(b)s(er)d(with)h(a)h(fractional)p eop end +%%Page: 60 66 +TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(60)1110 299 y(p)s(ortion)29 +b(follo)m(wing)h(the)f(decimal)h(p)s(oin)m(t.)40 b(This)29 +b(option)g(is)g(only)g(e\013ectiv)m(e)j(if)1110 408 y +Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h(terminal,)i(pip)s(e,)e +(or)g(other)f(sp)s(ecial)i(\014le;)1110 518 y(it)31 b(has)g(no)g +(e\013ect)h(when)e(reading)h(from)g(regular)g(\014les.)42 +b(If)30 b Ft(read)g Fu(times)h(out,)1110 628 y Ft(read)d +Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in)m(to)h(the)e(sp)s +(eci\014ed)g(v)-5 b(ariable)31 b Fr(name)p Fu(.)1110 +737 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e Fu(returns)f +(immediately)-8 b(,)39 b(without)c(trying)h(to)g(read)1110 +847 y(an)m(y)c(data.)44 b(The)31 b(exit)h(status)f(is)h(0)f(if)h(input) +e(is)h(a)m(v)-5 b(ailable)34 b(on)d(the)h(sp)s(eci\014ed)1110 +956 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46 +b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 1066 +y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 1225 +y Ft(-u)g Fj(fd)258 b Fu(Read)31 b(input)e(from)h(\014le)g(descriptor)h +Fr(fd)p Fu(.)630 1385 y(If)h(no)g Fr(name)5 b Fu(s)33 +b(are)f(supplied,)g(the)h(line)g(read,)g(without)f(the)h(ending)f +(delimiter)h(but)e(oth-)630 1494 y(erwise)36 b(unmo)s(di\014ed,)e(is)i +(assigned)f(to)h(the)g(v)-5 b(ariable)36 b Ft(REPLY)p +Fu(.)55 b(The)34 b(exit)j(status)e(is)h(zero,)630 1604 +y(unless)i(end-of-\014le)h(is)f(encoun)m(tered,)j Ft(read)d +Fu(times)h(out)f(\(in)h(whic)m(h)f(case)h(the)g(status)g(is)630 +1714 y(greater)31 b(than)f(128\),)i(a)e(v)-5 b(ariable)30 +b(assignmen)m(t)h(error)f(\(suc)m(h)f(as)i(assigning)f(to)h(a)f +(readonly)630 1823 y(v)-5 b(ariable\))30 b(o)s(ccurs,)f(or)f(an)h(in)m +(v)-5 b(alid)29 b(\014le)g(descriptor)f(is)h(supplied)e(as)i(the)g +(argumen)m(t)g(to)g Ft(-u)p Fu(.)150 1983 y Ft(readarray)870 +2092 y(readarray)45 b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p +Ft(])f([-O)h Fj(origin)p Ft(])f([-s)h Fj(count)p Ft(])1061 +2202 y([-t])g([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p +Ft(])f([-c)g Fj(quantum)p Ft(])g([)p Fj(array)p Ft(])630 +2336 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j +(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p +Fu(,)i(or)630 2446 y(from)30 b(\014le)g(descriptor)h +Fr(fd)i Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630 +2580 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 2740 +y Ft(source)870 2874 y(source)46 b Fj(filename)630 3009 +y Fu(A)30 b(synon)m(ym)g(for)g Ft(.)g Fu(\(see)i(Section)f(4.1)g +([Bourne)g(Shell)f(Builtins],)h(page)g(44\).)150 3168 +y Ft(type)870 3303 y(type)47 b([-afptP])e([)p Fj(name)i +Ft(...)o(])630 3437 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p +Fu(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)g(b)s(e)g(in)m(terpreted)g(if) +g(used)f(as)i(a)f(command)630 3547 y(name.)630 3681 y(If)g(the)g +Ft(-t)g Fu(option)h(is)f(used,)j Ft(type)c Fu(prin)m(ts)h(a)h(single)g +(w)m(ord)f(whic)m(h)g(is)g(one)h(of)g(`)p Ft(alias)p +Fu(',)630 3791 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p +Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p Ft(keyword)p Fu(',)f(if)h +Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e(function,)630 +3900 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g +(w)m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55 b(If)34 b(the)h +Fr(name)40 b Fu(is)35 b(not)630 4010 y(found,)29 b(then)h(nothing)h(is) +f(prin)m(ted,)g(and)g Ft(type)f Fu(returns)g(a)i(failure)g(status.)630 +4144 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h +Ft(type)e Fu(either)h(returns)g(the)g(name)g(of)h(the)f(disk)g(\014le)g +(that)h(w)m(ould)630 4254 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g +Ft(-t)g Fu(w)m(ould)g(not)h(return)e(`)p Ft(file)p Fu('.)630 +4389 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g +(eac)m(h)g Fr(name)p Fu(,)g(ev)m(en)g(if)g Ft(-t)f Fu(w)m(ould)g(not)h +(return)630 4498 y(`)p Ft(file)p Fu('.)630 4633 y(If)f(a)g(command)g +(is)g(hashed,)f Ft(-p)h Fu(and)f Ft(-P)g Fu(prin)m(t)h(the)g(hashed)f +(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 4742 +y(sarily)h(the)f(\014le)h(that)g(app)s(ears)e(\014rst)h(in)g +Ft($PATH)p Fu(.)630 4877 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g +(used,)h Ft(type)e Fu(returns)f(all)j(of)f(the)g(places)h(that)f(con)m +(tain)i(an)d(executable)630 4986 y(named)32 b Fr(\014le)p +Fu(.)49 b(This)32 b(includes)h(aliases)h(and)e(functions,)i(if)f(and)f +(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 5096 y(not)d(also)g +(used.)630 5230 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e +Ft(type)g Fu(do)s(es)h(not)h(attempt)g(to)g(\014nd)d(shell)j +(functions,)f(as)g(with)630 5340 y(the)h Ft(command)d +Fu(builtin.)p eop end +%%Page: 61 67 +TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(61)630 299 y(The)31 +b(return)f(status)h(is)g(zero)h(if)f(all)h(of)f(the)h +Fr(names)i Fu(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h(not)630 +408 y(found.)150 566 y Ft(typeset)870 700 y(typeset)46 +b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p Ft([=)p Fj(value)p +Ft(])d(...)o(])630 834 y Fu(The)31 b Ft(typeset)e Fu(command)i(is)g +(supplied)f(for)h(compatibilit)m(y)i(with)e(the)g(Korn)f(shell.)44 +b(It)31 b(is)630 943 y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f +Fu(builtin)h(command.)150 1101 y Ft(ulimit)870 1235 y(ulimit)46 +b([-HS])g(-a)870 1344 y(ulimit)g([-HS])g([-bcdefiklmnpqrstuvxPRT])c([)p +Fj(limit)p Ft(])630 1478 y(ulimit)25 b Fu(pro)m(vides)h(con)m(trol)i(o) +m(v)m(er)g(the)f(resources)f(a)m(v)-5 b(ailable)29 b(to)e(pro)s(cesses) +f(started)h(b)m(y)g(the)630 1588 y(shell,)i(on)f(systems)g(that)h(allo) +m(w)h(suc)m(h)e(con)m(trol.)41 b(If)28 b(an)g(option)h(is)f(giv)m(en,)i +(it)e(is)h(in)m(terpreted)630 1697 y(as)i(follo)m(ws:)630 +1855 y Ft(-S)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(soft)h(limit) +g(asso)s(ciated)h(with)e(a)h(resource.)630 2013 y Ft(-H)384 +b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(hard)g(limit)h(asso)s(ciated)h +(with)e(a)h(resource.)630 2171 y Ft(-a)384 b Fu(All)31 +b(curren)m(t)f(limits)h(are)g(rep)s(orted;)f(no)g(limits)h(are)g(set.) +630 2328 y Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i +(bu\013er)e(size.)630 2486 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size) +h(of)g(core)g(\014les)f(created.)630 2644 y Ft(-d)384 +b Fu(The)30 b(maxim)m(um)g(size)h(of)g(a)g(pro)s(cess's)f(data)h +(segmen)m(t.)630 2802 y Ft(-e)384 b Fu(The)30 b(maxim)m(um)g(sc)m +(heduling)h(priorit)m(y)f(\()p Ft(")p Fu(nice)p Ft(")p +Fu(\).)630 2960 y Ft(-f)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g +(\014les)f(written)h(b)m(y)f(the)g(shell)h(and)f(its)h(c)m(hildren.)630 +3118 y Ft(-i)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s +(ending)e(signals.)630 3275 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m +(um)m(b)s(er)f(of)i(kqueues)f(that)h(ma)m(y)g(b)s(e)e(allo)s(cated.)630 +3433 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s +(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 3591 +y Ft(-m)384 b Fu(The)36 b(maxim)m(um)g(residen)m(t)h(set)g(size)g +(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 3701 +y(limit\).)630 3858 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s +(er)e(of)i(op)s(en)f(\014le)h(descriptors)g(\(most)g(systems)g(do)1110 +3968 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).) +630 4126 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630 +4284 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m +(ytes)g(in)f Fm(posix)f Fu(message)j(queues.)630 4441 +y Ft(-r)384 b Fu(The)30 b(maxim)m(um)g(real-time)i(sc)m(heduling)f +(priorit)m(y)-8 b(.)630 4599 y Ft(-s)384 b Fu(The)30 +b(maxim)m(um)g(stac)m(k)i(size.)630 4757 y Ft(-t)384 +b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g(time)h(in)f(seconds.) +630 4915 y Ft(-u)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +(pro)s(cesses)f(a)m(v)-5 b(ailable)33 b(to)e(a)f(single)i(user.)630 +5073 y Ft(-v)384 b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f +(memory)g(a)m(v)-5 b(ailable)44 b(to)e(the)g(shell,)1110 +5182 y(and,)30 b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630 +5340 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +(\014le)f(lo)s(c)m(ks.)p eop end +%%Page: 62 68 +TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(62)630 299 y Ft(-P)384 +b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pseudoterminals.)630 +478 y Ft(-R)384 b Fu(The)27 b(maxim)m(um)h(time)h(a)f(real-time)i(pro)s +(cess)d(can)i(run)d(b)s(efore)i(blo)s(c)m(king,)h(in)1110 +587 y(microseconds.)630 766 y Ft(-T)384 b Fu(The)30 b(maxim)m(um)g(n)m +(um)m(b)s(er)f(of)i(threads.)630 945 y(If)36 b Fr(limit)k +Fu(is)c(giv)m(en,)k(and)c(the)h Ft(-a)f Fu(option)h(is)f(not)h(used,)h +Fr(limit)h Fu(is)e(the)g(new)f(v)-5 b(alue)37 b(of)g(the)630 +1055 y(sp)s(eci\014ed)c(resource.)51 b(The)34 b(sp)s(ecial)g +Fr(limit)j Fu(v)-5 b(alues)34 b Ft(hard)p Fu(,)g Ft(soft)p +Fu(,)g(and)f Ft(unlimited)e Fu(stand)630 1164 y(for)h(the)g(curren)m(t) +g(hard)f(limit,)i(the)g(curren)m(t)f(soft)g(limit,)h(and)f(no)g(limit,) +h(resp)s(ectiv)m(ely)-8 b(.)48 b(A)630 1274 y(hard)24 +b(limit)i(cannot)g(b)s(e)e(increased)h(b)m(y)g(a)h(non-ro)s(ot)f(user)f +(once)i(it)g(is)f(set;)j(a)d(soft)g(limit)h(ma)m(y)630 +1384 y(b)s(e)37 b(increased)h(up)e(to)j(the)f(v)-5 b(alue)38 +b(of)f(the)h(hard)f(limit.)63 b(Otherwise,)39 b(the)f(curren)m(t)f(v)-5 +b(alue)630 1493 y(of)39 b(the)g(soft)h(limit)g(for)f(the)g(sp)s +(eci\014ed)f(resource)h(is)g(prin)m(ted,)i(unless)e(the)g +Ft(-H)f Fu(option)i(is)630 1603 y(supplied.)47 b(When)33 +b(more)g(than)g(one)g(resource)g(is)g(sp)s(eci\014ed,)g(the)g(limit)h +(name)f(and)f(unit,)630 1712 y(if)27 b(appropriate,)h(are)f(prin)m(ted) +g(b)s(efore)g(the)g(v)-5 b(alue.)40 b(When)27 b(setting)h(new)e +(limits,)j(if)e(neither)630 1822 y Ft(-H)38 b Fu(nor)g +Ft(-S)g Fu(is)h(supplied,)h(b)s(oth)e(the)h(hard)f(and)g(soft)h(limits) +g(are)g(set.)67 b(If)38 b(no)h(option)g(is)630 1932 y(giv)m(en,)c(then) +f Ft(-f)e Fu(is)i(assumed.)49 b(V)-8 b(alues)35 b(are)e(in)h(1024-b)m +(yte)i(incremen)m(ts,)f(except)f(for)f Ft(-t)p Fu(,)630 +2041 y(whic)m(h)e(is)g(in)g(seconds;)h Ft(-R)p Fu(,)g(whic)m(h)f(is)g +(in)g(microseconds;)h Ft(-p)p Fu(,)g(whic)m(h)f(is)g(in)g(units)g(of)g +(512-)630 2151 y(b)m(yte)k(blo)s(c)m(ks;)j Ft(-P)p Fu(,)e +Ft(-T)p Fu(,)f Ft(-b)p Fu(,)h Ft(-k)p Fu(,)f Ft(-n)g +Fu(and)f Ft(-u)p Fu(,)h(whic)m(h)g(are)g(unscaled)g(v)-5 +b(alues;)37 b(and,)f(when)630 2260 y(in)g Fm(posix)f +Fu(Mo)s(de)h(\(see)g(Section)h(6.11)g([Bash)g(POSIX)d(Mo)s(de],)k(page) +f(101\),)i Ft(-c)c Fu(and)g Ft(-f)p Fu(,)630 2370 y(whic)m(h)30 +b(are)h(in)f(512-b)m(yte)j(incremen)m(ts.)630 2514 y(The)h(return)g +(status)h(is)f(zero)i(unless)e(an)g(in)m(v)-5 b(alid)36 +b(option)f(or)f(argumen)m(t)i(is)e(supplied,)h(or)630 +2624 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f(limit.) +150 2803 y Ft(unalias)870 2947 y(unalias)46 b([-a])g([)p +Fj(name)h Ft(...)g(])630 3091 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f +Fr(name)k Fu(from)39 b(the)i(list)f(of)g(aliases.)71 +b(If)40 b Ft(-a)f Fu(is)h(supplied,)h(all)g(aliases)h(are)630 +3201 y(remo)m(v)m(ed.)g(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section) +i(6.6)f([Aliases],)h(page)f(94.)150 3471 y Fs(4.3)68 +b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 3695 y Fk(4.3.1)63 +b(The)41 b(Set)g(Builtin)150 3842 y Fu(This)35 b(builtin)h(is)g(so)g +(complicated)i(that)f(it)f(deserv)m(es)h(its)f(o)m(wn)g(section.)59 +b Ft(set)35 b Fu(allo)m(ws)j(y)m(ou)e(to)h(c)m(hange)150 +3951 y(the)c(v)-5 b(alues)34 b(of)f(shell)g(options)h(and)e(set)i(the)f +(p)s(ositional)h(parameters,)h(or)e(to)h(displa)m(y)f(the)g(names)h +(and)150 4061 y(v)-5 b(alues)31 b(of)f(shell)h(v)-5 b(ariables.)150 +4250 y Ft(set)870 4394 y(set)47 b([--abefhkmnptuvxBCEHPT])41 +b([-o)47 b Fj(option-name)p Ft(])e([)p Fj(argument)g +Ft(...)o(])870 4504 y(set)i([+abefhkmnptuvxBCEHPT])42 +b([+o)47 b Fj(option-name)p Ft(])d([)p Fj(argument)h +Ft(...)o(])630 4648 y Fu(If)22 b(no)h(options)g(or)g(argumen)m(ts)g +(are)g(supplied,)g Ft(set)f Fu(displa)m(ys)g(the)h(names)g(and)f(v)-5 +b(alues)23 b(of)g(all)630 4757 y(shell)j(v)-5 b(ariables)27 +b(and)e(functions,)h(sorted)g(according)h(to)g(the)f(curren)m(t)f(lo)s +(cale,)k(in)c(a)i(format)630 4867 y(that)i(ma)m(y)h(b)s(e)e(reused)g +(as)h(input)f(for)h(setting)h(or)e(resetting)i(the)f(curren)m(tly-set)h +(v)-5 b(ariables.)630 4977 y(Read-only)37 b(v)-5 b(ariables)37 +b(cannot)h(b)s(e)e(reset.)59 b(In)36 b Fm(posix)g Fu(mo)s(de,)i(only)f +(shell)f(v)-5 b(ariables)38 b(are)630 5086 y(listed.)630 +5230 y(When)29 b(options)g(are)g(supplied,)f(they)h(set)h(or)f(unset)f +(shell)h(attributes.)41 b(Options,)29 b(if)g(sp)s(ec-)630 +5340 y(i\014ed,)h(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)p +eop end +%%Page: 63 69 +TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(63)630 299 y Ft(-a)384 +b Fu(Eac)m(h)37 b(v)-5 b(ariable)36 b(or)g(function)g(that)g(is)g +(created)h(or)f(mo)s(di\014ed)f(is)h(giv)m(en)h(the)1110 +408 y(exp)s(ort)28 b(attribute)h(and)f(mark)m(ed)g(for)g(exp)s(ort)g +(to)h(the)g(en)m(vironmen)m(t)f(of)h(sub-)1110 518 y(sequen)m(t)i +(commands.)630 682 y Ft(-b)384 b Fu(Cause)44 b(the)h(status)g(of)f +(terminated)h(bac)m(kground)g(jobs)f(to)h(b)s(e)f(rep)s(orted)1110 +792 y(immediately)-8 b(,)30 b(rather)d(than)f(b)s(efore)h(prin)m(ting)g +(the)g(next)g(primary)g(prompt.)630 956 y Ft(-e)384 b +Fu(Exit)65 b(immediately)g(if)f(a)h(pip)s(eline)e(\(see)i(Section)g +(3.2.3)h([Pip)s(elines],)1110 1066 y(page)56 b(8\),)62 +b(whic)m(h)55 b(ma)m(y)h(consist)f(of)h(a)f(single)h(simple)f(command)g +(\(see)1110 1176 y(Section)30 b(3.2.2)i([Simple)d(Commands],)g(page)h +(8\),)h(a)f(list)g(\(see)h(Section)f(3.2.4)1110 1285 +y([Lists],)66 b(page)59 b(9\),)67 b(or)58 b(a)h(comp)s(ound)e(command)h +(\(see)h(Section)g(3.2.5)1110 1395 y([Comp)s(ound)h(Commands],)70 +b(page)63 b(10\))g(returns)e(a)i(non-zero)f(status.)1110 +1504 y(The)41 b(shell)g(do)s(es)g(not)g(exit)h(if)f(the)h(command)f +(that)h(fails)f(is)g(part)g(of)h(the)1110 1614 y(command)g(list)h +(immediately)g(follo)m(wing)g(a)g Ft(while)e Fu(or)h +Ft(until)e Fu(k)m(eyw)m(ord,)1110 1724 y(part)61 b(of)g(the)g(test)h +(in)e(an)h Ft(if)f Fu(statemen)m(t,)71 b(part)61 b(of)g(an)m(y)g +(command)1110 1833 y(executed)50 b(in)e(a)h Ft(&&)f Fu(or)h +Ft(||)f Fu(list)h(except)g(the)g(command)g(follo)m(wing)h(the)1110 +1943 y(\014nal)37 b Ft(&&)g Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f +(in)g(a)g(pip)s(eline)g(but)g(the)g(last,)j(or)e(if)f(the)1110 +2052 y(command's)c(return)f(status)h(is)g(b)s(eing)g(in)m(v)m(erted)h +(with)e Ft(!)p Fu(.)48 b(If)33 b(a)g(comp)s(ound)1110 +2162 y(command)g(other)g(than)f(a)i(subshell)d(returns)h(a)h(non-zero)h +(status)f(b)s(ecause)1110 2271 y(a)k(command)g(failed)g(while)g +Ft(-e)f Fu(w)m(as)i(b)s(eing)e(ignored,)j(the)e(shell)g(do)s(es)g(not) +1110 2381 y(exit.)42 b(A)30 b(trap)g(on)h Ft(ERR)p Fu(,)e(if)i(set,)g +(is)f(executed)i(b)s(efore)e(the)g(shell)h(exits.)1110 +2518 y(This)f(option)h(applies)f(to)h(the)g(shell)g(en)m(vironmen)m(t)g +(and)f(eac)m(h)h(subshell)f(en-)1110 2628 y(vironmen)m(t)j(separately)i +(\(see)f(Section)g(3.7.3)h([Command)d(Execution)i(En-)1110 +2737 y(vironmen)m(t],)i(page)f(40\),)i(and)d(ma)m(y)h(cause)f +(subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 2847 y(cuting)d(all)g +(the)g(commands)f(in)g(the)g(subshell.)1110 2984 y(If)41 +b(a)g(comp)s(ound)e(command)i(or)g(shell)g(function)g(executes)h(in)f +(a)g(con)m(text)1110 3093 y(where)31 b Ft(-e)g Fu(is)g(b)s(eing)g +(ignored,)h(none)f(of)h(the)f(commands)g(executed)h(within)1110 +3203 y(the)j(comp)s(ound)f(command)h(or)g(function)f(b)s(o)s(dy)g(will) +h(b)s(e)f(a\013ected)j(b)m(y)e(the)1110 3313 y Ft(-e)25 +b Fu(setting,)j(ev)m(en)e(if)g Ft(-e)f Fu(is)h(set)g(and)f(a)h(command) +g(returns)e(a)i(failure)g(status.)1110 3422 y(If)32 b(a)i(comp)s(ound)d +(command)i(or)g(shell)g(function)f(sets)i Ft(-e)e Fu(while)h(executing) +1110 3532 y(in)40 b(a)h(con)m(text)i(where)d Ft(-e)g +Fu(is)h(ignored,)j(that)d(setting)h(will)f(not)g(ha)m(v)m(e)h(an)m(y) +1110 3641 y(e\013ect)g(un)m(til)e(the)h(comp)s(ound)e(command)h(or)g +(the)g(command)g(con)m(taining)1110 3751 y(the)31 b(function)f(call)h +(completes.)630 3915 y Ft(-f)384 b Fu(Disable)31 b(\014lename)g +(expansion)f(\(globbing\).)630 4080 y Ft(-h)384 b Fu(Lo)s(cate)33 +b(and)e(remem)m(b)s(er)h(\(hash\))g(commands)f(as)h(they)g(are)g(lo)s +(ok)m(ed)h(up)e(for)1110 4189 y(execution.)42 b(This)29 +b(option)i(is)g(enabled)f(b)m(y)g(default.)630 4354 y +Ft(-k)384 b Fu(All)34 b(argumen)m(ts)g(in)f(the)h(form)f(of)g +(assignmen)m(t)h(statemen)m(ts)i(are)d(placed)h(in)1110 +4463 y(the)k(en)m(vironmen)m(t)g(for)g(a)g(command,)h(not)f(just)f +(those)i(that)f(precede)g(the)1110 4573 y(command)30 +b(name.)630 4737 y Ft(-m)384 b Fu(Job)28 b(con)m(trol)h(is)f(enabled)g +(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(107\).)41 +b(All)1110 4847 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s +(cess)f(group.)40 b(When)27 b(a)h(bac)m(kground)f(job)1110 +4956 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m +(taining)i(its)f(exit)g(status.)630 5121 y Ft(-n)384 +b Fu(Read)38 b(commands)f(but)f(do)i(not)f(execute)i(them.)62 +b(This)37 b(ma)m(y)h(b)s(e)f(used)f(to)1110 5230 y(c)m(hec)m(k)d(a)e +(script)g(for)g(syn)m(tax)h(errors.)42 b(This)30 b(option)i(is)f +(ignored)g(b)m(y)g(in)m(terac-)1110 5340 y(tiv)m(e)h(shells.)p +eop end +%%Page: 64 70 +TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(64)630 299 y Ft(-o)30 +b Fj(option-name)1110 408 y Fu(Set)h(the)f(option)h(corresp)s(onding)e +(to)i Fr(option-name)5 b Fu(:)1110 575 y Ft(allexport)1590 +685 y Fu(Same)30 b(as)h Ft(-a)p Fu(.)1110 852 y Ft(braceexpand)1590 +962 y Fu(Same)f(as)h Ft(-B)p Fu(.)1110 1129 y Ft(emacs)240 +b Fu(Use)25 b(an)f Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m +(terface)h(\(see)g(Chapter)e(8)1590 1238 y([Command)33 +b(Line)g(Editing],)h(page)h(111\).)51 b(This)32 b(also)i(a\013ects)1590 +1348 y(the)d(editing)g(in)m(terface)h(used)d(for)h Ft(read)f(-e)p +Fu(.)1110 1515 y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p +Fu(.)1110 1682 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p +Fu(.)1110 1849 y Ft(functrace)1590 1958 y Fu(Same)f(as)h +Ft(-T)p Fu(.)1110 2125 y Ft(hashall)144 b Fu(Same)30 +b(as)h Ft(-h)p Fu(.)1110 2292 y Ft(histexpand)1590 2402 +y Fu(Same)f(as)h Ft(-H)p Fu(.)1110 2569 y Ft(history)144 +b Fu(Enable)39 b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h +(Section)h(9.1)1590 2679 y([Bash)d(History)g(F)-8 b(acilities],)41 +b(page)c(146.)60 b(This)36 b(option)h(is)f(on)1590 2788 +y(b)m(y)30 b(default)h(in)f(in)m(teractiv)m(e)j(shells.)1110 +2955 y Ft(ignoreeof)1590 3065 y Fu(An)d(in)m(teractiv)m(e)j(shell)e +(will)g(not)f(exit)h(up)s(on)e(reading)i(EOF.)1110 3232 +y Ft(keyword)144 b Fu(Same)30 b(as)h Ft(-k)p Fu(.)1110 +3399 y Ft(monitor)144 b Fu(Same)30 b(as)h Ft(-m)p Fu(.)1110 +3566 y Ft(noclobber)1590 3675 y Fu(Same)f(as)h Ft(-C)p +Fu(.)1110 3842 y Ft(noexec)192 b Fu(Same)30 b(as)h Ft(-n)p +Fu(.)1110 4009 y Ft(noglob)192 b Fu(Same)30 b(as)h Ft(-f)p +Fu(.)1110 4176 y Ft(nolog)240 b Fu(Curren)m(tly)30 b(ignored.)1110 +4343 y Ft(notify)192 b Fu(Same)30 b(as)h Ft(-b)p Fu(.)1110 +4510 y Ft(nounset)144 b Fu(Same)30 b(as)h Ft(-u)p Fu(.)1110 +4677 y Ft(onecmd)192 b Fu(Same)30 b(as)h Ft(-t)p Fu(.)1110 +4844 y Ft(physical)96 b Fu(Same)30 b(as)h Ft(-P)p Fu(.)1110 +5011 y Ft(pipefail)96 b Fu(If)44 b(set,)k(the)d(return)e(v)-5 +b(alue)45 b(of)f(a)h(pip)s(eline)e(is)i(the)f(v)-5 b(alue)45 +b(of)1590 5121 y(the)33 b(last)h(\(righ)m(tmost\))h(command)e(to)h +(exit)g(with)f(a)g(non-zero)1590 5230 y(status,)28 b(or)f(zero)g(if)f +(all)i(commands)e(in)g(the)h(pip)s(eline)f(exit)i(suc-)1590 +5340 y(cessfully)-8 b(.)41 b(This)30 b(option)h(is)f(disabled)g(b)m(y)h +(default.)p eop end +%%Page: 65 71 +TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(65)1110 299 y +Ft(posix)240 b Fu(Change)30 b(the)g(b)s(eha)m(vior)h(of)f(Bash)g(where) +g(the)g(default)h(op)s(era-)1590 408 y(tion)25 b(di\013ers)f(from)g +(the)h Fm(posix)f Fu(standard)f(to)i(matc)m(h)h(the)f(stan-)1590 +518 y(dard)h(\(see)j(Section)f(6.11)h([Bash)f(POSIX)e(Mo)s(de],)j(page) +f(101\).)1590 628 y(This)37 b(is)g(in)m(tended)g(to)h(mak)m(e)g(Bash)g +(b)s(eha)m(v)m(e)g(as)g(a)f(strict)h(su-)1590 737 y(p)s(erset)30 +b(of)h(that)f(standard.)1110 911 y Ft(privileged)1590 +1020 y Fu(Same)g(as)h Ft(-p)p Fu(.)1110 1194 y Ft(verbose)144 +b Fu(Same)30 b(as)h Ft(-v)p Fu(.)1110 1367 y Ft(vi)384 +b Fu(Use)36 b(a)g Ft(vi)p Fu(-st)m(yle)g(line)g(editing)g(in)m +(terface.)58 b(This)35 b(also)h(a\013ects)1590 1477 y(the)31 +b(editing)g(in)m(terface)h(used)d(for)h Ft(read)f(-e)p +Fu(.)1110 1650 y Ft(xtrace)192 b Fu(Same)30 b(as)h Ft(-x)p +Fu(.)630 1824 y Ft(-p)384 b Fu(T)-8 b(urn)33 b(on)h(privileged)h(mo)s +(de.)51 b(In)34 b(this)g(mo)s(de,)h(the)f Ft($BASH_ENV)e +Fu(and)h Ft($ENV)1110 1934 y Fu(\014les)23 b(are)h(not)f(pro)s(cessed,) +h(shell)g(functions)e(are)i(not)f(inherited)g(from)f(the)i(en-)1110 +2043 y(vironmen)m(t,)h(and)e(the)g Ft(SHELLOPTS)p Fu(,)f +Ft(BASHOPTS)p Fu(,)h Ft(CDPATH)e Fu(and)i Ft(GLOBIGNORE)1110 +2153 y Fu(v)-5 b(ariables,)23 b(if)e(they)g(app)s(ear)f(in)g(the)h(en)m +(vironmen)m(t,)i(are)e(ignored.)38 b(If)20 b(the)h(shell)1110 +2262 y(is)37 b(started)h(with)f(the)g(e\013ectiv)m(e)j(user)d +(\(group\))g(id)g(not)g(equal)h(to)g(the)f(real)1110 +2372 y(user)h(\(group\))h(id,)i(and)d(the)h Ft(-p)f Fu(option)i(is)e +(not)i(supplied,)f(these)h(actions)1110 2482 y(are)32 +b(tak)m(en)i(and)d(the)h(e\013ectiv)m(e)j(user)c(id)h(is)g(set)h(to)f +(the)h(real)f(user)g(id.)45 b(If)32 b(the)1110 2591 y +Ft(-p)i Fu(option)h(is)g(supplied)f(at)h(startup,)h(the)f(e\013ectiv)m +(e)i(user)d(id)g(is)h(not)g(reset.)1110 2701 y(T)-8 b(urning)35 +b(this)i(option)g(o\013)g(causes)g(the)g(e\013ectiv)m(e)i(user)d(and)g +(group)g(ids)g(to)1110 2810 y(b)s(e)30 b(set)h(to)g(the)f(real)h(user)f +(and)g(group)g(ids.)630 2984 y Ft(-t)384 b Fu(Exit)31 +b(after)g(reading)f(and)g(executing)h(one)g(command.)630 +3157 y Ft(-u)384 b Fu(T)-8 b(reat)25 b(unset)e(v)-5 b(ariables)25 +b(and)e(parameters)h(other)h(than)e(the)h(sp)s(ecial)h(param-)1110 +3267 y(eters)35 b(`)p Ft(@)p Fu(')f(or)g(`)p Ft(*)p Fu(')h(as)f(an)g +(error)g(when)f(p)s(erforming)g(parameter)i(expansion.)1110 +3377 y(An)28 b(error)h(message)g(will)g(b)s(e)f(written)h(to)h(the)e +(standard)g(error,)h(and)f(a)h(non-)1110 3486 y(in)m(teractiv)m(e)k +(shell)e(will)g(exit.)630 3660 y Ft(-v)384 b Fu(Prin)m(t)30 +b(shell)h(input)e(lines)i(as)g(they)f(are)h(read.)630 +3833 y Ft(-x)384 b Fu(Prin)m(t)21 b(a)h(trace)h(of)f(simple)f +(commands,)i Ft(for)e Fu(commands,)i Ft(case)d Fu(commands,)1110 +3943 y Ft(select)29 b Fu(commands,)j(and)e(arithmetic)j +Ft(for)d Fu(commands)h(and)f(their)i(argu-)1110 4052 +y(men)m(ts)h(or)f(asso)s(ciated)i(w)m(ord)e(lists)h(after)g(they)f(are) +h(expanded)f(and)f(b)s(efore)1110 4162 y(they)i(are)g(executed.)49 +b(The)32 b(v)-5 b(alue)33 b(of)g(the)g Ft(PS4)f Fu(v)-5 +b(ariable)34 b(is)f(expanded)f(and)1110 4271 y(the)24 +b(resultan)m(t)h(v)-5 b(alue)24 b(is)g(prin)m(ted)g(b)s(efore)f(the)h +(command)g(and)f(its)i(expanded)1110 4381 y(argumen)m(ts.)630 +4555 y Ft(-B)384 b Fu(The)41 b(shell)g(will)g(p)s(erform)f(brace)h +(expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 4664 +y(Expansion],)30 b(page)h(23\).)42 b(This)30 b(option)h(is)f(on)g(b)m +(y)h(default.)630 4838 y Ft(-C)384 b Fu(Prev)m(en)m(t)25 +b(output)e(redirection)h(using)f(`)p Ft(>)p Fu(',)i(`)p +Ft(>&)p Fu(',)g(and)e(`)p Ft(<>)p Fu(')g(from)h(o)m(v)m(erwriting)1110 +4947 y(existing)31 b(\014les.)630 5121 y Ft(-E)384 b +Fu(If)39 b(set,)j(an)m(y)e(trap)f(on)g Ft(ERR)g Fu(is)g(inherited)g(b)m +(y)g(shell)h(functions,)h(command)1110 5230 y(substitutions,)35 +b(and)e(commands)g(executed)i(in)f(a)g(subshell)f(en)m(vironmen)m(t.) +1110 5340 y(The)d Ft(ERR)f Fu(trap)i(is)f(normally)h(not)f(inherited)g +(in)g(suc)m(h)g(cases.)p eop end +%%Page: 66 72 +TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(-H)384 +b Fu(Enable)38 b(`)p Ft(!)p Fu(')h(st)m(yle)h(history)e(substitution)g +(\(see)h(Section)h(9.3)f([History)g(In-)1110 408 y(teraction],)g(page)d +(148\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m +(teractiv)m(e)1110 518 y(shells.)630 670 y Ft(-P)384 +b Fu(If)39 b(set,)j(do)d(not)g(resolv)m(e)i(sym)m(b)s(olic)e(links)g +(when)f(p)s(erforming)g(commands)1110 780 y(suc)m(h)29 +b(as)h Ft(cd)f Fu(whic)m(h)g(c)m(hange)h(the)g(curren)m(t)f(directory) +-8 b(.)42 b(The)28 b(ph)m(ysical)j(direc-)1110 890 y(tory)j(is)g(used)f +(instead.)52 b(By)34 b(default,)h(Bash)f(follo)m(ws)h(the)f(logical)i +(c)m(hain)f(of)1110 999 y(directories)j(when)d(p)s(erforming)h +(commands)g(whic)m(h)g(c)m(hange)i(the)f(curren)m(t)1110 +1109 y(directory)-8 b(.)1110 1240 y(F)g(or)42 b(example,)i(if)d +Ft(/usr/sys)e Fu(is)i(a)g(sym)m(b)s(olic)g(link)g(to)h +Ft(/usr/local/sys)1110 1349 y Fu(then:)1350 1480 y Ft($)47 +b(cd)h(/usr/sys;)d(echo)i($PWD)1350 1590 y(/usr/sys)1350 +1700 y($)g(cd)h(..;)f(pwd)1350 1809 y(/usr)1110 1940 +y Fu(If)30 b Ft(set)f(-P)h Fu(is)h(on,)f(then:)1350 2071 +y Ft($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 2181 y(/usr/local/sys) +1350 2290 y($)g(cd)h(..;)f(pwd)1350 2400 y(/usr/local)630 +2552 y(-T)384 b Fu(If)34 b(set,)j(an)m(y)e(trap)g(on)g +Ft(DEBUG)e Fu(and)i Ft(RETURN)e Fu(are)i(inherited)g(b)m(y)f(shell)i +(func-)1110 2662 y(tions,)k(command)d(substitutions,)h(and)f(commands)g +(executed)h(in)f(a)h(sub-)1110 2771 y(shell)33 b(en)m(vironmen)m(t.)49 +b(The)32 b Ft(DEBUG)g Fu(and)g Ft(RETURN)f Fu(traps)h(are)i(normally)f +(not)1110 2881 y(inherited)d(in)g(suc)m(h)g(cases.)630 +3033 y Ft(--)384 b Fu(If)44 b(no)g(argumen)m(ts)g(follo)m(w)i(this)e +(option,)k(then)c(the)h(p)s(ositional)g(parame-)1110 +3143 y(ters)31 b(are)g(unset.)40 b(Otherwise,)31 b(the)f(p)s(ositional) +i(parameters)f(are)f(set)h(to)h(the)1110 3253 y Fr(argumen)m(ts)p +Fu(,)f(ev)m(en)g(if)f(some)h(of)g(them)f(b)s(egin)g(with)g(a)h(`)p +Ft(-)p Fu('.)630 3405 y Ft(-)432 b Fu(Signal)45 b(the)g(end)f(of)h +(options,)k(cause)c(all)h(remaining)e Fr(argumen)m(ts)49 +b Fu(to)d(b)s(e)1110 3515 y(assigned)33 b(to)h(the)g(p)s(ositional)g +(parameters.)49 b(The)33 b Ft(-x)g Fu(and)f Ft(-v)h Fu(options)h(are) +1110 3624 y(turned)k(o\013.)68 b(If)38 b(there)i(are)f(no)g(argumen)m +(ts,)j(the)e(p)s(ositional)g(parameters)1110 3734 y(remain)30 +b(unc)m(hanged.)630 3886 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`) +p Ft(-)p Fu(')g(causes)h(these)f(options)h(to)g(b)s(e)e(turned)g +(o\013.)40 b(The)27 b(options)h(can)630 3996 y(also)36 +b(b)s(e)f(used)f(up)s(on)g(in)m(v)m(o)s(cation)j(of)e(the)g(shell.)56 +b(The)34 b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g(b)s(e)630 +4105 y(found)29 b(in)h Ft($-)p Fu(.)630 4236 y(The)43 +b(remaining)h(N)f Fr(argumen)m(ts)48 b Fu(are)c(p)s(ositional)g +(parameters)g(and)f(are)h(assigned,)j(in)630 4346 y(order,)30 +b(to)h Ft($1)p Fu(,)f Ft($2)p Fu(,)36 b(.)22 b(.)g(.)42 +b Ft($N)p Fu(.)e(The)30 b(sp)s(ecial)h(parameter)g Ft(#)f +Fu(is)g(set)h(to)g(N.)630 4477 y(The)f(return)f(status)i(is)f(alw)m(a)m +(ys)i(zero)f(unless)f(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f +(supplied.)150 4669 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150 +4816 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h +(additional)f(shell)f(optional)i(b)s(eha)m(vior.)150 +4968 y Ft(shopt)870 5099 y(shopt)46 b([-pqsu])g([-o])h([)p +Fj(optname)e Ft(...])630 5230 y Fu(T)-8 b(oggle)37 b(the)e(v)-5 +b(alues)35 b(of)g(settings)h(con)m(trolling)g(optional)g(shell)f(b)s +(eha)m(vior.)55 b(The)34 b(settings)630 5340 y(can)24 +b(b)s(e)g(either)h(those)f(listed)h(b)s(elo)m(w,)h(or,)f(if)g(the)f +Ft(-o)f Fu(option)i(is)f(used,)h(those)g(a)m(v)-5 b(ailable)26 +b(with)p eop end +%%Page: 67 73 +TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y(the)30 +b Ft(-o)f Fu(option)i(to)f(the)g Ft(set)f Fu(builtin)h(command)f(\(see) +i(Section)g(4.3.1)g([The)f(Set)g(Builtin],)630 408 y(page)i(62\).)45 +b(With)32 b(no)f(options,)h(or)g(with)f(the)g Ft(-p)g +Fu(option,)h(a)g(list)g(of)f(all)i(settable)g(options)630 +518 y(is)g(displa)m(y)m(ed,)i(with)e(an)g(indication)h(of)g(whether)e +(or)h(not)h(eac)m(h)g(is)g(set;)h(if)e Fr(optnames)38 +b Fu(are)630 628 y(supplied,)25 b(the)g(output)g(is)g(restricted)g(to)h +(those)g(options.)39 b(The)24 b Ft(-p)h Fu(option)g(causes)g(output)630 +737 y(to)30 b(b)s(e)f(displa)m(y)m(ed)g(in)g(a)h(form)f(that)g(ma)m(y)h +(b)s(e)f(reused)f(as)i(input.)39 b(Other)29 b(options)g(ha)m(v)m(e)i +(the)630 847 y(follo)m(wing)h(meanings:)630 1004 y Ft(-s)384 +b Fu(Enable)30 b(\(set\))i(eac)m(h)f Fr(optname)p Fu(.)630 +1161 y Ft(-u)384 b Fu(Disable)31 b(\(unset\))g(eac)m(h)h +Fr(optname)p Fu(.)630 1319 y Ft(-q)384 b Fu(Suppresses)28 +b(normal)h(output;)h(the)g(return)e(status)i(indicates)h(whether)e(the) +1110 1428 y Fr(optname)37 b Fu(is)31 b(set)h(or)f(unset.)43 +b(If)31 b(m)m(ultiple)h Fr(optname)37 b Fu(argumen)m(ts)31 +b(are)h(giv)m(en)1110 1538 y(with)d Ft(-q)p Fu(,)g(the)g(return)f +(status)h(is)g(zero)h(if)f(all)h Fr(optnames)j Fu(are)d(enabled;)f +(non-)1110 1647 y(zero)i(otherwise.)630 1805 y Ft(-o)384 +b Fu(Restricts)22 b(the)f(v)-5 b(alues)22 b(of)f Fr(optname)27 +b Fu(to)22 b(b)s(e)e(those)i(de\014ned)e(for)h(the)g +Ft(-o)f Fu(option)1110 1914 y(to)31 b(the)g Ft(set)e +Fu(builtin)h(\(see)h(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f +(62\).)630 2071 y(If)e(either)i Ft(-s)e Fu(or)h Ft(-u)f +Fu(is)h(used)f(with)g(no)h Fr(optname)35 b Fu(argumen)m(ts,)c +Ft(shopt)d Fu(sho)m(ws)h(only)h(those)630 2181 y(options)h(whic)m(h)f +(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m(ely)-8 b(.)630 +2314 y(Unless)30 b(otherwise)h(noted,)g(the)g Ft(shopt)d +Fu(options)j(are)g(disabled)f(\(o\013)7 b(\))32 b(b)m(y)e(default.)630 +2448 y(The)d(return)f(status)i(when)f(listing)h(options)g(is)f(zero)i +(if)e(all)i Fr(optnames)i Fu(are)d(enabled,)g(non-)630 +2557 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f(unsetting)g +(options,)i(the)e(return)f(status)h(is)g(zero)630 2667 +y(unless)30 b(an)g Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5 +b(alid)30 b(shell)h(option.)630 2800 y(The)f(list)h(of)f +Ft(shopt)f Fu(options)i(is:)630 2958 y Ft(assoc_expand_once)1110 +3067 y Fu(If)h(set,)i(the)e(shell)h(suppresses)e(m)m(ultiple)i(ev)-5 +b(aluation)34 b(of)e(asso)s(ciativ)m(e)j(arra)m(y)1110 +3177 y(subscripts)24 b(during)h(arithmetic)h(expression)g(ev)-5 +b(aluation,)28 b(while)e(executing)1110 3286 y(builtins)c(that)i(can)f +(p)s(erform)f(v)-5 b(ariable)24 b(assignmen)m(ts,)h(and)e(while)g +(executing)1110 3396 y(builtins)30 b(that)h(p)s(erform)e(arra)m(y)i +(dereferencing.)630 3553 y Ft(autocd)192 b Fu(If)27 b(set,)h(a)g +(command)f(name)g(that)h(is)f(the)g(name)g(of)h(a)f(directory)h(is)f +(executed)1110 3663 y(as)j(if)f(it)h(w)m(ere)f(the)h(argumen)m(t)g(to)g +(the)f Ft(cd)g Fu(command.)40 b(This)29 b(option)g(is)h(only)1110 +3772 y(used)g(b)m(y)g(in)m(teractiv)m(e)j(shells.)630 +3930 y Ft(cdable_vars)1110 4039 y Fu(If)h(this)h(is)g(set,)i(an)e +(argumen)m(t)g(to)h(the)f Ft(cd)f Fu(builtin)h(command)f(that)i(is)f +(not)1110 4149 y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h +(name)f(of)h(a)g(v)-5 b(ariable)31 b(whose)g(v)-5 b(alue)31 +b(is)1110 4258 y(the)g(directory)f(to)i(c)m(hange)f(to.)630 +4416 y Ft(cdspell)144 b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g +(sp)s(elling)h(of)f(a)g(directory)h(comp)s(onen)m(t)f(in)g(a)h +Ft(cd)1110 4525 y Fu(command)i(will)h(b)s(e)f(corrected.)43 +b(The)30 b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110 +4635 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47 +b(and)40 b(a)i(c)m(haracter)h(to)s(o)g(man)m(y)-8 b(.)74 +b(If)42 b(a)1110 4744 y(correction)25 b(is)e(found,)g(the)h(corrected)g +(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 4854 +y(pro)s(ceeds.)40 b(This)30 b(option)h(is)f(only)h(used)e(b)m(y)h(in)m +(teractiv)m(e)k(shells.)630 5011 y Ft(checkhash)1110 +5121 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f +(command)f(found)g(in)g(the)h(hash)f(table)1110 5230 +y(exists)k(b)s(efore)f(trying)h(to)h(execute)g(it.)48 +b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 5340 +y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)p +eop end +%%Page: 68 74 +TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(68)630 299 y Ft(checkjobs)1110 +408 y Fu(If)28 b(set,)i(Bash)e(lists)h(the)g(status)g(of)f(an)m(y)h +(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore)1110 518 +y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 b(If)41 +b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110 +628 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h +(exit)g(is)g(attempted)h(without)e(an)1110 737 y(in)m(terv)m(ening)d +(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(107\).)40 +b(The)1110 847 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h +(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 1029 y Ft(checkwinsize)1110 +1139 y Fu(If)23 b(set,)j(Bash)e(c)m(hec)m(ks)h(the)f(windo)m(w)f(size)h +(after)h(eac)m(h)f(external)h(\(non-builtin\))1110 1249 +y(command)55 b(and,)60 b(if)55 b(necessary)-8 b(,)62 +b(up)s(dates)54 b(the)h(v)-5 b(alues)55 b(of)g Ft(LINES)f +Fu(and)1110 1358 y Ft(COLUMNS)p Fu(.)39 b(This)29 b(option)i(is)g +(enabled)f(b)m(y)g(default.)630 1541 y Ft(cmdhist)144 +b Fu(If)33 b(set,)j(Bash)e(attempts)h(to)g(sa)m(v)m(e)g(all)g(lines)f +(of)g(a)h(m)m(ultiple-line)g(command)1110 1650 y(in)c(the)g(same)g +(history)g(en)m(try)-8 b(.)42 b(This)30 b(allo)m(ws)i(easy)g +(re-editing)g(of)f(m)m(ulti-line)1110 1760 y(commands.)79 +b(This)43 b(option)g(is)h(enabled)f(b)m(y)g(default,)k(but)c(only)g +(has)g(an)1110 1870 y(e\013ect)30 b(if)e(command)g(history)g(is)h +(enabled)f(\(see)h(Section)g(9.1)h([Bash)e(History)1110 +1979 y(F)-8 b(acilities],)34 b(page)d(146\).)630 2162 +y Ft(compat31)630 2271 y(compat32)630 2381 y(compat40)630 +2491 y(compat41)630 2600 y(compat42)630 2710 y(compat43)630 +2819 y(compat44)96 b Fu(These)39 b(con)m(trol)i(asp)s(ects)f(of)f(the)h +(shell's)g(compatibilit)m(y)h(mo)s(de)e(\(see)h(Sec-)1110 +2929 y(tion)31 b(6.12)h([Shell)e(Compatibilit)m(y)i(Mo)s(de],)f(page)g +(104\).)630 3112 y Ft(complete_fullquote)1110 3221 y +Fu(If)g(set,)g(Bash)h(quotes)f(all)h(shell)f(metac)m(haracters)i(in)e +(\014lenames)g(and)g(direc-)1110 3331 y(tory)g(names)f(when)g(p)s +(erforming)f(completion.)43 b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m +(es)1110 3440 y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g +(sign)g(from)f(the)h(set)g(of)f(c)m(haracters)1110 3550 +y(that)f(will)g(b)s(e)f(quoted)g(in)g(completed)i(\014lenames)e(when)f +(these)i(metac)m(har-)1110 3660 y(acters)29 b(app)s(ear)e(in)g(shell)h +(v)-5 b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e +(completed.)1110 3769 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v) +-5 b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110 +3879 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,) +g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 3988 +y(\014lenames)j(will)h(not)f(b)s(e)g(quoted,)h(either.)41 +b(This)28 b(is)i(activ)m(e)h(only)e(when)g(bash)1110 +4098 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f +(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 4208 +y(is)41 b(set)g(b)m(y)g(default,)j(whic)m(h)c(is)h(the)g(default)g +(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 4317 y(through)30 +b(4.2.)630 4500 y Ft(direxpand)1110 4609 y Fu(If)k(set,)i(Bash)f +(replaces)g(directory)g(names)g(with)f(the)g(results)h(of)f(w)m(ord)g +(ex-)1110 4719 y(pansion)k(when)g(p)s(erforming)f(\014lename)i +(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 4829 +y(con)m(ten)m(ts)29 b(of)e(the)g(readline)h(editing)g(bu\013er.)38 +b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 4938 +y(preserv)m(e)j(what)f(the)g(user)g(t)m(yp)s(ed.)630 +5121 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s +(elling)g(correction)g(on)g(directory)g(names)f(during)1110 +5230 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g +(initially)h(supplied)e(do)s(es)h(not)1110 5340 y(exist.)p +eop end +%%Page: 69 75 +TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(69)630 299 y Ft(dotglob)144 +b Fu(If)36 b(set,)i(Bash)e(includes)g(\014lenames)g(b)s(eginning)f +(with)h(a)g(`.')58 b(in)36 b(the)g(results)1110 408 y(of)f(\014lename)f +(expansion.)53 b(The)33 b(\014lenames)i(`)p Ft(.)p Fu(')f(and)g(`)p +Ft(..)p Fu(')g(m)m(ust)h(alw)m(a)m(ys)h(b)s(e)1110 518 +y(matc)m(hed)31 b(explicitly)-8 b(,)33 b(ev)m(en)e(if)f +Ft(dotglob)f Fu(is)h(set.)630 682 y Ft(execfail)96 b +Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m(teractiv)m(e)i(shell)e(will) +f(not)h(exit)h(if)e(it)h(cannot)h(execute)1110 792 y(the)i(\014le)g(sp) +s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to)h(the)f Ft(exec)f +Fu(builtin)h(command.)39 b(An)1110 902 y(in)m(teractiv)m(e)33 +b(shell)e(do)s(es)f(not)g(exit)i(if)e Ft(exec)f Fu(fails.)630 +1066 y Ft(expand_aliases)1110 1176 y Fu(If)j(set,)h(aliases)g(are)g +(expanded)e(as)h(describ)s(ed)f(b)s(elo)m(w)h(under)f(Aliases,)i(Sec-) +1110 1285 y(tion)38 b(6.6)h([Aliases],)j(page)d(94.)64 +b(This)37 b(option)h(is)g(enabled)g(b)m(y)g(default)g(for)1110 +1395 y(in)m(teractiv)m(e)33 b(shells.)630 1559 y Ft(extdebug)96 +b Fu(If)35 b(set)i(at)f(shell)g(in)m(v)m(o)s(cation,)k(or)c(in)f(a)h +(shell)h(startup)e(\014le,)i(arrange)g(to)f(ex-)1110 +1669 y(ecute)h(the)f(debugger)g(pro\014le)g(b)s(efore)g(the)g(shell)h +(starts,)h(iden)m(tical)g(to)f(the)1110 1778 y Ft(--debugger)32 +b Fu(option.)56 b(If)35 b(set)h(after)g(in)m(v)m(o)s(cation,)j(b)s(eha) +m(vior)c(in)m(tended)g(for)1110 1888 y(use)30 b(b)m(y)g(debuggers)g(is) +h(enabled:)1159 2025 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g +Ft(declare)d Fu(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290 +2134 y(Builtins],)29 b(page)g(51\))g(displa)m(ys)f(the)g(source)h +(\014le)f(name)g(and)f(line)h(n)m(um-)1290 2244 y(b)s(er)h(corresp)s +(onding)g(to)i(eac)m(h)g(function)f(name)g(supplied)f(as)i(an)f(argu-) +1290 2354 y(men)m(t.)1159 2491 y(2.)61 b(If)20 b(the)h(command)g(run)e +(b)m(y)i(the)f Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5 +b(alue,)1290 2600 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g +(not)i(executed.)1159 2737 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m +(y)i(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38 +b(of)f(2,)1290 2847 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h +(subroutine)e(\(a)i(shell)g(function)f(or)1290 2956 y(a)h(shell)g +(script)f(executed)h(b)m(y)g(the)f Ft(.)h Fu(or)f Ft(source)f +Fu(builtins\),)i(the)g(shell)1290 3066 y(sim)m(ulates)d(a)g(call)h(to)f +Ft(return)p Fu(.)1159 3203 y(4.)61 b Ft(BASH_ARGC)34 +b Fu(and)i Ft(BASH_ARGV)e Fu(are)j(up)s(dated)e(as)h(describ)s(ed)g(in) +g(their)1290 3313 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g +(V)-8 b(ariables],)32 b(page)f(73\).)1159 3450 y(5.)61 +b(F)-8 b(unction)57 b(tracing)g(is)g(enabled:)93 b(command)56 +b(substitution,)63 b(shell)1290 3559 y(functions,)32 +b(and)e(subshells)h(in)m(v)m(ok)m(ed)i(with)e Ft(\()f +Fj(command)e Ft(\))j Fu(inherit)h(the)1290 3669 y Ft(DEBUG)d +Fu(and)h Ft(RETURN)e Fu(traps.)1159 3806 y(6.)61 b(Error)41 +b(tracing)i(is)f(enabled:)63 b(command)42 b(substitution,)i(shell)f +(func-)1290 3915 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i +(with)e Ft(\()g Fj(command)f Ft(\))h Fu(inherit)h(the)g +Ft(ERR)1290 4025 y Fu(trap.)630 4189 y Ft(extglob)144 +b Fu(If)26 b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)g(features)g +(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 4299 y(Section)j(3.5.8.1)i +([P)m(attern)f(Matc)m(hing],)g(page)f(33\))h(are)f(enabled.)630 +4463 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p +Fj(string)p Ft(')49 b Fu(and)i Ft($")p Fj(string)p Ft(")e +Fu(quoting)k(is)e(p)s(erformed)f(within)1110 4573 y Ft(${)p +Fj(parameter)p Ft(})31 b Fu(expansions)k(enclosed)g(in)g(double)f +(quotes.)55 b(This)33 b(option)1110 4682 y(is)d(enabled)h(b)m(y)f +(default.)630 4847 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d +(whic)m(h)g(fail)h(to)h(matc)m(h)f(\014lenames)f(during)g(\014lename)g +(ex-)1110 4956 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630 +5121 y Ft(force_fignore)1110 5230 y Fu(If)43 b(set,)k(the)d(su\016xes)f +(sp)s(eci\014ed)f(b)m(y)i(the)f Ft(FIGNORE)f Fu(shell)h(v)-5 +b(ariable)44 b(cause)1110 5340 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h +(when)f(p)s(erforming)f(w)m(ord)h(completion)i(ev)m(en)f(if)g(the)p +eop end +%%Page: 70 76 +TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(70)1110 299 y(ignored)37 +b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g(completions.)62 +b(See)37 b(Section)h(5.2)1110 408 y([Bash)24 b(V)-8 b(ariables],)27 +b(page)e(73,)h(for)d(a)h(description)g(of)g Ft(FIGNORE)p +Fu(.)37 b(This)22 b(option)1110 518 y(is)30 b(enabled)h(b)m(y)f +(default.)630 701 y Ft(globasciiranges)1110 810 y Fu(If)j(set,)h(range) +f(expressions)g(used)f(in)h(pattern)g(matc)m(hing)h(brac)m(k)m(et)h +(expres-)1110 920 y(sions)28 b(\(see)h(Section)h(3.5.8.1)g([P)m(attern) +g(Matc)m(hing],)h(page)e(33\))g(b)s(eha)m(v)m(e)g(as)g(if)1110 +1029 y(in)i(the)g(traditional)i(C)d(lo)s(cale)j(when)d(p)s(erforming)g +(comparisons.)44 b(That)31 b(is,)1110 1139 y(the)d(curren)m(t)g(lo)s +(cale's)i(collating)h(sequence)d(is)h(not)f(tak)m(en)h(in)m(to)g +(accoun)m(t,)i(so)1110 1249 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i +(b)s(et)m(w)m(een)e(`)p Ft(A)p Fu(')g(and)f(`)p Ft(B)p +Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m(w)m(er-)1110 +1358 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i(together.)630 +1541 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern)f(`)p +Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename)h(expansion)f(con)m(text)j +(will)1110 1650 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or)f(more) +g(directories)h(and)e(sub)s(directories.)54 b(If)1110 +1760 y(the)30 b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p +Ft(/)p Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110 +1870 y(matc)m(h.)630 2052 y Ft(gnu_errfmt)1110 2162 y +Fu(If)35 b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g +(standard)f Fm(gnu)g Fu(error)1110 2271 y(message)c(format.)630 +2454 y Ft(histappend)1110 2564 y Fu(If)c(set,)j(the)e(history)g(list)g +(is)g(app)s(ended)e(to)j(the)f(\014le)g(named)f(b)m(y)h(the)g(v)-5 +b(alue)29 b(of)1110 2673 y(the)d Ft(HISTFILE)d Fu(v)-5 +b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m +(erwriting)1110 2783 y(the)31 b(\014le.)630 2966 y Ft(histreedit)1110 +3075 y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g +(user)g(is)g(giv)m(en)h(the)g(opp)s(ortunit)m(y)1110 +3185 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 +3367 y Ft(histverify)1110 3477 y Fu(If)35 b(set,)i(and)e(Readline)h(is) +f(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110 +3587 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g +(parser.)59 b(Instead,)38 b(the)1110 3696 y(resulting)i(line)f(is)h +(loaded)g(in)m(to)g(the)g(Readline)g(editing)g(bu\013er,)h(allo)m(wing) +1110 3806 y(further)29 b(mo)s(di\014cation.)630 3988 +y Ft(hostcomplete)1110 4098 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f +(b)s(eing)g(used,)h(Bash)g(will)f(attempt)h(to)g(p)s(erform)1110 +4208 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f +(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 4317 y(pleted)g(\(see)h +(Section)f(8.4.6)i([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g +(133\).)1110 4427 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.) +630 4609 y Ft(huponexit)1110 4719 y Fu(If)i(set,)i(Bash)f(will)h(send)d +Ft(SIGHUP)h Fu(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login) +1110 4829 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g +(page)f(42\).)630 5011 y Ft(inherit_errexit)1110 5121 +y Fu(If)e(set,)h(command)g(substitution)f(inherits)g(the)g(v)-5 +b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 5230 +y(tion,)33 b(instead)g(of)f(unsetting)g(it)h(in)f(the)g(subshell)f(en)m +(vironmen)m(t.)46 b(This)32 b(op-)1110 5340 y(tion)f(is)f(enabled)h +(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)p eop end +%%Page: 71 77 +TeXDict begin 71 76 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(71)630 299 y Ft +(interactive_comments)1110 408 y Fu(Allo)m(w)27 b(a)g(w)m(ord)e(b)s +(eginning)g(with)h(`)p Ft(#)p Fu(')g(to)h(cause)f(that)h(w)m(ord)f(and) +f(all)i(remain-)1110 518 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g +(to)g(b)s(e)f(ignored)g(in)g(an)g(in)m(teractiv)m(e)j(shell.)1110 +628 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 +777 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f +(not)f(activ)m(e,)k(the)d(shell)f(runs)f(the)i(last)g(command)1110 +887 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m +(kground)g(in)g(the)g(curren)m(t)g(shell)1110 996 y(en)m(vironmen)m(t.) +630 1146 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h +Ft(cmdhist)e Fu(option)j(is)f(enabled,)i(m)m(ulti-line)f(commands)1110 +1255 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s +(edded)g(newlines)h(rather)g(than)f(using)1110 1365 y(semicolon)32 +b(separators)f(where)e(p)s(ossible.)630 1514 y Ft(localvar_inherit)1110 +1624 y Fu(If)j(set,)h(lo)s(cal)g(v)-5 b(ariables)33 b(inherit)f(the)g +(v)-5 b(alue)32 b(and)g(attributes)h(of)f(a)g(v)-5 b(ariable)1110 +1733 y(of)36 b(the)g(same)g(name)g(that)h(exists)f(at)h(a)f(previous)g +(scop)s(e)g(b)s(efore)f(an)m(y)h(new)1110 1843 y(v)-5 +b(alue)31 b(is)f(assigned.)41 b(The)30 b Fr(nameref)48 +b Fu(attribute)31 b(is)f(not)h(inherited.)630 1993 y +Ft(localvar_unset)1110 2102 y Fu(If)i(set,)i(calling)g +Ft(unset)d Fu(on)i(lo)s(cal)g(v)-5 b(ariables)35 b(in)e(previous)g +(function)g(scop)s(es)1110 2212 y(marks)26 b(them)g(so)g(subsequen)m(t) +g(lo)s(okups)f(\014nd)g(them)h(unset)f(un)m(til)i(that)g(func-)1110 +2321 y(tion)40 b(returns.)68 b(This)39 b(is)g(iden)m(tical)j(to)e(the)g +(b)s(eha)m(vior)g(of)g(unsetting)g(lo)s(cal)1110 2431 +y(v)-5 b(ariables)31 b(at)g(the)g(curren)m(t)f(function)g(scop)s(e.)630 +2580 y Ft(login_shell)1110 2690 y Fu(The)35 b(shell)h(sets)g(this)f +(option)h(if)g(it)g(is)f(started)h(as)g(a)g(login)g(shell)g(\(see)g +(Sec-)1110 2800 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g +(86\).)41 b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m +(hanged.)630 2949 y Ft(mailwarn)96 b Fu(If)34 b(set,)i(and)e(a)h +(\014le)g(that)g(Bash)f(is)h(c)m(hec)m(king)h(for)f(mail)g(has)f(b)s +(een)g(accessed)1110 3059 y(since)24 b(the)h(last)g(time)f(it)h(w)m(as) +f(c)m(hec)m(k)m(ed,)k(the)c(message)h Ft("The)k(mail)h(in)f +Fj(mail-)1110 3168 y(file)g Ft(has)h(been)f(read")g Fu(is)h(displa)m(y) +m(ed.)630 3318 y Ft(no_empty_cmd_completion)1110 3427 +y Fu(If)g(set,)g(and)g(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g +(not)g(attempt)i(to)e(searc)m(h)1110 3537 y(the)25 b +Ft(PATH)f Fu(for)h(p)s(ossible)f(completions)j(when)d(completion)i(is)f +(attempted)h(on)1110 3646 y(an)k(empt)m(y)h(line.)630 +3796 y Ft(nocaseglob)1110 3905 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g +(\014lenames)g(in)f(a)h(case-insensitiv)m(e)j(fashion)c(when)1110 +4015 y(p)s(erforming)29 b(\014lename)i(expansion.)630 +4164 y Ft(nocasematch)1110 4274 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g +(patterns)g(in)f(a)h(case-insensitiv)m(e)i(fashion)d(when)1110 +4384 y(p)s(erforming)31 b(matc)m(hing)i(while)f(executing)i +Ft(case)d Fu(or)h Ft([[)g Fu(conditional)h(com-)1110 +4493 y(mands,)d(when)g(p)s(erforming)g(pattern)h(substitution)g(w)m +(ord)g(expansions,)g(or)1110 4603 y(when)g(\014ltering)i(p)s(ossible)f +(completions)h(as)g(part)f(of)h(programmable)f(com-)1110 +4712 y(pletion.)630 4862 y Ft(nullglob)96 b Fu(If)23 +b(set,)j(Bash)e(allo)m(ws)g(\014lename)g(patterns)g(whic)m(h)f(matc)m +(h)h(no)g(\014les)f(to)i(expand)1110 4971 y(to)31 b(a)g(n)m(ull)f +(string,)h(rather)f(than)g(themselv)m(es.)630 5121 y +Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g(completion)g +(facilities)i(\(see)f(Section)f(8.6)h([Pro-)1110 5230 +y(grammable)45 b(Completion],)k(page)c(137\))h(are)f(enabled.)82 +b(This)44 b(option)h(is)1110 5340 y(enabled)30 b(b)m(y)h(default.)p +eop end +%%Page: 72 78 +TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(72)630 299 y Ft(progcomp_alias) +1110 408 y Fu(If)23 b(set,)j(and)d(programmable)h(completion)h(is)f +(enabled,)h(Bash)f(treats)h(a)f(com-)1110 518 y(mand)34 +b(name)h(that)g(do)s(esn't)f(ha)m(v)m(e)i(an)m(y)g(completions)f(as)g +(a)g(p)s(ossible)g(alias)1110 628 y(and)40 b(attempts)i(alias)h +(expansion.)72 b(If)41 b(it)g(has)g(an)g(alias,)k(Bash)c(attempts)1110 +737 y(programmable)28 b(completion)h(using)e(the)h(command)f(w)m(ord)h +(resulting)f(from)1110 847 y(the)k(expanded)e(alias.)630 +1006 y Ft(promptvars)1110 1116 y Fu(If)50 b(set,)56 b(prompt)49 +b(strings)h(undergo)g(parameter)h(expansion,)k(command)1110 +1225 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo) +m(v)-5 b(al)35 b(after)f(b)s(eing)1110 1335 y(expanded)53 +b(as)h(describ)s(ed)e(b)s(elo)m(w)i(\(see)h(Section)f(6.9)h([Con)m +(trolling)g(the)1110 1445 y(Prompt],)30 b(page)h(98\).)42 +b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)630 +1604 y Ft(restricted_shell)1110 1714 y Fu(The)40 b(shell)h(sets)g(this) +g(option)g(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see) +1110 1823 y(Section)32 b(6.10)h([The)d(Restricted)j(Shell],)e(page)h +(100\).)45 b(The)30 b(v)-5 b(alue)32 b(ma)m(y)g(not)1110 +1933 y(b)s(e)g(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f +(the)h(startup)g(\014les)f(are)i(executed,)1110 2042 +y(allo)m(wing)k(the)e(startup)f(\014les)h(to)g(disco)m(v)m(er)h +(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 2152 +y(stricted.)630 2311 y Ft(shift_verbose)1110 2421 y Fu(If)g(this)g(is)g +(set,)j(the)d Ft(shift)f Fu(builtin)h(prin)m(ts)f(an)h(error)g(message) +i(when)d(the)1110 2531 y(shift)30 b(coun)m(t)h(exceeds)g(the)g(n)m(um)m +(b)s(er)e(of)h(p)s(ositional)i(parameters.)630 2690 y +Ft(sourcepath)1110 2800 y Fu(If)22 b(set,)j(the)e Ft(source)e +Fu(builtin)h(uses)g(the)h(v)-5 b(alue)23 b(of)g Ft(PATH)e +Fu(to)j(\014nd)d(the)h(directory)1110 2909 y(con)m(taining)29 +b(the)e(\014le)h(supplied)e(as)h(an)g(argumen)m(t.)40 +b(This)27 b(option)h(is)f(enabled)1110 3019 y(b)m(y)j(default.)630 +3178 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e +Fu(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f +(de-)1110 3288 y(fault.)150 3528 y Fs(4.4)68 b(Sp)t(ecial)45 +b(Builtins)150 3688 y Fu(F)-8 b(or)35 b(historical)h(reasons,)g(the)e +Fm(posix)g Fu(standard)f(has)i(classi\014ed)f(sev)m(eral)i(builtin)e +(commands)g(as)h Fl(sp)-5 b(e-)150 3797 y(cial)p Fu(.)47 +b(When)33 b(Bash)f(is)h(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g +(sp)s(ecial)g(builtins)e(di\013er)i(from)f(other)g(builtin)150 +3907 y(commands)e(in)g(three)h(resp)s(ects:)199 4042 +y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i(found)e(b)s(efore)h(shell)h +(functions)f(during)f(command)h(lo)s(okup.)199 4176 y(2.)61 +b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h(error)g(status,)h +(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 4311 +y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f(command) +g(sta)m(y)i(in)e(e\013ect)i(in)e(the)h(shell)f(en)m(vironmen)m(t)330 +4420 y(after)i(the)f(command)h(completes.)275 4579 y(When)36 +b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f Fu(mo)s(de,)j(these)f +(builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m(tly)h(than)150 +4689 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41 +b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s(ed)f(in)h +(Section)h(6.11)150 4799 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(101.)275 +4933 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390 +5068 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f +(readonly)f(return)h(set)390 5177 y(shift)g(trap)h(unset)p +eop end +%%Page: 73 79 +TeXDict begin 73 78 bop 3659 -116 a Fu(73)150 299 y Fp(5)80 +b(Shell)53 b(V)-13 b(ariables)150 504 y Fu(This)21 b(c)m(hapter)i +(describ)s(es)e(the)i(shell)f(v)-5 b(ariables)23 b(that)f(Bash)h(uses.) +37 b(Bash)23 b(automatically)h(assigns)f(default)150 +614 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5 +b(ariables.)150 843 y Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11 +b(ariables)150 1003 y Fu(Bash)30 b(uses)g(certain)h(shell)g(v)-5 +b(ariables)31 b(in)f(the)g(same)h(w)m(a)m(y)g(as)g(the)f(Bourne)g +(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1112 y(assigns)f(a)f +(default)h(v)-5 b(alue)31 b(to)g(the)f(v)-5 b(ariable.)150 +1260 y Ft(CDPATH)192 b Fu(A)39 b(colon-separated)i(list)e(of)g +(directories)h(used)f(as)g(a)g(searc)m(h)h(path)e(for)h(the)g +Ft(cd)f Fu(builtin)630 1370 y(command.)150 1518 y Ft(HOME)288 +b Fu(The)23 b(curren)m(t)h(user's)f(home)g(directory;)k(the)d(default)g +(for)f(the)h Ft(cd)f Fu(builtin)g(command.)38 b(The)630 +1628 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37 +b(is)g(also)g(used)e(b)m(y)h(tilde)h(expansion)f(\(see)i(Section)f +(3.5.2)h([Tilde)630 1737 y(Expansion],)30 b(page)h(24\).)150 +1885 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f +(separate)g(\014elds;)h(used)e(when)f(the)i(shell)f(splits)h(w)m(ords)e +(as)i(part)630 1995 y(of)31 b(expansion.)150 2143 y Ft(MAIL)288 +b Fu(If)44 b(this)g(parameter)h(is)g(set)g(to)g(a)f(\014lename)h(or)f +(directory)h(name)g(and)f(the)g Ft(MAILPATH)630 2252 +y Fu(v)-5 b(ariable)32 b(is)e(not)h(set,)h(Bash)f(informs)f(the)h(user) +f(of)h(the)g(arriv)-5 b(al)31 b(of)g(mail)g(in)g(the)g(sp)s(eci\014ed) +630 2362 y(\014le)f(or)h(Maildir-format)g(directory)-8 +b(.)150 2510 y Ft(MAILPATH)96 b Fu(A)33 b(colon-separated)i(list)f(of)f +(\014lenames)h(whic)m(h)f(the)g(shell)g(p)s(erio)s(dically)h(c)m(hec)m +(ks)g(for)f(new)630 2619 y(mail.)60 b(Eac)m(h)37 b(list)g(en)m(try)g +(can)g(sp)s(ecify)f(the)h(message)h(that)f(is)g(prin)m(ted)f(when)f +(new)h(mail)630 2729 y(arriv)m(es)31 b(in)g(the)g(mail)g(\014le)g(b)m +(y)g(separating)h(the)f(\014lename)g(from)f(the)h(message)h(with)e(a)i +(`)p Ft(?)p Fu('.)630 2839 y(When)g(used)f(in)h(the)g(text)i(of)e(the)g +(message,)i Ft($_)e Fu(expands)f(to)i(the)f(name)g(of)h(the)f(curren)m +(t)630 2948 y(mail)f(\014le.)150 3096 y Ft(OPTARG)192 +b Fu(The)30 b(v)-5 b(alue)31 b(of)f(the)h(last)g(option)g(argumen)m(t)g +(pro)s(cessed)f(b)m(y)g(the)g Ft(getopts)f Fu(builtin.)150 +3244 y Ft(OPTIND)192 b Fu(The)30 b(index)g(of)g(the)h(last)g(option)g +(argumen)m(t)g(pro)s(cessed)f(b)m(y)g(the)g Ft(getopts)f +Fu(builtin.)150 3392 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f +(of)f(directories)h(in)e(whic)m(h)h(the)g(shell)g(lo)s(oks)h(for)f +(commands.)45 b(A)630 3502 y(zero-length)e(\(n)m(ull\))g(directory)f +(name)g(in)g(the)g(v)-5 b(alue)42 b(of)g Ft(PATH)f Fu(indicates)i(the)f +(curren)m(t)630 3611 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f +(directory)i(name)e(ma)m(y)i(app)s(ear)e(as)h(t)m(w)m(o)h(adjacen)m(t)g +(colons,)g(or)f(as)g(an)630 3721 y(initial)f(or)e(trailing)h(colon.)150 +3869 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55 +b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Ft(\\s-\\v\\$)28 +b Fu('.)56 b(See)36 b(Section)g(6.9)630 3979 y([Con)m(trolling)42 +b(the)e(Prompt],)j(page)e(98,)j(for)c(the)g(complete)i(list)f(of)f +(escap)s(e)h(sequences)630 4088 y(that)31 b(are)g(expanded)e(b)s(efore) +h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4236 y Ft(PS2)336 +b Fu(The)28 b(secondary)g(prompt)g(string.)40 b(The)28 +b(default)g(v)-5 b(alue)29 b(is)g(`)p Ft(>)h Fu('.)40 +b Ft(PS2)28 b Fu(is)g(expanded)g(in)g(the)630 4346 y(same)j(w)m(a)m(y)g +(as)g Ft(PS1)e Fu(b)s(efore)h(b)s(eing)g(displa)m(y)m(ed.)150 +4575 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4734 +y Fu(These)45 b(v)-5 b(ariables)46 b(are)g(set)g(or)f(used)f(b)m(y)h +(Bash,)50 b(but)44 b(other)i(shells)f(do)h(not)f(normally)h(treat)g +(them)150 4844 y(sp)s(ecially)-8 b(.)275 4973 y(A)24 +b(few)g(v)-5 b(ariables)24 b(used)g(b)m(y)f(Bash)i(are)f(describ)s(ed)f +(in)h(di\013eren)m(t)g(c)m(hapters:)38 b(v)-5 b(ariables)25 +b(for)f(con)m(trolling)150 5082 y(the)31 b(job)f(con)m(trol)h +(facilities)i(\(see)e(Section)g(7.3)h([Job)e(Con)m(trol)h(V)-8 +b(ariables],)32 b(page)g(110\).)150 5230 y Ft(_)432 b +Fu(\($)p 716 5230 28 4 v 41 w(,)34 b(an)g(underscore.\))49 +b(A)m(t)35 b(shell)f(startup,)g(set)g(to)g(the)g(pathname)f(used)g(to)h +(in)m(v)m(ok)m(e)i(the)630 5340 y(shell)e(or)g(shell)h(script)f(b)s +(eing)f(executed)j(as)e(passed)g(in)f(the)i(en)m(vironmen)m(t)f(or)g +(argumen)m(t)p eop end +%%Page: 74 80 +TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(74)630 299 y(list.)55 +b(Subsequen)m(tly)-8 b(,)35 b(expands)f(to)i(the)f(last)g(argumen)m(t)h +(to)f(the)g(previous)f(simple)h(com-)630 408 y(mand)21 +b(executed)i(in)e(the)i(foreground,)g(after)f(expansion.)38 +b(Also)22 b(set)h(to)f(the)g(full)g(pathname)630 518 +y(used)h(to)i(in)m(v)m(ok)m(e)h(eac)m(h)g(command)e(executed)h(and)f +(placed)g(in)g(the)g(en)m(vironmen)m(t)h(exp)s(orted)630 +628 y(to)33 b(that)g(command.)45 b(When)32 b(c)m(hec)m(king)i(mail,)g +(this)e(parameter)g(holds)g(the)g(name)g(of)h(the)630 +737 y(mail)e(\014le.)150 920 y Ft(BASH)288 b Fu(The)30 +b(full)g(pathname)g(used)g(to)h(execute)h(the)e(curren)m(t)g(instance)h +(of)g(Bash.)150 1103 y Ft(BASHOPTS)96 b Fu(A)31 b(colon-separated)h +(list)f(of)g(enabled)f(shell)h(options.)41 b(Eac)m(h)31 +b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 b(alid)630 +1212 y(argumen)m(t)37 b(for)g(the)g Ft(-s)f Fu(option)i(to)f(the)g +Ft(shopt)f Fu(builtin)g(command)h(\(see)g(Section)h(4.3.2)630 +1322 y([The)e(Shopt)g(Builtin],)i(page)f(66\).)60 b(The)36 +b(options)h(app)s(earing)f(in)g Ft(BASHOPTS)e Fu(are)i(those)630 +1431 y(rep)s(orted)e(as)h(`)p Ft(on)p Fu(')f(b)m(y)h(`)p +Ft(shopt)p Fu('.)53 b(If)34 b(this)g(v)-5 b(ariable)36 +b(is)f(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)630 +1541 y(starts)25 b(up,)f(eac)m(h)i(shell)e(option)h(in)e(the)i(list)g +(will)f(b)s(e)g(enabled)g(b)s(efore)g(reading)g(an)m(y)g(startup)630 +1650 y(\014les.)41 b(This)29 b(v)-5 b(ariable)31 b(is)g(readonly)-8 +b(.)150 1833 y Ft(BASHPID)144 b Fu(Expands)35 b(to)i(the)f(pro)s(cess)f +(ID)i(of)f(the)g(curren)m(t)g(Bash)g(pro)s(cess.)58 b(This)35 +b(di\013ers)h(from)g Ft($$)630 1943 y Fu(under)31 b(certain)j +(circumstances,)h(suc)m(h)e(as)g(subshells)f(that)i(do)f(not)g(require) +g(Bash)g(to)h(b)s(e)630 2052 y(re-initialized.)57 b(Assignmen)m(ts)35 +b(to)h Ft(BASHPID)d Fu(ha)m(v)m(e)j(no)f(e\013ect.)56 +b(If)34 b Ft(BASHPID)f Fu(is)i(unset,)h(it)630 2162 y(loses)31 +b(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 2345 y Ft(BASH_ALIASES)630 +2454 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d(v)-5 +b(ariable)41 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f(in)m +(ternal)h(list)630 2564 y(of)c(aliases)h(as)f(main)m(tained)g(b)m(y)g +(the)g Ft(alias)e Fu(builtin.)59 b(\(see)37 b(Section)h(4.1)f([Bourne)g +(Shell)630 2673 y(Builtins],)31 b(page)g(44\).)42 b(Elemen)m(ts)31 +b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)g(the)g(alias)h(list;)h +(ho)m(w-)630 2783 y(ev)m(er,)k(unsetting)f(arra)m(y)g(elemen)m(ts)g +(curren)m(tly)g(do)s(es)f(not)g(cause)h(aliases)h(to)f(b)s(e)f(remo)m +(v)m(ed)630 2892 y(from)25 b(the)h(alias)h(list.)40 b(If)25 +b Ft(BASH_ALIASES)d Fu(is)k(unset,)g(it)g(loses)h(its)f(sp)s(ecial)g +(prop)s(erties,)g(ev)m(en)630 3002 y(if)k(it)h(is)g(subsequen)m(tly)f +(reset.)150 3185 y Ft(BASH_ARGC)630 3294 y Fu(An)39 b(arra)m(y)g(v)-5 +b(ariable)40 b(whose)f(v)-5 b(alues)39 b(are)h(the)f(n)m(um)m(b)s(er)f +(of)h(parameters)g(in)g(eac)m(h)h(frame)630 3404 y(of)i(the)g(curren)m +(t)g(bash)f(execution)i(call)g(stac)m(k.)76 b(The)42 +b(n)m(um)m(b)s(er)e(of)i(parameters)g(to)h(the)630 3513 +y(curren)m(t)38 b(subroutine)f(\(shell)i(function)e(or)i(script)f +(executed)h(with)e Ft(.)h Fu(or)g Ft(source)p Fu(\))f(is)h(at)630 +3623 y(the)27 b(top)g(of)g(the)g(stac)m(k.)41 b(When)27 +b(a)g(subroutine)f(is)h(executed,)i(the)e(n)m(um)m(b)s(er)f(of)h +(parameters)630 3733 y(passed)44 b(is)h(pushed)e(on)m(to)j +Ft(BASH_ARGC)p Fu(.)81 b(The)44 b(shell)h(sets)g Ft(BASH_ARGC)e +Fu(only)i(when)e(in)630 3842 y(extended)34 b(debugging)f(mo)s(de)g +(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(66,)g(for) +630 3952 y(a)e(description)g(of)f(the)h Ft(extdebug)d +Fu(option)j(to)h(the)e Ft(shopt)g Fu(builtin\).)47 b(Setting)33 +b Ft(extdebug)630 4061 y Fu(after)c(the)g(shell)g(has)g(started)g(to)g +(execute)i(a)e(script,)g(or)g(referencing)g(this)f(v)-5 +b(ariable)30 b(when)630 4171 y Ft(extdebug)e Fu(is)j(not)f(set,)h(ma)m +(y)g(result)g(in)f(inconsisten)m(t)h(v)-5 b(alues.)150 +4354 y Ft(BASH_ARGV)630 4463 y Fu(An)24 b(arra)m(y)g(v)-5 +b(ariable)25 b(con)m(taining)h(all)f(of)f(the)h(parameters)f(in)g(the)g +(curren)m(t)g(bash)g(execution)630 4573 y(call)35 b(stac)m(k.)53 +b(The)34 b(\014nal)g(parameter)g(of)g(the)g(last)h(subroutine)e(call)i +(is)f(at)h(the)f(top)h(of)f(the)630 4682 y(stac)m(k;)28 +b(the)c(\014rst)f(parameter)i(of)f(the)g(initial)i(call)f(is)f(at)h +(the)f(b)s(ottom.)39 b(When)24 b(a)g(subroutine)630 4792 +y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f(on)m +(to)i Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 4902 +y(sets)28 b Ft(BASH_ARGV)e Fu(only)i(when)f(in)h(extended)g(debugging)g +(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 5011 y(Shopt)g(Builtin],) +h(page)g(66,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d +Fu(option)j(to)g(the)f Ft(shopt)630 5121 y Fu(builtin\).)64 +b(Setting)38 b Ft(extdebug)e Fu(after)j(the)f(shell)g(has)g(started)g +(to)h(execute)g(a)g(script,)h(or)630 5230 y(referencing)35 +b(this)f(v)-5 b(ariable)35 b(when)e Ft(extdebug)f Fu(is)j(not)f(set,)j +(ma)m(y)e(result)f(in)g(inconsisten)m(t)630 5340 y(v)-5 +b(alues.)p eop end +%%Page: 75 81 +TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(75)150 299 y Ft(BASH_ARGV0)630 +408 y Fu(When)31 b(referenced,)g(this)g(v)-5 b(ariable)32 +b(expands)e(to)h(the)h(name)f(of)g(the)g(shell)g(or)g(shell)g(script) +630 518 y(\(iden)m(tical)42 b(to)e Ft($0)p Fu(;)j(See)d(Section)g +(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)j(page)d(21,)j(for)c(the)h(de-) +630 628 y(scription)32 b(of)g(sp)s(ecial)g(parameter)g(0\).)45 +b(Assignmen)m(t)32 b(to)h Ft(BASH_ARGV0)c Fu(causes)j(the)f(v)-5 +b(alue)630 737 y(assigned)34 b(to)h(also)g(b)s(e)e(assigned)h(to)g +Ft($0)p Fu(.)51 b(If)33 b Ft(BASH_ARGV0)f Fu(is)h(unset,)i(it)f(loses)h +(its)f(sp)s(ecial)630 847 y(prop)s(erties,)c(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 1048 y Ft(BASH_CMDS)630 +1157 y Fu(An)k(asso)s(ciativ)m(e)i(arra)m(y)f(v)-5 b(ariable)35 +b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f(in)m(ternal)h +(hash)630 1267 y(table)c(of)g(commands)f(as)g(main)m(tained)h(b)m(y)g +(the)f Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)630 +1377 y(Shell)42 b(Builtins],)k(page)d(44\).)77 b(Elemen)m(ts)43 +b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)f(the)i(hash)630 +1486 y(table;)k(ho)m(w)m(ev)m(er,)e(unsetting)c(arra)m(y)g(elemen)m(ts) +i(curren)m(tly)d(do)s(es)h(not)g(cause)g(command)630 +1596 y(names)36 b(to)g(b)s(e)f(remo)m(v)m(ed)i(from)e(the)h(hash)f +(table.)58 b(If)36 b Ft(BASH_CMDS)d Fu(is)j(unset,)h(it)f(loses)h(its) +630 1705 y(sp)s(ecial)31 b(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 1906 y Ft(BASH_COMMAND)630 +2016 y Fu(The)39 b(command)h(curren)m(tly)g(b)s(eing)f(executed)i(or)e +(ab)s(out)h(to)g(b)s(e)f(executed,)44 b(unless)39 b(the)630 +2125 y(shell)g(is)g(executing)g(a)g(command)g(as)g(the)f(result)h(of)g +(a)g(trap,)i(in)d(whic)m(h)g(case)i(it)f(is)g(the)630 +2235 y(command)30 b(executing)i(at)g(the)f(time)g(of)g(the)g(trap.)41 +b(If)30 b Ft(BASH_COMMAND)e Fu(is)i(unset,)h(it)g(loses)630 +2345 y(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)f +(subsequen)m(tly)g(reset.)150 2545 y Ft(BASH_COMPAT)630 +2655 y Fu(The)i(v)-5 b(alue)33 b(is)g(used)f(to)h(set)g(the)g(shell's)g +(compatibilit)m(y)i(lev)m(el.)49 b(See)33 b(Section)h(6.12)g([Shell)630 +2765 y(Compatibilit)m(y)j(Mo)s(de],)h(page)e(104,)i(for)e(a)g +(description)g(of)f(the)h(v)-5 b(arious)36 b(compatibilit)m(y)630 +2874 y(lev)m(els)g(and)f(their)g(e\013ects.)55 b(The)34 +b(v)-5 b(alue)36 b(ma)m(y)f(b)s(e)f(a)i(decimal)f(n)m(um)m(b)s(er)f +(\(e.g.,)k(4.2\))e(or)f(an)630 2984 y(in)m(teger)44 b(\(e.g.,)j(42\))d +(corresp)s(onding)d(to)i(the)g(desired)e(compatibilit)m(y)k(lev)m(el.) +78 b(If)42 b Ft(BASH_)630 3093 y(COMPAT)28 b Fu(is)j(unset)e(or)h(set)h +(to)g(the)f(empt)m(y)h(string,)f(the)h(compatibilit)m(y)h(lev)m(el)g +(is)e(set)h(to)g(the)630 3203 y(default)39 b(for)g(the)g(curren)m(t)g +(v)m(ersion.)67 b(If)38 b Ft(BASH_COMPAT)e Fu(is)j(set)h(to)f(a)h(v)-5 +b(alue)39 b(that)h(is)f(not)630 3313 y(one)31 b(of)f(the)h(v)-5 +b(alid)31 b(compatibilit)m(y)i(lev)m(els,)f(the)f(shell)f(prin)m(ts)g +(an)h(error)f(message)i(and)e(sets)630 3422 y(the)i(compatibilit)m(y)j +(lev)m(el)e(to)g(the)g(default)f(for)g(the)g(curren)m(t)g(v)m(ersion.) +47 b(The)31 b(v)-5 b(alid)33 b(v)-5 b(alues)630 3532 +y(corresp)s(ond)31 b(to)i(the)g(compatibilit)m(y)i(lev)m(els)f(describ) +s(ed)d(b)s(elo)m(w)i(\(see)g(Section)h(6.12)g([Shell)630 +3641 y(Compatibilit)m(y)d(Mo)s(de],)f(page)g(104\).)42 +b(F)-8 b(or)30 b(example,)h(4.2)f(and)f(42)h(are)g(v)-5 +b(alid)30 b(v)-5 b(alues)29 b(that)630 3751 y(corresp)s(ond)d(to)i(the) +f Ft(compat42)e(shopt)g Fu(option)j(and)e(set)i(the)f(compatibilit)m(y) +i(lev)m(el)g(to)f(42.)630 3861 y(The)i(curren)m(t)g(v)m(ersion)h(is)f +(also)i(a)e(v)-5 b(alid)31 b(v)-5 b(alue.)150 4061 y +Ft(BASH_ENV)96 b Fu(If)28 b(this)g(v)-5 b(ariable)30 +b(is)e(set)h(when)f(Bash)g(is)h(in)m(v)m(ok)m(ed)h(to)f(execute)h(a)e +(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 4171 +y(expanded)k(and)h(used)g(as)g(the)h(name)f(of)g(a)h(startup)f(\014le)g +(to)h(read)f(b)s(efore)g(executing)i(the)630 4281 y(script.)41 +b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(88.)150 +4482 y Ft(BASH_EXECUTION_STRING)630 4591 y Fu(The)f(command)g(argumen)m +(t)h(to)g(the)g Ft(-c)e Fu(in)m(v)m(o)s(cation)k(option.)150 +4792 y Ft(BASH_LINENO)630 4902 y Fu(An)62 b(arra)m(y)i(v)-5 +b(ariable)63 b(whose)g(mem)m(b)s(ers)e(are)j(the)e(line)h(n)m(um)m(b)s +(ers)f(in)g(source)h(\014les)630 5011 y(where)46 b(eac)m(h)i(corresp)s +(onding)d(mem)m(b)s(er)h(of)h Fr(FUNCNAME)53 b Fu(w)m(as)47 +b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 5121 y(LINENO[$i]})39 +b Fu(is)i(the)h(line)g(n)m(um)m(b)s(er)e(in)i(the)f(source)h(\014le)g +(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 5230 y(where)d +Ft(${FUNCNAME[$i]})c Fu(w)m(as)k(called)i(\(or)e Ft +(${BASH_LINENO[$i-1]})34 b Fu(if)39 b(referenced)630 +5340 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31 +b Ft(LINENO)d Fu(to)j(obtain)g(the)g(curren)m(t)f(line)h(n)m(um)m(b)s +(er.)p eop end +%%Page: 76 82 +TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft +(BASH_LOADABLES_PATH)630 408 y Fu(A)39 b(colon-separated)i(list)f(of)f +(directories)h(in)f(whic)m(h)g(the)g(shell)h(lo)s(oks)f(for)g +(dynamically)630 518 y(loadable)32 b(builtins)d(sp)s(eci\014ed)h(b)m(y) +g(the)h Ft(enable)e Fu(command.)150 673 y Ft(BASH_REMATCH)630 +783 y Fu(An)43 b(arra)m(y)i(v)-5 b(ariable)44 b(whose)g(mem)m(b)s(ers)f +(are)h(assigned)g(b)m(y)f(the)h(`)p Ft(=~)p Fu(')g(binary)f(op)s +(erator)630 892 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e +(\(see)h(Section)g(3.2.5.2)i([Conditional)e(Constructs],)630 +1002 y(page)e(11\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f +(the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)630 +1112 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27 +b(elemen)m(t)j(with)d(index)h Fr(n)f Fu(is)h(the)g(p)s(ortion)g(of)g +(the)g(string)630 1221 y(matc)m(hing)j(the)g Fr(n)p Fu(th)f(paren)m +(thesized)h(sub)s(expression.)150 1377 y Ft(BASH_SOURCE)630 +1486 y Fu(An)40 b(arra)m(y)h(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers) +g(are)h(the)g(source)f(\014lenames)h(where)f(the)g(corre-)630 +1596 y(sp)s(onding)27 b(shell)i(function)f(names)g(in)g(the)h +Ft(FUNCNAME)d Fu(arra)m(y)j(v)-5 b(ariable)30 b(are)f(de\014ned.)38 +b(The)630 1705 y(shell)26 b(function)g Ft(${FUNCNAME[$i]})c +Fu(is)k(de\014ned)f(in)g(the)h(\014le)h Ft(${BASH_SOURCE[$i]})21 +b Fu(and)630 1815 y(called)32 b(from)d Ft(${BASH_SOURCE[$i+1]})150 +1970 y(BASH_SUBSHELL)630 2080 y Fu(Incremen)m(ted)24 +b(b)m(y)f(one)h(within)f(eac)m(h)i(subshell)d(or)i(subshell)e(en)m +(vironmen)m(t)i(when)f(the)h(shell)630 2189 y(b)s(egins)j(executing)i +(in)e(that)h(en)m(vironmen)m(t.)41 b(The)27 b(initial)i(v)-5 +b(alue)28 b(is)f(0.)40 b(If)28 b Ft(BASH_SUBSHELL)630 +2299 y Fu(is)i(unset,)h(it)g(loses)g(its)f(sp)s(ecial)h(prop)s(erties,) +f(ev)m(en)h(if)g(it)g(is)f(subsequen)m(tly)g(reset.)150 +2454 y Ft(BASH_VERSINFO)630 2564 y Fu(A)36 b(readonly)g(arra)m(y)g(v)-5 +b(ariable)37 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(95\))h +(whose)f(mem)m(b)s(ers)630 2673 y(hold)c(v)m(ersion)h(information)f +(for)g(this)g(instance)h(of)g(Bash.)46 b(The)32 b(v)-5 +b(alues)32 b(assigned)h(to)g(the)630 2783 y(arra)m(y)e(mem)m(b)s(ers)e +(are)i(as)g(follo)m(ws:)630 2938 y Ft(BASH_VERSINFO[0])1110 +3048 y Fu(The)f(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i +Fr(release)5 b Fu(\).)630 3203 y Ft(BASH_VERSINFO[1])1110 +3313 y Fu(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i +Fr(v)m(ersion)p Fu(\).)630 3468 y Ft(BASH_VERSINFO[2])1110 +3577 y Fu(The)f(patc)m(h)h(lev)m(el.)630 3733 y Ft(BASH_VERSINFO[3]) +1110 3842 y Fu(The)f(build)f(v)m(ersion.)630 3998 y Ft +(BASH_VERSINFO[4])1110 4107 y Fu(The)h(release)i(status)e(\(e.g.,)j +Fr(b)s(eta1)7 b Fu(\).)630 4262 y Ft(BASH_VERSINFO[5])1110 +4372 y Fu(The)30 b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p +Fu(.)150 4527 y Ft(BASH_VERSION)630 4637 y Fu(The)g(v)m(ersion)h(n)m +(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 +4792 y Ft(BASH_XTRACEFD)630 4902 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i +(corresp)s(onding)e(to)h(a)g(v)-5 b(alid)31 b(\014le)g(descriptor,)g +(Bash)g(will)g(write)g(the)630 5011 y(trace)37 b(output)f(generated)h +(when)f(`)p Ft(set)29 b(-x)p Fu(')36 b(is)g(enabled)h(to)g(that)f +(\014le)h(descriptor.)58 b(This)630 5121 y(allo)m(ws)29 +b(tracing)h(output)d(to)i(b)s(e)f(separated)g(from)g(diagnostic)h(and)f +(error)f(messages.)41 b(The)630 5230 y(\014le)31 b(descriptor)f(is)h +(closed)g(when)f Ft(BASH_XTRACEFD)d Fu(is)k(unset)f(or)g(assigned)h(a)g +(new)f(v)-5 b(alue.)630 5340 y(Unsetting)45 b Ft(BASH_XTRACEFD)40 +b Fu(or)k(assigning)g(it)g(the)g(empt)m(y)h(string)e(causes)i(the)f +(trace)p eop end +%%Page: 77 83 +TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(output)33 +b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g(standard)e(error.)50 +b(Note)35 b(that)g(setting)f Ft(BASH_XTRACEFD)c Fu(to)630 +408 y(2)39 b(\(the)h(standard)e(error)g(\014le)h(descriptor\))h(and)e +(then)h(unsetting)g(it)g(will)g(result)g(in)g(the)630 +518 y(standard)30 b(error)g(b)s(eing)f(closed.)150 664 +y Ft(CHILD_MAX)630 774 y Fu(Set)35 b(the)h(n)m(um)m(b)s(er)e(of)h +(exited)h(c)m(hild)g(status)f(v)-5 b(alues)36 b(for)f(the)g(shell)g(to) +h(remem)m(b)s(er.)55 b(Bash)630 883 y(will)37 b(not)g(allo)m(w)i(this)e +(v)-5 b(alue)37 b(to)h(b)s(e)e(decreased)i(b)s(elo)m(w)f(a)g +Fm(posix)p Fu(-mandated)f(minim)m(um,)630 993 y(and)30 +b(there)g(is)g(a)h(maxim)m(um)f(v)-5 b(alue)30 b(\(curren)m(tly)h +(8192\))h(that)f(this)f(ma)m(y)g(not)h(exceed.)41 b(The)630 +1103 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.) +150 1249 y Ft(COLUMNS)144 b Fu(Used)32 b(b)m(y)f(the)h +Ft(select)e Fu(command)h(to)i(determine)f(the)f(terminal)i(width)d +(when)h(prin)m(ting)630 1358 y(selection)39 b(lists.)63 +b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d +Fu(option)j(is)f(enabled)h(\(see)630 1468 y(Section)44 +b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(66\),)k(or)43 +b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 1577 +y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1724 y +Ft(COMP_CWORD)630 1833 y Fu(An)38 b(index)g(in)m(to)h +Ft(${COMP_WORDS})c Fu(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e +(curren)m(t)g(cursor)g(p)s(o-)630 1943 y(sition.)72 b(This)40 +b(v)-5 b(ariable)41 b(is)f(a)m(v)-5 b(ailable)43 b(only)e(in)f(shell)h +(functions)f(in)m(v)m(ok)m(ed)i(b)m(y)e(the)h(pro-)630 +2052 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g +([Programmable)g(Completion],)630 2162 y(page)31 b(137\).)150 +2308 y Ft(COMP_LINE)630 2418 y Fu(The)38 b(curren)m(t)h(command)f +(line.)66 b(This)37 b(v)-5 b(ariable)40 b(is)f(a)m(v)-5 +b(ailable)41 b(only)d(in)h(shell)f(functions)630 2527 +y(and)25 b(external)h(commands)f(in)m(v)m(ok)m(ed)h(b)m(y)f(the)h +(programmable)f(completion)i(facilities)g(\(see)630 2637 +y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(137\).)150 +2783 y Ft(COMP_POINT)630 2892 y Fu(The)25 b(index)g(of)h(the)g(curren)m +(t)f(cursor)g(p)s(osition)h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of) +g(the)h(curren)m(t)630 3002 y(command.)40 b(If)27 b(the)h(curren)m(t)g +(cursor)g(p)s(osition)g(is)g(at)g(the)g(end)g(of)g(the)g(curren)m(t)g +(command,)630 3112 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5 +b(ariable)31 b(is)f(equal)g(to)h Ft(${#COMP_LINE})p Fu(.)37 +b(This)29 b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 +3221 y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g +(in)m(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 3331 +y(completion)c(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g +(Completion],)h(page)f(137\).)150 3477 y Ft(COMP_TYPE)630 +3587 y Fu(Set)c(to)h(an)f(in)m(teger)h(v)-5 b(alue)28 +b(corresp)s(onding)e(to)h(the)h(t)m(yp)s(e)f(of)g(completion)h +(attempted)g(that)630 3696 y(caused)e(a)h(completion)h(function)e(to)h +(b)s(e)f(called:)40 b Fr(T)-8 b(AB)p Fu(,)27 b(for)g(normal)f +(completion,)j(`)p Ft(?)p Fu(',)e(for)630 3806 y(listing)35 +b(completions)h(after)f(successiv)m(e)g(tabs,)h(`)p Ft(!)p +Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d(partial)630 +3915 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p Fu(',)f(to)e(list)g +(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo)s(di\014ed,)f(or)h +(`)p Ft(\045)p Fu(',)h(for)630 4025 y(men)m(u)i(completion.)41 +b(This)25 b(v)-5 b(ariable)27 b(is)g(a)m(v)-5 b(ailable)28 +b(only)f(in)f(shell)g(functions)g(and)g(external)630 +4134 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g(programmable)h +(completion)g(facilities)i(\(see)e(Section)g(8.6)630 +4244 y([Programmable)e(Completion],)h(page)f(137\).)150 +4390 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i +(of)f(a)g(k)m(ey)h(sequence\))g(used)e(to)i(in)m(v)m(ok)m(e)h(the)e +(curren)m(t)g(completion)630 4500 y(function.)150 4646 +y Ft(COMP_WORDBREAKS)630 4756 y Fu(The)f(set)i(of)e(c)m(haracters)j +(that)e(the)g(Readline)g(library)g(treats)g(as)g(w)m(ord)g(separators)g +(when)630 4865 y(p)s(erforming)i(w)m(ord)h(completion.)51 +b(If)33 b Ft(COMP_WORDBREAKS)c Fu(is)34 b(unset,)g(it)f(loses)i(its)e +(sp)s(ecial)630 4975 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 5121 y Ft(COMP_WORDS)630 +5230 y Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the) +g(individual)f(w)m(ords)h(in)f(the)h(curren)m(t)g(command)630 +5340 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as) +h(Readline)h(w)m(ould)f(split)g(it,)53 b(using)47 b Ft(COMP_)p +eop end +%%Page: 78 84 +TeXDict begin 78 83 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(78)630 299 y Ft(WORDBREAKS)34 +b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60 b(This)36 +b(v)-5 b(ariable)37 b(is)f(a)m(v)-5 b(ailable)39 b(only)e(in)f(shell)h +(func-)630 408 y(tions)32 b(in)m(v)m(ok)m(ed)i(b)m(y)d(the)i +(programmable)f(completion)h(facilities)h(\(see)f(Section)g(8.6)g +([Pro-)630 518 y(grammable)e(Completion],)g(page)g(137\).)150 +676 y Ft(COMPREPLY)630 786 y Fu(An)37 b(arra)m(y)h(v)-5 +b(ariable)38 b(from)f(whic)m(h)g(Bash)g(reads)g(the)h(p)s(ossible)e +(completions)j(generated)630 896 y(b)m(y)33 b(a)g(shell)h(function)f +(in)m(v)m(ok)m(ed)h(b)m(y)f(the)g(programmable)h(completion)g(facilit)m +(y)h(\(see)f(Sec-)630 1005 y(tion)g(8.6)g([Programmable)g(Completion],) +h(page)f(137\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains) +630 1115 y(one)c(p)s(ossible)f(completion.)150 1273 y +Ft(COPROC)192 b Fu(An)27 b(arra)m(y)g(v)-5 b(ariable)28 +b(created)g(to)f(hold)g(the)g(\014le)g(descriptors)g(for)g(output)f +(from)h(and)f(input)630 1383 y(to)31 b(an)f(unnamed)f(copro)s(cess)i +(\(see)g(Section)h(3.2.6)g([Copro)s(cesses],)f(page)g(15\).)150 +1541 y Ft(DIRSTACK)96 b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28 +b(con)m(taining)g(the)f(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f +(directory)i(stac)m(k.)41 b(Direc-)630 1650 y(tories)33 +b(app)s(ear)f(in)g(the)h(stac)m(k)h(in)e(the)h(order)f(they)h(are)g +(displa)m(y)m(ed)g(b)m(y)f(the)h Ft(dirs)e Fu(builtin.)630 +1760 y(Assigning)f(to)h(mem)m(b)s(ers)f(of)g(this)g(arra)m(y)g(v)-5 +b(ariable)31 b(ma)m(y)g(b)s(e)e(used)h(to)h(mo)s(dify)e(directories)630 +1870 y(already)41 b(in)f(the)h(stac)m(k,)k(but)40 b(the)h +Ft(pushd)e Fu(and)h Ft(popd)f Fu(builtins)h(m)m(ust)h(b)s(e)e(used)h +(to)i(add)630 1979 y(and)37 b(remo)m(v)m(e)h(directories.)63 +b(Assignmen)m(t)37 b(to)h(this)f(v)-5 b(ariable)38 b(will)g(not)f(c)m +(hange)i(the)e(cur-)630 2089 y(ren)m(t)c(directory)-8 +b(.)47 b(If)32 b Ft(DIRSTACK)e Fu(is)i(unset,)g(it)h(loses)g(its)g(sp)s +(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)630 +2198 y(subsequen)m(tly)d(reset.)150 2357 y Ft(EMACS)240 +b Fu(If)31 b(Bash)h(\014nds)d(this)j(v)-5 b(ariable)32 +b(in)f(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)f(starts)h(with)f +(v)-5 b(alue)630 2466 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h +(the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and) +h(disables)630 2576 y(line)d(editing.)150 2734 y Ft(ENV)336 +b Fu(Expanded)30 b(and)h(executed)h(similarlt)m(y)g(to)g +Ft(BASH_ENV)d Fu(\(see)k(Section)f(6.2)g([Bash)g(Startup)630 +2844 y(Files],)39 b(page)e(88\))h(when)d(an)h(in)m(teractiv)m(e)j +(shell)d(is)h(in)m(v)m(ok)m(ed)g(in)f Fm(posix)g Fu(Mo)s(de)g(\(see)h +(Sec-)630 2953 y(tion)31 b(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g +(101\).)150 3112 y Ft(EPOCHREALTIME)630 3221 y Fu(Eac)m(h)38 +b(time)f(this)g(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the) +f(n)m(um)m(b)s(er)f(of)h(seconds)630 3331 y(since)f(the)g(Unix)f(Ep)s +(o)s(c)m(h)g(as)h(a)g(\015oating)h(p)s(oin)m(t)f(v)-5 +b(alue)36 b(with)f(micro-second)i(gran)m(ularit)m(y)630 +3440 y(\(see)42 b(the)g(do)s(cumen)m(tation)g(for)f(the)g(C)g(library)g +(function)g Fr(time)47 b Fu(for)41 b(the)h(de\014nition)f(of)630 +3550 y(Ep)s(o)s(c)m(h\).)82 b(Assignmen)m(ts)44 b(to)h +Ft(EPOCHREALTIME)c Fu(are)j(ignored.)83 b(If)43 b Ft(EPOCHREALTIME)e +Fu(is)630 3660 y(unset,)30 b(it)h(loses)g(its)g(sp)s(ecial)g(prop)s +(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150 +3818 y Ft(EPOCHSECONDS)630 3927 y Fu(Eac)m(h)38 b(time)f(this)g +(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the)f(n)m(um)m(b)s +(er)f(of)h(seconds)630 4037 y(since)e(the)g(Unix)f(Ep)s(o)s(c)m(h)g +(\(see)i(the)f(do)s(cumen)m(tation)g(for)g(the)f(C)h(library)f +(function)g Fr(time)630 4147 y Fu(for)41 b(the)g(de\014nition)g(of)h +(Ep)s(o)s(c)m(h\).)73 b(Assignmen)m(ts)41 b(to)h Ft(EPOCHSECONDS)c +Fu(are)k(ignored.)73 b(If)630 4256 y Ft(EPOCHSECONDS)27 +b Fu(is)j(unset,)g(it)g(loses)h(its)g(sp)s(ecial)f(prop)s(erties,)g(ev) +m(en)h(if)f(it)g(is)g(subsequen)m(tly)630 4366 y(reset.)150 +4524 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d +(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 +b(ariable)31 b(is)f(readonly)-8 b(.)150 4682 y Ft(EXECIGNORE)630 +4792 y Fu(A)29 b(colon-separated)h(list)f(of)g(shell)g(patterns)f +(\(see)i(Section)f(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)630 +4902 y(page)j(33\))g(de\014ning)e(the)h(list)g(of)g(\014lenames)g(to)g +(b)s(e)g(ignored)g(b)m(y)f(command)h(searc)m(h)g(using)630 +5011 y Ft(PATH)p Fu(.)k(Files)22 b(whose)f(full)g(pathnames)g(matc)m(h) +h(one)f(of)g(these)h(patterns)e(are)i(not)f(considered)630 +5121 y(executable)j(\014les)e(for)g(the)h(purp)s(oses)d(of)j +(completion)h(and)d(command)i(execution)g(via)g Ft(PATH)630 +5230 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h(a\013ect)i(the)d(b) +s(eha)m(vior)h(of)g(the)g Ft([)p Fu(,)h Ft(test)p Fu(,)f(and)f +Ft([[)g Fu(commands.)630 5340 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g +(command)g(hash)f(table)i(are)g(not)f(sub)5 b(ject)41 +b(to)g Ft(EXECIGNORE)p Fu(.)p eop end +%%Page: 79 85 +TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(79)630 299 y(Use)30 +b(this)f(v)-5 b(ariable)30 b(to)g(ignore)g(shared)f(library)g(\014les)g +(that)h(ha)m(v)m(e)h(the)f(executable)h(bit)e(set,)630 +408 y(but)36 b(are)h(not)g(executable)i(\014les.)60 b(The)36 +b(pattern)h(matc)m(hing)h(honors)e(the)h(setting)h(of)f(the)630 +518 y Ft(extglob)28 b Fu(shell)j(option.)150 679 y Ft(FCEDIT)192 +b Fu(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y)h(the)f +Ft(-e)g Fu(option)h(to)g(the)f Ft(fc)g Fu(builtin)g(command.)150 +840 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g +(su\016xes)e(to)i(ignore)g(when)e(p)s(erforming)g(\014lename)i(comple-) +630 950 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i +(one)f(of)g(the)g(en)m(tries)g(in)g Ft(FIGNORE)d Fu(is)j(excluded)630 +1060 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41 +b(A)30 b(sample)h(v)-5 b(alue)31 b(is)f(`)p Ft(.o:~)p +Fu(')150 1221 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5 +b(ariable)36 b(con)m(taining)h(the)f(names)g(of)g(all)g(shell)g +(functions)g(curren)m(tly)f(in)h(the)630 1330 y(execution)g(call)h +(stac)m(k.)57 b(The)34 b(elemen)m(t)j(with)e(index)g(0)h(is)f(the)g +(name)h(of)f(an)m(y)h(curren)m(tly-)630 1440 y(executing)f(shell)f +(function.)51 b(The)34 b(b)s(ottom-most)h(elemen)m(t)g(\(the)g(one)f +(with)g(the)g(highest)630 1549 y(index\))e(is)h Ft("main")p +Fu(.)44 b(This)32 b(v)-5 b(ariable)33 b(exists)g(only)g(when)e(a)i +(shell)f(function)g(is)g(executing.)630 1659 y(Assignmen)m(ts)23 +b(to)f Ft(FUNCNAME)e Fu(ha)m(v)m(e)k(no)e(e\013ect.)39 +b(If)22 b Ft(FUNCNAME)e Fu(is)i(unset,)h(it)g(loses)g(its)f(sp)s(ecial) +630 1769 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m +(tly)f(reset.)630 1904 y(This)h(v)-5 b(ariable)32 b(can)f(b)s(e)g(used) +g(with)g Ft(BASH_LINENO)d Fu(and)j Ft(BASH_SOURCE)p Fu(.)40 +b(Eac)m(h)32 b(elemen)m(t)630 2014 y(of)g Ft(FUNCNAME)d +Fu(has)j(corresp)s(onding)e(elemen)m(ts)j(in)f Ft(BASH_LINENO)c +Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 2123 y(describ)s(e)39 +b(the)h(call)h(stac)m(k.)70 b(F)-8 b(or)41 b(instance,)i +Ft(${FUNCNAME[$i]})35 b Fu(w)m(as)41 b(called)f(from)g(the)630 +2233 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27 +b(line)h(n)m(um)m(b)s(er)d Ft(${BASH_LINENO[$i]})p Fu(.)34 +b(The)27 b Ft(caller)630 2342 y Fu(builtin)j(displa)m(ys)g(the)h +(curren)m(t)f(call)i(stac)m(k)g(using)d(this)i(information.)150 +2504 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5 +b(alue)36 b(greater)g(than)e(0,)j(de\014nes)d(a)h(maxim)m(um)g +(function)g(nesting)630 2613 y(lev)m(el.)42 b(F)-8 b(unction)29 +b(in)m(v)m(o)s(cations)h(that)f(exceed)h(this)e(nesting)h(lev)m(el)h +(will)f(cause)g(the)f(curren)m(t)630 2723 y(command)i(to)h(ab)s(ort.) +150 2884 y Ft(GLOBIGNORE)630 2993 y Fu(A)k(colon-separated)i(list)f(of) +f(patterns)g(de\014ning)f(the)i(set)f(of)g(\014le)h(names)f(to)g(b)s(e) +g(ignored)630 3103 y(b)m(y)28 b(\014lename)h(expansion.)40 +b(If)28 b(a)h(\014le)g(name)g(matc)m(hed)g(b)m(y)g(a)g(\014lename)f +(expansion)h(pattern)630 3213 y(also)k(matc)m(hes)g(one)f(of)g(the)g +(patterns)g(in)f Ft(GLOBIGNORE)p Fu(,)f(it)i(is)g(remo)m(v)m(ed)h(from) +e(the)h(list)h(of)630 3322 y(matc)m(hes.)41 b(The)27 +b(pattern)g(matc)m(hing)h(honors)f(the)g(setting)i(of)e(the)h +Ft(extglob)d Fu(shell)i(option.)150 3483 y Ft(GROUPS)192 +b Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(con)m(taining)g(the)f(list) +h(of)f(groups)g(of)g(whic)m(h)f(the)i(curren)m(t)e(user)h(is)g(a)630 +3593 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d +Fu(ha)m(v)m(e)i(no)g(e\013ect.)42 b(If)30 b Ft(GROUPS)f +Fu(is)i(unset,)f(it)h(loses)h(its)630 3703 y(sp)s(ecial)f(prop)s +(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150 +3864 y Ft(histchars)630 3973 y Fu(Up)c(to)g(three)g(c)m(haracters)i +(whic)m(h)d(con)m(trol)j(history)d(expansion,)i(quic)m(k)g +(substitution,)g(and)630 4083 y(tok)m(enization)k(\(see)f(Section)f +(9.3)h([History)f(In)m(teraction],)i(page)f(148\).)41 +b(The)29 b(\014rst)e(c)m(harac-)630 4193 y(ter)j(is)f(the)g +Fr(history)g(expansion)g Fu(c)m(haracter,)j(that)e(is,)f(the)h(c)m +(haracter)h(whic)m(h)d(signi\014es)i(the)630 4302 y(start)25 +b(of)f(a)h(history)f(expansion,)i(normally)e(`)p Ft(!)p +Fu('.)39 b(The)24 b(second)g(c)m(haracter)i(is)e(the)g(c)m(haracter)630 +4412 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f +(seen)h(as)g(the)g(\014rst)f(c)m(haracter)j(on)e(a)g(line,)630 +4521 y(normally)27 b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d +(c)m(haracter)j(is)e(the)h(c)m(haracter)h(whic)m(h)e(indicates)h(that) +630 4631 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h +(when)e(found)f(as)i(the)g(\014rst)f(c)m(haracter)i(of)f(a)630 +4740 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34 +b(history)h(commen)m(t)h(c)m(haracter)h(causes)e(history)g +(substitution)630 4850 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f +(remaining)h(w)m(ords)f(on)h(the)f(line.)40 b(It)27 b(do)s(es)f(not)h +(necessarily)g(cause)630 4960 y(the)k(shell)f(parser)g(to)h(treat)g +(the)g(rest)g(of)f(the)h(line)f(as)h(a)g(commen)m(t.)150 +5121 y Ft(HISTCMD)144 b Fu(The)44 b(history)h(n)m(um)m(b)s(er,)j(or)d +(index)g(in)f(the)h(history)g(list,)50 b(of)45 b(the)g(curren)m(t)g +(command.)630 5230 y(Assignmen)m(ts)37 b(to)h Ft(HISTCMD)d +Fu(are)j(ignored.)61 b(If)37 b Ft(HISTCMD)e Fu(is)i(unset,)h(it)g +(loses)g(its)f(sp)s(ecial)630 5340 y(prop)s(erties,)30 +b(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)p +eop end +%%Page: 80 86 +TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(HISTCONTROL)630 +408 y Fu(A)40 b(colon-separated)i(list)f(of)f(v)-5 b(alues)40 +b(con)m(trolling)i(ho)m(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 +518 y(history)29 b(list.)41 b(If)28 b(the)h(list)h(of)f(v)-5 +b(alues)29 b(includes)f(`)p Ft(ignorespace)p Fu(',)f(lines)i(whic)m(h)g +(b)s(egin)f(with)630 628 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g +(sa)m(v)m(ed)g(in)g(the)g(history)f(list.)66 b(A)39 b(v)-5 +b(alue)39 b(of)g(`)p Ft(ignoredups)p Fu(')630 737 y(causes)34 +b(lines)h(whic)m(h)f(matc)m(h)h(the)f(previous)f(history)h(en)m(try)h +(to)g(not)f(b)s(e)f(sa)m(v)m(ed.)53 b(A)34 b(v)-5 b(alue)630 +847 y(of)32 b(`)p Ft(ignoreboth)p Fu(')d(is)j(shorthand)e(for)i(`)p +Ft(ignorespace)p Fu(')d(and)i(`)p Ft(ignoredups)p Fu('.)42 +b(A)32 b(v)-5 b(alue)32 b(of)630 956 y(`)p Ft(erasedups)p +Fu(')f(causes)i(all)h(previous)f(lines)g(matc)m(hing)h(the)f(curren)m +(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 1066 y(from)42 +b(the)h(history)f(list)i(b)s(efore)e(that)h(line)g(is)g(sa)m(v)m(ed.)78 +b(An)m(y)43 b(v)-5 b(alue)43 b(not)g(in)f(the)h(ab)s(o)m(v)m(e)630 +1176 y(list)35 b(is)g(ignored.)53 b(If)34 b Ft(HISTCONTROL)e +Fu(is)i(unset,)i(or)e(do)s(es)h(not)g(include)f(a)h(v)-5 +b(alid)35 b(v)-5 b(alue,)36 b(all)630 1285 y(lines)30 +b(read)g(b)m(y)g(the)g(shell)g(parser)g(are)g(sa)m(v)m(ed)h(on)f(the)g +(history)g(list,)h(sub)5 b(ject)30 b(to)g(the)g(v)-5 +b(alue)630 1395 y(of)42 b Ft(HISTIGNORE)p Fu(.)73 b(The)42 +b(second)g(and)g(subsequen)m(t)f(lines)h(of)h(a)f(m)m(ulti-line)h(comp) +s(ound)630 1504 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added) +f(to)h(the)g(history)g(regardless)g(of)g(the)f(v)-5 b(alue)630 +1614 y(of)31 b Ft(HISTCONTROL)p Fu(.)150 1763 y Ft(HISTFILE)96 +b Fu(The)27 b(name)h(of)g(the)g(\014le)g(to)h(whic)m(h)f(the)g(command) +f(history)h(is)g(sa)m(v)m(ed.)41 b(The)27 b(default)h(v)-5 +b(alue)630 1873 y(is)30 b Ft(~/.bash_history)p Fu(.)150 +2022 y Ft(HISTFILESIZE)630 2132 y Fu(The)c(maxim)m(um)f(n)m(um)m(b)s +(er)g(of)h(lines)h(con)m(tained)g(in)f(the)g(history)g(\014le.)39 +b(When)26 b(this)g(v)-5 b(ariable)630 2242 y(is)25 b(assigned)h(a)g(v) +-5 b(alue,)27 b(the)f(history)f(\014le)h(is)f(truncated,)i(if)e +(necessary)-8 b(,)28 b(to)e(con)m(tain)g(no)g(more)630 +2351 y(than)37 b(that)h(n)m(um)m(b)s(er)d(of)j(lines)f(b)m(y)g(remo)m +(ving)h(the)f(oldest)h(en)m(tries.)62 b(The)37 b(history)g(\014le)g(is) +630 2461 y(also)i(truncated)f(to)h(this)e(size)i(after)g(writing)f(it)g +(when)f(a)h(shell)h(exits.)64 b(If)37 b(the)h(v)-5 b(alue)39 +b(is)630 2570 y(0,)g(the)e(history)f(\014le)h(is)g(truncated)f(to)i +(zero)f(size.)60 b(Non-n)m(umeric)37 b(v)-5 b(alues)37 +b(and)f(n)m(umeric)630 2680 y(v)-5 b(alues)31 b(less)f(than)g(zero)h +(inhibit)f(truncation.)41 b(The)29 b(shell)i(sets)f(the)h(default)f(v) +-5 b(alue)31 b(to)g(the)630 2790 y(v)-5 b(alue)31 b(of)f +Ft(HISTSIZE)f Fu(after)h(reading)h(an)m(y)g(startup)f(\014les.)150 +2939 y Ft(HISTIGNORE)630 3049 y Fu(A)j(colon-separated)h(list)f(of)g +(patterns)f(used)g(to)h(decide)g(whic)m(h)f(command)g(lines)h(should) +630 3158 y(b)s(e)f(sa)m(v)m(ed)h(on)g(the)f(history)h(list.)47 +b(Eac)m(h)33 b(pattern)g(is)f(anc)m(hored)h(at)g(the)f(b)s(eginning)g +(of)h(the)630 3268 y(line)43 b(and)e(m)m(ust)h(matc)m(h)h(the)g +(complete)h(line)e(\(no)h(implicit)g(`)p Ft(*)p Fu(')f(is)g(app)s +(ended\).)75 b(Eac)m(h)630 3377 y(pattern)42 b(is)g(tested)g(against)h +(the)f(line)g(after)g(the)g(c)m(hec)m(ks)h(sp)s(eci\014ed)e(b)m(y)h +Ft(HISTCONTROL)630 3487 y Fu(are)37 b(applied.)59 b(In)36 +b(addition)h(to)g(the)g(normal)g(shell)f(pattern)h(matc)m(hing)h(c)m +(haracters,)i(`)p Ft(&)p Fu(')630 3597 y(matc)m(hes)d(the)f(previous)g +(history)g(line.)57 b(`)p Ft(&)p Fu(')36 b(ma)m(y)h(b)s(e)e(escap)s(ed) +h(using)g(a)g(bac)m(kslash;)k(the)630 3706 y(bac)m(kslash)34 +b(is)g(remo)m(v)m(ed)h(b)s(efore)e(attempting)i(a)g(matc)m(h.)51 +b(The)34 b(second)f(and)h(subsequen)m(t)630 3816 y(lines)e(of)h(a)g(m)m +(ulti-line)g(comp)s(ound)e(command)h(are)h(not)f(tested,)i(and)e(are)g +(added)g(to)h(the)630 3925 y(history)k(regardless)h(of)f(the)g(v)-5 +b(alue)38 b(of)f Ft(HISTIGNORE)p Fu(.)58 b(The)37 b(pattern)g(matc)m +(hing)i(honors)630 4035 y(the)31 b(setting)g(of)g(the)f +Ft(extglob)f Fu(shell)h(option.)630 4164 y Ft(HISTIGNORE)20 +b Fu(subsumes)g(the)j(function)f(of)h Ft(HISTCONTROL)p +Fu(.)35 b(A)23 b(pattern)f(of)h(`)p Ft(&)p Fu(')g(is)f(iden)m(tical)630 +4274 y(to)k Ft(ignoredups)p Fu(,)e(and)h(a)h(pattern)g(of)f(`)p +Ft([)31 b(]*)p Fu(')25 b(is)h(iden)m(tical)h(to)f Ft(ignorespace)p +Fu(.)36 b(Com)m(bining)630 4384 y(these)30 b(t)m(w)m(o)h(patterns,)f +(separating)g(them)g(with)f(a)h(colon,)h(pro)m(vides)e(the)h +(functionalit)m(y)h(of)630 4493 y Ft(ignoreboth)p Fu(.)150 +4643 y Ft(HISTSIZE)96 b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s(er)e(of)j +(commands)f(to)g(remem)m(b)s(er)g(on)g(the)g(history)g(list.)62 +b(If)37 b(the)630 4752 y(v)-5 b(alue)26 b(is)g(0,)i(commands)d(are)h +(not)h(sa)m(v)m(ed)g(in)e(the)h(history)g(list.)40 b(Numeric)26 +b(v)-5 b(alues)26 b(less)g(than)630 4862 y(zero)i(result)e(in)h(ev)m +(ery)g(command)g(b)s(eing)f(sa)m(v)m(ed)i(on)f(the)g(history)f(list)i +(\(there)f(is)g(no)g(limit\).)630 4971 y(The)j(shell)g(sets)h(the)g +(default)f(v)-5 b(alue)31 b(to)g(500)h(after)f(reading)f(an)m(y)h +(startup)f(\014les.)150 5121 y Ft(HISTTIMEFORMAT)630 +5230 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m +(ull,)k(its)d(v)-5 b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g +(for)630 5340 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp) +f(asso)s(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m +(ed)p eop end +%%Page: 81 87 +TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(81)630 299 y(b)m(y)34 +b(the)f Ft(history)f Fu(builtin.)50 b(If)33 b(this)h(v)-5 +b(ariable)34 b(is)g(set,)h(time)f(stamps)g(are)g(written)f(to)i(the)630 +408 y(history)26 b(\014le)g(so)g(they)g(ma)m(y)h(b)s(e)e(preserv)m(ed)g +(across)i(shell)f(sessions.)39 b(This)25 b(uses)h(the)g(history)630 +518 y(commen)m(t)31 b(c)m(haracter)h(to)f(distinguish)f(timestamps)h +(from)f(other)g(history)h(lines.)150 687 y Ft(HOSTFILE)96 +b Fu(Con)m(tains)33 b(the)g(name)f(of)h(a)g(\014le)f(in)g(the)h(same)g +(format)g(as)f Ft(/etc/hosts)e Fu(that)j(should)f(b)s(e)630 +797 y(read)21 b(when)g(the)g(shell)h(needs)f(to)h(complete)h(a)e +(hostname.)38 b(The)21 b(list)h(of)g(p)s(ossible)f(hostname)630 +907 y(completions)27 b(ma)m(y)f(b)s(e)f(c)m(hanged)h(while)f(the)h +(shell)g(is)f(running;)h(the)g(next)f(time)i(hostname)630 +1016 y(completion)33 b(is)g(attempted)g(after)g(the)f(v)-5 +b(alue)33 b(is)f(c)m(hanged,)i(Bash)e(adds)f(the)i(con)m(ten)m(ts)h(of) +630 1126 y(the)h(new)f(\014le)g(to)h(the)g(existing)h(list.)53 +b(If)34 b Ft(HOSTFILE)e Fu(is)j(set,)h(but)e(has)g(no)h(v)-5 +b(alue,)36 b(or)e(do)s(es)630 1235 y(not)d(name)f(a)h(readable)g +(\014le,)g(Bash)f(attempts)i(to)f(read)f Ft(/etc/hosts)e +Fu(to)j(obtain)g(the)f(list)630 1345 y(of)h(p)s(ossible)f(hostname)h +(completions.)43 b(When)31 b Ft(HOSTFILE)d Fu(is)j(unset,)f(the)h +(hostname)g(list)630 1455 y(is)f(cleared.)150 1624 y +Ft(HOSTNAME)96 b Fu(The)30 b(name)g(of)h(the)f(curren)m(t)h(host.)150 +1793 y Ft(HOSTTYPE)96 b Fu(A)30 b(string)h(describing)f(the)g(mac)m +(hine)h(Bash)g(is)f(running)f(on.)150 1963 y Ft(IGNOREEOF)630 +2072 y Fu(Con)m(trols)e(the)h(action)g(of)f(the)g(shell)g(on)g(receipt) +h(of)f(an)g Ft(EOF)f Fu(c)m(haracter)i(as)g(the)f(sole)h(input.)630 +2182 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n)m(um)m(b)s +(er)f(of)h(consecutiv)m(e)i Ft(EOF)d Fu(c)m(haracters)i(that)f(can)h(b) +s(e)630 2291 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f +(input)g(line)h(b)s(efore)f(the)h(shell)g(will)g(exit.)70 +b(If)39 b(the)630 2401 y(v)-5 b(ariable)39 b(exists)f(but)g(do)s(es)f +(not)h(ha)m(v)m(e)h(a)g(n)m(umeric)f(v)-5 b(alue,)40 +b(or)e(has)g(no)g(v)-5 b(alue,)40 b(then)e(the)630 2511 +y(default)31 b(is)g(10.)43 b(If)30 b(the)h(v)-5 b(ariable)31 +b(do)s(es)g(not)g(exist,)h(then)e Ft(EOF)g Fu(signi\014es)h(the)g(end)f +(of)h(input)630 2620 y(to)g(the)g(shell.)41 b(This)29 +b(is)i(only)f(in)g(e\013ect)i(for)e(in)m(teractiv)m(e)j(shells.)150 +2790 y Ft(INPUTRC)144 b Fu(The)68 b(name)h(of)f(the)h(Readline)g +(initialization)j(\014le,)78 b(o)m(v)m(erriding)69 b(the)g(default)g +(of)630 2899 y Ft(~/.inputrc)p Fu(.)150 3068 y Ft(INSIDE_EMACS)630 +3178 y Fu(If)29 b(Bash)h(\014nds)e(this)h(v)-5 b(ariable)31 +b(in)e(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)g(starts,)g(it)g +(assumes)630 3288 y(that)i(the)g(shell)g(is)f(running)f(in)i(an)f +(Emacs)h(shell)g(bu\013er)e(and)h(ma)m(y)i(disable)e(line)h(editing)630 +3397 y(dep)s(ending)d(on)h(the)h(v)-5 b(alue)31 b(of)f +Ft(TERM)p Fu(.)150 3567 y Ft(LANG)288 b Fu(Used)28 b(to)h(determine)f +(the)g(lo)s(cale)h(category)h(for)e(an)m(y)h(category)h(not)e(sp)s +(eci\014cally)g(selected)630 3676 y(with)i(a)h(v)-5 b(ariable)31 +b(starting)g(with)f Ft(LC_)p Fu(.)150 3846 y Ft(LC_ALL)192 +b Fu(This)28 b(v)-5 b(ariable)29 b(o)m(v)m(errides)h(the)f(v)-5 +b(alue)29 b(of)g Ft(LANG)f Fu(and)g(an)m(y)h(other)g +Ft(LC_)f Fu(v)-5 b(ariable)29 b(sp)s(ecifying)630 3955 +y(a)i(lo)s(cale)h(category)-8 b(.)150 4125 y Ft(LC_COLLATE)630 +4234 y Fu(This)37 b(v)-5 b(ariable)38 b(determines)g(the)g(collation)i +(order)d(used)g(when)f(sorting)i(the)g(results)g(of)630 +4344 y(\014lename)e(expansion,)i(and)e(determines)g(the)h(b)s(eha)m +(vior)f(of)g(range)h(expressions,)h(equiv-)630 4453 y(alence)e +(classes,)h(and)e(collating)i(sequences)e(within)f(\014lename)h +(expansion)g(and)f(pattern)630 4563 y(matc)m(hing)d(\(see)h(Section)f +(3.5.8)h([Filename)g(Expansion],)e(page)h(33\).)150 4732 +y Ft(LC_CTYPE)96 b Fu(This)36 b(v)-5 b(ariable)37 b(determines)f(the)h +(in)m(terpretation)h(of)f(c)m(haracters)h(and)e(the)g(b)s(eha)m(vior)h +(of)630 4842 y(c)m(haracter)46 b(classes)g(within)e(\014lename)h +(expansion)g(and)f(pattern)h(matc)m(hing)h(\(see)f(Sec-)630 +4951 y(tion)31 b(3.5.8)h([Filename)g(Expansion],)e(page)h(33\).)150 +5121 y Ft(LC_MESSAGES)630 5230 y Fu(This)25 b(v)-5 b(ariable)27 +b(determines)f(the)g(lo)s(cale)i(used)d(to)i(translate)g(double-quoted) +f(strings)g(pre-)630 5340 y(ceded)31 b(b)m(y)f(a)h(`)p +Ft($)p Fu(')f(\(see)h(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8 +b(ranslation],)32 b(page)f(7\).)p eop end +%%Page: 82 88 +TeXDict begin 82 87 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(82)150 299 y Ft(LC_NUMERIC)630 +408 y Fu(This)30 b(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h +(category)g(used)e(for)g(n)m(um)m(b)s(er)f(formatting.)150 +573 y Ft(LC_TIME)144 b Fu(This)25 b(v)-5 b(ariable)26 +b(determines)g(the)g(lo)s(cale)h(category)h(used)d(for)g(data)h(and)f +(time)i(formatting.)150 737 y Ft(LINENO)192 b Fu(The)32 +b(line)h(n)m(um)m(b)s(er)e(in)i(the)f(script)h(or)f(shell)h(function)f +(curren)m(tly)h(executing.)49 b(If)32 b Ft(LINENO)630 +847 y Fu(is)e(unset,)h(it)g(loses)g(its)f(sp)s(ecial)h(prop)s(erties,)f +(ev)m(en)h(if)g(it)g(is)f(subsequen)m(tly)g(reset.)150 +1011 y Ft(LINES)240 b Fu(Used)43 b(b)m(y)g(the)g Ft(select)e +Fu(command)i(to)g(determine)g(the)g(column)g(length)g(for)g(prin)m +(ting)630 1121 y(selection)c(lists.)63 b(Automatically)41 +b(set)d(if)f(the)h Ft(checkwinsize)d Fu(option)j(is)f(enabled)h(\(see) +630 1230 y(Section)44 b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d +(66\),)k(or)43 b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 +1340 y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1504 +y Ft(MACHTYPE)96 b Fu(A)26 b(string)g(that)h(fully)f(describ)s(es)f +(the)h(system)g(t)m(yp)s(e)h(on)f(whic)m(h)f(Bash)i(is)f(executing,)i +(in)e(the)630 1614 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h +Fu(format.)150 1778 y Ft(MAILCHECK)630 1888 y Fu(Ho)m(w)d(often)g(\(in) +g(seconds\))g(that)g(the)f(shell)h(should)f(c)m(hec)m(k)i(for)e(mail)h +(in)f(the)h(\014les)g(sp)s(eci\014ed)630 1998 y(in)i(the)h +Ft(MAILPATH)e Fu(or)i Ft(MAIL)e Fu(v)-5 b(ariables.)43 +b(The)30 b(default)h(is)f(60)i(seconds.)42 b(When)30 +b(it)h(is)g(time)630 2107 y(to)37 b(c)m(hec)m(k)h(for)e(mail,)j(the)e +(shell)f(do)s(es)g(so)h(b)s(efore)f(displa)m(ying)h(the)f(primary)g +(prompt.)57 b(If)630 2217 y(this)37 b(v)-5 b(ariable)38 +b(is)f(unset,)h(or)f(set)h(to)g(a)f(v)-5 b(alue)38 b(that)f(is)g(not)h +(a)f(n)m(um)m(b)s(er)f(greater)i(than)f(or)630 2326 y(equal)31 +b(to)g(zero,)g(the)g(shell)g(disables)f(mail)h(c)m(hec)m(king.)150 +2491 y Ft(MAPFILE)144 b Fu(An)35 b(arra)m(y)h(v)-5 b(ariable)36 +b(created)g(to)h(hold)e(the)g(text)i(read)e(b)m(y)g(the)h +Ft(mapfile)d Fu(builtin)i(when)630 2600 y(no)30 b(v)-5 +b(ariable)31 b(name)g(is)f(supplied.)150 2765 y Ft(OLDPWD)192 +b Fu(The)30 b(previous)g(w)m(orking)g(directory)h(as)g(set)g(b)m(y)f +(the)h Ft(cd)e Fu(builtin.)150 2929 y Ft(OPTERR)192 b +Fu(If)35 b(set)i(to)f(the)h(v)-5 b(alue)36 b(1,)i(Bash)e(displa)m(ys)g +(error)f(messages)i(generated)g(b)m(y)f(the)g Ft(getopts)630 +3039 y Fu(builtin)30 b(command.)150 3203 y Ft(OSTYPE)192 +b Fu(A)30 b(string)h(describing)f(the)g(op)s(erating)h(system)g(Bash)f +(is)h(running)d(on.)150 3367 y Ft(PIPESTATUS)630 3477 +y Fu(An)23 b(arra)m(y)h(v)-5 b(ariable)24 b(\(see)h(Section)f(6.7)h +([Arra)m(ys],)g(page)f(95\))h(con)m(taining)g(a)f(list)g(of)g(exit)g +(sta-)630 3587 y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g +(in)f(the)h(most-recen)m(tly-executed)j(foreground)c(pip)s(eline)630 +3696 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h +(command\).)150 3861 y Ft(POSIXLY_CORRECT)630 3970 y +Fu(If)h(this)g(v)-5 b(ariable)34 b(is)e(in)g(the)h(en)m(vironmen)m(t)g +(when)e(Bash)i(starts,)g(the)g(shell)g(en)m(ters)g Fm(posix)630 +4080 y Fu(mo)s(de)46 b(\(see)h(Section)g(6.11)g([Bash)g(POSIX)e(Mo)s +(de],)50 b(page)d(101\))h(b)s(efore)e(reading)g(the)630 +4189 y(startup)38 b(\014les,)j(as)e(if)g(the)g Ft(--posix)d +Fu(in)m(v)m(o)s(cation)41 b(option)e(had)f(b)s(een)g(supplied.)64 +b(If)39 b(it)g(is)630 4299 y(set)31 b(while)f(the)h(shell)f(is)h +(running,)e(Bash)h(enables)h Fm(posix)f Fu(mo)s(de,)g(as)g(if)h(the)f +(command)870 4436 y Ft(set)47 b(-o)g(posix)630 4573 y +Fu(had)33 b(b)s(een)g(executed.)51 b(When)33 b(the)h(shell)f(en)m(ters) +h Fm(posix)f Fu(mo)s(de,)h(it)g(sets)g(this)g(v)-5 b(ariable)34 +b(if)630 4682 y(it)d(w)m(as)g(not)f(already)h(set.)150 +4847 y Ft(PPID)288 b Fu(The)30 b(pro)s(cess)g Fm(id)g +Fu(of)h(the)f(shell's)h(paren)m(t)g(pro)s(cess.)40 b(This)30 +b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)150 5011 y +Ft(PROMPT_COMMAND)630 5121 y Fu(If)23 b(this)h(v)-5 b(ariable)24 +b(is)g(set,)i(and)d(is)h(an)f(arra)m(y)-8 b(,)27 b(the)d(v)-5 +b(alue)24 b(of)g(eac)m(h)g(set)h(elemen)m(t)g(is)f(in)m(terpreted)630 +5230 y(as)29 b(a)g(command)f(to)i(execute)g(b)s(efore)e(prin)m(ting)h +(the)g(primary)f(prompt)f(\()p Ft($PS1)p Fu(\).)40 b(If)28 +b(this)h(is)630 5340 y(set)c(but)f(not)g(an)h(arra)m(y)g(v)-5 +b(ariable,)26 b(its)f(v)-5 b(alue)25 b(is)f(used)g(as)h(a)f(command)g +(to)i(execute)f(instead.)p eop end +%%Page: 83 89 +TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(83)150 299 y Ft(PROMPT_DIRTRIM)630 +408 y Fu(If)27 b(set)g(to)h(a)g(n)m(um)m(b)s(er)e(greater)i(than)f +(zero,)i(the)e(v)-5 b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er) +e(of)h(trailing)630 518 y(directory)35 b(comp)s(onen)m(ts)g(to)h +(retain)f(when)f(expanding)g(the)h Ft(\\w)f Fu(and)g +Ft(\\W)g Fu(prompt)g(string)630 628 y(escap)s(es)21 b(\(see)h(Section)f +(6.9)h([Con)m(trolling)g(the)f(Prompt],)h(page)f(98\).)39 +b(Characters)21 b(remo)m(v)m(ed)630 737 y(are)31 b(replaced)g(with)f +(an)g(ellipsis.)150 892 y Ft(PS0)336 b Fu(The)32 b(v)-5 +b(alue)33 b(of)g(this)g(parameter)g(is)g(expanded)e(lik)m(e)j +Ft(PS1)e Fu(and)g(displa)m(y)m(ed)i(b)m(y)e(in)m(teractiv)m(e)630 +1002 y(shells)e(after)h(reading)g(a)g(command)f(and)f(b)s(efore)h(the)h +(command)f(is)h(executed.)150 1157 y Ft(PS3)336 b Fu(The)34 +b(v)-5 b(alue)35 b(of)f(this)g(v)-5 b(ariable)35 b(is)g(used)e(as)i +(the)f(prompt)g(for)g(the)g Ft(select)f Fu(command.)52 +b(If)630 1267 y(this)30 b(v)-5 b(ariable)31 b(is)g(not)f(set,)i(the)e +Ft(select)f Fu(command)h(prompts)f(with)h(`)p Ft(#?)g +Fu(')150 1422 y Ft(PS4)336 b Fu(The)37 b(v)-5 b(alue)37 +b(of)g(this)g(parameter)h(is)f(expanded)f(lik)m(e)i Fr(PS1)44 +b Fu(and)37 b(the)g(expanded)f(v)-5 b(alue)38 b(is)630 +1532 y(the)d(prompt)f(prin)m(ted)g(b)s(efore)g(the)h(command)f(line)h +(is)g(ec)m(ho)s(ed)g(when)f(the)h Ft(-x)f Fu(option)h(is)630 +1641 y(set)k(\(see)h(Section)g(4.3.1)g([The)f(Set)g(Builtin],)j(page)e +(62\).)67 b(The)38 b(\014rst)g(c)m(haracter)j(of)e(the)630 +1751 y(expanded)33 b(v)-5 b(alue)33 b(is)h(replicated)g(m)m(ultiple)g +(times,)h(as)f(necessary)-8 b(,)35 b(to)f(indicate)g(m)m(ultiple)630 +1861 y(lev)m(els)e(of)e(indirection.)42 b(The)29 b(default)i(is)f(`)p +Ft(+)h Fu('.)150 2016 y Ft(PWD)336 b Fu(The)30 b(curren)m(t)g(w)m +(orking)h(directory)g(as)f(set)h(b)m(y)f(the)h Ft(cd)f +Fu(builtin.)150 2171 y Ft(RANDOM)192 b Fu(Eac)m(h)26 +b(time)g(this)f(parameter)h(is)g(referenced,)g(it)g(expands)f(to)h(a)g +(random)e(in)m(teger)j(b)s(et)m(w)m(een)630 2281 y(0)e(and)e(32767.)41 +b(Assigning)25 b(a)f(v)-5 b(alue)25 b(to)g(this)f(v)-5 +b(ariable)25 b(seeds)f(the)h(random)e(n)m(um)m(b)s(er)g(gener-)630 +2390 y(ator.)41 b(If)27 b Ft(RANDOM)f Fu(is)h(unset,)h(it)g(loses)h +(its)f(sp)s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)f +(subsequen)m(tly)630 2500 y(reset.)150 2655 y Ft(READLINE_LINE)630 +2765 y Fu(The)g(con)m(ten)m(ts)i(of)f(the)g(Readline)g(line)g +(bu\013er,)f(for)h(use)f(with)g(`)p Ft(bind)j(-x)p Fu(')d(\(see)h +(Section)h(4.2)630 2874 y([Bash)i(Builtins],)g(page)g(51\).)150 +3029 y Ft(READLINE_MARK)630 3139 y Fu(The)26 b(p)s(osition)h(of)g(the)g +Fr(mark)32 b Fu(\(sa)m(v)m(ed)c(insertion)f(p)s(oin)m(t\))g(in)g(the)g +(Readline)g(line)g(bu\013er,)g(for)630 3249 y(use)36 +b(with)f(`)p Ft(bind)30 b(-x)p Fu(')35 b(\(see)i(Section)g(4.2)g([Bash) +f(Builtins],)i(page)f(51\).)58 b(The)35 b(c)m(haracters)630 +3358 y(b)s(et)m(w)m(een)c(the)g(insertion)f(p)s(oin)m(t)g(and)g(the)h +(mark)f(are)h(often)f(called)i(the)f Fr(region)p Fu(.)150 +3513 y Ft(READLINE_POINT)630 3623 y Fu(The)23 b(p)s(osition)g(of)g(the) +h(insertion)f(p)s(oin)m(t)g(in)g(the)g(Readline)h(line)f(bu\013er,)h +(for)f(use)g(with)g(`)p Ft(bind)630 3733 y(-x)p Fu(')30 +b(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(51\).)150 +3888 y Ft(REPLY)240 b Fu(The)30 b(default)g(v)-5 b(ariable)32 +b(for)e(the)g Ft(read)g Fu(builtin.)150 4043 y Ft(SECONDS)144 +b Fu(This)40 b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s +(er)e(of)i(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630 +4153 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43 +b(resets)g(the)g(coun)m(t)g(to)g(the)g(v)-5 b(alue)43 +b(assigned,)j(and)c(the)630 4262 y(expanded)35 b(v)-5 +b(alue)36 b(b)s(ecomes)h(the)f(v)-5 b(alue)36 b(assigned)g(plus)f(the)h +(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 4372 y(the)24 +b(assignmen)m(t.)39 b(The)23 b(n)m(um)m(b)s(er)g(of)h(seconds)f(at)i +(shell)f(in)m(v)m(o)s(cation)i(and)d(the)h(curren)m(t)f(time)630 +4482 y(is)j(alw)m(a)m(ys)i(determined)e(b)m(y)g(querying)g(the)h +(system)f(clo)s(c)m(k.)41 b(If)26 b Ft(SECONDS)e Fu(is)i(unset,)h(it)g +(loses)630 4591 y(its)k(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f +(it)h(is)f(subsequen)m(tly)g(reset.)150 4746 y Ft(SHELL)240 +b Fu(This)24 b(en)m(vironmen)m(t)i(v)-5 b(ariable)26 +b(expands)e(to)i(the)g(full)f(pathname)g(to)h(the)f(shell.)39 +b(If)25 b(it)g(is)h(not)630 4856 y(set)36 b(when)f(the)h(shell)g +(starts,)i(Bash)e(assigns)h(to)f(it)h(the)f(full)f(pathname)h(of)g(the) +g(curren)m(t)630 4966 y(user's)30 b(login)h(shell.)150 +5121 y Ft(SHELLOPTS)630 5230 y Fu(A)g(colon-separated)h(list)f(of)g +(enabled)f(shell)h(options.)41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h +(list)g(is)g(a)g(v)-5 b(alid)630 5340 y(argumen)m(t)28 +b(for)f(the)h Ft(-o)e Fu(option)i(to)g(the)g Ft(set)e +Fu(builtin)h(command)g(\(see)i(Section)f(4.3.1)h([The)p +eop end +%%Page: 84 90 +TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(84)630 299 y(Set)29 +b(Builtin],)h(page)f(62\).)42 b(The)28 b(options)h(app)s(earing)f(in)g +Ft(SHELLOPTS)e Fu(are)j(those)h(rep)s(orted)630 408 y(as)g(`)p +Ft(on)p Fu(')f(b)m(y)h(`)p Ft(set)g(-o)p Fu('.)40 b(If)29 +b(this)h(v)-5 b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f +(Bash)h(starts)g(up,)630 518 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h +(list)g(will)f(b)s(e)g(enabled)h(b)s(efore)f(reading)g(an)m(y)h +(startup)f(\014les.)630 628 y(This)30 b(v)-5 b(ariable)31 +b(is)f(readonly)-8 b(.)150 790 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 +b(b)m(y)g(one)g(eac)m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g +(started.)38 b(This)20 b(is)h(in)m(tended)630 899 y(to)31 +b(b)s(e)f(a)h(coun)m(t)g(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h +(shells)f(are)h(nested.)150 1062 y Ft(SRANDOM)144 b Fu(This)36 +b(v)-5 b(ariable)37 b(expands)f(to)h(a)g(32-bit)h(pseudo-random)d(n)m +(um)m(b)s(er)g(eac)m(h)j(time)f(it)g(is)g(ref-)630 1171 +y(erenced.)47 b(The)32 b(random)g(n)m(um)m(b)s(er)f(generator)j(is)e +(not)h(linear)g(on)f(systems)h(that)g(supp)s(ort)630 +1281 y Ft(/dev/urandom)26 b Fu(or)k Ft(arc4random)p Fu(,)d(so)j(eac)m +(h)g(returned)f(n)m(um)m(b)s(er)f(has)h(no)g(relationship)h(to)630 +1390 y(the)39 b(n)m(um)m(b)s(ers)e(preceding)i(it.)66 +b(The)38 b(random)g(n)m(um)m(b)s(er)f(generator)j(cannot)g(b)s(e)e +(seeded,)630 1500 y(so)c(assignmen)m(ts)g(to)g(this)f(v)-5 +b(ariable)34 b(ha)m(v)m(e)h(no)e(e\013ect.)51 b(If)33 +b Ft(SRANDOM)e Fu(is)j(unset,)g(it)f(loses)i(its)630 +1610 y(sp)s(ecial)c(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 1772 y Ft(TIMEFORMAT)630 +1881 y Fu(The)g(v)-5 b(alue)32 b(of)f(this)g(parameter)g(is)g(used)f +(as)h(a)g(format)h(string)f(sp)s(ecifying)f(ho)m(w)h(the)g(tim-)630 +1991 y(ing)37 b(information)f(for)h(pip)s(elines)f(pre\014xed)f(with)h +(the)h Ft(time)e Fu(reserv)m(ed)i(w)m(ord)f(should)g(b)s(e)630 +2101 y(displa)m(y)m(ed.)k(The)27 b(`)p Ft(\045)p Fu(')h(c)m(haracter)h +(in)m(tro)s(duces)e(an)h(escap)s(e)g(sequence)g(that)g(is)f(expanded)g +(to)630 2210 y(a)37 b(time)g(v)-5 b(alue)36 b(or)h(other)f +(information.)59 b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i +(meanings)630 2320 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote) +h(optional)h(p)s(ortions.)630 2482 y Ft(\045\045)384 +b Fu(A)30 b(literal)i(`)p Ft(\045)p Fu('.)630 2644 y +Ft(\045[)p Fj(p)p Ft(][l]R)96 b Fu(The)30 b(elapsed)h(time)g(in)f +(seconds.)630 2806 y Ft(\045[)p Fj(p)p Ft(][l]U)96 b +Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g +(user)f(mo)s(de.)630 2968 y Ft(\045[)p Fj(p)p Ft(][l]S)96 +b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g +(system)g(mo)s(de.)630 3131 y Ft(\045P)384 b Fu(The)30 +b(CPU)g(p)s(ercen)m(tage,)i(computed)e(as)h(\(\045U)f +Ft(+)g Fu(\045S\))g(/)h(\045R.)630 3293 y(The)23 b(optional)j +Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h(precision,)i(the)e(n)m +(um)m(b)s(er)f(of)h(fractional)h(digits)630 3402 y(after)36 +b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 b(v)-5 b(alue)36 +b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h(fraction)g(to)g +(b)s(e)630 3512 y(output.)48 b(A)m(t)34 b(most)f(three)g(places)h +(after)f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y)h(b)s(e)e(sp)s +(eci\014ed;)i(v)-5 b(alues)630 3622 y(of)31 b Fr(p)h +Fu(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42 +b(If)29 b Fr(p)k Fu(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5 +b(alue)30 b(3)h(is)g(used.)630 3758 y(The)54 b(optional)h +Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61 b(including)54 +b(min)m(utes,)61 b(of)54 b(the)g(form)630 3867 y Fr(MM)10 +b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103 b(The)50 b(v)-5 +b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h(not)h(the)f +(fraction)h(is)630 3977 y(included.)630 4113 y(If)30 +b(this)g(v)-5 b(ariable)31 b(is)g(not)f(set,)i(Bash)e(acts)h(as)g(if)f +(it)h(had)f(the)h(v)-5 b(alue)870 4248 y Ft +($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630 +4384 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f +(information)h(is)f(displa)m(y)m(ed.)62 b(A)37 b(trailing)i(newline)e +(is)630 4494 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m +(y)m(ed.)150 4656 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5 +b(alue)23 b(greater)h(than)e(zero,)j Ft(TMOUT)d Fu(is)g(treated)i(as)e +(the)h(default)g(timeout)g(for)g(the)630 4766 y Ft(read)31 +b Fu(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g +(51\).)47 b(The)32 b Ft(select)e Fu(command)630 4875 +y(\(see)f(Section)h(3.2.5.2)g([Conditional)g(Constructs],)e(page)i +(11\))f(terminates)g(if)g(input)e(do)s(es)630 4985 y(not)k(arriv)m(e)g +(after)g Ft(TMOUT)e Fu(seconds)h(when)f(input)h(is)g(coming)h(from)f(a) +h(terminal.)630 5121 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d +(v)-5 b(alue)41 b(is)g(in)m(terpreted)g(as)f(the)h(n)m(um)m(b)s(er)f +(of)h(seconds)f(to)630 5230 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input) +e(after)i(issuing)f(the)h(primary)e(prompt.)39 b(Bash)26 +b(terminates)h(after)630 5340 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m +(b)s(er)e(of)h(seconds)h(if)f(a)h(complete)h(line)e(of)h(input)e(do)s +(es)h(not)h(arriv)m(e.)p eop end +%%Page: 85 91 +TeXDict begin 85 90 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(85)150 299 y Ft(TMPDIR)192 +b Fu(If)39 b(set,)j(Bash)e(uses)f(its)h(v)-5 b(alue)40 +b(as)f(the)h(name)f(of)h(a)g(directory)g(in)f(whic)m(h)g(Bash)h +(creates)630 408 y(temp)s(orary)30 b(\014les)g(for)g(the)h(shell's)g +(use.)150 568 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id) +g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 b(ariable)31 +b(is)f(readonly)-8 b(.)p eop end +%%Page: 86 92 +TeXDict begin 86 91 bop 3659 -116 a Fu(86)150 299 y Fp(6)80 +b(Bash)54 b(F)-13 b(eatures)150 502 y Fu(This)30 b(c)m(hapter)h +(describ)s(es)e(features)i(unique)e(to)i(Bash.)150 731 +y Fs(6.1)68 b(In)l(v)l(oking)46 b(Bash)390 890 y Ft(bash)h([long-opt])e +([-ir])h([-abefhkmnptuvxdBCDHP])c([-o)47 b Fj(option)p +Ft(])581 1000 y([-O)g Fj(shopt_option)p Ft(])d([)p Fj(argument)h +Ft(...)o(])390 1110 y(bash)i([long-opt])e([-abefhkmnptuvxdBCDHP])c([-o) +47 b Fj(option)p Ft(])581 1219 y([-O)g Fj(shopt_option)p +Ft(])d(-c)j Fj(string)f Ft([)p Fj(argument)g Ft(...)o(])390 +1329 y(bash)h([long-opt])e(-s)i([-abefhkmnptuvxdBCDHP])42 +b([-o)k Fj(option)p Ft(])581 1438 y([-O)h Fj(shopt_option)p +Ft(])d([)p Fj(argument)h Ft(...)o(])275 1567 y Fu(All)31 +b(of)g(the)f(single-c)m(haracter)k(options)d(used)f(with)g(the)h +Ft(set)f Fu(builtin)g(\(see)h(Section)h(4.3.1)g([The)f(Set)150 +1676 y(Builtin],)45 b(page)c(62\))i(can)e(b)s(e)f(used)h(as)g(options)g +(when)f(the)i(shell)f(is)g(in)m(v)m(ok)m(ed.)74 b(In)41 +b(addition,)j(there)150 1786 y(are)38 b(sev)m(eral)h(m)m(ulti-c)m +(haracter)h(options)d(that)h(y)m(ou)g(can)g(use.)61 b(These)38 +b(options)f(m)m(ust)h(app)s(ear)e(on)i(the)150 1896 y(command)30 +b(line)h(b)s(efore)f(the)g(single-c)m(haracter)j(options)e(to)g(b)s(e)f +(recognized.)150 2043 y Ft(--debugger)630 2152 y Fu(Arrange)j(for)g +(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e(executed)i(b)s(efore)f(the)g +(shell)g(starts.)49 b(T)-8 b(urns)630 2262 y(on)35 b(extended)g +(debugging)f(mo)s(de)h(\(see)g(Section)h(4.3.2)h([The)d(Shopt)g +(Builtin],)j(page)f(66,)630 2371 y(for)30 b(a)h(description)f(of)h(the) +f Ft(extdebug)f Fu(option)h(to)h(the)g Ft(shopt)e Fu(builtin\).)150 +2519 y Ft(--dump-po-strings)630 2628 y Fu(A)37 b(list)g(of)f(all)i +(double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p Ft($)p +Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 2738 +y(output)29 b(in)g(the)g Fm(gnu)g Ft(gettext)f Fu(PO)g(\(p)s(ortable)i +(ob)5 b(ject\))30 b(\014le)g(format.)40 b(Equiv)-5 b(alen)m(t)31 +b(to)f Ft(-D)630 2847 y Fu(except)h(for)f(the)h(output)f(format.)150 +2995 y Ft(--dump-strings)630 3104 y Fu(Equiv)-5 b(alen)m(t)31 +b(to)g Ft(-D)p Fu(.)150 3251 y Ft(--help)192 b Fu(Displa)m(y)32 +b(a)e(usage)h(message)h(on)e(standard)g(output)g(and)f(exit)j +(successfully)-8 b(.)150 3399 y Ft(--init-file)27 b Fj(filename)150 +3508 y Ft(--rcfile)h Fj(filename)630 3618 y Fu(Execute)23 +b(commands)e(from)g Fr(\014lename)28 b Fu(\(instead)22 +b(of)g Ft(~/.bashrc)p Fu(\))e(in)h(an)h(in)m(teractiv)m(e)i(shell.)150 +3765 y Ft(--login)144 b Fu(Equiv)-5 b(alen)m(t)31 b(to)g +Ft(-l)p Fu(.)150 3912 y Ft(--noediting)630 4022 y Fu(Do)h(not)e(use)h +(the)g Fm(gnu)f Fu(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command) +f(Line)g(Editing],)630 4131 y(page)h(111\))h(to)f(read)g(command)f +(lines)g(when)g(the)g(shell)h(is)f(in)m(teractiv)m(e.)150 +4278 y Ft(--noprofile)630 4388 y Fu(Don't)22 b(load)g(the)g +(system-wide)f(startup)g(\014le)h Ft(/etc/profile)c Fu(or)j(an)m(y)h +(of)f(the)h(p)s(ersonal)f(ini-)630 4498 y(tialization)34 +b(\014les)e Ft(~/.bash_profile)p Fu(,)c Ft(~/.bash_login)p +Fu(,)g(or)k Ft(~/.profile)c Fu(when)j(Bash)630 4607 y(is)f(in)m(v)m(ok) +m(ed)i(as)f(a)g(login)g(shell.)150 4754 y Ft(--norc)192 +b Fu(Don't)35 b(read)f(the)g Ft(~/.bashrc)e Fu(initialization)k(\014le) +f(in)e(an)h(in)m(teractiv)m(e)j(shell.)52 b(This)33 b(is)h(on)630 +4864 y(b)m(y)c(default)h(if)f(the)h(shell)f(is)h(in)m(v)m(ok)m(ed)h(as) +e Ft(sh)p Fu(.)150 5011 y Ft(--posix)144 b Fu(Change)24 +b(the)h(b)s(eha)m(vior)f(of)g(Bash)h(where)e(the)i(default)f(op)s +(eration)h(di\013ers)f(from)f(the)i Fm(posix)630 5121 +y Fu(standard)35 b(to)h(matc)m(h)g(the)g(standard.)55 +b(This)35 b(is)h(in)m(tended)f(to)h(mak)m(e)h(Bash)f(b)s(eha)m(v)m(e)g +(as)g(a)630 5230 y(strict)22 b(sup)s(erset)e(of)h(that)g(standard.)37 +b(See)21 b(Section)h(6.11)g([Bash)f(POSIX)f(Mo)s(de],)k(page)d(101,)630 +5340 y(for)30 b(a)h(description)f(of)h(the)f(Bash)h Fm(posix)f +Fu(mo)s(de.)p eop end +%%Page: 87 93 +TeXDict begin 87 92 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(87)150 299 y Ft(--restricted)630 +408 y Fu(Mak)m(e)54 b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h +(Section)g(6.10)h([The)d(Restricted)j(Shell],)630 518 +y(page)31 b(100\).)150 677 y Ft(--verbose)630 787 y Fu(Equiv)-5 +b(alen)m(t)31 b(to)g Ft(-v)p Fu(.)41 b(Prin)m(t)30 b(shell)g(input)g +(lines)g(as)h(they're)g(read.)150 946 y Ft(--version)630 +1056 y Fu(Sho)m(w)d(v)m(ersion)g(information)g(for)g(this)g(instance)h +(of)f(Bash)g(on)g(the)g(standard)f(output)h(and)630 1166 +y(exit)j(successfully)-8 b(.)275 1325 y(There)28 b(are)i(sev)m(eral)g +(single-c)m(haracter)i(options)d(that)h(ma)m(y)g(b)s(e)e(supplied)g(at) +i(in)m(v)m(o)s(cation)h(whic)m(h)e(are)150 1435 y(not)i(a)m(v)-5 +b(ailable)32 b(with)e(the)h Ft(set)e Fu(builtin.)150 +1594 y Ft(-c)384 b Fu(Read)66 b(and)f(execute)i(commands)e(from)g(the)h +(\014rst)e(non-option)i(argumen)m(t)g Fr(com-)630 1704 +y(mand)p 859 1704 28 4 v 39 w(string)p Fu(,)34 b(then)e(exit.)49 +b(If)32 b(there)h(are)g(argumen)m(ts)g(after)g(the)g +Fr(command)p 3303 1704 V 40 w(string)p Fu(,)h(the)630 +1813 y(\014rst)e(argumen)m(t)h(is)g(assigned)g(to)h Ft($0)e +Fu(and)h(an)m(y)g(remaining)g(argumen)m(ts)g(are)g(assigned)g(to)630 +1923 y(the)38 b(p)s(ositional)h(parameters.)65 b(The)37 +b(assignmen)m(t)i(to)g Ft($0)f Fu(sets)g(the)h(name)f(of)g(the)g +(shell,)630 2032 y(whic)m(h)30 b(is)h(used)e(in)h(w)m(arning)g(and)g +(error)g(messages.)150 2192 y Ft(-i)384 b Fu(F)-8 b(orce)22 +b(the)g(shell)f(to)g(run)f(in)m(teractiv)m(ely)-8 b(.)41 +b(In)m(teractiv)m(e)23 b(shells)e(are)h(describ)s(ed)d(in)i(Section)h +(6.3)630 2301 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(89.)150 +2461 y Ft(-l)384 b Fu(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h +(had)f(b)s(een)f(directly)i(in)m(v)m(ok)m(ed)h(b)m(y)f(login.)44 +b(When)31 b(the)h(shell)630 2570 y(is)37 b(in)m(teractiv)m(e,)43 +b(this)37 b(is)g(equiv)-5 b(alen)m(t)39 b(to)f(starting)h(a)e(login)i +(shell)e(with)g(`)p Ft(exec)30 b(-l)g(bash)p Fu('.)630 +2680 y(When)h(the)g(shell)h(is)f(not)g(in)m(teractiv)m(e,)k(the)c +(login)h(shell)g(startup)f(\014les)g(will)g(b)s(e)g(executed.)630 +2790 y(`)p Ft(exec)e(bash)h(-l)p Fu(')43 b(or)h(`)p Ft(exec)29 +b(bash)g(--login)p Fu(')42 b(will)i(replace)h(the)f(curren)m(t)f(shell) +h(with)g(a)630 2899 y(Bash)26 b(login)g(shell.)39 b(See)26 +b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(88,)i(for)d(a)h +(description)630 3009 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of) +f(a)h(login)g(shell.)150 3168 y Ft(-r)384 b Fu(Mak)m(e)54 +b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h(Section)g(6.10)h([The) +d(Restricted)j(Shell],)630 3278 y(page)31 b(100\).)150 +3437 y Ft(-s)384 b Fu(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f +(if)g(no)f(argumen)m(ts)i(remain)e(after)i(option)f(pro)s(cessing,)h +(then)630 3547 y(commands)i(are)h(read)g(from)f(the)h(standard)f +(input.)39 b(This)28 b(option)h(allo)m(ws)h(the)f(p)s(ositional)630 +3656 y(parameters)i(to)h(b)s(e)e(set)i(when)d(in)m(v)m(oking)k(an)d(in) +m(teractiv)m(e)k(shell)d(or)g(when)f(reading)h(input)630 +3766 y(through)f(a)g(pip)s(e.)150 3925 y Ft(-D)384 b +Fu(A)37 b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g(b)m(y) +h(`)p Ft($)p Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 +4035 y(output.)63 b(These)38 b(are)g(the)g(strings)g(that)h(are)f(sub)5 +b(ject)38 b(to)h(language)g(translation)g(when)630 4144 +y(the)e(curren)m(t)g(lo)s(cale)h(is)f(not)g Ft(C)g Fu(or)f +Ft(POSIX)g Fu(\(see)h(Section)h(3.1.2.5)h([Lo)s(cale)g(T)-8 +b(ranslation],)630 4254 y(page)31 b(7\).)42 b(This)29 +b(implies)i(the)f Ft(-n)g Fu(option;)h(no)f(commands)g(will)h(b)s(e)f +(executed.)150 4413 y Ft([-+]O)f([)p Fj(shopt_option)p +Ft(])630 4523 y Fr(shopt)p 854 4523 V 40 w(option)44 +b Fu(is)g(one)h(of)f(the)g(shell)h(options)f(accepted)h(b)m(y)f(the)h +Ft(shopt)d Fu(builtin)i(\(see)630 4633 y(Section)32 b(4.3.2)h([The)e +(Shopt)f(Builtin],)i(page)g(66\).)44 b(If)31 b Fr(shopt)p +2724 4633 V 40 w(option)g Fu(is)g(presen)m(t,)h Ft(-O)f +Fu(sets)630 4742 y(the)24 b(v)-5 b(alue)24 b(of)g(that)h(option;)h +Ft(+O)e Fu(unsets)f(it.)39 b(If)23 b Fr(shopt)p 2423 +4742 V 40 w(option)h Fu(is)g(not)g(supplied,)g(the)g(names)630 +4852 y(and)31 b(v)-5 b(alues)32 b(of)g(the)g(shell)g(options)g +(accepted)h(b)m(y)f Ft(shopt)e Fu(are)i(prin)m(ted)f(on)h(the)g +(standard)630 4961 y(output.)40 b(If)29 b(the)h(in)m(v)m(o)s(cation)h +(option)f(is)f Ft(+O)p Fu(,)h(the)f(output)g(is)h(displa)m(y)m(ed)g(in) +f(a)h(format)f(that)630 5071 y(ma)m(y)i(b)s(e)f(reused)f(as)i(input.) +150 5230 y Ft(--)384 b Fu(A)38 b Ft(--)g Fu(signals)g(the)h(end)e(of)i +(options)f(and)g(disables)g(further)f(option)h(pro)s(cessing.)64 +b(An)m(y)630 5340 y(argumen)m(ts)31 b(after)g(the)f Ft(--)g +Fu(are)h(treated)g(as)g(\014lenames)f(and)g(argumen)m(ts.)p +eop end +%%Page: 88 94 +TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(88)275 299 y(A)27 b +Fl(lo)-5 b(gin)35 b Fu(shell)27 b(is)g(one)h(whose)f(\014rst)f(c)m +(haracter)j(of)e(argumen)m(t)h(zero)f(is)h(`)p Ft(-)p +Fu(',)g(or)f(one)g(in)m(v)m(ok)m(ed)i(with)e(the)150 +408 y Ft(--login)h Fu(option.)275 555 y(An)g Fl(inter)-5 +b(active)37 b Fu(shell)30 b(is)f(one)g(started)h(without)f(non-option)h +(argumen)m(ts,)g(unless)e Ft(-s)h Fu(is)g(sp)s(eci\014ed,)150 +665 y(without)k(sp)s(ecifying)h(the)f Ft(-c)g Fu(option,)i(and)e(whose) +g(input)g(and)f(output)h(are)h(b)s(oth)f(connected)h(to)g(ter-)150 +774 y(minals)g(\(as)g(determined)f(b)m(y)h Ft(isatty\(3\))p +Fu(\),)e(or)i(one)g(started)g(with)f(the)h Ft(-i)f Fu(option.)51 +b(See)33 b(Section)i(6.3)150 884 y([In)m(teractiv)m(e)e(Shells],)e +(page)g(89,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h +(remain)g(after)h(option)f(pro)s(cessing,)h(and)e(neither)h(the)g +Ft(-c)g Fu(nor)f(the)h Ft(-s)g Fu(option)g(has)150 1140 +y(b)s(een)44 b(supplied,)j(the)d(\014rst)g(argumen)m(t)h(is)g(assumed)e +(to)j(b)s(e)d(the)i(name)g(of)f(a)h(\014le)g(con)m(taining)h(shell)150 +1250 y(commands)30 b(\(see)g(Section)h(3.8)g([Shell)f(Scripts],)g(page) +h(42\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h +(fashion,)150 1359 y Ft($0)37 b Fu(is)g(set)h(to)h(the)e(name)h(of)f +(the)h(\014le,)i(and)c(the)i(p)s(ositional)g(parameters)g(are)g(set)g +(to)g(the)g(remaining)150 1469 y(argumen)m(ts.)h(Bash)26 +b(reads)f(and)g(executes)h(commands)f(from)g(this)g(\014le,)i(then)e +(exits.)40 b(Bash's)25 b(exit)i(status)150 1579 y(is)f(the)h(exit)h +(status)e(of)h(the)g(last)g(command)f(executed)h(in)g(the)f(script.)40 +b(If)26 b(no)g(commands)g(are)h(executed,)150 1688 y(the)k(exit)g +(status)g(is)f(0.)150 1947 y Fs(6.2)68 b(Bash)45 b(Startup)g(Files)150 +2107 y Fu(This)23 b(section)j(describ)s(es)d(ho)m(w)i(Bash)f(executes)h +(its)g(startup)f(\014les.)38 b(If)24 b(an)m(y)h(of)f(the)h(\014les)f +(exist)h(but)e(cannot)150 2216 y(b)s(e)29 b(read,)i(Bash)f(rep)s(orts)f +(an)h(error.)40 b(Tildes)30 b(are)g(expanded)f(in)h(\014lenames)g(as)g +(describ)s(ed)f(ab)s(o)m(v)m(e)i(under)150 2326 y(Tilde)f(Expansion)g +(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(24\).)275 +2473 y(In)m(teractiv)m(e)h(shells)f(are)g(describ)s(ed)e(in)h(Section)h +(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(89.)150 +2684 y Fk(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f(login)j +(shell,)g(or)g(with)e Fh(--login)150 2831 y Fu(When)c(Bash)f(is)h(in)m +(v)m(ok)m(ed)h(as)f(an)g(in)m(teractiv)m(e)j(login)d(shell,)i(or)e(as)g +(a)g(non-in)m(teractiv)m(e)i(shell)e(with)g(the)150 2940 +y Ft(--login)30 b Fu(option,)k(it)f(\014rst)e(reads)h(and)g(executes)i +(commands)e(from)f(the)i(\014le)f Ft(/etc/profile)p Fu(,)e(if)i(that) +150 3050 y(\014le)44 b(exists.)80 b(After)44 b(reading)g(that)g +(\014le,)j(it)d(lo)s(oks)g(for)f Ft(~/.bash_profile)p +Fu(,)g Ft(~/.bash_login)p Fu(,)h(and)150 3160 y Ft(~/.profile)p +Fu(,)25 b(in)i(that)g(order,)h(and)e(reads)h(and)f(executes)j(commands) +d(from)h(the)g(\014rst)f(one)i(that)f(exists)150 3269 +y(and)j(is)h(readable.)42 b(The)30 b Ft(--noprofile)d +Fu(option)k(ma)m(y)g(b)s(e)f(used)g(when)g(the)h(shell)f(is)h(started)g +(to)g(inhibit)150 3379 y(this)f(b)s(eha)m(vior.)275 3526 +y(When)h(an)g(in)m(teractiv)m(e)k(login)d(shell)g(exits,)h(or)f(a)g +(non-in)m(teractiv)m(e)i(login)f(shell)e(executes)i(the)f +Ft(exit)150 3635 y Fu(builtin)g(command,)i(Bash)e(reads)h(and)f +(executes)i(commands)e(from)g(the)h(\014le)g Ft(~/.bash_logout)p +Fu(,)d(if)i(it)150 3745 y(exists.)150 3956 y Fk(In)m(v)m(ok)m(ed)40 +b(as)h(an)f(in)m(teractiv)m(e)f(non-login)k(shell)150 +4103 y Fu(When)g(an)h(in)m(teractiv)m(e)i(shell)e(that)g(is)f(not)h(a)g +(login)g(shell)g(is)f(started,)48 b(Bash)c(reads)f(and)g(executes)150 +4213 y(commands)31 b(from)g Ft(~/.bashrc)p Fu(,)f(if)h(that)h(\014le)g +(exists.)44 b(This)31 b(ma)m(y)h(b)s(e)f(inhibited)g(b)m(y)g(using)g +(the)h Ft(--norc)150 4322 y Fu(option.)40 b(The)27 b +Ft(--rcfile)h Fj(file)e Fu(option)h(will)g(force)h(Bash)f(to)h(read)f +(and)f(execute)j(commands)d(from)h Fr(\014le)150 4432 +y Fu(instead)k(of)f Ft(~/.bashrc)p Fu(.)275 4579 y(So,)g(t)m(ypically) +-8 b(,)33 b(y)m(our)d Ft(~/.bash_profile)c Fu(con)m(tains)32 +b(the)f(line)390 4725 y Ft(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g +(~/.bashrc;)e(fi)150 4872 y Fu(after)31 b(\(or)g(b)s(efore\))f(an)m(y)h +(login-sp)s(eci\014c)g(initializations.)150 5083 y Fk(In)m(v)m(ok)m(ed) +40 b(non-in)m(teractiv)m(ely)150 5230 y Fu(When)33 b(Bash)g(is)g +(started)h(non-in)m(teractiv)m(ely)-8 b(,)37 b(to)d(run)e(a)h(shell)h +(script,)g(for)f(example,)i(it)e(lo)s(oks)h(for)f(the)150 +5340 y(v)-5 b(ariable)35 b Ft(BASH_ENV)d Fu(in)i(the)h(en)m(vironmen)m +(t,)h(expands)e(its)g(v)-5 b(alue)35 b(if)g(it)g(app)s(ears)e(there,)j +(and)e(uses)g(the)p eop end +%%Page: 89 95 +TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(89)150 299 y(expanded)30 +b(v)-5 b(alue)30 b(as)h(the)g(name)f(of)h(a)f(\014le)h(to)g(read)f(and) +g(execute.)42 b(Bash)31 b(b)s(eha)m(v)m(es)g(as)g(if)f(the)g(follo)m +(wing)150 408 y(command)g(w)m(ere)h(executed:)390 552 +y Ft(if)47 b([)h(-n)f("$BASH_ENV")e(];)i(then)f(.)i("$BASH_ENV";)c(fi) +150 696 y Fu(but)30 b(the)g(v)-5 b(alue)31 b(of)g(the)f +Ft(PATH)f Fu(v)-5 b(ariable)32 b(is)e(not)h(used)e(to)i(searc)m(h)g +(for)f(the)h(\014lename.)275 840 y(As)42 b(noted)g(ab)s(o)m(v)m(e,)47 +b(if)42 b(a)h(non-in)m(teractiv)m(e)i(shell)d(is)g(in)m(v)m(ok)m(ed)i +(with)e(the)h Ft(--login)d Fu(option,)46 b(Bash)150 949 +y(attempts)31 b(to)g(read)g(and)e(execute)j(commands)e(from)g(the)h +(login)g(shell)g(startup)e(\014les.)150 1158 y Fk(In)m(v)m(ok)m(ed)40 +b(with)g(name)h Fh(sh)150 1305 y Fu(If)c(Bash)g(is)g(in)m(v)m(ok)m(ed)i +(with)e(the)g(name)g Ft(sh)p Fu(,)i(it)f(tries)f(to)h(mimic)g(the)f +(startup)g(b)s(eha)m(vior)g(of)h(historical)150 1414 +y(v)m(ersions)31 b(of)f Ft(sh)g Fu(as)h(closely)h(as)e(p)s(ossible,)g +(while)h(conforming)f(to)h(the)g Fm(posix)e Fu(standard)h(as)h(w)m +(ell.)275 1558 y(When)50 b(in)m(v)m(ok)m(ed)j(as)f(an)f(in)m(teractiv)m +(e)j(login)e(shell,)57 b(or)51 b(as)g(a)h(non-in)m(teractiv)m(e)h +(shell)f(with)f(the)150 1668 y Ft(--login)31 b Fu(option,)k(it)e +(\014rst)g(attempts)h(to)g(read)f(and)g(execute)h(commands)f(from)g +Ft(/etc/profile)d Fu(and)150 1777 y Ft(~/.profile)p Fu(,)d(in)i(that)i +(order.)39 b(The)30 b Ft(--noprofile)c Fu(option)k(ma)m(y)g(b)s(e)f +(used)g(to)h(inhibit)f(this)h(b)s(eha)m(vior.)150 1887 +y(When)36 b(in)m(v)m(ok)m(ed)i(as)e(an)g(in)m(teractiv)m(e)j(shell)e +(with)f(the)g(name)h Ft(sh)p Fu(,)g(Bash)f(lo)s(oks)h(for)f(the)h(v)-5 +b(ariable)37 b Ft(ENV)p Fu(,)150 1997 y(expands)29 b(its)i(v)-5 +b(alue)30 b(if)h(it)f(is)g(de\014ned,)g(and)f(uses)h(the)g(expanded)g +(v)-5 b(alue)30 b(as)h(the)f(name)g(of)g(a)h(\014le)f(to)h(read)150 +2106 y(and)g(execute.)46 b(Since)32 b(a)g(shell)g(in)m(v)m(ok)m(ed)h +(as)f Ft(sh)f Fu(do)s(es)g(not)h(attempt)h(to)g(read)e(and)g(execute)i +(commands)150 2216 y(from)39 b(an)m(y)g(other)h(startup)e(\014les,)k +(the)d Ft(--rcfile)e Fu(option)j(has)f(no)g(e\013ect.)69 +b(A)39 b(non-in)m(teractiv)m(e)j(shell)150 2325 y(in)m(v)m(ok)m(ed)32 +b(with)e(the)g(name)h Ft(sh)f Fu(do)s(es)g(not)g(attempt)i(to)f(read)f +(an)m(y)h(other)g(startup)e(\014les.)275 2469 y(When)h(in)m(v)m(ok)m +(ed)h(as)g Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e +Fu(mo)s(de)h(after)h(the)g(startup)f(\014les)g(are)h(read.)150 +2678 y Fk(In)m(v)m(ok)m(ed)40 b(in)h Fg(posix)g Fk(mo)s(de)150 +2824 y Fu(When)28 b(Bash)h(is)g(started)g(in)g Fm(posix)f +Fu(mo)s(de,)g(as)h(with)g(the)g Ft(--posix)d Fu(command)j(line)g +(option,)h(it)f(follo)m(ws)150 2934 y(the)24 b Fm(posix)f +Fu(standard)h(for)f(startup)h(\014les.)38 b(In)24 b(this)g(mo)s(de,)h +(in)m(teractiv)m(e)i(shells)d(expand)f(the)h Ft(ENV)f +Fu(v)-5 b(ariable)150 3044 y(and)30 b(commands)g(are)g(read)h(and)e +(executed)j(from)d(the)i(\014le)f(whose)g(name)h(is)f(the)h(expanded)e +(v)-5 b(alue.)41 b(No)150 3153 y(other)31 b(startup)f(\014les)g(are)h +(read.)150 3362 y Fk(In)m(v)m(ok)m(ed)40 b(b)m(y)g(remote)h(shell)h +(daemon)150 3509 y Fu(Bash)36 b(attempts)h(to)g(determine)f(when)f(it)i +(is)f(b)s(eing)g(run)e(with)i(its)g(standard)g(input)f(connected)i(to)g +(a)150 3618 y(net)m(w)m(ork)h(connection,)j(as)c(when)g(executed)h(b)m +(y)f(the)h(remote)g(shell)g(daemon,)h(usually)e Ft(rshd)p +Fu(,)h(or)g(the)150 3728 y(secure)c(shell)f(daemon)h +Ft(sshd)p Fu(.)49 b(If)33 b(Bash)g(determines)h(it)g(is)f(b)s(eing)g +(run)f(in)i(this)f(fashion,)h(it)g(reads)g(and)150 3837 +y(executes)29 b(commands)e(from)g Ft(~/.bashrc)p Fu(,)e(if)j(that)g +(\014le)f(exists)h(and)f(is)g(readable.)41 b(It)27 b(will)h(not)f(do)h +(this)f(if)150 3947 y(in)m(v)m(ok)m(ed)k(as)f Ft(sh)p +Fu(.)40 b(The)29 b Ft(--norc)f Fu(option)i(ma)m(y)g(b)s(e)f(used)f(to)j +(inhibit)e(this)g(b)s(eha)m(vior,)h(and)f(the)h Ft(--rcfile)150 +4057 y Fu(option)36 b(ma)m(y)g(b)s(e)e(used)h(to)h(force)g(another)f +(\014le)h(to)g(b)s(e)e(read,)j(but)d(neither)i Ft(rshd)e +Fu(nor)h Ft(sshd)f Fu(generally)150 4166 y(in)m(v)m(ok)m(e)e(the)f +(shell)f(with)h(those)f(options)h(or)f(allo)m(w)i(them)f(to)g(b)s(e)e +(sp)s(eci\014ed.)150 4375 y Fk(In)m(v)m(ok)m(ed)40 b(with)g(unequal)h +(e\013ectiv)m(e)e(and)i(real)g Fg(uid/gid)p Fk(s)150 +4522 y Fu(If)34 b(Bash)h(is)g(started)g(with)f(the)h(e\013ectiv)m(e)i +(user)d(\(group\))h(id)f(not)h(equal)g(to)g(the)g(real)g(user)f +(\(group\))h(id,)150 4631 y(and)26 b(the)i Ft(-p)e Fu(option)h(is)g +(not)h(supplied,)e(no)h(startup)g(\014les)g(are)g(read,)h(shell)f +(functions)g(are)g(not)g(inherited)150 4741 y(from)41 +b(the)g(en)m(vironmen)m(t,)j(the)d Ft(SHELLOPTS)p Fu(,)h +Ft(BASHOPTS)p Fu(,)g Ft(CDPATH)p Fu(,)g(and)e Ft(GLOBIGNORE)e +Fu(v)-5 b(ariables,)45 b(if)150 4850 y(they)28 b(app)s(ear)f(in)h(the)g +(en)m(vironmen)m(t,)i(are)e(ignored,)h(and)e(the)h(e\013ectiv)m(e)j +(user)c(id)h(is)g(set)g(to)h(the)f(real)h(user)150 4960 +y(id.)62 b(If)38 b(the)f Ft(-p)h Fu(option)g(is)f(supplied)g(at)h(in)m +(v)m(o)s(cation,)k(the)c(startup)f(b)s(eha)m(vior)h(is)g(the)g(same,)i +(but)d(the)150 5070 y(e\013ectiv)m(e)c(user)d(id)g(is)g(not)h(reset.) +150 5324 y Fs(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)p +eop end +%%Page: 90 96 +TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(90)150 299 y Fk(6.3.1)63 +b(What)40 b(is)h(an)g(In)m(teractiv)m(e)e(Shell?)150 +446 y Fu(An)g(in)m(teractiv)m(e)k(shell)d(is)g(one)g(started)g(without) +g(non-option)g(argumen)m(ts,)j(unless)c Ft(-s)h Fu(is)f(sp)s +(eci\014ed,)150 555 y(without)30 b(sp)s(ecifying)g(the)g +Ft(-c)f Fu(option,)h(and)g(whose)f(input)g(and)g(error)h(output)f(are)h +(b)s(oth)f(connected)i(to)150 665 y(terminals)g(\(as)g(determined)f(b)m +(y)g Ft(isatty\(3\))p Fu(\),)e(or)j(one)f(started)h(with)f(the)h +Ft(-i)f Fu(option.)275 808 y(An)g(in)m(teractiv)m(e)j(shell)d +(generally)i(reads)e(from)g(and)g(writes)g(to)h(a)g(user's)f(terminal.) +275 952 y(The)i Ft(-s)g Fu(in)m(v)m(o)s(cation)j(option)f(ma)m(y)f(b)s +(e)g(used)f(to)i(set)f(the)g(p)s(ositional)h(parameters)f(when)f(an)h +(in)m(ter-)150 1061 y(activ)m(e)g(shell)d(is)h(started.)150 +1269 y Fk(6.3.2)63 b(Is)41 b(this)g(Shell)g(In)m(teractiv)m(e?)150 +1416 y Fu(T)-8 b(o)30 b(determine)g(within)f(a)h(startup)g(script)f +(whether)g(or)h(not)g(Bash)g(is)g(running)e(in)m(teractiv)m(ely)-8 +b(,)33 b(test)e(the)150 1526 y(v)-5 b(alue)30 b(of)g(the)f(`)p +Ft(-)p Fu(')h(sp)s(ecial)g(parameter.)41 b(It)29 b(con)m(tains)i +Ft(i)e Fu(when)g(the)g(shell)h(is)f(in)m(teractiv)m(e.)44 +b(F)-8 b(or)30 b(example:)390 1669 y Ft(case)47 b("$-")f(in)390 +1779 y(*i*\))h(echo)f(This)h(shell)f(is)h(interactive)e(;;)390 +1888 y(*\))i(echo)g(This)f(shell)h(is)g(not)g(interactive)e(;;)390 +1998 y(esac)275 2141 y Fu(Alternativ)m(ely)-8 b(,)28 +b(startup)23 b(scripts)h(ma)m(y)g(examine)g(the)g(v)-5 +b(ariable)25 b Ft(PS1)p Fu(;)g(it)g(is)e(unset)h(in)f(non-in)m +(teractiv)m(e)150 2251 y(shells,)31 b(and)e(set)i(in)f(in)m(teractiv)m +(e)k(shells.)40 b(Th)m(us:)390 2394 y Ft(if)47 b([)h(-z)f("$PS1")f(];)h +(then)772 2503 y(echo)f(This)h(shell)f(is)i(not)f(interactive)390 +2613 y(else)772 2723 y(echo)f(This)h(shell)f(is)i(interactive)390 +2832 y(fi)150 3040 y Fk(6.3.3)63 b(In)m(teractiv)m(e)38 +b(Shell)k(Beha)m(vior)150 3187 y Fu(When)30 b(the)h(shell)f(is)h +(running)d(in)m(teractiv)m(ely)-8 b(,)34 b(it)d(c)m(hanges)h(its)f(b)s +(eha)m(vior)f(in)g(sev)m(eral)i(w)m(a)m(ys.)199 3330 +y(1.)61 b(Startup)37 b(\014les)g(are)h(read)f(and)g(executed)h(as)f +(describ)s(ed)g(in)g(Section)h(6.2)g([Bash)g(Startup)e(Files],)330 +3440 y(page)31 b(88.)199 3579 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g +(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(107\))h(is)e(enabled)g(b)m +(y)g(default.)46 b(When)32 b(job)330 3689 y(con)m(trol)j(is)f(in)f +(e\013ect,)k(Bash)d(ignores)g(the)g(k)m(eyb)s(oard-generated)h(job)e +(con)m(trol)i(signals)g Ft(SIGTTIN)p Fu(,)330 3798 y +Ft(SIGTTOU)p Fu(,)29 b(and)g Ft(SIGTSTP)p Fu(.)199 3937 +y(3.)61 b(Bash)25 b(expands)e(and)h(displa)m(ys)h Ft(PS1)e +Fu(b)s(efore)h(reading)h(the)f(\014rst)g(line)h(of)f(a)h(command,)h +(and)e(expands)330 4047 y(and)33 b(displa)m(ys)h Ft(PS2)f +Fu(b)s(efore)h(reading)g(the)g(second)g(and)f(subsequen)m(t)g(lines)i +(of)f(a)g(m)m(ulti-line)h(com-)330 4156 y(mand.)42 b(Bash)31 +b(expands)f(and)h(displa)m(ys)g Ft(PS0)f Fu(after)h(it)h(reads)f(a)g +(command)g(but)f(b)s(efore)h(executing)330 4266 y(it.)62 +b(See)38 b(Section)g(6.9)h([Con)m(trolling)g(the)e(Prompt],)j(page)e +(98,)i(for)d(a)h(complete)h(list)f(of)g(prompt)330 4375 +y(string)30 b(escap)s(e)h(sequences.)199 4514 y(4.)61 +b(Bash)28 b(executes)h(the)e(v)-5 b(alues)28 b(of)g(the)g(set)g(elemen) +m(ts)h(of)f(the)g Ft(PROMPT_COMMANDS)23 b Fu(arra)m(y)28 +b(v)-5 b(ariable)29 b(as)330 4624 y(commands)e(b)s(efore)f(prin)m(ting) +h(the)g(primary)g(prompt,)g Ft($PS1)f Fu(\(see)i(Section)f(5.2)i([Bash) +e(V)-8 b(ariables],)330 4733 y(page)31 b(73\).)199 4872 +y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h([Command)g(Line)g +(Editing],)h(page)g(111\))g(is)f(used)g(to)g(read)g(commands)330 +4982 y(from)k(the)g(user's)g(terminal.)199 5121 y(6.)61 +b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 b(of)f(the)g +Ft(ignoreeof)e Fu(option)j(to)g Ft(set)29 b(-o)36 b Fu(instead)h(of)f +(exiting)i(imme-)330 5230 y(diately)f(when)e(it)i(receiv)m(es)h(an)e +Ft(EOF)f Fu(on)h(its)g(standard)f(input)g(when)h(reading)g(a)g(command) +g(\(see)330 5340 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g +(62\).)p eop end +%%Page: 91 97 +TeXDict begin 91 96 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(91)199 299 y(7.)61 +b(Command)43 b(history)h(\(see)h(Section)g(9.1)g([Bash)f(History)h(F)-8 +b(acilities],)51 b(page)45 b(146\))h(and)d(history)330 +408 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],)k +(page)45 b(148\))h(are)f(enabled)g(b)m(y)f(default.)330 +518 y(Bash)28 b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g(the) +g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g(with) +330 628 y(history)i(enabled)h(exits.)199 762 y(8.)61 +b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e +(94\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 896 +y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g +(ignores)f Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page) +f(42\).)154 1030 y(10.)61 b(In)29 b(the)g(absence)h(of)g(an)m(y)g +(traps,)f Ft(SIGINT)f Fu(is)h(caugh)m(t)i(and)e(handled)f(\(see)j +(Section)f(3.7.6)h([Signals],)330 1140 y(page)g(42\).)42 +b Ft(SIGINT)29 b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154 +1274 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i +Ft(SIGHUP)d Fu(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f +Ft(huponexit)e Fu(shell)330 1383 y(option)31 b(has)f(b)s(een)g(enabled) +g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(42\).)154 +1517 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g +(ignored,)g(and)f(`)p Ft(set)h(-n)p Fu(')f(has)h(no)f(e\013ect)j(\(see) +e(Section)h(4.3.1)g([The)330 1627 y(Set)g(Builtin],)g(page)g(62\).)154 +1761 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s +(dically)-8 b(,)34 b(dep)s(ending)c(on)i(the)g(v)-5 b(alues)32 +b(of)g(the)h Ft(MAIL)p Fu(,)e Ft(MAILPATH)p Fu(,)330 +1871 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31 +b(\(see)h(Section)f(5.2)g([Bash)g(V)-8 b(ariables],)32 +b(page)f(73\).)154 2005 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i +(references)f(to)h(un)m(b)s(ound)c(shell)j(v)-5 b(ariables)34 +b(after)g(`)p Ft(set)29 b(-u)p Fu(')k(has)g(b)s(een)330 +2114 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g +(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(62\).)154 +2248 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f +(errors)g(caused)g(b)m(y)h Fr(v)-5 b(ar)54 b Fu(b)s(eing)48 +b(unset)g(or)h(n)m(ull)f(in)330 2358 y Ft(${)p Fj(var)p +Ft(:?)p Fj(word)p Ft(})27 b Fu(expansions)j(\(see)h(Section)h(3.5.3)g +([Shell)e(P)m(arameter)i(Expansion],)e(page)h(25\).)154 +2492 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f +(shell)h(builtins)f(will)g(not)h(cause)g(the)f(shell)h(to)g(exit.)154 +2626 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f +(sp)s(ecial)g(builtin)f(returning)g(an)g(error)h(status)g(will)g(not)f +(cause)330 2736 y(the)31 b(shell)f(to)h(exit)h(\(see)f(Section)g(6.11)h +([Bash)f(POSIX)e(Mo)s(de],)i(page)g(101\).)154 2870 y(18.)61 +b(A)34 b(failed)g Ft(exec)f Fu(will)h(not)g(cause)g(the)g(shell)g(to)g +(exit)h(\(see)f(Section)h(4.1)g([Bourne)f(Shell)f(Builtins],)330 +2980 y(page)e(44\).)154 3114 y(19.)61 b(P)m(arser)31 +b(syn)m(tax)f(errors)g(will)h(not)g(cause)g(the)f(shell)h(to)g(exit.) +154 3248 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g +(directory)g(argumen)m(ts)f(to)i(the)e Ft(cd)g Fu(builtin)g(is)h +(enabled)f(b)m(y)h(default)330 3357 y(\(see)35 b(the)g(description)f +(of)h(the)f Ft(cdspell)f Fu(option)h(to)i(the)e Ft(shopt)f +Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 3467 y(Shopt)30 +b(Builtin],)h(page)g(66\).)154 3601 y(21.)61 b(The)42 +b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5 b(alue)43 b(of)f(the)h +Ft(TMOUT)e Fu(v)-5 b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h +(not)330 3711 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s +(er)g(of)i(seconds)f(after)g(prin)m(ting)g Ft($PS1)f +Fu(\(see)i(Section)g(5.2)h([Bash)330 3820 y(V)-8 b(ariables],)32 +b(page)f(73\).)150 4060 y Fs(6.4)68 b(Bash)45 b(Conditional)h +(Expressions)150 4220 y Fu(Conditional)26 b(expressions)g(are)g(used)f +(b)m(y)g(the)h Ft([[)f Fu(comp)s(ound)g(command)g(and)g(the)h +Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 4329 y(commands.)50 +b(The)33 b Ft(test)g Fu(and)f Ft([)i Fu(commands)f(determine)h(their)f +(b)s(eha)m(vior)h(based)f(on)h(the)f(n)m(um)m(b)s(er)g(of)150 +4439 y(argumen)m(ts;)28 b(see)f(the)f(descriptions)g(of)g(those)g +(commands)g(for)g(an)m(y)g(other)h(command-sp)s(eci\014c)e(actions.)275 +4573 y(Expressions)d(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8 +b(,)24 b(and)f(are)g(formed)g(from)g(the)g(follo)m(wing)h(primaries.)38 +b(Unary)150 4682 y(expressions)c(are)g(often)g(used)g(to)g(examine)h +(the)f(status)g(of)h(a)f(\014le.)52 b(There)33 b(are)h(string)g(op)s +(erators)h(and)150 4792 y(n)m(umeric)c(comparison)g(op)s(erators)h(as)f +(w)m(ell.)44 b(Bash)31 b(handles)g(sev)m(eral)h(\014lenames)g(sp)s +(ecially)g(when)e(they)150 4902 y(are)35 b(used)e(in)i(expressions.)52 +b(If)34 b(the)h(op)s(erating)f(system)h(on)f(whic)m(h)g(Bash)h(is)f +(running)f(pro)m(vides)h(these)150 5011 y(sp)s(ecial)22 +b(\014les,)i(Bash)e(will)g(use)f(them;)k(otherwise)d(it)g(will)g(em)m +(ulate)h(them)f(in)m(ternally)h(with)e(this)h(b)s(eha)m(vior:)150 +5121 y(If)27 b(the)g Fr(\014le)33 b Fu(argumen)m(t)27 +b(to)h(one)g(of)f(the)h(primaries)f(is)g(of)h(the)f(form)g +Ft(/dev/fd/)p Fj(N)p Fu(,)e(then)i(\014le)h(descriptor)f +Fr(N)150 5230 y Fu(is)g(c)m(hec)m(k)m(ed.)42 b(If)26 +b(the)h Fr(\014le)32 b Fu(argumen)m(t)c(to)f(one)h(of)f(the)g +(primaries)f(is)h(one)h(of)f Ft(/dev/stdin)p Fu(,)e Ft(/dev/stdout)p +Fu(,)150 5340 y(or)30 b Ft(/dev/stderr)p Fu(,)e(\014le)i(descriptor)h +(0,)g(1,)g(or)f(2,)h(resp)s(ectiv)m(ely)-8 b(,)32 b(is)f(c)m(hec)m(k)m +(ed.)p eop end +%%Page: 92 98 +TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(92)275 299 y(When)37 +b(used)g(with)g Ft([[)p Fu(,)i(the)f(`)p Ft(<)p Fu(')g(and)f(`)p +Ft(>)p Fu(')h(op)s(erators)g(sort)g(lexicographically)i(using)d(the)h +(curren)m(t)150 408 y(lo)s(cale.)k(The)30 b Ft(test)f +Fu(command)i(uses)f(ASCI)s(I)e(ordering.)275 542 y(Unless)44 +b(otherwise)h(sp)s(eci\014ed,)j(primaries)c(that)h(op)s(erate)g(on)g +(\014les)f(follo)m(w)i(sym)m(b)s(olic)f(links)g(and)150 +651 y(op)s(erate)31 b(on)f(the)h(target)h(of)e(the)h(link,)f(rather)h +(than)f(the)g(link)h(itself.)150 808 y Ft(-a)f Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists.)150 +965 y Ft(-b)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g +(\014le.)150 1122 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s +(ecial)f(\014le.)150 1279 y Ft(-d)f Fj(file)162 b Fu(T)-8 +b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(directory) +-8 b(.)150 1436 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists.)150 1592 y Ft(-f)30 +b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 +b Fu(exists)31 b(and)f(is)g(a)h(regular)f(\014le.)150 +1749 y Ft(-g)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f +(set.)150 1906 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g +(link.)150 2063 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g Ft(")p +Fu(stic)m(ky)p Ft(")h Fu(bit)g(is)f(set.)150 2220 y Ft(-p)g +Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b +Fu(exists)31 b(and)f(is)g(a)h(named)f(pip)s(e)f(\(FIF)m(O\).)150 +2377 y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(readable.)150 +2534 y Ft(-s)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f +(zero.)150 2690 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30 +b(if)g(\014le)h(descriptor)f Fr(fd)j Fu(is)e(op)s(en)e(and)h(refers)g +(to)h(a)g(terminal.)150 2847 y Ft(-u)f Fj(file)162 b +Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g +(set-user-id)h(bit)f(is)h(set.)150 3004 y Ft(-w)f Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 +b(and)f(is)g(writable.)150 3161 y Ft(-x)g Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 +b(and)f(is)g(executable.)150 3318 y Ft(-G)g Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 +b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j(group)d(id.)150 +3475 y Ft(-L)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 +3632 y Ft(-N)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(b)s(een)f(mo)s(di\014ed)h +(since)g(it)h(w)m(as)g(last)g(read.)150 3789 y Ft(-O)f +Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b +Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j +(user)d(id.)150 3945 y Ft(-S)g Fj(file)162 b Fu(T)-8 +b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(so)s(c)m +(k)m(et.)150 4102 y Fj(file1)e Ft(-ef)g Fj(file2)630 +4212 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(and)30 +b Fr(\014le2)38 b Fu(refer)30 b(to)i(the)e(same)h(device)g(and)f(ino)s +(de)g(n)m(um)m(b)s(ers.)150 4369 y Fj(file1)f Ft(-nt)g +Fj(file2)630 4478 y Fu(T)-8 b(rue)23 b(if)h Fr(\014le1)32 +b Fu(is)24 b(new)m(er)g(\(according)h(to)g(mo)s(di\014cation)f(date\))h +(than)f Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le1)31 b +Fu(exists)630 4588 y(and)f Fr(\014le2)38 b Fu(do)s(es)30 +b(not.)150 4745 y Fj(file1)f Ft(-ot)g Fj(file2)630 4854 +y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(is)31 b(older)f(than)g +Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le2)38 b Fu(exists)31 +b(and)f Fr(\014le1)38 b Fu(do)s(es)30 b(not.)150 5011 +y Ft(-o)g Fj(optname)630 5121 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h +(option)f Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41 +b(list)h(of)f(options)h(app)s(ears)e(in)630 5230 y(the)33 +b(description)h(of)f(the)g Ft(-o)g Fu(option)g(to)h(the)g +Ft(set)e Fu(builtin)h(\(see)h(Section)g(4.3.1)h([The)e(Set)630 +5340 y(Builtin],)e(page)g(62\).)p eop end +%%Page: 93 99 +TeXDict begin 93 98 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(93)150 299 y Ft(-v)30 +b Fj(varname)630 408 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 +b(ariable)32 b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(\(has)g(b)s(een)e +(assigned)i(a)g(v)-5 b(alue\).)150 565 y Ft(-R)30 b Fj(varname)630 +674 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32 +b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f(name)h +(reference.)150 830 y Ft(-z)f Fj(string)66 b Fu(T)-8 +b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 b Fu(is)31 +b(zero.)150 987 y Ft(-n)f Fj(string)150 1096 y(string)192 +b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 +b Fu(is)31 b(non-zero.)150 1252 y Fj(string1)d Ft(==)i +Fj(string2)150 1362 y(string1)e Ft(=)i Fj(string2)630 +1472 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82 +b(When)44 b(used)f(with)g(the)h Ft([[)g Fu(command,)j(this)d(p)s(er-) +630 1581 y(forms)d(pattern)g(matc)m(hing)i(as)f(describ)s(ed)e(ab)s(o)m +(v)m(e)j(\(see)f(Section)g(3.2.5.2)i([Conditional)630 +1691 y(Constructs],)30 b(page)h(11\).)630 1824 y(`)p +Ft(=)p Fu(')g(should)e(b)s(e)h(used)f(with)h(the)h Ft(test)e +Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1980 +y Fj(string1)e Ft(!=)i Fj(string2)630 2089 y Fu(T)-8 +b(rue)30 b(if)g(the)h(strings)f(are)h(not)f(equal.)150 +2246 y Fj(string1)e Ft(<)i Fj(string2)630 2355 y Fu(T)-8 +b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(b)s(efore)f +Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2511 +y Fj(string1)28 b Ft(>)i Fj(string2)630 2621 y Fu(T)-8 +b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(after)g +Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2777 +y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 2887 y Ft(OP)j Fu(is)h(one)g(of)h(`) +p Ft(-eq)p Fu(',)f(`)p Ft(-ne)p Fu(',)h(`)p Ft(-lt)p +Fu(',)g(`)p Ft(-le)p Fu(',)f(`)p Ft(-gt)p Fu(',)h(or)f(`)p +Ft(-ge)p Fu('.)51 b(These)34 b(arithmetic)h(binary)630 +2996 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44 +b Fu(is)36 b(equal)g(to,)i(not)e(equal)g(to,)i(less)e(than,)h(less)f +(than)f(or)630 3106 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i +(than)d(or)i(equal)f(to)h Fr(arg2)p Fu(,)h(resp)s(ectiv)m(ely)-8 +b(.)42 b Fr(Arg1)36 b Fu(and)630 3215 y Fr(arg2)41 b +Fu(ma)m(y)34 b(b)s(e)f(p)s(ositiv)m(e)h(or)f(negativ)m(e)j(in)m +(tegers.)50 b(When)33 b(used)g(with)g(the)g Ft([[)g Fu(command,)630 +3325 y Fr(Arg1)41 b Fu(and)33 b Fr(Arg2)41 b Fu(are)33 +b(ev)-5 b(aluated)35 b(as)e(arithmetic)i(expressions)d(\(see)j(Section) +f(6.5)g([Shell)630 3435 y(Arithmetic],)e(page)f(93\).)150 +3672 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 3832 y Fu(The)26 +b(shell)h(allo)m(ws)h(arithmetic)f(expressions)g(to)g(b)s(e)f(ev)-5 +b(aluated,)29 b(as)d(one)h(of)g(the)g(shell)f(expansions)h(or)f(b)m(y) +150 3941 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g +Ft(let)e Fu(builtin,)i(or)f(the)g Ft(-i)g Fu(option)h(to)f(the)h +Ft(declare)d Fu(builtin.)275 4074 y(Ev)-5 b(aluation)27 +b(is)g(done)f(in)g(\014xed-width)g(in)m(tegers)i(with)e(no)h(c)m(hec)m +(k)h(for)e(o)m(v)m(er\015o)m(w,)j(though)d(division)h(b)m(y)150 +4184 y(0)g(is)g(trapp)s(ed)f(and)h(\015agged)g(as)h(an)f(error.)39 +b(The)26 b(op)s(erators)h(and)g(their)g(precedence,)h(asso)s(ciativit)m +(y)-8 b(,)32 b(and)150 4293 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h +(in)e(the)h(C)g(language.)56 b(The)35 b(follo)m(wing)h(list)g(of)f(op)s +(erators)g(is)g(group)s(ed)f(in)m(to)150 4403 y(lev)m(els)27 +b(of)f(equal-precedence)i(op)s(erators.)39 b(The)25 b(lev)m(els)j(are)e +(listed)h(in)e(order)h(of)g(decreasing)g(precedence.)150 +4559 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31 +b(p)s(ost-incremen)m(t)g(and)f(p)s(ost-decremen)m(t)150 +4715 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31 +b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 4871 +y Ft(-)g(+)354 b Fu(unary)29 b(min)m(us)h(and)g(plus)150 +5028 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150 +5184 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 5340 y +Ft(*)30 b(/)g(\045)276 b Fu(m)m(ultiplication,)33 b(division,)d +(remainder)p eop end +%%Page: 94 100 +TeXDict begin 94 99 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(94)150 299 y Ft(+)30 +b(-)354 b Fu(addition,)31 b(subtraction)150 460 y Ft(<<)f(>>)258 +b Fu(left)31 b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150 +620 y Ft(<=)f(>=)g(<)g(>)102 b Fu(comparison)150 781 +y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 b(and)e(inequalit)m(y)150 +942 y Ft(&)432 b Fu(bit)m(wise)31 b(AND)150 1103 y Ft(^)432 +b Fu(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 1263 y Ft(|)432 +b Fu(bit)m(wise)31 b(OR)150 1424 y Ft(&&)384 b Fu(logical)33 +b(AND)150 1585 y Ft(||)384 b Fu(logical)33 b(OR)150 1746 +y Ft(expr)c(?)h(expr)f(:)h(expr)630 1855 y Fu(conditional)i(op)s +(erator)150 2016 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g +(^=)f(|=)630 2126 y Fu(assignmen)m(t)150 2287 y Ft(expr1)g(,)h(expr2) +630 2396 y Fu(comma)275 2558 y(Shell)38 b(v)-5 b(ariables)39 +b(are)g(allo)m(w)m(ed)i(as)e(op)s(erands;)i(parameter)e(expansion)g(is) +f(p)s(erformed)g(b)s(efore)g(the)150 2667 y(expression)g(is)g(ev)-5 +b(aluated.)66 b(Within)38 b(an)h(expression,)h(shell)e(v)-5 +b(ariables)39 b(ma)m(y)g(also)g(b)s(e)f(referenced)g(b)m(y)150 +2777 y(name)31 b(without)f(using)g(the)h(parameter)g(expansion)f(syn)m +(tax.)42 b(A)31 b(shell)f(v)-5 b(ariable)32 b(that)f(is)f(n)m(ull)h(or) +f(unset)150 2886 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b) +m(y)g(name)h(without)f(using)g(the)g(parameter)h(expansion)f(syn)m +(tax.)150 2996 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5 +b(ariable)36 b(is)g(ev)-5 b(aluated)38 b(as)e(an)g(arithmetic)h +(expression)f(when)f(it)h(is)g(referenced,)i(or)150 3106 +y(when)31 b(a)i(v)-5 b(ariable)33 b(whic)m(h)f(has)g(b)s(een)f(giv)m +(en)j(the)e Fr(in)m(teger)40 b Fu(attribute)33 b(using)f(`)p +Ft(declare)d(-i)p Fu(')i(is)i(assigned)150 3215 y(a)j(v)-5 +b(alue.)58 b(A)36 b(n)m(ull)f(v)-5 b(alue)37 b(ev)-5 +b(aluates)37 b(to)g(0.)57 b(A)36 b(shell)g(v)-5 b(ariable)37 +b(need)e(not)h(ha)m(v)m(e)h(its)f Fr(in)m(teger)44 b +Fu(attribute)150 3325 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g +(expression.)275 3461 y(In)m(teger)41 b(constan)m(ts)g(follo)m(w)h(the) +e(C)g(language)i(de\014nition,)g(without)f(su\016xes)e(or)h(c)m +(haracter)i(con-)150 3570 y(stan)m(ts.)f(Constan)m(ts)31 +b(with)f(a)g(leading)h(0)f(are)h(in)m(terpreted)f(as)g(o)s(ctal)i(n)m +(um)m(b)s(ers.)39 b(A)30 b(leading)h(`)p Ft(0x)p Fu(')f(or)g(`)p +Ft(0X)p Fu(')150 3680 y(denotes)g(hexadecimal.)42 b(Otherwise,)30 +b(n)m(um)m(b)s(ers)f(tak)m(e)i(the)f(form)g([)p Fr(base)5 +b Ft(#)p Fu(])p Fr(n)p Fu(,)30 b(where)f(the)i(optional)g +Fr(base)150 3789 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m +(een)h(2)h(and)e(64)i(represen)m(ting)g(the)f(arithmetic)i(base,)e(and) +g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 3899 y(in)g(that)i(base.)40 +b(If)30 b Fr(base)5 b Ft(#)30 b Fu(is)f(omitted,)i(then)f(base)g(10)g +(is)g(used.)40 b(When)30 b(sp)s(ecifying)f Fr(n)p Fu(,)h(if)f(a)i +(non-digit)f(is)150 4008 y(required,)k(the)g(digits)h(greater)g(than)e +(9)i(are)f(represen)m(ted)g(b)m(y)f(the)h(lo)m(w)m(ercase)j(letters,)f +(the)e(upp)s(ercase)150 4118 y(letters,)26 b(`)p Ft(@)p +Fu(',)g(and)d(`)p Ft(_)p Fu(',)i(in)e(that)i(order.)38 +b(If)23 b Fr(base)29 b Fu(is)23 b(less)h(than)g(or)f(equal)h(to)h(36,)h +(lo)m(w)m(ercase)g(and)d(upp)s(ercase)150 4228 y(letters)32 +b(ma)m(y)f(b)s(e)e(used)h(in)m(terc)m(hangeably)i(to)f(represen)m(t)g +(n)m(um)m(b)s(ers)e(b)s(et)m(w)m(een)i(10)g(and)f(35.)275 +4364 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 b(in)f(order)f(of)h +(precedence.)85 b(Sub-expressions)44 b(in)g(paren)m(theses)i(are)150 +4473 y(ev)-5 b(aluated)32 b(\014rst)d(and)h(ma)m(y)h(o)m(v)m(erride)g +(the)g(precedence)g(rules)f(ab)s(o)m(v)m(e.)150 4716 +y Fs(6.6)68 b(Aliases)150 4875 y Fr(Aliases)41 b Fu(allo)m(w)d(a)f +(string)f(to)h(b)s(e)f(substituted)g(for)g(a)g(w)m(ord)g(when)g(it)h +(is)f(used)f(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)150 +4985 y(simple)32 b(command.)45 b(The)31 b(shell)i(main)m(tains)f(a)h +(list)f(of)g(aliases)i(that)e(ma)m(y)h(b)s(e)e(set)h(and)g(unset)f +(with)h(the)150 5095 y Ft(alias)d Fu(and)h Ft(unalias)e +Fu(builtin)i(commands.)275 5230 y(The)f(\014rst)f(w)m(ord)i(of)f(eac)m +(h)i(simple)f(command,)g(if)f(unquoted,)g(is)h(c)m(hec)m(k)m(ed)h(to)g +(see)f(if)g(it)g(has)f(an)g(alias.)150 5340 y(If)24 b(so,)i(that)g(w)m +(ord)e(is)h(replaced)g(b)m(y)f(the)h(text)h(of)e(the)h(alias.)40 +b(The)24 b(c)m(haracters)i(`)p Ft(/)p Fu(',)h(`)p Ft($)p +Fu(',)f(`)p Ft(`)p Fu(',)g(`)p Ft(=)p Fu(')f(and)f(an)m(y)h(of)p +eop end +%%Page: 95 101 +TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(95)150 299 y(the)23 +b(shell)g(metac)m(haracters)i(or)e(quoting)g(c)m(haracters)h(listed)g +(ab)s(o)m(v)m(e)g(ma)m(y)f(not)g(app)s(ear)f(in)h(an)g(alias)h(name.) +150 408 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e +(v)-5 b(alid)23 b(shell)f(input,)h(including)f(shell)g(metac)m +(haracters.)40 b(The)150 518 y(\014rst)35 b(w)m(ord)g(of)h(the)g +(replacemen)m(t)i(text)e(is)g(tested)h(for)e(aliases,)k(but)c(a)h(w)m +(ord)g(that)g(is)g(iden)m(tical)i(to)e(an)150 628 y(alias)c(b)s(eing)f +(expanded)f(is)h(not)g(expanded)f(a)h(second)g(time.)43 +b(This)30 b(means)h(that)g(one)g(ma)m(y)h(alias)g Ft(ls)e +Fu(to)150 737 y Ft("ls)f(-F")p Fu(,)f(for)f(instance,)i(and)d(Bash)i +(do)s(es)f(not)h(try)f(to)h(recursiv)m(ely)g(expand)e(the)i(replacemen) +m(t)h(text.)40 b(If)150 847 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h +(alias)g(v)-5 b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next) +h(command)e(w)m(ord)h(follo)m(wing)i(the)150 956 y(alias)f(is)e(also)h +(c)m(hec)m(k)m(ed)i(for)d(alias)h(expansion.)275 1096 +y(Aliases)e(are)f(created)i(and)d(listed)i(with)f(the)g +Ft(alias)f Fu(command,)h(and)g(remo)m(v)m(ed)h(with)f(the)g +Ft(unalias)150 1206 y Fu(command.)275 1345 y(There)44 +b(is)h(no)g(mec)m(hanism)g(for)f(using)h(argumen)m(ts)g(in)f(the)h +(replacemen)m(t)i(text,)i(as)d(in)e Ft(csh)p Fu(.)83 +b(If)150 1455 y(argumen)m(ts)37 b(are)h(needed,)g(a)g(shell)f(function) +f(should)g(b)s(e)h(used)f(\(see)i(Section)g(3.3)g([Shell)f(F)-8 +b(unctions],)150 1564 y(page)31 b(18\).)275 1704 y(Aliases)i(are)h(not) +e(expanded)g(when)g(the)h(shell)g(is)g(not)g(in)m(teractiv)m(e,)j +(unless)c(the)h Ft(expand_aliases)150 1813 y Fu(shell)e(option)f(is)h +(set)g(using)f Ft(shopt)f Fu(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g +(Builtin],)h(page)g(66\).)275 1953 y(The)38 b(rules)h(concerning)h(the) +f(de\014nition)g(and)g(use)g(of)g(aliases)i(are)e(somewhat)h +(confusing.)67 b(Bash)150 2063 y(alw)m(a)m(ys)37 b(reads)f(at)h(least)g +(one)f(complete)i(line)e(of)g(input,)h(and)e(all)i(lines)f(that)g(mak)m +(e)h(up)e(a)h(comp)s(ound)150 2172 y(command,)29 b(b)s(efore)g +(executing)i(an)m(y)e(of)h(the)f(commands)g(on)g(that)h(line)f(or)h +(the)f(comp)s(ound)f(command.)150 2282 y(Aliases)g(are)g(expanded)e +(when)g(a)i(command)f(is)g(read,)h(not)f(when)f(it)i(is)f(executed.)41 +b(Therefore,)28 b(an)f(alias)150 2391 y(de\014nition)36 +b(app)s(earing)h(on)f(the)h(same)g(line)g(as)g(another)g(command)f(do)s +(es)g(not)h(tak)m(e)i(e\013ect)f(un)m(til)f(the)150 2501 +y(next)i(line)g(of)g(input)f(is)h(read.)66 b(The)38 b(commands)h(follo) +m(wing)h(the)f(alias)h(de\014nition)e(on)h(that)g(line)h(are)150 +2610 y(not)33 b(a\013ected)h(b)m(y)f(the)g(new)f(alias.)49 +b(This)32 b(b)s(eha)m(vior)h(is)g(also)g(an)g(issue)g(when)e(functions) +i(are)g(executed.)150 2720 y(Aliases)c(are)g(expanded)e(when)g(a)i +(function)e(de\014nition)h(is)g(read,)h(not)f(when)g(the)g(function)g +(is)g(executed,)150 2830 y(b)s(ecause)36 b(a)h(function)f(de\014nition) +f(is)i(itself)g(a)f(command.)58 b(As)36 b(a)h(consequence,)h(aliases)g +(de\014ned)d(in)h(a)150 2939 y(function)28 b(are)h(not)g(a)m(v)-5 +b(ailable)31 b(un)m(til)e(after)g(that)g(function)f(is)g(executed.)41 +b(T)-8 b(o)29 b(b)s(e)f(safe,)i(alw)m(a)m(ys)g(put)e(alias)150 +3049 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h +(use)f Ft(alias)f Fu(in)h(comp)s(ound)f(commands.)275 +3188 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i +(functions)f(are)g(preferred)g(o)m(v)m(er)h(aliases.)150 +3437 y Fs(6.7)68 b(Arra)l(ys)150 3596 y Fu(Bash)33 b(pro)m(vides)g +(one-dimensional)g(indexed)f(and)h(asso)s(ciativ)m(e)i(arra)m(y)e(v)-5 +b(ariables.)49 b(An)m(y)33 b(v)-5 b(ariable)33 b(ma)m(y)150 +3706 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e +Ft(declare)e Fu(builtin)h(will)i(explicitly)g(declare)g(an)f(arra)m(y) +-8 b(.)46 b(There)32 b(is)150 3815 y(no)h(maxim)m(um)g(limit)h(on)f +(the)g(size)h(of)g(an)f(arra)m(y)-8 b(,)35 b(nor)d(an)m(y)i(requiremen) +m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 3925 +y(or)26 b(assigned)h(con)m(tiguously)-8 b(.)41 b(Indexed)25 +b(arra)m(ys)i(are)f(referenced)g(using)g(in)m(tegers)i(\(including)e +(arithmetic)150 4034 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell) +e(Arithmetic],)k(page)d(93\)\))h(and)d(are)i(zero-based;)k(asso)s +(ciativ)m(e)150 4144 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59 +b(Unless)36 b(otherwise)h(noted,)h(indexed)e(arra)m(y)h(indices)f(m)m +(ust)g(b)s(e)g(non-)150 4254 y(negativ)m(e)d(in)m(tegers.)275 +4393 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c +(an)m(y)g(v)-5 b(ariable)28 b(is)g(assigned)f(to)h(using)f(the)g(syn)m +(tax)390 4533 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p +Fj(value)150 4672 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g +(an)f(arithmetic)i(expression)e(that)h(m)m(ust)g(ev)-5 +b(aluate)36 b(to)f(a)g(n)m(um)m(b)s(er.)51 b(T)-8 b(o)150 +4782 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31 +b(use)390 4921 y Ft(declare)46 b(-a)h Fj(name)150 5061 +y Fu(The)30 b(syn)m(tax)390 5200 y Ft(declare)46 b(-a)h +Fj(name)p Ft([)p Fj(subscript)p Ft(])150 5340 y Fu(is)30 +b(also)i(accepted;)g(the)e Fr(subscript)h Fu(is)g(ignored.)p +eop end +%%Page: 96 102 +TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(96)150 299 y(Asso)s(ciativ)m(e)33 +b(arra)m(ys)d(are)h(created)h(using)390 427 y Ft(declare)46 +b(-A)h Fj(name)275 555 y Fu(A)m(ttributes)f(ma)m(y)h(b)s(e)e(sp)s +(eci\014ed)g(for)h(an)g(arra)m(y)g(v)-5 b(ariable)47 +b(using)e(the)h Ft(declare)e Fu(and)h Ft(readonly)150 +664 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g(applies)g(to)g(all)g +(mem)m(b)s(ers)f(of)g(an)h(arra)m(y)-8 b(.)275 792 y(Arra)m(ys)30 +b(are)h(assigned)f(to)h(using)f(comp)s(ound)f(assignmen)m(ts)i(of)g +(the)f(form)390 920 y Fj(name)p Ft(=\()p Fj(value1)44 +b(value2)j Ft(...)f(\))150 1048 y Fu(where)33 b(eac)m(h)i +Fr(v)-5 b(alue)40 b Fu(ma)m(y)34 b(b)s(e)g(of)g(the)g(form)f +Ft([)p Fj(subscript)p Ft(]=)p Fr(string)p Fu(.)48 b(Indexed)33 +b(arra)m(y)h(assignmen)m(ts)h(do)150 1157 y(not)26 b(require)f(an)m +(ything)g(but)g Fr(string)p Fu(.)39 b(When)25 b(assigning)h(to)g +(indexed)f(arra)m(ys,)i(if)e(the)h(optional)g(subscript)150 +1267 y(is)h(supplied,)f(that)h(index)g(is)f(assigned)h(to;)i(otherwise) +e(the)g(index)g(of)f(the)h(elemen)m(t)i(assigned)d(is)h(the)g(last)150 +1377 y(index)j(assigned)h(to)g(b)m(y)f(the)g(statemen)m(t)j(plus)c +(one.)41 b(Indexing)30 b(starts)h(at)g(zero.)275 1504 +y(Eac)m(h)26 b Fr(v)-5 b(alue)32 b Fu(in)26 b(the)h(list)g(undergo)s +(es)e(all)i(the)g(shell)f(expansions)g(describ)s(ed)f(ab)s(o)m(v)m(e)j +(\(see)f(Section)g(3.5)150 1614 y([Shell)j(Expansions],)h(page)g(22\).) +275 1742 y(When)k(assigning)i(to)g(an)f(asso)s(ciativ)m(e)i(arra)m(y)-8 +b(,)39 b(the)d(w)m(ords)f(in)h(a)h(comp)s(ound)d(assignmen)m(t)j(ma)m +(y)g(b)s(e)150 1851 y(either)31 b(assignmen)m(t)h(statemen)m(ts,)h(for) +e(whic)m(h)g(the)g(subscript)f(is)h(required,)g(or)g(a)g(list)h(of)f(w) +m(ords)f(that)i(is)150 1961 y(in)m(terpreted)g(as)g(a)g(sequence)f(of)h +(alternating)h(k)m(eys)f(and)f(v)-5 b(alues:)44 b Fr(name)5 +b Fu(=\()p Fr(k)m(ey1)40 b(v)-5 b(alue1)40 b(k)m(ey2)g(v)-5 +b(alue2)156 2071 y Fu(.)22 b(.)g(.)47 b(\).)57 b(These)35 +b(are)i(treated)f(iden)m(tically)i(to)e Fr(name)5 b Fu(=\()36 +b([)p Fr(k)m(ey1)7 b Fu(]=)p Fr(v)-5 b(alue1)46 b Fu([)p +Fr(k)m(ey2)7 b Fu(]=)p Fr(v)-5 b(alue2)51 b Fu(.)22 b(.)h(.)46 +b(\).)57 b(The)150 2180 y(\014rst)25 b(w)m(ord)f(in)h(the)h(list)g +(determines)f(ho)m(w)g(the)h(remaining)f(w)m(ords)g(are)h(in)m +(terpreted;)h(all)f(assignmen)m(ts)g(in)150 2290 y(a)31 +b(list)f(m)m(ust)h(b)s(e)e(of)h(the)h(same)f(t)m(yp)s(e.)41 +b(When)30 b(using)g(k)m(ey/v)-5 b(alue)32 b(pairs,)e(the)g(k)m(eys)h +(ma)m(y)g(not)f(b)s(e)g(missing)150 2399 y(or)g(empt)m(y;)h(a)g +(\014nal)f(missing)g(v)-5 b(alue)31 b(is)g(treated)g(lik)m(e)h(the)e +(empt)m(y)h(string.)275 2527 y(This)f(syn)m(tax)j(is)e(also)i(accepted) +g(b)m(y)f(the)f Ft(declare)f Fu(builtin.)44 b(Individual)31 +b(arra)m(y)h(elemen)m(ts)h(ma)m(y)g(b)s(e)150 2637 y(assigned)e(to)g +(using)f(the)g Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p +Fj(value)25 b Fu(syn)m(tax)31 b(in)m(tro)s(duced)e(ab)s(o)m(v)m(e.)275 +2765 y(When)h(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8 +b(,)32 b(if)f Fr(name)36 b Fu(is)31 b(subscripted)e(b)m(y)i(a)g +(negativ)m(e)i(n)m(um)m(b)s(er,)c(that)150 2874 y(n)m(um)m(b)s(er)43 +b(is)h(in)m(terpreted)h(as)f(relativ)m(e)j(to)e(one)f(greater)i(than)e +(the)g(maxim)m(um)g(index)g(of)h Fr(name)p Fu(,)j(so)150 +2984 y(negativ)m(e)30 b(indices)d(coun)m(t)h(bac)m(k)g(from)f(the)g +(end)g(of)g(the)h(arra)m(y)-8 b(,)29 b(and)e(an)g(index)g(of)g(-1)h +(references)g(the)f(last)150 3093 y(elemen)m(t.)275 3221 +y(An)m(y)h(elemen)m(t)h(of)g(an)f(arra)m(y)g(ma)m(y)h(b)s(e)f +(referenced)g(using)g Ft(${)p Fj(name)p Ft([)p Fj(subscript)p +Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 3331 y(required)f(to)j(a)m +(v)m(oid)f(con\015icts)g(with)f(the)h(shell's)f(\014lename)h(expansion) +f(op)s(erators.)41 b(If)28 b(the)i Fr(subscript)g Fu(is)150 +3440 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f +(expands)f(to)i(all)g(mem)m(b)s(ers)e(of)i(the)f(arra)m(y)h +Fr(name)p Fu(.)40 b(These)29 b(subscripts)f(di\013er)h(only)150 +3550 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g +(quotes.)60 b(If)36 b(the)h(w)m(ord)f(is)g(double-quoted,)j +Ft(${)p Fj(name)p Ft([*]})150 3660 y Fu(expands)25 b(to)h(a)g(single)h +(w)m(ord)e(with)g(the)h(v)-5 b(alue)26 b(of)g(eac)m(h)h(arra)m(y)f(mem) +m(b)s(er)f(separated)h(b)m(y)g(the)f(\014rst)g(c)m(harac-)150 +3769 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29 +b(and)f Ft(${)p Fj(name)p Ft([@]})d Fu(expands)i(eac)m(h)i(elemen)m(t)h +(of)e Fr(name)33 b Fu(to)c(a)f(separate)h(w)m(ord.)150 +3879 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f +Ft(${)p Fj(name)p Ft([@]})e Fu(expands)h(to)i(nothing.)47 +b(If)31 b(the)i(double-quoted)150 3988 y(expansion)39 +b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)d(expansion)h(of)g(the)f +(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 4098 +y(b)s(eginning)29 b(part)g(of)h(the)f(original)i(w)m(ord,)e(and)g(the)h +(expansion)f(of)h(the)f(last)i(parameter)e(is)h(joined)f(with)150 +4208 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40 +b(This)28 b(is)h(analogous)h(to)f(the)h(expansion)e(of)h(the)g(sp)s +(ecial)h(param-)150 4317 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p +Ft(*)p Fu('.)41 b Ft(${#)p Fj(name)p Ft([)p Fj(subscript)p +Ft(]})24 b Fu(expands)k(to)i(the)g(length)g(of)f Ft(${)p +Fj(name)p Ft([)p Fj(subscript)p Ft(]})p Fu(.)35 b(If)150 +4427 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p +Ft(*)p Fu(',)g(the)g(expansion)f(is)g(the)h(n)m(um)m(b)s(er)e(of)i +(elemen)m(ts)g(in)f(the)h(arra)m(y)-8 b(.)41 b(If)27 +b(the)g Fr(subscript)150 4536 y Fu(used)34 b(to)h(reference)g(an)f +(elemen)m(t)i(of)f(an)f(indexed)g(arra)m(y)h(ev)-5 b(aluates)36 +b(to)f(a)g(n)m(um)m(b)s(er)e(less)i(than)f(zero,)i(it)150 +4646 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h +(than)f(the)h(maxim)m(um)f(index)f(of)h(the)h(arra)m(y)-8 +b(,)33 b(so)g(negativ)m(e)150 4756 y(indices)d(coun)m(t)h(bac)m(k)h +(from)e(the)g(end)g(of)g(the)h(arra)m(y)-8 b(,)31 b(and)f(an)g(index)g +(of)h(-1)g(refers)f(to)h(the)g(last)g(elemen)m(t.)275 +4883 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42 +b(without)e(a)h(subscript)e(is)i(equiv)-5 b(alen)m(t)42 +b(to)f(referencing)g(with)g(a)150 4993 y(subscript)35 +b(of)h(0.)57 b(An)m(y)36 b(reference)g(to)h(a)f(v)-5 +b(ariable)36 b(using)g(a)g(v)-5 b(alid)36 b(subscript)f(is)h(legal,)j +(and)c Ft(bash)g Fu(will)150 5103 y(create)d(an)e(arra)m(y)h(if)f +(necessary)-8 b(.)275 5230 y(An)35 b(arra)m(y)i(v)-5 +b(ariable)37 b(is)g(considered)f(set)h(if)f(a)h(subscript)e(has)h(b)s +(een)g(assigned)g(a)h(v)-5 b(alue.)59 b(The)36 b(n)m(ull)150 +5340 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)p +eop end +%%Page: 97 103 +TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(97)275 299 y(It)29 +b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i(\(indices\))f(of)f +(an)h(arra)m(y)g(as)f(w)m(ell)i(as)f(the)f(v)-5 b(alues.)41 +b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p Fi(})150 408 +y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([*])p +Fi(})43 b Fu(expand)c(to)i(the)f(indices)h(assigned)f(in)g(arra)m(y)g +(v)-5 b(ariable)41 b Fr(name)p Fu(.)70 b(The)39 b(treatmen)m(t)150 +518 y(when)i(in)g(double)g(quotes)h(is)f(similar)h(to)h(the)e +(expansion)h(of)f(the)h(sp)s(ecial)g(parameters)g(`)p +Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 628 y(within)30 +b(double)g(quotes.)275 759 y(The)25 b Ft(unset)g Fu(builtin)g(is)h +(used)f(to)i(destro)m(y)f(arra)m(ys.)40 b Ft(unset)29 +b Fj(name)p Ft([)p Fj(subscript)p Ft(])22 b Fu(destro)m(ys)k(the)g +(arra)m(y)150 868 y(elemen)m(t)40 b(at)e(index)g Fr(subscript)p +Fu(.)62 b(Negativ)m(e)41 b(subscripts)c(to)i(indexed)e(arra)m(ys)i(are) +f(in)m(terpreted)h(as)f(de-)150 978 y(scrib)s(ed)30 b(ab)s(o)m(v)m(e.) +42 b(Unsetting)31 b(the)g(last)g(elemen)m(t)h(of)f(an)g(arra)m(y)g(v)-5 +b(ariable)31 b(do)s(es)f(not)h(unset)f(the)h(v)-5 b(ariable.)150 +1087 y Ft(unset)29 b Fj(name)p Fu(,)e(where)h Fr(name)33 +b Fu(is)28 b(an)g(arra)m(y)-8 b(,)30 b(remo)m(v)m(es)f(the)f(en)m(tire) +h(arra)m(y)-8 b(.)41 b(A)28 b(subscript)f(of)h(`)p Ft(*)p +Fu(')g(or)g(`)p Ft(@)p Fu(')g(also)150 1197 y(remo)m(v)m(es)k(the)e(en) +m(tire)i(arra)m(y)-8 b(.)275 1328 y(When)35 b(using)g(a)i(v)-5 +b(ariable)36 b(name)g(with)g(a)g(subscript)e(as)i(an)g(argumen)m(t)g +(to)h(a)f(command,)h(suc)m(h)f(as)150 1438 y(with)k Ft(unset)p +Fu(,)h(without)e(using)h(the)g(w)m(ord)f(expansion)h(syn)m(tax)g +(describ)s(ed)f(ab)s(o)m(v)m(e,)44 b(the)c(argumen)m(t)g(is)150 +1547 y(sub)5 b(ject)25 b(to)h(the)g(shell's)g(\014lename)f(expansion.) +39 b(If)25 b(\014lename)h(expansion)f(is)g(not)h(desired,)g(the)f +(argumen)m(t)150 1657 y(should)k(b)s(e)h(quoted.)275 +1788 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p Fu(,)h(and)e +Ft(readonly)f Fu(builtins)h(eac)m(h)i(accept)g(a)g Ft(-a)e +Fu(option)h(to)h(sp)s(ecify)f(an)f(indexed)150 1897 y(arra)m(y)28 +b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f(an)h(asso)s(ciativ)m +(e)i(arra)m(y)-8 b(.)40 b(If)27 b(b)s(oth)g(options)h(are)g(supplied,)f +Ft(-A)f Fu(tak)m(es)150 2007 y(precedence.)55 b(The)35 +b Ft(read)f Fu(builtin)h(accepts)h(a)g Ft(-a)e Fu(option)i(to)g(assign) +f(a)g(list)h(of)f(w)m(ords)g(read)g(from)g(the)150 2116 +y(standard)h(input)g(to)i(an)f(arra)m(y)-8 b(,)40 b(and)c(can)h(read)g +(v)-5 b(alues)38 b(from)e(the)h(standard)g(input)f(in)m(to)i +(individual)150 2226 y(arra)m(y)f(elemen)m(ts.)62 b(The)36 +b Ft(set)g Fu(and)h Ft(declare)d Fu(builtins)j(displa)m(y)g(arra)m(y)g +(v)-5 b(alues)37 b(in)g(a)g(w)m(a)m(y)h(that)g(allo)m(ws)150 +2336 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150 +2569 y Fs(6.8)68 b(The)45 b(Directory)g(Stac)l(k)150 +2729 y Fu(The)21 b(directory)h(stac)m(k)h(is)e(a)h(list)g(of)f(recen)m +(tly-visited)j(directories.)39 b(The)20 b Ft(pushd)g +Fu(builtin)h(adds)g(directories)150 2838 y(to)42 b(the)f(stac)m(k)i(as) +e(it)h(c)m(hanges)g(the)f(curren)m(t)g(directory)-8 b(,)45 +b(and)40 b(the)i Ft(popd)e Fu(builtin)g(remo)m(v)m(es)j(sp)s(eci\014ed) +150 2948 y(directories)29 b(from)f(the)h(stac)m(k)h(and)d(c)m(hanges)j +(the)e(curren)m(t)g(directory)h(to)g(the)g(directory)f(remo)m(v)m(ed.) +41 b(The)150 3058 y Ft(dirs)34 b Fu(builtin)g(displa)m(ys)h(the)g(con)m +(ten)m(ts)i(of)e(the)g(directory)h(stac)m(k.)56 b(The)34 +b(curren)m(t)h(directory)g(is)g(alw)m(a)m(ys)150 3167 +y(the)c Ft(")p Fu(top)p Ft(")f Fu(of)g(the)h(directory)g(stac)m(k.)275 +3298 y(The)k(con)m(ten)m(ts)i(of)f(the)h(directory)f(stac)m(k)h(are)f +(also)h(visible)g(as)f(the)g(v)-5 b(alue)36 b(of)g(the)g +Ft(DIRSTACK)e Fu(shell)150 3408 y(v)-5 b(ariable.)150 +3600 y Fk(6.8.1)63 b(Directory)40 b(Stac)m(k)g(Builtins)150 +3768 y Ft(dirs)870 3899 y(dirs)47 b([-clpv])e([+)p Fj(N)i +Ft(|)h(-)p Fj(N)p Ft(])630 4030 y Fu(Displa)m(y)35 b(the)f(list)g(of)g +(curren)m(tly)g(remem)m(b)s(ered)f(directories.)51 b(Directories)36 +b(are)e(added)f(to)630 4140 y(the)28 b(list)h(with)f(the)g +Ft(pushd)f Fu(command;)i(the)f Ft(popd)f Fu(command)h(remo)m(v)m(es)h +(directories)g(from)630 4249 y(the)i(list.)41 b(The)30 +b(curren)m(t)g(directory)h(is)f(alw)m(a)m(ys)i(the)f(\014rst)e +(directory)i(in)f(the)h(stac)m(k.)630 4402 y Ft(-c)384 +b Fu(Clears)31 b(the)f(directory)h(stac)m(k)h(b)m(y)e(deleting)h(all)h +(of)e(the)h(elemen)m(ts.)630 4554 y Ft(-l)384 b Fu(Pro)s(duces)31 +b(a)h(listing)h(using)e(full)h(pathnames;)h(the)f(default)g(listing)h +(format)1110 4664 y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h +(directory)-8 b(.)630 4816 y Ft(-p)384 b Fu(Causes)30 +b Ft(dirs)f Fu(to)i(prin)m(t)f(the)h(directory)g(stac)m(k)h(with)e(one) +g(en)m(try)h(p)s(er)e(line.)630 4968 y Ft(-v)384 b Fu(Causes)36 +b Ft(dirs)f Fu(to)i(prin)m(t)f(the)g(directory)h(stac)m(k)h(with)e(one) +h(en)m(try)f(p)s(er)f(line,)1110 5078 y(pre\014xing)30 +b(eac)m(h)h(en)m(try)g(with)f(its)h(index)e(in)i(the)f(stac)m(k.)630 +5230 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23 b(the)f Fr(N)10 +b Fu(th)21 b(directory)h(\(coun)m(ting)h(from)e(the)h(left)g(of)g(the)g +(list)g(prin)m(ted)1110 5340 y(b)m(y)30 b Ft(dirs)f Fu(when)h(in)m(v)m +(ok)m(ed)i(without)e(options\),)h(starting)g(with)g(zero.)p +eop end +%%Page: 98 104 +TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(98)630 299 y Ft(-)p +Fj(N)384 b Fu(Displa)m(ys)47 b(the)g Fr(N)10 b Fu(th)46 +b(directory)h(\(coun)m(ting)g(from)f(the)g(righ)m(t)h(of)g(the)f(list) +1110 408 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g Fu(when)f(in)m(v)m(ok)m +(ed)j(without)f(options\),)h(starting)g(with)e(zero.)150 +583 y Ft(popd)870 725 y(popd)47 b([-n])f([+)p Fj(N)h +Ft(|)h(-)p Fj(N)p Ft(])630 867 y Fu(When)32 b(no)g(argumen)m(ts)h(are)g +(giv)m(en,)h Ft(popd)d Fu(remo)m(v)m(es)j(the)f(top)f(directory)h(from) +f(the)g(stac)m(k)630 977 y(and)f(p)s(erforms)e(a)j Ft(cd)f +Fu(to)h(the)f(new)g(top)h(directory)-8 b(.)44 b(The)31 +b(elemen)m(ts)i(are)e(n)m(um)m(b)s(ered)f(from)630 1086 +y(0)j(starting)g(at)g(the)f(\014rst)g(directory)g(listed)h(with)f +Ft(dirs)p Fu(;)g(that)h(is,)g Ft(popd)e Fu(is)i(equiv)-5 +b(alen)m(t)33 b(to)630 1196 y Ft(popd)c(+0)p Fu(.)630 +1370 y Ft(-n)384 b Fu(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g +(directory)g(when)e(remo)m(ving)j(directo-)1110 1480 +y(ries)f(from)g(the)h(stac)m(k,)h(so)f(that)g(only)f(the)h(stac)m(k)g +(is)g(manipulated.)630 1655 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22 +b(the)f Fr(N)10 b Fu(th)20 b(directory)g(\(coun)m(ting)i(from)e(the)g +(left)h(of)g(the)f(list)h(prin)m(ted)1110 1764 y(b)m(y)30 +b Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)630 1939 +y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46 b(the)g Fr(N)10 +b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g(righ)m(t)g(of)g +(the)g(list)1110 2048 y(prin)m(ted)30 b(b)m(y)g Ft(dirs)p +Fu(\),)g(starting)h(with)f(zero.)150 2223 y Ft(pushd)870 +2365 y(pushd)46 b([-n])h([+)p Fj(N)g Ft(|)g Fj(-N)h Ft(|)f +Fj(dir)p Ft(])630 2507 y Fu(Sa)m(v)m(e)30 b(the)e(curren)m(t)g +(directory)h(on)f(the)h(top)f(of)h(the)f(directory)h(stac)m(k)h(and)e +(then)g Ft(cd)f Fu(to)i Fr(dir)p Fu(.)630 2617 y(With)39 +b(no)f(argumen)m(ts,)j Ft(pushd)c Fu(exc)m(hanges)j(the)f(top)f(t)m(w)m +(o)i(directories)g(and)d(mak)m(es)j(the)630 2726 y(new)30 +b(top)g(the)h(curren)m(t)f(directory)-8 b(.)630 2901 +y Ft(-n)384 b Fu(Suppresses)24 b(the)j(normal)f(c)m(hange)h(of)g +(directory)f(when)g(rotating)h(or)f(adding)1110 3010 +y(directories)31 b(to)h(the)e(stac)m(k,)i(so)f(that)g(only)f(the)h +(stac)m(k)h(is)e(manipulated.)630 3185 y Ft(+)p Fj(N)384 +b Fu(Brings)29 b(the)f Fr(N)10 b Fu(th)29 b(directory)g(\(coun)m(ting)h +(from)e(the)g(left)i(of)e(the)h(list)g(prin)m(ted)1110 +3295 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the) +f(top)g(of)h(the)f(list)h(b)m(y)f(rotating)i(the)1110 +3404 y(stac)m(k.)630 3579 y Ft(-)p Fj(N)384 b Fu(Brings)23 +b(the)g Fr(N)10 b Fu(th)23 b(directory)h(\(coun)m(ting)g(from)e(the)i +(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 3688 y(b)m(y)34 +b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)f(top)g(of)h +(the)f(list)h(b)m(y)f(rotating)i(the)1110 3798 y(stac)m(k.)630 +3972 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27 +b(the)g(top)g(of)g(the)h(stac)m(k,)h(making)e(it)h(the)f(new)g(curren)m +(t)g(direc-)1110 4082 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied) +f(as)i(an)f(argumen)m(t)h(to)g(the)f Ft(cd)g Fu(builtin.)150 +4345 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150 +4505 y Fu(Bash)33 b(examines)h(the)f(v)-5 b(alue)33 b(of)h(the)f(arra)m +(y)g(v)-5 b(ariable)34 b Ft(PROMPT_COMMANDS)29 b Fu(just)j(b)s(efore)h +(prin)m(ting)g(eac)m(h)150 4614 y(primary)c(prompt.)40 +b(If)30 b(an)m(y)g(elemen)m(ts)i(in)e Ft(PROMPT_COMMANDS)c +Fu(are)31 b(set)f(and)g(non-n)m(ull,)g(Bash)h(executes)150 +4724 y(eac)m(h)h(v)-5 b(alue,)31 b(in)f(n)m(umeric)g(order,)g(just)g +(as)g(if)h(it)g(had)e(b)s(een)h(t)m(yp)s(ed)g(on)g(the)h(command)f +(line.)275 4874 y(In)d(addition,)j(the)f(follo)m(wing)h(table)f +(describ)s(es)f(the)h(sp)s(ecial)g(c)m(haracters)h(whic)m(h)f(can)f +(app)s(ear)g(in)h(the)150 4983 y(prompt)g(v)-5 b(ariables)32 +b Ft(PS0)p Fu(,)d Ft(PS1)p Fu(,)h Ft(PS2)p Fu(,)g(and)f +Ft(PS4)p Fu(:)150 5165 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m +(haracter.)150 5340 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f +Ft(")p Fu(W)-8 b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h +Fu(format)f(\(e.g.,)h Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p +Ft(")p Fu(\).)p eop end +%%Page: 99 105 +TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(99)150 299 y Ft(\\D{)p +Fj(format)p Ft(})630 408 y Fu(The)27 b Fr(format)i Fu(is)f(passed)e(to) +i Ft(strftime)p Fu(\(3\))f(and)f(the)i(result)f(is)g(inserted)g(in)m +(to)h(the)g(prompt)630 518 y(string;)42 b(an)d(empt)m(y)f +Fr(format)j Fu(results)d(in)g(a)h(lo)s(cale-sp)s(eci\014c)h(time)f +(represen)m(tation.)65 b(The)630 628 y(braces)31 b(are)f(required.)150 +790 y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150 +952 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e +(`.'.)150 1114 y Ft(\\H)384 b Fu(The)30 b(hostname.)150 +1276 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m +(tly)h(managed)g(b)m(y)f(the)g(shell.)150 1438 y Ft(\\l)384 +b Fu(The)30 b(basename)h(of)f(the)h(shell's)f(terminal)h(device)g +(name.)150 1600 y Ft(\\n)384 b Fu(A)30 b(newline.)150 +1763 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150 +1925 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f +(basename)f(of)h Ft($0)f Fu(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f +(\014nal)e(slash\).)150 2087 y Ft(\\t)384 b Fu(The)30 +b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 2249 +y Ft(\\T)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.) +150 2411 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f +(format.)150 2573 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h +(HH:MM)g(format.)150 2735 y Ft(\\u)384 b Fu(The)30 b(username)g(of)g +(the)h(curren)m(t)f(user.)150 2898 y Ft(\\v)384 b Fu(The)30 +b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h(2.00\))150 3060 +y Ft(\\V)384 b Fu(The)30 b(release)i(of)e(Bash,)h(v)m(ersion)g +Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150 3222 +y Ft(\\w)384 b Fu(The)34 b(curren)m(t)h(w)m(orking)g(directory)-8 +b(,)37 b(with)e Ft($HOME)e Fu(abbreviated)j(with)e(a)h(tilde)h(\(uses)f +(the)630 3331 y Ft($PROMPT_DIRTRIM)26 b Fu(v)-5 b(ariable\).)150 +3494 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f Ft($PWD)p +Fu(,)g(with)g Ft($HOME)f Fu(abbreviated)h(with)g(a)h(tilde.)150 +3656 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f +(command.)150 3818 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s +(er)f(of)i(this)f(command.)150 3980 y Ft(\\$)384 b Fu(If)30 +b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Ft(#)p Fu(,)g(otherwise)g +Ft($)p Fu(.)150 4142 y Ft(\\)p Fj(nnn)288 b Fu(The)30 +b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o)s(ctal)i(v) +-5 b(alue)31 b Fr(nnn)p Fu(.)150 4304 y Ft(\\\\)384 b +Fu(A)30 b(bac)m(kslash.)150 4466 y Ft(\\[)384 b Fu(Begin)38 +b(a)f(sequence)g(of)g(non-prin)m(ting)g(c)m(haracters.)61 +b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed)g(a)630 +4576 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.) +150 4738 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m +(ting)g(c)m(haracters.)275 4902 y(The)25 b(command)h(n)m(um)m(b)s(er)f +(and)h(the)g(history)g(n)m(um)m(b)s(er)f(are)i(usually)f(di\013eren)m +(t:)39 b(the)26 b(history)g(n)m(um)m(b)s(er)150 5011 +y(of)h(a)f(command)h(is)f(its)h(p)s(osition)f(in)g(the)h(history)f +(list,)i(whic)m(h)f(ma)m(y)g(include)f(commands)g(restored)g(from)150 +5121 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e +(History)h(F)-8 b(acilities],)45 b(page)40 b(146\),)j(while)d(the)f +(command)150 5230 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g +(the)g(sequence)h(of)f(commands)g(executed)h(during)e(the)i(curren)m(t) +f(shell)150 5340 y(session.)p eop end +%%Page: 100 106 +TeXDict begin 100 105 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(100)275 299 y(After)28 +b(the)g(string)g(is)g(deco)s(ded,)g(it)g(is)g(expanded)f(via)i +(parameter)f(expansion,)h(command)f(substitu-)150 408 +y(tion,)g(arithmetic)f(expansion,)g(and)e(quote)i(remo)m(v)-5 +b(al,)29 b(sub)5 b(ject)25 b(to)i(the)f(v)-5 b(alue)27 +b(of)f(the)g Ft(promptvars)e Fu(shell)150 518 y(option)i(\(see)h +(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)j(page)e(66\).)41 +b(This)25 b(can)h(ha)m(v)m(e)h(un)m(w)m(an)m(ted)f(side)g(e\013ects)150 +628 y(if)i(escap)s(ed)f(p)s(ortions)g(of)h(the)g(string)f(app)s(ear)g +(within)g(command)h(substitution)f(or)h(con)m(tain)g(c)m(haracters)150 +737 y(sp)s(ecial)j(to)g(w)m(ord)f(expansion.)150 1015 +y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 1174 y +Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h +Ft(rbash)p Fu(,)e(or)h(the)h Ft(--restricted)30 b Fu(or)k +Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 1284 y(in)m(v)m(o)s(cation,) +d(the)d(shell)g(b)s(ecomes)h(restricted.)40 b(A)27 b(restricted)h +(shell)f(is)g(used)f(to)i(set)f(up)f(an)h(en)m(vironmen)m(t)150 +1393 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40 +b(A)27 b(restricted)h(shell)f(b)s(eha)m(v)m(es)h(iden)m(tically)h(to)f +Ft(bash)e Fu(with)150 1503 y(the)31 b(exception)g(that)g(the)g(follo)m +(wing)h(are)e(disallo)m(w)m(ed)i(or)e(not)h(p)s(erformed:)225 +1662 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f +Ft(cd)g Fu(builtin.)225 1809 y Fq(\017)60 b Fu(Setting)33 +b(or)g(unsetting)f(the)h(v)-5 b(alues)33 b(of)f(the)h +Ft(SHELL)p Fu(,)f Ft(PATH)p Fu(,)g Ft(HISTFILE)p Fu(,)f +Ft(ENV)p Fu(,)h(or)g Ft(BASH_ENV)e Fu(v)-5 b(ari-)330 +1919 y(ables.)225 2065 y Fq(\017)60 b Fu(Sp)s(ecifying)30 +b(command)g(names)g(con)m(taining)i(slashes.)225 2212 +y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m(taining)i +(a)f(slash)f(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(.)h +Fu(builtin)e(command.)225 2359 y Fq(\017)60 b Fu(Sp)s(ecifying)33 +b(a)i(\014lename)f(con)m(taining)h(a)g(slash)e(as)i(an)e(argumen)m(t)i +(to)g(the)f Ft(history)e Fu(builtin)h(com-)330 2469 y(mand.)225 +2615 y Fq(\017)60 b Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m +(taining)h(a)e(slash)g(as)h(an)f(argumen)m(t)h(to)g(the)f +Ft(-p)g Fu(option)h(to)g(the)f Ft(hash)330 2725 y Fu(builtin)e +(command.)225 2872 y Fq(\017)60 b Fu(Imp)s(orting)30 +b(function)g(de\014nitions)g(from)f(the)i(shell)g(en)m(vironmen)m(t)g +(at)g(startup.)225 3018 y Fq(\017)60 b Fu(P)m(arsing)31 +b(the)f(v)-5 b(alue)31 b(of)g Ft(SHELLOPTS)d Fu(from)h(the)i(shell)g +(en)m(vironmen)m(t)g(at)g(startup.)225 3165 y Fq(\017)60 +b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p Ft(>)p +Fu(',)g(`)p Ft(>|)p Fu(',)f(`)p Ft(<>)p Fu(',)h(`)p Ft(>&)p +Fu(',)f(`)p Ft(&>)p Fu(',)h(and)e(`)p Ft(>>)p Fu(')i(redirection)g(op)s +(erators.)225 3312 y Fq(\017)60 b Fu(Using)31 b(the)f +Ft(exec)f Fu(builtin)h(to)h(replace)h(the)e(shell)h(with)f(another)h +(command.)225 3459 y Fq(\017)60 b Fu(Adding)24 b(or)g(deleting)i +(builtin)e(commands)g(with)h(the)f Ft(-f)g Fu(and)g Ft(-d)g +Fu(options)h(to)h(the)e Ft(enable)f Fu(builtin.)225 3606 +y Fq(\017)60 b Fu(Using)31 b(the)f Ft(enable)f Fu(builtin)h(command)g +(to)h(enable)g(disabled)f(shell)g(builtins.)225 3752 +y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(the)g Ft(-p)g Fu(option)h(to)g +(the)g Ft(command)d Fu(builtin.)225 3899 y Fq(\017)60 +b Fu(T)-8 b(urning)29 b(o\013)i(restricted)g(mo)s(de)f(with)g(`)p +Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(set)g(+o)g(restricted)p +Fu('.)275 4096 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m +(y)g(startup)f(\014les)g(are)h(read.)275 4255 y(When)j(a)i(command)e +(that)i(is)f(found)f(to)h(b)s(e)g(a)g(shell)g(script)g(is)g(executed)h +(\(see)g(Section)g(3.8)g([Shell)150 4364 y(Scripts],)25 +b(page)e(42\),)j Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h +(in)f(the)g(shell)h(spa)m(wned)e(to)i(execute)g(the)g(script.)275 +4523 y(The)42 b(restricted)h(shell)g(mo)s(de)f(is)g(only)h(one)g(comp)s +(onen)m(t)f(of)h(a)g(useful)f(restricted)h(en)m(vironmen)m(t.)150 +4633 y(It)36 b(should)g(b)s(e)f(accompanied)j(b)m(y)e(setting)h +Ft(PATH)e Fu(to)i(a)g(v)-5 b(alue)37 b(that)g(allo)m(ws)g(execution)h +(of)e(only)h(a)f(few)150 4743 y(v)m(eri\014ed)26 b(commands)g +(\(commands)g(that)h(allo)m(w)h(shell)f(escap)s(es)f(are)h +(particularly)g(vulnerable\),)g(lea)m(ving)150 4852 y(the)i(user)f(in)h +(a)g(non-writable)h(directory)f(other)g(than)g(his)g(home)g(directory)g +(after)h(login,)g(not)f(allo)m(wing)150 4962 y(the)j(restricted)g +(shell)g(to)g(execute)h(shell)e(scripts,)h(and)f(cleaning)i(the)e(en)m +(vironmen)m(t)i(of)e(v)-5 b(ariables)32 b(that)150 5071 +y(cause)f(some)g(commands)f(to)h(mo)s(dify)e(their)i(b)s(eha)m(vior)f +(\(e.g.,)j Ft(VISUAL)28 b Fu(or)j Ft(PAGER)p Fu(\).)275 +5230 y(Mo)s(dern)e(systems)g(pro)m(vide)h(more)g(secure)g(w)m(a)m(ys)g +(to)h(implemen)m(t)f(a)g(restricted)h(en)m(vironmen)m(t,)f(suc)m(h)150 +5340 y(as)h Ft(jails)p Fu(,)e Ft(zones)p Fu(,)g(or)h +Ft(containers)p Fu(.)p eop end +%%Page: 101 107 +TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(101)150 299 y Fs(6.11)68 +b(Bash)45 b(POSIX)f(Mo)t(de)150 458 y Fu(Starting)39 +b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j(option)g(or)f +(executing)h(`)p Ft(set)30 b(-o)g(posix)p Fu(')37 b(while)150 +568 y(Bash)26 b(is)g(running)e(will)j(cause)f(Bash)g(to)h(conform)f +(more)g(closely)h(to)g(the)f Fm(posix)f Fu(standard)g(b)m(y)h(c)m +(hanging)150 677 y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g(sp) +s(eci\014ed)f(b)m(y)g Fm(posix)g Fu(in)g(areas)h(where)f(the)h(Bash)f +(default)h(di\013ers.)275 810 y(When)f(in)m(v)m(ok)m(ed)h(as)g +Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e Fu(mo)s(de)h(after)h +(reading)g(the)f(startup)g(\014les.)275 942 y(The)f(follo)m(wing)j +(list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p Fm(posix)h +Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 1074 y(1.)61 b(Bash)31 +b(ensures)e(that)i(the)f Ft(POSIXLY_CORRECT)d Fu(v)-5 +b(ariable)31 b(is)f(set.)199 1206 y(2.)61 b(When)28 b(a)i(command)e(in) +g(the)h(hash)f(table)i(no)e(longer)h(exists,)h(Bash)f(will)g(re-searc)m +(h)h Ft($PATH)d Fu(to)i(\014nd)330 1316 y(the)i(new)e(lo)s(cation.)43 +b(This)29 b(is)i(also)g(a)m(v)-5 b(ailable)33 b(with)d(`)p +Ft(shopt)f(-s)h(checkhash)p Fu('.)199 1448 y(3.)61 b(Bash)36 +b(will)g(not)g(insert)g(a)g(command)f(without)h(the)g(execute)h(bit)f +(set)g(in)m(to)h(the)f(command)g(hash)330 1558 y(table,)c(ev)m(en)f(if) +f(it)h(returns)e(it)i(as)g(a)f(\(last-ditc)m(h\))j(result)d(from)g(a)h +Ft($PATH)e Fu(searc)m(h.)199 1690 y(4.)61 b(The)42 b(message)h(prin)m +(ted)e(b)m(y)h(the)g(job)g(con)m(trol)i(co)s(de)e(and)f(builtins)h +(when)f(a)h(job)g(exits)h(with)f(a)330 1800 y(non-zero)31 +b(status)g(is)f(`Done\(status\)'.)199 1932 y(5.)61 b(The)40 +b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con)m(trol)h(co)s(de)g +(and)f(builtins)f(when)h(a)g(job)g(is)h(stopp)s(ed)e(is)330 +2041 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 b(where)f +Fr(signame)36 b Fu(is,)31 b(for)f(example,)h Ft(SIGTSTP)p +Fu(.)199 2174 y(6.)61 b(Alias)31 b(expansion)g(is)f(alw)m(a)m(ys)i +(enabled,)e(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)199 +2306 y(7.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con) +m(text)i(where)d(reserv)m(ed)h(w)m(ords)f(are)i(recognized)g(do)f(not) +330 2415 y(undergo)30 b(alias)h(expansion.)199 2548 y(8.)61 +b(The)38 b Fm(posix)h Ft(PS1)f Fu(and)g Ft(PS2)g Fu(expansions)g(of)i +(`)p Ft(!)p Fu(')f(to)g(the)g(history)g(n)m(um)m(b)s(er)f(and)g(`)p +Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 2657 y(enabled,)26 +b(and)f(parameter)g(expansion)g(is)g(p)s(erformed)e(on)i(the)g(v)-5 +b(alues)25 b(of)g Ft(PS1)f Fu(and)h Ft(PS2)f Fu(regardless)330 +2767 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c +Fu(option.)199 2899 y(9.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les) +i(are)g(executed)g(\()p Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal) +f(Bash)g(\014les.)154 3031 y(10.)61 b(Tilde)30 b(expansion)g(is)f(only) +h(p)s(erformed)f(on)h(assignmen)m(ts)g(preceding)g(a)g(command)g(name,) +g(rather)330 3141 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h +(on)e(the)h(line.)154 3273 y(11.)61 b(The)30 b(default)g(history)h +(\014le)f(is)h Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default) +g(v)-5 b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 3405 +y(12.)61 b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f +(\014lename)h(expansion)g(on)g(the)g(w)m(ord)f(in)h(the)g(redirection) +330 3515 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 +3647 y(13.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e +(w)m(ord)h(splitting)h(on)f(the)h(w)m(ord)f(in)g(the)g(redirection.)154 +3779 y(14.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5 +b(alid)35 b(shell)f Ft(name)p Fu(s.)52 b(That)34 b(is,)i(they)f(ma)m(y) +g(not)g(con)m(tain)g(c)m(haracters)330 3889 y(other)e(than)g(letters,)h +(digits,)h(and)d(underscores,)h(and)f(ma)m(y)h(not)g(start)h(with)e(a)h +(digit.)49 b(Declaring)330 3999 y(a)31 b(function)f(with)g(an)g(in)m(v) +-5 b(alid)31 b(name)g(causes)f(a)h(fatal)h(syn)m(tax)f(error)f(in)g +(non-in)m(teractiv)m(e)j(shells.)154 4131 y(15.)61 b(F)-8 +b(unction)31 b(names)f(ma)m(y)h(not)g(b)s(e)f(the)g(same)h(as)g(one)f +(of)h(the)f Fm(posix)g Fu(sp)s(ecial)h(builtins.)154 +4263 y(16.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e +(b)s(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)154 +4395 y(17.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f +(de\014nitions)g(\(e.g.,)55 b(b)m(y)48 b Ft(type)p Fu(\),)k(Bash)d(do)s +(es)f(not)h(prin)m(t)f(the)330 4505 y Ft(function)28 +b Fu(k)m(eyw)m(ord.)154 4637 y(18.)61 b(Literal)28 b(tildes)g(that)f +(app)s(ear)f(as)i(the)f(\014rst)f(c)m(haracter)j(in)d(elemen)m(ts)j(of) +e(the)g Ft(PATH)f Fu(v)-5 b(ariable)27 b(are)h(not)330 +4747 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section) +i(3.5.2)h([Tilde)f(Expansion],)f(page)h(24.)154 4879 +y(19.)61 b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s +(e)g(used)f(b)m(y)h(itself)g(as)g(a)h(command.)40 b(When)30 +b(used)f(in)g(this)h(w)m(a)m(y)-8 b(,)330 4989 y(it)33 +b(displa)m(ys)g(timing)g(statistics)h(for)e(the)h(shell)g(and)f(its)g +(completed)i(c)m(hildren.)47 b(The)32 b Ft(TIMEFORMAT)330 +5098 y Fu(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f +(timing)h(information.)154 5230 y(20.)61 b(When)33 b(parsing)g(and)f +(expanding)h(a)h($)p Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33 +b Fu(expansion)g(that)h(app)s(ears)f(within)f(double)h(quotes,)330 +5340 y(single)42 b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f +(cannot)i(b)s(e)e(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)p +eop end +%%Page: 102 108 +TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(102)330 299 y(other)31 +b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s(erator)f(is)g(one)h +(of)f(those)h(de\014ned)e(to)i(p)s(erform)e(pattern)330 +408 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)e(do)g(not)h +(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154 +547 y(21.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h +Ft(time)d Fu(as)i(a)g(reserv)m(ed)f(w)m(ord)g(if)h(the)f(next)h(tok)m +(en)h(b)s(egins)d(with)i(a)330 656 y(`)p Ft(-)p Fu('.)154 +795 y(22.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e(not) +h(in)m(tro)s(duce)g(history)f(expansion)h(within)f(a)h(double-quoted)g +(string,)330 905 y(ev)m(en)g(if)f(the)h Ft(histexpand)d +Fu(option)i(is)h(enabled.)154 1043 y(23.)61 b(If)24 b(a)g +Fm(posix)g Fu(sp)s(ecial)h(builtin)f(returns)f(an)h(error)g(status,)i +(a)e(non-in)m(teractiv)m(e)j(shell)e(exits.)39 b(The)24 +b(fatal)330 1153 y(errors)30 b(are)h(those)f(listed)h(in)f(the)h +Fm(posix)e Fu(standard,)h(and)g(include)g(things)g(lik)m(e)i(passing)e +(incorrect)330 1262 y(options,)43 b(redirection)d(errors,)i(v)-5 +b(ariable)41 b(assignmen)m(t)g(errors)e(for)g(assignmen)m(ts)i +(preceding)f(the)330 1372 y(command)30 b(name,)h(and)f(so)g(on.)154 +1510 y(24.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e +(an)h(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g +(error)e(o)s(ccurs)330 1620 y(when)38 b(no)h(command)g(name)g(follo)m +(ws)i(the)e(assignmen)m(t)h(statemen)m(ts.)69 b(A)39 +b(v)-5 b(ariable)40 b(assignmen)m(t)330 1729 y(error)30 +b(o)s(ccurs,)g(for)g(example,)i(when)d(trying)i(to)g(assign)f(a)h(v)-5 +b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)154 1868 +y(25.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e(an)h +(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g(error)e +(o)s(ccurs)330 1977 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g +(preceding)e(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f +(other)h(simple)330 2087 y(command.)154 2225 y(26.)61 +b(A)43 b(non-in)m(teractiv)m(e)i(shell)e(exits)h(with)f(an)f(error)h +(status)g(if)g(the)g(iteration)h(v)-5 b(ariable)44 b(in)f(a)g +Ft(for)330 2335 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5 +b(ariable)32 b(in)e(a)g Ft(select)f Fu(statemen)m(t)j(is)f(a)f +(readonly)h(v)-5 b(ariable.)154 2473 y(27.)61 b(Non-in)m(teractiv)m(e) +34 b(shells)c(exit)h(if)g Fr(\014lename)k Fu(in)30 b +Ft(.)g Fr(\014lename)36 b Fu(is)31 b(not)f(found.)154 +2612 y(28.)61 b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g +(syn)m(tax)g(error)g(in)f(an)h(arithmetic)h(expansion)f(results)f(in)h +(an)330 2721 y(in)m(v)-5 b(alid)31 b(expression.)154 +2860 y(29.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f +(parameter)h(expansion)g(error)f(o)s(ccurs.)154 2998 +y(30.)61 b(Non-in)m(teractiv)m(e)27 b(shells)c(exit)i(if)e(there)h(is)f +(a)h(syn)m(tax)g(error)f(in)g(a)h(script)f(read)g(with)h(the)f +Ft(.)g Fu(or)h Ft(source)330 3108 y Fu(builtins,)30 b(or)g(in)g(a)h +(string)g(pro)s(cessed)e(b)m(y)i(the)f Ft(eval)f Fu(builtin.)154 +3246 y(31.)61 b(While)32 b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m +(v)-5 b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s(e)g(applied)g(to)g(the)h +(`)p Ft(#)p Fu(')f(and)f(`)p Ft(?)p Fu(')h(sp)s(ecial)330 +3356 y(parameters.)154 3494 y(32.)61 b(When)28 b(expanding)g(the)g(`)p +Ft(*)p Fu(')g(sp)s(ecial)h(parameter)f(in)g(a)h(pattern)f(con)m(text)i +(where)e(the)g(expansion)g(is)330 3604 y(double-quoted)i(do)s(es)g(not) +h(treat)h(the)e Ft($*)g Fu(as)h(if)f(it)h(w)m(ere)g(double-quoted.)154 +3742 y(33.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e +Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s(ersist)g(in)f(the)i(shell)f +(en)m(vironmen)m(t)330 3852 y(after)31 b(the)f(builtin)g(completes.)154 +3990 y(34.)61 b(The)31 b Ft(command)e Fu(builtin)i(do)s(es)g(not)h +(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e)h(assignmen)m(t)f(statemen)m +(ts)h(as)f(ar-)330 4100 y(gumen)m(ts)40 b(from)e(expanding)h(them)g(as) +h(assignmen)m(t)g(statemen)m(ts;)46 b(when)38 b(not)i(in)f +Fm(posix)f Fu(mo)s(de,)330 4209 y(assignmen)m(t)k(builtins)e(lose)h +(their)g(assignmen)m(t)h(statemen)m(t)h(expansion)d(prop)s(erties)g +(when)g(pre-)330 4319 y(ceded)31 b(b)m(y)f Ft(command)p +Fu(.)154 4457 y(35.)61 b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h +(required)f(format)h(to)g(describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f +(the)h(bac)m(kground,)330 4567 y(whic)m(h)h(do)s(es)g(not)g(include)g +(an)g(indication)h(of)f(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e +(or)h(previous)g(job.)154 4706 y(36.)61 b(The)23 b(output)f(of)i(`)p +Ft(kill)29 b(-l)p Fu(')23 b(prin)m(ts)f(all)i(the)g(signal)f(names)g +(on)g(a)h(single)g(line,)h(separated)e(b)m(y)g(spaces,)330 +4815 y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 +4954 y(37.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept) +h(signal)f(names)f(with)g(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 +5092 y(38.)61 b(The)38 b Ft(export)f Fu(and)g Ft(readonly)f +Fu(builtin)i(commands)g(displa)m(y)h(their)f(output)g(in)g(the)h +(format)g(re-)330 5202 y(quired)30 b(b)m(y)g Fm(posix)p +Fu(.)154 5340 y(39.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g +(signal)i(names)e(without)g(the)h(leading)g Ft(SIG)p +Fu(.)p eop end +%%Page: 103 109 +TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(103)154 299 y(40.)61 +b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g(c)m(hec)m(k)h(the)g +(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e(signal)i(sp)s +(eci\014cation)330 408 y(and)30 b(rev)m(ert)i(the)e(signal)i(handling)e +(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g(is,)g(unless)f(that)h +(argumen)m(t)330 518 y(consists)e(solely)g(of)g(digits)g(and)f(is)g(a)h +(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38 b(If)28 +b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330 +628 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s +(osition,)f(they)g(should)f(use)h(`)p Ft(-)p Fu(')g(as)g(the)g(\014rst) +f(argumen)m(t.)154 765 y(41.)61 b Ft(trap)29 b(-p)35 +b Fu(displa)m(ys)h(signals)h(whose)f(disp)s(ositions)f(are)h(set)h(to)f +(SIG)p 2687 765 28 4 v 40 w(DFL)g(and)g(those)g(that)g(w)m(ere)330 +874 y(ignored)30 b(when)g(the)g(shell)h(started.)154 +1011 y(42.)61 b(The)21 b Ft(.)h Fu(and)f Ft(source)f +Fu(builtins)h(do)g(not)h(searc)m(h)h(the)f(curren)m(t)f(directory)h +(for)g(the)g(\014lename)f(argumen)m(t)330 1121 y(if)30 +b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g Ft(PATH)p +Fu(.)154 1258 y(43.)61 b(Enabling)21 b Fm(posix)g Fu(mo)s(de)g(has)g +(the)g(e\013ect)i(of)e(setting)i(the)e Ft(inherit_errexit)d +Fu(option,)23 b(so)f(subshells)330 1367 y(spa)m(wned)27 +b(to)i(execute)g(command)e(substitutions)h(inherit)f(the)h(v)-5 +b(alue)28 b(of)g(the)g Ft(-e)f Fu(option)h(from)g(the)330 +1477 y(paren)m(t)37 b(shell.)62 b(When)37 b(the)g Ft(inherit_errexit)c +Fu(option)38 b(is)f(not)h(enabled,)h(Bash)e(clears)h(the)g +Ft(-e)330 1587 y Fu(option)31 b(in)f(suc)m(h)g(subshells.)154 +1724 y(44.)61 b(Enabling)32 b Fm(posix)f Fu(mo)s(de)h(has)g(the)h +(e\013ect)g(of)g(setting)g(the)g Ft(shift_verbose)28 +b Fu(option,)34 b(so)e(n)m(umeric)330 1833 y(argumen)m(ts)f(to)g +Ft(shift)f Fu(that)h(exceed)h(the)e(n)m(um)m(b)s(er)g(of)h(p)s +(ositional)g(parameters)g(will)g(result)g(in)f(an)330 +1943 y(error)g(message.)154 2080 y(45.)61 b(When)43 b(the)g +Ft(alias)f Fu(builtin)g(displa)m(ys)i(alias)g(de\014nitions,)i(it)d(do) +s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330 2189 y(leading)31 +b(`)p Ft(alias)e Fu(')i(unless)f(the)g Ft(-p)g Fu(option)h(is)f +(supplied.)154 2326 y(46.)61 b(When)40 b(the)g Ft(set)f +Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h(without)f(options,)j(it)e(do)s(es) +f(not)g(displa)m(y)g(shell)g(function)330 2436 y(names)30 +b(and)g(de\014nitions.)154 2573 y(47.)61 b(When)36 b(the)g +Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok)m(ed)i(without)e(options,)i(it)f +(displa)m(ys)f(v)-5 b(ariable)37 b(v)-5 b(alues)37 b(without)330 +2682 y(quotes,)26 b(unless)d(they)i(con)m(tain)g(shell)f(metac)m +(haracters,)k(ev)m(en)d(if)f(the)g(result)g(con)m(tains)i(nonprin)m +(ting)330 2792 y(c)m(haracters.)154 2929 y(48.)61 b(When)35 +b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)i(in)d +Fr(logical)41 b Fu(mo)s(de,)36 b(and)f(the)g(pathname)g(constructed)g +(from)330 3039 y Ft($PWD)i Fu(and)h(the)h(directory)f(name)h(supplied)e +(as)i(an)f(argumen)m(t)h(do)s(es)f(not)g(refer)h(to)g(an)f(existing)330 +3148 y(directory)-8 b(,)32 b Ft(cd)d Fu(will)i(fail)g(instead)g(of)f +(falling)h(bac)m(k)h(to)f Fr(ph)m(ysical)j Fu(mo)s(de.)154 +3285 y(49.)61 b(When)37 b(the)h Ft(cd)f Fu(builtin)g(cannot)h(c)m +(hange)h(a)f(directory)g(b)s(ecause)g(the)g(length)g(of)f(the)h +(pathname)330 3395 y(constructed)52 b(from)f Ft($PWD)f +Fu(and)g(the)i(directory)g(name)f(supplied)f(as)i(an)f(argumen)m(t)h +(exceeds)330 3504 y Fr(P)-8 b(A)g(TH)p 584 3504 V 41 +w(MAX)42 b Fu(when)31 b(all)j(sym)m(b)s(olic)e(links)h(are)f(expanded,) +h Ft(cd)f Fu(will)g(fail)h(instead)g(of)g(attempting)330 +3614 y(to)e(use)f(only)h(the)f(supplied)f(directory)i(name.)154 +3751 y(50.)61 b(The)36 b Ft(pwd)f Fu(builtin)h(v)m(eri\014es)h(that)g +(the)f(v)-5 b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h +(curren)m(t)f(directory)-8 b(,)330 3861 y(ev)m(en)31 +b(if)f(it)h(is)g(not)f(ask)m(ed)h(to)g(c)m(hec)m(k)h(the)f(\014le)f +(system)h(with)f(the)h Ft(-P)e Fu(option.)154 3998 y(51.)61 +b(When)35 b(listing)g(the)g(history)-8 b(,)36 b(the)f +Ft(fc)g Fu(builtin)f(do)s(es)g(not)h(include)g(an)f(indication)i(of)f +(whether)f(or)330 4107 y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g +(mo)s(di\014ed.)154 4244 y(52.)61 b(The)30 b(default)g(editor)h(used)f +(b)m(y)g Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 4381 y(53.)61 +b(The)37 b Ft(type)g Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g +(rep)s(ort)f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330 +4491 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g +(execute)g(suc)m(h)f(a)g(\014le)g(if)g(it)g(is)g(the)g(only)g(so-named) +g(\014le)330 4600 y(found)i(in)h Ft($PATH)p Fu(.)154 +4737 y(54.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m +(ok)m(e)i(the)e Ft(vi)g Fu(editor)h(directly)f(when)f(the)i(`)p +Ft(v)p Fu(')f(command)g(is)g(run,)330 4847 y(instead)e(of)f(c)m(hec)m +(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 4984 +y(55.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j +(Bash)d(do)s(es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330 +5093 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54 +b(Eac)m(h)35 b(argumen)m(t)g(is)f(displa)m(y)m(ed,)j(after)e(escap)s(e) +g(c)m(haracters)h(are)330 5203 y(con)m(v)m(erted.)154 +5340 y(56.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m +(k)g(size)g(of)g(512)g(b)m(ytes)g(for)f(the)h Ft(-c)f +Fu(and)g Ft(-f)f Fu(options.)p eop end +%%Page: 104 110 +TeXDict begin 104 109 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(104)154 299 y(57.)61 +b(The)39 b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g +(is)g(set)h(on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g +Ft(wait)330 408 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f +(immediately)-8 b(.)62 b(The)37 b(trap)f(command)h(is)g(run)e(once)j +(for)f(eac)m(h)330 518 y(c)m(hild)31 b(that)g(exits.)154 +654 y(58.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m +(terrupted)h(b)m(y)g(a)h(signal)f(for)g(whic)m(h)g(a)h(trap)f(has)g(b)s +(een)f(set.)40 b(If)27 b(Bash)330 764 y(receiv)m(es)41 +b(a)f(trapp)s(ed)e(signal)i(while)f(executing)h Ft(read)p +Fu(,)h(the)e(trap)h(handler)e(executes)i(and)f Ft(read)330 +874 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)154 +1010 y(59.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e +(pro)s(cess's)h(status)g(from)f(the)h(list)g(of)g(suc)m(h)f(statuses)h +(after)330 1119 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)g(to)h(obtain) +g(it.)275 1284 y(There)j(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h +(that)g(Bash)g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m +(en)i(when)d(in)150 1394 y Fm(posix)d Fu(mo)s(de.)40 +b(Sp)s(eci\014cally:)199 1532 y(1.)61 b(The)30 b Ft(fc)f +Fu(builtin)h(c)m(hec)m(ks)i Ft($EDITOR)c Fu(as)j(a)f(program)g(to)h +(edit)g(history)f(en)m(tries)h(if)f Ft(FCEDIT)f Fu(is)h(unset,)330 +1641 y(rather)g(than)g(defaulting)h(directly)g(to)g Ft(ed)p +Fu(.)40 b Ft(fc)30 b Fu(uses)g Ft(ed)g Fu(if)g Ft(EDITOR)f +Fu(is)h(unset.)199 1778 y(2.)61 b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i +(Bash)e(requires)g(the)g Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e +(enabled)h(for)g(the)g Ft(echo)f Fu(builtin)330 1887 +y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 2052 y(Bash)c(can)g(b)s(e)f +(con\014gured)h(to)g(b)s(e)g Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g +(default,)h(b)m(y)f(sp)s(ecifying)g(the)g Ft(--enable-)150 +2162 y(strict-posix-default)c Fu(to)27 b Ft(configure)e +Fu(when)h(building)h(\(see)h(Section)g(10.8)g([Optional)g(F)-8 +b(eatures],)150 2271 y(page)31 b(155\).)150 2518 y Fs(6.12)68 +b(Shell)46 b(Compatibilit)l(y)h(Mo)t(de)150 2677 y Fu(Bash-4.0)30 +b(in)m(tro)s(duced)d(the)i(concept)g(of)f(a)h(`shell)f(compatibilit)m +(y)i(lev)m(el',)h(sp)s(eci\014ed)d(as)g(a)h(set)f(of)h(options)150 +2786 y(to)i(the)f(shopt)g(builtin)g(\()p Ft(compat31)p +Fu(,)e Ft(compat32)p Fu(,)h Ft(compat40)p Fu(,)f Ft(compat41)p +Fu(,)g(and)i(so)g(on\).)41 b(There)30 b(is)g(only)150 +2896 y(one)f(curren)m(t)f(compatibilit)m(y)j(lev)m(el)f({)f(eac)m(h)h +(option)f(is)g(m)m(utually)g(exclusiv)m(e.)41 b(The)28 +b(compatibilit)m(y)j(lev)m(el)150 3006 y(is)39 b(in)m(tended)g(to)h +(allo)m(w)g(users)e(to)i(select)h(b)s(eha)m(vior)e(from)f(previous)h(v) +m(ersions)g(that)h(is)f(incompatible)150 3115 y(with)d(new)m(er)g(v)m +(ersions)g(while)g(they)g(migrate)h(scripts)f(to)h(use)f(curren)m(t)f +(features)i(and)e(b)s(eha)m(vior.)58 b(It's)150 3225 +y(in)m(tended)30 b(to)h(b)s(e)f(a)h(temp)s(orary)f(solution.)275 +3363 y(This)k(section)j(do)s(es)e(not)h(men)m(tion)g(b)s(eha)m(vior)g +(that)g(is)f(standard)g(for)g(a)h(particular)g(v)m(ersion)g(\(e.g.,)150 +3473 y(setting)24 b Ft(compat32)e Fu(means)h(that)h(quoting)g(the)f +(rhs)g(of)g(the)h(regexp)f(matc)m(hing)i(op)s(erator)e(quotes)h(sp)s +(ecial)150 3582 y(regexp)31 b(c)m(haracters)g(in)g(the)f(w)m(ord,)g +(whic)m(h)g(is)h(default)f(b)s(eha)m(vior)h(in)f(bash-3.2)h(and)f(ab)s +(o)m(v)m(e\).)275 3720 y(If)f(a)h(user)f(enables,)h(sa)m(y)-8 +b(,)31 b Ft(compat32)p Fu(,)d(it)i(ma)m(y)g(a\013ect)h(the)f(b)s(eha)m +(vior)g(of)g(other)g(compatibilit)m(y)h(lev)m(els)150 +3830 y(up)23 b(to)h(and)f(including)h(the)g(curren)m(t)f(compatibilit)m +(y)j(lev)m(el.)41 b(The)23 b(idea)h(is)g(that)g(eac)m(h)h(compatibilit) +m(y)h(lev)m(el)150 3939 y(con)m(trols)35 b(b)s(eha)m(vior)f(that)g(c)m +(hanged)g(in)f(that)h(v)m(ersion)g(of)g(Bash,)h(but)e(that)h(b)s(eha)m +(vior)g(ma)m(y)g(ha)m(v)m(e)h(b)s(een)150 4049 y(presen)m(t)f(in)g +(earlier)g(v)m(ersions.)52 b(F)-8 b(or)35 b(instance,)g(the)f(c)m +(hange)h(to)g(use)f(lo)s(cale-based)h(comparisons)f(with)150 +4159 y(the)e Ft([[)f Fu(command)g(came)h(in)g(bash-4.1,)h(and)d +(earlier)j(v)m(ersions)f(used)f(ASCI)s(I-based)f(comparisons,)i(so)150 +4268 y(enabling)27 b Ft(compat32)e Fu(will)i(enable)g(ASCI)s(I-based)e +(comparisons)i(as)g(w)m(ell.)41 b(That)26 b(gran)m(ularit)m(y)i(ma)m(y) +g(not)150 4378 y(b)s(e)i(su\016cien)m(t)i(for)f(all)g(uses,)g(and)g(as) +g(a)g(result)g(users)f(should)g(emplo)m(y)i(compatibilit)m(y)h(lev)m +(els)g(carefully)-8 b(.)150 4487 y(Read)31 b(the)f(do)s(cumen)m(tation) +h(for)g(a)f(particular)h(feature)g(to)g(\014nd)e(out)h(the)h(curren)m +(t)f(b)s(eha)m(vior.)275 4625 y(Bash-4.3)44 b(in)m(tro)s(duced)e(a)h +(new)f(shell)h(v)-5 b(ariable:)65 b Ft(BASH_COMPAT)p +Fu(.)75 b(The)42 b(v)-5 b(alue)43 b(assigned)g(to)g(this)150 +4735 y(v)-5 b(ariable)32 b(\(a)g(decimal)h(v)m(ersion)e(n)m(um)m(b)s +(er)f(lik)m(e)j(4.2,)g(or)e(an)h(in)m(teger)g(corresp)s(onding)f(to)h +(the)f Ft(compat)p Fr(NN)150 4845 y Fu(option,)g(lik)m(e)h(42\))f +(determines)g(the)f(compatibilit)m(y)j(lev)m(el.)275 +4983 y(Starting)e(with)g(bash-4.4,)h(Bash)f(has)g(b)s(egun)f +(deprecating)h(older)h(compatibilit)m(y)h(lev)m(els.)44 +b(Ev)m(en)m(tu-)150 5092 y(ally)-8 b(,)32 b(the)e(options)h(will)g(b)s +(e)f(remo)m(v)m(ed)h(in)f(fa)m(v)m(or)i(of)e Ft(BASH_COMPAT)p +Fu(.)275 5230 y(Bash-5.0)36 b(is)f(the)g(\014nal)f(v)m(ersion)i(for)e +(whic)m(h)h(there)g(will)g(b)s(e)f(an)h(individual)f(shopt)h(option)g +(for)g(the)150 5340 y(previous)30 b(v)m(ersion.)41 b(Users)30 +b(should)g(use)g Ft(BASH_COMPAT)d Fu(on)j(bash-5.0)h(and)f(later)i(v)m +(ersions.)p eop end +%%Page: 105 111 +TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(105)275 299 y(The)24 +b(follo)m(wing)i(table)g(describ)s(es)e(the)i(b)s(eha)m(vior)f(c)m +(hanges)h(con)m(trolled)g(b)m(y)f(eac)m(h)h(compatibilit)m(y)h(lev)m +(el)150 408 y(setting.)43 b(The)30 b Ft(compat)p Fr(NN)39 +b Fu(tag)32 b(is)f(used)f(as)h(shorthand)e(for)h(setting)i(the)f +(compatibilit)m(y)i(lev)m(el)f(to)g Fr(NN)150 518 y Fu(using)37 +b(one)h(of)g(the)g(follo)m(wing)h(mec)m(hanisms.)63 b(F)-8 +b(or)39 b(v)m(ersions)f(prior)f(to)h(bash-5.0,)j(the)d(compatibilit)m +(y)150 628 y(lev)m(el)d(ma)m(y)f(b)s(e)e(set)i(using)e(the)i(corresp)s +(onding)e Ft(compat)p Fr(NN)41 b Fu(shopt)33 b(option.)50 +b(F)-8 b(or)34 b(bash-4.3)f(and)g(later)150 737 y(v)m(ersions,)40 +b(the)e Ft(BASH_COMPAT)d Fu(v)-5 b(ariable)39 b(is)e(preferred,)i(and)e +(it)i(is)f(required)f(for)g(bash-5.1)i(and)e(later)150 +847 y(v)m(ersions.)150 1025 y Ft(compat31)705 1165 y +Fq(\017)60 b Fu(quoting)34 b(the)g(rhs)e(of)i(the)f Ft([[)g +Fu(command's)h(regexp)f(matc)m(hing)i(op)s(erator)f(\(=)p +Ft(~)p Fu(\))f(has)810 1275 y(no)d(sp)s(ecial)h(e\013ect)150 +1446 y Ft(compat32)705 1587 y Fq(\017)60 b Fu(in)m(terrupting)28 +b(a)g(command)g(list)h(suc)m(h)f(as)g Ft(")p Fu(a)g(;)h(b)f(;)h(c)p +Ft(")f Fu(causes)h(the)f(execution)h(of)g(the)810 1697 +y(next)j(command)f(in)g(the)h(list)g(\(in)f(bash-4.0)h(and)f(later)i(v) +m(ersions,)f(the)g(shell)f(acts)i(as)810 1806 y(if)i(it)i(receiv)m(ed)f +(the)g(in)m(terrupt,)h(so)f(in)m(terrupting)f(one)h(command)f(in)g(a)h +(list)g(ab)s(orts)810 1916 y(the)31 b(execution)g(of)g(the)f(en)m(tire) +i(list\))150 2087 y Ft(compat40)705 2228 y Fq(\017)60 +b Fu(the)35 b(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')g(op)s(erators)h +(to)g(the)g Ft([[)f Fu(command)h(do)f(not)h(consider)f(the)h(curren)m +(t)810 2338 y(lo)s(cale)41 b(when)d(comparing)i(strings;)k(they)c(use)f +(ASCI)s(I)f(ordering.)67 b(Bash)40 b(v)m(ersions)810 +2447 y(prior)f(to)i(bash-4.1)f(use)g(ASCI)s(I)e(collation)k(and)d +(strcmp\(3\);)45 b(bash-4.1)c(and)e(later)810 2557 y(use)30 +b(the)h(curren)m(t)f(lo)s(cale's)i(collation)h(sequence)d(and)g +(strcoll\(3\).)150 2728 y Ft(compat41)705 2869 y Fq(\017)60 +b Fu(in)29 b(p)s(osix)f(mo)s(de,)i Ft(time)e Fu(ma)m(y)h(b)s(e)g(follo) +m(w)m(ed)i(b)m(y)e(options)g(and)g(still)h(b)s(e)e(recognized)j(as)810 +2979 y(a)g(reserv)m(ed)f(w)m(ord)g(\(this)h(is)f Fm(posix)g +Fu(in)m(terpretation)i(267\))705 3119 y Fq(\017)60 b +Fu(in)37 b(p)s(osix)f(mo)s(de,)i(the)g(parser)e(requires)g(that)i(an)f +(ev)m(en)g(n)m(um)m(b)s(er)f(of)h(single)g(quotes)810 +3229 y(o)s(ccur)28 b(in)g(the)h Fr(w)m(ord)i Fu(p)s(ortion)d(of)h(a)g +(double-quoted)f($)p Fi({)6 b Fu(.)23 b(.)f(.)11 b Fi(})29 +b Fu(parameter)g(expansion)810 3338 y(and)34 b(treats)h(them)f(sp)s +(ecially)-8 b(,)37 b(so)e(that)g(c)m(haracters)g(within)f(the)h(single) +g(quotes)g(are)810 3448 y(considered)30 b(quoted)h(\(this)f(is)h +Fm(posix)e Fu(in)m(terpretation)j(221\))150 3620 y Ft(compat42)705 +3760 y Fq(\017)60 b Fu(the)29 b(replacemen)m(t)i(string)e(in)g +(double-quoted)h(pattern)f(substitution)g(do)s(es)g(not)h(un-)810 +3870 y(dergo)h(quote)g(remo)m(v)-5 b(al,)32 b(as)e(it)h(do)s(es)f(in)g +(v)m(ersions)h(after)g(bash-4.2)705 4010 y Fq(\017)60 +b Fu(in)39 b(p)s(osix)g(mo)s(de,)j(single)e(quotes)g(are)g(considered)f +(sp)s(ecial)h(when)f(expanding)g(the)810 4120 y Fr(w)m(ord)d +Fu(p)s(ortion)c(of)g(a)h(double-quoted)g($)p Fi({)6 b +Fu(.)22 b(.)h(.)11 b Fi(})33 b Fu(parameter)g(expansion)f(and)g(can)h +(b)s(e)810 4230 y(used)40 b(to)i(quote)g(a)f(closing)h(brace)f(or)g +(other)h(sp)s(ecial)f(c)m(haracter)i(\(this)e(is)g(part)g(of)810 +4339 y Fm(posix)36 b Fu(in)m(terpretation)h(221\);)42 +b(in)36 b(later)h(v)m(ersions,)h(single)f(quotes)g(are)g(not)f(sp)s +(ecial)810 4449 y(within)30 b(double-quoted)g(w)m(ord)g(expansions)150 +4620 y Ft(compat43)705 4761 y Fq(\017)60 b Fu(the)31 +b(shell)g(do)s(es)g(not)g(prin)m(t)f(a)h(w)m(arning)g(message)h(if)f +(an)g(attempt)h(is)f(made)f(to)i(use)f(a)810 4871 y(quoted)22 +b(comp)s(ound)f(assignmen)m(t)i(as)f(an)g(argumen)m(t)h(to)g(declare)g +(\(declare)g(-a)g(fo)s(o='\(1)810 4980 y(2\)'\).)42 b(Later)31 +b(v)m(ersions)g(w)m(arn)f(that)h(this)f(usage)h(is)f(deprecated)705 +5121 y Fq(\017)60 b Fu(w)m(ord)21 b(expansion)g(errors)g(are)h +(considered)f(non-fatal)h(errors)f(that)h(cause)g(the)f(curren)m(t)810 +5230 y(command)k(to)g(fail,)i(ev)m(en)e(in)g(p)s(osix)f(mo)s(de)h +(\(the)g(default)g(b)s(eha)m(vior)g(is)g(to)g(mak)m(e)h(them)810 +5340 y(fatal)32 b(errors)d(that)i(cause)g(the)g(shell)f(to)i(exit\))p +eop end +%%Page: 106 112 +TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(106)705 299 y Fq(\017)60 +b Fu(when)37 b(executing)i(a)g(shell)f(function,)i(the)f(lo)s(op)f +(state)h(\(while/un)m(til/etc.\))68 b(is)38 b(not)810 +408 y(reset,)c(so)g Ft(break)d Fu(or)i Ft(continue)e +Fu(in)h(that)i(function)f(will)g(break)g(or)g(con)m(tin)m(ue)h(lo)s +(ops)810 518 y(in)h(the)g(calling)h(con)m(text.)57 b(Bash-4.4)37 +b(and)d(later)i(reset)g(the)f(lo)s(op)g(state)i(to)e(prev)m(en)m(t)810 +628 y(this)150 787 y Ft(compat44)705 922 y Fq(\017)60 +b Fu(the)41 b(shell)g(sets)g(up)e(the)i(v)-5 b(alues)41 +b(used)f(b)m(y)h Ft(BASH_ARGV)d Fu(and)i Ft(BASH_ARGC)e +Fu(so)j(they)810 1031 y(can)26 b(expand)f(to)h(the)g(shell's)g(p)s +(ositional)g(parameters)g(ev)m(en)h(if)e(extended)h(debugging)810 +1141 y(mo)s(de)k(is)g(not)h(enabled)705 1275 y Fq(\017)60 +b Fu(a)40 b(subshell)f(inherits)g(lo)s(ops)h(from)g(its)g(paren)m(t)g +(con)m(text,)k(so)c Ft(break)e Fu(or)i Ft(continue)810 +1385 y Fu(will)35 b(cause)g(the)f(subshell)f(to)i(exit.)54 +b(Bash-5.0)36 b(and)d(later)j(reset)f(the)f(lo)s(op)h(state)g(to)810 +1494 y(prev)m(en)m(t)c(the)g(exit)705 1629 y Fq(\017)60 +b Fu(v)-5 b(ariable)28 b(assignmen)m(ts)h(preceding)f(builtins)f(lik)m +(e)i Ft(export)d Fu(and)h Ft(readonly)e Fu(that)j(set)810 +1738 y(attributes)37 b(con)m(tin)m(ue)h(to)g(a\013ect)g(v)-5 +b(ariables)37 b(with)g(the)f(same)h(name)g(in)g(the)f(calling)810 +1848 y(en)m(vironmen)m(t)31 b(ev)m(en)g(if)f(the)h(shell)g(is)f(not)h +(in)f(p)s(osix)f(mo)s(de)150 2007 y Ft(compat50)f(\(set)h(using)g +(BASH_COMPAT\))705 2117 y Fq(\017)60 b Fu(Bash-5.1)29 +b(c)m(hanged)g(the)f(w)m(a)m(y)g Ft($RANDOM)e Fu(is)i(generated)h(to)f +(in)m(tro)s(duce)g(sligh)m(tly)h(more)810 2227 y(randomness.)39 +b(If)30 b(the)f(shell)h(compatibilit)m(y)i(lev)m(el)f(is)f(set)g(to)h +(50)f(or)g(lo)m(w)m(er,)h(it)f(rev)m(erts)810 2336 y(to)e(the)g(metho)s +(d)f(from)g(bash-5.0)h(and)f(previous)g(v)m(ersions,)i(so)e(seeding)h +(the)g(random)810 2446 y(n)m(um)m(b)s(er)36 b(generator)j(b)m(y)e +(assigning)h(a)g(v)-5 b(alue)38 b(to)g Ft(RANDOM)e Fu(will)i(pro)s +(duce)e(the)i(same)810 2555 y(sequence)31 b(as)f(in)g(bash-5.0)705 +2690 y Fq(\017)60 b Fu(If)22 b(the)g(command)g(hash)f(table)i(is)f +(empt)m(y)-8 b(,)25 b(Bash)d(v)m(ersions)g(prior)g(to)h(bash-5.1)f +(prin)m(ted)810 2800 y(an)29 b(informational)i(message)g(to)f(that)g +(e\013ect,)h(ev)m(en)g(when)d(pro)s(ducing)g(output)h(that)810 +2909 y(can)40 b(b)s(e)g(reused)f(as)h(input.)69 b(Bash-5.1)42 +b(suppresses)c(that)j(message)g(when)e(the)i Ft(-l)810 +3019 y Fu(option)31 b(is)f(supplied.)p eop end +%%Page: 107 113 +TeXDict begin 107 112 bop 3614 -116 a Fu(107)150 299 +y Fp(7)80 b(Job)54 b(Con)l(trol)150 518 y Fu(This)25 +b(c)m(hapter)i(discusses)f(what)g(job)f(con)m(trol)j(is,)f(ho)m(w)f(it) +h(w)m(orks,)g(and)f(ho)m(w)g(Bash)g(allo)m(ws)h(y)m(ou)g(to)g(access) +150 628 y(its)k(facilities.)150 863 y Fs(7.1)68 b(Job)45 +b(Con)l(trol)h(Basics)150 1022 y Fu(Job)27 b(con)m(trol)i(refers)e(to)h +(the)g(abilit)m(y)h(to)f(selectiv)m(ely)j(stop)c(\(susp)s(end\))f(the)i +(execution)h(of)e(pro)s(cesses)h(and)150 1132 y(con)m(tin)m(ue)38 +b(\(resume\))g(their)f(execution)h(at)g(a)g(later)g(p)s(oin)m(t.)61 +b(A)37 b(user)g(t)m(ypically)i(emplo)m(ys)f(this)f(facilit)m(y)150 +1241 y(via)27 b(an)e(in)m(teractiv)m(e)k(in)m(terface)f(supplied)d +(join)m(tly)h(b)m(y)g(the)h(op)s(erating)f(system)g(k)m(ernel's)h +(terminal)f(driv)m(er)150 1351 y(and)k(Bash.)275 1482 +y(The)23 b(shell)i(asso)s(ciates)h(a)f Fr(job)h Fu(with)e(eac)m(h)i +(pip)s(eline.)38 b(It)25 b(k)m(eeps)f(a)h(table)h(of)e(curren)m(tly)h +(executing)g(jobs,)150 1592 y(whic)m(h)33 b(ma)m(y)i(b)s(e)e(listed)h +(with)f(the)h Ft(jobs)f Fu(command.)50 b(When)33 b(Bash)h(starts)g(a)g +(job)g(async)m(hronously)-8 b(,)34 b(it)150 1701 y(prin)m(ts)c(a)h +(line)f(that)h(lo)s(oks)g(lik)m(e:)390 1833 y Ft([1])47 +b(25647)150 1965 y Fu(indicating)34 b(that)g(this)f(job)g(is)g(job)g(n) +m(um)m(b)s(er)f(1)i(and)f(that)g(the)h(pro)s(cess)f Fm(id)g +Fu(of)g(the)h(last)g(pro)s(cess)f(in)g(the)150 2074 y(pip)s(eline)42 +b(asso)s(ciated)i(with)e(this)g(job)g(is)h(25647.)78 +b(All)43 b(of)g(the)g(pro)s(cesses)f(in)g(a)h(single)g(pip)s(eline)f +(are)150 2184 y(mem)m(b)s(ers)30 b(of)g(the)h(same)f(job.)41 +b(Bash)30 b(uses)g(the)h Fr(job)h Fu(abstraction)f(as)g(the)g(basis)f +(for)g(job)g(con)m(trol.)275 2315 y(T)-8 b(o)23 b(facilitate)j(the)d +(implemen)m(tation)i(of)f(the)f(user)f(in)m(terface)j(to)f(job)f(con)m +(trol,)j(the)d(op)s(erating)h(system)150 2425 y(main)m(tains)j(the)f +(notion)h(of)f(a)g(curren)m(t)g(terminal)g(pro)s(cess)g(group)g +Fm(id)p Fu(.)39 b(Mem)m(b)s(ers)26 b(of)g(this)g(pro)s(cess)f(group)150 +2534 y(\(pro)s(cesses)h(whose)g(pro)s(cess)g(group)g +Fm(id)g Fu(is)h(equal)g(to)g(the)f(curren)m(t)g(terminal)h(pro)s(cess)f +(group)f Fm(id)p Fu(\))i(receiv)m(e)150 2644 y(k)m(eyb)s +(oard-generated)22 b(signals)g(suc)m(h)e(as)h Ft(SIGINT)p +Fu(.)36 b(These)21 b(pro)s(cesses)g(are)g(said)g(to)g(b)s(e)g(in)f(the) +h(foreground.)150 2754 y(Bac)m(kground)38 b(pro)s(cesses)f(are)h(those) +g(whose)f(pro)s(cess)g(group)g Fm(id)h Fu(di\013ers)f(from)g(the)g +(terminal's;)42 b(suc)m(h)150 2863 y(pro)s(cesses)24 +b(are)g(imm)m(une)g(to)g(k)m(eyb)s(oard-generated)h(signals.)40 +b(Only)23 b(foreground)g(pro)s(cesses)h(are)g(allo)m(w)m(ed)150 +2973 y(to)g(read)e(from)h(or,)h(if)f(the)g(user)f(so)i(sp)s(eci\014es)e +(with)h Ft(stty)29 b(tostop)p Fu(,)23 b(write)g(to)g(the)h(terminal.)38 +b(Bac)m(kground)150 3082 y(pro)s(cesses)27 b(whic)m(h)g(attempt)h(to)f +(read)g(from)g(\(write)g(to)h(when)e Ft(stty)j(tostop)d +Fu(is)h(in)f(e\013ect\))j(the)e(terminal)150 3192 y(are)32 +b(sen)m(t)g(a)g Ft(SIGTTIN)e Fu(\()p Ft(SIGTTOU)p Fu(\))g(signal)i(b)m +(y)g(the)g(k)m(ernel's)g(terminal)g(driv)m(er,)g(whic)m(h,)g(unless)f +(caugh)m(t,)150 3302 y(susp)s(ends)d(the)i(pro)s(cess.)275 +3433 y(If)k(the)i(op)s(erating)g(system)f(on)h(whic)m(h)f(Bash)g(is)h +(running)d(supp)s(orts)h(job)h(con)m(trol,)j(Bash)e(con)m(tains)150 +3543 y(facilities)30 b(to)f(use)f(it.)40 b(T)m(yping)28 +b(the)g Fr(susp)s(end)h Fu(c)m(haracter)h(\(t)m(ypically)g(`)p +Ft(^Z)p Fu(',)f(Con)m(trol-Z\))g(while)f(a)g(pro)s(cess)150 +3652 y(is)42 b(running)f(causes)i(that)g(pro)s(cess)f(to)h(b)s(e)f +(stopp)s(ed)f(and)h(returns)f(con)m(trol)j(to)f(Bash.)77 +b(T)m(yping)42 b(the)150 3762 y Fr(dela)m(y)m(ed)k(susp)s(end)f +Fu(c)m(haracter)h(\(t)m(ypically)g(`)p Ft(^Y)p Fu(',)i(Con)m(trol-Y\))e +(causes)e(the)h(pro)s(cess)e(to)i(b)s(e)f(stopp)s(ed)150 +3871 y(when)26 b(it)i(attempts)h(to)f(read)f(input)g(from)f(the)i +(terminal,)h(and)e(con)m(trol)h(to)g(b)s(e)f(returned)f(to)j(Bash.)39 +b(The)150 3981 y(user)e(then)g(manipulates)h(the)g(state)h(of)f(this)f +(job,)j(using)d(the)h Ft(bg)f Fu(command)g(to)h(con)m(tin)m(ue)h(it)f +(in)g(the)150 4091 y(bac)m(kground,)g(the)f Ft(fg)g Fu(command)f(to)i +(con)m(tin)m(ue)g(it)f(in)f(the)h(foreground,)h(or)f(the)g +Ft(kill)f Fu(command)g(to)150 4200 y(kill)27 b(it.)40 +b(A)27 b(`)p Ft(^Z)p Fu(')g(tak)m(es)h(e\013ect)g(immediately)-8 +b(,)29 b(and)d(has)h(the)f(additional)i(side)e(e\013ect)j(of)d(causing) +h(p)s(ending)150 4310 y(output)j(and)g(t)m(yp)s(eahead)h(to)g(b)s(e)e +(discarded.)275 4441 y(There)j(are)g(a)h(n)m(um)m(b)s(er)e(of)i(w)m(a)m +(ys)g(to)h(refer)e(to)h(a)g(job)f(in)g(the)h(shell.)47 +b(The)32 b(c)m(haracter)i(`)p Ft(\045)p Fu(')f(in)m(tro)s(duces)150 +4551 y(a)e(job)f(sp)s(eci\014cation)h(\()p Fr(jobsp)s(ec)6 +b Fu(\).)275 4682 y(Job)31 b(n)m(um)m(b)s(er)f Ft(n)h +Fu(ma)m(y)h(b)s(e)f(referred)g(to)h(as)g(`)p Ft(\045n)p +Fu('.)44 b(The)31 b(sym)m(b)s(ols)g(`)p Ft(\045\045)p +Fu(')h(and)f(`)p Ft(\045+)p Fu(')g(refer)h(to)g(the)g(shell's)150 +4792 y(notion)k(of)f(the)g(curren)m(t)g(job,)h(whic)m(h)f(is)g(the)g +(last)h(job)f(stopp)s(ed)f(while)h(it)h(w)m(as)g(in)e(the)i(foreground) +e(or)150 4902 y(started)27 b(in)g(the)g(bac)m(kground.)40 +b(A)27 b(single)g(`)p Ft(\045)p Fu(')g(\(with)g(no)g(accompan)m(ying)i +(job)d(sp)s(eci\014cation\))i(also)g(refers)150 5011 +y(to)k(the)e(curren)m(t)h(job.)42 b(The)30 b(previous)g(job)h(ma)m(y)g +(b)s(e)f(referenced)h(using)f(`)p Ft(\045-)p Fu('.)42 +b(If)30 b(there)h(is)g(only)g(a)g(single)150 5121 y(job,)g(`)p +Ft(\045+)p Fu(')g(and)f(`)p Ft(\045-)p Fu(')h(can)h(b)s(oth)e(b)s(e)g +(used)h(to)g(refer)g(to)h(that)g(job.)42 b(In)30 b(output)h(p)s +(ertaining)g(to)g(jobs)g(\(e.g.,)150 5230 y(the)39 b(output)f(of)g(the) +h Ft(jobs)e Fu(command\),)k(the)d(curren)m(t)h(job)f(is)g(alw)m(a)m(ys) +i(\015agged)f(with)f(a)h(`)p Ft(+)p Fu(',)i(and)d(the)150 +5340 y(previous)30 b(job)g(with)g(a)h(`)p Ft(-)p Fu('.)p +eop end +%%Page: 108 114 +TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(108)275 299 y(A)38 b(job)g(ma)m(y)h(also)g +(b)s(e)f(referred)f(to)j(using)d(a)i(pre\014x)e(of)i(the)f(name)h(used) +e(to)i(start)g(it,)i(or)e(using)f(a)150 408 y(substring)g(that)j(app)s +(ears)e(in)g(its)h(command)f(line.)69 b(F)-8 b(or)41 +b(example,)i(`)p Ft(\045ce)p Fu(')c(refers)g(to)i(a)f(stopp)s(ed)e(job) +150 518 y(whose)30 b(command)g(name)g(b)s(egins)g(with)g(`)p +Ft(ce)p Fu('.)40 b(Using)31 b(`)p Ft(\045?ce)p Fu(',)f(on)g(the)g +(other)h(hand,)e(refers)h(to)h(an)m(y)f(job)150 628 y(con)m(taining)e +(the)e(string)h(`)p Ft(ce)p Fu(')f(in)g(its)h(command)f(line.)40 +b(If)26 b(the)g(pre\014x)g(or)g(substring)f(matc)m(hes)j(more)e(than) +150 737 y(one)31 b(job,)f(Bash)g(rep)s(orts)g(an)g(error.)275 +869 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it) +i(in)m(to)g(the)f(foreground:)41 b(`)p Ft(\0451)p Fu(')31 +b(is)g(a)h(synon)m(ym)e(for)150 978 y(`)p Ft(fg)g(\0451)p +Fu(',)i(bringing)f(job)g(1)g(from)g(the)h(bac)m(kground)f(in)m(to)i +(the)e(foreground.)44 b(Similarly)-8 b(,)32 b(`)p Ft(\0451)e(&)p +Fu(')i(resumes)150 1088 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv) +-5 b(alen)m(t)32 b(to)f(`)p Ft(bg)f(\0451)p Fu(')275 +1219 y(The)g(shell)i(learns)f(immediately)i(whenev)m(er)e(a)h(job)f(c)m +(hanges)h(state.)45 b(Normally)-8 b(,)33 b(Bash)e(w)m(aits)i(un)m(til) +150 1329 y(it)25 b(is)g(ab)s(out)f(to)i(prin)m(t)e(a)h(prompt)f(b)s +(efore)g(rep)s(orting)h(c)m(hanges)g(in)g(a)g(job's)f(status)h(so)g(as) +g(to)g(not)g(in)m(terrupt)150 1439 y(an)m(y)k(other)f(output.)40 +b(If)28 b(the)g Ft(-b)g Fu(option)g(to)h(the)g Ft(set)e +Fu(builtin)h(is)g(enabled,)h(Bash)g(rep)s(orts)e(suc)m(h)h(c)m(hanges) +150 1548 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g +(Builtin],)i(page)f(62\).)40 b(An)m(y)24 b(trap)f(on)h +Ft(SIGCHLD)e Fu(is)i(executed)150 1658 y(for)30 b(eac)m(h)i(c)m(hild)e +(pro)s(cess)g(that)h(exits.)275 1789 y(If)25 b(an)h(attempt)h(to)g +(exit)g(Bash)f(is)h(made)f(while)g(jobs)f(are)i(stopp)s(ed,)f(\(or)h +(running,)e(if)h(the)g Ft(checkjobs)150 1899 y Fu(option)e(is)f +(enabled)h({)g(see)g(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)j(page) +e(66\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150 +2009 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f +(enabled,)i(lists)e(the)h(jobs)f(and)f(their)i(statuses.)39 +b(The)25 b Ft(jobs)150 2118 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f +(used)g(to)i(insp)s(ect)f(their)g(status.)59 b(If)36 +b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 2228 +y(without)e(an)f(in)m(terv)m(ening)i(command,)f(Bash)g(do)s(es)f(not)h +(prin)m(t)g(another)f(w)m(arning,)i(and)e(an)m(y)h(stopp)s(ed)150 +2337 y(jobs)c(are)h(terminated.)275 2469 y(When)f(the)h(shell)g(is)f(w) +m(aiting)i(for)f(a)g(job)f(or)h(pro)s(cess)f(using)g(the)h +Ft(wait)f Fu(builtin,)g(and)g(job)h(con)m(trol)h(is)150 +2578 y(enabled,)i Ft(wait)f Fu(will)g(return)g(when)f(the)i(job)f(c)m +(hanges)h(state.)51 b(The)33 b Ft(-f)g Fu(option)h(causes)f +Ft(wait)g Fu(to)h(w)m(ait)150 2688 y(un)m(til)d(the)f(job)g(or)h(pro)s +(cess)f(terminates)h(b)s(efore)f(returning.)150 2923 +y Fs(7.2)68 b(Job)45 b(Con)l(trol)h(Builtins)150 3104 +y Ft(bg)870 3236 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630 +3367 y Fu(Resume)24 b(eac)m(h)h(susp)s(ended)d(job)i +Fr(jobsp)s(ec)29 b Fu(in)24 b(the)g(bac)m(kground,)h(as)g(if)f(it)h +(had)e(b)s(een)g(started)630 3477 y(with)32 b(`)p Ft(&)p +Fu('.)45 b(If)31 b Fr(jobsp)s(ec)37 b Fu(is)32 b(not)g(supplied,)f(the) +h(curren)m(t)g(job)f(is)h(used.)45 b(The)31 b(return)g(status)630 +3586 y(is)i(zero)g(unless)f(it)h(is)g(run)e(when)h(job)g(con)m(trol)i +(is)f(not)g(enabled,)h(or,)f(when)f(run)f(with)h(job)630 +3696 y(con)m(trol)h(enabled,)g(an)m(y)f Fr(jobsp)s(ec)37 +b Fu(w)m(as)32 b(not)g(found)f(or)g(sp)s(eci\014es)h(a)g(job)g(that)g +(w)m(as)g(started)630 3806 y(without)e(job)g(con)m(trol.)150 +3959 y Ft(fg)870 4091 y(fg)47 b([)p Fj(jobspec)p Ft(])630 +4222 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48 b Fu(in)43 +b(the)g(foreground)g(and)f(mak)m(e)j(it)e(the)h(curren)m(t)f(job.)78 +b(If)630 4332 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h(the)f +(curren)m(t)h(job)f(is)g(used.)58 b(The)36 b(return)f(status)h(is)h +(that)g(of)630 4441 y(the)d(command)g(placed)h(in)m(to)g(the)f +(foreground,)g(or)g(non-zero)h(if)f(run)f(when)g(job)g(con)m(trol)630 +4551 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h +(enabled,)h Fr(jobsp)s(ec)j Fu(do)s(es)35 b(not)h(sp)s(ecify)f(a)630 +4660 y(v)-5 b(alid)31 b(job)f(or)g Fr(jobsp)s(ec)35 b +Fu(sp)s(eci\014es)30 b(a)h(job)f(that)h(w)m(as)g(started)g(without)f +(job)g(con)m(trol.)150 4814 y Ft(jobs)870 4945 y(jobs)47 +b([-lnprs])e([)p Fj(jobspec)p Ft(])870 5055 y(jobs)i(-x)g +Fj(command)f Ft([)p Fj(arguments)p Ft(])630 5187 y Fu(The)30 +b(\014rst)f(form)h(lists)h(the)g(activ)m(e)h(jobs.)41 +b(The)30 b(options)g(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630 +5340 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p +Fu(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)p +eop end +%%Page: 109 115 +TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(109)630 299 y Ft(-n)384 +b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e(jobs)h(that)g(ha)m +(v)m(e)i(c)m(hanged)e(status)h(since)1110 408 y(the)31 +b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f(status.)630 +583 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f +Fm(id)g Fu(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)630 +757 y Ft(-r)384 b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630 +931 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630 +1105 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g +(restricted)h(to)g(information)f(ab)s(out)g(that)h(job.)37 +b(If)23 b Fr(jobsp)s(ec)630 1214 y Fu(is)30 b(not)h(supplied,)e(the)i +(status)g(of)f(all)h(jobs)f(is)h(listed.)630 1356 y(If)k(the)g +Ft(-x)f Fu(option)i(is)f(supplied,)g Ft(jobs)f Fu(replaces)i(an)m(y)f +Fr(jobsp)s(ec)40 b Fu(found)34 b(in)h Fr(command)j Fu(or)630 +1466 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess) +h(group)f Fm(id)p Fu(,)k(and)c(executes)j Fr(command)p +Fu(,)630 1575 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f +(its)g(exit)i(status.)150 1749 y Ft(kill)870 1891 y(kill)47 +b([-s)g Fj(sigspec)p Ft(])e([-n)i Fj(signum)p Ft(])f([-)p +Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 2001 +y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 2143 +y Fu(Send)22 b(a)i(signal)g(sp)s(eci\014ed)f(b)m(y)g +Fr(sigsp)s(ec)29 b Fu(or)24 b Fr(sign)m(um)f Fu(to)h(the)g(pro)s(cess)f +(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 2252 y(cation)k +Fr(jobsp)s(ec)j Fu(or)25 b(pro)s(cess)g Fm(id)h Fr(pid)p +Fu(.)38 b Fr(sigsp)s(ec)31 b Fu(is)25 b(either)h(a)g(case-insensitiv)m +(e)i(signal)e(name)630 2362 y(suc)m(h)37 b(as)g Ft(SIGINT)f +Fu(\(with)h(or)g(without)g(the)g Ft(SIG)g Fu(pre\014x\))f(or)h(a)h +(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 2471 y +Fu(is)g(a)f(signal)i(n)m(um)m(b)s(er.)63 b(If)39 b Fr(sigsp)s(ec)44 +b Fu(and)38 b Fr(sign)m(um)g Fu(are)h(not)g(presen)m(t,)h +Ft(SIGTERM)d Fu(is)h(used.)630 2581 y(The)27 b Ft(-l)h +Fu(option)g(lists)h(the)f(signal)h(names.)39 b(If)28 +b(an)m(y)g(argumen)m(ts)h(are)f(supplied)f(when)g Ft(-l)g +Fu(is)630 2690 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f(signals)g +(corresp)s(onding)f(to)i(the)f(argumen)m(ts)g(are)h(listed,)g(and)630 +2800 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p +1796 2800 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s(er)f(sp)s +(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 2910 +y(the)h(exit)h(status)g(of)f(a)h(pro)s(cess)e(terminated)i(b)m(y)f(a)h +(signal.)40 b(The)28 b Ft(-L)g Fu(option)g(is)g(equiv)-5 +b(alen)m(t)630 3019 y(to)34 b Ft(-l)p Fu(.)47 b(The)32 +b(return)g(status)h(is)g(zero)g(if)g(at)g(least)h(one)f(signal)h(w)m +(as)f(successfully)g(sen)m(t,)h(or)630 3129 y(non-zero)d(if)f(an)h +(error)f(o)s(ccurs)g(or)g(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f +(encoun)m(tered.)150 3303 y Ft(wait)870 3445 y(wait)47 +b([-fn])f([-p)h Fj(varname)p Ft(])e([)p Fj(jobspec)h +Ft(or)h Fj(pid)g Ft(...)o(])630 3587 y Fu(W)-8 b(ait)28 +b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s(eci\014ed)g(b)m(y)g +(eac)m(h)h(pro)s(cess)f Fm(id)h Fr(pid)i Fu(or)d(job)g(sp)s +(eci\014cation)630 3696 y Fr(jobsp)s(ec)40 b Fu(exits)35 +b(and)f(return)g(the)g(exit)i(status)f(of)g(the)g(last)g(command)f(w)m +(aited)i(for.)53 b(If)35 b(a)630 3806 y(job)g(sp)s(ec)f(is)h(giv)m(en,) +i(all)f(pro)s(cesses)f(in)f(the)h(job)g(are)g(w)m(aited)h(for.)54 +b(If)35 b(no)f(argumen)m(ts)i(are)630 3915 y(giv)m(en,)28 +b Ft(wait)c Fu(w)m(aits)j(for)e(all)i(running)c(bac)m(kground)j(jobs)f +(and)g(the)h(last-executed)h(pro)s(cess)630 4025 y(substitution,)37 +b(if)f(its)g(pro)s(cess)f(id)h(is)f(the)h(same)g(as)g +Fr($!)p Fu(,)i(and)d(the)h(return)f(status)h(is)g(zero.)630 +4134 y(If)h(the)h Ft(-n)f Fu(option)h(is)f(supplied,)i +Ft(wait)d Fu(w)m(aits)j(for)e(a)h(single)g(job)f(from)g(the)h(list)g +(of)g Fr(pids)630 4244 y Fu(or)31 b Fr(jobsp)s(ecs)k +Fu(or,)d(if)f(no)g(argumen)m(ts)h(are)g(supplied,)e(an)m(y)i(job,)f(to) +i(complete)f(and)f(returns)630 4354 y(its)36 b(exit)h(status.)56 +b(If)35 b(none)h(of)g(the)g(supplied)e(argumen)m(ts)i(is)f(a)h(c)m +(hild)g(of)g(the)g(shell,)h(or)f(if)630 4463 y(no)31 +b(argumen)m(ts)g(are)g(supplied)f(and)g(the)h(shell)g(has)g(no)f(un)m +(w)m(aited-for)i(c)m(hildren,)f(the)g(exit)630 4573 y(status)k(is)g +(127.)55 b(If)34 b(the)h Ft(-p)g Fu(option)g(is)g(supplied,)f(the)h +(pro)s(cess)g(or)f(job)h(iden)m(ti\014er)g(of)g(the)630 +4682 y(job)j(for)g(whic)m(h)f(the)i(exit)g(status)f(is)g(returned)f(is) +h(assigned)h(to)g(the)f(v)-5 b(ariable)39 b Fr(v)-5 b(arname)630 +4792 y Fu(named)29 b(b)m(y)f(the)i(option)f(argumen)m(t.)41 +b(The)28 b(v)-5 b(ariable)30 b(will)g(b)s(e)e(unset)h(initially)-8 +b(,)31 b(b)s(efore)e(an)m(y)630 4902 y(assignmen)m(t.)76 +b(This)41 b(is)h(useful)f(only)h(when)f(the)h Ft(-n)f +Fu(option)i(is)f(supplied.)74 b(Supplying)630 5011 y(the)39 +b Ft(-f)f Fu(option,)k(when)37 b(job)i(con)m(trol)h(is)f(enabled,)i +(forces)e Ft(wait)e Fu(to)j(w)m(ait)g(for)e(eac)m(h)i +Fr(pid)630 5121 y Fu(or)29 b Fr(jobsp)s(ec)34 b Fu(to)c(terminate)g(b)s +(efore)f(returning)f(its)h(status,)h(in)m(tead)g(of)f(returning)f(when) +g(it)630 5230 y(c)m(hanges)37 b(status.)58 b(If)35 b(neither)h +Fr(jobsp)s(ec)41 b Fu(nor)36 b Fr(pid)i Fu(sp)s(eci\014es)e(an)g(activ) +m(e)i(c)m(hild)e(pro)s(cess)g(of)630 5340 y(the)31 b(shell,)f(the)h +(return)e(status)i(is)f(127.)p eop end +%%Page: 110 116 +TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(110)150 299 y Ft(disown)870 +433 y(disown)46 b([-ar])g([-h])h([)p Fj(jobspec)f Ft(...)h(|)g +Fj(pid)g Ft(...)g(])630 568 y Fu(Without)33 b(options,)h(remo)m(v)m(e)g +(eac)m(h)f Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g(activ)m +(e)h(jobs.)47 b(If)32 b(the)h Ft(-h)630 677 y Fu(option)j(is)f(giv)m +(en,)i(the)f(job)f(is)g(not)g(remo)m(v)m(ed)h(from)f(the)g(table,)j +(but)c(is)i(mark)m(ed)f(so)g(that)630 787 y Ft(SIGHUP)e +Fu(is)j(not)f(sen)m(t)h(to)g(the)f(job)g(if)g(the)g(shell)h(receiv)m +(es)h(a)e Ft(SIGHUP)p Fu(.)54 b(If)34 b Fr(jobsp)s(ec)40 +b Fu(is)c(not)630 897 y(presen)m(t,)41 b(and)d(neither)h(the)g +Ft(-a)f Fu(nor)g(the)h Ft(-r)f Fu(option)h(is)g(supplied,)g(the)g +(curren)m(t)g(job)f(is)630 1006 y(used.)g(If)25 b(no)h +Fr(jobsp)s(ec)k Fu(is)c(supplied,)f(the)h Ft(-a)f Fu(option)h(means)g +(to)g(remo)m(v)m(e)h(or)e(mark)h(all)g(jobs;)630 1116 +y(the)31 b Ft(-r)e Fu(option)i(without)g(a)f Fr(jobsp)s(ec)36 +b Fu(argumen)m(t)30 b(restricts)h(op)s(eration)g(to)g(running)e(jobs.) +150 1275 y Ft(suspend)870 1410 y(suspend)46 b([-f])630 +1544 y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f(shell)g(un)m +(til)h(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f Fu(signal.)50 +b(A)33 b(login)630 1654 y(shell)28 b(cannot)g(b)s(e)f(susp)s(ended;)g +(the)g Ft(-f)g Fu(option)i(can)f(b)s(e)f(used)g(to)h(o)m(v)m(erride)h +(this)e(and)g(force)630 1763 y(the)k(susp)s(ension.)275 +1923 y(When)f(job)f(con)m(trol)j(is)e(not)h(activ)m(e,)i(the)d +Ft(kill)f Fu(and)h Ft(wait)f Fu(builtins)g(do)h(not)h(accept)h +Fr(jobsp)s(ec)j Fu(argu-)150 2032 y(men)m(ts.)41 b(They)30 +b(m)m(ust)g(b)s(e)g(supplied)f(pro)s(cess)h Fm(id)p Fu(s.)150 +2273 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 b(ariables)150 +2457 y Ft(auto_resume)630 2567 y Fu(This)31 b(v)-5 b(ariable)32 +b(con)m(trols)g(ho)m(w)g(the)f(shell)h(in)m(teracts)h(with)e(the)h +(user)e(and)h(job)g(con)m(trol.)45 b(If)630 2677 y(this)28 +b(v)-5 b(ariable)30 b(exists)f(then)f(single)h(w)m(ord)f(simple)h +(commands)f(without)g(redirections)i(are)630 2786 y(treated)h(as)g +(candidates)f(for)g(resumption)g(of)g(an)g(existing)h(job.)41 +b(There)29 b(is)h(no)h(am)m(biguit)m(y)630 2896 y(allo)m(w)m(ed;)f(if)d +(there)g(is)g(more)g(than)f(one)h(job)g(b)s(eginning)f(with)g(the)h +(string)g(t)m(yp)s(ed,)g(then)g(the)630 3005 y(most)j(recen)m(tly)h +(accessed)f(job)f(will)h(b)s(e)f(selected.)42 b(The)29 +b(name)g(of)h(a)g(stopp)s(ed)e(job,)i(in)f(this)630 3115 +y(con)m(text,)h(is)e(the)g(command)g(line)g(used)f(to)h(start)g(it.)41 +b(If)27 b(this)h(v)-5 b(ariable)28 b(is)g(set)g(to)h(the)e(v)-5 +b(alue)630 3225 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f +(m)m(ust)h(matc)m(h)g(the)h(name)f(of)g(a)g(stopp)s(ed)f(job)h +(exactly;)j(if)630 3334 y(set)29 b(to)h(`)p Ft(substring)p +Fu(',)d(the)i(string)g(supplied)e(needs)i(to)g(matc)m(h)h(a)f +(substring)f(of)h(the)g(name)630 3444 y(of)38 b(a)f(stopp)s(ed)g(job.) +62 b(The)37 b(`)p Ft(substring)p Fu(')e(v)-5 b(alue)38 +b(pro)m(vides)f(functionalit)m(y)i(analogous)g(to)630 +3553 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g +(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(107\).)56 +b(If)34 b(set)i(to)g(an)m(y)630 3663 y(other)c(v)-5 b(alue,)32 +b(the)g(supplied)e(string)i(m)m(ust)f(b)s(e)g(a)h(pre\014x)f(of)h(a)g +(stopp)s(ed)e(job's)i(name;)g(this)630 3773 y(pro)m(vides)e +(functionalit)m(y)i(analogous)g(to)f(the)g(`)p Ft(\045)p +Fu(')f(job)g Fm(id)p Fu(.)p eop end +%%Page: 111 117 +TeXDict begin 111 116 bop 3614 -116 a Fu(111)150 299 +y Fp(8)80 b(Command)54 b(Line)f(Editing)150 635 y Fu(This)28 +b(c)m(hapter)i(describ)s(es)e(the)h(basic)g(features)h(of)f(the)g +Fm(gnu)f Fu(command)h(line)g(editing)h(in)m(terface.)42 +b(Com-)150 745 y(mand)c(line)i(editing)f(is)g(pro)m(vided)g(b)m(y)g +(the)g(Readline)h(library)-8 b(,)41 b(whic)m(h)e(is)g(used)f(b)m(y)h +(sev)m(eral)h(di\013eren)m(t)150 855 y(programs,)34 b(including)e +(Bash.)49 b(Command)32 b(line)i(editing)f(is)g(enabled)g(b)m(y)g +(default)g(when)f(using)h(an)g(in-)150 964 y(teractiv)m(e)h(shell,)d +(unless)g(the)g Ft(--noediting)d Fu(option)k(is)f(supplied)e(at)j +(shell)f(in)m(v)m(o)s(cation.)45 b(Line)31 b(editing)150 +1074 y(is)g(also)h(used)f(when)f(using)h(the)g Ft(-e)g +Fu(option)h(to)g(the)f Ft(read)f Fu(builtin)h(command)g(\(see)h +(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(51\).)52 +b(By)35 b(default,)g(the)f(line)h(editing)f(commands)g(are)h(similar)f +(to)h(those)f(of)g(Emacs.)150 1293 y(A)h(vi-st)m(yle)h(line)f(editing)g +(in)m(terface)h(is)e(also)i(a)m(v)-5 b(ailable.)55 b(Line)34 +b(editing)h(can)g(b)s(e)f(enabled)g(at)h(an)m(y)g(time)150 +1402 y(using)h(the)g Ft(-o)30 b(emacs)35 b Fu(or)h Ft(-o)30 +b(vi)35 b Fu(options)i(to)g(the)f Ft(set)f Fu(builtin)h(command)g +(\(see)h(Section)g(4.3.1)h([The)150 1512 y(Set)31 b(Builtin],)g(page)g +(62\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g +Fu(or)i Ft(+o)e(vi)h Fu(options)h(to)g Ft(set)p Fu(.)150 +1804 y Fs(8.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150 +1963 y Fu(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h +(notation)g(used)f(to)h(represen)m(t)f(k)m(eystrok)m(es.)275 +2132 y(The)35 b(text)i Fj(C-k)f Fu(is)g(read)g(as)h(`Con)m(trol-K')g +(and)f(describ)s(es)f(the)h(c)m(haracter)i(pro)s(duced)d(when)g(the)h +Ft(k)150 2242 y Fu(k)m(ey)31 b(is)g(pressed)e(while)h(the)h(Con)m(trol) +g(k)m(ey)g(is)g(depressed.)275 2410 y(The)g(text)i Fj(M-k)e +Fu(is)h(read)f(as)i(`Meta-K')g(and)f(describ)s(es)f(the)h(c)m(haracter) +h(pro)s(duced)e(when)f(the)i(Meta)150 2520 y(k)m(ey)i(\(if)f(y)m(ou)h +(ha)m(v)m(e)g(one\))g(is)f(depressed,)g(and)f(the)h Ft(k)g +Fu(k)m(ey)h(is)f(pressed.)48 b(The)32 b(Meta)j(k)m(ey)e(is)h(lab)s +(eled)f Ft(ALT)150 2629 y Fu(on)c(man)m(y)h(k)m(eyb)s(oards.)40 +b(On)29 b(k)m(eyb)s(oards)g(with)h(t)m(w)m(o)h(k)m(eys)f(lab)s(eled)g +Ft(ALT)e Fu(\(usually)i(to)g(either)g(side)g(of)g(the)150 +2739 y(space)h(bar\),)f(the)g Ft(ALT)f Fu(on)h(the)g(left)h(side)f(is)g +(generally)h(set)f(to)h(w)m(ork)f(as)g(a)h(Meta)g(k)m(ey)-8 +b(.)42 b(The)29 b Ft(ALT)g Fu(k)m(ey)i(on)150 2849 y(the)c(righ)m(t)h +(ma)m(y)g(also)g(b)s(e)f(con\014gured)f(to)i(w)m(ork)f(as)h(a)f(Meta)i +(k)m(ey)f(or)f(ma)m(y)h(b)s(e)e(con\014gured)h(as)g(some)h(other)150 +2958 y(mo)s(di\014er,)i(suc)m(h)g(as)g(a)h(Comp)s(ose)f(k)m(ey)h(for)f +(t)m(yping)h(accen)m(ted)h(c)m(haracters.)275 3127 y(If)23 +b(y)m(ou)i(do)f(not)h(ha)m(v)m(e)h(a)f(Meta)g(or)g Ft(ALT)e +Fu(k)m(ey)-8 b(,)27 b(or)e(another)f(k)m(ey)i(w)m(orking)e(as)h(a)g +(Meta)h(k)m(ey)-8 b(,)27 b(the)d(iden)m(tical)150 3236 +y(k)m(eystrok)m(e)30 b(can)f(b)s(e)f(generated)h(b)m(y)g(t)m(yping)g +Ft(ESC)e Fl(\014rst)p Fu(,)j(and)e(then)g(t)m(yping)h +Ft(k)p Fu(.)40 b(Either)28 b(pro)s(cess)g(is)g(kno)m(wn)150 +3346 y(as)j Fr(metafying)39 b Fu(the)30 b Ft(k)g Fu(k)m(ey)-8 +b(.)275 3515 y(The)39 b(text)j Fj(M-C-k)d Fu(is)h(read)g(as)h +(`Meta-Con)m(trol-k')j(and)39 b(describ)s(es)h(the)g(c)m(haracter)i +(pro)s(duced)d(b)m(y)150 3624 y Fr(metafying)g Fj(C-k)p +Fu(.)275 3793 y(In)c(addition,)j(sev)m(eral)f(k)m(eys)g(ha)m(v)m(e)g +(their)f(o)m(wn)g(names.)58 b(Sp)s(eci\014cally)-8 b(,)38 +b Ft(DEL)p Fu(,)f Ft(ESC)p Fu(,)g Ft(LFD)p Fu(,)g Ft(SPC)p +Fu(,)g Ft(RET)p Fu(,)150 3902 y(and)d Ft(TAB)f Fu(all)j(stand)e(for)g +(themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init) +h(\014le)f(\(see)i(Section)f(8.3)150 4012 y([Readline)f(Init)g(File],)i +(page)e(114\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g +Ft(LFD)f Fu(k)m(ey)-8 b(,)36 b(t)m(yping)e Ft(C-j)e Fu(will)i(pro)s +(duce)150 4122 y(the)d(desired)e(c)m(haracter.)43 b(The)30 +b Ft(RET)f Fu(k)m(ey)i(ma)m(y)g(b)s(e)f(lab)s(eled)h +Ft(Return)d Fu(or)j Ft(Enter)d Fu(on)j(some)g(k)m(eyb)s(oards.)150 +4413 y Fs(8.2)68 b(Readline)47 b(In)l(teraction)150 4573 +y Fu(Often)32 b(during)g(an)g(in)m(teractiv)m(e)j(session)e(y)m(ou)g(t) +m(yp)s(e)g(in)f(a)h(long)g(line)g(of)f(text,)j(only)d(to)i(notice)g +(that)f(the)150 4682 y(\014rst)f(w)m(ord)g(on)g(the)g(line)h(is)g +(missp)s(elled.)46 b(The)32 b(Readline)h(library)f(giv)m(es)h(y)m(ou)g +(a)g(set)g(of)f(commands)g(for)150 4792 y(manipulating)e(the)g(text)h +(as)f(y)m(ou)g(t)m(yp)s(e)g(it)g(in,)g(allo)m(wing)h(y)m(ou)f(to)h +(just)e(\014x)g(y)m(our)h(t)m(yp)s(o,)g(and)g(not)g(forcing)150 +4902 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29 +b(of)f(the)h(line.)40 b(Using)28 b(these)h(editing)g(commands,)f(y)m +(ou)h(mo)m(v)m(e)g(the)g(cursor)150 5011 y(to)35 b(the)f(place)i(that)e +(needs)g(correction,)j(and)d(delete)h(or)f(insert)h(the)f(text)h(of)g +(the)f(corrections.)54 b(Then,)150 5121 y(when)24 b(y)m(ou)h(are)g +(satis\014ed)g(with)g(the)g(line,)i(y)m(ou)e(simply)f(press)g +Ft(RET)p Fu(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e +(at)h(the)h(end)150 5230 y(of)33 b(the)h(line)g(to)g(press)e +Ft(RET)p Fu(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g +(of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 5340 +y(within)c(the)g(line.)p eop end +%%Page: 112 118 +TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(112)150 299 y Fk(8.2.1)63 +b(Readline)40 b(Bare)h(Essen)m(tials)150 446 y Fu(In)31 +b(order)h(to)h(en)m(ter)g(c)m(haracters)g(in)m(to)g(the)g(line,)g +(simply)e(t)m(yp)s(e)i(them.)46 b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i +(app)s(ears)150 555 y(where)e(the)h(cursor)e(w)m(as,)j(and)e(then)g +(the)h(cursor)e(mo)m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47 +b(If)32 b(y)m(ou)h(mist)m(yp)s(e)g(a)150 665 y(c)m(haracter,)f(y)m(ou)f +(can)g(use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and)f +(delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)275 806 +y(Sometimes)i(y)m(ou)g(ma)m(y)h(mist)m(yp)s(e)e(a)i(c)m(haracter,)g +(and)e(not)i(notice)g(the)f(error)f(un)m(til)h(y)m(ou)g(ha)m(v)m(e)h(t) +m(yp)s(ed)150 916 y(sev)m(eral)e(other)f(c)m(haracters.)42 +b(In)28 b(that)i(case,)g(y)m(ou)f(can)g(t)m(yp)s(e)h +Fj(C-b)d Fu(to)j(mo)m(v)m(e)g(the)f(cursor)g(to)g(the)g(left,)i(and)150 +1026 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31 +b(y)m(ou)f(can)h(mo)m(v)m(e)h(the)e(cursor)g(to)h(the)g(righ)m(t)g +(with)f Fj(C-f)p Fu(.)275 1167 y(When)i(y)m(ou)h(add)f(text)h(in)f(the) +h(middle)f(of)h(a)g(line,)h(y)m(ou)e(will)h(notice)h(that)f(c)m +(haracters)h(to)g(the)e(righ)m(t)150 1277 y(of)d(the)g(cursor)f(are)h +(`pushed)e(o)m(v)m(er')j(to)g(mak)m(e)f(ro)s(om)g(for)f(the)h(text)h +(that)f(y)m(ou)g(ha)m(v)m(e)h(inserted.)40 b(Lik)m(ewise,)150 +1386 y(when)d(y)m(ou)g(delete)i(text)g(b)s(ehind)c(the)j(cursor,)h(c)m +(haracters)g(to)f(the)g(righ)m(t)g(of)g(the)g(cursor)e(are)i(`pulled) +150 1496 y(bac)m(k')24 b(to)f(\014ll)g(in)f(the)h(blank)f(space)i +(created)f(b)m(y)g(the)g(remo)m(v)-5 b(al)24 b(of)f(the)g(text.)39 +b(A)23 b(list)g(of)g(the)g(bare)f(essen)m(tials)150 1605 +y(for)30 b(editing)h(the)g(text)g(of)g(an)f(input)f(line)i(follo)m(ws.) +150 1775 y Fj(C-b)336 b Fu(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m +(haracter.)150 1941 y Fj(C-f)336 b Fu(Mo)m(v)m(e)32 b(forw)m(ard)e(one) +h(c)m(haracter.)150 2108 y Ft(DEL)e Fu(or)i Ft(Backspace)630 +2217 y Fu(Delete)i(the)d(c)m(haracter)i(to)f(the)g(left)g(of)f(the)h +(cursor.)150 2384 y Fj(C-d)336 b Fu(Delete)33 b(the)d(c)m(haracter)i +(underneath)d(the)i(cursor.)150 2550 y(Prin)m(ting)g(c)m(haracters)630 +2660 y(Insert)f(the)g(c)m(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g +(cursor.)150 2826 y Fj(C-_)e Fu(or)i Fj(C-x)e(C-u)630 +2936 y Fu(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8 +b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)m(y)i(bac)m(k)f(to)g(an)g +(empt)m(y)630 3045 y(line.)150 3215 y(\(Dep)s(ending)29 +b(on)h(y)m(our)f(con\014guration,)i(the)e Ft(Backspace)e +Fu(k)m(ey)k(b)s(e)d(set)j(to)f(delete)h(the)e(c)m(haracter)i(to)g(the) +150 3324 y(left)37 b(of)f(the)h(cursor)e(and)h(the)g +Ft(DEL)g Fu(k)m(ey)h(set)f(to)h(delete)h(the)e(c)m(haracter)i +(underneath)d(the)h(cursor,)i(lik)m(e)150 3434 y Fj(C-d)p +Fu(,)30 b(rather)g(than)g(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g +(the)f(cursor.\))150 3640 y Fk(8.2.2)63 b(Readline)40 +b(Mo)m(v)m(emen)m(t)h(Commands)150 3787 y Fu(The)27 b(ab)s(o)m(v)m(e)i +(table)g(describ)s(es)e(the)g(most)i(basic)f(k)m(eystrok)m(es)h(that)f +(y)m(ou)g(need)g(in)f(order)g(to)i(do)e(editing)i(of)150 +3897 y(the)k(input)f(line.)49 b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m +(enience,)j(man)m(y)d(other)g(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g +(in)h(addition)150 4006 y(to)j Fj(C-b)p Fu(,)f Fj(C-f)p +Fu(,)g Fj(C-d)p Fu(,)h(and)e Ft(DEL)p Fu(.)54 b(Here)35 +b(are)g(some)h(commands)e(for)h(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h +(the)150 4116 y(line.)150 4286 y Fj(C-a)336 b Fu(Mo)m(v)m(e)32 +b(to)g(the)e(start)h(of)g(the)f(line.)150 4452 y Fj(C-e)336 +b Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 +4618 y Fj(M-f)336 b Fu(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f +(where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.) +150 4785 y Fj(M-b)336 b Fu(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m +(ord.)150 4951 y Fj(C-l)336 b Fu(Clear)31 b(the)f(screen,)h(reprin)m +(ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 +5121 y(Notice)c(ho)m(w)f Fj(C-f)e Fu(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m +(haracter,)j(while)d Fj(M-f)e Fu(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m +(ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 5230 y(con)m(v)m(en)m(tion)32 +b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m +(haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150 +5340 y(w)m(ords.)p eop end +%%Page: 113 119 +TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(113)150 299 y Fk(8.2.3)63 +b(Readline)40 b(Killing)i(Commands)150 446 y Fr(Killing)35 +b Fu(text)28 b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i +(but)e(to)h(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f +(usually)150 555 y(b)m(y)g Fr(y)m(anking)35 b Fu(\(re-inserting\))28 +b(it)g(bac)m(k)f(in)m(to)h(the)f(line.)40 b(\(`Cut')27 +b(and)g(`paste')h(are)f(more)g(recen)m(t)h(jargon)f(for)150 +665 y(`kill')32 b(and)d(`y)m(ank'.\))275 801 y(If)g(the)i(description)f +(for)g(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g(text,)h(then)e(y)m +(ou)g(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150 911 y(can)g(get)g(the)g +(text)g(bac)m(k)g(in)f(a)h(di\013eren)m(t)g(\(or)g(the)f(same\))h +(place)h(later.)275 1047 y(When)23 b(y)m(ou)g(use)g(a)h(kill)g +(command,)g(the)g(text)g(is)f(sa)m(v)m(ed)i(in)e(a)g +Fr(kill-ring)p Fu(.)39 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h(consecutiv) +m(e)150 1157 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g(killed)h(text)g +(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f(bac)m(k,)h(y)m +(ou)g(get)g(it)f(all.)43 b(The)150 1267 y(kill)33 b(ring)f(is)g(not)h +(line)g(sp)s(eci\014c;)g(the)g(text)g(that)g(y)m(ou)g(killed)f(on)h(a)f +(previously)g(t)m(yp)s(ed)h(line)f(is)h(a)m(v)-5 b(ailable)150 +1376 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac)m(k)g(later,)h(when)d(y)m(ou) +i(are)g(t)m(yping)f(another)h(line.)275 1513 y(Here)f(is)h(the)f(list)h +(of)g(commands)f(for)g(killing)h(text.)150 1675 y Fj(C-k)336 +b Fu(Kill)31 b(the)f(text)i(from)e(the)g(curren)m(t)g(cursor)g(p)s +(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150 1836 +y Fj(M-d)336 b Fu(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g(of)h +(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,) +g(to)g(the)630 1946 y(end)j(of)g(the)h(next)f(w)m(ord.)41 +b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used) +f(b)m(y)g Fj(M-f)p Fu(.)150 2107 y Fj(M-DEL)240 b Fu(Kill)31 +b(from)f(the)h(cursor)f(the)g(start)h(of)g(the)g(curren)m(t)f(w)m(ord,) +h(or,)f(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)i(the)630 +2217 y(start)39 b(of)f(the)h(previous)f(w)m(ord.)64 b(W)-8 +b(ord)39 b(b)s(oundaries)e(are)i(the)f(same)h(as)g(those)f(used)g(b)m +(y)630 2326 y Fj(M-b)p Fu(.)150 2487 y Fj(C-w)336 b Fu(Kill)35 +b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)55 +b(This)34 b(is)h(di\013eren)m(t)h(than)e Fj(M-DEL)630 +2597 y Fu(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275 +2759 y(Here)42 b(is)f(ho)m(w)h(to)g Fr(y)m(ank)47 b Fu(the)42 +b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74 b(Y)-8 b(anking)43 +b(means)e(to)h(cop)m(y)h(the)e(most-)150 2869 y(recen)m(tly-killed)33 +b(text)e(from)f(the)g(kill)i(bu\013er.)150 3031 y Fj(C-y)336 +b Fu(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h(killed)f(text)g(bac)m +(k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f(cursor.)150 +3192 y Fj(M-y)336 b Fu(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h +(the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h +(the)g(prior)630 3302 y(command)30 b(is)h Fj(C-y)e Fu(or)h +Fj(M-y)p Fu(.)150 3503 y Fk(8.2.4)63 b(Readline)40 b(Argumen)m(ts)150 +3650 y Fu(Y)-8 b(ou)40 b(can)f(pass)g(n)m(umeric)f(argumen)m(ts)i(to)f +(Readline)h(commands.)67 b(Sometimes)39 b(the)g(argumen)m(t)h(acts)150 +3760 y(as)g(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g +Fl(sign)47 b Fu(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m +(t.)71 b(If)40 b(y)m(ou)150 3869 y(pass)33 b(a)h(negativ)m(e)i(argumen) +m(t)e(to)g(a)g(command)f(whic)m(h)g(normally)h(acts)g(in)f(a)h(forw)m +(ard)f(direction,)i(that)150 3979 y(command)g(will)h(act)g(in)f(a)h +(bac)m(kw)m(ard)f(direction.)57 b(F)-8 b(or)36 b(example,)h(to)f(kill)g +(text)g(bac)m(k)g(to)g(the)g(start)g(of)150 4088 y(the)31 +b(line,)g(y)m(ou)f(migh)m(t)h(t)m(yp)s(e)g(`)p Ft(M--)f(C-k)p +Fu('.)275 4225 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g +(argumen)m(ts)h(to)g(a)f(command)g(is)g(to)h(t)m(yp)s(e)f(meta)i +(digits)e(b)s(efore)150 4334 y(the)j(command.)42 b(If)30 +b(the)h(\014rst)f(`digit')i(t)m(yp)s(ed)f(is)g(a)g(min)m(us)f(sign)h +(\(`)p Ft(-)p Fu('\),)h(then)f(the)g(sign)f(of)h(the)g(argumen)m(t)150 +4444 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m +(e)g(t)m(yp)s(ed)f(one)h(meta)g(digit)g(to)f(get)i(the)e(argumen)m(t)h +(started,)i(y)m(ou)150 4554 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f +(of)h(the)g(digits,)h(and)f(then)f(the)h(command.)40 +b(F)-8 b(or)30 b(example,)g(to)f(giv)m(e)i(the)e Fj(C-d)150 +4663 y Fu(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f +(t)m(yp)s(e)h(`)p Ft(M-1)29 b(0)h(C-d)p Fu(',)39 b(whic)m(h)e(will)h +(delete)h(the)e(next)h(ten)150 4773 y(c)m(haracters)32 +b(on)e(the)h(input)e(line.)150 4974 y Fk(8.2.5)63 b(Searc)m(hing)40 +b(for)i(Commands)g(in)f(the)g(History)150 5121 y Fu(Readline)35 +b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)e(the)i +(command)f(history)g(\(see)h(Section)g(9.1)150 5230 y([Bash)i(History)h +(F)-8 b(acilities],)42 b(page)37 b(146\))i(for)d(lines)h(con)m(taining) +i(a)e(sp)s(eci\014ed)f(string.)60 b(There)36 b(are)i(t)m(w)m(o)150 +5340 y(searc)m(h)31 b(mo)s(des:)40 b Fr(incremen)m(tal)35 +b Fu(and)30 b Fr(non-incremen)m(tal)p Fu(.)p eop end +%%Page: 114 120 +TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(114)275 299 y(Incremen)m(tal)26 +b(searc)m(hes)h(b)s(egin)e(b)s(efore)g(the)h(user)f(has)h(\014nished)e +(t)m(yping)i(the)g(searc)m(h)g(string.)39 b(As)26 b(eac)m(h)150 +408 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s +(ed,)g(Readline)g(displa)m(ys)g(the)f(next)h(en)m(try)g(from)e(the)i +(history)150 518 y(matc)m(hing)25 b(the)f(string)g(t)m(yp)s(ed)g(so)g +(far.)39 b(An)23 b(incremen)m(tal)j(searc)m(h)e(requires)g(only)g(as)g +(man)m(y)g(c)m(haracters)i(as)150 628 y(needed)i(to)i(\014nd)d(the)i +(desired)f(history)h(en)m(try)-8 b(.)41 b(T)-8 b(o)29 +b(searc)m(h)h(bac)m(kw)m(ard)f(in)f(the)h(history)g(for)f(a)i +(particular)150 737 y(string,)g(t)m(yp)s(e)f Fj(C-r)p +Fu(.)40 b(T)m(yping)29 b Fj(C-s)g Fu(searc)m(hes)h(forw)m(ard)f +(through)g(the)g(history)-8 b(.)41 b(The)29 b(c)m(haracters)i(presen)m +(t)150 847 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g +Ft(isearch-terminators)33 b Fu(v)-5 b(ariable)39 b(are)f(used)f(to)i +(terminate)g(an)f(incremen)m(tal)150 956 y(searc)m(h.)71 +b(If)40 b(that)h(v)-5 b(ariable)41 b(has)f(not)h(b)s(een)e(assigned)i +(a)f(v)-5 b(alue,)44 b(the)c Ft(ESC)g Fu(and)f Fj(C-J)h +Fu(c)m(haracters)i(will)150 1066 y(terminate)h(an)g(incremen)m(tal)g +(searc)m(h.)78 b Fj(C-g)41 b Fu(will)i(ab)s(ort)f(an)g(incremen)m(tal)i +(searc)m(h)f(and)f(restore)h(the)150 1176 y(original)30 +b(line.)41 b(When)28 b(the)h(searc)m(h)h(is)f(terminated,)h(the)f +(history)g(en)m(try)g(con)m(taining)h(the)f(searc)m(h)h(string)150 +1285 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 1416 +y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)g(en)m(tries)g(in)e(the)h +(history)g(list,)h(t)m(yp)s(e)g Fj(C-r)e Fu(or)h Fj(C-s)f +Fu(as)h(appropriate.)43 b(This)150 1525 y(will)26 b(searc)m(h)h(bac)m +(kw)m(ard)g(or)f(forw)m(ard)g(in)f(the)i(history)f(for)g(the)g(next)g +(en)m(try)h(matc)m(hing)g(the)f(searc)m(h)h(string)150 +1635 y(t)m(yp)s(ed)37 b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i +(sequence)f(b)s(ound)e(to)i(a)g(Readline)h(command)e(will)h(terminate)h +(the)150 1744 y(searc)m(h)26 b(and)f(execute)i(that)f(command.)39 +b(F)-8 b(or)26 b(instance,)h(a)f Ft(RET)f Fu(will)g(terminate)i(the)f +(searc)m(h)g(and)e(accept)150 1854 y(the)30 b(line,)g(thereb)m(y)f +(executing)i(the)e(command)g(from)g(the)h(history)f(list.)41 +b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 1964 +y(terminate)i(the)g(searc)m(h,)g(mak)m(e)h(the)e(last)h(line)g(found)e +(the)i(curren)m(t)f(line,)h(and)f(b)s(egin)g(editing.)275 +2094 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g +(searc)m(h)f(string.)54 b(If)34 b(t)m(w)m(o)j Fj(C-r)p +Fu(s)c(are)i(t)m(yp)s(ed)g(without)150 2204 y(an)m(y)i(in)m(terv)m +(ening)g(c)m(haracters)h(de\014ning)e(a)h(new)f(searc)m(h)h(string,)h +(an)m(y)f(remem)m(b)s(ered)e(searc)m(h)i(string)g(is)150 +2313 y(used.)275 2444 y(Non-incremen)m(tal)48 b(searc)m(hes)g(read)e +(the)h(en)m(tire)h(searc)m(h)f(string)g(b)s(efore)f(starting)h(to)h +(searc)m(h)f(for)150 2553 y(matc)m(hing)d(history)e(lines.)78 +b(The)42 b(searc)m(h)h(string)g(ma)m(y)g(b)s(e)f(t)m(yp)s(ed)g(b)m(y)g +(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150 2663 y(con)m(ten)m(ts)32 +b(of)f(the)f(curren)m(t)g(line.)150 2896 y Fs(8.3)68 +b(Readline)47 b(Init)e(File)150 3055 y Fu(Although)f(the)g(Readline)g +(library)f(comes)i(with)e(a)h(set)h(of)f(Emacs-lik)m(e)h(k)m +(eybindings)f(installed)g(b)m(y)150 3165 y(default,)26 +b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren)m(t)f(set)g(of)g(k) +m(eybindings.)38 b(An)m(y)25 b(user)f(can)h(customize)h(programs)150 +3274 y(that)45 b(use)f(Readline)h(b)m(y)f(putting)g(commands)g(in)g(an) +g Fr(inputrc)49 b Fu(\014le,)g(con)m(v)m(en)m(tionally)e(in)d(his)g +(home)150 3384 y(directory)-8 b(.)59 b(The)35 b(name)i(of)f(this)g +(\014le)g(is)g(tak)m(en)h(from)f(the)g(v)-5 b(alue)37 +b(of)f(the)g(shell)h(v)-5 b(ariable)36 b Ft(INPUTRC)p +Fu(.)56 b(If)150 3493 y(that)36 b(v)-5 b(ariable)36 b(is)f(unset,)h +(the)f(default)h(is)f Ft(~/.inputrc)p Fu(.)52 b(If)35 +b(that)g(\014le)h(do)s(es)e(not)i(exist)g(or)f(cannot)h(b)s(e)150 +3603 y(read,)f(the)f(ultimate)h(default)f(is)g Ft(/etc/inputrc)p +Fu(.)47 b(The)33 b Ft(bind)g Fu(builtin)g(command)h(can)g(also)h(b)s(e) +e(used)150 3713 y(to)e(set)g(Readline)g(k)m(eybindings)f(and)g(v)-5 +b(ariables.)41 b(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page)g +(51.)275 3843 y(When)e(a)h(program)f(whic)m(h)h(uses)f(the)h(Readline)g +(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h(read,)g(and)f(the) +150 3953 y(k)m(ey)i(bindings)e(are)i(set.)275 4083 y(In)26 +b(addition,)i(the)f Ft(C-x)i(C-r)d Fu(command)h(re-reads)g(this)f(init) +h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m(hanges)150 +4193 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g(it.)150 +4384 y Fk(8.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150 +4531 y Fu(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w) +m(ed)h(in)d(the)h(Readline)h(init)f(\014le.)73 b(Blank)41 +b(lines)h(are)150 4641 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h +(a)g(`)p Ft(#)p Fu(')g(are)h(commen)m(ts.)73 b(Lines)41 +b(b)s(eginning)f(with)g(a)i(`)p Ft($)p Fu(')f(indicate)150 +4750 y(conditional)e(constructs)f(\(see)g(Section)h(8.3.2)g +([Conditional)g(Init)e(Constructs],)j(page)e(122\).)64 +b(Other)150 4860 y(lines)31 b(denote)g(v)-5 b(ariable)31 +b(settings)g(and)f(k)m(ey)h(bindings.)150 5011 y(V)-8 +b(ariable)32 b(Settings)630 5121 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e +(the)i(run-time)f(b)s(eha)m(vior)g(of)h(Readline)g(b)m(y)f(altering)h +(the)g(v)-5 b(alues)41 b(of)630 5230 y(v)-5 b(ariables)34 +b(in)f(Readline)i(using)e(the)g Ft(set)g Fu(command)g(within)g(the)h +(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5340 y(is)d(simple:)p +eop end +%%Page: 115 121 +TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(115)870 299 y Ft(set)47 +b Fj(variable)e(value)630 436 y Fu(Here,)29 b(for)e(example,)h(is)g(ho) +m(w)f(to)h(c)m(hange)g(from)f(the)g(default)h(Emacs-lik)m(e)h(k)m(ey)f +(binding)e(to)630 545 y(use)k Ft(vi)g Fu(line)h(editing)g(commands:)870 +682 y Ft(set)47 b(editing-mode)d(vi)630 819 y Fu(V)-8 +b(ariable)36 b(names)f(and)g(v)-5 b(alues,)36 b(where)f(appropriate,)h +(are)g(recognized)g(without)f(regard)630 929 y(to)c(case.)42 +b(Unrecognized)31 b(v)-5 b(ariable)31 b(names)g(are)f(ignored.)630 +1066 y(Bo)s(olean)c(v)-5 b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f +(set)i(to)g(on)f(or)g(o\013)7 b(\))25 b(are)h(set)f(to)h(on)f(if)g(the) +g(v)-5 b(alue)26 b(is)630 1176 y(n)m(ull)e(or)g(empt)m(y)-8 +b(,)27 b Fr(on)d Fu(\(case-insensitiv)m(e\),)29 b(or)24 +b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) +-5 b(ariable)630 1285 y(b)s(eing)30 b(set)h(to)g(o\013.)630 +1422 y(The)37 b Ft(bind)30 b(-V)37 b Fu(command)g(lists)i(the)f(curren) +m(t)f(Readline)i(v)-5 b(ariable)38 b(names)g(and)f(v)-5 +b(alues.)630 1532 y(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page) +g(51.)630 1669 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g +(is)g(c)m(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 +b(ariables.)630 1833 y Ft(bell-style)1110 1943 y Fu(Con)m(trols)44 +b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m(ts)f(to)h(ring)e(the)h +(termi-)1110 2052 y(nal)37 b(b)s(ell.)61 b(If)37 b(set)h(to)g(`)p +Ft(none)p Fu(',)g(Readline)g(nev)m(er)g(rings)e(the)i(b)s(ell.)61 +b(If)36 b(set)i(to)1110 2162 y(`)p Ft(visible)p Fu(',)32 +b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g(one)g(is)g(a)m(v)-5 +b(ailable.)51 b(If)33 b(set)g(to)1110 2271 y(`)p Ft(audible)p +Fu(')j(\(the)i(default\),)i(Readline)e(attempts)g(to)h(ring)e(the)g +(terminal's)1110 2381 y(b)s(ell.)630 2545 y Ft(bind-tty-special-chars) +1110 2655 y Fu(If)e(set)g(to)h(`)p Ft(on)p Fu(')f(\(the)g(default\),)i +(Readline)f(attempts)g(to)g(bind)d(the)i(con)m(trol)1110 +2765 y(c)m(haracters)30 b(treated)g(sp)s(ecially)g(b)m(y)f(the)g(k)m +(ernel's)h(terminal)f(driv)m(er)g(to)h(their)1110 2874 +y(Readline)h(equiv)-5 b(alen)m(ts.)630 3039 y Ft(blink-matching-paren) +1110 3148 y Fu(If)36 b(set)g(to)h(`)p Ft(on)p Fu(',)h(Readline)f +(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j(the)f(cursor)e(to)i(an)1110 +3258 y(op)s(ening)k(paren)m(thesis)h(when)f(a)h(closing)h(paren)m +(thesis)e(is)h(inserted.)74 b(The)1110 3367 y(default)31 +b(is)f(`)p Ft(off)p Fu('.)630 3532 y Ft(colored-completion-prefi)o(x) +1110 3641 y Fu(If)f(set)h(to)g(`)p Ft(on)p Fu(',)g(when)e(listing)i +(completions,)h(Readline)f(displa)m(ys)g(the)f(com-)1110 +3751 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s(ossible)f +(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110 +3861 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g +(v)-5 b(alue)40 b(of)g(the)g Ft(LS_COLORS)1110 3970 y +Fu(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30 +b(default)h(is)f(`)p Ft(off)p Fu('.)630 4134 y Ft(colored-stats)1110 +4244 y Fu(If)c(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(displa)m(ys)g +(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110 +4354 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67 +b(The)38 b(color)j(de\014nitions)d(are)i(tak)m(en)1110 +4463 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Ft(LS_COLORS)d +Fu(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110 +4573 y(is)30 b(`)p Ft(off)p Fu('.)630 4737 y Ft(comment-begin)1110 +4847 y Fu(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of) +h(the)h(line)f(when)g(the)1110 4956 y Ft(insert-comment)26 +b Fu(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5 +b(alue)31 b(is)f Ft("#")p Fu(.)630 5121 y Ft(completion-display-width) +1110 5230 y Fu(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used) +g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 5340 +y(when)28 b(p)s(erforming)g(completion.)41 b(The)29 b(v)-5 +b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)p +eop end +%%Page: 116 122 +TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(116)1110 299 y(0)27 +b(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39 +b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110 +408 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e +(line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630 +587 y Ft(completion-ignore-case)1110 696 y Fu(If)d(set)h(to)g(`)p +Ft(on)p Fu(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i +(and)e(completion)1110 806 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)40 +b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Ft(off)p +Fu('.)630 984 y Ft(completion-map-case)1110 1093 y Fu(If)22 +b(set)g(to)h(`)p Ft(on)p Fu(',)h(and)e Fr(completion-ignore-case)31 +b Fu(is)22 b(enabled,)i(Readline)f(treats)1110 1203 y(h)m(yphens)29 +b(\(`)p Ft(-)p Fu('\))j(and)e(underscores)g(\(`)p Ft(_)p +Fu('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110 +1313 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f +(completion.)85 b(The)44 b(default)1110 1422 y(v)-5 b(alue)31 +b(is)f(`)p Ft(off)p Fu('.)630 1600 y Ft(completion-prefix-displa)o +(y-le)o(ngth)1110 1710 y Fu(The)h(length)g(in)g(c)m(haracters)i(of)f +(the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110 +1819 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s +(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 1929 +y(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e +(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 2039 +y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible) +f(completions.)630 2217 y Ft(completion-query-items)1110 +2326 y Fu(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h +(that)g(determines)f(when)f(the)i(user)1110 2436 y(is)43 +b(ask)m(ed)g(whether)f(the)g(list)h(of)g(p)s(ossibilities)g(should)f(b) +s(e)g(displa)m(y)m(ed.)77 b(If)1110 2545 y(the)29 b(n)m(um)m(b)s(er)f +(of)h(p)s(ossible)g(completions)h(is)f(greater)h(than)f(or)g(equal)g +(to)h(this)1110 2655 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g +(whether)f(or)h(not)g(the)g(user)f(wishes)g(to)i(view)1110 +2765 y(them;)33 b(otherwise,)f(they)g(are)g(simply)g(listed.)45 +b(This)31 b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110 +2874 y(to)39 b(an)f(in)m(teger)i(v)-5 b(alue)39 b(greater)g(than)f(or)h +(equal)g(to)g(0.)65 b(A)38 b(negativ)m(e)i(v)-5 b(alue)1110 +2984 y(means)30 b(Readline)h(should)f(nev)m(er)g(ask.)41 +b(The)30 b(default)h(limit)g(is)f Ft(100)p Fu(.)630 3162 +y Ft(convert-meta)1110 3271 y Fu(If)22 b(set)g(to)h(`)p +Ft(on)p Fu(',)h(Readline)f(will)f(con)m(v)m(ert)i(c)m(haracters)f(with) +f(the)g(eigh)m(th)h(bit)f(set)1110 3381 y(to)33 b(an)e +Fm(asci)r(i)h Fu(k)m(ey)h(sequence)f(b)m(y)g(stripping)f(the)h(eigh)m +(th)h(bit)f(and)f(pre\014xing)1110 3491 y(an)24 b Ft(ESC)g +Fu(c)m(haracter,)j(con)m(v)m(erting)f(them)f(to)g(a)g(meta-pre\014xed)f +(k)m(ey)h(sequence.)1110 3600 y(The)i(default)h(v)-5 +b(alue)28 b(is)f(`)p Ft(on)p Fu(',)i(but)d(will)i(b)s(e)f(set)h(to)g(`) +p Ft(off)p Fu(')g(if)f(the)h(lo)s(cale)h(is)f(one)1110 +3710 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630 +3888 y Ft(disable-completion)1110 3998 y Fu(If)k(set)h(to)h(`)p +Ft(On)p Fu(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60 +b(Completion)1110 4107 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h +(in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110 +4217 y(to)31 b Ft(self-insert)p Fu(.)38 b(The)30 b(default)g(is)h(`)p +Ft(off)p Fu('.)630 4395 y Ft(echo-control-characters)1110 +4504 y Fu(When)f(set)h(to)g(`)p Ft(on)p Fu(',)f(on)g(op)s(erating)h +(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 4614 +y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d +(to)j(a)f(signal)g(generated)1110 4724 y(from)e(the)g(k)m(eyb)s(oard.) +41 b(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 4902 +y Ft(editing-mode)1110 5011 y Fu(The)d Ft(editing-mode)e +Fu(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k) +m(ey)i(bind-)1110 5121 y(ings)25 b(is)g(used.)38 b(By)26 +b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,) +1110 5230 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to) +h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110 +5340 y(b)s(e)g(set)h(to)g(either)g(`)p Ft(emacs)p Fu(')e(or)h(`)p +Ft(vi)p Fu('.)p eop end +%%Page: 117 123 +TeXDict begin 117 122 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(117)630 299 y Ft +(emacs-mode-string)1110 408 y Fu(If)33 b(the)h Fr(sho)m(w-mo)s +(de-in-prompt)h Fu(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f +(is)h(dis-)1110 518 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g +(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110 +628 y(emacs)g(editing)h(mo)s(de)e(is)h(activ)m(e.)40 +b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f(lik)m(e)h(a)h(k)m(ey)f +(bind-)1110 737 y(ing,)27 b(so)f(the)f(standard)g(set)h(of)f(meta-)i +(and)e(con)m(trol)i(pre\014xes)d(and)h(bac)m(kslash)1110 +847 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5 b(ailable.)41 +b(Use)25 b(the)f(`)p Ft(\\1)p Fu(')f(and)h(`)p Ft(\\2)p +Fu(')g(escap)s(es)g(to)g(b)s(egin)1110 956 y(and)37 b(end)g(sequences)h +(of)f(non-prin)m(ting)h(c)m(haracters,)j(whic)m(h)c(can)h(b)s(e)f(used) +1110 1066 y(to)h(em)m(b)s(ed)f(a)g(terminal)h(con)m(trol)h(sequence)f +(in)m(to)g(the)f(mo)s(de)g(string.)61 b(The)1110 1176 +y(default)31 b(is)f(`)p Ft(@)p Fu('.)630 1332 y Ft +(enable-bracketed-paste)1110 1442 y Fu(When)24 b(set)h(to)h(`)p +Ft(On)p Fu(',)g(Readline)f(will)g(con\014gure)f(the)h(terminal)g(in)f +(a)h(w)m(a)m(y)g(that)1110 1551 y(will)k(enable)f(it)h(to)g(insert)g +(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e(as)i(a)f +(single)1110 1661 y(string)33 b(of)f(c)m(haracters,)j(instead)e(of)g +(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110 +1771 y(b)s(een)e(read)i(from)e(the)i(k)m(eyb)s(oard.)49 +b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)m(haracters)1110 +1880 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f(editing)h(commands.)41 +b(The)29 b(default)i(is)f(`)p Ft(On)p Fu('.)630 2037 +y Ft(enable-keypad)1110 2146 y Fu(When)23 b(set)h(to)g(`)p +Ft(on)p Fu(',)h(Readline)f(will)g(try)f(to)h(enable)g(the)f +(application)i(k)m(eypad)1110 2256 y(when)h(it)h(is)f(called.)41 +b(Some)27 b(systems)f(need)h(this)f(to)h(enable)g(the)g(arro)m(w)g(k)m +(eys.)1110 2365 y(The)j(default)g(is)h(`)p Ft(off)p Fu('.)630 +2522 y Ft(enable-meta-key)1110 2632 y Fu(When)40 b(set)g(to)g(`)p +Ft(on)p Fu(',)j(Readline)d(will)g(try)g(to)g(enable)g(an)m(y)g(meta)h +(mo)s(di\014er)1110 2741 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h +(supp)s(ort)d(when)h(it)h(is)g(called.)76 b(On)41 b(man)m(y)1110 +2851 y(terminals,)c(the)e(meta)h(k)m(ey)g(is)f(used)g(to)h(send)e(eigh) +m(t-bit)j(c)m(haracters.)56 b(The)1110 2960 y(default)31 +b(is)f(`)p Ft(on)p Fu('.)630 3117 y Ft(expand-tilde)1110 +3226 y Fu(If)d(set)h(to)h(`)p Ft(on)p Fu(',)f(tilde)g(expansion)g(is)f +(p)s(erformed)f(when)h(Readline)h(attempts)1110 3336 +y(w)m(ord)i(completion.)42 b(The)30 b(default)g(is)h(`)p +Ft(off)p Fu('.)630 3493 y Ft(history-preserve-point)1110 +3602 y Fu(If)41 b(set)h(to)h(`)p Ft(on)p Fu(',)i(the)c(history)h(co)s +(de)g(attempts)h(to)f(place)h(the)f(p)s(oin)m(t)f(\(the)1110 +3712 y(curren)m(t)35 b(cursor)g(p)s(osition\))g(at)h(the)g(same)f(lo)s +(cation)i(on)e(eac)m(h)h(history)g(line)1110 3821 y(retriev)m(ed)h +(with)f Ft(previous-history)c Fu(or)37 b Ft(next-history)p +Fu(.)55 b(The)36 b(default)1110 3931 y(is)30 b(`)p Ft(off)p +Fu('.)630 4088 y Ft(history-size)1110 4197 y Fu(Set)39 +b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g(en)m(tries)h(sa)m +(v)m(ed)g(in)f(the)g(history)1110 4307 y(list.)51 b(If)34 +b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f(en)m(tries)g(are)g +(deleted)h(and)e(no)1110 4416 y(new)e(en)m(tries)i(are)f(sa)m(v)m(ed.) +46 b(If)31 b(set)h(to)h(a)f(v)-5 b(alue)32 b(less)g(than)f(zero,)i(the) +f(n)m(um)m(b)s(er)1110 4526 y(of)f(history)f(en)m(tries)h(is)g(not)g +(limited.)42 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history) +1110 4635 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 +b(an)h(attempt)h(is)f(made)g(to)h(set)f Fr(history-size)39 +b Fu(to)1110 4745 y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 +b(the)g(maxim)m(um)f(n)m(um)m(b)s(er)f(of)h(history)h(en)m(tries)g +(will)1110 4855 y(b)s(e)c(set)h(to)g(500.)630 5011 y +Ft(horizontal-scroll-mode)1110 5121 y Fu(This)k(v)-5 +b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f(`)p +Ft(on)p Fu(')g(or)g(`)p Ft(off)p Fu('.)57 b(Setting)36 +b(it)g(to)h(`)p Ft(on)p Fu(')1110 5230 y(means)26 b(that)h(the)f(text)h +(of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m +(tally)1110 5340 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i +(are)g(longer)h(than)e(the)h(width)f(of)h(the)p eop end +%%Page: 118 124 +TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(118)1110 299 y(screen,)28 +b(instead)g(of)f(wrapping)f(on)m(to)i(a)g(new)e(screen)i(line.)40 +b(This)26 b(v)-5 b(ariable)28 b(is)1110 408 y(automatically)k(set)e(to) +g(`)p Ft(on)p Fu(')f(for)g(terminals)g(of)h(heigh)m(t)g(1.)41 +b(By)29 b(default,)h(this)1110 518 y(v)-5 b(ariable)31 +b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)630 719 y Ft(input-meta)1110 +829 y Fu(If)f(set)g(to)h(`)p Ft(on)p Fu(',)g(Readline)g(will)f(enable)h +(eigh)m(t-bit)h(input)d(\(it)i(will)f(not)h(clear)1110 +938 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h(c)m(haracters)h(it)f +(reads\),)j(regardless)c(of)h(what)g(the)1110 1048 y(terminal)k(claims) +h(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5 +b(alue)44 b(is)g(`)p Ft(off)p Fu(',)j(but)1110 1157 y(Readline)24 +b(will)h(set)f(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)g(lo)s(cale)i(con) +m(tains)f(eigh)m(t-bit)g(c)m(haracters.)1110 1267 y(The)30 +b(name)g Ft(meta-flag)e Fu(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5 +b(ariable.)630 1468 y Ft(isearch-terminators)1110 1577 +y Fu(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e(terminate)j +(an)f(incremen)m(tal)1110 1687 y(searc)m(h)25 b(without)g(subsequen)m +(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g(command)1110 +1797 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h(page)e(113\).)62 +b(If)37 b(this)g(v)-5 b(ariable)38 b(has)f(not)1110 1906 +y(b)s(een)e(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h +Ft(ESC)d Fu(and)h Fj(C-J)g Fu(will)h(terminate)g(an)1110 +2016 y(incremen)m(tal)c(searc)m(h.)630 2217 y Ft(keymap)192 +b Fu(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h +(for)f(k)m(ey)h(binding)1110 2326 y(commands.)71 b(Built-in)41 +b Ft(keymap)e Fu(names)h(are)h Ft(emacs)p Fu(,)h Ft(emacs-standard)p +Fu(,)1110 2436 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p +Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p +Fu(,)f(and)1110 2545 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44 +b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g Ft(vi-command)c +Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 2655 y(synon)m(ym\);)41 +b Ft(emacs)c Fu(is)h(equiv)-5 b(alen)m(t)39 b(to)f Ft(emacs-standard)p +Fu(.)59 b(Applications)1110 2765 y(ma)m(y)32 b(add)e(additional)i +(names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f +Ft(emacs)p Fu(.)41 b(The)30 b(v)-5 b(alue)1110 2874 y(of)31 +b(the)f Ft(editing-mode)d Fu(v)-5 b(ariable)31 b(also)h(a\013ects)f +(the)g(default)g(k)m(eymap.)630 3075 y Ft(keyseq-timeout)1110 +3185 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m +(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 3294 +y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f +(form)g(a)g(complete)h(k)m(ey)1110 3404 y(sequence)j(using)e(the)i +(input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input) +1110 3513 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49 +b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110 +3623 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter) +g(but)f(complete)j(k)m(ey)e(se-)1110 3733 y(quence.)c(Readline)26 +b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h +(input)1110 3842 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m +(t)f(input)g(source)h(\()p Ft(rl_instream)d Fu(b)m(y)i(default\).)1110 +3952 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h +(milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that) +1110 4061 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g +(additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23 +b(is)1110 4171 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f +(equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5 +b(alue,)1110 4281 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h +(k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110 +4390 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 +b(alue)31 b(is)g Ft(500)p Fu(.)630 4591 y Ft(mark-directories)1110 +4701 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e(directory) +f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110 +4810 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 +5011 y Ft(mark-modified-lines)1110 5121 y Fu(This)k(v)-5 +b(ariable,)38 b(when)d(set)h(to)h(`)p Ft(on)p Fu(',)g(causes)g +(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 5230 y(terisk)f(\(`)p +Ft(*)p Fu('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f +(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 5340 y(This)d(v)-5 +b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g(default.)p +eop end +%%Page: 119 125 +TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(119)630 299 y Ft +(mark-symlinked-directori)o(es)1110 408 y Fu(If)59 b(set)h(to)g(`)p +Ft(on)p Fu(',)67 b(completed)60 b(names)f(whic)m(h)g(are)h(sym)m(b)s +(olic)g(links)f(to)1110 518 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)f +(app)s(ended)f(\(sub)5 b(ject)70 b(to)g(the)g(v)-5 b(alue)70 +b(of)1110 628 y Ft(mark-directories)p Fu(\).)37 b(The)30 +b(default)g(is)g(`)p Ft(off)p Fu('.)630 778 y Ft(match-hidden-files) +1110 888 y Fu(This)21 b(v)-5 b(ariable,)25 b(when)d(set)g(to)h(`)p +Ft(on)p Fu(',)h(causes)f(Readline)g(to)g(matc)m(h)g(\014les)f(whose) +1110 998 y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p +Fu(')g(\(hidden)f(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 +1107 y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p +Fu(',)i(the)e(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f +(b)m(y)1110 1217 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f +(completed.)53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p +Ft(on)p Fu(')g(b)m(y)1110 1326 y(default.)630 1477 y +Ft(menu-complete-display-pr)o(efix)1110 1587 y Fu(If)f(set)h(to)g(`)p +Ft(on)p Fu(',)h(men)m(u)e(completion)i(displa)m(ys)e(the)h(common)g +(pre\014x)e(of)i(the)1110 1696 y(list)k(of)g(p)s(ossible)f(completions) +i(\(whic)m(h)e(ma)m(y)h(b)s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 +1806 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p +Ft(off)p Fu('.)630 1956 y Ft(output-meta)1110 2066 y +Fu(If)35 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y) +f(c)m(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 2176 +y(set)h(directly)g(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s +(e)h(sequence.)59 b(The)1110 2285 y(default)26 b(is)f(`)p +Ft(off)p Fu(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p +Ft(on)p Fu(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110 +2395 y(eigh)m(t-bit)k(c)m(haracters.)630 2545 y Ft(page-completions) +1110 2655 y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(Readline)g(uses)e +(an)h(in)m(ternal)h Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y) +1110 2765 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g +(time.)47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Ft(on)p +Fu(')1110 2874 y(b)m(y)e(default.)630 3025 y Ft +(print-completions-horizo)o(ntal)o(ly)1110 3134 y Fu(If)23 +b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)f(displa)m(y)g +(completions)h(with)f(matc)m(hes)h(sorted)1110 3244 y(horizon)m(tally) +45 b(in)e(alphab)s(etical)i(order,)i(rather)c(than)g(do)m(wn)g(the)h +(screen.)1110 3354 y(The)30 b(default)g(is)h(`)p Ft(off)p +Fu('.)630 3504 y Ft(revert-all-at-newline)1110 3614 y +Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f(all)h +(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 3724 +y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41 +b(By)29 b(default,)g(history)g(lines)1110 3833 y(ma)m(y)42 +b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h +(across)g(calls)h(to)1110 3943 y Ft(readline)p Fu(.)38 +b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)630 4093 +y Ft(show-all-if-ambiguous)1110 4203 y Fu(This)f(alters)i(the)f +(default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40 +b(If)29 b(set)1110 4313 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h) +g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause) +1110 4422 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i +(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 4532 y(The)30 +b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p Fu('.)630 +4682 y Ft(show-all-if-unmodified)1110 4792 y Fu(This)38 +b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h +(functions)e(in)h(a)1110 4902 y(fashion)25 b(similar)h(to)g +Fr(sho)m(w-all-if-am)m(biguous)p Fu(.)41 b(If)25 b(set)h(to)h(`)p +Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 5011 y(ha)m(v)m(e)32 +b(more)f(than)f(one)i(p)s(ossible)e(completion)i(without)f(an)m(y)g(p)s +(ossible)f(par-)1110 5121 y(tial)43 b(completion)h(\(the)f(p)s(ossible) +f(completions)h(don't)f(share)g(a)h(common)1110 5230 +y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g +(immediately)i(instead)e(of)h(ring-)1110 5340 y(ing)g(the)f(b)s(ell.)41 +b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Ft(off)p +Fu('.)p eop end +%%Page: 120 126 +TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(120)630 299 y Ft +(show-mode-in-prompt)1110 408 y Fu(If)24 b(set)h(to)g(`)p +Ft(on)p Fu(',)g(add)f(a)h(string)f(to)h(the)f(b)s(eginning)g(of)g(the)h +(prompt)e(indicating)1110 518 y(the)33 b(editing)h(mo)s(de:)46 +b(emacs,)35 b(vi)e(command,)h(or)f(vi)h(insertion.)49 +b(The)32 b(mo)s(de)1110 628 y(strings)45 b(are)h(user-settable)g +(\(e.g.,)51 b Fr(emacs-mo)s(de-string)8 b Fu(\).)87 b(The)45 +b(default)1110 737 y(v)-5 b(alue)31 b(is)f(`)p Ft(off)p +Fu('.)630 887 y Ft(skip-completed-text)1110 996 y Fu(If)i(set)i(to)f(`) +p Ft(on)p Fu(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s(eha) +m(vior)f(when)f(in-)1110 1106 y(serting)d(a)h(single)g(matc)m(h)f(in)m +(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-) +1110 1215 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m +(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)1110 +1325 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h +(that)f(matc)m(h)g(c)m(haracters)1110 1435 y(after)c(p)s(oin)m(t)g(in)g +(the)g(w)m(ord)f(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g +(w)m(ord)1110 1544 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g +(duplicated.)45 b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110 +1654 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g +(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 1763 y(`)p Ft(Makefile)p +Fu(')c(will)i(result)f(in)g(`)p Ft(Makefile)p Fu(')f(rather)h(than)h(`) +p Ft(Makefilefile)p Fu(',)1110 1873 y(assuming)d(there)g(is)h(a)f +(single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5 +b(alue)1110 1983 y(is)30 b(`)p Ft(off)p Fu('.)630 2132 +y Ft(vi-cmd-mode-string)1110 2242 y Fu(If)j(the)h Fr(sho)m(w-mo)s +(de-in-prompt)h Fu(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f +(is)h(dis-)1110 2351 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the) +g(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110 +2461 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command) +g(mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110 +2570 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f +(standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110 +2680 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is) +g(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Ft(\\1)p +Fu(')1110 2790 y(and)23 b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s +(egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 +2899 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a) +h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 3009 +y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p +Ft(\(cmd\))p Fu('.)630 3158 y Ft(vi-ins-mode-string)1110 +3268 y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5 +b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110 +3377 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f +(of)h(the)f(primary)f(prompt)g(when)1110 3487 y(vi)35 +b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.) +54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 3597 y(panded)26 +b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g +(meta-)h(and)e(con)m(trol)1110 3706 y(pre\014xes)34 b(and)g(bac)m +(kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57 +b(Use)35 b(the)g(`)p Ft(\\1)p Fu(')1110 3816 y(and)23 +b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g +(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 3925 +y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h +(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 4035 +y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p +Ft(\(ins\))p Fu('.)630 4184 y Ft(visible-stats)1110 4294 +y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(a)f(c)m(haracter)i(denoting)e +(a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the)1110 +4403 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42 +b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)150 4553 +y(Key)f(Bindings)630 4663 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h +(k)m(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75 +b(First)43 b(y)m(ou)630 4772 y(need)27 b(to)i(\014nd)d(the)i(name)f(of) +h(the)g(command)f(that)i(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 +b(The)27 b(follo)m(wing)630 4882 y(sections)37 b(con)m(tain)g(tables)g +(of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an) +m(y)-8 b(,)630 4991 y(and)30 b(a)h(short)f(description)g(of)h(what)f +(the)g(command)h(do)s(es.)630 5121 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g +(name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g +(the)g(init)630 5230 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m +(ou)g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then) +630 5340 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 +b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g +(and)p eop end +%%Page: 121 127 +TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(121)630 299 y(the)41 +b(colon)h({)f(that)g(will)g(b)s(e)g(in)m(terpreted)g(as)g(part)f(of)h +(the)g(k)m(ey)h(name.)72 b(The)40 b(name)h(of)630 408 +y(the)35 b(k)m(ey)g(can)g(b)s(e)f(expressed)f(in)i(di\013eren)m(t)g(w)m +(a)m(ys,)h(dep)s(ending)d(on)h(what)h(y)m(ou)g(\014nd)e(most)630 +518 y(comfortable.)630 650 y(In)i(addition)h(to)h(command)f(names,)i +(readline)e(allo)m(ws)h(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f +(string)630 759 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f +(pressed)g(\(a)h Fr(macro)5 b Fu(\).)630 891 y(The)42 +b Ft(bind)30 b(-p)42 b Fu(command)h(displa)m(ys)g(Readline)g(function)g +(names)g(and)f(bindings)g(in)h(a)630 1000 y(format)37 +b(that)h(can)f(put)f(directly)i(in)m(to)g(an)f(initialization)j +(\014le.)60 b(See)38 b(Section)f(4.2)i([Bash)630 1110 +y(Builtins],)31 b(page)g(51.)630 1263 y Fr(k)m(eyname)5 +b Fu(:)42 b Fr(function-name)35 b Fu(or)c Fr(macro)1110 +1373 y(k)m(eyname)k Fu(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s +(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350 +1504 y Ft(Control-u:)45 b(universal-argument)1350 1614 +y(Meta-Rubout:)f(backward-kill-word)1350 1724 y(Control-o:)h(">)i +(output")1110 1855 y Fu(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112 +b Fj(C-u)94 b Fu(is)g(b)s(ound)f(to)i(the)f(function)1110 +1965 y Ft(universal-argument)p Fu(,)124 b Fj(M-DEL)107 +b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 2074 y +Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g Fu(is)h(b)s(ound)e +(to)j(run)d(the)i(macro)1110 2184 y(expressed)45 b(on)h(the)g(righ)m(t) +g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p +Ft(>)1110 2293 y(output)p Fu(')29 b(in)m(to)i(the)g(line\).)1110 +2425 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g +(names)f(are)g(recognized)h(while)1110 2534 y(pro)s(cessing)40 +b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60 b Fr(DEL)p +Fu(,)42 b Fr(ESC)p Fu(,)g Fr(ESCAPE)p Fu(,)f Fr(LFD)p +Fu(,)1110 2644 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p Fu(,)f +Fr(RETURN)p Fu(,)g Fr(R)m(UBOUT)p Fu(,)h Fr(SP)-8 b(A)m(CE)p +Fu(,)31 b Fr(SPC)p Fu(,)e(and)h Fr(T)-8 b(AB)p Fu(.)630 +2798 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 b Fr(function-name)36 +b Fu(or)30 b Fr(macro)1110 2907 y(k)m(eyseq)k Fu(di\013ers)d(from)f +Fr(k)m(eyname)37 b Fu(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f +(denoting)g(an)g(en-)1110 3017 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s +(e)f(sp)s(eci\014ed,)h(b)m(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in) +1110 3126 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h +Fu(Emacs)f(st)m(yle)i(k)m(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as) +1110 3236 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s +(ecial)h(c)m(haracter)g(names)f(are)g(not)1110 3345 y(recognized.)1350 +3477 y Ft("\\C-u":)46 b(universal-argument)1350 3587 +y("\\C-x\\C-r":)f(re-read-init-file)1350 3696 y("\\e[11~":)g("Function) +h(Key)g(1")1110 3828 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 +b Fj(C-u)64 b Fu(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 +3937 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g +(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 4047 +y(C-r)p Fu(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f +Ft(re-read-init-file)p Fu(,)c(and)j(`)p Ft(ESC)h([)g(1)g(1)1110 +4156 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p +Ft(Function)e(Key)g(1)p Fu('.)630 4310 y(The)g(follo)m(wing)i +Fm(gnu)f Fu(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5 +b(ailable)32 b(when)d(sp)s(ecifying)630 4419 y(k)m(ey)i(sequences:)630 +4573 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630 +4726 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 4880 y +Fj(\\e)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)630 +5033 y Fj(\\\\)384 b Fu(bac)m(kslash)630 5187 y Fj(\\)p +Ft(")g(")p Fu(,)30 b(a)h(double)f(quotation)i(mark)630 +5340 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s +(ostrophe)p eop end +%%Page: 122 128 +TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(122)630 299 y(In)27 +b(addition)h(to)g(the)g Fm(gnu)f Fu(Emacs)h(st)m(yle)h(escap)s(e)f +(sequences,)h(a)f(second)f(set)h(of)g(bac)m(kslash)630 +408 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 570 y +Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 731 y Ft(\\b)384 +b Fu(bac)m(kspace)630 892 y Ft(\\d)g Fu(delete)630 1053 +y Ft(\\f)g Fu(form)30 b(feed)630 1214 y Ft(\\n)384 b +Fu(newline)630 1375 y Ft(\\r)g Fu(carriage)32 b(return)630 +1536 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)630 1697 +y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)630 1858 y Ft(\\)p +Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5 +b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fr(nnn)e +Fu(\(one)i(to)1110 1968 y(three)c(digits\))630 2129 y +Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e +(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39 +b Fr(HH)1110 2239 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630 +2400 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e +(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 +2509 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 +b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f(name.)38 +b(In)630 2619 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23 +b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m(e)j +(are)e(expanded.)37 b(Bac)m(kslash)630 2729 y(will)j(quote)h(an)m(y)f +(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39 +b(`)p Ft(")p Fu(')h(and)g(`)p Ft(')p Fu('.)69 b(F)-8 +b(or)630 2838 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i +(mak)m(e)h(`)p Fj(C-x)j Ft(\\)p Fu(')c(insert)f(a)h(single)h(`)p +Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 2974 y Ft("\\C-x\\\\":)45 +b("\\\\")150 3175 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) +150 3322 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f +(in)g(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150 +3431 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g +(bindings)d(and)h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s +(erformed)f(as)i(the)150 3541 y(result)f(of)h(tests.)41 +b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150 +3703 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h +(bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g +(the)630 3812 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h +(application)g(using)f(Readline.)59 b(The)36 b(text)h(of)f(the)h(test,) +630 3922 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f +(to)h(the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630 +4031 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i +(it.)630 4193 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e +Fu(form)i(of)g(the)h Ft($if)e Fu(directiv)m(e)j(is)e(used)f(to)i(test)g +(whether)e(Read-)1110 4302 y(line)44 b(is)f(in)g Ft(emacs)f +Fu(or)h Ft(vi)g Fu(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g +(conjunction)1110 4412 y(with)c(the)h(`)p Ft(set)29 b(keymap)p +Fu(')38 b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110 +4521 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d +Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 4631 y(starting)f(out)g +(in)f Ft(emacs)f Fu(mo)s(de.)630 4792 y Ft(term)288 b +Fu(The)26 b Ft(term=)g Fu(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f +(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 4902 y(ings,)38 +b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g +(the)g(terminal's)1110 5011 y(function)24 b(k)m(eys.)39 +b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p +Ft(=)p Fu(')g(is)g(tested)h(against)1110 5121 y(b)s(oth)k(the)h(full)g +(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g +(terminal)1110 5230 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p +Ft(-)p Fu('.)50 b(This)33 b(allo)m(ws)i Ft(sun)e Fu(to)h(matc)m(h)g(b)s +(oth)f Ft(sun)g Fu(and)1110 5340 y Ft(sun-cmd)p Fu(,)c(for)h(instance.) +p eop end +%%Page: 123 129 +TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(123)630 299 y Ft(version)144 +b Fu(The)44 b Ft(version)f Fu(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s +(erform)d(comparisons)i(against)1110 408 y(sp)s(eci\014c)c(Readline)i +(v)m(ersions.)74 b(The)42 b Ft(version)d Fu(expands)i(to)h(the)g +(curren)m(t)1110 518 y(Readline)25 b(v)m(ersion.)39 b(The)23 +b(set)h(of)g(comparison)h(op)s(erators)f(includes)f(`)p +Ft(=)p Fu(')h(\(and)1110 628 y(`)p Ft(==)p Fu('\),)33 +b(`)p Ft(!=)p Fu(',)f(`)p Ft(<=)p Fu(',)h(`)p Ft(>=)p +Fu(',)f(`)p Ft(<)p Fu(',)h(and)e(`)p Ft(>)p Fu('.)46 +b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h(on)1110 +737 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g(consists)h(of)f +(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110 +847 y(an)45 b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44 +b(an)i(optional)g(minor)f(v)m(ersion)h(\(e.g.,)1110 956 +y(`)p Ft(7.1)p Fu('\).)40 b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g +(omitted,)h(it)f(is)g(assumed)f(to)h(b)s(e)f(`)p Ft(0)p +Fu('.)40 b(The)1110 1066 y(op)s(erator)34 b(ma)m(y)g(b)s(e)f(separated) +g(from)g(the)h(string)f Ft(version)f Fu(and)h(from)g(the)1110 +1176 y(v)m(ersion)39 b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f +(whitespace.)67 b(The)38 b(follo)m(wing)i(example)1110 +1285 y(sets)31 b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m +(ersion)f(b)s(eing)g(used)g(is)g(7.0)i(or)e(new)m(er:)1350 +1440 y Ft($if)47 b(version)f(>=)h(7.0)1350 1550 y(set)g +(show-mode-in-prompt)42 b(on)1350 1659 y($endif)630 1860 +y(application)1110 1970 y Fu(The)21 b Fr(application)j +Fu(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h +(set-)1110 2079 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h +(Readline)g(library)g(sets)g(the)g Fr(application)1110 +2189 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h +(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110 +2298 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h +(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 2408 +y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f +(sequence)h(that)f(quotes)1110 2518 y(the)e(curren)m(t)f(or)g(previous) +g(w)m(ord)g(in)g(Bash:)1350 2673 y Ft($if)47 b(Bash)1350 +2782 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350 +2892 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 3002 y($endif)630 +3202 y(variable)96 b Fu(The)33 b Fr(v)-5 b(ariable)39 +b Fu(construct)33 b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g +(Readline)1110 3312 y(v)-5 b(ariables)32 b(and)f(v)-5 +b(alues.)45 b(The)32 b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i +(`)p Ft(=)p Fu(',)1110 3421 y(`)p Ft(==)p Fu(',)49 b(and)44 +b(`)p Ft(!=)p Fu('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g +(b)s(e)g(separated)g(from)g(the)1110 3531 y(comparison)25 +b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s +(e)f(separated)1110 3641 y(from)33 b(the)h(v)-5 b(alue)35 +b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52 +b(Both)35 b(string)1110 3750 y(and)i(b)s(o)s(olean)g(v)-5 +b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39 +b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 3860 y(tested)46 +b(against)g(the)f(v)-5 b(alues)46 b Fr(on)f Fu(and)f +Fr(o\013)p Fu(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110 +3969 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Ft(mode=emacs)e +Fu(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 4124 y +Ft($if)47 b(editing-mode)d(==)k(emacs)1350 4234 y(set)f +(show-mode-in-prompt)42 b(on)1350 4344 y($endif)150 4544 +y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g(previous) +g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)150 +4745 y Ft($else)240 b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i +(the)f Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g +(fails.)150 4945 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m +(es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g +(commands)630 5055 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 +b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e +(from)630 5165 y Ft(/etc/inputrc)p Fu(:)870 5320 y Ft($include)46 +b(/etc/inputrc)p eop end +%%Page: 124 130 +TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(124)150 299 y Fk(8.3.3)63 +b(Sample)41 b(Init)g(File)150 446 y Fu(Here)27 b(is)f(an)h(example)g +(of)f(an)h Fr(inputrc)k Fu(\014le.)39 b(This)26 b(illustrates)h(k)m(ey) +h(binding,)e(v)-5 b(ariable)27 b(assignmen)m(t,)i(and)150 +555 y(conditional)j(syn)m(tax.)p eop end +%%Page: 125 131 +TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(125)390 408 y Ft(#)47 +b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h +(editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h +(Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include) +g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g +(re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390 +956 y(#)g(Lines)g(beginning)e(with)i('#')g(are)g(comments.)390 +1066 y(#)390 1176 y(#)g(First,)g(include)e(any)i(system-wide)e +(bindings)h(and)g(variable)390 1285 y(#)h(assignments)e(from)i +(/etc/Inputrc)390 1395 y($include)f(/etc/Inputrc)390 +1614 y(#)390 1724 y(#)h(Set)g(various)f(bindings)g(for)h(emacs)f(mode.) +390 1943 y(set)h(editing-mode)d(emacs)390 2162 y($if)j(mode=emacs)390 +2381 y(Meta-Control-h:)91 b(backward-kill-word)43 b(Text)k(after)f(the) +h(function)f(name)g(is)h(ignored)390 2600 y(#)390 2710 +y(#)g(Arrow)g(keys)f(in)i(keypad)e(mode)390 2819 y(#)390 +2929 y(#"\\M-OD":)379 b(backward-char)390 3039 y(#"\\M-OC":)g +(forward-char)390 3148 y(#"\\M-OA":)g(previous-history)390 +3258 y(#"\\M-OB":)g(next-history)390 3367 y(#)390 3477 +y(#)47 b(Arrow)g(keys)f(in)i(ANSI)e(mode)390 3587 y(#)390 +3696 y("\\M-[D":)380 b(backward-char)390 3806 y("\\M-[C":)g +(forward-char)390 3915 y("\\M-[A":)g(previous-history)390 +4025 y("\\M-[B":)g(next-history)390 4134 y(#)390 4244 +y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode)390 +4354 y(#)390 4463 y(#"\\M-\\C-OD":)331 b(backward-char)390 +4573 y(#"\\M-\\C-OC":)g(forward-char)390 4682 y(#"\\M-\\C-OA":)g +(previous-history)390 4792 y(#"\\M-\\C-OB":)g(next-history)390 +4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode) +390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390 +5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end +%%Page: 126 132 +TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(126)390 299 y Ft(#"\\M-\\C-[A":) +331 b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390 +628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066 +y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the) +g(default.)390 1176 y(TAB:)g(complete)390 1395 y(#)g(Macros)g(that)f +(are)h(convenient)e(for)i(shell)f(interaction)390 1504 +y($if)h(Bash)390 1614 y(#)g(edit)g(the)g(path)390 1724 +y("\\C-xp":)f("PATH=${PATH}\\e\\C-e\\C-a)o(\\ef)o(\\C-f)o(")390 +1833 y(#)h(prepare)f(to)h(type)g(a)h(quoted)e(word)g(--)390 +1943 y(#)h(insert)g(open)f(and)h(close)f(double)h(quotes)390 +2052 y(#)g(and)g(move)g(to)g(just)g(after)f(the)h(open)g(quote)390 +2162 y("\\C-x\\"":)e("\\"\\"\\C-b")390 2271 y(#)i(insert)g(a)g +(backslash)e(\(testing)h(backslash)f(escapes)390 2381 +y(#)i(in)h(sequences)d(and)i(macros\))390 2491 y("\\C-x\\\\":)e("\\\\") +390 2600 y(#)i(Quote)g(the)g(current)f(or)h(previous)e(word)390 +2710 y("\\C-xq":)h("\\eb\\"\\ef\\"")390 2819 y(#)h(Add)g(a)h(binding)e +(to)h(refresh)f(the)h(line,)f(which)g(is)h(unbound)390 +2929 y("\\C-xr":)f(redraw-current-line)390 3039 y(#)h(Edit)g(variable)f +(on)h(current)f(line.)390 3148 y("\\M-\\C-v":)f +("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-)o(a\\C-)o(y=")390 3258 +y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h +(available)390 3587 y(set)f(bell-style)e(visible)390 +3806 y(#)i(don't)g(strip)f(characters)f(to)i(7)h(bits)e(when)h(reading) +390 3915 y(set)g(input-meta)e(on)390 4134 y(#)i(allow)g(iso-latin1)e +(characters)g(to)i(be)g(inserted)f(rather)390 4244 y(#)h(than)g +(converted)e(to)j(prefix-meta)c(sequences)390 4354 y(set)j +(convert-meta)d(off)390 4573 y(#)j(display)f(characters)f(with)i(the)g +(eighth)f(bit)h(set)g(directly)390 4682 y(#)g(rather)g(than)f(as)h +(meta-prefixed)e(characters)390 4792 y(set)i(output-meta)e(on)390 +5011 y(#)i(if)h(there)e(are)h(150)g(or)g(more)g(possible)e(completions) +g(for)i(a)g(word,)390 5121 y(#)g(ask)g(whether)f(or)h(not)g(the)g(user) +g(wants)f(to)h(see)g(all)g(of)g(them)390 5230 y(set)g +(completion-query-items)42 b(150)p eop end +%%Page: 127 133 +TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(127)390 299 y Ft(#)47 +b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390 +628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390 +847 y($endif)150 1089 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands) +150 1248 y Fu(This)32 b(section)h(describ)s(es)f(Readline)h(commands)f +(that)h(ma)m(y)h(b)s(e)d(b)s(ound)g(to)i(k)m(ey)g(sequences.)48 +b(Y)-8 b(ou)33 b(can)150 1358 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d +(b)m(y)h(executing)i Ft(bind)29 b(-P)39 b Fu(or,)j(for)d(a)h(more)g +(terse)g(format,)i(suitable)e(for)f(an)150 1468 y Fr(inputrc)34 +b Fu(\014le,)29 b Ft(bind)g(-p)p Fu(.)40 b(\(See)30 b(Section)f(4.2)h +([Bash)g(Builtins],)g(page)g(51.\))41 b(Command)28 b(names)h(without) +150 1577 y(an)h(accompan)m(ying)i(k)m(ey)f(sequence)g(are)g(un)m(b)s +(ound)d(b)m(y)i(default.)275 1713 y(In)25 b(the)h(follo)m(wing)i +(descriptions,)f Fr(p)s(oin)m(t)h Fu(refers)e(to)h(the)f(curren)m(t)g +(cursor)g(p)s(osition,)h(and)f Fr(mark)31 b Fu(refers)150 +1822 y(to)40 b(a)f(cursor)f(p)s(osition)h(sa)m(v)m(ed)h(b)m(y)f(the)g +Ft(set-mark)d Fu(command.)66 b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f +(p)s(oin)m(t)g(and)150 1932 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f +Fr(region)p Fu(.)150 2132 y Fk(8.4.1)63 b(Commands)42 +b(F)-10 b(or)41 b(Mo)m(ving)150 2304 y Ft(beginning-of-line)26 +b(\(C-a\))630 2414 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f +(curren)m(t)g(line.)150 2574 y Ft(end-of-line)d(\(C-e\))630 +2684 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 +2844 y Ft(forward-char)c(\(C-f\))630 2954 y Fu(Mo)m(v)m(e)32 +b(forw)m(ard)e(a)h(c)m(haracter.)150 3114 y Ft(backward-char)c(\(C-b\)) +630 3223 y Fu(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 +3384 y Ft(forward-word)d(\(M-f\))630 3493 y Fu(Mo)m(v)m(e)32 +b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41 +b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630 +3603 y(digits.)150 3763 y Ft(backward-word)27 b(\(M-b\))630 +3873 y Fu(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g +(curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34 +b(are)g(comp)s(osed)630 3982 y(of)d(letters)g(and)f(digits.)150 +4143 y Ft(shell-forward-word)25 b(\(M-C-f\))630 4252 +y Fu(Mo)m(v)m(e)30 b(forw)m(ard)e(to)h(the)f(end)f(of)h(the)h(next)f(w) +m(ord.)40 b(W)-8 b(ords)28 b(are)g(delimited)h(b)m(y)f(non-quoted)630 +4362 y(shell)j(metac)m(haracters.)150 4522 y Ft(shell-backward-word)25 +b(\(M-C-b\))630 4632 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g +(of)g(the)g(curren)m(t)g(or)f(previous)h(w)m(ord.)53 +b(W)-8 b(ords)35 b(are)g(delimited)630 4741 y(b)m(y)30 +b(non-quoted)h(shell)f(metac)m(haracters.)150 4902 y +Ft(previous-screen-line)25 b(\(\))630 5011 y Fu(A)m(ttempt)41 +b(to)g(mo)m(v)m(e)h(p)s(oin)m(t)e(to)h(the)f(same)h(ph)m(ysical)g +(screen)f(column)g(on)g(the)g(previous)630 5121 y(ph)m(ysical)26 +b(screen)f(line.)39 b(This)24 b(will)i(not)f(ha)m(v)m(e)h(the)f +(desired)g(e\013ect)h(if)f(the)h(curren)m(t)e(Readline)630 +5230 y(line)k(do)s(es)f(not)g(tak)m(e)i(up)d(more)i(than)f(one)g(ph)m +(ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f(not)h(greater)g(than)630 +5340 y(the)j(length)f(of)h(the)f(prompt)g(plus)f(the)i(screen)f(width.) +p eop end +%%Page: 128 134 +TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(128)150 299 y Ft(next-screen-line) +26 b(\(\))630 408 y Fu(A)m(ttempt)g(to)f(mo)m(v)m(e)i(p)s(oin)m(t)d(to) +i(the)e(same)i(ph)m(ysical)f(screen)g(column)f(on)h(the)f(next)h(ph)m +(ysical)630 518 y(screen)e(line.)39 b(This)23 b(will)g(not)h(ha)m(v)m +(e)h(the)e(desired)g(e\013ect)i(if)e(the)g(curren)m(t)h(Readline)g +(line)f(do)s(es)630 628 y(not)k(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m +(ysical)h(line)g(or)f(if)g(the)h(length)f(of)h(the)f(curren)m(t)g +(Readline)630 737 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g +(of)f(the)h(prompt)e(plus)h(the)g(screen)h(width.)150 +916 y Ft(clear-display)c(\(M-C-l\))630 1026 y Fu(Clear)33 +b(the)g(screen)g(and,)h(if)e(p)s(ossible,)i(the)f(terminal's)g +(scrollbac)m(k)i(bu\013er,)e(then)f(redra)m(w)630 1136 +y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e(curren)m(t)h(line)f(at) +h(the)g(top)g(of)f(the)h(screen.)150 1315 y Ft(clear-screen)c(\(C-l\)) +630 1424 y Fu(Clear)35 b(the)f(screen,)i(then)e(redra)m(w)g(the)h +(curren)m(t)f(line,)i(lea)m(ving)g(the)f(curren)m(t)f(line)h(at)g(the) +630 1534 y(top)c(of)f(the)h(screen.)150 1713 y Ft(redraw-current-line) +25 b(\(\))630 1823 y Fu(Refresh)30 b(the)g(curren)m(t)h(line.)41 +b(By)30 b(default,)h(this)f(is)h(un)m(b)s(ound.)150 2041 +y Fk(8.4.2)63 b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f +(History)150 2223 y Ft(accept-line)27 b(\(Newline)h(or)i(Return\))630 +2333 y Fu(Accept)25 b(the)e(line)h(regardless)g(of)f(where)g(the)h +(cursor)e(is.)39 b(If)23 b(this)g(line)h(is)f(non-empt)m(y)-8 +b(,)26 b(add)c(it)630 2442 y(to)27 b(the)f(history)g(list)h(according)g +(to)g(the)f(setting)i(of)e(the)g Ft(HISTCONTROL)d Fu(and)j +Ft(HISTIGNORE)630 2552 y Fu(v)-5 b(ariables.)42 b(If)30 +b(this)h(line)g(is)g(a)g(mo)s(di\014ed)e(history)i(line,)g(then)f +(restore)i(the)f(history)f(line)h(to)630 2662 y(its)g(original)g +(state.)150 2841 y Ft(previous-history)26 b(\(C-p\))630 +2950 y Fu(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g +(fetc)m(hing)g(the)g(previous)f(command.)150 3129 y Ft(next-history)d +(\(C-n\))630 3239 y Fu(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i +(history)f(list,)i(fetc)m(hing)f(the)g(next)f(command.)150 +3418 y Ft(beginning-of-history)25 b(\(M-<\))630 3528 +y Fu(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8 +b(.)150 3707 y Ft(end-of-history)26 b(\(M->\))630 3816 +y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8 +b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150 +3995 y Ft(reverse-search-history)24 b(\(C-r\))630 4105 +y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g +(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630 +4215 y(tory)26 b(as)h(necessary)-8 b(.)40 b(This)25 b(is)i(an)f +(incremen)m(tal)h(searc)m(h.)40 b(This)25 b(command)h(sets)h(the)f +(region)630 4324 y(to)31 b(the)g(matc)m(hed)g(text)g(and)f(activ)-5 +b(ates)33 b(the)d(mark.)150 4503 y Ft(forward-search-history)24 +b(\(C-s\))630 4613 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h +(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) +630 4723 y(history)38 b(as)g(necessary)-8 b(.)65 b(This)38 +b(is)g(an)g(incremen)m(tal)h(searc)m(h.)65 b(This)37 +b(command)h(sets)h(the)630 4832 y(region)31 b(to)g(the)g(matc)m(hed)g +(text)g(and)f(activ)-5 b(ates)33 b(the)d(mark.)150 5011 +y Ft(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 +b(\(M-p\))630 5121 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g +(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g +(his-)630 5230 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m +(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630 +5340 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m +(ywhere)g(in)f(a)h(history)f(line.)p eop end +%%Page: 129 135 +TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(129)150 299 y Ft +(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24 +b(\(M-n\))630 408 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h(the) +e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)630 +518 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m(tal)g +(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i(the)630 +628 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m +(ywhere)g(in)f(a)h(history)f(line.)150 784 y Ft(history-search-forward) +24 b(\(\))630 894 y Fu(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i +(history)f(for)g(the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f +(the)630 1003 y(start)36 b(of)h(the)f(curren)m(t)f(line)i(and)e(the)h +(p)s(oin)m(t.)58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h +(at)g(the)630 1113 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 +b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 +b(By)33 b(default,)g(this)630 1223 y(command)d(is)h(un)m(b)s(ound.)150 +1379 y Ft(history-search-backward)24 b(\(\))630 1489 +y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g +(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630 +1598 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.) +58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630 +1708 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 +b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 +b(By)33 b(default,)g(this)630 1817 y(command)d(is)h(un)m(b)s(ound.)150 +1974 y Ft(history-substring-search)o(-for)o(ward)24 b(\(\))630 +2084 y Fu(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g +(the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f(the)630 +2193 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m +(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere) +630 2303 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h +(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e +(command)630 2412 y(is)e(un)m(b)s(ound.)150 2569 y Ft +(history-substring-search)o(-bac)o(kwar)o(d)24 b(\(\))630 +2679 y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g +(for)g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630 +2788 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m +(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere) +630 2898 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h +(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e +(command)630 3007 y(is)e(un)m(b)s(ound.)150 3164 y Ft(yank-nth-arg)d +(\(M-C-y\))630 3273 y Fu(Insert)37 b(the)g(\014rst)f(argumen)m(t)i(to)f +(the)h(previous)e(command)h(\(usually)g(the)g(second)g(w)m(ord)630 +3383 y(on)32 b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 +b(With)32 b(an)g(argumen)m(t)g Fr(n)p Fu(,)g(insert)g(the)g +Fr(n)p Fu(th)f(w)m(ord)g(from)630 3493 y(the)k(previous)f(command)h +(\(the)g(w)m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f +(w)m(ord)630 3602 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f +(inserts)g(the)f Fr(n)p Fu(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f +(previous)630 3712 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h +Fr(n)e Fu(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e +(if)630 3821 y(the)e(`)p Ft(!)p Fj(n)p Fu(')f(history)g(expansion)g +(had)g(b)s(een)g(sp)s(eci\014ed.)150 3978 y Ft(yank-last-arg)d(\(M-.)i +(or)h(M-_\))630 4088 y Fu(Insert)k(last)i(argumen)m(t)g(to)g(the)f +(previous)f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630 +4197 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m +(t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Ft(yank-nth-arg)p +Fu(.)630 4307 y(Successiv)m(e)26 b(calls)g(to)f Ft(yank-last-arg)c +Fu(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i +(inserting)630 4416 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp) +s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i +(of)f(eac)m(h)h(line)630 4526 y(in)36 b(turn.)58 b(An)m(y)36 +b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g +(calls)h(determines)630 4635 y(the)d(direction)g(to)h(mo)m(v)m(e)g +(through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e +(switc)m(hes)h(the)630 4745 y(direction)23 b(through)g(the)g(history)f +(\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g +(facilities)630 4855 y(are)28 b(used)f(to)h(extract)h(the)f(last)g +(argumen)m(t,)h(as)e(if)h(the)g(`)p Ft(!$)p Fu(')f(history)g(expansion) +h(had)f(b)s(een)630 4964 y(sp)s(eci\014ed.)150 5121 y +Ft(operate-and-get-next)e(\(C-o\))630 5230 y Fu(Accept)30 +b(the)g(curren)m(t)e(line)i(for)f(return)f(to)h(the)h(calling)g +(application)h(as)e(if)g(a)h(newline)f(had)630 5340 y(b)s(een)22 +b(en)m(tered,)k(and)d(fetc)m(h)h(the)f(next)g(line)h(relativ)m(e)h(to)f +(the)f(curren)m(t)g(line)h(from)f(the)g(history)p eop +end +%%Page: 130 136 +TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(130)630 299 y(for)31 +b(editing.)43 b(A)31 b(n)m(umeric)f(argumen)m(t,)i(if)f(supplied,)f(sp) +s(eci\014es)h(the)g(history)f(en)m(try)i(to)f(use)630 +408 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 605 +y Fk(8.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 +b(ext)150 775 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630 +885 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g +(for)f(example,)i(b)m(y)e Ft(stty)p Fu(.)39 b(If)25 b(this)h(c)m +(harac-)630 995 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m +(haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s +(eginning)630 1104 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g +(it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fm(eof)p +Fu(.)150 1261 y Ft(delete-char)e(\(C-d\))630 1370 y Fu(Delete)35 +b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g +(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 1480 +y(as)e(the)f(tt)m(y)i Fm(eof)d Fu(c)m(haracter,)j(as)f +Fj(C-d)e Fu(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g +(e\013ects.)150 1637 y Ft(backward-delete-char)25 b(\(Rubout\))630 +1746 y Fu(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 +b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630 +1856 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 +2013 y Ft(forward-backward-delete-)o(char)24 b(\(\))630 +2122 y Fu(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h +(unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630 +2232 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s +(ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630 +2341 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 +2498 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 2608 +y Fu(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h +(v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630 +2717 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)150 +2874 y Ft(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 +2983 y Fu(Insert)g(y)m(ourself.)150 3140 y Ft(bracketed-paste-begin)25 +b(\(\))630 3250 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e +(b)s(ound)f(to)i(the)g Ft(")p Fu(brac)m(k)m(eted)h(paste)p +Ft(")f Fu(escap)s(e)h(sequence)630 3359 y(sen)m(t)38 +b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i +(assigned)f(b)m(y)h(default.)62 b(It)38 b(allo)m(ws)630 +3469 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g +(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630 +3578 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k) +m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630 +3688 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j +Ft(self-insert)c Fu(instead)j(of)h(executing)g(an)m(y)f(editing)630 +3798 y(commands.)630 3931 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h +(region)f(\(the)h(c)m(haracters)g(b)s(et)m(w)m(een)g(p)s(oin)m(t)f(and) +g(the)g(mark\))630 4040 y(to)j(the)g(inserted)f(text.)65 +b(It)39 b(uses)f(the)g(concept)h(of)g(an)f Fl(active)i(mark)10 +b Fu(:)57 b(when)38 b(the)g(mark)630 4150 y(is)d(activ)m(e,)k(Readline) +c(redispla)m(y)h(uses)e(the)h(terminal's)h(standout)f(mo)s(de)f(to)i +(denote)g(the)630 4260 y(region.)150 4416 y Ft(transpose-chars)26 +b(\(C-t\))630 4526 y Fu(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the) +g(cursor)f(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g +(cursor,)630 4635 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m +(ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end) +g(of)h(the)630 4745 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h +(last)h(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 +b(Negativ)m(e)25 b(argumen)m(ts)630 4855 y(ha)m(v)m(e)32 +b(no)e(e\013ect.)150 5011 y Ft(transpose-words)c(\(M-t\))630 +5121 y Fu(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g +(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past) +g(that)630 5230 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 +b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i(the)f +(line,)i(this)e(transp)s(oses)g(the)630 5340 y(last)j(t)m(w)m(o)h(w)m +(ords)e(on)g(the)h(line.)p eop end +%%Page: 131 137 +TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(131)150 299 y Ft(upcase-word)27 +b(\(M-u\))630 408 y Fu(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g +(follo)m(wing\))i(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m +(t,)e(upp)s(er-)630 518 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g +(not)h(mo)m(v)m(e)h(the)e(cursor.)150 665 y Ft(downcase-word)d(\(M-l\)) +630 775 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m +(wing\))i(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m +(w)m(ercase)630 884 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f +(mo)m(v)m(e)i(the)f(cursor.)150 1032 y Ft(capitalize-word)26 +b(\(M-c\))630 1141 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m +(wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h +(capitalize)630 1251 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f +(mo)m(v)m(e)i(the)f(cursor.)150 1398 y Ft(overwrite-mode)26 +b(\(\))630 1508 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 +b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,) +h(switc)m(hes)630 1617 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 +b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m +(t,)i(switc)m(hes)e(to)630 1727 y(insert)30 b(mo)s(de.)41 +b(This)30 b(command)h(a\013ects)h(only)e Ft(emacs)f Fu(mo)s(de;)i +Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 1837 +y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f +Ft(readline\(\))c Fu(starts)k(in)f(insert)g(mo)s(de.)630 +1965 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s +(ound)c(to)j Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630 +2075 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h +(the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 +2184 y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter) +h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 2313 +y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150 +2500 y Fk(8.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150 +2665 y Ft(kill-line)28 b(\(C-k\))630 2775 y Fu(Kill)k(the)f(text)i +(from)d(p)s(oin)m(t)i(to)g(the)f(end)g(of)g(the)h(line.)44 +b(With)31 b(a)h(negativ)m(e)i(n)m(umeric)d(argu-)630 +2885 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f(the)g(cursor)g(to)h +(the)g(b)s(eginning)e(of)i(the)g(curren)m(t)f(line.)150 +3032 y Ft(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 +3141 y Fu(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h(cursor)g(to)g(the)g +(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70 b(With)41 +b(a)630 3251 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50 +b(kill)c(forw)m(ard)e(from)h(the)g(cursor)g(to)h(the)f(end)f(of)i(the) +630 3361 y(curren)m(t)30 b(line.)150 3508 y Ft(unix-line-discard)c +(\(C-u\))630 3617 y Fu(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f +(to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150 +3765 y Ft(kill-whole-line)c(\(\))630 3874 y Fu(Kill)37 +b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f(matter)g +(where)f(p)s(oin)m(t)h(is.)59 b(By)36 b(default,)630 +3984 y(this)30 b(is)h(un)m(b)s(ound.)150 4131 y Ft(kill-word)d(\(M-d\)) +630 4241 y Fu(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f +(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h +(the)g(end)630 4350 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 +b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Ft(forward-word)p +Fu(.)150 4498 y Ft(backward-kill-word)25 b(\(M-DEL\))630 +4607 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40 +b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g +Ft(backward-word)p Fu(.)150 4754 y Ft(shell-kill-word)d(\(M-C-d\))630 +4864 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f +(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h +(the)g(end)630 4974 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 +b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Ft +(shell-forward-word)p Fu(.)150 5121 y Ft(shell-backward-kill-word)24 +b(\(\))630 5230 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38 +b(W)-8 b(ord)22 b(b)s(oundaries)f(are)h(the)g(same)h(as)f +Ft(shell-backward-)630 5340 y(word)p Fu(.)p eop end +%%Page: 132 138 +TeXDict begin 132 137 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(132)150 299 y Ft +(shell-transpose-words)25 b(\(M-C-t\))630 408 y Fu(Drag)33 +b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f +(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630 +518 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m +(t)h(is)f(at)h(the)g(end)e(of)i(the)f(line,)i(this)e(transp)s(oses)g +(the)630 628 y(last)j(t)m(w)m(o)h(w)m(ords)d(on)i(the)f(line.)41 +b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)f(as)h +Ft(shell-forward-)630 737 y(word)e Fu(and)h Ft(shell-backward-word)p +Fu(.)150 897 y Ft(unix-word-rubout)c(\(C-w\))630 1007 +y Fu(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m(t,)i(using)f +(white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8 b(.)43 +b(The)31 b(killed)630 1116 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f +(kill-ring.)150 1277 y Ft(unix-filename-rubout)25 b(\(\))630 +1386 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e +(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630 +1496 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g +(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 1656 y Ft +(delete-horizontal-space)24 b(\(\))630 1765 y Fu(Delete)33 +b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41 +b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 1925 +y Ft(kill-region)d(\(\))630 2035 y Fu(Kill)k(the)f(text)i(in)e(the)g +(curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un) +m(b)s(ound.)150 2195 y Ft(copy-region-as-kill)25 b(\(\))630 +2305 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f +(kill)h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f +(a)m(w)m(a)m(y)-8 b(.)630 2414 y(By)31 b(default,)f(this)h(command)f +(is)g(un)m(b)s(ound.)150 2574 y Ft(copy-backward-word)25 +b(\(\))630 2684 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m +(t)g(to)i(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries) +f(are)i(the)630 2793 y(same)31 b(as)f Ft(backward-word)p +Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150 +2953 y Ft(copy-forward-word)26 b(\(\))630 3063 y Fu(Cop)m(y)31 +b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h +(bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630 +3173 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30 +b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150 +3333 y Ft(yank)f(\(C-y\))630 3442 y Fu(Y)-8 b(ank)31 +b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h +(p)s(oin)m(t.)150 3602 y Ft(yank-pop)d(\(M-y\))630 3712 +y Fu(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54 +b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630 +3822 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p +Fu(.)150 4021 y Fk(8.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m +(ts)150 4194 y Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j +Fj(M-1)p Ft(,)h(...)f Fj(M--)p Ft(\))630 4303 y Fu(Add)d(this)h(digit)g +(to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f +(new)f(argumen)m(t.)630 4413 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i +(argumen)m(t.)150 4573 y Ft(universal-argument)25 b(\(\))630 +4682 y Fu(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g +(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m +(y)f(one)630 4792 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h +(leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 +4902 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b) +m(y)f(digits,)i(executing)f Ft(universal-argument)630 +5011 y Fu(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h +(otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630 +5121 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y) +d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630 +5230 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f +(the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630 +5340 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h +(one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)p +eop end +%%Page: 133 139 +TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(133)630 299 y(time)29 +b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h(second)g(time)g +(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630 408 y(sixteen,)i(and)f(so) +h(on.)40 b(By)31 b(default,)g(this)f(is)g(not)h(b)s(ound)d(to)k(a)e(k)m +(ey)-8 b(.)150 603 y Fk(8.4.6)63 b(Letting)40 b(Readline)h(T)m(yp)s(e)g +(F)-10 b(or)42 b(Y)-10 b(ou)150 772 y Ft(complete)28 +b(\(TAB\))630 882 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f +(the)g(text)g(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i +(completion)630 991 y(p)s(erformed)33 b(is)h(application-sp)s +(eci\014c.)53 b(Bash)35 b(attempts)g(completion)g(treating)h(the)e +(text)630 1101 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b) +s(egins)e(with)h(`)p Ft($)p Fu('\),)j(username)c(\(if)i(the)f(text)h(b) +s(egins)e(with)630 1210 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g +(the)g(text)h(b)s(egins)e(with)h(`)p Ft(@)p Fu('\),)h(or)f(command)f +(\(including)h(aliases)i(and)630 1320 y(functions\))j(in)f(turn.)53 +b(If)34 b(none)g(of)h(these)h(pro)s(duces)d(a)i(matc)m(h,)i(\014lename) +e(completion)h(is)630 1430 y(attempted.)150 1584 y Ft +(possible-completions)25 b(\(M-?\))630 1694 y Fu(List)35 +b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s(efore)e(p)s +(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 1803 +y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i(columns)f +(used)f(for)i(displa)m(y)f(to)h(the)g(v)-5 b(alue)33 +b(of)630 1913 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5 +b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)38 +b Ft(COLUMNS)p Fu(,)630 2022 y(or)30 b(the)h(screen)f(width,)g(in)g +(that)h(order.)150 2177 y Ft(insert-completions)25 b(\(M-*\))630 +2286 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f +(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s(een)e(generated)630 +2396 y(b)m(y)g Ft(possible-completions)p Fu(.)150 2550 +y Ft(menu-complete)d(\(\))630 2660 y Fu(Similar)d(to)g +Ft(complete)p Fu(,)f(but)h(replaces)g(the)g(w)m(ord)g(to)g(b)s(e)f +(completed)i(with)e(a)i(single)f(matc)m(h)630 2770 y(from)37 +b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 b(Rep)s(eated)39 +b(execution)g(of)f Ft(menu-complete)630 2879 y Fu(steps)i(through)g +(the)g(list)h(of)f(p)s(ossible)g(completions,)k(inserting)c(eac)m(h)i +(matc)m(h)f(in)f(turn.)630 2989 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g +(of)g(completions,)i(the)e(b)s(ell)g(is)g(rung)f(\(sub)5 +b(ject)36 b(to)i(the)f(setting)630 3098 y(of)f Ft(bell-style)p +Fu(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57 +b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i +Fr(n)630 3208 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e +(matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f +(used)g(to)630 3318 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g +(list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s +(ound)e(to)630 3427 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m +(y)i(default.)150 3582 y Ft(menu-complete-backward)24 +b(\(\))630 3691 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p +Fu(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g +(p)s(ossible)630 3801 y(completions,)d(as)e(if)h Ft(menu-complete)26 +b Fu(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150 +3955 y Ft(delete-char-or-list)25 b(\(\))630 4065 y Fu(Deletes)41 +b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s +(eginning)e(or)h(end)f(of)h(the)630 4174 y(line)50 b(\(lik)m(e)h +Ft(delete-char)p Fu(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,) +55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 4284 +y Ft(possible-completions)p Fu(.)35 b(This)30 b(command)g(is)g(un)m(b)s +(ound)e(b)m(y)i(default.)150 4438 y Ft(complete-filename)c(\(M-/\))630 +4548 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g +(b)s(efore)f(p)s(oin)m(t.)150 4702 y Ft(possible-filename-comple)o +(tion)o(s)24 b(\(C-x)30 b(/\))630 4812 y Fu(List)f(the)g(p)s(ossible)f +(completions)h(of)g(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)g(treating)h +(it)f(as)g(a)f(\014lename.)150 4966 y Ft(complete-username)e(\(M-~\)) +630 5076 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore) +e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(username.)150 +5230 y Ft(possible-username-comple)o(tion)o(s)24 b(\(C-x)30 +b(~\))630 5340 y Fu(List)25 b(the)g(p)s(ossible)g(completions)h(of)f +(the)g(text)h(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)f(a)g +(username.)p eop end +%%Page: 134 140 +TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(134)150 299 y Ft +(complete-variable)26 b(\(M-$\))630 408 y Fu(A)m(ttempt)32 +b(completion)f(on)g(the)f(text)i(b)s(efore)e(p)s(oin)m(t,)g(treating)i +(it)f(as)f(a)h(shell)g(v)-5 b(ariable.)150 589 y Ft +(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30 b($\))630 +699 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f(the)g(text)h +(b)s(efore)e(p)s(oin)m(t,)46 b(treating)d(it)f(as)g(a)h(shell)630 +809 y(v)-5 b(ariable.)150 989 y Ft(complete-hostname)26 +b(\(M-@\))630 1099 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i +(b)s(efore)e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(hostname.)150 +1280 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30 +b(@\))630 1390 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g +(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)h(treating)g(it)f(as)f(a)h +(hostname.)150 1570 y Ft(complete-command)h(\(M-!\))630 +1680 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p) +s(oin)m(t,)h(treating)h(it)g(as)f(a)g(command)g(name.)630 +1790 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text) +h(against)g(aliases,)53 b(reserv)m(ed)630 1899 y(w)m(ords,)36 +b(shell)g(functions,)h(shell)e(builtins,)i(and)e(\014nally)g +(executable)i(\014lenames,)g(in)e(that)630 2009 y(order.)150 +2190 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29 +b(!\))630 2299 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h +(text)g(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)g(a)f(command)630 +2409 y(name.)150 2590 y Ft(dynamic-complete-history)e(\(M-TAB\))630 +2699 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p) +s(oin)m(t,)g(comparing)h(the)f(text)h(against)h(lines)630 +2809 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i +(matc)m(hes.)150 2990 y Ft(dabbrev-expand)26 b(\(\))630 +3099 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g(text)g(b)s +(efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630 +3209 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e +(completion)j(matc)m(hes.)150 3390 y Ft(complete-into-braces)25 +b(\(M-{\))630 3500 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f +(insert)f(the)h(list)g(of)g(p)s(ossible)f(completions)i(enclosed)630 +3609 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5 +b(ailable)37 b(to)e(the)g(shell)g(\(see)g(Section)h(3.5.1)g([Brace)g +(Ex-)630 3719 y(pansion],)30 b(page)h(23\).)150 3939 +y Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 4122 y Ft(start-kbd-macro) +26 b(\(C-x)j(\(\))630 4232 y Fu(Begin)i(sa)m(ving)h(the)e(c)m +(haracters)i(t)m(yp)s(ed)e(in)m(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard) +g(macro.)150 4413 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630 +4522 y Fu(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m +(to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i +(the)630 4632 y(de\014nition.)150 4813 y Ft(call-last-kbd-macro)c +(\(C-x)k(e\))630 4922 y Fu(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard) +f(macro)h(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the) +630 5032 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m +(eyb)s(oard.)150 5213 y Ft(print-last-kbd-macro)25 b(\(\))630 +5322 y Fu(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned) +e(in)i(a)f(format)h(suitable)g(for)f(the)h Fr(inputrc)k +Fu(\014le.)p eop end +%%Page: 135 141 +TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(135)150 299 y Fk(8.4.8)63 +b(Some)41 b(Miscellaneous)i(Commands)150 478 y Ft(re-read-init-file)26 +b(\(C-x)j(C-r\))630 587 y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f +(the)g Fr(inputrc)27 b Fu(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h +(bindings)d(or)i(v)-5 b(ariable)630 697 y(assignmen)m(ts)31 +b(found)e(there.)150 870 y Ft(abort)g(\(C-g\))630 979 +y Fu(Ab)s(ort)d(the)h(curren)m(t)f(editing)h(command)f(and)g(ring)h +(the)f(terminal's)h(b)s(ell)g(\(sub)5 b(ject)26 b(to)i(the)630 +1089 y(setting)j(of)g Ft(bell-style)p Fu(\).)150 1262 +y Ft(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p Fj(x)p +Ft(,)g(...)o(\))630 1372 y Fu(If)35 b(the)g(meta\014ed)g(c)m(haracter)i +Fr(x)k Fu(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g(that)g(is)g +(b)s(ound)e(to)630 1481 y(the)g(corresp)s(onding)f(meta\014ed)h(lo)m(w) +m(er)i(case)f(c)m(haracter.)50 b(The)32 b(b)s(eha)m(vior)h(is)g +(unde\014ned)e(if)630 1591 y Fr(x)37 b Fu(is)30 b(already)h(lo)m(w)m +(er)h(case.)150 1764 y Ft(prefix-meta)27 b(\(ESC\))630 +1873 y Fu(Metafy)39 b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)62 +b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g(k)m(ey)-8 +b(.)630 1983 y(T)m(yping)30 b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5 +b(alen)m(t)31 b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 2156 +y Ft(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 2266 y Fu(Incremen)m(tal)h +(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150 +2439 y Ft(revert-line)27 b(\(M-r\))630 2548 y Fu(Undo)33 +b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32 +b(is)h(lik)m(e)i(executing)f(the)f Ft(undo)f Fu(command)630 +2658 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.) +150 2831 y Ft(tilde-expand)d(\(M-&\))630 2940 y Fu(P)m(erform)j(tilde)h +(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 3114 +y Ft(set-mark)d(\(C-@\))630 3223 y Fu(Set)33 b(the)g(mark)f(to)i(the)f +(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g +(supplied,)f(the)h(mark)g(is)f(set)630 3333 y(to)f(that)g(p)s(osition.) +150 3506 y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630 +3615 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43 +b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h +(sa)m(v)m(ed)630 3725 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s +(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 3898 +y Ft(character-search)26 b(\(C-]\))630 4008 y Fu(A)f(c)m(haracter)h(is) +f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s +(ccurrence)g(of)g(that)g(c)m(haracter.)630 4117 y(A)30 +b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s +(ccurrences.)150 4290 y Ft(character-search-backwar)o(d)24 +b(\(M-C-]\))630 4400 y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s +(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of) +g(that)630 4509 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f +(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150 +4682 y Ft(skip-csi-sequence)d(\(\))630 4792 y Fu(Read)i(enough)f(c)m +(haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f +(as)g(those)h(de\014ned)630 4902 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g +(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m +(trol)g(Sequence)630 5011 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 +b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Ft("\\)p +Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630 5121 y(ducing)31 +b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e +(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 5230 y(command,)f +(instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f +(editing)h(bu\013er.)44 b(This)31 b(is)630 5340 y(un)m(b)s(ound)d(b)m +(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)p +eop end +%%Page: 136 142 +TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(136)150 299 y Ft(insert-comment)26 +b(\(M-#\))630 408 y Fu(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h +(the)f(v)-5 b(alue)36 b(of)g(the)g Ft(comment-begin)c +Fu(v)-5 b(ariable)36 b(is)g(in-)630 518 y(serted)c(at)g(the)g(b)s +(eginning)f(of)h(the)f(curren)m(t)h(line.)45 b(If)31 +b(a)h(n)m(umeric)f(argumen)m(t)h(is)g(supplied,)630 628 +y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37 +b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g(line)630 +737 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f +Ft(comment-begin)p Fu(,)e(the)i(v)-5 b(alue)31 b(is)g(inserted,)g +(otherwise)g(the)630 847 y(c)m(haracters)42 b(in)d Ft(comment-begin)e +Fu(are)j(deleted)h(from)f(the)g(b)s(eginning)g(of)g(the)g(line.)71 +b(In)630 956 y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e +(if)g(a)g(newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37 +b(default)630 1066 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c +Fu(causes)k(this)f(command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g +(a)g(shell)630 1176 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f +(argumen)m(t)h(causes)g(the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f +(remo)m(v)m(ed,)630 1285 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b) +m(y)f(the)h(shell.)150 1443 y Ft(dump-functions)26 b(\(\))630 +1553 y Fu(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g(their)g(k)m(ey) +h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630 +1663 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h +(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 +1772 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k +Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k +(default.)150 1931 y Ft(dump-variables)26 b(\(\))630 +2040 y Fu(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5 +b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h +(output)f(stream.)630 2150 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is) +g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a) +m(y)g(that)630 2259 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h +Fr(inputrc)k Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c +(b)m(y)k(default.)150 2418 y Ft(dump-macros)c(\(\))630 +2527 y Fu(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences) +f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 +2637 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e +(supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630 +2746 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e +Fr(inputrc)35 b Fu(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) +d(b)m(y)630 2856 y(default.)150 3014 y Ft(glob-complete-word)e(\(M-g\)) +630 3124 y Fu(The)i(w)m(ord)h(b)s(efore)f(p)s(oin)m(t)h(is)g(treated)h +(as)f(a)h(pattern)f(for)f(pathname)h(expansion,)g(with)g(an)630 +3233 y(asterisk)d(implicitly)h(app)s(ended.)37 b(This)23 +b(pattern)i(is)f(used)g(to)h(generate)h(a)e(list)h(of)g(matc)m(hing)630 +3343 y(\014le)30 b(names)h(for)f(p)s(ossible)g(completions.)150 +3501 y Ft(glob-expand-word)c(\(C-x)j(*\))630 3611 y Fu(The)40 +b(w)m(ord)g(b)s(efore)g(p)s(oin)m(t)h(is)g(treated)g(as)g(a)g(pattern)g +(for)f(pathname)g(expansion,)k(and)630 3720 y(the)c(list)g(of)f(matc)m +(hing)i(\014le)e(names)g(is)h(inserted,)h(replacing)g(the)e(w)m(ord.)67 +b(If)39 b(a)h(n)m(umeric)630 3830 y(argumen)m(t)31 b(is)f(supplied,)g +(a)g(`)p Ft(*)p Fu(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g +(expansion.)150 3988 y Ft(glob-list-expansions)25 b(\(C-x)k(g\))630 +4098 y Fu(The)k(list)h(of)f(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h +(b)s(een)f(generated)h(b)m(y)f Ft(glob-expand-word)630 +4208 y Fu(is)h(displa)m(y)m(ed,)h(and)e(the)h(line)g(is)f(redra)m(wn.) +50 b(If)33 b(a)h(n)m(umeric)g(argumen)m(t)g(is)f(supplied,)h(a)g(`)p +Ft(*)p Fu(')630 4317 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g +(expansion.)150 4475 y Ft(display-shell-version)25 b(\(C-x)k(C-v\))630 +4585 y Fu(Displa)m(y)j(v)m(ersion)e(information)h(ab)s(out)f(the)h +(curren)m(t)f(instance)h(of)f(Bash.)150 4743 y Ft(shell-expand-line)c +(\(M-C-e\))630 4853 y Fu(Expand)34 b(the)h(line)h(as)g(the)f(shell)h +(do)s(es.)55 b(This)34 b(p)s(erforms)g(alias)i(and)f(history)g +(expansion)630 4963 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m +(ord)f(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630 +5072 y(page)e(22\).)150 5230 y Ft(history-expand-line)25 +b(\(M-^\))630 5340 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the) +h(curren)m(t)f(line.)p eop end +%%Page: 137 143 +TeXDict begin 137 142 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(137)150 299 y Ft(magic-space)27 +b(\(\))630 408 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g +(curren)m(t)g(line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3) +630 518 y([History)31 b(In)m(teraction],)i(page)e(148\).)150 +663 y Ft(alias-expand-line)26 b(\(\))630 773 y Fu(P)m(erform)i(alias)i +(expansion)e(on)g(the)h(curren)m(t)f(line)h(\(see)g(Section)g(6.6)h +([Aliases],)g(page)f(94\).)150 918 y Ft(history-and-alias-expand)o +(-lin)o(e)24 b(\(\))630 1028 y Fu(P)m(erform)30 b(history)h(and)e +(alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150 +1173 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 +1283 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150 +1428 y Ft(edit-and-execute-command)24 b(\(C-x)29 b(C-e\))630 +1538 y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f +(command)h(line,)h(and)e(execute)i(the)f(result)g(as)g(shell)630 +1647 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h +Ft($VISUAL)p Fu(,)f Ft($EDITOR)p Fu(,)h(and)d Ft(emacs)g +Fu(as)h(the)630 1757 y(editor,)31 b(in)f(that)h(order.)150 +1983 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 2143 +y Fu(While)32 b(the)g(Readline)g(library)f(do)s(es)g(not)h(ha)m(v)m(e)h +(a)f(full)f(set)h(of)g Ft(vi)f Fu(editing)h(functions,)f(it)h(do)s(es)g +(con)m(tain)150 2252 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f +(the)g(line.)52 b(The)34 b(Readline)g Ft(vi)g Fu(mo)s(de)f(b)s(eha)m(v) +m(es)i(as)f(sp)s(eci\014ed)f(in)150 2362 y(the)e Fm(posix)e +Fu(standard.)275 2489 y(In)35 b(order)g(to)i(switc)m(h)f(in)m(teractiv) +m(ely)j(b)s(et)m(w)m(een)d Ft(emacs)f Fu(and)g Ft(vi)g +Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p Ft(set)30 b(-o)150 +2599 y(emacs)p Fu(')43 b(and)h(`)p Ft(set)30 b(-o)f(vi)p +Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h([The)e(Set)h(Builtin],)j +(page)e(62\).)83 b(The)150 2709 y(Readline)31 b(default)g(is)f +Ft(emacs)f Fu(mo)s(de.)275 2836 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f +(in)g Ft(vi)f Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g +(`insertion')g(mo)s(de,)g(as)h(if)f(y)m(ou)150 2946 y(had)f(t)m(yp)s +(ed)g(an)g(`)p Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f +Fu(switc)m(hes)i(y)m(ou)g(in)m(to)h(`command')e(mo)s(de,)h(where)e(y)m +(ou)i(can)g(edit)g(the)150 3055 y(text)35 b(of)f(the)g(line)g(with)f +(the)h(standard)f Ft(vi)g Fu(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e) +f(to)f(previous)g(history)f(lines)h(with)150 3165 y(`)p +Ft(k)p Fu(')d(and)e(subsequen)m(t)h(lines)h(with)f(`)p +Ft(j)p Fu(',)g(and)g(so)h(forth.)150 3391 y Fs(8.6)68 +b(Programmable)47 b(Completion)150 3551 y Fu(When)25 +b(w)m(ord)g(completion)i(is)f(attempted)g(for)g(an)f(argumen)m(t)h(to)g +(a)g(command)f(for)h(whic)m(h)f(a)h(completion)150 3660 +y(sp)s(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6 b Fu(\))39 +b(has)h(b)s(een)f(de\014ned)f(using)h(the)h Ft(complete)d +Fu(builtin)j(\(see)g(Section)h(8.7)150 3770 y([Programmable)h +(Completion)f(Builtins],)k(page)d(139\),)j(the)c(programmable)g +(completion)i(facilities)150 3880 y(are)31 b(in)m(v)m(ok)m(ed.)275 +4007 y(First,)23 b(the)e(command)g(name)g(is)h(iden)m(ti\014ed.)37 +b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f(de\014ned)g(for)h(that)h +(command,)150 4117 y(the)44 b(compsp)s(ec)g(is)g(used)f(to)h(generate)i +(the)e(list)g(of)g(p)s(ossible)g(completions)h(for)e(the)h(w)m(ord.)81 +b(If)44 b(the)150 4226 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h +(string)f(\(completion)i(attempted)f(at)g(the)g(b)s(eginning)e(of)h(an) +h(empt)m(y)150 4336 y(line\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f +(with)h(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d +Fu(is)i(used.)40 b(If)29 b(the)g(command)g(w)m(ord)150 +4445 y(is)e(a)h(full)e(pathname,)i(a)g(compsp)s(ec)e(for)h(the)g(full)g +(pathname)g(is)g(searc)m(hed)h(for)f(\014rst.)39 b(If)26 +b(no)h(compsp)s(ec)g(is)150 4555 y(found)22 b(for)g(the)h(full)g +(pathname,)h(an)f(attempt)h(is)f(made)g(to)g(\014nd)f(a)h(compsp)s(ec)f +(for)h(the)g(p)s(ortion)f(follo)m(wing)150 4665 y(the)34 +b(\014nal)g(slash.)53 b(If)34 b(those)g(searc)m(hes)i(do)e(not)g +(result)h(in)f(a)g(compsp)s(ec,)h(an)m(y)g(compsp)s(ec)f(de\014ned)f +(with)150 4774 y(the)k Ft(-D)g Fu(option)g(to)h Ft(complete)d +Fu(is)i(used)g(as)g(the)g(default.)61 b(If)37 b(there)g(is)h(no)f +(default)g(compsp)s(ec,)i(Bash)150 4884 y(attempts)e(alias)h(expansion) +e(on)g(the)h(command)f(w)m(ord)g(as)h(a)f(\014nal)g(resort,)j(and)c +(attempts)j(to)f(\014nd)e(a)150 4993 y(compsp)s(ec)30 +b(for)g(the)h(command)f(w)m(ord)g(from)g(an)m(y)h(successful)f +(expansion)275 5121 y(Once)k(a)g(compsp)s(ec)g(has)g(b)s(een)f(found,)h +(it)h(is)f(used)f(to)i(generate)h(the)e(list)h(of)f(matc)m(hing)h(w)m +(ords.)51 b(If)150 5230 y(a)37 b(compsp)s(ec)f(is)g(not)h(found,)f(the) +h(default)f(Bash)h(completion)g(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f +(Section)g(8.4.6)150 5340 y([Commands)30 b(F)-8 b(or)31 +b(Completion],)g(page)g(133\))h(is)f(p)s(erformed.)p +eop end +%%Page: 138 144 +TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(138)275 299 y(First,)31 +b(the)g(actions)g(sp)s(eci\014ed)f(b)m(y)h(the)f(compsp)s(ec)h(are)g +(used.)40 b(Only)30 b(matc)m(hes)i(whic)m(h)e(are)h(pre\014xed)150 +408 y(b)m(y)h(the)f(w)m(ord)h(b)s(eing)f(completed)h(are)g(returned.)44 +b(When)31 b(the)h Ft(-f)f Fu(or)h Ft(-d)f Fu(option)h(is)f(used)g(for)h +(\014lename)150 518 y(or)e(directory)h(name)f(completion,)i(the)e +(shell)h(v)-5 b(ariable)31 b Ft(FIGNORE)d Fu(is)i(used)f(to)i(\014lter) +g(the)f(matc)m(hes.)42 b(See)150 628 y(Section)31 b(5.2)h([Bash)e(V)-8 +b(ariables],)33 b(page)e(73,)g(for)f(a)h(description)g(of)f +Ft(FIGNORE)p Fu(.)275 769 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f +(b)m(y)g(a)h(\014lename)f(expansion)h(pattern)f(to)h(the)g +Ft(-G)e Fu(option)i(are)g(generated)150 878 y(next.)41 +b(The)29 b(w)m(ords)g(generated)h(b)m(y)g(the)g(pattern)f(need)h(not)f +(matc)m(h)i(the)f(w)m(ord)f(b)s(eing)g(completed.)41 +b(The)150 988 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32 +b(is)g(not)g(used)e(to)i(\014lter)g(the)g(matc)m(hes,)h(but)d(the)i +Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 1097 y(is)30 +b(used.)275 1238 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the) +g(argumen)m(t)h(to)g(the)f Ft(-W)f Fu(option)i(is)f(considered.)60 +b(The)37 b(string)150 1348 y(is)c(\014rst)e(split)i(using)f(the)h(c)m +(haracters)h(in)e(the)h Ft(IFS)e Fu(sp)s(ecial)j(v)-5 +b(ariable)33 b(as)g(delimiters.)48 b(Shell)32 b(quoting)h(is)150 +1457 y(honored)f(within)h(the)g(string,)h(in)f(order)f(to)i(pro)m(vide) +f(a)h(mec)m(hanism)f(for)g(the)g(w)m(ords)g(to)g(con)m(tain)i(shell)150 +1567 y(metac)m(haracters)e(or)e(c)m(haracters)i(in)e(the)g(v)-5 +b(alue)31 b(of)g Ft(IFS)p Fu(.)42 b(Eac)m(h)32 b(w)m(ord)e(is)h(then)g +(expanded)f(using)h(brace)150 1677 y(expansion,)g(tilde)h(expansion,)f +(parameter)g(and)g(v)-5 b(ariable)32 b(expansion,)f(command)f +(substitution,)i(and)150 1786 y(arithmetic)c(expansion,)f(as)g(describ) +s(ed)e(ab)s(o)m(v)m(e)i(\(see)h(Section)f(3.5)g([Shell)g(Expansions],)g +(page)g(22\).)40 b(The)150 1896 y(results)23 b(are)h(split)g(using)f +(the)h(rules)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)g(Section)f(3.5.7) +h([W)-8 b(ord)24 b(Splitting],)i(page)e(32\).)150 2005 +y(The)j(results)h(of)f(the)h(expansion)g(are)g(pre\014x-matc)m(hed)g +(against)h(the)f(w)m(ord)f(b)s(eing)g(completed,)j(and)d(the)150 +2115 y(matc)m(hing)k(w)m(ords)f(b)s(ecome)h(the)g(p)s(ossible)f +(completions.)275 2256 y(After)f(these)g(matc)m(hes)i(ha)m(v)m(e)f(b)s +(een)f(generated,)h(an)m(y)g(shell)f(function)g(or)g(command)g(sp)s +(eci\014ed)f(with)150 2365 y(the)36 b Ft(-F)f Fu(and)g +Ft(-C)g Fu(options)h(is)g(in)m(v)m(ok)m(ed.)59 b(When)35 +b(the)h(command)g(or)f(function)h(is)g(in)m(v)m(ok)m(ed,)i(the)e +Ft(COMP_)150 2475 y(LINE)p Fu(,)42 b Ft(COMP_POINT)p +Fu(,)d Ft(COMP_KEY)p Fu(,)i(and)e Ft(COMP_TYPE)f Fu(v)-5 +b(ariables)41 b(are)f(assigned)g(v)-5 b(alues)41 b(as)f(describ)s(ed) +150 2585 y(ab)s(o)m(v)m(e)34 b(\(see)g(Section)g(5.2)g([Bash)f(V)-8 +b(ariables],)36 b(page)d(73\).)50 b(If)33 b(a)g(shell)g(function)g(is)g +(b)s(eing)f(in)m(v)m(ok)m(ed,)k(the)150 2694 y Ft(COMP_WORDS)j +Fu(and)i Ft(COMP_CWORD)d Fu(v)-5 b(ariables)42 b(are)g(also)h(set.)74 +b(When)41 b(the)h(function)f(or)h(command)f(is)150 2804 +y(in)m(v)m(ok)m(ed,)c(the)e(\014rst)f(argumen)m(t)h(\($1\))h(is)e(the)h +(name)g(of)f(the)h(command)f(whose)h(argumen)m(ts)f(are)h(b)s(eing)150 +2913 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g +(w)m(ord)f(b)s(eing)g(completed,)i(and)e(the)h(third)e(argumen)m(t)150 +3023 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s +(eing)g(completed)i(on)e(the)h(curren)m(t)f(command)h(line.)65 +b(No)150 3133 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g +(against)h(the)e(w)m(ord)g(b)s(eing)f(completed)i(is)g(p)s(erformed;)f +(the)150 3242 y(function)d(or)g(command)h(has)f(complete)i(freedom)e +(in)g(generating)h(the)g(matc)m(hes.)275 3383 y(An)m(y)j(function)h(sp) +s(eci\014ed)f(with)g Ft(-F)g Fu(is)h(in)m(v)m(ok)m(ed)h(\014rst.)53 +b(The)35 b(function)f(ma)m(y)h(use)g(an)m(y)g(of)g(the)g(shell)150 +3493 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d +Fu(and)i Ft(compopt)e Fu(builtins)i(describ)s(ed)f(b)s(elo)m(w)h(\(see) +i(Section)f(8.7)150 3602 y([Programmable)31 b(Completion)h(Builtins],)f +(page)h(139\),)g(to)g(generate)g(the)f(matc)m(hes.)42 +b(It)31 b(m)m(ust)g(put)f(the)150 3712 y(p)s(ossible)g(completions)h +(in)f(the)h Ft(COMPREPLY)d Fu(arra)m(y)j(v)-5 b(ariable,)31 +b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 3853 y(Next,)26 +b(an)m(y)f(command)f(sp)s(eci\014ed)g(with)g(the)h Ft(-C)f +Fu(option)h(is)f(in)m(v)m(ok)m(ed)i(in)e(an)g(en)m(vironmen)m(t)h +(equiv)-5 b(alen)m(t)150 3962 y(to)26 b(command)e(substitution.)39 +b(It)25 b(should)f(prin)m(t)h(a)g(list)h(of)f(completions,)i(one)e(p)s +(er)f(line,)j(to)f(the)f(standard)150 4072 y(output.)40 +b(Bac)m(kslash)32 b(ma)m(y)f(b)s(e)f(used)g(to)h(escap)s(e)g(a)f +(newline,)h(if)f(necessary)-8 b(.)275 4213 y(After)24 +b(all)i(of)f(the)f(p)s(ossible)g(completions)i(are)f(generated,)i(an)m +(y)e(\014lter)g(sp)s(eci\014ed)e(with)i(the)g Ft(-X)e +Fu(option)150 4322 y(is)34 b(applied)g(to)g(the)h(list.)52 +b(The)33 b(\014lter)h(is)g(a)h(pattern)f(as)g(used)f(for)h(pathname)g +(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 4432 +y(pattern)28 b(is)f(replaced)h(with)g(the)f(text)i(of)f(the)f(w)m(ord)h +(b)s(eing)f(completed.)40 b(A)28 b(literal)h(`)p Ft(&)p +Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 4542 y(with)38 +b(a)h(bac)m(kslash;)k(the)38 b(bac)m(kslash)h(is)g(remo)m(v)m(ed)g(b)s +(efore)f(attempting)h(a)g(matc)m(h.)65 b(An)m(y)39 b(completion)150 +4651 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m +(ed)h(from)f(the)h(list.)44 b(A)32 b(leading)g(`)p Ft(!)p +Fu(')f(negates)i(the)f(pattern;)150 4761 y(in)d(this)g(case)h(an)m(y)g +(completion)h(not)e(matc)m(hing)h(the)g(pattern)f(will)h(b)s(e)e(remo)m +(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 4870 y +Fu(shell)k(option)f(\(see)i(the)e(description)g(of)h +Ft(shopt)e Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g +(66\))h(is)150 4980 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e +(without)h(regard)g(to)h(the)g(case)g(of)g(alphab)s(etic)g(c)m +(haracters.)275 5121 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f +(su\016x)h(sp)s(eci\014ed)f(with)i(the)f Ft(-P)g Fu(and)g +Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 5230 +y(mem)m(b)s(er)31 b(of)g(the)h(completion)h(list,)f(and)f(the)h(result) +f(is)h(returned)e(to)i(the)g(Readline)g(completion)h(co)s(de)150 +5340 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)p +eop end +%%Page: 139 145 +TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(139)275 299 y(If)27 +b(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h(an)m(y)f +(matc)m(hes,)i(and)d(the)h Ft(-o)h(dirnames)d Fu(op-)150 +408 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d Fu(when)h(the)h +(compsp)s(ec)g(w)m(as)g(de\014ned,)g(directory)g(name)h(completion)150 +518 y(is)h(attempted.)275 653 y(If)35 b(the)g Ft(-o)30 +b(plusdirs)j Fu(option)j(w)m(as)g(supplied)e(to)i Ft(complete)e +Fu(when)g(the)i(compsp)s(ec)f(w)m(as)h(de\014ned,)150 +763 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h +(matc)m(hes)g(are)g(added)f(to)h(the)f(results)g(of)h(the)150 +873 y(other)31 b(actions.)275 1008 y(By)g(default,)i(if)e(a)h(compsp)s +(ec)f(is)h(found,)f(whatev)m(er)h(it)g(generates)h(is)e(returned)g(to)h +(the)g(completion)150 1117 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g +(p)s(ossible)f(completions.)39 b(The)20 b(default)h(Bash)g(completions) +h(are)g(not)f(attempted,)150 1227 y(and)30 b(the)g(Readline)h(default)f +(of)g(\014lename)h(completion)g(is)f(disabled.)41 b(If)29 +b(the)i Ft(-o)e(bashdefault)e Fu(option)150 1337 y(w)m(as)d(supplied)e +(to)j Ft(complete)c Fu(when)i(the)g(compsp)s(ec)h(w)m(as)g(de\014ned,)g +(the)f(default)h(Bash)g(completions)h(are)150 1446 y(attempted)j(if)f +(the)h(compsp)s(ec)f(generates)h(no)f(matc)m(hes.)41 +b(If)27 b(the)g Ft(-o)j(default)25 b Fu(option)j(w)m(as)f(supplied)f +(to)150 1556 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i +(de\014ned,)e(Readline's)i(default)f(completion)h(will)f(b)s(e)f(p)s +(erformed)150 1665 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,) +g(the)g(default)f(Bash)h(completions\))h(generate)g(no)e(matc)m(hes.) +275 1801 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g +(name)f(completion)h(is)f(desired,)i(the)e(programmable)150 +1910 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d +(a)i(slash)g(to)g(completed)h(names)e(whic)m(h)h(are)g(sym-)150 +2020 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5 +b(ject)40 b(to)h(the)f(v)-5 b(alue)41 b(of)f(the)g Fr(mark-directories) +45 b Fu(Readline)c(v)-5 b(ariable,)150 2130 y(regardless)31 +b(of)f(the)h(setting)g(of)g(the)f Fr(mark-symlink)m(ed-directories)36 +b Fu(Readline)31 b(v)-5 b(ariable.)275 2265 y(There)25 +b(is)i(some)g(supp)s(ort)e(for)h(dynamically)h(mo)s(difying)f +(completions.)40 b(This)26 b(is)g(most)h(useful)f(when)150 +2374 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion) +g(sp)s(eci\014ed)f(with)g Ft(-D)p Fu(.)72 b(It's)42 b(p)s(ossible)f +(for)g(shell)150 2484 y(functions)28 b(executed)h(as)f(completion)i +(handlers)d(to)i(indicate)g(that)g(completion)g(should)e(b)s(e)h +(retried)g(b)m(y)150 2594 y(returning)j(an)i(exit)g(status)f(of)h(124.) +48 b(If)31 b(a)i(shell)f(function)g(returns)f(124,)k(and)c(c)m(hanges)j +(the)e(compsp)s(ec)150 2703 y(asso)s(ciated)43 b(with)e(the)g(command)g +(on)g(whic)m(h)g(completion)i(is)e(b)s(eing)g(attempted)h(\(supplied)e +(as)i(the)150 2813 y(\014rst)29 b(argumen)m(t)h(when)e(the)i(function)f +(is)g(executed\),)j(programmable)d(completion)i(restarts)f(from)f(the) +150 2922 y(b)s(eginning,)e(with)g(an)h(attempt)g(to)g(\014nd)e(a)i(new) +e(compsp)s(ec)i(for)f(that)h(command.)39 b(This)27 b(allo)m(ws)h(a)g +(set)g(of)150 3032 y(completions)33 b(to)f(b)s(e)g(built)f(dynamically) +i(as)f(completion)h(is)f(attempted,)h(rather)f(than)f(b)s(eing)g +(loaded)150 3142 y(all)g(at)g(once.)275 3277 y(F)-8 b(or)38 +b(instance,)h(assuming)e(that)h(there)f(is)h(a)f(library)g(of)g(compsp) +s(ecs,)i(eac)m(h)g(k)m(ept)e(in)g(a)h(\014le)f(corre-)150 +3386 y(sp)s(onding)g(to)j(the)f(name)f(of)h(the)g(command,)i(the)e +(follo)m(wing)h(default)f(completion)h(function)e(w)m(ould)150 +3496 y(load)31 b(completions)g(dynamically:)390 3631 +y Ft(_completion_loader\(\))390 3741 y({)581 3851 y(.)47 +b("/etc/bash_completion.d/$1)o(.sh)o(")42 b(>/dev/null)j(2>&1)i(&&)g +(return)f(124)390 3960 y(})390 4070 y(complete)g(-D)h(-F)g +(_completion_loader)c(-o)k(bashdefault)e(-o)i(default)150 +4312 y Fs(8.7)68 b(Programmable)47 b(Completion)f(Builtins)150 +4471 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5 +b(ailable)24 b(to)e(manipulate)f(the)h(programmable)f(completion)h +(facilities:)150 4581 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f +(argumen)m(ts)h(to)g(a)g(particular)g(command)f(are)h(to)g(b)s(e)f +(completed,)j(and)d(t)m(w)m(o)150 4690 y(to)e(mo)s(dify)f(the)g +(completion)i(as)e(it)h(is)g(happ)s(ening.)150 4851 y +Ft(compgen)870 4986 y(compgen)46 b([)p Fj(option)p Ft(])f([)p +Fj(word)p Ft(])630 5121 y Fu(Generate)27 b(p)s(ossible)e(completion)i +(matc)m(hes)g(for)e Fr(w)m(ord)k Fu(according)e(to)f(the)g +Fr(option)p Fu(s,)h(whic)m(h)630 5230 y(ma)m(y)32 b(b)s(e)f(an)m(y)h +(option)g(accepted)g(b)m(y)g(the)f Ft(complete)f Fu(builtin)h(with)g +(the)g(exception)i(of)f Ft(-p)630 5340 y Fu(and)39 b +Ft(-r)p Fu(,)i(and)e(write)h(the)g(matc)m(hes)g(to)g(the)g(standard)f +(output.)68 b(When)39 b(using)g(the)h Ft(-F)p eop end +%%Page: 140 146 +TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(140)630 299 y(or)33 +b Ft(-C)f Fu(options,)i(the)e(v)-5 b(arious)33 b(shell)g(v)-5 +b(ariables)33 b(set)g(b)m(y)g(the)g(programmable)g(completion)630 +408 y(facilities,)g(while)d(a)m(v)-5 b(ailable,)33 b(will)e(not)g(ha)m +(v)m(e)g(useful)f(v)-5 b(alues.)630 555 y(The)34 b(matc)m(hes)h(will)g +(b)s(e)f(generated)h(in)f(the)h(same)g(w)m(a)m(y)g(as)g(if)f(the)h +(programmable)f(com-)630 664 y(pletion)d(co)s(de)g(had)f(generated)i +(them)e(directly)i(from)e(a)h(completion)h(sp)s(eci\014cation)f(with) +630 774 y(the)e(same)h(\015ags.)40 b(If)29 b Fr(w)m(ord)j +Fu(is)d(sp)s(eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g +Fr(w)m(ord)j Fu(will)630 883 y(b)s(e)d(displa)m(y)m(ed.)630 +1029 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in) +m(v)-5 b(alid)25 b(option)g(is)g(supplied,)f(or)h(no)g(matc)m(hes)g(w)m +(ere)630 1139 y(generated.)150 1322 y Ft(complete)870 +1468 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p +Ft(])e([-DEI])h([-A)h Fj(action)p Ft(])e([-)870 1577 +y(G)i Fj(globpat)p Ft(])870 1687 y([-W)g Fj(wordlist)p +Ft(])e([-F)i Fj(function)p Ft(])e([-C)i Fj(command)p +Ft(])f([-X)h Fj(filterpat)p Ft(])870 1797 y([-P)g Fj(prefix)p +Ft(])f([-S)h Fj(suffix)p Ft(])e Fj(name)i Ft([)p Fj(name)f +Ft(...])870 1906 y(complete)g(-pr)g([-DEI])h([)p Fj(name)f +Ft(...)o(])630 2052 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i +(eac)m(h)g Fr(name)j Fu(should)37 b(b)s(e)g(completed.)63 +b(If)38 b(the)f Ft(-p)g Fu(option)630 2162 y(is)30 b(supplied,)e(or)i +(if)g(no)f(options)h(are)g(supplied,)f(existing)h(completion)h(sp)s +(eci\014cations)g(are)630 2271 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g +(that)h(allo)m(ws)g(them)e(to)i(b)s(e)e(reused)f(as)i(input.)38 +b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 2381 +y(a)i(completion)h(sp)s(eci\014cation)f(for)g(eac)m(h)h +Fr(name)p Fu(,)f(or,)h(if)e(no)h Fr(name)5 b Fu(s)27 +b(are)h(supplied,)g(all)g(com-)630 2491 y(pletion)i(sp)s +(eci\014cations.)42 b(The)29 b Ft(-D)g Fu(option)h(indicates)h(that)f +(other)g(supplied)e(options)j(and)630 2600 y(actions)c(should)e(apply)g +(to)i(the)f(\\default")h(command)e(completion;)k(that)e(is,)g +(completion)630 2710 y(attempted)g(on)f(a)h(command)f(for)g(whic)m(h)g +(no)g(completion)i(has)d(previously)h(b)s(een)g(de\014ned.)630 +2819 y(The)e Ft(-E)g Fu(option)h(indicates)g(that)g(other)g(supplied)e +(options)h(and)g(actions)i(should)d(apply)h(to)630 2929 +y(\\empt)m(y")33 b(command)e(completion;)i(that)f(is,)g(completion)h +(attempted)f(on)g(a)f(blank)g(line.)630 3039 y(The)24 +b Ft(-I)g Fu(option)h(indicates)g(that)g(other)g(supplied)e(options)h +(and)g(actions)i(should)d(apply)h(to)630 3148 y(completion)29 +b(on)g(the)f(initial)h(non-assignmen)m(t)g(w)m(ord)f(on)g(the)g(line,)i +(or)e(after)h(a)f(command)630 3258 y(delimiter)41 b(suc)m(h)g(as)f(`)p +Ft(;)p Fu(')h(or)g(`)p Ft(|)p Fu(',)i(whic)m(h)e(is)f(usually)h +(command)f(name)h(completion.)72 b(If)630 3367 y(m)m(ultiple)26 +b(options)g(are)g(supplied,)g(the)f Ft(-D)g Fu(option)h(tak)m(es)i +(precedence)e(o)m(v)m(er)g Ft(-E)p Fu(,)h(and)e(b)s(oth)630 +3477 y(tak)m(e)34 b(precedence)f(o)m(v)m(er)h Ft(-I)p +Fu(.)47 b(If)32 b(an)m(y)h(of)g Ft(-D)p Fu(,)g Ft(-E)p +Fu(,)f(or)h Ft(-I)f Fu(are)h(supplied,)f(an)m(y)h(other)g +Fr(name)630 3587 y Fu(argumen)m(ts)k(are)g(ignored;)j(these)d +(completions)h(only)e(apply)g(to)i(the)f(case)g(sp)s(eci\014ed)f(b)m(y) +630 3696 y(the)31 b(option.)630 3842 y(The)e(pro)s(cess)g(of)h +(applying)g(these)g(completion)g(sp)s(eci\014cations)h(when)d(w)m(ord)i +(completion)630 3952 y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m +(v)m(e)j(\(see)f(Section)g(8.6)g([Programmable)g(Completion],)630 +4061 y(page)31 b(137\).)630 4208 y(Other)d(options,)i(if)f(sp)s +(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i(meanings.)40 +b(The)29 b(argumen)m(ts)g(to)h(the)630 4317 y Ft(-G)p +Fu(,)41 b Ft(-W)p Fu(,)h(and)c Ft(-X)h Fu(options)h(\(and,)h(if)f +(necessary)-8 b(,)42 b(the)e Ft(-P)f Fu(and)f Ft(-S)h +Fu(options\))h(should)f(b)s(e)630 4427 y(quoted)28 b(to)h(protect)g +(them)f(from)f(expansion)h(b)s(efore)g(the)g Ft(complete)e +Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)630 4609 y Ft(-o)i +Fj(comp-option)1110 4719 y Fu(The)c Fr(comp-option)i +Fu(con)m(trols)g(sev)m(eral)h(asp)s(ects)e(of)g(the)g(compsp)s(ec's)g +(b)s(eha)m(v-)1110 4829 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h +(generation)h(of)e(completions.)41 b Fr(comp-option)27 +b Fu(ma)m(y)1110 4938 y(b)s(e)j(one)g(of:)1110 5121 y +Ft(bashdefault)1590 5230 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g +(default)f(Bash)h(completions)g(if)g(the)1590 5340 y(compsp)s(ec)i +(generates)i(no)e(matc)m(hes.)p eop end +%%Page: 141 147 +TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(141)1110 299 y Ft(default)144 +b Fu(Use)22 b(Readline's)g(default)g(\014lename)g(completion)g(if)g +(the)g(comp-)1590 408 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110 +570 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h +(completion)g(if)f(the)g(compsp)s(ec)1590 680 y(generates)32 +b(no)e(matc)m(hes.)1110 841 y Ft(filenames)1590 951 y +Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j +(\014lenames,)1590 1060 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h +(\014lename-sp)s(eci\014c)h(pro)s(cessing)e(\(lik)m(e)1590 +1170 y(adding)22 b(a)g(slash)g(to)h(directory)f(names,)i(quoting)f(sp)s +(ecial)f(c)m(har-)1590 1279 y(acters,)39 b(or)d(suppressing)f(trailing) +i(spaces\).)59 b(This)35 b(option)i(is)1590 1389 y(in)m(tended)30 +b(to)g(b)s(e)g(used)f(with)g(shell)i(functions)e(sp)s(eci\014ed)g(with) +1590 1499 y Ft(-F)p Fu(.)1110 1660 y Ft(noquote)144 b +Fu(T)-8 b(ell)28 b(Readline)g(not)g(to)g(quote)g(the)g(completed)g(w)m +(ords)f(if)h(they)1590 1770 y(are)j(\014lenames)f(\(quoting)h +(\014lenames)g(is)f(the)h(default\).)1110 1931 y Ft(nosort)192 +b Fu(T)-8 b(ell)23 b(Readline)g(not)f(to)h(sort)g(the)f(list)h(of)f(p)s +(ossible)g(completions)1590 2041 y(alphab)s(etically)-8 +b(.)1110 2202 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g +(to)g(app)s(end)d(a)j(space)g(\(the)f(default\))h(to)1590 +2312 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110 +2473 y Ft(plusdirs)96 b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d +(b)m(y)i(the)g(compsp)s(ec)g(are)g(gener-)1590 2583 y(ated,)g +(directory)f(name)g(completion)i(is)d(attempted)i(and)f(an)m(y)1590 +2693 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h +(other)g(actions.)630 2854 y Ft(-A)f Fj(action)66 b Fu(The)25 +b Fr(action)h Fu(ma)m(y)g(b)s(e)e(one)h(of)h(the)f(follo)m(wing)i(to)e +(generate)i(a)e(list)h(of)f(p)s(ossible)1110 2964 y(completions:)1110 +3125 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31 +b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i Ft(-a)p Fu(.)1110 +3287 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31 +b(names.)1110 3448 y Ft(binding)144 b Fu(Readline)30 +b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h([Bindable)1590 +3558 y(Readline)h(Commands],)f(page)h(127\).)1110 3719 +y Ft(builtin)144 b Fu(Names)21 b(of)g(shell)f(builtin)h(commands.)37 +b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 3829 +y(as)31 b Ft(-b)p Fu(.)1110 3990 y Ft(command)144 b Fu(Command)29 +b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i +Ft(-c)p Fu(.)1110 4152 y Ft(directory)1590 4261 y Fu(Directory)h +(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g +Ft(-d)p Fu(.)1110 4423 y Ft(disabled)96 b Fu(Names)31 +b(of)g(disabled)f(shell)g(builtins.)1110 4584 y Ft(enabled)144 +b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)1110 +4746 y Ft(export)192 b Fu(Names)34 b(of)f(exp)s(orted)f(shell)h(v)-5 +b(ariables.)49 b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590 +4855 y(\014ed)d(as)g Ft(-e)p Fu(.)1110 5017 y Ft(file)288 +b Fu(File)32 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f +(as)i Ft(-f)p Fu(.)1110 5178 y Ft(function)96 b Fu(Names)31 +b(of)g(shell)f(functions.)1110 5340 y Ft(group)240 b +Fu(Group)30 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g +(as)g Ft(-g)p Fu(.)p eop end +%%Page: 142 148 +TeXDict begin 142 147 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(142)1110 299 y Ft(helptopic)1590 +408 y Fu(Help)37 b(topics)g(as)g(accepted)h(b)m(y)e(the)h +Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590 518 y(tion)31 +b(4.2)g([Bash)g(Builtins],)g(page)g(51\).)1110 689 y +Ft(hostname)96 b Fu(Hostnames,)89 b(as)76 b(tak)m(en)h(from)f(the)g +(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 799 y(the)55 b +Ft(HOSTFILE)e Fu(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h +([Bash)1590 908 y(V)-8 b(ariables],)32 b(page)f(73\).)1110 +1080 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f +(activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s(eci-)1590 +1189 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 1361 y Ft(keyword)144 +b Fu(Shell)30 b(reserv)m(ed)h(w)m(ords.)40 b(Ma)m(y)32 +b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-k)p Fu(.)1110 +1532 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f +(con)m(trol)h(is)g(activ)m(e.)1110 1703 y Ft(service)144 +b Fu(Service)31 b(names.)41 b(Ma)m(y)31 b(also)g(b)s(e)f(sp)s +(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 1874 y Ft(setopt)192 +b Fu(V)-8 b(alid)39 b(argumen)m(ts)g(for)f(the)h Ft(-o)e +Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 1984 +y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(62\).) +1110 2155 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g +(accepted)i(b)m(y)e(the)g Ft(shopt)e Fu(builtin)1590 +2265 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(51\).) +1110 2436 y Ft(signal)192 b Fu(Signal)31 b(names.)1110 +2607 y Ft(stopped)144 b Fu(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g +(job)g(con)m(trol)i(is)f(activ)m(e.)1110 2778 y Ft(user)288 +b Fu(User)30 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f +(as)i Ft(-u)p Fu(.)1110 2950 y Ft(variable)96 b Fu(Names)36 +b(of)g(all)g(shell)g(v)-5 b(ariables.)56 b(Ma)m(y)37 +b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590 3059 y Ft(-v)p +Fu(.)630 3230 y Ft(-C)30 b Fj(command)1110 3340 y Fr(command)35 +b Fu(is)e(executed)g(in)e(a)i(subshell)e(en)m(vironmen)m(t,)i(and)f +(its)g(output)g(is)1110 3450 y(used)e(as)g(the)h(p)s(ossible)f +(completions.)630 3621 y Ft(-F)g Fj(function)1110 3730 +y Fu(The)39 b(shell)g(function)g Fr(function)g Fu(is)g(executed)h(in)f +(the)g(curren)m(t)g(shell)g(en)m(vi-)1110 3840 y(ronmen)m(t.)72 +b(When)41 b(it)g(is)g(executed,)k($1)c(is)g(the)g(name)g(of)g(the)g +(command)1110 3950 y(whose)34 b(argumen)m(ts)h(are)g(b)s(eing)f +(completed,)j($2)e(is)f(the)h(w)m(ord)f(b)s(eing)g(com-)1110 +4059 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m(ord)g(preceding)f(the)h +(w)m(ord)f(b)s(eing)h(completed,)1110 4169 y(as)g(describ)s(ed)f(ab)s +(o)m(v)m(e)i(\(see)g(Section)f(8.6)h([Programmable)g(Completion],)1110 +4278 y(page)30 b(137\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s +(ossible)g(completions)h(are)g(retriev)m(ed)1110 4388 +y(from)g(the)g(v)-5 b(alue)31 b(of)g(the)f Ft(COMPREPLY)e +Fu(arra)m(y)j(v)-5 b(ariable.)630 4559 y Ft(-G)30 b Fj(globpat)1110 +4669 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g +Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 4778 +y(the)31 b(p)s(ossible)e(completions.)630 4950 y Ft(-P)h +Fj(prefix)66 b Fr(pre\014x)39 b Fu(is)34 b(added)f(at)i(the)f(b)s +(eginning)f(of)i(eac)m(h)g(p)s(ossible)e(completion)i(after)1110 +5059 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 +5230 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20 +b(app)s(ended)f(to)i(eac)m(h)h(p)s(ossible)e(completion)i(after)f(all)g +(other)g(options)1110 5340 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)p +eop end +%%Page: 143 149 +TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(143)630 299 y Ft(-W)30 +b Fj(wordlist)1110 408 y Fu(The)24 b Fr(w)m(ordlist)k +Fu(is)d(split)g(using)f(the)h(c)m(haracters)i(in)d(the)i +Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 518 y(as)36 +b(delimiters,)i(and)e(eac)m(h)h(resultan)m(t)g(w)m(ord)e(is)h +(expanded.)57 b(The)35 b(p)s(ossible)1110 628 y(completions)c(are)e +(the)h(mem)m(b)s(ers)f(of)g(the)h(resultan)m(t)g(list)g(whic)m(h)f +(matc)m(h)i(the)1110 737 y(w)m(ord)f(b)s(eing)g(completed.)630 +909 y Ft(-X)g Fj(filterpat)1110 1019 y Fr(\014lterpat)d +Fu(is)e(a)g(pattern)g(as)f(used)g(for)h(\014lename)g(expansion.)38 +b(It)25 b(is)g(applied)f(to)1110 1128 y(the)30 b(list)f(of)h(p)s +(ossible)f(completions)h(generated)h(b)m(y)e(the)g(preceding)h(options) +1110 1238 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m +(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 1347 +y(from)i(the)h(list.)42 b(A)30 b(leading)i(`)p Ft(!)p +Fu(')e(in)g Fr(\014lterpat)j Fu(negates)f(the)f(pattern;)g(in)f(this) +1110 1457 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g +Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 1629 y(The)35 +b(return)g(v)-5 b(alue)37 b(is)f(true)f(unless)h(an)f(in)m(v)-5 +b(alid)37 b(option)f(is)g(supplied,)g(an)g(option)h(other)630 +1738 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f +Fr(name)44 b Fu(argumen)m(t,)c(an)e(attempt)i(is)e(made)g(to)630 +1848 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a) +h Fr(name)k Fu(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,) +630 1958 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s +(eci\014cation.)150 2129 y Ft(compopt)870 2270 y(compopt)46 +b([-o)h Fj(option)p Ft(])f([-DEI])g([+o)h Fj(option)p +Ft(])e([)p Fj(name)p Ft(])630 2411 y Fu(Mo)s(dify)33 +b(completion)h(options)g(for)f(eac)m(h)h Fr(name)39 b +Fu(according)34 b(to)g(the)f Fr(option)p Fu(s,)i(or)e(for)g(the)630 +2520 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f +Fr(name)5 b Fu(s)44 b(are)h(supplied.)80 b(If)43 b(no)h +Fr(option)p Fu(s)h(are)630 2630 y(giv)m(en,)30 b(displa)m(y)e(the)g +(completion)h(options)g(for)e(eac)m(h)i Fr(name)34 b +Fu(or)27 b(the)i(curren)m(t)e(completion.)630 2740 y(The)f(p)s(ossible) +g(v)-5 b(alues)27 b(of)f Fr(option)h Fu(are)g(those)g(v)-5 +b(alid)26 b(for)g(the)h Ft(complete)d Fu(builtin)i(describ)s(ed)630 +2849 y(ab)s(o)m(v)m(e.)41 b(The)27 b Ft(-D)f Fu(option)i(indicates)g +(that)g(other)f(supplied)f(options)i(should)e(apply)h(to)h(the)630 +2959 y(\\default")33 b(command)f(completion;)i(that)f(is,)g(completion) +g(attempted)g(on)f(a)g(command)630 3068 y(for)g(whic)m(h)g(no)g +(completion)i(has)e(previously)g(b)s(een)g(de\014ned.)45 +b(The)32 b Ft(-E)f Fu(option)i(indicates)630 3178 y(that)23 +b(other)f(supplied)e(options)j(should)e(apply)g(to)i(\\empt)m(y")g +(command)f(completion;)k(that)630 3287 y(is,)36 b(completion)g +(attempted)g(on)e(a)h(blank)g(line.)54 b(The)34 b Ft(-I)g +Fu(option)h(indicates)g(that)h(other)630 3397 y(supplied)23 +b(options)i(should)f(apply)g(to)i(completion)g(on)e(the)h(initial)h +(non-assignmen)m(t)f(w)m(ord)630 3507 y(on)37 b(the)f(line,)j(or)e +(after)g(a)g(command)f(delimiter)i(suc)m(h)e(as)h(`)p +Ft(;)p Fu(')g(or)f(`)p Ft(|)p Fu(',)j(whic)m(h)e(is)f(usually)630 +3616 y(command)30 b(name)h(completion.)630 3757 y(If)k(m)m(ultiple)i +(options)f(are)g(supplied,)g(the)g Ft(-D)g Fu(option)g(tak)m(es)h +(precedence)g(o)m(v)m(er)g Ft(-E)p Fu(,)g(and)630 3867 +y(b)s(oth)30 b(tak)m(e)i(precedence)e(o)m(v)m(er)i Ft(-I)630 +4007 y Fu(The)23 b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h +(in)m(v)-5 b(alid)24 b(option)h(is)f(supplied,)g(an)g(attempt)h(is)f +(made)630 4117 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h +Fr(name)k Fu(for)31 b(whic)m(h)g(no)g(completion)i(sp)s(eci\014cation)f +(exists,)630 4226 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 +4486 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 +4645 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h +(additional)g(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i +(default)150 4755 y(actions)29 b Ft(complete)d Fu(and)i +Ft(compgen)e Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g +(and)g(bind)e(it)j(to)g(a)g(particular)150 4864 y(command)h(using)g +Ft(complete)e(-F)p Fu(.)275 5011 y(The)j(follo)m(wing)j(function)e(pro) +m(vides)g(completions)i(for)e(the)g Ft(cd)g Fu(builtin.)46 +b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 5121 y(example)41 +b(of)g(what)f(shell)h(functions)f(m)m(ust)g(do)h(when)e(used)h(for)g +(completion.)73 b(This)39 b(function)h(uses)150 5230 +y(the)32 b(w)m(ord)f(passed)g(as)h Ft($2)f Fu(to)h(determine)g(the)f +(directory)h(name)g(to)g(complete.)46 b(Y)-8 b(ou)32 +b(can)g(also)g(use)g(the)150 5340 y Ft(COMP_WORDS)c Fu(arra)m(y)i(v)-5 +b(ariable;)32 b(the)e(curren)m(t)h(w)m(ord)f(is)g(indexed)g(b)m(y)g +(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)p eop end +%%Page: 144 150 +TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(144)275 299 y(The)42 +b(function)h(relies)h(on)e(the)i Ft(complete)c Fu(and)j +Ft(compgen)e Fu(builtins)h(to)i(do)f(m)m(uc)m(h)g(of)g(the)h(w)m(ork,) +150 408 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g +Ft(cd)f Fu(do)s(es)g(b)s(ey)m(ond)g(accepting)j(basic)e(directory)g +(names:)38 b(tilde)150 518 y(expansion)22 b(\(see)h(Section)g(3.5.2)g +([Tilde)g(Expansion],)g(page)g(24\),)i(searc)m(hing)e(directories)g(in) +e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 628 y(whic)m(h)21 b(is)h(describ)s(ed) +e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f +(Builtins],)j(page)e(44\),)j(and)c(basic)h(supp)s(ort)150 +737 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h +(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(66\).)46 +b Ft(_comp_)150 847 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5 +b(alue)31 b(of)g Fr(IFS)36 b Fu(so)31 b(that)g(it)g(con)m(tains)h(only) +f(a)g(newline)g(to)h(accommo)s(date)g(\014le)f(names)150 +956 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e +Fu(prin)m(ts)h(the)h(p)s(ossible)f(completions)i(it)g(generates)g(one)f +(p)s(er)150 1066 y(line.)275 1230 y(P)m(ossible)24 b(completions)h(go)g +(in)m(to)g(the)f Fr(COMPREPL)-8 b(Y)36 b Fu(arra)m(y)24 +b(v)-5 b(ariable,)26 b(one)e(completion)i(p)s(er)c(arra)m(y)150 +1340 y(elemen)m(t.)42 b(The)30 b(programmable)g(completion)i(system)e +(retriev)m(es)h(the)g(completions)g(from)f(there)g(when)150 +1450 y(the)h(function)f(returns.)390 1614 y Ft(#)47 b(A)h(completion)d +(function)g(for)i(the)g(cd)g(builtin)390 1724 y(#)g(based)g(on)g(the)g +(cd)g(completion)e(function)h(from)g(the)h(bash_completion)d(package) +390 1833 y(_comp_cd\(\))390 1943 y({)581 2052 y(local)i(IFS=$')g +(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 2162 y(local)g(cur)h +(_skipdot)f(_cdpath)581 2271 y(local)g(i)i(j)f(k)581 +2491 y(#)g(Tilde)g(expansion,)e(which)h(also)h(expands)f(tilde)g(to)h +(full)g(pathname)581 2600 y(case)g("$2")f(in)581 2710 +y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 2819 y(*\))286 +b(cur=$2)46 b(;;)581 2929 y(esac)581 3148 y(#)h(no)h(cdpath)e(or)h +(absolute)e(pathname)h(--)h(straight)f(directory)f(completion)581 +3258 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h +(@\(./*|../*|/*\))d(]];)j(then)772 3367 y(#)g(compgen)f(prints)g(paths) +h(one)f(per)h(line;)g(could)f(also)h(use)g(while)f(loop)772 +3477 y(IFS=$'\\n')772 3587 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g +("$cur"\))f(\))772 3696 y(IFS=$')g(\\t\\n')581 3806 y(#)h +(CDPATH+directories)c(in)k(the)g(current)f(directory)f(if)j(not)e(in)i +(CDPATH)581 3915 y(else)772 4025 y(IFS=$'\\n')772 4134 +y(_skipdot=false)772 4244 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d +(null)i(directory)e(names)i(to)g(.)772 4354 y(_cdpath=${CDPATH/#:/.:}) +772 4463 y(_cdpath=${_cdpath//::/:.)o(:})772 4573 y +(_cdpath=${_cdpath/\045:/:.})772 4682 y(for)g(i)g(in)g +(${_cdpath//:/$'\\n'};)c(do)963 4792 y(if)k([[)g($i)g(-ef)g(.)h(]];)f +(then)f(_skipdot=true;)e(fi)963 4902 y(k="${#COMPREPLY[@]}")963 +5011 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do) +1154 5121 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory) +963 5230 y(done)772 5340 y(done)p eop end +%%Page: 145 151 +TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(145)772 299 y Ft($_skipdot)45 +b(||)i(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772 +408 y(IFS=$')g(\\t\\n')581 518 y(fi)581 737 y(#)h(variable)f(names)g +(if)h(appropriate)e(shell)i(option)f(set)h(and)f(no)i(completions)581 +847 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c(-eq) +k(0)g(]];)g(then)772 956 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g +("$cur"\))f(\))581 1066 y(fi)581 1285 y(return)g(0)390 +1395 y(})275 1529 y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h +(function)e(using)f(the)i Ft(-F)f Fu(option)h(to)g Ft(complete)p +Fu(:)390 1664 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f +(and)i(append)f(slashes)g(to)h(directories;)390 1773 +y(#)g(use)g(the)g(bash)g(default)f(completion)f(for)i(other)f +(arguments)390 1883 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h +(bashdefault)e(-F)i(_comp_cd)f(cd)150 2017 y Fu(Since)33 +b(w)m(e'd)g(lik)m(e)i(Bash)e(and)f(Readline)i(to)g(tak)m(e)g(care)g(of) +f(some)h(of)f(the)g(other)h(details)g(for)e(us,)i(w)m(e)f(use)150 +2127 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g(Bash)f(and)f +(Readline)i(what)f(to)g(do.)76 b(The)41 b Ft(-o)30 b(filenames)39 +b Fu(option)150 2237 y(tells)j(Readline)g(that)g(the)f(p)s(ossible)g +(completions)h(should)f(b)s(e)f(treated)i(as)g(\014lenames,)i(and)d +(quoted)150 2346 y(appropriately)-8 b(.)53 b(That)34 +b(option)h(will)g(also)g(cause)g(Readline)g(to)g(app)s(end)e(a)h(slash) +g(to)h(\014lenames)g(it)g(can)150 2456 y(determine)i(are)g(directories) +h(\(whic)m(h)g(is)f(wh)m(y)f(w)m(e)i(migh)m(t)f(w)m(an)m(t)h(to)g +(extend)f Ft(_comp_cd)e Fu(to)i(app)s(end)f(a)150 2565 +y(slash)22 b(if)g(w)m(e're)h(using)f(directories)h(found)e(via)i +Fr(CDP)-8 b(A)g(TH)10 b Fu(:)37 b(Readline)23 b(can't)g(tell)g(those)g +(completions)h(are)150 2675 y(directories\).)45 b(The)31 +b Ft(-o)f(nospace)f Fu(option)j(tells)g(Readline)g(to)h(not)e(app)s +(end)f(a)i(space)g(c)m(haracter)h(to)f(the)150 2785 y(directory)c +(name,)h(in)f(case)h(w)m(e)f(w)m(an)m(t)h(to)f(app)s(end)f(to)h(it.)41 +b(The)27 b Ft(-o)j(bashdefault)25 b Fu(option)j(brings)f(in)h(the)150 +2894 y(rest)h(of)f(the)h Ft(")p Fu(Bash)f(default)p Ft(")h +Fu(completions)g({)g(p)s(ossible)f(completion)i(that)f(Bash)f(adds)g +(to)h(the)g(default)150 3004 y(Readline)f(set.)40 b(These)28 +b(include)f(things)g(lik)m(e)i(command)e(name)h(completion,)h(v)-5 +b(ariable)28 b(completion)h(for)150 3113 y(w)m(ords)e(b)s(eginning)h +(with)f(`)p Ft($)p Fu(')h(or)g(`)p Ft(${)p Fu(',)h(completions)g(con)m +(taining)g(pathname)f(expansion)g(patterns)g(\(see)150 +3223 y(Section)j(3.5.8)h([Filename)g(Expansion],)e(page)i(33\),)f(and)f +(so)h(on.)275 3357 y(Once)39 b(installed)i(using)e Ft(complete)p +Fu(,)h Ft(_comp_cd)d Fu(will)j(b)s(e)g(called)g(ev)m(ery)h(time)f(w)m +(e)g(attempt)h(w)m(ord)150 3467 y(completion)32 b(for)e(a)h +Ft(cd)e Fu(command.)275 3601 y(Man)m(y)34 b(more)g(examples)g({)g(an)g +(extensiv)m(e)h(collection)i(of)c(completions)i(for)f(most)g(of)g(the)g +(common)150 3711 y(GNU,)g(Unix,)h(and)d(Lin)m(ux)h(commands)g({)h(are)g +(a)m(v)-5 b(ailable)36 b(as)e(part)f(of)h(the)f(bash)p +2943 3711 28 4 v 39 w(completion)i(pro)5 b(ject.)150 +3821 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h +(GNU/Lin)m(ux)f(distributions.)51 b(Originally)35 b(written)f(b)m(y)g +(Ian)150 3930 y(Macdonald,)48 b(the)c(pro)5 b(ject)44 +b(no)m(w)g(liv)m(es)h(at)f Ft(https:)11 b(/)g(/)g(github)g(.)g(com)g(/) +g(sc)o(op)g(/)f(bash)o(-co)o(mple)o(tion)g(/)h Fu(.)150 +4040 y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g +(as)h(Solaris)g(and)f(Mac)h(OS)f(X.)275 4174 y(An)54 +b(older)h(v)m(ersion)h(of)f(the)g(bash)p 1532 4174 V +40 w(completion)h(pac)m(k)-5 b(age)57 b(is)e(distributed)f(with)h(bash) +f(in)h(the)150 4284 y Ft(examples/complete)26 b Fu(sub)s(directory)-8 +b(.)p eop end +%%Page: 146 152 +TeXDict begin 146 151 bop 3614 -116 a Fu(146)150 299 +y Fp(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150 +554 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the) +f Fm(gnu)h Fu(History)g(Library)e(in)m(teractiv)m(ely)-8 +b(,)50 b(from)42 b(a)h(user's)150 664 y(standp)s(oin)m(t.)76 +b(It)42 b(should)f(b)s(e)h(considered)g(a)g(user's)g(guide.)76 +b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fm(gnu)150 +774 y Fu(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g +Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 1025 +y Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150 +1184 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the) +f Ft(set)f Fu(builtin)h(is)g(enabled)g(\(see)g(Section)h(4.3.1)h([The)e +(Set)150 1294 y(Builtin],)32 b(page)g(62\),)h(the)e(shell)h(pro)m +(vides)f(access)h(to)g(the)f Fr(command)g(history)p Fu(,)h(the)f(list)h +(of)f(commands)150 1404 y(previously)h(t)m(yp)s(ed.)47 +b(The)33 b(v)-5 b(alue)33 b(of)f(the)h Ft(HISTSIZE)e +Fu(shell)h(v)-5 b(ariable)34 b(is)f(used)e(as)i(the)g(n)m(um)m(b)s(er)e +(of)i(com-)150 1513 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h +(list.)58 b(The)36 b(text)h(of)g(the)f(last)h Ft($HISTSIZE)d +Fu(commands)i(\(default)g(500\))150 1623 y(is)h(sa)m(v)m(ed.)61 +b(The)36 b(shell)h(stores)h(eac)m(h)g(command)e(in)h(the)g(history)g +(list)g(prior)f(to)i(parameter)f(and)f(v)-5 b(ari-)150 +1732 y(able)33 b(expansion)g(but)f(after)h(history)f(expansion)h(is)g +(p)s(erformed,)e(sub)5 b(ject)33 b(to)g(the)g(v)-5 b(alues)33 +b(of)g(the)g(shell)150 1842 y(v)-5 b(ariables)31 b Ft(HISTIGNORE)d +Fu(and)h Ft(HISTCONTROL)p Fu(.)275 1984 y(When)g(the)g(shell)h(starts)g +(up,)f(the)h(history)f(is)h(initialized)h(from)e(the)h(\014le)f(named)g +(b)m(y)h(the)f Ft(HISTFILE)150 2093 y Fu(v)-5 b(ariable)26 +b(\(default)g Ft(~/.bash_history)p Fu(\).)35 b(The)24 +b(\014le)i(named)e(b)m(y)h(the)h(v)-5 b(alue)25 b(of)h +Ft(HISTFILE)c Fu(is)k(truncated,)150 2203 y(if)42 b(necessary)-8 +b(,)45 b(to)e(con)m(tain)g(no)f(more)g(than)f(the)h(n)m(um)m(b)s(er)f +(of)h(lines)g(sp)s(eci\014ed)f(b)m(y)h(the)g(v)-5 b(alue)42 +b(of)g(the)150 2312 y Ft(HISTFILESIZE)28 b Fu(v)-5 b(ariable.)46 +b(When)31 b(a)h(shell)g(with)g(history)f(enabled)h(exits,)h(the)f(last) +h Ft($HISTSIZE)c Fu(lines)150 2422 y(are)35 b(copied)g(from)g(the)g +(history)f(list)i(to)f(the)g(\014le)g(named)f(b)m(y)h +Ft($HISTFILE)p Fu(.)51 b(If)35 b(the)g Ft(histappend)d +Fu(shell)150 2532 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h +([Bash)f(Builtins],)h(page)g(51\),)h(the)e(lines)g(are)g(app)s(ended)e +(to)i(the)g(history)150 2641 y(\014le,)36 b(otherwise)f(the)g(history)f +(\014le)h(is)f(o)m(v)m(erwritten.)55 b(If)34 b Ft(HISTFILE)e +Fu(is)j(unset,)g(or)g(if)f(the)h(history)f(\014le)h(is)150 +2751 y(un)m(writable,)f(the)f(history)g(is)g(not)h(sa)m(v)m(ed.)49 +b(After)34 b(sa)m(ving)g(the)f(history)-8 b(,)34 b(the)g(history)f +(\014le)g(is)g(truncated)150 2860 y(to)g(con)m(tain)h(no)f(more)g(than) +f Ft($HISTFILESIZE)d Fu(lines.)48 b(If)33 b Ft(HISTFILESIZE)c +Fu(is)k(unset,)g(or)f(set)i(to)f(n)m(ull,)h(a)150 2970 +y(non-n)m(umeric)c(v)-5 b(alue,)31 b(or)f(a)h(n)m(umeric)f(v)-5 +b(alue)31 b(less)g(than)f(zero,)h(the)g(history)f(\014le)h(is)f(not)h +(truncated.)275 3112 y(If)g(the)h Ft(HISTTIMEFORMAT)d +Fu(is)j(set,)h(the)f(time)h(stamp)f(information)g(asso)s(ciated)i(with) +e(eac)m(h)h(history)150 3221 y(en)m(try)d(is)h(written)f(to)h(the)f +(history)h(\014le,)f(mark)m(ed)h(with)f(the)g(history)g(commen)m(t)h(c) +m(haracter.)43 b(When)30 b(the)150 3331 y(history)22 +b(\014le)h(is)g(read,)h(lines)f(b)s(eginning)e(with)i(the)f(history)h +(commen)m(t)g(c)m(haracter)h(follo)m(w)m(ed)h(immediately)150 +3440 y(b)m(y)30 b(a)h(digit)g(are)g(in)m(terpreted)g(as)f(timestamps)h +(for)f(the)h(follo)m(wing)h(history)e(en)m(try)-8 b(.)275 +3582 y(The)19 b(builtin)h(command)g Ft(fc)g Fu(ma)m(y)h(b)s(e)f(used)f +(to)i(list)g(or)g(edit)g(and)e(re-execute)j(a)f(p)s(ortion)f(of)g(the)h +(history)150 3692 y(list.)41 b(The)27 b Ft(history)f +Fu(builtin)i(ma)m(y)h(b)s(e)e(used)g(to)i(displa)m(y)g(or)f(mo)s(dify)f +(the)h(history)g(list)h(and)f(manipulate)150 3801 y(the)j(history)g +(\014le.)42 b(When)31 b(using)f(command-line)h(editing,)h(searc)m(h)f +(commands)g(are)g(a)m(v)-5 b(ailable)33 b(in)e(eac)m(h)150 +3911 y(editing)45 b(mo)s(de)g(that)g(pro)m(vide)g(access)h(to)f(the)g +(history)f(list)i(\(see)f(Section)h(8.4.2)g([Commands)e(F)-8 +b(or)150 4020 y(History],)31 b(page)h(128\).)275 4162 +y(The)47 b(shell)i(allo)m(ws)h(con)m(trol)f(o)m(v)m(er)h(whic)m(h)e +(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)h(history)f(list.)95 +b(The)150 4272 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e +Fu(v)-5 b(ariables)29 b(ma)m(y)h(b)s(e)d(set)j(to)f(cause)g(the)g +(shell)f(to)i(sa)m(v)m(e)g(only)f(a)g(subset)150 4381 +y(of)e(the)g(commands)f(en)m(tered.)40 b(The)26 b Ft(cmdhist)f +Fu(shell)i(option,)h(if)f(enabled,)g(causes)h(the)e(shell)h(to)h +(attempt)150 4491 y(to)23 b(sa)m(v)m(e)h(eac)m(h)f(line)g(of)f(a)h(m)m +(ulti-line)g(command)f(in)g(the)h(same)f(history)g(en)m(try)-8 +b(,)25 b(adding)d(semicolons)h(where)150 4600 y(necessary)37 +b(to)f(preserv)m(e)h(syn)m(tactic)h(correctness.)58 b(The)36 +b Ft(lithist)e Fu(shell)i(option)h(causes)g(the)f(shell)g(to)150 +4710 y(sa)m(v)m(e)41 b(the)e(command)g(with)f(em)m(b)s(edded)g +(newlines)h(instead)g(of)g(semicolons.)68 b(The)39 b +Ft(shopt)e Fu(builtin)i(is)150 4820 y(used)30 b(to)i(set)g(these)g +(options.)43 b(See)32 b(Section)g(4.3.2)h([The)e(Shopt)f(Builtin],)j +(page)f(66,)g(for)f(a)h(description)150 4929 y(of)f Ft(shopt)p +Fu(.)150 5181 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150 +5340 y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g +(whic)m(h)g(manipulate)g(the)h(history)f(list)h(and)f(history)g +(\014le.)p eop end +%%Page: 147 153 +TeXDict begin 147 152 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(147)150 +299 y Ft(fc)870 430 y(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p +Fj(first)p Ft(])g([)p Fj(last)p Ft(])870 540 y(fc)h(-s)g([)p +Fj(pat)p Ft(=)p Fj(rep)p Ft(])f([)p Fj(command)p Ft(])630 +671 y Fu(The)32 b(\014rst)g(form)g(selects)j(a)e(range)g(of)f(commands) +h(from)f Fr(\014rst)i Fu(to)f Fr(last)j Fu(from)c(the)h(history)630 +781 y(list)41 b(and)f(displa)m(ys)g(or)g(edits)h(and)e(re-executes)j +(them.)71 b(Both)40 b Fr(\014rst)i Fu(and)e Fr(last)j +Fu(ma)m(y)e(b)s(e)630 891 y(sp)s(eci\014ed)33 b(as)h(a)g(string)g(\(to) +h(lo)s(cate)h(the)e(most)g(recen)m(t)h(command)f(b)s(eginning)f(with)g +(that)630 1000 y(string\))28 b(or)g(as)h(a)f(n)m(um)m(b)s(er)f(\(an)h +(index)g(in)m(to)h(the)f(history)g(list,)h(where)f(a)g(negativ)m(e)i(n) +m(um)m(b)s(er)630 1110 y(is)g(used)g(as)h(an)f(o\013set)h(from)f(the)h +(curren)m(t)f(command)g(n)m(um)m(b)s(er\).)630 1241 y(When)j(listing,)h +(a)f Fr(\014rst)h Fu(or)f Fr(last)j Fu(of)d(0)g(is)g(equiv)-5 +b(alen)m(t)34 b(to)g(-1)f(and)g(-0)g(is)g(equiv)-5 b(alen)m(t)34 +b(to)g(the)630 1351 y(curren)m(t)k(command)h(\(usually)g(the)g +Ft(fc)f Fu(command\);)43 b(otherwise)c(0)g(is)g(equiv)-5 +b(alen)m(t)40 b(to)f(-1)630 1461 y(and)30 b(-0)h(is)f(in)m(v)-5 +b(alid.)630 1592 y(If)33 b Fr(last)j Fu(is)e(not)f(sp)s(eci\014ed,)h +(it)g(is)f(set)h(to)g Fr(\014rst)p Fu(.)49 b(If)33 b +Fr(\014rst)i Fu(is)e(not)h(sp)s(eci\014ed,)f(it)h(is)g(set)g(to)g(the) +630 1702 y(previous)g(command)f(for)h(editing)h(and)e +Fq(\000)p Fu(16)i(for)f(listing.)53 b(If)33 b(the)h Ft(-l)g +Fu(\015ag)g(is)g(giv)m(en,)j(the)630 1811 y(commands)27 +b(are)h(listed)g(on)f(standard)g(output.)39 b(The)27 +b Ft(-n)g Fu(\015ag)h(suppresses)e(the)h(command)630 +1921 y(n)m(um)m(b)s(ers)h(when)h(listing.)42 b(The)29 +b Ft(-r)g Fu(\015ag)i(rev)m(erses)f(the)g(order)f(of)i(the)f(listing.) +41 b(Otherwise,)630 2030 y(the)i(editor)h(giv)m(en)g(b)m(y)f +Fr(ename)49 b Fu(is)43 b(in)m(v)m(ok)m(ed)i(on)e(a)g(\014le)h(con)m +(taining)g(those)g(commands.)630 2140 y(If)c Fr(ename)46 +b Fu(is)40 b(not)h(giv)m(en,)j(the)d(v)-5 b(alue)41 b(of)f(the)h(follo) +m(wing)h(v)-5 b(ariable)41 b(expansion)f(is)g(used:)630 +2250 y Ft(${FCEDIT:-${EDITOR:-vi}})o Fu(.)34 b(This)25 +b(sa)m(ys)i(to)g(use)f(the)g(v)-5 b(alue)27 b(of)f(the)h +Ft(FCEDIT)d Fu(v)-5 b(ariable)630 2359 y(if)33 b(set,)i(or)e(the)h(v)-5 +b(alue)33 b(of)h(the)f Ft(EDITOR)f Fu(v)-5 b(ariable)34 +b(if)f(that)h(is)f(set,)i(or)e Ft(vi)f Fu(if)i(neither)f(is)g(set.)630 +2469 y(When)d(editing)h(is)g(complete,)h(the)e(edited)h(commands)f(are) +h(ec)m(ho)s(ed)g(and)e(executed.)630 2600 y(In)34 b(the)g(second)g +(form,)h Fr(command)j Fu(is)c(re-executed)i(after)f(eac)m(h)g(instance) +g(of)f Fr(pat)j Fu(in)d(the)630 2710 y(selected)29 b(command)e(is)h +(replaced)f(b)m(y)h Fr(rep)p Fu(.)39 b Fr(command)31 +b Fu(is)c(in)m(terpreted)h(the)f(same)h(as)g Fr(\014rst)630 +2819 y Fu(ab)s(o)m(v)m(e.)630 2951 y(A)j(useful)f(alias)i(to)g(use)e +(with)h(the)g Ft(fc)f Fu(command)h(is)g Ft(r='fc)e(-s')p +Fu(,)h(so)h(that)h(t)m(yping)f(`)p Ft(r)f(cc)p Fu(')630 +3061 y(runs)35 b(the)h(last)h(command)f(b)s(eginning)g(with)g +Ft(cc)f Fu(and)h(t)m(yping)g(`)p Ft(r)p Fu(')h(re-executes)h(the)e +(last)630 3170 y(command)30 b(\(see)h(Section)h(6.6)f([Aliases],)h +(page)g(94\).)150 3324 y Ft(history)870 3455 y(history)46 +b([)p Fj(n)p Ft(])870 3565 y(history)g(-c)870 3674 y(history)g(-d)h +Fj(offset)870 3784 y Ft(history)f(-d)h Fj(start)p Ft(-)p +Fj(end)870 3893 y Ft(history)f([-anrw])g([)p Fj(filename)p +Ft(])870 4003 y(history)g(-ps)h Fj(arg)630 4134 y Fu(With)26 +b(no)g(options,)h(displa)m(y)f(the)g(history)g(list)g(with)f(line)h(n)m +(um)m(b)s(ers.)38 b(Lines)26 b(pre\014xed)e(with)630 +4244 y(a)35 b(`)p Ft(*)p Fu(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.) +53 b(An)34 b(argumen)m(t)h(of)g Fr(n)f Fu(lists)i(only)f(the)g(last)g +Fr(n)f Fu(lines.)54 b(If)35 b(the)630 4354 y(shell)30 +b(v)-5 b(ariable)31 b Ft(HISTTIMEFORMAT)26 b Fu(is)k(set)h(and)e(not)i +(n)m(ull,)f(it)h(is)f(used)f(as)h(a)h(format)f(string)630 +4463 y(for)36 b Fr(strftime)41 b Fu(to)36 b(displa)m(y)g(the)g(time)h +(stamp)f(asso)s(ciated)h(with)f(eac)m(h)h(displa)m(y)m(ed)f(history)630 +4573 y(en)m(try)-8 b(.)47 b(No)33 b(in)m(terv)m(ening)g(blank)f(is)g +(prin)m(ted)g(b)s(et)m(w)m(een)h(the)g(formatted)f(time)h(stamp)g(and) +630 4682 y(the)e(history)f(line.)630 4814 y(Options,)g(if)h(supplied,)e +(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4967 +y Ft(-c)384 b Fu(Clear)23 b(the)g(history)g(list.)39 +b(This)22 b(ma)m(y)i(b)s(e)e(com)m(bined)h(with)f(the)h(other)h +(options)1110 5077 y(to)31 b(replace)g(the)g(history)f(list)h +(completely)-8 b(.)630 5230 y Ft(-d)30 b Fj(offset)66 +b Fu(Delete)38 b(the)f(history)f(en)m(try)h(at)f(p)s(osition)h +Fr(o\013set)p Fu(.)59 b(If)36 b Fr(o\013set)j Fu(is)d(p)s(ositiv)m(e,)j +(it)1110 5340 y(should)32 b(b)s(e)h(sp)s(eci\014ed)f(as)i(it)g(app)s +(ears)e(when)g(the)i(history)f(is)g(displa)m(y)m(ed.)50 +b(If)p eop end +%%Page: 148 154 +TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(148)1110 +299 y Fr(o\013set)26 b Fu(is)d(negativ)m(e,)k(it)c(is)g(in)m(terpreted) +h(as)f(relativ)m(e)i(to)f(one)f(greater)h(than)f(the)1110 +408 y(last)36 b(history)f(p)s(osition,)h(so)f(negativ)m(e)i(indices)e +(coun)m(t)h(bac)m(k)f(from)g(the)g(end)1110 518 y(of)h(the)g(history)-8 +b(,)37 b(and)e(an)h(index)f(of)h(`)p Ft(-1)p Fu(')f(refers)g(to)i(the)f +(curren)m(t)f Ft(history)1110 628 y(-d)30 b Fu(command.)630 +785 y Ft(-d)g Fj(start)p Ft(-)p Fj(end)1110 895 y Fu(Delete)23 +b(the)d(history)h(en)m(tries)g(b)s(et)m(w)m(een)g(p)s(ositions)g +Fr(start)i Fu(and)d Fr(end)p Fu(,)i(inclusiv)m(e.)1110 +1004 y(P)m(ositiv)m(e)41 b(and)c(negativ)m(e)k(v)-5 b(alues)38 +b(for)h Fr(start)h Fu(and)e Fr(end)j Fu(are)e(in)m(terpreted)g(as)1110 +1114 y(describ)s(ed)29 b(ab)s(o)m(v)m(e.)630 1271 y Ft(-a)384 +b Fu(App)s(end)28 b(the)i(new)f(history)g(lines)h(to)h(the)e(history)h +(\014le.)41 b(These)29 b(are)h(history)1110 1381 y(lines)36 +b(en)m(tered)g(since)f(the)h(b)s(eginning)f(of)g(the)h(curren)m(t)f +(Bash)h(session,)h(but)1110 1490 y(not)31 b(already)g(app)s(ended)d(to) +j(the)g(history)f(\014le.)630 1648 y Ft(-n)384 b Fu(App)s(end)32 +b(the)i(history)f(lines)h(not)g(already)g(read)g(from)f(the)h(history)f +(\014le)h(to)1110 1758 y(the)26 b(curren)m(t)f(history)g(list.)40 +b(These)25 b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le) +1110 1867 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f +(Bash)h(session.)630 2025 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g +(\014le)h(and)f(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f +(list.)630 2182 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m +(t)f(history)g(list)h(to)h(the)e(history)g(\014le.)630 +2339 y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f +(the)h Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110 +2449 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g +(in)g(the)g(history)g(list.)630 2606 y Ft(-s)384 b Fu(The)30 +b Fr(arg)8 b Fu(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f +(history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630 +2764 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p +Fu(,)g Ft(-a)p Fu(,)g(or)f Ft(-n)f Fu(options)i(is)f(used,)h(if)f +Fr(\014lename)32 b Fu(is)26 b(giv)m(en,)i(then)e(it)h(is)630 +2873 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28 +b(not,)i(then)e(the)g(v)-5 b(alue)29 b(of)g(the)g Ft(HISTFILE)d +Fu(v)-5 b(ariable)29 b(is)f(used.)150 3112 y Fs(9.3)68 +b(History)46 b(Expansion)150 3272 y Fu(The)f(History)h(library)e(pro)m +(vides)i(a)f(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g +(the)f(history)150 3381 y(expansion)g(pro)m(vided)f(b)m(y)h +Ft(csh)p Fu(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h +(used)e(to)i(manipulate)f(the)150 3491 y(history)30 b(information.)275 +3624 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h +(history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150 +3734 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) +m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150 +3844 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g +(quic)m(kly)-8 b(.)275 3977 y(History)24 b(expansion)f(is)h(p)s +(erformed)e(immediately)j(after)f(a)g(complete)h(line)f(is)g(read,)h(b) +s(efore)e(the)h(shell)150 4087 y(breaks)32 b(it)i(in)m(to)f(w)m(ords,)g +(and)f(is)h(p)s(erformed)e(on)h(eac)m(h)i(line)f(individually)-8 +b(.)48 b(Bash)33 b(attempts)g(to)h(inform)150 4196 y(the)d(history)f +(expansion)g(functions)g(ab)s(out)g(quoting)h(still)g(in)f(e\013ect)i +(from)e(previous)g(lines.)275 4330 y(History)37 b(expansion)f(tak)m(es) +i(place)g(in)e(t)m(w)m(o)i(parts.)59 b(The)36 b(\014rst)g(is)h(to)g +(determine)g(whic)m(h)f(line)h(from)150 4439 y(the)42 +b(history)f(list)h(should)e(b)s(e)h(used)f(during)g(substitution.)74 +b(The)40 b(second)i(is)f(to)h(select)h(p)s(ortions)e(of)150 +4549 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f +(one.)42 b(The)30 b(line)h(selected)h(from)e(the)h(history)f(is)h +(called)h(the)150 4659 y Fr(ev)m(en)m(t)p Fu(,)e(and)c(the)i(p)s +(ortions)e(of)i(that)f(line)h(that)g(are)f(acted)i(up)s(on)c(are)j +(called)g Fr(w)m(ords)p Fu(.)39 b(V)-8 b(arious)28 b +Fr(mo)s(di\014ers)150 4768 y Fu(are)33 b(a)m(v)-5 b(ailable)36 +b(to)d(manipulate)h(the)f(selected)h(w)m(ords.)48 b(The)32 +b(line)i(is)f(brok)m(en)f(in)m(to)i(w)m(ords)f(in)f(the)i(same)150 +4878 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g +(w)m(ords)e(surrounded)e(b)m(y)j(quotes)g(are)g(considered)g(one)g(w)m +(ord.)150 4987 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m +(y)h(the)g(app)s(earance)g(of)g(the)g(history)f(expansion)h(c)m +(haracter,)150 5097 y(whic)m(h)30 b(is)h(`)p Ft(!)p Fu(')f(b)m(y)g +(default.)275 5230 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m +(e)h(quoting)f(con)m(v)m(en)m(tions:)40 b(a)27 b(bac)m(kslash)g(can)f +(b)s(e)g(used)f(to)150 5340 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g +(handling)g(for)g(the)g(next)g(c)m(haracter;)k(single)d(quotes)g +(enclose)g(v)m(erbatim)g(sequences)p eop end +%%Page: 149 155 +TeXDict begin 149 154 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(149)150 +299 y(of)29 b(c)m(haracters,)i(and)e(can)g(b)s(e)g(used)f(to)i(inhibit) +f(history)g(expansion;)g(and)g(c)m(haracters)i(enclosed)e(within)150 +408 y(double)h(quotes)i(ma)m(y)f(b)s(e)f(sub)5 b(ject)31 +b(to)h(history)f(expansion,)g(since)g(bac)m(kslash)g(can)h(escap)s(e)f +(the)g(history)150 518 y(expansion)e(c)m(haracter,)j(but)d(single)h +(quotes)g(ma)m(y)h(not,)f(since)g(they)g(are)g(not)f(treated)i(sp)s +(ecially)f(within)150 628 y(double)g(quotes.)275 765 +y(When)41 b(using)g(the)h(shell,)i(only)e(`)p Ft(\\)p +Fu(')g(and)e(`)p Ft(')p Fu(')i(ma)m(y)g(b)s(e)f(used)g(to)h(escap)s(e)g +(the)g(history)f(expansion)150 875 y(c)m(haracter,)e(but)34 +b(the)i(history)g(expansion)f(c)m(haracter)i(is)f(also)g(treated)h(as)e +(quoted)h(if)g(it)g(immediately)150 984 y(precedes)30 +b(the)h(closing)g(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275 +1122 y(Sev)m(eral)48 b(shell)g(options)h(settable)g(with)e(the)h +Ft(shopt)f Fu(builtin)g(\(see)i(Section)f(4.3.2)i([The)e(Shopt)150 +1232 y(Builtin],)24 b(page)e(66\))h(ma)m(y)e(b)s(e)g(used)g(to)h +(tailor)g(the)g(b)s(eha)m(vior)f(of)h(history)f(expansion.)37 +b(If)21 b(the)h Ft(histverify)150 1341 y Fu(shell)35 +b(option)f(is)h(enabled,)g(and)f(Readline)h(is)f(b)s(eing)g(used,)h +(history)g(substitutions)e(are)i(not)g(immedi-)150 1451 +y(ately)i(passed)d(to)i(the)g(shell)f(parser.)55 b(Instead,)37 +b(the)e(expanded)g(line)g(is)h(reloaded)g(in)m(to)g(the)f(Readline)150 +1561 y(editing)29 b(bu\013er)f(for)h(further)e(mo)s(di\014cation.)41 +b(If)28 b(Readline)h(is)g(b)s(eing)f(used,)h(and)f(the)h +Ft(histreedit)d Fu(shell)150 1670 y(option)e(is)g(enabled,)h(a)g +(failed)f(history)g(expansion)g(will)g(b)s(e)f(reloaded)h(in)m(to)h +(the)f(Readline)g(editing)h(bu\013er)150 1780 y(for)31 +b(correction.)43 b(The)30 b Ft(-p)g Fu(option)h(to)h(the)f +Ft(history)e Fu(builtin)h(command)h(ma)m(y)g(b)s(e)f(used)g(to)i(see)f +(what)g(a)150 1889 y(history)25 b(expansion)g(will)g(do)g(b)s(efore)g +(using)f(it.)40 b(The)24 b Ft(-s)h Fu(option)g(to)h(the)f +Ft(history)e Fu(builtin)i(ma)m(y)g(b)s(e)g(used)150 1999 +y(to)36 b(add)f(commands)g(to)h(the)g(end)f(of)g(the)h(history)f(list)i +(without)e(actually)i(executing)g(them,)g(so)e(that)150 +2108 y(they)c(are)f(a)m(v)-5 b(ailable)33 b(for)d(subsequen)m(t)g +(recall.)42 b(This)29 b(is)i(most)g(useful)e(in)h(conjunction)h(with)f +(Readline.)275 2246 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g +(v)-5 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history)g +(expansion)g(mec)m(h-)150 2356 y(anism)h(with)g(the)g +Ft(histchars)d Fu(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e) +i(\(see)f(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 +2465 y(page)32 b(73\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g +(commen)m(t)i(c)m(haracter)f(to)g(mark)f(history)g(timestamps)h(when) +150 2575 y(writing)e(the)h(history)f(\014le.)150 2777 +y Fk(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 2924 +y Fu(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h(a)f +(command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48 +b(Unless)33 b(the)150 3034 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts) +f(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h +(history)f(list.)150 3198 y Ft(!)432 b Fu(Start)34 b(a)f(history)h +(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h +(tab,)f(the)g(end)f(of)630 3308 y(the)i(line,)g(`)p Ft(=)p +Fu(')g(or)f(`)p Ft(\()p Fu(')h(\(when)e(the)i Ft(extglob)d +Fu(shell)j(option)f(is)h(enabled)f(using)g(the)g Ft(shopt)630 +3417 y Fu(builtin\).)150 3580 y Ft(!)p Fj(n)384 b Fu(Refer)30 +b(to)i(command)e(line)g Fr(n)p Fu(.)150 3742 y Ft(!-)p +Fj(n)336 b Fu(Refer)30 b(to)i(the)e(command)g Fr(n)g +Fu(lines)h(bac)m(k.)150 3905 y Ft(!!)384 b Fu(Refer)30 +b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f +(for)g(`)p Ft(!-1)p Fu('.)150 4067 y Ft(!)p Fj(string)144 +b Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g +(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630 +4177 y(list)31 b(starting)g(with)f Fr(string)p Fu(.)150 +4340 y Ft(!?)p Fj(string)p Ft([?])630 4449 y Fu(Refer)25 +b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t) +g(p)s(osition)g(in)g(the)g(history)630 4559 y(list)32 +b(con)m(taining)i Fr(string)p Fu(.)45 b(The)31 b(trailing)i(`)p +Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fr(string)39 +b Fu(is)32 b(follo)m(w)m(ed)630 4668 y(immediately)f(b)m(y)e(a)h +(newline.)40 b(If)29 b Fr(string)38 b Fu(is)29 b(missing,)h(the)g +(string)f(from)g(the)h(most)g(recen)m(t)630 4778 y(searc)m(h)h(is)f +(used;)g(it)h(is)g(an)f(error)g(if)g(there)h(is)f(no)g(previous)g +(searc)m(h)h(string.)150 4941 y Ft(^)p Fj(string1)p Ft(^)p +Fj(string2)p Ft(^)630 5050 y Fu(Quic)m(k)h(Substitution.)44 +b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g +Fr(string1)40 b Fu(with)31 b Fr(string2)p Fu(.)630 5160 +y(Equiv)-5 b(alen)m(t)31 b(to)g Ft(!!:s^)p Fj(string1)p +Ft(^)p Fj(string2)p Ft(^)p Fu(.)150 5322 y Ft(!#)384 +b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)p +eop end +%%Page: 150 156 +TeXDict begin 150 155 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(150)150 +299 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150 +446 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h +(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27 +b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150 +555 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61 +b(It)37 b(ma)m(y)h(b)s(e)e(omitted)i(if)e(the)h(w)m(ord)g(designator)g +(b)s(egins)150 665 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p +Ft($)p Fu(',)g(`)p Ft(*)p Fu(',)h(`)p Ft(-)p Fu(',)f(or)g(`)p +Ft(\045)p Fu('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i +(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150 +775 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).)41 +b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f(line)g +(separated)h(b)m(y)150 884 y(single)h(spaces.)275 1019 +y(F)-8 b(or)31 b(example,)150 1179 y Ft(!!)384 b Fu(designates)37 +b(the)f(preceding)g(command.)57 b(When)35 b(y)m(ou)i(t)m(yp)s(e)f +(this,)h(the)f(preceding)g(com-)630 1289 y(mand)30 b(is)g(rep)s(eated)g +(in)g(toto.)150 1449 y Ft(!!:$)288 b Fu(designates)23 +b(the)g(last)g(argumen)m(t)g(of)f(the)h(preceding)f(command.)38 +b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 1558 y(to)31 +b Ft(!$)p Fu(.)150 1718 y Ft(!fi:2)240 b Fu(designates)30 +b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f(recen)m(t)i(command)e +(starting)h(with)f(the)630 1828 y(letters)j Ft(fi)p Fu(.)275 +1988 y(Here)e(are)h(the)g(w)m(ord)f(designators:)150 +2148 y Ft(0)g(\(zero\))114 b Fu(The)30 b Ft(0)p Fu(th)g(w)m(ord.)40 +b(F)-8 b(or)31 b(man)m(y)g(applications,)h(this)e(is)g(the)h(command)f +(w)m(ord.)150 2308 y Fj(n)432 b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150 +2467 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m +(ord)g(1.)150 2627 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150 +2787 y Ft(\045)432 b Fu(The)40 b(\014rst)h(w)m(ord)f(matc)m(hed)i(b)m +(y)f(the)g(most)g(recen)m(t)h(`)p Ft(?)p Fj(string)p +Ft(?)p Fu(')d(searc)m(h,)44 b(if)d(the)g(searc)m(h)630 +2897 y(string)30 b(b)s(egins)g(with)g(a)h(c)m(haracter)h(that)f(is)f +(part)h(of)f(a)h(w)m(ord.)150 3057 y Fj(x)p Ft(-)p Fj(y)336 +b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p Ft(-)p Fj(y)p +Fu(')g(abbreviates)h(`)p Ft(0-)p Fj(y)p Fu('.)150 3216 +y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h(the)e +Ft(0)p Fu(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p +Ft(1-$)p Fu('.)39 b(It)28 b(is)g(not)g(an)f(error)630 +3326 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m +(ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h +(returned)e(in)630 3436 y(that)j(case.)150 3595 y Fj(x)p +Ft(*)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')150 +3755 y Fj(x)p Ft(-)384 b Fu(Abbreviates)27 b(`)p Fj(x)p +Ft(-$)p Fu(')g(lik)m(e)h(`)p Fj(x)p Ft(*)p Fu(',)g(but)e(omits)i(the)f +(last)h(w)m(ord.)39 b(If)27 b(`)p Ft(x)p Fu(')g(is)g(missing,)g(it)h +(defaults)630 3865 y(to)j(0.)275 4025 y(If)i(a)h(w)m(ord)g(designator)g +(is)g(supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s(eci\014cation,)h +(the)e(previous)f(command)150 4135 y(is)d(used)g(as)h(the)f(ev)m(en)m +(t.)150 4334 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 4481 +y Fu(After)29 b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g +(add)f(a)h(sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing) +150 4591 y(mo)s(di\014ers,)33 b(eac)m(h)h(preceded)f(b)m(y)g(a)h(`)p +Ft(:)p Fu('.)50 b(These)33 b(mo)s(dify)-8 b(,)33 b(or)h(edit,)g(the)g +(w)m(ord)f(or)g(w)m(ords)g(selected)h(from)150 4700 y(the)d(history)f +(ev)m(en)m(t.)150 4860 y Ft(h)432 b Fu(Remo)m(v)m(e)32 +b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the) +h(head.)150 5020 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h +(pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 +5180 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g +(the)h(form)f(`)p Ft(.)p Fj(suffix)p Fu(',)f(lea)m(ving)j(the)f +(basename.)150 5340 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h +(trailing)g(su\016x.)p eop end +%%Page: 151 157 +TeXDict begin 151 156 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(151)150 +299 y Ft(p)432 b Fu(Prin)m(t)30 b(the)h(new)f(command)g(but)g(do)g(not) +g(execute)i(it.)150 458 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g +(w)m(ords,)g(escaping)h(further)e(substitutions.)150 +618 y Ft(x)432 b Fu(Quote)32 b(the)f(substituted)g(w)m(ords)f(as)i +(with)f(`)p Ft(q)p Fu(',)h(but)e(break)h(in)m(to)i(w)m(ords)d(at)i +(spaces,)h(tabs,)630 727 y(and)38 b(newlines.)66 b(The)39 +b(`)p Ft(q)p Fu(')g(and)f(`)p Ft(x)p Fu(')h(mo)s(di\014ers)f(are)h(m)m +(utually)g(exclusiv)m(e;)45 b(the)39 b(last)h(one)630 +837 y(supplied)29 b(is)i(used.)150 996 y Ft(s/)p Fj(old)p +Ft(/)p Fj(new)p Ft(/)630 1106 y Fu(Substitute)g Fr(new)39 +b Fu(for)32 b(the)g(\014rst)f(o)s(ccurrence)h(of)f Fr(old)36 +b Fu(in)31 b(the)h(ev)m(en)m(t)h(line.)46 b(An)m(y)31 +b(c)m(haracter)630 1215 y(ma)m(y)k(b)s(e)e(used)h(as)g(the)h(delimiter) +g(in)f(place)h(of)f(`)p Ft(/)p Fu('.)53 b(The)33 b(delimiter)i(ma)m(y)g +(b)s(e)f(quoted)g(in)630 1325 y Fr(old)40 b Fu(and)c +Fr(new)44 b Fu(with)36 b(a)h(single)g(bac)m(kslash.)60 +b(If)36 b(`)p Ft(&)p Fu(')h(app)s(ears)e(in)i Fr(new)p +Fu(,)g(it)h(is)e(replaced)h(b)m(y)630 1435 y Fr(old)p +Fu(.)k(A)31 b(single)g(bac)m(kslash)g(will)g(quote)g(the)g(`)p +Ft(&)p Fu('.)41 b(If)31 b Fr(old)j Fu(is)c(n)m(ull,)h(it)g(is)g(set)g +(to)g(the)g(last)g Fr(old)630 1544 y Fu(substituted,)j(or,)g(if)f(no)g +(previous)g(history)g(substitutions)g(to)s(ok)h(place,)h(the)e(last)h +Fr(string)630 1654 y Fu(in)j(a)g(!?)p Fr(string)8 b Ft([?])37 +b Fu(searc)m(h.)61 b(If)37 b Fr(new)45 b Fu(is)37 b(is)g(n)m(ull,)i +(eac)m(h)f(matc)m(hing)h Fr(old)h Fu(is)e(deleted.)61 +b(The)630 1763 y(\014nal)30 b(delimiter)h(is)g(optional)g(if)f(it)h(is) +g(the)f(last)i(c)m(haracter)f(on)g(the)f(input)g(line.)150 +1923 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 +2082 y Ft(g)150 2192 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f +(applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66 +b(Used)39 b(in)f(conjunction)630 2301 y(with)30 b(`)p +Ft(s)p Fu(',)h(as)f(in)h Ft(gs/)p Fj(old)p Ft(/)p Fj(new)p +Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 2461 y +Ft(G)432 b Fu(Apply)30 b(the)g(follo)m(wing)i(`)p Ft(s)p +Fu(')f(or)f(`)p Ft(&)p Fu(')h(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m +(ord)e(in)g(the)g(ev)m(en)m(t.)p eop end +%%Page: 152 158 +TeXDict begin 152 157 bop 3614 -116 a Fu(152)150 299 +y Fp(10)80 b(Installing)52 b(Bash)150 534 y Fu(This)31 +b(c)m(hapter)h(pro)m(vides)g(basic)g(instructions)f(for)g(installing)i +(Bash)f(on)f(the)h(v)-5 b(arious)31 b(supp)s(orted)f(plat-)150 +643 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j +Fm(gnu)f Fu(op)s(erating)h(systems,)f(nearly)h(ev)m(ery)g(v)m(ersion)f +(of)h(Unix,)150 753 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g +(as)g(BeOS)g(and)f(In)m(terix.)40 b(Other)28 b(indep)s(enden)m(t)e(p)s +(orts)h(exist)i(for)150 862 y Fm(ms-dos)p Fu(,)h Fm(os/2)p +Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1103 y Fs(10.1)68 +b(Basic)45 b(Installation)150 1263 y Fu(These)30 b(are)h(installation)h +(instructions)e(for)h(Bash.)275 1398 y(The)e(simplest)i(w)m(a)m(y)g(to) +g(compile)h(Bash)e(is:)199 1532 y(1.)61 b Ft(cd)38 b +Fu(to)h(the)f(directory)h(con)m(taining)h(the)f(source)f(co)s(de)h(and) +f(t)m(yp)s(e)g(`)p Ft(./configure)p Fu(')e(to)j(con\014gure)330 +1642 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f +Ft(csh)g Fu(on)g(an)h(old)g(v)m(ersion)g(of)g(System)f(V,)h(y)m(ou)g +(migh)m(t)330 1751 y(need)21 b(to)g(t)m(yp)s(e)g(`)p +Ft(sh)30 b(./configure)p Fu(')18 b(instead)j(to)g(prev)m(en)m(t)h +Ft(csh)e Fu(from)g(trying)h(to)g(execute)h Ft(configure)330 +1861 y Fu(itself.)330 1996 y(Running)30 b Ft(configure)f +Fu(tak)m(es)k(some)e(time.)45 b(While)32 b(running,)e(it)i(prin)m(ts)f +(messages)h(telling)h(whic)m(h)330 2105 y(features)e(it)g(is)f(c)m(hec) +m(king)i(for.)199 2240 y(2.)61 b(T)m(yp)s(e)30 b(`)p +Ft(make)p Fu(')g(to)h(compile)g(Bash)g(and)e(build)h(the)g +Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2374 +y(3.)61 b(Optionally)-8 b(,)32 b(t)m(yp)s(e)e(`)p Ft(make)g(tests)p +Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2509 +y(4.)61 b(T)m(yp)s(e)36 b(`)p Ft(make)29 b(install)p +Fu(')35 b(to)i(install)h Ft(bash)d Fu(and)h Ft(bashbug)p +Fu(.)57 b(This)35 b(will)i(also)h(install)f(the)g(man)m(ual)330 +2619 y(pages)31 b(and)f(Info)g(\014le.)275 2778 y(The)20 +b Ft(configure)f Fu(shell)i(script)g(attempts)h(to)g(guess)f(correct)i +(v)-5 b(alues)21 b(for)g(v)-5 b(arious)21 b(system-dep)s(enden)m(t)150 +2888 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42 +b(It)31 b(uses)e(those)i(v)-5 b(alues)30 b(to)h(create)h(a)e +Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 2998 y(tory)k(of)g(the)g +(pac)m(k)-5 b(age)38 b(\(the)e(top)g(directory)-8 b(,)38 +b(the)e Ft(builtins)p Fu(,)f Ft(doc)p Fu(,)i(and)e Ft(support)e +Fu(directories,)39 b(eac)m(h)150 3107 y(directory)29 +b(under)d Ft(lib)p Fu(,)j(and)e(sev)m(eral)j(others\).)40 +b(It)29 b(also)g(creates)h(a)e Ft(config.h)e Fu(\014le)j(con)m(taining) +g(system-)150 3217 y(dep)s(enden)m(t)e(de\014nitions.)40 +b(Finally)-8 b(,)31 b(it)d(creates)i(a)f(shell)g(script)f(named)g +Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3326 y(run)h(in)h(the)h +(future)f(to)h(recreate)h(the)f(curren)m(t)f(con\014guration,)i(a)f +(\014le)f Ft(config.cache)e Fu(that)j(sa)m(v)m(es)h(the)150 +3436 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g +(recon\014guring,)j(and)e(a)g(\014le)g Ft(config.log)e +Fu(con)m(taining)j(compiler)150 3545 y(output)30 b(\(useful)h(mainly)g +(for)f(debugging)h Ft(configure)p Fu(\).)40 b(If)30 b(at)h(some)h(p)s +(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3655 +y(results)i(y)m(ou)h(don't)f(w)m(an)m(t)h(to)h(k)m(eep,)f(y)m(ou)g(ma)m +(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3790 y(T)-8 b(o)37 +b(\014nd)f(out)i(more)f(ab)s(out)h(the)f(options)h(and)f(argumen)m(ts)g +(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3899 +y(stands,)30 b(t)m(yp)s(e)390 4034 y Ft(bash-4.2$)45 +b(./configure)g(--help)150 4169 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g +(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4303 +y(If)34 b(y)m(ou)h(w)m(an)m(t)g(to)g(build)f(Bash)g(in)h(a)g(directory) +g(separate)g(from)f(the)h(source)g(directory)g({)g(to)g(build)150 +4413 y(for)30 b(m)m(ultiple)i(arc)m(hitectures,)g(for)e(example)h({)g +(just)f(use)h(the)f(full)h(path)f(to)h(the)g(con\014gure)f(script.)41 +b(The)150 4523 y(follo)m(wing)24 b(commands)f(will)g(build)f(bash)g(in) +g(a)h(directory)h(under)d Ft(/usr/local/build)d Fu(from)23 +b(the)g(source)150 4632 y(co)s(de)31 b(in)f Ft(/usr/local/src/bash-4.4) +o Fu(:)390 4767 y Ft(mkdir)46 b(/usr/local/build/bash-4.4)390 +4877 y(cd)h(/usr/local/build/bash-4.4)390 4986 y(bash)g +(/usr/local/src/bash-4.4)o(/con)o(fig)o(ure)390 5096 +y(make)275 5230 y Fu(See)27 b(Section)h(10.3)g([Compiling)g(F)-8 +b(or)27 b(Multiple)h(Arc)m(hitectures],)i(page)d(153,)j(for)c(more)i +(information)150 5340 y(ab)s(out)i(building)g(in)g(a)g(directory)h +(separate)h(from)e(the)g(source.)p eop end +%%Page: 153 159 +TeXDict begin 153 158 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(153)275 299 y(If)53 b(y)m(ou)h(need)f(to) +i(do)e(un)m(usual)g(things)g(to)i(compile)g(Bash,)k(please)c(try)e(to)i +(\014gure)e(out)h(ho)m(w)150 408 y Ft(configure)47 b +Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h(to)h(do)e(them,)55 +b(and)49 b(mail)h(di\013s)f(or)h(instructions)f(to)150 +518 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30 b(they)h(can)g(b)s(e)e +(considered)i(for)f(the)g(next)h(release.)275 658 y(The)e(\014le)g +Ft(configure.ac)d Fu(is)k(used)e(to)j(create)g Ft(configure)c +Fu(b)m(y)i(a)h(program)f(called)i(Auto)s(conf.)40 b(Y)-8 +b(ou)150 768 y(only)34 b(need)g Ft(configure.ac)d Fu(if)i(y)m(ou)i(w)m +(an)m(t)g(to)f(c)m(hange)i(it)e(or)g(regenerate)i Ft(configure)31 +b Fu(using)j(a)g(new)m(er)150 878 y(v)m(ersion)25 b(of)f(Auto)s(conf.) +39 b(If)24 b(y)m(ou)h(do)f(this,)i(mak)m(e)f(sure)f(y)m(ou)h(are)f +(using)g(Auto)s(conf)h(v)m(ersion)f(2.50)i(or)f(new)m(er.)275 +1018 y(Y)-8 b(ou)29 b(can)f(remo)m(v)m(e)i(the)f(program)g(binaries)f +(and)g(ob)5 b(ject)29 b(\014les)g(from)f(the)h(source)f(co)s(de)h +(directory)g(b)m(y)150 1127 y(t)m(yping)j(`)p Ft(make)d(clean)p +Fu('.)42 b(T)-8 b(o)32 b(also)g(remo)m(v)m(e)g(the)g(\014les)f(that)g +Ft(configure)e Fu(created)j(\(so)g(y)m(ou)g(can)f(compile)150 +1237 y(Bash)g(for)f(a)g(di\013eren)m(t)h(kind)f(of)g(computer\),)h(t)m +(yp)s(e)g(`)p Ft(make)e(distclean)p Fu('.)150 1487 y +Fs(10.2)68 b(Compilers)46 b(and)f(Options)150 1646 y +Fu(Some)28 b(systems)h(require)f(un)m(usual)f(options)i(for)f +(compilation)i(or)f(linking)f(that)h(the)g Ft(configure)d +Fu(script)150 1756 y(do)s(es)32 b(not)g(kno)m(w)g(ab)s(out.)44 +b(Y)-8 b(ou)33 b(can)f(giv)m(e)h Ft(configure)d Fu(initial)j(v)-5 +b(alues)32 b(for)g(v)-5 b(ariables)32 b(b)m(y)g(setting)h(them)150 +1865 y(in)k(the)g(en)m(vironmen)m(t.)62 b(Using)38 b(a)f +(Bourne-compatible)i(shell,)g(y)m(ou)f(can)g(do)f(that)h(on)f(the)g +(command)150 1975 y(line)31 b(lik)m(e)g(this:)390 2115 +y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g(./configure)275 +2255 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f +Ft(env)e Fu(program,)h(y)m(ou)h(can)g(do)f(it)h(lik)m(e)h(this:)390 +2396 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42 +b(LDFLAGS=-s)j(./configure)275 2536 y Fu(The)29 b(con\014guration)i +(pro)s(cess)f(uses)g(GCC)g(to)h(build)e(Bash)i(if)f(it)h(is)g(a)m(v)-5 +b(ailable.)150 2786 y Fs(10.3)68 b(Compiling)46 b(F)-11 +b(or)45 b(Multiple)g(Arc)l(hitectures)150 2945 y Fu(Y)-8 +b(ou)27 b(can)g(compile)g(Bash)g(for)f(more)h(than)f(one)h(kind)f(of)g +(computer)h(at)g(the)g(same)g(time,)h(b)m(y)e(placing)i(the)150 +3055 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in) +f(their)g(o)m(wn)h(directory)-8 b(.)41 b(T)-8 b(o)31 +b(do)f(this,)g(y)m(ou)h(m)m(ust)f(use)g(a)g(v)m(ersion)150 +3164 y(of)36 b Ft(make)e Fu(that)i(supp)s(orts)e(the)i +Ft(VPATH)e Fu(v)-5 b(ariable,)38 b(suc)m(h)d(as)h(GNU)g +Ft(make)p Fu(.)55 b Ft(cd)35 b Fu(to)i(the)e(directory)h(where)150 +3274 y(y)m(ou)k(w)m(an)m(t)h(the)g(ob)5 b(ject)41 b(\014les)f(and)f +(executables)j(to)e(go)h(and)f(run)e(the)j Ft(configure)c +Fu(script)j(from)g(the)150 3383 y(source)32 b(directory)h(\(see)g +(Section)f(10.1)i([Basic)f(Installation],)i(page)e(152\).)47 +b(Y)-8 b(ou)32 b(ma)m(y)h(need)f(to)g(supply)150 3493 +y(the)43 b Ft(--srcdir=PATH)c Fu(argumen)m(t)k(to)h(tell)g +Ft(configure)c Fu(where)i(the)h(source)g(\014les)g(are.)78 +b Ft(configure)150 3603 y Fu(automatically)33 b(c)m(hec)m(ks)f(for)e +(the)h(source)f(co)s(de)h(in)f(the)h(directory)f(that)h +Ft(configure)d Fu(is)j(in)f(and)f(in)h(`..'.)275 3743 +y(If)20 b(y)m(ou)h(ha)m(v)m(e)i(to)e(use)g(a)g Ft(make)f +Fu(that)i(do)s(es)e(not)i(supp)s(orts)d(the)i Ft(VPATH)e +Fu(v)-5 b(ariable,)24 b(y)m(ou)e(can)f(compile)h(Bash)150 +3853 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h +(source)g(co)s(de)f(directory)-8 b(.)51 b(After)34 b(y)m(ou)g(ha)m(v)m +(e)h(installed)f(Bash)150 3962 y(for)c(one)h(arc)m(hitecture,)h(use)e +(`)p Ft(make)g(distclean)p Fu(')e(b)s(efore)i(recon\014guring)g(for)g +(another)g(arc)m(hitecture.)275 4102 y(Alternativ)m(ely)-8 +b(,)30 b(if)c(y)m(our)g(system)h(supp)s(orts)d(sym)m(b)s(olic)j(links,) +g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 4212 +y Fu(script)d(to)h(create)g(a)f(build)f(tree)i(whic)m(h)f(has)f(sym)m +(b)s(olic)i(links)e(bac)m(k)i(to)g(eac)m(h)g(\014le)f(in)g(the)g +(source)g(directory)-8 b(.)150 4322 y(Here's)41 b(an)f(example)i(that)f +(creates)h(a)e(build)g(directory)h(in)f(the)h(curren)m(t)f(directory)h +(from)f(a)h(source)150 4431 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p +Fu(:)390 4572 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o +(mkcl)o(one)41 b(-s)47 b(/usr/gnu/src/bash-2.0)42 b(.)150 +4712 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m +(ou)f(m)m(ust)h(ha)m(v)m(e)g(already)g(built)f(Bash)g(for)g(at)h(least) +h(one)150 4821 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f +(create)i(build)e(directories)h(for)f(other)h(arc)m(hitectures.)150 +5071 y Fs(10.4)68 b(Installation)47 b(Names)150 5230 +y Fu(By)37 b(default,)i(`)p Ft(make)29 b(install)p Fu(')35 +b(will)j(install)f(in)m(to)h Ft(/usr/local/bin)p Fu(,)d +Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 5340 +y(can)35 b(sp)s(ecify)f(an)h(installation)i(pre\014x)c(other)j(than)e +Ft(/usr/local)e Fu(b)m(y)j(giving)g Ft(configure)e Fu(the)h(option)p +eop end +%%Page: 154 160 +TeXDict begin 154 159 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(154)150 299 y Ft(--prefix=)p +Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h(a)f(v)-5 +b(alue)42 b(for)f(the)h Ft(DESTDIR)d Fu(`)p Ft(make)p +Fu(')i(v)-5 b(ariable)42 b(when)f(running)150 408 y(`)p +Ft(make)29 b(install)p Fu('.)275 566 y(Y)-8 b(ou)71 b(can)h(sp)s(ecify) +f(separate)h(installation)h(pre\014xes)d(for)h(arc)m(hitecture-sp)s +(eci\014c)i(\014les)f(and)150 676 y(arc)m(hitecture-indep)s(enden)m(t) +44 b(\014les.)80 b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c +Fu(the)j(option)g Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 +785 y(`)p Ft(make)29 b(install)p Fu(')63 b(will)h(use)f +Fr(P)-8 b(A)g(TH)75 b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h +(programs)e(and)h(libraries.)150 895 y(Do)s(cumen)m(tation)32 +b(and)e(other)h(data)g(\014les)f(will)h(still)g(use)f(the)h(regular)f +(pre\014x.)150 1171 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T) +l(yp)t(e)150 1330 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f +Ft(configure)e Fu(can)i(not)g(\014gure)g(out)g(automatically)-8 +b(,)52 b(but)44 b(need)h(to)150 1440 y(determine)26 b(b)m(y)g(the)g(t)m +(yp)s(e)g(of)g(host)g(Bash)g(will)g(run)f(on.)39 b(Usually)26 +b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)150 +1549 y(if)g(it)g(prin)m(ts)f(a)h(message)g(sa)m(ying)h(it)f(can)g(not)f +(guess)h(the)g(host)f(t)m(yp)s(e,)i(giv)m(e)g(it)f(the)g +Ft(--host=TYPE)c Fu(option.)150 1659 y(`)p Ft(TYPE)p +Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h(for)f(the)h(system) +g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p Ft(sun4)p Fu(',)g(or)f(a)h +(canonical)i(name)150 1768 y(with)e(three)h(\014elds:)40 +b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32 b(`)p +Ft(i386-unknown-freebsd4.2)p Fu('\).)275 1926 y(See)e(the)h(\014le)f +Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5 +b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 2202 y Fs(10.6)68 +b(Sharing)45 b(Defaults)150 2361 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f +(set)h(default)f(v)-5 b(alues)43 b(for)g Ft(configure)d +Fu(scripts)j(to)h(share,)i(y)m(ou)d(can)g(create)i(a)e(site)150 +2471 y(shell)48 b(script)f(called)i Ft(config.site)44 +b Fu(that)k(giv)m(es)h(default)f(v)-5 b(alues)48 b(for)f(v)-5 +b(ariables)48 b(lik)m(e)h Ft(CC)p Fu(,)j Ft(cache_)150 +2580 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43 +b Fu(lo)s(oks)j(for)f Ft(PREFIX/share/config.site)39 +b Fu(if)46 b(it)g(exists,)k(then)150 2690 y Ft(PREFIX/etc/config.site) +24 b Fu(if)31 b(it)g(exists.)42 b(Or,)30 b(y)m(ou)h(can)g(set)g(the)g +Ft(CONFIG_SITE)c Fu(en)m(vironmen)m(t)k(v)-5 b(ari-)150 +2800 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67 +b(A)40 b(w)m(arning:)58 b(the)40 b(Bash)g Ft(configure)c +Fu(lo)s(oks)k(for)f(a)h(site)150 2909 y(script,)31 b(but)e(not)i(all)g +Ft(configure)d Fu(scripts)i(do.)150 3185 y Fs(10.7)68 +b(Op)t(eration)46 b(Con)l(trols)150 3344 y Ft(configure)28 +b Fu(recognizes)k(the)e(follo)m(wing)i(options)f(to)g(con)m(trol)h(ho)m +(w)e(it)h(op)s(erates.)150 3538 y Ft(--cache-file=)p +Fj(file)630 3648 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g +(the)h(tests)f(in)g Fr(\014le)33 b Fu(instead)28 b(of)h +Ft(./config.cache)p Fu(.)36 b(Set)28 b Fr(\014le)630 +3758 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e +(debugging)g Ft(configure)p Fu(.)150 3940 y Ft(--help)192 +b Fu(Prin)m(t)30 b(a)h(summary)e(of)i(the)f(options)h(to)g +Ft(configure)p Fu(,)d(and)i(exit.)150 4123 y Ft(--quiet)150 +4232 y(--silent)150 4342 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f +(messages)h(sa)m(ying)g(whic)m(h)g(c)m(hec)m(ks)g(are)g(b)s(eing)f +(made.)150 4525 y Ft(--srcdir=)p Fj(dir)630 4634 y Fu(Lo)s(ok)i(for)g +(the)g(Bash)g(source)h(co)s(de)f(in)g(directory)g Fr(dir)p +Fu(.)45 b(Usually)33 b Ft(configure)c Fu(can)j(deter-)630 +4744 y(mine)e(that)h(directory)g(automatically)-8 b(.)150 +4927 y Ft(--version)630 5036 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g +(Auto)s(conf)f(used)g(to)h(generate)h(the)f Ft(configure)d +Fu(script,)j(and)f(exit.)275 5230 y Ft(configure)34 b +Fu(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s +(oilerplate)g(options.)61 b(`)p Ft(configure)150 5340 +y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)p +eop end +%%Page: 155 161 +TeXDict begin 155 160 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(155)150 299 y Fs(10.8)68 +b(Optional)46 b(F)-11 b(eatures)150 458 y Fu(The)29 b(Bash)h +Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f(of)h Ft(--enable-)p +Fj(feature)25 b Fu(options,)30 b(where)g Fr(feature)35 +b Fu(indicates)150 568 y(an)e(optional)i(part)e(of)h(Bash.)50 +b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p Fj(package)29 +b Fu(options,)35 b(where)e Fr(pac)m(k)-5 b(age)150 677 +y Fu(is)32 b(something)h(lik)m(e)h(`)p Ft(bash-malloc)p +Fu(')c(or)i(`)p Ft(purify)p Fu('.)45 b(T)-8 b(o)33 b(turn)e(o\013)i +(the)f(default)h(use)f(of)g(a)h(pac)m(k)-5 b(age,)35 +b(use)150 787 y Ft(--without-)p Fj(package)p Fu(.)46 +b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f(that)g(is) +g(enabled)g(b)m(y)f(default,)i(use)150 897 y Ft(--disable-)p +Fj(feature)p Fu(.)275 1033 y(Here)28 b(is)g(a)h(complete)g(list)g(of)f +(the)h Ft(--enable-)c Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f +(Bash)g Ft(configure)150 1143 y Fu(recognizes.)150 1306 +y Ft(--with-afs)630 1415 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g +(the)h(Andrew)e(File)j(System)e(from)g(T)-8 b(ransarc.)150 +1577 y Ft(--with-bash-malloc)630 1686 y Fu(Use)34 b(the)g(Bash)h(v)m +(ersion)f(of)g Ft(malloc)e Fu(in)i(the)g(directory)h +Ft(lib/malloc)p Fu(.)48 b(This)34 b(is)g(not)g(the)630 +1796 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e(in)g +Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i(originally)g +(deriv)m(ed)630 1905 y(from)f(the)h(4.2)g Fm(bsd)f Ft(malloc)p +Fu(.)45 b(This)31 b Ft(malloc)g Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m +(astes)h(some)g(space)g(on)630 2015 y(eac)m(h)j(allo)s(cation.)58 +b(This)34 b(option)i(is)f(enabled)g(b)m(y)g(default.)56 +b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a)630 +2125 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)s(e) +i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630 +2234 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i +(systems.)150 2396 y Ft(--with-curses)630 2505 y Fu(Use)h(the)h(curses) +e(library)h(instead)g(of)h(the)f(termcap)g(library)-8 +b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 2615 +y(if)f(y)m(our)h(system)f(has)g(an)h(inadequate)g(or)f(incomplete)i +(termcap)e(database.)150 2777 y Ft(--with-gnu-malloc)630 +2886 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p +Fu(.)150 3048 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p +Ft(])630 3157 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with) +g(a)h(lo)s(cally-installed)i(v)m(ersion)e(of)g(Readline)g(rather)630 +3267 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p +Fu(.)36 b(This)25 b(w)m(orks)g(only)h(with)f(Readline)h(5.0)h(and)e +(later)630 3376 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41 +b Fu(is)32 b Ft(yes)f Fu(or)i(not)f(supplied,)f Ft(configure)f +Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 3486 y(mak)m(e)28 +b(v)-5 b(ariables)29 b Ft(includedir)24 b Fu(and)j Ft(libdir)p +Fu(,)g(whic)m(h)g(are)h(sub)s(directories)f(of)g Ft(prefix)f +Fu(b)m(y)630 3596 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m +(ersion)h(of)f(Readline)g(if)g(it)g(is)g(not)g(in)g(the)g(standard)630 +3705 y(system)35 b(include)f(and)g(library)g(directories.)54 +b(If)34 b Fr(PREFIX)43 b Fu(is)35 b Ft(no)p Fu(,)g(Bash)f(links)h(with) +f(the)630 3815 y(v)m(ersion)42 b(in)e Ft(lib/readline)p +Fu(.)70 b(If)40 b Fr(PREFIX)51 b Fu(is)41 b(set)g(to)h(an)m(y)g(other)f +(v)-5 b(alue,)44 b Ft(configure)630 3924 y Fu(treats)27 +b(it)g(as)f(a)h(directory)g(pathname)f(and)f(lo)s(oks)i(for)f(the)g +(installed)h(v)m(ersion)g(of)f(Readline)630 4034 y(in)34 +b(sub)s(directories)f(of)h(that)h(directory)g(\(include)f(\014les)g(in) +g Fr(PREFIX)9 b Fu(/)p Ft(include)32 b Fu(and)i(the)630 +4144 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150 +4305 y Ft(--with-purify)630 4415 y Fu(De\014ne)23 b(this)g(to)h(use)f +(the)g(Purify)f(memory)h(allo)s(cation)i(c)m(hec)m(k)m(er)g(from)e +(Rational)i(Soft)m(w)m(are.)150 4576 y Ft(--enable-minimal-config)630 +4686 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h +(close)g(to)f(the)g(historical)h(Bourne)e(shell.)275 +4849 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h +(alter)g(ho)m(w)f(Bash)g(is)g(compiled)h(and)e(link)m(ed,)i(rather)150 +4958 y(than)h(c)m(hanging)h(run-time)f(features.)150 +5121 y Ft(--enable-largefile)630 5230 y Fu(Enable)36 +b(supp)s(ort)f(for)g(large)j(\014les)e(\()p Ft(http:)5 +b(/)g(/)g(www)g(.)g(unix)g(.)g(org)t(/)g(v)o(ersi)o(on2)t(/)g(w)o(hats) +o(new)t(/)630 5340 y(lfs20mar)h(.)g(html)p Fu(\))35 b(if)j(the)g(op)s +(erating)g(system)g(requires)f(sp)s(ecial)i(compiler)f(options)g(to)p +eop end +%%Page: 156 162 +TeXDict begin 156 161 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(156)630 299 y(build)33 +b(programs)g(whic)m(h)h(can)g(access)h(large)g(\014les.)51 +b(This)33 b(is)h(enabled)g(b)m(y)g(default,)h(if)f(the)630 +408 y(op)s(erating)d(system)f(pro)m(vides)h(large)g(\014le)g(supp)s +(ort.)150 570 y Ft(--enable-profiling)630 680 y Fu(This)g(builds)f(a)i +(Bash)g(binary)f(that)h(pro)s(duces)e(pro\014ling)h(information)h(to)h +(b)s(e)d(pro)s(cessed)630 790 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f +(it)g(is)f(executed.)150 951 y Ft(--enable-static-link)630 +1061 y Fu(This)37 b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h +(statically)-8 b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61 +b(This)37 b(could)h(b)s(e)630 1171 y(used)30 b(to)h(build)e(a)i(v)m +(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 1334 +y(The)f(`)p Ft(minimal-config)p Fu(')d(option)k(can)g(b)s(e)f(used)f +(to)j(disable)e(all)i(of)f(the)f(follo)m(wing)i(options,)g(but)d(it)150 +1443 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m +(y)h(b)s(e)f(enabled)g(using)g(`)p Ft(enable-)p Fj(feature)p +Fu('.)275 1580 y(All)c(of)f(the)h(follo)m(wing)h(options)f(except)g +(for)g(`)p Ft(disabled-builtins)p Fu(',)c(`)p Ft(direxpand-default)p +Fu(',)h(and)150 1690 y(`)p Ft(xpg-echo-default)p Fu(')28 +b(are)33 b(enabled)f(b)m(y)g(default,)h(unless)e(the)i(op)s(erating)f +(system)h(do)s(es)e(not)i(pro)m(vide)150 1800 y(the)e(necessary)f(supp) +s(ort.)150 1963 y Ft(--enable-alias)630 2072 y Fu(Allo)m(w)41 +b(alias)g(expansion)f(and)f(include)g(the)h Ft(alias)f +Fu(and)g Ft(unalias)e Fu(builtins)j(\(see)g(Sec-)630 +2182 y(tion)31 b(6.6)g([Aliases],)i(page)e(94\).)150 +2344 y Ft(--enable-arith-for-comma)o(nd)630 2453 y Fu(Include)21 +b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g +Ft(for)f Fu(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630 +2563 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f +(3.2.5.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)150 +2725 y Ft(--enable-array-variables)630 2834 y Fu(Include)h(supp)s(ort)g +(for)h(one-dimensional)h(arra)m(y)f(shell)h(v)-5 b(ariables)33 +b(\(see)h(Section)g(6.7)h([Ar-)630 2944 y(ra)m(ys],)c(page)g(95\).)150 +3106 y Ft(--enable-bang-history)630 3215 y Fu(Include)36 +b(supp)s(ort)f(for)h Ft(csh)p Fu(-lik)m(e)h(history)g(substitution)f +(\(see)h(Section)g(9.3)h([History)f(In-)630 3325 y(teraction],)c(page)e +(148\).)150 3487 y Ft(--enable-brace-expansion)630 3597 +y Fu(Include)40 b Ft(csh)p Fu(-lik)m(e)h(brace)f(expansion)g(\()h +Ft(b{a,b}c)d Fq(7!)i Ft(bac)30 b(bbc)39 b Fu(\).)71 b(See)40 +b(Section)h(3.5.1)630 3706 y([Brace)32 b(Expansion],)e(page)h(23,)h +(for)e(a)g(complete)i(description.)150 3868 y Ft +(--enable-casemod-attribu)o(tes)630 3978 y Fu(Include)37 +b(supp)s(ort)g(for)g(case-mo)s(difying)i(attributes)g(in)e(the)h +Ft(declare)e Fu(builtin)i(and)f(as-)630 4087 y(signmen)m(t)29 +b(statemen)m(ts.)41 b(V)-8 b(ariables)30 b(with)e(the)g +Fr(upp)s(ercase)k Fu(attribute,)e(for)e(example,)i(will)630 +4197 y(ha)m(v)m(e)i(their)e(v)-5 b(alues)31 b(con)m(v)m(erted)h(to)f +(upp)s(ercase)e(up)s(on)g(assignmen)m(t.)150 4359 y Ft +(--enable-casemod-expansi)o(on)630 4468 y Fu(Include)h(supp)s(ort)e +(for)i(case-mo)s(difying)i(w)m(ord)e(expansions.)150 +4630 y Ft(--enable-command-timing)630 4740 y Fu(Include)43 +b(supp)s(ort)f(for)h(recognizing)i Ft(time)e Fu(as)g(a)h(reserv)m(ed)g +(w)m(ord)f(and)g(for)h(displa)m(ying)630 4849 y(timing)37 +b(statistics)h(for)e(the)g(pip)s(eline)g(follo)m(wing)i +Ft(time)d Fu(\(see)i(Section)g(3.2.3)h([Pip)s(elines],)630 +4959 y(page)24 b(8\).)39 b(This)23 b(allo)m(ws)h(pip)s(elines)f(as)h(w) +m(ell)g(as)g(shell)f(builtins)g(and)g(functions)g(to)h(b)s(e)e(timed.) +150 5121 y Ft(--enable-cond-command)630 5230 y Fu(Include)33 +b(supp)s(ort)f(for)i(the)g Ft([[)f Fu(conditional)i(command.)51 +b(\(see)34 b(Section)h(3.2.5.2)h([Condi-)630 5340 y(tional)c +(Constructs],)e(page)h(11\).)p eop end +%%Page: 157 163 +TeXDict begin 157 162 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(157)150 299 y Ft(--enable-cond-regexp)630 +408 y Fu(Include)35 b(supp)s(ort)f(for)i(matc)m(hing)h +Fm(posix)e Fu(regular)h(expressions)g(using)f(the)h(`)p +Ft(=~)p Fu(')g(binary)630 518 y(op)s(erator)25 b(in)f(the)h +Ft([[)f Fu(conditional)h(command.)39 b(\(see)25 b(Section)h(3.2.5.2)h +([Conditional)e(Con-)630 628 y(structs],)31 b(page)g(11\).)150 +774 y Ft(--enable-coprocesses)630 883 y Fu(Include)23 +b(supp)s(ort)f(for)i(copro)s(cesses)g(and)f(the)h Ft(coproc)e +Fu(reserv)m(ed)i(w)m(ord)g(\(see)h(Section)f(3.2.3)630 +993 y([Pip)s(elines],)31 b(page)g(8\).)150 1139 y Ft(--enable-debugger) +630 1249 y Fu(Include)f(supp)s(ort)e(for)i(the)h(bash)f(debugger)g +(\(distributed)g(separately\).)150 1395 y Ft(--enable-dev-fd-stat-bro)o +(ken)630 1504 y Fu(If)c(calling)j Ft(stat)d Fu(on)g(/dev/fd/)p +Fr(N)38 b Fu(returns)25 b(di\013eren)m(t)j(results)f(than)f(calling)j +Ft(fstat)c Fu(on)i(\014le)630 1614 y(descriptor)g Fr(N)p +Fu(,)i(supply)c(this)j(option)g(to)g(enable)f(a)h(w)m(ork)-5 +b(around.)39 b(This)27 b(has)g(implications)630 1724 +y(for)j(conditional)i(commands)e(that)h(test)g(\014le)g(attributes.)150 +1870 y Ft(--enable-direxpand-defau)o(lt)630 1979 y Fu(Cause)53 +b(the)g Ft(direxpand)d Fu(shell)j(option)h(\(see)g(Section)f(4.3.2)i +([The)e(Shopt)f(Builtin],)630 2089 y(page)29 b(66\))g(to)f(b)s(e)f +(enabled)h(b)m(y)g(default)g(when)e(the)i(shell)g(starts.)41 +b(It)27 b(is)h(normally)g(disabled)630 2198 y(b)m(y)i(default.)150 +2345 y Ft(--enable-directory-stack)630 2454 y Fu(Include)j(supp)s(ort)g +(for)h(a)g Ft(csh)p Fu(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i +Ft(pushd)p Fu(,)f Ft(popd)p Fu(,)g(and)f Ft(dirs)630 +2564 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m +(k],)g(page)f(97\).)150 2710 y Ft(--enable-disabled-builti)o(ns)630 +2819 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m +(ed)i(via)f(`)p Ft(builtin)29 b(xxx)p Fu(')37 b(ev)m(en)j(after)f +Ft(xxx)e Fu(has)630 2929 y(b)s(een)31 b(disabled)g(using)g(`)p +Ft(enable)d(-n)i(xxx)p Fu('.)43 b(See)32 b(Section)g(4.2)h([Bash)e +(Builtins],)i(page)f(51,)630 3039 y(for)e(details)i(of)e(the)h +Ft(builtin)d Fu(and)i Ft(enable)e Fu(builtin)i(commands.)150 +3185 y Ft(--enable-dparen-arithmet)o(ic)630 3294 y Fu(Include)42 +b(supp)s(ort)f(for)h(the)h Ft(\(\(...)o(\)\))f Fu(command)g(\(see)i +(Section)f(3.2.5.2)i([Conditional)630 3404 y(Constructs],)30 +b(page)h(11\).)150 3550 y Ft(--enable-extended-glob)630 +3660 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h +(matc)m(hing)g(features)g(describ)s(ed)e(ab)s(o)m(v)m(e)630 +3769 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i +(page)e(33.)150 3915 y Ft(--enable-extended-glob-d)o(efau)o(lt)630 +4025 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g +Fr(extglob)j Fu(shell)d(option)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(under) +d(Sec-)630 4134 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g +(66,)h(to)f(b)s(e)f(enabled.)150 4281 y Ft(--enable-function-import)630 +4390 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g +(de\014nitions)f(exp)s(orted)h(b)m(y)g(another)g(instance)630 +4500 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41 +b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)150 +4646 y Ft(--enable-glob-asciirange)o(-def)o(ault)630 +4756 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g +Fr(globasciiranges)36 b Fu(shell)31 b(option)g(describ)s(ed)f(ab)s(o)m +(v)m(e)h(under)630 4865 y(Section)39 b(4.3.2)h([The)e(Shopt)g +(Builtin],)j(page)e(66,)i(to)f(b)s(e)d(enabled.)65 b(This)37 +b(con)m(trols)j(the)630 4975 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h +(ranges)f(when)f(used)g(in)g(pattern)h(matc)m(hing)h(brac)m(k)m(et)g +(expressions.)150 5121 y Ft(--enable-help-builtin)630 +5230 y Fu(Include)i(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m +(ys)f(help)h(on)f(shell)h(builtins)f(and)h(v)-5 b(ariables)25 +b(\(see)630 5340 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f +(51\).)p eop end +%%Page: 158 164 +TeXDict begin 158 163 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(158)150 299 y Ft(--enable-history)630 +408 y Fu(Include)29 b(command)g(history)h(and)f(the)h +Ft(fc)f Fu(and)g Ft(history)e Fu(builtin)j(commands)f(\(see)h(Sec-)630 +518 y(tion)h(9.1)g([Bash)g(History)g(F)-8 b(acilities],)34 +b(page)d(146\).)150 664 y Ft(--enable-job-control)630 +774 y Fu(This)h(enables)i(the)f(job)g(con)m(trol)i(features)e(\(see)i +(Chapter)d(7)i([Job)f(Con)m(trol],)i(page)f(107\),)630 +883 y(if)c(the)h(op)s(erating)g(system)f(supp)s(orts)f(them.)150 +1029 y Ft(--enable-multibyte)630 1139 y Fu(This)g(enables)i(supp)s(ort) +d(for)i(m)m(ultib)m(yte)h(c)m(haracters)g(if)f(the)g(op)s(erating)h +(system)f(pro)m(vides)630 1249 y(the)h(necessary)f(supp)s(ort.)150 +1395 y Ft(--enable-net-redirection)o(s)630 1504 y Fu(This)23 +b(enables)h(the)g(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g +(form)g Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 1614 +y Fu(and)31 b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26 +b Fu(when)31 b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h +([Redirec-)630 1724 y(tions],)e(page)g(35\).)150 1870 +y Ft(--enable-process-substit)o(utio)o(n)630 1979 y Fu(This)49 +b(enables)i(pro)s(cess)f(substitution)g(\(see)h(Section)g(3.5.6)h([Pro) +s(cess)e(Substitution],)630 2089 y(page)31 b(32\))h(if)e(the)h(op)s +(erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150 +2235 y Ft(--enable-progcomp)630 2345 y Fu(Enable)d(the)g(programmable)g +(completion)i(facilities)g(\(see)f(Section)g(8.6)g([Programmable)630 +2454 y(Completion],)i(page)h(137\).)42 b(If)30 b(Readline)h(is)f(not)h +(enabled,)f(this)h(option)g(has)f(no)g(e\013ect.)150 +2600 y Ft(--enable-prompt-string-d)o(ecod)o(ing)630 2710 +y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f(a)g(n)m(um)m +(b)s(er)e(of)i(bac)m(kslash-escap)s(ed)g(c)m(haracters)i(in)d(the)630 +2819 y Ft($PS0)p Fu(,)36 b Ft($PS1)p Fu(,)g Ft($PS2)p +Fu(,)h(and)e Ft($PS4)f Fu(prompt)h(strings.)57 b(See)36 +b(Section)h(6.9)g([Con)m(trolling)g(the)630 2929 y(Prompt],)30 +b(page)h(98,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g +(escap)s(e)h(sequences.)150 3075 y Ft(--enable-readline)630 +3185 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f +(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 3294 +y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)g([Command)g(Line)g +(Editing],)h(page)g(111\).)150 3440 y Ft(--enable-restricted)630 +3550 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p +Fu(.)75 b(If)42 b(this)f(is)h(enabled,)j(Bash,)g(when)c(called)630 +3660 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68 +b(See)40 b(Section)h(6.10)g([The)f(Restricted)h(Shell],)630 +3769 y(page)31 b(100,)h(for)e(a)h(description)f(of)h(restricted)g(mo)s +(de.)150 3915 y Ft(--enable-select)630 4025 y Fu(Include)25 +b(the)h Ft(select)f Fu(comp)s(ound)f(command,)j(whic)m(h)e(allo)m(ws)j +(the)e(generation)h(of)f(simple)630 4134 y(men)m(us)k(\(see)h(Section)g +(3.2.5.2)i([Conditional)e(Constructs],)g(page)g(11\).)150 +4281 y Ft(--enable-separate-helpfi)o(les)630 4390 y Fu(Use)h(external)h +(\014les)f(for)g(the)g(do)s(cumen)m(tation)h(displa)m(y)m(ed)f(b)m(y)g +(the)g Ft(help)f Fu(builtin)h(instead)630 4500 y(of)f(storing)f(the)h +(text)g(in)m(ternally)-8 b(.)150 4646 y Ft(--enable-single-help-str)o +(ings)630 4756 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e +(the)i Ft(help)d Fu(builtin)i(as)g(a)g(single)h(string)f(for)f(eac)m(h) +i(help)630 4865 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g +(text)g(to)g(di\013eren)m(t)g(languages.)54 b(Y)-8 b(ou)35 +b(ma)m(y)g(need)630 4975 y(to)c(disable)g(this)f(if)g(y)m(our)h +(compiler)g(cannot)f(handle)g(v)m(ery)h(long)g(string)f(literals.)150 +5121 y Ft(--enable-strict-posix-de)o(faul)o(t)630 5230 +y Fu(Mak)m(e)c(Bash)f Fm(posix)p Fu(-conforman)m(t)g(b)m(y)f(default)h +(\(see)g(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630 +5340 y(page)31 b(101\).)p eop end +%%Page: 159 165 +TeXDict begin 159 164 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(159)150 299 y Ft +(--enable-usg-echo-defaul)o(t)630 408 y Fu(A)30 b(synon)m(ym)g(for)g +Ft(--enable-xpg-echo-default)p Fu(.)150 568 y Ft +(--enable-xpg-echo-defaul)o(t)630 677 y Fu(Mak)m(e)c(the)f +Ft(echo)e Fu(builtin)i(expand)f(bac)m(kslash-escap)s(ed)h(c)m +(haracters)h(b)m(y)f(default,)h(without)630 787 y(requiring)d(the)h +Ft(-e)f Fu(option.)39 b(This)23 b(sets)h(the)g(default)g(v)-5 +b(alue)24 b(of)g(the)g Ft(xpg_echo)e Fu(shell)h(option)630 +897 y(to)28 b Ft(on)p Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f +Ft(echo)f Fu(b)s(eha)m(v)m(e)i(more)g(lik)m(e)h(the)e(v)m(ersion)h(sp)s +(eci\014ed)f(in)g(the)630 1006 y(Single)35 b(Unix)f(Sp)s +(eci\014cation,)i(v)m(ersion)e(3.)53 b(See)35 b(Section)g(4.2)g([Bash)g +(Builtins],)h(page)f(51,)630 1116 y(for)30 b(a)h(description)f(of)h +(the)f(escap)s(e)h(sequences)g(that)g Ft(echo)e Fu(recognizes.)275 +1275 y(The)f(\014le)i Ft(config-top.h)c Fu(con)m(tains)31 +b(C)d(Prepro)s(cessor)h(`)p Ft(#define)p Fu(')f(statemen)m(ts)j(for)f +(options)f(whic)m(h)150 1385 y(are)35 b(not)g(settable)i(from)d +Ft(configure)p Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g +(to)h(b)s(e)e(c)m(hanged;)k(b)s(ew)m(are)d(of)150 1494 +y(the)h(consequences)g(if)f(y)m(ou)h(do.)55 b(Read)36 +b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e(eac)m(h)i(de\014nition)e +(for)g(more)150 1604 y(information)c(ab)s(out)f(its)h(e\013ect.)p +eop end +%%Page: 160 166 +TeXDict begin 160 165 bop 3614 -116 a Fu(160)150 299 +y Fp(App)t(endix)52 b(A)81 b(Rep)t(orting)53 b(Bugs)150 +533 y Fu(Please)33 b(rep)s(ort)e(all)h(bugs)f(y)m(ou)h(\014nd)e(in)i +(Bash.)44 b(But)32 b(\014rst,)g(y)m(ou)g(should)e(mak)m(e)j(sure)e +(that)h(it)g(really)h(is)f(a)150 643 y(bug,)d(and)g(that)h(it)g(app)s +(ears)f(in)g(the)h(latest)h(v)m(ersion)f(of)g(Bash.)40 +b(The)29 b(latest)j(v)m(ersion)e(of)f(Bash)h(is)f(alw)m(a)m(ys)150 +752 y(a)m(v)-5 b(ailable)33 b(for)d(FTP)g(from)g Ft +(ftp://ftp.gnu.org/pub/gn)o(u/ba)o(sh/)o Fu(.)275 887 +y(Once)41 b(y)m(ou)g(ha)m(v)m(e)h(determined)f(that)h(a)f(bug)g +(actually)h(exists,)j(use)c(the)g Ft(bashbug)e Fu(command)i(to)150 +996 y(submit)25 b(a)h(bug)g(rep)s(ort.)38 b(If)26 b(y)m(ou)g(ha)m(v)m +(e)h(a)f(\014x,)h(y)m(ou)f(are)g(encouraged)h(to)f(mail)h(that)f(as)g +(w)m(ell!)40 b(Suggestions)150 1106 y(and)j(`philosophical')i(bug)e +(rep)s(orts)f(ma)m(y)j(b)s(e)e(mailed)h(to)g Ft(bug-bash@gnu)11 +b(.)g(org)39 b Fu(or)k(p)s(osted)g(to)i(the)150 1215 +y(Usenet)31 b(newsgroup)e Ft(gnu.bash.bug)p Fu(.)275 +1350 y(All)i(bug)e(rep)s(orts)h(should)f(include:)225 +1484 y Fq(\017)60 b Fu(The)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h +(Bash.)225 1619 y Fq(\017)60 b Fu(The)30 b(hardw)m(are)g(and)g(op)s +(erating)g(system.)225 1753 y Fq(\017)60 b Fu(The)30 +b(compiler)h(used)e(to)i(compile)h(Bash.)225 1888 y Fq(\017)60 +b Fu(A)30 b(description)h(of)f(the)h(bug)f(b)s(eha)m(viour.)225 +2022 y Fq(\017)60 b Fu(A)30 b(short)h(script)f(or)g(`recip)s(e')h(whic) +m(h)f(exercises)i(the)e(bug)g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(repro) +s(duce)e(it.)150 2182 y Ft(bashbug)d Fu(inserts)i(the)h(\014rst)f +(three)g(items)h(automatically)i(in)m(to)f(the)e(template)i(it)f(pro)m +(vides)f(for)g(\014ling)h(a)150 2291 y(bug)h(rep)s(ort.)275 +2426 y(Please)h(send)f(all)h(rep)s(orts)f(concerning)g(this)h(man)m +(ual)f(to)h Ft(bug-bash@gnu.org)p Fu(.)p eop end +%%Page: 161 167 +TeXDict begin 161 166 bop 3614 -116 a Fu(161)150 141 +y Fp(App)t(endix)58 b(B)81 b(Ma)9 b(jor)54 b(Di\013erences)d(F)-13 +b(rom)54 b(The)g(Bourne)1088 299 y(Shell)150 530 y Fu(Bash)26 +b(implemen)m(ts)h(essen)m(tially)g(the)g(same)f(grammar,)h(parameter)f +(and)g(v)-5 b(ariable)27 b(expansion,)g(redirec-)150 +640 y(tion,)i(and)e(quoting)g(as)h(the)g(Bourne)f(Shell.)40 +b(Bash)27 b(uses)g(the)h Fm(posix)f Fu(standard)f(as)i(the)g(sp)s +(eci\014cation)g(of)150 749 y(ho)m(w)34 b(these)h(features)g(are)g(to)g +(b)s(e)f(implemen)m(ted.)53 b(There)34 b(are)h(some)g(di\013erences)g +(b)s(et)m(w)m(een)g(the)g(tradi-)150 859 y(tional)e(Bourne)e(shell)h +(and)f(Bash;)i(this)f(section)g(quic)m(kly)h(details)g(the)e +(di\013erences)h(of)g(signi\014cance.)46 b(A)150 969 +y(n)m(um)m(b)s(er)24 b(of)h(these)h(di\013erences)f(are)h(explained)f +(in)g(greater)h(depth)f(in)g(previous)f(sections.)40 +b(This)25 b(section)150 1078 y(uses)33 b(the)i(v)m(ersion)f(of)g +Ft(sh)f Fu(included)g(in)h(SVR4.2)h(\(the)f(last)h(v)m(ersion)f(of)g +(the)g(historical)i(Bourne)d(shell\))150 1188 y(as)e(the)f(baseline)h +(reference.)225 1322 y Fq(\017)60 b Fu(Bash)32 b(is)h +Fm(posix)p Fu(-conforman)m(t,)g(ev)m(en)g(where)f(the)g +Fm(posix)g Fu(sp)s(eci\014cation)h(di\013ers)f(from)g(traditional)330 +1431 y Ft(sh)e Fu(b)s(eha)m(vior)g(\(see)i(Section)f(6.11)h([Bash)e +(POSIX)g(Mo)s(de],)h(page)g(101\).)225 1565 y Fq(\017)60 +b Fu(Bash)26 b(has)g(m)m(ulti-c)m(haracter)i(in)m(v)m(o)s(cation)g +(options)f(\(see)f(Section)h(6.1)g([In)m(v)m(oking)g(Bash],)h(page)e +(86\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h +(editing)g(\(see)h(Chapter)e(8)h([Command)f(Line)g(Editing],)k(page)d +(111\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225 +1943 y Fq(\017)60 b Fu(Bash)46 b(pro)m(vides)g(a)g(programmable)g(w)m +(ord)f(completion)i(mec)m(hanism)f(\(see)h(Section)g(8.6)g([Pro-)330 +2052 y(grammable)39 b(Completion],)i(page)e(137\),)i(and)d(builtin)g +(commands)f Ft(complete)p Fu(,)h Ft(compgen)p Fu(,)h(and)330 +2162 y Ft(compopt)p Fu(,)29 b(to)i(manipulate)g(it.)225 +2296 y Fq(\017)60 b Fu(Bash)26 b(has)f(command)h(history)f(\(see)i +(Section)f(9.1)h([Bash)f(History)h(F)-8 b(acilities],)30 +b(page)c(146\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h +Ft(fc)g Fu(builtins)g(to)h(manipulate)g(it.)42 b(The)30 +b(Bash)h(history)g(list)g(main)m(tains)g(timestamp)330 +2515 y(information)g(and)e(uses)h(the)h(v)-5 b(alue)31 +b(of)f(the)h Ft(HISTTIMEFORMAT)26 b Fu(v)-5 b(ariable)32 +b(to)f(displa)m(y)f(it.)225 2649 y Fq(\017)60 b Fu(Bash)48 +b(implemen)m(ts)h Ft(csh)p Fu(-lik)m(e)g(history)f(expansion)g(\(see)h +(Section)g(9.3)h([History)f(In)m(teraction],)330 2759 +y(page)31 b(148\).)225 2892 y Fq(\017)60 b Fu(Bash)33 +b(has)g(one-dimensional)h(arra)m(y)f(v)-5 b(ariables)34 +b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(95\),)h(and)e(the)330 +3002 y(appropriate)39 b(v)-5 b(ariable)40 b(expansions)f(and)g +(assignmen)m(t)h(syn)m(tax)g(to)g(use)f(them.)67 b(Sev)m(eral)40 +b(of)g(the)330 3112 y(Bash)32 b(builtins)f(tak)m(e)j(options)e(to)h +(act)g(on)e(arra)m(ys.)46 b(Bash)32 b(pro)m(vides)g(a)g(n)m(um)m(b)s +(er)f(of)h(built-in)f(arra)m(y)330 3221 y(v)-5 b(ariables.)225 +3355 y Fq(\017)60 b Fu(The)37 b Ft($'...)n(')g Fu(quoting)g(syn)m(tax,) +j(whic)m(h)d(expands)f(ANSI-C)h(bac)m(kslash-escap)s(ed)h(c)m +(haracters)g(in)330 3465 y(the)26 b(text)h(b)s(et)m(w)m(een)g(the)g +(single)f(quotes,)i(is)e(supp)s(orted)f(\(see)i(Section)g(3.1.2.4)h +([ANSI-C)e(Quoting],)330 3574 y(page)31 b(6\).)225 3708 +y Fq(\017)60 b Fu(Bash)30 b(supp)s(orts)f(the)h Ft($"...)o(")f +Fu(quoting)i(syn)m(tax)g(to)f(do)g(lo)s(cale-sp)s(eci\014c)i +(translation)g(of)e(the)g(c)m(har-)330 3818 y(acters)g(b)s(et)m(w)m +(een)f(the)f(double)g(quotes.)41 b(The)28 b Ft(-D)p Fu(,)h +Ft(--dump-strings)p Fu(,)c(and)j Ft(--dump-po-strings)330 +3927 y Fu(in)m(v)m(o)s(cation)42 b(options)d(list)i(the)e(translatable) +i(strings)f(found)e(in)h(a)h(script)g(\(see)g(Section)g(3.1.2.5)330 +4037 y([Lo)s(cale)32 b(T)-8 b(ranslation],)31 b(page)h(7\).)225 +4171 y Fq(\017)60 b Fu(Bash)44 b(implemen)m(ts)g(the)f +Ft(!)h Fu(k)m(eyw)m(ord)g(to)g(negate)h(the)f(return)e(v)-5 +b(alue)44 b(of)g(a)g(pip)s(eline)f(\(see)h(Sec-)330 4281 +y(tion)33 b(3.2.3)i([Pip)s(elines],)f(page)g(8\).)49 +b(V)-8 b(ery)33 b(useful)f(when)g(an)h Ft(if)f Fu(statemen)m(t)j(needs) +d(to)i(act)g(only)f(if)330 4390 y(a)k(test)h(fails.)60 +b(The)36 b(Bash)g(`)p Ft(-o)30 b(pipefail)p Fu(')35 b(option)i(to)h +Ft(set)d Fu(will)i(cause)g(a)g(pip)s(eline)g(to)g(return)f(a)330 +4500 y(failure)31 b(status)f(if)h(an)m(y)f(command)g(fails.)225 +4634 y Fq(\017)60 b Fu(Bash)34 b(has)g(the)g Ft(time)f +Fu(reserv)m(ed)h(w)m(ord)g(and)f(command)h(timing)h(\(see)g(Section)g +(3.2.3)g([Pip)s(elines],)330 4743 y(page)g(8\).)52 b(The)33 +b(displa)m(y)i(of)f(the)g(timing)g(statistics)i(ma)m(y)f(b)s(e)e(con)m +(trolled)j(with)e(the)g Ft(TIMEFORMAT)330 4853 y Fu(v)-5 +b(ariable.)225 4987 y Fq(\017)60 b Fu(Bash)28 b(implemen)m(ts)g(the)f +Ft(for)j(\(\()g Fj(expr1)f Ft(;)h Fj(expr2)f Ft(;)h Fj(expr3)f +Ft(\)\))e Fu(arithmetic)h(for)g(command,)g(sim-)330 5096 +y(ilar)j(to)g(the)g(C)f(language)h(\(see)h(Section)f(3.2.5.1)i([Lo)s +(oping)d(Constructs],)h(page)g(10\).)225 5230 y Fq(\017)60 +b Fu(Bash)31 b(includes)f(the)g Ft(select)f Fu(comp)s(ound)g(command,)i +(whic)m(h)f(allo)m(ws)i(the)f(generation)g(of)g(simple)330 +5340 y(men)m(us)f(\(see)h(Section)g(3.2.5.2)i([Conditional)e +(Constructs],)g(page)g(11\).)p eop end +%%Page: 162 168 +TeXDict begin 162 167 bop 150 -116 a Fu(App)s(endix)29 +b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 +b(The)f(Bourne)g(Shell)1258 b(162)225 299 y Fq(\017)60 +b Fu(Bash)40 b(includes)g(the)g Ft([[)g Fu(comp)s(ound)e(command,)43 +b(whic)m(h)c(mak)m(es)i(conditional)h(testing)f(part)f(of)330 +408 y(the)f(shell)g(grammar)g(\(see)h(Section)f(3.2.5.2)j([Conditional) +d(Constructs],)i(page)f(11\),)i(including)330 518 y(optional)32 +b(regular)e(expression)g(matc)m(hing.)225 653 y Fq(\017)60 +b Fu(Bash)31 b(pro)m(vides)f(optional)h(case-insensitiv)m(e)i(matc)m +(hing)f(for)e(the)g Ft(case)g Fu(and)f Ft([[)h Fu(constructs.)225 +789 y Fq(\017)60 b Fu(Bash)27 b(includes)g(brace)h(expansion)f(\(see)h +(Section)g(3.5.1)i([Brace)e(Expansion],)g(page)g(23\))h(and)d(tilde)330 +898 y(expansion)k(\(see)i(Section)f(3.5.2)h([Tilde)f(Expansion],)f +(page)h(24\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h +(command)e(aliases)j(and)d(the)i Ft(alias)d Fu(and)i +Ft(unalias)e Fu(builtins)h(\(see)i(Section)g(6.6)330 +1143 y([Aliases],)32 b(page)f(94\).)225 1279 y Fq(\017)60 +b Fu(Bash)32 b(pro)m(vides)g(shell)g(arithmetic,)i(the)e +Ft(\(\()g Fu(comp)s(ound)e(command)i(\(see)h(Section)f(3.2.5.2)j([Con-) +330 1388 y(ditional)d(Constructs],)e(page)i(11\),)g(and)e(arithmetic)i +(expansion)e(\(see)i(Section)f(6.5)h([Shell)f(Arith-)330 +1498 y(metic],)h(page)f(93\).)225 1633 y Fq(\017)60 b +Fu(V)-8 b(ariables)31 b(presen)m(t)e(in)g(the)g(shell's)h(initial)g(en) +m(vironmen)m(t)g(are)g(automatically)i(exp)s(orted)d(to)h(c)m(hild)330 +1743 y(pro)s(cesses.)38 b(The)23 b(Bourne)g(shell)g(do)s(es)g(not)g +(normally)g(do)g(this)g(unless)g(the)g(v)-5 b(ariables)24 +b(are)f(explicitly)330 1852 y(mark)m(ed)30 b(using)g(the)h +Ft(export)e Fu(command.)225 1988 y Fq(\017)60 b Fu(Bash)26 +b(supp)s(orts)d(the)j(`)p Ft(+=)p Fu(')f(assignmen)m(t)i(op)s(erator,)g +(whic)m(h)e(app)s(ends)f(to)i(the)g(v)-5 b(alue)26 b(of)f(the)h(v)-5 +b(ariable)330 2097 y(named)30 b(on)g(the)h(left)g(hand)e(side.)225 +2233 y Fq(\017)60 b Fu(Bash)36 b(includes)g(the)g Fm(posix)f +Fu(pattern)h(remo)m(v)-5 b(al)37 b(`)p Ft(\045)p Fu(',)h(`)p +Ft(#)p Fu(',)g(`)p Ft(\045\045)p Fu(')e(and)f(`)p Ft(##)p +Fu(')h(expansions)g(to)g(remo)m(v)m(e)330 2342 y(leading)f(or)f +(trailing)h(substrings)e(from)g(v)-5 b(ariable)35 b(v)-5 +b(alues)35 b(\(see)g(Section)g(3.5.3)g([Shell)g(P)m(arameter)330 +2452 y(Expansion],)30 b(page)h(25\).)225 2587 y Fq(\017)60 +b Fu(The)46 b(expansion)g Ft(${#xx})p Fu(,)j(whic)m(h)d(returns)f(the)i +(length)f(of)h Ft(${xx})p Fu(,)i(is)e(supp)s(orted)d(\(see)j(Sec-)330 +2697 y(tion)31 b(3.5.3)h([Shell)f(P)m(arameter)g(Expansion],)f(page)i +(25\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g +Ft(${var:)p Fr(o\013set)r Ft([:)p Fr(length)p Ft(]})p +Fu(,)g(whic)m(h)g(expands)g(to)h(the)g(substring)e(of)i +Ft(var)p Fu('s)e(v)-5 b(alue)330 2942 y(of)43 b(length)g +Fr(length)p Fu(,)k(b)s(eginning)42 b(at)i Fr(o\013set)p +Fu(,)j(is)c(presen)m(t)g(\(see)g(Section)h(3.5.3)h([Shell)e(P)m +(arameter)330 3051 y(Expansion],)30 b(page)h(25\).)225 +3187 y Fq(\017)60 b Fu(The)21 b(expansion)f Ft(${var/[/])p +Fr(pattern)p Ft([/)p Fr(replacemen)m(t)r Ft(]})p Fu(,)i(whic)m(h)e +(matc)m(hes)j Fr(pattern)e Fu(and)f(replaces)330 3296 +y(it)29 b(with)e Fr(replacemen)m(t)32 b Fu(in)c(the)g(v)-5 +b(alue)29 b(of)f Ft(var)p Fu(,)g(is)g(a)m(v)-5 b(ailable)31 +b(\(see)e(Section)f(3.5.3)i([Shell)f(P)m(arameter)330 +3406 y(Expansion],)h(page)h(25\).)225 3541 y Fq(\017)60 +b Fu(The)33 b(expansion)g Ft(${!)p Fj(prefix)p Ft(*})d +Fu(expansion,)k(whic)m(h)e(expands)h(to)h(the)f(names)g(of)g(all)h +(shell)f(v)-5 b(ari-)330 3651 y(ables)36 b(whose)g(names)g(b)s(egin)g +(with)g Fr(pre\014x)p Fu(,)g(is)g(a)m(v)-5 b(ailable)39 +b(\(see)e(Section)g(3.5.3)g([Shell)g(P)m(arameter)330 +3761 y(Expansion],)30 b(page)h(25\).)225 3896 y Fq(\017)60 +b Fu(Bash)22 b(has)f Fr(indirect)j Fu(v)-5 b(ariable)22 +b(expansion)g(using)f Ft(${!word})e Fu(\(see)k(Section)f(3.5.3)i +([Shell)e(P)m(arameter)330 4006 y(Expansion],)30 b(page)h(25\).)225 +4141 y Fq(\017)60 b Fu(Bash)31 b(can)f(expand)g(p)s(ositional)h +(parameters)g(b)s(ey)m(ond)e Ft($9)h Fu(using)g Ft(${)p +Fj(num)p Ft(})p Fu(.)225 4276 y Fq(\017)60 b Fu(The)27 +b Fm(posix)g Ft($\(\))g Fu(form)g(of)h(command)g(substitution)f(is)h +(implemen)m(ted)g(\(see)h(Section)f(3.5.4)i([Com-)330 +4386 y(mand)38 b(Substitution],)k(page)e(31\),)j(and)38 +b(preferred)g(to)i(the)g(Bourne)f(shell's)h Ft(``)e Fu(\(whic)m(h)i(is) +f(also)330 4495 y(implemen)m(ted)31 b(for)f(bac)m(kw)m(ards)h +(compatibilit)m(y\).)225 4631 y Fq(\017)60 b Fu(Bash)31 +b(has)f(pro)s(cess)g(substitution)g(\(see)h(Section)g(3.5.6)h([Pro)s +(cess)f(Substitution],)f(page)h(32\).)225 4766 y Fq(\017)60 +b Fu(Bash)55 b(automatically)j(assigns)e(v)-5 b(ariables)55 +b(that)h(pro)m(vide)f(information)h(ab)s(out)f(the)g(curren)m(t)330 +4876 y(user)40 b(\()p Ft(UID)p Fu(,)i Ft(EUID)p Fu(,)g(and)e +Ft(GROUPS)p Fu(\),)h(the)g(curren)m(t)f(host)g(\()p Ft(HOSTTYPE)p +Fu(,)h Ft(OSTYPE)p Fu(,)h Ft(MACHTYPE)p Fu(,)f(and)330 +4985 y Ft(HOSTNAME)p Fu(\),)55 b(and)c(the)g(instance)h(of)g(Bash)f +(that)h(is)f(running)f(\()p Ft(BASH)p Fu(,)56 b Ft(BASH_VERSION)p +Fu(,)e(and)330 5095 y Ft(BASH_VERSINFO)p Fu(\).)37 b(See)31 +b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(73,)g(for)f +(details.)225 5230 y Fq(\017)60 b Fu(The)44 b Ft(IFS)f +Fu(v)-5 b(ariable)45 b(is)f(used)f(to)i(split)f(only)g(the)g(results)g +(of)h(expansion,)i(not)d(all)h(w)m(ords)f(\(see)330 5340 +y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(32\).)41 +b(This)28 b(closes)h(a)g(longstanding)g(shell)f(securit)m(y)h(hole.)p +eop end +%%Page: 163 169 +TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29 +b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 +b(The)f(Bourne)g(Shell)1258 b(163)225 299 y Fq(\017)60 +b Fu(The)36 b(\014lename)h(expansion)f(brac)m(k)m(et)i(expression)f(co) +s(de)f(uses)g(`)p Ft(!)p Fu(')h(and)f(`)p Ft(^)p Fu(')h(to)g(negate)h +(the)f(set)g(of)330 408 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)f +(brac)m(k)m(ets.)43 b(The)29 b(Bourne)i(shell)f(uses)g(only)h(`)p +Ft(!)p Fu('.)225 536 y Fq(\017)60 b Fu(Bash)38 b(implemen)m(ts)g(the)g +(full)g(set)g(of)g Fm(posix)f Fu(\014lename)h(expansion)g(op)s +(erators,)i(including)d Fr(c)m(har-)330 646 y(acter)i(classes)p +Fu(,)j Fr(equiv)-5 b(alence)39 b(classes)p Fu(,)j(and)37 +b Fr(collating)k(sym)m(b)s(ols)g Fu(\(see)e(Section)g(3.5.8)h +([Filename)330 756 y(Expansion],)30 b(page)h(33\).)225 +883 y Fq(\017)60 b Fu(Bash)35 b(implemen)m(ts)g(extended)g(pattern)g +(matc)m(hing)h(features)f(when)f(the)h Ft(extglob)d Fu(shell)j(option) +330 993 y(is)30 b(enabled)h(\(see)g(Section)g(3.5.8.1)i([P)m(attern)f +(Matc)m(hing],)g(page)f(33\).)225 1121 y Fq(\017)60 b +Fu(It)22 b(is)g(p)s(ossible)g(to)h(ha)m(v)m(e)g(a)f(v)-5 +b(ariable)23 b(and)f(a)g(function)g(with)g(the)g(same)g(name;)j +Ft(sh)d Fu(do)s(es)g(not)g(separate)330 1230 y(the)31 +b(t)m(w)m(o)g(name)g(spaces.)225 1358 y Fq(\017)60 b +Fu(Bash)30 b(functions)e(are)i(p)s(ermitted)f(to)h(ha)m(v)m(e)h(lo)s +(cal)g(v)-5 b(ariables)30 b(using)f(the)g Ft(local)f +Fu(builtin,)i(and)e(th)m(us)330 1468 y(useful)i(recursiv)m(e)g +(functions)g(ma)m(y)h(b)s(e)f(written)g(\(see)i(Section)f(4.2)g([Bash)g +(Builtins],)g(page)h(51\).)225 1596 y Fq(\017)60 b Fu(V)-8 +b(ariable)25 b(assignmen)m(ts)g(preceding)e(commands)h(a\013ect)h(only) +f(that)g(command,)h(ev)m(en)f(builtins)g(and)330 1705 +y(functions)36 b(\(see)h(Section)g(3.7.4)h([En)m(vironmen)m(t],)h(page) +e(41\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37 +b(assignmen)m(ts)330 1815 y(preceding)30 b(commands)g(are)h(global)h +(unless)d(the)i(command)f(is)h(executed)g(from)f(the)g(\014le)h +(system.)225 1943 y Fq(\017)60 b Fu(Bash)44 b(p)s(erforms)e(\014lename) +i(expansion)f(on)h(\014lenames)g(sp)s(eci\014ed)f(as)h(op)s(erands)e +(to)j(input)e(and)330 2052 y(output)30 b(redirection)h(op)s(erators)g +(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(35\).)225 +2180 y Fq(\017)60 b Fu(Bash)29 b(con)m(tains)h(the)f(`)p +Ft(<>)p Fu(')f(redirection)i(op)s(erator,)f(allo)m(wing)i(a)e(\014le)g +(to)g(b)s(e)f(op)s(ened)g(for)h(b)s(oth)f(read-)330 2290 +y(ing)35 b(and)f(writing,)i(and)e(the)h(`)p Ft(&>)p Fu(')g(redirection) +g(op)s(erator,)h(for)f(directing)g(standard)f(output)h(and)330 +2399 y(standard)30 b(error)g(to)h(the)f(same)h(\014le)f(\(see)i +(Section)f(3.6)g([Redirections],)h(page)g(35\).)225 2527 +y Fq(\017)60 b Fu(Bash)21 b(includes)f(the)h(`)p Ft(<<<)p +Fu(')g(redirection)g(op)s(erator,)i(allo)m(wing)g(a)e(string)f(to)i(b)s +(e)e(used)g(as)h(the)g(standard)330 2637 y(input)29 b(to)j(a)e +(command.)225 2765 y Fq(\017)60 b Fu(Bash)32 b(implemen)m(ts)f(the)h(`) +p Ft([n]<&)p Fj(word)p Fu(')d(and)i(`)p Ft([n]>&)p Fj(word)p +Fu(')e(redirection)j(op)s(erators,)g(whic)m(h)f(mo)m(v)m(e)330 +2874 y(one)g(\014le)f(descriptor)g(to)h(another.)225 +3002 y Fq(\017)60 b Fu(Bash)25 b(treats)h(a)f(n)m(um)m(b)s(er)e(of)i +(\014lenames)g(sp)s(ecially)g(when)f(they)h(are)g(used)f(in)g +(redirection)i(op)s(erators)330 3112 y(\(see)31 b(Section)h(3.6)f +([Redirections],)h(page)f(35\).)225 3240 y Fq(\017)60 +b Fu(Bash)33 b(can)f(op)s(en)g(net)m(w)m(ork)i(connections)f(to)h +(arbitrary)e(mac)m(hines)h(and)f(services)h(with)f(the)h(redi-)330 +3349 y(rection)e(op)s(erators)g(\(see)g(Section)g(3.6)h +([Redirections],)g(page)f(35\).)225 3477 y Fq(\017)60 +b Fu(The)29 b Ft(noclobber)e Fu(option)j(is)g(a)m(v)-5 +b(ailable)32 b(to)e(a)m(v)m(oid)h(o)m(v)m(erwriting)g(existing)g +(\014les)e(with)h(output)f(redi-)330 3587 y(rection)39 +b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(62\).)66 +b(The)38 b(`)p Ft(>|)p Fu(')h(redirection)g(op)s(erator)330 +3696 y(ma)m(y)31 b(b)s(e)f(used)f(to)i(o)m(v)m(erride)h +Ft(noclobber)p Fu(.)225 3824 y Fq(\017)60 b Fu(The)34 +b(Bash)g Ft(cd)g Fu(and)f Ft(pwd)g Fu(builtins)h(\(see)h(Section)g(4.1) +g([Bourne)g(Shell)f(Builtins],)h(page)g(44\))h(eac)m(h)330 +3934 y(tak)m(e)c Ft(-L)e Fu(and)f Ft(-P)h Fu(options)h(to)g(switc)m(h)g +(b)s(et)m(w)m(een)g(logical)i(and)c(ph)m(ysical)i(mo)s(des.)225 +4061 y Fq(\017)60 b Fu(Bash)25 b(allo)m(ws)h(a)g(function)e(to)i(o)m(v) +m(erride)g(a)g(builtin)e(with)h(the)g(same)g(name,)i(and)d(pro)m(vides) +h(access)h(to)330 4171 y(that)34 b(builtin's)f(functionalit)m(y)h +(within)f(the)g(function)g(via)h(the)f Ft(builtin)f Fu(and)g +Ft(command)g Fu(builtins)330 4281 y(\(see)f(Section)h(4.2)f([Bash)g +(Builtins],)g(page)g(51\).)225 4408 y Fq(\017)60 b Fu(The)35 +b Ft(command)e Fu(builtin)i(allo)m(ws)i(selectiv)m(e)h(disabling)e(of)f +(functions)g(when)g(command)g(lo)s(okup)g(is)330 4518 +y(p)s(erformed)29 b(\(see)i(Section)g(4.2)h([Bash)f(Builtins],)g(page)g +(51\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i +(b)s(e)e(enabled)h(or)g(disabled)g(using)f(the)h Ft(enable)f +Fu(builtin)g(\(see)i(Section)g(4.2)330 4756 y([Bash)31 +b(Builtins],)g(page)g(51\).)225 4883 y Fq(\017)60 b Fu(The)26 +b(Bash)h Ft(exec)e Fu(builtin)h(tak)m(es)i(additional)f(options)g(that) +g(allo)m(w)h(users)d(to)j(con)m(trol)g(the)e(con)m(ten)m(ts)330 +4993 y(of)35 b(the)f(en)m(vironmen)m(t)h(passed)f(to)h(the)g(executed)g +(command,)h(and)d(what)i(the)f(zeroth)h(argumen)m(t)330 +5103 y(to)c(the)g(command)f(is)g(to)h(b)s(e)f(\(see)h(Section)h(4.1)f +([Bourne)f(Shell)h(Builtins],)g(page)g(44\).)225 5230 +y Fq(\017)60 b Fu(Shell)29 b(functions)g(ma)m(y)h(b)s(e)f(exp)s(orted)g +(to)h(c)m(hildren)f(via)h(the)g(en)m(vironmen)m(t)g(using)f +Ft(export)f(-f)h Fu(\(see)330 5340 y(Section)i(3.3)h([Shell)e(F)-8 +b(unctions],)32 b(page)f(18\).)p eop end +%%Page: 164 170 +TeXDict begin 164 169 bop 150 -116 a Fu(App)s(endix)29 +b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 +b(The)f(Bourne)g(Shell)1258 b(164)225 299 y Fq(\017)60 +b Fu(The)40 b(Bash)h Ft(export)p Fu(,)h Ft(readonly)p +Fu(,)f(and)g Ft(declare)d Fu(builtins)j(can)g(tak)m(e)h(a)f +Ft(-f)f Fu(option)i(to)f(act)h(on)330 408 y(shell)30 +b(functions,)f(a)h Ft(-p)f Fu(option)g(to)i(displa)m(y)e(v)-5 +b(ariables)30 b(with)f(v)-5 b(arious)30 b(attributes)g(set)g(in)f(a)h +(format)330 518 y(that)g(can)g(b)s(e)f(used)g(as)g(shell)h(input,)f(a)h +Ft(-n)f Fu(option)h(to)g(remo)m(v)m(e)h(v)-5 b(arious)30 +b(v)-5 b(ariable)30 b(attributes,)h(and)330 628 y(`)p +Ft(name=value)p Fu(')d(argumen)m(ts)j(to)g(set)g(v)-5 +b(ariable)31 b(attributes)g(and)f(v)-5 b(alues)30 b(sim)m(ultaneously) +-8 b(.)225 765 y Fq(\017)60 b Fu(The)42 b(Bash)h Ft(hash)f +Fu(builtin)g(allo)m(ws)j(a)e(name)g(to)g(b)s(e)f(asso)s(ciated)j(with)d +(an)h(arbitrary)f(\014lename,)330 874 y(ev)m(en)30 b(when)e(that)h +(\014lename)g(cannot)h(b)s(e)e(found)g(b)m(y)h(searc)m(hing)g(the)g +Ft($PATH)p Fu(,)g(using)f(`)p Ft(hash)h(-p)p Fu(')g(\(see)330 +984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(44\).)225 +1121 y Fq(\017)60 b Fu(Bash)27 b(includes)f(a)i Ft(help)d +Fu(builtin)i(for)f(quic)m(k)h(reference)h(to)f(shell)g(facilities)i +(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(51\).)225 +1367 y Fq(\017)60 b Fu(The)42 b Ft(printf)g Fu(builtin)g(is)h(a)m(v)-5 +b(ailable)45 b(to)f(displa)m(y)f(formatted)g(output)g(\(see)h(Section)g +(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(51\).)225 +1614 y Fq(\017)60 b Fu(The)26 b(Bash)h Ft(read)f Fu(builtin)g(\(see)i +(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(51\))g(will)f(read)g(a)g +(line)g(ending)330 1724 y(in)i(`)p Ft(\\)p Fu(')h(with)f(the)g +Ft(-r)g Fu(option,)i(and)d(will)i(use)f(the)h Ft(REPLY)e +Fu(v)-5 b(ariable)30 b(as)g(a)f(default)h(if)f(no)h(non-option)330 +1833 y(argumen)m(ts)h(are)h(supplied.)42 b(The)30 b(Bash)i +Ft(read)e Fu(builtin)g(also)j(accepts)f(a)g(prompt)e(string)h(with)g +(the)330 1943 y Ft(-p)c Fu(option)h(and)f(will)g(use)h(Readline)g(to)g +(obtain)g(the)g(line)f(when)g(giv)m(en)h(the)g Ft(-e)f +Fu(option.)40 b(The)27 b Ft(read)330 2052 y Fu(builtin)h(also)i(has)e +(additional)i(options)f(to)g(con)m(trol)h(input:)39 b(the)29 +b Ft(-s)f Fu(option)h(will)g(turn)e(o\013)j(ec)m(hoing)330 +2162 y(of)f(input)f(c)m(haracters)j(as)e(they)g(are)h(read,)f(the)g +Ft(-t)g Fu(option)g(will)h(allo)m(w)g Ft(read)e Fu(to)i(time)g(out)f +(if)g(input)330 2271 y(do)s(es)i(not)h(arriv)m(e)g(within)f(a)h(sp)s +(eci\014ed)f(n)m(um)m(b)s(er)f(of)i(seconds,)g(the)f +Ft(-n)g Fu(option)h(will)g(allo)m(w)h(reading)330 2381 +y(only)38 b(a)g(sp)s(eci\014ed)f(n)m(um)m(b)s(er)f(of)i(c)m(haracters)h +(rather)e(than)g(a)h(full)g(line,)i(and)d(the)h Ft(-d)f +Fu(option)h(will)330 2491 y(read)30 b(un)m(til)h(a)g(particular)f(c)m +(haracter)i(rather)f(than)f(newline.)225 2628 y Fq(\017)60 +b Fu(The)33 b Ft(return)e Fu(builtin)i(ma)m(y)g(b)s(e)g(used)f(to)i(ab) +s(ort)f(execution)h(of)f(scripts)g(executed)h(with)f(the)g +Ft(.)g Fu(or)330 2737 y Ft(source)c Fu(builtins)g(\(see)j(Section)f +(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(44\).)225 +2874 y Fq(\017)60 b Fu(Bash)43 b(includes)g(the)g Ft(shopt)f +Fu(builtin,)k(for)d(\014ner)f(con)m(trol)j(of)e(shell)h(optional)g +(capabilities)h(\(see)330 2984 y(Section)c(4.3.2)g([The)f(Shopt)f +(Builtin],)k(page)d(66\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f +(b)s(e)f(set)i(and)330 3093 y(unset)30 b(at)h(shell)g(in)m(v)m(o)s +(cation)h(\(see)f(Section)h(6.1)f([In)m(v)m(oking)g(Bash],)g(page)h +(86\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h +(optional)h(b)s(eha)m(vior)e(con)m(trollable)j(with)e(the)f +Ft(set)g Fu(builtin)g(\(see)h(Sec-)330 3340 y(tion)31 +b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(62\).)225 3477 +y Fq(\017)60 b Fu(The)31 b(`)p Ft(-x)p Fu(')g(\()p Ft(xtrace)p +Fu(\))g(option)h(displa)m(ys)f(commands)h(other)f(than)h(simple)f +(commands)g(when)g(p)s(er-)330 3587 y(forming)f(an)g(execution)i(trace) +f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(62\).)225 +3724 y Fq(\017)60 b Fu(The)28 b Ft(test)g Fu(builtin)h(\(see)h(Section) +f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(44\))g(is)f(sligh)m(tly)h +(di\013eren)m(t,)330 3833 y(as)23 b(it)g(implemen)m(ts)f(the)h +Fm(posix)f Fu(algorithm,)j(whic)m(h)d(sp)s(eci\014es)g(the)h(b)s(eha)m +(vior)f(based)g(on)h(the)f(n)m(um)m(b)s(er)330 3943 y(of)31 +b(argumen)m(ts.)225 4080 y Fq(\017)60 b Fu(Bash)31 b(includes)g(the)h +Ft(caller)d Fu(builtin,)j(whic)m(h)f(displa)m(ys)g(the)g(con)m(text)i +(of)f(an)m(y)g(activ)m(e)h(subroutine)330 4189 y(call)28 +b(\(a)f(shell)f(function)h(or)f(a)h(script)f(executed)h(with)f(the)h +Ft(.)f Fu(or)g Ft(source)f Fu(builtins\).)39 b(This)26 +b(supp)s(orts)330 4299 y(the)31 b(bash)e(debugger.)225 +4436 y Fq(\017)60 b Fu(The)42 b Ft(trap)f Fu(builtin)h(\(see)i(Section) +f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(44\))h(allo)m(ws)g(a)e +Ft(DEBUG)330 4545 y Fu(pseudo-signal)c(sp)s(eci\014cation,)i(similar)e +(to)g Ft(EXIT)p Fu(.)62 b(Commands)36 b(sp)s(eci\014ed)h(with)g(a)h +Ft(DEBUG)e Fu(trap)330 4655 y(are)k(executed)g(b)s(efore)f(ev)m(ery)h +(simple)f(command,)j Ft(for)c Fu(command,)k Ft(case)c +Fu(command,)k Ft(select)330 4765 y Fu(command,)35 b(ev)m(ery)g +(arithmetic)g Ft(for)e Fu(command,)i(and)f(b)s(efore)g(the)g(\014rst)f +(command)h(executes)h(in)330 4874 y(a)29 b(shell)g(function.)40 +b(The)28 b Ft(DEBUG)g Fu(trap)g(is)h(not)g(inherited)f(b)m(y)h(shell)g +(functions)f(unless)g(the)h(function)330 4984 y(has)35 +b(b)s(een)g(giv)m(en)i(the)f Ft(trace)e Fu(attribute)i(or)g(the)g +Ft(functrace)d Fu(option)j(has)f(b)s(een)g(enabled)g(using)330 +5093 y(the)28 b Ft(shopt)e Fu(builtin.)39 b(The)27 b +Ft(extdebug)f Fu(shell)i(option)g(has)f(additional)h(e\013ects)h(on)f +(the)g Ft(DEBUG)e Fu(trap.)330 5230 y(The)21 b Ft(trap)e +Fu(builtin)i(\(see)h(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)j +(page)e(44\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330 +5340 y(signal)30 b(sp)s(eci\014cation,)h(similar)f(to)g +Ft(EXIT)f Fu(and)g Ft(DEBUG)p Fu(.)39 b(Commands)28 b(sp)s(eci\014ed)h +(with)g(an)g Ft(ERR)g Fu(trap)p eop end +%%Page: 165 171 +TeXDict begin 165 170 bop 150 -116 a Fu(App)s(endix)29 +b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 +b(The)f(Bourne)g(Shell)1258 b(165)330 299 y(are)40 b(executed)g(after)g +(a)f(simple)h(command)f(fails,)j(with)d(a)h(few)f(exceptions.)68 +b(The)39 b Ft(ERR)g Fu(trap)g(is)330 408 y(not)g(inherited)f(b)m(y)h +(shell)g(functions)f(unless)g(the)h Ft(-o)29 b(errtrace)37 +b Fu(option)i(to)g(the)g Ft(set)f Fu(builtin)g(is)330 +518 y(enabled.)330 650 y(The)g Ft(trap)g Fu(builtin)h(\(see)g(Section)h +(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(44\))g(allo)m(ws)g(a)g +Ft(RETURN)330 759 y Fu(pseudo-signal)35 b(sp)s(eci\014cation,)j +(similar)d(to)h Ft(EXIT)e Fu(and)g Ft(DEBUG)p Fu(.)54 +b(Commands)34 b(sp)s(eci\014ed)g(with)h(an)330 869 y +Ft(RETURN)k Fu(trap)i(are)g(executed)h(b)s(efore)e(execution)i(resumes) +e(after)h(a)g(shell)g(function)g(or)g(a)g(shell)330 978 +y(script)36 b(executed)g(with)g Ft(.)f Fu(or)h Ft(source)e +Fu(returns.)56 b(The)35 b Ft(RETURN)f Fu(trap)i(is)g(not)g(inherited)f +(b)m(y)h(shell)330 1088 y(functions)k(unless)h(the)g(function)f(has)h +(b)s(een)f(giv)m(en)i(the)f Ft(trace)e Fu(attribute)j(or)e(the)h +Ft(functrace)330 1198 y Fu(option)31 b(has)f(b)s(een)g(enabled)g(using) +g(the)g Ft(shopt)f Fu(builtin.)225 1329 y Fq(\017)60 +b Fu(The)30 b(Bash)g Ft(type)f Fu(builtin)h(is)g(more)g(extensiv)m(e)i +(and)d(giv)m(es)j(more)e(information)h(ab)s(out)f(the)g(names)330 +1439 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i +(page)f(51\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h +Ft(umask)e Fu(builtin)h(p)s(ermits)g(a)h Ft(-p)f Fu(option)h(to)h +(cause)f(the)g(output)f(to)h(b)s(e)f(displa)m(y)m(ed)h(in)g(the)330 +1680 y(form)i(of)h(a)g Ft(umask)f Fu(command)g(that)i(ma)m(y)f(b)s(e)f +(reused)g(as)h(input)f(\(see)i(Section)f(4.1)h([Bourne)f(Shell)330 +1789 y(Builtins],)g(page)g(44\).)225 1921 y Fq(\017)60 +b Fu(Bash)34 b(implemen)m(ts)h(a)g Ft(csh)p Fu(-lik)m(e)g(directory)f +(stac)m(k,)j(and)d(pro)m(vides)g(the)g Ft(pushd)p Fu(,)g +Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2030 y Fu(builtins)g(to)i +(manipulate)f(it)h(\(see)f(Section)h(6.8)g([The)f(Directory)h(Stac)m +(k],)i(page)d(97\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g +(directory)g(stac)m(k)g(visible)g(as)g(the)f(v)-5 b(alue)31 +b(of)g(the)f Ft(DIRSTACK)f Fu(shell)h(v)-5 b(ariable.)225 +2272 y Fq(\017)60 b Fu(Bash)28 b(in)m(terprets)h(sp)s(ecial)g(bac)m +(kslash-escap)s(ed)g(c)m(haracters)g(in)f(the)h(prompt)e(strings)h +(when)f(in)m(ter-)330 2381 y(activ)m(e)33 b(\(see)e(Section)g(6.9)h +([Con)m(trolling)f(the)g(Prompt],)f(page)h(98\).)225 +2513 y Fq(\017)60 b Fu(The)46 b(Bash)h(restricted)g(mo)s(de)f(is)h +(more)f(useful)g(\(see)h(Section)h(6.10)g([The)e(Restricted)i(Shell],) +330 2622 y(page)31 b(100\);)h(the)f(SVR4.2)g(shell)g(restricted)g(mo)s +(de)f(is)g(to)s(o)h(limited.)225 2754 y Fq(\017)60 b +Fu(The)30 b Ft(disown)f Fu(builtin)h(can)h(remo)m(v)m(e)h(a)f(job)f +(from)g(the)h(in)m(ternal)g(shell)g(job)f(table)i(\(see)f(Section)h +(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(108\))g(or)g +(suppress)d(the)i(sending)g(of)g Ft(SIGHUP)e Fu(to)j(a)g(job)f(when)f +(the)330 2973 y(shell)i(exits)g(as)f(the)h(result)f(of)h(a)f +Ft(SIGHUP)p Fu(.)225 3104 y Fq(\017)60 b Fu(Bash)31 b(includes)f(a)g(n) +m(um)m(b)s(er)f(of)i(features)g(to)g(supp)s(ort)d(a)j(separate)g +(debugger)f(for)h(shell)f(scripts.)225 3236 y Fq(\017)60 +b Fu(The)28 b(SVR4.2)h(shell)f(has)g(t)m(w)m(o)i(privilege-related)g +(builtins)e(\()p Ft(mldmode)e Fu(and)i Ft(priv)p Fu(\))f(not)i(presen)m +(t)f(in)330 3346 y(Bash.)225 3477 y Fq(\017)60 b Fu(Bash)31 +b(do)s(es)f(not)g(ha)m(v)m(e)i(the)e Ft(stop)g Fu(or)g +Ft(newgrp)f Fu(builtins.)225 3609 y Fq(\017)60 b Fu(Bash)31 +b(do)s(es)f(not)g(use)g(the)h Ft(SHACCT)d Fu(v)-5 b(ariable)32 +b(or)e(p)s(erform)f(shell)i(accoun)m(ting.)225 3740 y +Fq(\017)60 b Fu(The)30 b(SVR4.2)h Ft(sh)f Fu(uses)g(a)g +Ft(TIMEOUT)f Fu(v)-5 b(ariable)31 b(lik)m(e)h(Bash)e(uses)g +Ft(TMOUT)p Fu(.)150 3894 y(More)h(features)g(unique)e(to)i(Bash)g(ma)m +(y)g(b)s(e)f(found)f(in)h(Chapter)f(6)i([Bash)g(F)-8 +b(eatures],)32 b(page)f(86.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48 +b(Di\013erences)e(F)-11 b(rom)44 b(The)h(SVR4.2)g(Shell)150 +4288 y Fu(Since)33 b(Bash)h(is)f(a)g(completely)i(new)e(implemen)m +(tation,)j(it)e(do)s(es)e(not)i(su\013er)e(from)h(man)m(y)g(of)h(the)f +(limi-)150 4397 y(tations)f(of)e(the)h(SVR4.2)g(shell.)41 +b(F)-8 b(or)31 b(instance:)225 4529 y Fq(\017)60 b Fu(Bash)32 +b(do)s(es)f(not)h(fork)f(a)h(subshell)e(when)h(redirecting)h(in)m(to)h +(or)e(out)h(of)g(a)g(shell)f(con)m(trol)i(structure)330 +4639 y(suc)m(h)d(as)h(an)f Ft(if)g Fu(or)g Ft(while)f +Fu(statemen)m(t.)225 4770 y Fq(\017)60 b Fu(Bash)29 b(do)s(es)f(not)h +(allo)m(w)h(un)m(balanced)f(quotes.)41 b(The)28 b(SVR4.2)h(shell)g +(will)g(silen)m(tly)i(insert)d(a)h(needed)330 4880 y(closing)g(quote)g +(at)f Ft(EOF)f Fu(under)g(certain)h(circumstances.)41 +b(This)27 b(can)h(b)s(e)g(the)g(cause)g(of)g(some)h(hard-)330 +4989 y(to-\014nd)h(errors.)225 5121 y Fq(\017)60 b Fu(The)45 +b(SVR4.2)h(shell)f(uses)g(a)g(baro)s(que)g(memory)g(managemen)m(t)i(sc) +m(heme)e(based)g(on)g(trapping)330 5230 y Ft(SIGSEGV)p +Fu(.)57 b(If)35 b(the)i(shell)f(is)h(started)g(from)e(a)i(pro)s(cess)f +(with)g Ft(SIGSEGV)e Fu(blo)s(c)m(k)m(ed)k(\(e.g.,)h(b)m(y)d(using)330 +5340 y(the)31 b Ft(system\(\))d Fu(C)i(library)g(function)g(call\),)i +(it)f(misb)s(eha)m(v)m(es)g(badly)-8 b(.)p eop end +%%Page: 166 172 +TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29 +b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 +b(The)f(Bourne)g(Shell)1258 b(166)225 299 y Fq(\017)60 +b Fu(In)30 b(a)i(questionable)g(attempt)g(at)g(securit)m(y)-8 +b(,)33 b(the)e(SVR4.2)h(shell,)g(when)e(in)m(v)m(ok)m(ed)j(without)e +(the)h Ft(-p)330 408 y Fu(option,)39 b(will)d(alter)i(its)e(real)h(and) +f(e\013ectiv)m(e)j Fm(uid)d Fu(and)g Fm(gid)h Fu(if)f(they)h(are)f +(less)h(than)f(some)h(magic)330 518 y(threshold)30 b(v)-5 +b(alue,)31 b(commonly)g(100.)42 b(This)29 b(can)i(lead)g(to)g(unexp)s +(ected)f(results.)225 653 y Fq(\017)60 b Fu(The)30 b(SVR4.2)h(shell)g +(do)s(es)f(not)g(allo)m(w)i(users)e(to)h(trap)f Ft(SIGSEGV)p +Fu(,)f Ft(SIGALRM)p Fu(,)f(or)j Ft(SIGCHLD)p Fu(.)225 +787 y Fq(\017)60 b Fu(The)34 b(SVR4.2)h(shell)g(do)s(es)g(not)f(allo)m +(w)j(the)d Ft(IFS)p Fu(,)h Ft(MAILCHECK)p Fu(,)f Ft(PATH)p +Fu(,)h Ft(PS1)p Fu(,)g(or)f Ft(PS2)g Fu(v)-5 b(ariables)35 +b(to)330 897 y(b)s(e)30 b(unset.)225 1031 y Fq(\017)60 +b Fu(The)30 b(SVR4.2)h(shell)g(treats)g(`)p Ft(^)p Fu(')f(as)h(the)g +(undo)s(cumen)m(ted)e(equiv)-5 b(alen)m(t)31 b(of)g(`)p +Ft(|)p Fu('.)225 1166 y Fq(\017)60 b Fu(Bash)37 b(allo)m(ws)h(m)m +(ultiple)f(option)g(argumen)m(ts)g(when)e(it)i(is)g(in)m(v)m(ok)m(ed)h +(\()p Ft(-x)30 b(-v)p Fu(\);)40 b(the)c(SVR4.2)i(shell)330 +1275 y(allo)m(ws)c(only)f(one)g(option)g(argumen)m(t)g(\()p +Ft(-xv)p Fu(\).)47 b(In)32 b(fact,)i(some)f(v)m(ersions)g(of)g(the)g +(shell)f(dump)f(core)330 1385 y(if)f(the)h(second)f(argumen)m(t)h(b)s +(egins)f(with)g(a)h(`)p Ft(-)p Fu('.)225 1519 y Fq(\017)60 +b Fu(The)26 b(SVR4.2)i(shell)f(exits)g(a)g(script)g(if)g(an)m(y)g +(builtin)f(fails;)j(Bash)e(exits)g(a)g(script)g(only)g(if)g(one)g(of)g +(the)330 1629 y Fm(posix)34 b Fu(sp)s(ecial)h(builtins)f(fails,)i(and)e +(only)h(for)f(certain)h(failures,)h(as)f(en)m(umerated)g(in)f(the)h +Fm(posix)330 1738 y Fu(standard.)225 1873 y Fq(\017)60 +b Fu(The)30 b(SVR4.2)h(shell)g(b)s(eha)m(v)m(es)f(di\013eren)m(tly)h +(when)f(in)m(v)m(ok)m(ed)i(as)e Ft(jsh)g Fu(\(it)h(turns)e(on)h(job)g +(con)m(trol\).)p eop end +%%Page: 167 173 +TeXDict begin 167 172 bop 3614 -116 a Fu(167)150 299 +y Fp(App)t(endix)52 b(C)81 b(GNU)54 b(F)-13 b(ree)53 +b(Do)t(cumen)l(tation)e(License)1359 502 y Fu(V)-8 b(ersion)31 +b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 635 y(Cop)m(yrigh)m(t)842 +632 y(c)817 635 y Fq(\015)e Fu(2000,)j(2001,)f(2002,)g(2007,)h(2008)f +(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 +b(Inc.)390 745 y Ft(http://fsf.org/)390 964 y Fu(Ev)m(ery)m(one)g(is)g +(p)s(ermitted)f(to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies) +390 1074 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j +(it)f(is)f(not)h(allo)m(w)m(ed.)199 1207 y(0.)61 b(PREAMBLE)330 +1340 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g +(a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330 +1450 y(useful)29 b(do)s(cumen)m(t)h Fr(free)36 b Fu(in)29 +b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j +(the)e(e\013ectiv)m(e)j(freedom)330 1559 y(to)f(cop)m(y)g(and)f +(redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i +(either)f(commercially)h(or)e(non-)330 1669 y(commercially)-8 +b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f +(the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 1778 +y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g +(considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330 +1888 y(made)30 b(b)m(y)h(others.)330 2021 y(This)22 b(License)i(is)f(a) +h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5 +b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330 +2131 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g +(sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330 +2240 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed) +e(for)g(free)h(soft)m(w)m(are.)330 2373 y(W)-8 b(e)31 +b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h +(for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330 +2483 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:) +65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330 +2592 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w) +m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g +(to)330 2702 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g +(for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5 +b(ject)30 b(matter)i(or)330 2812 y(whether)f(it)h(is)f(published)f(as)i +(a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h +(License)g(principally)f(for)330 2921 y(w)m(orks)f(whose)h(purp)s(ose)d +(is)j(instruction)f(or)g(reference.)199 3054 y(1.)61 +b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3187 y(This)39 +b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i +(in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3297 +y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying) +h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330 +3407 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f +(a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d +(in)330 3516 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j +(conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330 +3626 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h +(or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g +(a)h(licensee,)i(and)330 3735 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40 +b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8 +b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330 +3845 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop) +m(yrigh)m(t)j(la)m(w.)330 3978 y(A)i(\\Mo)s(di\014ed)f(V)-8 +b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f +(con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4088 y(a)k(p)s(ortion)f +(of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s +(di\014cations)f(and/or)h(translated)g(in)m(to)330 4197 +y(another)31 b(language.)330 4330 y(A)26 b(\\Secondary)g(Section")h(is) +f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f +(the)g(Do)s(cumen)m(t)330 4440 y(that)c(deals)g(exclusiv)m(ely)h(with)e +(the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f +(Do)s(cumen)m(t)330 4549 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m +(erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con) +m(tains)h(nothing)f(that)330 4659 y(could)j(fall)h(directly)g(within)f +(that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42 +b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330 +4769 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section) +h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40 +b(The)330 4878 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e +(historical)i(connection)f(with)f(the)h(sub)5 b(ject)27 +b(or)g(with)g(related)330 4988 y(matters,)38 b(or)d(of)h(legal,)i +(commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s +(osition)f(regarding)330 5097 y(them.)330 5230 y(The)25 +b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g +(Sections)g(whose)f(titles)i(are)f(designated,)i(as)330 +5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 +b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s +(cumen)m(t)g(is)g(released)p eop end +%%Page: 168 174 +TeXDict begin 168 173 bop 150 -116 a Fu(App)s(endix)29 +b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 +b(168)330 299 y(under)26 b(this)i(License.)40 b(If)27 +b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h +(de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408 +y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 +b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero) +e(In)m(v)-5 b(arian)m(t)330 518 y(Sections.)39 b(If)25 +b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v) +-5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330 +669 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g(short) +g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8 +b(ron)m(t-Co)m(v)m(er)330 778 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m(er) +j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g(the)f +(Do)s(cumen)m(t)h(is)f(released)g(under)330 888 y(this)h(License.)40 +b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8 b(ext)26 +b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)g(Bac)m(k-Co)m +(v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 998 y(b)s(e)k(at)h(most)g(25)g(w)m +(ords.)330 1148 y(A)36 b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g +(the)f(Do)s(cumen)m(t)h(means)g(a)g(mac)m(hine-readable)h(cop)m(y)-8 +b(,)38 b(represen)m(ted)330 1258 y(in)d(a)h(format)g(whose)g(sp)s +(eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g +(public,)h(that)f(is)g(suitable)g(for)330 1367 y(revising)c(the)g(do)s +(cumen)m(t)f(straigh)m(tforw)m(ardly)i(with)e(generic)i(text)g(editors) +f(or)f(\(for)h(images)h(com-)330 1477 y(p)s(osed)23 b(of)h(pixels\))g +(generic)h(pain)m(t)f(programs)g(or)f(\(for)h(dra)m(wings\))g(some)g +(widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 1587 +y(editor,)k(and)f(that)g(is)g(suitable)h(for)f(input)f(to)i(text)g +(formatters)f(or)g(for)g(automatic)i(translation)f(to)330 +1696 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input) +g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g +(otherwise)330 1806 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g +(whose)f(markup,)i(or)e(absence)h(of)g(markup,)g(has)g(b)s(een)f +(arranged)g(to)330 1915 y(th)m(w)m(art)27 b(or)g(discourage)g +(subsequen)m(t)f(mo)s(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8 +b(ransparen)m(t.)39 b(An)27 b(image)330 2025 y(format)35 +b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g +(substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g +(is)330 2134 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i +(\\Opaque".)330 2285 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T) +-8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fm(asci)r(i)g +Fu(without)330 2395 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j +(LaT)1759 2414 y(E)1810 2395 y(X)e(input)f(format,)j +Ff(SGML)f Fu(or)f Ff(XML)g Fu(using)g(a)g(publicly)330 +2504 y(a)m(v)-5 b(ailable)42 b Ff(DTD)p Fu(,)h(and)c +(standard-conforming)g(simple)h Ff(HTML)p Fu(,)i(P)m(ostScript)e(or)f +Ff(PDF)h Fu(designed)330 2614 y(for)e(h)m(uman)f(mo)s(di\014cation.)65 +b(Examples)38 b(of)h(transparen)m(t)f(image)h(formats)g(include)f +Ff(PNG)p Fu(,)i Ff(X)n(CF)330 2724 y Fu(and)e Ff(JPG)p +Fu(.)64 b(Opaque)38 b(formats)h(include)f(proprietary)h(formats)f(that) +h(can)g(b)s(e)f(read)h(and)f(edited)330 2833 y(only)54 +b(b)m(y)f(proprietary)h(w)m(ord)f(pro)s(cessors,)59 b +Ff(SGML)54 b Fu(or)f Ff(XML)h Fu(for)g(whic)m(h)f(the)h +Ff(DTD)g Fu(and/or)330 2943 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g +(generally)i(a)m(v)-5 b(ailable,)71 b(and)60 b(the)h(mac)m +(hine-generated)j Ff(HTML)p Fu(,)330 3052 y(P)m(ostScript)31 +b(or)f Ff(PDF)h Fu(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s +(cessors)g(for)g(output)g(purp)s(oses)f(only)-8 b(.)330 +3203 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m(ted)f(b) +s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f(follo)m +(wing)330 3313 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g(legibly)-8 +b(,)30 b(the)e(material)h(this)e(License)i(requires)e(to)h(app)s(ear)f +(in)h(the)330 3422 y(title)g(page.)40 b(F)-8 b(or)28 +b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h(an)m(y)e +(title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 +3532 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s +(earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330 +3641 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330 +3792 y(The)j(\\publisher")g(means)h(an)m(y)f(p)s(erson)g(or)h(en)m(tit) +m(y)h(that)f(distributes)f(copies)i(of)e(the)h(Do)s(cumen)m(t)330 +3902 y(to)c(the)g(public.)330 4052 y(A)f(section)h(\\En)m(titled)g +(XYZ")f(means)f(a)h(named)g(subunit)e(of)h(the)h(Do)s(cumen)m(t)h +(whose)e(title)i(either)330 4162 y(is)d(precisely)g(XYZ)g(or)f(con)m +(tains)i(XYZ)f(in)f(paren)m(theses)i(follo)m(wing)g(text)g(that)f +(translates)h(XYZ)e(in)330 4271 y(another)e(language.)40 +b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g(sp)s(eci\014c)g(section)h(name)f +(men)m(tioned)h(b)s(elo)m(w,)g(suc)m(h)330 4381 y(as)i(\\Ac)m(kno)m +(wledgemen)m(ts",)33 b(\\Dedications",)e(\\Endorsemen)m(ts",)e(or)f +(\\History".\))42 b(T)-8 b(o)29 b(\\Preserv)m(e)330 4491 +y(the)34 b(Title")h(of)e(suc)m(h)h(a)g(section)g(when)f(y)m(ou)h(mo)s +(dify)e(the)i(Do)s(cumen)m(t)h(means)e(that)h(it)g(remains)g(a)330 +4600 y(section)e(\\En)m(titled)f(XYZ")g(according)g(to)g(this)g +(de\014nition.)330 4751 y(The)c(Do)s(cumen)m(t)i(ma)m(y)f(include)f(W) +-8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to)g(the)g(notice)h(whic)m +(h)e(states)i(that)330 4861 y(this)34 b(License)g(applies)g(to)h(the)f +(Do)s(cumen)m(t.)52 b(These)33 b(W)-8 b(arran)m(t)m(y)36 +b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m +(y)g(reference)h(in)g(this)f(License,)j(but)d(only)h(as)g(regards)f +(disclaiming)i(w)m(arran)m(ties:)330 5080 y(an)m(y)e(other)g +(implication)i(that)e(these)g(W)-8 b(arran)m(t)m(y)39 +b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 +5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199 +5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end +%%Page: 169 175 +TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29 +b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 +b(169)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h +(the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h +(or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42 +b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j +(and)42 b(the)h(license)330 518 y(notice)37 b(sa)m(ying)g(this)e +(License)i(applies)e(to)i(the)f(Do)s(cumen)m(t)g(are)g(repro)s(duced)e +(in)i(all)g(copies,)j(and)330 628 y(that)27 b(y)m(ou)g(add)f(no)h +(other)f(conditions)h(whatso)s(ev)m(er)h(to)f(those)g(of)g(this)f +(License.)40 b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330 +737 y(tec)m(hnical)35 b(measures)d(to)i(obstruct)f(or)g(con)m(trol)h +(the)f(reading)g(or)g(further)e(cop)m(ying)j(of)f(the)g(copies)330 +847 y(y)m(ou)25 b(mak)m(e)g(or)g(distribute.)38 b(Ho)m(w)m(ev)m(er,)28 +b(y)m(ou)d(ma)m(y)g(accept)h(comp)s(ensation)f(in)f(exc)m(hange)j(for)d +(copies.)330 956 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f +(n)m(um)m(b)s(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g +(the)f(conditions)330 1066 y(in)e(section)i(3.)330 1200 +y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g +(conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g +(publicly)330 1310 y(displa)m(y)31 b(copies.)199 1443 +y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1577 y(If)25 +b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g +(that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330 +1687 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f +(100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330 +1797 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i +(the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36 +b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 1906 y(these)j(Co)m(v)m +(er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41 +b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44 +b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330 +2016 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m) +m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f +(the)h(publisher)330 2125 y(of)k(these)h(copies.)53 b(The)34 +b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i +(with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2235 y(equally)e +(prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g +(other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330 +2345 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v) +m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the) +330 2454 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d +(b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330 +2564 y(resp)s(ects.)330 2698 y(If)32 b(the)h(required)f(texts)i(for)e +(either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g +(legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 2807 y(the)h(\014rst)f +(ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the) +g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330 +2917 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3051 +y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f +(the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330 +3160 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g +(T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque) +330 3270 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h +(Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d +(whic)m(h)330 3380 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e +(has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m +(ork)330 3489 y(proto)s(cols)40 b(a)f(complete)h(T)-8 +b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g +(added)f(material.)67 b(If)330 3599 y(y)m(ou)39 b(use)g(the)g(latter)h +(option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e +(steps,)k(when)d(y)m(ou)h(b)s(egin)330 3708 y(distribution)f(of)g +(Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38 +b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330 +3818 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s +(cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h +(time)330 3927 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i +(\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h +(of)f(that)330 4037 y(edition)31 b(to)g(the)g(public.)330 +4171 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g +(con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330 +4281 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s +(er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m +(vide)g(y)m(ou)330 4390 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g +(the)f(Do)s(cumen)m(t.)199 4524 y(4.)61 b(MODIFICA)-8 +b(TIONS)330 4658 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a) +h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under) +e(the)h(conditions)330 4768 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v) +m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f +(V)-8 b(ersion)22 b(under)d(precisely)330 4877 y(this)29 +b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30 +b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f +(licensing)330 4987 y(distribution)k(and)h(mo)s(di\014cation)g(of)h +(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s +(ossesses)f(a)i(cop)m(y)g(of)330 5096 y(it.)41 b(In)30 +b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s +(di\014ed)e(V)-8 b(ersion:)357 5230 y(A.)60 b(Use)33 +b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e +(an)m(y\))g(a)g(title)h(distinct)f(from)g(that)g(of)g(the)510 +5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m +(ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 +b(,)p eop end +%%Page: 170 176 +TeXDict begin 170 175 bop 150 -116 a Fu(App)s(endix)29 +b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 +b(170)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g +(the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) +h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original) +i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360 +545 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h +(one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c +(for)510 655 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g +(Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h +(\014v)m(e)510 765 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s +(cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g +(few)m(er)510 874 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g +(y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1011 y(C.)60 +b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g +(publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32 +b(as)f(the)510 1121 y(publisher.)355 1258 y(D.)61 b(Preserv)m(e)31 +b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.) +363 1395 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i +(notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g +(other)510 1504 y(cop)m(yrigh)m(t)g(notices.)365 1641 +y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g +(notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510 +1751 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8 +b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g +(form)510 1861 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353 +1998 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f +(full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e +(required)g(Co)m(v)m(er)510 2107 y(T)-8 b(exts)31 b(giv)m(en)g(in)f +(the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2244 +y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.) +392 2381 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g +(\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g +(item)510 2491 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d +(authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8 +b(ersion)510 2600 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45 +b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e +(the)g(Do)s(cu-)510 2710 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f +(title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s +(cumen)m(t)510 2819 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i +(then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8 +b(ersion)37 b(as)510 2929 y(stated)31 b(in)f(the)h(previous)f(sen)m +(tence.)378 3066 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s +(cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m +(t)h(for)g(public)e(access)j(to)510 3176 y(a)e(T)-8 b(ransparen)m(t)30 +b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net) +m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3285 y(the)g(Do)s(cumen)m +(t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45 +b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3395 +y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net) +m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h +(published)510 3504 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e +(the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher) +d(of)i(the)510 3614 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s +(ermission.)354 3751 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m +(titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k +(Preserv)m(e)c(the)g(Title)510 3861 y(of)j(the)f(section,)j(and)d +(preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone) +h(of)f(eac)m(h)i(of)f(the)510 3970 y(con)m(tributor)k(ac)m(kno)m +(wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368 +4107 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5 +b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f +(in)f(their)g(text)i(and)510 4217 y(in)f(their)g(titles.)58 +b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5 +b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510 +4326 y(section)c(titles.)341 4463 y(M.)61 b(Delete)33 +b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42 +b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510 +4573 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357 +4710 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f +(to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g +(in)510 4819 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31 +b(Section.)354 4956 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8 +b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g +(V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f +(app)s(endices)g(that)h(qualify)330 5230 y(as)28 b(Secondary)g +(Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h +(Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)330 5340 y(y)m(our)k(option)h +(designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5 +b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p +eop end +%%Page: 171 177 +TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29 +b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 +b(171)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 +b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 +b(ersion's)36 b(license)g(notice.)57 b(These)330 408 +y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g +(section)g(titles.)330 551 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section) +i(En)m(titled)f(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g +(nothing)g(but)330 661 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s +(di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30 +b(parties|for)g(example,)g(statemen)m(ts)i(of)330 770 +y(p)s(eer)27 b(review)g(or)g(that)h(the)f(text)i(has)d(b)s(een)h(appro) +m(v)m(ed)g(b)m(y)g(an)h(organization)h(as)e(the)h(authoritativ)m(e)330 +880 y(de\014nition)i(of)h(a)f(standard.)330 1022 y(Y)-8 +b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g(up)e(to)i(\014v)m(e)g(w)m +(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)30 b(T)-8 +b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1132 y(to)g(25)g(w)m(ords)e +(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i +(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s +(di\014ed)330 1241 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f +(F)-8 b(ron)m(t-Co)m(v)m(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m +(k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1351 +y(added)27 b(b)m(y)g(\(or)h(through)f(arrangemen)m(ts)h(made)g(b)m(y\)) +g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t) +g(already)330 1461 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g +(same)h(co)m(v)m(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m +(y)g(arrangemen)m(t)330 1570 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m +(y)i(y)m(ou)f(are)f(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g +(not)f(add)g(another;)j(but)330 1680 y(y)m(ou)c(ma)m(y)h(replace)g(the) +f(old)g(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e +(publisher)f(that)330 1789 y(added)e(the)g(old)h(one.)330 +1932 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s +(cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s +(ermission)330 2041 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g +(for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g +(Mo)s(di\014ed)330 2151 y(V)-8 b(ersion.)199 2293 y(5.)61 +b(COMBINING)31 b(DOCUMENTS)330 2436 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m +(bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h +(released)g(under)f(this)g(License,)330 2545 y(under)f(the)h(terms)g +(de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f +(v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2655 +y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5 +b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s +(cumen)m(ts,)330 2765 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g +(as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined) +g(w)m(ork)f(in)h(its)g(license)330 2874 y(notice,)32 +b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8 +b(arran)m(t)m(y)32 b(Disclaimers.)330 3017 y(The)e(com)m(bined)g(w)m +(ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,) +i(and)d(m)m(ultiple)i(iden)m(tical)330 3126 y(In)m(v)-5 +b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h +(single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m +(v)-5 b(arian)m(t)330 3236 y(Sections)27 b(with)g(the)g(same)g(name)g +(but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f +(eac)m(h)h(suc)m(h)f(section)330 3345 y(unique)33 b(b)m(y)h(adding)f +(at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g +(the)g(original)h(author)f(or)330 3455 y(publisher)23 +b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m +(um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330 +3565 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5 +b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h +(com)m(bined)330 3674 y(w)m(ork.)330 3817 y(In)41 b(the)g(com)m +(bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g +(En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330 +3926 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h +(En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330 +4036 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31 +b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47 +b(Y)-8 b(ou)330 4145 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m +(titled)f(\\Endorsemen)m(ts.")199 4288 y(6.)61 b(COLLECTIONS)28 +b(OF)i(DOCUMENTS)330 4430 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f +(collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g +(do)s(cumen)m(ts)f(released)330 4540 y(under)41 b(this)h(License,)k +(and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f +(the)h(v)-5 b(arious)330 4650 y(do)s(cumen)m(ts)42 b(with)g(a)h(single) +g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48 +b(pro)m(vided)42 b(that)i(y)m(ou)330 4759 y(follo)m(w)38 +b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g +(of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330 +4869 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32 +b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h +(collection,)i(and)d(distribute)g(it)h(individu-)330 +5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g +(a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330 +5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g +(other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 +5340 y(that)d(do)s(cumen)m(t.)p eop end +%%Page: 172 178 +TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29 +b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 +b(172)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h +(W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f +(its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep) +s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h +(on)f(a)g(v)m(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g +(is)h(called)330 661 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i +(resulting)e(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g +(the)330 770 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e +(b)s(ey)m(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39 +b(When)330 880 y(the)g(Do)s(cumen)m(t)g(is)f(included)g(in)g(an)g +(aggregate,)44 b(this)38 b(License)h(do)s(es)f(not)h(apply)f(to)h(the)g +(other)330 989 y(w)m(orks)30 b(in)g(the)h(aggregate)i(whic)m(h)d(are)h +(not)g(themselv)m(es)g(deriv)-5 b(ativ)m(e)32 b(w)m(orks)f(of)f(the)h +(Do)s(cumen)m(t.)330 1132 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8 +b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f +(these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1241 +y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f +(of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m +(er)330 1351 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m +(ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h +(aggregate,)j(or)d(the)330 1461 y(electronic)37 b(equiv)-5 +b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f +(in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330 +1570 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f +(brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1713 y(8.)61 +b(TRANSLA)-8 b(TION)330 1855 y(T)g(ranslation)41 b(is)f(considered)f(a) +i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e +(translations)330 1965 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h +(terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5 +b(arian)m(t)45 b(Sections)g(with)330 2074 y(translations)h(requires)f +(sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i +(holders,)i(but)c(y)m(ou)g(ma)m(y)330 2184 y(include)24 +b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25 +b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330 +2293 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44 +b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f +(License,)i(and)d(all)j(the)330 2403 y(license)42 b(notices)g(in)f(the) +h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42 +b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2513 +y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g +(License)h(and)e(the)h(original)h(v)m(ersions)g(of)330 +2622 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33 +b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f +(translation)i(and)330 2732 y(the)f(original)i(v)m(ersion)e(of)h(this)f +(License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m +(ersion)g(will)330 2841 y(prev)-5 b(ail.)330 2984 y(If)28 +b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m +(kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330 +3093 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m +(e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330 +3203 y(c)m(hanging)j(the)g(actual)h(title.)199 3345 y(9.)61 +b(TERMINA)-8 b(TION)330 3488 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8 +b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h +(Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3598 y(pro)m(vided)38 +b(under)f(this)i(License.)65 b(An)m(y)39 b(attempt)h(otherwise)f(to)g +(cop)m(y)-8 b(,)42 b(mo)s(dify)-8 b(,)40 b(sublicense,)h(or)330 +3707 y(distribute)30 b(it)h(is)f(v)m(oid,)h(and)f(will)h(automatically) +i(terminate)f(y)m(our)e(righ)m(ts)h(under)e(this)h(License.)330 +3850 y(Ho)m(w)m(ev)m(er,)35 b(if)e(y)m(ou)f(cease)i(all)f(violation)i +(of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f(a)h +(particular)330 3959 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h +(\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g +(cop)m(yrigh)m(t)h(holder)330 4069 y(explicitly)42 b(and)e(\014nally)h +(terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8 +b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 4178 y(holder)34 +b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h +(reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 4288 +y(after)31 b(the)f(cessation.)330 4430 y(Moreo)m(v)m(er,)k(y)m(our)d +(license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h +(reinstated)g(p)s(ermanen)m(tly)f(if)330 4540 y(the)d(cop)m(yrigh)m(t)h +(holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g +(reasonable)h(means,)f(this)g(is)g(the)330 4650 y(\014rst)f(time)i(y)m +(ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f +(License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330 +4759 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g +(violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h +(of)f(the)330 4869 y(notice.)330 5011 y(T)-8 b(ermination)28 +b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h +(terminate)h(the)e(licenses)i(of)f(parties)330 5121 y(who)38 +b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g +(under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e) +330 5230 y(b)s(een)25 b(terminated)i(and)e(not)h(p)s(ermanen)m(tly)g +(reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f +(the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f +(an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end +%%Page: 173 179 +TeXDict begin 173 178 bop 150 -116 a Fu(App)s(endix)29 +b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 +b(173)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE) +330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 +b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g +(the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34 +b(License)e(from)g(time)h(to)g(time.)46 b(Suc)m(h)31 +b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h(in)g(spirit)330 +653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m(y)h(di\013er)f +(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i(concerns.)330 +762 y(See)c Ft(http://www.gnu.org/copy)o(left)o(/)p Fu(.)330 +897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m(en)g(a)g +(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 b(If)29 +b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 b(that)h(a)g +(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g(License)h +(\\or)g(an)m(y)g(later)g(v)m(ersion")330 1116 y(applies)33 +b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f(follo)m(wing)i +(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330 +1225 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m +(ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g +(b)m(y)330 1335 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8 +b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s +(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 1445 +y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m +(ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the) +h(F)-8 b(ree)330 1554 y(Soft)m(w)m(are)33 b(F)-8 b(oundation.)46 +b(If)32 b(the)g(Do)s(cumen)m(t)g(sp)s(eci\014es)g(that)g(a)h(pro)m(xy)f +(can)g(decide)g(whic)m(h)g(future)330 1664 y(v)m(ersions)h(of)g(this)f +(License)h(can)g(b)s(e)f(used,)g(that)i(pro)m(xy's)e(public)g(statemen) +m(t)i(of)f(acceptance)i(of)e(a)330 1773 y(v)m(ersion)e(p)s(ermanen)m +(tly)f(authorizes)h(y)m(ou)g(to)g(c)m(ho)s(ose)g(that)g(v)m(ersion)g +(for)f(the)h(Do)s(cumen)m(t.)154 1908 y(11.)61 b(RELICENSING)330 +2042 y(\\Massiv)m(e)39 b(Multiauthor)f(Collab)s(oration)g(Site")h(\(or) +e(\\MMC)h(Site"\))h(means)e(an)m(y)h(W)-8 b(orld)37 b(Wide)330 +2152 y(W)-8 b(eb)36 b(serv)m(er)g(that)h(publishes)d(cop)m(yrigh)m +(table)k(w)m(orks)e(and)f(also)i(pro)m(vides)e(prominen)m(t)h +(facilities)330 2262 y(for)27 b(an)m(yb)s(o)s(dy)g(to)h(edit)g(those)g +(w)m(orks.)39 b(A)28 b(public)f(wiki)h(that)g(an)m(yb)s(o)s(dy)e(can)i +(edit)g(is)f(an)h(example)g(of)330 2371 y(suc)m(h)33 +b(a)h(serv)m(er.)51 b(A)34 b(\\Massiv)m(e)i(Multiauthor)e(Collab)s +(oration")h(\(or)f(\\MMC"\))h(con)m(tained)g(in)f(the)330 +2481 y(site)d(means)f(an)m(y)h(set)g(of)g(cop)m(yrigh)m(table)h(w)m +(orks)e(th)m(us)g(published)f(on)h(the)h(MMC)f(site.)330 +2615 y(\\CC-BY-SA")36 b(means)f(the)g(Creativ)m(e)i(Commons)e(A)m +(ttribution-Share)g(Alik)m(e)i(3.0)f(license)g(pub-)330 +2725 y(lished)27 b(b)m(y)f(Creativ)m(e)j(Commons)d(Corp)s(oration,)h(a) +g(not-for-pro\014t)g(corp)s(oration)h(with)e(a)h(principal)330 +2834 y(place)g(of)f(business)e(in)i(San)f(F)-8 b(rancisco,)29 +b(California,)f(as)e(w)m(ell)h(as)f(future)f(cop)m(yleft)i(v)m(ersions) +f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g +(organization.)330 3078 y(\\Incorp)s(orate")h(means)e(to)h(publish)e +(or)i(republish)e(a)i(Do)s(cumen)m(t,)g(in)g(whole)g(or)f(in)g(part,)h +(as)g(part)330 3188 y(of)g(another)f(Do)s(cumen)m(t.)330 +3323 y(An)c(MMC)g(is)h(\\eligible)h(for)e(relicensing")h(if)g(it)f(is)h +(licensed)f(under)f(this)h(License,)i(and)e(if)g(all)h(w)m(orks)330 +3432 y(that)43 b(w)m(ere)f(\014rst)f(published)f(under)h(this)h +(License)g(somewhere)g(other)g(than)g(this)g(MMC,)h(and)330 +3542 y(subsequen)m(tly)34 b(incorp)s(orated)h(in)f(whole)h(or)g(in)f +(part)h(in)m(to)h(the)f(MMC,)g(\(1\))h(had)e(no)h(co)m(v)m(er)h(texts) +330 3651 y(or)30 b(in)m(v)-5 b(arian)m(t)32 b(sections,)g(and)d(\(2\))j +(w)m(ere)f(th)m(us)f(incorp)s(orated)g(prior)g(to)h(No)m(v)m(em)m(b)s +(er)g(1,)g(2008.)330 3786 y(The)40 b(op)s(erator)h(of)g(an)f(MMC)h +(Site)g(ma)m(y)g(republish)e(an)h(MMC)h(con)m(tained)h(in)e(the)h(site) +g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g +(time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) +330 4005 y(eligible)h(for)e(relicensing.)p eop end +%%Page: 174 180 +TeXDict begin 174 179 bop 150 -116 a Fu(App)s(endix)29 +b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 +b(174)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f +(for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fu(T)-8 b(o)35 +b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e) +i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150 +568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh) +m(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468 +680 y Fe(Copyright)42 b(\(C\))79 b Fd(year)g(your)40 +b(name)p Fe(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h +(distribute)g(and/or)g(modify)f(this)g(document)468 854 +y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i +(License,)f(Version)g(1.3)468 941 y(or)f(any)g(later)g(version)h +(published)h(by)d(the)h(Free)g(Software)h(Foundation;)468 +1029 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g +(and)f(no)f(Back-Cover)468 1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f +(license)i(is)f(included)h(in)f(the)g(section)g(entitled)h(``GNU)468 +1203 y(Free)g(Documentation)h(License''.)275 1337 y Fu(If)d(y)m(ou)h +(ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8 +b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k +(T)-8 b(exts,)43 b(replace)e(the)150 1447 y(\\with)6 +b(.)22 b(.)g(.)12 b(T)-8 b(exts.")41 b(line)31 b(with)f(this:)547 +1559 y Fe(with)40 b(the)g(Invariant)h(Sections)g(being)g +Fd(list)f(their)g(titles)p Fe(,)h(with)547 1646 y(the)f(Front-Cover)i +(Texts)e(being)g Fd(list)p Fe(,)h(and)f(with)g(the)g(Back-Cover)h +(Texts)547 1733 y(being)f Fd(list)p Fe(.)275 1868 y Fu(If)34 +b(y)m(ou)i(ha)m(v)m(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f +(Co)m(v)m(er)h(T)-8 b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g +(of)g(the)150 1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g +(alternativ)m(es)i(to)e(suit)f(the)h(situation.)275 2112 +y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g +(examples)g(of)f(program)f(co)s(de,)j(w)m(e)e(recommend)g(releasing)150 +2222 y(these)44 b(examples)f(in)g(parallel)h(under)e(y)m(our)h(c)m +(hoice)i(of)e(free)g(soft)m(w)m(are)h(license,)k(suc)m(h)43 +b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s +(ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p +eop end +%%Page: 175 181 +TeXDict begin 175 180 bop 3614 -116 a Fu(175)150 299 +y Fp(App)t(endix)52 b(D)81 b(Indexes)150 639 y Fs(D.1)68 +b(Index)45 b(of)g(Shell)g(Builtin)g(Commands)146 806 +y(.)150 923 y Fe(.)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)33 b Fb(44)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(44)146 +1523 y Fs([)150 1640 y Fe([)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)33 b Fb(48)146 1881 y Fs(A)150 1998 y Fe(alias)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(51)146 2239 y +Fs(B)150 2356 y Fe(bg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)29 +b Fb(108)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(51)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 +b Fb(45)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 +b Fb(53)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15 +b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)20 b Fb(53)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)31 b Fb(45)150 3151 y Fe(command)22 +b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)35 b Fb(53)150 3238 y Fe(compgen)18 +b Fc(:)d(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)33 b Fb(139)150 3326 y Fe(complete)16 +b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)31 b Fb(140)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 +b Fb(143)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b +Fb(45)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13 +b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)35 b Fb(53)150 3946 y Fe(dirs)11 b Fc(:)j(:)f(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)25 b Fb(97)150 4033 y Fe(disown)d Fc(:)13 +b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)36 b Fb(110)146 4274 y Fs(E)150 4391 y Fe(echo)11 +b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(55)150 4478 +y Fe(enable)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(56)150 +4566 y Fe(eval)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(45)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(46)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(46)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 +b Fb(46)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)29 b Fb(147)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)29 b Fb(108)2021 871 y Fs(G)2025 988 y Fe(getopts)22 +b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)35 b Fb(46)2021 1250 y Fs(H)2025 +1369 y Fe(hash)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(47)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(56)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b +Fb(147)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(108)2021 2186 y Fs(K)2025 +2303 y Fe(kill)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 +b Fb(109)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)28 b Fb(56)2025 2760 y Fe(local)9 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(57)2025 2848 y Fe(logout)6 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(57)2021 3110 y Fs(M)2025 +3227 y Fe(mapfile)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(57)2021 +3489 y Fs(P)2025 3608 y Fe(popd)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(98)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(58)2025 3784 y Fe(pushd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 +b Fb(98)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 +b Fb(47)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)26 b Fb(58)2025 4339 y Fe(readarray)15 b +Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)30 b Fb(60)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 +b Fb(47)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(48)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)28 b Fb(62)2025 4972 y Fe(shift)9 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(48)2025 5060 y Fe(shopt)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(66)2025 5148 +y Fe(source)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(60)2025 +5235 y Fe(suspend)d Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(110)p eop end +%%Page: 176 182 +TeXDict begin 176 181 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(176)146 294 y Fs(T)150 410 y Fe(test)11 +b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(48)150 497 +y Fe(times)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)150 +584 y Fe(trap)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(50)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(60)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 +b Fb(61)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15 +b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)20 b Fb(61)150 1206 y Fe(umask)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(51)150 1293 y +Fe(unalias)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(62)150 1380 y +Fe(unset)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(51)2021 +294 y Fs(W)2025 433 y Fe(wait)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 +b Fb(109)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h +(W)-11 b(ords)146 2704 y(!)150 2820 y Fe(!)21 b Fc(:)13 +b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(8)146 +3056 y Fs([)150 3172 y Fe([[)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)31 b Fb(13)146 3414 y Fs(])150 3530 y Fe(]])16 b +Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(13)146 +3770 y Fa({)150 3886 y Fe({)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)33 b Fb(15)146 4125 y Fa(})150 4241 y Fe(})19 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b +Fb(15)146 4475 y Fs(C)150 4591 y Fe(case)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)25 b Fb(11)146 4825 y Fs(D)150 4941 y Fe(do)16 +b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(10)150 +5028 y Fe(done)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(10)146 5261 y Fs(E)150 5377 y Fe(elif)11 b Fc(:)j(:)f(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)25 b Fb(11)150 5465 y Fe(else)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)25 b Fb(11)150 5552 y Fe(esac)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)25 b Fb(11)2021 2703 y Fs(F)2025 2836 y Fe(fi)16 +b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2025 +2928 y Fe(for)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 +b Fb(10)2025 3015 y Fe(function)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b +Fb(18)2021 3359 y Fs(I)2025 3491 y Fe(if)16 b Fc(:)e(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)31 b Fb(11)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2021 3921 y Fs(S)2025 +4048 y Fe(select)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b +Fb(12)2021 4392 y Fs(T)2025 4524 y Fe(then)11 b Fc(:)j(:)f(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)26 b Fb(11)2025 4611 y Fe(time)13 b Fc(:)h(:)f(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)28 b Fb(8)2021 4954 y Fs(U)2025 5081 y +Fe(until)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(10)2021 +5425 y Fs(W)2025 5552 y Fe(while)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 +b Fb(10)p eop end +%%Page: 177 183 +TeXDict begin 177 182 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(177)150 299 y Fs(D.3)68 b(P)l(arameter)47 +b(and)d(V)-11 b(ariable)46 b(Index)146 955 y(!)150 1073 +y Fe(!)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 +b Fb(22)146 1327 y Fs(#)150 1445 y Fe(#)19 b Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(22)146 +1701 y Fs($)150 1820 y Fe($)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)33 b Fb(22)150 1909 y Fe($!)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)31 b Fb(22)150 1997 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)31 b Fb(22)150 2085 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(22)150 2173 y Fe($*)16 +b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(22)150 +2261 y Fe($-)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 +b Fb(22)150 2350 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +31 b Fb(22)150 2438 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)31 b Fb(22)150 2526 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)31 b Fb(73)150 2613 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)31 b Fb(22)146 2876 y Fs(*)150 2994 y Fe(*)19 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b +Fb(22)146 3248 y Fs({)150 3366 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)33 b Fb(22)146 3620 y Fs(?)150 3738 +y Fe(?)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 +b Fb(22)146 3992 y Fs(@)150 4110 y Fe(@)19 b Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(22)p +156 4364 41 6 v 150 4482 a Fe(_)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)33 b Fb(73)146 4736 y Fs(0)150 4854 y +Fe(0)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 +b Fb(22)146 5108 y Fs(A)150 5226 y Fe(auto_resume)8 b +Fc(:)16 b(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +23 b Fb(110)2021 954 y Fs(B)2025 1074 y Fe(BASH)11 b +Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(74)2025 1163 +y Fe(BASH_ALIASES)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)22 b Fb(74)2025 1251 y Fe(BASH_ARGC)15 +b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)30 b Fb(74)2025 1340 y Fe(BASH_ARGV)15 b Fc(:)g(:)f(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 +b Fb(74)2025 1429 y Fe(BASH_ARGV0)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(75)2025 +1517 y Fe(BASH_CMDS)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(75)2025 1606 +y Fe(BASH_COMMAND)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)22 b Fb(75)2025 1695 y Fe(BASH_COMPAT)10 +b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)25 b Fb(75)2025 1783 y Fe(BASH_ENV)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 +b Fb(75)2025 1872 y Fe(BASH_EXECUTION_STRING)24 b Fc(:)13 +b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)34 b Fb(75)2025 1960 y Fe(BASH_LINENO)10 +b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)25 b Fb(75)2025 2049 y Fe(BASH_LOADABLES_PATH)7 b +Fc(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(76)2025 +2138 y Fe(BASH_REMATCH)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(76)2025 2226 y Fe(BASH_SOURCE)10 +b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)25 b Fb(76)2025 2315 y Fe(BASH_SUBSHELL)g Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(76)2025 2403 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(76)2025 2492 +y Fe(BASH_VERSION)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)22 b Fb(76)2025 2581 y Fe(BASH_XTRACEFD)j +Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(76)2025 2669 y Fe(BASHOPTS)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b +Fb(74)2025 2758 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 +b Fb(74)2025 2847 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(115)2025 +2935 y Fe(bind-tty-special-chars)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 +b Fb(115)2025 3022 y Fe(blink-matching-paren)24 b Fc(:)13 +b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)34 b Fb(115)2021 3297 y Fs(C)2025 +3417 y Fe(CDPATH)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b +Fb(73)2025 3506 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(77)2025 +3595 y Fe(colored-completion-prefix)7 b Fc(:)18 b(:)13 +b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 +b Fb(115)2025 3683 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(115)2025 3772 y Fe(COLUMNS)22 +b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)35 b Fb(77)2025 3860 y Fe(comment-begin)23 +b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 +b Fb(115)2025 3949 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(77)2025 +4038 y Fe(COMP_KEY)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(77)2025 4126 +y Fe(COMP_LINE)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(77)2025 4215 y Fe(COMP_POINT)13 +b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)27 b Fb(77)2025 4303 y Fe(COMP_TYPE)15 b Fc(:)g(:)f(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 +b Fb(77)2025 4392 y Fe(COMP_WORDBREAKS)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(77)2025 4481 y Fe(COMP_WORDS)13 +b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)27 b Fb(77)2025 4569 y Fe(completion-display-width)9 +b Fc(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)24 b Fb(115)2025 4658 y Fe(completion-ignore-case)14 +b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)29 b Fb(116)2025 4747 y Fe(completion-map-case)d +Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(116)2025 4835 +y Fe(completion-prefix-display-leng)q(th)29 b Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(116)2025 4924 +y Fe(completion-query-items)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 +b Fb(116)2025 5012 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b +Fb(78)2025 5101 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(116)2025 5188 +y Fe(COPROC)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(78)p +eop end +%%Page: 178 184 +TeXDict begin 178 183 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(178)146 294 y Fs(D)150 416 y Fe(DIRSTACK)18 +b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)32 b Fb(78)150 503 y Fe(disable-completion)7 +b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(116)146 +791 y Fs(E)150 913 y Fe(echo-control-characters)12 b +Fc(:)18 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)26 b Fb(116)150 1002 y Fe(editing-mode)f +Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 +b Fb(116)150 1092 y Fe(emacs-mode-string)10 b Fc(:)17 +b(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(117)150 1181 +y Fe(EMACS)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(78)150 +1270 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 +b Fb(117)150 1359 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(117)150 1449 y Fe(ENV)14 +b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(78)150 +1538 y Fe(EPOCHREALTIME)d Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)37 b Fb(78)150 1627 y Fe(EPOCHSECONDS)8 +b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +22 b Fb(78)150 1716 y Fe(EUID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(78)150 1806 y Fe(EXECIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(78)150 +1893 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)37 b Fb(117)146 2180 y Fs(F)150 2303 +y Fe(FCEDIT)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(79)150 +2392 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(79)150 +2481 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)150 2568 +y Fe(FUNCNEST)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)146 2844 y +Fs(G)150 2967 y Fe(GLOBIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(79)150 +3054 y Fe(GROUPS)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b +Fb(79)146 3330 y Fs(H)150 3452 y Fe(histchars)15 b Fc(:)h(:)d(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 +b Fb(79)150 3542 y Fe(HISTCMD)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 +b Fb(79)150 3631 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(80)150 +3720 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(80)150 3809 +y Fe(HISTFILESIZE)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)22 b Fb(80)150 3899 y Fe(HISTIGNORE)13 +b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)27 b Fb(80)150 3988 y Fe(history-preserve-point)14 +b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)29 b Fb(117)150 4077 y Fe(history-size)c +Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 +b Fb(117)150 4166 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b +Fb(80)150 4256 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 4345 y Fe(HOME)11 +b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(73)150 4434 +y Fe(horizontal-scroll-mode)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(117)150 +4523 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)150 4613 +y Fe(HOSTNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)150 4700 y +Fe(HOSTTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)2021 294 y Fs(I)2025 +420 y Fe(IFS)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 +b Fb(73)2025 510 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(81)2025 +600 y Fe(input-meta)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(118)2025 691 y Fe(INPUTRC)c +Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)35 b Fb(81)2025 781 y Fe(INSIDE_EMACS)8 +b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +22 b Fb(81)2025 868 y Fe(isearch-terminators)k Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(118)2021 1167 y Fs(K)2025 +1290 y Fe(keymap)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(118)2021 +1601 y Fs(L)2025 1727 y Fe(LANG)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(81)2025 1817 y Fe(LC_ALL)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(81)2025 1907 y Fe(LC_COLLATE)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(81)2025 +1998 y Fe(LC_CTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(81)2025 2088 +y Fe(LC_MESSAGES)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)34 b Fb(7,)26 b(81)2025 2178 y Fe(LC_NUMERIC)13 +b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)27 b Fb(82)2025 2269 y Fe(LC_TIME)22 b Fc(:)13 +b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)35 b Fb(82)2025 2359 y Fe(LINENO)6 b Fc(:)14 +b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 2446 y Fe(LINES)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(82)2021 2746 +y Fs(M)2025 2872 y Fe(MACHTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b +Fb(82)2025 2962 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(73)2025 3052 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(82)2025 +3143 y Fe(MAILPATH)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(73)2025 3233 +y Fe(MAPFILE)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(82)2025 3323 +y Fe(mark-modified-lines)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(118)2025 3414 y Fe(mark-symlinked-directories)27 +b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +36 b Fb(119)2025 3504 y Fe(match-hidden-files)7 b Fc(:)17 +b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(119)2025 3594 +y Fe(menu-complete-display-prefix)17 b Fc(:)h(:)13 b(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(119)2025 3681 y Fe(meta-flag)13 +b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)28 b Fb(118)2021 3992 y Fs(O)2025 4118 y Fe(OLDPWD)6 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4208 y Fe(OPTARG)6 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(73)2025 4299 y Fe(OPTERR)6 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4389 y Fe(OPTIND)6 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(73)2025 4480 y Fe(OSTYPE)6 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4567 y Fe(output-meta)8 +b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +23 b Fb(119)p eop end +%%Page: 179 185 +TeXDict begin 179 184 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(179)146 294 y Fs(P)150 410 y Fe(page-completions) +13 b Fc(:)j(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(119)150 +497 y Fe(PATH)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(73)150 584 y Fe(PIPESTATUS)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(82)150 +671 y Fe(POSIXLY_CORRECT)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)32 b Fb(82)150 758 y Fe(PPID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)25 b Fb(82)150 846 y Fe(PROMPT_COMMAND)e Fc(:)13 +b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 +b Fb(82)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(83)150 1020 y Fe(PS0)14 +b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(83)150 +1107 y Fe(PS1)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 +b Fb(73)150 1194 y Fe(PS2)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 +b Fb(73)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 +b Fb(83)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 +b Fb(83)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 +b Fb(83)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15 +b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)20 b Fb(83)150 1892 y Fe(READLINE_LINE)25 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 +b Fb(83)150 1979 y Fe(READLINE_MARK)25 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(83)150 2066 y +Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)34 b Fb(83)150 2153 y Fe(REPLY)9 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150 2240 y Fe(revert-all-at-newline) +17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(119)146 2473 y Fs(S)150 +2589 y Fe(SECONDS)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(83)150 +2676 y Fe(SHELL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 +b Fb(83)150 2763 y Fe(SHELLOPTS)15 b Fc(:)h(:)d(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 b Fb(83)150 +2851 y Fe(SHLVL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 +b Fb(84)150 2938 y Fe(show-all-if-ambiguous)17 b Fc(:)h(:)13 +b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)32 b Fb(119)150 3025 y Fe(show-all-if-unmodified)14 +b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)29 b Fb(119)150 3112 y Fe(show-mode-in-prompt)d +Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(120)2025 260 y +Fe(skip-completed-text)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(120)2025 347 y Fe(SRANDOM)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 +b Fb(84)2021 669 y Fs(T)2025 798 y Fe(TEXTDOMAIN)15 b +Fc(:)g(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)30 b Fb(7)2025 889 y Fe(TEXTDOMAINDIR)7 b Fc(:)16 +b(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 +b Fb(7)2025 981 y Fe(TIMEFORMAT)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(84)2025 +1072 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 +b Fb(84)2025 1159 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(85)2021 1481 y Fs(U)2025 1606 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)28 b Fb(85)2021 1928 y Fs(V)2025 2057 +y Fe(vi-cmd-mode-string)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 +b Fb(120)2025 2148 y Fe(vi-ins-mode-string)7 b Fc(:)17 +b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(120)2025 2235 +y Fe(visible-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)35 b Fb(120)150 3751 y Fs(D.4)68 b(F)-11 b(unction)44 +b(Index)146 4237 y(A)150 4354 y Fe(abort)27 b(\(C-g\))15 +b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 +b Fb(135)150 4442 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12 +b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)27 +b Fb(128)150 4529 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14 +b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(137)146 4784 y Fs(B)150 +4902 y Fe(backward-char)29 b(\(C-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)26 b Fb(127)150 4989 y Fe(backward-delete-char)k(\(Rubout\))22 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 +b Fb(130)150 5077 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e +Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b +Fb(131)150 5165 y Fe(backward-kill-word)30 b(\(M-DEL\))11 +b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +26 b Fb(131)150 5252 y Fe(backward-word)j(\(M-b\))12 +b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(127)150 5340 +y Fe(beginning-of-history)k(\(M-<\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(128)2025 +4206 y Fe(beginning-of-line)j(\(C-a\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 +b Fb(127)2025 4294 y Fe(bracketed-paste-begin)c(\(\))16 +b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)31 b Fb(130)2021 4589 y Fs(C)2025 4713 y Fe +(call-last-kbd-macro)f(\(C-x)c(e\))15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(134)2025 4802 +y Fe(capitalize-word)f(\(M-c\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 +b Fb(131)2025 4892 y Fe(character-search)29 b(\(C-]\))22 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)36 b Fb(135)2025 4982 y Fe +(character-search-backward)31 b(\(M-C-]\))10 b Fc(:)15 +b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(135)2025 5071 +y Fe(clear-display)j(\(M-C-l\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 +b Fb(128)2025 5161 y Fe(clear-screen)28 b(\(C-l\))14 +b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(128)2025 +5250 y Fe(complete)e(\(TAB\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)22 b Fb(133)2025 5340 y Fe(complete-command)29 +b(\(M-!\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(134)p eop end +%%Page: 180 186 +TeXDict begin 180 185 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(180)150 264 y Fe(complete-filename)29 +b(\(M-/\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(133)150 353 y Fe(complete-hostname) +c(\(M-@\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(134)150 442 y Fe +(complete-into-braces)d(\(M-{\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(134)150 531 +y Fe(complete-username)j(\(M-~\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 +b Fb(133)150 621 y Fe(complete-variable)c(\(M-$\))20 +b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)33 b Fb(134)150 710 y Fe(copy-backward-word)d(\(\))7 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(132)150 799 y Fe(copy-forward-word) +29 b(\(\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(132)150 +887 y Fe(copy-region-as-kill)30 b(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 +b Fb(132)146 1175 y Fs(D)150 1298 y Fe(dabbrev-expand)29 +b(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 +b Fb(134)150 1387 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)32 b Fb(130)150 1476 y Fe(delete-char-or-list)e +(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(133)150 1566 y Fe +(delete-horizontal-space)31 b(\(\))11 b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(132)150 +1655 y Fe(digit-argument)j(\()p Fd(M-0)p Fe(,)e Fd(M-1)p +Fe(,)f(...)g Fd(M--)p Fe(\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:) +26 b Fb(132)150 1744 y Fe(display-shell-version)k(\(C-x)d(C-v\))c +Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b +Fb(136)150 1825 y Fe(do-lowercase-version)30 b(\(M-A,)227 +1912 y(M-B,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)25 b Fb(135)150 2001 y Fe(downcase-word)k(\(M-l\)) +12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(131)150 2090 +y Fe(dump-functions)j(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +32 b Fb(136)150 2180 y Fe(dump-macros)c(\(\))7 b Fc(:)14 +b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 +b Fb(136)150 2269 y Fe(dump-variables)29 b(\(\))17 b +Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(136)150 +2356 y Fe(dynamic-complete-history)f(\(M-TAB\))13 b Fc(:)i(:)e(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(134)146 2645 y Fs(E)150 +2767 y Fe(edit-and-execute-command)k(\(C-x)c(C-e\))14 +b Fc(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(137)150 2857 +y Fe(end-kbd-macro)g(\(C-x)d(\)\))13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 +b Fb(134)150 2946 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)35 b Fb(130)150 3035 y Fe(end-of-history)29 b(\(M->\))9 +b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(128)150 3124 y +Fe(end-of-line)k(\(C-e\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 +b Fb(127)150 3212 y Fe(exchange-point-and-mark)f(\(C-x)26 +b(C-x\))17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)32 +b Fb(135)146 3500 y Fs(F)150 3623 y Fe(forward-backward-delete-char)g +(\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 +b Fb(130)150 3712 y Fe(forward-char)e(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)29 b Fb(127)150 3801 y Fe(forward-search-history)i +(\(C-s\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)38 b Fb(128)150 3889 y Fe(forward-word)28 b(\(M-f\))14 +b Fc(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(127)146 4167 +y Fs(G)150 4289 y Fe(glob-complete-word)h(\(M-g\))16 +b Fc(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)31 b Fb(136)150 4379 y Fe(glob-expand-word)e(\(C-x)e(*\))c +Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)38 b Fb(136)150 4466 y Fe(glob-list-expansions)30 +b(\(C-x)d(g\))13 b Fc(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)27 b Fb(136)2021 294 y Fs(H)2025 422 y Fe +(history-and-alias-expand-line)32 b(\(\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)28 b Fb(137)2025 513 y Fe(history-expand-line)i +(\(M-^\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)28 b Fb(136)2025 604 y Fe(history-search-backward)j +(\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)26 b Fb(129)2025 695 y Fe(history-search-forward)k(\(\))13 +b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)28 b Fb(129)2025 786 y Fe(history-substring-search-backw)q(ard)k +(\(\))20 b Fc(:)13 b(:)g(:)g(:)g(:)35 b Fb(129)2025 874 +y Fe(history-substring-search-forwa)q(rd)d(\(\))22 b +Fc(:)13 b(:)h(:)f(:)g(:)g(:)37 b Fb(129)2021 1200 y Fs(I)2025 +1329 y Fe(insert-comment)29 b(\(M-#\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +24 b Fb(136)2025 1420 y Fe(insert-completions)29 b(\(M-*\))16 +b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)31 b Fb(133)2025 1507 y Fe(insert-last-argument)f(\(M-.)c(or)g +(M-_\))7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 +b Fb(137)2021 1834 y Fs(K)2025 1962 y Fe(kill-line)27 +b(\(C-k\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(131)2025 2053 y Fe(kill-region)28 b(\(\))7 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 +b Fb(132)2025 2144 y Fe(kill-whole-line)29 b(\(\))14 +b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(131)2025 +2231 y Fe(kill-word)e(\(M-d\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)37 b Fb(131)2021 2548 y Fs(M)2025 2676 y +Fe(magic-space)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)22 b Fb(137)2025 2767 y Fe(menu-complete)28 +b(\(\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 +b Fb(133)2025 2854 y Fe(menu-complete-backward)c(\(\))13 +b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)28 b Fb(133)2021 3181 y Fs(N)2025 3309 y Fe(next-history)g(\(C-n\)) +14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(128)2025 +3401 y Fe(next-screen-line)g(\(\))12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +27 b Fb(128)2025 3472 y Fe(non-incremental-forward-)2102 +3560 y(search-history)h(\(M-n\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(129)2025 3647 y Fe(non-incremental-reverse-)2102 +3734 y(search-history)28 b(\(M-p\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(128)2021 4070 y Fs(O)2025 4198 y Fe(operate-and-get-next)30 +b(\(C-o\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)26 b Fb(129)2025 4285 y Fe(overwrite-mode)j(\(\))17 +b Fc(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(131)p +eop end +%%Page: 181 187 +TeXDict begin 181 186 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(181)146 294 y Fs(P)150 411 y Fe +(possible-command-completions)32 b(\(C-x)26 b(!\))9 b +Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(134)150 499 y Fe +(possible-completions)30 b(\(M-?\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(133)150 +586 y Fe(possible-filename-completions)32 b(\(C-x)27 +b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(133)150 674 +y Fe(possible-hostname-completions)32 b(\(C-x)27 b(@\))7 +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(134)150 762 y Fe +(possible-username-completions)32 b(\(C-x)27 b(~\))7 +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(133)150 849 y Fe +(possible-variable-completions)32 b(\(C-x)27 b($\))7 +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(134)150 937 y Fe(prefix-meta)28 +b(\(ESC\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 +b Fb(135)150 1025 y Fe(previous-history)d(\(C-p\))23 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)36 b Fb(128)150 1112 y Fe(previous-screen-line)30 +b(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(127)150 1199 y Fe +(print-last-kbd-macro)d(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(134)146 +1453 y Fs(Q)150 1570 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)22 b Fb(130)146 1824 y Fs(R)150 1941 y Fe(re-read-init-file)29 +b(\(C-x)e(C-r\))15 b Fc(:)f(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)30 b Fb(135)150 2029 y Fe(redraw-current-line)g(\(\))22 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)36 b Fb(128)150 2117 y Fe(reverse-search-history)31 +b(\(C-r\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)38 b Fb(128)150 2204 y Fe(revert-line)28 b(\(M-r\))17 +b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(135)146 +2447 y Fs(S)150 2565 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f +(...\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 +b Fb(130)150 2652 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15 +b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 +b Fb(135)150 2740 y Fe(shell-backward-kill-word)31 b(\(\))8 +b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +23 b Fb(131)150 2828 y Fe(shell-backward-word)30 b(\(M-C-b\))8 +b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +23 b Fb(127)150 2915 y Fe(shell-expand-line)29 b(\(M-C-e\))13 +b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)28 b Fb(136)150 3003 y Fe(shell-forward-word)i(\(M-C-f\))11 +b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +26 b Fb(127)150 3091 y Fe(shell-kill-word)j(\(M-C-d\))20 +b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)33 b Fb(131)150 3178 y Fe(shell-transpose-words)d +(\(M-C-t\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)35 b Fb(132)2025 264 y Fe(skip-csi-sequence)29 b(\(\))9 +b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(135)2025 351 y +Fe(start-kbd-macro)29 b(\(C-x)d(\(\))8 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 +b Fb(134)2021 819 y Fs(T)2025 970 y Fe(tilde-expand)28 +b(\(M-&\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 +b Fb(135)2025 1068 y Fe(transpose-chars)g(\(C-t\))7 b +Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(130)2025 1155 y Fe(transpose-words) +29 b(\(M-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(130)2021 +1634 y Fs(U)2025 1784 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10 +b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(135)2025 1883 y Fe +(universal-argument)k(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 +b Fb(132)2025 1981 y Fe(unix-filename-rubout)30 b(\(\))19 +b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)34 b Fb(132)2025 2080 y Fe(unix-line-discard)29 +b(\(C-u\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(131)2025 2178 y Fe +(unix-word-rubout)29 b(\(C-w\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 +b Fb(132)2025 2265 y Fe(upcase-word)28 b(\(M-u\))17 b +Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(131)2021 +2744 y Fs(Y)2025 2894 y Fe(yank)26 b(\(C-y\))18 b Fc(:)c(:)f(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 +b Fb(132)2025 2993 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))8 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)22 b Fb(129)2025 3091 y Fe(yank-nth-arg)28 b(\(M-C-y\))9 +b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(129)2025 3178 +y Fe(yank-pop)j(\(M-y\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)22 b Fb(132)150 3927 y Fs(D.5)68 b(Concept)45 +b(Index)146 4520 y(A)150 4646 y Fb(alias)27 b(expansion)7 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 +b Fb(94)150 4736 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13 +b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(93)150 4826 y(arithmetic)26 +b(expansion)11 b Fc(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 +b Fb(31)150 4917 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(93)150 5004 +y(arra)n(ys)h Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(95)2021 +4520 y Fs(B)2025 4644 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(107)2025 +4733 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)26 b Fb(152)2025 4823 y(Bash)g(installation)9 +b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 +b Fb(152)2025 4913 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35 b +Fb(5)2025 5002 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(23)2025 5089 y(builtin)15 +b Fc(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(3)p eop end +%%Page: 182 188 +TeXDict begin 182 187 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(182)146 294 y Fs(C)150 415 y Fb(command)26 +b(editing)19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34 +b Fb(112)150 503 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)26 b Fb(39)150 592 y(command)g(expansion)c +Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(39)150 +681 y(command)26 b(history)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)33 b Fb(146)150 770 y(command)26 b(searc)n(h)16 +b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 +b Fb(39)150 859 y(command)c(substitution)21 b Fc(:)13 +b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(31)150 947 y(command)26 +b(timing)13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)28 b Fb(8)150 1036 y(commands,)e(comp)r(ound)c Fc(:)13 +b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(10)150 1125 y(commands,)26 +b(conditional)10 b Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 +b Fb(11)150 1214 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)29 b Fb(15)150 1302 y(commands,)d(lists)12 +b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27 +b Fb(9)150 1391 y(commands,)f(lo)r(oping)e Fc(:)13 b(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)37 b Fb(10)150 1480 y(commands,)26 +b(pip)r(elines)18 b Fc(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33 +b Fb(8)150 1569 y(commands,)26 b(shell)c Fc(:)13 b(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(8)150 1657 y(commands,)26 +b(simple)e Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 +b Fb(8)150 1746 y(commen)n(ts,)26 b(shell)13 b Fc(:)i(:)e(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(7)150 +1835 y(Compatibilit)n(y)f(Lev)n(el)10 b Fc(:)j(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)25 b Fb(104)150 1924 y(Compatibilit)n(y)i(Mo)r(de)22 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(104)150 +2013 y(completion)27 b(builtins)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)36 b Fb(139)150 2101 y(con\014guration)22 b Fc(:)13 +b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 +b Fb(152)150 2190 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15 +b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 +b Fb(3)150 2277 y(copro)r(cess)18 b Fc(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)32 b +Fb(15)146 2553 y Fs(D)150 2672 y Fb(directory)26 b(stac)n(k)11 +b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(97)146 2948 y Fs(E)150 3069 y Fb(editing)g(command)g(lines)17 +b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(112)150 3158 y(en)n(vironmen)n(t)18 +b Fc(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)32 b Fb(41)150 3247 y(ev)l(aluation,)26 b(arithmetic)12 +b Fc(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(93)150 3335 +y(ev)n(en)n(t)f(designators)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)34 b Fb(149)150 3424 y(execution)26 b(en)n(vironmen)n(t)17 +b Fc(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(40)150 3513 +y(exit)25 b(status)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(41)150 3602 y(expansion)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)24 b Fb(22)150 3691 y(expansion,)i(arithmetic)18 +b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(31)150 3779 +y(expansion,)26 b(brace)16 b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)30 b Fb(23)150 3868 y(expansion,)c(\014lename)18 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(33)150 +3957 y(expansion,)26 b(parameter)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)34 b Fb(25)150 4046 y(expansion,)26 b(pathname)7 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(33)150 +4134 y(expansion,)k(tilde)14 b Fc(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)28 b Fb(24)150 4223 y(expressions,)f(arithmetic)13 +b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(93)150 4310 y(expressions,)g +(conditional)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(91)2021 +294 y Fs(F)2025 415 y Fb(\014eld)21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)36 b Fb(3)2025 504 y(\014lename)21 b Fc(:)14 b(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 +b Fb(3)2025 593 y(\014lename)26 b(expansion)11 b Fc(:)i(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(33)2025 682 y(foreground)9 +b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)24 b Fb(107)2025 769 y(functions,)i(shell)9 b +Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 +b Fb(18)2021 1048 y Fs(H)2025 1170 y Fb(history)h(builtins)20 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35 +b Fb(146)2025 1259 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13 +b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 +b Fb(149)2025 1347 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(148)2025 1436 y(history)c(list)9 +b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)24 b Fb(146)2025 1524 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use) +19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(145)2021 +1803 y Fs(I)2025 1924 y Fb(iden)n(ti\014er)12 b Fc(:)g(:)h(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)27 +b Fb(3)2025 2013 y(initialization)h(\014le,)e(readline)17 +b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)32 b Fb(114)2025 2102 y(installation)21 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)34 b Fb(152)2025 2191 y(in)n(teraction,)26 b(readline)7 +b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(111)2025 +2280 y(in)n(teractiv)n(e)k(shell)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)34 b Fb(88,)27 b(89)2025 2367 y(in)n(ternationalization)22 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 +b Fb(7)2021 2637 y Fs(J)2025 2758 y Fb(job)23 b Fc(:)13 +b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(3)2025 2845 +y(job)26 b(con)n(trol)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(107)2021 3124 y Fs(K)2025 +3246 y Fb(kill)f(ring)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(113)2025 +3333 y(killing)k(text)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(113)2021 3612 +y Fs(L)2025 3733 y Fb(lo)r(calization)i Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 +b Fb(7)2025 3821 y(login)26 b(shell)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 +b Fb(88)2021 4100 y Fs(M)2025 4221 y Fb(matc)n(hing,)26 +b(pattern)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 +b Fb(33)2025 4308 y(metac)n(haracter)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(3)p +eop end +%%Page: 183 189 +TeXDict begin 183 188 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(183)146 294 y Fs(N)150 410 y Fb(name)19 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(3)150 497 +y(nativ)n(e)25 b(languages)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)34 b Fb(7)150 584 y(notation,)27 +b(readline)13 b Fc(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 +b Fb(112)146 828 y Fs(O)150 944 y Fb(op)r(erator,)g(shell)c +Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +37 b Fb(3)146 1187 y Fs(P)150 1303 y Fb(parameter)26 +b(expansion)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 +b Fb(25)150 1390 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(20)150 +1478 y(parameters,)27 b(p)r(ositional)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)21 b Fb(21)150 1565 y(parameters,)27 b(sp)r(ecial)7 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)21 +b Fb(21)150 1652 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)32 b Fb(33)150 1739 y(pattern)25 b(matc)n(hing)c +Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 +b Fb(33)150 1827 y(pip)r(eline)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 +b Fb(8)150 1914 y(POSIX)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 +b Fb(3)150 2001 y(POSIX)25 b(Mo)r(de)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(101)150 2088 +y(pro)r(cess)e(group)15 b Fc(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(3)150 2176 y(pro)r(cess)d(group)e +(ID)11 b Fc(:)i(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(3)150 2263 y(pro)r(cess)h(substitution)11 b Fc(:)h(:)i(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)25 b Fb(32)150 2350 y(programmable)i(completion)8 +b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)23 b Fb(137)150 2437 y(prompting)17 +b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)31 b Fb(98)146 2681 y Fs(Q)150 2797 y Fb(quoting)16 +b Fc(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(6)150 2884 y(quoting,)26 +b(ANSI)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)34 b Fb(6)146 3127 y Fs(R)150 3243 y Fb(Readline,)26 +b(ho)n(w)g(to)g(use)11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(110)150 3331 y(redirection)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(35)150 +3418 y(reserv)n(ed)f(w)n(ord)13 b Fc(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(3)150 3505 +y(reserv)n(ed)e(w)n(ords)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(8)150 3592 y(restricted)c(shell)12 +b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 +b Fb(100)150 3679 y(return)e(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(4)2021 +294 y Fs(S)2025 430 y Fb(shell)h(arithmetic)17 b Fc(:)d(:)f(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(93)2025 524 +y(shell)26 b(function)18 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fb(18)2025 617 y(shell)26 +b(script)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(42)2025 711 y(shell)h(v)l(ariable)7 +b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)22 b Fb(20)2025 805 y(shell,)k(in)n(teractiv)n(e)21 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 +b Fb(89)2025 899 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 +b Fb(4)2025 992 y(signal)f(handling)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(42)2025 1086 +y(sp)r(ecial)27 b(builtin)16 b Fc(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(72)2025 1180 y(startup)f(\014les)10 +b Fc(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)25 b Fb(88)2025 1267 y(susp)r(ending)g(jobs)10 +b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 +b Fb(107)2021 1647 y Fs(T)2025 1783 y Fb(tilde)h(expansion)7 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 +b Fb(24)2025 1877 y(tok)n(en)17 b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 +b Fb(4)2025 1964 y(translation,)27 b(nativ)n(e)e(languages)c +Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)34 b Fb(7)2021 2344 y Fs(V)2025 2480 y +Fb(v)l(ariable,)26 b(shell)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(20)2025 2567 y(v)l(ariables,)f +(readline)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22 +b Fb(115)2021 2947 y Fs(W)2025 3083 y Fb(w)n(ord)10 b +Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(4)2025 3170 +y(w)n(ord)h(splitting)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(32)2021 3550 y Fs(Y)2025 +3679 y Fb(y)n(anking)h(text)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(113)p eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/bash-5.1/doc/bashref.texi b/bash-5.1/doc/bashref.texi new file mode 100644 index 0000000..d02151e --- /dev/null +++ b/bash-5.1/doc/bashref.texi @@ -0,0 +1,9583 @@ +\input texinfo.tex @c -*- texinfo -*- +@c %**start of header +@setfilename bashref.info +@settitle Bash Reference Manual + +@include version.texi +@c %**end of header + +@copying +This text is a brief description of the features that are present in +the Bash shell (version @value{VERSION}, @value{UPDATED}). + +This is Edition @value{EDITION}, last updated @value{UPDATED}, +of @cite{The GNU Bash Reference Manual}, +for @code{Bash}, Version @value{VERSION}. + +Copyright @copyright{} 1988--2020 Free Software Foundation, Inc. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +A copy of the license is included in the section entitled +``GNU Free Documentation License''. +@end quotation +@end copying + +@defcodeindex bt +@defcodeindex rw +@set BashFeatures + +@dircategory Basics +@direntry +* Bash: (bash). The GNU Bourne-Again SHell. +@end direntry + +@finalout + +@titlepage +@title Bash Reference Manual +@subtitle Reference Documentation for Bash +@subtitle Edition @value{EDITION}, for @code{Bash} Version @value{VERSION}. +@subtitle @value{UPDATED-MONTH} +@author Chet Ramey, Case Western Reserve University +@author Brian Fox, Free Software Foundation + +@page +@vskip 0pt plus 1filll +@insertcopying + +@end titlepage + +@contents + +@ifnottex +@node Top, Introduction, (dir), (dir) +@top Bash Features + +This text is a brief description of the features that are present in +the Bash shell (version @value{VERSION}, @value{UPDATED}). +The Bash home page is @url{http://www.gnu.org/software/bash/}. + +This is Edition @value{EDITION}, last updated @value{UPDATED}, +of @cite{The GNU Bash Reference Manual}, +for @code{Bash}, Version @value{VERSION}. + +Bash contains features that appear in other popular shells, and some +features that only appear in Bash. Some of the shells that Bash has +borrowed concepts from are the Bourne Shell (@file{sh}), the Korn Shell +(@file{ksh}), and the C-shell (@file{csh} and its successor, +@file{tcsh}). The following menu breaks the features up into +categories, noting which features were inspired by other shells and +which are specific to Bash. + +This manual is meant as a brief introduction to features found in +Bash. The Bash manual page should be used as the definitive +reference on shell behavior. + +@menu +* Introduction:: An introduction to the shell. +* Definitions:: Some definitions used in the rest of this + manual. +* Basic Shell Features:: The shell "building blocks". +* Shell Builtin Commands:: Commands that are a part of the shell. +* Shell Variables:: Variables used or set by Bash. +* Bash Features:: Features found only in Bash. +* Job Control:: What job control is and how Bash allows you + to use it. +* Command Line Editing:: Chapter describing the command line + editing features. +* Using History Interactively:: Command History Expansion +* Installing Bash:: How to build and install Bash on your system. +* Reporting Bugs:: How to report bugs in Bash. +* Major Differences From The Bourne Shell:: A terse list of the differences + between Bash and historical + versions of /bin/sh. +* GNU Free Documentation License:: Copying and sharing this documentation. +* Indexes:: Various indexes for this manual. +@end menu +@end ifnottex + +@node Introduction +@chapter Introduction +@menu +* What is Bash?:: A short description of Bash. +* What is a shell?:: A brief introduction to shells. +@end menu + +@node What is Bash? +@section What is Bash? + +Bash is the shell, or command language interpreter, +for the @sc{gnu} operating system. +The name is an acronym for the @samp{Bourne-Again SHell}, +a pun on Stephen Bourne, the author of the direct ancestor of +the current Unix shell @code{sh}, +which appeared in the Seventh Edition Bell Labs Research version +of Unix. + +Bash is largely compatible with @code{sh} and incorporates useful +features from the Korn shell @code{ksh} and the C shell @code{csh}. +It is intended to be a conformant implementation of the @sc{ieee} +@sc{posix} Shell and Tools portion of the @sc{ieee} @sc{posix} +specification (@sc{ieee} Standard 1003.1). +It offers functional improvements over @code{sh} for both interactive and +programming use. + +While the @sc{gnu} operating system provides other shells, including +a version of @code{csh}, Bash is the default shell. +Like other @sc{gnu} software, Bash is quite portable. It currently runs +on nearly every version of Unix and a few other operating systems @minus{} +independently-supported ports exist for @sc{ms-dos}, @sc{os/2}, +and Windows platforms. + +@node What is a shell? +@section What is a shell? + +At its base, a shell is simply a macro processor that executes +commands. The term macro processor means functionality where text +and symbols are expanded to create larger expressions. + +A Unix shell is both a command interpreter and a programming +language. As a command interpreter, the shell provides the user +interface to the rich set of @sc{gnu} utilities. The programming +language features allow these utilities to be combined. +Files containing commands can be created, and become +commands themselves. These new commands have the same status as +system commands in directories such as @file{/bin}, allowing users +or groups to establish custom environments to automate their common +tasks. + +Shells may be used interactively or non-interactively. In +interactive mode, they accept input typed from the keyboard. +When executing non-interactively, shells execute commands read +from a file. + +A shell allows execution of @sc{gnu} commands, both synchronously and +asynchronously. +The shell waits for synchronous commands to complete before accepting +more input; asynchronous commands continue to execute in parallel +with the shell while it reads and executes additional commands. +The @dfn{redirection} constructs permit +fine-grained control of the input and output of those commands. +Moreover, the shell allows control over the contents of commands' +environments. + +Shells also provide a small set of built-in +commands (@dfn{builtins}) implementing functionality impossible +or inconvenient to obtain via separate utilities. +For example, @code{cd}, @code{break}, @code{continue}, and +@code{exec} cannot be implemented outside of the shell because +they directly manipulate the shell itself. +The @code{history}, @code{getopts}, @code{kill}, or @code{pwd} +builtins, among others, could be implemented in separate utilities, +but they are more convenient to use as builtin commands. +All of the shell builtins are described in +subsequent sections. + +While executing commands is essential, most of the power (and +complexity) of shells is due to their embedded programming +languages. Like any high-level language, the shell provides +variables, flow control constructs, quoting, and functions. + +Shells offer features geared specifically for +interactive use rather than to augment the programming language. +These interactive features include job control, command line +editing, command history and aliases. Each of these features is +described in this manual. + +@node Definitions +@chapter Definitions +These definitions are used throughout the remainder of this manual. + +@table @code + +@item POSIX +@cindex POSIX +A family of open system standards based on Unix. Bash +is primarily concerned with the Shell and Utilities portion of the +@sc{posix} 1003.1 standard. + +@item blank +A space or tab character. + +@item builtin +@cindex builtin +A command that is implemented internally by the shell itself, rather +than by an executable program somewhere in the file system. + +@item control operator +@cindex control operator +A @code{token} that performs a control function. It is a @code{newline} +or one of the following: +@samp{||}, @samp{&&}, @samp{&}, @samp{;}, @samp{;;}, @samp{;&}, @samp{;;&}, +@samp{|}, @samp{|&}, @samp{(}, or @samp{)}. + +@item exit status +@cindex exit status +The value returned by a command to its caller. The value is restricted +to eight bits, so the maximum value is 255. + +@item field +@cindex field +A unit of text that is the result of one of the shell expansions. After +expansion, when executing a command, the resulting fields are used as +the command name and arguments. + +@item filename +@cindex filename +A string of characters used to identify a file. + +@item job +@cindex job +A set of processes comprising a pipeline, and any processes descended +from it, that are all in the same process group. + +@item job control +@cindex job control +A mechanism by which users can selectively stop (suspend) and restart +(resume) execution of processes. + +@item metacharacter +@cindex metacharacter +A character that, when unquoted, separates words. A metacharacter is +a @code{space}, @code{tab}, @code{newline}, or one of the following characters: +@samp{|}, @samp{&}, @samp{;}, @samp{(}, @samp{)}, @samp{<}, or +@samp{>}. + +@item name +@cindex name +@cindex identifier +A @code{word} consisting solely of letters, numbers, and underscores, +and beginning with a letter or underscore. @code{Name}s are used as +shell variable and function names. +Also referred to as an @code{identifier}. + +@item operator +@cindex operator, shell +A @code{control operator} or a @code{redirection operator}. +@xref{Redirections}, for a list of redirection operators. +Operators contain at least one unquoted @code{metacharacter}. + +@item process group +@cindex process group +A collection of related processes each having the same process +group @sc{id}. + +@item process group ID +@cindex process group ID +A unique identifier that represents a @code{process group} +during its lifetime. + +@item reserved word +@cindex reserved word +A @code{word} that has a special meaning to the shell. Most reserved +words introduce shell flow control constructs, such as @code{for} and +@code{while}. + +@item return status +@cindex return status +A synonym for @code{exit status}. + +@item signal +@cindex signal +A mechanism by which a process may be notified by the kernel +of an event occurring in the system. + +@item special builtin +@cindex special builtin +A shell builtin command that has been classified as special by the +@sc{posix} standard. + +@item token +@cindex token +A sequence of characters considered a single unit by the shell. +It is either a @code{word} or an @code{operator}. + +@item word +@cindex word +A sequence of characters treated as a unit by the shell. +Words may not include unquoted @code{metacharacters}. +@end table + +@node Basic Shell Features +@chapter Basic Shell Features +@cindex Bourne shell + +Bash is an acronym for @samp{Bourne-Again SHell}. +The Bourne shell is +the traditional Unix shell originally written by Stephen Bourne. +All of the Bourne shell builtin commands are available in Bash, +The rules for evaluation and quoting are taken from the @sc{posix} +specification for the `standard' Unix shell. + +This chapter briefly summarizes the shell's `building blocks': +commands, control structures, shell functions, shell @i{parameters}, +shell expansions, +@i{redirections}, which are a way to direct input and output from +and to named files, and how the shell executes commands. + +@menu +* Shell Syntax:: What your input means to the shell. +* Shell Commands:: The types of commands you can use. +* Shell Functions:: Grouping commands by name. +* Shell Parameters:: How the shell stores values. +* Shell Expansions:: How Bash expands parameters and the various + expansions available. +* Redirections:: A way to control where input and output go. +* Executing Commands:: What happens when you run a command. +* Shell Scripts:: Executing files of shell commands. +@end menu + +@node Shell Syntax +@section Shell Syntax +@menu +* Shell Operation:: The basic operation of the shell. +* Quoting:: How to remove the special meaning from characters. +* Comments:: How to specify comments. +@end menu + +When the shell reads input, it proceeds through a +sequence of operations. If the input indicates the beginning of a +comment, the shell ignores the comment symbol (@samp{#}), and the rest +of that line. + +Otherwise, roughly speaking, the shell reads its input and +divides the input into words and operators, employing the quoting rules +to select which meanings to assign various words and characters. + +The shell then parses these tokens into commands and other constructs, +removes the special meaning of certain words or characters, expands +others, redirects input and output as needed, executes the specified +command, waits for the command's exit status, and makes that exit status +available for further inspection or processing. + +@node Shell Operation +@subsection Shell Operation + +The following is a brief description of the shell's operation when it +reads and executes a command. Basically, the shell does the +following: + +@enumerate +@item +Reads its input from a file (@pxref{Shell Scripts}), from a string +supplied as an argument to the @option{-c} invocation option +(@pxref{Invoking Bash}), or from the user's terminal. + +@item +Breaks the input into words and operators, obeying the quoting rules +described in @ref{Quoting}. These tokens are separated by +@code{metacharacters}. Alias expansion is performed by this step +(@pxref{Aliases}). + +@item +Parses the tokens into simple and compound commands +(@pxref{Shell Commands}). + +@item +Performs the various shell expansions (@pxref{Shell Expansions}), breaking +the expanded tokens into lists of filenames (@pxref{Filename Expansion}) +and commands and arguments. + +@item +Performs any necessary redirections (@pxref{Redirections}) and removes +the redirection operators and their operands from the argument list. + +@item +Executes the command (@pxref{Executing Commands}). + +@item +Optionally waits for the command to complete and collects its exit +status (@pxref{Exit Status}). + +@end enumerate + +@node Quoting +@subsection Quoting +@cindex quoting +@menu +* Escape Character:: How to remove the special meaning from a single + character. +* Single Quotes:: How to inhibit all interpretation of a sequence + of characters. +* Double Quotes:: How to suppress most of the interpretation of a + sequence of characters. +* ANSI-C Quoting:: How to expand ANSI-C sequences in quoted strings. +* Locale Translation:: How to translate strings into different languages. +@end menu + +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 shell metacharacters (@pxref{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 +(@pxref{History Interaction}), the +@var{history expansion} character, usually @samp{!}, must be quoted +to prevent history expansion. @xref{Bash History Facilities}, for +more details concerning history expansion. + +There are three quoting mechanisms: the +@var{escape character}, single quotes, and double quotes. + +@node Escape Character +@subsubsection Escape Character +A non-quoted backslash @samp{\} is the Bash escape character. +It preserves the literal value of the next character that follows, +with the exception of @code{newline}. If a @code{\newline} pair +appears, and the backslash itself is not quoted, the @code{\newline} +is treated as a line continuation (that is, it is removed from +the input stream and effectively ignored). + +@node Single Quotes +@subsubsection Single Quotes + +Enclosing characters in single quotes (@samp{'}) 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. + +@node Double Quotes +@subsubsection Double Quotes + +Enclosing characters in double quotes (@samp{"}) preserves the literal value +of all characters within the quotes, with the exception of +@samp{$}, @samp{`}, @samp{\}, +and, when history expansion is enabled, @samp{!}. +When the shell is in +@sc{posix} mode (@pxref{Bash POSIX Mode}), +the @samp{!} has no special meaning +within double quotes, even when history expansion is enabled. +The characters @samp{$} and @samp{`} +retain their special meaning within double quotes (@pxref{Shell Expansions}). +The backslash retains its special meaning only when followed by one of +the following characters: +@samp{$}, @samp{`}, @samp{"}, @samp{\}, or @code{newline}. +Within double quotes, backslashes that are followed by one of these +characters are removed. Backslashes preceding characters without a +special meaning are left unmodified. +A double quote may be quoted within double quotes by preceding it with +a backslash. +If enabled, history expansion will be performed unless an @samp{!} +appearing in double quotes is escaped using a backslash. +The backslash preceding the @samp{!} is not removed. + +The special parameters @samp{*} and @samp{@@} have special meaning +when in double quotes (@pxref{Shell Parameter Expansion}). + +@node ANSI-C Quoting +@subsubsection ANSI-C Quoting +@cindex quoting, ANSI + +Words of the form @code{$'@var{string}'} are treated specially. The +word expands to @var{string}, with backslash-escaped characters replaced +as specified by the ANSI C standard. Backslash escape sequences, if +present, are decoded as follows: + +@table @code +@item \a +alert (bell) +@item \b +backspace +@item \e +@itemx \E +an escape character (not ANSI C) +@item \f +form feed +@item \n +newline +@item \r +carriage return +@item \t +horizontal tab +@item \v +vertical tab +@item \\ +backslash +@item \' +single quote +@item \" +double quote +@item \? +question mark +@item \@var{nnn} +the eight-bit character whose value is the octal value @var{nnn} +(one to three octal digits) +@item \x@var{HH} +the eight-bit character whose value is the hexadecimal value @var{HH} +(one or two hex digits) +@item \u@var{HHHH} +the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +@var{HHHH} (one to four hex digits) +@item \U@var{HHHHHHHH} +the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +@var{HHHHHHHH} (one to eight hex digits) +@item \c@var{x} +a control-@var{x} character +@end table + +@noindent +The expanded result is single-quoted, as if the dollar sign had not +been present. + +@node Locale Translation +@subsubsection Locale-Specific Translation +@cindex localization +@cindex internationalization +@cindex native languages +@cindex translation, native languages + +A double-quoted string preceded by a dollar sign (@samp{$}) +will cause the string to be translated according to the current locale. +The @var{gettext} infrastructure performs the message catalog lookup and +translation, using the @code{LC_MESSAGES} and @code{TEXTDOMAIN} shell +variables, as explained below. See the gettext documentation for additional +details. +If the current locale is @code{C} or @code{POSIX}, +or if there are no translations available, +the dollar sign is ignored. +If the string is translated and replaced, the replacement is +double-quoted. + +@vindex LC_MESSAGES +@vindex TEXTDOMAIN +@vindex TEXTDOMAINDIR +Some systems use the message catalog selected by the @env{LC_MESSAGES} +shell variable. Others create the name of the message catalog from the +value of the @env{TEXTDOMAIN} shell variable, possibly adding a +suffix of @samp{.mo}. If you use the @env{TEXTDOMAIN} variable, you +may need to set the @env{TEXTDOMAINDIR} variable to the location of +the message catalog files. Still others use both variables in this +fashion: +@env{TEXTDOMAINDIR}/@env{LC_MESSAGES}/LC_MESSAGES/@env{TEXTDOMAIN}.mo. + +@node Comments +@subsection Comments +@cindex comments, shell + +In a non-interactive shell, or an interactive shell in which the +@code{interactive_comments} option to the @code{shopt} +builtin is enabled (@pxref{The Shopt Builtin}), +a word beginning with @samp{#} +causes that word and all remaining characters on that line to +be ignored. An interactive shell without the @code{interactive_comments} +option enabled does not allow comments. The @code{interactive_comments} +option is on by default in interactive shells. +@xref{Interactive Shells}, for a description of what makes +a shell interactive. + +@node Shell Commands +@section Shell Commands +@cindex commands, shell + +A simple shell command such as @code{echo a b c} consists of the command +itself followed by arguments, separated by spaces. + +More complex shell commands are composed of simple commands arranged together +in a variety of ways: in a pipeline in which the output of one command +becomes the input of a second, in a loop or conditional construct, or in +some other grouping. + +@menu +* Reserved Words:: Words that have special meaning to the shell. +* Simple Commands:: The most common type of command. +* Pipelines:: Connecting the input and output of several + commands. +* Lists:: How to execute commands sequentially. +* Compound Commands:: Shell commands for control flow. +* Coprocesses:: Two-way communication between commands. +* GNU Parallel:: Running commands in parallel. +@end menu + +@node Reserved Words +@subsection Reserved Words +@cindex reserved words + +Reserved words are words that have special meaning to the shell. +They are used to begin and end the shell's compound commands. + +The following words are recognized as reserved when unquoted and +the first word of a command (see below for exceptions): + +@multitable @columnfractions .1 .1 .1 .1 .12 .1 +@item @code{if} @tab @code{then} @tab @code{elif} +@tab @code{else} @tab @code{fi} @tab @code{time} +@item @code{for} @tab @code{in} @tab @code{until} +@tab @code{while} @tab @code{do} @tab @code{done} +@item @code{case} @tab @code{esac} @tab @code{coproc} +@tab @code{select} @tab @code{function} +@item @code{@{} @tab @code{@}} @tab @code{[[} @tab @code{]]} @tab @code{!} +@end multitable + +@noindent +@code{in} is recognized as a reserved word if it is the third word of a +@code{case} or @code{select} command. +@code{in} and @code{do} are recognized as reserved +words if they are the third word in a @code{for} command. + +@node Simple Commands +@subsection Simple Commands +@cindex commands, simple + +A simple command is the kind of command encountered most often. +It's just a sequence of words separated by @code{blank}s, terminated +by one of the shell's control operators (@pxref{Definitions}). The +first word generally specifies a command to be executed, with the +rest of the words being that command's arguments. + +The return status (@pxref{Exit Status}) of a simple command is +its exit status as provided +by the @sc{posix} 1003.1 @code{waitpid} function, or 128+@var{n} if +the command was terminated by signal @var{n}. + +@node Pipelines +@subsection Pipelines +@cindex pipeline +@cindex commands, pipelines + +A @code{pipeline} is a sequence of one or more commands separated by +one of the control operators @samp{|} or @samp{|&}. + +@rwindex time +@rwindex ! +@cindex command timing +The format for a pipeline is +@example +[time [-p]] [!] @var{command1} [ | or |& @var{command2} ] @dots{} +@end example + +@noindent +The output of each command in the pipeline is connected via a pipe +to the input of the next command. +That is, each command reads the previous command's output. This +connection is performed before any redirections specified by the +command. + +If @samp{|&} is used, @var{command1}'s standard error, in addition to +its standard output, is connected to +@var{command2}'s standard input through the pipe; +it is shorthand for @code{2>&1 |}. +This implicit redirection of the standard error to the standard output is +performed after any redirections specified by the command. + +The reserved word @code{time} causes timing statistics +to be printed for the pipeline once it finishes. +The statistics currently consist of elapsed (wall-clock) time and +user and system time consumed by the command's execution. +The @option{-p} option changes the output format to that specified +by @sc{posix}. +When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}), +it does not recognize @code{time} as a reserved word if the next +token begins with a @samp{-}. +The @env{TIMEFORMAT} variable may be set to a format string that +specifies how the timing information should be displayed. +@xref{Bash Variables}, for a description of the available formats. +The use of @code{time} as a reserved word permits the timing of +shell builtins, shell functions, and pipelines. An external +@code{time} command cannot time these easily. + +When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}), @code{time} +may be followed by a newline. In this case, the shell displays the +total user and system time consumed by the shell and its children. +The @env{TIMEFORMAT} variable may be used to specify the format of +the time information. + +If the pipeline is not executed asynchronously (@pxref{Lists}), the +shell waits for all commands in the pipeline to complete. + +Each command in a pipeline is executed in its own subshell, which is a +separate process (@pxref{Command Execution Environment}). +If the @code{lastpipe} option is enabled using the @code{shopt} builtin +(@pxref{The Shopt Builtin}), +the last element of a pipeline may be run by the shell process. + +The exit +status of a pipeline is the exit status of the last command in the +pipeline, unless the @code{pipefail} option is enabled +(@pxref{The Set Builtin}). +If @code{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 @samp{!} precedes the pipeline, the +exit status 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. + +@node Lists +@subsection Lists of Commands +@cindex commands, lists + +A @code{list} is a sequence of one or more pipelines separated by one +of the operators @samp{;}, @samp{&}, @samp{&&}, or @samp{||}, +and optionally terminated by one of @samp{;}, @samp{&}, or a +@code{newline}. + +Of these list operators, @samp{&&} and @samp{||} +have equal precedence, followed by @samp{;} and @samp{&}, +which have equal precedence. + +A sequence of one or more newlines may appear in a @code{list} +to delimit commands, equivalent to a semicolon. + +If a command is terminated by the control operator @samp{&}, +the shell executes the command asynchronously in a subshell. +This is known as executing the command in the @var{background}, +and these are referred to as @var{asynchronous} commands. +The shell does not wait for the command to finish, and the return +status is 0 (true). +When job control is not active (@pxref{Job Control}), +the standard input for asynchronous commands, in the absence of any +explicit redirections, is redirected from @code{/dev/null}. + +Commands separated by a @samp{;} 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. + +@sc{and} and @sc{or} lists are sequences of one or more pipelines +separated by the control operators @samp{&&} and @samp{||}, +respectively. @sc{and} and @sc{or} lists are executed with left +associativity. + +An @sc{and} list has the form +@example +@var{command1} && @var{command2} +@end example + +@noindent +@var{command2} is executed if, and only if, @var{command1} +returns an exit status of zero (success). + +An @sc{or} list has the form +@example +@var{command1} || @var{command2} +@end example + +@noindent +@var{command2} is executed if, and only if, @var{command1} +returns a non-zero exit status. + +The return status of +@sc{and} and @sc{or} lists is the exit status of the last command +executed in the list. + +@node Compound Commands +@subsection Compound Commands +@cindex commands, compound + +@menu +* Looping Constructs:: Shell commands for iterative action. +* Conditional Constructs:: Shell commands for conditional execution. +* Command Grouping:: Ways to group commands. +@end menu + +Compound commands are the shell programming language constructs. +Each construct begins with a reserved word or control operator and is +terminated by a corresponding reserved word or operator. +Any redirections (@pxref{Redirections}) associated with a compound command +apply to all commands within that compound command unless explicitly overridden. + +In most cases a list of commands in a compound command's description may be +separated from the rest of the command by one or more newlines, and may be +followed by a newline in place of a semicolon. + +Bash provides looping constructs, conditional commands, and mechanisms +to group commands and execute them as a unit. + +@node Looping Constructs +@subsubsection Looping Constructs +@cindex commands, looping + +Bash supports the following looping constructs. + +Note that wherever a @samp{;} appears in the description of a +command's syntax, it may be replaced with one or more newlines. + +@table @code +@item until +@rwindex until +@rwindex do +@rwindex done +The syntax of the @code{until} command is: + +@example +until @var{test-commands}; do @var{consequent-commands}; done +@end example + +Execute @var{consequent-commands} as long as +@var{test-commands} has an exit status which is not zero. +The return status is the exit status of the last command executed +in @var{consequent-commands}, or zero if none was executed. + +@item while +@rwindex while +The syntax of the @code{while} command is: + +@example +while @var{test-commands}; do @var{consequent-commands}; done +@end example + +Execute @var{consequent-commands} as long as +@var{test-commands} has an exit status of zero. +The return status is the exit status of the last command executed +in @var{consequent-commands}, or zero if none was executed. + +@item for +@rwindex for +The syntax of the @code{for} command is: + +@example +for @var{name} [ [in [@var{words} @dots{}] ] ; ] do @var{commands}; done +@end example + +Expand @var{words} (@pxref{Shell Expansions}), and execute @var{commands} +once for each member +in the resultant list, with @var{name} bound to the current member. +If @samp{in @var{words}} is not present, the @code{for} command +executes the @var{commands} once for each positional parameter that is +set, as if @samp{in "$@@"} had been specified +(@pxref{Special Parameters}). + +The return status is the exit status of the last command that executes. +If there are no items in the expansion of @var{words}, no commands are +executed, and the return status is zero. + +An alternate form of the @code{for} command is also supported: + +@example +for (( @var{expr1} ; @var{expr2} ; @var{expr3} )) ; do @var{commands} ; done +@end example + +First, the arithmetic expression @var{expr1} is evaluated according +to the rules described below (@pxref{Shell Arithmetic}). +The arithmetic expression @var{expr2} is then evaluated repeatedly +until it evaluates to zero. +Each time @var{expr2} evaluates to a non-zero value, @var{commands} are +executed and the arithmetic expression @var{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 @var{commands} +that is executed, or false if any of the expressions is invalid. +@end table + +The @code{break} and @code{continue} builtins (@pxref{Bourne Shell Builtins}) +may be used to control loop execution. + +@node Conditional Constructs +@subsubsection Conditional Constructs +@cindex commands, conditional + +@table @code +@item if +@rwindex if +@rwindex then +@rwindex else +@rwindex elif +@rwindex fi +The syntax of the @code{if} command is: + +@example +if @var{test-commands}; then + @var{consequent-commands}; +[elif @var{more-test-commands}; then + @var{more-consequents};] +[else @var{alternate-consequents};] +fi +@end example + +The @var{test-commands} list is executed, and if its return status is zero, +the @var{consequent-commands} list is executed. +If @var{test-commands} returns a non-zero status, each @code{elif} list +is executed in turn, and if its exit status is zero, +the corresponding @var{more-consequents} is executed and the +command completes. +If @samp{else @var{alternate-consequents}} is present, and +the final command in the final @code{if} or @code{elif} clause +has a non-zero exit status, then @var{alternate-consequents} is executed. +The return status is the exit status of the last command executed, or +zero if no condition tested true. + +@item case +@rwindex case +@rwindex in +@rwindex esac +The syntax of the @code{case} command is: + +@example +case @var{word} in + [ [(] @var{pattern} [| @var{pattern}]@dots{}) @var{command-list} ;;]@dots{} +esac +@end example + +@code{case} will selectively execute the @var{command-list} corresponding to +the first @var{pattern} that matches @var{word}. +The match is performed according +to the rules described below in @ref{Pattern Matching}. +If the @code{nocasematch} shell option +(see the description of @code{shopt} in @ref{The Shopt Builtin}) +is enabled, the match is performed without regard to the case +of alphabetic characters. +The @samp{|} is used to separate multiple patterns, and the @samp{)} +operator terminates a pattern list. +A list of patterns and an associated command-list is known +as a @var{clause}. + +Each clause must be terminated with @samp{;;}, @samp{;&}, or @samp{;;&}. +The @var{word} undergoes tilde expansion, parameter expansion, command +substitution, arithmetic expansion, and quote removal +(@pxref{Shell Parameter Expansion}) +before matching is +attempted. Each @var{pattern} undergoes tilde expansion, parameter +expansion, command substitution, and arithmetic expansion. + +There may be an arbitrary number of @code{case} clauses, each terminated +by a @samp{;;}, @samp{;&}, or @samp{;;&}. +The first pattern that matches determines the +command-list that is executed. +It's a common idiom to use @samp{*} as the final pattern to define the +default case, since that pattern will always match. + +Here is an example using @code{case} in a script that could be used to +describe one interesting feature of an animal: + +@example +echo -n "Enter the name of an animal: " +read ANIMAL +echo -n "The $ANIMAL has " +case $ANIMAL in + horse | dog | cat) echo -n "four";; + man | kangaroo ) echo -n "two";; + *) echo -n "an unknown number of";; +esac +echo " legs." +@end example + +@noindent + +If the @samp{;;} operator is used, no subsequent matches are attempted after +the first pattern match. +Using @samp{;&} in place of @samp{;;} causes execution to continue with +the @var{command-list} associated with the next clause, if any. +Using @samp{;;&} in place of @samp{;;} causes the shell to test the patterns +in the next clause, if any, and execute any associated @var{command-list} +on a successful match, +continuing the case statement execution as if the pattern list had not matched. + +The return status is zero if no @var{pattern} is matched. Otherwise, the +return status is the exit status of the @var{command-list} executed. + +@item select +@rwindex select + +The @code{select} construct allows the easy generation of menus. +It has almost the same syntax as the @code{for} command: + +@example +select @var{name} [in @var{words} @dots{}]; do @var{commands}; done +@end example + +The list of words following @code{in} is expanded, generating a list +of items. The set of expanded words is printed on the standard +error output stream, each preceded by a number. If the +@samp{in @var{words}} is omitted, the positional parameters are printed, +as if @samp{in "$@@"} had been specified. +The @env{PS3} prompt is then displayed and a line is read from the +standard input. +If the line consists of a number corresponding to one of the displayed +words, then the value of @var{name} is set to that word. +If the line is empty, the words and prompt are displayed again. +If @code{EOF} is read, the @code{select} command completes. +Any other value read causes @var{name} to be set to null. +The line read is saved in the variable @env{REPLY}. + +The @var{commands} are executed after each selection until a +@code{break} command is executed, at which +point the @code{select} command completes. + +Here is an example that allows the user to pick a filename from the +current directory, and displays the name and index of the file +selected. + +@example +select fname in *; +do + echo you picked $fname \($REPLY\) + break; +done +@end example + +@item ((@dots{})) +@example +(( @var{expression} )) +@end example + +The arithmetic @var{expression} is evaluated according to the rules +described below (@pxref{Shell Arithmetic}). +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 +@example +let "@var{expression}" +@end example +@noindent +@xref{Bash Builtins}, for a full description of the @code{let} builtin. + +@item [[@dots{}]] +@rwindex [[ +@rwindex ]] +@example +[[ @var{expression} ]] +@end example + +Return a status of 0 or 1 depending on the evaluation of +the conditional expression @var{expression}. +Expressions are composed of the primaries described below in +@ref{Bash Conditional Expressions}. +Word splitting and filename expansion are not performed on the words +between the @code{[[} and @code{]]}; tilde expansion, parameter and +variable expansion, arithmetic expansion, command substitution, process +substitution, and quote removal are performed. +Conditional operators such as @samp{-f} must be unquoted to be recognized +as primaries. + +When used with @code{[[}, the @samp{<} and @samp{>} operators sort +lexicographically using the current locale. + +When the @samp{==} and @samp{!=} operators are used, the string to the +right of the operator is considered a pattern and matched according +to the rules described below in @ref{Pattern Matching}, +as if the @code{extglob} shell option were enabled. +The @samp{=} operator is identical to @samp{==}. +If the @code{nocasematch} shell option +(see the description of @code{shopt} in @ref{The Shopt Builtin}) +is enabled, the match is performed without regard to the case +of alphabetic characters. +The return value is 0 if the string matches (@samp{==}) or does not +match (@samp{!=}) the pattern, and 1 otherwise. +Any part of the pattern may be quoted to force the quoted portion +to be matched as a string. + +An additional binary operator, @samp{=~}, is available, with the same +precedence as @samp{==} and @samp{!=}. +When it is used, the string to the right of the operator is considered +a @sc{posix} extended regular expression and matched accordingly +(using the @sc{posix} @code{regcomp} and @code{regexec} interfaces +usually described in @i{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 @code{nocasematch} shell option +(see the description of @code{shopt} in @ref{The Shopt Builtin}) +is enabled, the match is performed without regard to the case +of alphabetic characters. +Any part of the pattern may be quoted to force the quoted portion +to be matched as a string. +Bracket expressions in regular expressions must be treated carefully, +since normal quoting characters lose their meanings between brackets. +If the pattern is stored in a shell variable, quoting the variable +expansion forces the entire pattern to be matched as a string. + +The pattern will match if it matches any part of the string. +Anchor the pattern using the @samp{^} and @samp{$} regular expression +operators to force it to match the entire string. +The array variable @code{BASH_REMATCH} records which parts of the string +matched the pattern. +The element of @code{BASH_REMATCH} with index 0 contains the portion of +the string matching the entire regular expression. +Substrings matched by parenthesized subexpressions within the regular +expression are saved in the remaining @code{BASH_REMATCH} indices. +The element of @code{BASH_REMATCH} with index @var{n} is the portion of the +string matching the @var{n}th parenthesized subexpression. + +For example, the following will match a line +(stored in the shell variable @var{line}) +if there is a sequence of characters anywhere in the value consisting of +any number, including zero, of +characters in the @code{space} character class, +zero or one instances of @samp{a}, then a @samp{b}: +@example +[[ $line =~ [[:space:]]*(a)?b ]] +@end example + +@noindent +That means values like @samp{aab} and @samp{ aaaaaab} will match, as +will a line containing a @samp{b} anywhere in its value. + +Storing the regular expression in a shell variable is often a useful +way to avoid problems with quoting characters that are special to the +shell. +It is sometimes difficult to specify a regular expression literally +without using quotes, or to keep track of the quoting used by regular +expressions while paying attention to the shell's quote removal. +Using a shell variable to store the pattern decreases these problems. +For example, the following is equivalent to the above: +@example +pattern='[[:space:]]*(a)?b' +[[ $line =~ $pattern ]] +@end example + +@noindent +If you want to match a character that's special to the regular expression +grammar, it has to be quoted to remove its special meaning. +This means that in the pattern @samp{xxx.txt}, the @samp{.} matches any +character in the string (its usual regular expression meaning), but in the +pattern @samp{"xxx.txt"} it can only match a literal @samp{.}. +Shell programmers should take special care with backslashes, since backslashes +are used both by the shell and regular expressions to remove the special +meaning from the following character. +The following two sets of commands are @emph{not} equivalent: +@example +pattern='\.' + +[[ . =~ $pattern ]] +[[ . =~ \. ]] + +[[ . =~ "$pattern" ]] +[[ . =~ '\.' ]] +@end example + +@noindent +The first two matches will succeed, but the second two will not, because +in the second two the backslash will be part of the pattern to be matched. +In the first two examples, the backslash removes the special meaning from +@samp{.}, so the literal @samp{.} matches. +If the string in the first examples were anything other than @samp{.}, say +@samp{a}, the pattern would not match, because the quoted @samp{.} in the +pattern loses its special meaning of matching any single character. + +Expressions may be combined using the following operators, listed +in decreasing order of precedence: + +@table @code +@item ( @var{expression} ) +Returns the value of @var{expression}. +This may be used to override the normal precedence of operators. + +@item ! @var{expression} +True if @var{expression} is false. + +@item @var{expression1} && @var{expression2} +True if both @var{expression1} and @var{expression2} are true. + +@item @var{expression1} || @var{expression2} +True if either @var{expression1} or @var{expression2} is true. +@end table + +@noindent +The @code{&&} and @code{||} operators do not evaluate @var{expression2} if the +value of @var{expression1} is sufficient to determine the return +value of the entire conditional expression. +@end table + +@node Command Grouping +@subsubsection Grouping Commands +@cindex commands, grouping + +Bash provides two ways to group a list of commands to be executed +as a unit. When commands are grouped, redirections may be applied +to the entire command list. For example, the output of all the +commands in the list may be redirected to a single stream. + +@table @code +@item () +@example +( @var{list} ) +@end example + +Placing a list of commands between parentheses causes a subshell +environment to be created (@pxref{Command Execution Environment}), and each +of the commands in @var{list} to be executed in that subshell. Since the +@var{list} is executed in a subshell, variable assignments do not remain in +effect after the subshell completes. + +@item @{@} +@rwindex @{ +@rwindex @} +@example +@{ @var{list}; @} +@end example + +Placing a list of commands between curly braces causes the list to +be executed in the current shell context. No subshell is created. +The semicolon (or newline) following @var{list} is required. +@end table + +In addition to the creation of a subshell, there is a subtle difference +between these two constructs due to historical reasons. The braces +are @code{reserved words}, so they must be separated from the @var{list} +by @code{blank}s or other shell metacharacters. +The parentheses are @code{operators}, and are +recognized as separate tokens by the shell even if they are not separated +from the @var{list} by whitespace. + +The exit status of both of these constructs is the exit status of +@var{list}. + +@node Coprocesses +@subsection Coprocesses +@cindex coprocess + +A @code{coprocess} is a shell command preceded by the @code{coproc} +reserved word. +A coprocess is executed asynchronously in a subshell, as if the command +had been terminated with the @samp{&} control operator, with a two-way pipe +established between the executing shell and the coprocess. + +The format for a coprocess is: +@example +coproc [@var{NAME}] @var{command} [@var{redirections}] +@end example + +@noindent +This creates a coprocess named @var{NAME}. +If @var{NAME} is not supplied, the default name is @var{COPROC}. +@var{NAME} must not be supplied if @var{command} is a simple +command (@pxref{Simple Commands}); otherwise, it is interpreted as +the first word of the simple command. + +When the coprocess is executed, the shell creates an array variable +(@pxref{Arrays}) +named @env{NAME} in the context of the executing shell. +The standard output of @var{command} +is connected via a pipe to a file descriptor in the executing shell, +and that file descriptor is assigned to @env{NAME}[0]. +The standard input of @var{command} +is connected via a pipe to a file descriptor in the executing shell, +and that file descriptor is assigned to @env{NAME}[1]. +This pipe is established before any redirections specified by the +command (@pxref{Redirections}). +The file descriptors can be utilized as arguments to shell commands +and redirections using standard word expansions. +Other than those created to execute command and process substitutions, +the file descriptors are not available in subshells. + +The process ID of the shell spawned to execute the coprocess is +available as the value of the variable @env{NAME}_PID. +The @code{wait} +builtin command may be used to wait for the coprocess to terminate. + +Since the coprocess is created as an asynchronous command, +the @code{coproc} command always returns success. +The return status of a coprocess is the exit status of @var{command}. + +@node GNU Parallel +@subsection GNU Parallel + +There are ways to run commands in parallel that are not built into Bash. +GNU Parallel is a tool to do just that. + +GNU Parallel, as its name suggests, can be used to build and run commands +in parallel. You may run the same command with different arguments, whether +they are filenames, usernames, hostnames, or lines read from files. GNU +Parallel provides shorthand references to many of the most common operations +(input lines, various portions of the input line, different ways to specify +the input source, and so on). Parallel can replace @code{xargs} or feed +commands from its input sources to several different instances of Bash. + +For a complete description, refer to the GNU Parallel documentation. A few +examples should provide a brief introduction to its use. + +For example, it is easy to replace @code{xargs} to gzip all html files in the +current directory and its subdirectories: +@example +find . -type f -name '*.html' -print | parallel gzip +@end example +@noindent +If you need to protect special characters such as newlines in file names, +use find's @option{-print0} option and parallel's @option{-0} option. + +You can use Parallel to move files from the current directory when the +number of files is too large to process with one @code{mv} invocation: +@example +printf '%s\n' * | parallel mv @{@} destdir +@end example + +As you can see, the @{@} is replaced with each line read from standard input. +While using @code{ls} will work in most instances, it is not sufficient to +deal with all filenames. @code{printf} is a shell builtin, and therefore is +not subject to the kernel's limit on the number of arguments to a program, +so you can use @samp{*} (but see below about the @code{dotglob} shell option). +If you need to accommodate special characters in filenames, you can use + +@example +printf '%s\0' * | parallel -0 mv @{@} destdir +@end example + +@noindent +as alluded to above. + +This will run as many @code{mv} commands as there are files in the current +directory. +You can emulate a parallel @code{xargs} by adding the @option{-X} option: +@example +printf '%s\0' * | parallel -0 -X mv @{@} destdir +@end example + +(You may have to modify the pattern if you have the @code{dotglob} option +enabled.) + +GNU Parallel can replace certain common idioms that operate on lines read +from a file (in this case, filenames listed one per line): +@example + while IFS= read -r x; do + do-something1 "$x" "config-$x" + do-something2 < "$x" + done < file | process-output +@end example + +@noindent +with a more compact syntax reminiscent of lambdas: +@example +cat list | parallel "do-something1 @{@} config-@{@} ; do-something2 < @{@}" | + process-output +@end example + +Parallel provides a built-in mechanism to remove filename extensions, which +lends itself to batch file transformations or renaming: +@example +ls *.gz | parallel -j+0 "zcat @{@} | bzip2 >@{.@}.bz2 && rm @{@}" +@end example +@noindent +This will recompress all files in the current directory with names ending +in .gz using bzip2, running one job per CPU (-j+0) in parallel. +(We use @code{ls} for brevity here; using @code{find} as above is more +robust in the face of filenames containing unexpected characters.) +Parallel can take arguments from the command line; the above can also be +written as + +@example +parallel "zcat @{@} | bzip2 >@{.@}.bz2 && rm @{@}" ::: *.gz +@end example + +If a command generates output, you may want to preserve the input order in +the output. For instance, the following command +@example +@{ + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; +@} | parallel traceroute +@end example +@noindent +will display as output the traceroute invocation that finishes first. +Adding the @option{-k} option +@example +@{ + echo foss.org.my ; + echo debian.org ; + echo freenetproject.org ; +@} | parallel -k traceroute +@end example +@noindent +will ensure that the output of @code{traceroute foss.org.my} is displayed first. + +Finally, Parallel can be used to run a sequence of shell commands in parallel, +similar to @samp{cat file | bash}. +It is not uncommon to take a list of filenames, create a series of shell +commands to operate on them, and feed that list of commands to a shell. +Parallel can speed this up. Assuming that @file{file} contains a list of +shell commands, one per line, + +@example +parallel -j 10 < file +@end example + +@noindent +will evaluate the commands using the shell (since no explicit command is +supplied as an argument), in blocks of ten shell jobs at a time. + +@node Shell Functions +@section Shell Functions +@cindex shell function +@cindex functions, shell + +Shell functions are a way to group commands for later execution +using a single name for the group. They are executed just like +a "regular" command. +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. +Shell functions are executed in the current +shell context; no new process is created to interpret them. + +Functions are declared using this syntax: +@rwindex function +@example +@var{fname} () @var{compound-command} [ @var{redirections} ] +@end example + +or + +@example +function @var{fname} [()] @var{compound-command} [ @var{redirections} ] +@end example + +This defines a shell function named @var{fname}. The reserved +word @code{function} is optional. +If the @code{function} reserved +word is supplied, the parentheses are optional. +The @var{body} of the function is the compound command +@var{compound-command} (@pxref{Compound Commands}). +That command is usually a @var{list} enclosed between @{ and @}, but +may be any compound command listed above, +with one exception: If the @code{function} reserved word is used, but the +parentheses are not supplied, the braces are required. +@var{compound-command} is executed whenever @var{fname} is specified as the +name of a command. +When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}), +@var{fname} must be a valid shell @var{name} and +may not be the same as one of the special builtins +(@pxref{Special Builtins}). +In default mode, a function name can be any unquoted shell word that does +not contain @samp{$}. +Any redirections (@pxref{Redirections}) associated with the shell function +are performed when the function is executed. +A function definition may be deleted using the @option{-f} option to the +@code{unset} builtin (@pxref{Bourne Shell Builtins}). + +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. + +Note that for historical reasons, in the most common usage the curly braces +that surround the body of the function must be separated from the body by +@code{blank}s or newlines. +This is because the braces are reserved words and are only recognized +as such when they are separated from the command list +by whitespace or another shell metacharacter. +Also, when using the braces, the @var{list} must be terminated by a semicolon, +a @samp{&}, or a newline. + +When a function is executed, the arguments to the +function become the positional parameters +during its execution (@pxref{Positional Parameters}). +The special parameter @samp{#} that expands to the number of +positional parameters is updated to reflect the change. +Special parameter @code{0} is unchanged. +The first element of the @env{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 these exceptions: +the @env{DEBUG} and @env{RETURN} traps +are not inherited unless the function has been given the +@code{trace} attribute using the @code{declare} builtin or +the @code{-o functrace} option has been enabled with +the @code{set} builtin, +(in which case all functions inherit the @env{DEBUG} and @env{RETURN} traps), +and the @env{ERR} trap is not inherited unless the @code{-o errtrace} +shell option has been enabled. +@xref{Bourne Shell Builtins}, for the description of the +@code{trap} builtin. + +The @env{FUNCNEST} variable, if set to a numeric value greater +than 0, defines a maximum function nesting level. Function +invocations that exceed the limit cause the entire command to +abort. + +If the builtin command @code{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 @code{RETURN} trap is executed +before execution resumes. +When a function completes, the values of the +positional parameters and the special parameter @samp{#} +are restored to the values they had prior to the function's +execution. If a numeric argument is given to @code{return}, +that is the function's return status; otherwise the function's +return status is the exit status of the last command executed +before the @code{return}. + +Variables local to the function may be declared with the +@code{local} builtin. These variables are visible only to +the function and the commands it invokes. This is particularly +important when a shell function calls other functions. + +Local variables "shadow" variables with the same name declared at +previous scopes. For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. + +The shell uses @var{dynamic scoping} to control a variable's visibility +within functions. +With dynamic scoping, visible variables and their values +are a result of the sequence of function calls that caused execution +to reach the current function. +The value of a variable that a function sees depends +on its value within its caller, if any, whether that caller is +the "global" scope or another shell function. +This is also the value that a local variable +declaration "shadows", and the value that is restored when the function +returns. + +For example, if a variable @var{var} is declared as local in function +@var{func1}, and @var{func1} calls another function @var{func2}, +references to @var{var} made from within @var{func2} will resolve to the +local variable @var{var} from @var{func1}, shadowing any global variable +named @var{var}. + +The following script demonstrates this behavior. +When executed, the script displays + +@example +In func2, var = func1 local +@end example + +@example +func1() +@{ + local var='func1 local' + func2 +@} + +func2() +@{ + echo "In func2, var = $var" +@} + +var=global +func1 +@end example + +The @code{unset} builtin also acts using the same dynamic scope: if a +variable is local to the current scope, @code{unset} will unset it; +otherwise the unset will refer to the variable found in any calling scope +as described above. +If a variable at the current local scope is unset, it will remain so +until it is reset in that scope or until the function returns. +Once the function returns, any instance of the variable at a previous +scope will become visible. +If the unset acts on a variable at a previous scope, any instance of a +variable with that name that had been shadowed will become visible. + +Function names and definitions may be listed with the +@option{-f} option to the @code{declare} (@code{typeset}) +builtin command (@pxref{Bash Builtins}). +The @option{-F} option to @code{declare} or @code{typeset} +will list the function names only +(and optionally the source file and line number, if the @code{extdebug} +shell option is enabled). +Functions may be exported so that subshells +automatically have them defined with the +@option{-f} option to the @code{export} builtin +(@pxref{Bourne Shell Builtins}). + +Functions may be recursive. +The @code{FUNCNEST} variable may be used to limit the depth of the +function call stack and restrict the number of function invocations. +By default, no limit is placed on the number of recursive calls. + +@node Shell Parameters +@section Shell Parameters +@cindex parameters +@cindex variable, shell +@cindex shell variable + +@menu +* Positional Parameters:: The shell's command-line arguments. +* Special Parameters:: Parameters denoted by special characters. +@end menu + +A @var{parameter} is an entity that stores values. +It can be a @code{name}, a number, or one of the special characters +listed below. +A @var{variable} is a parameter denoted by a @code{name}. +A variable has a @var{value} and zero or more @var{attributes}. +Attributes are assigned using the @code{declare} builtin command +(see the description of the @code{declare} builtin in @ref{Bash Builtins}). + +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 @code{unset} builtin command. + +A variable may be assigned to by a statement of the form +@example +@var{name}=[@var{value}] +@end example +@noindent +If @var{value} +is not given, the variable is assigned the null string. All +@var{value}s undergo tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote +removal (detailed below). If the variable has its @code{integer} +attribute set, then @var{value} +is evaluated as an arithmetic expression even if the @code{$((@dots{}))} +expansion is not used (@pxref{Arithmetic Expansion}). +Word splitting is not performed, with the exception +of @code{"$@@"} as explained below. +Filename expansion is not performed. +Assignment statements may also appear as arguments to the +@code{alias}, +@code{declare}, @code{typeset}, @code{export}, @code{readonly}, +and @code{local} builtin commands (@var{declaration} commands). +When in @sc{posix} mode (@pxref{Bash POSIX Mode}), these builtins may appear +in a command after one or more instances of the @code{command} builtin +and retain these assignment statement properties. + +In the context where an assignment statement is assigning a value +to a shell variable or array index (@pxref{Arrays}), the @samp{+=} +operator can be used to +append to or add to the variable's previous value. +This includes arguments to builtin commands such as @code{declare} that +accept assignment statements (@var{declaration} commands). +When @samp{+=} is applied to a variable for which the @var{integer} attribute +has been set, @var{value} is evaluated as an arithmetic expression and +added to the variable's current value, which is also evaluated. +When @samp{+=} is applied to an array variable using compound assignment +(@pxref{Arrays}), the +variable's value is not unset (as it is when using @samp{=}), and new +values are appended to the array beginning at one greater than the array's +maximum index (for indexed arrays), or added as additional key-value pairs +in an associative array. +When applied to a string-valued variable, @var{value} is expanded and +appended to the variable's value. + +A variable can be assigned the @var{nameref} attribute using the +@option{-n} option to the @code{declare} or @code{local} builtin commands +(@pxref{Bash Builtins}) +to create a @var{nameref}, or a reference to another variable. +This allows variables to be manipulated indirectly. +Whenever the nameref variable is referenced, assigned to, unset, or has +its attributes modified (other than using or changing the nameref +attribute itself), the +operation is actually performed on the variable specified by the nameref +variable's value. +A nameref is commonly used within shell functions to refer to a variable +whose name is passed as an argument to the function. +For instance, if a variable name is passed to a shell function as its first +argument, running +@example +declare -n ref=$1 +@end example +@noindent +inside the function creates a nameref variable @var{ref} whose value is +the variable name passed as the first argument. +References and assignments to @var{ref}, and changes to its attributes, +are treated as references, assignments, and attribute modifications +to the variable whose name was passed as @code{$1}. + +If the control variable in a @code{for} loop has the nameref attribute, +the list of words can be a list of shell variables, and a name reference +will be established for each word in the list, in turn, when the loop is +executed. +Array variables cannot be given the nameref attribute. +However, nameref variables can reference array variables and subscripted +array variables. +Namerefs can be unset using the @option{-n} option to the @code{unset} builtin +(@pxref{Bourne Shell Builtins}). +Otherwise, if @code{unset} is executed with the name of a nameref variable +as an argument, the variable referenced by the nameref variable will be unset. + +@node Positional Parameters +@subsection Positional Parameters +@cindex parameters, positional + +A @var{positional parameter} is a parameter denoted by one or more +digits, other than the single digit @code{0}. Positional parameters are +assigned from the shell's arguments when it is invoked, +and may be reassigned using the @code{set} builtin command. +Positional parameter @code{N} may be referenced as @code{$@{N@}}, or +as @code{$N} when @code{N} consists of a single digit. +Positional parameters may not be assigned to with assignment statements. +The @code{set} and @code{shift} builtins are used to set and +unset them (@pxref{Shell Builtin Commands}). +The positional parameters are +temporarily replaced when a shell function is executed +(@pxref{Shell Functions}). + +When a positional parameter consisting of more than a single +digit is expanded, it must be enclosed in braces. + +@node Special Parameters +@subsection Special Parameters +@cindex parameters, special + +The shell treats several parameters specially. These parameters may +only be referenced; assignment to them is not allowed. + +@vtable @code + +@item * +@vindex $* +($*) Expands to the positional parameters, starting from one. +When the expansion is not within double quotes, each positional parameter +expands to a separate word. +In contexts where it is performed, those words +are subject to further word splitting and filename expansion. +When the expansion occurs within double quotes, it expands to a single word +with the value of each parameter separated by the first character of the +@env{IFS} special variable. That is, @code{"$*"} is equivalent +to @code{"$1@var{c}$2@var{c}@dots{}"}, where @var{c} +is the first character of the value of the @code{IFS} +variable. +If @env{IFS} is unset, the parameters are separated by spaces. +If @env{IFS} is null, the parameters are joined without intervening +separators. + +@item @@ +@vindex $@@ +($@@) Expands to the positional parameters, starting from one. +In contexts where word splitting is performed, this expands each +positional parameter to a separate word; if not within double +quotes, these words are subject to word splitting. +In contexts where word splitting is not performed, +this expands to a single word +with each positional parameter separated by a space. +When the +expansion occurs within double quotes, and word splitting is performed, +each parameter expands to a +separate word. That is, @code{"$@@"} is equivalent to +@code{"$1" "$2" @dots{}}. +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, @code{"$@@"} and +@code{$@@} +expand to nothing (i.e., they are removed). + +@item # +@vindex $# +($#) Expands to the number of positional parameters in decimal. + +@item ? +@vindex $? +($?) Expands to the exit status of the most recently executed foreground +pipeline. + +@item - +@vindex $- +($-, a hyphen.) Expands to the current option flags as specified upon +invocation, by the @code{set} +builtin command, or those set by the shell itself +(such as the @option{-i} option). + +@item $ +@vindex $$ +($$) Expands to the process @sc{id} of the shell. In a @code{()} subshell, it +expands to the process @sc{id} of the invoking shell, not the subshell. + +@item ! +@vindex $! +($!) Expands to the process @sc{id} of the job most recently placed into the +background, whether executed as an asynchronous command or using +the @code{bg} builtin (@pxref{Job Control Builtins}). + +@item 0 +@vindex $0 +($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 +(@pxref{Shell Scripts}), @code{$0} is set to the name of that file. +If Bash is started with the @option{-c} option (@pxref{Invoking Bash}), +then @code{$0} is set to the first argument after the string to be +executed, if one is present. Otherwise, it is set +to the filename used to invoke Bash, as given by argument zero. +@end vtable + +@node Shell Expansions +@section Shell Expansions +@cindex expansion + +Expansion is performed on the command line after it has been split into +@code{token}s. There are seven kinds of expansion performed: + +@itemize @bullet +@item brace expansion +@item tilde expansion +@item parameter and variable expansion +@item command substitution +@item arithmetic expansion +@item word splitting +@item filename expansion +@end itemize + +@menu +* Brace Expansion:: Expansion of expressions within braces. +* Tilde Expansion:: Expansion of the ~ character. +* Shell Parameter Expansion:: How Bash expands variables to their values. +* Command Substitution:: Using the output of a command as an argument. +* Arithmetic Expansion:: How to use arithmetic in shell expansions. +* Process Substitution:: A way to write and read to and from a + command. +* Word Splitting:: How the results of expansion are split into separate + arguments. +* Filename Expansion:: A shorthand for specifying filenames matching patterns. +* Quote Removal:: How and when quote characters are removed from + words. +@end menu + +The order of expansions is: +brace expansion; +tilde expansion, parameter and variable expansion, arithmetic expansion, +and command substitution (done in a left-to-right fashion); +word splitting; +and filename expansion. + +On systems that can support it, there is an additional expansion +available: @var{process substitution}. +This is performed at the +same time as tilde, parameter, variable, and arithmetic expansion and +command substitution. + +After these expansions are performed, quote characters present in the +original word are removed unless they have been quoted themselves +(@var{quote removal}). + +Only brace expansion, word splitting, and filename expansion +can increase 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 +@code{"$@@"} and @code{$*} (@pxref{Special Parameters}), and +@code{"$@{@var{name}[@@]@}"} and @code{$@{@var{name}[*]@}} +(@pxref{Arrays}). + +After all expansions, @code{quote removal} (@pxref{Quote Removal}) +is performed. + +@node Brace Expansion +@subsection Brace Expansion +@cindex brace expansion +@cindex expansion, brace + +Brace expansion is a mechanism by which arbitrary strings may be generated. +This mechanism is similar to +@var{filename expansion} (@pxref{Filename Expansion}), +but the filenames generated need not exist. +Patterns to be brace expanded take the form of an optional @var{preamble}, +followed by either a series of comma-separated strings or a sequence expression +between a pair of braces, +followed by an optional @var{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, +@example +bash$ echo a@{d,c,b@}e +ade ace abe +@end example + +A sequence expression takes the form @code{@{@var{x}..@var{y}[..@var{incr}]@}}, +where @var{x} and @var{y} are either integers or single characters, +and @var{incr}, an optional increment, is an integer. +When integers are supplied, the expression expands to each number between +@var{x} and @var{y}, inclusive. +Supplied integers may be prefixed with @samp{0} to force each term to have the +same width. +When either @var{x} or @var{y} begins with a zero, the shell +attempts to force all generated terms to contain the same number of digits, +zero-padding where necessary. +When characters are supplied, the expression expands to each character +lexicographically between @var{x} and @var{y}, inclusive, +using the default C locale. +Note that both @var{x} and @var{y} must be of the same type. +When the increment is supplied, it is used as the difference between +each term. The default increment is 1 or -1 as appropriate. + +Brace expansion is performed before any other expansions, +and any 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 @samp{,} may be quoted with a backslash to prevent its +being considered part of a brace expression. +To avoid conflicts with parameter expansion, the string @samp{$@{} +is not considered eligible for brace expansion, +and inhibits brace expansion until the closing @samp{@}}. + +This construct is typically used as shorthand when the common +prefix of the strings to be generated is longer than in the +above example: +@example +mkdir /usr/local/src/bash/@{old,new,dist,bugs@} +@end example +or +@example +chown root /usr/@{ucb/@{ex,edit@},lib/@{ex?.?*,how_ex@}@} +@end example + +@node Tilde Expansion +@subsection Tilde Expansion +@cindex tilde expansion +@cindex expansion, tilde + +If a word begins with an unquoted tilde character (@samp{~}), all of the +characters up to the first unquoted slash (or all characters, +if there is no unquoted slash) are considered a @var{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 @var{login name}. +If this login name is the null string, the tilde is replaced with the +value of the @env{HOME} shell variable. +If @env{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 @samp{~+}, the value of +the shell variable @env{PWD} replaces the tilde-prefix. +If the tilde-prefix is @samp{~-}, the value of the shell variable +@env{OLDPWD}, if it is set, is substituted. + +If the characters following the tilde in the tilde-prefix consist of a +number @var{N}, optionally prefixed by a @samp{+} or a @samp{-}, +the tilde-prefix is replaced with the +corresponding element from the directory stack, as it would be displayed +by the @code{dirs} builtin invoked with the characters following tilde +in the tilde-prefix as an argument (@pxref{The Directory Stack}). +If the tilde-prefix, sans the tilde, consists of a number without a +leading @samp{+} or @samp{-}, @samp{+} is assumed. + +If the login name is invalid, or the tilde expansion fails, the word is +left unchanged. + +Each variable assignment is checked for unquoted tilde-prefixes immediately +following a @samp{:} or the first @samp{=}. +In these cases, tilde expansion is also performed. +Consequently, one may use filenames with tildes in assignments to +@env{PATH}, @env{MAILPATH}, and @env{CDPATH}, +and the shell assigns the expanded value. + +The following table shows how Bash treats unquoted tilde-prefixes: + +@table @code +@item ~ +The value of @code{$HOME} +@item ~/foo +@file{$HOME/foo} + +@item ~fred/foo +The subdirectory @code{foo} of the home directory of the user +@code{fred} + +@item ~+/foo +@file{$PWD/foo} + +@item ~-/foo +@file{$@{OLDPWD-'~-'@}/foo} + +@item ~@var{N} +The string that would be displayed by @samp{dirs +@var{N}} + +@item ~+@var{N} +The string that would be displayed by @samp{dirs +@var{N}} + +@item ~-@var{N} +The string that would be displayed by @samp{dirs -@var{N}} +@end table + +Bash also performs tilde expansion on words satisfying the conditions of +variable assignments (@pxref{Shell Parameters}) +when they appear as arguments to simple commands. +Bash does not do this, except for the @var{declaration} commands listed +above, when in @sc{posix} mode. + +@node Shell Parameter Expansion +@subsection Shell Parameter Expansion +@cindex parameter expansion +@cindex expansion, parameter + +The @samp{$} 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 @samp{@}} +not escaped by a backslash or within a quoted string, and not within an +embedded arithmetic expansion, command substitution, or parameter +expansion. + +The basic form of parameter expansion is $@{@var{parameter}@}. +The value of @var{parameter} is substituted. +The @var{parameter} is a shell parameter as described above +(@pxref{Shell Parameters}) or an array reference (@pxref{Arrays}). +The braces are required when @var{parameter} +is a positional parameter with more than one digit, +or when @var{parameter} is followed by a character that is not to be +interpreted as part of its name. + +If the first character of @var{parameter} is an exclamation point (!), +and @var{parameter} is not a @var{nameref}, +it introduces a level of indirection. +Bash uses the value formed by expanding the rest of +@var{parameter} as the new @var{parameter}; this is then +expanded and that value is used in the rest of the expansion, rather +than the expansion of the original @var{parameter}. +This is known as @code{indirect expansion}. +The value is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. +If @var{parameter} is a nameref, this expands to the name of the +variable referenced by @var{parameter} instead of performing the +complete indirect expansion. +The exceptions to this are the expansions of $@{!@var{prefix}*@} +and $@{!@var{name}[@@]@} +described below. +The exclamation point must immediately follow the left brace in order to +introduce indirection. + +In each of the cases below, @var{word} is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. + +When not performing substring expansion, using the form described +below (e.g., @samp{:-}), Bash tests for a parameter that is unset or null. +Omitting the colon results in a test only for a parameter that is unset. +Put another way, if the colon is included, +the operator tests for both @var{parameter}'s existence and that its value +is not null; if the colon is omitted, the operator tests only for existence. + +@table @code + +@item $@{@var{parameter}:@minus{}@var{word}@} +If @var{parameter} is unset or null, the expansion of +@var{word} is substituted. Otherwise, the value of +@var{parameter} is substituted. + +@item $@{@var{parameter}:=@var{word}@} +If @var{parameter} +is unset or null, the expansion of @var{word} +is assigned to @var{parameter}. +The value of @var{parameter} is then substituted. +Positional parameters and special parameters may not be assigned to +in this way. + +@item $@{@var{parameter}:?@var{word}@} +If @var{parameter} +is null or unset, the expansion of @var{word} (or a message +to that effect if @var{word} +is not present) is written to the standard error and the shell, if it +is not interactive, exits. Otherwise, the value of @var{parameter} is +substituted. + +@item $@{@var{parameter}:+@var{word}@} +If @var{parameter} +is null or unset, nothing is substituted, otherwise the expansion of +@var{word} is substituted. + +@item $@{@var{parameter}:@var{offset}@} +@itemx $@{@var{parameter}:@var{offset}:@var{length}@} +This is referred to as Substring Expansion. +It expands to up to @var{length} characters of the value of @var{parameter} +starting at the character specified by @var{offset}. +If @var{parameter} is @samp{@@}, an indexed array subscripted by +@samp{@@} or @samp{*}, or an associative array name, the results differ as +described below. +If @var{length} is omitted, it expands to the substring of the value of +@var{parameter} starting at the character specified by @var{offset} +and extending to the end of the value. +@var{length} and @var{offset} are arithmetic expressions +(@pxref{Shell Arithmetic}). + +If @var{offset} evaluates to a number less than zero, the value +is used as an offset in characters +from the end of the value of @var{parameter}. +If @var{length} evaluates to a number less than zero, +it is interpreted as an offset in characters +from the end of the value of @var{parameter} rather than +a number of characters, and the expansion is the characters between +@var{offset} and that result. +Note that a negative offset must be separated from the colon by at least +one space to avoid being confused with the @samp{:-} expansion. + +Here are some examples illustrating substring expansion on parameters and +subscripted arrays: + +@verbatim +$ string=01234567890abcdefgh +$ echo ${string:7} +7890abcdefgh +$ echo ${string:7:0} + +$ echo ${string:7:2} +78 +$ echo ${string:7:-2} +7890abcdef +$ echo ${string: -7} +bcdefgh +$ echo ${string: -7:0} + +$ echo ${string: -7:2} +bc +$ echo ${string: -7:-2} +bcdef +$ set -- 01234567890abcdefgh +$ echo ${1:7} +7890abcdefgh +$ echo ${1:7:0} + +$ echo ${1:7:2} +78 +$ echo ${1:7:-2} +7890abcdef +$ echo ${1: -7} +bcdefgh +$ echo ${1: -7:0} + +$ echo ${1: -7:2} +bc +$ echo ${1: -7:-2} +bcdef +$ array[0]=01234567890abcdefgh +$ echo ${array[0]:7} +7890abcdefgh +$ echo ${array[0]:7:0} + +$ echo ${array[0]:7:2} +78 +$ echo ${array[0]:7:-2} +7890abcdef +$ echo ${array[0]: -7} +bcdefgh +$ echo ${array[0]: -7:0} + +$ echo ${array[0]: -7:2} +bc +$ echo ${array[0]: -7:-2} +bcdef +@end verbatim + +If @var{parameter} is @samp{@@}, the result is @var{length} positional +parameters beginning at @var{offset}. +A negative @var{offset} is taken relative to one greater than the greatest +positional parameter, so an offset of -1 evaluates to the last positional +parameter. +It is an expansion error if @var{length} evaluates to a number less than zero. + +The following examples illustrate substring expansion using positional +parameters: + +@verbatim +$ set -- 1 2 3 4 5 6 7 8 9 0 a b c d e f g h +$ echo ${@:7} +7 8 9 0 a b c d e f g h +$ echo ${@:7:0} + +$ echo ${@:7:2} +7 8 +$ echo ${@:7:-2} +bash: -2: substring expression < 0 +$ echo ${@: -7:2} +b c +$ echo ${@:0} +./bash 1 2 3 4 5 6 7 8 9 0 a b c d e f g h +$ echo ${@:0:2} +./bash 1 +$ echo ${@: -7:0} + +@end verbatim + +If @var{parameter} is an indexed array name subscripted +by @samp{@@} or @samp{*}, the result is the @var{length} +members of the array beginning with @code{$@{@var{parameter}[@var{offset}]@}}. +A negative @var{offset} is taken relative to one greater than the maximum +index of the specified array. +It is an expansion error if @var{length} evaluates to a number less than zero. + +These examples show how you can use substring expansion with indexed +arrays: + +@verbatim +$ array=(0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h) +$ echo ${array[@]:7} +7 8 9 0 a b c d e f g h +$ echo ${array[@]:7:2} +7 8 +$ echo ${array[@]: -7:2} +b c +$ echo ${array[@]: -7:-2} +bash: -2: substring expression < 0 +$ echo ${array[@]:0} +0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h +$ echo ${array[@]:0:2} +0 1 +$ echo ${array[@]: -7:0} + +@end verbatim + +Substring expansion applied to an associative array produces undefined +results. + +Substring indexing is zero-based unless the positional parameters +are used, in which case the indexing starts at 1 by default. +If @var{offset} is 0, and the positional parameters are used, @code{$0} is +prefixed to the list. + +@item $@{!@var{prefix}*@} +@itemx $@{!@var{prefix}@@@} +Expands to the names of variables whose names begin with @var{prefix}, +separated by the first character of the @env{IFS} special variable. +When @samp{@@} is used and the expansion appears within double quotes, each +variable name expands to a separate word. + +@item $@{!@var{name}[@@]@} +@itemx $@{!@var{name}[*]@} +If @var{name} is an array variable, expands to the list of array indices +(keys) assigned in @var{name}. +If @var{name} is not an array, expands to 0 if @var{name} is set and null +otherwise. +When @samp{@@} is used and the expansion appears within double quotes, each +key expands to a separate word. + +@item $@{#@var{parameter}@} +The length in characters of the expanded value of @var{parameter} is +substituted. +If @var{parameter} is @samp{*} or @samp{@@}, the value substituted +is the number of positional parameters. +If @var{parameter} is an array name subscripted by @samp{*} or @samp{@@}, +the value substituted is the number of elements in the array. +If @var{parameter} +is an indexed array name subscripted by a negative number, that number is +interpreted as relative to one greater than the maximum index of +@var{parameter}, so negative indices count back from the end of the +array, and an index of -1 references the last element. + +@item $@{@var{parameter}#@var{word}@} +@itemx $@{@var{parameter}##@var{word}@} +The @var{word} +is expanded to produce a pattern and matched according to the rules +described below (@pxref{Pattern Matching}). If the pattern matches +the beginning of the expanded value of @var{parameter}, +then the result of the expansion is the expanded value of @var{parameter} +with the shortest matching pattern (the @samp{#} case) or the +longest matching pattern (the @samp{##} case) deleted. +If @var{parameter} is @samp{@@} or @samp{*}, +the pattern removal operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If @var{parameter} is an array variable subscripted with +@samp{@@} or @samp{*}, +the pattern removal operation is applied to each member of the +array in turn, and the expansion is the resultant list. + +@item $@{@var{parameter}%@var{word}@} +@itemx $@{@var{parameter}%%@var{word}@} +The @var{word} +is expanded to produce a pattern and matched according to the rules +described below (@pxref{Pattern Matching}). +If the pattern matches a trailing portion of the expanded value of +@var{parameter}, then the result of the expansion is the value of +@var{parameter} with the shortest matching pattern (the @samp{%} case) +or the longest matching pattern (the @samp{%%} case) deleted. +If @var{parameter} is @samp{@@} or @samp{*}, +the pattern removal operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If @var{parameter} +is an array variable subscripted with @samp{@@} or @samp{*}, +the pattern removal operation is applied to each member of the +array in turn, and the expansion is the resultant list. + +@item $@{@var{parameter}/@var{pattern}/@var{string}@} + +The @var{pattern} is expanded to produce a pattern just as in +filename expansion. +@var{Parameter} is expanded and the longest match of @var{pattern} +against its value is replaced with @var{string}. +The match is performed according to the rules described below +(@pxref{Pattern Matching}). +If @var{pattern} begins with @samp{/}, all matches of @var{pattern} are +replaced with @var{string}. Normally only the first match is replaced. +If @var{pattern} begins with @samp{#}, it must match at the beginning +of the expanded value of @var{parameter}. +If @var{pattern} begins with @samp{%}, it must match at the end +of the expanded value of @var{parameter}. +If @var{string} is null, matches of @var{pattern} are deleted +and the @code{/} following @var{pattern} may be omitted. +If the @code{nocasematch} shell option +(see the description of @code{shopt} in @ref{The Shopt Builtin}) +is enabled, the match is performed without regard to the case +of alphabetic characters. +If @var{parameter} is @samp{@@} or @samp{*}, +the substitution operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If @var{parameter} +is an array variable subscripted with @samp{@@} or @samp{*}, +the substitution operation is applied to each member of the +array in turn, and the expansion is the resultant list. + +@item $@{@var{parameter}^@var{pattern}@} +@itemx $@{@var{parameter}^^@var{pattern}@} +@itemx $@{@var{parameter},@var{pattern}@} +@itemx $@{@var{parameter},,@var{pattern}@} +This expansion modifies the case of alphabetic characters in @var{parameter}. +The @var{pattern} is expanded to produce a pattern just as in +filename expansion. +Each character in the expanded value of @var{parameter} is tested against +@var{pattern}, and, if it matches the pattern, its case is converted. +The pattern should not attempt to match more than one character. +The @samp{^} operator converts lowercase letters matching @var{pattern} +to uppercase; the @samp{,} operator converts matching uppercase letters +to lowercase. +The @samp{^^} and @samp{,,} expansions convert each matched character in the +expanded value; the @samp{^} and @samp{,} expansions match and convert only +the first character in the expanded value. +If @var{pattern} is omitted, it is treated like a @samp{?}, which matches +every character. +If @var{parameter} is @samp{@@} or @samp{*}, +the case modification operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If @var{parameter} +is an array variable subscripted with @samp{@@} or @samp{*}, +the case modification operation is applied to each member of the +array in turn, and the expansion is the resultant list. + +@item $@{@var{parameter}@@@var{operator}@} +The expansion is either a transformation of the value of @var{parameter} +or information about @var{parameter} itself, depending on the value of +@var{operator}. Each @var{operator} is a single letter: + +@table @code +@item U +The expansion is a string that is the value of @var{parameter} with lowercase +alphabetic characters converted to uppercase. +@item u +The expansion is a string that is the value of @var{parameter} with the first +character converted to uppercase, if it is alphabetic. +@item L +The expansion is a string that is the value of @var{parameter} with uppercase +alphabetic characters converted to lowercase. +@item Q +The expansion is a string that is the value of @var{parameter} quoted in a +format that can be reused as input. +@item E +The expansion is a string that is the value of @var{parameter} with backslash +escape sequences expanded as with the @code{$'@dots{}'} quoting mechanism. +@item P +The expansion is a string that is the result of expanding the value of +@var{parameter} as if it were a prompt string (@pxref{Controlling the Prompt}). +@item A +The expansion is a string in the form of +an assignment statement or @code{declare} command that, if +evaluated, will recreate @var{parameter} with its attributes and value. +@item K +Produces a possibly-quoted version of the value of @var{parameter}, +except that it prints the values of +indexed and associative arrays as a sequence of quoted key-value pairs +(@pxref{Arrays}). +@item a +The expansion is a string consisting of flag values representing +@var{parameter}'s attributes. +@end table + +If @var{parameter} is @samp{@@} or @samp{*}, +the operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If @var{parameter} +is an array variable subscripted with @samp{@@} or @samp{*}, +the operation is applied to each member of the +array in turn, and the expansion is the resultant list. + +The result of the expansion is subject to word splitting and filename +expansion as described below. +@end table + +@node Command Substitution +@subsection Command Substitution +@cindex command substitution + +Command substitution allows the output of a command to replace +the command itself. +Command substitution occurs when a command is enclosed as follows: +@example +$(@var{command}) +@end example +@noindent +or +@example +`@var{command}` +@end example + +@noindent +Bash performs the expansion by executing @var{command} in a subshell environment +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 @code{$(cat @var{file})} can be +replaced by the equivalent but faster @code{$(< @var{file})}. + +When the old-style backquote form of substitution is used, +backslash retains its literal meaning except when followed by +@samp{$}, @samp{`}, or @samp{\}. +The first backquote not preceded by a backslash terminates the +command substitution. +When using the @code{$(@var{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 +filename expansion are not performed on the results. + +@node Arithmetic Expansion +@subsection Arithmetic Expansion +@cindex expansion, arithmetic +@cindex arithmetic expansion + +Arithmetic expansion allows the evaluation of an arithmetic expression +and the substitution of the result. The format for arithmetic expansion is: + +@example +$(( @var{expression} )) +@end example + +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 and variable expansion, +command substitution, and quote removal. +The result is treated as the arithmetic expression to be evaluated. +Arithmetic expansions may be nested. + +The evaluation is performed according to the rules listed below +(@pxref{Shell Arithmetic}). +If the expression is invalid, Bash prints a message indicating +failure to the standard error and no substitution occurs. + +@node Process Substitution +@subsection Process Substitution +@cindex process substitution + +Process substitution allows a process's input or output to be +referred to using a filename. +It takes the form of +@example +<(@var{list}) +@end example +@noindent +or +@example +>(@var{list}) +@end example +@noindent +The process @var{list} is run asynchronously, and its input or output +appears as a filename. +This filename is +passed as an argument to the current command as the result of the +expansion. +If the @code{>(@var{list})} form is used, writing to +the file will provide input for @var{list}. If the +@code{<(@var{list})} form is used, the file passed as an +argument should be read to obtain the output of @var{list}. +Note that no space may appear between the @code{<} or @code{>} +and the left parenthesis, otherwise the construct would be interpreted +as a redirection. +Process substitution is supported on systems that support named +pipes (@sc{fifo}s) or the @file{/dev/fd} method of naming open files. + +When available, process substitution is performed simultaneously with +parameter and variable expansion, command substitution, and arithmetic +expansion. + +@node Word Splitting +@subsection Word Splitting +@cindex 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 @env{$IFS} as a delimiter, and splits +the results of the other expansions into words using these characters +as field terminators. +If @env{IFS} is unset, or its value is exactly @code{}, +the default, then sequences of +@code{ }, @code{}, and @code{} +at the beginning and end of the results of the previous +expansions are ignored, and any sequence of @env{IFS} +characters not at the beginning or end serves to delimit words. +If @env{IFS} has a value other than the default, then sequences of +the whitespace characters @code{space}, @code{tab}, and @code{newline} +are ignored at the beginning and end of the +word, as long as the whitespace character is in the +value of @env{IFS} (an @env{IFS} whitespace character). +Any character in @env{IFS} that is not @env{IFS} +whitespace, along with any adjacent @env{IFS} +whitespace characters, delimits a field. A sequence of @env{IFS} +whitespace characters is also treated as a delimiter. +If the value of @env{IFS} is null, no word splitting occurs. + +Explicit null arguments (@code{""} or @code{''}) are retained +and passed to commands as empty strings. +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 +and passed to a command as an empty string. +When a quoted null argument appears as part of a word whose expansion is +non-null, the null argument is removed. +That is, the word +@code{-d''} becomes @code{-d} after word splitting and +null argument removal. + +Note that if no expansion occurs, no splitting +is performed. + +@node Filename Expansion +@subsection Filename Expansion +@menu +* Pattern Matching:: How the shell matches patterns. +@end menu +@cindex expansion, filename +@cindex expansion, pathname +@cindex filename expansion +@cindex pathname expansion + +After word splitting, unless the @option{-f} option has been set +(@pxref{The Set Builtin}), Bash scans each word for the characters +@samp{*}, @samp{?}, and @samp{[}. +If one of these characters appears, and is not quoted, then the word is +regarded as a @var{pattern}, +and replaced with an alphabetically sorted list of +filenames matching the pattern (@pxref{Pattern Matching}). +If no matching filenames are found, +and the shell option @code{nullglob} is disabled, the word is left +unchanged. +If the @code{nullglob} option is set, and no matches are found, the word +is removed. +If the @code{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 @code{nocaseglob} is enabled, the match is performed +without regard to the case of alphabetic characters. + +When a pattern is used for filename expansion, the character @samp{.} +at the start of a filename or immediately following a slash +must be matched explicitly, unless the shell option @code{dotglob} is set. +The filenames @samp{.} and @samp{..} must always be matched explicitly, +even if @code{dotglob} is set. +In other cases, the @samp{.} character is not treated specially. + +When matching a filename, the slash character must always be +matched explicitly by a slash in the pattern, but in other matching +contexts it can be matched by a special pattern character as described +below (@pxref{Pattern Matching}). + +See the description of @code{shopt} in @ref{The Shopt Builtin}, +for a description of the @code{nocaseglob}, @code{nullglob}, +@code{failglob}, and @code{dotglob} options. + +The @env{GLOBIGNORE} +shell variable may be used to restrict the set of file names matching a +pattern. If @env{GLOBIGNORE} +is set, each matching file name that also matches one of the patterns in +@env{GLOBIGNORE} is removed from the list of matches. +If the @code{nocaseglob} option is set, the matching against the patterns in +@env{GLOBIGNORE} is performed without regard to case. +The filenames +@file{.} and @file{..} +are always ignored when @env{GLOBIGNORE} +is set and not null. +However, setting @env{GLOBIGNORE} to a non-null value has the effect of +enabling the @code{dotglob} +shell option, so all other filenames beginning with a +@samp{.} will match. +To get the old behavior of ignoring filenames beginning with a +@samp{.}, make @samp{.*} one of the patterns in @env{GLOBIGNORE}. +The @code{dotglob} option is disabled when @env{GLOBIGNORE} +is unset. + +@node Pattern Matching +@subsubsection Pattern Matching +@cindex pattern matching +@cindex matching, pattern + +Any character that appears in a pattern, other than the special pattern +characters described below, matches itself. +The @sc{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: +@table @code +@item * +Matches any string, including the null string. +When the @code{globstar} shell option is enabled, and @samp{*} is used in +a filename expansion context, two adjacent @samp{*}s used as a single +pattern will match all files and zero or more directories and +subdirectories. +If followed by a @samp{/}, two adjacent @samp{*}s will match only +directories and subdirectories. +@item ? +Matches any single character. +@item [@dots{}] +Matches any one of the enclosed characters. A pair of characters +separated by a hyphen denotes a @var{range expression}; +any character that falls between those two characters, inclusive, +using the current locale's collating sequence and character set, +is matched. If the first character following the +@samp{[} is a @samp{!} or a @samp{^} +then any character not enclosed is matched. A @samp{@minus{}} +may be matched by including it as the first or last character +in the set. A @samp{]} may be matched by including it as the first +character in the set. +The sorting order of characters in range expressions is determined by +the current locale and the values of the +@env{LC_COLLATE} and @env{LC_ALL} shell variables, if set. + +For example, in the default C locale, @samp{[a-dx-z]} is equivalent to +@samp{[abcdxyz]}. Many locales sort characters in dictionary order, and in +these locales @samp{[a-dx-z]} is typically not equivalent to @samp{[abcdxyz]}; +it might be equivalent to @samp{[aBbCcDdxXyYz]}, for example. To obtain +the traditional interpretation of ranges in bracket expressions, you can +force the use of the C locale by setting the @env{LC_COLLATE} or +@env{LC_ALL} environment variable to the value @samp{C}, or enable the +@code{globasciiranges} shell option. + +Within @samp{[} and @samp{]}, @var{character classes} can be specified +using the syntax +@code{[:}@var{class}@code{:]}, where @var{class} is one of the +following classes defined in the @sc{posix} standard: +@example +alnum alpha ascii blank cntrl digit graph lower +print punct space upper word xdigit +@end example +@noindent +A character class matches any character belonging to that class. +The @code{word} character class matches letters, digits, and the character +@samp{_}. + +Within @samp{[} and @samp{]}, an @var{equivalence class} can be +specified using the syntax @code{[=}@var{c}@code{=]}, which +matches all characters with the same collation weight (as defined +by the current locale) as the character @var{c}. + +Within @samp{[} and @samp{]}, the syntax @code{[.}@var{symbol}@code{.]} +matches the collating symbol @var{symbol}. +@end table + +If the @code{extglob} shell option is enabled using the @code{shopt} +builtin, several extended pattern matching operators are recognized. +In the following description, a @var{pattern-list} is a list of one +or more patterns separated by a @samp{|}. +Composite patterns may be formed using one or more of the following +sub-patterns: + +@table @code +@item ?(@var{pattern-list}) +Matches zero or one occurrence of the given patterns. + +@item *(@var{pattern-list}) +Matches zero or more occurrences of the given patterns. + +@item +(@var{pattern-list}) +Matches one or more occurrences of the given patterns. + +@item @@(@var{pattern-list}) +Matches one of the given patterns. + +@item !(@var{pattern-list}) +Matches anything except one of the given patterns. +@end table + +Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. +Using separate matches against shorter strings, or using arrays of +strings instead of a single long string, may be faster. + +@node Quote Removal +@subsection Quote Removal + +After the preceding expansions, all unquoted occurrences of the +characters @samp{\}, @samp{'}, and @samp{"} that did not +result from one of the above expansions are removed. + +@node Redirections +@section Redirections +@cindex redirection + +Before a command is executed, its input and output +may be @var{redirected} +using a special notation interpreted by the shell. +Redirection allows commands' file handles to be +duplicated, opened, closed, +made to refer to different files, +and can change the files the command reads from and writes to. +Redirection may also be used to modify file handles in the +current shell execution environment. The following redirection +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. + +Each redirection that may be preceded by a file descriptor number +may instead be preceded by a word of the form @{@var{varname}@}. +In this case, for each redirection operator except +>&- and <&-, the shell will allocate a file descriptor greater +than 10 and assign it to @{@var{varname}@}. If >&- or <&- is preceded +by @{@var{varname}@}, the value of @var{varname} defines the file +descriptor to close. +If @{@var{varname}@} is supplied, the redirection persists beyond +the scope of the command, allowing the shell programmer to manage +the file descriptor's lifetime manually. + +In the following descriptions, if the file descriptor number is +omitted, and the first character of the redirection operator is +@samp{<}, the redirection refers to the standard input (file +descriptor 0). If the first character of the redirection operator +is @samp{>}, 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, filename 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 +@example +ls > @var{dirlist} 2>&1 +@end example +@noindent +directs both standard output (file descriptor 1) and standard error +(file descriptor 2) to the file @var{dirlist}, while the command +@example +ls 2>&1 > @var{dirlist} +@end example +@noindent +directs only the standard output to file @var{dirlist}, +because the standard error was made a copy of the standard output +before the standard output was redirected to @var{dirlist}. + +Bash handles several filenames specially when they are used in +redirections, as described in the following table. +If the operating system on which Bash is running provides these +special files, bash will use them; otherwise it will emulate them +internally with the behavior described below. + +@table @code +@item /dev/fd/@var{fd} +If @var{fd} is a valid integer, file descriptor @var{fd} is duplicated. + +@item /dev/stdin +File descriptor 0 is duplicated. + +@item /dev/stdout +File descriptor 1 is duplicated. + +@item /dev/stderr +File descriptor 2 is duplicated. + +@item /dev/tcp/@var{host}/@var{port} +If @var{host} is a valid hostname or Internet address, and @var{port} +is an integer port number or service name, Bash attempts to open +the corresponding TCP socket. + +@item /dev/udp/@var{host}/@var{port} +If @var{host} is a valid hostname or Internet address, and @var{port} +is an integer port number or service name, Bash attempts to open +the corresponding UDP socket. +@end table + +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. + +@subsection Redirecting Input +Redirection of input causes the file whose name results from +the expansion of @var{word} +to be opened for reading on file descriptor @code{n}, +or the standard input (file descriptor 0) if @code{n} +is not specified. + +The general format for redirecting input is: +@example +[@var{n}]<@var{word} +@end example + +@subsection Redirecting Output +Redirection of output causes the file whose name results from +the expansion of @var{word} +to be opened for writing on file descriptor @var{n}, +or the standard output (file descriptor 1) if @var{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: +@example +[@var{n}]>[|]@var{word} +@end example + +If the redirection operator is @samp{>}, and the @code{noclobber} +option to the @code{set} builtin has been enabled, the redirection +will fail if the file whose name results from the expansion of +@var{word} exists and is a regular file. +If the redirection operator is @samp{>|}, or the redirection operator is +@samp{>} and the @code{noclobber} option is not enabled, the redirection +is attempted even if the file named by @var{word} exists. + +@subsection Appending Redirected Output +Redirection of output in this fashion +causes the file whose name results from +the expansion of @var{word} +to be opened for appending on file descriptor @var{n}, +or the standard output (file descriptor 1) if @var{n} +is not specified. If the file does not exist it is created. + +The general format for appending output is: +@example +[@var{n}]>>@var{word} +@end example + +@subsection Redirecting Standard Output and Standard Error +This construct allows both the +standard output (file descriptor 1) and +the standard error output (file descriptor 2) +to be redirected to the file whose name is the +expansion of @var{word}. + +There are two formats for redirecting standard output and +standard error: +@example +&>@var{word} +@end example +@noindent +and +@example +>&@var{word} +@end example +@noindent +Of the two forms, the first is preferred. +This is semantically equivalent to +@example +>@var{word} 2>&1 +@end example +When using the second form, @var{word} may not expand to a number or +@samp{-}. If it does, other redirection operators apply +(see Duplicating File Descriptors below) for compatibility reasons. + +@subsection Appending Standard Output and Standard Error +This construct allows both the +standard output (file descriptor 1) and +the standard error output (file descriptor 2) +to be appended to the file whose name is the +expansion of @var{word}. + +The format for appending standard output and standard error is: +@example +&>>@var{word} +@end example +@noindent +This is semantically equivalent to +@example +>>@var{word} 2>&1 +@end example +(see Duplicating File Descriptors below). + +@subsection Here Documents +This type of redirection instructs the shell to read input from the +current source until a line containing only @var{word} +(with no trailing blanks) is seen. All of +the lines read up to that point are then used as the standard +input (or file descriptor @var{n} if @var{n} is specified) for a command. + +The format of here-documents is: +@example +[@var{n}]<<[@minus{}]@var{word} + @var{here-document} +@var{delimiter} +@end example + +No parameter and variable expansion, command substitution, +arithmetic expansion, or filename expansion is performed on +@var{word}. If any part of @var{word} is quoted, the +@var{delimiter} is the result of quote removal on @var{word}, +and the lines in the here-document are not expanded. +If @var{word} is unquoted, +all lines of the here-document are subjected to +parameter expansion, command substitution, and arithmetic expansion, +the character sequence @code{\newline} is ignored, and @samp{\} +must be used to quote the characters +@samp{\}, @samp{$}, and @samp{`}. + +If the redirection operator is @samp{<<-}, +then all leading tab characters are stripped from input lines and the +line containing @var{delimiter}. +This allows here-documents within shell scripts to be indented in a +natural fashion. + +@subsection Here Strings +A variant of here documents, the format is: +@example +[@var{n}]<<< @var{word} +@end example + +The @var{word} undergoes +tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote removal. +Filename expansion and word splitting are not performed. +The result is supplied as a single string, +with a newline appended, +to the command on its +standard input (or file descriptor @var{n} if @var{n} is specified). + +@subsection Duplicating File Descriptors +The redirection operator +@example +[@var{n}]<&@var{word} +@end example +@noindent +is used to duplicate input file descriptors. +If @var{word} +expands to one or more digits, the file descriptor denoted by @var{n} +is made to be a copy of that file descriptor. +If the digits in @var{word} do not specify a file descriptor open for +input, a redirection error occurs. +If @var{word} +evaluates to @samp{-}, file descriptor @var{n} is closed. +If @var{n} is not specified, the standard input (file descriptor 0) is used. + +The operator +@example +[@var{n}]>&@var{word} +@end example +@noindent +is used similarly to duplicate output file descriptors. If +@var{n} is not specified, the standard output (file descriptor 1) is used. +If the digits in @var{word} do not specify a file descriptor open for +output, a redirection error occurs. +If @var{word} +evaluates to @samp{-}, file descriptor @var{n} is closed. +As a special case, if @var{n} is omitted, and @var{word} does not +expand to one or more digits or @samp{-}, the standard output and standard +error are redirected as described previously. + +@subsection Moving File Descriptors +The redirection operator +@example +[@var{n}]<&@var{digit}- +@end example +@noindent +moves the file descriptor @var{digit} to file descriptor @var{n}, +or the standard input (file descriptor 0) if @var{n} is not specified. +@var{digit} is closed after being duplicated to @var{n}. + +Similarly, the redirection operator +@example +[@var{n}]>&@var{digit}- +@end example +@noindent +moves the file descriptor @var{digit} to file descriptor @var{n}, +or the standard output (file descriptor 1) if @var{n} is not specified. + +@subsection Opening File Descriptors for Reading and Writing +The redirection operator +@example +[@var{n}]<>@var{word} +@end example +@noindent +causes the file whose name is the expansion of @var{word} +to be opened for both reading and writing on file descriptor +@var{n}, or on file descriptor 0 if @var{n} +is not specified. If the file does not exist, it is created. + +@node Executing Commands +@section Executing Commands + +@menu +* Simple Command Expansion:: How Bash expands simple commands before + executing them. +* Command Search and Execution:: How Bash finds commands and runs them. +* Command Execution Environment:: The environment in which Bash + executes commands that are not + shell builtins. +* Environment:: The environment given to a command. +* Exit Status:: The status returned by commands and how Bash + interprets it. +* Signals:: What happens when Bash or a command it runs + receives a signal. +@end menu + +@node Simple Command Expansion +@subsection Simple Command Expansion +@cindex command expansion + +When a simple command is executed, the shell performs the following +expansions, assignments, and redirections, from left to right, in +the following order. + +@enumerate +@item +The words that the parser has marked as variable assignments (those +preceding the command name) and redirections are saved for later +processing. + +@item +The words that are not variable assignments or redirections are +expanded (@pxref{Shell Expansions}). +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. + +@item +Redirections are performed as described above (@pxref{Redirections}). + +@item +The text after the @samp{=} in each variable assignment undergoes tilde +expansion, parameter expansion, command substitution, arithmetic expansion, +and quote removal before being assigned to the variable. +@end enumerate + +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. + +@node Command Search and Execution +@subsection Command Search and Execution +@cindex command execution +@cindex command search + +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. + +@enumerate +@item +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 in @ref{Shell Functions}. + +@item +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. + +@item +If the name is neither a shell function nor a builtin, +and contains no slashes, Bash searches each element of +@env{$PATH} for a directory containing an executable file +by that name. Bash uses a hash table to remember the full +pathnames of executable files to avoid multiple @env{PATH} searches +(see the description of @code{hash} in @ref{Bourne Shell Builtins}). +A full search of the directories in @env{$PATH} +is performed only if the command is not found in the hash table. +If the search is unsuccessful, the shell searches for a defined shell +function named @code{command_not_found_handle}. +If that function exists, it is invoked in a separate execution environment +with the original command and +the original command's arguments as its arguments, and the function's +exit status becomes the exit status of that subshell. +If that function is not defined, the shell prints an error +message and returns an exit status of 127. + +@item +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 supplied, if any. + +@item +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 +@var{shell script} and the shell executes it as described in +@ref{Shell Scripts}. + +@item +If the command was not begun asynchronously, the shell waits for +the command to complete and collects its exit status. + +@end enumerate + +@node Command Execution Environment +@subsection Command Execution Environment +@cindex execution environment + +The shell has an @var{execution environment}, which consists of the +following: + +@itemize @bullet +@item +open files inherited by the shell at invocation, as modified by +redirections supplied to the @code{exec} builtin + +@item +the current working directory as set by @code{cd}, @code{pushd}, or +@code{popd}, or inherited by the shell at invocation + +@item +the file creation mode mask as set by @code{umask} or inherited from +the shell's parent + +@item +current traps set by @code{trap} + +@item +shell parameters that are set by variable assignment or with @code{set} +or inherited from the shell's parent in the environment + +@item +shell functions defined during execution or inherited from the shell's +parent in the environment + +@item +options enabled at invocation (either by default or with command-line +arguments) or by @code{set} + +@item +options enabled by @code{shopt} (@pxref{The Shopt Builtin}) + +@item +shell aliases defined with @code{alias} (@pxref{Aliases}) + +@item +various process @sc{id}s, including those of background jobs +(@pxref{Lists}), the value of @code{$$}, and the value of +@env{$PPID} + +@end itemize + +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. + +@itemize @bullet +@item +the shell's open files, plus any modifications and additions specified +by redirections to the command + +@item +the current working directory + +@item +the file creation mode mask + +@item +shell variables and functions marked for export, along with variables +exported for the command, passed in the environment (@pxref{Environment}) + +@item +traps caught by the shell are reset to the values inherited from the +shell's parent, and traps ignored by the shell are ignored + +@end itemize + +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. + +Subshells spawned to execute command substitutions inherit the value of +the @option{-e} option from the parent shell. When not in @sc{posix} mode, +Bash clears the @option{-e} option in such subshells. + +If a command is followed by a @samp{&} and job control is not active, the +default standard input for the command is the empty file @file{/dev/null}. +Otherwise, the invoked command inherits the file descriptors of the calling +shell as modified by redirections. + +@node Environment +@subsection Environment +@cindex environment + +When a program is invoked it is given an array of strings +called the @var{environment}. +This is a list of name-value pairs, of the form @code{name=value}. + +Bash 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 @var{export} +to child processes. Executed commands inherit the environment. +The @code{export} and @samp{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 @code{unset} and @samp{export -n} +commands, plus any additions via the @code{export} and +@samp{declare -x} commands. + +The environment for any simple command +or function may be augmented temporarily by prefixing it with +parameter assignments, as described in @ref{Shell Parameters}. +These assignment statements affect only the environment seen +by that command. + +If the @option{-k} option is set (@pxref{The Set Builtin}), 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 @samp{$_} +is set to the full pathname of the command and passed to that +command in its environment. + +@node Exit Status +@subsection Exit Status +@cindex exit status + +The exit status of an executed command is the value returned by the +@var{waitpid} system call or equivalent function. Exit statuses +fall between 0 and 255, though, as explained below, the shell may +use values above 125 specially. Exit statuses from shell builtins and +compound commands are also limited to this range. Under certain +circumstances, the shell will use special values to indicate specific +failure modes. + +For the shell's purposes, a command which exits with a +zero exit status has succeeded. +A non-zero exit status indicates failure. +This seemingly counter-intuitive scheme is used so there +is one well-defined way to indicate success and a variety of +ways to indicate various failure modes. +When a command terminates on a fatal signal whose number is @var{N}, +Bash uses the value 128+@var{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. + +The exit status is used by the Bash conditional commands +(@pxref{Conditional Constructs}) and some of the list +constructs (@pxref{Lists}). + +All of the Bash builtins return an exit status of zero if they succeed +and a non-zero status on failure, so they may be used by the +conditional and list constructs. +All builtins return an exit status of 2 to indicate incorrect usage, +generally invalid options or missing arguments. + +@node Signals +@subsection Signals +@cindex signal handling + +When Bash is interactive, in the absence of any traps, it ignores +@code{SIGTERM} (so that @samp{kill 0} does not kill an interactive shell), +and @code{SIGINT} +is caught and handled (so that the @code{wait} builtin is interruptible). +When Bash receives a @code{SIGINT}, it breaks out of any executing loops. +In all cases, Bash ignores @code{SIGQUIT}. +If job control is in effect (@pxref{Job Control}), Bash +ignores @code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}. + +Non-builtin commands started 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 @code{SIGINT} and @code{SIGQUIT} in addition to these inherited +handlers. +Commands run as a result of +command substitution ignore the keyboard-generated job control signals +@code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}. + +The shell exits by default upon receipt of a @code{SIGHUP}. +Before exiting, an interactive shell resends the @code{SIGHUP} to +all jobs, running or stopped. +Stopped jobs are sent @code{SIGCONT} to ensure that they receive +the @code{SIGHUP}. +To prevent the shell from sending the @code{SIGHUP} signal to a +particular job, it should be removed +from the jobs table with the @code{disown} +builtin (@pxref{Job Control Builtins}) or marked +to not receive @code{SIGHUP} using @code{disown -h}. + +If the @code{huponexit} shell option has been set with @code{shopt} +(@pxref{The Shopt Builtin}), Bash sends a @code{SIGHUP} to all jobs when +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 @code{wait} builtin, the reception of a signal for +which a trap has been set will cause the @code{wait} builtin to return +immediately with an exit status greater than 128, immediately after +which the trap is executed. + +@node Shell Scripts +@section Shell Scripts +@cindex shell script + +A shell script is a text file containing shell commands. When such +a file is used as the first non-option argument when invoking Bash, +and neither the @option{-c} nor @option{-s} option is supplied +(@pxref{Invoking Bash}), +Bash reads and executes commands from the file, then exits. This +mode of operation creates a non-interactive shell. The shell first +searches for the file in the current directory, and looks in the +directories in @env{$PATH} if not found there. + +When Bash runs +a shell script, it sets the special parameter @code{0} to the name +of the file, rather than the name of the shell, and the positional +parameters are set to the remaining arguments, if any are given. +If no additional arguments are supplied, the positional parameters +are unset. + +A shell script may be made executable by using the @code{chmod} command +to turn on the execute bit. When Bash finds such a file while +searching the @env{$PATH} for a command, it spawns a subshell to +execute it. In other words, executing +@example +filename @var{arguments} +@end example +@noindent +is equivalent to executing +@example +bash filename @var{arguments} +@end example + +@noindent +if @code{filename} is an executable shell script. +This subshell reinitializes itself, so that the effect is as if a +new shell had been invoked to interpret the script, with the +exception that the locations of commands remembered by the parent +(see the description of @code{hash} in @ref{Bourne Shell Builtins}) +are retained by the child. + +Most versions of Unix make this a part of the operating system's command +execution mechanism. If the first line of a script begins with +the two characters @samp{#!}, the remainder of the line specifies +an interpreter for the program and, depending on the operating system, one +or more optional arguments for that interpreter. +Thus, you can specify Bash, @code{awk}, Perl, or some other +interpreter and write the rest of the script file in that language. + +The arguments to the interpreter +consist of one or more optional arguments following the interpreter +name on the first line of the script file, followed by the name of +the script file, followed by the rest of the arguments supplied to the +script. +The details of how the interpreter line is split into an interpreter name +and a set of arguments vary across systems. +Bash will perform this action on operating systems that do not handle it +themselves. +Note that some older versions of Unix limit the interpreter +name and a single argument to a maximum of 32 characters, so it's not +portable to assume that using more than one argument will work. + +Bash scripts often begin with @code{#! /bin/bash} (assuming that +Bash has been installed in @file{/bin}), since this ensures that +Bash will be used to interpret the script, even if it is executed +under another shell. It's a common idiom to use @code{env} to find +@code{bash} even if it's been installed in another directory: +@code{#!/usr/bin/env bash} will find the first occurrence of @code{bash} +in @env{$PATH}. + +@node Shell Builtin Commands +@chapter Shell Builtin Commands + +@menu +* Bourne Shell Builtins:: Builtin commands inherited from the Bourne + Shell. +* Bash Builtins:: Table of builtins specific to Bash. +* Modifying Shell Behavior:: Builtins to modify shell attributes and + optional behavior. +* Special Builtins:: Builtin commands classified specially by + POSIX. +@end menu + +Builtin commands are contained within the shell itself. +When the name of a builtin command is used as the first word of +a simple command (@pxref{Simple Commands}), the shell executes +the command directly, without invoking another program. +Builtin commands are necessary to implement functionality impossible +or inconvenient to obtain with separate utilities. + +This section briefly describes the builtins which Bash inherits from +the Bourne Shell, as well as the builtin commands which are unique +to or have been extended in Bash. + +Several builtin commands are described in other chapters: builtin +commands which provide the Bash interface to the job control +facilities (@pxref{Job Control Builtins}), the directory stack +(@pxref{Directory Stack Builtins}), the command history +(@pxref{Bash History Builtins}), and the programmable completion +facilities (@pxref{Programmable Completion Builtins}). + +Many of the builtins have been extended by @sc{posix} or Bash. + +Unless otherwise noted, each builtin command documented as accepting +options preceded by @samp{-} accepts @samp{--} +to signify the end of the options. +The @code{:}, @code{true}, @code{false}, and @code{test}/@code{[} +builtins do not accept options and do not treat @samp{--} specially. +The @code{exit}, @code{logout}, @code{return}, +@code{break}, @code{continue}, @code{let}, +and @code{shift} builtins accept and process arguments beginning +with @samp{-} without requiring @samp{--}. +Other builtins that accept arguments but are not specified as accepting +options interpret arguments beginning with @samp{-} as invalid options and +require @samp{--} to prevent this interpretation. + +@node Bourne Shell Builtins +@section Bourne Shell Builtins + +The following shell builtin commands are inherited from the Bourne Shell. +These commands are implemented as specified by the @sc{posix} standard. + +@table @code +@item : @r{(a colon)} +@btindex : +@example +: [@var{arguments}] +@end example + +Do nothing beyond expanding @var{arguments} and performing redirections. +The return status is zero. + +@item . @r{(a period)} +@btindex . +@example +. @var{filename} [@var{arguments}] +@end example + +Read and execute commands from the @var{filename} argument in the +current shell context. If @var{filename} does not contain a slash, +the @env{PATH} variable is used to find @var{filename}. +When Bash is not in @sc{posix} mode, the current directory is searched +if @var{filename} is not found in @env{$PATH}. +If any @var{arguments} are supplied, they become the positional +parameters when @var{filename} is executed. Otherwise the positional +parameters are unchanged. +If the @option{-T} option is enabled, @code{source} inherits any trap on +@code{DEBUG}; if it is not, any @code{DEBUG} trap string is saved and +restored around the call to @code{source}, and @code{source} unsets the +@code{DEBUG} trap while it executes. +If @option{-T} is not set, and the sourced file changes +the @code{DEBUG} trap, the new value is retained when @code{source} completes. +The return status is the exit status of the last command executed, or +zero if no commands are executed. If @var{filename} is not found, or +cannot be read, the return status is non-zero. +This builtin is equivalent to @code{source}. + +@item break +@btindex break +@example +break [@var{n}] +@end example + +Exit from a @code{for}, @code{while}, @code{until}, or @code{select} loop. +If @var{n} is supplied, the @var{n}th enclosing loop is exited. +@var{n} must be greater than or equal to 1. +The return status is zero unless @var{n} is not greater than or equal to 1. + +@item cd +@btindex cd +@example +cd [-L|[-P [-e]] [-@@] [@var{directory}] +@end example + +Change the current working directory to @var{directory}. +If @var{directory} is not supplied, the value of the @env{HOME} +shell variable is used. +Any additional arguments following @var{directory} are ignored. +If the shell variable +@env{CDPATH} exists, it is used as a search path: +each directory name in @env{CDPATH} is searched for +@var{directory}, with alternative directory names in @env{CDPATH} +separated by a colon (@samp{:}). +If @var{directory} begins with a slash, @env{CDPATH} is not used. + +The @option{-P} option means to not follow symbolic links: symbolic links +are resolved while @code{cd} is traversing @var{directory} and before +processing an instance of @samp{..} in @var{directory}. + +By default, or when the @option{-L} option is supplied, symbolic links +in @var{directory} are resolved after @code{cd} processes an instance +of @samp{..} in @var{directory}. + +If @samp{..} appears in @var{directory}, it is processed by removing the +immediately preceding pathname component, back to a slash or the beginning +of @var{directory}. + +If the @option{-e} option is supplied with @option{-P} +and the current working directory cannot be successfully determined +after a successful directory change, @code{cd} will return an unsuccessful +status. + +On systems that support it, the @option{-@@} option presents the extended +attributes associated with a file as a directory. + +If @var{directory} is @samp{-}, it is converted to @env{$OLDPWD} +before the directory change is attempted. + +If a non-empty directory name from @env{CDPATH} is used, or if +@samp{-} 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 status is zero if the directory is successfully changed, +non-zero otherwise. + +@item continue +@btindex continue +@example +continue [@var{n}] +@end example + +Resume the next iteration of an enclosing @code{for}, @code{while}, +@code{until}, or @code{select} loop. +If @var{n} is supplied, the execution of the @var{n}th enclosing loop +is resumed. +@var{n} must be greater than or equal to 1. +The return status is zero unless @var{n} is not greater than or equal to 1. + +@item eval +@btindex eval +@example +eval [@var{arguments}] +@end example + +The arguments are concatenated together into a single command, which is +then read and executed, and its exit status returned as the exit status +of @code{eval}. +If there are no arguments or only empty arguments, the return status is +zero. + +@item exec +@btindex exec +@example +exec [-cl] [-a @var{name}] [@var{command} [@var{arguments}]] +@end example + +If @var{command} +is supplied, it replaces the shell without creating a new process. +If the @option{-l} option is supplied, the shell places a dash at the +beginning of the zeroth argument passed to @var{command}. +This is what the @code{login} program does. +The @option{-c} option causes @var{command} to be executed with an empty +environment. +If @option{-a} is supplied, the shell passes @var{name} as the zeroth +argument to @var{command}. +If @var{command} +cannot be executed for some reason, a non-interactive shell exits, +unless the @code{execfail} shell option +is enabled. In that case, it returns failure. +An interactive shell returns failure if the file cannot be executed. +A subshell exits unconditionally if @code{exec} fails. +If no @var{command} is specified, redirections may be used to affect +the current shell environment. If there are no redirection errors, the +return status is zero; otherwise the return status is non-zero. + +@item exit +@btindex exit +@example +exit [@var{n}] +@end example + +Exit the shell, returning a status of @var{n} to the shell's parent. +If @var{n} is omitted, the exit status is that of the last command executed. +Any trap on @code{EXIT} is executed before the shell terminates. + +@item export +@btindex export +@example +export [-fn] [-p] [@var{name}[=@var{value}]] +@end example + +Mark each @var{name} to be passed to child processes +in the environment. If the @option{-f} option is supplied, the @var{name}s +refer to shell functions; otherwise the names refer to shell variables. +The @option{-n} option means to no longer mark each @var{name} for export. +If no @var{names} are supplied, or if the @option{-p} option is given, a +list of names of all exported variables is displayed. +The @option{-p} option displays output in a form that may be reused as input. +If a variable name is followed by =@var{value}, the value of +the variable is set to @var{value}. + +The return status is zero unless an invalid option is supplied, one of +the names is not a valid shell variable name, or @option{-f} is supplied +with a name that is not a shell function. + +@item getopts +@btindex getopts +@example +getopts @var{optstring} @var{name} [@var{arg} @dots{}] +@end example + +@code{getopts} is used by shell scripts to parse positional parameters. +@var{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 whitespace. +The colon (@samp{:}) and question mark (@samp{?}) may not be +used as option characters. +Each time it is invoked, @code{getopts} +places the next option in the shell variable @var{name}, initializing +@var{name} if it does not exist, +and the index of the next argument to be processed into the +variable @env{OPTIND}. +@env{OPTIND} is initialized to 1 each time the shell or a shell script +is invoked. +When an option requires an argument, +@code{getopts} places that argument into the variable @env{OPTARG}. +The shell does not reset @env{OPTIND} automatically; it must be manually +reset between multiple calls to @code{getopts} within the same shell +invocation if a new set of parameters is to be used. + +When the end of options is encountered, @code{getopts} exits with a +return value greater than zero. +@env{OPTIND} is set to the index of the first non-option argument, +and @var{name} is set to @samp{?}. + +@code{getopts} +normally parses the positional parameters, but if more arguments are +supplied as @var{arg} values, @code{getopts} parses those instead. + +@code{getopts} can report errors in two ways. If the first character of +@var{optstring} is a colon, @var{silent} +error reporting is used. In normal operation, diagnostic messages +are printed when invalid options or missing option arguments are +encountered. +If the variable @env{OPTERR} +is set to 0, no error messages will be displayed, even if the first +character of @code{optstring} is not a colon. + +If an invalid option is seen, +@code{getopts} places @samp{?} into @var{name} and, if not silent, +prints an error message and unsets @env{OPTARG}. +If @code{getopts} is silent, the option character found is placed in +@env{OPTARG} and no diagnostic message is printed. + +If a required argument is not found, and @code{getopts} +is not silent, a question mark (@samp{?}) is placed in @var{name}, +@code{OPTARG} is unset, and a diagnostic message is printed. +If @code{getopts} is silent, then a colon (@samp{:}) is placed in +@var{name} and @env{OPTARG} is set to the option character found. + +@item hash +@btindex hash +@example +hash [-r] [-p @var{filename}] [-dt] [@var{name}] +@end example + +Each time @code{hash} is invoked, it remembers the full pathnames of the +commands specified as @var{name} arguments, +so they need not be searched for on subsequent invocations. +The commands are found by searching through the directories listed in +@env{$PATH}. +Any previously-remembered pathname is discarded. +The @option{-p} option inhibits the path search, and @var{filename} is +used as the location of @var{name}. +The @option{-r} option causes the shell to forget all remembered locations. +The @option{-d} option causes the shell to forget the remembered location +of each @var{name}. +If the @option{-t} option is supplied, the full pathname to which each +@var{name} corresponds is printed. If multiple @var{name} arguments are +supplied with @option{-t}, the @var{name} is printed before the hashed +full pathname. +The @option{-l} option causes output to be displayed in a format +that may be reused as input. +If no arguments are given, or if only @option{-l} is supplied, +information about remembered commands is printed. +The return status is zero unless a @var{name} is not found or an invalid +option is supplied. + +@item pwd +@btindex pwd +@example +pwd [-LP] +@end example + +Print the absolute pathname of the current working directory. +If the @option{-P} option is supplied, the pathname printed will not +contain symbolic links. +If the @option{-L} option is supplied, the pathname printed may contain +symbolic links. +The return status is zero unless an error is encountered while +determining the name of the current directory or an invalid option +is supplied. + +@item readonly +@btindex readonly +@example +readonly [-aAf] [-p] [@var{name}[=@var{value}]] @dots{} +@end example + +Mark each @var{name} as readonly. +The values of these names may not be changed by subsequent assignment. +If the @option{-f} option is supplied, each @var{name} refers to a shell +function. +The @option{-a} option means each @var{name} refers to an indexed +array variable; the @option{-A} option means each @var{name} refers +to an associative array variable. +If both options are supplied, @option{-A} takes precedence. +If no @var{name} arguments are given, or if the @option{-p} +option is supplied, a list of all readonly names is printed. +The other options may be used to restrict the output to a subset of +the set of readonly names. +The @option{-p} option causes output to be displayed in a format that +may be reused as input. +If a variable name is followed by =@var{value}, the value of +the variable is set to @var{value}. +The return status is zero unless an invalid option is supplied, one of +the @var{name} arguments is not a valid shell variable or function name, +or the @option{-f} option is supplied with a name that is not a shell function. + +@item return +@btindex return +@example +return [@var{n}] +@end example + +Cause a shell function to stop executing and return the value @var{n} +to its caller. +If @var{n} is not supplied, the return value is the exit status of the +last command executed in the function. +If @code{return} is executed by a trap handler, the last command used to +determine the status is the last command executed before the trap handler. +If @code{return} is executed during a @code{DEBUG} trap, the last command +used to determine the status is the last command executed by the trap +handler before @code{return} was invoked. +@code{return} may also be used to terminate execution of a script +being executed with the @code{.} (@code{source}) builtin, +returning either @var{n} or +the exit status of the last command executed within the script as the exit +status of the script. +If @var{n} is supplied, the return value is its least significant +8 bits. +Any command associated with the @code{RETURN} trap is executed +before execution resumes after the function or script. +The return status is non-zero if @code{return} is supplied a non-numeric +argument or is used outside a function +and not during the execution of a script by @code{.} or @code{source}. + +@item shift +@btindex shift +@example +shift [@var{n}] +@end example + +Shift the positional parameters to the left by @var{n}. +The positional parameters from @var{n}+1 @dots{} @code{$#} are +renamed to @code{$1} @dots{} @code{$#}-@var{n}. +Parameters represented by the numbers @code{$#} down to @code{$#}-@var{n}+1 +are unset. +@var{n} must be a non-negative number less than or equal to @code{$#}. +If @var{n} is zero or greater than @code{$#}, the positional parameters +are not changed. +If @var{n} is not supplied, it is assumed to be 1. +The return status is zero unless @var{n} is greater than @code{$#} or +less than zero, non-zero otherwise. + +@item test +@itemx [ +@btindex test +@btindex [ +@example +test @var{expr} +@end example + +Evaluate a conditional expression @var{expr} and return a status of 0 +(true) or 1 (false). +Each operator and operand must be a separate argument. +Expressions are composed of the primaries described below in +@ref{Bash Conditional Expressions}. +@code{test} does not accept any options, nor does it accept and ignore +an argument of @option{--} as signifying the end of options. + +When the @code{[} form is used, the last argument to the command must +be a @code{]}. + +Expressions may be combined using the following operators, listed in +decreasing order of precedence. +The evaluation depends on the number of arguments; see below. +Operator precedence is used when there are five or more arguments. + +@table @code +@item ! @var{expr} +True if @var{expr} is false. + +@item ( @var{expr} ) +Returns the value of @var{expr}. +This may be used to override the normal precedence of operators. + +@item @var{expr1} -a @var{expr2} +True if both @var{expr1} and @var{expr2} are true. + +@item @var{expr1} -o @var{expr2} +True if either @var{expr1} or @var{expr2} is true. +@end table + +The @code{test} and @code{[} builtins evaluate conditional +expressions using a set of rules based on the number of arguments. + +@table @asis +@item 0 arguments +The expression is false. + +@item 1 argument +The expression is true if, and only if, the argument is not null. + +@item 2 arguments +If the first argument is @samp{!}, the expression is true if and +only if the second argument is null. +If the first argument is one of the unary conditional operators +(@pxref{Bash Conditional Expressions}), the expression +is true if the unary test is true. +If the first argument is not a valid unary operator, the expression is +false. + +@item 3 arguments +The following conditions are applied in the order listed. + +@enumerate +@item +If the second argument is one of the binary conditional +operators (@pxref{Bash Conditional Expressions}), the +result of the expression is the result of the binary test using the +first and third arguments as operands. +The @samp{-a} and @samp{-o} operators are considered binary operators +when there are three arguments. +@item +If the first argument is @samp{!}, the value is the negation of +the two-argument test using the second and third arguments. +@item +If the first argument is exactly @samp{(} and the third argument is +exactly @samp{)}, the result is the one-argument test of the second +argument. +@item +Otherwise, the expression is false. +@end enumerate + +@item 4 arguments +If the first argument is @samp{!}, 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. + +@item 5 or more arguments +The expression is parsed and evaluated according to precedence +using the rules listed above. +@end table + +When used with @code{test} or @samp{[}, the @samp{<} and @samp{>} +operators sort lexicographically using ASCII ordering. + +@item times +@btindex times +@example +times +@end example + +Print out the user and system times used by the shell and its children. +The return status is zero. + +@item trap +@btindex trap +@example +trap [-lp] [@var{arg}] [@var{sigspec} @dots{}] +@end example + +The commands in @var{arg} are to be read and executed when the +shell receives signal @var{sigspec}. If @var{arg} is absent (and +there is a single @var{sigspec}) or +equal to @samp{-}, each specified signal's disposition is reset +to the value it had when the shell was started. +If @var{arg} is the null string, then the signal specified by +each @var{sigspec} is ignored by the shell and commands it invokes. +If @var{arg} is not present and @option{-p} has been supplied, +the shell displays the trap commands associated with each @var{sigspec}. +If no arguments are supplied, or +only @option{-p} is given, @code{trap} prints the list of commands +associated with each signal number in a form that may be reused as +shell input. +The @option{-l} option causes the shell to print a list of signal names +and their corresponding numbers. +Each @var{sigspec} is either a signal name or a signal number. +Signal names are case insensitive and the @code{SIG} prefix is optional. + +If a @var{sigspec} +is @code{0} or @code{EXIT}, @var{arg} is executed when the shell exits. +If a @var{sigspec} is @code{DEBUG}, the command @var{arg} is executed +before every simple command, @code{for} command, @code{case} command, +@code{select} command, every arithmetic @code{for} command, and before +the first command executes in a shell function. +Refer to the description of the @code{extdebug} option to the +@code{shopt} builtin (@pxref{The Shopt Builtin}) for details of its +effect on the @code{DEBUG} trap. +If a @var{sigspec} is @code{RETURN}, the command @var{arg} is executed +each time a shell function or a script executed with the @code{.} or +@code{source} builtins finishes executing. + +If a @var{sigspec} is @code{ERR}, the command @var{arg} +is executed whenever +a pipeline (which may consist of a single simple +command), a list, or a compound command returns a +non-zero exit status, +subject to the following conditions. +The @code{ERR} trap is not executed if the failed command is part of the +command list immediately following an @code{until} or @code{while} keyword, +part of the test following the @code{if} or @code{elif} reserved words, +part of a command executed in a @code{&&} or @code{||} list +except the command following the final @code{&&} or @code{||}, +any command in a pipeline but the last, +or if the command's return +status is being inverted using @code{!}. +These are the same conditions obeyed by the @code{errexit} (@option{-e}) +option. + +Signals ignored upon entry to the shell cannot be trapped or reset. +Trapped signals that are not being ignored are reset to their original +values in a subshell or subshell environment when one is created. + +The return status is zero unless a @var{sigspec} does not specify a +valid signal. + +@item umask +@btindex umask +@example +umask [-p] [-S] [@var{mode}] +@end example + +Set the shell process's file creation mask to @var{mode}. If +@var{mode} begins with a digit, it is interpreted as an octal number; +if not, it is interpreted as a symbolic mode mask similar +to that accepted by the @code{chmod} command. If @var{mode} is +omitted, the current value of the mask is printed. If the @option{-S} +option is supplied without a @var{mode} argument, the mask is printed +in a symbolic format. +If the @option{-p} option is supplied, and @var{mode} +is omitted, the output is in a form that may be reused as input. +The return status is zero if the mode is successfully changed or if +no @var{mode} argument is supplied, and non-zero otherwise. + +Note that when the mode is interpreted as an octal number, each number +of the umask is subtracted from @code{7}. Thus, a umask of @code{022} +results in permissions of @code{755}. + +@item unset +@btindex unset +@example +unset [-fnv] [@var{name}] +@end example + +Remove each variable or function @var{name}. +If the @option{-v} option is given, each +@var{name} refers to a shell variable and that variable is removed. +If the @option{-f} option is given, the @var{name}s refer to shell +functions, and the function definition is removed. +If the @option{-n} option is supplied, and @var{name} is a variable with +the @var{nameref} attribute, @var{name} will be unset rather than the +variable it references. +@option{-n} has no effect if the @option{-f} option is supplied. +If no options are supplied, each @var{name} refers to a variable; if +there is no variable by that name, a function with that name, if any, is +unset. +Readonly variables and functions may not be unset. +Some shell variables lose their special behavior if they are unset; such +behavior is noted in the description of the individual variables. +The return status is zero unless a @var{name} is readonly. +@end table + +@node Bash Builtins +@section Bash Builtin Commands + +This section describes builtin commands which are unique to +or have been extended in Bash. +Some of these commands are specified in the @sc{posix} standard. + +@table @code + +@item alias +@btindex alias +@example +alias [-p] [@var{name}[=@var{value}] @dots{}] +@end example + +Without arguments or with the @option{-p} option, @code{alias} prints +the list of aliases on the standard output in a form that allows +them to be reused as input. +If arguments are supplied, an alias is defined for each @var{name} +whose @var{value} is given. If no @var{value} is given, the name +and value of the alias is printed. +Aliases are described in @ref{Aliases}. + +@item bind +@btindex bind +@example +bind [-m @var{keymap}] [-lpsvPSVX] +bind [-m @var{keymap}] [-q @var{function}] [-u @var{function}] [-r @var{keyseq}] +bind [-m @var{keymap}] -f @var{filename} +bind [-m @var{keymap}] -x @var{keyseq:shell-command} +bind [-m @var{keymap}] @var{keyseq:function-name} +bind [-m @var{keymap}] @var{keyseq:readline-command} +@end example + +Display current Readline (@pxref{Command Line Editing}) +key and function bindings, +bind a key sequence to a Readline function or macro, +or set a Readline variable. +Each non-option argument is a command as it would appear in a +Readline initialization file (@pxref{Readline Init File}), +but each binding or command must be passed as a separate argument; e.g., +@samp{"\C-x\C-r":re-read-init-file}. + +Options, if supplied, have the following meanings: + +@table @code +@item -m @var{keymap} +Use @var{keymap} as the keymap to be affected by +the subsequent bindings. Acceptable @var{keymap} +names are +@code{emacs}, +@code{emacs-standard}, +@code{emacs-meta}, +@code{emacs-ctlx}, +@code{vi}, +@code{vi-move}, +@code{vi-command}, and +@code{vi-insert}. +@code{vi} is equivalent to @code{vi-command} (@code{vi-move} is also a +synonym); @code{emacs} is equivalent to @code{emacs-standard}. + +@item -l +List the names of all Readline functions. + +@item -p +Display Readline function names and bindings in such a way that they +can be used as input or in a Readline initialization file. + +@item -P +List current Readline function names and bindings. + +@item -v +Display Readline variable names and values in such a way that they +can be used as input or in a Readline initialization file. + +@item -V +List current Readline variable names and values. + +@item -s +Display Readline key sequences bound to macros and the strings they output +in such a way that they can be used as input or in a Readline +initialization file. + +@item -S +Display Readline key sequences bound to macros and the strings they output. + +@item -f @var{filename} +Read key bindings from @var{filename}. + +@item -q @var{function} +Query about which keys invoke the named @var{function}. + +@item -u @var{function} +Unbind all keys bound to the named @var{function}. + +@item -r @var{keyseq} +Remove any current binding for @var{keyseq}. + +@item -x @var{keyseq:shell-command} +Cause @var{shell-command} to be executed whenever @var{keyseq} is +entered. +When @var{shell-command} is executed, the shell sets the +@code{READLINE_LINE} variable to the contents of the Readline line +buffer and the @code{READLINE_POINT} and @code{READLINE_MARK} variables +to the current location of the insertion point and the saved insertion +point (the @var{mark}), respectively. +If the executed command changes the value of any of @code{READLINE_LINE}, +@code{READLINE_POINT}, or @code{READLINE_MARK}, those new values will be +reflected in the editing state. + +@item -X +List all key sequences bound to shell commands and the associated commands +in a format that can be reused as input. +@end table + +@noindent +The return status is zero unless an invalid option is supplied or an +error occurs. + +@item builtin +@btindex builtin +@example +builtin [@var{shell-builtin} [@var{args}]] +@end example + +Run a shell builtin, passing it @var{args}, and return its exit status. +This is useful when defining a shell function with the same +name as a shell builtin, retaining the functionality of the builtin within +the function. +The return status is non-zero if @var{shell-builtin} is not a shell +builtin command. + +@item caller +@btindex caller +@example +caller [@var{expr}] +@end example + +Returns the context of any active subroutine call (a shell function or +a script executed with the @code{.} or @code{source} builtins). + +Without @var{expr}, @code{caller} displays the line number and source +filename of the current subroutine call. +If a non-negative integer is supplied as @var{expr}, @code{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 @var{expr} does not correspond to a valid position in the +call stack. + +@item command +@btindex command +@example +command [-pVv] @var{command} [@var{arguments} @dots{}] +@end example + +Runs @var{command} with @var{arguments} ignoring any shell function +named @var{command}. +Only shell builtin commands or commands found by searching the +@env{PATH} are executed. +If there is a shell function named @code{ls}, running @samp{command ls} +within the function will execute the external command @code{ls} +instead of calling the function recursively. +The @option{-p} option means to use a default value for @env{PATH} +that is guaranteed to find all of the standard utilities. +The return status in this case is 127 if @var{command} cannot be +found or an error occurred, and the exit status of @var{command} +otherwise. + +If either the @option{-V} or @option{-v} option is supplied, a +description of @var{command} is printed. The @option{-v} option +causes a single word indicating the command or file name used to +invoke @var{command} to be displayed; the @option{-V} option produces +a more verbose description. In this case, the return status is +zero if @var{command} is found, and non-zero if not. + +@item declare +@btindex declare +@example +declare [-aAfFgiIlnrtux] [-p] [@var{name}[=@var{value}] @dots{}] +@end example + +Declare variables and give them attributes. If no @var{name}s +are given, then display the values of variables instead. + +The @option{-p} option will display the attributes and values of each +@var{name}. +When @option{-p} is used with @var{name} arguments, additional options, +other than @option{-f} and @option{-F}, are ignored. + +When @option{-p} is supplied without @var{name} arguments, @code{declare} +will display the attributes and values of all variables having the +attributes specified by the additional options. +If no other options are supplied with @option{-p}, @code{declare} will +display the attributes and values of all shell variables. The @option{-f} +option will restrict the display to shell functions. + +The @option{-F} option inhibits the display of function definitions; +only the function name and attributes are printed. +If the @code{extdebug} shell option is enabled using @code{shopt} +(@pxref{The Shopt Builtin}), the source file name and line number where +each @var{name} is defined are displayed as well. +@option{-F} implies @option{-f}. + +The @option{-g} option forces variables to be created or modified at +the global scope, even when @code{declare} is executed in a shell function. +It is ignored in all other cases. + +The @option{-I} option causes local variables to inherit the attributes +(except the @var{nameref} attribute) +and value of any existing variable with the same +@var{name} at a surrounding scope. +If there is no existing variable, the local variable is initially unset. + +The following options can be used to restrict output to variables with +the specified attributes or to give variables attributes: + +@table @code +@item -a +Each @var{name} is an indexed array variable (@pxref{Arrays}). + +@item -A +Each @var{name} is an associative array variable (@pxref{Arrays}). + +@item -f +Use function names only. + +@item -i +The variable is to be treated as +an integer; arithmetic evaluation (@pxref{Shell Arithmetic}) is +performed when the variable is assigned a value. + +@item -l +When the variable is assigned a value, all upper-case characters are +converted to lower-case. +The upper-case attribute is disabled. + +@item -n +Give each @var{name} the @var{nameref} attribute, making +it a name reference to another variable. +That other variable is defined by the value of @var{name}. +All references, assignments, and attribute modifications +to @var{name}, except for those using or changing the +@option{-n} attribute itself, are performed on the variable referenced by +@var{name}'s value. +The nameref attribute cannot be applied to array variables. + +@item -r +Make @var{name}s readonly. These names cannot then be assigned values +by subsequent assignment statements or unset. + +@item -t +Give each @var{name} the @code{trace} attribute. +Traced functions inherit the @code{DEBUG} and @code{RETURN} traps from +the calling shell. +The trace attribute has no special meaning for variables. + +@item -u +When the variable is assigned a value, all lower-case characters are +converted to upper-case. +The lower-case attribute is disabled. + +@item -x +Mark each @var{name} for export to subsequent commands via +the environment. +@end table + +Using @samp{+} instead of @samp{-} turns off the attribute instead, +with the exceptions that @samp{+a} and @samp{+A} +may not be used to destroy array variables and @samp{+r} will not +remove the readonly attribute. +When used in a function, @code{declare} makes each @var{name} local, +as with the @code{local} command, unless the @option{-g} option is used. +If a variable name is followed by =@var{value}, the value of the variable +is set to @var{value}. + +When using @option{-a} or @option{-A} and the compound assignment syntax to +create array variables, additional attributes do not take effect until +subsequent assignments. + +The return status is zero unless an invalid option is encountered, +an attempt is made to define a function using @samp{-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 (@pxref{Arrays}), +one of the @var{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 @option{-f}. + +@item echo +@btindex echo +@example +echo [-neE] [@var{arg} @dots{}] +@end example + +Output the @var{arg}s, separated by spaces, terminated with a +newline. +The return status is 0 unless a write error occurs. +If @option{-n} is specified, the trailing newline is suppressed. +If the @option{-e} option is given, interpretation of the following +backslash-escaped characters is enabled. +The @option{-E} option disables the interpretation of these escape characters, +even on systems where they are interpreted by default. +The @code{xpg_echo} shell option may be used to +dynamically determine whether or not @code{echo} expands these +escape characters by default. +@code{echo} does not interpret @option{--} to mean the end of options. + +@code{echo} interprets the following escape sequences: +@table @code +@item \a +alert (bell) +@item \b +backspace +@item \c +suppress further output +@item \e +@itemx \E +escape +@item \f +form feed +@item \n +new line +@item \r +carriage return +@item \t +horizontal tab +@item \v +vertical tab +@item \\ +backslash +@item \0@var{nnn} +the eight-bit character whose value is the octal value @var{nnn} +(zero to three octal digits) +@item \x@var{HH} +the eight-bit character whose value is the hexadecimal value @var{HH} +(one or two hex digits) +@item \u@var{HHHH} +the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +@var{HHHH} (one to four hex digits) +@item \U@var{HHHHHHHH} +the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +@var{HHHHHHHH} (one to eight hex digits) +@end table + +@item enable +@btindex enable +@example +enable [-a] [-dnps] [-f @var{filename}] [@var{name} @dots{}] +@end example + +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 @option{-n} is used, the @var{name}s become disabled. Otherwise +@var{name}s are enabled. For example, to use the @code{test} binary +found via @env{$PATH} instead of the shell builtin version, type +@samp{enable -n test}. + +If the @option{-p} option is supplied, or no @var{name} arguments appear, +a list of shell builtins is printed. With no other arguments, the list +consists of all enabled shell builtins. +The @option{-a} option means to list +each builtin with an indication of whether or not it is enabled. + +The @option{-f} option means to load the new builtin command @var{name} +from shared object @var{filename}, on systems that support dynamic loading. +The @option{-d} option will delete a builtin loaded with @option{-f}. + +If there are no options, a list of the shell builtins is displayed. +The @option{-s} option restricts @code{enable} to the @sc{posix} special +builtins. If @option{-s} is used with @option{-f}, the new builtin becomes +a special builtin (@pxref{Special Builtins}). + +The return status is zero unless a @var{name} is not a shell builtin +or there is an error loading a new builtin from a shared object. + +@item help +@btindex help +@example +help [-dms] [@var{pattern}] +@end example + +Display helpful information about builtin commands. +If @var{pattern} is specified, @code{help} gives detailed help +on all commands matching @var{pattern}, otherwise a list of +the builtins is printed. + +Options, if supplied, have the following meanings: + +@table @code +@item -d +Display a short description of each @var{pattern} +@item -m +Display the description of each @var{pattern} in a manpage-like format +@item -s +Display only a short usage synopsis for each @var{pattern} +@end table + +The return status is zero unless no command matches @var{pattern}. + +@item let +@btindex let +@example +let @var{expression} [@var{expression} @dots{}] +@end example + +The @code{let} builtin allows arithmetic to be performed on shell +variables. Each @var{expression} is evaluated according to the +rules given below in @ref{Shell Arithmetic}. If the +last @var{expression} evaluates to 0, @code{let} returns 1; +otherwise 0 is returned. + +@item local +@btindex local +@example +local [@var{option}] @var{name}[=@var{value}] @dots{} +@end example + +For each argument, a local variable named @var{name} is created, +and assigned @var{value}. +The @var{option} can be any of the options accepted by @code{declare}. +@code{local} can only be used within a function; it makes the variable +@var{name} have a visible scope restricted to that function and its +children. +If @var{name} is @samp{-}, the set of shell options is made local to the +function in which @code{local} is invoked: shell options changed using +the @code{set} builtin inside the function are restored to their original +values when the function returns. +The restore is effected as if a series of @code{set} commands were executed +to restore the values that were in place before the function. +The return status is zero unless @code{local} is used outside +a function, an invalid @var{name} is supplied, or @var{name} is a +readonly variable. + +@item logout +@btindex logout +@example +logout [@var{n}] +@end example + +Exit a login shell, returning a status of @var{n} to the shell's +parent. + +@item mapfile +@btindex mapfile +@example +mapfile [-d @var{delim}] [-n @var{count}] [-O @var{origin}] [-s @var{count}] + [-t] [-u @var{fd}] [-C @var{callback}] [-c @var{quantum}] [@var{array}] +@end example + +Read lines from the standard input into the indexed array variable @var{array}, +or from file descriptor @var{fd} +if the @option{-u} option is supplied. +The variable @code{MAPFILE} is the default @var{array}. +Options, if supplied, have the following meanings: + +@table @code + +@item -d +The first character of @var{delim} is used to terminate each input line, +rather than newline. +If @var{delim} is the empty string, @code{mapfile} will terminate a line +when it reads a NUL character. +@item -n +Copy at most @var{count} lines. If @var{count} is 0, all lines are copied. +@item -O +Begin assigning to @var{array} at index @var{origin}. +The default index is 0. +@item -s +Discard the first @var{count} lines read. +@item -t +Remove a trailing @var{delim} (default newline) from each line read. +@item -u +Read lines from file descriptor @var{fd} instead of the standard input. +@item -C +Evaluate @var{callback} each time @var{quantum} lines are read. +The @option{-c} option specifies @var{quantum}. +@item -c +Specify the number of lines read between each call to @var{callback}. +@end table + +If @option{-C} is specified without @option{-c}, +the default quantum is 5000. +When @var{callback} is evaluated, it is supplied the index of the next +array element to be assigned and the line to be assigned to that element +as additional arguments. +@var{callback} is evaluated after the line is read but before the +array element is assigned. + +If not supplied with an explicit origin, @code{mapfile} will clear @var{array} +before assigning to it. + +@code{mapfile} returns successfully unless an invalid option or option +argument is supplied, @var{array} is invalid or unassignable, or @var{array} +is not an indexed array. + +@item printf +@btindex printf +@example +printf [-v @var{var}] @var{format} [@var{arguments}] +@end example + +Write the formatted @var{arguments} to the standard output under the +control of the @var{format}. +The @option{-v} option causes the output to be assigned to the variable +@var{var} rather than being printed to the standard output. + +The @var{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 +@var{argument}. +In addition to the standard @code{printf(1)} formats, @code{printf} +interprets the following extensions: + +@table @code +@item %b +Causes @code{printf} to expand backslash escape sequences in the +corresponding @var{argument} in the same way as @code{echo -e} +(@pxref{Bash Builtins}). +@item %q +Causes @code{printf} to output the +corresponding @var{argument} in a format that can be reused as shell input. +@item %(@var{datefmt})T +Causes @code{printf} to output the date-time string resulting from using +@var{datefmt} as a format string for @code{strftime}(3). +The corresponding @var{argument} is an integer representing the number of +seconds since the epoch. +Two special argument values may be used: -1 represents the current +time, and -2 represents the time the shell was invoked. +If no argument is specified, conversion behaves as if -1 had been given. +This is an exception to the usual @code{printf} behavior. +@end table + +@noindent +The %b, %q, and %T directives all use the field width and precision +arguments from the format specification and write that many bytes from +(or use that wide a field for) the expanded argument, which usually +contains more characters than the original. + +Arguments to non-string format specifiers are treated as C language constants, +except that a leading plus or minus sign is allowed, and if the leading +character is a single or double quote, the value is the ASCII value of +the following character. + +The @var{format} is reused as necessary to consume all of the @var{arguments}. +If the @var{format} requires more @var{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. + +@item read +@btindex read +@example +read [-ers] [-a @var{aname}] [-d @var{delim}] [-i @var{text}] [-n @var{nchars}] + [-N @var{nchars}] [-p @var{prompt}] [-t @var{timeout}] [-u @var{fd}] [@var{name} @dots{}] +@end example + +One line is read from the standard input, or from the file descriptor +@var{fd} supplied as an argument to the @option{-u} option, +split into words as described above in @ref{Word Splitting}, +and the first word +is assigned to the first @var{name}, the second word to the second @var{name}, +and so on. +If there are more words than names, +the remaining words and their intervening delimiters are assigned +to the last @var{name}. +If there are fewer words read from the input stream than names, +the remaining names are assigned empty values. +The characters in the value of the @env{IFS} variable +are used to split the line into words using the same rules the shell +uses for expansion (described above in @ref{Word Splitting}). +The backslash character @samp{\} may be used to remove any special +meaning for the next character read and for line continuation. + +Options, if supplied, have the following meanings: + +@table @code +@item -a @var{aname} +The words are assigned to sequential indices of the array variable +@var{aname}, starting at 0. +All elements are removed from @var{aname} before the assignment. +Other @var{name} arguments are ignored. + +@item -d @var{delim} +The first character of @var{delim} is used to terminate the input line, +rather than newline. +If @var{delim} is the empty string, @code{read} will terminate a line +when it reads a NUL character. + +@item -e +Readline (@pxref{Command Line Editing}) is used to obtain the line. +Readline uses the current (or default, if line editing was not previously +active) editing settings, but uses Readline's default filename completion. + +@item -i @var{text} +If Readline is being used to read the line, @var{text} is placed into +the editing buffer before editing begins. + +@item -n @var{nchars} +@code{read} returns after reading @var{nchars} characters rather than +waiting for a complete line of input, but honors a delimiter if fewer +than @var{nchars} characters are read before the delimiter. + +@item -N @var{nchars} +@code{read} returns after reading exactly @var{nchars} characters rather +than waiting for a complete line of input, unless EOF is encountered or +@code{read} times out. +Delimiter characters encountered in the input are +not treated specially and do not cause @code{read} to return until +@var{nchars} characters are read. +The result is not split on the characters in @code{IFS}; the intent is +that the variable is assigned exactly the characters read +(with the exception of backslash; see the @option{-r} option below). + +@item -p @var{prompt} +Display @var{prompt}, without a trailing newline, before attempting +to read any input. +The prompt is displayed only if input is coming from a terminal. + +@item -r +If this option is given, 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 then be used as a line +continuation. + +@item -s +Silent mode. If input is coming from a terminal, characters are +not echoed. + +@item -t @var{timeout} +Cause @code{read} to time out and return failure if a complete line of +input (or a specified number of characters) +is not read within @var{timeout} seconds. +@var{timeout} may be a decimal number with a fractional portion following +the decimal point. +This option is only effective if @code{read} is reading input from a +terminal, pipe, or other special file; it has no effect when reading +from regular files. +If @code{read} times out, @code{read} saves any partial input read into +the specified variable @var{name}. +If @var{timeout} is 0, @code{read} returns immediately, without trying to +read any data. The exit status is 0 if input is available on +the specified file descriptor, non-zero otherwise. +The exit status is greater than 128 if the timeout is exceeded. + +@item -u @var{fd} +Read input from file descriptor @var{fd}. +@end table + +If no @var{name}s are supplied, the line read, +without the ending delimiter but otherwise unmodified, +is assigned to the +variable @env{REPLY}. +The exit status is zero, unless end-of-file is encountered, @code{read} +times out (in which case the status is greater than 128), +a variable assignment error (such as assigning to a readonly variable) occurs, +or an invalid file descriptor is supplied as the argument to @option{-u}. + +@item readarray +@btindex readarray +@example +readarray [-d @var{delim}] [-n @var{count}] [-O @var{origin}] [-s @var{count}] + [-t] [-u @var{fd}] [-C @var{callback}] [-c @var{quantum}] [@var{array}] +@end example + +Read lines from the standard input into the indexed array variable @var{array}, +or from file descriptor @var{fd} +if the @option{-u} option is supplied. + +A synonym for @code{mapfile}. + +@item source +@btindex source +@example +source @var{filename} +@end example + +A synonym for @code{.} (@pxref{Bourne Shell Builtins}). + +@item type +@btindex type +@example +type [-afptP] [@var{name} @dots{}] +@end example + +For each @var{name}, indicate how it would be interpreted if used as a +command name. + +If the @option{-t} option is used, @code{type} prints a single word +which is one of @samp{alias}, @samp{function}, @samp{builtin}, +@samp{file} or @samp{keyword}, +if @var{name} is an alias, shell function, shell builtin, +disk file, or shell reserved word, respectively. +If the @var{name} is not found, then nothing is printed, and +@code{type} returns a failure status. + +If the @option{-p} option is used, @code{type} either returns the name +of the disk file that would be executed, or nothing if @option{-t} +would not return @samp{file}. + +The @option{-P} option forces a path search for each @var{name}, even if +@option{-t} would not return @samp{file}. + +If a command is hashed, @option{-p} and @option{-P} print the hashed value, +which is not necessarily the file that appears first in @code{$PATH}. + +If the @option{-a} option is used, @code{type} returns all of the places +that contain an executable named @var{file}. +This includes aliases and functions, if and only if the @option{-p} option +is not also used. + +If the @option{-f} option is used, @code{type} does not attempt to find +shell functions, as with the @code{command} builtin. + +The return status is zero if all of the @var{names} are found, non-zero +if any are not found. + +@item typeset +@btindex typeset +@example +typeset [-afFgrxilnrtux] [-p] [@var{name}[=@var{value}] @dots{}] +@end example + +The @code{typeset} command is supplied for compatibility with the Korn +shell. +It is a synonym for the @code{declare} builtin command. + +@item ulimit +@btindex ulimit +@example +ulimit [-HS] -a +ulimit [-HS] [-bcdefiklmnpqrstuvxPRT] [@var{limit}] +@end example + +@code{ulimit} provides control over the resources available to processes +started by the shell, on systems that allow such control. If an +option is given, it is interpreted as follows: + +@table @code +@item -S +Change and report the soft limit associated with a resource. + +@item -H +Change and report the hard limit associated with a resource. + +@item -a +All current limits are reported; no limits are set. + +@item -b +The maximum socket buffer size. + +@item -c +The maximum size of core files created. + +@item -d +The maximum size of a process's data segment. + +@item -e +The maximum scheduling priority ("nice"). + +@item -f +The maximum size of files written by the shell and its children. + +@item -i +The maximum number of pending signals. + +@item -k +The maximum number of kqueues that may be allocated. + +@item -l +The maximum size that may be locked into memory. + +@item -m +The maximum resident set size (many systems do not honor this limit). + +@item -n +The maximum number of open file descriptors (most systems do not +allow this value to be set). + +@item -p +The pipe buffer size. + +@item -q +The maximum number of bytes in @sc{posix} message queues. + +@item -r +The maximum real-time scheduling priority. + +@item -s +The maximum stack size. + +@item -t +The maximum amount of cpu time in seconds. + +@item -u +The maximum number of processes available to a single user. + +@item -v +The maximum amount of virtual memory available to the shell, and, on +some systems, to its children. + +@item -x +The maximum number of file locks. + +@item -P +The maximum number of pseudoterminals. + +@item -R +The maximum time a real-time process can run before blocking, in microseconds. + +@item -T +The maximum number of threads. +@end table + +If @var{limit} is given, and the @option{-a} option is not used, +@var{limit} is the new value of the specified resource. +The special @var{limit} values @code{hard}, @code{soft}, and +@code{unlimited} stand for the current hard limit, the current soft limit, +and no limit, respectively. +A hard limit cannot be increased by a non-root user once it is set; +a soft limit may be increased up to the value of the hard limit. +Otherwise, the current value of the soft limit for the specified resource +is printed, unless the @option{-H} option is supplied. +When more than one +resource is specified, the limit name and unit, if appropriate, +are printed before the value. +When setting new limits, if neither @option{-H} nor @option{-S} is supplied, +both the hard and soft limits are set. +If no option is given, then @option{-f} is assumed. Values are in 1024-byte +increments, except for +@option{-t}, which is in seconds; +@option{-R}, which is in microseconds; +@option{-p}, which is in units of 512-byte blocks; +@option{-P}, +@option{-T}, +@option{-b}, +@option{-k}, +@option{-n} and @option{-u}, which are unscaled values; +and, when in @sc{posix} Mode (@pxref{Bash POSIX Mode}), +@option{-c} and @option{-f}, which are in 512-byte increments. + +The return status is zero unless an invalid option or argument is supplied, +or an error occurs while setting a new limit. + +@item unalias +@btindex unalias +@example +unalias [-a] [@var{name} @dots{} ] +@end example + +Remove each @var{name} from the list of aliases. If @option{-a} is +supplied, all aliases are removed. +Aliases are described in @ref{Aliases}. +@end table + +@node Modifying Shell Behavior +@section Modifying Shell Behavior + +@menu +* The Set Builtin:: Change the values of shell attributes and + positional parameters. +* The Shopt Builtin:: Modify shell optional behavior. +@end menu + +@node The Set Builtin +@subsection The Set Builtin + +This builtin is so complicated that it deserves its own section. @code{set} +allows you to change the values of shell options and set the positional +parameters, or to display the names and values of shell variables. + +@table @code +@item set +@btindex set +@example +set [--abefhkmnptuvxBCEHPT] [-o @var{option-name}] [@var{argument} @dots{}] +set [+abefhkmnptuvxBCEHPT] [+o @var{option-name}] [@var{argument} @dots{}] +@end example + +If no options or arguments are supplied, @code{set} displays the names +and values of all shell variables and functions, sorted according to the +current locale, in a format that may be reused as input +for setting or resetting the currently-set variables. +Read-only variables cannot be reset. +In @sc{posix} mode, only shell variables are listed. + +When options are supplied, they set or unset shell attributes. +Options, if specified, have the following meanings: + +@table @code +@item -a +Each variable or function that is created or modified is given the +export attribute and marked for export to the environment of +subsequent commands. + +@item -b +Cause the status of terminated background jobs to be reported +immediately, rather than before printing the next primary prompt. + +@item -e +Exit immediately if +a pipeline (@pxref{Pipelines}), which may consist of a single simple command +(@pxref{Simple Commands}), +a list (@pxref{Lists}), +or a compound command (@pxref{Compound Commands}) +returns a non-zero status. +The shell does not exit if the command that fails is part of the +command list immediately following a @code{while} or @code{until} keyword, +part of the test in an @code{if} statement, +part of any command executed in a @code{&&} or @code{||} list except +the command following the final @code{&&} or @code{||}, +any command in a pipeline but the last, +or if the command's return status is being inverted with @code{!}. +If a compound command other than a subshell +returns a non-zero status because a command failed +while @option{-e} was being ignored, the shell does not exit. +A trap on @code{ERR}, if set, is executed before the shell exits. + +This option applies to the shell environment and each subshell environment +separately (@pxref{Command Execution Environment}), and may cause +subshells to exit before executing all the commands in the subshell. + +If a compound command or shell function executes in a context where +@option{-e} is being ignored, +none of the commands executed within the compound command or function body +will be affected by the @option{-e} setting, even if @option{-e} is set +and a command returns a failure status. +If a compound command or shell function sets @option{-e} while executing in +a context where @option{-e} is ignored, that setting will not have any +effect until the compound command or the command containing the function +call completes. + +@item -f +Disable filename expansion (globbing). + +@item -h +Locate and remember (hash) commands as they are looked up for execution. +This option is enabled by default. + +@item -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. + +@item -m +Job control is enabled (@pxref{Job Control}). +All processes run in a separate process group. +When a background job completes, the shell prints a line +containing its exit status. + +@item -n +Read commands but do not execute them. +This may be used to check a script for syntax errors. +This option is ignored by interactive shells. + +@item -o @var{option-name} + +Set the option corresponding to @var{option-name}: + +@table @code +@item allexport +Same as @code{-a}. + +@item braceexpand +Same as @code{-B}. + +@item emacs +Use an @code{emacs}-style line editing interface (@pxref{Command Line Editing}). +This also affects the editing interface used for @code{read -e}. + +@item errexit +Same as @code{-e}. + +@item errtrace +Same as @code{-E}. + +@item functrace +Same as @code{-T}. + +@item hashall +Same as @code{-h}. + +@item histexpand +Same as @code{-H}. + +@item history +Enable command history, as described in @ref{Bash History Facilities}. +This option is on by default in interactive shells. + +@item ignoreeof +An interactive shell will not exit upon reading EOF. + +@item keyword +Same as @code{-k}. + +@item monitor +Same as @code{-m}. + +@item noclobber +Same as @code{-C}. + +@item noexec +Same as @code{-n}. + +@item noglob +Same as @code{-f}. + +@item nolog +Currently ignored. + +@item notify +Same as @code{-b}. + +@item nounset +Same as @code{-u}. + +@item onecmd +Same as @code{-t}. + +@item physical +Same as @code{-P}. + +@item pipefail +If set, the return value of a pipeline is the value of the last +(rightmost) command to exit with a non-zero status, or zero if all +commands in the pipeline exit successfully. +This option is disabled by default. + +@item posix +Change the behavior of Bash where the default operation differs +from the @sc{posix} standard to match the standard +(@pxref{Bash POSIX Mode}). +This is intended to make Bash behave as a strict superset of that +standard. + +@item privileged +Same as @code{-p}. + +@item verbose +Same as @code{-v}. + +@item vi +Use a @code{vi}-style line editing interface. +This also affects the editing interface used for @code{read -e}. + +@item xtrace +Same as @code{-x}. +@end table + +@item -p +Turn on privileged mode. +In this mode, the @env{$BASH_ENV} and @env{$ENV} files are not +processed, shell functions are not inherited from the environment, +and the @env{SHELLOPTS}, @env{BASHOPTS}, @env{CDPATH} and @env{GLOBIGNORE} +variables, if they appear in the environment, are ignored. +If the shell is started with the effective user (group) id not equal to the +real user (group) id, and the @option{-p} option is not supplied, these actions +are taken and the effective user id is set to the real user id. +If the @option{-p} option is supplied at startup, the effective user id is +not reset. +Turning this option off causes the effective user +and group ids to be set to the real user and group ids. + +@item -t +Exit after reading and executing one command. + +@item -u +Treat unset variables and parameters other than the special parameters +@samp{@@} or @samp{*} as an error when performing parameter expansion. +An error message will be written to the standard error, and a non-interactive +shell will exit. + +@item -v +Print shell input lines as they are read. + +@item -x +Print a trace of simple commands, @code{for} commands, @code{case} +commands, @code{select} commands, and arithmetic @code{for} commands +and their arguments or associated word lists after they are +expanded and before they are executed. The value of the @env{PS4} +variable is expanded and the resultant value is printed before +the command and its expanded arguments. + +@item -B +The shell will perform brace expansion (@pxref{Brace Expansion}). +This option is on by default. + +@item -C +Prevent output redirection using @samp{>}, @samp{>&}, and @samp{<>} +from overwriting existing files. + +@item -E +If set, any trap on @code{ERR} is inherited by shell functions, command +substitutions, and commands executed in a subshell environment. +The @code{ERR} trap is normally not inherited in such cases. + +@item -H +Enable @samp{!} style history substitution (@pxref{History Interaction}). +This option is on by default for interactive shells. + +@item -P +If set, do not resolve symbolic links when performing commands such as +@code{cd} which change the current directory. The physical directory +is used instead. By default, Bash follows +the logical chain of directories when performing commands +which change the current directory. + +For example, if @file{/usr/sys} is a symbolic link to @file{/usr/local/sys} +then: +@example +$ cd /usr/sys; echo $PWD +/usr/sys +$ cd ..; pwd +/usr +@end example + +@noindent +If @code{set -P} is on, then: +@example +$ cd /usr/sys; echo $PWD +/usr/local/sys +$ cd ..; pwd +/usr/local +@end example + +@item -T +If set, any trap on @code{DEBUG} and @code{RETURN} are inherited by +shell functions, command substitutions, and commands executed +in a subshell environment. +The @code{DEBUG} and @code{RETURN} traps are normally not inherited +in such cases. + +@item -- +If no arguments follow this option, then the positional parameters are +unset. Otherwise, the positional parameters are set to the +@var{arguments}, even if some of them begin with a @samp{-}. + +@item - +Signal the end of options, cause all remaining @var{arguments} +to be assigned to the positional parameters. The @option{-x} +and @option{-v} options are turned off. +If there are no arguments, the positional parameters remain unchanged. +@end table + +Using @samp{+} rather than @samp{-} causes these options to be +turned off. The options can also be used upon invocation of the +shell. The current set of options may be found in @code{$-}. + +The remaining N @var{arguments} are positional parameters and are +assigned, in order, to @code{$1}, @code{$2}, @dots{} @code{$N}. +The special parameter @code{#} is set to N. + +The return status is always zero unless an invalid option is supplied. +@end table + +@node The Shopt Builtin +@subsection The Shopt Builtin + +This builtin allows you to change additional shell optional behavior. + +@table @code + +@item shopt +@btindex shopt +@example +shopt [-pqsu] [-o] [@var{optname} @dots{}] +@end example + +Toggle the values of settings controlling optional shell behavior. +The settings can be either those listed below, or, if the +@option{-o} option is used, those available with the @option{-o} +option to the @code{set} builtin command (@pxref{The Set Builtin}). +With no options, or with the @option{-p} option, a list of all settable +options is displayed, with an indication of whether or not each is set; +if @var{optnames} are supplied, the output is restricted to those options. +The @option{-p} option causes output to be displayed in a form that +may be reused as input. +Other options have the following meanings: + +@table @code +@item -s +Enable (set) each @var{optname}. + +@item -u +Disable (unset) each @var{optname}. + +@item -q +Suppresses normal output; the return status +indicates whether the @var{optname} is set or unset. +If multiple @var{optname} arguments are given with @option{-q}, +the return status is zero if all @var{optnames} are enabled; +non-zero otherwise. + +@item -o +Restricts the values of +@var{optname} to be those defined for the @option{-o} option to the +@code{set} builtin (@pxref{The Set Builtin}). +@end table + +If either @option{-s} or @option{-u} +is used with no @var{optname} arguments, @code{shopt} shows only +those options which are set or unset, respectively. + +Unless otherwise noted, the @code{shopt} options are disabled (off) +by default. + +The return status when listing options is zero if all @var{optnames} +are enabled, non-zero otherwise. When setting or unsetting options, +the return status is zero unless an @var{optname} is not a valid shell +option. + +The list of @code{shopt} options is: +@table @code + +@item assoc_expand_once +If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation, while executing +builtins that can perform variable assignments, +and while executing builtins that perform array dereferencing. + +@item autocd +If set, a command name that is the name of a directory is executed as if +it were the argument to the @code{cd} command. +This option is only used by interactive shells. + +@item cdable_vars +If this is set, an argument to the @code{cd} builtin command that +is not a directory is assumed to be the name of a variable whose +value is the directory to change to. + +@item cdspell +If set, minor errors in the spelling of a directory component in a +@code{cd} command will be corrected. +The errors checked for are transposed characters, +a missing character, and a character too many. +If a correction is found, the corrected path is printed, +and the command proceeds. +This option is only used by interactive shells. + +@item checkhash +If this is set, Bash checks that a command found in the hash +table exists before trying to execute it. If a hashed command no +longer exists, a normal path search is performed. + +@item checkjobs +If set, Bash lists the status of any stopped and running jobs before +exiting an interactive shell. If any jobs are running, this causes +the exit to be deferred until a second exit is attempted without an +intervening command (@pxref{Job Control}). +The shell always postpones exiting if any jobs are stopped. + +@item checkwinsize +If set, Bash checks the window size after each external (non-builtin) +command and, if necessary, updates the values of +@env{LINES} and @env{COLUMNS}. +This option is enabled by default. + +@item cmdhist +If set, Bash +attempts to save all lines of a multiple-line +command in the same history entry. This allows +easy re-editing of multi-line commands. +This option is enabled by default, but only has an effect if command +history is enabled (@pxref{Bash History Facilities}). + +@item compat31 +@itemx compat32 +@itemx compat40 +@itemx compat41 +@itemx compat42 +@itemx compat43 +@itemx compat44 +These control aspects of the shell's compatibility mode +(@pxref{Shell Compatibility Mode}). + +@item complete_fullquote +If set, Bash +quotes all shell metacharacters in filenames and directory names when +performing completion. +If not set, Bash +removes metacharacters such as the dollar sign from the set of +characters that will be quoted in completed filenames +when these metacharacters appear in shell variable references in words to be +completed. +This means that dollar signs in variable names that expand to directories +will not be quoted; +however, any dollar signs appearing in filenames will not be quoted, either. +This is active only when bash is using backslashes to quote completed +filenames. +This variable is set by default, which is the default Bash behavior in +versions through 4.2. + +@item direxpand +If set, Bash +replaces directory names with the results of word expansion when performing +filename completion. This changes the contents of the readline editing +buffer. +If not set, Bash attempts to preserve what the user typed. + +@item dirspell +If set, Bash +attempts spelling correction on directory names during word completion +if the directory name initially supplied does not exist. + +@item dotglob +If set, Bash includes filenames beginning with a `.' in +the results of filename expansion. +The filenames @samp{.} and @samp{..} must always be matched explicitly, +even if @code{dotglob} is set. + +@item execfail +If this is set, a non-interactive shell will not exit if +it cannot execute the file specified as an argument to the @code{exec} +builtin command. An interactive shell does not exit if @code{exec} +fails. + +@item expand_aliases +If set, aliases are expanded as described below under Aliases, +@ref{Aliases}. +This option is enabled by default for interactive shells. + +@item extdebug +If set at shell invocation, +or in a shell startup file, +arrange to execute the debugger profile +before the shell starts, identical to the @option{--debugger} option. +If set after invocation, behavior intended for use by debuggers is enabled: + +@enumerate +@item +The @option{-F} option to the @code{declare} builtin (@pxref{Bash Builtins}) +displays the source file name and line number corresponding to each function +name supplied as an argument. + +@item +If the command run by the @code{DEBUG} trap returns a non-zero value, the +next command is skipped and not executed. + +@item +If the command run by the @code{DEBUG} trap returns a value of 2, and the +shell is executing in a subroutine (a shell function or a shell script +executed by the @code{.} or @code{source} builtins), the shell simulates +a call to @code{return}. + +@item +@code{BASH_ARGC} and @code{BASH_ARGV} are updated as described in their +descriptions (@pxref{Bash Variables}). + +@item +Function tracing is enabled: command substitution, shell functions, and +subshells invoked with @code{( @var{command} )} inherit the +@code{DEBUG} and @code{RETURN} traps. + +@item +Error tracing is enabled: command substitution, shell functions, and +subshells invoked with @code{( @var{command} )} inherit the +@code{ERR} trap. +@end enumerate + +@item extglob +If set, the extended pattern matching features described above +(@pxref{Pattern Matching}) are enabled. + +@item extquote +If set, @code{$'@var{string}'} and @code{$"@var{string}"} quoting is +performed within @code{$@{@var{parameter}@}} expansions +enclosed in double quotes. This option is enabled by default. + +@item failglob +If set, patterns which fail to match filenames during filename expansion +result in an expansion error. + +@item force_fignore +If set, the suffixes specified by the @env{FIGNORE} shell variable +cause words to be ignored when performing word completion even if +the ignored words are the only possible completions. +@xref{Bash Variables}, for a description of @env{FIGNORE}. +This option is enabled by default. + +@item globasciiranges +If set, range expressions used in pattern matching bracket expressions +(@pxref{Pattern Matching}) +behave as if in the traditional C locale when performing +comparisons. That is, the current locale's collating sequence +is not taken into account, so +@samp{b} will not collate between @samp{A} and @samp{B}, +and upper-case and lower-case ASCII characters will collate together. + +@item globstar +If set, the pattern @samp{**} used in a filename expansion context will +match all files and zero or more directories and subdirectories. +If the pattern is followed by a @samp{/}, only directories and +subdirectories match. + +@item gnu_errfmt +If set, shell error messages are written in the standard @sc{gnu} error +message format. + +@item histappend +If set, the history list is appended to the file named by the value +of the @env{HISTFILE} +variable when the shell exits, rather than overwriting the file. + +@item histreedit +If set, and Readline +is being used, a user is given the opportunity to re-edit a +failed history substitution. + +@item histverify +If set, and Readline +is being used, the results of history substitution are not immediately +passed to the shell parser. Instead, the resulting line is loaded into +the Readline editing buffer, allowing further modification. + +@item hostcomplete +If set, and Readline is being used, Bash will attempt to perform +hostname completion when a word containing a @samp{@@} is being +completed (@pxref{Commands For Completion}). This option is enabled +by default. + +@item huponexit +If set, Bash will send @code{SIGHUP} to all jobs when an interactive +login shell exits (@pxref{Signals}). + +@item inherit_errexit +If set, command substitution inherits the value of the @code{errexit} option, +instead of unsetting it in the subshell environment. +This option is enabled when @sc{posix} mode is enabled. + +@item interactive_comments +Allow a word beginning with @samp{#} +to cause that word and all remaining characters on that +line to be ignored in an interactive shell. +This option is enabled by default. + +@item lastpipe +If set, and job control is not active, the shell runs the last command of +a pipeline not executed in the background in the current shell environment. + +@item lithist +If enabled, and the @code{cmdhist} +option is enabled, multi-line commands are saved to the history with +embedded newlines rather than using semicolon separators where possible. + +@item localvar_inherit +If set, local variables inherit the value and attributes of a variable of +the same name that exists at a previous scope before any new value is +assigned. The @var{nameref} attribute is not inherited. + +@item localvar_unset +If set, calling @code{unset} on local variables in previous function scopes +marks them so subsequent lookups find them unset until that function +returns. This is identical to the behavior of unsetting local variables +at the current function scope. + +@item login_shell +The shell sets this option if it is started as a login shell +(@pxref{Invoking Bash}). +The value may not be changed. + +@item mailwarn +If set, and a file that Bash is checking for mail has been +accessed since the last time it was checked, the message +@code{"The mail in @var{mailfile} has been read"} is displayed. + +@item no_empty_cmd_completion +If set, and Readline is being used, Bash will not attempt to search +the @env{PATH} for possible completions when completion is attempted +on an empty line. + +@item nocaseglob +If set, Bash matches filenames in a case-insensitive fashion when +performing filename expansion. + +@item nocasematch +If set, Bash matches patterns in a case-insensitive fashion when +performing matching while executing @code{case} or @code{[[} +conditional commands, +when performing pattern substitution word expansions, +or when filtering possible completions as part of programmable completion. + +@item nullglob +If set, Bash allows filename patterns which match no +files to expand to a null string, rather than themselves. + +@item progcomp +If set, the programmable completion facilities +(@pxref{Programmable Completion}) are enabled. +This option is enabled by default. + +@item progcomp_alias +If set, and programmable completion is enabled, Bash treats a command +name that doesn't have any completions as a possible alias and attempts +alias expansion. If it has an alias, Bash attempts programmable +completion using the command word resulting from the expanded alias. + +@item promptvars +If set, prompt strings undergo +parameter expansion, command substitution, arithmetic +expansion, and quote removal after being expanded +as described below (@pxref{Controlling the Prompt}). +This option is enabled by default. + +@item restricted_shell +The shell sets this option if it is started in restricted mode +(@pxref{The Restricted Shell}). +The value may not be changed. +This is not reset when the startup files are executed, allowing +the startup files to discover whether or not a shell is restricted. + +@item shift_verbose +If this is set, the @code{shift} +builtin prints an error message when the shift count exceeds the +number of positional parameters. + +@item sourcepath +If set, the @code{source} builtin uses the value of @env{PATH} +to find the directory containing the file supplied as an argument. +This option is enabled by default. + +@item xpg_echo +If set, the @code{echo} builtin expands backslash-escape sequences +by default. + +@end table +@end table + +@node Special Builtins +@section Special Builtins +@cindex special builtin + +For historical reasons, the @sc{posix} standard has classified +several builtin commands as @emph{special}. +When Bash is executing in @sc{posix} mode, the special builtins +differ from other builtin commands in three respects: + +@enumerate +@item +Special builtins are found before shell functions during command lookup. + +@item +If a special builtin returns an error status, a non-interactive shell exits. + +@item +Assignment statements preceding the command stay in effect in the shell +environment after the command completes. +@end enumerate + +When Bash is not executing in @sc{posix} mode, these builtins behave no +differently than the rest of the Bash builtin commands. +The Bash @sc{posix} mode is described in @ref{Bash POSIX Mode}. + +These are the @sc{posix} special builtins: +@example +@w{break : . continue eval exec exit export readonly return set} +@w{shift trap unset} +@end example + +@node Shell Variables +@chapter Shell Variables + +@menu +* Bourne Shell Variables:: Variables which Bash uses in the same way + as the Bourne Shell. +* Bash Variables:: List of variables that exist in Bash. +@end menu + +This chapter describes the shell variables that Bash uses. +Bash automatically assigns default values to a number of variables. + +@node Bourne Shell Variables +@section Bourne Shell Variables + +Bash uses certain shell variables in the same way as the Bourne shell. +In some cases, Bash assigns a default value to the variable. + +@vtable @code + +@item CDPATH +A colon-separated list of directories used as a search path for +the @code{cd} builtin command. + +@item HOME +The current user's home directory; the default for the @code{cd} builtin +command. +The value of this variable is also used by tilde expansion +(@pxref{Tilde Expansion}). + +@item IFS +A list of characters that separate fields; used when the shell splits +words as part of expansion. + +@item MAIL +If this parameter is set to a filename or directory name +and the @env{MAILPATH} variable +is not set, Bash informs the user of the arrival of mail in +the specified file or Maildir-format directory. + +@item MAILPATH +A colon-separated list of filenames which the shell periodically checks +for new mail. +Each list entry can specify the message that is printed when new mail +arrives in the mail file by separating the filename from the message with +a @samp{?}. +When used in the text of the message, @code{$_} expands to the name of +the current mail file. + +@item OPTARG +The value of the last option argument processed by the @code{getopts} builtin. + +@item OPTIND +The index of the last option argument processed by the @code{getopts} builtin. + +@item PATH +A colon-separated list of directories in which the shell looks for +commands. +A zero-length (null) directory name in the value of @code{PATH} indicates the +current directory. +A null directory name may appear as two adjacent colons, or as an initial +or trailing colon. + +@item PS1 +The primary prompt string. The default value is @samp{\s-\v\$ }. +@xref{Controlling the Prompt}, for the complete list of escape +sequences that are expanded before @env{PS1} is displayed. + +@item PS2 +The secondary prompt string. The default value is @samp{> }. +@env{PS2} is expanded in the same way as @env{PS1} before being +displayed. + +@end vtable + +@node Bash Variables +@section Bash Variables + +These variables are set or used by Bash, but other shells +do not normally treat them specially. + +A few variables used by Bash are described in different chapters: +variables for controlling the job control facilities +(@pxref{Job Control Variables}). + +@vtable @code + +@item _ +@vindex $_ +($_, an underscore.) +At shell startup, set to the 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 simple +command executed in the foreground, 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. + +@item BASH +The full pathname used to execute the current instance of Bash. + +@item BASHOPTS +A colon-separated list of enabled shell options. Each word in +the list is a valid argument for the @option{-s} option to the +@code{shopt} builtin command (@pxref{The Shopt Builtin}). +The options appearing in @env{BASHOPTS} are those reported +as @samp{on} by @samp{shopt}. +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 readonly. + +@item BASHPID +Expands to the process ID of the current Bash process. +This differs from @code{$$} under certain circumstances, such as subshells +that do not require Bash to be re-initialized. +Assignments to @env{BASHPID} have no effect. +If @env{BASHPID} +is unset, it loses its special properties, even if it is +subsequently reset. + +@item BASH_ALIASES +An associative array variable whose members correspond to the internal +list of aliases as maintained by the @code{alias} builtin. +(@pxref{Bourne Shell Builtins}). +Elements added to this array appear in the alias list; however, +unsetting array elements currently does not cause aliases to be removed +from the alias list. +If @env{BASH_ALIASES} +is unset, it loses its special properties, even if it is +subsequently reset. + +@item BASH_ARGC +An array variable whose values are the number of parameters in each +frame of the current bash execution call stack. The number of +parameters to the current subroutine (shell function or script executed +with @code{.} or @code{source}) is at the top of the stack. When a +subroutine is executed, the number of parameters passed is pushed onto +@code{BASH_ARGC}. +The shell sets @code{BASH_ARGC} only when in extended debugging mode +(see @ref{The Shopt Builtin} +for a description of the @code{extdebug} option to the @code{shopt} +builtin). +Setting @code{extdebug} after the shell has started to execute a script, +or referencing this variable when @code{extdebug} is not set, +may result in inconsistent values. + +@item 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 @code{BASH_ARGV}. +The shell sets @code{BASH_ARGV} only when in extended debugging mode +(see @ref{The Shopt Builtin} +for a description of the @code{extdebug} option to the @code{shopt} +builtin). +Setting @code{extdebug} after the shell has started to execute a script, +or referencing this variable when @code{extdebug} is not set, +may result in inconsistent values. + +@item BASH_ARGV0 +When referenced, this variable expands to the name of the shell or shell +script (identical to @code{$0}; @xref{Special Parameters}, +for the description of special parameter 0). +Assignment to @code{BASH_ARGV0} +causes the value assigned to also be assigned to @code{$0}. +If @env{BASH_ARGV0} +is unset, it loses its special properties, even if it is +subsequently reset. + +@item BASH_CMDS +An associative array variable whose members correspond to the internal +hash table of commands as maintained by the @code{hash} builtin +(@pxref{Bourne Shell Builtins}). +Elements added to this array appear in the hash table; however, +unsetting array elements currently does not cause command names to be removed +from the hash table. +If @env{BASH_CMDS} +is unset, it loses its special properties, even if it is +subsequently reset. + +@item 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. +If @env{BASH_COMMAND} +is unset, it loses its special properties, even if it is +subsequently reset. + +@item BASH_COMPAT +The value is used to set the shell's compatibility level. +@xref{Shell Compatibility Mode}, for a description of the various +compatibility levels and their effects. +The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42) +corresponding to the desired compatibility level. +If @env{BASH_COMPAT} is unset or set to the empty string, the compatibility +level is set to the default for the current version. +If @env{BASH_COMPAT} is set to a value that is not one of the valid +compatibility levels, the shell prints an error message and sets the +compatibility level to the default for the current version. +The valid values correspond to the compatibility levels +described below (@pxref{Shell Compatibility Mode}). +For example, 4.2 and 42 are valid values that correspond +to the @code{compat42} @code{shopt} option +and set the compatibility level to 42. +The current version is also a valid value. + +@item BASH_ENV +If this variable is set when Bash is invoked to execute a shell +script, its value is expanded and used as the name of a startup file +to read before executing the script. @xref{Bash Startup Files}. + +@item BASH_EXECUTION_STRING +The command argument to the @option{-c} invocation option. + +@item BASH_LINENO +An array variable whose members are the line numbers in source files +where each corresponding member of @var{FUNCNAME} was invoked. +@code{$@{BASH_LINENO[$i]@}} is the line number in the source file +(@code{$@{BASH_SOURCE[$i+1]@}}) where +@code{$@{FUNCNAME[$i]@}} was called (or @code{$@{BASH_LINENO[$i-1]@}} if +referenced within another shell function). +Use @code{LINENO} to obtain the current line number. + +@item BASH_LOADABLES_PATH +A colon-separated list of directories in which the shell looks for +dynamically loadable builtins specified by the +@code{enable} command. + +@item BASH_REMATCH +An array variable whose members are assigned by the @samp{=~} binary +operator to the @code{[[} conditional command +(@pxref{Conditional Constructs}). +The element with index 0 is the portion of the string +matching the entire regular expression. +The element with index @var{n} is the portion of the +string matching the @var{n}th parenthesized subexpression. + +@item BASH_SOURCE +An array variable whose members are the source filenames where the +corresponding shell function names in the @code{FUNCNAME} array +variable are defined. +The shell function @code{$@{FUNCNAME[$i]@}} is defined in the file +@code{$@{BASH_SOURCE[$i]@}} and called from @code{$@{BASH_SOURCE[$i+1]@}} + +@item BASH_SUBSHELL +Incremented by one within each subshell or subshell environment when +the shell begins executing in that environment. +The initial value is 0. +If @env{BASH_SUBSHELL} +is unset, it loses its special properties, even if it is +subsequently reset. + +@item BASH_VERSINFO +A readonly array variable (@pxref{Arrays}) +whose members hold version information for this instance of Bash. +The values assigned to the array members are as follows: + +@table @code + +@item BASH_VERSINFO[0] +The major version number (the @var{release}). + +@item BASH_VERSINFO[1] +The minor version number (the @var{version}). + +@item BASH_VERSINFO[2] +The patch level. + +@item BASH_VERSINFO[3] +The build version. + +@item BASH_VERSINFO[4] +The release status (e.g., @var{beta1}). + +@item BASH_VERSINFO[5] +The value of @env{MACHTYPE}. +@end table + +@item BASH_VERSION +The version number of the current instance of Bash. + +@item BASH_XTRACEFD +If set to an integer corresponding to a valid file descriptor, Bash +will write the trace output generated when @samp{set -x} +is enabled to that file descriptor. +This allows tracing output to be separated from diagnostic and error +messages. +The file descriptor is closed when @code{BASH_XTRACEFD} is unset or assigned +a new value. +Unsetting @code{BASH_XTRACEFD} or assigning it the empty string causes the +trace output to be sent to the standard error. +Note that setting @code{BASH_XTRACEFD} to 2 (the standard error file +descriptor) and then unsetting it will result in the standard error +being closed. + +@item CHILD_MAX +Set the number of exited child status values for the shell to remember. +Bash will not allow this value to be decreased below a @sc{posix}-mandated +minimum, and there is a maximum value (currently 8192) that this may +not exceed. +The minimum value is system-dependent. + +@item COLUMNS +Used by the @code{select} command to determine the terminal width +when printing selection lists. +Automatically set if the @code{checkwinsize} option is enabled +(@pxref{The Shopt Builtin}), or in an interactive shell upon receipt of a +@code{SIGWINCH}. + +@item COMP_CWORD +An index into @env{$@{COMP_WORDS@}} of the word containing the current +cursor position. +This variable is available only in shell functions invoked by the +programmable completion facilities (@pxref{Programmable Completion}). + +@item COMP_LINE +The current command line. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (@pxref{Programmable Completion}). + +@item 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 @code{$@{#COMP_LINE@}}. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (@pxref{Programmable Completion}). + +@item COMP_TYPE +Set to an integer value corresponding to the type of completion attempted +that caused a completion function to be called: +@var{TAB}, for normal completion, +@samp{?}, for listing completions after successive tabs, +@samp{!}, for listing alternatives on partial word completion, +@samp{@@}, to list completions if the word is not unmodified, +or +@samp{%}, for menu completion. +This variable is available only in shell functions and external +commands invoked by the +programmable completion facilities (@pxref{Programmable Completion}). + +@item COMP_KEY +The key (or final key of a key sequence) used to invoke the current +completion function. + +@item COMP_WORDBREAKS +The set of characters that the Readline library treats as word +separators when performing word completion. +If @env{COMP_WORDBREAKS} +is unset, it loses its special properties, +even if it is subsequently reset. + +@item COMP_WORDS +An array variable consisting of the individual +words in the current command line. +The line is split into words as Readline would split it, using +@code{COMP_WORDBREAKS} as described above. +This variable is available only in shell functions invoked by the +programmable completion facilities (@pxref{Programmable Completion}). + +@item COMPREPLY +An array variable from which Bash reads the possible completions +generated by a shell function invoked by the programmable completion +facility (@pxref{Programmable Completion}). +Each array element contains one possible completion. + +@item COPROC +An array variable created to hold the file descriptors +for output from and input to an unnamed coprocess (@pxref{Coprocesses}). + +@item DIRSTACK +An array variable containing the current contents of the directory stack. +Directories appear in the stack in the order they are displayed by the +@code{dirs} builtin. +Assigning to members of this array variable may be used to modify +directories already in the stack, but the @code{pushd} and @code{popd} +builtins must be used to add and remove directories. +Assignment to this variable will not change the current directory. +If @env{DIRSTACK} +is unset, it loses its special properties, even if +it is subsequently reset. + +@item EMACS +If Bash finds this variable in the environment when the shell +starts with value @samp{t}, it assumes that the shell is running in an +Emacs shell buffer and disables line editing. + +@item ENV +Expanded and executed similarlty to @code{BASH_ENV} +(@pxref{Bash Startup Files}) +when an interactive shell is invoked in +@sc{posix} Mode (@pxref{Bash POSIX Mode}). + +@item EPOCHREALTIME +Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch as a floating point value with micro-second granularity +(see the documentation for the C library function @var{time} for the +definition of Epoch). +Assignments to @env{EPOCHREALTIME} are ignored. +If @env{EPOCHREALTIME} +is unset, it loses its special properties, even if +it is subsequently reset. + +@item EPOCHSECONDS +Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see the documentation for the C library function +@var{time} for the definition of Epoch). +Assignments to @env{EPOCHSECONDS} are ignored. +If @env{EPOCHSECONDS} +is unset, it loses its special properties, even if +it is subsequently reset. + +@item EUID +The numeric effective user id of the current user. This variable +is readonly. + +@item EXECIGNORE +A colon-separated list of shell patterns (@pxref{Pattern Matching}) +defining the list of filenames to be ignored by command search using +@code{PATH}. +Files whose full pathnames match one of these patterns are not considered +executable files for the purposes of completion and command execution +via @code{PATH} lookup. +This does not affect the behavior of the @code{[}, @code{test}, and @code{[[} +commands. +Full pathnames in the command hash table are not subject to @code{EXECIGNORE}. +Use this variable to ignore shared library files that have the executable +bit set, but are not executable files. +The pattern matching honors the setting of the @code{extglob} shell +option. + +@item FCEDIT +The editor used as a default by the @option{-e} option to the @code{fc} +builtin command. + +@item FIGNORE +A colon-separated list of suffixes to ignore when performing +filename completion. +A filename whose suffix matches one of the entries in +@env{FIGNORE} +is excluded from the list of matched filenames. A sample +value is @samp{.o:~} + +@item 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 (the one with the highest index) +is @code{"main"}. +This variable exists only when a shell function is executing. +Assignments to @env{FUNCNAME} have no effect. +If @env{FUNCNAME} +is unset, it loses its special properties, even if +it is subsequently reset. + +This variable can be used with @code{BASH_LINENO} and @code{BASH_SOURCE}. +Each element of @code{FUNCNAME} has corresponding elements in +@code{BASH_LINENO} and @code{BASH_SOURCE} to describe the call stack. +For instance, @code{$@{FUNCNAME[$i]@}} was called from the file +@code{$@{BASH_SOURCE[$i+1]@}} at line number @code{$@{BASH_LINENO[$i]@}}. +The @code{caller} builtin displays the current call stack using this +information. + +@item FUNCNEST +If set to a numeric value greater than 0, defines a maximum function +nesting level. Function invocations that exceed this nesting level +will cause the current command to abort. + +@item GLOBIGNORE +A colon-separated list of patterns defining the set of file names to +be ignored by filename expansion. +If a file name matched by a filename expansion pattern also matches one +of the patterns in @env{GLOBIGNORE}, it is removed from the list +of matches. +The pattern matching honors the setting of the @code{extglob} shell +option. + +@item GROUPS +An array variable containing the list of groups of which the current +user is a member. +Assignments to @env{GROUPS} have no effect. +If @env{GROUPS} +is unset, it loses its special properties, even if it is +subsequently reset. + +@item histchars +Up to three characters which control history expansion, quick +substitution, and tokenization (@pxref{History Interaction}). +The first character is the +@var{history expansion} character, that is, the character which signifies the +start of a history expansion, normally @samp{!}. The second character is the +character which signifies `quick substitution' when seen as the first +character on a line, normally @samp{^}. 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, usually @samp{#}. 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. + +@item HISTCMD +The history number, or index in the history list, of the current +command. +Assignments to @env{HISTCMD} are ignored. +If @env{HISTCMD} +is unset, it loses its special properties, +even if it is subsequently reset. + +@item HISTCONTROL +A colon-separated list of values controlling how commands are saved on +the history list. +If the list of values includes @samp{ignorespace}, lines which begin +with a space character are not saved in the history list. +A value of @samp{ignoredups} causes lines which match the previous +history entry to not be saved. +A value of @samp{ignoreboth} is shorthand for +@samp{ignorespace} and @samp{ignoredups}. +A value of @samp{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 @env{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 @env{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 +@env{HISTCONTROL}. + +@item HISTFILE +The name of the file to which the command history is saved. The +default value is @file{~/.bash_history}. + +@item HISTFILESIZE +The maximum number of lines contained in the history file. +When this variable is assigned a value, the history file is truncated, +if necessary, to contain no more than that number of lines +by removing the oldest entries. +The history file is also truncated to this size after +writing it when a shell exits. +If the value is 0, the history file is truncated to zero size. +Non-numeric values and numeric values less than zero inhibit truncation. +The shell sets the default value to the value of @env{HISTSIZE} +after reading any startup files. + +@item 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 @samp{*} is appended). Each pattern is tested +against the line after the checks specified by @env{HISTCONTROL} +are applied. In addition to the normal shell pattern matching +characters, @samp{&} matches the previous history line. @samp{&} +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 +@env{HISTIGNORE}. +The pattern matching honors the setting of the @code{extglob} shell +option. + +@env{HISTIGNORE} subsumes the function of @env{HISTCONTROL}. A +pattern of @samp{&} is identical to @code{ignoredups}, and a +pattern of @samp{[ ]*} is identical to @code{ignorespace}. +Combining these two patterns, separating them with a colon, +provides the functionality of @code{ignoreboth}. + +@item HISTSIZE +The maximum number of commands to remember on the history list. +If the value is 0, commands are not saved in the history list. +Numeric values less than zero result in every command being saved +on the history list (there is no limit). +The shell sets the default value to 500 after reading any startup files. + +@item HISTTIMEFORMAT +If this variable is set and not null, its value is used as a format string +for @var{strftime} to print the time stamp associated with each history +entry displayed by the @code{history} builtin. +If this variable is set, time stamps are written to the history file so +they may be preserved across shell sessions. +This uses the history comment character to distinguish timestamps from +other history lines. + +@item HOSTFILE +Contains the name of a file in the same format as @file{/etc/hosts} that +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 @env{HOSTFILE} is set, but has no value, or does not name a readable file, +Bash attempts to read +@file{/etc/hosts} to obtain the list of possible hostname completions. +When @env{HOSTFILE} is unset, the hostname list is cleared. + +@item HOSTNAME +The name of the current host. + +@item HOSTTYPE +A string describing the machine Bash is running on. + +@item IGNOREEOF +Controls the action of the shell on receipt of an @code{EOF} character +as the sole input. If set, the value denotes the number +of consecutive @code{EOF} characters that can be read as the +first character on an input line +before the shell will exit. If the variable exists but does not +have a numeric value, or has no value, then the default is 10. +If the variable does not exist, then @code{EOF} signifies the end of +input to the shell. This is only in effect for interactive shells. + +@item INPUTRC +The name of the Readline initialization file, overriding the default +of @file{~/.inputrc}. + +@item INSIDE_EMACS +If Bash finds this variable in the environment when the shell +starts, it assumes that the shell is running in an Emacs shell buffer +and may disable line editing depending on the value of @env{TERM}. + +@item LANG +Used to determine the locale category for any category not specifically +selected with a variable starting with @code{LC_}. + +@item LC_ALL +This variable overrides the value of @env{LANG} and any other +@code{LC_} variable specifying a locale category. + +@item LC_COLLATE +This variable determines the collation order used when sorting the +results of filename expansion, and +determines the behavior of range expressions, equivalence classes, +and collating sequences within filename expansion and pattern matching +(@pxref{Filename Expansion}). + +@item LC_CTYPE +This variable determines the interpretation of characters and the +behavior of character classes within filename expansion and pattern +matching (@pxref{Filename Expansion}). + +@item LC_MESSAGES +This variable determines the locale used to translate double-quoted +strings preceded by a @samp{$} (@pxref{Locale Translation}). + +@item LC_NUMERIC +This variable determines the locale category used for number formatting. + +@item LC_TIME +This variable determines the locale category used for data and time +formatting. + +@item LINENO +The line number in the script or shell function currently executing. +If @env{LINENO} +is unset, it loses its special properties, even if it is +subsequently reset. + +@item LINES +Used by the @code{select} command to determine the column length +for printing selection lists. +Automatically set if the @code{checkwinsize} option is enabled +(@pxref{The Shopt Builtin}), or in an interactive shell upon receipt of a +@code{SIGWINCH}. + +@item MACHTYPE +A string that fully describes the system type on which Bash +is executing, in the standard @sc{gnu} @var{cpu-company-system} format. + +@item MAILCHECK +How often (in seconds) that the shell should check for mail in the +files specified in the @env{MAILPATH} or @env{MAIL} variables. +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. + +@item MAPFILE +An array variable created to hold the text read by the +@code{mapfile} builtin when no variable name is supplied. + +@item OLDPWD +The previous working directory as set by the @code{cd} builtin. + +@item OPTERR +If set to the value 1, Bash displays error messages +generated by the @code{getopts} builtin command. + +@item OSTYPE +A string describing the operating system Bash is running on. + +@item PIPESTATUS +An array variable (@pxref{Arrays}) +containing a list of exit status values from the processes +in the most-recently-executed foreground pipeline (which may +contain only a single command). + +@item POSIXLY_CORRECT +If this variable is in the environment when Bash starts, the shell +enters @sc{posix} mode (@pxref{Bash POSIX Mode}) before reading the +startup files, as if the @option{--posix} invocation option had been supplied. +If it is set while the shell is running, Bash enables @sc{posix} mode, +as if the command +@example +@code{set -o posix} +@end example +@noindent +had been executed. +When the shell enters @sc{posix} mode, it sets this variable if it was +not already set. + +@item PPID +The process @sc{id} of the shell's parent process. This variable +is readonly. + +@item PROMPT_COMMAND +If this variable is set, and is an array, +the value of each set element is interpreted as a command to execute +before printing the primary prompt (@env{$PS1}). +If this is set but not an array variable, +its value is used as a command to execute instead. + +@item PROMPT_DIRTRIM +If set to a number greater than zero, the value is used as the number of +trailing directory components to retain when expanding the @code{\w} and +@code{\W} prompt string escapes (@pxref{Controlling the Prompt}). +Characters removed are replaced with an ellipsis. + +@item PS0 +The value of this parameter is expanded like @env{PS1} +and displayed by interactive shells after reading a command +and before the command is executed. + +@item PS3 +The value of this variable is used as the prompt for the +@code{select} command. If this variable is not set, the +@code{select} command prompts with @samp{#? } + +@item PS4 +The value of this parameter is expanded like @var{PS1} +and the expanded value is the prompt printed before the command line +is echoed when the @option{-x} option is set (@pxref{The Set Builtin}). +The first character of the expanded value is replicated multiple times, +as necessary, to indicate multiple levels of indirection. +The default is @samp{+ }. + +@item PWD +The current working directory as set by the @code{cd} builtin. + +@item RANDOM +Each time this parameter is referenced, it expands to a random integer +between 0 and 32767. Assigning a value to this +variable seeds the random number generator. +If @env{RANDOM} +is unset, it loses its special properties, even if it is +subsequently reset. + +@item READLINE_LINE +The contents of the Readline line buffer, for use +with @samp{bind -x} (@pxref{Bash Builtins}). + +@item READLINE_MARK +The position of the @var{mark} (saved insertion point) in the +Readline line buffer, for use +with @samp{bind -x} (@pxref{Bash Builtins}). +The characters between the insertion point and the mark are often +called the @var{region}. + +@item READLINE_POINT +The position of the insertion point in the Readline line buffer, for use +with @samp{bind -x} (@pxref{Bash Builtins}). + +@item REPLY +The default variable for the @code{read} builtin. + +@item SECONDS +This variable expands to the number of seconds since the +shell was started. Assignment to this variable resets +the count to the value assigned, and the expanded value +becomes the value assigned plus the number of seconds +since the assignment. +The number of seconds at shell invocation and the current time is always +determined by querying the system clock. +If @env{SECONDS} +is unset, it loses its special properties, +even if it is subsequently reset. + +@item SHELL +This environment variable expands to the full pathname to the shell. +If it is not set when the shell starts, +Bash assigns to it the full pathname of the current user's login shell. + +@item SHELLOPTS +A colon-separated list of enabled shell options. Each word in +the list is a valid argument for the @option{-o} option to the +@code{set} builtin command (@pxref{The Set Builtin}). +The options appearing in @env{SHELLOPTS} are those reported +as @samp{on} by @samp{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 readonly. + +@item SHLVL +Incremented by one each time a new instance of Bash is started. This is +intended to be a count of how deeply your Bash shells are nested. + +@item SRANDOM +This variable expands to a 32-bit pseudo-random number each time it is +referenced. The random number generator is not linear on systems that +support @file{/dev/urandom} or @code{arc4random}, so each returned number +has no relationship to the numbers preceding it. +The random number generator cannot be seeded, so assignments to this +variable have no effect. +If @env{SRANDOM} +is unset, it loses its special properties, +even if it is subsequently reset. + +@item TIMEFORMAT +The value of this parameter is used as a format string specifying +how the timing information for pipelines prefixed with the @code{time} +reserved word should be displayed. +The @samp{%} 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. + +@table @code + +@item %% +A literal @samp{%}. + +@item %[@var{p}][l]R +The elapsed time in seconds. + +@item %[@var{p}][l]U +The number of CPU seconds spent in user mode. + +@item %[@var{p}][l]S +The number of CPU seconds spent in system mode. + +@item %P +The CPU percentage, computed as (%U + %S) / %R. +@end table + +The optional @var{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 @var{p} greater than 3 are changed to 3. +If @var{p} is not specified, the value 3 is used. + +The optional @code{l} specifies a longer format, including minutes, of +the form @var{MM}m@var{SS}.@var{FF}s. +The value of @var{p} determines whether or not the fraction is included. + +If this variable is not set, Bash acts as if it had the value +@example +@code{$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'} +@end example +If the value is null, no timing information is displayed. +A trailing newline is added when the format string is displayed. + +@item TMOUT +If set to a value greater than zero, @code{TMOUT} is treated as the +default timeout for the @code{read} builtin (@pxref{Bash Builtins}). +The @code{select} command (@pxref{Conditional Constructs}) terminates +if input does not arrive after @code{TMOUT} seconds when input is coming +from a terminal. + +In an interactive shell, the value is interpreted as +the number of seconds to wait for a line of input after issuing +the primary prompt. +Bash +terminates after waiting for that number of seconds if a complete +line of input does not arrive. + +@item TMPDIR +If set, Bash uses its value as the name of a directory in which +Bash creates temporary files for the shell's use. + +@item UID +The numeric real user id of the current user. This variable is readonly. + +@end vtable + +@node Bash Features +@chapter Bash Features + +This chapter describes features unique to Bash. + +@menu +* Invoking Bash:: Command line options that you can give + to Bash. +* Bash Startup Files:: When and how Bash executes scripts. +* Interactive Shells:: What an interactive shell is. +* Bash Conditional Expressions:: Primitives used in composing expressions for + the @code{test} builtin. +* Shell Arithmetic:: Arithmetic on shell variables. +* Aliases:: Substituting one command for another. +* Arrays:: Array Variables. +* The Directory Stack:: History of visited directories. +* Controlling the Prompt:: Customizing the various prompt strings. +* The Restricted Shell:: A more controlled mode of shell execution. +* Bash POSIX Mode:: Making Bash behave more closely to what + the POSIX standard specifies. +* Shell Compatibility Mode:: How Bash supports behavior that was present + in earlier versions and has changed. +@end menu + +@node Invoking Bash +@section Invoking Bash + +@example +bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @var{option}] + [-O @var{shopt_option}] [@var{argument} @dots{}] +bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @var{option}] + [-O @var{shopt_option}] -c @var{string} [@var{argument} @dots{}] +bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @var{option}] + [-O @var{shopt_option}] [@var{argument} @dots{}] +@end example + +All of the single-character options used with the @code{set} builtin +(@pxref{The Set Builtin}) can be used as options when the shell is invoked. +In addition, there are several multi-character +options that you can use. These options must appear on the command +line before the single-character options to be recognized. + +@table @code +@item --debugger +Arrange for the debugger profile to be executed before the shell +starts. Turns on extended debugging mode (see @ref{The Shopt Builtin} +for a description of the @code{extdebug} option to the @code{shopt} +builtin). + +@item --dump-po-strings +A list of all double-quoted strings preceded by @samp{$} +is printed on the standard output +in the @sc{gnu} @code{gettext} PO (portable object) file format. +Equivalent to @option{-D} except for the output format. + +@item --dump-strings +Equivalent to @option{-D}. + +@item --help +Display a usage message on standard output and exit successfully. + +@item --init-file @var{filename} +@itemx --rcfile @var{filename} +Execute commands from @var{filename} (instead of @file{~/.bashrc}) +in an interactive shell. + +@item --login +Equivalent to @option{-l}. + +@item --noediting +Do not use the @sc{gnu} Readline library (@pxref{Command Line Editing}) +to read command lines when the shell is interactive. + +@item --noprofile +Don't load the system-wide startup file @file{/etc/profile} +or any of the personal initialization files +@file{~/.bash_profile}, @file{~/.bash_login}, or @file{~/.profile} +when Bash is invoked as a login shell. + +@item --norc +Don't read the @file{~/.bashrc} initialization file in an +interactive shell. This is on by default if the shell is +invoked as @code{sh}. + +@item --posix +Change the behavior of Bash where the default operation differs +from the @sc{posix} standard to match the standard. This +is intended to make Bash behave as a strict superset of that +standard. @xref{Bash POSIX Mode}, for a description of the Bash +@sc{posix} mode. + +@item --restricted +Make the shell a restricted shell (@pxref{The Restricted Shell}). + +@item --rpm-requires +Produce the list of files that are required for the +shell script to run. This implies '-n' and is subject +to the same limitations as compile time error checking checking; +Command substitutions, Conditional expressions and @command{eval} +are not parsed so some dependencies may be missed. + +@item --verbose +Equivalent to @option{-v}. Print shell input lines as they're read. + +@item --version +Show version information for this instance of +Bash on the standard output and exit successfully. +@end table + +There are several single-character options that may be supplied at +invocation which are not available with the @code{set} builtin. + +@table @code +@item -c +Read and execute commands from the first non-option argument +@var{command_string}, then exit. +If there are arguments after the @var{command_string}, +the first argument is assigned to @code{$0} +and any remaining arguments are assigned to the positional parameters. +The assignment to @code{$0} sets the name of the shell, which is used +in warning and error messages. + +@item -i +Force the shell to run interactively. Interactive shells are +described in @ref{Interactive Shells}. + +@item -l +Make this shell act as if it had been directly invoked by login. +When the shell is interactive, this is equivalent to starting a +login shell with @samp{exec -l bash}. +When the shell is not interactive, the login shell startup files will +be executed. +@samp{exec bash -l} or @samp{exec bash --login} +will replace the current shell with a Bash login shell. +@xref{Bash Startup Files}, for a description of the special behavior +of a login shell. + +@item -r +Make the shell a restricted shell (@pxref{The Restricted Shell}). + +@item -s +If this 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 or when reading input +through a pipe. + +@item -D +A list of all double-quoted strings preceded by @samp{$} +is printed on the standard output. +These are the strings that +are subject to language translation when the current locale +is not @code{C} or @code{POSIX} (@pxref{Locale Translation}). +This implies the @option{-n} option; no commands will be executed. + +@item [-+]O [@var{shopt_option}] +@var{shopt_option} is one of the shell options accepted by the +@code{shopt} builtin (@pxref{The Shopt Builtin}). +If @var{shopt_option} is present, @option{-O} sets the value of that option; +@option{+O} unsets it. +If @var{shopt_option} is not supplied, the names and values of the shell +options accepted by @code{shopt} are printed on the standard output. +If the invocation option is @option{+O}, the output is displayed in a format +that may be reused as input. + +@item -- +A @code{--} signals the end of options and disables further option +processing. +Any arguments after the @code{--} are treated as filenames and arguments. +@end table + +@cindex login shell +A @emph{login} shell is one whose first character of argument zero is +@samp{-}, or one invoked with the @option{--login} option. + +@cindex interactive shell +An @emph{interactive} shell is one started without non-option arguments, +unless @option{-s} is specified, +without specifying the @option{-c} option, and whose input and output are both +connected to terminals (as determined by @code{isatty(3)}), or one +started with the @option{-i} option. @xref{Interactive Shells}, for more +information. + +If arguments remain after option processing, and neither the +@option{-c} nor the @option{-s} +option has been supplied, the first argument is assumed to +be the name of a file containing shell commands (@pxref{Shell Scripts}). +When Bash is invoked in this fashion, @code{$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. + +@node Bash Startup Files +@section Bash Startup Files +@cindex startup files + +This section describes how Bash executes its startup files. +If any of the files exist but cannot be read, Bash reports an error. +Tildes are expanded in filenames as described above under +Tilde Expansion (@pxref{Tilde Expansion}). + +Interactive shells are described in @ref{Interactive Shells}. + +@subsubheading Invoked as an interactive login shell, or with @option{--login} + +When Bash is invoked as an interactive login shell, or as a +non-interactive shell with the @option{--login} option, it first reads and +executes commands from the file @file{/etc/profile}, if that file exists. +After reading that file, it looks for @file{~/.bash_profile}, +@file{~/.bash_login}, and @file{~/.profile}, in that order, and reads +and executes commands from the first one that exists and is readable. +The @option{--noprofile} option may be used when the shell is started to +inhibit this behavior. + +When an interactive login shell exits, +or a non-interactive login shell executes the @code{exit} builtin command, +Bash reads and executes commands from +the file @file{~/.bash_logout}, if it exists. + +@subsubheading Invoked as an interactive non-login shell + +When an interactive shell that is not a login shell is started, Bash +reads and executes commands from @file{~/.bashrc}, if that file exists. +This may be inhibited by using the @option{--norc} option. +The @option{--rcfile @var{file}} option will force Bash to read and +execute commands from @var{file} instead of @file{~/.bashrc}. + +So, typically, your @file{~/.bash_profile} contains the line +@example +@code{if [ -f ~/.bashrc ]; then . ~/.bashrc; fi} +@end example +@noindent +after (or before) any login-specific initializations. + +@subsubheading Invoked non-interactively + +When Bash is started non-interactively, to run a shell script, +for example, it looks for the variable @env{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: +@example +@code{if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi} +@end example +@noindent +but the value of the @env{PATH} variable is not used to search for the +filename. + +As noted above, if a non-interactive shell is invoked with the +@option{--login} option, Bash attempts to read and execute commands from the +login shell startup files. + +@subsubheading Invoked with name @code{sh} + +If Bash is invoked with the name @code{sh}, it tries to mimic the +startup behavior of historical versions of @code{sh} as closely as +possible, while conforming to the @sc{posix} standard as well. + +When invoked as an interactive login shell, or as a non-interactive +shell with the @option{--login} option, it first attempts to read +and execute commands from @file{/etc/profile} and @file{~/.profile}, in +that order. +The @option{--noprofile} option may be used to inhibit this behavior. +When invoked as an interactive shell with the name @code{sh}, Bash +looks for the variable @env{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 @code{sh} does not attempt to read and execute +commands from any other startup files, the @option{--rcfile} option has +no effect. +A non-interactive shell invoked with the name @code{sh} does not attempt +to read any other startup files. + +When invoked as @code{sh}, Bash enters @sc{posix} mode after +the startup files are read. + +@subsubheading Invoked in @sc{posix} mode + +When Bash is started in @sc{posix} mode, as with the +@option{--posix} command line option, it follows the @sc{posix} standard +for startup files. +In this mode, interactive shells expand the @env{ENV} variable +and commands are read and executed from the file whose name is the +expanded value. +No other startup files are read. + +@subsubheading Invoked by remote shell daemon + +Bash attempts to determine when it is being run with its standard input +connected to a network connection, as when executed by the remote shell +daemon, usually @code{rshd}, or the secure shell daemon @code{sshd}. +If Bash determines it is being run in +this fashion, it reads and executes commands from @file{~/.bashrc}, if that +file exists and is readable. +It will not do this if invoked as @code{sh}. +The @option{--norc} option may be used to inhibit this behavior, and the +@option{--rcfile} option may be used to force another file to be read, but +neither @code{rshd} nor @code{sshd} generally invoke the shell with those +options or allow them to be specified. + +@subsubheading Invoked with unequal effective and real @sc{uid/gid}s + +If Bash is started with the effective user (group) id not equal to the +real user (group) id, and the @option{-p} option is not supplied, no startup +files are read, shell functions are not inherited from the environment, +the @env{SHELLOPTS}, @env{BASHOPTS}, @env{CDPATH}, and @env{GLOBIGNORE} +variables, if they appear in the environment, are ignored, and the effective +user id is set to the real user id. +If the @option{-p} option is supplied at invocation, the startup behavior is +the same, but the effective user id is not reset. + +@node Interactive Shells +@section Interactive Shells +@cindex interactive shell +@cindex shell, interactive + +@menu +* What is an Interactive Shell?:: What determines whether a shell is Interactive. +* Is this Shell Interactive?:: How to tell if a shell is interactive. +* Interactive Shell Behavior:: What changes in a interactive shell? +@end menu + +@node What is an Interactive Shell? +@subsection What is an Interactive Shell? + +An interactive shell +is one started without non-option arguments, unless @option{-s} is +specified, without specifying the @option{-c} option, and +whose input and error output are both +connected to terminals (as determined by @code{isatty(3)}), +or one started with the @option{-i} option. + +An interactive shell generally reads from and writes to a user's +terminal. + +The @option{-s} invocation option may be used to set the positional parameters +when an interactive shell is started. + +@node Is this Shell Interactive? +@subsection Is this Shell Interactive? + +To determine within a startup script whether or not Bash is +running interactively, +test the value of the @samp{-} special parameter. +It contains @code{i} when the shell is interactive. For example: + +@example +case "$-" in +*i*) echo This shell is interactive ;; +*) echo This shell is not interactive ;; +esac +@end example + +Alternatively, startup scripts may examine the variable +@env{PS1}; it is unset in non-interactive shells, and set in +interactive shells. Thus: + +@example +if [ -z "$PS1" ]; then + echo This shell is not interactive +else + echo This shell is interactive +fi +@end example + +@node Interactive Shell Behavior +@subsection Interactive Shell Behavior + +When the shell is running interactively, it changes its behavior in +several ways. + +@enumerate +@item +Startup files are read and executed as described in @ref{Bash Startup Files}. + +@item +Job Control (@pxref{Job Control}) is enabled by default. When job +control is in effect, Bash ignores the keyboard-generated job control +signals @code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}. + +@item +Bash expands and displays @env{PS1} before reading the first line +of a command, and expands and displays @env{PS2} before reading the +second and subsequent lines of a multi-line command. +Bash expands and displays @env{PS0} after it reads a command but before +executing it. +See @ref{Controlling the Prompt}, for a complete list of prompt +string escape sequences. + +@item +Bash executes the values of the set elements of the @env{PROMPT_COMMANDS} +array variable as commands before printing the primary prompt, @env{$PS1} +(@pxref{Bash Variables}). + +@item +Readline (@pxref{Command Line Editing}) is used to read commands from +the user's terminal. + +@item +Bash inspects the value of the @code{ignoreeof} option to @code{set -o} +instead of exiting immediately when it receives an @code{EOF} on its +standard input when reading a command (@pxref{The Set Builtin}). + +@item +Command history (@pxref{Bash History Facilities}) +and history expansion (@pxref{History Interaction}) +are enabled by default. +Bash will save the command history to the file named by @env{$HISTFILE} +when a shell with history enabled exits. + +@item +Alias expansion (@pxref{Aliases}) is performed by default. + +@item +In the absence of any traps, Bash ignores @code{SIGTERM} +(@pxref{Signals}). + +@item +In the absence of any traps, @code{SIGINT} is caught and handled +(@pxref{Signals}). +@code{SIGINT} will interrupt some shell builtins. + +@item +An interactive login shell sends a @code{SIGHUP} to all jobs on exit +if the @code{huponexit} shell option has been enabled (@pxref{Signals}). + +@item +The @option{-n} invocation option is ignored, and @samp{set -n} has +no effect (@pxref{The Set Builtin}). + +@item +Bash will check for mail periodically, depending on the values of the +@env{MAIL}, @env{MAILPATH}, and @env{MAILCHECK} shell variables +(@pxref{Bash Variables}). + +@item +Expansion errors due to references to unbound shell variables after +@samp{set -u} has been enabled will not cause the shell to exit +(@pxref{The Set Builtin}). + +@item +The shell will not exit on expansion errors caused by @var{var} being unset +or null in @code{$@{@var{var}:?@var{word}@}} expansions +(@pxref{Shell Parameter Expansion}). + +@item +Redirection errors encountered by shell builtins will not cause the +shell to exit. + +@item +When running in @sc{posix} mode, a special builtin returning an error +status will not cause the shell to exit (@pxref{Bash POSIX Mode}). + +@item +A failed @code{exec} will not cause the shell to exit +(@pxref{Bourne Shell Builtins}). + +@item +Parser syntax errors will not cause the shell to exit. + +@item +Simple spelling correction for directory arguments to the @code{cd} +builtin is enabled by default (see the description of the @code{cdspell} +option to the @code{shopt} builtin in @ref{The Shopt Builtin}). + +@item +The shell will check the value of the @env{TMOUT} variable and exit +if a command is not read within the specified number of seconds after +printing @env{$PS1} (@pxref{Bash Variables}). + +@end enumerate + +@node Bash Conditional Expressions +@section Bash Conditional Expressions +@cindex expressions, conditional + +Conditional expressions are used by the @code{[[} compound command +and the @code{test} and @code{[} builtin commands. The @code{test} +and @code{[} commands determine their behavior based on the number +of arguments; see the descriptions of those commands for any other +command-specific actions. + +Expressions may be unary or binary, +and are formed from the following primaries. +Unary expressions are often used to examine the status of a file. +There are string operators and numeric comparison operators as well. +Bash handles several filenames specially when they are used in +expressions. +If the operating system on which Bash is running provides these +special files, Bash will use them; otherwise it will emulate them +internally with this behavior: +If the @var{file} argument to one of the primaries is of the form +@file{/dev/fd/@var{N}}, then file descriptor @var{N} is checked. +If the @var{file} argument to one of the primaries is one of +@file{/dev/stdin}, @file{/dev/stdout}, or @file{/dev/stderr}, file +descriptor 0, 1, or 2, respectively, is checked. + +When used with @code{[[}, the @samp{<} and @samp{>} operators sort +lexicographically using the current locale. +The @code{test} command uses ASCII ordering. + +Unless otherwise specified, primaries that operate on files follow symbolic +links and operate on the target of the link, rather than the link itself. + +@table @code +@item -a @var{file} +True if @var{file} exists. + +@item -b @var{file} +True if @var{file} exists and is a block special file. + +@item -c @var{file} +True if @var{file} exists and is a character special file. + +@item -d @var{file} +True if @var{file} exists and is a directory. + +@item -e @var{file} +True if @var{file} exists. + +@item -f @var{file} +True if @var{file} exists and is a regular file. + +@item -g @var{file} +True if @var{file} exists and its set-group-id bit is set. + +@item -h @var{file} +True if @var{file} exists and is a symbolic link. + +@item -k @var{file} +True if @var{file} exists and its "sticky" bit is set. + +@item -p @var{file} +True if @var{file} exists and is a named pipe (FIFO). + +@item -r @var{file} +True if @var{file} exists and is readable. + +@item -s @var{file} +True if @var{file} exists and has a size greater than zero. + +@item -t @var{fd} +True if file descriptor @var{fd} is open and refers to a terminal. + +@item -u @var{file} +True if @var{file} exists and its set-user-id bit is set. + +@item -w @var{file} +True if @var{file} exists and is writable. + +@item -x @var{file} +True if @var{file} exists and is executable. + +@item -G @var{file} +True if @var{file} exists and is owned by the effective group id. + +@item -L @var{file} +True if @var{file} exists and is a symbolic link. + +@item -N @var{file} +True if @var{file} exists and has been modified since it was last read. + +@item -O @var{file} +True if @var{file} exists and is owned by the effective user id. + +@item -S @var{file} +True if @var{file} exists and is a socket. + +@item @var{file1} -ef @var{file2} +True if @var{file1} and @var{file2} refer to the same device and +inode numbers. + +@item @var{file1} -nt @var{file2} +True if @var{file1} is newer (according to modification date) +than @var{file2}, or if @var{file1} exists and @var{file2} does not. + +@item @var{file1} -ot @var{file2} +True if @var{file1} is older than @var{file2}, +or if @var{file2} exists and @var{file1} does not. + +@item -o @var{optname} +True if the shell option @var{optname} is enabled. +The list of options appears in the description of the @option{-o} +option to the @code{set} builtin (@pxref{The Set Builtin}). + +@item -v @var{varname} +True if the shell variable @var{varname} is set (has been assigned a value). + +@item -R @var{varname} +True if the shell variable @var{varname} is set and is a name reference. + +@item -z @var{string} +True if the length of @var{string} is zero. + +@item -n @var{string} +@itemx @var{string} +True if the length of @var{string} is non-zero. + +@item @var{string1} == @var{string2} +@itemx @var{string1} = @var{string2} +True if the strings are equal. +When used with the @code{[[} command, this performs pattern matching as +described above (@pxref{Conditional Constructs}). + +@samp{=} should be used with the @code{test} command for @sc{posix} conformance. + +@item @var{string1} != @var{string2} +True if the strings are not equal. + +@item @var{string1} < @var{string2} +True if @var{string1} sorts before @var{string2} lexicographically. + +@item @var{string1} > @var{string2} +True if @var{string1} sorts after @var{string2} lexicographically. + +@item @var{arg1} OP @var{arg2} +@code{OP} is one of +@samp{-eq}, @samp{-ne}, @samp{-lt}, @samp{-le}, @samp{-gt}, or @samp{-ge}. +These arithmetic binary operators return true if @var{arg1} +is equal to, not equal to, less than, less than or equal to, +greater than, or greater than or equal to @var{arg2}, +respectively. @var{Arg1} and @var{arg2} +may be positive or negative integers. +When used with the @code{[[} command, @var{Arg1} and @var{Arg2} +are evaluated as arithmetic expressions (@pxref{Shell Arithmetic}). +@end table + +@node Shell Arithmetic +@section Shell Arithmetic +@cindex arithmetic, shell +@cindex shell arithmetic +@cindex expressions, arithmetic +@cindex evaluation, arithmetic +@cindex arithmetic evaluation + +The shell allows arithmetic expressions to be evaluated, as one of +the shell expansions or by using the @code{((} compound command, the +@code{let} builtin, or the @option{-i} option to the @code{declare} builtin. + +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. + +@table @code + +@item @var{id}++ @var{id}-- +variable post-increment and post-decrement + +@item ++@var{id} --@var{id} +variable pre-increment and pre-decrement + +@item - + +unary minus and plus + +@item ! ~ +logical and bitwise negation + +@item ** +exponentiation + +@item * / % +multiplication, division, remainder + +@item + - +addition, subtraction + +@item << >> +left and right bitwise shifts + +@item <= >= < > +comparison + +@item == != +equality and inequality + +@item & +bitwise AND + +@item ^ +bitwise exclusive OR + +@item | +bitwise OR + +@item && +logical AND + +@item || +logical OR + +@item expr ? expr : expr +conditional operator + +@item = *= /= %= += -= <<= >>= &= ^= |= +assignment + +@item expr1 , expr2 +comma +@end table + +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 +@var{integer} attribute using @samp{declare -i} is assigned a value. +A null value evaluates to 0. +A shell variable need not have its @var{integer} attribute turned on +to be used in an expression. + +Integer constants follow the C language definition, without suffixes or +character constants. +Constants with a leading 0 are interpreted as octal numbers. +A leading @samp{0x} or @samp{0X} denotes hexadecimal. Otherwise, +numbers take the form [@var{base}@code{#}]@var{n}, where the optional @var{base} +is a decimal number between 2 and 64 representing the arithmetic +base, and @var{n} is a number in that base. +If @var{base}@code{#} is omitted, then base 10 is used. +When specifying @var{n}, +if a non-digit is required, +the digits greater than 9 are represented by the lowercase letters, +the uppercase letters, @samp{@@}, and @samp{_}, in that order. +If @var{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. + +@node Aliases +@section Aliases +@cindex alias expansion + +@var{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 @code{alias} and @code{unalias} builtin commands. + +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 @samp{/}, @samp{$}, @samp{`}, @samp{=} 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 @code{ls} to @code{"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 +@var{blank}, then the next command word following the +alias is also checked for alias expansion. + +Aliases are created and listed with the @code{alias} +command, and removed with the @code{unalias} command. + +There is no mechanism for using arguments in the replacement text, +as in @code{csh}. +If arguments are needed, a shell function should be used +(@pxref{Shell Functions}). + +Aliases are not expanded when the shell is not interactive, +unless the @code{expand_aliases} shell option is set using +@code{shopt} (@pxref{The Shopt Builtin}). + +The rules concerning the definition and use of aliases are +somewhat confusing. Bash +always reads at least one complete line of input, +and all lines that make up a compound command, +before executing any of the commands on that line or the compound command. +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 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 @code{alias} +in compound commands. + +For almost every purpose, shell functions are preferred over aliases. + +@node Arrays +@section Arrays +@cindex arrays + +Bash provides one-dimensional indexed and associative array variables. +Any variable may be used as an indexed array; +the @code{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. +Indexed arrays are referenced using integers (including arithmetic +expressions (@pxref{Shell Arithmetic})) and are zero-based; +associative arrays use arbitrary strings. +Unless otherwise noted, indexed array indices must be non-negative integers. + +An indexed array is created automatically if any variable is assigned to +using the syntax +@example +@var{name}[@var{subscript}]=@var{value} +@end example + +@noindent +The @var{subscript} +is treated as an arithmetic expression that must evaluate to a number. +To explicitly declare an array, use +@example +declare -a @var{name} +@end example +@noindent +The syntax +@example +declare -a @var{name}[@var{subscript}] +@end example +@noindent +is also accepted; the @var{subscript} is ignored. + +@noindent +Associative arrays are created using +@example +declare -A @var{name} +@end example + +Attributes may be +specified for an array variable using the @code{declare} and +@code{readonly} builtins. Each attribute applies to all members of +an array. + +Arrays are assigned to using compound assignments of the form +@example +@var{name}=(@var{value1} @var{value2} @dots{} ) +@end example +@noindent +where each +@var{value} may be of the form @code{[@var{subscript}]=}@var{string}. +Indexed array assignments do not require anything but @var{string}. +When assigning to indexed arrays, if +the optional subscript is 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. + +Each @var{value} in the list undergoes all the shell expansions +described above (@pxref{Shell Expansions}). + +When assigning to an associative array, the words in a compound assignment +may be either assignment statements, for which the subscript is required, +or a list of words that is interpreted as a sequence of alternating keys +and values: +@var{name}=(@var{key1} @var{value1} @var{key2} @var{value2} @dots{} ). +These are treated identically to +@var{name}=( [@var{key1}]=@var{value1} [@var{key2}]=@var{value2} @dots{} ). +The first word in the list determines how the remaining words +are interpreted; all assignments in a list must be of the same type. +When using key/value pairs, the keys may not be missing or empty; +a final missing value is treated like the empty string. + +This syntax is also accepted by the @code{declare} +builtin. Individual array elements may be assigned to using the +@code{@var{name}[@var{subscript}]=@var{value}} syntax introduced above. + +When assigning to an indexed array, if @var{name} +is subscripted by a negative number, that number is +interpreted as relative to one greater than the maximum index of +@var{name}, so negative indices count back from the end of the +array, and an index of -1 references the last element. + +Any element of an array may be referenced using +@code{$@{@var{name}[@var{subscript}]@}}. +The braces are required to avoid +conflicts with the shell's filename expansion operators. If the +@var{subscript} is @samp{@@} or @samp{*}, the word expands to all members +of the array @var{name}. These subscripts differ only when the word +appears within double quotes. +If the word is double-quoted, +@code{$@{@var{name}[*]@}} expands to a single word with +the value of each array member separated by the first character of the +@env{IFS} variable, and @code{$@{@var{name}[@@]@}} expands each element of +@var{name} to a separate word. When there are no array members, +@code{$@{@var{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 @samp{@@} and @samp{*}. +@code{$@{#@var{name}[@var{subscript}]@}} expands to the length of +@code{$@{@var{name}[@var{subscript}]@}}. +If @var{subscript} is @samp{@@} or +@samp{*}, the expansion is the number of elements in the array. +If the @var{subscript} +used to reference an element of an indexed array +evaluates to a number less than zero, it is +interpreted as relative to one greater than the maximum index of the array, +so negative indices count back from the end of the array, +and an index of -1 refers to the last element. + +Referencing an array variable without a subscript is equivalent to +referencing with a subscript of 0. +Any reference to a variable using a valid subscript is legal, and +@code{bash} will create an array if necessary. + +An array variable is considered set if a subscript has been assigned a +value. The null string is a valid value. + +It is possible to obtain the keys (indices) of an array as well as the values. +$@{!@var{name}[@@]@} and $@{!@var{name}[*]@} expand to the indices +assigned in array variable @var{name}. +The treatment when in double quotes is similar to the expansion of the +special parameters @samp{@@} and @samp{*} within double quotes. + +The @code{unset} builtin is used to destroy arrays. +@code{unset @var{name}[@var{subscript}]} +destroys the array element at index @var{subscript}. +Negative subscripts to indexed arrays are interpreted as described above. +Unsetting the last element of an array variable does not unset the variable. +@code{unset @var{name}}, where @var{name} is an array, removes the +entire array. A subscript of @samp{*} or @samp{@@} also removes the +entire array. + +When using a variable name with a subscript as an argument to a command, +such as with @code{unset}, without using the word expansion syntax +described above, the argument is subject to the shell's filename expansion. +If filename expansion is not desired, the argument should be quoted. + +The @code{declare}, @code{local}, and @code{readonly} +builtins each accept a @option{-a} option to specify an indexed +array and a @option{-A} option to specify an associative array. +If both options are supplied, @option{-A} takes precedence. +The @code{read} builtin accepts a @option{-a} +option to assign a list of words read from the standard input +to an array, and can read values from the standard input into +individual array elements. The @code{set} and @code{declare} +builtins display array values in a way that allows them to be +reused as input. + +@node The Directory Stack +@section The Directory Stack +@cindex directory stack + +@menu +* Directory Stack Builtins:: Bash builtin commands to manipulate + the directory stack. +@end menu + +The directory stack is a list of recently-visited directories. The +@code{pushd} builtin adds directories to the stack as it changes +the current directory, and the @code{popd} builtin removes specified +directories from the stack and changes the current directory to +the directory removed. The @code{dirs} builtin displays the contents +of the directory stack. The current directory is always the "top" +of the directory stack. + +The contents of the directory stack are also visible +as the value of the @env{DIRSTACK} shell variable. + +@node Directory Stack Builtins +@subsection Directory Stack Builtins + +@table @code + +@item dirs +@btindex dirs +@example +dirs [-clpv] [+@var{N} | -@var{N}] +@end example + +Display the list of currently remembered directories. Directories +are added to the list with the @code{pushd} command; the +@code{popd} command removes directories from the list. +The current directory is always the first directory in the stack. + +@table @code +@item -c +Clears the directory stack by deleting all of the elements. +@item -l +Produces a listing using full pathnames; +the default listing format uses a tilde to denote the home directory. +@item -p +Causes @code{dirs} to print the directory stack with one entry per +line. +@item -v +Causes @code{dirs} to print the directory stack with one entry per +line, prefixing each entry with its index in the stack. +@item +@var{N} +Displays the @var{N}th directory (counting from the left of the +list printed by @code{dirs} when invoked without options), starting +with zero. +@item -@var{N} +Displays the @var{N}th directory (counting from the right of the +list printed by @code{dirs} when invoked without options), starting +with zero. +@end table + +@item popd +@btindex popd +@example +popd [-n] [+@var{N} | -@var{N}] +@end example + +When no arguments are given, @code{popd} +removes the top directory from the stack and +performs a @code{cd} to the new top directory. +The elements are numbered from 0 starting at the first directory +listed with @code{dirs}; that is, @code{popd} is equivalent to @code{popd +0}. + +@table @code +@item -n +Suppresses the normal change of directory when removing directories +from the stack, so that only the stack is manipulated. +@item +@var{N} +Removes the @var{N}th directory (counting from the left of the +list printed by @code{dirs}), starting with zero. +@item -@var{N} +Removes the @var{N}th directory (counting from the right of the +list printed by @code{dirs}), starting with zero. +@end table + +@btindex pushd +@item pushd +@example +pushd [-n] [@var{+N} | @var{-N} | @var{dir}] +@end example + +Save the current directory on the top of the directory stack +and then @code{cd} to @var{dir}. +With no arguments, @code{pushd} exchanges the top two directories +and makes the new top the current directory. + +@table @code +@item -n +Suppresses the normal change of directory when rotating or +adding directories to the stack, so that only the stack is manipulated. +@item +@var{N} +Brings the @var{N}th directory (counting from the left of the +list printed by @code{dirs}, starting with zero) to the top of +the list by rotating the stack. +@item -@var{N} +Brings the @var{N}th directory (counting from the right of the +list printed by @code{dirs}, starting with zero) to the top of +the list by rotating the stack. +@item @var{dir} +Makes @var{dir} be the top of the stack, making +it the new current directory as if it had been supplied as an argument +to the @code{cd} builtin. +@end table +@end table + +@node Controlling the Prompt +@section Controlling the Prompt +@cindex prompting + +Bash examines the value of the array variable @env{PROMPT_COMMANDS} just before +printing each primary prompt. +If any elements in @env{PROMPT_COMMANDS} are set and non-null, Bash +executes each value, in numeric order, +just as if it had been typed on the command line. + +In addition, the following table describes the special characters which +can appear in the prompt variables @env{PS0}, @env{PS1}, @env{PS2}, and +@env{PS4}: + +@table @code +@item \a +A bell character. +@item \d +The date, in "Weekday Month Date" format (e.g., "Tue May 26"). +@item \D@{@var{format}@} +The @var{format} is passed to @code{strftime}(3) and the result is inserted +into the prompt string; an empty @var{format} results in a locale-specific +time representation. The braces are required. +@item \e +An escape character. +@item \h +The hostname, up to the first `.'. +@item \H +The hostname. +@item \j +The number of jobs currently managed by the shell. +@item \l +The basename of the shell's terminal device name. +@item \n +A newline. +@item \r +A carriage return. +@item \s +The name of the shell, the basename of @code{$0} (the portion +following the final slash). +@item \t +The time, in 24-hour HH:MM:SS format. +@item \T +The time, in 12-hour HH:MM:SS format. +@item \@@ +The time, in 12-hour am/pm format. +@item \A +The time, in 24-hour HH:MM format. +@item \u +The username of the current user. +@item \v +The version of Bash (e.g., 2.00) +@item \V +The release of Bash, version + patchlevel (e.g., 2.00.0) +@item \w +The current working directory, with @env{$HOME} abbreviated with a tilde +(uses the @env{$PROMPT_DIRTRIM} variable). +@item \W +The basename of @env{$PWD}, with @env{$HOME} abbreviated with a tilde. +@item \! +The history number of this command. +@item \# +The command number of this command. +@item \$ +If the effective uid is 0, @code{#}, otherwise @code{$}. +@item \@var{nnn} +The character whose ASCII code is the octal value @var{nnn}. +@item \\ +A backslash. +@item \[ +Begin a sequence of non-printing characters. This could be used to +embed a terminal control sequence into the prompt. +@item \] +End a sequence of non-printing characters. +@end table + +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 +(@pxref{Bash History Facilities}), 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 +@code{promptvars} shell option (@pxref{The Shopt Builtin}). +This can have unwanted side effects if escaped portions of the string +appear within command substitution or contain characters special to +word expansion. + +@node The Restricted Shell +@section The Restricted Shell +@cindex restricted shell + +If Bash is started with the name @code{rbash}, or the +@option{--restricted} +or +@option{-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 @code{bash} +with the exception that the following are disallowed or not performed: + +@itemize @bullet +@item +Changing directories with the @code{cd} builtin. +@item +Setting or unsetting the values of the @env{SHELL}, @env{PATH}, +@env{HISTFILE}, +@env{ENV}, or @env{BASH_ENV} variables. +@item +Specifying command names containing slashes. +@item +Specifying a filename containing a slash as an argument to the @code{.} +builtin command. +@item +Specifying a filename containing a slash as an argument to the @code{history} +builtin command. +@item +Specifying a filename containing a slash as an argument to the @option{-p} +option to the @code{hash} builtin command. +@item +Importing function definitions from the shell environment at startup. +@item +Parsing the value of @env{SHELLOPTS} from the shell environment at startup. +@item +Redirecting output using the @samp{>}, @samp{>|}, @samp{<>}, @samp{>&}, +@samp{&>}, and @samp{>>} redirection operators. +@item +Using the @code{exec} builtin to replace the shell with another command. +@item +Adding or deleting builtin commands with the +@option{-f} and @option{-d} options to the @code{enable} builtin. +@item +Using the @code{enable} builtin command to enable disabled shell builtins. +@item +Specifying the @option{-p} option to the @code{command} builtin. +@item +Turning off restricted mode with @samp{set +r} or @samp{set +o restricted}. +@end itemize + +These restrictions are enforced after any startup files are read. + +When a command that is found to be a shell script is executed +(@pxref{Shell Scripts}), @code{rbash} turns off any restrictions in +the shell spawned to execute the script. + +The restricted shell mode is only one component of a useful restricted +environment. It should be accompanied by setting @env{PATH} to a value +that allows execution of only a few verified commands (commands that +allow shell escapes are particularly vulnerable), leaving the user +in a non-writable directory other than his home directory after login, +not allowing the restricted shell to execute shell scripts, and cleaning +the environment of variables that cause some commands to modify their +behavior (e.g., @env{VISUAL} or @env{PAGER}). + +Modern systems provide more secure ways to implement a restricted environment, +such as @code{jails}, @code{zones}, or @code{containers}. + + +@node Bash POSIX Mode +@section Bash POSIX Mode +@cindex POSIX Mode + +Starting Bash with the @option{--posix} command-line option or executing +@samp{set -o posix} while Bash is running will cause Bash to conform more +closely to the @sc{posix} standard by changing the behavior to +match that specified by @sc{posix} in areas where the Bash default differs. + +When invoked as @code{sh}, Bash enters @sc{posix} mode after reading the +startup files. + +The following list is what's changed when `@sc{posix} mode' is in effect: + +@enumerate +@item +Bash ensures that the @env{POSIXLY_CORRECT} variable is set. + +@item +When a command in the hash table no longer exists, Bash will re-search +@env{$PATH} to find the new location. This is also available with +@samp{shopt -s checkhash}. + +@item +Bash will not insert a command without the execute bit set into the +command hash table, even if it returns it as a (last-ditch) result +from a @env{$PATH} search. + +@item +The message printed by the job control code and builtins when a job +exits with a non-zero status is `Done(status)'. + +@item +The message printed by the job control code and builtins when a job +is stopped is `Stopped(@var{signame})', where @var{signame} is, for +example, @code{SIGTSTP}. + +@item +Alias expansion is always enabled, even in non-interactive shells. + +@item +Reserved words appearing in a context where reserved words are recognized +do not undergo alias expansion. + +@item +The @sc{posix} @env{PS1} and @env{PS2} expansions of @samp{!} to +the history number and @samp{!!} to @samp{!} are enabled, +and parameter expansion is performed on the values of @env{PS1} and +@env{PS2} regardless of the setting of the @code{promptvars} option. + +@item +The @sc{posix} startup files are executed (@env{$ENV}) rather than +the normal Bash files. + +@item +Tilde expansion is only performed on assignments preceding a command +name, rather than on all assignment statements on the line. + +@item +The default history file is @file{~/.sh_history} (this is the +default value of @env{$HISTFILE}). + +@item +Redirection operators do not perform filename expansion on the word +in the redirection unless the shell is interactive. + +@item +Redirection operators do not perform word splitting on the word in the +redirection. + +@item +Function names must be valid shell @code{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. + +@item +Function names may not be the same as one of the @sc{posix} special +builtins. + +@item +@sc{posix} special builtins are found before shell functions +during command lookup. + +@item +When printing shell function definitions (e.g., by @code{type}), Bash does +not print the @code{function} keyword. + +@item +Literal tildes that appear as the first character in elements of +the @env{PATH} variable are not expanded as described above +under @ref{Tilde Expansion}. + +@item +The @code{time} reserved word may be used by itself as a command. When +used in this way, it displays timing statistics for the shell and its +completed children. The @env{TIMEFORMAT} variable controls the format +of the timing information. + +@item +When parsing and expanding a $@{@dots{}@} expansion that appears within +double quotes, single quotes are no longer special and cannot be used to +quote a closing brace or other special character, unless the operator is +one of those defined to perform pattern removal. In this case, they do +not have to appear as matched pairs. + +@item +The parser does not recognize @code{time} as a reserved word if the next +token begins with a @samp{-}. + +@ignore +@item +When parsing @code{$()} command substitutions containing here-documents, +the parser does not allow a here-document to be delimited by the closing +right parenthesis. The newline after the here-document delimiter is required. +@end ignore + +@item +The @samp{!} character does not introduce history expansion within a +double-quoted string, even if the @code{histexpand} option is enabled. + +@item +If a @sc{posix} special builtin returns an error status, a +non-interactive shell exits. The fatal errors are those listed in +the @sc{posix} standard, and include things like passing incorrect options, +redirection errors, variable assignment errors for assignments preceding +the command name, and so on. + +@item +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. + +@item +A non-interactive shell exits with an error status if a variable +assignment error occurs in an assignment statement preceding a special +builtin, but not with any other simple command. + +@item +A non-interactive shell exits with an error status if the iteration +variable in a @code{for} statement or the selection variable in a +@code{select} statement is a readonly variable. + +@item +Non-interactive shells exit if @var{filename} in @code{.} @var{filename} +is not found. + +@item +Non-interactive shells exit if a syntax error in an arithmetic expansion +results in an invalid expression. + +@item +Non-interactive shells exit if a parameter expansion error occurs. + +@item +Non-interactive shells exit if there is a syntax error in a script read +with the @code{.} or @code{source} builtins, or in a string processed by +the @code{eval} builtin. + +@item +While variable indirection is available, it may not be applied to the +@samp{#} and @samp{?} special parameters. + +@item +When expanding the @samp{*} special parameter in a pattern context where the +expansion is double-quoted does not treat the @code{$*} as if it were +double-quoted. + +@item +Assignment statements preceding @sc{posix} special builtins +persist in the shell environment after the builtin completes. + +@item +The @code{command} builtin does not prevent builtins that take assignment +statements as arguments from expanding them as assignment statements; +when not in @sc{posix} mode, assignment builtins lose their assignment +statement expansion properties when preceded by @code{command}. + +@item +The @code{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. + +@item +The output of @samp{kill -l} prints all the signal names on a single line, +separated by spaces, without the @samp{SIG} prefix. + +@item +The @code{kill} builtin does not accept signal names with a @samp{SIG} +prefix. + +@item +The @code{export} and @code{readonly} builtin commands display their +output in the format required by @sc{posix}. + +@item +The @code{trap} builtin displays signal names without the leading +@code{SIG}. + +@item +The @code{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 @samp{-} as the +first argument. + +@item +@code{trap -p} displays signals whose dispositions are set to SIG_DFL and +those that were ignored when the shell started. + +@item +The @code{.} and @code{source} builtins do not search the current directory +for the filename argument if it is not found by searching @env{PATH}. + +@item +Enabling @sc{posix} mode has the effect of setting the +@code{inherit_errexit} option, so +subshells spawned to execute command substitutions inherit the value of +the @option{-e} option from the parent shell. +When the @code{inherit_errexit} option is not enabled, +Bash clears the @option{-e} option in such subshells. + +@item +Enabling @sc{posix} mode has the effect of setting the +@code{shift_verbose} option, so numeric arguments to @code{shift} +that exceed the number of positional parameters will result in an +error message. + +@item +When the @code{alias} builtin displays alias definitions, it does not +display them with a leading @samp{alias } unless the @option{-p} option +is supplied. + +@item +When the @code{set} builtin is invoked without options, it does not display +shell function names and definitions. + +@item +When the @code{set} builtin is invoked without options, it displays +variable values without quotes, unless they contain shell metacharacters, +even if the result contains nonprinting characters. + +@item +When the @code{cd} builtin is invoked in @var{logical} mode, and the pathname +constructed from @code{$PWD} and the directory name supplied as an argument +does not refer to an existing directory, @code{cd} will fail instead of +falling back to @var{physical} mode. + +@item +When the @code{cd} builtin cannot change a directory because the +length of the pathname +constructed from @code{$PWD} and the directory name supplied as an argument +exceeds @var{PATH_MAX} when all symbolic links are expanded, @code{cd} will +fail instead of attempting to use only the supplied directory name. + +@item +The @code{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 +@option{-P} option. + +@item +When listing the history, the @code{fc} builtin does not include an +indication of whether or not a history entry has been modified. + +@item +The default editor used by @code{fc} is @code{ed}. + +@item +The @code{type} and @code{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 @code{$PATH}. + +@item +The @code{vi} editing mode will invoke the @code{vi} editor directly when +the @samp{v} command is run, instead of checking @code{$VISUAL} and +@code{$EDITOR}. + +@item +When the @code{xpg_echo} option is enabled, Bash does not attempt to interpret +any arguments to @code{echo} as options. Each argument is displayed, after +escape characters are converted. + +@item +The @code{ulimit} builtin uses a block size of 512 bytes for the @option{-c} +and @option{-f} options. + +@item +The arrival of @code{SIGCHLD} when a trap is set on @code{SIGCHLD} does +not interrupt the @code{wait} builtin and cause it to return immediately. +The trap command is run once for each child that exits. + +@item +The @code{read} builtin may be interrupted by a signal for which a trap +has been set. +If Bash receives a trapped signal while executing @code{read}, the trap +handler executes and @code{read} returns an exit status greater than 128. + +@item +Bash removes an exited background process's status from the list of such +statuses after the @code{wait} builtin is used to obtain it. + +@end enumerate + +There is other @sc{posix} behavior that Bash does not implement by +default even when in @sc{posix} mode. +Specifically: + +@enumerate + +@item +The @code{fc} builtin checks @code{$EDITOR} as a program to edit history +entries if @code{FCEDIT} is unset, rather than defaulting directly to +@code{ed}. @code{fc} uses @code{ed} if @code{EDITOR} is unset. + +@item +As noted above, Bash requires the @code{xpg_echo} option to be enabled for +the @code{echo} builtin to be fully conformant. + +@end enumerate + +Bash can be configured to be @sc{posix}-conformant by default, by specifying +the @option{--enable-strict-posix-default} to @code{configure} when building +(@pxref{Optional Features}). + +@node Shell Compatibility Mode +@section Shell Compatibility Mode +@cindex Compatibility Level +@cindex Compatibility Mode + +Bash-4.0 introduced the concept of a `shell compatibility level', specified +as a set of options to the shopt builtin +(@code{compat31}, +@code{compat32}, +@code{compat40}, +@code{compat41}, +and so on). +There is only one current +compatibility level -- each option is mutually exclusive. +The compatibility level is intended to allow users to select behavior +from previous versions that is incompatible with newer versions +while they migrate scripts to use current features and +behavior. It's intended to be a temporary solution. + +This section does not mention behavior that is standard for a particular +version (e.g., setting @code{compat32} means that quoting the rhs of the regexp +matching operator quotes special regexp characters in the word, which is +default behavior in bash-3.2 and above). + +If a user enables, say, @code{compat32}, it may affect the behavior of other +compatibility levels up to and including the current compatibility level. +The idea is that each compatibility level controls behavior that changed +in that version of Bash, +but that behavior may have been present in earlier versions. +For instance, the change to use locale-based comparisons with the @code{[[} +command came in bash-4.1, and earlier versions used ASCII-based comparisons, +so enabling @code{compat32} will enable ASCII-based comparisons as well. +That granularity may not be sufficient for +all uses, and as a result users should employ compatibility levels carefully. +Read the documentation for a particular feature to find out the +current behavior. + +Bash-4.3 introduced a new shell variable: @env{BASH_COMPAT}. +The value assigned +to this variable (a decimal version number like 4.2, or an integer +corresponding to the @code{compat}@var{NN} option, like 42) determines the +compatibility level. + +Starting with bash-4.4, Bash has begun deprecating older compatibility +levels. +Eventually, the options will be removed in favor of @env{BASH_COMPAT}. + +Bash-5.0 is the final version for which there will be an individual shopt +option for the previous version. Users should use @env{BASH_COMPAT} +on bash-5.0 and later versions. + +The following table describes the behavior changes controlled by each +compatibility level setting. +The @code{compat}@var{NN} tag is used as shorthand for setting the +compatibility level +to @var{NN} using one of the following mechanisms. +For versions prior to bash-5.0, the compatibility level may be set using +the corresponding @code{compat}@var{NN} shopt option. +For bash-4.3 and later versions, the @env{BASH_COMPAT} variable is preferred, +and it is required for bash-5.1 and later versions. + +@table @code +@item compat31 +@itemize @bullet +@item +quoting the rhs of the @code{[[} command's regexp matching operator (=~) +has no special effect +@end itemize + +@item compat32 +@itemize @bullet +@item +interrupting a command list such as "a ; b ; c" causes the execution +of the next command in the list (in bash-4.0 and later versions, +the shell acts as if it received the interrupt, so +interrupting one command in a list aborts the execution of the +entire list) +@end itemize + +@item compat40 +@itemize @bullet +@item +the @samp{<} and @samp{>} operators to the @code{[[} command do not +consider the current locale when comparing strings; they use ASCII +ordering. +Bash versions prior to bash-4.1 use ASCII collation and strcmp(3); +bash-4.1 and later use the current locale's collation sequence and +strcoll(3). +@end itemize + +@item compat41 +@itemize @bullet +@item +in posix mode, @code{time} may be followed by options and still be +recognized as a reserved word (this is @sc{posix} interpretation 267) +@item +in posix mode, the parser requires that an even number of single +quotes occur in the @var{word} portion of a double-quoted $@{@dots{}@} +parameter expansion and treats them specially, so that characters within +the single quotes are considered quoted +(this is @sc{posix} interpretation 221) +@end itemize + +@item compat42 +@itemize @bullet +@item +the replacement string in double-quoted pattern substitution does not +undergo quote removal, as it does in versions after bash-4.2 +@item +in posix mode, single quotes are considered special when expanding +the @var{word} portion of a double-quoted $@{@dots{}@} parameter expansion +and can be used to quote a closing brace or other special character +(this is part of @sc{posix} interpretation 221); +in later versions, single quotes +are not special within double-quoted word expansions +@end itemize + +@item compat43 +@itemize @bullet +@item +the shell does not print a warning message if an attempt is made to +use a quoted compound assignment as an argument to declare +(declare -a foo='(1 2)'). Later versions warn that this usage is +deprecated +@item +word expansion errors are considered non-fatal errors that cause the +current command to fail, even in posix mode +(the default behavior is to make them fatal errors that cause the shell +to exit) +@item +when executing a shell function, the loop state (while/until/etc.) +is not reset, so @code{break} or @code{continue} in that function will break +or continue loops in the calling context. Bash-4.4 and later reset +the loop state to prevent this +@end itemize + +@item compat44 +@itemize @bullet +@item +the shell sets up the values used by @env{BASH_ARGV} and @env{BASH_ARGC} +so they can expand to the shell's positional parameters even if extended +debugging mode is not enabled +@item +a subshell inherits loops from its parent context, so @code{break} +or @code{continue} will cause the subshell to exit. +Bash-5.0 and later reset the loop state to prevent the exit +@item +variable assignments preceding builtins like @code{export} and @code{readonly} +that set attributes continue to affect variables with the same +name in the calling environment even if the shell is not in posix +mode +@end itemize + +@item compat50 (set using BASH_COMPAT) +@itemize @bullet +@item +Bash-5.1 changed the way @code{$RANDOM} is generated to introduce slightly +more randomness. If the shell compatibility level is set to 50 or +lower, it reverts to the method from bash-5.0 and previous versions, +so seeding the random number generator by assigning a value to +@env{RANDOM} will produce the same sequence as in bash-5.0 +@item +If the command hash table is empty, Bash versions prior to bash-5.1 +printed an informational message to that effect, even when producing +output that can be reused as input. Bash-5.1 suppresses that message +when the @option{-l} option is supplied. +@end itemize +@end table + +@node Job Control +@chapter Job Control + +This chapter discusses what job control is, how it works, and how +Bash allows you to access its facilities. + +@menu +* Job Control Basics:: How job control works. +* Job Control Builtins:: Bash builtin commands used to interact + with job control. +* Job Control Variables:: Variables Bash uses to customize job + control. +@end menu + +@node Job Control Basics +@section Job Control Basics +@cindex job control +@cindex foreground +@cindex background +@cindex suspending jobs + +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 operating system kernel's terminal driver and Bash. + +The shell associates a @var{job} with each pipeline. It keeps a +table of currently executing jobs, which may be listed with the +@code{jobs} command. When Bash starts a job +asynchronously, it prints a line that looks +like: +@example +[1] 25647 +@end example +@noindent +indicating that this job is job number 1 and that the process @sc{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 @var{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 @sc{id}. Members of this process group (processes whose +process group @sc{id} is equal to the current terminal process group +@sc{id}) receive keyboard-generated signals such as @code{SIGINT}. +These processes are said to be in the foreground. Background +processes are those whose process group @sc{id} differs from the +terminal's; such processes are immune to keyboard-generated +signals. Only foreground processes are allowed to read from or, if +the user so specifies with @code{stty tostop}, write to the terminal. +Background processes which attempt to +read from (write to when @code{stty tostop} is in effect) the +terminal are sent a @code{SIGTTIN} (@code{SIGTTOU}) +signal by the kernel's 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 +@var{suspend} character (typically @samp{^Z}, Control-Z) while a +process is running causes that process to be stopped and returns +control to Bash. Typing the @var{delayed suspend} character +(typically @samp{^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 then manipulates the state of +this job, using the @code{bg} command to continue it in the +background, the @code{fg} command to continue it in the +foreground, or the @code{kill} command to kill it. A @samp{^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 @samp{%} introduces a job specification (@var{jobspec}). + +Job number @code{n} may be referred to as @samp{%n}. +The symbols @samp{%%} and @samp{%+} 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. +A single @samp{%} (with no accompanying job specification) also refers +to the current job. +The previous job may be referenced using @samp{%-}. +If there is only a single job, @samp{%+} and @samp{%-} can both be used +to refer to that job. +In output pertaining to jobs (e.g., the output of the @code{jobs} +command), the current job is always flagged with a @samp{+}, and the +previous job with a @samp{-}. + +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, @samp{%ce} refers +to a stopped job whose command name begins with @samp{ce}. +Using @samp{%?ce}, on the +other hand, refers to any job containing the string @samp{ce} in +its command line. If the prefix or substring matches more than one job, +Bash reports an error. + +Simply naming a job can be used to bring it into the foreground: +@samp{%1} is a synonym for @samp{fg %1}, bringing job 1 from the +background into the foreground. Similarly, @samp{%1 &} resumes +job 1 in the background, equivalent to @samp{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 @option{-b} option to the @code{set} builtin is enabled, +Bash reports such changes immediately (@pxref{The Set Builtin}). +Any trap on @code{SIGCHLD} is executed for each child process +that exits. + +If an attempt to exit Bash is made while jobs are stopped, (or running, if +the @code{checkjobs} option is enabled -- see @ref{The Shopt Builtin}), the +shell prints a warning message, and if the @code{checkjobs} option is +enabled, lists the jobs and their statuses. +The @code{jobs} command may then be used to inspect their status. +If a second attempt to exit is made without an intervening command, +Bash does not print another warning, and any stopped jobs are terminated. + +When the shell is waiting for a job or process using the @code{wait} +builtin, and job control is enabled, @code{wait} will return when the +job changes state. The @option{-f} option causes @code{wait} to wait +until the job or process terminates before returning. + +@node Job Control Builtins +@section Job Control Builtins + +@table @code + +@item bg +@btindex bg +@example +bg [@var{jobspec} @dots{}] +@end example + +Resume each suspended job @var{jobspec} in the background, as if it +had been started with @samp{&}. +If @var{jobspec} is not supplied, the current job is used. +The return status is zero unless it is run when job control is not +enabled, or, when run with job control enabled, any +@var{jobspec} was not found or specifies a job +that was started without job control. + +@item fg +@btindex fg +@example +fg [@var{jobspec}] +@end example + +Resume the job @var{jobspec} in the foreground and make it the current job. +If @var{jobspec} is not supplied, the current job is used. +The return status is that of the command placed into the foreground, +or non-zero if run when job control is disabled or, when run with +job control enabled, @var{jobspec} does not specify a valid job or +@var{jobspec} specifies a job that was started without job control. + +@item jobs +@btindex jobs +@example +jobs [-lnprs] [@var{jobspec}] +jobs -x @var{command} [@var{arguments}] +@end example + +The first form lists the active jobs. The options have the +following meanings: + +@table @code +@item -l +List process @sc{id}s in addition to the normal information. + +@item -n +Display information only about jobs that have changed status since +the user was last notified of their status. + +@item -p +List only the process @sc{id} of the job's process group leader. + +@item -r +Display only running jobs. + +@item -s +Display only stopped jobs. +@end table + +If @var{jobspec} is given, +output is restricted to information about that job. +If @var{jobspec} is not supplied, the status of all jobs is +listed. + +If the @option{-x} option is supplied, @code{jobs} replaces any +@var{jobspec} found in @var{command} or @var{arguments} with the +corresponding process group @sc{id}, and executes @var{command}, +passing it @var{argument}s, returning its exit status. + +@item kill +@btindex kill +@example +kill [-s @var{sigspec}] [-n @var{signum}] [-@var{sigspec}] @var{jobspec} or @var{pid} +kill -l|-L [@var{exit_status}] +@end example + +Send a signal specified by @var{sigspec} or @var{signum} to the process +named by job specification @var{jobspec} or process @sc{id} @var{pid}. +@var{sigspec} is either a case-insensitive signal name such as +@code{SIGINT} (with or without the @code{SIG} prefix) +or a signal number; @var{signum} is a signal number. +If @var{sigspec} and @var{signum} are not present, @code{SIGTERM} is used. +The @option{-l} option lists the signal names. +If any arguments are supplied when @option{-l} is given, the names of the +signals corresponding to the arguments are listed, and the return status +is zero. +@var{exit_status} is a number specifying a signal number or the exit +status of a process terminated by a signal. +The @option{-L} option is equivalent to @option{-l}. +The return status is zero if at least one signal was successfully sent, +or non-zero if an error occurs or an invalid option is encountered. + +@item wait +@btindex wait +@example +wait [-fn] [-p @var{varname}] [@var{jobspec} or @var{pid} @dots{}] +@end example + +Wait until the child process specified by each process @sc{id} @var{pid} +or job specification @var{jobspec} exits and return the exit status of the +last command waited for. +If a job spec is given, all processes in the job are waited for. +If no arguments are given, +@code{wait} waits for all running background jobs and +the last-executed process substitution, if its process id is the same as +@var{$!}, +and the return status is zero. +If the @option{-n} option is supplied, @code{wait} waits for a single job +from the list of @var{pids} or @var{jobspecs} or, if no arguments are +supplied, any job, +to complete and returns its exit status. +If none of the supplied arguments is a child of the shell, or if no arguments +are supplied and the shell has no unwaited-for children, the exit status +is 127. +If the @option{-p} option is supplied, the process or job identifier of the job +for which the exit status is returned is assigned to the variable +@var{varname} named by the option argument. +The variable will be unset initially, before any assignment. +This is useful only when the @option{-n} option is supplied. +Supplying the @option{-f} option, when job control is enabled, +forces @code{wait} to wait for each @var{pid} or @var{jobspec} to +terminate before returning its status, intead of returning when it changes +status. +If neither @var{jobspec} nor @var{pid} specifies an active child process +of the shell, the return status is 127. + +@item disown +@btindex disown +@example +disown [-ar] [-h] [@var{jobspec} @dots{} | @var{pid} @dots{} ] +@end example + +Without options, remove each @var{jobspec} from the table of +active jobs. +If the @option{-h} option is given, the job is not removed from the table, +but is marked so that @code{SIGHUP} is not sent to the job if the shell +receives a @code{SIGHUP}. +If @var{jobspec} is not present, and neither the @option{-a} nor the +@option{-r} option is supplied, the current job is used. +If no @var{jobspec} is supplied, the @option{-a} option means to remove or +mark all jobs; the @option{-r} option without a @var{jobspec} +argument restricts operation to running jobs. + +@item suspend +@btindex suspend +@example +suspend [-f] +@end example + +Suspend the execution of this shell until it receives a +@code{SIGCONT} signal. +A login shell cannot be suspended; the @option{-f} +option can be used to override this and force the suspension. +@end table + +When job control is not active, the @code{kill} and @code{wait} +builtins do not accept @var{jobspec} arguments. They must be +supplied process @sc{id}s. + +@node Job Control Variables +@section Job Control Variables + +@vtable @code + +@item auto_resume +This variable controls how the shell interacts with the user and +job control. If this variable exists then single word simple +commands without redirections are treated as candidates for resumption +of an existing job. There is no ambiguity allowed; if there is +more than one job beginning with the string typed, then +the most recently accessed job will be selected. +The name of a stopped job, in this context, is the command line +used to start it. If this variable is set to the value @samp{exact}, +the string supplied must match the name of a stopped job exactly; +if set to @samp{substring}, +the string supplied needs to match a substring of the name of a +stopped job. The @samp{substring} value provides functionality +analogous to the @samp{%?} job @sc{id} (@pxref{Job Control Basics}). +If set to any other value, the supplied string must +be a prefix of a stopped job's name; this provides functionality +analogous to the @samp{%} job @sc{id}. + +@end vtable + +@set readline-appendix +@set history-appendix +@cindex Readline, how to use +@include rluser.texi +@cindex History, how to use +@include hsuser.texi +@clear readline-appendix +@clear history-appendix + +@node Installing Bash +@chapter Installing Bash + +This chapter provides basic instructions for installing Bash on +the various supported platforms. The distribution supports the +@sc{gnu} operating systems, nearly every version of Unix, and several +non-Unix systems such as BeOS and Interix. +Other independent ports exist for +@sc{ms-dos}, @sc{os/2}, and Windows platforms. + +@menu +* Basic Installation:: Installation instructions. +* Compilers and Options:: How to set special options for various + systems. +* Compiling For Multiple Architectures:: How to compile Bash for more + than one kind of system from + the same source tree. +* Installation Names:: How to set the various paths used by the installation. +* Specifying the System Type:: How to configure Bash for a particular system. +* Sharing Defaults:: How to share default configuration values among GNU + programs. +* Operation Controls:: Options recognized by the configuration program. +* Optional Features:: How to enable and disable optional features when + building Bash. +@end menu + +@node Basic Installation +@section Basic Installation +@cindex installation +@cindex configuration +@cindex Bash installation +@cindex Bash configuration + +These are installation instructions for Bash. + +The simplest way to compile Bash is: + +@enumerate +@item +@code{cd} to the directory containing the source code and type +@samp{./configure} to configure Bash for your system. If you're +using @code{csh} on an old version of System V, you might need to +type @samp{sh ./configure} instead to prevent @code{csh} from trying +to execute @code{configure} itself. + +Running @code{configure} takes some time. +While running, it prints messages telling which features it is +checking for. + +@item +Type @samp{make} to compile Bash and build the @code{bashbug} bug +reporting script. + +@item +Optionally, type @samp{make tests} to run the Bash test suite. + +@item +Type @samp{make install} to install @code{bash} and @code{bashbug}. +This will also install the manual pages and Info file. + +@end enumerate + +The @code{configure} shell script attempts to guess correct +values for various system-dependent variables used during +compilation. It uses those values to create a @file{Makefile} in +each directory of the package (the top directory, the +@file{builtins}, @file{doc}, and @file{support} directories, +each directory under @file{lib}, and several others). It also creates a +@file{config.h} file containing system-dependent definitions. +Finally, it creates a shell script named @code{config.status} that you +can run in the future to recreate the current configuration, a +file @file{config.cache} that saves the results of its tests to +speed up reconfiguring, and a file @file{config.log} containing +compiler output (useful mainly for debugging @code{configure}). +If at some point +@file{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 +@code{configure} script understands, type + +@example +bash-4.2$ ./configure --help +@end example + +@noindent +at the Bash prompt in your Bash source directory. + +If you want to build Bash in a directory separate from the source +directory -- to build for multiple architectures, for example -- +just use the full path to the configure script. The following commands +will build bash in a directory under @file{/usr/local/build} from +the source code in @file{/usr/local/src/bash-4.4}: + +@example +mkdir /usr/local/build/bash-4.4 +cd /usr/local/build/bash-4.4 +bash /usr/local/src/bash-4.4/configure +make +@end example + +See @ref{Compiling For Multiple Architectures} for more information +about building in a directory separate from the source. + +If you need to do unusual things to compile Bash, please +try to figure out how @code{configure} could check whether or not +to do them, and mail diffs or instructions to +@email{bash-maintainers@@gnu.org} so they can be +considered for the next release. + +The file @file{configure.ac} is used to create @code{configure} +by a program called Autoconf. You only need +@file{configure.ac} if you want to change it or regenerate +@code{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 @samp{make clean}. To also remove the +files that @code{configure} created (so you can compile Bash for +a different kind of computer), type @samp{make distclean}. + +@node Compilers and Options +@section Compilers and Options + +Some systems require unusual options for compilation or linking +that the @code{configure} script does not know about. You can +give @code{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: + +@example +CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure +@end example + +On systems that have the @code{env} program, you can do it like this: + +@example +env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure +@end example + +The configuration process uses GCC to build Bash if it +is available. + +@node Compiling For Multiple Architectures +@section 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 @code{make} that +supports the @code{VPATH} variable, such as GNU @code{make}. +@code{cd} to the +directory where you want the object files and executables to go and run +the @code{configure} script from the source directory +(@pxref{Basic Installation}). +You may need to +supply the @option{--srcdir=PATH} argument to tell @code{configure} where the +source files are. @code{configure} automatically checks for the +source code in the directory that @code{configure} is in and in `..'. + +If you have to use a @code{make} that does not supports the @code{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 @samp{make distclean} before +reconfiguring for another architecture. + +Alternatively, if your system supports symbolic links, you can use the +@file{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 @file{/usr/gnu/src/bash-2.0}: + +@example +bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 . +@end example + +@noindent +The @code{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. + +@node Installation Names +@section Installation Names + +By default, @samp{make install} will install into +@file{/usr/local/bin}, @file{/usr/local/man}, etc. You can +specify an installation prefix other than @file{/usr/local} by +giving @code{configure} the option @option{--prefix=@var{PATH}}, +or by specifying a value for the @code{DESTDIR} @samp{make} +variable when running @samp{make install}. + +You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. +If you give @code{configure} the option +@option{--exec-prefix=@var{PATH}}, @samp{make install} will use +@var{PATH} as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + +@node Specifying the System Type +@section Specifying the System Type + +There may be some features @code{configure} can not figure out +automatically, but need to determine by the type of host Bash +will run on. Usually @code{configure} can figure that +out, but if it prints a message saying it can not guess the host +type, give it the @option{--host=TYPE} option. @samp{TYPE} can +either be a short name for the system type, such as @samp{sun4}, +or a canonical name with three fields: @samp{CPU-COMPANY-SYSTEM} +(e.g., @samp{i386-unknown-freebsd4.2}). + +See the file @file{support/config.sub} for the possible +values of each field. + +@node Sharing Defaults +@section Sharing Defaults + +If you want to set default values for @code{configure} scripts to +share, you can create a site shell script called +@code{config.site} that gives default values for variables like +@code{CC}, @code{cache_file}, and @code{prefix}. @code{configure} +looks for @file{PREFIX/share/config.site} if it exists, then +@file{PREFIX/etc/config.site} if it exists. Or, you can set the +@code{CONFIG_SITE} environment variable to the location of the site +script. A warning: the Bash @code{configure} looks for a site script, +but not all @code{configure} scripts do. + +@node Operation Controls +@section Operation Controls + +@code{configure} recognizes the following options to control how it +operates. + +@table @code + +@item --cache-file=@var{file} +Use and save the results of the tests in +@var{file} instead of @file{./config.cache}. Set @var{file} to +@file{/dev/null} to disable caching, for debugging +@code{configure}. + +@item --help +Print a summary of the options to @code{configure}, and exit. + +@item --quiet +@itemx --silent +@itemx -q +Do not print messages saying which checks are being made. + +@item --srcdir=@var{dir} +Look for the Bash source code in directory @var{dir}. Usually +@code{configure} can determine that directory automatically. + +@item --version +Print the version of Autoconf used to generate the @code{configure} +script, and exit. +@end table + +@code{configure} also accepts some other, not widely used, boilerplate +options. @samp{configure --help} prints the complete list. + +@node Optional Features +@section Optional Features + +The Bash @code{configure} has a number of @option{--enable-@var{feature}} +options, where @var{feature} indicates an optional part of Bash. +There are also several @option{--with-@var{package}} options, +where @var{package} is something like @samp{bash-malloc} or @samp{purify}. +To turn off the default use of a package, use +@option{--without-@var{package}}. To configure Bash without a feature +that is enabled by default, use @option{--disable-@var{feature}}. + +Here is a complete list of the @option{--enable-} and +@option{--with-} options that the Bash @code{configure} recognizes. + +@table @code +@item --with-afs +Define if you are using the Andrew File System from Transarc. + +@item --with-bash-malloc +Use the Bash version of +@code{malloc} in the directory @file{lib/malloc}. This is not the same +@code{malloc} that appears in @sc{gnu} libc, but an older version +originally derived from the 4.2 @sc{bsd} @code{malloc}. This @code{malloc} +is very fast, but wastes some space on each allocation. +This option is enabled by default. +The @file{NOTES} file contains a list of systems for +which this should be turned off, and @code{configure} disables this +option automatically for a number of systems. + +@item --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. + +@item --with-gnu-malloc +A synonym for @code{--with-bash-malloc}. + +@item --with-installed-readline[=@var{PREFIX}] +Define this to make Bash link with a locally-installed version of Readline +rather than the version in @file{lib/readline}. This works only with +Readline 5.0 and later versions. If @var{PREFIX} is @code{yes} or not +supplied, @code{configure} uses the values of the make variables +@code{includedir} and @code{libdir}, which are subdirectories of @code{prefix} +by default, to find the installed version of Readline if it is not in +the standard system include and library directories. +If @var{PREFIX} is @code{no}, Bash links with the version in +@file{lib/readline}. +If @var{PREFIX} is set to any other value, @code{configure} treats it as +a directory pathname and looks for +the installed version of Readline in subdirectories of that directory +(include files in @var{PREFIX}/@code{include} and the library in +@var{PREFIX}/@code{lib}). + +@item --with-purify +Define this to use the Purify memory allocation checker from Rational +Software. + +@item --enable-minimal-config +This produces a shell with minimal features, close to the historical +Bourne shell. +@end table + +There are several @option{--enable-} options that alter how Bash is +compiled and linked, rather than changing run-time features. + +@table @code +@item --enable-largefile +Enable support for @uref{http://www.unix.org/version2/whatsnew/lfs20mar.html, +large files} 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. + +@item --enable-profiling +This builds a Bash binary that produces profiling information to be +processed by @code{gprof} each time it is executed. + +@item --enable-static-link +This causes Bash to be linked statically, if @code{gcc} is being used. +This could be used to build a version to use as root's shell. +@end table + +The @samp{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 @samp{enable-@var{feature}}. + +All of the following options except for @samp{disabled-builtins}, +@samp{direxpand-default}, and +@samp{xpg-echo-default} are +enabled by default, unless the operating system does not provide the +necessary support. + +@table @code +@item --enable-alias +Allow alias expansion and include the @code{alias} and @code{unalias} +builtins (@pxref{Aliases}). + +@item --enable-arith-for-command +Include support for the alternate form of the @code{for} command +that behaves like the C language @code{for} statement +(@pxref{Looping Constructs}). + +@item --enable-array-variables +Include support for one-dimensional array shell variables +(@pxref{Arrays}). + +@item --enable-bang-history +Include support for @code{csh}-like history substitution +(@pxref{History Interaction}). + +@item --enable-brace-expansion +Include @code{csh}-like brace expansion +( @code{b@{a,b@}c} @expansion{} @code{bac bbc} ). +See @ref{Brace Expansion}, for a complete description. + +@item --enable-casemod-attributes +Include support for case-modifying attributes in the @code{declare} builtin +and assignment statements. Variables with the @var{uppercase} attribute, +for example, will have their values converted to uppercase upon assignment. + +@item --enable-casemod-expansion +Include support for case-modifying word expansions. + +@item --enable-command-timing +Include support for recognizing @code{time} as a reserved word and for +displaying timing statistics for the pipeline following @code{time} +(@pxref{Pipelines}). +This allows pipelines as well as shell builtins and functions to be timed. + +@item --enable-cond-command +Include support for the @code{[[} conditional command. +(@pxref{Conditional Constructs}). + +@item --enable-cond-regexp +Include support for matching @sc{posix} regular expressions using the +@samp{=~} binary operator in the @code{[[} conditional command. +(@pxref{Conditional Constructs}). + +@item --enable-coprocesses +Include support for coprocesses and the @code{coproc} reserved word +(@pxref{Pipelines}). + +@item --enable-debugger +Include support for the bash debugger (distributed separately). + +@item --enable-dev-fd-stat-broken +If calling @code{stat} on /dev/fd/@var{N} returns different results than +calling @code{fstat} on file descriptor @var{N}, supply this option to +enable a workaround. +This has implications for conditional commands that test file attributes. + +@item --enable-direxpand-default +Cause the @code{direxpand} shell option (@pxref{The Shopt Builtin}) +to be enabled by default when the shell starts. +It is normally disabled by default. + +@item --enable-directory-stack +Include support for a @code{csh}-like directory stack and the +@code{pushd}, @code{popd}, and @code{dirs} builtins +(@pxref{The Directory Stack}). + +@item --enable-disabled-builtins +Allow builtin commands to be invoked via @samp{builtin xxx} +even after @code{xxx} has been disabled using @samp{enable -n xxx}. +See @ref{Bash Builtins}, for details of the @code{builtin} and +@code{enable} builtin commands. + +@item --enable-dparen-arithmetic +Include support for the @code{((@dots{}))} command +(@pxref{Conditional Constructs}). + +@item --enable-extended-glob +Include support for the extended pattern matching features described +above under @ref{Pattern Matching}. + +@item --enable-extended-glob-default +Set the default value of the @var{extglob} shell option described +above under @ref{The Shopt Builtin} to be enabled. + +@item --enable-function-import +Include support for importing function definitions exported by another +instance of the shell from the environment. This option is enabled by +default. + +@item --enable-glob-asciirange-default +Set the default value of the @var{globasciiranges} shell option described +above under @ref{The Shopt Builtin} to be enabled. +This controls the behavior of character ranges when used in pattern matching +bracket expressions. + +@item --enable-help-builtin +Include the @code{help} builtin, which displays help on shell builtins and +variables (@pxref{Bash Builtins}). + +@item --enable-history +Include command history and the @code{fc} and @code{history} +builtin commands (@pxref{Bash History Facilities}). + +@item --enable-job-control +This enables the job control features (@pxref{Job Control}), +if the operating system supports them. + +@item --enable-multibyte +This enables support for multibyte characters if the operating +system provides the necessary support. + +@item --enable-net-redirections +This enables the special handling of filenames of the form +@code{/dev/tcp/@var{host}/@var{port}} and +@code{/dev/udp/@var{host}/@var{port}} +when used in redirections (@pxref{Redirections}). + +@item --enable-process-substitution +This enables process substitution (@pxref{Process Substitution}) if +the operating system provides the necessary support. + +@item --enable-progcomp +Enable the programmable completion facilities +(@pxref{Programmable Completion}). +If Readline is not enabled, this option has no effect. + +@item --enable-prompt-string-decoding +Turn on the interpretation of a number of backslash-escaped characters +in the @env{$PS0}, @env{$PS1}, @env{$PS2}, and @env{$PS4} prompt +strings. See @ref{Controlling the Prompt}, for a complete list of prompt +string escape sequences. + +@item --enable-readline +Include support for command-line editing and history with the Bash +version of the Readline library (@pxref{Command Line Editing}). + +@item --enable-restricted +Include support for a @dfn{restricted shell}. If this is enabled, Bash, +when called as @code{rbash}, enters a restricted mode. See +@ref{The Restricted Shell}, for a description of restricted mode. + +@item --enable-select +Include the @code{select} compound command, which allows the generation of +simple menus (@pxref{Conditional Constructs}). + +@item --enable-separate-helpfiles +Use external files for the documentation displayed by the @code{help} builtin +instead of storing the text internally. + +@item --enable-single-help-strings +Store the text displayed by the @code{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. + +@item --enable-strict-posix-default +Make Bash @sc{posix}-conformant by default (@pxref{Bash POSIX Mode}). + +@item --enable-usg-echo-default +A synonym for @code{--enable-xpg-echo-default}. + +@item --enable-xpg-echo-default +Make the @code{echo} builtin expand backslash-escaped characters by default, +without requiring the @option{-e} option. +This sets the default value of the @code{xpg_echo} shell option to @code{on}, +which makes the Bash @code{echo} behave more like the version specified in +the Single Unix Specification, version 3. +@xref{Bash Builtins}, for a description of the escape sequences that +@code{echo} recognizes. +@end table + +The file @file{config-top.h} contains C Preprocessor +@samp{#define} statements for options which are not settable from +@code{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. + +@node Reporting Bugs +@appendix Reporting Bugs + +Please report all bugs you find in Bash. +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 of Bash is always available for FTP from +@uref{ftp://ftp.gnu.org/pub/gnu/bash/}. + +Once you have determined that a bug actually exists, use the +@code{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 @email{bug-bash@@gnu.org} or posted to the Usenet +newsgroup @code{gnu.bash.bug}. + +All bug reports should include: +@itemize @bullet +@item +The version number of Bash. +@item +The hardware and operating system. +@item +The compiler used to compile Bash. +@item +A description of the bug behaviour. +@item +A short script or `recipe' which exercises the bug and may be used +to reproduce it. +@end itemize + +@noindent +@code{bashbug} inserts the first three items automatically into +the template it provides for filing a bug report. + +Please send all reports concerning this manual to +@email{bug-bash@@gnu.org}. + +@node Major Differences From The Bourne Shell +@appendix Major Differences From The Bourne Shell + +Bash implements essentially the same grammar, parameter and +variable expansion, redirection, and quoting as the Bourne Shell. +Bash uses the @sc{posix} standard as the specification of +how these features are to be implemented. There are some +differences between the traditional Bourne shell and Bash; this +section quickly details the differences of significance. A +number of these differences are explained in greater depth in +previous sections. +This section uses the version of @code{sh} included in SVR4.2 (the +last version of the historical Bourne shell) as the baseline reference. + +@itemize @bullet + +@item +Bash is @sc{posix}-conformant, even where the @sc{posix} specification +differs from traditional @code{sh} behavior (@pxref{Bash POSIX Mode}). + +@item +Bash has multi-character invocation options (@pxref{Invoking Bash}). + +@item +Bash has command-line editing (@pxref{Command Line Editing}) and +the @code{bind} builtin. + +@item +Bash provides a programmable word completion mechanism +(@pxref{Programmable Completion}), and builtin commands +@code{complete}, @code{compgen}, and @code{compopt}, to +manipulate it. + +@item +Bash has command history (@pxref{Bash History Facilities}) and the +@code{history} and @code{fc} builtins to manipulate it. +The Bash history list maintains timestamp information and uses the +value of the @code{HISTTIMEFORMAT} variable to display it. + +@item +Bash implements @code{csh}-like history expansion +(@pxref{History Interaction}). + +@item +Bash has one-dimensional array variables (@pxref{Arrays}), and the +appropriate variable expansions and assignment syntax to use them. +Several of the Bash builtins take options to act on arrays. +Bash provides a number of built-in array variables. + +@item +The @code{$'@dots{}'} quoting syntax, which expands ANSI-C +backslash-escaped characters in the text between the single quotes, +is supported (@pxref{ANSI-C Quoting}). + +@item +Bash supports the @code{$"@dots{}"} quoting syntax to do +locale-specific translation of the characters between the double +quotes. The @option{-D}, @option{--dump-strings}, and @option{--dump-po-strings} +invocation options list the translatable strings found in a script +(@pxref{Locale Translation}). + +@item +Bash implements the @code{!} keyword to negate the return value of +a pipeline (@pxref{Pipelines}). +Very useful when an @code{if} statement needs to act only if a test fails. +The Bash @samp{-o pipefail} option to @code{set} will cause a pipeline to +return a failure status if any command fails. + +@item +Bash has the @code{time} reserved word and command timing (@pxref{Pipelines}). +The display of the timing statistics may be controlled with the +@env{TIMEFORMAT} variable. + +@item +Bash implements the @code{for (( @var{expr1} ; @var{expr2} ; @var{expr3} ))} +arithmetic for command, similar to the C language (@pxref{Looping Constructs}). + +@item +Bash includes the @code{select} compound command, which allows the +generation of simple menus (@pxref{Conditional Constructs}). + +@item +Bash includes the @code{[[} compound command, which makes conditional +testing part of the shell grammar (@pxref{Conditional Constructs}), including +optional regular expression matching. + +@item +Bash provides optional case-insensitive matching for the @code{case} and +@code{[[} constructs. + +@item +Bash includes brace expansion (@pxref{Brace Expansion}) and tilde +expansion (@pxref{Tilde Expansion}). + +@item +Bash implements command aliases and the @code{alias} and @code{unalias} +builtins (@pxref{Aliases}). + +@item +Bash provides shell arithmetic, the @code{((} compound command +(@pxref{Conditional Constructs}), +and arithmetic expansion (@pxref{Shell Arithmetic}). + +@item +Variables present in the shell's initial environment are automatically +exported to child processes. The Bourne shell does not normally do +this unless the variables are explicitly marked using the @code{export} +command. + +@item +Bash supports the @samp{+=} assignment operator, which appends to the value +of the variable named on the left hand side. + +@item +Bash includes the @sc{posix} pattern removal @samp{%}, @samp{#}, @samp{%%} +and @samp{##} expansions to remove leading or trailing substrings from +variable values (@pxref{Shell Parameter Expansion}). + +@item +The expansion @code{$@{#xx@}}, which returns the length of @code{$@{xx@}}, +is supported (@pxref{Shell Parameter Expansion}). + +@item +The expansion @code{$@{var:}@var{offset}@code{[:}@var{length}@code{]@}}, +which expands to the substring of @code{var}'s value of length +@var{length}, beginning at @var{offset}, is present +(@pxref{Shell Parameter Expansion}). + +@item +The expansion +@code{$@{var/[/]}@var{pattern}@code{[/}@var{replacement}@code{]@}}, +which matches @var{pattern} and replaces it with @var{replacement} in +the value of @code{var}, is available (@pxref{Shell Parameter Expansion}). + +@item +The expansion @code{$@{!@var{prefix}*@}} expansion, which expands to +the names of all shell variables whose names begin with @var{prefix}, +is available (@pxref{Shell Parameter Expansion}). + +@item +Bash has @var{indirect} variable expansion using @code{$@{!word@}} +(@pxref{Shell Parameter Expansion}). + +@item +Bash can expand positional parameters beyond @code{$9} using +@code{$@{@var{num}@}}. + +@item +The @sc{posix} @code{$()} form of command substitution +is implemented (@pxref{Command Substitution}), +and preferred to the Bourne shell's @code{``} (which +is also implemented for backwards compatibility). + +@item +Bash has process substitution (@pxref{Process Substitution}). + +@item +Bash automatically assigns variables that provide information about the +current user (@env{UID}, @env{EUID}, and @env{GROUPS}), the current host +(@env{HOSTTYPE}, @env{OSTYPE}, @env{MACHTYPE}, and @env{HOSTNAME}), +and the instance of Bash that is running (@env{BASH}, +@env{BASH_VERSION}, and @env{BASH_VERSINFO}). @xref{Bash Variables}, +for details. + +@item +The @env{IFS} variable is used to split only the results of expansion, +not all words (@pxref{Word Splitting}). +This closes a longstanding shell security hole. + +@item +The filename expansion bracket expression code uses @samp{!} and @samp{^} +to negate the set of characters between the brackets. +The Bourne shell uses only @samp{!}. + +@item +Bash implements the full set of @sc{posix} filename expansion operators, +including @var{character classes}, @var{equivalence classes}, and +@var{collating symbols} (@pxref{Filename Expansion}). + +@item +Bash implements extended pattern matching features when the @code{extglob} +shell option is enabled (@pxref{Pattern Matching}). + +@item +It is possible to have a variable and a function with the same name; +@code{sh} does not separate the two name spaces. + +@item +Bash functions are permitted to have local variables using the +@code{local} builtin, and thus useful recursive functions may be written +(@pxref{Bash Builtins}). + +@item +Variable assignments preceding commands affect only that command, even +builtins and functions (@pxref{Environment}). +In @code{sh}, all variable assignments +preceding commands are global unless the command is executed from the +file system. + +@item +Bash performs filename expansion on filenames specified as operands +to input and output redirection operators (@pxref{Redirections}). + +@item +Bash contains the @samp{<>} redirection operator, allowing a file to be +opened for both reading and writing, and the @samp{&>} redirection +operator, for directing standard output and standard error to the same +file (@pxref{Redirections}). + +@item +Bash includes the @samp{<<<} redirection operator, allowing a string to +be used as the standard input to a command. + +@item +Bash implements the @samp{[n]<&@var{word}} and @samp{[n]>&@var{word}} +redirection operators, which move one file descriptor to another. + +@item +Bash treats a number of filenames specially when they are +used in redirection operators (@pxref{Redirections}). + +@item +Bash can open network connections to arbitrary machines and services +with the redirection operators (@pxref{Redirections}). + +@item +The @code{noclobber} option is available to avoid overwriting existing +files with output redirection (@pxref{The Set Builtin}). +The @samp{>|} redirection operator may be used to override @code{noclobber}. + +@item +The Bash @code{cd} and @code{pwd} builtins (@pxref{Bourne Shell Builtins}) +each take @option{-L} and @option{-P} options to switch between logical and +physical modes. + +@item +Bash allows a function to override a builtin with the same name, and provides +access to that builtin's functionality within the function via the +@code{builtin} and @code{command} builtins (@pxref{Bash Builtins}). + +@item +The @code{command} builtin allows selective disabling of functions +when command lookup is performed (@pxref{Bash Builtins}). + +@item +Individual builtins may be enabled or disabled using the @code{enable} +builtin (@pxref{Bash Builtins}). + +@item +The Bash @code{exec} builtin takes additional options that allow users +to control the contents of the environment passed to the executed +command, and what the zeroth argument to the command is to be +(@pxref{Bourne Shell Builtins}). + +@item +Shell functions may be exported to children via the environment +using @code{export -f} (@pxref{Shell Functions}). + +@item +The Bash @code{export}, @code{readonly}, and @code{declare} builtins can +take a @option{-f} option to act on shell functions, a @option{-p} option to +display variables with various attributes set in a format that can be +used as shell input, a @option{-n} option to remove various variable +attributes, and @samp{name=value} arguments to set variable attributes +and values simultaneously. + +@item +The Bash @code{hash} builtin allows a name to be associated with +an arbitrary filename, even when that filename cannot be found by +searching the @env{$PATH}, using @samp{hash -p} +(@pxref{Bourne Shell Builtins}). + +@item +Bash includes a @code{help} builtin for quick reference to shell +facilities (@pxref{Bash Builtins}). + +@item +The @code{printf} builtin is available to display formatted output +(@pxref{Bash Builtins}). + +@item +The Bash @code{read} builtin (@pxref{Bash Builtins}) +will read a line ending in @samp{\} with +the @option{-r} option, and will use the @env{REPLY} variable as a +default if no non-option arguments are supplied. +The Bash @code{read} builtin +also accepts a prompt string with the @option{-p} option and will use +Readline to obtain the line when given the @option{-e} option. +The @code{read} builtin also has additional options to control input: +the @option{-s} option will turn off echoing of input characters as +they are read, the @option{-t} option will allow @code{read} to time out +if input does not arrive within a specified number of seconds, the +@option{-n} option will allow reading only a specified number of +characters rather than a full line, and the @option{-d} option will read +until a particular character rather than newline. + +@item +The @code{return} builtin may be used to abort execution of scripts +executed with the @code{.} or @code{source} builtins +(@pxref{Bourne Shell Builtins}). + +@item +Bash includes the @code{shopt} builtin, for finer control of shell +optional capabilities (@pxref{The Shopt Builtin}), and allows these options +to be set and unset at shell invocation (@pxref{Invoking Bash}). + +@item +Bash has much more optional behavior controllable with the @code{set} +builtin (@pxref{The Set Builtin}). + +@item +The @samp{-x} (@option{xtrace}) option displays commands other than +simple commands when performing an execution trace +(@pxref{The Set Builtin}). + +@item +The @code{test} builtin (@pxref{Bourne Shell Builtins}) +is slightly different, as it implements the @sc{posix} algorithm, +which specifies the behavior based on the number of arguments. + +@item +Bash includes the @code{caller} builtin, which displays the context of +any active subroutine call (a shell function or a script executed with +the @code{.} or @code{source} builtins). This supports the bash +debugger. + +@item +The @code{trap} builtin (@pxref{Bourne Shell Builtins}) allows a +@code{DEBUG} pseudo-signal specification, similar to @code{EXIT}. +Commands specified with a @code{DEBUG} trap are executed before every +simple command, @code{for} command, @code{case} command, +@code{select} command, every arithmetic @code{for} command, and before +the first command executes in a shell function. +The @code{DEBUG} trap is not inherited by shell functions unless the +function has been given the @code{trace} attribute or the +@code{functrace} option has been enabled using the @code{shopt} builtin. +The @code{extdebug} shell option has additional effects on the +@code{DEBUG} trap. + +The @code{trap} builtin (@pxref{Bourne Shell Builtins}) allows an +@code{ERR} pseudo-signal specification, similar to @code{EXIT} and @code{DEBUG}. +Commands specified with an @code{ERR} trap are executed after a simple +command fails, with a few exceptions. +The @code{ERR} trap is not inherited by shell functions unless the +@code{-o errtrace} option to the @code{set} builtin is enabled. + +The @code{trap} builtin (@pxref{Bourne Shell Builtins}) allows a +@code{RETURN} pseudo-signal specification, similar to +@code{EXIT} and @code{DEBUG}. +Commands specified with an @code{RETURN} trap are executed before +execution resumes after a shell function or a shell script executed with +@code{.} or @code{source} returns. +The @code{RETURN} trap is not inherited by shell functions unless the +function has been given the @code{trace} attribute or the +@code{functrace} option has been enabled using the @code{shopt} builtin. + +@item +The Bash @code{type} builtin is more extensive and gives more information +about the names it finds (@pxref{Bash Builtins}). + +@item +The Bash @code{umask} builtin permits a @option{-p} option to cause +the output to be displayed in the form of a @code{umask} command +that may be reused as input (@pxref{Bourne Shell Builtins}). + +@item +Bash implements a @code{csh}-like directory stack, and provides the +@code{pushd}, @code{popd}, and @code{dirs} builtins to manipulate it +(@pxref{The Directory Stack}). +Bash also makes the directory stack visible as the value of the +@env{DIRSTACK} shell variable. + +@item +Bash interprets special backslash-escaped characters in the prompt +strings when interactive (@pxref{Controlling the Prompt}). + +@item +The Bash restricted mode is more useful (@pxref{The Restricted Shell}); +the SVR4.2 shell restricted mode is too limited. + +@item +The @code{disown} builtin can remove a job from the internal shell +job table (@pxref{Job Control Builtins}) or suppress the sending +of @code{SIGHUP} to a job when the shell exits as the result of a +@code{SIGHUP}. + +@item +Bash includes a number of features to support a separate debugger for +shell scripts. + +@item +The SVR4.2 shell has two privilege-related builtins +(@code{mldmode} and @code{priv}) not present in Bash. + +@item +Bash does not have the @code{stop} or @code{newgrp} builtins. + +@item +Bash does not use the @env{SHACCT} variable or perform shell accounting. + +@item +The SVR4.2 @code{sh} uses a @env{TIMEOUT} variable like Bash uses +@env{TMOUT}. + +@end itemize + +@noindent +More features unique to Bash may be found in @ref{Bash Features}. + + +@appendixsec Implementation Differences From The SVR4.2 Shell + +Since Bash is a completely new implementation, it does not suffer from +many of the limitations of the SVR4.2 shell. For instance: + +@itemize @bullet + +@item +Bash does not fork a subshell when redirecting into or out of +a shell control structure such as an @code{if} or @code{while} +statement. + +@item +Bash does not allow unbalanced quotes. The SVR4.2 shell will silently +insert a needed closing quote at @code{EOF} under certain circumstances. +This can be the cause of some hard-to-find errors. + +@item +The SVR4.2 shell uses a baroque memory management scheme based on +trapping @code{SIGSEGV}. If the shell is started from a process with +@code{SIGSEGV} blocked (e.g., by using the @code{system()} C library +function call), it misbehaves badly. + +@item +In a questionable attempt at security, the SVR4.2 shell, +when invoked without the @option{-p} option, will alter its real +and effective @sc{uid} and @sc{gid} if they are less than some +magic threshold value, commonly 100. +This can lead to unexpected results. + +@item +The SVR4.2 shell does not allow users to trap @code{SIGSEGV}, +@code{SIGALRM}, or @code{SIGCHLD}. + +@item +The SVR4.2 shell does not allow the @env{IFS}, @env{MAILCHECK}, +@env{PATH}, @env{PS1}, or @env{PS2} variables to be unset. + +@item +The SVR4.2 shell treats @samp{^} as the undocumented equivalent of +@samp{|}. + +@item +Bash allows multiple option arguments when it is invoked (@code{-x -v}); +the SVR4.2 shell allows only one option argument (@code{-xv}). In +fact, some versions of the shell dump core if the second argument begins +with a @samp{-}. + +@item +The SVR4.2 shell exits a script if any builtin fails; Bash exits +a script only if one of the @sc{posix} special builtins fails, and +only for certain failures, as enumerated in the @sc{posix} standard. + +@item +The SVR4.2 shell behaves differently when invoked as @code{jsh} +(it turns on job control). +@end itemize + +@node GNU Free Documentation License +@appendix GNU Free Documentation License + +@include fdl.texi + +@node Indexes +@appendix Indexes + +@menu +* Builtin Index:: Index of Bash builtin commands. +* Reserved Word Index:: Index of Bash reserved words. +* Variable Index:: Quick reference helps you find the + variable you want. +* Function Index:: Index of bindable Readline functions. +* Concept Index:: General index for concepts described in + this manual. +@end menu + +@node Builtin Index +@appendixsec Index of Shell Builtin Commands +@printindex bt + +@node Reserved Word Index +@appendixsec Index of Shell Reserved Words +@printindex rw + +@node Variable Index +@appendixsec Parameter and Variable Index +@printindex vr + +@node Function Index +@appendixsec Function Index +@printindex fn + +@node Concept Index +@appendixsec Concept Index +@printindex cp + +@bye diff --git a/bash-5.1/doc/builtins.0 b/bash-5.1/doc/builtins.0 new file mode 100644 index 0000000..614524e --- /dev/null +++ b/bash-5.1/doc/builtins.0 @@ -0,0 +1,2014 @@ +BASH_BUILTINS(1) General Commands Manual BASH_BUILTINS(1) + + + +NNAAMMEE + bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command, + compgen, complete, compopt, continue, declare, dirs, disown, echo, en- + able, eval, exec, exit, export, false, fc, fg, getopts, hash, help, + history, jobs, kill, let, local, logout, mapfile, popd, printf, pushd, + pwd, read, readonly, return, set, shift, shopt, source, suspend, test, + times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait - + bash built-in commands, see bbaasshh(1) + +BBAASSHH 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. The ::, ttrruuee, ffaallssee, and tteesstt/[[ builtins do not accept options + and do not treat ---- specially. The eexxiitt, llooggoouutt, rreettuurrnn, bbrreeaakk, ccoonn-- + ttiinnuuee, lleett, and sshhiifftt builtins accept and process arguments beginning + with -- without requiring ----. Other builtins that accept arguments but + are not specified as accepting options interpret arguments beginning + with -- as invalid options and require ---- to prevent this interpreta- + tion. + :: [_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. The return status is + zero. + + .. _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 en- + vironment 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, + filenames in PPAATTHH are used to find the directory containing + _f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable. + When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is + searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option + to the sshhoopptt builtin command is turned off, the PPAATTHH is not + 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 po- + sitional parameters are unchanged. If the --TT option is enabled, + ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any DDEEBBUUGG trap + string is saved and restored around the call to ssoouurrccee, and + ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If --TT is not + set, and the sourced file changes the DDEEBBUUGG trap, the new value + is retained when ssoouurrccee completes. 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 re- + turns 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] [--llppssvvPPSSVVXX] + bbiinndd [--mm _k_e_y_m_a_p] [--qq _f_u_n_c_t_i_o_n] [--uu _f_u_n_c_t_i_o_n] [--rr _k_e_y_s_e_q] + bbiinndd [--mm _k_e_y_m_a_p] --ff _f_i_l_e_n_a_m_e + bbiinndd [--mm _k_e_y_m_a_p] --xx _k_e_y_s_e_q:_s_h_e_l_l_-_c_o_m_m_a_n_d + 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 [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_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 ap- + pear 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'. Op- + tions, 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 (_v_i_-_m_o_v_e + is also a synonym); _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. + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be re- + read. + --SS Display rreeaaddlliinnee key sequences bound to macros and the + strings they output. + --vv Display rreeaaddlliinnee variable names and values in such a way + that they can be re-read. + --VV List current rreeaaddlliinnee variable names and values. + --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 en- + tered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets + the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd-- + lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT and RREEAADDLLIINNEE__MMAARRKK + variables to the current location of the insertion point + and the saved insertion point (the mark), respectively. + If the executed command changes the value of any of RREEAADD-- + LLIINNEE__LLIINNEE, RREEAADDLLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new + values will be reflected in the editing state. + --XX List all key sequences bound to shell commands and the + associated commands in a format that can be reused as in- + put. + + 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 ex- + ited. The return value is 0 unless _n is not greater than or + equal to 1. + + 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. + + 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. + + ccdd [--LL|[--PP [--ee]] [-@]] [_d_i_r] + Change the current directory to _d_i_r. if _d_i_r is not supplied, + the value of the HHOOMMEE shell variable is the default. Any addi- + tional arguments following _d_i_r are ignored. The variable CCDDPPAATTHH + defines the search path for the directory containing _d_i_r: each + directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative di- + rectory names in CCDDPPAATTHH are separated by a colon (:). A null + directory name in CCDDPPAATTHH is the same as the current directory, + i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not + used. The --PP option causes ccdd to use the physical directory + structure by resolving symbolic links while traversing _d_i_r and + before processing instances of _._. in _d_i_r (see also the --PP option + to the sseett builtin command); the --LL option forces symbolic links + to be followed by resolving the link after processing instances + of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing + the immediately previous pathname component from _d_i_r, back to a + slash or the beginning of _d_i_r. If the --ee option is supplied + with --PP, and the current working directory cannot be success- + fully determined after a successful directory change, ccdd will + return an unsuccessful status. On systems that support it, the + --@@ option presents the extended attributes associated with a + file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD + before the directory change is attempted. If a non-empty direc- + tory name from CCDDPPAATTHH is used, or if -- is the first argument, + and the directory change is successful, the absolute pathname of + the new working directory is written to the standard output. + The return value is true if the directory was successfully + changed; false otherwise. + + ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...] + Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function + lookup. Only builtin commands or commands found in the PPAATTHH are + executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is + performed using a default value for PPAATTHH that is guaranteed to + find all of the standard utilities. If either the --VV or --vv op- + tion 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 filename + used to invoke _c_o_m_m_a_n_d to be displayed; the --VV option produces a + more verbose description. If the --VV or --vv option is supplied, + the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If + 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 fa- + cilities, while available, will not have useful values. + + The matches will be generated in the same way as if the program- + mable completion code had generated them directly from a comple- + tion specification with the same flags. If _w_o_r_d is specified, + 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] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- + _p_a_t] [--WW _w_o_r_d_l_i_s_t] + [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_- + _f_i_x] _n_a_m_e [_n_a_m_e _._._.] + ccoommpplleettee --pprr [--DDEEII] [_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 --DD option indicates that other sup- + plied options and actions should apply to the ``default'' com- + mand completion; that is, completion attempted on a command for + which no completion has previously been defined. The --EE option + indicates that other supplied options and actions should apply + to ``empty'' command completion; that is, completion attempted + on a blank line. The --II option indicates that other supplied + options and actions should apply to completion on the initial + non-assignment word on the line, or after a command delimiter + such as ;; or ||, which is usually command name completion. If + multiple options are supplied, the --DD option takes precedence + over --EE, and both take precedence over --II. If any of --DD, --EE, or + --II are supplied, any other _n_a_m_e arguments are ignored; these + completions only apply to the case specified by the option. + + The process of applying these completion specifications when + word completion is attempted is described above under PPrrooggrraamm-- + mmaabbllee 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, quoting special characters, or suppress- + ing trailing spaces). Intended to be used with + shell functions. + nnooqquuoottee Tell readline not to quote the completed words + if they are filenames (quoting filenames is the + default). + nnoossoorrtt Tell readline not to sort the list of possible + completions alphabetically. + nnoossppaaccee Tell readline not to append a space (the de- + fault) to words completed at the end of the + line. + pplluussddiirrss + After any matches defined by the compspec are + generated, directory name completion is at- + tempted 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. + --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 the function is executed, the + first argument ($$11) is the name of the command whose ar- + guments are being completed, the second argument ($$22) is + the word being completed, and the third argument ($$33) is + the word preceding the word being completed on the cur- + rent command line. When it finishes, the possible com- + pletions are retrieved from the value of the CCOOMMPPRREEPPLLYY + array variable. + --GG _g_l_o_b_p_a_t + The pathname expansion pattern _g_l_o_b_p_a_t is expanded to + generate the possible completions. + --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. + --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. Shell quoting is honored within _w_o_r_d_l_i_s_t, + in order to provide a mechanism for the words to contain + shell metacharacters or characters in the value of IIFFSS. + The possible completions are the members of the resul- + tant list which match the word being completed. + --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 pathname 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. + + 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. + + ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEEII] [++oo _o_p_t_i_o_n] [_n_a_m_e] + Modify completion options for each _n_a_m_e according to the _o_p_- + _t_i_o_ns, or for the currently-executing completion if no _n_a_m_es are + supplied. If no _o_p_t_i_o_ns are given, display the completion op- + tions for each _n_a_m_e or the current completion. The possible + values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin de- + scribed above. The --DD option indicates that other supplied op- + tions should apply to the ``default'' command completion; that + is, completion attempted on a command for which no completion + has previously been defined. The --EE option indicates that other + supplied options should apply to ``empty'' command completion; + that is, completion attempted on a blank line. The --II option + indicates that other supplied options should apply to completion + on the initial non-assignment word on the line, or after a com- + mand delimiter such as ;; or ||, which is usually command name + completion. + + The return value is true unless an invalid option is supplied, + an attempt is made to modify the options for a _n_a_m_e for which no + completion specification exists, or an output error occurs. + + 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 en- + closing loops, the last enclosing loop (the ``top-level'' loop) + is resumed. The return value is 0 unless _n is not greater than + or equal to 1. + + ddeeccllaarree [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] + ttyyppeesseett [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] + Declare variables and/or give them attributes. If no _n_a_m_es are + given then display the values of variables. The --pp option will + display the attributes and values of each _n_a_m_e. When --pp is used + with _n_a_m_e arguments, additional options, other than --ff and --FF, + are ignored. When --pp is supplied without _n_a_m_e arguments, it + will display the attributes and values of all variables having + the attributes specified by the additional options. If no other + options are supplied with --pp, ddeeccllaarree will display the at- + tributes and values of all shell variables. The --ff option will + restrict the display to shell functions. The --FF option inhibits + the display of function definitions; only the function name and + attributes are printed. If the eexxttddeebbuugg shell option is enabled + using sshhoopptt, the source file name and line number where each + _n_a_m_e is defined are displayed as well. The --FF option implies + --ff. The --gg option forces variables to be created or modified at + the global scope, even when ddeeccllaarree is executed in a shell func- + tion. It is ignored in all other cases. The --II option causes + local variables to inherit the attributes (except the _n_a_m_e_r_e_f + attribute) and value of any existing variable with the same _n_a_m_e + at a surrounding scope. If there is no existing variable, the + local variable is initially unset. The following options can be + used to restrict output to variables with the specified attri- + bute or to give variables attributes: + --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss + above). + --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss + above). + --ff Use function names only. + --ii The variable is treated as an integer; arithmetic evalua- + tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when + the variable is assigned a value. + --ll When the variable is assigned a value, all upper-case + characters are converted to lower-case. The upper-case + attribute is disabled. + --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name + reference to another variable. That other variable is + defined by the value of _n_a_m_e. All references, assign- + ments, and attribute modifications to _n_a_m_e, except those + using or changing the --nn attribute itself, are performed + on the variable referenced by _n_a_m_e's value. The nameref + attribute cannot be applied to array variables. + --rr Make _n_a_m_es readonly. These names cannot then be assigned + values by subsequent assignment statements or unset. + --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions in- + herit the DDEEBBUUGG and RREETTUURRNN traps from the calling shell. + The trace attribute has no special meaning for variables. + --uu When the variable is assigned a value, all lower-case + characters are converted to upper-case. The lower-case + attribute is disabled. + --xx Mark _n_a_m_es for export to subsequent commands via the en- + vironment. + + Using `+' instead of `-' turns off the attribute instead, with + the exceptions that ++aa and ++AA may not be used to destroy array + variables and ++rr will not remove the readonly attribute. When + used in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as + with the llooccaall command, unless the --gg option is supplied. If a + variable name is followed by =_v_a_l_u_e, the value of the variable + is set to _v_a_l_u_e. When using --aa or --AA and the compound assign- + ment syntax to create array variables, additional attributes do + not take effect until subsequent assignments. The return value + is 0 unless an invalid option is encountered, an attempt is made + to define a function using ``-f foo=bar'', an attempt is made to + assign a value to a readonly variable, an attempt is made to as- + sign a value to an array variable without using the compound as- + signment 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 di- + rectories. The default display is on a single line with direc- + tory names separated by spaces. Directories are added to the + list with the ppuusshhdd command; the ppooppdd command removes entries + from the list. The current directory is always the first direc- + tory in the stack. + --cc Clears the directory stack by deleting all of the en- + tries. + --ll Produces a listing using full pathnames; the default + listing format uses a tilde to denote the home directory. + --pp Print the directory stack with one entry per line. + --vv Print the directory stack with one entry per line, pre- + fixing each entry with its index in the stack. + ++_n Displays the _nth entry counting from the left of the list + shown by ddiirrss when invoked without options, starting with + zero. + --_n Displays the _nth entry counting from the right of the + list shown by ddiirrss when invoked without options, starting + with zero. + + The return value is 0 unless an invalid option is supplied or _n + indexes beyond the end of the directory stack. + + ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ] + Without options, remove each _j_o_b_s_p_e_c from the table of active + jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr + option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option + is given, each _j_o_b_s_p_e_c is not removed from the table, but is + marked so that SSIIGGHHUUPP is not sent to the job if the shell re- + ceives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option means + to remove or mark all jobs; the --rr option without a _j_o_b_s_p_e_c ar- + gument 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 0 unless a write error occurs. If --nn is + specified, the trailing newline is suppressed. If the --ee option + is given, interpretation of the following backslash-escaped + characters is enabled. The --EE option disables the interpreta- + tion of these escape characters, even on systems where they are + interpreted by default. The xxppgg__eecchhoo shell option may be used + to dynamically determine whether or not eecchhoo expands these es- + cape characters by default. eecchhoo does not interpret ---- to mean + the end of options. eecchhoo interprets the following escape se- + quences: + \\aa alert (bell) + \\bb backspace + \\cc suppress further output + \\ee + \\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) + \\xx_H_H the eight-bit character whose value is the hexadecimal + value _H_H (one or two hex digits) + \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value _H_H_H_H (one to four hex digits) + \\UU_H_H_H_H_H_H_H_H + the Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits) + + eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] + Enable and disable builtin shell commands. Disabling a builtin + 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 en- + abled. 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 argument passed to _c_o_m_m_a_n_d. This is what _l_o_- + _g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with + an empty environment. If --aa is supplied, the shell passes _n_a_m_e + as the zeroth argument to the executed command. If _c_o_m_m_a_n_d can- + not be executed for some reason, a non-interactive shell exits, + unless the eexxeeccffaaiill shell option is enabled. In that case, it + returns failure. An interactive shell returns failure if the + file cannot be executed. A subshell exits unconditionally if + eexxeecc fails. 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 names of all exported + variables is printed. The --nn option causes the export property + to be removed from each _n_a_m_e. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns + an exit status of 0 unless an invalid option is encountered, one + of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- + plied with a _n_a_m_e that is not a function. + + ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] + ffcc --ss [_p_a_t=_r_e_p] [_c_m_d] + The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t + from the history list and displays or edits and re-executes + them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate + the last command beginning with that string) or as a number (an + index into the history list, where a negative number is used as + an offset from the current command number). When listing, a + _f_i_r_s_t or _l_a_s_t of 0 is equivalent to -1 and -0 is equivalent to + the current command (usually the ffcc command); otherwise 0 is + equivalent to -1 and -0 is invalid. 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 specified, 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. _C_o_m_m_a_n_d is interpreted the same as + _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'', + so that typing ``r cc'' runs the last command beginning with + ``cc'' and typing ``r'' re-executes the last command. + + If the first form is used, the return value is 0 unless an in- + valid 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 _._._.] + 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 ex- + pected 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 op- + tion requires an argument, ggeettooppttss places that argument into the + variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automatically; + it must be manually reset between multiple calls to ggeettooppttss + within the same shell invocation if a new set of parameters is + to be used. + + When the end of options is encountered, ggeettooppttss exits with a re- + turn value greater than zero. OOPPTTIINNDD is set to the index of the + first non-option argument, and _n_a_m_e is set to ?. + + ggeettooppttss normally parses the positional parameters, but if more + arguments are supplied as _a_r_g values, ggeettooppttss parses those in- + stead. + + 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 OOPP-- + TTAARRGG 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] + Each time hhaasshh is invoked, the full pathname of the command _n_a_m_e + is determined by searching the directories in $$PPAATTHH and remem- + bered. Any previously-remembered pathname is discarded. If the + --pp option is supplied, no path search is performed, and _f_i_l_e_n_a_m_e + is used as the full filename of the command. The --rr option + causes the shell to forget all remembered locations. The --dd op- + tion 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 [--ddmmss] [_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. + --dd Display a short description of each _p_a_t_t_e_r_n + --mm Display the description of each _p_a_t_t_e_r_n in a manpage-like + format + --ss Display only a short usage synopsis for each _p_a_t_t_e_r_n + + The return status is 0 unless no command matches _p_a_t_t_e_r_n. + + hhiissttoorryy [[_n]] + hhiissttoorryy --cc + hhiissttoorryy --dd _o_f_f_s_e_t + hhiissttoorryy --dd _s_t_a_r_t-_e_n_d + 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. If _o_f_f_s_e_t + is negative, it is interpreted as relative to one greater + than the last history position, so negative indices count + back from the end of the history, and an index of -1 + refers to the current hhiissttoorryy --dd command. + --dd _s_t_a_r_t-_e_n_d + Delete the history entries between positions _s_t_a_r_t and + _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t + and _e_n_d are interpreted as described above. + --aa Append the ``new'' history lines to the history file. + These are history lines entered since the beginning of + the current bbaasshh session, but not already appended to the + history file. + --nn Read the history lines not already read from the history + file into the current history list. These are lines ap- + pended to the history file since the beginning of the + current bbaasshh session. + --rr Read the contents of the history file and append them to + the current history list. + --ww Write the current history list to the history file, over- + writing the history file's contents. + --pp Perform history substitution on the following _a_r_g_s and + display the result on the standard output. Does not + store the results in the history list. Each _a_r_g must be + 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 variable is set, the time stamp informa- + tion associated with each history entry is written to the his- + tory file, marked with the history comment character. When the + history file is read, lines beginning with the history comment + character followed immediately by a digit are interpreted as + timestamps for the following history entry. 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 sup- + plied 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. + --nn Display information only about jobs that have changed + status since the user was last notified of their status. + --pp List only the process ID of the job's process group + leader. + --rr Display only running jobs. + --ss Display only stopped jobs. + + If _j_o_b_s_p_e_c is given, output is restricted to information about + that job. The return status is 0 unless an invalid option is + 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 ex- + ecutes _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|--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. The --LL option is + equivalent to --ll. kkiillll returns true if at least one signal was + successfully sent, or false if an error occurs or an invalid op- + tion is encountered. + + lleett _a_r_g [_a_r_g ...] + Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH-- + MMEETTIICC EEVVAALLUUAATTIIOONN above). 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. If _n_a_m_e is -, the set of shell options + is made local to the function in which llooccaall is invoked: shell + options changed using the sseett builtin inside the function are + restored to their original values when the function returns. + The restore is effected as if a series of sseett commands were exe- + cuted to restore the values that were in place before the func- + tion. 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. + + mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] + rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] + Read lines from the standard input into the indexed array vari- + able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- + plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if + supplied, have the following meanings: + --dd The first character of _d_e_l_i_m is used to terminate each + input line, rather than newline. If _d_e_l_i_m is the empty + string, mmaappffiillee will terminate a line when it reads a NUL + character. + --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are + copied. + --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default + index is 0. + --ss Discard the first _c_o_u_n_t lines read. + --tt Remove a trailing _d_e_l_i_m (default newline) from each line + read. + --uu Read lines from file descriptor _f_d instead of the stan- + dard input. + --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The + --cc option specifies _q_u_a_n_t_u_m. + --cc Specify the number of lines read between each call to + _c_a_l_l_b_a_c_k. + + If --CC is specified without --cc, the default quantum is 5000. + When _c_a_l_l_b_a_c_k is evaluated, it is supplied the index of the next + array element to be assigned and the line to be assigned to that + element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after + the line is read but before the array element is assigned. + + If not supplied with an explicit origin, mmaappffiillee will clear _a_r_- + _r_a_y before assigning to it. + + mmaappffiillee returns successfully unless an invalid option or option + argument is supplied, _a_r_r_a_y is invalid or unassignable, or if + _a_r_r_a_y is not an indexed array. + + 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: + --nn Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is ma- + nipulated. + ++_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. + + 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 --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 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 _a_r_g_u_m_e_n_t. In + addition to the standard _p_r_i_n_t_f(1) format specifications, pprriinnttff + interprets the following extensions: + %%bb causes pprriinnttff to expand backslash escape sequences in the + corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee. + %%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. + %%((_d_a_t_e_f_m_t))TT + causes pprriinnttff to output the date-time string resulting + from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). + The corresponding _a_r_g_u_m_e_n_t is an integer representing the + number of seconds since the epoch. Two special argument + values may be used: -1 represents the current time, and + -2 represents the time the shell was invoked. If no ar- + gument is specified, conversion behaves as if -1 had been + given. This is an exception to the usual pprriinnttff behav- + ior. + + The %b, %q, and %T directives all use the field width and preci- + sion arguments from the format specification and write that many + bytes from (or use that wide a field for) the expanded argument, + which usually contains more characters than the original. + + Arguments to non-string format specifiers are treated as C con- + stants, except that a leading plus or minus sign is allowed, and + if the leading character is a single or double quote, the value + is the ASCII value of the following character. + + The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- + _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] [+_n] [-_n] + ppuusshhdd [--nn] [_d_i_r] + Adds a directory to the top of the directory stack, or rotates + the stack, making the new top of the stack the current working + directory. With no arguments, ppuusshhdd exchanges the top two di- + rectories and returns 0, unless the directory stack is empty. + Arguments, if supplied, have the following meanings: + --nn Suppresses the normal change of directory when rotating + or adding directories to the stack, so that only the + stack is manipulated. + ++_n Rotates the stack so that the _nth directory (counting + from the left of the list shown by ddiirrss, starting with + 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. + _d_i_r Adds _d_i_r to the directory stack at the top, making it the + new current working directory as if it had been supplied + as the argument to the ccdd builtin. + + If the ppuusshhdd command is successful, a ddiirrss is performed as well. + If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r + 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 in- + valid option is supplied. + + rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp + _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...] + One line is read from the standard input, or from the file de- + scriptor _f_d supplied as an argument to the --uu option, split into + words as described above under WWoorrdd SSpplliittttiinngg, and the first + word is assigned to the first _n_a_m_e, the second word to the sec- + ond _n_a_m_e, and so on. If there are more words than names, the + remaining words and their intervening delimiters are 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 val- + ues. The characters in IIFFSS are used to split the line into + words using the same rules the shell uses for expansion (de- + scribed above under WWoorrdd SSpplliittttiinngg). The backslash character + (\\) may be used to remove any special meaning for the next char- + acter read and for line continuation. Options, if supplied, + have the following meanings: + --aa _a_n_a_m_e + The words are assigned to sequential indices of the array + variable _a_n_a_m_e, starting at 0. _a_n_a_m_e is unset before any + new values are assigned. Other _n_a_m_e arguments are ig- + nored. + --dd _d_e_l_i_m + The first character of _d_e_l_i_m is used to terminate the in- + put line, rather than newline. If _d_e_l_i_m is the empty + string, rreeaadd will terminate a line when it reads a NUL + character. + --ee If the standard input is coming from a terminal, rreeaaddlliinnee + (see RREEAADDLLIINNEE above) is used to obtain the line. Read- + line uses the current (or default, if line editing was + not previously active) editing settings, but uses Read- + line's default filename completion. + --ii _t_e_x_t + If rreeaaddlliinnee is being used to read the line, _t_e_x_t is + placed into the editing buffer before editing begins. + --nn _n_c_h_a_r_s + rreeaadd returns after reading _n_c_h_a_r_s characters rather than + waiting for a complete line of input, but honors a delim- + iter if fewer than _n_c_h_a_r_s characters are read before the + delimiter. + --NN _n_c_h_a_r_s + rreeaadd returns after reading exactly _n_c_h_a_r_s characters + rather than waiting for a complete line of input, unless + EOF is encountered or rreeaadd times out. Delimiter charac- + ters encountered in the input are not treated specially + and do not cause rreeaadd to return until _n_c_h_a_r_s characters + are read. The result is not split on the characters in + IIFFSS; the intent is that the variable is assigned exactly + the characters read (with the exception of backslash; see + the --rr option below). + --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 then 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 (or a specified number of characters) is + not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- + mal number with a fractional portion following the deci- + mal point. This option is only effective if rreeaadd is + reading input from a terminal, pipe, or other special + file; it has no effect when reading from regular files. + If rreeaadd times out, rreeaadd saves any partial input read into + the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd re- + turns immediately, without trying to read any data. The + exit status is 0 if input is available on the specified + file descriptor, non-zero otherwise. The exit status is + greater than 128 if the timeout is exceeded. + --uu _f_d Read input from file descriptor _f_d. + + If no _n_a_m_e_s are supplied, the line read, without the ending de- + limiter but otherwise unmodified, is assigned to the variable + RREEPPLLYY. The exit status is zero, unless end-of-file is encoun- + tered, rreeaadd times out (in which case the status is greater than + 128), a variable assignment error (such as assigning to a read- + only variable) occurs, or an invalid file descriptor is supplied + as the argument to --uu. + + rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] + The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s + may not be changed by subsequent assignment. If the --ff option + is supplied, the functions corresponding to the _n_a_m_e_s are so + marked. The --aa option restricts the variables to indexed ar- + rays; the --AA option restricts the variables to associative ar- + rays. If both options are supplied, --AA takes precedence. If no + _n_a_m_e arguments are given, or if the --pp option is supplied, a + list of all readonly names is printed. The other options may be + used to restrict the output to a subset of the set of readonly + names. The --pp option causes output to be displayed in a format + that may be reused as input. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return + status is 0 unless an invalid option is encountered, one of the + _n_a_m_e_s is not a valid shell variable name, or --ff is supplied with + a _n_a_m_e that is not a function. + + rreettuurrnn [_n] + Causes a function to stop executing and return the value speci- + fied by _n to its caller. If _n is omitted, the return status is + that of the last command executed in the function body. If rree-- + ttuurrnn is executed by a trap handler, the last command used to de- + termine the status is the last command executed before the trap + handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the last + command used to determine the status is the last command exe- + cuted by the trap handler before rreettuurrnn was invoked. If rreettuurrnn + is used outside a function, but during execution of a script by + the .. (ssoouurrccee) command, it causes the shell to stop executing + that script and return either _n or the exit status of the last + command executed within the script as the exit status of the + script. If _n is supplied, the return value is its least signif- + icant 8 bits. The return status is non-zero if rreettuurrnn is sup- + plied a non-numeric argument, or is used outside a function and + not during execution of a script by .. or ssoouurrccee. Any command + associated with the RREETTUURRNN trap is executed before execution re- + sumes after the function or script. + + sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] + sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] + Without options, the name and value of each shell variable are + 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 op- + tions are specified, they set or unset shell attributes. Any + arguments remaining after option processing are treated as val- + ues for the positional parameters and are assigned, in order, to + $$11, $$22, ...... $$_n. Options, if specified, have the following + meanings: + --aa Each variable or function that is created or modified is + given the export attribute and marked 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 _p_i_p_e_l_i_n_e (which may consist of a + single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d + (see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero status. + The shell does not exit if the command that fails is + part of the command list immediately following a wwhhiillee + or uunnttiill keyword, part of the test following the iiff or + eelliiff reserved words, part of any command executed in a + &&&& or |||| list except the command following the final &&&& + or ||||, any command in a pipeline but the last, or if the + command's return value is being inverted with !!. If a + compound command other than a subshell returns a non- + zero status because a command failed while --ee was being + ignored, the shell does not exit. A trap on EERRRR, if + set, is executed before the shell exits. This option + applies to the shell environment and each subshell envi- + ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT + above), and may cause subshells to exit before executing + all the commands in the subshell. + + If a compound command or shell function executes in a + context where --ee is being ignored, none of the commands + executed within the compound command or function body + will be affected by the --ee setting, even if --ee is set + and a command returns a failure status. If a compound + command or shell function sets --ee while executing in a + context where --ee is ignored, that setting will not have + any effect until the compound command or the command + containing the function call completes. + --ff Disable pathname expansion. + --hh Remember the location of commands as they are looked up + for execution. This is enabled by default. + --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). All processes run + in a separate process group. When a background job com- + pletes, the shell prints a line containing its exit sta- + tus. + --nn Read commands but do not execute them. This may be used + to check a shell script for syntax errors. This is ig- + nored 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. This also affects the + editing interface used for rreeaadd --ee. + eerrrreexxiitt Same as --ee. + eerrrrttrraaccee + Same as --EE. + ffuunnccttrraaccee + Same as --TT. + 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 ``IG- + NOREEOF=10'' had been executed (see SShheellll VVaarrii-- + aabblleess 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). See SSEEEE AALLSSOO + below for a reference to a document that details + how posix mode affects bash's behavior. + pprriivviilleeggeedd + Same as --pp. + vveerrbboossee Same as --vv. + vvii Use a vi-style command line editing interface. + This also affects the editing interface used for + rreeaadd --ee. + 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, + BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap- + pear in the environment, are 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 sup- + plied, these actions are taken and the effective user id + is set to the real user id. If the --pp option is sup- + plied 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 and parameters other than the spe- + cial parameters "@" and "*" as an error when performing + parameter expansion. If expansion is attempted on an + unset variable or parameter, 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 resolve symbolic links when + executing commands such as ccdd that change the current + working directory. It uses the physical directory + structure instead. By default, bbaasshh follows the logical + 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 ex- + ecuted 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 op- + tions can also be specified as arguments to an invocation of the + shell. The current set of options may be found in $$--. The re- + turn 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 un- + set. _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 param- + eters 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 settings controlling optional shell behav- + ior. The settings can be either those listed below, or, if the + --oo option is used, those available with the --oo option to the sseett + builtin command. With no options, or with the --pp option, a list + of all settable options is displayed, with an indication of + whether or not each is set; if _o_p_t_n_a_m_e_s are supplied, the output + is restricted to those options. The --pp option causes output to + be displayed in a form that may be reused as input. Other op- + tions have the following meanings: + --ss Enable (set) each _o_p_t_n_a_m_e. + --uu Disable (unset) each _o_p_t_n_a_m_e. + --qq Suppresses normal output (quiet mode); the return status + 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, sshhoopptt + shows only those options which are set or unset, respectively. + Unless otherwise noted, the sshhoopptt options are disabled (unset) + by default. + + The return status when listing options is zero if all _o_p_t_n_a_m_e_s + are enabled, non-zero otherwise. When setting or unsetting op- + tions, 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: + + aassssoocc__eexxppaanndd__oonnccee + If set, the shell suppresses multiple evaluation of as- + sociative array subscripts during arithmetic expression + evaluation, while executing builtins that can perform + variable assignments, and while executing builtins that + perform array dereferencing. + aauuttooccdd If set, a command name that is the name of a directory + is executed as if it were the argument to the ccdd com- + mand. This option is only used by interactive shells. + ccddaabbllee__vvaarrss + If set, an argument to the ccdd builtin command that is + not a directory is assumed to be the name of a variable + 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 filename 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. + cchheecckkjjoobbss + If set, bbaasshh lists the status of any stopped and running + jobs before exiting an interactive shell. If any jobs + are running, this causes the exit to be deferred until a + second exit is attempted without an intervening command + (see JJOOBB CCOONNTTRROOLL above). The shell always postpones ex- + iting if any jobs are stopped. + cchheecckkwwiinnssiizzee + If set, bbaasshh checks the window size after each external + (non-builtin) command and, if necessary, updates the + values of LLIINNEESS and CCOOLLUUMMNNSS. This option is enabled by + default. + 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. This option is + enabled by default, but only has an effect if command + history is enabled, as described above under HHIISSTTOORRYY. + ccoommppaatt3311 + ccoommppaatt3322 + ccoommppaatt4400 + ccoommppaatt4411 + ccoommppaatt4422 + ccoommppaatt4433 + ccoommppaatt4444 + These control aspects of the shell's compatibility mode + (see SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below). + + ccoommpplleettee__ffuullllqquuoottee + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. + If not set, bbaasshh removes metacharacters such as the dol- + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that ex- + pand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in + versions through 4.2. + + ddiirreexxppaanndd + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing buf- + fer. If not set, bbaasshh attempts to preserve what the + user typed. + + ddiirrssppeellll + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- + tially supplied does not exist. + + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + the results of pathname expansion. The filenames ````..'''' + and ````....'''' must always be matched explicitly, even if + ddoottgglloobb is set. + + 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 at shell invocation, or in a shell startup file, + arrange to execute the debugger profile before the shell + starts, identical to the ----ddeebbuuggggeerr option. If set af- + ter invocation, 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), the shell + simulates a call to rreettuurrnn. + + 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 EERRRR trap. + + eexxttgglloobb If set, the extended pattern matching features described + above under PPaatthhnnaammee EExxppaannssiioonn are enabled. + + eexxttqquuoottee + If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed + within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double + 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 de- + scription of FFIIGGNNOORREE. This option is enabled by de- + fault. + + gglloobbaasscciiiirraannggeess + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave + as if in the traditional C locale when performing com- + parisons. That is, the current locale's collating se- + quence is not taken into account, so bb will not collate + between AA and BB, and upper-case and lower-case ASCII + characters will collate together. + + gglloobbssttaarr + If set, the pattern **** used in a pathname expansion con- + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, + only directories and subdirectories match. + + ggnnuu__eerrrrffmmtt + If set, shell error messages are written in the standard + GNU error message format. + + hhiissttaappppeenndd + If set, the history list is appended to the file named + by the value of the HHIISSTTFFIILLEE variable when the shell ex- + its, 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. + + iinnhheerriitt__eerrrreexxiitt + If set, command substitution inherits the value of the + eerrrreexxiitt option, instead of unsetting it in the subshell + environment. This option is enabled when _p_o_s_i_x _m_o_d_e is + enabled. + + 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 op- + tion is enabled by default. + + llaassttppiippee + If set, and job control is not active, the shell runs + the last command of a pipeline not executed in the back- + ground in the current shell environment. + + lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line + commands are saved to the history with embedded newlines + rather than using semicolon separators where possible. + + llooccaallvvaarr__iinnhheerriitt + If set, local variables inherit the value and attributes + of a variable of the same name that exists at a previous + scope before any new value is assigned. The nameref at- + tribute is not inherited. + + llooccaallvvaarr__uunnsseett + If set, calling uunnsseett on local variables in previous + function scopes marks them so subsequent lookups find + them unset until that function returns. This is identi- + cal to the behavior of unsetting local variables at the + current function scope. + + 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 at- + tempt 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, when performing pattern substi- + tution word expansions, or when filtering possible com- + pletions as part of programmable completion. + + 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. + + pprrooggccoommpp__aalliiaass + If set, and programmable completion is enabled, bbaasshh + treats a command name that doesn't have any completions + as a possible alias and attempts alias expansion. If it + has an alias, bbaasshh attempts programmable completion us- + ing the command word resulting from the expanded alias. + + pprroommppttvvaarrss + If set, prompt strings undergo parameter expansion, com- + mand substitution, arithmetic expansion, and quote re- + moval 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 re- + stricted 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 se- + quences by default. + + ssuussppeenndd [--ff] + Suspend the execution of this shell until it receives a SSIIGGCCOONNTT + signal. A login shell cannot be suspended; the --ff option can be + used to override this and force the suspension. The return sta- + tus is 0 unless the shell is a login shell and --ff is not sup- + plied, or if job control is not enabled. + + tteesstt _e_x_p_r + [[ _e_x_p_r ]] + Return a status of 0 (true) or 1 (false) depending on the evalu- + ation of the conditional expression _e_x_p_r. Each operator and op- + erand must be a separate argument. Expressions are composed of + the primaries described in the bbaasshh manual page under CCOONNDDII-- + TTIIOONNAALL EEXXPPRREESSSSIIOONNSS. tteesstt does not accept any options, nor does + it accept and ignore an argument of ---- as signifying the end of + options. + + Expressions may be combined using the following operators, + listed in decreasing order of precedence. The evaluation de- + pends on the number of arguments; see below. Operator prece- + dence is used when there are five or more arguments. + !! _e_x_p_r True if _e_x_p_r is false. + (( _e_x_p_r )) + Returns the value of _e_x_p_r. This may be used to override + 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 + The following conditions are applied in the order listed. + If the second argument is one of the binary conditional + operators listed above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the + result of the expression is the result of the binary test + using the first and third arguments as operands. The --aa + and --oo operators are considered binary operators when + there are three arguments. If the first argument is !!, + the value is the negation of the two-argument test using + the second and third arguments. If the first argument is + exactly (( and the third argument is exactly )), the result + is the one-argument test of the second argument. Other- + wise, the expression is false. + 4 arguments + If the first argument is !!, the result is the negation of + the three-argument expression composed of the remaining + 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. + + When used with tteesstt or [[, the << and >> operators sort lexico- + graphically using ASCII ordering. + + ttiimmeess Print the accumulated user and system times for the shell and + 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 re- + ceives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a sin- + gle _s_i_g_s_p_e_c) or --, each specified signal is reset to its origi- + nal 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 com- + mands associated with each signal. The --ll option causes the + shell to print a list of signal names and their corresponding + numbers. Each _s_i_g_s_p_e_c is either a signal name defined in <_s_i_g_- + _n_a_l_._h>, or a signal number. Signal names are case insensitive + and the SSIIGG prefix is optional. + + If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit + from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- + cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, + _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the + first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR + above). Refer to the description of the eexxttddeebbuugg option to the + sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a + _s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell + function or a script executed with the .. or ssoouurrccee builtins fin- + ishes executing. + + If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a + pipeline (which may consist of a single simple command), a list, + or a compound command returns a non-zero exit status, subject to + the following conditions. The EERRRR trap is not executed if the + failed command is part of the command list immediately following + a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, + part of a command executed in a &&&& or |||| list except the command + following the final &&&& or ||||, any command in a pipeline but the + last, or if the command's return value is being inverted using + !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) op- + tion. + + Signals ignored upon entry to the shell cannot be trapped or re- + set. Trapped signals that are not being ignored are reset to + their original values in a subshell or subshell environment when + one 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 re- + turned. 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 specified + as a command name, or nothing if ``type -t name'' would not re- + turn _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, which is not necessar- + ily the file that appears first in PPAATTHH. If the --aa option is + used, ttyyppee prints all of the places that contain an executable + named _n_a_m_e. This includes aliases and functions, if and only if + the --pp option is not also used. The table of hashed commands is + not consulted when using --aa. The --ff option suppresses shell + function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true + if all of the arguments are found, false if any are not found. + + uulliimmiitt [--HHSS] --aa + uulliimmiitt [--HHSS] [--bbccddeeffiikkllmmnnppqqrrssttuuvvxxPPRRTT [_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 by a + non-root user once it is set; a soft limit may be increased up + to the value of the hard limit. If neither --HH nor --SS is speci- + fied, 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, re- + spectively. 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, if appropriate, are printed before the value. Other op- + tions are interpreted as follows: + --aa All current limits are reported; no limits are set + --bb The maximum socket buffer size + --cc The maximum size of core files created + --dd The maximum size of a process's data segment + --ee The maximum scheduling priority ("nice") + --ff The maximum size of files written by the shell and its + children + --ii The maximum number of pending signals + --kk The maximum number of kqueues that may be allocated + --ll The maximum size that may be locked into memory + --mm The maximum resident set size (many systems do not honor + this limit) + --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 and, on some systems, to its children + --xx The maximum number of file locks + --PP The maximum number of pseudoterminals + --RR The maximum time a real-time process can run before + blocking, in microseconds + --TT The maximum number of threads + + If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the + new value of the specified resource. If no option is given, + then --ff is assumed. Values are in 1024-byte increments, except + for --tt, which is in seconds; --RR, which is in microseconds; --pp, + which is in units of 512-byte blocks; --PP, --TT, --bb, --kk, --nn, and + --uu, which are unscaled values; and, when in posix mode, --cc and + --ff, which are in 512-byte increments. 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] [-nn] [_n_a_m_e ...] + For each _n_a_m_e, remove the corresponding variable or function. + If the --vv option is given, each _n_a_m_e refers to a shell variable, + and that variable is removed. Read-only variables may not be + unset. If --ff is specified, each _n_a_m_e refers to a shell func- + tion, and the function definition is removed. If the --nn option + is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, + _n_a_m_e will be unset rather than the variable it references. --nn + has no effect if the --ff option is supplied. If no options are + supplied, each _n_a_m_e refers to a variable; if there is no vari- + able by that name, a function with that name, if any, is unset. + Each unset variable or function is removed from the environment + passed to subsequent commands. If any of BBAASSHH__AALLIIAASSEESS, + BBAASSHH__AARRGGVV00, BBAASSHH__CCMMDDSS, BBAASSHH__CCOOMMMMAANNDD, BBAASSHH__SSUUBBSSHHEELLLL, BBAASSHHPPIIDD, + CCOOMMPP__WWOORRDDBBRREEAAKKSS, DDIIRRSSTTAACCKK, EEPPOOCCHHRREEAALLTTIIMMEE, EEPPOOCCHHSSEECCOONNDDSS, FFUUNNCC-- + NNAAMMEE, GGRROOUUPPSS, HHIISSTTCCMMDD, LLIINNEENNOO, RRAANNDDOOMM, SSEECCOONNDDSS, or SSRRAANNDDOOMM are + unset, they lose their special properties, even if they are sub- + sequently reset. The exit status is true unless a _n_a_m_e is read- + only. + + wwaaiitt [--ffnn] [--pp _v_a_r_n_a_m_e] [_i_d _._._.] + Wait for each specified child process and return its termination + status. Each _i_d 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_d is not given, wwaaiitt waits for all running + background jobs and the last-executed process substitution, if + its process id is the same as $$!!, and the return status is zero. + If the --nn option is supplied, wwaaiitt waits for a single job from + the list of _i_ds or, if no _i_ds are supplied, any job, to complete + and returns its exit status. If none of the supplied arguments + is a child of the shell, or if no arguments are supplied and the + shell has no unwaited-for children, the exit status is 127. If + the --pp option is supplied, the process or job identifier of the + job for which the exit status is returned is assigned to the + variable _v_a_r_n_a_m_e named by the option argument. The variable + will be unset initially, before any assignment. This is useful + only when the --nn option is supplied. Supplying the --ff option, + when job control is enabled, forces wwaaiitt to wait for _i_d to ter- + minate before returning its status, instead of returning when it + changes status. If _i_d 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. + +SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE + Bash-4.0 introduced the concept of a `shell compatibility level', spec- + ified as a set of options to the shopt builtin ccoommppaatt3311, ccoommppaatt3322, ccoomm-- + ppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibility + level -- each option is mutually exclusive. The compatibility level is + intended to allow users to select behavior from previous versions that + is incompatible with newer versions while they migrate scripts to use + current features and behavior. It's intended to be a temporary solu- + tion. + + This section does not mention behavior that is standard for a particu- + lar version (e.g., setting ccoommppaatt3322 means that quoting the rhs of the + regexp matching operator quotes special regexp characters in the word, + which is default behavior in bash-3.2 and above). + + If a user enables, say, ccoommppaatt3322, it may affect the behavior of other + compatibility levels up to and including the current compatibility + level. The idea is that each compatibility level controls behavior + that changed in that version of bbaasshh, but that behavior may have been + present in earlier versions. For instance, the change to use locale- + based comparisons with the [[[[ command came in bash-4.1, and earlier + versions used ASCII-based comparisons, so enabling ccoommppaatt3322 will enable + ASCII-based comparisons as well. That granularity may not be suffi- + cient for all uses, and as a result users should employ compatibility + levels carefully. Read the documentation for a particular feature to + find out the current behavior. + + Bash-4.3 introduced a new shell variable: BBAASSHH__CCOOMMPPAATT. The value as- + signed to this variable (a decimal version number like 4.2, or an inte- + ger corresponding to the ccoommppaatt_N_N option, like 42) determines the com- + patibility level. + + Starting with bash-4.4, Bash has begun deprecating older compatibility + levels. Eventually, the options will be removed in favor of BBAASSHH__CCOOMM-- + PPAATT. + + Bash-5.0 is the final version for which there will be an individual + shopt option for the previous version. Users should use BBAASSHH__CCOOMMPPAATT on + bash-5.0 and later versions. + + The following table describes the behavior changes controlled by each + compatibility level setting. The ccoommppaatt_N_N tag is used as shorthand for + setting the compatibility level to _N_N using one of the following mecha- + nisms. For versions prior to bash-5.0, the compatibility level may be + set using the corresponding ccoommppaatt_N_N shopt option. For bash-4.3 and + later versions, the BBAASSHH__CCOOMMPPAATT variable is preferred, and it is re- + quired for bash-5.1 and later versions. + + ccoommppaatt3311 + +o quoting the rhs of the [[[[ command's regexp matching oper- + ator (=~) has no special effect + + ccoommppaatt3322 + +o interrupting a command list such as "a ; b ; c" causes + the execution of the next command in the list (in + bash-4.0 and later versions, the shell acts as if it re- + ceived the interrupt, so interrupting one command in a + list aborts the execution of the entire list) + + ccoommppaatt4400 + +o the << and >> operators to the [[[[ command do not consider + the current locale when comparing strings; they use ASCII + ordering. Bash versions prior to bash-4.1 use ASCII col- + lation and _s_t_r_c_m_p(3); bash-4.1 and later use the current + locale's collation sequence and _s_t_r_c_o_l_l(3). + + ccoommppaatt4411 + +o in _p_o_s_i_x mode, ttiimmee may be followed by options and still + be recognized as a reserved word (this is POSIX interpre- + tation 267) + +o in _p_o_s_i_x mode, the parser requires that an even number of + single quotes occur in the _w_o_r_d portion of a double- + quoted parameter expansion and treats them specially, so + that characters within the single quotes are considered + quoted (this is POSIX interpretation 221) + + ccoommppaatt4422 + +o the replacement string in double-quoted pattern substitu- + tion does not undergo quote removal, as it does in ver- + sions after bash-4.2 + +o in posix mode, single quotes are considered special when + expanding the _w_o_r_d portion of a double-quoted parameter + expansion and can be used to quote a closing brace or + other special character (this is part of POSIX interpre- + tation 221); in later versions, single quotes are not + special within double-quoted word expansions + + ccoommppaatt4433 + +o the shell does not print a warning message if an attempt + is made to use a quoted compound assignment as an argu- + ment to declare (declare -a foo='(1 2)'). Later versions + warn that this usage is deprecated + +o word expansion errors are considered non-fatal errors + that cause the current command to fail, even in posix + mode (the default behavior is to make them fatal errors + that cause the shell to exit) + +o when executing a shell function, the loop state + (while/until/etc.) is not reset, so bbrreeaakk or ccoonnttiinnuuee in + that function will break or continue loops in the calling + context. Bash-4.4 and later reset the loop state to pre- + vent this + + ccoommppaatt4444 + +o the shell sets up the values used by BBAASSHH__AARRGGVV and + BBAASSHH__AARRGGCC so they can expand to the shell's positional + parameters even if extended debugging mode is not enabled + +o a subshell inherits loops from its parent context, so + bbrreeaakk or ccoonnttiinnuuee will cause the subshell to exit. + Bash-5.0 and later reset the loop state to prevent the + exit + +o variable assignments preceding builtins like eexxppoorrtt and + rreeaaddoonnllyy that set attributes continue to affect variables + with the same name in the calling environment even if the + shell is not in posix mode + + ccoommppaatt5500 + +o Bash-5.1 changed the way $$RRAANNDDOOMM is generated to intro- + duce slightly more randomness. If the shell compatibility + level is set to 50 or lower, it reverts to the method + from bash-5.0 and previous versions, so seeding the ran- + dom number generator by assigning a value to RRAANNDDOOMM will + produce the same sequence as in bash-5.0 + +o If the command hash table is empty, bash versions prior + to bash-5.1 printed an informational message to that ef- + fect, even when producing output that can be reused as + input. Bash-5.1 suppresses that message when the --ll op- + tion is supplied. + +SSEEEE AALLSSOO + bash(1), sh(1) + + + +GNU Bash 5.0 2004 Apr 20 BASH_BUILTINS(1) diff --git a/bash-5.1/doc/builtins.1 b/bash-5.1/doc/builtins.1 new file mode 100644 index 0000000..4413c76 --- /dev/null +++ b/bash-5.1/doc/builtins.1 @@ -0,0 +1,24 @@ +.\" This is a hack to force bash builtins into the whatis database +.\" and to get the list of builtins to come up with the man command. +.\" +.\" 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 +.. +.TH BASH_BUILTINS 1 "2004 Apr 20" "GNU Bash 5.0" +.SH NAME +bash, :, ., [, alias, bg, bind, break, builtin, caller, +cd, command, compgen, complete, +compopt, continue, declare, dirs, disown, echo, enable, eval, exec, exit, +export, false, fc, fg, getopts, hash, help, history, jobs, kill, +let, local, logout, mapfile, popd, printf, pushd, pwd, read, +readonly, return, set, +shift, shopt, source, suspend, test, times, trap, true, type, typeset, +ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1) +.SH BASH BUILTIN COMMANDS +.nr zZ 1 +.so bash.1 +.SH SEE ALSO +bash(1), sh(1) diff --git a/bash-5.1/doc/builtins.ps b/bash-5.1/doc/builtins.ps new file mode 100644 index 0000000..ae11c54 --- /dev/null +++ b/bash-5.1/doc/builtins.ps @@ -0,0 +1,3318 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.22.4 +%%CreationDate: Wed Nov 18 15:13:06 2020 +%%DocumentNeededResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Symbol +%%+ font Courier +%%DocumentSuppliedResources: procset grops 1.22 4 +%%Pages: 26 +%%PageOrder: Ascend +%%DocumentMedia: Default 612 792 0 () () +%%Orientation: Portrait +%%EndComments +%%BeginDefaults +%%PageMedia: Default +%%EndDefaults +%%BeginProlog +%%BeginResource: procset grops 1.22 4 +%!PS-Adobe-3.0 Resource-ProcSet +/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 +DEFS/BPhook known{DEFS begin BPhook end}if +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}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 +/Fr{ +setrgbcolor fill +}bind def +/setcmykcolor where{ +pop +/Fk{ +setcmykcolor fill +}bind def +}if +/Fg{ +setgray fill +}bind def +/FL/fill load def +/LW/setlinewidth load def +/Cr/setrgbcolor load def +/setcmykcolor where{ +pop +/Ck/setcmykcolor load def +}if +/Cg/setgray load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne +2 index/UniqueID ne +and +{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 +/setpagedevice{}def +mark +}bind def +/PEND{ +cleartomark +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%EndProlog +%%BeginSetup +%%BeginFeature: *PageSize Default +<< /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice +%%EndFeature +%%IncludeResource: font Times-Roman +%%IncludeResource: font Times-Bold +%%IncludeResource: font Times-Italic +%%IncludeResource: font Symbol +%%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/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 -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S +(ME).219 E F0 .288(bash, :, ., [, alias, bg, bind, break, b)108 96 R +.287(uiltin, caller)-.2 F 2.787(,c)-.4 G .287 +(d, command, compgen, complete, compopt, continue, de-)-2.787 F .327 +(clare, dirs, diso)108 108 R .327(wn, echo, enable, e)-.25 F -.25(va) +-.25 G .327(l, e).25 F -.15(xe)-.15 G .327(c, e).15 F .327(xit, e)-.15 F +.327(xport, f)-.15 F .327(alse, fc, fg, getopts, hash, help, history)-.1 +F 2.827(,j)-.65 G .328(obs, kill,)-2.827 F .124(let, local, logout, map\ +\214le, popd, printf, pushd, pwd, read, readonly)108 120 R 2.624(,r)-.65 +G .124(eturn, set, shift, shopt, source, suspend,)-2.624 F 1.926(test, \ +times, trap, true, type, typeset, ulimit, umask, unalias, unset, w)108 +132 R 1.927(ait \255 bash b)-.1 F 1.927(uilt-in commands, see)-.2 F/F2 +10/Times-Bold@0 SF(bash)108 144 Q F0(\(1\))A F1 -.329(BA)72 160.8 S +(SH B).329 E(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .063 +(Unless otherwise noted, each b)108 172.8 R .062(uiltin command documen\ +ted in this section as accepting options preceded by)-.2 F F2108 +184.8 Q F0(accepts)3.077 E F23.077 E F0 .577 +(to signify the end of the options.)3.077 F(The)5.577 E F2(:)3.077 E F0 +(,)A F2(true)3.077 E F0(,)A F2(false)3.077 E F0 3.077(,a)C(nd)-3.077 E +F2(test)3.077 E F0(/)A F2([)A F0 -.2(bu)3.077 G .577 +(iltins do not accept options).2 F .462(and do not treat)108 196.8 R F2 +2.961 E F0(specially)2.961 E 5.461(.T)-.65 G(he)-5.461 E F2(exit) +2.961 E F0(,)A F2(logout)2.961 E F0(,)A F2 -.18(re)2.961 G(tur).18 E(n) +-.15 E F0(,)A F2(br)2.961 E(eak)-.18 E F0(,)A F2(continue)2.961 E F0(,)A +F2(let)2.961 E F0 2.961(,a)C(nd)-2.961 E F2(shift)2.961 E F0 -.2(bu) +2.961 G .461(iltins accept and).2 F .26(process ar)108 208.8 R .26 +(guments be)-.18 F .26(ginning with)-.15 F F22.76 E F0 .261 +(without requiring)2.76 F F22.761 E F0 5.261(.O)C .261(ther b) +-5.261 F .261(uiltins that accept ar)-.2 F .261(guments b)-.18 F .261 +(ut are not)-.2 F 1.154(speci\214ed as accepting options interpret ar) +108 220.8 R 1.154(guments be)-.18 F 1.154(ginning with)-.15 F F2 +3.654 E F0 1.154(as in)3.654 F -.25(va)-.4 G 1.154 +(lid options and require).25 F F23.654 E F0(to)3.654 E(pre)108 +232.8 Q -.15(ve)-.25 G(nt this interpretation.).15 E F2(:)108 250.8 Q F0 +([)2.5 E/F3 10/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef) +144 262.8 R .451(fect; the command does nothing be)-.25 F .452(yond e) +-.15 F(xpanding)-.15 E F3(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. The)144 274.8 R(return status is zero.)2.5 E F2(.)110.5 +291.6 Q F3(\214lename)6.666 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A +F2(sour)108 303.6 Q(ce)-.18 E F3(\214lename)2.5 E F0([)2.5 E F3(ar)A +(guments)-.37 E F0(])A 1.02(Read and e)144 315.6 R -.15(xe)-.15 G 1.02 +(cute commands from).15 F F3(\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.33(status of the last command e)144 327.6 R -.15(xe)-.15 G +1.331(cuted from).15 F F3(\214lename)5.741 E F0 6.331(.I).18 G(f)-6.331 +E F3(\214lename)5.741 E F0 1.331(does not contain a slash, \214le-)4.011 +F .489(names in)144 339.6 R/F4 9/Times-Bold@0 SF -.666(PA)2.989 G(TH) +-.189 E F0 .489(are used to \214nd the directory containing)2.739 F F3 +(\214lename)4.899 E F0 5.488(.T).18 G .488(he \214le searched for in) +-5.488 F F4 -.666(PA)2.988 G(TH)-.189 E F0 .832(need not be e)144 351.6 +R -.15(xe)-.15 G 3.332(cutable. When).15 F F2(bash)3.332 E F0 .832 +(is not in)3.332 F F3 .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 363.6 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 +/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F2(sour)3.481 E(cepath)-.18 +E F0 .981(option to the)3.481 F F2(shopt)3.481 E F0 -.2(bu)3.481 G .981 +(iltin command is turned of).2 F .981(f, the)-.25 F F4 -.666(PA)144 +375.6 S(TH)-.189 E F0 .112(is not searched.)2.362 F .112(If an)5.112 F +(y)-.15 E F3(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 F3 +(\214lename)144 387.6 Q F0 .485(is e)2.985 F -.15(xe)-.15 G 2.985 +(cuted. Otherwise).15 F .485(the positional parameters are unchanged.) +2.985 F .485(If the)5.485 F F22.985 E F0 .485(option is en-)2.985 +F(abled,)144 399.6 Q F2(sour)3.324 E(ce)-.18 E F0 .824(inherits an)3.324 +F 3.324(yt)-.15 G .824(rap on)-3.324 F F2(DEB)3.324 E(UG)-.1 E F0 3.324 +(;i)C 3.324(fi)-3.324 G 3.324(ti)-3.324 G 3.324(sn)-3.324 G .825(ot, an) +-3.324 F(y)-.15 E F2(DEB)3.325 E(UG)-.1 E F0 .825(trap string is sa) +3.325 F -.15(ve)-.2 G 3.325(da).15 G .825(nd re-)-3.325 F .817 +(stored around the call to)144 411.6 R F2(sour)3.317 E(ce)-.18 E F0 +3.317(,a)C(nd)-3.317 E F2(sour)3.317 E(ce)-.18 E F0 .817(unsets the) +3.317 F F2(DEB)3.317 E(UG)-.1 E F0 .817(trap while it e)3.317 F -.15(xe) +-.15 G 3.317(cutes. If).15 F F23.317 E F0(is)3.317 E 1.435 +(not set, and the sourced \214le changes the)144 423.6 R F2(DEB)3.935 E +(UG)-.1 E F0 1.435(trap, the ne)3.935 F 3.935(wv)-.25 G 1.435 +(alue is retained when)-4.185 F F2(sour)3.935 E(ce)-.18 E F0 3.763 +(completes. The)144 435.6 R 1.262 +(return status is the status of the last command e)3.763 F 1.262 +(xited within the script \(0 if no)-.15 F(commands are e)144 447.6 Q +-.15(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F3(\214lename)4.41 E +F0(is not found or cannot be read.)2.68 E F2(alias)108 464.4 Q F0([)2.5 +E F2A F0 2.5(][)C F3(name)-2.5 E F0([=)A F3(value)A F0 2.5(].)C +(..])-2.5 E F2(Alias)144 476.4 Q F0 2.724(with no ar)5.224 F 2.724 +(guments or with the)-.18 F F25.224 E F0 2.724 +(option prints the list of aliases in the form)5.224 F F2(alias)5.225 E +F3(name)144 488.4 Q F0(=)A F3(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 F3(name) +3.08 E F0(whose)144 500.4 Q F3(value)2.508 E F0 .009(is gi)2.508 F -.15 +(ve)-.25 G 2.509(n. A).15 F .009(trailing space in)2.509 F F3(value) +2.509 E F0 .009(causes the ne)2.509 F .009(xt w)-.15 F .009 +(ord to be check)-.1 F .009(ed for alias substi-)-.1 F .579 +(tution when the alias is e)144 512.4 R 3.079(xpanded. F)-.15 F .579 +(or each)-.15 F F3(name)3.079 E F0 .579(in the ar)3.079 F .579 +(gument list for which no)-.18 F F3(value)3.079 E F0 .578(is sup-)3.078 +F 1.313(plied, the name and v)144 524.4 R 1.314 +(alue of the alias is printed.)-.25 F F2(Alias)6.314 E F0 1.314 +(returns true unless a)3.814 F F3(name)3.814 E F0 1.314(is gi)3.814 F +-.15(ve)-.25 G 3.814(nf).15 G(or)-3.814 E +(which no alias has been de\214ned.)144 536.4 Q F2(bg)108 553.2 Q F0([) +2.5 E F3(jobspec)A F0(...])2.5 E .745(Resume each suspended job)144 +565.2 R F3(jobspec)3.245 E F0 .745 +(in the background, as if it had been started with)3.245 F F2(&)3.244 E +F0 5.744(.I)C(f)-5.744 E F3(job-)4.984 E(spec)144 577.2 Q F0 .671 +(is not present, the shell')3.481 F 3.171(sn)-.55 G .672(otion of the) +-3.171 F F3(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F2 +(bg)5.672 E F3(jobspec)4.912 E F0 .672(returns 0 unless run)3.482 F .419 +(when job control is disabled or)144 589.2 R 2.919(,w)-.4 G .419 +(hen run with job control enabled, an)-2.919 F 2.918(ys)-.15 G +(peci\214ed)-2.918 E F3(jobspec)2.918 E F0 -.1(wa)2.918 G 2.918(sn).1 G +(ot)-2.918 E(found or w)144 601.2 Q(as started without job control.)-.1 +E F2(bind)108 618 Q F0([)2.5 E F2A F3 -.1(ke)2.5 G(ymap)-.2 E F0 +2.5(][)C F2(\255lpsvPSVX)-2.5 E F0(])A F2(bind)108 630 Q F0([)2.5 E F2 +A F3 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F2-2.5 E F3 +(function)2.5 E F0 2.5(][)C F2-2.5 E F3(function)2.5 E F0 2.5(][)C +F2-2.5 E F3 -.1(ke)2.5 G(yseq)-.2 E F0(])A F2(bind)108 642 Q F0([) +2.5 E F2A F3 -.1(ke)2.5 G(ymap)-.2 E F0(])A F22.5 E F3 +(\214lename)2.5 E F2(bind)108 654 Q F0([)2.5 E F2A F3 -.1(ke)2.5 G +(ymap)-.2 E F0(])A F22.5 E F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 +(shell\255command)A F2(bind)108 666 Q F0([)2.5 E F2A F3 -.1(ke)2.5 +G(ymap)-.2 E F0(])A F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 +(function\255name)A F2(bind)108 678 Q F0([)2.5 E F2A F3 -.1(ke)2.5 +G(ymap)-.2 E F0(])A F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 -.37(re)C +(adline\255command).37 E F0 .238(Display current)144 690 R F2 -.18(re) +2.738 G(adline).18 E F0 -.1(ke)2.738 G 2.738(ya)-.05 G .239 +(nd function bindings, bind a k)-2.738 F .539 -.15(ey s)-.1 H .239 +(equence to a).15 F F2 -.18(re)2.739 G(adline).18 E F0 .239(function or) +2.739 F .476(macro, or set a)144 702 R F2 -.18(re)2.976 G(adline).18 E +F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F +.475(gument is a command as it w)-.18 F .475(ould appear in)-.1 F F3 +(.inputr)144.23 714 Q(c)-.37 E F0 2.967(,b).31 G .467 +(ut each binding or command must be passed as a separate ar)-3.167 F +.468(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 +(re\255read\255init\255\214le'. Options,)144 726 R(if supplied, ha)2.5 E +.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E(GNU Bash 5.0)72 +768 Q(2004 Apr 20)149.565 E(1)203.725 E 0 Cg EP +%%Page: 2 2 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q/F2 10 +/Times-Italic@0 SF -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 96 Q F2 -.1(ke) +5.159 G(ymap)-.2 E F0 2.659(as the k)5.349 F -.15(ey)-.1 G 2.658 +(map to be af).15 F 2.658(fected by the subsequent bindings.)-.25 F +(Acceptable)7.658 E F2 -.1(ke)180 108 S(ymap)-.2 E F0 3.192(names are) +5.882 F F2 3.192(emacs, emacs\255standar)5.692 F 3.193 +(d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E +(vi\255command)180 120 Q F0 4.09(,a)C(nd)-4.09 E F2(vi\255insert)4.38 E +F0(.).68 E F2(vi)6.589 E F0 1.589(is equi)4.089 F -.25(va)-.25 G 1.589 +(lent to).25 F F2(vi\255command)4.089 E F0(\()4.089 E F2(vi\255mo)A(ve) +-.1 E F0 1.589(is also a syn-)4.089 F(on)180 132 Q(ym\);)-.15 E F2 +(emacs)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2 +(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1144 144 Q F0 +(List the names of all)180 144 Q F1 -.18(re)2.5 G(adline).18 E F0 +(functions.)2.5 E F1144 156 Q F0(Display)180 156 Q 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 168 Q +F0(List current)180 168 Q F1 -.18(re)2.5 G(adline).18 E F0 +(function names and bindings.)2.5 E F1144 180 Q F0(Display)180 180 +Q 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 192 S 2.5(yt).1 G +(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 204 Q F0 +(Display)180 204 Q 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 216 Q F0(Display)180 216 Q 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 228 Q F0(List current)180 228 Q 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 240 Q F2(\214lename)2.5 E F0(Read k)180 252 Q +.3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A F1 +144 264 Q F2(function)2.5 E F0(Query about which k)180 276 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 288 Q F2(function)2.5 E F0 +(Unbind all k)180 300 Q -.15(ey)-.1 G 2.5(sb).15 G(ound to the named) +-2.5 E F2(function)2.5 E F0(.)A F1144 312 Q F2 -.1(ke)2.5 G(yseq) +-.2 E F0(Remo)180 324 Q .3 -.15(ve a)-.15 H .3 -.15(ny c).15 H +(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(.)A F1144 +336 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2(shell\255command)A F0(Cause) +180 348 Q F2(shell\255command)4.325 E F0 1.825(to be e)4.325 F -.15(xe) +-.15 G 1.825(cuted whene).15 F -.15(ve)-.25 G(r).15 E F2 -.1(ke)4.325 G +(yseq)-.2 E F0 1.825(is entered.)4.325 F(When)6.825 E F2(shell\255com-) +4.325 E(mand)180 360 Q F0 1.764(is e)4.264 F -.15(xe)-.15 G 1.765 +(cuted, the shell sets the).15 F/F3 9/Times-Bold@0 SF(READLINE_LINE) +4.265 E F0 -.25(va)4.015 G 1.765(riable to the contents of the).25 F F1 +-.18(re)180 372 S(adline).18 E F0 .375(line b)2.875 F(uf)-.2 E .375 +(fer and the)-.25 F F3(READLINE_POINT)2.875 E F0(and)2.625 E F3 +(READLINE_MARK)2.875 E F0 -.25(va)2.625 G .375(riables to the).25 F +1.185(current location of the insertion point and the sa)180 384 R -.15 +(ve)-.2 G 3.686(di).15 G 1.186(nsertion point \(the mark\), respec-) +-3.686 F(ti)180 396 Q -.15(ve)-.25 G(ly).15 E 5.702(.I)-.65 G 3.202(ft) +-5.702 G .702(he e)-3.202 F -.15(xe)-.15 G .702 +(cuted command changes the v).15 F .701(alue of an)-.25 F 3.201(yo)-.15 +G(f)-3.201 E F3(READLINE_LINE)3.201 E/F4 9/Times-Roman@0 SF(,)A F3 +(READ-)2.951 E(LINE_POINT)180 408 Q F4(,)A F0(or)3.58 E F3 +(READLINE_MARK)3.83 E F4(,)A F0 1.33(those ne)3.58 F 3.83(wv)-.25 G +1.331(alues will be re\215ected in the editing)-4.08 F(state.)180 420 Q +F1144 432 Q F0 .83(List all k)180 432 R 1.13 -.15(ey s)-.1 H .829 +(equences bound to shell commands and the associated commands in a for) +.15 F(-)-.2 E(mat that can be reused as input.)180 444 Q(The return v) +144 460.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 477.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054 +(Exit from within a)144 489.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/F5 10/Symbol SF2.555 +E F0(1.)2.555 E(If)144 501.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)144 +513.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 +(bu)108 530.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 542.4 Q .77 +(ecute the speci\214ed shell b)-.15 F .77(uiltin, passing it)-.2 F F2 +(ar)3.601 E(guments)-.37 E F0 3.271(,a).27 G .771(nd return its e)-3.271 +F .771(xit status.)-.15 F .771(This is useful)5.771 F .616 +(when de\214ning a function whose name is the same as a shell b)144 +554.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144 +566.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 578.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(caller)108 595.2 Q F0([)2.5 E F2 -.2(ex)C(pr) +.2 E F0(])A .254(Returns the conte)144 607.2 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.753 E F0(or)2.753 E F1(sour)144 619.2 Q +(ce)-.18 E F0 -.2(bu)2.824 G 2.824(iltins\). W).2 F(ithout)-.4 E F2 -.2 +(ex)2.824 G(pr).2 E F0(,)A F1(caller)2.824 E F0 .324 +(displays the line number and source \214lename of the current)2.824 F +.254(subroutine call.)144 631.2 R .254(If a non-ne)5.254 F -.05(ga)-.15 +G(ti).05 E .554 -.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 .253 +(displays the line number)2.753 F 2.753(,s)-.4 G(ub-)-2.753 E 1.327(rou\ +tine name, and source \214le corresponding to that position in the curr\ +ent e)144 643.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001 +(This e)144 655.2 R .001(xtra information may be used, for e)-.15 F .001 +(xample, to print a stack trace.)-.15 F(The current frame is frame)5 E +3.019(0. The)144 667.2 R .519(return v)3.019 F .519 +(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .52 +(cuting a subroutine call or).15 F F2 -.2(ex)3.02 G(pr).2 E F0 .52 +(does not corre-)3.02 F(spond to a v)144 679.2 Q +(alid position in the call stack.)-.25 E F1(cd)108 696 Q F0([)2.5 E F1 +A F0(|[)A F1A F0([)2.5 E F1A F0(]] [\255@]] [)A F2 +(dir)A F0(])A .322(Change the current directory to)144 708 R F2(dir) +2.822 E F0 5.322(.i)C(f)-5.322 E F2(dir)2.822 E F0 .321 +(is not supplied, the v)2.822 F .321(alue of the)-.25 F F3(HOME)2.821 E +F0 .321(shell v)2.571 F .321(ariable is)-.25 F 1.035(the def)144 720 R +3.535(ault. An)-.1 F 3.535(ya)-.15 G 1.035(dditional ar)-3.535 F 1.035 +(guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.) +3.535 F 1.036(The v)6.035 F(ariable)-.25 E F3(CDP)3.536 E -.855(AT)-.666 +G(H).855 E F0(de\214nes)3.286 E(GNU Bash 5.0)72 768 Q(2004 Apr 20) +149.565 E(2)203.725 E 0 Cg EP +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E .827 +(the search path for the directory containing)144 84 R/F1 10 +/Times-Italic@0 SF(dir)3.676 E F0 3.326(:e).73 G .826 +(ach directory name in)-3.326 F/F2 9/Times-Bold@0 SF(CDP)3.326 E -.855 +(AT)-.666 G(H).855 E F0 .826(is searched for)3.076 F F1(dir)144 96 Q F0 +5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665 +(irectory names in).15 F F2(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 +.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665 +(ull directory name)-3.165 F(in)144 108 Q F2(CDP)3.102 E -.855(AT)-.666 +G(H).855 E F0 .602(is the same as the current directory)2.852 F 3.102 +(,i)-.65 G .602(.e., `)-3.102 F(`)-.74 E/F3 10/Times-Bold@0 SF(.)A F0 +-.74('')C 5.602(.I).74 G(f)-5.602 E F1(dir)3.451 E F0(be)3.831 E .601 +(gins with a slash \(/\), then)-.15 F F2(CD-)3.101 E -.666(PA)144 120 S +(TH)-.189 E F0 1.003(is not used.)3.253 F(The)6.003 E F33.503 E F0 +1.003(option causes)3.503 F F3(cd)3.503 E F0 1.003(to use the ph)3.503 F +1.003(ysical directory structure by resolving)-.05 F .123 +(symbolic links while tra)144 132 R -.15(ve)-.2 G(rsing).15 E F1(dir) +2.623 E F0 .123(and before processing instances of)2.623 F F1(..)2.623 E +F0(in)2.623 E F1(dir)2.623 E F0 .123(\(see also the)2.623 F F3 +2.623 E F0(op-)2.622 E .429(tion to the)144 144 R F3(set)2.929 E F0 -.2 +(bu)2.929 G .429(iltin command\); the).2 F F32.929 E F0 .43 +(option forces symbolic links to be follo)2.929 F .43(wed by resolving) +-.25 F .473(the link after processing instances of)144 156 R F1(..)2.973 +E F0(in)2.973 E F1(dir)2.973 E F0 5.473(.I)C(f)-5.473 E F1(..)2.973 E F0 +.473(appears in)2.973 F F1(dir)2.972 E F0 2.972(,i)C 2.972(ti)-2.972 G +2.972(sp)-2.972 G .472(rocessed by remo)-2.972 F .472(ving the)-.15 F +.948(immediately pre)144 168 R .948(vious pathname component from)-.25 F +F1(dir)3.448 E F0 3.448(,b)C .948(ack to a slash or the be)-3.448 F .948 +(ginning of)-.15 F F1(dir)3.448 E F0 5.948(.I)C(f)-5.948 E(the)144 180 Q +F32.868 E F0 .368(option is supplied with)2.868 F F32.868 E +F0 2.868(,a)C .368(nd the current w)-2.868 F .368 +(orking directory cannot be successfully deter)-.1 F(-)-.2 E .612 +(mined after a successful directory change,)144 192 R F3(cd)3.112 E F0 +.612(will return an unsuccessful status.)3.112 F .613(On systems that) +5.612 F .354(support it, the)144 204 R F32.854 E F0 .354 +(option presents the e)2.854 F .354(xtended attrib)-.15 F .354 +(utes associated with a \214le as a directory)-.2 F 5.353(.A)-.65 G(n) +-5.353 E(ar)144 216 Q .072(gument of)-.18 F F32.572 E F0 .072 +(is con)2.572 F -.15(ve)-.4 G .072(rted to).15 F F2($OLDPWD)2.572 E F0 +.072(before the directory change is attempted.)2.322 F .072 +(If a non-empty)5.072 F .055(directory name from)144 228 R F2(CDP)2.555 +E -.855(AT)-.666 G(H).855 E F0 .055(is used, or if)2.305 F F32.555 E +F0 .055(is the \214rst ar)2.555 F .054 +(gument, and the directory change is suc-)-.18 F .168 +(cessful, the absolute pathname of the ne)144 240 R 2.668(ww)-.25 G .168 +(orking directory is written to the standard output.)-2.768 F(The)5.168 +E(return v)144 252 Q(alue is true if the directory w)-.25 E +(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F3(command)108 +268.8 Q F0([)2.5 E F3(\255pVv)A F0(])A F1(command)2.5 E F0([)2.5 E F1 +(ar)A(g)-.37 E F0(...])2.5 E(Run)144 280.8 Q F1(command)2.765 E F0(with) +3.335 E F1(ar)2.895 E(gs)-.37 E F0 .065 +(suppressing the normal shell function lookup.)2.835 F .064(Only b)5.064 +F .064(uiltin commands or)-.2 F .501(commands found in the)144 292.8 R +F2 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G +3.002(cuted. If).15 F(the)3.002 E F33.002 E F0 .502(option is gi) +3.002 F -.15(ve)-.25 G .502(n, the search for).15 F F1(command)3.202 E +F0(is)3.772 E .4(performed using a def)144 304.8 R .4(ault v)-.1 F .4 +(alue for)-.25 F F2 -.666(PA)2.9 G(TH)-.189 E F0 .399 +(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) +5.399 E .174(either the)144 316.8 R F32.674 E F0(or)2.674 E F3 +2.674 E F0 .175(option is supplied, a description of)2.674 F F1 +(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F32.675 E +F0 .175(option causes)2.675 F 3.318(as)144 328.8 S .818(ingle w)-3.318 F +.817(ord indicating the command or \214lename used to in)-.1 F -.2(vo) +-.4 G -.1(ke).2 G F1(command)3.617 E F0 .817(to be displayed; the)4.087 +F F3144 340.8 Q F0 .249(option produces a more v)2.749 F .249 +(erbose description.)-.15 F .249(If the)5.249 F F32.749 E F0(or) +2.749 E F32.75 E F0 .25(option is supplied, the e)2.75 F .25 +(xit status)-.15 F 1.005(is 0 if)144 352.8 R F1(command)3.705 E F0 -.1 +(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004 +(If neither option is supplied and an error occurred or)6.005 F F1 +(command)144.2 364.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599 +(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599 +(xit status of the)-.15 F F3(command)4.099 E F0 -.2(bu)144 376.8 S +(iltin is the e).2 E(xit status of)-.15 E F1(command)2.7 E F0(.).77 E F3 +(compgen)108 393.6 Q F0([)2.5 E F1(option)A F0 2.5(][)C F1(wor)-2.5 E(d) +-.37 E F0(])A .013(Generate possible completion matches for)144 405.6 R +F1(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F1(option)2.513 +E F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981 +(accepted by the)144 417.6 R F3(complete)3.481 E F0 -.2(bu)3.481 G .981 +(iltin with the e).2 F .981(xception of)-.15 F F33.481 E F0(and) +3.481 E F33.481 E F0 3.481(,a)C .982(nd write the matches to the) +-3.481 F .131(standard output.)144 429.6 R .131(When using the)5.131 F +F32.631 E F0(or)2.631 E F32.631 E F0 .131(options, the v) +2.631 F .13(arious shell v)-.25 F .13(ariables set by the program-)-.25 +F(mable completion f)144 441.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 465.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 +477.6 R(If)5.02 E F1(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) +2.52 F(those completions matching)144 489.6 Q F1(wor)2.5 E(d)-.37 E F0 +(will be displayed.)2.5 E(The return v)144 513.6 Q +(alue is true unless an in)-.25 E -.25(va)-.4 G +(lid option is supplied, or no matches were generated.).25 E F3 +(complete)108 530.4 Q F0([)2.5 E F3(\255abcdefgjksuv)A F0 2.5(][)C F3 +-2.5 E F1(comp-option)2.5 E F0 2.5(][)C F3(\255DEI)-2.5 E F0 2.5 +(][)C F3-2.5 E F1(action)2.5 E F0 2.5(][)C F3-2.5 E F1 +(globpat)2.5 E F0 2.5(][)C F3-2.5 E F1(wor)2.5 E(dlist)-.37 E F0 +(])A([)144 542.4 Q F3A F1(function)2.5 E F0 2.5(][)C F3-2.5 +E F1(command)2.5 E F0 2.5(][)C F3-2.5 E F1(\214lterpat)2.5 E F0 +2.5(][)C F3-2.5 E F1(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F3 +-2.5 E F1(suf)2.5 E<8c78>-.18 E F0(])A F1(name)2.5 E F0([)2.5 E F1 +(name ...)A F0(])A F3(complete \255pr)108 554.4 Q F0([)2.5 E F3(\255DEI) +A F0 2.5(][)C F1(name)-2.5 E F0(...])2.5 E .633(Specify ho)144 566.4 R +3.133(wa)-.25 G -.18(rg)-3.133 G .633(uments to each).18 F F1(name)3.133 +E F0 .633(should be completed.)3.133 F .634(If the)5.634 F F33.134 +E F0 .634(option is supplied, or if no)3.134 F .14 +(options are supplied, e)144 578.4 R .139 +(xisting completion speci\214cations are printed in a w)-.15 F .139 +(ay that allo)-.1 F .139(ws them to be)-.25 F .31(reused as input.)144 +590.4 R(The)5.31 E F32.81 E F0 .31(option remo)2.81 F -.15(ve)-.15 +G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F1(name) +2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F1 +(name)2.81 E F0(s)A 1.208 +(are supplied, all completion speci\214cations.)144 602.4 R(The)6.208 E +F33.708 E F0 1.207(option indicates that other supplied options) +3.707 F .5(and actions should apply to the `)144 614.4 R(`def)-.74 E +(ault')-.1 E 3('c)-.74 G .5 +(ommand completion; that is, completion attempted on)-3 F 3.455(ac)144 +626.4 S .955(ommand for which no completion has pre)-3.455 F .955 +(viously been de\214ned.)-.25 F(The)5.955 E F33.455 E F0 .955 +(option indicates that)3.455 F .876 +(other supplied options and actions should apply to `)144 638.4 R +(`empty')-.74 E 3.376('c)-.74 G .876(ommand completion; that is, com-) +-3.376 F .448(pletion attempted on a blank line.)144 650.4 R(The)5.447 E +F32.947 E F0 .447 +(option indicates that other supplied options and actions)2.947 F .123 +(should apply to completion on the initial non-assignment w)144 662.4 R +.123(ord on the line, or after a command de-)-.1 F 1.021 +(limiter such as)144 674.4 R F3(;)3.521 E F0(or)3.521 E F3(|)3.521 E F0 +3.521(,w)C 1.021(hich is usually command name completion.)-3.521 F 1.02 +(If multiple options are sup-)6.02 F .707(plied, the)144 686.4 R F3 +3.207 E F0 .707(option tak)3.207 F .707(es precedence o)-.1 F -.15 +(ve)-.15 G(r).15 E F33.208 E F0 3.208(,a)C .708(nd both tak)-3.208 +F 3.208(ep)-.1 G .708(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F3 +3.208 E F0 5.708(.I)C 3.208(fa)-5.708 G 1.008 -.15(ny o)-3.208 H +(f).15 E F33.208 E F0(,)A F3144 698.4 Q F0 2.604(,o)C(r) +-2.604 E F32.604 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15 +G(ther)-2.603 E F1(name)2.603 E F0(ar)2.603 E .103 +(guments are ignored; these completions only apply to the)-.18 F +(case speci\214ed by the option.)144 710.4 Q(GNU Bash 5.0)72 768 Q +(2004 Apr 20)149.565 E(3)203.725 E 0 Cg EP +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E .152 +(The process of applying these completion speci\214cations when w)144 84 +R .153(ord completion is attempted is de-)-.1 F(scribed abo)144 96 Q .3 +-.15(ve u)-.15 H(nder).15 E/F1 10/Times-Bold@0 SF(Pr)2.5 E +(ogrammable Completion)-.18 E F0(.)A .556 +(Other options, if speci\214ed, ha)144 120 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 132 R 3.222(,t)-.65 G(he)-3.222 E F13.222 E F0(and)3.222 E F1 +3.222 E F0 .723(options\) should be quoted to protect them from e) +3.222 F(xpan-)-.15 E(sion before the)144 144 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 +156 Q/F2 10/Times-Italic@0 SF(comp-option)2.5 E F0(The)184 168 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 180 Q F2(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 +192 Q F0 .281(Perform the rest of the def)224 204 R(ault)-.1 E F1(bash) +2.781 E F0 .281(completions if the compspec generates no)2.781 F +(matches.)224 216 Q F1(default)184 228 Q F0 2.876(Use readline')224 228 +R 5.376(sd)-.55 G(ef)-5.376 E 2.875 +(ault \214lename completion if the compspec generates no)-.1 F(matches.) +224 240 Q F1(dir)184 252 Q(names)-.15 E F0(Perform directory name compl\ +etion if the compspec generates no matches.)224 264 Q F1(\214lenames)184 +276 Q F0 -.7(Te)224 288 S .137(ll readline that the compspec generates \ +\214lenames, so it can perform an).7 F 2.637<798c>-.15 G(le-)-2.637 E +.134(name\255speci\214c processing \(lik)224 300 R 2.634(ea)-.1 G .134 +(dding a slash to directory names, quoting spe-)-2.634 F .45 +(cial characters, or suppressing trailing spaces\).)224 312 R .45 +(Intended to be used with shell)5.45 F(functions.)224 324 Q F1(noquote) +184 336 Q F0 -.7(Te)224 336 S .814 +(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F +3.314(ya)-.15 G .814(re \214lenames \(quoting)-3.314 F +(\214lenames is the def)224 348 Q(ault\).)-.1 E F1(nosort)184 360 Q F0 +-.7(Te)224 360 S(ll readline not to sort the list of possible completio\ +ns alphabetically).7 E(.)-.65 E F1(nospace)184 372 Q F0 -.7(Te)224 372 S +.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 384 Q F1 +(plusdirs)184 396 Q F0 1.985(After an)224 396 R 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 408 R 3.084(ym)-.15 G .584 +(atches are added to the results of the other)-3.084 F(actions.)224 420 +Q F1144 432 Q F2(action)2.5 E F0(The)184 444 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 +456 Q F0(Alias names.)224 456 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(arrayv)184 468 Q(ar)-.1 E F0(Array v)224 480 Q +(ariable names.)-.25 E F1(binding)184 492 Q(Readline)224 492 Q F0 -.1 +(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 504 S(iltin) +.2 E F0(Names of shell b)224 504 Q(uiltin commands.)-.2 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 516 +Q F0(Command names.)224 528 Q(May also be speci\214ed as)5 E F12.5 +E F0(.)A F1(dir)184 540 Q(ectory)-.18 E F0(Directory names.)224 552 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 564 +Q F0(Names of disabled shell b)224 576 Q(uiltins.)-.2 E F1(enabled)184 +588 Q F0(Names of enabled shell b)224 588 Q(uiltins.)-.2 E F1(export)184 +600 Q F0(Names of e)224 600 Q(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 +612 Q F0(File names.)224 612 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(function)184 624 Q F0(Names of shell functions.)224 636 +Q F1(gr)184 648 Q(oup)-.18 E F0(Group names.)224 648 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(helptopic)184 +660 Q F0(Help topics as accepted by the)224 672 Q F1(help)2.5 E F0 -.2 +(bu)2.5 G(iltin.).2 E F1(hostname)184 684 Q F0(Hostnames, as tak)224 696 +Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF +(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 708 Q F0 +(Job names, if job control is acti)224 708 Q -.15(ve)-.25 G 5(.M).15 G +(ay also be speci\214ed as)-5 E F12.5 E F0(.)A(GNU Bash 5.0)72 768 +Q(2004 Apr 20)149.565 E(4)203.725 E 0 Cg EP +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF -.1(ke)184 84 S(yw).1 +E(ord)-.1 E F0(Shell reserv)224 96 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 108 Q +F0(Names of running jobs, if job control is acti)224 108 Q -.15(ve)-.25 +G(.).15 E F1(ser)184 120 Q(vice)-.1 E F0(Service names.)224 120 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 132 Q +F0 -1.11(Va)224 132 S(lid ar)1.11 E(guments for the)-.18 E F12.5 E +F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 +(shopt)184 144 Q F0(Shell option names as accepted by the)224 144 Q F1 +(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 156 Q F0 +(Signal names.)224 156 Q F1(stopped)184 168 Q F0 +(Names of stopped jobs, if job control is acti)224 168 Q -.15(ve)-.25 G +(.).15 E F1(user)184 180 Q F0(User names.)224 180 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 192 S +(riable).1 E F0(Names of all shell v)224 192 Q 2.5(ariables. May)-.25 F +(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 204 Q/F2 +10/Times-Italic@0 SF(command)2.5 E(command)184 216 Q F0 1.056(is e)3.556 +F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056 +(vironment, and its output is used as the possible)-.4 F(completions.) +184 228 Q F1144 240 Q F2(function)2.5 E F0 .113 +(The shell function)184 252 R F2(function)2.614 E F0 .114(is e)2.614 F +-.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614 +(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 264 R +-.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1 +($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816 +(he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 +(are being completed, the second ar)184 276 R 1.407(gument \()-.18 F F1 +($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407 +(ord being completed, and the)-.1 F .104(third ar)184 288 R .104 +(gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w) +-2.604 F .104(ord preceding the w)-.1 F .103 +(ord being completed on the current com-)-.1 F .101(mand line.)184 300 R +.101(When it \214nishes, the possible completions are retrie)5.101 F +-.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the) +-.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 312 Q(Y)-.828 E F0(array v)2.25 +E(ariable.)-.25 E F1144 324 Q F2(globpat)2.5 E F0 1.008 +(The pathname e)184 336 R 1.008(xpansion pattern)-.15 F F2(globpat)3.507 +E F0 1.007(is e)3.507 F 1.007(xpanded to generate the possible comple-) +-.15 F(tions.)184 348 Q F1144 360 Q F2(pr)2.5 E(e\214x)-.37 E(pr) +184 372 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 384 Q F1144 396 Q F2(suf)2.5 E +<8c78>-.18 E(suf)184 396 Q<8c78>-.18 E F0 +(is appended to each possible completion after all other options ha)2.5 +E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 408 Q F2(wor)2.5 E +(dlist)-.37 E F0(The)184 420 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14 +(is split using the characters in the)3.64 F F3(IFS)3.64 E F0 1.139 +(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F .98 +(each resultant w)184 432 R .98(ord is e)-.1 F 3.481(xpanded. Shell)-.15 +F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37 E F0 +3.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 444 Q .766 +(vide a mechanism for the w)-.15 F .765 +(ords to contain shell metacharacters or characters in the)-.1 F -.25 +(va)184 456 S 1.964(lue of).25 F F3(IFS)4.464 E/F4 9/Times-Roman@0 SF(.) +A F0 1.964 +(The possible completions are the members of the resultant list which) +6.464 F(match the w)184 468 Q(ord being completed.)-.1 E F1144 480 +Q F2(\214lterpat)2.5 E(\214lterpat)184 492 Q F0 .456 +(is a pattern as used for pathname e)2.956 F 2.956(xpansion. It)-.15 F +.455(is applied to the list of possible)2.956 F 1.596 +(completions generated by the preceding options and ar)184 504 R 1.596 +(guments, and each completion)-.18 F(matching)184 516 Q F2(\214lterpat) +3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704 +(rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 +(in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704 +(tes the pattern;).05 F(in this case, an)184 528 Q 2.5(yc)-.15 G +(ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E +-.15(ve)-.15 G(d.).15 E .466(The return v)144 544.8 R .466 +(alue is true unless an in)-.25 F -.25(va)-.4 G .466 +(lid option is supplied, an option other than).25 F F12.967 E F0 +(or)2.967 E F12.967 E F0 .467(is sup-)2.967 F 1.362 +(plied without a)144 556.8 R F2(name)3.862 E F0(ar)3.862 E 1.361 +(gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H +1.361(ompletion speci\214cation for a).15 F F2(name)144 568.8 Q F0 +(for which no speci\214cation e)2.5 E +(xists, or an error occurs adding a completion speci\214cation.)-.15 E +F1(compopt)108 585.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C +F1(\255DEI)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C +F2(name)-2.5 E F0(])A .447(Modify completion options for each)144 597.6 +R F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 +.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726 +(completion if no)144 609.6 R F2(name)3.226 E F0 3.226(sa)C .726 +(re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) +C .725(re gi)-3.225 F -.15(ve)-.25 G .725 +(n, display the completion options for).15 F(each)144 621.6 Q F2(name) +3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) +5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 +F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 633.6 Q F0 -.2(bu) +2.678 G .178(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he) +-5.178 E F12.678 E F0 .178 +(option indicates that other supplied options should apply to)2.678 F +1.227(the `)144 645.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ +mmand completion; that is, completion attempted on a command for which \ +no)-3.727 F 2.039(completion has pre)144 657.6 R 2.039 +(viously been de\214ned.)-.25 F(The)7.038 E F14.538 E F0 2.038 +(option indicates that other supplied options)4.538 F 1.538 +(should apply to `)144 669.6 R(`empty')-.74 E 4.038('c)-.74 G 1.539 +(ommand completion; that is, completion attempted on a blank line.) +-4.038 F(The)144 681.6 Q F13.02 E F0 .52(option indicates that ot\ +her supplied options should apply to completion on the initial non-)3.02 +F .867(assignment w)144 693.6 R .868 +(ord on the line, or after a command delimiter such as)-.1 F F1(;)3.368 +E F0(or)3.368 E F1(|)3.368 E F0 3.368(,w)C .868(hich is usually com-) +-3.368 F(mand name completion.)144 705.6 Q 1.388(The return v)144 729.6 +R 1.388(alue is true unless an in)-.25 F -.25(va)-.4 G 1.387 +(lid option is supplied, an attempt is made to modify the).25 F +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(5)203.725 E 0 Cg EP +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E(options for a)144 84 Q/F1 10/Times-Italic@0 +SF(name)2.5 E F0(for which no completion speci\214cation e)2.5 E +(xists, or an output error occurs.)-.15 E/F2 10/Times-Bold@0 SF +(continue)108 100.8 Q F0([)2.5 E F1(n)A F0(])A .85(Resume the ne)144 +112.8 R .85(xt iteration of the enclosing)-.15 F F2 -.25(fo)3.35 G(r).25 +E F0(,)A F2(while)3.351 E F0(,)A F2(until)3.351 E F0 3.351(,o)C(r)-3.351 +E F2(select)3.351 E F0 3.351(loop. If)3.351 F F1(n)3.711 E F0 .851 +(is speci\214ed, re-)3.591 F .204(sume at the)144 124.8 R F1(n)2.704 E +F0 .204(th enclosing loop.)B F1(n)5.564 E F0 .204(must be)2.944 F/F3 10 +/Symbol SF2.704 E F0 2.703(1. If)2.704 F F1(n)3.063 E F0 .203 +(is greater than the number of enclosing loops,)2.943 F 1.183 +(the last enclosing loop \(the `)144 136.8 R(`top-le)-.74 E -.15(ve)-.25 +G(l').15 E 3.683('l)-.74 G 1.183(oop\) is resumed.)-3.683 F 1.184 +(The return v)6.184 F 1.184(alue is 0 unless)-.25 F F1(n)3.684 E F0 +1.184(is not)3.684 F(greater than or equal to 1.)144 148.8 Q F2(declar) +108 165.6 Q(e)-.18 E F0([)2.5 E F2(\255aAfFgiIlnrtux)A F0 2.5(][)C F2 +-2.5 E F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C +(..])-2.5 E F2(typeset)108 177.6 Q F0([)2.5 E F2(\255aAfFgiIlnrtux)A F0 +2.5(][)C F2-2.5 E F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 +2.5(].)C(..])-2.5 E 1.265(Declare v)144 189.6 R 1.265 +(ariables and/or gi)-.25 F 1.565 -.15(ve t)-.25 H 1.265(hem attrib).15 F +3.765(utes. If)-.2 F(no)3.765 E F1(name)3.765 E F0 3.765(sa)C 1.265 +(re gi)-3.765 F -.15(ve)-.25 G 3.764(nt).15 G 1.264(hen display the v) +-3.764 F 1.264(alues of)-.25 F -.25(va)144 201.6 S 3.46(riables. The).25 +F F23.46 E F0 .96(option will display the attrib)3.46 F .96 +(utes and v)-.2 F .96(alues of each)-.25 F F1(name)3.82 E F0 5.96(.W).18 +G(hen)-5.96 E F23.46 E F0 .96(is used)3.46 F(with)144 213.6 Q F1 +(name)2.775 E F0(ar)2.775 E .275 +(guments, additional options, other than)-.18 F F22.775 E F0(and) +2.775 E F22.775 E F0 2.775(,a)C .274(re ignored.)-2.775 F(When) +5.274 E F22.774 E F0 .274(is supplied)2.774 F(without)144 225.6 Q +F1(name)3.789 E F0(ar)3.789 E 1.289(guments, it will display the attrib) +-.18 F 1.289(utes and v)-.2 F 1.29(alues of all v)-.25 F 1.29 +(ariables ha)-.25 F 1.29(ving the at-)-.2 F(trib)144 237.6 Q .38 +(utes speci\214ed by the additional options.)-.2 F .38 +(If no other options are supplied with)5.38 F F22.88 E F0(,)A F2 +(declar)2.88 E(e)-.18 E F0(will)2.88 E 1.106(display the attrib)144 +249.6 R 1.106(utes and v)-.2 F 1.106(alues of all shell v)-.25 F 3.606 +(ariables. The)-.25 F F23.606 E F0 1.107 +(option will restrict the display to)3.606 F .3(shell functions.)144 +261.6 R(The)5.3 E F22.8 E F0 .299(option inhibits the display of \ +function de\214nitions; only the function name)2.8 F 1.54(and attrib)144 +273.6 R 1.54(utes are printed.)-.2 F 1.54(If the)6.54 F F2(extdeb)4.04 E +(ug)-.2 E F0 1.54(shell option is enabled using)4.04 F F2(shopt)4.04 E +F0 4.04(,t)C 1.54(he source \214le)-4.04 F .648 +(name and line number where each)144 285.6 R F1(name)3.148 E F0 .648 +(is de\214ned are displayed as well.)3.148 F(The)5.648 E F23.148 E +F0 .648(option implies)3.148 F F2144 297.6 Q F0 5.836(.T)C(he) +-5.836 E F23.336 E F0 .836(option forces v)3.336 F .837 +(ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 +(ve)-.25 G 3.337(nw).15 G(hen)-3.337 E F2(de-)3.337 E(clar)144 309.6 Q +(e)-.18 E F0 .819(is e)3.319 F -.15(xe)-.15 G .819 +(cuted in a shell function.).15 F .818 +(It is ignored in all other cases.)5.818 F(The)5.818 E F23.318 E +F0 .818(option causes local)3.318 F -.25(va)144 321.6 S .693 +(riables to inherit the attrib).25 F .693(utes \(e)-.2 F .693(xcept the) +-.15 F F1(namer)3.194 E(ef)-.37 E F0(attrib)3.194 E .694(ute\) and v)-.2 +F .694(alue of an)-.25 F 3.194(ye)-.15 G .694(xisting v)-3.344 F +(ariable)-.25 E .82(with the same)144 333.6 R F1(name)3.32 E F0 .82 +(at a surrounding scope.)3.32 F .82(If there is no e)5.82 F .82 +(xisting v)-.15 F .82(ariable, the local v)-.25 F .82(ariable is)-.25 F +.379(initially unset.)144 345.6 R .379(The follo)5.379 F .379 +(wing options can be used to restrict output to v)-.25 F .38 +(ariables with the speci\214ed)-.25 F(attrib)144 357.6 Q(ute or to gi) +-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F2144 +369.6 Q F0(Each)180 369.6 Q F1(name)2.5 E F0(is an inde)2.5 E -.15(xe) +-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F2(Arrays)2.5 E +F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2144 381.6 Q F0(Each)180 +381.6 Q F1(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H +(rray v).15 E(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve) +-.15 G(\).).15 E F2144 393.6 Q F0(Use function names only)180 +393.6 Q(.)-.65 E F2144 405.6 Q F0 .558(The v)180 405.6 R .558 +(ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 +(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .557 +(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 417.6 Q F0(abo) +2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v) +-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F2144 429.6 Q +F0 .909(When the v)180 429.6 R .909(ariable is assigned a v)-.25 F .909 +(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 +G .91(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 441.6 R +(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2144 453.6 +Q F0(Gi)180 453.6 Q 1.62 -.15(ve e)-.25 H(ach).15 E F1(name)3.82 E F0 +(the)3.82 E F1(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 +(ute, making it a name reference to another v)-.2 F(ariable.)-.25 E .477 +(That other v)180 465.6 R .478(ariable is de\214ned by the v)-.25 F .478 +(alue of)-.25 F F1(name)2.978 E F0 5.478(.A)C .478 +(ll references, assignments, and at-)-5.478 F(trib)180 477.6 Q .782 +(ute modi\214cations to)-.2 F F1(name)3.282 E F0 3.282(,e)C .782 +(xcept those using or changing the)-3.432 F F23.281 E F0(attrib) +3.281 E .781(ute itself, are)-.2 F .808(performed on the v)180 489.6 R +.808(ariable referenced by)-.25 F F1(name)3.308 E F0 1.908 -.55('s v)D +3.308(alue. The).3 F .809(nameref attrib)3.309 F .809(ute cannot be)-.2 +F(applied to array v)180 501.6 Q(ariables.)-.25 E F2144 513.6 Q F0 +(Mak)180 513.6 Q(e)-.1 E F1(name)3.655 E F0 3.655(sr)C(eadonly)-3.655 E +6.154(.T)-.65 G 1.154(hese names cannot then be assigned v)-6.154 F +1.154(alues by subsequent as-)-.25 F(signment statements or unset.)180 +525.6 Q F2144 537.6 Q F0(Gi)180 537.6 Q .729 -.15(ve e)-.25 H(ach) +.15 E F1(name)2.929 E F0(the)2.929 E F1(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 F2 +(DEB)2.929 E(UG)-.1 E F0(and)2.93 E F2(RETURN)2.93 E F0 +(traps from the calling shell.)180 549.6 Q(The trace attrib)5 E +(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2144 +561.6 Q F0 .91(When the v)180 561.6 R .909(ariable is assigned a v)-.25 +F .909(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 +F -.15(ve)-.4 G .909(rted to upper).15 F(-)-.2 E 2.5(case. The)180 573.6 +R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2 +144 585.6 Q F0(Mark)180 585.6 Q F1(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 .143 +(Using `+' instead of `\255' turns of)144 602.4 R 2.643(ft)-.25 G .143 +(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .144 +(xceptions that)-.15 F F2(+a)2.644 E F0(and)2.644 E F2(+A)2.644 E F0 +.144(may not)2.644 F .579(be used to destro)144 614.4 R 3.079(ya)-.1 G +.579(rray v)-3.079 F .579(ariables and)-.25 F F2(+r)3.079 E F0 .579 +(will not remo)3.079 F .879 -.15(ve t)-.15 H .579(he readonly attrib).15 +F 3.079(ute. When)-.2 F .578(used in a)3.078 F(function,)144 626.4 Q F2 +(declar)3.543 E(e)-.18 E F0(and)3.543 E F2(typeset)3.543 E F0(mak)3.543 +E 3.543(ee)-.1 G(ach)-3.543 E F1(name)3.543 E F0 1.043 +(local, as with the)3.543 F F2(local)3.544 E F0 1.044 +(command, unless the)3.544 F F23.544 E F0 1.205 +(option is supplied.)144 638.4 R 1.205(If a v)6.205 F 1.205 +(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F1(value)A F0 3.705 +(,t)C 1.205(he v)-3.705 F 1.205(alue of the v)-.25 F 1.205 +(ariable is set to)-.25 F F1(value)144 650.4 Q F0 5.217(.W)C .217 +(hen using)-5.217 F F22.717 E F0(or)2.717 E F22.717 E F0 +.217(and the compound assignment syntax to create array v)2.717 F .218 +(ariables, addi-)-.25 F .882(tional attrib)144 662.4 R .882 +(utes do not tak)-.2 F 3.382(ee)-.1 G -.25(ff)-3.382 G .882 +(ect until subsequent assignments.).25 F .882(The return v)5.882 F .882 +(alue is 0 unless an)-.25 F(in)144 674.4 Q -.25(va)-.4 G .365(lid optio\ +n is encountered, an attempt is made to de\214ne a function using).25 F +/F5 10/Courier@0 SF .366(\255f foo=bar)2.866 F F0 2.866(,a)C 2.866(na) +-2.866 G(t-)-2.866 E .549(tempt is made to assign a v)144 686.4 R .549 +(alue to a readonly v)-.25 F .548 +(ariable, an attempt is made to assign a v)-.25 F .548(alue to an)-.25 F +1.748(array v)144 698.4 R 1.748 +(ariable without using the compound assignment syntax \(see)-.25 F F2 +(Arrays)4.249 E F0(abo)4.249 E -.15(ve)-.15 G 1.749(\), one of the).15 F +F1(names)144 710.4 Q F0 .359(is not a v)2.859 F .359(alid shell v)-.25 F +.359(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G +.359(eadonly status for a read-)-2.859 F 1.212(only v)144 722.4 R 1.213 +(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213 +(rray status for an array v)-3.713 F 1.213(ariable, or an attempt is) +-.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(6)203.725 E 0 Cg EP +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E(made to display a non-e)144 84 Q +(xistent function with)-.15 E/F1 10/Times-Bold@0 SF2.5 E F0(.)A F1 +(dirs [\255clpv] [+)108 100.8 Q/F2 10/Times-Italic@0 SF(n)A F1 2.5(][)C +-2.5 E F2(n)A F1(])A F0 -.4(Wi)144 112.8 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 124.8 R 1.238 +(Directories are added to the list with the)6.238 F F1(pushd)144 136.8 Q +F0 .928(command; the)3.428 F F1(popd)3.428 E F0 .928(command remo)3.428 +F -.15(ve)-.15 G 3.428(se).15 G .928(ntries from the list.)-3.428 F .928 +(The current directory is al-)5.928 F -.1(wa)144 148.8 S +(ys the \214rst directory in the stack.).1 E F1144 160.8 Q F0 +(Clears the directory stack by deleting all of the entries.)180 160.8 Q +F1144 172.8 Q F0 .881 +(Produces a listing using full pathnames; the def)180 172.8 R .882 +(ault listing format uses a tilde to denote)-.1 F(the home directory)180 +184.8 Q(.)-.65 E F1144 196.8 Q F0 +(Print the directory stack with one entry per line.)180 196.8 Q F1 +144 208.8 Q F0 .273(Print the directory stack with one entry per line, \ +pre\214xing each entry with its inde)180 208.8 R 2.772(xi)-.15 G 2.772 +(nt)-2.772 G(he)-2.772 E(stack.)180 220.8 Q F1(+)144 232.8 Q F2(n)A F0 +1.564(Displays the)180 232.8 R F2(n)4.064 E F0 1.565 +(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F1 +(dirs)4.065 E F0 1.565(when in)4.065 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E +(without options, starting with zero.)180 244.8 Q F1144 256.8 Q F2 +(n)A F0 1.194(Displays the)180 256.8 R 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 268.8 Q .257(The return v)144 +285.6 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 +(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) +-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) +.15 F(tory stack.)144 297.6 Q F1(diso)108 314.4 Q(wn)-.1 E F0([)2.5 E F1 +(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 +(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 326.4 S .122 +(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec) +4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H +2.622(obs. If).15 F F2(jobspec)4.362 E F0 .121(is not present, and)2.932 +F .096(neither the)144 338.4 R F12.596 E F0 .096(nor the)2.596 F +F12.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E +.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 +2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) +.15 F F2(jobspec)145.74 350.4 Q F0 .586(is not remo)3.396 F -.15(ve)-.15 +G 3.086(df).15 G .585(rom the table, b)-3.086 F .585(ut is mark)-.2 F +.585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .585 +(is not sent to the job if the)2.835 F .962(shell recei)144 362.4 R -.15 +(ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 +(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 +3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.359(jobs; the)144 374.4 R F1 +3.859 E F0 1.359(option without a)3.859 F F2(jobspec)5.599 E F0 +(ar)4.169 E 1.358(gument restricts operation to running jobs.)-.18 F +1.358(The return)6.358 F -.25(va)144 386.4 S(lue is 0 unless a).25 E F2 +(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E +F1(echo)108 403.2 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .424(Output the)144 415.2 R F2(ar)2.924 E(g)-.37 E +F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 +(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .308 +(error occurs.)144 427.2 R(If)5.308 E F12.808 E F0 .308 +(is speci\214ed, the trailing ne)2.808 F .308(wline is suppressed.)-.25 +F .307(If the)5.308 F F12.807 E F0 .307(option is gi)2.807 F -.15 +(ve)-.25 G .307(n, inter).15 F(-)-.2 E .197(pretation of the follo)144 +439.2 R .198(wing backslash-escaped characters is enabled.)-.25 F(The) +5.198 E F12.698 E F0 .198(option disables the in-)2.698 F .067 +(terpretation of these escape characters, e)144 451.2 R -.15(ve)-.25 G +2.567(no).15 G 2.567(ns)-2.567 G .067(ystems where the)-2.567 F 2.567 +(ya)-.15 G .067(re interpreted by def)-2.567 F 2.567(ault. The)-.1 F F1 +(xpg_echo)144 463.2 Q F0 .601 +(shell option may be used to dynamically determine whether or not)3.101 +F F1(echo)3.102 E F0 -.15(ex)3.102 G .602(pands these).15 F .659 +(escape characters by def)144 475.2 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.658 E F0(inter)3.158 E(-) +-.2 E(prets the follo)144 487.2 Q(wing escape sequences:)-.25 E F1(\\a) +144 499.2 Q F0(alert \(bell\))180 499.2 Q F1(\\b)144 511.2 Q F0 +(backspace)180 511.2 Q F1(\\c)144 523.2 Q F0(suppress further output)180 +523.2 Q F1(\\e)144 535.2 Q(\\E)144 547.2 Q F0(an escape character)180 +547.2 Q F1(\\f)144 559.2 Q F0(form feed)180 559.2 Q F1(\\n)144 571.2 Q +F0(ne)180 571.2 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 583.2 Q F0 +(carriage return)180 583.2 Q F1(\\t)144 595.2 Q F0(horizontal tab)180 +595.2 Q F1(\\v)144 607.2 Q F0 -.15(ve)180 607.2 S(rtical tab).15 E F1 +(\\\\)144 619.2 Q F0(backslash)180 619.2 Q F1(\\0)144 631.2 Q F2(nnn)A +F0(the eight-bit character whose v)180 631.2 Q(alue is the octal v)-.25 +E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1 +(\\x)144 643.2 Q F2(HH)A F0(the eight-bit character whose v)180 643.2 Q +(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 +(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 +(\\u)144 655.2 Q F2(HHHH)A F0 1.506 +(the Unicode \(ISO/IEC 10646\) character whose v)180 667.2 R 1.507 +(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) +4.007 E F0(\(one to four he)180 679.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 691.2 Q F2(HHHHHHHH)A F0 .548 +(the Unicode \(ISO/IEC 10646\) character whose v)180 703.2 R .547 +(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.047 E(HHH)180 715.2 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(7)203.725 E +0 Cg EP +%%Page: 8 8 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(enable)108 84 Q F0([) +2.5 E F1A F0 2.5(][)C F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 +E/F2 10/Times-Italic@0 SF(\214lename)2.5 E F0 2.5(][)C F2(name)-2.5 E F0 +(...])2.5 E .277(Enable and disable b)144 96 R .278 +(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 +(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834 +(the same name as a shell b)144 108 R .834(uiltin to be e)-.2 F -.15(xe) +-.15 G .834(cuted without specifying a full pathname, e).15 F -.15(ve) +-.25 G 3.333(nt).15 G(hough)-3.333 E .989 +(the shell normally searches for b)144 120 R .989 +(uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .99 +(is used, each)3.49 F F2(name)3.49 E F0 .99(is dis-)3.49 F .649 +(abled; otherwise,)144 132 R F2(names)3.148 E F0 .648(are enabled.)3.148 +F -.15(Fo)5.648 G 3.148(re).15 G .648(xample, to use the)-3.298 F F1 +(test)3.148 E F0 .648(binary found via the)3.148 F/F3 9/Times-Bold@0 SF +-.666(PA)3.148 G(TH)-.189 E F0(in-)2.898 E .538(stead of the shell b)144 +144 R .538(uiltin v)-.2 F .538(ersion, run)-.15 F/F4 10/Courier@0 SF +.538(enable -n test)3.038 F F0 5.538(.T)C(he)-5.538 E F13.038 E F0 +.539(option means to load the ne)3.038 F(w)-.25 E -.2(bu)144 156 S 1.365 +(iltin command).2 F F2(name)4.225 E F0 1.365(from shared object)4.045 F +F2(\214lename)5.775 E F0 3.865(,o).18 G 3.865(ns)-3.865 G 1.365 +(ystems that support dynamic loading.)-3.865 F(The)144 168 Q F1 +2.866 E F0 .366(option will delete a b)2.866 F .366(uiltin pre)-.2 F +.366(viously loaded with)-.25 F F12.867 E F0 5.367(.I)C 2.867(fn) +-5.367 G(o)-2.867 E F2(name)2.867 E F0(ar)2.867 E .367(guments are gi) +-.18 F -.15(ve)-.25 G .367(n, or).15 F .399(if the)144 180 R F1 +2.899 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 .398(guments, the)-.18 F .098(list consists of all enabled shell b)144 +192 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 +(is supplied, only disabled b)2.598 F .099(uiltins are printed.)-.2 F +(If)5.099 E F12.599 E F0 .906 +(is supplied, the list printed includes all b)144 204 R .905 +(uiltins, with an indication of whether or not each is en-)-.2 F 2.872 +(abled. If)144 216 R F12.872 E F0 .372 +(is supplied, the output is restricted to the POSIX)2.872 F F2(special) +2.873 E F0 -.2(bu)2.873 G 2.873(iltins. The).2 F .373(return v)2.873 F +.373(alue is)-.25 F 2.5(0u)144 228 S(nless a)-2.5 E F2(name)2.86 E F0 +(is not a shell b)2.68 E(uiltin or there is an error loading a ne)-.2 E +2.5(wb)-.25 G(uiltin from a shared object.)-2.7 E F1 -2.3 -.15(ev a)108 +244.8 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 256.8 +Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C .671 +(re read and concatenated together into a single command.)-3.171 F .67 +(This command is then read)5.67 F .478(and e)144 268.8 R -.15(xe)-.15 G +.478(cuted by the shell, and its e).15 F .478 +(xit status is returned as the v)-.15 F .479(alue of)-.25 F F1 -2.3 -.15 +(ev a)2.979 H(l).15 E F0 5.479(.I)C 2.979(ft)-5.479 G .479(here are no) +-2.979 F F2(ar)3.309 E(gs)-.37 E F0(,).27 E(or only null ar)144 280.8 Q +(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1 +(exec)108 297.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments) +-.37 E F0(]])A(If)144 309.6 Q F2(command)3.006 E F0 .306 +(is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805 +(wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E +(guments)-.37 E F0(become)3.075 E .176(the ar)144 321.6 R .176 +(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G +(he)-2.676 E F12.676 E F0 .176 +(option is supplied, the shell places a dash at the be)2.676 F .177 +(ginning of)-.15 F .48(the zeroth ar)144 333.6 R .48(gument passed to) +-.18 F F2(command)3.18 E F0 5.48(.T).77 G .48(his is what)-5.48 F F2(lo) +3.07 E(gin)-.1 E F0 .48(\(1\) does.).24 F(The)5.48 E F12.98 E F0 +.48(option causes)2.98 F F2(com-)3.18 E(mand)144 345.6 Q F0 .638 +(to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 +(vironment. If)-.4 F F13.138 E F0 .638 +(is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) +3.319 F 1.078(zeroth ar)144 357.6 R 1.077(gument to the e)-.18 F -.15 +(xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 +1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a) +.15 F(non-interacti)144 369.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F +.576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 +(shell option is enabled.)3.077 F .577(In that case, it returns f)5.577 +F(ail-)-.1 E 3.32(ure. An)144 381.6 R(interacti)3.32 E 1.12 -.15(ve s) +-.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 +F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82 +(xits uncondi-)-.15 F .287(tionally if)144 393.6 R F1(exec)2.787 E F0 +-.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287 +(is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak) +-2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,) +.25 F(and the return status is 0.)144 405.6 Q +(If there is a redirection error)5 E 2.5(,t)-.4 G +(he return status is 1.)-2.5 E F1(exit)108 422.4 Q F0([)2.5 E F2(n)A F0 +(])A .096(Cause the shell to e)144 422.4 R .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 434.4 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5 +E F0(is e)2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E +F1(export)108 451.2 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name) +-2.5 E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A F1(export \255p)108 463.2 Q +F0 .256(The supplied)144 475.2 R F2(names)3.117 E F0 .257(are mark)3.027 +F .257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257 +(vironment of subsequently e)-.4 F -.15(xe)-.15 G(cuted).15 E 2.627 +(commands. If)144 487.2 R(the)2.627 E F12.627 E F0 .127 +(option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F2(names)2.987 E +F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F2(names)2.987 E +F0 .127(are gi)2.897 F -.15(ve)-.25 G .126(n, or if the).15 F F1 +144 499.2 Q F0 .048(option is supplied, a list of names of all e)2.547 F +.048(xported v)-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1 +2.548 E F0 .048(option causes the)2.548 F -.15(ex)144 511.2 S +1.447(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 +(rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G +1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) +-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 523.2 S .741(lue of the v) +.25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 +(export)5.741 E F0 .742(returns an e)3.242 F .742 +(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is) +.25 F .032(encountered, one of the)144 535.2 R F2(names)2.532 E F0 .032 +(is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 +F F12.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0 +(that)2.711 E(is not a function.)144 547.2 Q F1(fc)108 564 Q F0([)2.5 E +F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 +<8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 +576 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 +(cmd)-2.5 E F0(])A .431 +(The \214rst form selects a range of commands from)144 588 R F2<8c72> +4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432 +(from the history list and displays or)3.612 F .142(edits and re-e)144 +600 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +.45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 +(may be speci\214ed as a string \(to locate the last command)3.321 F(be) +144 612 Q .31(ginning with that string\) or as a number \(an inde)-.15 F +2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga) +-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .071(is used as an of) +144 624 R .071(fset from the current command number\).)-.25 F .071 +(When listing, a)5.071 F F2<8c72>2.571 E(st)-.1 E F0(or)2.571 E F2(last) +2.571 E F0 .071(of 0 is equi)2.571 F -.25(va)-.25 G(-).25 E .653 +(lent to \2551 and \2550 is equi)144 636 R -.25(va)-.25 G .653 +(lent to the current command \(usually the).25 F F1(fc)3.153 E F0 .653 +(command\); otherwise 0 is)3.153 F(equi)144 648 Q -.25(va)-.25 G .242 +(lent to \2551 and \2550 is in).25 F -.25(va)-.4 G 2.742(lid. If).25 F +F2(last)2.832 E F0 .242 +(is not speci\214ed, it is set to the current command for list-)3.422 F +.092(ing \(so that)144 660 R F4 .092(fc \255l \25510)2.592 F F0 .093 +(prints the last 10 commands\) and to)2.592 F F2<8c72>4.503 E(st)-.1 E +F0 2.593(otherwise. If)3.273 F F2<8c72>4.503 E(st)-.1 E F0 .093 +(is not speci-)3.273 F(\214ed, it is set to the pre)144 672 Q +(vious command for editing and \25516 for listing.)-.25 E(The)144 696 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 708 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 720 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(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(8)203.725 E 0 Cg +EP +%%Page: 9 9 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E .63(the v)144 84 R .63(alue of the)-.25 F +/F1 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 F1(EDIT)3.131 E(OR) +-.162 E F0(if)2.881 E F1(FCEDIT)3.131 E F0 .631(is not set.)2.881 F .631 +(If nei-)5.631 F .006(ther v)144 96 R .006(ariable is set,)-.25 F/F2 10 +/Times-Italic@0 SF(vi)4.171 E F0 .005(is used.)4.171 F .005 +(When editing is complete, the edited commands are echoed and e)5.005 F +(x-)-.15 E(ecuted.)144 108 Q .788(In the second form,)144 132 R F2 +(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 +(cuted after each instance of).15 F F2(pat)3.288 E F0 .788 +(is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789 +E(mand)144 144 Q F0 .172(is interpreted the same as)2.672 F F2<8c72> +2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171 +(useful alias to use with this is)-2.5 F/F3 10/Courier@0 SF .171 +(r='fc \255s')2.671 F F0 2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E +(typing)144 156 Q F3 7.165(rc)3.665 G(c)-7.165 E F0 1.165 +(runs the last command be)3.665 F 1.166(ginning with)-.15 F F3(cc)3.666 +E F0 1.166(and typing)3.666 F F3(r)3.666 E F0(re-e)3.666 E -.15(xe)-.15 +G 1.166(cutes the last com-).15 F(mand.)144 168 Q .142 +(If the \214rst form is used, the return v)144 192 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 .454(specify history lines out of range.)144 204 R +.454(If the)5.454 F/F4 10/Times-Bold@0 SF2.954 E F0 .454 +(option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455 +(alue of the)-.25 F .788(last command e)144 216 R -.15(xe)-.15 G .788 +(cuted or f).15 F .787 +(ailure if an error occurs with the temporary \214le of commands.)-.1 F +.787(If the)5.787 F 1.135 +(second form is used, the return status is that of the command re-e)144 +228 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136 +(does not)4.406 F(specify a v)144 240 Q +(alid history line, in which case)-.25 E F4(fc)2.5 E F0(returns f)2.5 E +(ailure.)-.1 E F4(fg)108 256.8 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) +144 268.8 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413 +(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 +(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0 +1.413(is not present, the)4.223 F(shell')144 280.8 Q 3.116(sn)-.55 G +.616(otion of the)-3.116 F F2(curr)3.116 E .616(ent job)-.37 F F0 .617 +(is used.)3.116 F .617(The return v)5.617 F .617 +(alue is that of the command placed into the)-.25 F(fore)144 292.8 Q +.363(ground, or f)-.15 F .363 +(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 +(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 304.8 Q +F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0 +(speci\214es a job that w)2.81 E(as started without job control.)-.1 E +F4(getopts)108 321.6 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A 2.5 +(g.)-.37 G(..)-2.5 E F0(])A F4(getopts)144 333.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 345.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 357.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 .636 +(acters may not be used as option characters.)144 369.6 R .636 +(Each time it is in)5.636 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F4(getopts) +3.136 E F0 .636(places the ne)3.136 F .635(xt op-)-.15 F .029 +(tion in the shell v)144 381.6 R(ariable)-.25 E F2(name)2.889 E F0 2.529 +(,i).18 G(nitializing)-2.529 E F2(name)2.889 E F0 .029(if it does not e) +2.709 F .03(xist, and the inde)-.15 F 2.53(xo)-.15 G 2.53(ft)-2.53 G .03 +(he ne)-2.53 F .03(xt ar)-.15 F(gu-)-.18 E .066 +(ment to be processed into the v)144 393.6 R(ariable)-.25 E F1(OPTIND) +2.566 E/F5 9/Times-Roman@0 SF(.)A F1(OPTIND)4.566 E F0 .065 +(is initialized to 1 each time the shell or a)2.315 F .885 +(shell script is in)144 405.6 R -.2(vo)-.4 G -.1(ke).2 G 3.385(d. When) +.1 F .885(an option requires an ar)3.385 F(gument,)-.18 E F4(getopts) +3.385 E F0 .885(places that ar)3.385 F .885(gument into)-.18 F .567 +(the v)144 417.6 R(ariable)-.25 E F1(OPT)3.067 E(ARG)-.81 E F5(.)A F0 +.566(The shell does not reset)5.067 F F1(OPTIND)3.066 E F0 .566 +(automatically; it must be manually reset)2.816 F .389 +(between multiple calls to)144 429.6 R F4(getopts)2.889 E F0 .389 +(within the same shell in)2.889 F -.2(vo)-.4 G .39(cation if a ne).2 F +2.89(ws)-.25 G .39(et of parameters is to)-2.89 F(be used.)144 441.6 Q +2.044(When the end of options is encountered,)144 465.6 R F4(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 477.6 Q F0 +(is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G +(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0 +(is set to ?.)2.5 E F4(getopts)144 501.6 Q F0 .485 +(normally parses the positional parameters, b)2.985 F .485 +(ut if more ar)-.2 F .485(guments are supplied as)-.18 F F2(ar)3.315 E +(g)-.37 E F0 -.25(va)3.205 G(l-).25 E(ues,)144 513.6 Q F4(getopts)2.5 E +F0(parses those instead.)2.5 E F4(getopts)144 537.6 Q F0 .345 +(can report errors in tw)2.845 F 2.845(ow)-.1 G 2.845(ays. If)-2.945 F +.345(the \214rst character of)2.845 F F2(optstring)3.075 E F0 .345 +(is a colon,)3.065 F F2(silent)3.185 E F0 .345(error re-)3.525 F 1.668 +(porting is used.)144 549.6 R 1.668 +(In normal operation, diagnostic messages are printed when in)6.668 F +-.25(va)-.4 G 1.669(lid options or).25 F .394(missing option ar)144 +561.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F +(ariable)-.25 E F1(OPTERR)2.894 E F0 .394 +(is set to 0, no error messages)2.644 F(will be displayed, e)144 573.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 597.6 R +-.25(va)-.4 G .666(lid option is seen,).25 F F4(getopts)3.166 E F0 .667 +(places ? into)3.167 F F2(name)3.527 E F0 .667 +(and, if not silent, prints an error message)3.347 F .4(and unsets)144 +609.6 R F1(OPT)2.9 E(ARG)-.81 E F5(.)A F0(If)4.899 E F4(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 621.6 Q 1.241(If a required ar)144 +645.6 R 1.241(gument is not found, and)-.18 F F4(getopts)3.741 E F0 +1.241(is not silent, a question mark \()3.741 F F4(?).833 E F0 3.742 +(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F2(name)144.36 +657.6 Q F0(,).18 E F1(OPT)2.714 E(ARG)-.81 E F0 .213 +(is unset, and a diagnostic message is printed.)2.463 F(If)5.213 E F4 +(getopts)2.713 E F0 .213(is silent, then a colon \()2.713 F F4(:).833 E +F0(\)).833 E(is placed in)144 669.6 Q F2(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 F4 +(getopts)144 693.6 Q F0 .902 +(returns true if an option, speci\214ed or unspeci\214ed, is found.) +3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F +(options is encountered or an error occurs.)144 705.6 Q(GNU Bash 5.0)72 +768 Q(2004 Apr 20)149.565 E(9)203.725 E 0 Cg EP +%%Page: 10 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(hash)108 84 Q F0([) +2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E/F2 10/Times-Italic@0 SF +(\214lename)2.5 E F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 +E F0(])A .858(Each time)144 96 R F1(hash)3.358 E F0 .858(is in)3.358 F +-.2(vo)-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F +F2(name)3.718 E F0 .858(is determined by searching)3.538 F .956 +(the directories in)144 108 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 +.956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 +(viously-remembered pathname is discarded.)-.25 F .243(If the)144 120 R +F12.743 E F0 .243 +(option is supplied, no path search is performed, and)2.743 F F2 +(\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F .615 +(of the command.)144 132 R(The)5.615 E F13.115 E F0 .615 +(option causes the shell to for)3.115 F .615 +(get all remembered locations.)-.18 F(The)5.615 E F13.115 E F0 +(op-)3.115 E .294(tion causes the shell to for)144 144 R .294 +(get the remembered location of each)-.18 F F2(name)2.793 E F0 5.293(.I) +C 2.793(ft)-5.293 G(he)-2.793 E F12.793 E F0 .293 +(option is supplied,)2.793 F .028(the full pathname to which each)144 +156 R F2(name)2.528 E F0 .028(corresponds is printed.)2.528 F .028 +(If multiple)5.028 F F2(name)2.528 E F0(ar)2.528 E .028 +(guments are sup-)-.18 F .176(plied with)144 168 R F12.676 E F0 +2.676(,t)C(he)-2.676 E F2(name)2.676 E F0 .175 +(is printed before the hashed full pathname.)2.676 F(The)5.175 E F1 +2.675 E F0 .175(option causes output to)2.675 F .783 +(be displayed in a format that may be reused as input.)144 180 R .783 +(If no ar)5.783 F .783(guments are gi)-.18 F -.15(ve)-.25 G .783 +(n, or if only).15 F F13.283 E F0(is)3.283 E .807 +(supplied, information about remembered commands is printed.)144 192 R +.807(The return status is true unless a)5.807 F F2(name)144.36 204 Q F0 +(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.).25 +E F1(help)108 220.8 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2(pattern) +-2.5 E F0(])A .866(Display helpful information about b)144 232.8 R .867 +(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 .867 +(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 G +3.367(sd).15 G(etailed)-3.367 E .224(help on all commands matching)144 +244.8 R F2(pattern)3.974 E F0 2.723(;o).24 G .223 +(therwise help for all the b)-2.723 F .223 +(uiltins and shell control struc-)-.2 F(tures is printed.)144 256.8 Q F1 +144 268.8 Q F0(Display a short description of each)180 268.8 Q F2 +(pattern)2.5 E F1144 280.8 Q F0(Display the description of each) +180 280.8 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G +(ormat)-2.5 E F1144 292.8 Q F0 +(Display only a short usage synopsis for each)180 292.8 Q F2(pattern)2.5 +E F0(The return status is 0 unless no command matches)144 309.6 Q F2 +(pattern)3.75 E F0(.).24 E F1(history [)108 326.4 Q F2(n)A F1(])A +(history \255c)108 338.4 Q(history \255d)108 350.4 Q F2(of)2.5 E(fset) +-.18 E F1(history \255d)108 362.4 Q F2(start)2.5 E F0A F2(end)A F1 +(history \255anrw)108 374.4 Q F0([)2.5 E F2(\214lename)A F0(])A F1 +(history \255p)108 386.4 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 +(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 398.4 Q F2(ar)2.5 E(g) +-.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 +410.4 S .752 +(th no options, display the command history list with line numbers.).4 F +.752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 +G .381(been modi\214ed.)144 422.4 R .38(An ar)5.38 F .38(gument of)-.18 +F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 +(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 +/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 434.4 Q(T)-.855 E F0 .264 +(is set and not null, it is used as a format string for)2.514 F F2 +(strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02 +(ciated with each displayed history entry)144 446.4 R 6.019(.N)-.65 G +3.519(oi)-6.019 G(nterv)-3.519 E 1.019 +(ening blank is printed between the formatted)-.15 F .176 +(time stamp and the history line.)144 458.4 R(If)5.176 E F2(\214lename) +2.676 E F0 .176 +(is supplied, it is used as the name of the history \214le; if)2.676 F +(not, the v)144 470.4 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) +2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 482.4 Q F0 +(Clear the history list by deleting all the entries.)180 482.4 Q F1 +144 494.4 Q F2(of)2.5 E(fset)-.18 E F0 .39 +(Delete the history entry at position)180 506.4 R F2(of)2.889 E(fset) +-.18 E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne) +2.889 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.889(,i).15 G 2.889(ti) +-2.889 G 2.889(si)-2.889 G .389(nterpreted as relati)-2.889 F -.15(ve) +-.25 G .598(to one greater than the last history position, so ne)180 +518.4 R -.05(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599 +(ndices count back from the end).15 F(of the history)180 530.4 Q 2.5(,a) +-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G +(efers to the current)-2.5 E F1(history -d)2.5 E F0(command.)2.5 E F1 +144 542.4 Q F2(start)2.5 E F0A F2(end)A F0 .758 +(Delete the history entries between positions)180 554.4 R F2(start)3.258 +E F0(and)3.257 E F2(end)3.257 E F0 3.257(,i)C(nclusi)-3.257 E -.15(ve) +-.25 G 5.757(.P).15 G(ositi)-5.757 E 1.057 -.15(ve a)-.25 H .757(nd ne) +.15 F -.05(ga)-.15 G(-).05 E(ti)180 566.4 Q .3 -.15(ve v)-.25 H +(alues for)-.1 E F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0 +(are interpreted as described abo)2.5 E -.15(ve)-.15 G(.).15 E F1 +144 578.4 Q F0 .564(Append the `)180 578.4 R(`ne)-.74 E(w')-.25 E 3.064 +('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565 +(These are history lines entered since)5.564 F(the be)180 590.4 Q +(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E +(ut not already appended to the history \214le.)-.2 E F1144 602.4 +Q F0 .854(Read the history lines not already read from the history \214\ +le into the current history list.)180 602.4 R .772 +(These are lines appended to the history \214le since the be)180 614.4 R +.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E +(sion.)180 626.4 Q F1144 638.4 Q F0(Read the contents of the hist\ +ory \214le and append them to the current history list.)180 638.4 Q F1 +144 650.4 Q F0 +(Write the current history list to the history \214le, o)180 650.4 Q +-.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G +(ontents.)-2.5 E F1144 662.4 Q F0 .626 +(Perform history substitution on the follo)180 662.4 R(wing)-.25 E F2 +(ar)3.125 E(gs)-.37 E F0 .625(and display the result on the standard) +3.125 F 2.975(output. Does)180 674.4 R .475 +(not store the results in the history list.)2.975 F(Each)5.475 E F2(ar) +2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F +(normal history e)180 686.4 Q(xpansion.)-.15 E F1144 698.4 Q F0 +.363(Store the)180 698.4 R F2(ar)3.193 E(gs)-.37 E F0 .363 +(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362 +(he last command in the history list is)-5.363 F(remo)180 710.4 Q -.15 +(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 +(are added.)2.77 E .145(If the)144 727.2 R F3(HISTTIMEFORMA)2.645 E(T) +-.855 E F0 -.25(va)2.395 G .145 +(riable is set, the time stamp information associated with each history) +.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(10)198.725 E 0 Cg EP +%%Page: 11 11 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E .669 +(entry is written to the history \214le, mark)144 84 R .669 +(ed with the history comment character)-.1 F 5.668(.W)-.55 G .668 +(hen the history)-5.668 F .955(\214le is read, lines be)144 96 R .956 +(ginning with the history comment character follo)-.15 F .956 +(wed immediately by a digit)-.25 F .833 +(are interpreted as timestamps for the follo)144 108 R .833 +(wing history entry)-.25 F 5.832(.T)-.65 G .832(he return v)-5.832 F +.832(alue is 0 unless an in-)-.25 F -.25(va)144 120 S .168(lid option i\ +s encountered, an error occurs while reading or writing the history \ +\214le, an in).25 F -.25(va)-.4 G(lid).25 E/F1 10/Times-Italic@0 SF(of) +2.669 E(f-)-.18 E(set)144 132 Q F0(is supplied as an ar)2.5 E(gument to) +-.18 E/F2 10/Times-Bold@0 SF2.5 E F0 2.5(,o)C 2.5(rt)-2.5 G +(he history e)-2.5 E(xpansion supplied as an ar)-.15 E(gument to)-.18 E +F22.5 E F0 -.1(fa)2.5 G(ils.).1 E F2(jobs)108 148.8 Q F0([)2.5 E +F2(\255lnprs)A F0 2.5(][)C F1(jobspec)A F0(... ])2.5 E F2(jobs \255x)108 +160.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 172.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 184.8 Q F0 +(List process IDs in addition to the normal information.)180 184.8 Q F2 +144 196.8 Q F0 .194(Display information only about jobs that ha) +180 196.8 R .494 -.15(ve c)-.2 H .193(hanged status since the user w).15 +F .193(as last noti-)-.1 F(\214ed of their status.)180 208.8 Q F2 +144 220.8 Q F0(List only the process ID of the job')180 220.8 Q 2.5(sp) +-.55 G(rocess group leader)-2.5 E(.)-.55 E F2144 232.8 Q F0 +(Display only running jobs.)180 232.8 Q F2144 244.8 Q F0 +(Display only stopped jobs.)180 244.8 Q(If)144 261.6 Q F1(jobspec)4.553 +E F0 .313(is gi)3.123 F -.15(ve)-.25 G .313 +(n, output is restricted to information about that job).15 F 5.314(.T) +-.4 G .314(he return status is 0 unless)-5.314 F(an in)144 273.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 .395(If the)144 290.4 R F2 +2.895 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 .394 +(with the corre-)3.164 F(sponding process group ID, and e)144 302.4 Q +-.15(xe)-.15 G(cutes).15 E F1(command)2.7 E F0(passing it)3.27 E F1(ar) +2.83 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 +E F2(kill)108 319.2 Q F0([)2.5 E F2A F1(sigspec)2.5 E F0(|)2.5 E +F22.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 331.2 Q F0(|)A F2A F0([)2.5 E F1(sigspec)A F0(|) +2.5 E F1 -.2(ex)2.5 G(it_status).2 E F0(])A .017 +(Send the signal named by)144 343.2 R F1(sigspec)2.857 E F0(or)2.827 E +F1(signum)2.857 E F0 .017(to the processes named by)2.837 F F1(pid)3.767 +E F0(or)3.287 E F1(jobspec)4.257 E F0(.).31 E F1(sigspec)5.357 E F0(is) +2.828 E .319(either a case-insensiti)144 355.2 R .619 -.15(ve s)-.25 H +.319(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.819 E F0 +.318(\(with or without the)2.569 F F3(SIG)2.818 E F0 .318 +(pre\214x\) or a signal)2.568 F(number;)144 367.2 Q F1(signum)3.267 E F0 +.427(is a signal number)3.247 F 5.427(.I)-.55 G(f)-5.427 E F1(sigspec) +3.267 E F0 .427(is not present, then)3.237 F F3(SIGTERM)2.927 E F0 .427 +(is assumed.)2.677 F .428(An ar)5.427 F(-)-.2 E .314(gument of)144 379.2 +R F22.814 E F0 .314(lists the signal names.)2.814 F .314(If an) +5.314 F 2.814(ya)-.15 G -.18(rg)-2.814 G .314(uments are supplied when) +.18 F F22.814 E F0 .314(is gi)2.814 F -.15(ve)-.25 G .313 +(n, the names of).15 F .119(the signals corresponding to the ar)144 +391.2 R .119(guments are listed, and the return status is 0.)-.18 F(The) +5.12 E F1 -.2(ex)2.62 G(it_status).2 E F0(ar)2.62 E(-)-.2 E .8 +(gument to)144 403.2 R F23.3 E F0 .8 +(is a number specifying either a signal number or the e)3.3 F .799 +(xit status of a process termi-)-.15 F .962(nated by a signal.)144 415.2 +R(The)5.962 E F23.462 E F0 .962(option is equi)3.462 F -.25(va) +-.25 G .962(lent to).25 F F23.462 E F0(.)A F2(kill)5.962 E F0 .962 +(returns true if at least one signal w)3.462 F(as)-.1 E +(successfully sent, or f)144 427.2 Q(alse if an error occurs or an in) +-.1 E -.25(va)-.4 G(lid option is encountered.).25 E F2(let)108 444 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 +456 Q F1(ar)3.027 E(g)-.37 E F0 .197(is an arithmetic e)2.917 F .197 +(xpression to be e)-.15 F -.25(va)-.25 G .196(luated \(see).25 F F3 .196 +(ARITHMETIC EV)2.696 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo) +2.446 E -.15(ve)-.15 G 2.696(\). If).15 F(the last)144 468 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 484.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 +(.. | \255 ])-2.5 E -.15(Fo)144 496.8 S 2.541(re).15 G .041(ach ar) +-2.541 F .042(gument, a local v)-.18 F .042(ariable named)-.25 F F1 +(name)2.902 E F0 .042(is created, and assigned)2.722 F F1(value)2.832 E +F0 5.042(.T).18 G(he)-5.042 E F1(option)2.542 E F0 .042(can be)2.542 F +(an)144 508.8 Q 3.153(yo)-.15 G 3.153(ft)-3.153 G .653 +(he options accepted by)-3.153 F F2(declar)3.153 E(e)-.18 E F0 5.652(.W) +C(hen)-5.652 E F2(local)3.152 E F0 .652 +(is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 +520.8 Q F1(name)3.281 E F0 .421(to ha)3.101 F .721 -.15(ve a v)-.2 H +.422(isible scope restricted to that function and its children.).15 F +(If)5.422 E F1(name)2.922 E F0 .422(is \255, the set)2.922 F .51 +(of shell options is made local to the function in which)144 532.8 R F2 +(local)3.009 E F0 .509(is in)3.009 F -.2(vo)-.4 G -.1(ke).2 G .509 +(d: shell options changed us-).1 F 1.17(ing the)144 544.8 R F2(set)3.67 +E F0 -.2(bu)3.67 G 1.171 +(iltin inside the function are restored to their original v).2 F 1.171 +(alues when the function re-)-.25 F 3.381(turns. The)144 556.8 R .881 +(restore is ef)3.381 F .881(fected as if a series of)-.25 F F2(set)3.381 +E F0 .88(commands were e)3.38 F -.15(xe)-.15 G .88 +(cuted to restore the v).15 F(alues)-.25 E .787 +(that were in place before the function.)144 568.8 R -.4(Wi)5.788 G .788 +(th no operands,).4 F F2(local)3.288 E F0 .788(writes a list of local v) +3.288 F .788(ariables to)-.25 F .655(the standard output.)144 580.8 R +.654(It is an error to use)5.655 F F2(local)3.154 E F0 .654 +(when not within a function.)3.154 F .654(The return status is 0)5.654 F +(unless)144 592.8 Q F2(local)2.5 E F0(is used outside a function, an in) +2.5 E -.25(va)-.4 G(lid).25 E F1(name)2.86 E F0(is supplied, or)2.68 E +F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2(logout)108 +609.6 Q F0(Exit a login shell.)144 609.6 Q F2(map\214le)108 626.4 Q F0 +([)2.5 E F2A F1(delim)2.5 E F0 2.5(][)C F2-2.5 E F1(count) +2.5 E F0 2.5(][)C F2-2.5 E F1(origin)2.5 E F0 2.5(][)C F2 +-2.5 E F1(count)2.5 E F0 2.5(][)C F2-2.5 E F0 2.5(][)C F2 +-2.5 E F1(fd)2.5 E F0 2.5(][)C F2-2.5 E F1(callbac)2.5 E(k)-.2 E +F0 2.5(][)C F2-2.5 E F1(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E +(ay)-.15 E F0(])A F2 -.18(re)108 638.4 S(adarray).18 E F0([)2.5 E F2 +A F1(delim)2.5 E F0 2.5(][)C F2-2.5 E F1(count)2.5 E F0 2.5 +(][)C F2-2.5 E F1(origin)2.5 E F0 2.5(][)C F2-2.5 E F1 +(count)2.5 E F0 2.5(][)C F2-2.5 E F0 2.5(][)C F2-2.5 E F1 +(fd)2.5 E F0 2.5(][)C F2-2.5 E F1(callbac)2.5 E(k)-.2 E F0 2.5(][) +C F2-2.5 E F1(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E(ay)-.15 E F0 +(])A .158(Read lines from the standard input into the inde)144 650.4 R +-.15(xe)-.15 G 2.659(da).15 G .159(rray v)-2.659 F(ariable)-.25 E F1 +(arr)2.989 E(ay)-.15 E F0 2.659(,o).32 G 2.659(rf)-2.659 G .159 +(rom \214le descriptor)-2.659 F F1(fd)4.629 E F0 1.249(if the)144 662.4 +R F23.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 +F(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 +E F1(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,) +-6.248 F(ha)144 674.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F2144 686.4 Q F0 .91 +(The \214rst character of)180 686.4 R F1(delim)3.41 E F0 .911 +(is used to terminate each input line, rather than ne)3.41 F 3.411 +(wline. If)-.25 F F1(delim)180 698.4 Q F0(is the empty string,)2.5 E F2 +(map\214le)2.5 E F0(will terminate a line when it reads a NUL character) +2.5 E(.)-.55 E F2144 710.4 Q F0(Cop)180 710.4 Q 2.5(ya)-.1 G 2.5 +(tm)-2.5 G(ost)-2.5 E F1(count)2.7 E F0 2.5(lines. If)3.18 F F1(count) +2.5 E F0(is 0, all lines are copied.)2.5 E(GNU Bash 5.0)72 768 Q +(2004 Apr 20)149.565 E(11)198.725 E 0 Cg EP +%%Page: 12 12 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0(Be) +180 84 Q(gin assigning to)-.15 E/F2 10/Times-Italic@0 SF(arr)2.83 E(ay) +-.15 E F0(at inde)2.82 E(x)-.15 E F2(origin)2.73 E F0 5(.T).24 G(he def) +-5 E(ault inde)-.1 E 2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 96 +Q F0(Discard the \214rst)180 96 Q F2(count)2.5 E F0(lines read.)2.5 E F1 +144 108 Q F0(Remo)180 108 Q .3 -.15(ve a t)-.15 H(railing).15 E F2 +(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E(wline\) from each line read.) +-.25 E F1144 120 Q F0(Read lines from \214le descriptor)180 120 Q +F2(fd)2.5 E F0(instead of the standard input.)2.5 E F1144 132 Q F0 +(Ev)180 132 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E +F2(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 +(option speci\214es)2.5 E F2(quantum)2.75 E F0(.).32 E F1144 144 Q +F0(Specify the number of lines read between each call to)180 144 Q F2 +(callbac)2.7 E(k)-.2 E F0(.).67 E(If)144 160.8 Q F12.968 E F0 .467 +(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 +(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 +(callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 +(luated, it is sup-).25 F .261(plied the inde)144 172.8 R 2.761(xo)-.15 +G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be ass\ +igned and the line to be assigned to that element)-.15 F .275 +(as additional ar)144 184.8 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E +F0 .275(is e)2.775 F -.25(va)-.25 G .274 +(luated after the line is read b).25 F .274 +(ut before the array element is)-.2 F(assigned.)144 196.8 Q +(If not supplied with an e)144 213.6 Q(xplicit origin,)-.15 E F1 +(map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 +(before assigning to it.)2.5 E F1(map\214le)144 230.4 Q F0 .797 +(returns successfully unless an in)3.297 F -.25(va)-.4 G .797 +(lid option or option ar).25 F .797(gument is supplied,)-.18 F F2(arr) +3.297 E(ay)-.15 E F0 .798(is in-)3.298 F -.25(va)144 242.4 S +(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 +(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E +F1(popd)108 259.2 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 +2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 271.2 Q -.15(ve)-.15 G 2.8(se) +.15 G .3(ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299 +(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G +.299(he top directory from the)-2.799 F 1.478(stack, and performs a)144 +283.2 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 +(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479 +(uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15 +F(wing)-.25 E(meanings:)144 295.2 Q F1144 307.2 Q F0 .551 +(Suppresses the normal change of directory when remo)180 307.2 R .551 +(ving directories from the stack, so)-.15 F +(that only the stack is manipulated.)180 319.2 Q F1(+)144 331.2 Q F2(n)A +F0(Remo)180 331.2 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E +F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25 +F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 +343.2 S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0 +(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,) +-.65 E F3(popd +1)2.5 E F0(the second.)2.5 E F1144 355.2 Q F2(n)A F0 +(Remo)180 355.2 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0 +1.259(th entry counting from the right of the list sho)B 1.259(wn by) +-.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5 +(zero. F)180 367.2 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0 +(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 +E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144 +384 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1(dirs) +3.143 E F0 .644(is performed as well, and the return status is 0.)3.143 +F F1(popd)5.644 E F0 .416(returns f)144 396 R .416(alse if an in)-.1 F +-.25(va)-.4 G .415 +(lid option is encountered, the directory stack is empty).25 F 2.915 +(,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F +(tory stack entry is speci\214ed, or the directory change f)144 408 Q +(ails.)-.1 E F1(printf)108 424.8 Q F0([)2.5 E F1A F2(var)2.5 E F0 +(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .357 +(Write the formatted)144 436.8 R F2(ar)2.857 E(guments)-.37 E F0 .357 +(to the standard output under the control of the)2.857 F F2(format)2.858 +E F0 5.358(.T)C(he)-5.358 E F12.858 E F0(op-)2.858 E .714 +(tion causes the output to be assigned to the v)144 448.8 R(ariable)-.25 +E F2(var)3.214 E F0 .714(rather than being printed to the standard)3.214 +F(output.)144 460.8 Q(The)144 484.8 Q F2(format)3.017 E F0 .517(is a ch\ +aracter string which contains three types of objects: plain characters,\ + which are)3.017 F .704(simply copied to standard output, character esc\ +ape sequences, which are con)144 496.8 R -.15(ve)-.4 G .703 +(rted and copied to).15 F .036(the standard output, and format speci\ +\214cations, each of which causes printing of the ne)144 508.8 R .037 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 520.8 Q(gument)-.37 E F0 +5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2 +(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031 +E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 532.8 Q +(xtensions:)-.15 E F1(%b)144 544.8 Q F0(causes)180 544.8 Q F1(printf) +2.595 E F0 .096(to e)2.595 F .096 +(xpand backslash escape sequences in the corresponding)-.15 F F2(ar) +2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 556.8 Q(ay as) +-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 568.8 Q F0(causes)180 568.8 Q +F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E +(gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F +(input.)180 580.8 Q F1(%\()144 592.8 Q F2(datefmt)A F1(\)T)A F0(causes) +180 604.8 Q F1(printf)4.403 E F0 1.904 +(to output the date-time string resulting from using)4.403 F F2(datefmt) +4.404 E F0 1.904(as a format)4.404 F .381(string for)180 616.8 R F2 +(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) +2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 +(ger representing the number)-.15 F .292(of seconds since the epoch.)180 +628.8 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F +.293(alues may be used: \2551 represents the)-.25 F .694 +(current time, and \2552 represents the time the shell w)180 640.8 R +.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar) +3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 652.8 R -.15 +(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71 +G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25 +G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F +F1(printf)2.71 E F0(beha)180 664.8 Q(vior)-.2 E(.)-.55 E .902 +(The %b, %q, and %T directi)144 681.6 R -.15(ve)-.25 G 3.401(sa).15 G +.901(ll use the \214eld width and precision ar)-3.401 F .901 +(guments from the format)-.18 F .357(speci\214cation and write that man) +144 693.6 R 2.857(yb)-.15 G .358 +(ytes from \(or use that wide a \214eld for\) the e)-2.857 F .358 +(xpanded ar)-.15 F(gument,)-.18 E +(which usually contains more characters than the original.)144 705.6 Q +(Ar)144 722.4 Q .464(guments to non-string format speci\214ers are trea\ +ted as C constants, e)-.18 F .463(xcept that a leading plus or)-.15 F +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(12)198.725 E 0 Cg EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E 1.258(minus sign is allo)144 84 R 1.259 +(wed, and if the leading character is a single or double quote, the v) +-.25 F 1.259(alue is the)-.25 F(ASCII v)144 96 Q(alue of the follo)-.25 +E(wing character)-.25 E(.)-.55 E(The)144 112.8 Q/F1 10/Times-Italic@0 SF +(format)2.515 E F0 .015(is reused as necessary to consume all of the) +2.515 F F1(ar)2.515 E(guments)-.37 E F0 5.015(.I)C 2.514(ft)-5.015 G(he) +-2.514 E F1(format)2.514 E F0 .014(requires more)2.514 F F1(ar)2.514 E +(-)-.2 E(guments)144 124.8 Q F0 .565(than are supplied, the e)3.065 F +.566(xtra format speci\214cations beha)-.15 F .866 -.15(ve a)-.2 H 3.066 +(si).15 G 3.066(faz)-3.066 G .566(ero v)-3.066 F .566 +(alue or null string,)-.25 F(as appropriate, had been supplied.)144 +136.8 Q(The return v)5 E(alue is zero on success, non-zero on f)-.25 E +(ailure.)-.1 E/F2 10/Times-Bold@0 SF(pushd)108 153.6 Q F0([)2.5 E F2 +A F0 2.5(][)C(+)-2.5 E F1(n)A F0 2.5(][)C-2.5 E F1(n)A F0(])A +F2(pushd)108 165.6 Q F0([)2.5 E F2A F0 2.5(][)C F1(dir)-2.5 E F0 +(])A .64(Adds a directory to the top of the directory stack, or rotates\ + the stack, making the ne)144 177.6 R 3.139(wt)-.25 G .639(op of the) +-3.139 F .416(stack the current w)144 189.6 R .416(orking directory)-.1 +F 5.416(.W)-.65 G .416(ith no ar)-5.816 F(guments,)-.18 E F2(pushd)2.916 +E F0 -.15(ex)2.916 G .416(changes the top tw).15 F 2.917(od)-.1 G +(irectories)-2.917 E 1.625 +(and returns 0, unless the directory stack is empty)144 201.6 R 6.625 +(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 +-.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 213.6 Q +F2144 225.6 Q F0 1.811(Suppresses the normal change of directory \ +when rotating or adding directories to the)180 225.6 R +(stack, so that only the stack is manipulated.)180 237.6 Q F2(+)144 +249.6 Q F1(n)A F0 1.268(Rotates the stack so that the)180 249.6 R F1(n) +3.768 E F0 1.267(th directory \(counting from the left of the list sho)B +1.267(wn by)-.25 F F2(dirs)180 261.6 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E F2144 273.6 Q F1(n)A F0 +.92(Rotates the stack so that the)180 273.6 R F1(n)3.42 E F0 .92 +(th directory \(counting from the right of the list sho)B .92(wn by)-.25 +F F2(dirs)180 285.6 Q F0 2.5(,s)C(tarting with zero\) is at the top.) +-2.5 E F1(dir)144.35 297.6 Q F0(Adds)180 297.6 Q F1(dir)3.138 E F0 .288 +(to the directory stack at the top, making it the ne)3.518 F 2.787(wc) +-.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F +(if it had been supplied as the ar)180 309.6 Q(gument to the)-.18 E F2 +(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 326.4 R F2(pushd) +2.988 E F0 .488(command is successful, a)2.988 F F2(dirs)2.988 E F0 .488 +(is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F +F2(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 338.4 R F1(dir) +3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 +F F2(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846 +(stack is empty)144 350.4 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\ + directory stack element is speci\214ed, or the directory change to the) +-.15 F(speci\214ed ne)144 362.4 Q 2.5(wc)-.25 G(urrent directory f)-2.5 +E(ails.)-.1 E F2(pwd)108 379.2 Q F0([)2.5 E F2(\255LP)A F0(])A .845 +(Print the absolute pathname of the current w)144 391.2 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 +403.2 R F22.681 E F0 .181(option is supplied or the)2.681 F F2 +.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F2 +(set)2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264 +(enabled. If)144 415.2 R(the)3.264 E F23.264 E F0 .763 +(option is used, the pathname printed may contain symbolic links.)3.264 +F .763(The return)5.763 F .405(status is 0 unless an error occurs while\ + reading the name of the current directory or an in)144 427.2 R -.25(va) +-.4 G .405(lid op-).25 F(tion is supplied.)144 439.2 Q F2 -.18(re)108 +456 S(ad).18 E F0([)3.817 E F2(\255ers)A F0 3.817(][)C F2-3.817 E +F1(aname)3.817 E F0 3.817(][)C F2-3.817 E F1(delim)3.817 E F0 +3.817(][)C F2-3.817 E F1(te)3.817 E(xt)-.2 E F0 3.817(][)C F2 +-3.817 E F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2 +-3.816 E F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2-3.816 E +F1(pr)3.816 E(ompt)-.45 E F0 3.816(][)C F2-3.816 E F1(timeout) +3.816 E F0 3.816(][)C F2-3.816 E F1(fd)3.816 E F0(])A([)108 468 Q +F1(name)A F0(...])2.5 E .516(One line is read from the standard input, \ +or from the \214le descriptor)144 480 R F1(fd)3.016 E F0 .516 +(supplied as an ar)3.016 F .517(gument to)-.18 F(the)144 492 Q F2 +2.936 E F0 .436(option, split into w)2.936 F .435(ords as described abo) +-.1 F .735 -.15(ve u)-.15 H(nder).15 E F2 -.75(Wo)2.935 G .435 +(rd Splitting).75 F F0 2.935(,a)C .435(nd the \214rst w)-2.935 F .435 +(ord is as-)-.1 F .375(signed to the \214rst)144 504 R F1(name)3.235 E +F0 2.876(,t).18 G .376(he second w)-2.876 F .376(ord to the second)-.1 F +F1(name)3.236 E F0 2.876(,a).18 G .376(nd so on.)-2.876 F .376 +(If there are more w)5.376 F(ords)-.1 E .237 +(than names, the remaining w)144 516 R .237(ords and their interv)-.1 F +.237(ening delimiters are assigned to the last)-.15 F F1(name)3.096 E F0 +5.236(.I).18 G(f)-5.236 E .874(there are fe)144 528 R .874(wer w)-.25 F +.875(ords read from the input stream than names, the remaining names ar\ +e assigned)-.1 F .518(empty v)144 540 R 3.018(alues. The)-.25 F .518 +(characters in)3.018 F/F3 9/Times-Bold@0 SF(IFS)3.018 E F0 .518 +(are used to split the line into w)2.768 F .517 +(ords using the same rules the)-.1 F .026(shell uses for e)144 552 R +.026(xpansion \(described abo)-.15 F .326 -.15(ve u)-.15 H(nder).15 E F2 +-.75(Wo)2.526 G .026(rd Splitting).75 F F0 2.526(\). The)B .026 +(backslash character \()2.526 F F2(\\)A F0 2.527(\)m)C(ay)-2.527 E .489 +(be used to remo)144 564 R .788 -.15(ve a)-.15 H .788 -.15(ny s).15 H +.488(pecial meaning for the ne).15 F .488 +(xt character read and for line continuation.)-.15 F(Op-)5.488 E +(tions, if supplied, ha)144 576 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F2144 588 Q F1(aname)2.5 E F0 1.025(The w) +180 600 R 1.026(ords are assigned to sequential indices of the array v) +-.1 F(ariable)-.25 E F1(aname)3.856 E F0 3.526(,s).18 G 1.026 +(tarting at 0.)-3.526 F F1(aname)180.33 612 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 +F1(name)2.5 E F0(ar)2.5 E(guments are ignored.)-.18 E F2144 624 Q +F1(delim)2.5 E F0 .281(The \214rst character of)180 636 R F1(delim)2.781 +E F0 .281(is used to terminate the input line, rather than ne)2.781 F +2.78(wline. If)-.25 F F1(de-)2.78 E(lim)180 648 Q F0 +(is the empty string,)2.5 E F2 -.18(re)2.5 G(ad).18 E F0 +(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F2 +144 660 Q F0 .372 +(If the standard input is coming from a terminal,)180 660 R F2 -.18(re) +2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo)2.623 E +-.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E .218 +(to obtain the line.)180 672 R .218(Readline uses the current \(or def) +5.218 F .218(ault, if line editing w)-.1 F .218(as not pre)-.1 F +(viously)-.25 E(acti)180 684 Q -.15(ve)-.25 G 2.5(\)e).15 G +(diting settings, b)-2.5 E(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 +E(ault \214lename completion.)-.1 E F2144 696 Q F1(te)2.5 E(xt)-.2 +E F0(If)180 696 Q F2 -.18(re)2.715 G(adline).18 E F0 .216 +(is being used to read the line,)2.715 F F1(te)2.716 E(xt)-.2 E F0 .216 +(is placed into the editing b)2.716 F(uf)-.2 E .216(fer before edit-) +-.25 F(ing be)180 708 Q(gins.)-.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20) +149.565 E(13)198.725 E 0 Cg EP +%%Page: 14 14 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q/F2 10 +/Times-Italic@0 SF(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 96 S(ad) +.18 E F0 .323(returns after reading)2.823 F F2(nc)2.823 E(har)-.15 E(s) +-.1 E F0 .323(characters rather than w)2.823 F .323 +(aiting for a complete line of in-)-.1 F(put, b)180 108 Q +(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 +E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 +144 120 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 132 S(ad) +.18 E F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769 +E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27 +(aiting for a complete)-.1 F .275 +(line of input, unless EOF is encountered or)180 144 R F1 -.18(re)2.775 +G(ad).18 E F0 .274(times out.)2.774 F .274(Delimiter characters encoun-) +5.274 F 1.002 +(tered in the input are not treated specially and do not cause)180 156 R +F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc)3.503 +E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 168 R .608 +(The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0 +3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 180 S .669 +(riable is assigned e).25 F .669 +(xactly the characters read \(with the e)-.15 F .67 +(xception of backslash; see the)-.15 F F1180 192 Q F0(option belo) +2.5 E(w\).)-.25 E F1144 204 Q F2(pr)2.5 E(ompt)-.45 E F0(Display) +180 216 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161(on standard error)3.661 F +3.661(,w)-.4 G 1.161(ithout a trailing ne)-3.661 F 1.161 +(wline, before attempting to read)-.25 F(an)180 228 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 240 Q F0 .543(Backslash does not act as an escape character) +180 240 R 5.543(.T)-.55 G .544(he backslash is considered to be part of) +-5.543 F .493(the line.)180 252 R .493(In particular)5.493 F 2.993(,ab) +-.4 G(ackslash-ne)-2.993 E .493 +(wline pair may not then be used as a line continua-)-.25 F(tion.)180 +264 Q F1144 276 Q F0(Silent mode.)180 276 Q +(If input is coming from a terminal, characters are not echoed.)5 E F1 +144 288 Q F2(timeout)2.5 E F0(Cause)180 300 Q F1 -.18(re)2.928 G +(ad).18 E F0 .428(to time out and return f)2.928 F .428 +(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .561 +(ber of characters\) is not read within)180 312 R F2(timeout)3.061 E F0 +(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number) +3.061 F(with a fractional portion follo)180 324 Q +(wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E +.3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ +g input from a terminal, pipe, or other special \214le; it has no ef)180 +336 R .505(fect when reading)-.25 F .589(from re)180 348 R .589 +(gular \214les.)-.15 F(If)5.589 E F1 -.18(re)3.089 G(ad).18 E F0 .589 +(times out,)3.089 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve) +-.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .59 +(artial input read into the speci\214ed).15 F -.25(va)180 360 S(riable) +.25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27 +(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77 +F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 G +(ata.)-2.77 E 1.12(The e)180 372 R 1.12(xit status is 0 if input is a) +-.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor) +.25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 +384 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) +.15 E(xceeded.)-.15 E F1144 396 Q F2(fd)2.5 E F0 +(Read input from \214le descriptor)180 396 Q F2(fd)2.5 E F0(.)A .522 +(If no)144 412.8 R F2(names)3.382 E F0 .522 +(are supplied, the line read, without the ending delimiter b)3.292 F +.522(ut otherwise unmodi\214ed, is)-.2 F 1.186(assigned to the v)144 +424.8 R(ariable)-.25 E/F3 9/Times-Bold@0 SF(REPL)3.686 E(Y)-.828 E/F4 9 +/Times-Roman@0 SF(.)A F0 1.186(The e)5.686 F 1.186 +(xit status is zero, unless end-of-\214le is encountered,)-.15 F F1 -.18 +(re)3.687 G(ad).18 E F0 .961 +(times out \(in which case the status is greater than 128\), a v)144 +436.8 R .96(ariable assignment error \(such as as-)-.25 F .706 +(signing to a readonly v)144 448.8 R .706(ariable\) occurs, or an in) +-.25 F -.25(va)-.4 G .706(lid \214le descriptor is supplied as the ar) +.25 F .707(gument to)-.18 F F1144 460.8 Q F0(.)A F1 -.18(re)108 +477.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 2.5(][)C F1-2.5 E +F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E F0 2.5(].)C(..]) +-2.5 E .77(The gi)144 489.6 R -.15(ve)-.25 G(n).15 E F2(names)3.27 E F0 +.77(are mark)3.27 F .77(ed readonly; the v)-.1 F .77(alues of these)-.25 +F F2(names)3.63 E F0 .77(may not be changed by subse-)3.54 F 1.096 +(quent assignment.)144 501.6 R 1.096(If the)6.096 F F13.596 E F0 +1.097(option is supplied, the functions corresponding to the)3.596 F F2 +(names)3.597 E F0 1.097(are so)3.597 F(mark)144 513.6 Q 3.334(ed. The) +-.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 +(ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) +-3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) +-.25 E .776(ables to associati)144 525.6 R 1.076 -.15(ve a)-.25 H 3.276 +(rrays. If).15 F .777(both options are supplied,)3.276 F F13.277 E +F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F2(name) +3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 537.6 R -.15(ve) +-.25 G .521(n, or if the).15 F F13.021 E F0 .521 +(option is supplied, a list of all readonly names is printed.)3.021 F +.521(The other)5.521 F .295(options may be used to restrict the output \ +to a subset of the set of readonly names.)144 549.6 R(The)5.296 E F1 +2.796 E F0(option)2.796 E .786 +(causes output to be displayed in a format that may be reused as input.) +144 561.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 +573.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +-3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) +3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) +-5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) +144 585.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +-.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 +(is supplied with a)2.76 F F2(name)144.36 597.6 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 614.4 S(tur).18 E(n)-.15 +E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 626.4 R +-.15(xe)-.15 G .02(cuting and return the v).15 F .021 +(alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F +5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .597 +(the return status is that of the last command e)144 638.4 R -.15(xe) +-.15 G .596(cuted in the function body).15 F 5.596(.I)-.65 G(f)-5.596 E +F1 -.18(re)3.096 G(tur).18 E(n)-.15 E F0 .596(is e)3.096 F -.15(xe)-.15 +G(cuted).15 E .267(by a trap handler)144 650.4 R 2.767(,t)-.4 G .267 +(he last command used to determine the status is the last command e) +-2.767 F -.15(xe)-.15 G .268(cuted be-).15 F .02(fore the trap handler) +144 662.4 R 5.02(.I)-.55 G(f)-5.02 E F1 -.18(re)2.52 G(tur).18 E(n)-.15 +E F0 .02(is e)2.52 F -.15(xe)-.15 G .02(cuted during a).15 F F1(DEB)2.52 +E(UG)-.1 E F0 .02(trap, the last command used to deter)2.52 F(-)-.2 E +.885(mine the status is the last command e)144 674.4 R -.15(xe)-.15 G +.886(cuted by the trap handler before).15 F F1 -.18(re)3.386 G(tur).18 E +(n)-.15 E F0 -.1(wa)3.386 G 3.386(si).1 G -1.9 -.4(nv o)-3.386 H -.1(ke) +.4 G 3.386(d. If).1 F F1 -.18(re)144 686.4 S(tur).18 E(n)-.15 E F0 .628 +(is used outside a function, b)3.128 F .628(ut during e)-.2 F -.15(xe) +-.15 G .628(cution of a script by the).15 F F1(.)3.127 E F0(\()5.627 E +F1(sour)A(ce)-.18 E F0 3.127(\)c)C .627(ommand, it)-3.127 F .588 +(causes the shell to stop e)144 698.4 R -.15(xe)-.15 G .588 +(cuting that script and return either).15 F F2(n)3.448 E F0 .589 +(or the e)3.329 F .589(xit status of the last com-)-.15 F .326(mand e) +144 710.4 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F +.326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .325 +(is supplied, the return v)2.826 F .325(alue is)-.25 F 2.035 +(its least signi\214cant 8 bits.)144 722.4 R 2.035 +(The return status is non-zero if)7.035 F F1 -.18(re)4.536 G(tur).18 E +(n)-.15 E F0 2.036(is supplied a non-numeric)4.536 F(GNU Bash 5.0)72 768 +Q(2004 Apr 20)149.565 E(14)198.725 E 0 Cg EP +%%Page: 15 15 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E(ar)144 84 Q .706 +(gument, or is used outside a function and not during e)-.18 F -.15(xe) +-.15 G .705(cution of a script by).15 F/F1 10/Times-Bold@0 SF(.)3.205 E +F0(or)4.038 E F1(sour)3.205 E(ce)-.18 E F0 5.705(.A)C -.15(ny)-5.705 G +.365(command associated with the)144 96 R F1(RETURN)2.865 E F0 .365 +(trap is e)2.865 F -.15(xe)-.15 G .365(cuted before e).15 F -.15(xe)-.15 +G .366(cution resumes after the func-).15 F(tion or script.)144 108 Q F1 +(set)108 124.8 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C +F1-2.5 E/F2 10/Times-Italic@0 SF(option\255name)2.5 E F0 2.5(][)C +F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E F1(set)108 136.8 Q F0([)2.5 E F1 +(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E +F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.4(Wi)144 148.8 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 160.8 +R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 +(riables cannot be).25 F 2.947(reset. In)144 172.8 R F2 .447(posix mode) +2.947 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447 +(ariables are listed.)-.25 F .447 +(The output is sorted according to the current)5.447 F 3.53 +(locale. When)144 184.8 R 1.031(options are speci\214ed, the)3.53 F +3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An) +-.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F .585 +(after option processing are treated as v)144 196.8 R .584 +(alues for the positional parameters and are assigned, in or)-.25 F(-) +-.2 E(der)144 208.8 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 +E F0(,)A F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha) +-5 E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 +220.8 Q F0 1.377(Each v)184 220.8 R 1.377 +(ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve) +-.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.378(xport attrib)-.15 F +1.378(ute and)-.2 F(mark)184 232.8 Q(ed for e)-.1 E(xport to the en)-.15 +E(vironment of subsequent commands.)-.4 E F1144 244.8 Q F0 .132 +(Report the status of terminated background jobs immediately)184 244.8 R +2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E +(primary prompt.)184 256.8 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F1144 268.8 Q F0 +.087(Exit immediately if a)184 268.8 R F2(pipeline)2.587 E F0 .087 +(\(which may consist of a single)2.587 F F2 .088(simple command)2.588 F +F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 280.8 Q +F2 1.521(compound command)4.021 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF +1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e) +.15 F 1.521(xits with a non-zero status.)-.15 F .079 +(The shell does not e)184 292.8 R .079(xit if the command that f)-.15 F +.08(ails is part of the command list immediately)-.1 F(follo)184 304.8 Q +1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0 +-.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654 +(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv) +4.154 E(ed)-.15 E -.1(wo)184 316.8 S .581(rds, part of an).1 F 3.081(yc) +-.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1 +(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582 +(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 328.8 R +F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c) +-3.418 H .918(ommand in a pipeline b).15 F .917 +(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E +-.25(va)184 340.8 S .66(lue is being in).25 F -.15(ve)-.4 G .66 +(rted with).15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661 +(ompound command other than a subshell returns a)-3.161 F 1.113 +(non-zero status because a command f)184 352.8 R 1.112(ailed while)-.1 F +F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112 +(eing ignored, the shell does)-3.612 F .177(not e)184 364.8 R 2.677 +(xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678 +(fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 +(cuted before the shell e).15 F 2.678(xits. This)-.15 F .178 +(option applies to)2.678 F .618(the shell en)184 376.8 R .617 +(vironment and each subshell en)-.4 F .617(vironment separately \(see) +-.4 F F3 .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)184 388.8 R(ONMENT) +-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 +(\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 +(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 400.8 +Q .999(If a compound command or shell function e)184 418.8 R -.15(xe) +-.15 G .999(cutes in a conte).15 F .998(xt where)-.15 F F13.498 E +F0 .998(is being ig-)3.498 F .089(nored, none of the commands e)184 +430.8 R -.15(xe)-.15 G .089 +(cuted within the compound command or function body).15 F .503 +(will be af)184 442.8 R .503(fected by the)-.25 F F13.002 E F0 +.502(setting, e)3.002 F -.15(ve)-.25 G 3.002(ni).15 G(f)-3.002 E F1 +3.002 E F0 .502(is set and a command returns a f)3.002 F .502 +(ailure sta-)-.1 F 4.183(tus. If)184 454.8 R 4.183(ac)4.183 G 1.683 +(ompound command or shell function sets)-4.183 F F14.184 E F0 +1.684(while e)4.184 F -.15(xe)-.15 G 1.684(cuting in a conte).15 F(xt) +-.15 E(where)184 466.8 Q F13.154 E F0 .654 +(is ignored, that setting will not ha)3.154 F .953 -.15(ve a)-.2 H .953 +-.15(ny e).15 H -.25(ff).15 G .653(ect until the compound command).25 F +(or the command containing the function call completes.)184 478.8 Q F1 +144 490.8 Q F0(Disable pathname e)184 490.8 Q(xpansion.)-.15 E F1 +144 502.8 Q F0 .988(Remember the location of commands as the)184 +502.8 R 3.488(ya)-.15 G .988(re look)-3.488 F .988(ed up for e)-.1 F +-.15(xe)-.15 G 3.488(cution. This).15 F .988(is en-)3.488 F +(abled by def)184 514.8 Q(ault.)-.1 E F1144 526.8 Q F0 .514 +(All ar)184 526.8 R .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 538.8 Q F1 +144 550.8 Q F0 .148(Monitor mode.)184 550.8 R .148 +(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F +.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651 +(on systems that support it \(see)184 562.8 R F3 .651(JOB CONTR)3.151 F +(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .65 +(processes run in a separate)3.151 F .678(process group.)184 574.8 R +.679(When a background job completes, the shell prints a line containin\ +g its)5.678 F -.15(ex)184 586.8 S(it status.).15 E F1144 598.8 Q +F0 .653(Read commands b)184 598.8 R .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 +610.8 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 +E F1144 622.8 Q F2(option\255name)2.5 E F0(The)184 634.8 Q F2 +(option\255name)2.5 E F0(can be one of the follo)2.5 E(wing:)-.25 E F1 +(allexport)184 646.8 Q F0(Same as)224 658.8 Q F12.5 E F0(.)A F1 +(braceexpand)184 670.8 Q F0(Same as)224 682.8 Q F12.5 E F0(.)A F1 +(emacs)184 694.8 Q F0 .089 +(Use an emacs-style command line editing interf)224 694.8 R 2.589 +(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 +(when the shell is interacti)224 706.8 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 2.5(option. This)224 718.8 R(also af)2.5 E +(fects the editing interf)-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G +(ad \255e).18 E F0(.)A(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(15) +198.725 E 0 Cg EP +%%Page: 16 16 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(err)184 84 Q(exit) +-.18 E F0(Same as)224 84 Q F12.5 E F0(.)A F1(errtrace)184 96 Q F0 +(Same as)224 96 Q F12.5 E F0(.)A F1(functrace)184 108 Q F0 +(Same as)224 120 Q F12.5 E F0(.)A F1(hashall)184 132 Q F0(Same as) +224 132 Q F12.5 E F0(.)A F1(histexpand)184 144 Q F0(Same as)224 +156 Q F12.5 E F0(.)A F1(history)184 168 Q F0 .586 +(Enable command history)224 168 R 3.087(,a)-.65 G 3.087(sd)-3.087 G .587 +(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder).15 E/F2 9 +/Times-Bold@0 SF(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F3 9/Times-Roman@0 SF +(.)A F0 .587(This option is)5.087 F(on by def)224 180 Q +(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 +192 Q(eeof)-.18 E F0 1.657(The ef)224 204 R 1.657 +(fect is as if the shell command)-.25 F/F4 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 +216 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 228 S(yw).1 E(ord)-.1 E F0(Same as)224 240 Q F1 +2.5 E F0(.)A F1(monitor)184 252 Q F0(Same as)224 252 Q F12.5 +E F0(.)A F1(noclob)184 264 Q(ber)-.1 E F0(Same as)224 276 Q F12.5 +E F0(.)A F1(noexec)184 288 Q F0(Same as)224 288 Q F12.5 E F0(.)A +F1(noglob)184 300 Q F0(Same as)224 300 Q F12.5 E F0(.)A F1(nolog) +184 312 Q F0(Currently ignored.)224 312 Q F1(notify)184 324 Q F0 +(Same as)224 324 Q F12.5 E F0(.)A F1(nounset)184 336 Q F0(Same as) +224 336 Q F12.5 E F0(.)A F1(onecmd)184 348 Q F0(Same as)224 348 Q +F12.5 E F0(.)A F1(ph)184 360 Q(ysical)-.15 E F0(Same as)224 360 Q +F12.5 E F0(.)A F1(pipefail)184 372 Q F0 1.029 +(If set, the return v)224 372 R 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 384 +R 1.136 +(xit with a non-zero status, or zero if all commands in the pipeline) +-.15 F -.15(ex)224 396 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 408 Q F0 +2.09(Change the beha)224 408 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 +2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 +(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 +420 R/F5 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B F2 +1.212(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E .954 +(for a reference to a document that details ho)224 432 R 3.455(wp)-.25 G +.955(osix mode af)-3.455 F .955(fects bash')-.25 F 3.455(sb)-.55 G(e-) +-3.455 E(ha)224 444 Q(vior)-.2 E(.)-.55 E F1(pri)184 456 Q(vileged)-.1 E +F0(Same as)224 468 Q F12.5 E F0(.)A F1 -.1(ve)184 480 S(rbose).1 E +F0(Same as)224 480 Q F12.5 E F0(.)A F1(vi)184 492 Q F0 .209 +(Use a vi-style command line editing interf)224 492 R 2.709(ace. This) +-.1 F .209(also af)2.709 F .209(fects the editing in-)-.25 F(terf)224 +504 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 +(xtrace)184 516 Q F0(Same as)224 516 Q F12.5 E F0(.)A(If)184 534 Q +F13.052 E F0 .552(is supplied with no)3.052 F F5(option\255name) +3.053 E F0 3.053(,t)C .553(he v)-3.053 F .553 +(alues of the current options are printed.)-.25 F(If)5.553 E F1(+o)184 +546 Q F0 1.072(is supplied with no)3.572 F F5(option\255name)3.572 E F0 +3.572(,a)C 1.071(series of)-.001 F F1(set)3.571 E F0 1.071 +(commands to recreate the current)3.571 F +(option settings is displayed on the standard output.)184 558 Q F1 +144 570 Q F0 -.45(Tu)184 570 S 1.071(rn on).45 F F5(privile)4.821 E -.1 +(ge)-.4 G(d).1 E F0 3.572(mode. In)4.341 F 1.072(this mode, the)3.572 F +F2($ENV)3.572 E F0(and)3.322 E F2($B)3.572 E(ASH_ENV)-.27 E F0 1.072 +(\214les are not pro-)3.322 F 1.501 +(cessed, shell functions are not inherited from the en)184 582 R 1.5 +(vironment, and the)-.4 F F2(SHELLOPTS)4 E F3(,)A F2 -.27(BA)184 594 S +(SHOPTS).27 E F3(,)A F2(CDP)2.774 E -.855(AT)-.666 G(H).855 E F3(,)A F0 +(and)2.774 E F2(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G .524 +(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F +(vironment,)-.4 E .38(are ignored.)184 606 R .38 +(If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u) +-.25 H .379(ser \(group\) id not equal to the real).15 F .461 +(user \(group\) id, and the)184 618 R F12.961 E F0 .461 +(option is not supplied, these actions are tak)2.961 F .462 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 630 Q .695 -.15(ve u)-.25 H .395 +(ser id is set to the real user id.).15 F .395(If the)5.395 F F1 +2.895 E F0 .394(option is supplied at startup, the ef)2.895 F(fecti)-.25 +E -.15(ve)-.25 G .386(user id is not reset.)184 642 R -.45(Tu)5.386 G +.386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886 +F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F +(set to the real user and group ids.)184 654 Q F1144 666 Q F0 +(Exit after reading and e)184 666 Q -.15(xe)-.15 G(cuting one command.) +.15 E F1144 678 Q F0 -.35(Tr)184 678 S .044(eat unset v).35 F .044 +(ariables and parameters other than the special parameters "@" and "*" \ +as an)-.25 F .182(error when performing parameter e)184 690 R 2.682 +(xpansion. If)-.15 F -.15(ex)2.682 G .183 +(pansion is attempted on an unset v).15 F(ari-)-.25 E .746 +(able or parameter)184 702 R 3.246(,t)-.4 G .746 +(he shell prints an error message, and, if not interacti)-3.246 F -.15 +(ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184 +714 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(16)198.725 E 0 Cg EP +%%Page: 17 17 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 +(Print shell input lines as the)184 84 Q 2.5(ya)-.15 G(re read.)-2.5 E +F1144 96 Q F0 .315(After e)184 96 R .315(xpanding each)-.15 F/F2 +10/Times-Italic@0 SF .315(simple command)2.815 F F0(,)A F1 -.25(fo)2.815 +G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,)2.815 E F1 +(select)2.815 E F0(command,)2.815 E 1.236(or arithmetic)184 108 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 9/Times-Bold@0 SF(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 120 Q(xpanded ar)-.15 E(guments or associated w)-.18 +E(ord list.)-.1 E F1144 132 Q F0 1.205(The shell performs brace e) +184 132 R 1.205(xpansion \(see)-.15 F F1 1.205(Brace Expansion)3.705 F +F0(abo)3.705 E -.15(ve)-.15 G 3.706(\). This).15 F 1.206(is on by de-) +3.706 F -.1(fa)184 144 S(ult.).1 E F1144 156 Q F0 .214(If set,)184 +156 R F1(bash)2.714 E F0 .214(does not o)2.714 F -.15(ve)-.15 G .214 +(rwrite an e).15 F .214(xisting \214le with the)-.15 F F1(>)2.714 E F0 +(,)A F1(>&)2.714 E F0 2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213 +(redirection opera-)2.713 F 3.053(tors. This)184 168 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 180 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 192 Q F0 .104(If set, an)184 192 R 2.604(yt)-.15 G .104 +(rap on)-2.604 F F1(ERR)2.604 E F0 .103 +(is inherited by shell functions, command substitutions, and com-)2.604 +F .838(mands e)184 204 R -.15(xe)-.15 G .838(cuted in a subshell en).15 +F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839 +(trap is normally not inherited in)3.339 F(such cases.)184 216 Q F1 +144 228 Q F0(Enable)184 228 Q F1(!)3.032 E F0 .532 +(style history substitution.)5.532 F .531(This option is on by def)5.532 +F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 240 Q -.15 +(ve)-.25 G(.).15 E F1144 252 Q F0 .959 +(If set, the shell does not resolv)184 252 R 3.459(es)-.15 G .959 +(ymbolic links when e)-3.459 F -.15(xe)-.15 G .96 +(cuting commands such as).15 F F1(cd)3.46 E F0 1.453 +(that change the current w)184 264 R 1.453(orking directory)-.1 F 6.453 +(.I)-.65 G 3.952(tu)-6.453 G 1.452(ses the ph)-3.952 F 1.452 +(ysical directory structure in-)-.05 F 3.334(stead. By)184 276 R(def) +3.334 E(ault,)-.1 E F1(bash)3.334 E F0(follo)3.334 E .834 +(ws the logical chain of directories when performing com-)-.25 F +(mands which change the current directory)184 288 Q(.)-.65 E F1144 +300 Q F0 .89(If set, an)184 300 R 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 312 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 324 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 336 Q +F0 .401(If no ar)184 336 R .401(guments follo)-.18 F 2.901(wt)-.25 G +.401(his option, then the positional parameters are unset.)-2.901 F +(Otherwise,)5.4 E(the positional parameters are set to the)184 348 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 +360 Q F0 .796(Signal the end of options, cause all remaining)184 360 R +F2(ar)3.297 E(g)-.37 E F0 3.297(st)C 3.297(ob)-3.297 G 3.297(ea)-3.297 G +.797(ssigned to the positional pa-)-3.297 F 3.022(rameters. The)184 372 +R F13.022 E F0(and)3.022 E F13.022 E F0 .522 +(options are turned of)3.022 F 3.022(f. If)-.25 F .522(there are no) +3.022 F F2(ar)3.022 E(g)-.37 E F0 .521(s, the positional pa-)B +(rameters remain unchanged.)184 384 Q .425(The options are of)144 400.8 +R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 +(ault unless otherwise noted.)-.1 F .425 +(Using + rather than \255 causes these options)5.425 F .178 +(to be turned of)144 412.8 R 2.678(f. The)-.25 F .178 +(options can also be speci\214ed as ar)2.678 F .178(guments to an in) +-.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066 +(current set of options may be found in)144 424.8 R F1<24ad>2.566 E F0 +5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 +(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F +(is encountered.)144 436.8 Q F1(shift)108 453.6 Q F0([)2.5 E F2(n)A F0 +(])A .429(The positional parameters from)144 465.6 R F2(n)2.929 E F0 +.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.428 G +.428(rameters represented by the num-).15 F(bers)144 477.6 Q F1($#)2.582 +E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E F0A F2(n)A F0 .082 +(+1 are unset.)B F2(n)5.442 E F0 .082(must be a non-ne)2.822 F -.05(ga) +-.15 G(ti).05 E .383 -.15(ve n)-.25 H .083(umber less than or equal to) +.15 F F1($#)2.583 E F0 5.083(.I)C(f)-5.083 E F2(n)2.943 E F0 .06 +(is 0, no parameters are changed.)144 489.6 R(If)5.06 E F2(n)2.92 E F0 +.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F +(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56 +(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 501.6 R +.144(The return status is greater than zero if)5.143 F F2(n)3.004 E F0 +.144(is greater than)2.884 F F1($#)2.644 E F0 +(or less than zero; otherwise 0.)144 513.6 Q F1(shopt)108 530.4 Q F0([) +2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname) +-2.5 E F0(...])2.5 E -.8(To)144 542.4 S .64(ggle the v).8 F .639 +(alues of settings controlling optional shell beha)-.25 F(vior)-.2 E +5.639(.T)-.55 G .639(he settings can be either those)-5.639 F .374 +(listed belo)144 554.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H +2.874(ft).4 G(he)-2.874 E F12.874 E F0 .375 +(option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 +F F12.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2 +(bu)2.875 G .375(iltin com-).2 F 2.566(mand. W)144 566.4 R .066 +(ith no options, or with the)-.4 F F12.566 E F0 .066 +(option, a list of all settable options is displayed, with an in-)2.566 +F .074(dication of whether or not each is set; if)144 578.4 R F2 +(optnames)2.574 E F0 .074 +(are supplied, the output is restricted to those op-)2.574 F 3.105 +(tions. The)144 590.4 R F13.105 E F0 .605(option causes output to\ + be displayed in a form that may be reused as input.)3.105 F(Other)5.605 +E(options ha)144 602.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 614.4 Q F0(Enable \(set\) each)180 +614.4 Q F2(optname)2.5 E F0(.)A F1144 626.4 Q F0 +(Disable \(unset\) each)180 626.4 Q F2(optname)2.5 E F0(.)A F1144 +638.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ +tus indicates whether the)180 638.4 R F2(optname)2.504 E F0(is)2.504 E +.256(set or unset.)180 650.4 R .256(If multiple)5.256 F F2(optname)2.756 +E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G +(ith)-2.756 E F12.756 E F0 2.755(,t)C .255 +(he return status is zero if)-2.755 F(all)180 662.4 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E F1144 674.4 Q F0 +(Restricts the v)180 674.4 Q(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 .624(If either)144 691.2 R F1 +3.124 E F0(or)3.124 E F13.124 E F0 .624(is used with no) +3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124 +E F0(sho)3.124 E .624(ws only those options which are)-.25 F .984 +(set or unset, respecti)144 703.2 R -.15(ve)-.25 G(ly).15 E 5.984(.U) +-.65 G .984(nless otherwise noted, the)-5.984 F F1(shopt)3.484 E F0 .983 +(options are disabled \(unset\) by de-)3.483 F -.1(fa)144 715.2 S(ult.) +.1 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(17)198.725 E 0 Cg EP +%%Page: 18 18 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E 1.544 +(The return status when listing options is zero if all)144 84 R/F1 10 +/Times-Italic@0 SF(optnames)4.044 E F0 1.545 +(are enabled, non-zero otherwise.)4.045 F .696 +(When setting or unsetting options, the return status is zero unless an) +144 96 R F1(optname)3.196 E F0 .696(is not a v)3.196 F .695(alid shell) +-.25 F(option.)144 108 Q(The list of)144 124.8 Q/F2 10/Times-Bold@0 SF +(shopt)2.5 E F0(options is:)2.5 E F2(assoc_expand_once)144 142.8 Q F0 +1.944(If set, the shell suppresses multiple e)184 154.8 R -.25(va)-.25 G +1.945(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945 +(rray subscripts during).15 F .885(arithmetic e)184 166.8 R .885 +(xpression e)-.15 F -.25(va)-.25 G .885(luation, while e).25 F -.15(xe) +-.15 G .885(cuting b).15 F .885(uiltins that can perform v)-.2 F .885 +(ariable as-)-.25 F(signments, and while e)184 178.8 Q -.15(xe)-.15 G +(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F2 +(autocd)144 190.8 Q F0 .199 +(If set, a command name that is the name of a directory is e)184 190.8 R +-.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E +(ment to the)184 202.8 Q F2(cd)2.5 E F0 2.5(command. This)2.5 F +(option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E +F2(cdable_v)144 214.8 Q(ars)-.1 E F0 .156(If set, an ar)184 226.8 R .156 +(gument to the)-.18 F F2(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 238.8 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F2(cdspell)144 250.8 Q F0 +1.055 +(If set, minor errors in the spelling of a directory component in a)184 +250.8 R F2(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 +(corrected. The)184 262.8 R 1.488(errors check)3.988 F 1.487 +(ed for are transposed characters, a missing character)-.1 F 3.987(,a) +-.4 G(nd)-3.987 E .77(one character too man)184 274.8 R 4.57 -.65(y. I) +-.15 H 3.27(fac).65 G .77 +(orrection is found, the corrected \214lename is printed, and)-3.27 F +(the command proceeds.)184 286.8 Q +(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) +.15 E F2(checkhash)144 298.8 Q F0 .737(If set,)184 310.8 R F2(bash)3.237 +E F0 .736(checks that a command found in the hash table e)3.237 F .736 +(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 +322.8 Q(If a hashed command no longer e)5 E +(xists, a normal path search is performed.)-.15 E F2(checkjobs)144 334.8 +Q F0 .448(If set,)184 346.8 R F2(bash)2.948 E F0 .448 +(lists the status of an)2.948 F 2.949(ys)-.15 G .449 +(topped and running jobs before e)-2.949 F .449(xiting an interacti)-.15 +F -.15(ve)-.25 G 2.662(shell. If)184 358.8 R(an)2.662 E 2.661(yj)-.15 G +.161(obs are running, this causes the e)-2.661 F .161 +(xit to be deferred until a second e)-.15 F .161(xit is at-)-.15 F 1.472 +(tempted without an interv)184 370.8 R 1.473(ening command \(see)-.15 F +/F3 9/Times-Bold@0 SF 1.473(JOB CONTR)3.973 F(OL)-.27 E F0(abo)3.723 E +-.15(ve)-.15 G 3.973(\). The).15 F 1.473(shell al-)3.973 F -.1(wa)184 +382.8 S(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G +(obs are stopped.)-2.5 E F2(checkwinsize)144 394.8 Q F0 1.09(If set,)184 +406.8 R F2(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G +1.09(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09 +(uiltin\) command and, if)-.2 F(necessary)184 418.8 Q 3.35(,u)-.65 G .85 +(pdates the v)-3.35 F .85(alues of)-.25 F F3(LINES)3.35 E F0(and)3.1 E +F3(COLUMNS)3.35 E/F4 9/Times-Roman@0 SF(.)A F0 .85 +(This option is enabled by de-)5.35 F -.1(fa)184 430.8 S(ult.).1 E F2 +(cmdhist)144 442.8 Q F0 .173(If set,)184 442.8 R F2(bash)2.673 E F0 .173 +(attempts to sa)2.673 F .473 -.15(ve a)-.2 H .172 +(ll lines of a multiple-line command in the same history en-).15 F(try) +184 454.8 Q 5.596(.T)-.65 G .597(his allo)-5.596 F .597 +(ws easy re-editing of multi-line commands.)-.25 F .597 +(This option is enabled by de-)5.597 F -.1(fa)184 466.8 S 1.288(ult, b) +.1 F 1.288(ut only has an ef)-.2 F 1.288 +(fect if command history is enabled, as described abo)-.25 F 1.587 -.15 +(ve u)-.15 H(nder).15 E F3(HIST)184 478.8 Q(OR)-.162 E(Y)-.315 E F4(.)A +F2(compat31)144 490.8 Q(compat32)144 502.8 Q(compat40)144 514.8 Q +(compat41)144 526.8 Q(compat42)144 538.8 Q(compat43)144 550.8 Q +(compat44)144 562.8 Q F0 .889(These control aspects of the shell')184 +574.8 R 3.389(sc)-.55 G .889(ompatibility mode \(see)-3.389 F F3 .889 +(SHELL COMP)3.389 F -.855(AT)-.666 G(IBILITY).855 E(MODE)184 586.8 Q F0 +(belo)2.25 E(w\).)-.25 E F2(complete_fullquote)144 603.6 Q F0 .654 +(If set,)184 615.6 R F2(bash)3.153 E F0 .653(quotes all shell metachara\ +cters in \214lenames and directory names when per)3.153 F(-)-.2 E 1.524 +(forming completion.)184 627.6 R 1.524(If not set,)6.524 F F2(bash)4.024 +E F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524 +(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of c\ +haracters that will be quoted in completed \214lenames when these)184 +639.6 R .028(metacharacters appear in shell v)184 651.6 R .028 +(ariable references in w)-.25 F .029(ords to be completed.)-.1 F .029 +(This means)5.029 F 1.073(that dollar signs in v)184 663.6 R 1.073 +(ariable names that e)-.25 F 1.073 +(xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 +(ev e)184 675.6 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 +(ollar signs appearing in \214lenames will not be quoted, either).15 F +6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 +(only when bash is using backslashes to quote completed \214lenames.)184 +687.6 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 699.6 Q +(ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E +(ersions through 4.2.)-.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E +(18)198.725 E 0 Cg EP +%%Page: 19 19 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(dir)144 84 Q(expand) +-.18 E F0 .486(If set,)184 96 R F1(bash)2.986 E F0 .486 +(replaces directory names with the results of w)2.986 F .486(ord e)-.1 F +.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 +108 R .179(This changes the contents of the readline editing b)5.18 F +(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) +184 120 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F1(dirspell)144 136.8 Q F0 .858(If set,)184 +136.8 R F1(bash)3.358 E F0 .858 +(attempts spelling correction on directory names during w)3.358 F .859 +(ord completion if)-.1 F +(the directory name initially supplied does not e)184 148.8 Q(xist.)-.15 +E F1(dotglob)144 165.6 Q F0 .165(If set,)184 165.6 R 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(The \214lenames)184 177.6 Q F1 -.63(``)2.5 G -.55(.') +.63 G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0 +(must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5 +(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0 +(is set.)2.5 E F1(execfail)144 194.4 Q F0 .516(If set, a non-interacti) +184 194.4 R .816 -.15(ve s)-.25 H .516(hell will not e).15 F .516 +(xit if it cannot e)-.15 F -.15(xe)-.15 G .517 +(cute the \214le speci\214ed as an ar).15 F(-)-.2 E(gument to the)184 +206.4 Q 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 223.2 Q F0 .717 +(If set, aliases are e)184 235.2 R .717(xpanded as described abo)-.15 F +1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E +/F3 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F +(by def)184 247.2 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(extdeb)144 264 Q(ug)-.2 E F0 .17(If set at shell in)184 276 R +-.2(vo)-.4 G .17(cation, or in a shell startup \214le, arrange to e).2 F +-.15(xe)-.15 G .17(cute the deb).15 F .17(ugger pro\214le)-.2 F 1.082 +(before the shell starts, identical to the)184 288 R F13.582 +E(ugger)-.2 E F0 3.581(option. If)3.581 F 1.081(set after in)3.581 F -.2 +(vo)-.4 G 1.081(cation, be-).2 F(ha)184 300 Q +(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184 +316.8 Q F0(The)220 316.8 Q F14.25 E F0 1.75(option to the)4.25 F +F1(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751 +(iltin displays the source \214le name and line).2 F +(number corresponding to each function name supplied as an ar)220 328.8 +Q(gument.)-.18 E F1(2.)184 345.6 Q F0 1.667(If the command run by the) +220 345.6 R 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 357.6 Q -.15(xe)-.15 G(cuted.).15 E F1 +(3.)184 374.4 Q F0 .84(If the command run by the)220 374.4 R F1(DEB)3.34 +E(UG)-.1 E F0 .841(trap returns a v)3.341 F .841 +(alue of 2, and the shell is)-.25 F -.15(exe)220 386.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 398.4 Q(ce)-.18 E F0 -.2(bu)2.5 G +(iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E +(n)-.15 E F0(.)A F1(4.)184 415.2 Q F2 -.27(BA)220 415.2 S(SH_ARGC).27 E +F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 +(are updated as described in their descriptions)3.154 F(abo)220 427.2 Q +-.15(ve)-.15 G(.).15 E F1(5.)184 444 Q F0 1.637(Function tracing is ena\ +bled: command substitution, shell functions, and sub-)220 444 R +(shells in)220 456 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 +(\()2.5 E/F4 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 +(inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0 +(traps.)2.5 E F1(6.)184 472.8 Q F0 1.082(Error tracing is enabled: comm\ +and substitution, shell functions, and subshells)220 472.8 R(in)220 +484.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4 +(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.) +2.5 E F1(extglob)144 501.6 Q F0 .4(If set, the e)184 501.6 R .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 513.6 Q +F0(are enabled.)2.5 E F1(extquote)144 530.4 Q F0 .86(If set,)184 542.4 R +F1($)3.36 E F0<08>A F4(string)A F0 3.36<0861>C(nd)-3.36 E F1($)3.36 E F0 +(")A F4(string)A F0 3.36("q)C .86(uoting is performed within)-3.36 F F1 +(${)3.36 E F4(par)A(ameter)-.15 E F1(})A F0 -.15(ex)3.36 G .86 +(pansions en-).15 F(closed in double quotes.)184 554.4 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 571.2 Q +F0 .243(If set, patterns which f)184 571.2 R .243 +(ail to match \214lenames during pathname e)-.1 F .243 +(xpansion result in an e)-.15 F(x-)-.15 E(pansion error)184 583.2 Q(.) +-.55 E F1 -.25(fo)144 600 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 612 R<8c78>-.25 E .936(es speci\214ed by the) +-.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) +-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 624 R .32 +(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 +(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 +(pletions. See)184 636 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 +(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 +(FIGNORE)2.948 E F3(.)A F0 .448(This option is)4.948 F(enabled by def) +184 648 Q(ault.)-.1 E F1(globasciiranges)144 664.8 Q F0 2.519 +(If set, range e)184 676.8 R 2.519 +(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 +(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E +(Matching)184 688.8 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) +-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 +(nt)-3.214 G .714(he traditional C locale when performing comparisons.) +-3.214 F 1.02(That is, the current locale')184 700.8 R 3.52(sc)-.55 G +1.02(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F +F1(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 712.8 R F1 +(A)3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper) +-3.457 F .957(-case and lo)-.2 F(wer)-.25 E .957 +(-case ASCII characters will collate)-.2 F(together)184 724.8 Q(.)-.55 E +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(19)198.725 E 0 Cg EP +%%Page: 20 20 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(globstar)144 84 Q F0 +.519(If set, the pattern)184 84 R F1(**)3.019 E F0 .519 +(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518 +(xt will match all \214les and zero)-.15 F .431 +(or more directories and subdirectories.)184 96 R .431 +(If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0 +2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184 +108 Q F1(gnu_errfmt)144 124.8 Q F0(If set, shell error messages are wri\ +tten in the standard GNU error message format.)184 136.8 Q F1 +(histappend)144 153.6 Q F0 .676 +(If set, the history list is appended to the \214le named by the v)184 +165.6 R .676(alue of the)-.25 F/F2 9/Times-Bold@0 SF(HISTFILE)3.176 E F0 +-.25(va)2.926 G(ri-).25 E(able when the shell e)184 177.6 Q +(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1 +(histr)144 194.4 Q(eedit)-.18 E F0 .575(If set, and)184 206.4 R F1 -.18 +(re)3.075 G(adline).18 E F0 .575(is being used, a user is gi)3.075 F +-.15(ve)-.25 G 3.075(nt).15 G .576(he opportunity to re-edit a f)-3.075 +F .576(ailed his-)-.1 F(tory substitution.)184 218.4 Q F1(histv)144 +235.2 Q(erify)-.1 E F0 .403(If set, and)184 247.2 R F1 -.18(re)2.903 G +(adline).18 E F0 .403 +(is being used, the results of history substitution are not immediately) +2.903 F .661(passed to the shell parser)184 259.2 R 5.661(.I)-.55 G .662 +(nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162 +G(adline).18 E F0(editing)3.162 E -.2(bu)184 271.2 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 288 Q F0 1.182(If set, and)184 300 R F1 -.18(re)3.682 +G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181 +(will attempt to perform hostname completion)3.681 F 1.38(when a w)184 +312 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +(is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E +F2(READLINE)3.881 E F0(abo)184 324 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 340.8 Q F0 +(If set,)184 352.8 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 +(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e) +.15 E(xits.)-.15 E F1(inherit_err)144 369.6 Q(exit)-.18 E F0 .22 +(If set, command substitution inherits the v)184 381.6 R .219 +(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .219 +(option, instead of unsetting)2.719 F(it in the subshell en)184 393.6 Q +2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F3 10 +/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti) +144 410.4 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 422.4 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 434.4 R 1.267 +-.15(ve s)-.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 +E -.15(ve)-.15 G 3.467(\). This).15 F .967(option is)3.467 F +(enabled by def)184 446.4 Q(ault.)-.1 E F1(lastpipe)144 463.2 Q F0 .066 +(If set, and job control is not acti)184 463.2 R -.15(ve)-.25 G 2.566 +(,t).15 G .066(he shell runs the last command of a pipeline not e)-2.566 +F -.15(xe)-.15 G(-).15 E +(cuted in the background in the current shell en)184 475.2 Q(vironment.) +-.4 E F1(lithist)144 492 Q F0 .655(If set, and the)184 492 R F1(cmdhist) +3.155 E F0 .654(option is enabled, multi-line commands are sa)3.154 F +-.15(ve)-.2 G 3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F +(with embedded ne)184 504 Q +(wlines rather than using semicolon separators where possible.)-.25 E F1 +(localv)144 520.8 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 532.8 R +.422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422 +(utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184 +544.8 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673 +(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .173 +(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 556.8 Q +F1(localv)144 573.6 Q(ar_unset)-.1 E F0 .328(If set, calling)184 585.6 R +F1(unset)2.828 E F0 .328(on local v)2.828 F .329(ariables in pre)-.25 F +.329(vious function scopes marks them so subse-)-.25 F .543(quent looku\ +ps \214nd them unset until that function returns. This is identical to \ +the beha)184 597.6 R(v-)-.2 E(ior of unsetting local v)184 609.6 Q +(ariables at the current function scope.)-.25 E F1(login_shell)144 626.4 +Q F0 .486 +(The shell sets this option if it is started as a login shell \(see)184 +638.4 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) +-.15 G 2.987(\). The).15 F -.25(va)184 650.4 S(lue may not be changed.) +.25 E F1(mailwar)144 667.2 Q(n)-.15 E F0 .815(If set, and a \214le that) +184 679.2 R F1(bash)3.315 E F0 .814 +(is checking for mail has been accessed since the last time it)3.315 F +-.1(wa)184 691.2 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +(`The mail in)-.74 E F3(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(GNU Bash 5.0)72 768 Q(2004 Apr 20) +149.565 E(20)198.725 E 0 Cg EP +%%Page: 21 21 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF +(no_empty_cmd_completion)144 84 Q F0 .324(If set, and)184 96 R F1 -.18 +(re)2.824 G(adline).18 E F0 .324(is being used,)2.824 F F1(bash)2.824 E +F0 .324(will not attempt to search the)2.824 F/F2 9/Times-Bold@0 SF +-.666(PA)2.825 G(TH)-.189 E F0 .325(for possible)2.575 F +(completions when completion is attempted on an empty line.)184 108 Q F1 +(nocaseglob)144 124.8 Q F0 .437(If set,)184 136.8 R F1(bash)2.937 E F0 +.436(matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f) +-.25 H .436(ashion when performing pathname).05 F -.15(ex)184 148.8 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 165.6 Q F0 1.193(If set,)184 +177.6 R F1(bash)3.693 E F0 1.194 +(matches patterns in a case\255insensiti)3.693 F 1.494 -.15(ve f)-.25 H +1.194(ashion when performing matching).05 F .551(while e)184 189.6 R +-.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0(or)3.051 E F1([[)3.051 E +F0 .551(conditional commands, when performing pattern substitution)3.051 +F -.1(wo)184 201.6 S .622(rd e).1 F .623(xpansions, or when \214ltering\ + possible completions as part of programmable com-)-.15 F(pletion.)184 +213.6 Q F1(nullglob)144 230.4 Q F0 .855(If set,)184 242.4 R F1(bash) +3.355 E F0(allo)3.355 E .855(ws patterns which match no \214les \(see) +-.25 F F1 -.1(Pa)3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15 +(ve)-.15 G 3.354(\)t).15 G(o)-3.354 E -.15(ex)184 254.4 S +(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 +271.2 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 +283.2 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 +(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E +(are enabled.)184 295.2 Q(This option is enabled by def)5 E(ault.)-.1 E +F1(pr)144 312 Q(ogcomp_alias)-.18 E F0 2.124 +(If set, and programmable completion is enabled,)184 324 R F1(bash)4.624 +E F0 2.124(treats a command name that)4.624 F(doesn')184 336 Q 3.288(th) +-.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789 +(ompletions as a possible alias and attempts alias e)-3.288 F .789 +(xpansion. If it has)-.15 F 1.473(an alias,)184 348 R F1(bash)3.973 E F0 +1.473(attempts programmable completion using the command w)3.973 F 1.473 +(ord resulting)-.1 F(from the e)184 360 Q(xpanded alias.)-.15 E F1(pr) +144 376.8 Q(omptv)-.18 E(ars)-.1 E F0 1.447 +(If set, prompt strings under)184 388.8 R 1.448(go parameter e)-.18 F +1.448(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 +400.8 S .171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G +.17(fter being e)-2.67 F .17(xpanded as described in)-.15 F F2(PR)2.67 E +(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G(.).15 E +(This option is enabled by def)184 412.8 Q(ault.)-.1 E F1 -.18(re)144 +429.6 S(stricted_shell).18 E F0 1.069 +(The shell sets this option if it is started in restricted mode \(see) +184 441.6 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 453.6 Q 2.86 +(w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 +(This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G +(-).15 E(cuted, allo)184 465.6 Q(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 482.4 Q(erbose)-.1 E F0 .501(If set, the)184 494.4 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 506.4 Q F1(sour) +144 523.2 Q(cepath)-.18 E F0 .771(If set, the)184 535.2 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 547.2 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E +(ault.)-.1 E F1(xpg_echo)144 564 Q F0(If set, the)184 576 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 592.8 Q F0([)2.5 E F1A F0(])A +1.001(Suspend the e)144 604.8 R -.15(xe)-.15 G 1.001 +(cution of this shell until it recei).15 F -.15(ve)-.25 G 3.501(sa).15 G +F2(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002(login shell cannot be) +3.502 F .023(suspended; the)144 616.8 R F12.523 E F0 .023 +(option can be used to o)2.523 F -.15(ve)-.15 G .022 +(rride this and force the suspension.).15 F .022(The return status is) +5.022 F 2.5(0u)144 628.8 S(nless the shell is a login shell and)-2.5 E +F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 +E F1(test)108 645.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) +108 657.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .877 +(Return a status of 0 \(true\) or 1 \(f)144 657.6 R .878 +(alse\) depending on the e)-.1 F -.25(va)-.25 G .878 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 669.6 +S(pr).2 E F0 5.53(.E).73 G .53 +(ach operator and operand must be a separate ar)-5.53 F 3.03 +(gument. Expressions)-.18 F .53(are composed of the)3.03 F .072 +(primaries described in the)144 681.6 R F1(bash)2.573 E F0 .073 +(manual page under)2.573 F F2(CONDITION)2.573 E .073(AL EXPRESSIONS)-.18 +F/F4 9/Times-Roman@0 SF(.)A F1(test)4.573 E F0 .073(does not)2.573 F +.695(accept an)144 693.6 R 3.195(yo)-.15 G .695 +(ptions, nor does it accept and ignore an ar)-3.195 F .694(gument of) +-.18 F F13.194 E F0 .694(as signifying the end of op-)3.194 F +(tions.)144 705.6 Q 3.141(Expressions may be combined using the follo) +144 723.6 R 3.141(wing operators, listed in decreasing order of)-.25 F +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(21)198.725 E 0 Cg EP +%%Page: 22 22 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E 4.114(precedence. The)144 84 R -.25(eva) +4.114 G 1.613(luation depends on the number of ar).25 F 1.613 +(guments; see belo)-.18 F 5.413 -.65(w. O)-.25 H 1.613(perator prece-) +.65 F(dence is used when there are \214v)144 96 Q 2.5(eo)-.15 G 2.5(rm) +-2.5 G(ore ar)-2.5 E(guments.)-.18 E/F1 10/Times-Bold@0 SF(!)144 108 Q +/F2 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F0 -.35(Tr)180 108 S +(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.)-.1 E F1(\() +144 120 Q F2 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 .26(Returns the v)180 +120 R .26(alue of)-.25 F F2 -.2(ex)2.76 G(pr).2 E F0 5.26(.T)C .26 +(his may be used to o)-5.26 F -.15(ve)-.15 G .26 +(rride the normal precedence of opera-).15 F(tors.)180 132 Q F2 -.2(ex) +144 144 S(pr1).2 E F02.5 E F1(a)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35 +(Tr)180 156 S(ue if both).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F2 +-.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F2 -.2(ex)144 168 S(pr1).2 E +F02.5 E F1(o)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 180 S +(ue if either).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F2 -.2(ex)2.5 G +(pr2).2 E F0(is true.)2.52 E F1(test)144 196.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 214.8 S -.18(rg)-2.5 G(uments).18 E(The e) +180 226.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 238.8 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 250.8 Q +(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 +E 2.5(2a)144 262.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 274.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 286.8 R .38 +(gument is one of the unary conditional operators listed abo)-.18 F .68 +-.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.88 E(TION)180 +298.8 Q .553(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552 +(the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F +.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 310.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 322.8 S -.18(rg)-2.5 G +(uments).18 E .236(The follo)180 334.8 R .236 +(wing conditions are applied in the order listed.)-.25 F .236 +(If the second ar)5.236 F .236(gument is one of)-.18 F .855 +(the binary conditional operators listed abo)180 346.8 R 1.155 -.15 +(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F +F4(,)A F0(the)3.104 E .578(result of the e)180 358.8 R .578(xpression i\ +s the result of the binary test using the \214rst and third ar)-.15 F +(guments)-.18 E 1.333(as operands.)180 370.8 R(The)6.333 E F13.833 +E F0(and)3.833 E F13.832 E F0 1.332 +(operators are considered binary operators when there are)3.832 F .558 +(three ar)180 382.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 +F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F +.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F +(o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180 +394.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52 +(gument is e)-.18 F(xactly)-.15 E F1(\()3.02 E F0 .52(and the third)3.02 +F(ar)180 406.8 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 +2.985(,t)C .485(he result is the one-ar)-2.985 F .485 +(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E +(wise, the e)180 418.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 +430.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 442.8 R +.385(gument is)-.18 F F1(!)2.885 E F0 2.885(,t)C .385 +(he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar) +.05 F .384(gument e)-.18 F .384(xpression com-)-.15 F .284 +(posed of the remaining ar)180 454.8 R 2.784(guments. Otherwise,)-.18 F +.284(the e)2.784 F .284(xpression is parsed and e)-.15 F -.25(va)-.25 G +.285(luated ac-).25 F(cording to precedence using the rules listed abo) +180 466.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 478.8 S 2.5(rm)-2.5 G +(ore ar)-2.5 E(guments)-.18 E 1.635(The e)180 490.8 R 1.635 +(xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635 +(luated according to precedence using the rules listed).25 F(abo)180 +502.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 520.8 Q F1(test)2.5 E +F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 E F1 +(>)2.5 E F0(operators sort le)2.5 E +(xicographically using ASCII ordering.)-.15 E F1(times)108 537.6 Q F0 +1.229(Print the accumulated user and system times for the shell and for\ + processes run from the shell.)144 537.6 R(The return status is 0.)144 +549.6 Q F1(trap)108 566.4 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E +F2(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E .683(The command) +144 578.4 R F2(ar)3.513 E(g)-.37 E F0 .683(is to be read and e)3.403 F +-.15(xe)-.15 G .682(cuted when the shell recei).15 F -.15(ve)-.25 G +3.182(ss).15 G(ignal\(s\))-3.182 E F2(sigspec)3.522 E F0 5.682(.I).31 G +(f)-5.682 E F2(ar)3.512 E(g)-.37 E F0(is)3.402 E .608 +(absent \(and there is a single)144 590.4 R F2(sigspec)3.108 E F0 3.108 +(\)o)C(r)-3.108 E F13.108 E F0 3.108(,e)C .608 +(ach speci\214ed signal is reset to its original disposition)-3.108 F +.659(\(the v)144 602.4 R .659(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 +(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) +144.34 614.4 Q F0 .58(is ignored by the shell and by the commands it in) +3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E +F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 +(been supplied, then the trap commands associated with each)144 626.4 R +F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 +F(gu-)-.18 E .86(ments are supplied or if only)144 638.4 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 650.4 R F12.83 E F0 .33(option causes the shell \ +to print a list of signal names and their corresponding num-)2.83 F 4.31 +(bers. Each)144 662.4 R F2(sigspec)4.65 E F0 1.811 +(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811 +(>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E +(names are case insensiti)144 674.4 Q .3 -.15(ve a)-.25 H(nd the).15 E +F3(SIG)2.5 E F0(pre\214x is optional.)2.25 E .667(If a)144 692.4 R F2 +(sigspec)3.507 E F0(is)3.477 E F3(EXIT)3.167 E F0 .667 +(\(0\) the command)2.917 F F2(ar)3.496 E(g)-.37 E F0 .666(is e)3.386 F +-.15(xe)-.15 G .666(cuted on e).15 F .666(xit from the shell.)-.15 F +.666(If a)5.666 F F2(sigspec)3.506 E F0(is)3.476 E F3(DE-)3.166 E -.09 +(BU)144 704.4 S(G).09 E F4(,)A F0 .483(the command)2.733 F F2(ar)3.313 E +(g)-.37 E F0 .483(is e)3.203 F -.15(xe)-.15 G .484(cuted before e).15 F +-.15(ve)-.25 G(ry).15 E F2 .484(simple command)2.984 F F0(,)A F2(for) +2.984 E F0(command,)2.984 E F2(case)2.984 E F0(command,)2.984 E F2 +(select)144 716.4 Q F0 .563(command, e)3.063 F -.15(ve)-.25 G .563 +(ry arithmetic).15 F F2(for)3.063 E F0 .563 +(command, and before the \214rst command e)3.063 F -.15(xe)-.15 G .562 +(cutes in a shell).15 F .622(function \(see)144 728.4 R F3 .622 +(SHELL GRAMMAR)3.122 F F0(abo)2.872 E -.15(ve)-.15 G 3.122(\). Refer).15 +F .622(to the description of the)3.122 F F1(extdeb)3.122 E(ug)-.2 E F0 +.622(option to the)3.122 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E +(22)198.725 E 0 Cg EP +%%Page: 23 23 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(shopt)144 84 Q F0 -.2 +(bu)2.996 G .496(iltin for details of its ef).2 F .496(fect on the)-.25 +F F1(DEB)2.996 E(UG)-.1 E F0 2.996(trap. If)2.996 F(a)2.996 E/F2 10 +/Times-Italic@0 SF(sigspec)3.336 E F0(is)3.306 E/F3 9/Times-Bold@0 SF +(RETURN)2.996 E/F4 9/Times-Roman@0 SF(,)A F0 .496(the command)2.746 F F2 +(ar)144.33 96 Q(g)-.37 E F0 .18(is e)2.9 F -.15(xe)-.15 G .18 +(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G .18 +(cuted with the).15 F F1(.)2.68 E F0(or)2.68 E F1(sour)2.68 E(ce)-.18 E +F0 -.2(bu)2.68 G .18(iltins \214nishes).2 F -.15(exe)144 108 S(cuting.) +.15 E .961(If a)144 126 R F2(sigspec)3.801 E F0(is)3.771 E F3(ERR)3.461 +E F4(,)A F0 .961(the command)3.211 F F2(ar)3.791 E(g)-.37 E F0 .961 +(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G 3.461 +(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(single sim\ +ple command\), a list, or a compound command returns a non\255zero e)144 +138 R .185(xit status, subject to)-.15 F .452(the follo)144 150 R .452 +(wing conditions.)-.25 F(The)5.452 E F3(ERR)2.952 E F0 .451 +(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451 +(ailed command is part of the com-)-.1 F .387 +(mand list immediately follo)144 162 R .387(wing a)-.25 F F1(while)2.887 +E F0(or)2.887 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 +(ord, part of the test in an)-.1 F F2(if)2.898 E F0 .388 +(statement, part)4.848 F .778(of a command e)144 174 R -.15(xe)-.15 G +.778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778 +(list e)3.278 F .778(xcept the command follo)-.15 F .778 +(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.277 E F0 +3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 186 R 1.28 +(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78 +F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F1(!) +3.78 E F0(.)A(These are the same conditions obe)144 198 Q(yed by the) +-.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1A F0 2.5(\)o)C +(ption.)-2.5 E .133 +(Signals ignored upon entry to the shell cannot be trapped or reset.)144 +216 R -.35(Tr)5.132 G .132(apped signals that are not be-).35 F .117 +(ing ignored are reset to their original v)144 228 R .117 +(alues in a subshell or subshell en)-.25 F .117 +(vironment when one is cre-)-.4 F 2.5(ated. The)144 240 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 256.8 Q F0([)2.5 E F1(\255aftpP)A F0(]) +A F2(name)2.5 E F0([)2.5 E F2(name)A F0(...])2.5 E -.4(Wi)144 268.8 S +.174(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F2 +(name)3.034 E F0 -.1(wo)2.854 G .173 +(uld be interpreted if used as a command name.).1 F .173(If the)5.173 F +F1144 280.8 Q F0 .715(option is used,)3.215 F F1(type)3.215 E F0 +.715(prints a string which is one of)3.215 F F2(alias)3.545 E F0(,).27 E +F2 -.1(ke)3.215 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)5.185 E F0 +(,).24 E F2 -.2(bu)3.215 G(iltin).2 E F0 3.215(,o).24 G(r)-3.215 E F2 +(\214le)5.125 E F0(if)3.395 E F2(name)144.36 292.8 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 304.8 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 316.8 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 .528(mand name, or nothing if) +144 328.8 R/F5 10/Courier@0 SF .528(type -t name)3.028 F F0 -.1(wo)3.028 +G .528(uld not return).1 F F2(\214le)4.938 E F0 5.528(.T).18 G(he)-5.528 +E F13.028 E F0 .529(option forces a)3.028 F F3 -.666(PA)3.029 G +(TH)-.189 E F0 .007(search for each)144 340.8 R F2(name)2.507 E F0 2.507 +(,e)C -.15(ve)-2.757 G 2.507(ni).15 G(f)-2.507 E F5 .007(type -t name) +2.507 F F0 -.1(wo)2.507 G .007(uld not return).1 F F2(\214le)4.417 E F0 +5.006(.I).18 G 2.506(fac)-5.006 G .006(ommand is hashed,)-2.506 F F1 +2.506 E F0(and)144 352.8 Q F13.23 E F0 .73 +(print the hashed v)3.23 F .731 +(alue, which is not necessarily the \214le that appears \214rst in)-.25 +F F3 -.666(PA)3.231 G(TH)-.189 E F4(.)A F0 .731(If the)5.231 F F1 +144 364.8 Q F0 .824(option is used,)3.324 F F1(type)3.324 E F0 .824 +(prints all of the places that contain an e)3.324 F -.15(xe)-.15 G .823 +(cutable named).15 F F2(name)3.683 E F0 5.823(.T).18 G .823(his in-) +-5.823 F 1.176(cludes aliases and functions, if and only if the)144 +376.8 R F13.676 E F0 1.176(option is not also used.)3.676 F 1.177 +(The table of hashed)6.176 F 1.223(commands is not consulted when using) +144 388.8 R F13.723 E F0 6.223(.T)C(he)-6.223 E F13.723 E F0 +1.223(option suppresses shell function lookup, as)3.723 F .325(with the) +144 400.8 R F1(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F1(type) +5.325 E F0 .325(returns true if all of the ar)2.825 F .326 +(guments are found, f)-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326 +(re not)-2.826 F(found.)144 412.8 Q F1(ulimit)108 429.6 Q F0([)2.5 E F1 +(\255HS)A F0(])A F12.5 E(ulimit)108 441.6 Q F0([)2.5 E F1(\255HS)A +F0 2.5(][)C F1(\255bcde\214klmnpqrstuvxPR)-2.5 E(T)-.4 E F0([)2.5 E F2 +(limit)A F0(]])A(Pro)144 453.6 Q .244(vides control o)-.15 F -.15(ve) +-.15 G 2.744(rt).15 G .244(he resources a)-2.744 F -.25(va)-.2 G .244 +(ilable to the shell and to processes started by it, on systems).25 F +.943(that allo)144 465.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F +(The)5.943 E F13.443 E F0(and)3.443 E F13.444 E F0 .944 +(options specify that the hard or soft limit is set for the)3.444 F(gi) +144 477.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +(hard limit cannot be increased by a non-root user once it is set; a so\ +ft limit may)2.709 F .425(be increased up to the v)144 489.6 R .425 +(alue of the hard limit.)-.25 F .426(If neither)5.425 F F12.926 E +F0(nor)2.926 E F12.926 E F0 .426 +(is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 +501.6 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139 +(can be a number in the unit speci\214ed for the resource or one)3.319 F +.741(of the special v)144 513.6 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w) +C .741(hich stand for the current hard limit, the current)-3.241 F .024 +(soft limit, and no limit, respecti)144 525.6 R -.15(ve)-.25 G(ly).15 E +5.023(.I)-.65 G(f)-5.023 E F2(limit)2.613 E F0 .023 +(is omitted, the current v)3.203 F .023 +(alue of the soft limit of the re-)-.25 F .984 +(source is printed, unless the)144 537.6 R F13.484 E F0 .984 +(option is gi)3.484 F -.15(ve)-.25 G 3.484(n. When).15 F .985 +(more than one resource is speci\214ed, the)3.484 F .7 +(limit name and unit, if appropriate, are printed before the v)144 549.6 +R 3.2(alue. Other)-.25 F .7(options are interpreted as)3.2 F(follo)144 +561.6 Q(ws:)-.25 E F1144 573.6 Q F0 +(All current limits are reported; no limits are set)180 573.6 Q F1 +144 585.6 Q F0(The maximum sock)180 585.6 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F1144 597.6 Q F0 +(The maximum size of core \214les created)180 597.6 Q F1144 609.6 +Q F0(The maximum size of a process')180 609.6 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F1144 621.6 Q F0 +(The maximum scheduling priority \("nice"\))180 621.6 Q F1144 +633.6 Q F0 +(The maximum size of \214les written by the shell and its children)180 +633.6 Q F1144 645.6 Q F0(The maximum number of pending signals)180 +645.6 Q F1144 657.6 Q F0 +(The maximum number of kqueues that may be allocated)180 657.6 Q F1 +144 669.6 Q F0(The maximum size that may be lock)180 669.6 Q +(ed into memory)-.1 E F1144 681.6 Q F0 +(The maximum resident set size \(man)180 681.6 Q 2.5(ys)-.15 G +(ystems do not honor this limit\))-2.5 E F1144 693.6 Q F0 .791(Th\ +e maximum number of open \214le descriptors \(most systems do not allo) +180 693.6 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F +(be set\))180 705.6 Q F1144 717.6 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 717.6 Q +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(23)198.725 E 0 Cg EP +%%Page: 24 24 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 +(The maximum number of bytes in POSIX message queues)180 84 Q F1 +144 96 Q F0(The maximum real-time scheduling priority)180 96 Q F1 +144 108 Q F0(The maximum stack size)180 108 Q F1144 120 Q F0 +(The maximum amount of cpu time in seconds)180 120 Q F1144 132 Q +F0(The maximum number of processes a)180 132 Q -.25(va)-.2 G +(ilable to a single user).25 E F1144 144 Q F0 .47 +(The maximum amount of virtual memory a)180 144 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 156 +Q F1144 168 Q F0(The maximum number of \214le locks)180 168 Q F1 +144 180 Q F0(The maximum number of pseudoterminals)180 180 Q F1 +144 192 Q F0(The maximum time a real-time process can run before \ +blocking, in microseconds)180 192 Q F1144 204 Q F0 +(The maximum number of threads)180 204 Q(If)144 220.8 Q/F2 10 +/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G +.468(n, and the).15 F F12.968 E F0 .468(option is not used,)2.968 +F F2(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 +(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .045 +(no option is gi)144 232.8 R -.15(ve)-.25 G .045(n, then).15 F F1 +2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F1 +2.544 E F0 2.544(,w)C .044(hich is)-2.544 F .67(in seconds;)144 +244.8 R F13.17 E F0 3.17(,w)C .67(hich is in microseconds;)-3.17 F +F13.17 E F0 3.17(,w)C .67(hich is in units of 512-byte blocks;) +-3.17 F F13.17 E F0(,)A F13.17 E F0(,)A F13.17 E F0(,) +A F1144 256.8 Q F0(,)A F13.737 E F0 3.737(,a)C(nd)-3.737 E +F13.736 E F0 3.736(,w)C 1.236(hich are unscaled v)-3.736 F 1.236 +(alues; and, when in posix mode,)-.25 F F13.736 E F0(and)3.736 E +F13.736 E F0 3.736(,w)C 1.236(hich are in)-3.736 F .238 +(512-byte increments.)144 268.8 R .238 +(The return status is 0 unless an in)5.238 F -.25(va)-.4 G .238 +(lid option or ar).25 F .238(gument is supplied, or an)-.18 F +(error occurs while setting a ne)144 280.8 Q 2.5(wl)-.25 G(imit.)-2.5 E +F1(umask)108 297.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 .18 +(The user \214le-creation mask is set to)144 309.6 R F2(mode)3.06 E F0 +5.18(.I).18 G(f)-5.18 E F2(mode)3.06 E F0(be)2.86 E .18 +(gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\ +therwise it is interpreted as a symbolic mode mask similar to that acce\ +pted by)144 321.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +333.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 +(alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 +(option causes the mask to be)2.882 F .547 +(printed in symbolic form; the def)144 345.6 R .547 +(ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G +(he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 +(mode)144.38 357.6 Q F0 .552 +(is omitted, the output is in a form that may be reused as input.)3.232 +F .551(The return status is 0 if the)5.551 F(mode w)144 369.6 Q +(as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E +(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 +(unalias)108 386.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 +(...])2.5 E(Remo)144 398.4 Q 1.057 -.15(ve e)-.15 H(ach).15 E F2(name) +3.257 E F0 .757(from the list of de\214ned aliases.)3.257 F(If)5.758 E +F13.258 E F0 .758(is supplied, all alias de\214nitions are re-) +3.258 F(mo)144 410.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +(alue is true unless a supplied)-.25 E F2(name)2.86 E F0 +(is not a de\214ned alias.)2.68 E F1(unset)108 427.2 Q F0<5bad>2.5 E F1 +(fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) +2.5 E -.15(Fo)144 439.2 S 3.804(re).15 G(ach)-3.804 E F2(name)4.164 E F0 +3.804(,r).18 G(emo)-3.804 E 1.604 -.15(ve t)-.15 H 1.304 +(he corresponding v).15 F 1.303(ariable or function.)-.25 F 1.303 +(If the)6.303 F F13.803 E F0 1.303(option is gi)3.803 F -.15(ve) +-.25 G 1.303(n, each).15 F F2(name)144.36 451.2 Q F0 .464 +(refers to a shell v)3.144 F .464(ariable, and that v)-.25 F .464 +(ariable is remo)-.25 F -.15(ve)-.15 G 2.965(d. Read-only).15 F -.25(va) +2.965 G .465(riables may not be un-).25 F 2.769(set. If)144 463.2 R F1 +2.769 E F0 .269(is speci\214ed, each)2.769 F F2(name)3.129 E F0 +.269(refers to a shell function, and the function de\214nition is remo) +2.949 F -.15(ve)-.15 G(d.).15 E .403(If the)144 475.2 R F12.903 E +F0 .404(option is supplied, and)2.904 F F2(name)2.904 E F0 .404(is a v) +2.904 F .404(ariable with the)-.25 F F2(namer)2.904 E(ef)-.37 E F0 +(attrib)2.904 E(ute,)-.2 E F2(name)2.904 E F0 .404(will be unset)2.904 F +.72(rather than the v)144 487.2 R .72(ariable it references.)-.25 F F1 +5.72 E F0 .72(has no ef)3.22 F .719(fect if the)-.25 F F1 +3.219 E F0 .719(option is supplied.)3.219 F .719(If no options)5.719 F +.736(are supplied, each)144 499.2 R F2(name)3.236 E F0 .736 +(refers to a v)3.236 F .737(ariable; if there is no v)-.25 F .737 +(ariable by that name, a function with)-.25 F 1.762(that name, if an)144 +511.2 R 3.062 -.65(y, i)-.15 H 4.262(su).65 G 4.261(nset. Each)-4.262 F +1.761(unset v)4.261 F 1.761(ariable or function is remo)-.25 F -.15(ve) +-.15 G 4.261(df).15 G 1.761(rom the en)-4.261 F(vironment)-.4 E 3.171 +(passed to subsequent commands.)144 523.2 R 3.172(If an)8.172 F 5.672 +(yo)-.15 G(f)-5.672 E/F3 9/Times-Bold@0 SF -.27(BA)5.672 G(SH_ALIASES) +.27 E/F4 9/Times-Roman@0 SF(,)A F3 -.27(BA)5.422 G(SH_ARGV0).27 E F4(,)A +F3 -.27(BA)5.422 G(SH_CMDS).27 E F4(,)A F3 -.27(BA)144 535.2 S +(SH_COMMAND).27 E F4(,)A F3 -.27(BA)11.482 G(SH_SUBSHELL).27 E F4(,)A F3 +-.27(BA)11.482 G(SHPID).27 E F4(,)A F3(COMP_W)11.482 E(ORDBREAKS)-.09 E +F4(,)A F3(DIRST)11.481 E -.495(AC)-.81 G(K).495 E F4(,)A F3(EPOCHREAL) +144 547.2 Q(TIME)-.828 E F4(,)A F3(EPOCHSECONDS)2.67 E F4(,)A F3(FUNCN) +2.67 E(AME)-.18 E F4(,)A F3(GR)2.67 E(OUPS)-.27 E F4(,)A F3(HISTCMD)2.67 +E F4(,)A F3(LINENO)2.67 E F4(,)A F3(RANDOM)2.67 E F4(,)A F3(SECONDS)144 +559.2 Q F4(,)A F0(or)4.03 E F3(SRANDOM)4.28 E F0 1.779(are unset, the) +4.03 F 4.279(yl)-.15 G 1.779(ose their special properties, e)-4.279 F +-.15(ve)-.25 G 4.279(ni).15 G 4.279(ft)-4.279 G(he)-4.279 E 4.279(ya) +-.15 G 1.779(re subse-)-4.279 F(quently reset.)144 571.2 Q(The e)5 E +(xit status is true unless a)-.15 E F2(name)2.86 E F0(is readonly)2.68 E +(.)-.65 E F1(wait)108 588 Q F0([)2.5 E F1(\255fn)A F0 2.5(][)C F1 +-2.5 E F2(varname)2.5 E F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144 +600 S .659(it for each speci\214ed child process and return its termina\ +tion status.).8 F(Each)5.659 E F2(id)3.169 E F0 .659(may be a process) +3.929 F .009(ID or a job speci\214cation; if a job spec is gi)144 612 R +-.15(ve)-.25 G .008(n, all processes in that job').15 F 2.508(sp)-.55 G +.008(ipeline are w)-2.508 F .008(aited for)-.1 F 5.008(.I)-.55 G(f) +-5.008 E F2(id)144.01 624 Q F0 .441(is not gi)3.711 F -.15(ve)-.25 G(n,) +.15 E F1(wait)2.941 E F0 -.1(wa)2.941 G .441 +(its for all running background jobs and the last-e).1 F -.15(xe)-.15 G +.442(cuted process substitu-).15 F .598 +(tion, if its process id is the same as)144 636 R F1($!)3.098 E F0 3.098 +(,a)C .598(nd the return status is zero.)-3.098 F .597(If the)5.597 F F1 +3.097 E F0 .597(option is supplied,)3.097 F F1(wait)144 648 Q F0 +-.1(wa)3.082 G .583(its for a single job from the list of).1 F F2(id) +3.083 E F0 3.083(so)C 1.383 -.4(r, i)-3.083 H 3.083(fn).4 G(o)-3.083 E +F2(id)3.083 E F0 3.083(sa)C .583(re supplied, an)-3.083 F 3.083(yj)-.15 +G .583(ob, to complete and)-3.083 F .404(returns its e)144 660 R .404 +(xit status.)-.15 F .403(If none of the supplied ar)5.403 F .403 +(guments is a child of the shell, or if no ar)-.18 F(guments)-.18 E .572 +(are supplied and the shell has no unw)144 672 R .573 +(aited-for children, the e)-.1 F .573(xit status is 127.)-.15 F .573 +(If the)5.573 F F13.073 E F0 .573(option is)3.073 F .39 +(supplied, the process or job identi\214er of the job for which the e) +144 684 R .39(xit status is returned is assigned to)-.15 F .905(the v) +144 696 R(ariable)-.25 E F2(varname)3.405 E F0 .905 +(named by the option ar)3.405 F 3.405(gument. The)-.18 F -.25(va)3.405 G +.905(riable will be unset initially).25 F 3.405(,b)-.65 G(efore)-3.405 E +(an)144 708 Q 3.89(ya)-.15 G 3.89(ssignment. This)-3.89 F 1.39 +(is useful only when the)3.89 F F13.89 E F0 1.39 +(option is supplied.)3.89 F 1.39(Supplying the)6.39 F F13.89 E F0 +(option,)3.89 E 1.461(when job control is enabled, forces)144 720 R F1 +(wait)3.961 E F0 1.461(to w)3.961 F 1.461(ait for)-.1 F F2(id)3.961 E F0 +1.462(to terminate before returning its status,)3.961 F(GNU Bash 5.0)72 +768 Q(2004 Apr 20)149.565 E(24)198.725 E 0 Cg EP +%%Page: 25 25 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E .149 +(instead of returning when it changes status.)144 84 R(If)5.149 E/F1 10 +/Times-Italic@0 SF(id)2.659 E F0 .149(speci\214es a non-e)3.419 F .148 +(xistent process or job, the return)-.15 F(status is 127.)144 96 Q +(Otherwise, the return status is the e)5 E +(xit status of the last process or job w)-.15 E(aited for)-.1 E(.)-.55 E +/F2 10.95/Times-Bold@0 SF(SHELL COMP)72 112.8 Q -1.04(AT)-.81 G +(IBILITY MODE)1.04 E F0 .911 +(Bash-4.0 introduced the concept of a `shell compatibility le)108 124.8 +R -.15(ve)-.25 G .912(l', speci\214ed as a set of options to the shopt) +.15 F -.2(bu)108 136.8 S(iltin).2 E/F3 10/Times-Bold@0 SF(compat31)3.378 +E F0(,)A F3(compat32)3.378 E F0(,)A F3(compat40)3.378 E F0(,)A F3 +(compat41)3.378 E F0 3.378(,a)C .878(nd so on\).)-3.378 F .877 +(There is only one current compatibility)5.878 F(le)108 148.8 Q -.15(ve) +-.25 G 3.253(l-).15 G 3.253(-e)-3.253 G .753(ach option is mutually e) +-3.253 F(xclusi)-.15 E -.15(ve)-.25 G 5.753(.T).15 G .753 +(he compatibility le)-5.753 F -.15(ve)-.25 G 3.254(li).15 G 3.254(si) +-3.254 G .754(ntended to allo)-3.254 F 3.254(wu)-.25 G .754 +(sers to select be-)-3.254 F(ha)108 160.8 Q 1.084(vior from pre)-.2 F +1.084(vious v)-.25 F 1.083(ersions that is incompatible with ne)-.15 F +1.083(wer v)-.25 F 1.083(ersions while the)-.15 F 3.583(ym)-.15 G 1.083 +(igrate scripts to use)-3.583 F(current features and beha)108 172.8 Q +(vior)-.2 E 2.5(.I)-.55 G(t')-2.5 E 2.5(si)-.55 G +(ntended to be a temporary solution.)-2.5 E 1.456 +(This section does not mention beha)108 189.6 R 1.457 +(vior that is standard for a particular v)-.2 F 1.457 +(ersion \(e.g., setting)-.15 F F3(compat32)3.957 E F0 .887 +(means that quoting the rhs of the re)108 201.6 R(ge)-.15 E .886 +(xp matching operator quotes special re)-.15 F(ge)-.15 E .886 +(xp characters in the w)-.15 F(ord,)-.1 E(which is def)108 213.6 Q +(ault beha)-.1 E(vior in bash-3.2 and abo)-.2 E -.15(ve)-.15 G(\).).15 E +.522(If a user enables, say)108 230.4 R(,)-.65 E F3(compat32)3.023 E F0 +3.023(,i)C 3.023(tm)-3.023 G .523(ay af)-3.023 F .523(fect the beha)-.25 +F .523(vior of other compatibility le)-.2 F -.15(ve)-.25 G .523 +(ls up to and includ-).15 F .26(ing the current compatibility le)108 +242.4 R -.15(ve)-.25 G 2.76(l. The).15 F .259 +(idea is that each compatibility le)2.759 F -.15(ve)-.25 G 2.759(lc).15 +G .259(ontrols beha)-2.759 F .259(vior that changed)-.2 F 1.645 +(in that v)108 254.4 R 1.646(ersion of)-.15 F F3(bash)4.146 E F0 4.146 +(,b)C 1.646(ut that beha)-4.346 F 1.646(vior may ha)-.2 F 1.946 -.15 +(ve b)-.2 H 1.646(een present in earlier v).15 F 4.146(ersions. F)-.15 F +1.646(or instance, the)-.15 F .761 +(change to use locale-based comparisons with the)108 266.4 R F3([[)3.261 +E F0 .76(command came in bash-4.1, and earlier v)3.261 F .76 +(ersions used)-.15 F 1.904(ASCII-based comparisons, so enabling)108 +278.4 R F3(compat32)4.404 E F0 1.905 +(will enable ASCII-based comparisons as well.)4.404 F(That)6.905 E .296 +(granularity may not be suf)108 290.4 R .296 +(\214cient for all uses, and as a result users should emplo)-.25 F 2.796 +(yc)-.1 G .295(ompatibility le)-2.796 F -.15(ve)-.25 G .295(ls care-).15 +F(fully)108 302.4 Q 5(.R)-.65 G(ead the documentation for a particular \ +feature to \214nd out the current beha)-5 E(vior)-.2 E(.)-.55 E .531 +(Bash-4.3 introduced a ne)108 319.2 R 3.031(ws)-.25 G .531(hell v)-3.031 +F(ariable:)-.25 E/F4 9/Times-Bold@0 SF -.27(BA)3.031 G(SH_COMP).27 E +-.855(AT)-.666 G/F5 9/Times-Roman@0 SF(.).855 E F0 .531(The v)5.031 F +.531(alue assigned to this v)-.25 F .532(ariable \(a decimal)-.25 F -.15 +(ve)108 331.2 S .108(rsion number lik).15 F 2.608(e4)-.1 G .108 +(.2, or an inte)-2.608 F .108(ger corresponding to the)-.15 F F3(compat) +2.607 E F1(NN)A F0 .107(option, lik)2.607 F 2.607(e4)-.1 G .107 +(2\) determines the com-)-2.607 F(patibility le)108 343.2 Q -.15(ve)-.25 +G(l.).15 E .387(Starting with bash-4.4, Bash has be)108 360 R .388 +(gun deprecating older compatibility le)-.15 F -.15(ve)-.25 G 2.888 +(ls. Ev).15 F(entually)-.15 E 2.888(,t)-.65 G .388(he options will) +-2.888 F(be remo)108 372 Q -.15(ve)-.15 G 2.5(di).15 G 2.5(nf)-2.5 G -.2 +(avo)-2.6 G 2.5(ro).2 G(f)-2.5 E F4 -.27(BA)2.5 G(SH_COMP).27 E -.855 +(AT)-.666 G F5(.).855 E F0 1.164(Bash-5.0 is the \214nal v)108 388.8 R +1.164(ersion for which there will be an indi)-.15 F 1.163 +(vidual shopt option for the pre)-.25 F 1.163(vious v)-.25 F(ersion.) +-.15 E(Users should use)108 400.8 Q F4 -.27(BA)2.5 G(SH_COMP).27 E -.855 +(AT)-.666 G F0(on bash-5.0 and later v)3.105 E(ersions.)-.15 E 1.613 +(The follo)108 417.6 R 1.613(wing table describes the beha)-.25 F 1.613 +(vior changes controlled by each compatibility le)-.2 F -.15(ve)-.25 G +4.113(ls).15 G 4.114(etting. The)-4.113 F F3(compat)108 429.6 Q F1(NN)A +F0 1.186(tag is used as shorthand for setting the compatibility le)3.686 +F -.15(ve)-.25 G 3.686(lt).15 G(o)-3.686 E F1(NN)3.686 E F0 1.186 +(using one of the follo)3.686 F(wing)-.25 E 3.806(mechanisms. F)108 +441.6 R 1.306(or v)-.15 F 1.306 +(ersions prior to bash-5.0, the compatibility le)-.15 F -.15(ve)-.25 G +3.807(lm).15 G 1.307(ay be set using the corresponding)-3.807 F F3 +(compat)108 453.6 Q F1(NN)A F0 .502(shopt option.)3.002 F -.15(Fo)5.502 +G 3.002(rb).15 G .502(ash-4.3 and later v)-3.002 F .502(ersions, the) +-.15 F F4 -.27(BA)3.002 G(SH_COMP).27 E -.855(AT)-.666 G F0 -.25(va) +3.607 G .502(riable is preferred, and it).25 F +(is required for bash-5.1 and later v)108 465.6 Q(ersions.)-.15 E F3 +(compat31)108 482.4 Q F0<83>144 494.4 Q(quoting the rhs of the)180 494.4 +Q F3([[)2.5 E F0(command')2.5 E 2.5(sr)-.55 G -.15(eg)-2.5 G -.15(ex).15 +G 2.5(pm).15 G(atching operator \(=~\) has no special ef)-2.5 E(fect) +-.25 E F3(compat32)108 511.2 Q F0<83>144 523.2 Q .35 +(interrupting a command list such as "a ; b ; c" causes the e)180 523.2 +R -.15(xe)-.15 G .35(cution of the ne).15 F .35(xt command)-.15 F .018 +(in the list \(in bash-4.0 and later v)180 535.2 R .018 +(ersions, the shell acts as if it recei)-.15 F -.15(ve)-.25 G 2.517(dt) +.15 G .017(he interrupt, so in-)-2.517 F +(terrupting one command in a list aborts the e)180 547.2 Q -.15(xe)-.15 +G(cution of the entire list\)).15 E F3(compat40)108 564 Q F0<83>144 576 +Q(the)180 576 Q F3(<)2.673 E F0(and)2.673 E F3(>)2.673 E F0 .173 +(operators to the)2.673 F F3([[)2.673 E F0 .173 +(command do not consider the current locale when compar)2.673 F(-)-.2 E +.068(ing strings; the)180 588 R 2.568(yu)-.15 G .068(se ASCII ordering.) +-2.568 F .068(Bash v)5.068 F .067 +(ersions prior to bash-4.1 use ASCII collation)-.15 F(and)180 600 Q F1 +(str)4.742 E(cmp)-.37 E F0 1.902 +(\(3\); bash-4.1 and later use the current locale').19 F 4.403(sc)-.55 G +1.903(ollation sequence and)-4.403 F F1(str)4.743 E(-)-.2 E(coll)180 612 +Q F0(\(3\).).51 E F3(compat41)108 628.8 Q F0<83>144 640.8 Q(in)180 640.8 +Q F1(posix)3.79 E F0(mode,)3.79 E F3(time)3.79 E F0 1.29(may be follo) +3.79 F 1.29(wed by options and still be recognized as a reserv)-.25 F +(ed)-.15 E -.1(wo)180 652.8 S(rd \(this is POSIX interpretation 267\)).1 +E<83>144 664.8 Q(in)180 664.8 Q F1(posix)2.708 E F0 .208 +(mode, the parser requires that an e)2.708 F -.15(ve)-.25 G 2.708(nn).15 +G .208(umber of single quotes occur in the)-2.708 F F1(wor)2.709 E(d) +-.37 E F0 .282(portion of a double-quoted parameter e)180 676.8 R .282 +(xpansion and treats them specially)-.15 F 2.781(,s)-.65 G 2.781(ot) +-2.781 G .281(hat charac-)-2.781 F(ters within the single quotes are co\ +nsidered quoted \(this is POSIX interpretation 221\))180 688.8 Q F3 +(compat42)108 705.6 Q F0<83>144 717.6 Q 1.055(the replacement string in\ + double-quoted pattern substitution does not under)180 717.6 R 1.056 +(go quote re-)-.18 F(mo)180 729.6 Q -.25(va)-.15 G(l, as it does in v) +.25 E(ersions after bash-4.2)-.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20) +149.565 E(25)198.725 E 0 Cg EP +%%Page: 26 26 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E<83>144 84 Q .021 +(in posix mode, single quotes are considered special when e)180 84 R +.021(xpanding the)-.15 F/F1 10/Times-Italic@0 SF(wor)2.52 E(d)-.37 E F0 +.02(portion of a)2.52 F .017(double-quoted parameter e)180 96 R .017 +(xpansion and can be used to quote a closing brace or other spe-)-.15 F +.999(cial character \(this is part of POSIX interpretation 221\); in la\ +ter v)180 108 R .998(ersions, single quotes)-.15 F +(are not special within double-quoted w)180 120 Q(ord e)-.1 E(xpansions) +-.15 E/F2 10/Times-Bold@0 SF(compat43)108 136.8 Q F0<83>144 148.8 Q 1.07 +(the shell does not print a w)180 148.8 R 1.071 +(arning message if an attempt is made to use a quoted com-)-.1 F .249 +(pound assignment as an ar)180 160.8 R .248 +(gument to declare \(declare -a foo='\(1 2\)'\). Later v)-.18 F .248 +(ersions w)-.15 F(arn)-.1 E(that this usage is deprecated)180 172.8 Q +<83>144 184.8 Q -.1(wo)180 184.8 S .5(rd e).1 F .501 +(xpansion errors are considered non-f)-.15 F .501 +(atal errors that cause the current command to)-.1 F -.1(fa)180 196.8 S +.605(il, e).1 F -.15(ve)-.25 G 3.105(ni).15 G 3.105(np)-3.105 G .605 +(osix mode \(the def)-3.105 F .605(ault beha)-.1 F .605(vior is to mak) +-.2 F 3.105(et)-.1 G .605(hem f)-3.105 F .605 +(atal errors that cause the)-.1 F(shell to e)180 208.8 Q(xit\))-.15 E +<83>144 220.8 Q .354(when e)180 220.8 R -.15(xe)-.15 G .354 +(cuting a shell function, the loop state \(while/until/etc.\)).15 F .355 +(is not reset, so)5.354 F F2(br)2.855 E(eak)-.18 E F0(or)2.855 E F2 +(continue)180 232.8 Q F0 .052 +(in that function will break or continue loops in the calling conte) +2.553 F .052(xt. Bash-4.4 and)-.15 F(later reset the loop state to pre) +180 244.8 Q -.15(ve)-.25 G(nt this).15 E F2(compat44)108 261.6 Q F0<83> +144 273.6 Q .719(the shell sets up the v)180 273.6 R .719(alues used by) +-.25 F/F3 9/Times-Bold@0 SF -.27(BA)3.219 G(SH_ARGV).27 E F0(and)2.969 E +F3 -.27(BA)3.219 G(SH_ARGC).27 E F0 .719(so the)2.969 F 3.219(yc)-.15 G +.719(an e)-3.219 F(xpand)-.15 E(to the shell')180 285.6 Q 2.5(sp)-.55 G +(ositional parameters e)-2.5 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(fe)-2.5 G +(xtended deb)-2.65 E(ugging mode is not enabled)-.2 E<83>144 297.6 Q +2.635(as)180 297.6 S .135(ubshell inherits loops from its parent conte) +-2.635 F .135(xt, so)-.15 F F2(br)2.635 E(eak)-.18 E F0(or)2.635 E F2 +(continue)2.634 E F0 .134(will cause the sub-)2.634 F(shell to e)180 +309.6 Q 2.5(xit. Bash-5.0)-.15 F(and later reset the loop state to pre) +2.5 E -.15(ve)-.25 G(nt the e).15 E(xit)-.15 E<83>144 321.6 Q -.25(va) +180 321.6 S .618(riable assignments preceding b).25 F .618(uiltins lik) +-.2 F(e)-.1 E F2(export)3.118 E F0(and)3.118 E F2 -.18(re)3.118 G +(adonly).18 E F0 .618(that set attrib)3.118 F .619(utes con-)-.2 F .12 +(tinue to af)180 333.6 R .12(fect v)-.25 F .119 +(ariables with the same name in the calling en)-.25 F .119(vironment e) +-.4 F -.15(ve)-.25 G 2.619(ni).15 G 2.619(ft)-2.619 G .119(he shell is) +-2.619 F(not in posix mode)180 345.6 Q F2(compat50)108 362.4 Q F0<83>144 +374.4 Q 1.209(Bash-5.1 changed the w)180 374.4 R(ay)-.1 E F3($RANDOM) +3.709 E F0 1.209(is generated to introduce slightly more random-)3.459 F +1.019(ness. If the shell compatibility le)180 386.4 R -.15(ve)-.25 G +3.518(li).15 G 3.518(ss)-3.518 G 1.018(et to 50 or lo)-3.518 F(wer)-.25 +E 3.518(,i)-.4 G 3.518(tr)-3.518 G -2.15 -.25(ev e)-3.518 H 1.018 +(rts to the method from).25 F .732(bash-5.0 and pre)180 398.4 R .732 +(vious v)-.25 F .733 +(ersions, so seeding the random number generator by assigning a)-.15 F +-.25(va)180 410.4 S(lue to).25 E F3(RANDOM)2.5 E F0 +(will produce the same sequence as in bash-5.0)2.25 E<83>144 422.4 Q +.696(If the command hash table is empty)180 422.4 R 3.196(,b)-.65 G .696 +(ash v)-3.196 F .695(ersions prior to bash-5.1 printed an informa-)-.15 +F 1.32(tional message to that ef)180 434.4 R 1.321(fect, e)-.25 F -.15 +(ve)-.25 G 3.821(nw).15 G 1.321 +(hen producing output that can be reused as input.)-3.821 F +(Bash-5.1 suppresses that message when the)180 446.4 Q F22.5 E F0 +(option is supplied.)2.5 E/F4 10.95/Times-Bold@0 SF(SEE ALSO)72 463.2 Q +F0(bash\(1\), sh\(1\))108 475.2 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20) +149.565 E(26)198.725 E 0 Cg EP +%%Trailer +end +%%EOF diff --git a/bash-5.1/doc/fdl.texi b/bash-5.1/doc/fdl.texi new file mode 100644 index 0000000..8805f1a --- /dev/null +++ b/bash-5.1/doc/fdl.texi @@ -0,0 +1,506 @@ +@c The GNU Free Documentation License. +@center Version 1.3, 3 November 2008 + +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. + +@display +Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. +@uref{http://fsf.org/} + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +@end display + +@enumerate 0 +@item +PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document @dfn{free} in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of ``copyleft'', which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +@item +APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The ``Document'', below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as ``you''. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A ``Modified Version'' of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A ``Secondary Section'' is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The ``Invariant Sections'' are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The ``Cover Texts'' are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A ``Transparent'' copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not ``Transparent'' is called ``Opaque''. + +Examples of suitable formats for Transparent copies include plain +@sc{ascii} without markup, Texinfo input format, La@TeX{} input +format, @acronym{SGML} or @acronym{XML} using a publicly available +@acronym{DTD}, and standard-conforming simple @acronym{HTML}, +PostScript or @acronym{PDF} designed for human modification. Examples +of transparent image formats include @acronym{PNG}, @acronym{XCF} and +@acronym{JPG}. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, @acronym{SGML} or +@acronym{XML} for which the @acronym{DTD} and/or processing tools are +not generally available, and the machine-generated @acronym{HTML}, +PostScript or @acronym{PDF} produced by some word processors for +output purposes only. + +The ``Title Page'' means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, ``Title Page'' means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +The ``publisher'' means any person or entity that distributes copies +of the Document to the public. + +A section ``Entitled XYZ'' means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as ``Acknowledgements'', +``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' +of such a section when you modify the Document means that it remains a +section ``Entitled XYZ'' according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +@item +VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +@item +COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +@item +MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +@enumerate A +@item +Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +@item +List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +@item +State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +@item +Preserve all the copyright notices of the Document. + +@item +Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +@item +Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +@item +Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +@item +Include an unaltered copy of this License. + +@item +Preserve the section Entitled ``History'', Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled ``History'' in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +@item +Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the ``History'' section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +@item +For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +@item +Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +@item +Delete any section Entitled ``Endorsements''. Such a section +may not be included in the Modified Version. + +@item +Do not retitle any existing section to be Entitled ``Endorsements'' or +to conflict in title with any Invariant Section. + +@item +Preserve any Warranty Disclaimers. +@end enumerate + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled ``Endorsements'', provided it contains +nothing but endorsements of your Modified Version by various +parties---for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +@item +COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled ``History'' +in the various original documents, forming one section Entitled +``History''; likewise combine any sections Entitled ``Acknowledgements'', +and any sections Entitled ``Dedications''. You must delete all +sections Entitled ``Endorsements.'' + +@item +COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +@item +AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an ``aggregate'' if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +@item +TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled ``Acknowledgements'', +``Dedications'', or ``History'', the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +@item +TERMINATION + +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. + +@item +FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation 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. See +@uref{http://www.gnu.org/copyleft/}. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License ``or any later version'' applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +@item +RELICENSING + +``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the +site means any set of copyrightable works thus published on the MMC +site. + +``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +``Incorporate'' means to publish or republish a Document, in whole or +in part, as part of another Document. + +An MMC is ``eligible for relicensing'' if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole +or in part into the MMC, (1) had no cover texts or invariant sections, +and (2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + +@end enumerate + +@page +@heading ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +@smallexample +@group + Copyright (C) @var{year} @var{your name}. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU + Free Documentation License''. +@end group +@end smallexample + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the ``with@dots{}Texts.'' line with this: + +@smallexample +@group + with the Invariant Sections being @var{list their titles}, with + the Front-Cover Texts being @var{list}, and with the Back-Cover Texts + being @var{list}. +@end group +@end smallexample + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +@c Local Variables: +@c ispell-local-pdict: "ispell-dict" +@c End: + diff --git a/bash-5.1/doc/fdl.txt b/bash-5.1/doc/fdl.txt new file mode 100644 index 0000000..2f7e03c --- /dev/null +++ b/bash-5.1/doc/fdl.txt @@ -0,0 +1,451 @@ + + GNU Free Documentation License + Version 1.3, 3 November 2008 + + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +0. PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +1. APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The "Document", below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as "you". You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A "Modified Version" of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A "Secondary Section" is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The "Invariant Sections" are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The "Cover Texts" are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A "Transparent" copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called "Opaque". + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The "Title Page" means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +The "publisher" means any person or entity that distributes copies of +the Document to the public. + +A section "Entitled XYZ" means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as "Acknowledgements", +"Dedications", "Endorsements", or "History".) To "Preserve the Title" +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +2. VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no +other conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +3. COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to +give them a chance to provide you with an updated version of the +Document. + + +4. MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. +D. Preserve all the copyright notices of the Document. +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. +H. Include an unaltered copy of this License. +I. Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. +K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. +M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. +N. Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. +O. Preserve any Warranty Disclaimers. + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +5. COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + + +6. COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other +documents released under this License, and replace the individual +copies of this License in the various documents with a single copy +that is included in the collection, provided that you follow the rules +of this License for verbatim copying of each of the documents in all +other respects. + +You may extract a single document from such a collection, and +distribute it individually under this License, provided you insert a +copy of this License into the extracted document, and follow this +License in all other respects regarding verbatim copying of that +document. + + +7. AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +8. TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +9. TERMINATION + +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. + + +10. FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions of the +GNU Free Documentation 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. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +11. RELICENSING + +"Massive Multiauthor Collaboration Site" (or "MMC Site") means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +"Massive Multiauthor Collaboration" (or "MMC") contained in the site +means any set of copyrightable works thus published on the MMC site. + +"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +"Incorporate" means to publish or republish a Document, in whole or in +part, as part of another Document. + +An MMC is "eligible for relicensing" if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole or +in part into the MMC, (1) had no cover texts or invariant sections, and +(2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + + +ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + + Copyright (c) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. diff --git a/bash-5.1/doc/htmlpost.sh b/bash-5.1/doc/htmlpost.sh new file mode 100755 index 0000000..51241b1 --- /dev/null +++ b/bash-5.1/doc/htmlpost.sh @@ -0,0 +1,19 @@ +#! /bin/sh +# +# Some of these should really be done by man2html +# +# The ~/xxx links don't really work -- netscape doesn't expand the home +# directory of the user running navigator +# + +sed -e 's|gnu.bash.bug|gnu.bash.bug|g' \ + -e 's|/bin/bash|/bin/bash|g' \ + -e 's|/etc/profile|/etc/profile|g' \ + -e 's|~/.bash_profile|~/.bash_profile|g' \ + -e 's|~/.bash_login|~/.bash_login|g' \ + -e 's|~/.profile|~/.profile|g' \ + -e 's|~/.bashrc|~/.bashrc|g' \ + -e 's|~/.bash_logout|~/.bash_logout|g' \ + -e 's|~/.bash_history|~/.bash_history|g' \ + -e 's|~/.inputrc|~/.inputrc|g' \ + -e 's|/etc/inputrc|/etc/inputrc|g' diff --git a/bash-5.1/doc/infopost.sh b/bash-5.1/doc/infopost.sh new file mode 100755 index 0000000..85c49b4 --- /dev/null +++ b/bash-5.1/doc/infopost.sh @@ -0,0 +1,8 @@ +#! /bin/sh +# +# Some of these should really be done by options to makeinfo or by +# using @setfilename, but this way we can have both bashref.info and +# bash.info (for installing) +# + +sed -e 's|bashref.info|bash.info|g' diff --git a/bash-5.1/doc/rbash.0 b/bash-5.1/doc/rbash.0 new file mode 100644 index 0000000..b602a70 --- /dev/null +++ b/bash-5.1/doc/rbash.0 @@ -0,0 +1,63 @@ +RBASH(1) General Commands Manual RBASH(1) + + + +NNAAMMEE + rbash - restricted bash, see bbaasshh(1) + +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, HHIISSTTFFIILLEE, EENNVV, + or BBAASSHH__EENNVV + + +o specifying command names containing // + + +o specifying a filename containing a // as an argument to the .. + builtin command + + +o specifying a filename containing a slash as an argument to the + hhiissttoorryy 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, rrbbaasshh + turns off any restrictions in the shell spawned to execute the script. + +SSEEEE AALLSSOO + bash(1) + + + +GNU Bash-4.0 2004 Apr 20 RBASH(1) diff --git a/bash-5.1/doc/rbash.1 b/bash-5.1/doc/rbash.1 new file mode 100644 index 0000000..56e38fd --- /dev/null +++ b/bash-5.1/doc/rbash.1 @@ -0,0 +1,8 @@ +.TH RBASH 1 "2004 Apr 20" "GNU Bash-4.0" +.SH NAME +rbash \- restricted bash, see \fBbash\fR(1) +.SH RESTRICTED SHELL +.nr zY 1 +.so bash.1 +.SH SEE ALSO +bash(1) diff --git a/bash-5.1/doc/rbash.ps b/bash-5.1/doc/rbash.ps new file mode 100644 index 0000000..45c9f66 --- /dev/null +++ b/bash-5.1/doc/rbash.ps @@ -0,0 +1,290 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.22.4 +%%CreationDate: Wed Nov 18 15:13:06 2020 +%%DocumentNeededResources: font Times-Roman +%%+ font Times-Bold +%%DocumentSuppliedResources: procset grops 1.22 4 +%%Pages: 1 +%%PageOrder: Ascend +%%DocumentMedia: Default 612 792 0 () () +%%Orientation: Portrait +%%EndComments +%%BeginDefaults +%%PageMedia: Default +%%EndDefaults +%%BeginProlog +%%BeginResource: procset grops 1.22 4 +%!PS-Adobe-3.0 Resource-ProcSet +/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 +DEFS/BPhook known{DEFS begin BPhook end}if +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}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 +/Fr{ +setrgbcolor fill +}bind def +/setcmykcolor where{ +pop +/Fk{ +setcmykcolor fill +}bind def +}if +/Fg{ +setgray fill +}bind def +/FL/fill load def +/LW/setlinewidth load def +/Cr/setrgbcolor load def +/setcmykcolor where{ +pop +/Ck/setcmykcolor load def +}if +/Cg/setgray load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne +2 index/UniqueID ne +and +{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 +/setpagedevice{}def +mark +}bind def +/PEND{ +cleartomark +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%EndProlog +%%BeginSetup +%%BeginFeature: *PageSize Default +<< /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice +%%EndFeature +%%IncludeResource: font Times-Roman +%%IncludeResource: font Times-Bold +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/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 +/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(RB)72 48 Q 130.47(ASH\(1\) General)-.35 F +(Commands Manual)2.5 E(RB)132.97 E(ASH\(1\))-.35 E/F1 10.95/Times-Bold@0 +SF -.219(NA)72 84 S(ME).219 E F0(rbash \255 restricted bash, see)108 96 +Q/F2 10/Times-Bold@0 SF(bash)2.5 E F0(\(1\))A F1(RESTRICTED SHELL)72 +112.8 Q F0(If)108 124.8 Q F2(bash)3.582 E F0 1.081 +(is started with the name)3.581 F F2(rbash)3.581 E F0 3.581(,o)C 3.581 +(rt)-3.581 G(he)-3.581 E F23.581 E F0 1.081 +(option is supplied at in)3.581 F -.2(vo)-.4 G 1.081 +(cation, the shell becomes re-).2 F 2.976(stricted. A)108 136.8 R .476 +(restricted shell is used to set up an en)2.976 F .476 +(vironment more controlled than the standard shell.)-.4 F .477(It be-) +5.477 F(ha)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<83>108 165.6 Q +(changing directories with)144 165.6 Q F2(cd)2.5 E F0<83>108 182.4 Q +(setting or unsetting the v)144 182.4 Q(alues of)-.25 E/F3 9 +/Times-Bold@0 SF(SHELL)2.5 E/F4 9/Times-Roman@0 SF(,)A F3 -.666(PA)2.25 +G(TH)-.189 E F4(,)A F3(HISTFILE)2.25 E F4(,)A F3(ENV)2.25 E F4(,)A F0 +(or)2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0<83>108 199.2 Q +(specifying command names containing)144 199.2 Q F2(/)2.5 E F0<83>108 +216 Q(specifying a \214lename containing a)144 216 Q 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<83>108 232.8 Q +(specifying a \214lename containing a slash as an ar)144 232.8 Q +(gument to the)-.18 E F2(history)2.5 E F0 -.2(bu)2.5 G(iltin command).2 +E<83>108 249.6 Q .45 +(specifying a \214lename containing a slash as an ar)144 249.6 R .449 +(gument to the)-.18 F F22.949 E F0 .449(option to the)2.949 F F2 +(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 261.6 Q +<83>108 278.4 Q(importing function de\214nitions from the shell en)144 +278.4 Q(vironment at startup)-.4 E<83>108 295.2 Q(parsing the v)144 +295.2 Q(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E +(vironment at startup)-.4 E<83>108 312 Q(redirecting output using the >\ +, >|, <>, >&, &>, and >> redirection operators)144 312 Q<83>108 328.8 Q +(using the)144 328.8 Q F2(exec)2.5 E F0 -.2(bu)2.5 G +(iltin command to replace the shell with another command).2 E<83>108 +345.6 Q(adding or deleting b)144 345.6 Q(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<83>108 362.4 Q +(using the)144 362.4 Q F2(enable)2.5 E F0 -.2(bu)2.5 G +(iltin command to enable disabled shell b).2 E(uiltins)-.2 E<83>108 +379.2 Q(specifying the)144 379.2 Q 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<83>108 396 Q +(turning of)144 396 Q 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 412.8 Q 2.5(ys)-.15 G +(tartup \214les are read.)-2.5 E .429 +(When a command that is found to be a shell script is e)108 429.6 R -.15 +(xe)-.15 G(cuted,).15 E F2(rbash)2.929 E F0 .429(turns of)2.929 F 2.929 +(fa)-.25 G .729 -.15(ny r)-2.929 H .429(estrictions in the shell).15 F +(spa)108 441.6 Q(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E +F1(SEE ALSO)72 458.4 Q F0(bash\(1\))108 470.4 Q(GNU Bash-4.0)72 768 Q +(2004 Apr 20)148.735 E(1)203.725 E 0 Cg EP +%%Trailer +end +%%EOF diff --git a/bash-5.1/doc/rose94.pdf b/bash-5.1/doc/rose94.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1772f543c53f92f9d4ca59f6d816f42424ad3bb3 GIT binary patch literal 228533 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%0DHuMtU@<{760~54xL%EXrp6}9cO(;N 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 G82<}};#|f6 literal 0 HcmV?d00001 diff --git a/bash-5.1/doc/rose94.ps b/bash-5.1/doc/rose94.ps new file mode 100644 index 0000000..1fff283 --- /dev/null +++ b/bash-5.1/doc/rose94.ps @@ -0,0 +1,1581 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.08 +%%DocumentNeededResources: font Times-Bold +%%+ font Times-Italic +%%+ font Times-Roman +%%+ font Courier +%%+ font Symbol +%%DocumentSuppliedResources: procset grops 1.08 0 +%%Pages: 13 +%%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 Times-Bold +%%IncludeResource: font Times-Italic +%%IncludeResource: font Times-Roman +%%IncludeResource: font Courier +%%IncludeResource: font Symbol +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, the Bour)210.99 123 Q(ne\255Again Shell)-.18 E/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(ABSTRA)264.535 213 Q(CT)-.3 E/F2 10/Times-Roman@0 SF .019(An o)133 237 R +-.15(ve)-.15 G(rvie).15 E 2.519(wo)-.25 G 2.519(f/)191.918 237 S .018 +(bin/sh\255compatible shells is presented, as well as an introduction to) +200.547 237 R .128(the POSIX.2 shell and tools standard.)108 249 R .128 +(These serv)5.128 F 2.628(ea)-.15 G 2.628(sa)318.562 249 S 2.628(ni)329.52 249 +S .128(ntroduction to bash.)339.928 249 R 2.628(Ac)5.128 G(ompar)439.32 249 Q +(-)-.2 E .188(ison of bash to sh and ksh is presented, as well as a discussion\ + of features unique to bash.)108 261 R(Finally)108 273 Q 3.178(,s)-.65 G .678 +(ome of the changes and ne)145.258 273 R 3.178(wf)-.25 G .678 +(eatures to appear in the ne)268.486 273 R .678(xt bash release will be)-.15 F +(discussed.)108 285 Q/F3 10/Times-Bold@0 SF 2.5(1. Intr)72 321 R(oduction)-.18 +E(Bash)97 336.6 Q F2 .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.)316.032 336.6 +R .782(The name is an acron)72 348.6 R .782(ym for the `)-.15 F(`Bourne\255Ag) +-.74 E .782(ain SHell')-.05 F .782(', a pun on Ste)-.74 F 1.082 -.15(ve B)-.25 +H .783(ourne, the author of the direct).15 F .212(ancestor of the current)72 +360.6 R/F4 9/Times-Roman@0 SF(UNIX)2.712 E F2 2.712<8773>C(hell)199.131 360.6 Q +F1(/bin/sh)2.712 E F2 2.712(,w)C .212(hich appeared in the Se)256.505 360.6 R +-.15(ve)-.25 G .211(nth Edition Bell Labs Research v).15 F(er)-.15 E(-)-.2 E +(sion of)72 372.6 Q F4(UNIX)2.5 E F2([1].).833 E .191(Bash is an)97 388.2 R F3 +(sh)2.691 E F2 .192 +(\255compatible shell that incorporates useful features from the K)B .192 +(orn shell \()-.35 F F3(ksh)A F2 .833(\)[)C .192(2] and the)-.833 F 2.767(Cs)72 +400.2 S .267(hell \()85.327 400.2 R F3(csh)A F2 .833(\)[)C .267 +(3], described later in this article.)-.833 F .266 +(It is ultimately intended to be a conformant implementation)5.267 F 1.965 +(of the IEEE POSIX Shell and T)72 412.2 R 1.966(ools speci\214cation \(IEEE W) +-.8 F 1.966(orking Group 1003.2\).)-.8 F 1.966(It of)6.966 F 1.966 +(fers functional)-.25 F(impro)72 424.2 Q -.15(ve)-.15 G(ments o).15 E -.15(ve) +-.15 G 2.5(rs).15 G 2.5(hf)155.28 424.2 S(or both interacti)166.11 424.2 Q .3 +-.15(ve a)-.25 H(nd programming use.).15 E .802 +(While the GNU operating system will most lik)97 439.8 R .801(ely include a v) +-.1 F .801(ersion of the Berk)-.15 F(ele)-.1 E 3.301(ys)-.15 G .801 +(hell csh, bash)448.238 439.8 R .108(will be the def)72 451.8 R .108 +(ault shell.)-.1 F(Lik)5.108 E 2.608(eo)-.1 G .108(ther GNU softw)199.658 451.8 +R .108(are, bash is quite portable.)-.1 F .109(It currently runs on nearly e) +5.109 F -.15(ve)-.25 G(ry).15 E -.15(ve)72 463.8 S .367(rsion of).15 F F4(UNIX) +2.867 E F2 .367(and a fe)2.867 F 2.867(wo)-.25 G .367 +(ther operating systems \255 an independently-supported port e)187.933 463.8 R +.366(xists for OS/2, and)-.15 F .706(there are rumors of ports to DOS and W)72 +475.8 R(indo)-.4 E .706(ws NT)-.25 F 5.706(.P)-.74 G .706(orts to)295.97 475.8 +R F4(UNIX)3.206 E F2(-lik)A 3.206(es)-.1 G .706(ystems such as QNX and Minix) +372.979 475.8 R(are part of the distrib)72 487.8 Q(ution.)-.2 E .51 +(The original author of bash w)97 503.4 R .51(as Brian F)-.1 F .509 +(ox, an emplo)-.15 F .509(yee of the Free Softw)-.1 F .509(are F)-.1 F 3.009 +(oundation. The)-.15 F(cur)3.009 E(-)-.2 E(rent de)72 515.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)458.91 515.4 Q +-.15(ve)-.25 G(rsity).15 E(.)-.65 E F3 2.5(2. What)72 539.4 R(is a shell?)2.5 E +F2 1.241(At its base, a shell is simply a macro processor that e)97 555 R -.15 +(xe)-.15 G 1.242(cutes commands.).15 F(A)6.242 E F4(UNIX)3.742 E F2 1.242 +(shell is both a)3.742 F .189(command interpreter)72 567 R 2.688(,w)-.4 G .188 +(hich pro)167.787 567 R .188(vides the user interf)-.15 F .188 +(ace to the rich set of)-.1 F F4(UNIX)2.688 E F2 .188 +(utilities, and a programming)2.688 F .751(language, allo)72 579 R .752 +(wing these utilitites to be combined.)-.25 F .752 +(The shell reads commands either from a terminal or a)5.752 F 2.52 +(\214le. Files)72 591 R .019 +(containing commands can be created, and become commands themselv)2.52 F 2.519 +(es. These)-.15 F(ne)2.519 E 2.519(wc)-.25 G(ommands)465.11 591 Q(ha)72 603 Q +.395 -.15(ve t)-.2 H .095(he same status as system commands in directories lik) +.15 F(e)-.1 E F3(/bin)2.595 E F2 2.595(,a)C(llo)342.575 603 Q .096 +(wing users or groups to establish cus-)-.25 F(tom en)72 615 Q(vironments.)-.4 +E F3 2.5(2.1. Command)72 639 R(Inter)2.5 E(pr)-.1 E(eter)-.18 E F2 2.926(As)97 +654.6 S .426(hell allo)111.036 654.6 R .426(ws e)-.25 F -.15(xe)-.15 G .426 +(cution of).15 F F4(UNIX)2.926 E F2 .426 +(commands, both synchronously and asynchronously)2.926 F 5.425(.T)-.65 G(he) +460.165 654.6 Q F1 -.37(re)2.925 G(dir).37 E(ec-)-.37 E(tion)72 666.6 Q F2 .334 +(constructs permit \214ne-grained control of the input and output of those com\ +mands, and the shell allo)2.833 F(ws)-.25 E .559(control o)72 678.6 R -.15(ve) +-.15 G 3.058(rt).15 G .558(he contents of their en)126.697 678.6 R(vironment.) +-.4 E F4(UNIX)5.558 E F2 .558(shells also pro)3.058 F .558 +(vide a small set of b)-.15 F .558(uilt-in commands)-.2 F(\()72 690.6 Q F1 -.2 +(bu)C(iltins).2 E F2 4.611(\)i)C 2.112 +(mplementing functionality impossible \(e.g.,)115.861 690.6 R F3(cd)4.612 E F2 +(,)A F3(br)4.612 E(eak)-.18 E F2(,)A F3(continue)4.612 E F2 4.612(,a)C(nd) +399.074 690.6 Q F3(exec)4.612 E F2 4.612(\)o)C 4.612(ri)444.948 690.6 S(ncon) +455.67 690.6 Q -.15(ve)-.4 G(nient).15 E .32 LW 76 700.6 72 700.6 DL 80 700.6 +76 700.6 DL 84 700.6 80 700.6 DL 88 700.6 84 700.6 DL 92 700.6 88 700.6 DL 96 +700.6 92 700.6 DL 100 700.6 96 700.6 DL 104 700.6 100 700.6 DL 108 700.6 104 +700.6 DL 112 700.6 108 700.6 DL 116 700.6 112 700.6 DL 120 700.6 116 700.6 DL +124 700.6 120 700.6 DL 128 700.6 124 700.6 DL 132 700.6 128 700.6 DL 136 700.6 +132 700.6 DL 140 700.6 136 700.6 DL 144 700.6 140 700.6 DL/F5 8/Times-Roman@0 +SF 2<8755>72 710.6 S(NIX is a trademark of X/OPEN)83.776 710.6 Q EP +%%Page: 2 2 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.5(-2-)279.67 48 S(\()72 84 Q/F1 10/Times-Bold@0 SF +(history)A F0(,)A F1(getopts)3.505 E F0(,)A F1(kill)3.505 E F0 3.505(,o)C(r) +172.795 84 Q F1(pwd)3.505 E F0 3.505(,f)C 1.005(or e)207.305 84 R 1.005 +(xample\) to obtain via separate utilities.)-.15 F 1.005 +(Shells may be used interac-)6.005 F(ti)72 96 Q -.15(ve)-.25 G +(ly or non-interacti).15 E -.15(ve)-.25 G 2.5(ly: the).15 F 2.5(ya)-.15 G +(ccept input typed from the k)207.42 96 Q -.15(ey)-.1 G +(board or from a \214le.).15 E F1 2.5(2.2. Pr)72 120 R(ogramming Language)-.18 +E F0 .501(While e)97 135.6 R -.15(xe)-.15 G .501 +(cuting commands is essential, most of the po).15 F .501(wer \(and comple)-.25 +F .502(xity\) of shells is due to their)-.15 F .05 +(embedded programming languages.)72 147.6 R(Lik)5.049 E 2.549(ea)-.1 G .349 +-.15(ny h)245.398 147.6 T(igh-le).15 E -.15(ve)-.25 G 2.549(ll).15 G .049 +(anguage, the shell pro)303.276 147.6 R .049(vides v)-.15 F .049 +(ariables, \215o)-.25 F 2.549(wc)-.25 G(ontrol)480.11 147.6 Q +(constructs, quoting, and functions.)72 159.6 Q .475 +(The basic syntactic element is a)97 175.2 R/F2 10/Times-Italic@0 SF .475 +(simple command)2.975 F F0 5.475(.A)C .475 +(simple command consists of an optional set of)315.405 175.2 R -.25(va)72 187.2 +S .525(riable assignments, a command w).25 F .525 +(ord, and an optional list of ar)-.1 F 3.024(guments. Operators)-.18 F .524 +(to redirect input and)3.024 F(output may appear an)72 199.2 Q +(ywhere in a simple command.)-.15 E(Some e)5 E(xamples are:)-.15 E/F3 10 +/Courier@0 SF(who)97 211.2 Q(trn -e -S1 -N)97 223.2 Q(ls -l /bin > binfiles)97 +235.2 Q(make > make.out 2>make.errs)97 247.2 Q F0 2.518(Ap)97 262.8 S .018 +(ipeline is a sequence of tw)111.738 262.8 R 2.518(oo)-.1 G 2.518(rm)230.056 +262.8 S .018(ore commands separated by the character)243.684 262.8 R/F4 10 +/Symbol SF2.519 E F0 5.019(.T)C .019(he standard output)430.082 262.8 R +(of the \214rst command is connected to the standard input of the second.)72 +274.8 Q(Examples of pipelines include:)5 E F3(who | wc -l)97 286.8 Q +(ls -l | sort +3nr)97 298.8 Q F0 .578 +(Simple commands and pipelines may be combined into)97 314.4 R F2(lists)3.078 E +F0 5.578(.A)C .578(list is a sequence of pipelines sepa-)360.002 314.4 R .289 +(rated by one of)72 326.4 R F1(;)2.789 E F0(,)A F1(&)2.789 E F0(,)A F1(&&)2.789 +E F0 2.789(,o)C(r)185.103 326.4 Q F42.789 E F0 2.789(,a)C .289 +(nd optionally terminated by)210.831 326.4 R F1(;)2.789 E F0(,)A F1(&)2.789 E +F0 2.789(,o)C 2.789(ran)352.555 326.4 S -.25(ew)370.903 326.4 S 2.789 +(line. Commands).25 F .289(separated by)2.789 F F1(;)72 338.4 Q F0 .336(are e) +2.836 F -.15(xe)-.15 G .336(cuted sequentially; the shell w).15 F .335 +(aits for each to complete in turn.)-.1 F .335(If a command is terminated by) +5.335 F F1(&)2.835 E F0(,)A .007(the shell e)72 350.4 R -.15(xe)-.15 G .007 +(cutes it in the).15 F F2(bac)2.507 E(kgr)-.2 E(ound)-.45 E F0 2.508(,a)1.666 G +.008(nd does not w)236.076 350.4 R .008(ait for it to \214nish.)-.1 F .008 +(If tw)5.008 F 2.508(oc)-.1 G .008(ommands are separated by)397.616 350.4 R F1 +(&&)72 362.4 Q F0 3.008(,t)C .508(he second command e)96.948 362.4 R -.15(xe) +-.15 G .508(cutes only if the \214rst command succeeds.).15 F 3.007(As)5.508 G +.507(eparator of)383.575 362.4 R F43.007 E F0 .507(causes the sec-)3.007 +F(ond command to e)72 374.4 Q -.15(xe)-.15 G(cute only if the \214rst f).15 E +2.5(ails. Some)-.1 F -.15(ex)2.5 G(amples are:).15 E F3(who ; date)97 386.4 Q +(cd /usr/src || exit 1)97 398.4 Q(cd "$@" && xtitle $HOST: $PWD)97 410.4 Q F0 +1.36(The shell programming language pro)97 426 R 1.361(vides a v)-.15 F 1.361 +(ariety of \215o)-.25 F 3.861(wc)-.25 G 1.361(ontrol structures.)353.276 426 R +(The)6.361 E F1 -.25(fo)3.861 G(r).25 E F0(command)3.861 E(allo)72 438 Q .654 +(ws a list of commands to be e)-.25 F -.15(xe)-.15 G .654 +(cuted once for each w).15 F .654(ord in a w)-.1 F .654(ord list.)-.1 F(The) +5.654 E F1(case)3.154 E F0 .654(command allo)3.154 F .654(ws a)-.25 F .627 +(list to be e)72 450 R -.15(xe)-.15 G .628(cuted if a w).15 F .628 +(ord matches a speci\214ed pattern.)-.1 F(The)5.628 E F1(while)3.128 E F0(and) +3.128 E F1(until)3.128 E F0 .628(commands e)3.128 F -.15(xe)-.15 G .628 +(cute a list of).15 F 1.559 +(commands as long as a guard command completes successfully or f)72 462 R 1.559 +(ails, respecti)-.1 F -.15(ve)-.25 G(ly).15 E 6.559(.T)-.65 G(he)440.892 462 Q +F1(if)4.059 E F0(command)4.059 E(allo)72 474 Q(ws e)-.25 E -.15(xe)-.15 G +(cution of dif).15 E(ferent command lists depending on the e)-.25 E +(xit status of a guard command.)-.15 E(A)97 489.6 Q F2 .385(shell function) +2.885 F F0 .385(associates a list of commands with a name.)2.885 F .386 +(Each time the name is used as a simple)5.385 F .938(command, the list is e)72 +501.6 R -.15(xe)-.15 G 3.438(cuted. This).15 F -.15(exe)3.438 G .938 +(cution tak).15 F .938(es place in the current shell conte)-.1 F .937 +(xt; no ne)-.15 F 3.437(wp)-.25 G .937(rocess is)468.903 501.6 R 2.5 +(created. Functions)72 513.6 R(may ha)2.5 E .3 -.15(ve t)-.2 H(heir o).15 E +(wn ar)-.25 E(gument lists and local v)-.18 E(ariables, and may be recursi)-.25 +E -.15(ve)-.25 G(.).15 E .722(The shell language pro)97 529.2 R .722(vides v) +-.15 F .722(ariables, which may be both set and referenced.)-.25 F 3.222(An) +5.722 G .722(umber of special)435.906 529.2 R 1.02 +(parameters are present, such as)72 541.2 R F1($@)3.519 E F0 3.519(,w)C 1.019 +(hich returns the shell')231.257 541.2 R 3.519(sp)-.55 G 1.019 +(ositional parameters \(command-line ar)333.103 541.2 R(gu-)-.18 E(ments\),)72 +553.2 Q F1($?)2.906 E F0 2.906(,t)C .406(he e)122.812 553.2 R .406 +(xit status of the pre)-.15 F .406(vious command, and)-.25 F F1($$)2.906 E F0 +2.906(,t)C .406(he shell')322.436 553.2 R 2.906(sp)-.55 G .406(rocess I.D.) +368.248 553.2 R .407(In addition to pro)5.406 F(vid-)-.15 E .129 +(ing special parameters and user)72 565.2 R .129(-de\214ned v)-.2 F .129 +(ariables, the shell permits the v)-.25 F .128(alues of certain v)-.25 F .128 +(ariables to control)-.25 F .16(its beha)72 577.2 R(vior)-.2 E 5.16(.S)-.55 G +.16(ome of these v)131.57 577.2 R .16(ariables include)-.25 F F1(IFS)2.661 E F0 +2.661(,w)C .161(hich controls ho)284.202 577.2 R 2.661(wt)-.25 G .161 +(he shell splits w)361.375 577.2 R(ords,)-.1 E F1 -.74(PA)2.661 G(TH)-.21 E F0 +2.661(,w)C(hich)486.78 577.2 Q .392 +(tells the shell where to look for commands, and)72 589.2 R F1(PS1)2.892 E F0 +2.892(,w)C .392(hose v)297.01 589.2 R .392 +(alue is the string the shell uses to prompt for)-.25 F 3.371(commands. There) +72 601.2 R .871(are a fe)3.371 F 3.371(wv)-.25 G .871(ariables whose v)196.645 +601.2 R .871(alues are set by the shell and normally only referenced by)-.25 F +(users;)72 613.2 Q F1(PWD)3.663 E F0 3.663(,w)C 1.163(hose v)135.706 613.2 R +1.163(alue is the pathname of the shell')-.25 F 3.662(sc)-.55 G 1.162(urrent w) +313.068 613.2 R 1.162(orking directory)-.1 F 3.662(,i)-.65 G 3.662(so)421.894 +613.2 S 1.162(ne such v)434.446 613.2 R(ariable.)-.25 E -1.11(Va)72 625.2 S +.008(riables can be used in nearly an)1.11 F 2.509(ys)-.15 G .009(hell conte) +219.37 625.2 R .009(xt and are particularly v)-.15 F .009 +(aluable when used with control struc-)-.25 F(tures.)72 637.2 Q .583 +(There are se)97 652.8 R -.15(ve)-.25 G .583(ral shell).15 F F2 -.2(ex)3.083 G +(pansions).2 E F0 5.583(.A)C -.25(va)254.298 652.8 S(riable).25 E F2(name)3.083 +E F0 .583(is e)3.083 F .582(xpanded to its v)-.15 F .582(alue using ${)-.25 F +F2(name)A F0 .582(}, where)B 1.387(the braces are optional.)72 664.8 R 1.387 +(There are a number of parameter e)6.387 F 1.388(xpansions a)-.15 F -.25(va)-.2 +G 3.888(ilable. F).25 F 1.388(or e)-.15 F 1.388(xample, there are)-.15 F(${)72 +676.8 Q F2(name)A F0<3aad>A F2(wor)A(d)-.37 E F0 .891(}, which e)B .891 +(xpands to)-.15 F F2(wor)3.391 E(d)-.37 E F0(if)3.391 E F2(name)3.391 E F0 .891 +(is unset or null, and the in)3.391 F -.15(ve)-.4 G .89(rse ${).15 F F2(name)A +F0(:+)A F2(wor)A(d)-.37 E F0 .89(}, which)B -.15(ex)72 688.8 S 1.203(pands to) +.15 F F2(wor)3.703 E(d)-.37 E F0(if)3.703 E F2(name)3.703 E F0 1.203 +(is set and not null.)3.703 F F2 1.203(Command substitution)6.203 F F0(allo) +3.703 E 1.204(ws the output of a command to)-.25 F .918 +(replace the command name.)72 700.8 R .918(The syntax is `)5.918 F F2(command)A +F0(`.)A F2(Command)5.918 E F0 .918(is e)3.418 F -.15(xe)-.15 G .918 +(cuted and it and the backquotes).15 F .299 +(are replaced by its output, with trailing ne)72 712.8 R .299(wlines remo)-.25 +F -.15(ve)-.15 G(d.).15 E F2 -.8(Pa)5.299 G .299(thname e).8 F(xpansion)-.2 E +F0 .299(is a w)2.799 F .299(ay to e)-.1 F .299(xpand a w)-.15 F(ord)-.1 E 1.586 +(to a set of \214lenames.)72 724.8 R -.8(Wo)6.586 G 1.586(rds are re).8 F -.05 +(ga)-.15 G 1.586(rded as patterns, in which the characters).05 F F1(*)4.086 E +F0(,)A F1(?)4.086 E F0 4.085(,a)C(nd)432.115 724.8 Q F1([)4.085 E F0(ha)4.085 E +1.885 -.15(ve s)-.2 H(pecial).15 E EP +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.5(-3-)279.67 48 S 2.845(meaning. W)72 84 R .346(ords\ + containing these special characters are replaced with a sorted list of matchi\ +ng pathnames.)-.8 F(If a w)72 96 Q +(ord generates no matches, it is left unchanged.)-.1 E/F1 10/Times-Italic@0 SF +(Quoting)97 111.6 Q F0 .85(is used to remo)3.35 F 1.15 -.15(ve t)-.15 H .85 +(he special meaning of characters or w).15 F 3.35(ords. It)-.1 F .85 +(can disable special treat-)3.35 F .314 +(ment for shell operators or other special characters, pre)72 123.6 R -.15(ve) +-.25 G .315(nt reserv).15 F .315(ed w)-.15 F .315 +(ords from being recognized as such,)-.1 F .683(and inhibit v)72 135.6 R .683 +(ariable e)-.25 F 3.183(xpansion. The)-.15 F .683 +(shell has three quoting mechanisms:)3.183 F 3.183(ab)5.683 G .683 +(ackslash preserv)387.413 135.6 R .682(es the literal)-.15 F -.25(va)72 147.6 S +.417(lue of the ne).25 F .417(xt character)-.15 F 2.917(,ap)-.4 G .417 +(air of single quotes preserv)196.712 147.6 R .417(es the literal v)-.15 F .418 +(alue of each character between the)-.25 F 1.426 +(quotes, and a pair of double quotes preserv)72 159.6 R 1.425 +(es the literal meaning of enclosed characters while allo)-.15 F(wing)-.25 E +(some e)72 171.6 Q(xpansions.)-.15 E 1.054(Some of the commands b)97 187.2 R +1.054(uilt into the shell are part of the programming language.)-.2 F(The)6.055 +E/F2 10/Times-Bold@0 SF(br)3.555 E(eak)-.18 E F0(and)3.555 E F2(continue)72 +199.2 Q F0 1.175(commands control loop e)3.675 F -.15(xe)-.15 G 1.175 +(cution as in the C language.).15 F(The)6.175 E F2 -2.3 -.15(ev a)3.675 H(l).15 +E F0 -.2(bu)3.675 G 1.174(iltin allo).2 F 1.174(ws a string to be)-.25 F .204 +(parsed and e)72 211.2 R -.15(xe)-.15 G .204(cuted as a command.).15 F F2 -.65 +(Wa)5.205 G(it).65 E F0 .205 +(tells the shell to pause until the processes speci\214ed as ar)2.705 F +(guments)-.18 E(ha)72 223.2 Q .3 -.15(ve ex)-.2 H(ited.).15 E F2 2.5 +(2.3. Interacti)72 247.2 R .2 -.1(ve F)-.1 H(eatur)-.15 E(es)-.18 E F0 .51 +(Shells ha)97 262.8 R .81 -.15(ve b)-.2 H -.15(eg).15 G .51(un of).15 F .51 +(fering features geared speci\214cally for interacti)-.25 F .81 -.15(ve u)-.25 +H .51(se rather than to augment the).15 F .76(programming language.)72 274.8 R +.761(These interacti)5.76 F 1.061 -.15(ve f)-.25 H .761 +(eatures include job control, command line editing, history and).15 F(aliases.) +72 286.8 Q .626(Job control is a f)97 302.4 R .626(acility pro)-.1 F .626 +(vided jointly by the shell and the)-.15 F/F3 9/Times-Roman@0 SF(UNIX)3.125 E +F0 -.1(ke)3.125 G .625(rnel that allo).1 F .625(ws users to selec-)-.25 F(ti)72 +314.4 Q -.15(ve)-.25 G .344 +(ly stop \(suspend\) and restart \(resume\) processes.).15 F .345 +(Each pipeline e)5.345 F -.15(xe)-.15 G .345 +(cuted by the shell is referred to as a).15 F F1(job)72 326.4 Q F0 2.989(.J)C +.488(obs may be suspended and restarted in either the fore)94.159 326.4 R .488 +(ground, where the)-.15 F 2.988(yh)-.15 G -2.25 -.2(av e)397.148 326.4 T .488 +(access to the terminal,)3.188 F .833(or background, where the)72 338.4 R 3.333 +(ya)-.15 G .834(re isolated and cannot read from the terminal.)189.312 338.4 R +-.8(Ty)5.834 G .834(ping the).8 F F1(suspend)3.334 E F0(character)5 E .459(whi\ +le a process is running stops that process and returns control to the shell.)72 +350.4 R .459(Once a job is suspended, the)5.459 F .392 +(user manipulates the job')72 362.4 R 2.892(ss)-.55 G .392(tate, using)184.118 +362.4 R F2(bg)2.892 E F0 .393(to continue it in the background,)2.892 F F2(fg) +2.893 E F0 .393(to return it to the fore)2.893 F(ground)-.15 E .891(and a)72 +374.4 R -.1(wa)-.15 G .891(it its completion, or).1 F F2(kill)3.391 E F0 .891 +(to send it a signal.)3.391 F(The)5.89 E F2(jobs)3.39 E F0 .89 +(command lists the status of jobs, and)3.39 F F2(wait)3.39 E F0 .407 +(will pause the shell until a speci\214ed job terminates.)72 386.4 R .407 +(The shell pro)5.407 F .407(vides a number of w)-.15 F .407 +(ays to refer to a job,)-.1 F(and will notify the user whene)72 398.4 Q -.15 +(ve)-.25 G 2.5(rab).15 G(ackground job terminates.)220.18 398.4 Q -.4(Wi)97 414 +S .956(th the adv).4 F .956(ent of more po)-.15 F .956 +(werful terminals and terminal emulators, more sophisticated interaction)-.25 F +.253(than that pro)72 426 R .253(vided by the)-.15 F F3(UNIX)2.753 E F0 -.1(ke) +2.754 G .254(rnel terminal dri).1 F -.15(ve)-.25 G 2.754(ri).15 G 2.754(sp) +293.592 426 S 2.754(ossible. Some)305.236 426 R .254(shells of)2.754 F .254 +(fer command line editing,)-.25 F 1.141 +(which permits a user to edit lines of input using f)72 438 R(amiliar)-.1 E F1 +(emacs)3.64 E F0(or)3.64 E F1(vi)3.64 E F0 1.14 +(-style commands before submitting)B .02(them to the shell.)72 450 R .02 +(Editors allo)5.02 F 2.52(wc)-.25 G .02(orrections to be made without ha)206.31 +450 R .021(ving to erase back to the point of error)-.2 F 2.521(,o)-.4 G(r) +500.67 450 Q .135(start the line ane)72 462 R 3.935 -.65(w. C)-.25 H .135 +(ommand line editors run the g).65 F .135(amut from a small \214x)-.05 F .134 +(ed set of commands and k)-.15 F .434 -.15(ey b)-.1 H(ind-).15 E +(ings to input f)72 474 Q(acilities which allo)-.1 E 2.5(wa)-.25 G +(rbitrary actions to be bound to a k)217.2 474 Q .3 -.15(ey o)-.1 H 2.5(rk).15 +G .3 -.15(ey s)379.88 474 T(equence.).15 E .145(Modern shells also k)97 489.6 R +.145(eep a history)-.1 F 2.645(,w)-.65 G .146 +(hich is the list of commands a user has typed.)243.49 489.6 R .146(Shell f) +5.146 F .146(acilities are)-.1 F -.2(av)72 501.6 S .368(ailable to recall pre) +-.05 F .367(vious commands and use portions of old commands when composing ne) +-.25 F 2.867(wo)-.25 G 2.867(nes. The)467.253 501.6 R 1.456 +(command history can be sa)72 513.6 R -.15(ve)-.2 G 3.957(dt).15 G 3.957 +(oa\214)207.522 513.6 S 1.457 +(le and read back in at shell startup, so it persists across sessions.)230.436 +513.6 R .675(Shells which pro)72 525.6 R .675 +(vide both command editing and history generally ha)-.15 F .974 -.15(ve e)-.2 H +.674(diting commands to interacti).15 F -.15(ve)-.25 G(ly).15 E(step forw)72 +537.6 Q(ard and backw)-.1 E(ard through the history list.)-.1 E .013 +(Aliases allo)97 553.2 R -5.012 2.513(wa s)-.25 H .014 +(tring to be substituted for a command name.)164.28 553.2 R(The)5.014 E 2.514 +(yc)-.15 G .014(an be used to create a mnemonic)373.396 553.2 R .568(for a)72 +565.2 R F3(UNIX)3.068 E F0 .568(command name \()3.068 F/F4 10/Courier@0 SF .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 \()432.603 565.2 R F4(alias) +A .255(news='xterm -g 80x45 -title trn -e trn -e -S1 -N &')72 577.2 R F0 .255 +(\), or to ensure that a command)B(is in)72 589.2 Q -.2(vo)-.4 G -.1(ke).2 G +2.5(dw).1 G(ith a basic set of options \()122.41 589.2 Q F4 +(alias ls="/bin/ls -F")A F0(\).)A F2 2.5(3. The)72 613.2 R +(POSIX Shell Standard)2.5 E F1(POSIX)97 628.8 Q F0 .239 +(is a name originally coined by Richard Stallman for a f)4.405 F .239 +(amily of open system standards based)-.1 F(on)72 640.8 Q F3(UNIX)3.239 E F0 +5.739(.T)C .74(here are a number of aspects of)122.079 640.8 R F3(UNIX)3.24 E +F0 .74(under consideration for standardization, from the basic)3.24 F .192 +(system services at the system call and C library le)72 652.8 R -.15(ve)-.25 G +2.692(lt).15 G 2.692(oa)290.16 652.8 S .191 +(pplications and tools to system administration and)302.292 652.8 R 2.5 +(management. Each)72 664.8 R(area of standardization is assigned to a w)2.5 E +(orking group in the 1003 series.)-.1 E 3.602(The POSIX Shell and T)97 680.4 R +3.602(ools standard has been de)-.8 F -.15(ve)-.25 G 3.603(loped by IEEE W).15 +F 3.603(orking Group 1003.2)-.8 F -1.667(\(POSIX.2\) [4].)72 692.4 R 2.799 +(It concentrates on the command interpreter interf)7.799 F 2.799 +(ace and utility programs commonly)-.1 F -.15(exe)72 704.4 S 2.345 +(cuted from the command line or by other programs.).15 F 2.345(An initial v) +7.345 F 2.345(ersion of the standard has been)-.15 F(appro)72 716.4 Q -.15(ve) +-.15 G 2.915(da).15 G .414(nd published by the IEEE, and w)116.265 716.4 R .414 +(ork is currently underw)-.1 F .414(ay to update it.)-.1 F .414 +(There are four primary)5.414 F(areas of w)72 728.4 Q +(ork in the 1003.2 standard:)-.1 E EP +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.5(-4-)279.67 48 S 21.5<8341>72 84 S .835 +(spects of the shell')104.22 84 R 3.335(ss)-.55 G .835 +(yntax and command language.)192 84 R 3.335(An)5.835 G .835(umber of special b) +338.095 84 R .835(uiltins such as)-.2 F/F1 10/Times-Bold@0 SF(cd)3.335 E F0 +(and)3.335 E F1(exec)97 96 Q F0 .545(are being speci\214ed as part of the shel\ +l, since their functionality usually cannot be implemented)3.046 F +(by a separate e)97 108 Q -.15(xe)-.15 G(cutable;).15 E 21.5<8341>72 123.6 S +.73(set of utilities to be called by shell scripts and applications.)107.45 +123.6 R .731(Examples are programs lik)5.731 F(e)-.1 E/F2 10/Times-Italic@0 SF +2.397(sed, tr)3.231 F(,)-1.11 E F0(and)97 135.6 Q F2(awk.)2.853 E F0 .352 +(Utilities commonly implemented as shell b)4.519 F .352 +(uiltins are described in this section, such as)-.2 F F1(test)2.852 E F0(and)97 +147.6 Q F1(kill)3.422 E F0 5.922(.A)C 3.422(ne)144.404 147.6 S .922 +(xpansion of this section')157.116 147.6 R 3.423(ss)-.55 G .923 +(cope, termed the User Portability Extension, or UPE, has)268.586 147.6 R +(standardized interacti)97 159.6 Q .3 -.15(ve p)-.25 H(rograms such as).15 E F2 +(vi)2.5 E F0(and)4.166 E F2(mailx;)2.5 E F0 21.5<8341>72 175.2 S .926 +(group of functional interf)107.646 175.2 R .926(aces to services pro)-.1 F +.926(vided by the shell, such as the traditional)-.15 F F2(system)3.425 E F0(C) +5.091 E .507(library function.)97 187.2 R .507 +(There are functions to perform shell w)5.507 F .508(ord e)-.1 F .508 +(xpansions, perform \214lename e)-.15 F(xpansion)-.15 E(\()97 199.2 Q F2 +(globbing)A F0 .58(\), obtain v)B .58 +(alues of POSIX.2 system con\214guration v)-.25 F .58(ariables, retrie)-.25 F +.88 -.15(ve v)-.25 H .58(alues of en)-.1 F(vironment)-.4 E -.25(va)97 211.2 S +(riables \().25 E F2 -.1(ge)C(ten).1 E(v\(\))-.4 E F0(\), and other services;) +.833 E 21.5<8341>72 226.8 S(suite of `)106.72 226.8 Q(`de)-.74 E -.15(ve)-.25 G +(lopment').15 E 2.5('u)-.74 G(tilities such as)209.54 226.8 Q F2(c89)2.5 E F0 +(\(the POSIX.2 v)4.166 E(ersion of)-.15 E F2(cc)2.5 E F0(\), and)A F2(yacc.)2.5 +E F0 .483(Bash is concerned with the aspects of the shell')97 242.4 R 2.983(sb) +-.55 G(eha)301.597 242.4 Q .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 254.4 R +3.938(wc)-.25 G 1.438(ontrol and program e)359.688 254.4 R -.15(xe)-.15 G 1.438 +(cution con-).15 F 1.145(structs, I/O redirection and pipelining, ar)72 266.4 R +1.145(gument handling, v)-.18 F 1.145(ariable e)-.25 F 1.146 +(xpansion, and quoting.)-.15 F(The)6.146 E F2(special)3.646 E F0 -.2(bu)72 +278.4 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) +457.504 278.4 R .7(as being part of the shell; e)72 290.4 R .7 +(xamples of these are)-.15 F F1 -2.3 -.15(ev a)3.201 H(l).15 E F0(and)3.201 E +F1(export)3.201 E F0 5.701(.O)C .701(ther utilities appear in the sections of) +352.034 290.4 R .256(POSIX.2 not de)72 302.4 R -.2(vo)-.25 G .256(ted to the s\ +hell which are commonly \(and in some cases must be\) implemented as b).2 F +(uiltin)-.2 E(commands, such as)72 314.4 Q F1 -.18(re)2.5 G(ad).18 E F0(and)2.5 +E F1(test)2.5 E F0(.)A .972(POSIX.2 also speci\214es aspects of the shell')97 +330 R 3.473(si)-.55 G(nteracti)286.016 330 Q 1.273 -.15(ve b)-.25 H(eha).15 E +.973(vior as part of the UPE, including job)-.2 F .233 +(control, command line editing, and history)72 342 R 5.233(.I)-.65 G .233 +(nterestingly enough, only)253.849 342 R F2(vi)2.733 E F0 .233 +(-style line editing commands ha)B -.15(ve)-.2 G(been standardized;)72 354 Q F2 +(emacs)2.5 E F0(editing commands were left out due to objections.)2.5 E .148 +(There were certain areas in which POSIX.2 felt standardization w)97 369.6 R +.149(as necessary)-.1 F 2.649(,b)-.65 G .149(ut no e)420.643 369.6 R .149 +(xisting imple-)-.15 F 1.598(mentation pro)72 381.6 R 1.598 +(vided the proper beha)-.15 F(vior)-.2 E 6.598(.T)-.55 G 1.598(he w)251.56 +381.6 R 1.597(orking group in)-.1 F -.15(ve)-.4 G 1.597 +(nted and standardized functionality in).15 F .228(these areas.)72 393.6 R(The) +5.228 E F1(command)2.728 E F0 -.2(bu)2.728 G .228(iltin w).2 F .228(as in)-.1 F +-.15(ve)-.4 G .228(nted so that shell functions could be written to replace b) +.15 F(uiltins;)-.2 E 1.663(it mak)72 405.6 R 1.663 +(es the capabilities of the b)-.1 F 1.663(uiltin a)-.2 F -.25(va)-.2 G 1.663 +(ilable to the function.).25 F 1.663(The reserv)6.663 F 1.663(ed w)-.15 F 1.663 +(ord `)-.1 F(`!')-.74 E 4.163('w)-.74 G 1.663(as added to)455.685 405.6 R(ne)72 +417.6 Q -.05(ga)-.15 G .915(te the return v).05 F .915 +(alue of a command or pipeline; it w)-.25 F .916(as nearly impossible to e)-.1 +F .916(xpress `)-.15 F .916(`if not x')-.74 F 3.416('c)-.74 G(leanly)479.56 +417.6 Q .904(using the sh language.)72 429.6 R .904(There e)5.904 F .904 +(xist multiple incompatible implementations of the)-.15 F F1(test)3.403 E F0 +-.2(bu)3.403 G .903(iltin, which tests).2 F .28 +(\214les for type and other attrib)72 441.6 R .281 +(utes and performs arithmetic and string comparisons.)-.2 F .281 +(POSIX considered none)5.281 F .868(of these correct, so the standard beha)72 +453.6 R .868(vior w)-.2 F .868(as speci\214ed in terms of the number of ar)-.1 +F .867(guments to the com-)-.18 F 3.803(mand. POSIX.2)72 465.6 R 1.303 +(dictates e)3.803 F 1.303(xactly what will happen when four or fe)-.15 F 1.303 +(wer ar)-.25 F 1.303(guments are gi)-.18 F -.15(ve)-.25 G 3.803(nt).15 G(o) +459.462 465.6 Q F1(test)3.804 E F0 3.804(,a)C(nd)494 465.6 Q(lea)72 477.6 Q +-.15(ve)-.2 G 4.531(st).15 G 2.031(he beha)103.951 477.6 R 2.031 +(vior unde\214ned when more ar)-.2 F 2.031(guments are supplied.)-.18 F 2.03 +(Bash uses the POSIX.2 algorithm,)7.031 F(which w)72 489.6 Q(as concei)-.1 E +-.15(ve)-.25 G 2.5(db).15 G 2.5(yD)164.53 489.6 S -.2(av)179.25 489.6 S(id K).2 +E(orn.)-.35 E 1.128 +(While POSIX.2 includes much of what the shell has traditionally pro)97 505.2 R +1.129(vided, some important things)-.15 F(ha)72 517.2 Q .58 -.15(ve b)-.2 H .28 +(een omitted as being `).15 F(`be)-.74 E .28(yond its scope.)-.15 F 4.26 -.74 +('' T)-.7 H .28(here is, for instance, no mention of a dif).74 F .28 +(ference between)-.25 F(a)72 529.2 Q F2(lo)3.354 E(gin)-.1 E F0 .854 +(shell and an)5.02 F 3.354(yo)-.15 G .854(ther interacti)167.956 529.2 R 1.154 +-.15(ve s)-.25 H .854(hell \(since POSIX.2 does not specify a login program\).) +.15 F .855(No \214x)5.855 F(ed)-.15 E +(startup \214les are de\214ned, either \255 the standard does not mention)72 +541.2 Q F2(.pr)2.5 E(o\214le)-.45 E F0(.)1.666 E F1 2.5(4. Shell)72 565.2 R +(Comparison)2.5 E F0 .693(This section compares features of bash, sh, and ksh \ +\(the three shells closest to POSIX compliance\).)97 580.8 R .245(Since ksh an\ +d bash are supersets of sh, the features common to all three are co)72 592.8 R +-.15(ve)-.15 G .245(red \214rst.).15 F .245(Some of the fea-)5.245 F 1.198 +(tures bash and ksh contain which are not in sh will be discussed.)72 604.8 R +(Ne)6.198 E 1.198(xt, features unique to bash will be)-.15 F 2.866(listed. The) +72 616.8 R .366(\214rst three sections pro)2.866 F .366(vide a progressi)-.15 F +-.15(ve)-.25 G .366(ly more detailed o).15 F -.15(ve)-.15 G(rvie).15 E 2.866 +(wo)-.25 G 2.866(fb)395.706 616.8 S 2.866(ash. Finally)406.902 616.8 R 2.866 +(,f)-.65 G .366(eatures of)464.484 616.8 R(ksh-88 \(the currently-a)72 628.8 Q +-.25(va)-.2 G(ilable v).25 E(ersion\) not in sh or bash will be presented.)-.15 +E F1 2.5(4.1. Common)72 652.8 R -.25(Fe)2.5 G(atur).25 E(es)-.18 E F0 .021 +(All three shells ha)97 668.4 R .321 -.15(ve t)-.2 H .021 +(he same basic feature set, which is essentially that pro).15 F .02 +(vided by sh and described)-.15 F 1.026(in an)72 680.4 R 3.526(ys)-.15 G 3.526 +(hm)105.012 680.4 S 1.027 +(anual page. Bash and ksh are both sh supersets, and so all three pro)121.318 +680.4 R 1.027(vide the command inter)-.15 F(-)-.2 E .714 +(preter and programming language described earlier)72 692.4 R 3.214(.T)-.55 G +.714(he shell grammar)291.506 692.4 R 3.214(,s)-.4 G .714(yntax, \215o)371.568 +692.4 R 3.214(wc)-.25 G .714(ontrol, redirections,)424.686 692.4 R(and b)72 +704.4 Q(uiltins implemented by the Bourne shell are the baseline for subsequen\ +t discussion.)-.2 E EP +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.5(-5-)279.67 48 S/F1 10/Times-Bold@0 SF 2.5(4.2. F)72 +84 R(eatur)-.25 E(es in bash and ksh)-.18 E F0 .458(Ksh and bash ha)97 99.6 R +.758 -.15(ve s)-.2 H -2.15 -.25(ev e).15 H .459(ral features in common be).25 F +.459(yond this base le)-.15 F -.15(ve)-.25 G 2.959(lo).15 G 2.959(ff)387.814 +99.6 S(unctionality)397.433 99.6 Q 5.459(.S)-.65 G .459(ome of this)458.082 +99.6 R(is due to the POSIX.2 standard.)72 111.6 Q(Other functions ha)5 E .3 +-.15(ve b)-.2 H(een implemented in bash using ksh as a guide.).15 E F1 2.5 +(4.2.1. V)72 135.6 R(ariables and V)-.92 E(ariable Expansion)-.92 E F0 .097 +(Bash and ksh ha)97 151.2 R .396 -.15(ve a)-.2 H .096(ugmented v).15 F .096 +(ariable e)-.25 F 2.596(xpansion. Arithmetic)-.15 F .096(substitution allo) +2.596 F .096(ws an e)-.25 F .096(xpression to be)-.15 F -.25(eva)72 163.2 S .6 +(luated and the result substituted.).25 F .6(Shell v)5.6 F .6 +(ariables may be used as operands, and the result of an e)-.25 F(xpres-)-.15 E +.41(sion may be assigned to a v)72 175.2 R 2.91(ariable. Nearly)-.25 F .41 +(all of the operators from the C language are a)2.91 F -.25(va)-.2 G .41 +(ilable, with the).25 F(same precedence rules:)72 187.2 Q/F2 10/Courier@0 SF 6 +($e)97 205.2 S(cho $\(\(3 + 5 * 32\)\))115 205.2 Q(163)97 217.2 Q F0 -1.11(Va) +72 238.8 S 1.445(riables may be declared as)1.11 F/F3 10/Times-Italic@0 SF +(inte)3.945 E -.1(ge)-.4 G(r).1 E F0 3.945(,w)1.666 G 1.446 +(hich causes arithmetic e)240.956 238.8 R -.25(va)-.25 G 1.446 +(luation to be performed on the v).25 F(alue)-.25 E(whene)72 250.8 Q -.15(ve) +-.25 G 2.5(rt).15 G(he)115.75 250.8 Q 2.5(ya)-.15 G(re assigned to.)136.98 +250.8 Q .483(There are ne)97 266.4 R 2.983(we)-.25 G .483 +(xpansions to obtain the length of a v)162.179 266.4 R(ariable')-.25 E 2.982 +(sv)-.55 G .482(alue and to remo)352.19 266.4 R .782 -.15(ve s)-.15 H .482 +(ubstrings match-).15 F .063(ing speci\214ed patterns from the be)72 278.4 R +.063(ginning and end of v)-.15 F .063(ariable v)-.25 F 2.563(alues. A)-.25 F +(ne)2.563 E 2.563(wf)-.25 G .064(orm of command substitution,)383.249 278.4 R +F1($\()72 290.4 Q F3(list)A F1(\))A F0 2.5(,i)C 2.5(sm)103.67 290.4 S +(uch easier to nest than `)117.84 290.4 Q F3(list)A F0 2.5(`a)C +(nd has simpli\214ed quoting rules.)235.04 290.4 Q .082(There are ne)97 306 R +2.582(wv)-.25 G .082(ariables to control the shell')161.436 306 R 2.581(sb)-.55 +G(eha)284.333 306 Q(vior)-.2 E 2.581(,a)-.4 G .081(nd additional v)323.244 306 +R .081(ariables set or interpreted spe-)-.25 F 1.038(cially by the shell.)72 +318 R F1(RANDOM)6.038 E F0(and)3.538 E F1(SECONDS)3.538 E F0(are)3.539 E F3 +(dynamic)3.539 E F0 -.25(va)3.539 G 3.539(riables: their).25 F -.25(va)3.539 G +1.039(lues are generated afresh).25 F 1.022(each time the)72 330 R 3.522(ya) +-.15 G 1.022(re referenced.)140.176 330 R F1(RANDOM)6.022 E F0 1.021 +(returns a dif)3.521 F 1.021(ferent random number each time it is referenced,) +-.25 F(and)72 342 Q F1(SECONDS)3.138 E F0 .638 +(returns the number of seconds since the shell w)3.138 F .638 +(as started or the v)-.1 F .639(ariable w)-.25 F .639(as assigned to,)-.1 F +1.448(plus an)72 354 R 3.948(yv)-.15 G 1.448(alue assigned.)115.606 354 R F1 +(PWD)6.448 E F0(and)3.948 E F1(OLDPWD)3.947 E F0 1.447 +(are set to the current and pre)3.947 F 1.447(vious w)-.25 F 1.447 +(orking directories,)-.1 F(respecti)72 366 Q -.15(ve)-.25 G(ly).15 E(.)-.65 E +F1(TMOUT)5.604 E F0 .604(controls ho)3.104 F 3.104(wl)-.25 G .604 +(ong the shell will w)226.436 366 R .604(ait at a prompt for input.)-.1 F(If) +5.604 E F1(TMOUT)3.104 E F0 .605(is set to a)3.105 F -.25(va)72 378 S 1.168 +(lue greater than zero, the shell e).25 F 1.168(xits after w)-.15 F 1.168 +(aiting that man)-.1 F 3.668(ys)-.15 G 1.167(econds for input.)337.478 378 R F1 +(REPL)6.167 E(Y)-.92 E F0 1.167(is the def)3.667 F(ault)-.1 E -.25(va)72 390 S +.991(riable for the).25 F F1 -.18(re)3.491 G(ad).18 E F0 -.2(bu)3.491 G .991 +(iltin; if no v).2 F .992(ariable names are supplied as ar)-.25 F .992 +(guments, the line read is assigned to)-.18 F F1(REPL)72 402 Q(Y)-.92 E F0(.)A +F1 2.5(4.2.2. New)72 426 R(and Modi\214ed Builtins)2.5 E F0 .652(Both shells e) +97 441.6 R .651(xpand the basic sh set of b)-.15 F .651(uiltin commands.)-.2 F +F1(Let)5.651 E F0(pro)3.151 E .651(vides a w)-.15 F .651 +(ay to perform arithmetic)-.1 F 2.767(on shell v)72 453.6 R 5.268 +(ariables. Shell)-.25 F 2.768(programmers use)5.268 F F1(typeset)5.268 E F0 +2.768(\(bash includes)5.268 F F1(declar)5.268 E(e)-.18 E F0 2.768(as a synon) +5.268 F 2.768(ym\) to assign)-.15 F(attrib)72 465.6 Q .295(utes such as)-.2 F +F3 -.2(ex)2.795 G(port).2 E F0(and)4.461 E F3 -.37(re)2.795 G(adonly).37 E F0 +.295(to v)4.461 F(ariables.)-.25 E F1(Getopts)5.295 E F0 .294 +(is used by shell scripts to parse script options)2.795 F .962(and ar)72 477.6 +R 3.462(guments. The)-.18 F F1(set)3.462 E F0 .962(command has a ne)3.462 F +3.462(wo)-.25 G(ption)266.446 477.6 Q F13.463 E F0 .963(which tak)3.463 F +.963(es option names as ar)-.1 F 3.463(guments. Option)-.18 F 1.28 +(names are synon)72 489.6 R 1.28(yms for the other set options \(e.g.,)-.15 F +F13.78 E F0(and)3.78 E F1 1.28(\255o noglob)3.78 F F0 3.78(\)o)C 3.78(rp) +375.97 489.6 S(ro)388.08 489.6 Q 1.28(vide ne)-.15 F 3.78(wf)-.25 G 1.28 +(unctionality \()440.78 489.6 R F1(-o)A(notify)72 501.6 Q F0 3.348(,f)C .849 +(or e)106.178 501.6 R 3.349(xample\). The)-.15 F F1 -.18(re)3.349 G(ad).18 E F0 +-.2(bu)3.349 G .849(iltin tak).2 F .849(es a ne)-.1 F(w)-.25 E F13.349 E +F0 .849(option to specify that a line ending in a backslash)3.349 F +(should not be continued.)72 513.6 Q F1 2.5(4.2.3. T)72 537.6 R(ilde Expansion) +-.18 E F0 -.35(Ti)97 553.2 S .252(lde e).35 F .251 +(xpansion is a feature adopted from the C shell.)-.15 F 2.751(At)5.251 G .251 +(ilde character at the be)331.172 553.2 R .251(ginning of a w)-.15 F .251 +(ord is)-.1 F -.15(ex)72 565.2 S(panded to either).15 E F1($HOME)2.5 E F0 +(or the home directory of another user)2.5 E 2.5(,d)-.4 G +(epending on what follo)345.84 565.2 Q(ws the tilde.)-.25 E F1 2.5 +(4.2.4. Interacti)72 589.2 R .2 -.1(ve I)-.1 H(mpr).1 E -.1(ove)-.18 G(ments).1 +E F0 .789(The most noticable impro)97 604.8 R -.15(ve)-.15 G .789(ments o).15 F +-.15(ve)-.15 G 3.289(rs).15 G 3.289(ha)263.385 604.8 S .789 +(re geared for interacti)276.114 604.8 R 1.089 -.15(ve u)-.25 H 3.29(se. Ksh) +.15 F .79(and bash pro)3.29 F .79(vide job)-.15 F .882(control in a v)72 616.8 +R .882(ery similar f)-.15 F .882 +(ashion, with the same options to enable and disable it \()-.1 F F1 .881 +(set -o monitor)B F0 3.381(\)a)C .881(nd the)478.399 616.8 R(same b)72 628.8 Q +(uiltin commands to manipulate jobs \()-.2 E F1(jobs/fg/bg/kill/wait)A F0(\).)A +.866(Command line editing, with emacs and vi-style k)97 644.4 R 1.166 -.15 +(ey b)-.1 H .866(indings, is a).15 F -.25(va)-.2 G .866(ilable in both shells.) +.25 F .866(The Bash)5.866 F F3 -.37(re)72 656.4 S(adline).37 E F0 1.578 +(library is considerably more sophisticated than the ksh editing library:)5.744 +F 1.577(it allo)6.577 F 1.577(ws arbitrary k)-.25 F -.15(ey)-.1 G 1.867 +(bindings, macros, a per)72 668.4 R 1.868(-user customization \214le \()-.2 F +F3(~/.inputr)A(c)-.37 E F0 1.868(\), a number of v)B 1.868 +(ariables to further customize)-.25 F(beha)72 680.4 Q(vior)-.2 E 3.538(,a)-.4 G +1.038(nd a much lar)116.868 680.4 R 1.038 +(ger set of bindable editing commands.)-.18 F 1.037 +(The ksh editing library pro)6.037 F 1.037(vides a small)-.15 F<8c78>72 692.4 Q +(ed command set and only clumsy macros.)-.15 E .706(Both shells of)97 708 R +.706(fer access to the command history)-.25 F 5.706(.T)-.65 G .706 +(he in-line editing options ha)307.278 708 R 1.006 -.15(ve d)-.2 H(ef).15 E +.706(ault k)-.1 F 1.006 -.15(ey b)-.1 H(ind-).15 E .624 +(ings to access the history list.)72 720 R(The)5.624 E F1(fc)3.124 E F0 .624 +(command is pro)3.124 F .624(vided to re-e)-.15 F -.15(xe)-.15 G .623(cute pre) +.15 F .623(vious commands and display)-.25 F EP +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.5(-6-)279.67 48 S(the contents of the history list.) +72 84 Q/F1 10/Times-Bold@0 SF 2.5(4.2.5. Miscellaneous)72 108 R +(Changes and Impr)2.5 E -.1(ov)-.18 G(ments).1 E F0 .707(Other impro)97 123.6 R +-.15(ve)-.15 G .707(ments include aliases, the).15 F F1(select)3.207 E F0 .708 +(shell language construct, which supports the genera-)3.207 F 1.298 +(tion and presentation of simple menus, and e)72 135.6 R 1.298 +(xtensions to the)-.15 F F1(export)3.798 E F0(and)3.798 E F1 -.18(re)3.798 G +(adonly).18 E F0 -.2(bu)3.798 G 1.298(iltins which allo).2 F(w)-.25 E -.25(va) +72 147.6 S .017(riables to be assigned v).25 F .017 +(alues at the same time the attrib)-.25 F .017(utes are set.)-.2 F -.8(Wo)5.018 +G .018(rd splitting has changed:).8 F .018(if tw)5.018 F 2.518(oo)-.1 G(r) +500.67 147.6 Q .158(more adjacent w)72 159.6 R .157 +(ord splitting characters occur)-.1 F 2.657(,b)-.4 G .157 +(ash and ksh will generate null \214elds; sh mak)264.893 159.6 R .157 +(es runs of mul-)-.1 F .339 +(tiple \214eld separator charactors the same as a single separator)72 171.6 R +5.339(.B)-.55 G .34(ash and ksh split only the results of e)330.89 171.6 R +(xpan-)-.15 E(sion, rather than e)72 183.6 Q -.15(ve)-.25 G(ry w).15 E +(ord as sh does, closing a long-standing shell security hole.)-.1 E 1.234 +(Shell functions in bash and ksh may ha)97 199.2 R 1.534 -.15(ve l)-.2 H 1.234 +(ocal v).15 F 3.734(ariables. V)-.25 F 1.234(ariables declared with)-1.11 F F1 +(typeset)3.734 E F0 1.234(\(or the)3.734 F .001(bash synon)72 211.2 R(ym,)-.15 +E F1(local)2.501 E F0 .001(\), ha)B .301 -.15(ve a s)-.2 H .001 +(cope restricted to the function and its descendents, and may shado).15 F 2.502 +(wv)-.25 G(ariables)472.9 211.2 Q(de\214ned by the in)72 223.2 Q -.2(vo)-.4 G +(king shell.).2 E(Local v)5 E(ariables are remo)-.25 E -.15(ve)-.15 G 2.5(dw) +.15 G(hen a function completes.)317.75 223.2 Q F1 2.5(4.3. F)72 247.2 R(eatur) +-.25 E(es Unique to bash)-.18 E F0(Naturally)97 262.8 Q 2.895(,b)-.65 G .395 +(ash includes features not in sh or ksh.)144.515 262.8 R .395 +(This section discusses some of the features which)5.395 F(mak)72 274.8 Q 2.986 +(eb)-.1 G .486(ash unique.)101.546 274.8 R .486(Most of them pro)5.486 F .486 +(vide impro)-.15 F -.15(ve)-.15 G 2.986(di).15 G(nteracti)288.098 274.8 Q .787 +-.15(ve u)-.25 H .487(se, b).15 F .487(ut a fe)-.2 F 2.987(wp)-.25 G .487 +(rogramming impro)394.653 274.8 R -.15(ve)-.15 G(ments).15 E +(are present as well.)72 286.8 Q +(Full descriptions of these features can be found in the bash documentation.)5 +E F1 2.5(4.3.1. Startup)72 310.8 R(Files)2.5 E F0 .281(Bash e)97 326.4 R -.15 +(xe)-.15 G .281(cutes startup \214les dif).15 F .281 +(ferently than other shells.)-.25 F .281(The bash beha)5.281 F .28 +(vior is a compromise between)-.2 F .116 +(the csh principle of startup \214les with \214x)72 338.4 R .116(ed names e) +-.15 F -.15(xe)-.15 G .116(cuted for each shell and the sh `).15 F +(`minimalist')-.74 E 2.616('b)-.74 G(eha)472.26 338.4 Q(vior)-.2 E(.)-.55 E +2.956(An interacti)72 350.4 R 3.256 -.15(ve i)-.25 H 2.956 +(nstance of bash started as a login shell reads and e).15 F -.15(xe)-.15 G +(cutes).15 E/F2 10/Times-Italic@0 SF(~/.bash_pr)5.455 E(o\214le)-.45 E F0 2.955 +(\(the \214le)7.121 F F2(.bash_pr)72 362.4 Q(o\214le)-.45 E F0 .835 +(in the user')5 F 3.335(sh)-.55 G .835(ome directory\), if it e)187.385 362.4 R +3.335(xists. An)-.15 F(interacti)3.335 E 1.135 -.15(ve n)-.25 H .835 +(on-login shell reads and e).15 F -.15(xe)-.15 G(cutes).15 E F2(~/.bashr)72 +374.4 Q(c)-.37 E F0 5.538(.A)1.666 G(non-interacti)127.422 374.4 Q .838 -.15 +(ve s)-.25 H .538(hell \(one be).15 F .538(gun to e)-.15 F -.15(xe)-.15 G .538 +(cute a shell script, for e).15 F .537(xample\) reads no \214x)-.15 F .537 +(ed startup)-.15 F .139(\214le, b)72 386.4 R .139(ut uses the v)-.2 F .139 +(alue of the v)-.25 F(ariable)-.25 E F1(ENV)2.639 E F0 2.639(,i)C 2.639(fs) +253.361 386.4 S .139(et, as the name of a startup \214le.)263.22 386.4 R .139 +(The ksh practice of reading)5.139 F F1($ENV)72 398.4 Q F0 .69(for e)3.19 F +-.15(ve)-.25 G .69(ry shell, with the accompan).15 F .689(ying dif)-.15 F .689 +(\214culty of de\214ning the proper v)-.25 F .689(ariables and functions for) +-.25 F(interacti)72 410.4 Q .946 -.15(ve a)-.25 H .646(nd non-interacti).15 F +.946 -.15(ve s)-.25 H .646(hells or ha).15 F .646 +(ving the \214le read only for interacti)-.2 F .946 -.15(ve s)-.25 H .646 +(hells, w).15 F .646(as considered too)-.1 F(comple)72 422.4 Q(x.)-.15 E F1 2.5 +(4.3.2. New)72 446.4 R(Builtin Commands)2.5 E F0 1.119(There are a fe)97 462 R +3.619(wb)-.25 G 1.118(uiltins which are ne)170.986 462 R 3.618(wo)-.25 G 3.618 +(rh)268.528 462 S -2.25 -.2(av e)280.476 462 T 1.118(been e)3.818 F 1.118 +(xtended in bash.)-.15 F(The)6.118 E F1(enable)3.618 E F0 -.2(bu)3.618 G 1.118 +(iltin allo).2 F(ws)-.25 E -.2(bu)72 474 S .736 +(iltin commands to be turned on and of).2 F 3.236(fa)-.25 G(rbitrarily)250.198 +474 Q 5.736(.T)-.65 G 3.237(ou)298.644 474 S .737(se the v)311.881 474 R .737 +(ersion of)-.15 F F2(ec)3.237 E(ho)-.15 E F0 .737(found in a user')4.903 F +3.237(ss)-.55 G(earch)482.35 474 Q .013(path rather than the bash b)72 486 R +(uiltin,)-.2 E/F3 10/Courier@0 SF .013(enable -n echo)2.513 F F0(suf)2.513 E +2.513(\214ces. The)-.25 F F1(help)2.513 E F0 -.2(bu)2.513 G .013(iltin pro).2 F +.013(vides quick synopses of)-.15 F 1.382(the shell f)72 498 R 1.382 +(acilities without requiring access to a manual page.)-.1 F F1(Builtin)6.382 E +F0 1.383(is similar to)3.882 F F1(command)3.883 E F0 1.383(in that it)3.883 F +.342(bypasses shell functions and directly e)72 510 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 522 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) +211.197 522 Q 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 .094(stack, respecti)72 534 R -.15(ve) +-.25 G(ly).15 E 2.594(,a)-.65 G(nd)154.448 534 Q F1(dirs)2.594 E F0 .094 +(lists the stack contents.The)2.594 F F1(suspend)2.594 E F0 .094 +(command will stop the shell process when)2.594 F 1.329(job control is acti)72 +546 R -.15(ve)-.25 G 3.829(;m).15 G 1.329(ost other shells do not allo)169.136 +546 R 3.829(wt)-.25 G(hemselv)294.64 546 Q 1.33(es to be stopped lik)-.15 F +3.83(et)-.1 G(hat.)421.31 546 Q F1 -.74(Ty)6.33 G(pe,).74 E F0 1.33(the bash) +3.83 F(answer to)72 558 Q F1(which)2.5 E F0(and)2.5 E F1(whence,)2.5 E F0(sho) +2.5 E(ws what will happen when a w)-.25 E(ord is typed as a command:)-.1 E F3 6 +($t)97 576 S(ype export)115 576 Q(export is a shell builtin)97 588 Q 6($t)97 +600 S(ype -t export)115 600 Q(builtin)97 612 Q 6($t)97 624 S(ype bash)115 624 Q +(bash is /bin/bash)97 636 Q 6($t)97 648 S(ype cd)115 648 Q(cd is a function)97 +660 Q(cd \(\))97 672 Q({)97 684 Q(builtin cd "$@" && xtitle $HOST: $PWD)121 696 +Q(})97 708 Q EP +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.5(-7-)279.67 48 S -1.11(Va)72 84 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 96 R -.15(xe)-.15 G +1.15(cuted based on a user').15 F 3.65(ss)-.55 G 1.15(earch path.)305.7 96 R +1.15(Some of this functionality has been)6.15 F +(adopted by POSIX.2 and folded into the)72 108 Q/F1 10/Times-Bold@0 SF(command) +2.5 E F0(utility)2.5 E(.)-.65 E F1 2.5(4.3.3. Editing)72 132 R(and Completion) +2.5 E F0 .682(One area in which bash shines is command line editing.)97 147.6 R +.682(Bash uses the)5.682 F/F2 10/Times-Italic@0 SF -.37(re)3.182 G(adline).37 E +F0 .682(library to read and)4.848 F .102(edit lines when interacti)72 159.6 R +-.15(ve)-.25 G 5.102(.R).15 G .103(eadline is a po)191.438 159.6 R .103 +(werful and \215e)-.25 F .103(xible input f)-.15 F .103 +(acility that a user can con\214gure to his)-.1 F 2.506(tastes. It)72 171.6 R +(allo)2.506 E .006(ws lines to be edited using either emacs or vi commands, wh\ +ere those commands are appropri-)-.25 F 2.994(ate. The)72 183.6 R .494 +(full capability of emacs is not present \255 there is no w)2.994 F .495 +(ay to e)-.1 F -.15(xe)-.15 G .495(cute a named command with M-x,).15 F .222 +(for instance \255 b)72 195.6 R .222(ut the e)-.2 F .222 +(xisting commands are more than adequate.)-.15 F .221 +(The vi mode is compliant with the com-)5.222 F +(mand line editing standardized by POSIX.2.)72 207.6 Q 1.69 +(Readline is fully customizable.)97 223.2 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 235.2 Q .83 +(ws users to de\214ne additional k)-.25 F 1.13 -.15(ey b)-.1 H .83 +(indings using a startup \214le.).15 F(The)5.83 E F2(inputr)3.329 E(c)-.37 E F0 +.829(\214le, which def)4.995 F .829(aults to the)-.1 F(\214le)72 247.2 Q F2 +(~/.inputr)4.287 E(c)-.37 E F0 4.287(,i)1.666 G 4.287(sr)137.43 247.2 S 1.788(\ +ead each time readline initializes, permitting users to maintain a consistent \ +interf)148.937 247.2 R(ace)-.1 E .547(across a set of programs.)72 259.2 R .546 +(Readline includes an e)5.546 F .546(xtensible interf)-.15 F .546 +(ace, so each program using the library can)-.1 F .23(add its o)72 271.2 R .23 +(wn bindable commands and program-speci\214c k)-.25 F .531 -.15(ey b)-.1 H +2.731(indings. Bash).15 F .231(uses this f)2.731 F .231 +(acility to add bindings)-.1 F(that perform history e)72 283.2 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 298.8 R .706 +(ariables which further tune its beha)-.25 F(vior)-.2 E 5.706(.V)-.55 G .706 +(ariables e)408.432 298.8 R .706(xist to control)-.15 F .157 +(whether or not eight-bit characters are directly read as input or con)72 310.8 +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 322.8 Q 1.575(ed k)-.15 F +1.875 -.15(ey s)-.1 H 1.575 +(equence consists of the character with the eighth bit zeroed, preceded by the) +.15 F F2(meta-)4.074 E(pr)72 334.8 Q(e\214x)-.37 E F0(character)4.45 E 2.784 +(,u)-.4 G .284(sually escape, which selects an alternate k)145.374 334.8 R -.15 +(ey)-.1 G .285(map\), to decide whether to output characters).15 F .485 +(with the eighth bit set directly or as a meta-pre\214x)72 346.8 R .485(ed k) +-.15 F .784 -.15(ey s)-.1 H .484(equence, whether or not to wrap to a ne).15 F +2.984(ws)-.25 G(creen)482.35 346.8 Q .157 +(line when a line being edited is longer than the screen width, the k)72 358.8 +R -.15(ey)-.1 G .158(map to which subsequent k).15 F .458 -.15(ey b)-.1 H +(indings).15 E .531(should apply)72 370.8 R 3.031(,o)-.65 G 3.031(re)133.802 +370.8 S -.15(ve)144.353 370.8 S 3.031(nw).15 G .531 +(hat happens when readline w)168.894 370.8 R .531(ants to ring the terminal') +-.1 F 3.03(sb)-.55 G 3.03(ell. All)399.37 370.8 R .53(of these v)3.03 F +(ariables)-.25 E(can be set in the inputrc \214le.)72 382.8 Q .284 +(The startup \214le understands a set of C preprocessor)97 398.4 R(-lik)-.2 E +2.785(ec)-.1 G .285(onditional constructs which allo)329.49 398.4 R 2.785(wv) +-.25 G(ariables)472.9 398.4 Q .12(or k)72 410.4 R .42 -.15(ey b)-.1 H .119(ind\ +ings to be assigned based on the application using readline, the terminal curr\ +ently being used, or).15 F .316(the editing mode.)72 422.4 R .317 +(Users can add program-speci\214c bindings to mak)5.317 F 2.817(et)-.1 G .317 +(heir li)352.808 422.4 R -.15(ve)-.25 G 2.817(se).15 G 2.817(asier: here) +396.922 422.4 R .317(are bindings to)2.817 F(edit the v)72 434.4 Q(alue of)-.25 +E F1 -.74(PA)2.5 G(TH)-.21 E F0(and double-quote the current or pre)2.5 E +(vious w)-.25 E(ord:)-.1 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 quotes)115 500.4 +Q 6(#a)97 512.4 S(nd 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 .322(There is a readline command to re-read the \ +\214le, so users can edit the \214le, change some bindings, and be)72 582 R +(gin)-.15 E(to use them almost immediately)72 594 Q(.)-.65 E .851 +(Bash implements the)97 609.6 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 621.6 Q F0 .167(is used in se)2.667 F -.15(ve)-.25 G .167(ral w) +.15 F 2.667(ays. In)-.1 F F2(list)2.667 E F0 .167 +(mode, it can display the current k)4.333 F .466 -.15(ey b)-.1 H .166 +(indings, list all the readline edit-).15 F .149(ing directi)72 633.6 R -.15 +(ve)-.25 G 2.649(sa).15 G -.25(va)132.798 633.6 S .149 +(ilable for binding, list which k).25 F -.15(ey)-.1 G 2.649(si).15 G -1.9 -.4 +(nv o)282.352 633.6 T .349 -.1(ke a g).4 H -2.15 -.25(iv e).1 H 2.65(nd).25 G +(irecti)345.3 633.6 Q -.15(ve)-.25 G 2.65(,o).15 G 2.65(ro)385.04 633.6 S .15 +(utput the current set of k)396.02 633.6 R -.15(ey)-.1 G .526(bindings in a fo\ +rmat that can be incorporated directly into an inputrc \214le.)72 645.6 R(In) +5.526 E F2(batc)3.026 E(h)-.15 E F0 .526(mode, it reads a series)4.692 F .71 +(of k)72 657.6 R 1.01 -.15(ey b)-.1 H .71 +(indings directly from a \214le and passes them to readline.).15 F .71 +(In its most common usage,)5.71 F F1(bind)3.21 E F0(tak)3.21 E .71(es a)-.1 F +.534(single string and passes it directly to readline, which interprets the li\ +ne as if it had just been read from the)72 669.6 R(inputrc \214le.)72 681.6 Q +(Both k)5 E .3 -.15(ey b)-.1 H(indings and v).15 E +(ariable assignments can appear in the string gi)-.25 E -.15(ve)-.25 G 2.5(nt) +.15 G(o)424.4 681.6 Q F1(bind)2.5 E F0(.)A .401(The readline library also pro) +97 697.2 R .402(vides an interf)-.15 F .402(ace for)-.1 F F2(wor)2.902 E 2.902 +(dc)-.37 G(ompletion)328.546 697.2 Q F0 5.402(.W)C .402(hen the)385.888 697.2 R +F2(completion)2.902 E F0(character)4.568 E 1.261(\(usually T)72 709.2 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 721.2 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 EP +%%Page: 8 8 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.5(-8-)279.67 48 S .358 +(characters are inserted directly)72 84 R 2.858(,o)-.65 G .358(therwise the co\ +mmon pre\214x of the set of \214lenames is added to the current)205.232 84 R +-.1(wo)72 96 S 3.199(rd. A).1 F .699(second T)3.199 F .699(AB character entere\ +d immediately after a non-unique completion causes readline to list)-.93 F +1.814(the possible completions; there is an option to ha)72 108 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)436.517 108 R(vides)-.15 E .482 +(hooks so that applications can pro)72 120 R .482 +(vide speci\214c types of completion before the def)-.15 F .483 +(ault \214lename completion)-.1 F .132(is attempted.)72 132 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 144 R .37 +(uiltins, shell reserv)-.2 F .37(ed w)-.15 F .37(ords, shell functions, and)-.1 +F -.15(exe)72 156 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 generally qui\ +te good at determining what type of completion to attempt.)72 168 Q/F1 10 +/Times-Bold@0 SF 2.5(4.3.4. History)72 192 R F0 .255 +(Access to the list of commands pre)97 207.6 R .255(viously entered \(the)-.25 +F/F2 10/Times-Italic@0 SF .255(command history)2.755 F F0 2.756(\)i)C 2.756(sp) +399.236 207.6 S(ro)410.882 207.6 Q .256(vided jointly by bash)-.15 F .095 +(and the readline library)72 219.6 R 5.094(.B)-.65 G .094(ash pro)178.928 219.6 +R .094(vides v)-.15 F .094(ariables \()-.25 F F1(HISTFILE)A F0(,)A F1(HISTSIZE) +2.594 E F0 2.594(,a)C(nd)382.068 219.6 Q F1(HISTCONTR)2.594 E(OL)-.3 E F0 2.594 +(\)a)C .094(nd the)479.186 219.6 R F1(history)72 231.6 Q F0(and)2.825 E F1(fc) +2.825 E F0 -.2(bu)2.825 G .325(iltins to manipulate the history list.).2 F .325 +(The v)5.325 F .325(alue of)-.25 F F1(HISTFILE)2.825 E F0 .326 +(specifes the \214le where bash)2.826 F .128(writes the command history on e)72 +243.6 R .128(xit and reads it on startup.)-.15 F F1(HISTSIZE)5.128 E F0 .128 +(is used to limit the number of com-)2.628 F .346(mands sa)72 255.6 R -.15(ve) +-.2 G 2.846(di).15 G 2.846(nt)129.002 255.6 S .346(he history)139.628 255.6 R +(.)-.65 E F1(HISTCONTR)5.346 E(OL)-.3 E F0(pro)2.846 E .346 +(vides a crude form of control o)-.15 F -.15(ve)-.15 G 2.846(rw).15 G .346 +(hich commands are)425.548 255.6 R(sa)72 267.6 Q -.15(ve)-.2 G 2.905(do).15 G +2.905(nt)102.325 267.6 S .405(he history list: a v)113.01 267.6 R .405(alue of) +-.25 F F2(ignor)2.905 E(espace)-.37 E F0 .405(means to not sa)4.571 F .705 -.15 +(ve c)-.2 H .405(ommands which be).15 F .405(gin with a space; a)-.15 F -.25 +(va)72 279.6 S .339(lue of).25 F F2(ignor)2.839 E(edups)-.37 E F0 .339 +(means to not sa)4.505 F .64 -.15(ve c)-.2 H .34 +(ommands identical to the last command sa).15 F -.15(ve)-.2 G(d.).15 E F1 +(HISTCONTR)5.34 E(OL)-.3 E F0 -.1(wa)72 291.6 S 3.15(sn).1 G(amed)95.6 291.6 Q +F1(history_contr)3.15 E(ol)-.18 E F0 .65(in earlier v)3.15 F .649 +(ersions of bash; the old name is still accepted for backw)-.15 F .649 +(ards com-)-.1 F(patibility)72 303.6 Q 5.723(.T)-.65 G(he)121.803 303.6 Q F1 +(history)3.223 E F0 .724(command can read or write \214les containing the hist\ +ory list and display the current)3.223 F .895(list contents.)72 315.6 R(The) +5.895 E F1(fc)3.395 E F0 -.2(bu)3.395 G .895 +(iltin, adopted from POSIX.2 and the K).2 F .894(orn Shell, allo)-.35 F .894 +(ws display and re-e)-.25 F -.15(xe)-.15 G(cution,).15 E .461 +(with optional editing, of commands from the history list.)72 327.6 R .462 +(The readline library of)5.462 F .462(fers a set of commands to)-.25 F .657(se\ +arch the history list for a portion of the current input line or a string type\ +d by the user)72 339.6 R 5.657(.F)-.55 G(inally)445.836 339.6 Q 3.157(,t)-.65 G +(he)476.403 339.6 Q F2(his-)3.157 E(tory)72 351.6 Q F0(library)4.196 E 2.53(,g) +-.65 G .03(enerally incorporated directly into the readline library)128.346 +351.6 R 2.53(,i)-.65 G .03(mplements a f)350.636 351.6 R .031 +(acility for history recall,)-.1 F -.15(ex)72 363.6 S .594(pansion, and re-e) +.15 F -.15(xe)-.15 G .594(cution of pre).15 F .594(vious commands v)-.25 F .594 +(ery similar to csh \(`)-.15 F .593(`bang history')-.74 F .593 +(', so called because)-.74 F(the e)72 375.6 Q +(xclamation point introduces a history substitution\):)-.15 E/F3 10/Courier@0 +SF 6($e)97 393.6 S(cho a b c d e)115 393.6 Q 6(abcde)97 405.6 S 6($!)97 417.6 S +6(!fghi)115 417.6 S(echo a b c d e f g h i)97 429.6 Q 6(abcdefghi)97 441.6 S 6 +($!)97 453.6 S(-2)115 453.6 Q(echo a b c d e)97 465.6 Q 6(abcde)97 477.6 S 6 +($e)97 489.6 S(cho !-2:1-4)115 489.6 Q(echo a b c d)97 501.6 Q 6(abcd)97 513.6 +S F0 1.456(The command history is only sa)72 535.2 R -.15(ve)-.2 G 3.957(dw).15 +G 1.457(hen the shell is interacti)232.599 535.2 R -.15(ve)-.25 G 3.957(,s).15 +G 3.957(oi)352.804 535.2 S 3.957(ti)364.541 535.2 S 3.957(sn)374.058 535.2 S +1.457(ot a)386.905 535.2 R -.25(va)-.2 G 1.457(ilable for use by shell).25 F +(scripts.)72 547.2 Q F1 2.5(4.3.5. New)72 571.2 R(Shell V)2.5 E(ariables)-.92 E +F0 .701(There are a number of con)97 586.8 R -.15(ve)-.4 G .701(nience v).15 F +.701(ariables that bash interprets to mak)-.25 F 3.2(el)-.1 G .7(ife easier) +402.76 586.8 R 5.7(.T)-.55 G .7(hese include)453.59 586.8 R F1(FIGNORE)72 598.8 +Q F0 3.973(,w)C 1.473(hich is a set of \214lename suf)132.363 598.8 R<8c78>-.25 +E 1.474(es identifying \214les to e)-.15 F 1.474 +(xclude when completing \214lenames;)-.15 F F1(HOSTTYPE)72 610.8 Q F0 3.03(,w)C +.53(hich is automatically set to a string describing the type of hardw)139.21 +610.8 R .53(are on which bash is cur)-.1 F(-)-.2 E .76(rently e)72 622.8 R -.15 +(xe)-.15 G(cuting;).15 E F1(OSTYPE)3.26 E F0 3.26(,t)C 3.26(ow)191.76 622.8 S +.76(hich bash assigns a v)207.24 622.8 R .761(alue that identi\214es the v)-.25 +F .761(ersion of)-.15 F/F4 9/Times-Roman@0 SF(UNIX)3.261 E F0(it')3.261 E 3.261 +(sr)-.55 G(unning)476.22 622.8 Q 1.354 +(on \(great for putting architecture-speci\214c binary directories into the)72 +634.8 R F1 -.74(PA)3.854 G(TH)-.21 E F0 1.354(\); and)B F1(IGNOREEOF)3.854 E F0 +3.854(,w)C(hose)485.67 634.8 Q -.25(va)72 646.8 S .062 +(lue indicates the number of consecuti).25 F .362 -.15(ve E)-.25 H .062 +(OF characters that an interacti).15 F .362 -.15(ve s)-.25 H .062 +(hell will read before e).15 F .062(xiting \255)-.15 F .114(an easy w)72 658.8 +R .113(ay to k)-.1 F .113(eep yourself from being logged out accidentally)-.1 F +5.113(.T)-.65 G(he)344.285 658.8 Q F1(auto_r)2.613 E(esume)-.18 E F0 -.25(va) +2.613 G .113(riable alters the w).25 F(ay)-.1 E .409 +(the shell treats simple command names: if job control is acti)72 670.8 R -.15 +(ve)-.25 G 2.909(,a).15 G .409(nd this v)335.516 670.8 R .409 +(ariable is set, single-w)-.25 F .409(ord simple)-.1 F .17(commands without re\ +directions cause the shell to \214rst look for a suspended job with that name \ +before start-)72 682.8 R(ing a ne)72 694.8 Q 2.5(wp)-.25 G(rocess.)118.13 694.8 +Q EP +%%Page: 9 9 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.5(-9-)279.67 48 S/F1 10/Times-Bold@0 SF 2.5 +(4.3.6. Brace)72 84 R(Expansion)2.5 E F0 .653(Since sh of)97 99.6 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 1.893(\(pathname e)72 111.6 R 1.893 +(xpansion requires that the \214lenames e)-.15 F 1.892(xist\), bash implements) +-.15 F/F2 10/Times-Italic@0 SF(br)4.392 E 1.892(ace e)-.15 F(xpansion)-.2 E F0 +4.392(,ac)C(apability)469 111.6 Q(pick)72 123.6 Q .496(ed up from csh.)-.1 F +.496(Brace e)5.496 F .496(xpansion is similar to pathname e)-.15 F .496 +(xpansion, b)-.15 F .497(ut the strings generated need not)-.2 F 1.107 +(correspond to e)72 135.6 R 1.107(xisting \214les.)-.15 F 3.607(Ab)6.107 G +1.107(race e)207.655 135.6 R 1.107(xpression consists of an optional)-.15 F F2 +(pr)3.606 E(eamble)-.37 E F0 3.606(,f)1.666 G(ollo)419.286 135.6 Q 1.106 +(wed by a pair of)-.25 F 2.809 +(braces enclosing a series of comma-separated strings, and an optional)72 147.6 +R F2(postamble)5.31 E F0 7.81(.T)1.666 G 2.81(he preamble is)440.06 147.6 R(pr\ +epended to each string within the braces, and the postamble is then appended t\ +o each resulting string:)72 159.6 Q/F3 10/Courier@0 SF 6($e)97 177.6 S +(cho a{d,c,b}e)115 177.6 Q(ade ace abe)97 189.6 Q F1 2.5(4.3.7. Pr)72 219.6 R +(ompt Customization)-.18 E F0 .077(One of the more popular interacti)97 235.2 R +.376 -.15(ve f)-.25 H .076(eatures that bash pro).15 F .076 +(vides is the ability to customize the prompt.)-.15 F(Both)72 247.2 Q F1(PS1) +3.305 E F0(and)3.305 E F1(PS2,)3.305 E F0 .805 +(the primary and secondary prompts, are e)3.305 F .805 +(xpanded before being displayed.)-.15 F -.15(Pa)5.805 G(rameter).15 E .324 +(and v)72 259.2 R .324(ariable e)-.25 F .324 +(xpansion is performed when the prompt string is e)-.15 F .323 +(xpanded, so the v)-.15 F .323(alue of an)-.25 F 2.823(ys)-.15 G .323(hell v) +454.217 259.2 R(ariable)-.25 E .728(can be put into the prompt \(e.g.,)72 271.2 +R F1($SHL)3.228 E(VL)-.92 E F0 3.228(,w)C .728(hich indicates ho)258.564 271.2 +R 3.228(wd)-.25 G .729(eeply the current shell is nested\).)342.988 271.2 R +(Bash)5.729 E 1.895 +(specially interprets characters in the prompt string preceded by a backslash.) +72 283.2 R 1.895(Some of these backslash)6.895 F .874 +(escapes are replaced with the current time, the date, the current w)72 295.2 R +.874(orking directory)-.1 F 3.374(,t)-.65 G .874(he username, and the)416.958 +295.2 R .781(command number or history number of the command being entered.)72 +307.2 R .78(There is e)5.781 F -.15(ve)-.25 G 3.28(nab).15 G .78 +(ackslash escape to)429.13 307.2 R .007 +(cause the shell to change its prompt when running as root after an)72 319.2 R +F2(su)2.507 E F0 5.007(.B)C .008(efore printing each primary prompt,)360.388 +319.2 R .27(bash e)72 331.2 R .27(xpands the v)-.15 F(ariable)-.25 E F1(PR)2.77 +E(OMPT_COMMAND)-.3 E F0 .269(and, if it has a v)2.77 F .269(alue, e)-.25 F -.15 +(xe)-.15 G .269(cutes the e).15 F .269(xpanded v)-.15 F .269(alue as a)-.25 F +.04(command, allo)72 343.2 R .041(wing additional prompt customization.)-.25 F +-.15(Fo)5.041 G 2.541(re).15 G .041 +(xample, this assignment causes the current user)311.964 343.2 R(,)-.4 E .99 +(the current host, the time, the last component of the current w)72 355.2 R +.989(orking directory)-.1 F 3.489(,t)-.65 G .989(he le)402.954 355.2 R -.15(ve) +-.25 G 3.489(lo).15 G 3.489(fs)443.412 355.2 S .989(hell nesting,)454.121 355.2 +R(and the history number of the current command to be embedded into the primar\ +y prompt:)72 367.2 Q F3 6($P)97 385.2 S +(S1='\\u@\\h [\\t] \\W\($SHLVL:\\!\)\\$ ')115 385.2 Q +(chet@odin [21:03:44] documentation\(2:636\)$ cd ..)97 397.2 Q +(chet@odin [21:03:54] src\(2:637\)$)97 409.2 Q F0 .619 +(The string being assigned is surrounded by single quotes so that if it is e)72 +430.8 R(xported,)-.15 E F1(SHL)3.119 E(VL)-.92 E F0 .619(will be updated)3.119 +F(by a child shell:)72 442.8 Q F3 +(chet@odin [21:13:35] src\(2:638\)$ export PS1)97 460.8 Q +(chet@odin [21:17:40] src\(2:639\)$ bash)97 472.8 Q +(chet@odin [21:17:46] src\(3:696\)$)97 484.8 Q F0(The)72 506.4 Q F1(\\$)2.5 E +F0(escape is displayed as `)2.5 E(`)-.74 E F1($)A F0 1.48 -.74('' w)D +(hen running as a normal user).74 E 2.5(,b)-.4 G(ut as `)342.08 506.4 Q(`)-.74 +E F1(#)A F0 1.48 -.74('' w)D(hen running as root.).74 E F1 2.5(4.3.8. POSIX)72 +530.4 R(Mode)2.5 E F0 .46(Although bash is intended to be POSIX.2 compliant, t\ +here are areas in which the def)97 546 R .46(ault beha)-.1 F .46(vior is)-.2 F +1.168(not compatible with the standard.)72 558 R -.15(Fo)6.169 G 3.669(ru).15 G +1.169(sers who wish to operate in a strict POSIX.2 en)238.85 558 R 1.169 +(vironment, bash)-.4 F .61(implements a)72 570 R F2 .61(POSIX mode)3.11 F F0 +5.61(.W)C .61(hen this mode is acti)199.42 570 R -.15(ve)-.25 G 3.109(,b).15 G +.609(ash modi\214es its def)303.727 570 R .609(ault operation where it dif)-.1 +F(fers)-.25 E .066(from POSIX.2 to match the standard.)72 582 R .067 +(POSIX mode is entered when bash is started with the)5.066 F F1 .067(-o posix) +2.567 F F0(option)2.567 E .382(or when)72 594 R F1 .382(set -o posix)2.882 F F0 +.381(is e)2.881 F -.15(xe)-.15 G 2.881(cuted. F).15 F .381 +(or compatibility with other GNU softw)-.15 F .381 +(are that attempts to be POSIX.2)-.1 F 5.752 +(compliant, bash also enters POSIX mode if either of the v)72 606 R(ariables) +-.25 E F1(POSIX_PED)8.253 E(ANTIC)-.35 E F0(or)8.253 E F1(POSIXL)72 618 Q +(Y_CORRECT)-.92 E F0 1.179(is set when bash is started or assigned a v)3.679 F +1.178(alue during e)-.25 F -.15(xe)-.15 G 3.678(cution. When).15 F 1.178 +(bash is)3.678 F .218(started in POSIX mode, for e)72 630 R .218(xample, the) +-.15 F F1(kill)2.718 E F0 -.2(bu)2.718 G(iltin').2 E(s)-.55 E F12.718 E +F0 .218(option beha)2.718 F -.15(ve)-.2 G 2.718(sd).15 G(if)370.166 630 Q .219 +(ferently: it lists the names of all)-.25 F 1.084(signals on a single line sep\ +arated by spaces, rather than listing the signal names and their corresponding) +72 642 R(numbers.)72 654 Q .865(Some of the def)97 669.6 R .865(ault bash beha) +-.1 F .865(vior dif)-.2 F .865 +(fers from other shells as a result of the POSIX standard.)-.25 F -.15(Fo)5.866 +G(r).15 E 1.16(instance, bash includes the)72 681.6 R F1(!)3.66 E F0(reserv) +6.16 E 1.16(ed w)-.15 F 1.16(ord to ne)-.1 F -.05(ga)-.15 G 1.16 +(te the return status of a pipeline because it has been).05 F +(de\214ned by POSIX.2.)72 693.6 Q +(Neither sh nor ksh has implemented that feature.)5 E EP +%%Page: 10 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.5(-1)277.17 48 S 2.5(0-)288 48 S/F1 10/Times-Bold@0 +SF 2.5(4.4. F)72 84 R(eatur)-.25 E(es Unique to ksh)-.18 E F0 .177 +(Ksh includes a number of features not in the currently-released v)97 99.6 R +.178(ersion of bash, v)-.15 F .178(ersion 1.14.)-.15 F(Unless)5.178 E .822 +(noted, none of these features is in the POSIX.2 standard.)72 111.6 R .821 +(Where appropriate the equi)5.821 F -.25(va)-.25 G .821(lent bash features).25 +F(are noted.)72 123.6 Q F1 2.5(4.4.1. The)72 147.6 R(ksh Language)2.5 E F0 +2.955(An)97 163.2 S .955 -.25(ew c)112.175 163.2 T .455(ompound command folds) +.25 F F1(test)2.955 E F0 .456(into the ksh language, delimited by the reserv) +2.955 F .456(ed w)-.15 F(ords)-.1 E F1([[)2.956 E F0(and)2.956 E F1(]])72 175.2 +Q F0 5.726(.T)C .726(he syntax is identical to)92.996 175.2 R F1(test)3.225 E +F0 .725(with a fe)3.225 F 3.225(wc)-.25 G .725 +(hanges: for instance, instead of)262.855 175.2 R F13.225 E F0(and)3.225 +E F13.225 E F0(,)A F1(&&)3.225 E F0(and)3.225 E/F2 10/Symbol SF +3.225 E F0(are)3.225 E 3.32(used. The)72 187.2 R -.1(wo)3.32 G .82(rds between) +.1 F F1([[)3.32 E F0(and)3.32 E F1(]])3.32 E F0 .82(are not processed for w) +3.32 F .82(ord splitting or \214lename generation.)-.1 F .82(The ne)5.82 F(w) +-.25 E .926 +(command does pattern matching as well as string comparison, a la the)72 199.2 +R F1(case)3.425 E F0 3.425(command. This)3.425 F(ne)3.425 E 3.425(wc)-.25 G +(ontrol)480.11 199.2 Q .165(structure does ha)72 211.2 R .465 -.15(ve t)-.2 H +.165(he adv).15 F .166(antage of reducing common ar)-.25 F .166 +(gument problems encountered using test \(e.g.)-.18 F F1(test)2.666 E +("$string")72 223.2 Q F0 2.928(,w)C(here)125.748 223.2 Q F1($string)2.928 E F0 +-.15(ex)2.928 G .428(pands to).15 F F12.928 E F0 .428(\), b)B .428 +(ut at the cost of bloating the language.)-.2 F .427(The POSIX.2 test algo-) +5.427 F 2.752(rithm that bash uses, along with some programmer care, alle)72 +235.2 R 2.752(viates those problems in a backw)-.25 F(ards-)-.1 E .854 +(compatible w)72 247.2 R .853(ay with no additions to the language.)-.1 F .853 +(The one capability of)5.853 F F1 .853([[ ]])3.353 F F0 .853(not a)3.353 F -.25 +(va)-.2 G .853(ilable in bash is its).25 F(ability to test whether an indi)72 +259.2 Q(vidual)-.25 E F1(set \255o)2.5 E F0(option is turned on or of)2.5 E(f.) +-.25 E .339(Other parts of the ksh language are not common to bash.)97 274.8 R +(The)5.34 E F1(\(\(...\)\))2.84 E F0(operator)5.34 E 2.84(,e)-.4 G(qui)419.33 +274.8 Q -.25(va)-.25 G .34(lent to).25 F F1 .34(let "...")2.84 F F0(,)A .197 +(is unique to ksh, as are the concept of co-processes and the)72 286.8 R F1 +(time)2.697 E F0 -.1(ke)2.696 G(yw)-.05 E .196 +(ord to time commands and pipelines.)-.1 F F1 2.5(4.4.2. Functions)72 310.8 R +(and Aliases)2.5 E F0 1.022(The K)97 326.4 R 1.022(orn shell has)-.35 F/F3 10 +/Times-Italic@0 SF(autoloaded)3.522 E F0 3.522(functions. A)3.522 F 1.022 +(function mark)3.522 F 1.022(ed as)-.1 F F3(autoload)3.522 E F0 1.022 +(is not de\214ned until it is)5.188 F 1.042(\214rst e)72 338.4 R -.15(xe)-.15 G +3.542(cuted. When).15 F 1.042(such a function is e)3.542 F -.15(xe)-.15 G 1.042 +(cuted, a search is made through the directories in).15 F F1(FP)3.541 E -.95 +(AT)-.74 G(H).95 E F0(\(a)3.541 E .27 +(colon-separated list of directories similar to)72 350.4 R F1 -.74(PA)2.77 G +(TH)-.21 E F0 2.77(\)f)C .27(or a \214le with the same name as the function.) +285.78 350.4 R .27(That \214le)5.27 F .548(is then read in as with the)72 362.4 +R F1(.)3.881 E F0 .547(command; presumably the function is de\214ned therein.) +3.047 F .547(There is a pair of shell)5.547 F .886 +(functions included in the bash distrib)72 374.4 R .886(ution \()-.2 F F3 -.2 +(ex)C(amples/functions/autoload).2 E F0 5.886(\)t)C .886(hat pro)378.35 374.4 R +.886(vide much of this func-)-.15 F +(tionality without changing the shell itself.)72 386.4 Q .116 +(Ksh functions are scoped in such a w)97 402 R .116(ay that the en)-.1 F .116 +(vironment in which the)-.4 F 2.616(ya)-.15 G .116(re e)405.144 402 R -.15(xe) +-.15 G .115(cuted is closer to a).15 F .827(shell script en)72 414 R 3.327 +(vironment. Bash)-.4 F .827(uses the POSIX.2 scoping rules, which mak)3.327 F +3.327(et)-.1 G .827(he function e)392.517 414 R -.15(xe)-.15 G .828(cution en) +.15 F(vi-)-.4 E 1.2(ronment an e)72 426 R 1.2(xact cop)-.15 F 3.7(yo)-.1 G 3.7 +(ft)174.86 426 S 1.199(he shell en)184.67 426 R 1.199 +(vironment with the replacement of the shell')-.4 F 3.699(sp)-.55 G 1.199 +(ositional paramters)426.421 426 R(with the function ar)72 438 Q 2.5 +(guments. K)-.18 F +(orn shell functions do not share options or traps with the in)-.35 E -.2(vo) +-.4 G(king shell.).2 E .451(Ksh has)97 453.6 R F3(tr)2.951 E(ac)-.15 E -.1(ke) +-.2 G(d).1 E F0 .452(aliases, which alias a command name to its full pathname.) +2.952 F .452(Bash has true command)5.452 F(hashing.)72 465.6 Q F1 2.5 +(4.4.3. Arrays)72 489.6 R F0 .246 +(Arrays are an aspect of ksh that has no real bash equi)97 505.2 R -.25(va)-.25 +G 2.746(lent. The).25 F 2.746(ya)-.15 G .246(re easy to create and manipulate:) +371.42 505.2 R 1.637 +(an array is created automatically by using subscript assignment \()72 517.2 R +F1(name)A F0([)A F3(inde)A(x)-.2 E F0(]=)A F1 -.1(va)C(lue).1 E F0 1.637 +(\), and an)B 4.137(yv)-.15 G(ariable)476.79 517.2 Q 1.967 +(may be referred to as an array)72 529.2 R 6.967(.K)-.65 G 1.967(sh arrays, ho) +219.229 529.2 R(we)-.25 E -.15(ve)-.25 G 2.767 -.4(r, h).15 H -2.25 -.2(av e).4 +H(se)4.667 E -.15(ve)-.25 G 1.967(ral anno).15 F 1.967(ying limitations: the) +-.1 F 4.466(ym)-.15 G 1.966(ay be)480.654 529.2 R(inde)72 541.2 Q -.15(xe)-.15 +G 3.498(do).15 G .998(nly up to 512 or 1024 elements, depending on ho)111.858 +541.2 R 3.498(wt)-.25 G .999(he shell is compiled, and there is only the) +330.188 541.2 R(clumsy)72 553.2 Q F1 .223(set -A)2.723 F F0 .223 +(to assign a list of v)2.723 F .223(alues sequentially)-.25 F 5.223(.D)-.65 G +.223(espite these limits, arrays are useful, if underutilized)293.31 553.2 R +(by shell programmers.)72 565.2 Q F1 2.5(4.4.4. Builtin)72 589.2 R(Commands)2.5 +E F0 .112(Some of the b)97 604.8 R .112(uiltin commands ha)-.2 F .412 -.15 +(ve b)-.2 H .112(een e).15 F .112(xtended or are ne)-.15 F 2.612(wi)-.25 G +2.613(nk)351.402 604.8 S 2.613(sh. The)364.015 604.8 R F1(print)2.613 E F0 -.2 +(bu)2.613 G .113(iltin w).2 F .113(as included)-.1 F .242(to w)72 616.8 R .242 +(ork around the incompatibilities and limitations of)-.1 F F1(echo)2.741 E F0 +5.241(.T)C(he)328.234 616.8 Q F1(whence)2.741 E F0 .241(command tells what w) +2.741 F .241(ould hap-)-.1 F .418(pen if each ar)72 628.8 R .418 +(gument were typed as a command name.)-.18 F(The)5.418 E F1(cd)2.919 E F0 -.2 +(bu)2.919 G .419(iltin has been e).2 F .419(xtended to tak)-.15 F 2.919(eu)-.1 +G 2.919(pt)470.482 628.8 S 2.919(ot)481.181 628.8 S -.1(wo)491.88 628.8 S(ar)72 +640.8 Q 1.425(guments: if tw)-.18 F 3.925(oa)-.1 G -.18(rg)153.485 640.8 S +1.424(uments are supplied, the second is substituted for the \214rst in the cu\ +rrent directory).18 F 2.294 +(name and the shell changes to the resultant directory name.)72 652.8 R 2.295 +(The ksh)7.294 F F1(trap)4.795 E F0 -.2(bu)4.795 G 2.295(iltin accepts).2 F F1 +(ERR)4.795 E F0(and)4.795 E F1(DEB)72 664.8 Q(UG)-.1 E F0 .15(as trap names.) +2.65 F(The)5.15 E F1(ERR)2.65 E F0 .15(trap is e)2.65 F -.15(xe)-.15 G .15 +(cuted when a command f).15 F(ails;)-.1 E F1(DEB)2.65 E(UG)-.1 E F0 .15(is e) +2.65 F -.15(xe)-.15 G .15(cuted after e).15 F -.15(ve)-.25 G(ry).15 E +(simple command.)72 676.8 Q .05(The bash distrib)97 692.4 R .05 +(ution includes shell functions that implement)-.2 F F1(print)2.55 E F0(and) +2.55 E F1(whence)2.55 E F0 .05(and the e)2.55 F .05(xtensions to)-.15 F F1(cd) +72 704.4 Q F0(.)A EP +%%Page: 11 11 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.5(-1)277.17 48 S 2.5(1-)288 48 S/F1 10/Times-Bold@0 +SF 2.5(4.4.5. Expansion)72 84 R F0 .282(The ksh \214lename generation \()97 +99.6 R/F2 10/Times-Italic@0 SF(globbing)A F0 2.782(\)f)C .282(acilities ha) +262.45 99.6 R .581 -.15(ve b)-.2 H .281(een e).15 F .281(xtended be)-.15 F .281 +(yond their bash and sh coun-)-.15 F 3.68(terparts. In)72 111.6 R 1.181 +(this area, ksh can be thought of as)3.681 F F2 -.4(eg)3.681 G -.37(re).4 G(p) +.37 E F0 1.181(to the bash)5.347 F F2(gr)3.681 E(ep)-.37 E F0 6.181(.K)1.666 G +1.181(sh globbing of)382.406 111.6 R 1.181(fers things lik)-.25 F(e)-.1 E 1.018 +(alternation, the ability to match zero or more instances of a pattern, and th\ +e ability to match e)72 123.6 R 1.018(xactly one)-.15 F(occurrence of an)72 +135.6 Q 2.5(yo)-.15 G 2.5(fal)150.98 135.6 S(ist of patterns.)166.53 135.6 Q F1 +2.5(4.4.6. Startup)72 159.6 R(Files)2.5 E F0 .977(Ksh and bash e)97 175.2 R +-.15(xe)-.15 G .977(cute startup \214les dif).15 F(ferently)-.25 E 5.977(.K) +-.65 G .977(sh e)297.879 175.2 R(xpands)-.15 E F1(ENV)3.478 E F0 .978 +(and sources the \214le it names for)3.478 F -2.15 -.25(ev e)72 187.2 T 1.85 +(ry shell.).25 F 1.85(Bash sources)6.85 F F1($ENV)4.35 E F0 1.85 +(only in non-interacti)4.35 F 2.15 -.15(ve s)-.25 H 1.85(hells; interacti).15 F +2.15 -.15(ve s)-.25 H 1.85(hells source \214x).15 F 1.85(ed \214les, as)-.15 F +-.15(ex)72 199.2 S 1.285(plained in the pre).15 F 1.285(vious section.)-.25 F +1.285(The POSIX standard has speci\214ed the ksh beha)6.285 F(vior)-.2 E 3.785 +(,s)-.4 G 3.785(ob)441.545 199.2 S 1.285(ash acts the)455.33 199.2 R +(same as ksh if started with the)72 211.2 Q F1(\255posix)2.5 E F0(or)2.5 E F1 +(\255o posix)2.5 E F0(options.)2.5 E F1 2.5(4.4.7. History)72 235.2 R F0 +(Finally)97 250.8 Q 3.372(,t)-.65 G .872(he ksh history implementation dif) +133.342 250.8 R .871(fers slightly from bash.)-.25 F .871 +(Each instance of bash k)5.871 F .871(eeps the)-.1 F .633 +(history list in memory and of)72 262.8 R .633(fers options to the)-.25 F F1 +(history)3.133 E F0 -.2(bu)3.133 G .634 +(iltin to write the list to or read it from a named).2 F 3.216(\214le. Ksh)72 +274.8 R -.1(ke)3.216 G .716 +(eps the history in a \214le, which it accesses each time a command is sa).1 F +-.15(ve)-.2 G 3.215(dt).15 G 3.215(oo)426.445 274.8 S 3.215(rr)439.66 274.8 S +(etrie)449.535 274.8 Q -.15(ve)-.25 G 3.215(df).15 G(rom)487.89 274.8 Q .338 +(the history)72 286.8 R 5.338(.K)-.65 G .338 +(sh history \214les may be shared among dif)129.246 286.8 R .338 +(ferent concurrent instances of ksh, which could be a)-.25 F +(bene\214t to the user)72 298.8 Q(.)-.55 E F1 2.5(5. F)72 322.8 R(eatur)-.25 E +(es in Bash-2.0)-.18 E F0 .657(The ne)97 338.4 R .657 +(xt release of bash, 2.0, will be a major o)-.15 F -.15(ve)-.15 G 3.157 +(rhaul. It).15 F .656(will include man)3.157 F 3.156(yn)-.15 G 1.156 -.25(ew f) +419.532 338.4 T .656(eatures, for both).25 F .705(programming and interacti)72 +350.4 R 1.005 -.15(ve u)-.25 H 3.205(se. Redundant).15 F -.15(ex)3.205 G .705 +(isting functions will be remo).15 F -.15(ve)-.15 G 3.206(d. There).15 F .706 +(are se)3.206 F -.15(ve)-.25 G .706(ral cases).15 F 1.34(where bash treats a v) +72 362.4 R 1.34(ariable specially to enable functionality a)-.25 F -.25(va)-.2 +G 1.34(ilable another w).25 F 1.34(ay \()-.1 F F1($nolinks)A F0(vs.)3.84 E F1 +1.34(set -o)3.84 F(ph)72 374.4 Q(ysical)-.15 E F0 2.5(,f)C(or e)115.19 374.4 Q +(xample\); the special treatment of the v)-.15 E(ariable name will be remo)-.25 +E -.15(ve)-.15 G(d.).15 E F1 2.5(5.1. Arrays)72 398.4 R F0 .546(Bash-2.0 will \ +include arrays which are a superset of those in ksh, with the size limitations\ + remo)97 414 R -.15(ve)-.15 G(d.).15 E(The)72 426 Q F1(declar)3.086 E(e)-.18 E +F0(,)A F1 -.18(re)3.086 G(adonly).18 E F0 3.086(,a)C(nd)174.768 426 Q F1 +(export)3.086 E F0 -.2(bu)3.086 G .586 +(iltins will accept options to specify arrays, and the).2 F F1 -.18(re)3.085 G +(ad).18 E F0 -.2(bu)3.085 G .585(iltin will).2 F(ha)72 438 Q .81 -.15(ve a)-.2 +H 3.01(no).15 G .51(ption to read a list of w)110.99 438 R .51 +(ords and assign them directly to an array)-.1 F 5.51(.T)-.65 G .51 +(here will also be a ne)386.23 438 R 3.01(wa)-.25 G(rray)487.9 438 Q F2 .262 +(compound assignment)72 450 R F0 .262(syntax a)2.762 F -.25(va)-.2 G .262 +(ilable for assignment statements and the).25 F F1(declar)2.761 E(e)-.18 E F0 +-.2(bu)2.761 G 2.761(iltin. This).2 F(ne)2.761 E 2.761(ws)-.25 G(yntax)481.78 +450 Q .441(has the form)72 462 R F2(name)2.941 E F0(=\()A F2(value1)A F0(...) +2.941 E F2(valueN)2.941 E F0 .441(\), where each)B F2(value)2.942 E F0 .442 +(has the form [)4.608 F F2(subscript)A F0(]=)A F2(string)A F0 5.442(.O)C .442 +(nly the)449.776 462 R F2(string)2.942 E F0 1.395(is required.)72 474 R 1.395 +(If the optional brack)6.395 F 1.395(ets and)-.1 F F2(subscript)3.894 E F0 +1.394(are included, that inde)3.894 F 3.894(xi)-.15 G 3.894(sa)388.714 474 S +1.394(ssigned to, otherwise the)400.938 474 R(inde)72 486 Q 3.656(xo)-.15 G +3.656(ft)102.726 486 S 1.156(he element assigned is the last inde)112.492 486 R +3.657(xa)-.15 G 1.157(ssigned to by the statement plus one.)272.917 486 R(Inde) +6.157 E 1.157(xing starts at)-.15 F 2.73(zero. The)72 498 R .23 +(same syntax is accepted by)2.73 F F1(declar)2.73 E(e)-.18 E F0 5.229(.I)C(ndi) +269.159 498 Q .229(vidual array elements may be assigned to using the ksh)-.25 +F F2(name)72 510 Q F0([)A F2(subscript)A F0(]=)A F2(value)A F0(.)A F1 2.5 +(5.2. Dynamic)72 534 R(Loading)2.5 E F0 .348(On systems that support the)97 +549.6 R F2(dlopen)2.848 E F0 .349(\(3\) library function, bash-2.0 will allo)B +2.849(wn)-.25 G .849 -.25(ew b)407.504 549.6 T .349(uiltins to be loaded).05 F +.049(into a running shell from a shared object \214le.)72 561.6 R .049(The ne) +5.049 F 2.549(wb)-.25 G .049(uiltins will ha)298.999 561.6 R .348 -.15(ve a)-.2 +H .048(ccess to the rest of the shell f).15 F(acil-)-.1 E .649(ities, b)72 +573.6 R .649(ut programmers will be subject to a fe)-.2 F 3.149(ws)-.25 G .649 +(tructural rules.)269.591 573.6 R .65(This will be pro)5.65 F .65 +(vided via a ne)-.15 F 3.15(wo)-.25 G .65(ption to)472.51 573.6 R F1(enable)72 +585.6 Q F0(.)A F1 2.5(5.3. Builtins)72 609.6 R F0 .889(Some of the e)97 625.2 R +.889(xisting b)-.15 F .889(uiltins will change in bash-2.0.)-.2 F .888(As pre) +5.888 F .888(viously noted,)-.25 F F1(declar)3.388 E(e)-.18 E F0(,)A F1(export) +3.388 E F0(,)A F1 -.18(re)3.388 G(ad-).18 E(only)72 637.2 Q F0 2.873(,a)C(nd) +100.153 637.2 Q F1 -.18(re)2.873 G(ad).18 E F0 .373(will accept ne)2.873 F +2.873(wo)-.25 G .374(ptions to specify arrays.)206.288 637.2 R(The)5.374 E F1 +(jobs)2.874 E F0 -.2(bu)2.874 G .374(iltin will be able to list only stopped).2 +F .323(or running jobs.)72 649.2 R(The)5.322 E F1(enable)2.822 E F0 .322 +(command will tak)2.822 F 2.822(ean)-.1 G -.25(ew)282.84 649.2 S F13.072 +E F0 .322(option to restrict its actions to the POSIX.2)2.822 F F2(spe-)2.822 E +(cial)72 661.2 Q F0 -.2(bu)3.14 G(iltins.).2 E F1(Kill)5.64 E F0 .64 +(will be able to list signal numbers corresponding to indi)3.14 F .64 +(vidual signal names.)-.25 F .64(The read-)5.64 F .703(line library interf)72 +673.2 R(ace,)-.1 E F1(bind)3.203 E F0 3.203(,w)C .703(ill ha)193.032 673.2 R +1.003 -.15(ve a)-.2 H 3.203(no).15 G .703(ption to remo)243.951 673.2 R 1.003 +-.15(ve t)-.15 H .703(he binding for an).15 F 3.203(yk)-.15 G 1.002 -.15(ey s) +398.032 673.2 T .702(equence \(which is not).15 F +(the same as binding it to self-insert\).)72 685.2 Q .494(There will be tw)97 +700.8 R 2.994(on)-.1 G .994 -.25(ew b)177.196 700.8 T .495 +(uiltin commands in bash-2.0.).05 F(The)5.495 E F1(diso)2.995 E(wn)-.1 E F0 +.495(command will remo)2.995 F .795 -.15(ve j)-.15 H .495(obs from).15 F(bash') +72 712.8 Q 3.445(si)-.55 G .945(nternal jobs table when job control is acti) +103.225 712.8 R -.15(ve)-.25 G 5.945(.A).15 G(diso)303.25 712.8 Q .944 +(wned job will not be listed by the jobs com-)-.25 F .666(mand, nor will its e) +72 724.8 R .666(xit status be reported.)-.15 F(Diso)5.667 E .667 +(wned jobs will not be sent a)-.25 F F1(SIGHUP)3.167 E F0 .667 +(when an interacti)3.167 F -.15(ve)-.25 G EP +%%Page: 12 12 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.5(-1)277.17 48 S 2.5(2-)288 48 S .688(shell e)72 84 R +3.187(xits. Most)-.15 F .687(of the shell')3.187 F 3.187(so)-.55 G .687 +(ptional or)205.423 84 R/F1 10/Times-Italic@0 SF(to)3.187 E -.1(gg)-.1 G(led).1 +E F0 .687(functionality will be folded into the ne)3.187 F(w)-.25 E/F2 10 +/Times-Bold@0 SF(shopt)3.187 E F0 -.2(bu)3.187 G(iltin.).2 E(Man)72 96 Q 3.714 +(yo)-.15 G 3.714(ft)103.894 96 S 1.214(he v)113.718 96 R 1.214 +(ariables which alter the shell')-.25 F 3.714(sb)-.55 G(eha)266.282 96 Q 1.214 +(vior when set \(re)-.2 F -.05(ga)-.15 G 1.214(rdless of their v).05 F 1.215 +(alue\) will be made)-.25 F 6(options settable with)72 108 R F2(shopt)8.5 E F0 +11(.E)C 6(xamples of such v)218.23 108 R 6(ariables include)-.25 F F2(allo)8.5 +E(w_null_glob_expansion)-.1 E F0(,)A F2(glob_dot_\214lenames)72 120 Q F0 2.5 +(,a)C(nd)163.67 120 Q F2(MAIL_W)2.5 E(ARNING)-1.2 E F0(.)A F2 2.5(5.4. V)72 144 +R(ariables and V)-.92 E(ariable Expansion)-.92 E F0 .047 +(Bash-2.0 will implement se)97 159.6 R -.15(ve)-.25 G .048(ral ne).15 F 2.548 +(wv)-.25 G .048(ariable e)252.988 159.6 R 2.548(xpansions. These)-.15 F .048 +(will answer se)2.548 F -.15(ve)-.25 G .048(ral of the most per).15 F(-)-.2 E +.213(sistant requests for ne)72 171.6 R 2.713(wf)-.25 G 2.713(eatures. It) +172.582 171.6 R .213(will be possible to `)2.713 F .212(`indirectly reference') +-.74 F 2.712('av)-.74 G .212(ariable with an e)398.534 171.6 R(xpansion,)-.15 E +(lik)72 183.6 Q 3.01(eu)-.1 G(sing)94.91 183.6 Q/F3 10/Courier@0 SF .51 +(eval \\$${name})3.01 F F0 .51(to reference a v)3.01 F .51(ariable named by) +-.25 F F3(${name})3.01 E F0 5.51(.E)C .51(xpansions will be a)394.32 183.6 R +-.25(va)-.2 G(ilable).25 E .462(to retrie)72 195.6 R .762 -.15(ve s)-.25 H .462 +(ubstrings of v).15 F .461(ariables in an)-.25 F F1(awk)2.961 E F0(-lik)A 2.961 +(em)-.1 G .461(anner: starting at a speci\214c inde)277.692 195.6 R .461 +(x, retrie)-.15 F .461(ving some num-)-.25 F .941 +(ber of characters or the rest of the string.)72 207.6 R .941 +(It will be possible to retrie)5.941 F 1.241 -.15(ve s)-.25 H .941 +(equences of array elements lik).15 F(e)-.1 E .354(this, too.)72 219.6 R .354 +(It w)5.354 F .354(ould be nice to ha)-.1 F .654 -.15(ve a w)-.2 H .354 +(ay to replace portions of a v).05 F .353 +(ariable matching a pattern the same w)-.25 F(ay)-.1 E(leading or trailing sub\ +strings are presently stripped; that capability may be a)72 231.6 Q -.25(va)-.2 +G(ilable.).25 E .453(Another ne)97 247.2 R 2.953(we)-.25 G .453 +(xpansion will pro)156.376 247.2 R .453(vide a w)-.15 F .454 +(ay to create strings containing arbitrary characters, which is)-.1 F(incon)72 +259.2 Q -.15(ve)-.4 G 1.636(nient in the current v).15 F 4.136(ersion. W)-.15 F +1.635(ords of the form $')-.8 F F1(string)A F0 4.135('w)C 1.635(ill e)355.145 +259.2 R 1.635(xpand to)-.15 F F1(string)4.135 E F0 1.635(with backslash-)4.135 +F 1.231(escaped characters in)72 271.2 R F1(string)3.731 E F0 1.231 +(replaced as speci\214ed by the ANSI C standard.)3.731 F 1.232 +(As with other single-quoted)6.232 F +(shell strings, the only character that may not appear in)72 283.2 Q F1(string) +2.5 E F0(is a single quote.)2.5 E 1.436(The shell v)97 298.8 R 1.436 +(ariables will change also.)-.25 F 3.936(An)6.436 G 1.936 -.25(ew va)272.052 +298.8 T(riable).25 E F2(HISTIGNORE)3.936 E F0 1.435(will supersede)3.936 F F2 +(HISTCON-)3.935 E(TR)72 310.8 Q(OL)-.3 E F0(.)A F2(HISTIGNORE)5.327 E F0 .327 +(is the history analogy of)2.827 F F2(FIGNORE)2.828 E F0 2.828(:ac)C .328 +(olon-separated list of patterns specifying)339.938 310.8 R 1.082 +(commands to omit from the history list.)72 322.8 R 1.081 +(The special pattern '&' will match the pre)6.081 F 1.081 +(vious history line, to)-.25 F(pro)72 334.8 Q 1.568(vide the)-.15 F F2 +(HISTCONTR)4.068 E(OL)-.3 E F1(ignor)4.068 E(edups)-.37 E F0(beha)5.734 E(vior) +-.2 E 6.568(.M)-.55 G(an)303.546 334.8 Q 4.069(yv)-.15 G 1.569 +(ariables which modify the shell')326.655 334.8 R 4.069(sb)-.55 G(eha)474.21 +334.8 Q(vior)-.2 E .395(will lose their special meaning.)72 346.8 R -1.11(Va) +5.395 G .395(riables such as)1.11 F F2(notify)2.895 E F0(and)2.895 E F2(noclob) +2.895 E(ber)-.1 E F0 .395(which pro)2.895 F .395(vide functionality a)-.15 F +-.25(va)-.2 G(il-).25 E .931 +(able via other mechanisms will no longer be treated specially)72 358.8 R 5.931 +(.O)-.65 G .931(ther v)340.06 358.8 R .932(ariables will be folded into)-.25 F +F2(shopt)3.432 E F0(.)A(The)72 370.8 Q F2(history_contr)5.519 E(ol)-.18 E F0 +(and)5.519 E F2(hostname_completion_\214le)5.519 E F0 -.25(va)5.519 G 3.019 +(riables, superseded by).25 F F2(HISTCONTR)5.518 E(OL)-.3 E F0(and)5.518 E F2 +(HOSTFILE)72 382.8 Q F0(respecti)2.5 E -.15(ve)-.25 G(ly).15 E 2.5(,w)-.65 G +(ill be remo)185.12 382.8 Q -.15(ve)-.15 G(d.).15 E F2 2.5(5.5. Readline)72 +406.8 R F0(Naturally)97 422.4 Q 2.94(,t)-.65 G .44(here will be impro)142.34 +422.4 R -.15(ve)-.15 G .441(ments to readline as well.).15 F .441 +(All of the POSIX.2)5.441 F F1(vi)2.941 E F0 .441(-mode editing com-)B .33 +(mands will be implemented; missing commands lik)72 434.4 R 2.829(e`)-.1 G .329 +(m' to sa)290.599 434.4 R .629 -.15(ve t)-.2 H .329 +(he current cursor position \().15 F F1(mark)A F0 2.829(\)a)C .329(nd the) +478.951 434.4 R .36(`@' command for macro e)72 446.4 R .36(xpansion will be a) +-.15 F -.25(va)-.2 G 2.861(ilable. The).25 F .361 +(ability to set the mark and e)2.861 F .361(xchange the current)-.15 F .764 +(cursor position \()72 458.4 R F1(point)A F0 3.264(\)a)C .764 +(nd mark will be added to the readline emacs mode as well.)170.672 458.4 R .763 +(Since there are com-)5.764 F .196 +(mands to set the mark, commands to manipulate the re)72 470.4 R .197 +(gion \(the characters between the point and the mark\))-.15 F .111(will be a) +72 482.4 R -.25(va)-.2 G 2.611(ilable. Commands).25 F(ha)2.611 E .411 -.15 +(ve b)-.2 H .11 +(een added to the readline emacs mode for more complete ksh compati-).15 F +(bility)72 494.4 Q 2.5(,s)-.65 G(uch as the C-])101.36 494.4 Q F1(c)A F0 +(character search command.)2.5 E F2 2.5(5.6. Con\214guration)72 518.4 R F0 .318 +(Bash w)97 534 R .318 +(as the \214rst GNU program to completely autocon\214gure.)-.1 F .319 +(Its autocon\214guration mechanism pre-)5.319 F(dates)72 546 Q F1(autoconf)4.07 +E F0 4.07(,t)C 1.569 +(he current GNU con\214guration program, and needs updating.)140.97 546 R 1.569 +(Bash-2.0 may include an)6.569 F .603 +(autoconf-based con\214guration script, if necessary ne)72 558 R 3.103(wf)-.25 +G .603(unctionality can be added to autoconf, or its limita-)294.476 558 R +(tions bypassed.)72 570 Q F2 2.5(5.7. Miscellaneous)72 594 R F0 1.632 +(The POSIX mode will be impro)97 609.6 R -.15(ve)-.15 G 4.131(di).15 G 4.131 +(nb)254.26 609.6 S 1.631(ash-2.0; it will pro)268.391 609.6 R 1.631 +(vide a more complete superset of the)-.15 F(POSIX standard.)72 621.6 Q -.15 +(Fo)5 G 2.5(rt).15 G(he \214rst time, bash will recognize the e)163.79 621.6 Q +(xistance of the POSIX.2)-.15 E F1(special)2.5 E F0 -.2(bu)2.5 G(iltins.).2 E +2.627(An)97 637.2 S .627 -.25(ew t)111.847 637.2 T .127(rap v).25 F(alue,)-.25 +E F2(DEB)2.627 E(UG)-.1 E F0 2.627(,w)C .128(ill be present, as in ksh.)218.405 +637.2 R .128(Commands speci\214ed with a)5.128 F F2(DEB)2.628 E(UG)-.1 E F0 +.128(trap will)2.628 F 1.908(be e)72 649.2 R -.15(xe)-.15 G 1.908 +(cuted after e).15 F -.15(ve)-.25 G 1.908(ry simple command.).15 F 1.908 +(Since this mak)6.908 F 1.908(es shell script deb)-.1 F 1.908 +(uggers possible, I hope to)-.2 F(include a bash deb)72 661.2 Q +(ugger in the bash-2.0 release.)-.2 E F2 2.5(6. A)72 685.2 R -.1(va)-1 G +(ilability).1 E F0 5.997(The current v)97 700.8 R 5.997(ersion of bash is a) +-.15 F -.25(va)-.2 G 5.998(ilable for anon).25 F 5.998 +(ymous FTP from prep.ai.mit.edu as)-.15 F F1(/pub/gnu/bash-1.14.2.tar)72 712.8 +Q(.gz)-1.11 E F0(.)1.666 E EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.5(-1)277.17 48 S 2.5(3-)288 48 S/F1 10/Times-Bold@0 +SF 2.5(7. Conclusion)72 84 R F0 .755(This paper has presented an o)97 99.6 R +-.15(ve)-.15 G(rvie).15 E 3.255(wo)-.25 G 3.255(fb)259.27 99.6 S .755 +(ash, compared its features with those of other shells, and)270.855 99.6 R +(hinted at features in the ne)72 111.6 Q(xt release, bash-2.0.)-.15 E .483 +(Bash is a solid replacement for sh.)97 127.2 R .483(It is suf)5.483 F .483 +(\214ciently portable to run on nearly e)-.25 F -.15(ve)-.25 G .484(ry v).15 F +.484(ersion of)-.15 F/F2 9/Times-Roman@0 SF(UNIX)2.984 E F0 .514 +(from 4.3 BSD to SVR4.2, and se)72 139.2 R -.15(ve)-.25 G(ral).15 E F2(UNIX) +3.013 E F0 -.1(wo)3.013 G(rkalik).1 E .513(es, and rob)-.1 F .513 +(ust enough to replace sh on most of those)-.2 F .771(systems, It is v)72 151.2 +R .771(ery close to POSIX.2-conformant in POSIX mode, and is getting f)-.15 F +(aster)-.1 E 5.771(.I)-.55 G 3.272(ti)436.684 151.2 S 3.272(sn)445.516 151.2 S +.772(ot, unfortu-)457.678 151.2 R(nately)72 163.2 Q 2.663(,g)-.65 G .163 +(etting smaller)105.953 163.2 R 2.663(,b)-.4 G .163(ut there are man)170.399 +163.2 R 2.663(yo)-.15 G .163(ptional features.)248.101 163.2 R .163(It is v) +5.163 F .162(ery easy to b)-.15 F .162(uild a small subset to use as)-.2 F 2.5 +(ad)72 175.2 S(irect replacement for /bin/sh.)83.94 175.2 Q .909 +(Bash has thousands of users w)97 190.8 R .909(orldwide, all of whom ha)-.1 F +1.209 -.15(ve h)-.2 H .91(elped to mak).15 F 3.41(ei)-.1 G 3.41(tb)409.34 190.8 +S(etter)420.53 190.8 Q 5.91(.A)-.55 G .91(nother testa-)453.38 190.8 R +(ment to the bene\214ts of free softw)72 202.8 Q(are.)-.1 E F1 2.5(8. Refer)72 +226.8 R(ences)-.18 E F0 .432([1] S. R. Bourne, `)72 242.4 R .432(`UNIX T)-.74 F +.432(ime-Sharing System:)-.35 F .431(The UNIX Shell')5.431 F(',)-.74 E/F3 10 +/Times-Italic@0 SF .431(Bell System T)2.931 F(ec)-.92 E .431(hnical J)-.15 F +(ournal)-.25 E F0 2.931(,5)C(7\(6\),)484.84 242.4 Q +(July-August, 1978, pp. 1971-1990.)72 254.4 Q .736([2] Morris Bolsk)72 270 R +3.237(ya)-.15 G .737(nd Da)153.22 270 R .737(vid K)-.2 F(orn,)-.35 E F3 .737 +(The K)3.237 F .737(ornShell Command and Pr)-.4 F -.1(og)-.45 G -.15(ra).1 G +.737(mming Langua).15 F -.1(ge)-.1 G F0 3.237(,P).1 G .737(rentice Hall,) +453.833 270 R(1989.)72 282 Q .142([3] Bill Jo)72 297.6 R 1.442 -.65(y, A)-.1 H +2.642(nI).65 G .141(ntroduction to the C Shell,)140.428 297.6 R F3 .141 +(UNIX User')2.641 F 2.641(sS)-.4 G .141(upplementary Documents)309.346 297.6 R +F0 2.641(,U)C(ni)424.328 297.6 Q -.15(ve)-.25 G .141(rsity of Califor).15 F(-) +-.2 E(nia at Berk)72 309.6 Q(ele)-.1 E 1.3 -.65(y, 1)-.15 H(986.).65 E .283 +([4] IEEE,)72 325.2 R F3 .283(IEEE Standar)2.783 F 2.783(df)-.37 G .283 +(or Information T)179.692 325.2 R(ec)-.92 E(hnolo)-.15 E .283(gy -- P)-.1 F +.283(ortable Oper)-.8 F .283(ating System Interface \(POSIX\) P)-.15 F(art)-.8 +E(2: Shell and Utilities)72 337.2 Q F0 2.5(,1)C(992.)165.06 337.2 Q F1 2.5 +(9. A)72 361.2 R(uthor Inf)-.5 E(ormation)-.25 E F0 .937(Chet Rame)97 376.8 R +3.437(yi)-.15 G 3.437(sas)153.724 376.8 S(oftw)172.818 376.8 Q .936 +(are engineer w)-.1 F .936(orking at Case W)-.1 F .936(estern Reserv)-.8 F +3.436(eU)-.15 G(ni)393.43 376.8 Q -.15(ve)-.25 G(rsity).15 E 5.936(.H)-.65 G +3.436(eh)443.036 376.8 S .936(as a B.S. in)455.912 376.8 R .072 +(Computer Engineering and an M.S. in Computer Science, both from CWR)72 388.8 R +2.573(U. He)-.4 F .073(has been w)2.573 F .073(orking on bash)-.1 F +(for six years, and the primary maintainer for one.)72 400.8 Q EP +%%Trailer +end +%%EOF diff --git a/bash-5.1/doc/texinfo.tex b/bash-5.1/doc/texinfo.tex new file mode 100644 index 0000000..d494cce --- /dev/null +++ b/bash-5.1/doc/texinfo.tex @@ -0,0 +1,11045 @@ +% texinfo.tex -- TeX macros to handle Texinfo files. +% +% Load plain if necessary, i.e., if running under initex. +\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi +% +\def\texinfoversion{2015-11-22.14} +% +% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, +% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, +% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 +% Free Software Foundation, Inc. +% +% This texinfo.tex 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 3 of the +% License, or (at your option) any later version. +% +% This texinfo.tex file is distributed in the hope that it will be +% useful, but WITHOUT ANY WARRANTY; without even the implied warranty +% of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 . +% +% As a special exception, when this file is read by TeX when processing +% a Texinfo source document, you may use the result without +% restriction. This Exception is an additional permission under section 7 +% of the GNU General Public License, version 3 ("GPLv3"). +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or +% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or +% http://www.gnu.org/software/texinfo/ (the Texinfo home page) +% The texinfo.tex in any given distribution could well be out +% of date, so if that's what you're using, please check. +% +% Send bug reports to bug-texinfo@gnu.org. Please include including a +% complete document in each bug report with which we can reproduce the +% problem. Patches are, of course, greatly appreciated. +% +% To process a Texinfo manual with TeX, it's most reliable to use the +% texi2dvi shell script that comes with the distribution. For a simple +% manual foo.texi, however, you can get away with this: +% tex foo.texi +% texindex foo.?? +% tex foo.texi +% tex foo.texi +% dvips foo.dvi -o # or whatever; this makes foo.ps. +% The extra TeX runs get the cross-reference information correct. +% Sometimes one run after texindex suffices, and sometimes you need more +% than two; texi2dvi does it as many times as necessary. +% +% It is possible to adapt texinfo.tex for other languages, to some +% extent. You can get the existing language-specific files from the +% full Texinfo distribution. +% +% The GNU Texinfo home page is http://www.gnu.org/software/texinfo. + + +\message{Loading texinfo [version \texinfoversion]:} + +% If in a .fmt file, print the version number +% and turn on active characters that we couldn't do earlier because +% they might have appeared in the input file name. +\everyjob{\message{[Texinfo version \texinfoversion]}% + \catcode`+=\active \catcode`\_=\active} + +\chardef\other=12 + +% We never want plain's \outer definition of \+ in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax + +% Save some plain tex macros whose names we will redefine. +\let\ptexb=\b +\let\ptexbullet=\bullet +\let\ptexc=\c +\let\ptexcomma=\, +\let\ptexdot=\. +\let\ptexdots=\dots +\let\ptexend=\end +\let\ptexequiv=\equiv +\let\ptexexclam=\! +\let\ptexfootnote=\footnote +\let\ptexgtr=> +\let\ptexhat=^ +\let\ptexi=\i +\let\ptexindent=\indent +\let\ptexinsert=\insert +\let\ptexlbrace=\{ +\let\ptexless=< +\let\ptexnewwrite\newwrite +\let\ptexnoindent=\noindent +\let\ptexplus=+ +\let\ptexraggedright=\raggedright +\let\ptexrbrace=\} +\let\ptexslash=\/ +\let\ptexsp=\sp +\let\ptexstar=\* +\let\ptexsup=\sup +\let\ptext=\t +\let\ptextop=\top +{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode + +% If this character appears in an error message or help string, it +% starts a new line in the output. +\newlinechar = `^^J + +% Use TeX 3.0's \inputlineno to get the line number, for better error +% messages, but if we're using an old version of TeX, don't do anything. +% +\ifx\inputlineno\thisisundefined + \let\linenumber = \empty % Pre-3.0. +\else + \def\linenumber{l.\the\inputlineno:\space} +\fi + +% Set up fixed words for English if not already set. +\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi +\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi +\ifx\putworderror\undefined \gdef\putworderror{error}\fi +\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi +\ifx\putwordin\undefined \gdef\putwordin{in}\fi +\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi +\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi +\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi +\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi +\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi +\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi +\ifx\putwordof\undefined \gdef\putwordof{of}\fi +\ifx\putwordon\undefined \gdef\putwordon{on}\fi +\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi +\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi +\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi +\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi +\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi +\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi +\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi +% +\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi +\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi +\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi +\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi +\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi +\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi +\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi +\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi +\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi +\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi +\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi +\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi +% +\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi +\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi +\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi +\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi +\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi + +% Since the category of space is not known, we have to be careful. +\chardef\spacecat = 10 +\def\spaceisspace{\catcode`\ =\spacecat} + +% sometimes characters are active, so we need control sequences. +\chardef\ampChar = `\& +\chardef\colonChar = `\: +\chardef\commaChar = `\, +\chardef\dashChar = `\- +\chardef\dotChar = `\. +\chardef\exclamChar= `\! +\chardef\hashChar = `\# +\chardef\lquoteChar= `\` +\chardef\questChar = `\? +\chardef\rquoteChar= `\' +\chardef\semiChar = `\; +\chardef\slashChar = `\/ +\chardef\underChar = `\_ + +% Ignore a token. +% +\def\gobble#1{} + +% The following is used inside several \edef's. +\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} + +% Hyphenation fixes. +\hyphenation{ + Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script + ap-pen-dix bit-map bit-maps + data-base data-bases eshell fall-ing half-way long-est man-u-script + man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm + par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + spell-ing spell-ings + stand-alone strong-est time-stamp time-stamps which-ever white-space + wide-spread wrap-around +} + +% Sometimes it is convenient to have everything in the transcript file +% and nothing on the terminal. We don't just call \tracingall here, +% since that produces some useless output on the terminal. We also make +% some effort to order the tracing commands to reduce output in the log +% file; cf. trace.sty in LaTeX. +% +\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\def\loggingall{% + \tracingstats2 + \tracingpages1 + \tracinglostchars2 % 2 gives us more in etex + \tracingparagraphs1 + \tracingoutput1 + \tracingmacros2 + \tracingrestores1 + \showboxbreadth\maxdimen \showboxdepth\maxdimen + \ifx\eTeXversion\thisisundefined\else % etex gives us more logging + \tracingscantokens1 + \tracingifs1 + \tracinggroups1 + \tracingnesting2 + \tracingassigns1 + \fi + \tracingcommands3 % 3 gives us more in etex + \errorcontextlines16 +}% + +% @errormsg{MSG}. Do the index-like expansions on MSG, but if things +% aren't perfect, it's not the end of the world, being an error message, +% after all. +% +\def\errormsg{\begingroup \indexnofonts \doerrormsg} +\def\doerrormsg#1{\errmessage{#1}} + +% add check for \lastpenalty to plain's definitions. If the last thing +% we did was a \nobreak, we don't want to insert more space. +% +\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi\fi} +\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi\fi} +\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi\fi} + +% Output routine +% + +% For a final copy, take out the rectangles +% that mark overfull boxes (in case you have decided +% that the text looks ok even though it passes the margin). +% +\def\finalout{\overfullrule=0pt } + +% Do @cropmarks to get crop marks. +% +\newif\ifcropmarks +\let\cropmarks = \cropmarkstrue +% +% Dimensions to add cropmarks at corners. +% Added by P. A. MacKay, 12 Nov. 1986 +% +\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines +\newdimen\cornerlong \cornerlong=1pc +\newdimen\cornerthick \cornerthick=.3pt +\newdimen\topandbottommargin \topandbottommargin=.75in + +% Output a mark which sets \thischapter, \thissection and \thiscolor. +% We dump everything together because we only have one kind of mark. +% This works because we only use \botmark / \topmark, not \firstmark. +% +% A mark contains a subexpression of the \ifcase ... \fi construct. +% \get*marks macros below extract the needed part using \ifcase. +% +% Another complication is to let the user choose whether \thischapter +% (\thissection) refers to the chapter (section) in effect at the top +% of a page, or that at the bottom of a page. The solution is +% described on page 260 of The TeXbook. It involves outputting two +% marks for the sectioning macros, one before the section break, and +% one after. I won't pretend I can describe this better than DEK... +% +\def\domark{% + \toks0=\expandafter{\lastchapterdefs}% + \toks2=\expandafter{\lastsectiondefs}% + \toks4=\expandafter{\prevchapterdefs}% + \toks6=\expandafter{\prevsectiondefs}% + \toks8=\expandafter{\lastcolordefs}% + \mark{% + \the\toks0 \the\toks2 % 0: top marks (\last...) + \noexpand\or \the\toks4 \the\toks6 % 1: bottom marks (default, \prev...) + \noexpand\else \the\toks8 % 2: color marks + }% +} + +% \gettopheadingmarks, \getbottomheadingmarks - extract needed part of mark. +% +% \topmark doesn't work for the very first chapter (after the title +% page or the contents), so we use \firstmark there -- this gets us +% the mark with the chapter defs, unless the user sneaks in, e.g., +% @setcolor (or @url, or @link, etc.) between @contents and the very +% first @chapter. +\def\gettopheadingmarks{% + \ifcase0\topmark\fi + \ifx\thischapter\empty \ifcase0\firstmark\fi \fi +} +\def\getbottomheadingmarks{\ifcase1\botmark\fi} +\def\getcolormarks{\ifcase2\topmark\fi} + +% Avoid "undefined control sequence" errors. +\def\lastchapterdefs{} +\def\lastsectiondefs{} +\def\lastsection{} +\def\prevchapterdefs{} +\def\prevsectiondefs{} +\def\lastcolordefs{} + +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\pagewidth \newdimen\pageheight + +% Main output routine. +% +\chardef\PAGE = 255 +\output = {\onepageout{\pagecontents\PAGE}} + +\newbox\headlinebox +\newbox\footlinebox + +% \onepageout takes a vbox as an argument. +% \shipout a vbox for a single page, adding an optional header, footer, +% cropmarks, and footnote. This also causes index entries for this page +% to be written to the auxiliary files. +% +\def\onepageout#1{% + \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi + % + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % + % Common context changes for both heading and footing. + % Do this outside of the \shipout so @code etc. will be expanded in + % the headline as they should be, not taken literally (outputting ''code). + \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars} + % + % Retrieve the information for the headings from the marks in the page, + % and call Plain TeX's \makeheadline and \makefootline, which use the + % values in \headline and \footline. + % + % This is used to check if we are on the first page of a chapter. + \ifcase0\topmark\fi + \ifx\thischapter\empty + % See comment for \gettopheadingmarks + \ifcase0\firstmark\fi + \let\curchaptername\thischaptername + \ifcase1\firstmark\fi + \let\prevchaptername\thischaptername + \else + \let\curchaptername\thischaptername + \ifcase1\topmark\fi + \let\prevchaptername\thischaptername + \fi + % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + % + \ifx\curchaptername\prevchaptername + \let\thischapterheading\thischapter + \else + % \thischapterheading is the same as \thischapter except it is blank + % for the first page of a chapter. This is to prevent the chapter name + % being shown twice. + \def\thischapterheading{}% + \fi + % + \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}% + \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}% + % + {% + % Set context for writing to auxiliary files like index files. + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \indexdummies % don't expand commands in the output. + \normalturnoffactive % \ in index entries must not stay \, e.g., if + % the page break happens to be in the middle of an example. + % We don't want .vr (or whatever) entries like this: + % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}} + % "\acronym" won't work when it's read back in; + % it needs to be + % {\code {{\backslashcurfont }acronym} + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi + % + \ifcropmarks \vbox to \outervsize\bgroup + \hsize = \outerhsize + \vskip-\topandbottommargin + \vtop to0pt{% + \line{\ewtop\hfil\ewtop}% + \nointerlineskip + \line{% + \vbox{\moveleft\cornerthick\nstop}% + \hfill + \vbox{\moveright\cornerthick\nstop}% + }% + \vss}% + \vskip\topandbottommargin + \line\bgroup + \hfil % center the page within the outer (page) hsize. + \ifodd\pageno\hskip\bindingoffset\fi + \vbox\bgroup + \fi + % + \unvbox\headlinebox + \pagebody{#1}% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingyyy.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 24pt + \unvbox\footlinebox + \fi + % + \ifcropmarks + \egroup % end of \vbox\bgroup + \hfil\egroup % end of (centering) \line\bgroup + \vskip\topandbottommargin plus1fill minus1fill + \boxmaxdepth = \cornerthick + \vbox to0pt{\vss + \line{% + \vbox{\moveleft\cornerthick\nsbot}% + \hfill + \vbox{\moveright\cornerthick\nsbot}% + }% + \nointerlineskip + \line{\ewbot\hfil\ewbot}% + }% + \egroup % \vbox from first cropmarks clause + \fi + }% end of \shipout\vbox + }% end of group with \indexdummies + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi +} + +\newinsert\margin \dimen\margin=\maxdimen + +% Main part of page, including any footnotes +\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} +{\catcode`\@ =11 +\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi +% marginal hacks, juha@viisa.uucp (Juha Takala) +\ifvoid\margin\else % marginal info is present + \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi +\dimen@=\dp#1\relax \unvbox#1\relax +\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi +\ifr@ggedbottom \kern-\dimen@ \vfil \fi} +} + +% Here are the rules for the cropmarks. Note that they are +% offset so that the space between them is truly \outerhsize or \outervsize +% (P. A. MacKay, 12 November, 1986) +% +\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} +\def\nstop{\vbox + {\hrule height\cornerthick depth\cornerlong width\cornerthick}} +\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} +\def\nsbot{\vbox + {\hrule height\cornerlong depth\cornerthick width\cornerthick}} + + +% Argument parsing + +% Parse an argument, then pass it to #1. The argument is the rest of +% the input line (except we remove a trailing comment). #1 should be a +% macro which expects an ordinary undelimited TeX argument. +% For example, \def\foo{\parsearg\fooxxx}. +% +\def\parsearg{\parseargusing{}} +\def\parseargusing#1#2{% + \def\argtorun{#2}% + \begingroup + \obeylines + \spaceisspace + #1% + \parseargline\empty% Insert the \empty token, see \finishparsearg below. +} + +{\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + \argremovecomment #1\comment\ArgTerm% + }% +} + +% First remove any @comment, then any @c comment. Also remove a @texinfoc +% comment (see \scanmacro for details). Pass the result on to \argcheckspaces. +\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm} +\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} + +% Each occurrence of `\^^M' or `\^^M' is replaced by a single space. +% +% \argremovec might leave us with trailing space, e.g., +% @end itemize @c foo +% This space token undergoes the same procedure and is eventually removed +% by \finishparsearg. +% +\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} +\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} +\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% + \def\temp{#3}% + \ifx\temp\empty + % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: + \let\temp\finishparsearg + \else + \let\temp\argcheckspaces + \fi + % Put the space token in: + \temp#1 #3\ArgTerm +} + +% If a _delimited_ argument is enclosed in braces, they get stripped; so +% to get _exactly_ the rest of the line, we had to prevent such situation. +% We prepended an \empty token at the very beginning and we expand it now, +% just before passing the control to \argtorun. +% (Similarly, we have to think about #3 of \argcheckspacesY above: it is +% either the null string, or it ends with \^^M---thus there is no danger +% that a pair of braces would be stripped. +% +% But first, we have to remove the trailing space token. +% +\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} + + +% \parseargdef - define a command taking an argument on the line +% +% \parseargdef\foo{...} +% is roughly equivalent to +% \def\foo{\parsearg\Xfoo} +% \def\Xfoo#1{...} +\def\parseargdef#1{% + \expandafter \doparseargdef \csname\string#1\endcsname #1% +} +\def\doparseargdef#1#2{% + \def#2{\parsearg#1}% + \def#1##1% +} + +% Several utility definitions with active space: +{ + \obeyspaces + \gdef\obeyedspace{ } + + % Make each space character in the input produce a normal interword + % space in the output. Don't allow a line break at this space, as this + % is used only in environments like @example, where each line of input + % should produce a line of output anyway. + % + \gdef\sepspaces{\obeyspaces\let =\tie} + + % If an index command is used in an @example environment, any spaces + % therein should become regular spaces in the raw index file, not the + % expansion of \tie (\leavevmode \penalty \@M \ ). + \gdef\unsepspaces{\let =\space} +} + + +\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + +% Define the framework for environments in texinfo.tex. It's used like this: +% +% \envdef\foo{...} +% \def\Efoo{...} +% +% It's the responsibility of \envdef to insert \begingroup before the +% actual body; @end closes the group after calling \Efoo. \envdef also +% defines \thisenv, so the current environment is known; @end checks +% whether the environment name matches. The \checkenv macro can also be +% used to check whether the current environment is the one expected. +% +% Non-false conditionals (@iftex, @ifset) don't fit into this, so they +% are not treated as environments; they don't open a group. (The +% implementation of @end takes care not to call \endgroup in this +% special case.) + + +% At run-time, environments start with this: +\def\startenvironment#1{\begingroup\def\thisenv{#1}} +% initialize +\let\thisenv\empty + +% ... but they get defined via ``\envdef\foo{...}'': +\long\def\envdef#1#2{\def#1{\startenvironment#1#2}} +\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} + +% Check whether we're in the right environment: +\def\checkenv#1{% + \def\temp{#1}% + \ifx\thisenv\temp + \else + \badenverr + \fi +} + +% Environment mismatch, #1 expected: +\def\badenverr{% + \errhelp = \EMsimple + \errmessage{This command can appear only \inenvironment\temp, + not \inenvironment\thisenv}% +} +\def\inenvironment#1{% + \ifx#1\empty + outside of any environment% + \else + in environment \expandafter\string#1% + \fi +} + +% @end foo executes the definition of \Efoo. +% But first, it executes a specialized version of \checkenv +% +\parseargdef\end{% + \if 1\csname iscond.#1\endcsname + \else + % The general wording of \badenverr may not be ideal. + \expandafter\checkenv\csname#1\endcsname + \csname E#1\endcsname + \endgroup + \fi +} + +\newhelp\EMsimple{Press RETURN to continue.} + + +% Be sure we're in horizontal mode when doing a tie, since we make space +% equivalent to this in @example-like environments. Otherwise, a space +% at the beginning of a line will start with \penalty -- and +% since \penalty is valid in vertical mode, we'd end up putting the +% penalty on the vertical list instead of in the new paragraph. +{\catcode`@ = 11 + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } +} + +% @: forces normal size whitespace following. +\def\:{\spacefactor=1000 } + +% @* forces a line break. +\def\*{\unskip\hfil\break\hbox{}\ignorespaces} + +% @/ allows a line break. +\let\/=\allowbreak + +% @. is an end-of-sentence period. +\def\.{.\spacefactor=\endofsentencespacefactor\space} + +% @! is an end-of-sentence bang. +\def\!{!\spacefactor=\endofsentencespacefactor\space} + +% @? is an end-of-sentence query. +\def\?{?\spacefactor=\endofsentencespacefactor\space} + +% @frenchspacing on|off says whether to put extra space after punctuation. +% +\def\onword{on} +\def\offword{off} +% +\parseargdef\frenchspacing{% + \def\temp{#1}% + \ifx\temp\onword \plainfrenchspacing + \else\ifx\temp\offword \plainnonfrenchspacing + \else + \errhelp = \EMsimple + \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% + \fi\fi +} + +% @w prevents a word break. Without the \leavevmode, @w at the +% beginning of a paragraph, when TeX is still in vertical mode, would +% produce a whole line of output instead of starting the paragraph. +\def\w#1{\leavevmode\hbox{#1}} + +% @group ... @end group forces ... to be all on one page, by enclosing +% it in a TeX vbox. We use \vtop instead of \vbox to construct the box +% to keep its height that of a normal line. According to the rules for +% \topskip (p.114 of the TeXbook), the glue inserted is +% max (\topskip - \ht (first item), 0). If that height is large, +% therefore, no glue is inserted, and the space between the headline and +% the text is small, which looks bad. +% +% Another complication is that the group might be very large. This can +% cause the glue on the previous page to be unduly stretched, because it +% does not have much material. In this case, it's better to add an +% explicit \vfill so that the extra space is at the bottom. The +% threshold for doing this is if the group is more than \vfilllimit +% percent of a page (\vfilllimit can be changed inside of @tex). +% +\newbox\groupbox +\def\vfilllimit{0.7} +% +\envdef\group{% + \ifnum\catcode`\^^M=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + \startsavinginserts + % + \setbox\groupbox = \vtop\bgroup + % Do @comment since we are called inside an environment such as + % @example, where each end-of-line in the input causes an + % end-of-line in the output. We don't want the end-of-line after + % the `@group' to put extra space in the output. Since @group + % should appear on a line by itself (according to the Texinfo + % manual), we don't worry about eating any user text. + \comment +} +% +% The \vtop produces a box with normal height and large depth; thus, TeX puts +% \baselineskip glue before it, and (when the next line of text is done) +% \lineskip glue after it. Thus, space below is not quite equal to space +% above. But it's pretty close. +\def\Egroup{% + % To get correct interline space between the last line of the group + % and the first line afterwards, we have to propagate \prevdepth. + \endgraf % Not \par, as it may have been set to \lisppar. + \global\dimen1 = \prevdepth + \egroup % End the \vtop. + \addgroupbox + \prevdepth = \dimen1 + \checkinserts +} + +\def\addgroupbox{ + % \dimen0 is the vertical size of the group's box. + \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox + % \dimen2 is how much space is left on the page (more or less). + \dimen2 = \pageheight \advance\dimen2 by -\pagetotal + % if the group doesn't fit on the current page, and it's a big big + % group, force a page break. + \ifdim \dimen0 > \dimen2 + \ifdim \pagetotal < \vfilllimit\pageheight + \page + \fi + \fi + \box\groupbox +} + +% +% TeX puts in an \escapechar (i.e., `@') at the beginning of the help +% message, so this ends up printing `@group can only ...'. +% +\newhelp\groupinvalidhelp{% +group can only be used in environments such as @example,^^J% +where each line of input produces a line of output.} + +% @need space-in-mils +% forces a page break if there is not space-in-mils remaining. + +\newdimen\mil \mil=0.001in + +\parseargdef\need{% + % Ensure vertical mode, so we don't make a big box in the middle of a + % paragraph. + \par + % + % If the @need value is less than one line space, it's useless. + \dimen0 = #1\mil + \dimen2 = \ht\strutbox + \advance\dimen2 by \dp\strutbox + \ifdim\dimen0 > \dimen2 + % + % Do a \strut just to make the height of this box be normal, so the + % normal leading is inserted relative to the preceding line. + % And a page break here is fine. + \vtop to #1\mil{\strut\vfil}% + % + % TeX does not even consider page breaks if a penalty added to the + % main vertical list is 10000 or more. But in order to see if the + % empty box we just added fits on the page, we must make it consider + % page breaks. On the other hand, we don't want to actually break the + % page after the empty box. So we use a penalty of 9999. + % + % There is an extremely small chance that TeX will actually break the + % page at this \penalty, if there are no other feasible breakpoints in + % sight. (If the user is using lots of big @group commands, which + % almost-but-not-quite fill up a page, TeX will have a hard time doing + % good page breaking, for example.) However, I could not construct an + % example where a page broke at this \penalty; if it happens in a real + % document, then we can reconsider our strategy. + \penalty9999 + % + % Back up by the size of the box, whether we did a page break or not. + \kern -#1\mil + % + % Do not allow a page break right after this kern. + \nobreak + \fi +} + +% @br forces paragraph break (and is undocumented). + +\let\br = \par + +% @page forces the start of a new page. +% +\def\page{\par\vfill\supereject} + +% @exdent text.... +% outputs text on separate line in roman font, starting at standard page margin + +% This records the amount of indent in the innermost environment. +% That's how much \exdent should take out. +\newskip\exdentamount + +% This defn is used inside fill environments such as @defun. +\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} + +% This defn is used inside nofill environments such as @example. +\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + +% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current +% paragraph. For more general purposes, use the \margin insertion +% class. WHICH is `l' or `r'. Not documented, written for gawk manual. +% +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} +% +\def\doinmargin#1#2{\strut\vadjust{% + \nobreak + \kern-\strutdepth + \vtop to \strutdepth{% + \baselineskip=\strutdepth + \vss + % if you have multiple lines of stuff to put here, you'll need to + % make the vbox yourself of the appropriate size. + \ifx#1l% + \llap{\ignorespaces #2\hskip\inmarginspacing}% + \else + \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% + \fi + \null + }% +}} +\def\inleftmargin{\doinmargin l} +\def\inrightmargin{\doinmargin r} +% +% @inmargin{TEXT [, RIGHT-TEXT]} +% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; +% else use TEXT for both). +% +\def\inmargin#1{\parseinmargin #1,,\finish} +\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \def\lefttext{#1}% have both texts + \def\righttext{#2}% + \else + \def\lefttext{#1}% have only one text + \def\righttext{#1}% + \fi + % + \ifodd\pageno + \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin + \else + \def\temp{\inleftmargin\lefttext}% + \fi + \temp +} + +% @| inserts a changebar to the left of the current line. It should +% surround any changed text. This approach does *not* work if the +% change spans more than two lines of output. To handle that, we would +% have adopt a much more difficult approach (putting marks into the main +% vertical list for the beginning and end of each change). This command +% is not documented, not supported, and doesn't work. +% +\def\|{% + % \vadjust can only be used in horizontal mode. + \leavevmode + % + % Append this vertical mode material after the current line in the output. + \vadjust{% + % We want to insert a rule with the height and depth of the current + % leading; that is exactly what \strutbox is supposed to record. + \vskip-\baselineskip + % + % \vadjust-items are inserted at the left edge of the type. So + % the \llap here moves out into the left-hand margin. + \llap{% + % + % For a thicker or thinner bar, change the `1pt'. + \vrule height\baselineskip width1pt + % + % This is the space between the bar and the text. + \hskip 12pt + }% + }% +} + +% @include FILE -- \input text of FILE. +% +\def\include{\parseargusing\filenamecatcodes\includezzz} +\def\includezzz#1{% + \pushthisfilestack + \def\thisfile{#1}% + {% + \makevalueexpandable % we want to expand any @value in FILE. + \turnoffactive % and allow special characters in the expansion + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @include of #1^^J}% + \edef\temp{\noexpand\input #1 }% + % + % This trickery is to read FILE outside of a group, in case it makes + % definitions, etc. + \expandafter + }\temp + \popthisfilestack +} +\def\filenamecatcodes{% + \catcode`\\=\other + \catcode`~=\other + \catcode`^=\other + \catcode`_=\other + \catcode`|=\other + \catcode`<=\other + \catcode`>=\other + \catcode`+=\other + \catcode`-=\other + \catcode`\`=\other + \catcode`\'=\other +} + +\def\pushthisfilestack{% + \expandafter\pushthisfilestackX\popthisfilestack\StackTerm +} +\def\pushthisfilestackX{% + \expandafter\pushthisfilestackY\thisfile\StackTerm +} +\def\pushthisfilestackY #1\StackTerm #2\StackTerm {% + \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% +} + +\def\popthisfilestack{\errthisfilestackempty} +\def\errthisfilestackempty{\errmessage{Internal error: + the stack of filenames is empty.}} +% +\def\thisfile{} + +% @center line +% outputs that line, centered. +% +\parseargdef\center{% + \ifhmode + \let\centersub\centerH + \else + \let\centersub\centerV + \fi + \centersub{\hfil \ignorespaces#1\unskip \hfil}% + \let\centersub\relax % don't let the definition persist, just in case +} +\def\centerH#1{{% + \hfil\break + \advance\hsize by -\leftskip + \advance\hsize by -\rightskip + \line{#1}% + \break +}} +% +\newcount\centerpenalty +\def\centerV#1{% + % The idea here is the same as in \startdefun, \cartouche, etc.: if + % @center is the first thing after a section heading, we need to wipe + % out the negative parskip inserted by \sectionheading, but still + % prevent a page break here. + \centerpenalty = \lastpenalty + \ifnum\centerpenalty>10000 \vskip\parskip \fi + \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi + \line{\kern\leftskip #1\kern\rightskip}% +} + +% @sp n outputs n lines of vertical space +% +\parseargdef\sp{\vskip #1\baselineskip} + +% @comment ...line which is ignored... +% @c is the same as @comment +% @ignore ... @end ignore is another way to write a comment +% +\def\comment{\begingroup \catcode`\^^M=\active% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other\commentxxx}% + +{\catcode`\^^M=\active% +\gdef\commentxxx#1^^M{\endgroup% +\futurelet\nexttoken\commentxxxx}% +\gdef\commentxxxx{\ifx\nexttoken\aftermacro\expandafter\comment\fi}% +} + +\def\c{\begingroup \catcode`\^^M=\active% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% +\cxxx} +{\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}} +% See comment in \scanmacro about why the definitions of @c and @comment differ + +% @paragraphindent NCHARS +% We'll use ems for NCHARS, close enough. +% NCHARS can also be the word `asis' or `none'. +% We cannot feasibly implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} +% +\parseargdef\paragraphindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi + \fi + \parindent = \defaultparindent +} + +% @exampleindent NCHARS +% We'll use ems for NCHARS like @paragraphindent. +% It seems @exampleindent asis isn't necessary, but +% I preserve it to make it similar to @paragraphindent. +\parseargdef\exampleindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi +} + +% @firstparagraphindent WORD +% If WORD is `none', then suppress indentation of the first paragraph +% after a section heading. If WORD is `insert', then do indent at such +% paragraphs. +% +% The paragraph indentation is suppressed or not by calling +% \suppressfirstparagraphindent, which the sectioning commands do. +% We switch the definition of this back and forth according to WORD. +% By default, we suppress indentation. +% +\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} +\def\insertword{insert} +% +\parseargdef\firstparagraphindent{% + \def\temp{#1}% + \ifx\temp\noneword + \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent + \else\ifx\temp\insertword + \let\suppressfirstparagraphindent = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @firstparagraphindent option `\temp'}% + \fi\fi +} + +% Here is how we actually suppress indentation. Redefine \everypar to +% \kern backwards by \parindent, and then reset itself to empty. +% +% We also make \indent itself not actually do anything until the next +% paragraph. +% +\gdef\dosuppressfirstparagraphindent{% + \gdef\indent {\restorefirstparagraphindent \indent}% + \gdef\noindent{\restorefirstparagraphindent \noindent}% + \global\everypar = {\kern -\parindent \restorefirstparagraphindent}% +} +% +\gdef\restorefirstparagraphindent{% + \global\let\indent = \ptexindent + \global\let\noindent = \ptexnoindent + \global\everypar = {}% +} + + +% @refill is a no-op. +\let\refill=\relax + +% @setfilename INFO-FILENAME - ignored +\let\setfilename=\comment + +% @bye. +\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} + + +\message{pdf,} +% adobe `portable' document format +\newcount\tempnum +\newcount\lnkcount +\newtoks\filename +\newcount\filenamelength +\newcount\pgn +\newtoks\toksA +\newtoks\toksB +\newtoks\toksC +\newtoks\toksD +\newbox\boxA +\newbox\boxB +\newcount\countA +\newif\ifpdf +\newif\ifpdfmakepagedest + +% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 +% can be set). So we test for \relax and 0 as well as being undefined. +\ifx\pdfoutput\thisisundefined +\else + \ifx\pdfoutput\relax + \else + \ifcase\pdfoutput + \else + \pdftrue + \fi + \fi +\fi + +% PDF uses PostScript string constants for the names of xref targets, +% for display in the outlines, and in other places. Thus, we have to +% double any backslashes. Otherwise, a name like "\node" will be +% interpreted as a newline (\n), followed by o, d, e. Not good. +% +% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and +% related messages. The final outcome is that it is up to the TeX user +% to double the backslashes and otherwise make the string valid, so +% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to +% do this reliably, so we use it. + +% #1 is a control sequence in which to do the replacements, +% which we \xdef. +\def\txiescapepdf#1{% + \ifx\pdfescapestring\thisisundefined + % No primitive available; should we give a warning or log? + % Many times it won't matter. + \else + % The expandable \pdfescapestring primitive escapes parentheses, + % backslashes, and other special chars. + \xdef#1{\pdfescapestring{#1}}% + \fi +} + +\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images +with PDF output, and none of those formats could be found. (.eps cannot +be supported due to the design of the PDF format; use regular TeX (DVI +output) for that.)} + +\ifpdf + % + % Color manipulation macros using ideas from pdfcolor.tex, + % except using rgb instead of cmyk; the latter is said to render as a + % very dark gray on-screen and a very dark halftone in print, instead + % of actual black. The dark red here is dark enough to print on paper as + % nearly black, but still distinguishable for online viewing. We use + % black by default, though. + \def\rgbDarkRed{0.50 0.09 0.12} + \def\rgbBlack{0 0 0} + % + % k sets the color for filling (usual text, etc.); + % K sets the color for stroking (thin rules, e.g., normal _'s). + \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} + % + % Set color, and create a mark which defines \thiscolor accordingly, + % so that \makeheadline knows which color to restore. + \def\setcolor#1{% + \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% + \domark + \pdfsetcolor{#1}% + } + % + \def\maincolor{\rgbBlack} + \pdfsetcolor{\maincolor} + \edef\thiscolor{\maincolor} + \def\lastcolordefs{} + % + \def\makefootline{% + \baselineskip24pt + \line{\pdfsetcolor{\maincolor}\the\footline}% + } + % + \def\makeheadline{% + \vbox to 0pt{% + \vskip-22.5pt + \line{% + \vbox to8.5pt{}% + % Extract \thiscolor definition from the marks. + \getcolormarks + % Typeset the headline with \maincolor, then restore the color. + \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% + }% + \vss + }% + \nointerlineskip + } + % + % + \pdfcatalog{/PageMode /UseOutlines} + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\dopdfimage#1#2#3{% + \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % pdftex (and the PDF format) support .pdf, .png, .jpg (among + % others). Let's try in that order, PDF first since if + % someone has a scalable image, presumably better to use that than a + % bitmap. + \let\pdfimgext=\empty + \begingroup + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \errhelp = \nopdfimagehelp + \errmessage{Could not find image file #1 for pdf}% + \else \gdef\pdfimgext{JPG}% + \fi + \else \gdef\pdfimgext{jpeg}% + \fi + \else \gdef\pdfimgext{jpg}% + \fi + \else \gdef\pdfimgext{png}% + \fi + \else \gdef\pdfimgext{PDF}% + \fi + \else \gdef\pdfimgext{pdf}% + \fi + \closein 1 + \endgroup + % + % without \immediate, ancient pdftex seg faults when the same image is + % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) + \ifnum\pdftexversion < 14 + \immediate\pdfimage + \else + \immediate\pdfximage + \fi + \ifdim \wd0 >0pt width \pdfimagewidth \fi + \ifdim \wd2 >0pt height \pdfimageheight \fi + \ifnum\pdftexversion<13 + #1.\pdfimgext + \else + {#1.\pdfimgext}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + % + \def\pdfmkdest#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \turnoffactive + \makevalueexpandable + \def\pdfdestname{#1}% + \txiescapepdf\pdfdestname + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + }} + % + % used to mark target names; must be expandable. + \def\pdfmkpgn#1{#1} + % + % by default, use black for everything. + \def\urlcolor{\rgbBlack} + \def\linkcolor{\rgbBlack} + \def\endlink{\setcolor{\maincolor}\pdfendlink} + % + % Adding outlines to PDF; macros for calculating structure of outlines + % come from Petr Olsak + \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% + \else \csname#1\endcsname \fi} + \def\advancenumber#1{\tempnum=\expnumber{#1}\relax + \advance\tempnum by 1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + % + % #1 is the section text, which is what will be displayed in the + % outline by the pdf viewer. #2 is the pdf expression for the number + % of subentries (or empty, for subsubsections). #3 is the node text, + % which might be empty if this toc entry had no corresponding node. + % #4 is the page number + % + \def\dopdfoutline#1#2#3#4{% + % Generate a link to the node text if that exists; else, use the + % page number. We could generate a destination for the section + % text in the case where a section has no node, but it doesn't + % seem worth the trouble, since most documents are normally structured. + \edef\pdfoutlinedest{#3}% + \ifx\pdfoutlinedest\empty + \def\pdfoutlinedest{#4}% + \else + \txiescapepdf\pdfoutlinedest + \fi + % + % Also escape PDF chars in the display string. + \edef\pdfoutlinetext{#1}% + \txiescapepdf\pdfoutlinetext + % + \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% + } + % + \def\pdfmakeoutlines{% + \begingroup + % Read toc silently, to get counts of subentries for \pdfoutline. + \def\partentry##1##2##3##4{}% ignore parts in the outlines + \def\numchapentry##1##2##3##4{% + \def\thischapnum{##2}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + }% + \def\numsecentry##1##2##3##4{% + \advancenumber{chap\thischapnum}% + \def\thissecnum{##2}% + \def\thissubsecnum{0}% + }% + \def\numsubsecentry##1##2##3##4{% + \advancenumber{sec\thissecnum}% + \def\thissubsecnum{##2}% + }% + \def\numsubsubsecentry##1##2##3##4{% + \advancenumber{subsec\thissubsecnum}% + }% + \def\thischapnum{0}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + % + % use \def rather than \let here because we redefine \chapentry et + % al. a second time, below. + \def\appentry{\numchapentry}% + \def\appsecentry{\numsecentry}% + \def\appsubsecentry{\numsubsecentry}% + \def\appsubsubsecentry{\numsubsubsecentry}% + \def\unnchapentry{\numchapentry}% + \def\unnsecentry{\numsecentry}% + \def\unnsubsecentry{\numsubsecentry}% + \def\unnsubsubsecentry{\numsubsubsecentry}% + \readdatafile{toc}% + % + % Read toc second time, this time actually producing the outlines. + % The `-' means take the \expnumber as the absolute number of + % subentries, which we calculated on our first read of the .toc above. + % + % We use the node names as the destinations. + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% count is always zero + \dopdfoutline{##1}{}{##3}{##4}}% + % + % PDF outlines are displayed using system fonts, instead of + % document fonts. Therefore we cannot use special characters, + % since the encoding is unknown. For example, the eogonek from + % Latin 2 (0xea) gets translated to a | character. Info from + % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. + % + % TODO this right, we have to translate 8-bit characters to + % their "best" equivalent, based on the @documentencoding. Too + % much work for too little return. Just use the ASCII equivalents + % we use for the index sort strings. + % + \indexnofonts + \setupdatafile + % We can have normal brace characters in the PDF outlines, unlike + % Texinfo index files. So set that up. + \def\{{\lbracecharliteral}% + \def\}{\rbracecharliteral}% + \catcode`\\=\active \otherbackslash + \input \tocreadfilename + \endgroup + } + {\catcode`[=1 \catcode`]=2 + \catcode`{=\other \catcode`}=\other + \gdef\lbracecharliteral[{]% + \gdef\rbracecharliteral[}]% + ] + % + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \nextsp} + \def\getfilename#1{% + \filenamelength=0 + % If we don't expand the argument now, \skipspaces will get + % snagged on things like "@value{foo}". + \edef\temp{#1}% + \expandafter\skipspaces\temp|\relax + } + \ifnum\pdftexversion < 14 + \let \startlink \pdfannotlink + \else + \let \startlink \pdfstartlink + \fi + % make a live url in pdf output. + \def\pdfurl#1{% + \begingroup + % it seems we really need yet another set of dummies; have not + % tried to figure out what each command should do in the context + % of @url. for now, just make @/ a no-op, that's the only one + % people have actually reported a problem with. + % + \normalturnoffactive + \def\@{@}% + \let\/=\empty + \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % + \leavevmode\setcolor{\urlcolor}% + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + \endgroup} + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS|\relax + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\pdflink#1{% + \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} + \setcolor{\linkcolor}#1\endlink} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\else + % non-pdf mode + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\setcolor = \gobble + \let\pdfsetcolor = \gobble + \let\pdfmakeoutlines = \relax +\fi % \ifx\pdfoutput + + +\message{fonts,} + +% Change the current font style to #1, remembering it in \curfontstyle. +% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in +% italics, not bold italics. +% +\def\setfontstyle#1{% + \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. + \csname ten#1\endcsname % change the current font +} + +% Select #1 fonts with the current style. +% +\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} + +\def\rm{\fam=0 \setfontstyle{rm}} +\def\it{\fam=\itfam \setfontstyle{it}} +\def\sl{\fam=\slfam \setfontstyle{sl}} +\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} +\def\tt{\fam=\ttfam \setfontstyle{tt}} + +% Unfortunately, we have to override this for titles and the like, since +% in those cases "rm" is bold. Sigh. +\def\rmisbold{\rm\def\curfontstyle{bf}} + +% Texinfo sort of supports the sans serif font style, which plain TeX does not. +% So we set up a \sf. +\newfam\sffam +\def\sf{\fam=\sffam \setfontstyle{sf}} +\let\li = \sf % Sometimes we call it \li, not \sf. + +% We don't need math for this font style. +\def\ttsl{\setfontstyle{ttsl}} + + +% Set the baselineskip to #1, and the lineskip and strut size +% correspondingly. There is no deep meaning behind these magic numbers +% used as factors; they just match (closely enough) what Knuth defined. +% +\def\lineskipfactor{.08333} +\def\strutheightpercent{.70833} +\def\strutdepthpercent {.29167} +% +% can get a sort of poor man's double spacing by redefining this. +\def\baselinefactor{1} +% +\newdimen\textleading +\def\setleading#1{% + \dimen0 = #1\relax + \normalbaselineskip = \baselinefactor\dimen0 + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% +} + +% PDF CMaps. See also LaTeX's t1.cmap. +% +% do nothing with this by default. +\expandafter\let\csname cmapOT1\endcsname\gobble +\expandafter\let\csname cmapOT1IT\endcsname\gobble +\expandafter\let\csname cmapOT1TT\endcsname\gobble + +% if we are producing pdf, and we have \pdffontattr, then define cmaps. +% (\pdffontattr was introduced many years ago, but people still run +% older pdftex's; it's easy to conditionalize, so we do.) +\ifpdf \ifx\pdffontattr\thisisundefined \else + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1-0) +%%Title: (TeX-OT1-0 TeX OT1 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1) +/Supplement 0 +>> def +/CMapName /TeX-OT1-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<23> <26> <0023> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +40 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1IT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1IT-0) +%%Title: (TeX-OT1IT-0 TeX OT1IT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1IT) +/Supplement 0 +>> def +/CMapName /TeX-OT1IT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<25> <26> <0025> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +42 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<23> <0023> +<24> <00A3> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1IT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1TT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1TT-0) +%%Title: (TeX-OT1TT-0 TeX OT1TT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1TT) +/Supplement 0 +>> def +/CMapName /TeX-OT1TT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +5 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<21> <26> <0021> +<28> <5F> <0028> +<61> <7E> <0061> +endbfrange +32 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <2191> +<0C> <2193> +<0D> <0027> +<0E> <00A1> +<0F> <00BF> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<20> <2423> +<27> <2019> +<60> <2018> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1TT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +\fi\fi + + +% Set the font macro #1 to the font named \fontprefix#2. +% #3 is the font's design size, #4 is a scale factor, #5 is the CMap +% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). +% Example: +% #1 = \textrm +% #2 = \rmshape +% #3 = 10 +% #4 = \mainmagstep +% #5 = OT1 +% +\def\setfont#1#2#3#4#5{% + \font#1=\fontprefix#2#3 scaled #4 + \csname cmap#5\endcsname#1% +} +% This is what gets called when #5 of \setfont is empty. +\let\cmap\gobble +% +% (end of cmaps) + +% Use cm as the default font prefix. +% To specify the font prefix, you must define \fontprefix +% before you read in texinfo.tex. +\ifx\fontprefix\thisisundefined +\def\fontprefix{cm} +\fi +% Support font families that don't use the same naming scheme as CM. +\def\rmshape{r} +\def\rmbshape{bx} % where the normal face is bold +\def\bfshape{b} +\def\bxshape{bx} +\def\ttshape{tt} +\def\ttbshape{tt} +\def\ttslshape{sltt} +\def\itshape{ti} +\def\itbshape{bxti} +\def\slshape{sl} +\def\slbshape{bxsl} +\def\sfshape{ss} +\def\sfbshape{ss} +\def\scshape{csc} +\def\scbshape{csc} + +% Definitions for a main text size of 11pt. (The default in Texinfo.) +% +\def\definetextfontsizexi{% +% Text fonts (11.2pt, magstep1). +\def\textnominalsize{11pt} +\edef\mainmagstep{\magstephalf} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1095} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstep1}{OT1} +\setfont\deftt\ttshape{10}{\magstep1}{OT1TT} +\setfont\defsl\slshape{10}{\magstep1}{OT1TT} +\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf +\let\tenttsl=\defttsl \let\tensl=\defsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter (and unnumbered) fonts (17.28pt). +\def\chapnominalsize{17pt} +\setfont\chaprm\rmbshape{12}{\magstep2}{OT1} +\setfont\chapit\itbshape{10}{\magstep3}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep3}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} +\setfont\chapsf\sfbshape{17}{1000}{OT1} +\let\chapbf=\chaprm +\setfont\chapsc\scbshape{10}{\magstep3}{OT1} +\font\chapi=cmmi12 scaled \magstep2 +\font\chapsy=cmsy10 scaled \magstep3 +\def\chapecsize{1728} + +% Section fonts (14.4pt). +\def\secnominalsize{14pt} +\setfont\secrm\rmbshape{12}{\magstep1}{OT1} +\setfont\secrmnotbold\rmshape{12}{\magstep1}{OT1} +\setfont\secit\itbshape{10}{\magstep2}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep2}{OT1} +\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\secsf\sfbshape{12}{\magstep1}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2}{OT1} +\font\seci=cmmi12 scaled \magstep1 +\font\secsy=cmsy10 scaled \magstep2 +\def\sececsize{1440} + +% Subsection fonts (13.15pt). +\def\ssecnominalsize{13pt} +\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} +\setfont\ssecit\itbshape{10}{1315}{OT1IT} +\setfont\ssecsl\slbshape{10}{1315}{OT1} +\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} +\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1315}{OT1} +\font\sseci=cmmi12 scaled \magstephalf +\font\ssecsy=cmsy10 scaled 1315 +\def\ssececsize{1200} + +% Reduced fonts for @acro in text (10pt). +\def\reducednominalsize{10pt} +\setfont\reducedrm\rmshape{10}{1000}{OT1} +\setfont\reducedtt\ttshape{10}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{1000}{OT1} +\setfont\reducedit\itshape{10}{1000}{OT1IT} +\setfont\reducedsl\slshape{10}{1000}{OT1} +\setfont\reducedsf\sfshape{10}{1000}{OT1} +\setfont\reducedsc\scshape{10}{1000}{OT1} +\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} +\font\reducedi=cmmi10 +\font\reducedsy=cmsy10 +\def\reducedecsize{1000} + +\textleading = 13.2pt % line spacing for 11pt CM +\textfonts % reset the current fonts +\rm +} % end of 11pt text font size definitions, \definetextfontsizexi + + +% Definitions to make the main text be 10pt Computer Modern, with +% section, chapter, etc., sizes following suit. This is for the GNU +% Press printing of the Emacs 22 manual. Maybe other manuals in the +% future. Used with @smallbook, which sets the leading to 12pt. +% +\def\definetextfontsizex{% +% Text fonts (10pt). +\def\textnominalsize{10pt} +\edef\mainmagstep{1000} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1000} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstephalf}{OT1} +\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} +\setfont\defsl\slshape{10}{\magstephalf}{OT1TT} +\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf +\let\tensl=\defsl \let\tenttsl=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter fonts (14.4pt). +\def\chapnominalsize{14pt} +\setfont\chaprm\rmbshape{12}{\magstep1}{OT1} +\setfont\chapit\itbshape{10}{\magstep2}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep2}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\chapsf\sfbshape{12}{\magstep1}{OT1} +\let\chapbf\chaprm +\setfont\chapsc\scbshape{10}{\magstep2}{OT1} +\font\chapi=cmmi12 scaled \magstep1 +\font\chapsy=cmsy10 scaled \magstep2 +\def\chapecsize{1440} + +% Section fonts (12pt). +\def\secnominalsize{12pt} +\setfont\secrm\rmbshape{12}{1000}{OT1} +\setfont\secit\itbshape{10}{\magstep1}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep1}{OT1} +\setfont\sectt\ttbshape{12}{1000}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} +\setfont\secsf\sfbshape{12}{1000}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep1}{OT1} +\font\seci=cmmi12 +\font\secsy=cmsy10 scaled \magstep1 +\def\sececsize{1200} + +% Subsection fonts (10pt). +\def\ssecnominalsize{10pt} +\setfont\ssecrm\rmbshape{10}{1000}{OT1} +\setfont\ssecit\itbshape{10}{1000}{OT1IT} +\setfont\ssecsl\slbshape{10}{1000}{OT1} +\setfont\ssectt\ttbshape{10}{1000}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} +\setfont\ssecsf\sfbshape{10}{1000}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1000}{OT1} +\font\sseci=cmmi10 +\font\ssecsy=cmsy10 +\def\ssececsize{1000} + +% Reduced fonts for @acro in text (9pt). +\def\reducednominalsize{9pt} +\setfont\reducedrm\rmshape{9}{1000}{OT1} +\setfont\reducedtt\ttshape{9}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{900}{OT1} +\setfont\reducedit\itshape{9}{1000}{OT1IT} +\setfont\reducedsl\slshape{9}{1000}{OT1} +\setfont\reducedsf\sfshape{9}{1000}{OT1} +\setfont\reducedsc\scshape{10}{900}{OT1} +\setfont\reducedttsl\ttslshape{10}{900}{OT1TT} +\font\reducedi=cmmi9 +\font\reducedsy=cmsy9 +\def\reducedecsize{0900} + +\divide\parskip by 2 % reduce space between paragraphs +\textleading = 12pt % line spacing for 10pt CM +\textfonts % reset the current fonts +\rm +} % end of 10pt text font size definitions, \definetextfontsizex + + +% We provide the user-level command +% @fonttextsize 10 +% (or 11) to redefine the text font size. pt is assumed. +% +\def\xiword{11} +\def\xword{10} +\def\xwordpt{10pt} +% +\parseargdef\fonttextsize{% + \def\textsizearg{#1}% + %\wlog{doing @fonttextsize \textsizearg}% + % + % Set \globaldefs so that documents can use this inside @tex, since + % makeinfo 4.8 does not support it, but we need it nonetheless. + % + \begingroup \globaldefs=1 + \ifx\textsizearg\xword \definetextfontsizex + \else \ifx\textsizearg\xiword \definetextfontsizexi + \else + \errhelp=\EMsimple + \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} + \fi\fi + \endgroup +} + +% In order for the font changes to affect most math symbols and letters, +% we have to define the \textfont of the standard families. We don't +% bother to reset \scriptfont and \scriptscriptfont; awaiting user need. +% +\def\resetmathfonts{% + \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy + \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf + \textfont\ttfam=\tentt \textfont\sffam=\tensf +} + +% The font-changing commands redefine the meanings of \tenSTYLE, instead +% of just \STYLE. We do this because \STYLE needs to also set the +% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire +% \tenSTYLE to set the current font. +% +% Each font-changing command also sets the names \lsize (one size lower) +% and \lllsize (three sizes lower). These relative commands are used +% in, e.g., the LaTeX logo and acronyms. +% +% This all needs generalizing, badly. +% +\def\textfonts{% + \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl + \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc + \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy + \let\tenttsl=\textttsl + \def\curfontsize{text}% + \def\lsize{reduced}\def\lllsize{smaller}% + \resetmathfonts \setleading{\textleading}} +\def\titlefonts{% + \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl + \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc + \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy + \let\tenttsl=\titlettsl + \def\curfontsize{title}% + \def\lsize{chap}\def\lllsize{subsec}% + \resetmathfonts \setleading{27pt}} +\def\titlefont#1{{\titlefonts\rmisbold #1}} +\def\chapfonts{% + \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl + \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc + \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy + \let\tenttsl=\chapttsl + \def\curfontsize{chap}% + \def\lsize{sec}\def\lllsize{text}% + \resetmathfonts \setleading{19pt}} +\def\secfonts{% + \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl + \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc + \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy + \let\tenttsl=\secttsl + \def\curfontsize{sec}% + \def\lsize{subsec}\def\lllsize{reduced}% + \resetmathfonts \setleading{17pt}} +\def\subsecfonts{% + \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl + \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc + \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy + \let\tenttsl=\ssecttsl + \def\curfontsize{ssec}% + \def\lsize{text}\def\lllsize{small}% + \resetmathfonts \setleading{15pt}} +\let\subsubsecfonts = \subsecfonts +\def\reducedfonts{% + \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl + \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc + \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy + \let\tenttsl=\reducedttsl + \def\curfontsize{reduced}% + \def\lsize{small}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} +\def\smallfonts{% + \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl + \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc + \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy + \let\tenttsl=\smallttsl + \def\curfontsize{small}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} +\def\smallerfonts{% + \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl + \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc + \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy + \let\tenttsl=\smallerttsl + \def\curfontsize{smaller}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{9.5pt}} + +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000}{OT1} +\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 +\setfont\shortcontsl\slshape{12}{1000}{OT1} +\setfont\shortconttt\ttshape{12}{1000}{OT1TT} + +% Define these just so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} + +% Set the fonts to use with the @small... environments. +\let\smallexamplefonts = \smallfonts + +% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample +% can fit this many characters: +% 8.5x11=86 smallbook=72 a4=90 a5=69 +% If we use \scriptfonts (8pt), then we can fit this many characters: +% 8.5x11=90+ smallbook=80 a4=90+ a5=77 +% For me, subjectively, the few extra characters that fit aren't worth +% the additional smallness of 8pt. So I'm making the default 9pt. +% +% By the way, for comparison, here's what fits with @example (10pt): +% 8.5x11=71 smallbook=60 a4=75 a5=58 +% --karl, 24jan03. + +% Set up the default fonts, so we can use them for creating boxes. +% +\definetextfontsizexi + + +\message{markup,} + +% Check if we are currently using a typewriter font. Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. +% +\def\ifmonospace{\ifdim\fontdimen3\font=0pt } + +% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will +% define and register \INITMACRO to be called on markup style changes. +% \INITMACRO can check \currentmarkupstyle for the innermost +% style and the set of \ifmarkupSTYLE switches for all styles +% currently in effect. +\newif\ifmarkupvar +\newif\ifmarkupsamp +\newif\ifmarkupkey +%\newif\ifmarkupfile % @file == @samp. +%\newif\ifmarkupoption % @option == @samp. +\newif\ifmarkupcode +\newif\ifmarkupkbd +%\newif\ifmarkupenv % @env == @code. +%\newif\ifmarkupcommand % @command == @code. +\newif\ifmarkuptex % @tex (and part of @math, for now). +\newif\ifmarkupexample +\newif\ifmarkupverb +\newif\ifmarkupverbatim + +\let\currentmarkupstyle\empty + +\def\setupmarkupstyle#1{% + \csname markup#1true\endcsname + \def\currentmarkupstyle{#1}% + \markupstylesetup +} + +\let\markupstylesetup\empty + +\def\defmarkupstylesetup#1{% + \expandafter\def\expandafter\markupstylesetup + \expandafter{\markupstylesetup #1}% + \def#1% +} + +% Markup style setup for left and right quotes. +\defmarkupstylesetup\markupsetuplq{% + \expandafter\let\expandafter \temp + \csname markupsetuplq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuplqdefault \else \temp \fi +} + +\defmarkupstylesetup\markupsetuprq{% + \expandafter\let\expandafter \temp + \csname markupsetuprq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuprqdefault \else \temp \fi +} + +{ +\catcode`\'=\active +\catcode`\`=\active + +\gdef\markupsetuplqdefault{\let`\lq} +\gdef\markupsetuprqdefault{\let'\rq} + +\gdef\markupsetcodequoteleft{\let`\codequoteleft} +\gdef\markupsetcodequoteright{\let'\codequoteright} +} + +\let\markupsetuplqcode \markupsetcodequoteleft +\let\markupsetuprqcode \markupsetcodequoteright +% +\let\markupsetuplqexample \markupsetcodequoteleft +\let\markupsetuprqexample \markupsetcodequoteright +% +\let\markupsetuplqkbd \markupsetcodequoteleft +\let\markupsetuprqkbd \markupsetcodequoteright +% +\let\markupsetuplqsamp \markupsetcodequoteleft +\let\markupsetuprqsamp \markupsetcodequoteright +% +\let\markupsetuplqverb \markupsetcodequoteleft +\let\markupsetuprqverb \markupsetcodequoteright +% +\let\markupsetuplqverbatim \markupsetcodequoteleft +\let\markupsetuprqverbatim \markupsetcodequoteright + +% Allow an option to not use regular directed right quote/apostrophe +% (char 0x27), but instead the undirected quote from cmtt (char 0x0d). +% The undirected quote is ugly, so don't make it the default, but it +% works for pasting with more pdf viewers (at least evince), the +% lilypond developers report. xpdf does work with the regular 0x27. +% +\def\codequoteright{% + \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax + \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax + '% + \else \char'15 \fi + \else \char'15 \fi +} +% +% and a similar option for the left quote char vs. a grave accent. +% Modern fonts display ASCII 0x60 as a grave accent, so some people like +% the code environments to do likewise. +% +\def\codequoteleft{% + \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax + \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax + % [Knuth] pp. 380,381,391 + % \relax disables Spanish ligatures ?` and !` of \tt font. + \relax`% + \else \char'22 \fi + \else \char'22 \fi +} + +% Commands to set the quote options. +% +\parseargdef\codequoteundirected{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% + \fi\fi +} +% +\parseargdef\codequotebacktick{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% + \fi\fi +} + +% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. +\def\noligaturesquoteleft{\relax\lq} + +% Count depth in font-changes, for error checks +\newcount\fontdepth \fontdepth=0 + +% Font commands. + +% #1 is the font command (\sl or \it), #2 is the text to slant. +% If we are in a monospaced environment, however, 1) always use \ttsl, +% and 2) do not add an italic correction. +\def\dosmartslant#1#2{% + \ifusingtt + {{\ttsl #2}\let\next=\relax}% + {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% + \next +} +\def\smartslanted{\dosmartslant\sl} +\def\smartitalic{\dosmartslant\it} + +% Output an italic correction unless \next (presumed to be the following +% character) is such as not to need one. +\def\smartitaliccorrection{% + \ifx\next,% + \else\ifx\next-% + \else\ifx\next.% + \else\ifx\next\.% + \else\ifx\next\comma% + \else\ptexslash + \fi\fi\fi\fi\fi + \aftersmartic +} + +% Unconditional use \ttsl, and no ic. @var is set to this for defuns. +\def\ttslanted#1{{\ttsl #1}} + +% @cite is like \smartslanted except unconditionally use \sl. We never want +% ttsl for book titles, do we? +\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} + +\def\aftersmartic{} +\def\var#1{% + \let\saveaftersmartic = \aftersmartic + \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% + \smartslanted{#1}% +} + +\let\i=\smartitalic +\let\slanted=\smartslanted +\let\dfn=\smartslanted +\let\emph=\smartitalic + +% Explicit font changes: @r, @sc, undocumented @ii. +\def\r#1{{\rm #1}} % roman font +\def\sc#1{{\smallcaps#1}} % smallcaps font +\def\ii#1{{\it #1}} % italic font + +% @b, explicit bold. Also @strong. +\def\b#1{{\bf #1}} +\let\strong=\b + +% @sansserif, explicit sans. +\def\sansserif#1{{\sf #1}} + +% We can't just use \exhyphenpenalty, because that only has effect at +% the end of a paragraph. Restore normal hyphenation at the end of the +% group within which \nohyphenation is presumably called. +% +\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} +\def\restorehyphenation{\hyphenchar\font = `- } + +% Set sfcode to normal for the chars that usually have another value. +% Can't use plain's \frenchspacing because it uses the `\x notation, and +% sometimes \x has an active definition that messes things up. +% +\catcode`@=11 + \def\plainfrenchspacing{% + \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m + \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m + \def\endofsentencespacefactor{1000}% for @. and friends + } + \def\plainnonfrenchspacing{% + \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 + \def\endofsentencespacefactor{3000}% for @. and friends + } +\catcode`@=\other +\def\endofsentencespacefactor{3000}% default + +% @t, explicit typewriter. +\def\t#1{% + {\tt \rawbackslash \plainfrenchspacing #1}% + \null +} + +% @samp. +\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} + +% @indicateurl is \samp, that is, with quotes. +\let\indicateurl=\samp + +% @code (and similar) prints in typewriter, but with spaces the same +% size as normal in the surrounding text, without hyphenation, etc. +% This is a subroutine for that. +\def\tclose#1{% + {% + % Change normal interword space to be same as for the current font. + \spaceskip = \fontdimen2\font + % + % Switch to typewriter. + \tt + % + % But `\ ' produces the large typewriter interword space. + \def\ {{\spaceskip = 0pt{} }}% + % + % Turn off hyphenation. + \nohyphenation + % + \rawbackslash + \plainfrenchspacing + #1% + }% + \null % reset spacefactor to 1000 +} + +% We *must* turn on hyphenation at `-' and `_' in @code. +% (But see \codedashfinish below.) +% Otherwise, it is too hard to avoid overfull hboxes +% in the Emacs manual, the Library manual, etc. +% +% Unfortunately, TeX uses one parameter (\hyphenchar) to control +% both hyphenation at - and hyphenation within words. +% We must therefore turn them both off (\tclose does that) +% and arrange explicitly to hyphenate at a dash. -- rms. +{ + \catcode`\-=\active \catcode`\_=\active + \catcode`\'=\active \catcode`\`=\active + \global\let'=\rq \global\let`=\lq % default definitions + % + \global\def\code{\begingroup + \setupmarkupstyle{code}% + % The following should really be moved into \setupmarkupstyle handlers. + \catcode\dashChar=\active \catcode\underChar=\active + \ifallowcodebreaks + \let-\codedash + \let_\codeunder + \else + \let-\normaldash + \let_\realunder + \fi + % Given -foo (with a single dash), we do not want to allow a break + % after the hyphen. + \global\let\codedashprev=\codedash + % + \codex + } + % + \gdef\codedash{\futurelet\next\codedashfinish} + \gdef\codedashfinish{% + \normaldash % always output the dash character itself. + % + % Now, output a discretionary to allow a line break, unless + % (a) the next character is a -, or + % (b) the preceding character is a -. + % E.g., given --posix, we do not want to allow a break after either -. + % Given --foo-bar, we do want to allow a break between the - and the b. + \ifx\next\codedash \else + \ifx\codedashprev\codedash + \else \discretionary{}{}{}\fi + \fi + % we need the space after the = for the case when \next itself is a + % space token; it would get swallowed otherwise. As in @code{- a}. + \global\let\codedashprev= \next + } +} +\def\normaldash{-} +% +\def\codex #1{\tclose{#1}\endgroup} + +\def\codeunder{% + % this is all so @math{@code{var_name}+1} can work. In math mode, _ + % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) + % will therefore expand the active definition of _, which is us + % (inside @code that is), therefore an endless loop. + \ifusingtt{\ifmmode + \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. + \else\normalunderscore \fi + \discretionary{}{}{}}% + {\_}% +} + +% An additional complication: the above will allow breaks after, e.g., +% each of the four underscores in __typeof__. This is bad. +% @allowcodebreaks provides a document-level way to turn breaking at - +% and _ on and off. +% +\newif\ifallowcodebreaks \allowcodebreakstrue + +\def\keywordtrue{true} +\def\keywordfalse{false} + +\parseargdef\allowcodebreaks{% + \def\txiarg{#1}% + \ifx\txiarg\keywordtrue + \allowcodebreakstrue + \else\ifx\txiarg\keywordfalse + \allowcodebreaksfalse + \else + \errhelp = \EMsimple + \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% + \fi\fi +} + +% For @command, @env, @file, @option quotes seem unnecessary, +% so use \code rather than \samp. +\let\command=\code +\let\env=\code +\let\file=\code +\let\option=\code + +% @uref (abbreviation for `urlref') aka @url takes an optional +% (comma-separated) second argument specifying the text to display and +% an optional third arg as text to display instead of (rather than in +% addition to) the url itself. First (mandatory) arg is the url. + +% TeX-only option to allow changing PDF output to show only the second +% arg (if given), and not the url (which is then just the link target). +\newif\ifurefurlonlylink + +% The main macro is \urefbreak, which allows breaking at expected +% places within the url. (There used to be another version, which +% didn't support automatic breaking.) +\def\urefbreak{\begingroup \urefcatcodes \dourefbreak} +\let\uref=\urefbreak +% +\def\dourefbreak#1{\urefbreakfinish #1,,,\finish} +\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% look for second arg + \ifdim\wd0 > 0pt + \ifpdf + \ifurefurlonlylink + % PDF plus option to not display url, show just arg + \unhbox0 + \else + % PDF, normally display both arg and url for consistency, + % visibility, if the pdf is eventually used to print, etc. + \unhbox0\ (\urefcode{#1})% + \fi + \else + \unhbox0\ (\urefcode{#1})% DVI, always show arg and url + \fi + \else + \urefcode{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% Allow line breaks around only a few characters (only). +\def\urefcatcodes{% + \catcode\ampChar=\active \catcode\dotChar=\active + \catcode\hashChar=\active \catcode\questChar=\active + \catcode\slashChar=\active +} +{ + \urefcatcodes + % + \global\def\urefcode{\begingroup + \setupmarkupstyle{code}% + \urefcatcodes + \let&\urefcodeamp + \let.\urefcodedot + \let#\urefcodehash + \let?\urefcodequest + \let/\urefcodeslash + \codex + } + % + % By default, they are just regular characters. + \global\def&{\normalamp} + \global\def.{\normaldot} + \global\def#{\normalhash} + \global\def?{\normalquest} + \global\def/{\normalslash} +} + +% we put a little stretch before and after the breakable chars, to help +% line breaking of long url's. The unequal skips make look better in +% cmtt at least, especially for dots. +\def\urefprestretchamount{.13em} +\def\urefpoststretchamount{.1em} +\def\urefprestretch{\urefprebreak \hskip0pt plus\urefprestretchamount\relax} +\def\urefpoststretch{\urefpostbreak \hskip0pt plus\urefprestretchamount\relax} +% +\def\urefcodeamp{\urefprestretch \&\urefpoststretch} +\def\urefcodedot{\urefprestretch .\urefpoststretch} +\def\urefcodehash{\urefprestretch \#\urefpoststretch} +\def\urefcodequest{\urefprestretch ?\urefpoststretch} +\def\urefcodeslash{\futurelet\next\urefcodeslashfinish} +{ + \catcode`\/=\active + \global\def\urefcodeslashfinish{% + \urefprestretch \slashChar + % Allow line break only after the final / in a sequence of + % slashes, to avoid line break between the slashes in http://. + \ifx\next/\else \urefpoststretch \fi + } +} + +% One more complication: by default we'll break after the special +% characters, but some people like to break before the special chars, so +% allow that. Also allow no breaking at all, for manual control. +% +\parseargdef\urefbreakstyle{% + \def\txiarg{#1}% + \ifx\txiarg\wordnone + \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordbefore + \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordafter + \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} + \else + \errhelp = \EMsimple + \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\wordafter{after} +\def\wordbefore{before} +\def\wordnone{none} + +\urefbreakstyle after + +% @url synonym for @uref, since that's how everyone uses it. +% +\let\url=\uref + +% rms does not like angle brackets --karl, 17may97. +% So now @email is just like @uref, unless we are pdf. +% +%\def\email#1{\angleleft{\tt #1}\angleright} +\ifpdf + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} +\else + \let\email=\uref +\fi + +% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), +% `example' (@kbd uses ttsl only inside of @example and friends), +% or `code' (@kbd uses normal tty font always). +\parseargdef\kbdinputstyle{% + \def\txiarg{#1}% + \ifx\txiarg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\txiarg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\txiarg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \else + \errhelp = \EMsimple + \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is `distinct'. +\kbdinputstyle distinct + +% @kbd is like @code, except that if the argument is just one @key command, +% then @kbd has no effect. +\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} + +\def\xkey{\key} +\def\kbdsub#1#2#3\par{% + \def\one{#1}\def\three{#3}\def\threex{??}% + \ifx\one\xkey\ifx\threex\three \key{#2}% + \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi + \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi +} + +% definition of @key that produces a lozenge. Doesn't adjust to text size. +%\setfont\keyrm\rmshape{8}{1000}{OT1} +%\font\keysy=cmsy9 +%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% +% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% +% \vbox{\hrule\kern-0.4pt +% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% +% \kern-0.4pt\hrule}% +% \kern-.06em\raise0.4pt\hbox{\angleright}}}} + +% definition of @key with no lozenge. If the current font is already +% monospace, don't change it; that way, we respect @kbdinputstyle. But +% if it isn't monospace, then use \tt. +% +\def\key#1{{\setupmarkupstyle{key}% + \nohyphenation + \ifmonospace\else\tt\fi + #1}\null} + +% @clicksequence{File @click{} Open ...} +\def\clicksequence#1{\begingroup #1\endgroup} + +% @clickstyle @arrow (by default) +\parseargdef\clickstyle{\def\click{#1}} +\def\click{\arrow} + +% Typeset a dimension, e.g., `in' or `pt'. The only reason for the +% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. +% +\def\dmn#1{\thinspace #1} + +% @acronym for "FBI", "NATO", and the like. +% We print this one point size smaller, since it's intended for +% all-uppercase. +% +\def\acronym#1{\doacronym #1,,\finish} +\def\doacronym#1,#2,#3\finish{% + {\selectfonts\lsize #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. +% +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\plainfrenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ active, and distinguish by seeing if the current family is \slfam, +% which is what @var uses. +{ + \catcode`\_ = \active + \gdef\mathunderscore{% + \catcode`\_=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } +} +% Another complication: we want \\ (and @\) to output a math (or tt) \. +% FYI, plain.tex uses \\ as a temporary control sequence (for no +% particular reason), but this is not advertised and we don't care. +% +% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. +\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} +% +\def\math{% + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot + % have to provide another name for sup operator + \let\mathopsup=\sup + $\finishmath +} +\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + +% Some active characters (such as <) are spaced differently in math. +% We have to reset their definitions in case the @math was an argument +% to a command which sets the catcodes (such as @item or @section). +% +{ + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \catcode`' = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + \let' = \ptexquoteright + } +} + +% for @sub and @sup, if in math mode, just do a normal sub/superscript. +% If in text, use math to place as sub/superscript, but switch +% into text mode, with smaller fonts. This is a different font than the +% one used for real math sub/superscripts (8pt vs. 7pt), but let's not +% fix it (significant additions to font machinery) until someone notices. +% +\def\sub{\ifmmode \expandafter\sb \else \expandafter\finishsub\fi} +\def\finishsub#1{$\sb{\hbox{\selectfonts\lllsize #1}}$}% +% +\def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} +\def\finishsup#1{$\ptexsp{\hbox{\selectfonts\lllsize #1}}$}% + +% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. +% Ignore unless FMTNAME == tex; then it is like @iftex and @tex, +% except specified as a normal braced arg, so no newlines to worry about. +% +\def\outfmtnametex{tex} +% +\long\def\inlinefmt#1{\doinlinefmt #1,\finish} +\long\def\doinlinefmt#1,#2,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi +} +% +% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if +% FMTNAME is tex, else ELSE-TEXT. +\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish} +\long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\fi +} +% +% For raw, must switch into @tex before parsing the argument, to avoid +% setting catcodes prematurely. Doing it this way means that, for +% example, @inlineraw{html, foo{bar} gets a parse error instead of being +% ignored. But this isn't important because if people want a literal +% *right* brace they would have to use a command anyway, so they may as +% well use a command to get a left brace too. We could re-use the +% delimiter character idea from \verb, but it seems like overkill. +% +\long\def\inlineraw{\tex \doinlineraw} +\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} +\def\doinlinerawtwo#1,#2,\finish{% + \def\inlinerawname{#1}% + \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi + \endgroup % close group opened by \tex. +} + +% @inlineifset{VAR, TEXT} expands TEXT if VAR is @set. +% +\long\def\inlineifset#1{\doinlineifset #1,\finish} +\long\def\doinlineifset#1,#2,\finish{% + \def\inlinevarname{#1}% + \expandafter\ifx\csname SET\inlinevarname\endcsname\relax + \else\ignorespaces#2\fi +} + +% @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set. +% +\long\def\inlineifclear#1{\doinlineifclear #1,\finish} +\long\def\doinlineifclear#1,#2,\finish{% + \def\inlinevarname{#1}% + \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi +} + + +\message{glyphs,} +% and logos. + +% @@ prints an @, as does @atchar{}. +\def\@{\char64 } +\let\atchar=\@ + +% @{ @} @lbracechar{} @rbracechar{} all generate brace characters. +% Unless we're in typewriter, use \ecfont because the CM text fonts do +% not have braces, and we don't want to switch into math. +\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} +\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} +\let\{=\mylbrace \let\lbracechar=\{ +\let\}=\myrbrace \let\rbracechar=\} +\begingroup + % Definitions to produce \{ and \} commands for indices, + % and @{ and @} for the aux/toc files. + \catcode`\{ = \other \catcode`\} = \other + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\! = 0 \catcode`\\ = \other + !gdef!lbracecmd[\{]% + !gdef!rbracecmd[\}]% + !gdef!lbraceatcmd[@{]% + !gdef!rbraceatcmd[@}]% +!endgroup + +% @comma{} to avoid , parsing problems. +\let\comma = , + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. +\let\, = \ptexc +\let\dotaccent = \ptexdot +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \ptext +\let\ubaraccent = \ptexb +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown @ordf @ordm +% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} +\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} +\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi + \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% The \TeX{} logo, as in plain, but resetting the spacing so that a +% period following counts as ending a sentence. (Idea found in latex.) +% +\edef\TeX{\TeX \spacefactor=1000 } + +% @LaTeX{} logo. Not quite the same results as the definition in +% latex.ltx, since we use a different font for the raised A; it's most +% convenient for us to use an explicitly smaller font, rather than using +% the \scriptstyle font (since we don't reset \scriptstyle and +% \scriptscriptstyle). +% +\def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{% + \ifx\textnominalsize\xwordpt + % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. + % Revert to plain's \scriptsize, which is 7pt. + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + % For 11pt, we can use our lllsize. + \selectfonts\lllsize A% + \fi + }% + \vss + }}% + \kern-.15em + \TeX +} + +% Some math mode symbols. Define \ensuremath to switch into math mode +% unless we are already there. Expansion tricks may not be needed here, +% but safer, and can't hurt. +\def\ensuremath{\ifmmode \expandafter\asis \else\expandafter\ensuredmath \fi} +\def\ensuredmath#1{$\relax#1$} +% +\def\bullet{\ensuremath\ptexbullet} +\def\geq{\ensuremath\ge} +\def\leq{\ensuremath\le} +\def\minus{\ensuremath-} + +% @dots{} outputs an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in the cm +% typewriter fonts as three actual period characters; on the other hand, +% in other typewriter fonts three periods are wider than 1.5em. So do +% whichever is larger. +% +\def\dots{% + \leavevmode + \setbox0=\hbox{...}% get width of three periods + \ifdim\wd0 > 1.5em + \dimen0 = \wd0 + \else + \dimen0 = 1.5em + \fi + \hbox to \dimen0{% + \hskip 0pt plus.25fil + .\hskip 0pt plus1fil + .\hskip 0pt plus1fil + .\hskip 0pt plus.5fil + }% +} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \dots + \spacefactor=\endofsentencespacefactor +} + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +% +% Since these characters are used in examples, they should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% +\def\point{$\star$} +\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} +\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% The @error{} command. +% Adapted from the TeXbook's \boxit. +% +\newbox\errorbox +% +{\tentt \global\dimen0 = 3em}% Width of the box. +\dimen2 = .55pt % Thickness of rules +% The text. (`r' is open on the right, `e' somewhat less so on the left.) +\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} +% +\setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{% + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} +% +\def\error{\leavevmode\lower.7ex\copy\errorbox} + +% @pounds{} is a sterling sign, which Knuth put in the CM italic font. +% +\def\pounds{{\it\$}} + +% @euro{} comes from a separate font, depending on the current style. +% We use the free feym* fonts from the eurosym package by Henrik +% Theiling, which support regular, slanted, bold and bold slanted (and +% "outlined" (blackboard board, sort of) versions, which we don't need). +% It is available from http://www.ctan.org/tex-archive/fonts/eurosym. +% +% Although only regular is the truly official Euro symbol, we ignore +% that. The Euro is designed to be slightly taller than the regular +% font height. +% +% feymr - regular +% feymo - slanted +% feybr - bold +% feybo - bold slanted +% +% There is no good (free) typewriter version, to my knowledge. +% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. +% Hmm. +% +% Also doesn't work in math. Do we need to do math with euro symbols? +% Hope not. +% +% +\def\euro{{\eurofont e}} +\def\eurofont{% + % We set the font at each command, rather than predefining it in + % \textfonts and the other font-switching commands, so that + % installations which never need the symbol don't have to have the + % font installed. + % + % There is only one designed size (nominal 10pt), so we always scale + % that to the current nominal size. + % + % By the way, simply using "at 1em" works for cmr10 and the like, but + % does not work for cmbx10 and other extended/shrunken fonts. + % + \def\eurosize{\csname\curfontsize nominalsize\endcsname}% + % + \ifx\curfontstyle\bfstylename + % bold: + \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize + \else + % regular: + \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize + \fi + \thiseurofont +} + +% Glyphs from the EC fonts. We don't use \let for the aliases, because +% sometimes we redefine the original macro, and the alias should reflect +% the redefinition. +% +% Use LaTeX names for the Icelandic letters. +\def\DH{{\ecfont \char"D0}} % Eth +\def\dh{{\ecfont \char"F0}} % eth +\def\TH{{\ecfont \char"DE}} % Thorn +\def\th{{\ecfont \char"FE}} % thorn +% +\def\guillemetleft{{\ecfont \char"13}} +\def\guillemotleft{\guillemetleft} +\def\guillemetright{{\ecfont \char"14}} +\def\guillemotright{\guillemetright} +\def\guilsinglleft{{\ecfont \char"0E}} +\def\guilsinglright{{\ecfont \char"0F}} +\def\quotedblbase{{\ecfont \char"12}} +\def\quotesinglbase{{\ecfont \char"0D}} +% +% This positioning is not perfect (see the ogonek LaTeX package), but +% we have the precomposed glyphs for the most common cases. We put the +% tests to use those glyphs in the single \ogonek macro so we have fewer +% dummy definitions to worry about for index entries, etc. +% +% ogonek is also used with other letters in Lithuanian (IOU), but using +% the precomposed glyphs for those is not so easy since they aren't in +% the same EC font. +\def\ogonek#1{{% + \def\temp{#1}% + \ifx\temp\macrocharA\Aogonek + \else\ifx\temp\macrochara\aogonek + \else\ifx\temp\macrocharE\Eogonek + \else\ifx\temp\macrochare\eogonek + \else + \ecfont \setbox0=\hbox{#1}% + \ifdim\ht0=1ex\accent"0C #1% + \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% + \fi + \fi\fi\fi\fi + }% +} +\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} +\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} +\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} +\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} +% +% Use the European Computer Modern fonts (cm-super in outline format) +% for non-CM glyphs. That is ec* for regular text and tc* for the text +% companion symbols (LaTeX TS1 encoding). Both are part of the ec +% package and follow the same conventions. +% +\def\ecfont{\etcfont{e}} +\def\tcfont{\etcfont{t}} +% +\def\etcfont#1{% + % We can't distinguish serif/sans and italic/slanted, but this + % is used for crude hacks anyway (like adding French and German + % quotes to documents typeset with CM, where we lose kerning), so + % hopefully nobody will notice/care. + \edef\ecsize{\csname\curfontsize ecsize\endcsname}% + \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% + \ifmonospace + % typewriter: + \font\thisecfont = #1ctt\ecsize \space at \nominalsize + \else + \ifx\curfontstyle\bfstylename + % bold: + \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize + \else + % regular: + \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize + \fi + \fi + \thisecfont +} + +% @registeredsymbol - R in a circle. The font for the R should really +% be smaller yet, but lllsize is the best we can do for now. +% Adapted from the plain.tex definition of \copyright. +% +\def\registeredsymbol{% + $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% + \hfil\crcr\Orb}}% + }$% +} + +% @textdegree - the normal degrees sign. +% +\def\textdegree{$^\circ$} + +% Laurent Siebenmann reports \Orb undefined with: +% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 +% so we'll define it if necessary. +% +\ifx\Orb\thisisundefined +\def\Orb{\mathhexbox20D} +\fi + +% Quotes. +\chardef\quotedblleft="5C +\chardef\quotedblright=`\" +\chardef\quoteleft=`\` +\chardef\quoteright=`\' + + +\message{page headings,} + +\newskip\titlepagetopglue \titlepagetopglue = 1.5in +\newskip\titlepagebottomglue \titlepagebottomglue = 2pc + +% First the title page. Must do @settitle before @titlepage. +\newif\ifseenauthor +\newif\iffinishedtitlepage + +% Do an implicit @contents or @shortcontents after @end titlepage if the +% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. +% +\newif\ifsetcontentsaftertitlepage + \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue +\newif\ifsetshortcontentsaftertitlepage + \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue + +\parseargdef\shorttitlepage{% + \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} + +\envdef\titlepage{% + % Open one extra group, as we want to close it in the middle of \Etitlepage. + \begingroup + \parindent=0pt \textfonts + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Most title ``pages'' are actually two pages long, with space + % at the top of the second. We don't want the ragged left on the second. + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + \let\page = \oldpage + \page + \null + }% +} + +\def\Etitlepage{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + % It is important to do the page break before ending the group, + % because the headline and footline are only empty inside the group. + % If we use the new definition of \page, we always get a blank page + % after the title page, which we certainly don't want. + \oldpage + \endgroup + % + % Need this before the \...aftertitlepage checks so that if they are + % in effect the toc pages will come out with page numbers. + \HEADINGSon + % + % If they want short, they certainly want long too. + \ifsetshortcontentsaftertitlepage + \shortcontents + \contents + \global\let\shortcontents = \relax + \global\let\contents = \relax + \fi + % + \ifsetcontentsaftertitlepage + \contents + \global\let\contents = \relax + \global\let\shortcontents = \relax + \fi +} + +\def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue +} + +% Settings used for typesetting titles: no hyphenation, no indentation, +% don't worry much about spacing, ragged right. This should be used +% inside a \vbox, and fonts need to be set appropriately first. Because +% it is always used for titles, nothing else, we call \rmisbold. \par +% should be specified before the end of the \vbox, since a vbox is a group. +% +\def\raggedtitlesettings{% + \rmisbold + \hyphenpenalty=10000 + \parindent=0pt + \tolerance=5000 + \ptexraggedright +} + +% Macros to be used within @titlepage: + +\let\subtitlerm=\tenrm +\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} + +\parseargdef\title{% + \checkenv\titlepage + \vbox{\titlefonts \raggedtitlesettings #1\par}% + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt +} + +\parseargdef\subtitle{% + \checkenv\titlepage + {\subtitlefont \rightline{#1}}% +} + +% @author should come last, but may come many times. +% It can also be used inside @quotation. +% +\parseargdef\author{% + \def\temp{\quotation}% + \ifx\thisenv\temp + \def\quotationauthor{#1}% printed in \Equotation. + \else + \checkenv\titlepage + \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi + {\secfonts\rmisbold \leftline{#1}}% + \fi +} + + +% Set up page headings and footings. + +\let\thispage=\folio + +\newtoks\evenheadline % headline on even pages +\newtoks\oddheadline % headline on odd pages +\newtoks\evenfootline % footline on even pages +\newtoks\oddfootline % footline on odd pages + +% Now make \makeheadline and \makefootline in Plain TeX use those variables +\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline + \else \the\evenheadline \fi}} +\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline + \else \the\evenfootline \fi}\HEADINGShook} +\let\HEADINGShook=\relax + +% Commands to set those variables. +% For example, this is what @headings on does +% @evenheading @thistitle|@thispage|@thischapter +% @oddheading @thischapter|@thispage|@thistitle +% @evenfooting @thisfile|| +% @oddfooting ||@thisfile + + +\def\evenheading{\parsearg\evenheadingxxx} +\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} +\def\evenheadingyyy #1\|#2\|#3\|#4\finish{% +\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddheading{\parsearg\oddheadingxxx} +\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} +\def\oddheadingyyy #1\|#2\|#3\|#4\finish{% +\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +\def\evenfooting{\parsearg\evenfootingxxx} +\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} +\def\evenfootingyyy #1\|#2\|#3\|#4\finish{% +\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddfooting{\parsearg\oddfootingxxx} +\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} +\def\oddfootingyyy #1\|#2\|#3\|#4\finish{% + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\pageheight by -12pt + \global\advance\vsize by -12pt +} + +\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} + +% @evenheadingmarks top \thischapter <- chapter at the top of a page +% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page +% +% The same set of arguments for: +% +% @oddheadingmarks +% @evenfootingmarks +% @oddfootingmarks +% @everyheadingmarks +% @everyfootingmarks + +% These define \getoddheadingmarks, \getevenheadingmarks, +% \getoddfootingmarks, and \getevenfootingmarks, each to one of +% \gettopheadingmarks, \getbottomheadingmarks. +% +\def\evenheadingmarks{\headingmarks{even}{heading}} +\def\oddheadingmarks{\headingmarks{odd}{heading}} +\def\evenfootingmarks{\headingmarks{even}{footing}} +\def\oddfootingmarks{\headingmarks{odd}{footing}} +\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} + \headingmarks{odd}{heading}{#1} } +\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} + \headingmarks{odd}{footing}{#1} } +% #1 = even/odd, #2 = heading/footing, #3 = top/bottom. +\def\headingmarks#1#2#3 {% + \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname + \global\expandafter\let\csname get#1#2marks\endcsname \temp +} + +\everyheadingmarks bottom +\everyfootingmarks bottom + +% @headings double turns headings on for double-sided printing. +% @headings single turns headings on for single-sided printing. +% @headings off turns them off. +% @headings on same as @headings double, retained for compatibility. +% @headings after turns on double-sided headings after this page. +% @headings doubleafter turns on double-sided headings after this page. +% @headings singleafter turns on single-sided headings after this page. +% By default, they are off at the start of a document, +% and turned `on' after @end titlepage. + +\def\headings #1 {\csname HEADINGS#1\endcsname} + +\def\headingsoff{% non-global headings elimination + \evenheadline={\hfil}\evenfootline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}% +} + +\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting +\HEADINGSoff % it's the default + +% When we turn headings on, set the page number to 1. +% For double-sided printing, put current file name in lower left corner, +% chapter name on inside top of right hand pages, document +% title on inside top of left hand pages, and page numbers on outside top +% edge of all pages. +\def\HEADINGSdouble{% +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} +\let\contentsalignmacro = \chappager + +% For single-sided printing, chapter title goes across top left of page, +% page number on top right. +\def\HEADINGSsingle{% +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapterheading\hfil\folio}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} +\def\HEADINGSon{\HEADINGSdouble} + +\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} +\let\HEADINGSdoubleafter=\HEADINGSafter +\def\HEADINGSdoublex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} + +\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} +\def\HEADINGSsinglex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapterheading\hfil\folio}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} + +% Subroutines used in generating headings +% This produces Day Month Year style of output. +% Only define if not already defined, in case a txi-??.tex file has set +% up a different format (e.g., txi-cs.tex does this). +\ifx\today\thisisundefined +\def\today{% + \number\day\space + \ifcase\month + \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr + \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug + \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec + \fi + \space\number\year} +\fi + +% @settitle line... specifies the title of the document, for headings. +% It generates no output of its own. +\def\thistitle{\putwordNoTitle} +\def\settitle{\parsearg{\gdef\thistitle}} + + +\message{tables,} +% Tables -- @table, @ftable, @vtable, @item(x). + +% default indentation of table text +\newdimen\tableindent \tableindent=.8in +% default indentation of @itemize and @enumerate text +\newdimen\itemindent \itemindent=.3in +% margin between end of table item and start of table text. +\newdimen\itemmargin \itemmargin=.1in + +% used internally for \itemindent minus \itemmargin +\newdimen\itemmax + +% Note @table, @ftable, and @vtable define @item, @itemx, etc., with +% these defs. +% They also define \itemindex +% to index the item name in whatever manner is desired (perhaps none). + +\newif\ifitemxneedsnegativevskip + +\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + +\def\internalBitem{\smallbreak \parsearg\itemzzz} +\def\internalBitemx{\itemxpar \parsearg\itemzzz} + +\def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemindicate{#1}}% + \itemindex{#1}% + \nobreak % This prevents a break before @itemx. + % + % If the item text does not fit in the space we have, put it on a line + % by itself, and do not allow a page break either before or after that + % line. We do not start a paragraph here because then if the next + % command is, e.g., @kindex, the whatsit would get put into the + % horizontal list on a line by itself, resulting in extra blank space. + \ifdim \wd0>\itemmax + % + % Make this a paragraph so we get the \parskip glue and wrapping, + % but leave it ragged-right. + \begingroup + \advance\leftskip by-\tableindent + \advance\hsize by\tableindent + \advance\rightskip by0pt plus1fil\relax + \leavevmode\unhbox0\par + \endgroup + % + % We're going to be starting a paragraph, but we don't want the + % \parskip glue -- logically it's part of the @item we just started. + \nobreak \vskip-\parskip + % + % Stop a page break at the \parskip glue coming up. However, if + % what follows is an environment such as @example, there will be no + % \parskip glue; then the negative vskip we just inserted would + % cause the example and the item to crash together. So we use this + % bizarre value of 10001 as a signal to \aboveenvbreak to insert + % \parskip glue after all. Section titles are handled this way also. + % + \penalty 10001 + \endgroup + \itemxneedsnegativevskipfalse + \else + % The item text fits into the space. Start a paragraph, so that the + % following text (if any) will end up on the same line. + \noindent + % Do this with kerns and \unhbox so that if there is a footnote in + % the item text, it can migrate to the main vertical list and + % eventually be printed. + \nobreak\kern-\tableindent + \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 + \unhbox0 + \nobreak\kern\dimen0 + \endgroup + \itemxneedsnegativevskiptrue + \fi +} + +\def\item{\errmessage{@item while not in a list environment}} +\def\itemx{\errmessage{@itemx while not in a list environment}} + +% @table, @ftable, @vtable. +\envdef\table{% + \let\itemindex\gobble + \tablecheck{table}% +} +\envdef\ftable{% + \def\itemindex ##1{\doind {fn}{\code{##1}}}% + \tablecheck{ftable}% +} +\envdef\vtable{% + \def\itemindex ##1{\doind {vr}{\code{##1}}}% + \tablecheck{vtable}% +} +\def\tablecheck#1{% + \ifnum \the\catcode`\^^M=\active + \endgroup + \errmessage{This command won't work in this context; perhaps the problem is + that we are \inenvironment\thisenv}% + \def\next{\doignore{#1}}% + \else + \let\next\tablex + \fi + \next +} +\def\tablex#1{% + \def\itemindicate{#1}% + \parsearg\tabley +} +\def\tabley#1{% + {% + \makevalueexpandable + \edef\temp{\noexpand\tablez #1\space\space\space}% + \expandafter + }\temp \endtablez +} +\def\tablez #1 #2 #3 #4\endtablez{% + \aboveenvbreak + \ifnum 0#1>0 \advance \leftskip by #1\mil \fi + \ifnum 0#2>0 \tableindent=#2\mil \fi + \ifnum 0#3>0 \advance \rightskip by #3\mil \fi + \itemmax=\tableindent + \advance \itemmax by -\itemmargin + \advance \leftskip by \tableindent + \exdentamount=\tableindent + \parindent = 0pt + \parskip = \smallskipamount + \ifdim \parskip=0pt \parskip=2pt \fi + \let\item = \internalBitem + \let\itemx = \internalBitemx +} +\def\Etable{\endgraf\afterenvbreak} +\let\Eftable\Etable +\let\Evtable\Etable +\let\Eitemize\Etable +\let\Eenumerate\Etable + +% This is the counter used by @enumerate, which is really @itemize + +\newcount \itemno + +\envdef\itemize{\parsearg\doitemize} + +\def\doitemize#1{% + \aboveenvbreak + \itemmax=\itemindent + \advance\itemmax by -\itemmargin + \advance\leftskip by \itemindent + \exdentamount=\itemindent + \parindent=0pt + \parskip=\smallskipamount + \ifdim\parskip=0pt \parskip=2pt \fi + % + % Try typesetting the item mark so that if the document erroneously says + % something like @itemize @samp (intending @table), there's an error + % right away at the @itemize. It's not the best error message in the + % world, but it's better than leaving it to the @item. This means if + % the user wants an empty mark, they have to say @w{} not just @w. + \def\itemcontents{#1}% + \setbox0 = \hbox{\itemcontents}% + % + % @itemize with no arg is equivalent to @itemize @bullet. + \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + % + \let\item=\itemizeitem +} + +% Definition of @item while inside @itemize and @enumerate. +% +\def\itemizeitem{% + \advance\itemno by 1 % for enumerations + {\let\par=\endgraf \smallbreak}% reasonable place to break + {% + % If the document has an @itemize directly after a section title, a + % \nobreak will be last on the list, and \sectionheading will have + % done a \vskip-\parskip. In that case, we don't want to zero + % parskip, or the item text will crash with the heading. On the + % other hand, when there is normal text preceding the item (as there + % usually is), we do want to zero parskip, or there would be too much + % space. In that case, we won't have a \nobreak before. At least + % that's the theory. + \ifnum\lastpenalty<10000 \parskip=0in \fi + \noindent + \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + % + \ifinner\else + \vadjust{\penalty 1200}% not good to break after first line of item. + \fi + % We can be in inner vertical mode in a footnote, although an + % @itemize looks awful there. + }% + \flushcr +} + +% \splitoff TOKENS\endmark defines \first to be the first token in +% TOKENS, and \rest to be the remainder. +% +\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% + +% Allow an optional argument of an uppercase letter, lowercase letter, +% or number, to specify the first label in the enumerated list. No +% argument is the same as `1'. +% +\envparseargdef\enumerate{\enumeratey #1 \endenumeratey} +\def\enumeratey #1 #2\endenumeratey{% + % If we were given no argument, pretend we were given `1'. + \def\thearg{#1}% + \ifx\thearg\empty \def\thearg{1}\fi + % + % Detect if the argument is a single token. If so, it might be a + % letter. Otherwise, the only valid thing it can be is a number. + % (We will always have one token, because of the test we just made. + % This is a good thing, since \splitoff doesn't work given nothing at + % all -- the first parameter is undelimited.) + \expandafter\splitoff\thearg\endmark + \ifx\rest\empty + % Only one token in the argument. It could still be anything. + % A ``lowercase letter'' is one whose \lccode is nonzero. + % An ``uppercase letter'' is one whose \lccode is both nonzero, and + % not equal to itself. + % Otherwise, we assume it's a number. + % + % We need the \relax at the end of the \ifnum lines to stop TeX from + % continuing to look for a . + % + \ifnum\lccode\expandafter`\thearg=0\relax + \numericenumerate % a number (we hope) + \else + % It's a letter. + \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax + \lowercaseenumerate % lowercase letter + \else + \uppercaseenumerate % uppercase letter + \fi + \fi + \else + % Multiple tokens in the argument. We hope it's a number. + \numericenumerate + \fi +} + +% An @enumerate whose labels are integers. The starting integer is +% given in \thearg. +% +\def\numericenumerate{% + \itemno = \thearg + \startenumeration{\the\itemno}% +} + +% The starting (lowercase) letter is in \thearg. +\def\lowercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more lowercase letters in @enumerate; get a bigger + alphabet}% + \fi + \char\lccode\itemno + }% +} + +% The starting (uppercase) letter is in \thearg. +\def\uppercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more uppercase letters in @enumerate; get a bigger + alphabet} + \fi + \char\uccode\itemno + }% +} + +% Call \doitemize, adding a period to the first argument and supplying the +% common last two arguments. Also subtract one from the initial value in +% \itemno, since @item increments \itemno. +% +\def\startenumeration#1{% + \advance\itemno by -1 + \doitemize{#1.}\flushcr +} + +% @alphaenumerate and @capsenumerate are abbreviations for giving an arg +% to @enumerate. +% +\def\alphaenumerate{\enumerate{a}} +\def\capsenumerate{\enumerate{A}} +\def\Ealphaenumerate{\Eenumerate} +\def\Ecapsenumerate{\Eenumerate} + + +% @multitable macros +% Amy Hendrickson, 8/18/94, 3/6/96 +% +% @multitable ... @end multitable will make as many columns as desired. +% Contents of each column will wrap at width given in preamble. Width +% can be specified either with sample text given in a template line, +% or in percent of \hsize, the current width of text on page. + +% Table can continue over pages but will only break between lines. + +% To make preamble: +% +% Either define widths of columns in terms of percent of \hsize: +% @multitable @columnfractions .25 .3 .45 +% @item ... +% +% Numbers following @columnfractions are the percent of the total +% current hsize to be used for each column. You may use as many +% columns as desired. + + +% Or use a template: +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item ... +% using the widest term desired in each column. + +% Each new table line starts with @item, each subsequent new column +% starts with @tab. Empty columns may be produced by supplying @tab's +% with nothing between them for as many times as empty columns are needed, +% ie, @tab@tab@tab will produce two empty columns. + +% @item, @tab do not need to be on their own lines, but it will not hurt +% if they are. + +% Sample multitable: + +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item first col stuff @tab second col stuff @tab third col +% @item +% first col stuff +% @tab +% second col stuff +% @tab +% third col +% @item first col stuff @tab second col stuff +% @tab Many paragraphs of text may be used in any column. +% +% They will wrap at the width determined by the template. +% @item@tab@tab This will be in third column. +% @end multitable + +% Default dimensions may be reset by user. +% @multitableparskip is vertical space between paragraphs in table. +% @multitableparindent is paragraph indent in table. +% @multitablecolmargin is horizontal space to be left between columns. +% @multitablelinespace is space to leave between table items, baseline +% to baseline. +% 0pt means it depends on current normal line spacing. +% +\newskip\multitableparskip +\newskip\multitableparindent +\newdimen\multitablecolspace +\newskip\multitablelinespace +\multitableparskip=0pt +\multitableparindent=6pt +\multitablecolspace=12pt +\multitablelinespace=0pt + +% Macros used to set up halign preamble: +% +\let\endsetuptable\relax +\def\xendsetuptable{\endsetuptable} +\let\columnfractions\relax +\def\xcolumnfractions{\columnfractions} +\newif\ifsetpercent + +% #1 is the @columnfraction, usually a decimal number like .5, but might +% be just 1. We just use it, whatever it is. +% +\def\pickupwholefraction#1 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% + \setuptable +} + +\newcount\colcount +\def\setuptable#1{% + \def\firstarg{#1}% + \ifx\firstarg\xendsetuptable + \let\go = \relax + \else + \ifx\firstarg\xcolumnfractions + \global\setpercenttrue + \else + \ifsetpercent + \let\go\pickupwholefraction + \else + \global\advance\colcount by 1 + \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a + % separator; typically that is always in the input, anyway. + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi + \fi + \ifx\go\pickupwholefraction + % Put the argument back for the \pickupwholefraction call, so + % we'll always have a period there to be parsed. + \def\go{\pickupwholefraction#1}% + \else + \let\go = \setuptable + \fi% + \fi + \go +} + +% multitable-only commands. +% +% @headitem starts a heading row, which we typeset in bold. Assignments +% have to be global since we are inside the implicit group of an +% alignment entry. \everycr below resets \everytab so we don't have to +% undo it ourselves. +\def\headitemfont{\b}% for people to use in the template row; not changeable +\def\headitem{% + \checkenv\multitable + \crcr + \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings + \global\everytab={\bf}% can't use \headitemfont since the parsing differs + \the\everytab % for the first item +}% +% +% default for tables with no headings. +\let\headitemcrhook=\relax +% +% A \tab used to include \hskip1sp. But then the space in a template +% line is not enough. That is bad. So let's go back to just `&' until +% we again encounter the problem the 1sp was intended to solve. +% --karl, nathan@acm.org, 20apr99. +\def\tab{\checkenv\multitable &\the\everytab}% + +% @multitable ... @end multitable definitions: +% +\newtoks\everytab % insert after every tab. +% +\envdef\multitable{% + \vskip\parskip + \startsavinginserts + % + % @item within a multitable starts a normal row. + % We use \def instead of \let so that if one of the multitable entries + % contains an @itemize, we don't choke on the \item (seen as \crcr aka + % \endtemplate) expanding \doitemize. + \def\item{\crcr}% + % + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + % + \everycr = {% + \noalign{% + \global\everytab={}% Reset from possible headitem. + \global\colcount=0 % Reset the column counter. + % + % Check for saved footnotes, etc.: + \checkinserts + % + % Perhaps a \nobreak, then reset: + \headitemcrhook + \global\let\headitemcrhook=\relax + }% + }% + % + \parsearg\domultitable +} +\def\domultitable#1{% + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. + % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup &% + \global\advance\colcount by 1 + \multistrut + \vtop{% + % Use the current \colcount to find the correct column width: + \hsize=\expandafter\csname col\the\colcount\endcsname + % + % In order to keep entries from bumping into each other + % we will add a \leftskip of \multitablecolspace to all columns after + % the first one. + % + % If a template has been used, we will add \multitablecolspace + % to the width of each template entry. + % + % If the user has set preamble in terms of percent of \hsize we will + % use that dimension as the width of the column, and the \leftskip + % will keep entries from bumping into each other. Table will start at + % left margin and final column will justify at right margin. + % + % Make sure we don't inherit \rightskip from the outer environment. + \rightskip=0pt + \ifnum\colcount=1 + % The first column will be indented with the surrounding text. + \advance\hsize by\leftskip + \else + \ifsetpercent \else + % If user has not set preamble in terms of percent of \hsize + % we will advance \hsize by \multitablecolspace. + \advance\hsize by \multitablecolspace + \fi + % In either case we will make \leftskip=\multitablecolspace: + \leftskip=\multitablecolspace + \fi + % Ignoring space at the beginning and end avoids an occasional spurious + % blank line, when TeX decides to break the line at the space before the + % box from the multistrut, so the strut ends up on a line by itself. + % For example: + % @multitable @columnfractions .11 .89 + % @item @code{#} + % @tab Legal holiday which is valid in major parts of the whole country. + % Is automatically provided with highlighting sequences respectively + % marking characters. + \noindent\ignorespaces##\unskip\multistrut + }\cr +} +\def\Emultitable{% + \crcr + \egroup % end the \halign + \global\setpercentfalse +} + +\def\setmultitablespacing{% + \def\multistrut{\strut}% just use the standard line spacing + % + % Compute \multitablelinespace (if not defined by user) for use in + % \multitableparskip calculation. We used define \multistrut based on + % this, but (ironically) that caused the spacing to be off. + % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. +\ifdim\multitablelinespace=0pt +\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip +\global\advance\multitablelinespace by-\ht0 +\fi +% Test to see if parskip is larger than space between lines of +% table. If not, do nothing. +% If so, set to same dimension as multitablelinespace. +\ifdim\multitableparskip>\multitablelinespace +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller + % than skip between lines in the table. +\fi% +\ifdim\multitableparskip=0pt +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller + % than skip between lines in the table. +\fi} + + +\message{conditionals,} + +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, +% @ifnotxml always succeed. They currently do nothing; we don't +% attempt to check whether the conditionals are properly nested. But we +% have to remember that they are conditionals, so that @end doesn't +% attempt to close an environment group. +% +\def\makecond#1{% + \expandafter\let\csname #1\endcsname = \relax + \expandafter\let\csname iscond.#1\endcsname = 1 +} +\makecond{iftex} +\makecond{ifnotdocbook} +\makecond{ifnothtml} +\makecond{ifnotinfo} +\makecond{ifnotplaintext} +\makecond{ifnotxml} + +% Ignore @ignore, @ifhtml, @ifinfo, and the like. +% +\def\direntry{\doignore{direntry}} +\def\documentdescription{\doignore{documentdescription}} +\def\docbook{\doignore{docbook}} +\def\html{\doignore{html}} +\def\ifdocbook{\doignore{ifdocbook}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifinfo{\doignore{ifinfo}} +\def\ifnottex{\doignore{ifnottex}} +\def\ifplaintext{\doignore{ifplaintext}} +\def\ifxml{\doignore{ifxml}} +\def\ignore{\doignore{ignore}} +\def\menu{\doignore{menu}} +\def\xml{\doignore{xml}} + +% Ignore text until a line `@end #1', keeping track of nested conditionals. +% +% A count to remember the depth of nesting. +\newcount\doignorecount + +\def\doignore#1{\begingroup + % Scan in ``verbatim'' mode: + \obeylines + \catcode`\@ = \other + \catcode`\{ = \other + \catcode`\} = \other + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \spaceisspace + % + % Count number of #1's that we've seen. + \doignorecount = 0 + % + % Swallow text until we reach the matching `@end #1'. + \dodoignore{#1}% +} + +{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. + \obeylines % + % + \gdef\dodoignore#1{% + % #1 contains the command name as a string, e.g., `ifinfo'. + % + % Define a command to find the next `@end #1'. + \long\def\doignoretext##1^^M@end #1{% + \doignoretextyyy##1^^M@#1\_STOP_}% + % + % And this command to find another #1 command, at the beginning of a + % line. (Otherwise, we would consider a line `@c @ifset', for + % example, to count as an @ifset for nesting.) + \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% + % + % And now expand that command. + \doignoretext ^^M% + }% +} + +\def\doignoreyyy#1{% + \def\temp{#1}% + \ifx\temp\empty % Nothing found. + \let\next\doignoretextzzz + \else % Found a nested condition, ... + \advance\doignorecount by 1 + \let\next\doignoretextyyy % ..., look for another. + % If we're here, #1 ends with ^^M\ifinfo (for example). + \fi + \next #1% the token \_STOP_ is present just after this macro. +} + +% We have to swallow the remaining "\_STOP_". +% +\def\doignoretextzzz#1{% + \ifnum\doignorecount = 0 % We have just found the outermost @end. + \let\next\enddoignore + \else % Still inside a nested condition. + \advance\doignorecount by -1 + \let\next\doignoretext % Look for the next @end. + \fi + \next +} + +% Finish off ignored text. +{ \obeylines% + % Ignore anything after the last `@end #1'; this matters in verbatim + % environments, where otherwise the newline after an ignored conditional + % would result in a blank line in the output. + \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% +} + + +% @set VAR sets the variable VAR to an empty value. +% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. +% +% Since we want to separate VAR from REST-OF-LINE (which might be +% empty), we can't just use \parsearg; we have to insert a space of our +% own to delimit the rest of the line, and then take it out again if we +% didn't need it. +% We rely on the fact that \parsearg sets \catcode`\ =10. +% +\parseargdef\set{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + {% + \makevalueexpandable + \def\temp{#2}% + \edef\next{\gdef\makecsname{SET#1}}% + \ifx\temp\empty + \next{}% + \else + \setzzz#2\endsetzzz + \fi + }% +} +% Remove the trailing space \setxxx inserted. +\def\setzzz#1 \endsetzzz{\next{#1}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\parseargdef\clear{% + {% + \makevalueexpandable + \global\expandafter\let\csname SET#1\endcsname=\relax + }% +} + +% @value{foo} gets the text saved in variable foo. +\def\value{\begingroup\makevalueexpandable\valuexxx} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} +{ + \catcode`\-=\active \catcode`\_=\active + % + \gdef\makevalueexpandable{% + \let\value = \expandablevalue + % We don't want these characters active, ... + \catcode`\-=\other \catcode`\_=\other + % ..., but we might end up with active ones in the argument if + % we're called from @code, as @code{@value{foo-bar_}}, though. + % So \let them to their normal equivalents. + \let-\normaldash \let_\normalunderscore + } +} + +% We have this subroutine so that we can handle at least some @value's +% properly in indexes (we call \makevalueexpandable in \indexdummies). +% The command has to be fully expandable (if the variable is set), since +% the result winds up in the index file. This means that if the +% variable's value contains other Texinfo commands, it's almost certain +% it will fail (although perhaps we could fix that with sufficient work +% to do a one-level expansion on the result, instead of complete). +% +% Unfortunately, this has the consequence that when _ is in the *value* +% of an @set, it does not print properly in the roman fonts (get the cmr +% dot accent at position 126 instead). No fix comes to mind, and it's +% been this way since 2003 or earlier, so just ignore it. +% +\def\expandablevalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {[No value for ``#1'']}% + \message{Variable `#1', used in @value, is not set.}% + \else + \csname SET#1\endcsname + \fi +} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +% To get the special treatment we need for `@end ifset,' we call +% \makecond and then redefine. +% +\makecond{ifset} +\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} +\def\doifset#1#2{% + {% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname SET#2\endcsname\relax + #1% If not set, redefine \next. + \fi + \expandafter + }\next +} +\def\ifsetfail{\doignore{ifset}} + +% @ifclear VAR ... @end executes the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +% The `\else' inside the `\doifset' parameter is a trick to reuse the +% above code: if the variable is not set, do nothing, if it is set, +% then redefine \next to \ifclearfail. +% +\makecond{ifclear} +\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} +\def\ifclearfail{\doignore{ifclear}} + +% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written +% without the @) is in fact defined. We can only feasibly check at the +% TeX level, so something like `mathcode' is going to considered +% defined even though it is not a Texinfo command. +% +\makecond{ifcommanddefined} +\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} +% +\def\doifcmddefined#1#2{{% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname #2\endcsname\relax + #1% If not defined, \let\next as above. + \fi + \expandafter + }\next +} +\def\ifcmddefinedfail{\doignore{ifcommanddefined}} + +% @ifcommandnotdefined CMD ... handled similar to @ifclear above. +\makecond{ifcommandnotdefined} +\def\ifcommandnotdefined{% + \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} +\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} + +% Set the `txicommandconditionals' variable, so documents have a way to +% test if the @ifcommand...defined conditionals are available. +\set txicommandconditionals + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory=\comment + +% @defininfoenclose. +\let\definfoenclose=\comment + + +\message{indexing,} +% Index generation facilities + +% Define \newwrite to be identical to plain tex's \newwrite +% except not \outer, so it can be used within macros and \if's. +\edef\newwrite{\makecsname{ptexnewwrite}} + +% \newindex {foo} defines an index named IX. +% It automatically defines \IXindex such that +% \IXindex ...rest of line... puts an entry in the index IX. +% It also defines \IXindfile to be the number of the output channel for +% the file that accumulates this index. The file's extension is IX. +% The name of an index should be no more than 2 characters long +% for the sake of vms. +% +\def\newindex#1{% + \expandafter\chardef\csname#1indfile\endcsname=0 + \expandafter\xdef\csname#1index\endcsname{% % Define @#1index + \noexpand\doindex{#1}} +} + +% @defindex foo == \newindex{foo} +% +\def\defindex{\parsearg\newindex} + +% Define @defcodeindex, like @defindex except put all entries in @code. +% +\def\defcodeindex{\parsearg\newcodeindex} +% +\def\newcodeindex#1{% + \expandafter\chardef\csname#1indfile\endcsname=0 + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}}% +} + +% The default indices: +\newindex{cp}% concepts, +\newcodeindex{fn}% functions, +\newcodeindex{vr}% variables, +\newcodeindex{tp}% types, +\newcodeindex{ky}% keys +\newcodeindex{pg}% and programs. + + +% @synindex foo bar makes index foo feed into index bar. +% Do this instead of @defindex foo if you don't want it as a separate index. +% +% @syncodeindex foo bar similar, but put all entries made for index foo +% inside @code. +% +\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} +\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} + +% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), +% #3 the target index (bar). +\def\dosynindex#1#2#3{% + % Only do \closeout if we haven't already done it, else we'll end up + % closing the target index. + \expandafter \ifx\csname donesynindex#2\endcsname \relax + % The \closeout helps reduce unnecessary open files; the limit on the + % Acorn RISC OS is a mere 16 files. + \expandafter\closeout\csname#2indfile\endcsname + \expandafter\let\csname donesynindex#2\endcsname = 1 + \fi + % redefine \fooindfile: + \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname + \expandafter\let\csname#2indfile\endcsname=\temp + % redefine \fooindex: + \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% +} + +% Define \doindex, the driver for all index macros. +% Argument #1 is generated by the calling \fooindex macro, +% and it the two-letter name of the index. + +\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} +\def\doindexxxx #1{\doind{\indexname}{#1}} + +% like the previous two, but they put @code around the argument. +\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} +\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} + +% Used when writing an index entry out to an index file, to prevent +% expansion of Texinfo commands that can appear in an index entry. +% +\def\indexdummies{% + \escapechar = `\\ % use backslash in output files. + \def\@{@}% change to @@ when we switch to @ as escape char in index files. + \def\ {\realbackslash\space }% + % + % Need these unexpandable (because we define \tt as a dummy) + % definitions when @{ or @} appear in index entry text. Also, more + % complicated, when \tex is in effect and \{ is a \delimiter again. + % We can't use \lbracecmd and \rbracecmd because texindex assumes + % braces and backslashes are used only as delimiters. Perhaps we + % should use @lbracechar and @rbracechar? + \def\{{{\tt\char123}}% + \def\}{{\tt\char125}}% + % + % Do the redefinitions. + \commondummies +} + +% For the aux and toc files, @ is the escape character. So we want to +% redefine everything using @ as the escape character (instead of +% \realbackslash, still used for index files). When everything uses @, +% this will be simpler. +% +\def\atdummies{% + \def\@{@@}% + \def\ {@ }% + \let\{ = \lbraceatcmd + \let\} = \rbraceatcmd + % + % Do the redefinitions. + \commondummies + \otherbackslash +} + +% Called from \indexdummies and \atdummies. +% +\def\commondummies{% + % \definedummyword defines \#1 as \string\#1\space, thus effectively + % preventing its expansion. This is used only for control words, + % not control letters, because the \space would be incorrect for + % control characters, but is needed to separate the control word + % from whatever follows. + % + % For control letters, we have \definedummyletter, which omits the + % space. + % + % These can be used both for control words that take an argument and + % those that do not. If it is followed by {arg} in the input, then + % that will dutifully get written to the index (or wherever). + % + \def\definedummyword ##1{\def##1{\string##1\space}}% + \def\definedummyletter##1{\def##1{\string##1}}% + \let\definedummyaccent\definedummyletter + % + \commondummiesnofonts + % + \definedummyletter\_% + \definedummyletter\-% + % + % Non-English letters. + \definedummyword\AA + \definedummyword\AE + \definedummyword\DH + \definedummyword\L + \definedummyword\O + \definedummyword\OE + \definedummyword\TH + \definedummyword\aa + \definedummyword\ae + \definedummyword\dh + \definedummyword\exclamdown + \definedummyword\l + \definedummyword\o + \definedummyword\oe + \definedummyword\ordf + \definedummyword\ordm + \definedummyword\questiondown + \definedummyword\ss + \definedummyword\th + % + % Although these internal commands shouldn't show up, sometimes they do. + \definedummyword\bf + \definedummyword\gtr + \definedummyword\hat + \definedummyword\less + \definedummyword\sf + \definedummyword\sl + \definedummyword\tclose + \definedummyword\tt + % + \definedummyword\LaTeX + \definedummyword\TeX + % + % Assorted special characters. + \definedummyword\arrow + \definedummyword\bullet + \definedummyword\comma + \definedummyword\copyright + \definedummyword\registeredsymbol + \definedummyword\dots + \definedummyword\enddots + \definedummyword\entrybreak + \definedummyword\equiv + \definedummyword\error + \definedummyword\euro + \definedummyword\expansion + \definedummyword\geq + \definedummyword\guillemetleft + \definedummyword\guillemetright + \definedummyword\guilsinglleft + \definedummyword\guilsinglright + \definedummyword\lbracechar + \definedummyword\leq + \definedummyword\mathopsup + \definedummyword\minus + \definedummyword\ogonek + \definedummyword\pounds + \definedummyword\point + \definedummyword\print + \definedummyword\quotedblbase + \definedummyword\quotedblleft + \definedummyword\quotedblright + \definedummyword\quoteleft + \definedummyword\quoteright + \definedummyword\quotesinglbase + \definedummyword\rbracechar + \definedummyword\result + \definedummyword\sub + \definedummyword\sup + \definedummyword\textdegree + % + % We want to disable all macros so that they are not expanded by \write. + \macrolist + % + \normalturnoffactive + % + % Handle some cases of @value -- where it does not contain any + % (non-fully-expandable) commands. + \makevalueexpandable +} + +% \commondummiesnofonts: common to \commondummies and \indexnofonts. +% Define \definedumyletter, \definedummyaccent and \definedummyword before +% using. +% +\def\commondummiesnofonts{% + % Control letters and accents. + \definedummyletter\!% + \definedummyaccent\"% + \definedummyaccent\'% + \definedummyletter\*% + \definedummyaccent\,% + \definedummyletter\.% + \definedummyletter\/% + \definedummyletter\:% + \definedummyaccent\=% + \definedummyletter\?% + \definedummyaccent\^% + \definedummyaccent\`% + \definedummyaccent\~% + \definedummyword\u + \definedummyword\v + \definedummyword\H + \definedummyword\dotaccent + \definedummyword\ogonek + \definedummyword\ringaccent + \definedummyword\tieaccent + \definedummyword\ubaraccent + \definedummyword\udotaccent + \definedummyword\dotless + % + % Texinfo font commands. + \definedummyword\b + \definedummyword\i + \definedummyword\r + \definedummyword\sansserif + \definedummyword\sc + \definedummyword\slanted + \definedummyword\t + % + % Commands that take arguments. + \definedummyword\abbr + \definedummyword\acronym + \definedummyword\anchor + \definedummyword\cite + \definedummyword\code + \definedummyword\command + \definedummyword\dfn + \definedummyword\dmn + \definedummyword\email + \definedummyword\emph + \definedummyword\env + \definedummyword\file + \definedummyword\image + \definedummyword\indicateurl + \definedummyword\inforef + \definedummyword\kbd + \definedummyword\key + \definedummyword\math + \definedummyword\option + \definedummyword\pxref + \definedummyword\ref + \definedummyword\samp + \definedummyword\strong + \definedummyword\tie + \definedummyword\U + \definedummyword\uref + \definedummyword\url + \definedummyword\var + \definedummyword\verb + \definedummyword\w + \definedummyword\xref +} + +% For testing: output @{ and @} in index sort strings as \{ and \}. +\newif\ifusebracesinindexes + +\let\indexlbrace\relax +\let\indexrbrace\relax + +{\catcode`\@=0 +\catcode`\\=13 + @gdef@backslashdisappear{@def\{}} +} + +{ +\catcode`\<=13 +\catcode`\-=13 +\catcode`\`=13 + \gdef\indexnonalnumdisappear{% + \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else + % @set txiindexlquoteignore makes us ignore left quotes in the sort term. + % (Introduced for FSFS 2nd ed.) + \let`=\empty + \fi + % + \expandafter\ifx\csname SETtxiindexbackslashignore\endcsname\relax\else + \backslashdisappear + \fi + % + \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else + \def-{}% + \fi + \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else + \def<{}% + \fi + \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else + \def\@{}% + \fi + } + + \gdef\indexnonalnumreappear{% + \useindexbackslash + \let-\normaldash + \let<\normalless + \def\@{@}% + } +} + + +% \indexnofonts is used when outputting the strings to sort the index +% by, and when constructing control sequence names. It eliminates all +% control sequences and just writes whatever the best ASCII sort string +% would be for a given command (usually its argument). +% +\def\indexnofonts{% + % Accent commands should become @asis. + \def\definedummyaccent##1{\let##1\asis}% + % We can just ignore other control letters. + \def\definedummyletter##1{\let##1\empty}% + % All control words become @asis by default; overrides below. + \let\definedummyword\definedummyaccent + \commondummiesnofonts + % + % Don't no-op \tt, since it isn't a user-level command + % and is used in the definitions of the active chars like <, >, |, etc. + % Likewise with the other plain tex font commands. + %\let\tt=\asis + % + \def\ { }% + \def\@{@}% + \def\_{\normalunderscore}% + \def\-{}% @- shouldn't affect sorting + % + \def\lbracechar{{\indexlbrace}}% + \def\rbracechar{{\indexrbrace}}% + \let\{=\lbracechar + \let\}=\rbracechar + % + % + % Non-English letters. + \def\AA{AA}% + \def\AE{AE}% + \def\DH{DZZ}% + \def\L{L}% + \def\OE{OE}% + \def\O{O}% + \def\TH{TH}% + \def\aa{aa}% + \def\ae{ae}% + \def\dh{dzz}% + \def\exclamdown{!}% + \def\l{l}% + \def\oe{oe}% + \def\ordf{a}% + \def\ordm{o}% + \def\o{o}% + \def\questiondown{?}% + \def\ss{ss}% + \def\th{th}% + % + \def\LaTeX{LaTeX}% + \def\TeX{TeX}% + % + % Assorted special characters. + % (The following {} will end up in the sort string, but that's ok.) + \def\arrow{->}% + \def\bullet{bullet}% + \def\comma{,}% + \def\copyright{copyright}% + \def\dots{...}% + \def\enddots{...}% + \def\equiv{==}% + \def\error{error}% + \def\euro{euro}% + \def\expansion{==>}% + \def\geq{>=}% + \def\guillemetleft{<<}% + \def\guillemetright{>>}% + \def\guilsinglleft{<}% + \def\guilsinglright{>}% + \def\leq{<=}% + \def\minus{-}% + \def\point{.}% + \def\pounds{pounds}% + \def\print{-|}% + \def\quotedblbase{"}% + \def\quotedblleft{"}% + \def\quotedblright{"}% + \def\quoteleft{`}% + \def\quoteright{'}% + \def\quotesinglbase{,}% + \def\registeredsymbol{R}% + \def\result{=>}% + \def\textdegree{o}% + % + % We need to get rid of all macros, leaving only the arguments (if present). + % Of course this is not nearly correct, but it is the best we can do for now. + % makeinfo does not expand macros in the argument to @deffn, which ends up + % writing an index entry, and texindex isn't prepared for an index sort entry + % that starts with \. + % + % Since macro invocations are followed by braces, we can just redefine them + % to take a single TeX argument. The case of a macro invocation that + % goes to end-of-line is not handled. + % + \macrolist +} + + +\let\SETmarginindex=\relax % put index entries in margin (undocumented)? + +% Most index entries go through here, but \dosubind is the general case. +% #1 is the index name, #2 is the entry text. +\def\doind#1#2{\dosubind{#1}{#2}{}} + +% There is also \dosubind {index}{topic}{subtopic} +% which makes an entry in a two-level index such as the operation index. +% TODO: Two-level index? Operation index? + +% Workhorse for all indexes. +% #1 is name of index, #2 is stuff to put there, #3 is subentry -- +% empty if called from \doind, as we usually are (the main exception +% is with most defuns, which call us directly). +% +\def\dosubind#1#2#3{% + \iflinks + {% + \requireopenindexfile{#1}% + % Store the main index entry text (including the third arg). + \toks0 = {#2}% + % If third arg is present, precede it with a space. + \def\thirdarg{#3}% + \ifx\thirdarg\empty \else + \toks0 = \expandafter{\the\toks0 \space #3}% + \fi + % + \edef\writeto{\csname#1indfile\endcsname}% + % + \safewhatsit\dosubindwrite + }% + \fi +} + +% Check if an index file has been opened, and if not, open it. +\def\requireopenindexfile#1{% +\ifnum\csname #1indfile\endcsname=0 + \expandafter\newwrite \csname#1indfile\endcsname + \edef\suffix{#1}% + % A .fls suffix would conflict with the file extension for the output + % of -recorder, so use .f1s instead. + \ifx\suffix\indexisfl\def\suffix{f1}\fi + % Open the file + \immediate\openout\csname#1indfile\endcsname \jobname.\suffix + % Using \immediate here prevents an object entering into the current box, + % which could confound checks such as those in \safewhatsit for preceding + % skips. +\fi} +\def\indexisfl{fl} + +% Output \ as {\indexbackslash}, because \ is an escape character in +% the index files. +\let\indexbackslash=\relax +{\catcode`\@=0 \catcode`\\=\active + @gdef@useindexbackslash{@def\{{@indexbackslash}}} +} + +% Definition for writing index entry text. +\def\sortas#1{\ignorespaces}% + +% Definition for writing index entry sort key. Should occur at the at +% the beginning of the index entry, like +% @cindex @sortas{september} \september +% The \ignorespaces takes care of following space, but there's no way +% to remove space before it. +{ +\catcode`\-=13 +\gdef\indexwritesortas{% + \begingroup + \indexnonalnumreappear + \indexwritesortasxxx} +\gdef\indexwritesortasxxx#1{% + \xdef\indexsortkey{#1}\endgroup} +} + + +% Write the entry in \toks0 to the index file. +% +\def\dosubindwrite{% + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% + \fi + % + % Remember, we are within a group. + \indexdummies % Must do this here, since \bf, etc expand at this stage + \useindexbackslash % \indexbackslash isn't defined now so it will be output + % as is; and it will print as backslash. + % Get the string to sort by, by processing the index entry with all + % font commands turned off. + {\indexnofonts + \indexnonalnumdisappear + \xdef\indexsortkey{}% + \let\sortas=\indexwritesortas + \edef\temp{\the\toks0}% + \setbox\dummybox = \hbox{\temp}% Make sure to execute any \sortas + \ifx\indexsortkey\empty + \xdef\indexsortkey{\temp}% + \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi + \fi + }% + % + % Set up the complete index entry, with both the sort key and + % the original text, including any font commands. We write + % three arguments to \entry to the .?? file (four in the + % subentry case), texindex reduces to two when writing the .??s + % sorted result. + \edef\temp{% + \write\writeto{% + \string\entry{\indexsortkey}{\noexpand\folio}{\the\toks0}}% + }% + \temp +} +\newbox\dummybox % used above + +% Take care of unwanted page breaks/skips around a whatsit: +% +% If a skip is the last thing on the list now, preserve it +% by backing up by \lastskip, doing the \write, then inserting +% the skip again. Otherwise, the whatsit generated by the +% \write or \pdfdest will make \lastskip zero. The result is that +% sequences like this: +% @end defun +% @tindex whatever +% @defun ... +% will have extra space inserted, because the \medbreak in the +% start of the @defun won't see the skip inserted by the @end of +% the previous defun. +% +% But don't do any of this if we're not in vertical mode. We +% don't want to do a \vskip and prematurely end a paragraph. +% +% Avoid page breaks due to these extra skips, too. +% +% But wait, there is a catch there: +% We'll have to check whether \lastskip is zero skip. \ifdim is not +% sufficient for this purpose, as it ignores stretch and shrink parts +% of the skip. The only way seems to be to check the textual +% representation of the skip. +% +% The following is almost like \def\zeroskipmacro{0.0pt} except that +% the ``p'' and ``t'' characters have catcode \other, not 11 (letter). +% +\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} +% +\newskip\whatsitskip +\newcount\whatsitpenalty +% +% ..., ready, GO: +% +\def\safewhatsit#1{\ifhmode + #1% + \else + % \lastskip and \lastpenalty cannot both be nonzero simultaneously. + \whatsitskip = \lastskip + \edef\lastskipmacro{\the\lastskip}% + \whatsitpenalty = \lastpenalty + % + % If \lastskip is nonzero, that means the last item was a + % skip. And since a skip is discardable, that means this + % -\whatsitskip glue we're inserting is preceded by a + % non-discardable item, therefore it is not a potential + % breakpoint, therefore no \nobreak needed. + \ifx\lastskipmacro\zeroskipmacro + \else + \vskip-\whatsitskip + \fi + % + #1% + % + \ifx\lastskipmacro\zeroskipmacro + % If \lastskip was zero, perhaps the last item was a penalty, and + % perhaps it was >=10000, e.g., a \nobreak. In that case, we want + % to re-insert the same penalty (values >10000 are used for various + % signals); since we just inserted a non-discardable item, any + % following glue (such as a \parskip) would be a breakpoint. For example: + % @deffn deffn-whatever + % @vindex index-whatever + % Description. + % would allow a break between the index-whatever whatsit + % and the "Description." paragraph. + \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi + \else + % On the other hand, if we had a nonzero \lastskip, + % this make-up glue would be preceded by a non-discardable item + % (the whatsit from the \write), so we must insert a \nobreak. + \nobreak\vskip\whatsitskip + \fi +\fi} + +% The index entry written in the file actually looks like +% \entry {sortstring}{page}{topic} +% or +% \entry {sortstring}{page}{topic}{subtopic} +% The texindex program reads in these files and writes files +% containing these kinds of lines: +% \initial {c} +% before the first topic whose initial is c +% \entry {topic}{pagelist} +% for a topic that is used without subtopics +% \primary {topic} +% for the beginning of a topic that is used with subtopics +% \secondary {subtopic}{pagelist} +% for each subtopic. + +% Define the user-accessible indexing commands +% @findex, @vindex, @kindex, @cindex. + +\def\findex {\fnindex} +\def\kindex {\kyindex} +\def\cindex {\cpindex} +\def\vindex {\vrindex} +\def\tindex {\tpindex} +\def\pindex {\pgindex} + +\def\cindexsub {\begingroup\obeylines\cindexsub} +{\obeylines % +\gdef\cindexsub "#1" #2^^M{\endgroup % +\dosubind{cp}{#2}{#1}}} + +% Define the macros used in formatting output of the sorted index material. + +% @printindex causes a particular index (the ??s file) to get printed. +% It does not print any chapter heading (usually an @unnumbered). +% +\parseargdef\printindex{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \plainfrenchspacing + \everypar = {}% don't want the \kern\-parindent from indentation suppression. + % + % See if the index file exists and is nonempty. + % Change catcode of @ here so that if the index file contains + % \initial {@} + % as its first line, TeX doesn't complain about mismatched braces + % (because it thinks @} is a control sequence). + \catcode`\@ = 11 + % See comment in \requireopenindexfile. + \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi + \openin 1 \jobname.\indexname s + \ifeof 1 + % \enddoublecolumns gets confused if there is no text in the index, + % and it loses the chapter title and the aux file entries for the + % index. The easiest way to prevent this problem is to make sure + % there is some text. + \putwordIndexNonexistent + \else + \catcode`\\ = 0 + \escapechar = `\\ + % + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so + % it can discover if there is anything in it. + \read 1 to \thisline + \ifeof 1 + \putwordIndexIsEmpty + \else + % Index files are almost Texinfo source, but we use \ as the escape + % character. It would be better to use @, but that's too big a change + % to make right now. + \def\indexbackslash{\ttbackslash}% + \let\indexlbrace\{ % Likewise, set these sequences for braces + \let\indexrbrace\} % used in the sort key. + \begindoublecolumns + \let\entryorphanpenalty=\indexorphanpenalty + % + % Read input from the index file line by line. + \loopdo + \ifeof1 + \let\firsttoken\relax + \else + \read 1 to \nextline + \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}% + \act + \fi + \thisline + % + \ifeof1\else + \let\thisline\nextline + \repeat + %% + \enddoublecolumns + \fi + \fi + \closein 1 +\endgroup} + +\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken} +\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1} + +\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx} +\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next} + +% These macros are used by the sorted index file itself. +% Change them to control the appearance of the index. + +{\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13 +\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 +\catcode`\$=3 +\gdef\initialglyphs{% + % Some changes for non-alphabetic characters. Using the glyphs from the + % math fonts looks more consistent than the typewriter font used elsewhere + % for these characters. + \def\indexbackslash{\math{\backslash}}% + \let\\=\indexbackslash + % + % Can't get bold backslash so don't use bold forward slash + \catcode`\/=13 + \def/{{\secrmnotbold \normalslash}}% + \def-{{\normaldash\normaldash}}% en dash `--' + \def^{{\chapbf \normalcaret}}% + \def~{{\chapbf \normaltilde}}% + \def\_{% + \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }% + \def|{$\vert$}% + \def<{$\less$}% + \def>{$\gtr$}% + \def+{$\normalplus$}% +}} + +\def\initial{% + \bgroup + \initialglyphs + \initialx +} + +\def\initialx#1{% + % Remove any glue we may have, we'll be inserting our own. + \removelastskip + % + % We like breaks before the index initials, so insert a bonus. + % The glue before the bonus allows a little bit of space at the + % bottom of a column to reduce an increase in inter-line spacing. + \nobreak + \vskip 0pt plus 5\baselineskip + \penalty -300 + \vskip 0pt plus -5\baselineskip + % + % Typeset the initial. Making this add up to a whole number of + % baselineskips increases the chance of the dots lining up from column + % to column. It still won't often be perfect, because of the stretch + % we need before each entry, but it's better. + % + % No shrink because it confuses \balancecolumns. + \vskip 1.67\baselineskip plus 1\baselineskip + \leftline{\secfonts \kern-0.05em \secbf #1}% + % \secfonts is inside the argument of \leftline so that the change of + % \baselineskip will not affect any glue inserted before the vbox that + % \leftline creates. + % Do our best not to break after the initial. + \nobreak + \vskip .33\baselineskip plus .1\baselineskip + \egroup % \initialglyphs +} + +\newdimen\entryrightmargin +\entryrightmargin=0pt + +% \entry typesets a paragraph consisting of the text (#1), dot leaders, and +% then page number (#2) flushed to the right margin. It is used for index +% and table of contents entries. The paragraph is indented by \leftskip. +% +\def\entry{% + \begingroup + % + % Start a new paragraph if necessary, so our assignments below can't + % affect previous text. + \par + % + % No extra space above this paragraph. + \parskip = 0in + % + % When reading the text of entry, convert explicit line breaks + % from @* into spaces. The user might give these in long section + % titles, for instance. + \def\*{\unskip\space\ignorespaces}% + \def\entrybreak{\hfil\break}% An undocumented command + % + % A bit of stretch before each entry for the benefit of balancing + % columns. + \vskip 0pt plus0.5pt + % + % Swallow the left brace of the text (first parameter): + \afterassignment\doentry + \let\temp = +} +\def\entrybreak{\unskip\space\ignorespaces}% +\def\doentry{% + % Save the text of the entry + \global\setbox\boxA=\hbox\bgroup + \bgroup % Instead of the swallowed brace. + \noindent + \aftergroup\finishentry + % And now comes the text of the entry. + % Not absorbing as a macro argument reduces the chance of problems + % with catcodes occurring. +} +{\catcode`\@=11 +\gdef\finishentry#1{% + \egroup % end box A + \dimen@ = \wd\boxA % Length of text of entry + \global\setbox\boxA=\hbox\bgroup\unhbox\boxA + % #1 is the page number. + % + % Get the width of the page numbers, and only use + % leaders if they are present. + \global\setbox\boxB = \hbox{#1}% + \ifdim\wd\boxB = 0pt + \null\nobreak\hfill\ % + \else + % + \null\nobreak\indexdotfill % Have leaders before the page number. + % + \ifpdf + \pdfgettoks#1.% + \hskip\skip\thinshrinkable\the\toksA + \else + \hskip\skip\thinshrinkable #1% + \fi + \fi + \egroup % end \boxA + \ifdim\wd\boxB = 0pt + \global\setbox\entryindexbox=\box\boxA + \else + \global\setbox\entryindexbox=\vbox\bgroup\noindent + % We want the text of the entries to be aligned to the left, and the + % page numbers to be aligned to the right. + % + \advance\leftskip by 0pt plus 1fil + \advance\leftskip by 0pt plus -1fill + \rightskip = 0pt plus -1fil + \advance\rightskip by 0pt plus 1fill + % Cause last line, which could consist of page numbers on their own + % if the list of page numbers is long, to be aligned to the right. + \parfillskip=0pt plus -1fill + % + \hangindent=1em + % + \advance\rightskip by \entryrightmargin + % Determine how far we can stretch into the margin. + % This allows, e.g., "Appendix H GNU Free Documentation License" to + % fit on one line in @letterpaper format. + \ifdim\entryrightmargin>2.1em + \dimen@i=2.1em + \else + \dimen@i=0em + \fi + \advance \parfillskip by 0pt minus 1\dimen@i + % + \dimen@ii = \hsize + \advance\dimen@ii by -1\leftskip + \advance\dimen@ii by -1\entryrightmargin + \advance\dimen@ii by 1\dimen@i + \let\maybestrut=\relax + \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line + \let\maybestrut=\strut + \ifdim\dimen@ > 0.8\dimen@ii % due to long index text + \dimen@ = 0.7\dimen@ % Try to split the text roughly evenly + \dimen@ii = \hsize + \advance \dimen@ii by -1em + \ifnum\dimen@>\dimen@ii + % If the entry is too long, use the whole line + \dimen@ = \dimen@ii + \fi + \advance\leftskip by 0pt plus 1fill % ragged right + \advance \dimen@ by 1\rightskip + \parshape = 2 0pt \dimen@ 1em \dimen@ii + % Ideally we'd add a finite glue at the end of the first line only, but + % TeX doesn't seem to provide a way to do such a thing. + \fi\fi + \maybestrut % Add a strut on the first and last lines + \unhbox\boxA + \maybestrut + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % Word spacing - no stretch + \spaceskip=\fontdimen2\font minus \fontdimen4\font + % + \linepenalty=1000 % Discourage line breaks. + \hyphenpenalty=5000 % Discourage hyphenation. + % + \par % format the paragraph + \egroup % The \vbox + \fi + \endgroup + % delay text of entry until after penalty + \bgroup\aftergroup\insertindexentrybox + \entryorphanpenalty +}} + +\newskip\thinshrinkable +\skip\thinshrinkable=.15em minus .15em + +\newbox\entryindexbox +\def\insertindexentrybox{% +\lineskip=0pt % This comes into effect when the \vbox has a large + % height due to the paragraph in it having several + % lines. +\box\entryindexbox} + +% Default is no penalty +\let\entryorphanpenalty\egroup + +% Used from \printindex. \firsttoken should be the first token +% after the \entry. If it's not another \entry, we are at the last +% line of a group of index entries, so insert a penalty to discourage +% orphaned index entries. +\long\def\indexorphanpenalty{% + \def\isentry{\entry}% + \ifx\firsttoken\isentry + \else + \unskip\penalty 9000 + % The \unskip here stops breaking before the glue. It relies on the + % \vskip above being there, otherwise there is an error + % "You can't use `\unskip' in vertical mode". There has to be glue + % in the current vertical list that hasn't been added to the + % "current page". See Chapter 24 of the TeXbook. This contradicts + % Section 8.3.7 in "TeX by Topic," though. + \fi + \egroup % now comes the box added with \aftergroup +} + +% Like plain.tex's \dotfill, except uses up at least 1 em. +% The filll stretch here overpowers both the fil and fill stretch to push +% the page number to the right. +\def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1filll} + + +\def\primary #1{\line{#1\hfil}} + +\newskip\secondaryindent \secondaryindent=0.5cm +\def\secondary#1#2{{% + \parfillskip=0in + \parskip=0in + \hangindent=1in + \hangafter=1 + \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + #2 + \fi + \par +}} + +% Define two-column mode, which we use to typeset indexes. +% Adapted from the TeXbook, page 416, which is to say, +% the manmac.tex format used to print the TeXbook itself. +\catcode`\@=11 + +\newbox\partialpage +\newdimen\doublecolumnhsize +\newdimen\doublecolumntopgap +\doublecolumntopgap = 0pt + +\newtoks\savedtopmark % Used in \begindoublecolumns +\newtoks\savedfirstmark + +\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % Grab any single-column material above us. + \output = {% + % + % Here is a possibility not foreseen in manmac: if we accumulate a + % whole lot of material, we might end up calling this \output + % routine twice in a row (see the doublecol-lose test, which is + % essentially a couple of indexes with @setchapternewpage off). In + % that case we just ship out what is in \partialpage with the normal + % output routine. Generally, \partialpage will be empty when this + % runs and this will be a no-op. See the indexspread.tex test case. + \ifvoid\partialpage \else + \onepageout{\pagecontents\partialpage}% + \fi + % + \global\setbox\partialpage = \vbox{% + % Unvbox the main output page. + \unvbox\PAGE + \kern-\topskip \kern\baselineskip + }% + % Save \topmark and \firstmark + \global\savedtopmark=\expandafter{\topmark}% + \global\savedfirstmark=\expandafter{\firstmark}% + }% + \eject % run that output routine to set \partialpage + % + % We recover the two marks that the last output routine saved in order + % to propagate the information in marks added around a chapter heading, + % which could be otherwise be lost by the time the final page is output. + % + \mark{\the\savedtopmark}% Only mark in page passed to following \output. + \output = {% + \setbox0=\box\PAGE % clear box 255 + }abc\eject + % + \mark{\the\savedfirstmark}% + % + % Use the double-column output routine for subsequent pages. + \output = {\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the + % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) + % been clobbered. + % + \doublecolumnhsize = \hsize + \advance\doublecolumnhsize by -.04154\hsize + \divide\doublecolumnhsize by 2 + \hsize = \doublecolumnhsize + % + % Double the \vsize as well. (We don't need a separate register here, + % since nobody clobbers \vsize.) + \global\doublecolumntopgap = \topskip + \global\advance\doublecolumntopgap by -1\baselineskip + \global\advance\vsize by -1\doublecolumntopgap + \vsize = 2\vsize + \topskip=0pt +} + +% The double-column output routine for all double-column pages except +% the last, which is done by \balancecolumns. +% +\def\doublecolumnout{% + \splittopskip=\topskip \splitmaxdepth=\maxdepth + % Get the available space for the double columns -- the normal + % (undoubled) page height minus any material left over from the + % previous page. + \dimen@ = \vsize + \divide\dimen@ by 2 + \advance\dimen@ by -\ht\partialpage + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 + \penalty\outputpenalty +} +% +% Re-output the contents of the output page -- any previous material, +% followed by the two boxes we just split, in box0 and box2. +\def\pagesofar{% + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \vbox{% + \vskip\doublecolumntopgap + \hbox to\pagewidth{\box0\hfil\box2}}% +} + + +% Finished with with double columns. +\def\enddoublecolumns{% + % The following penalty ensures that the page builder is exercised + % _before_ we change the output routine. This is necessary in the + % following situation: + % + % The last section of the index consists only of a single entry. + % Before this section, \pagetotal is less than \pagegoal, so no + % break occurs before the last section starts. However, the last + % section, consisting of \initial and the single \entry, does not + % fit on the page and has to be broken off. Without the following + % penalty the page builder will not be exercised until \eject + % below, and by that time we'll already have changed the output + % routine to the \balancecolumns version, so the next-to-last + % double-column page will be processed with \balancecolumns, which + % is wrong: The two columns will go to the main vertical list, with + % the broken-off section in the recent contributions. As soon as + % the output routine finishes, TeX starts reconsidering the page + % break. The two columns and the broken-off section both fit on the + % page, because the two columns now take up only half of the page + % goal. When TeX sees \eject from below which follows the final + % section, it invokes the new output routine that we've set after + % \balancecolumns below; \onepageout will try to fit the two columns + % and the final section into the vbox of \pageheight (see + % \pagebody), causing an overfull box. + % + % Note that glue won't work here, because glue does not exercise the + % page builder, unlike penalties (see The TeXbook, pp. 280-281). + \penalty0 + % + \output = {% + % Split the last of the double-column material. Leave it on the + % current page, no automatic page break. + \balancecolumns + % + % If we end up splitting too much material for the current page, + % though, there will be another page break right after this \output + % invocation ends. Having called \balancecolumns once, we do not + % want to call it again. Therefore, reset \output to its normal + % definition right away. (We hope \balancecolumns will never be + % called on to balance too much material, but if it is, this makes + % the output somewhat more palatable.) + \global\output = {\onepageout{\pagecontents\PAGE}}% + }% + \eject + \endgroup % started in \begindoublecolumns + % + % \pagegoal was set to the doubled \vsize above, since we restarted + % the current page. We're now back to normal single-column + % typesetting, so reset \pagegoal to the normal \vsize (after the + % \endgroup where \vsize got restored). + \pagegoal = \vsize +} +% +% Only called for the last of the double column material. \doublecolumnout +% does the others. +\def\balancecolumns{% + \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. + \dimen@ = \ht0 + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \ifdim\dimen@<14\baselineskip + % Don't split a short final column in two. + \setbox2=\vbox{}% + \else + \divide\dimen@ by 2 % target to split to + \dimen@ii = \dimen@ + \splittopskip = \topskip + % Loop until the second column is no higher than the first + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + % Remove glue from bottom of first column to + % make sure it is higher than the second. + \global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}% + \ifdim\ht3>\ht1 + \global\advance\dimen@ by 1pt + \repeat + }% + \multiply\dimen@ii by 4 + \divide\dimen@ii by 5 + \ifdim\ht3<\dimen@ii + % Column heights are too different, so don't make their bottoms + % flush with each other. The glue at the end of the second column + % allows a second column to stretch, reducing the difference in + % height between the two. + \setbox0=\vbox to\dimen@{\unvbox1\vfill}% + \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}% + \else + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + \fi + \fi + % + \pagesofar +} +\catcode`\@ = \other + + +\message{sectioning,} +% Chapters, sections, etc. + +% Let's start with @part. +\outer\parseargdef\part{\partzzz{#1}} +\def\partzzz#1{% + \chapoddpage + \null + \vskip.3\vsize % move it down on the page a bit + \begingroup + \noindent \titlefonts\rmisbold #1\par % the text + \let\lastnode=\empty % no node to associate with + \writetocentry{part}{#1}{}% but put it in the toc + \headingsoff % no headline or footline on the part page + % This outputs a mark at the end of the page that clears \thischapter + % and \thissection, as is done in \startcontents. + \let\pchapsepmacro\relax + \chapmacro{}{Yomitfromtoc}{}% + \chapoddpage + \endgroup +} + +% \unnumberedno is an oxymoron. But we count the unnumbered +% sections so that we can refer to them unambiguously in the pdf +% outlines by their "section number". We avoid collisions with chapter +% numbers by starting them at 10000. (If a document ever has 10000 +% chapters, we're in trouble anyway, I'm sure.) +\newcount\unnumberedno \unnumberedno = 10000 +\newcount\chapno +\newcount\secno \secno=0 +\newcount\subsecno \subsecno=0 +\newcount\subsubsecno \subsubsecno=0 + +% This counter is funny since it counts through charcodes of letters A, B, ... +\newcount\appendixno \appendixno = `\@ +% +% \def\appendixletter{\char\the\appendixno} +% We do the following ugly conditional instead of the above simple +% construct for the sake of pdftex, which needs the actual +% letter in the expansion, not just typeset. +% +\def\appendixletter{% + \ifnum\appendixno=`A A% + \else\ifnum\appendixno=`B B% + \else\ifnum\appendixno=`C C% + \else\ifnum\appendixno=`D D% + \else\ifnum\appendixno=`E E% + \else\ifnum\appendixno=`F F% + \else\ifnum\appendixno=`G G% + \else\ifnum\appendixno=`H H% + \else\ifnum\appendixno=`I I% + \else\ifnum\appendixno=`J J% + \else\ifnum\appendixno=`K K% + \else\ifnum\appendixno=`L L% + \else\ifnum\appendixno=`M M% + \else\ifnum\appendixno=`N N% + \else\ifnum\appendixno=`O O% + \else\ifnum\appendixno=`P P% + \else\ifnum\appendixno=`Q Q% + \else\ifnum\appendixno=`R R% + \else\ifnum\appendixno=`S S% + \else\ifnum\appendixno=`T T% + \else\ifnum\appendixno=`U U% + \else\ifnum\appendixno=`V V% + \else\ifnum\appendixno=`W W% + \else\ifnum\appendixno=`X X% + \else\ifnum\appendixno=`Y Y% + \else\ifnum\appendixno=`Z Z% + % The \the is necessary, despite appearances, because \appendixletter is + % expanded while writing the .toc file. \char\appendixno is not + % expandable, thus it is written literally, thus all appendixes come out + % with the same letter (or @) in the toc without it. + \else\char\the\appendixno + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + +% Each @chapter defines these (using marks) as the number+name, number +% and name of the chapter. Page headings and footings can use +% these. @section does likewise. +\def\thischapter{} +\def\thischapternum{} +\def\thischaptername{} +\def\thissection{} +\def\thissectionnum{} +\def\thissectionname{} + +\newcount\absseclevel % used to calculate proper heading level +\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count + +% @raisesections: treat @section as chapter, @subsection as section, etc. +\def\raisesections{\global\advance\secbase by -1} +\let\up=\raisesections % original BFox name + +% @lowersections: treat @chapter as section, @section as subsection, etc. +\def\lowersections{\global\advance\secbase by 1} +\let\down=\lowersections % original BFox name + +% we only have subsub. +\chardef\maxseclevel = 3 +% +% A numbered section within an unnumbered changes to unnumbered too. +% To achieve this, remember the "biggest" unnum. sec. we are currently in: +\chardef\unnlevel = \maxseclevel +% +% Trace whether the current chapter is an appendix or not: +% \chapheadtype is "N" or "A", unnumbered chapters are ignored. +\def\chapheadtype{N} + +% Choose a heading macro +% #1 is heading type +% #2 is heading level +% #3 is text for heading +\def\genhead#1#2#3{% + % Compute the abs. sec. level: + \absseclevel=#2 + \advance\absseclevel by \secbase + % Make sure \absseclevel doesn't fall outside the range: + \ifnum \absseclevel < 0 + \absseclevel = 0 + \else + \ifnum \absseclevel > 3 + \absseclevel = 3 + \fi + \fi + % The heading type: + \def\headtype{#1}% + \if \headtype U% + \ifnum \absseclevel < \unnlevel + \chardef\unnlevel = \absseclevel + \fi + \else + % Check for appendix sections: + \ifnum \absseclevel = 0 + \edef\chapheadtype{\headtype}% + \else + \if \headtype A\if \chapheadtype N% + \errmessage{@appendix... within a non-appendix chapter}% + \fi\fi + \fi + % Check for numbered within unnumbered: + \ifnum \absseclevel > \unnlevel + \def\headtype{U}% + \else + \chardef\unnlevel = 3 + \fi + \fi + % Now print the heading: + \if \headtype U% + \ifcase\absseclevel + \unnumberedzzz{#3}% + \or \unnumberedseczzz{#3}% + \or \unnumberedsubseczzz{#3}% + \or \unnumberedsubsubseczzz{#3}% + \fi + \else + \if \headtype A% + \ifcase\absseclevel + \appendixzzz{#3}% + \or \appendixsectionzzz{#3}% + \or \appendixsubseczzz{#3}% + \or \appendixsubsubseczzz{#3}% + \fi + \else + \ifcase\absseclevel + \chapterzzz{#3}% + \or \seczzz{#3}% + \or \numberedsubseczzz{#3}% + \or \numberedsubsubseczzz{#3}% + \fi + \fi + \fi + \suppressfirstparagraphindent +} + +% an interface: +\def\numhead{\genhead N} +\def\apphead{\genhead A} +\def\unnmhead{\genhead U} + +% @chapter, @appendix, @unnumbered. Increment top-level counter, reset +% all lower-level sectioning counters to zero. +% +% Also set \chaplevelprefix, which we prepend to @float sequence numbers +% (e.g., figures), q.v. By default (before any chapter), that is empty. +\let\chaplevelprefix = \empty +% +\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz +\def\chapterzzz#1{% + % section resetting is \global in case the chapter is in a group, such + % as an @include file. + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\chapno by 1 + % + % Used for \float. + \gdef\chaplevelprefix{\the\chapno.}% + \resetallfloatnos + % + % \putwordChapter can contain complex things in translations. + \toks0=\expandafter{\putwordChapter}% + \message{\the\toks0 \space \the\chapno}% + % + % Write the actual heading. + \chapmacro{#1}{Ynumbered}{\the\chapno}% + % + % So @section and the like are numbered underneath this chapter. + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec +} + +\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz +% +\def\appendixzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\appendixno by 1 + \gdef\chaplevelprefix{\appendixletter.}% + \resetallfloatnos + % + % \putwordAppendix can contain complex things in translations. + \toks0=\expandafter{\putwordAppendix}% + \message{\the\toks0 \space \appendixletter}% + % + \chapmacro{#1}{Yappendix}{\appendixletter}% + % + \global\let\section = \appendixsec + \global\let\subsection = \appendixsubsec + \global\let\subsubsection = \appendixsubsubsec +} + +% normally unnmhead0 calls unnumberedzzz: +\outer\parseargdef\unnumbered{\unnmhead0{#1}} +\def\unnumberedzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\unnumberedno by 1 + % + % Since an unnumbered has no number, no prefix for figures. + \global\let\chaplevelprefix = \empty + \resetallfloatnos + % + % This used to be simply \message{#1}, but TeX fully expands the + % argument to \message. Therefore, if #1 contained @-commands, TeX + % expanded them. For example, in `@unnumbered The @cite{Book}', TeX + % expanded @cite (which turns out to cause errors because \cite is meant + % to be executed, not expanded). + % + % Anyway, we don't want the fully-expanded definition of @cite to appear + % as a result of the \message, we just want `@cite' itself. We use + % \the to achieve this: TeX expands \the only once, + % simply yielding the contents of . (We also do this for + % the toc entries.) + \toks0 = {#1}% + \message{(\the\toks0)}% + % + \chapmacro{#1}{Ynothing}{\the\unnumberedno}% + % + \global\let\section = \unnumberedsec + \global\let\subsection = \unnumberedsubsec + \global\let\subsubsection = \unnumberedsubsubsec +} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\parseargdef\centerchap{% + \let\centerparametersmaybe = \centerparameters + \unnmhead0{#1}% + \let\centerparametersmaybe = \relax +} + +% @top is like @unnumbered. +\let\top\unnumbered + +% Sections. +% +\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz +\def\seczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% +} + +% normally calls appendixsectionzzz: +\outer\parseargdef\appendixsection{\apphead1{#1}} +\def\appendixsectionzzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% +} +\let\appendixsec\appendixsection + +% normally calls unnumberedseczzz: +\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} +\def\unnumberedseczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% +} + +% Subsections. +% +% normally calls numberedsubseczzz: +\outer\parseargdef\numberedsubsec{\numhead2{#1}} +\def\numberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% +} + +% normally calls appendixsubseczzz: +\outer\parseargdef\appendixsubsec{\apphead2{#1}} +\def\appendixsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno}% +} + +% normally calls unnumberedsubseczzz: +\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} +\def\unnumberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno}% +} + +% Subsubsections. +% +% normally numberedsubsubseczzz: +\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} +\def\numberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynumbered}% + {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% normally appendixsubsubseczzz: +\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} +\def\appendixsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% normally unnumberedsubsubseczzz: +\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} +\def\unnumberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% These macros control what the section commands do, according +% to what kind of chapter we are in (ordinary, appendix, or unnumbered). +% Define them by default for a numbered chapter. +\let\section = \numberedsec +\let\subsection = \numberedsubsec +\let\subsubsection = \numberedsubsubsec + +% Define @majorheading, @heading and @subheading + +\def\majorheading{% + {\advance\chapheadingskip by 10pt \chapbreak }% + \parsearg\chapheadingzzz +} + +\def\chapheading{\chapbreak \parsearg\chapheadingzzz} +\def\chapheadingzzz#1{% + \vbox{\chapfonts \raggedtitlesettings #1\par}% + \nobreak\bigskip \nobreak + \suppressfirstparagraphindent +} + +% @heading, @subheading, @subsubheading. +\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + +% These macros generate a chapter, section, etc. heading only +% (including whitespace, linebreaking, etc. around it), +% given all the information in convenient, parsed form. + +% Args are the skip and penalty (usually negative) +\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} + +% Parameter controlling skip before chapter headings (if needed) +\newskip\chapheadingskip + +% Define plain chapter starts, and page on/off switching for it. +\def\chapbreak{\dobreak \chapheadingskip {-4000}} + +% Start a new page +\def\chappager{\par\vfill\supereject} + +% \chapoddpage - start on an odd page for a new chapter +% Because \domark is called before \chapoddpage, the filler page will +% get the headings for the next chapter, which is wrong. But we don't +% care -- we just disable all headings on the filler page. +\def\chapoddpage{% + \chappager + \ifodd\pageno \else + \begingroup + \headingsoff + \null + \chappager + \endgroup + \fi +} + +\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} + +\def\CHAPPAGoff{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chapbreak +\global\let\pagealignmacro=\chappager} + +\def\CHAPPAGon{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chappager +\global\let\pagealignmacro=\chappager +\global\def\HEADINGSon{\HEADINGSsingle}} + +\def\CHAPPAGodd{% +\global\let\contentsalignmacro = \chapoddpage +\global\let\pchapsepmacro=\chapoddpage +\global\let\pagealignmacro=\chapoddpage +\global\def\HEADINGSon{\HEADINGSdouble}} + +\CHAPPAGon + +% \chapmacro - Chapter opening. +% +% #1 is the text, #2 is the section type (Ynumbered, Ynothing, +% Yappendix, Yomitfromtoc), #3 the chapter number. +% Not used for @heading series. +% +% To test against our argument. +\def\Ynothingkeyword{Ynothing} +\def\Yappendixkeyword{Yappendix} +\def\Yomitfromtockeyword{Yomitfromtoc} +% +\def\chapmacro#1#2#3{% + \checkenv{}% chapters, etc., should not start inside an environment. + % + % Insert the first mark before the heading break (see notes for \domark). + \let\prevchapterdefs=\lastchapterdefs + \let\prevsectiondefs=\lastsectiondefs + \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% + \gdef\thissection{}}% + % + \def\temptype{#2}% + \ifx\temptype\Ynothingkeyword + \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{\thischaptername}}% + \else\ifx\temptype\Yomitfromtockeyword + \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{}}% + \else\ifx\temptype\Yappendixkeyword + \toks0={#1}% + \xdef\lastchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\appendixletter}% + % \noexpand\putwordAppendix avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \else + \toks0={#1}% + \xdef\lastchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\the\chapno}% + % \noexpand\putwordChapter avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordChapter{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \fi\fi\fi + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert the chapter heading break. + \pchapsepmacro + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \let\prevchapterdefs=\lastchapterdefs + \let\prevsectiondefs=\lastsectiondefs + \domark + % + {% + \chapfonts \rmisbold + \let\footnote=\errfootnoteheading % give better error message + % + % Have to define \lastsection before calling \donoderef, because the + % xref code eventually uses it. On the other hand, it has to be called + % after \pchapsepmacro, or the headline will change too soon. + \gdef\lastsection{#1}% + % + % Only insert the separating space if we have a chapter/appendix + % number, and don't print the unnumbered ``number''. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unnchap}% + \else\ifx\temptype\Yomitfromtockeyword + \setbox0 = \hbox{}% contents like unnumbered, but no toc entry + \def\toctype{omit}% + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% + \def\toctype{app}% + \else + \setbox0 = \hbox{#3\enspace}% + \def\toctype{numchap}% + \fi\fi\fi + % + % Write the toc entry for this chapter. Must come before the + % \donoderef, because we include the current node name in the toc + % entry, and \donoderef resets it to empty. + \writetocentry{\toctype}{#1}{#3}% + % + % For pdftex, we have to write out the node definition (aka, make + % the pdfdest) after any page break, but before the actual text has + % been typeset. If the destination for the pdf outline is after the + % text, then jumping from the outline may wind up with the text not + % being visible, for instance under high magnification. + \donoderef{#2}% + % + % Typeset the actual heading. + \nobreak % Avoid page breaks at the interline glue. + \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak +} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerparameters{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt +} + + +% I don't think this chapter style is supported any more, so I'm not +% updating it with the new noderef stuff. We'll see. --karl, 11aug03. +% +\def\setchapterstyle #1 {\csname CHAPF#1\endcsname} +% +\def\unnchfopen #1{% + \chapoddpage + \vbox{\chapfonts \raggedtitlesettings #1\par}% + \nobreak\bigskip\nobreak +} +\def\chfopen #1#2{\chapoddpage {\chapfonts +\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% +\par\penalty 5000 % +} +\def\centerchfopen #1{% + \chapoddpage + \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}% + \nobreak\bigskip \nobreak +} +\def\CHAPFopen{% + \global\let\chapmacro=\chfopen + \global\let\centerchapmacro=\centerchfopen} + + +% Section titles. These macros combine the section number parts and +% call the generic \sectionheading to do the printing. +% +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip{-1000}} + +% Subsection titles. +\newskip\subsecheadingskip +\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} + +% Subsubsection titles. +\def\subsubsecheadingskip{\subsecheadingskip} +\def\subsubsecheadingbreak{\subsecheadingbreak} + + +% Print any size, any type, section title. +% +% #1 is the text of the title, +% #2 is the section level (sec/subsec/subsubsec), +% #3 is the section type (Ynumbered, Ynothing, Yappendix, Yomitfromtoc), +% #4 is the section number. +% +\def\seckeyword{sec} +% +\def\sectionheading#1#2#3#4{% + {% + \def\sectionlevel{#2}% + \def\temptype{#3}% + % + % It is ok for the @heading series commands to appear inside an + % environment (it's been historically allowed, though the logic is + % dubious), but not the others. + \ifx\temptype\Yomitfromtockeyword\else + \checkenv{}% non-@*heading should not be in an environment. + \fi + \let\footnote=\errfootnoteheading + % + % Switch to the right set of fonts. + \csname #2fonts\endcsname \rmisbold + % + % Insert first mark before the heading break (see notes for \domark). + \let\prevsectiondefs=\lastsectiondefs + \ifx\temptype\Ynothingkeyword + \ifx\sectionlevel\seckeyword + \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% + \gdef\thissection{\thissectionname}}% + \fi + \else\ifx\temptype\Yomitfromtockeyword + % Don't redefine \thissection. + \else\ifx\temptype\Yappendixkeyword + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\lastsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \else + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\lastsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \fi\fi\fi + % + % Go into vertical mode. Usually we'll already be there, but we + % don't want the following whatsit to end up in a preceding paragraph + % if the document didn't happen to have a blank line. + \par + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert space above the heading. + \csname #2headingbreak\endcsname + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \global\let\prevsectiondefs=\lastsectiondefs + \domark + % + % Only insert the space after the number if we have a section number. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unn}% + \gdef\lastsection{#1}% + \else\ifx\temptype\Yomitfromtockeyword + % for @headings -- no section number, don't include in toc, + % and don't redefine \lastsection. + \setbox0 = \hbox{}% + \def\toctype{omit}% + \let\sectionlevel=\empty + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{#4\enspace}% + \def\toctype{app}% + \gdef\lastsection{#1}% + \else + \setbox0 = \hbox{#4\enspace}% + \def\toctype{num}% + \gdef\lastsection{#1}% + \fi\fi\fi + % + % Write the toc entry (before \donoderef). See comments in \chapmacro. + \writetocentry{\toctype\sectionlevel}{#1}{#4}% + % + % Write the node reference (= pdf destination for pdftex). + % Again, see comments in \chapmacro. + \donoderef{#3}% + % + % Interline glue will be inserted when the vbox is completed. + % That glue will be a valid breakpoint for the page, since it'll be + % preceded by a whatsit (usually from the \donoderef, or from the + % \writetocentry if there was no node). We don't want to allow that + % break, since then the whatsits could end up on page n while the + % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. + \nobreak + % + % Output the actual section heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright + \hangindent=\wd0 % zero if no section number + \unhbox0 #1}% + }% + % Add extra space after the heading -- half of whatever came above it. + % Don't allow stretch, though. + \kern .5 \csname #2headingskip\endcsname + % + % Do not let the kern be a potential breakpoint, as it would be if it + % was followed by glue. + \nobreak + % + % We'll almost certainly start a paragraph next, so don't let that + % glue accumulate. (Not a breakpoint because it's preceded by a + % discardable item.) However, when a paragraph is not started next + % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out + % or the negative glue will cause weirdly wrong output, typically + % obscuring the section heading with something else. + \vskip-\parskip + % + % This is so the last item on the main vertical list is a known + % \penalty > 10000, so \startdefun, etc., can recognize the situation + % and do the needful. + \penalty 10001 +} + + +\message{toc,} +% Table of contents. +\newwrite\tocfile + +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. +% +% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} +% We append the current node name (if any) and page number as additional +% arguments for the \{chap,sec,...}entry macros which will eventually +% read this. The node name is used in the pdf outlines as the +% destination to jump to. +% +% We open the .toc file for writing here instead of at @setfilename (or +% any other fixed time) so that @contents can be anywhere in the document. +% But if #1 is `omit', then we don't do anything. This is used for the +% table of contents chapter openings themselves. +% +\newif\iftocfileopened +\def\omitkeyword{omit}% +% +\def\writetocentry#1#2#3{% + \edef\writetoctype{#1}% + \ifx\writetoctype\omitkeyword \else + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + % + \iflinks + {\atdummies + \edef\temp{% + \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% + \temp + }% + \fi + \fi + % + % Tell \shipout to create a pdf destination on each page, if we're + % writing pdf. These are used in the table of contents. We can't + % just write one on every page because the title pages are numbered + % 1 and 2 (the page numbers aren't printed), and so are the first + % two pages of the document. Thus, we'd have two destinations named + % `1', and two named `2'. + \ifpdf \global\pdfmakepagedesttrue \fi +} + + +% These characters do not print properly in the Computer Modern roman +% fonts, so we must take special care. This is more or less redundant +% with the Texinfo input format setup at the end of this file. +% +\def\activecatcodes{% + \catcode`\"=\active + \catcode`\$=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\\=\active + \catcode`\^=\active + \catcode`\_=\active + \catcode`\|=\active + \catcode`\~=\active +} + + +% Read the toc file, which is essentially Texinfo input. +\def\readtocfile{% + \setupdatafile + \activecatcodes + \input \tocreadfilename +} + +\newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% Prepare to read what we've written to \tocfile. +% +\def\startcontents#1{% + % If @setchapternewpage on, and @headings double, the contents should + % start on an odd page, unlike chapters. Thus, we maintain + % \contentsalignmacro in parallel with \pagealignmacro. + % From: Torbjorn Granlund + \contentsalignmacro + \immediate\closeout\tocfile + % + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \chapmacro{#1}{Yomitfromtoc}{}% + % + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \raggedbottom % Worry more about breakpoints than the bottom. + \entryrightmargin=\contentsrightmargin % Don't use the full line length. + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi +} + +% redefined for the two-volume lispref. We always output on +% \jobname.toc even if this is redefined. +% +\def\tocreadfilename{\jobname.toc} + +% Normal (long) toc. +% +\def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \ifeof 1 \else + \pdfmakeoutlines + \fi + \closein 1 + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} + +% And just the chapters. +\def\summarycontents{% + \startcontents{\putwordShortTOC}% + % + \let\partentry = \shortpartentry + \let\numchapentry = \shortchapentry + \let\appentry = \shortchapentry + \let\unnchapentry = \shortunnchapentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf + \let\sl=\shortcontsl \let\tt=\shortconttt + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\numsecentry##1##2##3##4{} + \let\appsecentry = \numsecentry + \let\unnsecentry = \numsecentry + \let\numsubsecentry = \numsecentry + \let\appsubsecentry = \numsecentry + \let\unnsubsecentry = \numsecentry + \let\numsubsubsecentry = \numsecentry + \let\appsubsubsecentry = \numsecentry + \let\unnsubsubsecentry = \numsecentry + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \closein 1 + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} +\let\shortcontents = \summarycontents + +% Typeset the label for a chapter or appendix for the short contents. +% The arg is, e.g., `A' for an appendix, or `3' for a chapter. +% +\def\shortchaplabel#1{% + % This space should be enough, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % But use \hss just in case. + % (This space doesn't include the extra space that gets added after + % the label; that gets put in by \shortchapentry above.) + % + % We'd like to right-justify chapter numbers, but that looks strange + % with appendix letters. And right-justifying numbers and + % left-justifying letters looks strange when there is less than 10 + % chapters. Have to read the whole toc once to know how many chapters + % there are before deciding ... + \hbox to 1em{#1\hss}% +} + +% These macros generate individual entries in the table of contents. +% The first argument is the chapter or section name. +% The last argument is the page number. +% The arguments in between are the chapter number, section number, ... + +% Parts, in the main contents. Replace the part number, which doesn't +% exist, with an empty box. Let's hope all the numbers have the same width. +% Also ignore the page number, which is conventionally not printed. +\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} +\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} +% +% Parts, in the short toc. +\def\shortpartentry#1#2#3#4{% + \penalty-300 + \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip + \shortchapentry{{\bf #1}}{\numeralbox}{}{}% +} + +% Chapters, in the main contents. +\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} + +% Chapters, in the short toc. +% See comments in \dochapentry re vbox and related settings. +\def\shortchapentry#1#2#3#4{% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% +} + +% Appendices, in the main contents. +% Need the word Appendix, and a fixed-size box. +% +\def\appendixbox#1{% + % We use M since it's probably the widest letter. + \setbox0 = \hbox{\putwordAppendix{} M}% + \hbox to \wd0{\putwordAppendix{} #1\hss}} +% +\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\hskip.7em#1}{#4}} + +% Unnumbered chapters. +\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} +\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} + +% Sections. +\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} +\let\appsecentry=\numsecentry +\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} + +% Subsections. +\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} +\let\appsubsecentry=\numsubsecentry +\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} + +% And subsubsections. +\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} +\let\appsubsubsecentry=\numsubsubsecentry +\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} + +% This parameter controls the indentation of the various levels. +% Same as \defaultparindent. +\newdimen\tocindent \tocindent = 15pt + +% Now for the actual typesetting. In all these, #1 is the text and #2 is the +% page number. +% +% If the toc has to be broken over pages, we want it to be at chapters +% if at all possible; hence the \penalty. +\def\dochapentry#1#2{% + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + % Move the page numbers slightly to the right + \advance\entryrightmargin by -0.05em + \chapentryfonts + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup + \nobreak\vskip .25\baselineskip plus.1\baselineskip +} + +\def\dosecentry#1#2{\begingroup + \secentryfonts \leftskip=\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsecentry#1#2{\begingroup + \subsecentryfonts \leftskip=2\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsubsecentry#1#2{\begingroup + \subsubsecentryfonts \leftskip=3\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +% We use the same \entry macro as for the index entries. +\let\tocentry = \entry + +% Space between chapter (or whatever) number and the title. +\def\labelspace{\hskip1em \relax} + +\def\dopageno#1{{\rm #1}} +\def\doshortpageno#1{{\rm #1}} + +\def\chapentryfonts{\secfonts \rm} +\def\secentryfonts{\textfonts} +\def\subsecentryfonts{\textfonts} +\def\subsubsecentryfonts{\textfonts} + + +\message{environments,} +% @foo ... @end foo. + +% @tex ... @end tex escapes into raw TeX temporarily. +% One exception: @ is still an escape character, so that @end tex works. +% But \@ or @@ will get a plain @ character. + +\envdef\tex{% + \setupmarkupstyle{tex}% + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie + \catcode `\%=14 + \catcode `\+=\other + \catcode `\"=\other + \catcode `\|=\other + \catcode `\<=\other + \catcode `\>=\other + \catcode `\`=\other + \catcode `\'=\other + \escapechar=`\\ + % + % ' is active in math mode (mathcode"8000). So reset it, and all our + % other math active characters (just in case), to plain's definitions. + \mathactive + % + % Inverse of the list at the beginning of the file. + \let\b=\ptexb + \let\bullet=\ptexbullet + \let\c=\ptexc + \let\,=\ptexcomma + \let\.=\ptexdot + \let\dots=\ptexdots + \let\equiv=\ptexequiv + \let\!=\ptexexclam + \let\i=\ptexi + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\/=\ptexslash + \let\sp=\ptexsp + \let\*=\ptexstar + %\let\sup=\ptexsup % do not redefine, we want @sup to work in math mode + \let\t=\ptext + \expandafter \let\csname top\endcsname=\ptextop % we've made it outer + \let\frenchspacing=\plainfrenchspacing + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% +} +% There is no need to define \Etex. + +% Define @lisp ... @end lisp. +% @lisp environment forms a group so it can rebind things, +% including the definition of @end lisp (which normally is erroneous). + +% Amount to narrow the margins by for @lisp. +\newskip\lispnarrowing \lispnarrowing=0.4in + +% This is the definition that ^^M gets inside @lisp, @example, and other +% such environments. \null is better than a space, since it doesn't +% have any width. +\def\lisppar{\null\endgraf} + +% This space is always present above and below environments. +\newskip\envskipamount \envskipamount = 0pt + +% Make spacing and below environment symmetrical. We use \parskip here +% to help in doing that, since in @example-like environments \parskip +% is reset to zero; thus the \afterenvbreak inserts no space -- but the +% start of the next paragraph will insert \parskip. +% +\def\aboveenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + \ifnum\lastpenalty<10000 + % Penalize breaking before the environment, because preceding text + % often leads into it. + \penalty100 + \fi + \vskip\envskipamount + \fi + \fi +}} + +\def\afterenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + % it's not a good place to break if the last penalty was \nobreak + % or better ... + \ifnum\lastpenalty<10000 \penalty-50 \fi + \vskip\envskipamount + \fi + \fi +}} + +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will +% also clear it, so that its embedded environments do the narrowing again. +\let\nonarrowing=\relax + +% @cartouche ... @end cartouche: draw rectangle w/rounded corners around +% environment contents. +\font\circle=lcircle10 +\newdimen\circthick +\newdimen\cartouter\newdimen\cartinner +\newskip\normbskip\newskip\normpskip\newskip\normlskip +\circthick=\fontdimen8\circle +% +\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth +\def\ctr{{\hskip 6pt\circle\char'010}} +\def\cbl{{\circle\char'012\hskip -6pt}} +\def\cbr{{\hskip 6pt\circle\char'011}} +\def\carttop{\hbox to \cartouter{\hskip\lskip + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} +\def\cartbot{\hbox to \cartouter{\hskip\lskip + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} +% +\newskip\lskip\newskip\rskip + +\envdef\cartouche{% + \ifhmode\par\fi % can't be in the midst of a paragraph. + \startsavinginserts + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt % we want these *outside*. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \cartouter=\hsize + \advance\cartouter by 18.4pt % allow for 3pt kerns on either + % side, and for 6pt waste from + % each corner char, and rule thickness + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % + % If this cartouche directly follows a sectioning command, we need the + % \parskip glue (backspaced over by default) or the cartouche can + % collide with the section heading. + \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi + % + \setbox\groupbox=\vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \kern3pt + \hsize=\cartinner + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip + \comment % For explanation, see the end of def\group. +} +\def\Ecartouche{% + \ifhmode\par\fi + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup + \addgroupbox + \checkinserts +} + + +% This macro is called at the beginning of all the @example variants, +% inside a group. +\newdimen\nonfillparindent +\def\nonfillstart{% + \aboveenvbreak + \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \let\par = \lisppar % don't ignore blank lines + \obeylines % each line of input is a line of output + \parskip = 0pt + % Turn off paragraph indentation but redefine \indent to emulate + % the normal \indent. + \nonfillparindent=\parindent + \parindent = 0pt + \let\indent\nonfillindent + % + \emergencystretch = 0pt % don't try to avoid overfull boxes + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \let\exdent=\nofillexdent +} + +\begingroup +\obeyspaces +% We want to swallow spaces (but not other tokens) after the fake +% @indent in our nonfill-environments, where spaces are normally +% active and set to @tie, resulting in them not being ignored after +% @indent. +\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% +\gdef\nonfillindentcheck{% +\ifx\temp % +\expandafter\nonfillindentgobble% +\else% +\leavevmode\nonfillindentbox% +\fi% +}% +\endgroup +\def\nonfillindentgobble#1{\nonfillindent} +\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} + +% If you want all examples etc. small: @set dispenvsize small. +% If you want even small examples the full size: @set dispenvsize nosmall. +% This affects the following displayed environments: +% @example, @display, @format, @lisp +% +\def\smallword{small} +\def\nosmallword{nosmall} +\let\SETdispenvsize\relax +\def\setnormaldispenv{% + \ifx\SETdispenvsize\smallword + % end paragraph for sake of leading, in case document has no blank + % line. This is redundant with what happens in \aboveenvbreak, but + % we need to do it before changing the fonts, and it's inconvenient + % to change the fonts afterward. + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} +\def\setsmalldispenv{% + \ifx\SETdispenvsize\nosmallword + \else + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} + +% We often define two environments, @foo and @smallfoo. +% Let's do it in one command. #1 is the env name, #2 the definition. +\def\makedispenvdef#1#2{% + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% + \expandafter\let\csname E#1\endcsname \afterenvbreak + \expandafter\let\csname Esmall#1\endcsname \afterenvbreak +} + +% Define two environment synonyms (#1 and #2) for an environment. +\def\maketwodispenvdef#1#2#3{% + \makedispenvdef{#1}{#3}% + \makedispenvdef{#2}{#3}% +} +% +% @lisp: indented, narrowed, typewriter font; +% @example: same as @lisp. +% +% @smallexample and @smalllisp: use smaller fonts. +% Originally contributed by Pavel@xerox. +% +\maketwodispenvdef{lisp}{example}{% + \nonfillstart + \tt\setupmarkupstyle{example}% + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \gobble % eat return +} +% @display/@smalldisplay: same as @lisp except keep current font. +% +\makedispenvdef{display}{% + \nonfillstart + \gobble +} + +% @format/@smallformat: same as @display except don't narrow margins. +% +\makedispenvdef{format}{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} + +% @flushleft: same as @format, but doesn't obey \SETdispenvsize. +\envdef\flushleft{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} +\let\Eflushleft = \afterenvbreak + +% @flushright. +% +\envdef\flushright{% + \let\nonarrowing = t% + \nonfillstart + \advance\leftskip by 0pt plus 1fill\relax + \gobble +} +\let\Eflushright = \afterenvbreak + + +% @raggedright does more-or-less normal line breaking but no right +% justification. From plain.tex. Don't stretch around special +% characters in urls in this environment, since the stretch at the right +% should be enough. +\envdef\raggedright{% + \rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax + \def\urefprestretchamount{0pt}% + \def\urefpoststretchamount{0pt}% +} +\let\Eraggedright\par + +\envdef\raggedleft{% + \parindent=0pt \leftskip0pt plus2em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedleft\par + +\envdef\raggedcenter{% + \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedcenter\par + + +% @quotation does normal linebreaking (hence we can't use \nonfillstart) +% and narrows the margins. We keep \parskip nonzero in general, since +% we're doing normal filling. So, when using \aboveenvbreak and +% \afterenvbreak, temporarily make \parskip 0. +% +\makedispenvdef{quotation}{\quotationstart} +% +\def\quotationstart{% + \indentedblockstart % same as \indentedblock, but increase right margin too. + \ifx\nonarrowing\relax + \advance\rightskip by \lispnarrowing + \fi + \parsearg\quotationlabel +} + +% We have retained a nonzero parskip for the environment, since we're +% doing normal filling. +% +\def\Equotation{% + \par + \ifx\quotationauthor\thisisundefined\else + % indent a bit. + \leftline{\kern 2\leftskip \sl ---\quotationauthor}% + \fi + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallquotation{\Equotation} + +% If we're given an argument, typeset it in bold with a colon after. +\def\quotationlabel#1{% + \def\temp{#1}% + \ifx\temp\empty \else + {\bf #1: }% + \fi +} + +% @indentedblock is like @quotation, but indents only on the left and +% has no optional argument. +% +\makedispenvdef{indentedblock}{\indentedblockstart} +% +\def\indentedblockstart{% + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \parindent=0pt + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \exdentamount = \lispnarrowing + \else + \let\nonarrowing = \relax + \fi +} + +% Keep a nonzero parskip for the environment, since we're doing normal filling. +% +\def\Eindentedblock{% + \par + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallindentedblock{\Eindentedblock} + + +% LaTeX-like @verbatim...@end verbatim and @verb{...} +% If we want to allow any as delimiter, +% we need the curly braces so that makeinfo sees the @verb command, eg: +% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org +% +% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. +% +% [Knuth] p.344; only we need to do the other characters Texinfo sets +% active too. Otherwise, they get lost as the first character on a +% verbatim line. +\def\dospecials{% + \do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% + \do\<\do\>\do\|\do\@\do+\do\"% + % Don't do the quotes -- if we do, @set txicodequoteundirected and + % @set txicodequotebacktick will not have effect on @verb and + % @verbatim, and ?` and !` ligatures won't get disabled. + %\do\`\do\'% +} +% +% [Knuth] p. 380 +\def\uncatcodespecials{% + \def\do##1{\catcode`##1=\other}\dospecials} +% +% Setup for the @verb command. +% +% Eight spaces for a tab +\begingroup + \catcode`\^^I=\active + \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} +\endgroup +% +\def\setupverb{% + \tt % easiest (and conventionally used) font for verbatim + \def\par{\leavevmode\endgraf}% + \setupmarkupstyle{verb}% + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Setup for the @verbatim environment +% +% Real tab expansion. +\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount +% +% We typeset each line of the verbatim in an \hbox, so we can handle +% tabs. The \global is in case the verbatim line starts with an accent, +% or some other command that starts with a begin-group. Otherwise, the +% entire \verbbox would disappear at the corresponding end-group, before +% it is typeset. Meanwhile, we can't have nested verbatim commands +% (can we?), so the \global won't be overwriting itself. +\newbox\verbbox +\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} +% +\begingroup + \catcode`\^^I=\active + \gdef\tabexpand{% + \catcode`\^^I=\active + \def^^I{\leavevmode\egroup + \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab + \divide\dimen\verbbox by\tabw + \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw + \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw + \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox + }% + } +\endgroup + +% start the verbatim environment. +\def\setupverbatim{% + \let\nonarrowing = t% + \nonfillstart + \tt % easiest (and conventionally used) font for verbatim + % The \leavevmode here is for blank lines. Otherwise, we would + % never \starttabox and the \egroup would end verbatim mode. + \def\par{\leavevmode\egroup\box\verbbox\endgraf}% + \tabexpand + \setupmarkupstyle{verbatim}% + % Respect line breaks, + % print special symbols as themselves, and + % make each space count. + % Must do in this order: + \obeylines \uncatcodespecials \sepspaces + \everypar{\starttabbox}% +} + +% Do the @verb magic: verbatim text is quoted by unique +% delimiter characters. Before first delimiter expect a +% right brace, after last delimiter expect closing brace: +% +% \def\doverb'{'#1'}'{#1} +% +% [Knuth] p. 382; only eat outer {} +\begingroup + \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other + \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] +\endgroup +% +\def\verb{\begingroup\setupverb\doverb} +% +% +% Do the @verbatim magic: define the macro \doverbatim so that +% the (first) argument ends when '@end verbatim' is reached, ie: +% +% \def\doverbatim#1@end verbatim{#1} +% +% For Texinfo it's a lot easier than for LaTeX, +% because texinfo's \verbatim doesn't stop at '\end{verbatim}': +% we need not redefine '\', '{' and '}'. +% +% Inspired by LaTeX's verbatim command set [latex.ltx] +% +\begingroup + \catcode`\ =\active + \obeylines % + % ignore everything up to the first ^^M, that's the newline at the end + % of the @verbatim input line itself. Otherwise we get an extra blank + % line in the output. + \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% + % We really want {...\end verbatim} in the body of the macro, but + % without the active space; thus we have to use \xdef and \gobble. +\endgroup +% +\envdef\verbatim{% + \setupverbatim\doverbatim +} +\let\Everbatim = \afterenvbreak + + +% @verbatiminclude FILE - insert text of file in verbatim environment. +% +\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} +% +\def\doverbatiminclude#1{% + {% + \makevalueexpandable + \setupverbatim + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% + \input #1 + \afterenvbreak + }% +} + +% @copying ... @end copying. +% Save the text away for @insertcopying later. +% +% We save the uninterpreted tokens, rather than creating a box. +% Saving the text in a box would be much easier, but then all the +% typesetting commands (@smallbook, font changes, etc.) have to be done +% beforehand -- and a) we want @copying to be done first in the source +% file; b) letting users define the frontmatter in as flexible order as +% possible is desirable. +% +\def\copying{\checkenv{}\begingroup\scanargctxt\docopying} +\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +% +\def\insertcopying{% + \begingroup + \parindent = 0pt % paragraph indentation looks wrong on title page + \scanexp\copyingtext + \endgroup +} + + +\message{defuns,} +% @defun etc. + +\newskip\defbodyindent \defbodyindent=.4in +\newskip\defargsindent \defargsindent=50pt +\newskip\deflastargmargin \deflastargmargin=18pt +\newcount\defunpenalty + +% Start the processing of @deffn: +\def\startdefun{% + \ifnum\lastpenalty<10000 + \medbreak + \defunpenalty=10003 % Will keep this @deffn together with the + % following @def command, see below. + \else + % If there are two @def commands in a row, we'll have a \nobreak, + % which is there to keep the function description together with its + % header. But if there's nothing but headers, we need to allow a + % break somewhere. Check specifically for penalty 10002, inserted + % by \printdefunline, instead of 10000, since the sectioning + % commands also insert a nobreak penalty, and we don't want to allow + % a break between a section heading and a defun. + % + % As a further refinement, we avoid "club" headers by signalling + % with penalty of 10003 after the very first @deffn in the + % sequence (see above), and penalty of 10002 after any following + % @def command. + \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi + % + % Similarly, after a section heading, do not allow a break. + % But do insert the glue. + \medskip % preceded by discardable penalty, so not a breakpoint + \fi + % + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent +} + +\def\dodefunx#1{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As above, allow line break if we have multiple x headers in a row. + % It's not a great place, though. + \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi + % + % And now, it's time to reuse the body of the original defun: + \expandafter\gobbledefun#1% +} +\def\gobbledefun#1\startdefun{} + +% \printdefunline \deffnheader{text} +% +\def\printdefunline#1#2{% + \begingroup + % call \deffnheader: + #1#2 \endheader + % common ending: + \interlinepenalty = 10000 + \advance\rightskip by 0pt plus 1fil\relax + \endgraf + \nobreak\vskip -\parskip + \penalty\defunpenalty % signal to \startdefun and \dodefunx + % Some of the @defun-type tags do not enable magic parentheses, + % rendering the following check redundant. But we don't optimize. + \checkparencounts + \endgroup +} + +\def\Edefun{\endgraf\medbreak} + +% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; +% the only thing remaining is to define \deffnheader. +% +\def\makedefun#1{% + \expandafter\let\csname E#1\endcsname = \Edefun + \edef\temp{\noexpand\domakedefun + \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% + \temp +} + +% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) } +% +% Define \deffn and \deffnx, without parameters. +% \deffnheader has to be defined explicitly. +% +\def\domakedefun#1#2#3{% + \envdef#1{% + \startdefun + \doingtypefnfalse % distinguish typed functions from all else + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#2{\dodefunx#1}% + \def#3% +} + +\newif\ifdoingtypefn % doing typed function? +\newif\ifrettypeownline % typeset return type on its own line? + +% @deftypefnnewline on|off says whether the return type of typed functions +% are printed on their own line. This affects @deftypefn, @deftypefun, +% @deftypeop, and @deftypemethod. +% +\parseargdef\deftypefnnewline{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @txideftypefnnl value `\temp', + must be on|off}% + \fi\fi +} + +% Untyped functions: + +% @deffn category name args +\makedefun{deffn}{\deffngeneral{}} + +% @deffn category class name args +\makedefun{defop}#1 {\defopon{#1\ \putwordon}} + +% \defopon {category on}class name args +\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deffngeneral {subind}category name args +% +\def\deffngeneral#1#2 #3 #4\endheader{% + % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. + \dosubind{fn}{\code{#3}}{#1}% + \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% +} + +% Typed functions: + +% @deftypefn category type name args +\makedefun{deftypefn}{\deftypefngeneral{}} + +% @deftypeop category class type name args +\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} + +% \deftypeopon {category on}class type name args +\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deftypefngeneral {subind}category type name args +% +\def\deftypefngeneral#1#2 #3 #4 #5\endheader{% + \dosubind{fn}{\code{#4}}{#1}% + \doingtypefntrue + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +% Typed variables: + +% @deftypevr category type var args +\makedefun{deftypevr}{\deftypecvgeneral{}} + +% @deftypecv category class type var args +\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} + +% \deftypecvof {category of}class type var args +\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } + +% \deftypecvgeneral {subind}category type var args +% +\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% + \dosubind{vr}{\code{#4}}{#1}% + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +% Untyped variables: + +% @defvr category var args +\makedefun{defvr}#1 {\deftypevrheader{#1} {} } + +% @defcv category class var args +\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} + +% \defcvof {category of}class var args +\def\defcvof#1#2 {\deftypecvof{#1}#2 {} } + +% Types: + +% @deftp category name args +\makedefun{deftp}#1 #2 #3\endheader{% + \doind{tp}{\code{#2}}% + \defname{#1}{}{#2}\defunargs{#3\unskip}% +} + +% Remaining @defun-like shortcuts: +\makedefun{defun}{\deffnheader{\putwordDeffunc} } +\makedefun{defmac}{\deffnheader{\putwordDefmac} } +\makedefun{defspec}{\deffnheader{\putwordDefspec} } +\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } +\makedefun{defvar}{\defvrheader{\putwordDefvar} } +\makedefun{defopt}{\defvrheader{\putwordDefopt} } +\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } +\makedefun{defmethod}{\defopon\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopon\putwordMethodon} +\makedefun{defivar}{\defcvof\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} + +% \defname, which formats the name of the @def (not the args). +% #1 is the category, such as "Function". +% #2 is the return type, if any. +% #3 is the function name. +% +% We are followed by (but not passed) the arguments, if any. +% +\def\defname#1#2#3{% + \par + % Get the values of \leftskip and \rightskip as they were outside the @def... + \advance\leftskip by -\defbodyindent + % + % Determine if we are typesetting the return type of a typed function + % on a line by itself. + \rettypeownlinefalse + \ifdoingtypefn % doing a typed function specifically? + % then check user option for putting return type on its own line: + \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else + \rettypeownlinetrue + \fi + \fi + % + % How we'll format the category name. Putting it in brackets helps + % distinguish it from the body text that may end up on the next line + % just below it. + \def\temp{#1}% + \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} + % + % Figure out line sizes for the paragraph shape. We'll always have at + % least two. + \tempnum = 2 + % + % The first line needs space for \box0; but if \rightskip is nonzero, + % we need only space for the part of \box0 which exceeds it: + \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip + % + % If doing a return type on its own line, we'll have another line. + \ifrettypeownline + \advance\tempnum by 1 + \def\maybeshapeline{0in \hsize}% + \else + \def\maybeshapeline{}% + \fi + % + % The continuations: + \dimen2=\hsize \advance\dimen2 by -\defargsindent + % + % The final paragraph shape: + \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 + % + % Put the category name at the right margin. + \noindent + \hbox to 0pt{% + \hfil\box0 \kern-\hsize + % \hsize has to be shortened this way: + \kern\leftskip + % Intentionally do not respect \rightskip, since we need the space. + }% + % + % Allow all lines to be underfull without complaint: + \tolerance=10000 \hbadness=10000 + \exdentamount=\defbodyindent + {% + % defun fonts. We use typewriter by default (used to be bold) because: + % . we're printing identifiers, they should be in tt in principle. + % . in languages with many accents, such as Czech or French, it's + % common to leave accents off identifiers. The result looks ok in + % tt, but exceedingly strange in rm. + % . we don't want -- and --- to be treated as ligatures. + % . this still does not fix the ?` and !` ligatures, but so far no + % one has made identifiers using them :). + \df \tt + \def\temp{#2}% text of the return type + \ifx\temp\empty\else + \tclose{\temp}% typeset the return type + \ifrettypeownline + % put return type on its own line; prohibit line break following: + \hfil\vadjust{\nobreak}\break + \else + \space % type on same line, so just followed by a space + \fi + \fi % no return type + #3% output function name + }% + {\rm\enskip}% hskip 0.5 em of \tenrm + % + \boldbrax + % arguments will be output next, if any. +} + +% Print arguments in slanted roman (not ttsl), inconsistently with using +% tt for the name. This is because literal text is sometimes needed in +% the argument list (groff manual), and ttsl and tt are not very +% distinguishable. Prevent hyphenation at `-' chars. +% +\def\defunargs#1{% + % use sl by default (not ttsl), + % tt for the names. + \df \sl \hyphenchar\font=0 + % + % On the other hand, if an argument has two dashes (for instance), we + % want a way to get ttsl. We used to recommend @var for that, so + % leave the code in, but it's strange for @var to lead to typewriter. + % Nowadays we recommend @code, since the difference between a ttsl hyphen + % and a tt hyphen is pretty tiny. @code also disables ?` !`. + \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% + #1% + \sl\hyphenchar\font=45 +} + +% We want ()&[] to print specially on the defun line. +% +\def\activeparens{% + \catcode`\(=\active \catcode`\)=\active + \catcode`\[=\active \catcode`\]=\active + \catcode`\&=\active +} + +% Make control sequences which act like normal parenthesis chars. +\let\lparen = ( \let\rparen = ) + +% Be sure that we always have a definition for `(', etc. For example, +% if the fn name has parens in it, \boldbrax will not be in effect yet, +% so TeX would otherwise complain about undefined control sequence. +{ + \activeparens + \global\let(=\lparen \global\let)=\rparen + \global\let[=\lbrack \global\let]=\rbrack + \global\let& = \& + + \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} + \gdef\magicamp{\let&=\amprm} +} + +\newcount\parencount + +% If we encounter &foo, then turn on ()-hacking afterwards +\newif\ifampseen +\def\amprm#1 {\ampseentrue{\bf\ }} + +\def\parenfont{% + \ifampseen + % At the first level, print parens in roman, + % otherwise use the default font. + \ifnum \parencount=1 \rm \fi + \else + % The \sf parens (in \boldbrax) actually are a little bolder than + % the contained text. This is especially needed for [ and ] . + \sf + \fi +} +\def\infirstlevel#1{% + \ifampseen + \ifnum\parencount=1 + #1% + \fi + \fi +} +\def\bfafterword#1 {#1 \bf} + +\def\opnr{% + \global\advance\parencount by 1 + {\parenfont(}% + \infirstlevel \bfafterword +} +\def\clnr{% + {\parenfont)}% + \infirstlevel \sl + \global\advance\parencount by -1 +} + +\newcount\brackcount +\def\lbrb{% + \global\advance\brackcount by 1 + {\bf[}% +} +\def\rbrb{% + {\bf]}% + \global\advance\brackcount by -1 +} + +\def\checkparencounts{% + \ifnum\parencount=0 \else \badparencount \fi + \ifnum\brackcount=0 \else \badbrackcount \fi +} +% these should not use \errmessage; the glibc manual, at least, actually +% has such constructs (when documenting function pointers). +\def\badparencount{% + \message{Warning: unbalanced parentheses in @def...}% + \global\parencount=0 +} +\def\badbrackcount{% + \message{Warning: unbalanced square brackets in @def...}% + \global\brackcount=0 +} + + +\message{macros,} +% @macro. + +% To do this right we need a feature of e-TeX, \scantokens, +% which we arrange to emulate with a temporary file in ordinary TeX. +\ifx\eTeXversion\thisisundefined + \newwrite\macscribble + \def\scantokens#1{% + \toks0={#1}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \input \jobname.tmp + } +\fi + +\let\aftermacroxxx\relax +\def\aftermacro{\aftermacroxxx} + +% alias because \c means cedilla in @tex or @math +\let\texinfoc=\c + +% Used at the time of macro expansion. +% Argument is macro body with arguments substituted +\def\scanmacro#1{% + \newlinechar`\^^M + \def\xprocessmacroarg{\eatspaces}% + % + % Process the macro body under the current catcode regime. + \scantokens{#1\texinfoc}\aftermacro% + % + % The \c is to remove the \newlinechar added by \scantokens, and + % can be noticed by \parsearg. + % The \aftermacro allows a \comment at the end of the macro definition + % to duplicate itself past the final \newlinechar added by \scantokens: + % this is used in the definition of \group to comment out a newline. We + % don't do the same for \c to support Texinfo files with macros that ended + % with a @c, which should no longer be necessary. + % We avoid surrounding the call to \scantokens with \bgroup and \egroup + % to allow macros to open or close groups themselves. +} + +\def\scanexp#1{% + \bgroup + % Undo catcode changes of \startcontents and \printindex + % When called from @insertcopying or (short)caption, we need active + % backslash to get it printed correctly. + % FIXME: This may not be needed. + %\catcode`\@=0 \catcode`\\=\active \escapechar=`\@ + \edef\temp{\noexpand\scanmacro{#1}}% + \temp + \egroup +} + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? + +% List of all defined macros in the form +% \definedummyword\macro1\definedummyword\macro2... +% Currently is also contains all @aliases; the list can be split +% if there is a need. +\def\macrolist{} + +% Add the macro to \macrolist +\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} +\def\addtomacrolistxxx#1{% + \toks0 = \expandafter{\macrolist\definedummyword#1}% + \xdef\macrolist{\the\toks0}% +} + +% Utility routines. +% This does \let #1 = #2, with \csnames; that is, +% \let \csname#1\endcsname = \csname#2\endcsname +% (except of course we have to play expansion games). +% +\def\cslet#1#2{% + \expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname +} + +% Trim leading and trailing spaces off a string. +% Concepts from aro-bend problem 15 (see CTAN). +{\catcode`\@=11 +\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} +\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} +\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} +\def\unbrace#1{#1} +\unbrace{\gdef\trim@@@ #1 } #2@{#1} +} + +% Trim a single trailing ^^M off a string. +{\catcode`\^^M=\other \catcode`\Q=3% +\gdef\eatcr #1{\eatcra #1Q^^MQ}% +\gdef\eatcra#1^^MQ{\eatcrb#1Q}% +\gdef\eatcrb#1Q#2Q{#1}% +} + +% Macro bodies are absorbed as an argument in a context where +% all characters are catcode 10, 11 or 12, except \ which is active +% (as in normal texinfo). It is necessary to change the definition of \ +% to recognize macro arguments; this is the job of \mbodybackslash. +% +% Non-ASCII encodings make 8-bit characters active, so un-activate +% them to avoid their expansion. Must do this non-globally, to +% confine the change to the current group. +% +% It's necessary to have hard CRs when the macro is executed. This is +% done by making ^^M (\endlinechar) catcode 12 when reading the macro +% body, and then making it the \newlinechar in \scanmacro. +% +\def\scanctxt{% used as subroutine + \catcode`\"=\other + \catcode`\+=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\^=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\~=\other + \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi +} + +\def\scanargctxt{% used for copying and captions, not macros. + \scanctxt + \catcode`\@=\other + \catcode`\\=\other + \catcode`\^^M=\other +} + +\def\macrobodyctxt{% used for @macro definitions + \scanctxt + \catcode`\ =\other + \catcode`\@=\other + \catcode`\{=\other + \catcode`\}=\other + \catcode`\^^M=\other + \usembodybackslash +} + +% Used when scanning braced macro arguments. Note, however, that catcode +% changes here are ineffectual if the macro invocation was nested inside +% an argument to another Texinfo command. +\def\macroargctxt{% + \scanctxt + \catcode`\ =\active + \catcode`\^^M=\other + \catcode`\\=\active +} + +\def\macrolineargctxt{% used for whole-line arguments without braces + \scanctxt + \catcode`\{=\other + \catcode`\}=\other +} + +% \mbodybackslash is the definition of \ in @macro bodies. +% It maps \foo\ => \csname macarg.foo\endcsname => #N +% where N is the macro parameter number. +% We define \csname macarg.\endcsname to be \realbackslash, so +% \\ in macro replacement text gets you a backslash. +% +{\catcode`@=0 @catcode`@\=@active + @gdef@usembodybackslash{@let\=@mbodybackslash} + @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} +} +\expandafter\def\csname macarg.\endcsname{\realbackslash} + +\def\margbackslash#1{\char`\#1 } + +\def\macro{\recursivefalse\parsearg\macroxxx} +\def\rmacro{\recursivetrue\parsearg\macroxxx} + +\def\macroxxx#1{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty % no arguments + \paramno=0\relax + \else + \expandafter\parsemargdef \argl;% + \if\paramno>256\relax + \ifx\eTeXversion\thisisundefined + \errhelp = \EMsimple + \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} + \fi + \fi + \fi + \if1\csname ismacro.\the\macname\endcsname + \message{Warning: redefining \the\macname}% + \else + \expandafter\ifx\csname \the\macname\endcsname \relax + \else \errmessage{Macro name \the\macname\space already defined}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + \addtomacrolist{\the\macname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\parseargdef\unmacro{% + \if1\csname ismacro.#1\endcsname + \global\cslet{#1}{macsave.#1}% + \global\expandafter\let \csname ismacro.#1\endcsname=0% + % Remove the macro name from \macrolist: + \begingroup + \expandafter\let\csname#1\endcsname \relax + \let\definedummyword\unmacrodo + \xdef\macrolist{\macrolist}% + \endgroup + \else + \errmessage{Macro #1 not defined}% + \fi +} + +% Called by \do from \dounmacro on each macro. The idea is to omit any +% macro definitions that have been changed to \relax. +% +\def\unmacrodo#1{% + \ifx #1\relax + % remove this + \else + \noexpand\definedummyword \noexpand#1% + \fi +} + +% \getargs -- Parse the arguments to a @macro line. Set \macname to +% the name of the macro, and \argl to the braced argument list. +\def\getargs#1{\getargsxxx#1{}} +\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} +\def\getmacname#1 #2\relax{\macname={#1}} +\def\getmacargs#1{\def\argl{#1}} +% This made use of the feature that if the last token of a +% is #, then the preceding argument is delimited by +% an opening brace, and that opening brace is not consumed. + +% Parse the optional {params} list to @macro or @rmacro. +% Set \paramno to the number of arguments, +% and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a +% three-param macro.) Define \macarg.BLAH for each BLAH in the params +% list to some hook where the argument is to be expanded. If there are +% less than 10 arguments that hook is to be replaced by ##N where N +% is the position in that list, that is to say the macro arguments are to be +% defined `a la TeX in the macro body. +% +% That gets used by \mbodybackslash (above). +% +% If there are 10 or more arguments, a different technique is used: see +% \parsemmanyargdef. +% +\def\parsemargdef#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + % \hash is redefined to `#' later to get it into definitions + \let\processmacroarg\relax + \parsemargdefxxx#1,;,% + \ifnum\paramno<10\relax\else + \paramno0\relax + \parsemmanyargdef@@#1,;,% 10 or more arguments + \fi +} +\def\parsemargdefxxx#1,{% + \if#1;\let\next=\relax + \else \let\next=\parsemargdefxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\processmacroarg{\hash\the\paramno}}% + \edef\paramlist{\paramlist\hash\the\paramno,}% + \fi\next} + +% \parsemacbody, \parsermacbody +% +% Read recursive and nonrecursive macro bodies. (They're different since +% rec and nonrec macros end differently.) +% +% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro +% body to be transformed. +% Set \macrobody to the body of the macro, and call \defmacro. +% +{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% +{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% + +% Make @ a letter, so that we can make private-to-Texinfo macro names. +\edef\texiatcatcode{\the\catcode`\@} +\catcode `@=11\relax + +%%%%%%%%%%%%%% Code for > 10 arguments only %%%%%%%%%%%%%%%%%% + +% If there are 10 or more arguments, a different technique is used, where the +% hook remains in the body, and when macro is to be expanded the body is +% processed again to replace the arguments. +% +% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the +% argument N value and then \edef the body (nothing else will expand because of +% the catcode regime under which the body was input). +% +% If you compile with TeX (not eTeX), and you have macros with 10 or more +% arguments, no macro can have more than 256 arguments (else error). +% +% In case that there are 10 or more arguments we parse again the arguments +% list to set new definitions for the \macarg.BLAH macros corresponding to +% each BLAH argument. It was anyhow needed to parse already once this list +% in order to count the arguments, and as macros with at most 9 arguments +% are by far more frequent than macro with 10 or more arguments, defining +% twice the \macarg.BLAH macros does not cost too much processing power. +\def\parsemmanyargdef@@#1,{% + \if#1;\let\next=\relax + \else + \let\next=\parsemmanyargdef@@ + \edef\tempb{\eatspaces{#1}}% + \expandafter\def\expandafter\tempa + \expandafter{\csname macarg.\tempb\endcsname}% + % Note that we need some extra \noexpand\noexpand, this is because we + % don't want \the to be expanded in the \parsermacbody as it uses an + % \xdef . + \expandafter\edef\tempa + {\noexpand\noexpand\noexpand\the\toks\the\paramno}% + \advance\paramno by 1\relax + \fi\next} + + +\let\endargs@\relax +\let\nil@\relax +\def\nilm@{\nil@}% +\long\def\nillm@{\nil@}% + +% This macro is expanded during the Texinfo macro expansion, not during its +% definition. It gets all the arguments' values and assigns them to macros +% macarg.ARGNAME +% +% #1 is the macro name +% #2 is the list of argument names +% #3 is the list of argument values +\def\getargvals@#1#2#3{% + \def\macargdeflist@{}% + \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. + \def\paramlist{#2,\nil@}% + \def\macroname{#1}% + \begingroup + \macroargctxt + \def\argvaluelist{#3,\nil@}% + \def\@tempa{#3}% + \ifx\@tempa\empty + \setemptyargvalues@ + \else + \getargvals@@ + \fi +} +\def\getargvals@@{% + \ifx\paramlist\nilm@ + % Some sanity check needed here that \argvaluelist is also empty. + \ifx\argvaluelist\nillm@ + \else + \errhelp = \EMsimple + \errmessage{Too many arguments in macro `\macroname'!}% + \fi + \let\next\macargexpandinbody@ + \else + \ifx\argvaluelist\nillm@ + % No more arguments values passed to macro. Set remaining named-arg + % macros to empty. + \let\next\setemptyargvalues@ + \else + % pop current arg name into \@tempb + \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% + \expandafter\@tempa\expandafter{\paramlist}% + % pop current argument value into \@tempc + \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% + \expandafter\@tempa\expandafter{\argvaluelist}% + % Here \@tempb is the current arg name and \@tempc is the current arg value. + % First place the new argument macro definition into \@tempd + \expandafter\macname\expandafter{\@tempc}% + \expandafter\let\csname macarg.\@tempb\endcsname\relax + \expandafter\def\expandafter\@tempe\expandafter{% + \csname macarg.\@tempb\endcsname}% + \edef\@tempd{\long\def\@tempe{\the\macname}}% + \push@\@tempd\macargdeflist@ + \let\next\getargvals@@ + \fi + \fi + \next +} + +\def\push@#1#2{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter#2% + \expandafter\expandafter\expandafter{% + \expandafter#1#2}% +} + +% Replace arguments by their values in the macro body, and place the result +% in macro \@tempa. +% +\def\macvalstoargs@{% + % To do this we use the property that token registers that are \the'ed + % within an \edef expand only once. So we are going to place all argument + % values into respective token registers. + % + % First we save the token context, and initialize argument numbering. + \begingroup + \paramno0\relax + % Then, for each argument number #N, we place the corresponding argument + % value into a new token list register \toks#N + \expandafter\putargsintokens@\saveparamlist@,;,% + % Then, we expand the body so that argument are replaced by their + % values. The trick for values not to be expanded themselves is that they + % are within tokens and that tokens expand only once in an \edef . + \edef\@tempc{\csname mac.\macroname .body\endcsname}% + % Now we restore the token stack pointer to free the token list registers + % which we have used, but we make sure that expanded body is saved after + % group. + \expandafter + \endgroup + \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% + } + +% Define the named-macro outside of this group and then close this group. +% +\def\macargexpandinbody@{% + \expandafter + \endgroup + \macargdeflist@ + % First the replace in body the macro arguments by their values, the result + % is in \@tempa . + \macvalstoargs@ + % Then we point at the \norecurse or \gobble (for recursive) macro value + % with \@tempb . + \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname + % Depending on whether it is recursive or not, we need some tailing + % \egroup . + \ifx\@tempb\gobble + \let\@tempc\relax + \else + \let\@tempc\egroup + \fi + % And now we do the real job: + \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% + \@tempd +} + +\def\putargsintokens@#1,{% + \if#1;\let\next\relax + \else + \let\next\putargsintokens@ + % First we allocate the new token list register, and give it a temporary + % alias \@tempb . + \toksdef\@tempb\the\paramno + % Then we place the argument value into that token list register. + \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname + \expandafter\@tempb\expandafter{\@tempa}% + \advance\paramno by 1\relax + \fi + \next +} + +% Trailing missing arguments are set to empty. +% +\def\setemptyargvalues@{% + \ifx\paramlist\nilm@ + \let\next\macargexpandinbody@ + \else + \expandafter\setemptyargvaluesparser@\paramlist\endargs@ + \let\next\setemptyargvalues@ + \fi + \next +} + +\def\setemptyargvaluesparser@#1,#2\endargs@{% + \expandafter\def\expandafter\@tempa\expandafter{% + \expandafter\def\csname macarg.#1\endcsname{}}% + \push@\@tempa\macargdeflist@ + \def\paramlist{#2}% +} + +% #1 is the element target macro +% #2 is the list macro +% #3,#4\endargs@ is the list value +\def\pop@#1#2#3,#4\endargs@{% + \def#1{#3}% + \def#2{#4}% +} +\long\def\longpop@#1#2#3,#4\endargs@{% + \long\def#1{#3}% + \long\def#2{#4}% +} + + +%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%% + + + +% Remove following spaces at the expansion stage. +% This works because spaces are discarded before each argument when TeX is +% getting the arguments for a macro. +% This must not be immediately followed by a }. +\long\def\gobblespaces#1{#1} + +% This defines a Texinfo @macro or @rmacro, called by \parsemacbody. +% \macrobody has the body of the macro in it, with placeholders for +% its parameters, looking like "\processmacroarg{\hash 1}". +% \paramno is the number of parameters +% \paramlist is a TeX parameter text, e.g. "#1,#2,#3," +% There are eight cases: recursive and nonrecursive macros of zero, one, +% up to nine, and many arguments. +% \xdef is used so that macro definitions will survive the file +% they're defined in: @include reads the file inside a group. +% +\def\defmacro{% + \let\hash=##% convert placeholders to macro parameter chars + \ifnum\paramno=1 + \def\processmacroarg{\gobblespaces}% + % This removes the pair of braces around the argument. We don't + % use \eatspaces, because this can cause ends of lines to be lost + % when the argument to \eatspaces is read, leading to line-based + % commands like "@itemize" not being read correctly. + \else + \def\processmacroarg{\xprocessmacroarg}% + \let\xprocessmacroarg\relax + \fi + \ifrecursive %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\scanmacro{\macrobody}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname{% + \noexpand\gobblespaces##1\empty}% + % The \empty is for \gobblespaces in case #1 is empty + }% + \expandafter\xdef\csname\the\macname @@@@\endcsname##1{% + \egroup\noexpand\scanmacro{\macrobody}}% + \else + \ifnum\paramno<10\relax % at most 9 + % See non-recursive section below for comments + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\expandafter + \noexpand\macroargctxt + \noexpand\expandafter + \expandafter\noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \noexpand\passargtomacro + \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname @@@@\endcsname\paramlist{% + \egroup\noexpand\scanmacro{\macrobody}}% + \else % 10 or more + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble + \fi + \fi + \else %%%%%%%%%%%%%%%%%%%%%% Non-recursive %%%%%%%%%%%%%%%%%%%%%%%%%% + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\scanmacro{\macrobody}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname{% + \noexpand\gobblespaces##1\empty}% + % The \empty is for \gobblespaces in case #1 is empty + }% + \expandafter\xdef\csname\the\macname @@@@\endcsname##1{% + \egroup + \noexpand\scanmacro{\macrobody}% + }% + \else % at most 9 + \ifnum\paramno<10\relax + % @MACNAME sets the context for reading the macro argument + % @MACNAME@@ gets the argument, processes backslashes and appends a + % comma. + % @MACNAME@@@ removes braces surrounding the argument list. + % @MACNAME@@@@ scans the macro body with arguments substituted. + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\expandafter % This \expandafter skip any spaces after the + \noexpand\macroargctxt % macro before we change the catcode of space. + \noexpand\expandafter + \expandafter\noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \noexpand\passargtomacro + \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname @@@@\endcsname\paramlist{% + \egroup\noexpand\scanmacro{\macrobody}}% + \else % 10 or more: + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse + \fi + \fi + \fi} + +\catcode `\@\texiatcatcode\relax % end private-to-Texinfo catcodes + +\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +{\catcode`\@=0 \catcode`\\=13 % We need to manipulate \ so use @ as escape +@catcode`@_=11 % private names +@catcode`@!=11 % used as argument separator + +% \passargtomacro#1#2 - +% Call #1 with a list of tokens #2, with any doubled backslashes in #2 +% compressed to one. +% +% This implementation works by expansion, and not execution (so we cannot use +% \def or similar). This reduces the risk of this failing in contexts where +% complete expansion is done with no execution (for example, in writing out to +% an auxiliary file for an index entry). +% +% State is kept in the input stream: the argument passed to +% @look_ahead, @gobble_and_check_finish and @add_segment is +% +% THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN (... rest of input) +% +% where: +% THE_MACRO - name of the macro we want to call +% ARG_RESULT - argument list we build to pass to that macro +% PENDING_BS - either a backslash or nothing +% NEXT_TOKEN - used to look ahead in the input stream to see what's coming next + +@gdef@passargtomacro#1#2{% + @add_segment #1!{}@relax#2\@_finish\% +} +@gdef@_finish{@_finishx} @global@let@_finishx@relax + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 used to look ahead +% +% If the next token is not a backslash, process the rest of the argument; +% otherwise, remove the next token. +@gdef@look_ahead#1!#2#3#4{% + @ifx#4\% + @expandafter@gobble_and_check_finish + @else + @expandafter@add_segment + @fi#1!{#2}#4#4% +} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 should be a backslash, which is gobbled. +% #5 looks ahead +% +% Double backslash found. Add a single backslash, and look ahead. +@gdef@gobble_and_check_finish#1!#2#3#4#5{% + @add_segment#1\!{}#5#5% +} + +@gdef@is_fi{@fi} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 is input stream until next backslash +% +% Input stream is either at the start of the argument, or just after a +% backslash sequence, either a lone backslash, or a doubled backslash. +% NEXT_TOKEN contains the first token in the input stream: if it is \finish, +% finish; otherwise, append to ARG_RESULT the segment of the argument up until +% the next backslash. PENDING_BACKSLASH contains a backslash to represent +% a backslash just before the start of the input stream that has not been +% added to ARG_RESULT. +@gdef@add_segment#1!#2#3#4\{% +@ifx#3@_finish + @call_the_macro#1!% +@else + % append the pending backslash to the result, followed by the next segment + @expandafter@is_fi@look_ahead#1#2#4!{\}@fi + % this @fi is discarded by @look_ahead. + % we can't get rid of it with \expandafter because we don't know how + % long #4 is. +} + +% #1 - THE_MACRO +% #2 - ARG_RESULT +% #3 discards the res of the conditional in @add_segment, and @is_fi ends the +% conditional. +@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}} + +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \braceorline MAC is used for a one-argument macro MAC. It checks +% whether the next non-whitespace character is a {. It sets the context +% for reading the argument (slightly different in the two cases). Then, +% to read the argument, in the whole-line case, it then calls the regular +% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC. +% +\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup + \macroargctxt + \expandafter\passargtomacro + \else + \macrolineargctxt\expandafter\parsearg + \fi \macnamexxx} + + +% @alias. +% We need some trickery to remove the optional spaces around the equal +% sign. Make them active and then expand them all to nothing. +% +\def\alias{\parseargusing\obeyspaces\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{% + {% + \expandafter\let\obeyedspace=\empty + \addtomacrolist{#1}% + \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% + }% + \next +} + + +\message{cross references,} + +\newwrite\auxfile +\newif\ifhavexrefs % True if xref values are known. +\newif\ifwarnedxrefs % True if we warned once that they aren't known. + +% @inforef is relatively simple. +\def\inforef #1{\inforefzzz #1,,,,**} +\def\inforefzzz #1,#2,#3,#4**{% + \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, + node \samp{\ignorespaces#1{}}} + +% @node's only job in TeX is to define \lastnode, which is used in +% cross-references. The @node line might or might not have commas, and +% might or might not have spaces before the first comma, like: +% @node foo , bar , ... +% We don't want such trailing spaces in the node name. +% +\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} +% +% also remove a trailing comma, in case of something like this: +% @node Help-Cross, , , Cross-refs +\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} + +\let\nwnode=\node +\let\lastnode=\empty + +% Write a cross-reference definition for the current node. #1 is the +% type (Ynumbered, Yappendix, Ynothing). +% +\def\donoderef#1{% + \ifx\lastnode\empty\else + \setref{\lastnode}{#1}% + \global\let\lastnode=\empty + \fi +} + +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +% +\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + +% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an +% anchor), which consists of three parts: +% 1) NAME-title - the current sectioning name taken from \lastsection, +% or the anchor name. +% 2) NAME-snt - section number and type, passed as the SNT arg, or +% empty for anchors. +% 3) NAME-pg - the page number. +% +% This is called from \donoderef, \anchor, and \dofloat. In the case of +% floats, there is an additional part, which is not written here: +% 4) NAME-lof - the text as it should appear in a @listoffloats. +% +\def\setref#1#2{% + \pdfmkdest{#1}% + \iflinks + {% + \requireauxfile + \atdummies % preserve commands, but don't expand them + \edef\writexrdef##1##2{% + \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef + ##1}{##2}}% these are parameters of \writexrdef + }% + \toks0 = \expandafter{\lastsection}% + \immediate \writexrdef{title}{\the\toks0 }% + \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. + \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout + }% + \fi +} + +% @xrefautosectiontitle on|off says whether @section(ing) names are used +% automatically in xrefs, if the third arg is not explicitly specified. +% This was provided as a "secret" @set xref-automatic-section-title +% variable, now it's official. +% +\parseargdef\xrefautomaticsectiontitle{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', + must be on|off}% + \fi\fi +} + +% +% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is +% the node name, #2 the name of the Info cross-reference, #3 the printed +% node name, #4 the name of the Info file, #5 the name of the printed +% manual. All but the node name can be omitted. +% +\def\pxref{\putwordsee{} \xrefXX} +\def\xref{\putwordSee{} \xrefXX} +\def\ref{\xrefXX} + +\def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX} +\def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]} +% +\newbox\toprefbox +\newbox\printedrefnamebox +\newbox\infofilenamebox +\newbox\printedmanualbox +% +\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup + \unsepspaces + % + % Get args without leading/trailing spaces. + \def\printedrefname{\ignorespaces #3}% + \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% + % + \def\infofilename{\ignorespaces #4}% + \setbox\infofilenamebox = \hbox{\infofilename\unskip}% + % + \def\printedmanual{\ignorespaces #5}% + \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% + % + % If the printed reference name (arg #3) was not explicitly given in + % the @xref, figure out what we want to use. + \ifdim \wd\printedrefnamebox = 0pt + % No printed node name was explicitly given. + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax + % Not auto section-title: use node name inside the square brackets. + \def\printedrefname{\ignorespaces #1}% + \else + % Auto section-title: use chapter/section title inside + % the square brackets if we have it. + \ifdim \wd\printedmanualbox > 0pt + % It is in another manual, so we don't have it; use node name. + \def\printedrefname{\ignorespaces #1}% + \else + \ifhavexrefs + % We (should) know the real title if we have the xref values. + \def\printedrefname{\refx{#1-title}{}}% + \else + % Otherwise just copy the Info node name. + \def\printedrefname{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % + % Make link in pdf output. + \ifpdf + {\indexnofonts + \turnoffactive + \makevalueexpandable + % This expands tokens, so do it after making catcode changes, so _ + % etc. don't get their TeX definitions. This ignores all spaces in + % #4, including (wrongly) those in the middle of the filename. + \getfilename{#4}% + % + % This (wrongly) does not take account of leading or trailing + % spaces in #1, which should be ignored. + \edef\pdfxrefdest{#1}% + \ifx\pdfxrefdest\empty + \def\pdfxrefdest{Top}% no empty targets + \else + \txiescapepdf\pdfxrefdest % escape PDF special chars + \fi + % + \leavevmode + \startlink attr{/Border [0 0 0]}% + \ifnum\filenamelength>0 + goto file{\the\filename.pdf} name{\pdfxrefdest}% + \else + goto name{\pdfmkpgn{\pdfxrefdest}}% + \fi + }% + \setcolor{\linkcolor}% + \fi + % + % Float references are printed completely differently: "Figure 1.2" + % instead of "[somenode], p.3". We distinguish them by the + % LABEL-title being set to a magic string. + {% + % Have to otherify everything special to allow the \csname to + % include an _ in the xref name, etc. + \indexnofonts + \turnoffactive + \expandafter\global\expandafter\let\expandafter\Xthisreftitle + \csname XR#1-title\endcsname + }% + \iffloat\Xthisreftitle + % If the user specified the print name (third arg) to the ref, + % print it instead of our usual "Figure 1.2". + \ifdim\wd\printedrefnamebox = 0pt + \refx{#1-snt}{}% + \else + \printedrefname + \fi + % + % If the user also gave the printed manual name (fifth arg), append + % "in MANUALNAME". + \ifdim \wd\printedmanualbox > 0pt + \space \putwordin{} \cite{\printedmanual}% + \fi + \else + % node/anchor (non-float) references. + % + % If we use \unhbox to print the node names, TeX does not insert + % empty discretionaries after hyphens, which means that it will not + % find a line break at a hyphen in a node names. Since some manuals + % are best written with fairly long node names, containing hyphens, + % this is a loss. Therefore, we give the text of the node name + % again, so it is as if TeX is seeing it for the first time. + % + \ifdim \wd\printedmanualbox > 0pt + % Cross-manual reference with a printed manual name. + % + \crossmanualxref{\cite{\printedmanual\unskip}}% + % + \else\ifdim \wd\infofilenamebox > 0pt + % Cross-manual reference with only an info filename (arg 4), no + % printed manual name (arg 5). This is essentially the same as + % the case above; we output the filename, since we have nothing else. + % + \crossmanualxref{\code{\infofilename\unskip}}% + % + \else + % Reference within this manual. + % + % _ (for example) has to be the character _ for the purposes of the + % control sequence corresponding to the node, but it has to expand + % into the usual \leavevmode...\vrule stuff for purposes of + % printing. So we \turnoffactive for the \refx-snt, back on for the + % printing, back off for the \refx-pg. + {\turnoffactive + % Only output a following space if the -snt ref is nonempty; for + % @unnumbered and @anchor, it won't be. + \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% + \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi + }% + % output the `[mynode]' via the macro below so it can be overridden. + \xrefprintnodename\printedrefname + % + % But we always want a comma and a space: + ,\space + % + % output the `page 3'. + \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + \ifx,\tokenafterxref + \else\ifx.\tokenafterxref + \else\ifx;\tokenafterxref + \else\ifx)\tokenafterxref + \else,% add a , if xref not followed by punctuation + \fi\fi\fi\fi + \fi\fi + \fi + \endlink +\endgroup} + +% Output a cross-manual xref to #1. Used just above (twice). +% +% Only include the text "Section ``foo'' in" if the foo is neither +% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply +% "see The Foo Manual", the idea being to refer to the whole manual. +% +% But, this being TeX, we can't easily compare our node name against the +% string "Top" while ignoring the possible spaces before and after in +% the input. By adding the arbitrary 7sp below, we make it much less +% likely that a real node name would have the same width as "Top" (e.g., +% in a monospaced font). Hopefully it will never happen in practice. +% +% For the same basic reason, we retypeset the "Top" at every +% reference, since the current font is indeterminate. +% +\def\crossmanualxref#1{% + \setbox\toprefbox = \hbox{Top\kern7sp}% + \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% + \ifdim \wd2 > 7sp % nonempty? + \ifdim \wd2 = \wd\toprefbox \else % same as Top? + \putwordSection{} ``\printedrefname'' \putwordin{}\space + \fi + \fi + #1% +} + +% This macro is called from \xrefX for the `[nodename]' part of xref +% output. It's a separate macro only so it can be changed more easily, +% since square brackets don't work well in some documents. Particularly +% one that Bob is working on :). +% +\def\xrefprintnodename#1{[#1]} + +% Things referred to by \setref. +% +\def\Ynothing{} +\def\Yomitfromtoc{} +\def\Ynumbered{% + \ifnum\secno=0 + \putwordChapter@tie \the\chapno + \else \ifnum\subsecno=0 + \putwordSection@tie \the\chapno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno + \else + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} +\def\Yappendix{% + \ifnum\secno=0 + \putwordAppendix@tie @char\the\appendixno{}% + \else \ifnum\subsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno + \else + \putwordSection@tie + @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} + +% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. +% If its value is nonempty, SUFFIX is output afterward. +% +\def\refx#1#2{% + \requireauxfile + {% + \indexnofonts + \otherbackslash + \expandafter\global\expandafter\let\expandafter\thisrefX + \csname XR#1\endcsname + }% + \ifx\thisrefX\relax + % If not defined, say something at least. + \angleleft un\-de\-fined\angleright + \iflinks + \ifhavexrefs + {\toks0 = {#1}% avoid expansion of possibly-complex value + \message{\linenumber Undefined cross reference `\the\toks0'.}}% + \else + \ifwarnedxrefs\else + \global\warnedxrefstrue + \message{Cross reference values unknown; you must run TeX again.}% + \fi + \fi + \fi + \else + % It's defined, so just use it. + \thisrefX + \fi + #2% Output the suffix in any case. +} + +% This is the macro invoked by entries in the aux file. Usually it's +% just a \def (we prepend XR to the control sequence name to avoid +% collisions). But if this is a float type, we have more work to do. +% +\def\xrdef#1#2{% + {% The node name might contain 8-bit characters, which in our current + % implementation are changed to commands like @'e. Don't let these + % mess up the control sequence name. + \indexnofonts + \turnoffactive + \xdef\safexrefname{#1}% + }% + % + \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref + % + % Was that xref control sequence that we just defined for a float? + \expandafter\iffloat\csname XR\safexrefname\endcsname + % it was a float, and we have the (safe) float type in \iffloattype. + \expandafter\let\expandafter\floatlist + \csname floatlist\iffloattype\endcsname + % + % Is this the first time we've seen this float type? + \expandafter\ifx\floatlist\relax + \toks0 = {\do}% yes, so just \do + \else + % had it before, so preserve previous elements in list. + \toks0 = \expandafter{\floatlist\do}% + \fi + % + % Remember this xref in the control sequence \floatlistFLOATTYPE, + % for later use in \listoffloats. + \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 + {\safexrefname}}% + \fi +} + +% If working on a large document in chapters, it is convenient to +% be able to disable indexing, cross-referencing, and contents, for test runs. +% This is done with @novalidate at the beginning of the file. +% +\newif\iflinks \linkstrue % by default we want the aux files. +\let\novalidate = \linksfalse + +% Used when writing to the aux file, or when using data from it. +\def\requireauxfile{% + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi + \global\let\requireauxfile=\relax % Only do this once. +} + +% Read the last existing aux file, if any. No error if none exists. +% +\def\tryauxfile{% + \openin 1 \jobname.aux + \ifeof 1 \else + \readdatafile{aux}% + \global\havexrefstrue + \fi + \closein 1 +} + +\def\setupdatafile{% + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. + % in xref tags, i.e., node names. But since ^^e4 notation isn't + % supported in the main text, it doesn't seem desirable. Furthermore, + % that is not enough: for node names that actually contain a ^ + % character, we would end up writing a line like this: 'xrdef {'hat + % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first + % argument, and \hat is not an expandable control sequence. It could + % all be worked out, but why? Either we support ^^ or we don't. + % + % The other change necessary for this was to define \auxhat: + % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter + % and then to call \auxhat in \setq. + % + \catcode`\^=\other + % + % Special characters. Should be turned off anyway, but... + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + \catcode`\%=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % + % This is to support \ in node names and titles, since the \ + % characters end up in a \csname. It's easier than + % leaving it active and making its active definition an actual \ + % character. What I don't understand is why it works in the *value* + % of the xrdef. Seems like it should be a catcode12 \, and that + % should not typeset properly. But it works, so I'm moving on for + % now. --karl, 15jan04. + \catcode`\\=\other + % + % Make the characters 128-255 be printing characters. + {\setnonasciicharscatcodenonglobal\other}% + % + % @ is our escape character in .aux files, and we need braces. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\@=0 +} + +\def\readdatafile#1{% +\begingroup + \setupdatafile + \input\jobname.#1 +\endgroup} + + +\message{insertions,} +% including footnotes. + +\newcount \footnoteno + +% The trailing space in the following definition for supereject is +% vital for proper filling; pages come out unaligned when you do a +% pagealignmacro call if that space before the closing brace is +% removed. (Generally, numeric constants should always be followed by a +% space to prevent strange expansion errors.) +\def\supereject{\par\penalty -20000\footnoteno =0 } + +% @footnotestyle is meaningful for Info output only. +\let\footnotestyle=\comment + +{\catcode `\@=11 +% +% Auto-number footnotes. Otherwise like plain. +\gdef\footnote{% + \global\advance\footnoteno by \@ne + \edef\thisfootno{$^{\the\footnoteno}$}% + % + % In case the footnote comes at the end of a sentence, preserve the + % extra spacing after we do the footnote number. + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \dofootnote +}% + +% Don't bother with the trickery in plain.tex to not require the +% footnote text as a parameter. Our footnotes don't need to be so general. +% +% Oh yes, they do; otherwise, @ifset (and anything else that uses +% \parseargline) fails inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\gdef\dofootnote{% + \insert\footins\bgroup + % + % Nested footnotes are not supported in TeX, that would take a lot + % more work. (\startsavinginserts does not suffice.) + \let\footnote=\errfootnotenest + % + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. + \hsize=\pagewidth + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip + \rightskip\z@skip + \spaceskip\z@skip + \xspaceskip\z@skip + \parindent\defaultparindent + % + \smallfonts \rm + % + % Because we use hanging indentation in footnotes, a @noindent appears + % to exdent this text, so make it be a no-op. makeinfo does not use + % hanging indentation so @noindent can still be needed within footnote + % text after an @example or the like (not that this is good style). + \let\noindent = \relax + % + % Hang the footnote text off the number. Use \everypar in case the + % footnote extends for more than one paragraph. + \everypar = {\hang}% + \textindent{\thisfootno}% + % + % Don't crash into the line above the footnote text. Since this + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut + % + % Invoke rest of plain TeX footnote routine. + \futurelet\next\fo@t +} +}%end \catcode `\@=11 + +\def\errfootnotenest{% + \errhelp=\EMsimple + \errmessage{Nested footnotes not supported in texinfo.tex, + even though they work in makeinfo; sorry} +} + +\def\errfootnoteheading{% + \errhelp=\EMsimple + \errmessage{Footnotes in chapters, sections, etc., are not supported} +} + +% In case a @footnote appears in a vbox, save the footnote text and create +% the real \insert just after the vbox finished. Otherwise, the insertion +% would be lost. +% Similarly, if a @footnote appears inside an alignment, save the footnote +% text to a box and make the \insert when a row of the table is finished. +% And the same can be done for other insert classes. --kasal, 16nov03. +% +% Replace the \insert primitive by a cheating macro. +% Deeper inside, just make sure that the saved insertions are not spilled +% out prematurely. +% +\def\startsavinginserts{% + \ifx \insert\ptexinsert + \let\insert\saveinsert + \else + \let\checkinserts\relax + \fi +} + +% This \insert replacement works for both \insert\footins{foo} and +% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. +% +\def\saveinsert#1{% + \edef\next{\noexpand\savetobox \makeSAVEname#1}% + \afterassignment\next + % swallow the left brace + \let\temp = +} +\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} +\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} + +\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} + +\def\placesaveins#1{% + \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname + {\box#1}% +} + +% eat @SAVE -- beware, all of them have catcode \other: +{ + \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) + \gdef\gobblesave @SAVE{} +} + +% initialization: +\def\newsaveins #1{% + \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% + \next +} +\def\newsaveinsX #1{% + \csname newbox\endcsname #1% + \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts + \checksaveins #1}% +} + +% initialize: +\let\checkinserts\empty +\newsaveins\footins +\newsaveins\margin + + +% @image. We use the macros from epsf.tex to support this. +% If epsf.tex is not installed and @image is used, we complain. +% +% Check for and read epsf.tex up front. If we read it only at @image +% time, we might be inside a group, and then its definitions would get +% undone and the next image would fail. +\openin 1 = epsf.tex +\ifeof 1 \else + % Do not bother showing banner with epsf.tex v2.7k (available in + % doc/epsf.tex and on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex +\fi +\closein 1 +% +% We will only complain once about lack of epsf.tex. +\newif\ifwarnednoepsf +\newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from ftp://tug.org/tex/epsf.tex.} +% +\def\image#1{% + \ifx\epsfbox\thisisundefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,,,\finish + \fi +} +% +% Arguments to @image: +% #1 is (mandatory) image filename; we tack on .eps extension. +% #2 is (optional) width, #3 is (optional) height. +% #4 is (ignored optional) html alt text. +% #5 is (ignored optional) extension. +% #6 is just the usual extra ignored arg for parsing stuff. +\newif\ifimagevmode +\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup + \catcode`\^^M = 5 % in case we're inside an example + \normalturnoffactive % allow _ et al. in names + \def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro + % If the image is by itself, center it. + \ifvmode + \imagevmodetrue + \else \ifx\centersub\centerV + % for @center @image, we need a vbox so we can have our vertical space + \imagevmodetrue + \vbox\bgroup % vbox has better behavior than vtop herev + \fi\fi + % + \ifimagevmode + \nobreak\medskip + % Usually we'll have text after the image which will insert + % \parskip glue, so insert it here too to equalize the space + % above and below. + \nobreak\vskip\parskip + \nobreak + \fi + % + % Leave vertical mode so that indentation from an enclosing + % environment such as @quotation is respected. + % However, if we're at the top level, we don't want the + % normal paragraph indentation. + % On the other hand, if we are in the case of @center @image, we don't + % want to start a paragraph, which will create a hsize-width box and + % eradicate the centering. + \ifx\centersub\centerV\else \noindent \fi + % + % Output the image. + \ifpdf + \dopdfimage{#1}{#2}{#3}% + \else + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% + \fi + % + \ifimagevmode + \medskip % space after a standalone image + \fi + \ifx\centersub\centerV \egroup \fi +\endgroup} + + +% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, +% etc. We don't actually implement floating yet, we always include the +% float "here". But it seemed the best name for the future. +% +\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} + +% There may be a space before second and/or third parameter; delete it. +\def\eatcommaspace#1, {#1,} + +% #1 is the optional FLOATTYPE, the text label for this float, typically +% "Figure", "Table", "Example", etc. Can't contain commas. If omitted, +% this float will not be numbered and cannot be referred to. +% +% #2 is the optional xref label. Also must be present for the float to +% be referable. +% +% #3 is the optional positioning argument; for now, it is ignored. It +% will somehow specify the positions allowed to float to (here, top, bottom). +% +% We keep a separate counter for each FLOATTYPE, which we reset at each +% chapter-level command. +\let\resetallfloatnos=\empty +% +\def\dofloat#1,#2,#3,#4\finish{% + \let\thiscaption=\empty + \let\thisshortcaption=\empty + % + % don't lose footnotes inside @float. + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % + \startsavinginserts + % + % We can't be used inside a paragraph. + \par + % + \vtop\bgroup + \def\floattype{#1}% + \def\floatlabel{#2}% + \def\floatloc{#3}% we do nothing with this yet. + % + \ifx\floattype\empty + \let\safefloattype=\empty + \else + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + \fi + % + % If label is given but no type, we handle that as the empty type. + \ifx\floatlabel\empty \else + % We want each FLOATTYPE to be numbered separately (Figure 1, + % Table 1, Figure 2, ...). (And if no label, no number.) + % + \expandafter\getfloatno\csname\safefloattype floatno\endcsname + \global\advance\floatno by 1 + % + {% + % This magic value for \lastsection is output by \setref as the + % XREFLABEL-title value. \xrefX uses it to distinguish float + % labels (which have a completely different output format) from + % node and anchor labels. And \xrdef uses it to construct the + % lists of floats. + % + \edef\lastsection{\floatmagic=\safefloattype}% + \setref{\floatlabel}{Yfloat}% + }% + \fi + % + % start with \parskip glue, I guess. + \vskip\parskip + % + % Don't suppress indentation if a float happens to start a section. + \restorefirstparagraphindent +} + +% we have these possibilities: +% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap +% @float Foo,lbl & no caption: Foo 1.1 +% @float Foo & @caption{Cap}: Foo: Cap +% @float Foo & no caption: Foo +% @float ,lbl & Caption{Cap}: 1.1: Cap +% @float ,lbl & no caption: 1.1 +% @float & @caption{Cap}: Cap +% @float & no caption: +% +\def\Efloat{% + \let\floatident = \empty + % + % In all cases, if we have a float type, it comes first. + \ifx\floattype\empty \else \def\floatident{\floattype}\fi + % + % If we have an xref label, the number comes next. + \ifx\floatlabel\empty \else + \ifx\floattype\empty \else % if also had float type, need tie first. + \appendtomacro\floatident{\tie}% + \fi + % the number. + \appendtomacro\floatident{\chaplevelprefix\the\floatno}% + \fi + % + % Start the printed caption with what we've constructed in + % \floatident, but keep it separate; we need \floatident again. + \let\captionline = \floatident + % + \ifx\thiscaption\empty \else + \ifx\floatident\empty \else + \appendtomacro\captionline{: }% had ident, so need a colon between + \fi + % + % caption text. + \appendtomacro\captionline{\scanexp\thiscaption}% + \fi + % + % If we have anything to print, print it, with space before. + % Eventually this needs to become an \insert. + \ifx\captionline\empty \else + \vskip.5\parskip + \captionline + % + % Space below caption. + \vskip\parskip + \fi + % + % If have an xref label, write the list of floats info. Do this + % after the caption, to avoid chance of it being a breakpoint. + \ifx\floatlabel\empty \else + % Write the text that goes in the lof to the aux file as + % \floatlabel-lof. Besides \floatident, we include the short + % caption if specified, else the full caption if specified, else nothing. + {% + \requireauxfile + \atdummies + % + % since we read the caption text in the macro world, where ^^M + % is turned into a normal character, we have to scan it back, so + % we don't write the literal three characters "^^M" into the aux file. + \scanexp{% + \xdef\noexpand\gtemp{% + \ifx\thisshortcaption\empty + \thiscaption + \else + \thisshortcaption + \fi + }% + }% + \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident + \ifx\gtemp\empty \else : \gtemp \fi}}% + }% + \fi + \egroup % end of \vtop + % + % place the captured inserts + % + % BEWARE: when the floats start floating, we have to issue warning + % whenever an insert appears inside a float which could possibly + % float. --kasal, 26may04 + % + \checkinserts +} + +% Append the tokens #2 to the definition of macro #1, not expanding either. +% +\def\appendtomacro#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}% +} + +% @caption, @shortcaption +% +\def\caption{\docaption\thiscaption} +\def\shortcaption{\docaption\thisshortcaption} +\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} +\def\defcaption#1#2{\egroup \def#1{#2}} + +% The parameter is the control sequence identifying the counter we are +% going to use. Create it if it doesn't exist and assign it to \floatno. +\def\getfloatno#1{% + \ifx#1\relax + % Haven't seen this figure type before. + \csname newcount\endcsname #1% + % + % Remember to reset this floatno at the next chap. + \expandafter\gdef\expandafter\resetallfloatnos + \expandafter{\resetallfloatnos #1=0 }% + \fi + \let\floatno#1% +} + +% \setref calls this to get the XREFLABEL-snt value. We want an @xref +% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we +% first read the @float command. +% +\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% + +% Magic string used for the XREFLABEL-title value, so \xrefX can +% distinguish floats from other xref types. +\def\floatmagic{!!float!!} + +% #1 is the control sequence we are passed; we expand into a conditional +% which is true if #1 represents a float ref. That is, the magic +% \lastsection value which we \setref above. +% +\def\iffloat#1{\expandafter\doiffloat#1==\finish} +% +% #1 is (maybe) the \floatmagic string. If so, #2 will be the +% (safe) float type for this float. We set \iffloattype to #2. +% +\def\doiffloat#1=#2=#3\finish{% + \def\temp{#1}% + \def\iffloattype{#2}% + \ifx\temp\floatmagic +} + +% @listoffloats FLOATTYPE - print a list of floats like a table of contents. +% +\parseargdef\listoffloats{% + \def\floattype{#1}% floattype + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + % + % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. + \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax + \ifhavexrefs + % if the user said @listoffloats foo but never @float foo. + \message{\linenumber No `\safefloattype' floats to list.}% + \fi + \else + \begingroup + \leftskip=\tocindent % indent these entries like a toc + \let\do=\listoffloatsdo + \csname floatlist\safefloattype\endcsname + \endgroup + \fi +} + +% This is called on each entry in a list of floats. We're passed the +% xref label, in the form LABEL-title, which is how we save it in the +% aux file. We strip off the -title and look up \XRLABEL-lof, which +% has the text we're supposed to typeset here. +% +% Figures without xref labels will not be included in the list (since +% they won't appear in the aux file). +% +\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} +\def\listoffloatsdoentry#1-title\finish{{% + % Can't fully expand XR#1-lof because it can contain anything. Just + % pass the control sequence. On the other hand, XR#1-pg is just the + % page number, and we want to fully expand that so we can get a link + % in pdf output. + \toksA = \expandafter{\csname XR#1-lof\endcsname}% + % + % use the same \entry macro we use to generate the TOC and index. + \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% + \writeentry +}} + + +\message{localization,} + +% For single-language documents, @documentlanguage is usually given very +% early, just after @documentencoding. Single argument is the language +% (de) or locale (de_DE) abbreviation. +% +{ + \catcode`\_ = \active + \globaldefs=1 +\parseargdef\documentlanguage{% + \tex % read txi-??.tex file in plain TeX. + % Read the file by the name they passed if it exists. + \let_ = \normalunderscore % normal _ character for filename test + \openin 1 txi-#1.tex + \ifeof 1 + \documentlanguagetrywithoutunderscore #1_\finish + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 + \endgroup % end raw TeX +} +% +% If they passed de_DE, and txi-de_DE.tex doesn't exist, +% try txi-de.tex. +% +\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% + \openin 1 txi-#1.tex + \ifeof 1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 +} +}% end of special _ catcode +% +\newhelp\nolanghelp{The given language definition file cannot be found or +is empty. Maybe you need to install it? Putting it in the current +directory should work if nowhere else does.} + +% This macro is called from txi-??.tex files; the first argument is the +% \language name to set (without the "\lang@" prefix), the second and +% third args are \{left,right}hyphenmin. +% +% The language names to pass are determined when the format is built. +% See the etex.log file created at that time, e.g., +% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. +% +% With TeX Live 2008, etex now includes hyphenation patterns for all +% available languages. This means we can support hyphenation in +% Texinfo, at least to some extent. (This still doesn't solve the +% accented characters problem.) +% +\catcode`@=11 +\def\txisetlanguage#1#2#3{% + % do not set the language if the name is undefined in the current TeX. + \expandafter\ifx\csname lang@#1\endcsname \relax + \message{no patterns for #1}% + \else + \global\language = \csname lang@#1\endcsname + \fi + % but there is no harm in adjusting the hyphenmin values regardless. + \global\lefthyphenmin = #2\relax + \global\righthyphenmin = #3\relax +} + +% Helpers for encodings. +% Set the catcode of characters 128 through 255 to the specified number. +% +\def\setnonasciicharscatcode#1{% + \count255=128 + \loop\ifnum\count255<256 + \global\catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +\def\setnonasciicharscatcodenonglobal#1{% + \count255=128 + \loop\ifnum\count255<256 + \catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +% @documentencoding sets the definition of non-ASCII characters +% according to the specified encoding. +% +\def\documentencoding{\parseargusing\filenamecatcodes\documentencodingzzz} +\def\documentencodingzzz#1{% + % Encoding being declared for the document. + \def\declaredencoding{\csname #1.enc\endcsname}% + % + % Supported encodings: names converted to tokens in order to be able + % to compare them with \ifx. + \def\ascii{\csname US-ASCII.enc\endcsname}% + \def\latnine{\csname ISO-8859-15.enc\endcsname}% + \def\latone{\csname ISO-8859-1.enc\endcsname}% + \def\lattwo{\csname ISO-8859-2.enc\endcsname}% + \def\utfeight{\csname UTF-8.enc\endcsname}% + % + \ifx \declaredencoding \ascii + \asciichardefs + % + \else \ifx \declaredencoding \lattwo + \setnonasciicharscatcode\active + \lattwochardefs + % + \else \ifx \declaredencoding \latone + \setnonasciicharscatcode\active + \latonechardefs + % + \else \ifx \declaredencoding \latnine + \setnonasciicharscatcode\active + \latninechardefs + % + \else \ifx \declaredencoding \utfeight + \setnonasciicharscatcode\active + % since we already invoked \utfeightchardefs at the top level + % (below), do not re-invoke it, then our check for duplicated + % definitions triggers. Making non-ascii chars active is enough. + % + \else + \message{Ignoring unknown document encoding: #1.}% + % + \fi % utfeight + \fi % latnine + \fi % latone + \fi % lattwo + \fi % ascii +} + +% emacs-page +% A message to be logged when using a character that isn't available +% the default font encoding (OT1). +% +\def\missingcharmsg#1{\message{Character missing, sorry: #1.}} + +% Take account of \c (plain) vs. \, (Texinfo) difference. +\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} + +% First, make active non-ASCII characters in order for them to be +% correctly categorized when TeX reads the replacement text of +% macros containing the character definitions. +\setnonasciicharscatcode\active +% +% Latin1 (ISO-8859-1) character definitions. +\def\latonechardefs{% + \gdef^^a0{\tie} + \gdef^^a1{\exclamdown} + \gdef^^a2{{\tcfont \char162}} % cent + \gdef^^a3{\pounds} + \gdef^^a4{{\tcfont \char164}} % currency + \gdef^^a5{{\tcfont \char165}} % yen + \gdef^^a6{{\tcfont \char166}} % broken bar + \gdef^^a7{\S} + \gdef^^a8{\"{}} + \gdef^^a9{\copyright} + \gdef^^aa{\ordf} + \gdef^^ab{\guillemetleft} + \gdef^^ac{\ensuremath\lnot} + \gdef^^ad{\-} + \gdef^^ae{\registeredsymbol} + \gdef^^af{\={}} + % + \gdef^^b0{\textdegree} + \gdef^^b1{$\pm$} + \gdef^^b2{$^2$} + \gdef^^b3{$^3$} + \gdef^^b4{\'{}} + \gdef^^b5{$\mu$} + \gdef^^b6{\P} + \gdef^^b7{\ensuremath\cdot} + \gdef^^b8{\cedilla\ } + \gdef^^b9{$^1$} + \gdef^^ba{\ordm} + \gdef^^bb{\guillemetright} + \gdef^^bc{$1\over4$} + \gdef^^bd{$1\over2$} + \gdef^^be{$3\over4$} + \gdef^^bf{\questiondown} + % + \gdef^^c0{\`A} + \gdef^^c1{\'A} + \gdef^^c2{\^A} + \gdef^^c3{\~A} + \gdef^^c4{\"A} + \gdef^^c5{\ringaccent A} + \gdef^^c6{\AE} + \gdef^^c7{\cedilla C} + \gdef^^c8{\`E} + \gdef^^c9{\'E} + \gdef^^ca{\^E} + \gdef^^cb{\"E} + \gdef^^cc{\`I} + \gdef^^cd{\'I} + \gdef^^ce{\^I} + \gdef^^cf{\"I} + % + \gdef^^d0{\DH} + \gdef^^d1{\~N} + \gdef^^d2{\`O} + \gdef^^d3{\'O} + \gdef^^d4{\^O} + \gdef^^d5{\~O} + \gdef^^d6{\"O} + \gdef^^d7{$\times$} + \gdef^^d8{\O} + \gdef^^d9{\`U} + \gdef^^da{\'U} + \gdef^^db{\^U} + \gdef^^dc{\"U} + \gdef^^dd{\'Y} + \gdef^^de{\TH} + \gdef^^df{\ss} + % + \gdef^^e0{\`a} + \gdef^^e1{\'a} + \gdef^^e2{\^a} + \gdef^^e3{\~a} + \gdef^^e4{\"a} + \gdef^^e5{\ringaccent a} + \gdef^^e6{\ae} + \gdef^^e7{\cedilla c} + \gdef^^e8{\`e} + \gdef^^e9{\'e} + \gdef^^ea{\^e} + \gdef^^eb{\"e} + \gdef^^ec{\`{\dotless i}} + \gdef^^ed{\'{\dotless i}} + \gdef^^ee{\^{\dotless i}} + \gdef^^ef{\"{\dotless i}} + % + \gdef^^f0{\dh} + \gdef^^f1{\~n} + \gdef^^f2{\`o} + \gdef^^f3{\'o} + \gdef^^f4{\^o} + \gdef^^f5{\~o} + \gdef^^f6{\"o} + \gdef^^f7{$\div$} + \gdef^^f8{\o} + \gdef^^f9{\`u} + \gdef^^fa{\'u} + \gdef^^fb{\^u} + \gdef^^fc{\"u} + \gdef^^fd{\'y} + \gdef^^fe{\th} + \gdef^^ff{\"y} +} + +% Latin9 (ISO-8859-15) encoding character definitions. +\def\latninechardefs{% + % Encoding is almost identical to Latin1. + \latonechardefs + % + \gdef^^a4{\euro} + \gdef^^a6{\v S} + \gdef^^a8{\v s} + \gdef^^b4{\v Z} + \gdef^^b8{\v z} + \gdef^^bc{\OE} + \gdef^^bd{\oe} + \gdef^^be{\"Y} +} + +% Latin2 (ISO-8859-2) character definitions. +\def\lattwochardefs{% + \gdef^^a0{\tie} + \gdef^^a1{\ogonek{A}} + \gdef^^a2{\u{}} + \gdef^^a3{\L} + \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdef^^a5{\v L} + \gdef^^a6{\'S} + \gdef^^a7{\S} + \gdef^^a8{\"{}} + \gdef^^a9{\v S} + \gdef^^aa{\cedilla S} + \gdef^^ab{\v T} + \gdef^^ac{\'Z} + \gdef^^ad{\-} + \gdef^^ae{\v Z} + \gdef^^af{\dotaccent Z} + % + \gdef^^b0{\textdegree} + \gdef^^b1{\ogonek{a}} + \gdef^^b2{\ogonek{ }} + \gdef^^b3{\l} + \gdef^^b4{\'{}} + \gdef^^b5{\v l} + \gdef^^b6{\'s} + \gdef^^b7{\v{}} + \gdef^^b8{\cedilla\ } + \gdef^^b9{\v s} + \gdef^^ba{\cedilla s} + \gdef^^bb{\v t} + \gdef^^bc{\'z} + \gdef^^bd{\H{}} + \gdef^^be{\v z} + \gdef^^bf{\dotaccent z} + % + \gdef^^c0{\'R} + \gdef^^c1{\'A} + \gdef^^c2{\^A} + \gdef^^c3{\u A} + \gdef^^c4{\"A} + \gdef^^c5{\'L} + \gdef^^c6{\'C} + \gdef^^c7{\cedilla C} + \gdef^^c8{\v C} + \gdef^^c9{\'E} + \gdef^^ca{\ogonek{E}} + \gdef^^cb{\"E} + \gdef^^cc{\v E} + \gdef^^cd{\'I} + \gdef^^ce{\^I} + \gdef^^cf{\v D} + % + \gdef^^d0{\DH} + \gdef^^d1{\'N} + \gdef^^d2{\v N} + \gdef^^d3{\'O} + \gdef^^d4{\^O} + \gdef^^d5{\H O} + \gdef^^d6{\"O} + \gdef^^d7{$\times$} + \gdef^^d8{\v R} + \gdef^^d9{\ringaccent U} + \gdef^^da{\'U} + \gdef^^db{\H U} + \gdef^^dc{\"U} + \gdef^^dd{\'Y} + \gdef^^de{\cedilla T} + \gdef^^df{\ss} + % + \gdef^^e0{\'r} + \gdef^^e1{\'a} + \gdef^^e2{\^a} + \gdef^^e3{\u a} + \gdef^^e4{\"a} + \gdef^^e5{\'l} + \gdef^^e6{\'c} + \gdef^^e7{\cedilla c} + \gdef^^e8{\v c} + \gdef^^e9{\'e} + \gdef^^ea{\ogonek{e}} + \gdef^^eb{\"e} + \gdef^^ec{\v e} + \gdef^^ed{\'{\dotless{i}}} + \gdef^^ee{\^{\dotless{i}}} + \gdef^^ef{\v d} + % + \gdef^^f0{\dh} + \gdef^^f1{\'n} + \gdef^^f2{\v n} + \gdef^^f3{\'o} + \gdef^^f4{\^o} + \gdef^^f5{\H o} + \gdef^^f6{\"o} + \gdef^^f7{$\div$} + \gdef^^f8{\v r} + \gdef^^f9{\ringaccent u} + \gdef^^fa{\'u} + \gdef^^fb{\H u} + \gdef^^fc{\"u} + \gdef^^fd{\'y} + \gdef^^fe{\cedilla t} + \gdef^^ff{\dotaccent{}} +} + +% UTF-8 character definitions. +% +% This code to support UTF-8 is based on LaTeX's utf8.def, with some +% changes for Texinfo conventions. It is included here under the GPL by +% permission from Frank Mittelbach and the LaTeX team. +% +\newcount\countUTFx +\newcount\countUTFy +\newcount\countUTFz + +\gdef\UTFviiiTwoOctets#1#2{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\endcsname} +% +\gdef\UTFviiiThreeOctets#1#2#3{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} +% +\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} + +\gdef\UTFviiiDefined#1{% + \ifx #1\relax + \message{\linenumber Unicode char \string #1 not defined for Texinfo}% + \else + \expandafter #1% + \fi +} + +\begingroup + \catcode`\~13 + \catcode`\"12 + + \def\UTFviiiLoop{% + \global\catcode\countUTFx\active + \uccode`\~\countUTFx + \uppercase\expandafter{\UTFviiiTmp}% + \advance\countUTFx by 1 + \ifnum\countUTFx < \countUTFy + \expandafter\UTFviiiLoop + \fi} + + \countUTFx = "C2 + \countUTFy = "E0 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiTwoOctets\string~}} + \UTFviiiLoop + + \countUTFx = "E0 + \countUTFy = "F0 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiThreeOctets\string~}} + \UTFviiiLoop + + \countUTFx = "F0 + \countUTFy = "F4 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiFourOctets\string~}} + \UTFviiiLoop +\endgroup + +\def\globallet{\global\let} % save some \expandafter's below + +% @U{xxxx} to produce U+xxxx, if we support it. +\def\U#1{% + \expandafter\ifx\csname uni:#1\endcsname \relax + \errhelp = \EMsimple + \errmessage{Unicode character U+#1 not supported, sorry}% + \else + \csname uni:#1\endcsname + \fi +} + +\begingroup + \catcode`\"=12 + \catcode`\<=12 + \catcode`\.=12 + \catcode`\,=12 + \catcode`\;=12 + \catcode`\!=12 + \catcode`\~=13 + \gdef\DeclareUnicodeCharacter#1#2{% + \countUTFz = "#1\relax + %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% + \begingroup + \parseXMLCharref + \def\UTFviiiTwoOctets##1##2{% + \csname u8:##1\string ##2\endcsname}% + \def\UTFviiiThreeOctets##1##2##3{% + \csname u8:##1\string ##2\string ##3\endcsname}% + \def\UTFviiiFourOctets##1##2##3##4{% + \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter + \gdef\UTFviiiTmp{#2}% + % + \expandafter\ifx\csname uni:#1\endcsname \relax \else + \message{Internal error, already defined: #1}% + \fi + % + % define an additional control sequence for this code point. + \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp + \endgroup} + + \gdef\parseXMLCharref{% + \ifnum\countUTFz < "A0\relax + \errhelp = \EMsimple + \errmessage{Cannot define Unicode char value < 00A0}% + \else\ifnum\countUTFz < "800\relax + \parseUTFviiiA,% + \parseUTFviiiB C\UTFviiiTwoOctets.,% + \else\ifnum\countUTFz < "10000\relax + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% + \else + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiA!% + \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% + \fi\fi\fi + } + + \gdef\parseUTFviiiA#1{% + \countUTFx = \countUTFz + \divide\countUTFz by 64 + \countUTFy = \countUTFz + \multiply\countUTFz by 64 + \advance\countUTFx by -\countUTFz + \advance\countUTFx by 128 + \uccode `#1\countUTFx + \countUTFz = \countUTFy} + + \gdef\parseUTFviiiB#1#2#3#4{% + \advance\countUTFz by "#10\relax + \uccode `#3\countUTFz + \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} +\endgroup + +% https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M +% U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block) +% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block) +% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A +% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B +% +% Many of our renditions are less than wonderful, and all the missing +% characters are available somewhere. Loading the necessary fonts +% awaits user request. We can't truly support Unicode without +% reimplementing everything that's been done in LaTeX for many years, +% plus probably using luatex or xetex, and who knows what else. +% We won't be doing that here in this simple file. But we can try to at +% least make most of the characters not bomb out. +% +\def\utfeightchardefs{% + \DeclareUnicodeCharacter{00A0}{\tie} + \DeclareUnicodeCharacter{00A1}{\exclamdown} + \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent + \DeclareUnicodeCharacter{00A3}{\pounds} + \DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency + \DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen + \DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar + \DeclareUnicodeCharacter{00A7}{\S} + \DeclareUnicodeCharacter{00A8}{\"{ }} + \DeclareUnicodeCharacter{00A9}{\copyright} + \DeclareUnicodeCharacter{00AA}{\ordf} + \DeclareUnicodeCharacter{00AB}{\guillemetleft} + \DeclareUnicodeCharacter{00AC}{\ensuremath\lnot} + \DeclareUnicodeCharacter{00AD}{\-} + \DeclareUnicodeCharacter{00AE}{\registeredsymbol} + \DeclareUnicodeCharacter{00AF}{\={ }} + + \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} + \DeclareUnicodeCharacter{00B1}{\ensuremath\pm} + \DeclareUnicodeCharacter{00B2}{$^2$} + \DeclareUnicodeCharacter{00B3}{$^3$} + \DeclareUnicodeCharacter{00B4}{\'{ }} + \DeclareUnicodeCharacter{00B5}{$\mu$} + \DeclareUnicodeCharacter{00B6}{\P} + \DeclareUnicodeCharacter{00B7}{\ensuremath\cdot} + \DeclareUnicodeCharacter{00B8}{\cedilla{ }} + \DeclareUnicodeCharacter{00B9}{$^1$} + \DeclareUnicodeCharacter{00BA}{\ordm} + \DeclareUnicodeCharacter{00BB}{\guillemetright} + \DeclareUnicodeCharacter{00BC}{$1\over4$} + \DeclareUnicodeCharacter{00BD}{$1\over2$} + \DeclareUnicodeCharacter{00BE}{$3\over4$} + \DeclareUnicodeCharacter{00BF}{\questiondown} + + \DeclareUnicodeCharacter{00C0}{\`A} + \DeclareUnicodeCharacter{00C1}{\'A} + \DeclareUnicodeCharacter{00C2}{\^A} + \DeclareUnicodeCharacter{00C3}{\~A} + \DeclareUnicodeCharacter{00C4}{\"A} + \DeclareUnicodeCharacter{00C5}{\AA} + \DeclareUnicodeCharacter{00C6}{\AE} + \DeclareUnicodeCharacter{00C7}{\cedilla{C}} + \DeclareUnicodeCharacter{00C8}{\`E} + \DeclareUnicodeCharacter{00C9}{\'E} + \DeclareUnicodeCharacter{00CA}{\^E} + \DeclareUnicodeCharacter{00CB}{\"E} + \DeclareUnicodeCharacter{00CC}{\`I} + \DeclareUnicodeCharacter{00CD}{\'I} + \DeclareUnicodeCharacter{00CE}{\^I} + \DeclareUnicodeCharacter{00CF}{\"I} + + \DeclareUnicodeCharacter{00D0}{\DH} + \DeclareUnicodeCharacter{00D1}{\~N} + \DeclareUnicodeCharacter{00D2}{\`O} + \DeclareUnicodeCharacter{00D3}{\'O} + \DeclareUnicodeCharacter{00D4}{\^O} + \DeclareUnicodeCharacter{00D5}{\~O} + \DeclareUnicodeCharacter{00D6}{\"O} + \DeclareUnicodeCharacter{00D7}{\ensuremath\times} + \DeclareUnicodeCharacter{00D8}{\O} + \DeclareUnicodeCharacter{00D9}{\`U} + \DeclareUnicodeCharacter{00DA}{\'U} + \DeclareUnicodeCharacter{00DB}{\^U} + \DeclareUnicodeCharacter{00DC}{\"U} + \DeclareUnicodeCharacter{00DD}{\'Y} + \DeclareUnicodeCharacter{00DE}{\TH} + \DeclareUnicodeCharacter{00DF}{\ss} + + \DeclareUnicodeCharacter{00E0}{\`a} + \DeclareUnicodeCharacter{00E1}{\'a} + \DeclareUnicodeCharacter{00E2}{\^a} + \DeclareUnicodeCharacter{00E3}{\~a} + \DeclareUnicodeCharacter{00E4}{\"a} + \DeclareUnicodeCharacter{00E5}{\aa} + \DeclareUnicodeCharacter{00E6}{\ae} + \DeclareUnicodeCharacter{00E7}{\cedilla{c}} + \DeclareUnicodeCharacter{00E8}{\`e} + \DeclareUnicodeCharacter{00E9}{\'e} + \DeclareUnicodeCharacter{00EA}{\^e} + \DeclareUnicodeCharacter{00EB}{\"e} + \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} + \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} + \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} + \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} + + \DeclareUnicodeCharacter{00F0}{\dh} + \DeclareUnicodeCharacter{00F1}{\~n} + \DeclareUnicodeCharacter{00F2}{\`o} + \DeclareUnicodeCharacter{00F3}{\'o} + \DeclareUnicodeCharacter{00F4}{\^o} + \DeclareUnicodeCharacter{00F5}{\~o} + \DeclareUnicodeCharacter{00F6}{\"o} + \DeclareUnicodeCharacter{00F7}{\ensuremath\div} + \DeclareUnicodeCharacter{00F8}{\o} + \DeclareUnicodeCharacter{00F9}{\`u} + \DeclareUnicodeCharacter{00FA}{\'u} + \DeclareUnicodeCharacter{00FB}{\^u} + \DeclareUnicodeCharacter{00FC}{\"u} + \DeclareUnicodeCharacter{00FD}{\'y} + \DeclareUnicodeCharacter{00FE}{\th} + \DeclareUnicodeCharacter{00FF}{\"y} + + \DeclareUnicodeCharacter{0100}{\=A} + \DeclareUnicodeCharacter{0101}{\=a} + \DeclareUnicodeCharacter{0102}{\u{A}} + \DeclareUnicodeCharacter{0103}{\u{a}} + \DeclareUnicodeCharacter{0104}{\ogonek{A}} + \DeclareUnicodeCharacter{0105}{\ogonek{a}} + \DeclareUnicodeCharacter{0106}{\'C} + \DeclareUnicodeCharacter{0107}{\'c} + \DeclareUnicodeCharacter{0108}{\^C} + \DeclareUnicodeCharacter{0109}{\^c} + \DeclareUnicodeCharacter{010A}{\dotaccent{C}} + \DeclareUnicodeCharacter{010B}{\dotaccent{c}} + \DeclareUnicodeCharacter{010C}{\v{C}} + \DeclareUnicodeCharacter{010D}{\v{c}} + \DeclareUnicodeCharacter{010E}{\v{D}} + \DeclareUnicodeCharacter{010F}{d'} + + \DeclareUnicodeCharacter{0110}{\DH} + \DeclareUnicodeCharacter{0111}{\dh} + \DeclareUnicodeCharacter{0112}{\=E} + \DeclareUnicodeCharacter{0113}{\=e} + \DeclareUnicodeCharacter{0114}{\u{E}} + \DeclareUnicodeCharacter{0115}{\u{e}} + \DeclareUnicodeCharacter{0116}{\dotaccent{E}} + \DeclareUnicodeCharacter{0117}{\dotaccent{e}} + \DeclareUnicodeCharacter{0118}{\ogonek{E}} + \DeclareUnicodeCharacter{0119}{\ogonek{e}} + \DeclareUnicodeCharacter{011A}{\v{E}} + \DeclareUnicodeCharacter{011B}{\v{e}} + \DeclareUnicodeCharacter{011C}{\^G} + \DeclareUnicodeCharacter{011D}{\^g} + \DeclareUnicodeCharacter{011E}{\u{G}} + \DeclareUnicodeCharacter{011F}{\u{g}} + + \DeclareUnicodeCharacter{0120}{\dotaccent{G}} + \DeclareUnicodeCharacter{0121}{\dotaccent{g}} + \DeclareUnicodeCharacter{0122}{\cedilla{G}} + \DeclareUnicodeCharacter{0123}{\cedilla{g}} + \DeclareUnicodeCharacter{0124}{\^H} + \DeclareUnicodeCharacter{0125}{\^h} + \DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}} + \DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}} + \DeclareUnicodeCharacter{0128}{\~I} + \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} + \DeclareUnicodeCharacter{012A}{\=I} + \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} + \DeclareUnicodeCharacter{012C}{\u{I}} + \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} + \DeclareUnicodeCharacter{012E}{\ogonek{I}} + \DeclareUnicodeCharacter{012F}{\ogonek{i}} + + \DeclareUnicodeCharacter{0130}{\dotaccent{I}} + \DeclareUnicodeCharacter{0131}{\dotless{i}} + \DeclareUnicodeCharacter{0132}{IJ} + \DeclareUnicodeCharacter{0133}{ij} + \DeclareUnicodeCharacter{0134}{\^J} + \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} + \DeclareUnicodeCharacter{0136}{\cedilla{K}} + \DeclareUnicodeCharacter{0137}{\cedilla{k}} + \DeclareUnicodeCharacter{0138}{\ensuremath\kappa} + \DeclareUnicodeCharacter{0139}{\'L} + \DeclareUnicodeCharacter{013A}{\'l} + \DeclareUnicodeCharacter{013B}{\cedilla{L}} + \DeclareUnicodeCharacter{013C}{\cedilla{l}} + \DeclareUnicodeCharacter{013D}{L'}% should kern + \DeclareUnicodeCharacter{013E}{l'}% should kern + \DeclareUnicodeCharacter{013F}{L\U{00B7}} + + \DeclareUnicodeCharacter{0140}{l\U{00B7}} + \DeclareUnicodeCharacter{0141}{\L} + \DeclareUnicodeCharacter{0142}{\l} + \DeclareUnicodeCharacter{0143}{\'N} + \DeclareUnicodeCharacter{0144}{\'n} + \DeclareUnicodeCharacter{0145}{\cedilla{N}} + \DeclareUnicodeCharacter{0146}{\cedilla{n}} + \DeclareUnicodeCharacter{0147}{\v{N}} + \DeclareUnicodeCharacter{0148}{\v{n}} + \DeclareUnicodeCharacter{0149}{'n} + \DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}} + \DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}} + \DeclareUnicodeCharacter{014C}{\=O} + \DeclareUnicodeCharacter{014D}{\=o} + \DeclareUnicodeCharacter{014E}{\u{O}} + \DeclareUnicodeCharacter{014F}{\u{o}} + + \DeclareUnicodeCharacter{0150}{\H{O}} + \DeclareUnicodeCharacter{0151}{\H{o}} + \DeclareUnicodeCharacter{0152}{\OE} + \DeclareUnicodeCharacter{0153}{\oe} + \DeclareUnicodeCharacter{0154}{\'R} + \DeclareUnicodeCharacter{0155}{\'r} + \DeclareUnicodeCharacter{0156}{\cedilla{R}} + \DeclareUnicodeCharacter{0157}{\cedilla{r}} + \DeclareUnicodeCharacter{0158}{\v{R}} + \DeclareUnicodeCharacter{0159}{\v{r}} + \DeclareUnicodeCharacter{015A}{\'S} + \DeclareUnicodeCharacter{015B}{\'s} + \DeclareUnicodeCharacter{015C}{\^S} + \DeclareUnicodeCharacter{015D}{\^s} + \DeclareUnicodeCharacter{015E}{\cedilla{S}} + \DeclareUnicodeCharacter{015F}{\cedilla{s}} + + \DeclareUnicodeCharacter{0160}{\v{S}} + \DeclareUnicodeCharacter{0161}{\v{s}} + \DeclareUnicodeCharacter{0162}{\cedilla{T}} + \DeclareUnicodeCharacter{0163}{\cedilla{t}} + \DeclareUnicodeCharacter{0164}{\v{T}} + \DeclareUnicodeCharacter{0165}{\v{t}} + \DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}} + \DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}} + \DeclareUnicodeCharacter{0168}{\~U} + \DeclareUnicodeCharacter{0169}{\~u} + \DeclareUnicodeCharacter{016A}{\=U} + \DeclareUnicodeCharacter{016B}{\=u} + \DeclareUnicodeCharacter{016C}{\u{U}} + \DeclareUnicodeCharacter{016D}{\u{u}} + \DeclareUnicodeCharacter{016E}{\ringaccent{U}} + \DeclareUnicodeCharacter{016F}{\ringaccent{u}} + + \DeclareUnicodeCharacter{0170}{\H{U}} + \DeclareUnicodeCharacter{0171}{\H{u}} + \DeclareUnicodeCharacter{0172}{\ogonek{U}} + \DeclareUnicodeCharacter{0173}{\ogonek{u}} + \DeclareUnicodeCharacter{0174}{\^W} + \DeclareUnicodeCharacter{0175}{\^w} + \DeclareUnicodeCharacter{0176}{\^Y} + \DeclareUnicodeCharacter{0177}{\^y} + \DeclareUnicodeCharacter{0178}{\"Y} + \DeclareUnicodeCharacter{0179}{\'Z} + \DeclareUnicodeCharacter{017A}{\'z} + \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} + \DeclareUnicodeCharacter{017C}{\dotaccent{z}} + \DeclareUnicodeCharacter{017D}{\v{Z}} + \DeclareUnicodeCharacter{017E}{\v{z}} + \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}} + + \DeclareUnicodeCharacter{01C4}{D\v{Z}} + \DeclareUnicodeCharacter{01C5}{D\v{z}} + \DeclareUnicodeCharacter{01C6}{d\v{z}} + \DeclareUnicodeCharacter{01C7}{LJ} + \DeclareUnicodeCharacter{01C8}{Lj} + \DeclareUnicodeCharacter{01C9}{lj} + \DeclareUnicodeCharacter{01CA}{NJ} + \DeclareUnicodeCharacter{01CB}{Nj} + \DeclareUnicodeCharacter{01CC}{nj} + \DeclareUnicodeCharacter{01CD}{\v{A}} + \DeclareUnicodeCharacter{01CE}{\v{a}} + \DeclareUnicodeCharacter{01CF}{\v{I}} + + \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} + \DeclareUnicodeCharacter{01D1}{\v{O}} + \DeclareUnicodeCharacter{01D2}{\v{o}} + \DeclareUnicodeCharacter{01D3}{\v{U}} + \DeclareUnicodeCharacter{01D4}{\v{u}} + + \DeclareUnicodeCharacter{01E2}{\={\AE}} + \DeclareUnicodeCharacter{01E3}{\={\ae}} + \DeclareUnicodeCharacter{01E6}{\v{G}} + \DeclareUnicodeCharacter{01E7}{\v{g}} + \DeclareUnicodeCharacter{01E8}{\v{K}} + \DeclareUnicodeCharacter{01E9}{\v{k}} + + \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} + \DeclareUnicodeCharacter{01F1}{DZ} + \DeclareUnicodeCharacter{01F2}{Dz} + \DeclareUnicodeCharacter{01F3}{dz} + \DeclareUnicodeCharacter{01F4}{\'G} + \DeclareUnicodeCharacter{01F5}{\'g} + \DeclareUnicodeCharacter{01F8}{\`N} + \DeclareUnicodeCharacter{01F9}{\`n} + \DeclareUnicodeCharacter{01FC}{\'{\AE}} + \DeclareUnicodeCharacter{01FD}{\'{\ae}} + \DeclareUnicodeCharacter{01FE}{\'{\O}} + \DeclareUnicodeCharacter{01FF}{\'{\o}} + + \DeclareUnicodeCharacter{021E}{\v{H}} + \DeclareUnicodeCharacter{021F}{\v{h}} + + \DeclareUnicodeCharacter{0226}{\dotaccent{A}} + \DeclareUnicodeCharacter{0227}{\dotaccent{a}} + \DeclareUnicodeCharacter{0228}{\cedilla{E}} + \DeclareUnicodeCharacter{0229}{\cedilla{e}} + \DeclareUnicodeCharacter{022E}{\dotaccent{O}} + \DeclareUnicodeCharacter{022F}{\dotaccent{o}} + + \DeclareUnicodeCharacter{0232}{\=Y} + \DeclareUnicodeCharacter{0233}{\=y} + \DeclareUnicodeCharacter{0237}{\dotless{j}} + + \DeclareUnicodeCharacter{02DB}{\ogonek{ }} + + % Greek letters upper case + \DeclareUnicodeCharacter{0391}{{\it A}} + \DeclareUnicodeCharacter{0392}{{\it B}} + \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}} + \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}} + \DeclareUnicodeCharacter{0395}{{\it E}} + \DeclareUnicodeCharacter{0396}{{\it Z}} + \DeclareUnicodeCharacter{0397}{{\it H}} + \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}} + \DeclareUnicodeCharacter{0399}{{\it I}} + \DeclareUnicodeCharacter{039A}{{\it K}} + \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}} + \DeclareUnicodeCharacter{039C}{{\it M}} + \DeclareUnicodeCharacter{039D}{{\it N}} + \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}} + \DeclareUnicodeCharacter{039F}{{\it O}} + \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}} + \DeclareUnicodeCharacter{03A1}{{\it P}} + %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma + \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}} + \DeclareUnicodeCharacter{03A4}{{\it T}} + \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}} + \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}} + \DeclareUnicodeCharacter{03A7}{{\it X}} + \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}} + \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}} + + % Vowels with accents + \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}} + \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}} + \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}} + \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}} + \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}} + \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}} + + % Standalone accent + \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}} + + % Greek letters lower case + \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha} + \DeclareUnicodeCharacter{03B2}{\ensuremath\beta} + \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma} + \DeclareUnicodeCharacter{03B4}{\ensuremath\delta} + \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon} + \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta} + \DeclareUnicodeCharacter{03B7}{\ensuremath\eta} + \DeclareUnicodeCharacter{03B8}{\ensuremath\theta} + \DeclareUnicodeCharacter{03B9}{\ensuremath\iota} + \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa} + \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda} + \DeclareUnicodeCharacter{03BC}{\ensuremath\mu} + \DeclareUnicodeCharacter{03BD}{\ensuremath\nu} + \DeclareUnicodeCharacter{03BE}{\ensuremath\xi} + \DeclareUnicodeCharacter{03BF}{{\it o}} % omicron + \DeclareUnicodeCharacter{03C0}{\ensuremath\pi} + \DeclareUnicodeCharacter{03C1}{\ensuremath\rho} + \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma} + \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma} + \DeclareUnicodeCharacter{03C4}{\ensuremath\tau} + \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon} + \DeclareUnicodeCharacter{03C6}{\ensuremath\phi} + \DeclareUnicodeCharacter{03C7}{\ensuremath\chi} + \DeclareUnicodeCharacter{03C8}{\ensuremath\psi} + \DeclareUnicodeCharacter{03C9}{\ensuremath\omega} + + % More Greek vowels with accents + \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}} + \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}} + \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}} + \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}} + \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}} + + % Variant Greek letters + \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta} + \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi} + \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho} + + \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} + \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} + \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} + \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} + \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} + \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} + \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} + \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} + \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} + \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} + \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} + \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} + + \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} + \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} + + \DeclareUnicodeCharacter{1E20}{\=G} + \DeclareUnicodeCharacter{1E21}{\=g} + \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} + \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} + \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} + \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} + \DeclareUnicodeCharacter{1E26}{\"H} + \DeclareUnicodeCharacter{1E27}{\"h} + + \DeclareUnicodeCharacter{1E30}{\'K} + \DeclareUnicodeCharacter{1E31}{\'k} + \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} + \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} + \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} + \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} + \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} + \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} + \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} + \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} + \DeclareUnicodeCharacter{1E3E}{\'M} + \DeclareUnicodeCharacter{1E3F}{\'m} + + \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} + \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} + \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} + \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} + \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} + \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} + \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} + \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} + \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} + \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} + + \DeclareUnicodeCharacter{1E54}{\'P} + \DeclareUnicodeCharacter{1E55}{\'p} + \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} + \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} + \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} + \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} + \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} + \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} + \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} + \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} + + \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} + \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} + \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} + \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} + \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} + \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} + \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} + \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} + \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} + \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} + + \DeclareUnicodeCharacter{1E7C}{\~V} + \DeclareUnicodeCharacter{1E7D}{\~v} + \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} + \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} + + \DeclareUnicodeCharacter{1E80}{\`W} + \DeclareUnicodeCharacter{1E81}{\`w} + \DeclareUnicodeCharacter{1E82}{\'W} + \DeclareUnicodeCharacter{1E83}{\'w} + \DeclareUnicodeCharacter{1E84}{\"W} + \DeclareUnicodeCharacter{1E85}{\"w} + \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} + \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} + \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} + \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} + \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} + \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} + \DeclareUnicodeCharacter{1E8C}{\"X} + \DeclareUnicodeCharacter{1E8D}{\"x} + \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} + \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} + + \DeclareUnicodeCharacter{1E90}{\^Z} + \DeclareUnicodeCharacter{1E91}{\^z} + \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} + \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} + \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} + \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} + \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} + \DeclareUnicodeCharacter{1E97}{\"t} + \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} + \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} + + \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} + \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} + + \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} + \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} + \DeclareUnicodeCharacter{1EBC}{\~E} + \DeclareUnicodeCharacter{1EBD}{\~e} + + \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} + \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} + \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} + \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} + + \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} + \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} + + \DeclareUnicodeCharacter{1EF2}{\`Y} + \DeclareUnicodeCharacter{1EF3}{\`y} + \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} + + \DeclareUnicodeCharacter{1EF8}{\~Y} + \DeclareUnicodeCharacter{1EF9}{\~y} + + % Punctuation + \DeclareUnicodeCharacter{2013}{--} + \DeclareUnicodeCharacter{2014}{---} + \DeclareUnicodeCharacter{2018}{\quoteleft} + \DeclareUnicodeCharacter{2019}{\quoteright} + \DeclareUnicodeCharacter{201A}{\quotesinglbase} + \DeclareUnicodeCharacter{201C}{\quotedblleft} + \DeclareUnicodeCharacter{201D}{\quotedblright} + \DeclareUnicodeCharacter{201E}{\quotedblbase} + \DeclareUnicodeCharacter{2020}{\ensuremath\dagger} + \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger} + \DeclareUnicodeCharacter{2022}{\bullet} + \DeclareUnicodeCharacter{202F}{\thinspace} + \DeclareUnicodeCharacter{2026}{\dots} + \DeclareUnicodeCharacter{2039}{\guilsinglleft} + \DeclareUnicodeCharacter{203A}{\guilsinglright} + + \DeclareUnicodeCharacter{20AC}{\euro} + + \DeclareUnicodeCharacter{2192}{\expansion} + \DeclareUnicodeCharacter{21D2}{\result} + + % Mathematical symbols + \DeclareUnicodeCharacter{2200}{\ensuremath\forall} + \DeclareUnicodeCharacter{2203}{\ensuremath\exists} + \DeclareUnicodeCharacter{2208}{\ensuremath\in} + \DeclareUnicodeCharacter{2212}{\minus} + \DeclareUnicodeCharacter{2217}{\ast} + \DeclareUnicodeCharacter{221E}{\ensuremath\infty} + \DeclareUnicodeCharacter{2225}{\ensuremath\parallel} + \DeclareUnicodeCharacter{2227}{\ensuremath\wedge} + \DeclareUnicodeCharacter{2229}{\ensuremath\cap} + \DeclareUnicodeCharacter{2261}{\equiv} + \DeclareUnicodeCharacter{2264}{\ensuremath\leq} + \DeclareUnicodeCharacter{2265}{\ensuremath\geq} + \DeclareUnicodeCharacter{2282}{\ensuremath\subset} + \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq} + + \DeclareUnicodeCharacter{2016}{\ensuremath\Vert} + \DeclareUnicodeCharacter{2032}{\ensuremath\prime} + \DeclareUnicodeCharacter{210F}{\ensuremath\hbar} + \DeclareUnicodeCharacter{2111}{\ensuremath\Im} + \DeclareUnicodeCharacter{2113}{\ensuremath\ell} + \DeclareUnicodeCharacter{2118}{\ensuremath\wp} + \DeclareUnicodeCharacter{211C}{\ensuremath\Re} + \DeclareUnicodeCharacter{2127}{\ensuremath\mho} + \DeclareUnicodeCharacter{2135}{\ensuremath\aleph} + \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow} + \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow} + \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow} + \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow} + \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow} + \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow} + \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow} + \DeclareUnicodeCharacter{2198}{\ensuremath\searrow} + \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow} + \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto} + \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow} + \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow} + \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup} + \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown} + \DeclareUnicodeCharacter{21BE}{\ensuremath\upharpoonright} + \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup} + \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown} + \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons} + \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow} + \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow} + \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow} + \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow} + \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow} + \DeclareUnicodeCharacter{21DD}{\ensuremath\leadsto} + \DeclareUnicodeCharacter{2201}{\ensuremath\complement} + \DeclareUnicodeCharacter{2202}{\ensuremath\partial} + \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset} + \DeclareUnicodeCharacter{2207}{\ensuremath\nabla} + \DeclareUnicodeCharacter{2209}{\ensuremath\notin} + \DeclareUnicodeCharacter{220B}{\ensuremath\owns} + \DeclareUnicodeCharacter{220F}{\ensuremath\prod} + \DeclareUnicodeCharacter{2210}{\ensuremath\coprod} + \DeclareUnicodeCharacter{2211}{\ensuremath\sum} + \DeclareUnicodeCharacter{2213}{\ensuremath\mp} + \DeclareUnicodeCharacter{2218}{\ensuremath\circ} + \DeclareUnicodeCharacter{221A}{\ensuremath\surd} + \DeclareUnicodeCharacter{221D}{\ensuremath\propto} + \DeclareUnicodeCharacter{2220}{\ensuremath\angle} + \DeclareUnicodeCharacter{2223}{\ensuremath\mid} + \DeclareUnicodeCharacter{2228}{\ensuremath\vee} + \DeclareUnicodeCharacter{222A}{\ensuremath\cup} + \DeclareUnicodeCharacter{222B}{\ensuremath\smallint} + \DeclareUnicodeCharacter{222E}{\ensuremath\oint} + \DeclareUnicodeCharacter{223C}{\ensuremath\sim} + \DeclareUnicodeCharacter{2240}{\ensuremath\wr} + \DeclareUnicodeCharacter{2243}{\ensuremath\simeq} + \DeclareUnicodeCharacter{2245}{\ensuremath\cong} + \DeclareUnicodeCharacter{2248}{\ensuremath\approx} + \DeclareUnicodeCharacter{224D}{\ensuremath\asymp} + \DeclareUnicodeCharacter{2250}{\ensuremath\doteq} + \DeclareUnicodeCharacter{2260}{\ensuremath\neq} + \DeclareUnicodeCharacter{226A}{\ensuremath\ll} + \DeclareUnicodeCharacter{226B}{\ensuremath\gg} + \DeclareUnicodeCharacter{227A}{\ensuremath\prec} + \DeclareUnicodeCharacter{227B}{\ensuremath\succ} + \DeclareUnicodeCharacter{2283}{\ensuremath\supset} + \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq} + \DeclareUnicodeCharacter{228E}{\ensuremath\uplus} + \DeclareUnicodeCharacter{228F}{\ensuremath\sqsubset} + \DeclareUnicodeCharacter{2290}{\ensuremath\sqsupset} + \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq} + \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq} + \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap} + \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup} + \DeclareUnicodeCharacter{2295}{\ensuremath\oplus} + \DeclareUnicodeCharacter{2296}{\ensuremath\ominus} + \DeclareUnicodeCharacter{2297}{\ensuremath\otimes} + \DeclareUnicodeCharacter{2298}{\ensuremath\oslash} + \DeclareUnicodeCharacter{2299}{\ensuremath\odot} + \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash} + \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv} + \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop} + \DeclareUnicodeCharacter{22A5}{\ensuremath\bot} + \DeclareUnicodeCharacter{22A8}{\ensuremath\models} + \DeclareUnicodeCharacter{22B4}{\ensuremath\unlhd} + \DeclareUnicodeCharacter{22B5}{\ensuremath\unrhd} + \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge} + \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee} + \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap} + \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup} + \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond} + \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot} + \DeclareUnicodeCharacter{22C6}{\ensuremath\star} + \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie} + \DeclareUnicodeCharacter{2308}{\ensuremath\lceil} + \DeclareUnicodeCharacter{2309}{\ensuremath\rceil} + \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor} + \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor} + \DeclareUnicodeCharacter{2322}{\ensuremath\frown} + \DeclareUnicodeCharacter{2323}{\ensuremath\smile} + + \DeclareUnicodeCharacter{25A1}{\ensuremath\Box} + \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle} + \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright} + \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown} + \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft} + \DeclareUnicodeCharacter{25C7}{\ensuremath\Diamond} + \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit} + \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit} + \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit} + \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit} + \DeclareUnicodeCharacter{266D}{\ensuremath\flat} + \DeclareUnicodeCharacter{266E}{\ensuremath\natural} + \DeclareUnicodeCharacter{266F}{\ensuremath\sharp} + \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc} + \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle} + \DeclareUnicodeCharacter{27C2}{\ensuremath\perp} + \DeclareUnicodeCharacter{27E8}{\ensuremath\langle} + \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow} + \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow} + \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow} + \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto} + \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus} + \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot} + \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus} + \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes} + \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus} + \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup} + \DeclareUnicodeCharacter{2A1D}{\ensuremath\Join} + \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg} + \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq} + \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq} + + \global\mathchardef\checkmark="1370 % actually the square root sign + \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark} +}% end of \utfeightchardefs + +% US-ASCII character definitions. +\def\asciichardefs{% nothing need be done + \relax +} + +% Latin1 (ISO-8859-1) character definitions. +\def\nonasciistringdefs{% + \setnonasciicharscatcode\active + \def\defstringchar##1{\def##1{\string##1}}% + % + \defstringchar^^80\defstringchar^^81\defstringchar^^82\defstringchar^^83% + \defstringchar^^84\defstringchar^^85\defstringchar^^86\defstringchar^^87% + \defstringchar^^88\defstringchar^^89\defstringchar^^8a\defstringchar^^8b% + \defstringchar^^8c\defstringchar^^8d\defstringchar^^8e\defstringchar^^8f% + % + \defstringchar^^90\defstringchar^^91\defstringchar^^92\defstringchar^^93% + \defstringchar^^94\defstringchar^^95\defstringchar^^96\defstringchar^^97% + \defstringchar^^98\defstringchar^^99\defstringchar^^9a\defstringchar^^9b% + \defstringchar^^9c\defstringchar^^9d\defstringchar^^9e\defstringchar^^9f% + % + \defstringchar^^a0\defstringchar^^a1\defstringchar^^a2\defstringchar^^a3% + \defstringchar^^a4\defstringchar^^a5\defstringchar^^a6\defstringchar^^a7% + \defstringchar^^a8\defstringchar^^a9\defstringchar^^aa\defstringchar^^ab% + \defstringchar^^ac\defstringchar^^ad\defstringchar^^ae\defstringchar^^af% + % + \defstringchar^^b0\defstringchar^^b1\defstringchar^^b2\defstringchar^^b3% + \defstringchar^^b4\defstringchar^^b5\defstringchar^^b6\defstringchar^^b7% + \defstringchar^^b8\defstringchar^^b9\defstringchar^^ba\defstringchar^^bb% + \defstringchar^^bc\defstringchar^^bd\defstringchar^^be\defstringchar^^bf% + % + \defstringchar^^c0\defstringchar^^c1\defstringchar^^c2\defstringchar^^c3% + \defstringchar^^c4\defstringchar^^c5\defstringchar^^c6\defstringchar^^c7% + \defstringchar^^c8\defstringchar^^c9\defstringchar^^ca\defstringchar^^cb% + \defstringchar^^cc\defstringchar^^cd\defstringchar^^ce\defstringchar^^cf% + % + \defstringchar^^d0\defstringchar^^d1\defstringchar^^d2\defstringchar^^d3% + \defstringchar^^d4\defstringchar^^d5\defstringchar^^d6\defstringchar^^d7% + \defstringchar^^d8\defstringchar^^d9\defstringchar^^da\defstringchar^^db% + \defstringchar^^dc\defstringchar^^dd\defstringchar^^de\defstringchar^^df% + % + \defstringchar^^e0\defstringchar^^e1\defstringchar^^e2\defstringchar^^e3% + \defstringchar^^e4\defstringchar^^e5\defstringchar^^e6\defstringchar^^e7% + \defstringchar^^e8\defstringchar^^e9\defstringchar^^ea\defstringchar^^eb% + \defstringchar^^ec\defstringchar^^ed\defstringchar^^ee\defstringchar^^ef% + % + \defstringchar^^f0\defstringchar^^f1\defstringchar^^f2\defstringchar^^f3% + \defstringchar^^f4\defstringchar^^f5\defstringchar^^f6\defstringchar^^f7% + \defstringchar^^f8\defstringchar^^f9\defstringchar^^fa\defstringchar^^fb% + \defstringchar^^fc\defstringchar^^fd\defstringchar^^fe\defstringchar^^ff% +} + + +% define all the unicode characters we know about, for the sake of @U. +\utfeightchardefs + + +% Make non-ASCII characters printable again for compatibility with +% existing Texinfo documents that may use them, even without declaring a +% document encoding. +% +\setnonasciicharscatcode \other + + +\message{formatting,} + +\newdimen\defaultparindent \defaultparindent = 15pt + +\chapheadingskip = 15pt plus 4pt minus 2pt +\secheadingskip = 12pt plus 3pt minus 2pt +\subsecheadingskip = 9pt plus 2pt minus 2pt + +% Prevent underfull vbox error messages. +\vbadness = 10000 + +% Don't be very finicky about underfull hboxes, either. +\hbadness = 6666 + +% Following George Bush, get rid of widows and orphans. +\widowpenalty=10000 +\clubpenalty=10000 + +% Use TeX 3.0's \emergencystretch to help line breaking, but if we're +% using an old version of TeX, don't do anything. We want the amount of +% stretch added to depend on the line length, hence the dependence on +% \hsize. We call this whenever the paper size is set. +% +\def\setemergencystretch{% + \ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% + \else + \emergencystretch = .15\hsize + \fi +} + +% Parameters in order: 1) textheight; 2) textwidth; +% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; +% 7) physical page height; 8) physical page width. +% +% We also call \setleading{\textleading}, so the caller should define +% \textleading. The caller should also set \parskip. +% +\def\internalpagesizes#1#2#3#4#5#6#7#8{% + \voffset = #3\relax + \topskip = #6\relax + \splittopskip = \topskip + % + \vsize = #1\relax + \advance\vsize by \topskip + \outervsize = \vsize + \advance\outervsize by 2\topandbottommargin + \pageheight = \vsize + % + \hsize = #2\relax + \outerhsize = \hsize + \advance\outerhsize by 0.5in + \pagewidth = \hsize + % + \normaloffset = #4\relax + \bindingoffset = #5\relax + % + \ifpdf + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % if we don't reset these, they will remain at "1 true in" of + % whatever layout pdftex was dumped with. + \pdfhorigin = 1 true in + \pdfvorigin = 1 true in + \fi + % + \setleading{\textleading} + % + \parindent = \defaultparindent + \setemergencystretch +} + +% @letterpaper (the default). +\def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % If page is nothing but text, make it come out even. + \internalpagesizes{607.2pt}{6in}% that's 46 lines + {\voffset}{.25in}% + {\bindingoffset}{36pt}% + {11in}{8.5in}% +}} + +% Use @smallbook to reset parameters for 7x9.25 trim size. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.5in}{5in}% + {-.2in}{0in}% + {\bindingoffset}{16pt}% + {9.25in}{7in}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .5cm +}} + +% Use @smallerbook to reset parameters for 6x9 trim size. +% (Just testing, parameters still in flux.) +\def\smallerbook{{\globaldefs = 1 + \parskip = 1.5pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.4in}{4.8in}% + {-.2in}{-.4in}% + {0pt}{14pt}% + {9in}{6in}% + % + \lispnarrowing = 0.25in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .4cm +}} + +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % Double-side printing via postscript on Laserjet 4050 + % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. + % To change the settings for a different printer or situation, adjust + % \normaloffset until the front-side and back-side texts align. Then + % do the same for \bindingoffset. You can set these for testing in + % your texinfo source file like this: + % @tex + % \global\normaloffset = -6mm + % \global\bindingoffset = 10mm + % @end tex + \internalpagesizes{673.2pt}{160mm}% that's 51 lines + {\voffset}{\hoffset}% + {\bindingoffset}{44pt}% + {297mm}{210mm}% + % + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = 5mm +}} + +% Use @afivepaper to print on European A5 paper. +% From romildo@urano.iceb.ufop.br, 2 July 2000. +% He also recommends making @example and @lisp be small. +\def\afivepaper{{\globaldefs = 1 + \parskip = 2pt plus 1pt minus 0.1pt + \textleading = 12.5pt + % + \internalpagesizes{160mm}{120mm}% + {\voffset}{\hoffset}% + {\bindingoffset}{8pt}% + {210mm}{148mm}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \hfuzz = 1.2pt + \contentsrightmargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm +}} + +% A specific text layout, 24x15cm overall, intended for A4 paper. +\def\afourlatex{{\globaldefs = 1 + \afourpaper + \internalpagesizes{237mm}{150mm}% + {\voffset}{4.6mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + % + % Must explicitly reset to 0 because we call \afourpaper. + \globaldefs = 0 +}} + +% Use @afourwide to print on A4 paper in landscape format. +\def\afourwide{{\globaldefs = 1 + \afourpaper + \internalpagesizes{241mm}{165mm}% + {\voffset}{-2.95mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + \globaldefs = 0 +}} + +% @pagesizes TEXTHEIGHT[,TEXTWIDTH] +% Perhaps we should allow setting the margins, \topskip, \parskip, +% and/or leading, also. Or perhaps we should compute them somehow. +% +\parseargdef\pagesizes{\pagesizesyyy #1,,\finish} +\def\pagesizesyyy#1,#2,#3\finish{{% + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi + \globaldefs = 1 + % + \parskip = 3pt plus 2pt minus 1pt + \setleading{\textleading}% + % + \dimen0 = #1\relax + \advance\dimen0 by \voffset + % + \dimen2 = \hsize + \advance\dimen2 by \normaloffset + % + \internalpagesizes{#1}{\hsize}% + {\voffset}{\normaloffset}% + {\bindingoffset}{44pt}% + {\dimen0}{\dimen2}% +}} + +% Set default to letter. +% +\letterpaper + + +\message{and turning on texinfo input format.} + +\def^^L{\par} % remove \outer, so ^L can appear in an @comment + +% DEL is a comment character, in case @c does not suffice. +\catcode`\^^? = 14 + +% Define macros to output various characters with catcode for normal text. +\catcode`\"=\other \def\normaldoublequote{"} +\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix +\catcode`\+=\other \def\normalplus{+} +\catcode`\<=\other \def\normalless{<} +\catcode`\>=\other \def\normalgreater{>} +\catcode`\^=\other \def\normalcaret{^} +\catcode`\_=\other \def\normalunderscore{_} +\catcode`\|=\other \def\normalverticalbar{|} +\catcode`\~=\other \def\normaltilde{~} + +% This macro is used to make a character print one way in \tt +% (where it can probably be output as-is), and another way in other fonts, +% where something hairier probably needs to be done. +% +% #1 is what to print if we are indeed using \tt; #2 is what to print +% otherwise. Since all the Computer Modern typewriter fonts have zero +% interword stretch (and shrink), and it is reasonable to expect all +% typewriter fonts to have this, we can check that font parameter. +% +\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} + +% Same as above, but check for italic font. Actually this also catches +% non-italic slanted fonts since it is impossible to distinguish them from +% italic fonts. But since this is only used by $ and it uses \sl anyway +% this is not a problem. +\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} + +% Turn off all special characters except @ +% (and those which the user can use as if they were ordinary). +% Most of these we simply print from the \tt font, but for some, we can +% use math or other variants that look better in normal text. + +\catcode`\"=\active +\def\activedoublequote{{\tt\char34}} +\let"=\activedoublequote +\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde +\chardef\hatchar=`\^ +\catcode`\^=\active \def\activehat{{\tt \hatchar}} \let^ = \activehat + +\catcode`\_=\active +\def_{\ifusingtt\normalunderscore\_} +\let\realunder=_ +% Subroutine for the previous macro. +\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } + +\catcode`\|=\active +\def|{{\tt\char124}} + +\chardef \less=`\< +\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless +\chardef \gtr=`\> +\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr +\catcode`\+=\active \def+{{\tt \char 43}} +\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix +\catcode`\-=\active \let-=\normaldash + + +% used for headline/footline in the output routine, in case the page +% breaks in the middle of an @tex block. +\def\texinfochars{% + \let< = \activeless + \let> = \activegtr + \let~ = \activetilde + \let^ = \activehat + \markupsetuplqdefault \markupsetuprqdefault + \let\b = \strong + \let\i = \smartitalic + % in principle, all other definitions in \tex have to be undone too. +} + +% Used sometimes to turn off (effectively) the active characters even after +% parsing them. +\def\turnoffactive{% + \normalturnoffactive + \otherbackslash +} + +\catcode`\@=0 + +% \backslashcurfont outputs one backslash character in current font, +% as in \char`\\. +\global\chardef\backslashcurfont=`\\ +\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work + +% \realbackslash is an actual character `\' with catcode other, and +% \doublebackslash is two of them (for the pdf outlines). +{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} + +% In Texinfo, backslash is an active character; it prints the backslash +% in fixed width font. +\catcode`\\=\active % @ for escape char from now on. + +% Print a typewriter backslash. For math mode, we can't simply use +% \backslashcurfont: the story here is that in math mode, the \char +% of \backslashcurfont ends up printing the roman \ from the math symbol +% font (because \char in math mode uses the \mathcode, and plain.tex +% sets \mathcode`\\="026E). Hence we use an explicit \mathchar, +% which is the decimal equivalent of "715c (class 7, e.g., use \fam; +% ignored family value; char position "5C). We can't use " for the +% usual hex value because it has already been made active. + +@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} +@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents. + +% \rawbackslash defines an active \ to do \backslashcurfont. +% \otherbackslash defines an active \ to be a literal `\' character with +% catcode other. We switch back and forth between these. +@gdef@rawbackslash{@let\=@backslashcurfont} +@gdef@otherbackslash{@let\=@realbackslash} + +% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of +% the literal character `\'. +% +{@catcode`- = @active + @gdef@normalturnoffactive{% + @nonasciistringdefs + @let-=@normaldash + @let"=@normaldoublequote + @let$=@normaldollar %$ font-lock fix + @let+=@normalplus + @let<=@normalless + @let>=@normalgreater + @let^=@normalcaret + @let_=@normalunderscore + @let|=@normalverticalbar + @let~=@normaltilde + @let\=@ttbackslash + @markupsetuplqdefault + @markupsetuprqdefault + @unsepspaces + } +} + +% If a .fmt file is being used, characters that might appear in a file +% name cannot be active until we have parsed the command line. +% So turn them off again, and have @fixbackslash turn them back on. +@catcode`+=@other @catcode`@_=@other + +% \enablebackslashhack - allow file to begin `\input texinfo' +% +% If a .fmt file is being used, we don't want the `\input texinfo' to show up. +% That is what \eatinput is for; after that, the `\' should revert to printing +% a backslash. +% If the file did not have a `\input texinfo', then it is turned off after +% the first line; otherwise the first `\' in the file would cause an error. +% This is used on the very last line of this file, texinfo.tex. +% We also use @c to call @fixbackslash, in case ends of lines are hidden. +{ +@catcode`@^=7 +@catcode`@^^M=13@gdef@enablebackslashhack{% + @global@let\ = @eatinput% + @catcode`@^^M=13% + @def@c{@fixbackslash@c}% + @def ^^M{@let^^M@secondlinenl}% + @gdef @secondlinenl{@let^^M@thirdlinenl}% + @gdef @thirdlinenl{@fixbackslash}% +}} + +{@catcode`@^=7 @catcode`@^^M=13% +@gdef@eatinput input texinfo#1^^M{@fixbackslash}} + +@gdef@fixbackslash{% + @ifx\@eatinput @let\ = @ttbackslash @fi + @catcode13=5 % regular end of line + @let@c=@texinfoc + % Also turn back on active characters that might appear in the input + % file name, in case not using a pre-dumped format. + @catcode`+=@active + @catcode`@_=@active + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. This macro, @fixbackslash, gets + % called at the beginning of every Texinfo file. Not opening texinfo.cnf + % directly in this file, texinfo.tex, makes it possible to make a format + % file for Texinfo. + % + @openin 1 texinfo.cnf + @ifeof 1 @else @input texinfo.cnf @fi + @closein 1 +} + + +% Say @foo, not \foo, in error messages. +@escapechar = `@@ + +% These (along with & and #) are made active for url-breaking, so need +% active definitions as the normal characters. +@def@normaldot{.} +@def@normalquest{?} +@def@normalslash{/} + +% These look ok in all fonts, so just make them not special. +% @hashchar{} gets its own user-level command, because of #line. +@catcode`@& = @other @def@normalamp{&} +@catcode`@# = @other @def@normalhash{#} +@catcode`@% = @other @def@normalpercent{%} + +@let @hashchar = @normalhash + +@c Finally, make ` and ' active, so that txicodequoteundirected and +@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we +@c don't make ` and ' active, @code will not get them as active chars. +@c Do this last of all since we use ` in the previous @catcode assignments. +@catcode`@'=@active +@catcode`@`=@active +@markupsetuplqdefault +@markupsetuprqdefault + +@c Local variables: +@c eval: (add-hook 'write-file-hooks 'time-stamp) +@c page-delimiter: "^\\\\message\\|emacs-page" +@c time-stamp-start: "def\\\\texinfoversion{" +@c time-stamp-format: "%:y-%02m-%02d.%02H" +@c time-stamp-end: "}" +@c End: + +@c vim:sw=2: + +@ignore + arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 +@end ignore +@enablebackslashhack diff --git a/bash-5.1/doc/version.texi b/bash-5.1/doc/version.texi new file mode 100644 index 0000000..561a6d0 --- /dev/null +++ b/bash-5.1/doc/version.texi @@ -0,0 +1,11 @@ +@ignore +Copyright (C) 1988-2020 Free Software Foundation, Inc. +@end ignore + +@set LASTCHANGE Thu Oct 29 16:18:54 EDT 2020 + +@set EDITION 5.1 +@set VERSION 5.1 + +@set UPDATED 29 October 2020 +@set UPDATED-MONTH October 2020 diff --git a/bash-5.1/error.c b/bash-5.1/error.c new file mode 100644 index 0000000..7df4b14 --- /dev/null +++ b/bash-5.1/error.c @@ -0,0 +1,511 @@ +/* error.c -- Functions for handling errors. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (PREFER_STDARG) +# include +#else +# include +#endif + +#include + +#include +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#include "bashansi.h" +#include "bashintl.h" + +#include "shell.h" +#include "execute_cmd.h" +#include "flags.h" +#include "input.h" + +#if defined (HISTORY) +# include "bashhist.h" +#endif + +extern int executing_line_number PARAMS((void)); + +#if defined (JOB_CONTROL) +extern pid_t shell_pgrp; +extern int give_terminal_to PARAMS((pid_t, int)); +#endif /* JOB_CONTROL */ + +#if defined (ARRAY_VARS) +extern const char * const bash_badsub_errmsg; +#endif + +static void error_prolog PARAMS((int)); + +/* The current maintainer of the shell. You change this in the + Makefile. */ +#if !defined (MAINTAINER) +#define MAINTAINER "bash-maintainers@gnu.org" +#endif + +const char * const the_current_maintainer = MAINTAINER; + +int gnu_error_format = 0; + +static void +error_prolog (print_lineno) + int print_lineno; +{ + char *ename; + int line; + + ename = get_name_for_error (); + line = (print_lineno && interactive_shell == 0) ? executing_line_number () : -1; + + if (line > 0) + fprintf (stderr, "%s:%s%d: ", ename, gnu_error_format ? "" : _(" line "), line); + else + fprintf (stderr, "%s: ", ename); +} + +/* Return the name of the shell or the shell script for error reporting. */ +char * +get_name_for_error () +{ + char *name; +#if defined (ARRAY_VARS) + SHELL_VAR *bash_source_v; + ARRAY *bash_source_a; +#endif + + name = (char *)NULL; + if (interactive_shell == 0) + { +#if defined (ARRAY_VARS) + bash_source_v = find_variable ("BASH_SOURCE"); + if (bash_source_v && array_p (bash_source_v) && + (bash_source_a = array_cell (bash_source_v))) + name = array_reference (bash_source_a, 0); + if (name == 0 || *name == '\0') /* XXX - was just name == 0 */ +#endif + name = dollar_vars[0]; + } + if (name == 0 && shell_name && *shell_name) + name = base_pathname (shell_name); + if (name == 0) +#if defined (PROGRAM) + name = PROGRAM; +#else + name = "bash"; +#endif + + return (name); +} + +/* Report an error having to do with FILENAME. This does not use + sys_error so the filename is not interpreted as a printf-style + format string. */ +void +file_error (filename) + const char *filename; +{ + report_error ("%s: %s", filename, strerror (errno)); +} + +void +#if defined (PREFER_STDARG) +programming_error (const char *format, ...) +#else +programming_error (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + char *h; + +#if defined (JOB_CONTROL) + give_terminal_to (shell_pgrp, 0); +#endif /* JOB_CONTROL */ + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + va_end (args); + +#if defined (HISTORY) + if (remember_on_history) + { + h = last_history_line (); + fprintf (stderr, _("last command: %s\n"), h ? h : "(null)"); + } +#endif + +#if 0 + fprintf (stderr, "Report this to %s\n", the_current_maintainer); +#endif + + fprintf (stderr, _("Aborting...")); + fflush (stderr); + + abort (); +} + +/* Print an error message and, if `set -e' has been executed, exit the + shell. Used in this file by file_error and programming_error. Used + outside this file mostly to report substitution and expansion errors, + and for bad invocation options. */ +void +#if defined (PREFER_STDARG) +report_error (const char *format, ...) +#else +report_error (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + + error_prolog (1); + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + + va_end (args); + if (exit_immediately_on_error) + { + if (last_command_exit_value == 0) + last_command_exit_value = EXECUTION_FAILURE; + exit_shell (last_command_exit_value); + } +} + +void +#if defined (PREFER_STDARG) +fatal_error (const char *format, ...) +#else +fatal_error (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + + error_prolog (0); + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + + va_end (args); + sh_exit (2); +} + +void +#if defined (PREFER_STDARG) +internal_error (const char *format, ...) +#else +internal_error (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + + error_prolog (1); + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + + va_end (args); +} + +void +#if defined (PREFER_STDARG) +internal_warning (const char *format, ...) +#else +internal_warning (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + + error_prolog (1); + fprintf (stderr, _("warning: ")); + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + + va_end (args); +} + +void +#if defined (PREFER_STDARG) +internal_inform (const char *format, ...) +#else +internal_inform (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + + error_prolog (1); + /* TRANSLATORS: this is a prefix for informational messages. */ + fprintf (stderr, _("INFORM: ")); + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + + va_end (args); +} + +void +#if defined (PREFER_STDARG) +sys_error (const char *format, ...) +#else +sys_error (format, va_alist) + const char *format; + va_dcl +#endif +{ + int e; + va_list args; + + e = errno; + error_prolog (0); + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + fprintf (stderr, ": %s\n", strerror (e)); + + va_end (args); +} + +/* An error from the parser takes the general form + + shell_name: input file name: line number: message + + The input file name and line number are omitted if the shell is + currently interactive. If the shell is not currently interactive, + the input file name is inserted only if it is different from the + shell name. */ +void +#if defined (PREFER_STDARG) +parser_error (int lineno, const char *format, ...) +#else +parser_error (lineno, format, va_alist) + int lineno; + const char *format; + va_dcl +#endif +{ + va_list args; + char *ename, *iname; + + ename = get_name_for_error (); + iname = yy_input_name (); + + if (interactive) + fprintf (stderr, "%s: ", ename); + else if (interactive_shell) + fprintf (stderr, "%s: %s:%s%d: ", ename, iname, gnu_error_format ? "" : _(" line "), lineno); + else if (STREQ (ename, iname)) + fprintf (stderr, "%s:%s%d: ", ename, gnu_error_format ? "" : _(" line "), lineno); + else + fprintf (stderr, "%s: %s:%s%d: ", ename, iname, gnu_error_format ? "" : _(" line "), lineno); + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + + va_end (args); + + if (exit_immediately_on_error) + exit_shell (last_command_exit_value = 2); +} + +#ifdef DEBUG +/* This assumes ASCII and is suitable only for debugging */ +char * +strescape (str) + const char *str; +{ + char *r, *result; + unsigned char *s; + + r = result = (char *)xmalloc (strlen (str) * 2 + 1); + + for (s = (unsigned char *)str; s && *s; s++) + { + if (*s < ' ') + { + *r++ = '^'; + *r++ = *s+64; + } + else if (*s == 127) + { + *r++ = '^'; + *r++ = '?'; + } + else + *r++ = *s; + } + + *r = '\0'; + return result; +} + +void +#if defined (PREFER_STDARG) +itrace (const char *format, ...) +#else +itrace (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + + fprintf(stderr, "TRACE: pid %ld: ", (long)getpid()); + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + + va_end (args); + + fflush(stderr); +} + +/* A trace function for silent debugging -- doesn't require a control + terminal. */ +void +#if defined (PREFER_STDARG) +trace (const char *format, ...) +#else +trace (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + static FILE *tracefp = (FILE *)NULL; + + if (tracefp == NULL) + tracefp = fopen("/tmp/bash-trace.log", "a+"); + + if (tracefp == NULL) + tracefp = stderr; + else + fcntl (fileno (tracefp), F_SETFD, 1); /* close-on-exec */ + + fprintf(tracefp, "TRACE: pid %ld: ", (long)getpid()); + + SH_VA_START (args, format); + + vfprintf (tracefp, format, args); + fprintf (tracefp, "\n"); + + va_end (args); + + fflush(tracefp); +} + +#endif /* DEBUG */ + +/* **************************************************************** */ +/* */ +/* Common error reporting */ +/* */ +/* **************************************************************** */ + + +static const char * const cmd_error_table[] = { + N_("unknown command error"), /* CMDERR_DEFAULT */ + N_("bad command type"), /* CMDERR_BADTYPE */ + N_("bad connector"), /* CMDERR_BADCONN */ + N_("bad jump"), /* CMDERR_BADJUMP */ + 0 +}; + +void +command_error (func, code, e, flags) + const char *func; + int code, e, flags; /* flags currently unused */ +{ + if (code > CMDERR_LAST) + code = CMDERR_DEFAULT; + + programming_error ("%s: %s: %d", func, _(cmd_error_table[code]), e); +} + +char * +command_errstr (code) + int code; +{ + if (code > CMDERR_LAST) + code = CMDERR_DEFAULT; + + return (_(cmd_error_table[code])); +} + +#ifdef ARRAY_VARS +void +err_badarraysub (s) + const char *s; +{ + report_error ("%s: %s", s, _(bash_badsub_errmsg)); +} +#endif + +void +err_unboundvar (s) + const char *s; +{ + report_error (_("%s: unbound variable"), s); +} + +void +err_readonly (s) + const char *s; +{ + report_error (_("%s: readonly variable"), s); +} diff --git a/bash-5.1/error.h b/bash-5.1/error.h new file mode 100644 index 0000000..3082809 --- /dev/null +++ b/bash-5.1/error.h @@ -0,0 +1,73 @@ +/* error.h -- External declarations of functions appearing in error.c. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_ERROR_H_) +#define _ERROR_H_ + +#include "stdc.h" + +/* Get the name of the shell or shell script for an error message. */ +extern char *get_name_for_error PARAMS((void)); + +/* Report an error having to do with FILENAME. */ +extern void file_error PARAMS((const char *)); + +/* Report a programmer's error, and abort. Pass REASON, and ARG1 ... ARG5. */ +extern void programming_error PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); + +/* General error reporting. Pass FORMAT and ARG1 ... ARG5. */ +extern void report_error PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); + +/* Error messages for parts of the parser that don't call report_syntax_error */ +extern void parser_error PARAMS((int, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); + +/* Report an unrecoverable error and exit. Pass FORMAT and ARG1 ... ARG5. */ +extern void fatal_error PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); + +/* Report a system error, like BSD warn(3). */ +extern void sys_error PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); + +/* Report an internal error. */ +extern void internal_error PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); + +/* Report an internal warning. */ +extern void internal_warning PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); + +/* Report an internal informational notice. */ +extern void internal_inform PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); + +/* Debugging functions, not enabled in released version. */ +extern char *strescape PARAMS((const char *)); +extern void itrace PARAMS((const char *, ...)) __attribute__ ((__format__ (printf, 1, 2))); +extern void trace PARAMS((const char *, ...)) __attribute__ ((__format__ (printf, 1, 2))); + +/* Report an error having to do with command parsing or execution. */ +extern void command_error PARAMS((const char *, int, int, int)); + +extern char *command_errstr PARAMS((int)); + +/* Specific error message functions that eventually call report_error or + internal_error. */ + +extern void err_badarraysub PARAMS((const char *)); +extern void err_unboundvar PARAMS((const char *)); +extern void err_readonly PARAMS((const char *)); + +#endif /* !_ERROR_H_ */ diff --git a/bash-5.1/eval.c b/bash-5.1/eval.c new file mode 100644 index 0000000..f197033 --- /dev/null +++ b/bash-5.1/eval.c @@ -0,0 +1,401 @@ +/* eval.c -- reading and evaluating commands. */ + +/* Copyright (C) 1996-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "bashansi.h" +#include + +#include + +#include "bashintl.h" + +#include "shell.h" +#include "parser.h" +#include "flags.h" +#include "trap.h" + +#include "builtins/common.h" + +#include "input.h" +#include "execute_cmd.h" + +#if defined (HISTORY) +# include "bashhist.h" +#endif + +static void send_pwd_to_eterm PARAMS((void)); +static sighandler alrm_catcher PARAMS((int)); + +/* Read and execute commands until EOF is reached. This assumes that + the input source has already been initialized. */ +int +reader_loop () +{ + int our_indirection_level; + COMMAND * volatile current_command; + + USE_VAR(current_command); + + current_command = (COMMAND *)NULL; + + our_indirection_level = ++indirection_level; + + if (just_one_command) + reset_readahead_token (); + + while (EOF_Reached == 0) + { + int code; + + code = setjmp_nosigs (top_level); + +#if defined (PROCESS_SUBSTITUTION) + unlink_fifo_list (); +#endif /* PROCESS_SUBSTITUTION */ + + /* XXX - why do we set this every time through the loop? And why do + it if SIGINT is trapped in an interactive shell? */ + if (interactive_shell && signal_is_ignored (SIGINT) == 0 && signal_is_trapped (SIGINT) == 0) + set_signal_handler (SIGINT, sigint_sighandler); + + if (code != NOT_JUMPED) + { + indirection_level = our_indirection_level; + + switch (code) + { + /* Some kind of throw to top_level has occurred. */ + case FORCE_EOF: + case ERREXIT: + case EXITPROG: + current_command = (COMMAND *)NULL; + if (exit_immediately_on_error) + variable_context = 0; /* not in a function */ + EOF_Reached = EOF; + goto exec_done; + + case DISCARD: + /* Make sure the exit status is reset to a non-zero value, but + leave existing non-zero values (e.g., > 128 on signal) + alone. */ + if (last_command_exit_value == 0) + set_exit_status (EXECUTION_FAILURE); + if (subshell_environment) + { + current_command = (COMMAND *)NULL; + EOF_Reached = EOF; + goto exec_done; + } + /* Obstack free command elements, etc. */ + if (current_command) + { + dispose_command (current_command); + current_command = (COMMAND *)NULL; + } + + restore_sigmask (); + break; + + default: + command_error ("reader_loop", CMDERR_BADJUMP, code, 0); + } + } + + executing = 0; + if (temporary_env) + dispose_used_env_vars (); + +#if (defined (ultrix) && defined (mips)) || defined (C_ALLOCA) + /* Attempt to reclaim memory allocated with alloca (). */ + (void) alloca (0); +#endif + + if (read_command () == 0) + { + + if (interactive_shell == 0 && (read_but_dont_execute && !rpm_requires)) + { + set_exit_status (EXECUTION_SUCCESS); + dispose_command (global_command); + global_command = (COMMAND *)NULL; + } + else if (current_command = global_command) + { + global_command = (COMMAND *)NULL; + + /* If the shell is interactive, expand and display $PS0 after reading a + command (possibly a list or pipeline) and before executing it. */ + if (interactive && ps0_prompt) + { + char *ps0_string; + + ps0_string = decode_prompt_string (ps0_prompt); + if (ps0_string && *ps0_string) + { + fprintf (stderr, "%s", ps0_string); + fflush (stderr); + } + free (ps0_string); + } + + current_command_number++; + + executing = 1; + stdin_redir = 0; + + execute_command (current_command); + + exec_done: + QUIT; + + if (current_command) + { + dispose_command (current_command); + current_command = (COMMAND *)NULL; + } + } + } + else + { + /* Parse error, maybe discard rest of stream if not interactive. */ + if (interactive == 0) + EOF_Reached = EOF; + } + if (just_one_command) + EOF_Reached = EOF; + } + indirection_level--; + return (last_command_exit_value); +} + +/* Pretty print shell scripts */ +int +pretty_print_loop () +{ + COMMAND *current_command; + char *command_to_print; + int code; + int global_posix_mode, last_was_newline; + + global_posix_mode = posixly_correct; + last_was_newline = 0; + while (EOF_Reached == 0) + { + code = setjmp_nosigs (top_level); + if (code) + return (EXECUTION_FAILURE); + if (read_command() == 0) + { + current_command = global_command; + global_command = 0; + posixly_correct = 1; /* print posix-conformant */ + if (current_command && (command_to_print = make_command_string (current_command))) + { + printf ("%s\n", command_to_print); /* for now */ + last_was_newline = 0; + } + else if (last_was_newline == 0) + { + printf ("\n"); + last_was_newline = 1; + } + posixly_correct = global_posix_mode; + dispose_command (current_command); + } + else + return (EXECUTION_FAILURE); + } + + return (EXECUTION_SUCCESS); +} + +static sighandler +alrm_catcher(i) + int i; +{ + char *msg; + + msg = _("\007timed out waiting for input: auto-logout\n"); + write (1, msg, strlen (msg)); + + bash_logout (); /* run ~/.bash_logout if this is a login shell */ + jump_to_top_level (EXITPROG); + SIGRETURN (0); +} + +/* Send an escape sequence to emacs term mode to tell it the + current working directory. */ +static void +send_pwd_to_eterm () +{ + char *pwd, *f; + + f = 0; + pwd = get_string_value ("PWD"); + if (pwd == 0) + f = pwd = get_working_directory ("eterm"); + fprintf (stderr, "\032/%s\n", pwd); + free (f); +} + +#if defined (ARRAY_VARS) +/* Caller ensures that A has a non-zero number of elements */ +int +execute_array_command (a, v) + ARRAY *a; + void *v; +{ + char *tag; + char **argv; + int argc, i; + + tag = (char *)v; + argc = 0; + argv = array_to_argv (a, &argc); + for (i = 0; i < argc; i++) + { + if (argv[i] && argv[i][0]) + execute_variable_command (argv[i], tag); + } + strvec_dispose (argv); + return 0; +} +#endif + +static void +execute_prompt_command () +{ + char *command_to_execute; + SHELL_VAR *pcv; +#if defined (ARRAY_VARS) + ARRAY *pcmds; +#endif + + pcv = find_variable ("PROMPT_COMMAND"); + if (pcv == 0 || var_isset (pcv) == 0 || invisible_p (pcv)) + return; +#if defined (ARRAY_VARS) + if (array_p (pcv)) + { + if ((pcmds = array_cell (pcv)) && array_num_elements (pcmds) > 0) + execute_array_command (pcmds, "PROMPT_COMMAND"); + return; + } + else if (assoc_p (pcv)) + return; /* currently don't allow associative arrays here */ +#endif + + command_to_execute = value_cell (pcv); + if (command_to_execute && *command_to_execute) + execute_variable_command (command_to_execute, "PROMPT_COMMAND"); +} + +/* Call the YACC-generated parser and return the status of the parse. + Input is read from the current input stream (bash_input). yyparse + leaves the parsed command in the global variable GLOBAL_COMMAND. + This is where PROMPT_COMMAND is executed. */ +int +parse_command () +{ + int r; + + need_here_doc = 0; + run_pending_traps (); + + /* Allow the execution of a random command just before the printing + of each primary prompt. If the shell variable PROMPT_COMMAND + is set then its value (array or string) is the command(s) to execute. */ + /* The tests are a combination of SHOULD_PROMPT() and prompt_again() + from parse.y, which are the conditions under which the prompt is + actually printed. */ + if (interactive && bash_input.type != st_string && parser_expanding_alias() == 0) + { +#if defined (READLINE) + if (no_line_editing || (bash_input.type == st_stdin && parser_will_prompt ())) +#endif + execute_prompt_command (); + + if (running_under_emacs == 2) + send_pwd_to_eterm (); /* Yuck */ + } + + current_command_line_count = 0; + r = yyparse (); + + if (need_here_doc) + gather_here_documents (); + + return (r); +} + +/* Read and parse a command, returning the status of the parse. The command + is left in the globval variable GLOBAL_COMMAND for use by reader_loop. + This is where the shell timeout code is executed. */ +int +read_command () +{ + SHELL_VAR *tmout_var; + int tmout_len, result; + SigHandler *old_alrm; + + set_current_prompt_level (1); + global_command = (COMMAND *)NULL; + + /* Only do timeouts if interactive. */ + tmout_var = (SHELL_VAR *)NULL; + tmout_len = 0; + old_alrm = (SigHandler *)NULL; + + if (interactive) + { + tmout_var = find_variable ("TMOUT"); + + if (tmout_var && var_isset (tmout_var)) + { + tmout_len = atoi (value_cell (tmout_var)); + if (tmout_len > 0) + { + old_alrm = set_signal_handler (SIGALRM, alrm_catcher); + alarm (tmout_len); + } + } + } + + QUIT; + + current_command_line_count = 0; + result = parse_command (); + + if (interactive && tmout_var && (tmout_len > 0)) + { + alarm(0); + set_signal_handler (SIGALRM, old_alrm); + } + + return (result); +} diff --git a/bash-5.1/examples/INDEX.html b/bash-5.1/examples/INDEX.html new file mode 100644 index 0000000..bcca1f9 --- /dev/null +++ b/bash-5.1/examples/INDEX.html @@ -0,0 +1,426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathDescriptionX-Ref
./obashdbDeprecated sample implementation of a bash debugger
./completeShell completion code
./functionsExample functions
./functions/array-stuffVarious array functions (ashift, array_sort, reverse).
./functions/array-to-stringConvert an array to a string.
./functions/autoloadAn almost ksh-compatible 'autoload' (no lazy load).ksh
./functions/autoload.v2An almost ksh-compatible 'autoload' (no lazy load).ksh
./functions/autoload.v3A more ksh-compatible 'autoload' (with lazy load).ksh
./functions/autoload.v3An updated ksh-compatible 'autoload'.ksh
./functions/basenameA replacement for basename(1).basename
./functions/csh-compatA C-shell compatibility package.csh
./functions/dirnameA replacement for dirname(1).dirname
./functions/dirstackDirectory stack functions.
./functions/exitstatDisplay the exit status of processes.
./functions/externalLike 'command' but FORCES use of external command.
./functions/factRecursive factorial function.
./functions/fsttyFront end to sync TERM changes to both stty(1) and readline 'bind'.stty.bash
./functions/inetaddrInternet address conversion (inet2hex & hex2inet).
./functions/inpathReturn zero if the argument is in the path and executable.inpath
./functions/isnum2Test user input on numeric values, with floating point.
./functions/isvalidipTest user input for valid IP Addresses.
./functions/ksh-cdksh-like 'cd': cd [-LP] [dir [change]].ksh
./functions/ksh-compat-testksh-like arithmetic test replacements.ksh
./functions/kshenvFunctions and aliases to provide the beginnings of a ksh environment for bash.ksh
./functions/loginReplace the 'login' and 'newgrp' builtins in old Bourne shells.
./functions/notify.bashNotify when jobs change status.
./functions/READMEREADME
./functions/seqGenerate a sequence from m to n, m defaults to 1.
./functions/seq2Generate a sequence from m to n, m defaults to 1.
./functions/shcatReadline-based pager.cat, readline pager
./functions/shcat2Readline-based pagers.cat, readline pager
./functions/sort-pos-paramsSort the positional parameters.
./functions/substrA function to emulate the ancient ksh builtin.ksh
./functions/substr2A function to emulate the ancient ksh builtin.ksh
./functions/whatisAn implementation of the 10th Edition Unix sh builtin 'whatis(1)' command.
./functions/whenceAn almost-ksh compatible 'whence(1)' command.
./functions/whichAn emulation of 'which(1)' as it appears in FreeBSD.
./loadables/Example loadable replacements
./loadables/basename.cReturn non-directory portion of pathname.basename
./loadables/cat.ccat(1) replacement with no options - the way cat was intended.cat, readline pager
./loadables/dirname.cReturn directory portion of pathname.dirname
./loadables/fdflags.cDisplay or modify file descriptor flags
./loadables/finfo.cPrint file info.
./loadables/head.cCopy first part of files.
./loadables/hello.cObligatory "Hello World" / sample loadable.
./loadables/id.cPOSIX.2 user identity.
./loadables/ln.cMake links.
./loadables/logname.cPrint login name of current user.
./loadables/Makefile.inSimple makefile for the sample loadable builtins.
./loadables/Makefile.inc.inSample makefile to use for loadable builtin development.
./loadables/mkdir.cMake directories.
./loadables/mypid.cDemonstrate how a loadable builtin can create and delete shell variables.
./loadables/necho.cecho without options or argument interpretation.
./loadables/pathchk.cCheck pathnames for validity and portability.
./loadables/print.cLoadable ksh-93 style print builtin.
./loadables/printenv.cMinimal builtin clone of BSD printenv(1).
./loadables/push.cAnyone remember TOPS-20?
./loadables/READMEREADME
./loadables/realpath.cCanonicalize pathnames, resolving symlinks.
./loadables/rm.cRemove file.
./loadables/rmdir.cRemove directory.
./loadables/setpgid.cSet a child process's process group. +
./loadables/sleep.csleep for fractions of a second.
./loadables/stat.cLoad an associative array with stat information about a file.
./loadables/strftime.cLoadable builtin interface to strftime(3).
./loadables/sync.cSync the disks by forcing pending filesystem writes to complete.
./loadables/tee.cDuplicate standard input.
./loadables/template.cExample template for loadable builtin.
./loadables/truefalse.cTrue and false builtins.
./loadables/tty.cReturn terminal name.
./loadables/uname.cPrint system information.
./loadables/unlink.cRemove a directory entry.
./loadables/whoami.cPrint out username of current user.
./loadables/perl/Illustrate how to build a Perl interpreter into bash.
./miscMiscellaneous
./misc/aliasconv.bashConvert csh aliases to bash aliases and functions.csh, xalias
./misc/aliasconv.shConvert csh aliases to bash aliases and functions.csh, xalias
./misc/cshtobashConvert csh aliases, environment variables, and variables to bash equivalents.csh, xalias
./misc/READMEREADME
./scriptsExample scripts
./scripts/cat.shReadline-based pager.cat, readline pager
./scripts/centerCenter - center a group of lines.
./scripts/inpathSearch $PATH for a file the same name as $1; return TRUE if found.inpath
./scripts/READMEREADME
./scripts/shpromptDisplay a prompt and get an answer satisfying certain criteria.ask
./scripts/spin.bashDisplay a 'spinning wheel' to show progress.
./scripts/xterm_titlePrint the contents of the xterm title bar.
./scripts/zprintfEmulate printf (obsolete since it's now a bash builtin).
./startup-filesExample Start-up files.
./startup-files/Bash_aliasesSome useful aliases (Fox).
./startup-files/Bash_profileSample startup file for bash login shells (Fox).
./startup-files/bash-profileSample startup file for bash login shells (Ramey).
./startup-files/bashrcSample Bourne Again SHell init file (Ramey).
./startup-files/Bashrc.bfoxSample Bourne Again SHell init file (Fox).
./startup-files/READMEREADME
diff --git a/bash-5.1/examples/INDEX.txt b/bash-5.1/examples/INDEX.txt new file mode 100644 index 0000000..b47e211 --- /dev/null +++ b/bash-5.1/examples/INDEX.txt @@ -0,0 +1,103 @@ +Path Description X-Ref +./obashdb Deprecated sample implementation of a bash debugger + +./complete Shell completion code + +./functions Example functions +./functions/array-stuff Various array functions (ashift, array_sort, reverse). +./functions/array-to-string Convert an array to a string. +./functions/autoload An almost ksh-compatible 'autoload' (no lazy load). ksh +./functions/autoload.v2 An almost ksh-compatible 'autoload' (no lazy load). ksh +./functions/autoload.v3 A more ksh-compatible 'autoload' (with lazy load). ksh +./functions/autoload.v4 An updated ksh-compatible 'autoload'. ksh +./functions/basename A replacement for basename(1). basename +./functions/csh-compat A C-shell compatibility package. csh +./functions/dirname A replacement for dirname(1). dirname +./functions/dirstack Directory stack functions. +./functions/exitstat Display the exit status of processes. +./functions/external Like 'command' but FORCES use of external command. +./functions/fact Recursive factorial function. +./functions/fstty Front end to sync TERM changes to both stty(1) and readline 'bind'. stty.bash +./functions/inetaddr Internet address conversion (inet2hex & hex2inet). +./functions/inpath Return zero if the argument is in the path and executable. inpath +./functions/isnum2 Test user input on numeric values, with floating point. +./functions/isvalidip Test user input for valid IP Addresses. +./functions/ksh-cd ksh-like 'cd': cd [-LP] [dir [change]]. ksh +./functions/ksh-compat-test ksh-like arithmetic test replacements. ksh +./functions/kshenv Functions and aliases to provide the beginnings of a ksh environment for bash. ksh +./functions/login Replace the 'login' and 'newgrp' builtins in old Bourne shells. +./functions/notify.bash Notify when jobs change status. +./functions/README README +./functions/seq Generate a sequence from m to n, m defaults to 1. +./functions/seq2 Generate a sequence from m to n, m defaults to 1. +./functions/shcat Readline-based pager. cat, readline pager +./functions/shcat2 Readline-based pagers. cat, readline pager +./functions/sort-pos-params Sort the positional parameters. +./functions/substr A function to emulate the ancient ksh builtin. ksh +./functions/substr2 A function to emulate the ancient ksh builtin. ksh +./functions/whatis An implementation of the 10th Edition Unix sh builtin 'whatis(1)' command. +./functions/whence An almost-ksh compatible 'whence(1)' command. +./functions/which An emulation of 'which(1)' as it appears in FreeBSD. + +./loadables/ Example loadable replacements +./loadables/basename.c Return non-directory portion of pathname. basename +./loadables/cat.c cat(1) replacement with no options - the way cat was intended. cat, readline pager +./loadables/dirname.c Return directory portion of pathname. dirname +./loadables/fdflags.c Display or modify file descriptor flags +./loadables/finfo.c Print file info. +./loadables/head.c Copy first part of files. +./loadables/hello.c Obligatory "Hello World" / sample loadable. +./loadables/id.c POSIX.2 user identity. +./loadables/ln.c Make links. +./loadables/logname.c Print login name of current user. +./loadables/Makefile.in Simple makefile for the sample loadable builtins. +./loadables/Makefile.inc.in Sample makefile to use for loadable builtin development. +./loadables/mkdir.c Make directories. +./loadables/mypid.c Demonstrate how a loadable builtin can create and delete shell variables. +./loadables/necho.c echo without options or argument interpretation. +./loadables/pathchk.c Check pathnames for validity and portability. +./loadables/print.c Loadable ksh-93 style print builtin. +./loadables/printenv.c Minimal builtin clone of BSD printenv(1). +./loadables/push.c Anyone remember TOPS-20? +./loadables/README README +./loadables/realpath.c Canonicalize pathnames, resolving symlinks. +./loadables/rm.c Remove file. +./loadables/rmdir.c Remove directory. +./loadables/setpgid.c Set a child process's process group. +./loadables/sleep.c sleep for fractions of a second. +./loadables/stat.c Load an associative array with stat information about a file. +./loadables/strftime.c Loadable builtin interface to strftime(3). +./loadables/sync.c Sync the disks by forcing pending filesystem writes to complete. +./loadables/tee.c Duplicate standard input. +./loadables/template.c Example template for loadable builtin. +./loadables/truefalse.c True and false builtins. +./loadables/tty.c Return terminal name. +./loadables/uname.c Print system information. +./loadables/unlink.c Remove a directory entry. +./loadables/whoami.c Print out username of current user. + +./loadables/perl/ Illustrate how to build a Perl interpreter into bash. + +./misc Miscellaneous +./misc/aliasconv.bash Convert csh aliases to bash aliases and functions. csh, xalias +./misc/aliasconv.sh Convert csh aliases to bash aliases and functions. csh, xalias +./misc/cshtobash Convert csh aliases, environment variables, and variables to bash equivalents. csh, xalias +./misc/README README + +./scripts Example scripts +./scripts/cat.sh Readline-based pager. cat, readline pager +./scripts/center Center - center a group of lines. +./scripts/inpath Search $PATH for a file the same name as $1; return TRUE if found. inpath +./scripts/shprompt Display a prompt and get an answer satisfying certain criteria. ask +./scripts/spin.bash Display a 'spinning wheel' to show progress. +./scripts/xterm_title Print the contents of the xterm title bar. +./scripts/zprintf Emulate printf (obsolete since it's now a bash builtin). + +./startup-files Example Start-up files. +./startup-files/Bash_aliases Some useful aliases (Fox). +./startup-files/Bash_profile Sample startup file for bash login shells (Fox). +./startup-files/bash-profile Sample startup file for bash login shells (Ramey). +./startup-files/bashrc Sample Bourne Again SHell init file (Ramey). +./startup-files/Bashrc.bfox Sample Bourne Again SHell init file (Fox). +./startup-files/README README + diff --git a/bash-5.1/examples/bash-completion/README b/bash-5.1/examples/bash-completion/README new file mode 100644 index 0000000..fb5e765 --- /dev/null +++ b/bash-5.1/examples/bash-completion/README @@ -0,0 +1,7 @@ +Master source: https://github.com/scop/bash-completion + +This is the latest version of the bash-completion package, which provides +programmable completion specifications for a large number of commands. + +If you are a vendor installing bash or preparing a package containing bash, +please install the latest version of bash-completion when installing bash. diff --git a/bash-5.1/examples/bash-completion/bash-completion-2.5.tar.xz b/bash-5.1/examples/bash-completion/bash-completion-2.5.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..f5b90790ca0ec92dd6aaa9689fdf536220717502 GIT binary patch literal 276732 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�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 *15B`c#ppFG?aFM9HNU1!m_ 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

(N; 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 +# +# 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. +# +# The latest version of this software can be obtained here: +# +# http://www.caliban.org/bash/index.shtml#completion +# +# RELEASE: 20060301 + +if [[ $- == *v* ]]; then + BASH_COMPLETION_ORIGINAL_V_VALUE="-v" +else + BASH_COMPLETION_ORIGINAL_V_VALUE="+v" +fi + +if [[ -n $BASH_COMPLETION_DEBUG ]]; then + set -v +else + set +v +fi + +# Alter the following to reflect the location of this file. +# +[ -n "$BASH_COMPLETION" ] || BASH_COMPLETION=/etc/bash_completion +[ -n "$BASH_COMPLETION_DIR" ] || BASH_COMPLETION_DIR=/etc/bash_completion.d +readonly BASH_COMPLETION BASH_COMPLETION_DIR + +# Set a couple of useful vars +# +UNAME=$( uname -s ) +# strip OS type and version under Cygwin (e.g. CYGWIN_NT-5.1 => Cygwin) +UNAME=${UNAME/CYGWIN_*/Cygwin} +RELEASE=$( uname -r ) + +# features supported by bash 2.05 and higher +if [ ${BASH_VERSINFO[0]} -eq 2 ] && [[ ${BASH_VERSINFO[1]} > 04 ]] || + [ ${BASH_VERSINFO[0]} -gt 2 ]; then + declare -r bash205=$BASH_VERSION 2>/dev/null || : + default="-o default" + dirnames="-o dirnames" + filenames="-o filenames" +fi +# features supported by bash 2.05b and higher +if [ ${BASH_VERSINFO[0]} -eq 2 ] && [[ ${BASH_VERSINFO[1]} = "05b" ]] || + [ ${BASH_VERSINFO[0]} -gt 2 ]; then + declare -r bash205b=$BASH_VERSION 2>/dev/null || : + nospace="-o nospace" +fi +# features supported by bash 3.0 and higher +if [ ${BASH_VERSINFO[0]} -gt 2 ]; then + declare -r bash3=$BASH_VERSION 2>/dev/null || : + bashdefault="-o bashdefault" + plusdirs="-o plusdirs" +fi + +# Turn on extended globbing and programmable completion +shopt -s extglob progcomp + +# A lot of the following one-liners were taken directly from the +# completion examples provided with the bash 2.04 source distribution + +# Make directory commands see only directories +complete -d pushd + +# The following section lists completions that are redefined later +# Do NOT break these over multiple lines. +# +# START exclude -- do NOT remove this line +complete -f -X '!*.?(t)bz?(2)' bunzip2 bzcat bzcmp bzdiff bzegrep bzfgrep bzgrep +complete -f -X '!*.@(zip|ZIP|jar|JAR|exe|EXE|pk3|war|wsz|ear|zargo|xpi|sxw|ott)' unzip zipinfo +complete -f -X '*.Z' compress znew +complete -f -X '!*.@(Z|gz|tgz|Gz|dz)' gunzip zcmp zdiff zcat zegrep zfgrep zgrep zless zmore +complete -f -X '!*.Z' uncompress +complete -f -X '!*.@(gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX)' ee display +complete -f -X '!*.@(gif|jp?(e)g|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|GIF|JPG|JP?(E)G|TIF?(F)|PNG|P[BGP]M|BMP|X[BP]M|RLE|RGB|PCX|FITS|PM)' xv qiv +complete -f -X '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))' gv ggv kghostview +complete -f -X '!*.@(dvi|DVI)?(.@(gz|Z|bz2))' xdvi +complete -f -X '!*.@(dvi|DVI)?(.@(gz|bz2))' kdvi +complete -f -X '!*.@(dvi|DVI)' dvips dviselect dvitype dvipdf advi dvipdfm dvipdfmx +complete -f -X '!*.@(pdf|PDF)' acroread gpdf xpdf +complete -f -X '!*.@(?(e)ps|?(E)PS|pdf|PDF)' kpdf +complete -f -X '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ)|cb(r|z)|CB(R|Z)|djv?(u)|DJV?(U)||dvi|DVI|gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX)' evince +complete -f -X '!*.@(?(e)ps|?(E)PS)' ps2pdf +complete -f -X '!*.texi*' makeinfo texi2html +complete -f -X '!*.@(?(la)tex|?(LA)TEX|texi|TEXI|dtx|DTX|ins|INS)' tex latex slitex jadetex pdfjadetex pdftex pdflatex texi2dvi +complete -f -X '!*.@(mp3|MP3)' mpg123 mpg321 madplay +complete -f -X '!*.@(mp?(e)g|MP?(E)G|wma|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|viv|rm|ram|yuv|mov|MOV|qt|QT|wmv|mp3|MP3|m4v|M4V|ogg|OGG|ogm|OGM|mp4|MP4|wav|WAV|asx|ASX|mng|MNG|srt)' xine aaxine fbxine kaffeine +complete -f -X '!*.@(avi|asf|wmv)' aviplay +complete -f -X '!*.@(rm?(j)|ra?(m)|smi?(l))' realplay +complete -f -X '!*.@(mpg|mpeg|avi|mov|qt)' xanim +complete -f -X '!*.@(ogg|OGG|m3u|flac|spx)' ogg123 +complete -f -X '!*.@(mp3|MP3|ogg|OGG|pls|m3u)' gqmpeg freeamp +complete -f -X '!*.fig' xfig +complete -f -X '!*.@(mid?(i)|MID?(I))' playmidi +complete -f -X '!*.@(mid?(i)|MID?(I)|rmi|RMI|rcp|RCP|[gr]36|[GR]36|g18|G18|mod|MOD|xm|XM|it|IT|x3m|X3M)' timidity +complete -f -X '*.@(o|so|so.!(conf)|a|rpm|gif|GIF|jp?(e)g|JP?(E)G|mp3|MP3|mp?(e)g|MPG|avi|AVI|asf|ASF|ogg|OGG|class|CLASS)' vi vim gvim rvim view rview rgvim rgview gview +complete -f -X '*.@(o|so|so.!(conf)|a|rpm|gif|GIF|jp?(e)g|JP?(E)G|mp3|MP3|mp?(e)g|MPG|avi|AVI|asf|ASF|ogg|OGG|class|CLASS)' emacs +complete -f -X '!*.@(exe|EXE|com|COM|scr|SCR|exe.so)' wine +complete -f -X '!*.@(zip|ZIP|z|Z|gz|GZ|tgz|TGZ)' bzme +complete -f -X '!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))' netscape mozilla lynx opera galeon curl dillo elinks amaya +complete -f -X '!*.@(sxw|stw|sxg|sgl|doc|dot|rtf|txt|htm|html|odt|ott|odm)' oowriter +complete -f -X '!*.@(sxi|sti|pps|ppt|pot|odp|otp)' ooimpress +complete -f -X '!*.@(sxc|stc|xls|xlw|xlt|csv|ods|ots)' oocalc +complete -f -X '!*.@(sxd|std|sda|sdd|odg|otg)' oodraw +complete -f -X '!*.@(sxm|smf|mml|odf)' oomath +complete -f -X '!*.odb' oobase +complete -f -X '!*.rpm' rpm2cpio +# FINISH exclude -- do not remove this line + +# start of section containing compspecs that can be handled within bash + +# user commands see only users +complete -u su usermod userdel passwd chage write chfn groups slay w sux + +# group commands see only groups +[ -n "$bash205" ] && complete -g groupmod groupdel newgrp 2>/dev/null + +# bg completes with stopped jobs +complete -A stopped -P '%' bg + +# other job commands +complete -j -P '%' fg jobs disown + +# readonly and unset complete with shell variables +complete -v readonly unset + +# set completes with set options +complete -A setopt set + +# shopt completes with shopt options +complete -A shopt shopt + +# helptopics +complete -A helptopic help + +# unalias completes with aliases +complete -a unalias + +# bind completes with readline bindings (make this more intelligent) +complete -A binding bind + +# type and which complete on commands +complete -c command type which + +# builtin completes on builtins +complete -b builtin + +# start of section containing completion functions called by other functions + +# This function checks whether we have a given program on the system. +# No need for bulky functions in memory if we don't. +# +have() +{ + unset -v have + PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin type $1 &>/dev/null && + have="yes" +} + +# use GNU sed if we have it, since its extensions are still used in our code +# +[ $UNAME != Linux ] && have gsed && alias sed=gsed + +# This function checks whether a given readline variable +# is `on'. +# +_rl_enabled() +{ + [[ "$( bind -v )" = *$1+([[:space:]])on* ]] +} + +# This function shell-quotes the argument +quote() +{ + echo \'${1//\'/\'\\\'\'}\' #'# Help vim syntax highlighting +} + +# This function quotes the argument in a way so that readline dequoting +# results in the original argument +quote_readline() +{ + local t="${1//\\/\\\\}" + echo \'${t//\'/\'\\\'\'}\' #'# Help vim syntax highlighting +} + +# This function shell-dequotes the argument +dequote() +{ + eval echo "$1" +} + + +# Get the word to complete +# This is nicer than ${COMP_WORDS[$COMP_CWORD]}, since it handles cases +# where the user is completing in the middle of a word. +# (For example, if the line is "ls foobar", +# and the cursor is here --------> ^ +# it will complete just "foo", not "foobar", which is what the user wants.) +_get_cword() +{ + if [[ "${#COMP_WORDS[COMP_CWORD]}" -eq 0 ]] || [[ "$COMP_POINT" == "${#COMP_LINE}" ]]; then + echo "${COMP_WORDS[COMP_CWORD]}" + else + local i + local cur="$COMP_LINE" + local index="$COMP_POINT" + for (( i = 0; i <= COMP_CWORD; ++i )); do + while [[ "${#cur}" -ge ${#COMP_WORDS[i]} ]] && [[ "${cur:0:${#COMP_WORDS[i]}}" != "${COMP_WORDS[i]}" ]]; do + cur="${cur:1}" + index="$(( index - 1 ))" + done + if [[ "$i" -lt "$COMP_CWORD" ]]; then + local old_size="${#cur}" + cur="${cur#${COMP_WORDS[i]}}" + local new_size="${#cur}" + index="$(( index - old_size + new_size ))" + fi + done + + if [[ "${COMP_WORDS[COMP_CWORD]:0:${#cur}}" != "$cur" ]]; then + # We messed up! At least return the whole word so things keep working + echo "${COMP_WORDS[COMP_CWORD]}" + else + echo "${cur:0:$index}" + fi + fi +} + + +# This function performs file and directory completion. It's better than +# simply using 'compgen -f', because it honours spaces in filenames. +# If passed -d, it completes only on directories. If passed anything else, +# it's assumed to be a file glob to complete on. +# +_filedir() +{ + local IFS=$'\t\n' xspec + + _expand || return 0 + + local toks=( ) tmp + while read -r tmp; do + [[ -n $tmp ]] && toks[${#toks[@]}]=$tmp + done < <( compgen -d -- "$(quote_readline "$cur")" ) + + if [[ "$1" != -d ]]; then + xspec=${1:+"!*.$1"} + while read -r tmp; do + [[ -n $tmp ]] && toks[${#toks[@]}]=$tmp + done < <( compgen -f -X "$xspec" -- "$(quote_readline "$cur")" ) + fi + + COMPREPLY=( "${COMPREPLY[@]}" "${toks[@]}" ) +} + +# This function completes on signal names +# +_signals() +{ + local i + + # standard signal completion is rather braindead, so we need + # to hack around to get what we want here, which is to + # complete on a dash, followed by the signal name minus + # the SIG prefix + COMPREPLY=( $( compgen -A signal SIG${cur#-} )) + for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do + COMPREPLY[i]=-${COMPREPLY[i]#SIG} + done +} + +# This function completes on configured network interfaces +# +_configured_interfaces() +{ + if [ -f /etc/debian_version ]; then + # Debian system + COMPREPLY=( $( sed -ne 's|^iface \([^ ]\+\).*$|\1|p' \ + /etc/network/interfaces ) ) + elif [ -f /etc/SuSE-release ]; then + # SuSE system + COMPREPLY=( $( command ls \ + /etc/sysconfig/network/ifcfg-* | \ + sed -ne 's|.*ifcfg-\('$cur'.*\)|\1|p' ) ) + elif [ -f /etc/pld-release ]; then + # PLD Linux + COMPREPLY=( $( command ls -B \ + /etc/sysconfig/interfaces | \ + sed -ne 's|.*ifcfg-\('$cur'.*\)|\1|p' ) ) + else + # Assume Red Hat + COMPREPLY=( $( command ls \ + /etc/sysconfig/network-scripts/ifcfg-* | \ + sed -ne 's|.*ifcfg-\('$cur'.*\)|\1|p' ) ) + fi +} + +# This function completes on all available network interfaces +# -a: restrict to active interfaces only +# -w: restrict to wireless interfaces only +# +_available_interfaces() +{ + local cmd + + if [ "${1:-}" = -w ]; then + cmd="iwconfig" + elif [ "${1:-}" = -a ]; then + cmd="ifconfig" + else + cmd="ifconfig -a" + fi + + COMPREPLY=( $( eval $cmd 2>/dev/null | \ + sed -ne 's|^\('$cur'[^[:space:][:punct:]]\{1,\}\).*$|\1|p') ) +} + +# This function expands tildes in pathnames +# +_expand() +{ + # FIXME: Why was this here? + # [ "$cur" != "${cur%\\}" ] && cur="$cur\\" + + # expand ~username type directory specifications + if [[ "$cur" == \~*/* ]]; then + eval cur=$cur + elif [[ "$cur" == \~* ]]; then + cur=${cur#\~} + COMPREPLY=( $( compgen -P '~' -u $cur ) ) + return ${#COMPREPLY[@]} + fi +} + +# This function completes on process IDs. +# AIX and Solaris ps prefers X/Open syntax. +[ $UNAME = SunOS -o $UNAME = AIX ] && +_pids() +{ + COMPREPLY=( $( compgen -W '$( command ps -efo pid | sed 1d )' -- $cur )) +} || +_pids() +{ + COMPREPLY=( $( compgen -W '$( command ps axo pid | sed 1d )' -- $cur ) ) +} + +# This function completes on process group IDs. +# AIX and SunOS prefer X/Open, all else should be BSD. +[ $UNAME = SunOS -o $UNAME = AIX ] && +_pgids() +{ + COMPREPLY=( $( compgen -W '$( command ps -efo pgid | sed 1d )' -- $cur )) +} || +_pgids() +{ + COMPREPLY=( $( compgen -W '$( command ps axo pgid | sed 1d )' -- $cur )) +} + +# This function completes on user IDs +# +_uids() +{ + if type getent &>/dev/null; then + COMPREPLY=( $( getent passwd | \ + awk -F: '{if ($3 ~ /^'$cur'/) print $3}' ) ) + elif type perl &>/dev/null; then + COMPREPLY=( $( compgen -W '$( perl -e '"'"'while (($uid) = (getpwent)[2]) { print $uid . "\n" }'"'"' )' -- $cur ) ) + else + # make do with /etc/passwd + COMPREPLY=( $( awk 'BEGIN {FS=":"} {if ($3 ~ /^'$cur'/) print $3}'\ + /etc/passwd ) ) + fi +} + +# This function completes on group IDs +# +_gids() +{ + if type getent &>/dev/null; then + COMPREPLY=( $( getent group | \ + awk -F: '{if ($3 ~ /^'$cur'/) print $3}' ) ) + elif type perl &>/dev/null; then + COMPREPLY=( $( compgen -W '$( perl -e '"'"'while (($gid) = (getgrent)[2]) { print $gid . "\n" }'"'"' )' -- $cur ) ) + else + # make do with /etc/group + COMPREPLY=( $( awk 'BEGIN {FS=":"} {if ($3 ~ /^'$cur'/) print $3}'\ + /etc/group ) ) + fi +} + +# This function completes on services +# +_services() +{ + local sysvdir famdir + [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d || sysvdir=/etc/init.d + famdir=/etc/xinetd.d + COMPREPLY=( $( builtin echo $sysvdir/!(*.rpmsave|*.rpmorig|*~|functions)) ) + + if [ -d $famdir ]; then + COMPREPLY=( "${COMPREPLY[@]}" $( builtin echo $famdir/!(*.rpmsave|*.rpmorig|*~)) ) + fi + + COMPREPLY=( $( compgen -W '${COMPREPLY[@]#@($sysvdir|$famdir)/}' -- $cur ) ) +} + +# This function complete on modules +# +_modules() +{ + local modpath + modpath=/lib/modules/$1 + COMPREPLY=( $( command ls -R $modpath | \ + sed -ne 's/^\('$cur'.*\)\.k\?o\(\|.gz\)$/\1/p') ) +} + +# this function complete on user:group format +# +_usergroup() +{ + local IFS=$'\n' + cur=${cur//\\\\ / } + if [[ $cur = *@(\\:|.)* ]] && [ -n "$bash205" ]; then + user=${cur%%*([^:.])} + COMPREPLY=( $(compgen -P ${user/\\\\} -g -- ${cur##*[.:]}) ) + elif [[ $cur = *:* ]] && [ -n "$bash205" ]; then + COMPREPLY=( $( compgen -g -- ${cur##*[.:]} ) ) + else + COMPREPLY=( $( compgen -S : -u -- $cur ) ) + fi +} + +# this function count the number of mandatory args +# +_count_args() +{ + args=1 + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" != -* ]]; then + args=$(($args+1)) + fi + done +} + +# start of section containing completion functions for bash built-ins + +# bash alias completion +# +_alias() +{ + local cur + + COMPREPLY=() + cur=${COMP_WORDS[$COMP_CWORD]} + + case "$COMP_LINE" in + *[^=]) + COMPREPLY=( $( compgen -A alias -S '=' -- $cur ) ) + ;; + *=) + COMPREPLY=( "$( alias ${cur%=} 2>/dev/null | \ + sed -e 's|^alias '$cur'\(.*\)$|\1|' )" ) + ;; + esac +} +complete -F _alias $nospace alias + +# bash export completion +# +_export() +{ + local cur + + COMPREPLY=() + cur=${COMP_WORDS[$COMP_CWORD]} + + case "$COMP_LINE" in + *=\$*) + COMPREPLY=( $( compgen -v -P '$' -- ${cur#*=\$} ) ) + ;; + *[^=]) + COMPREPLY=( $( compgen -v -S '=' -- $cur ) ) + ;; + *=) + COMPREPLY=( "$( eval echo -n \"$`echo ${cur%=}`\" | + ( echo -n \' + sed -e 's/'\''/'\''\\\'\'''\''/g' + echo -n \' ) )" ) + ;; + esac +} +complete -F _export $default $nospace export + +# bash shell function completion +# +_function() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ $1 == @(declare|typeset) ]]; then + if [ "$prev" = -f ]; then + COMPREPLY=( $( compgen -A function -- $cur ) ) + elif [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -f -F -i -r -x -p' -- \ + $cur ) ) + fi + elif [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -A function -- $cur ) ) + else + COMPREPLY=( "() $( type -- ${COMP_WORDS[1]} | sed -e 1,2d )" ) + fi +} +complete -F _function function declare typeset + +# bash complete completion +# +_complete() +{ + local cur prev options + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -o) + options="default dirnames filenames" + [ -n "$bash205b" ] && options="$options nospace" + [ -n "$bash3" ] && options="$options bashdefault plusdirs" + COMPREPLY=( $( compgen -W "$options" -- $cur ) ) + return 0 + ;; + + -A) + COMPREPLY=( $( compgen -W 'alias arrayvar binding \ + builtin command directory disabled enabled \ + export file function group helptopic hostname \ + job keyword running service setopt shopt \ + signal stopped user variable' -- $cur ) ) + return 0 + ;; + + -C) + COMPREPLY=( $( compgen -A command -- $cur ) ) + return 0 + ;; + -F) + COMPREPLY=( $( compgen -A function -- $cur ) ) + return 0 + ;; + -@(p|r)) + COMPREPLY=( $( complete -p | sed -e 's|.* ||' | \ + grep "^$cur" ) ) + return 0 + ;; + + esac + + if [[ "$cur" == -* ]]; then + # relevant options completion + options="-a -b -c -d -e -f -g -j -k -s -v -u -A -G -W -P -S -X -F -C" + [ -n "$bash205" ] && options="$options -o" + COMPREPLY=( $( compgen -W "$options" -- $cur ) ) + else + COMPREPLY=( $( compgen -A command -- $cur ) ) + fi +} +complete -F _complete complete + +# start of section containing completion functions for external programs + +# a little help for FreeBSD ports users +[ $UNAME = FreeBSD ] && complete -W 'index search fetch fetch-list \ + extract patch configure build install reinstall \ + deinstall clean clean-depends kernel buildworld' make + +# This completes on a list of all available service scripts for the +# 'service' command and/or the SysV init.d directory, followed by +# that script's available commands +# +{ have service || [ -d /etc/init.d/ ]; } && +_service() +{ + local cur sysvdir + + COMPREPLY=() + prev=${COMP_WORDS[COMP_CWORD-1]} + cur=`_get_cword` + + # don't complete for things like killall, ssh and mysql if it's + # the standalone command, rather than the init script + [[ ${COMP_WORDS[0]} != @(*init.d/!(functions|~)|service) ]] && return 0 + + # don't complete past 2nd token + [ $COMP_CWORD -gt 2 ] && return 0 + + [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \ + || sysvdir=/etc/init.d + + if [[ $COMP_CWORD -eq 1 ]] && [[ $prev == "service" ]]; then + _services + else + COMPREPLY=( $( compgen -W '`sed -ne "y/|/ /; \ + s/^.*Usage.*{\(.*\)}.*$/\1/p" \ + $sysvdir/${prev##*/} 2>/dev/null`' -- $cur ) ) + fi + + return 0 +} && +complete -F _service service +[ -d /etc/init.d/ ] && complete -F _service $default \ + $(for i in /etc/init.d/*; do echo ${i##*/}; done) + +# chown(1) completion +# +_chown() +{ + local cur + cur=`_get_cword` + + # options completion + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes \ + --dereference --no-dereference --from= --silent --quiet \ + --reference= --recursive --verbose --help --version' -- $cur ) ) + else + _count_args + + case $args in + 1) + _usergroup + ;; + *) + _filedir + ;; + esac + fi +} +complete -F _chown $filenames chown + +# chgrp(1) completion +# +_chgrp() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + cur=${cur//\\\\/} + prev=${COMP_WORDS[COMP_CWORD-1]} + + # options completion + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes \ + --dereference --no-dereference --silent --quiet \ + --reference= --recursive --verbose --help --version' -- $cur ) ) + return 0 + fi + + # first parameter on line or first since an option? + if [ $COMP_CWORD -eq 1 ] && [[ "$cur" != -* ]] || \ + [[ "$prev" == -* ]] && [ -n "$bash205" ]; then + local IFS=$'\n' + COMPREPLY=( $( compgen -g $cur 2>/dev/null ) ) + else + _filedir || return 0 + fi + + return 0 +} +complete -F _chgrp $filenames chgrp + +# umount(8) completion. This relies on the mount point being the third +# space-delimited field in the output of mount(8) +# +_umount() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + OLDIFS="$IFS" + IFS="\n" + COMPREPLY=( $( compgen -W '$( mount | cut -d" " -f 3 )' -- $cur ) ) + IFS="$OLDIFS" + + return 0 +} +complete -F _umount $dirnames umount + +# mount(8) completion. This will pull a list of possible mounts out of +# /etc/{,v}fstab, unless the word being completed contains a ':', which +# would indicate the specification of an NFS server. In that case, we +# query the server for a list of all available exports and complete on +# that instead. +# +_mount() +{ local cur i sm host + + COMPREPLY=() + cur=`_get_cword` + [[ "$cur" == \\ ]] && cur="/" + + for i in {,/usr}/{,s}bin/showmount; do [ -x $i ] && sm=$i && break; done + + if [ -n "$sm" ] && [[ "$cur" == *:* ]]; then + COMPREPLY=( $( $sm -e ${cur%%:*} | sed 1d | \ + grep ^${cur#*:} | awk '{print $1}' ) ) + elif [[ "$cur" == //* ]]; then + host=${cur#//} + host=${host%%/*} + if [ -n "$host" ]; then + COMPREPLY=( $( compgen -W "$( echo $( smbclient -d 0 -NL $host 2>/dev/null| + sed -ne '/^['"$'\t '"']*Sharename/,/^$/p' | + sed -ne '3,$s|^[^A-Za-z]*\([^'"$'\t '"']*\).*$|//'$host'/\1|p' ) )" -- "$cur" ) ) + fi + elif [ -r /etc/vfstab ]; then + # Solaris + COMPREPLY=( $( awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' \ + /etc/vfstab | grep "^$cur" ) ) + elif [ ! -e /etc/fstab ]; then + # probably Cygwin + COMPREPLY=( $( mount | awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' \ + | grep "^$cur" ) ) + else + # probably Linux + COMPREPLY=( $( awk '! /^[ \t]*#/ {if ($2 ~ /\//) print $2}' \ + /etc/fstab | grep "^$cur" ) ) + fi + + return 0 +} +complete -F _mount $default $filenames mount + +# Linux rmmod(8) completion. This completes on a list of all currently +# installed kernel modules. +# +have rmmod && { +_rmmod() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + COMPREPLY=( $( /sbin/lsmod | \ + awk '{if (NR != 1 && $1 ~ /^'$cur'/) print $1}' 2>/dev/null )) + return 0 +} +complete -F _rmmod rmmod + +# Linux insmod(8), modprobe(8) and modinfo(8) completion. This completes on a +# list of all available modules for the version of the kernel currently +# running. +# +_insmod() +{ + local cur prev modpath + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # behave like lsmod for modprobe -r + if [ $1 = "modprobe" ] && + [ "${COMP_WORDS[1]}" = "-r" ]; then + COMPREPLY=( $( /sbin/lsmod | \ + awk '{if (NR != 1 && $1 ~ /^'$cur'/) print $1}' ) ) + return 0 + fi + + # do filename completion if we're giving a path to a module + if [[ "$cur" == */* ]]; then + _filedir '@(?(k)o?(.gz))' + return 0 + fi + + if [ $COMP_CWORD -gt 1 ] && + [[ "${COMP_WORDS[COMP_CWORD-1]}" != -* ]]; then + # do module parameter completion + COMPREPLY=( $( /sbin/modinfo -p ${COMP_WORDS[1]} 2>/dev/null | \ + awk '{if ($1 ~ /^parm:/ && $2 ~ /^'$cur'/) { print $2 } \ + else if ($1 !~ /:/ && $1 ~ /^'$cur'/) { print $1 }}' ) ) + else + _modules $(uname -r) + fi + + return 0 +} +complete -F _insmod $filenames insmod modprobe modinfo +} + +# man(1) completion +# +[ $UNAME = GNU -o $UNAME = Linux -o $UNAME = Darwin \ + -o $UNAME = FreeBSD -o $UNAME = SunOS -o $UNAME = Cygwin \ + -o $UNAME = OpenBSD ] && +_man() +{ + local cur prev sect manpath UNAME + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + _expand || return 0 + + # default completion if parameter contains / + if [[ "$cur" == */* ]]; then + _filedir + return 0 + fi + + UNAME=$( uname -s ) + # strip OS type and version under Cygwin + UNAME=${UNAME/CYGWIN_*/Cygwin} + if [ $UNAME = GNU -o $UNAME = Linux -o $UNAME = FreeBSD \ + -o $UNAME = Cygwin ]; then + manpath=$( manpath 2>/dev/null || command man --path ) + else + manpath=$MANPATH + fi + + if [ -z "$manpath" ]; then + COMPREPLY=( $( compgen -c -- $cur ) ) + return 0 + fi + + # determine manual section to search + [[ "$prev" == [0-9ln] ]] && sect=$prev || sect='*' + + manpath=$manpath: + if [ -n "$cur" ]; then + manpath="${manpath//://*man$sect/$cur* } ${manpath//://*cat$sect/$cur* }" + else + manpath="${manpath//://*man$sect/ } ${manpath//://*cat$sect/ }" + fi + + # redirect stderr for when path doesn't exist + COMPREPLY=( $( eval command ls "$manpath" 2>/dev/null ) ) + # weed out directory path names and paths to man pages + COMPREPLY=( ${COMPREPLY[@]##*/?(:)} ) + # strip suffix from man pages + COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2)} ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) ) + + [[ "$prev" != [0-9ln] ]] && _filedir '[0-9ln]' + + return 0 +} +[ $UNAME = GNU -o $UNAME = Linux -o $UNAME = Darwin \ + -o $UNAME = FreeBSD -o $UNAME = SunOS -o $UNAME = Cygwin \ + -o $UNAME = OpenBSD ] && \ +complete -F _man $filenames man apropos whatis + +# renice(8) completion +# +_renice() +{ + local command cur curopt i + + COMPREPLY=() + cur=`_get_cword` + command=$1 + + i=0 + # walk back through command line and find last option + while [ $i -le $COMP_CWORD -a ${#COMPREPLY[@]} -eq 0 ]; do + curopt=${COMP_WORDS[COMP_CWORD-$i]} + case "$curopt" in + -u) + COMPREPLY=( $( compgen -u -- $cur ) ) + ;; + -g) + _pgids + ;; + -p|$command) + _pids + ;; + esac + i=$(( ++i )) + done +} +complete -F _renice renice + +# kill(1) completion +# +_kill() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [ $COMP_CWORD -eq 1 ] && [[ "$cur" == -* ]]; then + # return list of available signals + _signals + else + # return list of available PIDs + _pids + fi +} +complete -F _kill kill + +# Linux and FreeBSD killall(1) completion. +# +[ $UNAME = Linux -o $UNAME = FreeBSD ] && +_killall() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [ $COMP_CWORD -eq 1 ] && [[ "$cur" == -* ]]; then + _signals + else + COMPREPLY=( $( compgen -W '$( command ps axo command | \ + sed -ne "1d; s/^\[\?\([^-][^] ]*\).*$/\1/p" | \ + sed -e "s/.*\///" )' -- $cur ) ) + fi + + return 0 +} +[ $UNAME = Linux -o $UNAME = FreeBSD ] && complete -F _killall killall pkill + +# Linux and FreeBSD pgrep(1) completion. +# +[ $UNAME = Linux -o $UNAME = FreeBSD ] && +_pgrep() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + COMPREPLY=( $( compgen -W '$( command ps axo command | \ + sed -ne "1d; s/^\[\?\([^-][^] ]*\).*$/\1/p" | \ + sed -e "s/.*\///" )' -- $cur ) ) + + return 0 +} +[ $UNAME = Linux -o $UNAME = FreeBSD ] && complete -F _pgrep pgrep +# Linux pidof(8) completion. +[ $UNAME = Linux ] && complete -F _pgrep pidof + +# GNU find(1) completion. This makes heavy use of ksh style extended +# globs and contains Linux specific code for completing the parameter +# to the -fstype option. +# +_find() +{ + local cur prev i exprfound onlyonce + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(max|min)depth) + COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' -- $cur ) ) + return 0 + ;; + -?(a|c)newer|-fls|-fprint?(0|f)|-?(i)?(l)name|-?(i)wholename) + _filedir + return 0 + ;; + -fstype) + # this is highly non-portable + [ -e /proc/filesystems ] && + COMPREPLY=( $( cut -d$'\t' -f 2 /proc/filesystems | \ + grep "^$cur" ) ) + return 0 + ;; + -gid) + _gids + return 0 + ;; + -group) + if [ -n "$bash205" ]; then + COMPREPLY=( $( compgen -g -- $cur 2>/dev/null) ) + fi + return 0 + ;; + -?(x)type) + COMPREPLY=( $( compgen -W 'b c d p f l s' -- $cur ) ) + return 0 + ;; + -uid) + _uids + return 0 + ;; + -user) + COMPREPLY=( $( compgen -u -- $cur ) ) + return 0 + ;; + -exec|-ok) + COMP_WORDS=(COMP_WORDS[0] $cur) + COMP_CWORD=1 + _command + return 0 + ;; + -[acm]min|-[acm]time|-?(i)?(l)name|-inum|-?(i)path|-?(i)regex| \ + -links|-perm|-size|-used|-printf) + # do nothing, just wait for a parameter to be given + return 0 + ;; + esac + + _expand || return 0 + + # set exprfound to 1 if there is already an expression present + for i in ${COMP_WORDS[@]}; do + [[ "$i" = [-\(\),\!]* ]] && exprfound=1 && break + done + + # handle case where first parameter is not a dash option + if [ "$exprfound" != 1 ] && [[ "$cur" != [-\(\),\!]* ]]; then + _filedir -d + return 0 + fi + + # complete using basic options + COMPREPLY=( $( compgen -W '-daystart -depth -follow -help -maxdepth \ + -mindepth -mount -noleaf -version -xdev -amin -anewer \ + -atime -cmin -cnewer -ctime -empty -false -fstype \ + -gid -group -ilname -iname -inum -ipath -iregex \ + -wholename \ + -links -lname -mmin -mtime -name -newer -nouser \ + -nogroup -perm -regex -size -true -type -uid -used \ + -user -xtype -exec -fls -fprint -fprint0 -fprintf -ok \ + -print -print0 -printf -prune -ls' -- $cur ) ) + + # this removes any options from the list of completions that have + # already been specified somewhere on the command line, as long as + # these options can only be used once (in a word, "options", in + # opposition to "tests" and "actions", as in the find(1) manpage). + onlyonce=' -daystart -depth -follow -help -maxdepth -mindepth -mount \ + -noleaf -version -xdev ' + COMPREPLY=( $( echo "${COMP_WORDS[@]}" | \ + (while read -d ' ' i; do + [ "$i" == "" ] || + [ "${onlyonce/ ${i%% *} / }" == "$onlyonce" ] && + continue + # flatten array with spaces on either side, + # otherwise we cannot grep on word boundaries of + # first and last word + COMPREPLY=" ${COMPREPLY[@]} " + # remove word from list of completions + COMPREPLY=( ${COMPREPLY/ ${i%% *} / } ) + done + echo "${COMPREPLY[@]}") + ) ) + + _filedir + + return 0 +} +complete -F _find $filenames find + +# Linux iwconfig(8) completion +# +[ $UNAME = Linux ] && have iwconfig && +_iwconfig() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + mode) + COMPREPLY=( $( compgen -W 'managed ad-hoc master \ + repeater secondary monitor' -- $cur ) ) + return 0 + ;; + essid) + COMPREPLY=( $( compgen -W 'on off any' -- $cur ) ) + if [ -n "${COMP_IWLIST_SCAN:-}" ]; then + COMPREPLY=( "${COMPREPLY[@]}" \ + $( iwlist ${COMP_WORDS[1]} scan | \ + awk -F '"' '/ESSID/ {print $2}' | \ + grep "^$cur" )) + fi + return 0 + ;; + nwid) + COMPREPLY=( $( compgen -W 'on off' -- $cur ) ) + return 0 + ;; + channel) + COMPREPLY=( $( iwlist ${COMP_WORDS[1]} channel | \ + awk '/^[[:space:]]*Channel/ {print $2}' | \ + grep "^$cur" ) ) + return 0 + ;; + + freq) + COMPREPLY=( $( iwlist ${COMP_WORDS[1]} channel | \ + awk '/^[[:space:]]*Channel/ {print $4"G"}' | \ + grep "^$cur" ) ) + return 0 + ;; + ap) + COMPREPLY=( $( compgen -W 'on off any' -- $cur ) ) + if [ -n "${COMP_IWLIST_SCAN:-}" ]; then + COMPREPLY=( "${COMPREPLY[@]}" \ + $( iwlist ${COMP_WORDS[1]} scan | \ + awk -F ': ' '/Address/ {print $2}' | \ + grep "^$cur" ) ) + fi + return 0 + ;; + rate) + COMPREPLY=( $( compgen -W 'auto fixed' -- $cur ) ) + COMPREPLY=( "${COMPREPLY[@]}" \ + $( iwlist ${COMP_WORDS[1]} rate | \ + awk '/^[[:space:]]*[0-9]/ {print $1"M"}' | \ + grep "^$cur" ) ) + return 0 + ;; + rts) + COMPREPLY=( $( compgen -W 'auto fixed off' -- $cur ) ) + return 0 + ;; + frag) + COMPREPLY=( $( compgen -W 'auto fixed off' -- $cur ) ) + return 0 + ;; + key) + COMPREPLY=( $( compgen -W 'off on open restricted' -- $cur ) ) + return 0 + ;; + enc) + COMPREPLY=( $( compgen -W 'off on open restricted' -- $cur ) ) + return 0 + ;; + power) + COMPREPLY=( $( compgen -W 'period timeout off on' -- $cur ) ) + return 0 + ;; + txpower) + COMPREPLY=( $( compgen -W 'off on auto' -- $cur ) ) + return 0 + ;; + retry) + COMPREPLY=( $( compgen -W 'limit lifetime' -- $cur ) ) + return 0 + ;; + esac + + if [ $COMP_CWORD -eq 1 ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version' -- $cur ) ) + else + _available_interfaces -w + fi + else + COMPREPLY=( $( compgen -W 'essid nwid mode freq channel sens mode \ + ap nick rate rts frag enc key power txpower commit' -- $cur ) ) + fi + +} && +complete -F _iwconfig iwconfig + +# Linux iwlist(8) completion +# +[ $UNAME = Linux ] && have iwlist && +_iwlist() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + if [ $COMP_CWORD -eq 1 ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version' -- $cur ) ) + else + _available_interfaces -w + fi + else + COMPREPLY=( $( compgen -W 'scan scanning freq frequency \ + channel rate bit bitrate key enc encryption power \ + txpower retry ap accesspoint peers event' -- $cur ) ) + fi +} && +complete -F _iwlist iwlist + +# Linux iwspy(8) completion +# +[ $UNAME = Linux ] && have iwspy && +_iwspy() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [ $COMP_CWORD -eq 1 ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version' -- $cur ) ) + else + _available_interfaces -w + fi + else + COMPREPLY=( $( compgen -W 'setthr getthr off' -- $cur ) ) + fi +} && +complete -F _iwspy iwspy + +# Linux iwpriv(8) completion +# +[ $UNAME = Linux ] && have iwpriv && +_iwpriv() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + roam) + COMPREPLY=( $( compgen -W 'on off' -- $cur ) ) + return 0 + ;; + port) + COMPREPLY=( $( compgen -W 'ad-hoc managed' -- $cur ) ) + return 0 + ;; + esac + + if [ $COMP_CWORD -eq 1 ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version' -- $cur ) ) + else + _available_interfaces -w + fi + else + COMPREPLY=( $( compgen -W '--all roam port' -- $cur ) ) + fi +} && +complete -F _iwpriv iwpriv + +# RedHat & Debian GNU/Linux if{up,down} completion +# +[ $UNAME = Linux ] && { have ifup || have ifdown; } && +_ifupdown() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [ $COMP_CWORD -eq 1 ]; then + _configured_interfaces + COMPREPLY=( $(compgen -W '${COMPREPLY[@]}' -- "$cur") ) + fi + + return 0 +} && +complete -F _ifupdown ifup ifdown +[ $UNAME = Linux ] && have ifstatus && complete -F _ifupdown ifstatus + +# Linux ipsec(8) completion (for FreeS/WAN) +# +[ $UNAME = Linux ] && have ipsec && +_ipsec() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'auto barf eroute klipsdebug look \ + manual pluto ranbits rsasigkey \ + setup showdefaults showhostkey spi \ + spigrp tncfg whack' -- $cur ) ) + return 0 + fi + + case ${COMP_WORDS[1]} in + auto) + COMPREPLY=( $( compgen -W '--asynchronous --up --add --delete \ + --replace --down --route --unroute \ + --ready --status --rereadsecrets' \ + -- $cur ) ) + ;; + manual) + COMPREPLY=( $( compgen -W '--up --down --route --unroute \ + --union' -- $cur ) ) + ;; + ranbits) + COMPREPLY=( $( compgen -W '--quick --continuous --bytes' \ + -- $cur ) ) + ;; + setup) + COMPREPLY=( $( compgen -W '--start --stop --restart' -- $cur ) ) + ;; + + *) + ;; + esac + + return 0 +} && +complete -F _ipsec ipsec + +# Postfix completion. +# +have postfix && { +# postfix(1) +# +_postfix() +{ + local cur prev + + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ $cur == '-' ]]; then + COMPREPLY=(-c -D -v) + return 0 + fi + if [[ $prev == '-c' ]]; then + _filedir -d + return 0 + fi + if [[ $prev == '-D' ]]; then + COMPREPLY=( $( compgen -W 'start' -- "`get_cword`" ) ) + return 0 + fi + COMPREPLY=( $( compgen -W 'start stop reload abort flush check' -- \ + "`get_cword`" ) ) +} +complete -F _postfix postfix + +# postalias(1) and postmap(1) +# +_postmap() +{ + local cur prev len idx + + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ $cur == '-' ]]; then + COMPREPLY=(-N -f -i -n -o -p -r -v -w -c -d -q) + return 0 + fi + if [[ $prev == '-c' ]]; then + _filedir -d + return 0 + fi + if [[ $prev == -[dq] ]]; then + return 0 + fi + + if [[ "$cur" == *:* ]]; then + COMPREPLY=( $( compgen -f -- ${cur#*:} ) ) + else + len=${#cur} + idx=0 + for pval in $( /usr/sbin/postconf -m ); do + if [[ "$cur" == "${pval:0:$len}" ]]; then + COMPREPLY[$idx]="$pval:" + idx=$(($idx+1)) + fi + done + if [[ $idx -eq 0 ]]; then + COMPREPLY=( $( compgen -f -- "$cur" ) ) + fi + fi + return 0 +} +complete -F _postmap postmap postalias + +# postcat(1) +# +_postcat() +{ + local cur prev pval len idx qfile + + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ $cur == '-' ]]; then + COMPREPLY=(-c -q -v) + return 0 + fi + if [[ $prev == '-c' ]]; then + _filedir -d + return 0 + fi + + qfile=0 + for idx in "${COMP_WORDS[@]}"; do + [[ "$idx" = -q ]] && qfile=1 && break + done + if [[ $qfile == 1 ]]; then + len=${#cur} + idx=0 + for pval in $( mailq | \ + sed -e '1d; $d; /^[^0-9A-Z]\|^$/d; s/[* !].*$//' ); do + if [[ "$cur" == "${pval:0:$len}" ]]; then + COMPREPLY[$idx]=$pval + idx=$(($idx+1)) + fi + done + return 0 + else + _filedir + return 0 + fi +} +complete -F _postcat postcat + +# postconf(1) +# +_postconf() +{ + local cur prev pval len idx eqext + + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + if [[ $cur == '-' ]]; then + COMPREPLY=(-c -d -e -h -m -l -n -v) + return 0 + fi + if [[ $prev == '-c' ]]; then + _filedir -d + return 0 + fi + if [[ $prev == '-e' ]]; then + cur=${cur#[\"\']} + eqext='=' + fi + len=${#cur} + idx=0 + for pval in $( /usr/sbin/postconf | cut -d ' ' -f 1 ); do + if [[ "$cur" == "${pval:0:$len}" ]]; then + COMPREPLY[$idx]="$pval$eqext" + idx=$(($idx+1)) + fi + done + return 0 +} +complete -F _postconf postconf + +# postsuper(1) +# +_postsuper() +{ + local cur prev pval len idx + + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + if [[ $cur == '-' ]]; then + COMPREPLY=(-c -d -h -H -p -r -s -v) + return 0 + fi + case $prev in + -[dr]) + len=${#cur} + idx=0 + for pval in $( echo ALL; mailq | \ + sed -e '1d; $d; /^[^0-9A-Z]\|^$/d; s/[* !].*$//' ); do + if [[ "$cur" == "${pval:0:$len}" ]]; then + COMPREPLY[$idx]=$pval + idx=$(($idx+1)) + fi + done + return 0 + ;; + -h) + len=${#cur} + idx=0 + for pval in $( echo ALL; mailq | \ + sed -e '1d; $d; /^[^0-9A-Z]\|^$/d; s/[* ].*$//; /!$/d' ); do + if [[ "$cur" == "${pval:0:$len}" ]]; then + COMPREPLY[$idx]=$pval + idx=$(($idx+1)) + fi + done + return 0 + ;; + -H) + len=${#cur} + idx=0 + for pval in $( echo ALL; mailq | \ + sed -e '1d; $d; /^[^0-9A-Z]\|^$/d; /^[0-9A-Z]*[* ]/d; s/!.*$//' ); do + if [[ "$cur" == "${pval:0:$len}" ]]; then + COMPREPLY[$idx]=$pval + idx=$(($idx+1)) + fi + done + return 0 + ;; + esac + COMPREPLY=( $( compgen -W 'hold incoming active deferred' -- $cur ) ) + return 0 +} +complete -F _postsuper postsuper +} + +# cvs(1) completion +# +have cvs && { +set_prefix() +{ + [ -z ${prefix:-} ] || prefix=${cur%/*}/ + [ -r ${prefix:-}CVS/Entries ] || prefix="" +} + +get_entries() +{ + local IFS=$'\n' + [ -r ${prefix:-}CVS/Entries ] && \ + entries=$(cut -d/ -f2 -s ${prefix:-}CVS/Entries) +} + +get_modules() +{ + if [ -n "$prefix" ]; then + COMPREPLY=( $( command ls -d ${cvsroot}/${prefix}/!(CVSROOT) ) ) + else + COMPREPLY=( $( command ls -d ${cvsroot}/!(CVSROOT) ) ) + fi +} + +_cvs() +{ + local cur count mode i cvsroot cvsroots pwd + local -a flags miss files entries changed newremoved + + COMPREPLY=() + cur=`_get_cword` + + count=0 + for i in "${COMP_WORDS[@]}"; do + [ $count -eq $COMP_CWORD ] && break + # Last parameter was the CVSROOT, now go back to mode selection + if [ "${COMP_WORDS[((count))]}" == "$cvsroot" -a "$mode" == "cvsroot" ]; then + mode="" + fi + if [ -z "$mode" ]; then + case $i in + -d) + mode=cvsroot + cvsroot=${COMP_WORDS[((count+1))]} + ;; + @(ad?(d)|new)) + mode=add + ;; + @(adm?(in)|rcs)) + mode=admin + ;; + ann?(notate)) + mode=annotate + ;; + @(checkout|co|get)) + mode=checkout + ;; + @(com?(mit)|ci)) + mode=commit + ;; + di?(f?(f))) + mode=diff + ;; + ex?(p?(ort))) + mode=export + ;; + ?(un)edit) + mode=$i + ;; + hi?(s?(tory))) + mode=history + ;; + im?(p?(ort))) + mode=import + ;; + re?(l?(ease))) + mode=release + ;; + ?(r)log) + mode=log + ;; + @(rdiff|patch)) + mode=rdiff + ;; + @(remove|rm|delete)) + mode=remove + ;; + @(rtag|rfreeze)) + mode=rtag + ;; + st?(at?(us))) + mode=status + ;; + @(tag|freeze)) + mode=tag + ;; + up?(d?(ate))) + mode=update + ;; + *) + ;; + esac + elif [[ "$i" = -* ]]; then + flags=( "${flags[@]}" $i ) + fi + count=$((++count)) + done + + case "$mode" in + add) + if [[ "$cur" != -* ]]; then + set_prefix + if [ $COMP_CWORD -gt 1 -a -r ${prefix:-}CVS/Entries ]; then + get_entries + [ -z "$cur" ] && \ + files=$( command ls -Ad !(CVS) ) || \ + files=$( command ls -d ${cur}* 2>/dev/null ) + for i in "${entries[@]}"; do + files=( ${files[@]/#$i//} ) + done + COMPREPLY=( $( compgen -W '${files[@]}' -- \ + $cur ) ) + fi + else + COMPREPLY=( $( compgen -W '-k -m' -- $cur ) ) + fi + ;; + admin) + if [[ "$cur" = -* ]]; then + COMPREPLY=( $( compgen -W '-i -a -A -e -b -c -k -l -u \ + -L -U -m -M -n -N -o -q -I \ + -s -t -t- -T -V -x -z' -- \ + $cur ) ) + fi + ;; + annotate) + if [[ "$cur" = -* ]]; then + COMPREPLY=( $( compgen -W '-D -F -f -l -R -r' -- $cur ) ) + else + get_entries + COMPREPLY=( $( compgen -W '${entries[@]}' -- $cur ) ) + fi + ;; + checkout) + if [[ "$cur" != -* ]]; then + [ -z "$cvsroot" ] && cvsroot=$CVSROOT + COMPREPLY=( $( cvs -d "$cvsroot" co -c 2> /dev/null | \ + awk '{print $1}' ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) ) + else + COMPREPLY=( $( compgen -W '-A -N -P -R -c -f -l -n -p \ + -s -r -D -d -k -j' -- $cur ) ) + fi + ;; + commit) + set_prefix + + if [[ "$cur" != -* ]] && [ -r ${prefix:-}CVS/Entries ]; then + # if $COMP_CVS_REMOTE is not null, 'cvs commit' will + # complete on remotely checked-out files (requires + # passwordless access to the remote repository + if [ -n "${COMP_CVS_REMOTE:-}" ]; then + # this is the least computationally intensive + # way found so far, but other changes + # (something other than changed/removed/new) + # may be missing + changed=( $( cvs -q diff --brief 2>&1 | \ + sed -ne 's/^Files [^ ]* and \([^ ]*\) differ$/\1/p' ) ) + newremoved=( $( cvs -q diff --brief 2>&1 | \ + sed -ne 's/^cvs diff: \([^ ]*\) .*, no comparison available$/\1/p' ) ) + COMPREPLY=( $( compgen -W '${changed[@]:-} \ + ${newremoved[@]:-}' -- $cur ) ) + else + _filedir + fi + else + COMPREPLY=( $( compgen -W '-n -R -l -f -F -m -r' -- \ + $cur ) ) + fi + ;; + cvsroot) + if [ -r ~/.cvspass ]; then + # Ugly escaping because of bash treating ':' specially + cvsroots=$( sed 's/^[^ ]* //; s/:/\\:/g' ~/.cvspass ) + COMPREPLY=( $( compgen -W '$cvsroots' -- $cur ) ) + fi + ;; + export) + if [[ "$cur" != -* ]]; then + [ -z "$cvsroot" ] && cvsroot=$CVSROOT + COMPREPLY=( $( cvs -d "$cvsroot" co -c | awk '{print $1}' ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) ) + else + COMPREPLY=( $( compgen -W '-N -f -l -R -n \ + -r -D -d -k' -- $cur ) ) + fi + ;; + diff) + if [[ "$cur" == -* ]]; then + _longopt diff + else + get_entries + COMPREPLY=( $( compgen -W '${entries[@]:-}' -- $cur ) ) + fi + ;; + remove) + if [[ "$cur" != -* ]]; then + set_prefix + if [ $COMP_CWORD -gt 1 -a -r ${prefix:-}CVS/Entries ]; then + get_entries + # find out what files are missing + for i in "${entries[@]}"; do + [ ! -r "$i" ] && miss=( "${miss[@]}" $i ) + done + COMPREPLY=( $(compgen -W '${miss[@]:-}' -- $cur) ) + fi + else + COMPREPLY=( $( compgen -W '-f -l -R' -- $cur ) ) + fi + ;; + import) + if [[ "$cur" != -* ]]; then + # starts with same algorithm as checkout + [ -z "$cvsroot" ] && cvsroot=$CVSROOT + prefix=${cur%/*} + if [ -r ${cvsroot}/${prefix} ]; then + get_modules + COMPREPLY=( ${COMPREPLY[@]#$cvsroot} ) + COMPREPLY=( ${COMPREPLY[@]#\/} ) + fi + pwd=$( pwd ) + pwd=${pwd##*/} + COMPREPLY=( $( compgen -W '${COMPREPLY[@]} $pwd' -- \ + $cur ) ) + else + COMPREPLY=( $( compgen -W '-d -k -I -b -m -W' -- $cur )) + fi + ;; + update) + if [[ "$cur" = -* ]]; then + COMPREPLY=( $( compgen -W '-A -P -C -d -f -l -R -p \ + -k -r -D -j -I -W' -- \ + $cur ) ) + fi + ;; + "") + COMPREPLY=( $( compgen -W 'add admin annotate checkout ci co \ + commit diff delete edit export \ + freeze get history import log new \ + patch rcs rdiff release remove \ + rfreeze rlog rm rtag stat status \ + tag unedit up update -H -Q -q -b \ + -d -e -f -l -n -t -r -v -w -x -z \ + --help --version' -- $cur ) ) + ;; + *) + ;; + esac + + return 0 +} +complete -F _cvs $default cvs +} + +have rpm && { +# helper functions for rpm completion +# +_rpm_installed_packages() +{ + local ver nodig nosig + + if [ -r /var/log/rpmpkgs -a \ + /var/log/rpmpkgs -nt /var/lib/rpm/Packages ]; then + # using RHL 7.2 or later - this is quicker than querying the DB + COMPREPLY=( $( sed -ne \ + 's|^\('$cur'.*\)-[0-9a-zA-Z._]\+-[0-9a-z.@]\+.*\.rpm$|\1|p' \ + /var/log/rpmpkgs ) ) + else + nodig="" + nosig="" + ver=$(rpm --version) + ver=${ver##* } + + if [[ "$ver" > "4.0.4" ]]; then + nodig="--nodigest" + fi + if [[ "$ver" > "4.0.99" ]]; then + nosig="--nosignature" + fi + + COMPREPLY=( $( rpm -qa $nodig $nosig | sed -ne \ + 's|^\('$cur'.*\)-[0-9a-zA-Z._]\+-[0-9a-z.@]\+$|\1|p' ) ) + fi +} + +_rpm_groups() +{ + local IFS=$'\t' + # remove trailing backslash, or grep will complain + cur=${cur%"\\"} + COMPREPLY=( $( rpm -qa $nodig $nosig --queryformat '%{group}\n' | \ + grep "^$cur" ) ) + # backslash escape spaces and translate newlines to tabs + COMPREPLY=( $( echo "${COMPREPLY[@]}" | sed 's/ /\\ /g' | tr '\n' '\t' ) ) +} + +# rpm(8) completion +# +_rpm() +{ + local cur prev ver nodig nosig + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + nodig="" + nosig="" + ver=$(rpm --version); ver=${ver##* } + + if [[ "$ver" > "4.0.4" ]]; then + nodig="--nodigest" + fi + if [[ "$ver" > "4.0.99" ]]; then + nosig="--nosignature" + fi + + if [ $COMP_CWORD -eq 1 ]; then + # first parameter on line + case "$cur" in + -b*) + COMPREPLY=( $( compgen -W '-ba -bb -bc -bi -bl -bp -bs'\ + -- $cur ) ) + ;; + -t*) + COMPREPLY=( $( compgen -W '-ta -tb -tc -ti -tl -tp -ts'\ + -- $cur ) ) + ;; + --*) + COMPREPLY=( $( compgen -W '--help --version --initdb \ + --checksig --recompile --rebuild --resign --addsign \ + --rebuilddb --showrc --setperms --setugids --tarbuild \ + --eval --install --upgrade --query --freshen --erase \ + --verify --querytags --rmsource --rmspec --clean \ + --import' -- $cur ) ) + ;; + *) + COMPREPLY=( $( compgen -W '-b -e -F -i -q -t -U -V' \ + -- $cur ) ) + ;; + esac + + return 0 + fi + + case "$prev" in + --@(@(db|exclude)path|prefix|relocate|root)) + _filedir -d + return 0 + ;; + --eval) + # get a list of macros + COMPREPLY=( $( sed -ne 's|^\(%'${cur#\%}'[^ '$'\t'']*\).*$|\1|p' \ + /usr/lib/rpm/macros ) ) + return 0 + ;; + --pipe) + COMPREPLY=( $( compgen -c -- $cur ) ) + return 0 + ;; + --rcfile) + _filedir + return 0 + ;; + --specfile) + # complete on .spec files + _filedir spec + return 0 + ;; + --whatprovides) + if [[ "$cur" == */* ]]; then + _filedir + else + # complete on capabilities + COMPREPLY=( $( rpm -qa $nodig $nosig --queryformat \ + '%{providename}\n' | grep "^$cur" ) ) + fi + return 0 + ;; + --whatrequires) + # complete on capabilities + COMPREPLY=( $( rpm -qa $nodig $nosig --queryformat \ + '%{requirename}\n' | grep "^$cur" ) ) + return 0 + ;; + esac + + case "${COMP_WORDS[1]}" in + -@([iFU]*|-install|-freshen|-upgrade)) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--percent --force --test \ + --replacepkgs --replacefiles --root --excludedocs \ + --includedocs --noscripts --rcfile --ignorearch \ + --dbpath --prefix --ignoreos --nodeps --allfiles \ + --ftpproxy --ftpport --justdb --httpproxy --httpport \ + --noorder --relocate --badreloc --notriggers \ + --excludepath --ignoresize --oldpackage --define \ + --eval --pipe --queryformat --repackage --nosuggests \ + --nodigest --nosignature' -- $cur ) ) + else + _filedir 'rpm' + fi + ;; + -@(e|-erase)) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--allmatches --noscripts \ + --notriggers --nodeps --test --repackage' -- $cur ) ) + else + _rpm_installed_packages + fi + ;; + -@(q*|-query)) + # check whether we're doing file completion + if [ "${COMP_LINE#* -*([^ -])f}" != "$COMP_LINE" ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--scripts --root \ + --rcfile --requires --ftpport --ftpproxy \ + --httpproxy --httpport --provides --triggers \ + --dump --changelog --dbpath \ + --last --filesbypkg \ + --info --list --state \ + --docfiles --configfiles --queryformat \ + --conflicts --obsoletes \ + --nodigest --nosignature \ + --triggerscripts' -- $cur ) ) + else + _filedir + fi + elif [ "${COMP_LINE#* -*([^ -])g}" != "$COMP_LINE" ]; then + _rpm_groups + elif [ "${COMP_LINE#* -*([^ -])p}" != "$COMP_LINE" ]; then + # uninstalled package completion + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--scripts --root \ + --rcfile --whatprovides --whatrequires \ + --requires --triggeredby --ftpport --ftpproxy \ + --httpproxy --httpport --provides --triggers \ + --dump --changelog --dbpath --filesbypkg \ + --define --eval --pipe --showrc --info --list \ + --state --docfiles --configfiles --queryformat\ + --conflicts --obsoletes --nodigest \ + --nosignature' -- $cur ) ) + else + _filedir 'rpm' + fi + else + # installed package completion + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--scripts --root \ + --rcfile --whatprovides --whatrequires \ + --requires --triggeredby --ftpport --ftpproxy \ + --httpproxy --httpport --provides --triggers \ + --dump --changelog --dbpath --specfile \ + --querybynumber --last --filesbypkg --define \ + --eval --pipe --showrc --info --list --state \ + --docfiles --configfiles --queryformat \ + --conflicts --obsoletes --pkgid --hdrid \ + --fileid --tid --nodigest --nosignature \ + --triggerscripts' -- $cur ) ) + elif [ "${COMP_LINE#* -*([^ -])a}" == "$COMP_LINE" ]; then + _rpm_installed_packages + fi + fi + ;; + -@(K*|-checksig)) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--nopgp --nogpg --nomd5 \ + --nodigest --nosignature' -- $cur ) ) + else + _filedir 'rpm' + fi + ;; + -@([Vy]*|-verify)) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--root --rcfile --dbpath \ + --nodeps --nogroup --nolinkto --nomode --nomtime \ + --nordev --nouser --nofiles --noscripts --nomd5 \ + --querytags --specfile --whatrequires --whatprovides \ + --nodigest --nosignature' -- $cur ) ) + # check whether we're doing file completion + elif [ "${COMP_LINE#* -*([^ -])f}" != "$COMP_LINE" ]; then + _filedir + elif [ "${COMP_LINE#* -*([^ -])g}" != "$COMP_LINE" ]; then + _rpm_groups + elif [ "${COMP_LINE#* -*([^ -])p}" != "$COMP_LINE" ]; then + _filedir 'rpm' + else + _rpm_installed_packages + fi + ;; + -[bt]*) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--short-circuit --timecheck \ + --clean --rmsource --rmspec --test --sign --buildroot \ + --target -- buildarch --buildos --nobuild --nodeps \ + --nodirtokens' -- $cur ) ) + elif [[ ${COMP_WORDS[1]} == -b* ]]; then + _filedir 'spec' + else + _filedir '@(tgz|tar.@(gz|bz2))' + fi + ;; + --re@(build|compile)) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--nodeps --rmsource \ + --rmspec --sign --nodirtokens --target' -- $cur ) ) + else + _filedir '?(no)src.rpm' + fi + ;; + --tarbuild) + _filedir '@(tgz|tar.@(gz|bz2))' + ;; + --@(re|add)sign) + _filedir 'rpm' + ;; + --set@(perms|gids)) + _rpm_installed_packages + ;; + --@(clean|rms@(ource|pec))) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--clean --rmsource \ + --rmspec' -- $cur ) ) + else + _filedir 'spec' + fi + ;; + --@(import|dbpath|root)) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--import --dbpath --root' \ + -- $cur ) ) + else + _filedir + fi + ;; + esac + + return 0 +} +complete -F _rpm $filenames rpm rpmbuild +} + +# Debian apt-get(8) completion. +# +have apt-get && +_apt_get() +{ + local cur prev special i + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(install|remove|purge|source|build-dep) ]]; then + special=${COMP_WORDS[i]} + fi + done + + if [ -n "$special" ]; then + case $special in + remove|purge) + if [ -f /etc/debian_version ]; then + # Debian system + COMPREPLY=( $( _comp_dpkg_installed_packages \ + $cur ) ) + else + # assume RPM based + _rpm_installed_packages + fi + return 0 + ;; + *) + COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) ) + return 0 + ;; + + esac + fi + + case "$prev" in + -@(c|-config-file)) + _filedir + return 0 + ;; + + -@(t|-target-release|-default-release)) + COMPREPLY=( $( apt-cache policy | \ + grep "release.o=Debian,a=$cur" | \ + sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null) ) + return 0 + ;; + + esac + + if [[ "$cur" == -* ]]; then + + COMPREPLY=( $( compgen -W '-d -f -h -v -m -q -s -y \ + -u -t -b -c -o --download-only --fix-broken \ + --help --version --ignore-missing \ + --fix-missing --no-download --quiet --simulate \ + --just-print --dry-run --recon --no-act --yes \ + --assume-yes --show-upgraded --only-source \ + --compile --build --ignore-hold \ + --target-release --no-upgrade --force-yes \ + --print-uris --purge --reinstall \ + --list-cleanup --default-release \ + --trivial-only --no-remove --diff-only \ + --tar-only --config-file --option --auto-remove' -- $cur ) ) + else + + COMPREPLY=( $( compgen -W 'update upgrade dselect-upgrade \ + dist-upgrade install remove purge source \ + build-dep check clean autoclean autoremove' \ + -- $cur ) ) + + fi + + + return 0 +} && +complete -F _apt_get $filenames apt-get + +# Debian apt-cache(8) completion. +# +have apt-cache && +_apt_cache() +{ + local cur prev special i + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + + if [ "$cur" != show ]; then + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(add|depends|dotty|policy|rdepends|madison|show?(pkg|src|)) ]]; then + special=${COMP_WORDS[i]} + fi + done + fi + + + if [ -n "$special" ]; then + case $special in + add) + _filedir + return 0 + ;; + + *) + COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) ) + return 0 + ;; + + esac + fi + + + case "$prev" in + -@(c|p|s|-config-file|-@(pkg|src)-cache)) + _filedir + return 0 + ;; + search) + if [[ "$cur" != -* ]]; then + return 0 + fi + ;; + esac + + if [[ "$cur" == -* ]]; then + + COMPREPLY=( $( compgen -W '-h -v -p -s -q -i -f -a -g -c \ + -o --help --version --pkg-cache --src-cache \ + --quiet --important --full --all-versions \ + --no-all-versions --generate --no-generate \ + --names-only --all-names --recurse \ + --config-file --option' -- $cur ) ) + else + + COMPREPLY=( $( compgen -W 'add gencaches show showpkg showsrc \ + stats dump dumpavail unmet search search \ + depends rdepends pkgnames dotty xvcg \ + policy madison' -- $cur ) ) + + fi + + + return 0 +} && +complete -F _apt_cache $filenames apt-cache + + +# Debian aptitude(1) completion +# +have aptitude && { +have grep-status && { +_comp_dpkg_hold_packages() +{ + grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package +} +} || { +_comp_dpkg_hold_packages() +{ + grep -B 2 'hold' /var/lib/dpkg/status | grep "Package: $1" \ + | cut -d\ -f2 +} +} + +_aptitude() +{ + local cur dashoptions prev special i + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + + dashoptions='-S -u -i -h --help --version -s --simulate -d \ + --download-only -P --prompt -y --assume-yes -F \ + --display-format -O --sort -w --width -f -r -g \ + --with-recommends --with-suggests -R -G \ + --without-recommends --without-suggests -t \ + --target-release -V --show-versions -D --show-deps\ + -Z -v --verbose --purge-unused' + + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(install|reinstall|hold|unhold|markauto|unmarkauto|dist-upgrade|full-upgrade|download|show|forbid-version|purge|remove|changelog|why|why-not|keep|keep-all) ]]; then + special=${COMP_WORDS[i]} + fi + #exclude some mutually exclusive options + [[ ${COMP_WORDS[i]} == '-u' ]] && dashoptions=${dashoptions/-i} + [[ ${COMP_WORDS[i]} == '-i' ]] && dashoptions=${dashoptions/-u} + done + + if [[ -n "$special" ]]; then + case $special in + @(install|hold|markauto|unmarkauto|dist-upgrade|full-upgrade|download|show|changelog|why|why-not)) + COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) ) + return 0 + ;; + @(purge|remove|reinstall|forbid-version)) + COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) ) + return 0 + ;; + unhold) + COMPREPLY=( $( _comp_dpkg_hold_packages $cur ) ) + return 0 + ;; + + esac + fi + + case $prev in + # don't complete anything if these options are found + @(autoclean|clean|forget-new|search|upgrade|safe-upgrade|update|keep-all)) + return 0 + ;; + + -S) + _filedir + return 0 + ;; + + -@(t|-target-release|-default-release)) + COMPREPLY=( $( apt-cache policy | \ + grep "release.o=Debian,a=$cur" | \ + sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null ) ) + return 0 + ;; + + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) ) + else + COMPREPLY=( $( compgen -W 'update upgrade safe-upgrade forget-new clean \ + autoclean install reinstall remove \ + hold unhold purge markauto unmarkauto why why-not \ + dist-upgrade full-upgrade download search show \ + forbid-version changelog keep-all' -- $cur ) ) + fi + + + return 0 +} +complete -F _aptitude $default aptitude +} + +# Debian apt-build(1) completion. +# +have apt-build && +_apt_build() +{ + local cur prev special i + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(install|remove|source|info|clean) ]]; then + special=${COMP_WORDS[i]} + fi + done + + if [ -n "$special" ]; then + case $special in + @(install|source|info)) + COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) ) + return 0 + ;; + remove) + COMPREPLY=( $( _comp_dpkg_installed_packages \ + $cur ) ) + return 0 + ;; + *) + return 0 + ;; + esac + fi + + case "$prev" in + + --@(patch|build-dir|repository-dir)) + _filedir + return 0 + ;; + + -@(h|-help)) + return 0 + ;; + + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --show-upgraded -u --build-dir \ + --repository-dir --build-only \ + --build-command --reinstall --rebuild \ + --remove-builddep --no-wrapper --purge \ + --patch --patch-strip -p --yes -y \ + --version -v --no-source' -- $cur ) ) + + else + COMPREPLY=( $( compgen -W 'update upgrade install remove \ + source dist-upgrade world clean info \ + clean-build update-repository ' -- $cur ) ) + fi + + + return 0 +} && +complete -F _apt_build $filenames apt-build + +# chsh(1) completion +# +_chsh() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + if [ "$prev" = "-s" ]; then + if [ -f /etc/debian_version ]; then + COMPREPLY=( $( /dev/null ) ) + fi + if [ ${#khd[@]} -gt 0 ]; then + # Needs to look for files called + # .../.ssh2/key_22_.pub + # dont fork any processes, because in a cluster environment, + # there can be hundreds of hostkeys + for i in "${khd[@]}" ; do + if [[ "$i" == *key_22_$curd*.pub ]] && [ -r "$i" ] ; then + host=${i/#*key_22_/} + host=${host/%.pub/} + COMPREPLY=( "${COMPREPLY[@]}" $host ) + fi + done + fi + + # append any available aliases from config files + if [ ${#config[@]} -gt 0 ] && [ -n "$aliases" ]; then + local host_aliases=$( sed -ne 's/^[Hh][Oo][Ss][Tt]\([Nn][Aa][Mm][Ee]\)\?['"$'\t '"']\+\([^*?]*\)$/\2/p' "${config[@]}" ) + hosts=$( compgen -W "$host_aliases" -- $ocur ) + COMPREPLY=( "${COMPREPLY[@]}" $hosts ) + fi + + # Now add results of normal hostname completion + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -A hostname -- $ocur ) ) + + # apply suffix + for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do + COMPREPLY[i]=$user${COMPREPLY[i]}$suffix + done + else + # Just do normal hostname completion + COMPREPLY=( $( compgen -A hostname -S "$suffix" -- $cur ) ) + fi + + return 0 +} +complete -F _known_hosts traceroute traceroute6 tracepath tracepath6 \ + ping ping6 fping fping6 telnet host nslookup rsh rlogin ftp dig ssh-installkeys mtr + +# ssh(1) completion +# +have ssh && { +_ssh() +{ + local cur prev + local -a config + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -*c) + COMPREPLY=( $( compgen -W 'blowfish 3des 3des-cbc blowfish-cbc \ + arcfour cast128-cbc' -- $cur ) ) + ;; + -*i) + _filedir + ;; + -*l) + COMPREPLY=( $( compgen -u -- $cur ) ) + ;; + *) + _known_hosts -a + + [ $COMP_CWORD -eq 1 ] || \ + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -c -- $cur ) ) + esac + + return 0 +} +shopt -u hostcomplete && complete -F _ssh ssh slogin sftp xhost autossh + +# scp(1) completion +# +_scp() +{ + local cur userhost path + + COMPREPLY=() + cur=`_get_cword` + + _expand || return 0 + + if [[ "$cur" == *:* ]]; then + local IFS=$'\t\n' + # remove backslash escape from : + cur=${cur/\\:/:} + userhost=${cur%%?(\\):*} + path=${cur#*:} + # unescape spaces + path=${path//\\\\\\\\ / } + if [ -z "$path" ]; then + # default to home dir of specified user on remote host + path=$(ssh -o 'Batchmode yes' $userhost pwd 2>/dev/null) + fi + # escape spaces; remove executables, aliases, pipes and sockets; + # add space at end of file names + COMPREPLY=( $( ssh -o 'Batchmode yes' $userhost \ + command ls -aF1d "$path*" 2>/dev/null | \ + sed -e "s/[][(){}<>\",:;^&!$&=?\`|\\ ']/\\\\\\\\\\\\&/g" \ + -e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' ) ) + return 0 + fi + + [[ "$cur" == */* ]] || _known_hosts -c -a + local IFS=$'\t\n' + COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* \ + 2>/dev/null | sed \ + -e "s/[][(){}<>\",:;^&!$&=?\`|\\ ']/\\\\&/g" \ + -e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' ) ) + return 0 +} +complete -F _scp $nospace scp +} + +# rsync(1) completion +# +have rsync && +_rsync() +{ + local cur prev shell i userhost path + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + _expand || return 0 + + case "$prev" in + --@(config|password-file|include-from|exclude-from)) + _filedir + return 0 + ;; + -@(T|-temp-dir|-compare-dest)) + _filedir -d + return 0 + ;; + -@(e|-rsh)) + COMPREPLY=( $( compgen -W 'rsh ssh' -- $cur ) ) + return 0 + ;; + esac + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W '-v -q -c -a -r -R -b -u -l -L -H \ + -p -o -g -D -t -S -n -W -x -B -e -C -I -T -P \ + -z -h -4 -6 --verbose --quiet --checksum \ + --archive --recursive --relative --backup \ + --backup-dir --suffix= --update --links \ + --copy-links --copy-unsafe-links --safe-links \ + --hard-links --perms --owner --group --devices\ + --times --sparse --dry-run --whole-file \ + --no-whole-file --one-file-system \ + --block-size= --rsh= --rsync-path= \ + --cvs-exclude --existing --ignore-existing \ + --delete --delete-excluded --delete-after \ + --ignore-errors --max-delete= --partial \ + --force --numeric-ids --timeout= \ + --ignore-times --size-only --modify-window= \ + --temp-dir= --compare-dest= --compress \ + --exclude= --exclude-from= --include= \ + --include-from= --version --daemon --no-detach\ + --address= --config= --port= --blocking-io \ + --no-blocking-io --stats --progress \ + --log-format= --password-file= --bwlimit= \ + --write-batch= --read-batch= --help' -- $cur )) + ;; + *:*) + # find which remote shell is used + shell=rsh + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -@(e|-rsh) ]]; then + shell=${COMP_WORDS[i+1]} + break + fi + done + if [[ "$shell" == ssh ]]; then + # remove backslash escape from : + cur=${cur/\\:/:} + userhost=${cur%%?(\\):*} + path=${cur#*:} + # unescape spaces + path=${path//\\\\\\\\ / } + if [ -z "$path" ]; then + # default to home dir of specified + # user on remote host + path=$(ssh -o 'Batchmode yes' \ + $userhost pwd 2>/dev/null) + fi + # escape spaces; remove executables, aliases, pipes + # and sockets; add space at end of file names + COMPREPLY=( $( ssh -o 'Batchmode yes' $userhost \ + command ls -aF1d "$path*" 2>/dev/null | \ + sed -e 's/ /\\\\\\\ /g' -e 's/[*@|=]$//g' \ + -e 's/[^\/]$/& /g' ) ) + fi + ;; + *) + _known_hosts -c -a + _filedir + ;; + esac + + return 0 +} && +complete -F _rsync $nospace $filenames rsync + +# Linux route(8) completion +# +[ $UNAME = Linux ] && +_route() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + if [ "$prev" = dev ]; then + COMPREPLY=( $( ifconfig -a | sed -ne 's|^\('$cur'[^ ]*\).*$|\1|p' )) + return 0 + fi + + COMPREPLY=( $( compgen -W 'add del -host -net netmask metric mss \ + window irtt reject mod dyn reinstate dev \ + default gw' -- $cur ) ) + + COMPREPLY=( $( echo " ${COMP_WORDS[@]}" | \ + (while read -d ' ' i; do + [ "$i" == "" ] && continue + # flatten array with spaces on either side, + # otherwise we cannot grep on word + # boundaries of first and last word + COMPREPLY=" ${COMPREPLY[@]} " + # remove word from list of completions + COMPREPLY=( ${COMPREPLY/ $i / } ) + done + echo "${COMPREPLY[@]}") + ) ) + return 0 +} +[ $UNAME = Linux ] && complete -F _route route + +# GNU make(1) completion +# +have make || have gmake || have gnumake || have pmake && +_make() +{ + local file makef makef_dir="." makef_inc cur prev i + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # --name value style option + case $prev in + -@(f|o|W)) + _filedir + return 0 + ;; + -@(I|C)) + _filedir -d + return 0 + ;; + esac + + # --name=value style option + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case "$prev" in + --@(file|makefile)) + _filedir + return 0 + ;; + --@(directory|include-dir)) + _filedir -d + return 0 + ;; + esac + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-b -m -B -C -d -e -f -h -i -I\ + -j -l -k -n -o -p -q -r -R - s -S -t -v -w -W \ + --always-make --directory= --debug \ + --environment-overrides --file= --makefile= --help \ + --ignore-errors --include-dir= --jobs --load-average \ + --max-load --keep-going --just-print --dry-run \ + --recon --old-file= --assume-old= --print-data-base \ + --question --no-builtin-rules --no-builtin-variables \ + --silent --quiet --no-keep-goind --stop --touch \ + --version --print-directory --no-print-directory \ + --what-if= --new-file= --assume-new= \ + --warn-undefined-variables' -- $cur ) ) + else + # before we check for makefiles, see if a path was specified + # with -C + for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do + if [[ ${COMP_WORDS[i]} == -C ]]; then + # eval for tilde expansion + eval makef_dir=${COMP_WORDS[i+1]} + break + fi + done + + # make reads `GNUmakefile', then `makefile', then `Makefile' + if [ -f ${makef_dir}/GNUmakefile ]; then + makef=${makef_dir}/GNUmakefile + elif [ -f ${makef_dir}/makefile ]; then + makef=${makef_dir}/makefile + elif [ -f ${makef_dir}/Makefile ]; then + makef=${makef_dir}/Makefile + else + makef=${makef_dir}/*.mk # local convention + fi + + # before we scan for targets, see if a Makefile name was + # specified with -f + for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do + if [[ ${COMP_WORDS[i]} == -f ]]; then + # eval for tilde expansion + eval makef=${COMP_WORDS[i+1]} + break + fi + done + + [ ! -f $makef ] && return 0 + + # deal with included Makefiles + makef_inc=$( grep -E '^-?include' $makef | sed -e "s,^.* ,"$makef_dir"/," ) + + for file in $makef_inc; do + [ -f $file ] && makef="$makef $file" + done + + COMPREPLY=( $( awk -F':' '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/ \ + {split($1,A,/ /);for(i in A)print A[i]}' \ + $makef 2>/dev/null | command grep "^$cur" )) + fi +} && +complete -f -F _make $filenames make gmake gnumake pmake + +# GNU tar(1) completion +# +_tar() +{ + local cur ext regex tar untar + + COMPREPLY=() + cur=`_get_cword` + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'c t x u r d A' -- $cur ) ) + return 0 + fi + + case "${COMP_WORDS[1]}" in + ?(-)[cr]*f) + _filedir + return 0 + ;; + +([^IZzjy])f) + ext='t@(ar?(.@(Z|gz|bz?(2)))|gz|bz?(2))' + regex='t\(ar\(\.\(Z\|gz\|bz2\?\)\)\?\|gz\|bz2\?\)' + ;; + *[Zz]*f) + ext='t?(ar.)@(gz|Z)' + regex='t\(ar\.\)\?\(gz\|Z\)' + ;; + *[Ijy]*f) + ext='t?(ar.)bz?(2)' + regex='t\(ar\.\)\?bz2\?' + ;; + *) + _filedir + return 0 + ;; + + esac + + if [[ "$COMP_LINE" == *$ext' ' ]]; then + # complete on files in tar file + # + # get name of tar file from command line + tar=$( echo "$COMP_LINE" | \ + sed -e 's/^.* \([^ ]*'$regex'\) .*$/\1/' ) + # devise how to untar and list it + untar=t${COMP_WORDS[1]//[^Izjyf]/} + + COMPREPLY=( $( compgen -W "$( echo $( tar $untar $tar \ + 2>/dev/null ) )" -- "$cur" ) ) + return 0 + fi + + # file completion on relevant files + _filedir "$ext" + + return 0 +} +[ -n "${COMP_TAR_INTERNAL_PATHS:-}" ] && complete -F _tar $dirnames tar || + complete -F _tar $filenames tar + +# jar(1) completion +# +have jar && +_jar() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [ $COMP_CWORD = 1 ]; then + COMPREPLY=( $( compgen -W 'c t x u' -- $cur ) ) + return 0 + fi + + case "${COMP_WORDS[1]}" in + *c*f) + _filedir + ;; + *f) + _filedir '?(e|j|w)ar' + ;; + *) + _filedir + ;; + esac +} && +complete -F _jar $filenames jar + +# Linux iptables(8) completion +# +have iptables && +_iptables() +{ + local cur prev table chain + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + chain='s/^Chain \([^ ]\+\).*$/\1/p' + + if [[ $COMP_LINE == *-t\ *filter* ]]; then + table="-t filter" + elif [[ $COMP_LINE == *-t\ *nat* ]]; then + table="-t nat" + elif [[ $COMP_LINE == *-t\ *mangle* ]]; then + table="-t mangle" + fi + + case "$prev" in + -*[AIDRPFXLZ]) + COMPREPLY=( $( compgen -W '`iptables $table -nL | \ + sed -ne "s/^Chain \([^ ]\+\).*$/\1/p"`' -- $cur ) ) + ;; + -*t) + COMPREPLY=( $( compgen -W 'nat filter mangle' -- $cur ) ) + ;; + -j) + if [ "$table" = "-t filter" -o "$table" = "" ]; then + COMPREPLY=( $( compgen -W 'ACCEPT DROP LOG ULOG REJECT \ + `iptables $table -nL | sed -ne "$chain" \ + -e "s/INPUT|OUTPUT|FORWARD|PREROUTING|POSTROUTING//"`' -- \ + $cur ) ) + elif [ "$table" = "-t nat" ]; then + COMPREPLY=( $( compgen -W 'ACCEPT DROP LOG ULOG REJECT \ + MIRROR SNAT DNAT MASQUERADE `iptables $table -nL | \ + sed -ne "$chain" -e "s/OUTPUT|PREROUTING|POSTROUTING//"`' \ + -- $cur ) ) + elif [ "$table" = "-t mangle" ]; then + COMPREPLY=( $( compgen -W 'ACCEPT DROP LOG ULOG REJECT \ + MARK TOS `iptables $table -nL | sed -ne "$chain" \ + -e "s/INPUT|OUTPUT|FORWARD|PREROUTING|POSTROUTING//"`' -- \ + $cur ) ) + fi + ;; + *) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i -o -s -d -p -f -m --append \ + --delete --insert --replace --list --flush --zero --new \ + --delete-chain --policy --rename-chain --proto --source \ + --destination --in-interface --jump --match --numeric \ + --out-interface --table --verbose --line-numbers --exact \ + --fragment --modprobe= --set-counters --version' -- "$cur") ) + fi + ;; + esac + +} && +complete -F _iptables iptables + +# tcpdump(8) completion +# +have tcpdump && +_tcpdump() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(r|w|F)) + _filedir + return 0 + ;; + -i) + _available_interfaces -a + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -d -e -f -l -n -N -O -p \ + -q -R -S -t -u -v -x -C -F -i -m -r -s -T -w \ + -E' -- $cur ) ) + fi + +} && +complete -F _tcpdump tcpdump + +# autorpm(8) completion +# +have autorpm && +_autorpm() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + COMPREPLY=( $( compgen -W '--notty --debug --help --version \ + auto add fullinfo info help install list \ + remove set' -- $cur ) ) + +} && +complete -F _autorpm autorpm + +# This meta-cd function observes the CDPATH variable, so that cd additionally +# completes on directories under those specified in CDPATH. +# +_cd() +{ + local IFS=$'\t\n' cur=`_get_cword` i j k + + # try to allow variable completion + if [[ "$cur" == ?(\\)\$* ]]; then + COMPREPLY=( $( compgen -v -P '$' -- "${cur#?(\\)$}" ) ) + return 0 + fi + + # Use standard dir completion if no CDPATH or parameter starts with /, + # ./ or ../ + if [ -z "${CDPATH:-}" ] || [[ "$cur" == ?(.)?(.)/* ]]; then + _filedir -d + return 0 + fi + + local -r mark_dirs=$(_rl_enabled mark-directories && echo y) + local -r mark_symdirs=$(_rl_enabled mark-symlinked-directories && echo y) + + # we have a CDPATH, so loop on its contents + for i in ${CDPATH//:/$'\t'}; do + # create an array of matched subdirs + k="${#COMPREPLY[@]}" + for j in $( compgen -d $i/$cur ); do + if [[ ( $mark_symdirs && -h $j || $mark_dirs && ! -h $j ) && ! -d ${j#$i/} ]]; then + j="${j}/" + fi + COMPREPLY[k++]=${j#$i/} + done + done + + _filedir -d + + if [[ ${#COMPREPLY[@]} -eq 1 ]]; then + i=${COMPREPLY[0]} + if [ "$i" == "$cur" ] && [[ $i != "*/" ]]; then + COMPREPLY[0]="${i}/" + fi + fi + + return 0 +} +if shopt -q cdable_vars; then + complete -v -F _cd $nospace $filenames cd +else + complete -F _cd $nospace $filenames cd +fi + +_remove_comp_word() +{ + if [[ COMP_CWORD -eq 0 ]]; then + return + elif [[ ${#COMP_WORDS[@]} -ge 2 ]]; then + local old_cw0="${COMP_WORDS[0]}" + local new_cw0="${COMP_WORDS[1]}" + local old_length="${#COMP_LINE}" + COMP_LINE=${COMP_LINE#${old_cw0}} + local head=${COMP_LINE:0:${#new_cw0}} + local i=1 + while [[ $head != $new_cw0 ]]; do + COMP_LINE=${COMP_LINE:1} + head=${COMP_LINE:0:${#new_cw0}} + if (( ++i > 10 )); then + break + fi + done + local new_length="${#COMP_LINE}" + COMP_POINT=$(( COMP_POINT + new_length - old_length)) + + COMP_CWORD=$(( COMP_CWORD - 1 )) + for (( i=0; i < ${#COMP_WORDS[@]} - 1; ++i )); do + COMP_WORDS[i]="${COMP_WORDS[i+1]}" + done + unset COMP_WORDS[${#COMP_WORDS[@]}-1] + else + return + fi +} + +# A meta-command completion function for commands like sudo(8), which need to +# first complete on a command, then complete according to that command's own +# completion definition - currently not quite foolproof (e.g. mount and umount +# don't work properly), but still quite useful. +# +_command() +{ + local cur func cline cspec noglob cmd done i \ + _COMMAND_FUNC _COMMAND_FUNC_ARGS + + _remove_comp_word + COMPREPLY=() + cur=`_get_cword` + # If the the first arguments following our meta-command-invoker are + # switches, get rid of them. Most definitely not foolproof. + done= + while [ -z $done ] ; do + cmd=${COMP_WORDS[0]} + if [[ "$cmd" == -* ]] && [ $COMP_CWORD -ge 1 ]; then + _remove_comp_word + elif [[ "$cmd" == -* ]] && [[ $COMP_CWORD -eq 0 ]]; then + return + else + done=1 + fi + done + + if [ $COMP_CWORD -eq 0 ]; then + COMPREPLY=( $( compgen -c -- $cur ) ) + elif complete -p $cmd &>/dev/null; then + cspec=$( complete -p $cmd ) + if [ "${cspec#* -F }" != "$cspec" ]; then + # COMP_CWORD and COMP_WORDS() are not read-only, + # so we can set them before handing off to regular + # completion routine + + # get function name + func=${cspec#*-F } + func=${func%% *} + + if [[ ${#COMP_WORDS[@]} -ge 2 ]]; then + $func $cmd "${COMP_WORDS[${#COMP_WORDS[@]}-1]}" "${COMP_WORDS[${#COMP_WORDS[@]}-2]}" + else + $func $cmd "${COMP_WORDS[${#COMP_WORDS[@]}-1]}" + fi + + # remove any \: generated by a command that doesn't + # default to filenames or dirnames (e.g. sudo chown) + # FIXME: I'm pretty sure this does not work! + if [ "${cspec#*-o }" != "$cspec" ]; then + cspec=${cspec#*-o } + cspec=${cspec%% *} + if [[ "$cspec" != @(dir|file)names ]]; then + COMPREPLY=("${COMPREPLY[@]//\\\\:/:}") + fi + fi + elif [ -n "$cspec" ]; then + cspec=${cspec#complete}; + cspec=${cspec%%$cmd}; + COMPREPLY=( $( eval compgen "$cspec" -- "$cur" ) ); + fi + fi + + [ ${#COMPREPLY[@]} -eq 0 ] && _filedir +} +complete -F _command $filenames nohup exec nice eval strace time ltrace then \ + else do vsound command xargs + +_root_command() +{ + PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin _command $1 $2 $3 +} +complete -F _root_command $filenames sudo fakeroot really + +# ant(1) completion +# +have ant && { +_ant() +{ + local cur prev buildfile i + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -buildfile|-f) + _filedir 'xml' + return 0 + ;; + -logfile) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + # relevant options completion + COMPREPLY=( $( compgen -W '-help -projecthelp -version -quiet \ + -verbose -debug -emacs -logfile -logger \ + -listener -buildfile -f -D -find' -- $cur ) ) + else + # available targets completion + # find which buildfile to use + buildfile=build.xml + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -buildfile ]]; then + buildfile=${COMP_WORDS[i+1]} + break + fi + done + [ ! -f $buildfile ] && return 0 + + # parse buildfile for targets + COMPREPLY=( $( awk -F'"' '//dev/null | \ + sed -e '1,/^-/d' -e '/^(/,$d' | \ + awk '{print $1}' | grep "^$cur" ) ) +} + +_pg_users() +{ + #COMPREPLY=( $( psql -qtc 'select usename from pg_user' template1 2>/dev/null | \ + # grep "^ $cur" ) ) + #[ ${#COMPREPLY[@]} -eq 0 ] && + COMPREPLY=( $( compgen -u -- $cur ) ) +} + +# createdb(1) completion +# +_createdb() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(h|-host=)) + _known_hosts + return 0 + ;; + -@(U|-username=)) + _pg_users + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-D -T -E -h -p -U -W -e -q \ + --location= --template= --encoding= --host= --port= \ + --username= --password --echo --quiet --help' -- $cur )) + else + _pg_databases + fi +} +complete -F _createdb $default createdb + +# dropdb(1) completion +# +_dropdb() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(h|-host=)) + _known_hosts + return 0 + ;; + -@(U|-username=)) + _pg_users + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-h -p -U -W -e -q \ + --host= --port= --username= --password \ + --interactive --echo --quiet --help' -- $cur ) ) + else + _pg_databases + fi +} +complete -F _dropdb $default dropdb + +# psql(1) completion +# +_psql() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -h|--host) + _known_hosts + return 0 + ;; + -U|--username) + _pg_users + return 0 + ;; + -d|--dbname) + _pg_databases + return 0 + ;; + -@(o|f)|--output|--file) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + # return list of available options + COMPREPLY=( $( compgen -W '-a --echo-all -A --no-align \ + -c --command -d --dbname -e --echo-queries \ + -E --echo-hidden -f --file -F --filed-separator \ + -h --host -H --html -l --list -n -o --output \ + -p --port -P --pset -q -R --record-separator \ + -s --single-step -S --single-line -t --tuples-only \ + -T --table-attr -U --username -v --variable \ + -V --version -W --password -x --expanded -X --nopsqlrc \ + -? --help ' -- $cur ) ) + else + # return list of available databases + _pg_databases + fi +} +complete -F _psql $default psql +} + +_longopt() +{ + local cur opt + + cur=`_get_cword` + + if [[ "$cur" == --*=* ]]; then + opt=${cur%%=*} + # cut backslash that gets inserted before '=' sign + opt=${opt%\\*} + cur=${cur#*=} + _filedir + COMPREPLY=( $( compgen -P "$opt=" -W '${COMPREPLY[@]}' -- $cur)) + return 0 + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( $1 --help 2>&1 | sed -e '/--/!d' \ + -e 's/.*\(--[-A-Za-z0-9]\+=\?\).*/\1/' | \ + command grep "^$cur" | sort -u ) ) + elif [[ "$1" == @(mk|rm)dir ]]; then + _filedir -d + else + _filedir + fi +} +# makeinfo and texi2dvi are defined elsewhere. +for i in a2ps autoconf automake bc gprof ld nm objcopy objdump readelf strip \ + bison cpio diff patch enscript cp df dir du ln ls mkfifo mknod mv rm \ + touch vdir awk gperf grep grub indent less m4 sed shar date \ + tee who texindex cat csplit cut expand fmt fold head \ + md5sum nl od paste pr ptx sha1sum sort split tac tail tr unexpand \ + uniq wc ldd bash id irb mkdir rmdir; do + have $i && complete -F _longopt $filenames $i +done + +# These commands use filenames, so '-o filenames' is not needed. +for i in env netstat seq uname units wget; do + have $i && complete -F _longopt $default $i +done +unset i + +# gcc(1) completion +# +# The only unusual feature is that we don't parse "gcc --help -v" output +# directly, because that would include the options of all the other backend +# tools (linker, assembler, preprocessor, etc) without any indication that +# you cannot feed such options to the gcc driver directly. (For example, the +# linker takes a -z option, but you must type -Wl,-z for gcc.) Instead, we +# ask the driver ("g++") for the name of the compiler ("cc1"), and parse the +# --help output of the compiler. +# +have gcc && +_gcc() +{ + local cur cc backend + + COMPREPLY=() + cur=`_get_cword` + + _expand || return 0 + + case "$1" in + gcj) + backend=jc1 + ;; + gpc) + backend=gpc1 + ;; + *77) + backend=f771 + ;; + *) + backend=cc1 # (near-)universal backend + ;; + esac + + if [[ "$cur" == -* ]]; then + cc=$( $1 -print-prog-name=$backend ) + # sink stderr: + # for C/C++/ObjectiveC it's useless + # for FORTRAN/Java it's an error + COMPREPLY=( $( $cc --help 2>/dev/null | tr '\t' ' ' | \ + sed -e '/^ *-/!d' -e 's/ *-\([^ ]*\).*/-\1/' | \ + command grep "^$cur" | sort -u ) ) + else + _filedir + fi +} && +complete $filenames -F _gcc gcc g++ c++ g77 gcj gpc +[ $UNAME = GNU -o $UNAME = Linux -o $UNAME = Cygwin ] && \ +[ -n "${have:-}" ] && complete $filenames -F _gcc cc + +# Linux cardctl(8) completion +# +have cardctl && +_cardctl() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'status config ident suspend \ + resume reset eject insert scheme' \ + -- $cur ) ) + fi +} && +complete -F _cardctl cardctl + +# This function is required by _dpkg() and _dpkg-reconfigure() +# +have dpkg && { +_comp_dpkg_installed_packages() +{ + grep -A 1 "Package: $1" /var/lib/dpkg/status | \ + grep -B 1 -E "ok installed|half-installed|unpacked| \ + half-configured|config-files" | \ + grep "Package: $1" | cut -d\ -f2 +} + +# Debian dpkg(8) completion +# +_dpkg() +{ + local cur prev i + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + i=$COMP_CWORD + + _expand || return 0 + + # find the last option flag + if [[ $cur != -* ]]; then + while [[ $prev != -* && $i != 1 ]]; do + i=$((i-1)) + prev=${COMP_WORDS[i-1]} + done + fi + + case "$prev" in + -@(c|i|A|I|f|e|x|X|-@(install|unpack|record-avail|contents|info|fsys-tarfile|field|control|extract))) + _filedir '?(u)deb' + return 0 + ;; + -@(b|-build)) + _filedir -d + return 0 + ;; + -@(s|p|l|-@(status|print-avail|list))) + COMPREPLY=( $( apt-cache pkgnames $cur 2>/dev/null ) ) + return 0 + ;; + -@(S|-search)) + _filedir + return 0 + ;; + -@(r|L|P|-@(remove|purge|listfiles))) + COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) ) + return 0 + ;; + *) + + COMPREPLY=( $( compgen -W '-i --install --unpack -A --record-avail \ + --configure -r --remove -P --purge --get-selections \ + --set-selections --update-avail --merge-avail \ + --clear-avail --command-fd --forget-old-unavail -s \ + --status -p --print-avail -L --listfiles -l --list \ + -S --search -C --audit --print-architecture \ + --print-gnu-build-architecture \ + --print-installation-architecture \ + --compare-versions --help --version --force-help \ + --force-all --force-auto-select --force-downgrade \ + --force-configure-any --force-hold --force-bad-path \ + --force-not-root --force-overwrite \ + --force-overwrite-diverted --force-bad-verify \ + --force-depends-version --force-depends \ + --force-confnew --force-confold --force-confdef \ + --force-confmiss --force-conflicts --force-architecture\ + --force-overwrite-dir --force-remove-reinstreq \ + --force-remove-essential -Dh \ + --debug=help --licence --admindir= --root= --instdir= \ + -O --selected-only -E --skip-same-version \ + -G --refuse-downgrade -B --auto-deconfigure \ + --no-debsig --no-act -D --debug= --status-fd \ + -b --build -I --info -f --field -c --contents \ + -x --extract -X --vextract --fsys-tarfile -e --control \ + --ignore-depends= --abort-after' -- $cur ) ) + ;; + esac + + +} +complete -F _dpkg $filenames dpkg dpkg-deb +} + +# Debian GNU dpkg-reconfigure(8) completion +# +have dpkg-reconfigure && +_dpkg_reconfigure() +{ + local cur prev opt + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + + case "$prev" in + -@(f|-frontend)) + opt=( $( echo /usr/share/perl5/Debconf/FrontEnd/* ) ) + opt=( ${opt[@]##*/} ) + opt=( ${opt[@]%.pm} ) + COMPREPLY=( $( compgen -W '${opt[@]}' -- $cur ) ) + return 0 + ;; + -@(p|-priority)) + COMPREPLY=( $( compgen -W 'low medium high critical' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-f --frontend -p --priority -a --all \ + -u --unseen-only -h --help -s --showold \ + --force --terse' -- $cur ) ) + else + COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) ) + fi +} && +complete -F _dpkg_reconfigure $default dpkg-reconfigure + +# Debian dpkg-source completion +# +have dpkg-source && +_dpkg_source() +{ + local cur prev options work i action packopts unpackopts + + packopts="-c -l -F -V -T -D -U -W -E -sa -i -I -sk -sp -su -sr -ss -sn -sA -sK -sP -sU -sR" + unpackopts="-sp -sn -su" + options=`echo "-x -b $packopts $unpackopts" | xargs echo | sort -u | xargs echo` + + COMPREPLY=() + if [ "$1" != "dpkg-source" ]; then + exit 1 + fi + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + action="options" + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[$i]} == "-x" ]]; then + action=unpack + elif [[ ${COMP_WORDS[$i]} == "-b" ]]; then + action=pack + elif [[ ${COMP_WORDS[$i]} == "-h" ]]; then + action=help + fi + done + # if currently seeing a complete option, return just itself. + for i in $options; do + if [ "$cur" = "$i" ]; then + COMPREPLY=( "$cur" ) + return 0 + fi + done + case "$action" in + "unpack") + if [ "$cur" = "-" -o "$cur" = "-s" ]; then + COMPREPLY=( $unpackots ) + return 0 + fi + case "$prev" in + "-x") + COMPREPLY=( $( compgen -d -- "$cur" ) \ + $( compgen -f -X '!*.dsc' -- "$cur" ) ) + return 0 + ;; + *) + COMPREPLY=( $unpackopts $(compgen -d -f -- "$cur" ) ) + return 0 + ;; + esac + return 0 + ;; + "pack") + if [ "$cur" = "-" ]; then + COMPREPLY=( $packopts ) + return 0 + fi + if [ "$cur" = "-s" ]; then + COMPREPLY=( "-sa" "-sk" "-sp" "-su" "-sr" "-ss" "-sn" \ + "-sA" "-sK" "-sP" "-sU" "-sR" ) + return 0 + fi + case "$prev" in + "-b") + COMPREPLY=( $( compgen -d -- "$cur" ) ) + return 0 + ;; + "-c"|"-l"|"-T"|"-i"|"-I") + # -c: get controlfile + # -l: get per-version info from this file + # -T: read variables here, not debian/substvars + # -i: filter out files to ignore diffs of. + # -I: filter out files when building tarballs. + # return directory names and file names + COMPREPLY=( $( compgen -d -f ) ) + return 0 + ;; + "-F") + # -F: force change log format + COMPREPLY=( $( ( cd /usr/lib/dpkg/parsechangelog; compgen -f "$cur" ) ) ) + return 0 + ;; + "-V"|"-D") + # -V: set a substitution variable + # we don't know anything about possible variables or values + # so we don't try to suggest any completion. + COMPREPLY=() + return 0 + ;; + "-D") + # -D: override or add a .dsc field and value + # if $cur doesn't contain a = yet, suggest variable names + if echo -- "$cur" | grep -q "="; then + # $cur contains a "=" + COMPREPLY=() + return 0 + else + COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files ) + return 0 + fi + ;; + "-U") + # -U: remove a field + # Suggest possible fieldnames + COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files ) + return 0 + ;; + *) + COMPREPLY=( $packopts ) + return 0 + ;; + esac + return 0 + ;; + *) + # if seeing a partial option, return possible completions. + if [ "$cur" = "-s" ]; then + COMPREPLY=( "-sa" "-sk" "-sp" "-su" "-sr" "-ss" "-sn" \ + "-sA" "-sK" "-sP" "-sU" "-sR" ) + return 0 + fi + # else return all possible options. + COMPREPLY=( $options ) + return 0 + ;; + esac +} && +complete -F _dpkg_source dpkg-source + +# Debian Linux dselect(8) completion. +# +have dselect && +_dselect() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + --admindir) + _filedir -d + return 0 + ;; + + -@(D|debug)) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--admindir --help --version --licence \ + --license --expert --debug' -- $cur ) ) + else + COMPREPLY=( $( compgen -W 'access update select install config \ + remove quit' -- $cur ) ) + fi + + + return 0 +} && +complete -F _dselect $filenames dselect + +# Java completion +# + +# available path elements completion +have java && { +_java_path() +{ + cur=${cur##*:} + _filedir '@(jar|zip)' +} + +# exact classpath determination +_java_find_classpath() +{ + local i + + # search first in current options + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -@(cp|classpath) ]]; then + classpath=${COMP_WORDS[i+1]} + break + fi + done + + # default to environment + [ -z "$classpath" ] && classpath=$CLASSPATH + + # default to current directory + [ -z "$classpath" ] && classpath=. +} + +# exact sourcepath determination +_java_find_sourcepath() +{ + local i + + # search first in current options + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -sourcepath ]]; then + sourcepath=${COMP_WORDS[i+1]} + break + fi + done + + # default to classpath + [ -z "$sourcepath" ] && _java_find_classpath + sourcepath=$classpath +} + +# available classes completion +_java_classes() +{ + local classpath i + + # find which classpath to use + _java_find_classpath + + # convert package syntax to path syntax + cur=${cur//.//} + # parse each classpath element for classes + for i in ${classpath//:/ }; do + if [ -r $i ] && [[ "$i" == *.@(jar|zip) ]]; then + if type zipinfo &> /dev/null; then + COMPREPLY=( "${COMPREPLY[@]}" $( zipinfo -1 \ + "$i" | grep "^$cur" | grep '\.class$' | \ + grep -v "\\$" ) ) + else + COMPREPLY=( "${COMPREPLY[@]}" $( jar tf "$i" \ + "$cur" | grep "\.class$" | grep -v "\\$" ) ) + fi + + elif [ -d $i ]; then + i=${i%/} + COMPREPLY=( "${COMPREPLY[@]}" $( find "$i" -type f \ + -path "$i/$cur*.class" 2>/dev/null | \ + grep -v "\\$" | sed -e "s|^$i/||" ) ) + fi + done + + # remove class extension + COMPREPLY=( ${COMPREPLY[@]%.class} ) + # convert path syntax to package syntax + COMPREPLY=( ${COMPREPLY[@]//\//.} ) +} + +# available packages completion +_java_packages() +{ + local sourcepath i + + # find wich sourcepath to use + _java_find_sourcepath + + # convert package syntax to path syntax + cur=${cur//.//} + # parse each sourcepath element for packages + for i in ${sourcepath//:/ }; do + if [ -d $i ]; then + COMPREPLY=( "${COMPREPLY[@]}" $( command ls -F -d \ + $i/$cur* 2>/dev/null | sed -e 's|^'$i'/||' ) ) + fi + done + # keep only packages + COMPREPLY=( $( echo "${COMPREPLY[@]}" | tr " " "\n" | grep "/$" ) ) + # remove packages extension + COMPREPLY=( ${COMPREPLY[@]%/} ) + # convert path syntax to package syntax + cur=${COMPREPLY[@]//\//.} +} + +# java completion +# +_java() +{ + local cur prev i + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + for ((i=1; i < $COMP_CWORD; i++)); do + case ${COMP_WORDS[$i]} in + -cp|-classpath) + ((i++)) # skip the classpath string. + ;; + -*) + # this is an option, not a class/jarfile name. + ;; + *) + # once we've seen a class, just do filename completion + _filedir + return 0 + ;; + esac + done + + case $prev in + -@(cp|classpath)) + _java_path + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + # relevant options completion + COMPREPLY=( $( compgen -W '-client -hotspot -server -classic \ + -cp -classpath -D -verbose -verbose:class \ + -verbose:gc -version:jni -version \ + -showversion -? -help -X -jar \ + -ea -enableassertions -da -disableassertions \ + -esa -enablesystemassertions \ + -dsa -disablesystemassertions ' -- $cur ) ) + else + if [[ "$prev" == -jar ]]; then + # jar file completion + _filedir jar + else + # classes completion + _java_classes + fi + fi +} +complete -F _java $filenames java +} + +# javadoc completion +# +have javadoc && +_javadoc() +{ + COMPREPLY=() + local cur prev + + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -@(overview|helpfile|stylesheetfile)) + _filedir + return 0 + ;; + -d) + _filedir -d + return 0 + ;; + -@(classpath|bootclasspath|docletpath|sourcepath|extdirs)) + _java_path + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + # relevant options completion + COMPREPLY=( $( compgen -W '-overview -public -protected \ + -package -private -help -doclet -docletpath \ + -sourcepath -classpath -exclude -subpackages \ + -breakiterator -bootclasspath -source -extdirs \ + -verbose -locale -encoding -J -d -use -version \ + -author -docfilessubdirs -splitindex \ + -windowtitle -doctitle -header -footer -bottom \ + -link -linkoffline -excludedocfilessubdir \ + -group -nocomment -nodeprecated -noqualifier \ + -nosince -nodeprecatedlist -notree -noindex \ + -nohelp -nonavbar -quiet -serialwarn -tag \ + -taglet -tagletpath -charset -helpfile \ + -linksource -stylesheetfile -docencoding' -- \ + $cur ) ) + else + # source files completion + _filedir java + # packages completion + _java_packages + fi +} && +complete -F _javadoc $filenames javadoc + +# javac completion +# +have javac && +_javac() +{ + COMPREPLY=() + local cur prev + + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -d) + _filedir -d + return 0 + ;; + -@(classpath|bootclasspath|sourcepath|extdirs)) + _java_path + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + # relevant options completion + COMPREPLY=( $( compgen -W '-g -g:none -g:lines -g:vars\ + -g:source -O -nowarn -verbose -deprecation -classpath\ + -sourcepath -bootclasspath -extdirs -d -encoding -source\ + -target -help' -- $cur ) ) + else + # source files completion + _filedir java + fi +} && +complete -F _javac $filenames javac + +# PINE address-book completion +# +have pine && +_pineaddr() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + COMPREPLY=( $( compgen -W '$( awk "{print \$1}" ~/.addressbook 2>/dev/null)' \ + -- $cur ) ) +} && +complete -F _pineaddr $default pine + +# mutt completion +# +# Mutt doesn't have an "addressbook" like Pine, but it has aliases and +# a "query" function to retrieve addresses, so that's what we use here. +have mutt || have muttng && { +_muttaddr() +{ + _muttaliases + _muttquery + return 0 +} + +_muttconffiles() +{ + local file sofar + local -a newconffiles + + sofar=" $1 " + shift + while [[ "$1" ]]; do + newconffiles=( $(sed -rn 's|^source[[:space:]]+([^[:space:]]+).*$|\1|p' $(eval echo $1) ) ) + for file in "${newconffiles[@]}"; do + [[ ! "$file" ]] || [[ "${sofar/ ${file} / }" != "$sofar" ]] && + continue + sofar="$sofar $file" + sofar=" $(eval _muttconffiles \"$sofar\" $file) " + done + shift + done + echo $sofar +} + +_muttaliases() +{ + local cur muttrc + local -a conffiles aliases + cur=`_get_cword` + + [ -f ~/.${muttcmd}/${muttcmd}rc ] && muttrc="~/.${muttcmd}/${muttcmd}rc" + [ -f ~/.${muttcmd}rc ] && muttrc="~/.${muttcmd}rc" + [ -z "$muttrc" ] && return 0 + + conffiles=( $(eval _muttconffiles $muttrc $muttrc) ) + aliases=( $( sed -rn 's|^alias[[:space:]]+([^[:space:]]+).*$|\1|p' \ + $(eval echo "${conffiles[@]}") ) ) + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "${aliases[*]}" -- $cur ) ) + + return 0 +} + +_muttquery() +{ + local cur querycmd + local -a queryresults + cur=`_get_cword` + + querycmd="$( $muttcmd -Q query_command | sed -r 's|^query_command=\"(.*)\"$|\1|; s|%s|'$cur'|' )" + if [ -z "$cur" -o -z "$querycmd" ]; then + queryresults=() + else + queryresults=( $( $querycmd | \ + sed -nr '2,$s|^([^[:space:]]+).*|\1|p' ) ) + fi + + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "${queryresults[*]}" \ + -- $cur ) ) + + return 0 +} + +_muttfiledir() +{ + local cur folder spoolfile + cur=`_get_cword` + + # This is currently not working so well. Perhaps this function should + # just call _filedir() for the moment. + if [[ $cur == [=+]* ]]; then + folder="$( $muttcmd -Q folder | sed -r 's|^folder=\"(.*)\"$|\1|' )" + : folder:=~/Mail + + # Match any file in $folder beginning with $cur + # (minus the leading '=' sign). + COMPREPLY=( $( compgen -f -- "$folder/${cur:1}" ) ) + COMPREPLY=( ${COMPREPLY[@]#$folder/} ) + return 0 + elif [ "$cur" == !* ]; then + spoolfile="$( $muttcmd -Q spoolfile | sed -r 's|^spoolfile=\"(.*)\"$|\1|' )" + [ ! -z "$spoolfile" ] && eval cur="${cur/^!/$spoolfile}"; + fi + _filedir + + return 0 +} + +_mutt() +{ + local cur prev + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + COMPREPLY=() + + [ ${COMP_WORDS[0]} == muttng ] && muttcmd="muttng" || muttcmd="mutt" + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W '-A -a -b -c -e -f -F -H -i -m -n \ + -p -Q -R -s -v -x -y -z -Z -h' \ + -- $cur ) ) + return 0 + ;; + *) + case "$prev" in + -@(a|f|F|H|i)) + _muttfiledir + return 0 + ;; + -A) + _muttaliases + return 0 + ;; + -@(e|m|Q|s|h|p|R|v|y|z|Z)) + return 0 + ;; + *) + _muttaddr + return 0 + ;; + esac + ;; + esac + +} +complete -F _mutt $default $filenames mutt muttng +} + +_configure_func() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + # if $COMP_CONFIGURE_HINTS is not null, then completions of the form + # --option=SETTING will include 'SETTING' as a contextual hint + [[ "$cur" != -* ]] && return 0 + + if [ -n "$COMP_CONFIGURE_HINTS" ]; then + COMPREPLY=( $( $1 --help | awk '/^ --[A-Za-z]/ { print $1; if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,].*//g' | grep ^$cur ) ) + + else + COMPREPLY=( $( $1 --help | awk '/^ --[A-Za-z]/ { print $1; if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,=].*//g' | grep ^$cur ) ) + fi +} +complete -F _configure_func $default configure + +# Debian reportbug(1) completion +# +have reportbug && +_reportbug() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -f|--filename|-i|--include|--mta|-o|--output) + _filedir + return 0 + ;; + -B|--bts) + COMPREPLY=( $( compgen -W "debian guug kde mandrake help" -- \ + $cur )) + return 0 + ;; + -e|--editor|--mua) + COMP_WORDS=(COMP_WORDS[0] $cur) + COMP_CWORD=1 + _command + return 0 + ;; + --mode) + COMPREPLY=( $( compgen -W "novice standard expert" -- $cur ) ) + return 0 + ;; + -S|--severity) + COMPREPLY=( $( compgen -W "grave serious important normal \ + minor wishlist" -- $cur ) ) + return 0 + ;; + -u|--ui|--interface) + COMPREPLY=( $( compgen -W "newt text gnome" -- $cur ) ) + return 0 + ;; + -t|--type) + COMPREPLY=( $( compgen -W "gnats debbugs" -- $cur ) ) + return 0 + ;; + -T|--tags) + COMPREPLY=( $( compgen -W "none patch security upstream sid \ + woody potato sarge fixed" -- $cur )) + return 0 + ;; + *) + ;; + esac + + COMPREPLY=($( compgen -W '-h --help -v --version -a --af -b \ + --no-query-bts --query-bts -B --bts -c --configure \ + --no-config-files --check-available -d --debug \ + --no-check-available -e --editor --email -f \ + --filename -g --gnupg -H --header -i --include -j \ + --justification -l --ldap --no-ldap -L --list-cc -m \ + --maintonly --mode --mua --mta --mutt -n --mh --nmh \ + -o --output -p --print -P --pgp --proxy --http_proxy\ + -q --quiet -Q --query-only --realname --report-quiet \ + --reply-to --replyto -s --subject -S --severity \ + --smtphost -t --type -T --tags --template -V -x \ + --no-cc --package-version -z --no-compress \ + --ui --interface -u \ + wnpp boot-floppies kernel-image' -- $cur ) \ + $( apt-cache pkgnames -- $cur 2> /dev/null ) ) + _filedir + return 0 +} && +complete -F _reportbug $filenames reportbug + +# Debian querybts(1) completion +# +have querybts && +_querybts() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -B|--bts) + COMPREPLY=( $( compgen -W "debian guug kde mandrake help" -- \ + $cur )) + return 0 + ;; + -u|--ui|--interface) + COMPREPLY=($( compgen -W "newt text gnome" -- $cur )) + return 0 + ;; + *) + ;; + esac + + COMPREPLY=($( compgen -W '-h --help -v --version -A --archive \ + -B --bts -l --ldap --no-ldap --proxy= --http_proxy= \ + -s --source -w --web -u --ui --interface \ + wnpp boot-floppies' -- $cur ) \ + $( apt-cache pkgnames -- $cur 2> /dev/null ) ) +} && +complete -F _querybts $filenames querybts + +# update-alternatives completion +# +have update-alternatives && { +installed_alternatives() +{ + local admindir + # find the admin dir + for i in alternatives dpkg/alternatives rpm/alternatives; do + [ -d /var/lib/$i ] && admindir=/var/lib/$i && break + done + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == --admindir ]]; then + admindir=${COMP_WORDS[i+1]} + break + fi + done + COMPREPLY=( $( command ls $admindir | grep "^$cur" ) ) +} + +_update_alternatives() +{ + local cur prev mode args i + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + --@(altdir|admindir)) + _filedir -d + return 0 + ;; + --@(help|version)) + return 0 + ;; + esac + + # find wich mode to use and how many real args used so far + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == --@(install|remove|auto|display|config|remove-all) ]]; then + mode=${COMP_WORDS[i]} + args=$(($COMP_CWORD - i)) + break + fi + done + + case $mode in + --install) + case $args in + 1) + _filedir + ;; + 2) + installed_alternatives + ;; + 3) + _filedir + ;; + esac + ;; + --remove) + case $args in + 1) + installed_alternatives + ;; + 2) + _filedir + ;; + esac + ;; + --auto) + installed_alternatives + ;; + --remove-all) + installed_alternatives + ;; + --display) + installed_alternatives + ;; + --config) + installed_alternatives + ;; + *) + COMPREPLY=( $( compgen -W '--verbose --quiet --help --version \ + --altdir --admindir' -- $cur ) \ + $( compgen -W '--install --remove --auto --display \ + --config' -- $cur ) ) + esac +} +complete -F _update_alternatives update-alternatives +} + +# Python completion +# +have python && +_python() +{ + local prev cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]##*/} + + case "$prev" in + -Q) + COMPREPLY=( $( compgen -W "old new warn warnall" -- $cur ) ) + return 0 + ;; + -W) + COMPREPLY=( $( compgen -W "ignore default all module once error" -- $cur ) ) + return 0 + ;; + -c) + _filedir '@(py|pyc|pyo)' + return 0 + ;; + !(python|-?)) + [[ ${COMP_WORDS[COMP_CWORD-2]} != -@(Q|W) ]] && _filedir + ;; + esac + + + # if '-c' is already given, complete all kind of files. + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == -c ]]; then + _filedir + fi + done + + + if [[ "$cur" != -* ]]; then + _filedir '@(py|pyc|pyo)' + else + COMPREPLY=( $( compgen -W "- -d -E -h -i -O -Q -S -t -u \ + -U -v -V -W -x -c" -- $cur ) ) + fi + + + + return 0 +} && +complete -F _python $filenames python + +# Perl completion +# +have perl && +{ +_perlmodules() +{ + COMPREPLY=( $( compgen -P "$prefix" -W "$( perl -e 'sub mods { my ($base,$dir)=@_; return if $base !~ /^\Q$ENV{cur}/; chdir($dir) or return; for (glob(q[*.pm])) {s/\.pm$//; print qq[$base$_\n]}; mods(/^(?:[.\d]+|$Config{archname}-$Config{osname}|auto)$/ ? undef : qq[${base}${_}\\\\:\\\\:],qq[$dir/$_]) for grep {-d} glob(q[*]); } mods(undef,$_) for @INC;' )" -- $cur ) ) +} + +_perl() +{ + local cur prev prefix temp + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + prefix="" + + # completing an option (may or may not be separated by a space) + if [[ "$cur" == -?* ]]; then + temp=$cur + prev=${temp:0:2} + cur=${temp:2} + prefix=$prev + fi + + # only handle module completion for now + case "$prev" in + -I|-x) + COMPREPLY=( $( compgen -d -P "$prev" -- "$cur" ) ) + return 0 + ;; + -m|-M) + _perlmodules + return 0 + ;; + esac + + # handle case where first parameter is not a dash option + if [[ "${COMP_WORDS[COMP_CWORD]}" != -* ]]; then + _filedir + return 0 + fi + + # complete using basic options + COMPREPLY=( $( compgen -W '-C -s -T -u -U -W -X -h -v -V -c -w -d -D -p \ + -n -a -F -l -0 -I -m -M -P -S -x -i -e ' -- $cur ) ) + return 0 +} +complete -F _perl $filenames perl + +_perldoc() +{ + local cur prev prefix temp + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + prefix="" + + # completing an option (may or may not be separated by a space) + if [[ "$cur" == -?* ]]; then + temp=$cur + prev=${temp:0:2} + cur=${temp:2} + prefix=$prev + fi + + # complete builtin perl functions + case $prev in + -f) + COMPREPLY=( $( compgen -W 'chomp chop chr crypt hex index lc \ + lcfirst length oct ord pack q qq reverse rindex sprintf \ + substr tr uc ucfirst y m pos quotemeta s split study qr abs \ + atan2 cos exp hex int log oct rand sin sqrt srand pop push \ + shift splice unshift grep join map qw reverse sort unpack \ + delete each exists keys values binmode close closedir \ + dbmclose dbmopen die eof fileno flock format getc print \ + printf read readdir rewinddir seek seekdir select syscall \ + sysread sysseek syswrite tell telldir truncate warn write \ + pack read syscall sysread syswrite unpack vec -X chdir chmod \ + chown chroot fcntl glob ioctl link lstat mkdir open opendir \ + readlink rename rmdir stat symlink umask unlink utime caller \ + continue do dump eval exit goto last next redo return \ + sub wantarray caller import local my our package use defined \ + formline reset scalar undef \ + alarm exec fork getpgrp getppid getpriority kill pipe qx \ + setpgrp setpriority sleep system times wait waitpid \ + import no package require use bless dbmclose dbmopen package \ + ref tie tied untie use accept bind connect getpeername \ + getsockname getsockopt listen recv send setsockopt shutdown \ + socket socketpair msgctl msgget msgrcv msgsnd semctl semget \ + semop shmctl shmget shmread shmwrite endgrent endhostent \ + endnetent endpwent getgrent getgrgid getgrnam getlogin \ + getpwent getpwnam getpwuid setgrent setpwent endprotoent \ + endservent gethostbyaddr gethostbyname gethostent \ + getnetbyaddr getnetbyname getnetent getprotobyname \ + getprotobynumber getprotoent getservbyname getservbyport \ + getservent sethostent setnetent setprotoent setservent \ + gmtime localtime time times' -- $cur ) ) + return 0 + ;; + esac + + case $cur in + -*) + COMPREPLY=( $( compgen -W '-h -v -t -u -m -l -F -X -f -q' -- $cur )) + return 0 + ;; + */*) + return 0 + ;; + *) + _perlmodules + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W '$( PAGER=cat man perl 2>/dev/null | sed -ne "/perl.*Perl overview/,/perlwin32/s/^[^a-z0-9]*\([a-z0-9]*\).*$/\1/p")' -- $cur ) ) + + return 0 + ;; + esac +} +complete -F _perldoc $default perldoc +} + +# rcs(1) completion +# +have rcs && +_rcs() +{ + local cur prev file dir i + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + file=${cur##*/} + dir=${cur%/*} + + # deal with relative directory + [ "$file" = "$dir" ] && dir=. + + COMPREPLY=( $( compgen -f "$dir/RCS/$file" ) ) + + for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do + file=${COMPREPLY[$i]##*/} + dir=${COMPREPLY[$i]%RCS/*} + COMPREPLY[$i]=$dir$file + done + + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -G "$dir/$file*,v" ) ) + + for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do + COMPREPLY[$i]=${COMPREPLY[$i]%,v} + done + + # default to files if nothing returned and we're checking in. + # otherwise, default to directories + [ ${#COMPREPLY[@]} -eq 0 -a $1 = ci ] && _filedir || _filedir -d +} && +complete -F _rcs $filenames ci co rlog rcs rcsdiff + +# lilo(8) completion +# +have lilo && { +_lilo_labels() +{ + COMPREPLY=( $( awk -F'=' '/label/ {print $2}' \ + /etc/lilo.conf | sed -e 's/"//g' | grep "^$cur" ) ) +} + +_lilo() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -@(C|i|m|s|S)) + _filedir + return 0 + ;; + -r) + _filedir -d + return 0 + ;; + -@(I|D|R)) + # label completion + _lilo_labels + return 0 + ;; + -@(A|b|M|u|U)) + # device completion + cur=${cur:=/dev/} + _filedir + return 0 + ;; + -T) + # topic completion + COMPREPLY=( $( compgen -W 'help ChRul EBDA geom geom= \ + table= video' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + # relevant options completion + COMPREPLY=( $( compgen -W '-A -b -c -C -d -f -g -i -I -l -L -m \ + -M -p -P -q -r -R -s -S -t -T -u -U -v -V -w -x -z' -- \ + $cur ) ) + fi +} +complete -F _lilo lilo +} + +# links completion +# +have links && +_links() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + case "$cur" in + --*) + COMPREPLY=( $( compgen -W '--help' -- $cur ) ) + ;; + -*) + COMPREPLY=( $( compgen -W '-async-dns -max-connections \ + -max-connections-to-host -retries \ + -receive-timeout -unrestartable-receive-timeout\ + -format-cache-size -memory-cache-size \ + -http-proxy -ftp-proxy -download-dir \ + -assume-codepage -anonymous -dump -no-connect \ + -source -version -help' -- $cur ) ) + ;; + *) + if [ -r ~/.links/links.his ]; then + COMPREPLY=( $( compgen -W '$( < ~/.links/links.his )' \ + -- $cur ) ) + fi + _filedir '@(htm|html)' + return 0 + ;; + esac + + return 0 +} && +complete -F _links $filenames links + +[ $UNAME = FreeBSD ] && { +# FreeBSD package management tool completion +# +_pkg_delete() +{ + local cur pkgdir prev + + pkgdir=${PKG_DBDIR:-/var/db/pkg}/ + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + [ "$prev" = "-o" -o "$prev" = "-p" -o "$prev" = "-W" ] && return 0 + + COMPREPLY=( $( compgen -d $pkgdir$cur ) ) + COMPREPLY=( ${COMPREPLY[@]#$pkgdir} ) + + return 0 +} +complete -F _pkg_delete $dirnames pkg_delete pkg_info +have pkg_deinstall && complete -F _pkg_delete $dirnames pkg_deinstall + +# FreeBSD kernel module commands +# +_kldload() +{ + local cur moddir + + moddir=/modules/ + [ -d $moddir ] || moddir=/boot/kernel/ + cur=`_get_cword` + + COMPREPLY=( $( compgen -f $moddir$cur ) ) + COMPREPLY=( ${COMPREPLY[@]#$moddir} ) + COMPREPLY=( ${COMPREPLY[@]%.ko} ) + + return 0 +} +complete -F _kldload $filenames kldload + +_kldunload() +{ + local cur + cur=`_get_cword` + COMPREPLY=( $(kldstat | sed -ne "s/^.*[ \t]\+\($cur[a-z_]\+\).ko$/\1/p") ) +} +complete -F _kldunload $filenames kldunload +} + +# FreeBSD portupgrade completion +# +have portupgrade && +_portupgrade() +{ + local cur pkgdir prev + + pkgdir=${PKG_DBDIR:-/var/db/pkg}/ + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + [ "$prev" = "-l" -o "$prev" = "-L" -o "$prev" = "-o" ] && return 0 + + COMPREPLY=( $( compgen -d $pkgdir$cur ) ) + COMPREPLY=( ${COMPREPLY[@]#$pkgdir} ) + COMPREPLY=( ${COMPREPLY[@]%-*} ) + + return 0 +} && +complete -F _portupgrade $dirnames portupgrade + +# FreeBSD portinstall completion +# +have portinstall && +_portinstall() +{ + local cur portsdir prev indexfile + local -a COMPREPLY2 + + portsdir=${PORTSDIR:-/usr/ports}/ + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + # First try INDEX-5 + indexfile=$portsdir/INDEX-5 + # Then INDEX if INDEX-5 does not exist or system is not FreeBSD 5.x + [ "${OSTYPE%.*}" = "freebsd5" -a -f $indexfile ] || + indexfile=$portsdir/INDEX + + [ "$prev" = "-l" -o "$prev" = "-L" -o "$prev" = "-o" ] && return 0 + + COMPREPLY=( $( egrep "^$cur" < $indexfile | cut -d'|' -f1 ) ) + COMPREPLY2=( $( egrep "^[^\|]+\|$portsdir$cur" < $indexfile | \ + cut -d'|' -f2 ) ) + COMPREPLY2=( ${COMPREPLY2[@]#$portsdir} ) + COMPREPLY=( "${COMPREPLY[@]}" "${COMPREPLY2[@]}" ) + + return 0 +} && +complete -F _portinstall $dirnames portinstall + +# Slackware Linux removepkg completion +# +have removepkg && [ -f /etc/slackware-version ] && +_removepkg() +{ + local packages cur + + COMPREPLY=() + cur=`_get_cword` + + COMPREPLY=( $( (cd /var/log/packages; compgen -f -- "$cur") ) ) +} && +complete -F _removepkg $filenames removepkg && + complete $dirnames -f -X '!*.tgz' installpkg upgradepkg explodepkg + +# look(1) completion +# +have look && +_look() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [ $COMP_CWORD = 1 ]; then + COMPREPLY=( $( compgen -W '$(look $cur)' ) ) + fi +} && +complete -F _look $default look + +# ypcat(1) and ypmatch(1) completion +# +have ypmatch && +_ypmatch() +{ + local cur map + + COMPREPLY=() + cur=`_get_cword` + + [ $1 = ypcat ] && [ $COMP_CWORD -gt 1 ] && return 0 + [ $1 = ypmatch ] && [ $COMP_CWORD -gt 2 ] && return 0 + + if [ $1 = ypmatch ] && [ $COMP_CWORD -eq 1 ] && \ + [ ${#COMP_WORDS[@]} -eq 3 ]; then + map=${COMP_WORDS[2]} + COMPREPLY=( $( compgen -W '$( ypcat $map | \ + cut -d':' -f 1 )' -- $cur) ) + else + [ $1 = ypmatch ] && [ $COMP_CWORD -ne 2 ] && return 0 + COMPREPLY=( $( compgen -W \ + '$( echo $(ypcat -x | cut -d"\"" -f 2))' -- $cur)) + fi + + return 0 +} && +complete -F _ypmatch ypmatch ypcat + +# mplayer(1) completion +# +have mplayer && { +_mplayer_options_list() +{ + cur=${cur%\\} + COMPREPLY=( $( $1 $2 help 2> /dev/null | \ + sed -e '1,/^Available/d' | awk '{print $1}' | \ + sed -e 's/:$//' -e 's/^'${2#-}'$//' -e 's/<.*//' | \ + grep "^$cur" ) ) +} + +_mplayer() +{ + local cmd cur prev skinsdir IFS=$' \t\n' i j k=0 + + COMPREPLY=() + cmd=${COMP_WORDS[0]} + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(ac|afm|vc|vfm|ao|vo|vop|fstype)) + _mplayer_options_list mplayer $prev + return 0 + ;; + -@(oac|ovc|of)) + _mplayer_options_list mencoder $prev + return 0 + ;; + -audiofile) + _filedir '@(mp3|MP3|mpg|MPG|ogg|OGG|wav|WAV|mid|MID|flac|FLAC|mka|MKA)' + return 0 + ;; + -font) + _filedir '@(desc|ttf)' + return 0 + ;; + -sub) + _filedir '@(srt|SRT|sub|SUB|txt|TXT|utf|UTF|rar|RAR|mpsub|smi|js|ssa|SSA|aas|AAS)' + return 0 + ;; + -vobsub) + _filedir '@(idx|IDX|ifo|IFO|sub|SUB)' + IFS=$'\t\n' + COMPREPLY=( $( for i in "${COMPREPLY[@]}"; do + if [ -f $i -a -r $i ]; then + echo ${i%.*} + else + echo $i + fi + done ) ) + IFS=$' \t\n' + return 0 + ;; + -ifo) + _filedir '@(ifo|IFO)' + return 0 + ;; + -cuefile) + _filedir '@(bin|BIN|cue|CUE)' + return 0 + ;; + -skin) + # if you don't have installed mplayer in /usr/local you + # may want to set the MPLAYER_SKINS_DIR global variable + if [ -n "$MPLAYER_SKINS_DIR" ]; then + skinsdir=$MPLAYER_SKINS_DIR + else + skinsdir=/usr/local/share/mplayer/Skin + fi + + IFS=$'\t\n' + for i in ~/.mplayer/Skin $skinsdir; do + if [ -d $i -a -r $i ]; then + for j in $( compgen -d $i/$cur ); do + COMPREPLY[$k]=${j#$i/} + k=$((++k)) + done + fi + done + IFS=$' \t\n' + return 0 + ;; + -@(mixer|@(cdrom|dvd)-device|dvdauth|fb|zrdev)) + cur=${cur:=/dev/} + _filedir + return 0 + ;; + -@(edl?(out)|lircconf|menu-cfg|playlist|csslib|dumpfile)| \ + -@(subfile|vobsub|aofile|fbmodeconfig|include|o|dvdkey)| \ + -passlogfile) + _filedir + return 0 + ;; + -@(auto@(q|sync)|loop|menu-root|speed|sstep|aid|alang)| \ + -@(?(@(audio|sub)-)demuxer|bandwidth|cache|chapter)| \ + -@(dvd?(angle)|fps|frames|mc|passwd|user|sb|srate|ss|vcd)| \ + -@(vi?(d|vo)|ffactor|sid|slang|spu@(align|aa|gauss))| \ + -@(vobsubid|delay|bpp|brightness|contrast|dfbopts|display)| \ + -@(fbmode|geometry|guiwid|hue|icelayer|screen[wh]|wid)| \ + -@(monitor@(aspect|-@(dotclock|[hv]freq))|panscan|saturation)| \ + -@(xineramascreen|zr@(crop|norm|quality|[xy]doff|[vh]dec))| \ + -@(aspect|pp|x|y|xy|z|stereo|audio-@(density|delay|preload))| \ + -@(endpos|osdlevel|ffourcc|sws|channels|skiplimit|format)| \ + -@(ofps|aa@(driver|@(osd|sub)color)|vobsubout?(i@(ndex|d)))| \ + -sub@(-bg-@(alpha|color)|cp|delay|fps|pos|align|width)| \ + -sub@(font-@(blur|outline|autoscale|encoding|@(osd|text)-scale))) + return 0 + ;; + -lavdopts) + COMPREPLY=( $( compgen -W 'ec er= bug= idct= gray' \ + -- $cur ) ) + return 0 + ;; + -lavcopts) + COMPREPLY=( $( compgen -W 'vcodec= vqmin= vqscale= \ + vqmax= mbqmin= mbqmax= vqdiff= \ + vmax_b_frames= vme= vhq v4mv \ + keyint= vb_strategy= vpass= \ + aspect= vbitrate= vratetol= \ + vrc_maxrate= vrc_minrate= \ + vrc_buf_size= vb_qfactor= vi_qfactor= \ + vb_qoffset= vi_qoffset= vqblur= \ + vqcomp= vrc_eq= vrc_override= \ + vrc_init_cplx= vqsquish= vlelim= \ + vcelim= vstrict= vdpart vpsize= gray \ + vfdct= idct= lumi_mask= dark_mask= \ + tcplx_mask= scplx_mask= naq ildct \ + format= pred qpel precmp= cmp= \ + subcmp= predia= dia= trell last_pred= \ + preme= subq= psnr mpeg_quant aic umv' \ + -- $cur ) ) + return 0 + ;; + -ssf) + COMPREPLY=( $( compgen -W 'lgb= cgb= ls= cs= chs= \ + cvs=' -- $cur ) ) + return 0 + ;; + -jpeg) + COMPREPLY=( $( compgen -W 'noprogressive progressive \ + nobaseline baseline optimize= \ + smooth= quality= outdir=' -- $cur ) ) + return 0 + ;; + -xvidopts) + COMPREPLY=( $( compgen -W 'dr2 nodr2' -- $cur ) ) + return 0 + ;; + -xvidencopts) + COMPREPLY=( $( compgen -W 'pass= bitrate= \ + fixed_quant= me_quality= 4mv \ + rc_reaction_delay_factor= \ + rc_averaging_period= rc_buffer= \ + quant_range= min_key_interval= \ + max_key_interval= mpeg_quant \ + mod_quant lumi_mask hintedme \ + hintfile debug keyframe_boost= \ + kfthreshold= kfreduction=' -- $cur ) ) + return 0 + ;; + -divx4opts) + COMPREPLY=( $( compgen -W 'br= key= deinterlace q= \ + min_quant= max_quant= rc_period= \ + rc_reaction_period= crispness= \ + rc_reaction_ratio= pass= vbrpass= \ + help' -- $cur ) ) + return 0 + ;; + -info) + COMPREPLY=( $( compgen -W 'name= artist= genre= \ + subject= copyright= srcform= \ + comment= help' -- $cur ) ) + return 0 + ;; + -lameopts) + COMPREPLY=( $( compgen -W 'vbr= abr cbr br= q= aq= \ + ratio= vol= mode= padding= fast \ + preset= help' -- $cur ) ) + return 0 + ;; + -rawaudio) + COMPREPLY=( $( compgen -W 'on channels= rate= \ + samplesize= format=' -- $cur ) ) + return 0 + ;; + -rawvideo) + COMPREPLY=( $( compgen -W 'on fps= sqcif qcif cif \ + 4cif pal ntsc w= h= y420 yv12 yuy2 \ + y8 format= size=' -- $cur ) ) + return 0 + ;; + -aop) + COMPREPLY=( $( compgen -W 'list= delay= format= fout= \ + volume= mul= softclip' -- $cur ) ) + return 0 + ;; + -dxr2) + COMPREPLY=( $( compgen -W 'ar-mode= iec958-encoded \ + iec958-decoded mute ucode= 75ire bw \ + color interlaced macrovision= norm= \ + square-pixel ccir601-pixel cr-left= \ + cr-right= cr-top= cr-bot= ck-rmin= \ + ck-gmin= ck-bmin= ck-rmax= ck-gmax= \ + ck-bmax= ck-r= ck-g= ck-b= \ + ignore-cache= ol-osd= olh-cor= \ + olw-cor= olx-cor= oly-cor= overlay \ + overlay-ratio= update-cache' -- $cur )) + return 0 + ;; + -tv) + COMPREPLY=( $( compgen -W 'on noaudio driver= device= \ + input= freq= outfmt= width= height= \ + buffersize= norm= channel= chanlist= \ + audiorate= forceaudio alsa amode= \ + forcechan= adevice= audioid= volume= \ + bass= treble= balance= fps= \ + channels= immediatemode=' -- $cur ) ) + return 0 + ;; + -mf) + COMPREPLY=( $( compgen -W 'on w= h= fps= type=' \ + -- $cur ) ) + return 0 + ;; + -cdda) + COMPREPLY=( $( compgen -W 'speed= paranoia= \ + generic-dev= sector-size= overlap= \ + toc-bias toc-offset= skip noskip' \ + -- $cur ) ) + return 0 + ;; + -input) + COMPREPLY=( $( compgen -W 'conf= ar-delay ar-rate \ + keylist cmdlist js-dev file' -- $cur ) ) + return 0 + ;; + -af) + COMPREPLY=( $( compgen -W 'resample resample= \ + channels channels= format format= \ + volume volume= delay delay= pan \ + pan= sub sub= surround surround=' \ + -- $cur ) ) + return 0 + ;; + -af-adv) + COMPREPLY=( $( compgen -W 'force= list=' -- $cur ) ) + return 0 + ;; + esac + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W '-aid -alang -audio-demuxer \ + -audiofile -cdrom-device -cache -cdda \ + -channels -chapter -csslib -demuxer \ + -dvd -dvd-device -dvdangle -dvdauth \ + -dvdkey -dvdnav -forceidx -fps -frames \ + -hr-mp3-seek -idx -mc -mf -ni -nobps \ + -passwd -rawaudio -rtsp-stream-over-tcp\ + -skipopening -sb -srate -ss -tv -user \ + -vcd -vid -vivo -ifo -ffactor -font \ + -noautosub -nooverlapsub -sid -slang \ + -sub -subcc -subcp -sub-demuxer \ + -subdelay -subfont-autoscale \ + -subfont-blur -subfont-encoding \ + -subfont-osd-scale -subfont-outline \ + -subfont-text-scale -subfps -subfile \ + -subpos -unicode -utf8 -vobsub \ + -vobsubid -ac -afm -aspect -flip \ + -lavdopts -noaspect -nosound -pp -ssf \ + -stereo -sws -vc -vfm -vop -xvidopts\ + -xy -zoom -bandwidth -cuefile \ + -noextbased -rawvideo -overlapsub \ + -sub-bg-alpha -sub-bg-color -subalign \ + -subwidth -sub-no-text-pp -spualign \ + -spuaa -spugauss -pphelp -verbose -v \ + -noni -noidx -nohr-mp3-seek -extbased \ + -bps -oldpp -nozoom -noflip -nounicode \ + -noutf8' -- $cur ) ) + # add mplayer specific options + [[ "$cmd" == @(?(g)mplayer) ]] && COMPREPLY=( "${COMPREPLY[@]}" \ + $(compgen -W '-autoq -autosync -benchmark \ + -framedrop -h -help -hardframedrop \ + -identify -input -lircconf -loop \ + -nojoystick -nolirc -nortc -playlist \ + -quiet -really-quiet -rnd -sdp -skin \ + -slave -softsleep -speed -sstep \ + -use-stdin -dumpaudio -dumpfile \ + -dumpstream -dumpvideo -dumpmicrodvdsub\ + -dumpmpsub -dumpsrtsub -dumpjacosub \ + -dumpsami -dumpsub -osdlevel -af \ + -af-adv -ao -aofile -aop -delay -mixer \ + -nowaveheader -bpp -brightness \ + -contrast -display -double -dr -dxr2 \ + -fb -fbmode -fbmodeconfig -forcexv -fs \ + -geometry -hue -icelayer -jpeg \ + -monitor-dotclock -monitor-hfreq \ + -monitor-vfreq -monitoraspect \ + -nograbpointer -noslices -panscan \ + -rootwin -saturation -screenw -screenh \ + -stop-xscreensaver -vm -vo -vsync -wid \ + -xineramascreen -z -zrbw -zrcrop \ + -zrdev -zrfd -zrhelp -zrnorm -zrquality \ + -zrvdec -zrhdec -zrxdoff -zrydoff -y \ + -edl -edlout -enqueue -fixed-vo \ + -menu -menu-root -menu-cfg -shuffle \ + -format -aahelp -dfbopts -fstype \ + -guiwid -nokeepaspect -x --help \ + -aaosdcolor -aasubcolor -aadriver \ + -aaextended -aaeight' -- $cur) ) + # add mencoder specific options + [[ "$cmd" = mencoder ]] && COMPREPLY=( "${COMPREPLY[@]}" \ + $(compgen -W '-audio-density -audio-delay \ + -audio-preload -divx4opts -endpos \ + -ffourcc -include -info -lameopts \ + -lavcopts -noskip -o -oac -ofps -ovc \ + -passlogfile -skiplimit -vobsubout \ + -vobsuboutindex -vobsuboutid \ + -xvidencopts -of --verbose' -- $cur) ) + ;; + *) + _filedir '@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|ASF|vob|VOB|bin|BIN|dat|DAT|vcd|VCD|ps|PS|pes|PES|fli|FLI|flv|FLV|viv|VIV|rm?(j)|RM?(J)|ra?(m)|RA?(M)|yuv|YUV|mov|MOV|qt|QT|mp[34]|MP[34]|m4v|M4V|og[gm]|OG[GM]|wav|WAV|dump|DUMP|mk[av]|MK[AV]|m4a|M4A|aac|AAC|m2v|M2V|dv|DV|rmvb|RMVB|mid|MID|ts|TS|3gp|mpc|MPC|flac|FLAC|flv|FLV|divx|DIVX)' + ;; + esac + + return 0 +} +complete $filenames -F _mplayer mplayer mencoder gmplayer kplayer +} + +# KDE dcop completion +# +have dcop && +_dcop() +{ + local cur compstr + + COMPREPLY=() + cur=`_get_cword` + if [ -z $cur ]; then + compstr=${COMP_WORDS[*]} + else + compstr=$( command echo ${COMP_WORDS[*]} | sed "s/ $cur$//" ) + fi + COMPREPLY=( $( compgen -W '$( command $compstr | sed s/\(.*\)// )' -- $cur ) ) +} && +complete -F _dcop dcop + +# wvdial(1) completion +# +have wvdial && +_wvdial() +{ + local cur prev config i IFS=$'\t\n' + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + --config) + _filedir + return 0 + ;; + esac + + case $cur in + -*) + COMPREPLY=( $( compgen -W '--config --chat \ + --remotename --help --version --no-syslog' \ + -- $cur ) ) + ;; + *) + # start with global and personal config files + config="/etc/wvdial.conf"$'\t'"$HOME/.wvdialrc" + # replace with command line config file if present + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == "--config" ]]; then + config=${COMP_WORDS[i+1]} + break + fi + done + # parse config files for sections and + # remove default section + COMPREPLY=( $( sed -ne \ + "s|^\[Dialer \($cur.*\)\]$|\1|p" \ + $config 2>/dev/null |grep -v '^Defaults$')) + # escape spaces + COMPREPLY=${COMPREPLY// /\\ } + ;; + esac + +} && +complete -F _wvdial wvdial + +# gpg(1) completion +# +have gpg && +_gpg() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(s|-sign|-clearsign|-decrypt-files|-load-extension)) + _filedir + return 0 + ;; + --@(export|@(?(l|nr|nrl)sign|edit)-key)) + # return list of public keys + COMPREPLY=( $( compgen -W "$( gpg --list-keys 2>/dev/null | sed -ne 's@^pub.*/\([^ ]*\).*\(<\([^>]*\)>\).*$@\1 \3@p')" -- "$cur" )) + return 0 + ;; + -@(r|-recipient)) + COMPREPLY=( $( compgen -W "$( gpg --list-keys 2>/dev/null | sed -ne 's@^pub.*<\([^>]*\)>.*$@\1@p')" -- "$cur" )) + if [ -e ~/.gnupg/gpg.conf ]; then + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$( sed -ne 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1@p' ~/.gnupg/gpg.conf )" -- "$cur") ) + fi + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-s -b -e -f -c -d -a -r -u -Z -o -v\ + -q -n -N $(gpg --dump-options)' -- $cur ) ) + fi + +} && +complete -F _gpg $default gpg + +# iconv(1) completion +# +have iconv && +_iconv() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(f|t|-@(from|to)-code)) + COMPREPLY=( $( compgen -W \ + '$( iconv --list | sed -e "s@//@@;" )' -- "$cur" ) ) + return 0 + ;; + esac + + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $( compgen -W '--from-code -f --to-code -t --list + --output -o --verbose' -- "$cur" ) ) + return 0 + fi +} && +complete -F _iconv $default iconv + +# dict(1) completion +# +{ have dict || have rdict; } && { +_dictdata() +{ + dict $host $port $1 2>/dev/null | sed -ne \ + 's/^['$'\t '']['$'\t '']*\([^'$'\t '']*\).*$/\1/p' +} + +_dict() +{ + local cur prev host port db dictfile + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + dictfile=/usr/share/dict/words + + for (( i=1; i < COMP_CWORD; i++ )); do + case "${COMP_WORDS[i]}" in + -@(h|--host)) + host=${COMP_WORDS[i+1]} + [ -n "$host" ] && host="-h $host" + i=$((++i)) + ;; + -@(p|-port)) + port=${COMP_WORDS[i+1]} + [ -n "$port" ] && port="-p $port" + i=$((++i)) + ;; + -@(d|-database)) + db=${COMP_WORDS[i+1]} + [ -n "$db" ] && host="-d $db" + i=$((++i)) + ;; + *) + ;; + esac + done + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $( compgen -W '-h --host -p --port -d --database \ + -m --match -s --strategy -c --config -C \ + --nocorrect -D --dbs -S --strats -H \ + --serverhelp -i --info -I --serverinfo \ + -a --noauth -u --user -k --key -V --version \ + -L --license --help -v --verbose -r --raw \ + -P --pager --debug --html --pipesize --client' \ + -- "$cur" ) ) + return 0 + fi + + case "$prev" in + -@(d|-database|i|info)) + COMPREPLY=( $( compgen -W '$( _dictdata -D )' -- "$cur" ) ) + return 0 + ;; + -@(s|-strategy)) + COMPREPLY=( $( compgen -W '$( _dictdata -S )' -- "$cur" ) ) + return 0 + ;; + *) + ;; + esac + + [ -r $dictfile ] && \ + COMPREPLY=( $( compgen -W '$( cat $dictfile )' -- "$cur" ) ) +} +complete -F _dict $default dict rdict +} + +# cdrecord(1) completion +# +have cdrecord && +_cdrecord() +{ + local cur prev i generic_options track_options track_mode + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # foo=bar style option + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case "$prev" in + @(text|cue)file) + _filedir + return 0 + ;; + blank) + COMPREPLY=( $( compgen -W 'help all fast \ + track unreserve trtail unclose session' \ + -- $cur ) ) + return 0 + ;; + driveropts) + COMPREPLY=( $( compgen -W 'burnfree noburnfree\ + varirec= audiomaster forcespeed noforcespeed\ + speedread nospeedread singlesession \ + nosinglesession hidecdr nohidecdr tattooinfo\ + tattoofile=' -- $cur ) ) + return 0 + ;; + esac + fi + + generic_options=(-version -v -V -d -silent -s -force -immed -dummy \ + -dao -raw -raw96r -raw96p -raw16 -multi -msinfo -toc \ + -atip -fix -nofix -waiti -load -lock -eject -format \ + -setdropts -checkdrive -prcap -inq -scanbus -reset \ + -abort -overburn -ignsize -useinfo -packet -noclose \ + -text debug= kdebug= kd= minbuf= speed= blank= fs= \ + dev= gracetime= timeout= driver= driveropts= \ + defpregap= pktsize= mcn= textfile= cuefile=) + track_options=(-audio -swab -data -mode2 -xa -xa1 -xa2 -xamix -cdi \ + -isosize -pad padsize= -nopad -shorttrack -noshorttrack\ + pregap= -preemp -nopreemp -copy -nocopy -scms tcsize= \ + isrc= index=) + # look if previous was either a file or a track option + track_mode=0 + if [ $COMP_CWORD -gt 1 ]; then + if [ -f "$prev" ]; then + track_mode=1 + else + for (( i=0; i < ${#track_options[@]}; i++ )); do + if [[ "${track_options[i]}" == "$prev" ]]; then + track_mode=1 + break + fi + done + fi + fi + + # files are always eligible completion + _filedir + # track options are always available + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W '${track_options[@]}' -- $cur ) ) + # general options are no more available after file or track option + if [ $track_mode -eq 0 ]; then + COMPREPLY=( "${COMPREPLY[@]}" \ + $( compgen -W '${generic_options[@]}' -- $cur ) ) + fi + +} && +complete -F _cdrecord $filenames cdrecord + +# mkisofs(8) completion +# +have mkisofs && +_mkisofs() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(o|abstract|biblio|check-session|copyright|log-file|root-info|prep-boot|*-list)) + _filedir + return 0 + ;; + -*-charset) + COMPREPLY=( $( mkisofs -input-charset help 2>&1 | \ + tail +3 | grep "^$cur") ) + return 0 + ;; + -uid) + _uids + return 0 + ;; + -gid) + _gids + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-abstract -A -allow-lowercase \ + -allow-multidot -biblio -cache-inodes \ + -no-cache-inodes -b -eltorito-alt-boot -B -G \ + -hard-disk-boot -no-emul-boot -no-boot \ + -boot-load-seg -boot-load-size \ + -boot-info-table -C -c -check-oldname \ + -check-session -copyright -d -D -dir-mode \ + -dvd-video -f -file-mode -gid -gui \ + -graft-points -hide -hide-list -hidden \ + -hidden-list -hide-joliet -hide-joliet-list \ + -hide-joliet-trans-tbl -hide-rr-moved \ + -input-charset -output-charset -iso-level -J \ + -joliet-long -jcharset -l -L -log-file -m \ + -exclude-list -max-iso9660-filenames -M -N \ + -new-dir-mode -nobak -no-bak -force-rr -no-rr \ + -no-split-symlink-components \ + -no-split-symlink-fields -o -pad -no-pad \ + -path-list -P -p -print-size -quiet -R -r \ + -relaxed-filenames -sort -split-output \ + -stream-media-size -stream-file-name -sysid -T\ + -table-name -ucs-level -udf -uid \ + -use-fileversion -U -no-iso-translate -V \ + -volset -volset-size -volset-seqno -v -x -z \ + -hfs -apple -map -magic -hfs-creator \ + -hfs-type -probe -no-desktop -mac-name \ + -boot-hfs-file -part -auto -cluster-size \ + -hide-hfs -hide-hfs-list -hfs-volid \ + -icon-position -root-info -prep-boot \ + -input-hfs-charset -output-hfs-charset \ + -hfs-unlock -hfs-bless -hfs-parms --cap \ + --netatalk --double --ethershare --ushare \ + --exchange --sgi --xinet --macbin --single \ + --dave --sfm --osx-double --osx-hfs' -- $cur )) + else + _filedir + fi + +} && +complete -F _mkisofs $filenames mkisofs + +# mc(1) completion +# +have mc && +_mc() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # -name value style option + case "$prev" in + -@(e|v|l|P)) + _filedir + return 0 + ;; + esac + + # --name=value style option + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case "$prev" in + --@(edit|view|ftplog|printwd)) + _filedir + return 0 + ;; + esac + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --stickchars -b --nocolor -c \ + --color -C --colors= -d --nomouse -e --edit= -f \ + --datadir -k --resetsoft -l --ftplog= -P --printwd= \ + -s --slow -t --termcap -u --nosubshell -U --subshell \ + -v --view= -V --version -x --xterm -h --help' -- $cur ) ) + else + _filedir -d + fi +} && +complete -F _mc $filenames mc + +# yum(8) completion +# +have yum && { +_yum() +{ + local cur prev special + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(install|update|upgrade|remove|erase|deplist) ]]; then + special=${COMP_WORDS[i]} + fi + done + + if [ -n "$special" ]; then + case $special in + install|deplist) + COMPREPLY=( $( compgen -W '$( yum -C list | cut -d" " -f1 )' -- $cur ) ) + return 0 + ;; + *) + _rpm_installed_packages + return 0 + ;; + esac + fi + + case $cur in + --*) + COMPREPLY=( $( compgen -W '--installroot --version --help --enablerepo --disablerepo --exclude --obsoletes --noplugins' -- $cur ) ) + return 0 + ;; + -*) + COMPREPLY=( $( compgen -W '-c -e -d -y -t -R -C -h' -- $cur ) ) + return 0 + ;; + esac + + case $prev in + list) + COMPREPLY=( $( compgen -W 'all available updates installed extras obsoletes recent' -- $cur ) ) + ;; + clean) + COMPREPLY=( $( compgen -W 'packages headers metadata cache dbcache all' -- $cur ) ) + ;; + localinstall) + _filedir rpm + ;; + -c) + _filedir + ;; + --installroot) + _filedir -d + ;; + *) + COMPREPLY=( $( compgen -W 'install update check-update upgrade remove list \ + search info provides clean groupinstall groupupdate \ + grouplist deplist erase groupinfo groupremove \ + localinstall localupdate makecache resolvedep \ + shell whatprovides' -- $cur ) ) + ;; + esac +} +complete -F _yum $filenames yum + +# yum-arch(8) completion +# +_yum_arch() +{ + local cur + COMPREPLY=() + cur=`_get_cword` + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W '-d -v -vv -n -c -z -s -l -q' -- $cur ) ) + ;; + *) + _filedir -d + ;; + esac + + return 0 + +} +complete -F _yum_arch $filenames yum-arch +} + +# ImageMagick completion +# +have convert && { +_ImageMagick() +{ + local prev + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -channel) + COMPREPLY=( $( compgen -W 'Red Green Blue Opacity \ + Matte Cyan Magenta Yellow Black' -- $cur ) ) + return 0 + ;; + -colormap) + COMPREPLY=( $( compgen -W 'shared private' -- $cur ) ) + return 0 + ;; + -colorspace) + COMPREPLY=( $( compgen -W 'GRAY OHTA RGB Transparent \ + XYZ YCbCr YIQ YPbPr YUV CMYK' -- $cur ) ) + return 0 + ;; + -compose) + COMPREPLY=( $( compgen -W 'Over In Out Atop Xor Plus \ + Minus Add Subtract Difference Multiply Bumpmap\ + Copy CopyRed CopyGreen CopyBlue CopyOpacity' \ + -- $cur ) ) + return 0 + ;; + -compress) + COMPREPLY=( $( compgen -W 'None BZip Fax Group4 JPEG \ + Lossless LZW RLE Zip' -- $cur ) ) + return 0 + ;; + -dispose) + COMPREPLY=( $( compgen -W 'Undefined None Background \ + Previous' -- $cur ) ) + return 0 + ;; + -encoding) + COMPREPLY=( $( compgen -W 'AdobeCustom AdobeExpert \ + AdobeStandard AppleRoman BIG5 GB2312 Latin2 \ + None SJIScode Symbol Unicode Wansung' -- $cur)) + return 0 + ;; + -endian) + COMPREPLY=( $( compgen -W 'MSB LSB' -- $cur ) ) + return 0 + ;; + -filter) + COMPREPLY=( $( compgen -W 'Point Box Triangle Hermite \ + Hanning Hamming Blackman Gaussian Quadratic \ + Cubic Catrom Mitchell Lanczos Bessel Sinc' \ + -- $cur ) ) + return 0 + ;; + -format) + COMPREPLY=( $( convert -list format | \ + awk '/ [r-][w-][+-] / {print $1}' | \ + tr -d '*' | tr [:upper:] [:lower:] | \ + grep "^$cur" ) ) + return 0 + ;; + -gravity) + COMPREPLY=( $( compgen -W 'Northwest North NorthEast \ + West Center East SouthWest South SouthEast' \ + -- $cur ) ) + return 0 + ;; + -intent) + COMPREPLY=( $( compgen -W 'Absolute Perceptual \ + Relative Saturation' -- $cur ) ) + return 0 + ;; + -interlace) + COMPREPLY=( $( compgen -W 'None Line Plane Partition' \ + -- $cur ) ) + return 0 + ;; + -limit) + COMPREPLY=( $( compgen -W 'Disk File Map Memory' \ + -- $cur ) ) + return 0 + ;; + -list) + COMPREPLY=( $( compgen -W 'Delegate Format Magic \ + Module Resource Type' -- $cur ) ) + return 0 + ;; + -map) + COMPREPLY=( $( compgen -W 'best default gray red \ + green blue' -- $cur ) ) + _filedir + return 0 + ;; + -noise) + COMPREPLY=( $( compgen -W 'Uniform Gaussian \ + Multiplicative \ + Impulse Laplacian Poisson' -- $cur ) ) + return 0 + ;; + -preview) + COMPREPLY=( $( compgen -W 'Rotate Shear Roll Hue \ + Saturation Brightness Gamma Spiff \ + Dull Grayscale Quantize Despeckle \ + ReduceNoise AddNoise Sharpen Blur \ + Treshold EdgeDetect Spread Shade \ + Raise Segment Solarize Swirl Implode \ + Wave OilPaint CharcoalDrawing JPEG' \ + -- $cur ) ) + return 0 + ;; + -@(mask|profile|texture|tile|write)) + _filedir + return 0 + ;; + -type) + COMPREPLY=( $( compgen -W 'Bilevel Grayscale Palette \ + PaletteMatte TrueColor TrueColorMatte \ + ColorSeparation ColorSeparationlMatte \ + Optimize' -- $cur ) ) + return 0 + ;; + -units) + COMPREPLY=( $( compgen -W 'Undefined PixelsPerInch \ + PixelsPerCentimeter' -- $cur ) ) + return 0 + ;; + -virtual-pixel) + COMPREPLY=( $( compgen -W 'Constant Edge mirror tile' \ + -- $cur ) ) + return 0 + ;; + -visual) + COMPREPLY=( $( compgen -W 'StaticGray GrayScale \ + StaticColor PseudoColor TrueColor \ + DirectColor defaut visualid' -- $cur )) + return 0 + ;; + esac +} + +_convert() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-adjoin -affine -antialias -append \ + -authenticate -average -background -black-threshold \ + -blue-primary -blur -border -bordercolor -channel \ + -charcoal -chop -clip -coalesce -colorize -colors \ + -colorspace -comment -compress -contrast -convolve \ + -crop -cycle -debug -deconstruct -delay -density \ + -depth -despeckle -display -dispose -dither -draw \ + -edge -emboss -encoding -endian -enhance -equalize \ + -extract -fill -filter -flatten -flip -flop -font \ + -frame -fuzz -gamma -gaussian -geometry \ + -green-primary -gravity -help -implode -intent \ + -interlace -label -lat -level -limit -list -log -loop \ + -map -mask -matte -median -modulate -monochrome \ + -morph -mosaic -negate -noop -noise -normalize \ + -opaque -ordered-dither -page -paint -ping -pointsize \ + -preview -profile -quality -raise -random-threshold \ + -region -raise -red-primary -render -resize -resample \ + -roll -rotate -sample -sampling-factor -scale -scene \ + -seed -segment -shade -sharpen -shave -shear -size \ + -solarize -spread -stroke -strokewidth -swirl \ + -texture -threshold -thumbnail -tile -transform \ + -transparent -treedepth -trim -type -undercolor \ + -units -unsharp -verbose -version -view \ + -virtual-pixel -wave -white-point -white-threshold \ + -write' -- $cur ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+adjoin +append +compress \ + +contrast +debug +dither +endian +gamma +label +map \ + +mask +matte +negate +noise +page +raise +render \ + +write' -- $cur ) ) + else + _filedir + fi +} +complete -F _convert $filenames convert + +_mogrify() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-affine -antialias -authenticate \ + -background -black-threshold -blue-primary -blur \ + -border -bordercolor -channel -charcoal -chop \ + -colorize -colors -colorspace -comment -compress \ + -contrast -convolve -crop -cycle -debug -delay \ + -density -depth -despeckle -display -dispose -dither \ + -draw -edge -emboss -encoding -endian -enhance \ + -equalize -extract -fill -filter -flip -flop -font \ + -format -frame -fuzz -gamma -gaussian -geometry \ + -green-primary -implode -interlace -help -label -lat \ + -level -limit -list -log -loop -map -mask -matte \ + -median -modulate -monochrome -negate -noop \ + -normalize -opaque -page -paint -fill -ordered-dither \ + -pointsize -profile -quality -raise -random-threshold \ + -red-primary -region -resample -resize -roll -rotate \ + -sample -sampling-factor -scale -scene -seed -segment \ + -shade -sharpen -shear -size -solarize -spread \ + -stroke -strokewidth -swirl -texture -threshold \ + -thumbnail -tile -transform -transparent -treedepth \ + -trim -type -undercolor -units -unsharp -verbose \ + -version -view -virtual-pixel -wave -white-point \ + -white-threshold' -- $cur ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+compress +contrast +debug +dither \ + +endian +gamma +label +map +mask +matte +negate +page \ + +raise' -- $cur ) ) + else + _filedir + fi +} +complete -F _mogrify $filenames mogrify + +_display() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-authenticate -backdrop -border \ + -colormap -colors -colorspace -comment -compress \ + -contrast -crop -debug -delay -density -depth \ + -despeckle -display -dispose -dither -edge -endian \ + -enhance -extract -filter -flip -flop -frame -gamma \ + -geometry -help -immutable -interlace -label -limit \ + -log -map -matte -monochrome -negate -noop -page \ + -quality -raise -remote -roll -rotate -sample \ + -sampling-factor -scene -segment -sharpen -size \ + -texture -treedepth -trim -update -verbose -version \ + -virtual-pixel -window -window_group -write' -- $cur)) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+compress +contrast +debug +dither \ + +endian +gamma +label +map +matte +negate +page \ + +raise +write' -- $cur ) ) + else + _filedir + fi +} +complete -F _display $filenames display + +_animate() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-authenticate -backdrop -colormap \ + -colors -colorspace -crop -debug -delay -density \ + -depth -display -dither -extract -gamma -geometry \ + -help -interlace -limit -log -matte -map -monochrome \ + -noop -pause -remote -rotate -sampling-factor -scene \ + -size -treedepth -trim -verbose -version -visual \ + -virtual-pixel -window' -- $cur ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+debug +dither +gamma +map +matte' -- $cur ) ) + else + _filedir + fi +} +complete -F _animate $filenames animate + +_identify() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-authenticate -debug -density \ + -depth -extract -format -help -interlace -limit -list \ + -log -size -sampling-factor -verbose -version \ + -virtual-pixel' -- $cur ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+debug ' -- $cur ) ) + else + _filedir + fi +} +complete -F _identify $filenames identify + +_montage() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-adjoin -affine -authenticate \ + -blue-primary -blur -colors -colorspace -comment \ + -compose -compress -crop -debug -density -depth \ + -display -dispose -dither -draw -encoding -endian \ + -extract -fill -filter -flip -flop -frame -gamma \ + -geometry -gravity -green-primary -interlace -help \ + -label -limit -log -matte -mode -monochrome -noop \ + -page -pointsize -quality -red-primary -resize \ + -rotate -sampling-factor -scene -shadow -size \ + -stroke -texture -thumbnail -tile -transform \ + -transparent -treedepth -trim -type -verbose \ + -version -virtual-pixel -white-point' -- $cur ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+adjoin +compress +debug +dither \ + +endian +gamma +label +matte +page' -- $cur ) ) + else + _filedir + fi +} +complete -F _montage $filenames montage + +_composite() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-affine -authenticate \ + -blue-primary -colors -colorspace -comment -compose \ + -compress -debug -density -depth -displace -display \ + -dispose -dissolve -dither -encoding -endian -extract \ + -filter -font -geometry -gravity -green-primary -help \ + -interlace -label -limit -log -matte -monochrome \ + -negate -page -profile -quality -red-primary -rotate \ + -resize -sampling-factor -scene -sharpen -size \ + -stegano -stereo -thumbnail -tile -transform \ + -treedepth -type -units -unsharp -verbose -version \ + -virtual-pixel -watermark -white-point -write' \ + -- $cur ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+compress +debug +dither +endian +label \ + +matte +negate +page +write' -- $cur ) ) + else + _filedir + fi +} +complete -F _composite $filenames composite +} + +# dd(1) completion +# +have dd && +_dd() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + case "$cur" in + if=*|of=*) + cur=${cur#*=} + _filedir + return 0 + ;; + conv=*) + cur=${cur#*=} + COMPREPLY=( $( compgen -W 'ascii ebcdic ibm block unblock \ + lcase notrunc ucase swab noerror sync' \ + -- $cur ) ) + return 0 + ;; + esac + + _expand || return 0 + + COMPREPLY=( $( compgen -W '--help --version' -- $cur ) \ + $( compgen -W 'bs cbs conv count ibs if obs of seek skip'\ + -S '=' -- $cur ) ) +} && +complete -F _dd $nospace $filenames dd + +# CUPS cancel(1) completion +# +have cancel && +_cancel() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + COMPREPLY=( $( lpstat | cut -d' ' -f1 | grep "^$cur" ) ) +} && +complete -F _cancel $filenames cancel + +# aspell(1) completion +# +have aspell && { +_aspell_dictionary() +{ + local datadir + datadir=/usr/lib/aspell + COMPREPLY=( $( command ls $datadir/*.@(multi|alias) ) ) + COMPREPLY=( ${COMPREPLY[@]%.@(multi|alias)} ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]#$datadir/}' -- $cur ) ) +} + +_aspell() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # --name value style option + case "$prev" in + @(-c|-p|check)) + _filedir + return 0 + ;; + @(dump|create|merge)) + COMPREPLY=( $( compgen -W 'master personal repl' -- $cur ) ) + return 0 + ;; + -d) + _aspell_dictionary + return 0 + ;; + esac + + # --name=value style option + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case "$prev" in + --@(conf|personal|repl|per-conf)) + _filedir + return 0 + ;; + --@(conf-dir|data-dir|dict-dir|home-dir|local-data-dir|prefix)) + _filedir -d + return 0 + ;; + --master) + _aspell_dictionary + return 0 + ;; + --mode) + COMPREPLY=( $( compgen -W 'none url email sgml tex' -- $cur ) ) + return 0 + ;; + --sug-mode) + COMPREPLY=( $( compgen -W 'ultra fast normal bad-speller' -- $cur ) ) + return 0 + ;; + --keymapping) + COMPREPLY=( $( compgen -W 'aspell ispell' -- $cur ) ) + return 0 + ;; + esac + fi + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--conf= --conf-dir= --data-dir= --dict-dir= \ + --encoding= --add-filter= --rem-filter= --mode= -e \ + -H -t --add-extra-dicts= --rem-extra-dicts= \ + --home-dir= -W --ignore= --ignore-accents \ + --dont-ignore-accents --ignore-case --dont-ignore-case \ + --ignore-repl --dont-ignore-repl --jargon= --keyboard= \ + --lang= --language-tag= --local-data-dir= -d --master= \ + --module= --add-module-search-order= \ + --rem-module-search-order= --per-conf= -p --personal= \ + --prefix= --repl= -C -B --run-together --dont-run-together \ + --run-together-limit= --run-together-min= --save-repl \ + --dont-save-repl --set-prefix --dont-set-prefix --size= \ + --spelling= --strip-accents --dont-strip-accents \ + --sug-mode= --add-word-list-path= --rem-word-list-path= \ + -b -x --backup -b|-x --dont-backup --reverse --dont-reverse \ + --time --dont-time --keymapping= --add-email-quote= \ + --rem-email-quote= --email-margin= --add-tex-command= \ + --rem-tex-command= --tex-check-comments \ + --dont-tex-check-comments --add-tex-extension= \ + --rem-tex-extension= --add-sgml-check= --rem-sgml-check= \ + --add-sgml-extension= --rem-sgml-extension=' -- $cur ) ) + else + COMPREPLY=( $( compgen -W '-? help -c check -a pipe -l list \ + config config soundslike filter -v version dump \ + create merge' -- $cur ) ) + fi + +} +complete -F _aspell $filenames aspell +} + +# xmms(1) completion +# +have xmms && +_xmms() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-h --help -r --rew -p --play \ + -u --pause -s --stop -t --play-pause -f --fwd -e \ + --enqueue -m --show-main-window -i --sm-client-id \ + -v --version' -- $cur ) ) + else + _filedir '@(mp[23]|MP[23]|ogg|OGG|wav|WAV|pls|m3u|xm|mod|s[3t]m|it|mtm|ult|flac)' + + fi + +} && +complete -F _xmms $filenames xmms + +# info(1) completion +# +have info && +_info() +{ + local cur infopath UNAME + + COMPREPLY=() + cur=`_get_cword` + + _expand || return 0 + + # default completion if parameter contains / + if [[ "$cur" == */* ]]; then + _filedir + return 0 + fi + + infopath='/usr/share/info' + + if [ "${INFOPATH: -1:1}" == ':' ]; then + infopath=${INFOPATH}${infopath} + elif [ ${INFOPATH:+set} ]; then + infopath=$INFOPATH + fi + + infopath=$infopath: + if [ -n "$cur" ]; then + infopath="${infopath//://$cur* }" + else + infopath="${infopath//:// }" + fi + + # redirect stderr for when path doesn't exist + COMPREPLY=( $( eval command ls "$infopath" 2>/dev/null ) ) + # weed out directory path names and paths to info pages + COMPREPLY=( ${COMPREPLY[@]##*/?(:)} ) + # weed out info dir file + for (( i=0 ; i < ${#COMPREPLY[@]} ; ++i )); do + if [ "${COMPREPLY[$i]}" == 'dir' ]; then + unset COMPREPLY[$i]; + fi; + done + # strip suffix from info pages + COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2)} ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) ) + + return 0 +} && +complete -F _info $filenames info + +# dhclient(1) completion +# +have dhclient && _dhclient() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(cf|lf|pf|sf)) + _filedir + return 0 + ;; + -s) + _known_hosts + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-p -d -q -1 -r -lf -pf \ + -cf -sf -s -g -n -nw -w' -- $cur ) ) + else + _available_interfaces + fi +} && +complete -F _dhclient dhclient + +# lvm(8) completion +# +have lvm && { +_volumegroups() +{ + COMPREPLY=( $(compgen -W "$( vgscan 2>/dev/null | \ + sed -n -e 's|.*Found.*"\(.*\)".*$|\1|p' )" -- $cur ) ) +} + +_physicalvolumes() +{ + COMPREPLY=( $(compgen -W "$( pvscan 2>/dev/null | \ + sed -n -e 's|^.*PV \(.*\) VG.*$|\1|p' )" -- $cur ) ) +} + +_logicalvolumes() +{ + COMPREPLY=( $(compgen -W "$( lvscan 2>/dev/null | \ + sed -n -e "s|^.*'\(.*\)'.*$|\1|p" )" -- $cur ) ) +} + +_units() +{ + COMPREPLY=( $( compgen -W 'h s b k m g t H K M G T' -- $cur ) ) +} + +_sizes() +{ + COMPREPLY=( $( compgen -W 'k K m M g G t T' -- $cur ) ) +} + +_args() +{ + args=0 + if [[ "${COMP_WORDS[0]}" == lvm ]]; then + offset=2 + else + offset=1 + fi + for (( i=$offset; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" != -* ]]; then + args=$(($args + 1)) + fi + done +} + +_lvmdiskscan() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d --debug -h -? --help -l \ + --lvmpartition -v --verbose --version' -- $cur ) ) + fi +} +complete -F _lvmdiskscan lvmdiskscan + +_pvscan() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d --debug -e \ + --exported -n --novolumegroup -h -? \ + --help --ignorelockingfailure -P \ + --partial -s --short -u --uuid -v \ + --verbose --version' -- $cur ) ) + fi +} +complete -F _pvscan pvscan + +_pvs() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(o|O|-options|-sort)) + COMPREPLY=( $( compgen -W 'pv_fmt pv_uuid \ + pv_size pv_free pv_used pv_name \ + pv_attr pv_pe_count \ + pv_pe_alloc_count' -- $cur ) ) + return 0 + ;; + --units) + _units + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--aligned -a --all -d --debug \ + -h -? --help --ignorelockingfailure --noheadings \ + --nosuffix -o --options -O --sort \ + --separator --unbuffered --units \ + -v --verbose --version' -- $cur ) ) + else + _physicalvolumes + fi +} +complete -F _pvs pvs + +_pvdisplay() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + --units) + _units + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \ + -v --verbose -d --debug -h --help --version' -- $cur ) ) + else + _physicalvolumes + fi +} +complete -F _pvdisplay pvdisplay + +_pvchange() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|x|-autobackup|--allocatable)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --all -A --autobackup \ + -d --debug -h --help -t --test -u --uuid -x \ + --allocatable -v --verbose --addtag --deltag \ + --version' -- $cur ) ) + else + _physicalvolumes + fi +} +complete -F _pvchange pvchange + +_pvcreate() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + --restorefile) + _filedir + return 0 + ;; + -@(M|-metadatatype)) + COMPREPLY=( $( compgen -W '1 2' -- $cur ) ) + return 0 + ;; + --metadatacopies) + COMPREPLY=( $( compgen -W '0 1 2' -- $cur ) ) + return 0 + ;; + --@(metadatasize|setphysicalvolumesize)) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--restorefile -d --debug -f \ + --force -h -? --help --labelsector -M --metadatatype \ + --metadatacopies --metadatasize \ + --setphysicalvolumesize -t --test -u --uuid uuid -v \ + --verbose -y --yes --version' -- $cur ) ) + else + _physicalvolumes + fi +} +complete -F _pvcreate pvcreate + +_pvmove() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|-autobackup)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + -@(n|-name)) + _logicalvolumes + return 0 + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--abort -A --autobackup \ + -b --background -d --debug -f --force -h -? \ + --help -i --interval -t --test -v --verbose \ + --version -n --name' -- $cur ) ) + else + _physicalvolumes + fi +} +complete -F _pvmove pvmove + +_pvremove() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d --debug -f --force -h -? \ + --help -y --yes -t --test -v --verbose \ + --version' -- $cur ) ) + else + _physicalvolumes + fi +} +complete -F _pvremove pvremove + +_vgscan() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d --debug -h --help \ + --ignorelockingfailure --mknodes -P \ + --partial -v --verbose --version' -- $cur ) ) + fi +} +complete -F _vgscan vgscan + +_vgs() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(o|O|-options|-sort)) + COMPREPLY=( $( compgen -W 'vg_fmt vg_uuid vg_name \ + vg_attr vg_size vg_free vg_sysid \ + vg_extent_size vg_extent_count vg_free_count \ + max_lv max_pv pv_count lv_count snap_count \ + vg_seqno' -- $cur ) ) + return 0 + ;; + --units) + _units + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--aligned -d --debug \ + -h --help --ignorelockingfailure --noheadings \ + --nosuffix -o --options -O --sort -P --partial \ + --separator --unbuffered --units \ + -v --verbose --version' -- $cur ) ) + else + _volumegroups + fi +} +complete -F _vgs vgs + +_vgdisplay() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + --units) + _units + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \ + -P --partial -A --activevolumegroups -v --verbose \ + -d --debug -h --help --version' -- $cur ) ) + else + _volumegroups + fi +} +complete -F _vgdisplay vgdisplay + +_vgchange() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(a|A|x|-available|-autobackup|-resizeable)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup --alloc -P \ + --partial -d --debug -h --help --ignorelockingfailure \ + -t --test -u --uuid -v --verbose --version -a \ + --available -x --resizeable -l --logicalvolume \ + --addtag --deltag' -- $cur ) ) + else + _volumegroups + fi +} +complete -F _vgchange vgchange + +_vgcreate() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|-autobackup)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + -@(M|-metadatatype)) + COMPREPLY=( $( compgen -W '1 2' -- $cur ) ) + return 0 + ;; + -@(s|-physicalextentsize)) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup --addtag \ + --alloc -d --debug -h --help -l --maxlogicalvolumes \ + -M --metadatatype -p --maxphysicalvolumes -s \ + --physicalextentsize -t --test -v --verbose \ + --version' -- $cur ) ) + else + _args + if [ $args -eq 0 ]; then + _volumegroups + else + _physicalvolumes + fi + fi +} +complete -F _vgcreate vgcreate + +_vgremove() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d --debug -h --help -t --test \ + -v --verbose --version' -- $cur ) ) + else + _volumegroups + fi +} +complete -F _vgremove vgremove + +_vgrename() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|-autobackup)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \ + -? --help -t --test -v --verbose --version' -- $cur ) ) + else + _volumegroups + fi +} +complete -F _vgrename vgrename + +_vgreduce() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|-autobackup)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --all -A --autobackup -d \ + --debug -h --help --removemissing -t --test -v \ + --verbose --version' -- $cur ) ) + + else + _args + if [ $args -eq 0 ]; then + _volumegroups + else + _physicalvolumes + fi + fi +} +complete -F _vgreduce vgreduce + +_vgextend() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|-autobackup)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + -@(L|-size)) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \ + -? --help -t --test -v --verbose --version' -- $cur ) ) + else + _args + if [ $args -eq 0 ]; then + _volumegroups + else + _physicalvolumes + fi + fi +} +complete -F _vgextend vgextend + +_vgport() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --all -d --debug -h \ + -? --help -v --verbose --version' -- $cur ) ) + else + _volumegroups + fi +} +complete -F _vgport vgimport vgexport + +_vgck() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d --debug -h \ + -? --help -v --verbose --version' -- $cur ) ) + else + _volumegroups + fi +} +complete -F _vgck vgck + +_vgconvert() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(M|-metadatatype)) + COMPREPLY=( $( compgen -W '1 2' -- $cur ) ) + return 0 + ;; + --metadatacopies) + COMPREPLY=( $( compgen -W '0 1 2' -- $cur ) ) + return 0 + ;; + --metadatasize) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d --debug -h --help --labelsector \ + -M --metadatatype --metadatacopies --metadatasize \ + -t --test -v --verbose --version' -- $cur ) ) + else + _volumegroups + fi +} +complete -F _vgconvert vgconvert + +_vgcfgbackup() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(f|-file)) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d --debug -f --file -h --help \ + --ignorelockingfailure -P --partial -v --verbose \ + --version' -- $cur ) ) + else + _volumegroups + fi +} +complete -F _vgcfgbackup vgcfgbackup + +_vgcfgrestore() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(f|-file)) + _filedir + return 0 + ;; + -@(M|-metadatatype)) + COMPREPLY=( $( compgen -W '1 2' -- $cur ) ) + return 0 + ;; + -@(n|-name)) + _volumegroups + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d --debug -f --file -l --list \ + -h --help -M --Metadatatype -n --name -t --test \ + -v --verbose --version' -- $cur ) ) + else + _volumegroups + fi +} +complete -F _vgcfgrestore vgcfgrestore + +_vgmerge() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|-autobackup)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup -d --debug \ + -h --help -l --list -t --test -v --verbose \ + --version' -- $cur ) ) + else + _volumegroups + fi +} +complete -F _vgmerge vgmerge + +_vgsplit() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|-autobackup)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + -@(M|-metadatatype)) + COMPREPLY=( $( compgen -W '1 2' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup -d --debug \ + -h --help -l --list -M --metadatatype -t --test \ + -v --verbose --version' -- $cur ) ) + else + _args + if [ $args -eq 0 -o $args -eq 1 ]; then + _volumegroups + else + _physicalvolumes + fi + fi +} +complete -F _vgsplit vgsplit + +_vgmknodes() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d --debug -h --help -v --verbose \ + --version' -- $cur ) ) + else + _volumegroups + fi +} +complete -F _vgmknodes vgmknodes + +_lvscan() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-b --blockdevice -d --debug \ + -h -? --help --ignorelockingfailure -P \ + --partial -v --verbose --version' -- $cur ) ) + fi +} +complete -F _lvscan lvscan + +_lvs() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(o|O|-options|-sort)) + COMPREPLY=( $( compgen -W 'lv_uuid lv_name \ + lv_attr lv_minor lv_size seg_count \ + origin snap_percent segtype stripes \ + stripesize chunksize seg_start \ + seg_size' -- $cur ) ) + return 0 + ;; + --units) + _units + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--aligned -d --debug \ + -h --help --ignorelockingfailure --noheadings \ + --nosuffix -o --options -O --sort -P --partial \ + --segments --separator --unbuffered --units \ + -v --verbose --version' -- $cur ) ) + else + _logicalvolumes + fi +} +complete -F _lvs lvs + +_lvdisplay() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + --units) + _units + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \ + -P --partial -m --maps -v --verbose -d --debug -h \ + --help --version' -- $cur ) ) + else + _logicalvolumes + fi +} +complete -F _lvdisplay lvdisplay + +_lvchange() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(a|A|C|M|-available|-autobackup|-continguous|-persistent)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + -@(p|-permission)) + COMPREPLY=( $( compgen -W 'r rw' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup -a --available \ + --addtag --alloc -C --contiguous -d --debug --deltag \ + -f --force -h --help --ignorelockingfailure -M \ + --persistent --major major --minor minor -P --partial \ + -p --permission -r --readahead --refresh -t --test \ + -v --verbose --version' -- $cur ) ) + else + _logicalvolumes + fi +} +complete -F _lvchange lvchange + +_lvcreate() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|C|M|Z|-autobackup|-continguous|-persistent|-zero)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + -@(L|-size)) + _sizes + return 0 + ;; + -@(p|-permission)) + COMPREPLY=( $( compgen -W 'r rw' -- $cur ) ) + return 0 + ;; + -@(n|-name)) + _logicalvolumes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup --addtag --alloc \ + -C --contiguous -d --debug -h -? --help -i --stripes \ + -I --stripesize -l --extents -L --size -M --persistent \ + --major --minor -n --name -p --permission -r \ + --readahead -t --test --type -v --verbose -Z --zero \ + --version' -- $cur ) ) + else + _args + if [ $args -eq 0 ]; then + _volumegroups + else + _physicalvolumes + fi + fi +} +complete -F _lvcreate lvcreate + +_lvremove() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|-autobackup)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -f \ + --force -h -? --help -t --test -v --verbose \ + --version' -- $cur ) ) + else + _logicalvolumes + fi +} +complete -F _lvremove lvremove + +_lvrename() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|-autobackup)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \ + -? --help -t --test -v --verbose --version' -- $cur ) ) + else + _logicalvolumes + fi +} +complete -F _lvrename lvrename + +_lvreduce() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|-autobackup)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + -@(L|-size)) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup -d \ + --debug -f --force -h --help -l --extents \ + -L --size -n --nofsck -r --resizefs -t --test \ + -v --verbose --version' -- $cur ) ) + else + _logicalvolumes + fi +} +complete -F _lvreduce lvreduce + +_lvresize() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|-autobackup)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + -@(L|-size)) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup --alloc -d \ + --debug -h --help -i --stripes -I --stripesize \ + -l --extents -L --size -n --nofsck -r --resizefs \ + -t --test --type -v --verbose --version' -- $cur ) ) + else + _args + if [ $args -eq 0 ]; then + _logicalvolumes + else + _physicalvolumes + fi + fi +} +complete -F _lvresize lvresize + +_lvextend() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -@(A|-autobackup)) + COMPREPLY=( $( compgen -W 'y n' -- $cur ) ) + return 0 + ;; + -@(L|-size)) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A --autobackup --alloc -d \ + --debug -h --help -i --stripes -I --stripesize \ + -l --extents -L --size -n --nofsck -r --resizefs \ + -t --test --type -v --verbose --version' -- $cur ) ) + else + _args + if [ $args -eq 0 ]; then + _logicalvolumes + else + _physicalvolumes + fi + fi +} +complete -F _lvextend lvextend + +_lvm() +{ + local prev + + COMPREPLY=() + cur=`_get_cword` + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'dumpconfig help lvchange \ + lvcreate lvdisplay lvextend lvmchange \ + lvmdiskscan lvmsadc lvmsar lvreduce \ + lvremove lvrename lvresize lvs lvscan \ + pvchange pvcreate pvdata pvdisplay pvmove \ + pvremove pvresize pvs pvscan vgcfgbackup \ + vgcfgrestore vgchange vgck vgconvert \ + vgcreate vgdisplay vgexport vgextend \ + vgimport vgmerge vgmknodes vgreduce \ + vgremove vgrename vgs vgscan vgsplit \ + version' -- $cur ) ) + else + case ${COMP_WORDS[1]} in + pvchange) + _pvchange + ;; + pvcreate) + _pvcreate + ;; + pvdisplay) + _pvdisplay + ;; + pvmove) + _pvmove + ;; + pvremove) + _pvremove + ;; + pvresize) + _pvresize + ;; + pvs) + _pvs + ;; + pvscan) + _pvscan + ;; + vgcfgbackup) + _vgcfgbackup + ;; + vgcfgrestore) + _vgcfgrestore + ;; + vgchange) + _vgchange + ;; + vgck) + _vgck + ;; + vgconvert) + _vgconvert + ;; + vgcreate) + _vgcreate + ;; + vgdisplay) + _vgdisplay + ;; + vgexport) + _vgexport + ;; + vgextend) + _vgextend + ;; + vgimport) + _vgimport + ;; + vgmerge) + _vgmerge + ;; + vgmknodes) + _vgmknodes + ;; + vgreduce) + _vgreduce + ;; + vgremove) + _vgremove + ;; + vgrename) + _vgrename + ;; + vgs) + _vgs + ;; + vgscan) + _vgscan + ;; + vgsplit) + _vgsplit + ;; + lvchange) + _lvchange + ;; + lvcreate) + _lvcreate + ;; + lvdisplay) + _lvdisplay + ;; + lvextend) + _lvextend + ;; + lvreduce) + _lvreduce + ;; + lvremove) + _lvremove + ;; + lvrename) + _lvrename + ;; + lvresize) + _lvresize + ;; + lvs) + _lvs + ;; + lvscan) + _lvscan + ;; + esac + fi +} +complete -F _lvm lvm +} + +# mkinitrd(8) completion +# +have mkinitrd && +_mkinitrd() +{ + local cur args + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # --name value style option + case "$prev" in + --preload) + _modules + return 0 + ;; + esac + + # --name=value style option + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case "$prev" in + --@(with|builtin)) + _modules + return 0 + ;; + --@(fstab|dsdt)) + _filedir + return 0 + ;; + --tmpdir) + _filedir -d + return 0 + ;; + esac + fi + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--version -v -f --preload \ + --with= --omit-scsi-modules --omit-raid-modules \ + --images-version --fstab= --nocompress --builtin= \ + --nopivot --noudev --allow-missing --tmpdir= \ + --initrdfs= --dsdt= --lvm-version= --froce-usb' \ + -- $cur ) ) + else + _count_args + + case $args in + 1) + _filedir + ;; + 2) + COMPREPLY=( $( command ls /lib/modules | grep "^$cur" ) ) + ;; + esac + fi + +} && +complete -F _mkinitrd mkinitrd + +# pkgconfig(1) completion +# +have pkg-config && +_pkg_config() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + # return list of available options + COMPREPLY=( $( compgen -W '-version --modversion \ + --atleast-pkgconfig-version= --libs --libs-only-l \ + --libs-only-other --libs-only-L --cflags \ + --cflags-only-I --cflags-only-other --variable= \ + --define-variable= --exists --uninstalled \ + --atleast-version= --exact-version= --max-version= \ + --list-all --debug --print-errors --silence-errors \ + --errors-to-stdout -? --help --usage' -- $cur)) + else + COMPREPLY=( $( pkg-config --list-all 2>/dev/null | \ + awk '{print $1}' | grep "^$cur" ) ) + fi +} && +complete -F _pkg_config pkg-config + + +# cpio(1) completion +# +have cpio && { +_cpio_format() +{ + COMPREPLY=( $( compgen -W 'bin odc newc crc tar ustar hpbin hpodc' -- $cur ) ) +} + +_cpio() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # --name value style option + case $prev in + -H) + _cpio_format + return 0 + ;; + -@(E|F|I)) + _filedir + return 0 + ;; + -R) + _usergroup + return 0 + ;; + esac + + # --name=value style option + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case $prev in + --format) + _cpio_format + return 0 + ;; + --@(file|pattern-file)) + _filedir + return 0 + ;; + --owner) + _usergroup + return 0 + ;; + --rsh-command) + COMPREPLY=( $( compgen -c -- $cur ) ) + return 0 + ;; + esac + fi + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W '-o --create -i --extract -p --pass-through' -- $cur) ) + else + case ${COMP_WORDS[1]} in + -@(o|-create)) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-0 -a -c -v -A -B\ + -L -V -C -H -M -O -F --file= --format=\ + --message= --null --reset-access-time\ + --verbose --dot --append --block-size=\ + --dereference --io-size= --quiet\ + --force-local --rsh-command= --help\ + --version' -- $cur ) ) + fi + ;; + -@(i|-extract)) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-b -c -d -f -m -n -r\ + -t -s -u -v -B -S -V -C -E -H -M -R -I\ + -F --file= --make-directories\ + --nonmatching\ + --preserve-modification-time\ + --numeric-uid-gid --rename -t --list\ + --swap-bytes --swap --dot\ + --unconditional --verbose --block-size=\ + --swap-halfwords --io-size=\ + --pattern-file= --format= --owner=\ + --no-preserve-owner --message=\ + --force-local --no-absolute-filenames\ + --sparse --only-verify-crc --quiet\ + --rsh-command= --help\ + --version' -- $cur ) ) + fi + ;; + -@(p|-pass-through)) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-0 -a -d -l -m -u -v\ + -L -V -R --null --reset-access-time\ + --make-directories --link --quiet\ + --preserve-modification-time\ + --unconditional --verbose --dot\ + --dereference --owner=\ + --no-preserve-owner --sparse --help\ + --version' -- $cur ) ) + else + _filedir -d + fi + ;; + esac + fi +} +complete -F _cpio cpio +} + +# id(1) completion +# +have id && +_id() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -g --group -G --groups -n --name\ + -r --real -u --user --help --version' -- $cur ) ) + else + COMPREPLY=( $( compgen -u $cur ) ) + fi +} && +complete -F _id id + +# getent(1) completion +# +have getent && +_getent() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + passwd) + COMPREPLY=( $( compgen -u $cur ) ) + return 0 + ;; + group) + COMPREPLY=( $( compgen -g $cur ) ) + return 0 + ;; + services) + COMPREPLY=( $( compgen -s $cur ) ) + return 0 + ;; + hosts) + COMPREPLY=( $( compgen -A hostname $cur ) ) + return 0 + ;; + protocols) + COMPREPLY=( $( getent protocols | awk '{print $1}' | grep "^$cur" ) ) + return 0 + ;; + networks) + COMPREPLY=( $( getent networks | awk '{print $1}' | grep "^$cur" ) ) + return 0 + ;; + esac + + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'passwd group hosts services protocols networks' -- $cur ) ) + fi +} && +complete -F _getent getent + +# ntpdate(1) completion +# +have ntpdate && +_ntpdate() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -k) + _filedir + return 0 + ;; + -U) + COMPREPLY=( $( compgen -u $cur ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-4 -6 -b -B -d -Q -q -s -u -v -a\ + -e -k -p -o -r -t' -- $cur ) ) + else + _known_hosts + fi +} && +complete -F _ntpdate ntpdate + +# smartctl(8) completion +# +have smartctl && { +_smartctl_quietmode() +{ + COMPREPLY=( $( compgen -W 'errorsonly silent' -- $cur ) ) +} +_smartctl_device() +{ + COMPREPLY=( $( compgen -W 'ata scsi 3ware' -- $cur ) ) +} +_smartctl_tolerance() +{ + COMPREPLY=( $( compgen -W 'warn exit ignore' -- $cur ) ) +} +_smartctl_badsum() +{ + COMPREPLY=( $( compgen -W 'normal conservative permissive verypermissive' -- $cur ) ) +} +_smartctl_report() +{ + COMPREPLY=( $( compgen -W 'ioctl ataioctl scsiioctl' -- $cur ) ) +} +_smartctl_feature() +{ + COMPREPLY=( $( compgen -W 'on off' -- $cur ) ) +} +_smartctl_log() +{ + COMPREPLY=( $( compgen -W 'error selftest selective directory' -- $cur ) ) +} +_smartctl_vendorattribute() +{ + COMPREPLY=( $( compgen -W 'help 9,minutes 9,seconds 9,halfminutes \ + 9,temp 192,emergencyretractcyclect 193,loadunload \ + 194,10xCelsius 194,unknown 198,offlinescanuncsectorct \ + 200,writeerrorcount 201,detectedtacount 220,temp' -- $cur ) ) +} +_smartctl_firmwarebug() +{ + COMPREPLY=( $( compgen -W 'none samsung samsung2' -- $cur ) ) +} +_smartctl_presets() +{ + COMPREPLY=( $( compgen -W 'use ignore show showall' -- $cur ) ) +} +_smartctl_test() +{ + COMPREPLY=( $( compgen -W 'offline short long conveyance select afterselect,on afterselect,off pending' -- $cur ) ) +} + +_smartctl() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + # --name value style option + case "$prev" in + -q) + _smartctl_quietmode + ;; + -d) + _smartctl_device + return 0 + ;; + -t) + _smartctl_tolerance + return 0 + ;; + -b) + _smartctl_badsum + return 0 + ;; + -r) + _smartctl_report + return 0 + ;; + -s) + _smartctl_feature + return 0 + ;; + -o) + _smartctl_feature + return 0 + ;; + -S) + _smartctl_feature + return 0 + ;; + -l) + _smartctl_log + return 0 + ;; + -v) + _smartctl_vendorattribute + return 0 + ;; + -F) + _smartctl_firmwarebug + return 0 + ;; + -P) + _smartctl_presets + return 0 + ;; + -t) + _smartctl_test + return 0 + ;; + esac + + # --name=value style option + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case "$prev" in + --quietmode) + _smartctl_quietmode + return 0 + ;; + --device) + _smartctl_device + return 0 + ;; + --tolerance) + _smartctl_tolerance + return 0 + ;; + --badsum) + _smartctl_badsum + return 0 + ;; + --report) + _smartctl_report + return 0 + ;; + --smart) + _smartctl_feature + return 0 + ;; + --offlineauto) + _smartctl_feature + return 0 + ;; + --saveauto) + _smartctl_feature + return 0 + ;; + --log) + _smartctl_log + return 0 + ;; + --vendorattribute) + _smartctl_vendorattribute + return 0 + ;; + --firmwarebug) + _smartctl_firmwarebug + return 0 + ;; + --presets) + _smartctl_presets + return 0 + ;; + --test) + _smartctl_test + return 0 + ;; + esac + fi + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-h --help --usage -V --version \ + --copyright --license-i --info -a --all -q \ + --quietmode= -d --device= -T --tolerance= -b --badsum= \ + -r --report= -s --smart= -o --offlineauto= -S \ + --saveauto= -H --health -c --capabilities -A \ + --attributes -l --log= -v --vendorattribute= -F \ + --firmwarebug= -P --presets= -t --test= -C \ + --captive -X --abort' -- $cur ) ) + else + cur=${cur:=/dev/} + _filedir + fi +} +complete -F _smartctl smartctl +} + +# vncviewer(1) completion +# +have vncviewer && +_vncviewer() +{ + local cur prev + local -a config + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case "$prev" in + -via) + _known_hosts -a + ;; + *) + # ssh into the the server, find and ping the broadcast address, then + # sort and show the results. + COMPREPLY=( $( ssh -o 'Batchmode yes' $prev \ + "ping -bnc 4 255.255.255.255" 2>/dev/null | \ + awk -F ' ' '{print $4}' | \ + sort -n | uniq | egrep '[0-9]+\.[0-9]+\.' 2>/dev/null ) ) + esac + + return 0 +} && +complete -F _vncviewer vncviewer + +# sysctl(8) completion +# +have sysctl && +_sysctl() +{ + local cur + + COMPREPLY=() + cur=`_get_cword` + + COMPREPLY=( $( compgen -W "$(sysctl -N -a 2>/dev/null)" -- $cur ) ) + + return 0 +} && +complete -F _sysctl sysctl + +# update-rc.d(8) completion +# +# Copyright (C) 2004 Servilio Afre Puentes +# +have update-rc.d && +_update_rc_d() +{ + local cur prev sysvdir services options valid_options + + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \ + || sysvdir=/etc/init.d + + services=( $(echo $sysvdir/!(README*|*.sh|*.dpkg*|*.rpm*)) ) + services=( ${services[@]#$sysvdir/} ) + options=( -f -n ) + + if [[ $COMP_CWORD -eq 1 || "$prev" == -* ]]; then + valid_options=( $( \ + echo "${COMP_WORDS[@]} ${options[@]}" \ + | tr " " "\n" \ + | sed -ne "/$( echo "${options[@]}" | sed "s/ /\\|/g" )/p" \ + | sort | uniq -u \ + ) ) + COMPREPLY=( $( compgen -W '${options[@]} ${services[@]}' \ + -X '$( echo ${COMP_WORDS[@]} | tr " " "|" )' -- $cur ) ) + elif [[ "$prev" == ?($( echo ${services[@]} | tr " " "|" )) ]]; then + COMPREPLY=( $( compgen -W 'remove defaults start stop' -- $cur ) ) + elif [[ "$prev" == defaults && "$cur" == [0-9] ]]; then + COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 ) + elif [[ "$prev" == defaults && "$cur" == [sk]?([0-9]) ]]; then + COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 ) + elif [[ "$prev" == defaults && -z "$cur" ]]; then + COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 s k ) + elif [[ "$prev" == ?(start|stop) ]]; then + if [[ "$cur" == [0-9] || -z "$cur" ]]; then + COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 ) + elif [[ "$cur" == [0-9][0-9] ]]; then + COMPREPLY=( $cur ) + else + COMPREPLY=() + fi + elif [[ "$prev" == ?([0-9][0-9]|[0-6S]) ]]; then + if [[ -z "$cur" ]]; then + if [[ $prev == [0-9][0-9] ]]; then + COMPREPLY=( 0 1 2 3 4 5 6 S ) + else + COMPREPLY=( 0 1 2 3 4 5 6 S . ) + fi + elif [[ "$cur" == [0-6S.] ]]; then + COMPREPLY=( $cur ) + else + COMPREPLY=() + fi + elif [[ "$prev" == "." ]]; then + COMPREPLY=( $(compgen -W "start stop" -- $cur) ) + else + COMPREPLY=() + fi + + return 0 +} && +complete -F _update_rc_d update-rc.d + +# invoke-rc.d(8) completion +# +# Copyright (C) 2004 Servilio Afre Puentes +# +have invoke-rc.d && +_invoke_rc_d() +{ + local cur prev sysvdir services options valid_options + + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \ + || sysvdir=/etc/init.d + + services=( $(echo $sysvdir/!(README*|*.sh|*.dpkg*|*.rpm*)) ) + services=( ${services[@]#$sysvdir/} ) + options=( --help --quiet --force --try-anyway --disclose-deny --query --no-fallback ) + + if [[ ($COMP_CWORD -eq 1) || ("$prev" == --* ) ]]; then + valid_options=( $( \ + echo ${COMP_WORDS[@]} ${options[@]} \ + | tr " " "\n" \ + | sed -ne "/$( echo ${options[@]} | sed "s/ /\\\\|/g" )/p" \ + | sort | uniq -u \ + ) ) + COMPREPLY=( $( compgen -W '${valid_options[@]} ${services[@]}' -- \ + $cur ) ) + elif [ -x $sysvdir/$prev ]; then + COMPREPLY=( $( compgen -W '`sed -ne "y/|/ /; \ + s/^.*Usage:[ ]*[^ ]*[ ]*{*\([^}\"]*\).*$/\1/p" \ + $sysvdir/$prev`' -- \ + $cur ) ) + else + COMPREPLY=() + fi + + return 0 +} && +complete -F _invoke_rc_d invoke-rc.d + +# minicom(1) completion +# +have minicom && +_minicom() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -@(a|c)) + COMPREPLY=( $( compgen -W 'on off' -- $cur ) ) + return 0 + ;; + -@(S|C)) + _filedir + return 0 + ;; + -P) + COMPREPLY=( $( command ls /dev/tty* ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]} ${COMPREPLY[@]#/dev/}' -- $cur ) ) + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-s -o -m -M -z -l -L -w -a -t \ + -c -S -d -p -C -T -8' -- $cur ) ) + else + COMPREPLY=( $( command ls /etc/minicom/minirc.* 2>/dev/null | sed -e 's|/etc/minicom/minirc.||' | grep "^$cur" ) ) + fi +} && +complete -F _minicom minicom + +# svn completion +# +have svn && +{ +_svn() +{ + local cur prev commands options command + + COMPREPLY=() + cur=`_get_cword` + + commands='add blame praise annotate ann cat checkout co cleanup commit \ + ci copy cp delete del remove rm diff di export help ? h import \ + info list ls lock log merge mkdir move mv rename ren \ + propdel pdel pd propedit pedit pe propget pget pg \ + proplist plist pl propset pset ps resolved revert \ + status stat st switch sw unlock update up' + + if [[ $COMP_CWORD -eq 1 ]] ; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--version' -- $cur ) ) + else + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + fi + else + + prev=${COMP_WORDS[COMP_CWORD-1]} + case $prev in + --config-dir) + _filedir -d + return 0; + ;; + -@(F|-file|-targets)) + _filedir + return 0; + ;; + --encoding) + COMPREPLY=( $( compgen -W \ + '$( iconv --list | sed -e "s@//@@;" )' \ + -- "$cur" ) ) + return 0; + ;; + --@(editor|diff|diff3)-cmd) + COMP_WORDS=(COMP_WORDS[0] $cur) + COMP_CWORD=1 + _command + return 0; + ;; + esac + + command=${COMP_WORDS[1]} + + if [[ "$cur" == -* ]]; then + # possible options for the command + case $command in + add) + options='--auto-props --no-auto-props \ + --force --targets --no-ignore \ + --non-recursive -N -q --quiet' + ;; + @(blame|annotate|ann|praise)) + options='-r --revisions --username \ + --password --no-auth-cache \ + --non-interactive -v \ + --verbose --incremental --xml' + ;; + cat) + options='-r --revision --username \ + --password --no-auth-cache \ + --non-interactive' + ;; + @(checkout|co)) + options='-r --revision -q --quiet -N \ + --non-recursive --username \ + --password --no-auth-cache \ + --non-interactive \ + --ignore-externals' + ;; + cleanup) + options='--diff3-cmd' + ;; + @(commit|ci)) + options='-m --message -F --file \ + --encoding --force-log -q \ + --quiet --non-recursive -N \ + --targets --editor-cmd \ + --username --password \ + --no-auth-cache \ + --non-interactive --no-unlock' + ;; + @(copy|cp)) + options='-m --message -F --file \ + --encoding --force-log -r \ + --revision -q --quiet \ + --editor-cmd -username \ + --password --no-auth-cache \ + --non-interactive' + ;; + @(delete|del|remove|rm)) + options='--force -m --message -F \ + --file --encoding --force-log \ + -q --quiet --targets \ + --editor-cmd -username \ + --password --no-auth-cache \ + --non-interactive' + ;; + @(diff|di)) + options='-r --revision -x --extensions \ + --diff-cmd --no-diff-deleted \ + -N --non-recursive --username \ + --password --no-auth-cache \ + --non-interactive --force \ + --old --new --notice-ancestry' + ;; + export) + options='-r --revision -q --quiet \ + --username --password \ + --no-auth-cache \ + --non-interactive -N \ + --non-recursive --force \ + --native-eol --ignore-externals' + ;; + import) + options='--auto-props --no-auto-props \ + -m --message -F --file \ + --encoding --force-log -q \ + --quiet --non-recursive \ + --no-ignore --editor-cmd \ + --username --password \ + --no-auth-cache \ + --non-interactive' + ;; + info) + options='--username --password \ + --no-auth-cache \ + --non-interactive -r \ + --revision --xml --targets \ + -R --recursive --incremental' + ;; + @(list|ls)) + options='-r --revision -v --verbose -R \ + --recursive --username \ + --password --no-auth-cache \ + --non-interactive \ + --incremental --xml' + ;; + lock) + options='-m --message -F --file \ + --encoding --force-log \ + --targets --force --username \ + --password --no-auth-cache \ + --non-interactive' + ;; + log) + options='-r --revision -v --verbose \ + --targets --username \ + --password --no-auth-cache \ + --non-interactive \ + --stop-on-copy --incremental \ + --xml -q --quiet --limit' + ;; + merge) + options='-r --revision -N \ + --non-recursive -q --quiet \ + --force --dry-run --diff3-cmd \ + --username --password \ + --no-auth-cache \ + --non-interactive \ + --ignore-ancestry' + ;; + mkdir) + options='-m --message -F --file \ + --encoding --force-log -q \ + --quiet --editor-cmd \ + --username --password \ + --no-auth-cache \ + --non-interactive' + ;; + @(move|mv|rename|ren)) + options='-m --message -F --file \ + --encoding --force-log -r \ + --revision -q --quiet \ + --force --editor-cmd \ + --username --password \ + --no-auth-cache \ + --non-interactive' + ;; + @(propdel|pdel|pd)) + options='-q --quiet -R --recursive -r \ + --revision --revprop \ + --username --password \ + --no-auth-cache \ + --non-interactive' + ;; + @(propedit|pedit|pe)) + options='-r --revision --revprop \ + --encoding --editor-cmd \ + --username --password \ + --no-auth-cache \ + --non-interactive --force' + ;; + @(propget|pget|pg)) + options='-R --recursive -r --revision \ + --revprop --strict --username \ + --password --no-auth-cache \ + --non-interactive' + ;; + @(proplist|plist|pl)) + options='-v --verbose -R --recursive \ + -r --revision --revprop -q \ + --quiet --username --password \ + --no-auth-cache \ + --non-interactive' + ;; + @(propset|pset|ps)) + options='-F --file -q --quiet \ + --targets -R --recursive \ + --revprop --encoding \ + --username --password \ + --no-auth-cache \ + --non-interactive -r \ + --revision --force' + ;; + resolved) + options='--targets -R --recursive -q \ + --quiet' + ;; + revert) + options='--targets -R --recursive -q \ + --quiet' + ;; + @(status|stat|st)) + options='-u --show-updates -v \ + --verbose -N --non-recursive \ + -q --quiet --username \ + --password --no-auth-cache \ + --non-interactive --no-ignore \ + --ignore-externals \ + --incremental --xml' + ;; + @(switch|sw)) + options='--relocate -r --revision -N \ + --non-recursive -q --quiet \ + --username --password \ + --no-auth-cache \ + --non-interactive --diff3-cmd' + ;; + unlock) + options='--targets --force --username \ + --password --no-auth-cache \ + --non-interactive' + ;; + @(update|up)) + options='-r --revision -N \ + --non-recursive -q --quiet \ + --username --password \ + --no-auth-cache \ + --non-interactive \ + --diff3-cmd --ignore-externals' + ;; + esac + options="$options --help -h --config-dir" + + COMPREPLY=( $( compgen -W "$options" -- $cur ) ) + else + if [[ "$command" == @(help|h|\?) ]]; then + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + else + _filedir + fi + fi + fi + + return 0 +} +complete -F _svn $default svn + +_svnadmin() +{ + local cur prev commands options mode + + COMPREPLY=() + cur=`_get_cword` + + commands='create deltify dump help ? hotcopy list-dblogs \ + list-unused-dblogs load lslocks lstxns recover rmlocks \ + rmtxns setlog verify' + + if [[ $COMP_CWORD -eq 1 ]] ; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--version' -- $cur ) ) + else + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + fi + else + prev=${COMP_WORDS[COMP_CWORD-1]} + case $prev in + --config-dir) + _filedir -d + return 0; + ;; + --fs-type) + COMPREPLY=( $( compgen -W 'fsfs bdb' -- $cur ) ) + return 0; + ;; + esac + + command=${COMP_WORDS[1]} + + if [[ "$cur" == -* ]]; then + # possible options for the command + case $command in + create) + options='--bdb-txn-nosync \ + --bdb-log-keep --config-dir \ + --fs-type' + ;; + deltify) + options='-r --revision -q --quiet' + ;; + dump) + options='-r --revision --incremental \ + -q --quiet --deltas' + ;; + hotcopy) + options='--clean-logs' + ;; + load) + options='--ignore-uuid --force-uuid \ + --parent-dir -q --quiet \ + --use-pre-commit-hook \ + --use-post-commit-hook' + ;; + rmtxns) + options='-q --quiet' + ;; + setlog) + options='-r --revision --bypass-hooks' + ;; + esac + + options="$options --help -h" + COMPREPLY=( $( compgen -W "$options" -- $cur ) ) + else + if [[ "$command" == @(help|h|\?) ]]; then + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + else + _filedir + fi + fi + fi + + return 0 +} +complete -F _svnadmin $default svnadmin + +_svnlook() +{ + local cur prev commands options mode + + COMPREPLY=() + cur=`_get_cword` + + commands='author cat changed date diff dirs-changed help ? h history \ + info lock log propget pget pg proplist plist pl tree uuid \ + youngest' + + if [[ $COMP_CWORD -eq 1 ]] ; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--version' -- $cur ) ) + else + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + fi + else + command=${COMP_WORDS[1]} + + if [[ "$cur" == -* ]]; then + # possible options for the command + case $command in + @(author|cat|date|dirs-changed|info|log)) + options='-r --revision -t \ + --transaction' + ;; + changed) + options='-r --revision -t \ + --transaction --copy-info' + ;; + diff) + options='-r --revision -t \ + --transaction \ + --no-diff-deleted \ + --no-diff-added \ + --diff-copy-from' + ;; + history) + options='-r --revision --show-ids' + ;; + prop@(get|list)) + options='-r --revision -t \ + --transaction --revprop' + ;; + tree) + options='-r --revision -t \ + --transaction --show-ids \ + --full-paths' + ;; + esac + + options="$options --help -h" + COMPREPLY=( $( compgen -W "$options" -- $cur ) ) + else + if [[ "$command" == @(help|h|\?) ]]; then + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + else + _filedir + fi + fi + fi + + return 0 +} +complete -F _svnlook $default svnlook +} + +_filedir_xspec() +{ + local IFS cur xspec + + IFS=$'\t\n' + COMPREPLY=() + cur=`_get_cword` + + _expand || return 0 + + # get first exclusion compspec that matches this command + xspec=$( sed -ne $'/^complete .*[ \t]'${1##*/}$'\([ \t]\|$\)/{p;q;}' \ + $BASH_COMPLETION ) + # prune to leave nothing but the -X spec + xspec=${xspec#*-X } + xspec=${xspec%% *} + + local toks=( ) tmp + + while read -r tmp; do + [[ -n $tmp ]] && toks[${#toks[@]}]=$tmp + done < <( compgen -d -- "$(quote_readline "$cur")" ) + + while read -r tmp; do + [[ -n $tmp ]] && toks[${#toks[@]}]=$tmp + done < <( eval compgen -f -X $xspec -- "\$(quote_readline "\$cur")" ) + + COMPREPLY=( "${toks[@]}" ) +} +list=( $( sed -ne '/^# START exclude/,/^# FINISH exclude/p' \ + $BASH_COMPLETION | \ + # read exclusion compspecs + ( + while read line + do + # ignore compspecs that are commented out + if [ "${line#\#}" != "$line" ]; then continue; fi + line=${line%# START exclude*} + line=${line%# FINISH exclude*} + line=${line##*\'} + list=( "${list[@]}" $line ) + done + echo "${list[@]}" + ) + ) ) +# remove previous compspecs +if [ ${#list[@]} -gt 0 ]; then + eval complete -r ${list[@]} + # install new compspecs + eval complete -F _filedir_xspec $filenames "${list[@]}" +fi +unset list + +# source completion directory definitions +if [ -d $BASH_COMPLETION_DIR -a -r $BASH_COMPLETION_DIR -a \ + -x $BASH_COMPLETION_DIR ]; then + for i in $BASH_COMPLETION_DIR/*; do + [[ ${i##*/} != @(*~|*.bak|*.swp|\#*\#|*.dpkg*|.rpm*) ]] && + [ \( -f $i -o -h $i \) -a -r $i ] && . $i + done +fi +unset i + +# source user completion file +[ $BASH_COMPLETION != ~/.bash_completion -a -r ~/.bash_completion ] \ + && . ~/.bash_completion +unset -f have +unset UNAME RELEASE default dirnames filenames have nospace bashdefault \ + plusdirs + +set $BASH_COMPLETION_ORIGINAL_V_VALUE +unset BASH_COMPLETION_ORIGINAL_V_VALUE + +### Local Variables: +### mode: shell-script +### End: diff --git a/bash-5.1/examples/complete/bashcc-1.0.1.tar.gz b/bash-5.1/examples/complete/bashcc-1.0.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d68043581b0d34255b1e104c2b04be90f4fdfcaa GIT binary patch literal 4609 zcmV+c68`NUiwFq&i#$C517cxwXk%k7F)lDJF)nmrascgH>r>lGmd|JX6+OZ;*a?1K z2vrbgA%x6jHx4PAB$WcjC8RdiqKB^}S%w`Qyl*j9I+_p47g zS5`c>?RvY>YP6eA{+OrL+V1S`?%=c4-rZ@@XKVL4|4yGLt=*mWZo9Sfyz|SGR=fSY zz57J${6X}To@ty|kq}R!IKFq@=-PAS?a!d-r#@Fj{nL-gZp4;9@#N#-Xti6d=iA%g z(|^0u-YMuG-`m@ro##(P>+wkV{_}6H{|!-6y0IY+9mh@FFt9v5Bu3M~rZ+K0t9{oV zTahCMzMG6iYq!~HH#@CXr)C%%7=IgDj!4E*9C^};j;vUU!)X%Mk3s@ZP{hQtZ>(#e zGK{06VgIQ6&t`)#Y4aP}w&9M%`MIc%M1^OF%gcQN8W=(}^gCnZDvSe}hZ;ox}KKRrDwA^`M{C&!<<=8MYL@~n-G zr_H;UCS!g-Xm>ZO7vow*&%c;mRK#XZQXKkHOk+8kdcyKt2qG4vFcNm?`w&7do^T=~ zON-Yqc&f17?xsyMk}&k}3nbf{=~!4A3yWh=RB4oci+bdzn90wi8X(n=6z05p=nP2EU34T`0DUe~OAeRVkab@=hPKR9{!=JdREdDmEc z*S@?n(*#jTF}x5aAu)^jLE7U`n8*G8X@5_A2&^lFFc9xi;>(3)QPQ*Xq?ZZR%s?Dz z0W1n8#l9s1DV;?wX?-MHnX$-Cjl(^uUl;&0P( zd^b>QUQ62}=~{s!T%W~WTFJtBebP^pGjjFW@a*)zhHp;Z9(OD0aMMnPNq8fXyoyOX zpIXYS>h;@`!CALbeNmiNV`lK;^!?e#!~S3ensAbU!bLpA`HN*jd6Y5qRx;tQVxqU2 ziQWPey+tN^-(|vI$wcp7CVDHFDC)0Jn;FK?35R(auGWmN0OEx#o_H#!=Hs zpyuY48#ME&m8YWfvWfWC45psPCVGoS6|6Gu05_gq#YvPxBoEmTUC|ML`d3QOBHVSCT_JNg<=cK%rNkig6ex>3GI4l+r~3 zciMYD{B+uXJvisDNA&#?n1#@;p1&s2+C}lhVlmi1e*gA!w<;=C!f`DFQU4^&O2L>- zQLl>%e$_;cAWILhtEn7lKy21GYX!K9M5WlSoq&&FiB<%ohwy*>i&}oS68kb|O8yH- zpcm7(0#khZwsH&=^~8Kck!U+wLbb`&5O1*^0ZKsrh}Jt%Sd@vMJ*yh;&CB&De6wGZopz%1$lA?<-s z(3^URyBrGqq#Wb^XqWFjn#=qDDlUJINOHBlaXq$3k!p?=o1n@=Q4`+8Y4KB+UlLdm zikOL&jA=#OC~N#y4r%ByGQfh_YxB6@QC7N$^kT`Ql%EG>5siv6p*dPlUpIL2`BRel zk_i?Osd+7J92u^x2Bfc$H2*Pv+*^OhSMSo&gDOpdL`=n_uRg9QmVpDGYGEq(ONEK< zTqK1q!RGf0M%e5FwOy)dQGX*!g+Vi_KSeE(S#W$kW=@^FUuMg*e&cU-Wvb)&Z z7fz^B6!kXh0TM`CoX?xV<(@DNm9Q*F9KIWTI_?)!p?X7E(44EHr10jmxtJMM+7qoj z@vVXsEJ1qrJxJ{wk`o4!l3b&SBsk1F8|t^-x{GfjrZWBILQ5i(i!e_D+nYL4m8}C8 zk#C?nTmNC^TYH9?Hy+YADHbG^6j7mVK$%4~k6wdTQ$ZFf35t;PQDZhL#}|3BlYKi*?doxdkaMr0gL6YOg7w$wAOLfQwesft_#07Nk=&iLR^5pSkPl?@?y ziT;VDh9hJ5n)1X+5G;L6$t_+e06?#066X^q6 z-bWszlCs3eaw7;sde&7KK{$Mhh_buxp%OP-?3tpGWy>ut#S`W(eJ7aiC~@tnXAux= ztFopw$f1CK9a#WJ?}{C3X(2$$SZ&nC)~y7i*c`Yt!&mz>H$WJ*Y5SyEiA6ZdyZtPN zhN0xG1#QLg6dOA_vQ2_F%DAO9{sEf~#OYg(rjI0V;uoR2RGGI#x@C(+VloEhZ&tsJ&l!(i% z-o_&2Xc`10m6hiy9-T8lkS8P761AD9F=hiSO|eK15DK=*VQ>wLf(bwaYAeIWLaU|| zSe3(8MvJbtgfpdIv~8!O@tYu=(Q!vSg)y+cNuNHL2<_a)_+Xs$!HCOju=Tu`5fpc8 zxgOguCab#uEUztOWjTUwuRtY$uuxbWkY)9?{7Up`M@&gM?TqOgP2Ac_^ zKjLE;=!GMka9nVogwb4?TOesq!z7G}%Y2xO%MK^_;(0*NTV%u>@>J!qS#Sy1F(Jl$ zaTQvLNhl<2Zl%x?Dp}GgH74#2`2}NNpl*vaF3g51@y#@#X_l1(Bp}A39)cSuM29V%}PD;z67Q%}4D3HXdDJKe8d3yVQ~2OWAN7tp^SyYYGJ3& zYTAkJ!9ZrDnz?dm6-3D4<`ZcYZ5?jPDkQ61%>Sx!qv{80gE3rghFLcdpUv#ULBf&wLseCn$$vQWaLL>NHmf`y{Ou%4*n59m0y>~XeU*)D9r zmCSNJO(!+dJJIdYwiJ~Wl}qqPOGmvF4kJv}FF=#$RL>LG-{)moKT zy75+NT1o?n%%lY{Iu;%`!eO(utwr9Mv#Y$H?vIr4p~|h zUU6FH$$?DEO>sg{V48l&a!9nkdor;cE3tA7W)_B09B~}vTt)P5??o0BU+OSVOPQ-HO4BxRkeJ6fB8JwN=KZEUdqa~`UztdLzo!TA>36v0s z1AWPatJ{9q$EVi<`Sx_OCHzD=1)0;5o2Qn=jieMuC&O_TxwnMl!vx8MP`q)!&?<^U z2)>~z<50~YoAJw{g!Rd0p=0#OCVYhbp^DPv+@PD1GEP(*j5j`ckA@RiBz@ih!}s-3?-lK5 zsV0C!Lq3)lQbEh*PcY9Ar8;@sKFOcmC;eA_O8x)RvB%@#cfoqT6TC*Fm z`4yW1L>W=(h`UXF>Qz(6T$K_~K66Vi>TWENyS^*%JDw%~_y2$R|L*$y@25P={_o%8 z|Gg#u&)TDgf4~3tewY9IW&ih={oh~v|NrG#@_&6C@|ZXt@c&MGck%pxyY+l`?f*aH z(f&V?k*6Ihy@9gq{grQ`E86=8wdZIXU?=Sn(Dz2FV(va-c{8UFAOJpyy>hGy)H&t`}Fw&EN#$w`t|IYs4*U) z8l<#}FA`TV^QCCj=vryDLetMH?xm2wiS&o4i}q!WQETMq&z>>l&LxR0T|*Q2`ntZc z#8da_q7rfIgl>{DN^&Bm#_lNDSFcD~DtLCq!Ej&Sa*k~aVyk9@HASl8qqroKWnr!& zSjTMIkehUw-AvVFb}vl)`0vmSs-`fva(FciUYHl8W8z3(Cw@hZbisQ~eHB6fr*@Uh z2lApul%h==#In`oX$Y|I_?q+s3-Xg5mLy5)YC0Op2y=h?QcV|9`XY1Ck~J~gV3W|Z z6V2&ppdMY^-f<%?`EBkO!oBz(r-0)fQ}Zw zx(}|&s#^Wu2ne&-z(E>u3F}pY^kT*3bI+GoSwf%c*X`08jt`c})Dc literal 0 HcmV?d00001 diff --git a/bash-5.1/examples/complete/cdfunc b/bash-5.1/examples/complete/cdfunc new file mode 100644 index 0000000..439edaf --- /dev/null +++ b/bash-5.1/examples/complete/cdfunc @@ -0,0 +1,76 @@ +# cdfunc - example completion function for cd +# +# based on the cd completion function from the bash_completion package +# +# Chet Ramey +# +# Copyright 2011 Chester Ramey +# +# 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. +# +# TThis 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. + +_comp_cd() +{ + local IFS=$' \t\n' # normalize IFS + local cur _skipdot _cdpath + local i j k + + # Tilde expansion, with side effect of expanding tilde to full pathname + case "$2" in + \~*) eval cur="$2" ;; + *) cur=$2 ;; + esac + + # no cdpath or absolute pathname -- straight directory completion + if [[ -z "${CDPATH:-}" ]] || [[ "$cur" == @(./*|../*|/*) ]]; then + # compgen prints paths one per line; could also use while loop + IFS=$'\n' + COMPREPLY=( $(compgen -d -- "$cur") ) + IFS=$' \t\n' + # CDPATH+directories in the current directory if not in CDPATH + else + IFS=$'\n' + _skipdot=false + # preprocess CDPATH to convert null directory names to . + _cdpath=${CDPATH/#:/.:} + _cdpath=${_cdpath//::/:.:} + _cdpath=${_cdpath/%:/:.} + for i in ${_cdpath//:/$'\n'}; do + if [[ $i -ef . ]]; then _skipdot=true; fi + k="${#COMPREPLY[@]}" + for j in $( compgen -d -- "$i/$cur" ); do + COMPREPLY[k++]=${j#$i/} # cut off directory + done + done + $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") ) + IFS=$' \t\n' + fi + + # variable names if appropriate shell option set and no completions + if shopt -q cdable_vars && [[ ${#COMPREPLY[@]} -eq 0 ]]; then + COMPREPLY=( $(compgen -v -- "$cur") ) + fi + + # append slash to passed directory name that is the only completion. + # readline will not do this if we complete from CDPATH + if [[ ${#COMPREPLY[@]} -eq 1 ]]; then + i=${COMPREPLY[0]} # shorthand + if [[ "$cur" == "$i" ]] && [[ "$i" != "*/" ]]; then + COMPREPLY[0]+=/ + fi + fi + return 0 +} + +complete -o filenames -o nospace -o bashdefault -F _comp_cd cd diff --git a/bash-5.1/examples/complete/complete-examples b/bash-5.1/examples/complete/complete-examples new file mode 100644 index 0000000..8a0746d --- /dev/null +++ b/bash-5.1/examples/complete/complete-examples @@ -0,0 +1,512 @@ +# +# Completion examples +# +# Chet Ramey +# +# Copyright 2002 Chester Ramey +# +# 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. +# +# TThis 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. + +# +# This encapsulates the default bash completion code +# call with the word to be completed as $1 +# +# Since programmable completion does not use the bash default completions +# or the readline default of filename completion when the compspec does +# not generate any matches, this may be used as a `last resort' in a +# completion function to mimic the default bash completion behavior. +# +_bash_def_completion () +{ + local h t + COMPREPLY=() + + # command substitution + if [[ "$1" == \$\(* ]]; then + t=${1#??} + COMPREPLY=( $(compgen -c -P '$(' $t) ) + fi + # variables with a leading `${' + if [ ${#COMPREPLY[@]} -eq 0 ] && [[ "$1" == \$\{* ]]; then + t=${1#??} + COMPREPLY=( $(compgen -v -P '${' -S '}' $t) ) + fi + # variables with a leading `$' + if [ ${#COMPREPLY[@]} -eq 0 ] && [[ "$1" == \$* ]]; then + t=${1#?} + COMPREPLY=( $(compgen -v -P '$' $t ) ) + fi + # username expansion + if [ ${#COMPREPLY[@]} -eq 0 ] && [[ "$1" == ~* ]] && [[ "$1" != */* ]]; then + t=${1#?} + COMPREPLY=( $( compgen -u -P '~' $t ) ) + fi + # hostname + if [ ${#COMPREPLY[@]} -eq 0 ] && [[ "$1" == *@* ]]; then + h=${1%%@*} + t=${1#*@} + COMPREPLY=( $( compgen -A hostname -P "${h}@" $t ) ) + fi + # glob pattern + if [ ${#COMPREPLY[@]} -eq 0 ]; then + # sh-style glob pattern + if [[ $1 == *[*?[]* ]]; then + COMPREPLY=( $( compgen -G "$1" ) ) + # ksh-style extended glob pattern - must be complete + elif shopt -q extglob && [[ $1 == *[?*+\!@]\(*\)* ]]; then + COMPREPLY=( $( compgen -G "$1" ) ) + fi + fi + + # final default is filename completion + if [ ${#COMPREPLY[@]} -eq 0 ]; then + COMPREPLY=( $(compgen -f "$1" ) ) + fi +} + +# +# Return 1 if $1 appears to contain a redirection operator. Handles backslash +# quoting (barely). +# +_redir_op() +{ + case "$1" in + *\\'[\<\>]'*) return 1;; + *[\<\>]*) return 0;; + *) return 1;; + esac +} + + +# _redir_test tests the current word ($1) and the previous word ($2) for +# redirection operators and does filename completion on the current word +# if either one contains a redirection operator +_redir_test() +{ + if _redir_op "$1" ; then + COMPREPLY=( $( compgen -f "$1" ) ) + return 0 + elif _redir_op "$2" ; then + COMPREPLY=( $( compgen -f "$1" ) ) + return 0 + fi + return 1 +} + +# optional, but without this you can't use extended glob patterns +shopt -s extglob + +# +# Easy ones for the shell builtins +# +# nothing for: alias, break, continue, dirs, echo, eval, exit, getopts, +# let, logout, popd, printf, pwd, return, shift, suspend, test, times, +# umask +# + +complete -f -- . source +complete -A enabled builtin +complete -d cd + +# this isn't exactly right yet -- needs to skip shell functions and +# do $PATH lookup (or do compgen -c and filter out matches that also +# appear in compgen -A function) +complete -c command + +# could add -S '=', but that currently screws up because readline appends +# a space unconditionally + +complete -v export local readonly +complete -A helptopic help # currently same as builtins + +complete -d pushd + +complete -A shopt shopt + +complete -c type + +complete -a unalias +complete -v unset + +# +# Job control builtins: fg, bg, disown, kill, wait +# kill not done yet +# + +complete -A stopped -P '%' bg +complete -j -P '%' fg jobs disown + +# this is not quite right at this point + +_wait_func () +{ + local cur + cur=${COMP_WORDS[COMP_CWORD]} + + case "$cur" in + %*) COMPREPLY=( $(compgen -A running -P '%' ${cur#?} ) ) ;; + [0-9]*) COMPREPLY=( $(jobs -p | grep ^${cur}) ) ;; + *) COMPREPLY=( $(compgen -A running -P '%') $(jobs -p) ) + ;; + esac +} +complete -F _wait_func wait + +# +# more complicated things, several as yet unimplemented +# + +#complete -F _bind_func bind + +_declare_func() +{ + local cur prev nflag opts + + cur=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + + COMPREPLY=() + if (( $COMP_CWORD <= 1 )) || [[ $cur == '-' ]]; then + COMPREPLY=(-a -f -F -i -p -r -t -x) + return 0; + fi + if [[ $cur == '+' ]]; then + COMPREPLY=(+i +t +x) + return 0; + fi + if [[ $prev == '-p' ]]; then + COMPREPLY=( $(compgen -v $cur) ) + return 0; + fi + return 1 +} +complete -F _declare_func declare typeset + +_enable_func() +{ + local cur prev nflag opts + + cur=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + + COMPREPLY=() + if (( $COMP_CWORD <= 1 )) || [[ $cur == '-' ]]; then + COMPREPLY=(-a -d -f -n -p -s) + return 0; + fi + if [[ $prev == '-f' ]]; then + COMPREPLY=( $( compgen -f $cur ) ) + return 0; + fi + for opts in "${COMP_WORDS[@]}" ; do + if [[ $opts == -*n* ]]; then nflag=1; fi + done + + if [ -z "$nflag" ] ; then + COMPREPLY=( $( compgen -A enabled $cur ) ) + else + COMPREPLY=( $( compgen -A disabled $cur ) ) + fi + return 0; +} +complete -F _enable_func enable + +_exec_func() +{ + local cur prev + + cur=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + + if (( $COMP_CWORD <= 1 )) || [[ $cur == '-' ]]; then + COMPREPLY=(-a -c -l) + return 0; + fi + if [[ $prev != -*a* ]]; then + COMPREPLY=( $( compgen -c $cur ) ) + return 0 + fi + return 1; +} +complete -F _exec_func exec + +_fc_func() +{ + local cur prev + + cur=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + + if (( $COMP_CWORD <= 1 )) || [[ $cur == '-' ]]; then + COMPREPLY=(-e -n -l -r -s) + return 0; + fi + if [[ $prev == -*e ]]; then + COMPREPLY=( $(compgen -c $cur) ) + return 0 + fi + return 1 +} +complete -F _fc_func fc + +_hash_func() +{ + local cur prev + + cur=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + + if (( $COMP_CWORD <= 1 )) || [[ $cur == '-' ]]; then + COMPREPLY=(-p -r -t) + return 0; + fi + + if [[ $prev == '-p' ]]; then + COMPREPLY=( $( compgen -f $cur ) ) + return 0; + fi + COMPREPLY=( $( compgen -c $cur ) ) + return 0 +} +complete -F _hash_func hash + +_history_func() +{ + local cur prev + + cur=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + + COMPREPLY=() + if (( $COMP_CWORD <= 1 )) || [[ $cur == '-' ]]; then + COMPREPLY=(-a -c -d -n -r -w -p -s) + return 0; + fi + if [[ $prev == -[anrw] ]]; then + COMPREPLY=( $( compgen -f $cur ) ) + fi + return 0 +} +complete -F _history_func history + +#complete -F _read_func read + +_set_func () +{ + local cur prev + + cur=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + + COMPREPLY=() + + _redir_test "$cur" "$prev" && return 0; + + if (( $COMP_CWORD <= 1 )) || [[ $cur == '-' ]]; then + COMPREPLY=(-a -b -e -f -k -m -n -o -p -t -u -v -x -B -C -H -P --) + return 0; + fi + if [[ $cur == '+' ]]; then + COMPREPLY=(+a +b +e +f +k +m +n +o +p +t +u +v +x +B +C +H +P) + return 0; + fi + if [[ $prev == [+-]o ]]; then + COMPREPLY=( $(compgen -A setopt $cur) ) + return 0; + fi + return 1; +} +complete -F _set_func set + +_trap_func () +{ + local cur + cur=${COMP_WORDS[COMP_CWORD]} + + if (( $COMP_CWORD <= 1 )) || [[ $cur == '-' ]]; then + COMPREPLY=(-l -p) + return 0; + fi + COMPREPLY=( $( compgen -A signal ${cur}) ) + return 0 +} +complete -F _trap_func trap + +# +# meta-completion (completion for complete/compgen) +# +_complete_meta_func() +{ + local cur prev cmd + COMPREPLY=() + + cmd=$1 + + cur=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + + _redir_test "$cur" "$prev" && return 0; + + if (( $COMP_CWORD <= 1 )) || [[ "$cur" == '-' ]]; then + case "$cmd" in + complete) COMPREPLY=(-a -b -c -d -e -f -j -k -s -v -u -r -p -A -G -W -P -S -X -F -C);; + compgen) COMPREPLY=(-a -b -c -d -e -f -j -k -s -v -u -A -G -W -P -S -X -F -C);; + esac + return 0 + fi + + if [[ $prev == -A ]]; then + COMPREPLY=(alias arrayvar binding builtin command directory \ +disabled enabled export file 'function' helptopic hostname job keyword \ +running service setopt shopt signal stopped variable) + return 0 + elif [[ $prev == -F ]]; then + COMPREPLY=( $( compgen -A function $cur ) ) + elif [[ $prev == -C ]]; then + COMPREPLY=( $( compgen -c $cur ) ) + else + COMPREPLY=( $( compgen -c $cur ) ) + fi + return 0 +} +complete -F _complete_meta_func complete compgen + +# +# some completions for shell reserved words +# +#complete -c -k time do if then else elif '{' + +# +# external commands +# + +complete -e printenv + +complete -c nohup exec nice eval trace truss strace sotruss gdb + +_make_targets () +{ + local mdef makef gcmd cur prev i + + COMPREPLY=() + cur=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + + # if prev argument is -f, return possible filename completions. + # we could be a little smarter here and return matches against + # `makefile Makefile *.mk', whatever exists + case "$prev" in + -*f) COMPREPLY=( $(compgen -f $cur ) ); return 0;; + esac + + # if we want an option, return the possible posix options + case "$cur" in + -) COMPREPLY=(-e -f -i -k -n -p -q -r -S -s -t); return 0;; + esac + + # make reads `makefile' before `Makefile' + # GNU make reads `GNUmakefile' before all other makefiles, but we + # check that we're completing `gmake' before checking for it + if [ -f GNUmakefile ] && [ ${COMP_WORDS[0]} == gmake ]; then + mdef=GNUmakefile + elif [ -f makefile ]; then + mdef=makefile + elif [ -f Makefile ]; then + mdef=Makefile + else + mdef=*.mk # local convention + fi + + # before we scan for targets, see if a makefile name was specified + # with -f + for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do + if [[ ${COMP_WORDS[i]} == -*f ]]; then + eval makef=${COMP_WORDS[i+1]} # eval for tilde expansion + break + fi + done + + [ -z "$makef" ] && makef=$mdef + + # if we have a partial word to complete, restrict completions to + # matches of that word + if [ -n "$2" ]; then gcmd='grep "^$2"' ; else gcmd=cat ; fi + + # if we don't want to use *.mk, we can take out the cat and use + # test -f $makef and input redirection + COMPREPLY=( $(cat $makef 2>/dev/null | awk 'BEGIN {FS=":"} /^[^.# ][^=]*:/ {print $1}' | tr -s ' ' '\012' | sort -u | eval $gcmd ) ) +} +complete -F _make_targets -X '+($*|*.[cho])' make gmake pmake + +_umount_func () +{ + COMPREPLY=( $(mount | awk '{print $1}') ) +} +complete -F _umount_func umount + +_configure_func () +{ + case "$2" in + -*) ;; + *) return ;; + esac + + case "$1" in + \~*) eval cmd=$1 ;; + *) cmd="$1" ;; + esac + + COMPREPLY=( $("$cmd" --help | awk '{if ($1 ~ /--.*/) print $1}' | grep ^"$2" | sort -u) ) +} +complete -F _configure_func configure + +complete -W '"${GROUPS[@]}"' newgrp + +complete -f chown ln more cat +complete -d mkdir rmdir +complete -f strip + +complete -f -X '*.gz' gzip +complete -f -X '*.bz2' bzip2 +complete -f -X '*.Z' compress +complete -f -X '!*.+(gz|tgz|Gz)' gunzip gzcat zcat zmore +complete -f -X '!*.Z' uncompress zmore zcat +complete -f -X '!*.bz2' bunzip2 bzcat +complete -f -X '!*.zip' unzip +complete -f -X '!*.+(gif|jpg|jpeg|GIF|JPG|JPEG|bmp)' xv + +complete -f -X '!*.pl' perl perl5 + +complete -A hostname rsh telnet rlogin ftp ping xping host traceroute nslookup +complete -A hostname rxterm rxterm3 rxvt2 + +complete -u su +complete -g newgrp groupdel groupmod + +complete -f -X '!*.+(ps|PS)' gs gv ghostview psselect pswrap +complete -f -X '!*.+(dvi|DVI)' dvips xdvi dviselect dvitype catdvi +complete -f -X '!*.+(pdf|PDF)' acroread4 +complete -f -X '!*.texi*' makeinfo texi2dvi texi2html +complete -f -X '!*.+(tex|TEX)' tex latex slitex + +complete -f -X '!*.+(mp3|MP3)' mpg123 +complete -f -X '!*.+(htm|html)' links w3m lynx + +# +# other possibilities, left as exercises +# +#complete -F _find_func find +#complete -F _man_func man +#complete -F _stty_func stty diff --git a/bash-5.1/examples/functions/array-stuff b/bash-5.1/examples/functions/array-stuff new file mode 100644 index 0000000..e6316c7 --- /dev/null +++ b/bash-5.1/examples/functions/array-stuff @@ -0,0 +1,122 @@ +# +# Chet Ramey +# +# Copyright 1999 Chester Ramey +# +# 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. +# +# TThis 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. + +# usage: reverse arrayname +reverse() +{ + local -a R + local -i i + local rlen temp + + # make r a copy of the array whose name is passed as an arg + eval R=\( \"\$\{$1\[@\]\}\" \) + + # reverse R + rlen=${#R[@]} + + for ((i=0; i < rlen/2; i++ )) + do + temp=${R[i]} + R[i]=${R[rlen-i-1]} + R[rlen-i-1]=$temp + done + + # and assign R back to array whose name is passed as an arg + eval $1=\( \"\$\{R\[@\]\}\" \) +} + +A=(1 2 3 4 5 6 7) +echo "${A[@]}" +reverse A +echo "${A[@]}" +reverse A +echo "${A[@]}" + +# unset last element of A +alen=${#A[@]} +unset A[$alen-1] +echo "${A[@]}" + +# ashift -- like shift, but for arrays + +ashift() +{ + local -a R + local n + + case $# in + 1) n=1 ;; + 2) n=$2 ;; + *) echo "$FUNCNAME: usage: $FUNCNAME array [count]" >&2 + exit 2;; + esac + + # make r a copy of the array whose name is passed as an arg + eval R=\( \"\$\{$1\[@\]\}\" \) + + # shift R + R=( "${R[@]:$n}" ) + + # and assign R back to array whose name is passed as an arg + eval $1=\( \"\$\{R\[@\]\}\" \) +} + +ashift A 2 +echo "${A[@]}" + +ashift A +echo "${A[@]}" + +ashift A 7 +echo "${A[@]}" + +# Sort the members of the array whose name is passed as the first non-option +# arg. If -u is the first arg, remove duplicate array members. +array_sort() +{ + local -a R + local u + + case "$1" in + -u) u=-u ; shift ;; + esac + + if [ $# -eq 0 ]; then + echo "array_sort: argument expected" >&2 + return 1 + fi + + # make r a copy of the array whose name is passed as an arg + eval R=\( \"\$\{$1\[@\]\}\" \) + + # sort R + R=( $( printf "%s\n" "${A[@]}" | sort $u) ) + + # and assign R back to array whose name is passed as an arg + eval $1=\( \"\$\{R\[@\]\}\" \) + return 0 +} + +A=(3 1 4 1 5 9 2 6 5 3 2) +array_sort A +echo "${A[@]}" + +A=(3 1 4 1 5 9 2 6 5 3 2) +array_sort -u A +echo "${A[@]}" diff --git a/bash-5.1/examples/functions/array-to-string b/bash-5.1/examples/functions/array-to-string new file mode 100644 index 0000000..0d2fbe5 --- /dev/null +++ b/bash-5.1/examples/functions/array-to-string @@ -0,0 +1,15 @@ +#! /bin/bash + +# Format: array_to_string vname_of_array vname_of_string separator +array_to_string() +{ + (( ($# < 2) || ($# > 3) )) && { + "$FUNCNAME: usage: $FUNCNAME arrayname stringname [separator]" + return 2 + } + + local array=$1 string=$2 + ((3==$#)) && [[ $3 = ? ]] && local IFS="${3}${IFS}" + eval $string="\"\${$array[*]}\"" + return 0 +} diff --git a/bash-5.1/examples/functions/arrayops.bash b/bash-5.1/examples/functions/arrayops.bash new file mode 100644 index 0000000..d34353a --- /dev/null +++ b/bash-5.1/examples/functions/arrayops.bash @@ -0,0 +1,146 @@ +# arrayops.bash --- hide some of the nasty syntax for manipulating bash arrays +# Author: Noah Friedman +# Created: 2016-07-08 +# Public domain + +# $Id: arrayops.bash,v 1.3 2016/07/28 15:38:55 friedman Exp $ + +# Commentary: + +# These functions try to tame the syntactic nightmare that is bash array +# syntax, which makes perl's almost look reasonable. +# +# For example the apush function below lets you write: +# +# apush arrayvar newval +# +# instead of +# +# ${arrayvar[${#arrayvar[@]}]}=newval +# +# Because seriously, you've got to be kidding me. + +# These functions avoid the use of local variables as much as possible +# (especially wherever modification occurs) because those variable names +# might shadow the array name passed in. Dynamic scope! + +# Code: + +#:docstring apush: +# Usage: apush arrayname val1 {val2 {...}} +# +# Appends VAL1 and any remaining arguments to the end of the array +# ARRAYNAME as new elements. +#:end docstring: +apush() +{ + eval "$1=(\"\${$1[@]}\" \"\${@:2}\")" +} + +#:docstring apop: +# Usage: apop arrayname {n} +# +# Removes the last element from ARRAYNAME. +# Optional argument N means remove the last N elements. +#:end docstring: +apop() +{ + eval "$1=(\"\${$1[@]:0:\${#$1[@]}-${2-1}}\")" +} + +#:docstring aunshift: +# Usage: aunshift arrayname val1 {val2 {...}} +# +# Prepends VAL1 and any remaining arguments to the beginning of the array +# ARRAYNAME as new elements. The new elements will appear in the same order +# as given to this function, rather than inserting them one at a time. +# +# For example: +# +# foo=(a b c) +# aunshift foo 1 2 3 +# => foo is now (1 2 3 a b c) +# but +# +# foo=(a b c) +# aunshift foo 1 +# aunshift foo 2 +# aunshift foo 3 +# => foo is now (3 2 1 a b c) +# +#:end docstring: +aunshift() +{ + eval "$1=(\"\${@:2}\" \"\${$1[@]}\")" +} + +#:docstring ashift: +# Usage: ashift arrayname {n} +# +# Removes the first element from ARRAYNAME. +# Optional argument N means remove the first N elements. +#:end docstring: +ashift() +{ + eval "$1=(\"\${$1[@]: -\${#$1[@]}+${2-1}}\")" +} + +#:docstring aset: +# Usage: aset arrayname idx newval +# +# Assigns ARRAYNAME[IDX]=NEWVAL +#:end docstring: +aset() +{ + eval "$1[\$2]=${@:3}" +} + +#:docstring aref: +# Usage: aref arrayname idx {idx2 {...}} +# +# Echoes the value of ARRAYNAME at index IDX to stdout. +# If more than one IDX is specified, each one is echoed. +# +# Unfortunately bash functions cannot return arbitrary values in the usual way. +#:end docstring: +aref() +{ + eval local "v=(\"\${$1[@]}\")" + local x + for x in ${@:2} ; do echo "${v[$x]}"; done +} + +#:docstring aref: +# Usage: alen arrayname +# +# Echoes the length of the number of elements in ARRAYNAME. +# +# It also returns number as a numeric value, but return values are limited +# by a maximum of 255 so don't rely on this unless you know your arrays are +# relatively small. +#:end docstring: +alen() +{ + eval echo "\${#$1[@]}" + eval return "\${#$1[@]}" +} + +#:docstring anreverse: +# Usage: anreverse arrayname +# +# Reverse the order of the elements in ARRAYNAME. +# The array variable is altered by this operation. +#:end docstring: +anreverse() +{ + eval set $1 "\"\${$1[@]}\"" + eval unset $1 + while [ $# -gt 1 ]; do + eval "$1=(\"$2\" \"\${$1[@]}\")" + set $1 "${@:3}" + done +} + +#provide arrayops + +# arrayops.bash ends here diff --git a/bash-5.1/examples/functions/autoload b/bash-5.1/examples/functions/autoload new file mode 100644 index 0000000..cb3a673 --- /dev/null +++ b/bash-5.1/examples/functions/autoload @@ -0,0 +1,111 @@ +# +# An almost ksh-compatible `autoload'. A function declared as `autoload' will +# be read in from a file the same name as the function found by searching the +# $FPATH (which works the same as $PATH), then that definition will be run. +# +# To do this without source support, we define a dummy function that, when +# executed, will load the file (thereby re-defining the function), then +# execute that newly-redefined function with the original arguments. +# +# It's not identical to ksh because ksh apparently does lazy evaluation +# and looks for the file to load from only when the function is referenced. +# This one requires that the file exist when the function is declared as +# `autoload'. +# +# usage: autoload func [func...] +# +# The first cut of this was by Bill Trost, trost@reed.bitnet +# +# Chet Ramey +# chet@ins.CWRU.Edu + +# +# Declare a function ($1) to be autoloaded from a file ($2) when it is first +# called. This defines a `temporary' function that will `.' the file +# containing the real function definition, then execute that new definition with +# the arguments given to this `fake' function. The autoload function defined +# by the file and the file itself *must* be named identically. +# + +aload() +{ + eval $1 '() { . '$2' ; '$1' "$@" ; return $? ; }' +} + +# +# Search $FPATH for a file the same name as the function given as $1, and +# autoload the function from that file. There is no default $FPATH. +# + +autoload() +{ + # + # Save the list of functions; we're going to blow away the arguments + # in a second. If any of the names contain white space, TFB. + # + + local args="$*" + + # + # This should, I think, list the functions marked as autoload and not + # yet defined, but we don't have enough information to do that here. + # + if [ $# -eq 0 ] ; then + echo "usage: autoload function [function...]" >&2 + return 1 + fi + + # + # If there is no $FPATH, there is no work to be done + # + + if [ -z "$FPATH" ] ; then + echo autoload: FPATH not set or null >&2 + return 1 + fi + + # + # This treats FPATH exactly like PATH: a null field anywhere in the + # FPATH is treated the same as the current directory. + # + # The path splitting command is taken from Kernighan and Pike + # + +# fp=$(echo $FPATH | sed 's/^:/.:/ +# s/::/:.:/g +# s/:$/:./ +# s/:/ /g') + + # replaced with builtin mechanisms 2001 Oct 10 + + fp=${FPATH/#:/.:} + fp=${fp//::/:.:} + fp=${fp/%:/:.} + fp=${fp//:/ } + + for FUNC in $args ; do + # + # We're blowing away the arguments to autoload here... + # We have to; there are no arrays (well, there are, but + # this doesn't use them yet). + # + set -- $fp + + while [ $# -ne 0 ] ; do + if [ -f $1/$FUNC ] ; then + break # found it! + fi + shift + done + + if [ $# -eq 0 ] ; then + echo "$FUNC: autoload function not found" >&2 + continue + fi + +# echo auto-loading $FUNC from $1/$FUNC + aload $FUNC $1/$FUNC + done + + return 0 +} diff --git a/bash-5.1/examples/functions/autoload.v2 b/bash-5.1/examples/functions/autoload.v2 new file mode 100644 index 0000000..e29c695 --- /dev/null +++ b/bash-5.1/examples/functions/autoload.v2 @@ -0,0 +1,192 @@ +# +# An almost ksh-compatible `autoload'. A function declared as `autoload' will +# be read in from a file the same name as the function found by searching the +# $FPATH (which works the same as $PATH), then that definition will be run. +# +# To do this without source support, we define a dummy function that, when +# executed, will load the file (thereby re-defining the function), then +# execute that newly-redefined function with the original arguments. +# +# It's not identical to ksh because ksh apparently does lazy evaluation +# and looks for the file to load from only when the function is referenced. +# This one requires that the file exist when the function is declared as +# `autoload'. +# +# usage: autoload [-pu] [func ...] +# +# options: +# -p print in a format that can be reused as input +# -u unset each function and remove it from the autoload list +# +# The first cut of this was by Bill Trost, trost@reed.edu +# +# Chet Ramey +# chet@ins.CWRU.Edu + +unset _AUTOLOADS +_aindex=0 + +# +# Declare a function ($1) to be autoloaded from a file ($2) when it is first +# called. This defines a `temporary' function that will `.' the file +# containing the real function definition, then execute that new definition with +# the arguments given to this `fake' function. The autoload function defined +# by the file and the file itself *must* be named identically. +# + +_aload() +{ + eval $1 '() { . '$2' ; '$1' "$@" ; return $? ; }' + _autoload_addlist "$1" +} + +_autoload_addlist() +{ + local i=0 + + while (( i < $_aindex )); do + case "${_AUTOLOADS[i]}" in + "$1") return 1 ;; + esac + (( i += 1 )) + done + _AUTOLOADS[_aindex]="$1" + (( _aindex += 1 )) + return 0 +} + +_autoload_dump() +{ + local func + + for func in ${_AUTOLOADS[@]}; do + [ -n "$1" ] && echo -n "autoload " + echo "$func" + done +} + +# Remove $1 from the list of autoloaded functions +_autoload_remove_one() +{ + local i=0 nnl=0 + local -a nlist + + while (( i < _aindex )); do + case "${_AUTOLOADS[i]}" in + "$1") ;; + *) nlist[nnl]="${_AUTOLOADS[i]}" ; (( nnl += 1 ));; + esac + (( i += 1 )) + done + unset _AUTOLOADS _aindex + eval _AUTOLOADS=( ${nlist[@]} ) + _aindex=$nnl +} + +# Remove all function arguments from the list of autoloaded functions +_autoload_remove() +{ + local func i es=0 + + # first unset the autoloaded functions + for func; do + i=0 + while (( i < _aindex )); do + case "${_AUTOLOADS[i]}" in + "$func") unset -f $func ; break ;; + esac + (( i += 1 )) + done + if (( i == _aindex )); then + echo "autoload: $func: not an autoloaded function" >&2 + es=1 + fi + done + + # then rebuild the list of autoloaded functions + for func ; do + _autoload_remove_one "$func" + done + + return $es +} + +# +# Search $FPATH for a file the same name as the function given as $1, and +# autoload the function from that file. There is no default $FPATH. +# + +autoload() +{ + local -a fp + local _autoload_unset nfp i + + if (( $# == 0 )) ; then + _autoload_dump + return 0 + fi + + OPTIND=1 + while getopts pu opt + do + case "$opt" in + p) _autoload_dump printable; return 0;; + u) _autoload_unset=y ;; + *) echo "autoload: usage: autoload [-pu] [function ...]" >&2 + return 1 ;; + esac + done + + shift $(( $OPTIND - 1 )) + + if [ -n "$_autoload_unset" ]; then + _autoload_remove "$@" + return $? + fi + + # + # If there is no $FPATH, there is no work to be done + # + + if [ -z "$FPATH" ] ; then + echo "autoload: FPATH not set or null" >&2 + return 1 + fi + + # + # This treats FPATH exactly like PATH: a null field anywhere in the + # FPATH is treated the same as the current directory. + # + # This turns $FPATH into an array, substituting `.' for `' + # + eval fp=( $( + IFS=':' + set -- ${FPATH} + for p in "$@" ; do echo -n "${p:-.} "; done + ) + ) + + nfp=${#fp[@]} + + for FUNC ; do + i=0; + while (( i < nfp )) ; do + if [ -f ${fp[i]}/$FUNC ] ; then + break # found it! + fi + (( i += 1 )) + done + + if (( i == nfp )) ; then + echo "autoload: $FUNC: autoload function not found" >&2 + es=1 + continue + fi + +# echo auto-loading $FUNC from ${fp[i]}/$FUNC + _aload $FUNC ${fp[i]}/$FUNC + es=0 + done + + return $es +} diff --git a/bash-5.1/examples/functions/autoload.v3 b/bash-5.1/examples/functions/autoload.v3 new file mode 100644 index 0000000..b1e5dfe --- /dev/null +++ b/bash-5.1/examples/functions/autoload.v3 @@ -0,0 +1,125 @@ +#From: Mark Kennedy () +#Message-ID: <35E2B899.63A02DF5@ny.ubs.com> +#Date: Tue, 25 Aug 1998 09:14:01 -0400 +#To: chet@nike.ins.cwru.edu +#Subject: a newer version of the ksh-style 'autoload' + +#enclosed you'll find 'autoload.v3', a version of the autoloader +#that emulates the ksh semantics of delaying the resolution (and loading) of the function +#until its first use. i took the liberty of simplifying the code a bit although it still uses the +#same functional breakdown. i recently went through the exercise of converting +#my ksh-based environment to bash (a very, very pleasant experience) +#and this popped out. + +# the psuedo-ksh autoloader. + +# The first cut of this was by Bill Trost, trost@reed.bitnet. +# The second cut came from Chet Ramey, chet@ins.CWRU.Edu +# The third cut came from Mark Kennedy, mtk@ny.ubs.com. 1998/08/25 + +unset _AUTOLOADS + +_aload() +{ + local func + for func; do + eval $func '() + { + local f=$(_autoload_resolve '$func') + if [[ $f ]]; then + . $f + '$func' "$@" + return $? + else + return 1 + fi + }' + _autoload_addlist $func + done +} + +_autoload_addlist() +{ + local func + + for func in ${_AUTOLOADS[@]}; do + [[ $func = "$1" ]] && return + done + + _AUTOLOADS[${#_AUTOLOADS[@]}]=$1 +} + +_autoload_dump() +{ + local func + + for func in ${_AUTOLOADS[@]}; do + [[ $1 ]] && echo -n "autoload " + echo $func + done +} + +_autoload_remove_one() +{ + local func + local -a NEW_AUTOLOADS + + for func in ${_AUTOLOADS[@]}; do + [[ $func != "$1" ]] && NEW_AUTOLOADS[${#NEW_AUTOLOADS[@]}]=$func + done + + _AUTOLOADS=( ${NEW_AUTOLOADS[@]} ) +} + +_autoload_remove() +{ + local victim func + + for victim; do + for func in ${_AUTOLOADS[@]}; do + [[ $victim = "$func" ]] && unset -f $func && continue 2 + done + echo "autoload: $func: not an autoloaded function" >&2 + done + + for func; do + _autoload_remove_one $func + done +} + +_autoload_resolve() +{ + if [[ ! "$FPATH" ]]; then + echo "autoload: FPATH not set or null" >&2 + return + fi + + local p + + for p in $( (IFS=':'; set -- ${FPATH}; echo "$@") ); do + p=${p:-.} + if [ -f $p/$1 ]; then echo $p/$1; return; fi + done + + echo "autoload: $1: function source file not found" >&2 +} + +autoload() +{ + if (( $# == 0 )) ; then _autoload_dump; return; fi + + local opt OPTIND + + while getopts pu opt + do + case $opt in + p) _autoload_dump printable; return;; + u) shift $((OPTIND-1)); _autoload_remove "$@"; return;; + *) echo "autoload: usage: autoload [-pu] [function ...]" >&2; return;; + esac + done + + shift $(($OPTIND-1)) + + _aload "$@" +} diff --git a/bash-5.1/examples/functions/autoload.v4 b/bash-5.1/examples/functions/autoload.v4 new file mode 100644 index 0000000..7f60563 --- /dev/null +++ b/bash-5.1/examples/functions/autoload.v4 @@ -0,0 +1,556 @@ +## -*- sh -*- + +# The psuedo-ksh autoloader. + +# How to use: +# o One function per file. +# o File and function name match exactly. +# o File is located in a directory that is in FPATH. +# o This script (autoload) must be sourced in as early as possible. This +# implies that any code in this script should NOT rely on any library of local +# or self-defined functions having already been loaded. +# o autoload must be called for each function before the function can be used. If +# autoloads are in directories where there are nothing but autoloads, then +# 'autoload /path/to/files/*' suffices (but see options -a and -f). +# o The call must be made in the current environment, not a subshell. +# o The command line suffices as "current environment". If you have autoload +# calls in a script, that script must be dotted into the process. + +# The first cut of this was by Bill Trost, trost@reed.bitnet. +# The second cut came from Chet Ramey, chet@ins.CWRU.Edu +# The third cut came from Mark Kennedy, mtk@ny.ubs.com. 1998/08/25 +# The fourth cut came from Matthew Persico, matthew.persico@gmail.com 2017/August + +autoload_calc_shimsize () +{ + echo $((AUTOLOAD_SHIM_OVERHEAD + 3 * ${#1})) +} + +_autoload_split_fpath () +{ + (IFS=':'; set -- ${FPATH}; echo "$@") +} + +_aload() +{ + local opt OPTIND + local doexport=0 + local doreload=0 + local doverbose=0 + local doevalshim=0 + local loadthese + local optimize=0 + local loaded=0 + local exported=0 + local optimized=0 + local summary=0 + local dofpath=0 + while getopts xrvla:oyf opt; do + case $opt in + x) doexport=1;; + r) doreload=1;; + v) doverbose=1;; + l) doevalshim=1;; + a) loadthese=$(find $OPTARG -maxdepth 1 -type f -printf '%f ');; + o) optimize=1;; + y) summary=1;; + f) loadthese=$(find $(_autoload_split_fpath) -maxdepth 1 -type f -printf '%f ');; + *) echo "_aload: usage: _aload [-xrvlyf] [-a dir] [function ...]" >&2; return;; + esac + done + + shift $(($OPTIND-1)) + + [ -z "$loadthese" ] && loadthese="$@" + + local func + for func in $loadthese; do + local exists_fn + exists_fn=$(declare -F $func) + if [ -n "$exists_fn" ] && ((doreload==0)) && ((doevalshim==0)) + then + if ((doverbose)) + then + echo "autoload: function '$func' already exists" + fi + else + local andevaled='' + local andexported='' + local evalstat=0 + local doshim=1 + local funcfile + funcfile=$(_autoload_resolve $func) + if [[ $funcfile ]] ; then + ## The file was found for $func. Process it. + + if ((optimize)); then + ## For the first function loaded, we will not know + ## AUTOLOAD_SHIM_OVERHEAD. We can only calculate it after + ## we have loaded one function. + if [[ $AUTOLOAD_SHIM_OVERHEAD ]]; then + local size=$(wc -c $funcfile| sed 's/ .*//') + local shimsize=$(autoload_calc_shimsize $func) + if (( size <= shimsize)); then + doshim=0 + andevaled=', optimized' + ((optimized+=1)) + fi + fi + fi + + if ((doevalshim)); then + doshim=0 + andevaled=', evaled' + fi + + ## 'brand' as in branding a cow with a mark. We add a local + ## variable to each function we autoload so that we can tell + ## later on it is an autoloaded function without having to + ## maintain some bash array or hash that cannot be passed to + ## and used by subshells. + local brandtext + brandtext="eval \"\$(type $func | sed -e 1d -e 4ilocal\\ AUTOLOADED=\'$func\')\"" + if ((doshim)); then + ## Don't bother trying to save space by shoving all the + ## eval text below onto one unreadable line; new lines will + ## be added at your semicolons and any indentation below + ## seems to be ignored anyway if you export the function; + ## look at its BASH_FUNCTION representation. + eval $func '() + { + local IS_SHIM="$func" + local file=$(_autoload_resolve '$func') + if [[ $file ]] + then + . $file + '$brandtext' + '$func' "$@" + return $? + else + return 1; + fi + }' + else + . $funcfile + eval "$brandtext" + fi + evalstat=$? + if((evalstat==0)) + then + ((loaded+=1)) + ((doexport)) && export -f $func && andexported=', exported' && ((exported+=1)) + ((doverbose)) && echo "$func autoloaded${andexported}${andevaled}" + if [[ ! $AUTOLOAD_SHIM_OVERHEAD ]] && ((doshim)); then + ## ...we have just loaded the first function shim into + ## memory. Let's calc the AUTOLOAD_SHIM_OVERHEAD size + ## to use going forward. In theory, we could check + ## again here to see if we should optimize and source + ## in this function, now that we now the + ## AUTOLOAD_SHIM_OVERHEAD. In practice, it's not worth + ## duping that code or creating a function to do so for + ## one function. + AUTOLOAD_SHIM_OVERHEAD=$(type $func | grep -v -E "^$1 is a function" | sed "s/$func//g"| wc -c) + export AUTOLOAD_SHIM_OVERHEAD + fi + else + echo "$func failed to load" >&2 + fi + fi + fi + done + ((summary)) && echo "autoload: loaded:$loaded exported:$exported optimized:$optimized overhead:$AUTOLOAD_SHIM_OVERHEAD bytes" +} + +_autoload_dump() +{ + local opt OPTIND + local opt_p='' + local opt_s='' + while getopts ps opt + do + case $opt in + p ) opt_p=1;; + s ) opt_s=1;; + esac + done + + shift $(($OPTIND-1)) + + local exported='' + local executed='' + local func + for func in $(declare | grep -E 'local\\{0,1} AUTOLOADED' | sed -e "s/.*AUTOLOADED=//" -e 's/\\//g' -e 's/[");]//g' -e "s/'//g") + do + if [ -n "$opt_p" ]; then echo -n "autoload "; fi + if [ -n "$opt_s" ] + then + exported=$(declare -F | grep -E "${func}$" | sed 's/declare -f\(x\{0,1\}\).*/\1/') + [ "$exported" = 'x' ] && exported=' exported' || exported=' not exported' + executed=$(type $func | grep 'local IS_SHIM') + [ -z "$executed" ] && executed=' executed' || executed=' not executed' + fi + echo "${func}${exported}${executed}" + done +} + +_autoload_resolve() +{ + if [[ ! "$FPATH" ]]; then + echo "autoload: FPATH not set or null" >&2 + return + fi + + local p # for 'path'. The $() commands in the for loop split the FPATH + # string into its constituents so that each one may be processed. + + for p in $( _autoload_split_fpath ); do + p=${p:-.} + if [ -f $p/$1 ]; then echo $p/$1; return; fi + done + + echo "autoload: $1: function source file not found" >&2 +} + +_autoload_edit() +{ + [ -z "$EDITOR" ] && echo "Error: no EDITOR defined" && return 1 + local toedit + local func + for func in "$@" + do + local file=$(_autoload_resolve $func) + if [[ $file ]] + then + toedit="$toedit $file" + else + echo "$funcname not found in FPATH funcfile. Skipping." + fi + done + + [ -z "$toedit" ] && return 1 + + local timemarker=$(mktemp) + + $EDITOR $toedit + + local i + for i in $toedit + do + if [ $i -nt $timemarker ] + then + local f=$(basename $i) + echo Reloading $f + autoload -r $f + fi + done +} + +_autoload_page() +{ + [ -z "$PAGER" ] && echo "Error: no PAGER defined" && return 1 + local topage + local func + for func in "$@" + do + local file=$(_autoload_resolve $func) + if [[ $file ]] + then + topage="$topage $file" + else + echo "$funcname not found in FPATH funcfile. Skipping." + fi + done + + [ -z "$topage" ] && return 1 + + $PAGER $topage +} + +_autoload_remove() +{ + unset -f "$@" +} + +_autoload_help() +{ + cat <&2; return;; + esac + done + + shift $(($OPTIND-1)) + if [ -n "$dumpopt" ] + then + _autoload_dump $dumpopt + else + _aload $passthru "$@" + fi +} + +autoreload () +{ + autoload -r "$@" +} + +## When we source in autoload, we export (but NOT autoload) the autoload +## functions so that they are available in subshells and you don't have to +## source in the autoload file in subshells. +export -f _aload \ + _autoload_dump \ + _autoload_edit \ + _autoload_help \ + _autoload_page \ + _autoload_resolve \ + _autoload_split_fpath \ + autoload \ + autoload_calc_shimsize \ + autoreload diff --git a/bash-5.1/examples/functions/autoload.v4.t b/bash-5.1/examples/functions/autoload.v4.t new file mode 100644 index 0000000..6d35d14 --- /dev/null +++ b/bash-5.1/examples/functions/autoload.v4.t @@ -0,0 +1,184 @@ +#!/bin/bash + +workdir=$(mktemp -d) + +cp autoload $workdir + +cd $workdir +pwd + +. ./autoload + +funclist='ALTEST_func1 ALTEST_funcexport ALTEST_funcu' +for funcname in $funclist; do + cat < $funcname +$funcname () +{ +echo this is $funcname + +} +EOFFUNC + +done + +export FPATH=$workdir + +autoload ALTEST_func1 ALTEST_funcu +autoload -x ALTEST_funcexport + +ok=0 +failed=0 + +for funcname in $funclist; do + + testname="$funcname loaded" + got=$(type $funcname 2>&1) + if [[ $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname" + ((failed+=1)) + else + echo "ok - $testname" + ((ok+=1)) + + testname="$funcname is a shim" + if [[ ! $got =~ "IS_SHIM" ]]; then + echo "## Failed $testname" + ((failed+=1)) + else + echo "ok - $testname" + ((ok+=1)) + + testname="$funcname shim executed" + $funcname > /dev/null + got=$(type $funcname 2>&1) + if [[ $got =~ "IS_SHIM" ]]; then + echo "## Failed $testname" + ((failed+=1)) + else + echo "ok - $testname" + ((ok+=1)) + fi + fi + fi +done + +funcname=ALTEST_func1 +testname="$funcname shim reloaded" +autoload -r $funcname +got=$(type $funcname 2>&1) +if [[ ! $got =~ "IS_SHIM" ]]; then + echo "## Failed $testname" + ((failed+=1)) +else + echo "ok - $testname" + ((ok+=1)) +fi + +funcname=ALTEST_funcu +testname="$funcname shim unloaded" +autoload -u $funcname +got=$(type $funcname 2>&1) +if [[ ! $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname" + ((failed+=1)) +else + echo "ok - $testname" + ((ok+=1)) +fi + +testname="autoload -p" +got=$(autoload -p | grep ALTEST) +if [[ ! $got =~ "autoload ALTEST_func1" ]] || \ + [[ ! $got =~ "autoload ALTEST_funcexport" ]] ; then +echo "## Failed $testname" + ((failed+=1)) +else + echo "ok - $testname" + ((ok+=1)) +fi + +testname="autoload -s" +echo "Executing $testname, could take a long time..." +got=$(autoload -s | grep ALTEST) +if [[ ! $got =~ "ALTEST_func1 not exported not executed" ]] || \ + [[ ! $got =~ "ALTEST_funcexport exported executed" ]] ; then + echo "## Failed $testname" + echo "## got: $got" + ((failed+=1)) +else + echo "ok - $testname" + ((ok+=1)) +fi + +testname="autoload -r -a $FPATH" +autoload -r -a $FPATH +localfailed=0 +localok=0 +for funcname in $funclist; do + got=$(type $funcname 2>&1) + if [[ $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname - $funcname" + ((localfailed+=1)) + else + ((localok+=1)) + if [[ ! $got =~ "IS_SHIM" ]]; then + ((localfailed+=1)) + else + ((localok+=1)) + fi + fi +done +if ((localfailed==0)); then + echo "ok - $testname" + ((ok+=1)) +else + ((failed+=1)) +fi + +testname="autoload -u $funclist" +autoload -u $funclist +localfailed=0 +localok=0 +for funcname in $funclist; do + got=$(type $funcname 2>&1) + if [[ ! $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname - $funcname" + ((localfailed+=1)) + else + ((localok+=1)) + fi +done +if ((localfailed==0)); then + echo "ok - $testname" + ((ok+=1)) +else + ((failed+=1)) +fi + +testname="autoload -r -f" +autoload -r -f +localfailed=0 +localok=0 +for funcname in $funclist; do + got=$(type $funcname 2>&1) + if [[ $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname - $funcname" + ((localfailed+=1)) + else + ((localok+=1)) + if [[ ! $got =~ "IS_SHIM" ]]; then + ((localfailed+=1)) + else + ((localok+=1)) + fi + fi +done +if ((localfailed==0)); then + echo "ok - $testname" + ((ok+=1)) +else + ((failed+=1)) +fi + +echo $ok passed, $failed failed +exit $failed diff --git a/bash-5.1/examples/functions/basename b/bash-5.1/examples/functions/basename new file mode 100644 index 0000000..a541349 --- /dev/null +++ b/bash-5.1/examples/functions/basename @@ -0,0 +1,23 @@ +# Date: Fri, 11 Oct 91 11:22:36 edt +# From: friedman@gnu.ai.mit.edu +# To: bfox@gnu.ai.mit.edu + +# A replacement for basename(1). Not all the systems I use have this +# program. Usage: basename [path] {extension} +function basename () +{ + local path="$1" + local suffix="$2" + local tpath="${path%/}" + + # Strip trailing '/' characters from path (unusual that this should + # ever occur, but basename(1) seems to deal with it.) + while [ "${tpath}" != "${path}" ]; do + tpath="${path}" + path="${tpath%/}" + done + + path="${path##*/}" # Strip off pathname + echo ${path%${suffix}} # Also strip off extension, if any. +} + diff --git a/bash-5.1/examples/functions/csh-compat b/bash-5.1/examples/functions/csh-compat new file mode 100644 index 0000000..54c8488 --- /dev/null +++ b/bash-5.1/examples/functions/csh-compat @@ -0,0 +1,48 @@ +# C-shell compatibilty package. +# setenv VAR VALUE +function setenv () +{ + export $1="$2" +} + +function unsetenv () +{ + unset $1 +} + +# Can't write foreach yet. Need pattern matching, and a few extras. +function foreach () { +echo 'Can'\''t do `foreach'\'' yet. Type "help for".' +} + +# Make this work like csh's. Special case "term" and "path". +#set () { +#} + +chdir () +{ + builtin cd "$@" +} + +# alias - convert csh alias commands to bash functions +# from Mohit Aron +# posted to usenet as <4i5p17$bnu@larry.rice.edu> +function alias () +{ + if [ "x$2" = "x" ] + then + declare -f $1 + else + case $2 in + *[#\!]*) + comm=$(echo $2 | sed 's/\\!\*/\"$\@\"/g + s/\\!:\([1-9]\)/\"$\1\"/g + s/#/\\#/g') + ;; + *) + comm="$2 \"\$@\"" ;; + esac + + eval function $1 \(\) "{" command "$comm" "; }" + fi +} diff --git a/bash-5.1/examples/functions/dirname b/bash-5.1/examples/functions/dirname new file mode 100644 index 0000000..ccb8c84 --- /dev/null +++ b/bash-5.1/examples/functions/dirname @@ -0,0 +1,21 @@ +# Date: Fri, 11 Oct 91 11:22:36 edt +# From: friedman@gnu.ai.mit.edu +# To: bfox@gnu.ai.mit.edu + +# A replacement for dirname(1). This one appears less often on some +# systems I use than basename(1), and I really depend on it for some +# things. Usage: dirname [path] +function dirname () +{ + local dir="$1" + local tdir="${dir%/}" + + # Strip trailing '/' characters from dir (unusual that this should + # ever occur, but dirname(1) seems to deal with it.) + while [ "${tdir}" != "${dir}" ]; do + tdir="${dir}" + dir="${tdir%/}" + done + + echo "${dir%/*}" +} diff --git a/bash-5.1/examples/functions/dirstack b/bash-5.1/examples/functions/dirstack new file mode 100644 index 0000000..d68e619 --- /dev/null +++ b/bash-5.1/examples/functions/dirstack @@ -0,0 +1,160 @@ +#!/bin/bash +# @(#) dirstack + +### +# Another implementation of the directory manipulation functions +# published in the Bolsky & Korn book : "The new Korn shell" : +# cd, to change current directory +# d, to display the stack content +# Eric Sanchis (eric.sanchis@iut-rodez.fr), 2012 +# +# 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 . +# +### + + +shopt -s expand_aliases +shopt -s extglob +shopt -s cdable_vars + +alias integer='declare -i' + +integer MAX=32 +integer INDMAX=MAX-1 +integer INDTOP=0 + +unalias cd 2>/dev/null +alias cd=cdir + +unset tab +tab[INDTOP]="$(pwd)" + + +function cdir +{ + local -i ind + local dir + +dir="${1:-$HOME}" +case "$dir" in + - ) # cd - => equivalent to : cd -1 + ind=INDTOP-1 + cd_by_number $ind + ;; + -+([[:digit:]]) ) # cd -n + ind=$INDTOP-${dir#-} + cd_by_number $ind + ;; + *) # cd ~ or cd dir_name + cd_by_name "$dir" +esac +} + + +function cd_by_number +{ + local -i k=$1 + local -i j + local dirtmp + +if (( k < 0 )) + then + echo Impossible to change directory >&2 + return 1 + else + dirtmp="${tab[k]}" + j=k+1 + while (( j <= INDTOP )) + do + tab[j-1]="${tab[j]}" + j=j+1 + done + tab[INDTOP]="$dirtmp" + \cd "${tab[INDTOP]}" +fi +} + + +function cd_by_name +{ + local -i i + local rep + +rep=$( \cd "$1" &>/dev/null && pwd) +if [[ -z "$rep" ]] + then + echo cd : "$1" unknown >&2 + return 1 +fi + + i=$INDTOP + while (( i >= 0 )) + do + if [[ "${tab[i]}" == "$rep" ]] + then break + fi + i=i-1 + done + +if (( i == INDTOP )) + then # cd -0 => we do nothing ! + return 0 + elif (( i == -1 )) + then # the directory isn't in the stack + if (( INDTOP == INDMAX )) + then # the stack is FULL + # the oldest directory is removed + local -i m + + m=1 + while (( m <= INDMAX )) + do + tab[m-1]="${tab[m]}" + m=m+1 + done + else # the new directory is added to the top of the stack + INDTOP=INDTOP+1 + fi + tab[INDTOP]="$rep" + \cd "${tab[INDTOP]}" + return 0 + + else # the directory is already in the stack + # $i gives its index + cd_by_number $i +fi +} + + +function d # display the directory stack +{ + local -i i + local rep + +i=0 +while (( $i <= $INDTOP )) + do + rep="${tab[INDTOP-i]#$HOME/}" + case "$rep" in + $HOME) rep="~" ;; + /* ) : ;; + * ) rep="~/$rep" + esac + + echo "$i ) $rep" + i=i+1 + done +} + + diff --git a/bash-5.1/examples/functions/exitstat b/bash-5.1/examples/functions/exitstat new file mode 100644 index 0000000..f49ebf5 --- /dev/null +++ b/bash-5.1/examples/functions/exitstat @@ -0,0 +1,22 @@ +# Contributed by Noah Friedman and Roland McGrath. + +# To be run by the PROMPT_COMMAND variable, so that one can see what +# the exit status of processes are. + +function check_exit_status () +{ + local status="$?" + local signal="" + + if [ ${status} -ne 0 ] && [ ${status} != 128 ]; then + # If process exited by a signal, determine name of signal. + if [ ${status} -gt 128 ]; then + signal="$(builtin kill -l $((${status} - 128)) 2>/dev/null)" + if [ "$signal" ]; then signal="($signal)"; fi + fi + echo "[Exit ${status} ${signal}]" 1>&2 + fi + return 0 +} + +PROMPT_COMMAND=check_exit_status diff --git a/bash-5.1/examples/functions/external b/bash-5.1/examples/functions/external new file mode 100644 index 0000000..c2e52cd --- /dev/null +++ b/bash-5.1/examples/functions/external @@ -0,0 +1,50 @@ +# Contributed by Noah Friedman. + +# To avoid using a function in bash, you can use the `builtin' or +# `command' builtins, but neither guarantees that you use an external +# program instead of a bash builtin if there's a builtin by that name. So +# this function can be used like `command' except that it guarantees the +# program is external by first disabling any builtin by that name. After +# the command is done executing, the state of the builtin is restored. +function external () +{ + local state="" + local exit_status + + if builtin_p "$1"; then + state="builtin" + enable -n "$1" + fi + + command "$@" + exit_status=$? + + if [ "$state" = "builtin" ]; then + enable "$1" + fi + + return ${exit_status} +} + +# What is does is tell you if a particular keyword is currently enabled as +# a shell builtin. It does NOT tell you if invoking that keyword will +# necessarily run the builtin. For that, do something like +# +# test "$(builtin type -type [keyword])" = "builtin" +# +# Note also, that disabling a builtin with "enable -n" will make builtin_p +# return false, since the builtin is no longer available. +function builtin_p () +{ + local word + + set $(builtin type -all -type "$1") + + for word in "$@" ; do + if [ "${word}" = "builtin" ]; then + return 0 + fi + done + + return 1 +} diff --git a/bash-5.1/examples/functions/fact b/bash-5.1/examples/functions/fact new file mode 100644 index 0000000..97efd49 --- /dev/null +++ b/bash-5.1/examples/functions/fact @@ -0,0 +1,13 @@ +# Who said shells can't use recursion? Here is a factorial function. +# You call it with a number as an argument, and it returns the factorial +# of that number. + +fact () +{ + local num=$1; + if [ "$num" = 1 ] ; then + echo 1 + return ; + fi; + echo $(( $num * $(fact $(( $num - 1 )) ) )) +} diff --git a/bash-5.1/examples/functions/fstty b/bash-5.1/examples/functions/fstty new file mode 100644 index 0000000..5ed594f --- /dev/null +++ b/bash-5.1/examples/functions/fstty @@ -0,0 +1,77 @@ +# +# A function that works as a front end for both stty and the `bind' +# builtin, so the tty driver and readline see the same changes +# +# +# Chet Ramey +# +# Copyright 2011 Chester Ramey +# +# 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. +# +# TThis 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. + +# +# Convert between the stty ^H control character form and the readline \C-H +# form +# +cvt() +{ + echo "$@" | cat -v | sed 's/\^/\\C-/' +} + +# +# stty front-end. Parses the argument list and creates two command strings, +# one for stty, another for bind. +# +fstty() +{ + local cmd="" bargs="" + local e + + while [ $# -gt 0 ] + do + case "$1" in + -a) cmd="$cmd everything" + ;; + erase) shift; + e=$(cvt "$1") + cmd="$cmd erase $1" + bargs="$bargs '\"$e\": backward-delete-char'" + ;; + kill) shift + e=$(cvt "$1") + cmd="$cmd kill $1" + bargs="$bargs '\"$e\": unix-line-discard'" + ;; + werase) shift; + e=$(cvt "$1") + cmd="$cmd erase $1" + bargs="$bargs '\"$e\": backward-kill-word'" + ;; + lnext) shift; + e=$(cvt "$1") + cmd="$cmd erase $1" + bargs="$bargs '\"$e\": quoted-insert'" + ;; + *) cmd="$cmd $1" + ;; + esac + shift + done + + command stty $cmd + if [ -n "$bargs" ]; then + builtin bind $bargs + fi +} diff --git a/bash-5.1/examples/functions/func b/bash-5.1/examples/functions/func new file mode 100644 index 0000000..e7696f7 --- /dev/null +++ b/bash-5.1/examples/functions/func @@ -0,0 +1,43 @@ +# +# func -- print out definitions for functions named by arguments +# +# usage: func name [name ...] +# +# Chet Ramey +# +# Copyright 1991 Chester Ramey +# +# 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. +# +# TThis 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. + +func() +{ + local status=0 + + if [ $# -eq 0 ] ; then + echo "usage: func name [name...]" 1>&2 + return 1 + fi + + for f + do + if [ "$(builtin type -type $f)" != "function" ] ; then + echo "func: $f: not a function" 1>&2 + status=1 # one failed + continue + fi + builtin type $f | sed 1d + done + return $status +} diff --git a/bash-5.1/examples/functions/inetaddr b/bash-5.1/examples/functions/inetaddr new file mode 100644 index 0000000..9e72613 --- /dev/null +++ b/bash-5.1/examples/functions/inetaddr @@ -0,0 +1,79 @@ +# +# Chet Ramey +# +# Copyright 2002 Chester Ramey +# +# 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. +# +# TThis 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. + +# +# inet2hex - Internet address conversion, dotted-decimal to hex +# +inet2hex () +{ + local IFS + + IFS=. + set -- $1 + + if (( $# != 4 )); then + echo "inet2hex: incorrect input format: $1" >&2 + echo "inet2hex: usage: inet2hex XX.XX.XX.XX" >&2 + return 2 + fi + + printf "0x%02x%02x%02x%02x\n" $1 $2 $3 $4 +} + +# +# hex2inet - Internet address conversion, hex to dotted-decimal +# +hex2inet () +{ + local x1 x2 x3 x4 + local rev + + OPTIND=1 + while getopts "r" o + do + case "$o" in + r) rev=true;; + *) echo "hex2inet: usage: hex2inet [-r] [0x]XXXXXXXX" >&2 ; exit 2;; + esac + done + shift $(( $OPTIND - 1 )) + + case "$1" in + 0x*) h=${1#??} ;; + *) h=$1 ;; + esac + + if (( ${#h} != 8 )); then + echo "hex2inet: $h not in inet format" >&2 + echo "hex2inet: usage: hex2inet [0x]XXXXXXXX" >&2 + return 2 + fi + + x1=$(( 0x${h:0:2} )) + x2=$(( 0x${h:2:2} )) + x3=$(( 0x${h:4:2} )) + x4=$(( 0x${h:6:2} )) + + if [ -z "$rev" ] ; then + printf "%d.%d.%d.%d\n" $x1 $x2 $x3 $x4 + else + printf "%d.%d.%d.%d\n" $x4 $x3 $x2 $x1 + fi + return 0 +} diff --git a/bash-5.1/examples/functions/inpath b/bash-5.1/examples/functions/inpath new file mode 100644 index 0000000..cb4c93d --- /dev/null +++ b/bash-5.1/examples/functions/inpath @@ -0,0 +1,14 @@ +inpath() +{ + local PROG + path=$(echo $PATH | sed 's/^:/.:/ + s/::/:.:/g + s/:$/:./ + s/:/ /g') + + for x in $path + do + [ -x $x/$1 ] && { PROG=$x/$1; break; } + done + [ -n "$PROG" ] +} diff --git a/bash-5.1/examples/functions/isnum2 b/bash-5.1/examples/functions/isnum2 new file mode 100644 index 0000000..b21974d --- /dev/null +++ b/bash-5.1/examples/functions/isnum2 @@ -0,0 +1,41 @@ +# +# Chet Ramey +# +# Copyright 1998 Chester Ramey +# +# 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. +# +# TThis 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. + +isnum2() +{ + case "$1" in + [-+] | '') return 1;; # empty or bare `-' or `+' + [-+]*[!0-9]*) return 1;; # non-digit with leading sign + [-+]*) return 0;; # OK + *[!0-9]*) return 1;; # non-digit + *) return 0;; # OK + esac +} + +# this one handles floating point +isnum3() +{ + case "$1" in + '') return 1;; # empty + *[!0-9.+-]*) return 1;; # non-digit, +, -, or . + *?[-+]*) return 1;; # sign as second or later char + *.*.*) return 1;; # multiple decimal points + *) return 0;; # OK + esac +} diff --git a/bash-5.1/examples/functions/isvalidip b/bash-5.1/examples/functions/isvalidip new file mode 100644 index 0000000..0b2dafe --- /dev/null +++ b/bash-5.1/examples/functions/isvalidip @@ -0,0 +1,14 @@ +# Thanks to Chris F. A. Johnson for this one +is_validip() +{ + case "$*" in + ""|*[!0-9.]*|*[!0-9]) return 1 ;; + esac + + local IFS=. + set -- $* + + [ $# -eq 4 ] && + [ ${1:-666} -le 255 ] && [ ${2:-666} -le 255 ] && + [ ${3:-666} -le 255 ] && [ ${4:-666} -le 254 ] +} diff --git a/bash-5.1/examples/functions/ksh-cd b/bash-5.1/examples/functions/ksh-cd new file mode 100644 index 0000000..26b00a9 --- /dev/null +++ b/bash-5.1/examples/functions/ksh-cd @@ -0,0 +1,54 @@ +# +# Chet Ramey +# +# Copyright 2001 Chester Ramey +# +# 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. +# +# TThis 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. + +# +# ksh-like `cd': cd [-LP] [dir [change]] +# +cd() +{ + OPTIND=1 + while getopts "LP" opt + do + case $opt in + L|P) CDOPTS="$CDOPTS -$opt" ;; + *) echo "$FUNCNAME: usage: $FUNCNAME [-LP] [dir] [change]" >&2 + return 2;; + esac + done + + shift $(( $OPTIND - 1 )) + + case $# in + 0) builtin cd $CDOPTS "$HOME" ;; + 1) builtin cd $CDOPTS "$@" ;; + 2) old="$1" new="$2" + case "$PWD" in + *$old*) ;; + *) echo "${0##*/}: $FUNCNAME: bad substitution" >&2 ; return 1 ;; + esac + + dir=${PWD//$old/$new} + + builtin cd $CDOPTS "$dir" && echo "$PWD" + + ;; + *) echo "${0##*/}: $FUNCNAME: usage: $FUNCNAME [-LP] [dir] [change]" >&2 + return 2 ;; + esac +} diff --git a/bash-5.1/examples/functions/ksh-compat-test b/bash-5.1/examples/functions/ksh-compat-test new file mode 100644 index 0000000..919d82b --- /dev/null +++ b/bash-5.1/examples/functions/ksh-compat-test @@ -0,0 +1,58 @@ +# +# Chet Ramey +# +# Copyright 1999 Chester Ramey +# +# 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. +# +# TThis 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. +# +# replacements for test/[ that do arithmetic expansion on the operands to +# the arithmetic operators, like ksh. +# +function test() +{ + local -i n1 n3 + case "$#" in + 3) case "$2" in + -lt|-gt|-eq|-ne|-le|-ge) n1=$(( $1 )) + n3=$(( $3 )) + builtin test "$n1" $2 "$n3" + return $?;; + *) builtin test "$@" ;; + esac;; + *) builtin test "$@" ;; + esac +} + +function [() +{ + local -i n1 n3 + case "$#" in + 4) case "$2" in + -lt|-gt|-eq|-ne|-le|-ge) n1=$(( $1 )) + n3=$(( $3 )) + builtin [ "$n1" $2 "$n3" ] + return $?;; + *) builtin [ "$@" ;; + esac;; + *) builtin [ "$@" ;; + esac +} + +q=7 + +[ q -lt 10 ] +echo $? +[ $q -lt 10 ] +echo $? diff --git a/bash-5.1/examples/functions/kshenv b/bash-5.1/examples/functions/kshenv new file mode 100644 index 0000000..9faba08 --- /dev/null +++ b/bash-5.1/examples/functions/kshenv @@ -0,0 +1,246 @@ +# +# .kshenv -- functions and aliases to provide the beginnings of a ksh +# environment for bash. +# +# Chet Ramey +# chet@ins.CWRU.Edu +# + +# +# Copyright 2002 Chester Ramey +# +# 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. +# +# TThis 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. + +# +# These are definitions for the ksh compiled-in `exported aliases'. There +# are others, but we already have substitutes for them: "history", "type", +# and "hash". +# +alias r="fc -s" +alias functions="typeset -f" +alias integer="typeset -i" +alias nohup="nohup " +alias command="command " +alias stop="kill -s STOP" +alias redirect="command exec" +alias hist="fc" + +# +# An almost-ksh compatible `whence' command. This is as hairy as it is +# because of the desire to exactly mimic ksh (whose behavior was determined +# empirically). +# +# This depends somewhat on knowing the format of the output of the bash +# `builtin type' command. +# + +whence() +{ + local vflag pflag fflag defarg c + local path + + vflag= aflag= pflag= fflag= + path= + if [ "$#" = "0" ] ; then + echo "whence: usage: whence [-afpv] name..." >&2 + return 2 + fi + + OPTIND=1 + while getopts "avfp" c + do + case "$c" in + a) defarg=-a ;; + f) fflag=1 ;; # no-op + p) pflag=1 ;; + v) vflag=1 ;; + ?) echo "whence: $1: unknown option" >&2 + echo "whence: usage: whence [-afpv] name..." >&2 + return 2 ;; + esac + done + + shift $(( $OPTIND - 1 )) + + if [ "$#" = "0" ] ; then + echo "whence: usage: whence [-afpv] name..." >&2 + return 2 + fi + + for cmd + do + if [ "$vflag" ] ; then + if [ -z "$defarg" ]; then + builtin type $cmd | sed 1q + else + if builtin type $defarg -t $cmd | grep 'function$' >/dev/null 2>&1; then + # HAIRY awk script to suppress + # printing of function body -- could + # do it with sed, but I don't have + # that kind of time + builtin type $defarg $cmd | awk ' +BEGIN {printit = 1;} +$1 == "'$cmd'" && $2 == "()" {printit=0; next; } +/^}$/ { if (printit == 0) printit=1 ; else print $0; next ; } +/.*/ { if (printit) print $0; }' + else + builtin type $defarg $cmd + fi + fi + else + path=$(builtin type $defarg -p $cmd) + if [ "$path" ] ; then + echo $path + else + case "$cmd" in + /*) echo "" ;; + *) case "$(builtin type -t $cmd)" in + "") echo "" ;; + *) echo "$cmd" ;; + esac + ;; + esac + fi + fi + done + return 0 +} + +# +# For real ksh homeboy fanatics, redefine the `type' builtin with a ksh +# version. +# +#type() +#{ +# whence -v "$*" +#} + +# +# ksh-like `cd': cd [-LP] [dir [change]] +# +cd() +{ + OPTIND=1 + while getopts "LP" opt + do + case $opt in + L|P) CDOPTS="$CDOPTS -$opt" ;; + *) echo "$FUNCNAME: usage: $FUNCNAME [-LP] [dir] [change]" >&2 + return 2;; + esac + done + + shift $(( $OPTIND - 1 )) + + case $# in + 0) builtin cd $CDOPTS "$HOME" ;; + 1) builtin cd $CDOPTS "$@" ;; + 2) old="$1" new="$2" + case "$PWD" in + *$old*) ;; + *) echo "${0##*/}: $FUNCNAME: bad substitution" >&2 ; return 1 ;; + esac + + dir=${PWD//$old/$new} + + builtin cd $CDOPTS "$dir" && echo "$PWD" + + ;; + *) echo "${0##*/}: $FUNCNAME: usage: $FUNCNAME [-LP] [dir] [change]" >&2 + return 2 ;; + esac +} + +# +# ksh print emulation +# +# print [-Rnprsu[n]] [-f format] [arg ...] +# +# - end of options +# -R BSD-style -- only accept -n, no escapes +# -n do not add trailing newline +# -p no-op (no coprocesses) +# -r no escapes +# -s print to the history file +# -u n redirect output to fd n +# -f format printf "$format" "$@" +# + +print() +{ + local eflag=-e + local nflag= fflag= c + local fd=1 + + OPTIND=1 + while getopts "fRnprsu:" c + do + case $c in + R) eflag= ;; + r) eflag= ;; + n) nflag=-n ;; + s) sflag=y ;; + f) fflag=y ;; + u) fd=$OPTARG ;; + p) ;; + esac + done + shift $(( $OPTIND - 1 )) + + if [ -n "$fflag" ]; then + builtin printf "$@" >&$fd + return + fi + + case "$sflag" in + y) builtin history -s "$*" ;; + *) builtin echo $eflag $nflag "$@" >&$fd + esac +} + +# substring function +# this function should be equivalent to the substring built-in which was +# eliminated after the 06/29/84 version +substring () +{ + local lpat flag str #local variables + set -f + case $1 in + -l|-L) + flag=$1 + lpat=$2 + shift 2 + ;; + esac + # test for too few or too many arguments + if [ x"$1" = x ] || [ $# -gt 2 ]; then + print -u2 'substring: bad argument count' + return 1 + fi + str=$1 + if [ x"$flag" = x-l ]; then #substring -l lpat + str=${str#$lpat} + elif [ x"$flag" = x-L ]; then + str=${str##$lpat} #substring -L lpat + fi + + if [ x"$2" != x ]; then + echo ${str%$2} + else + echo $str + fi + + return 0 +} diff --git a/bash-5.1/examples/functions/login b/bash-5.1/examples/functions/login new file mode 100644 index 0000000..3d59683 --- /dev/null +++ b/bash-5.1/examples/functions/login @@ -0,0 +1,11 @@ +# replace the `login' and `newgrp' builtins in old bourne shells + +login() +{ + exec login "$@" +} + +newgrp() +{ + exec newgrp "$@" +} diff --git a/bash-5.1/examples/functions/notify.bash b/bash-5.1/examples/functions/notify.bash new file mode 100644 index 0000000..ed4377c --- /dev/null +++ b/bash-5.1/examples/functions/notify.bash @@ -0,0 +1,77 @@ +# +# Chet Ramey +# +# Copyright 1992 Chester Ramey +# +# 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. +# +# TThis 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. + +trap _notify CHLD +NOTIFY_ALL=false +unset NOTIFY_LIST +unalias false + +false() +{ + return 1 +} + +_notify () +{ + local i j + local newlist= + + if $NOTIFY_ALL + then + return # let bash take care of this itself + elif [ -z "$NOTIFY_LIST" ]; then + return + else + set -- $NOTIFY_LIST + for i in "$@" + do + j=$(jobs -n %$i) + if [ -n "$j" ]; then + echo "$j" + jobs -n %$i >/dev/null + else + newlist="newlist $i" + fi + done + NOTIFY_LIST="$newlist" + fi +} + +notify () +{ + local i j + + if [ $# -eq 0 ]; then + NOTIFY_ALL=: + set -b + return + else + for i in "$@" + do + # turn a valid job spec into a job number + j=$(jobs $i) + case "$j" in + [*) j=${j%%]*} + j=${j#[} + NOTIFY_LIST="$NOTIFY_LIST $j" + ;; + esac + done + fi +} diff --git a/bash-5.1/examples/functions/seq b/bash-5.1/examples/functions/seq new file mode 100644 index 0000000..c1953ee --- /dev/null +++ b/bash-5.1/examples/functions/seq @@ -0,0 +1,48 @@ +# +# Chet Ramey +# +# Copyright 1995 Chester Ramey +# +# 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. +# +# TThis 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. + +# Generate a sequence from m to n, m defaults to 1. + +seq () +{ + declare -i lo hi i # makes local + local _SEQ + + case $# in + 1) seq 1 "$1" ; return $? ;; + 2) lo=$1 hi=$2 + i=$lo _SEQ="" + while let "i <= hi"; do + _SEQ="${_SEQ}$i " + let i+=1 + done + echo "${_SEQ# }" + return 0 ;; + *) echo seq: usage: seq [low] high 1>&2 ; return 2 ;; + esac +} + +# like the APL `iota' function (or at least how I remember it :-) +iota() +{ + case $# in + 1) seq 1 "$1"; return $?;; + *) echo "iota: usage: iota high" 1>&2; return 2;; + esac +} diff --git a/bash-5.1/examples/functions/seq2 b/bash-5.1/examples/functions/seq2 new file mode 100644 index 0000000..4a54498 --- /dev/null +++ b/bash-5.1/examples/functions/seq2 @@ -0,0 +1,56 @@ +# +# Chet Ramey +# +# Copyright 1998 Chester Ramey +# +# 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. +# +# TThis 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. + +# Generate a sequence from m to n, m defaults to 1. + +seq () +{ + declare -i lo hi i # makes local + local _SEQ INIT COMPARE STEP + + case "$1" in + -r) INIT='i=$hi _SEQ=""' COMPARE='let "i >= $lo"' STEP='let i-=1' ; shift ;; + *) INIT='i=$lo _SEQ=""' COMPARE='let "i <= $hi"' STEP='let i+=1' ;; + esac + + case $# in + 1) lo=1 hi="$1" ;; + 2) lo=$1 hi=$2 ;; + *) echo seq: usage: seq [-r] [low] high 1>&2 ; return 2 ;; + esac + + # equivalent to the as-yet-unimplemented + # for (( "$INIT" ; "$COMPARE" ; "$STEP" )); do _SEQ="${_SEQ}$i "; done + eval "$INIT" + while eval "$COMPARE"; do + _SEQ="${_SEQ}$i " + eval "$STEP" + done + echo "${_SEQ# }" + return 0 +} + +# like the APL `iota' function (or at least how I remember it :-) +iota() +{ + case $# in + 1) seq 1 "$1"; return $?;; + *) echo "iota: usage: iota high" 1>&2; return 2;; + esac +} diff --git a/bash-5.1/examples/functions/shcat b/bash-5.1/examples/functions/shcat new file mode 100644 index 0000000..84f0391 --- /dev/null +++ b/bash-5.1/examples/functions/shcat @@ -0,0 +1,7 @@ +shcat() +{ + while IFS= read -r line + do + echo "$line" + done +} diff --git a/bash-5.1/examples/functions/shcat2 b/bash-5.1/examples/functions/shcat2 new file mode 100644 index 0000000..8ceff33 --- /dev/null +++ b/bash-5.1/examples/functions/shcat2 @@ -0,0 +1,19 @@ +shcat() +{ + while read -r + do + echo "$REPLY" + done +} + +shcat2() +{ + while [ $# -ge 1 ]; do + case "$1" in + -) shcat ;; + *) shcat < "$1" ;; + esac + shift + done + exit 0 +} diff --git a/bash-5.1/examples/functions/sort-pos-params b/bash-5.1/examples/functions/sort-pos-params new file mode 100644 index 0000000..95acd85 --- /dev/null +++ b/bash-5.1/examples/functions/sort-pos-params @@ -0,0 +1,69 @@ +# +# Chet Ramey +# +# Copyright 2001 Chester Ramey +# +# 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. +# +# TThis 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. + +# Sort the positional parameters. +# Make sure the positional parameters are passed as arguments to the function. +# If -u is the first arg, remove duplicate array members. +sort_posparams() +{ + local -a R + local u + + case "$1" in + -u) u=-u ; shift ;; + esac + + # if you want the case of no positional parameters to return success, + # remove the error message and return 0 + if [ $# -eq 0 ]; then + echo "$FUNCNAME: argument expected" >&2 + return 1 + fi + + # make R a copy of the positional parameters + R=( "${@}" ) + + # sort R. + R=( $( printf "%s\n" "${R[@]}" | sort $u) ) + + printf "%s\n" "${R[@]}" + return 0 +} + +# will print everything on separate lines +set -- 3 1 4 1 5 9 2 6 5 3 2 +sort_posparams "$@" + +# sets without preserving quoted parameters +set -- $( sort_posparams "$@" ) +echo "$@" +echo $# + +# sets preserving quoted parameters, beware pos params with embedded newlines +set -- 'a b' 'a c' 'x z' + +oifs=$IFS +IFS=$'\n' +set -- $( sort_posparams "$@" ) +IFS="$oifs" + +echo "$@" +echo $# + +sort_posparams diff --git a/bash-5.1/examples/functions/substr b/bash-5.1/examples/functions/substr new file mode 100644 index 0000000..f19f5d7 --- /dev/null +++ b/bash-5.1/examples/functions/substr @@ -0,0 +1,97 @@ +# +# Chet Ramey +# +# Copyright 2002 Chester Ramey +# +# 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. +# +# TThis 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. +# +# substr -- a function to emulate the ancient ksh builtin +# + +# +# -l == shortest from left +# -L == longest from left +# -r == shortest from right (the default) +# -R == longest from right + +substr() +{ + local flag pat str + local usage="usage: substr -lLrR pat string or substr string pat" + + case "$1" in + -l | -L | -r | -R) + flag="$1" + pat="$2" + shift 2 + ;; + -*) + echo "substr: unknown option: $1" + echo "$usage" + return 1 + ;; + *) + flag="-r" + pat="$2" + ;; + esac + + if [ "$#" -eq 0 ] || [ "$#" -gt 2 ] ; then + echo "substr: bad argument count" + return 2 + fi + + str="$1" + + # + # We don't want -f, but we don't want to turn it back on if + # we didn't have it already + # + case "$-" in + "*f*") + ;; + *) + fng=1 + set -f + ;; + esac + + case "$flag" in + -l) + str="${str#$pat}" # substr -l pat string + ;; + -L) + str="${str##$pat}" # substr -L pat string + ;; + -r) + str="${str%$pat}" # substr -r pat string + ;; + -R) + str="${str%%$pat}" # substr -R pat string + ;; + *) + str="${str%$2}" # substr string pat + ;; + esac + + echo "$str" + + # + # If we had file name generation when we started, re-enable it + # + if [ "$fng" = "1" ] ; then + set +f + fi +} diff --git a/bash-5.1/examples/functions/substr2 b/bash-5.1/examples/functions/substr2 new file mode 100644 index 0000000..fc21b98 --- /dev/null +++ b/bash-5.1/examples/functions/substr2 @@ -0,0 +1,99 @@ +# +# Chet Ramey +# +# Copyright 2002 Chester Ramey +# +# 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. +# +# TThis 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. +# +# substr -- a function to emulate the ancient ksh builtin +# + +# -l == remove shortest from left +# -L == remove longest from left +# -r == remove shortest from right (the default) +# -R == remove longest from right + +substr() +{ + local flag pat str + local usage="usage: substr -lLrR pat string or substr string pat" + local options="l:L:r:R:" + + OPTIND=1 + while getopts "$options" c + do + case "$c" in + l | L | r | R) + flag="-$c" + pat="$OPTARG" + ;; + '?') + echo "$usage" + return 1 + ;; + esac + done + + if [ "$OPTIND" -gt 1 ] ; then + shift $(( $OPTIND -1 )) + fi + + if [ "$#" -eq 0 ] || [ "$#" -gt 2 ] ; then + echo "substr: bad argument count" + return 2 + fi + + str="$1" + + # + # We don't want -f, but we don't want to turn it back on if + # we didn't have it already + # + case "$-" in + "*f*") + ;; + *) + fng=1 + set -f + ;; + esac + + case "$flag" in + -l) + str="${str#$pat}" # substr -l pat string + ;; + -L) + str="${str##$pat}" # substr -L pat string + ;; + -r) + str="${str%$pat}" # substr -r pat string + ;; + -R) + str="${str%%$pat}" # substr -R pat string + ;; + *) + str="${str%$2}" # substr string pat + ;; + esac + + echo "$str" + + # + # If we had file name generation when we started, re-enable it + # + if [ "$fng" = "1" ] ; then + set +f + fi +} diff --git a/bash-5.1/examples/functions/whatis b/bash-5.1/examples/functions/whatis new file mode 100644 index 0000000..570c585 --- /dev/null +++ b/bash-5.1/examples/functions/whatis @@ -0,0 +1,71 @@ +# +# whatis -- and implementation of the 10th Edition Unix sh builtin `whatis' +# command. +# +# usage: whatis arg [...] +# +# For each argument, whatis prints the associated value as a parameter, +# builtin, function, alias, or executable file as appropriate. In each +# case, the value is printed in a form which would yield the same value +# if typed as input to the shell itself. +# +# +# Chet Ramey +# +# Copyright 1994 Chester Ramey +# +# 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. +# +# TThis 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. + + +whatis() +{ + local wusage='usage: whatis arg [arg...]' + local fail=0 + + if [ $# -eq 0 ] ; then + echo "$wusage" + return 1 + fi + + for arg + do + case $(builtin type -type $arg 2>/dev/null) in + "alias") + builtin alias "$arg" + ;; + "function") + builtin type "$arg" | sed 1d + ;; + "builtin") + echo builtin "$arg" + ;; + "file") + builtin type -path "$arg" + ;; + *) + # OK, we could have a variable, or we could have nada + if [ "$(eval echo \${$arg+set})" = "set" ] ; then + # It is a variable, and it is set + echo -n "$arg=" + eval echo '\"'\$$arg'\"' + else + echo whatis: $arg: not found + fail=1 + fi + ;; + esac + done + return $fail +} diff --git a/bash-5.1/examples/functions/whence b/bash-5.1/examples/functions/whence new file mode 100644 index 0000000..ba27b00 --- /dev/null +++ b/bash-5.1/examples/functions/whence @@ -0,0 +1,78 @@ +# +# An almost-ksh compatible `whence' command. This is as hairy as it is +# because of the desire to exactly mimic ksh. +# +# This depends somewhat on knowing the format of the output of the bash +# `builtin type' command. +# +# Chet Ramey +# chet@ins.CWRU.Edu +# +# +# Chet Ramey +# +# Copyright 1994 Chester Ramey +# +# 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. +# +# TThis 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. + +whence() +{ + local vflag= path= + + if [ "$#" = "0" ] ; then + echo "whence: argument expected" + return 1 + fi + case "$1" in + -v) vflag=1 + shift 1 + ;; + -*) echo "whence: bad option: $1" + return 1 + ;; + *) ;; + esac + + if [ "$#" = "0" ] ; then + echo "whence: bad argument count" + return 1 + fi + + for cmd + do + if [ "$vflag" ] ; then + echo $(builtin type $cmd | sed 1q) + else + path=$(builtin type -path $cmd) + if [ "$path" ] ; then + echo $path + else + case "$cmd" in + /*) if [ -x "$cmd" ]; then + echo "$cmd" + fi + ;; + *) case "$(builtin type -type $cmd)" in + "") ;; + *) echo "$cmd" + ;; + esac + ;; + esac + fi + fi + done + return 0 +} diff --git a/bash-5.1/examples/functions/which b/bash-5.1/examples/functions/which new file mode 100644 index 0000000..f0db290 --- /dev/null +++ b/bash-5.1/examples/functions/which @@ -0,0 +1,62 @@ +# +# which - emulation of `which' as it appears in FreeBSD +# +# usage: which [-as] command [command...] +# +# +# Chet Ramey +# +# Copyright 1999 Chester Ramey +# +# 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. +# +# TThis 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. + +which() +{ + local aflag sflag ES a opt + + OPTIND=1 + while builtin getopts as opt ; do + case "$opt" in + a) aflag=-a ;; + s) sflag=1 ;; + ?) echo "which: usage: which [-as] command [command ...]" >&2 + exit 2 ;; + esac + done + + (( $OPTIND > 1 )) && shift $(( $OPTIND - 1 )) + + # without command arguments, exit with status 1 + ES=1 + + # exit status is 0 if all commands are found, 1 if any are not found + for command; do + # if $command is a function, make sure we add -a so type + # will look in $PATH after finding the function + a=$aflag + case "$(builtin type -t $command)" in + "function") a=-a;; + esac + + if [ -n "$sflag" ]; then + builtin type -p $a $command >/dev/null 2>&1 + else + builtin type -p $a $command + fi + ES=$? + done + + return $ES +} diff --git a/bash-5.1/examples/loadables/Makefile.in b/bash-5.1/examples/loadables/Makefile.in new file mode 100644 index 0000000..7ffeef2 --- /dev/null +++ b/bash-5.1/examples/loadables/Makefile.in @@ -0,0 +1,324 @@ +# +# Simple makefile for the sample loadable builtins +# +# Copyright (C) 1996-2019 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + +# Include some boilerplate Gnu makefile definitions. +prefix = @prefix@ + +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +infodir = @infodir@ +includedir = @includedir@ + +datarootdir = @datarootdir@ + +loadablesdir = @loadablesdir@ +headersdir = @headersdir@ + +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +# Support an alternate destination root directory for package building +DESTDIR = + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALLMODE= -m 0755 + +@SET_MAKE@ +CC = @CC@ +RM = rm -f + +SHELL = @MAKE_SHELL@ + +host_os = @host_os@ +host_cpu = @host_cpu@ +host_vendor = @host_vendor@ + +CFLAGS = -O2 -g +LOCAL_CFLAGS = @LOCAL_CFLAGS@ +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +CPPFLAGS = @CPPFLAGS@ + +BASHINCDIR = ${topdir}/include + +SUPPORT_SRC = $(topdir)/support/ + +LIBBUILD = ${BUILD_DIR}/lib + +INTL_LIBSRC = ${topdir}/lib/intl +INTL_BUILDDIR = ${LIBBUILD}/intl +INTL_INC = @INTL_INC@ +LIBINTL_H = @LIBINTL_H@ + +CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) $(CPPFLAGS) $(CFLAGS) + +# +# These values are generated for configure by ${topdir}/support/shobj-conf. +# If your system is not supported by that script, but includes facilities for +# dynamic loading of shared objects, please update the script and send the +# changes to bash-maintainers@gnu.org. +# +SHOBJ_CC = @SHOBJ_CC@ +SHOBJ_CFLAGS = @SHOBJ_CFLAGS@ +SHOBJ_LD = @SHOBJ_LD@ +SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@ @LDFLAGS@ +SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@ +SHOBJ_LIBS = @SHOBJ_LIBS@ +SHOBJ_STATUS = @SHOBJ_STATUS@ + +INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins -I${srcdir} \ + -I$(BASHINCDIR) -I$(BUILD_DIR) -I$(LIBBUILD) \ + -I$(BUILD_DIR)/builtins $(INTL_INC) + +.c.o: + $(SHOBJ_CC) $(SHOBJ_CFLAGS) $(CCFLAGS) $(INC) -c -o $@ $< + + +ALLPROG = print truefalse sleep finfo logname basename dirname fdflags \ + tty pathchk tee head mkdir rmdir mkfifo mktemp printenv id whoami \ + uname sync push ln unlink realpath strftime mypid setpgid seq rm \ + accept csv cut +OTHERPROG = necho hello cat pushd stat asort + +all: $(SHOBJ_STATUS) + +supported: $(ALLPROG) +others: $(OTHERPROG) + +unsupported: + @echo "Your system (${host_os}) is not supported by the" + @echo "${topdir}/support/shobj-conf script." + @echo "If your operating system provides facilities for dynamic" + @echo "loading of shared objects using the dlopen(3) interface," + @echo "please update the script and re-run configure." + @echo "Please send the changes you made to bash-maintainers@gnu.org" + @echo "for inclusion in future bash releases." + +everything: supported others + +print: print.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ print.o $(SHOBJ_LIBS) + +necho: necho.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ necho.o $(SHOBJ_LIBS) + +hello: hello.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ hello.o $(SHOBJ_LIBS) + +truefalse: truefalse.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ truefalse.o $(SHOBJ_LIBS) + +accept: accept.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ accept.o $(SHOBJ_LIBS) + +sleep: sleep.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ sleep.o $(SHOBJ_LIBS) + +finfo: finfo.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ finfo.o $(SHOBJ_LIBS) + +cat: cat.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ cat.o $(SHOBJ_LIBS) + +rm: rm.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ rm.o $(SHOBJ_LIBS) + +fdflags: fdflags.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ fdflags.o $(SHOBJ_LIBS) + +seq: seq.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ seq.o $(SHOBJ_LIBS) + +logname: logname.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ logname.o $(SHOBJ_LIBS) + +basename: basename.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ basename.o $(SHOBJ_LIBS) + +dirname: dirname.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ dirname.o $(SHOBJ_LIBS) + +tty: tty.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ tty.o $(SHOBJ_LIBS) + +pathchk: pathchk.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ pathchk.o $(SHOBJ_LIBS) + +tee: tee.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ tee.o $(SHOBJ_LIBS) + +mkdir: mkdir.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ mkdir.o $(SHOBJ_LIBS) + +rmdir: rmdir.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ rmdir.o $(SHOBJ_LIBS) + +mkfifo: mkfifo.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ mkfifo.o $(SHOBJ_LIBS) + +mktemp: mktemp.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ mktemp.o $(SHOBJ_LIBS) + +head: head.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ head.o $(SHOBJ_LIBS) + +printenv: printenv.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ printenv.o $(SHOBJ_LIBS) + +id: id.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ id.o $(SHOBJ_LIBS) + +whoami: whoami.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ whoami.o $(SHOBJ_LIBS) + +uname: uname.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ uname.o $(SHOBJ_LIBS) + +sync: sync.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ sync.o $(SHOBJ_LIBS) + +push: push.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ push.o $(SHOBJ_LIBS) + +ln: ln.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ ln.o $(SHOBJ_LIBS) + +unlink: unlink.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ unlink.o $(SHOBJ_LIBS) + +realpath: realpath.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ realpath.o $(SHOBJ_LIBS) + +csv: csv.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ csv.o $(SHOBJ_LIBS) + +cut: cut.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ cut.o $(SHOBJ_LIBS) + +strftime: strftime.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ strftime.o $(SHOBJ_LIBS) + +mypid: mypid.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ mypid.o $(SHOBJ_LIBS) + +setpgid: setpgid.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ setpgid.o $(SHOBJ_LIBS) + +stat: stat.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ stat.o $(SHOBJ_LIBS) + +asort: asort.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ asort.o $(SHOBJ_LIBS) + +# pushd is a special case. We use the same source that the builtin version +# uses, with special compilation options. +# +pushd.c: ${topdir}/builtins/pushd.def + $(RM) $@ + ${BUILD_DIR}/builtins/mkbuiltins -D ${topdir}/builtins ${topdir}/builtins/pushd.def + +pushd.o: pushd.c + $(RM) $@ + $(SHOBJ_CC) -DHAVE_CONFIG_H -DPUSHD_AND_POPD -DLOADABLE_BUILTIN $(SHOBJ_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(INC) -c -o $@ $< + +pushd: pushd.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ pushd.o $(SHOBJ_LIBS) + +clean: + $(RM) $(ALLPROG) $(OTHERPROG) *.o + -( cd perl && ${MAKE} ${MFLAGS} $@ ) + +mostlyclean: clean + -( cd perl && ${MAKE} ${MFLAGS} $@ ) + +distclean maintainer-clean: clean + $(RM) Makefile Makefile.inc pushd.c + -( cd perl && ${MAKE} ${MFLAGS} $@ ) + +installdirs: + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(loadablesdir) + +install-dev: installdirs + @$(INSTALL_DATA) Makefile.inc $(DESTDIR)$(loadablesdir)/Makefile.inc + @$(INSTALL_DATA) $(srcdir)/loadables.h $(DESTDIR)$(loadablesdir)/loadables.h + @( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" install-headers) + +install-supported: all installdirs install-dev + @echo installing example loadable builtins in $(DESTDIR)${loadablesdir} + @for prog in ${ALLPROG}; do \ + echo $$prog ; \ + $(INSTALL_PROGRAM) $(INSTALLMODE) $$prog $(DESTDIR)$(loadablesdir)/$$prog ;\ + done + +uninstall-dev: + -$(RM) $(DESTDIR)$(loadablesdir)/Makefile.inc $(DESTDIR)$(loadablesdir)/loadables.h + -( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" uninstall-headers) + +uninstall-supported: uninstall-dev + -( cd $(DESTDIR)${loadablesdir} && $(RM) ${ALLPROG} ) + +install-unsupported: +uninstall-unsupported: + +install: install-$(SHOBJ_STATUS) +uninstall: uninstall-$(SHOBJ_STATUS) + +print.o: print.c +truefalse.o: truefalse.c +accept.o: accept.c +sleep.o: sleep.c +finfo.o: finfo.c +logname.o: logname.c +basename.o: basename.c +dirname.o: dirname.c +tty.o: tty.c +pathchk.o: pathchk.c +tee.o: tee.c +head.o: head.c +rmdir.o: rmdir.c +necho.o: necho.c +hello.o: hello.c +cat.o: cat.c +csv.o: csv.c +cut.o: cut.c +printenv.o: printenv.c +id.o: id.c +whoami.o: whoami.c +uname.o: uname.c +sync.o: sync.c +push.o: push.c +mkdir.o: mkdir.c +mktemp.o: mktemp.c +realpath.o: realpath.c +strftime.o: strftime.c +setpgid.o: setpgid.c +stat.o: stat.c +fdflags.o: fdflags.c +seq.o: seq.c +asort.o: asort.c diff --git a/bash-5.1/examples/loadables/Makefile.inc.in b/bash-5.1/examples/loadables/Makefile.inc.in new file mode 100644 index 0000000..8b419a7 --- /dev/null +++ b/bash-5.1/examples/loadables/Makefile.inc.in @@ -0,0 +1,108 @@ +# +# Sample makefile for bash loadable builtin development +# +# Copyright (C) 2015 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ + +# Include some boilerplate Gnu makefile definitions. +prefix = @prefix@ + +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +infodir = @infodir@ +includedir = @includedir@ + +datarootdir = @datarootdir@ + +loadablesdir = @loadablesdir@ +headersdir = @headersdir@ + +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +# Support an alternate destination root directory for package building +DESTDIR = + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALLMODE= -m 0755 + +@SET_MAKE@ +CC = @CC@ +RM = rm -f + +SHELL = @MAKE_SHELL@ + +host_os = @host_os@ +host_cpu = @host_cpu@ +host_vendor = @host_vendor@ + +CFLAGS = @CFLAGS@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +CPPFLAGS = @CPPFLAGS@ + +BASHINCDIR = ${topdir}/include + +SUPPORT_SRC = $(topdir)/support/ + +LIBBUILD = ${BUILD_DIR}/lib + +INTL_LIBSRC = ${topdir}/lib/intl +INTL_BUILDDIR = ${LIBBUILD}/intl +INTL_INC = @INTL_INC@ +LIBINTL_H = @LIBINTL_H@ + +CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) $(CFLAGS) + +# +# These values are generated for configure by ${topdir}/support/shobj-conf. +# If your system is not supported by that script, but includes facilities for +# dynamic loading of shared objects, please update the script and send the +# changes to bash-maintainers@gnu.org. +# +SHOBJ_CC = @SHOBJ_CC@ +SHOBJ_CFLAGS = @SHOBJ_CFLAGS@ +SHOBJ_LD = @SHOBJ_LD@ +SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@ @LDFLAGS@ +SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@ +SHOBJ_LIBS = @SHOBJ_LIBS@ +SHOBJ_STATUS = @SHOBJ_STATUS@ + +INC = -I$(headersdir) -I$(headersdir)/include -I$(headersdir)/builtins + +.c.o: + $(SHOBJ_CC) $(SHOBJ_CFLAGS) $(CCFLAGS) $(INC) -c -o $@ $< + +all: example + +example: example.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ example.o $(SHOBJ_LIBS) + +example.o: example.c diff --git a/bash-5.1/examples/loadables/README b/bash-5.1/examples/loadables/README new file mode 100644 index 0000000..6820c96 --- /dev/null +++ b/bash-5.1/examples/loadables/README @@ -0,0 +1,76 @@ +Some examples of ready-to-dynamic-load builtins. Most of the +examples given are reimplementations of standard commands whose +execution time is dominated by process startup time. The +exceptions are sleep, which allows you to sleep for fractions +of a second, finfo, which provides access to the rest of the +elements of the `stat' structure that `test' doesn't let you +see, and pushd/popd/dirs, which allows you to compile them out +of the shell. + +All of the new builtins in ksh93 that bash didn't already have +are included here, as is the ksh `print' builtin. + +The configure script in the top-level source directory uses the +support/shobj-conf script to set the right values in the Makefile, +so you should not need to change the Makefile. If your system +is not supported by support/shobj-conf, and it has the necessary +facilities for building shared objects and support for the +dlopen/dlsyn/dlclose/dlerror family of functions, please make +the necessary changes to support/shobj-conf and send the changes +to bash-maintainers@gnu.org. + +Loadable builtins are loaded into a running shell with + + enable -f filename builtin-name + +enable uses a simple reference-counting scheme to avoid unloading a +shared object that implements more than one loadable builtin before +all loadable builtins implemented in the object are removed. + +Many of the details needed by builtin writers are found in hello.c, +the canonical example. There is no real `builtin writers' programming +guide'. The file template.c provides a template to use for creating +new loadable builtins. + +The file "Makefile.inc" is created using the same values that configure +writes into Makefile.in, and is installed in the same directory as the +rest of the example builtins. It's intended to be a start at something +that can be modified or included to help you build your own loadables +without having to search for the right CFLAGS and LDFLAGS. + +basename.c Return non-directory portion of pathname. +cat.c cat(1) replacement with no options - the way cat was intended. +dirname.c Return directory portion of pathname. +fdflags.c Change the flag associated with one of bash's open file descriptors. +finfo.c Print file info. +head.c Copy first part of files. +hello.c Obligatory "Hello World" / sample loadable. +id.c POSIX.2 user identity. +ln.c Make links. +loadables.h File loadable builtins can include for shell definitions. +logname.c Print login name of current user. +Makefile.in Simple makefile for the sample loadable builtins. +Makefile.inc.in Sample makefile to use for loadable builtin development. +mkdir.c Make directories. +mypid.c Add $MYPID variable, demonstrate use of unload hook functio.n +necho.c echo without options or argument interpretation. +pathchk.c Check pathnames for validity and portability. +print.c Loadable ksh-93 style print builtin. +printenv.c Minimal builtin clone of BSD printenv(1). +push.c Anyone remember TOPS-20? +realpath.c Canonicalize pathnames, resolving symlinks. +rm.c Remove files and directories. +rmdir.c Remove directory. +seq.c Print a sequence of decimal or floating point numbers. +setpgid.c Set a process's pgrp; example of how to wrap a system call. +sleep.c sleep for fractions of a second. +stat.c populate an associative array with information about a file +strftime.c Loadable builtin interface to strftime(3). +sync.c Sync the disks by forcing pending filesystem writes to complete. +tee.c Duplicate standard input. +template.c Example template for loadable builtin. +truefalse.c True and false builtins. +tty.c Return terminal name. +uname.c Print system information. +unlink.c Remove a directory entry. +whoami.c Print out username of current user. diff --git a/bash-5.1/examples/loadables/accept.c b/bash-5.1/examples/loadables/accept.c new file mode 100644 index 0000000..54cf38c --- /dev/null +++ b/bash-5.1/examples/loadables/accept.c @@ -0,0 +1,234 @@ +/* accept - listen for and accept a remote network connection on a given port */ + +/* + Copyright (C) 2020 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include +#include +#include "bashtypes.h" +#include +#include +#include "typemax.h" + +#include +#include +#include + +#include "loadables.h" + +static int accept_bind_variable (char *, int); + +int +accept_builtin (list) + WORD_LIST *list; +{ + WORD_LIST *l; + SHELL_VAR *v; + intmax_t iport; + int opt; + char *tmoutarg, *fdvar, *rhostvar, *rhost; + unsigned short uport; + int servsock, clisock; + struct sockaddr_in server, client; + socklen_t clientlen; + struct timeval timeval; + struct linger linger = { 0, 0 }; + + rhostvar = tmoutarg = fdvar = rhost = (char *)NULL; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "r:t:v:")) != -1) + { + switch (opt) + { + case 'r': + rhostvar = list_optarg; + break; + case 't': + tmoutarg = list_optarg; + break; + case 'v': + fdvar = list_optarg; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + + /* Validate input and variables */ + if (tmoutarg) + { + long ival, uval; + opt = uconvert (tmoutarg, &ival, &uval, (char **)0); + if (opt == 0 || ival < 0 || uval < 0) + { + builtin_error ("%s: invalid timeout specification", tmoutarg); + return (EXECUTION_FAILURE); + } + timeval.tv_sec = ival; + timeval.tv_usec = uval; + /* XXX - should we warn if ival == uval == 0 ? */ + } + + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + if (legal_number (list->word->word, &iport) == 0 || iport < 0 || iport > TYPE_MAXIMUM (unsigned short)) + { + builtin_error ("%s: invalid port number", list->word->word); + return (EXECUTION_FAILURE); + } + uport = (unsigned short)iport; + + if (fdvar == 0) + fdvar = "ACCEPT_FD"; + + unbind_variable (fdvar); + if (rhostvar) + unbind_variable (rhostvar); + + if ((servsock = socket (AF_INET, SOCK_STREAM, IPPROTO_IP)) < 0) + { + builtin_error ("cannot create socket: %s", strerror (errno)); + return (EXECUTION_FAILURE); + } + + memset ((char *)&server, 0, sizeof (server)); + server.sin_family = AF_INET; + server.sin_port = htons(uport); + server.sin_addr.s_addr = htonl(INADDR_ANY); + + if (bind (servsock, (struct sockaddr *)&server, sizeof (server)) < 0) + { + builtin_error ("socket bind failure: %s", strerror (errno)); + close (servsock); + return (EXECUTION_FAILURE); + } + + opt = 1; + setsockopt (servsock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, sizeof (opt)); + setsockopt (servsock, SOL_SOCKET, SO_LINGER, (void *)&linger, sizeof (linger)); + + if (listen (servsock, 1) < 0) + { + builtin_error ("listen failure: %s", strerror (errno)); + close (servsock); + return (EXECUTION_FAILURE); + } + + if (tmoutarg) + { + fd_set iofds; + + FD_ZERO(&iofds); + FD_SET(servsock, &iofds); + + opt = select (servsock+1, &iofds, 0, 0, &timeval); + if (opt < 0) + builtin_error ("select failure: %s", strerror (errno)); + if (opt <= 0) + { + close (servsock); + return (EXECUTION_FAILURE); + } + } + + clientlen = sizeof (client); + if ((clisock = accept (servsock, (struct sockaddr *)&client, &clientlen)) < 0) + { + builtin_error ("client accept failure: %s", strerror (errno)); + close (servsock); + return (EXECUTION_FAILURE); + } + + close (servsock); + + accept_bind_variable (fdvar, clisock); + if (rhostvar) + { + rhost = inet_ntoa (client.sin_addr); + v = builtin_bind_variable (rhostvar, rhost, 0); + if (v == 0 || readonly_p (v) || noassign_p (v)) + builtin_error ("%s: cannot set variable", rhostvar); + } + + return (EXECUTION_SUCCESS); +} + +static int +accept_bind_variable (varname, intval) + char *varname; + int intval; +{ + SHELL_VAR *v; + char ibuf[INT_STRLEN_BOUND (int) + 1], *p; + + p = fmtulong (intval, 10, ibuf, sizeof (ibuf), 0); + v = builtin_bind_variable (varname, p, 0); + if (v == 0 || readonly_p (v) || noassign_p (v)) + builtin_error ("%s: cannot set variable", varname); + return (v != 0); +} + +char *accept_doc[] = { + "Accept a network connection on a specified port.", + "" + "This builtin allows a bash script to act as a TCP/IP server.", + "", + "Options, if supplied, have the following meanings:", + " -t timeout wait TIMEOUT seconds for a connection. TIMEOUT may", + " be a decimal number including a fractional portion", + " -v varname store the numeric file descriptor of the connected", + " socket into VARNAME. The default VARNAME is ACCEPT_FD", + " -r rhost store the IP address of the remote host into the shell", + " variable RHOST, in dotted-decimal notation", + "", + "If successful, the shell variable ACCEPT_FD, or the variable named by the", + "-v option, will be set to the fd of the connected socket, suitable for", + "use as 'read -u$ACCEPT_FD'. RHOST, if supplied, will hold the IP address", + "of the remote client. The return status is 0.", + "", + "On failure, the return status is 1 and ACCEPT_FD (or VARNAME) and RHOST,", + "if supplied, will be unset.", + "", + "The server socket fd will be closed before accept returns.", + (char *) NULL +}; + +struct builtin accept_struct = { + "accept", /* builtin name */ + accept_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + accept_doc, /* array of long documentation strings. */ + "accept [-t timeout] [-v varname] [-r addrvar ] port", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/asort.c b/bash-5.1/examples/loadables/asort.c new file mode 100644 index 0000000..e847ef8 --- /dev/null +++ b/bash-5.1/examples/loadables/asort.c @@ -0,0 +1,279 @@ +/* + Copyright (C) 2020 Free Software Foundation, Inc. + + 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 . +*/ +#include +#include +#include + +#include "bashtypes.h" +#include "shell.h" +#include "builtins.h" +#include "common.h" +#include "xmalloc.h" +#include "bashgetopt.h" + +typedef struct sort_element { + ARRAY_ELEMENT *v; // used when sorting array in-place + char *key; // used when sorting assoc array + char *value; // points to value of array element or assoc entry + double num; // used for numeric sort +} sort_element; + +static int reverse_flag; +static int numeric_flag; + +static int +compare(const void *p1, const void *p2) { + const sort_element e1 = *(sort_element *) p1; + const sort_element e2 = *(sort_element *) p2; + + if (numeric_flag) { + if (reverse_flag) + return (e2.num > e1.num) ? 1 : (e2.num < e1.num) ? -1 : 0; + else + return (e1.num > e2.num) ? 1 : (e1.num < e2.num) ? -1 : 0; + } + else { + if (reverse_flag) + return strcoll(e2.value, e1.value); + else + return strcoll(e1.value, e2.value); + } +} + +static int +sort_index(SHELL_VAR *dest, SHELL_VAR *source) { + HASH_TABLE *hash; + BUCKET_CONTENTS *bucket; + sort_element *sa; + ARRAY *array, *dest_array; + ARRAY_ELEMENT *ae; + size_t i, j, n; + char ibuf[INT_STRLEN_BOUND (intmax_t) + 1]; // used by fmtulong + char *key; + + dest_array = array_cell(dest); + + if (assoc_p(source)) { + hash = assoc_cell(source); + n = hash->nentries; + sa = xmalloc(n * sizeof(sort_element)); + i = 0; + for ( j = 0; j < hash->nbuckets; ++j ) { + bucket = hash->bucket_array[j]; + while ( bucket ) { + sa[i].v = NULL; + sa[i].key = bucket->key; + if ( numeric_flag ) + sa[i].num = strtod(bucket->data, NULL); + else + sa[i].value = bucket->data; + i++; + bucket = bucket->next; + } + } + } + else { + array = array_cell(source); + n = array_num_elements(array); + sa = xmalloc(n * sizeof(sort_element)); + i = 0; + + for (ae = element_forw(array->head); ae != array->head; ae = element_forw(ae)) { + sa[i].v = ae; + if (numeric_flag) + sa[i].num = strtod(element_value(ae), NULL); + else + sa[i].value = element_value(ae); + i++; + } + } + + // sanity check + if ( i != n ) { + builtin_error("%s: corrupt array", source->name); + return EXECUTION_FAILURE; + } + + qsort(sa, n, sizeof(sort_element), compare); + + array_flush(dest_array); + + for ( i = 0; i < n; ++i ) { + if ( assoc_p(source) ) + key = sa[i].key; + else + key = fmtulong((long unsigned)sa[i].v->ind, 10, ibuf, sizeof(ibuf), 0); + + array_insert(dest_array, i, key); + } + + return EXECUTION_SUCCESS; +} + +static int +sort_inplace(SHELL_VAR *var) { + size_t i, n; + ARRAY *a; + ARRAY_ELEMENT *ae; + sort_element *sa = 0; + + a = array_cell(var); + n = array_num_elements(a); + + if ( n == 0 ) + return EXECUTION_SUCCESS; + + sa = xmalloc(n * sizeof(sort_element)); + + i = 0; + for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) { + sa[i].v = ae; + if (numeric_flag) + sa[i].num = strtod(element_value(ae), NULL); + else + sa[i].value = element_value(ae); + i++; + } + + // sanity check + if ( i != n ) { + builtin_error("%s: corrupt array", var->name); + return EXECUTION_FAILURE; + } + + qsort(sa, n, sizeof(sort_element), compare); + + // for in-place sort, simply "rewire" the array elements + sa[0].v->prev = sa[n-1].v->next = a->head; + a->head->next = sa[0].v; + a->head->prev = sa[n-1].v; + a->max_index = n - 1; + for (i = 0; i < n; i++) { + sa[i].v->ind = i; + if (i > 0) + sa[i].v->prev = sa[i-1].v; + if (i < n - 1) + sa[i].v->next = sa[i+1].v; + } + xfree(sa); + return EXECUTION_SUCCESS; +} + +int +asort_builtin(WORD_LIST *list) { + SHELL_VAR *var, *var2; + char *word; + int opt, ret; + int index_flag = 0; + + numeric_flag = 0; + reverse_flag = 0; + + reset_internal_getopt(); + while ((opt = internal_getopt(list, "inr")) != -1) { + switch (opt) { + case 'i': index_flag = 1; break; + case 'n': numeric_flag = 1; break; + case 'r': reverse_flag = 1; break; + CASE_HELPOPT; + default: + builtin_usage(); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) { + builtin_usage(); + return EX_USAGE; + } + + if (legal_identifier (list->word->word) == 0) { + sh_invalidid (list->word->word); + return EXECUTION_FAILURE; + } + + if ( index_flag ) { + if ( list->next == 0 || list->next->next ) { + builtin_usage(); + return EX_USAGE; + } + if (legal_identifier (list->next->word->word) == 0) { + sh_invalidid (list->next->word->word); + return EXECUTION_FAILURE; + } + var = find_or_make_array_variable(list->word->word, 1); + if (var == 0) + return EXECUTION_FAILURE; + var2 = find_variable(list->next->word->word); + if ( !var2 || ( !array_p(var2) && !assoc_p(var2) ) ) { + builtin_error("%s: Not an array", list->next->word->word); + return EXECUTION_FAILURE; + } + return sort_index(var, var2); + } + + while (list) { + word = list->word->word; + var = find_variable(word); + list = list->next; + + if (var == 0 || array_p(var) == 0) { + builtin_error("%s: Not an array", word); + continue; + } + if (readonly_p(var) || noassign_p(var)) { + if (readonly_p(var)) + err_readonly(word); + continue; + } + + if ( (ret = sort_inplace(var)) != EXECUTION_SUCCESS ) + return ret; + } + return EXECUTION_SUCCESS; + +} + +char *asort_doc[] = { + "Sort arrays in-place.", + "", + "Options:", + " -n compare according to string numerical value", + " -r reverse the result of comparisons", + " -i sort using indices/keys", + "", + "If -i is supplied, SOURCE is not sorted in-place, but the indices (or keys", + "if associative) of SOURCE, after sorting it by its values, are placed as", + "values in the indexed array DEST", + "", + "Associative arrays may not be sorted in-place.", + "", + "Exit status:", + "Return value is zero unless an error happened (like invalid variable name", + "or readonly array).", + (char *)NULL +}; + +struct builtin asort_struct = { + "asort", + asort_builtin, + BUILTIN_ENABLED, + asort_doc, + "asort [-nr] array ... or asort [-nr] -i dest source", + 0 +}; diff --git a/bash-5.1/examples/loadables/basename.c b/bash-5.1/examples/loadables/basename.c new file mode 100644 index 0000000..29dd1a6 --- /dev/null +++ b/bash-5.1/examples/loadables/basename.c @@ -0,0 +1,131 @@ +/* basename - return nondirectory portion of pathname */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include "config.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include "builtins.h" +#include "shell.h" +#include "common.h" +#include "bashgetopt.h" + +int +basename_builtin (list) + WORD_LIST *list; +{ + int slen, sufflen, off; + char *string, *suffix, *fn; + + if (no_options (list)) + return (EX_USAGE); + list = loptend; + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + string = list->word->word; + suffix = (char *)NULL; + if (list->next) + { + list = list->next; + suffix = list->word->word; + } + + if (list->next) + { + builtin_usage (); + return (EX_USAGE); + } + + slen = strlen (string); + + /* Strip trailing slashes */ + while (slen > 0 && string[slen - 1] == '/') + slen--; + + /* (2) If string consists entirely of slash characters, string shall be + set to a single slash character. In this case, skip steps (3) + through (5). */ + if (slen == 0) + { + fputs ("/\n", stdout); + return (EXECUTION_SUCCESS); + } + + /* (3) If there are any trailing slash characters in string, they + shall be removed. */ + string[slen] = '\0'; + + /* (4) If there are any slash characters remaining in string, the prefix + of string up to an including the last slash character in string + shall be removed. */ + while (--slen >= 0) + if (string[slen] == '/') + break; + + fn = string + slen + 1; + + /* (5) If the suffix operand is present, is not identical to the + characters remaining in string, and is identical to a suffix + of the characters remaining in string, the suffix suffix + shall be removed from string. Otherwise, string shall not be + modified by this step. */ + if (suffix) + { + sufflen = strlen (suffix); + slen = strlen (fn); + if (sufflen < slen) + { + off = slen - sufflen; + if (strcmp (fn + off, suffix) == 0) + fn[off] = '\0'; + } + } + printf ("%s\n", fn); + return (EXECUTION_SUCCESS); +} + +char *basename_doc[] = { + "Return non-directory portion of pathname.", + "", + "The STRING is converted to a filename corresponding to the last", + "pathname component in STRING. If the suffix string SUFFIX is", + "supplied, it is removed.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. */ +struct builtin basename_struct = { + "basename", /* builtin name */ + basename_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + basename_doc, /* array of long documentation strings. */ + "basename string [suffix]", /* usage synopsis */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/cat.c b/bash-5.1/examples/loadables/cat.c new file mode 100644 index 0000000..be99c4c --- /dev/null +++ b/bash-5.1/examples/loadables/cat.c @@ -0,0 +1,122 @@ +/* + * cat replacement + * + * no options - the way cat was intended + */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include +#include + +#include "builtins.h" +#include "shell.h" + +#ifndef errno +extern int errno; +#endif + +extern char *strerror (); +extern char **make_builtin_argv (); + +static int +fcopy(fd) +int fd; +{ + char buf[1024], *s; + int n, w, e; + + while (n = read(fd, buf, sizeof (buf))) { + w = write(1, buf, n); + if (w != n) { + e = errno; + write(2, "cat: write error: ", 18); + s = strerror(e); + write(2, s, strlen(s)); + write(2, "\n", 1); + return 1; + } + } + return 0; +} + +int +cat_main (argc, argv) +int argc; +char **argv; +{ + int i, fd, r; + char *s; + + if (argc == 1) + return (fcopy(0)); + + for (i = r = 1; i < argc; i++) { + if (argv[i][0] == '-' && argv[i][1] == '\0') + fd = 0; + else { + fd = open(argv[i], O_RDONLY, 0666); + if (fd < 0) { + s = strerror(errno); + write(2, "cat: cannot open ", 17); + write(2, argv[i], strlen(argv[i])); + write(2, ": ", 2); + write(2, s, strlen(s)); + write(2, "\n", 1); + continue; + } + } + r = fcopy(fd); + if (fd != 0) + close(fd); + } + return (r); +} + +int +cat_builtin(list) +WORD_LIST *list; +{ + char **v; + int c, r; + + v = make_builtin_argv(list, &c); + r = cat_main(c, v); + free(v); + + return r; +} + +char *cat_doc[] = { + "Display files.", + "", + "Read each FILE and display it on the standard output. If any", + "FILE is `-' or if no FILE argument is given, the standard input", + "is read.", + (char *)0 +}; + +struct builtin cat_struct = { + "cat", + cat_builtin, + BUILTIN_ENABLED, + cat_doc, + "cat [-] [file ...]", + 0 +}; diff --git a/bash-5.1/examples/loadables/csv.c b/bash-5.1/examples/loadables/csv.c new file mode 100644 index 0000000..11228f1 --- /dev/null +++ b/bash-5.1/examples/loadables/csv.c @@ -0,0 +1,206 @@ +/* csv - process a line of csv data and populate an indexed array with the + fields */ + +/* + Copyright (C) 2020 Free Software Foundation, Inc. + + 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 . +*/ + +/* See Makefile for compilation details. */ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include "bashansi.h" +#include + +#include "loadables.h" + +#define CSV_ARRAY_DEFAULT "CSV" + +#define NQUOTE 0 +#define DQUOTE 1 + +/* Split LINE into comma-separated fields, storing each field into a separate + element of array variable CSV, starting at index 0. The format of LINE is + as described in RFC 4180. */ +static int +csvsplit (csv, line) + SHELL_VAR *csv; + char *line; +{ + arrayind_t ind; + char *field, *prev, *buf, *xbuf; + int delim, qstate; + int b, rval; + + xbuf = 0; + ind = 0; + field = prev = line; + + do + { + if (*prev == '"') + { + if (xbuf == 0) + xbuf = xmalloc (strlen (prev) + 1); + buf = xbuf; + b = 0; + qstate = DQUOTE; + for (field = ++prev; *field; field++) + { + if (qstate == DQUOTE && *field == '"' && field[1] == '"') + buf[b++] = *field++; /* skip double quote */ + else if (qstate == DQUOTE && *field == '"') + qstate = NQUOTE; + else if (qstate == NQUOTE && *field == ',') + break; + else + /* This copies any text between a closing double quote and the + delimiter. If you want to change that, make sure to do the + copy only if qstate == DQUOTE. */ + buf[b++] = *field; + } + buf[b] = '\0'; + } + else + { + buf = prev; + field = prev + strcspn (prev, ","); + } + + delim = *field; + *field = '\0'; + + bind_array_element (csv, ind, buf, 0); + ind++; + + *field = delim; + + if (delim == ',') + prev = field + 1; + } + while (delim == ','); + + if (xbuf) + free (xbuf); + + return (rval = ind); /* number of fields */ +} + +int +csv_builtin (list) + WORD_LIST *list; +{ + int opt, rval; + char *array_name, *csvstring; + SHELL_VAR *v; + + array_name = 0; + rval = EXECUTION_SUCCESS; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "a:")) != -1) + { + switch (opt) + { + case 'a': + array_name = list_optarg; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (array_name == 0) + array_name = CSV_ARRAY_DEFAULT; + + if (legal_identifier (array_name) == 0) + { + sh_invalidid (array_name); + return (EXECUTION_FAILURE); + } + + if (list == 0) + { + builtin_error ("csv string argument required"); + return (EX_USAGE); + } + + v = find_or_make_array_variable (array_name, 1); + if (v == 0 || readonly_p (v) || noassign_p (v)) + { + if (v && readonly_p (v)) + err_readonly (array_name); + return (EXECUTION_FAILURE); + } + else if (array_p (v) == 0) + { + builtin_error ("%s: not an indexed array", array_name); + return (EXECUTION_FAILURE); + } + if (invisible_p (v)) + VUNSETATTR (v, att_invisible); + array_flush (array_cell (v)); + + csvstring = list->word->word; + + if (csvstring == 0 || *csvstring == 0) + return (EXECUTION_SUCCESS); + + opt = csvsplit (v, csvstring); + /* Maybe do something with OPT here, it's the number of fields */ + + return (rval); +} + +/* Called when builtin is enabled and loaded from the shared object. If this + function returns 0, the load fails. */ +int +csv_builtin_load (name) + char *name; +{ + return (1); +} + +/* Called when builtin is disabled. */ +void +csv_builtin_unload (name) + char *name; +{ +} + +char *csv_doc[] = { + "Read comma-separated fields from a string.", + "", + "Parse STRING, a line of comma-separated values, into individual fields,", + "and store them into the indexed array ARRAYNAME starting at index 0.", + "If ARRAYNAME is not supplied, \"CSV\" is the default array name.", + (char *)NULL +}; + +struct builtin csv_struct = { + "csv", /* builtin name */ + csv_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + csv_doc, /* array of long documentation strings. */ + "csv [-a ARRAY] string", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/cut.c b/bash-5.1/examples/loadables/cut.c new file mode 100644 index 0000000..ad9a833 --- /dev/null +++ b/bash-5.1/examples/loadables/cut.c @@ -0,0 +1,625 @@ +/* cut,lcut - extract specified fields from a line and assign them to an array + or print them to the standard output */ + +/* + Copyright (C) 2020 Free Software Foundation, Inc. + + 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 . +*/ + +/* See Makefile for compilation details. */ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include "bashansi.h" +#include +#include +#include + +#include "loadables.h" +#include "shmbutil.h" + +#define CUT_ARRAY_DEFAULT "CUTFIELDS" + +#define NOPOS -2 /* sentinel for unset startpos/endpos */ + +#define BOL 0 +#define EOL INT_MAX +#define NORANGE -1 /* just a position, no range */ + +#define BFLAG (1 << 0) +#define CFLAG (1 << 1) +#define DFLAG (1 << 2) +#define FFLAG (1 << 3) +#define SFLAG (1 << 4) + +struct cutpos +{ + int startpos, endpos; /* zero-based, correction done in getlist() */ +}; + +struct cutop +{ + int flags; + int delim; + int npos; + struct cutpos *poslist; +}; + +static int +poscmp (a, b) + void *a, *b; +{ + struct cutpos *p1, *p2; + + p1 = (struct cutpos *)a; + p2 = (struct cutpos *)b; + return (p1->startpos - p2->startpos); +} + +static int +getlist (arg, opp) + char *arg; + struct cutpos **opp; +{ + char *ntok, *ltok, *larg; + int s, e; + intmax_t num; + struct cutpos *poslist; + int npos, nsize; + + poslist = 0; + nsize = npos = 0; + s = e = 0; + larg = arg; + while (ltok = strsep (&larg, ",")) + { + if (*ltok == 0) + continue; + + ntok = strsep (<ok, "-"); + if (*ntok == 0) + s = BOL; + else + { + if (legal_number (ntok, &num) == 0 || (int)num != num || num <= 0) + { + builtin_error ("%s: invalid list value", ntok); + *opp = poslist; + return -1; + } + s = num; + s--; /* fields are 1-based */ + } + if (ltok == 0) + e = NORANGE; + else if (*ltok == 0) + e = EOL; + else + { + if (legal_number (ltok, &num) == 0 || (int)num != num || num <= 0) + { + builtin_error ("%s: invalid list value", ltok); + *opp = poslist; + return -1; + } + e = num; + e--; + if (e == s) + e = NORANGE; + } + + if (npos == nsize) + { + nsize += 4; + poslist = (struct cutpos *)xrealloc (poslist, nsize * sizeof (struct cutpos)); + } + poslist[npos].startpos = s; + poslist[npos].endpos = e; + npos++; + } + if (npos == 0) + { + builtin_error ("missing list of positions"); + *opp = poslist; + return -1; + } + + qsort (poslist, npos, sizeof(poslist[0]), poscmp); + *opp = poslist; + + return npos; +} + +static int +cutbytes (v, line, ops) + SHELL_VAR *v; + char *line; + struct cutop *ops; +{ + arrayind_t ind; + char *buf, *bmap; + size_t llen; + int i, b, n, s, e; + + llen = strlen (line); + buf = xmalloc (llen + 1); + bmap = xmalloc (llen + 1); + memset (bmap, 0, llen); + + for (n = 0; n < ops->npos; n++) + { + s = ops->poslist[n].startpos; /* no translation needed yet */ + e = ops->poslist[n].endpos; + if (e == NORANGE) + e = s; + else if (e == EOL || e >= llen) + e = llen - 1; + /* even if a column is specified multiple times, it will only be printed + once */ + for (i = s; i <= e; i++) + bmap[i] = 1; + } + + b = 0; + for (i = 0; i < llen; i++) + if (bmap[i]) + buf[b++] = line[i]; + buf[b] = 0; + + if (v) + { + ind = 0; + bind_array_element (v, ind, buf, 0); + ind++; + } + else + printf ("%s\n", buf); + + free (buf); + free (bmap); + + return ind; +} + +static int +cutchars (v, line, ops) + SHELL_VAR *v; + char *line; + struct cutop *ops; +{ + arrayind_t ind; + char *buf, *bmap; + wchar_t *wbuf, *wb2; + size_t llen, wlen; + int i, b, n, s, e; + + if (MB_CUR_MAX == 1) + return (cutbytes (v, line, ops)); + if (locale_utf8locale && utf8_mbsmbchar (line) == 0) + return (cutbytes (v, line, ops)); + + llen = strlen (line); + wbuf = (wchar_t *)xmalloc ((llen + 1) * sizeof (wchar_t)); + + wlen = mbstowcs (wbuf, line, llen); + if (MB_INVALIDCH (wlen)) + { + free (wbuf); + return (cutbytes (v, line, ops)); + } + + bmap = xmalloc (llen + 1); + memset (bmap, 0, llen); + + for (n = 0; n < ops->npos; n++) + { + s = ops->poslist[n].startpos; /* no translation needed yet */ + e = ops->poslist[n].endpos; + if (e == NORANGE) + e = s; + else if (e == EOL || e >= wlen) + e = wlen - 1; + /* even if a column is specified multiple times, it will only be printed + once */ + for (i = s; i <= e; i++) + bmap[i] = 1; + } + + wb2 = (wchar_t *)xmalloc ((wlen + 1) * sizeof (wchar_t)); + b = 0; + for (i = 0; i < wlen; i++) + if (bmap[i]) + wb2[b++] = wbuf[i]; + wb2[b] = 0; + + free (wbuf); + + buf = bmap; + n = wcstombs (buf, wb2, llen); + + if (v) + { + ind = 0; + bind_array_element (v, ind, buf, 0); + ind++; + } + else + printf ("%s\n", buf); + + free (buf); + free (wb2); + + return ind; +} + +/* The basic strategy is to cut the line into fields using strsep, populate + an array of fields from 0..nf, then select those fields using the same + bitmap approach as cut{bytes,chars} and assign them to the array variable + V or print them on stdout. This function obeys SFLAG. */ +static int +cutfields (v, line, ops) + SHELL_VAR *v; + char *line; + struct cutop *ops; +{ + arrayind_t ind; + char *buf, *bmap, *field, **fields, delim[2]; + size_t llen, fsize; + int i, b, n, s, e, nf; + + ind = 0; + + delim[0] = ops->delim; + delim[1] = '\0'; + + fields = 0; + nf = 0; + fsize = 0; + + field = buf = line; + do + { + field = strsep (&buf, delim); /* destructive */ + if (nf == fsize) + { + fsize += 8; + fields = xrealloc (fields, fsize * sizeof (char *)); + } + fields[nf] = field; + if (field) + nf++; + } + while (field); + + if (nf == 1) + { + free (fields); + if (ops->flags & SFLAG) + return ind; + if (v) + { + bind_array_element (v, ind, line, 0); + ind++; + } + else + printf ("%s\n", line); + return ind; + } + + bmap = xmalloc (nf + 1); + memset (bmap, 0, nf); + + for (n = 0; n < ops->npos; n++) + { + s = ops->poslist[n].startpos; /* no translation needed yet */ + e = ops->poslist[n].endpos; + if (e == NORANGE) + e = s; + else if (e == EOL || e >= nf) + e = nf - 1; + /* even if a column is specified multiple times, it will only be printed + once */ + for (i = s; i <= e; i++) + bmap[i] = 1; + } + + for (i = 1, b = 0; b < nf; b++) + { + if (bmap[b] == 0) + continue; + if (v) + { + bind_array_element (v, ind, fields[b], 0); + ind++; + } + else + { + if (i == 0) + putchar (ops->delim); + printf ("%s", fields[b]); + } + i = 0; + } + if (v == 0) + putchar ('\n'); + + return nf; +} + +static int +cutline (v, line, ops) + SHELL_VAR *v; + char *line; + struct cutop *ops; +{ + int rval; + + if (ops->flags & BFLAG) + rval = cutbytes (v, line, ops); + else if (ops->flags & CFLAG) + rval = cutchars (v, line, ops); + else + rval = cutfields (v, line, ops); + + return (rval >= 0 ? EXECUTION_SUCCESS : EXECUTION_FAILURE); +} + +static int +cutfile (v, list, ops) + SHELL_VAR *v; + WORD_LIST *list; + struct cutop *ops; +{ + int fd, unbuffered_read; + char *line, *b; + size_t llen; + WORD_LIST *l; + ssize_t n; + + line = 0; + llen = 0; + + l = list; + do + { + /* for each file */ + if (l == 0 || (l->word->word[0] == '-' && l->word->word[1] == '\0')) + fd = 0; + else + fd = open (l->word->word, O_RDONLY); + if (fd < 0) + { + file_error (l->word->word); + return (EXECUTION_FAILURE); + } + +#ifndef __CYGWIN__ + unbuffered_read = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE); +#else + unbuffered_read = 1; +#endif + + while ((n = zgetline (fd, &line, &llen, '\n', unbuffered_read)) != -1) + cutline (v, line, ops); /* can modify line */ + if (fd > 0) + close (fd); + + if (l) + l = l->next; + } + while (l); + + free (line); + return EXECUTION_SUCCESS; +} + +#define OPTSET(x) ((cutflags & (x)) ? 1 : 0) + +static int +cut_internal (which, list) + int which; /* not used yet */ + WORD_LIST *list; +{ + int opt, rval, cutflags, delim, npos; + char *array_name, *cutstring, *list_arg; + SHELL_VAR *v; + struct cutop op; + struct cutpos *poslist; + + v = 0; + rval = EXECUTION_SUCCESS; + + cutflags = 0; + array_name = 0; + list_arg = 0; + delim = '\t'; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "a:b:c:d:f:sn")) != -1) + { + switch (opt) + { + case 'a': + array_name = list_optarg; + break; + case 'b': + cutflags |= BFLAG; + list_arg = list_optarg; + break; + case 'c': + cutflags |= CFLAG; + list_arg = list_optarg; + break; + case 'd': + cutflags |= DFLAG; + delim = list_optarg[0]; + if (delim == 0 || list_optarg[1]) + { + builtin_error ("delimiter must be a single non-null character"); + return (EX_USAGE); + } + break; + case 'f': + cutflags |= FFLAG; + list_arg = list_optarg; + break; + case 'n': + break; + case 's': + cutflags |= SFLAG; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (array_name && (legal_identifier (array_name) == 0)) + { + sh_invalidid (array_name); + return (EXECUTION_FAILURE); + } + + if (list == 0 && which == 0) + { + builtin_error ("string argument required"); + return (EX_USAGE); + } + + /* options are mutually exclusive and one is required */ + if ((OPTSET (BFLAG) + OPTSET (CFLAG) + OPTSET (FFLAG)) != 1) + { + builtin_usage (); + return (EX_USAGE); + } + + if ((npos = getlist (list_arg, &poslist)) < 0) + { + free (poslist); + return (EXECUTION_FAILURE); + } + + if (array_name) + { + v = find_or_make_array_variable (array_name, 1); + if (v == 0 || readonly_p (v) || noassign_p (v)) + { + if (v && readonly_p (v)) + err_readonly (array_name); + return (EXECUTION_FAILURE); + } + else if (array_p (v) == 0) + { + builtin_error ("%s: not an indexed array", array_name); + return (EXECUTION_FAILURE); + } + if (invisible_p (v)) + VUNSETATTR (v, att_invisible); + array_flush (array_cell (v)); + } + + op.flags = cutflags; + op.delim = delim; + op.npos = npos; + op.poslist = poslist; + + /* we implement cut as a builtin with a cutfile() function that opens each + filename in LIST as a filename (or `-' for stdin) and runs cutline on + every line in the file. */ + if (which == 0) + { + cutstring = list->word->word; + if (cutstring == 0 || *cutstring == 0) + { + free (poslist); + return (EXECUTION_SUCCESS); + } + rval = cutline (v, cutstring, &op); + } + else + rval = cutfile (v, list, &op); + + return (rval); +} + +int +lcut_builtin (list) + WORD_LIST *list; +{ + return (cut_internal (0, list)); +} + +int +cut_builtin (list) + WORD_LIST *list; +{ + return (cut_internal (1, list)); +} + +char *lcut_doc[] = { + "Extract selected fields from a string.", + "", + "Select portions of LINE (as specified by LIST) and assign them to", + "elements of the indexed array ARRAY starting at index 0, or write", + "them to the standard output if -a is not specified.", + "", + "Items specified by LIST are either column positions or fields delimited", + "by a special character, and are described more completely in cut(1).", + "", + "Columns correspond to bytes (-b), characters (-c), or fields (-f). The", + "field delimiter is specified by -d (default TAB). Column numbering", + "starts at 1.", + (char *)NULL +}; + +struct builtin lcut_struct = { + "lcut", /* builtin name */ + lcut_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + lcut_doc, /* array of long documentation strings. */ + "lcut [-a ARRAY] [-b LIST] [-c LIST] [-f LIST] [-d CHAR] [-sn] line", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; + +char *cut_doc[] = { + "Extract selected fields from each line of a file.", + "", + "Select portions of each line (as specified by LIST) from each FILE", + "and write them to the standard output. cut reads from the standard", + "input if no FILE arguments are specified or if a FILE argument is a", + "single hyphen.", + "", + "Items specified by LIST are either column positions or fields delimited", + "by a special character, and are described more completely in cut(1).", + "", + "Columns correspond to bytes (-b), characters (-c), or fields (-f). The", + "field delimiter is specified by -d (default TAB). Column numbering", + "starts at 1.", + (char *)NULL +}; + +struct builtin cut_struct = { + "cut", /* builtin name */ + cut_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + cut_doc, /* array of long documentation strings. */ + "cut [-a ARRAY] [-b LIST] [-c LIST] [-f LIST] [-d CHAR] [-sn] [file ...]", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/dirname.c b/bash-5.1/examples/loadables/dirname.c new file mode 100644 index 0000000..d802ca7 --- /dev/null +++ b/bash-5.1/examples/loadables/dirname.c @@ -0,0 +1,119 @@ +/* dirname - return directory portion of pathname */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include "config.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include "builtins.h" +#include "shell.h" +#include "common.h" +#include "bashgetopt.h" + +int +dirname_builtin (list) + WORD_LIST *list; +{ + int slen; + char *string; + + if (no_options (list)) + return (EX_USAGE); + list = loptend; + + if (list == 0 || list->next) + { + builtin_usage (); + return (EX_USAGE); + } + + string = list->word->word; + slen = strlen (string); + + /* Strip trailing slashes */ + while (slen > 0 && string[slen - 1] == '/') + slen--; + + /* (2) If string consists entirely of slash characters, string shall be + set to a single slash character. In this case, skip steps (3) + through (8). */ + if (slen == 0) + { + fputs ("/\n", stdout); + return (EXECUTION_SUCCESS); + } + + /* (3) If there are any trailing slash characters in string, they + shall be removed. */ + string[slen] = '\0'; + + /* (4) If there are no slash characters remaining in string, string + shall be set to a single period character. In this case, skip + steps (5) through (8). + + (5) If there are any trailing nonslash characters in string, + they shall be removed. */ + + while (--slen >= 0) + if (string[slen] == '/') + break; + + if (slen < 0) + { + fputs (".\n", stdout); + return (EXECUTION_SUCCESS); + } + + /* (7) If there are any trailing slash characters in string, they + shall be removed. */ + while (--slen >= 0) + if (string[slen] != '/') + break; + string[++slen] = '\0'; + + /* (8) If the remaining string is empty, string shall be set to a single + slash character. */ + printf ("%s\n", (slen == 0) ? "/" : string); + return (EXECUTION_SUCCESS); +} + +char *dirname_doc[] = { + "Display directory portion of pathname.", + "", + "The STRING is converted to the name of the directory containing", + "the filename corresponding to the last pathname component in STRING.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. */ +struct builtin dirname_struct = { + "dirname", /* builtin name */ + dirname_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + dirname_doc, /* array of long documentation strings. */ + "dirname string", /* usage synopsis */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/fdflags.c b/bash-5.1/examples/loadables/fdflags.c new file mode 100644 index 0000000..fbe5230 --- /dev/null +++ b/bash-5.1/examples/loadables/fdflags.c @@ -0,0 +1,374 @@ +/* Loadable builtin to get and set file descriptor flags. */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 2017,2018,2019 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include +#include +#include "bashansi.h" +#include + +#include "loadables.h" + +#ifndef FD_CLOEXEC +# define FD_CLOEXEC 1 +#endif + +static const struct +{ + const char *name; + int value; +} file_flags[] = +{ +#ifdef O_APPEND + { "append", O_APPEND }, +#else +# define O_APPEND 0 +#endif +#ifdef O_ASYNC + { "async", O_ASYNC }, +#else +# define O_ASYNC 0 +#endif +#ifdef O_SYNC + { "sync", O_SYNC }, +#else +# define O_SYNC 0 +#endif +#ifdef O_NONBLOCK + { "nonblock", O_NONBLOCK }, +#else +# define O_NONBLOCK 0 +#endif +#ifdef O_FSYNC + { "fsync", O_FSYNC }, +#else +# define O_FSYNC 0 +#endif +#ifdef O_DSYNC + { "dsync", O_DSYNC }, +#else +# define O_DSYNC 0 +#endif +#ifdef O_RSYNC + { "rsync", O_RSYNC }, +#else +# define O_RSYNC 0 +#endif +#ifdef O_ALT_IO + { "altio", O_ALT_IO }, +#else +# define O_ALT_IO 0 +#endif +#ifdef O_DIRECT + { "direct", O_DIRECT }, +#else +# define O_DIRECT 0 +#endif +#ifdef O_NOATIME + { "noatime", O_NOATIME }, +#else +# define O_NOATIME 0 +#endif +#ifdef O_NOSIGPIPE + { "nosigpipe", O_NOSIGPIPE }, +#else +# define O_NOSIGPIPE 0 +#endif + +#ifndef O_CLOEXEC +# define ALLFLAGS (O_APPEND|O_ASYNC|O_SYNC|O_NONBLOCK|O_FSYNC|O_DSYNC|\ + O_RSYNC|O_ALT_IO|O_DIRECT|O_NOATIME|O_NOSIGPIPE) + +/* An unsed bit in the file status flags word we can use to pass around the + state of close-on-exec. */ +# define O_CLOEXEC ((~ALLFLAGS) ^ ((~ALLFLAGS) & ((~ALLFLAGS) - 1))) +#endif + +#ifdef O_CLOEXEC + { "cloexec", O_CLOEXEC }, +#endif +}; + +#define N_FLAGS (sizeof (file_flags) / sizeof (file_flags[0])) + +#ifndef errno +extern int errno; +#endif + +/* FIX THIS */ +static int +getallflags () +{ + int i, allflags; + + for (i = allflags = 0; i < N_FLAGS; i++) + allflags |= file_flags[i].value; + return allflags; +} + +static int +getflags(int fd, int p) +{ + int c, f; + int allflags; + + if ((c = fcntl(fd, F_GETFD)) == -1) + { + if (p) + builtin_error("can't get status for fd %d: %s", fd, strerror(errno)); + return -1; + } + + if ((f = fcntl(fd, F_GETFL)) == -1) + { + if (p) + builtin_error("Can't get flags for fd %d: %s", fd, strerror(errno)); + return -1; + } + + if (c) + f |= O_CLOEXEC; + + return f & getallflags(); +} + +static void +printone(int fd, int p, int verbose) +{ + int f; + size_t i; + + if ((f = getflags(fd, p)) == -1) + return; + + printf ("%d:", fd); + + for (i = 0; i < N_FLAGS; i++) + { + if (f & file_flags[i].value) + { + printf ("%s%s", verbose ? "+" : "", file_flags[i].name); + f &= ~file_flags[i].value; + } + else if (verbose) + printf ( "-%s", file_flags[i].name); + else + continue; + + if (f || (verbose && i != N_FLAGS - 1)) + putchar (','); + } + printf ("\n"); +} + +static int +parseflags(char *s, int *p, int *n) +{ + int f, *v; + size_t i; + + f = 0; + *p = *n = 0; + + for (s = strtok(s, ","); s; s = strtok(NULL, ",")) + { + switch (*s) + { + case '+': + v = p; + s++; + break; + case '-': + v = n; + s++; + break; + default: + v = &f; + break; + } + + for (i = 0; i < N_FLAGS; i++) + if (strcmp(s, file_flags[i].name) == 0) + { + *v |= file_flags[i].value; + break; + } + if (i == N_FLAGS) + builtin_error("invalid flag `%s'", s); + } + + return f; +} + +static void +setone(int fd, char *v, int verbose) +{ + int f, n, pos, neg, cloexec; + + f = getflags(fd, 1); + if (f == -1) + return; + + parseflags(v, &pos, &neg); + + cloexec = -1; + + if ((pos & O_CLOEXEC) && (f & O_CLOEXEC) == 0) + cloexec = FD_CLOEXEC; + if ((neg & O_CLOEXEC) && (f & O_CLOEXEC)) + cloexec = 0; + + if (cloexec != -1 && fcntl(fd, F_SETFD, cloexec) == -1) + builtin_error("can't set status for fd %d: %s", fd, strerror(errno)); + + pos &= ~O_CLOEXEC; + neg &= ~O_CLOEXEC; + f &= ~O_CLOEXEC; + + n = f; + n |= pos; + n &= ~neg; + + if (n != f && fcntl(fd, F_SETFL, n) == -1) + builtin_error("can't set flags for fd %d: %s", fd, strerror(errno)); +} + +static int +getmaxfd () +{ + int maxfd, ignore; + +#ifdef F_MAXFD + maxfd = fcntl (0, F_MAXFD); + if (maxfd > 0) + return maxfd; +#endif + + maxfd = getdtablesize (); + if (maxfd <= 0) + maxfd = HIGH_FD_MAX; + for (maxfd--; maxfd > 0; maxfd--) + if (fcntl (maxfd, F_GETFD, &ignore) != -1) + break; + + return maxfd; +} + +int +fdflags_builtin (WORD_LIST *list) +{ + int opt, maxfd, i, num, verbose, setflag; + char *setspec; + WORD_LIST *l; + intmax_t inum; + + setflag = verbose = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "s:v")) != -1) + { + switch (opt) + { + case 's': + setflag = 1; + setspec = list_optarg; + break; + case 'v': + verbose = 1; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + + } + list = loptend; + + /* Maybe we could provide some default here, but we don't yet. */ + if (list == 0 && setflag) + return (EXECUTION_SUCCESS); + + if (list == 0) + { + maxfd = getmaxfd (); + if (maxfd < 0) + { + builtin_error ("can't get max fd: %s", strerror (errno)); + return (EXECUTION_FAILURE); + } + for (i = 0; i < maxfd; i++) + printone (i, 0, verbose); + return (EXECUTION_SUCCESS); + } + + opt = EXECUTION_SUCCESS; + for (l = list; l; l = l->next) + { + if (legal_number (l->word->word, &inum) == 0 || inum < 0) + { + builtin_error ("%s: invalid file descriptor", l->word->word); + opt = EXECUTION_FAILURE; + continue; + } + num = inum; /* truncate to int */ + if (setflag) + setone (num, setspec, verbose); + else + printone (num, 1, verbose); + } + + return (opt); +} + +char *fdflags_doc[] = +{ + "Display and modify file descriptor flags.", + "", + "Display or, if the -s option is supplied, set flags for each file", + "descriptor supplied as an argument. If the -v option is supplied,", + "the display is verbose, including each settable option name in the", + "form of a string such as that accepted by the -s option.", + "", + "The -s option accepts a string with a list of flag names, each preceded", + "by a `+' (set) or `-' (unset). Those changes are applied to each file", + "descriptor supplied as an argument.", + "", + "If no file descriptor arguments are supplied, the displayed information", + "consists of the status of flags for each of the shell's open files.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. The flags must include BUILTIN_ENABLED so the + builtin can be used. */ +struct builtin fdflags_struct = { + "fdflags", /* builtin name */ + fdflags_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + fdflags_doc, /* array of long documentation strings. */ + "fdflags [-v] [-s flags_string] [fd ...]", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/finfo.c b/bash-5.1/examples/loadables/finfo.c new file mode 100644 index 0000000..8c278c3 --- /dev/null +++ b/bash-5.1/examples/loadables/finfo.c @@ -0,0 +1,629 @@ +/* + * finfo - print file info + * + * Chet Ramey + * chet@po.cwru.edu + */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#ifdef MAJOR_IN_MKDEV +# include +#endif +#ifdef MAJOR_IN_SYSMACROS +# include +#endif +#include "posixstat.h" +#include +#include +#include +#include +#include "posixtime.h" + +#include "bashansi.h" +#include "shell.h" +#include "builtins.h" +#include "common.h" +#include "getopt.h" + +#ifndef errno +extern int errno; +#endif + +extern char **make_builtin_argv (); + +static void perms(); +static int printst(); +static int printsome(); +static void printmode(); +static int printfinfo(); +static int finfo_main(); + +extern int sh_optind; +extern char *sh_optarg; +extern char *this_command_name; + +static char *prog; +static int pmask; + +#define OPT_UID 0x00001 +#define OPT_GID 0x00002 +#define OPT_DEV 0x00004 +#define OPT_INO 0x00008 +#define OPT_PERM 0x00010 +#define OPT_LNKNAM 0x00020 +#define OPT_FID 0x00040 +#define OPT_NLINK 0x00080 +#define OPT_RDEV 0x00100 +#define OPT_SIZE 0x00200 +#define OPT_ATIME 0x00400 +#define OPT_MTIME 0x00800 +#define OPT_CTIME 0x01000 +#define OPT_BLKSIZE 0x02000 +#define OPT_BLKS 0x04000 +#define OPT_FTYPE 0x08000 +#define OPT_PMASK 0x10000 +#define OPT_OPERM 0x20000 + +#define OPT_ASCII 0x1000000 + +#define OPTIONS "acdgiflmnopsuACGMP:U" + +static int +octal(s) +char *s; +{ + int r; + + r = *s - '0'; + while (*++s >= '0' && *s <= '7') + r = (r * 8) + (*s - '0'); + return r; +} + +static int +finfo_main(argc, argv) +int argc; +char **argv; +{ + register int i; + int mode, flags, opt; + + sh_optind = 0; /* XXX */ + prog = base_pathname(argv[0]); + if (argc == 1) { + builtin_usage(); + return(1); + } + flags = 0; + while ((opt = sh_getopt(argc, argv, OPTIONS)) != EOF) { + switch(opt) { + case 'a': flags |= OPT_ATIME; break; + case 'A': flags |= OPT_ATIME|OPT_ASCII; break; + case 'c': flags |= OPT_CTIME; break; + case 'C': flags |= OPT_CTIME|OPT_ASCII; break; + case 'd': flags |= OPT_DEV; break; + case 'i': flags |= OPT_INO; break; + case 'f': flags |= OPT_FID; break; + case 'g': flags |= OPT_GID; break; + case 'G': flags |= OPT_GID|OPT_ASCII; break; + case 'l': flags |= OPT_LNKNAM; break; + case 'm': flags |= OPT_MTIME; break; + case 'M': flags |= OPT_MTIME|OPT_ASCII; break; + case 'n': flags |= OPT_NLINK; break; + case 'o': flags |= OPT_OPERM; break; + case 'p': flags |= OPT_PERM; break; + case 'P': flags |= OPT_PMASK; pmask = octal(sh_optarg); break; + case 's': flags |= OPT_SIZE; break; + case 'u': flags |= OPT_UID; break; + case 'U': flags |= OPT_UID|OPT_ASCII; break; + default: builtin_usage (); return(1); + } + } + + argc -= sh_optind; + argv += sh_optind; + + if (argc == 0) { + builtin_usage(); + return(1); + } + + for (i = 0; i < argc; i++) + opt = flags ? printsome (argv[i], flags) : printfinfo(argv[i]); + + return(opt); +} + +static struct stat * +getstat(f) +char *f; +{ + static struct stat st; + int fd, r; + intmax_t lfd; + + if (strncmp(f, "/dev/fd/", 8) == 0) { + if ((legal_number(f + 8, &lfd) == 0) || (int)lfd != lfd) { + builtin_error("%s: invalid fd", f + 8); + return ((struct stat *)0); + } + fd = lfd; + r = fstat(fd, &st); + } else +#ifdef HAVE_LSTAT + r = lstat(f, &st); +#else + r = stat(f, &st); +#endif + if (r < 0) { + builtin_error("%s: cannot stat: %s", f, strerror(errno)); + return ((struct stat *)0); + } + return (&st); +} + +static int +printfinfo(f) +char *f; +{ + struct stat *st; + + st = getstat(f); + return (st ? printst(st) : 1); +} + +static int +getperm(m) +int m; +{ + return (m & (S_IRWXU|S_IRWXG|S_IRWXO|S_ISUID|S_ISGID)); +} + +static void +perms(m) +int m; +{ + char ubits[4], gbits[4], obits[4]; /* u=rwx,g=rwx,o=rwx */ + int i; + + i = 0; + if (m & S_IRUSR) + ubits[i++] = 'r'; + if (m & S_IWUSR) + ubits[i++] = 'w'; + if (m & S_IXUSR) + ubits[i++] = 'x'; + ubits[i] = '\0'; + + i = 0; + if (m & S_IRGRP) + gbits[i++] = 'r'; + if (m & S_IWGRP) + gbits[i++] = 'w'; + if (m & S_IXGRP) + gbits[i++] = 'x'; + gbits[i] = '\0'; + + i = 0; + if (m & S_IROTH) + obits[i++] = 'r'; + if (m & S_IWOTH) + obits[i++] = 'w'; + if (m & S_IXOTH) + obits[i++] = 'x'; + obits[i] = '\0'; + + if (m & S_ISUID) + ubits[2] = (m & S_IXUSR) ? 's' : 'S'; + if (m & S_ISGID) + gbits[2] = (m & S_IXGRP) ? 's' : 'S'; + if (m & S_ISVTX) + obits[2] = (m & S_IXOTH) ? 't' : 'T'; + + printf ("u=%s,g=%s,o=%s", ubits, gbits, obits); +} + +static void +printmode(mode) +int mode; +{ + if (S_ISBLK(mode)) + printf("S_IFBLK "); + if (S_ISCHR(mode)) + printf("S_IFCHR "); + if (S_ISDIR(mode)) + printf("S_IFDIR "); + if (S_ISREG(mode)) + printf("S_IFREG "); + if (S_ISFIFO(mode)) + printf("S_IFIFO "); + if (S_ISLNK(mode)) + printf("S_IFLNK "); + if (S_ISSOCK(mode)) + printf("S_IFSOCK "); +#ifdef S_ISWHT + if (S_ISWHT(mode)) + printf("S_ISWHT "); +#endif + perms(getperm(mode)); + printf("\n"); +} + +static int +printst(st) +struct stat *st; +{ + struct passwd *pw; + struct group *gr; + char *owner; + int ma, mi, d; + + ma = major (st->st_rdev); + mi = minor (st->st_rdev); +#if defined (makedev) + d = makedev (ma, mi); +#else + d = st->st_rdev & 0xFF; +#endif + printf("Device (major/minor): %d (%d/%d)\n", d, ma, mi); + + printf("Inode: %d\n", (int) st->st_ino); + printf("Mode: (%o) ", (int) st->st_mode); + printmode((int) st->st_mode); + printf("Link count: %d\n", (int) st->st_nlink); + pw = getpwuid(st->st_uid); + owner = pw ? pw->pw_name : "unknown"; + printf("Uid of owner: %d (%s)\n", (int) st->st_uid, owner); + gr = getgrgid(st->st_gid); + owner = gr ? gr->gr_name : "unknown"; + printf("Gid of owner: %d (%s)\n", (int) st->st_gid, owner); + printf("Device type: %d\n", (int) st->st_rdev); + printf("File size: %ld\n", (long) st->st_size); + printf("File last access time: %s", ctime (&st->st_atime)); + printf("File last modify time: %s", ctime (&st->st_mtime)); + printf("File last status change time: %s", ctime (&st->st_ctime)); + fflush(stdout); + return(0); +} + +static int +printsome(f, flags) +char *f; +int flags; +{ + struct stat *st; + struct passwd *pw; + struct group *gr; + int p; + char *b; + + st = getstat(f); + if (st == NULL) + return (1); + + /* Print requested info */ + if (flags & OPT_ATIME) { + if (flags & OPT_ASCII) + printf("%s", ctime(&st->st_atime)); + else + printf("%ld\n", st->st_atime); + } else if (flags & OPT_MTIME) { + if (flags & OPT_ASCII) + printf("%s", ctime(&st->st_mtime)); + else + printf("%ld\n", st->st_mtime); + } else if (flags & OPT_CTIME) { + if (flags & OPT_ASCII) + printf("%s", ctime(&st->st_ctime)); + else + printf("%ld\n", st->st_ctime); + } else if (flags & OPT_DEV) + printf("%lu\n", (unsigned long)st->st_dev); + else if (flags & OPT_INO) + printf("%lu\n", (unsigned long)st->st_ino); + else if (flags & OPT_FID) + printf("%lu:%lu\n", (unsigned long)st->st_dev, (unsigned long)st->st_ino); + else if (flags & OPT_NLINK) + printf("%lu\n", (unsigned long)st->st_nlink); + else if (flags & OPT_LNKNAM) { +#ifdef S_ISLNK + b = xmalloc(4096); + p = readlink(f, b, 4096); + if (p >= 0 && p < 4096) + b[p] = '\0'; + else { + p = errno; + strcpy(b, prog); + strcat(b, ": "); + strcat(b, strerror(p)); + } + printf("%s\n", b); + free(b); +#else + printf("%s\n", f); +#endif + } else if (flags & OPT_PERM) { + perms(st->st_mode); + printf("\n"); + } else if (flags & OPT_OPERM) + printf("%o\n", getperm(st->st_mode)); + else if (flags & OPT_PMASK) + printf("%o\n", getperm(st->st_mode) & pmask); + else if (flags & OPT_UID) { + pw = getpwuid(st->st_uid); + if (flags & OPT_ASCII) + printf("%s\n", pw ? pw->pw_name : "unknown"); + else + printf("%d\n", st->st_uid); + } else if (flags & OPT_GID) { + gr = getgrgid(st->st_gid); + if (flags & OPT_ASCII) + printf("%s\n", gr ? gr->gr_name : "unknown"); + else + printf("%d\n", st->st_gid); + } else if (flags & OPT_SIZE) + printf("%ld\n", (long) st->st_size); + + return (0); +} + +#ifndef NOBUILTIN +int +finfo_builtin(list) + WORD_LIST *list; +{ + int c, r; + char **v; + WORD_LIST *l; + + v = make_builtin_argv (list, &c); + r = finfo_main (c, v); + free (v); + + return r; +} + +static char *finfo_doc[] = { + "Display information about file attributes.", + "", + "Display information about each FILE. Only single operators should", + "be supplied. If no options are supplied, a summary of the info", + "available about each FILE is printed. If FILE is of the form", + "/dev/fd/XX, file descriptor XX is described. Operators, if supplied,", + "have the following meanings:", + "", + " -a last file access time", + " -A last file access time in ctime format", + " -c last file status change time", + " -C last file status change time in ctime format", + " -m last file modification time", + " -M last file modification time in ctime format", + " -d device", + " -i inode", + " -f composite file identifier (device:inode)", + " -g gid of owner", + " -G group name of owner", + " -l name of file pointed to by symlink", + " -n link count", + " -o permissions in octal", + " -p permissions in ascii", + " -P mask permissions ANDed with MASK (like with umask)", + " -s file size in bytes", + " -u uid of owner", + " -U user name of owner", + (char *)0 +}; + +struct builtin finfo_struct = { + "finfo", + finfo_builtin, + BUILTIN_ENABLED, + finfo_doc, + "finfo [-acdgiflmnopsuACGMPU] file [file...]", + 0 +}; +#endif + +#ifdef NOBUILTIN +#if defined (PREFER_STDARG) +# include +#else +# if defined (PREFER_VARARGS) +# include +# endif +#endif + +char *this_command_name; + +main(argc, argv) +int argc; +char **argv; +{ + this_command_name = argv[0]; + exit(finfo_main(argc, argv)); +} + +void +builtin_usage() +{ + fprintf(stderr, "%s: usage: %s [-%s] [file ...]\n", prog, prog, OPTIONS); +} + +#ifndef HAVE_STRERROR +char * +strerror(e) +int e; +{ + static char ebuf[40]; + extern int sys_nerr; + extern char *sys_errlist[]; + + if (e < 0 || e > sys_nerr) { + sprintf(ebuf,"Unknown error code %d", e); + return (&ebuf[0]); + } + return (sys_errlist[e]); +} +#endif + +char * +xmalloc(s) +size_t s; +{ + char *ret; + extern char *malloc(); + + ret = malloc(s); + if (ret) + return (ret); + fprintf(stderr, "%s: cannot malloc %d bytes\n", prog, s); + exit(1); +} + +char * +base_pathname(p) +char *p; +{ + char *t; + + if (t = strrchr(p, '/')) + return(++t); + return(p); +} + +int +legal_number (string, result) + char *string; + long *result; +{ + int sign; + long value; + + sign = 1; + value = 0; + + if (result) + *result = 0; + + /* Skip leading whitespace characters. */ + while (whitespace (*string)) + string++; + + if (!*string) + return (0); + + /* We allow leading `-' or `+'. */ + if (*string == '-' || *string == '+') + { + if (!digit (string[1])) + return (0); + + if (*string == '-') + sign = -1; + + string++; + } + + while (digit (*string)) + { + if (result) + value = (value * 10) + digit_value (*string); + string++; + } + + /* Skip trailing whitespace, if any. */ + while (whitespace (*string)) + string++; + + /* Error if not at end of string. */ + if (*string) + return (0); + + if (result) + *result = value * sign; + + return (1); +} + +int sh_optind; +char *sh_optarg; +int sh_opterr; + +extern int optind; +extern char *optarg; + +int +sh_getopt(c, v, o) +int c; +char **v, *o; +{ + int r; + + r = getopt(c, v, o); + sh_optind = optind; + sh_optarg = optarg; + return r; +} + +#if defined (USE_VARARGS) +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; + + if (this_command_name && *this_command_name) + fprintf (stderr, "%s: ", this_command_name); + +#if defined (PREFER_STDARG) + va_start (args, format); +#else + va_start (args); +#endif + + vfprintf (stderr, format, args); + va_end (args); + fprintf (stderr, "\n"); +} +#else +void +builtin_error (format, arg1, arg2, arg3, arg4, arg5) + char *format, *arg1, *arg2, *arg3, *arg4, *arg5; +{ + if (this_command_name && *this_command_name) + fprintf (stderr, "%s: ", this_command_name); + + fprintf (stderr, format, arg1, arg2, arg3, arg4, arg5); + fprintf (stderr, "\n"); + fflush (stderr); +} +#endif /* !USE_VARARGS */ + +#endif diff --git a/bash-5.1/examples/loadables/head.c b/bash-5.1/examples/loadables/head.c new file mode 100644 index 0000000..1edca6c --- /dev/null +++ b/bash-5.1/examples/loadables/head.c @@ -0,0 +1,167 @@ +/* head - copy first part of files. */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include "config.h" + +#include "bashtypes.h" +#include "posixstat.h" +#include "filecntl.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" + +#include +#include +#include "chartypes.h" + +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +static void +munge_list (list) + WORD_LIST *list; +{ + WORD_LIST *l, *nl; + WORD_DESC *wd; + char *arg; + + for (l = list; l; l = l->next) + { + arg = l->word->word; + if (arg[0] != '-' || arg[1] == '-' || (DIGIT(arg[1]) == 0)) + return; + /* We have -[0-9]* */ + wd = make_bare_word (arg+1); + nl = make_word_list (wd, l->next); + l->word->word[1] = 'n'; + l->word->word[2] = '\0'; + l->next = nl; + l = nl; /* skip over new argument */ + } +} + +static int +file_head (fp, cnt) + FILE *fp; + int cnt; +{ + int ch; + + while (cnt--) + { + while ((ch = getc (fp)) != EOF) + { + if (putchar (ch) == EOF) + { + builtin_error ("write error: %s", strerror (errno)); + return EXECUTION_FAILURE; + } + if (ch == '\n') + break; + } + } + return (EXECUTION_SUCCESS); +} + +int +head_builtin (list) + WORD_LIST *list; +{ + int nline, opt, rval; + WORD_LIST *l; + FILE *fp; + + char *t; + + munge_list (list); /* change -num into -n num */ + + reset_internal_getopt (); + nline = 10; + while ((opt = internal_getopt (list, "n:")) != -1) + { + switch (opt) + { + case 'n': + nline = atoi (list_optarg); + if (nline <= 0) + { + builtin_error ("bad line count: %s", list_optarg); + return (EX_USAGE); + } + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) + return (file_head (stdin, nline)); + + for (rval = EXECUTION_SUCCESS, opt = 1, l = list; l; l = l->next) + { + fp = fopen (l->word->word, "r"); + if (fp == NULL) + { + builtin_error ("%s: %s", l->word->word, strerror (errno)); + continue; + } + if (list->next) /* more than one file */ + { + printf ("%s==> %s <==\n", opt ? "" : "\n", l->word->word); + opt = 0; + } + rval = file_head (fp, nline); + fclose (fp); + } + + return (rval); +} + +char *head_doc[] = { + "Display lines from beginning of file.", + "", + "Copy the first N lines from the input files to the standard output.", + "N is supplied as an argument to the `-n' option. If N is not given,", + "the first ten lines are copied.", + (char *)NULL +}; + +struct builtin head_struct = { + "head", /* builtin name */ + head_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + head_doc, /* array of long documentation strings. */ + "head [-n num] [file ...]", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/hello.c b/bash-5.1/examples/loadables/hello.c new file mode 100644 index 0000000..b09362b --- /dev/null +++ b/bash-5.1/examples/loadables/hello.c @@ -0,0 +1,96 @@ +/* Sample builtin to be dynamically loaded with enable -f and create a new + builtin. */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#include "loadables.h" + +/* A builtin `xxx' is normally implemented with an `xxx_builtin' function. + If you're converting a command that uses the normal Unix argc/argv + calling convention, use argv = make_builtin_argv (list, &argc) and call + the original `main' something like `xxx_main'. Look at cat.c for an + example. + + Builtins should use internal_getopt to parse options. It is the same as + getopt(3), but it takes a WORD_LIST *. Look at print.c for an example + of its use. + + If the builtin takes no options, call no_options(list) before doing + anything else. If it returns a non-zero value, your builtin should + immediately return EX_USAGE. Look at logname.c for an example. + + A builtin command returns EXECUTION_SUCCESS for success and + EXECUTION_FAILURE to indicate failure. */ +int +hello_builtin (list) + WORD_LIST *list; +{ + printf("hello world\n"); + fflush (stdout); + return (EXECUTION_SUCCESS); +} + +int +hello_builtin_load (s) + char *s; +{ + printf ("hello builtin loaded\n"); + fflush (stdout); + return (1); +} + +void +hello_builtin_unload (s) + char *s; +{ + printf ("hello builtin unloaded\n"); + fflush (stdout); +} + +/* An array of strings forming the `long' documentation for a builtin xxx, + which is printed by `help xxx'. It must end with a NULL. By convention, + the first line is a short description. */ +char *hello_doc[] = { + "Sample builtin.", + "", + "this is the long doc for the sample hello builtin", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. The flags must include BUILTIN_ENABLED so the + builtin can be used. */ +struct builtin hello_struct = { + "hello", /* builtin name */ + hello_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + hello_doc, /* array of long documentation strings. */ + "hello", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/id.c b/bash-5.1/examples/loadables/id.c new file mode 100644 index 0000000..f857b54 --- /dev/null +++ b/bash-5.1/examples/loadables/id.c @@ -0,0 +1,329 @@ +/* + * id - POSIX.2 user identity + * + * (INCOMPLETE -- supplementary groups for other users not yet done) + * + * usage: id [-Ggu] [-nr] [user] + * + * The default output format looks something like: + * uid=xxx(chet) gid=xx groups=aa(aname), bb(bname), cc(cname) + */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include +#include +#include "bashtypes.h" +#include +#include +#include "bashansi.h" + +#ifdef HAVE_LIMITS_H +# include +#else +# include +#endif + +#if !defined (HAVE_GETPW_DECLS) +extern struct passwd *getpwuid (); +#endif +extern struct group *getgrgid (); + +#include "shell.h" +#include "builtins.h" +#include "stdc.h" +#include "common.h" +#include "bashgetopt.h" + +#define ID_ALLGROUPS 0x001 /* -G */ +#define ID_GIDONLY 0x002 /* -g */ +#define ID_USENAME 0x004 /* -n */ +#define ID_USEREAL 0x008 /* -r */ +#define ID_USERONLY 0x010 /* -u */ + +#define ID_FLAGSET(s) ((id_flags & (s)) != 0) + +static int id_flags; + +static uid_t ruid, euid; +static gid_t rgid, egid; + +static char *id_user; + +static int inituser (); + +static int id_pruser (); +static int id_prgrp (); +static int id_prgroups (); +static int id_prall (); + +int +id_builtin (list) + WORD_LIST *list; +{ + int opt; + char *user; + + id_flags = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "Ggnru")) != -1) + { + switch (opt) + { + case 'G': id_flags |= ID_ALLGROUPS; break; + case 'g': id_flags |= ID_GIDONLY; break; + case 'n': id_flags |= ID_USENAME; break; + case 'r': id_flags |= ID_USEREAL; break; + case 'u': id_flags |= ID_USERONLY; break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + user = list ? list->word->word : (char *)NULL; + + /* Check for some invalid option combinations */ + opt = ID_FLAGSET (ID_ALLGROUPS) + ID_FLAGSET (ID_GIDONLY) + ID_FLAGSET (ID_USERONLY); + if (opt > 1 || (opt == 0 && ((id_flags & (ID_USEREAL|ID_USENAME)) != 0))) + { + builtin_usage (); + return (EX_USAGE); + } + + if (list && list->next) + { + builtin_usage (); + return (EX_USAGE); + } + + if (inituser (user) < 0) + return (EXECUTION_FAILURE); + + opt = 0; + if (id_flags & ID_USERONLY) + opt += id_pruser ((id_flags & ID_USEREAL) ? ruid : euid); + else if (id_flags & ID_GIDONLY) + opt += id_prgrp ((id_flags & ID_USEREAL) ? rgid : egid); + else if (id_flags & ID_ALLGROUPS) + opt += id_prgroups (user); + else + opt += id_prall (user); + putchar ('\n'); + fflush (stdout); + + return (opt == 0 ? EXECUTION_SUCCESS : EXECUTION_FAILURE); +} + +static int +inituser (uname) + char *uname; +{ + struct passwd *pwd; + + if (uname) + { + pwd = getpwnam (uname); + if (pwd == 0) + { + builtin_error ("%s: no such user", uname); + return -1; + } + ruid = euid = pwd->pw_uid; + rgid = egid = pwd->pw_gid; + } + else + { + ruid = current_user.uid; + euid = current_user.euid; + rgid = current_user.gid; + egid = current_user.egid; + } + return 0; +} + +/* Print the name or value of user ID UID. */ +static int +id_pruser (uid) + int uid; +{ + struct passwd *pwd = NULL; + int r; + + r = 0; + if (id_flags & ID_USENAME) + { + pwd = getpwuid (uid); + if (pwd == NULL) + r = 1; + } + if (pwd) + printf ("%s", pwd->pw_name); + else + printf ("%u", (unsigned) uid); + + return r; +} + +/* Print the name or value of group ID GID. */ + +static int +id_prgrp (gid) + int gid; +{ + struct group *grp = NULL; + int r; + + r = 0; + if (id_flags & ID_USENAME) + { + grp = getgrgid (gid); + if (grp == NULL) + r = 1; + } + + if (grp) + printf ("%s", grp->gr_name); + else + printf ("%u", (unsigned) gid); + + return r; +} + +static int +id_prgroups (uname) + char *uname; +{ + int *glist, ng, i, r; + + r = 0; + id_prgrp (rgid); + if (egid != rgid) + { + putchar (' '); + id_prgrp (egid); + } + + if (uname) + { + builtin_error ("supplementary groups for other users not yet implemented"); + glist = (int *)NULL; + ng = 0; + r = 1; + } + else + glist = get_group_array (&ng); + + for (i = 0; i < ng; i++) + if (glist[i] != rgid && glist[i] != egid) + { + putchar (' '); + id_prgrp (glist[i]); + } + + return r; +} + +static int +id_prall (uname) + char *uname; +{ + int r, i, ng, *glist; + struct passwd *pwd; + struct group *grp; + + r = 0; + printf ("uid=%u", (unsigned) ruid); + pwd = getpwuid (ruid); + if (pwd == NULL) + r = 1; + else + printf ("(%s)", pwd->pw_name); + + printf (" gid=%u", (unsigned) rgid); + grp = getgrgid (rgid); + if (grp == NULL) + r = 1; + else + printf ("(%s)", grp->gr_name); + + if (euid != ruid) + { + printf (" euid=%u", (unsigned) euid); + pwd = getpwuid (euid); + if (pwd == NULL) + r = 1; + else + printf ("(%s)", pwd->pw_name); + } + + if (egid != rgid) + { + printf (" egid=%u", (unsigned) egid); + grp = getgrgid (egid); + if (grp == NULL) + r = 1; + else + printf ("(%s)", grp->gr_name); + } + + if (uname) + { + builtin_error ("supplementary groups for other users not yet implemented"); + glist = (int *)NULL; + ng = 0; + r = 1; + } + else + glist = get_group_array (&ng); + + if (ng > 0) + printf (" groups="); + for (i = 0; i < ng; i++) + { + if (i > 0) + printf (", "); + printf ("%u", (unsigned) glist[i]); + grp = getgrgid (glist[i]); + if (grp == NULL) + r = 1; + else + printf ("(%s)", grp->gr_name); + } + + return r; +} + +char *id_doc[] = { + "Display information about user." + "", + "Return information about user identity", + (char *)NULL +}; + +struct builtin id_struct = { + "id", + id_builtin, + BUILTIN_ENABLED, + id_doc, + "id [user]\n\tid -G [-n] [user]\n\tid -g [-nr] [user]\n\tid -u [-nr] [user]", + 0 +}; diff --git a/bash-5.1/examples/loadables/ln.c b/bash-5.1/examples/loadables/ln.c new file mode 100644 index 0000000..874e9db --- /dev/null +++ b/bash-5.1/examples/loadables/ln.c @@ -0,0 +1,236 @@ +/* ln - make links */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include "config.h" + +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "posixstat.h" + +#include +#include + +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +typedef int unix_link_syscall_t PARAMS((const char *, const char *)); + +#define LN_SYMLINK 0x01 +#define LN_UNLINK 0x02 +#define LN_NOFOLLOW 0x04 + +static unix_link_syscall_t *linkfn; +static int dolink (); + +int +ln_builtin (list) + WORD_LIST *list; +{ + int rval, opt, flags; + WORD_LIST *l; + char *sdir; + struct stat sb; + + flags = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "fs")) != -1) + { + switch (opt) + { + case 'f': + flags |= LN_UNLINK; + break; + case 's': + flags |= LN_SYMLINK; + break; + case 'h': + case 'n': + flags |= LN_NOFOLLOW; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + linkfn = (flags & LN_SYMLINK) ? symlink : link; + + if (list->next == 0) /* ln target, equivalent to ln target . */ + return (dolink (list->word->word, ".", flags)); + + if (list->next->next == 0) /* ln target source */ + return (dolink (list->word->word, list->next->word->word, flags)); + + /* ln target1 target2 ... directory */ + + /* find last argument: target directory, and make sure it's an existing + directory. */ + for (l = list; l->next; l = l->next) + ; + sdir = l->word->word; + + if (stat(sdir, &sb) < 0) + { + builtin_error ("%s", sdir); + return (EXECUTION_FAILURE); + } + + if (S_ISDIR (sb.st_mode) == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + for (rval = EXECUTION_SUCCESS; list != l; list = list->next) + rval += dolink (list->word->word, sdir, flags); + + return rval; +} + +static char * +mkdirpath (dir, file) + char *dir, *file; +{ + int dlen, flen; + char *ret; + + dlen = strlen (dir); + flen = strlen (file); + + ret = xmalloc (2 + dlen + flen); + + strcpy (ret, dir); + if (ret[dlen - 1] != '/') + ret[dlen++] = '/'; + strcpy (ret + dlen, file); + return ret; +} + +#if defined (HAVE_LSTAT) +# define LSTAT lstat +# define LSTAT_OR_STAT_IF(c, f, b) ((c) ? lstat((f), (b)) : stat((f), (b))) +#else +# define LSTAT stat +# define LSTAT_OR_STAT_IF(c, f, b) (stat((f), (b))) +#endif + +static int +dolink (src, dst, flags) + char *src, *dst; + int flags; +{ + struct stat ssb, dsb; + int exists; + char *dst_path, *p; + + /* If we're not doing symlinks, the source must exist and not be a + directory. */ + if ((flags & LN_SYMLINK) == 0) + { + if (stat (src, &ssb) != 0) + { + builtin_error ("%s: %s", src, strerror (errno)); + return (EXECUTION_FAILURE); + } + if (S_ISDIR (ssb.st_mode)) + { + errno = EISDIR; + builtin_error ("%s: %s", src, strerror (errno)); + return (EXECUTION_FAILURE); + } + } + + /* If the destination is a directory, create the final filename by appending + the basename of the source to the destination. */ + dst_path = 0; + if ((LSTAT_OR_STAT_IF((flags & LN_NOFOLLOW), dst, &dsb) == 0) && S_ISDIR (dsb.st_mode)) + { + if ((p = strrchr (src, '/')) == 0) + p = src; + else + p++; + + dst_path = mkdirpath (dst, p); + dst = dst_path; + } + + exists = LSTAT (dst, &dsb) == 0; + + /* If -f was specified, and the destination exists, unlink it. */ + if ((flags & LN_UNLINK) && exists && unlink (dst) != 0) + { + builtin_error ("%s: cannot unlink: %s", dst, strerror (errno)); + FREE (dst_path); + return (EXECUTION_FAILURE); + } + + /* Perform the link. */ + if ((*linkfn) (src, dst) != 0) + { + builtin_error ("cannot link %s to %s: %s", dst, src, strerror (errno)); + FREE (dst_path); + return (EXECUTION_FAILURE); + } + + FREE (dst_path); + return (EXECUTION_SUCCESS); +} + +char *ln_doc[] = { + "Link files.", + "", + "Create a new directory entry with the same modes as the original", + "file. The -f option means to unlink any existing file, permitting", + "the link to occur. The -s option means to create a symbolic link.", + "By default, ln makes hard links. Specifying -n or its synonym -h", + "causes ln to not resolve symlinks in the target file or directory.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. */ +struct builtin ln_struct = { + "ln", /* builtin name */ + ln_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + ln_doc, /* array of long documentation strings. */ + "ln [-fhns] file1 [file2] OR ln [-fhns] file ... directory", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/loadables.h b/bash-5.1/examples/loadables/loadables.h new file mode 100644 index 0000000..c730357 --- /dev/null +++ b/bash-5.1/examples/loadables/loadables.h @@ -0,0 +1,34 @@ +/* loadables.h -- Include files needed by all loadable builtins */ + +/* Copyright (C) 2015 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + + +#ifndef __LOADABLES_H_ +#define __LOADABLES_H_ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" +#include "common.h" + +#endif diff --git a/bash-5.1/examples/loadables/logname.c b/bash-5.1/examples/loadables/logname.c new file mode 100644 index 0000000..27e6591 --- /dev/null +++ b/bash-5.1/examples/loadables/logname.c @@ -0,0 +1,74 @@ +/* logname - print login name of current user */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include + +#include "builtins.h" +#include "shell.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +int +logname_builtin (list) + WORD_LIST *list; +{ + char *np; + + if (no_options (list)) + return (EX_USAGE); + + np = getlogin (); + if (np == 0) + { + builtin_error ("cannot find username: %s", strerror (errno)); + return (EXECUTION_FAILURE); + } + printf ("%s\n", np); + return (EXECUTION_SUCCESS); +} + +char *logname_doc[] = { + "Display user login name.", + "", + "Write the current user's login name to the standard output", + "and exit. logname ignores the LOGNAME and USER variables.", + "logname ignores any non-option arguments.", + (char *)NULL +}; + +struct builtin logname_struct = { + "logname", + logname_builtin, + BUILTIN_ENABLED, + logname_doc, + "logname", + 0 +}; + diff --git a/bash-5.1/examples/loadables/mkdir.c b/bash-5.1/examples/loadables/mkdir.c new file mode 100644 index 0000000..d5d3955 --- /dev/null +++ b/bash-5.1/examples/loadables/mkdir.c @@ -0,0 +1,245 @@ +/* mkdir - make directories */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#include "bashtypes.h" +#include "posixstat.h" +#include +#include +#include "bashansi.h" +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +#define ISOCTAL(c) ((c) >= '0' && (c) <= '7') + +extern int parse_symbolic_mode (); + +static int make_path (); + +static int original_umask; + +int +mkdir_builtin (list) + WORD_LIST *list; +{ + int opt, pflag, mflag, omode, rval, nmode, parent_mode; + char *mode; + WORD_LIST *l; + + reset_internal_getopt (); + pflag = mflag = 0; + mode = (char *)NULL; + while ((opt = internal_getopt(list, "m:p")) != -1) + switch (opt) + { + case 'p': + pflag = 1; + break; + case 'm': + mflag = 1; + mode = list_optarg; + break; + CASE_HELPOPT; + default: + builtin_usage(); + return (EX_USAGE); + } + list = loptend; + + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + if (mode == NULL) + omode = S_IRWXU | S_IRWXG | S_IRWXO; /* a=rwx */ + else if (ISOCTAL (*mode)) /* octal number */ + { + omode = read_octal (mode); + if (omode < 0) + { + builtin_error ("invalid file mode: %s", mode); + return (EXECUTION_FAILURE); + } + } + else /* symbolic mode */ + { + /* initial bits are a=rwx; the mode argument modifies them */ + omode = parse_symbolic_mode (mode, S_IRWXU | S_IRWXG | S_IRWXO); + if (omode < 0) + { + builtin_error ("invalid file mode: %s", mode); + return (EXECUTION_FAILURE); + } + } + + /* Make the new mode */ + original_umask = umask (0); + umask (original_umask); + + nmode = (S_IRWXU | S_IRWXG | S_IRWXO) & ~original_umask; + parent_mode = nmode | (S_IWUSR|S_IXUSR); /* u+wx */ + + /* Adjust new mode based on mode argument */ + nmode &= omode; + + for (rval = EXECUTION_SUCCESS, l = list; l; l = l->next) + { + if (pflag && make_path (l->word->word, mflag, nmode, parent_mode)) + { + rval = EXECUTION_FAILURE; + continue; + } + else if (pflag == 0 && mkdir (l->word->word, nmode) < 0) + { + builtin_error ("cannot create directory `%s': %s", l->word->word, strerror (errno)); + rval = EXECUTION_FAILURE; + } + } + return rval; +} + +/* Make all the directories leading up to PATH, then create PATH. Note that + this changes the process's umask; make sure that all paths leading to a + return reset it to ORIGINAL_UMASK */ +static int +make_path (path, user_mode, nmode, parent_mode) + char *path; + int user_mode; + int nmode, parent_mode; +{ + int oumask; + struct stat sb; + char *p, *npath; + + if (stat (path, &sb) == 0) + { + if (S_ISDIR (sb.st_mode) == 0) + { + builtin_error ("`%s': file exists but is not a directory", path); + return 1; + } + + if (user_mode && chmod (path, nmode)) + { + builtin_error ("%s: %s", path, strerror (errno)); + return 1; + } + + return 0; + } + + oumask = umask (0); + npath = savestring (path); /* So we can write to it. */ + + /* Check whether or not we need to do anything with intermediate dirs. */ + + /* Skip leading slashes. */ + p = npath; + while (*p == '/') + p++; + + while (p = strchr (p, '/')) + { + *p = '\0'; + if (stat (npath, &sb) != 0) + { + if (mkdir (npath, 0)) + { + builtin_error ("cannot create directory `%s': %s", npath, strerror (errno)); + umask (original_umask); + free (npath); + return 1; + } + if (chmod (npath, parent_mode) != 0) + { + builtin_error ("cannot chmod directory `%s': %s", npath, strerror (errno)); + umask (original_umask); + free (npath); + return 1; + } + } + else if (S_ISDIR (sb.st_mode) == 0) + { + builtin_error ("`%s': file exists but is not a directory", npath); + umask (original_umask); + free (npath); + return 1; + } + + *p++ = '/'; /* restore slash */ + while (*p == '/') + p++; + } + + /* Create the final directory component. */ + if (stat (npath, &sb) && mkdir (npath, nmode)) + { + builtin_error ("cannot create directory `%s': %s", npath, strerror (errno)); + umask (original_umask); + free (npath); + return 1; + } + + umask (original_umask); + free (npath); + return 0; +} + +char *mkdir_doc[] = { + "Create directories.", + "", + "Make directories. Create the directories named as arguments, in", + "the order specified, using mode rwxrwxrwx as modified by the current", + "umask (see `help umask'). The -m option causes the file permission", + "bits of the final directory to be MODE. The MODE argument may be", + "an octal number or a symbolic mode like that used by chmod(1). If", + "a symbolic mode is used, the operations are interpreted relative to", + "an initial mode of \"a=rwx\". The -p option causes any required", + "intermediate directories in PATH to be created. The directories", + "are created with permssion bits of rwxrwxrwx as modified by the current", + "umask, plus write and search permissions for the owner. mkdir", + "returns 0 if the directories are created successfully, and non-zero", + "if an error occurs.", + (char *)NULL +}; + +struct builtin mkdir_struct = { + "mkdir", + mkdir_builtin, + BUILTIN_ENABLED, + mkdir_doc, + "mkdir [-p] [-m mode] directory [directory ...]", + 0 +}; diff --git a/bash-5.1/examples/loadables/mkfifo.c b/bash-5.1/examples/loadables/mkfifo.c new file mode 100644 index 0000000..2bc4e98 --- /dev/null +++ b/bash-5.1/examples/loadables/mkfifo.c @@ -0,0 +1,146 @@ +/* mkfifo - make FIFOs */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#include "bashtypes.h" +#include "posixstat.h" +#include +#include +#include "bashansi.h" +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +#define ISOCTAL(c) ((c) >= '0' && (c) <= '7') + +extern int parse_symbolic_mode (); + +static int original_umask; + +int +mkfifo_builtin (list) + WORD_LIST *list; +{ + int opt, mflag, omode, rval, nmode, basemode; + char *mode; + WORD_LIST *l; + + mflag = 0; + mode = (char *)NULL; + + reset_internal_getopt (); + while ((opt = internal_getopt(list, "m:")) != -1) + switch (opt) + { + case 'm': + mflag = 1; + mode = list_optarg; + break; + CASE_HELPOPT; + default: + builtin_usage(); + return (EX_USAGE); + } + list = loptend; + + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + basemode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH; + if (mode == NULL) + omode = basemode; + else if (ISOCTAL (*mode)) /* octal number */ + { + omode = read_octal (mode); + if (omode < 0) + { + builtin_error ("invalid file mode: %s", mode); + return (EXECUTION_FAILURE); + } + } + else /* symbolic mode */ + { + /* initial bits are a=rwx; the mode argument modifies them */ + omode = parse_symbolic_mode (mode, basemode); + if (omode < 0) + { + builtin_error ("invalid file mode: %s", mode); + return (EXECUTION_FAILURE); + } + } + + /* Make the new mode */ + original_umask = umask (0); + umask (original_umask); + + nmode = basemode & ~original_umask; + /* Adjust new mode based on mode argument */ + nmode &= omode; + + for (rval = EXECUTION_SUCCESS, l = list; l; l = l->next) + { + if (mkfifo (l->word->word, nmode) < 0) + { + builtin_error ("cannot create FIFO `%s': %s", l->word->word, strerror (errno)); + rval = EXECUTION_FAILURE; + } + } + return rval; +} + + +char *mkfifo_doc[] = { + "Create FIFOs (named pipes).", + "", + "Make FIFOs. Create the FIFOs named as arguments, in", + "the order specified, using mode a=rw as modified by the current", + "umask (see `help umask'). The -m option causes the file permission", + "bits of the final FIFO to be MODE. The MODE argument may be", + "an octal number or a symbolic mode like that used by chmod(1). If", + "a symbolic mode is used, the operations are interpreted relative to", + "an initial mode of \"a=rw\". mkfifo returns 0 if the FIFOs are", + "umask, plus write and search permissions for the owner. mkdir", + "created successfully, and non-zero if an error occurs.", + (char *)NULL +}; + +struct builtin mkfifo_struct = { + "mkfifo", + mkfifo_builtin, + BUILTIN_ENABLED, + mkfifo_doc, + "mkfifo [-m mode] fifo_name [fifo_name ...]", + 0 +}; diff --git a/bash-5.1/examples/loadables/mktemp.c b/bash-5.1/examples/loadables/mktemp.c new file mode 100644 index 0000000..1f7c9ad --- /dev/null +++ b/bash-5.1/examples/loadables/mktemp.c @@ -0,0 +1,212 @@ +/* mktemp - create temporary file or directory */ + +/* + Copyright (C) 2019 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include "bashansi.h" + +#include "loadables.h" + +#define DEFAULT_PREFIX "shtmp" + +int +mktemp_builtin (list) + WORD_LIST *list; +{ + WORD_LIST *l; + int rval, opt, fd, mflags, base_mflags; + int dflag, qflag, tflag, uflag, onetime; + char *prefix, *varname, *filename, *template; + SHELL_VAR *v; + + dflag = qflag = uflag = tflag = onetime = 0; + prefix = varname = 0; + rval = EXECUTION_SUCCESS; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "dqut:v:")) != -1) + { + switch (opt) + { + case 'd': + dflag = 1; + break; + case 'q': + qflag = 1; + break; + case 't': + tflag = 1; + prefix = list_optarg; + break; + case 'u': + uflag = 1; + break; + case 'v': + varname = list_optarg; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (varname) /* check for validity, not readonly */ + { + if (legal_identifier (varname) == 0) + { + if (qflag == 0) + sh_invalidid (varname); + return (EXECUTION_FAILURE); + } + v = find_variable (varname); + if (v && readonly_p (v)) + { + if (qflag == 0) + sh_readonly (varname); + return (EXECUTION_FAILURE); + } + } + + onetime = (list == 0); /* once through the loop, $TMPDIR/prefix.XXXXXX */ + + if (prefix == 0) + prefix = DEFAULT_PREFIX; + base_mflags = MT_USETMPDIR|MT_USERANDOM; /* USERANDOM not strictly needed */ + + while (list || onetime) + { + mflags = base_mflags; + onetime = 0; +#if defined (USE_MKTEMP) && defined (USE_MKSTEMP) + if (list) + { + template = list->word->word; + mflags |= MT_TEMPLATE; + } +#else + /* This is sub-optimal. */ + if (list) + { + /* Treat the basename as a prefix */ + template = strrchr (list->word->word, '/'); + if (template) + template++; + else + template = list->word->word; + } +#endif + else + template = prefix; + + if (dflag) + { + filename = sh_mktmpdir (template, mflags); + if (filename == 0) + { + if (qflag == 0) + builtin_error ("%s: cannot create directory", template); + rval = EXECUTION_FAILURE; + } + else + { + if (uflag) + rmdir (filename); + printf ("%s\n", filename); + } + } + else /* filename */ + { + fd = sh_mktmpfd (template, mflags, &filename); + if (fd < 0) + { + if (qflag == 0) + builtin_error ("%s: cannot create file", template); + rval = EXECUTION_FAILURE; + } + else + { + close (fd); + if (uflag) + unlink (filename); + printf ("%s\n", filename); + } + } + + /* Assign variable if requested */ + if (filename && varname) + { + v = builtin_bind_variable (varname, filename, 0); + if (v == 0 || readonly_p (v) || noassign_p (v)) + { + builtin_error ("%s: cannot set variable", varname); + rval = EXECUTION_FAILURE; + } + } + + FREE (filename); + + if (list) + list = list->next; + } + + return (rval); +} + +char *mktemp_doc[] = { + "Make unique temporary file name", + "", + "Take each supplied filename template and overwrite a portion of it", + "to create a filename, which is unique and may be used by the calling", + "script. TEMPLATE is a string ending in some number of 'X's. If", + "TEMPLATE is not supplied, shtmp.XXXXXX is used and $TMPDIR is used as", + "the name of the containing directory. Files are created u+rw; directories", + "are created u+rwx.", + "", + "Options, if supplied, have the following meanings:", + "", + " -d Create a directory instead of a file", + " -q Do not print error messages about file creation failure", + " -t PREFIX Use PREFIX as the directory in which to create files", + " -u Do not create anything; simply print a name", + " -v VAR Store the generated name into shell variable VAR", + "", + "Any PREFIX supplied with -t is ignored if TEMPLATE is supplied.", + "", + "The return status is true if the file or directory was created successfully;", + "false if an error occurs or VAR is invalid or readonly.", + + (char *)NULL +}; + +struct builtin mktemp_struct = { + "mktemp", /* builtin name */ + mktemp_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + mktemp_doc, /* array of long documentation strings. */ + "mktemp [-d] [-q] [-t prefix] [-u] [-v varname] [template] ...", + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/mypid.c b/bash-5.1/examples/loadables/mypid.c new file mode 100644 index 0000000..fc1b267 --- /dev/null +++ b/bash-5.1/examples/loadables/mypid.c @@ -0,0 +1,89 @@ +/* This module should be dynamically loaded with enable -f + * which would create a new builtin named mypid. You'll need + * the source code for GNU bash to recompile this module. + * + * Then, from within bash, enable -f ./mypid enable_mypid, where ./mypid + * is the binary obtained from running make. Hereafter, `${MYPID}' + * is a shell builtin variable. + * + * This defines an unload hook function that is called when the builtin is + * deleted with enable -d that will unbind the MYPID variable so future + * references to it do not attempt to access memory that is no longer part + * of this process's address space. + */ +#include + +#include +#include +#include + +#include "builtins.h" +#include "shell.h" + +#define INIT_DYNAMIC_VAR(var, val, gfunc, afunc) \ + do \ + { SHELL_VAR *v = bind_variable (var, (val), 0); \ + if (v) \ + { \ + v->dynamic_value = gfunc; \ + v->assign_func = afunc; \ + } \ + } \ + while (0) + +static SHELL_VAR * +assign_mypid ( + SHELL_VAR *self, + char *value, + arrayind_t unused, + char *key ) +{ + return (self); +} + +static SHELL_VAR * +get_mypid (SHELL_VAR *var) +{ + int rv; + char *p; + + rv = getpid(); + p = itos (rv); + + FREE (value_cell (var)); + + VSETATTR (var, att_integer); + var_setvalue (var, p); + return (var); +} + +int +enable_mypid_builtin(WORD_LIST *list) +{ + INIT_DYNAMIC_VAR ("MYPID", (char *)NULL, get_mypid, assign_mypid); + + return 0; +} + +void +enable_mypid_builtin_unload (char *s) +{ + unbind_variable ("MYPID"); +} + +char const *enable_mypid_doc[] = { + "Enable $MYPID.", + "", + "Enables use of the ${MYPID} dynamic variable. ", + "It will yield the current pid of a subshell.", + (char *)0 +}; + +struct builtin enable_mypid_struct = { + "enable_mypid", + enable_mypid_builtin, + BUILTIN_ENABLED, + (char**)(void*)enable_mypid_doc, + "enable_mypid N", + 0 +}; diff --git a/bash-5.1/examples/loadables/necho.c b/bash-5.1/examples/loadables/necho.c new file mode 100644 index 0000000..dd2092b --- /dev/null +++ b/bash-5.1/examples/loadables/necho.c @@ -0,0 +1,54 @@ +/* necho - echo without options or argument interpretation */ + +/* Sample builtin to be dynamically loaded with enable -f and replace an + existing builtin. */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include +#include "builtins.h" +#include "shell.h" + +int +necho_builtin (list) +WORD_LIST *list; +{ + print_word_list (list, " "); + printf("\n"); + fflush (stdout); + return (EXECUTION_SUCCESS); +} + +char *necho_doc[] = { + "Display arguments.", + "", + "Print the arguments to the standard output separated", + "by space characters and terminated with a newline.", + (char *)NULL +}; + +struct builtin necho_struct = { + "echo", + necho_builtin, + BUILTIN_ENABLED, + necho_doc, + "echo [args]", + 0 +}; + diff --git a/bash-5.1/examples/loadables/pathchk.c b/bash-5.1/examples/loadables/pathchk.c new file mode 100644 index 0000000..c1151db --- /dev/null +++ b/bash-5.1/examples/loadables/pathchk.c @@ -0,0 +1,381 @@ +/* pathchk - check pathnames for validity and portability */ + +/* Usage: pathchk [-p] path ... + + For each PATH, print a message if any of these conditions are false: + * all existing leading directories in PATH have search (execute) permission + * strlen (PATH) <= PATH_MAX + * strlen (each_directory_in_PATH) <= NAME_MAX + + Exit status: + 0 All PATH names passed all of the tests. + 1 An error occurred. + + Options: + -p Instead of performing length checks on the + underlying filesystem, test the length of the + pathname and its components against the POSIX.1 + minimum limits for portability, _POSIX_NAME_MAX + and _POSIX_PATH_MAX in 2.9.2. Also check that + the pathname contains no character not in the + portable filename character set. */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#include +#include "posixstat.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (HAVE_LIMITS_H) +# include +#endif + +#include "bashansi.h" + +#include +#include + +#include "builtins.h" +#include "shell.h" +#include "stdc.h" +#include "bashgetopt.h" +#include "maxpath.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +#if !defined (_POSIX_PATH_MAX) +# define _POSIX_PATH_MAX 255 +#endif +#if !defined (_POSIX_NAME_MAX) +# define _POSIX_NAME_MAX 14 +#endif + +/* How do we get PATH_MAX? */ +#if defined (_POSIX_VERSION) && !defined (PATH_MAX) +# define PATH_MAX_FOR(p) pathconf ((p), _PC_PATH_MAX) +#endif + +/* How do we get NAME_MAX? */ +#if defined (_POSIX_VERSION) && !defined (NAME_MAX) +# define NAME_MAX_FOR(p) pathconf ((p), _PC_NAME_MAX) +#endif + +#if !defined (PATH_MAX_FOR) +# define PATH_MAX_FOR(p) PATH_MAX +#endif + +#if !defined (NAME_MAX_FOR) +# define NAME_MAX_FOR(p) NAME_MAX +#endif + +extern char *strerror (); + +static int validate_path (); + +int +pathchk_builtin (list) + WORD_LIST *list; +{ + int retval, pflag, opt; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "p")) != -1) + { + switch (opt) + { + case 'p': + pflag = 1; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + for (retval = 0; list; list = list->next) + retval |= validate_path (list->word->word, pflag); + + return (retval ? EXECUTION_FAILURE : EXECUTION_SUCCESS); +} + +char *pathchk_doc[] = { + "Check pathnames for validity.", + "", + "Check each pathname argument for validity (i.e., it may be used to", + "create or access a file without causing syntax errors) and portability", + "(i.e., no filename truncation will result). If the `-p' option is", + "supplied, more extensive portability checks are performed.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. */ +struct builtin pathchk_struct = { + "pathchk", /* builtin name */ + pathchk_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + pathchk_doc, /* array of long documentation strings. */ + "pathchk [-p] pathname ...", /* usage synopsis */ + 0 /* reserved for internal use */ +}; + +/* The remainder of this file is stolen shamelessly from `pathchk.c' in + the sh-utils-1.12 distribution, by + + David MacKenzie + and Jim Meyering */ + +/* Each element is nonzero if the corresponding ASCII character is + in the POSIX portable character set, and zero if it is not. + In addition, the entry for `/' is nonzero to simplify checking. */ +static char const portable_chars[256] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0-15 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 16-31 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, /* 32-47 */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* 48-63 */ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 64-79 */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, /* 80-95 */ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 96-111 */ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* 112-127 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +/* If PATH contains only portable characters, return 1, else 0. */ + +static int +portable_chars_only (path) + const char *path; +{ + const char *p; + + for (p = path; *p; ++p) + if (portable_chars[(const unsigned char) *p] == 0) + { + builtin_error ("path `%s' contains nonportable character `%c'", path, *p); + return 0; + } + return 1; +} + +/* On some systems, stat can return EINTR. */ + +#ifndef EINTR +# define SAFE_STAT(name, buf) stat (name, buf) +#else +# define SAFE_STAT(name, buf) safe_stat (name, buf) +static inline int +safe_stat (name, buf) + const char *name; + struct stat *buf; +{ + int ret; + + do + ret = stat (name, buf); + while (ret < 0 && errno == EINTR); + + return ret; +} +#endif + +/* Return 1 if PATH is a usable leading directory, 0 if not, + 2 if it doesn't exist. */ + +static int +dir_ok (path) + const char *path; +{ + struct stat stats; + + if (SAFE_STAT (path, &stats)) + return 2; + + if (!S_ISDIR (stats.st_mode)) + { + builtin_error ("`%s' is not a directory", path); + return 0; + } + + /* Use access to test for search permission because + testing permission bits of st_mode can lose with new + access control mechanisms. Of course, access loses if you're + running setuid. */ + if (access (path, X_OK) != 0) + { + if (errno == EACCES) + builtin_error ("directory `%s' is not searchable", path); + else + builtin_error ("%s: %s", path, strerror (errno)); + return 0; + } + + return 1; +} + +static char * +xstrdup (s) + char *s; +{ + return (savestring (s)); +} + +/* Make sure that + strlen (PATH) <= PATH_MAX + && strlen (each-existing-directory-in-PATH) <= NAME_MAX + + If PORTABILITY is nonzero, compare against _POSIX_PATH_MAX and + _POSIX_NAME_MAX instead, and make sure that PATH contains no + characters not in the POSIX portable filename character set, which + consists of A-Z, a-z, 0-9, ., _, -. + + Make sure that all leading directories along PATH that exist have + `x' permission. + + Return 0 if all of these tests are successful, 1 if any fail. */ + +static int +validate_path (path, portability) + char *path; + int portability; +{ + int path_max; + int last_elem; /* Nonzero if checking last element of path. */ + int exists; /* 2 if the path element exists. */ + char *slash; + char *parent; /* Last existing leading directory so far. */ + + if (portability && !portable_chars_only (path)) + return 1; + + if (*path == '\0') + return 0; + +#ifdef lint + /* Suppress `used before initialized' warning. */ + exists = 0; +#endif + + /* Figure out the parent of the first element in PATH. */ + parent = xstrdup (*path == '/' ? "/" : "."); + + slash = path; + last_elem = 0; + while (1) + { + int name_max; + int length; /* Length of partial path being checked. */ + char *start; /* Start of path element being checked. */ + + /* Find the end of this element of the path. + Then chop off the rest of the path after this element. */ + while (*slash == '/') + slash++; + start = slash; + slash = strchr (slash, '/'); + if (slash != NULL) + *slash = '\0'; + else + { + last_elem = 1; + slash = strchr (start, '\0'); + } + + if (!last_elem) + { + exists = dir_ok (path); + if (exists == 0) + { + free (parent); + return 1; + } + } + + length = slash - start; + /* Since we know that `parent' is a directory, it's ok to call + pathconf with it as the argument. (If `parent' isn't a directory + or doesn't exist, the behavior of pathconf is undefined.) + But if `parent' is a directory and is on a remote file system, + it's likely that pathconf can't give us a reasonable value + and will return -1. (NFS and tempfs are not POSIX . . .) + In that case, we have no choice but to assume the pessimal + POSIX minimums. */ + name_max = portability ? _POSIX_NAME_MAX : NAME_MAX_FOR (parent); + if (name_max < 0) + name_max = _POSIX_NAME_MAX; + if (length > name_max) + { + builtin_error ("name `%s' has length %d; exceeds limit of %d", + start, length, name_max); + free (parent); + return 1; + } + + if (last_elem) + break; + + if (exists == 1) + { + free (parent); + parent = xstrdup (path); + } + + *slash++ = '/'; + } + + /* `parent' is now the last existing leading directory in the whole path, + so it's ok to call pathconf with it as the argument. */ + path_max = portability ? _POSIX_PATH_MAX : PATH_MAX_FOR (parent); + if (path_max < 0) + path_max = _POSIX_PATH_MAX; + free (parent); + if (strlen (path) > path_max) + { + builtin_error ("path `%s' has length %lu; exceeds limit of %d", + path, (unsigned long)strlen (path), path_max); + return 1; + } + + return 0; +} diff --git a/bash-5.1/examples/loadables/perl/Makefile.in b/bash-5.1/examples/loadables/perl/Makefile.in new file mode 100644 index 0000000..aa93b50 --- /dev/null +++ b/bash-5.1/examples/loadables/perl/Makefile.in @@ -0,0 +1,99 @@ +# +# Makefile for builtin perl interpreter +# +# +# Copyright (C) 1998 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# Include some boilerplate Gnu makefile definitions. +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +libdir = @libdir@ +infodir = @infodir@ +includedir = @includedir@ + +datarootdir = @datarootdir@ + +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +@SET_MAKE@ +CC = @CC@ +RM = rm -f + +SHELL = @MAKE_SHELL@ + +PERL5 = perl5 + +CFLAGS = -O2 -g + +# +# These values are generated for configure by ${topdir}/support/shobj-conf. +# If your system is not supported by that script, but includes facilities for +# dynamic loading of shared objects, please update the script and send the +# changes to bash-maintainers@gnu.org. +# +SHOBJ_CC = @SHOBJ_CC@ +SHOBJ_CFLAGS = @SHOBJ_CFLAGS@ +SHOBJ_LD = @SHOBJ_LD@ +SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@ +SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@ +SHOBJ_LIBS = @SHOBJ_LIBS@ +SHOBJ_STATUS = @SHOBJ_STATUS@ + +# Values used for compiling the perl files +PERL_LDOPTS = `${PERL5} -MExtUtils::Embed -e ldopts` +PERL_CFLAGS = ${CCFLAGS} `${PERL5} -MExtUtils::Embed -e ccopts` + +SRC = bperl.c iperl.c perlxsi.c +OBJ = bperl.o iperl.o perlxsi.o + +BUILTIN = bperl5 + +INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins \ + -I$(topdir)/include -I$(BUILD_DIR) -I$(BUILD_DIR)/lib \ + -I$(BUILD_DIR)/builtins + + +${BUILTIN}: ${OBJ} + ${RM} $@ + ${SHOBJ_LD} ${SHOBJ_LDFLAGS} ${SHOBJ_XLDFLAGS} -o $@ ${OBJ} ${PERL_LDOPTS} ${SHOBJ_LIBS} + +bperl.o: bperl.c + ${RM} $@ + $(SHOBJ_CC) $(SHOBJ_CFLAGS) $(CFLAGS) $(INC) -c -o $@ ${srcdir}/bperl.c + +iperl.o: iperl.c + ${RM} $@ + $(SHOBJ_CC) ${SHOBJ_CFLAGS} $(PERL_CFLAGS) -c -o $@ ${srcdir}/iperl.c + +perlxsi.c: + ${PERL5} -MExtUtils::Embed -e xsinit -- -o $@ + +perlxsi.o: perlxsi.c + ${RM} $@ + ${SHOBJ_CC} ${SHOBJ_CFLAGS} $(PERL_CFLAGS) -c -o $@ perlxsi.c + +clean mostlyclean: + ${RM} ${OBJ} + ${RM} ${BUILTIN} + +distclean maintainer-clean: clean + ${RM} perlxsi.c diff --git a/bash-5.1/examples/loadables/perl/README b/bash-5.1/examples/loadables/perl/README new file mode 100644 index 0000000..a70a99b --- /dev/null +++ b/bash-5.1/examples/loadables/perl/README @@ -0,0 +1,6 @@ +This illustrates how to build a perl interpreter into bash. It's not +especially useful; more a proof of concept (it provides none of the +bash internals to the perl interpreter, for example). + +This *may* require adding "-rpath /path/to/perl/CORE" and -lperl options +when compiling bash itself. diff --git a/bash-5.1/examples/loadables/perl/bperl.c b/bash-5.1/examples/loadables/perl/bperl.c new file mode 100644 index 0000000..77e3f7c --- /dev/null +++ b/bash-5.1/examples/loadables/perl/bperl.c @@ -0,0 +1,46 @@ +/* + * perl builtin + */ +#include + +#include +#include + +#include "builtins.h" +#include "shell.h" + +#ifndef errno +extern int errno; +#endif + +extern char **make_builtin_argv (); +extern char **export_env; + +extern int perl_main(); + +bperl_builtin(list) +WORD_LIST *list; +{ + char **v; + int c, r; + + v = make_builtin_argv(list, &c); + r = perl_main(c, v, export_env); + free(v); + + return r; +} + +char *bperl_doc[] = { + "An interface to a perl5 interpreter.", + (char *)0 +}; + +struct builtin bperl_struct = { + "bperl", + bperl_builtin, + BUILTIN_ENABLED, + bperl_doc, + "bperl [perl options] [file ...]", + 0 +}; diff --git a/bash-5.1/examples/loadables/perl/iperl.c b/bash-5.1/examples/loadables/perl/iperl.c new file mode 100644 index 0000000..92a6038 --- /dev/null +++ b/bash-5.1/examples/loadables/perl/iperl.c @@ -0,0 +1,24 @@ +#include /* from the Perl distribution */ +#include /* from the Perl distribution */ + +extern void xs_init _((void)); + +static PerlInterpreter *iperl; /*** The Perl interpreter ***/ + +int +perl_main(int argc, char **argv, char **env) +{ + int r; + + iperl = perl_alloc(); + perl_construct(iperl); + perl_parse(iperl, xs_init, argc, argv, (char **)NULL); + r = perl_run(iperl); + +PerlIO_flush(PerlIO_stdout()); +PerlIO_flush(PerlIO_stderr()); + + perl_destruct(iperl); + perl_free(iperl); + return (r); +} diff --git a/bash-5.1/examples/loadables/print.c b/bash-5.1/examples/loadables/print.c new file mode 100644 index 0000000..0120dbf --- /dev/null +++ b/bash-5.1/examples/loadables/print.c @@ -0,0 +1,192 @@ +/* + * print -- loadable ksh-93 style print builtin + */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "bashtypes.h" + +#include +#include +#include + +#include "bashansi.h" +#include "shell.h" +#include "builtins.h" +#include "stdc.h" +#include "bashgetopt.h" +#include "builtext.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +int print_builtin (); +static int printargs (); + +static FILE *ofp; + +extern char *this_command_name; + +static char *print_doc[] = { + "Display arguments.", + "", + "Output the arguments. The -f option means to use the argument as a", + "format string as would be supplied to printf(1). The rest of the", + "options are as in ksh.", + (char *)NULL +}; + +struct builtin print_struct = { + "print", + print_builtin, + BUILTIN_ENABLED, + print_doc, + "print [-Rnprs] [-u unit] [-f format] [arguments]", + (char *)0 +}; + +#ifndef ISOPTION +#define ISOPTION(s, c) (s[0] == '-' && s[2] == '\0' && s[1] == c) +#endif + +int +print_builtin (list) + WORD_LIST *list; +{ + int c, r, nflag, raw, ofd, sflag; + intmax_t lfd; + char **v, *pfmt, *arg; + WORD_LIST *l; + + nflag = raw = sflag = 0; + ofd = 1; + pfmt = 0; + + reset_internal_getopt (); + while ((c = internal_getopt (list, "Rnprsu:f:")) != -1) + { + switch (c) + { + case 'R': + raw = 2; + loptend = lcurrent; + if (loptend && ISOPTION (loptend->word->word, 'n')) + { + loptend = loptend->next; + nflag = 1; + } + goto opt_end; + case 'r': + raw = 1; + break; + case 'n': + nflag = 1; + break; + case 's': + sflag = 1; + break; + case 'p': + break; /* NOP */ + case 'u': + if (all_digits (list_optarg) && legal_number (list_optarg, &lfd) && lfd == (int)lfd) + ofd = lfd; + else + { + for (l = list; l->next && l->next != lcurrent; l = l->next); + lcurrent = loptend = l; + goto opt_end; + } + break; + case 'f': + pfmt = list_optarg; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + +opt_end: + list = loptend; + + ofp = (ofd == 1) ? stdout : fdopen (dup (ofd), "w"); + + if (pfmt) + { + WORD_DESC *w; + WORD_LIST *nlist; + + w = make_word (pfmt); + nlist = make_word_list (w, list); + r = printf_builtin (nlist); + nlist->next = (WORD_LIST *)NULL; + dispose_words (nlist); + return (r); + } + + if (raw) + { + for (l = list; l; l = l->next) + { + fprintf (ofp, "%s", l->word->word); + if (l->next) + fprintf (ofp, " "); + } + if (nflag == 0) + fprintf (ofp, "\n"); + fflush (ofp); + return (0); + } + + r = printargs (list, ofp); + if (r && nflag == 0) + fprintf (ofp, "\n"); + if (ofd != 1) + fclose (ofp); + return 0; +} + +static int +printargs (list, ofp) + WORD_LIST *list; + FILE *ofp; +{ + WORD_LIST *l; + char *ostr; + int sawc; + + for (sawc = 0, l = list; l; l = l->next) + { + ostr = ansicstr (l->word->word, strlen (l->word->word), 0, &sawc, (int *)0); + fprintf (ofp, "%s", ostr); + free (ostr); + if (sawc) + return (0); + if (l->next) + fprintf (ofp, " "); + } + return (1); +} diff --git a/bash-5.1/examples/loadables/printenv.c b/bash-5.1/examples/loadables/printenv.c new file mode 100644 index 0000000..8c7f720 --- /dev/null +++ b/bash-5.1/examples/loadables/printenv.c @@ -0,0 +1,94 @@ +/* + * printenv -- minimal builtin clone of BSD printenv(1). + * + * usage: printenv [varname] + * + */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include +#include + +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" +#include "common.h" + +extern char **export_env; + +int +printenv_builtin (list) + WORD_LIST *list; +{ + register char **envp; + int opt; + SHELL_VAR *var; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "")) != -1) + { + switch (opt) + { + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + /* printenv */ + if (list == 0) + { + maybe_make_export_env (); /* this allows minimal code */ + for (envp = export_env; *envp; envp++) + printf ("%s\n", *envp); + return (EXECUTION_SUCCESS); + } + + /* printenv varname */ + var = find_variable (list->word->word); + if (var == 0 || (exported_p (var) == 0)) + return (EXECUTION_FAILURE); + + if (function_p (var)) + print_var_function (var); + else + print_var_value (var, 0); + + printf("\n"); + return (EXECUTION_SUCCESS); +} + +char *printenv_doc[] = { + "Display environment.", + "", + "Print names and values of environment variables", + (char *)NULL +}; + +struct builtin printenv_struct = { + "printenv", + printenv_builtin, + BUILTIN_ENABLED, + printenv_doc, + "printenv [varname]", + 0 +}; diff --git a/bash-5.1/examples/loadables/push.c b/bash-5.1/examples/loadables/push.c new file mode 100644 index 0000000..b27455b --- /dev/null +++ b/bash-5.1/examples/loadables/push.c @@ -0,0 +1,117 @@ +/* + * push - anyone remember TOPS-20? + * + */ + +/* + Copyright (C) 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include +#include +#include + +#include "builtins.h" +#include "shell.h" +#include "jobs.h" +#include "bashgetopt.h" +#include "common.h" + +#ifndef errno +extern int errno; +#endif + +extern pid_t dollar_dollar_pid; +extern int last_command_exit_value; + +int +push_builtin (list) + WORD_LIST *list; +{ + pid_t pid; + int xstatus, opt; + + xstatus = EXECUTION_SUCCESS; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "")) != -1) + { + switch (opt) + { + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + pid = make_child (savestring ("push"), 0); + if (pid == -1) + { + builtin_error ("cannot fork: %s", strerror (errno)); + return (EXECUTION_FAILURE); + } + else if (pid == 0) + { + /* Shell variable adjustments: $SHLVL, $$, $PPID, $! */ + adjust_shell_level (1); + dollar_dollar_pid = getpid (); + set_ppid (); + + /* Clean up job control stuff. */ + stop_making_children (); + cleanup_the_pipeline (); + delete_all_jobs (0); + + last_asynchronous_pid = NO_PID; + + /* Make sure the job control code has the right values for + the shell's process group and tty process group, and that + the signals are set correctly for job control. */ + initialize_job_control (0); + initialize_job_signals (); + + /* And read commands until exit. */ + reader_loop (); + exit_shell (last_command_exit_value); + } + else + { + stop_pipeline (0, (COMMAND *)NULL); + xstatus = wait_for (pid, 0); + return (xstatus); + } +} + +char *push_doc[] = { + "Create child shell.", + "", + "Create a child that is an exact duplicate of the running shell", + "and wait for it to exit. The $SHLVL, $!, $$, and $PPID variables", + "are adjusted in the child. The return value is the exit status", + "of the child.", + (char *)NULL +}; + +struct builtin push_struct = { + "push", + push_builtin, + BUILTIN_ENABLED, + push_doc, + "push", + 0 +}; diff --git a/bash-5.1/examples/loadables/realpath.c b/bash-5.1/examples/loadables/realpath.c new file mode 100644 index 0000000..0974ac4 --- /dev/null +++ b/bash-5.1/examples/loadables/realpath.c @@ -0,0 +1,145 @@ +/* + * realpath -- canonicalize pathnames, resolving symlinks + * + * usage: realpath [-csv] pathname [pathname...] + * + * options: -c check whether or not each resolved path exists + * -s no output, exit status determines whether path is valid + * -v produce verbose output + * + * + * exit status: 0 if all pathnames resolved + * 1 if any of the pathname arguments could not be resolved + * + * + * Bash loadable builtin version + * + * Chet Ramey + * chet@po.cwru.edu + */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include "config.h" + +#include +#include + +#include +#ifdef HAVE_UNISTD_H +# include +#endif +#include "bashansi.h" +#include +#include + +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" +#include "common.h" + +#ifndef errno +extern int errno; +#endif + +extern char *sh_realpath(); + +int +realpath_builtin(list) +WORD_LIST *list; +{ + int opt, cflag, vflag, sflag, es; + char *r, realbuf[PATH_MAX], *p; + struct stat sb; + + if (list == 0) { + builtin_usage(); + return (EX_USAGE); + } + + vflag = cflag = sflag = 0; + reset_internal_getopt(); + while ((opt = internal_getopt (list, "csv")) != -1) { + switch (opt) { + case 'c': + cflag = 1; + break; + case 's': + sflag = 1; + break; + case 'v': + vflag = 1; + break; + CASE_HELPOPT; + default: + builtin_usage(); + return (EX_USAGE); + } + } + + list = loptend; + + if (list == 0) { + builtin_usage(); + return (EX_USAGE); + } + + for (es = EXECUTION_SUCCESS; list; list = list->next) { + p = list->word->word; + r = sh_realpath(p, realbuf); + if (r == 0) { + es = EXECUTION_FAILURE; + if (sflag == 0) + builtin_error("%s: cannot resolve: %s", p, strerror(errno)); + continue; + } + if (cflag && (stat(realbuf, &sb) < 0)) { + es = EXECUTION_FAILURE; + if (sflag == 0) + builtin_error("%s: %s", p, strerror(errno)); + continue; + } + if (sflag == 0) { + if (vflag) + printf ("%s -> ", p); + printf("%s\n", realbuf); + } + } + return es; +} + +char *realpath_doc[] = { + "Display pathname in canonical form.", + "", + "Display the canonicalized version of each PATHNAME argument, resolving", + "symbolic links. The -c option checks whether or not each resolved name", + "exists. The -s option produces no output; the exit status determines the", + "validity of each PATHNAME. The -v option produces verbose output. The", + "exit status is 0 if each PATHNAME was resolved; non-zero otherwise.", + (char *)NULL +}; + +struct builtin realpath_struct = { + "realpath", /* builtin name */ + realpath_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + realpath_doc, /* array of long documentation strings */ + "realpath [-csv] pathname [pathname...]", /* usage synopsis */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/rm.c b/bash-5.1/examples/loadables/rm.c new file mode 100644 index 0000000..0af5493 --- /dev/null +++ b/bash-5.1/examples/loadables/rm.c @@ -0,0 +1,181 @@ +/* rm - remove files and directories with -r */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 2016 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include "config.h" + +#include +#include +#include +#include "builtins.h" +#include "shell.h" +#include "common.h" +#include "bashgetopt.h" + +#if !defined (errno) +extern int errno; +#endif + +static int rm_file(const char *fname); + +static int force, recursive; + +static int +_remove_directory(const char *dirname) +{ + DIR *dir; + struct dirent *dp; + size_t dirlen; + int err; + + dirlen = strlen (dirname); + err = 0; + + if ((dir = opendir(dirname))) + { + while ((dp = readdir(dir))) + { +#ifdef __GNUC__ + char fname[dirlen + 1 + strlen (dp->d_name) + 1]; +#else + char *fname; + int fnsize; +#endif + + if (*dp->d_name == '.' && (dp->d_name[1] == 0 || (dp->d_name[1] == '.' && dp->d_name[2] == 0))) + continue; + +#ifdef __GNUC__ + snprintf(fname, sizeof (fname), "%s/%s", dirname, dp->d_name); +#else + fnsize = dirlen + 1 + strlen (dp->d_name) + 1; + fname = xmalloc (fnsize); + snprintf(fname, fnsize, "%s/%s", dirname, dp->d_name); +#endif + + if (rm_file (fname) && force == 0) + err = 1; +#ifndef __GNUC__ + free (fname); +#endif + } + + closedir(dir); + + if (err == 0 && rmdir (dirname) && force == 0) + err = 1; + } + else if (force == 0) + err = 1; + + if (err) + builtin_error ("%s: %s", dirname, strerror (errno)); + + return err; +} + +static int +rm_file(const char *fname) +{ + if (unlink (fname) == 0) + return 0; + + /* If FNAME is a directory glibc returns EISDIR but correct POSIX value + would be EPERM. If we get that error and FNAME is a directory and -r + was supplied, recursively remove the directory and its contents */ + if ((errno == EISDIR || errno == EPERM) && recursive && file_isdir (fname)) + return _remove_directory(fname); + else if (force) + return 0; + + builtin_error ("%s: %s", fname, strerror (errno)); + return 1; +} + +int +rm_builtin (list) + WORD_LIST *list; +{ + const char *name; + WORD_LIST *l; + int rval, opt; + + recursive = force = 0; + rval = EXECUTION_SUCCESS; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "Rrfi")) != -1) + { + switch (opt) + { + case 'R': + case 'r': + recursive = 1; + break; + case 'f': + force = 1; + break; + case 'i': + return (EX_DISKFALLBACK); + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) + { + if (force == 0) + { + builtin_usage (); + return (EXECUTION_FAILURE); + } + return (EXECUTION_SUCCESS); + } + + for (l = list; l; l = l->next) + { + if (rm_file(l->word->word) && force == 0) + rval = EXECUTION_FAILURE; + } + + return rval; +} + +char *rm_doc[] = { + "Remove files.", + "", + "rm removes the files specified as arguments.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. */ +struct builtin rm_struct = { + "rm", /* builtin name */ + rm_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + rm_doc, /* array of long documentation strings. */ + "rm [-rf] file ...", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/rmdir.c b/bash-5.1/examples/loadables/rmdir.c new file mode 100644 index 0000000..001c2bd --- /dev/null +++ b/bash-5.1/examples/loadables/rmdir.c @@ -0,0 +1,72 @@ +/* rmdir - remove directory */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include "config.h" + +#include +#include +#include "builtins.h" +#include "shell.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +int +rmdir_builtin (list) + WORD_LIST *list; +{ + int rval; + WORD_LIST *l; + + if (no_options (list)) + return (EX_USAGE); + + for (rval = EXECUTION_SUCCESS, l = list; l; l = l->next) + if (rmdir (l->word->word) < 0) + { + builtin_error ("%s: %s", l->word->word, strerror (errno)); + rval = EXECUTION_FAILURE; + } + + return rval; +} + +char *rmdir_doc[] = { + "Remove directory.", + "", + "rmdir removes the directory entry specified by each argument,", + "provided the directory is empty.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. */ +struct builtin rmdir_struct = { + "rmdir", /* builtin name */ + rmdir_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + rmdir_doc, /* array of long documentation strings. */ + "rmdir directory ...", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/seq.c b/bash-5.1/examples/loadables/seq.c new file mode 100644 index 0000000..e562407 --- /dev/null +++ b/bash-5.1/examples/loadables/seq.c @@ -0,0 +1,490 @@ +/* seq - print sequence of numbers to standard output. + Copyright (C) 2018-2020 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written as bash builtin by Chet Ramey. Portions from seq.c by Ulrich Drepper. */ + +#include + +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#include +#include + +#include "bashansi.h" +#include "loadables.h" +#include "bashintl.h" + +#ifndef errno +extern int errno; +#endif + +#if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN) +typedef long double floatmax_t; +# define FLOATMAX_CONV "L" +# define strtofltmax strtold +# define FLOATMAX_FMT "%Lg" +# define FLOATMAX_WFMT "%0.Lf" +# define USE_LONG_DOUBLE +#else +typedef double floatmax_t; +# define FLOATMAX_CONV "" +# define strtofltmax strtod +# define FLOATMAX_FMT "%g" +# define FLOATMAX_WFMT "%0.f" +#endif +static floatmax_t getfloatmax PARAMS((const char *)); +static char *genformat PARAMS((floatmax_t, floatmax_t, floatmax_t)); + +#define MAX(a, b) (((a) < (b))? (b) : (a)) + +static int conversion_error = 0; + +/* If true print all number with equal width. */ +static int equal_width; + +/* The string used to separate two numbers. */ +static char const *separator; + +/* The string output after all numbers have been output. */ +static char const terminator[] = "\n"; + +static char decimal_point; + +/* Pretty much the same as the version in builtins/printf.def */ +static floatmax_t +getfloatmax (arg) + const char *arg; +{ + floatmax_t ret; + char *ep; + + errno = 0; + ret = strtofltmax (arg, &ep); + + if (*ep) + { + sh_invalidnum ((char *)arg); + conversion_error = 1; + } + else if (errno == ERANGE) + { + builtin_error ("warning: %s: %s", arg, strerror(ERANGE)); + conversion_error = 1; + } + + if (ret == -0.0) + ret = 0.0; + + return (ret); +} + +/* If FORMAT is a valid printf format for a double argument, return + its long double equivalent, allocated from dynamic storage. This + was written by Ulrich Drepper, taken from coreutils:seq.c */ +static char * +long_double_format (char const *fmt) +{ + size_t i; + size_t length_modifier_offset; + int has_L; + + for (i = 0; ! (fmt[i] == '%' && fmt[i + 1] != '%'); i += (fmt[i] == '%') + 1) + { + if (!fmt[i]) + { + builtin_error ("format %s has no %% directive", fmt); + return 0; + } + } + + i++; + i += strspn (fmt + i, "-+#0 '"); /* zero or more flags */ + i += strspn (fmt + i, "0123456789"); /* optional minimum field width */ + if (fmt[i] == '.') /* optional precision */ + { + i++; + i += strspn (fmt + i, "0123456789"); + } + + length_modifier_offset = i; /* optional length modifier */ + /* we could ignore an 'l' length modifier here */ + has_L = (fmt[i] == 'L'); + i += has_L; + switch (fmt[i]) + { + case '\0': + builtin_error ("format %s ends in %%", fmt); + return 0; + case 'A': + case 'a': + case 'e': + case 'E': + case 'f': + case 'F': + case 'g': + case 'G': + break; + default: + builtin_error ("format %s has unknown `%%%c' directive", fmt, fmt[i]); + return 0; + } + for (i++; ; i += (fmt[i] == '%') + 1) + if (fmt[i] == '%' && fmt[i + 1] != '%') + { + builtin_error ("format %s has too many %% directives", fmt); + return 0; + } + else if (fmt[i] == 0) + { + size_t format_size = i + 1; + char *ldfmt = xmalloc (format_size + 1); + memcpy (ldfmt, fmt, length_modifier_offset); +#ifdef USE_LONG_DOUBLE + ldfmt[length_modifier_offset] = 'L'; + strcpy (ldfmt + length_modifier_offset + 1, + fmt + length_modifier_offset + has_L); +#else + strcpy (ldfmt + length_modifier_offset, fmt + length_modifier_offset); +#endif + return ldfmt; + } +} + +/* Return the number of digits following the decimal point in NUMBUF */ +static int +getprec (numbuf) + const char *numbuf; +{ + int p; + char *dp; + + if (dp = strchr (numbuf, decimal_point)) + dp++; /* skip over decimal point */ + for (p = 0; dp && *dp && ISDIGIT (*dp); dp++) + p++; + return p; +} + +/* Return the default format given FIRST, INCR, and LAST. */ +static char * +genformat (first, incr, last) + floatmax_t first, incr, last; +{ + static char buf[6 + 2 * INT_STRLEN_BOUND (int)]; + int wfirst, wlast, width; + int iprec, fprec, lprec, prec; + + if (equal_width == 0) + return (FLOATMAX_FMT); + + /* OK, we have to figure out the largest number of decimal places. This is + a little more expensive than using the original strings. */ + snprintf (buf, sizeof (buf), FLOATMAX_FMT, incr); + iprec = getprec (buf); + + wfirst = snprintf (buf, sizeof (buf), FLOATMAX_FMT, first); + fprec = getprec (buf); + + prec = MAX (fprec, iprec); + + wlast = snprintf (buf, sizeof (buf), FLOATMAX_FMT, last); + lprec = getprec (buf); + + /* increase first width by any increased precision in increment */ + wfirst += (prec - fprec); + + /* adjust last width to use precision from first/incr */ + wlast += (prec - lprec); + + if (lprec && prec == 0) + wlast--; /* no decimal point */ + if (lprec == 0 && prec) + wlast++; /* include decimal point */ + if (fprec == 0 && prec) + wfirst++; /* include decimal point */ + + width = MAX (wfirst, wlast); + if (width) + sprintf (buf, "%%0%d.%d%sf", width, prec, FLOATMAX_CONV); + else + sprintf (buf, "%%.%d%sf", prec, FLOATMAX_CONV); + + return buf; +} + +int +print_fltseq (fmt, first, last, incr) + const char *fmt; + floatmax_t first, last, incr; +{ + int n; + floatmax_t next; + const char *s; + + n = 0; /* iteration counter */ + s = ""; + for (next = first; incr >= 0 ? (next <= last) : (next >= last); next = first + n * incr) + { + QUIT; + if (*s && fputs (s, stdout) == EOF) + return (sh_chkwrite (EXECUTION_FAILURE)); + if (printf (fmt, next) < 0) + return (sh_chkwrite (EXECUTION_FAILURE)); + s = separator; + n++; + } + + if (n > 0 && fputs (terminator, stdout) == EOF) + return (sh_chkwrite (EXECUTION_FAILURE)); + return (sh_chkwrite (EXECUTION_SUCCESS)); +} + +/* must be <= INT_STRLEN_BOUND(intmax_t) */ +int +width_needed (num) + intmax_t num; +{ + int ret; + + ret = num < 0; /* sign */ + if (ret) + num = -num; + do + ret++; + while (num /= 10); + return ret; +} + +int +print_intseq (ifirst, ilast, iincr) + intmax_t ifirst, ilast, iincr; +{ + char intwfmt[6 + INT_STRLEN_BOUND(int) + sizeof (PRIdMAX)]; + const char *s; + intmax_t i, next; + + /* compute integer format string */ + if (equal_width) /* -w supplied */ + { + int wfirst, wlast, width; + + wfirst = width_needed (ifirst); + wlast = width_needed (ilast); + width = MAX(wfirst, wlast); + + /* The leading %s is for the separator */ + snprintf (intwfmt, sizeof (intwfmt), "%%s%%0%u" PRIdMAX, width); + } + + /* We could use braces.c:mkseq here but that allocates lots of memory */ + s = ""; + for (i = ifirst; (ifirst <= ilast) ? (i <= ilast) : (i >= ilast); i = next) + { + QUIT; + /* The leading %s is for the separator */ + if (printf (equal_width ? intwfmt : "%s%" PRIdMAX, s, i) < 0) + return (sh_chkwrite (EXECUTION_FAILURE)); + s = separator; + next = i + iincr; + } + + if (fputs (terminator, stdout) == EOF) + return (sh_chkwrite (EXECUTION_FAILURE)); + return (sh_chkwrite (EXECUTION_SUCCESS)); +} + +int +seq_builtin (list) + WORD_LIST *list; +{ + floatmax_t first, last, incr; + intmax_t ifirst, ilast, iincr; + WORD_LIST *l; + int opt, nargs, intseq, freefmt; + char *first_str, *incr_str, *last_str; + char const *fmtstr; /* The printf(3) format used for output. */ + + equal_width = 0; + separator = "\n"; + fmtstr = NULL; + + first = 1.0; + last = 0.0; + incr = 0.0; /* set later */ + ifirst = ilast = iincr = 0; + first_str = incr_str = last_str = 0; + + intseq = freefmt = 0; + opt = 0; + + reset_internal_getopt (); + while (opt != -1) + { + l = lcurrent ? lcurrent : list; + if (l && l->word && l->word->word && l->word->word[0] == '-' && + (l->word->word[1] == '.' || DIGIT (l->word->word[1]))) + { + loptend = l; + break; /* negative number */ + } + if ((opt = internal_getopt (list, "f:s:w")) == -1) + break; + + switch (opt) + { + case 'f': + fmtstr = list_optarg; + break; + case 's': + separator = list_optarg; + break; + case 'w': + equal_width = 1; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) + { + builtin_usage (); + return (EXECUTION_FAILURE); + } + + for (nargs = 1, l = list; l->next; l = l->next) + nargs++; + if (nargs > 3) + { + builtin_usage (); + return (EXECUTION_FAILURE); + } + + /* LAST */ + conversion_error = 0; + last = getfloatmax (last_str = l->word->word); + if (conversion_error) + return (EXECUTION_FAILURE); + + /* FIRST LAST */ + if (nargs > 1) + { + conversion_error = 0; + first = getfloatmax (first_str = list->word->word); + if (conversion_error) + return (EXECUTION_FAILURE); + } + + /* FIRST INCR LAST */ + if (nargs > 2) + { + conversion_error = 0; + incr = getfloatmax (incr_str = list->next->word->word); + if (conversion_error) + return (EXECUTION_FAILURE); + if (incr == 0.0) + { + builtin_error ("zero %screment", (first < last) ? "in" : "de"); + return (EXECUTION_FAILURE); + } + } + + /* Sanitize arguments */ + if (incr == 0.0) + incr = (first <= last) ? 1.0 : -1.0; + if ((incr < 0.0 && first < last) || (incr > 0 && first > last)) + { + builtin_error ("incorrect %screment", (first < last) ? "in" : "de"); + return (EXECUTION_FAILURE); + } + + /* validate format here */ + if (fmtstr) + { + fmtstr = long_double_format (fmtstr); + freefmt = 1; + if (fmtstr == 0) + return (EXECUTION_FAILURE); + } + + if (fmtstr != NULL && equal_width) + { + builtin_warning ("-w ignored when the format string is specified"); + equal_width = 0; + } + + /* Placeholder for later additional conditions */ + if (last_str && all_digits (last_str) && + (first_str == 0 || all_digits (first_str)) && + (incr_str == 0 || all_digits (incr_str)) && + fmtstr == NULL) + intseq = 1; + + if (intseq) + { + ifirst = (intmax_t)first; /* truncation */ + ilast = (intmax_t)last; + iincr = (intmax_t)incr; + + return (print_intseq (ifirst, ilast, iincr)); + } + + decimal_point = locale_decpoint (); + if (fmtstr == NULL) + fmtstr = genformat (first, incr, last); + + print_fltseq (fmtstr, first, last, incr); + + if (freefmt) + free ((void *)fmtstr); + return sh_chkwrite (EXECUTION_SUCCESS); +} + +/* Taken largely from GNU seq. */ +char *seq_doc[] = { + "Print numbers from FIRST to LAST, in steps of INCREMENT.", + "", + "-f FORMAT use printf style floating-point FORMAT", + "-s STRING use STRING to separate numbers (default: \\n)", + "-w equalize width by padding with leading zeroes", + "", + "If FIRST or INCREMENT is omitted, it defaults to 1. However, an", + "omitted INCREMENT defaults to -1 when LAST is smaller than FIRST.", + "The sequence of numbers ends when the sum of the current number and", + "INCREMENT would become greater than LAST.", + "FIRST, INCREMENT, and LAST are interpreted as floating point values.", + "", + "FORMAT must be suitable for printing one argument of type 'double';", + "it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point", + "decimal numbers with maximum precision PREC, and to %g otherwise.", + (char *)NULL +}; + +struct builtin seq_struct = { + "seq", + seq_builtin, + BUILTIN_ENABLED, + seq_doc, + "seq [-f format] [-s separator] [-w] [FIRST [INCR]] LAST", + 0 +}; diff --git a/bash-5.1/examples/loadables/setpgid.c b/bash-5.1/examples/loadables/setpgid.c new file mode 100644 index 0000000..e56fd51 --- /dev/null +++ b/bash-5.1/examples/loadables/setpgid.c @@ -0,0 +1,121 @@ +/* setpgid.c: bash loadable wrapper for setpgid system call + + An example of how to wrap a system call with a loadable builtin. + + Originally contributed by Jason Vas Dias + + 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 . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include +#include + +#include "bashtypes.h" +#include "posixtime.h" + +#include + +#include "builtins.h" +#include "shell.h" +#include "common.h" + +#include "bashgetopt.h" + +#if !defined (_POSIX_VERSION) +# define setpgid(pid, pgrp) setpgrp (pid, pgrp) +#endif + +int +setpgid_builtin (list) + WORD_LIST *list; +{ + register WORD_LIST *wl; + intmax_t pid_arg, pgid_arg; + pid_t pid, pgid; + char *pidstr, *pgidstr; + + wl = list; + pid = pgid = 0; + + if (wl == 0 || wl->next == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + pidstr = wl->word ? wl->word->word : 0; + pgidstr = wl->next->word ? wl->next->word->word : 0; + + if (pidstr == 0 || pgidstr == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + if (legal_number (pidstr, &pid_arg) == 0) + { + builtin_error ("%s: pid argument must be numeric", pidstr); + return (EXECUTION_FAILURE); + } + if (pid_arg < 0) + { + builtin_error("%s: negative pid values not allowed", pidstr); + return (EXECUTION_FAILURE); + } + pid = pid_arg; + + if (legal_number (pgidstr, &pgid_arg) == 0) + { + builtin_error ("%s: pgrp argument must be numeric", pgidstr); + return (EXECUTION_FAILURE); + } + if (pgid_arg < 0) + { + builtin_error ("%s: negative pgrp values not allowed", pgidstr); + return (EXECUTION_FAILURE); + } + pgid = pgid_arg; + + errno = 0; + if (setpgid(pid, pgid) < 0) + { + builtin_error("setpgid failed: %s", strerror (errno)); + return (EXECUTION_FAILURE); + } + return (EXECUTION_SUCCESS); +} + +const char *setpgid_doc[] = { + "invoke the setpgid(2) system call", + "", + "Arguments:", + " pid : numeric process identifier, >= 0", + " pgrpid: numeric process group identifier, >=0", + "See the setpgid(2) manual page.", + (const char *)NULL +}; + +struct builtin setpgid_struct = { + "setpgid", + setpgid_builtin, + BUILTIN_ENABLED, + (char **)setpgid_doc, + "setpgid pid pgrpid", + 0 +}; diff --git a/bash-5.1/examples/loadables/sleep.c b/bash-5.1/examples/loadables/sleep.c new file mode 100644 index 0000000..fc2203d --- /dev/null +++ b/bash-5.1/examples/loadables/sleep.c @@ -0,0 +1,101 @@ +/* + * sleep -- sleep for fractions of a second + * + * usage: sleep seconds[.fraction] + */ + +/* + Copyright (C) 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include "config.h" + +#include "bashtypes.h" + +#if defined (TIME_WITH_SYS_TIME) +# include +# include +#else +# if defined (HAVE_SYS_TIME_H) +# include +# else +# include +# endif +#endif + +#if defined (HAVE_UNISTD_H) +#include +#endif + +#include +#include "chartypes.h" + +#include "shell.h" +#include "builtins.h" +#include "common.h" + +int +sleep_builtin (list) +WORD_LIST *list; +{ + long sec, usec; + char *ep; + int r, mul; + time_t t; + + if (list == 0) { + builtin_usage(); + return(EX_USAGE); + } + + /* Skip over `--' */ + if (list->word && ISOPTION (list->word->word, '-')) + list = list->next; + + if (*list->word->word == '-' || list->next) { + builtin_usage (); + return (EX_USAGE); + } + + r = uconvert(list->word->word, &sec, &usec, &ep); + /* Maybe postprocess conversion failures here based on EP */ + + if (r) { + fsleep(sec, usec); + QUIT; + return(EXECUTION_SUCCESS); + } + + builtin_error("%s: bad sleep interval", list->word->word); + return (EXECUTION_FAILURE); +} + +static char *sleep_doc[] = { + "Suspend execution for specified period.", + "" + "sleep suspends execution for a minimum of SECONDS[.FRACTION] seconds.", + (char *)NULL +}; + +struct builtin sleep_struct = { + "sleep", + sleep_builtin, + BUILTIN_ENABLED, + sleep_doc, + "sleep seconds[.fraction]", + 0 +}; diff --git a/bash-5.1/examples/loadables/stat.c b/bash-5.1/examples/loadables/stat.c new file mode 100644 index 0000000..52b9580 --- /dev/null +++ b/bash-5.1/examples/loadables/stat.c @@ -0,0 +1,430 @@ +/* stat - load up an associative array with stat information about a file */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 2016 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#include +#include "posixstat.h" +#include +#include +#include +#include +#include "posixtime.h" + +#include "bashansi.h" +#include "shell.h" +#include "builtins.h" +#include "common.h" +#include "bashgetopt.h" + +#ifndef errno +extern int errno; +#endif + +#define ST_NAME 0 +#define ST_DEV 1 +#define ST_INO 2 +#define ST_MODE 3 +#define ST_NLINK 4 +#define ST_UID 5 +#define ST_GID 6 +#define ST_RDEV 7 +#define ST_SIZE 8 +#define ST_ATIME 9 +#define ST_MTIME 10 +#define ST_CTIME 11 +#define ST_BLKSIZE 12 +#define ST_BLOCKS 13 +#define ST_CHASELINK 14 +#define ST_PERMS 15 + +#define ST_END 16 + +static char *arraysubs[] = + { + "name", "device", "inode", "type", "nlink", "uid", "gid", "rdev", + "size", "atime", "mtime", "ctime", "blksize", "blocks", "link", "perms", + 0 + }; + +static int +getstat (fname, flags, sp) + const char *fname; + int flags; + struct stat *sp; +{ + intmax_t lfd; + int fd, r; + + if (strncmp (fname, "/dev/fd/", 8) == 0) + { + if ((legal_number(fname + 8, &lfd) == 0) || (int)lfd != lfd) + { + errno = EINVAL; + return -1; + } + fd = lfd; + r = fstat(fd, sp); + } +#ifdef HAVE_LSTAT + else if (flags & 1) + r = lstat(fname, sp); +#endif + else + r = stat(fname, sp); + + return r; +} + +static char * +statlink (fname, sp) + char *fname; + struct stat *sp; +{ +#if defined (HAVE_READLINK) + char linkbuf[PATH_MAX]; + int n; + + if (fname && S_ISLNK (sp->st_mode) && (n = readlink (fname, linkbuf, PATH_MAX)) > 0) + { + linkbuf[n] = '\0'; + return (savestring (linkbuf)); + } + else +#endif + return (savestring (fname)); +} + +static char * +octalperms (m) + int m; +{ + int operms; + char *ret; + + operms = 0; + + if (m & S_IRUSR) + operms |= 0400; + if (m & S_IWUSR) + operms |= 0200; + if (m & S_IXUSR) + operms |= 0100; + + if (m & S_IRGRP) + operms |= 0040; + if (m & S_IWGRP) + operms |= 0020; + if (m & S_IXGRP) + operms |= 0010; + + if (m & S_IROTH) + operms |= 0004; + if (m & S_IWOTH) + operms |= 0002; + if (m & S_IXOTH) + operms |= 0001; + + if (m & S_ISUID) + operms |= 04000; + if (m & S_ISGID) + operms |= 02000; + if (m & S_ISVTX) + operms |= 01000; + + ret = (char *)xmalloc (16); + snprintf (ret, 16, "%04o", operms); + return ret; +} + +static char * +statperms (m) + int m; +{ + char ubits[4], gbits[4], obits[4]; /* u=rwx,g=rwx,o=rwx */ + int i; + char *ret; + + i = 0; + if (m & S_IRUSR) + ubits[i++] = 'r'; + if (m & S_IWUSR) + ubits[i++] = 'w'; + if (m & S_IXUSR) + ubits[i++] = 'x'; + ubits[i] = '\0'; + + i = 0; + if (m & S_IRGRP) + gbits[i++] = 'r'; + if (m & S_IWGRP) + gbits[i++] = 'w'; + if (m & S_IXGRP) + gbits[i++] = 'x'; + gbits[i] = '\0'; + + i = 0; + if (m & S_IROTH) + obits[i++] = 'r'; + if (m & S_IWOTH) + obits[i++] = 'w'; + if (m & S_IXOTH) + obits[i++] = 'x'; + obits[i] = '\0'; + + if (m & S_ISUID) + ubits[2] = (m & S_IXUSR) ? 's' : 'S'; + if (m & S_ISGID) + gbits[2] = (m & S_IXGRP) ? 's' : 'S'; + if (m & S_ISVTX) + obits[2] = (m & S_IXOTH) ? 't' : 'T'; + + ret = (char *)xmalloc (32); + snprintf (ret, 32, "u=%s,g=%s,o=%s", ubits, gbits, obits); + return ret; +} + +static char * +statmode(mode) + int mode; +{ + char *modestr, *m; + + modestr = m = (char *)xmalloc (8); + if (S_ISBLK (mode)) + *m++ = 'b'; + if (S_ISCHR (mode)) + *m++ = 'c'; + if (S_ISDIR (mode)) + *m++ = 'd'; + if (S_ISREG(mode)) + *m++ = '-'; + if (S_ISFIFO(mode)) + *m++ = 'p'; + if (S_ISLNK(mode)) + *m++ = 'l'; + if (S_ISSOCK(mode)) + *m++ = 's'; + +#ifdef S_ISDOOR + if (S_ISDOOR (mode)) + *m++ = 'D'; +#endif +#ifdef S_ISWHT + if (S_ISWHT(mode)) + *m++ = 'W'; +#endif +#ifdef S_ISNWK + if (S_ISNWK(mode)) + *m++ = 'n'; +#endif +#ifdef S_ISMPC + if (S_ISMPC (mode)) + *m++ = 'm'; +#endif + + *m = '\0'; + return (modestr); +} + +static char * +stattime (t) + time_t t; +{ + char *tbuf, *ret; + size_t tlen; + + tbuf = ctime (&t); + tlen = strlen (tbuf); + ret = savestring (tbuf); + ret[tlen-1] = '\0'; + return ret; +} + +static char * +statval (which, fname, flags, sp) + int which; + char *fname; + int flags; + struct stat *sp; +{ + int temp; + + switch (which) + { + case ST_NAME: + return savestring (fname); + case ST_DEV: + return itos (sp->st_dev); + case ST_INO: + return itos (sp->st_ino); + case ST_MODE: + return (statmode (sp->st_mode)); + case ST_NLINK: + return itos (sp->st_nlink); + case ST_UID: + return itos (sp->st_uid); + case ST_GID: + return itos (sp->st_gid); + case ST_RDEV: + return itos (sp->st_rdev); + case ST_SIZE: + return itos (sp->st_size); + case ST_ATIME: + return ((flags & 2) ? stattime (sp->st_atime) : itos (sp->st_atime)); + case ST_MTIME: + return ((flags & 2) ? stattime (sp->st_mtime) : itos (sp->st_mtime)); + case ST_CTIME: + return ((flags & 2) ? stattime (sp->st_ctime) : itos (sp->st_ctime)); + case ST_BLKSIZE: + return itos (sp->st_blksize); + case ST_BLOCKS: + return itos (sp->st_blocks); + case ST_CHASELINK: + return (statlink (fname, sp)); + case ST_PERMS: + temp = sp->st_mode & (S_IRWXU|S_IRWXG|S_IRWXO|S_ISUID|S_ISGID); + return (flags & 2) ? statperms (temp) : octalperms (temp); + default: + return savestring ("42"); + } +} + +static int +loadstat (vname, var, fname, flags, sp) + char *vname; + SHELL_VAR *var; + char *fname; + int flags; + struct stat *sp; +{ + int i; + char *key, *value; + SHELL_VAR *v; + + for (i = 0; arraysubs[i]; i++) + { + key = savestring (arraysubs[i]); + value = statval (i, fname, flags, sp); + v = bind_assoc_variable (var, vname, key, value, ASS_FORCE); + } + return 0; +} + +int +stat_builtin (list) + WORD_LIST *list; +{ + int opt, flags; + char *aname, *fname; + struct stat st; + SHELL_VAR *v; + + aname = "STAT"; + flags = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "A:Ll")) != -1) + { + switch (opt) + { + case 'A': + aname = list_optarg; + break; + case 'L': + flags |= 1; /* operate on links rather than resolving them */ + break; + case 'l': + flags |= 2; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + fname = list->word->word; + + if (getstat (fname, flags, &st) < 0) + { + builtin_error ("%s: cannot stat: %s", fname, strerror (errno)); + return (EXECUTION_FAILURE); + } + + unbind_variable (aname); + v = make_new_assoc_variable (aname); + if (v == 0) + { + builtin_error ("%s: cannot create variable", aname); + return (EXECUTION_FAILURE); + } + if (loadstat (aname, v, fname, flags, &st) < 0) + { + builtin_error ("%s: cannot assign file status information", aname); + unbind_variable (aname); + return (EXECUTION_FAILURE); + } + + return (EXECUTION_SUCCESS); +} + +/* An array of strings forming the `long' documentation for a builtin xxx, + which is printed by `help xxx'. It must end with a NULL. By convention, + the first line is a short description. */ +char *stat_doc[] = { + "Load an associative array with file status information.", + "", + "Take a filename and load the status information returned by a", + "stat(2) call on that file into the associative array specified", + "by the -A option. The default array name is STAT. If the -L", + "option is supplied, stat does not resolve symbolic links and", + "reports information about the link itself. The -l option results", + "in longer-form listings for some of the fields. The exit status is 0", + "unless the stat fails or assigning the array is unsuccessful.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. The flags must include BUILTIN_ENABLED so the + builtin can be used. */ +struct builtin stat_struct = { + "stat", /* builtin name */ + stat_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + stat_doc, /* array of long documentation strings. */ + "stat [-lL] [-A aname] file", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/strftime.c b/bash-5.1/examples/loadables/strftime.c new file mode 100644 index 0000000..f4e194e --- /dev/null +++ b/bash-5.1/examples/loadables/strftime.c @@ -0,0 +1,128 @@ +/* strftime - loadable builtin interface to strftime(3) */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashtypes.h" +#include "posixtime.h" + +#include + +#include "builtins.h" +#include "shell.h" +#include "common.h" +#include "bashgetopt.h" + +int +strftime_builtin (list) + WORD_LIST *list; +{ + char *format, *tbuf; + size_t tbsize, tsize; + time_t secs; + struct tm *t; + int n; + intmax_t i; + + if (no_options (list)) + return (EX_USAGE); + list = loptend; + + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + format = list->word->word; + if (format == 0 || *format == 0) + { + printf ("\n"); + return (EXECUTION_SUCCESS); + } + + list = list->next; + + if (list && list->word->word) + { + n = legal_number (list->word->word, &i); + if (n == 0 || i < 0 || i != (time_t)i) + { + sh_invalidnum (list->word->word); + return (EXECUTION_FAILURE); + } + else + secs = i; + } + else + secs = NOW; + + t = localtime (&secs); + + tbsize = strlen (format) * 4; + tbuf = 0; + + /* Now try to figure out how big the buffer should really be. strftime(3) + will return the number of bytes placed in the buffer unless it's greater + than MAXSIZE, in which case it returns 0. */ + for (n = 1; n <= 8; n++) + { + tbuf = xrealloc (tbuf, tbsize * n); + tsize = strftime (tbuf, tbsize * n, format, t); + if (tsize) + break; + } + + if (tsize) + printf ("%s\n", tbuf); + free (tbuf); + + return (EXECUTION_SUCCESS); +} + +/* An array of strings forming the `long' documentation for a builtin xxx, + which is printed by `help xxx'. It must end with a NULL. */ +char *strftime_doc[] = { + "Display formatted time.", + "", + "Converts date and time format to a string and displays it on the", + "standard output. If the optional second argument is supplied, it", + "is used as the number of seconds since the epoch to use in the", + "conversion, otherwise the current time is used.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. The flags must include BUILTIN_ENABLED so the + builtin can be used. */ +struct builtin strftime_struct = { + "strftime", /* builtin name */ + strftime_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + strftime_doc, /* array of long documentation strings. */ + "strftime format [seconds]", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/sync.c b/bash-5.1/examples/loadables/sync.c new file mode 100644 index 0000000..4fbeee1 --- /dev/null +++ b/bash-5.1/examples/loadables/sync.c @@ -0,0 +1,53 @@ +/* sync - sync the disks by forcing pending filesystem writes to complete */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#ifdef HAVE_UNISTD_H +#include +#endif + +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" + +int +sync_builtin (list) + WORD_LIST *list; +{ + sync(); + return (EXECUTION_SUCCESS); +} + +char *sync_doc[] = { + "Sync disks.", + "" + "Force completion of pending disk writes", + (char *)NULL +}; + +struct builtin sync_struct = { + "sync", /* builtin name */ + sync_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + sync_doc, /* array of long documentation strings. */ + "sync", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/tee.c b/bash-5.1/examples/loadables/tee.c new file mode 100644 index 0000000..283f23f --- /dev/null +++ b/bash-5.1/examples/loadables/tee.c @@ -0,0 +1,180 @@ +/* tee - duplicate standard input */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include "config.h" + +#include "bashtypes.h" +#include "posixstat.h" +#include "filecntl.h" + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" + +#include +#include + +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" +#include "common.h" + +#if !defined (errno) +extern int errno; +#endif + +typedef struct flist { + struct flist *next; + int fd; + char *fname; +} FLIST; + +static FLIST *tee_flist; + +#define TEE_BUFSIZE 8192 + +extern int interrupt_immediately; + +extern char *strerror (); + +int +tee_builtin (list) + WORD_LIST *list; +{ + int opt, append, nointr, rval, fd, fflags; + int n, nr, nw; + FLIST *fl; + char *buf, *bp; + + char *t; + + reset_internal_getopt (); + append = nointr = 0; + tee_flist = (FLIST *)NULL; + while ((opt = internal_getopt (list, "ai")) != -1) + { + switch (opt) + { + case 'a': + append = 1; + break; + case 'i': + nointr = 1; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (nointr == 0) + interrupt_immediately++; + + buf = xmalloc (TEE_BUFSIZE); + + /* Initialize output file list. */ + fl = tee_flist = (FLIST *)xmalloc (sizeof(FLIST)); + tee_flist->fd = 1; + tee_flist->fname = "stdout"; + tee_flist->next = (FLIST *)NULL; + + /* Add file arguments to list of output files. */ + fflags = append ? O_WRONLY|O_CREAT|O_APPEND : O_WRONLY|O_CREAT|O_TRUNC; + for (rval = EXECUTION_SUCCESS; list; list = list->next) + { + fd = open (list->word->word, fflags, 0666); + if (fd < 0) + { + builtin_error ("%s: cannot open: %s", list->word->word, strerror (errno)); + rval = EXECUTION_FAILURE; + } + else + { + fl->next = (FLIST *)xmalloc (sizeof(FLIST)); + fl->next->fd = fd; + fl->next->fname = list->word->word; + fl = fl->next; + fl->next = (FLIST *)NULL; + } + } + + while ((nr = read(0, buf, TEE_BUFSIZE)) > 0) + for (fl = tee_flist; fl; fl = fl->next) + { + n = nr; + bp = buf; + do + { + if ((nw = write (fl->fd, bp, n)) == -1) + { + builtin_error ("%s: write error: %s", fl->fname, strerror (errno)); + rval = EXECUTION_FAILURE; + break; + } + bp += nw; + } + while (n -= nw); + } + if (nr < 0) + builtin_error ("read error: %s", strerror (errno)); + + /* Deallocate resources -- this is a builtin command. */ + tee_flist = tee_flist->next; /* skip bogus close of stdout */ + while (tee_flist) + { + fl = tee_flist; + if (close (fl->fd) < 0) + { + builtin_error ("%s: close_error: %s", fl->fname, strerror (errno)); + rval = EXECUTION_FAILURE; + } + tee_flist = tee_flist->next; + free (fl); + } + + return (rval); +} + +char *tee_doc[] = { + "Duplicate standard output.", + "", + "Copy standard input to standard output, making a copy in each", + "filename argument. If the `-a' option is given, the specified", + "files are appended to, otherwise they are overwritten. If the", + "`-i' option is supplied, tee ignores interrupts.", + (char *)NULL +}; + +struct builtin tee_struct = { + "tee", /* builtin name */ + tee_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + tee_doc, /* array of long documentation strings. */ + "tee [-ai] [file ...]", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/template.c b/bash-5.1/examples/loadables/template.c new file mode 100644 index 0000000..094b80c --- /dev/null +++ b/bash-5.1/examples/loadables/template.c @@ -0,0 +1,75 @@ +/* template - example template for loadable builtin */ + +/* See Makefile for compilation details. */ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include "bashansi.h" +#include +#include + +#include "loadables.h" + +#if !defined (errno) +extern int errno; +#endif + +extern char *strerror (); + +int +template_builtin (list) + WORD_LIST *list; +{ + int opt, rval; + + rval = EXECUTION_SUCCESS; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "")) != -1) + { + switch (opt) + { + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + return (rval); +} + +/* Called when `template' is enabled and loaded from the shared object. If this + function returns 0, the load fails. */ +int +template_builtin_load (name) + char *name; +{ + return (1); +} + +/* Called when `template' is disabled. */ +void +template_builtin_unload (name) + char *name; +{ +} + +char *template_doc[] = { + "Short description.", + "" + "Longer description of builtin and usage.", + (char *)NULL +}; + +struct builtin template_struct = { + "template", /* builtin name */ + template_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + template_doc, /* array of long documentation strings. */ + "template", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/truefalse.c b/bash-5.1/examples/loadables/truefalse.c new file mode 100644 index 0000000..e011fa1 --- /dev/null +++ b/bash-5.1/examples/loadables/truefalse.c @@ -0,0 +1,72 @@ +/* true and false builtins */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#include "bashtypes.h" +#include "shell.h" +#include "builtins.h" +#include "common.h" + +int +true_builtin (list) + WORD_LIST *list; +{ + return EXECUTION_SUCCESS; +} + +int +false_builtin (list) + WORD_LIST *list; +{ + return EXECUTION_FAILURE; +} + +static char *true_doc[] = { + "Exit successfully.", + "", + "Return a successful result.", + (char *)NULL +}; + +static char *false_doc[] = { + "Exit unsuccessfully.", + "", + "Return an unsuccessful result.", + (char *)NULL +}; + +struct builtin true_struct = { + "true", + true_builtin, + BUILTIN_ENABLED, + true_doc, + "true", + 0 +}; + +struct builtin false_struct = { + "false", + false_builtin, + BUILTIN_ENABLED, + false_doc, + "false", + 0 +}; diff --git a/bash-5.1/examples/loadables/tty.c b/bash-5.1/examples/loadables/tty.c new file mode 100644 index 0000000..febf518 --- /dev/null +++ b/bash-5.1/examples/loadables/tty.c @@ -0,0 +1,82 @@ +/* tty - return terminal name */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include "config.h" + +#include +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" +#include "common.h" + +extern char *ttyname (); + +int +tty_builtin (list) + WORD_LIST *list; +{ + int opt, sflag; + char *t; + + reset_internal_getopt (); + sflag = 0; + while ((opt = internal_getopt (list, "s")) != -1) + { + switch (opt) + { + case 's': + sflag = 1; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + t = ttyname (0); + if (sflag == 0) + puts (t ? t : "not a tty"); + return (t ? EXECUTION_SUCCESS : EXECUTION_FAILURE); +} + +char *tty_doc[] = { + "Display terminal name.", + "", + "tty writes the name of the terminal that is opened for standard", + "input to standard output. If the `-s' option is supplied, nothing", + "is written; the exit status determines whether or not the standard", + "input is connected to a tty.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. */ +struct builtin tty_struct = { + "tty", /* builtin name */ + tty_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + tty_doc, /* array of long documentation strings. */ + "tty [-s]", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/uname.c b/bash-5.1/examples/loadables/uname.c new file mode 100644 index 0000000..106a1c8 --- /dev/null +++ b/bash-5.1/examples/loadables/uname.c @@ -0,0 +1,162 @@ +/* + * uname - print system information + * + * usage: uname [-amnrsv] + * + */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include +#include + +#include "bashtypes.h" + +#if defined (HAVE_UNAME) +# include +#else +struct utsname { + char sysname[32]; + char nodename[32]; + char release[32]; + char version[32]; + char machine[32]; +}; +#endif + +#include + +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" +#include "common.h" + +#define FLAG_SYSNAME 0x01 /* -s */ +#define FLAG_NODENAME 0x02 /* -n */ +#define FLAG_RELEASE 0x04 /* -r */ +#define FLAG_VERSION 0x08 /* -v */ +#define FLAG_MACHINE 0x10 /* -m, -p */ + +#define FLAG_ALL 0x1f + +#ifndef errno +extern int errno; +#endif + +static void uprint(); + +static int uname_flags; + +int +uname_builtin (list) + WORD_LIST *list; +{ + int opt, r; + struct utsname uninfo; + + uname_flags = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "amnprsv")) != -1) + { + switch (opt) + { + case 'a': + uname_flags |= FLAG_ALL; + break; + case 'm': + case 'p': + uname_flags |= FLAG_MACHINE; + break; + case 'n': + uname_flags |= FLAG_NODENAME; + break; + case 'r': + uname_flags |= FLAG_RELEASE; + break; + case 's': + uname_flags |= FLAG_SYSNAME; + break; + case 'v': + uname_flags |= FLAG_VERSION; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list) + { + builtin_usage (); + return (EX_USAGE); + } + + if (uname_flags == 0) + uname_flags = FLAG_SYSNAME; + + /* Only ancient systems will not have uname(2). */ +#ifdef HAVE_UNAME + if (uname (&uninfo) < 0) + { + builtin_error ("cannot get system name: %s", strerror (errno)); + return (EXECUTION_FAILURE); + } +#else + builtin_error ("cannot get system information: uname(2) not available"); + return (EXECUTION_FAILURE); +#endif + + uprint (FLAG_SYSNAME, uninfo.sysname); + uprint (FLAG_NODENAME, uninfo.nodename); + uprint (FLAG_RELEASE, uninfo.release); + uprint (FLAG_VERSION, uninfo.version); + uprint (FLAG_MACHINE, uninfo.machine); + + return (EXECUTION_SUCCESS); +} + +static void +uprint (flag, info) + int flag; + char *info; +{ + if (uname_flags & flag) + { + uname_flags &= ~flag; + printf ("%s%c", info, uname_flags ? ' ' : '\n'); + } +} + +char *uname_doc[] = { + "Display system information.", + "", + "Display information about the system hardware and OS.", + (char *)NULL +}; + +struct builtin uname_struct = { + "uname", + uname_builtin, + BUILTIN_ENABLED, + uname_doc, + "uname [-amnrsv]", + 0 +}; diff --git a/bash-5.1/examples/loadables/unlink.c b/bash-5.1/examples/loadables/unlink.c new file mode 100644 index 0000000..ff2a78a --- /dev/null +++ b/bash-5.1/examples/loadables/unlink.c @@ -0,0 +1,74 @@ +/* unlink - remove a directory entry */ + +/* Should only be used to remove directories by a superuser prepared to let + fsck clean up the file system. */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include + +#ifdef HAVE_UNISTD_H +#include +#endif + +#include +#include + +#include "builtins.h" +#include "shell.h" +#include "common.h" + +#ifndef errno +extern int errno; +#endif + +int +unlink_builtin (list) + WORD_LIST *list; +{ + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + if (unlink (list->word->word) != 0) + { + builtin_error ("%s: cannot unlink: %s", list->word->word, strerror (errno)); + return (EXECUTION_FAILURE); + } + + return (EXECUTION_SUCCESS); +} + +char *unlink_doc[] = { + "Remove a directory entry.", + "", + "Forcibly remove a directory entry, even if it's a directory.", + (char *)NULL +}; + +struct builtin unlink_struct = { + "unlink", /* builtin name */ + unlink_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + unlink_doc, /* array of long documentation strings. */ + "unlink name", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/bash-5.1/examples/loadables/whoami.c b/bash-5.1/examples/loadables/whoami.c new file mode 100644 index 0000000..3e7e36e --- /dev/null +++ b/bash-5.1/examples/loadables/whoami.c @@ -0,0 +1,75 @@ +/* + * whoami - print out username of current user + */ + +/* + Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + 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 . +*/ + +#include +#include + +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" +#include "common.h" + +int +whoami_builtin (list) + WORD_LIST *list; +{ + int opt; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "")) != -1) + { + switch (opt) + { + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + if (list) + { + builtin_usage (); + return (EX_USAGE); + } + + if (current_user.user_name == 0) + get_current_user_info (); + printf ("%s\n", current_user.user_name); + return (EXECUTION_SUCCESS); +} + +char *whoami_doc[] = { + "Print user name", + "", + "Display name of current user.", + (char *)NULL +}; + +struct builtin whoami_struct = { + "whoami", + whoami_builtin, + BUILTIN_ENABLED, + whoami_doc, + "whoami", + 0 +}; diff --git a/bash-5.1/examples/misc/aliasconv.bash b/bash-5.1/examples/misc/aliasconv.bash new file mode 100755 index 0000000..22a0447 --- /dev/null +++ b/bash-5.1/examples/misc/aliasconv.bash @@ -0,0 +1,44 @@ +#! /bin/bash +# +# aliasconv.bash - convert csh aliases to bash aliases and functions +# +# usage: aliasconv.bash +# +# Chet Ramey +# chet@po.cwru.edu +# +trap 'rm -f $TMPFILE' 0 1 2 3 6 15 + +TMPFILE=$(mktemp -t cb.XXXXXX) || exit 1 + +T=$'\t' + +cat << \EOF >$TMPFILE +mkalias () +{ + case $2 in + '') echo alias ${1}="''" ;; + *[#\!]*) + comm=$(echo $2 | sed 's/\!\*/"$\@"/g + s/\!:\([1-9]\)/"$\1"/g + s/#/\#/g') + echo $1 \(\) "{" command "$comm" "; }" + ;; + *) echo alias ${1}=\'$(echo "${2}" | sed "s:':'\\\\'':g")\' ;; + esac +} +EOF + +# the first thing we want to do is to protect single quotes in the alias, +# since they whole thing is going to be surrounded by single quotes when +# passed to mkalias + +sed -e "s:':\\'\\\'\\':" -e "s/^\([a-zA-Z0-9_-]*\)$T\(.*\)$/mkalias \1 '\2'/" >>$TMPFILE + +$BASH $TMPFILE | sed -e 's/\$cwd/\$PWD/g' \ + -e 's/\$term/\$TERM/g' \ + -e 's/\$home/\$HOME/g' \ + -e 's/\$user/\$USER/g' \ + -e 's/\$prompt/\$PS1/g' + +exit 0 diff --git a/bash-5.1/examples/misc/aliasconv.sh b/bash-5.1/examples/misc/aliasconv.sh new file mode 100755 index 0000000..fe975d6 --- /dev/null +++ b/bash-5.1/examples/misc/aliasconv.sh @@ -0,0 +1,42 @@ +#! /bin/bash +# +# aliasconv.sh - convert csh aliases to bash aliases and functions +# +# usage: aliasconv.sh +# +# Chet Ramey +# chet@po.cwru.edu +# +trap 'rm -f $TMPFILE' 0 1 2 3 6 15 +TMPFILE=$(mktemp -t cb.XXXXXX) || exit 1 +T=' ' + +cat << \EOF >$TMPFILE +mkalias () +{ + case $2 in + '') echo alias ${1}="''" ;; + *[#\!]*) + comm=`echo $2 | sed 's/\\!\*/"$\@"/g + s/\\!:\([1-9]\)/"$\1"/g + s/#/\#/g'` + echo $1 \(\) "{" command "$comm" "; }" + ;; + *) echo alias ${1}=\'`echo "${2}" | sed "s:':'\\\\\\\\'':"`\' ;; + esac +} +EOF + +# the first thing we want to do is to protect single quotes in the alias, +# since they whole thing is going to be surrounded by single quotes when +# passed to mkalias + +sed -e "s:':\\'\\\'\\':" -e "s/^\([a-zA-Z0-9_-]*\)$T\(.*\)$/mkalias \1 '\2'/" >>$TMPFILE + +sh $TMPFILE | sed -e 's/\$cwd/\$PWD/g' \ + -e 's/\$term/\$TERM/g' \ + -e 's/\$home/\$HOME/g' \ + -e 's/\$user/\$USER/g' \ + -e 's/\$prompt/\$PS1/g' + +exit 0 diff --git a/bash-5.1/examples/misc/cshtobash b/bash-5.1/examples/misc/cshtobash new file mode 100755 index 0000000..ce49bfc --- /dev/null +++ b/bash-5.1/examples/misc/cshtobash @@ -0,0 +1,139 @@ +#! /bin/bash +# +# cshtobash - convert csh aliases, environment variables, and variables to +# bash equivalents +# +# usage: cshtobash [filename] +# +# If filename is given, that file is sourced. Note that csh always +# sources .cshrc. To recreate your csh login environment, run +# `cshtobash ~/.login'. +# +# Inspired by (and some borrowed from) a similar program distributed with +# zsh-3.0. +# +# Chet Ramey +# chet@po.cwru.edu +# +trap 'rm -f $TMPFILE1 $TMPFILEa $TMPFILEe $TMPFILEv $TMPFILEco $TMPFILEci' 0 1 2 3 6 15 + +{ TMPFILE1=$(mktemp -t cb.1.XXXXXX) && + TMPFILEa=$(mktemp -t cb.a.XXXXXX) && + TMPFILEe=$(mktemp -t cb.e.XXXXXX) && + TMPFILEv=$(mktemp -t cb.v.XXXXXX) && + TMPFILEco=$(mktemp -t cshout.XXXXXX) && + TMPFILEci=$(mktemp -t cshin.XXXXXX) +} || exit 1 + + +T=$'\t' + +SOURCE="${1:+source $1}" + +cat << EOF >$TMPFILEci +$SOURCE +alias >! $TMPFILEa +setenv >! $TMPFILEe +set >! $TMPFILEv +EOF + +# give csh a minimal environment, similar to what login would provide +/usr/bin/env - USER=$USER HOME=$HOME PATH=/usr/bin:/bin:/usr/ucb:. TERM=$TERM SHELL=$SHELL /bin/csh -i < $TMPFILEci > $TMPFILEco 2>&1 + +# First convert aliases + +cat << \EOF >$TMPFILE1 +mkalias () +{ + case $2 in + '') echo alias ${1}="''" ;; + *[#\!]*) + comm=$(echo $2 | sed 's/\!\*/"$\@"/g + s/\!:\([1-9]\)/"$\1"/g + s/#/\#/g') + echo $1 \(\) "{" command "$comm" "; }" + ;; + *) echo alias ${1}=\'$(echo "${2}" | sed "s:':'\\\\'':")\' ;; + esac +} +EOF + +sed "s/^\([a-zA-Z0-9_]*\)$T\(.*\)$/mkalias \1 '\2'/" < $TMPFILEa >>$TMPFILE1 + +echo '# csh aliases' +echo + +$BASH $TMPFILE1 | sed -e 's/\$cwd/\$PWD/g' \ + -e 's/\$term/\$TERM/g' \ + -e 's/\$home/\$HOME/g' \ + -e 's/\$user/\$USER/g' \ + -e 's/\$prompt/\$PS1/g' + +# Next, convert environment variables +echo +echo '# csh environment variables' +echo + +# Would be nice to deal with embedded newlines, e.g. in TERMCAP, but ... +sed -e '/^SHLVL/d' \ + -e '/^PWD/d' \ + -e "s/'/'"\\\\"''"/g \ + -e "s/^\([A-Za-z0-9_]*=\)/export \1'/" \ + -e "s/$/'/" < $TMPFILEe + +# Finally, convert local variables +echo +echo '# csh variables' +echo + +sed -e 's/'"$T"'/=/' \ + -e "s/'/'"\\\\"''"/g \ + -e '/^[A-Za-z0-9_]*=[^(]/{ + s/=/='"'/"' + s/$/'"'/"' + }' < $TMPFILEv | +sed -e '/^argv=/d' -e '/^cwd=/d' -e '/^filec=/d' -e '/^status=/d' \ + -e '/^verbose=/d' \ + -e '/^term=/d' \ + -e '/^home=/d' \ + -e '/^path=/d' \ + -e '/^user=/d' \ + -e '/^shell=/d' \ + -e '/^cdpath=/d' \ + -e '/^mail=/d' \ + -e '/^home=/s//HOME=/' \ + -e '/^prompt=/s//PS1=/' \ + -e '/^histfile=/s//HISTFILE=/' \ + -e '/^history=/s//HISTSIZE=/' \ + -e '/^savehist=$/s//HISTFILESIZE=${HISTSIZE-500}/' \ + -e '/^savehist=/s//HISTFILESIZE=/' \ + -e '/^ignoreeof=$/s/^.*$/set -o ignoreeof # ignoreeof/' \ + -e '/^ignoreeof=/s//IGNOREEOF=/' \ + -e '/^noclobber=/s/^.*$/set -C # noclobber/' \ + -e '/^notify=/s/^.*$/set -b # notify/' \ + -e '/^noglob=/s/^.*$/set -f # noglob/' \ + + +# now some special csh variables converted to bash equivalents +echo +echo '# special csh variables converted to bash equivalents' +echo + +sed -e 's/'"$T"'/=/' < $TMPFILEv | +grep "^cdpath=" | +sed 's/(// + s/ /:/g + s/)// + s/cdpath=/CDPATH=/' + + +sed -e 's/'"$T"'/=/' < $TMPFILEv | +grep "^mail=" | +sed 's/(// + s/ /:/g + s/)// + s/mail=/MAILPATH=/' | +sed -e 's/MAILPATH=\([0-9][0-9][^:]*\)$/MAILCHECK=\1/' \ + -e 's/MAILPATH=\([0-9][0-9][^:]*\):\(.*\)/MAILCHECK=\1 MAILPATH=\2/' + +exit 0 diff --git a/bash-5.1/examples/scripts/cat.sh b/bash-5.1/examples/scripts/cat.sh new file mode 100644 index 0000000..3e65b3f --- /dev/null +++ b/bash-5.1/examples/scripts/cat.sh @@ -0,0 +1,12 @@ +shcat() +{ + while read -r ; do + printf "%s\n" "$REPLY" + done +} + +if [ -n "$1" ]; then + shcat < "$1" +else + shcat +fi diff --git a/bash-5.1/examples/scripts/center b/bash-5.1/examples/scripts/center new file mode 100644 index 0000000..dbe6133 --- /dev/null +++ b/bash-5.1/examples/scripts/center @@ -0,0 +1,41 @@ +#! /bin/bash +# +# center - center a group of lines +# +# tabs in the lines might cause this to look a little bit off +# +# +# Chet Ramey +# +# Copyright 1999 Chester Ramey +# +# 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. +# +# TThis 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. + +width=${COLUMNS:-80} + +if [[ $# == 0 ]] +then + set -- /dev/stdin +fi + +for file +do + while read -r + do + printf "%*s\n" $(( (width+${#REPLY})/2 )) "$REPLY" + done < $file +done + +exit 0 diff --git a/bash-5.1/examples/scripts/inpath b/bash-5.1/examples/scripts/inpath new file mode 100755 index 0000000..95f28bc --- /dev/null +++ b/bash-5.1/examples/scripts/inpath @@ -0,0 +1,19 @@ +#! /bin/sh +# +# Search $PATH for a file the same name as $1; return TRUE if found. +# + +command=$1 +[ -n "$command" ] || exit 1 + +set `echo $PATH | sed 's/^:/.:/ + s/::/:.:/g + s/:$/:./ + s/:/ /g'` + +while [ $# -ne 0 ] ; do + [ -f $1/$command ] && exit 0 # test -x not universal + shift +done + +exit 1 diff --git a/bash-5.1/examples/scripts/shprompt b/bash-5.1/examples/scripts/shprompt new file mode 100755 index 0000000..098c45f --- /dev/null +++ b/bash-5.1/examples/scripts/shprompt @@ -0,0 +1,153 @@ +# +# shprompt -- give a prompt and get an answer satisfying certain criteria +# +# shprompt [-dDfFsy] prompt +# s = prompt for string +# f = prompt for filename +# F = prompt for full pathname to a file or directory +# d = prompt for a directory name +# D = prompt for a full pathname to a directory +# y = prompt for y or n answer +# +# Chet Ramey +# chet@ins.CWRU.Edu +# +# Copyright 2002 Chester Ramey +# +# 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. +# +# TThis 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. + +type=file + +OPTS=dDfFsy + +succeed() +{ + echo "$1" + exit 0 +} + +while getopts "$OPTS" c +do + case "$c" in + s) type=string + ;; + f) type=file + ;; + F) type=path + ;; + d) type=dir + ;; + D) type=dirpath + ;; + y) type=yesno + ;; + ?) echo "usage: $0 [-$OPTS] prompt" 1>&2 + exit 2 + ;; + esac +done + +if [ "$OPTIND" -gt 1 ] ; then + shift $(( $OPTIND - 1 )) +fi + +while : +do + case "$type" in + string) + echo -n "$1" 1>&2 + read ans || exit 1 + if [ -n "$ans" ] ; then + succeed "$ans" + fi + ;; + file|path) + echo -n "$1" 1>&2 + read ans || exit 1 + # + # use `fn' and eval so that bash will do tilde expansion for + # me + # + eval fn="$ans" + case "$fn" in + /*) if test -e "$fn" ; then + succeed "$fn" + else + echo "$0: '$fn' does not exist" 1>&2 + fi + ;; + *) if [ "$type" = "path" ] ; then + echo "$0: must give full pathname to file" 1>&2 + else + if test -e "$fn" ; then + succeed "$fn" + else + echo "$0: '$fn' does not exist" 1>&2 + fi + fi + ;; + esac + ;; + dir|dirpath) + echo -n "$1" 1>&2 + read ans || exit 1 + # + # use `fn' and eval so that bash will do tilde expansion for + # me + # + eval fn="$ans" + case "$fn" in + /*) if test -d "$fn" ; then + succeed "$fn" + elif test -e "$fn" ; then + echo "$0 '$fn' is not a directory" 1>&2 + else + echo "$0: '$fn' does not exist" 1>&2 + fi + ;; + *) if [ "$type" = "dirpath" ] ; then + echo "$0: must give full pathname to directory" 1>&2 + else + if test -d "$fn" ; then + succeed "$fn" + elif test -e "$fn" ; then + echo "$0 '$fn' is not a directory" 1>&2 + else + echo "$0: '$fn' does not exist" 1>&2 + fi + fi + ;; + esac + ;; + yesno) + echo -n "$1" 1>&2 + read ans || exit 1 + case "$ans" in + y|Y|[yY][eE][sS]) + succeed "yes" + ;; + n|N|[nN][oO]) + succeed "no" + exit 0 + ;; + *) + echo "$0: yes or no required" 1>&2 + ;; + esac + ;; + esac +done + +exit 1 diff --git a/bash-5.1/examples/scripts/spin.bash b/bash-5.1/examples/scripts/spin.bash new file mode 100644 index 0000000..9fa9125 --- /dev/null +++ b/bash-5.1/examples/scripts/spin.bash @@ -0,0 +1,37 @@ +#!/bin/bash +# +# spin.bash -- provide a `spinning wheel' to show progress +# +# Chet Ramey +# chet@po.cwru.edu +# +# Copyright 1997 Chester Ramey +# +# 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. +# +# TThis 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. + +bs=$'\b' + +chars="|${bs} \\${bs} -${bs} /${bs}" + +# Infinite loop for demo. purposes +while : +do + for letter in $chars + do + echo -n ${letter} + done +done + +exit 0 diff --git a/bash-5.1/examples/scripts/xterm_title b/bash-5.1/examples/scripts/xterm_title new file mode 100755 index 0000000..839003f --- /dev/null +++ b/bash-5.1/examples/scripts/xterm_title @@ -0,0 +1,44 @@ +#! /bin/bash +# +# xterm_title - print the contents of the xterm title bar +# +# Derived from http://www.clark.net/pub/dickey/xterm/xterm.faq.html#how2_title +# + +# Copyright 1997 Chester Ramey +# +# 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. +# +# TThis 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. + +P=${0##*/} +[ -z "$DISPLAY" ] && { + echo "${P}: not running X" >&2 + exit 1 +} + +if [ -z "$TERM" ] || [ "$TERM" != "xterm" ]; then + echo "${P}: not running in an xterm" >&2 + exit 1 +fi + +exec /dev/tty +IFS='' read -r a +stty $old +b=${a#???} +echo "${b%??}" + +exit 0 diff --git a/bash-5.1/examples/scripts/zprintf b/bash-5.1/examples/scripts/zprintf new file mode 100755 index 0000000..86f9e95 --- /dev/null +++ b/bash-5.1/examples/scripts/zprintf @@ -0,0 +1,43 @@ +#! /bin/bash +# +# zprintf - function that calls gawk to do printf for those systems that +# don't have a printf executable +# +# The format and arguments can have trailing commas, just like gawk +# +# example: +# zprintf 'Eat %x %x and suck %x!\n' 57005 48879 64206 +# +# Chet Ramey +# chet@po.cwru.edu + +# Copyright 1996 Chester Ramey +# +# 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. +# +# TThis 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. + + +[ $# -lt 1 ] && { + echo "zprintf: usage: zprintf format [args ...]" >&2 + exit 2 +} + +fmt="${1%,}" +shift + +for a in "$@"; do + args="$args,\"${a%,}\"" +done + +gawk "BEGIN { printf \"$fmt\" $args }" diff --git a/bash-5.1/examples/startup-files/Bash_aliases b/bash-5.1/examples/startup-files/Bash_aliases new file mode 100644 index 0000000..2abb93e --- /dev/null +++ b/bash-5.1/examples/startup-files/Bash_aliases @@ -0,0 +1,63 @@ +# Some useful aliases. +alias texclean='rm -f *.toc *.aux *.log *.cp *.fn *.tp *.vr *.pg *.ky' +alias clean='echo -n "Really clean this directory?"; + read yorn; + if test "$yorn" = "y"; then + rm -f \#* *~ .*~ *.bak .*.bak *.tmp .*.tmp core a.out; + echo "Cleaned."; + else + echo "Not cleaned."; + fi' +alias h='history' +alias j="jobs -l" +alias l="ls -l " +alias ll="ls -l" +alias ls="ls -F" +alias pu="pushd" +alias po="popd" + +# +# Csh compatibility: +# +alias unsetenv=unset +function setenv () { + export $1="$2" +} + +# Function which adds an alias to the current shell and to +# the ~/.bash_aliases file. +add-alias () +{ + local name=$1 value="$2" + echo alias $name=\'$value\' >>~/.bash_aliases + eval alias $name=\'$value\' + alias $name +} + +# "repeat" command. Like: +# +# repeat 10 echo foo +repeat () +{ + local count="$1" i; + shift; + for i in $(seq 1 "$count"); + do + eval "$@"; + done +} + +# Subfunction needed by `repeat'. +seq () +{ + local lower upper output; + lower=$1 upper=$2; + + if [ $lower -ge $upper ]; then return; fi + while [ $lower -le $upper ]; + do + echo -n "$lower " + lower=$(($lower + 1)) + done + echo "$lower" +} diff --git a/bash-5.1/examples/startup-files/Bash_profile b/bash-5.1/examples/startup-files/Bash_profile new file mode 100644 index 0000000..141e8df --- /dev/null +++ b/bash-5.1/examples/startup-files/Bash_profile @@ -0,0 +1,18 @@ +# Startup file for bash login shells. +# +default_dir=/usr/local/lib/ + +if [ -n "$PS1" ]; then + PS1='\u@\h(\#)\$ ' + IGNOREEOF=3 +fi + +LOGIN_SHELL=true + +# If the user has her own init file, then use that one, else use the +# canonical one. +if [ -f ~/.bashrc ]; then + . ~/.bashrc +elif [ -f ${default_dir}Bashrc ]; then + . ${default_dir}Bashrc; +fi diff --git a/bash-5.1/examples/startup-files/Bashrc.bfox b/bash-5.1/examples/startup-files/Bashrc.bfox new file mode 100644 index 0000000..efe7d88 --- /dev/null +++ b/bash-5.1/examples/startup-files/Bashrc.bfox @@ -0,0 +1,70 @@ +# Bourne Again SHell init file. +# +# Files you make look like rw-rw-r +umask 002 + +# Don't make useless coredump files. If you want a coredump, +# say "ulimit -c unlimited" and then cause a segmentation fault. +ulimit -c 0 + +# Sometimes, there are lots of places that one can find tex inputs. +export TEXINPUTS=.:$HOME/bin:/usr/lib/tex/inputs:/usr/local/lib/tex/inputs + +# Where's the Gnu stuff at? +GNU=/usr/gnu/bin +X11=/usr/bin/X11 + +UTIL_PATH=$GNU:$X11 +STANDARD_PATH=/usr/local/bin:/usr/ucb:/bin:/usr/bin:/usr/etc:/etc:/usr/games + +if [ -d $HOME/bin/$HOSTTYPE ]; then + MY_PATH=$HOME/bin/$HOSTTYPE +fi + +if [ -d $HOME/bin ]; then + MY_PATH=$MY_PATH:$HOME/bin +fi + +if [ -d /usr/hosts ]; then + STANDARD_PATH=$STANDARD_PATH:/usr/hosts +fi + +PATH=.:$MY_PATH:$UTIL_PATH:$STANDARD_PATH + +# If not running interactively, then return +if [ -z "$PS1" ]; then + return +fi + +# Set ignoreeof if you don't want EOF as the sole input to the shell to +# immediately signal a quit condition. This only happens at the start +# of a line if the line is empty, and you haven't just deleted a character +# with C-d. I turn this on in ~/.bash_profile so that only login shells +# have the right to be obnoxious. +# set -o ignoreeof + +# Set auto_resume if you want to resume on "emacs", as well as on +# "%emacs". +auto_resume=exact + +# Set notify if you want to be asynchronously notified about background +# job completion. +set -o notify + +# Make it so that failed `exec' commands don't flush this shell. +shopt -s execfail + +if [ -z "$LOGIN_SHELL" ]; then + PS1="\u@\h\$ " +fi + +HISTSIZE=256 +MAILCHECK=60 + +# A couple of default aliases. +alias j='jobs -l' +alias po=popd +alias pu=pushd +alias ls='ls -F' + +[ -f ~/.bash_aliases ] && . ~/.bash_aliases diff --git a/bash-5.1/examples/startup-files/README b/bash-5.1/examples/startup-files/README new file mode 100644 index 0000000..00df041 --- /dev/null +++ b/bash-5.1/examples/startup-files/README @@ -0,0 +1,12 @@ +Some sample startup files. The ones starting with capital letters +are originally from Brian Fox. The ones starting with lowercase +letters are from Chet Ramey. + +They will require changes for your environment. + +Bash_aliases Some useful aliases (Fox). +Bash_profile Sample startup file for bash login shells (Fox). +bash-profile Sample startup file for bash login shells (Ramey). +bashrc Sample Bourne Again SHell init file (Ramey). +Bashrc.bfox Sample Bourne Again SHell init file (Fox). +README README diff --git a/bash-5.1/examples/startup-files/bash-profile b/bash-5.1/examples/startup-files/bash-profile new file mode 100644 index 0000000..e811df8 --- /dev/null +++ b/bash-5.1/examples/startup-files/bash-profile @@ -0,0 +1,39 @@ +# This is the filename where your incoming mail arrives. +MAIL=~/mbox +MAILCHECK=30 + +HISTFILE=~/.history/history.$HOSTNAME + +PATH1=/usr/homes/chet/bin.$HOSTTYPE:/usr/local/bin/gnu: +PATH2=/usr/local/bin:/usr/ucb:/bin:/usr/bin/X11:. +PATH3=/usr/bin:/usr/new/bin:/usr/contrib/bin +PATH=$PATH1:$PATH2:$PATH3 + +EDITOR=/usr/local/bin/ce VISUAL=/usr/local/bin/ce FCEDIT=/usr/local/bin/ce + +SHELL=${SHELL:-${BASH:-/bin/bash}} + +PAGER=/usr/local/bin/less +LESS='-i -e -M -P%t?f%f :stdin .?pb%pb\%:?lbLine %lb:?bbByte %bb:-...' +# +# Bogus 1003.2 variables. This should really be in /etc/profile +# +LOGNAME=${USER-$(whoami)} +TZ=US/Eastern + +export HOME VISUAL EDITOR MAIL SHELL PATH TERM +export PAGER LESS TERMCAP HISTSIZE HISTFILE MAIL MAILCHECK LOGNAME TZ + +PS1="${HOSTNAME}\$ " +PS2='> ' +export PS1 PS2 + +umask 022 + +if [ -f /unix ] ; then + stty intr ^c # bogus +fi + +if [ -f ~/.bashrc ] ; then + . ~/.bashrc +fi diff --git a/bash-5.1/examples/startup-files/bashrc b/bash-5.1/examples/startup-files/bashrc new file mode 100644 index 0000000..2d8d37b --- /dev/null +++ b/bash-5.1/examples/startup-files/bashrc @@ -0,0 +1,133 @@ +case $- in +*i*) ;; +*) return ;; +esac + +# bogus +if [ -f /unix ] ; then + alias ls='/bin/ls -CF' +else + alias ls='/bin/ls -F' +fi +alias ll='ls -l' +alias dir='ls -ba' + +alias ss="ps -aux" +alias dot='ls .[a-zA-Z0-9_]*' +alias news="xterm -g 80x45 -e trn -e -S1 -N &" + +alias c="clear" +alias m="more" +alias j="jobs" + +# common misspellings +alias mroe=more +alias pdw=pwd + +hash -p /usr/bin/mail mail + +if [ -z "$HOST" ] ; then + export HOST=${HOSTNAME} +fi + +HISTIGNORE="[ ]*:&:bg:fg" + +psgrep() +{ + ps -aux | grep $1 | grep -v grep +} + +# +# This is a little like `zap' from Kernighan and Pike +# + +pskill() +{ + local pid + + pid=$(ps -ax | grep $1 | grep -v grep | awk '{ print $1 }') + echo -n "killing $1 (process $pid)..." + kill -9 $pid + echo "slaughtered." +} + +term() +{ + TERM=$1 + export TERM + tset +} + +xtitle () +{ + echo -n -e "\033]0;$*\007" +} + +cd() +{ + builtin cd "$@" && xtitle $HOST: $PWD +} + +bold() +{ + tput smso +} + +unbold() +{ + tput rmso +} + +if [ -f /unix ] ; then +clear() +{ + tput clear +} +fi + +rot13() +{ + if [ $# = 0 ] ; then + tr "[a-m][n-z][A-M][N-Z]" "[n-z][a-m][N-Z][A-M]" + else + tr "[a-m][n-z][A-M][N-Z]" "[n-z][a-m][N-Z][A-M]" < $1 + fi +} + +watch() +{ + if [ $# -ne 1 ] ; then + tail -f nohup.out + else + tail -f $1 + fi +} + +# +# Remote login passing all 8 bits (so meta key will work) +# +rl() +{ + rlogin $* -8 +} + +function setenv() +{ + if [ $# -ne 2 ] ; then + echo "setenv: Too few arguments" + else + export $1="$2" + fi +} + +function chmog() +{ + if [ $# -ne 4 ] ; then + echo "usage: chmog mode owner group file" + return 1 + else + chmod $1 $4 + chown $2 $4 + chgrp $3 $4 + fi +} diff --git a/bash-5.1/execute_cmd.c b/bash-5.1/execute_cmd.c new file mode 100644 index 0000000..c86c1a0 --- /dev/null +++ b/bash-5.1/execute_cmd.c @@ -0,0 +1,6326 @@ +/* execute_cmd.c -- Execute a COMMAND structure. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) + #pragma alloca +#endif /* _AIX && RISC6000 && !__GNUC__ */ + +#include +#include "chartypes.h" +#include "bashtypes.h" +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif +#include "filecntl.h" +#include "posixstat.h" +#include +#if defined (HAVE_SYS_PARAM_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#ifdef HAVE_ELF_H +# include +#endif + +#include "posixtime.h" + +#if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE) +# include +#endif + +#if defined (HAVE_SYS_TIMES_H) && defined (HAVE_TIMES) +# include +#endif + +#include + +#if !defined (errno) +extern int errno; +#endif + +#define NEED_FPURGE_DECL +#define NEED_SH_SETLINEBUF_DECL + +#include "bashansi.h" +#include "bashintl.h" + +#include "memalloc.h" +#include "shell.h" +#include /* use <...> so we pick it up from the build directory */ +#include "parser.h" +#include "flags.h" +#include "builtins.h" +#include "hashlib.h" +#include "jobs.h" +#include "execute_cmd.h" +#include "findcmd.h" +#include "redir.h" +#include "trap.h" +#include "pathexp.h" +#include "hashcmd.h" + +#if defined (COND_COMMAND) +# include "test.h" +#endif + +#include "builtins/common.h" +#include "builtins/builtext.h" /* list of builtins */ + +#include "builtins/getopt.h" + +#include +#include + +#if defined (BUFFERED_INPUT) +# include "input.h" +#endif + +#if defined (ALIAS) +# include "alias.h" +#endif + +#if defined (HISTORY) +# include "bashhist.h" +#endif + +#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) +# include /* mbschr */ +#endif + +extern int command_string_index; +extern char *the_printed_command; +extern time_t shell_start_time; +#if defined (HAVE_GETTIMEOFDAY) +extern struct timeval shellstart; +#endif +#if 0 +extern char *glob_argv_flags; +#endif + +extern int close PARAMS((int)); + +/* Static functions defined and used in this file. */ +static void close_pipes PARAMS((int, int)); +static void do_piping PARAMS((int, int)); +static void bind_lastarg PARAMS((char *)); +static int shell_control_structure PARAMS((enum command_type)); +static void cleanup_redirects PARAMS((REDIRECT *)); + +#if defined (JOB_CONTROL) +static int restore_signal_mask PARAMS((sigset_t *)); +#endif + +static int builtin_status PARAMS((int)); + +static int execute_for_command PARAMS((FOR_COM *)); +#if defined (SELECT_COMMAND) +static int displen PARAMS((const char *)); +static int print_index_and_element PARAMS((int, int, WORD_LIST *)); +static void indent PARAMS((int, int)); +static void print_select_list PARAMS((WORD_LIST *, int, int, int)); +static char *select_query PARAMS((WORD_LIST *, int, char *, int)); +static int execute_select_command PARAMS((SELECT_COM *)); +#endif +#if defined (DPAREN_ARITHMETIC) +static int execute_arith_command PARAMS((ARITH_COM *)); +#endif +#if defined (COND_COMMAND) +static int execute_cond_node PARAMS((COND_COM *)); +static int execute_cond_command PARAMS((COND_COM *)); +#endif +#if defined (COMMAND_TIMING) +static int mkfmt PARAMS((char *, int, int, time_t, int)); +static void print_formatted_time PARAMS((FILE *, char *, + time_t, int, time_t, int, + time_t, int, int)); +static int time_command PARAMS((COMMAND *, int, int, int, struct fd_bitmap *)); +#endif +#if defined (ARITH_FOR_COMMAND) +static intmax_t eval_arith_for_expr PARAMS((WORD_LIST *, int *)); +static int execute_arith_for_command PARAMS((ARITH_FOR_COM *)); +#endif +static int execute_case_command PARAMS((CASE_COM *)); +static int execute_while_command PARAMS((WHILE_COM *)); +static int execute_until_command PARAMS((WHILE_COM *)); +static int execute_while_or_until PARAMS((WHILE_COM *, int)); +static int execute_if_command PARAMS((IF_COM *)); +static int execute_null_command PARAMS((REDIRECT *, int, int, int)); +static void fix_assignment_words PARAMS((WORD_LIST *)); +static int execute_simple_command PARAMS((SIMPLE_COM *, int, int, int, struct fd_bitmap *)); +static int execute_builtin PARAMS((sh_builtin_func_t *, WORD_LIST *, int, int)); +static int execute_function PARAMS((SHELL_VAR *, WORD_LIST *, int, struct fd_bitmap *, int, int)); +static int execute_builtin_or_function PARAMS((WORD_LIST *, sh_builtin_func_t *, + SHELL_VAR *, + REDIRECT *, struct fd_bitmap *, int)); +static void execute_subshell_builtin_or_function PARAMS((WORD_LIST *, REDIRECT *, + sh_builtin_func_t *, + SHELL_VAR *, + int, int, int, + struct fd_bitmap *, + int)); +static int execute_disk_command PARAMS((WORD_LIST *, REDIRECT *, char *, + int, int, int, struct fd_bitmap *, int)); + +static char *getinterp PARAMS((char *, int, int *)); +static void initialize_subshell PARAMS((void)); +static int execute_in_subshell PARAMS((COMMAND *, int, int, int, struct fd_bitmap *)); +#if defined (COPROCESS_SUPPORT) +static void coproc_setstatus PARAMS((struct coproc *, int)); +static int execute_coproc PARAMS((COMMAND *, int, int, struct fd_bitmap *)); +#endif + +static int execute_pipeline PARAMS((COMMAND *, int, int, int, struct fd_bitmap *)); + +static int execute_connection PARAMS((COMMAND *, int, int, int, struct fd_bitmap *)); + +static int execute_intern_function PARAMS((WORD_DESC *, FUNCTION_DEF *)); + +/* Set to 1 if fd 0 was the subject of redirection to a subshell. Global + so that reader_loop can set it to zero before executing a command. */ +int stdin_redir; + +/* The name of the command that is currently being executed. + `test' needs this, for example. */ +char *this_command_name; + +/* The printed representation of the currently-executing command (same as + the_printed_command), except when a trap is being executed. Useful for + a debugger to know where exactly the program is currently executing. */ +char *the_printed_command_except_trap; + +/* For catching RETURN in a function. */ +int return_catch_flag; +int return_catch_value; +procenv_t return_catch; + +/* The value returned by the last synchronous command. */ +volatile int last_command_exit_value; + +/* Whether or not the last command (corresponding to last_command_exit_value) + was terminated by a signal, and, if so, which one. */ +int last_command_exit_signal; + +/* Are we currently ignoring the -e option for the duration of a builtin's + execution? */ +int builtin_ignoring_errexit = 0; + +/* The list of redirections to perform which will undo the redirections + that I made in the shell. */ +REDIRECT *redirection_undo_list = (REDIRECT *)NULL; + +/* The list of redirections to perform which will undo the internal + redirections performed by the `exec' builtin. These are redirections + that must be undone even when exec discards redirection_undo_list. */ +REDIRECT *exec_redirection_undo_list = (REDIRECT *)NULL; + +/* When greater than zero, value is the `level' of builtins we are + currently executing (e.g. `eval echo a' would have it set to 2). */ +int executing_builtin = 0; + +/* Non-zero if we are executing a command list (a;b;c, etc.) */ +int executing_list = 0; + +/* Non-zero if failing commands in a command substitution should not exit the + shell even if -e is set. Used to pass the CMD_IGNORE_RETURN flag down to + commands run in command substitutions by parse_and_execute. */ +int comsub_ignore_return = 0; + +/* Non-zero if we have just forked and are currently running in a subshell + environment. */ +int subshell_environment; + +/* Count of nested subshells, like SHLVL. Available via $BASH_SUBSHELL */ +int subshell_level = 0; + +/* Currently-executing shell function. */ +SHELL_VAR *this_shell_function; + +/* If non-zero, matches in case and [[ ... ]] are case-insensitive */ +int match_ignore_case = 0; + +int executing_command_builtin = 0; + +struct stat SB; /* used for debugging */ + +static int special_builtin_failed; + +static COMMAND *currently_executing_command; + +/* The line number that the currently executing function starts on. */ +static int function_line_number; + +/* XXX - set to 1 if we're running the DEBUG trap and we want to show the line + number containing the function name. Used by executing_line_number to + report the correct line number. Kind of a hack. */ +static int showing_function_line; + +static int connection_count; + +/* $LINENO ($BASH_LINENO) for use by an ERR trap. Global so parse_and_execute + can save and restore it. */ +int line_number_for_err_trap; + +/* A sort of function nesting level counter */ +int funcnest = 0; +int funcnest_max = 0; + +int evalnest = 0; +int evalnest_max = EVALNEST_MAX; + +int sourcenest = 0; +int sourcenest_max = SOURCENEST_MAX; + +volatile int from_return_trap = 0; + +int lastpipe_opt = 0; + +struct fd_bitmap *current_fds_to_close = (struct fd_bitmap *)NULL; + +#define FD_BITMAP_DEFAULT_SIZE 32 + +/* Functions to allocate and deallocate the structures used to pass + information from the shell to its children about file descriptors + to close. */ +struct fd_bitmap * +new_fd_bitmap (size) + int size; +{ + struct fd_bitmap *ret; + + ret = (struct fd_bitmap *)xmalloc (sizeof (struct fd_bitmap)); + + ret->size = size; + + if (size) + { + ret->bitmap = (char *)xmalloc (size); + memset (ret->bitmap, '\0', size); + } + else + ret->bitmap = (char *)NULL; + return (ret); +} + +void +dispose_fd_bitmap (fdbp) + struct fd_bitmap *fdbp; +{ + FREE (fdbp->bitmap); + free (fdbp); +} + +void +close_fd_bitmap (fdbp) + struct fd_bitmap *fdbp; +{ + register int i; + + if (fdbp) + { + for (i = 0; i < fdbp->size; i++) + if (fdbp->bitmap[i]) + { + close (i); + fdbp->bitmap[i] = 0; + } + } +} + +/* Return the line number of the currently executing command. */ +int +executing_line_number () +{ + if (executing && showing_function_line == 0 && + (variable_context == 0 || interactive_shell == 0) && + currently_executing_command) + { +#if defined (COND_COMMAND) + if (currently_executing_command->type == cm_cond) + return currently_executing_command->value.Cond->line; +#endif +#if defined (DPAREN_ARITHMETIC) + if (currently_executing_command->type == cm_arith) + return currently_executing_command->value.Arith->line; +#endif +#if defined (ARITH_FOR_COMMAND) + if (currently_executing_command->type == cm_arith_for) + return currently_executing_command->value.ArithFor->line; +#endif + + return line_number; + } + else + return line_number; +} + +/* Execute the command passed in COMMAND. COMMAND is exactly what + read_command () places into GLOBAL_COMMAND. See "command.h" for the + details of the command structure. + + EXECUTION_SUCCESS or EXECUTION_FAILURE are the only possible + return values. Executing a command with nothing in it returns + EXECUTION_SUCCESS. */ +int +execute_command (command) + COMMAND *command; +{ + struct fd_bitmap *bitmap; + int result; + + current_fds_to_close = (struct fd_bitmap *)NULL; + bitmap = new_fd_bitmap (FD_BITMAP_DEFAULT_SIZE); + begin_unwind_frame ("execute-command"); + add_unwind_protect (dispose_fd_bitmap, (char *)bitmap); + + /* Just do the command, but not asynchronously. */ + result = execute_command_internal (command, 0, NO_PIPE, NO_PIPE, bitmap); + + dispose_fd_bitmap (bitmap); + discard_unwind_frame ("execute-command"); + +#if defined (PROCESS_SUBSTITUTION) + /* don't unlink fifos if we're in a shell function; wait until the function + returns. */ + if (variable_context == 0 && executing_list == 0) + unlink_fifo_list (); +#endif /* PROCESS_SUBSTITUTION */ + + QUIT; + return (result); +} + +/* Return 1 if TYPE is a shell control structure type. */ +static int +shell_control_structure (type) + enum command_type type; +{ + switch (type) + { +#if defined (ARITH_FOR_COMMAND) + case cm_arith_for: +#endif +#if defined (SELECT_COMMAND) + case cm_select: +#endif +#if defined (DPAREN_ARITHMETIC) + case cm_arith: +#endif +#if defined (COND_COMMAND) + case cm_cond: +#endif + case cm_case: + case cm_while: + case cm_until: + case cm_if: + case cm_for: + case cm_group: + case cm_function_def: + return (1); + + default: + return (0); + } +} + +/* A function to use to unwind_protect the redirection undo list + for loops. */ +static void +cleanup_redirects (list) + REDIRECT *list; +{ + do_redirections (list, RX_ACTIVE); + dispose_redirects (list); +} + +void +undo_partial_redirects () +{ + if (redirection_undo_list) + { + cleanup_redirects (redirection_undo_list); + redirection_undo_list = (REDIRECT *)NULL; + } +} + +#if 0 +/* Function to unwind_protect the redirections for functions and builtins. */ +static void +cleanup_func_redirects (list) + REDIRECT *list; +{ + do_redirections (list, RX_ACTIVE); +} +#endif + +void +dispose_exec_redirects () +{ + if (exec_redirection_undo_list) + { + dispose_redirects (exec_redirection_undo_list); + exec_redirection_undo_list = (REDIRECT *)NULL; + } +} + +void +dispose_partial_redirects () +{ + if (redirection_undo_list) + { + dispose_redirects (redirection_undo_list); + redirection_undo_list = (REDIRECT *)NULL; + } +} + +#if defined (JOB_CONTROL) +/* A function to restore the signal mask to its proper value when the shell + is interrupted or errors occur while creating a pipeline. */ +static int +restore_signal_mask (set) + sigset_t *set; +{ + return (sigprocmask (SIG_SETMASK, set, (sigset_t *)NULL)); +} +#endif /* JOB_CONTROL */ + +#ifdef DEBUG +/* A debugging function that can be called from gdb, for instance. */ +void +open_files () +{ + register int i; + int f, fd_table_size; + + fd_table_size = getdtablesize (); + + fprintf (stderr, "pid %ld open files:", (long)getpid ()); + for (i = 3; i < fd_table_size; i++) + { + if ((f = fcntl (i, F_GETFD, 0)) != -1) + fprintf (stderr, " %d (%s)", i, f ? "close" : "open"); + } + fprintf (stderr, "\n"); +} +#endif + +void +async_redirect_stdin () +{ + int fd; + + fd = open ("/dev/null", O_RDONLY); + if (fd > 0) + { + dup2 (fd, 0); + close (fd); + } + else if (fd < 0) + internal_error (_("cannot redirect standard input from /dev/null: %s"), strerror (errno)); +} + +#define DESCRIBE_PID(pid) do { if (interactive) describe_pid (pid); } while (0) + +extern int rpm_requires; + +/* Execute the command passed in COMMAND, perhaps doing it asynchronously. + COMMAND is exactly what read_command () places into GLOBAL_COMMAND. + ASYNCHRONOUS, if non-zero, says to do this command in the background. + PIPE_IN and PIPE_OUT are file descriptors saying where input comes + from and where it goes. They can have the value of NO_PIPE, which means + I/O is stdin/stdout. + FDS_TO_CLOSE is a list of file descriptors to close once the child has + been forked. This list often contains the unusable sides of pipes, etc. + + EXECUTION_SUCCESS or EXECUTION_FAILURE are the only possible + return values. Executing a command with nothing in it returns + EXECUTION_SUCCESS. */ +int +execute_command_internal (command, asynchronous, pipe_in, pipe_out, + fds_to_close) + COMMAND *command; + int asynchronous; + int pipe_in, pipe_out; + struct fd_bitmap *fds_to_close; +{ + int exec_result, user_subshell, invert, ignore_return, was_error_trap, fork_flags; + REDIRECT *my_undo_list, *exec_undo_list; + char *tcmd; + volatile int save_line_number; +#if defined (PROCESS_SUBSTITUTION) + volatile int ofifo, nfifo, osize, saved_fifo; + volatile void *ofifo_list; +#endif + + if (breaking || continuing) + return (last_command_exit_value); + if (command == 0 || (read_but_dont_execute && !rpm_requires)) + return (EXECUTION_SUCCESS); + if (rpm_requires && command->type == cm_function_def) + return last_command_exit_value = + execute_intern_function (command->value.Function_def->name, + command->value.Function_def); + if (read_but_dont_execute) + return (EXECUTION_SUCCESS); + + QUIT; + run_pending_traps (); + +#if 0 + if (running_trap == 0) +#endif + currently_executing_command = command; + + invert = (command->flags & CMD_INVERT_RETURN) != 0; + + /* If we're inverting the return value and `set -e' has been executed, + we don't want a failing command to inadvertently cause the shell + to exit. */ + if (exit_immediately_on_error && invert) /* XXX */ + command->flags |= CMD_IGNORE_RETURN; /* XXX */ + + exec_result = EXECUTION_SUCCESS; + + /* If a command was being explicitly run in a subshell, or if it is + a shell control-structure, and it has a pipe, then we do the command + in a subshell. */ + if (command->type == cm_subshell && (command->flags & CMD_NO_FORK)) + return (execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)); + +#if defined (COPROCESS_SUPPORT) + if (command->type == cm_coproc) + return (last_command_exit_value = execute_coproc (command, pipe_in, pipe_out, fds_to_close)); +#endif + + user_subshell = command->type == cm_subshell || ((command->flags & CMD_WANT_SUBSHELL) != 0); + +#if defined (TIME_BEFORE_SUBSHELL) + if ((command->flags & CMD_TIME_PIPELINE) && user_subshell && asynchronous == 0) + { + command->flags |= CMD_FORCE_SUBSHELL; + exec_result = time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close); + currently_executing_command = (COMMAND *)NULL; + return (exec_result); + } +#endif + + if (command->type == cm_subshell || + (command->flags & (CMD_WANT_SUBSHELL|CMD_FORCE_SUBSHELL)) || + (shell_control_structure (command->type) && + (pipe_out != NO_PIPE || pipe_in != NO_PIPE || asynchronous))) + { + pid_t paren_pid; + int s; + char *p; + + /* Fork a subshell, turn off the subshell bit, turn off job + control and call execute_command () on the command again. */ + save_line_number = line_number; + if (command->type == cm_subshell) + line_number_for_err_trap = line_number = command->value.Subshell->line; /* XXX - save value? */ + /* Otherwise we defer setting line_number */ + tcmd = make_command_string (command); + fork_flags = asynchronous ? FORK_ASYNC : 0; + paren_pid = make_child (p = savestring (tcmd), fork_flags); + + if (user_subshell && signal_is_trapped (ERROR_TRAP) && + signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) + { + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = savestring (the_printed_command); + } + + if (paren_pid == 0) + { +#if defined (JOB_CONTROL) + FREE (p); /* child doesn't use pointer */ +#endif + /* We want to run the exit trap for forced {} subshells, and we + want to note this before execute_in_subshell modifies the + COMMAND struct. Need to keep in mind that execute_in_subshell + runs the exit trap for () subshells itself. */ + /* This handles { command; } & */ + s = user_subshell == 0 && command->type == cm_group && pipe_in == NO_PIPE && pipe_out == NO_PIPE && asynchronous; + /* run exit trap for : | { ...; } and { ...; } | : */ + /* run exit trap for : | ( ...; ) and ( ...; ) | : */ + s += user_subshell == 0 && command->type == cm_group && (pipe_in != NO_PIPE || pipe_out != NO_PIPE) && asynchronous == 0; + + last_command_exit_value = execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close); + if (s) + subshell_exit (last_command_exit_value); + else + sh_exit (last_command_exit_value); + /* NOTREACHED */ + } + else + { + close_pipes (pipe_in, pipe_out); + +#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD) + if (variable_context == 0) /* wait until shell function completes */ + unlink_fifo_list (); +#endif + /* If we are part of a pipeline, and not the end of the pipeline, + then we should simply return and let the last command in the + pipe be waited for. If we are not in a pipeline, or are the + last command in the pipeline, then we wait for the subshell + and return its exit status as usual. */ + if (pipe_out != NO_PIPE) + return (EXECUTION_SUCCESS); + + stop_pipeline (asynchronous, (COMMAND *)NULL); + + line_number = save_line_number; + + if (asynchronous == 0) + { + was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0; + invert = (command->flags & CMD_INVERT_RETURN) != 0; + ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; + + exec_result = wait_for (paren_pid, 0); + + /* If we have to, invert the return value. */ + if (invert) + exec_result = ((exec_result == EXECUTION_SUCCESS) + ? EXECUTION_FAILURE + : EXECUTION_SUCCESS); + + last_command_exit_value = exec_result; + if (user_subshell && was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS) + { + save_line_number = line_number; + line_number = line_number_for_err_trap; + run_error_trap (); + line_number = save_line_number; + } + + if (user_subshell && ignore_return == 0 && invert == 0 && exit_immediately_on_error && exec_result != EXECUTION_SUCCESS) + { + run_pending_traps (); + jump_to_top_level (ERREXIT); + } + + return (last_command_exit_value); + } + else + { + DESCRIBE_PID (paren_pid); + + run_pending_traps (); + + /* Posix 2013 2.9.3.1: "the exit status of an asynchronous list + shall be zero." */ + last_command_exit_value = 0; + return (EXECUTION_SUCCESS); + } + } + } + +#if defined (COMMAND_TIMING) + if (command->flags & CMD_TIME_PIPELINE) + { + if (asynchronous) + { + command->flags |= CMD_FORCE_SUBSHELL; + exec_result = execute_command_internal (command, 1, pipe_in, pipe_out, fds_to_close); + } + else + { + exec_result = time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close); +#if 0 + if (running_trap == 0) +#endif + currently_executing_command = (COMMAND *)NULL; + } + return (exec_result); + } +#endif /* COMMAND_TIMING */ + + if (shell_control_structure (command->type) && command->redirects) + stdin_redir = stdin_redirects (command->redirects); + +#if defined (PROCESS_SUBSTITUTION) +# if !defined (HAVE_DEV_FD) + reap_procsubs (); +# endif + + /* XXX - also if sourcelevel != 0? */ + if (variable_context != 0 || executing_list) + { + ofifo = num_fifos (); + ofifo_list = copy_fifo_list ((int *)&osize); + begin_unwind_frame ("internal_fifos"); + if (ofifo_list) + add_unwind_protect (xfree, ofifo_list); + saved_fifo = 1; + } + else + saved_fifo = 0; +#endif + + /* Handle WHILE FOR CASE etc. with redirections. (Also '&' input + redirection.) */ + was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0; + ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; + + if (do_redirections (command->redirects, RX_ACTIVE|RX_UNDOABLE) != 0) + { + undo_partial_redirects (); + dispose_exec_redirects (); +#if defined (PROCESS_SUBSTITUTION) + if (saved_fifo) + { + free ((void *)ofifo_list); + discard_unwind_frame ("internal_fifos"); + } +#endif + + /* Handle redirection error as command failure if errexit set. */ + last_command_exit_value = EXECUTION_FAILURE; + if (ignore_return == 0 && invert == 0 && pipe_in == NO_PIPE && pipe_out == NO_PIPE) + { + if (was_error_trap) + { + save_line_number = line_number; + line_number = line_number_for_err_trap; + run_error_trap (); + line_number = save_line_number; + } + if (exit_immediately_on_error) + { + run_pending_traps (); + jump_to_top_level (ERREXIT); + } + } + return (last_command_exit_value); + } + + my_undo_list = redirection_undo_list; + redirection_undo_list = (REDIRECT *)NULL; + + exec_undo_list = exec_redirection_undo_list; + exec_redirection_undo_list = (REDIRECT *)NULL; + + if (my_undo_list || exec_undo_list) + begin_unwind_frame ("loop_redirections"); + + if (my_undo_list) + add_unwind_protect ((Function *)cleanup_redirects, my_undo_list); + + if (exec_undo_list) + add_unwind_protect ((Function *)dispose_redirects, exec_undo_list); + + QUIT; + + switch (command->type) + { + case cm_simple: + { + save_line_number = line_number; + /* We can't rely on variables retaining their values across a + call to execute_simple_command if a longjmp occurs as the + result of a `return' builtin. This is true for sure with gcc. */ +#if defined (RECYCLES_PIDS) + last_made_pid = NO_PID; +#endif + was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0; + + if (ignore_return && command->value.Simple) + command->value.Simple->flags |= CMD_IGNORE_RETURN; + if (command->flags & CMD_STDIN_REDIR) + command->value.Simple->flags |= CMD_STDIN_REDIR; + + line_number_for_err_trap = line_number = command->value.Simple->line; + exec_result = + execute_simple_command (command->value.Simple, pipe_in, pipe_out, + asynchronous, fds_to_close); + line_number = save_line_number; + + /* The temporary environment should be used for only the simple + command immediately following its definition. */ + dispose_used_env_vars (); + +#if (defined (ultrix) && defined (mips)) || defined (C_ALLOCA) + /* Reclaim memory allocated with alloca () on machines which + may be using the alloca emulation code. */ + (void) alloca (0); +#endif /* (ultrix && mips) || C_ALLOCA */ + + /* If we forked to do the command, then we must wait_for () + the child. */ + + /* XXX - this is something to watch out for if there are problems + when the shell is compiled without job control. Don't worry about + whether or not last_made_pid == last_pid; already_making_children + tells us whether or not there are unwaited-for children to wait + for and reap. */ + if (already_making_children && pipe_out == NO_PIPE) + { + stop_pipeline (asynchronous, (COMMAND *)NULL); + + if (asynchronous) + { + DESCRIBE_PID (last_made_pid); + exec_result = EXECUTION_SUCCESS; + invert = 0; /* async commands always succeed */ + } + else +#if !defined (JOB_CONTROL) + /* Do not wait for asynchronous processes started from + startup files. */ + if (last_made_pid != NO_PID && last_made_pid != last_asynchronous_pid) +#else + if (last_made_pid != NO_PID) +#endif + /* When executing a shell function that executes other + commands, this causes the last simple command in + the function to be waited for twice. This also causes + subshells forked to execute builtin commands (e.g., in + pipelines) to be waited for twice. */ + exec_result = wait_for (last_made_pid, 0); + } + } + + /* 2009/02/13 -- pipeline failure is processed elsewhere. This handles + only the failure of a simple command. We don't want to run the error + trap if the command run by the `command' builtin fails; we want to + defer that until the command builtin itself returns failure. */ + /* 2020/07/14 -- this changes with how the command builtin is handled */ + if (was_error_trap && ignore_return == 0 && invert == 0 && + pipe_in == NO_PIPE && pipe_out == NO_PIPE && + (command->value.Simple->flags & CMD_COMMAND_BUILTIN) == 0 && + exec_result != EXECUTION_SUCCESS) + { + last_command_exit_value = exec_result; + line_number = line_number_for_err_trap; + run_error_trap (); + line_number = save_line_number; + } + + if (ignore_return == 0 && invert == 0 && + ((posixly_correct && interactive == 0 && special_builtin_failed) || + (exit_immediately_on_error && pipe_in == NO_PIPE && pipe_out == NO_PIPE && exec_result != EXECUTION_SUCCESS))) + { + last_command_exit_value = exec_result; + run_pending_traps (); + + /* Undo redirections before running exit trap on the way out of + set -e. Report by Mark Farrell 5/19/2014 */ + if (exit_immediately_on_error && signal_is_trapped (0) && + unwind_protect_tag_on_stack ("saved-redirects")) + run_unwind_frame ("saved-redirects"); + + jump_to_top_level (ERREXIT); + } + + break; + + case cm_for: + if (ignore_return) + command->value.For->flags |= CMD_IGNORE_RETURN; + exec_result = execute_for_command (command->value.For); + break; + +#if defined (ARITH_FOR_COMMAND) + case cm_arith_for: + if (ignore_return) + command->value.ArithFor->flags |= CMD_IGNORE_RETURN; + exec_result = execute_arith_for_command (command->value.ArithFor); + break; +#endif + +#if defined (SELECT_COMMAND) + case cm_select: + if (ignore_return) + command->value.Select->flags |= CMD_IGNORE_RETURN; + exec_result = execute_select_command (command->value.Select); + break; +#endif + + case cm_case: + if (ignore_return) + command->value.Case->flags |= CMD_IGNORE_RETURN; + exec_result = execute_case_command (command->value.Case); + break; + + case cm_while: + if (ignore_return) + command->value.While->flags |= CMD_IGNORE_RETURN; + exec_result = execute_while_command (command->value.While); + break; + + case cm_until: + if (ignore_return) + command->value.While->flags |= CMD_IGNORE_RETURN; + exec_result = execute_until_command (command->value.While); + break; + + case cm_if: + if (ignore_return) + command->value.If->flags |= CMD_IGNORE_RETURN; + exec_result = execute_if_command (command->value.If); + break; + + case cm_group: + + /* This code can be executed from either of two paths: an explicit + '{}' command, or via a function call. If we are executed via a + function call, we have already taken care of the function being + executed in the background (down there in execute_simple_command ()), + and this command should *not* be marked as asynchronous. If we + are executing a regular '{}' group command, and asynchronous == 1, + we must want to execute the whole command in the background, so we + need a subshell, and we want the stuff executed in that subshell + (this group command) to be executed in the foreground of that + subshell (i.e. there will not be *another* subshell forked). + + What we do is to force a subshell if asynchronous, and then call + execute_command_internal again with asynchronous still set to 1, + but with the original group command, so the printed command will + look right. + + The code above that handles forking off subshells will note that + both subshell and async are on, and turn off async in the child + after forking the subshell (but leave async set in the parent, so + the normal call to describe_pid is made). This turning off + async is *crucial*; if it is not done, this will fall into an + infinite loop of executions through this spot in subshell after + subshell until the process limit is exhausted. */ + + if (asynchronous) + { + command->flags |= CMD_FORCE_SUBSHELL; + exec_result = + execute_command_internal (command, 1, pipe_in, pipe_out, + fds_to_close); + } + else + { + if (ignore_return && command->value.Group->command) + command->value.Group->command->flags |= CMD_IGNORE_RETURN; + exec_result = + execute_command_internal (command->value.Group->command, + asynchronous, pipe_in, pipe_out, + fds_to_close); + } + break; + + case cm_connection: + exec_result = execute_connection (command, asynchronous, + pipe_in, pipe_out, fds_to_close); + if (asynchronous) + invert = 0; /* XXX */ + + break; + +#if defined (DPAREN_ARITHMETIC) + case cm_arith: +#endif +#if defined (COND_COMMAND) + case cm_cond: +#endif + case cm_function_def: + was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0; +#if defined (DPAREN_ARITHMETIC) + if (ignore_return && command->type == cm_arith) + command->value.Arith->flags |= CMD_IGNORE_RETURN; +#endif +#if defined (COND_COMMAND) + if (ignore_return && command->type == cm_cond) + command->value.Cond->flags |= CMD_IGNORE_RETURN; +#endif + + line_number_for_err_trap = save_line_number = line_number; +#if defined (DPAREN_ARITHMETIC) + if (command->type == cm_arith) + exec_result = execute_arith_command (command->value.Arith); + else +#endif +#if defined (COND_COMMAND) + if (command->type == cm_cond) + exec_result = execute_cond_command (command->value.Cond); + else +#endif + if (command->type == cm_function_def) + exec_result = execute_intern_function (command->value.Function_def->name, + command->value.Function_def); + line_number = save_line_number; + + if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS) + { + last_command_exit_value = exec_result; + save_line_number = line_number; + line_number = line_number_for_err_trap; + run_error_trap (); + line_number = save_line_number; + } + + if (ignore_return == 0 && invert == 0 && exit_immediately_on_error && exec_result != EXECUTION_SUCCESS) + { + last_command_exit_value = exec_result; + run_pending_traps (); + jump_to_top_level (ERREXIT); + } + + break; + + default: + command_error ("execute_command", CMDERR_BADTYPE, command->type, 0); + } + + if (my_undo_list) + cleanup_redirects (my_undo_list); + + if (exec_undo_list) + dispose_redirects (exec_undo_list); + + if (my_undo_list || exec_undo_list) + discard_unwind_frame ("loop_redirections"); + +#if defined (PROCESS_SUBSTITUTION) + if (saved_fifo) + { + nfifo = num_fifos (); + if (nfifo > ofifo) + close_new_fifos ((void *)ofifo_list, osize); + free ((void *)ofifo_list); + discard_unwind_frame ("internal_fifos"); + } +#endif + + /* Invert the return value if we have to */ + if (invert) + exec_result = (exec_result == EXECUTION_SUCCESS) + ? EXECUTION_FAILURE + : EXECUTION_SUCCESS; + +#if defined (DPAREN_ARITHMETIC) || defined (COND_COMMAND) + /* This is where we set PIPESTATUS from the exit status of the appropriate + compound commands (the ones that look enough like simple commands to + cause confusion). We might be able to optimize by not doing this if + subshell_environment != 0. */ + switch (command->type) + { +# if defined (DPAREN_ARITHMETIC) + case cm_arith: +# endif +# if defined (COND_COMMAND) + case cm_cond: +# endif + set_pipestatus_from_exit (exec_result); + break; + default: + break; + } +#endif + + last_command_exit_value = exec_result; + run_pending_traps (); + currently_executing_command = (COMMAND *)NULL; + + return (last_command_exit_value); +} + +#if defined (COMMAND_TIMING) + +#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) +extern struct timeval *difftimeval PARAMS((struct timeval *, struct timeval *, struct timeval *)); +extern struct timeval *addtimeval PARAMS((struct timeval *, struct timeval *, struct timeval *)); +extern int timeval_to_cpu PARAMS((struct timeval *, struct timeval *, struct timeval *)); +#endif + +#define POSIX_TIMEFORMAT "real %2R\nuser %2U\nsys %2S" +#define BASH_TIMEFORMAT "\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS" + +static const int precs[] = { 0, 100, 10, 1 }; + +/* Expand one `%'-prefixed escape sequence from a time format string. */ +static int +mkfmt (buf, prec, lng, sec, sec_fraction) + char *buf; + int prec, lng; + time_t sec; + int sec_fraction; +{ + time_t min; + char abuf[INT_STRLEN_BOUND(time_t) + 1]; + int ind, aind; + + ind = 0; + abuf[sizeof(abuf) - 1] = '\0'; + + /* If LNG is non-zero, we want to decompose SEC into minutes and seconds. */ + if (lng) + { + min = sec / 60; + sec %= 60; + aind = sizeof(abuf) - 2; + do + abuf[aind--] = (min % 10) + '0'; + while (min /= 10); + aind++; + while (abuf[aind]) + buf[ind++] = abuf[aind++]; + buf[ind++] = 'm'; + } + + /* Now add the seconds. */ + aind = sizeof (abuf) - 2; + do + abuf[aind--] = (sec % 10) + '0'; + while (sec /= 10); + aind++; + while (abuf[aind]) + buf[ind++] = abuf[aind++]; + + /* We want to add a decimal point and PREC places after it if PREC is + nonzero. PREC is not greater than 3. SEC_FRACTION is between 0 + and 999. */ + if (prec != 0) + { + buf[ind++] = locale_decpoint (); + for (aind = 1; aind <= prec; aind++) + { + buf[ind++] = (sec_fraction / precs[aind]) + '0'; + sec_fraction %= precs[aind]; + } + } + + if (lng) + buf[ind++] = 's'; + buf[ind] = '\0'; + + return (ind); +} + +/* Interpret the format string FORMAT, interpolating the following escape + sequences: + %[prec][l][RUS] + + where the optional `prec' is a precision, meaning the number of + characters after the decimal point, the optional `l' means to format + using minutes and seconds (MMmNN[.FF]s), like the `times' builtin', + and the last character is one of + + R number of seconds of `real' time + U number of seconds of `user' time + S number of seconds of `system' time + + An occurrence of `%%' in the format string is translated to a `%'. The + result is printed to FP, a pointer to a FILE. The other variables are + the seconds and thousandths of a second of real, user, and system time, + resectively. */ +static void +print_formatted_time (fp, format, rs, rsf, us, usf, ss, ssf, cpu) + FILE *fp; + char *format; + time_t rs; + int rsf; + time_t us; + int usf; + time_t ss; + int ssf, cpu; +{ + int prec, lng, len; + char *str, *s, ts[INT_STRLEN_BOUND (time_t) + sizeof ("mSS.FFFF")]; + time_t sum; + int sum_frac; + int sindex, ssize; + + len = strlen (format); + ssize = (len + 64) - (len % 64); + str = (char *)xmalloc (ssize); + sindex = 0; + + for (s = format; *s; s++) + { + if (*s != '%' || s[1] == '\0') + { + RESIZE_MALLOCED_BUFFER (str, sindex, 1, ssize, 64); + str[sindex++] = *s; + } + else if (s[1] == '%') + { + s++; + RESIZE_MALLOCED_BUFFER (str, sindex, 1, ssize, 64); + str[sindex++] = *s; + } + else if (s[1] == 'P') + { + s++; +#if 0 + /* clamp CPU usage at 100% */ + if (cpu > 10000) + cpu = 10000; +#endif + sum = cpu / 100; + sum_frac = (cpu % 100) * 10; + len = mkfmt (ts, 2, 0, sum, sum_frac); + RESIZE_MALLOCED_BUFFER (str, sindex, len, ssize, 64); + strcpy (str + sindex, ts); + sindex += len; + } + else + { + prec = 3; /* default is three places past the decimal point. */ + lng = 0; /* default is to not use minutes or append `s' */ + s++; + if (DIGIT (*s)) /* `precision' */ + { + prec = *s++ - '0'; + if (prec > 3) prec = 3; + } + if (*s == 'l') /* `length extender' */ + { + lng = 1; + s++; + } + if (*s == 'R' || *s == 'E') + len = mkfmt (ts, prec, lng, rs, rsf); + else if (*s == 'U') + len = mkfmt (ts, prec, lng, us, usf); + else if (*s == 'S') + len = mkfmt (ts, prec, lng, ss, ssf); + else + { + internal_error (_("TIMEFORMAT: `%c': invalid format character"), *s); + free (str); + return; + } + RESIZE_MALLOCED_BUFFER (str, sindex, len, ssize, 64); + strcpy (str + sindex, ts); + sindex += len; + } + } + + str[sindex] = '\0'; + fprintf (fp, "%s\n", str); + fflush (fp); + + free (str); +} + +static int +time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) + COMMAND *command; + int asynchronous, pipe_in, pipe_out; + struct fd_bitmap *fds_to_close; +{ + int rv, posix_time, old_flags, nullcmd, code; + time_t rs, us, ss; + int rsf, usf, ssf; + int cpu; + char *time_format; + volatile procenv_t save_top_level; + +#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) + struct timeval real, user, sys; + struct timeval before, after; +# if defined (HAVE_STRUCT_TIMEZONE) + struct timezone dtz; /* posix doesn't define this */ +# endif + struct rusage selfb, selfa, kidsb, kidsa; /* a = after, b = before */ +#else +# if defined (HAVE_TIMES) + clock_t tbefore, tafter, real, user, sys; + struct tms before, after; +# endif +#endif + +#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) +# if defined (HAVE_STRUCT_TIMEZONE) + gettimeofday (&before, &dtz); +# else + gettimeofday (&before, (void *)NULL); +# endif /* !HAVE_STRUCT_TIMEZONE */ + getrusage (RUSAGE_SELF, &selfb); + getrusage (RUSAGE_CHILDREN, &kidsb); +#else +# if defined (HAVE_TIMES) + tbefore = times (&before); +# endif +#endif + + posix_time = command && (command->flags & CMD_TIME_POSIX); + + nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); + if (posixly_correct && nullcmd) + { +#if defined (HAVE_GETRUSAGE) + selfb.ru_utime.tv_sec = kidsb.ru_utime.tv_sec = selfb.ru_stime.tv_sec = kidsb.ru_stime.tv_sec = 0; + selfb.ru_utime.tv_usec = kidsb.ru_utime.tv_usec = selfb.ru_stime.tv_usec = kidsb.ru_stime.tv_usec = 0; + before = shellstart; +#else + before.tms_utime = before.tms_stime = before.tms_cutime = before.tms_cstime = 0; + tbefore = shell_start_time; +#endif + } + + old_flags = command->flags; + COPY_PROCENV (top_level, save_top_level); + command->flags &= ~(CMD_TIME_PIPELINE|CMD_TIME_POSIX); + code = setjmp_nosigs (top_level); + if (code == NOT_JUMPED) + { + rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close); + command->flags = old_flags; + } + COPY_PROCENV (save_top_level, top_level); + + rs = us = ss = 0; + rsf = usf = ssf = cpu = 0; + +#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) +# if defined (HAVE_STRUCT_TIMEZONE) + gettimeofday (&after, &dtz); +# else + gettimeofday (&after, (void *)NULL); +# endif /* !HAVE_STRUCT_TIMEZONE */ + getrusage (RUSAGE_SELF, &selfa); + getrusage (RUSAGE_CHILDREN, &kidsa); + + difftimeval (&real, &before, &after); + timeval_to_secs (&real, &rs, &rsf); + + addtimeval (&user, difftimeval(&after, &selfb.ru_utime, &selfa.ru_utime), + difftimeval(&before, &kidsb.ru_utime, &kidsa.ru_utime)); + timeval_to_secs (&user, &us, &usf); + + addtimeval (&sys, difftimeval(&after, &selfb.ru_stime, &selfa.ru_stime), + difftimeval(&before, &kidsb.ru_stime, &kidsa.ru_stime)); + timeval_to_secs (&sys, &ss, &ssf); + + cpu = timeval_to_cpu (&real, &user, &sys); +#else +# if defined (HAVE_TIMES) + tafter = times (&after); + + real = tafter - tbefore; + clock_t_to_secs (real, &rs, &rsf); + + user = (after.tms_utime - before.tms_utime) + (after.tms_cutime - before.tms_cutime); + clock_t_to_secs (user, &us, &usf); + + sys = (after.tms_stime - before.tms_stime) + (after.tms_cstime - before.tms_cstime); + clock_t_to_secs (sys, &ss, &ssf); + + cpu = (real == 0) ? 0 : ((user + sys) * 10000) / real; + +# else + rs = us = ss = 0; + rsf = usf = ssf = cpu = 0; +# endif +#endif + + if (posix_time) + time_format = POSIX_TIMEFORMAT; + else if ((time_format = get_string_value ("TIMEFORMAT")) == 0) + { + if (posixly_correct && nullcmd) + time_format = "user\t%2lU\nsys\t%2lS"; + else + time_format = BASH_TIMEFORMAT; + } + + if (time_format && *time_format) + print_formatted_time (stderr, time_format, rs, rsf, us, usf, ss, ssf, cpu); + + if (code) + sh_longjmp (top_level, code); + + return rv; +} +#endif /* COMMAND_TIMING */ + +/* Execute a command that's supposed to be in a subshell. This must be + called after make_child and we must be running in the child process. + The caller will return or exit() immediately with the value this returns. */ +static int +execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) + COMMAND *command; + int asynchronous; + int pipe_in, pipe_out; + struct fd_bitmap *fds_to_close; +{ + volatile int user_subshell, user_coproc, invert; + int return_code, function_value, should_redir_stdin, ois, result; + volatile COMMAND *tcom; + + USE_VAR(user_subshell); + USE_VAR(user_coproc); + USE_VAR(invert); + USE_VAR(tcom); + USE_VAR(asynchronous); + + subshell_level++; + should_redir_stdin = (asynchronous && (command->flags & CMD_STDIN_REDIR) && + pipe_in == NO_PIPE && + stdin_redirects (command->redirects) == 0); + + invert = (command->flags & CMD_INVERT_RETURN) != 0; + user_subshell = command->type == cm_subshell || ((command->flags & CMD_WANT_SUBSHELL) != 0); + user_coproc = command->type == cm_coproc; + + command->flags &= ~(CMD_FORCE_SUBSHELL | CMD_WANT_SUBSHELL | CMD_INVERT_RETURN); + + /* If a command is asynchronous in a subshell (like ( foo ) & or + the special case of an asynchronous GROUP command where the + the subshell bit is turned on down in case cm_group: below), + turn off `asynchronous', so that two subshells aren't spawned. + XXX - asynchronous used to be set to 0 in this block, but that + means that setup_async_signals was never run. Now it's set to + 0 after subshell_environment is set appropriately and setup_async_signals + is run. + + This seems semantically correct to me. For example, + ( foo ) & seems to say ``do the command `foo' in a subshell + environment, but don't wait for that subshell to finish'', + and "{ foo ; bar ; } &" seems to me to be like functions or + builtins in the background, which executed in a subshell + environment. I just don't see the need to fork two subshells. */ + + /* Don't fork again, we are already in a subshell. A `doubly + async' shell is not interactive, however. */ + if (asynchronous) + { +#if defined (JOB_CONTROL) + /* If a construct like ( exec xxx yyy ) & is given while job + control is active, we want to prevent exec from putting the + subshell back into the original process group, carefully + undoing all the work we just did in make_child. */ + original_pgrp = -1; +#endif /* JOB_CONTROL */ + ois = interactive_shell; + interactive_shell = 0; + /* This test is to prevent alias expansion by interactive shells that + run `(command) &' but to allow scripts that have enabled alias + expansion with `shopt -s expand_alias' to continue to expand + aliases. */ + if (ois != interactive_shell) + expand_aliases = 0; + } + + /* Subshells are neither login nor interactive. */ + login_shell = interactive = 0; + + /* And we're no longer in a loop. See Posix interp 842 (we are not in the + "same execution environment"). */ + if (shell_compatibility_level > 44) + loop_level = 0; + + if (user_subshell) + { + subshell_environment = SUBSHELL_PAREN; /* XXX */ + if (asynchronous) + subshell_environment |= SUBSHELL_ASYNC; + } + else + { + subshell_environment = 0; /* XXX */ + if (asynchronous) + subshell_environment |= SUBSHELL_ASYNC; + if (pipe_in != NO_PIPE || pipe_out != NO_PIPE) + subshell_environment |= SUBSHELL_PIPE; + if (user_coproc) + subshell_environment |= SUBSHELL_COPROC; + } + + QUIT; + CHECK_TERMSIG; + + reset_terminating_signals (); /* in sig.c */ + /* Cancel traps, in trap.c. */ + /* Reset the signal handlers in the child, but don't free the + trap strings. Set a flag noting that we have to free the + trap strings if we run trap to change a signal disposition. */ + clear_pending_traps (); + reset_signal_handlers (); + subshell_environment |= SUBSHELL_RESETTRAP; + + /* We are in a subshell, so forget that we are running a trap handler or + that the signal handler has changed (we haven't changed it!) */ + if (running_trap > 0) + { + run_trap_cleanup (running_trap - 1); + running_trap = 0; /* XXX - maybe leave this */ + } + + /* Make sure restore_original_signals doesn't undo the work done by + make_child to ensure that asynchronous children are immune to SIGINT + and SIGQUIT. Turn off asynchronous to make sure more subshells are + not spawned. */ + if (asynchronous) + { + setup_async_signals (); + asynchronous = 0; + } + else + set_sigint_handler (); + +#if defined (JOB_CONTROL) + set_sigchld_handler (); +#endif /* JOB_CONTROL */ + + /* Delete all traces that there were any jobs running. This is + only for subshells. */ + without_job_control (); + + if (fds_to_close) + close_fd_bitmap (fds_to_close); + + do_piping (pipe_in, pipe_out); + +#if defined (COPROCESS_SUPPORT) + coproc_closeall (); +#endif + +#if defined (PROCESS_SUBSTITUTION) + clear_fifo_list (); /* XXX- we haven't created any FIFOs */ +#endif + + /* If this is a user subshell, set a flag if stdin was redirected. + This is used later to decide whether to redirect fd 0 to + /dev/null for async commands in the subshell. This adds more + sh compatibility, but I'm not sure it's the right thing to do. + Note that an input pipe to a compound command suffices to inhibit + the implicit /dev/null redirection for asynchronous commands + executed as part of that compound command. */ + if (user_subshell) + { + stdin_redir = stdin_redirects (command->redirects) || pipe_in != NO_PIPE; +#if 0 + restore_default_signal (EXIT_TRAP); /* XXX - reset_signal_handlers above */ +#endif + } + else if (shell_control_structure (command->type) && pipe_in != NO_PIPE) + stdin_redir = 1; + + /* If this is an asynchronous command (command &), we want to + redirect the standard input from /dev/null in the absence of + any specific redirection involving stdin. */ + if (should_redir_stdin && stdin_redir == 0) + async_redirect_stdin (); + +#if defined (BUFFERED_INPUT) + /* In any case, we are not reading our command input from stdin. */ + default_buffered_input = -1; +#endif + +#if 0 /* TAG: bash-5.2 */ + if (user_subshell && command->type == cm_subshell) + optimize_subshell_command (command->value.Subshell->command); +#endif + + /* Do redirections, then dispose of them before recursive call. */ + if (command->redirects) + { + if (do_redirections (command->redirects, RX_ACTIVE) != 0) + exit (invert ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + + dispose_redirects (command->redirects); + command->redirects = (REDIRECT *)NULL; + } + + if (command->type == cm_subshell) + tcom = command->value.Subshell->command; + else if (user_coproc) + tcom = command->value.Coproc->command; + else + tcom = command; + + if (command->flags & CMD_TIME_PIPELINE) + tcom->flags |= CMD_TIME_PIPELINE; + if (command->flags & CMD_TIME_POSIX) + tcom->flags |= CMD_TIME_POSIX; + + /* Make sure the subshell inherits any CMD_IGNORE_RETURN flag. */ + if ((command->flags & CMD_IGNORE_RETURN) && tcom != command) + tcom->flags |= CMD_IGNORE_RETURN; + + /* If this is a simple command, tell execute_disk_command that it + might be able to get away without forking and simply exec. + This means things like ( sleep 10 ) will only cause one fork. + If we're timing the command or inverting its return value, however, + we cannot do this optimization. */ + if ((user_subshell || user_coproc) && (tcom->type == cm_simple || tcom->type == cm_subshell) && + ((tcom->flags & CMD_TIME_PIPELINE) == 0) && + ((tcom->flags & CMD_INVERT_RETURN) == 0)) + { + tcom->flags |= CMD_NO_FORK; + if (tcom->type == cm_simple) + tcom->value.Simple->flags |= CMD_NO_FORK; + } + + invert = (tcom->flags & CMD_INVERT_RETURN) != 0; + tcom->flags &= ~CMD_INVERT_RETURN; + + result = setjmp_nosigs (top_level); + + /* If we're inside a function while executing this subshell, we + need to handle a possible `return'. */ + function_value = 0; + if (return_catch_flag) + function_value = setjmp_nosigs (return_catch); + + /* If we're going to exit the shell, we don't want to invert the return + status. */ + if (result == EXITPROG) + invert = 0, return_code = last_command_exit_value; + else if (result) + return_code = (last_command_exit_value == EXECUTION_SUCCESS) ? EXECUTION_FAILURE : last_command_exit_value; + else if (function_value) + return_code = return_catch_value; + else + return_code = execute_command_internal ((COMMAND *)tcom, asynchronous, NO_PIPE, NO_PIPE, fds_to_close); + + /* If we are asked to, invert the return value. */ + if (invert) + return_code = (return_code == EXECUTION_SUCCESS) ? EXECUTION_FAILURE + : EXECUTION_SUCCESS; + + + /* If we were explicitly placed in a subshell with (), we need + to do the `shell cleanup' things, such as running traps[0]. */ + if (user_subshell && signal_is_trapped (0)) + { + last_command_exit_value = return_code; + return_code = run_exit_trap (); + } + +#if 0 + subshell_level--; /* don't bother, caller will just exit */ +#endif + return (return_code); + /* NOTREACHED */ +} + +#if defined (COPROCESS_SUPPORT) +#define COPROC_MAX 16 + +typedef struct cpelement + { + struct cpelement *next; + struct coproc *coproc; + } +cpelement_t; + +typedef struct cplist + { + struct cpelement *head; + struct cpelement *tail; + int ncoproc; + int lock; + } +cplist_t; + +static struct cpelement *cpe_alloc PARAMS((struct coproc *)); +static void cpe_dispose PARAMS((struct cpelement *)); +static struct cpelement *cpl_add PARAMS((struct coproc *)); +static struct cpelement *cpl_delete PARAMS((pid_t)); +static void cpl_reap PARAMS((void)); +static void cpl_flush PARAMS((void)); +static void cpl_closeall PARAMS((void)); +static struct cpelement *cpl_search PARAMS((pid_t)); +static struct cpelement *cpl_searchbyname PARAMS((const char *)); +static void cpl_prune PARAMS((void)); + +static void coproc_free PARAMS((struct coproc *)); + +/* Will go away when there is fully-implemented support for multiple coprocs. */ +Coproc sh_coproc = { 0, NO_PID, -1, -1, 0, 0, 0, 0, 0 }; + +cplist_t coproc_list = {0, 0, 0}; + +/* Functions to manage the list of coprocs */ + +static struct cpelement * +cpe_alloc (cp) + Coproc *cp; +{ + struct cpelement *cpe; + + cpe = (struct cpelement *)xmalloc (sizeof (struct cpelement)); + cpe->coproc = cp; + cpe->next = (struct cpelement *)0; + return cpe; +} + +static void +cpe_dispose (cpe) + struct cpelement *cpe; +{ + free (cpe); +} + +static struct cpelement * +cpl_add (cp) + Coproc *cp; +{ + struct cpelement *cpe; + + cpe = cpe_alloc (cp); + + if (coproc_list.head == 0) + { + coproc_list.head = coproc_list.tail = cpe; + coproc_list.ncoproc = 0; /* just to make sure */ + } + else + { + coproc_list.tail->next = cpe; + coproc_list.tail = cpe; + } + coproc_list.ncoproc++; + + return cpe; +} + +static struct cpelement * +cpl_delete (pid) + pid_t pid; +{ + struct cpelement *prev, *p; + + for (prev = p = coproc_list.head; p; prev = p, p = p->next) + if (p->coproc->c_pid == pid) + { + prev->next = p->next; /* remove from list */ + break; + } + + if (p == 0) + return 0; /* not found */ + +#if defined (DEBUG) + itrace("cpl_delete: deleting %d", pid); +#endif + + /* Housekeeping in the border cases. */ + if (p == coproc_list.head) + coproc_list.head = coproc_list.head->next; + else if (p == coproc_list.tail) + coproc_list.tail = prev; + + coproc_list.ncoproc--; + if (coproc_list.ncoproc == 0) + coproc_list.head = coproc_list.tail = 0; + else if (coproc_list.ncoproc == 1) + coproc_list.tail = coproc_list.head; /* just to make sure */ + + return (p); +} + +static void +cpl_reap () +{ + struct cpelement *p, *next, *nh, *nt; + + /* Build a new list by removing dead coprocs and fix up the coproc_list + pointers when done. */ + nh = nt = next = (struct cpelement *)0; + for (p = coproc_list.head; p; p = next) + { + next = p->next; + if (p->coproc->c_flags & COPROC_DEAD) + { + coproc_list.ncoproc--; /* keep running count, fix up pointers later */ + +#if defined (DEBUG) + itrace("cpl_reap: deleting %d", p->coproc->c_pid); +#endif + + coproc_dispose (p->coproc); + cpe_dispose (p); + } + else if (nh == 0) + nh = nt = p; + else + { + nt->next = p; + nt = nt->next; + } + } + + if (coproc_list.ncoproc == 0) + coproc_list.head = coproc_list.tail = 0; + else + { + if (nt) + nt->next = 0; + coproc_list.head = nh; + coproc_list.tail = nt; + if (coproc_list.ncoproc == 1) + coproc_list.tail = coproc_list.head; /* just to make sure */ + } +} + +/* Clear out the list of saved statuses */ +static void +cpl_flush () +{ + struct cpelement *cpe, *p; + + for (cpe = coproc_list.head; cpe; ) + { + p = cpe; + cpe = cpe->next; + + coproc_dispose (p->coproc); + cpe_dispose (p); + } + + coproc_list.head = coproc_list.tail = 0; + coproc_list.ncoproc = 0; +} + +static void +cpl_closeall () +{ + struct cpelement *cpe; + + for (cpe = coproc_list.head; cpe; cpe = cpe->next) + coproc_close (cpe->coproc); +} + +static void +cpl_fdchk (fd) + int fd; +{ + struct cpelement *cpe; + + for (cpe = coproc_list.head; cpe; cpe = cpe->next) + coproc_checkfd (cpe->coproc, fd); +} + +/* Search for PID in the list of coprocs; return the cpelement struct if + found. If not found, return NULL. */ +static struct cpelement * +cpl_search (pid) + pid_t pid; +{ + struct cpelement *cpe; + + for (cpe = coproc_list.head ; cpe; cpe = cpe->next) + if (cpe->coproc->c_pid == pid) + return cpe; + return (struct cpelement *)NULL; +} + +/* Search for the coproc named NAME in the list of coprocs; return the + cpelement struct if found. If not found, return NULL. */ +static struct cpelement * +cpl_searchbyname (name) + const char *name; +{ + struct cpelement *cp; + + for (cp = coproc_list.head ; cp; cp = cp->next) + if (STREQ (cp->coproc->c_name, name)) + return cp; + return (struct cpelement *)NULL; +} + +static pid_t +cpl_firstactive () +{ + struct cpelement *cpe; + + for (cpe = coproc_list.head ; cpe; cpe = cpe->next) + if ((cpe->coproc->c_flags & COPROC_DEAD) == 0) + return cpe->coproc->c_pid; + return (pid_t)NO_PID; +} + +#if 0 +static void +cpl_prune () +{ + struct cpelement *cp; + + while (coproc_list.head && coproc_list.ncoproc > COPROC_MAX) + { + cp = coproc_list.head; + coproc_list.head = coproc_list.head->next; + coproc_dispose (cp->coproc); + cpe_dispose (cp); + coproc_list.ncoproc--; + } +} +#endif + +/* These currently use a single global "shell coproc" but are written in a + way to not preclude additional coprocs later (using the list management + package above). */ + +struct coproc * +getcoprocbypid (pid) + pid_t pid; +{ +#if MULTIPLE_COPROCS + struct cpelement *p; + + p = cpl_search (pid); + return (p ? p->coproc : 0); +#else + return (pid == sh_coproc.c_pid ? &sh_coproc : 0); +#endif +} + +struct coproc * +getcoprocbyname (name) + const char *name; +{ +#if MULTIPLE_COPROCS + struct cpelement *p; + + p = cpl_searchbyname (name); + return (p ? p->coproc : 0); +#else + return ((sh_coproc.c_name && STREQ (sh_coproc.c_name, name)) ? &sh_coproc : 0); +#endif +} + +void +coproc_init (cp) + struct coproc *cp; +{ + cp->c_name = 0; + cp->c_pid = NO_PID; + cp->c_rfd = cp->c_wfd = -1; + cp->c_rsave = cp->c_wsave = -1; + cp->c_flags = cp->c_status = cp->c_lock = 0; +} + +struct coproc * +coproc_alloc (name, pid) + char *name; + pid_t pid; +{ + struct coproc *cp; + +#if MULTIPLE_COPROCS + cp = (struct coproc *)xmalloc (sizeof (struct coproc)); +#else + cp = &sh_coproc; +#endif + coproc_init (cp); + cp->c_lock = 2; + + cp->c_pid = pid; + cp->c_name = savestring (name); +#if MULTIPLE_COPROCS + cpl_add (cp); +#endif + cp->c_lock = 0; + return (cp); +} + +static void +coproc_free (cp) + struct coproc *cp; +{ + free (cp); +} + +void +coproc_dispose (cp) + struct coproc *cp; +{ + sigset_t set, oset; + + if (cp == 0) + return; + + BLOCK_SIGNAL (SIGCHLD, set, oset); + cp->c_lock = 3; + coproc_unsetvars (cp); + FREE (cp->c_name); + coproc_close (cp); +#if MULTIPLE_COPROCS + coproc_free (cp); +#else + coproc_init (cp); + cp->c_lock = 0; +#endif + UNBLOCK_SIGNAL (oset); +} + +/* Placeholder for now. Will require changes for multiple coprocs */ +void +coproc_flush () +{ +#if MULTIPLE_COPROCS + cpl_flush (); +#else + coproc_dispose (&sh_coproc); +#endif +} + +void +coproc_close (cp) + struct coproc *cp; +{ + if (cp->c_rfd >= 0) + { + close (cp->c_rfd); + cp->c_rfd = -1; + } + if (cp->c_wfd >= 0) + { + close (cp->c_wfd); + cp->c_wfd = -1; + } + cp->c_rsave = cp->c_wsave = -1; +} + +void +coproc_closeall () +{ +#if MULTIPLE_COPROCS + cpl_closeall (); +#else + coproc_close (&sh_coproc); /* XXX - will require changes for multiple coprocs */ +#endif +} + +void +coproc_reap () +{ +#if MULTIPLE_COPROCS + cpl_reap (); +#else + struct coproc *cp; + + cp = &sh_coproc; /* XXX - will require changes for multiple coprocs */ + if (cp && (cp->c_flags & COPROC_DEAD)) + coproc_dispose (cp); +#endif +} + +void +coproc_rclose (cp, fd) + struct coproc *cp; + int fd; +{ + if (cp->c_rfd >= 0 && cp->c_rfd == fd) + { + close (cp->c_rfd); + cp->c_rfd = -1; + } +} + +void +coproc_wclose (cp, fd) + struct coproc *cp; + int fd; +{ + if (cp->c_wfd >= 0 && cp->c_wfd == fd) + { + close (cp->c_wfd); + cp->c_wfd = -1; + } +} + +void +coproc_checkfd (cp, fd) + struct coproc *cp; + int fd; +{ + int update; + + update = 0; + if (cp->c_rfd >= 0 && cp->c_rfd == fd) + update = cp->c_rfd = -1; + if (cp->c_wfd >= 0 && cp->c_wfd == fd) + update = cp->c_wfd = -1; + if (update) + coproc_setvars (cp); +} + +void +coproc_fdchk (fd) + int fd; +{ +#if MULTIPLE_COPROCS + cpl_fdchk (fd); +#else + coproc_checkfd (&sh_coproc, fd); +#endif +} + +void +coproc_fdclose (cp, fd) + struct coproc *cp; + int fd; +{ + coproc_rclose (cp, fd); + coproc_wclose (cp, fd); + coproc_setvars (cp); +} + +void +coproc_fdsave (cp) + struct coproc *cp; +{ + cp->c_rsave = cp->c_rfd; + cp->c_wsave = cp->c_wfd; +} + +void +coproc_fdrestore (cp) + struct coproc *cp; +{ + cp->c_rfd = cp->c_rsave; + cp->c_wfd = cp->c_wsave; +} + +static void +coproc_setstatus (cp, status) + struct coproc *cp; + int status; +{ + cp->c_lock = 4; + cp->c_status = status; + cp->c_flags |= COPROC_DEAD; + cp->c_flags &= ~COPROC_RUNNING; + /* Don't dispose the coproc or unset the COPROC_XXX variables because + this is executed in a signal handler context. Wait until coproc_reap + takes care of it. */ + cp->c_lock = 0; +} + +void +coproc_pidchk (pid, status) + pid_t pid; + int status; +{ + struct coproc *cp; + +#if MULTIPLE_COPROCS + struct cpelement *cpe; + + /* We're not disposing the coproc because this is executed in a signal + handler context */ + cpe = cpl_search (pid); + cp = cpe ? cpe->coproc : 0; +#else + cp = getcoprocbypid (pid); +#endif + if (cp) + coproc_setstatus (cp, status); +} + +pid_t +coproc_active () +{ +#if MULTIPLE_COPROCS + return (cpl_firstactive ()); +#else + return ((sh_coproc.c_flags & COPROC_DEAD) ? NO_PID : sh_coproc.c_pid); +#endif +} +void +coproc_setvars (cp) + struct coproc *cp; +{ + SHELL_VAR *v; + char *namevar, *t; + int l; + WORD_DESC w; +#if defined (ARRAY_VARS) + arrayind_t ind; +#endif + + if (cp->c_name == 0) + return; + + /* We could do more here but right now we only check the name, warn if it's + not a valid identifier, and refuse to create variables with invalid names + if a coproc with such a name is supplied. */ + w.word = cp->c_name; + w.flags = 0; + if (check_identifier (&w, 1) == 0) + return; + + l = strlen (cp->c_name); + namevar = xmalloc (l + 16); + +#if defined (ARRAY_VARS) + v = find_variable (cp->c_name); + + /* This is the same code as in find_or_make_array_variable */ + if (v == 0) + { + v = find_variable_nameref_for_create (cp->c_name, 1); + if (v == INVALID_NAMEREF_VALUE) + { + free (namevar); + return; + } + if (v && nameref_p (v)) + { + free (cp->c_name); + cp->c_name = savestring (nameref_cell (v)); + v = make_new_array_variable (cp->c_name); + } + } + + if (v && (readonly_p (v) || noassign_p (v))) + { + if (readonly_p (v)) + err_readonly (cp->c_name); + free (namevar); + return; + } + if (v == 0) + v = make_new_array_variable (cp->c_name); + if (array_p (v) == 0) + v = convert_var_to_array (v); + + t = itos (cp->c_rfd); + ind = 0; + v = bind_array_variable (cp->c_name, ind, t, 0); + free (t); + + t = itos (cp->c_wfd); + ind = 1; + v = bind_array_variable (cp->c_name, ind, t, 0); + free (t); +#else + sprintf (namevar, "%s_READ", cp->c_name); + t = itos (cp->c_rfd); + bind_variable (namevar, t, 0); + free (t); + sprintf (namevar, "%s_WRITE", cp->c_name); + t = itos (cp->c_wfd); + bind_variable (namevar, t, 0); + free (t); +#endif + + sprintf (namevar, "%s_PID", cp->c_name); + t = itos (cp->c_pid); + v = bind_variable (namevar, t, 0); + free (t); + + free (namevar); +} + +void +coproc_unsetvars (cp) + struct coproc *cp; +{ + int l; + char *namevar; + + if (cp->c_name == 0) + return; + + l = strlen (cp->c_name); + namevar = xmalloc (l + 16); + + sprintf (namevar, "%s_PID", cp->c_name); + unbind_variable_noref (namevar); + +#if defined (ARRAY_VARS) + check_unbind_variable (cp->c_name); +#else + sprintf (namevar, "%s_READ", cp->c_name); + unbind_variable (namevar); + sprintf (namevar, "%s_WRITE", cp->c_name); + unbind_variable (namevar); +#endif + + free (namevar); +} + +static int +execute_coproc (command, pipe_in, pipe_out, fds_to_close) + COMMAND *command; + int pipe_in, pipe_out; + struct fd_bitmap *fds_to_close; +{ + int rpipe[2], wpipe[2], estat, invert; + pid_t coproc_pid; + Coproc *cp; + char *tcmd, *p, *name; + sigset_t set, oset; + + /* XXX -- can be removed after changes to handle multiple coprocs */ +#if !MULTIPLE_COPROCS + if (sh_coproc.c_pid != NO_PID && (sh_coproc.c_rfd >= 0 || sh_coproc.c_wfd >= 0)) + internal_warning (_("execute_coproc: coproc [%d:%s] still exists"), sh_coproc.c_pid, sh_coproc.c_name); + coproc_init (&sh_coproc); +#endif + + invert = (command->flags & CMD_INVERT_RETURN) != 0; + + /* expand name without splitting - could make this dependent on a shopt option */ + name = expand_string_unsplit_to_string (command->value.Coproc->name, 0); + /* Optional check -- could be relaxed */ + if (legal_identifier (name) == 0) + { + internal_error (_("`%s': not a valid identifier"), name); + return (invert ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + } + else + { + free (command->value.Coproc->name); + command->value.Coproc->name = name; + } + + command_string_index = 0; + tcmd = make_command_string (command); + + sh_openpipe ((int *)&rpipe); /* 0 = parent read, 1 = child write */ + sh_openpipe ((int *)&wpipe); /* 0 = child read, 1 = parent write */ + + BLOCK_SIGNAL (SIGCHLD, set, oset); + + coproc_pid = make_child (p = savestring (tcmd), FORK_ASYNC); + + if (coproc_pid == 0) + { + close (rpipe[0]); + close (wpipe[1]); + +#if defined (JOB_CONTROL) + FREE (p); +#endif + + UNBLOCK_SIGNAL (oset); + estat = execute_in_subshell (command, 1, wpipe[0], rpipe[1], fds_to_close); + + fflush (stdout); + fflush (stderr); + + exit (estat); + } + + close (rpipe[1]); + close (wpipe[0]); + + cp = coproc_alloc (command->value.Coproc->name, coproc_pid); + cp->c_rfd = rpipe[0]; + cp->c_wfd = wpipe[1]; + + cp->c_flags |= COPROC_RUNNING; + + SET_CLOSE_ON_EXEC (cp->c_rfd); + SET_CLOSE_ON_EXEC (cp->c_wfd); + + coproc_setvars (cp); + + UNBLOCK_SIGNAL (oset); + +#if 0 + itrace ("execute_coproc (%s): [%d] %s", command->value.Coproc->name, coproc_pid, the_printed_command); +#endif + + close_pipes (pipe_in, pipe_out); +#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD) + unlink_fifo_list (); +#endif + stop_pipeline (1, (COMMAND *)NULL); + DESCRIBE_PID (coproc_pid); + run_pending_traps (); + + return (invert ? EXECUTION_FAILURE : EXECUTION_SUCCESS); +} +#endif + +static void +restore_stdin (s) + int s; +{ + dup2 (s, 0); + close (s); +} + +/* Catch-all cleanup function for lastpipe code for unwind-protects */ +static void +lastpipe_cleanup (s) + int s; +{ + set_jobs_list_frozen (s); +} + +static int +execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) + COMMAND *command; + int asynchronous, pipe_in, pipe_out; + struct fd_bitmap *fds_to_close; +{ + int prev, fildes[2], new_bitmap_size, dummyfd, ignore_return, exec_result; + int lstdin, lastpipe_flag, lastpipe_jid, old_frozen; + COMMAND *cmd; + struct fd_bitmap *fd_bitmap; + pid_t lastpid; + +#if defined (JOB_CONTROL) + sigset_t set, oset; + BLOCK_CHILD (set, oset); +#endif /* JOB_CONTROL */ + + ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; + + prev = pipe_in; + cmd = command; + + while (cmd && cmd->type == cm_connection && + cmd->value.Connection && cmd->value.Connection->connector == '|') + { + /* Make a pipeline between the two commands. */ + if (pipe (fildes) < 0) + { + sys_error (_("pipe error")); +#if defined (JOB_CONTROL) + terminate_current_pipeline (); + kill_current_pipeline (); + UNBLOCK_CHILD (oset); +#endif /* JOB_CONTROL */ + last_command_exit_value = EXECUTION_FAILURE; + /* The unwind-protects installed below will take care + of closing all of the open file descriptors. */ + throw_to_top_level (); + return (EXECUTION_FAILURE); /* XXX */ + } + + /* Here is a problem: with the new file close-on-exec + code, the read end of the pipe (fildes[0]) stays open + in the first process, so that process will never get a + SIGPIPE. There is no way to signal the first process + that it should close fildes[0] after forking, so it + remains open. No SIGPIPE is ever sent because there + is still a file descriptor open for reading connected + to the pipe. We take care of that here. This passes + around a bitmap of file descriptors that must be + closed after making a child process in execute_simple_command. */ + + /* We need fd_bitmap to be at least as big as fildes[0]. + If fildes[0] is less than fds_to_close->size, then + use fds_to_close->size. */ + new_bitmap_size = (fildes[0] < fds_to_close->size) + ? fds_to_close->size + : fildes[0] + 8; + + fd_bitmap = new_fd_bitmap (new_bitmap_size); + + /* Now copy the old information into the new bitmap. */ + xbcopy ((char *)fds_to_close->bitmap, (char *)fd_bitmap->bitmap, fds_to_close->size); + + /* And mark the pipe file descriptors to be closed. */ + fd_bitmap->bitmap[fildes[0]] = 1; + + /* In case there are pipe or out-of-processes errors, we + want all these file descriptors to be closed when + unwind-protects are run, and the storage used for the + bitmaps freed up. */ + begin_unwind_frame ("pipe-file-descriptors"); + add_unwind_protect (dispose_fd_bitmap, fd_bitmap); + add_unwind_protect (close_fd_bitmap, fd_bitmap); + if (prev >= 0) + add_unwind_protect (close, prev); + dummyfd = fildes[1]; + add_unwind_protect (close, dummyfd); + +#if defined (JOB_CONTROL) + add_unwind_protect (restore_signal_mask, &oset); +#endif /* JOB_CONTROL */ + + if (ignore_return && cmd->value.Connection->first) + cmd->value.Connection->first->flags |= CMD_IGNORE_RETURN; + execute_command_internal (cmd->value.Connection->first, asynchronous, + prev, fildes[1], fd_bitmap); + + if (prev >= 0) + close (prev); + + prev = fildes[0]; + close (fildes[1]); + + dispose_fd_bitmap (fd_bitmap); + discard_unwind_frame ("pipe-file-descriptors"); + + cmd = cmd->value.Connection->second; + } + + lastpid = last_made_pid; + + /* Now execute the rightmost command in the pipeline. */ + if (ignore_return && cmd) + cmd->flags |= CMD_IGNORE_RETURN; + + lastpipe_flag = 0; + + begin_unwind_frame ("lastpipe-exec"); + lstdin = -1; + /* If the `lastpipe' option is set with shopt, and job control is not + enabled, execute the last element of non-async pipelines in the + current shell environment. */ + if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0) + { + lstdin = move_to_high_fd (0, 1, -1); + if (lstdin > 0) + { + do_piping (prev, pipe_out); + prev = NO_PIPE; + add_unwind_protect (restore_stdin, lstdin); + lastpipe_flag = 1; + old_frozen = freeze_jobs_list (); + lastpipe_jid = stop_pipeline (0, (COMMAND *)NULL); /* XXX */ + add_unwind_protect (lastpipe_cleanup, old_frozen); +#if defined (JOB_CONTROL) + UNBLOCK_CHILD (oset); /* XXX */ +#endif + } + if (cmd) + cmd->flags |= CMD_LASTPIPE; + } + if (prev >= 0) + add_unwind_protect (close, prev); + + exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close); + + if (lstdin > 0) + restore_stdin (lstdin); + + if (prev >= 0) + close (prev); + +#if defined (JOB_CONTROL) + UNBLOCK_CHILD (oset); +#endif + + QUIT; + + if (lastpipe_flag) + { +#if defined (JOB_CONTROL) + if (INVALID_JOB (lastpipe_jid) == 0) + { + append_process (savestring (the_printed_command_except_trap), dollar_dollar_pid, exec_result, lastpipe_jid); + lstdin = wait_for (lastpid, 0); + } + else + lstdin = wait_for_single_pid (lastpid, 0); /* checks bgpids list */ +#else + lstdin = wait_for (lastpid, 0); +#endif + +#if defined (JOB_CONTROL) + /* If wait_for removes the job from the jobs table, use result of last + command as pipeline's exit status as usual. The jobs list can get + frozen and unfrozen at inconvenient times if there are multiple pipelines + running simultaneously. */ + if (INVALID_JOB (lastpipe_jid) == 0) + exec_result = job_exit_status (lastpipe_jid); + else if (pipefail_opt) + exec_result = exec_result | lstdin; /* XXX */ + /* otherwise we use exec_result */ +#endif + + set_jobs_list_frozen (old_frozen); + } + + discard_unwind_frame ("lastpipe-exec"); + + return (exec_result); +} + +static int +execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) + COMMAND *command; + int asynchronous, pipe_in, pipe_out; + struct fd_bitmap *fds_to_close; +{ + COMMAND *tc, *second; + int ignore_return, exec_result, was_error_trap, invert; + volatile int save_line_number; + + ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; + + switch (command->value.Connection->connector) + { + /* Do the first command asynchronously. */ + case '&': + tc = command->value.Connection->first; + if (tc == 0) + return (EXECUTION_SUCCESS); + + if (ignore_return) + tc->flags |= CMD_IGNORE_RETURN; + tc->flags |= CMD_AMPERSAND; + + /* If this shell was compiled without job control support, + if we are currently in a subshell via `( xxx )', or if job + control is not active then the standard input for an + asynchronous command is forced to /dev/null. */ +#if defined (JOB_CONTROL) + if ((subshell_environment || !job_control) && !stdin_redir) +#else + if (!stdin_redir) +#endif /* JOB_CONTROL */ + tc->flags |= CMD_STDIN_REDIR; + + exec_result = execute_command_internal (tc, 1, pipe_in, pipe_out, fds_to_close); + QUIT; + + if (tc->flags & CMD_STDIN_REDIR) + tc->flags &= ~CMD_STDIN_REDIR; + + second = command->value.Connection->second; + if (second) + { + if (ignore_return) + second->flags |= CMD_IGNORE_RETURN; + + exec_result = execute_command_internal (second, asynchronous, pipe_in, pipe_out, fds_to_close); + } + + break; + + /* Just call execute command on both sides. */ + case ';': + if (ignore_return) + { + if (command->value.Connection->first) + command->value.Connection->first->flags |= CMD_IGNORE_RETURN; + if (command->value.Connection->second) + command->value.Connection->second->flags |= CMD_IGNORE_RETURN; + } + executing_list++; + QUIT; + +#if 1 + execute_command (command->value.Connection->first); +#else + execute_command_internal (command->value.Connection->first, + asynchronous, pipe_in, pipe_out, + fds_to_close); +#endif + + QUIT; + optimize_fork (command); /* XXX */ + exec_result = execute_command_internal (command->value.Connection->second, + asynchronous, pipe_in, pipe_out, + fds_to_close); + executing_list--; + break; + + case '|': + was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0; + invert = (command->flags & CMD_INVERT_RETURN) != 0; + ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; + + line_number_for_err_trap = line_number; /* XXX - save value? */ + exec_result = execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close); + + if (asynchronous) + { + exec_result = EXECUTION_SUCCESS; + invert = 0; + } + + if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS) + { + last_command_exit_value = exec_result; + save_line_number = line_number; + line_number = line_number_for_err_trap; + run_error_trap (); + line_number = save_line_number; + } + + if (ignore_return == 0 && invert == 0 && exit_immediately_on_error && exec_result != EXECUTION_SUCCESS) + { + last_command_exit_value = exec_result; + run_pending_traps (); + jump_to_top_level (ERREXIT); + } + + break; + + case AND_AND: + case OR_OR: + if (asynchronous) + { + /* If we have something like `a && b &' or `a || b &', run the + && or || stuff in a subshell. Force a subshell and just call + execute_command_internal again. Leave asynchronous on + so that we get a report from the parent shell about the + background job. */ + command->flags |= CMD_FORCE_SUBSHELL; + exec_result = execute_command_internal (command, 1, pipe_in, pipe_out, fds_to_close); + break; + } + + /* Execute the first command. If the result of that is successful + and the connector is AND_AND, or the result is not successful + and the connector is OR_OR, then execute the second command, + otherwise return. */ + + executing_list++; + if (command->value.Connection->first) + command->value.Connection->first->flags |= CMD_IGNORE_RETURN; + +#if 1 + exec_result = execute_command (command->value.Connection->first); +#else + exec_result = execute_command_internal (command->value.Connection->first, 0, NO_PIPE, NO_PIPE, fds_to_close); +#endif + QUIT; + if (((command->value.Connection->connector == AND_AND) && + (exec_result == EXECUTION_SUCCESS)) || + ((command->value.Connection->connector == OR_OR) && + (exec_result != EXECUTION_SUCCESS))) + { + optimize_fork (command); + + second = command->value.Connection->second; + if (ignore_return && second) + second->flags |= CMD_IGNORE_RETURN; + + exec_result = execute_command (second); + } + executing_list--; + break; + + default: + command_error ("execute_connection", CMDERR_BADCONN, command->value.Connection->connector, 0); + jump_to_top_level (DISCARD); + exec_result = EXECUTION_FAILURE; + } + + return exec_result; +} + +/* The test used to be only for interactive_shell, but we don't want to report + job status when the shell is not interactive or when job control isn't + enabled. */ +#define REAP() \ + do \ + { \ + if (job_control == 0 || interactive_shell == 0) \ + reap_dead_jobs (); \ + } \ + while (0) + +/* Execute a FOR command. The syntax is: FOR word_desc IN word_list; + DO command; DONE */ +static int +execute_for_command (for_command) + FOR_COM *for_command; +{ + register WORD_LIST *releaser, *list; + SHELL_VAR *v; + char *identifier; + int retval, save_line_number; +#if 0 + SHELL_VAR *old_value = (SHELL_VAR *)NULL; /* Remember the old value of x. */ +#endif + + save_line_number = line_number; + if (check_identifier (for_command->name, 1) == 0) + { + if (posixly_correct && interactive_shell == 0 && rpm_requires == 0) + { + last_command_exit_value = EX_BADUSAGE; + jump_to_top_level (ERREXIT); + } + return (EXECUTION_FAILURE); + } + + loop_level++; + identifier = for_command->name->word; + + line_number = for_command->line; /* for expansion error messages */ + list = releaser = expand_words_no_vars (for_command->map_list); + + begin_unwind_frame ("for"); + add_unwind_protect (dispose_words, releaser); + +#if 0 + if (lexical_scoping) + { + old_value = copy_variable (find_variable (identifier)); + if (old_value) + add_unwind_protect (dispose_variable, old_value); + } +#endif + + if (for_command->flags & CMD_IGNORE_RETURN) + for_command->action->flags |= CMD_IGNORE_RETURN; + + for (retval = EXECUTION_SUCCESS; list; list = list->next) + { + QUIT; + + line_number = for_command->line; + + /* Remember what this command looks like, for debugger. */ + command_string_index = 0; + print_for_command_head (for_command); + + if (echo_command_at_execute) + xtrace_print_for_command_head (for_command); + + /* Save this command unless it's a trap command and we're not running + a debug trap. */ + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) + { + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = savestring (the_printed_command); + } + + retval = run_debug_trap (); +#if defined (DEBUGGER) + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ + if (debugging_mode && retval != EXECUTION_SUCCESS) + continue; +#endif + + this_command_name = (char *)NULL; + /* XXX - special ksh93 for command index variable handling */ + v = find_variable_last_nameref (identifier, 1); + if (v && nameref_p (v)) + { + if (valid_nameref_value (list->word->word, 1) == 0) + { + sh_invalidid (list->word->word); + v = 0; + } + else if (readonly_p (v)) + err_readonly (name_cell (v)); + else + v = bind_variable_value (v, list->word->word, ASS_NAMEREF); + } + else + v = bind_variable (identifier, list->word->word, 0); + + if (v == 0 || readonly_p (v) || noassign_p (v)) + { + line_number = save_line_number; + if (v && readonly_p (v) && interactive_shell == 0 && posixly_correct) + { + last_command_exit_value = EXECUTION_FAILURE; + jump_to_top_level (FORCE_EOF); + } + else + { + dispose_words (releaser); + discard_unwind_frame ("for"); + loop_level--; + return (EXECUTION_FAILURE); + } + } + + if (ifsname (identifier)) + setifs (v); + else + stupidly_hack_special_variables (identifier); + + retval = execute_command (for_command->action); + REAP (); + QUIT; + + if (breaking) + { + breaking--; + break; + } + + if (continuing) + { + continuing--; + if (continuing) + break; + } + } + + loop_level--; + line_number = save_line_number; + +#if 0 + if (lexical_scoping) + { + if (!old_value) + unbind_variable (identifier); + else + { + SHELL_VAR *new_value; + + new_value = bind_variable (identifier, value_cell (old_value), 0); + new_value->attributes = old_value->attributes; + dispose_variable (old_value); + } + } +#endif + + dispose_words (releaser); + discard_unwind_frame ("for"); + return (retval); +} + +#if defined (ARITH_FOR_COMMAND) +/* Execute an arithmetic for command. The syntax is + + for (( init ; step ; test )) + do + body + done + + The execution should be exactly equivalent to + + eval \(\( init \)\) + while eval \(\( test \)\) ; do + body; + eval \(\( step \)\) + done +*/ +static intmax_t +eval_arith_for_expr (l, okp) + WORD_LIST *l; + int *okp; +{ + WORD_LIST *new; + intmax_t expresult; + int r; + + new = expand_words_no_vars (l); + if (new) + { + if (echo_command_at_execute) + xtrace_print_arith_cmd (new); + this_command_name = "(("; /* )) for expression error messages */ + + command_string_index = 0; + print_arith_command (new); + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) + { + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = savestring (the_printed_command); + } + + r = run_debug_trap (); + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ +#if defined (DEBUGGER) + if (debugging_mode == 0 || r == EXECUTION_SUCCESS) + expresult = evalexp (new->word->word, EXP_EXPANDED, okp); + else + { + expresult = 0; + if (okp) + *okp = 1; + } +#else + expresult = evalexp (new->word->word, EXP_EXPANDED, okp); +#endif + dispose_words (new); + } + else + { + expresult = 0; + if (okp) + *okp = 1; + } + return (expresult); +} + +static int +execute_arith_for_command (arith_for_command) + ARITH_FOR_COM *arith_for_command; +{ + intmax_t expresult; + int expok, body_status, arith_lineno, save_lineno; + + body_status = EXECUTION_SUCCESS; + loop_level++; + save_lineno = line_number; + + if (arith_for_command->flags & CMD_IGNORE_RETURN) + arith_for_command->action->flags |= CMD_IGNORE_RETURN; + + this_command_name = "(("; /* )) for expression error messages */ + + /* save the starting line number of the command so we can reset + line_number before executing each expression -- for $LINENO + and the DEBUG trap. */ + line_number = arith_lineno = arith_for_command->line; + if (variable_context && interactive_shell && sourcelevel == 0) + { + /* line numbers in a function start at 1 */ + line_number -= function_line_number - 1; + if (line_number <= 0) + line_number = 1; + } + + /* Evaluate the initialization expression. */ + expresult = eval_arith_for_expr (arith_for_command->init, &expok); + if (expok == 0) + { + line_number = save_lineno; + return (EXECUTION_FAILURE); + } + + while (1) + { + /* Evaluate the test expression. */ + line_number = arith_lineno; + expresult = eval_arith_for_expr (arith_for_command->test, &expok); + line_number = save_lineno; + + if (expok == 0) + { + body_status = EXECUTION_FAILURE; + break; + } + REAP (); + if (expresult == 0) + break; + + /* Execute the body of the arithmetic for command. */ + QUIT; + body_status = execute_command (arith_for_command->action); + QUIT; + + /* Handle any `break' or `continue' commands executed by the body. */ + if (breaking) + { + breaking--; + break; + } + + if (continuing) + { + continuing--; + if (continuing) + break; + } + + /* Evaluate the step expression. */ + line_number = arith_lineno; + expresult = eval_arith_for_expr (arith_for_command->step, &expok); + line_number = save_lineno; + + if (expok == 0) + { + body_status = EXECUTION_FAILURE; + break; + } + } + + loop_level--; + line_number = save_lineno; + + return (body_status); +} +#endif + +#if defined (SELECT_COMMAND) +static int LINES, COLS, tabsize; + +#define RP_SPACE ") " +#define RP_SPACE_LEN 2 + +/* XXX - does not handle numbers > 1000000 at all. */ +#define NUMBER_LEN(s) \ +((s < 10) ? 1 \ + : ((s < 100) ? 2 \ + : ((s < 1000) ? 3 \ + : ((s < 10000) ? 4 \ + : ((s < 100000) ? 5 \ + : 6))))) + +static int +displen (s) + const char *s; +{ +#if defined (HANDLE_MULTIBYTE) + wchar_t *wcstr; + size_t slen; + int wclen; + + wcstr = 0; + slen = mbstowcs (wcstr, s, 0); + if (slen == -1) + slen = 0; + wcstr = (wchar_t *)xmalloc (sizeof (wchar_t) * (slen + 1)); + mbstowcs (wcstr, s, slen + 1); + wclen = wcswidth (wcstr, slen); + free (wcstr); + return (wclen < 0 ? STRLEN(s) : wclen); +#else + return (STRLEN (s)); +#endif +} + +static int +print_index_and_element (len, ind, list) + int len, ind; + WORD_LIST *list; +{ + register WORD_LIST *l; + register int i; + + if (list == 0) + return (0); + for (i = ind, l = list; l && --i; l = l->next) + ; + if (l == 0) /* don't think this can happen */ + return (0); + fprintf (stderr, "%*d%s%s", len, ind, RP_SPACE, l->word->word); + return (displen (l->word->word)); +} + +static void +indent (from, to) + int from, to; +{ + while (from < to) + { + if ((to / tabsize) > (from / tabsize)) + { + putc ('\t', stderr); + from += tabsize - from % tabsize; + } + else + { + putc (' ', stderr); + from++; + } + } +} + +static void +print_select_list (list, list_len, max_elem_len, indices_len) + WORD_LIST *list; + int list_len, max_elem_len, indices_len; +{ + int ind, row, elem_len, pos, cols, rows; + int first_column_indices_len, other_indices_len; + + if (list == 0) + { + putc ('\n', stderr); + return; + } + + cols = max_elem_len ? COLS / max_elem_len : 1; + if (cols == 0) + cols = 1; + rows = list_len ? list_len / cols + (list_len % cols != 0) : 1; + cols = list_len ? list_len / rows + (list_len % rows != 0) : 1; + + if (rows == 1) + { + rows = cols; + cols = 1; + } + + first_column_indices_len = NUMBER_LEN (rows); + other_indices_len = indices_len; + + for (row = 0; row < rows; row++) + { + ind = row; + pos = 0; + while (1) + { + indices_len = (pos == 0) ? first_column_indices_len : other_indices_len; + elem_len = print_index_and_element (indices_len, ind + 1, list); + elem_len += indices_len + RP_SPACE_LEN; + ind += rows; + if (ind >= list_len) + break; + indent (pos + elem_len, pos + max_elem_len); + pos += max_elem_len; + } + putc ('\n', stderr); + } +} + +/* Print the elements of LIST, one per line, preceded by an index from 1 to + LIST_LEN. Then display PROMPT and wait for the user to enter a number. + If the number is between 1 and LIST_LEN, return that selection. If EOF + is read, return a null string. If a blank line is entered, or an invalid + number is entered, the loop is executed again. */ +static char * +select_query (list, list_len, prompt, print_menu) + WORD_LIST *list; + int list_len; + char *prompt; + int print_menu; +{ + int max_elem_len, indices_len, len, r, oe; + intmax_t reply; + WORD_LIST *l; + char *repl_string, *t; + + COLS = default_columns (); + +#if 0 + t = get_string_value ("TABSIZE"); + tabsize = (t && *t) ? atoi (t) : 8; + if (tabsize <= 0) + tabsize = 8; +#else + tabsize = 8; +#endif + + max_elem_len = 0; + for (l = list; l; l = l->next) + { + len = displen (l->word->word); + if (len > max_elem_len) + max_elem_len = len; + } + indices_len = NUMBER_LEN (list_len); + max_elem_len += indices_len + RP_SPACE_LEN + 2; + + while (1) + { + if (print_menu) + print_select_list (list, list_len, max_elem_len, indices_len); + fprintf (stderr, "%s", prompt); + fflush (stderr); + QUIT; + + oe = executing_builtin; + executing_builtin = 1; + r = read_builtin ((WORD_LIST *)NULL); + executing_builtin = oe; + if (r != EXECUTION_SUCCESS) + { + putchar ('\n'); + return ((char *)NULL); + } + repl_string = get_string_value ("REPLY"); + if (repl_string == 0) + return ((char *)NULL); + if (*repl_string == 0) + { + print_menu = 1; + continue; + } + if (legal_number (repl_string, &reply) == 0) + return ""; + if (reply < 1 || reply > list_len) + return ""; + + for (l = list; l && --reply; l = l->next) + ; + return (l->word->word); /* XXX - can't be null? */ + } +} + +/* Execute a SELECT command. The syntax is: + SELECT word IN list DO command_list DONE + Only `break' or `return' in command_list will terminate + the command. */ +static int +execute_select_command (select_command) + SELECT_COM *select_command; +{ + WORD_LIST *releaser, *list; + SHELL_VAR *v; + char *identifier, *ps3_prompt, *selection; + int retval, list_len, show_menu, save_line_number; + + if (check_identifier (select_command->name, 1) == 0) + return (EXECUTION_FAILURE); + + save_line_number = line_number; + line_number = select_command->line; + + command_string_index = 0; + print_select_command_head (select_command); + + if (echo_command_at_execute) + xtrace_print_select_command_head (select_command); + +#if 0 + if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0))) +#else + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) +#endif + { + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = savestring (the_printed_command); + } + + retval = run_debug_trap (); +#if defined (DEBUGGER) + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ + if (debugging_mode && retval != EXECUTION_SUCCESS) + return (EXECUTION_SUCCESS); +#endif + + loop_level++; + identifier = select_command->name->word; + + /* command and arithmetic substitution, parameter and variable expansion, + word splitting, pathname expansion, and quote removal. */ + list = releaser = expand_words_no_vars (select_command->map_list); + list_len = list_length (list); + if (list == 0 || list_len == 0) + { + if (list) + dispose_words (list); + line_number = save_line_number; + return (EXECUTION_SUCCESS); + } + + begin_unwind_frame ("select"); + add_unwind_protect (dispose_words, releaser); + + if (select_command->flags & CMD_IGNORE_RETURN) + select_command->action->flags |= CMD_IGNORE_RETURN; + + retval = EXECUTION_SUCCESS; + show_menu = 1; + + while (1) + { + line_number = select_command->line; + ps3_prompt = get_string_value ("PS3"); + if (ps3_prompt == 0) + ps3_prompt = "#? "; + + QUIT; + selection = select_query (list, list_len, ps3_prompt, show_menu); + QUIT; + if (selection == 0) + { + /* select_query returns EXECUTION_FAILURE if the read builtin + fails, so we want to return failure in this case. */ + retval = EXECUTION_FAILURE; + break; + } + + v = bind_variable (identifier, selection, 0); + if (v == 0 || readonly_p (v) || noassign_p (v)) + { + if (v && readonly_p (v) && interactive_shell == 0 && posixly_correct) + { + last_command_exit_value = EXECUTION_FAILURE; + jump_to_top_level (FORCE_EOF); + } + else + { + dispose_words (releaser); + discard_unwind_frame ("select"); + loop_level--; + line_number = save_line_number; + return (EXECUTION_FAILURE); + } + } + + stupidly_hack_special_variables (identifier); + + retval = execute_command (select_command->action); + + REAP (); + QUIT; + + if (breaking) + { + breaking--; + break; + } + + if (continuing) + { + continuing--; + if (continuing) + break; + } + +#if defined (KSH_COMPATIBLE_SELECT) + show_menu = 0; + selection = get_string_value ("REPLY"); + if (selection && *selection == '\0') + show_menu = 1; +#endif + } + + loop_level--; + line_number = save_line_number; + + dispose_words (releaser); + discard_unwind_frame ("select"); + return (retval); +} +#endif /* SELECT_COMMAND */ + +/* Execute a CASE command. The syntax is: CASE word_desc IN pattern_list ESAC. + The pattern_list is a linked list of pattern clauses; each clause contains + some patterns to compare word_desc against, and an associated command to + execute. */ +static int +execute_case_command (case_command) + CASE_COM *case_command; +{ + register WORD_LIST *list; + WORD_LIST *wlist, *es; + PATTERN_LIST *clauses; + char *word, *pattern; + int retval, match, ignore_return, save_line_number, qflags; + + save_line_number = line_number; + line_number = case_command->line; + + command_string_index = 0; + print_case_command_head (case_command); + + if (echo_command_at_execute) + xtrace_print_case_command_head (case_command); + +#if 0 + if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0))) +#else + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) +#endif + { + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = savestring (the_printed_command); + } + + retval = run_debug_trap(); +#if defined (DEBUGGER) + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ + if (debugging_mode && retval != EXECUTION_SUCCESS) + { + line_number = save_line_number; + return (EXECUTION_SUCCESS); + } +#endif + + /* Use the same expansions (the ones POSIX specifies) as the patterns; + dequote the resulting string (as POSIX specifies) since the quotes in + patterns are handled specially below. We have to do it in this order + because we're not supposed to perform word splitting. */ + wlist = expand_word_leave_quoted (case_command->word, 0); + if (wlist) + { + char *t; + t = string_list (wlist); + word = dequote_string (t); + free (t); + } + else + word = savestring (""); + dispose_words (wlist); + + retval = EXECUTION_SUCCESS; + ignore_return = case_command->flags & CMD_IGNORE_RETURN; + + begin_unwind_frame ("case"); + add_unwind_protect (xfree, word); + +#define EXIT_CASE() goto exit_case_command + + for (clauses = case_command->clauses; clauses; clauses = clauses->next) + { + QUIT; + for (list = clauses->patterns; list; list = list->next) + { + es = expand_word_leave_quoted (list->word, 0); + + if (es && es->word && es->word->word && *(es->word->word)) + { + /* Convert quoted null strings into empty strings. */ + qflags = QGLOB_CVTNULL; + + /* We left CTLESC in place quoting CTLESC and CTLNUL after the + call to expand_word_leave_quoted; tell quote_string_for_globbing + to remove those here. This works for both unquoted portions of + the word (which call quote_escapes) and quoted portions + (which call quote_string). */ + qflags |= QGLOB_CTLESC; + pattern = quote_string_for_globbing (es->word->word, qflags); + } + else + { + pattern = (char *)xmalloc (1); + pattern[0] = '\0'; + } + + /* Since the pattern does not undergo quote removal (as per + Posix.2, section 3.9.4.3), the strmatch () call must be able + to recognize backslashes as escape characters. */ + match = strmatch (pattern, word, FNMATCH_EXTFLAG|FNMATCH_IGNCASE) != FNM_NOMATCH; + free (pattern); + + dispose_words (es); + + if (match) + { + do + { + if (clauses->action && ignore_return) + clauses->action->flags |= CMD_IGNORE_RETURN; + retval = execute_command (clauses->action); + } + while ((clauses->flags & CASEPAT_FALLTHROUGH) && (clauses = clauses->next)); + if (clauses == 0 || (clauses->flags & CASEPAT_TESTNEXT) == 0) + EXIT_CASE (); + else + break; + } + + QUIT; + } + } + +exit_case_command: + free (word); + discard_unwind_frame ("case"); + line_number = save_line_number; + return (retval); +} + +#define CMD_WHILE 0 +#define CMD_UNTIL 1 + +/* The WHILE command. Syntax: WHILE test DO action; DONE. + Repeatedly execute action while executing test produces + EXECUTION_SUCCESS. */ +static int +execute_while_command (while_command) + WHILE_COM *while_command; +{ + return (execute_while_or_until (while_command, CMD_WHILE)); +} + +/* UNTIL is just like WHILE except that the test result is negated. */ +static int +execute_until_command (while_command) + WHILE_COM *while_command; +{ + return (execute_while_or_until (while_command, CMD_UNTIL)); +} + +/* The body for both while and until. The only difference between the + two is that the test value is treated differently. TYPE is + CMD_WHILE or CMD_UNTIL. The return value for both commands should + be EXECUTION_SUCCESS if no commands in the body are executed, and + the status of the last command executed in the body otherwise. */ +static int +execute_while_or_until (while_command, type) + WHILE_COM *while_command; + int type; +{ + int return_value, body_status; + + body_status = EXECUTION_SUCCESS; + loop_level++; + + while_command->test->flags |= CMD_IGNORE_RETURN; + if (while_command->flags & CMD_IGNORE_RETURN) + while_command->action->flags |= CMD_IGNORE_RETURN; + + while (1) + { + return_value = execute_command (while_command->test); + REAP (); + + /* Need to handle `break' in the test when we would break out of the + loop. The job control code will set `breaking' to loop_level + when a job in a loop is stopped with SIGTSTP. If the stopped job + is in the loop test, `breaking' will not be reset unless we do + this, and the shell will cease to execute commands. The same holds + true for `continue'. */ + if (type == CMD_WHILE && return_value != EXECUTION_SUCCESS) + { + if (breaking) + breaking--; + if (continuing) + continuing--; + break; + } + if (type == CMD_UNTIL && return_value == EXECUTION_SUCCESS) + { + if (breaking) + breaking--; + if (continuing) + continuing--; + break; + } + + QUIT; + body_status = execute_command (while_command->action); + QUIT; + + if (breaking) + { + breaking--; + break; + } + + if (continuing) + { + continuing--; + if (continuing) + break; + } + } + loop_level--; + + return (body_status); +} + +/* IF test THEN command [ELSE command]. + IF also allows ELIF in the place of ELSE IF, but + the parser makes *that* stupidity transparent. */ +static int +execute_if_command (if_command) + IF_COM *if_command; +{ + int return_value, save_line_number; + + save_line_number = line_number; + if_command->test->flags |= CMD_IGNORE_RETURN; + return_value = execute_command (if_command->test); + line_number = save_line_number; + + if (return_value == EXECUTION_SUCCESS) + { + QUIT; + + if (if_command->true_case && (if_command->flags & CMD_IGNORE_RETURN)) + if_command->true_case->flags |= CMD_IGNORE_RETURN; + + return (execute_command (if_command->true_case)); + } + else + { + QUIT; + + if (if_command->false_case && (if_command->flags & CMD_IGNORE_RETURN)) + if_command->false_case->flags |= CMD_IGNORE_RETURN; + + return (execute_command (if_command->false_case)); + } +} + +#if defined (DPAREN_ARITHMETIC) +static int +execute_arith_command (arith_command) + ARITH_COM *arith_command; +{ + int expok, save_line_number, retval; + intmax_t expresult; + WORD_LIST *new; + char *exp, *t; + + expresult = 0; + + save_line_number = line_number; + this_command_name = "(("; /* )) */ + line_number_for_err_trap = line_number = arith_command->line; + /* If we're in a function, update the line number information. */ + if (variable_context && interactive_shell && sourcelevel == 0) + { + /* line numbers in a function start at 1 */ + line_number -= function_line_number - 1; + if (line_number <= 0) + line_number = 1; + } + + command_string_index = 0; + print_arith_command (arith_command->exp); + + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) + { + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = savestring (the_printed_command); + } + + /* Run the debug trap before each arithmetic command, but do it after we + update the line number information and before we expand the various + words in the expression. */ + retval = run_debug_trap (); +#if defined (DEBUGGER) + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ + if (debugging_mode && retval != EXECUTION_SUCCESS) + { + line_number = save_line_number; + return (EXECUTION_SUCCESS); + } +#endif + + t = (char *)NULL; + new = arith_command->exp; + if (new->next) + exp = t = string_list (new); /* just in case */ + else + exp = new->word->word; + + exp = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH); + + /* If we're tracing, make a new word list with `((' at the front and `))' + at the back and print it. Change xtrace_print_arith_cmd to take a string + when I change eval_arith_for_expr to use expand_arith_string(). */ + if (echo_command_at_execute) + { + new = make_word_list (make_word (exp ? exp : ""), (WORD_LIST *)NULL); + xtrace_print_arith_cmd (new); + dispose_words (new); + } + + if (exp) + { + expresult = evalexp (exp, EXP_EXPANDED, &expok); + line_number = save_line_number; + free (exp); + } + else + { + expresult = 0; + expok = 1; + } + FREE (t); + + if (expok == 0) + return (EXECUTION_FAILURE); + + return (expresult == 0 ? EXECUTION_FAILURE : EXECUTION_SUCCESS); +} +#endif /* DPAREN_ARITHMETIC */ + +#if defined (COND_COMMAND) + +static char * const nullstr = ""; + +/* XXX - can COND ever be NULL when this is called? */ +static int +execute_cond_node (cond) + COND_COM *cond; +{ + int result, invert, patmatch, rmatch, mflags, ignore; + char *arg1, *arg2; +#if 0 + char *t1, *t2; +#endif + + invert = (cond->flags & CMD_INVERT_RETURN); + ignore = (cond->flags & CMD_IGNORE_RETURN); + if (ignore) + { + if (cond->left) + cond->left->flags |= CMD_IGNORE_RETURN; + if (cond->right) + cond->right->flags |= CMD_IGNORE_RETURN; + } + + if (cond->type == COND_EXPR) + result = execute_cond_node (cond->left); + else if (cond->type == COND_OR) + { + result = execute_cond_node (cond->left); + if (result != EXECUTION_SUCCESS) + result = execute_cond_node (cond->right); + } + else if (cond->type == COND_AND) + { + result = execute_cond_node (cond->left); + if (result == EXECUTION_SUCCESS) + result = execute_cond_node (cond->right); + } + else if (cond->type == COND_UNARY) + { + if (ignore) + comsub_ignore_return++; + arg1 = cond_expand_word (cond->left->op, 0); + if (ignore) + comsub_ignore_return--; + if (arg1 == 0) + arg1 = nullstr; + if (echo_command_at_execute) + xtrace_print_cond_term (cond->type, invert, cond->op, arg1, (char *)NULL); + result = unary_test (cond->op->word, arg1) ? EXECUTION_SUCCESS : EXECUTION_FAILURE; + if (arg1 != nullstr) + free (arg1); + } + else if (cond->type == COND_BINARY) + { + rmatch = 0; + patmatch = (((cond->op->word[1] == '=') && (cond->op->word[2] == '\0') && + (cond->op->word[0] == '!' || cond->op->word[0] == '=')) || + (cond->op->word[0] == '=' && cond->op->word[1] == '\0')); +#if defined (COND_REGEXP) + rmatch = (cond->op->word[0] == '=' && cond->op->word[1] == '~' && + cond->op->word[2] == '\0'); +#endif + + if (ignore) + comsub_ignore_return++; + arg1 = cond_expand_word (cond->left->op, 0); + if (ignore) + comsub_ignore_return--; + if (arg1 == 0) + arg1 = nullstr; + if (ignore) + comsub_ignore_return++; + arg2 = cond_expand_word (cond->right->op, + (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0)); + if (ignore) + comsub_ignore_return--; + if (arg2 == 0) + arg2 = nullstr; + + if (echo_command_at_execute) + xtrace_print_cond_term (cond->type, invert, cond->op, arg1, arg2); + +#if defined (COND_REGEXP) + if (rmatch) + { + mflags = SHMAT_PWARN; +#if defined (ARRAY_VARS) + mflags |= SHMAT_SUBEXP; +#endif + +#if 0 + t1 = strescape(arg1); + t2 = strescape(arg2); + itrace("execute_cond_node: sh_regmatch on `%s' and `%s'", t1, t2); + free(t1); + free(t2); +#endif + + result = sh_regmatch (arg1, arg2, mflags); + } + else +#endif /* COND_REGEXP */ + { + int oe; + oe = extended_glob; + extended_glob = 1; + result = binary_test (cond->op->word, arg1, arg2, TEST_PATMATCH|TEST_ARITHEXP|TEST_LOCALE) + ? EXECUTION_SUCCESS + : EXECUTION_FAILURE; + extended_glob = oe; + } + if (arg1 != nullstr) + free (arg1); + if (arg2 != nullstr) + free (arg2); + } + else + { + command_error ("execute_cond_node", CMDERR_BADTYPE, cond->type, 0); + jump_to_top_level (DISCARD); + result = EXECUTION_FAILURE; + } + + if (invert) + result = (result == EXECUTION_SUCCESS) ? EXECUTION_FAILURE : EXECUTION_SUCCESS; + + return result; +} + +static int +execute_cond_command (cond_command) + COND_COM *cond_command; +{ + int retval, save_line_number; + + save_line_number = line_number; + + this_command_name = "[["; + line_number_for_err_trap = line_number = cond_command->line; + /* If we're in a function, update the line number information. */ + if (variable_context && interactive_shell && sourcelevel == 0) + { + /* line numbers in a function start at 1 */ + line_number -= function_line_number - 1; + if (line_number <= 0) + line_number = 1; + } + command_string_index = 0; + print_cond_command (cond_command); + + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) + { + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = savestring (the_printed_command); + } + + /* Run the debug trap before each conditional command, but do it after we + update the line number information. */ + retval = run_debug_trap (); +#if defined (DEBUGGER) + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ + if (debugging_mode && retval != EXECUTION_SUCCESS) + { + line_number = save_line_number; + return (EXECUTION_SUCCESS); + } +#endif + +#if 0 + debug_print_cond_command (cond_command); +#endif + + last_command_exit_value = retval = execute_cond_node (cond_command); + line_number = save_line_number; + return (retval); +} +#endif /* COND_COMMAND */ + +static void +bind_lastarg (arg) + char *arg; +{ + SHELL_VAR *var; + + if (arg == 0) + arg = ""; + var = bind_variable ("_", arg, 0); + if (var) + VUNSETATTR (var, att_exported); +} + +/* Execute a null command. Fork a subshell if the command uses pipes or is + to be run asynchronously. This handles all the side effects that are + supposed to take place. */ +static int +execute_null_command (redirects, pipe_in, pipe_out, async) + REDIRECT *redirects; + int pipe_in, pipe_out, async; +{ + int r; + int forcefork, fork_flags; + REDIRECT *rd; + + for (forcefork = 0, rd = redirects; rd; rd = rd->next) + { + forcefork += rd->rflags & REDIR_VARASSIGN; + /* Safety */ + forcefork += (rd->redirector.dest == 0 || fd_is_bash_input (rd->redirector.dest)) && (INPUT_REDIRECT (rd->instruction) || TRANSLATE_REDIRECT (rd->instruction) || rd->instruction == r_close_this); + } + + if (forcefork || pipe_in != NO_PIPE || pipe_out != NO_PIPE || async) + { + /* We have a null command, but we really want a subshell to take + care of it. Just fork, do piping and redirections, and exit. */ + fork_flags = async ? FORK_ASYNC : 0; + if (make_child ((char *)NULL, fork_flags) == 0) + { + /* Cancel traps, in trap.c. */ + restore_original_signals (); /* XXX */ + + do_piping (pipe_in, pipe_out); + +#if defined (COPROCESS_SUPPORT) + coproc_closeall (); +#endif + + interactive = 0; /* XXX */ + + subshell_environment = 0; + if (async) + subshell_environment |= SUBSHELL_ASYNC; + if (pipe_in != NO_PIPE || pipe_out != NO_PIPE) + subshell_environment |= SUBSHELL_PIPE; + + if (do_redirections (redirects, RX_ACTIVE) == 0) + exit (EXECUTION_SUCCESS); + else + exit (EXECUTION_FAILURE); + } + else + { + close_pipes (pipe_in, pipe_out); +#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD) + if (pipe_out == NO_PIPE) + unlink_fifo_list (); +#endif + return (EXECUTION_SUCCESS); + } + } + else + { + /* Even if there aren't any command names, pretend to do the + redirections that are specified. The user expects the side + effects to take place. If the redirections fail, then return + failure. Otherwise, if a command substitution took place while + expanding the command or a redirection, return the value of that + substitution. Otherwise, return EXECUTION_SUCCESS. */ + + r = do_redirections (redirects, RX_ACTIVE|RX_UNDOABLE); + cleanup_redirects (redirection_undo_list); + redirection_undo_list = (REDIRECT *)NULL; + + if (r != 0) + return (EXECUTION_FAILURE); + else if (last_command_subst_pid != NO_PID) + return (last_command_exit_value); + else + return (EXECUTION_SUCCESS); + } +} + +/* This is a hack to suppress word splitting for assignment statements + given as arguments to builtins with the ASSIGNMENT_BUILTIN flag set. */ +static void +fix_assignment_words (words) + WORD_LIST *words; +{ + WORD_LIST *w, *wcmd; + struct builtin *b; + int assoc, global, array, integer; + + if (words == 0) + return; + + b = 0; + assoc = global = array = integer = 0; + + /* Skip over assignment statements preceding a command name */ + wcmd = words; + for (wcmd = words; wcmd; wcmd = wcmd->next) + if ((wcmd->word->flags & W_ASSIGNMENT) == 0) + break; + /* Posix (post-2008) says that `command' doesn't change whether + or not the builtin it shadows is a `declaration command', even + though it removes other special builtin properties. In Posix + mode, we skip over one or more instances of `command' and + deal with the next word as the assignment builtin. */ + while (posixly_correct && wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command")) + wcmd = wcmd->next; + + for (w = wcmd; w; w = w->next) + if (w->word->flags & W_ASSIGNMENT) + { + /* Lazy builtin lookup, only do it if we find an assignment */ + if (b == 0) + { + b = builtin_address_internal (wcmd->word->word, 0); + if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0) + return; + else if (b && (b->flags & ASSIGNMENT_BUILTIN)) + wcmd->word->flags |= W_ASSNBLTIN; + } + w->word->flags |= (W_NOSPLIT|W_NOGLOB|W_TILDEEXP|W_ASSIGNARG); +#if defined (ARRAY_VARS) + if (assoc) + w->word->flags |= W_ASSIGNASSOC; + if (array) + w->word->flags |= W_ASSIGNARRAY; +#endif + if (global) + w->word->flags |= W_ASSNGLOBAL; + + /* If we have an assignment builtin that does not create local variables, + make sure we create global variables even if we internally call + `declare'. The CHKLOCAL flag means to set attributes or values on + an existing local variable, if there is one. */ + if (b && ((b->flags & (ASSIGNMENT_BUILTIN|LOCALVAR_BUILTIN)) == ASSIGNMENT_BUILTIN)) + w->word->flags |= W_ASSNGLOBAL|W_CHKLOCAL; + else if (b && (b->flags & ASSIGNMENT_BUILTIN) && (b->flags & LOCALVAR_BUILTIN) && variable_context) + w->word->flags |= W_FORCELOCAL; + } +#if defined (ARRAY_VARS) + /* Note that we saw an associative array option to a builtin that takes + assignment statements. This is a bit of a kludge. */ + else if (w->word->word[0] == '-' && (strpbrk (w->word->word+1, "Aag") != 0)) +#else + else if (w->word->word[0] == '-' && strchr (w->word->word+1, 'g')) +#endif + { + if (b == 0) + { + b = builtin_address_internal (wcmd->word->word, 0); + if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0) + return; + else if (b && (b->flags & ASSIGNMENT_BUILTIN)) + wcmd->word->flags |= W_ASSNBLTIN; + } + if ((wcmd->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'A')) + assoc = 1; + else if ((wcmd->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'a')) + array = 1; + if ((wcmd->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'g')) + global = 1; + } +} + +#ifndef ISOPTION +# define ISOPTION(s, c) (s[0] == '-' && s[1] == c && s[2] == 0) +#endif + +#define RETURN_NOT_COMMAND() \ + do { if (typep) *typep = 0; return words; } while (0) + +/* Make sure we have `command [-p] command_name [args]', and handle skipping + over the usual `--' that ends the options. Returns the updated WORDS with + the command and options stripped and sets *TYPEP to a non-zero value. If + any other options are supplied, or there is not a command_name, we punt + and return a zero value in *TYPEP without updating WORDS. */ +static WORD_LIST * +check_command_builtin (words, typep) + WORD_LIST *words; + int *typep; +{ + int type; + WORD_LIST *w; + + w = words->next; + type = 1; + + if (w && ISOPTION (w->word->word, 'p')) /* command -p */ + { +#if defined (RESTRICTED_SHELL) + if (restricted) + RETURN_NOT_COMMAND(); +#endif + w = w->next; + type = 2; + } + + if (w && ISOPTION (w->word->word, '-')) /* command [-p] -- */ + w = w->next; + else if (w && w->word->word[0] == '-') /* any other option */ + RETURN_NOT_COMMAND(); + + if (w == 0 || w->word->word == 0) /* must have a command_name */ + RETURN_NOT_COMMAND(); + + if (typep) + *typep = type; + return w; +} + +/* Return 1 if the file found by searching $PATH for PATHNAME, defaulting + to PATHNAME, is a directory. Used by the autocd code below. */ +static int +is_dirname (pathname) + char *pathname; +{ + char *temp; + int ret; + + temp = search_for_command (pathname, 0); + ret = temp ? file_isdir (temp) : file_isdir (pathname); + free (temp); + return ret; +} + +/* The meaty part of all the executions. We have to start hacking the + real execution of commands here. Fork a process, set things up, + execute the command. */ +static int +execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) + SIMPLE_COM *simple_command; + int pipe_in, pipe_out, async; + struct fd_bitmap *fds_to_close; +{ + WORD_LIST *words, *lastword; + char *command_line, *lastarg, *temp; + int first_word_quoted, result, builtin_is_special, already_forked, dofork; + int fork_flags, cmdflags; + pid_t old_last_async_pid; + sh_builtin_func_t *builtin; + SHELL_VAR *func; + volatile int old_builtin, old_command_builtin; + + result = EXECUTION_SUCCESS; + special_builtin_failed = builtin_is_special = 0; + command_line = (char *)0; + + QUIT; + + /* If we're in a function, update the line number information. */ + if (variable_context && interactive_shell && sourcelevel == 0) + { + /* line numbers in a function start at 1 */ + line_number -= function_line_number - 1; + if (line_number <= 0) + line_number = 1; + } + + /* Remember what this command line looks like at invocation. */ + command_string_index = 0; + print_simple_command (simple_command); + +#if 0 + if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0))) +#else + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) +#endif + { + FREE (the_printed_command_except_trap); + the_printed_command_except_trap = the_printed_command ? savestring (the_printed_command) : (char *)0; + } + + /* Run the debug trap before each simple command, but do it after we + update the line number information. */ + result = run_debug_trap (); +#if defined (DEBUGGER) + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ + if (debugging_mode && result != EXECUTION_SUCCESS) + return (EXECUTION_SUCCESS); +#endif + + cmdflags = simple_command->flags; + + first_word_quoted = + simple_command->words ? (simple_command->words->word->flags & W_QUOTED) : 0; + + last_command_subst_pid = NO_PID; + old_last_async_pid = last_asynchronous_pid; + + already_forked = 0; + + /* If we're in a pipeline or run in the background, set DOFORK so we + make the child early, before word expansion. This keeps assignment + statements from affecting the parent shell's environment when they + should not. */ + dofork = pipe_in != NO_PIPE || pipe_out != NO_PIPE || async; + + /* Something like `%2 &' should restart job 2 in the background, not cause + the shell to fork here. */ + if (dofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE && + simple_command->words && simple_command->words->word && + simple_command->words->word->word && + (simple_command->words->word->word[0] == '%')) + dofork = 0; + + if (dofork) + { + char *p; + + /* Do this now, because execute_disk_command will do it anyway in the + vast majority of cases. */ + maybe_make_export_env (); + + /* Don't let a DEBUG trap overwrite the command string to be saved with + the process/job associated with this child. */ + fork_flags = async ? FORK_ASYNC : 0; + if (make_child (p = savestring (the_printed_command_except_trap), fork_flags) == 0) + { + already_forked = 1; + cmdflags |= CMD_NO_FORK; + + subshell_environment = SUBSHELL_FORK; /* XXX */ + if (pipe_in != NO_PIPE || pipe_out != NO_PIPE) + subshell_environment |= SUBSHELL_PIPE; + if (async) + subshell_environment |= SUBSHELL_ASYNC; + + /* We need to do this before piping to handle some really + pathological cases where one of the pipe file descriptors + is < 2. */ + if (fds_to_close) + close_fd_bitmap (fds_to_close); + + /* If we fork because of an input pipe, note input pipe for later to + inhibit async commands from redirecting stdin from /dev/null */ + stdin_redir |= pipe_in != NO_PIPE; + + do_piping (pipe_in, pipe_out); + pipe_in = pipe_out = NO_PIPE; +#if defined (COPROCESS_SUPPORT) + coproc_closeall (); +#endif + + last_asynchronous_pid = old_last_async_pid; + + if (async) + subshell_level++; /* not for pipes yet */ + +#if defined (JOB_CONTROL) + FREE (p); /* child doesn't use pointer */ +#endif + } + else + { + /* Don't let simple commands that aren't the last command in a + pipeline change $? for the rest of the pipeline (or at all). */ + if (pipe_out != NO_PIPE) + result = last_command_exit_value; + close_pipes (pipe_in, pipe_out); + command_line = (char *)NULL; /* don't free this. */ + return (result); + } + } + + QUIT; /* XXX */ + + /* If we are re-running this as the result of executing the `command' + builtin, do not expand the command words a second time. */ + if ((cmdflags & CMD_INHIBIT_EXPANSION) == 0) + { + current_fds_to_close = fds_to_close; + fix_assignment_words (simple_command->words); + /* Pass the ignore return flag down to command substitutions */ + if (cmdflags & CMD_IGNORE_RETURN) /* XXX */ + comsub_ignore_return++; + words = expand_words (simple_command->words); + if (cmdflags & CMD_IGNORE_RETURN) + comsub_ignore_return--; + current_fds_to_close = (struct fd_bitmap *)NULL; + } + else + words = copy_word_list (simple_command->words); + + /* It is possible for WORDS not to have anything left in it. + Perhaps all the words consisted of `$foo', and there was + no variable `$foo'. */ + if (words == 0) + { + this_command_name = 0; + result = execute_null_command (simple_command->redirects, + pipe_in, pipe_out, + already_forked ? 0 : async); + if (already_forked) + sh_exit (result); + else + { + bind_lastarg ((char *)NULL); + set_pipestatus_from_exit (result); + return (result); + } + } + + lastarg = (char *)NULL; + + begin_unwind_frame ("simple-command"); + + if (echo_command_at_execute && (cmdflags & CMD_COMMAND_BUILTIN) == 0) + xtrace_print_word_list (words, 1); + + builtin = (sh_builtin_func_t *)NULL; + func = (SHELL_VAR *)NULL; + + /* This test is still here in case we want to change the command builtin + handler code below to recursively call execute_simple_command (after + modifying the simple_command struct). */ + if ((cmdflags & CMD_NO_FUNCTIONS) == 0) + { + /* Posix.2 says special builtins are found before functions. We + don't set builtin_is_special anywhere other than here, because + this path is followed only when the `command' builtin is *not* + being used, and we don't want to exit the shell if a special + builtin executed with `command builtin' fails. `command' is not + a special builtin. */ + if (posixly_correct) + { + builtin = find_special_builtin (words->word->word); + if (builtin) + builtin_is_special = 1; + } + if (builtin == 0) + func = find_function (words->word->word); + } + + /* In POSIX mode, assignment errors in the temporary environment cause a + non-interactive shell to exit. */ +#if 1 + if (posixly_correct && builtin_is_special && interactive_shell == 0 && tempenv_assign_error) +#else + /* This is for strict posix conformance. */ + if (posixly_correct && interactive_shell == 0 && tempenv_assign_error) +#endif + { + last_command_exit_value = EXECUTION_FAILURE; + jump_to_top_level (ERREXIT); + } + tempenv_assign_error = 0; /* don't care about this any more */ + + /* This is where we handle the command builtin as a pseudo-reserved word + prefix. This allows us to optimize away forks if we can. */ + old_command_builtin = -1; + if (builtin == 0 && func == 0) + { + WORD_LIST *disposer, *l; + int cmdtype; + + builtin = find_shell_builtin (words->word->word); + while (builtin == command_builtin) + { + disposer = words; + cmdtype = 0; + words = check_command_builtin (words, &cmdtype); + if (cmdtype > 0) /* command -p [--] words */ + { + for (l = disposer; l->next != words; l = l->next) + ; + l->next = 0; + dispose_words (disposer); + cmdflags |= CMD_COMMAND_BUILTIN | CMD_NO_FUNCTIONS; + if (cmdtype == 2) + cmdflags |= CMD_STDPATH; + builtin = find_shell_builtin (words->word->word); + } + else + break; + } + if (cmdflags & CMD_COMMAND_BUILTIN) + { + old_command_builtin = executing_command_builtin; + unwind_protect_int (executing_command_builtin); + executing_command_builtin |= 1; + } + builtin = 0; + } + + add_unwind_protect (dispose_words, words); + QUIT; + + /* Bind the last word in this command to "$_" after execution. */ + for (lastword = words; lastword->next; lastword = lastword->next) + ; + lastarg = lastword->word->word; + +#if defined (JOB_CONTROL) + /* Is this command a job control related thing? */ + if (words->word->word[0] == '%' && already_forked == 0) + { + this_command_name = async ? "bg" : "fg"; + last_shell_builtin = this_shell_builtin; + this_shell_builtin = builtin_address (this_command_name); + result = (*this_shell_builtin) (words); + goto return_result; + } + + /* One other possibililty. The user may want to resume an existing job. + If they do, find out whether this word is a candidate for a running + job. */ + if (job_control && already_forked == 0 && async == 0 && + !first_word_quoted && + !words->next && + words->word->word[0] && + !simple_command->redirects && + pipe_in == NO_PIPE && + pipe_out == NO_PIPE && + (temp = get_string_value ("auto_resume"))) + { + int job, jflags, started_status; + + jflags = JM_STOPPED|JM_FIRSTMATCH; + if (STREQ (temp, "exact")) + jflags |= JM_EXACT; + else if (STREQ (temp, "substring")) + jflags |= JM_SUBSTRING; + else + jflags |= JM_PREFIX; + job = get_job_by_name (words->word->word, jflags); + if (job != NO_JOB) + { + run_unwind_frame ("simple-command"); + this_command_name = "fg"; + last_shell_builtin = this_shell_builtin; + this_shell_builtin = builtin_address ("fg"); + + started_status = start_job (job, 1); + return ((started_status < 0) ? EXECUTION_FAILURE : started_status); + } + } +#endif /* JOB_CONTROL */ + +run_builtin: + /* Remember the name of this command globally. */ + this_command_name = words->word->word; + + QUIT; + + /* This command could be a shell builtin or a user-defined function. + We have already found special builtins by this time, so we do not + set builtin_is_special. If this is a function or builtin, and we + have pipes, then fork a subshell in here. Otherwise, just execute + the command directly. */ + if (func == 0 && builtin == 0) + builtin = find_shell_builtin (this_command_name); + + last_shell_builtin = this_shell_builtin; + this_shell_builtin = builtin; + + if (builtin || func) + { + if (builtin) + { + old_builtin = executing_builtin; + unwind_protect_int (executing_builtin); /* modified in execute_builtin */ + if (old_command_builtin == -1) /* sentinel, can be set above */ + { + old_command_builtin = executing_command_builtin; + unwind_protect_int (executing_command_builtin); /* ditto and set above */ + } + } + if (already_forked) + { + /* reset_terminating_signals (); */ /* XXX */ + /* Reset the signal handlers in the child, but don't free the + trap strings. Set a flag noting that we have to free the + trap strings if we run trap to change a signal disposition. */ + reset_signal_handlers (); + subshell_environment |= SUBSHELL_RESETTRAP; + + if (async) + { + if ((cmdflags & CMD_STDIN_REDIR) && + pipe_in == NO_PIPE && + (stdin_redirects (simple_command->redirects) == 0)) + async_redirect_stdin (); + setup_async_signals (); + } + + if (async == 0) + subshell_level++; + execute_subshell_builtin_or_function + (words, simple_command->redirects, builtin, func, + pipe_in, pipe_out, async, fds_to_close, + cmdflags); + subshell_level--; + } + else + { + result = execute_builtin_or_function + (words, builtin, func, simple_command->redirects, fds_to_close, + cmdflags); + if (builtin) + { + if (result > EX_SHERRBASE) + { + switch (result) + { + case EX_REDIRFAIL: + case EX_BADASSIGN: + case EX_EXPFAIL: + /* These errors cause non-interactive posix mode shells to exit */ + if (posixly_correct && builtin_is_special && interactive_shell == 0) + { + last_command_exit_value = EXECUTION_FAILURE; + jump_to_top_level (ERREXIT); + } + break; + case EX_DISKFALLBACK: + /* XXX - experimental */ + executing_builtin = old_builtin; + executing_command_builtin = old_command_builtin; + builtin = 0; + /* XXX - redirections will have to be performed again */ + goto execute_from_filesystem; + } + result = builtin_status (result); + if (builtin_is_special) + special_builtin_failed = 1; /* XXX - take command builtin into account? */ + } + /* In POSIX mode, if there are assignment statements preceding + a special builtin, they persist after the builtin + completes. */ + if (posixly_correct && builtin_is_special && temporary_env) + merge_temporary_env (); + } + else /* function */ + { + if (result == EX_USAGE) + result = EX_BADUSAGE; + else if (result > EX_SHERRBASE) + result = builtin_status (result); + } + + set_pipestatus_from_exit (result); + + goto return_result; + } + } + + if (autocd && interactive && words->word && is_dirname (words->word->word)) + { + words = make_word_list (make_word ("--"), words); + words = make_word_list (make_word ("cd"), words); + xtrace_print_word_list (words, 0); + func = find_function ("cd"); + goto run_builtin; + } + +execute_from_filesystem: + if (command_line == 0) + command_line = savestring (the_printed_command_except_trap ? the_printed_command_except_trap : ""); + +#if defined (PROCESS_SUBSTITUTION) + /* The old code did not test already_forked and only did this if + subshell_environment&SUBSHELL_COMSUB != 0 (comsubs and procsubs). Other + uses of the no-fork optimization left FIFOs in $TMPDIR */ + if (already_forked == 0 && (cmdflags & CMD_NO_FORK) && fifos_pending() > 0) + cmdflags &= ~CMD_NO_FORK; +#endif + result = execute_disk_command (words, simple_command->redirects, command_line, + pipe_in, pipe_out, async, fds_to_close, + cmdflags); + + return_result: + bind_lastarg (lastarg); + FREE (command_line); + dispose_words (words); + if (builtin) + { + executing_builtin = old_builtin; + executing_command_builtin = old_command_builtin; + } + discard_unwind_frame ("simple-command"); + this_command_name = (char *)NULL; /* points to freed memory now */ + return (result); +} + +/* Translate the special builtin exit statuses. We don't really need a + function for this; it's a placeholder for future work. */ +static int +builtin_status (result) + int result; +{ + int r; + + switch (result) + { + case EX_USAGE: + case EX_BADSYNTAX: + r = EX_BADUSAGE; + break; + case EX_REDIRFAIL: + case EX_BADASSIGN: + case EX_EXPFAIL: + r = EXECUTION_FAILURE; + break; + default: + /* other special exit statuses not yet defined */ + r = (result > EX_SHERRBASE) ? EXECUTION_FAILURE : EXECUTION_SUCCESS; + break; + } + return (r); +} + +static int +execute_builtin (builtin, words, flags, subshell) + sh_builtin_func_t *builtin; + WORD_LIST *words; + int flags, subshell; +{ + int result, eval_unwind, ignexit_flag; + int isbltinenv, should_keep; + char *error_trap; + + error_trap = 0; + should_keep = 0; + + /* The eval builtin calls parse_and_execute, which does not know about + the setting of flags, and always calls the execution functions with + flags that will exit the shell on an error if -e is set. If the + eval builtin is being called, and we're supposed to ignore the exit + value of the command, we turn the -e flag off ourselves and disable + the ERR trap, then restore them when the command completes. This is + also a problem (as below) for the command and source/. builtins. */ + if (subshell == 0 && (flags & CMD_IGNORE_RETURN) && + (builtin == eval_builtin || (flags & CMD_COMMAND_BUILTIN) || builtin == source_builtin)) + { + begin_unwind_frame ("eval_builtin"); + unwind_protect_int (exit_immediately_on_error); + unwind_protect_int (builtin_ignoring_errexit); + error_trap = TRAP_STRING (ERROR_TRAP); + if (error_trap) + { + error_trap = savestring (error_trap); + add_unwind_protect (xfree, error_trap); + add_unwind_protect (set_error_trap, error_trap); + restore_default_signal (ERROR_TRAP); + } + exit_immediately_on_error = 0; + ignexit_flag = builtin_ignoring_errexit; + builtin_ignoring_errexit = 1; + eval_unwind = 1; + } + else + eval_unwind = 0; + + /* The temporary environment for a builtin is supposed to apply to + all commands executed by that builtin. Currently, this is a + problem only with the `unset', `source' and `eval' builtins. + `mapfile' is a special case because it uses evalstring (same as + eval or source) to run its callbacks. */ + /* SHOULD_KEEP is for the pop_scope call below; it only matters when + posixly_correct is set, but we should propagate the temporary environment + to the enclosing environment only for special builtins. */ + isbltinenv = (builtin == source_builtin || builtin == eval_builtin || builtin == unset_builtin || builtin == mapfile_builtin); + should_keep = isbltinenv && builtin != mapfile_builtin; +#if defined (HISTORY) && defined (READLINE) + if (builtin == fc_builtin || builtin == read_builtin) + { + isbltinenv = 1; + should_keep = 0; + } +#endif + + if (isbltinenv) + { + if (subshell == 0) + begin_unwind_frame ("builtin_env"); + + if (temporary_env) + { + push_scope (VC_BLTNENV, temporary_env); + if (flags & CMD_COMMAND_BUILTIN) + should_keep = 0; + if (subshell == 0) + add_unwind_protect (pop_scope, should_keep ? "1" : 0); + temporary_env = (HASH_TABLE *)NULL; + } + } + + if (subshell == 0 && builtin == eval_builtin) + { + if (evalnest_max > 0 && evalnest >= evalnest_max) + { + internal_error (_("eval: maximum eval nesting level exceeded (%d)"), evalnest); + evalnest = 0; + jump_to_top_level (DISCARD); + } + unwind_protect_int (evalnest); + /* The test for subshell == 0 above doesn't make a difference */ + evalnest++; /* execute_subshell_builtin_or_function sets this to 0 */ + } + else if (subshell == 0 && builtin == source_builtin) + { + if (sourcenest_max > 0 && sourcenest >= sourcenest_max) + { + internal_error (_("%s: maximum source nesting level exceeded (%d)"), this_command_name, sourcenest); + sourcenest = 0; + jump_to_top_level (DISCARD); + } + unwind_protect_int (sourcenest); + /* The test for subshell == 0 above doesn't make a difference */ + sourcenest++; /* execute_subshell_builtin_or_function sets this to 0 */ + } + + /* `return' does a longjmp() back to a saved environment in execute_function. + If a variable assignment list preceded the command, and the shell is + running in POSIX mode, we need to merge that into the shell_variables + table, since `return' is a POSIX special builtin. We don't do this if + it's being run by the `command' builtin, since that's supposed to inhibit + the special builtin properties. */ + if (posixly_correct && subshell == 0 && builtin == return_builtin && (flags & CMD_COMMAND_BUILTIN) == 0 && temporary_env) + { + begin_unwind_frame ("return_temp_env"); + add_unwind_protect (merge_temporary_env, (char *)NULL); + } + + executing_builtin++; + executing_command_builtin |= builtin == command_builtin; + result = ((*builtin) (words->next)); + + /* This shouldn't happen, but in case `return' comes back instead of + longjmp'ing, we need to unwind. */ + if (posixly_correct && subshell == 0 && builtin == return_builtin && temporary_env) + discard_unwind_frame ("return_temp_env"); + + if (subshell == 0 && isbltinenv) + run_unwind_frame ("builtin_env"); + + if (eval_unwind) + { + builtin_ignoring_errexit = ignexit_flag; + exit_immediately_on_error = builtin_ignoring_errexit ? 0 : errexit_flag; + if (error_trap) + { + set_error_trap (error_trap); + free (error_trap); + } + discard_unwind_frame ("eval_builtin"); + } + + return (result); +} + +static void +maybe_restore_getopt_state (gs) + sh_getopt_state_t *gs; +{ + /* If we have a local copy of OPTIND and it's at the right (current) + context, then we restore getopt's internal state. If not, we just + let it go. We know there is a local OPTIND if gs->gs_flags & 1. + This is set below in execute_function() before the context is run. */ + if (gs->gs_flags & 1) + sh_getopt_restore_istate (gs); + else + free (gs); +} + +#if defined (ARRAY_VARS) +void +restore_funcarray_state (fa) + struct func_array_state *fa; +{ + SHELL_VAR *nfv; + ARRAY *funcname_a; + + array_pop (fa->source_a); + array_pop (fa->lineno_a); + + GET_ARRAY_FROM_VAR ("FUNCNAME", nfv, funcname_a); + if (nfv == fa->funcname_v) + array_pop (funcname_a); + + free (fa); +} +#endif + +static int +execute_function (var, words, flags, fds_to_close, async, subshell) + SHELL_VAR *var; + WORD_LIST *words; + int flags; + struct fd_bitmap *fds_to_close; + int async, subshell; +{ + int return_val, result; + COMMAND *tc, *fc, *save_current; + char *debug_trap, *error_trap, *return_trap; +#if defined (ARRAY_VARS) + SHELL_VAR *funcname_v, *bash_source_v, *bash_lineno_v; + ARRAY *funcname_a; + volatile ARRAY *bash_source_a; + volatile ARRAY *bash_lineno_a; + struct func_array_state *fa; +#endif + FUNCTION_DEF *shell_fn; + char *sfile, *t; + sh_getopt_state_t *gs; + SHELL_VAR *gv; + + USE_VAR(fc); + + if (funcnest_max > 0 && funcnest >= funcnest_max) + { + internal_error (_("%s: maximum function nesting level exceeded (%d)"), var->name, funcnest); + funcnest = 0; /* XXX - should we reset it somewhere else? */ + jump_to_top_level (DISCARD); + } + +#if defined (ARRAY_VARS) + GET_ARRAY_FROM_VAR ("FUNCNAME", funcname_v, funcname_a); + GET_ARRAY_FROM_VAR ("BASH_SOURCE", bash_source_v, bash_source_a); + GET_ARRAY_FROM_VAR ("BASH_LINENO", bash_lineno_v, bash_lineno_a); +#endif + + tc = (COMMAND *)copy_command (function_cell (var)); + if (tc && (flags & CMD_IGNORE_RETURN)) + tc->flags |= CMD_IGNORE_RETURN; + + /* A limited attempt at optimization: shell functions at the end of command + substitutions that are already marked NO_FORK. */ + if (tc && (flags & CMD_NO_FORK) && (subshell_environment & SUBSHELL_COMSUB)) + optimize_shell_function (tc); + + gs = sh_getopt_save_istate (); + if (subshell == 0) + { + begin_unwind_frame ("function_calling"); + /* If the shell is in posix mode, this will push the variables in + the temporary environment to the "current shell environment" (the + global scope), and dispose the temporary env before setting it to + NULL later. This behavior has disappeared from the latest edition + of the standard, so I will eventually remove it from variables.c: + push_var_context. */ + push_context (var->name, subshell, temporary_env); + /* This has to be before the pop_context(), because the unwinding of + local variables may cause the restore of a local declaration of + OPTIND to force a getopts state reset. */ + add_unwind_protect (maybe_restore_getopt_state, gs); + add_unwind_protect (pop_context, (char *)NULL); + unwind_protect_int (line_number); + unwind_protect_int (line_number_for_err_trap); + unwind_protect_int (function_line_number); + unwind_protect_int (return_catch_flag); + unwind_protect_jmp_buf (return_catch); + add_unwind_protect (dispose_command, (char *)tc); + unwind_protect_pointer (this_shell_function); + unwind_protect_int (funcnest); + unwind_protect_int (loop_level); + } + else + push_context (var->name, subshell, temporary_env); /* don't unwind-protect for subshells */ + + temporary_env = (HASH_TABLE *)NULL; + + this_shell_function = var; + make_funcname_visible (1); + + debug_trap = TRAP_STRING(DEBUG_TRAP); + error_trap = TRAP_STRING(ERROR_TRAP); + return_trap = TRAP_STRING(RETURN_TRAP); + + /* The order of the unwind protects for debug_trap, error_trap and + return_trap is important here! unwind-protect commands are run + in reverse order of registration. If this causes problems, take + out the xfree unwind-protect calls and live with the small memory leak. */ + + /* function_trace_mode != 0 means that all functions inherit the DEBUG trap. + if the function has the trace attribute set, it inherits the DEBUG trap */ + if (debug_trap && ((trace_p (var) == 0) && function_trace_mode == 0)) + { + if (subshell == 0) + { + debug_trap = savestring (debug_trap); + add_unwind_protect (xfree, debug_trap); + add_unwind_protect (maybe_set_debug_trap, debug_trap); + } + restore_default_signal (DEBUG_TRAP); + } + + /* error_trace_mode != 0 means that functions inherit the ERR trap. */ + if (error_trap && error_trace_mode == 0) + { + if (subshell == 0) + { + error_trap = savestring (error_trap); + add_unwind_protect (xfree, error_trap); + add_unwind_protect (maybe_set_error_trap, error_trap); + } + restore_default_signal (ERROR_TRAP); + } + + /* Shell functions inherit the RETURN trap if function tracing is on + globally or on individually for this function. */ + if (return_trap && (signal_in_progress (DEBUG_TRAP) || ((trace_p (var) == 0) && function_trace_mode == 0))) + { + if (subshell == 0) + { + return_trap = savestring (return_trap); + add_unwind_protect (xfree, return_trap); + add_unwind_protect (maybe_set_return_trap, return_trap); + } + restore_default_signal (RETURN_TRAP); + } + + funcnest++; +#if defined (ARRAY_VARS) + /* This is quite similar to the code in shell.c and elsewhere. */ + shell_fn = find_function_def (this_shell_function->name); + sfile = shell_fn ? shell_fn->source_file : ""; + array_push ((ARRAY *)funcname_a, this_shell_function->name); + + array_push ((ARRAY *)bash_source_a, sfile); + t = itos (executing_line_number ()); + array_push ((ARRAY *)bash_lineno_a, t); + free (t); +#endif + +#if defined (ARRAY_VARS) + fa = (struct func_array_state *)xmalloc (sizeof (struct func_array_state)); + fa->source_a = (ARRAY *)bash_source_a; + fa->source_v = bash_source_v; + fa->lineno_a = (ARRAY *)bash_lineno_a; + fa->lineno_v = bash_lineno_v; + fa->funcname_a = (ARRAY *)funcname_a; + fa->funcname_v = funcname_v; + if (subshell == 0) + add_unwind_protect (restore_funcarray_state, fa); +#endif + + /* The temporary environment for a function is supposed to apply to + all commands executed within the function body. */ + + /* Initialize BASH_ARGC and BASH_ARGV before we blow away the positional + parameters */ + if (debugging_mode || shell_compatibility_level <= 44) + init_bash_argv (); + + remember_args (words->next, 1); + + /* Update BASH_ARGV and BASH_ARGC */ + if (debugging_mode) + { + push_args (words->next); + if (subshell == 0) + add_unwind_protect (pop_args, 0); + } + + /* Number of the line on which the function body starts. */ + line_number = function_line_number = tc->line; + +#if defined (JOB_CONTROL) + if (subshell) + stop_pipeline (async, (COMMAND *)NULL); +#endif + + if (shell_compatibility_level > 43) + loop_level = 0; + + fc = tc; + + from_return_trap = 0; + + return_catch_flag++; + return_val = setjmp_nosigs (return_catch); + + if (return_val) + { + result = return_catch_value; + /* Run the RETURN trap in the function's context. */ + save_current = currently_executing_command; + if (from_return_trap == 0) + run_return_trap (); + currently_executing_command = save_current; + } + else + { + /* Run the debug trap here so we can trap at the start of a function's + execution rather than the execution of the body's first command. */ + showing_function_line = 1; + save_current = currently_executing_command; + result = run_debug_trap (); +#if defined (DEBUGGER) + /* In debugging mode, if the DEBUG trap returns a non-zero status, we + skip the command. */ + if (debugging_mode == 0 || result == EXECUTION_SUCCESS) + { + showing_function_line = 0; + currently_executing_command = save_current; + result = execute_command_internal (fc, 0, NO_PIPE, NO_PIPE, fds_to_close); + + /* Run the RETURN trap in the function's context */ + save_current = currently_executing_command; + run_return_trap (); + currently_executing_command = save_current; + } +#else + result = execute_command_internal (fc, 0, NO_PIPE, NO_PIPE, fds_to_close); + + save_current = currently_executing_command; + run_return_trap (); + currently_executing_command = save_current; +#endif + showing_function_line = 0; + } + + /* If we have a local copy of OPTIND, note it in the saved getopts state. */ + gv = find_variable ("OPTIND"); + if (gv && gv->context == variable_context) + gs->gs_flags |= 1; + + if (subshell == 0) + run_unwind_frame ("function_calling"); +#if defined (ARRAY_VARS) + else + { + restore_funcarray_state (fa); + /* Restore BASH_ARGC and BASH_ARGV */ + if (debugging_mode) + pop_args (); + } +#endif + + if (variable_context == 0 || this_shell_function == 0) + { + make_funcname_visible (0); +#if defined (PROCESS_SUBSTITUTION) + unlink_fifo_list (); +#endif + } + + return (result); +} + +/* A convenience routine for use by other parts of the shell to execute + a particular shell function. */ +int +execute_shell_function (var, words) + SHELL_VAR *var; + WORD_LIST *words; +{ + int ret; + struct fd_bitmap *bitmap; + + bitmap = new_fd_bitmap (FD_BITMAP_DEFAULT_SIZE); + begin_unwind_frame ("execute-shell-function"); + add_unwind_protect (dispose_fd_bitmap, (char *)bitmap); + + ret = execute_function (var, words, 0, bitmap, 0, 0); + + dispose_fd_bitmap (bitmap); + discard_unwind_frame ("execute-shell-function"); + + return ret; +} + +/* Execute a shell builtin or function in a subshell environment. This + routine does not return; it only calls exit(). If BUILTIN is non-null, + it points to a function to call to execute a shell builtin; otherwise + VAR points at the body of a function to execute. WORDS is the arguments + to the command, REDIRECTS specifies redirections to perform before the + command is executed. */ +static void +execute_subshell_builtin_or_function (words, redirects, builtin, var, + pipe_in, pipe_out, async, fds_to_close, + flags) + WORD_LIST *words; + REDIRECT *redirects; + sh_builtin_func_t *builtin; + SHELL_VAR *var; + int pipe_in, pipe_out, async; + struct fd_bitmap *fds_to_close; + int flags; +{ + int result, r, funcvalue; +#if defined (JOB_CONTROL) + int jobs_hack; + + jobs_hack = (builtin == jobs_builtin) && + ((subshell_environment & SUBSHELL_ASYNC) == 0 || pipe_out != NO_PIPE); +#endif + + /* A subshell is neither a login shell nor interactive. */ + login_shell = interactive = 0; + if (builtin == eval_builtin) + evalnest = 0; + else if (builtin == source_builtin) + sourcenest = 0; + + if (async) + subshell_environment |= SUBSHELL_ASYNC; + if (pipe_in != NO_PIPE || pipe_out != NO_PIPE) + subshell_environment |= SUBSHELL_PIPE; + + maybe_make_export_env (); /* XXX - is this needed? */ + +#if defined (JOB_CONTROL) + /* Eradicate all traces of job control after we fork the subshell, so + all jobs begun by this subshell are in the same process group as + the shell itself. */ + + /* Allow the output of `jobs' to be piped. */ + if (jobs_hack) + kill_current_pipeline (); + else + without_job_control (); + + set_sigchld_handler (); +#else + without_job_control (); +#endif /* JOB_CONTROL */ + + set_sigint_handler (); + + if (fds_to_close) + close_fd_bitmap (fds_to_close); + + do_piping (pipe_in, pipe_out); + + if (do_redirections (redirects, RX_ACTIVE) != 0) + exit (EXECUTION_FAILURE); + + if (builtin) + { + /* Give builtins a place to jump back to on failure, + so we don't go back up to main(). */ + result = setjmp_nosigs (top_level); + + /* Give the return builtin a place to jump to when executed in a subshell + or pipeline */ + funcvalue = 0; + if (return_catch_flag && builtin == return_builtin) + funcvalue = setjmp_nosigs (return_catch); + + if (result == EXITPROG) + subshell_exit (last_command_exit_value); + else if (result) + subshell_exit (EXECUTION_FAILURE); + else if (funcvalue) + subshell_exit (return_catch_value); + else + { + r = execute_builtin (builtin, words, flags, 1); + fflush (stdout); + if (r == EX_USAGE) + r = EX_BADUSAGE; + /* XXX - experimental */ + else if (r == EX_DISKFALLBACK) + { + char *command_line; + + command_line = savestring (the_printed_command_except_trap ? the_printed_command_except_trap : ""); + r = execute_disk_command (words, (REDIRECT *)0, command_line, + -1, -1, async, (struct fd_bitmap *)0, flags|CMD_NO_FORK); + } + subshell_exit (r); + } + } + else + { + r = execute_function (var, words, flags, fds_to_close, async, 1); + fflush (stdout); + subshell_exit (r); + } +} + +/* Execute a builtin or function in the current shell context. If BUILTIN + is non-null, it is the builtin command to execute, otherwise VAR points + to the body of a function. WORDS are the command's arguments, REDIRECTS + are the redirections to perform. FDS_TO_CLOSE is the usual bitmap of + file descriptors to close. + + If BUILTIN is exec_builtin, the redirections specified in REDIRECTS are + not undone before this function returns. */ +static int +execute_builtin_or_function (words, builtin, var, redirects, + fds_to_close, flags) + WORD_LIST *words; + sh_builtin_func_t *builtin; + SHELL_VAR *var; + REDIRECT *redirects; + struct fd_bitmap *fds_to_close; + int flags; +{ + int result; + REDIRECT *saved_undo_list; +#if defined (PROCESS_SUBSTITUTION) + int ofifo, nfifo, osize; + void *ofifo_list; +#endif + +#if defined (PROCESS_SUBSTITUTION) + begin_unwind_frame ("saved_fifos"); + /* If we return, we longjmp and don't get a chance to restore the old + fifo list, so we add an unwind protect to free it */ + ofifo = num_fifos (); + ofifo_list = copy_fifo_list (&osize); + if (ofifo_list) + add_unwind_protect (xfree, ofifo_list); +#endif + + if (do_redirections (redirects, RX_ACTIVE|RX_UNDOABLE) != 0) + { + undo_partial_redirects (); + dispose_exec_redirects (); +#if defined (PROCESS_SUBSTITUTION) + free (ofifo_list); +#endif + return (EX_REDIRFAIL); /* was EXECUTION_FAILURE */ + } + + saved_undo_list = redirection_undo_list; + + /* Calling the "exec" builtin changes redirections forever. */ + if (builtin == exec_builtin) + { + dispose_redirects (saved_undo_list); + saved_undo_list = exec_redirection_undo_list; + exec_redirection_undo_list = (REDIRECT *)NULL; + } + else + dispose_exec_redirects (); + + if (saved_undo_list) + { + begin_unwind_frame ("saved-redirects"); + add_unwind_protect (cleanup_redirects, (char *)saved_undo_list); + } + + redirection_undo_list = (REDIRECT *)NULL; + + if (builtin) + result = execute_builtin (builtin, words, flags, 0); + else + result = execute_function (var, words, flags, fds_to_close, 0, 0); + + /* We do this before undoing the effects of any redirections. */ + fflush (stdout); + fpurge (stdout); + if (ferror (stdout)) + clearerr (stdout); + + /* If we are executing the `command' builtin, but this_shell_builtin is + set to `exec_builtin', we know that we have something like + `command exec [redirection]', since otherwise `exec' would have + overwritten the shell and we wouldn't get here. In this case, we + want to behave as if the `command' builtin had not been specified + and preserve the redirections. */ + if (builtin == command_builtin && this_shell_builtin == exec_builtin) + { + int discard; + + discard = 0; + if (saved_undo_list) + { + dispose_redirects (saved_undo_list); + discard = 1; + } + redirection_undo_list = exec_redirection_undo_list; + saved_undo_list = exec_redirection_undo_list = (REDIRECT *)NULL; + if (discard) + discard_unwind_frame ("saved-redirects"); + } + + if (saved_undo_list) + { + redirection_undo_list = saved_undo_list; + discard_unwind_frame ("saved-redirects"); + } + + undo_partial_redirects (); + +#if defined (PROCESS_SUBSTITUTION) + /* Close any FIFOs created by this builtin or function. */ + nfifo = num_fifos (); + if (nfifo > ofifo) + close_new_fifos (ofifo_list, osize); + if (ofifo_list) + free (ofifo_list); + discard_unwind_frame ("saved_fifos"); +#endif + + return (result); +} + +void +setup_async_signals () +{ +#if defined (__BEOS__) + set_signal_handler (SIGHUP, SIG_IGN); /* they want csh-like behavior */ +#endif + +#if defined (JOB_CONTROL) + if (job_control == 0) +#endif + { + /* Make sure we get the original signal dispositions now so we don't + confuse the trap builtin later if the subshell tries to use it to + reset SIGINT/SIGQUIT. Don't call set_signal_ignored; that sets + the value of original_signals to SIG_IGN. Posix interpretation 751. */ + get_original_signal (SIGINT); + set_signal_handler (SIGINT, SIG_IGN); + + get_original_signal (SIGQUIT); + set_signal_handler (SIGQUIT, SIG_IGN); + } +} + +/* Execute a simple command that is hopefully defined in a disk file + somewhere. + + 1) fork () + 2) connect pipes + 3) look up the command + 4) do redirections + 5) execve () + 6) If the execve failed, see if the file has executable mode set. + If so, and it isn't a directory, then execute its contents as + a shell script. + + Note that the filename hashing stuff has to take place up here, + in the parent. This is probably why the Bourne style shells + don't handle it, since that would require them to go through + this gnarly hair, for no good reason. + + NOTE: callers expect this to fork or exit(). */ + +/* Name of a shell function to call when a command name is not found. */ +#ifndef NOTFOUND_HOOK +# define NOTFOUND_HOOK "command_not_found_handle" +#endif + +static int +execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, + async, fds_to_close, cmdflags) + WORD_LIST *words; + REDIRECT *redirects; + char *command_line; + int pipe_in, pipe_out, async; + struct fd_bitmap *fds_to_close; + int cmdflags; +{ + char *pathname, *command, **args, *p; + int nofork, stdpath, result, fork_flags; + pid_t pid; + SHELL_VAR *hookf; + WORD_LIST *wl; + + stdpath = (cmdflags & CMD_STDPATH); /* use command -p path */ + nofork = (cmdflags & CMD_NO_FORK); /* Don't fork, just exec, if no pipes */ + pathname = words->word->word; + + p = 0; + result = EXECUTION_SUCCESS; +#if defined (RESTRICTED_SHELL) + command = (char *)NULL; + if (restricted && mbschr (pathname, '/')) + { + internal_error (_("%s: restricted: cannot specify `/' in command names"), + pathname); + result = last_command_exit_value = EXECUTION_FAILURE; + + /* If we're not going to fork below, we must already be in a child + process or a context in which it's safe to call exit(2). */ + if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE) + exit (last_command_exit_value); + else + goto parent_return; + } +#endif /* RESTRICTED_SHELL */ + + command = search_for_command (pathname, CMDSRCH_HASH|(stdpath ? CMDSRCH_STDPATH : 0)); + QUIT; + + if (command) + { + /* If we're optimizing out the fork (implicit `exec'), decrement the + shell level like `exec' would do. */ +#if 0 /* TAG: bash-5.2 psmith 10/11/2020 */ + if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE && (subshell_environment & SUBSHELL_PIPE) == 0) +#else + if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE) +#endif + adjust_shell_level (-1); + + maybe_make_export_env (); + put_command_name_into_env (command); + } + + /* We have to make the child before we check for the non-existence + of COMMAND, since we want the error messages to be redirected. */ + /* If we can get away without forking and there are no pipes to deal with, + don't bother to fork, just directly exec the command. */ + if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE) + pid = 0; + else + { + fork_flags = async ? FORK_ASYNC : 0; + pid = make_child (p = savestring (command_line), fork_flags); + } + + if (pid == 0) + { + int old_interactive; + + reset_terminating_signals (); /* XXX */ + /* Cancel traps, in trap.c. */ + restore_original_signals (); + +#if defined (JOB_CONTROL) + FREE (p); +#endif + + /* restore_original_signals may have undone the work done + by make_child to ensure that SIGINT and SIGQUIT are ignored + in asynchronous children. */ + if (async) + { + if ((cmdflags & CMD_STDIN_REDIR) && + pipe_in == NO_PIPE && + (stdin_redirects (redirects) == 0)) + async_redirect_stdin (); + setup_async_signals (); + } + + /* This functionality is now provided by close-on-exec of the + file descriptors manipulated by redirection and piping. + Some file descriptors still need to be closed in all children + because of the way bash does pipes; fds_to_close is a + bitmap of all such file descriptors. */ + if (fds_to_close) + close_fd_bitmap (fds_to_close); + + do_piping (pipe_in, pipe_out); + + old_interactive = interactive; + if (async) + interactive = 0; + + subshell_environment |= SUBSHELL_FORK; /* XXX - was just = */ + +#if defined (PROCESS_SUBSTITUTION) && !defined (HAVE_DEV_FD) + clear_fifo_list (); /* XXX - we haven't created any FIFOs */ +#endif + + if (redirects && (do_redirections (redirects, RX_ACTIVE) != 0)) + { +#if defined (PROCESS_SUBSTITUTION) + /* Try to remove named pipes that may have been created as the + result of redirections. */ + unlink_fifo_list (); +#endif /* PROCESS_SUBSTITUTION */ + exit (EXECUTION_FAILURE); + } + + if (async) + interactive = old_interactive; + + if (command == 0) + { + hookf = find_function (NOTFOUND_HOOK); + if (hookf == 0) + { + /* Make sure filenames are displayed using printable characters */ + pathname = printable_filename (pathname, 0); + internal_error (_("%s: command not found"), pathname); + exit (EX_NOTFOUND); /* Posix.2 says the exit status is 127 */ + } + + /* We don't want to manage process groups for processes we start + from here, so we turn off job control and don't attempt to + manipulate the terminal's process group. */ + without_job_control (); + +#if defined (JOB_CONTROL) + set_sigchld_handler (); +#endif + + wl = make_word_list (make_word (NOTFOUND_HOOK), words); + exit (execute_shell_function (hookf, wl)); + } + + /* Execve expects the command name to be in args[0]. So we + leave it there, in the same format that the user used to + type it in. */ + args = strvec_from_word_list (words, 0, 0, (int *)NULL); + exit (shell_execve (command, args, export_env)); + } + else + { +parent_return: + QUIT; + + /* Make sure that the pipes are closed in the parent. */ + close_pipes (pipe_in, pipe_out); +#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD) +#if 0 + if (variable_context == 0) + unlink_fifo_list (); +#endif +#endif + FREE (command); + return (result); + } +} + +/* CPP defines to decide whether a particular index into the #! line + corresponds to a valid interpreter name or argument character, or + whitespace. The MSDOS define is to allow \r to be treated the same + as \n. */ + +#if !defined (MSDOS) +# define STRINGCHAR(ind) \ + (ind < sample_len && !whitespace (sample[ind]) && sample[ind] != '\n') +# define WHITECHAR(ind) \ + (ind < sample_len && whitespace (sample[ind])) +#else /* MSDOS */ +# define STRINGCHAR(ind) \ + (ind < sample_len && !whitespace (sample[ind]) && sample[ind] != '\n' && sample[ind] != '\r') +# define WHITECHAR(ind) \ + (ind < sample_len && whitespace (sample[ind])) +#endif /* MSDOS */ + +static char * +getinterp (sample, sample_len, endp) + char *sample; + int sample_len, *endp; +{ + register int i; + char *execname; + int start; + + /* Find the name of the interpreter to exec. */ + for (i = 2; i < sample_len && whitespace (sample[i]); i++) + ; + + for (start = i; STRINGCHAR(i); i++) + ; + + execname = substring (sample, start, i); + + if (endp) + *endp = i; + return execname; +} + +#if !defined (HAVE_HASH_BANG_EXEC) +/* If the operating system on which we're running does not handle + the #! executable format, then help out. SAMPLE is the text read + from the file, SAMPLE_LEN characters. COMMAND is the name of + the script; it and ARGS, the arguments given by the user, will + become arguments to the specified interpreter. ENV is the environment + to pass to the interpreter. + + The word immediately following the #! is the interpreter to execute. + A single argument to the interpreter is allowed. */ + +static int +execute_shell_script (sample, sample_len, command, args, env) + char *sample; + int sample_len; + char *command; + char **args, **env; +{ + char *execname, *firstarg; + int i, start, size_increment, larry; + + /* Find the name of the interpreter to exec. */ + execname = getinterp (sample, sample_len, &i); + size_increment = 1; + + /* Now the argument, if any. */ + for (firstarg = (char *)NULL, start = i; WHITECHAR(i); i++) + ; + + /* If there is more text on the line, then it is an argument for the + interpreter. */ + + if (STRINGCHAR(i)) + { + for (start = i; STRINGCHAR(i); i++) + ; + firstarg = substring ((char *)sample, start, i); + size_increment = 2; + } + + larry = strvec_len (args) + size_increment; + args = strvec_resize (args, larry + 1); + + for (i = larry - 1; i; i--) + args[i] = args[i - size_increment]; + + args[0] = execname; + if (firstarg) + { + args[1] = firstarg; + args[2] = command; + } + else + args[1] = command; + + args[larry] = (char *)NULL; + + return (shell_execve (execname, args, env)); +} +#undef STRINGCHAR +#undef WHITECHAR + +#endif /* !HAVE_HASH_BANG_EXEC */ + +static void +initialize_subshell () +{ +#if defined (ALIAS) + /* Forget about any aliases that we knew of. We are in a subshell. */ + delete_all_aliases (); +#endif /* ALIAS */ + +#if defined (HISTORY) + /* Forget about the history lines we have read. This is a non-interactive + subshell. */ + history_lines_this_session = 0; +#endif + + /* Forget about the way job control was working. We are in a subshell. */ + without_job_control (); + +#if defined (JOB_CONTROL) + set_sigchld_handler (); + init_job_stats (); +#endif /* JOB_CONTROL */ + + /* Reset the values of the shell flags and options. */ + reset_shell_flags (); + reset_shell_options (); + reset_shopt_options (); + + /* Zero out builtin_env, since this could be a shell script run from a + sourced file with a temporary environment supplied to the `source/.' + builtin. Such variables are not supposed to be exported (empirical + testing with sh and ksh). Just throw it away; don't worry about a + memory leak. */ + if (vc_isbltnenv (shell_variables)) + shell_variables = shell_variables->down; + + clear_unwind_protect_list (0); + /* XXX -- are there other things we should be resetting here? */ + parse_and_execute_level = 0; /* nothing left to restore it */ + + /* We're no longer inside a shell function. */ + variable_context = return_catch_flag = funcnest = evalnest = sourcenest = 0; + + executing_list = 0; /* XXX */ + + /* If we're not interactive, close the file descriptor from which we're + reading the current shell script. */ + if (interactive_shell == 0) + unset_bash_input (0); +} + +#if defined (HAVE_SETOSTYPE) && defined (_POSIX_SOURCE) +# define SETOSTYPE(x) __setostype(x) +#else +# define SETOSTYPE(x) +#endif + +#define HASH_BANG_BUFSIZ 128 + +#define READ_SAMPLE_BUF(file, buf, len) \ + do \ + { \ + fd = open(file, O_RDONLY); \ + if (fd >= 0) \ + { \ + len = read (fd, buf, HASH_BANG_BUFSIZ); \ + close (fd); \ + } \ + else \ + len = -1; \ + } \ + while (0) + +/* Call execve (), handling interpreting shell scripts, and handling + exec failures. */ +int +shell_execve (command, args, env) + char *command; + char **args, **env; +{ + int larray, i, fd; + char sample[HASH_BANG_BUFSIZ]; + int sample_len; + + SETOSTYPE (0); /* Some systems use for USG/POSIX semantics */ + execve (command, args, env); + i = errno; /* error from execve() */ + CHECK_TERMSIG; + SETOSTYPE (1); + + /* If we get to this point, then start checking out the file. + Maybe it is something we can hack ourselves. */ + if (i != ENOEXEC) + { + /* make sure this is set correctly for file_error/report_error */ + last_command_exit_value = (i == ENOENT) ? EX_NOTFOUND : EX_NOEXEC; /* XXX Posix.2 says that exit status is 126 */ + if (file_isdir (command)) +#if defined (EISDIR) + internal_error (_("%s: %s"), command, strerror (EISDIR)); +#else + internal_error (_("%s: is a directory"), command); +#endif + else if (executable_file (command) == 0) + { + errno = i; + file_error (command); + } + /* errors not involving the path argument to execve. */ + else if (i == E2BIG || i == ENOMEM) + { + errno = i; + file_error (command); + } + else + { + /* The file has the execute bits set, but the kernel refuses to + run it for some reason. See why. */ +#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H) + int fd = open (command, O_RDONLY); + + if (fd >= 0) + sample_len = read (fd, sample, sizeof (sample)); + else + sample_len = -1; +#endif +#if defined (HAVE_HASH_BANG_EXEC) + READ_SAMPLE_BUF (command, sample, sample_len); + if (sample_len > 0) + sample[sample_len - 1] = '\0'; + if (sample_len > 2 && sample[0] == '#' && sample[1] == '!') + { + char *interp; + int ilen; + + close (fd); + interp = getinterp (sample, sample_len, (int *)NULL); + ilen = strlen (interp); + errno = i; + if (interp[ilen - 1] == '\r') + { + interp = xrealloc (interp, ilen + 2); + interp[ilen - 1] = '^'; + interp[ilen] = 'M'; + interp[ilen + 1] = '\0'; + } + sys_error (_("%s: %s: bad interpreter"), command, interp ? interp : ""); + FREE (interp); + return (EX_NOEXEC); + } +#endif +#if defined (HAVE_ELF_H) + if (i == ENOENT + && sample_len > EI_NIDENT + && memcmp (sample, ELFMAG, SELFMAG) == 0) + { + off_t offset = -1; + int dynamic_nobits = 0; + + /* It is an ELF file. Now determine whether it is dynamically + linked and if yes, get the offset of the interpreter + string. */ + if (sample[EI_CLASS] == ELFCLASS32 + && sample_len > sizeof (Elf32_Ehdr)) + { + Elf32_Ehdr ehdr; + Elf32_Phdr *phdr; + Elf32_Shdr *shdr; + Elf32_Half nphdr, nshdr; + + /* We have to copy the data since the sample buffer + might not be aligned correctly to be accessed as + an Elf32_Ehdr struct. */ + memcpy (&ehdr, sample, sizeof (Elf32_Ehdr)); + + nshdr = ehdr.e_shnum; + shdr = (Elf32_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize); + + if (shdr != NULL) + { +#ifdef HAVE_PREAD + sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize, + ehdr.e_shoff); +#else + if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1) + sample_len = read (fd, shdr, + nshdr * ehdr.e_shentsize); + else + sample_len = -1; +#endif + if (sample_len == nshdr * ehdr.e_shentsize) + { + char *strings = (char *) malloc (shdr[ehdr.e_shstrndx].sh_size); + if (strings != NULL) + { +#ifdef HAVE_PREAD + sample_len = pread (fd, strings, + shdr[ehdr.e_shstrndx].sh_size, + shdr[ehdr.e_shstrndx].sh_offset); +#else + if (lseek (fd, shdr[ehdr.e_shstrndx].sh_offset, + SEEK_SET) != -1) + sample_len = read (fd, strings, + shdr[ehdr.e_shstrndx].sh_size); + else + sample_len = -1; +#endif + if (sample_len == shdr[ehdr.e_shstrndx].sh_size) + while (nshdr-- > 0) + if (strcmp (strings + shdr[nshdr].sh_name, + ".interp") == 0 && + shdr[nshdr].sh_type == SHT_NOBITS) + { + dynamic_nobits++; + break; + } + free (strings); + } + } + free (shdr); + } + + nphdr = ehdr.e_phnum; + phdr = (Elf32_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize); + if (phdr != NULL) + { +#ifdef HAVE_PREAD + sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize, + ehdr.e_phoff); +#else + if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) + sample_len = read (fd, phdr, + nphdr * ehdr.e_phentsize); + else + sample_len = -1; +#endif + if (sample_len == nphdr * ehdr.e_phentsize) + while (nphdr-- > 0) + if (phdr[nphdr].p_type == PT_INTERP) + { + offset = phdr[nphdr].p_offset; + break; + } + free (phdr); + } + } + else if (sample[EI_CLASS] == ELFCLASS64 + && sample_len > sizeof (Elf64_Ehdr)) + { + Elf64_Ehdr ehdr; + Elf64_Phdr *phdr; + Elf64_Shdr *shdr; + Elf32_Half nphdr, nshdr; + + /* We have to copy the data since the sample buffer + might not be aligned correctly to be accessed as + an Elf64_Ehdr struct. */ + memcpy (&ehdr, sample, sizeof (Elf64_Ehdr)); + + nshdr = ehdr.e_shnum; + shdr = (Elf64_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize); + if (shdr != NULL) + { +#ifdef HAVE_PREAD + sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize, + ehdr.e_shoff); +#else + if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1) + sample_len = read (fd, shdr, + nshdr * ehdr.e_shentsize); + else + sample_len = -1; +#endif + if (sample_len == nshdr * ehdr.e_shentsize) + { + char *strings = (char *) malloc (shdr[ehdr.e_shstrndx].sh_size); + if (strings != NULL) + { +#ifdef HAVE_PREAD + sample_len = pread (fd, strings, + shdr[ehdr.e_shstrndx].sh_size, + shdr[ehdr.e_shstrndx].sh_offset); +#else + if (lseek (fd, shdr[ehdr.e_shstrndx].sh_offset, + SEEK_SET) != -1) + sample_len = read (fd, strings, + shdr[ehdr.e_shstrndx].sh_size); + else + sample_len = -1; +#endif + if (sample_len == shdr[ehdr.e_shstrndx].sh_size) + while (nshdr-- > 0) + if (strcmp (strings + shdr[nshdr].sh_name, + ".interp") == 0 && + shdr[nshdr].sh_type == SHT_NOBITS) + { + dynamic_nobits++; + break; + } + free (strings); + } + } + free (shdr); + } + + nphdr = ehdr.e_phnum; + phdr = (Elf64_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize); + if (phdr != NULL) + { +#ifdef HAVE_PREAD + sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize, + ehdr.e_phoff); +#else + if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) + sample_len = read (fd, phdr, + nphdr * ehdr.e_phentsize); + else + sample_len = -1; +#endif + if (sample_len == nphdr * ehdr.e_phentsize) + while (nphdr-- > 0) + if (phdr[nphdr].p_type == PT_INTERP) + { + offset = phdr[nphdr].p_offset; + break; + } + free (phdr); + } + } + + if (offset != -1) + { + ssize_t maxlen = 0; + ssize_t actlen = 0; + char *interp = NULL; + + do + { + if (actlen == maxlen) + { + char *newinterp = realloc (interp, maxlen += 200); + if (newinterp == NULL) + { + actlen = 0; + break; + } + interp = newinterp; + +#ifdef HAVE_PREAD + actlen = pread (fd, interp, maxlen, offset); +#else + if (lseek (fd, offset, SEEK_SET) != -1) + actlen = read (fd, interp, maxlen); + else + actlen = -1; +#endif + } + } + while (actlen > 0 && memchr (interp, '\0', actlen) == NULL); + + if (actlen > 0) + { + close (fd); + errno = i; + if (dynamic_nobits > 0) + { + sys_error ("%s: bad ELF interpreter", command); + } + else + { + sys_error ("%s: %s: bad ELF interpreter", command, + interp); + } + free (interp); + return (EX_NOEXEC); + } + + free (interp); + } + } +#endif +#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H) + if (fd >= 0) + close (fd); +#endif + + errno = i; + file_error (command); + } + return (last_command_exit_value); + } + + /* This file is executable. + If it begins with #!, then help out people with losing operating + systems. Otherwise, check to see if it is a binary file by seeing + if the contents of the first line (or up to 80 characters) are in the + ASCII set. If it's a text file, execute the contents as shell commands, + otherwise return 126 (EX_BINARY_FILE). */ + READ_SAMPLE_BUF (command, sample, sample_len); + + if (sample_len == 0) + return (EXECUTION_SUCCESS); + + /* Is this supposed to be an executable script? + If so, the format of the line is "#! interpreter [argument]". + A single argument is allowed. The BSD kernel restricts + the length of the entire line to 32 characters (32 bytes + being the size of the BSD exec header), but we allow 80 + characters. */ + if (sample_len > 0) + { +#if !defined (HAVE_HASH_BANG_EXEC) + if (sample_len > 2 && sample[0] == '#' && sample[1] == '!') + return (execute_shell_script (sample, sample_len, command, args, env)); + else +#endif + if (check_binary_file (sample, sample_len)) + { + internal_error (_("%s: cannot execute binary file: %s"), command, strerror (i)); + errno = i; + return (EX_BINARY_FILE); + } + } + + /* We have committed to attempting to execute the contents of this file + as shell commands. */ + + reset_parser (); + initialize_subshell (); + + set_sigint_handler (); + + /* Insert the name of this shell into the argument list. */ + larray = strvec_len (args) + 1; + args = strvec_resize (args, larray + 1); + + for (i = larray - 1; i; i--) + args[i] = args[i - 1]; + + args[0] = shell_name; + args[1] = command; + args[larray] = (char *)NULL; + + if (args[0][0] == '-') + args[0]++; + +#if defined (RESTRICTED_SHELL) + if (restricted) + change_flag ('r', FLAG_OFF); +#endif + + if (subshell_argv) + { + /* Can't free subshell_argv[0]; that is shell_name. */ + for (i = 1; i < subshell_argc; i++) + free (subshell_argv[i]); + free (subshell_argv); + } + + dispose_command (currently_executing_command); /* XXX */ + currently_executing_command = (COMMAND *)NULL; + + subshell_argc = larray; + subshell_argv = args; + subshell_envp = env; + + unbind_args (); /* remove the positional parameters */ + +#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD) + clear_fifo_list (); /* pipe fds are what they are now */ +#endif + + sh_longjmp (subshell_top_level, 1); + /*NOTREACHED*/ +} + +static int +execute_intern_function (name, funcdef) + WORD_DESC *name; + FUNCTION_DEF *funcdef; +{ + SHELL_VAR *var; + char *t; + + if (check_identifier (name, posixly_correct) == 0) + { + if (posixly_correct && interactive_shell == 0) + { + last_command_exit_value = EX_BADUSAGE; + jump_to_top_level (ERREXIT); + } + return (EXECUTION_FAILURE); + } + + if (strchr (name->word, CTLESC)) /* WHY? */ + { + t = dequote_escapes (name->word); + free (name->word); + name->word = t; + } + + /* Posix interpretation 383 */ + if (posixly_correct && find_special_builtin (name->word)) + { + internal_error (_("`%s': is a special builtin"), name->word); + last_command_exit_value = EX_BADUSAGE; + jump_to_top_level (interactive_shell ? DISCARD : ERREXIT); + } + + var = find_function (name->word); + if (var && (readonly_p (var) || noassign_p (var))) + { + if (readonly_p (var)) + internal_error (_("%s: readonly function"), var->name); + return (EXECUTION_FAILURE); + } + +#if defined (DEBUGGER) + bind_function_def (name->word, funcdef, 1); +#endif + + bind_function (name->word, funcdef->command); + return (EXECUTION_SUCCESS); +} + +#if defined (INCLUDE_UNUSED) +#if defined (PROCESS_SUBSTITUTION) +void +close_all_files () +{ + register int i, fd_table_size; + + fd_table_size = getdtablesize (); + if (fd_table_size > 256) /* clamp to a reasonable value */ + fd_table_size = 256; + + for (i = 3; i < fd_table_size; i++) + close (i); +} +#endif /* PROCESS_SUBSTITUTION */ +#endif + +static void +close_pipes (in, out) + int in, out; +{ + if (in >= 0) + close (in); + if (out >= 0) + close (out); +} + +static void +dup_error (oldd, newd) + int oldd, newd; +{ + sys_error (_("cannot duplicate fd %d to fd %d"), oldd, newd); +} + +/* Redirect input and output to be from and to the specified pipes. + NO_PIPE and REDIRECT_BOTH are handled correctly. */ +static void +do_piping (pipe_in, pipe_out) + int pipe_in, pipe_out; +{ + if (pipe_in != NO_PIPE) + { + if (dup2 (pipe_in, 0) < 0) + dup_error (pipe_in, 0); + if (pipe_in > 0) + close (pipe_in); +#ifdef __CYGWIN__ + /* Let stdio know the fd may have changed from text to binary mode. */ + freopen (NULL, "r", stdin); +#endif /* __CYGWIN__ */ + } + if (pipe_out != NO_PIPE) + { + if (pipe_out != REDIRECT_BOTH) + { + if (dup2 (pipe_out, 1) < 0) + dup_error (pipe_out, 1); + if (pipe_out == 0 || pipe_out > 1) + close (pipe_out); + } + else + { + if (dup2 (1, 2) < 0) + dup_error (1, 2); + } +#ifdef __CYGWIN__ + /* Let stdio know the fd may have changed from text to binary mode, and + make sure to preserve stdout line buffering. */ + freopen (NULL, "w", stdout); + sh_setlinebuf (stdout); +#endif /* __CYGWIN__ */ + } +} diff --git a/bash-5.1/execute_cmd.h b/bash-5.1/execute_cmd.h new file mode 100644 index 0000000..9c7fd1c --- /dev/null +++ b/bash-5.1/execute_cmd.h @@ -0,0 +1,126 @@ +/* execute_cmd.h - functions from execute_cmd.c. */ + +/* Copyright (C) 1993-2017 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_EXECUTE_CMD_H_) +#define _EXECUTE_CMD_H_ + +#include "stdc.h" +#include "variables.h" +#include "command.h" + + +#if defined (ARRAY_VARS) +struct func_array_state + { + ARRAY *funcname_a; + SHELL_VAR *funcname_v; + ARRAY *source_a; + SHELL_VAR *source_v; + ARRAY *lineno_a; + SHELL_VAR *lineno_v; + }; +#endif + +/* Placeholder for later expansion to include more execution state */ +/* XXX - watch out for pid_t */ +struct execstate + { + pid_t pid; + int subshell_env; + }; + + +/* Variables declared in execute_cmd.c, used by many other files */ +extern int return_catch_flag; +extern int return_catch_value; +extern volatile int last_command_exit_value; +extern int last_command_exit_signal; +extern int builtin_ignoring_errexit; +extern int executing_builtin; +extern int executing_list; +extern int comsub_ignore_return; +extern int subshell_level; +extern int match_ignore_case; +extern int executing_command_builtin; +extern int funcnest, funcnest_max; +extern int evalnest, evalnest_max; +extern int sourcenest, sourcenest_max; +extern int stdin_redir; +extern int line_number_for_err_trap; + +extern char *the_printed_command_except_trap; + +extern char *this_command_name; +extern SHELL_VAR *this_shell_function; + +/* Functions declared in execute_cmd.c, used by many other files */ + +extern struct fd_bitmap *new_fd_bitmap PARAMS((int)); +extern void dispose_fd_bitmap PARAMS((struct fd_bitmap *)); +extern void close_fd_bitmap PARAMS((struct fd_bitmap *)); +extern int executing_line_number PARAMS((void)); +extern int execute_command PARAMS((COMMAND *)); +extern int execute_command_internal PARAMS((COMMAND *, int, int, int, struct fd_bitmap *)); +extern int shell_execve PARAMS((char *, char **, char **)); +extern void setup_async_signals PARAMS((void)); +extern void async_redirect_stdin PARAMS((void)); + +extern void undo_partial_redirects PARAMS((void)); +extern void dispose_partial_redirects PARAMS((void)); +extern void dispose_exec_redirects PARAMS((void)); + +extern int execute_shell_function PARAMS((SHELL_VAR *, WORD_LIST *)); + +extern struct coproc *getcoprocbypid PARAMS((pid_t)); +extern struct coproc *getcoprocbyname PARAMS((const char *)); + +extern void coproc_init PARAMS((struct coproc *)); +extern struct coproc *coproc_alloc PARAMS((char *, pid_t)); +extern void coproc_dispose PARAMS((struct coproc *)); +extern void coproc_flush PARAMS((void)); +extern void coproc_close PARAMS((struct coproc *)); +extern void coproc_closeall PARAMS((void)); +extern void coproc_reap PARAMS((void)); +extern pid_t coproc_active PARAMS((void)); + +extern void coproc_rclose PARAMS((struct coproc *, int)); +extern void coproc_wclose PARAMS((struct coproc *, int)); +extern void coproc_fdclose PARAMS((struct coproc *, int)); + +extern void coproc_checkfd PARAMS((struct coproc *, int)); +extern void coproc_fdchk PARAMS((int)); + +extern void coproc_pidchk PARAMS((pid_t, int)); + +extern void coproc_fdsave PARAMS((struct coproc *)); +extern void coproc_fdrestore PARAMS((struct coproc *)); + +extern void coproc_setvars PARAMS((struct coproc *)); +extern void coproc_unsetvars PARAMS((struct coproc *)); + +#if defined (PROCESS_SUBSTITUTION) +extern void close_all_files PARAMS((void)); +#endif + +#if defined (ARRAY_VARS) +extern void restore_funcarray_state PARAMS((struct func_array_state *)); +#endif + +#endif /* _EXECUTE_CMD_H_ */ diff --git a/bash-5.1/expr.c b/bash-5.1/expr.c new file mode 100644 index 0000000..bbff95e --- /dev/null +++ b/bash-5.1/expr.c @@ -0,0 +1,1671 @@ +/* expr.c -- arithmetic expression evaluation. */ + +/* Copyright (C) 1990-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* + All arithmetic is done as intmax_t 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. + + "id++", "id--" [post-increment and post-decrement] + "-", "+" [(unary operators)] + "++id", "--id" [pre-increment and pre-decrement] + "!", "~" + "**" [(exponentiation)] + "*", "/", "%" + "+", "-" + "<<", ">>" + "<=", ">=", "<", ">" + "==", "!=" + "&" + "^" + "|" + "&&" + "||" + "expr ? expr : expr" + "=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", "&=", "^=", "|=" + , [comma] + + (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 when using `let'. When using + the $[] or $(( )) forms, the text between the `[' and `]' or `((' and `))' + is treated as if in double quotes.) + + 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. + + Chet Ramey + chet@po.cwru.edu +*/ + +#include "config.h" + +#include +#include "bashansi.h" + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "chartypes.h" +#include "bashintl.h" + +#include "shell.h" +#include "arrayfunc.h" +#include "execute_cmd.h" +#include "flags.h" +#include "subst.h" +#include "typemax.h" /* INTMAX_MAX, INTMAX_MIN */ + +/* Because of the $((...)) construct, expressions may include newlines. + Here is a macro which accepts newlines, tabs and spaces as whitespace. */ +#define cr_whitespace(c) (whitespace(c) || ((c) == '\n')) + +/* Size be which the expression stack grows when necessary. */ +#define EXPR_STACK_GROW_SIZE 10 + +/* Maximum amount of recursion allowed. This prevents a non-integer + variable such as "num=num+2" from infinitely adding to itself when + "let num=num+2" is given. */ +#define MAX_EXPR_RECURSION_LEVEL 1024 + +/* The Tokens. Singing "The Lion Sleeps Tonight". */ + +#define EQEQ 1 /* "==" */ +#define NEQ 2 /* "!=" */ +#define LEQ 3 /* "<=" */ +#define GEQ 4 /* ">=" */ +#define STR 5 /* string */ +#define NUM 6 /* number */ +#define LAND 7 /* "&&" Logical AND */ +#define LOR 8 /* "||" Logical OR */ +#define LSH 9 /* "<<" Left SHift */ +#define RSH 10 /* ">>" Right SHift */ +#define OP_ASSIGN 11 /* op= expassign as in Posix.2 */ +#define COND 12 /* exp1 ? exp2 : exp3 */ +#define POWER 13 /* exp1**exp2 */ +#define PREINC 14 /* ++var */ +#define PREDEC 15 /* --var */ +#define POSTINC 16 /* var++ */ +#define POSTDEC 17 /* var-- */ +#define EQ '=' +#define GT '>' +#define LT '<' +#define PLUS '+' +#define MINUS '-' +#define MUL '*' +#define DIV '/' +#define MOD '%' +#define NOT '!' +#define LPAR '(' +#define RPAR ')' +#define BAND '&' /* Bitwise AND */ +#define BOR '|' /* Bitwise OR. */ +#define BXOR '^' /* Bitwise eXclusive OR. */ +#define BNOT '~' /* Bitwise NOT; Two's complement. */ +#define QUES '?' +#define COL ':' +#define COMMA ',' + +/* This should be the function corresponding to the operator with the + highest precedence. */ +#define EXP_HIGHEST expcomma + +#ifndef MAX_INT_LEN +# define MAX_INT_LEN 32 +#endif + +struct lvalue +{ + char *tokstr; /* possibly-rewritten lvalue if not NULL */ + intmax_t tokval; /* expression evaluated value */ + SHELL_VAR *tokvar; /* variable described by array or var reference */ + intmax_t ind; /* array index if not -1 */ +}; + +/* A structure defining a single expression context. */ +typedef struct { + int curtok, lasttok; + char *expression, *tp, *lasttp; + intmax_t tokval; + char *tokstr; + int noeval; + struct lvalue lval; +} EXPR_CONTEXT; + +static char *expression; /* The current expression */ +static char *tp; /* token lexical position */ +static char *lasttp; /* pointer to last token position */ +static int curtok; /* the current token */ +static int lasttok; /* the previous token */ +static int assigntok; /* the OP in OP= */ +static char *tokstr; /* current token string */ +static intmax_t tokval; /* current token value */ +static int noeval; /* set to 1 if no assignment to be done */ +static procenv_t evalbuf; + +/* set to 1 if the expression has already been run through word expansion */ +static int already_expanded; + +static struct lvalue curlval = {0, 0, 0, -1}; +static struct lvalue lastlval = {0, 0, 0, -1}; + +static int _is_arithop PARAMS((int)); +static void readtok PARAMS((void)); /* lexical analyzer */ + +static void init_lvalue PARAMS((struct lvalue *)); +static struct lvalue *alloc_lvalue PARAMS((void)); +static void free_lvalue PARAMS((struct lvalue *)); + +static intmax_t expr_streval PARAMS((char *, int, struct lvalue *)); +static intmax_t strlong PARAMS((char *)); +static void evalerror PARAMS((const char *)); + +static void pushexp PARAMS((void)); +static void popexp PARAMS((void)); +static void expr_unwind PARAMS((void)); +static void expr_bind_variable PARAMS((char *, char *)); +#if defined (ARRAY_VARS) +static void expr_bind_array_element PARAMS((char *, arrayind_t, char *)); +#endif + +static intmax_t subexpr PARAMS((char *)); + +static intmax_t expcomma PARAMS((void)); +static intmax_t expassign PARAMS((void)); +static intmax_t expcond PARAMS((void)); +static intmax_t explor PARAMS((void)); +static intmax_t expland PARAMS((void)); +static intmax_t expbor PARAMS((void)); +static intmax_t expbxor PARAMS((void)); +static intmax_t expband PARAMS((void)); +static intmax_t exp5 PARAMS((void)); +static intmax_t exp4 PARAMS((void)); +static intmax_t expshift PARAMS((void)); +static intmax_t exp3 PARAMS((void)); +static intmax_t expmuldiv PARAMS((void)); +static intmax_t exppower PARAMS((void)); +static intmax_t exp1 PARAMS((void)); +static intmax_t exp0 PARAMS((void)); + +/* Global var which contains the stack of expression contexts. */ +static EXPR_CONTEXT **expr_stack; +static int expr_depth; /* Location in the stack. */ +static int expr_stack_size; /* Number of slots already allocated. */ + +#if defined (ARRAY_VARS) +extern const char * const bash_badsub_errmsg; +#endif + +#define SAVETOK(X) \ + do { \ + (X)->curtok = curtok; \ + (X)->lasttok = lasttok; \ + (X)->tp = tp; \ + (X)->lasttp = lasttp; \ + (X)->tokval = tokval; \ + (X)->tokstr = tokstr; \ + (X)->noeval = noeval; \ + (X)->lval = curlval; \ + } while (0) + +#define RESTORETOK(X) \ + do { \ + curtok = (X)->curtok; \ + lasttok = (X)->lasttok; \ + tp = (X)->tp; \ + lasttp = (X)->lasttp; \ + tokval = (X)->tokval; \ + tokstr = (X)->tokstr; \ + noeval = (X)->noeval; \ + curlval = (X)->lval; \ + } while (0) + +/* Push and save away the contents of the globals describing the + current expression context. */ +static void +pushexp () +{ + EXPR_CONTEXT *context; + + if (expr_depth >= MAX_EXPR_RECURSION_LEVEL) + evalerror (_("expression recursion level exceeded")); + + if (expr_depth >= expr_stack_size) + { + expr_stack_size += EXPR_STACK_GROW_SIZE; + expr_stack = (EXPR_CONTEXT **)xrealloc (expr_stack, expr_stack_size * sizeof (EXPR_CONTEXT *)); + } + + context = (EXPR_CONTEXT *)xmalloc (sizeof (EXPR_CONTEXT)); + + context->expression = expression; + SAVETOK(context); + + expr_stack[expr_depth++] = context; +} + +/* Pop the the contents of the expression context stack into the + globals describing the current expression context. */ +static void +popexp () +{ + EXPR_CONTEXT *context; + + if (expr_depth <= 0) + { + /* See the comment at the top of evalexp() for an explanation of why + this is done. */ + expression = lasttp = 0; + evalerror (_("recursion stack underflow")); + } + + context = expr_stack[--expr_depth]; + + expression = context->expression; + RESTORETOK (context); + + free (context); +} + +static void +expr_unwind () +{ + while (--expr_depth > 0) + { + if (expr_stack[expr_depth]->tokstr) + free (expr_stack[expr_depth]->tokstr); + + if (expr_stack[expr_depth]->expression) + free (expr_stack[expr_depth]->expression); + + free (expr_stack[expr_depth]); + } + if (expr_depth == 0) + free (expr_stack[expr_depth]); /* free the allocated EXPR_CONTEXT */ + + noeval = 0; /* XXX */ +} + +static void +expr_bind_variable (lhs, rhs) + char *lhs, *rhs; +{ + SHELL_VAR *v; + int aflags; + + if (lhs == 0 || *lhs == 0) + return; /* XXX */ + +#if defined (ARRAY_VARS) + aflags = (assoc_expand_once && already_expanded) ? ASS_NOEXPAND : 0; +#else + aflags = 0; +#endif + v = bind_int_variable (lhs, rhs, aflags); + if (v && (readonly_p (v) || noassign_p (v))) + sh_longjmp (evalbuf, 1); /* variable assignment error */ + stupidly_hack_special_variables (lhs); +} + +#if defined (ARRAY_VARS) +/* This is similar to the logic in arrayfunc.c:valid_array_subscript when + you pass VA_NOEXPAND. */ +static int +expr_skipsubscript (vp, cp) + char *vp, *cp; +{ + int flags, isassoc; + SHELL_VAR *entry; + + isassoc = 0; + entry = 0; + if (assoc_expand_once & already_expanded) + { + *cp = '\0'; + isassoc = legal_identifier (vp) && (entry = find_variable (vp)) && assoc_p (entry); + *cp = '['; /* ] */ + } + flags = (isassoc && assoc_expand_once && already_expanded) ? VA_NOEXPAND : 0; + return (skipsubscript (cp, 0, flags)); +} + +/* Rewrite tok, which is of the form vname[expression], to vname[ind], where + IND is the already-calculated value of expression. */ +static void +expr_bind_array_element (tok, ind, rhs) + char *tok; + arrayind_t ind; + char *rhs; +{ + char *lhs, *vname; + size_t llen; + char ibuf[INT_STRLEN_BOUND (arrayind_t) + 1], *istr; + + istr = fmtumax (ind, 10, ibuf, sizeof (ibuf), 0); + vname = array_variable_name (tok, 0, (char **)NULL, (int *)NULL); + + llen = strlen (vname) + sizeof (ibuf) + 3; + lhs = xmalloc (llen); + + sprintf (lhs, "%s[%s]", vname, istr); /* XXX */ + +/*itrace("expr_bind_array_element: %s=%s", lhs, rhs);*/ + expr_bind_variable (lhs, rhs); + free (vname); + free (lhs); +} +#endif /* ARRAY_VARS */ + +/* Evaluate EXPR, and return the arithmetic result. If VALIDP is + non-null, a zero is stored into the location to which it points + if the expression is invalid, non-zero otherwise. If a non-zero + value is returned in *VALIDP, the return value of evalexp() may + be used. + + The `while' loop after the longjmp is caught relies on the above + implementation of pushexp and popexp leaving in expr_stack[0] the + values that the variables had when the program started. That is, + the first things saved are the initial values of the variables that + were assigned at program startup or by the compiler. Therefore, it is + safe to let the loop terminate when expr_depth == 0, without freeing up + any of the expr_depth[0] stuff. */ +intmax_t +evalexp (expr, flags, validp) + char *expr; + int flags; + int *validp; +{ + intmax_t val; + int c; + procenv_t oevalbuf; + + val = 0; + noeval = 0; + already_expanded = (flags&EXP_EXPANDED); + + FASTCOPY (evalbuf, oevalbuf, sizeof (evalbuf)); + + c = setjmp_nosigs (evalbuf); + + if (c) + { + FREE (tokstr); + FREE (expression); + tokstr = expression = (char *)NULL; + + expr_unwind (); + expr_depth = 0; /* XXX - make sure */ + + /* We copy in case we've called evalexp recursively */ + FASTCOPY (oevalbuf, evalbuf, sizeof (evalbuf)); + + if (validp) + *validp = 0; + return (0); + } + + val = subexpr (expr); + + if (validp) + *validp = 1; + + FASTCOPY (oevalbuf, evalbuf, sizeof (evalbuf)); + + return (val); +} + +static intmax_t +subexpr (expr) + char *expr; +{ + intmax_t val; + char *p; + + for (p = expr; p && *p && cr_whitespace (*p); p++) + ; + + if (p == NULL || *p == '\0') + return (0); + + pushexp (); + expression = savestring (expr); + tp = expression; + + curtok = lasttok = 0; + tokstr = (char *)NULL; + tokval = 0; + init_lvalue (&curlval); + lastlval = curlval; + + readtok (); + + val = EXP_HIGHEST (); + + if (curtok != 0) + evalerror (_("syntax error in expression")); + + FREE (tokstr); + FREE (expression); + + popexp (); + + return val; +} + +static intmax_t +expcomma () +{ + register intmax_t value; + + value = expassign (); + while (curtok == COMMA) + { + readtok (); + value = expassign (); + } + + return value; +} + +static intmax_t +expassign () +{ + register intmax_t value; + char *lhs, *rhs; + arrayind_t lind; +#if defined (HAVE_IMAXDIV) + imaxdiv_t idiv; +#endif + + value = expcond (); + if (curtok == EQ || curtok == OP_ASSIGN) + { + int special, op; + intmax_t lvalue; + + special = curtok == OP_ASSIGN; + + if (lasttok != STR) + evalerror (_("attempted assignment to non-variable")); + + if (special) + { + op = assigntok; /* a OP= b */ + lvalue = value; + } + + if (tokstr == 0) + evalerror (_("syntax error in variable assignment")); + + /* XXX - watch out for pointer aliasing issues here */ + lhs = savestring (tokstr); + /* save ind in case rhs is string var and evaluation overwrites it */ + lind = curlval.ind; + readtok (); + value = expassign (); + + if (special) + { + if ((op == DIV || op == MOD) && value == 0) + { + if (noeval == 0) + evalerror (_("division by 0")); + else + value = 1; + } + + switch (op) + { + case MUL: + /* Handle INTMAX_MIN and INTMAX_MAX * -1 specially here? */ + lvalue *= value; + break; + case DIV: + case MOD: + if (lvalue == INTMAX_MIN && value == -1) + lvalue = (op == DIV) ? INTMAX_MIN : 0; + else +#if HAVE_IMAXDIV + { + idiv = imaxdiv (lvalue, value); + lvalue = (op == DIV) ? idiv.quot : idiv.rem; + } +#else + lvalue = (op == DIV) ? lvalue / value : lvalue % value; +#endif + break; + case PLUS: + lvalue += value; + break; + case MINUS: + lvalue -= value; + break; + case LSH: + lvalue <<= value; + break; + case RSH: + lvalue >>= value; + break; + case BAND: + lvalue &= value; + break; + case BOR: + lvalue |= value; + break; + case BXOR: + lvalue ^= value; + break; + default: + free (lhs); + evalerror (_("bug: bad expassign token")); + break; + } + value = lvalue; + } + + rhs = itos (value); + if (noeval == 0) + { +#if defined (ARRAY_VARS) + if (lind != -1) + expr_bind_array_element (lhs, lind, rhs); + else +#endif + expr_bind_variable (lhs, rhs); + } + if (curlval.tokstr && curlval.tokstr == tokstr) + init_lvalue (&curlval); + + free (rhs); + free (lhs); + FREE (tokstr); + tokstr = (char *)NULL; /* For freeing on errors. */ + } + + return (value); +} + +/* Conditional expression (expr?expr:expr) */ +static intmax_t +expcond () +{ + intmax_t cval, val1, val2, rval; + int set_noeval; + + set_noeval = 0; + rval = cval = explor (); + if (curtok == QUES) /* found conditional expr */ + { + if (cval == 0) + { + set_noeval = 1; + noeval++; + } + + readtok (); + if (curtok == 0 || curtok == COL) + evalerror (_("expression expected")); + + val1 = EXP_HIGHEST (); + + if (set_noeval) + noeval--; + if (curtok != COL) + evalerror (_("`:' expected for conditional expression")); + + set_noeval = 0; + if (cval) + { + set_noeval = 1; + noeval++; + } + + readtok (); + if (curtok == 0) + evalerror (_("expression expected")); + val2 = expcond (); + + if (set_noeval) + noeval--; + rval = cval ? val1 : val2; + lasttok = COND; + } + return rval; +} + +/* Logical OR. */ +static intmax_t +explor () +{ + register intmax_t val1, val2; + int set_noeval; + + val1 = expland (); + + while (curtok == LOR) + { + set_noeval = 0; + if (val1 != 0) + { + noeval++; + set_noeval = 1; + } + readtok (); + val2 = expland (); + if (set_noeval) + noeval--; + val1 = val1 || val2; + lasttok = LOR; + } + + return (val1); +} + +/* Logical AND. */ +static intmax_t +expland () +{ + register intmax_t val1, val2; + int set_noeval; + + val1 = expbor (); + + while (curtok == LAND) + { + set_noeval = 0; + if (val1 == 0) + { + set_noeval = 1; + noeval++; + } + readtok (); + val2 = expbor (); + if (set_noeval) + noeval--; + val1 = val1 && val2; + lasttok = LAND; + } + + return (val1); +} + +/* Bitwise OR. */ +static intmax_t +expbor () +{ + register intmax_t val1, val2; + + val1 = expbxor (); + + while (curtok == BOR) + { + readtok (); + val2 = expbxor (); + val1 = val1 | val2; + lasttok = NUM; + } + + return (val1); +} + +/* Bitwise XOR. */ +static intmax_t +expbxor () +{ + register intmax_t val1, val2; + + val1 = expband (); + + while (curtok == BXOR) + { + readtok (); + val2 = expband (); + val1 = val1 ^ val2; + lasttok = NUM; + } + + return (val1); +} + +/* Bitwise AND. */ +static intmax_t +expband () +{ + register intmax_t val1, val2; + + val1 = exp5 (); + + while (curtok == BAND) + { + readtok (); + val2 = exp5 (); + val1 = val1 & val2; + lasttok = NUM; + } + + return (val1); +} + +static intmax_t +exp5 () +{ + register intmax_t val1, val2; + + val1 = exp4 (); + + while ((curtok == EQEQ) || (curtok == NEQ)) + { + int op = curtok; + + readtok (); + val2 = exp4 (); + if (op == EQEQ) + val1 = (val1 == val2); + else if (op == NEQ) + val1 = (val1 != val2); + lasttok = NUM; + } + return (val1); +} + +static intmax_t +exp4 () +{ + register intmax_t val1, val2; + + val1 = expshift (); + while ((curtok == LEQ) || + (curtok == GEQ) || + (curtok == LT) || + (curtok == GT)) + { + int op = curtok; + + readtok (); + val2 = expshift (); + + if (op == LEQ) + val1 = val1 <= val2; + else if (op == GEQ) + val1 = val1 >= val2; + else if (op == LT) + val1 = val1 < val2; + else /* (op == GT) */ + val1 = val1 > val2; + lasttok = NUM; + } + return (val1); +} + +/* Left and right shifts. */ +static intmax_t +expshift () +{ + register intmax_t val1, val2; + + val1 = exp3 (); + + while ((curtok == LSH) || (curtok == RSH)) + { + int op = curtok; + + readtok (); + val2 = exp3 (); + + if (op == LSH) + val1 = val1 << val2; + else + val1 = val1 >> val2; + lasttok = NUM; + } + + return (val1); +} + +static intmax_t +exp3 () +{ + register intmax_t val1, val2; + + val1 = expmuldiv (); + + while ((curtok == PLUS) || (curtok == MINUS)) + { + int op = curtok; + + readtok (); + val2 = expmuldiv (); + + if (op == PLUS) + val1 += val2; + else if (op == MINUS) + val1 -= val2; + lasttok = NUM; + } + return (val1); +} + +static intmax_t +expmuldiv () +{ + register intmax_t val1, val2; +#if defined (HAVE_IMAXDIV) + imaxdiv_t idiv; +#endif + + val1 = exppower (); + + while ((curtok == MUL) || + (curtok == DIV) || + (curtok == MOD)) + { + int op = curtok; + char *stp, *sltp; + + stp = tp; + readtok (); + + val2 = exppower (); + + /* Handle division by 0 and twos-complement arithmetic overflow */ + if (((op == DIV) || (op == MOD)) && (val2 == 0)) + { + if (noeval == 0) + { + sltp = lasttp; + lasttp = stp; + while (lasttp && *lasttp && whitespace (*lasttp)) + lasttp++; + evalerror (_("division by 0")); + lasttp = sltp; + } + else + val2 = 1; + } + else if (op == MOD && val1 == INTMAX_MIN && val2 == -1) + { + val1 = 0; + continue; + } + else if (op == DIV && val1 == INTMAX_MIN && val2 == -1) + val2 = 1; + + if (op == MUL) + val1 *= val2; + else if (op == DIV || op == MOD) +#if defined (HAVE_IMAXDIV) + { + idiv = imaxdiv (val1, val2); + val1 = (op == DIV) ? idiv.quot : idiv.rem; + } +#else + val1 = (op == DIV) ? val1 / val2 : val1 % val2; +#endif + lasttok = NUM; + } + return (val1); +} + +static intmax_t +ipow (base, exp) + intmax_t base, exp; +{ + intmax_t result; + + result = 1; + while (exp) + { + if (exp & 1) + result *= base; + exp >>= 1; + base *= base; + } + return result; +} + +static intmax_t +exppower () +{ + register intmax_t val1, val2, c; + + val1 = exp1 (); + while (curtok == POWER) + { + readtok (); + val2 = exppower (); /* exponentiation is right-associative */ + lasttok = NUM; + if (val2 == 0) + return (1); + if (val2 < 0) + evalerror (_("exponent less than 0")); + val1 = ipow (val1, val2); + } + return (val1); +} + +static intmax_t +exp1 () +{ + register intmax_t val; + + if (curtok == NOT) + { + readtok (); + val = !exp1 (); + lasttok = NUM; + } + else if (curtok == BNOT) + { + readtok (); + val = ~exp1 (); + lasttok = NUM; + } + else if (curtok == MINUS) + { + readtok (); + val = - exp1 (); + lasttok = NUM; + } + else if (curtok == PLUS) + { + readtok (); + val = exp1 (); + lasttok = NUM; + } + else + val = exp0 (); + + return (val); +} + +static intmax_t +exp0 () +{ + register intmax_t val = 0, v2; + char *vincdec; + int stok; + EXPR_CONTEXT ec; + + /* XXX - might need additional logic here to decide whether or not + pre-increment or pre-decrement is legal at this point. */ + if (curtok == PREINC || curtok == PREDEC) + { + stok = lasttok = curtok; + readtok (); + if (curtok != STR) + /* readtok() catches this */ + evalerror (_("identifier expected after pre-increment or pre-decrement")); + + v2 = tokval + ((stok == PREINC) ? 1 : -1); + vincdec = itos (v2); + if (noeval == 0) + { +#if defined (ARRAY_VARS) + if (curlval.ind != -1) + expr_bind_array_element (curlval.tokstr, curlval.ind, vincdec); + else +#endif + if (tokstr) + expr_bind_variable (tokstr, vincdec); + } + free (vincdec); + val = v2; + + curtok = NUM; /* make sure --x=7 is flagged as an error */ + readtok (); + } + else if (curtok == LPAR) + { + /* XXX - save curlval here? Or entire expression context? */ + readtok (); + val = EXP_HIGHEST (); + + if (curtok != RPAR) /* ( */ + evalerror (_("missing `)'")); + + /* Skip over closing paren. */ + readtok (); + } + else if ((curtok == NUM) || (curtok == STR)) + { + val = tokval; + if (curtok == STR) + { + SAVETOK (&ec); + tokstr = (char *)NULL; /* keep it from being freed */ + noeval = 1; + readtok (); + stok = curtok; + + /* post-increment or post-decrement */ + if (stok == POSTINC || stok == POSTDEC) + { + /* restore certain portions of EC */ + tokstr = ec.tokstr; + noeval = ec.noeval; + curlval = ec.lval; + lasttok = STR; /* ec.curtok */ + + v2 = val + ((stok == POSTINC) ? 1 : -1); + vincdec = itos (v2); + if (noeval == 0) + { +#if defined (ARRAY_VARS) + if (curlval.ind != -1) + expr_bind_array_element (curlval.tokstr, curlval.ind, vincdec); + else +#endif + expr_bind_variable (tokstr, vincdec); + } + free (vincdec); + curtok = NUM; /* make sure x++=7 is flagged as an error */ + } + else + { + /* XXX - watch out for pointer aliasing issues here */ + if (stok == STR) /* free new tokstr before old one is restored */ + FREE (tokstr); + RESTORETOK (&ec); + } + } + + readtok (); + } + else + evalerror (_("syntax error: operand expected")); + + return (val); +} + +static void +init_lvalue (lv) + struct lvalue *lv; +{ + lv->tokstr = 0; + lv->tokvar = 0; + lv->tokval = lv->ind = -1; +} + +static struct lvalue * +alloc_lvalue () +{ + struct lvalue *lv; + + lv = xmalloc (sizeof (struct lvalue)); + init_lvalue (lv); + return (lv); +} + +static void +free_lvalue (lv) + struct lvalue *lv; +{ + free (lv); /* should be inlined */ +} + +static intmax_t +expr_streval (tok, e, lvalue) + char *tok; + int e; + struct lvalue *lvalue; +{ + SHELL_VAR *v; + char *value; + intmax_t tval; + int initial_depth; +#if defined (ARRAY_VARS) + arrayind_t ind; + int tflag, aflag; +#endif + +/*itrace("expr_streval: %s: noeval = %d expanded=%d", tok, noeval, already_expanded);*/ + /* If we are suppressing evaluation, just short-circuit here instead of + going through the rest of the evaluator. */ + if (noeval) + return (0); + + initial_depth = expr_depth; + +#if defined (ARRAY_VARS) + tflag = assoc_expand_once && already_expanded; /* for a start */ +#endif + + /* [[[[[ */ +#if defined (ARRAY_VARS) + aflag = (tflag) ? AV_NOEXPAND : 0; + v = (e == ']') ? array_variable_part (tok, tflag, (char **)0, (int *)0) : find_variable (tok); +#else + v = find_variable (tok); +#endif + if (v == 0 && e != ']') + v = find_variable_last_nameref (tok, 0); + + if ((v == 0 || invisible_p (v)) && unbound_vars_is_error) + { +#if defined (ARRAY_VARS) + value = (e == ']') ? array_variable_name (tok, tflag, (char **)0, (int *)0) : tok; +#else + value = tok; +#endif + + set_exit_status (EXECUTION_FAILURE); + err_unboundvar (value); + +#if defined (ARRAY_VARS) + if (e == ']') + FREE (value); /* array_variable_name returns new memory */ +#endif + + if (no_longjmp_on_fatal_error && interactive_shell) + sh_longjmp (evalbuf, 1); + + if (interactive_shell) + { + expr_unwind (); + top_level_cleanup (); + jump_to_top_level (DISCARD); + } + else + jump_to_top_level (FORCE_EOF); + } + +#if defined (ARRAY_VARS) + ind = -1; + /* If the second argument to get_array_value doesn't include AV_ALLOWALL, + we don't allow references like array[@]. In this case, get_array_value + is just like get_variable_value in that it does not return newly-allocated + memory or quote the results. AFLAG is set above and is either AV_NOEXPAND + or 0. */ + value = (e == ']') ? get_array_value (tok, aflag, (int *)NULL, &ind) : get_variable_value (v); +#else + value = get_variable_value (v); +#endif + + if (expr_depth < initial_depth) + { + if (no_longjmp_on_fatal_error && interactive_shell) + sh_longjmp (evalbuf, 1); + return (0); + } + + tval = (value && *value) ? subexpr (value) : 0; + + if (lvalue) + { + lvalue->tokstr = tok; /* XXX */ + lvalue->tokval = tval; + lvalue->tokvar = v; /* XXX */ +#if defined (ARRAY_VARS) + lvalue->ind = ind; +#else + lvalue->ind = -1; +#endif + } + + return (tval); +} + +static int +_is_multiop (c) + int c; +{ + switch (c) + { + case EQEQ: + case NEQ: + case LEQ: + case GEQ: + case LAND: + case LOR: + case LSH: + case RSH: + case OP_ASSIGN: + case COND: + case POWER: + case PREINC: + case PREDEC: + case POSTINC: + case POSTDEC: + return 1; + default: + return 0; + } +} + +static int +_is_arithop (c) + int c; +{ + switch (c) + { + case EQ: + case GT: + case LT: + case PLUS: + case MINUS: + case MUL: + case DIV: + case MOD: + case NOT: + case LPAR: + case RPAR: + case BAND: + case BOR: + case BXOR: + case BNOT: + return 1; /* operator tokens */ + case QUES: + case COL: + case COMMA: + return 1; /* questionable */ + default: + return 0; /* anything else is invalid */ + } +} + +/* Lexical analyzer/token reader for the expression evaluator. Reads the + next token and puts its value into curtok, while advancing past it. + Updates value of tp. May also set tokval (for number) or tokstr (for + string). */ +static void +readtok () +{ + register char *cp, *xp; + register unsigned char c, c1; + register int e; + struct lvalue lval; + + /* Skip leading whitespace. */ + cp = tp; + c = e = 0; + while (cp && (c = *cp) && (cr_whitespace (c))) + cp++; + + if (c) + cp++; + + if (c == '\0') + { + lasttok = curtok; + curtok = 0; + tp = cp; + return; + } + lasttp = tp = cp - 1; + + if (legal_variable_starter (c)) + { + /* variable names not preceded with a dollar sign are shell variables. */ + char *savecp; + EXPR_CONTEXT ec; + int peektok; + + while (legal_variable_char (c)) + c = *cp++; + + c = *--cp; + +#if defined (ARRAY_VARS) + if (c == '[') + { + e = expr_skipsubscript (tp, cp); /* XXX - was skipsubscript */ + if (cp[e] == ']') + { + cp += e + 1; + c = *cp; + e = ']'; + } + else + evalerror (bash_badsub_errmsg); + } +#endif /* ARRAY_VARS */ + + *cp = '\0'; + /* XXX - watch out for pointer aliasing issues here */ + if (curlval.tokstr && curlval.tokstr == tokstr) + init_lvalue (&curlval); + + FREE (tokstr); + tokstr = savestring (tp); + *cp = c; + + /* XXX - make peektok part of saved token state? */ + SAVETOK (&ec); + tokstr = (char *)NULL; /* keep it from being freed */ + tp = savecp = cp; + noeval = 1; + curtok = STR; + readtok (); + peektok = curtok; + if (peektok == STR) /* free new tokstr before old one is restored */ + FREE (tokstr); + RESTORETOK (&ec); + cp = savecp; + + /* The tests for PREINC and PREDEC aren't strictly correct, but they + preserve old behavior if a construct like --x=9 is given. */ + if (lasttok == PREINC || lasttok == PREDEC || peektok != EQ) + { + lastlval = curlval; + tokval = expr_streval (tokstr, e, &curlval); + } + else + tokval = 0; + + lasttok = curtok; + curtok = STR; + } + else if (DIGIT(c)) + { + while (ISALNUM (c) || c == '#' || c == '@' || c == '_') + c = *cp++; + + c = *--cp; + *cp = '\0'; + + tokval = strlong (tp); + *cp = c; + lasttok = curtok; + curtok = NUM; + } + else + { + c1 = *cp++; + if ((c == EQ) && (c1 == EQ)) + c = EQEQ; + else if ((c == NOT) && (c1 == EQ)) + c = NEQ; + else if ((c == GT) && (c1 == EQ)) + c = GEQ; + else if ((c == LT) && (c1 == EQ)) + c = LEQ; + else if ((c == LT) && (c1 == LT)) + { + if (*cp == '=') /* a <<= b */ + { + assigntok = LSH; + c = OP_ASSIGN; + cp++; + } + else + c = LSH; + } + else if ((c == GT) && (c1 == GT)) + { + if (*cp == '=') + { + assigntok = RSH; /* a >>= b */ + c = OP_ASSIGN; + cp++; + } + else + c = RSH; + } + else if ((c == BAND) && (c1 == BAND)) + c = LAND; + else if ((c == BOR) && (c1 == BOR)) + c = LOR; + else if ((c == '*') && (c1 == '*')) + c = POWER; + else if ((c == '-' || c == '+') && c1 == c && curtok == STR) + c = (c == '-') ? POSTDEC : POSTINC; + else if ((c == '-' || c == '+') && c1 == c && curtok == NUM && (lasttok == PREINC || lasttok == PREDEC)) + { + /* This catches something like --FOO++ */ + if (c == '-') + evalerror ("--: assignment requires lvalue"); + else + evalerror ("++: assignment requires lvalue"); + } + else if ((c == '-' || c == '+') && c1 == c) + { + /* Quickly scan forward to see if this is followed by optional + whitespace and an identifier. */ + xp = cp; + while (xp && *xp && cr_whitespace (*xp)) + xp++; + if (legal_variable_starter ((unsigned char)*xp)) + c = (c == '-') ? PREDEC : PREINC; + else + /* Could force parsing as preinc or predec and throw an error */ +#if 0 + { + /* Posix says unary plus and minus have higher priority than + preinc and predec. */ + /* This catches something like --4++ */ + if (c == '-') + evalerror ("--: assignment requires lvalue"); + else + evalerror ("++: assignment requires lvalue"); + } +#else + cp--; /* not preinc or predec, so unget the character */ +#endif + } + else if (c1 == EQ && member (c, "*/%+-&^|")) + { + assigntok = c; /* a OP= b */ + c = OP_ASSIGN; + } + else if (_is_arithop (c) == 0) + { + cp--; + /* use curtok, since it hasn't been copied to lasttok yet */ + if (curtok == 0 || _is_arithop (curtok) || _is_multiop (curtok)) + evalerror (_("syntax error: operand expected")); + else + evalerror (_("syntax error: invalid arithmetic operator")); + } + else + cp--; /* `unget' the character */ + + /* Should check here to make sure that the current character is one + of the recognized operators and flag an error if not. Could create + a character map the first time through and check it on subsequent + calls. */ + lasttok = curtok; + curtok = c; + } + tp = cp; +} + +static void +evalerror (msg) + const char *msg; +{ + char *name, *t; + + name = this_command_name; + for (t = expression; t && whitespace (*t); t++) + ; + internal_error (_("%s%s%s: %s (error token is \"%s\")"), + name ? name : "", name ? ": " : "", + t ? t : "", msg, (lasttp && *lasttp) ? lasttp : ""); + sh_longjmp (evalbuf, 1); +} + +/* Convert a string to an intmax_t integer, with an arbitrary base. + 0nnn -> base 8 + 0[Xx]nn -> base 16 + Anything else: [base#]number (this is implemented to match ksh93) + + Base may be >=2 and <=64. If base is <= 36, the numbers are drawn + from [0-9][a-zA-Z], and lowercase and uppercase letters may be used + interchangeably. If base is > 36 and <= 64, the numbers are drawn + from [0-9][a-z][A-Z]_@ (a = 10, z = 35, A = 36, Z = 61, @ = 62, _ = 63 -- + you get the picture). */ + +#define VALID_NUMCHAR(c) (ISALNUM(c) || ((c) == '_') || ((c) == '@')) + +static intmax_t +strlong (num) + char *num; +{ + register char *s; + register unsigned char c; + int base, foundbase; + intmax_t val; + + s = num; + + base = 10; + foundbase = 0; + if (*s == '0') + { + s++; + + if (*s == '\0') + return 0; + + /* Base 16? */ + if (*s == 'x' || *s == 'X') + { + base = 16; + s++; + } + else + base = 8; + foundbase++; + } + + val = 0; + for (c = *s++; c; c = *s++) + { + if (c == '#') + { + if (foundbase) + evalerror (_("invalid number")); + + /* Illegal base specifications raise an evaluation error. */ + if (val < 2 || val > 64) + evalerror (_("invalid arithmetic base")); + + base = val; + val = 0; + foundbase++; + + /* Make sure a base# is followed by a character that can compose a + valid integer constant. Jeremy Townshend */ + if (VALID_NUMCHAR (*s) == 0) + evalerror (_("invalid integer constant")); + } + else if (VALID_NUMCHAR (c)) + { + if (DIGIT(c)) + c = TODIGIT(c); + else if (c >= 'a' && c <= 'z') + c -= 'a' - 10; + else if (c >= 'A' && c <= 'Z') + c -= 'A' - ((base <= 36) ? 10 : 36); + else if (c == '@') + c = 62; + else if (c == '_') + c = 63; + + if (c >= base) + evalerror (_("value too great for base")); + + val = (val * base) + c; + } + else + break; + } + + return (val); +} + +#if defined (EXPR_TEST) +void * +xmalloc (n) + int n; +{ + return (malloc (n)); +} + +void * +xrealloc (s, n) + char *s; + int n; +{ + return (realloc (s, n)); +} + +SHELL_VAR *find_variable () { return 0;} +SHELL_VAR *bind_variable () { return 0; } + +char *get_string_value () { return 0; } + +procenv_t top_level; + +main (argc, argv) + int argc; + char **argv; +{ + register int i; + intmax_t v; + int expok; + + if (setjmp (top_level)) + exit (0); + + for (i = 1; i < argc; i++) + { + v = evalexp (argv[i], 0, &expok); + if (expok == 0) + fprintf (stderr, _("%s: expression error\n"), argv[i]); + else + printf ("'%s' -> %ld\n", argv[i], v); + } + exit (0); +} + +int +builtin_error (format, arg1, arg2, arg3, arg4, arg5) + char *format; +{ + fprintf (stderr, "expr: "); + fprintf (stderr, format, arg1, arg2, arg3, arg4, arg5); + fprintf (stderr, "\n"); + return 0; +} + +char * +itos (n) + intmax_t n; +{ + return ("42"); +} + +#endif /* EXPR_TEST */ diff --git a/bash-5.1/externs.h b/bash-5.1/externs.h new file mode 100644 index 0000000..3d7716c --- /dev/null +++ b/bash-5.1/externs.h @@ -0,0 +1,548 @@ +/* externs.h -- extern function declarations which do not appear in their + own header file. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* Make sure that this is included *after* config.h! */ + +#if !defined (_EXTERNS_H_) +# define _EXTERNS_H_ + +#include "stdc.h" + +/* Functions from expr.c. */ +#define EXP_EXPANDED 0x01 + +extern intmax_t evalexp PARAMS((char *, int, int *)); + +/* Functions from print_cmd.c. */ +#define FUNC_MULTILINE 0x01 +#define FUNC_EXTERNAL 0x02 + +extern char *make_command_string PARAMS((COMMAND *)); +extern char *named_function_string PARAMS((char *, COMMAND *, int)); + +extern void print_command PARAMS((COMMAND *)); +extern void print_simple_command PARAMS((SIMPLE_COM *)); +extern void print_word_list PARAMS((WORD_LIST *, char *)); + +/* debugger support */ +extern void print_for_command_head PARAMS((FOR_COM *)); +#if defined (SELECT_COMMAND) +extern void print_select_command_head PARAMS((SELECT_COM *)); +#endif +extern void print_case_command_head PARAMS((CASE_COM *)); +#if defined (DPAREN_ARITHMETIC) +extern void print_arith_command PARAMS((WORD_LIST *)); +#endif +#if defined (COND_COMMAND) +extern void print_cond_command PARAMS((COND_COM *)); +#endif + +/* set -x support */ +extern void xtrace_init PARAMS((void)); +#ifdef NEED_XTRACE_SET_DECL +extern void xtrace_set PARAMS((int, FILE *)); +#endif +extern void xtrace_fdchk PARAMS((int)); +extern void xtrace_reset PARAMS((void)); +extern char *indirection_level_string PARAMS((void)); +extern void xtrace_print_assignment PARAMS((char *, char *, int, int)); +extern void xtrace_print_word_list PARAMS((WORD_LIST *, int)); +extern void xtrace_print_for_command_head PARAMS((FOR_COM *)); +#if defined (SELECT_COMMAND) +extern void xtrace_print_select_command_head PARAMS((SELECT_COM *)); +#endif +extern void xtrace_print_case_command_head PARAMS((CASE_COM *)); +#if defined (DPAREN_ARITHMETIC) +extern void xtrace_print_arith_cmd PARAMS((WORD_LIST *)); +#endif +#if defined (COND_COMMAND) +extern void xtrace_print_cond_term PARAMS((int, int, WORD_DESC *, char *, char *)); +#endif + +/* Functions from shell.c. */ +extern void exit_shell PARAMS((int)) __attribute__((__noreturn__)); +extern void sh_exit PARAMS((int)) __attribute__((__noreturn__)); +extern void subshell_exit PARAMS((int)) __attribute__((__noreturn__)); +extern void set_exit_status PARAMS((int)); +extern void disable_priv_mode PARAMS((void)); +extern void unbind_args PARAMS((void)); + +#if defined (RESTRICTED_SHELL) +extern int shell_is_restricted PARAMS((char *)); +extern int maybe_make_restricted PARAMS((char *)); +#endif + +extern void unset_bash_input PARAMS((int)); +extern void get_current_user_info PARAMS((void)); + +/* Functions from eval.c. */ +extern int reader_loop PARAMS((void)); +extern int pretty_print_loop PARAMS((void)); +extern int parse_command PARAMS((void)); +extern int read_command PARAMS((void)); + +/* Functions from braces.c. */ +#if defined (BRACE_EXPANSION) +extern char **brace_expand PARAMS((char *)); +#endif + +/* Miscellaneous functions from parse.y */ +extern int yyparse PARAMS((void)); +extern int return_EOF PARAMS((void)); +extern void push_token PARAMS((int)); +extern char *xparse_dolparen PARAMS((char *, char *, int *, int)); +extern void reset_parser PARAMS((void)); +extern void reset_readahead_token PARAMS((void)); +extern WORD_LIST *parse_string_to_word_list PARAMS((char *, int, const char *)); + +extern int parser_will_prompt PARAMS((void)); +extern int parser_in_command_position PARAMS((void)); + +extern void free_pushed_string_input PARAMS((void)); + +extern int parser_expanding_alias PARAMS((void)); +extern void parser_save_alias PARAMS((void)); +extern void parser_restore_alias PARAMS((void)); + +extern void clear_shell_input_line PARAMS((void)); + +extern char *decode_prompt_string PARAMS((char *)); + +extern int get_current_prompt_level PARAMS((void)); +extern void set_current_prompt_level PARAMS((int)); + +#if defined (HISTORY) +extern char *history_delimiting_chars PARAMS((const char *)); +#endif + +/* Declarations for functions defined in locale.c */ +extern void set_default_locale PARAMS((void)); +extern void set_default_locale_vars PARAMS((void)); +extern int set_locale_var PARAMS((char *, char *)); +extern int set_lang PARAMS((char *, char *)); +extern void set_default_lang PARAMS((void)); +extern char *get_locale_var PARAMS((char *)); +extern char *localetrans PARAMS((char *, int, int *)); +extern char *mk_msgstr PARAMS((char *, int *)); +extern char *localeexpand PARAMS((char *, int, int, int, int *)); +#ifndef locale_decpoint +extern int locale_decpoint PARAMS((void)); +#endif + +/* Declarations for functions defined in list.c. */ +extern void list_walk PARAMS((GENERIC_LIST *, sh_glist_func_t *)); +extern void wlist_walk PARAMS((WORD_LIST *, sh_icpfunc_t *)); +extern GENERIC_LIST *list_reverse (); +extern int list_length (); +extern GENERIC_LIST *list_append (); +extern GENERIC_LIST *list_remove (); + +/* Declarations for functions defined in stringlib.c */ +extern int find_string_in_alist PARAMS((char *, STRING_INT_ALIST *, int)); +extern char *find_token_in_alist PARAMS((int, STRING_INT_ALIST *, int)); +extern int find_index_in_alist PARAMS((char *, STRING_INT_ALIST *, int)); + +extern char *substring PARAMS((const char *, int, int)); +extern char *strsub PARAMS((char *, char *, char *, int)); +extern char *strcreplace PARAMS((char *, int, const char *, int)); +extern void strip_leading PARAMS((char *)); +extern void strip_trailing PARAMS((char *, int, int)); +extern void xbcopy PARAMS((char *, char *, int)); + +/* Functions from version.c. */ +extern char *shell_version_string PARAMS((void)); +extern void show_shell_version PARAMS((int)); + +/* Functions from the bash library, lib/sh/libsh.a. These should really + go into a separate include file. */ + +/* declarations for functions defined in lib/sh/casemod.c */ +extern char *sh_modcase PARAMS((const char *, char *, int)); + +/* Defines for flags argument to sh_modcase. These need to agree with what's + in lib/sh/casemode.c */ +#define CASE_LOWER 0x0001 +#define CASE_UPPER 0x0002 +#define CASE_CAPITALIZE 0x0004 +#define CASE_UNCAP 0x0008 +#define CASE_TOGGLE 0x0010 +#define CASE_TOGGLEALL 0x0020 +#define CASE_UPFIRST 0x0040 +#define CASE_LOWFIRST 0x0080 + +#define CASE_USEWORDS 0x1000 + +/* declarations for functions defined in lib/sh/clktck.c */ +extern long get_clk_tck PARAMS((void)); + +/* declarations for functions defined in lib/sh/clock.c */ +extern void clock_t_to_secs (); +extern void print_clock_t (); + +/* Declarations for functions defined in lib/sh/dprintf.c */ +#if !defined (HAVE_DPRINTF) +extern void dprintf PARAMS((int, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); +#endif + +/* Declarations for functions defined in lib/sh/fmtulong.c */ +#define FL_PREFIX 0x01 /* add 0x, 0X, or 0 prefix as appropriate */ +#define FL_ADDBASE 0x02 /* add base# prefix to converted value */ +#define FL_HEXUPPER 0x04 /* use uppercase when converting to hex */ +#define FL_UNSIGNED 0x08 /* don't add any sign */ + +extern char *fmtulong PARAMS((unsigned long int, int, char *, size_t, int)); + +/* Declarations for functions defined in lib/sh/fmtulong.c */ +#if defined (HAVE_LONG_LONG) +extern char *fmtullong PARAMS((unsigned long long int, int, char *, size_t, int)); +#endif + +/* Declarations for functions defined in lib/sh/fmtumax.c */ +extern char *fmtumax PARAMS((uintmax_t, int, char *, size_t, int)); + +/* Declarations for functions defined in lib/sh/fnxform.c */ +extern char *fnx_fromfs PARAMS((char *, size_t)); +extern char *fnx_tofs PARAMS((char *, size_t)); + +/* Declarations for functions defined in lib/sh/fpurge.c */ + +#if defined NEED_FPURGE_DECL +#if !HAVE_DECL_FPURGE + +#if HAVE_FPURGE +# define fpurge _bash_fpurge +#endif +extern int fpurge PARAMS((FILE *stream)); + +#endif /* HAVE_DECL_FPURGE */ +#endif /* NEED_FPURGE_DECL */ + +/* Declarations for functions defined in lib/sh/getcwd.c */ +#if !defined (HAVE_GETCWD) +extern char *getcwd PARAMS((char *, size_t)); +#endif + +/* Declarations for functions defined in lib/sh/input_avail.c */ +extern int input_avail PARAMS((int)); + +/* Declarations for functions defined in lib/sh/itos.c */ +extern char *inttostr PARAMS((intmax_t, char *, size_t)); +extern char *itos PARAMS((intmax_t)); +extern char *mitos PARAMS((intmax_t)); +extern char *uinttostr PARAMS((uintmax_t, char *, size_t)); +extern char *uitos PARAMS((uintmax_t)); + +/* declarations for functions defined in lib/sh/makepath.c */ +#define MP_DOTILDE 0x01 +#define MP_DOCWD 0x02 +#define MP_RMDOT 0x04 +#define MP_IGNDOT 0x08 + +extern char *sh_makepath PARAMS((const char *, const char *, int)); + +/* declarations for functions defined in lib/sh/mbscasecmp.c */ +#if !defined (HAVE_MBSCASECMP) +extern char *mbscasecmp PARAMS((const char *, const char *)); +#endif + +/* declarations for functions defined in lib/sh/mbschr.c */ +#if !defined (HAVE_MBSCHR) +extern char *mbschr PARAMS((const char *, int)); +#endif + +/* declarations for functions defined in lib/sh/mbscmp.c */ +#if !defined (HAVE_MBSCMP) +extern char *mbscmp PARAMS((const char *, const char *)); +#endif + +/* declarations for functions defined in lib/sh/netconn.c */ +extern int isnetconn PARAMS((int)); + +/* declarations for functions defined in lib/sh/netopen.c */ +extern int netopen PARAMS((char *)); + +/* Declarations for functions defined in lib/sh/oslib.c */ + +#if !defined (HAVE_DUP2) || defined (DUP2_BROKEN) +extern int dup2 PARAMS((int, int)); +#endif + +#if !defined (HAVE_GETDTABLESIZE) +extern int getdtablesize PARAMS((void)); +#endif /* !HAVE_GETDTABLESIZE */ + +#if !defined (HAVE_GETHOSTNAME) +extern int gethostname PARAMS((char *, int)); +#endif /* !HAVE_GETHOSTNAME */ + +extern int getmaxgroups PARAMS((void)); +extern long getmaxchild PARAMS((void)); + +/* declarations for functions defined in lib/sh/pathcanon.c */ +#define PATH_CHECKDOTDOT 0x0001 +#define PATH_CHECKEXISTS 0x0002 +#define PATH_HARDPATH 0x0004 +#define PATH_NOALLOC 0x0008 + +extern char *sh_canonpath PARAMS((char *, int)); + +/* declarations for functions defined in lib/sh/pathphys.c */ +extern char *sh_physpath PARAMS((char *, int)); +extern char *sh_realpath PARAMS((const char *, char *)); + +/* declarations for functions defined in lib/sh/random.c */ +extern int brand PARAMS((void)); +extern void sbrand PARAMS((unsigned long)); /* set bash random number generator. */ +extern void seedrand PARAMS((void)); /* seed generator randomly */ +extern void seedrand32 PARAMS((void)); +extern u_bits32_t get_urandom32 PARAMS((void)); + +/* declarations for functions defined in lib/sh/setlinebuf.c */ +#ifdef NEED_SH_SETLINEBUF_DECL +extern int sh_setlinebuf PARAMS((FILE *)); +#endif + +/* declarations for functions defined in lib/sh/shaccess.c */ +extern int sh_eaccess PARAMS((const char *, int)); + +/* declarations for functions defined in lib/sh/shmatch.c */ +extern int sh_regmatch PARAMS((const char *, const char *, int)); + +/* defines for flags argument to sh_regmatch. */ +#define SHMAT_SUBEXP 0x001 /* save subexpressions in SH_REMATCH */ +#define SHMAT_PWARN 0x002 /* print a warning message on invalid regexp */ + +/* declarations for functions defined in lib/sh/shmbchar.c */ +extern size_t mbstrlen PARAMS((const char *)); +extern char *mbsmbchar PARAMS((const char *)); +extern int sh_mbsnlen PARAMS((const char *, size_t, int)); + +/* declarations for functions defined in lib/sh/shquote.c */ +extern char *sh_single_quote PARAMS((const char *)); +extern char *sh_double_quote PARAMS((const char *)); +extern char *sh_mkdoublequoted PARAMS((const char *, int, int)); +extern char *sh_un_double_quote PARAMS((char *)); +extern char *sh_backslash_quote PARAMS((char *, const char *, int)); +extern char *sh_backslash_quote_for_double_quotes PARAMS((char *)); +extern char *sh_quote_reusable PARAMS((char *, int)); +extern int sh_contains_shell_metas PARAMS((const char *)); +extern int sh_contains_quotes PARAMS((const char *)); + +/* declarations for functions defined in lib/sh/spell.c */ +extern int spname PARAMS((char *, char *)); +extern char *dirspell PARAMS((char *)); + +/* declarations for functions defined in lib/sh/strcasecmp.c */ +#if !defined (HAVE_STRCASECMP) +extern int strncasecmp PARAMS((const char *, const char *, size_t)); +extern int strcasecmp PARAMS((const char *, const char *)); +#endif /* HAVE_STRCASECMP */ + +/* declarations for functions defined in lib/sh/strcasestr.c */ +#if ! HAVE_STRCASESTR +extern char *strcasestr PARAMS((const char *, const char *)); +#endif + +/* declarations for functions defined in lib/sh/strchrnul.c */ +#if ! HAVE_STRCHRNUL +extern char *strchrnul PARAMS((const char *, int)); +#endif + +/* declarations for functions defined in lib/sh/strerror.c */ +#if !defined (HAVE_STRERROR) && !defined (strerror) +extern char *strerror PARAMS((int)); +#endif + +/* declarations for functions defined in lib/sh/strftime.c */ +#if !defined (HAVE_STRFTIME) && defined (NEED_STRFTIME_DECL) +extern size_t strftime PARAMS((char *, size_t, const char *, const struct tm *)); +#endif + +/* declarations for functions and structures defined in lib/sh/stringlist.c */ + +/* This is a general-purpose argv-style array struct. */ +typedef struct _list_of_strings { + char **list; + int list_size; + int list_len; +} STRINGLIST; + +typedef int sh_strlist_map_func_t PARAMS((char *)); + +extern STRINGLIST *strlist_create PARAMS((int)); +extern STRINGLIST *strlist_resize PARAMS((STRINGLIST *, int)); +extern void strlist_flush PARAMS((STRINGLIST *)); +extern void strlist_dispose PARAMS((STRINGLIST *)); +extern int strlist_remove PARAMS((STRINGLIST *, char *)); +extern STRINGLIST *strlist_copy PARAMS((STRINGLIST *)); +extern STRINGLIST *strlist_merge PARAMS((STRINGLIST *, STRINGLIST *)); +extern STRINGLIST *strlist_append PARAMS((STRINGLIST *, STRINGLIST *)); +extern STRINGLIST *strlist_prefix_suffix PARAMS((STRINGLIST *, char *, char *)); +extern void strlist_print PARAMS((STRINGLIST *, char *)); +extern void strlist_walk PARAMS((STRINGLIST *, sh_strlist_map_func_t *)); +extern void strlist_sort PARAMS((STRINGLIST *)); + +/* declarations for functions defined in lib/sh/stringvec.c */ + +extern char **strvec_create PARAMS((int)); +extern char **strvec_resize PARAMS((char **, int)); +extern char **strvec_mcreate PARAMS((int)); +extern char **strvec_mresize PARAMS((char **, int)); +extern void strvec_flush PARAMS((char **)); +extern void strvec_dispose PARAMS((char **)); +extern int strvec_remove PARAMS((char **, char *)); +extern int strvec_len PARAMS((char **)); +extern int strvec_search PARAMS((char **, char *)); +extern char **strvec_copy PARAMS((char **)); +extern int strvec_posixcmp PARAMS((char **, char **)); +extern int strvec_strcmp PARAMS((char **, char **)); +extern void strvec_sort PARAMS((char **, int)); + +extern char **strvec_from_word_list PARAMS((WORD_LIST *, int, int, int *)); +extern WORD_LIST *strvec_to_word_list PARAMS((char **, int, int)); + +/* declarations for functions defined in lib/sh/strnlen.c */ +#if !defined (HAVE_STRNLEN) +extern size_t strnlen PARAMS((const char *, size_t)); +#endif + +/* declarations for functions defined in lib/sh/strpbrk.c */ +#if !defined (HAVE_STRPBRK) +extern char *strpbrk PARAMS((const char *, const char *)); +#endif + +/* declarations for functions defined in lib/sh/strtod.c */ +#if !defined (HAVE_STRTOD) +extern double strtod PARAMS((const char *, char **)); +#endif + +/* declarations for functions defined in lib/sh/strtol.c */ +#if !HAVE_DECL_STRTOL +extern long strtol PARAMS((const char *, char **, int)); +#endif + +/* declarations for functions defined in lib/sh/strtoll.c */ +#if defined (HAVE_LONG_LONG) && !HAVE_DECL_STRTOLL +extern long long strtoll PARAMS((const char *, char **, int)); +#endif + +/* declarations for functions defined in lib/sh/strtoul.c */ +#if !HAVE_DECL_STRTOUL +extern unsigned long strtoul PARAMS((const char *, char **, int)); +#endif + +/* declarations for functions defined in lib/sh/strtoull.c */ +#if defined (HAVE_LONG_LONG) && !HAVE_DECL_STRTOULL +extern unsigned long long strtoull PARAMS((const char *, char **, int)); +#endif + +/* declarations for functions defined in lib/sh/strimax.c */ +#if !HAVE_DECL_STRTOIMAX +extern intmax_t strtoimax PARAMS((const char *, char **, int)); +#endif + +/* declarations for functions defined in lib/sh/strumax.c */ +#if !HAVE_DECL_STRTOUMAX +extern uintmax_t strtoumax PARAMS((const char *, char **, int)); +#endif + +/* declarations for functions defined in lib/sh/strtrans.c */ +extern char *ansicstr PARAMS((char *, int, int, int *, int *)); +extern char *ansic_quote PARAMS((char *, int, int *)); +extern int ansic_shouldquote PARAMS((const char *)); +extern char *ansiexpand PARAMS((char *, int, int, int *)); + +/* declarations for functions defined in lib/sh/timeval.c. No prototypes + so we don't have to count on having a definition of struct timeval in + scope when this file is included. */ +extern void timeval_to_secs (); +extern void print_timeval (); + +/* declarations for functions defined in lib/sh/tmpfile.c */ +#define MT_USETMPDIR 0x0001 +#define MT_READWRITE 0x0002 +#define MT_USERANDOM 0x0004 +#define MT_TEMPLATE 0x0008 + +extern char *sh_mktmpname PARAMS((char *, int)); +extern int sh_mktmpfd PARAMS((char *, int, char **)); +/* extern FILE *sh_mktmpfp PARAMS((char *, int, char **)); */ +extern char *sh_mktmpdir PARAMS((char *, int)); + +/* declarations for functions defined in lib/sh/uconvert.c */ +extern int uconvert PARAMS((char *, long *, long *, char **)); + +/* declarations for functions defined in lib/sh/ufuncs.c */ +extern unsigned int falarm PARAMS((unsigned int, unsigned int)); +extern unsigned int fsleep PARAMS((unsigned int, unsigned int)); + +/* declarations for functions defined in lib/sh/unicode.c */ +extern int u32cconv PARAMS((unsigned long, char *)); +extern void u32reset PARAMS((void)); + +/* declarations for functions defined in lib/sh/utf8.c */ +extern char *utf8_mbschr PARAMS((const char *, int)); +extern int utf8_mbscmp PARAMS((const char *, const char *)); +extern char *utf8_mbsmbchar PARAMS((const char *)); +extern int utf8_mbsnlen PARAMS((const char *, size_t, int)); +extern int utf8_mblen PARAMS((const char *, size_t)); +extern size_t utf8_mbstrlen PARAMS((const char *)); + +/* declarations for functions defined in lib/sh/wcsnwidth.c */ +#if defined (HANDLE_MULTIBYTE) +extern int wcsnwidth PARAMS((const wchar_t *, size_t, int)); +#endif + +/* declarations for functions defined in lib/sh/winsize.c */ +extern void get_new_window_size PARAMS((int, int *, int *)); + +/* declarations for functions defined in lib/sh/zcatfd.c */ +extern int zcatfd PARAMS((int, int, char *)); + +/* declarations for functions defined in lib/sh/zgetline.c */ +extern ssize_t zgetline PARAMS((int, char **, size_t *, int, int)); + +/* declarations for functions defined in lib/sh/zmapfd.c */ +extern int zmapfd PARAMS((int, char **, char *)); + +/* declarations for functions defined in lib/sh/zread.c */ +extern ssize_t zread PARAMS((int, char *, size_t)); +extern ssize_t zreadretry PARAMS((int, char *, size_t)); +extern ssize_t zreadintr PARAMS((int, char *, size_t)); +extern ssize_t zreadc PARAMS((int, char *)); +extern ssize_t zreadcintr PARAMS((int, char *)); +extern ssize_t zreadn PARAMS((int, char *, size_t)); +extern void zreset PARAMS((void)); +extern void zsyncfd PARAMS((int)); + +/* declarations for functions defined in lib/sh/zwrite.c */ +extern int zwrite PARAMS((int, char *, size_t)); + +/* declarations for functions defined in lib/glob/gmisc.c */ +extern int match_pattern_char PARAMS((char *, char *, int)); +extern int umatchlen PARAMS((char *, size_t)); + +#if defined (HANDLE_MULTIBYTE) +extern int match_pattern_wchar PARAMS((wchar_t *, wchar_t *, int)); +extern int wmatchlen PARAMS((wchar_t *, size_t)); +#endif + +#endif /* _EXTERNS_H_ */ diff --git a/bash-5.1/findcmd.c b/bash-5.1/findcmd.c new file mode 100644 index 0000000..e235705 --- /dev/null +++ b/bash-5.1/findcmd.c @@ -0,0 +1,688 @@ +/* findcmd.c -- Functions to search for commands by name. */ + +/* Copyright (C) 1997-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include +#include "chartypes.h" +#include "bashtypes.h" +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif +#include "filecntl.h" +#include "posixstat.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include + +#include "bashansi.h" + +#include "memalloc.h" +#include "shell.h" +#include "execute_cmd.h" +#include "flags.h" +#include "hashlib.h" +#include "pathexp.h" +#include "hashcmd.h" +#include "findcmd.h" /* matching prototypes and declarations */ + +#include + +#if !defined (errno) +extern int errno; +#endif + +/* Static functions defined and used in this file. */ +static char *_find_user_command_internal PARAMS((const char *, int)); +static char *find_user_command_internal PARAMS((const char *, int)); +static char *find_user_command_in_path PARAMS((const char *, char *, int)); +static char *find_in_path_element PARAMS((const char *, char *, int, int, struct stat *)); +static char *find_absolute_program PARAMS((const char *, int)); + +static char *get_next_path_element PARAMS((char *, int *)); + +/* 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. */ +static char *file_to_lose_on; + +/* Non-zero if we should stat every command found in the hash table to + make sure it still exists. */ +int check_hashed_filenames = CHECKHASH_DEFAULT; + +/* 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; + +/* Set up EXECIGNORE; a blacklist of patterns that executable files should not + match. */ +static struct ignorevar execignore = +{ + "EXECIGNORE", + NULL, + 0, + NULL, + NULL +}; + +void +setup_exec_ignore (varname) + char *varname; +{ + setup_ignore_patterns (&execignore); +} + +static int +exec_name_should_ignore (name) + const char *name; +{ + struct ign *p; + + for (p = execignore.ignores; p && p->val; p++) + if (strmatch (p->val, (char *)name, FNMATCH_EXTFLAG|FNM_CASEFOLD) != FNM_NOMATCH) + return 1; + return 0; +} + +/* 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) + const char *name; +{ + struct stat finfo; + int r; + + /* 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|FS_DIRECTORY); + + r = FS_EXISTS; + +#if defined (HAVE_EACCESS) + /* Use eaccess(2) if we have it to take things like ACLs and other + file access mechanisms into account. eaccess uses the effective + user and group IDs, not the real ones. We could use sh_eaccess, + but we don't want any special treatment for /dev/fd. */ + if (exec_name_should_ignore (name) == 0 && eaccess (name, X_OK) == 0) + r |= FS_EXECABLE; + if (eaccess (name, R_OK) == 0) + r |= FS_READABLE; + + return r; +#elif defined (AFS) + /* We have to use access(2) to determine access because AFS does not + support Unix file system semantics. This may produce wrong + answers for non-AFS files when ruid != euid. I hate AFS. */ + if (exec_name_should_ignore (name) == 0 && access (name, X_OK) == 0) + r |= FS_EXECABLE; + if (access (name, R_OK) == 0) + r |= FS_READABLE; + + return r; +#else /* !HAVE_EACCESS && !AFS */ + + /* 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. The same with whether or not a file is readable. */ + + /* Root only requires execute permission for any of owner, group or + others to be able to exec a file, and can read any file. */ + if (current_user.euid == (uid_t)0) + { + r |= FS_READABLE; + if (exec_name_should_ignore (name) == 0 && (finfo.st_mode & S_IXUGO)) + r |= FS_EXECABLE; + return r; + } + + /* If we are the owner of the file, the owner bits apply. */ + if (current_user.euid == finfo.st_uid) + { + if (exec_name_should_ignore (name) == 0 && (finfo.st_mode & S_IXUSR)) + r |= FS_EXECABLE; + if (finfo.st_mode & S_IRUSR) + r |= FS_READABLE; + } + + /* If we are in the owning group, the group permissions apply. */ + else if (group_member (finfo.st_gid)) + { + if (exec_name_should_ignore (name) == 0 && (finfo.st_mode & S_IXGRP)) + r |= FS_EXECABLE; + if (finfo.st_mode & S_IRGRP) + r |= FS_READABLE; + } + + /* Else we check whether `others' have permission to execute the file */ + else + { + if (exec_name_should_ignore (name) == 0 && finfo.st_mode & S_IXOTH) + r |= FS_EXECABLE; + if (finfo.st_mode & S_IROTH) + r |= FS_READABLE; + } + + return r; +#endif /* !AFS */ +} + +/* 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) + const char *file; +{ + int s; + + s = file_status (file); +#if defined (EISDIR) + if (s & FS_DIRECTORY) + errno = EISDIR; /* let's see if we can improve error messages */ +#endif + return ((s & FS_EXECABLE) && ((s & FS_DIRECTORY) == 0)); +} + +int +is_directory (file) + const char *file; +{ + return (file_status (file) & FS_DIRECTORY); +} + +int +executable_or_directory (file) + const char *file; +{ + int s; + + s = file_status (file); + return ((s & FS_EXECABLE) || (s & FS_DIRECTORY)); +} + +/* 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) + const char *name; +{ + return (find_user_command_internal (name, FS_EXEC_PREFERRED|FS_NODIRS)); +} + +/* 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 readable file found; designed to be used to look + for shell scripts or files to source. */ +char * +find_path_file (name) + const char *name; +{ + return (find_user_command_internal (name, FS_READABLE)); +} + +static char * +_find_user_command_internal (name, flags) + const char *name; + int flags; +{ + char *path_list, *cmd; + SHELL_VAR *var; + + /* Search for the value of PATH in both the temporary environments and + in the regular list of variables. */ + if (var = find_variable_tempenv ("PATH")) /* XXX could be array? */ + path_list = value_cell (var); + else + path_list = (char *)NULL; + + if (path_list == 0 || *path_list == '\0') + return (savestring (name)); + + cmd = find_user_command_in_path (name, path_list, flags); + + return (cmd); +} + +static char * +find_user_command_internal (name, flags) + const char *name; + int flags; +{ +#ifdef __WIN32__ + char *res, *dotexe; + + dotexe = (char *)xmalloc (strlen (name) + 5); + strcpy (dotexe, name); + strcat (dotexe, ".exe"); + res = _find_user_command_internal (dotexe, flags); + free (dotexe); + if (res == 0) + res = _find_user_command_internal (name, flags); + return res; +#else + return (_find_user_command_internal (name, flags)); +#endif +} + +/* 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; +{ + char *path; + + path = extract_colon_unit (path_list, path_index_pointer); + + if (path == 0) + return (path); + + if (*path == '\0') + { + free (path); + path = savestring ("."); + } + + return (path); +} + +/* Look for PATHNAME in $PATH. Returns either the hashed command + corresponding to PATHNAME or the first instance of PATHNAME found + in $PATH. If (FLAGS&CMDSRCH_HASH) is non-zero, insert the instance of + PATHNAME found in $PATH into the command hash table. If (FLAGS&CMDSRCH_STDPATH) + is non-zero, we are running in a `command -p' environment and should use + the Posix standard path. + Returns a newly-allocated string. */ +char * +search_for_command (pathname, flags) + const char *pathname; + int flags; +{ + char *hashed_file, *command, *path_list; + int temp_path, st; + SHELL_VAR *path; + + hashed_file = command = (char *)NULL; + + /* If PATH is in the temporary environment for this command, don't use the + hash table to search for the full pathname. */ + path = find_variable_tempenv ("PATH"); + temp_path = path && tempvar_p (path); + + /* Don't waste time trying to find hashed data for a pathname + that is already completely specified or if we're using a command- + specific value for PATH. */ + if (temp_path == 0 && absolute_program (pathname) == 0) + hashed_file = phash_search (pathname); + + /* If a command found in the hash table no longer exists, we need to + look for it in $PATH. Thank you Posix.2. This forces us to stat + every command found in the hash table. */ + + if (hashed_file && (posixly_correct || check_hashed_filenames)) + { + st = file_status (hashed_file); + if ((st & (FS_EXISTS|FS_EXECABLE)) != (FS_EXISTS|FS_EXECABLE)) + { + phash_remove (pathname); + free (hashed_file); + hashed_file = (char *)NULL; + } + } + + if (hashed_file) + command = hashed_file; + else if (absolute_program (pathname)) + /* A command containing a slash is not looked up in PATH or saved in + the hash table. */ + command = savestring (pathname); + else + { + if (flags & CMDSRCH_STDPATH) + path_list = conf_standard_path (); + else if (temp_path || path) + path_list = value_cell (path); + else + path_list = 0; + + command = find_user_command_in_path (pathname, path_list, FS_EXEC_PREFERRED|FS_NODIRS); + + if (command && hashing_enabled && temp_path == 0 && (flags & CMDSRCH_HASH)) + { + /* If we found the full pathname the same as the command name, the + command probably doesn't exist. Don't put it into the hash + table. */ + if (STREQ (command, pathname)) + { + st = file_status (command); + if (st & FS_EXECABLE) + phash_insert ((char *)pathname, command, dot_found_in_search, 1); + } + /* If we're in posix mode, don't add files without the execute bit + to the hash table. */ + else if (posixly_correct) + { + st = file_status (command); + if (st & FS_EXECABLE) + phash_insert ((char *)pathname, command, dot_found_in_search, 1); + } + else + phash_insert ((char *)pathname, command, dot_found_in_search, 1); + } + + if (flags & CMDSRCH_STDPATH) + free (path_list); + } + + return (command); +} + +char * +user_command_matches (name, flags, state) + const char *name; + int flags, state; +{ + register int i; + int path_index, name_len; + char *path_list, *path_element, *match; + struct stat dotinfo; + static char **match_list = NULL; + static int match_list_size = 0; + static int match_index = 0; + + if (state == 0) + { + /* Create the list of matches. */ + if (match_list == 0) + { + match_list_size = 5; + match_list = strvec_create (match_list_size); + } + + /* Clear out the old match list. */ + for (i = 0; i < match_list_size; i++) + match_list[i] = 0; + + /* We haven't found any files yet. */ + match_index = 0; + + if (absolute_program (name)) + { + match_list[0] = find_absolute_program (name, flags); + match_list[1] = (char *)NULL; + path_list = (char *)NULL; + } + else + { + name_len = strlen (name); + file_to_lose_on = (char *)NULL; + dot_found_in_search = 0; + if (stat (".", &dotinfo) < 0) + dotinfo.st_dev = dotinfo.st_ino = 0; /* so same_file won't match */ + path_list = get_string_value ("PATH"); + path_index = 0; + } + + while (path_list && path_list[path_index]) + { + path_element = get_next_path_element (path_list, &path_index); + + if (path_element == 0) + break; + + match = find_in_path_element (name, path_element, flags, name_len, &dotinfo); + + free (path_element); + + if (match == 0) + continue; + + if (match_index + 1 == match_list_size) + { + match_list_size += 10; + match_list = strvec_resize (match_list, (match_list_size + 1)); + } + + match_list[match_index++] = match; + match_list[match_index] = (char *)NULL; + FREE (file_to_lose_on); + file_to_lose_on = (char *)NULL; + } + + /* We haven't returned any strings yet. */ + match_index = 0; + } + + match = match_list[match_index]; + + if (match) + match_index++; + + return (match); +} + +static char * +find_absolute_program (name, flags) + const char *name; + int flags; +{ + int st; + + st = file_status (name); + + /* If the file doesn't exist, quit now. */ + if ((st & FS_EXISTS) == 0) + return ((char *)NULL); + + /* If we only care about whether the file exists or not, return + this filename. Otherwise, maybe we care about whether this + file is executable. If it is, and that is what we want, return it. */ + if ((flags & FS_EXISTS) || ((flags & FS_EXEC_ONLY) && (st & FS_EXECABLE))) + return (savestring (name)); + + return (NULL); +} + +static char * +find_in_path_element (name, path, flags, name_len, dotinfop) + const char *name; + char *path; + int flags, name_len; + struct stat *dotinfop; +{ + int status; + char *full_path, *xpath; + + xpath = (posixly_correct == 0 && *path == '~') ? bash_tilde_expand (path, 0) : path; + + /* Remember the location of "." in the path, in all its forms + (as long as they begin with a `.', e.g. `./.') */ + if (dot_found_in_search == 0 && *xpath == '.') + dot_found_in_search = same_file (".", xpath, dotinfop, (struct stat *)NULL); + + full_path = sh_makepath (xpath, name, 0); + + status = file_status (full_path); + + if (xpath != path) + free (xpath); + + if ((status & FS_EXISTS) == 0) + { + free (full_path); + return ((char *)NULL); + } + + /* The file exists. If the caller simply wants the first file, here it is. */ + if (flags & FS_EXISTS) + return (full_path); + + /* If we have a readable file, and the caller wants a readable file, this + is it. */ + if ((flags & FS_READABLE) && (status & FS_READABLE)) + 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) && (flags & (FS_EXEC_ONLY|FS_EXEC_PREFERRED)) && + (((flags & FS_NODIRS) == 0) || ((status & FS_DIRECTORY) == 0))) + { + FREE (file_to_lose_on); + file_to_lose_on = (char *)NULL; + 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) && file_to_lose_on == 0 && exec_name_should_ignore (full_path) == 0) + file_to_lose_on = savestring (full_path); + + /* If we want only executable files, or we don't want directories and + this file is a directory, or we want a readable file and this file + isn't readable, fail. */ + if ((flags & (FS_EXEC_ONLY|FS_EXEC_PREFERRED)) || + ((flags & FS_NODIRS) && (status & FS_DIRECTORY)) || + ((flags & FS_READABLE) && (status & FS_READABLE) == 0)) + { + free (full_path); + return ((char *)NULL); + } + else + return (full_path); +} + +/* This does the dirty work for find_user_command_internal () and + user_command_matches (). + 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. + FS_NODIRS: Don't find any directories. +*/ +static char * +find_user_command_in_path (name, path_list, flags) + const char *name; + char *path_list; + int flags; +{ + char *full_path, *path; + int path_index, name_len; + struct stat dotinfo; + + /* 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 = find_absolute_program (name, flags); + return (full_path); + } + + if (path_list == 0 || *path_list == '\0') + return (savestring (name)); /* XXX */ + + file_to_lose_on = (char *)NULL; + name_len = strlen (name); + if (stat (".", &dotinfo) < 0) + dotinfo.st_dev = dotinfo.st_ino = 0; + path_index = 0; + + while (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 == 0) + break; + + /* Side effects: sets dot_found_in_search, possibly sets + file_to_lose_on. */ + full_path = find_in_path_element (name, path, flags, name_len, &dotinfo); + free (path); + + /* This should really be in find_in_path_element, but there isn't the + right combination of flags. */ + if (full_path && is_directory (full_path)) + { + free (full_path); + continue; + } + + if (full_path) + { + FREE (file_to_lose_on); + return (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. If the + caller specified FS_NODIRS, and file_to_lose_on is a directory, + return NULL. */ + if (file_to_lose_on && (flags & FS_NODIRS) && is_directory (file_to_lose_on)) + { + free (file_to_lose_on); + file_to_lose_on = (char *)NULL; + } + + return (file_to_lose_on); +} + +/* External interface to find a command given a $PATH. Separate from + find_user_command_in_path to allow future customization. */ +char * +find_in_path (name, path_list, flags) + const char *name; + char *path_list; + int flags; +{ + return (find_user_command_in_path (name, path_list, flags)); +} diff --git a/bash-5.1/findcmd.h b/bash-5.1/findcmd.h new file mode 100644 index 0000000..bf45781 --- /dev/null +++ b/bash-5.1/findcmd.h @@ -0,0 +1,47 @@ +/* findcmd.h - functions from findcmd.c. */ + +/* Copyright (C) 1997-2015,2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_FINDCMD_H_) +#define _FINDCMD_H_ + +#include "stdc.h" + +/* Flags for search_for_command */ +#define CMDSRCH_HASH 0x01 +#define CMDSRCH_STDPATH 0x02 +#define CMDSRCH_TEMPENV 0x04 + +extern int file_status PARAMS((const char *)); +extern int executable_file PARAMS((const char *)); +extern int is_directory PARAMS((const char *)); +extern int executable_or_directory PARAMS((const char *)); +extern char *find_user_command PARAMS((const char *)); +extern char *find_in_path PARAMS((const char *, char *, int)); +extern char *find_path_file PARAMS((const char *)); +extern char *search_for_command PARAMS((const char *, int)); +extern char *user_command_matches PARAMS((const char *, int, int)); +extern void setup_exec_ignore PARAMS((char *)); + +extern int dot_found_in_search; + +/* variables managed via shopt */ +extern int check_hashed_filenames; + +#endif /* _FINDCMD_H_ */ diff --git a/bash-5.1/flags.c b/bash-5.1/flags.c new file mode 100644 index 0000000..983f9a5 --- /dev/null +++ b/bash-5.1/flags.c @@ -0,0 +1,385 @@ +/* flags.c -- Everything about flags except the `set' command. That + is in builtins.c */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "shell.h" +#include "execute_cmd.h" +#include "flags.h" + +#if defined (BANG_HISTORY) +# include "bashhist.h" +#endif + +#if defined (JOB_CONTROL) +extern int set_job_control PARAMS((int)); +#endif + +/* **************************************************************** */ +/* */ +/* The Standard sh Flags. */ +/* */ +/* **************************************************************** */ + +/* Non-zero means automatically mark variables which are modified or created + as auto export variables. */ +int mark_modified_vars = 0; + +/* Non-zero causes asynchronous job notification. Otherwise, job state + notification only takes place just before a primary prompt is printed. */ +int asynchronous_notification = 0; + +/* Non-zero means exit immediately if a command exits with a non-zero + exit status. The first is what controls set -e; the second is what + bash uses internally. */ +int errexit_flag = 0; +int exit_immediately_on_error = 0; + +/* Non-zero means disable filename globbing. */ +int disallow_filename_globbing = 0; + +/* Non-zero means that all keyword arguments are placed into the environment + for a command, not just those that appear on the line before the command + name. */ +int place_keywords_in_env = 0; + +/* Non-zero means read commands, but don't execute them. This is useful + for debugging shell scripts that should do something hairy and possibly + destructive. */ +int read_but_dont_execute = 0; + +/* Non-zero means end of file is after one command. */ +int just_one_command = 0; + +/* Non-zero means don't overwrite existing files while doing redirections. */ +int noclobber = 0; + +/* Non-zero means trying to get the value of $i where $i is undefined + causes an error, instead of a null substitution. */ +int unbound_vars_is_error = 0; + +/* Non-zero means type out input lines after you read them. */ +int echo_input_at_read = 0; +int verbose_flag = 0; + +/* Non-zero means type out the command definition after reading, but + before executing. */ +int echo_command_at_execute = 0; + +/* Non-zero means turn on the job control features. */ +int jobs_m_flag = 0; + +/* Non-zero means this shell is interactive, even if running under a + pipe. */ +int forced_interactive = 0; + +/* By default, follow the symbolic links as if they were real directories + while hacking the `cd' command. This means that `cd ..' moves up in + the string of symbolic links that make up the current directory, instead + of the absolute directory. The shell variable `nolinks' also controls + this flag. */ +int no_symbolic_links = 0; + +/* **************************************************************** */ +/* */ +/* Non-Standard Flags Follow Here. */ +/* */ +/* **************************************************************** */ + +#if 0 +/* Non-zero means do lexical scoping in the body of a FOR command. */ +int lexical_scoping = 0; +#endif + +/* Non-zero means look up and remember command names in a hash table, */ +int hashing_enabled = 1; + +#if defined (BANG_HISTORY) +/* Non-zero means that we are doing history expansion. The default. + This means !22 gets the 22nd line of history. */ +int history_expansion = HISTEXPAND_DEFAULT; +int histexp_flag = 0; +#endif /* BANG_HISTORY */ + +/* Non-zero means that we allow comments to appear in interactive commands. */ +int interactive_comments = 1; + +#if defined (RESTRICTED_SHELL) +/* Non-zero means that this shell is `restricted'. A restricted shell + disallows: changing directories, command or path names containing `/', + unsetting or resetting the values of $PATH and $SHELL, and any type of + output redirection. */ +int restricted = 0; /* currently restricted */ +int restricted_shell = 0; /* shell was started in restricted mode. */ +#endif /* RESTRICTED_SHELL */ + +/* Non-zero means that this shell is running in `privileged' mode. This + is required if the shell is to run setuid. If the `-p' option is + not supplied at startup, and the real and effective uids or gids + differ, disable_priv_mode is called to relinquish setuid status. */ +int privileged_mode = 0; + +#if defined (BRACE_EXPANSION) +/* Zero means to disable brace expansion: foo{a,b} -> fooa foob */ +int brace_expansion = 1; +#endif + +/* Non-zero means that shell functions inherit the DEBUG trap. */ +int function_trace_mode = 0; + +/* Non-zero means that shell functions inherit the ERR trap. */ +int error_trace_mode = 0; + +/* Non-zero means that the rightmost non-zero exit status in a pipeline + is the exit status of the entire pipeline. If each processes exits + with a 0 status, the status of the pipeline is 0. */ +int pipefail_opt = 0; + +/* **************************************************************** */ +/* */ +/* The Flags ALIST. */ +/* */ +/* **************************************************************** */ + +const struct flags_alist shell_flags[] = { + /* Standard sh flags. */ + { 'a', &mark_modified_vars }, +#if defined (JOB_CONTROL) + { 'b', &asynchronous_notification }, +#endif /* JOB_CONTROL */ + { 'e', &errexit_flag }, + { 'f', &disallow_filename_globbing }, + { 'h', &hashing_enabled }, + { 'i', &forced_interactive }, + { 'k', &place_keywords_in_env }, +#if defined (JOB_CONTROL) + { 'm', &jobs_m_flag }, +#endif /* JOB_CONTROL */ + { 'n', &read_but_dont_execute }, + { 'p', &privileged_mode }, +#if defined (RESTRICTED_SHELL) + { 'r', &restricted }, +#endif /* RESTRICTED_SHELL */ + { 't', &just_one_command }, + { 'u', &unbound_vars_is_error }, + { 'v', &verbose_flag }, + { 'x', &echo_command_at_execute }, + + /* New flags that control non-standard things. */ +#if 0 + { 'l', &lexical_scoping }, +#endif +#if defined (BRACE_EXPANSION) + { 'B', &brace_expansion }, +#endif + { 'C', &noclobber }, + { 'E', &error_trace_mode }, +#if defined (BANG_HISTORY) + { 'H', &histexp_flag }, +#endif /* BANG_HISTORY */ + { 'P', &no_symbolic_links }, + { 'T', &function_trace_mode }, + {0, (int *)NULL} +}; + +#define NUM_SHELL_FLAGS (sizeof (shell_flags) / sizeof (struct flags_alist)) + +char optflags[NUM_SHELL_FLAGS+4] = { '+' }; + +int * +find_flag (name) + int name; +{ + int i; + for (i = 0; shell_flags[i].name; i++) + { + if (shell_flags[i].name == name) + return (shell_flags[i].value); + } + return (FLAG_UNKNOWN); +} + +/* Change the state of a flag, and return it's original value, or return + FLAG_ERROR if there is no flag FLAG. ON_OR_OFF must be either + FLAG_ON or FLAG_OFF. */ +int +change_flag (flag, on_or_off) + int flag; + int on_or_off; +{ + int *value, old_value; + +#if defined (RESTRICTED_SHELL) + /* Don't allow "set +r" in a shell which is `restricted'. */ + if (restricted && flag == 'r' && on_or_off == FLAG_OFF) + return (FLAG_ERROR); +#endif /* RESTRICTED_SHELL */ + + value = find_flag (flag); + + if ((value == (int *)FLAG_UNKNOWN) || (on_or_off != FLAG_ON && on_or_off != FLAG_OFF)) + return (FLAG_ERROR); + + old_value = *value; + *value = (on_or_off == FLAG_ON) ? 1 : 0; + + /* Special cases for a few flags. */ + switch (flag) + { +#if defined (BANG_HISTORY) + case 'H': + history_expansion = histexp_flag; + if (on_or_off == FLAG_ON) + bash_initialize_history (); + break; +#endif + +#if defined (JOB_CONTROL) + case 'm': + set_job_control (on_or_off == FLAG_ON); + break; +#endif /* JOB_CONTROL */ + + case 'e': + if (builtin_ignoring_errexit == 0) + exit_immediately_on_error = errexit_flag; + break; + + case 'n': + if (interactive_shell) + read_but_dont_execute = 0; + break; + + case 'p': + if (on_or_off == FLAG_OFF) + disable_priv_mode (); + break; + +#if defined (RESTRICTED_SHELL) + case 'r': + if (on_or_off == FLAG_ON && shell_initialized) + maybe_make_restricted (shell_name); + break; +#endif + + case 'v': + echo_input_at_read = verbose_flag; + break; + } + + return (old_value); +} + +/* Return a string which is the names of all the currently + set shell flags. */ +char * +which_set_flags () +{ + char *temp; + int i, string_index; + + temp = (char *)xmalloc (1 + NUM_SHELL_FLAGS + read_from_stdin + want_pending_command); + for (i = string_index = 0; shell_flags[i].name; i++) + if (*(shell_flags[i].value)) + temp[string_index++] = shell_flags[i].name; + + if (want_pending_command) + temp[string_index++] = 'c'; + if (read_from_stdin) + temp[string_index++] = 's'; + + temp[string_index] = '\0'; + return (temp); +} + +char * +get_current_flags () +{ + char *temp; + int i; + + temp = (char *)xmalloc (1 + NUM_SHELL_FLAGS); + for (i = 0; shell_flags[i].name; i++) + temp[i] = *(shell_flags[i].value); + temp[i] = '\0'; + return (temp); +} + +void +set_current_flags (bitmap) + const char *bitmap; +{ + int i; + + if (bitmap == 0) + return; + for (i = 0; shell_flags[i].name; i++) + *(shell_flags[i].value) = bitmap[i]; +} + +void +reset_shell_flags () +{ + mark_modified_vars = disallow_filename_globbing = 0; + place_keywords_in_env = read_but_dont_execute = just_one_command = 0; + noclobber = unbound_vars_is_error = 0; + echo_command_at_execute = jobs_m_flag = forced_interactive = 0; + no_symbolic_links = 0; + privileged_mode = pipefail_opt = 0; + + error_trace_mode = function_trace_mode = 0; + + exit_immediately_on_error = errexit_flag = 0; + echo_input_at_read = verbose_flag = 0; + + hashing_enabled = interactive_comments = 1; + +#if defined (JOB_CONTROL) + asynchronous_notification = 0; +#endif + +#if defined (BANG_HISTORY) + histexp_flag = 0; +#endif + +#if defined (BRACE_EXPANSION) + brace_expansion = 1; +#endif + +#if defined (RESTRICTED_SHELL) + restricted = 0; +#endif +} + +void +initialize_flags () +{ + register int i; + + for (i = 0; shell_flags[i].name; i++) + optflags[i+1] = shell_flags[i].name; + optflags[++i] = 'o'; + optflags[++i] = ';'; + optflags[i+1] = '\0'; +} diff --git a/bash-5.1/flags.h b/bash-5.1/flags.h new file mode 100644 index 0000000..a3b5daa --- /dev/null +++ b/bash-5.1/flags.h @@ -0,0 +1,87 @@ +/* flags.h -- a list of all the flags that the shell knows about. You add + a flag to this program by adding the name here, and in flags.c. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_FLAGS_H_) +#define _FLAGS_H_ + +#include "stdc.h" + +/* Welcome to the world of Un*x, where everything is slightly backwards. */ +#define FLAG_ON '-' +#define FLAG_OFF '+' + +#define FLAG_ERROR -1 +#define FLAG_UNKNOWN (int *)0 + +/* The thing that we build the array of flags out of. */ +struct flags_alist { + char name; + int *value; +}; + +extern const struct flags_alist shell_flags[]; +extern char optflags[]; + +extern int + mark_modified_vars, errexit_flag, exit_immediately_on_error, + disallow_filename_globbing, + place_keywords_in_env, read_but_dont_execute, + just_one_command, unbound_vars_is_error, echo_input_at_read, verbose_flag, + echo_command_at_execute, noclobber, + hashing_enabled, forced_interactive, privileged_mode, jobs_m_flag, + asynchronous_notification, interactive_comments, no_symbolic_links, + function_trace_mode, error_trace_mode, pipefail_opt; + +/* -c, -s invocation options -- not really flags, but they show up in $- */ +extern int want_pending_command, read_from_stdin; + +#if 0 +extern int lexical_scoping; +#endif + +#if defined (BRACE_EXPANSION) +extern int brace_expansion; +#endif + +#if defined (BANG_HISTORY) +extern int history_expansion; +extern int histexp_flag; +#endif /* BANG_HISTORY */ + +#if defined (RESTRICTED_SHELL) +extern int restricted; +extern int restricted_shell; +#endif /* RESTRICTED_SHELL */ + +extern int *find_flag PARAMS((int)); +extern int change_flag PARAMS((int, int)); +extern char *which_set_flags PARAMS((void)); +extern void reset_shell_flags PARAMS((void)); + +extern char *get_current_flags PARAMS((void)); +extern void set_current_flags PARAMS((const char *)); + +extern void initialize_flags PARAMS((void)); + +/* A macro for efficiency. */ +#define change_flag_char(flag, on_or_off) change_flag (flag, on_or_off) + +#endif /* _FLAGS_H_ */ diff --git a/bash-5.1/general.c b/bash-5.1/general.c new file mode 100644 index 0000000..50d5216 --- /dev/null +++ b/bash-5.1/general.c @@ -0,0 +1,1441 @@ +/* general.c -- Stuff that is used by all files. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" +#if defined (HAVE_SYS_PARAM_H) +# include +#endif +#include "posixstat.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "filecntl.h" +#include "bashansi.h" +#include +#include "chartypes.h" +#include + +#include "bashintl.h" + +#include "shell.h" +#include "parser.h" +#include "flags.h" +#include "findcmd.h" +#include "test.h" +#include "trap.h" +#include "pathexp.h" + +#include "builtins/common.h" + +#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) +# include /* mbschr */ +#endif + +#include + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#ifdef __CYGWIN__ +# include +#endif + +static char *bash_special_tilde_expansions PARAMS((char *)); +static int unquoted_tilde_word PARAMS((const char *)); +static void initialize_group_array PARAMS((void)); + +/* A standard error message to use when getcwd() returns NULL. */ +const char * const bash_getcwd_errstr = N_("getcwd: cannot access parent directories"); + +/* Do whatever is necessary to initialize `Posix mode'. This currently + modifies the following variables which are controlled via shopt: + interactive_comments + source_uses_path + expand_aliases + inherit_errexit + print_shift_error + posixglob + + and the following variables which cannot be user-modified: + + source_searches_cwd + + If we add to the first list, we need to change the table and functions + below */ + +static struct { + int *posix_mode_var; +} posix_vars[] = +{ + &interactive_comments, + &source_uses_path, + &expand_aliases, + &inherit_errexit, + &print_shift_error, + 0 +}; + +static char *saved_posix_vars = 0; + +void +posix_initialize (on) + int on; +{ + /* Things that should be turned on when posix mode is enabled. */ + if (on != 0) + { + interactive_comments = source_uses_path = expand_aliases = 1; + inherit_errexit = 1; + source_searches_cwd = 0; + print_shift_error = 1; + } + + /* Things that should be turned on when posix mode is disabled. */ + else if (saved_posix_vars) /* on == 0, restore saved settings */ + { + set_posix_options (saved_posix_vars); + free (saved_posix_vars); + saved_posix_vars = 0; + } + else /* on == 0, restore a default set of settings */ + { + source_searches_cwd = 1; + expand_aliases = interactive_shell; + print_shift_error = 0; + } +} + +int +num_posix_options () +{ + return ((sizeof (posix_vars) / sizeof (posix_vars[0])) - 1); +} + +char * +get_posix_options (bitmap) + char *bitmap; +{ + register int i; + + if (bitmap == 0) + bitmap = (char *)xmalloc (num_posix_options ()); /* no trailing NULL */ + for (i = 0; posix_vars[i].posix_mode_var; i++) + bitmap[i] = *(posix_vars[i].posix_mode_var); + return bitmap; +} + +#undef save_posix_options +void +save_posix_options () +{ + saved_posix_vars = get_posix_options (saved_posix_vars); +} + +void +set_posix_options (bitmap) + const char *bitmap; +{ + register int i; + + for (i = 0; posix_vars[i].posix_mode_var; i++) + *(posix_vars[i].posix_mode_var) = bitmap[i]; +} + +/* **************************************************************** */ +/* */ +/* Functions to convert to and from and display non-standard types */ +/* */ +/* **************************************************************** */ + +#if defined (RLIMTYPE) +RLIMTYPE +string_to_rlimtype (s) + char *s; +{ + RLIMTYPE ret; + int neg; + + ret = 0; + neg = 0; + while (s && *s && whitespace (*s)) + s++; + if (s && (*s == '-' || *s == '+')) + { + neg = *s == '-'; + s++; + } + for ( ; s && *s && DIGIT (*s); s++) + ret = (ret * 10) + TODIGIT (*s); + return (neg ? -ret : ret); +} + +void +print_rlimtype (n, addnl) + RLIMTYPE n; + int addnl; +{ + char s[INT_STRLEN_BOUND (RLIMTYPE) + 1], *p; + + p = s + sizeof(s); + *--p = '\0'; + + if (n < 0) + { + do + *--p = '0' - n % 10; + while ((n /= 10) != 0); + + *--p = '-'; + } + else + { + do + *--p = '0' + n % 10; + while ((n /= 10) != 0); + } + + printf ("%s%s", p, addnl ? "\n" : ""); +} +#endif /* RLIMTYPE */ + +/* **************************************************************** */ +/* */ +/* Input Validation Functions */ +/* */ +/* **************************************************************** */ + +/* Return non-zero if all of the characters in STRING are digits. */ +int +all_digits (string) + const char *string; +{ + register const char *s; + + for (s = string; *s; s++) + if (DIGIT (*s) == 0) + return (0); + + return (1); +} + +/* Return non-zero if the characters pointed to by STRING constitute a + valid number. Stuff the converted number into RESULT if RESULT is + not null. */ +int +legal_number (string, result) + const char *string; + intmax_t *result; +{ + intmax_t value; + char *ep; + + if (result) + *result = 0; + + if (string == 0) + return 0; + + errno = 0; + value = strtoimax (string, &ep, 10); + if (errno || ep == string) + return 0; /* errno is set on overflow or underflow */ + + /* Skip any trailing whitespace, since strtoimax does not. */ + while (whitespace (*ep)) + ep++; + + /* If *string is not '\0' but *ep is '\0' on return, the entire string + is valid. */ + if (*string && *ep == '\0') + { + if (result) + *result = value; + /* The SunOS4 implementation of strtol() will happily ignore + overflow conditions, so this cannot do overflow correctly + on those systems. */ + return 1; + } + + return (0); +} + +/* 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. */ +int +legal_identifier (name) + const char *name; +{ + register const char *s; + unsigned char c; + + if (!name || !(c = *name) || (legal_variable_starter (c) == 0)) + return (0); + + for (s = name + 1; (c = *s) != 0; s++) + { + if (legal_variable_char (c) == 0) + return (0); + } + return (1); +} + +/* Return 1 if NAME is a valid value that can be assigned to a nameref + variable. FLAGS can be 2, in which case the name is going to be used + to create a variable. Other values are currently unused, but could + be used to allow values to be stored and indirectly referenced, but + not used in assignments. */ +int +valid_nameref_value (name, flags) + const char *name; + int flags; +{ + if (name == 0 || *name == 0) + return 0; + + /* valid identifier */ +#if defined (ARRAY_VARS) + if (legal_identifier (name) || (flags != 2 && valid_array_reference (name, 0))) +#else + if (legal_identifier (name)) +#endif + return 1; + + return 0; +} + +int +check_selfref (name, value, flags) + const char *name; + char *value; + int flags; +{ + char *t; + + if (STREQ (name, value)) + return 1; + +#if defined (ARRAY_VARS) + if (valid_array_reference (value, 0)) + { + t = array_variable_name (value, 0, (char **)NULL, (int *)NULL); + if (t && STREQ (name, t)) + { + free (t); + return 1; + } + free (t); + } +#endif + + return 0; /* not a self reference */ +} + +/* Make sure that WORD is a valid shell identifier, i.e. + does not contain a dollar sign, nor is quoted in any way. + If CHECK_WORD is non-zero, + the word is checked to ensure that it consists of only letters, + digits, and underscores, and does not consist of all digits. */ +int +check_identifier (word, check_word) + WORD_DESC *word; + int check_word; +{ + if (word->flags & (W_HASDOLLAR|W_QUOTED)) /* XXX - HASDOLLAR? */ + { + internal_error (_("`%s': not a valid identifier"), word->word); + return (0); + } + else if (check_word && (all_digits (word->word) || legal_identifier (word->word) == 0)) + { + internal_error (_("`%s': not a valid identifier"), word->word); + return (0); + } + else + return (1); +} + +/* Return 1 if STRING is a function name that the shell will import from + the environment. Currently we reject attempts to import shell functions + containing slashes, beginning with newlines or containing blanks. In + Posix mode, we require that STRING be a valid shell identifier. Not + used yet. */ +int +importable_function_name (string, len) + const char *string; + size_t len; +{ + if (absolute_program (string)) /* don't allow slash */ + return 0; + if (*string == '\n') /* can't start with a newline */ + return 0; + if (shellblank (*string) || shellblank(string[len-1])) + return 0; + return (posixly_correct ? legal_identifier (string) : 1); +} + +int +exportable_function_name (string) + const char *string; +{ + if (absolute_program (string)) + return 0; + if (mbschr (string, '=') != 0) + return 0; + return 1; +} + +/* Return 1 if STRING comprises a valid alias name. The shell accepts + essentially all characters except those which must be quoted to the + parser (which disqualifies them from alias expansion anyway) and `/'. */ +int +legal_alias_name (string, flags) + const char *string; + int flags; +{ + register const char *s; + + for (s = string; *s; s++) + if (shellbreak (*s) || shellxquote (*s) || shellexp (*s) || (*s == '/')) + return 0; + return 1; +} + +/* Returns non-zero if STRING is an assignment statement. The returned value + is the index of the `=' sign. If FLAGS&1 we are expecting a compound assignment + and require an array subscript before the `=' to denote an assignment + statement. */ +int +assignment (string, flags) + const char *string; + int flags; +{ + register unsigned char c; + register int newi, indx; + + c = string[indx = 0]; + +#if defined (ARRAY_VARS) + /* If parser_state includes PST_COMPASSIGN, FLAGS will include 1, so we are + parsing the contents of a compound assignment. If parser_state includes + PST_REPARSE, we are in the middle of an assignment statement and breaking + the words between the parens into words and assignment statements, but + we don't need to check for that right now. Within a compound assignment, + the subscript is required to make the word an assignment statement. If + we don't have a subscript, even if the word is a valid assignment + statement otherwise, we don't want to treat it as one. */ + if ((flags & 1) && c != '[') /* ] */ + return (0); + else if ((flags & 1) == 0 && legal_variable_starter (c) == 0) +#else + if (legal_variable_starter (c) == 0) +#endif + return (0); + + while (c = string[indx]) + { + /* The following is safe. Note that '=' at the start of a word + is not an assignment statement. */ + if (c == '=') + return (indx); + +#if defined (ARRAY_VARS) + if (c == '[') + { + newi = skipsubscript (string, indx, (flags & 2) ? 1 : 0); + /* XXX - why not check for blank subscripts here, if we do in + valid_array_reference? */ + if (string[newi++] != ']') + return (0); + if (string[newi] == '+' && string[newi+1] == '=') + return (newi + 1); + return ((string[newi] == '=') ? newi : 0); + } +#endif /* ARRAY_VARS */ + + /* Check for `+=' */ + if (c == '+' && string[indx+1] == '=') + return (indx + 1); + + /* Variable names in assignment statements may contain only letters, + digits, and `_'. */ + if (legal_variable_char (c) == 0) + return (0); + + indx++; + } + return (0); +} + +int +line_isblank (line) + const char *line; +{ + register int i; + + if (line == 0) + return 0; /* XXX */ + for (i = 0; line[i]; i++) + if (isblank ((unsigned char)line[i]) == 0) + break; + return (line[i] == '\0'); +} + +/* **************************************************************** */ +/* */ +/* Functions to manage files and file descriptors */ +/* */ +/* **************************************************************** */ + +/* A function to unset no-delay mode on a file descriptor. Used in shell.c + to unset it on the fd passed as stdin. Should be called on stdin if + readline gets an EAGAIN or EWOULDBLOCK when trying to read input. */ + +#if !defined (O_NDELAY) +# if defined (FNDELAY) +# define O_NDELAY FNDELAY +# endif +#endif /* O_NDELAY */ + +/* Make sure no-delay mode is not set on file descriptor FD. */ +int +sh_unset_nodelay_mode (fd) + int fd; +{ + int flags, bflags; + + if ((flags = fcntl (fd, F_GETFL, 0)) < 0) + return -1; + + bflags = 0; + + /* This is defined to O_NDELAY in filecntl.h if O_NONBLOCK is not present + and O_NDELAY is defined. */ +#ifdef O_NONBLOCK + bflags |= O_NONBLOCK; +#endif + +#ifdef O_NDELAY + bflags |= O_NDELAY; +#endif + + if (flags & bflags) + { + flags &= ~bflags; + return (fcntl (fd, F_SETFL, flags)); + } + + return 0; +} + +/* Just a wrapper for the define in include/filecntl.h */ +int +sh_setclexec (fd) + int fd; +{ + return (SET_CLOSE_ON_EXEC (fd)); +} + +/* Return 1 if file descriptor FD is valid; 0 otherwise. */ +int +sh_validfd (fd) + int fd; +{ + return (fcntl (fd, F_GETFD, 0) >= 0); +} + +int +fd_ispipe (fd) + int fd; +{ + errno = 0; + return ((lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE)); +} + +/* There is a bug in the NeXT 2.1 rlogind that causes opens + of /dev/tty to fail. */ + +#if defined (__BEOS__) +/* On BeOS, opening in non-blocking mode exposes a bug in BeOS, so turn it + into a no-op. This should probably go away in the future. */ +# undef O_NONBLOCK +# define O_NONBLOCK 0 +#endif /* __BEOS__ */ + +void +check_dev_tty () +{ + int tty_fd; + char *tty; + + tty_fd = open ("/dev/tty", O_RDWR|O_NONBLOCK); + + if (tty_fd < 0) + { + tty = (char *)ttyname (fileno (stdin)); + if (tty == 0) + return; + tty_fd = open (tty, O_RDWR|O_NONBLOCK); + } + if (tty_fd >= 0) + close (tty_fd); +} + +/* 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) + const 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)); +} + +/* Move FD to a number close to the maximum number of file descriptors + allowed in the shell process, to avoid the user stepping on it with + redirection and causing us extra work. If CHECK_NEW is non-zero, + we check whether or not the file descriptors are in use before + duplicating FD onto them. MAXFD says where to start checking the + file descriptors. If it's less than 20, we get the maximum value + available from getdtablesize(2). */ +int +move_to_high_fd (fd, check_new, maxfd) + int fd, check_new, maxfd; +{ + int script_fd, nfds, ignore; + + if (maxfd < 20) + { + nfds = getdtablesize (); + if (nfds <= 0) + nfds = 20; + if (nfds > HIGH_FD_MAX) + nfds = HIGH_FD_MAX; /* reasonable maximum */ + } + else + nfds = maxfd; + + for (nfds--; check_new && nfds > 3; nfds--) + if (fcntl (nfds, F_GETFD, &ignore) == -1) + break; + + if (nfds > 3 && fd != nfds && (script_fd = dup2 (fd, nfds)) != -1) + { + if (check_new == 0 || fd != fileno (stderr)) /* don't close stderr */ + close (fd); + return (script_fd); + } + + /* OK, we didn't find one less than our artificial maximum; return the + original file descriptor. */ + return (fd); +} + +/* 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. */ + +int +check_binary_file (sample, sample_len) + const char *sample; + int sample_len; +{ + register int i; + unsigned char c; + + for (i = 0; i < sample_len; i++) + { + c = sample[i]; + if (c == '\n') + return (0); + if (c == '\0') + return (1); + } + + return (0); +} + +/* **************************************************************** */ +/* */ +/* Functions to manipulate pipes */ +/* */ +/* **************************************************************** */ + +int +sh_openpipe (pv) + int *pv; +{ + int r; + + if ((r = pipe (pv)) < 0) + return r; + + pv[0] = move_to_high_fd (pv[0], 1, 64); + pv[1] = move_to_high_fd (pv[1], 1, 64); + + return 0; +} + +int +sh_closepipe (pv) + int *pv; +{ + if (pv[0] >= 0) + close (pv[0]); + + if (pv[1] >= 0) + close (pv[1]); + + pv[0] = pv[1] = -1; + return 0; +} + +/* **************************************************************** */ +/* */ +/* Functions to inspect pathnames */ +/* */ +/* **************************************************************** */ + +int +file_exists (fn) + const char *fn; +{ + struct stat sb; + + return (stat (fn, &sb) == 0); +} + +int +file_isdir (fn) + const char *fn; +{ + struct stat sb; + + return ((stat (fn, &sb) == 0) && S_ISDIR (sb.st_mode)); +} + +int +file_iswdir (fn) + const char *fn; +{ + return (file_isdir (fn) && sh_eaccess (fn, W_OK) == 0); +} + +/* Return 1 if STRING is "." or "..", optionally followed by a directory + separator */ +int +path_dot_or_dotdot (string) + const char *string; +{ + if (string == 0 || *string == '\0' || *string != '.') + return (0); + + /* string[0] == '.' */ + if (PATHSEP(string[1]) || (string[1] == '.' && PATHSEP(string[2]))) + return (1); + + return (0); +} + +/* Return 1 if STRING contains an absolute pathname, else 0. Used by `cd' + to decide whether or not to look up a directory name in $CDPATH. */ +int +absolute_pathname (string) + const char *string; +{ + if (string == 0 || *string == '\0') + return (0); + + if (ABSPATH(string)) + return (1); + + if (string[0] == '.' && PATHSEP(string[1])) /* . and ./ */ + return (1); + + if (string[0] == '.' && string[1] == '.' && PATHSEP(string[2])) /* .. and ../ */ + return (1); + + return (0); +} + +/* Return 1 if STRING is an absolute program name; it is absolute if it + contains any slashes. This is used to decide whether or not to look + up through $PATH. */ +int +absolute_program (string) + const char *string; +{ + return ((char *)mbschr (string, '/') != (char *)NULL); +} + +/* **************************************************************** */ +/* */ +/* Functions to manipulate pathnames */ +/* */ +/* **************************************************************** */ + +/* Turn STRING (a pathname) into an absolute pathname, assuming that + DOT_PATH contains the symbolic location of `.'. This always + returns a new string, even if STRING was an absolute pathname to + begin with. */ +char * +make_absolute (string, dot_path) + const char *string, *dot_path; +{ + char *result; + + if (dot_path == 0 || ABSPATH(string)) +#ifdef __CYGWIN__ + { + char pathbuf[PATH_MAX + 1]; + + /* WAS cygwin_conv_to_full_posix_path (string, pathbuf); */ + cygwin_conv_path (CCP_WIN_A_TO_POSIX, string, pathbuf, PATH_MAX); + result = savestring (pathbuf); + } +#else + result = savestring (string); +#endif + else + result = sh_makepath (dot_path, string, 0); + + return (result); +} + +/* Return the `basename' of the pathname in STRING (the stuff after the + last '/'). If STRING is `/', just return it. */ +char * +base_pathname (string) + char *string; +{ + char *p; + +#if 0 + if (absolute_pathname (string) == 0) + return (string); +#endif + + if (string[0] == '/' && string[1] == 0) + return (string); + + p = (char *)strrchr (string, '/'); + return (p ? ++p : string); +} + +/* Return the full pathname of FILE. Easy. Filenames that begin + with a '/' are returned as themselves. Other filenames have + the current working directory prepended. A new string is + returned in either case. */ +char * +full_pathname (file) + char *file; +{ + char *ret; + + file = (*file == '~') ? bash_tilde_expand (file, 0) : savestring (file); + + if (ABSPATH(file)) + return (file); + + ret = sh_makepath ((char *)NULL, file, (MP_DOCWD|MP_RMDOT)); + free (file); + + return (ret); +} + +/* A slightly related function. Get the prettiest name of this + directory possible. */ +static char tdir[PATH_MAX]; + +/* Return a pretty pathname. If the first part of the pathname is + the same as $HOME, then replace that with `~'. */ +char * +polite_directory_format (name) + char *name; +{ + char *home; + int l; + + home = get_string_value ("HOME"); + l = home ? strlen (home) : 0; + if (l > 1 && strncmp (home, name, l) == 0 && (!name[l] || name[l] == '/')) + { + strncpy (tdir + 1, name + l, sizeof(tdir) - 2); + tdir[0] = '~'; + tdir[sizeof(tdir) - 1] = '\0'; + return (tdir); + } + else + return (name); +} + +/* Trim NAME. If NAME begins with `~/', skip over tilde prefix. Trim to + keep any tilde prefix and PROMPT_DIRTRIM trailing directory components + and replace the intervening characters with `...' */ +char * +trim_pathname (name, maxlen) + char *name; + int maxlen; +{ + int nlen, ndirs; + intmax_t nskip; + char *nbeg, *nend, *ntail, *v; + + if (name == 0 || (nlen = strlen (name)) == 0) + return name; + nend = name + nlen; + + v = get_string_value ("PROMPT_DIRTRIM"); + if (v == 0 || *v == 0) + return name; + if (legal_number (v, &nskip) == 0 || nskip <= 0) + return name; + + /* Skip over tilde prefix */ + nbeg = name; + if (name[0] == '~') + for (nbeg = name; *nbeg; nbeg++) + if (*nbeg == '/') + { + nbeg++; + break; + } + if (*nbeg == 0) + return name; + + for (ndirs = 0, ntail = nbeg; *ntail; ntail++) + if (*ntail == '/') + ndirs++; + if (ndirs < nskip) + return name; + + for (ntail = (*nend == '/') ? nend : nend - 1; ntail > nbeg; ntail--) + { + if (*ntail == '/') + nskip--; + if (nskip == 0) + break; + } + if (ntail == nbeg) + return name; + + /* Now we want to return name[0..nbeg]+"..."+ntail, modifying name in place */ + nlen = ntail - nbeg; + if (nlen <= 3) + return name; + + *nbeg++ = '.'; + *nbeg++ = '.'; + *nbeg++ = '.'; + + nlen = nend - ntail; + memmove (nbeg, ntail, nlen); + nbeg[nlen] = '\0'; + + return name; +} + +/* Return a printable representation of FN without special characters. The + caller is responsible for freeing memory if this returns something other + than its argument. If FLAGS is non-zero, we are printing for portable + re-input and should single-quote filenames appropriately. */ +char * +printable_filename (fn, flags) + char *fn; + int flags; +{ + char *newf; + + if (ansic_shouldquote (fn)) + newf = ansic_quote (fn, 0, NULL); + else if (flags && sh_contains_shell_metas (fn)) + newf = sh_single_quote (fn); + else + newf = fn; + + return newf; +} + +/* Given a string containing units of information separated by colons, + return the next one pointed to by (P_INDEX), or NULL if there are no more. + Advance (P_INDEX) to the character after the colon. */ +char * +extract_colon_unit (string, p_index) + char *string; + int *p_index; +{ + int i, start, len; + char *value; + + if (string == 0) + return (string); + + len = strlen (string); + if (*p_index >= len) + return ((char *)NULL); + + i = *p_index; + + /* 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++; + + for (start = i; string[i] && string[i] != ':'; i++) + ; + + *p_index = i; + + if (i == start) + { + if (string[i]) + (*p_index)++; + /* Return "" in the case of a trailing `:'. */ + value = (char *)xmalloc (1); + value[0] = '\0'; + } + else + value = substring (string, start, i); + + return (value); +} + +/* **************************************************************** */ +/* */ +/* Tilde Initialization and Expansion */ +/* */ +/* **************************************************************** */ + +#if defined (PUSHD_AND_POPD) +extern char *get_dirstack_from_string PARAMS((char *)); +#endif + +static char **bash_tilde_prefixes; +static char **bash_tilde_prefixes2; +static char **bash_tilde_suffixes; +static char **bash_tilde_suffixes2; + +/* If tilde_expand hasn't been able to expand the text, perhaps it + is a special shell expansion. This function is installed as the + tilde_expansion_preexpansion_hook. It knows how to expand ~- and ~+. + If PUSHD_AND_POPD is defined, ~[+-]N expands to directories from the + directory stack. */ +static char * +bash_special_tilde_expansions (text) + char *text; +{ + char *result; + + result = (char *)NULL; + + if (text[0] == '+' && text[1] == '\0') + result = get_string_value ("PWD"); + else if (text[0] == '-' && text[1] == '\0') + result = get_string_value ("OLDPWD"); +#if defined (PUSHD_AND_POPD) + else if (DIGIT (*text) || ((*text == '+' || *text == '-') && DIGIT (text[1]))) + result = get_dirstack_from_string (text); +#endif + + return (result ? savestring (result) : (char *)NULL); +} + +/* Initialize the tilde expander. In Bash, we handle `~-' and `~+', as + well as handling special tilde prefixes; `:~" and `=~' are indications + that we should do tilde expansion. */ +void +tilde_initialize () +{ + static int times_called = 0; + + /* Tell the tilde expander that we want a crack first. */ + tilde_expansion_preexpansion_hook = bash_special_tilde_expansions; + + /* Tell the tilde expander about special strings which start a tilde + expansion, and the special strings that end one. Only do this once. + tilde_initialize () is called from within bashline_reinitialize (). */ + if (times_called++ == 0) + { + bash_tilde_prefixes = strvec_create (3); + bash_tilde_prefixes[0] = "=~"; + bash_tilde_prefixes[1] = ":~"; + bash_tilde_prefixes[2] = (char *)NULL; + + bash_tilde_prefixes2 = strvec_create (2); + bash_tilde_prefixes2[0] = ":~"; + bash_tilde_prefixes2[1] = (char *)NULL; + + tilde_additional_prefixes = bash_tilde_prefixes; + + bash_tilde_suffixes = strvec_create (3); + bash_tilde_suffixes[0] = ":"; + bash_tilde_suffixes[1] = "=~"; /* XXX - ?? */ + bash_tilde_suffixes[2] = (char *)NULL; + + tilde_additional_suffixes = bash_tilde_suffixes; + + bash_tilde_suffixes2 = strvec_create (2); + bash_tilde_suffixes2[0] = ":"; + bash_tilde_suffixes2[1] = (char *)NULL; + } +} + +/* POSIX.2, 3.6.1: A tilde-prefix consists of an unquoted tilde character + at the beginning of the word, followed by all of the characters preceding + the first unquoted slash in the word, or all the characters in the word + if there is no slash...If none of the characters in the tilde-prefix are + quoted, the characters in the tilde-prefix following the tilde shell be + treated as a possible login name. */ + +#define TILDE_END(c) ((c) == '\0' || (c) == '/' || (c) == ':') + +static int +unquoted_tilde_word (s) + const char *s; +{ + const char *r; + + for (r = s; TILDE_END(*r) == 0; r++) + { + switch (*r) + { + case '\\': + case '\'': + case '"': + return 0; + } + } + return 1; +} + +/* Find the end of the tilde-prefix starting at S, and return the tilde + prefix in newly-allocated memory. Return the length of the string in + *LENP. FLAGS tells whether or not we're in an assignment context -- + if so, `:' delimits the end of the tilde prefix as well. */ +char * +bash_tilde_find_word (s, flags, lenp) + const char *s; + int flags, *lenp; +{ + const char *r; + char *ret; + int l; + + for (r = s; *r && *r != '/'; r++) + { + /* Short-circuit immediately if we see a quote character. Even though + POSIX says that `the first unquoted slash' (or `:') terminates the + tilde-prefix, in practice, any quoted portion of the tilde prefix + will cause it to not be expanded. */ + if (*r == '\\' || *r == '\'' || *r == '"') + { + ret = savestring (s); + if (lenp) + *lenp = 0; + return ret; + } + else if (flags && *r == ':') + break; + } + l = r - s; + ret = xmalloc (l + 1); + strncpy (ret, s, l); + ret[l] = '\0'; + if (lenp) + *lenp = l; + return ret; +} + +/* Tilde-expand S by running it through the tilde expansion library. + ASSIGN_P is 1 if this is a variable assignment, so the alternate + tilde prefixes should be enabled (`=~' and `:~', see above). If + ASSIGN_P is 2, we are expanding the rhs of an assignment statement, + so `=~' is not valid. */ +char * +bash_tilde_expand (s, assign_p) + const char *s; + int assign_p; +{ + int r; + char *ret; + + tilde_additional_prefixes = assign_p == 0 ? (char **)0 + : (assign_p == 2 ? bash_tilde_prefixes2 : bash_tilde_prefixes); + if (assign_p == 2) + tilde_additional_suffixes = bash_tilde_suffixes2; + + r = (*s == '~') ? unquoted_tilde_word (s) : 1; + ret = r ? tilde_expand (s) : savestring (s); + + QUIT; + + return (ret); +} + +/* **************************************************************** */ +/* */ +/* Functions to manipulate and search the group list */ +/* */ +/* **************************************************************** */ + +static int ngroups, maxgroups; + +/* The set of groups that this user is a member of. */ +static GETGROUPS_T *group_array = (GETGROUPS_T *)NULL; + +#if !defined (NOGROUP) +# define NOGROUP (gid_t) -1 +#endif + +static void +initialize_group_array () +{ + register int i; + + if (maxgroups == 0) + maxgroups = getmaxgroups (); + + ngroups = 0; + group_array = (GETGROUPS_T *)xrealloc (group_array, maxgroups * sizeof (GETGROUPS_T)); + +#if defined (HAVE_GETGROUPS) + ngroups = getgroups (maxgroups, group_array); +#endif + + /* If getgroups returns nothing, or the OS does not support getgroups(), + make sure the groups array includes at least the current gid. */ + if (ngroups == 0) + { + group_array[0] = current_user.gid; + ngroups = 1; + } + + /* If the primary group is not in the groups array, add it as group_array[0] + and shuffle everything else up 1, if there's room. */ + for (i = 0; i < ngroups; i++) + if (current_user.gid == (gid_t)group_array[i]) + break; + if (i == ngroups && ngroups < maxgroups) + { + for (i = ngroups; i > 0; i--) + group_array[i] = group_array[i - 1]; + group_array[0] = current_user.gid; + ngroups++; + } + + /* If the primary group is not group_array[0], swap group_array[0] and + whatever the current group is. The vast majority of systems should + not need this; a notable exception is Linux. */ + if (group_array[0] != current_user.gid) + { + for (i = 0; i < ngroups; i++) + if (group_array[i] == current_user.gid) + break; + if (i < ngroups) + { + group_array[i] = group_array[0]; + group_array[0] = current_user.gid; + } + } +} + +/* Return non-zero if GID is one that we have in our groups list. */ +int +#if defined (__STDC__) || defined ( _MINIX) +group_member (gid_t gid) +#else +group_member (gid) + gid_t gid; +#endif /* !__STDC__ && !_MINIX */ +{ +#if defined (HAVE_GETGROUPS) + register int i; +#endif + + /* Short-circuit if possible, maybe saving a call to getgroups(). */ + if (gid == current_user.gid || gid == current_user.egid) + return (1); + +#if defined (HAVE_GETGROUPS) + if (ngroups == 0) + initialize_group_array (); + + /* In case of error, the user loses. */ + if (ngroups <= 0) + return (0); + + /* Search through the list looking for GID. */ + for (i = 0; i < ngroups; i++) + if (gid == (gid_t)group_array[i]) + return (1); +#endif + + return (0); +} + +char ** +get_group_list (ngp) + int *ngp; +{ + static char **group_vector = (char **)NULL; + register int i; + + if (group_vector) + { + if (ngp) + *ngp = ngroups; + return group_vector; + } + + if (ngroups == 0) + initialize_group_array (); + + if (ngroups <= 0) + { + if (ngp) + *ngp = 0; + return (char **)NULL; + } + + group_vector = strvec_create (ngroups); + for (i = 0; i < ngroups; i++) + group_vector[i] = itos (group_array[i]); + + if (ngp) + *ngp = ngroups; + return group_vector; +} + +int * +get_group_array (ngp) + int *ngp; +{ + int i; + static int *group_iarray = (int *)NULL; + + if (group_iarray) + { + if (ngp) + *ngp = ngroups; + return (group_iarray); + } + + if (ngroups == 0) + initialize_group_array (); + + if (ngroups <= 0) + { + if (ngp) + *ngp = 0; + return (int *)NULL; + } + + group_iarray = (int *)xmalloc (ngroups * sizeof (int)); + for (i = 0; i < ngroups; i++) + group_iarray[i] = (int)group_array[i]; + + if (ngp) + *ngp = ngroups; + return group_iarray; +} + +/* **************************************************************** */ +/* */ +/* Miscellaneous functions */ +/* */ +/* **************************************************************** */ + +/* 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. */ +char * +conf_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 */ +} + +int +default_columns () +{ + char *v; + int c; + + c = -1; + v = get_string_value ("COLUMNS"); + if (v && *v) + { + c = atoi (v); + if (c > 0) + return c; + } + + if (check_window_size) + get_new_window_size (0, (int *)0, &c); + + return (c > 0 ? c : 80); +} + + diff --git a/bash-5.1/general.h b/bash-5.1/general.h new file mode 100644 index 0000000..7e4db8e --- /dev/null +++ b/bash-5.1/general.h @@ -0,0 +1,371 @@ +/* general.h -- defines that everybody likes to use. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_GENERAL_H_) +#define _GENERAL_H_ + +#include "stdc.h" + +#include "bashtypes.h" +#include "chartypes.h" + +#if defined (HAVE_SYS_RESOURCE_H) && defined (RLIMTYPE) +# if defined (HAVE_SYS_TIME_H) +# include +# endif +# include +#endif + +#if defined (HAVE_STRING_H) +# include +#else +# include +#endif /* !HAVE_STRING_H */ + +#if defined (HAVE_LIMITS_H) +# include +#endif + +#include "xmalloc.h" + +/* NULL pointer type. */ +#if !defined (NULL) +# if defined (__STDC__) +# define NULL ((void *) 0) +# else +# define NULL 0x0 +# endif /* !__STDC__ */ +#endif /* !NULL */ + +/* Hardly used anymore */ +#define pointer_to_int(x) (int)((char *)x - (char *)0) + +#if defined (alpha) && defined (__GNUC__) && !defined (strchr) && !defined (__STDC__) +extern char *strchr (), *strrchr (); +#endif + +#if !defined (strcpy) && (defined (HAVE_DECL_STRCPY) && !HAVE_DECL_STRCPY) +extern char *strcpy PARAMS((char *, const char *)); +#endif + +#if !defined (savestring) +# define savestring(x) (char *)strcpy (xmalloc (1 + strlen (x)), (x)) +#endif + +#ifndef member +# define member(c, s) ((c) ? ((char *)mbschr ((s), (c)) != (char *)NULL) : 0) +#endif + +#ifndef whitespace +#define whitespace(c) (((c) == ' ') || ((c) == '\t')) +#endif + +#ifndef CHAR_MAX +# ifdef __CHAR_UNSIGNED__ +# define CHAR_MAX 0xff +# else +# define CHAR_MAX 0x7f +# endif +#endif + +#ifndef CHAR_BIT +# define CHAR_BIT 8 +#endif + +/* Nonzero if the integer type T is signed. */ +#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* The width in bits of the integer type or expression T. + Padding bits are not supported; this is checked at compile-time below. */ +#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) + +/* Bound on length of the string representing an unsigned integer + value representable in B bits. log10 (2.0) < 146/485. The + smallest value of B where this bound is not tight is 2621. */ +#define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485) + +/* Bound on length of the string representing an integer value of type T. + Subtract one for the sign bit if T is signed; + 302 / 1000 is log10 (2) rounded up; + add one for integer division truncation; + add one more for a minus sign if t is signed. */ +#define INT_STRLEN_BOUND(t) \ + ((TYPE_WIDTH (t) - TYPE_SIGNED (t)) * 302 / 1000 \ + + 1 + TYPE_SIGNED (t)) + +/* Updated version adapted from gnulib/intprops.h, not used right now. + Changes the approximation of log10(2) from 302/1000 to 146/485. */ +#if 0 +#define INT_STRLEN_BOUND(t) \ + (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - TYPE_SIGNED (t)) + TYPE_SIGNED(t)) +#endif + +/* Bound on buffer size needed to represent an integer type or expression T, + including the terminating null. */ +#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) + +/* Define exactly what a legal shell identifier consists of. */ +#define legal_variable_starter(c) (ISALPHA(c) || (c == '_')) +#define legal_variable_char(c) (ISALNUM(c) || c == '_') + +/* Definitions used in subst.c and by the `read' builtin for field + splitting. */ +#define spctabnl(c) ((c) == ' ' || (c) == '\t' || (c) == '\n') + +/* All structs which contain a `next' field should have that field + as the first field in the struct. This means that functions + can be written to handle the general case for linked lists. */ +typedef struct g_list { + struct g_list *next; +} GENERIC_LIST; + +/* Here is a generic structure for associating character strings + with integers. It is used in the parser for shell tokenization. */ +typedef struct { + char *word; + int token; +} STRING_INT_ALIST; + +/* A macro to avoid making an unnecessary function call. */ +#define REVERSE_LIST(list, type) \ + ((list && list->next) ? (type)list_reverse ((GENERIC_LIST *)list) \ + : (type)(list)) + +#if __GNUC__ > 1 +# define FASTCOPY(s, d, n) __builtin_memcpy ((d), (s), (n)) +#else /* !__GNUC__ */ +# if !defined (HAVE_BCOPY) +# if !defined (HAVE_MEMMOVE) +# define FASTCOPY(s, d, n) memcpy ((d), (s), (n)) +# else +# define FASTCOPY(s, d, n) memmove ((d), (s), (n)) +# endif /* !HAVE_MEMMOVE */ +# else /* HAVE_BCOPY */ +# define FASTCOPY(s, d, n) bcopy ((s), (d), (n)) +# endif /* HAVE_BCOPY */ +#endif /* !__GNUC__ */ + +/* String comparisons that possibly save a function call each. */ +#define STREQ(a, b) ((a)[0] == (b)[0] && strcmp(a, b) == 0) +#define STREQN(a, b, n) ((n == 0) ? (1) \ + : ((a)[0] == (b)[0] && strncmp(a, b, n) == 0)) + +/* More convenience definitions that possibly save system or libc calls. */ +#define STRLEN(s) (((s) && (s)[0]) ? ((s)[1] ? ((s)[2] ? strlen(s) : 2) : 1) : 0) +#define FREE(s) do { if (s) free (s); } while (0) +#define MEMBER(c, s) (((c) && c == (s)[0] && !(s)[1]) || (member(c, s))) + +/* A fairly hairy macro to check whether an allocated string has more room, + and to resize it using xrealloc if it does not. + STR is the string (char *) + CIND is the current index into the string (int) + ROOM is the amount of additional room we need in the string (int) + CSIZE is the currently-allocated size of STR (int) + SINCR is how much to increment CSIZE before calling xrealloc (int) */ + +#define RESIZE_MALLOCED_BUFFER(str, cind, room, csize, sincr) \ + do { \ + if ((cind) + (room) >= csize) \ + { \ + while ((cind) + (room) >= csize) \ + csize += (sincr); \ + str = xrealloc (str, csize); \ + } \ + } while (0) + +/* Function pointers can be declared as (Function *)foo. */ +#if !defined (_FUNCTION_DEF) +# define _FUNCTION_DEF +typedef int Function (); +typedef void VFunction (); +typedef char *CPFunction (); /* no longer used */ +typedef char **CPPFunction (); /* no longer used */ +#endif /* _FUNCTION_DEF */ + +#ifndef SH_FUNCTION_TYPEDEF +# define SH_FUNCTION_TYPEDEF + +/* Shell function typedefs with prototypes */ +/* `Generic' function pointer typedefs */ + +typedef int sh_intfunc_t PARAMS((int)); +typedef int sh_ivoidfunc_t PARAMS((void)); +typedef int sh_icpfunc_t PARAMS((char *)); +typedef int sh_icppfunc_t PARAMS((char **)); +typedef int sh_iptrfunc_t PARAMS((PTR_T)); + +typedef void sh_voidfunc_t PARAMS((void)); +typedef void sh_vintfunc_t PARAMS((int)); +typedef void sh_vcpfunc_t PARAMS((char *)); +typedef void sh_vcppfunc_t PARAMS((char **)); +typedef void sh_vptrfunc_t PARAMS((PTR_T)); + +typedef int sh_wdesc_func_t PARAMS((WORD_DESC *)); +typedef int sh_wlist_func_t PARAMS((WORD_LIST *)); + +typedef int sh_glist_func_t PARAMS((GENERIC_LIST *)); + +typedef char *sh_string_func_t PARAMS((char *)); /* like savestring, et al. */ + +typedef int sh_msg_func_t PARAMS((const char *, ...)); /* printf(3)-like */ +typedef void sh_vmsg_func_t PARAMS((const char *, ...)); /* printf(3)-like */ + +/* Specific function pointer typedefs. Most of these could be done + with #defines. */ +typedef void sh_sv_func_t PARAMS((char *)); /* sh_vcpfunc_t */ +typedef void sh_free_func_t PARAMS((PTR_T)); /* sh_vptrfunc_t */ +typedef void sh_resetsig_func_t PARAMS((int)); /* sh_vintfunc_t */ + +typedef int sh_ignore_func_t PARAMS((const char *)); /* sh_icpfunc_t */ + +typedef int sh_assign_func_t PARAMS((const char *)); +typedef int sh_wassign_func_t PARAMS((WORD_DESC *, int)); + +typedef int sh_load_func_t PARAMS((char *)); +typedef void sh_unload_func_t PARAMS((char *)); + +typedef int sh_builtin_func_t PARAMS((WORD_LIST *)); /* sh_wlist_func_t */ + +#endif /* SH_FUNCTION_TYPEDEF */ + +#define NOW ((time_t) time ((time_t *) 0)) +#define GETTIME(tv) gettimeofday(&(tv), NULL) + +/* Some defines for calling file status functions. */ +#define FS_EXISTS 0x1 +#define FS_EXECABLE 0x2 +#define FS_EXEC_PREFERRED 0x4 +#define FS_EXEC_ONLY 0x8 +#define FS_DIRECTORY 0x10 +#define FS_NODIRS 0x20 +#define FS_READABLE 0x40 + +/* Default maximum for move_to_high_fd */ +#define HIGH_FD_MAX 256 + +/* The type of function passed as the fourth argument to qsort(3). */ +#ifdef __STDC__ +typedef int QSFUNC (const void *, const void *); +#else +typedef int QSFUNC (); +#endif + +/* Some useful definitions for Unix pathnames. Argument convention: + x == string, c == character */ + +#if !defined (__CYGWIN__) +# define ABSPATH(x) ((x)[0] == '/') +# define RELPATH(x) ((x)[0] != '/') +#else /* __CYGWIN__ */ +# define ABSPATH(x) (((x)[0] && ISALPHA((unsigned char)(x)[0]) && (x)[1] == ':') || ISDIRSEP((x)[0])) +# define RELPATH(x) (ABSPATH(x) == 0) +#endif /* __CYGWIN__ */ + +#define ROOTEDPATH(x) (ABSPATH(x)) + +#define DIRSEP '/' +#if !defined (__CYGWIN__) +# define ISDIRSEP(c) ((c) == '/') +#else +# define ISDIRSEP(c) ((c) == '/' || (c) == '\\') +#endif /* __CYGWIN__ */ +#define PATHSEP(c) (ISDIRSEP(c) || (c) == 0) + +#define DOT_OR_DOTDOT(s) (s[0] == '.' && (s[1] == 0 || (s[1] == '.' && s[2] == 0))) +#if defined (HANDLE_MULTIBYTE) +#define WDOT_OR_DOTDOT(w) (w[0] == L'.' && (w[1] == L'\0' || (w[1] == L'.' && w[2] == L'\0'))) +#endif + +#if 0 +/* Declarations for functions defined in xmalloc.c */ +extern PTR_T xmalloc PARAMS((size_t)); +extern PTR_T xrealloc PARAMS((void *, size_t)); +extern void xfree PARAMS((void *)); +#endif + +/* Declarations for functions defined in general.c */ +extern void posix_initialize PARAMS((int)); + +extern int num_posix_options PARAMS((void)); +extern char *get_posix_options PARAMS((char *)); +extern void set_posix_options PARAMS((const char *)); + +extern void save_posix_options PARAMS((void)); + +#if defined (RLIMTYPE) +extern RLIMTYPE string_to_rlimtype PARAMS((char *)); +extern void print_rlimtype PARAMS((RLIMTYPE, int)); +#endif + +extern int all_digits PARAMS((const char *)); +extern int legal_number PARAMS((const char *, intmax_t *)); +extern int legal_identifier PARAMS((const char *)); +extern int importable_function_name PARAMS((const char *, size_t)); +extern int exportable_function_name PARAMS((const char *)); +extern int check_identifier PARAMS((WORD_DESC *, int)); +extern int valid_nameref_value PARAMS((const char *, int)); +extern int check_selfref PARAMS((const char *, char *, int)); +extern int legal_alias_name PARAMS((const char *, int)); +extern int line_isblank PARAMS((const char *)); +extern int assignment PARAMS((const char *, int)); + +extern int sh_unset_nodelay_mode PARAMS((int)); +extern int sh_setclexec PARAMS((int)); +extern int sh_validfd PARAMS((int)); +extern int fd_ispipe PARAMS((int)); +extern void check_dev_tty PARAMS((void)); +extern int move_to_high_fd PARAMS((int, int, int)); +extern int check_binary_file PARAMS((const char *, int)); + +#ifdef _POSIXSTAT_H_ +extern int same_file PARAMS((const char *, const char *, struct stat *, struct stat *)); +#endif + +extern int sh_openpipe PARAMS((int *)); +extern int sh_closepipe PARAMS((int *)); + +extern int file_exists PARAMS((const char *)); +extern int file_isdir PARAMS((const char *)); +extern int file_iswdir PARAMS((const char *)); +extern int path_dot_or_dotdot PARAMS((const char *)); +extern int absolute_pathname PARAMS((const char *)); +extern int absolute_program PARAMS((const char *)); + +extern char *make_absolute PARAMS((const char *, const char *)); +extern char *base_pathname PARAMS((char *)); +extern char *full_pathname PARAMS((char *)); +extern char *polite_directory_format PARAMS((char *)); +extern char *trim_pathname PARAMS((char *, int)); +extern char *printable_filename PARAMS((char *, int)); + +extern char *extract_colon_unit PARAMS((char *, int *)); + +extern void tilde_initialize PARAMS((void)); +extern char *bash_tilde_find_word PARAMS((const char *, int, int *)); +extern char *bash_tilde_expand PARAMS((const char *, int)); + +extern int group_member PARAMS((gid_t)); +extern char **get_group_list PARAMS((int *)); +extern int *get_group_array PARAMS((int *)); + +extern char *conf_standard_path PARAMS((void)); +extern int default_columns PARAMS((void)); + +#endif /* _GENERAL_H_ */ diff --git a/bash-5.1/hashcmd.c b/bash-5.1/hashcmd.c new file mode 100644 index 0000000..da3af00 --- /dev/null +++ b/bash-5.1/hashcmd.c @@ -0,0 +1,195 @@ +/* hashcmd.c - functions for managing a hash table mapping command names to + full pathnames. */ + +/* Copyright (C) 1997-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include "bashtypes.h" +#include "posixstat.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" + +#include "shell.h" +#include "flags.h" +#include "findcmd.h" +#include "hashcmd.h" + +HASH_TABLE *hashed_filenames = (HASH_TABLE *)NULL; + +static void phash_freedata PARAMS((PTR_T)); + +void +phash_create () +{ + if (hashed_filenames == 0) + hashed_filenames = hash_create (FILENAME_HASH_BUCKETS); +} + +static void +phash_freedata (data) + PTR_T data; +{ + free (((PATH_DATA *)data)->path); + free (data); +} + +void +phash_flush () +{ + if (hashed_filenames) + hash_flush (hashed_filenames, phash_freedata); +} + +/* Remove FILENAME from the table of hashed commands. */ +int +phash_remove (filename) + const char *filename; +{ + register BUCKET_CONTENTS *item; + + if (hashing_enabled == 0 || hashed_filenames == 0) + return 0; + + item = hash_remove (filename, hashed_filenames, 0); + if (item) + { + if (item->data) + phash_freedata (item->data); + free (item->key); + free (item); + return 0; + } + return 1; +} + +/* Place FILENAME (key) and FULL_PATH (data->path) into the + hash table. CHECK_DOT if non-null is for future calls to + phash_search (); it means that this file was found + in a directory in $PATH that is not an absolute pathname. + FOUND is the initial value for times_found. */ +void +phash_insert (filename, full_path, check_dot, found) + char *filename, *full_path; + int check_dot, found; +{ + register BUCKET_CONTENTS *item; + + if (hashing_enabled == 0) + return; + + if (hashed_filenames == 0) + phash_create (); + + item = hash_insert (filename, hashed_filenames, 0); + if (item->data) + free (pathdata(item)->path); + else + { + item->key = savestring (filename); + item->data = xmalloc (sizeof (PATH_DATA)); + } + pathdata(item)->path = savestring (full_path); + pathdata(item)->flags = 0; + if (check_dot) + pathdata(item)->flags |= HASH_CHKDOT; + if (*full_path != '/') + pathdata(item)->flags |= HASH_RELPATH; + item->times_found = found; +} + +/* Return the full pathname that FILENAME hashes to. If FILENAME + is hashed, but (data->flags & HASH_CHKDOT) is non-zero, check + ./FILENAME and return that if it is executable. This always + returns a newly-allocated string; the caller is responsible + for freeing it. */ +char * +phash_search (filename) + const char *filename; +{ + register BUCKET_CONTENTS *item; + char *path, *dotted_filename, *tail; + int same; + + if (hashing_enabled == 0 || hashed_filenames == 0) + return ((char *)NULL); + + item = hash_search (filename, hashed_filenames, 0); + + if (item == NULL) + return ((char *)NULL); + + /* If this filename is hashed, but `.' comes before it in the path, + see if ./filename is executable. If the hashed value is not an + absolute pathname, see if ./`hashed-value' exists. */ + path = pathdata(item)->path; + if (pathdata(item)->flags & (HASH_CHKDOT|HASH_RELPATH)) + { + tail = (pathdata(item)->flags & HASH_RELPATH) ? path : (char *)filename; /* XXX - fix const later */ + /* If the pathname does not start with a `./', add a `./' to it. */ + if (tail[0] != '.' || tail[1] != '/') + { + dotted_filename = (char *)xmalloc (3 + strlen (tail)); + dotted_filename[0] = '.'; dotted_filename[1] = '/'; + strcpy (dotted_filename + 2, tail); + } + else + dotted_filename = savestring (tail); + + if (executable_file (dotted_filename)) + return (dotted_filename); + + free (dotted_filename); + +#if 0 + if (pathdata(item)->flags & HASH_RELPATH) + return ((char *)NULL); +#endif + + /* Watch out. If this file was hashed to "./filename", and + "./filename" is not executable, then return NULL. */ + + /* Since we already know "./filename" is not executable, what + we're really interested in is whether or not the `path' + portion of the hashed filename is equivalent to the current + directory, but only if it starts with a `.'. (This catches + ./. and so on.) same_file () tests general Unix file + equivalence -- same device and inode. */ + if (*path == '.') + { + same = 0; + tail = (char *)strrchr (path, '/'); + + if (tail) + { + *tail = '\0'; + same = same_file (".", path, (struct stat *)NULL, (struct stat *)NULL); + *tail = '/'; + } + + return same ? (char *)NULL : savestring (path); + } + } + + return (savestring (path)); +} diff --git a/bash-5.1/hashcmd.h b/bash-5.1/hashcmd.h new file mode 100644 index 0000000..2459f20 --- /dev/null +++ b/bash-5.1/hashcmd.h @@ -0,0 +1,43 @@ +/* hashcmd.h - Common defines for hashing filenames. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "stdc.h" +#include "hashlib.h" + +#define FILENAME_HASH_BUCKETS 256 /* must be power of two */ + +extern HASH_TABLE *hashed_filenames; + +typedef struct _pathdata { + char *path; /* The full pathname of the file. */ + int flags; +} PATH_DATA; + +#define HASH_RELPATH 0x01 /* this filename is a relative pathname. */ +#define HASH_CHKDOT 0x02 /* check `.' since it was earlier in $PATH */ + +#define pathdata(x) ((PATH_DATA *)(x)->data) + +extern void phash_create PARAMS((void)); +extern void phash_flush PARAMS((void)); + +extern void phash_insert PARAMS((char *, char *, int, int)); +extern int phash_remove PARAMS((const char *)); +extern char *phash_search PARAMS((const char *)); diff --git a/bash-5.1/hashlib.c b/bash-5.1/hashlib.c new file mode 100644 index 0000000..4a7e813 --- /dev/null +++ b/bash-5.1/hashlib.c @@ -0,0 +1,545 @@ +/* hashlib.c -- functions to manage and access hash tables for bash. */ + +/* Copyright (C) 1987,1989,1991,1995,1998,2001,2003,2005,2006,2008,2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include "bashansi.h" + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include + +#include "shell.h" +#include "hashlib.h" + +/* tunable constants for rehashing */ +#define HASH_REHASH_MULTIPLIER 4 +#define HASH_REHASH_FACTOR 2 + +#define HASH_SHOULDGROW(table) \ + ((table)->nentries >= (table)->nbuckets * HASH_REHASH_FACTOR) + +/* an initial approximation */ +#define HASH_SHOULDSHRINK(table) \ + (((table)->nbuckets > DEFAULT_HASH_BUCKETS) && \ + ((table)->nentries < (table)->nbuckets / HASH_REHASH_MULTIPLIER)) + +/* Rely on properties of unsigned division (unsigned/int -> unsigned) and + don't discard the upper 32 bits of the value, if present. */ +#define HASH_BUCKET(s, t, h) (((h) = hash_string (s)) & ((t)->nbuckets - 1)) + +static BUCKET_CONTENTS *copy_bucket_array PARAMS((BUCKET_CONTENTS *, sh_string_func_t *)); + +static void hash_rehash PARAMS((HASH_TABLE *, int)); +static void hash_grow PARAMS((HASH_TABLE *)); +static void hash_shrink PARAMS((HASH_TABLE *)); + +/* Make a new hash table with BUCKETS number of buckets. Initialize + each slot in the table to NULL. */ +HASH_TABLE * +hash_create (buckets) + int buckets; +{ + HASH_TABLE *new_table; + register int i; + + new_table = (HASH_TABLE *)xmalloc (sizeof (HASH_TABLE)); + if (buckets == 0) + buckets = DEFAULT_HASH_BUCKETS; + + new_table->bucket_array = + (BUCKET_CONTENTS **)xmalloc (buckets * sizeof (BUCKET_CONTENTS *)); + new_table->nbuckets = buckets; + new_table->nentries = 0; + + for (i = 0; i < buckets; i++) + new_table->bucket_array[i] = (BUCKET_CONTENTS *)NULL; + + return (new_table); +} + +int +hash_size (table) + HASH_TABLE *table; +{ + return (HASH_ENTRIES(table)); +} + +static BUCKET_CONTENTS * +copy_bucket_array (ba, cpdata) + BUCKET_CONTENTS *ba; + sh_string_func_t *cpdata; /* data copy function */ +{ + BUCKET_CONTENTS *new_bucket, *n, *e; + + if (ba == 0) + return ((BUCKET_CONTENTS *)0); + + for (n = (BUCKET_CONTENTS *)0, e = ba; e; e = e->next) + { + if (n == 0) + { + new_bucket = (BUCKET_CONTENTS *)xmalloc (sizeof (BUCKET_CONTENTS)); + n = new_bucket; + } + else + { + n->next = (BUCKET_CONTENTS *)xmalloc (sizeof (BUCKET_CONTENTS)); + n = n->next; + } + + n->key = savestring (e->key); + n->data = e->data ? (cpdata ? (*cpdata) (e->data) : savestring (e->data)) + : NULL; + n->khash = e->khash; + n->times_found = e->times_found; + n->next = (BUCKET_CONTENTS *)NULL; + } + + return new_bucket; +} + +static void +hash_rehash (table, nsize) + HASH_TABLE *table; + int nsize; +{ + int osize, i, j; + BUCKET_CONTENTS **old_bucket_array, *item, *next; + + if (table == NULL || nsize == table->nbuckets) + return; + + osize = table->nbuckets; + old_bucket_array = table->bucket_array; + + table->nbuckets = nsize; + table->bucket_array = (BUCKET_CONTENTS **)xmalloc (table->nbuckets * sizeof (BUCKET_CONTENTS *)); + for (i = 0; i < table->nbuckets; i++) + table->bucket_array[i] = (BUCKET_CONTENTS *)NULL; + + for (j = 0; j < osize; j++) + { + for (item = old_bucket_array[j]; item; item = next) + { + next = item->next; + i = item->khash & (table->nbuckets - 1); + item->next = table->bucket_array[i]; + table->bucket_array[i] = item; + } + } + + free (old_bucket_array); +} + +static void +hash_grow (table) + HASH_TABLE *table; +{ + int nsize; + + nsize = table->nbuckets * HASH_REHASH_MULTIPLIER; + if (nsize > 0) /* overflow */ + hash_rehash (table, nsize); +} + +static void +hash_shrink (table) + HASH_TABLE *table; +{ + int nsize; + + nsize = table->nbuckets / HASH_REHASH_MULTIPLIER; + hash_rehash (table, nsize); +} + +HASH_TABLE * +hash_copy (table, cpdata) + HASH_TABLE *table; + sh_string_func_t *cpdata; +{ + HASH_TABLE *new_table; + int i; + + if (table == 0) + return ((HASH_TABLE *)NULL); + + new_table = hash_create (table->nbuckets); + + for (i = 0; i < table->nbuckets; i++) + new_table->bucket_array[i] = copy_bucket_array (table->bucket_array[i], cpdata); + + new_table->nentries = table->nentries; + return new_table; +} + +/* This is the best 32-bit string hash function I found. It's one of the + Fowler-Noll-Vo family (FNV-1). + + The magic is in the interesting relationship between the special prime + 16777619 (2^24 + 403) and 2^32 and 2^8. */ + +#define FNV_OFFSET 2166136261 +#define FNV_PRIME 16777619 + +/* If you want to use 64 bits, use +FNV_OFFSET 14695981039346656037 +FNV_PRIME 1099511628211 +*/ + +/* The `khash' check below requires that strings that compare equally with + strcmp hash to the same value. */ +unsigned int +hash_string (s) + const char *s; +{ + register unsigned int i; + + for (i = FNV_OFFSET; *s; s++) + { + /* FNV-1a has the XOR first, traditional FNV-1 has the multiply first */ + + /* was i *= FNV_PRIME */ + i += (i<<1) + (i<<4) + (i<<7) + (i<<8) + (i<<24); + i ^= *s; + } + + return i; +} + +/* Return the location of the bucket which should contain the data + for STRING. TABLE is a pointer to a HASH_TABLE. */ + +int +hash_bucket (string, table) + const char *string; + HASH_TABLE *table; +{ + unsigned int h; + + return (HASH_BUCKET (string, table, h)); +} + +/* Return a pointer to the hashed item. If the HASH_CREATE flag is passed, + create a new hash table entry for STRING, otherwise return NULL. */ +BUCKET_CONTENTS * +hash_search (string, table, flags) + const char *string; + HASH_TABLE *table; + int flags; +{ + BUCKET_CONTENTS *list; + int bucket; + unsigned int hv; + + if (table == 0 || ((flags & HASH_CREATE) == 0 && HASH_ENTRIES (table) == 0)) + return (BUCKET_CONTENTS *)NULL; + + bucket = HASH_BUCKET (string, table, hv); + + for (list = table->bucket_array ? table->bucket_array[bucket] : 0; list; list = list->next) + { + /* This is the comparison function */ + if (hv == list->khash && STREQ (list->key, string)) + { + list->times_found++; + return (list); + } + } + + if (flags & HASH_CREATE) + { + if (HASH_SHOULDGROW (table)) + { + hash_grow (table); + bucket = HASH_BUCKET (string, table, hv); + } + + list = (BUCKET_CONTENTS *)xmalloc (sizeof (BUCKET_CONTENTS)); + list->next = table->bucket_array[bucket]; + table->bucket_array[bucket] = list; + + list->data = NULL; + list->key = (char *)string; /* XXX fix later */ + list->khash = hv; + list->times_found = 0; + + table->nentries++; + return (list); + } + + return (BUCKET_CONTENTS *)NULL; +} + +/* Remove the item specified by STRING from the hash table TABLE. + The item removed is returned, so you can free its contents. If + the item isn't in this table NULL is returned. */ +BUCKET_CONTENTS * +hash_remove (string, table, flags) + const char *string; + HASH_TABLE *table; + int flags; +{ + int bucket; + BUCKET_CONTENTS *prev, *temp; + unsigned int hv; + + if (table == 0 || HASH_ENTRIES (table) == 0) + return (BUCKET_CONTENTS *)NULL; + + bucket = HASH_BUCKET (string, table, hv); + prev = (BUCKET_CONTENTS *)NULL; + for (temp = table->bucket_array[bucket]; temp; temp = temp->next) + { + if (hv == temp->khash && STREQ (temp->key, string)) + { + if (prev) + prev->next = temp->next; + else + table->bucket_array[bucket] = temp->next; + + table->nentries--; + return (temp); + } + prev = temp; + } + return ((BUCKET_CONTENTS *) NULL); +} + +/* Create an entry for STRING, in TABLE. If the entry already + exists, then return it (unless the HASH_NOSRCH flag is set). */ +BUCKET_CONTENTS * +hash_insert (string, table, flags) + char *string; + HASH_TABLE *table; + int flags; +{ + BUCKET_CONTENTS *item; + int bucket; + unsigned int hv; + + if (table == 0) + table = hash_create (0); + + item = (flags & HASH_NOSRCH) ? (BUCKET_CONTENTS *)NULL + : hash_search (string, table, 0); + + if (item == 0) + { + if (HASH_SHOULDGROW (table)) + hash_grow (table); + + bucket = HASH_BUCKET (string, table, hv); + + item = (BUCKET_CONTENTS *)xmalloc (sizeof (BUCKET_CONTENTS)); + item->next = table->bucket_array[bucket]; + table->bucket_array[bucket] = item; + + item->data = NULL; + item->key = string; + item->khash = hv; + item->times_found = 0; + + table->nentries++; + } + + return (item); +} + +/* Remove and discard all entries in TABLE. If FREE_DATA is non-null, it + is a function to call to dispose of a hash item's data. Otherwise, + free() is called. */ +void +hash_flush (table, free_data) + HASH_TABLE *table; + sh_free_func_t *free_data; +{ + int i; + register BUCKET_CONTENTS *bucket, *item; + + if (table == 0 || HASH_ENTRIES (table) == 0) + return; + + for (i = 0; i < table->nbuckets; i++) + { + bucket = table->bucket_array[i]; + + while (bucket) + { + item = bucket; + bucket = bucket->next; + + if (free_data) + (*free_data) (item->data); + else + free (item->data); + free (item->key); + free (item); + } + table->bucket_array[i] = (BUCKET_CONTENTS *)NULL; + } + + table->nentries = 0; +} + +/* Free the hash table pointed to by TABLE. */ +void +hash_dispose (table) + HASH_TABLE *table; +{ + free (table->bucket_array); + free (table); +} + +void +hash_walk (table, func) + HASH_TABLE *table; + hash_wfunc *func; +{ + register int i; + BUCKET_CONTENTS *item; + + if (table == 0 || HASH_ENTRIES (table) == 0) + return; + + for (i = 0; i < table->nbuckets; i++) + { + for (item = hash_items (i, table); item; item = item->next) + if ((*func) (item) < 0) + return; + } +} + +#if defined (DEBUG) || defined (TEST_HASHING) +void +hash_pstats (table, name) + HASH_TABLE *table; + char *name; +{ + register int slot, bcount; + register BUCKET_CONTENTS *bc; + + if (name == 0) + name = "unknown hash table"; + + fprintf (stderr, "%s: %d buckets; %d items\n", name, table->nbuckets, table->nentries); + + /* Print out a count of how many strings hashed to each bucket, so we can + see how even the distribution is. */ + for (slot = 0; slot < table->nbuckets; slot++) + { + bc = hash_items (slot, table); + + fprintf (stderr, "\tslot %3d: ", slot); + for (bcount = 0; bc; bc = bc->next) + bcount++; + + fprintf (stderr, "%d\n", bcount); + } +} +#endif + +#ifdef TEST_HASHING + +/* link with xmalloc.o and lib/malloc/libmalloc.a */ +#undef NULL +#include + +#ifndef NULL +#define NULL 0 +#endif + +HASH_TABLE *table, *ntable; + +int interrupt_immediately = 0; +int running_trap = 0; + +int +signal_is_trapped (s) + int s; +{ + return (0); +} + +void +programming_error (const char *format, ...) +{ + abort(); +} + +void +fatal_error (const char *format, ...) +{ + abort(); +} + +void +internal_warning (const char *format, ...) +{ +} + +int +main () +{ + char string[256]; + int count = 0; + BUCKET_CONTENTS *tt; + +#if defined (TEST_NBUCKETS) + table = hash_create (TEST_NBUCKETS); +#else + table = hash_create (0); +#endif + + for (;;) + { + char *temp_string; + if (fgets (string, sizeof (string), stdin) == 0) + break; + if (!*string) + break; + temp_string = savestring (string); + tt = hash_insert (temp_string, table, 0); + if (tt->times_found) + { + fprintf (stderr, "You have already added item `%s'\n", string); + free (temp_string); + } + else + { + count++; + } + } + + hash_pstats (table, "hash test"); + + ntable = hash_copy (table, (sh_string_func_t *)NULL); + hash_flush (table, (sh_free_func_t *)NULL); + hash_pstats (ntable, "hash copy test"); + + exit (0); +} + +#endif /* TEST_HASHING */ diff --git a/bash-5.1/hashlib.h b/bash-5.1/hashlib.h new file mode 100644 index 0000000..cf2de98 --- /dev/null +++ b/bash-5.1/hashlib.h @@ -0,0 +1,92 @@ +/* hashlib.h -- the data structures used in hashing in Bash. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_HASHLIB_H_) +#define _HASHLIB_H_ + +#include "stdc.h" + +#ifndef PTR_T +# ifdef __STDC__ +# define PTR_T void * +# else +# define PTR_T char * +# endif +#endif + +typedef struct bucket_contents { + struct bucket_contents *next; /* Link to next hashed key in this bucket. */ + char *key; /* What we look up. */ + PTR_T data; /* What we really want. */ + unsigned int khash; /* What key hashes to */ + int times_found; /* Number of times this item has been found. */ +} BUCKET_CONTENTS; + +typedef struct hash_table { + BUCKET_CONTENTS **bucket_array; /* Where the data is kept. */ + int nbuckets; /* How many buckets does this table have. */ + int nentries; /* How many entries does this table have. */ +} HASH_TABLE; + +typedef int hash_wfunc PARAMS((BUCKET_CONTENTS *)); + +/* Operations on tables as a whole */ +extern HASH_TABLE *hash_create PARAMS((int)); +extern HASH_TABLE *hash_copy PARAMS((HASH_TABLE *, sh_string_func_t *)); +extern void hash_flush PARAMS((HASH_TABLE *, sh_free_func_t *)); +extern void hash_dispose PARAMS((HASH_TABLE *)); +extern void hash_walk PARAMS((HASH_TABLE *, hash_wfunc *)); + +/* Operations to extract information from or pieces of tables */ +extern int hash_bucket PARAMS((const char *, HASH_TABLE *)); +extern int hash_size PARAMS((HASH_TABLE *)); + +/* Operations on hash table entries */ +extern BUCKET_CONTENTS *hash_search PARAMS((const char *, HASH_TABLE *, int)); +extern BUCKET_CONTENTS *hash_insert PARAMS((char *, HASH_TABLE *, int)); +extern BUCKET_CONTENTS *hash_remove PARAMS((const char *, HASH_TABLE *, int)); + +/* Miscellaneous */ +extern unsigned int hash_string PARAMS((const char *)); + +/* Redefine the function as a macro for speed. */ +#define hash_items(bucket, table) \ + ((table && (bucket < table->nbuckets)) ? \ + table->bucket_array[bucket] : \ + (BUCKET_CONTENTS *)NULL) + +/* Default number of buckets in the hash table. */ +#define DEFAULT_HASH_BUCKETS 128 /* must be power of two */ + +#define HASH_ENTRIES(ht) ((ht) ? (ht)->nentries : 0) + +/* flags for hash_search and hash_insert */ +#define HASH_NOSRCH 0x01 +#define HASH_CREATE 0x02 + +#if !defined (NULL) +# if defined (__STDC__) +# define NULL ((void *) 0) +# else +# define NULL 0x0 +# endif /* !__STDC__ */ +#endif /* !NULL */ + +#endif /* _HASHLIB_H */ diff --git a/bash-5.1/include/ansi_stdlib.h b/bash-5.1/include/ansi_stdlib.h new file mode 100644 index 0000000..7dc2ee0 --- /dev/null +++ b/bash-5.1/include/ansi_stdlib.h @@ -0,0 +1,54 @@ +/* ansi_stdlib.h -- An ANSI Standard stdlib.h. */ +/* A minimal stdlib.h containing extern declarations for those functions + that bash uses. */ + +/* 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 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 . +*/ + +#if !defined (_STDLIB_H_) +#define _STDLIB_H_ 1 + +/* String conversion functions. */ +extern int atoi (); + +extern double atof (); +extern double strtod (); + +/* Memory allocation functions. */ +/* Generic pointer type. */ +#ifndef PTR_T + +#if defined (__STDC__) +# define PTR_T void * +#else +# define PTR_T char * +#endif + +#endif /* PTR_T */ + +extern PTR_T malloc (); +extern PTR_T realloc (); +extern void free (); + +/* Other miscellaneous functions. */ +extern void abort (); +extern void exit (); +extern char *getenv (); +extern void qsort (); + +#endif /* _STDLIB_H */ diff --git a/bash-5.1/include/chartypes.h b/bash-5.1/include/chartypes.h new file mode 100644 index 0000000..098cfb9 --- /dev/null +++ b/bash-5.1/include/chartypes.h @@ -0,0 +1,113 @@ +/* chartypes.h -- extend ctype.h */ + +/* 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 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 . +*/ + +#ifndef _SH_CHARTYPES_H +#define _SH_CHARTYPES_H + +#include + +/* Jim Meyering writes: + + "... Some ctype macros are valid only for character codes that + isascii says are ASCII (SGI's IRIX-4.0.5 is one such system --when + using /bin/cc or gcc but without giving an ansi option). So, all + ctype uses should be through macros like ISPRINT... If + STDC_HEADERS is defined, then autoconf has verified that the ctype + macros don't need to be guarded with references to isascii. ... + Defining IN_CTYPE_DOMAIN to 1 should let any compiler worth its salt + eliminate the && through constant folding." + Solaris defines some of these symbols so we must undefine them first. */ + +#if STDC_HEADERS || (!defined (isascii) && !HAVE_ISASCII) +# define IN_CTYPE_DOMAIN(c) 1 +#else +# define IN_CTYPE_DOMAIN(c) isascii(c) +#endif + +#if !defined (isspace) && !defined (HAVE_ISSPACE) +# define isspace(c) ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) == '\f') +#endif + +#if !defined (isprint) && !defined (HAVE_ISPRINT) +# define isprint(c) (isalpha((unsigned char)c) || isdigit((unsigned char)c) || ispunct((unsigned char)c)) +#endif + +#if defined (isblank) || defined (HAVE_ISBLANK) +# define ISBLANK(c) (IN_CTYPE_DOMAIN (c) && isblank ((unsigned char)c)) +#else +# define ISBLANK(c) ((c) == ' ' || (c) == '\t') +#endif + +#if defined (isgraph) || defined (HAVE_ISGRAPH) +# define ISGRAPH(c) (IN_CTYPE_DOMAIN (c) && isgraph (c)) +#else +# define ISGRAPH(c) (IN_CTYPE_DOMAIN (c) && isprint ((unsigned char)c) && !isspace ((unsigned char)c)) +#endif + +#if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) +# define isxdigit(c) (((c) >= '0' && (c) <= '9') || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) +#endif + +#undef ISPRINT + +#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint ((unsigned char)c)) +#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit ((unsigned char)c)) +#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum ((unsigned char)c)) +#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha ((unsigned char)c)) +#define ISCNTRL(c) (IN_CTYPE_DOMAIN (c) && iscntrl ((unsigned char)c)) +#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower ((unsigned char)c)) +#define ISPUNCT(c) (IN_CTYPE_DOMAIN (c) && ispunct ((unsigned char)c)) +#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace ((unsigned char)c)) +#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper ((unsigned char)c)) +#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit ((unsigned char)c)) + +#define ISLETTER(c) (ISALPHA(c)) + +#define DIGIT(c) ((c) >= '0' && (c) <= '9') + +#define ISWORD(c) (ISLETTER(c) || DIGIT(c) || ((c) == '_')) + +#define HEXVALUE(c) \ + (((c) >= 'a' && (c) <= 'f') \ + ? (c)-'a'+10 \ + : (c) >= 'A' && (c) <= 'F' ? (c)-'A'+10 : (c)-'0') + +#ifndef ISOCTAL +# define ISOCTAL(c) ((c) >= '0' && (c) <= '7') +#endif +#define OCTVALUE(c) ((c) - '0') + +#define TODIGIT(c) ((c) - '0') +#define TOCHAR(c) ((c) + '0') + +#define TOLOWER(c) (ISUPPER(c) ? tolower(c) : (c)) +#define TOUPPER(c) (ISLOWER(c) ? toupper(c) : (c)) + +#ifndef TOCTRL + /* letter to control char -- ASCII. The TOUPPER is in there so \ce and + \cE will map to the same character in $'...' expansions. */ +# define TOCTRL(x) ((x) == '?' ? 0x7f : (TOUPPER(x) & 0x1f)) +#endif +#ifndef UNCTRL + /* control char to letter -- ASCII */ +# define UNCTRL(x) (TOUPPER(x) ^ 0x40) +#endif + +#endif /* _SH_CHARTYPES_H */ diff --git a/bash-5.1/include/filecntl.h b/bash-5.1/include/filecntl.h new file mode 100644 index 0000000..9bcbab8 --- /dev/null +++ b/bash-5.1/include/filecntl.h @@ -0,0 +1,53 @@ +/* filecntl.h - Definitions to set file descriptors to close-on-exec. */ + +/* 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 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 . +*/ + +#if !defined (_FILECNTL_H_) +#define _FILECNTL_H_ + +#include + +/* Definitions to set file descriptors to close-on-exec, the Posix way. */ +#if !defined (FD_CLOEXEC) +#define FD_CLOEXEC 1 +#endif + +#define FD_NCLOEXEC 0 + +#define SET_CLOSE_ON_EXEC(fd) (fcntl ((fd), F_SETFD, FD_CLOEXEC)) +#define SET_OPEN_ON_EXEC(fd) (fcntl ((fd), F_SETFD, FD_NCLOEXEC)) + +/* How to open a file in non-blocking mode, the Posix.1 way. */ +#if !defined (O_NONBLOCK) +# if defined (O_NDELAY) +# define O_NONBLOCK O_NDELAY +# else +# define O_NONBLOCK 0 +# endif +#endif + +/* Make sure O_BINARY and O_TEXT are defined to avoid Windows-specific code. */ +#if !defined (O_BINARY) +# define O_BINARY 0 +#endif +#if !defined (O_TEXT) +# define O_TEXT 0 +#endif + +#endif /* ! _FILECNTL_H_ */ diff --git a/bash-5.1/include/gettext.h b/bash-5.1/include/gettext.h new file mode 100644 index 0000000..97a1f36 --- /dev/null +++ b/bash-5.1/include/gettext.h @@ -0,0 +1,70 @@ +/* Convenience header for conditional use of GNU . + Copyright (C) 1995-1998, 2000-2002, 2008,2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _LIBGETTEXT_H +#define _LIBGETTEXT_H 1 + +/* NLS can be disabled through the configure --disable-nls option. */ +#if ENABLE_NLS + +/* Get declarations of GNU message catalog functions. */ +# include + +#else + +/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which + chokes if dcgettext is defined as a macro. So include it now, to make + later inclusions of a NOP. We don't include + as well because people using "gettext.h" will not include , + and also including would fail on SunOS 4, whereas + is OK. */ +#if defined(__sun) +# include +#endif + +/* Disabled NLS. + The casts to 'const char *' serve the purpose of producing warnings + for invalid uses of the value returned from these functions. + On pre-ANSI systems without 'const', the config.h file is supposed to + contain "#define const". */ +# define gettext(Msgid) ((const char *) (Msgid)) +# define dgettext(Domainname, Msgid) ((const char *) (Msgid)) +# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid)) +# define ngettext(Msgid1, Msgid2, N) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define dngettext(Domainname, Msgid1, Msgid2, N) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define textdomain(Domainname) ((const char *) (Domainname)) +# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) +# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset)) + +#endif + +/* A pseudo function call that serves as a marker for the automated + extraction of messages, but does not call gettext(). The run-time + translation is done at a different place in the code. + The argument, String, should be a literal string. Concatenated strings + and other string expressions won't work. + The macro's expansion is not parenthesized, so that it is suitable as + initializer for static 'char[]' or 'const char[]' variables. */ +#define gettext_noop(String) String + +#endif /* _LIBGETTEXT_H */ diff --git a/bash-5.1/include/maxpath.h b/bash-5.1/include/maxpath.h new file mode 100644 index 0000000..db2e1fb --- /dev/null +++ b/bash-5.1/include/maxpath.h @@ -0,0 +1,75 @@ +/* maxpath.h - Find out what this system thinks PATH_MAX and NAME_MAX are. */ + +/* 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 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 . +*/ + +#if !defined (_MAXPATH_H_) +#define _MAXPATH_H_ + +/* These values are supposed to be in or one of the files + it includes. */ +#if defined (HAVE_LIMITS_H) +# include +#endif /* !HAVE_LIMITS_H */ + +/* If PATH_MAX is not defined, look for MAXPATHLEN */ +#if !defined (PATH_MAX) +# if defined (HAVE_SYS_PARAM_H) +# include +# define maxpath_param_h +# endif +# if defined (MAXPATHLEN) && !defined (PATH_MAX) +# define PATH_MAX MAXPATHLEN +# endif /* MAXPATHLEN && !PATH_MAX */ +#endif /* !PATH_MAX */ + +/* If NAME_MAX is not defined, look for MAXNAMLEN */ +#if !defined (NAME_MAX) +# if defined (HAVE_SYS_PARAM_H) && !defined (maxpath_param_h) +# include +# endif +# if defined (MAXNAMLEN) && !defined (NAME_MAX) +# define NAME_MAX MAXNAMLEN +# endif /* MAXNAMLEN && !NAME_MAX */ +#endif /* !NAME_MAX */ + +/* Default POSIX values */ +#if !defined (PATH_MAX) && defined (_POSIX_PATH_MAX) +# define PATH_MAX _POSIX_PATH_MAX +#endif + +#if !defined (NAME_MAX) && defined (_POSIX_NAME_MAX) +# define NAME_MAX _POSIX_NAME_MAX +#endif + + +/* Default values */ +#if !defined (PATH_MAX) +# define PATH_MAX 1024 +#endif + +#if !defined (NAME_MAX) +# define NAME_MAX 14 +#endif + +#if PATH_MAX < 1024 +# undef PATH_MAX +# define PATH_MAX 1024 +#endif + +#endif /* _MAXPATH_H_ */ diff --git a/bash-5.1/include/memalloc.h b/bash-5.1/include/memalloc.h new file mode 100644 index 0000000..57318b9 --- /dev/null +++ b/bash-5.1/include/memalloc.h @@ -0,0 +1,62 @@ +/* memalloc.h -- consolidate code for including alloca.h or malloc.h and + defining alloca. */ + +/* 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 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 . +*/ + +#if !defined (_MEMALLOC_H_) +# define _MEMALLOC_H_ + +#if defined (sparc) && defined (sun) && !defined (HAVE_ALLOCA_H) +# define HAVE_ALLOCA_H +#endif + +#if defined (__GNUC__) && !defined (HAVE_ALLOCA) +# define HAVE_ALLOCA +#endif + +#if defined (HAVE_ALLOCA_H) && !defined (HAVE_ALLOCA) && !defined (C_ALLOCA) +# define HAVE_ALLOCA +#endif /* HAVE_ALLOCA_H && !HAVE_ALLOCA */ + +#if defined (__GNUC__) && !defined (C_ALLOCA) +# undef alloca +# define alloca __builtin_alloca +#else /* !__GNUC__ || C_ALLOCA */ +# if defined (HAVE_ALLOCA_H) && !defined (C_ALLOCA) +# if defined (IBMESA) +# include +# else /* !IBMESA */ +# include +# endif /* !IBMESA */ +# else /* !HAVE_ALLOCA_H || C_ALLOCA */ +# if defined (__hpux) && defined (__STDC__) && !defined (alloca) +extern void *alloca (); +# else +# if !defined (alloca) +# if defined (__STDC__) +extern void *alloca (size_t); +# else +extern char *alloca (); +# endif /* !__STDC__ */ +# endif /* !alloca */ +# endif /* !__hpux || !__STDC__ && !alloca */ +# endif /* !HAVE_ALLOCA_H || C_ALLOCA */ +#endif /* !__GNUC__ || C_ALLOCA */ + +#endif /* _MEMALLOC_H_ */ diff --git a/bash-5.1/include/ocache.h b/bash-5.1/include/ocache.h new file mode 100644 index 0000000..c596c27 --- /dev/null +++ b/bash-5.1/include/ocache.h @@ -0,0 +1,133 @@ +/* ocache.h -- a minimal object caching implementation. */ + +/* 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 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 . +*/ + +#if !defined (_OCACHE_H_) +#define _OCACHE_H_ 1 + +#ifndef PTR_T + +#if defined (__STDC__) +# define PTR_T void * +#else +# define PTR_T char * +#endif + +#endif /* PTR_T */ + +#define OC_MEMSET(memp, xch, nbytes) \ +do { \ + if ((nbytes) <= 32) { \ + register char * mzp = (char *)(memp); \ + unsigned long mctmp = (nbytes); \ + register long mcn; \ + if (mctmp < 8) mcn = 0; else { mcn = (mctmp-1)/8; mctmp &= 7; } \ + switch (mctmp) { \ + case 0: for(;;) { *mzp++ = xch; \ + case 7: *mzp++ = xch; \ + case 6: *mzp++ = xch; \ + case 5: *mzp++ = xch; \ + case 4: *mzp++ = xch; \ + case 3: *mzp++ = xch; \ + case 2: *mzp++ = xch; \ + case 1: *mzp++ = xch; if(mcn <= 0) break; mcn--; } \ + } \ + } else \ + memset ((memp), (xch), (nbytes)); \ +} while(0) + +typedef struct objcache { + PTR_T data; + int cs; /* cache size, number of objects */ + int nc; /* number of cache entries */ +} sh_obj_cache_t; + +/* Create an object cache C of N pointers to OTYPE. */ +#define ocache_create(c, otype, n) \ + do { \ + (c).data = xmalloc((n) * sizeof (otype *)); \ + (c).cs = (n); \ + (c).nc = 0; \ + } while (0) + +/* Destroy an object cache C. */ +#define ocache_destroy(c) \ + do { \ + if ((c).data) \ + xfree ((c).data); \ + (c).data = 0; \ + (c).cs = (c).nc = 0; \ + } while (0) + +/* Free all cached items, which are pointers to OTYPE, in object cache C. */ +#define ocache_flush(c, otype) \ + do { \ + while ((c).nc > 0) \ + xfree (((otype **)((c).data))[--(c).nc]); \ + } while (0) + +/* + * Allocate a new item of type pointer to OTYPE, using data from object + * cache C if any cached items exist, otherwise calling xmalloc. Return + * the object in R. + */ +#define ocache_alloc(c, otype, r) \ + do { \ + if ((c).nc > 0) { \ + (r) = (otype *)((otype **)((c).data))[--(c).nc]; \ + } else \ + (r) = (otype *)xmalloc (sizeof (otype)); \ + } while (0) + +/* + * Free an item R of type pointer to OTYPE, adding to object cache C if + * there is room and calling xfree if the cache is full. If R is added + * to the object cache, the contents are scrambled. + */ +#define ocache_free(c, otype, r) \ + do { \ + if ((c).nc < (c).cs) { \ + OC_MEMSET ((r), 0xdf, sizeof(otype)); \ + ((otype **)((c).data))[(c).nc++] = (r); \ + } else \ + xfree (r); \ + } while (0) + +/* + * One may declare and use an object cache as (for instance): + * + * sh_obj_cache_t wdcache = {0, 0, 0}; + * sh_obj_cache_t wlcache = {0, 0, 0}; + * + * ocache_create(wdcache, WORD_DESC, 30); + * ocache_create(wlcache, WORD_LIST, 30); + * + * WORD_DESC *wd; + * ocache_alloc (wdcache, WORD_DESC, wd); + * + * WORD_LIST *wl; + * ocache_alloc (wlcache, WORD_LIST, wl); + * + * ocache_free(wdcache, WORD_DESC, wd); + * ocache_free(wlcache, WORD_LIST, wl); + * + * The use is almost arbitrary. + */ + +#endif /* _OCACHE_H */ diff --git a/bash-5.1/include/posixdir.h b/bash-5.1/include/posixdir.h new file mode 100644 index 0000000..af5be80 --- /dev/null +++ b/bash-5.1/include/posixdir.h @@ -0,0 +1,71 @@ +/* posixdir.h -- Posix directory reading includes and defines. */ + +/* Copyright (C) 1987,1991,2012 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* This file should be included instead of or . */ + +#if !defined (_POSIXDIR_H_) +#define _POSIXDIR_H_ + +#if defined (HAVE_DIRENT_H) +# include +# if defined (HAVE_STRUCT_DIRENT_D_NAMLEN) +# define D_NAMLEN(d) ((d)->d_namlen) +# else +# define D_NAMLEN(d) (strlen ((d)->d_name)) +# endif /* !HAVE_STRUCT_DIRENT_D_NAMLEN */ +#else +# if defined (HAVE_SYS_NDIR_H) +# include +# endif +# if defined (HAVE_SYS_DIR_H) +# include +# endif +# if defined (HAVE_NDIR_H) +# include +# endif +# if !defined (dirent) +# define dirent direct +# endif /* !dirent */ +# define D_NAMLEN(d) ((d)->d_namlen) +#endif /* !HAVE_DIRENT_H */ + +/* The bash code fairly consistently uses d_fileno; make sure it's available */ +#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (HAVE_STRUCT_DIRENT_D_FILENO) +# define d_fileno d_ino +#endif + +/* Posix does not require that the d_ino field be present, and some + systems do not provide it. */ +#if !defined (HAVE_STRUCT_DIRENT_D_INO) || defined (BROKEN_DIRENT_D_INO) +# define REAL_DIR_ENTRY(dp) 1 +#else +# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0) +#endif /* _POSIX_SOURCE */ + +#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (BROKEN_DIRENT_D_INO) +# define D_INO_AVAILABLE +#endif + +/* Signal the rest of the code that it can safely use dirent.d_fileno */ +#if defined (D_INO_AVAILABLE) || defined (HAVE_STRUCT_DIRENT_D_FILENO) +# define D_FILENO_AVAILABLE 1 +#endif + +#endif /* !_POSIXDIR_H_ */ diff --git a/bash-5.1/include/posixjmp.h b/bash-5.1/include/posixjmp.h new file mode 100644 index 0000000..9c7e99e --- /dev/null +++ b/bash-5.1/include/posixjmp.h @@ -0,0 +1,46 @@ +/* posixjmp.h -- wrapper for setjmp.h with changes for POSIX systems. */ + +/* Copyright (C) 1987,1991-2015 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _POSIXJMP_H_ +#define _POSIXJMP_H_ + +#include + +/* This *must* be included *after* config.h */ + +#if defined (HAVE_POSIX_SIGSETJMP) +# define procenv_t sigjmp_buf + +# define setjmp_nosigs(x) sigsetjmp((x), 0) +# define setjmp_sigs(x) sigsetjmp((x), 1) + +# define _rl_longjmp(x, n) siglongjmp((x), (n)) +# define sh_longjmp(x, n) siglongjmp((x), (n)) +#else +# define procenv_t jmp_buf + +# define setjmp_nosigs setjmp +# define setjmp_sigs setjmp + +# define _rl_longjmp(x, n) longjmp((x), (n)) +# define sh_longjmp(x, n) longjmp((x), (n)) +#endif + +#endif /* _POSIXJMP_H_ */ diff --git a/bash-5.1/include/posixselect.h b/bash-5.1/include/posixselect.h new file mode 100644 index 0000000..da6a1ac --- /dev/null +++ b/bash-5.1/include/posixselect.h @@ -0,0 +1,47 @@ +/* posixselect.h -- wrapper for select(2) includes and definitions */ + +/* Copyright (C) 2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _POSIXSELECT_H_ +#define _POSIXSELECT_H_ + +#if defined (FD_SET) && !defined (HAVE_SELECT) +# define HAVE_SELECT 1 +#endif + +#if defined (HAVE_SELECT) +# if !defined (HAVE_SYS_SELECT_H) || !defined (M_UNIX) +# include +# endif +#endif /* HAVE_SELECT */ +#if defined (HAVE_SYS_SELECT_H) +# include +#endif + +#ifndef USEC_PER_SEC +# define USEC_PER_SEC 1000000 +#endif + +#define USEC_TO_TIMEVAL(us, tv) \ +do { \ + (tv).tv_sec = (us) / USEC_PER_SEC; \ + (tv).tv_usec = (us) % USEC_PER_SEC; \ +} while (0) + +#endif /* _POSIXSELECT_H_ */ diff --git a/bash-5.1/include/posixstat.h b/bash-5.1/include/posixstat.h new file mode 100644 index 0000000..b607786 --- /dev/null +++ b/bash-5.1/include/posixstat.h @@ -0,0 +1,162 @@ +/* posixstat.h -- Posix stat(2) definitions for systems that + don't have them. */ + +/* Copyright (C) 1987-2019 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* This file should be included instead of . + It relies on the local sys/stat.h to work though. */ +#if !defined (_POSIXSTAT_H_) +#define _POSIXSTAT_H_ + +#include + +#if defined (STAT_MACROS_BROKEN) +# undef S_ISBLK +# undef S_ISCHR +# undef S_ISDIR +# undef S_ISFIFO +# undef S_ISREG +# undef S_ISLNK +#endif /* STAT_MACROS_BROKEN */ + +/* These are guaranteed to work only on isc386 */ +#if !defined (S_IFDIR) && !defined (S_ISDIR) +# define S_IFDIR 0040000 +#endif /* !S_IFDIR && !S_ISDIR */ +#if !defined (S_IFMT) +# define S_IFMT 0170000 +#endif /* !S_IFMT */ + +/* Posix 1003.1 5.6.1.1 file types */ + +/* Some Posix-wannabe systems define _S_IF* macros instead of S_IF*, but + do not provide the S_IS* macros that Posix requires. */ + +#if defined (_S_IFMT) && !defined (S_IFMT) +#define S_IFMT _S_IFMT +#endif +#if defined (_S_IFIFO) && !defined (S_IFIFO) +#define S_IFIFO _S_IFIFO +#endif +#if defined (_S_IFCHR) && !defined (S_IFCHR) +#define S_IFCHR _S_IFCHR +#endif +#if defined (_S_IFDIR) && !defined (S_IFDIR) +#define S_IFDIR _S_IFDIR +#endif +#if defined (_S_IFBLK) && !defined (S_IFBLK) +#define S_IFBLK _S_IFBLK +#endif +#if defined (_S_IFREG) && !defined (S_IFREG) +#define S_IFREG _S_IFREG +#endif +#if defined (_S_IFLNK) && !defined (S_IFLNK) +#define S_IFLNK _S_IFLNK +#endif +#if defined (_S_IFSOCK) && !defined (S_IFSOCK) +#define S_IFSOCK _S_IFSOCK +#endif + +/* Test for each symbol individually and define the ones necessary (some + systems claiming Posix compatibility define some but not all). */ + +#if defined (S_IFBLK) && !defined (S_ISBLK) +#define S_ISBLK(m) (((m)&S_IFMT) == S_IFBLK) /* block device */ +#endif + +#if defined (S_IFCHR) && !defined (S_ISCHR) +#define S_ISCHR(m) (((m)&S_IFMT) == S_IFCHR) /* character device */ +#endif + +#if defined (S_IFDIR) && !defined (S_ISDIR) +#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) /* directory */ +#endif + +#if defined (S_IFREG) && !defined (S_ISREG) +#define S_ISREG(m) (((m)&S_IFMT) == S_IFREG) /* file */ +#endif + +#if defined (S_IFIFO) && !defined (S_ISFIFO) +#define S_ISFIFO(m) (((m)&S_IFMT) == S_IFIFO) /* fifo - named pipe */ +#endif + +#if defined (S_IFLNK) && !defined (S_ISLNK) +#define S_ISLNK(m) (((m)&S_IFMT) == S_IFLNK) /* symbolic link */ +#endif + +#if defined (S_IFSOCK) && !defined (S_ISSOCK) +#define S_ISSOCK(m) (((m)&S_IFMT) == S_IFSOCK) /* socket */ +#endif + +/* + * POSIX 1003.1 5.6.1.2 File Modes + */ + +#if !defined (S_IRWXU) +# if !defined (S_IREAD) +# define S_IREAD 00400 +# define S_IWRITE 00200 +# define S_IEXEC 00100 +# endif /* S_IREAD */ + +# if !defined (S_IRUSR) +# define S_IRUSR S_IREAD /* read, owner */ +# define S_IWUSR S_IWRITE /* write, owner */ +# define S_IXUSR S_IEXEC /* execute, owner */ + +# define S_IRGRP (S_IREAD >> 3) /* read, group */ +# define S_IWGRP (S_IWRITE >> 3) /* write, group */ +# define S_IXGRP (S_IEXEC >> 3) /* execute, group */ + +# define S_IROTH (S_IREAD >> 6) /* read, other */ +# define S_IWOTH (S_IWRITE >> 6) /* write, other */ +# define S_IXOTH (S_IEXEC >> 6) /* execute, other */ +# endif /* !S_IRUSR */ + +# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) +# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) +# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) +#else /* !S_IRWXU */ + /* S_IRWXU is defined, but "group" and "other" bits might not be + (happens in certain versions of MinGW). */ +# if !defined (S_IRGRP) +# define S_IRGRP (S_IREAD >> 3) /* read, group */ +# define S_IWGRP (S_IWRITE >> 3) /* write, group */ +# define S_IXGRP (S_IEXEC >> 3) /* execute, group */ +# endif /* !S_IRGRP */ + +# if !defined (S_IROTH) +# define S_IROTH (S_IREAD >> 6) /* read, other */ +# define S_IWOTH (S_IWRITE >> 6) /* write, other */ +# define S_IXOTH (S_IEXEC >> 6) /* execute, other */ +# endif /* !S_IROTH */ +# if !defined (S_IRWXG) +# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) +# endif +# if !defined (S_IRWXO) +# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) +# endif +#endif /* !S_IRWXU */ + +/* These are non-standard, but are used in builtins.c$symbolic_umask() */ +#define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH) +#define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH) +#define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) + +#endif /* _POSIXSTAT_H_ */ diff --git a/bash-5.1/include/posixtime.h b/bash-5.1/include/posixtime.h new file mode 100644 index 0000000..a83e436 --- /dev/null +++ b/bash-5.1/include/posixtime.h @@ -0,0 +1,61 @@ +/* posixtime.h -- wrapper for time.h, sys/times.h mess. */ + +/* 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 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 . +*/ + +#ifndef _POSIXTIME_H_ +#define _POSIXTIME_H_ + +/* include this after config.h */ +/* Some systems require this, mostly for the definition of `struct timezone'. + For example, Dynix/ptx has that definition in rather than + sys/time.h */ +#if defined (TIME_WITH_SYS_TIME) +# include +# include +#else +# if defined (HAVE_SYS_TIME_H) +# include +# else +# include +# endif +#endif + +#if !defined (HAVE_SYSCONF) || !defined (_SC_CLK_TCK) +# if !defined (CLK_TCK) +# if defined (HZ) +# define CLK_TCK HZ +# else +# define CLK_TCK 60 /* 60HZ */ +# endif +# endif /* !CLK_TCK */ +#endif /* !HAVE_SYSCONF && !_SC_CLK_TCK */ + +#if !HAVE_TIMEVAL +struct timeval +{ + time_t tv_sec; + long int tv_usec; +}; +#endif + +#if !HAVE_GETTIMEOFDAY +extern int gettimeofday PARAMS((struct timeval *, void *)); +#endif + +#endif /* _POSIXTIME_H_ */ diff --git a/bash-5.1/include/posixwait.h b/bash-5.1/include/posixwait.h new file mode 100644 index 0000000..63b59c2 --- /dev/null +++ b/bash-5.1/include/posixwait.h @@ -0,0 +1,107 @@ +/* posixwait.h -- job control definitions from POSIX 1003.1 */ + +/* 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 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 . +*/ + +#if !defined (_POSIXWAIT_H_) +# define _POSIXWAIT_H_ + +/* If _POSIX_VERSION is not defined, we assume that defines + a `union wait' and various macros used to manipulate it. Look in + unionwait.h for the things we expect to find. */ +#if defined (HAVE_SYS_WAIT_H) +# include +#else /* !HAVE_SYS_WAIT_H */ +# if !defined (_POSIX_VERSION) +# include "unionwait.h" +# endif +#endif /* !HAVE_SYS_WAIT_H */ + +/* How to get the status of a job. For Posix, this is just an + int, but for other systems we have to crack the union wait. */ +#if !defined (_POSIX_VERSION) +typedef union wait WAIT; +# define WSTATUS(t) (t.w_status) +#else /* _POSIX_VERSION */ +typedef int WAIT; +# define WSTATUS(t) (t) +#endif /* _POSIX_VERSION */ + +/* Make sure that parameters to wait3 are defined. */ +#if !defined (WNOHANG) +# define WNOHANG 1 +# define WUNTRACED 2 +#endif /* WNOHANG */ + +/* More Posix P1003.1 definitions. In the POSIX versions, the parameter is + passed as an `int', in the non-POSIX version, as `union wait'. */ +#if defined (_POSIX_VERSION) + +# if !defined (WSTOPSIG) +# define WSTOPSIG(s) ((s) >> 8) +# endif /* !WSTOPSIG */ + +# if !defined (WTERMSIG) +# define WTERMSIG(s) ((s) & 0177) +# endif /* !WTERMSIG */ + +# if !defined (WEXITSTATUS) +# define WEXITSTATUS(s) ((s) >> 8) +# endif /* !WEXITSTATUS */ + +# if !defined (WIFSTOPPED) +# define WIFSTOPPED(s) (((s) & 0177) == 0177) +# endif /* !WIFSTOPPED */ + +# if !defined (WIFEXITED) +# define WIFEXITED(s) (((s) & 0377) == 0) +# endif /* !WIFEXITED */ + +# if !defined (WIFSIGNALED) +# define WIFSIGNALED(s) (!WIFSTOPPED(s) && !WIFEXITED(s)) +# endif /* !WIFSIGNALED */ + +# if !defined (WIFCORED) +# if defined (WCOREDUMP) +# define WIFCORED(s) (WCOREDUMP(s)) +# else +# define WIFCORED(s) ((s) & 0200) +# endif +# endif /* !WIFCORED */ + +#else /* !_POSIX_VERSION */ + +# if !defined (WSTOPSIG) +# define WSTOPSIG(s) ((s).w_stopsig) +# endif /* !WSTOPSIG */ + +# if !defined (WTERMSIG) +# define WTERMSIG(s) ((s).w_termsig) +# endif /* !WTERMSIG */ + +# if !defined (WEXITSTATUS) +# define WEXITSTATUS(s) ((s).w_retcode) +# endif /* !WEXITSTATUS */ + +# if !defined (WIFCORED) +# define WIFCORED(s) ((s).w_coredump) +# endif /* !WIFCORED */ + +#endif /* !_POSIX_VERSION */ + +#endif /* !_POSIXWAIT_H_ */ diff --git a/bash-5.1/include/shmbchar.h b/bash-5.1/include/shmbchar.h new file mode 100644 index 0000000..a4f3f24 --- /dev/null +++ b/bash-5.1/include/shmbchar.h @@ -0,0 +1,112 @@ +/* Multibyte character data type. + Copyright (C) 2001, 2005-2007, 2009-2010 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible . */ + +#ifndef _SHMBCHAR_H +#define _SHMBCHAR_H 1 + +#if defined (HANDLE_MULTIBYTE) + +#include + +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.1 has a bug: and must be included before + . */ +#include +#include +#include +#include + + +/* is_basic(c) tests whether the single-byte character c is in the + ISO C "basic character set". */ + +#if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ + && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ + && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ + && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ + && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ + && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ + && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ + && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ + && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ + && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ + && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ + && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ + && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ + && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ + && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ + && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ + && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ + && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ + && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ + && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ + && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ + && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126) +/* The character set is ISO-646, not EBCDIC. */ +# define IS_BASIC_ASCII 1 + +extern const unsigned int is_basic_table[]; + +static inline int +is_basic (char c) +{ + return (is_basic_table [(unsigned char) c >> 5] >> ((unsigned char) c & 31)) + & 1; +} + +#else + +static inline int +is_basic (char c) +{ + switch (c) + { + case '\b': case '\r': case '\n': + case '\t': case '\v': case '\f': + case ' ': case '!': case '"': case '#': case '%': + case '&': case '\'': case '(': case ')': case '*': + case '+': case ',': case '-': case '.': case '/': + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case ':': case ';': case '<': case '=': case '>': + case '?': + case 'A': case 'B': case 'C': case 'D': case 'E': + case 'F': case 'G': case 'H': case 'I': case 'J': + case 'K': case 'L': case 'M': case 'N': case 'O': + case 'P': case 'Q': case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': case 'Y': + case 'Z': + case '[': case '\\': case ']': case '^': case '_': + case 'a': case 'b': case 'c': case 'd': case 'e': + case 'f': case 'g': case 'h': case 'i': case 'j': + case 'k': case 'l': case 'm': case 'n': case 'o': + case 'p': case 'q': case 'r': case 's': case 't': + case 'u': case 'v': case 'w': case 'x': case 'y': + case 'z': case '{': case '|': case '}': case '~': + return 1; + default: + return 0; + } +} + +#endif + +#endif /* HANDLE_MULTIBYTE */ +#endif /* _SHMBCHAR_H */ diff --git a/bash-5.1/include/shmbutil.h b/bash-5.1/include/shmbutil.h new file mode 100644 index 0000000..835fb80 --- /dev/null +++ b/bash-5.1/include/shmbutil.h @@ -0,0 +1,551 @@ +/* shmbutil.h -- utility functions for multibyte characters. */ + +/* Copyright (C) 2002-2019 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_SH_MBUTIL_H_) +#define _SH_MBUTIL_H_ + +#include "stdc.h" + +/* Include config.h for HANDLE_MULTIBYTE */ +#include + +#if defined (HANDLE_MULTIBYTE) +#include "shmbchar.h" + +extern size_t xwcsrtombs PARAMS((char *, const wchar_t **, size_t, mbstate_t *)); +extern size_t xmbsrtowcs PARAMS((wchar_t *, const char **, size_t, mbstate_t *)); +extern size_t xdupmbstowcs PARAMS((wchar_t **, char ***, const char *)); + +extern size_t mbstrlen PARAMS((const char *)); + +extern char *xstrchr PARAMS((const char *, int)); + +extern int locale_mb_cur_max; /* XXX */ +extern int locale_utf8locale; /* XXX */ + +#ifndef MB_INVALIDCH +#define MB_INVALIDCH(x) ((x) == (size_t)-1 || (x) == (size_t)-2) +#define MB_NULLWCH(x) ((x) == 0) +#endif + +#define MBSLEN(s) (((s) && (s)[0]) ? ((s)[1] ? mbstrlen (s) : 1) : 0) +#define MB_STRLEN(s) ((MB_CUR_MAX > 1) ? MBSLEN (s) : STRLEN (s)) + +#define MBLEN(s, n) ((MB_CUR_MAX > 1) ? mblen ((s), (n)) : 1) +#define MBRLEN(s, n, p) ((MB_CUR_MAX > 1) ? mbrlen ((s), (n), (p)) : 1) + +#define UTF8_SINGLEBYTE(c) (((c) & 0x80) == 0) +#define UTF8_MBFIRSTCHAR(c) (((c) & 0xc0) == 0xc0) +#define UTF8_MBCHAR(c) (((c) & 0xc0) == 0x80) + +#else /* !HANDLE_MULTIBYTE */ + +#undef MB_LEN_MAX +#undef MB_CUR_MAX + +#define MB_LEN_MAX 1 +#define MB_CUR_MAX 1 + +#undef xstrchr +#define xstrchr(s, c) strchr(s, c) + +#ifndef MB_INVALIDCH +#define MB_INVALIDCH(x) (0) +#define MB_NULLWCH(x) (0) +#endif + +#define MB_STRLEN(s) (STRLEN(s)) + +#define MBLEN(s, n) 1 +#define MBRLEN(s, n, p) 1 + +#ifndef wchar_t +# define wchar_t int +#endif + +#define UTF8_SINGLEBYTE(c) (1) +#define UTF8_MBFIRSTCHAR(c) (0) + +#endif /* !HANDLE_MULTIBYTE */ + +/* Declare and initialize a multibyte state. Call must be terminated + with `;'. */ +#if defined (HANDLE_MULTIBYTE) +# define DECLARE_MBSTATE \ + mbstate_t state; \ + memset (&state, '\0', sizeof (mbstate_t)) +#else +# define DECLARE_MBSTATE +#endif /* !HANDLE_MULTIBYTE */ + +/* Initialize or reinitialize a multibyte state named `state'. Call must be + terminated with `;'. */ +#if defined (HANDLE_MULTIBYTE) +# define INITIALIZE_MBSTATE memset (&state, '\0', sizeof (mbstate_t)) +#else +# define INITIALIZE_MBSTATE +#endif /* !HANDLE_MULTIBYTE */ + +/* Advance one (possibly multi-byte) character in string _STR of length + _STRSIZE, starting at index _I. STATE must have already been declared. */ +#if defined (HANDLE_MULTIBYTE) +# define ADVANCE_CHAR(_str, _strsize, _i) \ + do \ + { \ + if (locale_mb_cur_max > 1) \ + { \ + mbstate_t state_bak; \ + size_t mblength; \ + int _f; \ +\ + _f = is_basic ((_str)[_i]); \ + if (_f) \ + mblength = 1; \ + else if (locale_utf8locale && (((_str)[_i] & 0x80) == 0)) \ + mblength = (_str)[_i] != 0; \ + else \ + { \ + state_bak = state; \ + mblength = mbrlen ((_str) + (_i), (_strsize) - (_i), &state); \ + } \ +\ + if (mblength == (size_t)-2 || mblength == (size_t)-1) \ + { \ + state = state_bak; \ + (_i)++; \ + } \ + else if (mblength == 0) \ + (_i)++; \ + else \ + (_i) += mblength; \ + } \ + else \ + (_i)++; \ + } \ + while (0) +#else +# define ADVANCE_CHAR(_str, _strsize, _i) (_i)++ +#endif /* !HANDLE_MULTIBYTE */ + +/* Advance one (possibly multibyte) character in the string _STR of length + _STRSIZE. + SPECIAL: assume that _STR will be incremented by 1 after this call. */ +#if defined (HANDLE_MULTIBYTE) +# define ADVANCE_CHAR_P(_str, _strsize) \ + do \ + { \ + if (locale_mb_cur_max > 1) \ + { \ + mbstate_t state_bak; \ + size_t mblength; \ + int _f; \ +\ + _f = is_basic (*(_str)); \ + if (_f) \ + mblength = 1; \ + else if (locale_utf8locale && ((*(_str) & 0x80) == 0)) \ + mblength = *(_str) != 0; \ + else \ + { \ + state_bak = state; \ + mblength = mbrlen ((_str), (_strsize), &state); \ + } \ +\ + if (mblength == (size_t)-2 || mblength == (size_t)-1) \ + { \ + state = state_bak; \ + mblength = 1; \ + } \ + else \ + (_str) += (mblength < 1) ? 0 : (mblength - 1); \ + } \ + } \ + while (0) +#else +# define ADVANCE_CHAR_P(_str, _strsize) +#endif /* !HANDLE_MULTIBYTE */ + +/* Back up one (possibly multi-byte) character in string _STR of length + _STRSIZE, starting at index _I. STATE must have already been declared. */ +#if defined (HANDLE_MULTIBYTE) +# define BACKUP_CHAR(_str, _strsize, _i) \ + do \ + { \ + if (locale_mb_cur_max > 1) \ + { \ + mbstate_t state_bak; \ + size_t mblength; \ + int _x, _p; /* _x == temp index into string, _p == prev index */ \ +\ + _x = _p = 0; \ + while (_x < (_i)) \ + { \ + state_bak = state; \ + mblength = mbrlen ((_str) + (_x), (_strsize) - (_x), &state); \ +\ + if (mblength == (size_t)-2 || mblength == (size_t)-1) \ + { \ + state = state_bak; \ + _x++; \ + } \ + else if (mblength == 0) \ + _x++; \ + else \ + { \ + _p = _x; /* _p == start of prev mbchar */ \ + _x += mblength; \ + } \ + } \ + (_i) = _p; \ + } \ + else \ + (_i)--; \ + } \ + while (0) +#else +# define BACKUP_CHAR(_str, _strsize, _i) (_i)-- +#endif /* !HANDLE_MULTIBYTE */ + +/* Back up one (possibly multibyte) character in the string _BASE of length + _STRSIZE starting at _STR (_BASE <= _STR <= (_BASE + _STRSIZE) ). + SPECIAL: DO NOT assume that _STR will be decremented by 1 after this call. */ +#if defined (HANDLE_MULTIBYTE) +# define BACKUP_CHAR_P(_base, _strsize, _str) \ + do \ + { \ + if (locale_mb_cur_max > 1) \ + { \ + mbstate_t state_bak; \ + size_t mblength; \ + char *_x, _p; /* _x == temp pointer into string, _p == prev pointer */ \ +\ + _x = _p = _base; \ + while (_x < (_str)) \ + { \ + state_bak = state; \ + mblength = mbrlen (_x, (_strsize) - _x, &state); \ +\ + if (mblength == (size_t)-2 || mblength == (size_t)-1) \ + { \ + state = state_bak; \ + _x++; \ + } \ + else if (mblength == 0) \ + _x++; \ + else \ + { \ + _p = _x; /* _p == start of prev mbchar */ \ + _x += mblength; \ + } \ + } \ + (_str) = _p; \ + } \ + else \ + (_str)--; \ + } \ + while (0) +#else +# define BACKUP_CHAR_P(_base, _strsize, _str) (_str)-- +#endif /* !HANDLE_MULTIBYTE */ + +/* Copy a single character from the string _SRC to the string _DST. + _SRCEND is a pointer to the end of _SRC. */ +#if defined (HANDLE_MULTIBYTE) +# define COPY_CHAR_P(_dst, _src, _srcend) \ + do \ + { \ + if (locale_mb_cur_max > 1) \ + { \ + mbstate_t state_bak; \ + size_t mblength; \ + int _k; \ +\ + _k = is_basic (*(_src)); \ + if (_k) \ + mblength = 1; \ + else if (locale_utf8locale && ((*(_src) & 0x80) == 0)) \ + mblength = *(_src) != 0; \ + else \ + { \ + state_bak = state; \ + mblength = mbrlen ((_src), (_srcend) - (_src), &state); \ + } \ + if (mblength == (size_t)-2 || mblength == (size_t)-1) \ + { \ + state = state_bak; \ + mblength = 1; \ + } \ + else \ + mblength = (mblength < 1) ? 1 : mblength; \ +\ + for (_k = 0; _k < mblength; _k++) \ + *(_dst)++ = *(_src)++; \ + } \ + else \ + *(_dst)++ = *(_src)++; \ + } \ + while (0) +#else +# define COPY_CHAR_P(_dst, _src, _srcend) *(_dst)++ = *(_src)++ +#endif /* !HANDLE_MULTIBYTE */ + +/* Copy a single character from the string _SRC at index _SI to the string + _DST at index _DI. _SRCEND is a pointer to the end of _SRC. */ +#if defined (HANDLE_MULTIBYTE) +# define COPY_CHAR_I(_dst, _di, _src, _srcend, _si) \ + do \ + { \ + if (locale_mb_cur_max > 1) \ + { \ + mbstate_t state_bak; \ + size_t mblength; \ + int _k; \ +\ + _k = is_basic (*((_src) + (_si))); \ + if (_k) \ + mblength = 1; \ + else \ + {\ + state_bak = state; \ + mblength = mbrlen ((_src) + (_si), (_srcend) - ((_src)+(_si)), &state); \ + } \ + if (mblength == (size_t)-2 || mblength == (size_t)-1) \ + { \ + state = state_bak; \ + mblength = 1; \ + } \ + else \ + mblength = (mblength < 1) ? 1 : mblength; \ +\ + for (_k = 0; _k < mblength; _k++) \ + _dst[_di++] = _src[_si++]; \ + } \ + else \ + _dst[_di++] = _src[_si++]; \ + } \ + while (0) +#else +# define COPY_CHAR_I(_dst, _di, _src, _srcend, _si) _dst[_di++] = _src[_si++] +#endif /* !HANDLE_MULTIBYTE */ + +/**************************************************************** + * * + * The following are only guaranteed to work in subst.c * + * * + ****************************************************************/ + +#if defined (HANDLE_MULTIBYTE) +# define SCOPY_CHAR_I(_dst, _escchar, _sc, _src, _si, _slen) \ + do \ + { \ + if (locale_mb_cur_max > 1) \ + { \ + mbstate_t state_bak; \ + size_t mblength; \ + int _i; \ +\ + _i = is_basic (*((_src) + (_si))); \ + if (_i) \ + mblength = 1; \ + else \ + { \ + state_bak = state; \ + mblength = mbrlen ((_src) + (_si), (_slen) - (_si), &state); \ + } \ + if (mblength == (size_t)-2 || mblength == (size_t)-1) \ + { \ + state = state_bak; \ + mblength = 1; \ + } \ + else \ + mblength = (mblength < 1) ? 1 : mblength; \ +\ + temp = xmalloc (mblength + 2); \ + temp[0] = _escchar; \ + for (_i = 0; _i < mblength; _i++) \ + temp[_i + 1] = _src[_si++]; \ + temp[mblength + 1] = '\0'; \ +\ + goto add_string; \ + } \ + else \ + { \ + _dst[0] = _escchar; \ + _dst[1] = _sc; \ + } \ + } \ + while (0) +#else +# define SCOPY_CHAR_I(_dst, _escchar, _sc, _src, _si, _slen) \ + _dst[0] = _escchar; \ + _dst[1] = _sc +#endif /* !HANDLE_MULTIBYTE */ + +#if defined (HANDLE_MULTIBYTE) +# define SCOPY_CHAR_M(_dst, _src, _srcend, _si) \ + do \ + { \ + if (locale_mb_cur_max > 1) \ + { \ + mbstate_t state_bak; \ + size_t mblength; \ + int _i; \ +\ + _i = is_basic (*((_src) + (_si))); \ + if (_i) \ + mblength = 1; \ + else \ + { \ + state_bak = state; \ + mblength = mbrlen ((_src) + (_si), (_srcend) - ((_src) + (_si)), &state); \ + } \ + if (mblength == (size_t)-2 || mblength == (size_t)-1) \ + { \ + state = state_bak; \ + mblength = 1; \ + } \ + else \ + mblength = (mblength < 1) ? 1 : mblength; \ +\ + FASTCOPY(((_src) + (_si)), (_dst), mblength); \ +\ + (_dst) += mblength; \ + (_si) += mblength; \ + } \ + else \ + { \ + *(_dst)++ = _src[(_si)]; \ + (_si)++; \ + } \ + } \ + while (0) +#else +# define SCOPY_CHAR_M(_dst, _src, _srcend, _si) \ + *(_dst)++ = _src[(_si)]; \ + (_si)++ +#endif /* !HANDLE_MULTIBYTE */ + +#if HANDLE_MULTIBYTE +# define SADD_MBCHAR(_dst, _src, _si, _srcsize) \ + do \ + { \ + if (locale_mb_cur_max > 1) \ + { \ + int i; \ + mbstate_t state_bak; \ + size_t mblength; \ +\ + i = is_basic (*((_src) + (_si))); \ + if (i) \ + mblength = 1; \ + else if (locale_utf8locale && (((_src)[_si] & 0x80) == 0)) \ + mblength = (_src)[_si] != 0; \ + else \ + { \ + state_bak = state; \ + mblength = mbrlen ((_src) + (_si), (_srcsize) - (_si), &state); \ + } \ + if (mblength == (size_t)-1 || mblength == (size_t)-2) \ + { \ + state = state_bak; \ + mblength = 1; \ + } \ + if (mblength < 1) \ + mblength = 1; \ +\ + _dst = (char *)xmalloc (mblength + 1); \ + for (i = 0; i < mblength; i++) \ + (_dst)[i] = (_src)[(_si)++]; \ + (_dst)[mblength] = '\0'; \ +\ + goto add_string; \ + } \ + } \ + while (0) + +#else +# define SADD_MBCHAR(_dst, _src, _si, _srcsize) +#endif + +/* Watch out when using this -- it's just straight textual substitution */ +#if defined (HANDLE_MULTIBYTE) +# define SADD_MBQCHAR_BODY(_dst, _src, _si, _srcsize) \ +\ + int i; \ + mbstate_t state_bak; \ + size_t mblength; \ +\ + i = is_basic (*((_src) + (_si))); \ + if (i) \ + mblength = 1; \ + else if (locale_utf8locale && (((_src)[_si] & 0x80) == 0)) \ + mblength = (_src)[_si] != 0; \ + else \ + { \ + state_bak = state; \ + mblength = mbrlen ((_src) + (_si), (_srcsize) - (_si), &state); \ + } \ + if (mblength == (size_t)-1 || mblength == (size_t)-2) \ + { \ + state = state_bak; \ + mblength = 1; \ + } \ + if (mblength < 1) \ + mblength = 1; \ +\ + (_dst) = (char *)xmalloc (mblength + 2); \ + (_dst)[0] = CTLESC; \ + for (i = 0; i < mblength; i++) \ + (_dst)[i+1] = (_src)[(_si)++]; \ + (_dst)[mblength+1] = '\0'; \ +\ + goto add_string + +# define SADD_MBCHAR_BODY(_dst, _src, _si, _srcsize) \ +\ + int i; \ + mbstate_t state_bak; \ + size_t mblength; \ +\ + i = is_basic (*((_src) + (_si))); \ + if (i) \ + mblength = 1; \ + else \ + { \ + state_bak = state; \ + mblength = mbrlen ((_src) + (_si), (_srcsize) - (_si), &state); \ + } \ + if (mblength == (size_t)-1 || mblength == (size_t)-2) \ + { \ + state = state_bak; \ + mblength = 1; \ + } \ + if (mblength < 1) \ + mblength = 1; \ +\ + (_dst) = (char *)xmalloc (mblength + 1); \ + for (i = 0; i < mblength; i++) \ + (_dst)[i+1] = (_src)[(_si)++]; \ + (_dst)[mblength+1] = '\0'; \ +\ + goto add_string + +#endif /* HANDLE_MULTIBYTE */ +#endif /* _SH_MBUTIL_H_ */ diff --git a/bash-5.1/include/shtty.h b/bash-5.1/include/shtty.h new file mode 100644 index 0000000..fdf379b --- /dev/null +++ b/bash-5.1/include/shtty.h @@ -0,0 +1,112 @@ +/* Copyright (C) 1999-2020 Free Software Foundation, Inc. */ + +/* This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* + * shtty.h -- include the correct system-dependent files to manipulate the + * tty + */ + +#ifndef __SH_TTY_H_ +#define __SH_TTY_H_ + +#include "stdc.h" + +#if defined (_POSIX_VERSION) && defined (HAVE_TERMIOS_H) && defined (HAVE_TCGETATTR) && !defined (TERMIOS_MISSING) +# define TERMIOS_TTY_DRIVER +#else +# if defined (HAVE_TERMIO_H) +# define TERMIO_TTY_DRIVER +# else +# define NEW_TTY_DRIVER +# endif +#endif + +/* + * The _POSIX_SOURCE define is to avoid multiple symbol definitions + * between sys/ioctl.h and termios.h. Ditto for the test against SunOS4 + * and the undefining of several symbols. + */ + +#ifdef TERMIOS_TTY_DRIVER +# if (defined (SunOS4) || defined (SunOS5)) && !defined (_POSIX_SOURCE) +# define _POSIX_SOURCE +# endif +# if defined (SunOS4) +# undef ECHO +# undef NOFLSH +# undef TOSTOP +# endif /* SunOS4 */ +# include +# define TTYSTRUCT struct termios +#else +# ifdef TERMIO_TTY_DRIVER +# include +# define TTYSTRUCT struct termio +# else /* NEW_TTY_DRIVER */ +# include +# define TTYSTRUCT struct sgttyb +# endif +#endif + +/* Functions imported from lib/sh/shtty.c */ + +/* Get and set terminal attributes for the file descriptor passed as + an argument. */ +extern int ttgetattr PARAMS((int, TTYSTRUCT *)); +extern int ttsetattr PARAMS((int, TTYSTRUCT *)); + +/* Save and restore the terminal's attributes from static storage. */ +extern void ttsave PARAMS((void)); +extern void ttrestore PARAMS((void)); + +/* Return the attributes corresponding to the file descriptor (0 or 1) + passed as an argument. */ +extern TTYSTRUCT *ttattr PARAMS((int)); + +/* These functions only operate on the passed TTYSTRUCT; they don't + actually change anything with the kernel's current tty settings. */ +extern int tt_setonechar PARAMS((TTYSTRUCT *)); +extern int tt_setnoecho PARAMS((TTYSTRUCT *)); +extern int tt_seteightbit PARAMS((TTYSTRUCT *)); +extern int tt_setnocanon PARAMS((TTYSTRUCT *)); +extern int tt_setcbreak PARAMS((TTYSTRUCT *)); + +/* These functions are all generally mutually exclusive. If you call + more than one (bracketed with calls to ttsave and ttrestore, of + course), the right thing will happen, but more system calls will be + executed than absolutely necessary. You can do all of this yourself + with the other functions; these are only conveniences. */ + +/* These functions work with a given file descriptor and set terminal + attributes */ +extern int ttfd_onechar PARAMS((int, TTYSTRUCT *)); +extern int ttfd_noecho PARAMS((int, TTYSTRUCT *)); +extern int ttfd_eightbit PARAMS((int, TTYSTRUCT *)); +extern int ttfd_nocanon PARAMS((int, TTYSTRUCT *)); + +extern int ttfd_cbreak PARAMS((int, TTYSTRUCT *)); + +/* These functions work with fd 0 and the TTYSTRUCT saved with ttsave () */ +extern int ttonechar PARAMS((void)); +extern int ttnoecho PARAMS((void)); +extern int tteightbit PARAMS((void)); +extern int ttnocanon PARAMS((void)); + +extern int ttcbreak PARAMS((void)); + +#endif diff --git a/bash-5.1/include/stat-time.h b/bash-5.1/include/stat-time.h new file mode 100644 index 0000000..e04cc61 --- /dev/null +++ b/bash-5.1/include/stat-time.h @@ -0,0 +1,214 @@ +/* stat-related time functions. + + Copyright (C) 2005, 2007, 2009-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + 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 . */ + +/* Written by Paul Eggert. */ + +#ifndef STAT_TIME_H +#define STAT_TIME_H 1 + +#include + +#if defined (TIME_H_DEFINES_STRUCT_TIMESPEC) +# include +#elif defined (SYS_TIME_H_DEFINES_STRUCT_TIMESPEC) +# include +#elif defined (PTHREAD_H_DEFINES_STRUCT_TIMESPEC) +# include +#endif + +#ifndef HAVE_STRUCT_TIMESPEC +struct timespec +{ + time_t tv_sec; + long int tv_nsec; +}; +#endif + +/* STAT_TIMESPEC (ST, ST_XTIM) is the ST_XTIM member for *ST of type + struct timespec, if available. If not, then STAT_TIMESPEC_NS (ST, + ST_XTIM) is the nanosecond component of the ST_XTIM member for *ST, + if available. ST_XTIM can be st_atim, st_ctim, st_mtim, or st_birthtim + for access, status change, data modification, or birth (creation) + time respectively. + + These macros are private to stat-time.h. */ +#if defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC +# ifdef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC +# define STAT_TIMESPEC(st, st_xtim) ((st)->st_xtim) +# else +# define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim.tv_nsec) +# endif +#elif defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC +# define STAT_TIMESPEC(st, st_xtim) ((st)->st_xtim##espec) +#elif defined HAVE_STRUCT_STAT_ST_ATIMENSEC +# define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim##ensec) +#elif defined HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC +# define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim.st__tim.tv_nsec) +#endif + +/* Return the nanosecond component of *ST's access time. */ +static inline long int +get_stat_atime_ns (struct stat const *st) +{ +# if defined STAT_TIMESPEC + return STAT_TIMESPEC (st, st_atim).tv_nsec; +# elif defined STAT_TIMESPEC_NS + return STAT_TIMESPEC_NS (st, st_atim); +# else + return 0; +# endif +} + +/* Return the nanosecond component of *ST's status change time. */ +static inline long int +get_stat_ctime_ns (struct stat const *st) +{ +# if defined STAT_TIMESPEC + return STAT_TIMESPEC (st, st_ctim).tv_nsec; +# elif defined STAT_TIMESPEC_NS + return STAT_TIMESPEC_NS (st, st_ctim); +# else + return 0; +# endif +} + +/* Return the nanosecond component of *ST's data modification time. */ +static inline long int +get_stat_mtime_ns (struct stat const *st) +{ +# if defined STAT_TIMESPEC + return STAT_TIMESPEC (st, st_mtim).tv_nsec; +# elif defined STAT_TIMESPEC_NS + return STAT_TIMESPEC_NS (st, st_mtim); +# else + return 0; +# endif +} + +/* Return the nanosecond component of *ST's birth time. */ +static inline long int +get_stat_birthtime_ns (struct stat const *st) +{ +# if defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC + return STAT_TIMESPEC (st, st_birthtim).tv_nsec; +# elif defined HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC + return STAT_TIMESPEC_NS (st, st_birthtim); +# else + /* Avoid a "parameter unused" warning. */ + (void) st; + return 0; +# endif +} + +/* Return *ST's access time. */ +static inline struct timespec +get_stat_atime (struct stat const *st) +{ +#ifdef STAT_TIMESPEC + return STAT_TIMESPEC (st, st_atim); +#else + struct timespec t; + t.tv_sec = st->st_atime; + t.tv_nsec = get_stat_atime_ns (st); + return t; +#endif +} + +/* Return *ST's status change time. */ +static inline struct timespec +get_stat_ctime (struct stat const *st) +{ +#ifdef STAT_TIMESPEC + return STAT_TIMESPEC (st, st_ctim); +#else + struct timespec t; + t.tv_sec = st->st_ctime; + t.tv_nsec = get_stat_ctime_ns (st); + return t; +#endif +} + +/* Return *ST's data modification time. */ +static inline struct timespec +get_stat_mtime (struct stat const *st) +{ +#ifdef STAT_TIMESPEC + return STAT_TIMESPEC (st, st_mtim); +#else + struct timespec t; + t.tv_sec = st->st_mtime; + t.tv_nsec = get_stat_mtime_ns (st); + return t; +#endif +} + +static inline int +timespec_cmp (struct timespec a, struct timespec b) +{ + return (a.tv_sec < b.tv_sec + ? -1 + : (a.tv_sec > b.tv_sec + ? 1 + : (int) (a.tv_nsec - b.tv_nsec))); +} + +/* Return *ST's birth time, if available; otherwise return a value + with tv_sec and tv_nsec both equal to -1. */ +static inline struct timespec +get_stat_birthtime (struct stat const *st) +{ + struct timespec t; + +#if (defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC \ + || defined HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC) + t = STAT_TIMESPEC (st, st_birthtim); +#elif defined HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC + t.tv_sec = st->st_birthtime; + t.tv_nsec = st->st_birthtimensec; +#elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* Native Windows platforms (but not Cygwin) put the "file creation + time" in st_ctime (!). See + . */ + t.tv_sec = st->st_ctime; + t.tv_nsec = 0; +#else + /* Birth time is not supported. */ + t.tv_sec = -1; + t.tv_nsec = -1; + /* Avoid a "parameter unused" warning. */ + (void) st; +#endif + +#if (defined HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC \ + || defined HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC \ + || defined HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC) + /* FreeBSD and NetBSD sometimes signal the absence of knowledge by + using zero. Attempt to work around this problem. Alas, this can + report failure even for valid time stamps. Also, NetBSD + sometimes returns junk in the birth time fields; work around this + bug if it is detected. */ + if (! (t.tv_sec && 0 <= t.tv_nsec && t.tv_nsec < 1000000000)) + { + t.tv_sec = -1; + t.tv_nsec = -1; + } +#endif + + return t; +} + +#endif diff --git a/bash-5.1/include/stdc.h b/bash-5.1/include/stdc.h new file mode 100644 index 0000000..7b9282c --- /dev/null +++ b/bash-5.1/include/stdc.h @@ -0,0 +1,89 @@ +/* stdc.h -- macros to make source compile on both ANSI C and K&R C + 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 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 . +*/ + +#if !defined (_STDC_H_) +#define _STDC_H_ + +/* Adapted from BSD /usr/include/sys/cdefs.h. */ + +/* A function can be defined using prototypes and compile on both ANSI C + and traditional C compilers with something like this: + extern char *func PARAMS((char *, char *, int)); */ + +#if !defined (PARAMS) +# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) || defined (PROTOTYPES) +# define PARAMS(protos) protos +# else +# define PARAMS(protos) () +# endif +#endif + +/* Fortify, at least, has trouble with this definition */ +#if defined (HAVE_STRINGIZE) +# define CPP_STRING(x) #x +#else +# define CPP_STRING(x) "x" +#endif + +#if !defined (__STDC__) + +#if defined (__GNUC__) /* gcc with -traditional */ +# if !defined (signed) +# define signed __signed +# endif +# if !defined (volatile) +# define volatile __volatile +# endif +#else /* !__GNUC__ */ +# if !defined (inline) +# define inline +# endif +# if !defined (signed) +# define signed +# endif +# if !defined (volatile) +# define volatile +# endif +#endif /* !__GNUC__ */ + +#endif /* !__STDC__ */ + +#ifndef __attribute__ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) +# define __attribute__(x) +# endif +#endif + +/* For those situations when gcc handles inlining a particular function but + other compilers complain. */ +#ifdef __GNUC__ +# define INLINE inline +#else +# define INLINE +#endif + +#if defined (PREFER_STDARG) +# define SH_VA_START(va, arg) va_start(va, arg) +#else +# define SH_VA_START(va, arg) va_start(va) +#endif + +#endif /* !_STDC_H_ */ diff --git a/bash-5.1/include/systimes.h b/bash-5.1/include/systimes.h new file mode 100644 index 0000000..aefcab7 --- /dev/null +++ b/bash-5.1/include/systimes.h @@ -0,0 +1,55 @@ +/* Copyright (C) 1991-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* + * POSIX Standard: 4.5.2 Process Times + */ + +/* + * If we don't have a standard system clock_t type, this must be included + * after config.h + */ + +#ifndef _BASH_SYSTIMES_H +#define _BASH_SYSTIMES_H 1 + +#if defined (HAVE_SYS_TIMES_H) +# include +#else /* !HAVE_SYS_TIMES_H */ + +#include + +/* Structure describing CPU time used by a process and its children. */ +struct tms + { + clock_t tms_utime; /* User CPU time. */ + clock_t tms_stime; /* System CPU time. */ + + clock_t tms_cutime; /* User CPU time of dead children. */ + clock_t tms_cstime; /* System CPU time of dead children. */ + }; + +/* Store the CPU time used by this process and all its + dead descendants in BUFFER. + Return the elapsed real time from an arbitrary point in the + past (the bash emulation uses the epoch), or (clock_t) -1 for + errors. All times are in CLK_TCKths of a second. */ +extern clock_t times PARAMS((struct tms *buffer)); + +#endif /* !HAVE_SYS_TIMES_H */ +#endif /* _BASH_SYSTIMES_H */ diff --git a/bash-5.1/include/typemax.h b/bash-5.1/include/typemax.h new file mode 100644 index 0000000..9853d56 --- /dev/null +++ b/bash-5.1/include/typemax.h @@ -0,0 +1,131 @@ +/* typemax.h -- encapsulate max values for long, long long, etc. */ + +/* 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 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 . +*/ + +/* + * NOTE: This should be included after config.h, limits.h, stdint.h, and + * inttypes.h + */ + +#ifndef _SH_TYPEMAX_H +#define _SH_TYPEMAX_H + +#ifndef CHAR_BIT +# define CHAR_BIT 8 +#endif + +/* Nonzero if the integer type T is signed. */ +#ifndef TYPE_SIGNED +# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) +#endif + +#ifndef TYPE_SIGNED_MAGNITUDE +# define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1) +#endif + +#ifndef TYPE_WIDTH +# define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) +#endif + +#ifndef TYPE_MINIMUM +# define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) +#endif + +#ifndef TYPE_MAXIMUM +# define TYPE_MAXIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) -1 \ + : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) +#endif + +#ifdef HAVE_LONG_LONG +# ifndef LLONG_MAX +# define LLONG_MAX TYPE_MAXIMUM(long long int) +# define LLONG_MIN TYPE_MINIMUM(long long int) +# endif +# ifndef ULLONG_MAX +# define ULLONG_MAX TYPE_MAXIMUM(unsigned long long int) +# endif +#endif + +#ifndef ULONG_MAX +# define ULONG_MAX ((unsigned long) ~(unsigned long) 0) +#endif + +#ifndef LONG_MAX +# define LONG_MAX ((long int) (ULONG_MAX >> 1)) +# define LONG_MIN ((long int) (-LONG_MAX - 1L)) +#endif + +#ifndef INT_MAX /* ouch */ +# define INT_MAX TYPE_MAXIMUM(int) +# define INT_MIN TYPE_MINIMUM(int) +# define UINT_MAX ((unsigned int) ~(unsigned int)0) +#endif + +/* workaround for gcc bug in versions < 2.7 */ +#if defined (HAVE_LONG_LONG) && __GNUC__ == 2 && __GNUC_MINOR__ < 7 +static const unsigned long long int maxquad = ULLONG_MAX; +# undef ULLONG_MAX +# define ULLONG_MAX maxquad +#endif + +#if !defined (INTMAX_MAX) || !defined (INTMAX_MIN) + +#if SIZEOF_INTMAX_T == SIZEOF_LONG_LONG +# define INTMAX_MAX LLONG_MAX +# define INTMAX_MIN LLONG_MIN +#elif SIZEOF_INTMAX_T == SIZEOF_LONG +# define INTMAX_MAX LONG_MAX +# define INTMAX_MIN LONG_MIN +#else +# define INTMAX_MAX INT_MAX +# define INTMAX_MIN INT_MIN +#endif + +#endif + +#ifndef SSIZE_MAX +# define SSIZE_MAX 32767 /* POSIX minimum max */ +#endif + +#ifndef SIZE_MAX +# define SIZE_MAX 65535 /* POSIX minimum max */ +#endif + +#ifndef sh_imaxabs +# define sh_imaxabs(x) (((x) >= 0) ? (x) : -(x)) +#endif + +/* Handle signed arithmetic overflow and underflow. Have to do it this way + to avoid compilers optimizing out simpler overflow checks. */ + +/* Make sure that a+b does not exceed MAXV or is smaller than MINV (if b < 0). + Assumes that b > 0 if a > 0 and b < 0 if a < 0 */ +#define ADDOVERFLOW(a,b,minv,maxv) \ + ((((a) > 0) && ((b) > ((maxv) - (a)))) || \ + (((a) < 0) && ((b) < ((minv) - (a))))) + +/* Make sure that a-b is not smaller than MINV or exceeds MAXV (if b < 0). + Assumes that b > 0 if a > 0 and b < 0 if a < 0 */ +#define SUBOVERFLOW(a,b,minv,maxv) \ + ((((b) > 0) && ((a) < ((minv) + (b)))) || \ + (((b) < 0) && ((a) > ((maxv) + (b))))) + +#endif /* _SH_TYPEMAX_H */ diff --git a/bash-5.1/include/unionwait.h b/bash-5.1/include/unionwait.h new file mode 100644 index 0000000..b1b4dfa --- /dev/null +++ b/bash-5.1/include/unionwait.h @@ -0,0 +1,98 @@ +/* unionwait.h -- definitions for using a `union wait' on systems without + one. */ + +/* Copyright (C) 1996 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _UNIONWAIT_H +#define _UNIONWAIT_H + +#if !defined (WORDS_BIGENDIAN) +union wait + { + int w_status; /* used in syscall */ + + /* Terminated process status. */ + struct + { + unsigned short + w_Termsig : 7, /* termination signal */ + w_Coredump : 1, /* core dump indicator */ + w_Retcode : 8, /* exit code if w_termsig==0 */ + w_Fill1 : 16; /* high 16 bits unused */ + } w_T; + + /* Stopped process status. Returned + only for traced children unless requested + with the WUNTRACED option bit. */ + struct + { + unsigned short + w_Stopval : 8, /* == W_STOPPED if stopped */ + w_Stopsig : 8, /* actually zero on XENIX */ + w_Fill2 : 16; /* high 16 bits unused */ + } w_S; + }; + +#else /* WORDS_BIGENDIAN */ + +/* This is for big-endian machines like the IBM RT, HP 9000, or Sun-3 */ + +union wait + { + int w_status; /* used in syscall */ + + /* Terminated process status. */ + struct + { + unsigned short w_Fill1 : 16; /* high 16 bits unused */ + unsigned w_Retcode : 8; /* exit code if w_termsig==0 */ + unsigned w_Coredump : 1; /* core dump indicator */ + unsigned w_Termsig : 7; /* termination signal */ + } w_T; + + /* Stopped process status. Returned + only for traced children unless requested + with the WUNTRACED option bit. */ + struct + { + unsigned short w_Fill2 : 16; /* high 16 bits unused */ + unsigned w_Stopsig : 8; /* signal that stopped us */ + unsigned w_Stopval : 8; /* == W_STOPPED if stopped */ + } w_S; + }; + +#endif /* WORDS_BIGENDIAN */ + +#define w_termsig w_T.w_Termsig +#define w_coredump w_T.w_Coredump +#define w_retcode w_T.w_Retcode +#define w_stopval w_S.w_Stopval +#define w_stopsig w_S.w_Stopsig + +#define WSTOPPED 0177 +#define WIFSTOPPED(x) ((x).w_stopval == WSTOPPED) +#define WIFEXITED(x) ((x).w_stopval != WSTOPPED && (x).w_termsig == 0) +#define WIFSIGNALED(x) ((x).w_stopval != WSTOPPED && (x).w_termsig != 0) + +#define WTERMSIG(x) ((x).w_termsig) +#define WSTOPSIG(x) ((x).w_stopsig) +#define WEXITSTATUS(x) ((x).w_retcode) +#define WIFCORED(x) ((x).w_coredump) + +#endif /* _UNIONWAIT_H */ diff --git a/bash-5.1/input.c b/bash-5.1/input.c new file mode 100644 index 0000000..c57e81c --- /dev/null +++ b/bash-5.1/input.c @@ -0,0 +1,677 @@ +/* input.c -- functions to perform buffered input with synchronization. */ + +/* Copyright (C) 1992-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif +#include "filecntl.h" +#include "posixstat.h" +#include +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" +#include "bashintl.h" + +#include "shell.h" +#include "input.h" +#include "externs.h" +#include "trap.h" + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#if defined (EAGAIN) +# define X_EAGAIN EAGAIN +#else +# define X_EAGAIN -99 +#endif + +#if defined (EWOULDBLOCK) +# define X_EWOULDBLOCK EWOULDBLOCK +#else +# define X_EWOULDBLOCK -99 +#endif + +extern void termsig_handler PARAMS((int)); + +/* Functions to handle reading input on systems that don't restart read(2) + if a signal is received. */ + +static char localbuf[1024]; +static int local_index = 0, local_bufused = 0; + +/* Posix and USG systems do not guarantee to restart read () if it is + interrupted by a signal. We do the read ourselves, and restart it + if it returns EINTR. */ +int +getc_with_restart (stream) + FILE *stream; +{ + unsigned char uc; + + CHECK_TERMSIG; + + /* Try local buffering to reduce the number of read(2) calls. */ + if (local_index == local_bufused || local_bufused == 0) + { + while (1) + { + QUIT; + run_pending_traps (); + + local_bufused = read (fileno (stream), localbuf, sizeof(localbuf)); + if (local_bufused > 0) + break; + else if (local_bufused == 0) + { + local_index = 0; + return EOF; + } + else if (errno == X_EAGAIN || errno == X_EWOULDBLOCK) + { + if (sh_unset_nodelay_mode (fileno (stream)) < 0) + { + sys_error (_("cannot reset nodelay mode for fd %d"), fileno (stream)); + local_index = local_bufused = 0; + return EOF; + } + continue; + } + else if (errno != EINTR) + { + local_index = local_bufused = 0; + return EOF; + } + else if (interrupt_state || terminating_signal) /* QUIT; */ + local_index = local_bufused = 0; + } + local_index = 0; + } + uc = localbuf[local_index++]; + return uc; +} + +int +ungetc_with_restart (c, stream) + int c; + FILE *stream; +{ + if (local_index == 0 || c == EOF) + return EOF; + localbuf[--local_index] = c; + return c; +} + +#if defined (BUFFERED_INPUT) + +/* A facility similar to stdio, but input-only. */ + +#if defined (USING_BASH_MALLOC) +# define MAX_INPUT_BUFFER_SIZE 8172 +#else +# define MAX_INPUT_BUFFER_SIZE 8192 +#endif + +#if !defined (SEEK_CUR) +# define SEEK_CUR 1 +#endif /* !SEEK_CUR */ + +#ifdef max +# undef max +#endif +#define max(a, b) (((a) > (b)) ? (a) : (b)) +#ifdef min +# undef min +#endif +#define min(a, b) ((a) > (b) ? (b) : (a)) + +int bash_input_fd_changed; + +/* This provides a way to map from a file descriptor to the buffer + associated with that file descriptor, rather than just the other + way around. This is needed so that buffers are managed properly + in constructs like 3<&4. buffers[x]->b_fd == x -- that is how the + correspondence is maintained. */ +static BUFFERED_STREAM **buffers = (BUFFERED_STREAM **)NULL; +static int nbuffers; + +#define ALLOCATE_BUFFERS(n) \ + do { if ((n) >= nbuffers) allocate_buffers (n); } while (0) + +/* Make sure `buffers' has at least N elements. */ +static void +allocate_buffers (n) + int n; +{ + register int i, orig_nbuffers; + + orig_nbuffers = nbuffers; + nbuffers = n + 20; + buffers = (BUFFERED_STREAM **)xrealloc + (buffers, nbuffers * sizeof (BUFFERED_STREAM *)); + + /* Zero out the new buffers. */ + for (i = orig_nbuffers; i < nbuffers; i++) + buffers[i] = (BUFFERED_STREAM *)NULL; +} + +/* Construct and return a BUFFERED_STREAM corresponding to file descriptor + FD, using BUFFER. */ +static BUFFERED_STREAM * +make_buffered_stream (fd, buffer, bufsize) + int fd; + char *buffer; + size_t bufsize; +{ + BUFFERED_STREAM *bp; + + bp = (BUFFERED_STREAM *)xmalloc (sizeof (BUFFERED_STREAM)); + ALLOCATE_BUFFERS (fd); + buffers[fd] = bp; + bp->b_fd = fd; + bp->b_buffer = buffer; + bp->b_size = bufsize; + bp->b_used = bp->b_inputp = bp->b_flag = 0; + if (bufsize == 1) + bp->b_flag |= B_UNBUFF; + if (O_TEXT && (fcntl (fd, F_GETFL) & O_TEXT) != 0) + bp->b_flag |= B_TEXT; + return (bp); +} + +/* Allocate a new BUFFERED_STREAM, copy BP to it, and return the new copy. */ +static BUFFERED_STREAM * +copy_buffered_stream (bp) + BUFFERED_STREAM *bp; +{ + BUFFERED_STREAM *nbp; + + if (!bp) + return ((BUFFERED_STREAM *)NULL); + + nbp = (BUFFERED_STREAM *)xmalloc (sizeof (BUFFERED_STREAM)); + xbcopy ((char *)bp, (char *)nbp, sizeof (BUFFERED_STREAM)); + return (nbp); +} + +int +set_bash_input_fd (fd) + int fd; +{ + if (bash_input.type == st_bstream) + bash_input.location.buffered_fd = fd; + else if (interactive_shell == 0) + default_buffered_input = fd; + return 0; +} + +int +fd_is_bash_input (fd) + int fd; +{ + if (bash_input.type == st_bstream && bash_input.location.buffered_fd == fd) + return 1; + else if (interactive_shell == 0 && default_buffered_input == fd) + return 1; + return 0; +} + +/* Save the buffered stream corresponding to file descriptor FD (which bash + is using to read input) to a buffered stream associated with NEW_FD. If + NEW_FD is -1, a new file descriptor is allocated with fcntl. The new + file descriptor is returned on success, -1 on error. */ +int +save_bash_input (fd, new_fd) + int fd, new_fd; +{ + int nfd; + + /* Sync the stream so we can re-read from the new file descriptor. We + might be able to avoid this by copying the buffered stream verbatim + to the new file descriptor. */ + if (buffers[fd]) + sync_buffered_stream (fd); + + /* Now take care of duplicating the file descriptor that bash is + using for input, so we can reinitialize it later. */ + nfd = (new_fd == -1) ? fcntl (fd, F_DUPFD, 10) : new_fd; + if (nfd == -1) + { + if (fcntl (fd, F_GETFD, 0) == 0) + sys_error (_("cannot allocate new file descriptor for bash input from fd %d"), fd); + return -1; + } + + if (nfd < nbuffers && buffers[nfd]) + { + /* What's this? A stray buffer without an associated open file + descriptor? Free up the buffer and report the error. */ + internal_error (_("save_bash_input: buffer already exists for new fd %d"), nfd); + if (buffers[nfd]->b_flag & B_SHAREDBUF) + buffers[nfd]->b_buffer = (char *)NULL; + free_buffered_stream (buffers[nfd]); + } + + /* Reinitialize bash_input.location. */ + if (bash_input.type == st_bstream) + { + bash_input.location.buffered_fd = nfd; + fd_to_buffered_stream (nfd); + close_buffered_fd (fd); /* XXX */ + } + else + /* If the current input type is not a buffered stream, but the shell + is not interactive and therefore using a buffered stream to read + input (e.g. with an `eval exec 3>output' inside a script), note + that the input fd has been changed. pop_stream() looks at this + value and adjusts the input fd to the new value of + default_buffered_input accordingly. */ + bash_input_fd_changed++; + + if (default_buffered_input == fd) + default_buffered_input = nfd; + + SET_CLOSE_ON_EXEC (nfd); + return nfd; +} + +/* Check that file descriptor FD is not the one that bash is currently + using to read input from a script. FD is about to be duplicated onto, + which means that the kernel will close it for us. If FD is the bash + input file descriptor, we need to seek backwards in the script (if + possible and necessary -- scripts read from stdin are still unbuffered), + allocate a new file descriptor to use for bash input, and re-initialize + the buffered stream. Make sure the file descriptor used to save bash + input is set close-on-exec. Returns 0 on success, -1 on failure. This + works only if fd is > 0 -- if fd == 0 and bash is reading input from + fd 0, sync_buffered_stream is used instead, to cooperate with input + redirection (look at redir.c:add_undo_redirect()). */ +int +check_bash_input (fd) + int fd; +{ + if (fd_is_bash_input (fd)) + { + if (fd > 0) + return ((save_bash_input (fd, -1) == -1) ? -1 : 0); + else if (fd == 0) + return ((sync_buffered_stream (fd) == -1) ? -1 : 0); + } + return 0; +} + +/* This is the buffered stream analogue of dup2(fd1, fd2). The + BUFFERED_STREAM corresponding to fd2 is deallocated, if one exists. + BUFFERS[fd1] is copied to BUFFERS[fd2]. This is called by the + redirect code for constructs like 4<&0 and 3b_buffer && buffers[fd1]->b_buffer == buffers[fd2]->b_buffer) + buffers[fd2] = (BUFFERED_STREAM *)NULL; + /* If this buffer is shared with another fd, don't free the buffer */ + else if (buffers[fd2]->b_flag & B_SHAREDBUF) + { + buffers[fd2]->b_buffer = (char *)NULL; + free_buffered_stream (buffers[fd2]); + } + else + free_buffered_stream (buffers[fd2]); + } + buffers[fd2] = copy_buffered_stream (buffers[fd1]); + if (buffers[fd2]) + buffers[fd2]->b_fd = fd2; + + if (is_bash_input) + { + if (!buffers[fd2]) + fd_to_buffered_stream (fd2); + buffers[fd2]->b_flag |= B_WASBASHINPUT; + } + + if (fd_is_bash_input (fd1) || (buffers[fd1] && (buffers[fd1]->b_flag & B_SHAREDBUF))) + buffers[fd2]->b_flag |= B_SHAREDBUF; + + return (fd2); +} + +/* Return 1 if a seek on FD will succeed. */ +#define fd_is_seekable(fd) (lseek ((fd), 0L, SEEK_CUR) >= 0) + +/* Take FD, a file descriptor, and create and return a buffered stream + corresponding to it. If something is wrong and the file descriptor + is invalid, return a NULL stream. */ +BUFFERED_STREAM * +fd_to_buffered_stream (fd) + int fd; +{ + char *buffer; + size_t size; + struct stat sb; + + if (fstat (fd, &sb) < 0) + { + close (fd); + return ((BUFFERED_STREAM *)NULL); + } + + size = (fd_is_seekable (fd)) ? min (sb.st_size, MAX_INPUT_BUFFER_SIZE) : 1; + if (size == 0) + size = 1; + buffer = (char *)xmalloc (size); + + return (make_buffered_stream (fd, buffer, size)); +} + +/* Return a buffered stream corresponding to FILE, a file name. */ +BUFFERED_STREAM * +open_buffered_stream (file) + char *file; +{ + int fd; + + fd = open (file, O_RDONLY); + return ((fd >= 0) ? fd_to_buffered_stream (fd) : (BUFFERED_STREAM *)NULL); +} + +/* Deallocate a buffered stream and free up its resources. Make sure we + zero out the slot in BUFFERS that points to BP. */ +void +free_buffered_stream (bp) + BUFFERED_STREAM *bp; +{ + int n; + + if (!bp) + return; + + n = bp->b_fd; + if (bp->b_buffer) + free (bp->b_buffer); + free (bp); + buffers[n] = (BUFFERED_STREAM *)NULL; +} + +/* Close the file descriptor associated with BP, a buffered stream, and free + up the stream. Return the status of closing BP's file descriptor. */ +int +close_buffered_stream (bp) + BUFFERED_STREAM *bp; +{ + int fd; + + if (!bp) + return (0); + fd = bp->b_fd; + if (bp->b_flag & B_SHAREDBUF) + bp->b_buffer = (char *)NULL; + free_buffered_stream (bp); + return (close (fd)); +} + +/* Deallocate the buffered stream associated with file descriptor FD, and + close FD. Return the status of the close on FD. */ +int +close_buffered_fd (fd) + int fd; +{ + if (fd < 0) + { + errno = EBADF; + return -1; + } + if (fd >= nbuffers || !buffers || !buffers[fd]) + return (close (fd)); + return (close_buffered_stream (buffers[fd])); +} + +/* Make the BUFFERED_STREAM associated with buffers[FD] be BP, and return + the old BUFFERED_STREAM. */ +BUFFERED_STREAM * +set_buffered_stream (fd, bp) + int fd; + BUFFERED_STREAM *bp; +{ + BUFFERED_STREAM *ret; + + ret = buffers[fd]; + buffers[fd] = bp; + return ret; +} + +/* Read a buffer full of characters from BP, a buffered stream. */ +static int +b_fill_buffer (bp) + BUFFERED_STREAM *bp; +{ + ssize_t nr; + off_t o; + + CHECK_TERMSIG; + /* In an environment where text and binary files are treated differently, + compensate for lseek() on text files returning an offset different from + the count of characters read() returns. Text-mode streams have to be + treated as unbuffered. */ + if ((bp->b_flag & (B_TEXT | B_UNBUFF)) == B_TEXT) + { + o = lseek (bp->b_fd, 0, SEEK_CUR); + nr = zread (bp->b_fd, bp->b_buffer, bp->b_size); + if (nr > 0 && nr < lseek (bp->b_fd, 0, SEEK_CUR) - o) + { + lseek (bp->b_fd, o, SEEK_SET); + bp->b_flag |= B_UNBUFF; + bp->b_size = 1; + nr = zread (bp->b_fd, bp->b_buffer, bp->b_size); + } + } + else + nr = zread (bp->b_fd, bp->b_buffer, bp->b_size); + if (nr <= 0) + { + bp->b_used = bp->b_inputp = 0; + bp->b_buffer[0] = 0; + if (nr == 0) + bp->b_flag |= B_EOF; + else + bp->b_flag |= B_ERROR; + return (EOF); + } + + bp->b_used = nr; + bp->b_inputp = 0; + return (bp->b_buffer[bp->b_inputp++] & 0xFF); +} + +/* Get a character from buffered stream BP. */ +#define bufstream_getc(bp) \ + (bp->b_inputp == bp->b_used || !bp->b_used) \ + ? b_fill_buffer (bp) \ + : bp->b_buffer[bp->b_inputp++] & 0xFF + +/* Push C back onto buffered stream BP. */ +static int +bufstream_ungetc(c, bp) + int c; + BUFFERED_STREAM *bp; +{ + if (c == EOF || bp == 0 || bp->b_inputp == 0) + return (EOF); + + bp->b_buffer[--bp->b_inputp] = c; + return (c); +} + +/* Seek backwards on file BFD to synchronize what we've read so far + with the underlying file pointer. */ +int +sync_buffered_stream (bfd) + int bfd; +{ + BUFFERED_STREAM *bp; + off_t chars_left; + + if (buffers == 0 || (bp = buffers[bfd]) == 0) + return (-1); + + chars_left = bp->b_used - bp->b_inputp; + if (chars_left) + lseek (bp->b_fd, -chars_left, SEEK_CUR); + bp->b_used = bp->b_inputp = 0; + return (0); +} + +int +buffered_getchar () +{ + CHECK_TERMSIG; + + if (bash_input.location.buffered_fd < 0 || buffers[bash_input.location.buffered_fd] == 0) + return EOF; + +#if !defined (DJGPP) + return (bufstream_getc (buffers[bash_input.location.buffered_fd])); +#else + /* On DJGPP, ignore \r. */ + int ch; + while ((ch = bufstream_getc (buffers[bash_input.location.buffered_fd])) == '\r') + ; + return ch; +#endif +} + +int +buffered_ungetchar (c) + int c; +{ + return (bufstream_ungetc (c, buffers[bash_input.location.buffered_fd])); +} + +/* Make input come from file descriptor BFD through a buffered stream. */ +void +with_input_from_buffered_stream (bfd, name) + int bfd; + char *name; +{ + INPUT_STREAM location; + BUFFERED_STREAM *bp; + + location.buffered_fd = bfd; + /* Make sure the buffered stream exists. */ + bp = fd_to_buffered_stream (bfd); + init_yy_io (bp == 0 ? return_EOF : buffered_getchar, + buffered_ungetchar, st_bstream, name, location); +} + +#if defined (TEST) +void * +xmalloc(s) +int s; +{ + return (malloc (s)); +} + +void * +xrealloc(s, size) +char *s; +int size; +{ + if (!s) + return(malloc (size)); + else + return(realloc (s, size)); +} + +void +init_yy_io () +{ +} + +process(bp) +BUFFERED_STREAM *bp; +{ + int c; + + while ((c = bufstream_getc(bp)) != EOF) + putchar(c); +} + +BASH_INPUT bash_input; + +struct stat dsb; /* can be used from gdb */ + +/* imitate /bin/cat */ +main(argc, argv) +int argc; +char **argv; +{ + register int i; + BUFFERED_STREAM *bp; + + if (argc == 1) { + bp = fd_to_buffered_stream (0); + process(bp); + exit(0); + } + for (i = 1; i < argc; i++) { + if (argv[i][0] == '-' && argv[i][1] == '\0') { + bp = fd_to_buffered_stream (0); + if (!bp) + continue; + process(bp); + free_buffered_stream (bp); + } else { + bp = open_buffered_stream (argv[i]); + if (!bp) + continue; + process(bp); + close_buffered_stream (bp); + } + } + exit(0); +} +#endif /* TEST */ +#endif /* BUFFERED_INPUT */ diff --git a/bash-5.1/input.h b/bash-5.1/input.h new file mode 100644 index 0000000..cb3eee4 --- /dev/null +++ b/bash-5.1/input.h @@ -0,0 +1,135 @@ +/* input.h -- Structures and unions used for reading input. */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_INPUT_H_) +#define _INPUT_H_ + +#include "stdc.h" + +/* Function pointers can be declared as (Function *)foo. */ +#if !defined (_FUNCTION_DEF) +# define _FUNCTION_DEF +typedef int Function (); +typedef void VFunction (); +typedef char *CPFunction (); /* no longer used */ +typedef char **CPPFunction (); /* no longer used */ +#endif /* _FUNCTION_DEF */ + +typedef int sh_cget_func_t PARAMS((void)); /* sh_ivoidfunc_t */ +typedef int sh_cunget_func_t PARAMS((int)); /* sh_intfunc_t */ + +enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream}; + +#if defined (BUFFERED_INPUT) + +/* Possible values for b_flag. */ +#undef B_EOF +#undef B_ERROR /* There are some systems with this define */ +#undef B_UNBUFF + +#define B_EOF 0x01 +#define B_ERROR 0x02 +#define B_UNBUFF 0x04 +#define B_WASBASHINPUT 0x08 +#define B_TEXT 0x10 +#define B_SHAREDBUF 0x20 /* shared input buffer */ + +/* A buffered stream. Like a FILE *, but with our own buffering and + synchronization. Look in input.c for the implementation. */ +typedef struct BSTREAM +{ + int b_fd; + char *b_buffer; /* The buffer that holds characters read. */ + size_t b_size; /* How big the buffer is. */ + size_t b_used; /* How much of the buffer we're using, */ + int b_flag; /* Flag values. */ + size_t b_inputp; /* The input pointer, index into b_buffer. */ +} BUFFERED_STREAM; + +#if 0 +extern BUFFERED_STREAM **buffers; +#endif + +extern int default_buffered_input; +extern int bash_input_fd_changed; + +#endif /* BUFFERED_INPUT */ + +typedef union { + FILE *file; + char *string; +#if defined (BUFFERED_INPUT) + int buffered_fd; +#endif +} INPUT_STREAM; + +typedef struct { + enum stream_type type; + char *name; + INPUT_STREAM location; + sh_cget_func_t *getter; + sh_cunget_func_t *ungetter; +} BASH_INPUT; + +extern BASH_INPUT bash_input; + +/* Functions from parse.y whose use directly or indirectly depends on the + definitions in this file. */ +extern void initialize_bash_input PARAMS((void)); +extern void init_yy_io PARAMS((sh_cget_func_t *, sh_cunget_func_t *, enum stream_type, const char *, INPUT_STREAM)); +extern char *yy_input_name PARAMS((void)); +extern void with_input_from_stdin PARAMS((void)); +extern void with_input_from_string PARAMS((char *, const char *)); +extern void with_input_from_stream PARAMS((FILE *, const char *)); +extern void push_stream PARAMS((int)); +extern void pop_stream PARAMS((void)); +extern int stream_on_stack PARAMS((enum stream_type)); +extern char *read_secondary_line PARAMS((int)); +extern int find_reserved_word PARAMS((char *)); +extern void gather_here_documents PARAMS((void)); +extern void execute_variable_command PARAMS((char *, char *)); + +extern int *save_token_state PARAMS((void)); +extern void restore_token_state PARAMS((int *)); + +/* Functions from input.c */ +extern int getc_with_restart PARAMS((FILE *)); +extern int ungetc_with_restart PARAMS((int, FILE *)); + +#if defined (BUFFERED_INPUT) +/* Functions from input.c. */ +extern int fd_is_bash_input PARAMS((int)); +extern int set_bash_input_fd PARAMS((int)); +extern int save_bash_input PARAMS((int, int)); +extern int check_bash_input PARAMS((int)); +extern int duplicate_buffered_stream PARAMS((int, int)); +extern BUFFERED_STREAM *fd_to_buffered_stream PARAMS((int)); +extern BUFFERED_STREAM *set_buffered_stream PARAMS((int, BUFFERED_STREAM *)); +extern BUFFERED_STREAM *open_buffered_stream PARAMS((char *)); +extern void free_buffered_stream PARAMS((BUFFERED_STREAM *)); +extern int close_buffered_stream PARAMS((BUFFERED_STREAM *)); +extern int close_buffered_fd PARAMS((int)); +extern int sync_buffered_stream PARAMS((int)); +extern int buffered_getchar PARAMS((void)); +extern int buffered_ungetchar PARAMS((int)); +extern void with_input_from_buffered_stream PARAMS((int, char *)); +#endif /* BUFFERED_INPUT */ + +#endif /* _INPUT_H_ */ diff --git a/bash-5.1/jobs.c b/bash-5.1/jobs.c new file mode 100644 index 0000000..a581f30 --- /dev/null +++ b/bash-5.1/jobs.c @@ -0,0 +1,5136 @@ +/* jobs.c - functions that make children, remember them, and handle their termination. */ + +/* This file works with both POSIX and BSD systems. It implements job + control. */ + +/* Copyright (C) 1989-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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 +#if defined (HAVE_SYS_PARAM_H) +#include +#endif + +#if defined (BUFFERED_INPUT) +# include "input.h" +#endif + +/* Need to include this up here for *_TTY_DRIVER definitions. */ +#include "shtty.h" + +/* Define this if your output is getting swallowed. It's a no-op on + machines with the termio or termios tty drivers. */ +/* #define DRAIN_OUTPUT */ + +/* For the TIOCGPGRP and TIOCSPGRP ioctl parameters on HP-UX */ +#if defined (hpux) && !defined (TERMIOS_TTY_DRIVER) +# include +#endif /* hpux && !TERMIOS_TTY_DRIVER */ + +#include "bashansi.h" +#include "bashintl.h" +#include "shell.h" +#include "parser.h" +#include "jobs.h" +#include "execute_cmd.h" +#include "flags.h" + +#include "typemax.h" + +#include "builtins/builtext.h" +#include "builtins/common.h" + +#if defined (READLINE) +# include +#endif + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#if !defined (HAVE_KILLPG) +extern int killpg PARAMS((pid_t, int)); +#endif + +#if !DEFAULT_CHILD_MAX +# define DEFAULT_CHILD_MAX 4096 +#endif + +#if !MAX_CHILD_MAX +# define MAX_CHILD_MAX 32768 +#endif + +#if !defined (DEBUG) +#define MAX_JOBS_IN_ARRAY 4096 /* production */ +#else +#define MAX_JOBS_IN_ARRAY 128 /* testing */ +#endif + +/* XXX for now */ +#define PIDSTAT_TABLE_SZ 4096 +#define BGPIDS_TABLE_SZ 512 + +/* 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 PARAMS((JOB *, int, int, int)); + +/* Variables used here but defined in other files. */ +extern WORD_LIST *subst_assign_varlist; + +extern SigHandler **original_signals; + +extern void set_original_signal PARAMS((int, SigHandler *)); + +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 }; + +ps_index_t pidstat_table[PIDSTAT_TABLE_SZ]; +struct bgpids bgpids = { 0, 0, 0, 0 }; + +struct procchain procsubs = { 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 + +/* Last child made by the shell. */ +volatile pid_t last_made_pid = NO_PID; + +/* Pid of the last asynchronous child. */ +volatile pid_t last_asynchronous_pid = NO_PID; + +/* The pipeline currently being built. */ +PROCESS *the_pipeline = (PROCESS *)NULL; + +/* If this is non-zero, do job control. */ +int job_control = 1; + +/* Are we running in background? (terminal_pgrp != shell_pgrp) */ +int running_in_background = 0; + +/* Call this when you start making children. */ +int already_making_children = 0; + +/* If this is non-zero, $LINES and $COLUMNS are reset after every process + exits from get_tty_state(). */ +int check_window_size = CHECKWINSIZE_DEFAULT; + +PROCESS *last_procsub_child = (PROCESS *)NULL; + +/* Functions local to this file. */ + +void debug_print_pgrps (void); + +static sighandler wait_sigint_handler PARAMS((int)); +static sighandler sigchld_handler PARAMS((int)); +static sighandler sigcont_sighandler PARAMS((int)); +static sighandler sigstop_sighandler PARAMS((int)); + +static int waitchld PARAMS((pid_t, int)); + +static PROCESS *find_pid_in_pipeline PARAMS((pid_t, PROCESS *, int)); +static PROCESS *find_pipeline PARAMS((pid_t, int, int *)); +static PROCESS *find_process PARAMS((pid_t, int, int *)); + +static char *current_working_directory PARAMS((void)); +static char *job_working_directory PARAMS((void)); +static char *j_strsignal PARAMS((int)); +static char *printable_job_status PARAMS((int, PROCESS *, int)); + +static PROCESS *find_last_proc PARAMS((int, int)); +static pid_t find_last_pid PARAMS((int, int)); + +static int set_new_line_discipline PARAMS((int)); +static int map_over_jobs PARAMS((sh_job_map_func_t *, int, int)); +static int job_last_stopped PARAMS((int)); +static int job_last_running PARAMS((int)); +static int most_recent_job_in_state PARAMS((int, JOB_STATE)); +static int find_job PARAMS((pid_t, int, PROCESS **)); +static int print_job PARAMS((JOB *, int, int, int)); +static int process_exit_status PARAMS((WAIT)); +static int process_exit_signal PARAMS((WAIT)); +static int set_job_status_and_cleanup PARAMS((int)); + +static WAIT job_signal_status PARAMS((int)); +static WAIT raw_job_exit_status PARAMS((int)); + +static void notify_of_job_status PARAMS((void)); +static void reset_job_indices PARAMS((void)); +static void cleanup_dead_jobs PARAMS((void)); +static int processes_in_job PARAMS((int)); +static void realloc_jobs_list PARAMS((void)); +static int compact_jobs_list PARAMS((int)); +static void add_process PARAMS((char *, pid_t)); +static void print_pipeline PARAMS((PROCESS *, int, int, FILE *)); +static void pretty_print_job PARAMS((int, int, FILE *)); +static void set_current_job PARAMS((int)); +static void reset_current PARAMS((void)); +static void set_job_running PARAMS((int)); +static void setjstatus PARAMS((int)); +static int maybe_give_terminal_to PARAMS((pid_t, pid_t, int)); +static void mark_all_jobs_as_dead PARAMS((void)); +static void mark_dead_jobs_as_notified PARAMS((int)); +static void restore_sigint_handler PARAMS((void)); +#if defined (PGRP_PIPE) +static void pipe_read PARAMS((int *)); +#endif + +/* Hash table manipulation */ + +static ps_index_t *pshash_getbucket PARAMS((pid_t)); +static void pshash_delindex PARAMS((ps_index_t)); + +/* Saved background process status management */ +static struct pidstat *bgp_add PARAMS((pid_t, int)); +static int bgp_delete PARAMS((pid_t)); +static void bgp_clear PARAMS((void)); +static int bgp_search PARAMS((pid_t)); + +static struct pipeline_saver *alloc_pipeline_saver PARAMS((void)); + +static ps_index_t bgp_getindex PARAMS((void)); +static void bgp_resize PARAMS((void)); /* XXX */ + +#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++ + +/* We set queue_sigchld around the call to waitchld to protect data structures + from a SIGCHLD arriving while waitchld is executing. */ +#define UNQUEUE_SIGCHLD(os) \ + do { \ + queue_sigchld--; \ + if (queue_sigchld == 0 && os != sigchld) \ + { \ + queue_sigchld = 1; \ + waitchld (-1, 0); \ + queue_sigchld = 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 struct pipeline_saver *saved_pipeline; +static int saved_already_making_children; + +/* Set this to non-zero whenever you don't want the jobs list to change at + all: no jobs deleted and no status change notifications. This is used, + for example, when executing SIGCHLD traps, which may run arbitrary + commands. */ +static int jobs_list_frozen; + +static char retcode_name_buffer[64]; + +#if !defined (_POSIX_VERSION) + +/* These are definitions to map POSIX 1003.1 functions onto existing BSD + library functions and system calls. */ +#define setpgid(pid, pgrp) setpgrp (pid, pgrp) +#define tcsetpgrp(fd, pgrp) ioctl ((fd), TIOCSPGRP, &(pgrp)) + +pid_t +tcgetpgrp (fd) + int fd; +{ + pid_t pgrp; + + /* ioctl will handle setting errno correctly. */ + if (ioctl (fd, TIOCGPGRP, &pgrp) < 0) + return (-1); + return (pgrp); +} + +#endif /* !_POSIX_VERSION */ + +/* Initialize the global job stats structure and other bookkeeping variables */ +void +init_job_stats () +{ + js = zerojs; +} + +/* Return the working directory for the current process. Unlike + job_working_directory, this does not call malloc (), nor do any + of the functions it calls. This is so that it can safely be called + from a signal handler. */ +static char * +current_working_directory () +{ + char *dir; + static char d[PATH_MAX]; + + dir = get_string_value ("PWD"); + + if (dir == 0 && the_current_working_directory && no_symbolic_links) + dir = the_current_working_directory; + + if (dir == 0) + { + dir = getcwd (d, sizeof(d)); + if (dir) + dir = d; + } + + return (dir == 0) ? "" : 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); +} + +/* Not used right now */ +void +discard_last_procsub_child () +{ + PROCESS *disposer; + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + disposer = last_procsub_child; + last_procsub_child = (PROCESS *)NULL; + UNBLOCK_CHILD (oset); + + if (disposer) + discard_pipeline (disposer); +} + +static struct pipeline_saver * +alloc_pipeline_saver () +{ + struct pipeline_saver *ret; + + ret = (struct pipeline_saver *)xmalloc (sizeof (struct pipeline_saver)); + ret->pipeline = 0; + ret->next = 0; + return ret; +} + +void +save_pipeline (clear) + int clear; +{ + sigset_t set, oset; + struct pipeline_saver *saver; + + BLOCK_CHILD (set, oset); + saver = alloc_pipeline_saver (); + saver->pipeline = the_pipeline; + saver->next = saved_pipeline; + saved_pipeline = saver; + if (clear) + the_pipeline = (PROCESS *)NULL; + saved_already_making_children = already_making_children; + UNBLOCK_CHILD (oset); +} + +PROCESS * +restore_pipeline (discard) + int discard; +{ + PROCESS *old_pipeline; + sigset_t set, oset; + struct pipeline_saver *saver; + + BLOCK_CHILD (set, oset); + old_pipeline = the_pipeline; + the_pipeline = saved_pipeline->pipeline; + saver = saved_pipeline; + saved_pipeline = saved_pipeline->next; + free (saver); + already_making_children = saved_already_making_children; + UNBLOCK_CHILD (oset); + + if (discard && old_pipeline) + { + discard_pipeline (old_pipeline); + return ((PROCESS *)NULL); + } + return old_pipeline; +} + +/* Start building a pipeline. */ +void +start_pipeline () +{ + if (the_pipeline) + { + cleanup_the_pipeline (); + /* If job_control == 0, pipeline_pgrp will always be equal to shell_pgrp; + if job_control != 0, pipeline_pgrp == shell_pgrp for command and + process substitution, in which case we want it to be the same as + shell_pgrp for the lifetime of this shell instance. */ + if (pipeline_pgrp != shell_pgrp) + 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; + if (pipeline_pgrp != shell_pgrp) + pipeline_pgrp = 0; + + newjob->flags = 0; + if (pipefail_opt) + newjob->flags |= J_PIPEFAIL; + + /* 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@po.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 or if we're a (presumably non-interactive) shell running + * in the background. + * + */ + if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0 && running_in_background == 0) + maybe_give_terminal_to (shell_pgrp, newjob->pgrp, 0); + } + } + + stop_making_children (); + UNBLOCK_CHILD (oset); + return (newjob ? i : js.j_current); +} + +/* Functions to manage the list of exited background pids whose status has + been saved. + + pidstat_table: + + The current implementation is a hash table using a single (separate) arena + for storage that can be allocated and freed as a unit. The size of the hash + table is a multiple of PIDSTAT_TABLE_SZ (4096) and multiple PIDs that hash + to the same value are chained through the bucket_next and bucket_prev + pointers (basically coalesced hashing for collision resolution). + + bgpids.storage: + + All pid/status storage is done using the circular buffer bgpids.storage. + This must contain at least js.c_childmax entries. The circular buffer is + used to supply the ordered list Posix requires ("the last CHILD_MAX + processes"). To avoid searching the entire storage table for a given PID, + the hash table (pidstat_table) holds pointers into the storage arena and + uses a doubly-linked list of cells (bucket_next/bucket_prev, also pointers + into the arena) to implement collision resolution. */ + +/* The number of elements in bgpids.storage always has to be > js.c_childmax for + the circular buffer to work right. */ +static void +bgp_resize () +{ + ps_index_t nsize, nsize_cur, nsize_max; + ps_index_t psi; + + if (bgpids.nalloc == 0) + { + /* invalidate hash table when bgpids table is reallocated */ + for (psi = 0; psi < PIDSTAT_TABLE_SZ; psi++) + pidstat_table[psi] = NO_PIDSTAT; + nsize = BGPIDS_TABLE_SZ; /* should be power of 2 */ + bgpids.head = 0; + } + else + nsize = bgpids.nalloc; + + nsize_max = TYPE_MAXIMUM (ps_index_t); + nsize_cur = (ps_index_t)js.c_childmax; + if (nsize_cur < 0) /* overflow */ + nsize_cur = MAX_CHILD_MAX; + + while (nsize > 0 && nsize < nsize_cur) /* > 0 should catch overflow */ + nsize <<= 1; + if (nsize > nsize_max || nsize <= 0) /* overflow? */ + nsize = nsize_max; + if (nsize > MAX_CHILD_MAX) + nsize = nsize_max = MAX_CHILD_MAX; /* hard cap */ + + if (bgpids.nalloc < nsize_cur && bgpids.nalloc < nsize_max) + { + bgpids.storage = (struct pidstat *)xrealloc (bgpids.storage, nsize * sizeof (struct pidstat)); + + for (psi = bgpids.nalloc; psi < nsize; psi++) + bgpids.storage[psi].pid = NO_PID; + + bgpids.nalloc = nsize; + + } + else if (bgpids.head >= bgpids.nalloc) /* wrap around */ + bgpids.head = 0; +} + +static ps_index_t +bgp_getindex () +{ + if (bgpids.nalloc < (ps_index_t)js.c_childmax || bgpids.head >= bgpids.nalloc) + bgp_resize (); + + pshash_delindex (bgpids.head); /* XXX - clear before reusing */ + return bgpids.head++; +} + +static ps_index_t * +pshash_getbucket (pid) + pid_t pid; +{ + unsigned long hash; /* XXX - u_bits32_t */ + + hash = pid * 0x9e370001UL; + return (&pidstat_table[hash % PIDSTAT_TABLE_SZ]); +} + +static struct pidstat * +bgp_add (pid, status) + pid_t pid; + int status; +{ + ps_index_t *bucket, psi; + struct pidstat *ps; + + /* bucket == existing chain of pids hashing to same value + psi = where were going to put this pid/status */ + + bucket = pshash_getbucket (pid); /* index into pidstat_table */ + psi = bgp_getindex (); /* bgpids.head, index into storage */ + + /* XXX - what if psi == *bucket? */ + if (psi == *bucket) + { +#ifdef DEBUG + internal_warning ("hashed pid %d (pid %d) collides with bgpids.head, skipping", psi, pid); +#endif + bgpids.storage[psi].pid = NO_PID; /* make sure */ + psi = bgp_getindex (); /* skip to next one */ + } + + ps = &bgpids.storage[psi]; + + ps->pid = pid; + ps->status = status; + ps->bucket_next = *bucket; + ps->bucket_prev = NO_PIDSTAT; + + bgpids.npid++; + +#if 0 + if (bgpids.npid > js.c_childmax) + bgp_prune (); +#endif + + if (ps->bucket_next != NO_PIDSTAT) + bgpids.storage[ps->bucket_next].bucket_prev = psi; + + *bucket = psi; /* set chain head in hash table */ + + return ps; +} + +static void +pshash_delindex (psi) + ps_index_t psi; +{ + struct pidstat *ps; + ps_index_t *bucket; + + ps = &bgpids.storage[psi]; + if (ps->pid == NO_PID) + return; + + if (ps->bucket_next != NO_PIDSTAT) + bgpids.storage[ps->bucket_next].bucket_prev = ps->bucket_prev; + if (ps->bucket_prev != NO_PIDSTAT) + bgpids.storage[ps->bucket_prev].bucket_next = ps->bucket_next; + else + { + bucket = pshash_getbucket (ps->pid); + *bucket = ps->bucket_next; /* deleting chain head in hash table */ + } + + /* clear out this cell, in case it gets reused. */ + ps->pid = NO_PID; + ps->bucket_next = ps->bucket_prev = NO_PIDSTAT; +} + +static int +bgp_delete (pid) + pid_t pid; +{ + ps_index_t psi, orig_psi; + + if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) + return 0; + + /* Search chain using hash to find bucket in pidstat_table */ + for (orig_psi = psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) + { + if (bgpids.storage[psi].pid == pid) + break; + if (orig_psi == bgpids.storage[psi].bucket_next) /* catch reported bug */ + { + internal_warning (_("bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"), psi); + return 0; + } + } + + if (psi == NO_PIDSTAT) + return 0; /* not found */ + +#if defined (DEBUG) + itrace("bgp_delete: deleting %d", pid); +#endif + + pshash_delindex (psi); /* hash table management */ + + bgpids.npid--; + return 1; +} + +/* Clear out the list of saved statuses */ +static void +bgp_clear () +{ + if (bgpids.storage == 0 || bgpids.nalloc == 0) + return; + + free (bgpids.storage); + + bgpids.storage = 0; + bgpids.nalloc = 0; + bgpids.head = 0; + + bgpids.npid = 0; +} + +/* Search for PID in the list of saved background pids; return its status if + found. If not found, return -1. We hash to the right spot in pidstat_table + and follow the bucket chain to the end. */ +static int +bgp_search (pid) + pid_t pid; +{ + ps_index_t psi, orig_psi; + + if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) + return -1; + + /* Search chain using hash to find bucket in pidstat_table */ + for (orig_psi = psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) + { + if (bgpids.storage[psi].pid == pid) + return (bgpids.storage[psi].status); + if (orig_psi == bgpids.storage[psi].bucket_next) /* catch reported bug */ + { + internal_warning (_("bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"), psi); + return -1; + } + } + + return -1; +} + +#if 0 +static void +bgp_prune () +{ + return; +} +#endif + +/* External interface to bgp_add; takes care of blocking and unblocking + SIGCHLD. Not really used. */ +void +save_proc_status (pid, status) + pid_t pid; + int status; +{ + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + bgp_add (pid, status); + UNBLOCK_CHILD (oset); +} + +#if defined (PROCESS_SUBSTITUTION) +/* Functions to add and remove PROCESS * children from the list of running + asynchronous process substitutions. The list is currently a simple singly + linked list of PROCESS *, so it works with the set of callers that want + a child. subst.c:process_substitute adds to the list, the various wait* + functions manipulate child->running and child->status, and processes are + eventually removed from the list and added to the bgpids table. */ + +static void +procsub_free (p) + PROCESS *p; +{ + FREE (p->command); + free (p); +} + +PROCESS * +procsub_add (p) + PROCESS *p; +{ + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + if (procsubs.head == 0) + { + procsubs.head = procsubs.end = p; + procsubs.nproc = 0; + } + else + { + procsubs.end->next = p; + procsubs.end = p; + } + procsubs.nproc++; + UNBLOCK_CHILD (oset); + + return p; +} + +PROCESS * +procsub_search (pid) + pid_t pid; +{ + PROCESS *p; + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + for (p = procsubs.head; p; p = p->next) + if (p->pid == pid) + break; + UNBLOCK_CHILD (oset); + + return p; +} + +PROCESS * +procsub_delete (pid) + pid_t pid; +{ + PROCESS *p, *prev; + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + for (p = prev = procsubs.head; p; prev = p, p = p->next) + if (p->pid == pid) + { + prev->next = p->next; + break; + } + + if (p == 0) + { + UNBLOCK_CHILD (oset); + return p; + } + + if (p == procsubs.head) + procsubs.head = procsubs.head->next; + else if (p == procsubs.end) + procsubs.end = prev; + + procsubs.nproc--; + if (procsubs.nproc == 0) + procsubs.head = procsubs.end = 0; + else if (procsubs.nproc == 1) /* XXX */ + procsubs.end = procsubs.head; + + /* this can't be called anywhere in a signal handling path */ + bgp_add (p->pid, process_exit_status (p->status)); + UNBLOCK_CHILD (oset); + return (p); +} + +int +procsub_waitpid (pid) + pid_t pid; +{ + PROCESS *p; + int r; + + p = procsub_search (pid); + if (p == 0) + return -1; + if (p->running == PS_DONE) + return (p->status); + r = wait_for (p->pid, 0); + return (r); /* defer removing until later */ +} + +void +procsub_waitall () +{ + PROCESS *p; + int r; + + for (p = procsubs.head; p; p = p->next) + { + if (p->running == PS_DONE) + continue; + r = wait_for (p->pid, 0); + } +} + +void +procsub_clear () +{ + PROCESS *p, *ps; + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + + for (ps = procsubs.head; ps; ) + { + p = ps; + ps = ps->next; + procsub_free (p); + } + procsubs.head = procsubs.end = 0; + procsubs.nproc = 0; + UNBLOCK_CHILD (oset); +} + +/* Must be called with SIGCHLD blocked. */ +void +procsub_prune () +{ + PROCESS *ohead, *oend, *ps, *p; + int onproc; + + if (procsubs.nproc == 0) + return; + + ohead = procsubs.head; + oend = procsubs.end; + onproc = procsubs.nproc; + + procsubs.head = procsubs.end = 0; + procsubs.nproc = 0; + + for (p = ohead; p; ) + { + ps = p->next; + p->next = 0; + if (p->running == PS_DONE) + { + bgp_add (p->pid, process_exit_status (p->status)); + procsub_free (p); + } + else + procsub_add (p); + p = ps; + } +} +#endif + +/* 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; + PROCESS *discard; + + if (js.j_jobslots == 0 || jobs_list_frozen) + return; + + QUEUE_SIGCHLD(os); + + /* XXX could use js.j_firstj and js.j_lastj here */ + for (i = 0; i < js.j_jobslots; i++) + { +#if defined (DEBUG) + if (i < js.j_firstj && jobs[i]) + itrace("cleanup_dead_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + if (i > js.j_lastj && jobs[i]) + itrace("cleanup_dead_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); +#endif + + if (jobs[i] && DEADJOB (i) && IS_NOTIFIED (i)) + delete_job (i, 0); + } + +#if defined (PROCESS_SUBSTITUTION) + procsub_prune (); + last_procsub_child = (PROCESS *)NULL; +#endif + +#if defined (COPROCESS_SUPPORT) + coproc_reap (); +#endif + + UNQUEUE_SIGCHLD(os); +} + +static int +processes_in_job (job) + int job; +{ + int nproc; + register PROCESS *p; + + nproc = 0; + p = jobs[job]->pipe; + do + { + p = p->next; + nproc++; + } + while (p != jobs[job]->pipe); + + return nproc; +} + +static void +delete_old_job (pid) + pid_t pid; +{ + PROCESS *p; + int job; + + job = find_job (pid, 0, &p); + if (job != NO_JOB) + { +#ifdef DEBUG + itrace ("delete_old_job: found pid %d in job %d with state %d", pid, job, jobs[job]->state); +#endif + if (JOBSTATE (job) == JDEAD) + delete_job (job, DEL_NOBGPID); + else + { +#ifdef DEBUG + internal_warning (_("forked pid %d appears in running job %d"), pid, job+1); +#endif + if (p) + p->pid = 0; + } + } +} + +/* Reallocate and compress the jobs list. This returns with a jobs array + whose size is a multiple of JOB_SLOTS and can hold the current number of + jobs. Heuristics are used to minimize the number of new reallocs. */ +static void +realloc_jobs_list () +{ + sigset_t set, oset; + int nsize, i, j, ncur, nprev; + JOB **nlist; + + ncur = nprev = NO_JOB; + nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS); + nsize *= JOB_SLOTS; + i = js.j_njobs % JOB_SLOTS; + if (i == 0 || i > (JOB_SLOTS >> 1)) + nsize += JOB_SLOTS; + + BLOCK_CHILD (set, oset); + nlist = (js.j_jobslots == nsize) ? jobs : (JOB **) xmalloc (nsize * sizeof (JOB *)); + + js.c_reaped = js.j_ndead = 0; + for (i = j = 0; i < js.j_jobslots; i++) + if (jobs[i]) + { + if (i == js.j_current) + ncur = j; + if (i == js.j_previous) + nprev = j; + nlist[j++] = jobs[i]; + if (jobs[i]->state == JDEAD) + { + js.j_ndead++; + js.c_reaped += processes_in_job (i); + } + } + +#if 0 + itrace ("realloc_jobs_list: resize jobs list from %d to %d", js.j_jobslots, nsize); + itrace ("realloc_jobs_list: j_lastj changed from %d to %d", js.j_lastj, (j > 0) ? j - 1 : 0); + itrace ("realloc_jobs_list: j_njobs changed from %d to %d", js.j_njobs, j); + itrace ("realloc_jobs_list: js.j_ndead %d js.c_reaped %d", js.j_ndead, js.c_reaped); +#endif + + js.j_firstj = 0; + js.j_lastj = (j > 0) ? j - 1 : 0; + js.j_njobs = j; + js.j_jobslots = nsize; + + /* Zero out remaining slots in new jobs list */ + for ( ; j < nsize; j++) + nlist[j] = (JOB *)NULL; + + if (jobs != nlist) + { + free (jobs); + jobs = nlist; + } + + if (ncur != NO_JOB) + js.j_current = ncur; + if (nprev != NO_JOB) + js.j_previous = nprev; + + /* Need to reset these */ + if (js.j_current == NO_JOB || js.j_previous == NO_JOB || js.j_current > js.j_lastj || js.j_previous > js.j_lastj) + reset_current (); + +#if 0 + itrace ("realloc_jobs_list: reset js.j_current (%d) and js.j_previous (%d)", js.j_current, js.j_previous); +#endif + + UNBLOCK_CHILD (oset); +} + +/* Compact the jobs list by removing dead jobs. Assume that we have filled + the jobs array to some predefined maximum. Called when the shell is not + the foreground process (subshell_environment != 0). Returns the first + available slot in the compacted list. If that value is js.j_jobslots, then + the list needs to be reallocated. The jobs array may be in new memory if + this returns > 0 and < js.j_jobslots. FLAGS is reserved for future use. */ +static int +compact_jobs_list (flags) + int flags; +{ + if (js.j_jobslots == 0 || jobs_list_frozen) + return js.j_jobslots; + + reap_dead_jobs (); + realloc_jobs_list (); + +#if 0 + itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); +#endif + + return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); +} + +/* Delete the job at INDEX from the job list. Must be called + with SIGCHLD blocked. */ +void +delete_job (job_index, dflags) + int job_index, dflags; +{ + register JOB *temp; + PROCESS *proc; + int ndel; + + if (js.j_jobslots == 0 || jobs_list_frozen) + return; + + if ((dflags & DEL_WARNSTOPPED) && subshell_environment == 0 && STOPPED (job_index)) + internal_warning (_("deleting stopped job %d with process group %ld"), job_index+1, (long)jobs[job_index]->pgrp); + temp = jobs[job_index]; + if (temp == 0) + return; + + if ((dflags & DEL_NOBGPID) == 0 && (temp->flags & (J_ASYNC|J_FOREGROUND)) == J_ASYNC) + { + proc = find_last_proc (job_index, 0); + 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) + { + /* XXX - save_pipeline and restore_pipeline (e.g., for DEBUG trap) can + mess with this total. */ + js.c_reaped -= ndel; /* assumes proc hadn't been reaped earlier */ + 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. */ +int +discard_pipeline (chain) + register PROCESS *chain; +{ + register PROCESS *this, *next; + int n; + + this = chain; + n = 0; + do + { + next = this->next; + FREE (this->command); + free (this); + n++; + this = next; + } + while (this != chain); + + return n; +} + +/* Add this process to the chain being built in the_pipeline. + NAME is the command string that will be exec'ed later. + PID is the process id of the child. */ +static void +add_process (name, pid) + char *name; + pid_t pid; +{ + PROCESS *t, *p; + +#if defined (RECYCLES_PIDS) + int j; + p = find_process (pid, 0, &j); + if (p) + { +# ifdef DEBUG + if (j == NO_JOB) + internal_warning ("add_process: process %5ld (%s) in the_pipeline", (long)p->pid, p->command); +# endif + if (PALIVE (p)) + internal_warning (_("add_process: pid %5ld (%s) marked as still alive"), (long)p->pid, p->command); + p->running = PS_RECYCLED; /* mark as recycled */ + } +#endif + + t = (PROCESS *)xmalloc (sizeof (PROCESS)); + t->next = the_pipeline; + t->pid = pid; + WSTATUS (t->status) = 0; + t->running = PS_RUNNING; + t->command = name; + the_pipeline = t; + + if (t->next == 0) + t->next = t; + else + { + p = t->next; + while (p->next != t->next) + p = p->next; + p->next = t; + } +} + +/* Create a (dummy) PROCESS with NAME, PID, and STATUS, and make it the last + process in jobs[JID]->pipe. Used by the lastpipe code. */ +void +append_process (name, pid, status, jid) + char *name; + pid_t pid; + int status; + int jid; +{ + PROCESS *t, *p; + + t = (PROCESS *)xmalloc (sizeof (PROCESS)); + t->next = (PROCESS *)NULL; + t->pid = pid; + /* set process exit status using offset discovered by configure */ + t->status = (status & 0xff) << WEXITSTATUS_OFFSET; + t->running = PS_DONE; + t->command = name; + + js.c_reaped++; /* XXX */ + + for (p = jobs[jid]->pipe; p->next != jobs[jid]->pipe; p = p->next) + ; + p->next = t; + t->next = jobs[jid]->pipe; +} + +#if 0 +/* Take the last job and make it the first job. Must be called with + SIGCHLD blocked. */ +int +rotate_the_pipeline () +{ + PROCESS *p; + + if (the_pipeline->next == the_pipeline) + return; + for (p = the_pipeline; p->next != the_pipeline; p = p->next) + ; + the_pipeline = p; +} + +/* Reverse the order of the processes in the_pipeline. Must be called with + SIGCHLD blocked. */ +int +reverse_the_pipeline () +{ + PROCESS *p, *n; + + if (the_pipeline->next == the_pipeline) + return; + + for (p = the_pipeline; p->next != the_pipeline; p = p->next) + ; + p->next = (PROCESS *)NULL; + + n = REVERSE_LIST (the_pipeline, PROCESS *); + + the_pipeline = n; + for (p = the_pipeline; p->next; p = p->next) + ; + p->next = the_pipeline; +} +#endif + +/* Map FUNC over the list of jobs. If FUNC returns non-zero, + then it is time to stop mapping, and that is the return value + for map_over_jobs. FUNC is called with a JOB, arg1, arg2, + and INDEX. */ +static int +map_over_jobs (func, arg1, arg2) + sh_job_map_func_t *func; + int arg1, arg2; +{ + register int i; + int result; + sigset_t set, oset; + + if (js.j_jobslots == 0) + return 0; + + BLOCK_CHILD (set, oset); + + /* XXX could use js.j_firstj here */ + for (i = result = 0; i < js.j_jobslots; i++) + { +#if defined (DEBUG) + if (i < js.j_firstj && jobs[i]) + itrace("map_over_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + if (i > js.j_lastj && jobs[i]) + itrace("map_over_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); +#endif + if (jobs[i]) + { + result = (*func)(jobs[i], arg1, arg2, i); + if (result) + break; + } + } + + UNBLOCK_CHILD (oset); + + return (result); +} + +/* Cause all the jobs in the current pipeline to exit. */ +void +terminate_current_pipeline () +{ + if (pipeline_pgrp && pipeline_pgrp != shell_pgrp) + { + killpg (pipeline_pgrp, SIGTERM); + killpg (pipeline_pgrp, SIGCONT); + } +} + +/* Cause all stopped jobs to exit. */ +void +terminate_stopped_jobs () +{ + register int i; + + /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) + { + if (jobs[i] && STOPPED (i)) + { + killpg (jobs[i]->pgrp, SIGTERM); + killpg (jobs[i]->pgrp, SIGCONT); + } + } +} + +/* Cause all jobs, running or stopped, to receive a hangup signal. If + a job is marked J_NOHUP, don't send the SIGHUP. */ +void +hangup_all_jobs () +{ + register int i; + + /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) + { + if (jobs[i]) + { + if (jobs[i]->flags & J_NOHUP) + continue; + killpg (jobs[i]->pgrp, SIGHUP); + if (STOPPED (i)) + killpg (jobs[i]->pgrp, SIGCONT); + } + } +} + +void +kill_current_pipeline () +{ + stop_making_children (); + start_pipeline (); +} + +static PROCESS * +find_pid_in_pipeline (pid, pipeline, alive_only) + pid_t pid; + PROCESS *pipeline; + int alive_only; +{ + PROCESS *p; + + p = 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 != pipeline); + return ((PROCESS *)NULL); +} + +/* 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; + struct pipeline_saver *save; + + /* See if this process is in the pipeline that we are building. */ + p = (PROCESS *)NULL; + if (jobp) + *jobp = NO_JOB; + + if (the_pipeline && (p = find_pid_in_pipeline (pid, the_pipeline, alive_only))) + return (p); + + /* Is this process in a saved pipeline? */ + for (save = saved_pipeline; save; save = save->next) + if (save->pipeline && (p = find_pid_in_pipeline (pid, save->pipeline, alive_only))) + return (p); + +#if defined (PROCESS_SUBSTITUTION) + if (procsubs.nproc > 0 && (p = procsub_search (pid)) && ((alive_only == 0 && PRECYCLED(p) == 0) || PALIVE(p))) + return (p); +#endif + + 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, procp) + pid_t pid; + int block; + PROCESS **procp; +{ + int job; + sigset_t set, oset; + + if (block) + BLOCK_CHILD (set, oset); + + job = find_job (pid, 0, procp); + + 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; + snprintf (x, sizeof(retcode_name_buffer), _("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; + snprintf (temp, sizeof(retcode_name_buffer), _("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) + { + strncpy (temp, _("Done"), sizeof (retcode_name_buffer) - 1); + temp[sizeof (retcode_name_buffer) - 1] = '\0'; + } + else if (posixly_correct) + snprintf (temp, sizeof(retcode_name_buffer), _("Done(%d)"), es); + else + snprintf (temp, sizeof(retcode_name_buffer), _("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) + putc ('\r', stream); + 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); + cleanup_dead_jobs (); +} + +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, flags) + char *command; + int flags; +{ + int async_p, forksleep; + sigset_t set, oset, termset, chldset, oset_copy; + pid_t pid; + SigHandler *oterm; + + sigemptyset (&oset_copy); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &oset_copy); + sigaddset (&oset_copy, SIGTERM); + + /* Block SIGTERM here and unblock in child after fork resets the + set of pending signals. */ + sigemptyset (&set); + sigaddset (&set, SIGCHLD); + sigaddset (&set, SIGINT); + sigaddset (&set, SIGTERM); + + sigemptyset (&oset); + sigprocmask (SIG_BLOCK, &set, &oset); + + /* Blocked in the parent, child will receive it after unblocking SIGTERM */ + if (interactive_shell) + oterm = set_signal_handler (SIGTERM, SIG_DFL); + + making_children (); + + async_p = (flags & FORK_ASYNC); + forksleep = 1; + +#if defined (BUFFERED_INPUT) + /* If default_buffered_input is active, we are reading a script. If + the command is asynchronous, we have already duplicated /dev/null + as fd 0, but have not changed the buffered stream corresponding to + the old fd 0. We don't want to sync the stream in this case. */ + if (default_buffered_input != -1 && + (!async_p || default_buffered_input > 0)) + sync_buffered_stream (default_buffered_input); +#endif /* BUFFERED_INPUT */ + + /* Create the child, handle severe errors. Retry on EAGAIN. */ + while ((pid = fork ()) < 0 && errno == EAGAIN && forksleep < FORKSLEEP_MAX) + { + /* bash-4.2 */ + /* keep SIGTERM blocked until we reset the handler to SIG_IGN */ + sigprocmask (SIG_SETMASK, &oset_copy, (sigset_t *)NULL); + /* If we can't create any children, try to reap some dead ones. */ + waitchld (-1, 0); + + errno = EAGAIN; /* restore errno */ + sys_error ("fork: retry"); + + if (sleep (forksleep) != 0) + break; + forksleep <<= 1; + + if (interrupt_state) + break; + sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL); + } + + if (pid != 0) + if (interactive_shell) + set_signal_handler (SIGTERM, oterm); + + 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 (); + + set_exit_status (EX_NOEXEC); + throw_to_top_level (); /* Reset signals, etc. */ + } + + if (pid == 0) + { + /* In the child. Give this child the right process group, set the + signals to the default state for a new process. */ + pid_t mypid; + + /* If this ends up being changed to modify or use `command' in the + child process, go back and change callers who free `command' in + the child process when this returns. */ + 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 */ + + CLRINTERRUPT; /* XXX - children have their own interrupt state */ + + /* Restore top-level signal mask, including unblocking SIGTERM */ + restore_sigmask (); + + 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 ((flags & FORK_NOTERM) == 0 && async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&(SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0) && running_in_background == 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 */ + + /* Don't set last_asynchronous_pid in the child */ + +#if defined (RECYCLES_PIDS) + if (last_asynchronous_pid == mypid) + /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */ + last_asynchronous_pid = 1; +#endif + } + else + { + /* In the parent. Remember the pid of the child just created + as the proper pgrp if this is the first child. */ + + if (job_control) + { + if (pipeline_pgrp == 0) + { + pipeline_pgrp = pid; + /* Don't twiddle terminal pgrps in the parent! This is the bug, + not the good thing of twiddling them in the child! */ + /* give_terminal_to (pipeline_pgrp, 0); */ + } + /* This is done on the recommendation of the Rationale section of + the POSIX 1003.1 standard, where it discusses job control and + shells. It is done to avoid possible race conditions. (Ref. + 1003.1 Rationale, section B.4.3.3, page 236). */ + setpgid (pid, pipeline_pgrp); + } + else + { + if (pipeline_pgrp == 0) + pipeline_pgrp = shell_pgrp; + } + + /* Place all processes into the jobs array regardless of the + state of job_control. */ + add_process (command, pid); + + if (async_p) + last_asynchronous_pid = pid; +#if defined (RECYCLES_PIDS) + else if (last_asynchronous_pid == pid) + /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */ + last_asynchronous_pid = 1; +#endif + + /* Delete the saved status for any job containing this PID in case it's + been reused. */ + delete_old_job (pid); + + /* Perform the check for pid reuse unconditionally. Some systems reuse + PIDs before giving a process CHILD_MAX/_SC_CHILD_MAX unique ones. */ + bgp_delete (pid); /* new process, discard any saved status */ + + last_made_pid = pid; + + /* keep stats */ + js.c_totforked++; + js.c_living++; + + /* Unblock SIGTERM, SIGINT, and SIGCHLD unless creating a pipeline, in + which case SIGCHLD remains blocked until all commands in the pipeline + have been created (execute_cmd.c:execute_pipeline()). */ + 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); +} + +/* Reset the tty-generated job control signals to SIG_DFL unless that signal + was ignored at entry to the shell, in which case we need to set it to + SIG_IGN in the child. We can't rely on resetting traps, since the hard + ignored signals can't be trapped. */ +void +default_tty_job_signals () +{ + if (signal_is_trapped (SIGTSTP) == 0 && signal_is_hard_ignored (SIGTSTP)) + set_signal_handler (SIGTSTP, SIG_IGN); + else + set_signal_handler (SIGTSTP, SIG_DFL); + + if (signal_is_trapped (SIGTTIN) == 0 && signal_is_hard_ignored (SIGTTIN)) + set_signal_handler (SIGTTIN, SIG_IGN); + else + set_signal_handler (SIGTTIN, SIG_DFL); + + if (signal_is_trapped (SIGTTOU) == 0 && signal_is_hard_ignored (SIGTTOU)) + set_signal_handler (SIGTTOU, SIG_IGN); + else + set_signal_handler (SIGTTOU, SIG_DFL); +} + +/* Called once in a parent process. */ +void +get_original_tty_job_signals () +{ + static int fetched = 0; + + if (fetched == 0) + { + if (interactive_shell) + { + set_original_signal (SIGTSTP, SIG_DFL); + set_original_signal (SIGTTIN, SIG_DFL); + set_original_signal (SIGTTOU, SIG_DFL); + } + else + { + get_original_signal (SIGTSTP); + get_original_signal (SIGTTIN); + get_original_signal (SIGTTOU); + } + fetched = 1; + } +} + +/* 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. If FLAGS doesn't include JWAIT_PERROR, + we suppress the error message if PID isn't found. */ + +int +wait_for_single_pid (pid, flags) + pid_t pid; + int flags; +{ + register PROCESS *child; + sigset_t set, oset; + int r, job, alive; + + 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) + { + if (flags & JWAIT_PERROR) + internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid); + return (127); + } + + alive = 0; + do + { + r = wait_for (pid, 0); + if ((flags & JWAIT_FORCE) == 0) + break; + + BLOCK_CHILD (set, oset); + alive = PALIVE (child); + UNBLOCK_CHILD (oset); + } + while (alive); + + /* 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); + } + + /* Check for a trapped signal interrupting the wait builtin and jump out */ + CHECK_WAIT_INTR; + + return r; +} + +/* Wait for all of the background processes started by this shell to finish. */ +void +wait_for_background_pids (ps) + struct procstat *ps; +{ + register int i, r; + int any_stopped, check_async; + sigset_t set, oset; + pid_t pid; + + for (any_stopped = 0, check_async = 1;;) + { + 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] && STOPPED (i)) + { + builtin_warning ("job %d[%d] stopped", i+1, find_last_pid (i, 0)); + any_stopped = 1; + } + + 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, JWAIT_PERROR); + if (ps) + { + ps->pid = pid; + ps->status = (r < 0) ? 127 : r; + } + if (r == -1 && errno == ECHILD) + { + /* If we're mistaken about job state, compensate. */ + check_async = 0; + mark_all_jobs_as_dead (); + } + } + +#if defined (PROCESS_SUBSTITUTION) + procsub_waitall (); +#endif + + /* POSIX.2 says the shell can discard the statuses of all completed jobs if + `wait' is called with no arguments. */ + mark_dead_jobs_as_notified (1); + cleanup_dead_jobs (); + bgp_clear (); +} + +/* Make OLD_SIGINT_HANDLER the SIGINT signal handler. */ +#define INVALID_SIGNAL_HANDLER (SigHandler *)wait_for_background_pids +static SigHandler *old_sigint_handler = INVALID_SIGNAL_HANDLER; + +static int wait_sigint_received; +static int child_caught_sigint; + +int waiting_for_child; + +/* Clean up state after longjmp to wait_intr_buf */ +void +wait_sigint_cleanup () +{ + queue_sigchld = 0; + waiting_for_child = 0; +} + +static void +restore_sigint_handler () +{ + if (old_sigint_handler != INVALID_SIGNAL_HANDLER) + { + set_signal_handler (SIGINT, old_sigint_handler); + old_sigint_handler = INVALID_SIGNAL_HANDLER; + waiting_for_child = 0; + } +} + +/* Handle SIGINT while we are waiting for children in a script to exit. + The `wait' builtin should be interruptible, but all others should be + effectively ignored (i.e. not cause the shell to exit). */ +static sighandler +wait_sigint_handler (sig) + int sig; +{ + SigHandler *sigint_handler; + + if (this_shell_builtin && this_shell_builtin == wait_builtin) + { + set_exit_status (128+SIGINT); + restore_sigint_handler (); + /* If we got a SIGINT while in `wait', and SIGINT is trapped, do + what POSIX.2 says (see builtins/wait.def for more info). */ + if (this_shell_builtin && this_shell_builtin == wait_builtin && + signal_is_trapped (SIGINT) && + ((sigint_handler = trap_to_sighandler (SIGINT)) == trap_handler)) + { + trap_handler (SIGINT); /* set pending_traps[SIGINT] */ + wait_signal_received = SIGINT; + if (wait_intr_flag) + sh_longjmp (wait_intr_buf, 1); + else + /* Let CHECK_WAIT_INTR handle it in wait_for/waitchld */ + SIGRETURN (0); + } + else /* wait_builtin but signal not trapped, treat as interrupt */ + kill (getpid (), SIGINT); + } + + /* XXX - should this be interrupt_state? If it is, the shell will act + as if it got the SIGINT interrupt. */ + if (waiting_for_child) + wait_sigint_received = 1; + else + { + set_exit_status (128+SIGINT); + restore_sigint_handler (); + kill (getpid (), SIGINT); + } + + /* Otherwise effectively ignore the SIGINT and allow the running job to + be killed. */ + SIGRETURN (0); +} + +static int +process_exit_signal (status) + WAIT status; +{ + return (WIFSIGNALED (status) ? WTERMSIG (status) : 0); +} + +static int +process_exit_status (status) + WAIT status; +{ + if (WIFSIGNALED (status)) + return (128 + WTERMSIG (status)); + else if (WIFSTOPPED (status) == 0) + return (WEXITSTATUS (status)); + else + return (EXECUTION_SUCCESS); +} + +static WAIT +job_signal_status (job) + int job; +{ + register PROCESS *p; + WAIT s; + + p = jobs[job]->pipe; + do + { + s = p->status; + if (WIFSIGNALED(s) || WIFSTOPPED(s)) + break; + p = p->next; + } + while (p != jobs[job]->pipe); + + return s; +} + +/* Return the exit status of the last process in the pipeline for job JOB. + This is the exit status of the entire job. */ +static WAIT +raw_job_exit_status (job) + int job; +{ + register PROCESS *p; + int fail; + WAIT ret; + + if (jobs[job]->flags & J_PIPEFAIL) + { + fail = 0; + p = jobs[job]->pipe; + do + { + if (WSTATUS (p->status) != EXECUTION_SUCCESS) + fail = WSTATUS(p->status); + p = p->next; + } + while (p != jobs[job]->pipe); + WSTATUS (ret) = fail; + return ret; + } + + for (p = jobs[job]->pipe; p->next != jobs[job]->pipe; p = p->next) + ; + return (p->status); +} + +/* Return the exit status of job JOB. This is the exit status of the last + (rightmost) process in the job's pipeline, modified if the job was killed + by a signal or stopped. */ +int +job_exit_status (job) + int job; +{ + return (process_exit_status (raw_job_exit_status (job))); +} + +int +job_exit_signal (job) + int job; +{ + return (process_exit_signal (raw_job_exit_status (job))); +} + +#define FIND_CHILD(pid, child) \ + do \ + { \ + child = find_pipeline (pid, 0, (int *)NULL); \ + if (child == 0) \ + { \ + give_terminal_to (shell_pgrp, 0); \ + UNBLOCK_CHILD (oset); \ + internal_error (_("wait_for: No record of process %ld"), (long)pid); \ + restore_sigint_handler (); \ + return (termination_state = 127); \ + } \ + } \ + while (0) + +/* Wait for pid (one of our children) to terminate, then + return the termination state. Returns 127 if PID is not found in + the jobs table. Returns -1 if waitchld() returns -1, indicating + that there are no unwaited-for child processes. */ +int +wait_for (pid, flags) + pid_t pid; + int flags; +{ + int job, termination_state, r; + WAIT s; + register PROCESS *child; + sigset_t set, oset; + + /* In the case that this code is interrupted, and we longjmp () out of it, + we are relying on the code in throw_to_top_level () to restore the + top-level signal mask. */ + child = 0; + BLOCK_CHILD (set, oset); + + /* Ignore interrupts while waiting for a job run without job control + to finish. We don't want the shell to exit if an interrupt is + received, only if one of the jobs run is killed via SIGINT. If + job control is not set, the job will be run in the same pgrp as + the shell, and the shell will see any signals the job gets. In + fact, we want this set every time the waiting shell and the waited- + for process are in the same process group, including command + substitution. */ + + /* This is possibly a race condition -- should it go in stop_pipeline? */ + wait_sigint_received = child_caught_sigint = 0; + if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB)) + { + SigHandler *temp_sigint_handler; + + temp_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); + if (temp_sigint_handler == wait_sigint_handler) + { +#if defined (DEBUG) + internal_warning ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap); +#endif + } + else + old_sigint_handler = temp_sigint_handler; + waiting_for_child = 0; + if (old_sigint_handler == SIG_IGN) + set_signal_handler (SIGINT, old_sigint_handler); + } + + termination_state = last_command_exit_value; + + if (interactive && job_control == 0) + QUIT; + /* Check for terminating signals and exit the shell if we receive one */ + CHECK_TERMSIG; + + /* Check for a trapped signal interrupting the wait builtin and jump out */ + CHECK_WAIT_INTR; + + /* If we say wait_for (), then we have a record of this child somewhere. + If it and none of its peers are running, don't call waitchld(). */ + + job = NO_JOB; + do + { + if (pid != ANY_PID) + FIND_CHILD (pid, child); + + /* If this child is part of a job, then we are really waiting for the + job to finish. Otherwise, we are waiting for the child to finish. + We check for JDEAD in case the job state has been set by waitchld + after receipt of a SIGCHLD. */ + if (job == NO_JOB && pid != ANY_PID) /* XXX -- && pid != ANY_PID ? */ + job = find_job (pid, 0, NULL); + + /* waitchld() takes care of setting the state of the job. If the job + has already exited before this is called, sigchld_handler will have + called waitchld and the state will be set to JDEAD. */ + + if (pid == ANY_PID || PRUNNING(child) || (job != NO_JOB && RUNNING (job))) + { + int old_waiting; + + queue_sigchld = 1; + old_waiting = waiting_for_child; + waiting_for_child = 1; + /* XXX - probably not strictly necessary but we want to catch + everything that happened before we switch the behavior of + trap_handler to longjmp on a trapped signal (waiting_for_child) */ + CHECK_WAIT_INTR; + r = waitchld (pid, 1); /* XXX */ + waiting_for_child = old_waiting; +#if 0 +itrace("wait_for: blocking wait for %d returns %d child = %p", (int)pid, r, child); +#endif + queue_sigchld = 0; + if (r == -1 && errno == ECHILD && this_shell_builtin == wait_builtin) + { + termination_state = -1; + /* XXX - restore sigint handler here */ + restore_sigint_handler (); + goto wait_for_return; + } + + /* If child is marked as running, but waitpid() returns -1/ECHILD, + there is something wrong. Somewhere, wait should have returned + that child's pid. Mark the child as not running and the job, + if it exists, as JDEAD. */ + if (r == -1 && errno == ECHILD) + { + if (child) + { + child->running = PS_DONE; + WSTATUS (child->status) = 0; /* XXX -- can't find true status */ + } + js.c_living = 0; /* no living child processes */ + if (job != NO_JOB) + { + jobs[job]->state = JDEAD; + js.c_reaped++; + js.j_ndead++; + } + if (pid == ANY_PID) + { + termination_state = -1; + break; + } + } + } + + /* If the shell is interactive, and job control is disabled, see + if the foreground process has died due to SIGINT and jump out + of the wait loop if it has. waitchld has already restored the + old SIGINT signal handler. */ + if (interactive && job_control == 0) + QUIT; + /* Check for terminating signals and exit the shell if we receive one */ + CHECK_TERMSIG; + + /* Check for a trapped signal interrupting the wait builtin and jump out */ + CHECK_WAIT_INTR; + + if (pid == ANY_PID) + { + /* XXX - could set child but we don't have a handle on what waitchld + reaps. Leave termination_state alone. */ + restore_sigint_handler (); + goto wait_for_return; + } + } + while (PRUNNING (child) || (job != NO_JOB && RUNNING (job))); + + /* Restore the original SIGINT signal handler before we return. */ + restore_sigint_handler (); + + /* The exit state of the command is either the termination state of the + child, or the termination state of the job. If a job, the status + of the last child in the pipeline is the significant one. If the command + or job was terminated by a signal, note that value also. */ + termination_state = (job != NO_JOB) ? job_exit_status (job) + : (child ? process_exit_status (child->status) : EXECUTION_SUCCESS); + last_command_exit_signal = (job != NO_JOB) ? job_exit_signal (job) + : (child ? process_exit_signal (child->status) : 0); + + /* XXX */ + if ((job != NO_JOB && JOBSTATE (job) == JSTOPPED) || (child && 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 + /* Don't modify terminal pgrp if we are running in background or a + subshell. Make sure subst.c:command_substitute uses the same + conditions to determine whether or not it should undo this and + give the terminal to pipeline_pgrp. */ + + if ((flags & JWAIT_NOTERM) == 0 && running_in_background == 0 && + (subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0) + 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 +#if defined (READLINE) + /* We don't want to do this if we are running a process during + programmable completion. */ + if (RL_ISSTATE (RL_STATE_COMPLETING) == 0) +#endif + get_tty_state (); + + /* If job control is enabled, the job was started with job + control, the job was the foreground job, and it was killed + by SIGINT, then print a newline to compensate for the kernel + printing the ^C without a trailing newline. */ + if (job_control && IS_JOBCONTROL (job) && IS_FOREGROUND (job) && + WIFSIGNALED (s) && WTERMSIG (s) == SIGINT) + { + /* If SIGINT is not trapped and the shell is in a for, while, + or until loop, act as if the shell received SIGINT as + well, so the loop can be broken. This doesn't call the + SIGINT signal handler; maybe it should. */ + if (signal_is_trapped (SIGINT) == 0 && (loop_level || (shell_compatibility_level > 32 && executing_list))) + ADDINTERRUPT; + /* Call any SIGINT trap handler if the shell is running a loop, so + the loop can be broken. This seems more useful and matches the + behavior when the shell is running a builtin command in a loop + when it is interrupted. Change ADDINTERRUPT to + trap_handler (SIGINT) to run the trap without interrupting the + loop. */ + else if (signal_is_trapped (SIGINT) && loop_level) + ADDINTERRUPT; + /* If an interactive shell with job control enabled is sourcing + a file, allow the interrupt to terminate the file sourcing. */ + else if (interactive_shell && signal_is_trapped (SIGINT) == 0 && sourcelevel) + ADDINTERRUPT; + else + { + putchar ('\n'); + fflush (stdout); + } + } + } + else if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PIPE)) && wait_sigint_received) + { + /* If waiting for a job in a subshell started to do command + substitution or to run a pipeline element that consists of + something like a while loop or a for loop, simulate getting + and being killed by the SIGINT to pass the status back to our + parent. */ + if (child_caught_sigint == 0 && signal_is_trapped (SIGINT) == 0) + { + UNBLOCK_CHILD (oset); + old_sigint_handler = set_signal_handler (SIGINT, SIG_DFL); + if (old_sigint_handler == SIG_IGN) + restore_sigint_handler (); + else + kill (getpid (), SIGINT); + } + } + else if (interactive_shell == 0 && subshell_environment == 0 && IS_FOREGROUND (job)) + { + s = job_signal_status (job); + + /* If we are non-interactive, but job control is enabled, and the job + died due to SIGINT, pretend we got the SIGINT */ + if (job_control && IS_JOBCONTROL (job) && WIFSIGNALED (s) && WTERMSIG (s) == SIGINT) + { + ADDINTERRUPT; /* For now */ + } + + if (check_window_size) + get_new_window_size (0, (int *)0, (int *)0); + } + + /* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD + signal handler path */ + if (DEADJOB (job) && IS_FOREGROUND (job) /*&& subshell_environment == 0*/) + setjstatus (job); + + /* If this job is dead, notify the user of the status. If the shell + is interactive, this will display a message on the terminal. If + the shell is not interactive, make sure we turn on the notify bit + so we don't get an unwanted message about the job's termination, + and so delete_job really clears the slot in the jobs table. */ + notify_and_cleanup (); + } + +wait_for_return: + + UNBLOCK_CHILD (oset); + + return (termination_state); +} + +/* Wait for the last process in the pipeline for JOB. Returns whatever + wait_for returns: the last process's termination state or -1 if there + are no unwaited-for child processes or an error occurs. If FLAGS + includes JWAIT_FORCE, we wait for the job to terminate, no just change + state */ +int +wait_for_job (job, flags, ps) + int job, flags; + struct procstat *ps; +{ + pid_t pid; + int r, state; + sigset_t set, oset; + + BLOCK_CHILD(set, oset); + state = JOBSTATE (job); + if (state == JSTOPPED) + internal_warning (_("wait_for_job: job %d is stopped"), job+1); + + pid = find_last_pid (job, 0); + UNBLOCK_CHILD(oset); + + do + { + r = wait_for (pid, 0); + if (r == -1 && errno == ECHILD) + mark_all_jobs_as_dead (); + + CHECK_WAIT_INTR; + + if ((flags & JWAIT_FORCE) == 0) + break; + + BLOCK_CHILD (set, oset); + state = (job != NO_JOB && jobs[job]) ? JOBSTATE (job) : JDEAD; + UNBLOCK_CHILD (oset); + } + while (state != JDEAD); + + /* 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); + + if (ps) + { + ps->pid = pid; + ps->status = (r < 0) ? 127 : r; + } + return r; +} + +/* Wait for any background job started by this shell to finish. Very + similar to wait_for_background_pids(). Returns the exit status of + the next exiting job, -1 if there are no background jobs. The caller + is responsible for translating -1 into the right return value. RPID, + if non-null, gets the pid of the job's process leader. */ +int +wait_for_any_job (flags, ps) + int flags; + struct procstat *ps; +{ + pid_t pid; + int i, r; + sigset_t set, oset; + + if (jobs_list_frozen) + return -1; + + /* First see if there are any unnotified dead jobs that we can report on */ + BLOCK_CHILD (set, oset); + for (i = 0; i < js.j_jobslots; i++) + { + if ((flags & JWAIT_WAITING) && jobs[i] && IS_WAITING (i) == 0) + continue; /* if we don't want it, skip it */ + if (jobs[i] && DEADJOB (i) && IS_NOTIFIED (i) == 0) + { +return_job: + r = job_exit_status (i); + pid = find_last_pid (i, 0); + if (ps) + { + ps->pid = pid; + ps->status = r; + } + notify_of_job_status (); /* XXX */ + delete_job (i, 0); +#if defined (COPROCESS_SUPPORT) + coproc_reap (); +#endif + UNBLOCK_CHILD (oset); + return r; + } + } + UNBLOCK_CHILD (oset); + + /* At this point, we have no dead jobs in the jobs table. Wait until we + get one, even if it takes multiple pids exiting. */ + for (;;) + { + /* Make sure there is a background job to wait for */ + BLOCK_CHILD (set, oset); + for (i = 0; i < js.j_jobslots; i++) + if (jobs[i] && RUNNING (i) && IS_FOREGROUND (i) == 0) + break; + if (i == js.j_jobslots) + { + UNBLOCK_CHILD (oset); + return -1; + } + + UNBLOCK_CHILD (oset); + + QUIT; + CHECK_TERMSIG; + CHECK_WAIT_INTR; + + errno = 0; + r = wait_for (ANY_PID, 0); /* special sentinel value for wait_for */ + if (r == -1 && errno == ECHILD) + mark_all_jobs_as_dead (); + + /* Now we see if we have any dead jobs and return the first one */ + BLOCK_CHILD (set, oset); + for (i = 0; i < js.j_jobslots; i++) + { + if ((flags & JWAIT_WAITING) && jobs[i] && IS_WAITING (i) == 0) + continue; /* if we don't want it, skip it */ + if (jobs[i] && DEADJOB (i)) + goto return_job; + } + UNBLOCK_CHILD (oset); + } + + return -1; +} + +/* Print info about dead jobs, and then delete them from the list + of known jobs. This does not actually delete jobs when the + shell is not interactive, because the dead jobs are not marked + as notified. */ +void +notify_and_cleanup () +{ + if (jobs_list_frozen) + return; + + if (interactive || interactive_shell == 0 || sourcelevel) + notify_of_job_status (); + + cleanup_dead_jobs (); +} + +/* Make dead jobs disappear from the jobs array without notification. + This is used when the shell is not interactive. */ +void +reap_dead_jobs () +{ + mark_dead_jobs_as_notified (0); + cleanup_dead_jobs (); +} + +/* Return the next closest (chronologically) job to JOB which is in + STATE. STATE can be JSTOPPED, JRUNNING. NO_JOB is returned if + there is no next recent job. */ +static int +most_recent_job_in_state (job, state) + int job; + JOB_STATE state; +{ + register int i, result; + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + + for (result = NO_JOB, i = job - 1; i >= 0; i--) + { + if (jobs[i] && (JOBSTATE (i) == state)) + { + result = i; + break; + } + } + + UNBLOCK_CHILD (oset); + + return (result); +} + +/* Return the newest *stopped* job older than JOB, or NO_JOB if not + found. */ +static int +job_last_stopped (job) + int job; +{ + return (most_recent_job_in_state (job, JSTOPPED)); +} + +/* Return the newest *running* job older than JOB, or NO_JOB if not + found. */ +static int +job_last_running (job) + int job; +{ + return (most_recent_job_in_state (job, JRUNNING)); +} + +/* Make JOB be the current job, and make previous be useful. Must be + called with SIGCHLD blocked. */ +static void +set_current_job (job) + int job; +{ + int candidate; + + if (js.j_current != job) + { + js.j_previous = js.j_current; + js.j_current = job; + } + + /* First choice for previous job is the old current job. */ + if (js.j_previous != js.j_current && + js.j_previous != NO_JOB && + jobs[js.j_previous] && + STOPPED (js.j_previous)) + return; + + /* Second choice: Newest stopped job that is older than + the current job. */ + candidate = NO_JOB; + if (STOPPED (js.j_current)) + { + candidate = job_last_stopped (js.j_current); + + if (candidate != NO_JOB) + { + js.j_previous = candidate; + return; + } + } + + /* If we get here, there is either only one stopped job, in which case it is + the current job and the previous job should be set to the newest running + job, or there are only running jobs and the previous job should be set to + the newest running job older than the current job. We decide on which + alternative to use based on whether or not JOBSTATE(js.j_current) is + JSTOPPED. */ + + candidate = RUNNING (js.j_current) ? job_last_running (js.j_current) + : job_last_running (js.j_jobslots); + + if (candidate != NO_JOB) + { + js.j_previous = candidate; + return; + } + + /* There is only a single job, and it is both `+' and `-'. */ + js.j_previous = js.j_current; +} + +/* Make current_job be something useful, if it isn't already. */ + +/* Here's the deal: The newest non-running job should be `+', and the + next-newest non-running job should be `-'. If there is only a single + stopped job, the js.j_previous is the newest non-running job. If there + are only running jobs, the newest running job is `+' and the + next-newest running job is `-'. Must be called with SIGCHLD blocked. */ + +static void +reset_current () +{ + int candidate; + + if (js.j_jobslots && js.j_current != NO_JOB && jobs[js.j_current] && STOPPED (js.j_current)) + candidate = js.j_current; + else + { + candidate = NO_JOB; + + /* First choice: the previous job. */ + if (js.j_previous != NO_JOB && jobs[js.j_previous] && STOPPED (js.j_previous)) + candidate = js.j_previous; + + /* Second choice: the most recently stopped job. */ + if (candidate == NO_JOB) + candidate = job_last_stopped (js.j_jobslots); + + /* Third choice: the newest running job. */ + if (candidate == NO_JOB) + candidate = job_last_running (js.j_jobslots); + } + + /* If we found a job to use, then use it. Otherwise, there + are no jobs period. */ + if (candidate != NO_JOB) + set_current_job (candidate); + else + js.j_current = js.j_previous = NO_JOB; +} + +/* Set up the job structures so we know the job and its processes are + all running. */ +static void +set_job_running (job) + int job; +{ + register PROCESS *p; + + /* Each member of the pipeline is now running. */ + p = jobs[job]->pipe; + + do + { + if (WIFSTOPPED (p->status)) + p->running = PS_RUNNING; /* XXX - could be PS_STOPPED */ + p = p->next; + } + while (p != jobs[job]->pipe); + + /* This means that the job is running. */ + JOBSTATE (job) = JRUNNING; +} + +/* Start a job. FOREGROUND if non-zero says to do that. Otherwise, + start the job in the background. JOB is a zero-based index into + JOBS. Returns -1 if it is unable to start a job, and the return + status of the job otherwise. */ +int +start_job (job, foreground) + int job, foreground; +{ + register PROCESS *p; + int already_running; + sigset_t set, oset; + char *wd, *s; + static TTYSTRUCT save_stty; + + BLOCK_CHILD (set, oset); + + if ((subshell_environment & SUBSHELL_COMSUB) && (pipeline_pgrp == shell_pgrp)) + { + internal_error (_("%s: no current jobs"), this_command_name); + UNBLOCK_CHILD (oset); + return (-1); + } + + 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, 0); + 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 ind; + + int call_set_current, last_stopped_job, job, children_exited, waitpid_flags; + static int wcontinued = WCONTINUED; /* run-time fix for glibc problem */ + + call_set_current = children_exited = 0; + last_stopped_job = NO_JOB; + + do + { + /* We don't want to be notified about jobs stopping if job control + is not active. XXX - was interactive_shell instead of job_control */ + waitpid_flags = (job_control && subshell_environment == 0) + ? (WUNTRACED|wcontinued) + : 0; + if (sigchld || block == 0) + waitpid_flags |= WNOHANG; + + /* Check for terminating signals and exit the shell if we receive one */ + CHECK_TERMSIG; + /* Check for a trapped signal interrupting the wait builtin and jump out */ + CHECK_WAIT_INTR; + + if (block == 1 && queue_sigchld == 0 && (waitpid_flags & WNOHANG) == 0) + { + internal_warning (_("waitchld: turning on WNOHANG to avoid indefinite block")); + waitpid_flags |= WNOHANG; + } + + pid = WAITPID (-1, &status, waitpid_flags); + +#if 0 +if (wpid != -1 && block) + itrace("waitchld: blocking waitpid returns %d", pid); +#endif +#if 0 +if (wpid != -1) + itrace("waitchld: %s waitpid returns %d", block?"blocking":"non-blocking", pid); +#endif + /* WCONTINUED may be rejected by waitpid as invalid even when defined */ + if (wcontinued && pid < 0 && errno == EINVAL) + { + wcontinued = 0; + continue; /* jump back to the test and retry without WCONTINUED */ + } + + /* The check for WNOHANG is to make sure we decrement sigchld only + if it was non-zero before we called waitpid. */ + if (sigchld > 0 && (waitpid_flags & WNOHANG)) + sigchld--; + + /* If waitpid returns -1 with errno == ECHILD, there are no more + unwaited-for child processes of this shell. */ + if (pid < 0 && errno == ECHILD) + { + if (children_exited == 0) + return -1; + else + break; + } + +#if 0 +itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, block, children_exited); +#endif + /* If waitpid returns 0, there are running children. If it returns -1, + the only other error POSIX says it can return is EINTR. */ + CHECK_TERMSIG; + CHECK_WAIT_INTR; + + /* If waitpid returns -1/EINTR and the shell saw a SIGINT, then we + assume the child has blocked or handled SIGINT. In that case, we + require the child to actually die due to SIGINT to act on the + SIGINT we received; otherwise we assume the child handled it and + let it go. */ + if (pid < 0 && errno == EINTR && wait_sigint_received) + child_caught_sigint = 1; + + if (pid <= 0) + continue; /* jumps right to the test */ + + /* Linux kernels appear to signal the parent but not interrupt the + waitpid() (or restart it even without SA_RESTART) on SIGINT, so if + we saw a SIGINT and the process exited or died due to some other + signal, assume the child caught the SIGINT. */ + if (wait_sigint_received && (WIFSIGNALED (status) == 0 || WTERMSIG (status) != SIGINT)) + child_caught_sigint = 1; + + /* If the child process did die due to SIGINT, forget our assumption + that it caught or otherwise handled it. */ + if (WIFSIGNALED (status) && WTERMSIG (status) == SIGINT) + child_caught_sigint = 0; + + /* children_exited is used to run traps on SIGCHLD. We don't want to + run the trap if a process is just being continued. */ + if (WIFCONTINUED(status) == 0) + { + children_exited++; + js.c_living--; + } + + /* Locate our PROCESS for this pid. */ + child = find_process (pid, 1, &job); /* want living procs only */ + +#if defined (COPROCESS_SUPPORT) + coproc_pidchk (pid, WSTATUS(status)); +#endif + +#if defined (PROCESS_SUBSTITUTION) + /* Only manipulate the list of process substitutions while SIGCHLD + is blocked. We only use this as a hint that we can remove FIFOs + or close file descriptors corresponding to terminated process + substitutions. */ + if ((ind = find_procsub_child (pid)) >= 0) + set_procsub_status (ind, pid, WSTATUS (status)); +#endif + + /* It is not an error to have a child terminate that we did + not have a record of. This child could have been part of + a pipeline in backquote substitution. Even so, I'm not + sure child is ever non-zero. */ + if (child == 0) + { + if (WIFEXITED (status) || WIFSIGNALED (status)) + js.c_reaped++; + continue; + } + + /* Remember status, and whether or not the process is running. */ + child->status = status; + child->running = WIFCONTINUED(status) ? PS_RUNNING : PS_DONE; + + if (PEXITED (child)) + { + js.c_totreaped++; + if (job != NO_JOB) + js.c_reaped++; + } + + if (job == NO_JOB) + continue; + + call_set_current += set_job_status_and_cleanup (job); + + if (STOPPED (job)) + last_stopped_job = job; + else if (DEADJOB (job) && last_stopped_job == job) + last_stopped_job = NO_JOB; + } + while ((sigchld || block == 0) && pid > (pid_t)0); + + /* If a job was running and became stopped, then set the current + job. Otherwise, don't change a thing. */ + if (call_set_current) + { + if (last_stopped_job != NO_JOB) + set_current_job (last_stopped_job); + else + reset_current (); + } + + /* Call a SIGCHLD trap handler for each child that exits, if one is set. */ + if (children_exited && + (signal_is_trapped (SIGCHLD) || trap_list[SIGCHLD] == (char *)IMPOSSIBLE_TRAP_HANDLER) && + trap_list[SIGCHLD] != (char *)IGNORE_SIG) + { + if (posixly_correct && this_shell_builtin && this_shell_builtin == wait_builtin) + { + /* This was trap_handler (SIGCHLD) but that can lose traps if + children_exited > 1 */ + queue_sigchld_trap (children_exited); + wait_signal_received = SIGCHLD; + /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up; + run_pending_traps will call run_sigchld_trap later */ + if (sigchld == 0 && wait_intr_flag) + sh_longjmp (wait_intr_buf, 1); + } + /* If not in posix mode and not executing the wait builtin, queue the + signal for later handling. Run the trap immediately if we are + executing the wait builtin, but don't break out of `wait'. */ + else if (sigchld) /* called from signal handler */ + queue_sigchld_trap (children_exited); + else if (signal_in_progress (SIGCHLD)) + queue_sigchld_trap (children_exited); + else if (trap_list[SIGCHLD] == (char *)IMPOSSIBLE_TRAP_HANDLER) + queue_sigchld_trap (children_exited); + else if (running_trap) + queue_sigchld_trap (children_exited); + else if (this_shell_builtin == wait_builtin) + run_sigchld_trap (children_exited); /* XXX */ + else + queue_sigchld_trap (children_exited); + } + + /* We have successfully recorded the useful information about this process + that has just changed state. If we notify asynchronously, and the job + that this process belongs to is no longer running, then notify the user + of that fact now. */ + if (asynchronous_notification && interactive && executing_builtin == 0) + notify_of_job_status (); + + return (children_exited); +} + +/* Set the status of JOB and perform any necessary cleanup if the job is + marked as JDEAD. + + Currently, the cleanup activity is restricted to handling any SIGINT + received while waiting for a foreground job to finish. */ +static int +set_job_status_and_cleanup (job) + int job; +{ + PROCESS *child; + int tstatus, job_state, any_stopped, any_tstped, call_set_current; + SigHandler *temp_handler; + + child = jobs[job]->pipe; + jobs[job]->flags &= ~J_NOTIFIED; + + call_set_current = 0; + + /* + * COMPUTE JOB STATUS + */ + + /* If all children are not running, but any of them is stopped, then + the job is stopped, not dead. */ + job_state = any_stopped = any_tstped = 0; + do + { + job_state |= PRUNNING (child); +#if 0 + if (PEXITED (child) && (WIFSTOPPED (child->status))) +#else + /* Only checking for WIFSTOPPED now, not for PS_DONE */ + if (PSTOPPED (child)) +#endif + { + any_stopped = 1; + any_tstped |= job_control && (WSTOPSIG (child->status) == SIGTSTP); + } + child = child->next; + } + while (child != jobs[job]->pipe); + + /* If job_state != 0, the job is still running, so don't bother with + setting the process exit status and job state unless we're + transitioning from stopped to running. */ + if (job_state != 0 && JOBSTATE(job) != JSTOPPED) + return 0; + + /* + * SET JOB STATUS + */ + + /* The job is either stopped or dead. Set the state of the job accordingly. */ + if (any_stopped) + { + jobs[job]->state = JSTOPPED; + jobs[job]->flags &= ~J_FOREGROUND; + call_set_current++; + /* Suspending a job with SIGTSTP breaks all active loops. */ + if (any_tstped && loop_level) + breaking = loop_level; + } + else if (job_state != 0) /* was stopped, now running */ + { + jobs[job]->state = JRUNNING; + call_set_current++; + } + else + { + jobs[job]->state = JDEAD; + js.j_ndead++; + +#if 0 + if (IS_FOREGROUND (job)) + setjstatus (job); +#endif + + /* If this job has a cleanup function associated with it, call it + with `cleanarg' as the single argument, then set the function + pointer to NULL so it is not inadvertently called twice. The + cleanup function is responsible for deallocating cleanarg. */ + if (jobs[job]->j_cleanup) + { + (*jobs[job]->j_cleanup) (jobs[job]->cleanarg); + jobs[job]->j_cleanup = (sh_vptrfunc_t *)NULL; + } + } + + /* + * CLEANUP + * + * Currently, we just do special things if we got a SIGINT while waiting + * for a foreground job to complete + */ + + if (JOBSTATE (job) == JDEAD) + { + /* If we're running a shell script and we get a SIGINT with a + SIGINT trap handler, but the foreground job handles it and + does not exit due to SIGINT, run the trap handler but do not + otherwise act as if we got the interrupt. */ + if (wait_sigint_received && interactive_shell == 0 && + child_caught_sigint && IS_FOREGROUND (job) && + signal_is_trapped (SIGINT)) + { + int old_frozen; + wait_sigint_received = 0; + last_command_exit_value = process_exit_status (child->status); + + old_frozen = jobs_list_frozen; + jobs_list_frozen = 1; + tstatus = maybe_call_trap_handler (SIGINT); + jobs_list_frozen = old_frozen; + } + + /* If the foreground job is killed by SIGINT when job control is not + active, we need to perform some special handling. + + The check of wait_sigint_received is a way to determine if the + SIGINT came from the keyboard (in which case the shell has already + seen it, and wait_sigint_received is non-zero, because keyboard + signals are sent to process groups) or via kill(2) to the foreground + process by another process (or itself). If the shell did receive the + SIGINT, it needs to perform normal SIGINT processing. XXX - should + this change its behavior depending on whether the last command in an + pipeline exited due to SIGINT, or any process in the pipeline? Right + now it does this if any process in the pipeline exits due to SIGINT. */ + else if (wait_sigint_received && + child_caught_sigint == 0 && + IS_FOREGROUND (job) && IS_JOBCONTROL (job) == 0) + { + int old_frozen; + + wait_sigint_received = 0; + + /* If SIGINT is trapped, set the exit status so that the trap + handler can see it. */ + if (signal_is_trapped (SIGINT)) + last_command_exit_value = process_exit_status (child->status); + + /* If the signal is trapped, let the trap handler get it no matter + what and simply return if the trap handler returns. + maybe_call_trap_handler() may cause dead jobs to be removed from + the job table because of a call to execute_command. We work + around this by setting JOBS_LIST_FROZEN. */ + old_frozen = jobs_list_frozen; + jobs_list_frozen = 1; + tstatus = maybe_call_trap_handler (SIGINT); + jobs_list_frozen = old_frozen; + if (tstatus == 0 && old_sigint_handler != INVALID_SIGNAL_HANDLER) + { + /* wait_sigint_handler () has already seen SIGINT and + allowed the wait builtin to jump out. We need to + call the original SIGINT handler, if necessary. If + the original handler is SIG_DFL, we need to resend + the signal to ourselves. */ + + temp_handler = old_sigint_handler; + + /* Bogus. If we've reset the signal handler as the result + of a trap caught on SIGINT, then old_sigint_handler + will point to trap_handler, which now knows nothing about + SIGINT (if we reset the sighandler to the default). + In this case, we have to fix things up. What a crock. */ + if (temp_handler == trap_handler && signal_is_trapped (SIGINT) == 0) + temp_handler = trap_to_sighandler (SIGINT); + restore_sigint_handler (); + if (temp_handler == SIG_DFL) + termsig_handler (SIGINT); /* XXX */ + else if (temp_handler != SIG_IGN) + (*temp_handler) (SIGINT); + } + } + } + + return call_set_current; +} + +/* Build the array of values for the $PIPESTATUS variable from the set of + exit statuses of all processes in the job J. */ +static void +setjstatus (j) + int j; +{ +#if defined (ARRAY_VARS) + register int i; + register PROCESS *p; + + for (i = 1, p = jobs[j]->pipe; p->next != jobs[j]->pipe; p = p->next, i++) + ; + i++; + if (statsize < i) + { + pstatuses = (int *)xrealloc (pstatuses, i * sizeof (int)); + statsize = i; + } + i = 0; + p = jobs[j]->pipe; + do + { + pstatuses[i++] = process_exit_status (p->status); + p = p->next; + } + while (p != jobs[j]->pipe); + + pstatuses[i] = -1; /* sentinel */ + set_pipestatus_array (pstatuses, i); +#endif +} + +void +run_sigchld_trap (nchild) + int nchild; +{ + char *trap_command; + int i; + + /* Turn off the trap list during the call to parse_and_execute () + to avoid potentially infinite recursive calls. Preserve the + values of last_command_exit_value, last_made_pid, and the_pipeline + around the execution of the trap commands. */ + trap_command = savestring (trap_list[SIGCHLD]); + + begin_unwind_frame ("SIGCHLD trap"); + unwind_protect_int (last_command_exit_value); + unwind_protect_int (last_command_exit_signal); + unwind_protect_var (last_made_pid); + unwind_protect_int (jobs_list_frozen); + unwind_protect_pointer (the_pipeline); + unwind_protect_pointer (subst_assign_varlist); + unwind_protect_pointer (this_shell_builtin); + unwind_protect_pointer (temporary_env); + + /* 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; + temporary_env = 0; /* traps should not run with temporary env */ + + running_trap = SIGCHLD + 1; + + set_impossible_sigchld_trap (); + jobs_list_frozen = 1; + for (i = 0; i < nchild; i++) + { + parse_and_execute (savestring (trap_command), "trap", SEVAL_NOHIST|SEVAL_RESETLINE); + } + + run_unwind_frame ("SIGCHLD trap"); + running_trap = 0; +} + +/* Function to call when you want to notify people of changes + in job status. This prints out all jobs which are pending + notification to stderr, and marks those printed as already + notified, thus making them candidates for cleanup. */ +static void +notify_of_job_status () +{ + register int job, termsig; + char *dir; + sigset_t set, oset; + WAIT s; + + if (jobs == 0 || js.j_jobslots == 0) + return; + + if (old_ttou != 0) + { + sigemptyset (&set); + sigaddset (&set, SIGCHLD); + sigaddset (&set, SIGTTOU); + sigemptyset (&oset); + sigprocmask (SIG_BLOCK, &set, &oset); + } + else + queue_sigchld++; + + /* XXX could use js.j_firstj here */ + for (job = 0, dir = (char *)NULL; job < js.j_jobslots; job++) + { + if (jobs[job] && IS_NOTIFIED (job) == 0) + { + s = raw_job_exit_status (job); + termsig = WTERMSIG (s); + + /* POSIX.2 says we have to hang onto the statuses of at most the + last CHILD_MAX background processes if the shell is running a + script. If the shell is running a script, either from a file + or standard input, don't print anything unless the job was + killed by a signal. */ + if (startup_state == 0 && WIFSIGNALED (s) == 0 && + ((DEADJOB (job) && IS_FOREGROUND (job) == 0) || STOPPED (job))) + continue; + + /* If 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. + Otherwise, if the shell is not interactive, POSIX says that `jobs' + is the only way to notify of job status. */ + if ((job_control == 0 && interactive_shell) || + (startup_state == 2 && (subshell_environment & SUBSHELL_COMSUB)) || + (startup_state == 2 && posixly_correct && (subshell_environment & SUBSHELL_COMSUB) == 0)) + { + /* POSIX.2 compatibility: if the shell is not interactive, + hang onto the job corresponding to the last asynchronous + pid until the user has been notified of its status or does + a `wait'. */ + if (DEADJOB (job) && (interactive_shell || (find_last_pid (job, 0) != last_asynchronous_pid))) + jobs[job]->flags |= J_NOTIFIED; + continue; + } + + /* Print info on jobs that are running in the background, + and on foreground jobs that were killed by anything + except SIGINT (and possibly SIGPIPE). */ + switch (JOBSTATE (job)) + { + case JDEAD: + if (interactive_shell == 0 && termsig && WIFSIGNALED (s) && + termsig != SIGINT && +#if defined (DONT_REPORT_SIGTERM) + termsig != SIGTERM && +#endif +#if defined (DONT_REPORT_SIGPIPE) + termsig != SIGPIPE && +#endif + signal_is_trapped (termsig) == 0) + { + /* Don't print `0' for a line number. */ + fprintf (stderr, _("%s: line %d: "), get_name_for_error (), (line_number == 0) ? 1 : line_number); + pretty_print_job (job, JLIST_NONINTERACTIVE, stderr); + } + else if (IS_FOREGROUND (job)) + { +#if !defined (DONT_REPORT_SIGPIPE) + if (termsig && WIFSIGNALED (s) && termsig != SIGINT) +#else + if (termsig && WIFSIGNALED (s) && termsig != SIGINT && termsig != SIGPIPE) +#endif + { + fprintf (stderr, "%s", j_strsignal (termsig)); + + if (WIFCORED (s)) + fprintf (stderr, _(" (core dumped)")); + + fprintf (stderr, "\n"); + } + } + else if (job_control) /* XXX job control test added */ + { + if (dir == 0) + dir = current_working_directory (); + pretty_print_job (job, JLIST_STANDARD, stderr); + if (dir && strcmp (dir, jobs[job]->wd) != 0) + fprintf (stderr, + _("(wd now: %s)\n"), polite_directory_format (dir)); + } + + jobs[job]->flags |= J_NOTIFIED; + break; + + case JSTOPPED: + fprintf (stderr, "\n"); + if (dir == 0) + dir = current_working_directory (); + pretty_print_job (job, JLIST_STANDARD, stderr); + if (dir && (strcmp (dir, jobs[job]->wd) != 0)) + fprintf (stderr, + _("(wd now: %s)\n"), polite_directory_format (dir)); + jobs[job]->flags |= J_NOTIFIED; + break; + + case JRUNNING: + case JMIXED: + break; + + default: + programming_error ("notify_of_job_status"); + } + } + } + if (old_ttou != 0) + sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); + else + queue_sigchld--; +} + +/* Initialize the job control mechanism, and set up the tty stuff. */ +int +initialize_job_control (force) + int force; +{ + pid_t t; + int t_errno, tty_sigs; + + t_errno = -1; + shell_pgrp = getpgid (0); + + if (shell_pgrp == -1) + { + sys_error (_("initialize_job_control: getpgrp failed")); + exit (1); + } + + /* We can only have job control if we are interactive unless we force it. */ + if (interactive == 0 && force == 0) + { + job_control = 0; + original_pgrp = NO_PID; + shell_tty = fileno (stderr); + terminal_pgrp = tcgetpgrp (shell_tty); /* for checking later */ + } + else + { + shell_tty = -1; + + /* If forced_interactive is set, we skip the normal check that stderr + is attached to a tty, so we need to check here. If it's not, we + need to see whether we have a controlling tty by opening /dev/tty, + since trying to use job control tty pgrp manipulations on a non-tty + is going to fail. */ + if (forced_interactive && isatty (fileno (stderr)) == 0) + shell_tty = open ("/dev/tty", O_RDWR|O_NONBLOCK); + + /* Get our controlling terminal. If job_control is set, or + interactive is set, then this is an interactive shell no + matter where fd 2 is directed. */ + if (shell_tty == -1) + shell_tty = dup (fileno (stderr)); /* fd 2 */ + + if (shell_tty != -1) + shell_tty = move_to_high_fd (shell_tty, 1, -1); + + /* Compensate for a bug in systems that compiled the BSD + rlogind with DEBUG defined, like NeXT and Alliant. */ + if (shell_pgrp == 0) + { + shell_pgrp = getpid (); + setpgid (0, shell_pgrp); + if (shell_tty != -1) + tcsetpgrp (shell_tty, shell_pgrp); + } + + tty_sigs = 0; + while ((terminal_pgrp = tcgetpgrp (shell_tty)) != -1) + { + if (shell_pgrp != terminal_pgrp) + { + SigHandler *ottin; + + CHECK_TERMSIG; + ottin = set_signal_handler (SIGTTIN, SIG_DFL); + kill (0, SIGTTIN); + set_signal_handler (SIGTTIN, ottin); + if (tty_sigs++ > 16) + { + sys_error (_("initialize_job_control: no job control in background")); + job_control = 0; + original_pgrp = terminal_pgrp; /* for eventual give_terminal_to */ + goto just_bail; + } + continue; + } + break; + } + + if (terminal_pgrp == -1) + t_errno = errno; + + /* Make sure that we are using the new line discipline. */ + if (set_new_line_discipline (shell_tty) < 0) + { + sys_error (_("initialize_job_control: line discipline")); + job_control = 0; + } + else + { + original_pgrp = shell_pgrp; + shell_pgrp = getpid (); + + if ((original_pgrp != shell_pgrp) && (setpgid (0, shell_pgrp) < 0)) + { + sys_error (_("initialize_job_control: setpgid")); + shell_pgrp = original_pgrp; + } + + job_control = 1; + + /* If (and only if) we just set our process group to our pid, + thereby becoming a process group leader, and the terminal + is not in the same process group as our (new) process group, + then set the terminal's process group to our (new) process + group. If that fails, set our process group back to what it + was originally (so we can still read from the terminal) and + turn off job control. */ + if (shell_pgrp != original_pgrp && shell_pgrp != terminal_pgrp) + { + if (give_terminal_to (shell_pgrp, 0) < 0) + { + t_errno = errno; + setpgid (0, original_pgrp); + shell_pgrp = original_pgrp; + errno = t_errno; + sys_error (_("cannot set terminal process group (%d)"), shell_pgrp); + job_control = 0; + } + } + + if (job_control && ((t = tcgetpgrp (shell_tty)) == -1 || t != shell_pgrp)) + { + if (t_errno != -1) + errno = t_errno; + sys_error (_("cannot set terminal process group (%d)"), t); + job_control = 0; + } + } + if (job_control == 0) + internal_error (_("no job control in this shell")); + } + +just_bail: + running_in_background = terminal_pgrp != shell_pgrp; + + 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 (); + + set_maxchild (0); + + 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 disposition unmodified for non-interactive shells without job + control. */ +} + +/* Here we handle CONT signals. */ +static sighandler +sigcont_sighandler (sig) + int sig; +{ + initialize_job_signals (); + set_signal_handler (SIGCONT, old_cont); + kill (getpid (), SIGCONT); + + SIGRETURN (0); +} + +/* Here we handle stop signals while we are running not as a login shell. */ +static sighandler +sigstop_sighandler (sig) + int sig; +{ + set_signal_handler (SIGTSTP, old_tstp); + set_signal_handler (SIGTTOU, old_ttou); + set_signal_handler (SIGTTIN, old_ttin); + + old_cont = set_signal_handler (SIGCONT, sigcont_sighandler); + + give_terminal_to (shell_pgrp, 0); + + kill (getpid (), sig); + + SIGRETURN (0); +} + +/* Give the terminal to PGRP. */ +int +give_terminal_to (pgrp, force) + pid_t pgrp; + int force; +{ + sigset_t set, oset; + int r, e; + + r = 0; + if (job_control || force) + { + sigemptyset (&set); + sigaddset (&set, SIGTTOU); + sigaddset (&set, SIGTTIN); + sigaddset (&set, SIGTSTP); + sigaddset (&set, SIGCHLD); + sigemptyset (&oset); + sigprocmask (SIG_BLOCK, &set, &oset); + + if (tcsetpgrp (shell_tty, pgrp) < 0) + { + /* Maybe we should print an error message? */ +#if 0 + sys_error ("tcsetpgrp(%d) failed: pid %ld to pgrp %ld", + shell_tty, (long)getpid(), (long)pgrp); +#endif + r = -1; + e = errno; + } + else + terminal_pgrp = pgrp; + sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); + } + + if (r == -1) + errno = e; + + return r; +} + +/* Give terminal to NPGRP iff it's currently owned by OPGRP. FLAGS are the + flags to pass to give_terminal_to(). */ +static int +maybe_give_terminal_to (opgrp, npgrp, flags) + pid_t opgrp, npgrp; + int flags; +{ + int tpgrp; + + tpgrp = tcgetpgrp (shell_tty); + if (tpgrp < 0 && errno == ENOTTY) + return -1; + if (tpgrp == npgrp) + { + terminal_pgrp = npgrp; + return 0; + } + else if (tpgrp != opgrp) + { +#if defined (DEBUG) + internal_warning ("%d: maybe_give_terminal_to: terminal pgrp == %d shell pgrp = %d new pgrp = %d in_background = %d", (int)getpid(), tpgrp, opgrp, npgrp, running_in_background); +#endif + return -1; + } + else + return (give_terminal_to (npgrp, flags)); +} + +/* Clear out any jobs in the job array. This is intended to be used by + children of the shell, who should not have any job structures as baggage + when they start executing (forking subshells for parenthesized execution + and functions with pipes are the two that spring to mind). If RUNNING_ONLY + is nonzero, only running jobs are removed from the table. */ +void +delete_all_jobs (running_only) + int running_only; +{ + register int i; + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + + /* XXX - need to set j_lastj, j_firstj appropriately if running_only != 0. */ + if (js.j_jobslots) + { + js.j_current = js.j_previous = NO_JOB; + + /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) + { +#if defined (DEBUG) + if (i < js.j_firstj && jobs[i]) + itrace("delete_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + if (i > js.j_lastj && jobs[i]) + itrace("delete_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); +#endif + if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i)))) + /* We don't want to add any of these pids to bgpids. If running_only + is non-zero, we don't want to add running jobs to the list. + If we are interested in all jobs, not just running jobs, and + we are going to clear the bgpids list below (bgp_clear()), we + don't need to bother. */ + delete_job (i, DEL_WARNSTOPPED|DEL_NOBGPID); + } + if (running_only == 0) + { + free ((char *)jobs); + js.j_jobslots = 0; + js.j_firstj = js.j_lastj = js.j_njobs = 0; + } + } + + if (running_only == 0) + bgp_clear (); + + UNBLOCK_CHILD (oset); +} + +/* Mark all jobs in the job array so that they don't get a SIGHUP when the + shell gets one. If RUNNING_ONLY is nonzero, mark only running jobs. */ +void +nohup_all_jobs (running_only) + int running_only; +{ + register int i; + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + + if (js.j_jobslots) + { + /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) + if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i)))) + nohup_job (i); + } + + UNBLOCK_CHILD (oset); +} + +int +count_all_jobs () +{ + int i, n; + sigset_t set, oset; + + /* This really counts all non-dead jobs. */ + BLOCK_CHILD (set, oset); + /* XXX could use js.j_firstj here */ + for (i = n = 0; i < js.j_jobslots; i++) + { +#if defined (DEBUG) + if (i < js.j_firstj && jobs[i]) + itrace("count_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + if (i > js.j_lastj && jobs[i]) + itrace("count_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); +#endif + if (jobs[i] && DEADJOB(i) == 0) + n++; + } + UNBLOCK_CHILD (oset); + return n; +} + +static void +mark_all_jobs_as_dead () +{ + register int i; + sigset_t set, oset; + + if (js.j_jobslots == 0) + return; + + BLOCK_CHILD (set, oset); + + /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) + if (jobs[i]) + { + jobs[i]->state = JDEAD; + js.j_ndead++; + } + + UNBLOCK_CHILD (oset); +} + +/* Mark all dead jobs as notified, so delete_job () cleans them out + of the job table properly. POSIX.2 says we need to save the + status of the last CHILD_MAX jobs, so we count the number of dead + jobs and mark only enough as notified to save CHILD_MAX statuses. */ +static void +mark_dead_jobs_as_notified (force) + int force; +{ + register int i, ndead, ndeadproc; + sigset_t set, oset; + + if (js.j_jobslots == 0) + return; + + BLOCK_CHILD (set, oset); + + /* If FORCE is non-zero, we don't have to keep CHILD_MAX statuses + around; just run through the array. */ + if (force) + { + /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) + { + if (jobs[i] && DEADJOB (i) && (interactive_shell || (find_last_pid (i, 0) != last_asynchronous_pid))) + jobs[i]->flags |= J_NOTIFIED; + } + UNBLOCK_CHILD (oset); + return; + } + + /* Mark enough dead jobs as notified to keep CHILD_MAX processes left in the + array with the corresponding not marked as notified. This is a better + way to avoid pid aliasing and reuse problems than keeping the POSIX- + mandated CHILD_MAX jobs around. delete_job() takes care of keeping the + bgpids list regulated. */ + + /* Count the number of dead jobs */ + /* XXX could use js.j_firstj here */ + for (i = ndead = ndeadproc = 0; i < js.j_jobslots; i++) + { +#if defined (DEBUG) + if (i < js.j_firstj && jobs[i]) + itrace("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + if (i > js.j_lastj && jobs[i]) + itrace("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); +#endif + if (jobs[i] && DEADJOB (i)) + { + ndead++; + ndeadproc += processes_in_job (i); + } + } + +#ifdef DEBUG +# if 0 + if (ndeadproc != js.c_reaped) + itrace("mark_dead_jobs_as_notified: ndeadproc (%d) != js.c_reaped (%d)", ndeadproc, js.c_reaped); +# endif + if (ndead != js.j_ndead) + itrace("mark_dead_jobs_as_notified: ndead (%d) != js.j_ndead (%d)", ndead, js.j_ndead); +#endif + + if (js.c_childmax < 0) + set_maxchild (0); + + /* Don't do anything if the number of dead processes is less than CHILD_MAX + and we're not forcing a cleanup. */ + if (ndeadproc <= js.c_childmax) + { + UNBLOCK_CHILD (oset); + return; + } + +#if 0 +itrace("mark_dead_jobs_as_notified: child_max = %d ndead = %d ndeadproc = %d", js.c_childmax, ndead, ndeadproc); +#endif + + /* Mark enough dead jobs as notified that we keep CHILD_MAX jobs in + the list. This isn't exactly right yet; changes need to be made + to stop_pipeline so we don't mark the newer jobs after we've + created CHILD_MAX slots in the jobs array. This needs to be + integrated with a way to keep the jobs array from growing without + bound. Maybe we wrap back around to 0 after we reach some max + limit, and there are sufficient job slots free (keep track of total + size of jobs array (js.j_jobslots) and running count of number of jobs + in jobs array. Then keep a job index corresponding to the `oldest job' + and start this loop there, wrapping around as necessary. In effect, + we turn the list into a circular buffer. */ + /* XXX could use js.j_firstj here */ + for (i = 0; i < js.j_jobslots; i++) + { + if (jobs[i] && DEADJOB (i) && (interactive_shell || (find_last_pid (i, 0) != last_asynchronous_pid))) + { +#if defined (DEBUG) + if (i < js.j_firstj && jobs[i]) + itrace("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj); + if (i > js.j_lastj && jobs[i]) + itrace("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); +#endif + /* If marking this job as notified would drop us down below + child_max, don't mark it so we can keep at least child_max + statuses. XXX -- need to check what Posix actually says + about keeping statuses. */ + if ((ndeadproc -= processes_in_job (i)) <= js.c_childmax) + break; + jobs[i]->flags |= J_NOTIFIED; + } + } + + UNBLOCK_CHILD (oset); +} + +/* Here to allow other parts of the shell (like the trap stuff) to + freeze and unfreeze the jobs list. */ +int +freeze_jobs_list () +{ + int o; + + o = jobs_list_frozen; + jobs_list_frozen = 1; + return o; +} + +void +unfreeze_jobs_list () +{ + jobs_list_frozen = 0; +} + +void +set_jobs_list_frozen (s) + int s; +{ + jobs_list_frozen = s; +} + +/* 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 (terminal_pgrp == NO_PID) + terminal_pgrp = tcgetpgrp (shell_tty); + + /* If we're turning on job control we're going to want to know the shell's + process group. */ + if (job_control != old && job_control) + shell_pgrp = getpgid (0); + + running_in_background = (terminal_pgrp != shell_pgrp); + +#if 0 + if (interactive_shell == 0 && running_in_background == 0 && job_control != old) + { + if (job_control) + initialize_job_signals (); + else + default_tty_job_signals (); + } +#endif + + /* 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 (job_control) + terminate_stopped_jobs (); + + if (original_pgrp >= 0 && terminal_pgrp != original_pgrp) + give_terminal_to (original_pgrp, 1); + + if (original_pgrp >= 0 && setpgid (0, original_pgrp) == 0) + shell_pgrp = 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 maximum number of background children we keep track of to NCHILD. + If the caller passes NCHILD as 0 or -1, this ends up setting it to + LMAXCHILD, which is initialized the first time through. */ +void +set_maxchild (nchild) + int nchild; +{ + static int lmaxchild = -1; + + /* Initialize once. */ + if (lmaxchild < 0) + { + errno = 0; + lmaxchild = getmaxchild (); + if (lmaxchild < 0 && errno == 0) + lmaxchild = MAX_CHILD_MAX; /* assume unlimited */ + } + if (lmaxchild < 0) + lmaxchild = DEFAULT_CHILD_MAX; + + /* Clamp value we set. Minimum is what Posix requires, maximum is defined + above as MAX_CHILD_MAX. */ + if (nchild < lmaxchild) + nchild = lmaxchild; + else if (nchild > MAX_CHILD_MAX) + nchild = MAX_CHILD_MAX; + + js.c_childmax = nchild; +} + +/* Set the handler to run when the shell receives a SIGCHLD signal. */ +void +set_sigchld_handler () +{ + set_signal_handler (SIGCHLD, sigchld_handler); +} + +#if defined (PGRP_PIPE) +/* Read from the read end of a pipe. This is how the process group leader + blocks until all of the processes in a pipeline have been made. */ +static void +pipe_read (pp) + int *pp; +{ + char ch; + + if (pp[1] >= 0) + { + close (pp[1]); + pp[1] = -1; + } + + if (pp[0] >= 0) + { + while (read (pp[0], &ch, 1) == -1 && errno == EINTR) + ; + } +} + +/* Functional interface closes our local-to-job-control pipes. */ +void +close_pgrp_pipe () +{ + sh_closepipe (pgrp_pipe); +} + +void +save_pgrp_pipe (p, clear) + int *p; + int clear; +{ + p[0] = pgrp_pipe[0]; + p[1] = pgrp_pipe[1]; + if (clear) + pgrp_pipe[0] = pgrp_pipe[1] = -1; +} + +void +restore_pgrp_pipe (p) + int *p; +{ + pgrp_pipe[0] = p[0]; + pgrp_pipe[1] = p[1]; +} + +#endif /* PGRP_PIPE */ diff --git a/bash-5.1/jobs.h b/bash-5.1/jobs.h new file mode 100644 index 0000000..43ba8c2 --- /dev/null +++ b/bash-5.1/jobs.h @@ -0,0 +1,321 @@ +/* jobs.h -- structures and definitions used by the jobs.c file. */ + +/* Copyright (C) 1993-2019 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_JOBS_H_) +# define _JOBS_H_ + +#include "quit.h" +#include "siglist.h" + +#include "stdc.h" + +#include "posixwait.h" + +/* Defines controlling the fashion in which jobs are listed. */ +#define JLIST_STANDARD 0 +#define JLIST_LONG 1 +#define JLIST_PID_ONLY 2 +#define JLIST_CHANGED_ONLY 3 +#define JLIST_NONINTERACTIVE 4 + +/* I looked it up. For pretty_print_job (). The real answer is 24. */ +#define LONGEST_SIGNAL_DESC 24 + +/* Defines for the wait_for_* functions and for the wait builtin to use */ +#define JWAIT_PERROR (1 << 0) +#define JWAIT_FORCE (1 << 1) +#define JWAIT_NOWAIT (1 << 2) /* don't waitpid(), just return status if already exited */ +#define JWAIT_WAITING (1 << 3) /* wait for jobs marked J_WAITING only */ + +/* flags for wait_for */ +#define JWAIT_NOTERM (1 << 8) /* wait_for doesn't give terminal away */ + +/* The max time to sleep while retrying fork() on EAGAIN failure */ +#define FORKSLEEP_MAX 16 + +/* We keep an array of jobs. Each entry in the array is a linked list + of processes that are piped together. The first process encountered is + the group leader. */ + +/* Values for the `running' field of a struct process. */ +#define PS_DONE 0 +#define PS_RUNNING 1 +#define PS_STOPPED 2 +#define PS_RECYCLED 4 + +/* Each child of the shell is remembered in a STRUCT PROCESS. A circular + chain of such structures is a pipeline. */ +typedef struct process { + struct process *next; /* Next process in the pipeline. A circular chain. */ + pid_t pid; /* Process ID. */ + WAIT status; /* The status of this command as returned by wait. */ + int running; /* Non-zero if this process is running. */ + char *command; /* The particular program that is running. */ +} PROCESS; + +struct pipeline_saver { + struct process *pipeline; + struct pipeline_saver *next; +}; + +/* PALIVE really means `not exited' */ +#define PSTOPPED(p) (WIFSTOPPED((p)->status)) +#define PRUNNING(p) ((p)->running == PS_RUNNING) +#define PALIVE(p) (PRUNNING(p) || PSTOPPED(p)) + +#define PEXITED(p) ((p)->running == PS_DONE) +#if defined (RECYCLES_PIDS) +# define PRECYCLED(p) ((p)->running == PS_RECYCLED) +#else +# define PRECYCLED(p) (0) +#endif +#define PDEADPROC(p) (PEXITED(p) || PRECYCLED(p)) + +#define get_job_by_jid(ind) (jobs[(ind)]) + +/* A description of a pipeline's state. */ +typedef enum { JNONE = -1, JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } JOB_STATE; +#define JOBSTATE(job) (jobs[(job)]->state) +#define J_JOBSTATE(j) ((j)->state) + +#define STOPPED(j) (jobs[(j)]->state == JSTOPPED) +#define RUNNING(j) (jobs[(j)]->state == JRUNNING) +#define DEADJOB(j) (jobs[(j)]->state == JDEAD) + +#define INVALID_JOB(j) ((j) < 0 || (j) >= js.j_jobslots || get_job_by_jid(j) == 0) + +/* Values for the FLAGS field in the JOB struct below. */ +#define J_FOREGROUND 0x01 /* Non-zero if this is running in the foreground. */ +#define J_NOTIFIED 0x02 /* Non-zero if already notified about job state. */ +#define J_JOBCONTROL 0x04 /* Non-zero if this job started under job control. */ +#define J_NOHUP 0x08 /* Don't send SIGHUP to job if shell gets SIGHUP. */ +#define J_STATSAVED 0x10 /* A process in this job had status saved via $! */ +#define J_ASYNC 0x20 /* Job was started asynchronously */ +#define J_PIPEFAIL 0x40 /* pipefail set when job was started */ +#define J_WAITING 0x80 /* one of a list of jobs for which we are waiting */ + +#define IS_FOREGROUND(j) ((jobs[j]->flags & J_FOREGROUND) != 0) +#define IS_NOTIFIED(j) ((jobs[j]->flags & J_NOTIFIED) != 0) +#define IS_JOBCONTROL(j) ((jobs[j]->flags & J_JOBCONTROL) != 0) +#define IS_ASYNC(j) ((jobs[j]->flags & J_ASYNC) != 0) +#define IS_WAITING(j) ((jobs[j]->flags & J_WAITING) != 0) + +typedef struct job { + char *wd; /* The working directory at time of invocation. */ + PROCESS *pipe; /* The pipeline of processes that make up this job. */ + pid_t pgrp; /* The process ID of the process group (necessary). */ + JOB_STATE state; /* The state that this job is in. */ + int flags; /* Flags word: J_NOTIFIED, J_FOREGROUND, or J_JOBCONTROL. */ +#if defined (JOB_CONTROL) + COMMAND *deferred; /* Commands that will execute when this job is done. */ + sh_vptrfunc_t *j_cleanup; /* Cleanup function to call when job marked JDEAD */ + PTR_T cleanarg; /* Argument passed to (*j_cleanup)() */ +#endif /* JOB_CONTROL */ +} JOB; + +struct jobstats { + /* limits */ + long c_childmax; + /* child process statistics */ + int c_living; /* running or stopped child processes */ + int c_reaped; /* exited child processes still in jobs list */ + int c_injobs; /* total number of child processes in jobs list */ + /* child process totals */ + int c_totforked; /* total number of children this shell has forked */ + int c_totreaped; /* total number of children this shell has reaped */ + /* job counters and indices */ + int j_jobslots; /* total size of jobs array */ + int j_lastj; /* last (newest) job allocated */ + int j_firstj; /* first (oldest) job allocated */ + int j_njobs; /* number of non-NULL jobs in jobs array */ + int j_ndead; /* number of JDEAD jobs in jobs array */ + /* */ + int j_current; /* current job */ + int j_previous; /* previous job */ + /* */ + JOB *j_lastmade; /* last job allocated by stop_pipeline */ + JOB *j_lastasync; /* last async job allocated by stop_pipeline */ +}; + +/* Revised to accommodate new hash table bgpids implementation. */ +typedef pid_t ps_index_t; + +struct pidstat { + ps_index_t bucket_next; + ps_index_t bucket_prev; + + pid_t pid; + bits16_t status; /* only 8 bits really needed */ +}; + +struct bgpids { + struct pidstat *storage; /* storage arena */ + + ps_index_t head; + ps_index_t nalloc; + + int npid; +}; + +#define NO_PIDSTAT (ps_index_t)-1 + +/* standalone process status struct, without bgpids indexes */ +struct procstat { + pid_t pid; + bits16_t status; +}; + +/* A standalone singly-linked list of PROCESS *, used in various places + including keeping track of process substitutions. */ +struct procchain { + PROCESS *head; + PROCESS *end; + int nproc; +}; + +#define NO_JOB -1 /* An impossible job array index. */ +#define DUP_JOB -2 /* A possible return value for get_job_spec (). */ +#define BAD_JOBSPEC -3 /* Bad syntax for job spec. */ + +/* A value which cannot be a process ID. */ +#define NO_PID (pid_t)-1 + +#define ANY_PID (pid_t)-1 + +/* flags for make_child () */ +#define FORK_SYNC 0 /* normal synchronous process */ +#define FORK_ASYNC 1 /* background process */ +#define FORK_NOJOB 2 /* don't put process in separate pgrp */ +#define FORK_NOTERM 4 /* don't give terminal to any pgrp */ + +/* System calls. */ +#if !defined (HAVE_UNISTD_H) +extern pid_t fork (), getpid (), getpgrp (); +#endif /* !HAVE_UNISTD_H */ + +/* Stuff from the jobs.c file. */ +extern struct jobstats js; + +extern pid_t original_pgrp, shell_pgrp, pipeline_pgrp; +extern volatile pid_t last_made_pid, last_asynchronous_pid; +extern int asynchronous_notification; + +extern int already_making_children; +extern int running_in_background; + +extern PROCESS *last_procsub_child; + +extern JOB **jobs; + +extern void making_children PARAMS((void)); +extern void stop_making_children PARAMS((void)); +extern void cleanup_the_pipeline PARAMS((void)); +extern void discard_last_procsub_child PARAMS((void)); +extern void save_pipeline PARAMS((int)); +extern PROCESS *restore_pipeline PARAMS((int)); +extern void start_pipeline PARAMS((void)); +extern int stop_pipeline PARAMS((int, COMMAND *)); +extern int discard_pipeline PARAMS((PROCESS *)); +extern void append_process PARAMS((char *, pid_t, int, int)); + +extern void save_proc_status PARAMS((pid_t, int)); + +extern PROCESS *procsub_add PARAMS((PROCESS *)); +extern PROCESS *procsub_search PARAMS((pid_t)); +extern PROCESS *procsub_delete PARAMS((pid_t)); +extern int procsub_waitpid PARAMS((pid_t)); +extern void procsub_waitall PARAMS((void)); +extern void procsub_clear PARAMS((void)); +extern void procsub_prune PARAMS((void)); + +extern void delete_job PARAMS((int, int)); +extern void nohup_job PARAMS((int)); +extern void delete_all_jobs PARAMS((int)); +extern void nohup_all_jobs PARAMS((int)); + +extern int count_all_jobs PARAMS((void)); + +extern void terminate_current_pipeline PARAMS((void)); +extern void terminate_stopped_jobs PARAMS((void)); +extern void hangup_all_jobs PARAMS((void)); +extern void kill_current_pipeline PARAMS((void)); + +#if defined (__STDC__) && defined (pid_t) +extern int get_job_by_pid PARAMS((int, int, PROCESS **)); +extern void describe_pid PARAMS((int)); +#else +extern int get_job_by_pid PARAMS((pid_t, int, PROCESS **)); +extern void describe_pid PARAMS((pid_t)); +#endif + +extern void list_one_job PARAMS((JOB *, int, int, int)); +extern void list_all_jobs PARAMS((int)); +extern void list_stopped_jobs PARAMS((int)); +extern void list_running_jobs PARAMS((int)); + +extern pid_t make_child PARAMS((char *, int)); + +extern int get_tty_state PARAMS((void)); +extern int set_tty_state PARAMS((void)); + +extern int job_exit_status PARAMS((int)); +extern int job_exit_signal PARAMS((int)); + +extern int wait_for_single_pid PARAMS((pid_t, int)); +extern void wait_for_background_pids PARAMS((struct procstat *)); +extern int wait_for PARAMS((pid_t, int)); +extern int wait_for_job PARAMS((int, int, struct procstat *)); +extern int wait_for_any_job PARAMS((int, struct procstat *)); + +extern void wait_sigint_cleanup PARAMS((void)); + +extern void notify_and_cleanup PARAMS((void)); +extern void reap_dead_jobs PARAMS((void)); +extern int start_job PARAMS((int, int)); +extern int kill_pid PARAMS((pid_t, int, int)); +extern int initialize_job_control PARAMS((int)); +extern void initialize_job_signals PARAMS((void)); +extern int give_terminal_to PARAMS((pid_t, int)); + +extern void run_sigchld_trap PARAMS((int)); + +extern int freeze_jobs_list PARAMS((void)); +extern void unfreeze_jobs_list PARAMS((void)); +extern void set_jobs_list_frozen PARAMS((int)); +extern int set_job_control PARAMS((int)); +extern void without_job_control PARAMS((void)); +extern void end_job_control PARAMS((void)); +extern void restart_job_control PARAMS((void)); +extern void set_sigchld_handler PARAMS((void)); +extern void ignore_tty_job_signals PARAMS((void)); +extern void default_tty_job_signals PARAMS((void)); +extern void get_original_tty_job_signals PARAMS((void)); + +extern void init_job_stats PARAMS((void)); + +extern void close_pgrp_pipe PARAMS((void)); +extern void save_pgrp_pipe PARAMS((int *, int)); +extern void restore_pgrp_pipe PARAMS((int *)); + +extern void set_maxchild PARAMS((int)); + +extern int job_control; /* set to 0 in nojobs.c */ + +#endif /* _JOBS_H_ */ diff --git a/bash-5.1/lib/glob/Makefile.in b/bash-5.1/lib/glob/Makefile.in new file mode 100644 index 0000000..314622f --- /dev/null +++ b/bash-5.1/lib/glob/Makefile.in @@ -0,0 +1,168 @@ +## -*- text -*- #################################################### +# # +# Makefile for the GNU Glob Library. # +# # +#################################################################### +# +# Copyright (C) 1996-2009 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# 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 . + +srcdir = @srcdir@ +VPATH = @srcdir@ +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ + +CC = @CC@ +RANLIB = @RANLIB@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +RM = rm -f +CP = cp +MV = mv + +SHELL = @MAKE_SHELL@ + +PROFILE_FLAGS = @PROFILE_FLAGS@ + +CFLAGS = @CFLAGS@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@ + +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +BASHINCDIR = ${topdir}/include + +INCLUDES = -I. -I../.. -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib + +CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) ${INCLUDES} $(CPPFLAGS) \ + $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS} + +# 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: + $(RM) $@ + $(CC) -c $(CCFLAGS) $< + +# The name of the library target. +LIBRARY_NAME = libglob.a + +# The C code source files for this library. +CSOURCES = $(srcdir)/glob.c $(srcdir)/strmatch.c $(srcdir)/smatch.c \ + $(srcdir)/xmbsrtowcs.c + +# The header files for this library. +HSOURCES = $(srcdir)/strmatch.h + +OBJECTS = glob.o strmatch.o smatch.o xmbsrtowcs.o gmisc.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) $(ARFLAGS) $@ $(OBJECTS) + -test -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: + +clean: + rm -f $(OBJECTS) $(LIBRARY_NAME) + -(cd doc && $(MAKE) $(MFLAGS) $@ ) + +realclean distclean maintainer-clean: clean + -( cd doc && $(MAKE) $(MFLAGS) $@ ) + $(RM) -f Makefile + +mostlyclean: clean + -( cd doc && $(MAKE) $(MFLAGS) $@ ) + +${BUILD_DIR}/pathnames.h: ${BUILD_DIR}/config.h ${BUILD_DIR}/Makefile Makefile + -( cd ${BUILD_DIR} && ${MAKE} ${MFLAGS} pathnames.h ) + +###################################################################### +# # +# Dependencies for the object files which make up this library. # +# # +###################################################################### + +smatch.o: strmatch.h +smatch.o: $(BUILD_DIR)/config.h +smatch.o: $(BASHINCDIR)/chartypes.h +smatch.o: $(BASHINCDIR)/ansi_stdlib.h $(topdir)/bashansi.h +smatch.o: $(BASHINCDIR)/shmbutil.h +smatch.o: $(topdir)/xmalloc.h + +strmatch.o: strmatch.h +strmatch.o: $(BUILD_DIR)/config.h +strmatch.o: $(BASHINCDIR)/stdc.h + +glob.o: $(BUILD_DIR)/config.h +glob.o: $(topdir)/shell.h $(BUILD_DIR)/pathnames.h +glob.o: $(topdir)/bashtypes.h $(BASHINCDIR)/ansi_stdlib.h $(topdir)/bashansi.h +glob.o: $(BASHINCDIR)/posixstat.h $(BASHINCDIR)/memalloc.h +glob.o: strmatch.h glob.h +glob.o: $(BASHINCDIR)/shmbutil.h +glob.o: $(topdir)/xmalloc.h + +gmisc.o: $(BUILD_DIR)/config.h +gmisc.o: $(topdir)/bashtypes.h $(BASHINCDIR)/ansi_stdlib.h $(topdir)/bashansi.h +gmisc.o: $(BASHINCDIR)/shmbutil.h + +xmbsrtowcs.o: ${BUILD_DIR}/config.h +xmbsrtowcs.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +xmbsrtowcs.o: ${BASHINCDIR}/shmbutil.h + +# Rules for deficient makes, like SunOS and Solaris +glob.o: glob.c +gmisc.o: gmisc.c +strmatch.o: strmatch.c +smatch.o: smatch.c +xmbsrtowcs.o: xmbsrtowcs.c + +# dependencies for C files that include other C files +glob.o: glob_loop.c +gmisc.o: gm_loop.c +smatch.o: sm_loop.c diff --git a/bash-5.1/lib/glob/collsyms.h b/bash-5.1/lib/glob/collsyms.h new file mode 100644 index 0000000..d56df61 --- /dev/null +++ b/bash-5.1/lib/glob/collsyms.h @@ -0,0 +1,140 @@ +/* collsyms.h -- collating symbol names and their corresponding characters + (in ascii) as given by POSIX.2 in table 2.8. */ + +/* Copyright (C) 1997-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 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 . +*/ + +/* The upper-case letters, lower-case letters, and digits are omitted from + this table. The digits are not included in the table in the POSIX.2 + spec. The upper and lower case letters are translated by the code + in smatch.c:collsym(). */ + +typedef struct _COLLSYM { + XCHAR *name; + CHAR code; +} __COLLSYM; + +static __COLLSYM POSIXCOLL [] = +{ + { L("NUL"), L('\0') }, + { L("SOH"), L('\001') }, + { L("STX"), L('\002') }, + { L("ETX"), L('\003') }, + { L("EOT"), L('\004') }, + { L("ENQ"), L('\005') }, + { L("ACK"), L('\006') }, +#ifdef __STDC__ + { L("alert"), L('\a') }, +#else + { L("alert"), L('\007') }, +#endif + { L("BS"), L('\010') }, + { L("backspace"), L('\b') }, + { L("HT"), L('\011') }, + { L("tab"), L('\t') }, + { L("LF"), L('\012') }, + { L("newline"), L('\n') }, + { L("VT"), L('\013') }, + { L("vertical-tab"), L('\v') }, + { L("FF"), L('\014') }, + { L("form-feed"), L('\f') }, + { L("CR"), L('\015') }, + { L("carriage-return"), L('\r') }, + { L("SO"), L('\016') }, + { L("SI"), L('\017') }, + { L("DLE"), L('\020') }, + { L("DC1"), L('\021') }, + { L("DC2"), L('\022') }, + { L("DC3"), L('\023') }, + { L("DC4"), L('\024') }, + { L("NAK"), L('\025') }, + { L("SYN"), L('\026') }, + { L("ETB"), L('\027') }, + { L("CAN"), L('\030') }, + { L("EM"), L('\031') }, + { L("SUB"), L('\032') }, + { L("ESC"), L('\033') }, + { L("IS4"), L('\034') }, + { L("FS"), L('\034') }, + { L("IS3"), L('\035') }, + { L("GS"), L('\035') }, + { L("IS2"), L('\036') }, + { L("RS"), L('\036') }, + { L("IS1"), L('\037') }, + { L("US"), L('\037') }, + { L("space"), L(' ') }, + { L("exclamation-mark"), L('!') }, + { L("quotation-mark"), L('"') }, + { L("number-sign"), L('#') }, + { L("dollar-sign"), L('$') }, + { L("percent-sign"), L('%') }, + { L("ampersand"), L('&') }, + { L("apostrophe"), L('\'') }, + { L("left-parenthesis"), L('(') }, + { L("right-parenthesis"), L(')') }, + { L("asterisk"), L('*') }, + { L("plus-sign"), L('+') }, + { L("comma"), L(',') }, + { L("hyphen"), L('-') }, + { L("hyphen-minus"), L('-') }, + { L("minus"), L('-') }, /* extension from POSIX.2 */ + { L("dash"), L('-') }, /* extension from POSIX.2 */ + { L("period"), L('.') }, + { L("full-stop"), L('.') }, + { L("slash"), L('/') }, + { L("solidus"), L('/') }, /* extension from POSIX.2 */ + { L("zero"), L('0') }, + { L("one"), L('1') }, + { L("two"), L('2') }, + { L("three"), L('3') }, + { L("four"), L('4') }, + { L("five"), L('5') }, + { L("six"), L('6') }, + { L("seven"), L('7') }, + { L("eight"), L('8') }, + { L("nine"), L('9') }, + { L("colon"), L(':') }, + { L("semicolon"), L(';') }, + { L("less-than-sign"), L('<') }, + { L("equals-sign"), L('=') }, + { L("greater-than-sign"), L('>') }, + { L("question-mark"), L('?') }, + { L("commercial-at"), L('@') }, + /* upper-case letters omitted */ + { L("left-square-bracket"), L('[') }, + { L("backslash"), L('\\') }, + { L("reverse-solidus"), L('\\') }, + { L("right-square-bracket"), L(']') }, + { L("circumflex"), L('^') }, + { L("circumflex-accent"), L('^') }, /* extension from POSIX.2 */ + { L("underscore"), L('_') }, + { L("grave-accent"), L('`') }, + /* lower-case letters omitted */ + { L("left-brace"), L('{') }, /* extension from POSIX.2 */ + { L("left-curly-bracket"), L('{') }, + { L("vertical-line"), L('|') }, + { L("right-brace"), L('}') }, /* extension from POSIX.2 */ + { L("right-curly-bracket"), L('}') }, + { L("tilde"), L('~') }, + { L("DEL"), L('\177') }, + { 0, 0 }, +}; + +#undef _COLLSYM +#undef __COLLSYM +#undef POSIXCOLL diff --git a/bash-5.1/lib/glob/doc/Makefile b/bash-5.1/lib/glob/doc/Makefile new file mode 100644 index 0000000..8dca606 --- /dev/null +++ b/bash-5.1/lib/glob/doc/Makefile @@ -0,0 +1,5 @@ +all: + cp glob.texi glob.info + +clean distclean mostlyclean maintainer-clean: + rm -f glob.?? glob.info diff --git a/bash-5.1/lib/glob/doc/glob.texi b/bash-5.1/lib/glob/doc/glob.texi new file mode 100644 index 0000000..0262ef1 --- /dev/null +++ b/bash-5.1/lib/glob/doc/glob.texi @@ -0,0 +1 @@ +Nothing happens here. diff --git a/bash-5.1/lib/glob/glob.c b/bash-5.1/lib/glob/glob.c new file mode 100644 index 0000000..eb6277f --- /dev/null +++ b/bash-5.1/lib/glob/glob.c @@ -0,0 +1,1554 @@ +/* glob.c -- file-name wildcard pattern matching for Bash. + + Copyright (C) 1985-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* To whomever it may concern: I have never seen the code which most + Unix programs use to perform this function. I wrote this from scratch + based on specifications for the pattern matching. --RMS. */ + +#include + +#if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) + #pragma alloca +#endif /* _AIX && RISC6000 && !__GNUC__ */ + +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" +#include "posixdir.h" +#include "posixstat.h" +#include "shmbutil.h" +#include "xmalloc.h" + +#include "filecntl.h" +#if !defined (F_OK) +# define F_OK 0 +#endif + +#include "stdc.h" +#include "memalloc.h" + +#include + +#include "shell.h" +#include "general.h" + +#include "glob.h" +#include "strmatch.h" + +#if !defined (HAVE_BCOPY) && !defined (bcopy) +# define bcopy(s, d, n) ((void) memcpy ((d), (s), (n))) +#endif /* !HAVE_BCOPY && !bcopy */ + +#if !defined (NULL) +# if defined (__STDC__) +# define NULL ((void *) 0) +# else +# define NULL 0x0 +# endif /* __STDC__ */ +#endif /* !NULL */ + +#if !defined (FREE) +# define FREE(x) if (x) free (x) +#endif + +/* Don't try to alloca() more than this much memory for `struct globval' + in glob_vector() */ +#ifndef ALLOCA_MAX +# define ALLOCA_MAX 100000 +#endif + +struct globval + { + struct globval *next; + char *name; + }; + +extern void throw_to_top_level PARAMS((void)); +extern int sh_eaccess PARAMS((const char *, int)); +extern char *sh_makepath PARAMS((const char *, const char *, int)); +extern int signal_is_pending PARAMS((int)); +extern void run_pending_traps PARAMS((void)); + +extern int extended_glob; + +/* Global variable which controls whether or not * matches .*. + Non-zero means don't match .*. */ +int noglob_dot_filenames = 1; + +/* Global variable which controls whether or not filename globbing + is done without regard to case. */ +int glob_ignore_case = 0; + +/* Global variable controlling whether globbing ever returns . or .. + regardless of the pattern. If set to 1, no glob pattern will ever + match `.' or `..'. Disabled by default. */ +int glob_always_skip_dot_and_dotdot = 0; + +/* Global variable to return to signify an error in globbing. */ +char *glob_error_return; + +static struct globval finddirs_error_return; + +/* Some forward declarations. */ +static int skipname PARAMS((char *, char *, int)); +#if HANDLE_MULTIBYTE +static int mbskipname PARAMS((char *, char *, int)); +#endif +void udequote_pathname PARAMS((char *)); +#if HANDLE_MULTIBYTE +void wcdequote_pathname PARAMS((wchar_t *)); +static void wdequote_pathname PARAMS((char *)); +#else +# define dequote_pathname udequote_pathname +#endif +static void dequote_pathname PARAMS((char *)); +static int glob_testdir PARAMS((char *, int)); +static char **glob_dir_to_array PARAMS((char *, char **, int)); + +/* Make sure these names continue to agree with what's in smatch.c */ +extern char *glob_patscan PARAMS((char *, char *, int)); +extern wchar_t *glob_patscan_wc PARAMS((wchar_t *, wchar_t *, int)); + +/* And this from gmisc.c/gm_loop.c */ +extern int wextglob_pattern_p PARAMS((wchar_t *)); + +extern char *glob_dirscan PARAMS((char *, int)); + +/* Compile `glob_loop.c' for single-byte characters. */ +#define GCHAR unsigned char +#define CHAR char +#define INT int +#define L(CS) CS +#define INTERNAL_GLOB_PATTERN_P internal_glob_pattern_p +#include "glob_loop.c" + +/* Compile `glob_loop.c' again for multibyte characters. */ +#if HANDLE_MULTIBYTE + +#define GCHAR wchar_t +#define CHAR wchar_t +#define INT wint_t +#define L(CS) L##CS +#define INTERNAL_GLOB_PATTERN_P internal_glob_wpattern_p +#include "glob_loop.c" + +#endif /* HANDLE_MULTIBYTE */ + +/* And now a function that calls either the single-byte or multibyte version + of internal_glob_pattern_p. */ +int +glob_pattern_p (pattern) + const char *pattern; +{ +#if HANDLE_MULTIBYTE + size_t n; + wchar_t *wpattern; + int r; + + if (MB_CUR_MAX == 1 || mbsmbchar (pattern) == 0) + return (internal_glob_pattern_p ((unsigned char *)pattern)); + + /* Convert strings to wide chars, and call the multibyte version. */ + n = xdupmbstowcs (&wpattern, NULL, pattern); + if (n == (size_t)-1) + /* Oops. Invalid multibyte sequence. Try it as single-byte sequence. */ + return (internal_glob_pattern_p ((unsigned char *)pattern)); + + r = internal_glob_wpattern_p (wpattern); + free (wpattern); + + return r; +#else + return (internal_glob_pattern_p ((unsigned char *)pattern)); +#endif +} + +#if EXTENDED_GLOB +/* Return 1 if all subpatterns in the extended globbing pattern PAT indicate + that the name should be skipped. XXX - doesn't handle pattern negation, + not sure if it should */ +static int +extglob_skipname (pat, dname, flags) + char *pat, *dname; + int flags; +{ + char *pp, *pe, *t, *se; + int n, r, negate, wild, nullpat; + + negate = *pat == '!'; + wild = *pat == '*' || *pat == '?'; + pp = pat + 2; + se = pp + strlen (pp) - 1; /* end of string */ + pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ + /* we should check for invalid extglob pattern here */ + if (pe == 0) + return 0; + + /* if pe != se we have more of the pattern at the end of the extglob + pattern. Check the easy case first ( */ + if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0) + { + *pe = '\0'; +#if defined (HANDLE_MULTIBYTE) + r = mbskipname (pp, dname, flags); +#else + r = skipname (pp, dname, flags); /*(*/ +#endif + *pe = ')'; + if (wild && pe[1]) /* if we can match zero instances, check further */ + return (skipname (pe+1, dname, flags)); + return r; + } + + /* Is the extglob pattern between the parens the null pattern? The null + pattern can match nothing, so should we check any remaining portion of + the pattern? */ + nullpat = pe >= (pat + 2) && pe[-2] == '(' && pe[-1] == ')'; + + /* check every subpattern */ + while (t = glob_patscan (pp, pe, '|')) + { + n = t[-1]; /* ( */ + if (extglob_pattern_p (pp) && n == ')') + t[-1] = n; /* no-op for now */ + else + t[-1] = '\0'; +#if defined (HANDLE_MULTIBYTE) + r = mbskipname (pp, dname, flags); +#else + r = skipname (pp, dname, flags); +#endif + t[-1] = n; + if (r == 0) /* if any pattern says not skip, we don't skip */ + return r; + pp = t; + } /*(*/ + + /* glob_patscan might find end of string */ + if (pp == se) + return r; + + /* but if it doesn't then we didn't match a leading dot */ + if (wild && *pe) /* if we can match zero instances, check further */ + return (skipname (pe, dname, flags)); + return 1; +} +#endif + +/* Return 1 if DNAME should be skipped according to PAT. Mostly concerned + with matching leading `.'. */ +static int +skipname (pat, dname, flags) + char *pat; + char *dname; + int flags; +{ +#if EXTENDED_GLOB + if (extglob_pattern_p (pat)) /* XXX */ + return (extglob_skipname (pat, dname, flags)); +#endif + + if (glob_always_skip_dot_and_dotdot && DOT_OR_DOTDOT (dname)) + return 1; + + /* If a leading dot need not be explicitly matched, and the pattern + doesn't start with a `.', don't match `.' or `..' */ + if (noglob_dot_filenames == 0 && pat[0] != '.' && + (pat[0] != '\\' || pat[1] != '.') && + DOT_OR_DOTDOT (dname)) + return 1; + + /* If a dot must be explicitly matched, check to see if they do. */ + else if (noglob_dot_filenames && dname[0] == '.' && pat[0] != '.' && + (pat[0] != '\\' || pat[1] != '.')) + return 1; + + return 0; +} + +#if HANDLE_MULTIBYTE + +static int +wskipname (pat, dname, flags) + wchar_t *pat, *dname; + int flags; +{ + if (glob_always_skip_dot_and_dotdot && WDOT_OR_DOTDOT (dname)) + return 1; + + /* If a leading dot need not be explicitly matched, and the + pattern doesn't start with a `.', don't match `.' or `..' */ + if (noglob_dot_filenames == 0 && pat[0] != L'.' && + (pat[0] != L'\\' || pat[1] != L'.') && + WDOT_OR_DOTDOT (dname)) + return 1; + + /* If a leading dot must be explicitly matched, check to see if the + pattern and dirname both have one. */ + else if (noglob_dot_filenames && dname[0] == L'.' && + pat[0] != L'.' && + (pat[0] != L'\\' || pat[1] != L'.')) + return 1; + + return 0; +} + +static int +wextglob_skipname (pat, dname, flags) + wchar_t *pat, *dname; + int flags; +{ +#if EXTENDED_GLOB + wchar_t *pp, *pe, *t, n, *se; + int r, negate, wild, nullpat; + + negate = *pat == L'!'; + wild = *pat == L'*' || *pat == L'?'; + pp = pat + 2; + se = pp + wcslen (pp) - 1; /*(*/ + pe = glob_patscan_wc (pp, se, 0); + + if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0) + { + *pe = L'\0'; + r = wskipname (pp, dname, flags); /*(*/ + *pe = L')'; + if (wild && pe[1] != L'\0') + return (wskipname (pe+1, dname, flags)); + return r; + } + + /* Is the extglob pattern between the parens the null pattern? The null + pattern can match nothing, so should we check any remaining portion of + the pattern? */ + nullpat = pe >= (pat + 2) && pe[-2] == L'(' && pe[-1] == L')'; + + /* check every subpattern */ + while (t = glob_patscan_wc (pp, pe, '|')) + { + n = t[-1]; /* ( */ + if (wextglob_pattern_p (pp) && n == L')') + t[-1] = n; /* no-op for now */ + else + t[-1] = L'\0'; + r = wskipname (pp, dname, flags); + t[-1] = n; + if (r == 0) + return 0; + pp = t; + } + + if (pp == pe) /* glob_patscan_wc might find end of pattern */ + return r; + + /* but if it doesn't then we didn't match a leading dot */ + if (wild && *pe != L'\0') + return (wskipname (pe, dname, flags)); + return 1; +#else + return (wskipname (pat, dname, flags)); +#endif +} + +/* Return 1 if DNAME should be skipped according to PAT. Handles multibyte + characters in PAT and DNAME. Mostly concerned with matching leading `.'. */ +static int +mbskipname (pat, dname, flags) + char *pat, *dname; + int flags; +{ + int ret, ext; + wchar_t *pat_wc, *dn_wc; + size_t pat_n, dn_n; + + if (mbsmbchar (dname) == 0 && mbsmbchar (pat) == 0) + return (skipname (pat, dname, flags)); + + ext = 0; +#if EXTENDED_GLOB + ext = extglob_pattern_p (pat); +#endif + + pat_wc = dn_wc = (wchar_t *)NULL; + + pat_n = xdupmbstowcs (&pat_wc, NULL, pat); + if (pat_n != (size_t)-1) + dn_n = xdupmbstowcs (&dn_wc, NULL, dname); + + ret = 0; + if (pat_n != (size_t)-1 && dn_n !=(size_t)-1) + ret = ext ? wextglob_skipname (pat_wc, dn_wc, flags) : wskipname (pat_wc, dn_wc, flags); + else + ret = skipname (pat, dname, flags); + + FREE (pat_wc); + FREE (dn_wc); + + return ret; +} +#endif /* HANDLE_MULTIBYTE */ + +/* Remove backslashes quoting characters in PATHNAME by modifying PATHNAME. */ +void +udequote_pathname (pathname) + char *pathname; +{ + register int i, j; + + for (i = j = 0; pathname && pathname[i]; ) + { + if (pathname[i] == '\\') + i++; + + pathname[j++] = pathname[i++]; + + if (pathname[i - 1] == 0) + break; + } + if (pathname) + pathname[j] = '\0'; +} + +#if HANDLE_MULTIBYTE +/* Remove backslashes quoting characters in PATHNAME by modifying PATHNAME. */ +void +wcdequote_pathname (wpathname) + wchar_t *wpathname; +{ + int i, j; + + for (i = j = 0; wpathname && wpathname[i]; ) + { + if (wpathname[i] == L'\\') + i++; + + wpathname[j++] = wpathname[i++]; + + if (wpathname[i - 1] == L'\0') + break; + } + if (wpathname) + wpathname[j] = L'\0'; +} + +static void +wdequote_pathname (pathname) + char *pathname; +{ + mbstate_t ps; + size_t len, n; + wchar_t *wpathname; + int i, j; + wchar_t *orig_wpathname; + + if (mbsmbchar (pathname) == 0) + { + udequote_pathname (pathname); + return; + } + + len = strlen (pathname); + /* Convert the strings into wide characters. */ + n = xdupmbstowcs (&wpathname, NULL, pathname); + if (n == (size_t) -1) + { + /* Something wrong. Fall back to single-byte */ + udequote_pathname (pathname); + return; + } + orig_wpathname = wpathname; + + wcdequote_pathname (wpathname); + + /* Convert the wide character string into unibyte character set. */ + memset (&ps, '\0', sizeof(mbstate_t)); + n = wcsrtombs(pathname, (const wchar_t **)&wpathname, len, &ps); + if (n == (size_t)-1 || (wpathname && *wpathname != 0)) /* what? now you tell me? */ + { + wpathname = orig_wpathname; + memset (&ps, '\0', sizeof(mbstate_t)); + n = xwcsrtombs (pathname, (const wchar_t **)&wpathname, len, &ps); + } + pathname[len] = '\0'; + + /* Can't just free wpathname here; wcsrtombs changes it in many cases. */ + free (orig_wpathname); +} + +static void +dequote_pathname (pathname) + char *pathname; +{ + if (MB_CUR_MAX > 1) + wdequote_pathname (pathname); + else + udequote_pathname (pathname); +} +#endif /* HANDLE_MULTIBYTE */ + +/* Test whether NAME exists. */ + +#if defined (HAVE_LSTAT) +# define GLOB_TESTNAME(name) (lstat (name, &finfo)) +#else /* !HAVE_LSTAT */ +# if !defined (AFS) +# define GLOB_TESTNAME(name) (sh_eaccess (name, F_OK)) +# else /* AFS */ +# define GLOB_TESTNAME(name) (access (name, F_OK)) +# endif /* AFS */ +#endif /* !HAVE_LSTAT */ + +/* Return 0 if DIR is a directory, -2 if DIR is a symlink, -1 otherwise. */ +static int +glob_testdir (dir, flags) + char *dir; + int flags; +{ + struct stat finfo; + int r; + +/*itrace("glob_testdir: testing %s" flags = %d, dir, flags);*/ +#if defined (HAVE_LSTAT) + r = (flags & GX_ALLDIRS) ? lstat (dir, &finfo) : stat (dir, &finfo); +#else + r = stat (dir, &finfo); +#endif + if (r < 0) + return (-1); + +#if defined (S_ISLNK) + if (S_ISLNK (finfo.st_mode)) + return (-2); +#endif + + if (S_ISDIR (finfo.st_mode) == 0) + return (-1); + + return (0); +} + +/* Recursively scan SDIR for directories matching PAT (PAT is always `**'). + FLAGS is simply passed down to the recursive call to glob_vector. Returns + a list of matching directory names. EP, if non-null, is set to the last + element of the returned list. NP, if non-null, is set to the number of + directories in the returned list. These two variables exist for the + convenience of the caller (always glob_vector). */ +static struct globval * +finddirs (pat, sdir, flags, ep, np) + char *pat; + char *sdir; + int flags; + struct globval **ep; + int *np; +{ + char **r, *n; + int ndirs; + struct globval *ret, *e, *g; + +/*itrace("finddirs: pat = `%s' sdir = `%s' flags = 0x%x", pat, sdir, flags);*/ + e = ret = 0; + r = glob_vector (pat, sdir, flags); + if (r == 0 || r[0] == 0) + { + if (np) + *np = 0; + if (ep) + *ep = 0; + if (r && r != &glob_error_return) + free (r); + return (struct globval *)0; + } + for (ndirs = 0; r[ndirs] != 0; ndirs++) + { + g = (struct globval *) malloc (sizeof (struct globval)); + if (g == 0) + { + while (ret) /* free list built so far */ + { + g = ret->next; + free (ret); + ret = g; + } + + free (r); + if (np) + *np = 0; + if (ep) + *ep = 0; + return (&finddirs_error_return); + } + if (e == 0) + e = g; + + g->next = ret; + ret = g; + + g->name = r[ndirs]; + } + + free (r); + if (ep) + *ep = e; + if (np) + *np = ndirs; + + return ret; +} + +/* Return a vector of names of files in directory DIR + whose names match glob pattern PAT. + The names are not in any particular order. + Wildcards at the beginning of PAT do not match an initial period. + + The vector is terminated by an element that is a null pointer. + + To free the space allocated, first free the vector's elements, + then free the vector. + + Return 0 if cannot get enough memory to hold the pointer + and the names. + + Return -1 if cannot access directory DIR. + Look in errno for more information. */ + +char ** +glob_vector (pat, dir, flags) + char *pat; + char *dir; + int flags; +{ + DIR *d; + register struct dirent *dp; + struct globval *lastlink, *e, *dirlist; + register struct globval *nextlink; + register char *nextname, *npat, *subdir; + unsigned int count; + int lose, skip, ndirs, isdir, sdlen, add_current, patlen; + register char **name_vector; + register unsigned int i; + int mflags; /* Flags passed to strmatch (). */ + int pflags; /* flags passed to sh_makepath () */ + int hasglob; /* return value from glob_pattern_p */ + int nalloca; + struct globval *firstmalloc, *tmplink; + char *convfn; + + lastlink = 0; + count = lose = skip = add_current = 0; + + firstmalloc = 0; + nalloca = 0; + + name_vector = NULL; + +/*itrace("glob_vector: pat = `%s' dir = `%s' flags = 0x%x", pat, dir, flags);*/ + /* If PAT is empty, skip the loop, but return one (empty) filename. */ + if (pat == 0 || *pat == '\0') + { + if (glob_testdir (dir, 0) < 0) + return ((char **) &glob_error_return); + + nextlink = (struct globval *)alloca (sizeof (struct globval)); + if (nextlink == NULL) + return ((char **) NULL); + + nextlink->next = (struct globval *)0; + nextname = (char *) malloc (1); + if (nextname == 0) + lose = 1; + else + { + lastlink = nextlink; + nextlink->name = nextname; + nextname[0] = '\0'; + count = 1; + } + + skip = 1; + } + + patlen = (pat && *pat) ? strlen (pat) : 0; + + /* If the filename pattern (PAT) does not contain any globbing characters, + or contains a pattern with only backslash escapes (hasglob == 2), + we can dispense with reading the directory, and just see if there is + a filename `DIR/PAT'. If there is, and we can access it, just make the + vector to return and bail immediately. */ + hasglob = 0; + if (skip == 0 && ((hasglob = glob_pattern_p (pat)) == 0 || hasglob == 2)) + { + int dirlen; + struct stat finfo; + + if (glob_testdir (dir, 0) < 0) + return ((char **) &glob_error_return); + + dirlen = strlen (dir); + nextname = (char *)malloc (dirlen + patlen + 2); + npat = (char *)malloc (patlen + 1); + if (nextname == 0 || npat == 0) + { + FREE (nextname); + FREE (npat); + lose = 1; + } + else + { + strcpy (npat, pat); + dequote_pathname (npat); + + strcpy (nextname, dir); + nextname[dirlen++] = '/'; + strcpy (nextname + dirlen, npat); + + if (GLOB_TESTNAME (nextname) >= 0) + { + free (nextname); + nextlink = (struct globval *)alloca (sizeof (struct globval)); + if (nextlink) + { + nextlink->next = (struct globval *)0; + lastlink = nextlink; + nextlink->name = npat; + count = 1; + } + else + { + free (npat); + lose = 1; + } + } + else + { + free (nextname); + free (npat); + } + } + + skip = 1; + } + + if (skip == 0) + { + /* Open the directory, punting immediately if we cannot. If opendir + is not robust (i.e., it opens non-directories successfully), test + that DIR is a directory and punt if it's not. */ +#if defined (OPENDIR_NOT_ROBUST) + if (glob_testdir (dir, 0) < 0) + return ((char **) &glob_error_return); +#endif + + d = opendir (dir); + if (d == NULL) + return ((char **) &glob_error_return); + + /* Compute the flags that will be passed to strmatch(). We don't + need to do this every time through the loop. */ + mflags = (noglob_dot_filenames ? FNM_PERIOD : 0) | FNM_PATHNAME; + +#ifdef FNM_CASEFOLD + if (glob_ignore_case) + mflags |= FNM_CASEFOLD; +#endif + + if (extended_glob) + mflags |= FNM_EXTMATCH; + + add_current = ((flags & (GX_ALLDIRS|GX_ADDCURDIR)) == (GX_ALLDIRS|GX_ADDCURDIR)); + + /* Scan the directory, finding all names that match. + For each name that matches, allocate a struct globval + on the stack and store the name in it. + Chain those structs together; lastlink is the front of the chain. */ + while (1) + { + /* Make globbing interruptible in the shell. */ + if (interrupt_state || terminating_signal) + { + lose = 1; + break; + } + else if (signal_is_pending (SIGINT)) /* XXX - make SIGINT traps responsive */ + { + lose = 1; + break; + } + + dp = readdir (d); + if (dp == NULL) + break; + + /* If this directory entry is not to be used, try again. */ + if (REAL_DIR_ENTRY (dp) == 0) + continue; + +#if 0 + if (dp->d_name == 0 || *dp->d_name == 0) + continue; +#endif + +#if HANDLE_MULTIBYTE + if (MB_CUR_MAX > 1 && mbskipname (pat, dp->d_name, flags)) + continue; + else +#endif + if (skipname (pat, dp->d_name, flags)) + continue; + + /* If we're only interested in directories, don't bother with files */ + if (flags & (GX_MATCHDIRS|GX_ALLDIRS)) + { + pflags = (flags & GX_ALLDIRS) ? MP_RMDOT : 0; + if (flags & GX_NULLDIR) + pflags |= MP_IGNDOT; + subdir = sh_makepath (dir, dp->d_name, pflags); + isdir = glob_testdir (subdir, flags); + if (isdir < 0 && (flags & GX_MATCHDIRS)) + { + free (subdir); + continue; + } + } + + if (flags & GX_ALLDIRS) + { + if (isdir == 0) + { + dirlist = finddirs (pat, subdir, (flags & ~GX_ADDCURDIR), &e, &ndirs); + if (dirlist == &finddirs_error_return) + { + free (subdir); + lose = 1; + break; + } + if (ndirs) /* add recursive directories to list */ + { + if (firstmalloc == 0) + firstmalloc = e; + e->next = lastlink; + lastlink = dirlist; + count += ndirs; + } + } + + /* XXX - should we even add this if it's not a directory? */ + nextlink = (struct globval *) malloc (sizeof (struct globval)); + if (firstmalloc == 0) + firstmalloc = nextlink; + sdlen = strlen (subdir); + nextname = (char *) malloc (sdlen + 1); + if (nextlink == 0 || nextname == 0) + { + FREE (nextlink); + FREE (nextname); + free (subdir); + lose = 1; + break; + } + nextlink->next = lastlink; + lastlink = nextlink; + nextlink->name = nextname; + bcopy (subdir, nextname, sdlen + 1); + free (subdir); + ++count; + continue; + } + else if (flags & GX_MATCHDIRS) + free (subdir); + + convfn = fnx_fromfs (dp->d_name, D_NAMLEN (dp)); + if (strmatch (pat, convfn, mflags) != FNM_NOMATCH) + { + if (nalloca < ALLOCA_MAX) + { + nextlink = (struct globval *) alloca (sizeof (struct globval)); + nalloca += sizeof (struct globval); + } + else + { + nextlink = (struct globval *) malloc (sizeof (struct globval)); + if (firstmalloc == 0) + firstmalloc = nextlink; + } + + nextname = (char *) malloc (D_NAMLEN (dp) + 1); + if (nextlink == 0 || nextname == 0) + { + FREE (nextlink); + FREE (nextname); + lose = 1; + break; + } + nextlink->next = lastlink; + lastlink = nextlink; + nextlink->name = nextname; + bcopy (dp->d_name, nextname, D_NAMLEN (dp) + 1); + ++count; + } + } + + (void) closedir (d); + } + + /* compat: if GX_ADDCURDIR, add the passed directory also. Add an empty + directory name as a placeholder if GX_NULLDIR (in which case the passed + directory name is "."). */ + if (add_current) + { + sdlen = strlen (dir); + nextname = (char *)malloc (sdlen + 1); + nextlink = (struct globval *) malloc (sizeof (struct globval)); + if (nextlink == 0 || nextname == 0) + { + FREE (nextlink); + FREE (nextname); + lose = 1; + } + else + { + nextlink->name = nextname; + nextlink->next = lastlink; + lastlink = nextlink; + if (flags & GX_NULLDIR) + nextname[0] = '\0'; + else + bcopy (dir, nextname, sdlen + 1); + ++count; + } + } + + if (lose == 0) + { + name_vector = (char **) malloc ((count + 1) * sizeof (char *)); + lose |= name_vector == NULL; + } + + /* Have we run out of memory? */ + if (lose) + { + tmplink = 0; + + /* Here free the strings we have got. */ + while (lastlink) + { + /* Since we build the list in reverse order, the first N entries + will be allocated with malloc, if firstmalloc is set, from + lastlink to firstmalloc. */ + if (firstmalloc) + { + if (lastlink == firstmalloc) + firstmalloc = 0; + tmplink = lastlink; + } + else + tmplink = 0; + free (lastlink->name); + lastlink = lastlink->next; + FREE (tmplink); + } + + /* Don't call QUIT; here; let higher layers deal with it. */ + + return ((char **)NULL); + } + + /* Copy the name pointers from the linked list into the vector. */ + for (tmplink = lastlink, i = 0; i < count; ++i) + { + name_vector[i] = tmplink->name; + tmplink = tmplink->next; + } + + name_vector[count] = NULL; + + /* If we allocated some of the struct globvals, free them now. */ + if (firstmalloc) + { + tmplink = 0; + while (lastlink) + { + tmplink = lastlink; + if (lastlink == firstmalloc) + lastlink = firstmalloc = 0; + else + lastlink = lastlink->next; + free (tmplink); + } + } + + return (name_vector); +} + +/* Return a new array which is the concatenation of each string in ARRAY + to DIR. This function expects you to pass in an allocated ARRAY, and + it takes care of free()ing that array. Thus, you might think of this + function as side-effecting ARRAY. This should handle GX_MARKDIRS. */ +static char ** +glob_dir_to_array (dir, array, flags) + char *dir, **array; + int flags; +{ + register unsigned int i, l; + int add_slash; + char **result, *new; + struct stat sb; + + l = strlen (dir); + if (l == 0) + { + if (flags & GX_MARKDIRS) + for (i = 0; array[i]; i++) + { + if ((stat (array[i], &sb) == 0) && S_ISDIR (sb.st_mode)) + { + l = strlen (array[i]); + new = (char *)realloc (array[i], l + 2); + if (new == 0) + return NULL; + new[l] = '/'; + new[l+1] = '\0'; + array[i] = new; + } + } + return (array); + } + + add_slash = dir[l - 1] != '/'; + + i = 0; + while (array[i] != NULL) + ++i; + + result = (char **) malloc ((i + 1) * sizeof (char *)); + if (result == NULL) + return (NULL); + + for (i = 0; array[i] != NULL; i++) + { + /* 3 == 1 for NUL, 1 for slash at end of DIR, 1 for GX_MARKDIRS */ + result[i] = (char *) malloc (l + strlen (array[i]) + 3); + + if (result[i] == NULL) + { + int ind; + for (ind = 0; ind < i; ind++) + free (result[ind]); + free (result); + return (NULL); + } + + strcpy (result[i], dir); + if (add_slash) + result[i][l] = '/'; + if (array[i][0]) + { + strcpy (result[i] + l + add_slash, array[i]); + if (flags & GX_MARKDIRS) + { + if ((stat (result[i], &sb) == 0) && S_ISDIR (sb.st_mode)) + { + size_t rlen; + rlen = strlen (result[i]); + result[i][rlen] = '/'; + result[i][rlen+1] = '\0'; + } + } + } + else + result[i][l+add_slash] = '\0'; + } + result[i] = NULL; + + /* Free the input array. */ + for (i = 0; array[i] != NULL; i++) + free (array[i]); + free ((char *) array); + + return (result); +} + +/* Do globbing on PATHNAME. Return an array of pathnames that match, + marking the end of the array with a null-pointer as an element. + If no pathnames match, then the array is empty (first element is null). + If there isn't enough memory, then return NULL. + If a file system error occurs, return -1; `errno' has the error code. */ +char ** +glob_filename (pathname, flags) + char *pathname; + int flags; +{ + char **result, **new_result; + unsigned int result_size; + char *directory_name, *filename, *dname, *fn; + unsigned int directory_len; + int free_dirname; /* flag */ + int dflags, hasglob; + + result = (char **) malloc (sizeof (char *)); + result_size = 1; + if (result == NULL) + return (NULL); + + result[0] = NULL; + + directory_name = NULL; + + /* Find the filename. */ + filename = strrchr (pathname, '/'); +#if defined (EXTENDED_GLOB) + if (filename && extended_glob) + { + fn = glob_dirscan (pathname, '/'); +#if DEBUG_MATCHING + if (fn != filename) + fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) != filename (%s)\n", fn ? fn : "(null)", filename); +#endif + filename = fn; + } +#endif + + if (filename == NULL) + { + filename = pathname; + directory_name = ""; + directory_len = 0; + free_dirname = 0; + } + else + { + directory_len = (filename - pathname) + 1; + directory_name = (char *) malloc (directory_len + 1); + + if (directory_name == 0) /* allocation failed? */ + { + free (result); + return (NULL); + } + + bcopy (pathname, directory_name, directory_len); + directory_name[directory_len] = '\0'; + ++filename; + free_dirname = 1; + } + + hasglob = 0; + /* If directory_name contains globbing characters, then we + have to expand the previous levels. Just recurse. + If glob_pattern_p returns != [0,1] we have a pattern that has backslash + quotes but no unquoted glob pattern characters. We dequote it below. */ + if (directory_len > 0 && (hasglob = glob_pattern_p (directory_name)) == 1) + { + char **directories, *d, *p; + register unsigned int i; + int all_starstar, last_starstar; + + all_starstar = last_starstar = 0; + d = directory_name; + dflags = flags & ~GX_MARKDIRS; + /* Collapse a sequence of ** patterns separated by one or more slashes + to a single ** terminated by a slash or NUL */ + if ((flags & GX_GLOBSTAR) && d[0] == '*' && d[1] == '*' && (d[2] == '/' || d[2] == '\0')) + { + p = d; + while (d[0] == '*' && d[1] == '*' && (d[2] == '/' || d[2] == '\0')) + { + p = d; + if (d[2]) + { + d += 3; + while (*d == '/') + d++; + if (*d == 0) + break; + } + } + if (*d == 0) + all_starstar = 1; + d = p; + dflags |= GX_ALLDIRS|GX_ADDCURDIR; + directory_len = strlen (d); + } + + /* If there is a non [star][star]/ component in directory_name, we + still need to collapse trailing sequences of [star][star]/ into + a single one and note that the directory name ends with [star][star], + so we can compensate if filename is [star][star] */ + if ((flags & GX_GLOBSTAR) && all_starstar == 0) + { + int dl, prev; + prev = dl = directory_len; + while (dl >= 4 && d[dl - 1] == '/' && + d[dl - 2] == '*' && + d[dl - 3] == '*' && + d[dl - 4] == '/') + prev = dl, dl -= 3; + if (dl != directory_len) + last_starstar = 1; + directory_len = prev; + } + + /* If the directory name ends in [star][star]/ but the filename is + [star][star], just remove the final [star][star] from the directory + so we don't have to scan everything twice. */ + if (last_starstar && directory_len > 4 && + filename[0] == '*' && filename[1] == '*' && filename[2] == 0) + { + directory_len -= 3; + } + + if (d[directory_len - 1] == '/') + d[directory_len - 1] = '\0'; + + directories = glob_filename (d, dflags|GX_RECURSE); + + if (free_dirname) + { + free (directory_name); + directory_name = NULL; + } + + if (directories == NULL) + goto memory_error; + else if (directories == (char **)&glob_error_return) + { + free ((char *) result); + return ((char **) &glob_error_return); + } + else if (*directories == NULL) + { + free ((char *) directories); + free ((char *) result); + return ((char **) &glob_error_return); + } + + /* If we have something like [star][star]/[star][star], it's no use to + glob **, then do it again, and throw half the results away. */ + if (all_starstar && filename[0] == '*' && filename[1] == '*' && filename[2] == 0) + { + free ((char *) directories); + free (directory_name); + directory_name = NULL; + directory_len = 0; + goto only_filename; + } + + /* We have successfully globbed the preceding directory name. + For each name in DIRECTORIES, call glob_vector on it and + FILENAME. Concatenate the results together. */ + for (i = 0; directories[i] != NULL; ++i) + { + char **temp_results; + int shouldbreak; + + shouldbreak = 0; + /* XXX -- we've recursively scanned any directories resulting from + a `**', so turn off the flag. We turn it on again below if + filename is `**' */ + /* Scan directory even on a NULL filename. That way, `*h/' + returns only directories ending in `h', instead of all + files ending in `h' with a `/' appended. */ + dname = directories[i]; + dflags = flags & ~(GX_MARKDIRS|GX_ALLDIRS|GX_ADDCURDIR); + /* last_starstar? */ + if ((flags & GX_GLOBSTAR) && filename[0] == '*' && filename[1] == '*' && filename[2] == '\0') + dflags |= GX_ALLDIRS|GX_ADDCURDIR; + if (dname[0] == '\0' && filename[0]) + { + dflags |= GX_NULLDIR; + dname = "."; /* treat null directory name and non-null filename as current directory */ + } + + /* Special handling for symlinks to directories with globstar on */ + if (all_starstar && (dflags & GX_NULLDIR) == 0) + { + int dlen; + + /* If we have a directory name that is not null (GX_NULLDIR above) + and is a symlink to a directory, we return the symlink if + we're not `descending' into it (filename[0] == 0) and return + glob_error_return (which causes the code below to skip the + name) otherwise. I should fold this into a test that does both + checks instead of calling stat twice. */ + if (glob_testdir (dname, flags|GX_ALLDIRS) == -2 && glob_testdir (dname, 0) == 0) + { + if (filename[0] != 0) + temp_results = (char **)&glob_error_return; /* skip */ + else + { + /* Construct array to pass to glob_dir_to_array */ + temp_results = (char **)malloc (2 * sizeof (char *)); + if (temp_results == NULL) + goto memory_error; + temp_results[0] = (char *)malloc (1); + if (temp_results[0] == 0) + { + free (temp_results); + goto memory_error; + } + **temp_results = '\0'; + temp_results[1] = NULL; + dflags |= GX_SYMLINK; /* mostly for debugging */ + } + } + else + temp_results = glob_vector (filename, dname, dflags); + } + else + temp_results = glob_vector (filename, dname, dflags); + + /* Handle error cases. */ + if (temp_results == NULL) + goto memory_error; + else if (temp_results == (char **)&glob_error_return) + /* This filename is probably not a directory. Ignore it. */ + ; + else + { + char **array; + register unsigned int l; + + /* If we're expanding **, we don't need to glue the directory + name to the results; we've already done it in glob_vector */ + if ((dflags & GX_ALLDIRS) && filename[0] == '*' && filename[1] == '*' && (filename[2] == '\0' || filename[2] == '/')) + { + /* When do we remove null elements from temp_results? And + how to avoid duplicate elements in the final result? */ + /* If (dflags & GX_NULLDIR) glob_filename potentially left a + NULL placeholder in the temp results just in case + glob_vector/glob_dir_to_array did something with it, but + if it didn't, and we're not supposed to be passing them + through for some reason ((flags & GX_NULLDIR) == 0) we + need to remove all the NULL elements from the beginning + of TEMP_RESULTS. */ + /* If we have a null directory name and ** as the filename, + we have just searched for everything from the current + directory on down. Break now (shouldbreak = 1) to avoid + duplicate entries in the final result. */ +#define NULL_PLACEHOLDER(x) ((x) && *(x) && **(x) == 0) + if ((dflags & GX_NULLDIR) && (flags & GX_NULLDIR) == 0 && + NULL_PLACEHOLDER (temp_results)) +#undef NULL_PLACEHOLDER + { + register int i, n; + for (n = 0; temp_results[n] && *temp_results[n] == 0; n++) + ; + i = n; + do + temp_results[i - n] = temp_results[i]; + while (temp_results[i++] != 0); + array = temp_results; + shouldbreak = 1; + } + else + array = temp_results; + } + else if (dflags & GX_SYMLINK) + array = glob_dir_to_array (directories[i], temp_results, flags); + else + array = glob_dir_to_array (directories[i], temp_results, flags); + l = 0; + while (array[l] != NULL) + ++l; + + new_result = (char **)realloc (result, (result_size + l) * sizeof (char *)); + + if (new_result == NULL) + { + for (l = 0; array[l]; ++l) + free (array[l]); + free ((char *)array); + goto memory_error; + } + result = new_result; + + for (l = 0; array[l] != NULL; ++l) + result[result_size++ - 1] = array[l]; + + result[result_size - 1] = NULL; + + /* Note that the elements of ARRAY are not freed. */ + if (array != temp_results) + free ((char *) array); + else if ((dflags & GX_ALLDIRS) && filename[0] == '*' && filename[1] == '*' && filename[2] == '\0') + free (temp_results); /* expanding ** case above */ + + if (shouldbreak) + break; + } + } + /* Free the directories. */ + for (i = 0; directories[i]; i++) + free (directories[i]); + + free ((char *) directories); + + return (result); + } + +only_filename: + /* If there is only a directory name, return it. */ + if (*filename == '\0') + { + result = (char **) realloc ((char *) result, 2 * sizeof (char *)); + if (result == NULL) + { + if (free_dirname) + free (directory_name); + return (NULL); + } + /* If we have a directory name with quoted characters, and we are + being called recursively to glob the directory portion of a pathname, + we need to dequote the directory name before returning it so the + caller can read the directory */ + if (directory_len > 0 && hasglob == 2 && (flags & GX_RECURSE) != 0) + { + dequote_pathname (directory_name); + directory_len = strlen (directory_name); + } + + /* We could check whether or not the dequoted directory_name is a + directory and return it here, returning the original directory_name + if not, but we don't do that. We do return the dequoted directory + name if we're not being called recursively and the dequoted name + corresponds to an actual directory. For better backwards compatibility, + we can return &glob_error_return unconditionally in this case. */ + + if (directory_len > 0 && hasglob == 2 && (flags & GX_RECURSE) == 0) + { + dequote_pathname (directory_name); + if (glob_testdir (directory_name, 0) < 0) + { + if (free_dirname) + free (directory_name); + return ((char **)&glob_error_return); + } + } + + /* Handle GX_MARKDIRS here. */ + result[0] = (char *) malloc (directory_len + 1); + if (result[0] == NULL) + goto memory_error; + bcopy (directory_name, result[0], directory_len + 1); + if (free_dirname) + free (directory_name); + result[1] = NULL; + return (result); + } + else + { + char **temp_results; + + /* There are no unquoted globbing characters in DIRECTORY_NAME. + Dequote it before we try to open the directory since there may + be quoted globbing characters which should be treated verbatim. */ + if (directory_len > 0) + dequote_pathname (directory_name); + + /* We allocated a small array called RESULT, which we won't be using. + Free that memory now. */ + free (result); + + /* Just return what glob_vector () returns appended to the + directory name. */ + /* If flags & GX_ALLDIRS, we're called recursively */ + dflags = flags & ~GX_MARKDIRS; + if (directory_len == 0) + dflags |= GX_NULLDIR; + if ((flags & GX_GLOBSTAR) && filename[0] == '*' && filename[1] == '*' && filename[2] == '\0') + { + dflags |= GX_ALLDIRS|GX_ADDCURDIR; +#if 0 + /* If we want all directories (dflags & GX_ALLDIRS) and we're not + being called recursively as something like `echo [star][star]/[star].o' + ((flags & GX_ALLDIRS) == 0), we want to prevent glob_vector from + adding a null directory name to the front of the temp_results + array. We turn off ADDCURDIR if not called recursively and + dlen == 0 */ +#endif + if (directory_len == 0 && (flags & GX_ALLDIRS) == 0) + dflags &= ~GX_ADDCURDIR; + } + temp_results = glob_vector (filename, + (directory_len == 0 ? "." : directory_name), + dflags); + + if (temp_results == NULL || temp_results == (char **)&glob_error_return) + { + if (free_dirname) + free (directory_name); + QUIT; /* XXX - shell */ + run_pending_traps (); + return (temp_results); + } + + result = glob_dir_to_array ((dflags & GX_ALLDIRS) ? "" : directory_name, temp_results, flags); + + if (free_dirname) + free (directory_name); + return (result); + } + + /* We get to memory_error if the program has run out of memory, or + if this is the shell, and we have been interrupted. */ + memory_error: + if (result != NULL) + { + register unsigned int i; + for (i = 0; result[i] != NULL; ++i) + free (result[i]); + free ((char *) result); + } + + if (free_dirname && directory_name) + free (directory_name); + + QUIT; + run_pending_traps (); + + return (NULL); +} + +#if defined (TEST) + +main (argc, argv) + int argc; + char **argv; +{ + unsigned int i; + + for (i = 1; i < argc; ++i) + { + char **value = glob_filename (argv[i], 0); + if (value == NULL) + puts ("Out of memory."); + else if (value == &glob_error_return) + perror (argv[i]); + else + for (i = 0; value[i] != NULL; i++) + puts (value[i]); + } + + exit (0); +} +#endif /* TEST. */ diff --git a/bash-5.1/lib/glob/glob.h b/bash-5.1/lib/glob/glob.h new file mode 100644 index 0000000..ca3a66c --- /dev/null +++ b/bash-5.1/lib/glob/glob.h @@ -0,0 +1,46 @@ +/* File-name wildcard pattern matching for GNU. + Copyright (C) 1985-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _GLOB_H_ +#define _GLOB_H_ + +#include "stdc.h" + +#define GX_MARKDIRS 0x001 /* mark directory names with trailing `/' */ +#define GX_NOCASE 0x002 /* ignore case */ +#define GX_MATCHDOT 0x004 /* match `.' literally */ +#define GX_MATCHDIRS 0x008 /* match only directory names */ +#define GX_ALLDIRS 0x010 /* match all directory names, no others */ +#define GX_NULLDIR 0x100 /* internal -- no directory preceding pattern */ +#define GX_ADDCURDIR 0x200 /* internal -- add passed directory name */ +#define GX_GLOBSTAR 0x400 /* turn on special handling of ** */ +#define GX_RECURSE 0x800 /* internal -- glob_filename called recursively */ +#define GX_SYMLINK 0x1000 /* internal -- symlink to a directory */ + +extern int glob_pattern_p PARAMS((const char *)); +extern char **glob_vector PARAMS((char *, char *, int)); +extern char **glob_filename PARAMS((char *, int)); + +extern int extglob_pattern_p PARAMS((const char *)); + +extern char *glob_error_return; +extern int noglob_dot_filenames; +extern int glob_ignore_case; + +#endif /* _GLOB_H_ */ diff --git a/bash-5.1/lib/glob/glob_loop.c b/bash-5.1/lib/glob/glob_loop.c new file mode 100644 index 0000000..467e7ae --- /dev/null +++ b/bash-5.1/lib/glob/glob_loop.c @@ -0,0 +1,84 @@ +/* Copyright (C) 1991-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +static int INTERNAL_GLOB_PATTERN_P PARAMS((const GCHAR *)); + +/* Return nonzero if PATTERN has any special globbing chars in it. + Compiled twice, once each for single-byte and multibyte characters. */ +static int +INTERNAL_GLOB_PATTERN_P (pattern) + const GCHAR *pattern; +{ + register const GCHAR *p; + register GCHAR c; + int bopen, bsquote; + + p = pattern; + bopen = bsquote = 0; + + while ((c = *p++) != L('\0')) + switch (c) + { + case L('?'): + case L('*'): + return 1; + + case L('['): /* Only accept an open brace if there is a close */ + bopen++; /* brace to match it. Bracket expressions must be */ + continue; /* complete, according to Posix.2 */ + case L(']'): + if (bopen) + return 1; + continue; + + case L('+'): /* extended matching operators */ + case L('@'): + case L('!'): + if (*p == L('(')) /*) */ + return 1; + continue; + + case L('\\'): + /* Don't let the pattern end in a backslash (GMATCH returns no match + if the pattern ends in a backslash anyway), but otherwise note that + we have seen this, since the matching engine uses backslash as an + escape character and it can be removed. We return 2 later if we + have seen only backslash-escaped characters, so interested callers + know they can shortcut and just dequote the pathname. */ + if (*p != L('\0')) + { + p++; + bsquote = 1; + continue; + } + else /* (*p == L('\0')) */ + return 0; + } + +#if 0 + return bsquote ? 2 : 0; +#else + return (0); +#endif +} + +#undef INTERNAL_GLOB_PATTERN_P +#undef L +#undef INT +#undef CHAR +#undef GCHAR diff --git a/bash-5.1/lib/glob/gm_loop.c b/bash-5.1/lib/glob/gm_loop.c new file mode 100644 index 0000000..ac516f8 --- /dev/null +++ b/bash-5.1/lib/glob/gm_loop.c @@ -0,0 +1,208 @@ +/* Copyright (C) 1991-2017 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if EXTENDED_GLOB +int +EXTGLOB_PATTERN_P (pat) + const CHAR *pat; +{ + switch (pat[0]) + { + case L('*'): + case L('+'): + case L('!'): + case L('@'): + case L('?'): + return (pat[1] == L('(')); /* ) */ + default: + return 0; + } + + return 0; +} +#endif + +/* Return 1 of the first character of STRING could match the first + character of pattern PAT. Compiled to both single and wiide character + versions. FLAGS is a subset of strmatch flags; used to do case-insensitive + matching for now. */ +int +MATCH_PATTERN_CHAR (pat, string, flags) + CHAR *pat, *string; + int flags; +{ + CHAR c; + + if (*string == 0) + return (*pat == L('*')); /* XXX - allow only * to match empty string */ + + switch (c = *pat++) + { + default: + return (FOLD(*string) == FOLD(c)); + case L('\\'): + return (FOLD(*string) == FOLD(*pat)); + case L('?'): + return (*pat == L('(') ? 1 : (*string != L'\0')); + case L('*'): + return (1); + case L('+'): + case L('!'): + case L('@'): + return (*pat == L('(') ? 1 : (FOLD(*string) == FOLD(c))); + case L('['): + return (*string != L('\0')); + } +} + +int +MATCHLEN (pat, max) + CHAR *pat; + size_t max; +{ + CHAR c; + int matlen, bracklen, t, in_cclass, in_collsym, in_equiv; + + if (*pat == 0) + return (0); + + matlen = in_cclass = in_collsym = in_equiv = 0; + while (c = *pat++) + { + switch (c) + { + default: + matlen++; + break; + case L('\\'): + if (*pat == 0) + return ++matlen; + else + { + matlen++; + pat++; + } + break; + case L('?'): + if (*pat == LPAREN) + return (matlen = -1); /* XXX for now */ + else + matlen++; + break; + case L('*'): + return (matlen = -1); + case L('+'): + case L('!'): + case L('@'): + if (*pat == LPAREN) + return (matlen = -1); /* XXX for now */ + else + matlen++; + break; + case L('['): + /* scan for ending `]', skipping over embedded [:...:] */ + bracklen = 1; + c = *pat++; + do + { + if (c == 0) + { + pat--; /* back up to NUL */ + matlen += bracklen; + goto bad_bracket; + } + else if (c == L('\\')) + { + /* *pat == backslash-escaped character */ + bracklen++; + /* If the backslash or backslash-escape ends the string, + bail. The ++pat skips over the backslash escape */ + if (*pat == 0 || *++pat == 0) + { + matlen += bracklen; + goto bad_bracket; + } + } + else if (c == L('[') && *pat == L(':')) /* character class */ + { + pat++; + bracklen++; + in_cclass = 1; + } + else if (in_cclass && c == L(':') && *pat == L(']')) + { + pat++; + bracklen++; + in_cclass = 0; + } + else if (c == L('[') && *pat == L('.')) /* collating symbol */ + { + pat++; + bracklen++; + if (*pat == L(']')) /* right bracket can appear as collating symbol */ + { + pat++; + bracklen++; + } + in_collsym = 1; + } + else if (in_collsym && c == L('.') && *pat == L(']')) + { + pat++; + bracklen++; + in_collsym = 0; + } + else if (c == L('[') && *pat == L('=')) /* equivalence class */ + { + pat++; + bracklen++; + if (*pat == L(']')) /* right bracket can appear as equivalence class */ + { + pat++; + bracklen++; + } + in_equiv = 1; + } + else if (in_equiv && c == L('=') && *pat == L(']')) + { + pat++; + bracklen++; + in_equiv = 0; + } + else + bracklen++; + } + while ((c = *pat++) != L(']')); + matlen++; /* bracket expression can only match one char */ +bad_bracket: + break; + } + } + + return matlen; +} + +#undef EXTGLOB_PATTERN_P +#undef MATCH_PATTERN_CHAR +#undef MATCHLEN +#undef FOLD +#undef L +#undef LPAREN +#undef RPAREN +#undef INT +#undef CHAR diff --git a/bash-5.1/lib/glob/gmisc.c b/bash-5.1/lib/glob/gmisc.c new file mode 100644 index 0000000..f3d74ce --- /dev/null +++ b/bash-5.1/lib/glob/gmisc.c @@ -0,0 +1,108 @@ +/* gmisc.c -- miscellaneous pattern matching utility functions for Bash. + + Copyright (C) 2010-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" +#include "shmbutil.h" +#include "chartypes.h" + +#include "stdc.h" + +#ifndef FNM_CASEFOLD +# include "strmatch.h" +#endif +#include "glob.h" + +/* Make sure these names continue to agree with what's in smatch.c */ +extern char *glob_patscan PARAMS((char *, char *, int)); + +/* Compile `gm_loop.c' for single-byte characters. */ +#define CHAR char +#define INT int +#define L(CS) CS +#define EXTGLOB_PATTERN_P extglob_pattern_p +#define MATCH_PATTERN_CHAR match_pattern_char +#define MATCHLEN umatchlen +#define FOLD(c) ((flags & FNM_CASEFOLD) \ + ? TOLOWER ((unsigned char)c) \ + : ((unsigned char)c)) +#ifndef LPAREN +#define LPAREN '(' +#define RPAREN ')' +#endif +#include "gm_loop.c" + +/* Compile `gm_loop.c' again for multibyte characters. */ +#if HANDLE_MULTIBYTE + +#define CHAR wchar_t +#define INT wint_t +#define L(CS) L##CS +#define EXTGLOB_PATTERN_P wextglob_pattern_p +#define MATCH_PATTERN_CHAR match_pattern_wchar +#define MATCHLEN wmatchlen + +#define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c)) +#define LPAREN L'(' +#define RPAREN L')' +#include "gm_loop.c" + +#endif /* HANDLE_MULTIBYTE */ + + +#if defined (EXTENDED_GLOB) +/* Skip characters in PAT and return the final occurrence of DIRSEP. This + is only called when extended_glob is set, so we have to skip over extglob + patterns x(...) */ +char * +glob_dirscan (pat, dirsep) + char *pat; + int dirsep; +{ + char *p, *d, *pe, *se; + + d = pe = se = 0; + for (p = pat; p && *p; p++) + { + if (extglob_pattern_p (p)) + { + if (se == 0) + se = p + strlen (p) - 1; + pe = glob_patscan (p + 2, se, 0); + if (pe == 0) + continue; + else if (*pe == 0) + break; + p = pe - 1; /* will do increment above */ + continue; + } + if (*p == dirsep) + d = p; + } + return d; +} +#endif /* EXTENDED_GLOB */ diff --git a/bash-5.1/lib/glob/ndir.h b/bash-5.1/lib/glob/ndir.h new file mode 100644 index 0000000..31261eb --- /dev/null +++ b/bash-5.1/lib/glob/ndir.h @@ -0,0 +1,50 @@ +/* -- definitions for 4.2BSD-compatible directory access. + last edit: 09-Jul-1983 D A Gwyn. */ + +#if defined (VMS) +# if !defined (FAB$C_BID) +# include +# endif +# if !defined (NAM$C_BID) +# include +# endif +# if !defined (RMS$_SUC) +# include +# endif +# include "dir.h" +#endif /* VMS */ + +/* Size of directory block. */ +#define DIRBLKSIZ 512 + +/* NOTE: MAXNAMLEN must be one less than a multiple of 4 */ + +#if defined (VMS) +# define MAXNAMLEN (DIR$S_NAME + 7) /* 80 plus room for version #. */ +# define MAXFULLSPEC NAM$C_MAXRSS /* Maximum full spec */ +#else +# define MAXNAMLEN 15 /* Maximum filename length. */ +#endif /* VMS */ + +/* Data from readdir (). */ +struct direct { + long d_ino; /* Inode number of entry. */ + unsigned short d_reclen; /* Length of this record. */ + unsigned short d_namlen; /* Length of string in d_name. */ + char d_name[MAXNAMLEN + 1]; /* Name of file. */ +}; + +/* Stream data from opendir (). */ +typedef struct { + int dd_fd; /* File descriptor. */ + int dd_loc; /* Offset in block. */ + int dd_size; /* Amount of valid data. */ + char dd_buf[DIRBLKSIZ]; /* Directory block. */ +} DIR; + +extern DIR *opendir (); +extern struct direct *readdir (); +extern long telldir (); +extern void seekdir (), closedir (); + +#define rewinddir(dirp) seekdir (dirp, 0L) diff --git a/bash-5.1/lib/glob/sm_loop.c b/bash-5.1/lib/glob/sm_loop.c new file mode 100644 index 0000000..a98c14b --- /dev/null +++ b/bash-5.1/lib/glob/sm_loop.c @@ -0,0 +1,942 @@ +/* Copyright (C) 1991-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +struct STRUCT +{ + CHAR *pattern; + CHAR *string; +}; + +int FCT PARAMS((CHAR *, CHAR *, int)); + +static int GMATCH PARAMS((CHAR *, CHAR *, CHAR *, CHAR *, struct STRUCT *, int)); +static CHAR *PARSE_COLLSYM PARAMS((CHAR *, INT *)); +static CHAR *BRACKMATCH PARAMS((CHAR *, U_CHAR, int)); +static int EXTMATCH PARAMS((INT, CHAR *, CHAR *, CHAR *, CHAR *, int)); + +extern void DEQUOTE_PATHNAME PARAMS((CHAR *)); + +/*static*/ CHAR *PATSCAN PARAMS((CHAR *, CHAR *, INT)); + +int +FCT (pattern, string, flags) + CHAR *pattern; + CHAR *string; + int flags; +{ + CHAR *se, *pe; + + if (string == 0 || pattern == 0) + return FNM_NOMATCH; + + se = string + STRLEN ((XCHAR *)string); + pe = pattern + STRLEN ((XCHAR *)pattern); + + return (GMATCH (string, se, pattern, pe, (struct STRUCT *)NULL, flags)); +} + +/* Match STRING against the filename pattern PATTERN, returning zero if + it matches, FNM_NOMATCH if not. */ +static int +GMATCH (string, se, pattern, pe, ends, flags) + CHAR *string, *se; + CHAR *pattern, *pe; + struct STRUCT *ends; + int flags; +{ + CHAR *p, *n; /* pattern, string */ + INT c; /* current pattern character - XXX U_CHAR? */ + INT sc; /* current string character - XXX U_CHAR? */ + + p = pattern; + n = string; + + if (string == 0 || pattern == 0) + return FNM_NOMATCH; + +#if DEBUG_MATCHING +fprintf(stderr, "gmatch: string = %s; se = %s\n", string, se); +fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); +#endif + + while (p < pe) + { + c = *p++; + c = FOLD (c); + + sc = n < se ? *n : '\0'; + +#ifdef EXTENDED_GLOB + /* EXTMATCH () will handle recursively calling GMATCH, so we can + just return what EXTMATCH() returns. */ + if ((flags & FNM_EXTMATCH) && *p == L('(') && + (c == L('+') || c == L('*') || c == L('?') || c == L('@') || c == L('!'))) /* ) */ + { + int lflags; + /* If we're not matching the start of the string, we're not + concerned about the special cases for matching `.' */ + lflags = (n == string) ? flags : (flags & ~FNM_PERIOD); + return (EXTMATCH (c, n, se, p, pe, lflags)); + } +#endif /* EXTENDED_GLOB */ + + switch (c) + { + case L('?'): /* Match single character */ + if (sc == '\0') + return FNM_NOMATCH; + else if ((flags & FNM_PATHNAME) && sc == L('/')) + /* If we are matching a pathname, `?' can never match a `/'. */ + return FNM_NOMATCH; + else if ((flags & FNM_PERIOD) && sc == L('.') && + (n == string || ((flags & FNM_PATHNAME) && n[-1] == L('/')))) + /* `?' cannot match a `.' if it is the first character of the + string or if it is the first character following a slash and + we are matching a pathname. */ + return FNM_NOMATCH; + break; + + case L('\\'): /* backslash escape removes special meaning */ + if (p == pe && sc == '\\' && (n+1 == se)) + break; + + if (p == pe) + return FNM_NOMATCH; + + if ((flags & FNM_NOESCAPE) == 0) + { + c = *p++; + /* A trailing `\' cannot match. */ + if (p > pe) + return FNM_NOMATCH; + c = FOLD (c); + } + if (FOLD (sc) != (U_CHAR)c) + return FNM_NOMATCH; + break; + + case L('*'): /* Match zero or more characters */ + /* See below for the reason for using this. It avoids backtracking + back to a previous `*'. Picked up from glibc. */ + if (ends != NULL) + { + ends->pattern = p - 1; + ends->string = n; + return (0); + } + + if ((flags & FNM_PERIOD) && sc == L('.') && + (n == string || ((flags & FNM_PATHNAME) && n[-1] == L('/')))) + /* `*' cannot match a `.' if it is the first character of the + string or if it is the first character following a slash and + we are matching a pathname. */ + return FNM_NOMATCH; + + if (p == pe) + return 0; + + /* Collapse multiple consecutive `*' and `?', but make sure that + one character of the string is consumed for each `?'. */ + for (c = *p++; (c == L('?') || c == L('*')); c = *p++) + { + if ((flags & FNM_PATHNAME) && sc == L('/')) + /* A slash does not match a wildcard under FNM_PATHNAME. */ + return FNM_NOMATCH; +#ifdef EXTENDED_GLOB + else if ((flags & FNM_EXTMATCH) && c == L('?') && *p == L('(')) /* ) */ + { + CHAR *newn; + + /* We can match 0 or 1 times. If we match, return success */ + if (EXTMATCH (c, n, se, p, pe, flags) == 0) + return (0); + + /* We didn't match the extended glob pattern, but + that's OK, since we can match 0 or 1 occurrences. + We need to skip the glob pattern and see if we + match the rest of the string. */ + newn = PATSCAN (p + 1, pe, 0); + /* If NEWN is 0, we have an ill-formed pattern. */ + p = newn ? newn : pe; + } +#endif + else if (c == L('?')) + { + if (sc == L('\0')) + return FNM_NOMATCH; + /* One character of the string is consumed in matching + this ? wildcard, so *??? won't match if there are + fewer than three characters. */ + n++; + sc = n < se ? *n : '\0'; + } + +#ifdef EXTENDED_GLOB + /* Handle ******(patlist) */ + if ((flags & FNM_EXTMATCH) && c == L('*') && *p == L('(')) /*)*/ + { + CHAR *newn; + /* We need to check whether or not the extended glob + pattern matches the remainder of the string. + If it does, we match the entire pattern. */ + for (newn = n; newn < se; ++newn) + { + if (EXTMATCH (c, newn, se, p, pe, flags) == 0) + return (0); + } + /* We didn't match the extended glob pattern, but + that's OK, since we can match 0 or more occurrences. + We need to skip the glob pattern and see if we + match the rest of the string. */ + newn = PATSCAN (p + 1, pe, 0); + /* If NEWN is 0, we have an ill-formed pattern. */ + p = newn ? newn : pe; + } +#endif + if (p == pe) + break; + } + + /* The wildcards are the last element of the pattern. The name + cannot match completely if we are looking for a pathname and + it contains another slash, unless FNM_LEADING_DIR is set. */ + if (c == L('\0')) + { + int r = (flags & FNM_PATHNAME) == 0 ? 0 : FNM_NOMATCH; + if (flags & FNM_PATHNAME) + { + if (flags & FNM_LEADING_DIR) + r = 0; + else if (MEMCHR (n, L('/'), se - n) == NULL) + r = 0; + } + return r; + } + + /* If we've hit the end of the pattern and the last character of + the pattern was handled by the loop above, we've succeeded. + Otherwise, we need to match that last character. */ + if (p == pe && (c == L('?') || c == L('*'))) + return (0); + + /* If we've hit the end of the string and the rest of the pattern + is something that matches the empty string, we can succeed. */ +#if defined (EXTENDED_GLOB) + if (n == se && ((flags & FNM_EXTMATCH) && (c == L('!') || c == L('?')) && *p == L('('))) + { + --p; + if (EXTMATCH (c, n, se, p, pe, flags) == 0) + return (c == L('!') ? FNM_NOMATCH : 0); + return (c == L('!') ? 0 : FNM_NOMATCH); + } +#endif + + /* If we stop at a slash in the pattern and we are looking for a + pathname ([star]/foo), then consume enough of the string to stop + at any slash and then try to match the rest of the pattern. If + the string doesn't contain a slash, fail */ + if (c == L('/') && (flags & FNM_PATHNAME)) + { + while (n < se && *n != L('/')) + ++n; + if (n < se && *n == L('/') && (GMATCH (n+1, se, p, pe, NULL, flags) == 0)) + return 0; + return FNM_NOMATCH; /* XXX */ + } + + /* General case, use recursion. */ + { + U_CHAR c1; + const CHAR *endp; + struct STRUCT end; + + end.pattern = NULL; + endp = MEMCHR (n, (flags & FNM_PATHNAME) ? L('/') : L('\0'), se - n); + if (endp == 0) + endp = se; + + c1 = ((flags & FNM_NOESCAPE) == 0 && c == L('\\')) ? *p : c; + c1 = FOLD (c1); + for (--p; n < endp; ++n) + { + /* Only call strmatch if the first character indicates a + possible match. We can check the first character if + we're not doing an extended glob match. */ + if ((flags & FNM_EXTMATCH) == 0 && c != L('[') && FOLD (*n) != c1) /*]*/ + continue; + + /* If we're doing an extended glob match and the pattern is not + one of the extended glob patterns, we can check the first + character. */ + if ((flags & FNM_EXTMATCH) && p[1] != L('(') && /*)*/ + STRCHR (L("?*+@!"), *p) == 0 && c != L('[') && FOLD (*n) != c1) /*]*/ + continue; + + /* Otherwise, we just recurse. */ + if (GMATCH (n, se, p, pe, &end, flags & ~FNM_PERIOD) == 0) + { + if (end.pattern == NULL) + return (0); + break; + } + } + /* This is a clever idea from glibc, used to avoid backtracking + to a `*' that appears earlier in the pattern. We get away + without saving se and pe because they are always the same, + even in the recursive calls to gmatch */ + if (end.pattern != NULL) + { + p = end.pattern; + n = end.string; + continue; + } + + return FNM_NOMATCH; + } + + case L('['): + { + if (sc == L('\0') || n == se) + return FNM_NOMATCH; + + /* A character class cannot match a `.' if it is the first + character of the string or if it is the first character + following a slash and we are matching a pathname. */ + if ((flags & FNM_PERIOD) && sc == L('.') && + (n == string || ((flags & FNM_PATHNAME) && n[-1] == L('/')))) + return (FNM_NOMATCH); + + p = BRACKMATCH (p, sc, flags); + if (p == 0) + return FNM_NOMATCH; + } + break; + + default: + if ((U_CHAR)c != FOLD (sc)) + return (FNM_NOMATCH); + } + + ++n; + } + + if (n == se) + return (0); + + if ((flags & FNM_LEADING_DIR) && *n == L('/')) + /* The FNM_LEADING_DIR flag says that "foo*" matches "foobar/frobozz". */ + return 0; + + return (FNM_NOMATCH); +} + +/* Parse a bracket expression collating symbol ([.sym.]) starting at P, find + the value of the symbol, and move P past the collating symbol expression. + The value is returned in *VP, if VP is not null. */ +static CHAR * +PARSE_COLLSYM (p, vp) + CHAR *p; + INT *vp; +{ + register int pc; + INT val; + + p++; /* move past the `.' */ + + for (pc = 0; p[pc]; pc++) + if (p[pc] == L('.') && p[pc+1] == L(']')) + break; + if (p[pc] == 0) + { + if (vp) + *vp = INVALID; + return (p + pc); + } + val = COLLSYM (p, pc); + if (vp) + *vp = val; + return (p + pc + 2); +} + +/* Use prototype definition here because of type promotion. */ +static CHAR * +#if defined (PROTOTYPES) +BRACKMATCH (CHAR *p, U_CHAR test, int flags) +#else +BRACKMATCH (p, test, flags) + CHAR *p; + U_CHAR test; + int flags; +#endif +{ + register CHAR cstart, cend, c; + register int not; /* Nonzero if the sense of the character class is inverted. */ + int brcnt, forcecoll, isrange; + INT pc; + CHAR *savep; + CHAR *brchrp; + U_CHAR orig_test; + + orig_test = test; + test = FOLD (orig_test); + + savep = p; + + /* POSIX.2 3.13.1 says that an exclamation mark (`!') shall replace the + circumflex (`^') in its role in a `nonmatching list'. A bracket + expression starting with an unquoted circumflex character produces + unspecified results. This implementation treats the two identically. */ + if (not = (*p == L('!') || *p == L('^'))) + ++p; + + c = *p++; + for (;;) + { + /* Initialize cstart and cend in case `-' is the last + character of the pattern. */ + cstart = cend = c; + forcecoll = 0; + + /* POSIX.2 equivalence class: [=c=]. See POSIX.2 2.8.3.2. Find + the end of the equivalence class, move the pattern pointer past + it, and check for equivalence. XXX - this handles only + single-character equivalence classes, which is wrong, or at + least incomplete. */ + if (c == L('[') && *p == L('=') && p[2] == L('=') && p[3] == L(']')) + { + pc = FOLD (p[1]); + p += 4; + if (COLLEQUIV (test, pc)) + { +/*[*/ /* Move past the closing `]', since the first thing we do at + the `matched:' label is back p up one. */ + p++; + goto matched; + } + else + { + c = *p++; + if (c == L('\0')) + return ((test == L('[')) ? savep : (CHAR *)0); /*]*/ + c = FOLD (c); + continue; + } + } + + /* POSIX.2 character class expression. See POSIX.2 2.8.3.2. */ + if (c == L('[') && *p == L(':')) + { + CHAR *close, *ccname; + + pc = 0; /* make sure invalid char classes don't match. */ + /* Find end of character class name */ + for (close = p + 1; *close != '\0'; close++) + if (*close == L(':') && *(close+1) == L(']')) + break; + + if (*close != L('\0')) + { + ccname = (CHAR *)malloc ((close - p) * sizeof (CHAR)); + if (ccname == 0) + pc = 0; + else + { + bcopy (p + 1, ccname, (close - p - 1) * sizeof (CHAR)); + *(ccname + (close - p - 1)) = L('\0'); + /* As a result of a POSIX discussion, char class names are + allowed to be quoted (?) */ + DEQUOTE_PATHNAME (ccname); + pc = IS_CCLASS (orig_test, (XCHAR *)ccname); + } + if (pc == -1) + { + /* CCNAME is not a valid character class in the current + locale. In addition to noting no match (pc = 0), we have + a choice about what to do with the invalid charclass. + Posix leaves the behavior unspecified, but we're going + to skip over the charclass and keep going instead of + testing ORIG_TEST against each character in the class + string. If we don't want to do that, take out the update + of P. */ + pc = 0; + p = close + 2; + } + else + p = close + 2; /* move past the closing `]' */ + + free (ccname); + } + + if (pc) + { +/*[*/ /* Move past the closing `]', since the first thing we do at + the `matched:' label is back p up one. */ + p++; + goto matched; + } + else + { + /* continue the loop here, since this expression can't be + the first part of a range expression. */ + c = *p++; + if (c == L('\0')) + return ((test == L('[')) ? savep : (CHAR *)0); + else if (c == L(']')) + break; + c = FOLD (c); + continue; + } + } + + /* POSIX.2 collating symbols. See POSIX.2 2.8.3.2. Find the end of + the symbol name, make sure it is terminated by `.]', translate + the name to a character using the external table, and do the + comparison. */ + if (c == L('[') && *p == L('.')) + { + p = PARSE_COLLSYM (p, &pc); + /* An invalid collating symbol cannot be the first point of a + range. If it is, we set cstart to one greater than `test', + so any comparisons later will fail. */ + cstart = (pc == INVALID) ? test + 1 : pc; + forcecoll = 1; + } + + if (!(flags & FNM_NOESCAPE) && c == L('\\')) + { + if (*p == '\0') + return (CHAR *)0; + cstart = cend = *p++; + } + + cstart = cend = FOLD (cstart); + isrange = 0; + + /* POSIX.2 2.8.3.1.2 says: `An expression containing a `[' that + is not preceded by a backslash and is not part of a bracket + expression produces undefined results.' This implementation + treats the `[' as just a character to be matched if there is + not a closing `]'. */ + if (c == L('\0')) + return ((test == L('[')) ? savep : (CHAR *)0); + + c = *p++; + c = FOLD (c); + + if (c == L('\0')) + return ((test == L('[')) ? savep : (CHAR *)0); + + if ((flags & FNM_PATHNAME) && c == L('/')) + /* [/] can never match when matching a pathname. */ + return (CHAR *)0; + + /* This introduces a range, unless the `-' is the last + character of the class. Find the end of the range + and move past it. */ + if (c == L('-') && *p != L(']')) + { + cend = *p++; + if (!(flags & FNM_NOESCAPE) && cend == L('\\')) + cend = *p++; + if (cend == L('\0')) + return (CHAR *)0; + if (cend == L('[') && *p == L('.')) + { + p = PARSE_COLLSYM (p, &pc); + /* An invalid collating symbol cannot be the second part of a + range expression. If we get one, we set cend to one fewer + than the test character to make sure the range test fails. */ + cend = (pc == INVALID) ? test - 1 : pc; + forcecoll = 1; + } + cend = FOLD (cend); + + c = *p++; + + /* POSIX.2 2.8.3.2: ``The ending range point shall collate + equal to or higher than the starting range point; otherwise + the expression shall be treated as invalid.'' Note that this + applies to only the range expression; the rest of the bracket + expression is still checked for matches. */ + if (RANGECMP (cstart, cend, forcecoll) > 0) + { + if (c == L(']')) + break; + c = FOLD (c); + continue; + } + isrange = 1; + } + + if (isrange == 0 && test == cstart) + goto matched; + if (isrange && RANGECMP (test, cstart, forcecoll) >= 0 && RANGECMP (test, cend, forcecoll) <= 0) + goto matched; + + if (c == L(']')) + break; + } + /* No match. */ + return (!not ? (CHAR *)0 : p); + +matched: + /* Skip the rest of the [...] that already matched. */ + c = *--p; + brcnt = 1; + brchrp = 0; + while (brcnt > 0) + { + int oc; + + /* A `[' without a matching `]' is just another character to match. */ + if (c == L('\0')) + return ((test == L('[')) ? savep : (CHAR *)0); + + oc = c; + c = *p++; + if (c == L('[') && (*p == L('=') || *p == L(':') || *p == L('.'))) + { + brcnt++; + brchrp = p++; /* skip over the char after the left bracket */ + if ((c = *p) == L('\0')) + return ((test == L('[')) ? savep : (CHAR *)0); + /* If *brchrp == ':' we should check that the rest of the characters + form a valid character class name. We don't do that yet, but we + keep BRCHRP in case we want to. */ + } + /* We only want to check brchrp if we set it above. */ + else if (c == L(']') && brcnt > 1 && brchrp != 0 && oc == *brchrp) + { + brcnt--; + brchrp = 0; /* just in case */ + } + /* Left bracket loses its special meaning inside a bracket expression. + It is only valid when followed by a `.', `=', or `:', which we check + for above. Technically the right bracket can appear in a collating + symbol, so we check for that here. Otherwise, it terminates the + bracket expression. */ + else if (c == L(']') && (brchrp == 0 || *brchrp != L('.')) && brcnt >= 1) + brcnt = 0; + else if (!(flags & FNM_NOESCAPE) && c == L('\\')) + { + if (*p == '\0') + return (CHAR *)0; + /* XXX 1003.2d11 is unclear if this is right. */ + ++p; + } + } + return (not ? (CHAR *)0 : p); +} + +#if defined (EXTENDED_GLOB) +/* ksh-like extended pattern matching: + + [?*+@!](pat-list) + + where pat-list is a list of one or patterns separated by `|'. Operation + is as follows: + + ?(patlist) match zero or one of the given patterns + *(patlist) match zero or more of the given patterns + +(patlist) match one or more of the given patterns + @(patlist) match exactly one of the given patterns + !(patlist) match anything except one of the given patterns +*/ + +/* Scan a pattern starting at STRING and ending at END, keeping track of + embedded () and []. If DELIM is 0, we scan until a matching `)' + because we're scanning a `patlist'. Otherwise, we scan until we see + DELIM. In all cases, we never scan past END. The return value is the + first character after the matching DELIM or NULL if the pattern is + empty or invalid. */ +/*static*/ CHAR * +PATSCAN (string, end, delim) + CHAR *string, *end; + INT delim; +{ + int pnest, bnest, skip; + INT cchar; + CHAR *s, c, *bfirst; + + pnest = bnest = skip = 0; + cchar = 0; + bfirst = NULL; + + if (string == end) + return (NULL); + + for (s = string; c = *s; s++) + { + if (s >= end) + return (s); + if (skip) + { + skip = 0; + continue; + } + switch (c) + { + case L('\\'): + skip = 1; + break; + + case L('\0'): + return ((CHAR *)NULL); + + /* `[' is not special inside a bracket expression, but it may + introduce one of the special POSIX bracket expressions + ([.SYM.], [=c=], [: ... :]) that needs special handling. */ + case L('['): + if (bnest == 0) + { + bfirst = s + 1; + if (*bfirst == L('!') || *bfirst == L('^')) + bfirst++; + bnest++; + } + else if (s[1] == L(':') || s[1] == L('.') || s[1] == L('=')) + cchar = s[1]; + break; + + /* `]' is not special if it's the first char (after a leading `!' + or `^') in a bracket expression or if it's part of one of the + special POSIX bracket expressions ([.SYM.], [=c=], [: ... :]) */ + case L(']'): + if (bnest) + { + if (cchar && s[-1] == cchar) + cchar = 0; + else if (s != bfirst) + { + bnest--; + bfirst = 0; + } + } + break; + + case L('('): + if (bnest == 0) + pnest++; + break; + + case L(')'): + if (bnest == 0 && pnest-- <= 0) + return ++s; + break; + + case L('|'): + if (bnest == 0 && pnest == 0 && delim == L('|')) + return ++s; + break; + } + } + + return (NULL); +} + +/* Return 0 if dequoted pattern matches S in the current locale. */ +static int +STRCOMPARE (p, pe, s, se) + CHAR *p, *pe, *s, *se; +{ + int ret; + CHAR c1, c2; + int l1, l2; + + l1 = pe - p; + l2 = se - s; + + if (l1 != l2) + return (FNM_NOMATCH); /* unequal lengths, can't be identical */ + + c1 = *pe; + c2 = *se; + + if (c1 != 0) + *pe = '\0'; + if (c2 != 0) + *se = '\0'; + +#if HAVE_MULTIBYTE || defined (HAVE_STRCOLL) + ret = STRCOLL ((XCHAR *)p, (XCHAR *)s); +#else + ret = STRCMP ((XCHAR *)p, (XCHAR *)s); +#endif + + if (c1 != 0) + *pe = c1; + if (c2 != 0) + *se = c2; + + return (ret == 0 ? ret : FNM_NOMATCH); +} + +/* Match a ksh extended pattern specifier. Return FNM_NOMATCH on failure or + 0 on success. This is handed the entire rest of the pattern and string + the first time an extended pattern specifier is encountered, so it calls + gmatch recursively. */ +static int +EXTMATCH (xc, s, se, p, pe, flags) + INT xc; /* select which operation */ + CHAR *s, *se; + CHAR *p, *pe; + int flags; +{ + CHAR *prest; /* pointer to rest of pattern */ + CHAR *psub; /* pointer to sub-pattern */ + CHAR *pnext; /* pointer to next sub-pattern */ + CHAR *srest; /* pointer to rest of string */ + int m1, m2, xflags; /* xflags = flags passed to recursive matches */ + +#if DEBUG_MATCHING +fprintf(stderr, "extmatch: xc = %c\n", xc); +fprintf(stderr, "extmatch: s = %s; se = %s\n", s, se); +fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe); +fprintf(stderr, "extmatch: flags = %d\n", flags); +#endif + + prest = PATSCAN (p + (*p == L('(')), pe, 0); /* ) */ + if (prest == 0) + /* If PREST is 0, we failed to scan a valid pattern. In this + case, we just want to compare the two as strings. */ + return (STRCOMPARE (p - 1, pe, s, se)); + + switch (xc) + { + case L('+'): /* match one or more occurrences */ + case L('*'): /* match zero or more occurrences */ + /* If we can get away with no matches, don't even bother. Just + call GMATCH on the rest of the pattern and return success if + it succeeds. */ + if (xc == L('*') && (GMATCH (s, se, prest, pe, NULL, flags) == 0)) + return 0; + + /* OK, we have to do this the hard way. First, we make sure one of + the subpatterns matches, then we try to match the rest of the + string. */ + for (psub = p + 1; ; psub = pnext) + { + pnext = PATSCAN (psub, pe, L('|')); + for (srest = s; srest <= se; srest++) + { + /* Match this substring (S -> SREST) against this + subpattern (psub -> pnext - 1) */ + m1 = GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0; + /* OK, we matched a subpattern, so make sure the rest of the + string matches the rest of the pattern. Also handle + multiple matches of the pattern. */ + if (m1) + { + /* if srest > s, we are not at start of string */ + xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; + m2 = (GMATCH (srest, se, prest, pe, NULL, xflags) == 0) || + (s != srest && GMATCH (srest, se, p - 1, pe, NULL, xflags) == 0); + } + if (m1 && m2) + return (0); + } + if (pnext == prest) + break; + } + return (FNM_NOMATCH); + + case L('?'): /* match zero or one of the patterns */ + case L('@'): /* match one (or more) of the patterns */ + /* If we can get away with no matches, don't even bother. Just + call gmatch on the rest of the pattern and return success if + it succeeds. */ + if (xc == L('?') && (GMATCH (s, se, prest, pe, NULL, flags) == 0)) + return 0; + + /* OK, we have to do this the hard way. First, we see if one of + the subpatterns matches, then, if it does, we try to match the + rest of the string. */ + for (psub = p + 1; ; psub = pnext) + { + pnext = PATSCAN (psub, pe, L('|')); + srest = (prest == pe) ? se : s; + for ( ; srest <= se; srest++) + { + /* if srest > s, we are not at start of string */ + xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; + if (GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0 && + GMATCH (srest, se, prest, pe, NULL, xflags) == 0) + return (0); + } + if (pnext == prest) + break; + } + return (FNM_NOMATCH); + + case '!': /* match anything *except* one of the patterns */ + for (srest = s; srest <= se; srest++) + { + m1 = 0; + for (psub = p + 1; ; psub = pnext) + { + pnext = PATSCAN (psub, pe, L('|')); + /* If one of the patterns matches, just bail immediately. */ + if (m1 = (GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0)) + break; + if (pnext == prest) + break; + } + + /* If nothing matched, but the string starts with a period and we + need to match periods explicitly, don't return this as a match, + even for negation. Might need to do this only if srest == s. */ + if (m1 == 0 && *s == '.' && (flags & FNM_PERIOD)) + return (FNM_NOMATCH); + + /* if srest > s, we are not at start of string */ + xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; + if (m1 == 0 && GMATCH (srest, se, prest, pe, NULL, xflags) == 0) + return (0); + } + return (FNM_NOMATCH); + } + + return (FNM_NOMATCH); +} +#endif /* EXTENDED_GLOB */ + +#undef IS_CCLASS +#undef FOLD +#undef CHAR +#undef U_CHAR +#undef XCHAR +#undef INT +#undef INVALID +#undef FCT +#undef GMATCH +#undef COLLSYM +#undef PARSE_COLLSYM +#undef PATSCAN +#undef STRCOMPARE +#undef EXTMATCH +#undef DEQUOTE_PATHNAME +#undef STRUCT +#undef BRACKMATCH +#undef STRCHR +#undef STRCOLL +#undef STRLEN +#undef STRCMP +#undef MEMCHR +#undef COLLEQUIV +#undef RANGECMP +#undef L diff --git a/bash-5.1/lib/glob/smatch.c b/bash-5.1/lib/glob/smatch.c new file mode 100644 index 0000000..a58456d --- /dev/null +++ b/bash-5.1/lib/glob/smatch.c @@ -0,0 +1,617 @@ +/* strmatch.c -- ksh-like extended pattern matching for the shell and filename + globbing. */ + +/* Copyright (C) 1991-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include /* for debugging */ + +#include "strmatch.h" +#include + +#include "bashansi.h" +#include "shmbutil.h" +#include "xmalloc.h" + +#include + +#if !defined (errno) +extern int errno; +#endif + +#if FNMATCH_EQUIV_FALLBACK +/* We don't include in order to avoid namespace collisions; the + internal strmatch still uses the FNM_ constants. */ +extern int fnmatch (const char *, const char *, int); +#endif + +/* First, compile `sm_loop.c' for single-byte characters. */ +#define CHAR unsigned char +#define U_CHAR unsigned char +#define XCHAR char +#define INT int +#define L(CS) CS +#define INVALID -1 + +#undef STREQ +#undef STREQN +#define STREQ(a, b) ((a)[0] == (b)[0] && strcmp(a, b) == 0) +#define STREQN(a, b, n) ((a)[0] == (b)[0] && strncmp(a, b, n) == 0) + +#ifndef GLOBASCII_DEFAULT +# define GLOBASCII_DEFAULT 0 +#endif + +int glob_asciirange = GLOBASCII_DEFAULT; + +#if FNMATCH_EQUIV_FALLBACK +/* Construct a string w1 = "c1" and a pattern w2 = "[[=c2=]]" and pass them + to fnmatch to see if wide characters c1 and c2 collate as members of the + same equivalence class. We can't really do this portably any other way */ +static int +_fnmatch_fallback (s, p) + int s, p; /* string char, patchar */ +{ + char s1[2]; /* string */ + char s2[8]; /* constructed pattern */ + + s1[0] = (unsigned char)s; + s1[1] = '\0'; + + /* reconstruct the pattern */ + s2[0] = s2[1] = '['; + s2[2] = '='; + s2[3] = (unsigned char)p; + s2[4] = '='; + s2[5] = s2[6] = ']'; + s2[7] = '\0'; + + return (fnmatch ((const char *)s2, (const char *)s1, 0)); +} +#endif + +/* We use strcoll(3) for range comparisons in bracket expressions, + even though it can have unwanted side effects in locales + other than POSIX or US. For instance, in the de locale, [A-Z] matches + all characters. If GLOB_ASCIIRANGE is non-zero, and we're not forcing + the use of strcoll (e.g., for explicit collating symbols), we use + straight ordering as if in the C locale. */ + +#if defined (HAVE_STRCOLL) +/* Helper functions for collating symbol equivalence. */ + +/* Return 0 if C1 == C2 or collates equally if FORCECOLL is non-zero. */ +static int +charcmp (c1, c2, forcecoll) + int c1, c2; + int forcecoll; +{ + static char s1[2] = { ' ', '\0' }; + static char s2[2] = { ' ', '\0' }; + int ret; + + /* Eight bits only. Period. */ + c1 &= 0xFF; + c2 &= 0xFF; + + if (c1 == c2) + return (0); + + if (forcecoll == 0 && glob_asciirange) + return (c1 - c2); + + s1[0] = c1; + s2[0] = c2; + + return (strcoll (s1, s2)); +} + +static int +rangecmp (c1, c2, forcecoll) + int c1, c2; + int forcecoll; +{ + int r; + + r = charcmp (c1, c2, forcecoll); + + /* We impose a total ordering here by returning c1-c2 if charcmp returns 0 */ + if (r != 0) + return r; + return (c1 - c2); /* impose total ordering */ +} +#else /* !HAVE_STRCOLL */ +# define rangecmp(c1, c2, f) ((int)(c1) - (int)(c2)) +#endif /* !HAVE_STRCOLL */ + +#if defined (HAVE_STRCOLL) +/* Returns 1 if chars C and EQUIV collate equally in the current locale. */ +static int +collequiv (c, equiv) + int c, equiv; +{ + if (charcmp (c, equiv, 1) == 0) + return 1; + +#if FNMATCH_EQUIV_FALLBACK + return (_fnmatch_fallback (c, equiv) == 0); +#else + return 0; +#endif + +} +#else +# define collequiv(c, equiv) ((c) == (equiv)) +#endif + +#define _COLLSYM _collsym +#define __COLLSYM __collsym +#define POSIXCOLL posix_collsyms +#include "collsyms.h" + +static int +collsym (s, len) + CHAR *s; + int len; +{ + register struct _collsym *csp; + char *x; + + x = (char *)s; + for (csp = posix_collsyms; csp->name; csp++) + { + if (STREQN(csp->name, x, len) && csp->name[len] == '\0') + return (csp->code); + } + if (len == 1) + return s[0]; + return INVALID; +} + +/* unibyte character classification */ +#if !defined (isascii) && !defined (HAVE_ISASCII) +# define isascii(c) ((unsigned int)(c) <= 0177) +#endif + +enum char_class + { + CC_NO_CLASS = 0, + CC_ASCII, CC_ALNUM, CC_ALPHA, CC_BLANK, CC_CNTRL, CC_DIGIT, CC_GRAPH, + CC_LOWER, CC_PRINT, CC_PUNCT, CC_SPACE, CC_UPPER, CC_WORD, CC_XDIGIT + }; + +static char const *const cclass_name[] = + { + "", + "ascii", "alnum", "alpha", "blank", "cntrl", "digit", "graph", + "lower", "print", "punct", "space", "upper", "word", "xdigit" + }; + +#define N_CHAR_CLASS (sizeof(cclass_name) / sizeof (cclass_name[0])) + +static enum char_class +is_valid_cclass (name) + const char *name; +{ + enum char_class ret; + int i; + + ret = CC_NO_CLASS; + + for (i = 1; i < N_CHAR_CLASS; i++) + { + if (STREQ (name, cclass_name[i])) + { + ret = (enum char_class)i; + break; + } + } + + return ret; +} + +static int +cclass_test (c, char_class) + int c; + enum char_class char_class; +{ + int result; + + switch (char_class) + { + case CC_ASCII: + result = isascii (c); + break; + case CC_ALNUM: + result = ISALNUM (c); + break; + case CC_ALPHA: + result = ISALPHA (c); + break; + case CC_BLANK: + result = ISBLANK (c); + break; + case CC_CNTRL: + result = ISCNTRL (c); + break; + case CC_DIGIT: + result = ISDIGIT (c); + break; + case CC_GRAPH: + result = ISGRAPH (c); + break; + case CC_LOWER: + result = ISLOWER (c); + break; + case CC_PRINT: + result = ISPRINT (c); + break; + case CC_PUNCT: + result = ISPUNCT (c); + break; + case CC_SPACE: + result = ISSPACE (c); + break; + case CC_UPPER: + result = ISUPPER (c); + break; + case CC_WORD: + result = (ISALNUM (c) || c == '_'); + break; + case CC_XDIGIT: + result = ISXDIGIT (c); + break; + default: + result = -1; + break; + } + + return result; +} + +static int +is_cclass (c, name) + int c; + const char *name; +{ + enum char_class char_class; + int result; + + char_class = is_valid_cclass (name); + if (char_class == CC_NO_CLASS) + return -1; + + result = cclass_test (c, char_class); + return (result); +} + +/* Now include `sm_loop.c' for single-byte characters. */ +/* The result of FOLD is an `unsigned char' */ +# define FOLD(c) ((flags & FNM_CASEFOLD) \ + ? TOLOWER ((unsigned char)c) \ + : ((unsigned char)c)) + +#define FCT internal_strmatch +#define GMATCH gmatch +#define COLLSYM collsym +#define PARSE_COLLSYM parse_collsym +#define BRACKMATCH brackmatch +#define PATSCAN glob_patscan +#define STRCOMPARE strcompare +#define EXTMATCH extmatch +#define DEQUOTE_PATHNAME udequote_pathname +#define STRUCT smat_struct +#define STRCHR(S, C) strchr((S), (C)) +#define MEMCHR(S, C, N) memchr((S), (C), (N)) +#define STRCOLL(S1, S2) strcoll((S1), (S2)) +#define STRLEN(S) strlen(S) +#define STRCMP(S1, S2) strcmp((S1), (S2)) +#define RANGECMP(C1, C2, F) rangecmp((C1), (C2), (F)) +#define COLLEQUIV(C1, C2) collequiv((C1), (C2)) +#define CTYPE_T enum char_class +#define IS_CCLASS(C, S) is_cclass((C), (S)) +#include "sm_loop.c" + +#if HANDLE_MULTIBYTE + +# define CHAR wchar_t +# define U_CHAR wint_t +# define XCHAR wchar_t +# define INT wint_t +# define L(CS) L##CS +# define INVALID WEOF + +# undef STREQ +# undef STREQN +# define STREQ(s1, s2) ((wcscmp (s1, s2) == 0)) +# define STREQN(a, b, n) ((a)[0] == (b)[0] && wcsncmp(a, b, n) == 0) + +extern char *mbsmbchar PARAMS((const char *)); + +#if FNMATCH_EQUIV_FALLBACK +/* Construct a string w1 = "c1" and a pattern w2 = "[[=c2=]]" and pass them + to fnmatch to see if wide characters c1 and c2 collate as members of the + same equivalence class. We can't really do this portably any other way */ +static int +_fnmatch_fallback_wc (c1, c2) + wchar_t c1, c2; /* string char, patchar */ +{ + char w1[MB_LEN_MAX+1]; /* string */ + char w2[MB_LEN_MAX+8]; /* constructed pattern */ + int l1, l2; + + l1 = wctomb (w1, c1); + if (l1 == -1) + return (2); + w1[l1] = '\0'; + + /* reconstruct the pattern */ + w2[0] = w2[1] = '['; + w2[2] = '='; + l2 = wctomb (w2+3, c2); + if (l2 == -1) + return (2); + w2[l2+3] = '='; + w2[l2+4] = w2[l2+5] = ']'; + w2[l2+6] = '\0'; + + return (fnmatch ((const char *)w2, (const char *)w1, 0)); +} +#endif + +static int +charcmp_wc (c1, c2, forcecoll) + wint_t c1, c2; + int forcecoll; +{ + static wchar_t s1[2] = { L' ', L'\0' }; + static wchar_t s2[2] = { L' ', L'\0' }; + int r; + + if (c1 == c2) + return 0; + + if (forcecoll == 0 && glob_asciirange && c1 <= UCHAR_MAX && c2 <= UCHAR_MAX) + return ((int)(c1 - c2)); + + s1[0] = c1; + s2[0] = c2; + + return (wcscoll (s1, s2)); +} + +static int +rangecmp_wc (c1, c2, forcecoll) + wint_t c1, c2; + int forcecoll; +{ + int r; + + r = charcmp_wc (c1, c2, forcecoll); + + /* We impose a total ordering here by returning c1-c2 if charcmp returns 0, + as we do above in the single-byte case. */ + if (r != 0 || forcecoll) + return r; + return ((int)(c1 - c2)); /* impose total ordering */ +} + +/* Returns 1 if wide chars C and EQUIV collate equally in the current locale. */ +static int +collequiv_wc (c, equiv) + wint_t c, equiv; +{ + wchar_t s, p; + + if (charcmp_wc (c, equiv, 1) == 0) + return 1; + +#if FNMATCH_EQUIV_FALLBACK +/* We check explicitly for success (fnmatch returns 0) to avoid problems if + our local definition of FNM_NOMATCH (strmatch.h) doesn't match the + system's (fnmatch.h). We don't care about error return values here. */ + + s = c; + p = equiv; + return (_fnmatch_fallback_wc (s, p) == 0); +#else + return 0; +#endif +} + +/* Helper function for collating symbol. */ +# define _COLLSYM _collwcsym +# define __COLLSYM __collwcsym +# define POSIXCOLL posix_collwcsyms +# include "collsyms.h" + +static wint_t +collwcsym (s, len) + wchar_t *s; + int len; +{ + register struct _collwcsym *csp; + + for (csp = posix_collwcsyms; csp->name; csp++) + { + if (STREQN(csp->name, s, len) && csp->name[len] == L'\0') + return (csp->code); + } + if (len == 1) + return s[0]; + return INVALID; +} + +static int +is_wcclass (wc, name) + wint_t wc; + wchar_t *name; +{ + char *mbs; + mbstate_t state; + size_t mbslength; + wctype_t desc; + int want_word; + + if ((wctype ("ascii") == (wctype_t)0) && (wcscmp (name, L"ascii") == 0)) + { + int c; + + if ((c = wctob (wc)) == EOF) + return 0; + else + return (c <= 0x7F); + } + + want_word = (wcscmp (name, L"word") == 0); + if (want_word) + name = L"alnum"; + + memset (&state, '\0', sizeof (mbstate_t)); + mbs = (char *) malloc (wcslen(name) * MB_CUR_MAX + 1); + if (mbs == 0) + return -1; + mbslength = wcsrtombs (mbs, (const wchar_t **)&name, (wcslen(name) * MB_CUR_MAX + 1), &state); + + if (mbslength == (size_t)-1 || mbslength == (size_t)-2) + { + free (mbs); + return -1; + } + desc = wctype (mbs); + free (mbs); + + if (desc == (wctype_t)0) + return -1; + + if (want_word) + return (iswctype (wc, desc) || wc == L'_'); + else + return (iswctype (wc, desc)); +} + +/* Return 1 if there are no char class [:class:] expressions (degenerate case) + or only posix-specified (C locale supported) char class expressions in + PATTERN. These are the ones where it's safe to punt to the single-byte + code, since wide character support allows locale-defined char classes. + This only uses single-byte code, but is only needed to support multibyte + locales. */ +static int +posix_cclass_only (pattern) + char *pattern; +{ + char *p, *p1; + char cc[16]; /* sufficient for all valid posix char class names */ + enum char_class valid; + + p = pattern; + while (p = strchr (p, '[')) + { + if (p[1] != ':') + { + p++; + continue; + } + p += 2; /* skip past "[:" */ + /* Find end of char class expression */ + for (p1 = p; *p1; p1++) + if (*p1 == ':' && p1[1] == ']') + break; + if (*p1 == 0) /* no char class expression found */ + break; + /* Find char class name and validate it against posix char classes */ + if ((p1 - p) >= sizeof (cc)) + return 0; + bcopy (p, cc, p1 - p); + cc[p1 - p] = '\0'; + valid = is_valid_cclass (cc); + if (valid == CC_NO_CLASS) + return 0; /* found unrecognized char class name */ + + p = p1 + 2; /* found posix char class name */ + } + + return 1; /* no char class names or only posix */ +} + +/* Now include `sm_loop.c' for multibyte characters. */ +#define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c)) +#define FCT internal_wstrmatch +#define GMATCH gmatch_wc +#define COLLSYM collwcsym +#define PARSE_COLLSYM parse_collwcsym +#define BRACKMATCH brackmatch_wc +#define PATSCAN glob_patscan_wc +#define STRCOMPARE wscompare +#define EXTMATCH extmatch_wc +#define DEQUOTE_PATHNAME wcdequote_pathname +#define STRUCT wcsmat_struct +#define STRCHR(S, C) wcschr((S), (C)) +#define MEMCHR(S, C, N) wmemchr((S), (C), (N)) +#define STRCOLL(S1, S2) wcscoll((S1), (S2)) +#define STRLEN(S) wcslen(S) +#define STRCMP(S1, S2) wcscmp((S1), (S2)) +#define RANGECMP(C1, C2, F) rangecmp_wc((C1), (C2), (F)) +#define COLLEQUIV(C1, C2) collequiv_wc((C1), (C2)) +#define CTYPE_T enum char_class +#define IS_CCLASS(C, S) is_wcclass((C), (S)) +#include "sm_loop.c" + +#endif /* HAVE_MULTIBYTE */ + +int +xstrmatch (pattern, string, flags) + char *pattern; + char *string; + int flags; +{ +#if HANDLE_MULTIBYTE + int ret; + size_t n; + wchar_t *wpattern, *wstring; + size_t plen, slen, mplen, mslen; + + if (MB_CUR_MAX == 1) + return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); + + if (mbsmbchar (string) == 0 && mbsmbchar (pattern) == 0 && posix_cclass_only (pattern)) + return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); + + n = xdupmbstowcs (&wpattern, NULL, pattern); + if (n == (size_t)-1 || n == (size_t)-2) + return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); + + n = xdupmbstowcs (&wstring, NULL, string); + if (n == (size_t)-1 || n == (size_t)-2) + { + free (wpattern); + return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); + } + + ret = internal_wstrmatch (wpattern, wstring, flags); + + free (wpattern); + free (wstring); + + return ret; +#else + return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); +#endif /* !HANDLE_MULTIBYTE */ +} diff --git a/bash-5.1/lib/glob/strmatch.c b/bash-5.1/lib/glob/strmatch.c new file mode 100644 index 0000000..5b7b49f --- /dev/null +++ b/bash-5.1/lib/glob/strmatch.c @@ -0,0 +1,79 @@ +/* strmatch.c -- ksh-like extended pattern matching for the shell and filename + globbing. */ + +/* Copyright (C) 1991-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include "stdc.h" +#include "strmatch.h" + +extern int xstrmatch PARAMS((char *, char *, int)); +#if defined (HANDLE_MULTIBYTE) +extern int internal_wstrmatch PARAMS((wchar_t *, wchar_t *, int)); +#endif + +int +strmatch (pattern, string, flags) + char *pattern; + char *string; + int flags; +{ + if (string == 0 || pattern == 0) + return FNM_NOMATCH; + + return (xstrmatch (pattern, string, flags)); +} + +#if defined (HANDLE_MULTIBYTE) +int +wcsmatch (wpattern, wstring, flags) + wchar_t *wpattern; + wchar_t *wstring; + int flags; +{ + if (wstring == 0 || wpattern == 0) + return (FNM_NOMATCH); + + return (internal_wstrmatch (wpattern, wstring, flags)); +} +#endif + +#ifdef TEST +main (c, v) + int c; + char **v; +{ + char *string, *pat; + + string = v[1]; + pat = v[2]; + + if (strmatch (pat, string, 0) == 0) + { + printf ("%s matches %s\n", string, pat); + exit (0); + } + else + { + printf ("%s does not match %s\n", string, pat); + exit (1); + } +} +#endif diff --git a/bash-5.1/lib/glob/strmatch.h b/bash-5.1/lib/glob/strmatch.h new file mode 100644 index 0000000..fa7be7b --- /dev/null +++ b/bash-5.1/lib/glob/strmatch.h @@ -0,0 +1,64 @@ +/* Copyright (C) 1991-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _STRMATCH_H +#define _STRMATCH_H 1 + +#include + +#include "stdc.h" + +/* We #undef these before defining them because some losing systems + (HP-UX A.08.07 for example) define these in . */ +#undef FNM_PATHNAME +#undef FNM_NOESCAPE +#undef FNM_PERIOD + +/* Bits set in the FLAGS argument to `strmatch'. */ + +/* standard flags are like fnmatch(3). */ +#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */ +#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */ +#define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */ + +/* extended flags not available in most libc fnmatch versions, but we undef + them to avoid any possible warnings. */ +#undef FNM_LEADING_DIR +#undef FNM_CASEFOLD +#undef FNM_EXTMATCH + +#define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */ +#define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ +#define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */ + +#define FNM_FIRSTCHAR (1 << 6) /* Match only the first character */ + +/* Value returned by `strmatch' if STRING does not match PATTERN. */ +#undef FNM_NOMATCH + +#define FNM_NOMATCH 1 + +/* Match STRING against the filename pattern PATTERN, + returning zero if it matches, FNM_NOMATCH if not. */ +extern int strmatch PARAMS((char *, char *, int)); + +#if HANDLE_MULTIBYTE +extern int wcsmatch PARAMS((wchar_t *, wchar_t *, int)); +#endif + +#endif /* _STRMATCH_H */ diff --git a/bash-5.1/lib/glob/xmbsrtowcs.c b/bash-5.1/lib/glob/xmbsrtowcs.c new file mode 100644 index 0000000..17250c3 --- /dev/null +++ b/bash-5.1/lib/glob/xmbsrtowcs.c @@ -0,0 +1,523 @@ +/* xmbsrtowcs.c -- replacement function for mbsrtowcs */ + +/* Copyright (C) 2002-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* Ask for GNU extensions to get extern declaration for mbsnrtowcs if + available via glibc. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#include + +#include + +/* , and are included in "shmbutil.h". + If , , mbsrtowcs(), exist, HANDLE_MULTIBYTE + is defined as 1. */ +#include + +#if HANDLE_MULTIBYTE + +#include +#if !defined (errno) +extern int errno; +#endif + +#define WSBUF_INC 32 + +#ifndef FREE +# define FREE(x) do { if (x) free (x); } while (0) +#endif + +#if ! HAVE_STRCHRNUL +extern char *strchrnul PARAMS((const char *, int)); +#endif + +/* On some locales (ex. ja_JP.sjis), mbsrtowc doesn't convert 0x5c to U<0x5c>. + So, this function is made for converting 0x5c to U<0x5c>. */ + +static mbstate_t local_state; +static int local_state_use = 0; + +size_t +xmbsrtowcs (dest, src, len, pstate) + wchar_t *dest; + const char **src; + size_t len; + mbstate_t *pstate; +{ + mbstate_t *ps; + size_t mblength, wclength, n; + + ps = pstate; + if (pstate == NULL) + { + if (!local_state_use) + { + memset (&local_state, '\0', sizeof(mbstate_t)); + local_state_use = 1; + } + ps = &local_state; + } + + n = strlen (*src); + + if (dest == NULL) + { + wchar_t *wsbuf; + const char *mbs; + mbstate_t psbuf; + + /* It doesn't matter if malloc fails here, since mbsrtowcs should do + the right thing with a NULL first argument. */ + wsbuf = (wchar_t *) malloc ((n + 1) * sizeof(wchar_t)); + mbs = *src; + psbuf = *ps; + + wclength = mbsrtowcs (wsbuf, &mbs, n, &psbuf); + + if (wsbuf) + free (wsbuf); + return wclength; + } + + for (wclength = 0; wclength < len; wclength++, dest++) + { + if (mbsinit(ps)) + { + if (**src == '\0') + { + *dest = L'\0'; + *src = NULL; + return (wclength); + } + else if (**src == '\\') + { + *dest = L'\\'; + mblength = 1; + } + else + mblength = mbrtowc(dest, *src, n, ps); + } + else + mblength = mbrtowc(dest, *src, n, ps); + + /* Cannot convert multibyte character to wide character. */ + if (mblength == (size_t)-1 || mblength == (size_t)-2) + return (size_t)-1; + + *src += mblength; + n -= mblength; + + /* The multibyte string has been completely converted, + including the terminating '\0'. */ + if (*dest == L'\0') + { + *src = NULL; + break; + } + } + + return (wclength); +} + +#if HAVE_MBSNRTOWCS +/* Convert a multibyte string to a wide character string. Memory for the + new wide character string is obtained with malloc. + + Fast multiple-character version of xdupmbstowcs used when the indices are + not required and mbsnrtowcs is available. */ + +static size_t +xdupmbstowcs2 (destp, src) + wchar_t **destp; /* Store the pointer to the wide character string */ + const char *src; /* Multibyte character string */ +{ + const char *p; /* Conversion start position of src */ + wchar_t *wsbuf; /* Buffer for wide characters. */ + size_t wsbuf_size; /* Size of WSBUF */ + size_t wcnum; /* Number of wide characters in WSBUF */ + mbstate_t state; /* Conversion State */ + size_t n, wcslength; /* Number of wide characters produced by the conversion. */ + const char *end_or_backslash; + size_t nms; /* Number of multibyte characters to convert at one time. */ + mbstate_t tmp_state; + const char *tmp_p; + + memset (&state, '\0', sizeof(mbstate_t)); + + wsbuf_size = 0; + wsbuf = NULL; + + p = src; + wcnum = 0; + do + { + end_or_backslash = strchrnul(p, '\\'); + nms = end_or_backslash - p; + if (*end_or_backslash == '\0') + nms++; + + /* Compute the number of produced wide-characters. */ + tmp_p = p; + tmp_state = state; + + if (nms == 0 && *p == '\\') /* special initial case */ + nms = wcslength = 1; + else + wcslength = mbsnrtowcs (NULL, &tmp_p, nms, 0, &tmp_state); + + if (wcslength == 0) + { + tmp_p = p; /* will need below */ + tmp_state = state; + wcslength = 1; /* take a single byte */ + } + + /* Conversion failed. */ + if (wcslength == (size_t)-1) + { + free (wsbuf); + *destp = NULL; + return (size_t)-1; + } + + /* Resize the buffer if it is not large enough. */ + if (wsbuf_size < wcnum+wcslength+1) /* 1 for the L'\0' or the potential L'\\' */ + { + wchar_t *wstmp; + + while (wsbuf_size < wcnum+wcslength+1) /* 1 for the L'\0' or the potential L'\\' */ + wsbuf_size += WSBUF_INC; + + wstmp = (wchar_t *) realloc (wsbuf, wsbuf_size * sizeof (wchar_t)); + if (wstmp == NULL) + { + free (wsbuf); + *destp = NULL; + return (size_t)-1; + } + wsbuf = wstmp; + } + + /* Perform the conversion. This is assumed to return 'wcslength'. + It may set 'p' to NULL. */ + n = mbsnrtowcs(wsbuf+wcnum, &p, nms, wsbuf_size-wcnum, &state); + + if (n == 0 && p == 0) + { + wsbuf[wcnum] = L'\0'; + break; + } + + /* Compensate for taking single byte on wcs conversion failure above. */ + if (wcslength == 1 && (n == 0 || n == (size_t)-1)) + { + state = tmp_state; + p = tmp_p; + wsbuf[wcnum] = *p; + if (*p == 0) + break; + else + { + wcnum++; p++; + } + } + else + wcnum += wcslength; + + if (mbsinit (&state) && (p != NULL) && (*p == '\\')) + { + wsbuf[wcnum++] = L'\\'; + p++; + } + } + while (p != NULL); + + *destp = wsbuf; + + /* Return the length of the wide character string, not including `\0'. */ + return wcnum; +} +#endif /* HAVE_MBSNRTOWCS */ + +/* Convert a multibyte string to a wide character string. Memory for the + new wide character string is obtained with malloc. + + The return value is the length of the wide character string. Returns a + pointer to the wide character string in DESTP. If INDICESP is not NULL, + INDICESP stores the pointer to the pointer array. Each pointer is to + the first byte of each multibyte character. Memory for the pointer array + is obtained with malloc, too. + If conversion is failed, the return value is (size_t)-1 and the values + of DESTP and INDICESP are NULL. */ + +size_t +xdupmbstowcs (destp, indicesp, src) + wchar_t **destp; /* Store the pointer to the wide character string */ + char ***indicesp; /* Store the pointer to the pointer array. */ + const char *src; /* Multibyte character string */ +{ + const char *p; /* Conversion start position of src */ + wchar_t wc; /* Created wide character by conversion */ + wchar_t *wsbuf; /* Buffer for wide characters. */ + char **indices; /* Buffer for indices. */ + size_t wsbuf_size; /* Size of WSBUF */ + size_t wcnum; /* Number of wide characters in WSBUF */ + mbstate_t state; /* Conversion State */ + + /* In case SRC or DESP is NULL, conversion doesn't take place. */ + if (src == NULL || destp == NULL) + { + if (destp) + *destp = NULL; + if (indicesp) + *indicesp = NULL; + return (size_t)-1; + } + +#if HAVE_MBSNRTOWCS + if (indicesp == NULL) + return (xdupmbstowcs2 (destp, src)); +#endif + + memset (&state, '\0', sizeof(mbstate_t)); + wsbuf_size = WSBUF_INC; + + wsbuf = (wchar_t *) malloc (wsbuf_size * sizeof(wchar_t)); + if (wsbuf == NULL) + { + *destp = NULL; + if (indicesp) + *indicesp = NULL; + return (size_t)-1; + } + + indices = NULL; + if (indicesp) + { + indices = (char **) malloc (wsbuf_size * sizeof(char *)); + if (indices == NULL) + { + free (wsbuf); + *destp = NULL; + *indicesp = NULL; + return (size_t)-1; + } + } + + p = src; + wcnum = 0; + do + { + size_t mblength; /* Byte length of one multibyte character. */ + + if (mbsinit (&state)) + { + if (*p == '\0') + { + wc = L'\0'; + mblength = 1; + } + else if (*p == '\\') + { + wc = L'\\'; + mblength = 1; + } + else + mblength = mbrtowc(&wc, p, MB_LEN_MAX, &state); + } + else + mblength = mbrtowc(&wc, p, MB_LEN_MAX, &state); + + /* Conversion failed. */ + if (MB_INVALIDCH (mblength)) + { + free (wsbuf); + FREE (indices); + *destp = NULL; + if (indicesp) + *indicesp = NULL; + return (size_t)-1; + } + + ++wcnum; + + /* Resize buffers when they are not large enough. */ + if (wsbuf_size < wcnum) + { + wchar_t *wstmp; + char **idxtmp; + + wsbuf_size += WSBUF_INC; + + wstmp = (wchar_t *) realloc (wsbuf, wsbuf_size * sizeof (wchar_t)); + if (wstmp == NULL) + { + free (wsbuf); + FREE (indices); + *destp = NULL; + if (indicesp) + *indicesp = NULL; + return (size_t)-1; + } + wsbuf = wstmp; + + if (indicesp) + { + idxtmp = (char **) realloc (indices, wsbuf_size * sizeof (char *)); + if (idxtmp == NULL) + { + free (wsbuf); + free (indices); + *destp = NULL; + if (indicesp) + *indicesp = NULL; + return (size_t)-1; + } + indices = idxtmp; + } + } + + wsbuf[wcnum - 1] = wc; + if (indices) + indices[wcnum - 1] = (char *)p; + p += mblength; + } + while (MB_NULLWCH (wc) == 0); + + /* Return the length of the wide character string, not including `\0'. */ + *destp = wsbuf; + if (indicesp != NULL) + *indicesp = indices; + + return (wcnum - 1); +} + +/* Convert wide character string to multibyte character string. Treat invalid + wide characters as bytes. Used only in unusual circumstances. + + Written by Bruno Haible , 2008, adapted by Chet Ramey + for use in Bash. */ + +/* Convert wide character string *SRCP to a multibyte character string and + store the result in DEST. Store at most LEN bytes in DEST. */ +size_t +xwcsrtombs (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps) +{ + const wchar_t *src; + size_t cur_max; /* XXX - locale_cur_max */ + char buf[64], *destptr, *tmp_dest; + unsigned char uc; + mbstate_t prev_state; + + cur_max = MB_CUR_MAX; + if (cur_max > sizeof (buf)) /* Holy cow. */ + return (size_t)-1; + + src = *srcp; + + if (dest != NULL) + { + destptr = dest; + + for (; len > 0; src++) + { + wchar_t wc; + size_t ret; + + wc = *src; + /* If we have room, store directly into DEST. */ + tmp_dest = destptr; + ret = wcrtomb (len >= cur_max ? destptr : buf, wc, ps); + + if (ret == (size_t)(-1)) /* XXX */ + { + /* Since this is used for globbing and other uses of filenames, + treat invalid wide character sequences as bytes. This is + intended to be symmetric with xdupmbstowcs2. */ +handle_byte: + destptr = tmp_dest; /* in case wcrtomb modified it */ + uc = wc; + ret = 1; + if (len >= cur_max) + *destptr = uc; + else + buf[0] = uc; + if (ps) + memset (ps, 0, sizeof (mbstate_t)); + } + + if (ret > cur_max) /* Holy cow */ + goto bad_input; + + if (len < ret) + break; + + if (len < cur_max) + memcpy (destptr, buf, ret); + + if (wc == 0) + { + src = NULL; + /* Here mbsinit (ps). */ + break; + } + destptr += ret; + len -= ret; + } + *srcp = src; + return destptr - dest; + } + else + { + /* Ignore dest and len, don't store *srcp at the end, and + don't clobber *ps. */ + mbstate_t state = *ps; + size_t totalcount = 0; + + for (;; src++) + { + wchar_t wc; + size_t ret; + + wc = *src; + ret = wcrtomb (buf, wc, &state); + + if (ret == (size_t)(-1)) + goto bad_input2; + if (wc == 0) + { + /* Here mbsinit (&state). */ + break; + } + totalcount += ret; + } + return totalcount; + } + +bad_input: + *srcp = src; +bad_input2: + errno = EILSEQ; + return (size_t)(-1); +} + +#endif /* HANDLE_MULTIBYTE */ diff --git a/bash-5.1/lib/intl/ChangeLog b/bash-5.1/lib/intl/ChangeLog new file mode 100644 index 0000000..eed2d21 --- /dev/null +++ b/bash-5.1/lib/intl/ChangeLog @@ -0,0 +1,4 @@ +2003-05-22 GNU + + * Version 0.12.1 released. + diff --git a/bash-5.1/lib/intl/Makefile.in b/bash-5.1/lib/intl/Makefile.in new file mode 100644 index 0000000..00fdb61 --- /dev/null +++ b/bash-5.1/lib/intl/Makefile.in @@ -0,0 +1,472 @@ +# Makefile for directory with message catalog handling library of GNU gettext +# Copyright (C) 1995-1998, 2000-2003, 2008,2009 Free Software Foundation, Inc. +# + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# 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 . + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = @BUILD_DIR@ +VPATH = $(srcdir) + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +transform = @program_transform_name@ + +datarootdir = @datarootdir@ + +libdir = @libdir@ +includedir = @includedir@ +datadir = @datadir@ +localedir = @localedir@ + +gettextsrcdir = $(datadir)/gettext/intl +aliaspath = $(localedir) +subdir = intl + +@SET_MAKE@ + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) + +l = @INTL_LIBTOOL_SUFFIX_PREFIX@ + +AR = @AR@ +CC = @CC@ +LIBTOOL = @LIBTOOL@ +RANLIB = @RANLIB@ +YACC = @INTLBISON@ -y -d +YFLAGS = --name-prefix=__gettext + +ARFLAGS = @ARFLAGS@ + +LOCAL_DEFS = @LOCAL_DEFS@ + +DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ +-DLIBDIR=\"$(prefix)/libdata\" -DIN_LIBINTL \ +-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \ +-Dset_relocation_prefix=libintl_set_relocation_prefix \ +-Drelocate=libintl_relocate \ +-DDEPENDS_ON_LIBICONV=1 @DEFS@ ${LOCAL_DEFS} +CPPFLAGS = @CPPFLAGS@ +CFLAGS = @CFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = \ + gmo.h \ + gettextP.h \ + hash-string.h \ + loadinfo.h \ + plural-exp.h \ + eval-plural.h \ + localcharset.h \ + relocatable.h \ + os2compat.h \ + libgnuintl.h.in +SOURCES = \ + bindtextdom.c \ + dcgettext.c \ + dgettext.c \ + gettext.c \ + finddomain.c \ + loadmsgcat.c \ + localealias.c \ + textdomain.c \ + l10nflist.c \ + explodename.c \ + dcigettext.c \ + dcngettext.c \ + dngettext.c \ + ngettext.c \ + plural.y \ + plural-exp.c \ + localcharset.c \ + relocatable.c \ + localename.c \ + log.c \ + osdep.c \ + os2compat.c \ + intl-compat.c +OBJECTS = \ + bindtextdom.$lo \ + dcgettext.$lo \ + dgettext.$lo \ + gettext.$lo \ + finddomain.$lo \ + loadmsgcat.$lo \ + localealias.$lo \ + textdomain.$lo \ + l10nflist.$lo \ + explodename.$lo \ + dcigettext.$lo \ + dcngettext.$lo \ + dngettext.$lo \ + ngettext.$lo \ + plural.$lo \ + plural-exp.$lo \ + localcharset.$lo \ + relocatable.$lo \ + localename.$lo \ + log.$lo \ + osdep.$lo \ + intl-compat.$lo +DISTFILES.common = Makefile.in \ +config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES) +DISTFILES.generated = plural.c +DISTFILES.normal = VERSION +DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc \ +Makefile.vms libgnuintl.h.msvc-shared README.woe32 Makefile.msvc +DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \ +COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h + +all: all-@USE_INCLUDED_LIBINTL@ +all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed +all-no: all-no-@BUILD_INCLUDED_LIBINTL@ +all-no-yes: libgnuintl.$la +all-no-no: + +libintl.a libgnuintl.a: $(OBJECTS) + rm -f $@ + $(AR) $(ARFLAGS) $@ $(OBJECTS) + $(RANLIB) $@ + +libintl.la libgnuintl.la: $(OBJECTS) + $(LIBTOOL) --mode=link \ + $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ + $(OBJECTS) @LTLIBICONV@ $(LIBS) \ + -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ + -rpath $(libdir) \ + -no-undefined + +# Libtool's library version information for libintl. +# Before making a gettext release, the gettext maintainer must change this +# according to the libtool documentation, section "Library interface versions". +# Maintainers of other packages that include the intl directory must *not* +# change these values. +LTV_CURRENT=5 +LTV_REVISION=0 +LTV_AGE=3 + +.SUFFIXES: +.SUFFIXES: .c .y .o .lo .sin .sed + +.c.o: + $(COMPILE) $< + +.y.c: + $(YACC) $(YFLAGS) --output $@ $< + rm -f $*.h + +bindtextdom.lo: $(srcdir)/bindtextdom.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c +dcgettext.lo: $(srcdir)/dcgettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c +dgettext.lo: $(srcdir)/dgettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c +gettext.lo: $(srcdir)/gettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c +finddomain.lo: $(srcdir)/finddomain.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c +loadmsgcat.lo: $(srcdir)/loadmsgcat.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c +localealias.lo: $(srcdir)/localealias.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c +textdomain.lo: $(srcdir)/textdomain.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c +l10nflist.lo: $(srcdir)/l10nflist.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c +explodename.lo: $(srcdir)/explodename.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c +dcigettext.lo: $(srcdir)/dcigettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c +dcngettext.lo: $(srcdir)/dcngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c +dngettext.lo: $(srcdir)/dngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c +ngettext.lo: $(srcdir)/ngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c +plural.lo: $(srcdir)/plural.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c +plural-exp.lo: $(srcdir)/plural-exp.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c +localcharset.lo: $(srcdir)/localcharset.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c +relocatable.lo: $(srcdir)/relocatable.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c +localename.lo: $(srcdir)/localename.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c +log.lo: $(srcdir)/log.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c +osdep.lo: $(srcdir)/osdep.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c +intl-compat.lo: $(srcdir)/intl-compat.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c + +ref-add.sed: $(srcdir)/ref-add.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed + mv t-ref-add.sed ref-add.sed +ref-del.sed: $(srcdir)/ref-del.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed + mv t-ref-del.sed ref-del.sed + +INCLUDES = -I. -I$(srcdir) -I${top_builddir} -I${top_srcdir} + +libgnuintl.h: $(srcdir)/libgnuintl.h.in + cp $(srcdir)/libgnuintl.h.in libgnuintl.h + +libintl.h: libgnuintl.h + cmp libgnuintl.h libintl.h || cp libgnuintl.h libintl.h + +charset.alias: $(srcdir)/config.charset + $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ + mv t-$@ $@ + +check: all + +# We must not install the libintl.h/libintl.a files if we are on a +# system which has the GNU gettext() function in its C library or in a +# separate library. +# If you want to use the one which comes with this version of the +# package, you have to use `configure --with-included-gettext'. +install: install-exec install-data +install-exec: all + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ + if test "@RELOCATABLE@" = yes; then \ + dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \ + if test -n "$dependencies"; then \ + rm -f $(DESTDIR)$(libdir)/libintl.la; \ + fi; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir); \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \ + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + $(mkinstalldirs) $(DESTDIR)$(localedir); \ + test -f $(DESTDIR)$(localedir)/locale.alias \ + && orig=$(DESTDIR)$(localedir)/locale.alias \ + || orig=$(srcdir)/locale.alias; \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + : ; \ + fi +install-data: all + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ + $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ + dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \ + for file in $$dists; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \ + dists="$(DISTFILES.generated)"; \ + for file in $$dists; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + $(INSTALL_DATA) $$dir/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + dists="$(DISTFILES.obsolete)"; \ + for file in $$dists; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +install-strip: install + +installdirs: + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir); \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \ + $(mkinstalldirs) $(DESTDIR)$(localedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + rm -f $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libintl.$la; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no; then \ + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + if test -f $(DESTDIR)$(prefix)/libdata/charset.alias; then \ + temp=$(DESTDIR)$(prefix)/libdata/t-charset.alias; \ + dest=$(DESTDIR)$(prefix)/libdata/charset.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + if test -f $(DESTDIR)$(localedir)/locale.alias; then \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +info dvi ps pdf html: + +$(OBJECTS): ${top_builddir}/config.h libgnuintl.h +bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h +dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h +explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h +dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h +dcigettext.$lo: $(srcdir)/eval-plural.h +localcharset.$lo: $(srcdir)/localcharset.h +localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +ctags: CTAGS + +CTAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.la *.o *.obj *.lo core core.* + rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed + rm -f -r .libs _libs + +clean: mostlyclean + +distclean: clean + rm -f Makefile ID TAGS + if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \ + rm -f ChangeLog.inst $(DISTFILES.normal); \ + else \ + : ; \ + fi + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + +# GNU gettext needs not contain the file `VERSION' but contains some +# other files which should not be distributed in other packages. +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: Makefile + if test "$(PACKAGE)" = "gettext-tools"; then \ + : ; \ + else \ + if test "$(PACKAGE)" = "gettext-runtime"; then \ + additional="$(DISTFILES.gettext)"; \ + else \ + additional="$(DISTFILES.normal)"; \ + fi; \ + $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ + for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + cp -p $$dir/$$file $(distdir); \ + done; \ + fi + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status +# This would be more efficient, but doesn't work any more with autoconf-2.57, +# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used. +# cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/bash-5.1/lib/intl/VERSION b/bash-5.1/lib/intl/VERSION new file mode 100644 index 0000000..1303183 --- /dev/null +++ b/bash-5.1/lib/intl/VERSION @@ -0,0 +1 @@ +GNU gettext library from gettext-0.12.1 diff --git a/bash-5.1/lib/intl/bindtextdom.c b/bash-5.1/lib/intl/bindtextdom.c new file mode 100644 index 0000000..ef5479e --- /dev/null +++ b/bash-5.1/lib/intl/bindtextdom.c @@ -0,0 +1,376 @@ +/* bindtextdom.c - Implementation of the bindtextdomain(3) function */ + +/* Copyright (C) 1995-1998, 2000, 2001, 2002, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif +#include "gettextP.h" + +#ifdef _LIBC +/* We have to handle multi-threaded applications. */ +# include +#else +/* Provide dummy implementation if this is outside glibc. */ +# define __libc_rwlock_define(CLASS, NAME) +# define __libc_rwlock_wrlock(NAME) +# define __libc_rwlock_unlock(NAME) +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_dirname libintl_nl_default_dirname +# define _nl_domain_bindings libintl_nl_domain_bindings +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +/* Contains the default location of the message catalogs. */ +extern const char _nl_default_dirname[]; +#ifdef _LIBC +extern const char _nl_default_dirname_internal[] attribute_hidden; +#else +# define INTUSE(name) name +#endif + +/* List with bindings of specific domains. */ +extern struct binding *_nl_domain_bindings; + +/* Lock variable to protect the global data in the gettext implementation. */ +__libc_rwlock_define (extern, _nl_state_lock attribute_hidden) + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define BINDTEXTDOMAIN __bindtextdomain +# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define BINDTEXTDOMAIN libintl_bindtextdomain +# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset +#endif + +/* Prototypes for local functions. */ +static void set_binding_values PARAMS ((const char *domainname, + const char **dirnamep, + const char **codesetp)); + +/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP + to be used for the DOMAINNAME message catalog. + If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not + modified, only the current value is returned. + If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither + modified nor returned. */ +static void +set_binding_values (domainname, dirnamep, codesetp) + const char *domainname; + const char **dirnamep; + const char **codesetp; +{ + struct binding *binding; + int modified; + + /* Some sanity checks. */ + if (domainname == NULL || domainname[0] == '\0') + { + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + return; + } + + __libc_rwlock_wrlock (_nl_state_lock); + + modified = 0; + + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding != NULL) + { + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The current binding has be to returned. */ + *dirnamep = binding->dirname; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->dirname; + if (strcmp (dirname, result) != 0) + { + if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0) + result = (char *) INTUSE(_nl_default_dirname); + else + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, dirname, len); +#endif + } + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->dirname != INTUSE(_nl_default_dirname)) + free (binding->dirname); + + binding->dirname = result; + modified = 1; + } + } + *dirnamep = result; + } + } + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset == NULL) + /* The current binding has be to returned. */ + *codesetp = binding->codeset; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->codeset; + if (result == NULL || strcmp (codeset, result) != 0) + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, codeset, len); +#endif + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->codeset != NULL) + free (binding->codeset); + + binding->codeset = result; + binding->codeset_cntr++; + modified = 1; + } + } + *codesetp = result; + } + } + } + else if ((dirnamep == NULL || *dirnamep == NULL) + && (codesetp == NULL || *codesetp == NULL)) + { + /* Simply return the default values. */ + if (dirnamep) + *dirnamep = INTUSE(_nl_default_dirname); + if (codesetp) + *codesetp = NULL; + } + else + { + /* We have to create a new binding. */ + size_t len = strlen (domainname) + 1; + struct binding *new_binding = + (struct binding *) malloc (offsetof (struct binding, domainname) + len); + + if (__builtin_expect (new_binding == NULL, 0)) + goto failed; + + memcpy (new_binding->domainname, domainname, len); + + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The default value. */ + dirname = INTUSE(_nl_default_dirname); + else + { + if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0) + dirname = INTUSE(_nl_default_dirname); + else + { + char *result; +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; + memcpy (result, dirname, len); +#endif + dirname = result; + } + } + *dirnamep = dirname; + new_binding->dirname = (char *) dirname; + } + else + /* The default value. */ + new_binding->dirname = (char *) INTUSE(_nl_default_dirname); + + new_binding->codeset_cntr = 0; + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset != NULL) + { + char *result; + +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; + memcpy (result, codeset, len); +#endif + codeset = result; + new_binding->codeset_cntr++; + } + *codesetp = codeset; + new_binding->codeset = (char *) codeset; + } + else + new_binding->codeset = NULL; + + /* Now enqueue it. */ + if (_nl_domain_bindings == NULL + || strcmp (domainname, _nl_domain_bindings->domainname) < 0) + { + new_binding->next = _nl_domain_bindings; + _nl_domain_bindings = new_binding; + } + else + { + binding = _nl_domain_bindings; + while (binding->next != NULL + && strcmp (domainname, binding->next->domainname) > 0) + binding = binding->next; + + new_binding->next = binding->next; + binding->next = new_binding; + } + + modified = 1; + + /* Here we deal with memory allocation failures. */ + if (0) + { + failed_codeset: + if (new_binding->dirname != INTUSE(_nl_default_dirname)) + free (new_binding->dirname); + failed_dirname: + free (new_binding); + failed: + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + } + } + + /* If we modified any binding, we flush the caches. */ + if (modified) + ++_nl_msg_cat_cntr; + + __libc_rwlock_unlock (_nl_state_lock); +} + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +char * +BINDTEXTDOMAIN (domainname, dirname) + const char *domainname; + const char *dirname; +{ + set_binding_values (domainname, &dirname, NULL); + return (char *) dirname; +} + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +char * +BIND_TEXTDOMAIN_CODESET (domainname, codeset) + const char *domainname; + const char *codeset; +{ + set_binding_values (domainname, NULL, &codeset); + return (char *) codeset; +} + +#ifdef _LIBC +/* Aliases for function names in GNU C Library. */ +weak_alias (__bindtextdomain, bindtextdomain); +weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset); +#endif diff --git a/bash-5.1/lib/intl/config.charset b/bash-5.1/lib/intl/config.charset new file mode 100644 index 0000000..10c4439 --- /dev/null +++ b/bash-5.1/lib/intl/config.charset @@ -0,0 +1,465 @@ +#! /bin/sh +# Output a system dependent table of character encoding aliases. +# +# Copyright (C) 2000-2009 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# 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 . +# +# The table consists of lines of the form +# ALIAS CANONICAL +# +# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)". +# ALIAS is compared in a case sensitive way. +# +# CANONICAL is the GNU canonical name for this character encoding. +# It must be an encoding supported by libiconv. Support by GNU libc is +# also desirable. CANONICAL is case insensitive. Usually an upper case +# MIME charset name is preferred. +# The current list of GNU canonical charset names is as follows. +# +# name used by which systems a MIME name? +# ASCII, ANSI_X3.4-1968 glibc solaris freebsd +# ISO-8859-1 glibc aix hpux irix osf solaris freebsd yes +# ISO-8859-2 glibc aix hpux irix osf solaris freebsd yes +# ISO-8859-3 glibc solaris yes +# ISO-8859-4 osf solaris freebsd yes +# ISO-8859-5 glibc aix hpux irix osf solaris freebsd yes +# ISO-8859-6 glibc aix hpux solaris yes +# ISO-8859-7 glibc aix hpux irix osf solaris yes +# ISO-8859-8 glibc aix hpux osf solaris yes +# ISO-8859-9 glibc aix hpux irix osf solaris yes +# ISO-8859-13 glibc +# ISO-8859-14 glibc +# ISO-8859-15 glibc aix osf solaris freebsd +# KOI8-R glibc solaris freebsd yes +# KOI8-U glibc freebsd yes +# KOI8-T glibc +# CP437 dos +# CP775 dos +# CP850 aix osf dos +# CP852 dos +# CP855 dos +# CP856 aix +# CP857 dos +# CP861 dos +# CP862 dos +# CP864 dos +# CP865 dos +# CP866 freebsd dos +# CP869 dos +# CP874 woe32 dos +# CP922 aix +# CP932 aix woe32 dos +# CP943 aix +# CP949 osf woe32 dos +# CP950 woe32 dos +# CP1046 aix +# CP1124 aix +# CP1125 dos +# CP1129 aix +# CP1250 woe32 +# CP1251 glibc solaris woe32 +# CP1252 aix woe32 +# CP1253 woe32 +# CP1254 woe32 +# CP1255 glibc woe32 +# CP1256 woe32 +# CP1257 woe32 +# GB2312 glibc aix hpux irix solaris freebsd yes +# EUC-JP glibc aix hpux irix osf solaris freebsd yes +# EUC-KR glibc aix hpux irix osf solaris freebsd yes +# EUC-TW glibc aix hpux irix osf solaris +# BIG5 glibc aix hpux osf solaris freebsd yes +# BIG5-HKSCS glibc solaris +# GBK glibc aix osf solaris woe32 dos +# GB18030 glibc solaris +# SHIFT_JIS hpux osf solaris freebsd yes +# JOHAB glibc solaris woe32 +# TIS-620 glibc aix hpux osf solaris +# VISCII glibc yes +# TCVN5712-1 glibc +# GEORGIAN-PS glibc +# HP-ROMAN8 hpux +# HP-ARABIC8 hpux +# HP-GREEK8 hpux +# HP-HEBREW8 hpux +# HP-TURKISH8 hpux +# HP-KANA8 hpux +# DEC-KANJI osf +# DEC-HANYU osf +# UTF-8 glibc aix hpux osf solaris yes +# +# Note: Names which are not marked as being a MIME name should not be used in +# Internet protocols for information interchange (mail, news, etc.). +# +# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications +# must understand both names and treat them as equivalent. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM + +host="$1" +os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'` +echo "# This file contains a table of character encoding aliases," +echo "# suitable for operating system '${os}'." +echo "# It was automatically generated from config.charset." +# List of references, updated during installation: +echo "# Packages using this file: " +case "$os" in + linux* | *-gnu*) + # With glibc-2.1 or newer, we don't need any canonicalization, + # because glibc has iconv and both glibc and libiconv support all + # GNU canonical names directly. Therefore, the Makefile does not + # need to install the alias file at all. + # The following applies only to glibc-2.0.x and older libcs. + echo "ISO_646.IRV:1983 ASCII" + ;; + aix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "IBM-850 CP850" + echo "IBM-856 CP856" + echo "IBM-921 ISO-8859-13" + echo "IBM-922 CP922" + echo "IBM-932 CP932" + echo "IBM-943 CP943" + echo "IBM-1046 CP1046" + echo "IBM-1124 CP1124" + echo "IBM-1129 CP1129" + echo "IBM-1252 CP1252" + echo "IBM-eucCN GB2312" + echo "IBM-eucJP EUC-JP" + echo "IBM-eucKR EUC-KR" + echo "IBM-eucTW EUC-TW" + echo "big5 BIG5" + echo "GBK GBK" + echo "TIS-620 TIS-620" + echo "UTF-8 UTF-8" + ;; + hpux*) + echo "iso88591 ISO-8859-1" + echo "iso88592 ISO-8859-2" + echo "iso88595 ISO-8859-5" + echo "iso88596 ISO-8859-6" + echo "iso88597 ISO-8859-7" + echo "iso88598 ISO-8859-8" + echo "iso88599 ISO-8859-9" + echo "iso885915 ISO-8859-15" + echo "roman8 HP-ROMAN8" + echo "arabic8 HP-ARABIC8" + echo "greek8 HP-GREEK8" + echo "hebrew8 HP-HEBREW8" + echo "turkish8 HP-TURKISH8" + echo "kana8 HP-KANA8" + echo "tis620 TIS-620" + echo "big5 BIG5" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "hp15CN GB2312" + #echo "ccdc ?" # what is this? + echo "SJIS SHIFT_JIS" + echo "utf8 UTF-8" + ;; + irix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-9 ISO-8859-9" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + ;; + osf*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "cp850 CP850" + echo "big5 BIG5" + echo "dechanyu DEC-HANYU" + echo "dechanzi GB2312" + echo "deckanji DEC-KANJI" + echo "deckorean EUC-KR" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "GBK GBK" + echo "KSC5601 CP949" + echo "sdeckanji EUC-JP" + echo "SJIS SHIFT_JIS" + echo "TACTIS TIS-620" + echo "UTF-8 UTF-8" + ;; + solaris*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-3 ISO-8859-3" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "koi8-r KOI8-R" + echo "ansi-1251 CP1251" + echo "BIG5 BIG5" + echo "Big5-HKSCS BIG5-HKSCS" + echo "gb2312 GB2312" + echo "GBK GBK" + echo "GB18030 GB18030" + echo "cns11643 EUC-TW" + echo "5601 EUC-KR" + echo "ko_KR.johap92 JOHAB" + echo "eucJP EUC-JP" + echo "PCK SHIFT_JIS" + echo "TIS620.2533 TIS-620" + #echo "sun_eu_greek ?" # what is this? + echo "UTF-8 UTF-8" + ;; + freebsd* | os2*) + # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just + # reuse FreeBSD's locale data for OS/2. + echo "C ASCII" + echo "US-ASCII ASCII" + for l in la_LN lt_LN; do + echo "$l.ASCII ASCII" + done + for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ + fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \ + lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do + echo "$l.ISO_8859-1 ISO-8859-1" + echo "$l.DIS_8859-15 ISO-8859-15" + done + for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do + echo "$l.ISO_8859-2 ISO-8859-2" + done + for l in la_LN lt_LT; do + echo "$l.ISO_8859-4 ISO-8859-4" + done + for l in ru_RU ru_SU; do + echo "$l.KOI8-R KOI8-R" + echo "$l.ISO_8859-5 ISO-8859-5" + echo "$l.CP866 CP866" + done + echo "uk_UA.KOI8-U KOI8-U" + echo "zh_TW.BIG5 BIG5" + echo "zh_TW.Big5 BIG5" + echo "zh_CN.EUC GB2312" + echo "ja_JP.EUC EUC-JP" + echo "ja_JP.SJIS SHIFT_JIS" + echo "ja_JP.Shift_JIS SHIFT_JIS" + echo "ko_KR.EUC EUC-KR" + ;; + netbsd*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-15 ISO-8859-15" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "BIG5 BIG5" + echo "SJIS SHIFT_JIS" + ;; + beos*) + # BeOS has a single locale, and it has UTF-8 encoding. + echo "* UTF-8" + ;; + msdosdjgpp*) + # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "#" + echo "# The encodings given here may not all be correct." + echo "# If you find that the encoding given for your language and" + echo "# country is not the one your DOS machine actually uses, just" + echo "# correct it in this file, and send a mail to" + echo "# Juan Manuel Guerrero " + echo "# and Bruno Haible ." + echo "#" + echo "C ASCII" + # ISO-8859-1 languages + echo "ca CP850" + echo "ca_ES CP850" + echo "da CP865" # not CP850 ?? + echo "da_DK CP865" # not CP850 ?? + echo "de CP850" + echo "de_AT CP850" + echo "de_CH CP850" + echo "de_DE CP850" + echo "en CP850" + echo "en_AU CP850" # not CP437 ?? + echo "en_CA CP850" + echo "en_GB CP850" + echo "en_NZ CP437" + echo "en_US CP437" + echo "en_ZA CP850" # not CP437 ?? + echo "es CP850" + echo "es_AR CP850" + echo "es_BO CP850" + echo "es_CL CP850" + echo "es_CO CP850" + echo "es_CR CP850" + echo "es_CU CP850" + echo "es_DO CP850" + echo "es_EC CP850" + echo "es_ES CP850" + echo "es_GT CP850" + echo "es_HN CP850" + echo "es_MX CP850" + echo "es_NI CP850" + echo "es_PA CP850" + echo "es_PY CP850" + echo "es_PE CP850" + echo "es_SV CP850" + echo "es_UY CP850" + echo "es_VE CP850" + echo "et CP850" + echo "et_EE CP850" + echo "eu CP850" + echo "eu_ES CP850" + echo "fi CP850" + echo "fi_FI CP850" + echo "fr CP850" + echo "fr_BE CP850" + echo "fr_CA CP850" + echo "fr_CH CP850" + echo "fr_FR CP850" + echo "ga CP850" + echo "ga_IE CP850" + echo "gd CP850" + echo "gd_GB CP850" + echo "gl CP850" + echo "gl_ES CP850" + echo "id CP850" # not CP437 ?? + echo "id_ID CP850" # not CP437 ?? + echo "is CP861" # not CP850 ?? + echo "is_IS CP861" # not CP850 ?? + echo "it CP850" + echo "it_CH CP850" + echo "it_IT CP850" + echo "lt CP775" + echo "lt_LT CP775" + echo "lv CP775" + echo "lv_LV CP775" + echo "nb CP865" # not CP850 ?? + echo "nb_NO CP865" # not CP850 ?? + echo "nl CP850" + echo "nl_BE CP850" + echo "nl_NL CP850" + echo "nn CP865" # not CP850 ?? + echo "nn_NO CP865" # not CP850 ?? + echo "no CP865" # not CP850 ?? + echo "no_NO CP865" # not CP850 ?? + echo "pt CP850" + echo "pt_BR CP850" + echo "pt_PT CP850" + echo "sv CP850" + echo "sv_SE CP850" + # ISO-8859-2 languages + echo "cs CP852" + echo "cs_CZ CP852" + echo "hr CP852" + echo "hr_HR CP852" + echo "hu CP852" + echo "hu_HU CP852" + echo "pl CP852" + echo "pl_PL CP852" + echo "ro CP852" + echo "ro_RO CP852" + echo "sk CP852" + echo "sk_SK CP852" + echo "sl CP852" + echo "sl_SI CP852" + echo "sq CP852" + echo "sq_AL CP852" + echo "sr CP852" # CP852 or CP866 or CP855 ?? + echo "sr_YU CP852" # CP852 or CP866 or CP855 ?? + # ISO-8859-3 languages + echo "mt CP850" + echo "mt_MT CP850" + # ISO-8859-5 languages + echo "be CP866" + echo "be_BE CP866" + echo "bg CP866" # not CP855 ?? + echo "bg_BG CP866" # not CP855 ?? + echo "mk CP866" # not CP855 ?? + echo "mk_MK CP866" # not CP855 ?? + echo "ru CP866" + echo "ru_RU CP866" + echo "uk CP1125" + echo "uk_UA CP1125" + # ISO-8859-6 languages + echo "ar CP864" + echo "ar_AE CP864" + echo "ar_DZ CP864" + echo "ar_EG CP864" + echo "ar_IQ CP864" + echo "ar_IR CP864" + echo "ar_JO CP864" + echo "ar_KW CP864" + echo "ar_MA CP864" + echo "ar_OM CP864" + echo "ar_QA CP864" + echo "ar_SA CP864" + echo "ar_SY CP864" + # ISO-8859-7 languages + echo "el CP869" + echo "el_GR CP869" + # ISO-8859-8 languages + echo "he CP862" + echo "he_IL CP862" + # ISO-8859-9 languages + echo "tr CP857" + echo "tr_TR CP857" + # Japanese + echo "ja CP932" + echo "ja_JP CP932" + # Chinese + echo "zh_CN GBK" + echo "zh_TW CP950" # not CP938 ?? + # Korean + echo "kr CP949" # not CP934 ?? + echo "kr_KR CP949" # not CP934 ?? + # Thai + echo "th CP874" + echo "th_TH CP874" + # Other + echo "eo CP850" + echo "eo_EO CP850" + ;; +esac diff --git a/bash-5.1/lib/intl/dcgettext.c b/bash-5.1/lib/intl/dcgettext.c new file mode 100644 index 0000000..c156ca2 --- /dev/null +++ b/bash-5.1/lib/intl/dcgettext.c @@ -0,0 +1,61 @@ +/* dcgettext.c - Implementation of the dcgettext(3) function. */ + +/* Copyright (C) 1995-1999, 2000, 2001, 2002, 2006-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCGETTEXT __dcgettext +# define DCIGETTEXT __dcigettext +#else +# define DCGETTEXT libintl_dcgettext +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCGETTEXT (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ + return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +INTDEF(__dcgettext) +weak_alias (__dcgettext, dcgettext); +#endif diff --git a/bash-5.1/lib/intl/dcigettext.c b/bash-5.1/lib/intl/dcigettext.c new file mode 100644 index 0000000..c0f347e --- /dev/null +++ b/bash-5.1/lib/intl/dcigettext.c @@ -0,0 +1,1248 @@ +/* dcigettext.c - Implementation of the internal dcigettext function. */ + +/* Copyright (C) 1995-1999, 2000-2003, 2006-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#ifndef errno +extern int errno; +#endif +#ifndef __set_errno +# define __set_errno(val) errno = (val) +#endif + +#include +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include + +#ifdef _LIBC + /* Guess whether integer division by zero raises signal SIGFPE. + Set to 1 only if you know for sure. In case of doubt, set to 0. */ +# if defined __alpha__ || defined __arm__ || defined __i386__ \ + || defined __m68k__ || defined __s390__ +# define INTDIV0_RAISES_SIGFPE 1 +# else +# define INTDIV0_RAISES_SIGFPE 0 +# endif +#endif +#if !INTDIV0_RAISES_SIGFPE +# include +#endif + +#if defined HAVE_SYS_PARAM_H || defined _LIBC +# include +#endif + +#include "gettextP.h" +#include "plural-exp.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif +#include "hash-string.h" + +/* Thread safetyness. */ +#ifdef _LIBC +# include +#else +/* Provide dummy implementation if this is outside glibc. */ +# define __libc_lock_define_initialized(CLASS, NAME) +# define __libc_lock_lock(NAME) +# define __libc_lock_unlock(NAME) +# define __libc_rwlock_define_initialized(CLASS, NAME) +# define __libc_rwlock_rdlock(NAME) +# define __libc_rwlock_unlock(NAME) +#endif + +/* Alignment of types. */ +#if defined __GNUC__ && __GNUC__ >= 2 +# define alignof(TYPE) __alignof__ (TYPE) +#else +# define alignof(TYPE) \ + ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2) +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_default_domain libintl_nl_default_default_domain +# define _nl_current_default_domain libintl_nl_current_default_domain +# define _nl_default_dirname libintl_nl_default_dirname +# define _nl_domain_bindings libintl_nl_domain_bindings +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +#if defined (SHELL) && !defined (HAVE_GETCWD) +# define HAVE_GETCWD +#endif + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define getcwd __getcwd +# ifndef stpcpy +# define stpcpy __stpcpy +# endif +# define tfind __tfind +#else +# if !defined HAVE_GETCWD +char *getwd (); +# define getcwd(buf, max) getwd (buf) +# else +char *getcwd (); +# endif +# ifndef HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +# endif +# ifndef HAVE_MEMPCPY +static void *mempcpy PARAMS ((void *dest, const void *src, size_t n)); +# endif +#endif + +/* Amount to increase buffer size by in each try. */ +#define PATH_INCR 32 + +/* The following is from pathmax.h. */ +/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define + PATH_MAX but might cause redefinition warnings when sys/param.h is + later included (as on MORE/BSD 4.3). */ +#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__) +# include +#endif + +#ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 255 +#endif + +#if !defined PATH_MAX && defined _PC_PATH_MAX +# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) +#endif + +/* Don't include sys/param.h if it already has been. */ +#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN +# include +#endif + +#if !defined PATH_MAX && defined MAXPATHLEN +# define PATH_MAX MAXPATHLEN +#endif + +#ifndef PATH_MAX +# define PATH_MAX _POSIX_PATH_MAX +#endif + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, + it may be concatenated to a directory pathname. + IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. + */ +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) +# define IS_PATH_WITH_DIR(P) \ + (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) +# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) +#endif + +/* This is the type used for the search tree where known translations + are stored. */ +struct known_translation_t +{ + /* Domain in which to search. */ + char *domainname; + + /* The category. */ + int category; + + /* State of the catalog counter at the point the string was found. */ + int counter; + + /* Catalog where the string was found. */ + struct loaded_l10nfile *domain; + + /* And finally the translation. */ + const char *translation; + size_t translation_length; + + /* Pointer to the string in question. */ + char msgid[ZERO]; +}; + +/* Root of the search tree with known translations. We can use this + only if the system provides the `tsearch' function family. */ +#if defined HAVE_TSEARCH || defined _LIBC +# include + +static void *root; + +# ifdef _LIBC +# define tsearch __tsearch +# endif + +/* Function to compare two entries in the table of known translations. */ +static int transcmp PARAMS ((const void *p1, const void *p2)); +static int +transcmp (p1, p2) + const void *p1; + const void *p2; +{ + const struct known_translation_t *s1; + const struct known_translation_t *s2; + int result; + + s1 = (const struct known_translation_t *) p1; + s2 = (const struct known_translation_t *) p2; + + result = strcmp (s1->msgid, s2->msgid); + if (result == 0) + { + result = strcmp (s1->domainname, s2->domainname); + if (result == 0) + /* We compare the category last (though this is the cheapest + operation) since it is hopefully always the same (namely + LC_MESSAGES). */ + result = s1->category - s2->category; + } + + return result; +} +#endif + +#ifndef INTVARDEF +# define INTVARDEF(name) +#endif +#ifndef INTUSE +# define INTUSE(name) name +#endif + +/* Name of the default domain used for gettext(3) prior any call to + textdomain(3). The default value for this is "messages". */ +const char _nl_default_default_domain[] attribute_hidden = "messages"; + +/* Value used as the default domain for gettext(3). */ +const char *_nl_current_default_domain attribute_hidden + = _nl_default_default_domain; + +/* Contains the default location of the message catalogs. */ +#if defined __EMX__ +extern const char _nl_default_dirname[]; +#else +const char _nl_default_dirname[] = LOCALEDIR; +INTVARDEF (_nl_default_dirname) +#endif + +/* List with bindings of specific domains created by bindtextdomain() + calls. */ +struct binding *_nl_domain_bindings; + +/* Prototypes for local functions. */ +static char *plural_lookup PARAMS ((struct loaded_l10nfile *domain, + unsigned long int n, + const char *translation, + size_t translation_len)) + internal_function; +static const char *guess_category_value PARAMS ((int category, + const char *categoryname)) + internal_function; +#ifdef _LIBC +# include "../locale/localeinfo.h" +# define category_to_name(category) _nl_category_names[category] +#else +static const char *category_to_name PARAMS ((int category)) internal_function; +#endif + + +/* For those loosing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +/* Nothing has to be done. */ +# define freea(p) /* nothing */ +# define ADD_BLOCK(list, address) /* nothing */ +# define FREE_BLOCKS(list) /* nothing */ +#else +struct block_list +{ + void *address; + struct block_list *next; +}; +# define ADD_BLOCK(list, addr) \ + do { \ + struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ + /* If we cannot get a free block we cannot add the new element to \ + the list. */ \ + if (newp != NULL) { \ + newp->address = (addr); \ + newp->next = (list); \ + (list) = newp; \ + } \ + } while (0) +# define FREE_BLOCKS(list) \ + do { \ + while (list != NULL) { \ + struct block_list *old = list; \ + list = list->next; \ + free (old->address); \ + free (old); \ + } \ + } while (0) +# undef alloca +# define alloca(size) (malloc (size)) +# define freea(p) free (p) +#endif /* have alloca */ + + +#ifdef _LIBC +/* List of blocks allocated for translations. */ +typedef struct transmem_list +{ + struct transmem_list *next; + char data[ZERO]; +} transmem_block_t; +static struct transmem_list *transmem_list; +#else +typedef unsigned char transmem_block_t; +#endif + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCIGETTEXT __dcigettext +#else +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +#ifdef _LIBC +__libc_rwlock_define_initialized (, _nl_state_lock attribute_hidden) +#endif + +/* Checking whether the binaries runs SUID must be done and glibc provides + easier methods therefore we make a difference here. */ +#ifdef _LIBC +# define ENABLE_SECURE __libc_enable_secure +# define DETERMINE_SECURE +#else +# ifndef HAVE_GETUID +# define getuid() 0 +# endif +# ifndef HAVE_GETGID +# define getgid() 0 +# endif +# ifndef HAVE_GETEUID +# define geteuid() getuid() +# endif +# ifndef HAVE_GETEGID +# define getegid() getgid() +# endif +static int enable_secure; +# define ENABLE_SECURE (enable_secure == 1) +# define DETERMINE_SECURE \ + if (enable_secure == 0) \ + { \ + if (getuid () != geteuid () || getgid () != getegid ()) \ + enable_secure = 1; \ + else \ + enable_secure = -1; \ + } +#endif + +#ifndef HAVE_RAISE +# define raise(x) kill (getpid (), (x)) +#endif + +/* Get the function to evaluate the plural expression. */ +#include "eval-plural.h" + +/* Look up MSGID in the DOMAINNAME message catalog for the current + CATEGORY locale and, if PLURAL is nonzero, search over string + depending on the plural form determined by N. */ +char * +DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category) + const char *domainname; + const char *msgid1; + const char *msgid2; + int plural; + unsigned long int n; + int category; +{ +#ifndef HAVE_ALLOCA + struct block_list *block_list = NULL; +#endif + struct loaded_l10nfile *domain; + struct binding *binding; + const char *categoryname; + const char *categoryvalue; + char *dirname, *xdomainname; + char *single_locale; + char *retval; + size_t retlen; + int saved_errno; +#if defined HAVE_TSEARCH || defined _LIBC + struct known_translation_t *search; + struct known_translation_t **foundp = NULL; + size_t msgid_len; +#endif + size_t domainname_len; + + /* If no real MSGID is given return NULL. */ + if (msgid1 == NULL) + return NULL; + +#ifdef _LIBC + if (category < 0 || category >= __LC_LAST || category == LC_ALL) + /* Bogus. */ + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); +#endif + + __libc_rwlock_rdlock (_nl_state_lock); + + /* If DOMAINNAME is NULL, we are interested in the default domain. If + CATEGORY is not LC_MESSAGES this might not make much sense but the + definition left this undefined. */ + if (domainname == NULL) + domainname = _nl_current_default_domain; + + /* OS/2 specific: backward compatibility with older libintl versions */ +#ifdef LC_MESSAGES_COMPAT + if (category == LC_MESSAGES_COMPAT) + category = LC_MESSAGES; +#endif + +#if defined HAVE_TSEARCH || defined _LIBC + msgid_len = strlen (msgid1) + 1; + + /* Try to find the translation among those which we found at + some time. */ + search = (struct known_translation_t *) + alloca (offsetof (struct known_translation_t, msgid) + msgid_len); + memcpy (search->msgid, msgid1, msgid_len); + search->domainname = (char *) domainname; + search->category = category; + + foundp = (struct known_translation_t **) tfind (search, &root, transcmp); + freea (search); + if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) + { + /* Now deal with plural. */ + if (plural) + retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation, + (*foundp)->translation_length); + else + retval = (char *) (*foundp)->translation; + + __libc_rwlock_unlock (_nl_state_lock); + return retval; + } +#endif + + /* Preserve the `errno' value. */ + saved_errno = errno; + + /* See whether this is a SUID binary or not. */ + DETERMINE_SECURE; + + /* First find matching binding. */ + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding == NULL) + dirname = (char *) INTUSE(_nl_default_dirname); + else if (IS_ABSOLUTE_PATH (binding->dirname)) + dirname = binding->dirname; + else + { + /* We have a relative path. Make it absolute now. */ + size_t dirname_len = strlen (binding->dirname) + 1; + size_t path_max; + char *ret; + + path_max = (unsigned int) PATH_MAX; + path_max += 2; /* The getcwd docs say to do this. */ + + for (;;) + { + dirname = (char *) alloca (path_max + dirname_len); + ADD_BLOCK (block_list, dirname); + + __set_errno (0); + ret = getcwd (dirname, path_max); + if (ret != NULL || errno != ERANGE) + break; + + path_max += path_max / 2; + path_max += PATH_INCR; + } + + if (ret == NULL) + /* We cannot get the current working directory. Don't signal an + error but simply return the default string. */ + goto return_untranslated; + + stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); + } + + /* Now determine the symbolic name of CATEGORY and its value. */ + categoryname = category_to_name (category); + categoryvalue = guess_category_value (category, categoryname); + + domainname_len = strlen (domainname); + xdomainname = (char *) alloca (strlen (categoryname) + + domainname_len + 5); + ADD_BLOCK (block_list, xdomainname); + + stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), + domainname, domainname_len), + ".mo"); + + /* Creating working area. */ + single_locale = (char *) alloca (strlen (categoryvalue) + 1); + ADD_BLOCK (block_list, single_locale); + + + /* Search for the given string. This is a loop because we perhaps + got an ordered list of languages to consider for the translation. */ + while (1) + { + /* Make CATEGORYVALUE point to the next element of the list. */ + while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') + ++categoryvalue; + if (categoryvalue[0] == '\0') + { + /* The whole contents of CATEGORYVALUE has been searched but + no valid entry has been found. We solve this situation + by implicitly appending a "C" entry, i.e. no translation + will take place. */ + single_locale[0] = 'C'; + single_locale[1] = '\0'; + } + else + { + char *cp = single_locale; + while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') + *cp++ = *categoryvalue++; + *cp = '\0'; + + /* When this is a SUID binary we must not allow accessing files + outside the dedicated directories. */ + if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale)) + /* Ingore this entry. */ + continue; + } + + /* If the current locale value is C (or POSIX) we don't load a + domain. Return the MSGID. */ + if (strcmp (single_locale, "C") == 0 + || strcmp (single_locale, "POSIX") == 0) + break; + + /* Find structure describing the message catalog matching the + DOMAINNAME and CATEGORY. */ + domain = _nl_find_domain (dirname, single_locale, xdomainname, binding); + + if (domain != NULL) + { + retval = _nl_find_msg (domain, binding, msgid1, &retlen); + + if (retval == NULL) + { + int cnt; + + for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) + { + retval = _nl_find_msg (domain->successor[cnt], binding, + msgid1, &retlen); + + if (retval != NULL) + { + domain = domain->successor[cnt]; + break; + } + } + } + + if (retval != NULL) + { + /* Found the translation of MSGID1 in domain DOMAIN: + starting at RETVAL, RETLEN bytes. */ + FREE_BLOCKS (block_list); +#if defined HAVE_TSEARCH || defined _LIBC + if (foundp == NULL) + { + /* Create a new entry and add it to the search tree. */ + struct known_translation_t *newp; + + newp = (struct known_translation_t *) + malloc (offsetof (struct known_translation_t, msgid) + + msgid_len + domainname_len + 1); + if (newp != NULL) + { + newp->domainname = + mempcpy (newp->msgid, msgid1, msgid_len); + memcpy (newp->domainname, domainname, domainname_len + 1); + newp->category = category; + newp->counter = _nl_msg_cat_cntr; + newp->domain = domain; + newp->translation = retval; + newp->translation_length = retlen; + + /* Insert the entry in the search tree. */ + foundp = (struct known_translation_t **) + tsearch (newp, &root, transcmp); + if (foundp == NULL + || __builtin_expect (*foundp != newp, 0)) + /* The insert failed. */ + free (newp); + } + } + else + { + /* We can update the existing entry. */ + (*foundp)->counter = _nl_msg_cat_cntr; + (*foundp)->domain = domain; + (*foundp)->translation = retval; + (*foundp)->translation_length = retlen; + } +#endif + __set_errno (saved_errno); + + /* Now deal with plural. */ + if (plural) + retval = plural_lookup (domain, n, retval, retlen); + + __libc_rwlock_unlock (_nl_state_lock); + return retval; + } + } + } + + return_untranslated: + /* Return the untranslated MSGID. */ + FREE_BLOCKS (block_list); + __libc_rwlock_unlock (_nl_state_lock); +#ifndef _LIBC + if (!ENABLE_SECURE) + { + extern void _nl_log_untranslated PARAMS ((const char *logfilename, + const char *domainname, + const char *msgid1, + const char *msgid2, + int plural)); + const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED"); + + if (logfilename != NULL && logfilename[0] != '\0') + _nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural); + } +#endif + __set_errno (saved_errno); + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); +} + + +char * +internal_function +_nl_find_msg (domain_file, domainbinding, msgid, lengthp) + struct loaded_l10nfile *domain_file; + struct binding *domainbinding; + const char *msgid; + size_t *lengthp; +{ + struct loaded_domain *domain; + nls_uint32 nstrings; + size_t act; + char *result; + size_t resultlen; + + if (domain_file->decided == 0) + _nl_load_domain (domain_file, domainbinding); + + if (domain_file->data == NULL) + return NULL; + + domain = (struct loaded_domain *) domain_file->data; + + nstrings = domain->nstrings; + + /* Locate the MSGID and its translation. */ + if (domain->hash_tab != NULL) + { + /* Use the hashing table. */ + nls_uint32 len = strlen (msgid); + nls_uint32 hash_val = hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); + + while (1) + { + nls_uint32 nstr = + W (domain->must_swap_hash_tab, domain->hash_tab[idx]); + + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + nstr--; + + /* Compare msgid with the original string at index nstr. + We compare the lengths with >=, not ==, because plural entries + are represented by strings with an embedded NUL. */ + if (nstr < nstrings + ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len + && (strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr].offset)) + == 0) + : domain->orig_sysdep_tab[nstr - nstrings].length > len + && (strcmp (msgid, + domain->orig_sysdep_tab[nstr - nstrings].pointer) + == 0)) + { + act = nstr; + goto found; + } + + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + } + /* NOTREACHED */ + } + else + { + /* Try the default method: binary search in the sorted array of + messages. */ + size_t top, bottom; + + bottom = 0; + top = nstrings; + while (bottom < top) + { + int cmp_val; + + act = (bottom + top) / 2; + cmp_val = strcmp (msgid, (domain->data + + W (domain->must_swap, + domain->orig_tab[act].offset))); + if (cmp_val < 0) + top = act; + else if (cmp_val > 0) + bottom = act + 1; + else + goto found; + } + /* No translation was found. */ + return NULL; + } + + found: + /* The translation was found at index ACT. If we have to convert the + string to use a different character set, this is the time. */ + if (act < nstrings) + { + result = (char *) + (domain->data + W (domain->must_swap, domain->trans_tab[act].offset)); + resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; + } + else + { + result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer; + resultlen = domain->trans_sysdep_tab[act - nstrings].length; + } + +#if defined _LIBC || HAVE_ICONV + if (domain->codeset_cntr + != (domainbinding != NULL ? domainbinding->codeset_cntr : 0)) + { + /* The domain's codeset has changed through bind_textdomain_codeset() + since the message catalog was initialized or last accessed. We + have to reinitialize the converter. */ + _nl_free_domain_conv (domain); + _nl_init_domain_conv (domain_file, domain, domainbinding); + } + + if ( +# ifdef _LIBC + domain->conv != (__gconv_t) -1 +# else +# if HAVE_ICONV + domain->conv != (iconv_t) -1 +# endif +# endif + ) + { + /* We are supposed to do a conversion. First allocate an + appropriate table with the same structure as the table + of translations in the file, where we can put the pointers + to the converted strings in. + There is a slight complication with plural entries. They + are represented by consecutive NUL terminated strings. We + handle this case by converting RESULTLEN bytes, including + NULs. */ + + if (domain->conv_tab == NULL + && ((domain->conv_tab = + (char **) calloc (nstrings + domain->n_sysdep_strings, + sizeof (char *))) + == NULL)) + /* Mark that we didn't succeed allocating a table. */ + domain->conv_tab = (char **) -1; + + if (__builtin_expect (domain->conv_tab == (char **) -1, 0)) + /* Nothing we can do, no more memory. */ + goto converted; + + if (domain->conv_tab[act] == NULL) + { + /* We haven't used this string so far, so it is not + translated yet. Do this now. */ + /* We use a bit more efficient memory handling. + We allocate always larger blocks which get used over + time. This is faster than many small allocations. */ + __libc_lock_define_initialized (static, lock) +# define INITIAL_BLOCK_SIZE 4080 + static unsigned char *freemem; + static size_t freemem_size; + + const unsigned char *inbuf; + unsigned char *outbuf; + int malloc_count; +# ifndef _LIBC + transmem_block_t *transmem_list = NULL; +# endif + + __libc_lock_lock (lock); + + inbuf = (const unsigned char *) result; + outbuf = freemem + sizeof (size_t); + + malloc_count = 0; + while (1) + { + transmem_block_t *newmem; +# ifdef _LIBC + size_t non_reversible; + int res; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + res = __gconv (domain->conv, + &inbuf, inbuf + resultlen, + &outbuf, + outbuf + freemem_size - sizeof (size_t), + &non_reversible); + + if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT) + break; + + if (res != __GCONV_FULL_OUTPUT) + { + __libc_lock_unlock (lock); + goto converted; + } + + inbuf = result; +# else +# if HAVE_ICONV + const char *inptr = (const char *) inbuf; + size_t inleft = resultlen; + char *outptr = (char *) outbuf; + size_t outleft; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + outleft = freemem_size - sizeof (size_t); + if (iconv (domain->conv, + (ICONV_CONST char **) &inptr, &inleft, + &outptr, &outleft) + != (size_t) (-1)) + { + outbuf = (unsigned char *) outptr; + break; + } + if (errno != E2BIG) + { + __libc_lock_unlock (lock); + goto converted; + } +# endif +# endif + + resize_freemem: + /* We must allocate a new buffer or resize the old one. */ + if (malloc_count > 0) + { + ++malloc_count; + freemem_size = malloc_count * INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) realloc (transmem_list, + freemem_size); +# ifdef _LIBC + if (newmem != NULL) + transmem_list = transmem_list->next; + else + { + struct transmem_list *old = transmem_list; + + transmem_list = transmem_list->next; + free (old); + } +# endif + } + else + { + malloc_count = 1; + freemem_size = INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) malloc (freemem_size); + } + if (__builtin_expect (newmem == NULL, 0)) + { + freemem = NULL; + freemem_size = 0; + __libc_lock_unlock (lock); + goto converted; + } + +# ifdef _LIBC + /* Add the block to the list of blocks we have to free + at some point. */ + newmem->next = transmem_list; + transmem_list = newmem; + + freemem = newmem->data; + freemem_size -= offsetof (struct transmem_list, data); +# else + transmem_list = newmem; + freemem = newmem; +# endif + + outbuf = freemem + sizeof (size_t); + } + + /* We have now in our buffer a converted string. Put this + into the table of conversions. */ + *(size_t *) freemem = outbuf - freemem - sizeof (size_t); + domain->conv_tab[act] = (char *) freemem; + /* Shrink freemem, but keep it aligned. */ + freemem_size -= outbuf - freemem; + freemem = outbuf; + freemem += freemem_size & (alignof (size_t) - 1); + freemem_size = freemem_size & ~ (alignof (size_t) - 1); + + __libc_lock_unlock (lock); + } + + /* Now domain->conv_tab[act] contains the translation of all + the plural variants. */ + result = domain->conv_tab[act] + sizeof (size_t); + resultlen = *(size_t *) domain->conv_tab[act]; + } + + converted: + /* The result string is converted. */ + +#endif /* _LIBC || HAVE_ICONV */ + + *lengthp = resultlen; + return result; +} + + +/* Look up a plural variant. */ +static char * +internal_function +plural_lookup (domain, n, translation, translation_len) + struct loaded_l10nfile *domain; + unsigned long int n; + const char *translation; + size_t translation_len; +{ + struct loaded_domain *domaindata = (struct loaded_domain *) domain->data; + unsigned long int index; + const char *p; + + index = plural_eval (domaindata->plural, n); + if (index >= domaindata->nplurals) + /* This should never happen. It means the plural expression and the + given maximum value do not match. */ + index = 0; + + /* Skip INDEX strings at TRANSLATION. */ + p = translation; + while (index-- > 0) + { +#ifdef _LIBC + p = __rawmemchr (p, '\0'); +#else + p = strchr (p, '\0'); +#endif + /* And skip over the NUL byte. */ + p++; + + if (p >= translation + translation_len) + /* This should never happen. It means the plural expression + evaluated to a value larger than the number of variants + available for MSGID1. */ + return (char *) translation; + } + return (char *) p; +} + +#ifndef _LIBC +/* Return string representation of locale CATEGORY. */ +static const char * +internal_function +category_to_name (category) + int category; +{ + const char *retval; + + switch (category) + { +#ifdef LC_COLLATE + case LC_COLLATE: + retval = "LC_COLLATE"; + break; +#endif +#ifdef LC_CTYPE + case LC_CTYPE: + retval = "LC_CTYPE"; + break; +#endif +#ifdef LC_MONETARY + case LC_MONETARY: + retval = "LC_MONETARY"; + break; +#endif +#ifdef LC_NUMERIC + case LC_NUMERIC: + retval = "LC_NUMERIC"; + break; +#endif +#ifdef LC_TIME + case LC_TIME: + retval = "LC_TIME"; + break; +#endif +#ifdef LC_MESSAGES + case LC_MESSAGES: + retval = "LC_MESSAGES"; + break; +#endif +#ifdef LC_RESPONSE + case LC_RESPONSE: + retval = "LC_RESPONSE"; + break; +#endif +#ifdef LC_ALL + case LC_ALL: + /* This might not make sense but is perhaps better than any other + value. */ + retval = "LC_ALL"; + break; +#endif + default: + /* If you have a better idea for a default value let me know. */ + retval = "LC_XXX"; + } + + return retval; +} +#endif + +/* Guess value of current locale from value of the environment variables. */ +static const char * +internal_function +guess_category_value (category, categoryname) + int category; + const char *categoryname; +{ + const char *language; + const char *retval; + + /* The highest priority value is the `LANGUAGE' environment + variable. But we don't use the value if the currently selected + locale is the C locale. This is a GNU extension. */ + language = getenv ("LANGUAGE"); + if (language != NULL && language[0] == '\0') + language = NULL; + + /* We have to proceed with the POSIX methods of looking to `LC_ALL', + `LC_xxx', and `LANG'. On some systems this can be done by the + `setlocale' function itself. */ +#ifdef _LIBC + retval = __current_locale_name (category); +#else + retval = _nl_locale_name (category, categoryname); +#endif + + /* Ignore LANGUAGE if the locale is set to "C" because + 1. "C" locale usually uses the ASCII encoding, and most international + messages use non-ASCII characters. These characters get displayed + as question marks (if using glibc's iconv()) or as invalid 8-bit + characters (because other iconv()s refuse to convert most non-ASCII + characters to ASCII). In any case, the output is ugly. + 2. The precise output of some programs in the "C" locale is specified + by POSIX and should not depend on environment variables like + "LANGUAGE". We allow such programs to use gettext(). */ + return language != NULL && strcmp (retval, "C") != 0 ? language : retval; +} + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif + +#if !_LIBC && !HAVE_MEMPCPY +static void * +mempcpy (dest, src, n) + void *dest; + const void *src; + size_t n; +{ + return (void *) ((char *) memcpy (dest, src, n) + n); +} +#endif + + +#ifdef _LIBC +/* If we want to free all resources we have to do some work at + program's end. */ +libc_freeres_fn (free_mem) +{ + void *old; + + while (_nl_domain_bindings != NULL) + { + struct binding *oldp = _nl_domain_bindings; + _nl_domain_bindings = _nl_domain_bindings->next; + if (oldp->dirname != INTUSE(_nl_default_dirname)) + /* Yes, this is a pointer comparison. */ + free (oldp->dirname); + free (oldp->codeset); + free (oldp); + } + + if (_nl_current_default_domain != _nl_default_default_domain) + /* Yes, again a pointer comparison. */ + free ((char *) _nl_current_default_domain); + + /* Remove the search tree with the known translations. */ + __tdestroy (root, free); + root = NULL; + + while (transmem_list != NULL) + { + old = transmem_list; + transmem_list = transmem_list->next; + free (old); + } +} +#endif diff --git a/bash-5.1/lib/intl/dcngettext.c b/bash-5.1/lib/intl/dcngettext.c new file mode 100644 index 0000000..3d70b18 --- /dev/null +++ b/bash-5.1/lib/intl/dcngettext.c @@ -0,0 +1,62 @@ +/* dcngettext.c - Implementation of the dcngettext(3) function. */ + +/* Copyright (C) 1995-1999, 2000, 2001, 2002, 2006-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCNGETTEXT __dcngettext +# define DCIGETTEXT __dcigettext +#else +# define DCNGETTEXT libintl_dcngettext +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCNGETTEXT (domainname, msgid1, msgid2, n, category) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; + int category; +{ + return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcngettext, dcngettext); +#endif diff --git a/bash-5.1/lib/intl/dgettext.c b/bash-5.1/lib/intl/dgettext.c new file mode 100644 index 0000000..5351631 --- /dev/null +++ b/bash-5.1/lib/intl/dgettext.c @@ -0,0 +1,61 @@ +/* dgettext.c - Implementation of the dgettext(3) function. */ + +/* Copyright (C) 1995-1997, 2000, 2001, 2002, 2006-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DGETTEXT __dgettext +# define DCGETTEXT INTUSE(__dcgettext) +#else +# define DGETTEXT libintl_dgettext +# define DCGETTEXT libintl_dcgettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale. */ +char * +DGETTEXT (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return DCGETTEXT (domainname, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dgettext, dgettext); +#endif diff --git a/bash-5.1/lib/intl/dngettext.c b/bash-5.1/lib/intl/dngettext.c new file mode 100644 index 0000000..4276f3b --- /dev/null +++ b/bash-5.1/lib/intl/dngettext.c @@ -0,0 +1,63 @@ +/* dngettext.c - Implementation of the dngettext(3) function. */ + +/* Copyright (C) 1995-1997, 2000, 2001, 2002, 2005, 2006, 2008,2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DNGETTEXT __dngettext +# define DCNGETTEXT __dcngettext +#else +# define DNGETTEXT libintl_dngettext +# define DCNGETTEXT libintl_dcngettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale and skip message according to the plural form. */ +char * +DNGETTEXT (domainname, msgid1, msgid2, n) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dngettext, dngettext); +#endif diff --git a/bash-5.1/lib/intl/eval-plural.h b/bash-5.1/lib/intl/eval-plural.h new file mode 100644 index 0000000..3441c74 --- /dev/null +++ b/bash-5.1/lib/intl/eval-plural.h @@ -0,0 +1,116 @@ +/* eval-plural.c - Plural expression evaluation. */ + +/* Copyright (C) 2000-2002, 2006-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifndef STATIC +#define STATIC static +#endif + +/* Evaluate the plural expression and return an index value. */ +STATIC unsigned long int plural_eval PARAMS ((struct expression *pexp, + unsigned long int n)) + internal_function; + +STATIC +unsigned long int +internal_function +plural_eval (pexp, n) + struct expression *pexp; + unsigned long int n; +{ + switch (pexp->nargs) + { + case 0: + switch (pexp->operation) + { + case var: + return n; + case num: + return pexp->val.num; + default: + break; + } + /* NOTREACHED */ + break; + case 1: + { + /* pexp->operation must be lnot. */ + unsigned long int arg = plural_eval (pexp->val.args[0], n); + return ! arg; + } + case 2: + { + unsigned long int leftarg = plural_eval (pexp->val.args[0], n); + if (pexp->operation == lor) + return leftarg || plural_eval (pexp->val.args[1], n); + else if (pexp->operation == land) + return leftarg && plural_eval (pexp->val.args[1], n); + else + { + unsigned long int rightarg = plural_eval (pexp->val.args[1], n); + + switch (pexp->operation) + { + case mult: + return leftarg * rightarg; + case divide: +#if !INTDIV0_RAISES_SIGFPE + if (rightarg == 0) + raise (SIGFPE); +#endif + return leftarg / rightarg; + case module: +#if !INTDIV0_RAISES_SIGFPE + if (rightarg == 0) + raise (SIGFPE); +#endif + return leftarg % rightarg; + case plus: + return leftarg + rightarg; + case minus: + return leftarg - rightarg; + case less_than: + return leftarg < rightarg; + case greater_than: + return leftarg > rightarg; + case less_or_equal: + return leftarg <= rightarg; + case greater_or_equal: + return leftarg >= rightarg; + case equal: + return leftarg == rightarg; + case not_equal: + return leftarg != rightarg; + default: + break; + } + } + /* NOTREACHED */ + break; + } + case 3: + { + /* pexp->operation must be qmop. */ + unsigned long int boolarg = plural_eval (pexp->val.args[0], n); + return plural_eval (pexp->val.args[boolarg ? 1 : 2], n); + } + } + /* NOTREACHED */ + return 0; +} diff --git a/bash-5.1/lib/intl/explodename.c b/bash-5.1/lib/intl/explodename.c new file mode 100644 index 0000000..adc3640 --- /dev/null +++ b/bash-5.1/lib/intl/explodename.c @@ -0,0 +1,195 @@ +/* explodename.c */ + +/* Copyright (C) 1995-1998, 2000, 2001, 2005-2009 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +char * +_nl_find_language (name) + const char *name; +{ + while (name[0] != '\0' && name[0] != '_' && name[0] != '@' + && name[0] != '+' && name[0] != ',') + ++name; + + return (char *) name; +} + + +int +_nl_explode_name (name, language, modifier, territory, codeset, + normalized_codeset, special, sponsor, revision) + char *name; + const char **language; + const char **modifier; + const char **territory; + const char **codeset; + const char **normalized_codeset; + const char **special; + const char **sponsor; + const char **revision; +{ + enum { undecided, xpg, cen } syntax; + char *cp; + int mask; + + *modifier = NULL; + *territory = NULL; + *codeset = NULL; + *normalized_codeset = NULL; + *special = NULL; + *sponsor = NULL; + *revision = NULL; + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = 0; + syntax = undecided; + *language = cp = name; + cp = _nl_find_language (*language); + + if (*language == cp) + /* This does not make sense: language has to be specified. Use + this entry as it is without exploding. Perhaps it is an alias. */ + cp = strchr (*language, '\0'); + else if (cp[0] == '_') + { + /* Next is the territory. */ + cp[0] = '\0'; + *territory = ++cp; + + while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' + && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= TERRITORY; + + if (cp[0] == '.') + { + /* Next is the codeset. */ + syntax = xpg; + cp[0] = '\0'; + *codeset = ++cp; + + while (cp[0] != '\0' && cp[0] != '@') + ++cp; + + mask |= XPG_CODESET; + + if (*codeset != cp && (*codeset)[0] != '\0') + { + *normalized_codeset = _nl_normalize_codeset (*codeset, + cp - *codeset); + if (strcmp (*codeset, *normalized_codeset) == 0) + free ((char *) *normalized_codeset); + else + mask |= XPG_NORM_CODESET; + } + } + } + + if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) + { + /* Next is the modifier. */ + syntax = cp[0] == '@' ? xpg : cen; + cp[0] = '\0'; + *modifier = ++cp; + + while (syntax == cen && cp[0] != '\0' && cp[0] != '+' + && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= XPG_MODIFIER | CEN_AUDIENCE; + } + + if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) + { + syntax = cen; + + if (cp[0] == '+') + { + /* Next is special application (CEN syntax). */ + cp[0] = '\0'; + *special = ++cp; + + while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= CEN_SPECIAL; + } + + if (cp[0] == ',') + { + /* Next is sponsor (CEN syntax). */ + cp[0] = '\0'; + *sponsor = ++cp; + + while (cp[0] != '\0' && cp[0] != '_') + ++cp; + + mask |= CEN_SPONSOR; + } + + if (cp[0] == '_') + { + /* Next is revision (CEN syntax). */ + cp[0] = '\0'; + *revision = ++cp; + + mask |= CEN_REVISION; + } + } + + /* For CEN syntax values it might be important to have the + separator character in the file name, not for XPG syntax. */ + if (syntax == xpg) + { + if (*territory != NULL && (*territory)[0] == '\0') + mask &= ~TERRITORY; + + if (*codeset != NULL && (*codeset)[0] == '\0') + mask &= ~XPG_CODESET; + + if (*modifier != NULL && (*modifier)[0] == '\0') + mask &= ~XPG_MODIFIER; + } + + return mask; +} diff --git a/bash-5.1/lib/intl/finddomain.c b/bash-5.1/lib/intl/finddomain.c new file mode 100644 index 0000000..69a3586 --- /dev/null +++ b/bash-5.1/lib/intl/finddomain.c @@ -0,0 +1,197 @@ +/* finddomain.c - Handle list of needed message catalogs */ + +/* Copyright (C) 1995-1999, 2000, 2001, 2005-2009 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ +/* List of already loaded domains. */ +static struct loaded_l10nfile *_nl_loaded_domains; + + +/* Return a data structure describing the message catalog described by + the DOMAINNAME and CATEGORY parameters with respect to the currently + established bindings. */ +struct loaded_l10nfile * +internal_function +_nl_find_domain (dirname, locale, domainname, domainbinding) + const char *dirname; + char *locale; + const char *domainname; + struct binding *domainbinding; +{ + struct loaded_l10nfile *retval; + const char *language; + const char *modifier; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *special; + const char *sponsor; + const char *revision; + const char *alias_value; + int mask; + + /* LOCALE can consist of up to four recognized parts for the XPG syntax: + + language[_territory[.codeset]][@modifier] + + and six parts for the CEN syntax: + + language[_territory][+audience][+special][,[sponsor][_revision]] + + Beside the first part all of them are allowed to be missing. If + the full specified locale is not found, the less specific one are + looked for. The various parts will be stripped off according to + the following order: + (1) revision + (2) sponsor + (3) special + (4) codeset + (5) normalized codeset + (6) territory + (7) audience/modifier + */ + + /* If we have already tested for this locale entry there has to + be one data set in the list of loaded domains. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, 0, locale, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, domainname, 0); + if (retval != NULL) + { + /* We know something about this locale. */ + int cnt; + + if (retval->decided == 0) + _nl_load_domain (retval, domainbinding); + + if (retval->data != NULL) + return retval; + + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + + if (retval->successor[cnt]->data != NULL) + break; + } + return cnt >= 0 ? retval : NULL; + /* NOTREACHED */ + } + + /* See whether the locale value is an alias. If yes its value + *overwrites* the alias name. No test for the original value is + done. */ + alias_value = _nl_expand_alias (locale); + if (alias_value != NULL) + { +#if defined _LIBC || defined HAVE_STRDUP + locale = strdup (alias_value); + if (locale == NULL) + return NULL; +#else + size_t len = strlen (alias_value) + 1; + locale = (char *) malloc (len); + if (locale == NULL) + return NULL; + + memcpy (locale, alias_value, len); +#endif + } + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = _nl_explode_name (locale, &language, &modifier, &territory, + &codeset, &normalized_codeset, &special, + &sponsor, &revision); + + /* Create all possible locale entries which might be interested in + generalization. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, mask, language, territory, + codeset, normalized_codeset, modifier, special, + sponsor, revision, domainname, 1); + if (retval == NULL) + /* This means we are out of core. */ + return NULL; + + if (retval->decided == 0) + _nl_load_domain (retval, domainbinding); + if (retval->data == NULL) + { + int cnt; + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + if (retval->successor[cnt]->data != NULL) + break; + } + } + + /* The room for an alias was dynamically allocated. Free it now. */ + if (alias_value != NULL) + free (locale); + + /* The space for normalized_codeset is dynamically allocated. Free it. */ + if (mask & XPG_NORM_CODESET) + free ((void *) normalized_codeset); + + return retval; +} + + +#ifdef _LIBC +libc_freeres_fn (free_mem) +{ + struct loaded_l10nfile *runp = _nl_loaded_domains; + + while (runp != NULL) + { + struct loaded_l10nfile *here = runp; + if (runp->data != NULL) + _nl_unload_domain ((struct loaded_domain *) runp->data); + runp = runp->next; + free ((char *) here->filename); + free (here); + } +} +#endif diff --git a/bash-5.1/lib/intl/gettext.c b/bash-5.1/lib/intl/gettext.c new file mode 100644 index 0000000..fd3fa0f --- /dev/null +++ b/bash-5.1/lib/intl/gettext.c @@ -0,0 +1,66 @@ +/* gettext.c - Implementation of gettext(3) function. */ + +/* Copyright (C) 1995, 1997, 2000, 2001, 2002, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define GETTEXT __gettext +# define DCGETTEXT INTUSE(__dcgettext) +#else +# define GETTEXT libintl_gettext +# define DCGETTEXT libintl_dcgettext +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +GETTEXT (msgid) + const char *msgid; +{ + return DCGETTEXT (NULL, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__gettext, gettext); +#endif diff --git a/bash-5.1/lib/intl/gettextP.h b/bash-5.1/lib/intl/gettextP.h new file mode 100644 index 0000000..5c137e5 --- /dev/null +++ b/bash-5.1/lib/intl/gettextP.h @@ -0,0 +1,226 @@ +/* gettextP.h - Header describing internals of libintl library. */ + +/* Copyright (C) 1995-1999, 2000-2003, 2005-2009 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifndef _GETTEXTP_H +#define _GETTEXTP_H + +#include /* Get size_t. */ + +#ifdef _LIBC +# include "../iconv/gconv_int.h" +#else +# if HAVE_ICONV +# include +# endif +#endif + +#include "loadinfo.h" + +#include "gmo.h" /* Get nls_uint32. */ + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef internal_function +# define internal_function +#endif + +#ifndef attribute_hidden +# define attribute_hidden +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +#ifndef W +# define W(flag, data) ((flag) ? SWAP (data) : (data)) +#endif + + +#ifdef _LIBC +# include +# define SWAP(i) bswap_32 (i) +#else +static inline nls_uint32 +SWAP (i) + nls_uint32 i; +{ + return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); +} +#endif + + +/* In-memory representation of system dependent string. */ +struct sysdep_string_desc +{ + /* Length of addressed string, including the trailing NUL. */ + size_t length; + /* Pointer to addressed string. */ + const char *pointer; +}; + +/* The representation of an opened message catalog. */ +struct loaded_domain +{ + /* Pointer to memory containing the .mo file. */ + const char *data; + /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed. */ + int use_mmap; + /* Size of mmap()ed memory. */ + size_t mmap_size; + /* 1 if the .mo file uses a different endianness than this machine. */ + int must_swap; + /* Pointer to additional malloc()ed memory. */ + void *malloced; + + /* Number of static strings pairs. */ + nls_uint32 nstrings; + /* Pointer to descriptors of original strings in the file. */ + const struct string_desc *orig_tab; + /* Pointer to descriptors of translated strings in the file. */ + const struct string_desc *trans_tab; + + /* Number of system dependent strings pairs. */ + nls_uint32 n_sysdep_strings; + /* Pointer to descriptors of original sysdep strings. */ + const struct sysdep_string_desc *orig_sysdep_tab; + /* Pointer to descriptors of translated sysdep strings. */ + const struct sysdep_string_desc *trans_sysdep_tab; + + /* Size of hash table. */ + nls_uint32 hash_size; + /* Pointer to hash table. */ + const nls_uint32 *hash_tab; + /* 1 if the hash table uses a different endianness than this machine. */ + int must_swap_hash_tab; + + int codeset_cntr; +#ifdef _LIBC + __gconv_t conv; +#else +# if HAVE_ICONV + iconv_t conv; +# endif +#endif + char **conv_tab; + + struct expression *plural; + unsigned long int nplurals; +}; + +/* We want to allocate a string at the end of the struct. But ISO C + doesn't allow zero sized arrays. */ +#ifdef __GNUC__ +# define ZERO 0 +#else +# define ZERO 1 +#endif + +/* A set of settings bound to a message domain. Used to store settings + from bindtextdomain() and bind_textdomain_codeset(). */ +struct binding +{ + struct binding *next; + char *dirname; + int codeset_cntr; /* Incremented each time codeset changes. */ + char *codeset; + char domainname[ZERO]; +}; + +/* A counter which is incremented each time some previous translations + become invalid. + This variable is part of the external ABI of the GNU libintl. */ +extern int _nl_msg_cat_cntr; + +#ifndef _LIBC +const char *_nl_locale_name PARAMS ((int category, const char *categoryname)); +#endif + +struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname, + char *__locale, + const char *__domainname, + struct binding *__domainbinding)) + internal_function; +void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain, + struct binding *__domainbinding)) + internal_function; +void _nl_unload_domain PARAMS ((struct loaded_domain *__domain)) + internal_function; +const char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file, + struct loaded_domain *__domain, + struct binding *__domainbinding)) + internal_function; +void _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain)) + internal_function; + +char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file, + struct binding *domainbinding, + const char *msgid, size_t *lengthp)) + internal_function; + +#ifdef _LIBC +extern char *__gettext PARAMS ((const char *__msgid)); +extern char *__dgettext PARAMS ((const char *__domainname, + const char *__msgid)); +extern char *__dcgettext PARAMS ((const char *__domainname, + const char *__msgid, int __category)); +extern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2, + unsigned long int __n)); +extern char *__dngettext PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int n)); +extern char *__dcngettext PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category)); +extern char *__dcigettext PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category)); +extern char *__textdomain PARAMS ((const char *__domainname)); +extern char *__bindtextdomain PARAMS ((const char *__domainname, + const char *__dirname)); +extern char *__bind_textdomain_codeset PARAMS ((const char *__domainname, + const char *__codeset)); +#else +/* Declare the exported libintl_* functions, in a way that allows us to + call them under their real name. */ +# define _INTL_REDIRECT_MACROS +# include "libgnuintl.h" +extern char *libintl_dcigettext PARAMS ((const char *__domainname, + const char *__msgid1, + const char *__msgid2, + int __plural, unsigned long int __n, + int __category)); +#endif + +/* @@ begin of epilog @@ */ + +#endif /* gettextP.h */ diff --git a/bash-5.1/lib/intl/gmo.h b/bash-5.1/lib/intl/gmo.h new file mode 100644 index 0000000..2c57851 --- /dev/null +++ b/bash-5.1/lib/intl/gmo.h @@ -0,0 +1,150 @@ +/* gmo.h - Description of GNU message catalog format: general file layout. */ + +/* Copyright (C) 1995, 1997, 2000-2002, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifndef _GETTEXT_H +#define _GETTEXT_H 1 + +#include + +/* @@ end of prolog @@ */ + +/* The magic number of the GNU message catalog format. */ +#define _MAGIC 0x950412de +#define _MAGIC_SWAPPED 0xde120495 + +/* Revision number of the currently used .mo (binary) file format. */ +#define MO_REVISION_NUMBER 0 + +/* The following contortions are an attempt to use the C preprocessor + to determine an unsigned integral type that is 32 bits wide. An + alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but + as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work + when cross-compiling. */ + +#if __STDC__ +# define UINT_MAX_32_BITS 4294967295U +#else +# define UINT_MAX_32_BITS 0xFFFFFFFF +#endif + +/* If UINT_MAX isn't defined, assume it's a 32-bit type. + This should be valid for all systems GNU cares about because + that doesn't include 16-bit systems, and only modern systems + (that certainly have ) have 64+-bit integral types. */ + +#ifndef UINT_MAX +# define UINT_MAX UINT_MAX_32_BITS +#endif + +#if UINT_MAX == UINT_MAX_32_BITS +typedef unsigned nls_uint32; +#else +# if USHRT_MAX == UINT_MAX_32_BITS +typedef unsigned short nls_uint32; +# else +# if ULONG_MAX == UINT_MAX_32_BITS +typedef unsigned long nls_uint32; +# else + /* The following line is intended to throw an error. Using #error is + not portable enough. */ + "Cannot determine unsigned 32-bit data type." +# endif +# endif +#endif + + +/* Header for binary .mo file format. */ +struct mo_file_header +{ + /* The magic number. */ + nls_uint32 magic; + /* The revision number of the file format. */ + nls_uint32 revision; + + /* The following are only used in .mo files with major revision 0. */ + + /* The number of strings pairs. */ + nls_uint32 nstrings; + /* Offset of table with start offsets of original strings. */ + nls_uint32 orig_tab_offset; + /* Offset of table with start offsets of translated strings. */ + nls_uint32 trans_tab_offset; + /* Size of hash table. */ + nls_uint32 hash_tab_size; + /* Offset of first hash table entry. */ + nls_uint32 hash_tab_offset; + + /* The following are only used in .mo files with minor revision >= 1. */ + + /* The number of system dependent segments. */ + nls_uint32 n_sysdep_segments; + /* Offset of table describing system dependent segments. */ + nls_uint32 sysdep_segments_offset; + /* The number of system dependent strings pairs. */ + nls_uint32 n_sysdep_strings; + /* Offset of table with start offsets of original sysdep strings. */ + nls_uint32 orig_sysdep_tab_offset; + /* Offset of table with start offsets of translated sysdep strings. */ + nls_uint32 trans_sysdep_tab_offset; +}; + +/* Descriptor for static string contained in the binary .mo file. */ +struct string_desc +{ + /* Length of addressed string, not including the trailing NUL. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* The following are only used in .mo files with minor revision >= 1. */ + +/* Descriptor for system dependent string segment. */ +struct sysdep_segment +{ + /* Length of addressed string, including the trailing NUL. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* Descriptor for system dependent string. */ +struct sysdep_string +{ + /* Offset of static string segments in file. */ + nls_uint32 offset; + /* Alternating sequence of static and system dependent segments. + The last segment is a static segment, including the trailing NUL. */ + struct segment_pair + { + /* Size of static segment. */ + nls_uint32 segsize; + /* Reference to system dependent string segment, or ~0 at the end. */ + nls_uint32 sysdepref; + } segments[1]; +}; + +/* Marker for the end of the segments[] array. This has the value 0xFFFFFFFF, + regardless whether 'int' is 16 bit, 32 bit, or 64 bit. */ +#define SEGMENTS_END ((nls_uint32) ~0) + +/* @@ begin of epilog @@ */ + +#endif /* gettext.h */ diff --git a/bash-5.1/lib/intl/hash-string.h b/bash-5.1/lib/intl/hash-string.h new file mode 100644 index 0000000..b5a7d41 --- /dev/null +++ b/bash-5.1/lib/intl/hash-string.h @@ -0,0 +1,61 @@ +/* hash-string.h - Description of GNU message catalog format: string hashing function. */ + +/* Copyright (C) 1995, 1997, 1998, 2000, 2001, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +#endif + +/* We assume to have `unsigned long int' value with at least 32 bits. */ +#define HASHWORDBITS 32 + + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +static unsigned long int hash_string PARAMS ((const char *__str_param)); + +static inline unsigned long int +hash_string (str_param) + const char *str_param; +{ + unsigned long int hval, g; + const char *str = str_param; + + /* Compute the hash value for the given string. */ + hval = 0; + while (*str != '\0') + { + hval <<= 4; + hval += (unsigned long int) *str++; + g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4)); + if (g != 0) + { + hval ^= g >> (HASHWORDBITS - 8); + hval ^= g; + } + } + return hval; +} diff --git a/bash-5.1/lib/intl/intl-compat.c b/bash-5.1/lib/intl/intl-compat.c new file mode 100644 index 0000000..7f32349 --- /dev/null +++ b/bash-5.1/lib/intl/intl-compat.c @@ -0,0 +1,152 @@ +/* intl-compat.c - Stub functions to call gettext functions from GNU gettext library. */ + +/* Copyright (C) 1995, 2000-2003, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +/* This file redirects the gettext functions (without prefix) to those + defined in the included GNU libintl library (with "libintl_" prefix). + It is compiled into libintl in order to make the AM_GNU_GETTEXT test + of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which + has the redirections primarily in the include file. + It is also compiled into libgnuintl so that libgnuintl.so can be used + as LD_PRELOADable library on glibc systems, to provide the extra + features that the functions in the libc don't have (namely, logging). */ + + +#undef gettext +#undef dgettext +#undef dcgettext +#undef ngettext +#undef dngettext +#undef dcngettext +#undef textdomain +#undef bindtextdomain +#undef bind_textdomain_codeset + + +/* When building a DLL, we must export some functions. Note that because + the functions are only defined for binary backward compatibility, we + don't need to use __declspec(dllimport) in any case. */ +#if defined _MSC_VER && BUILDING_DLL +# define DLL_EXPORTED __declspec(dllexport) +#else +# define DLL_EXPORTED +#endif + + +DLL_EXPORTED +char * +gettext (msgid) + const char *msgid; +{ + return libintl_gettext (msgid); +} + + +DLL_EXPORTED +char * +dgettext (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return libintl_dgettext (domainname, msgid); +} + + +DLL_EXPORTED +char * +dcgettext (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ + return libintl_dcgettext (domainname, msgid, category); +} + + +DLL_EXPORTED +char * +ngettext (msgid1, msgid2, n) + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return libintl_ngettext (msgid1, msgid2, n); +} + + +DLL_EXPORTED +char * +dngettext (domainname, msgid1, msgid2, n) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return libintl_dngettext (domainname, msgid1, msgid2, n); +} + + +DLL_EXPORTED +char * +dcngettext (domainname, msgid1, msgid2, n, category) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; + int category; +{ + return libintl_dcngettext (domainname, msgid1, msgid2, n, category); +} + + +DLL_EXPORTED +char * +textdomain (domainname) + const char *domainname; +{ + return libintl_textdomain (domainname); +} + + +DLL_EXPORTED +char * +bindtextdomain (domainname, dirname) + const char *domainname; + const char *dirname; +{ + return libintl_bindtextdomain (domainname, dirname); +} + + +DLL_EXPORTED +char * +bind_textdomain_codeset (domainname, codeset) + const char *domainname; + const char *codeset; +{ + return libintl_bind_textdomain_codeset (domainname, codeset); +} diff --git a/bash-5.1/lib/intl/l10nflist.c b/bash-5.1/lib/intl/l10nflist.c new file mode 100644 index 0000000..4ce284a --- /dev/null +++ b/bash-5.1/lib/intl/l10nflist.c @@ -0,0 +1,459 @@ +/* l10nflist.c - make localization file list. */ + +/* Copyright (C) 1995-1999, 2000, 2001, 2002, 2005-2009 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This file is part of GNU Bash. + + 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 . +*/ + +/* Tell glibc's to provide a prototype for stpcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if defined _LIBC || defined HAVE_ARGZ_H +# include +#endif +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# ifndef stpcpy +# define stpcpy(dest, src) __stpcpy(dest, src) +# endif +#else +# ifndef HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +# endif +#endif + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, + it may be concatenated to a directory pathname. + */ +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) +#endif + +/* Define function which are usually not available. */ + +#if !defined _LIBC && !defined HAVE___ARGZ_COUNT +/* Returns the number of strings in ARGZ. */ +static size_t argz_count__ PARAMS ((const char *argz, size_t len)); + +static size_t +argz_count__ (argz, len) + const char *argz; + size_t len; +{ + size_t count = 0; + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len + 1; + len -= part_len + 1; + count++; + } + return count; +} +# undef __argz_count +# define __argz_count(argz, len) argz_count__ (argz, len) +#else +# ifdef _LIBC +# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len) +# endif +#endif /* !_LIBC && !HAVE___ARGZ_COUNT */ + +#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY +/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's + except the last into the character SEP. */ +static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); + +static void +argz_stringify__ (argz, len, sep) + char *argz; + size_t len; + int sep; +{ + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len; + len -= part_len + 1; + if (len > 0) + *argz++ = sep; + } +} +# undef __argz_stringify +# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) +#else +# ifdef _LIBC +# define __argz_stringify(argz, len, sep) \ + INTUSE(__argz_stringify) (argz, len, sep) +# endif +#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ + +#if !defined _LIBC && !defined HAVE___ARGZ_NEXT +static char *argz_next__ PARAMS ((char *argz, size_t argz_len, + const char *entry)); + +static char * +argz_next__ (argz, argz_len, entry) + char *argz; + size_t argz_len; + const char *entry; +{ + if (entry) + { + if (entry < argz + argz_len) + entry = strchr (entry, '\0') + 1; + + return entry >= argz + argz_len ? NULL : (char *) entry; + } + else + if (argz_len > 0) + return argz; + else + return 0; +} +# undef __argz_next +# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) +#endif /* !_LIBC && !HAVE___ARGZ_NEXT */ + + +/* Return number of bits set in X. */ +static int pop PARAMS ((int x)); + +static inline int +pop (x) + int x; +{ + /* We assume that no more than 16 bits are used. */ + x = ((x & ~0x5555) >> 1) + (x & 0x5555); + x = ((x & ~0x3333) >> 2) + (x & 0x3333); + x = ((x >> 4) + x) & 0x0f0f; + x = ((x >> 8) + x) & 0xff; + + return x; +} + + +struct loaded_l10nfile * +_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, + territory, codeset, normalized_codeset, modifier, special, + sponsor, revision, filename, do_allocate) + struct loaded_l10nfile **l10nfile_list; + const char *dirlist; + size_t dirlist_len; + int mask; + const char *language; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *modifier; + const char *special; + const char *sponsor; + const char *revision; + const char *filename; + int do_allocate; +{ + char *abs_filename; + struct loaded_l10nfile **lastp; + struct loaded_l10nfile *retval; + char *cp; + size_t dirlist_count; + size_t entries; + int cnt; + + /* If LANGUAGE contains an absolute directory specification, we ignore + DIRLIST. */ + if (IS_ABSOLUTE_PATH (language)) + dirlist_len = 0; + + /* Allocate room for the full file name. */ + abs_filename = (char *) malloc (dirlist_len + + strlen (language) + + ((mask & TERRITORY) != 0 + ? strlen (territory) + 1 : 0) + + ((mask & XPG_CODESET) != 0 + ? strlen (codeset) + 1 : 0) + + ((mask & XPG_NORM_CODESET) != 0 + ? strlen (normalized_codeset) + 1 : 0) + + (((mask & XPG_MODIFIER) != 0 + || (mask & CEN_AUDIENCE) != 0) + ? strlen (modifier) + 1 : 0) + + ((mask & CEN_SPECIAL) != 0 + ? strlen (special) + 1 : 0) + + (((mask & CEN_SPONSOR) != 0 + || (mask & CEN_REVISION) != 0) + ? (1 + ((mask & CEN_SPONSOR) != 0 + ? strlen (sponsor) : 0) + + ((mask & CEN_REVISION) != 0 + ? strlen (revision) + 1 : 0)) : 0) + + 1 + strlen (filename) + 1); + + if (abs_filename == NULL) + return NULL; + + /* Construct file name. */ + cp = abs_filename; + if (dirlist_len > 0) + { + memcpy (cp, dirlist, dirlist_len); + __argz_stringify (cp, dirlist_len, PATH_SEPARATOR); + cp += dirlist_len; + cp[-1] = '/'; + } + + cp = stpcpy (cp, language); + + if ((mask & TERRITORY) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, territory); + } + if ((mask & XPG_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, codeset); + } + if ((mask & XPG_NORM_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, normalized_codeset); + } + if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) + { + /* This component can be part of both syntaxes but has different + leading characters. For CEN we use `+', else `@'. */ + *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; + cp = stpcpy (cp, modifier); + } + if ((mask & CEN_SPECIAL) != 0) + { + *cp++ = '+'; + cp = stpcpy (cp, special); + } + if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0) + { + *cp++ = ','; + if ((mask & CEN_SPONSOR) != 0) + cp = stpcpy (cp, sponsor); + if ((mask & CEN_REVISION) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, revision); + } + } + + *cp++ = '/'; + stpcpy (cp, filename); + + /* Look in list of already loaded domains whether it is already + available. */ + lastp = l10nfile_list; + for (retval = *l10nfile_list; retval != NULL; retval = retval->next) + if (retval->filename != NULL) + { + int compare = strcmp (retval->filename, abs_filename); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It's not in the list. */ + retval = NULL; + break; + } + + lastp = &retval->next; + } + + if (retval != NULL || do_allocate == 0) + { + free (abs_filename); + return retval; + } + + dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1); + + /* Allocate a new loaded_l10nfile. */ + retval = + (struct loaded_l10nfile *) + malloc (sizeof (*retval) + + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0)) + * sizeof (struct loaded_l10nfile *))); + if (retval == NULL) + { + free (abs_filename); + return NULL; + } + + retval->filename = abs_filename; + + /* We set retval->data to NULL here; it is filled in later. + Setting retval->decided to 1 here means that retval does not + correspond to a real file (dirlist_count > 1) or is not worth + looking up (if an unnormalized codeset was specified). */ + retval->decided = (dirlist_count > 1 + || ((mask & XPG_CODESET) != 0 + && (mask & XPG_NORM_CODESET) != 0)); + retval->data = NULL; + + retval->next = *lastp; + *lastp = retval; + + entries = 0; + /* Recurse to fill the inheritance list of RETVAL. + If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL + entry does not correspond to a real file; retval->filename contains + colons. In this case we loop across all elements of DIRLIST and + across all bit patterns dominated by MASK. + If the DIRLIST is a single directory or entirely redundant (i.e. + DIRLIST_COUNT == 1), we loop across all bit patterns dominated by + MASK, excluding MASK itself. + In either case, we loop down from MASK to 0. This has the effect + that the extra bits in the locale name are dropped in this order: + first the modifier, then the territory, then the codeset, then the + normalized_codeset. */ + for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt) + if ((cnt & ~mask) == 0 + && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) + && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) + { + if (dirlist_count > 1) + { + /* Iterate over all elements of the DIRLIST. */ + char *dir = NULL; + + while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) + != NULL) + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, + cnt, language, territory, codeset, + normalized_codeset, modifier, special, + sponsor, revision, filename, 1); + } + else + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, + cnt, language, territory, codeset, + normalized_codeset, modifier, special, + sponsor, revision, filename, 1); + } + retval->successor[entries] = NULL; + + return retval; +} + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +const char * +_nl_normalize_codeset (codeset, name_len) + const char *codeset; + size_t name_len; +{ + int len = 0; + int only_digit = 1; + char *retval; + char *wp; + size_t cnt; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalnum ((unsigned char) codeset[cnt])) + { + ++len; + + if (isalpha ((unsigned char) codeset[cnt])) + only_digit = 0; + } + + retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); + + if (retval != NULL) + { + if (only_digit) + wp = stpcpy (retval, "iso"); + else + wp = retval; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalpha ((unsigned char) codeset[cnt])) + *wp++ = tolower ((unsigned char) codeset[cnt]); + else if (isdigit ((unsigned char) codeset[cnt])) + *wp++ = codeset[cnt]; + + *wp = '\0'; + } + + return (const char *) retval; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/bash-5.1/lib/intl/libgnuintl.h.in b/bash-5.1/lib/intl/libgnuintl.h.in new file mode 100644 index 0000000..14f9cf9 --- /dev/null +++ b/bash-5.1/lib/intl/libgnuintl.h.in @@ -0,0 +1,311 @@ +/* libgnuintl.h - Message catalogs for internationalization. */ + +/* Copyright (C) 1995-1997, 2000-2003, 2004-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifndef _LIBINTL_H +#define _LIBINTL_H 1 + +#include + +/* The LC_MESSAGES locale category is the category used by the functions + gettext() and dgettext(). It is specified in POSIX, but not in ANSI C. + On systems that don't define it, use an arbitrary value instead. + On Solaris, defines __LOCALE_H (or _LOCALE_H in Solaris 2.5) + then includes (i.e. this file!) and then only defines + LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES + in this case. */ +#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun)) +# define LC_MESSAGES 1729 +#endif + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +/* Provide information about the supported file formats. Returns the + maximum minor revision number supported for a given major revision. */ +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \ + ((major) == 0 ? 1 : -1) + +/* Resolve a platform specific conflict on DJGPP. GNU gettext takes + precedence over _conio_gettext. */ +#ifdef __DJGPP__ +# undef gettext +#endif + +/* Use _INTL_PARAMS, not PARAMS, in order to avoid clashes with identifiers + used by programs. Similarly, test __PROTOTYPES, not PROTOTYPES. */ +#ifndef _INTL_PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define _INTL_PARAMS(args) args +# else +# define _INTL_PARAMS(args) () +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* We redirect the functions to those prefixed with "libintl_". This is + necessary, because some systems define gettext/textdomain/... in the C + library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer). + If we used the unprefixed names, there would be cases where the + definition in the C library would override the one in the libintl.so + shared library. Recall that on ELF systems, the symbols are looked + up in the following order: + 1. in the executable, + 2. in the shared libraries specified on the link command line, in order, + 3. in the dependencies of the shared libraries specified on the link + command line, + 4. in the dlopen()ed shared libraries, in the order in which they were + dlopen()ed. + The definition in the C library would override the one in libintl.so if + either + * -lc is given on the link command line and -lintl isn't, or + * -lc is given on the link command line before -lintl, or + * libintl.so is a dependency of a dlopen()ed shared library but not + linked to the executable at link time. + Since Solaris gettext() behaves differently than GNU gettext(), this + would be unacceptable. + + The redirection happens by default through macros in C, so that &gettext + is independent of the compilation unit, but through inline functions in + C++, in order not to interfere with the name mangling of class fields or + class methods called 'gettext'. */ + +/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS. + If he doesn't, we choose the method. A third possible method is + _INTL_REDIRECT_ASM, supported only by GCC. */ +#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS) +# if __GNUC__ >= 2 && !defined __APPLE_CC__ && (defined __STDC__ || defined __cplusplus) +# define _INTL_REDIRECT_ASM +# else +# ifdef __cplusplus +# define _INTL_REDIRECT_INLINE +# else +# define _INTL_REDIRECT_MACROS +# endif +# endif +#endif +/* Auxiliary macros. */ +#ifdef _INTL_REDIRECT_ASM +# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname)) +# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring +# define _INTL_STRINGIFY(prefix) #prefix +#else +# define _INTL_ASM(cname) +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_gettext (const char *__msgid); +static inline char *gettext (const char *__msgid) +{ + return libintl_gettext (__msgid); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define gettext libintl_gettext +#endif +extern char *gettext _INTL_PARAMS ((const char *__msgid)) + _INTL_ASM (libintl_gettext); +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dgettext (const char *__domainname, const char *__msgid); +static inline char *dgettext (const char *__domainname, const char *__msgid) +{ + return libintl_dgettext (__domainname, __msgid); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dgettext libintl_dgettext +#endif +extern char *dgettext _INTL_PARAMS ((const char *__domainname, + const char *__msgid)) + _INTL_ASM (libintl_dgettext); +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dcgettext (const char *__domainname, const char *__msgid, + int __category); +static inline char *dcgettext (const char *__domainname, const char *__msgid, + int __category) +{ + return libintl_dcgettext (__domainname, __msgid, __category); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dcgettext libintl_dcgettext +#endif +extern char *dcgettext _INTL_PARAMS ((const char *__domainname, + const char *__msgid, + int __category)) + _INTL_ASM (libintl_dcgettext); +#endif + + +/* Similar to `gettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n); +static inline char *ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n) +{ + return libintl_ngettext (__msgid1, __msgid2, __n); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define ngettext libintl_ngettext +#endif +extern char *ngettext _INTL_PARAMS ((const char *__msgid1, + const char *__msgid2, + unsigned long int __n)) + _INTL_ASM (libintl_ngettext); +#endif + +/* Similar to `dgettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dngettext (const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n); +static inline char *dngettext (const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n) +{ + return libintl_dngettext (__domainname, __msgid1, __msgid2, __n); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dngettext libintl_dngettext +#endif +extern char *dngettext _INTL_PARAMS ((const char *__domainname, + const char *__msgid1, + const char *__msgid2, + unsigned long int __n)) + _INTL_ASM (libintl_dngettext); +#endif + +/* Similar to `dcgettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category); +static inline char *dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category) +{ + return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dcngettext libintl_dcngettext +#endif +extern char *dcngettext _INTL_PARAMS ((const char *__domainname, + const char *__msgid1, + const char *__msgid2, + unsigned long int __n, + int __category)) + _INTL_ASM (libintl_dcngettext); +#endif + + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_textdomain (const char *__domainname); +static inline char *textdomain (const char *__domainname) +{ + return libintl_textdomain (__domainname); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define textdomain libintl_textdomain +#endif +extern char *textdomain _INTL_PARAMS ((const char *__domainname)) + _INTL_ASM (libintl_textdomain); +#endif + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_bindtextdomain (const char *__domainname, + const char *__dirname); +static inline char *bindtextdomain (const char *__domainname, + const char *__dirname) +{ + return libintl_bindtextdomain (__domainname, __dirname); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define bindtextdomain libintl_bindtextdomain +#endif +extern char *bindtextdomain _INTL_PARAMS ((const char *__domainname, + const char *__dirname)) + _INTL_ASM (libintl_bindtextdomain); +#endif + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_bind_textdomain_codeset (const char *__domainname, + const char *__codeset); +static inline char *bind_textdomain_codeset (const char *__domainname, + const char *__codeset) +{ + return libintl_bind_textdomain_codeset (__domainname, __codeset); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define bind_textdomain_codeset libintl_bind_textdomain_codeset +#endif +extern char *bind_textdomain_codeset _INTL_PARAMS ((const char *__domainname, + const char *__codeset)) + _INTL_ASM (libintl_bind_textdomain_codeset); +#endif + + +/* Support for relocatable packages. */ + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +#define libintl_set_relocation_prefix libintl_set_relocation_prefix +extern void + libintl_set_relocation_prefix _INTL_PARAMS ((const char *orig_prefix, + const char *curr_prefix)); + + +#ifdef __cplusplus +} +#endif + +#endif /* libintl.h */ diff --git a/bash-5.1/lib/intl/loadinfo.h b/bash-5.1/lib/intl/loadinfo.h new file mode 100644 index 0000000..d06a277 --- /dev/null +++ b/bash-5.1/lib/intl/loadinfo.h @@ -0,0 +1,159 @@ +/* loadinfo.c */ + +/* Copyright (C) 1996-1999, 2000-2002, 2005-2009 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifndef _LOADINFO_H +#define _LOADINFO_H 1 + +/* Declarations of locale dependent catalog lookup functions. + Implemented in + + localealias.c Possibly replace a locale name by another. + explodename.c Split a locale name into its various fields. + l10nflist.c Generate a list of filenames of possible message catalogs. + finddomain.c Find and open the relevant message catalogs. + + The main function _nl_find_domain() in finddomain.c is declared + in gettextP.h. + */ + +#ifndef PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +/* Separator in PATH like lists of pathnames. */ +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define PATH_SEPARATOR ';' +#else + /* Unix */ +# define PATH_SEPARATOR ':' +#endif + +/* Encoding of locale name parts. */ +#define CEN_REVISION 1 +#define CEN_SPONSOR 2 +#define CEN_SPECIAL 4 +#define XPG_NORM_CODESET 8 +#define XPG_CODESET 16 +#define TERRITORY 32 +#define CEN_AUDIENCE 64 +#define XPG_MODIFIER 128 + +#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) +#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER) + + +struct loaded_l10nfile +{ + const char *filename; + int decided; + + const void *data; + + struct loaded_l10nfile *next; + struct loaded_l10nfile *successor[1]; +}; + + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +extern const char *_nl_normalize_codeset PARAMS ((const char *codeset, + size_t name_len)); + +/* Lookup a locale dependent file. + *L10NFILE_LIST denotes a pool of lookup results of locale dependent + files of the same kind, sorted in decreasing order of ->filename. + DIRLIST and DIRLIST_LEN are an argz list of directories in which to + look, containing at least one directory (i.e. DIRLIST_LEN > 0). + MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER, + SPECIAL, SPONSOR, REVISION are the pieces of the locale name, as + produced by _nl_explode_name(). FILENAME is the filename suffix. + The return value is the lookup result, either found in *L10NFILE_LIST, + or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL. + If the return value is non-NULL, it is added to *L10NFILE_LIST, and + its ->next field denotes the chaining inside *L10NFILE_LIST, and + furthermore its ->successor[] field contains a list of other lookup + results from which this lookup result inherits. */ +extern struct loaded_l10nfile * +_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, + const char *dirlist, size_t dirlist_len, int mask, + const char *language, const char *territory, + const char *codeset, + const char *normalized_codeset, + const char *modifier, const char *special, + const char *sponsor, const char *revision, + const char *filename, int do_allocate)); + +/* Lookup the real locale name for a locale alias NAME, or NULL if + NAME is not a locale alias (but possibly a real locale name). + The return value is statically allocated and must not be freed. */ +extern const char *_nl_expand_alias PARAMS ((const char *name)); + +/* Split a locale name NAME into its pieces: language, modifier, + territory, codeset, special, sponsor, revision. + NAME gets destructively modified: NUL bytes are inserted here and + there. *LANGUAGE gets assigned NAME. Each of *MODIFIER, *TERRITORY, + *CODESET, *SPECIAL, *SPONSOR, *REVISION gets assigned either a + pointer into the old NAME string, or NULL. *NORMALIZED_CODESET + gets assigned the expanded *CODESET, if it is different from *CODESET; + this one is dynamically allocated and has to be freed by the caller. + The return value is a bitmask, where each bit corresponds to one + filled-in value: + XPG_MODIFIER, CEN_AUDIENCE for *MODIFIER, + TERRITORY for *TERRITORY, + XPG_CODESET for *CODESET, + XPG_NORM_CODESET for *NORMALIZED_CODESET, + CEN_SPECIAL for *SPECIAL, + CEN_SPONSOR for *SPONSOR, + CEN_REVISION for *REVISION. + */ +extern int _nl_explode_name PARAMS ((char *name, const char **language, + const char **modifier, + const char **territory, + const char **codeset, + const char **normalized_codeset, + const char **special, + const char **sponsor, + const char **revision)); + +/* Split a locale name NAME into a leading language part and all the + rest. Return a pointer to the first character after the language, + i.e. to the first byte of the rest. */ +extern char *_nl_find_language PARAMS ((const char *name)); + +#endif /* loadinfo.h */ diff --git a/bash-5.1/lib/intl/loadmsgcat.c b/bash-5.1/lib/intl/loadmsgcat.c new file mode 100644 index 0000000..adbd7b4 --- /dev/null +++ b/bash-5.1/lib/intl/loadmsgcat.c @@ -0,0 +1,1336 @@ +/* loadmsgcat.c - Load needed message catalogs. */ + +/* Copyright (C) 1995-1999, 2000-2003, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include + +#ifdef __GNUC__ +# undef alloca +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#ifdef _LIBC +# include +# include +#endif + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || (defined _LIBC && defined _POSIX_MAPPED_FILES) +# include +# undef HAVE_MMAP +# define HAVE_MMAP 1 +#else +# undef HAVE_MMAP +#endif + +#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC +# include +#endif +#if defined HAVE_INTTYPES_H || defined _LIBC +# include +#endif + +#include "gmo.h" +#include "gettextP.h" +#include "hash-string.h" +#include "plural-exp.h" + +#ifdef _LIBC +# include "../locale/localeinfo.h" +#endif + +/* Provide fallback values for macros that ought to be defined in . + Note that our fallback values need not be literal strings, because we don't + use them with preprocessor string concatenation. */ +#if !defined PRId8 || PRI_MACROS_BROKEN +# undef PRId8 +# define PRId8 "d" +#endif +#if !defined PRIi8 || PRI_MACROS_BROKEN +# undef PRIi8 +# define PRIi8 "i" +#endif +#if !defined PRIo8 || PRI_MACROS_BROKEN +# undef PRIo8 +# define PRIo8 "o" +#endif +#if !defined PRIu8 || PRI_MACROS_BROKEN +# undef PRIu8 +# define PRIu8 "u" +#endif +#if !defined PRIx8 || PRI_MACROS_BROKEN +# undef PRIx8 +# define PRIx8 "x" +#endif +#if !defined PRIX8 || PRI_MACROS_BROKEN +# undef PRIX8 +# define PRIX8 "X" +#endif +#if !defined PRId16 || PRI_MACROS_BROKEN +# undef PRId16 +# define PRId16 "d" +#endif +#if !defined PRIi16 || PRI_MACROS_BROKEN +# undef PRIi16 +# define PRIi16 "i" +#endif +#if !defined PRIo16 || PRI_MACROS_BROKEN +# undef PRIo16 +# define PRIo16 "o" +#endif +#if !defined PRIu16 || PRI_MACROS_BROKEN +# undef PRIu16 +# define PRIu16 "u" +#endif +#if !defined PRIx16 || PRI_MACROS_BROKEN +# undef PRIx16 +# define PRIx16 "x" +#endif +#if !defined PRIX16 || PRI_MACROS_BROKEN +# undef PRIX16 +# define PRIX16 "X" +#endif +#if !defined PRId32 || PRI_MACROS_BROKEN +# undef PRId32 +# define PRId32 "d" +#endif +#if !defined PRIi32 || PRI_MACROS_BROKEN +# undef PRIi32 +# define PRIi32 "i" +#endif +#if !defined PRIo32 || PRI_MACROS_BROKEN +# undef PRIo32 +# define PRIo32 "o" +#endif +#if !defined PRIu32 || PRI_MACROS_BROKEN +# undef PRIu32 +# define PRIu32 "u" +#endif +#if !defined PRIx32 || PRI_MACROS_BROKEN +# undef PRIx32 +# define PRIx32 "x" +#endif +#if !defined PRIX32 || PRI_MACROS_BROKEN +# undef PRIX32 +# define PRIX32 "X" +#endif +#if !defined PRId64 || PRI_MACROS_BROKEN +# undef PRId64 +# define PRId64 (sizeof (long) == 8 ? "ld" : "lld") +#endif +#if !defined PRIi64 || PRI_MACROS_BROKEN +# undef PRIi64 +# define PRIi64 (sizeof (long) == 8 ? "li" : "lli") +#endif +#if !defined PRIo64 || PRI_MACROS_BROKEN +# undef PRIo64 +# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo") +#endif +#if !defined PRIu64 || PRI_MACROS_BROKEN +# undef PRIu64 +# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu") +#endif +#if !defined PRIx64 || PRI_MACROS_BROKEN +# undef PRIx64 +# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx") +#endif +#if !defined PRIX64 || PRI_MACROS_BROKEN +# undef PRIX64 +# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX") +#endif +#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN +# undef PRIdLEAST8 +# define PRIdLEAST8 "d" +#endif +#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN +# undef PRIiLEAST8 +# define PRIiLEAST8 "i" +#endif +#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN +# undef PRIoLEAST8 +# define PRIoLEAST8 "o" +#endif +#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN +# undef PRIuLEAST8 +# define PRIuLEAST8 "u" +#endif +#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN +# undef PRIxLEAST8 +# define PRIxLEAST8 "x" +#endif +#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN +# undef PRIXLEAST8 +# define PRIXLEAST8 "X" +#endif +#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN +# undef PRIdLEAST16 +# define PRIdLEAST16 "d" +#endif +#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN +# undef PRIiLEAST16 +# define PRIiLEAST16 "i" +#endif +#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN +# undef PRIoLEAST16 +# define PRIoLEAST16 "o" +#endif +#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN +# undef PRIuLEAST16 +# define PRIuLEAST16 "u" +#endif +#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN +# undef PRIxLEAST16 +# define PRIxLEAST16 "x" +#endif +#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN +# undef PRIXLEAST16 +# define PRIXLEAST16 "X" +#endif +#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN +# undef PRIdLEAST32 +# define PRIdLEAST32 "d" +#endif +#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN +# undef PRIiLEAST32 +# define PRIiLEAST32 "i" +#endif +#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN +# undef PRIoLEAST32 +# define PRIoLEAST32 "o" +#endif +#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN +# undef PRIuLEAST32 +# define PRIuLEAST32 "u" +#endif +#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN +# undef PRIxLEAST32 +# define PRIxLEAST32 "x" +#endif +#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN +# undef PRIXLEAST32 +# define PRIXLEAST32 "X" +#endif +#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN +# undef PRIdLEAST64 +# define PRIdLEAST64 PRId64 +#endif +#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN +# undef PRIiLEAST64 +# define PRIiLEAST64 PRIi64 +#endif +#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN +# undef PRIoLEAST64 +# define PRIoLEAST64 PRIo64 +#endif +#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN +# undef PRIuLEAST64 +# define PRIuLEAST64 PRIu64 +#endif +#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN +# undef PRIxLEAST64 +# define PRIxLEAST64 PRIx64 +#endif +#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN +# undef PRIXLEAST64 +# define PRIXLEAST64 PRIX64 +#endif +#if !defined PRIdFAST8 || PRI_MACROS_BROKEN +# undef PRIdFAST8 +# define PRIdFAST8 "d" +#endif +#if !defined PRIiFAST8 || PRI_MACROS_BROKEN +# undef PRIiFAST8 +# define PRIiFAST8 "i" +#endif +#if !defined PRIoFAST8 || PRI_MACROS_BROKEN +# undef PRIoFAST8 +# define PRIoFAST8 "o" +#endif +#if !defined PRIuFAST8 || PRI_MACROS_BROKEN +# undef PRIuFAST8 +# define PRIuFAST8 "u" +#endif +#if !defined PRIxFAST8 || PRI_MACROS_BROKEN +# undef PRIxFAST8 +# define PRIxFAST8 "x" +#endif +#if !defined PRIXFAST8 || PRI_MACROS_BROKEN +# undef PRIXFAST8 +# define PRIXFAST8 "X" +#endif +#if !defined PRIdFAST16 || PRI_MACROS_BROKEN +# undef PRIdFAST16 +# define PRIdFAST16 "d" +#endif +#if !defined PRIiFAST16 || PRI_MACROS_BROKEN +# undef PRIiFAST16 +# define PRIiFAST16 "i" +#endif +#if !defined PRIoFAST16 || PRI_MACROS_BROKEN +# undef PRIoFAST16 +# define PRIoFAST16 "o" +#endif +#if !defined PRIuFAST16 || PRI_MACROS_BROKEN +# undef PRIuFAST16 +# define PRIuFAST16 "u" +#endif +#if !defined PRIxFAST16 || PRI_MACROS_BROKEN +# undef PRIxFAST16 +# define PRIxFAST16 "x" +#endif +#if !defined PRIXFAST16 || PRI_MACROS_BROKEN +# undef PRIXFAST16 +# define PRIXFAST16 "X" +#endif +#if !defined PRIdFAST32 || PRI_MACROS_BROKEN +# undef PRIdFAST32 +# define PRIdFAST32 "d" +#endif +#if !defined PRIiFAST32 || PRI_MACROS_BROKEN +# undef PRIiFAST32 +# define PRIiFAST32 "i" +#endif +#if !defined PRIoFAST32 || PRI_MACROS_BROKEN +# undef PRIoFAST32 +# define PRIoFAST32 "o" +#endif +#if !defined PRIuFAST32 || PRI_MACROS_BROKEN +# undef PRIuFAST32 +# define PRIuFAST32 "u" +#endif +#if !defined PRIxFAST32 || PRI_MACROS_BROKEN +# undef PRIxFAST32 +# define PRIxFAST32 "x" +#endif +#if !defined PRIXFAST32 || PRI_MACROS_BROKEN +# undef PRIXFAST32 +# define PRIXFAST32 "X" +#endif +#if !defined PRIdFAST64 || PRI_MACROS_BROKEN +# undef PRIdFAST64 +# define PRIdFAST64 PRId64 +#endif +#if !defined PRIiFAST64 || PRI_MACROS_BROKEN +# undef PRIiFAST64 +# define PRIiFAST64 PRIi64 +#endif +#if !defined PRIoFAST64 || PRI_MACROS_BROKEN +# undef PRIoFAST64 +# define PRIoFAST64 PRIo64 +#endif +#if !defined PRIuFAST64 || PRI_MACROS_BROKEN +# undef PRIuFAST64 +# define PRIuFAST64 PRIu64 +#endif +#if !defined PRIxFAST64 || PRI_MACROS_BROKEN +# undef PRIxFAST64 +# define PRIxFAST64 PRIx64 +#endif +#if !defined PRIXFAST64 || PRI_MACROS_BROKEN +# undef PRIXFAST64 +# define PRIXFAST64 PRIX64 +#endif +#if !defined PRIdMAX || PRI_MACROS_BROKEN +# undef PRIdMAX +# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld") +#endif +#if !defined PRIiMAX || PRI_MACROS_BROKEN +# undef PRIiMAX +# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli") +#endif +#if !defined PRIoMAX || PRI_MACROS_BROKEN +# undef PRIoMAX +# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo") +#endif +#if !defined PRIuMAX || PRI_MACROS_BROKEN +# undef PRIuMAX +# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu") +#endif +#if !defined PRIxMAX || PRI_MACROS_BROKEN +# undef PRIxMAX +# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx") +#endif +#if !defined PRIXMAX || PRI_MACROS_BROKEN +# undef PRIXMAX +# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX") +#endif +#if !defined PRIdPTR || PRI_MACROS_BROKEN +# undef PRIdPTR +# define PRIdPTR \ + (sizeof (void *) == sizeof (long) ? "ld" : \ + sizeof (void *) == sizeof (int) ? "d" : \ + "lld") +#endif +#if !defined PRIiPTR || PRI_MACROS_BROKEN +# undef PRIiPTR +# define PRIiPTR \ + (sizeof (void *) == sizeof (long) ? "li" : \ + sizeof (void *) == sizeof (int) ? "i" : \ + "lli") +#endif +#if !defined PRIoPTR || PRI_MACROS_BROKEN +# undef PRIoPTR +# define PRIoPTR \ + (sizeof (void *) == sizeof (long) ? "lo" : \ + sizeof (void *) == sizeof (int) ? "o" : \ + "llo") +#endif +#if !defined PRIuPTR || PRI_MACROS_BROKEN +# undef PRIuPTR +# define PRIuPTR \ + (sizeof (void *) == sizeof (long) ? "lu" : \ + sizeof (void *) == sizeof (int) ? "u" : \ + "llu") +#endif +#if !defined PRIxPTR || PRI_MACROS_BROKEN +# undef PRIxPTR +# define PRIxPTR \ + (sizeof (void *) == sizeof (long) ? "lx" : \ + sizeof (void *) == sizeof (int) ? "x" : \ + "llx") +#endif +#if !defined PRIXPTR || PRI_MACROS_BROKEN +# undef PRIXPTR +# define PRIXPTR \ + (sizeof (void *) == sizeof (long) ? "lX" : \ + sizeof (void *) == sizeof (int) ? "X" : \ + "llX") +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ISO C functions. This is required by the standard + because some ISO C functions will require linking with this object + file and the name space must not be polluted. */ +# define open __open +# define close __close +# define read __read +# define mmap __mmap +# define munmap __munmap +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +/* For systems that distinguish between text and binary I/O. + O_BINARY is usually declared in . */ +#if !defined O_BINARY && defined _O_BINARY + /* For MSC-compatible compilers. */ +# define O_BINARY _O_BINARY +# define O_TEXT _O_TEXT +#endif +#ifdef __BEOS__ + /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */ +# undef O_BINARY +# undef O_TEXT +#endif +/* On reasonable systems, binary I/O is the default. */ +#ifndef O_BINARY +# define O_BINARY 0 +#endif + + +/* Prototypes for local functions. Needed to ensure compiler checking of + function argument counts despite of K&R C function definition syntax. */ +static const char *get_sysdep_segment_value PARAMS ((const char *name)); + + +/* We need a sign, whether a new catalog was loaded, which can be associated + with all translations. This is important if the translations are + cached by one of GCC's features. */ +int _nl_msg_cat_cntr; + + +/* Expand a system dependent string segment. Return NULL if unsupported. */ +static const char * +get_sysdep_segment_value (name) + const char *name; +{ + /* Test for an ISO C 99 section 7.8.1 format string directive. + Syntax: + P R I { d | i | o | u | x | X } + { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR } */ + /* We don't use a table of 14 times 6 'const char *' strings here, because + data relocations cost startup time. */ + if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I') + { + if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u' + || name[3] == 'x' || name[3] == 'X') + { + if (name[4] == '8' && name[5] == '\0') + { + if (name[3] == 'd') + return PRId8; + if (name[3] == 'i') + return PRIi8; + if (name[3] == 'o') + return PRIo8; + if (name[3] == 'u') + return PRIu8; + if (name[3] == 'x') + return PRIx8; + if (name[3] == 'X') + return PRIX8; + abort (); + } + if (name[4] == '1' && name[5] == '6' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId16; + if (name[3] == 'i') + return PRIi16; + if (name[3] == 'o') + return PRIo16; + if (name[3] == 'u') + return PRIu16; + if (name[3] == 'x') + return PRIx16; + if (name[3] == 'X') + return PRIX16; + abort (); + } + if (name[4] == '3' && name[5] == '2' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId32; + if (name[3] == 'i') + return PRIi32; + if (name[3] == 'o') + return PRIo32; + if (name[3] == 'u') + return PRIu32; + if (name[3] == 'x') + return PRIx32; + if (name[3] == 'X') + return PRIX32; + abort (); + } + if (name[4] == '6' && name[5] == '4' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId64; + if (name[3] == 'i') + return PRIi64; + if (name[3] == 'o') + return PRIo64; + if (name[3] == 'u') + return PRIu64; + if (name[3] == 'x') + return PRIx64; + if (name[3] == 'X') + return PRIX64; + abort (); + } + if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A' + && name[7] == 'S' && name[8] == 'T') + { + if (name[9] == '8' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST8; + if (name[3] == 'i') + return PRIiLEAST8; + if (name[3] == 'o') + return PRIoLEAST8; + if (name[3] == 'u') + return PRIuLEAST8; + if (name[3] == 'x') + return PRIxLEAST8; + if (name[3] == 'X') + return PRIXLEAST8; + abort (); + } + if (name[9] == '1' && name[10] == '6' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST16; + if (name[3] == 'i') + return PRIiLEAST16; + if (name[3] == 'o') + return PRIoLEAST16; + if (name[3] == 'u') + return PRIuLEAST16; + if (name[3] == 'x') + return PRIxLEAST16; + if (name[3] == 'X') + return PRIXLEAST16; + abort (); + } + if (name[9] == '3' && name[10] == '2' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST32; + if (name[3] == 'i') + return PRIiLEAST32; + if (name[3] == 'o') + return PRIoLEAST32; + if (name[3] == 'u') + return PRIuLEAST32; + if (name[3] == 'x') + return PRIxLEAST32; + if (name[3] == 'X') + return PRIXLEAST32; + abort (); + } + if (name[9] == '6' && name[10] == '4' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST64; + if (name[3] == 'i') + return PRIiLEAST64; + if (name[3] == 'o') + return PRIoLEAST64; + if (name[3] == 'u') + return PRIuLEAST64; + if (name[3] == 'x') + return PRIxLEAST64; + if (name[3] == 'X') + return PRIXLEAST64; + abort (); + } + } + if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S' + && name[7] == 'T') + { + if (name[8] == '8' && name[9] == '\0') + { + if (name[3] == 'd') + return PRIdFAST8; + if (name[3] == 'i') + return PRIiFAST8; + if (name[3] == 'o') + return PRIoFAST8; + if (name[3] == 'u') + return PRIuFAST8; + if (name[3] == 'x') + return PRIxFAST8; + if (name[3] == 'X') + return PRIXFAST8; + abort (); + } + if (name[8] == '1' && name[9] == '6' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST16; + if (name[3] == 'i') + return PRIiFAST16; + if (name[3] == 'o') + return PRIoFAST16; + if (name[3] == 'u') + return PRIuFAST16; + if (name[3] == 'x') + return PRIxFAST16; + if (name[3] == 'X') + return PRIXFAST16; + abort (); + } + if (name[8] == '3' && name[9] == '2' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST32; + if (name[3] == 'i') + return PRIiFAST32; + if (name[3] == 'o') + return PRIoFAST32; + if (name[3] == 'u') + return PRIuFAST32; + if (name[3] == 'x') + return PRIxFAST32; + if (name[3] == 'X') + return PRIXFAST32; + abort (); + } + if (name[8] == '6' && name[9] == '4' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST64; + if (name[3] == 'i') + return PRIiFAST64; + if (name[3] == 'o') + return PRIoFAST64; + if (name[3] == 'u') + return PRIuFAST64; + if (name[3] == 'x') + return PRIxFAST64; + if (name[3] == 'X') + return PRIXFAST64; + abort (); + } + } + if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X' + && name[7] == '\0') + { + if (name[3] == 'd') + return PRIdMAX; + if (name[3] == 'i') + return PRIiMAX; + if (name[3] == 'o') + return PRIoMAX; + if (name[3] == 'u') + return PRIuMAX; + if (name[3] == 'x') + return PRIxMAX; + if (name[3] == 'X') + return PRIXMAX; + abort (); + } + if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R' + && name[7] == '\0') + { + if (name[3] == 'd') + return PRIdPTR; + if (name[3] == 'i') + return PRIiPTR; + if (name[3] == 'o') + return PRIoPTR; + if (name[3] == 'u') + return PRIuPTR; + if (name[3] == 'x') + return PRIxPTR; + if (name[3] == 'X') + return PRIXPTR; + abort (); + } + } + } + /* Other system dependent strings are not valid. */ + return NULL; +} + +/* Initialize the codeset dependent parts of an opened message catalog. + Return the header entry. */ +const char * +internal_function +_nl_init_domain_conv (domain_file, domain, domainbinding) + struct loaded_l10nfile *domain_file; + struct loaded_domain *domain; + struct binding *domainbinding; +{ + /* Find out about the character set the file is encoded with. + This can be found (in textual form) in the entry "". If this + entry does not exist or if this does not contain the `charset=' + information, we will assume the charset matches the one the + current locale and we don't have to perform any conversion. */ + char *nullentry; + size_t nullentrylen; + + /* Preinitialize fields, to avoid recursion during _nl_find_msg. */ + domain->codeset_cntr = + (domainbinding != NULL ? domainbinding->codeset_cntr : 0); +#ifdef _LIBC + domain->conv = (__gconv_t) -1; +#else +# if HAVE_ICONV + domain->conv = (iconv_t) -1; +# endif +#endif + domain->conv_tab = NULL; + + /* Get the header entry. */ + nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen); + + if (nullentry != NULL) + { +#if defined _LIBC || HAVE_ICONV + const char *charsetstr; + + charsetstr = strstr (nullentry, "charset="); + if (charsetstr != NULL) + { + size_t len; + char *charset; + const char *outcharset; + + charsetstr += strlen ("charset="); + len = strcspn (charsetstr, " \t\n"); + + charset = (char *) alloca (len + 1); +# if defined _LIBC || HAVE_MEMPCPY + *((char *) mempcpy (charset, charsetstr, len)) = '\0'; +# else + memcpy (charset, charsetstr, len); + charset[len] = '\0'; +# endif + + /* The output charset should normally be determined by the + locale. But sometimes the locale is not used or not correctly + set up, so we provide a possibility for the user to override + this. Moreover, the value specified through + bind_textdomain_codeset overrides both. */ + if (domainbinding != NULL && domainbinding->codeset != NULL) + outcharset = domainbinding->codeset; + else + { + outcharset = getenv ("OUTPUT_CHARSET"); + if (outcharset == NULL || outcharset[0] == '\0') + { +# ifdef _LIBC + outcharset = _NL_CURRENT (LC_CTYPE, CODESET); +# else +# if HAVE_ICONV + extern const char *locale_charset PARAMS ((void)); + outcharset = locale_charset (); +# endif +# endif + } + } + +# ifdef _LIBC + /* We always want to use transliteration. */ + outcharset = norm_add_slashes (outcharset, "TRANSLIT"); + charset = norm_add_slashes (charset, NULL); + if (__gconv_open (outcharset, charset, &domain->conv, + GCONV_AVOID_NOCONV) + != __GCONV_OK) + domain->conv = (__gconv_t) -1; +# else +# if HAVE_ICONV + /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5, + we want to use transliteration. */ +# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \ + || _LIBICONV_VERSION >= 0x0105 + if (strchr (outcharset, '/') == NULL) + { + char *tmp; + + len = strlen (outcharset); + tmp = (char *) alloca (len + 10 + 1); + memcpy (tmp, outcharset, len); + memcpy (tmp + len, "//TRANSLIT", 10 + 1); + outcharset = tmp; + + domain->conv = iconv_open (outcharset, charset); + + freea (outcharset); + } + else +# endif + domain->conv = iconv_open (outcharset, charset); +# endif +# endif + + freea (charset); + } +#endif /* _LIBC || HAVE_ICONV */ + } + + return nullentry; +} + +/* Frees the codeset dependent parts of an opened message catalog. */ +void +internal_function +_nl_free_domain_conv (domain) + struct loaded_domain *domain; +{ + if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1) + free (domain->conv_tab); + +#ifdef _LIBC + if (domain->conv != (__gconv_t) -1) + __gconv_close (domain->conv); +#else +# if HAVE_ICONV + if (domain->conv != (iconv_t) -1) + iconv_close (domain->conv); +# endif +#endif +} + +/* Load the message catalogs specified by FILENAME. If it is no valid + message catalog do nothing. */ +void +internal_function +_nl_load_domain (domain_file, domainbinding) + struct loaded_l10nfile *domain_file; + struct binding *domainbinding; +{ + int fd; + size_t size; +#ifdef _LIBC + struct stat64 st; +#else + struct stat st; +#endif + struct mo_file_header *data = (struct mo_file_header *) -1; + int use_mmap = 0; + struct loaded_domain *domain; + int revision; + const char *nullentry; + + domain_file->decided = 1; + domain_file->data = NULL; + + /* Note that it would be useless to store domainbinding in domain_file + because domainbinding might be == NULL now but != NULL later (after + a call to bind_textdomain_codeset). */ + + /* If the record does not represent a valid locale the FILENAME + might be NULL. This can happen when according to the given + specification the locale file name is different for XPG and CEN + syntax. */ + if (domain_file->filename == NULL) + return; + + /* Try to open the addressed file. */ + fd = open (domain_file->filename, O_RDONLY | O_BINARY); + if (fd == -1) + return; + + /* We must know about the size of the file. */ + if ( +#ifdef _LIBC + __builtin_expect (fstat64 (fd, &st) != 0, 0) +#else + __builtin_expect (fstat (fd, &st) != 0, 0) +#endif + || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0) + || __builtin_expect (size < sizeof (struct mo_file_header), 0)) + { + /* Something went wrong. */ + close (fd); + return; + } + +#ifdef HAVE_MMAP + /* Now we are ready to load the file. If mmap() is available we try + this first. If not available or it failed we try to load it. */ + data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, + MAP_PRIVATE, fd, 0); + + if (__builtin_expect (data != (struct mo_file_header *) -1, 1)) + { + /* mmap() call was successful. */ + close (fd); + use_mmap = 1; + } +#endif + + /* If the data is not yet available (i.e. mmap'ed) we try to load + it manually. */ + if (data == (struct mo_file_header *) -1) + { + size_t to_read; + char *read_ptr; + + data = (struct mo_file_header *) malloc (size); + if (data == NULL) + { + if (use_mmap == 0) + close (fd); + return; + } + + to_read = size; + read_ptr = (char *) data; + do + { + long int nb = (long int) read (fd, read_ptr, to_read); + if (nb <= 0) + { +#ifdef EINTR + if (nb == -1 && errno == EINTR) + continue; +#endif + close (fd); + return; + } + read_ptr += nb; + to_read -= nb; + } + while (to_read > 0); + + close (fd); + } + + /* Using the magic number we can test whether it really is a message + catalog file. */ + if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED, + 0)) + { + /* The magic number is wrong: not a message catalog file. */ +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + return; + } + + domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); + if (domain == NULL) + { +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + return; + } + domain_file->data = domain; + + domain->data = (char *) data; + domain->use_mmap = use_mmap; + domain->mmap_size = size; + domain->must_swap = data->magic != _MAGIC; + domain->malloced = NULL; + + /* Fill in the information about the available tables. */ + revision = W (domain->must_swap, data->revision); + /* We support only the major revision 0. */ + switch (revision >> 16) + { + case 0: + domain->nstrings = W (domain->must_swap, data->nstrings); + domain->orig_tab = (const struct string_desc *) + ((char *) data + W (domain->must_swap, data->orig_tab_offset)); + domain->trans_tab = (const struct string_desc *) + ((char *) data + W (domain->must_swap, data->trans_tab_offset)); + domain->hash_size = W (domain->must_swap, data->hash_tab_size); + domain->hash_tab = + (domain->hash_size > 2 + ? (const nls_uint32 *) + ((char *) data + W (domain->must_swap, data->hash_tab_offset)) + : NULL); + domain->must_swap_hash_tab = domain->must_swap; + + /* Now dispatch on the minor revision. */ + switch (revision & 0xffff) + { + case 0: + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + break; + case 1: + default: + { + nls_uint32 n_sysdep_strings; + + if (domain->hash_tab == NULL) + /* This is invalid. These minor revisions need a hash table. */ + goto invalid; + + n_sysdep_strings = + W (domain->must_swap, data->n_sysdep_strings); + if (n_sysdep_strings > 0) + { + nls_uint32 n_sysdep_segments; + const struct sysdep_segment *sysdep_segments; + const char **sysdep_segment_values; + const nls_uint32 *orig_sysdep_tab; + const nls_uint32 *trans_sysdep_tab; + size_t memneed; + char *mem; + struct sysdep_string_desc *inmem_orig_sysdep_tab; + struct sysdep_string_desc *inmem_trans_sysdep_tab; + nls_uint32 *inmem_hash_tab; + unsigned int i; + + /* Get the values of the system dependent segments. */ + n_sysdep_segments = + W (domain->must_swap, data->n_sysdep_segments); + sysdep_segments = (const struct sysdep_segment *) + ((char *) data + + W (domain->must_swap, data->sysdep_segments_offset)); + sysdep_segment_values = + alloca (n_sysdep_segments * sizeof (const char *)); + for (i = 0; i < n_sysdep_segments; i++) + { + const char *name = + (char *) data + + W (domain->must_swap, sysdep_segments[i].offset); + nls_uint32 namelen = + W (domain->must_swap, sysdep_segments[i].length); + + if (!(namelen > 0 && name[namelen - 1] == '\0')) + { + freea (sysdep_segment_values); + goto invalid; + } + + sysdep_segment_values[i] = get_sysdep_segment_value (name); + } + + orig_sysdep_tab = (const nls_uint32 *) + ((char *) data + + W (domain->must_swap, data->orig_sysdep_tab_offset)); + trans_sysdep_tab = (const nls_uint32 *) + ((char *) data + + W (domain->must_swap, data->trans_sysdep_tab_offset)); + + /* Compute the amount of additional memory needed for the + system dependent strings and the augmented hash table. */ + memneed = 2 * n_sysdep_strings + * sizeof (struct sysdep_string_desc) + + domain->hash_size * sizeof (nls_uint32); + for (i = 0; i < 2 * n_sysdep_strings; i++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + i < n_sysdep_strings + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i - n_sysdep_strings])); + size_t need = 0; + const struct segment_pair *p = sysdep_string->segments; + + if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END) + for (p = sysdep_string->segments;; p++) + { + nls_uint32 sysdepref; + + need += W (domain->must_swap, p->segsize); + + sysdepref = W (domain->must_swap, p->sysdepref); + if (sysdepref == SEGMENTS_END) + break; + + if (sysdepref >= n_sysdep_segments) + { + /* Invalid. */ + freea (sysdep_segment_values); + goto invalid; + } + + need += strlen (sysdep_segment_values[sysdepref]); + } + + memneed += need; + } + + /* Allocate additional memory. */ + mem = (char *) malloc (memneed); + if (mem == NULL) + goto invalid; + + domain->malloced = mem; + inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem; + mem += n_sysdep_strings * sizeof (struct sysdep_string_desc); + inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem; + mem += n_sysdep_strings * sizeof (struct sysdep_string_desc); + inmem_hash_tab = (nls_uint32 *) mem; + mem += domain->hash_size * sizeof (nls_uint32); + + /* Compute the system dependent strings. */ + for (i = 0; i < 2 * n_sysdep_strings; i++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + i < n_sysdep_strings + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i - n_sysdep_strings])); + const char *static_segments = + (char *) data + + W (domain->must_swap, sysdep_string->offset); + const struct segment_pair *p = sysdep_string->segments; + + /* Concatenate the segments, and fill + inmem_orig_sysdep_tab[i] (for i < n_sysdep_strings) and + inmem_trans_sysdep_tab[i-n_sysdep_strings] (for + i >= n_sysdep_strings). */ + + if (W (domain->must_swap, p->sysdepref) == SEGMENTS_END) + { + /* Only one static segment. */ + inmem_orig_sysdep_tab[i].length = + W (domain->must_swap, p->segsize); + inmem_orig_sysdep_tab[i].pointer = static_segments; + } + else + { + inmem_orig_sysdep_tab[i].pointer = mem; + + for (p = sysdep_string->segments;; p++) + { + nls_uint32 segsize = + W (domain->must_swap, p->segsize); + nls_uint32 sysdepref = + W (domain->must_swap, p->sysdepref); + size_t n; + + if (segsize > 0) + { + memcpy (mem, static_segments, segsize); + mem += segsize; + static_segments += segsize; + } + + if (sysdepref == SEGMENTS_END) + break; + + n = strlen (sysdep_segment_values[sysdepref]); + memcpy (mem, sysdep_segment_values[sysdepref], n); + mem += n; + } + + inmem_orig_sysdep_tab[i].length = + mem - inmem_orig_sysdep_tab[i].pointer; + } + } + + /* Compute the augmented hash table. */ + for (i = 0; i < domain->hash_size; i++) + inmem_hash_tab[i] = + W (domain->must_swap_hash_tab, domain->hash_tab[i]); + for (i = 0; i < n_sysdep_strings; i++) + { + const char *msgid = inmem_orig_sysdep_tab[i].pointer; + nls_uint32 hash_val = hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); + + for (;;) + { + if (inmem_hash_tab[idx] == 0) + { + /* Hash table entry is empty. Use it. */ + inmem_hash_tab[idx] = 1 + domain->nstrings + i; + break; + } + + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + } + } + + freea (sysdep_segment_values); + + domain->n_sysdep_strings = n_sysdep_strings; + domain->orig_sysdep_tab = inmem_orig_sysdep_tab; + domain->trans_sysdep_tab = inmem_trans_sysdep_tab; + + domain->hash_tab = inmem_hash_tab; + domain->must_swap_hash_tab = 0; + } + else + { + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + } + } + break; + } + break; + default: + /* This is an invalid revision. */ + invalid: + /* This is an invalid .mo file. */ + if (domain->malloced) + free (domain->malloced); +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + free (domain); + domain_file->data = NULL; + return; + } + + /* Now initialize the character set converter from the character set + the file is encoded with (found in the header entry) to the domain's + specified character set or the locale's character set. */ + nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding); + + /* Also look for a plural specification. */ + EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals); +} + + +#ifdef _LIBC +void +internal_function +_nl_unload_domain (domain) + struct loaded_domain *domain; +{ + if (domain->plural != &__gettext_germanic_plural) + __gettext_free_exp (domain->plural); + + _nl_free_domain_conv (domain); + + if (domain->malloced) + free (domain->malloced); + +# ifdef _POSIX_MAPPED_FILES + if (domain->use_mmap) + munmap ((caddr_t) domain->data, domain->mmap_size); + else +# endif /* _POSIX_MAPPED_FILES */ + free ((void *) domain->data); + + free (domain); +} +#endif diff --git a/bash-5.1/lib/intl/localcharset.c b/bash-5.1/lib/intl/localcharset.c new file mode 100644 index 0000000..6983d0b --- /dev/null +++ b/bash-5.1/lib/intl/localcharset.c @@ -0,0 +1,399 @@ +/* localcharset.c - Determine a canonical name for the current locale's character encoding. */ + +/* Copyright (C) 2000-2003, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Specification. */ +#include "localcharset.h" + +#if HAVE_STDDEF_H +# include +#endif + +#include +#if HAVE_STRING_H +# include +#else +# include +#endif +#if HAVE_STDLIB_H +# include +#endif + +#if defined _WIN32 || defined __WIN32__ +# undef WIN32 /* avoid warning on mingw32 */ +# define WIN32 +#endif + +#if defined __EMX__ +/* Assume EMX program runs on OS/2, even if compiled under DOS. */ +# define OS2 +#endif + +#if !defined WIN32 +# if HAVE_LANGINFO_CODESET +# include +# else +# if HAVE_SETLOCALE +# include +# endif +# endif +#elif defined WIN32 +# define WIN32_LEAN_AND_MEAN +# include +#endif +#if defined OS2 +# define INCL_DOS +# include +#endif + +#if ENABLE_RELOCATABLE +# include "relocatable.h" +#else +# define relocate(pathname) (pathname) +#endif + +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#endif + +#ifndef DIRECTORY_SEPARATOR +# define DIRECTORY_SEPARATOR '/' +#endif + +#ifndef ISSLASH +# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) +#endif + +#ifdef HAVE_GETC_UNLOCKED +# undef getc +# define getc getc_unlocked +#endif + +/* The following static variable is declared 'volatile' to avoid a + possible multithread problem in the function get_charset_aliases. If we + are running in a threaded environment, and if two threads initialize + 'charset_aliases' simultaneously, both will produce the same value, + and everything will be ok if the two assignments to 'charset_aliases' + are atomic. But I don't know what will happen if the two assignments mix. */ +#if __STDC__ != 1 +# define volatile /* empty */ +#endif +/* Pointer to the contents of the charset.alias file, if it has already been + read, else NULL. Its format is: + ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ +static const char * volatile charset_aliases; + +/* Return a pointer to the contents of the charset.alias file. */ +static const char * +get_charset_aliases () +{ + const char *cp; + + cp = charset_aliases; + if (cp == NULL) + { +#if !(defined VMS || defined WIN32) + FILE *fp; + const char *dir = relocate (LIBDIR); + const char *base = "charset.alias"; + char *file_name; + + /* Concatenate dir and base into freshly allocated file_name. */ + { + size_t dir_len = strlen (dir); + size_t base_len = strlen (base); + int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1])); + file_name = (char *) malloc (dir_len + add_slash + base_len + 1); + if (file_name != NULL) + { + memcpy (file_name, dir, dir_len); + if (add_slash) + file_name[dir_len] = DIRECTORY_SEPARATOR; + memcpy (file_name + dir_len + add_slash, base, base_len + 1); + } + } + + if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL) + /* Out of memory or file not found, treat it as empty. */ + cp = ""; + else + { + /* Parse the file's contents. */ + int c; + char buf1[50+1]; + char buf2[50+1]; + char *res_ptr = NULL; + size_t res_size = 0; + size_t l1, l2; + + for (;;) + { + c = getc (fp); + if (c == EOF) + break; + if (c == '\n' || c == ' ' || c == '\t') + continue; + if (c == '#') + { + /* Skip comment, to end of line. */ + do + c = getc (fp); + while (!(c == EOF || c == '\n')); + if (c == EOF) + break; + continue; + } + ungetc (c, fp); + if (fscanf (fp, "%50s %50s", buf1, buf2) < 2) + break; + l1 = strlen (buf1); + l2 = strlen (buf2); + if (res_size == 0) + { + res_size = l1 + 1 + l2 + 1; + res_ptr = (char *) malloc (res_size + 1); + } + else + { + res_size += l1 + 1 + l2 + 1; + res_ptr = (char *) realloc (res_ptr, res_size + 1); + } + if (res_ptr == NULL) + { + /* Out of memory. */ + res_size = 0; + break; + } + strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); + strcpy (res_ptr + res_size - (l2 + 1), buf2); + } + fclose (fp); + if (res_size == 0) + cp = ""; + else + { + *(res_ptr + res_size) = '\0'; + cp = res_ptr; + } + } + + if (file_name != NULL) + free (file_name); + +#else + +# if defined VMS + /* To avoid the troubles of an extra file charset.alias_vms in the + sources of many GNU packages, simply inline the aliases here. */ + /* The list of encodings is taken from the OpenVMS 7.3-1 documentation + "Compaq C Run-Time Library Reference Manual for OpenVMS systems" + section 10.7 "Handling Different Character Sets". */ + cp = "ISO8859-1" "\0" "ISO-8859-1" "\0" + "ISO8859-2" "\0" "ISO-8859-2" "\0" + "ISO8859-5" "\0" "ISO-8859-5" "\0" + "ISO8859-7" "\0" "ISO-8859-7" "\0" + "ISO8859-8" "\0" "ISO-8859-8" "\0" + "ISO8859-9" "\0" "ISO-8859-9" "\0" + /* Japanese */ + "eucJP" "\0" "EUC-JP" "\0" + "SJIS" "\0" "SHIFT_JIS" "\0" + "DECKANJI" "\0" "DEC-KANJI" "\0" + "SDECKANJI" "\0" "EUC-JP" "\0" + /* Chinese */ + "eucTW" "\0" "EUC-TW" "\0" + "DECHANYU" "\0" "DEC-HANYU" "\0" + "DECHANZI" "\0" "GB2312" "\0" + /* Korean */ + "DECKOREAN" "\0" "EUC-KR" "\0"; +# endif + +# if defined WIN32 + /* To avoid the troubles of installing a separate file in the same + directory as the DLL and of retrieving the DLL's directory at + runtime, simply inline the aliases here. */ + + cp = "CP936" "\0" "GBK" "\0" + "CP1361" "\0" "JOHAB" "\0" + "CP20127" "\0" "ASCII" "\0" + "CP20866" "\0" "KOI8-R" "\0" + "CP21866" "\0" "KOI8-RU" "\0" + "CP28591" "\0" "ISO-8859-1" "\0" + "CP28592" "\0" "ISO-8859-2" "\0" + "CP28593" "\0" "ISO-8859-3" "\0" + "CP28594" "\0" "ISO-8859-4" "\0" + "CP28595" "\0" "ISO-8859-5" "\0" + "CP28596" "\0" "ISO-8859-6" "\0" + "CP28597" "\0" "ISO-8859-7" "\0" + "CP28598" "\0" "ISO-8859-8" "\0" + "CP28599" "\0" "ISO-8859-9" "\0" + "CP28605" "\0" "ISO-8859-15" "\0"; +# endif +#endif + + charset_aliases = cp; + } + + return cp; +} + +/* Determine the current locale's character encoding, and canonicalize it + into one of the canonical names listed in config.charset. + The result must not be freed; it is statically allocated. + If the canonical name cannot be determined, the result is a non-canonical + name. */ + +#ifdef STATIC +STATIC +#endif +const char * +locale_charset () +{ + const char *codeset; + const char *aliases; + +#if !(defined WIN32 || defined OS2) + +# if HAVE_LANGINFO_CODESET + + /* Most systems support nl_langinfo (CODESET) nowadays. */ + codeset = nl_langinfo (CODESET); + +# else + + /* On old systems which lack it, use setlocale or getenv. */ + const char *locale = NULL; + + /* But most old systems don't have a complete set of locales. Some + (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't + use setlocale here; it would return "C" when it doesn't support the + locale name the user has set. */ +# if HAVE_SETLOCALE && 0 + locale = setlocale (LC_CTYPE, NULL); +# endif + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + } + + /* On some old systems, one used to set locale = "iso8859_1". On others, + you set it to "language_COUNTRY.charset". In any case, we resolve it + through the charset.alias file. */ + codeset = locale; + +# endif + +#elif defined WIN32 + + static char buf[2 + 10 + 1]; + + /* Woe32 has a function returning the locale's codepage as a number. */ + sprintf (buf, "CP%u", GetACP ()); + codeset = buf; + +#elif defined OS2 + + const char *locale; + static char buf[2 + 10 + 1]; + ULONG cp[3]; + ULONG cplen; + + /* Allow user to override the codeset, as set in the operating system, + with standard language environment variables. */ + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + if (locale != NULL && locale[0] != '\0') + { + /* If the locale name contains an encoding after the dot, return it. */ + const char *dot = strchr (locale, '.'); + + if (dot != NULL) + { + const char *modifier; + + dot++; + /* Look for the possible @... trailer and remove it, if any. */ + modifier = strchr (dot, '@'); + if (modifier == NULL) + return dot; + if (modifier - dot < sizeof (buf)) + { + memcpy (buf, dot, modifier - dot); + buf [modifier - dot] = '\0'; + return buf; + } + } + + /* Resolve through the charset.alias file. */ + codeset = locale; + } + else + { + /* OS/2 has a function returning the locale's codepage as a number. */ + if (DosQueryCp (sizeof (cp), cp, &cplen)) + codeset = ""; + else + { + sprintf (buf, "CP%u", cp[0]); + codeset = buf; + } + } + +#endif + + if (codeset == NULL) + /* The canonical name cannot be determined. */ + codeset = ""; + + /* Resolve alias. */ + for (aliases = get_charset_aliases (); + *aliases != '\0'; + aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1) + if (strcmp (codeset, aliases) == 0 + || (aliases[0] == '*' && aliases[1] == '\0')) + { + codeset = aliases + strlen (aliases) + 1; + break; + } + + /* Don't return an empty string. GNU libc and GNU libiconv interpret + the empty string as denoting "the locale's character encoding", + thus GNU libiconv would call this function a second time. */ + if (codeset[0] == '\0') + codeset = "ASCII"; + + return codeset; +} diff --git a/bash-5.1/lib/intl/localcharset.h b/bash-5.1/lib/intl/localcharset.h new file mode 100644 index 0000000..e529958 --- /dev/null +++ b/bash-5.1/lib/intl/localcharset.h @@ -0,0 +1,43 @@ +/* localcharset.h - Determine a canonical name for the current locale's character encoding. */ + +/* Copyright (C) 2000-2003, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifndef _LOCALCHARSET_H +#define _LOCALCHARSET_H + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Determine the current locale's character encoding, and canonicalize it + into one of the canonical names listed in config.charset. + The result must not be freed; it is statically allocated. + If the canonical name cannot be determined, the result is a non-canonical + name. */ +extern const char * locale_charset (void); + + +#ifdef __cplusplus +} +#endif + + +#endif /* _LOCALCHARSET_H */ diff --git a/bash-5.1/lib/intl/locale.alias b/bash-5.1/lib/intl/locale.alias new file mode 100644 index 0000000..51dd21e --- /dev/null +++ b/bash-5.1/lib/intl/locale.alias @@ -0,0 +1,78 @@ +# locale.alias - Locale name alias data base. +# +# Copyright (C) 1996,1997,1998,1999,2000,2001,2005-2009 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# 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 . +# + +# The format of this file is the same as for the corresponding file of +# the X Window System, which normally can be found in +# /usr/lib/X11/locale/locale.alias +# A single line contains two fields: an alias and a substitution value. +# All entries are case independent. + +# Note: This file is far from being complete. If you have a value for +# your own site which you think might be useful for others too, share +# it with the rest of us. Send it using the `glibcbug' script to +# bugs@gnu.org. + +# Packages using this file: + +bokmal no_NO.ISO-8859-1 +bokmål no_NO.ISO-8859-1 +catalan ca_ES.ISO-8859-1 +croatian hr_HR.ISO-8859-2 +czech cs_CZ.ISO-8859-2 +danish da_DK.ISO-8859-1 +dansk da_DK.ISO-8859-1 +deutsch de_DE.ISO-8859-1 +dutch nl_NL.ISO-8859-1 +eesti et_EE.ISO-8859-1 +estonian et_EE.ISO-8859-1 +finnish fi_FI.ISO-8859-1 +français fr_FR.ISO-8859-1 +french fr_FR.ISO-8859-1 +galego gl_ES.ISO-8859-1 +galician gl_ES.ISO-8859-1 +german de_DE.ISO-8859-1 +greek el_GR.ISO-8859-7 +hebrew he_IL.ISO-8859-8 +hrvatski hr_HR.ISO-8859-2 +hungarian hu_HU.ISO-8859-2 +icelandic is_IS.ISO-8859-1 +italian it_IT.ISO-8859-1 +japanese ja_JP.eucJP +japanese.euc ja_JP.eucJP +ja_JP ja_JP.eucJP +ja_JP.ujis ja_JP.eucJP +japanese.sjis ja_JP.SJIS +korean ko_KR.eucKR +korean.euc ko_KR.eucKR +ko_KR ko_KR.eucKR +lithuanian lt_LT.ISO-8859-13 +nb_NO no_NO.ISO-8859-1 +nb_NO.ISO-8859-1 no_NO.ISO-8859-1 +norwegian no_NO.ISO-8859-1 +nynorsk nn_NO.ISO-8859-1 +polish pl_PL.ISO-8859-2 +portuguese pt_PT.ISO-8859-1 +romanian ro_RO.ISO-8859-2 +russian ru_RU.ISO-8859-5 +slovak sk_SK.ISO-8859-2 +slovene sl_SI.ISO-8859-2 +slovenian sl_SI.ISO-8859-2 +spanish es_ES.ISO-8859-1 +swedish sv_SE.ISO-8859-1 +thai th_TH.TIS-620 +turkish tr_TR.ISO-8859-9 diff --git a/bash-5.1/lib/intl/localealias.c b/bash-5.1/lib/intl/localealias.c new file mode 100644 index 0000000..7a730db --- /dev/null +++ b/bash-5.1/lib/intl/localealias.c @@ -0,0 +1,427 @@ +/* localealias.c - Handle aliases for locale names. */ + +/* Copyright (C) 1995-1999, 2000-2001, 2003, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#if defined _LIBC || defined HAVE___FSETLOCKING +# include +#endif +#include + +#ifdef __GNUC__ +# undef alloca +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#include + +#include "gettextP.h" + +#if ENABLE_RELOCATABLE +# include "relocatable.h" +#else +# define relocate(pathname) (pathname) +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define strcasecmp __strcasecmp + +# ifndef mempcpy +# define mempcpy __mempcpy +# endif +# define HAVE_MEMPCPY 1 +# define HAVE___FSETLOCKING 1 + +/* We need locking here since we can be called from different places. */ +# include + +__libc_lock_define_initialized (static, lock); +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* Some optimizations for glibc. */ +#ifdef _LIBC +# define FEOF(fp) feof_unlocked (fp) +# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp) +#else +# define FEOF(fp) feof (fp) +# define FGETS(buf, n, fp) fgets (buf, n, fp) +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +#if defined _LIBC_REENTRANT || defined HAVE_FGETS_UNLOCKED +# undef fgets +# define fgets(buf, len, s) fgets_unlocked (buf, len, s) +#endif +#if defined _LIBC_REENTRANT || defined HAVE_FEOF_UNLOCKED +# undef feof +# define feof(s) feof_unlocked (s) +#endif + + +struct alias_map +{ + const char *alias; + const char *value; +}; + + +#ifndef _LIBC +# define libc_freeres_ptr(decl) decl +#endif + +libc_freeres_ptr (static char *string_space); +static size_t string_space_act; +static size_t string_space_max; +libc_freeres_ptr (static struct alias_map *map); +static size_t nmap; +static size_t maxmap; + + +/* Prototypes for local functions. */ +static size_t read_alias_file PARAMS ((const char *fname, int fname_len)) + internal_function; +static int extend_alias_table PARAMS ((void)); +static int alias_compare PARAMS ((const struct alias_map *map1, + const struct alias_map *map2)); + + +const char * +_nl_expand_alias (name) + const char *name; +{ + static const char *locale_alias_path; + struct alias_map *retval; + const char *result = NULL; + size_t added; + +#ifdef _LIBC + __libc_lock_lock (lock); +#endif + + if (locale_alias_path == NULL) + locale_alias_path = LOCALE_ALIAS_PATH; + + do + { + struct alias_map item; + + item.alias = name; + + if (nmap > 0) + retval = (struct alias_map *) bsearch (&item, map, nmap, + sizeof (struct alias_map), + (int (*) PARAMS ((const void *, + const void *)) + ) alias_compare); + else + retval = NULL; + + /* We really found an alias. Return the value. */ + if (retval != NULL) + { + result = retval->value; + break; + } + + /* Perhaps we can find another alias file. */ + added = 0; + while (added == 0 && locale_alias_path[0] != '\0') + { + const char *start; + + while (locale_alias_path[0] == PATH_SEPARATOR) + ++locale_alias_path; + start = locale_alias_path; + + while (locale_alias_path[0] != '\0' + && locale_alias_path[0] != PATH_SEPARATOR) + ++locale_alias_path; + + if (start < locale_alias_path) + added = read_alias_file (start, locale_alias_path - start); + } + } + while (added != 0); + +#ifdef _LIBC + __libc_lock_unlock (lock); +#endif + + return result; +} + + +static size_t +internal_function +read_alias_file (fname, fname_len) + const char *fname; + int fname_len; +{ + FILE *fp; + char *full_fname; + size_t added; + static const char aliasfile[] = "/locale.alias"; + + full_fname = (char *) alloca (fname_len + sizeof aliasfile); +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (full_fname, fname, fname_len), + aliasfile, sizeof aliasfile); +#else + memcpy (full_fname, fname, fname_len); + memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); +#endif + + fp = fopen (relocate (full_fname), "r"); + freea (full_fname); + if (fp == NULL) + return 0; + +#ifdef HAVE___FSETLOCKING + /* No threads present. */ + __fsetlocking (fp, FSETLOCKING_BYCALLER); +#endif + + added = 0; + while (!FEOF (fp)) + { + /* It is a reasonable approach to use a fix buffer here because + a) we are only interested in the first two fields + b) these fields must be usable as file names and so must not + be that long + We avoid a multi-kilobyte buffer here since this would use up + stack space which we might not have if the program ran out of + memory. */ + char buf[400]; + char *alias; + char *value; + char *cp; + + if (FGETS (buf, sizeof buf, fp) == NULL) + /* EOF reached. */ + break; + + cp = buf; + /* Ignore leading white space. */ + while (isspace ((unsigned char) cp[0])) + ++cp; + + /* A leading '#' signals a comment line. */ + if (cp[0] != '\0' && cp[0] != '#') + { + alias = cp++; + while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) + ++cp; + /* Terminate alias name. */ + if (cp[0] != '\0') + *cp++ = '\0'; + + /* Now look for the beginning of the value. */ + while (isspace ((unsigned char) cp[0])) + ++cp; + + if (cp[0] != '\0') + { + size_t alias_len; + size_t value_len; + + value = cp++; + while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) + ++cp; + /* Terminate value. */ + if (cp[0] == '\n') + { + /* This has to be done to make the following test + for the end of line possible. We are looking for + the terminating '\n' which do not overwrite here. */ + *cp++ = '\0'; + *cp = '\n'; + } + else if (cp[0] != '\0') + *cp++ = '\0'; + + if (nmap >= maxmap) + if (__builtin_expect (extend_alias_table (), 0)) + { + fclose (fp); + return added; + } + + alias_len = strlen (alias) + 1; + value_len = strlen (value) + 1; + + if (string_space_act + alias_len + value_len > string_space_max) + { + /* Increase size of memory pool. */ + size_t new_size = (string_space_max + + (alias_len + value_len > 1024 + ? alias_len + value_len : 1024)); + char *new_pool = (char *) realloc (string_space, new_size); + if (new_pool == NULL) + { + fclose (fp); + return added; + } + + if (__builtin_expect (string_space != new_pool, 0)) + { + size_t i; + + for (i = 0; i < nmap; i++) + { + map[i].alias += new_pool - string_space; + map[i].value += new_pool - string_space; + } + } + + string_space = new_pool; + string_space_max = new_size; + } + + map[nmap].alias = memcpy (&string_space[string_space_act], + alias, alias_len); + string_space_act += alias_len; + + map[nmap].value = memcpy (&string_space[string_space_act], + value, value_len); + string_space_act += value_len; + + ++nmap; + ++added; + } + } + + /* Possibly not the whole line fits into the buffer. Ignore + the rest of the line. */ + while (strchr (buf, '\n') == NULL) + if (FGETS (buf, sizeof buf, fp) == NULL) + /* Make sure the inner loop will be left. The outer loop + will exit at the `feof' test. */ + break; + } + + /* Should we test for ferror()? I think we have to silently ignore + errors. --drepper */ + fclose (fp); + + if (added > 0) + qsort (map, nmap, sizeof (struct alias_map), + (int (*) PARAMS ((const void *, const void *))) alias_compare); + + return added; +} + + +static int +extend_alias_table () +{ + size_t new_size; + struct alias_map *new_map; + + new_size = maxmap == 0 ? 100 : 2 * maxmap; + new_map = (struct alias_map *) realloc (map, (new_size + * sizeof (struct alias_map))); + if (new_map == NULL) + /* Simply don't extend: we don't have any more core. */ + return -1; + + map = new_map; + maxmap = new_size; + return 0; +} + + +static int +alias_compare (map1, map2) + const struct alias_map *map1; + const struct alias_map *map2; +{ +#if defined _LIBC || defined HAVE_STRCASECMP + return strcasecmp (map1->alias, map2->alias); +#else + const unsigned char *p1 = (const unsigned char *) map1->alias; + const unsigned char *p2 = (const unsigned char *) map2->alias; + unsigned char c1, c2; + + if (p1 == p2) + return 0; + + do + { + /* I know this seems to be odd but the tolower() function in + some systems libc cannot handle nonalpha characters. */ + c1 = isupper (*p1) ? tolower (*p1) : *p1; + c2 = isupper (*p2) ? tolower (*p2) : *p2; + if (c1 == '\0') + break; + ++p1; + ++p2; + } + while (c1 == c2); + + return c1 - c2; +#endif +} diff --git a/bash-5.1/lib/intl/localename.c b/bash-5.1/lib/intl/localename.c new file mode 100644 index 0000000..795a34f --- /dev/null +++ b/bash-5.1/lib/intl/localename.c @@ -0,0 +1,774 @@ +/* localename.c - Determine the current selected locale. */ + +/* Copyright (C) 1995-1999, 2000-2002, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +/* Written by Ulrich Drepper , 1995. */ +/* Win32 code written by Tor Lillqvist . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#if defined _WIN32 || defined __WIN32__ +# undef WIN32 /* avoid warning on mingw32 */ +# define WIN32 +#endif + +#ifdef WIN32 +# define WIN32_LEAN_AND_MEAN +# include +/* Mingw headers don't have latest language and sublanguage codes. */ +# ifndef LANG_AFRIKAANS +# define LANG_AFRIKAANS 0x36 +# endif +# ifndef LANG_ALBANIAN +# define LANG_ALBANIAN 0x1c +# endif +# ifndef LANG_ARABIC +# define LANG_ARABIC 0x01 +# endif +# ifndef LANG_ARMENIAN +# define LANG_ARMENIAN 0x2b +# endif +# ifndef LANG_ASSAMESE +# define LANG_ASSAMESE 0x4d +# endif +# ifndef LANG_AZERI +# define LANG_AZERI 0x2c +# endif +# ifndef LANG_BASQUE +# define LANG_BASQUE 0x2d +# endif +# ifndef LANG_BELARUSIAN +# define LANG_BELARUSIAN 0x23 +# endif +# ifndef LANG_BENGALI +# define LANG_BENGALI 0x45 +# endif +# ifndef LANG_CATALAN +# define LANG_CATALAN 0x03 +# endif +# ifndef LANG_DIVEHI +# define LANG_DIVEHI 0x65 +# endif +# ifndef LANG_ESTONIAN +# define LANG_ESTONIAN 0x25 +# endif +# ifndef LANG_FAEROESE +# define LANG_FAEROESE 0x38 +# endif +# ifndef LANG_FARSI +# define LANG_FARSI 0x29 +# endif +# ifndef LANG_GALICIAN +# define LANG_GALICIAN 0x56 +# endif +# ifndef LANG_GEORGIAN +# define LANG_GEORGIAN 0x37 +# endif +# ifndef LANG_GUJARATI +# define LANG_GUJARATI 0x47 +# endif +# ifndef LANG_HEBREW +# define LANG_HEBREW 0x0d +# endif +# ifndef LANG_HINDI +# define LANG_HINDI 0x39 +# endif +# ifndef LANG_INDONESIAN +# define LANG_INDONESIAN 0x21 +# endif +# ifndef LANG_KANNADA +# define LANG_KANNADA 0x4b +# endif +# ifndef LANG_KASHMIRI +# define LANG_KASHMIRI 0x60 +# endif +# ifndef LANG_KAZAK +# define LANG_KAZAK 0x3f +# endif +# ifndef LANG_KONKANI +# define LANG_KONKANI 0x57 +# endif +# ifndef LANG_KYRGYZ +# define LANG_KYRGYZ 0x40 +# endif +# ifndef LANG_LATVIAN +# define LANG_LATVIAN 0x26 +# endif +# ifndef LANG_LITHUANIAN +# define LANG_LITHUANIAN 0x27 +# endif +# ifndef LANG_MACEDONIAN +# define LANG_MACEDONIAN 0x2f +# endif +# ifndef LANG_MALAY +# define LANG_MALAY 0x3e +# endif +# ifndef LANG_MALAYALAM +# define LANG_MALAYALAM 0x4c +# endif +# ifndef LANG_MANIPURI +# define LANG_MANIPURI 0x58 +# endif +# ifndef LANG_MARATHI +# define LANG_MARATHI 0x4e +# endif +# ifndef LANG_MONGOLIAN +# define LANG_MONGOLIAN 0x50 +# endif +# ifndef LANG_NEPALI +# define LANG_NEPALI 0x61 +# endif +# ifndef LANG_ORIYA +# define LANG_ORIYA 0x48 +# endif +# ifndef LANG_PUNJABI +# define LANG_PUNJABI 0x46 +# endif +# ifndef LANG_SANSKRIT +# define LANG_SANSKRIT 0x4f +# endif +# ifndef LANG_SERBIAN +# define LANG_SERBIAN 0x1a +# endif +# ifndef LANG_SINDHI +# define LANG_SINDHI 0x59 +# endif +# ifndef LANG_SLOVAK +# define LANG_SLOVAK 0x1b +# endif +# ifndef LANG_SORBIAN +# define LANG_SORBIAN 0x2e +# endif +# ifndef LANG_SWAHILI +# define LANG_SWAHILI 0x41 +# endif +# ifndef LANG_SYRIAC +# define LANG_SYRIAC 0x5a +# endif +# ifndef LANG_TAMIL +# define LANG_TAMIL 0x49 +# endif +# ifndef LANG_TATAR +# define LANG_TATAR 0x44 +# endif +# ifndef LANG_TELUGU +# define LANG_TELUGU 0x4a +# endif +# ifndef LANG_THAI +# define LANG_THAI 0x1e +# endif +# ifndef LANG_UKRAINIAN +# define LANG_UKRAINIAN 0x22 +# endif +# ifndef LANG_URDU +# define LANG_URDU 0x20 +# endif +# ifndef LANG_UZBEK +# define LANG_UZBEK 0x43 +# endif +# ifndef LANG_VIETNAMESE +# define LANG_VIETNAMESE 0x2a +# endif +# ifndef SUBLANG_ARABIC_SAUDI_ARABIA +# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 +# endif +# ifndef SUBLANG_ARABIC_IRAQ +# define SUBLANG_ARABIC_IRAQ 0x02 +# endif +# ifndef SUBLANG_ARABIC_EGYPT +# define SUBLANG_ARABIC_EGYPT 0x03 +# endif +# ifndef SUBLANG_ARABIC_LIBYA +# define SUBLANG_ARABIC_LIBYA 0x04 +# endif +# ifndef SUBLANG_ARABIC_ALGERIA +# define SUBLANG_ARABIC_ALGERIA 0x05 +# endif +# ifndef SUBLANG_ARABIC_MOROCCO +# define SUBLANG_ARABIC_MOROCCO 0x06 +# endif +# ifndef SUBLANG_ARABIC_TUNISIA +# define SUBLANG_ARABIC_TUNISIA 0x07 +# endif +# ifndef SUBLANG_ARABIC_OMAN +# define SUBLANG_ARABIC_OMAN 0x08 +# endif +# ifndef SUBLANG_ARABIC_YEMEN +# define SUBLANG_ARABIC_YEMEN 0x09 +# endif +# ifndef SUBLANG_ARABIC_SYRIA +# define SUBLANG_ARABIC_SYRIA 0x0a +# endif +# ifndef SUBLANG_ARABIC_JORDAN +# define SUBLANG_ARABIC_JORDAN 0x0b +# endif +# ifndef SUBLANG_ARABIC_LEBANON +# define SUBLANG_ARABIC_LEBANON 0x0c +# endif +# ifndef SUBLANG_ARABIC_KUWAIT +# define SUBLANG_ARABIC_KUWAIT 0x0d +# endif +# ifndef SUBLANG_ARABIC_UAE +# define SUBLANG_ARABIC_UAE 0x0e +# endif +# ifndef SUBLANG_ARABIC_BAHRAIN +# define SUBLANG_ARABIC_BAHRAIN 0x0f +# endif +# ifndef SUBLANG_ARABIC_QATAR +# define SUBLANG_ARABIC_QATAR 0x10 +# endif +# ifndef SUBLANG_AZERI_LATIN +# define SUBLANG_AZERI_LATIN 0x01 +# endif +# ifndef SUBLANG_AZERI_CYRILLIC +# define SUBLANG_AZERI_CYRILLIC 0x02 +# endif +# ifndef SUBLANG_CHINESE_MACAU +# define SUBLANG_CHINESE_MACAU 0x05 +# endif +# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA +# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 +# endif +# ifndef SUBLANG_ENGLISH_JAMAICA +# define SUBLANG_ENGLISH_JAMAICA 0x08 +# endif +# ifndef SUBLANG_ENGLISH_CARIBBEAN +# define SUBLANG_ENGLISH_CARIBBEAN 0x09 +# endif +# ifndef SUBLANG_ENGLISH_BELIZE +# define SUBLANG_ENGLISH_BELIZE 0x0a +# endif +# ifndef SUBLANG_ENGLISH_TRINIDAD +# define SUBLANG_ENGLISH_TRINIDAD 0x0b +# endif +# ifndef SUBLANG_ENGLISH_ZIMBABWE +# define SUBLANG_ENGLISH_ZIMBABWE 0x0c +# endif +# ifndef SUBLANG_ENGLISH_PHILIPPINES +# define SUBLANG_ENGLISH_PHILIPPINES 0x0d +# endif +# ifndef SUBLANG_FRENCH_LUXEMBOURG +# define SUBLANG_FRENCH_LUXEMBOURG 0x05 +# endif +# ifndef SUBLANG_FRENCH_MONACO +# define SUBLANG_FRENCH_MONACO 0x06 +# endif +# ifndef SUBLANG_GERMAN_LUXEMBOURG +# define SUBLANG_GERMAN_LUXEMBOURG 0x04 +# endif +# ifndef SUBLANG_GERMAN_LIECHTENSTEIN +# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 +# endif +# ifndef SUBLANG_KASHMIRI_INDIA +# define SUBLANG_KASHMIRI_INDIA 0x02 +# endif +# ifndef SUBLANG_MALAY_MALAYSIA +# define SUBLANG_MALAY_MALAYSIA 0x01 +# endif +# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM +# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 +# endif +# ifndef SUBLANG_NEPALI_INDIA +# define SUBLANG_NEPALI_INDIA 0x02 +# endif +# ifndef SUBLANG_SERBIAN_LATIN +# define SUBLANG_SERBIAN_LATIN 0x02 +# endif +# ifndef SUBLANG_SERBIAN_CYRILLIC +# define SUBLANG_SERBIAN_CYRILLIC 0x03 +# endif +# ifndef SUBLANG_SPANISH_GUATEMALA +# define SUBLANG_SPANISH_GUATEMALA 0x04 +# endif +# ifndef SUBLANG_SPANISH_COSTA_RICA +# define SUBLANG_SPANISH_COSTA_RICA 0x05 +# endif +# ifndef SUBLANG_SPANISH_PANAMA +# define SUBLANG_SPANISH_PANAMA 0x06 +# endif +# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC +# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 +# endif +# ifndef SUBLANG_SPANISH_VENEZUELA +# define SUBLANG_SPANISH_VENEZUELA 0x08 +# endif +# ifndef SUBLANG_SPANISH_COLOMBIA +# define SUBLANG_SPANISH_COLOMBIA 0x09 +# endif +# ifndef SUBLANG_SPANISH_PERU +# define SUBLANG_SPANISH_PERU 0x0a +# endif +# ifndef SUBLANG_SPANISH_ARGENTINA +# define SUBLANG_SPANISH_ARGENTINA 0x0b +# endif +# ifndef SUBLANG_SPANISH_ECUADOR +# define SUBLANG_SPANISH_ECUADOR 0x0c +# endif +# ifndef SUBLANG_SPANISH_CHILE +# define SUBLANG_SPANISH_CHILE 0x0d +# endif +# ifndef SUBLANG_SPANISH_URUGUAY +# define SUBLANG_SPANISH_URUGUAY 0x0e +# endif +# ifndef SUBLANG_SPANISH_PARAGUAY +# define SUBLANG_SPANISH_PARAGUAY 0x0f +# endif +# ifndef SUBLANG_SPANISH_BOLIVIA +# define SUBLANG_SPANISH_BOLIVIA 0x10 +# endif +# ifndef SUBLANG_SPANISH_EL_SALVADOR +# define SUBLANG_SPANISH_EL_SALVADOR 0x11 +# endif +# ifndef SUBLANG_SPANISH_HONDURAS +# define SUBLANG_SPANISH_HONDURAS 0x12 +# endif +# ifndef SUBLANG_SPANISH_NICARAGUA +# define SUBLANG_SPANISH_NICARAGUA 0x13 +# endif +# ifndef SUBLANG_SPANISH_PUERTO_RICO +# define SUBLANG_SPANISH_PUERTO_RICO 0x14 +# endif +# ifndef SUBLANG_SWEDISH_FINLAND +# define SUBLANG_SWEDISH_FINLAND 0x02 +# endif +# ifndef SUBLANG_URDU_PAKISTAN +# define SUBLANG_URDU_PAKISTAN 0x01 +# endif +# ifndef SUBLANG_URDU_INDIA +# define SUBLANG_URDU_INDIA 0x02 +# endif +# ifndef SUBLANG_UZBEK_LATIN +# define SUBLANG_UZBEK_LATIN 0x01 +# endif +# ifndef SUBLANG_UZBEK_CYRILLIC +# define SUBLANG_UZBEK_CYRILLIC 0x02 +# endif +#endif + +/* XPG3 defines the result of 'setlocale (category, NULL)' as: + "Directs 'setlocale()' to query 'category' and return the current + setting of 'local'." + However it does not specify the exact format. Neither do SUSV2 and + ISO C 99. So we can use this feature only on selected systems (e.g. + those using GNU C Library). */ +#if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2) +# define HAVE_LOCALE_NULL +#endif + +/* Determine the current locale's name, and canonicalize it into XPG syntax + language[_territory[.codeset]][@modifier] + The codeset part in the result is not reliable; the locale_charset() + should be used for codeset information instead. + The result must not be freed; it is statically allocated. */ + +const char * +_nl_locale_name (category, categoryname) + int category; + const char *categoryname; +{ + const char *retval; + +#ifndef WIN32 + + /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'. + On some systems this can be done by the 'setlocale' function itself. */ +# if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL + retval = setlocale (category, NULL); +# else + /* Setting of LC_ALL overwrites all other. */ + retval = getenv ("LC_ALL"); + if (retval == NULL || retval[0] == '\0') + { + /* Next comes the name of the desired category. */ + retval = getenv (categoryname); + if (retval == NULL || retval[0] == '\0') + { + /* Last possibility is the LANG environment variable. */ + retval = getenv ("LANG"); + if (retval == NULL || retval[0] == '\0') + /* We use C as the default domain. POSIX says this is + implementation defined. */ + retval = "C"; + } + } +# endif + + return retval; + +#else /* WIN32 */ + + /* Return an XPG style locale name language[_territory][@modifier]. + Don't even bother determining the codeset; it's not useful in this + context, because message catalogs are not specific to a single + codeset. */ + + LCID lcid; + LANGID langid; + int primary, sub; + + /* Let the user override the system settings through environment + variables, as on POSIX systems. */ + retval = getenv ("LC_ALL"); + if (retval != NULL && retval[0] != '\0') + return retval; + retval = getenv (categoryname); + if (retval != NULL && retval[0] != '\0') + return retval; + retval = getenv ("LANG"); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* Use native Win32 API locale ID. */ + lcid = GetThreadLocale (); + + /* Strip off the sorting rules, keep only the language part. */ + langid = LANGIDFROMLCID (lcid); + + /* Split into language and territory part. */ + primary = PRIMARYLANGID (langid); + sub = SUBLANGID (langid); + + /* Dispatch on language. + See also http://www.unicode.org/unicode/onlinedat/languages.html . + For details about languages, see http://www.ethnologue.com/ . */ + switch (primary) + { + case LANG_AFRIKAANS: return "af_ZA"; + case LANG_ALBANIAN: return "sq_AL"; + case 0x5e: /* AMHARIC */ return "am_ET"; + case LANG_ARABIC: + switch (sub) + { + case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA"; + case SUBLANG_ARABIC_IRAQ: return "ar_IQ"; + case SUBLANG_ARABIC_EGYPT: return "ar_EG"; + case SUBLANG_ARABIC_LIBYA: return "ar_LY"; + case SUBLANG_ARABIC_ALGERIA: return "ar_DZ"; + case SUBLANG_ARABIC_MOROCCO: return "ar_MA"; + case SUBLANG_ARABIC_TUNISIA: return "ar_TN"; + case SUBLANG_ARABIC_OMAN: return "ar_OM"; + case SUBLANG_ARABIC_YEMEN: return "ar_YE"; + case SUBLANG_ARABIC_SYRIA: return "ar_SY"; + case SUBLANG_ARABIC_JORDAN: return "ar_JO"; + case SUBLANG_ARABIC_LEBANON: return "ar_LB"; + case SUBLANG_ARABIC_KUWAIT: return "ar_KW"; + case SUBLANG_ARABIC_UAE: return "ar_AE"; + case SUBLANG_ARABIC_BAHRAIN: return "ar_BH"; + case SUBLANG_ARABIC_QATAR: return "ar_QA"; + } + return "ar"; + case LANG_ARMENIAN: return "hy_AM"; + case LANG_ASSAMESE: return "as_IN"; + case LANG_AZERI: + switch (sub) + { + /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */ + case SUBLANG_AZERI_LATIN: return "az_AZ@latin"; + case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic"; + } + return "az"; + case LANG_BASQUE: + return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */ + case LANG_BELARUSIAN: return "be_BY"; + case LANG_BENGALI: return "bn_IN"; + case LANG_BULGARIAN: return "bg_BG"; + case 0x55: /* BURMESE */ return "my_MM"; + case 0x53: /* CAMBODIAN */ return "km_KH"; + case LANG_CATALAN: return "ca_ES"; + case 0x5c: /* CHEROKEE */ return "chr_US"; + case LANG_CHINESE: + switch (sub) + { + case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW"; + case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN"; + case SUBLANG_CHINESE_HONGKONG: return "zh_HK"; + case SUBLANG_CHINESE_SINGAPORE: return "zh_SG"; + case SUBLANG_CHINESE_MACAU: return "zh_MO"; + } + return "zh"; + case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN + * What used to be called Serbo-Croatian + * should really now be two separate + * languages because of political reasons. + * (Says tml, who knows nothing about Serbian + * or Croatian.) + * (I can feel those flames coming already.) + */ + switch (sub) + { + case SUBLANG_DEFAULT: return "hr_HR"; + case SUBLANG_SERBIAN_LATIN: return "sr_YU"; + case SUBLANG_SERBIAN_CYRILLIC: return "sr_YU@cyrillic"; + } + return "hr"; + case LANG_CZECH: return "cs_CZ"; + case LANG_DANISH: return "da_DK"; + case LANG_DIVEHI: return "div_MV"; + case LANG_DUTCH: + switch (sub) + { + case SUBLANG_DUTCH: return "nl_NL"; + case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE"; + } + return "nl"; + case 0x66: /* EDO */ return "bin_NG"; + case LANG_ENGLISH: + switch (sub) + { + /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought + * English was the language spoken in England. + * Oh well. + */ + case SUBLANG_ENGLISH_US: return "en_US"; + case SUBLANG_ENGLISH_UK: return "en_GB"; + case SUBLANG_ENGLISH_AUS: return "en_AU"; + case SUBLANG_ENGLISH_CAN: return "en_CA"; + case SUBLANG_ENGLISH_NZ: return "en_NZ"; + case SUBLANG_ENGLISH_EIRE: return "en_IE"; + case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA"; + case SUBLANG_ENGLISH_JAMAICA: return "en_JM"; + case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */ + case SUBLANG_ENGLISH_BELIZE: return "en_BZ"; + case SUBLANG_ENGLISH_TRINIDAD: return "en_TT"; + case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW"; + case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH"; + } + return "en"; + case LANG_ESTONIAN: return "et_EE"; + case LANG_FAEROESE: return "fo_FO"; + case LANG_FARSI: return "fa_IR"; + case LANG_FINNISH: return "fi_FI"; + case LANG_FRENCH: + switch (sub) + { + case SUBLANG_FRENCH: return "fr_FR"; + case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE"; + case SUBLANG_FRENCH_CANADIAN: return "fr_CA"; + case SUBLANG_FRENCH_SWISS: return "fr_CH"; + case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU"; + case SUBLANG_FRENCH_MONACO: return "fr_MC"; + } + return "fr"; + case 0x62: /* FRISIAN */ return "fy_NL"; + case 0x67: /* FULFULDE */ return "ful_NG"; + case 0x3c: /* GAELIC */ + switch (sub) + { + case 0x01: /* SCOTTISH */ return "gd_GB"; + case 0x02: /* IRISH */ return "ga_IE"; + } + return "C"; + case LANG_GALICIAN: return "gl_ES"; + case LANG_GEORGIAN: return "ka_GE"; + case LANG_GERMAN: + switch (sub) + { + case SUBLANG_GERMAN: return "de_DE"; + case SUBLANG_GERMAN_SWISS: return "de_CH"; + case SUBLANG_GERMAN_AUSTRIAN: return "de_AT"; + case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU"; + case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI"; + } + return "de"; + case LANG_GREEK: return "el_GR"; + case 0x74: /* GUARANI */ return "gn_PY"; + case LANG_GUJARATI: return "gu_IN"; + case 0x68: /* HAUSA */ return "ha_NG"; + case 0x75: /* HAWAIIAN */ + /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers) + or Hawaii Creole English ("cpe_US", 600000 speakers)? */ + return "cpe_US"; + case LANG_HEBREW: return "he_IL"; + case LANG_HINDI: return "hi_IN"; + case LANG_HUNGARIAN: return "hu_HU"; + case 0x69: /* IBIBIO */ return "nic_NG"; + case LANG_ICELANDIC: return "is_IS"; + case 0x70: /* IGBO */ return "ibo_NG"; + case LANG_INDONESIAN: return "id_ID"; + case 0x5d: /* INUKTITUT */ return "iu_CA"; + case LANG_ITALIAN: + switch (sub) + { + case SUBLANG_ITALIAN: return "it_IT"; + case SUBLANG_ITALIAN_SWISS: return "it_CH"; + } + return "it"; + case LANG_JAPANESE: return "ja_JP"; + case LANG_KANNADA: return "kn_IN"; + case 0x71: /* KANURI */ return "kau_NG"; + case LANG_KASHMIRI: + switch (sub) + { + case SUBLANG_DEFAULT: return "ks_PK"; + case SUBLANG_KASHMIRI_INDIA: return "ks_IN"; + } + return "ks"; + case LANG_KAZAK: return "kk_KZ"; + case LANG_KONKANI: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "kok_IN"; + case LANG_KOREAN: return "ko_KR"; + case LANG_KYRGYZ: return "ky_KG"; + case 0x54: /* LAO */ return "lo_LA"; + case 0x76: /* LATIN */ return "la_VA"; + case LANG_LATVIAN: return "lv_LV"; + case LANG_LITHUANIAN: return "lt_LT"; + case LANG_MACEDONIAN: return "mk_MK"; + case LANG_MALAY: + switch (sub) + { + case SUBLANG_MALAY_MALAYSIA: return "ms_MY"; + case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN"; + } + return "ms"; + case LANG_MALAYALAM: return "ml_IN"; + case 0x3a: /* MALTESE */ return "mt_MT"; + case LANG_MANIPURI: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "mni_IN"; + case LANG_MARATHI: return "mr_IN"; + case LANG_MONGOLIAN: + return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */ + case LANG_NEPALI: + switch (sub) + { + case SUBLANG_DEFAULT: return "ne_NP"; + case SUBLANG_NEPALI_INDIA: return "ne_IN"; + } + return "ne"; + case LANG_NORWEGIAN: + switch (sub) + { + case SUBLANG_NORWEGIAN_BOKMAL: return "no_NO"; + case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO"; + } + return "no"; + case LANG_ORIYA: return "or_IN"; + case 0x72: /* OROMO */ return "om_ET"; + case 0x79: /* PAPIAMENTU */ return "pap_AN"; + case 0x63: /* PASHTO */ + return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */ + case LANG_POLISH: return "pl_PL"; + case LANG_PORTUGUESE: + switch (sub) + { + case SUBLANG_PORTUGUESE: return "pt_PT"; + /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT. + Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */ + case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR"; + } + return "pt"; + case LANG_PUNJABI: return "pa_IN"; + case 0x17: /* RHAETO-ROMANCE */ return "rm_CH"; + case LANG_ROMANIAN: return "ro_RO"; + case LANG_RUSSIAN: + return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA". */ + case 0x3b: /* SAMI */ return "se_NO"; + case LANG_SANSKRIT: return "sa_IN"; + case LANG_SINDHI: return "sd"; + case 0x5b: /* SINHALESE */ return "si_LK"; + case LANG_SLOVAK: return "sk_SK"; + case LANG_SLOVENIAN: return "sl_SI"; + case 0x77: /* SOMALI */ return "so_SO"; + case LANG_SORBIAN: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "wen_DE"; + case LANG_SPANISH: + switch (sub) + { + case SUBLANG_SPANISH: return "es_ES"; + case SUBLANG_SPANISH_MEXICAN: return "es_MX"; + case SUBLANG_SPANISH_MODERN: + return "es_ES@modern"; /* not seen on Unix */ + case SUBLANG_SPANISH_GUATEMALA: return "es_GT"; + case SUBLANG_SPANISH_COSTA_RICA: return "es_CR"; + case SUBLANG_SPANISH_PANAMA: return "es_PA"; + case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO"; + case SUBLANG_SPANISH_VENEZUELA: return "es_VE"; + case SUBLANG_SPANISH_COLOMBIA: return "es_CO"; + case SUBLANG_SPANISH_PERU: return "es_PE"; + case SUBLANG_SPANISH_ARGENTINA: return "es_AR"; + case SUBLANG_SPANISH_ECUADOR: return "es_EC"; + case SUBLANG_SPANISH_CHILE: return "es_CL"; + case SUBLANG_SPANISH_URUGUAY: return "es_UY"; + case SUBLANG_SPANISH_PARAGUAY: return "es_PY"; + case SUBLANG_SPANISH_BOLIVIA: return "es_BO"; + case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV"; + case SUBLANG_SPANISH_HONDURAS: return "es_HN"; + case SUBLANG_SPANISH_NICARAGUA: return "es_NI"; + case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR"; + } + return "es"; + case 0x30: /* SUTU */ return "bnt_TZ"; + case LANG_SWAHILI: return "sw_KE"; + case LANG_SWEDISH: + switch (sub) + { + case SUBLANG_DEFAULT: return "sv_SE"; + case SUBLANG_SWEDISH_FINLAND: return "sv_FI"; + } + return "sv"; + case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */ + case 0x64: /* TAGALOG */ return "tl_PH"; + case 0x28: /* TAJIK */ return "tg_TJ"; + case 0x5f: /* TAMAZIGHT */ return "ber_MA"; + case LANG_TAMIL: + return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */ + case LANG_TATAR: return "tt_RU"; + case LANG_TELUGU: return "te_IN"; + case LANG_THAI: return "th_TH"; + case 0x51: /* TIBETAN */ return "bo_CN"; + case 0x73: /* TIGRINYA */ return "ti_ET"; + case 0x31: /* TSONGA */ return "ts_ZA"; + case LANG_TURKISH: return "tr_TR"; + case 0x42: /* TURKMEN */ return "tk_TM"; + case LANG_UKRAINIAN: return "uk_UA"; + case LANG_URDU: + switch (sub) + { + case SUBLANG_URDU_PAKISTAN: return "ur_PK"; + case SUBLANG_URDU_INDIA: return "ur_IN"; + } + return "ur"; + case LANG_UZBEK: + switch (sub) + { + /* FIXME: Adjust this when Uzbek locales appear on Unix. */ + case SUBLANG_UZBEK_LATIN: return "uz_UZ@latin"; + case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic"; + } + return "uz"; + case 0x33: /* VENDA */ return "ven_ZA"; + case LANG_VIETNAMESE: return "vi_VN"; + case 0x52: /* WELSH */ return "cy_GB"; + case 0x34: /* XHOSA */ return "xh_ZA"; + case 0x78: /* YI */ return "sit_CN"; + case 0x3d: /* YIDDISH */ return "yi_IL"; + case 0x6a: /* YORUBA */ return "yo_NG"; + case 0x35: /* ZULU */ return "zu_ZA"; + default: return "C"; + } + +#endif +} diff --git a/bash-5.1/lib/intl/log.c b/bash-5.1/lib/intl/log.c new file mode 100644 index 0000000..e527e87 --- /dev/null +++ b/bash-5.1/lib/intl/log.c @@ -0,0 +1,106 @@ +/* log.c - Log file output. */ + +/* Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +/* Print an ASCII string with quotes and escape sequences where needed. */ +static void +print_escaped (stream, str) + FILE *stream; + const char *str; +{ + putc ('"', stream); + for (; *str != '\0'; str++) + if (*str == '\n') + { + fputs ("\\n\"", stream); + if (str[1] == '\0') + return; + fputs ("\n\"", stream); + } + else + { + if (*str == '"' || *str == '\\') + putc ('\\', stream); + putc (*str, stream); + } + putc ('"', stream); +} + +/* Add to the log file an entry denoting a failed translation. */ +void +_nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural) + const char *logfilename; + const char *domainname; + const char *msgid1; + const char *msgid2; + int plural; +{ + static char *last_logfilename = NULL; + static FILE *last_logfile = NULL; + FILE *logfile; + + /* Can we reuse the last opened logfile? */ + if (last_logfilename == NULL || strcmp (logfilename, last_logfilename) != 0) + { + /* Close the last used logfile. */ + if (last_logfilename != NULL) + { + if (last_logfile != NULL) + { + fclose (last_logfile); + last_logfile = NULL; + } + free (last_logfilename); + last_logfilename = NULL; + } + /* Open the logfile. */ + last_logfilename = (char *) malloc (strlen (logfilename) + 1); + if (last_logfilename == NULL) + return; + strcpy (last_logfilename, logfilename); + last_logfile = fopen (logfilename, "a"); + if (last_logfile == NULL) + return; + } + logfile = last_logfile; + + fprintf (logfile, "domain "); + print_escaped (logfile, domainname); + fprintf (logfile, "\nmsgid "); + print_escaped (logfile, msgid1); + if (plural) + { + fprintf (logfile, "\nmsgid_plural "); + print_escaped (logfile, msgid2); + fprintf (logfile, "\nmsgstr[0] \"\"\n"); + } + else + fprintf (logfile, "\nmsgstr \"\"\n"); + putc ('\n', logfile); +} diff --git a/bash-5.1/lib/intl/ngettext.c b/bash-5.1/lib/intl/ngettext.c new file mode 100644 index 0000000..95aafcc --- /dev/null +++ b/bash-5.1/lib/intl/ngettext.c @@ -0,0 +1,70 @@ +/* ngettext.c - Implementation of ngettext(3) function. */ + +/* Copyright (C) 1995, 1997, 2000, 2001, 2002, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +#include + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define NGETTEXT __ngettext +# define DCNGETTEXT __dcngettext +#else +# define NGETTEXT libintl_ngettext +# define DCNGETTEXT libintl_dcngettext +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +NGETTEXT (msgid1, msgid2, n) + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__ngettext, ngettext); +#endif diff --git a/bash-5.1/lib/intl/os2compat.c b/bash-5.1/lib/intl/os2compat.c new file mode 100644 index 0000000..1aa9dff --- /dev/null +++ b/bash-5.1/lib/intl/os2compat.c @@ -0,0 +1,100 @@ +/* os2compat.c - OS/2 compatibility functions. */ + +/* Copyright (C) 2001-2002, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#define OS2_AWARE +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +/* A version of getenv() that works from DLLs */ +extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue); + +char * +_nl_getenv (const char *name) +{ + unsigned char *value; + if (DosScanEnv (name, &value)) + return NULL; + else + return value; +} + +/* A fixed size buffer. */ +char libintl_nl_default_dirname[MAXPATHLEN+1]; + +char *_nlos2_libdir = NULL; +char *_nlos2_localealiaspath = NULL; +char *_nlos2_localedir = NULL; + +static __attribute__((constructor)) void +nlos2_initialize () +{ + char *root = getenv ("UNIXROOT"); + char *gnulocaledir = getenv ("GNULOCALEDIR"); + + _nlos2_libdir = gnulocaledir; + if (!_nlos2_libdir) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1); + memcpy (_nlos2_libdir, root, sl); + memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1); + } + else + _nlos2_libdir = LIBDIR; + } + + _nlos2_localealiaspath = gnulocaledir; + if (!_nlos2_localealiaspath) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1); + memcpy (_nlos2_localealiaspath, root, sl); + memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1); + } + else + _nlos2_localealiaspath = LOCALE_ALIAS_PATH; + } + + _nlos2_localedir = gnulocaledir; + if (!_nlos2_localedir) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1); + memcpy (_nlos2_localedir, root, sl); + memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1); + } + else + _nlos2_localedir = LOCALEDIR; + } + + if (strlen (_nlos2_localedir) <= MAXPATHLEN) + strcpy (libintl_nl_default_dirname, _nlos2_localedir); +} diff --git a/bash-5.1/lib/intl/os2compat.h b/bash-5.1/lib/intl/os2compat.h new file mode 100644 index 0000000..8de3183 --- /dev/null +++ b/bash-5.1/lib/intl/os2compat.h @@ -0,0 +1,48 @@ +/* os2compat.h - OS/2 compatibility defines. */ + +/* This file is intended to be included from config.h + Copyright (C) 2001-2002, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +/* When included from os2compat.h we need all the original definitions */ +#ifndef OS2_AWARE + +#undef LIBDIR +#define LIBDIR _nlos2_libdir +extern char *_nlos2_libdir; + +#undef LOCALEDIR +#define LOCALEDIR _nlos2_localedir +extern char *_nlos2_localedir; + +#undef LOCALE_ALIAS_PATH +#define LOCALE_ALIAS_PATH _nlos2_localealiaspath +extern char *_nlos2_localealiaspath; + +#endif + +#undef HAVE_STRCASECMP +#define HAVE_STRCASECMP 1 +#define strcasecmp stricmp +#define strncasecmp strnicmp + +/* We have our own getenv() which works even if library is compiled as DLL */ +#define getenv _nl_getenv + +/* Older versions of gettext used -1 as the value of LC_MESSAGES */ +#define LC_MESSAGES_COMPAT (-1) diff --git a/bash-5.1/lib/intl/osdep.c b/bash-5.1/lib/intl/osdep.c new file mode 100644 index 0000000..b030022 --- /dev/null +++ b/bash-5.1/lib/intl/osdep.c @@ -0,0 +1,26 @@ +/* osdep.c - OS dependent parts of libintl. */ + +/* Copyright (C) 2001-2002, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#if defined __EMX__ +# include "os2compat.c" +#else +/* Avoid AIX compiler warning. */ +typedef int dummy; +#endif diff --git a/bash-5.1/lib/intl/plural-exp.c b/bash-5.1/lib/intl/plural-exp.c new file mode 100644 index 0000000..9ed3b16 --- /dev/null +++ b/bash-5.1/lib/intl/plural-exp.c @@ -0,0 +1,158 @@ +/* plural-exp.c - Expression parsing for plural form selection. */ + +/* Copyright (C) 2000, 2001, 2005-2009 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "plural-exp.h" + +#if (defined __GNUC__ && !defined __APPLE_CC__) \ + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) + +/* These structs are the constant expression for the germanic plural + form determination. It represents the expression "n != 1". */ +static const struct expression plvar = +{ + .nargs = 0, + .operation = var, +}; +static const struct expression plone = +{ + .nargs = 0, + .operation = num, + .val = + { + .num = 1 + } +}; +struct expression GERMANIC_PLURAL = +{ + .nargs = 2, + .operation = not_equal, + .val = + { + .args = + { + [0] = (struct expression *) &plvar, + [1] = (struct expression *) &plone + } + } +}; + +# define INIT_GERMANIC_PLURAL() + +#else + +/* For compilers without support for ISO C 99 struct/union initializers: + Initialization at run-time. */ + +static struct expression plvar; +static struct expression plone; +struct expression GERMANIC_PLURAL; + +static void +init_germanic_plural () +{ + if (plone.val.num == 0) + { + plvar.nargs = 0; + plvar.operation = var; + + plone.nargs = 0; + plone.operation = num; + plone.val.num = 1; + + GERMANIC_PLURAL.nargs = 2; + GERMANIC_PLURAL.operation = not_equal; + GERMANIC_PLURAL.val.args[0] = &plvar; + GERMANIC_PLURAL.val.args[1] = &plone; + } +} + +# define INIT_GERMANIC_PLURAL() init_germanic_plural () + +#endif + +void +internal_function +EXTRACT_PLURAL_EXPRESSION (nullentry, pluralp, npluralsp) + const char *nullentry; + struct expression **pluralp; + unsigned long int *npluralsp; +{ + if (nullentry != NULL) + { + const char *plural; + const char *nplurals; + + plural = strstr (nullentry, "plural="); + nplurals = strstr (nullentry, "nplurals="); + if (plural == NULL || nplurals == NULL) + goto no_plural; + else + { + char *endp; + unsigned long int n; + struct parse_args args; + + /* First get the number. */ + nplurals += 9; + while (*nplurals != '\0' && isspace ((unsigned char) *nplurals)) + ++nplurals; + if (!(*nplurals >= '0' && *nplurals <= '9')) + goto no_plural; +#if defined HAVE_STRTOUL || defined _LIBC + n = strtoul (nplurals, &endp, 10); +#else + for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++) + n = n * 10 + (*endp - '0'); +#endif + if (nplurals == endp) + goto no_plural; + *npluralsp = n; + + /* Due to the restrictions bison imposes onto the interface of the + scanner function we have to put the input string and the result + passed up from the parser into the same structure which address + is passed down to the parser. */ + plural += 7; + args.cp = plural; + if (PLURAL_PARSE (&args) != 0) + goto no_plural; + *pluralp = args.res; + } + } + else + { + /* By default we are using the Germanic form: singular form only + for `one', the plural form otherwise. Yes, this is also what + English is using since English is a Germanic language. */ + no_plural: + INIT_GERMANIC_PLURAL (); + *pluralp = &GERMANIC_PLURAL; + *npluralsp = 2; + } +} diff --git a/bash-5.1/lib/intl/plural-exp.h b/bash-5.1/lib/intl/plural-exp.h new file mode 100644 index 0000000..dcb0dae --- /dev/null +++ b/bash-5.1/lib/intl/plural-exp.h @@ -0,0 +1,128 @@ +/* plural-exp.h - defines for expression parsing and evaluation for plural form selection. */ + +/* Copyright (C) 2000, 2001, 2002, 2005-2009 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifndef _PLURAL_EXP_H +#define _PLURAL_EXP_H + +#ifndef PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef internal_function +# define internal_function +#endif + +#ifndef attribute_hidden +# define attribute_hidden +#endif + + +/* This is the representation of the expressions to determine the + plural form. */ +struct expression +{ + int nargs; /* Number of arguments. */ + enum operator + { + /* Without arguments: */ + var, /* The variable "n". */ + num, /* Decimal number. */ + /* Unary operators: */ + lnot, /* Logical NOT. */ + /* Binary operators: */ + mult, /* Multiplication. */ + divide, /* Division. */ + module, /* Modulo operation. */ + plus, /* Addition. */ + minus, /* Subtraction. */ + less_than, /* Comparison. */ + greater_than, /* Comparison. */ + less_or_equal, /* Comparison. */ + greater_or_equal, /* Comparison. */ + equal, /* Comparison for equality. */ + not_equal, /* Comparison for inequality. */ + land, /* Logical AND. */ + lor, /* Logical OR. */ + /* Ternary operators: */ + qmop /* Question mark operator. */ + } operation; + union + { + unsigned long int num; /* Number value for `num'. */ + struct expression *args[3]; /* Up to three arguments. */ + } val; +}; + +/* This is the data structure to pass information to the parser and get + the result in a thread-safe way. */ +struct parse_args +{ + const char *cp; + struct expression *res; +}; + + +/* Names for the libintl functions are a problem. This source code is used + 1. in the GNU C Library library, + 2. in the GNU libintl library, + 3. in the GNU gettext tools. + The function names in each situation must be different, to allow for + binary incompatible changes in 'struct expression'. Furthermore, + 1. in the GNU C Library library, the names have a __ prefix, + 2.+3. in the GNU libintl library and in the GNU gettext tools, the names + must follow ANSI C and not start with __. + So we have to distinguish the three cases. */ +#ifdef _LIBC +# define FREE_EXPRESSION __gettext_free_exp +# define PLURAL_PARSE __gettextparse +# define GERMANIC_PLURAL __gettext_germanic_plural +# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural +#elif defined (IN_LIBINTL) +# define FREE_EXPRESSION libintl_gettext_free_exp +# define PLURAL_PARSE libintl_gettextparse +# define GERMANIC_PLURAL libintl_gettext_germanic_plural +# define EXTRACT_PLURAL_EXPRESSION libintl_gettext_extract_plural +#else +# define FREE_EXPRESSION free_plural_expression +# define PLURAL_PARSE parse_plural_expression +# define GERMANIC_PLURAL germanic_plural +# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression +#endif + +extern void FREE_EXPRESSION PARAMS ((struct expression *exp)) + internal_function; +extern int PLURAL_PARSE PARAMS ((void *arg)); +extern struct expression GERMANIC_PLURAL attribute_hidden; +extern void EXTRACT_PLURAL_EXPRESSION PARAMS ((const char *nullentry, + struct expression **pluralp, + unsigned long int *npluralsp)) + internal_function; + +#if !defined (_LIBC) && !defined (IN_LIBINTL) +extern unsigned long int plural_eval PARAMS ((struct expression *pexp, + unsigned long int n)); +#endif + +#endif /* _PLURAL_EXP_H */ diff --git a/bash-5.1/lib/intl/plural.c b/bash-5.1/lib/intl/plural.c new file mode 100644 index 0000000..a003151 --- /dev/null +++ b/bash-5.1/lib/intl/plural.c @@ -0,0 +1,1679 @@ +/* A Bison parser, made by GNU Bison 2.0. */ + +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* Written by Richard Stallman by simplifying the original so called + ``semantic'' parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse __gettextparse +#define yylex __gettextlex +#define yyerror __gettexterror +#define yylval __gettextlval +#define yychar __gettextchar +#define yydebug __gettextdebug +#define yynerrs __gettextnerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + EQUOP2 = 258, + CMPOP2 = 259, + ADDOP2 = 260, + MULOP2 = 261, + NUMBER = 262 + }; +#endif +#define EQUOP2 258 +#define CMPOP2 259 +#define ADDOP2 260 +#define MULOP2 261 +#define NUMBER 262 + + + + +/* Copy the first part of user declarations. */ +#line 1 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + +/* plural.y - Expression parsing for plural form selection. */ + +/* Copyright (C) 2000, 2001, 2005-2009 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This file is part of GNU Bash. + + 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 . +*/ + +/* The bison generated parser uses alloca. AIX 3 forces us to put this + declaration at the beginning of the file. The declaration in bison's + skeleton file comes too late. This must come before + because may include arbitrary system headers. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include "plural-exp.h" + +/* The main function generated by the parser is called __gettextparse, + but we want it to be called PLURAL_PARSE. */ +#ifndef _LIBC +# define __gettextparse PLURAL_PARSE +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +#line 51 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" +typedef union YYSTYPE { + unsigned long int num; + enum operator op; + struct expression *exp; +} YYSTYPE; +/* Line 190 of yacc.c. */ +#line 152 "/usr/src/local/bash/bash-20080814/lib/intl/plural.c" +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ +#line 57 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + +/* Prototypes for local functions. */ +static struct expression *new_exp PARAMS ((int nargs, enum operator op, + struct expression * const *args)); +static inline struct expression *new_exp_0 PARAMS ((enum operator op)); +static inline struct expression *new_exp_1 PARAMS ((enum operator op, + struct expression *right)); +static struct expression *new_exp_2 PARAMS ((enum operator op, + struct expression *left, + struct expression *right)); +static inline struct expression *new_exp_3 PARAMS ((enum operator op, + struct expression *bexp, + struct expression *tbranch, + struct expression *fbranch)); +static int yylex PARAMS ((YYSTYPE *lval, const char **pexp)); +static void yyerror PARAMS ((const char *str)); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (nargs, op, args) + int nargs; + enum operator op; + struct expression * const *args; +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (op) + enum operator op; +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (op, right) + enum operator op; + struct expression *right; +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (op, left, right) + enum operator op; + struct expression *left; + struct expression *right; +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (op, bexp, tbranch, fbranch) + enum operator op; + struct expression *bexp; + struct expression *tbranch; + struct expression *fbranch; +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + + + +/* Line 213 of yacc.c. */ +#line 262 "/usr/src/local/bash/bash-20080814/lib/intl/plural.c" + +#if ! defined (yyoverflow) || YYERROR_VERBOSE + +# ifndef YYFREE +# define YYFREE free +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# endif + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# else +# define YYSTACK_ALLOC alloca +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# else +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# endif +#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ + + +#if (! defined (yyoverflow) \ + && (! defined (__cplusplus) \ + || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + short int yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined (__GNUC__) && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + register YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (0) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined (__STDC__) || defined (__cplusplus) + typedef signed char yysigned_char; +#else + typedef short int yysigned_char; +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 9 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 54 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 16 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 3 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 13 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 27 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 262 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const unsigned char yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 10, 2, 2, 2, 2, 5, 2, + 14, 15, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 12, 2, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 6, 7, + 8, 9, 11 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const unsigned char yyprhs[] = +{ + 0, 0, 3, 5, 11, 15, 19, 23, 27, 31, + 35, 38, 40, 42 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yysigned_char yyrhs[] = +{ + 17, 0, -1, 18, -1, 18, 3, 18, 12, 18, + -1, 18, 4, 18, -1, 18, 5, 18, -1, 18, + 6, 18, -1, 18, 7, 18, -1, 18, 8, 18, + -1, 18, 9, 18, -1, 10, 18, -1, 13, -1, + 11, -1, 14, 18, 15, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const unsigned char yyrline[] = +{ + 0, 176, 176, 184, 188, 192, 196, 200, 204, 208, + 212, 216, 220, 225 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE +/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2", + "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'", + "$accept", "start", "exp", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const unsigned short int yytoknum[] = +{ + 0, 256, 257, 63, 124, 38, 258, 259, 260, 261, + 33, 262, 58, 110, 40, 41 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const unsigned char yyr1[] = +{ + 0, 16, 17, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const unsigned char yyr2[] = +{ + 0, 2, 1, 5, 3, 3, 3, 3, 3, 3, + 2, 1, 1, 3 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const unsigned char yydefact[] = +{ + 0, 0, 12, 11, 0, 0, 2, 10, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, + 5, 6, 7, 8, 9, 0, 3 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yysigned_char yydefgoto[] = +{ + -1, 5, 6 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -10 +static const yysigned_char yypact[] = +{ + -9, -9, -10, -10, -9, 8, 36, -10, 13, -10, + -9, -9, -9, -9, -9, -9, -9, -10, 26, 41, + 45, 18, -2, 14, -10, -9, 36 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yysigned_char yypgoto[] = +{ + -10, -10, -1 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const unsigned char yytable[] = +{ + 7, 1, 2, 8, 3, 4, 15, 16, 9, 18, + 19, 20, 21, 22, 23, 24, 10, 11, 12, 13, + 14, 15, 16, 16, 26, 14, 15, 16, 17, 10, + 11, 12, 13, 14, 15, 16, 0, 0, 25, 10, + 11, 12, 13, 14, 15, 16, 12, 13, 14, 15, + 16, 13, 14, 15, 16 +}; + +static const yysigned_char yycheck[] = +{ + 1, 10, 11, 4, 13, 14, 8, 9, 0, 10, + 11, 12, 13, 14, 15, 16, 3, 4, 5, 6, + 7, 8, 9, 9, 25, 7, 8, 9, 15, 3, + 4, 5, 6, 7, 8, 9, -1, -1, 12, 3, + 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, + 9, 6, 7, 8, 9 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const unsigned char yystos[] = +{ + 0, 10, 11, 13, 14, 17, 18, 18, 18, 0, + 3, 4, 5, 6, 7, 8, 9, 15, 18, 18, + 18, 18, 18, 18, 18, 12, 18 +}; + +#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) +# define YYSIZE_T __SIZE_TYPE__ +#endif +#if ! defined (YYSIZE_T) && defined (size_t) +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +#endif +#if ! defined (YYSIZE_T) +# define YYSIZE_T unsigned int +#endif + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror ("syntax error: cannot back up");\ + YYERROR; \ + } \ +while (0) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (N) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (0) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yysymprint (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yy_stack_print (short int *bottom, short int *top) +#else +static void +yy_stack_print (bottom, top) + short int *bottom; + short int *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (/* Nothing. */; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yy_reduce_print (int yyrule) +#else +static void +yy_reduce_print (yyrule) + int yyrule; +#endif +{ + int yyi; + unsigned int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", + yyrule - 1, yylno); + /* Print the symbols being reduced, and their result. */ + for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) + YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); + YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined (__GLIBC__) && defined (_STRING_H) +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +# if defined (__STDC__) || defined (__cplusplus) +yystrlen (const char *yystr) +# else +yystrlen (yystr) + const char *yystr; +# endif +{ + register const char *yys = yystr; + + while (*yys++ != '\0') + continue; + + return yys - yystr - 1; +} +# endif +# endif + +# ifndef yystpcpy +# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +# if defined (__STDC__) || defined (__cplusplus) +yystpcpy (char *yydest, const char *yysrc) +# else +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +# endif +{ + register char *yyd = yydest; + register const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +#endif /* !YYERROR_VERBOSE */ + + + +#if YYDEBUG +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) +#else +static void +yysymprint (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + /* Pacify ``unused variable'' warnings. */ + (void) yyvaluep; + + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + switch (yytype) + { + default: + break; + } + YYFPRINTF (yyoutput, ")"); +} + +#endif /* ! YYDEBUG */ +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + /* Pacify ``unused variable'' warnings. */ + (void) yyvaluep; + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +# if defined (__STDC__) || defined (__cplusplus) +int yyparse (void *YYPARSE_PARAM); +# else +int yyparse (); +# endif +#else /* ! YYPARSE_PARAM */ +#if defined (__STDC__) || defined (__cplusplus) +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +# if defined (__STDC__) || defined (__cplusplus) +int yyparse (void *YYPARSE_PARAM) +# else +int yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +# endif +#else /* ! YYPARSE_PARAM */ +#if defined (__STDC__) || defined (__cplusplus) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + /* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + register int yystate; + register int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + short int yyssa[YYINITDEPTH]; + short int *yyss = yyssa; + register short int *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + register YYSTYPE *yyvsp; + + + +#define YYPOPSTACK (yyvsp--, yyssp--) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* When reducing, the number of symbols on the RHS of the reduced + rule. */ + int yylen; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + + yyvsp[0] = yylval; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. + */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + short int *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow ("parser stack overflow", + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyoverflowlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyoverflowlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + short int *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyoverflowlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + +/* Do appropriate processing given the current state. */ +/* Read a look-ahead token if we need one and don't already have one. */ +/* yyresume: */ + + /* First try to decide what to do without reference to look-ahead token. */ + + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the token being shifted unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + *++yyvsp = yylval; + + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + yystate = yyn; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 177 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + { + if ((yyvsp[0].exp) == NULL) + YYABORT; + ((struct parse_args *) arg)->res = (yyvsp[0].exp); + } + break; + + case 3: +#line 185 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + { + (yyval.exp) = new_exp_3 (qmop, (yyvsp[-4].exp), (yyvsp[-2].exp), (yyvsp[0].exp)); + } + break; + + case 4: +#line 189 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + { + (yyval.exp) = new_exp_2 (lor, (yyvsp[-2].exp), (yyvsp[0].exp)); + } + break; + + case 5: +#line 193 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + { + (yyval.exp) = new_exp_2 (land, (yyvsp[-2].exp), (yyvsp[0].exp)); + } + break; + + case 6: +#line 197 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[-1].op), (yyvsp[-2].exp), (yyvsp[0].exp)); + } + break; + + case 7: +#line 201 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[-1].op), (yyvsp[-2].exp), (yyvsp[0].exp)); + } + break; + + case 8: +#line 205 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[-1].op), (yyvsp[-2].exp), (yyvsp[0].exp)); + } + break; + + case 9: +#line 209 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + { + (yyval.exp) = new_exp_2 ((yyvsp[-1].op), (yyvsp[-2].exp), (yyvsp[0].exp)); + } + break; + + case 10: +#line 213 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + { + (yyval.exp) = new_exp_1 (lnot, (yyvsp[0].exp)); + } + break; + + case 11: +#line 217 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + { + (yyval.exp) = new_exp_0 (var); + } + break; + + case 12: +#line 221 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + { + if (((yyval.exp) = new_exp_0 (num)) != NULL) + (yyval.exp)->val.num = (yyvsp[0].num); + } + break; + + case 13: +#line 226 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + { + (yyval.exp) = (yyvsp[-1].exp); + } + break; + + + } + +/* Line 1037 of yacc.c. */ +#line 1270 "/usr/src/local/bash/bash-20080814/lib/intl/plural.c" + + yyvsp -= yylen; + yyssp -= yylen; + + + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if YYERROR_VERBOSE + yyn = yypact[yystate]; + + if (YYPACT_NINF < yyn && yyn < YYLAST) + { + YYSIZE_T yysize = 0; + int yytype = YYTRANSLATE (yychar); + const char* yyprefix; + char *yymsg; + int yyx; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 0; + + yyprefix = ", expecting "; + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]); + yycount += 1; + if (yycount == 5) + { + yysize = 0; + break; + } + } + yysize += (sizeof ("syntax error, unexpected ") + + yystrlen (yytname[yytype])); + yymsg = (char *) YYSTACK_ALLOC (yysize); + if (yymsg != 0) + { + char *yyp = yystpcpy (yymsg, "syntax error, unexpected "); + yyp = yystpcpy (yyp, yytname[yytype]); + + if (yycount < 5) + { + yyprefix = ", expecting "; + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + yyp = yystpcpy (yyp, yyprefix); + yyp = yystpcpy (yyp, yytname[yyx]); + yyprefix = " or "; + } + } + yyerror (yymsg); + YYSTACK_FREE (yymsg); + } + else + yyerror ("syntax error; also virtual memory exhausted"); + } + else +#endif /* YYERROR_VERBOSE */ + yyerror ("syntax error"); + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* If at end of input, pop the error token, + then the rest of the stack, then return failure. */ + if (yychar == YYEOF) + for (;;) + { + + YYPOPSTACK; + if (yyssp == yyss) + YYABORT; + yydestruct ("Error: popping", + yystos[*yyssp], yyvsp); + } + } + else + { + yydestruct ("Error: discarding", yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + +#ifdef __GNUC__ + /* Pacify GCC when the user code never invokes YYERROR and the label + yyerrorlab therefore never appears in user code. */ + if (0) + goto yyerrorlab; +#endif + +yyvsp -= yylen; + yyssp -= yylen; + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", yystos[yystate], yyvsp); + YYPOPSTACK; + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yydestruct ("Error: discarding lookahead", + yytoken, &yylval); + yychar = YYEMPTY; + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*----------------------------------------------. +| yyoverflowlab -- parser overflow comes here. | +`----------------------------------------------*/ +yyoverflowlab: + yyerror ("parser stack overflow"); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif + return yyresult; +} + + +#line 231 "/usr/src/local/bash/bash-20080814/lib/intl/plural.y" + + +void +internal_function +FREE_EXPRESSION (exp) + struct expression *exp; +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (lval, pexp) + YYSTYPE *lval; + const char **pexp; +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (str) + const char *str; +{ + /* Do nothing. We don't print error messages here. */ +} diff --git a/bash-5.1/lib/intl/plural.y b/bash-5.1/lib/intl/plural.y new file mode 100644 index 0000000..8b8cec7 --- /dev/null +++ b/bash-5.1/lib/intl/plural.y @@ -0,0 +1,411 @@ +%{ +/* plural.y - Expression parsing for plural form selection. */ + +/* Copyright (C) 2000, 2001, 2005-2009 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This file is part of GNU Bash. + + 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 . +*/ + +/* The bison generated parser uses alloca. AIX 3 forces us to put this + declaration at the beginning of the file. The declaration in bison's + skeleton file comes too late. This must come before + because may include arbitrary system headers. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include "plural-exp.h" + +/* The main function generated by the parser is called __gettextparse, + but we want it to be called PLURAL_PARSE. */ +#ifndef _LIBC +# define __gettextparse PLURAL_PARSE +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg +%} +%pure_parser +%expect 7 + +%union { + unsigned long int num; + enum operator op; + struct expression *exp; +} + +%{ +/* Prototypes for local functions. */ +static struct expression *new_exp PARAMS ((int nargs, enum operator op, + struct expression * const *args)); +static inline struct expression *new_exp_0 PARAMS ((enum operator op)); +static inline struct expression *new_exp_1 PARAMS ((enum operator op, + struct expression *right)); +static struct expression *new_exp_2 PARAMS ((enum operator op, + struct expression *left, + struct expression *right)); +static inline struct expression *new_exp_3 PARAMS ((enum operator op, + struct expression *bexp, + struct expression *tbranch, + struct expression *fbranch)); +static int yylex PARAMS ((YYSTYPE *lval, const char **pexp)); +static void yyerror PARAMS ((const char *str)); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (nargs, op, args) + int nargs; + enum operator op; + struct expression * const *args; +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (op) + enum operator op; +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (op, right) + enum operator op; + struct expression *right; +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (op, left, right) + enum operator op; + struct expression *left; + struct expression *right; +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (op, bexp, tbranch, fbranch) + enum operator op; + struct expression *bexp; + struct expression *tbranch; + struct expression *fbranch; +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + +%} + +/* This declares that all operators have the same associativity and the + precedence order as in C. See [Harbison, Steele: C, A Reference Manual]. + There is no unary minus and no bitwise operators. + Operators with the same syntactic behaviour have been merged into a single + token, to save space in the array generated by bison. */ +%right '?' /* ? */ +%left '|' /* || */ +%left '&' /* && */ +%left EQUOP2 /* == != */ +%left CMPOP2 /* < > <= >= */ +%left ADDOP2 /* + - */ +%left MULOP2 /* * / % */ +%right '!' /* ! */ + +%token EQUOP2 CMPOP2 ADDOP2 MULOP2 +%token NUMBER +%type exp + +%% + +start: exp + { + if ($1 == NULL) + YYABORT; + ((struct parse_args *) arg)->res = $1; + } + ; + +exp: exp '?' exp ':' exp + { + $$ = new_exp_3 (qmop, $1, $3, $5); + } + | exp '|' exp + { + $$ = new_exp_2 (lor, $1, $3); + } + | exp '&' exp + { + $$ = new_exp_2 (land, $1, $3); + } + | exp EQUOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp CMPOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp ADDOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp MULOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | '!' exp + { + $$ = new_exp_1 (lnot, $2); + } + | 'n' + { + $$ = new_exp_0 (var); + } + | NUMBER + { + if (($$ = new_exp_0 (num)) != NULL) + $$->val.num = $1; + } + | '(' exp ')' + { + $$ = $2; + } + ; + +%% + +void +internal_function +FREE_EXPRESSION (exp) + struct expression *exp; +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (lval, pexp) + YYSTYPE *lval; + const char **pexp; +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (str) + const char *str; +{ + /* Do nothing. We don't print error messages here. */ +} diff --git a/bash-5.1/lib/intl/ref-add.sin b/bash-5.1/lib/intl/ref-add.sin new file mode 100755 index 0000000..6fd32ed --- /dev/null +++ b/bash-5.1/lib/intl/ref-add.sin @@ -0,0 +1,29 @@ +# Add this package to a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + ta + :a + s/ @PACKAGE@ / @PACKAGE@ / + tb + s/ $/ @PACKAGE@ / + :b + s/^/# Packages using this file:/ +} diff --git a/bash-5.1/lib/intl/ref-del.sin b/bash-5.1/lib/intl/ref-del.sin new file mode 100755 index 0000000..65ce9af --- /dev/null +++ b/bash-5.1/lib/intl/ref-del.sin @@ -0,0 +1,24 @@ +# Remove this package from a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + s/ @PACKAGE@ / / + s/^/# Packages using this file:/ +} diff --git a/bash-5.1/lib/intl/relocatable.c b/bash-5.1/lib/intl/relocatable.c new file mode 100644 index 0000000..34b2b18 --- /dev/null +++ b/bash-5.1/lib/intl/relocatable.c @@ -0,0 +1,440 @@ +/* relocatable.c - Provide relocatable packages. */ + +/* Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + This file is part of GNU Bash. + + 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 . +*/ + +/* Tell glibc's to provide a prototype for getline(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +/* Specification. */ +#include "relocatable.h" + +#if ENABLE_RELOCATABLE + +#include +#include +#include +#include + +#ifdef NO_XMALLOC +# define xmalloc malloc +#else +# include "xmalloc.h" +#endif + +#if DEPENDS_ON_LIBCHARSET +# include +#endif +#if DEPENDS_ON_LIBICONV && HAVE_ICONV +# include +#endif +#if DEPENDS_ON_LIBINTL && ENABLE_NLS +# include +#endif + +/* Faked cheap 'bool'. */ +#undef bool +#undef false +#undef true +#define bool int +#define false 0 +#define true 1 + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. + */ +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_PATH_WITH_DIR(P) \ + (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) +# define FILESYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) +# define FILESYSTEM_PREFIX_LEN(P) 0 +#endif + +/* Original installation prefix. */ +static char *orig_prefix; +static size_t orig_prefix_len; +/* Current installation prefix. */ +static char *curr_prefix; +static size_t curr_prefix_len; +/* These prefixes do not end in a slash. Anything that will be concatenated + to them must start with a slash. */ + +/* Sets the original and the current installation prefix of this module. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +static void +set_this_relocation_prefix (const char *orig_prefix_arg, + const char *curr_prefix_arg) +{ + if (orig_prefix_arg != NULL && curr_prefix_arg != NULL + /* Optimization: if orig_prefix and curr_prefix are equal, the + relocation is a nop. */ + && strcmp (orig_prefix_arg, curr_prefix_arg) != 0) + { + /* Duplicate the argument strings. */ + char *memory; + + orig_prefix_len = strlen (orig_prefix_arg); + curr_prefix_len = strlen (curr_prefix_arg); + memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1); +#ifdef NO_XMALLOC + if (memory != NULL) +#endif + { + memcpy (memory, orig_prefix_arg, orig_prefix_len + 1); + orig_prefix = memory; + memory += orig_prefix_len + 1; + memcpy (memory, curr_prefix_arg, curr_prefix_len + 1); + curr_prefix = memory; + return; + } + } + orig_prefix = NULL; + curr_prefix = NULL; + /* Don't worry about wasted memory here - this function is usually only + called once. */ +} + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +void +set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg) +{ + set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg); + + /* Now notify all dependent libraries. */ +#if DEPENDS_ON_LIBCHARSET + libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +#if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109 + libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +#if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix + libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +} + +/* Convenience function: + Computes the current installation prefix, based on the original + installation prefix, the original installation directory of a particular + file, and the current pathname of this file. Returns NULL upon failure. */ +#ifdef IN_LIBRARY +#define compute_curr_prefix local_compute_curr_prefix +static +#endif +const char * +compute_curr_prefix (const char *orig_installprefix, + const char *orig_installdir, + const char *curr_pathname) +{ + const char *curr_installdir; + const char *rel_installdir; + + if (curr_pathname == NULL) + return NULL; + + /* Determine the relative installation directory, relative to the prefix. + This is simply the difference between orig_installprefix and + orig_installdir. */ + if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix)) + != 0) + /* Shouldn't happen - nothing should be installed outside $(prefix). */ + return NULL; + rel_installdir = orig_installdir + strlen (orig_installprefix); + + /* Determine the current installation directory. */ + { + const char *p_base = curr_pathname + FILESYSTEM_PREFIX_LEN (curr_pathname); + const char *p = curr_pathname + strlen (curr_pathname); + char *q; + + while (p > p_base) + { + p--; + if (ISSLASH (*p)) + break; + } + + q = (char *) xmalloc (p - curr_pathname + 1); +#ifdef NO_XMALLOC + if (q == NULL) + return NULL; +#endif + memcpy (q, curr_pathname, p - curr_pathname); + q[p - curr_pathname] = '\0'; + curr_installdir = q; + } + + /* Compute the current installation prefix by removing the trailing + rel_installdir from it. */ + { + const char *rp = rel_installdir + strlen (rel_installdir); + const char *cp = curr_installdir + strlen (curr_installdir); + const char *cp_base = + curr_installdir + FILESYSTEM_PREFIX_LEN (curr_installdir); + + while (rp > rel_installdir && cp > cp_base) + { + bool same = false; + const char *rpi = rp; + const char *cpi = cp; + + while (rpi > rel_installdir && cpi > cp_base) + { + rpi--; + cpi--; + if (ISSLASH (*rpi) || ISSLASH (*cpi)) + { + if (ISSLASH (*rpi) && ISSLASH (*cpi)) + same = true; + break; + } +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS - case insignificant filesystem */ + if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi) + != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi)) + break; +#else + if (*rpi != *cpi) + break; +#endif + } + if (!same) + break; + /* The last pathname component was the same. opi and cpi now point + to the slash before it. */ + rp = rpi; + cp = cpi; + } + + if (rp > rel_installdir) + /* Unexpected: The curr_installdir does not end with rel_installdir. */ + return NULL; + + { + size_t curr_prefix_len = cp - curr_installdir; + char *curr_prefix; + + curr_prefix = (char *) xmalloc (curr_prefix_len + 1); +#ifdef NO_XMALLOC + if (curr_prefix == NULL) + return NULL; +#endif + memcpy (curr_prefix, curr_installdir, curr_prefix_len); + curr_prefix[curr_prefix_len] = '\0'; + + return curr_prefix; + } + } +} + +#if defined PIC && defined INSTALLDIR + +/* Full pathname of shared library, or NULL. */ +static char *shared_library_fullname; + +#if defined _WIN32 || defined __WIN32__ + +/* Determine the full pathname of the shared library when it is loaded. */ + +BOOL WINAPI +DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved) +{ + (void) reserved; + + if (event == DLL_PROCESS_ATTACH) + { + /* The DLL is being loaded into an application's address range. */ + static char location[MAX_PATH]; + + if (!GetModuleFileName (module_handle, location, sizeof (location))) + /* Shouldn't happen. */ + return FALSE; + + if (!IS_PATH_WITH_DIR (location)) + /* Shouldn't happen. */ + return FALSE; + + shared_library_fullname = strdup (location); + } + + return TRUE; +} + +#else /* Unix */ + +static void +find_shared_library_fullname () +{ +#ifdef __linux__ + FILE *fp; + + /* Open the current process' maps file. It describes one VMA per line. */ + fp = fopen ("/proc/self/maps", "r"); + if (fp) + { + unsigned long address = (unsigned long) &find_shared_library_fullname; + for (;;) + { + unsigned long start, end; + int c; + + if (fscanf (fp, "%lx-%lx", &start, &end) != 2) + break; + if (address >= start && address <= end - 1) + { + /* Found it. Now see if this line contains a filename. */ + while (c = getc (fp), c != EOF && c != '\n' && c != '/') + continue; + if (c == '/') + { + size_t size; + int len; + + ungetc (c, fp); + shared_library_fullname = NULL; size = 0; + len = getline (&shared_library_fullname, &size, fp); + if (len >= 0) + { + /* Success: filled shared_library_fullname. */ + if (len > 0 && shared_library_fullname[len - 1] == '\n') + shared_library_fullname[len - 1] = '\0'; + } + } + break; + } + while (c = getc (fp), c != EOF && c != '\n') + continue; + } + fclose (fp); + } +#endif +} + +#endif /* WIN32 / Unix */ + +/* Return the full pathname of the current shared library. + Return NULL if unknown. + Guaranteed to work only on Linux and Woe32. */ +static char * +get_shared_library_fullname () +{ +#if !(defined _WIN32 || defined __WIN32__) + static bool tried_find_shared_library_fullname; + if (!tried_find_shared_library_fullname) + { + find_shared_library_fullname (); + tried_find_shared_library_fullname = true; + } +#endif + return shared_library_fullname; +} + +#endif /* PIC */ + +/* Returns the pathname, relocated according to the current installation + directory. */ +const char * +relocate (const char *pathname) +{ +#if defined PIC && defined INSTALLDIR + static int initialized; + + /* Initialization code for a shared library. */ + if (!initialized) + { + /* At this point, orig_prefix and curr_prefix likely have already been + set through the main program's set_program_name_and_installdir + function. This is sufficient in the case that the library has + initially been installed in the same orig_prefix. But we can do + better, to also cover the cases that 1. it has been installed + in a different prefix before being moved to orig_prefix and (later) + to curr_prefix, 2. unlike the program, it has not moved away from + orig_prefix. */ + const char *orig_installprefix = INSTALLPREFIX; + const char *orig_installdir = INSTALLDIR; + const char *curr_prefix_better; + + curr_prefix_better = + compute_curr_prefix (orig_installprefix, orig_installdir, + get_shared_library_fullname ()); + if (curr_prefix_better == NULL) + curr_prefix_better = curr_prefix; + + set_relocation_prefix (orig_installprefix, curr_prefix_better); + + initialized = 1; + } +#endif + + /* Note: It is not necessary to perform case insensitive comparison here, + even for DOS-like filesystems, because the pathname argument was + typically created from the same Makefile variable as orig_prefix came + from. */ + if (orig_prefix != NULL && curr_prefix != NULL + && strncmp (pathname, orig_prefix, orig_prefix_len) == 0) + { + if (pathname[orig_prefix_len] == '\0') + /* pathname equals orig_prefix. */ + return curr_prefix; + if (ISSLASH (pathname[orig_prefix_len])) + { + /* pathname starts with orig_prefix. */ + const char *pathname_tail = &pathname[orig_prefix_len]; + char *result = + (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1); + +#ifdef NO_XMALLOC + if (result != NULL) +#endif + { + memcpy (result, curr_prefix, curr_prefix_len); + strcpy (result + curr_prefix_len, pathname_tail); + return result; + } + } + } + /* Nothing to relocate. */ + return pathname; +} + +#endif diff --git a/bash-5.1/lib/intl/relocatable.h b/bash-5.1/lib/intl/relocatable.h new file mode 100644 index 0000000..de57f44 --- /dev/null +++ b/bash-5.1/lib/intl/relocatable.h @@ -0,0 +1,69 @@ +/* relocatable.h - Provide relocatable packages. */ + +/* Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifndef _RELOCATABLE_H +#define _RELOCATABLE_H + +/* This can be enabled through the configure --enable-relocatable option. */ +#if ENABLE_RELOCATABLE + +/* When building a DLL, we must export some functions. Note that because + this is a private .h file, we don't need to use __declspec(dllimport) + in any case. */ +#if defined _MSC_VER && BUILDING_DLL +# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport) +#else +# define RELOCATABLE_DLL_EXPORTED +#endif + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +extern RELOCATABLE_DLL_EXPORTED void + set_relocation_prefix (const char *orig_prefix, + const char *curr_prefix); + +/* Returns the pathname, relocated according to the current installation + directory. */ +extern const char * relocate (const char *pathname); + +/* Memory management: relocate() leaks memory, because it has to construct + a fresh pathname. If this is a problem because your program calls + relocate() frequently, think about caching the result. */ + +/* Convenience function: + Computes the current installation prefix, based on the original + installation prefix, the original installation directory of a particular + file, and the current pathname of this file. Returns NULL upon failure. */ +extern const char * compute_curr_prefix (const char *orig_installprefix, + const char *orig_installdir, + const char *curr_pathname); + +#else + +/* By default, we use the hardwired pathnames. */ +#define relocate(pathname) (pathname) + +#endif + +#endif /* _RELOCATABLE_H */ diff --git a/bash-5.1/lib/intl/textdomain.c b/bash-5.1/lib/intl/textdomain.c new file mode 100644 index 0000000..4bb0e80 --- /dev/null +++ b/bash-5.1/lib/intl/textdomain.c @@ -0,0 +1,144 @@ +/* textdomain.c - Implementation of the textdomain(3) function. */ + +/* Copyright (C) 1995-1998, 2000, 2001, 2002, 2005-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif +#include "gettextP.h" + +#ifdef _LIBC +/* We have to handle multi-threaded applications. */ +# include +#else +/* Provide dummy implementation if this is outside glibc. */ +# define __libc_rwlock_define(CLASS, NAME) +# define __libc_rwlock_wrlock(NAME) +# define __libc_rwlock_unlock(NAME) +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_default_domain libintl_nl_default_default_domain +# define _nl_current_default_domain libintl_nl_current_default_domain +#endif + +/* @@ end of prolog @@ */ + +/* Name of the default text domain. */ +extern const char _nl_default_default_domain[] attribute_hidden; + +/* Default text domain in which entries for gettext(3) are to be found. */ +extern const char *_nl_current_default_domain attribute_hidden; + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define TEXTDOMAIN __textdomain +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define TEXTDOMAIN libintl_textdomain +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +__libc_rwlock_define (extern, _nl_state_lock attribute_hidden) + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +char * +TEXTDOMAIN (domainname) + const char *domainname; +{ + char *new_domain; + char *old_domain; + + /* A NULL pointer requests the current setting. */ + if (domainname == NULL) + return (char *) _nl_current_default_domain; + + __libc_rwlock_wrlock (_nl_state_lock); + + old_domain = (char *) _nl_current_default_domain; + + /* If domain name is the null string set to default domain "messages". */ + if (domainname[0] == '\0' + || strcmp (domainname, _nl_default_default_domain) == 0) + { + _nl_current_default_domain = _nl_default_default_domain; + new_domain = (char *) _nl_current_default_domain; + } + else if (strcmp (domainname, old_domain) == 0) + /* This can happen and people will use it to signal that some + environment variable changed. */ + new_domain = old_domain; + else + { + /* If the following malloc fails `_nl_current_default_domain' + will be NULL. This value will be returned and so signals we + are out of core. */ +#if defined _LIBC || defined HAVE_STRDUP + new_domain = strdup (domainname); +#else + size_t len = strlen (domainname) + 1; + new_domain = (char *) malloc (len); + if (new_domain != NULL) + memcpy (new_domain, domainname, len); +#endif + + if (new_domain != NULL) + _nl_current_default_domain = new_domain; + } + + /* We use this possibility to signal a change of the loaded catalogs + since this is most likely the case and there is no other easy we + to do it. Do it only when the call was successful. */ + if (new_domain != NULL) + { + ++_nl_msg_cat_cntr; + + if (old_domain != new_domain && old_domain != _nl_default_default_domain) + free (old_domain); + } + + __libc_rwlock_unlock (_nl_state_lock); + + return new_domain; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__textdomain, textdomain); +#endif diff --git a/bash-5.1/lib/malloc/Makefile.in b/bash-5.1/lib/malloc/Makefile.in new file mode 100644 index 0000000..0ef3cfd --- /dev/null +++ b/bash-5.1/lib/malloc/Makefile.in @@ -0,0 +1,138 @@ +# Skeleton Makefile for the GNU malloc code +# +# Copyright (C) 1996-2009 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# 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 . + +srcdir = @srcdir@ +VPATH = @srcdir@ +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ + +CC = @CC@ +RANLIB = @RANLIB@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +RM = rm -f +CP = cp +MV = mv + +SHELL = @MAKE_SHELL@ + +PROFILE_FLAGS = @PROFILE_FLAGS@ + +CFLAGS = @CFLAGS@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ + +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +LIBBUILD = ${BUILD_DIR}/lib + +BASHINCDIR = ${topdir}/include + +INTL_LIBSRC = ${topdir}/lib/intl +INTL_BUILDDIR = ${LIBBUILD}/intl +INTL_INC = @INTL_INC@ +LIBINTL_H = @LIBINTL_H@ + +INCLUDES = -I. -I../.. -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib $(INTL_INC) + +CCFLAGS = ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) \ + $(CFLAGS) $(MALLOC_CFLAGS) $(CPPFLAGS) + +.c.o: + $(CC) $(CCFLAGS) -c $< + +.s.o: + $(CC) $(CCFLAGS) -c $< + +MALLOC_SOURCE = malloc.c +STUB_SOURCE = stub.c + +ALLOCA_SOURCE = alloca.c +ALLOCA_OBJECT = alloca.o + +MALLOC_SRC = @MALLOC_SRC@ +MALLOC = @MALLOC@ +ALLOCA = @ALLOCA@ + +MALLOC_OBJS = malloc.o $(ALLOCA) trace.o stats.o table.o watch.o +STUB_OBJS = $(ALLOCA) stub.o + +.PHONY: malloc stubmalloc + +all: malloc + +malloc: ${MALLOC_OBJS} + ${RM} libmalloc.a + ${AR} ${ARFLAGS} libmalloc.a ${MALLOC_OBJS} + -test -n "$(RANLIB)" && $(RANLIB) libmalloc.a + +stubmalloc: ${STUB_OBJS} + ${RM} libmalloc.a + ${AR} ${ARFLAGS} libmalloc.a ${STUB_OBJS} + -test -n "$(RANLIB)" && $(RANLIB) libmalloc.a + +alloca: ${ALLOCA} + ${RM} libmalloc.a + ${AR} ${ARFLAGS} libmalloc.a ${ALLOCA} + -test -n "$(RANLIB)" && $(RANLIB) libmalloc.a + +alloca.o: $(srcdir)/$(ALLOCA_SOURCE) + $(CC) $(CCFLAGS) -c $(srcdir)/$(ALLOCA_SOURCE) + @- if test "$(ALLOCA_OBJECT)" != alloca.o ; then \ + mv $(ALLOCA_OBJECT) alloca.o >/dev/null 2>&1 ; \ + fi + +mostlyclean clean: + $(RM) *.o libmalloc.a + +distclean realclean maintainer-clean: clean + $(RM) Makefile + +alloca.o: $(BUILD_DIR)/config.h +malloc.o: $(BUILD_DIR)/config.h $(topdir)/bashtypes.h getpagesize.h +xmalloc.o: $(BUILD_DIR)/config.h $(BASHINCDIR)/ansi_stdlib.h +trace.o: ${BUILD_DIR}/config.h +stats.o: ${BUILD_DIR}/config.h +table.o: ${BUILD_DIR}/config.h +watch.o: ${BUILD_DIR}/config.h + +malloc.o: ${srcdir}/imalloc.h ${srcdir}/mstats.h +malloc.o: ${srcdir}/table.h ${srcdir}/watch.h +stats.o: ${srcdir}/imalloc.h ${srcdir}/mstats.h +trace.o: ${srcdir}/imalloc.h +table.o: ${srcdir}/imalloc.h ${srcdir}/table.h +watch.o: ${srcdir}/imalloc.h ${srcdir}/watch.h + +malloc.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h +stats.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h +trace.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h +table.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h +watch.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h + +# Rules for deficient makes, like SunOS and Solaris +stub.o: stub.c +malloc.o: malloc.c +table.o: table.c +trace.o: trace.c +stats.o: stats.c +watch.o: watch.c diff --git a/bash-5.1/lib/malloc/alloca.c b/bash-5.1/lib/malloc/alloca.c new file mode 100644 index 0000000..26319c2 --- /dev/null +++ b/bash-5.1/lib/malloc/alloca.c @@ -0,0 +1,482 @@ +/* alloca.c -- allocate automatically reclaimed memory + (Mostly) portable public-domain implementation -- D A Gwyn + + This implementation of the PWB library alloca function, + which is used to allocate space off the run-time stack so + that it is automatically reclaimed upon procedure exit, + was inspired by discussions with J. Q. Johnson of Cornell. + J.Otto Tennant contributed the Cray support. + + There are some preprocessor constants that can + be defined when compiling for your specific system, for + improved efficiency; however, the defaults should be okay. + + The general concept of this implementation is to keep + track of all alloca-allocated blocks, and reclaim any + that are found to be deeper in the stack than the current + invocation. This heuristic does not reclaim storage as + soon as it becomes invalid, but it will do so eventually. + + As a special case, alloca(0) reclaims storage without + allocating any. It is a good idea to use alloca(0) in + your main control loop, etc. to force garbage collection. */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +/* If compiling with GCC 2, this file's not needed. */ +#if !defined (__GNUC__) || __GNUC__ < 2 + +#include /* for size_t */ + +/* If alloca is defined somewhere, this file is not needed. */ +#ifndef alloca + +#ifdef emacs +#ifdef static +/* actually, only want this if static is defined as "" + -- this is for usg, in which emacs must undefine static + in order to make unexec workable + */ +#ifndef STACK_DIRECTION +you +lose +-- must know STACK_DIRECTION at compile-time +#endif /* STACK_DIRECTION undefined */ +#endif /* static */ +#endif /* emacs */ + +/* If your stack is a linked list of frames, you have to + provide an "address metric" ADDRESS_FUNCTION macro. */ + +#if defined (CRAY) && defined (CRAY_STACKSEG_END) +long i00afunc (); +#define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg)) +#else +#define ADDRESS_FUNCTION(arg) &(arg) +#endif /* CRAY && CRAY_STACKSEG_END */ + +#if __STDC__ +typedef void *pointer; +#else +typedef char *pointer; +#endif + +#define NULL 0 + +/* Different portions of Emacs need to call different versions of + malloc. The Emacs executable needs alloca to call xmalloc, because + ordinary malloc isn't protected from input signals. On the other + hand, the utilities in lib-src need alloca to call malloc; some of + them are very simple, and don't have an xmalloc routine. + + Non-Emacs programs expect this to call use xmalloc. + + Callers below should use malloc. */ + +#ifndef emacs +#define malloc xmalloc +extern pointer xmalloc (); +#endif + +/* Define STACK_DIRECTION 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 */ + +#ifndef STACK_DIRECTION +#define STACK_DIRECTION 0 /* Direction unknown. */ +#endif + +#if STACK_DIRECTION != 0 + +#define STACK_DIR STACK_DIRECTION /* Known at compile-time. */ + +#else /* STACK_DIRECTION == 0; need run-time code. */ + +static int stack_dir; /* 1 or -1 once known. */ +#define STACK_DIR stack_dir + +static void +find_stack_direction () +{ + static char *addr = NULL; /* Address of first `dummy', once known. */ + auto char dummy; /* To get stack address. */ + + if (addr == NULL) + { /* Initial entry. */ + addr = ADDRESS_FUNCTION (dummy); + + find_stack_direction (); /* Recurse once. */ + } + else + { + /* Second entry. */ + if (ADDRESS_FUNCTION (dummy) > addr) + stack_dir = 1; /* Stack grew upward. */ + else + stack_dir = -1; /* Stack grew downward. */ + } +} + +#endif /* STACK_DIRECTION == 0 */ + +/* An "alloca header" is used to: + (a) chain together all alloca'ed blocks; + (b) keep track of stack depth. + + It is very important that sizeof(header) agree with malloc + alignment chunk size. The following default should work okay. */ + +#ifndef ALIGN_SIZE +#define ALIGN_SIZE sizeof(double) +#endif + +typedef union hdr +{ + char align[ALIGN_SIZE]; /* To force sizeof(header). */ + struct + { + union hdr *next; /* For chaining headers. */ + char *deep; /* For stack depth measure. */ + } h; +} header; + +static header *last_alloca_header = NULL; /* -> last alloca header. */ + +/* Return a pointer to at least SIZE bytes of storage, + which will be automatically reclaimed upon exit from + the procedure that called alloca. Originally, this space + was supposed to be taken from the current stack frame of the + caller, but that method cannot be made to work for some + implementations of C, for example under Gould's UTX/32. */ + +pointer +alloca (size) + size_t size; +{ + auto char probe; /* Probes stack depth: */ + register char *depth = ADDRESS_FUNCTION (probe); + +#if STACK_DIRECTION == 0 + if (STACK_DIR == 0) /* Unknown growth direction. */ + find_stack_direction (); +#endif + + /* Reclaim garbage, defined as all alloca'd storage that + was allocated from deeper in the stack than currently. */ + + { + register header *hp; /* Traverses linked list. */ + + for (hp = last_alloca_header; hp != NULL;) + if ((STACK_DIR > 0 && hp->h.deep > depth) + || (STACK_DIR < 0 && hp->h.deep < depth)) + { + register header *np = hp->h.next; + + free ((pointer) hp); /* Collect garbage. */ + + hp = np; /* -> next header. */ + } + else + break; /* Rest are not deeper. */ + + last_alloca_header = hp; /* -> last valid storage. */ + } + + if (size == 0) + return NULL; /* No allocation required. */ + + /* Allocate combined header + user data storage. */ + + { + register pointer new = malloc (sizeof (header) + size); + /* Address of header. */ + + ((header *) new)->h.next = last_alloca_header; + ((header *) new)->h.deep = depth; + + last_alloca_header = (header *) new; + + /* User storage begins just after header. */ + + return (pointer) ((char *) new + sizeof (header)); + } +} + +#if defined (CRAY) && defined (CRAY_STACKSEG_END) + +#ifdef DEBUG_I00AFUNC +#include +#endif + +#ifndef CRAY_STACK +#define CRAY_STACK +#ifndef CRAY2 +/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */ +struct stack_control_header + { + long shgrow:32; /* Number of times stack has grown. */ + long shaseg:32; /* Size of increments to stack. */ + long shhwm:32; /* High water mark of stack. */ + long shsize:32; /* Current size of stack (all segments). */ + }; + +/* The stack segment linkage control information occurs at + the high-address end of a stack segment. (The stack + grows from low addresses to high addresses.) The initial + part of the stack segment linkage control information is + 0200 (octal) words. This provides for register storage + for the routine which overflows the stack. */ + +struct stack_segment_linkage + { + long ss[0200]; /* 0200 overflow words. */ + long sssize:32; /* Number of words in this segment. */ + long ssbase:32; /* Offset to stack base. */ + long:32; + long sspseg:32; /* Offset to linkage control of previous + segment of stack. */ + long:32; + long sstcpt:32; /* Pointer to task common address block. */ + long sscsnm; /* Private control structure number for + microtasking. */ + long ssusr1; /* Reserved for user. */ + long ssusr2; /* Reserved for user. */ + long sstpid; /* Process ID for pid based multi-tasking. */ + long ssgvup; /* Pointer to multitasking thread giveup. */ + long sscray[7]; /* Reserved for Cray Research. */ + long ssa0; + long ssa1; + long ssa2; + long ssa3; + long ssa4; + long ssa5; + long ssa6; + long ssa7; + long sss0; + long sss1; + long sss2; + long sss3; + long sss4; + long sss5; + long sss6; + long sss7; + }; + +#else /* CRAY2 */ +/* The following structure defines the vector of words + returned by the STKSTAT library routine. */ +struct stk_stat + { + long now; /* Current total stack size. */ + long maxc; /* Amount of contiguous space which would + be required to satisfy the maximum + stack demand to date. */ + long high_water; /* Stack high-water mark. */ + long overflows; /* Number of stack overflow ($STKOFEN) calls. */ + long hits; /* Number of internal buffer hits. */ + long extends; /* Number of block extensions. */ + long stko_mallocs; /* Block allocations by $STKOFEN. */ + long underflows; /* Number of stack underflow calls ($STKRETN). */ + long stko_free; /* Number of deallocations by $STKRETN. */ + long stkm_free; /* Number of deallocations by $STKMRET. */ + long segments; /* Current number of stack segments. */ + long maxs; /* Maximum number of stack segments so far. */ + long pad_size; /* Stack pad size. */ + long current_address; /* Current stack segment address. */ + long current_size; /* Current stack segment size. This + number is actually corrupted by STKSTAT to + include the fifteen word trailer area. */ + long initial_address; /* Address of initial segment. */ + long initial_size; /* Size of initial segment. */ + }; + +/* The following structure describes the data structure which trails + any stack segment. I think that the description in 'asdef' is + out of date. I only describe the parts that I am sure about. */ + +struct stk_trailer + { + long this_address; /* Address of this block. */ + long this_size; /* Size of this block (does not include + this trailer). */ + long unknown2; + long unknown3; + long link; /* Address of trailer block of previous + segment. */ + long unknown5; + long unknown6; + long unknown7; + long unknown8; + long unknown9; + long unknown10; + long unknown11; + long unknown12; + long unknown13; + long unknown14; + }; + +#endif /* CRAY2 */ +#endif /* not CRAY_STACK */ + +#ifdef CRAY2 +/* Determine a "stack measure" for an arbitrary ADDRESS. + I doubt that "lint" will like this much. */ + +static long +i00afunc (long *address) +{ + struct stk_stat status; + struct stk_trailer *trailer; + long *block, size; + long result = 0; + + /* We want to iterate through all of the segments. The first + step is to get the stack status structure. We could do this + more quickly and more directly, perhaps, by referencing the + $LM00 common block, but I know that this works. */ + + STKSTAT (&status); + + /* Set up the iteration. */ + + trailer = (struct stk_trailer *) (status.current_address + + status.current_size + - 15); + + /* There must be at least one stack segment. Therefore it is + a fatal error if "trailer" is null. */ + + if (trailer == 0) + abort (); + + /* Discard segments that do not contain our argument address. */ + + while (trailer != 0) + { + block = (long *) trailer->this_address; + size = trailer->this_size; + if (block == 0 || size == 0) + abort (); + trailer = (struct stk_trailer *) trailer->link; + if ((block <= address) && (address < (block + size))) + break; + } + + /* Set the result to the offset in this segment and add the sizes + of all predecessor segments. */ + + result = address - block; + + if (trailer == 0) + { + return result; + } + + do + { + if (trailer->this_size <= 0) + abort (); + result += trailer->this_size; + trailer = (struct stk_trailer *) trailer->link; + } + while (trailer != 0); + + /* We are done. Note that if you present a bogus address (one + not in any segment), you will get a different number back, formed + from subtracting the address of the first block. This is probably + not what you want. */ + + return (result); +} + +#else /* not CRAY2 */ +/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP. + Determine the number of the cell within the stack, + given the address of the cell. The purpose of this + routine is to linearize, in some sense, stack addresses + for alloca. */ + +static long +i00afunc (long address) +{ + long stkl = 0; + + long size, pseg, this_segment, stack; + long result = 0; + + struct stack_segment_linkage *ssptr; + + /* Register B67 contains the address of the end of the + current stack segment. If you (as a subprogram) store + your registers on the stack and find that you are past + the contents of B67, you have overflowed the segment. + + B67 also points to the stack segment linkage control + area, which is what we are really interested in. */ + + /* This might be _getb67() or GETB67 () or getb67 () */ + stkl = CRAY_STACKSEG_END (); + ssptr = (struct stack_segment_linkage *) stkl; + + /* If one subtracts 'size' from the end of the segment, + one has the address of the first word of the segment. + + If this is not the first segment, 'pseg' will be + nonzero. */ + + pseg = ssptr->sspseg; + size = ssptr->sssize; + + this_segment = stkl - size; + + /* It is possible that calling this routine itself caused + a stack overflow. Discard stack segments which do not + contain the target address. */ + + while (!(this_segment <= address && address <= stkl)) + { +#ifdef DEBUG_I00AFUNC + fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl); +#endif + if (pseg == 0) + break; + stkl = stkl - pseg; + ssptr = (struct stack_segment_linkage *) stkl; + size = ssptr->sssize; + pseg = ssptr->sspseg; + this_segment = stkl - size; + } + + result = address - this_segment; + + /* If you subtract pseg from the current end of the stack, + you get the address of the previous stack segment's end. + This seems a little convoluted to me, but I'll bet you save + a cycle somewhere. */ + + while (pseg != 0) + { +#ifdef DEBUG_I00AFUNC + fprintf (stderr, "%011o %011o\n", pseg, size); +#endif + stkl = stkl - pseg; + ssptr = (struct stack_segment_linkage *) stkl; + size = ssptr->sssize; + pseg = ssptr->sspseg; + result += size; + } + return (result); +} + +#endif /* not CRAY2 */ +#endif /* CRAY && CRAY_STACKSEG_END */ + +#endif /* no alloca */ +#endif /* !__GNUC__ || __GNUC__ < 2 */ diff --git a/bash-5.1/lib/malloc/getpagesize.h b/bash-5.1/lib/malloc/getpagesize.h new file mode 100644 index 0000000..a59eabe --- /dev/null +++ b/bash-5.1/lib/malloc/getpagesize.h @@ -0,0 +1,60 @@ +/* Emulation of getpagesize() for systems that need it. + Copyright (C) 1991-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 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 . +*/ + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +# if defined (_SC_PAGESIZE) +# define getpagesize() sysconf(_SC_PAGESIZE) +# else +# if defined (_SC_PAGE_SIZE) +# define getpagesize() sysconf(_SC_PAGE_SIZE) +# endif /* _SC_PAGE_SIZE */ +# endif /* _SC_PAGESIZE */ +#endif + +#if !defined (getpagesize) +# if defined (HAVE_SYS_PARAM_H) +# include +# endif +# 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 diff --git a/bash-5.1/lib/malloc/i386-alloca.s b/bash-5.1/lib/malloc/i386-alloca.s new file mode 100644 index 0000000..01b2cfe --- /dev/null +++ b/bash-5.1/lib/malloc/i386-alloca.s @@ -0,0 +1,16 @@ + .file "alloca.s" + .text + .align 4 + .def alloca; .val alloca; .scl 2; .type 044; .endef + .globl alloca +alloca: + popl %edx + popl %eax + addl $3,%eax + andl $0xfffffffc,%eax + subl %eax,%esp + movl %esp,%eax + pushl %eax + pushl %edx + ret + .def alloca; .val .; .scl -1; .endef diff --git a/bash-5.1/lib/malloc/imalloc.h b/bash-5.1/lib/malloc/imalloc.h new file mode 100644 index 0000000..d07adac --- /dev/null +++ b/bash-5.1/lib/malloc/imalloc.h @@ -0,0 +1,173 @@ +/* imalloc.h -- internal malloc definitions shared by source files. */ + +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* Must be included *after* config.h */ + +#ifndef _IMALLOC_H +#define _IMALLOC_H + +#ifdef MALLOC_DEBUG +#define MALLOC_STATS +#define MALLOC_TRACE +#define MALLOC_REGISTER +#define MALLOC_WATCH +#endif + +#define MALLOC_WRAPFUNCS + +/* Generic pointer type. */ +#ifndef PTR_T +# if defined (__STDC__) +# define PTR_T void * +# else +# define PTR_T char * +# endif +#endif + +#if !defined (NULL) +# define NULL 0 +#endif + +#if !defined (CPP_STRING) +# if defined (HAVE_STRINGIZE) +# define CPP_STRING(x) #x +# else +# define CPP_STRING(x) "x" +# endif /* !HAVE_STRINGIZE */ +#endif /* !__STRING */ + +#if __GNUC__ > 1 +# define FASTCOPY(s, d, n) __builtin_memcpy (d, s, n) +#else /* !__GNUC__ */ +# if !defined (HAVE_BCOPY) +# if !defined (HAVE_MEMMOVE) +# define FASTCOPY(s, d, n) memcpy (d, s, n) +# else +# define FASTCOPY(s, d, n) memmove (d, s, n) +# endif /* !HAVE_MEMMOVE */ +# else /* HAVE_BCOPY */ +# define FASTCOPY(s, d, n) bcopy (s, d, n) +# endif /* HAVE_BCOPY */ +#endif /* !__GNUC__ */ + +#if !defined (PARAMS) +# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) || defined (PROTOTYPES) +# define PARAMS(protos) protos +# else +# define PARAMS(protos) () +# endif +#endif + +/* Use Duff's device for good zeroing/copying performance. DO NOT call the + Duff's device macros with NBYTES == 0. */ + +#define MALLOC_BZERO(charp, nbytes) \ +do { \ + if ((nbytes) <= 32) { \ + size_t * mzp = (size_t *)(charp); \ + unsigned long mctmp = (nbytes)/sizeof(size_t); \ + long mcn; \ + if (mctmp < 8) mcn = 0; else { mcn = (mctmp-1)/8; mctmp &= 7; } \ + switch (mctmp) { \ + case 0: for(;;) { *mzp++ = 0; \ + case 7: *mzp++ = 0; \ + case 6: *mzp++ = 0; \ + case 5: *mzp++ = 0; \ + case 4: *mzp++ = 0; \ + case 3: *mzp++ = 0; \ + case 2: *mzp++ = 0; \ + case 1: *mzp++ = 0; if(mcn <= 0) break; mcn--; } \ + } \ + else \ + memset ((charp), 0, (nbytes)); \ +} while(0) + +#define MALLOC_ZERO(charp, nbytes) \ +do { \ + size_t mzsz = (nbytes); \ + if (mzsz <= 9 * sizeof(mzsz) { \ + size_t *mz = (size_t *)(charp); \ + if(mzsz >= 5*sizeof(mzsz)) { *mz++ = 0; \ + *mz++ = 0; \ + if(mzsz >= 7*sizeof(mzsz)) { *mz++ = 0; \ + *mz++ = 0; \ + if(mzsz >= 9*sizeof(mzsz)) { *mz++ = 0; \ + *mz++ = 0; }}} \ + *mz++ = 0; \ + *mz++ = 0; \ + *mz = 0; \ + } else \ + memset ((charp), 0, mzsz); \ +} while (0) + +#define MALLOC_MEMSET(charp, xch, nbytes) \ +do { \ + if ((nbytes) <= 32) { \ + register char * mzp = (charp); \ + unsigned long mctmp = (nbytes); \ + register long mcn; \ + if (mctmp < 8) mcn = 0; else { mcn = (mctmp-1)/8; mctmp &= 7; } \ + switch (mctmp) { \ + case 0: for(;;) { *mzp++ = xch; \ + case 7: *mzp++ = xch; \ + case 6: *mzp++ = xch; \ + case 5: *mzp++ = xch; \ + case 4: *mzp++ = xch; \ + case 3: *mzp++ = xch; \ + case 2: *mzp++ = xch; \ + case 1: *mzp++ = xch; if(mcn <= 0) break; mcn--; } \ + } \ + } else \ + memset ((charp), (xch), (nbytes)); \ +} while(0) + +#define MALLOC_MEMCPY(dest,src,nbytes) \ +do { \ + if ((nbytes) <= 32) { \ + size_t* mcsrc = (size_t*) src; \ + size_t* mcdst = (size_t*) dest; \ + unsigned long mctmp = (nbytes)/sizeof(size_t); \ + long mcn; \ + if (mctmp < 8) mcn = 0; else { mcn = (mctmp-1)/8; mctmp &= 7; } \ + switch (mctmp) { \ + case 0: for(;;) { *mcdst++ = *mcsrc++; \ + case 7: *mcdst++ = *mcsrc++; \ + case 6: *mcdst++ = *mcsrc++; \ + case 5: *mcdst++ = *mcsrc++; \ + case 4: *mcdst++ = *mcsrc++; \ + case 3: *mcdst++ = *mcsrc++; \ + case 2: *mcdst++ = *mcsrc++; \ + case 1: *mcdst++ = *mcsrc++; if(mcn <= 0) break; mcn--; } \ + } else \ + memcpy ((dest), (src), (nbytes)) \ +} while(0) + +#if defined (SHELL) +# include "bashintl.h" +#else +# define _(x) x +#endif + +#include + +extern void _malloc_block_signals PARAMS((sigset_t *, sigset_t *)); +extern void _malloc_unblock_signals PARAMS((sigset_t *, sigset_t *)); + +#endif /* _IMALLOC_H */ diff --git a/bash-5.1/lib/malloc/malloc.c b/bash-5.1/lib/malloc/malloc.c new file mode 100644 index 0000000..439f8ef --- /dev/null +++ b/bash-5.1/lib/malloc/malloc.c @@ -0,0 +1,1481 @@ +/* malloc.c - dynamic memory allocation for bash. */ + +/* Copyright (C) 1985-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* + * @(#)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. + * + * [VERY] old explanation: + * + * 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 +#include + +#if !defined (botch) +#include +#endif + +#if defined (HAVE_MMAP) +#include +#endif + +/* 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 + +#ifdef powerof2 +# undef powerof2 +#endif +/* Could also use (((x) & -(x)) == (x)) */ +#define powerof2(x) ((((x) - 1) & (x)) == 0) + +/* System-specific omissions. */ +#ifdef HPUX +# define NO_VALLOC +#endif + +/* SIZEOF_LONG * 4 - 2, usable bins from 1..NBUCKETS-1 */ +#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 { +#if SIZEOF_CHAR_P == 8 + bits64_t mh_align[2]; /* 16 */ +#else + bits64_t mh_align; /* 8 */ +#endif + 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 */ +#if SIZEOF_CHAR_P == 8 + char mi_magic8[8]; /* MAGIC1 guard bytes */ /* 8 */ +#endif + } 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 mh_magic8 minfo.mi_magic8 + +#define MOVERHEAD sizeof(union mhead) + +#if SIZEOF_CHAR_P == 8 +#define MALIGN_MASK 15 +#else +#define MALIGN_MASK 7 /* one less than desired alignment */ +#endif + +typedef union _malloc_guard { + char s[4]; + u_bits32_t i; +} mguard_t; + +/* 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. */ + +/* If SIZEOF_CHAR_P == 8, this goes into the mh_magic8 buffer at the end of + the rest of the struct. This may need adjusting. */ +#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 bytes before the block's real space (-SIZEOF_CHAR_P bytes) */ +#define MAGIC1 0x55 +#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 2*SIZEOF_CHAR_P 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, CPP_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 + +/* Should we use mmap for large allocations? */ +#if defined (HAVE_MMAP) +# if defined (MAP_ANON) && !defined (MAP_ANONYMOUS) +# define MAP_ANONYMOUS MAP_ANON +# endif +#endif + +#if defined (HAVE_MMAP) && defined (MAP_ANONYMOUS) +# define USE_MMAP +#endif + +#if defined (USE_MMAP) +# define MMAP_THRESHOLD 14 /* must be >= SPLIT_MAX, COMBINE_MAX */ +#else +# define MMAP_THRESHOLD (8 * SIZEOF_LONG) +#endif + +/* 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 or free 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 const 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, 4294967295UL +}; + +/* binsizes[x] == (1 << ((x) + 3)) */ +#define binsize(x) binsizes[(x)] + +#if !defined (errno) +extern int errno; +#endif + +/* Declarations for internal functions */ +static PTR_T internal_malloc PARAMS((size_t, const char *, int, int)); +static PTR_T internal_realloc PARAMS((PTR_T, size_t, const char *, int, int)); +static void internal_free PARAMS((PTR_T, const char *, int, int)); +static PTR_T internal_memalign PARAMS((size_t, size_t, const char *, int, int)); +#ifndef NO_CALLOC +static PTR_T internal_calloc PARAMS((size_t, size_t, const char *, int, int)); +static void internal_cfree PARAMS((PTR_T, const char *, int, int)); +#endif +#ifndef NO_VALLOC +static PTR_T internal_valloc PARAMS((size_t, const char *, int, int)); +#endif + +#if defined (botch) +extern void botch (); +#else +static void botch PARAMS((const char *, const char *, int)); +#endif +static void xbotch PARAMS((PTR_T, int, const char *, const char *, int)); + +#if !HAVE_DECL_SBRK +extern char *sbrk (); +#endif /* !HAVE_DECL_SBRK */ + +#ifdef SHELL +extern int running_trap; +extern int signal_is_trapped PARAMS((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 */ + +/* Use a variable in case we want to dynamically adapt it in the future */ +int malloc_mmap_threshold = MMAP_THRESHOLD; + +#ifdef MALLOC_TRACE +char _malloc_trace_buckets[NBUCKETS]; + +/* These should really go into a header file. */ +extern void mtrace_alloc PARAMS((const char *, PTR_T, size_t, const char *, int)); +extern void mtrace_free PARAMS((PTR_T, int, const char *, int)); +#endif + +#if !defined (botch) +static void +botch (s, file, line) + const char *s; + const char *file; + int 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. + BUSY[NU] must be set to 1. */ +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 || busy[nbuck]) + return; + + busy[nbuck] = 1; + 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) + { + busy[nbuck] = 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) + { + busy[nbuck] = 0; + xbotch ((PTR_T)0, 0, "bcoalesce: CHAIN(mp2) != mp1", (char *)NULL, 0); + } + +#ifdef MALLOC_DEBUG + if (CHAIN (mp1) != (union mhead *)((char *)mp1 + siz)) + { + busy[nbuck] = 0; + return; /* not adjacent */ + } +#endif + + /* Since they are adjacent, remove them from the free list */ + if (mp1 == nextf[nbuck]) + nextf[nbuck] = CHAIN (mp); + else + CHAIN (mp2) = CHAIN (mp); + busy[nbuck] = 0; + +#ifdef MALLOC_STATS + _mstats.tbcoalesce++; + _mstats.ncoalesce[nbuck]++; +#endif + + /* 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()). BUSY[NU] must be set to 1. */ +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. */ + + /* Remove the block from the chain of larger blocks. */ + busy[nbuck] = 1; + mp = nextf[nbuck]; + nextf[nbuck] = CHAIN (mp); + busy[nbuck] = 0; + +#ifdef MALLOC_STATS + _mstats.tbsplit++; + _mstats.nsplit[nbuck]++; +#endif + + /* Figure out how many blocks we'll get. */ + siz = binsize (nu); + nblks = binsize (nbuck) / siz; + + /* 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; +} + +/* Take the memory block MP and add it to a chain < NU. NU is the right bucket, + but is busy. This avoids memory orphaning. */ +static void +xsplit (mp, nu) + union mhead *mp; + int nu; +{ + union mhead *nh; + int nbuck, nblks, split_max; + unsigned long siz; + + nbuck = nu - 1; + while (nbuck >= SPLIT_MIN && busy[nbuck]) + nbuck--; + if (nbuck < SPLIT_MIN) + return; + +#ifdef MALLOC_STATS + _mstats.tbsplit++; + _mstats.nsplit[nu]++; +#endif + + /* Figure out how many blocks we'll get. */ + siz = binsize (nu); /* original block size */ + nblks = siz / binsize (nbuck); /* should be 2 most of the time */ + + /* And add it to nextf[nbuck] */ + siz = binsize (nbuck); /* XXX - resetting here */ + nh = mp; + while (1) + { + mp->mh_alloc = ISFREE; + mp->mh_index = nbuck; + if (--nblks <= 0) break; + CHAIN (mp) = (union mhead *)((char *)mp + siz); + mp = (union mhead *)((char *)mp + siz); + } + busy[nbuck] = 1; + CHAIN (mp) = nextf[nbuck]; + nextf[nbuck] = nh; + busy[nbuck] = 0; +} + +void +_malloc_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 +} + +void +_malloc_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 +} + +/* Ask system for more memory; add to NEXTF[NU]. BUSY[NU] must be set to 1. */ +static void +morecore (nu) + 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 defined (SIGCHLD) + if (running_trap || signal_is_trapped (SIGINT) || signal_is_trapped (SIGCHLD)) +# else + if (running_trap || signal_is_trapped (SIGINT)) +# endif +#endif + { + _malloc_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 && nu <= malloc_mmap_threshold) + { + 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 within the range of the block coalescing limits. */ + if (nu >= COMBINE_MIN && nu < COMBINE_MAX && nu <= malloc_mmap_threshold && 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; + } + +#if defined (USE_MMAP) + if (nu > malloc_mmap_threshold) + { + mp = (union mhead *)mmap (0, sbrk_amt, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + if ((void *)mp == MAP_FAILED) + goto morecore_done; + nextf[nu] = mp; + mp->mh_alloc = ISFREE; + mp->mh_index = nu; + CHAIN (mp) = 0; +#ifdef MALLOC_STATS + _mstats.nmmap++; + _mstats.tmmap += sbrk_amt; +#endif + goto morecore_done; + } +#endif + + +#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- or 16-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) + _malloc_unblock_signals (&set, &oset); +} + +static void +malloc_debug_dummy () +{ + write (1, "malloc_debug_dummy\n", 19); +} + +#if SIZEOF_CHAR_P == 8 +#define PREPOP_BIN 3 +#define PREPOP_SIZE 64 +#else +#define PREPOP_BIN 2 +#define PREPOP_SIZE 32 +#endif + +static int +pagealign () +{ + 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; + memtop += sbrk_needed; + + /* Take the memory which would otherwise be wasted and populate the most + popular bin (3 == 64 bytes) with it. Add whatever we need to curbrk + to make things 64-byte aligned, compute how many 64-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; + + if (nunits > 0) + { + 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; + } + } + + /* 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, *z; + long nbytes; + mguard_t mg; + + /* 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. XXX - can increase this if HAVE_MMAP */ + 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; + +#if SIZEOF_CHAR_P == 8 + /* Begin guard */ + MALLOC_MEMSET ((char *)p->mh_magic8, MAGIC1, 8); +#endif + + /* End guard */ + mg.i = n; + z = mg.s; + m = (char *) (p + 1) + n; + *m++ = *z++, *m++ = *z++, *m++ = *z++, *m++ = *z++; + +#ifdef MEMSCRAMBLE + if (n) + MALLOC_MEMSET ((char *)(p + 1), 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 + +#if defined (MALLOC_DEBUG) + z = (char *) (p + 1); + /* Check alignment of returned pointer */ + if ((unsigned long)z & MALIGN_MASK) + fprintf (stderr, "malloc: %s:%d: warning: request for %d bytes not aligned on %d byte boundary\r\n", + file ? file : _("unknown"), line, p->mh_nbytes, MALIGN_MASK+1); +#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, *z; + register int nunits; + register unsigned int nbytes; + int ubytes; /* caller-requested size */ + mguard_t mg; + + 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) || defined (MALLOC_WATCH) + if (malloc_trace || malloc_register || _malloc_nwatch > 0) + 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); +#if SIZEOF_CHAR_P == 8 + { + int i; + for (i = 0, z = p->mh_magic8; i < 8; i++) + if (*z++ != MAGIC1) + xbotch (mem, ERR_UNDERFLOW, + _("free: underflow detected; magic8 corrupted"), file, line); + } +#endif + + ap += p->mh_nbytes; + z = mg.s; + *z++ = *ap++, *z++ = *ap++, *z++ = *ap++, *z++ = *ap++; + if (mg.i != p->mh_nbytes) + xbotch (mem, ERR_ASSERT_FAILED, _("free: start and end chunk sizes differ"), file, line); + +#if defined (USE_MMAP) + if (nunits > malloc_mmap_threshold) + { + munmap (p, binsize (nunits)); +#if defined (MALLOC_STATS) + _mstats.nlesscore[nunits]++; +#endif + goto free_return; + } +#endif + +#if GLIBC21 + if (nunits >= LESSCORE_MIN && ((char *)p + binsize(nunits) == sbrk (0))) +#else + if (nunits >= LESSCORE_MIN && ((char *)p + binsize(nunits) == memtop)) +#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 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 + if (p->mh_nbytes) + MALLOC_MEMSET (mem, 0xcf, p->mh_nbytes); +#endif + + ASSERT (nunits < NBUCKETS); + + if (busy[nunits] == 1) + { + xsplit (p, nunits); /* split block and add to different chain */ + goto free_return; + } + + p->mh_alloc = ISFREE; + /* 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: + ; /* Empty statement in case this is the end of the function */ + +#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, *z; + mguard_t mg; + +#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); +#if SIZEOF_CHAR_P == 8 + { + int i; + for (i = 0, z = p->mh_magic8; i < 8; i++) + if (*z++ != MAGIC1) + xbotch (mem, ERR_UNDERFLOW, + _("realloc: underflow detected; magic8 corrupted"), file, line); + + } +#endif + + m = (char *)mem + (tocopy = p->mh_nbytes); + z = mg.s; + *z++ = *m++, *z++ = *m++, *z++ = *m++, *z++ = *m++; + if (mg.i != 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 + + /* If we're reallocating to the same size as previously, return now */ + if (n == p->mh_nbytes) + return mem; + + /* 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) || RIGHT_BUCKET(nbytes, nunits-1)) + { + /* Compensate for increment above. */ + m -= 4; + + *m++ = 0; *m++ = 0; *m++ = 0; *m++ = 0; + m = (char *)mem + (p->mh_nbytes = n); + + mg.i = n; + z = mg.s; + *m++ = *z++, *m++ = *z++, *m++ = *z++, *m++ = *z++; + + return mem; + } + + if (n < tocopy) + tocopy = n; + +#ifdef MALLOC_STATS + _mstats.nrcopy++; +#endif + + /* If we are using mmap and have mremap, we could use it here. */ + + 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) + size_t 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. */ + aligned = (char *) (((long) ptr + alignment - 1) & (~alignment + 1)); + + /* 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; +} + +int +posix_memalign (memptr, alignment, size) + void **memptr; + size_t alignment, size; +{ + void *mem; + + /* Perform posix-mandated error checking here */ + if ((alignment % sizeof (void *) != 0) || alignment == 0) + return EINVAL; + else if (powerof2 (alignment) == 0) + return EINVAL; + + mem = internal_memalign (alignment, size, (char *)0, 0, 0); + if (mem != 0) + { + *memptr = mem; + return 0; + } + return ENOMEM; +} + +size_t +malloc_usable_size (mem) + void *mem; +{ + register union mhead *p; + register char *ap; + register int maxbytes; + + + if ((ap = (char *)mem) == 0) + return 0; + + /* Find the true start of the memory block to discover which bin */ + p = (union mhead *) ap - 1; + if (p->mh_alloc == ISMEMALIGN) + { + ap -= p->mh_nbytes; + p = (union mhead *) ap - 1; + } + + /* XXX - should we return 0 if ISFREE? */ + maxbytes = binsize(p->mh_index); + + /* So the usable size is the maximum number of bytes in the bin less the + malloc overhead */ + maxbytes -= MOVERHEAD + MSLOP; + return (maxbytes); +} + +#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) + size_t 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) + size_t 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/bash-5.1/lib/malloc/mstats.h b/bash-5.1/lib/malloc/mstats.h new file mode 100644 index 0000000..ce8aaec --- /dev/null +++ b/bash-5.1/lib/malloc/mstats.h @@ -0,0 +1,114 @@ +/* mstats.h - definitions for malloc statistics */ + +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _MSTATS_H +#define _MSTATS_H + +#include "imalloc.h" + +#ifdef MALLOC_STATS + +/* This needs to change if the definition in malloc.c changes */ +#ifndef NBUCKETS +# define NBUCKETS 30 +#endif + +/* + * NMALLOC[i] is the difference between the number of mallocs and frees + * for a given block size. TMALLOC[i] is the total number of mallocs for + * a given block size. NMORECORE[i] is the total number of calls to + * morecore(i). NLESSCORE[i] is the total number of calls to lesscore(i). + * + * NMAL and NFRE are counts of the number of calls to malloc() and free(), + * respectively. NREALLOC is the total number of calls to realloc(); + * NRCOPY is the number of times realloc() had to allocate new memory and + * copy to it. NRECURSE is a count of the number of recursive calls to + * malloc() for the same bucket size, which can be caused by calls to + * malloc() from a signal handler. + * + * NSBRK is the number of calls to sbrk() (whether by morecore() or for + * alignment); TSBRK is the total number of bytes requested from the kernel + * with sbrk(). + * + * BYTESUSED is the total number of bytes consumed by blocks currently in + * use; BYTESFREE is the total number of bytes currently on all of the free + * lists. BYTESREQ is the total number of bytes requested by the caller + * via calls to malloc() and realloc(). + * + * TBSPLIT is the number of times a larger block was split to satisfy a + * smaller request. NSPLIT[i] is the number of times a block of size I was + * split. + * + * TBCOALESCE is the number of times two adjacent smaller blocks off the free + * list were combined to satisfy a larger request. + */ +struct _malstats { + int nmalloc[NBUCKETS]; + int tmalloc[NBUCKETS]; + int nmorecore[NBUCKETS]; + int nlesscore[NBUCKETS]; + int nmal; + int nfre; + int nrealloc; + int nrcopy; + int nrecurse; + int nsbrk; + bits32_t tsbrk; + bits32_t bytesused; + bits32_t bytesfree; + u_bits32_t bytesreq; + int tbsplit; + int nsplit[NBUCKETS]; + int tbcoalesce; + int ncoalesce[NBUCKETS]; + int nmmap; + bits32_t tmmap; +}; + +/* Return statistics describing allocation of blocks of size BLOCKSIZE. + NFREE is the number of free blocks for this allocation size. NUSED + is the number of blocks in use. NMAL is the number of requests for + blocks of size BLOCKSIZE. NMORECORE is the number of times we had + to call MORECORE to repopulate the free list for this bucket. + NLESSCORE is the number of times we gave memory back to the system + from this bucket. NSPLIT is the number of times a block of this size + was split to satisfy a smaller request. NCOALESCE is the number of + times two blocks of this size were combined to satisfy a larger + request. */ +struct bucket_stats { + u_bits32_t blocksize; + int nfree; + int nused; + int nmal; + int nmorecore; + int nlesscore; + int nsplit; + int ncoalesce; + int nmmap; /* currently unused */ +}; + +extern struct bucket_stats malloc_bucket_stats PARAMS((int)); +extern struct _malstats malloc_stats PARAMS((void)); +extern void print_malloc_stats PARAMS((char *)); +extern void trace_malloc_stats PARAMS((char *, char *)); + +#endif /* MALLOC_STATS */ + +#endif /* _MSTATS_H */ diff --git a/bash-5.1/lib/malloc/shmalloc.h b/bash-5.1/lib/malloc/shmalloc.h new file mode 100644 index 0000000..d51193e --- /dev/null +++ b/bash-5.1/lib/malloc/shmalloc.h @@ -0,0 +1,70 @@ +/* Functions (currently) for use by the shell to do malloc debugging and + tracking. */ +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _SH_MALLOC_H +#define _SH_MALLOC_H + +#ifndef PARAMS +# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) +# define PARAMS(protos) protos +# else +# define PARAMS(protos) () +# endif +#endif + +/* Generic pointer type. */ +#ifndef PTR_T + +#if defined (__STDC__) +# define PTR_T void * +#else +# define PTR_T char * +#endif + +#endif /* PTR_T */ + + +extern PTR_T sh_malloc PARAMS((size_t, const char *, int)); +extern PTR_T sh_realloc PARAMS((PTR_T, size_t, const char *, int)); +extern void sh_free PARAMS((PTR_T, const char *, int)); + +extern PTR_T sh_memalign PARAMS((size_t, size_t, const char *, int)); + +extern PTR_T sh_calloc PARAMS((size_t, size_t, const char *, int)); +extern void sh_cfree PARAMS((PTR_T, const char *, int)); + +extern PTR_T sh_valloc PARAMS((size_t, const char *, int)); + +/* trace.c */ +extern int malloc_set_trace PARAMS((int)); +extern void malloc_set_tracefp (); /* full prototype requires stdio.h */ +extern void malloc_set_tracefn PARAMS((char *, char *)); + +/* table.c */ +extern void mregister_dump_table PARAMS((void)); +extern void mregister_table_init PARAMS((void)); +extern int malloc_set_register PARAMS((int)); + +/* stats.c */ +extern void print_malloc_stats PARAMS((char *)); +extern void fprint_malloc_stats (); /* full prototype requires stdio.h */ +extern void trace_malloc_stats PARAMS((char *, char *)); + +#endif diff --git a/bash-5.1/lib/malloc/stats.c b/bash-5.1/lib/malloc/stats.c new file mode 100644 index 0000000..b38df9f --- /dev/null +++ b/bash-5.1/lib/malloc/stats.c @@ -0,0 +1,213 @@ +/* stats.c - malloc statistics */ + +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "imalloc.h" + +#ifdef MALLOC_STATS + +#include +#ifdef HAVE_UNISTD_H +# include +#endif +#include + +#include "mstats.h" + +extern int malloc_free_blocks PARAMS((int)); + +extern int malloc_mmap_threshold; + +extern struct _malstats _mstats; + +extern FILE *_imalloc_fopen PARAMS((char *, char *, char *, char *, size_t)); + +struct bucket_stats +malloc_bucket_stats (size) + int size; +{ + struct bucket_stats v; + + v.nfree = 0; + + if (size < 0 || size >= NBUCKETS) + { + v.blocksize = 0; + v.nused = v.nmal = v.nmorecore = v.nlesscore = v.nsplit = 0; + return v; + } + + v.blocksize = 1 << (size + 3); + v.nused = _mstats.nmalloc[size]; + v.nmal = _mstats.tmalloc[size]; + v.nmorecore = _mstats.nmorecore[size]; + v.nlesscore = _mstats.nlesscore[size]; + v.nsplit = _mstats.nsplit[size]; + v.ncoalesce = _mstats.ncoalesce[size]; + + v.nfree = malloc_free_blocks (size); /* call back to malloc.c */ + + return v; +} + +/* Return a copy of _MSTATS, with two additional fields filled in: + BYTESFREE is the total number of bytes on free lists. BYTESUSED + is the total number of bytes in use. These two fields are fairly + expensive to compute, so we do it only when asked to. */ +struct _malstats +malloc_stats () +{ + struct _malstats result; + struct bucket_stats v; + register int i; + + result = _mstats; + result.bytesused = result.bytesfree = 0; + for (i = 0; i < NBUCKETS; i++) + { + v = malloc_bucket_stats (i); + result.bytesfree += v.nfree * v.blocksize; + result.bytesused += v.nused * v.blocksize; + } + return (result); +} + +static void +_print_malloc_stats (s, fp) + char *s; + FILE *fp; +{ + register int i; + unsigned long totused, totfree; + struct bucket_stats v; + + fprintf (fp, "Memory allocation statistics: %s\n size\tfree\tin use\ttotal\tmorecore lesscore split\tcoalesce\n", s ? s : ""); + for (i = totused = totfree = 0; i < NBUCKETS; i++) + { + v = malloc_bucket_stats (i); + /* Show where the mmap threshold is; sizes greater than this use mmap to + allocate and munmap to free (munmap shows up as lesscore). */ + if (i == malloc_mmap_threshold+1) + fprintf (fp, "--------\n"); + if (v.nmal > 0) + fprintf (fp, "%8lu\t%4d\t%6d\t%5d%8d\t%8d %5d %8d\n", (unsigned long)v.blocksize, v.nfree, v.nused, v.nmal, v.nmorecore, v.nlesscore, v.nsplit, v.ncoalesce); + totfree += v.nfree * v.blocksize; + totused += v.nused * v.blocksize; + } + fprintf (fp, "\nTotal bytes in use: %lu, total bytes free: %lu\n", + totused, totfree); + fprintf (fp, "\nTotal bytes requested by application: %lu\n", (unsigned long)_mstats.bytesreq); + fprintf (fp, "Total mallocs: %d, total frees: %d, total reallocs: %d (%d copies)\n", + _mstats.nmal, _mstats.nfre, _mstats.nrealloc, _mstats.nrcopy); + fprintf (fp, "Total sbrks: %d, total bytes via sbrk: %d\n", + _mstats.nsbrk, _mstats.tsbrk); + fprintf (fp, "Total mmaps: %d, total bytes via mmap: %d\n", + _mstats.nmmap, _mstats.tmmap); + fprintf (fp, "Total blocks split: %d, total block coalesces: %d\n", + _mstats.tbsplit, _mstats.tbcoalesce); +} + +void +print_malloc_stats (s) + char *s; +{ + _print_malloc_stats (s, stderr); +} + +void +fprint_malloc_stats (s, fp) + char *s; + FILE *fp; +{ + _print_malloc_stats (s, fp); +} + +#define TRACEROOT "/var/tmp/maltrace/stats." + +void +trace_malloc_stats (s, fn) + char *s, *fn; +{ + FILE *fp; + char defname[sizeof (TRACEROOT) + 64]; + static char mallbuf[1024]; + + fp = _imalloc_fopen (s, fn, TRACEROOT, defname, sizeof (defname)); + if (fp) + { + setvbuf (fp, mallbuf, _IOFBF, sizeof (mallbuf)); + _print_malloc_stats (s, fp); + fflush(fp); + fclose(fp); + } +} + +#endif /* MALLOC_STATS */ + +#if defined (MALLOC_STATS) || defined (MALLOC_TRACE) +FILE * +_imalloc_fopen (s, fn, def, defbuf, defsiz) + char *s; + char *fn; + char *def; + char *defbuf; + size_t defsiz; +{ + char fname[1024]; + long l; + FILE *fp; + + l = (long)getpid (); + if (fn == 0) + { + sprintf (defbuf, "%s%ld", def, l); + fp = fopen(defbuf, "w"); + } + else + { + char *p, *q, *r; + char pidbuf[32]; + int sp; + + sprintf (pidbuf, "%ld", l); + if ((strlen (pidbuf) + strlen (fn) + 2) >= sizeof (fname)) + return ((FILE *)0); + for (sp = 0, p = fname, q = fn; *q; ) + { + if (sp == 0 && *q == '%' && q[1] == 'p') + { + sp = 1; + for (r = pidbuf; *r; ) + *p++ = *r++; + q += 2; + } + else + *p++ = *q++; + } + *p = '\0'; + fp = fopen (fname, "w"); + } + + return fp; +} +#endif /* MALLOC_STATS || MALLOC_TRACE */ diff --git a/bash-5.1/lib/malloc/stub.c b/bash-5.1/lib/malloc/stub.c new file mode 100644 index 0000000..a60a624 --- /dev/null +++ b/bash-5.1/lib/malloc/stub.c @@ -0,0 +1,22 @@ +/* Copyright (C) 1993-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 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 . +*/ + +void +bash_malloc_stub() +{ +} diff --git a/bash-5.1/lib/malloc/table.c b/bash-5.1/lib/malloc/table.c new file mode 100644 index 0000000..e6acbf4 --- /dev/null +++ b/bash-5.1/lib/malloc/table.c @@ -0,0 +1,429 @@ +/* table.c - bookkeeping functions for allocated memory */ + +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include "imalloc.h" +#include "table.h" + +#ifdef SHELL +extern int running_trap; +extern int signal_is_trapped PARAMS((int)); +#endif + +extern int malloc_register; + +#ifdef MALLOC_REGISTER + +extern FILE *_imalloc_fopen PARAMS((char *, char *, char *, char *, size_t)); + +#define FIND_ALLOC 0x01 /* find slot for new allocation */ +#define FIND_EXIST 0x02 /* find slot for existing entry for free() or search */ + +static int table_count = 0; +static int table_allocated = 0; +static int table_bucket_index = REG_TABLE_SIZE-1; +static mr_table_t mem_table[REG_TABLE_SIZE]; +static mr_table_t mem_overflow; + +#ifndef STREQ +#define STREQ(a, b) ((a)[0] == (b)[0] && strcmp(a, b) == 0) +#endif + +static int location_table_index = 0; +static int location_table_count = 0; +static ma_table_t mlocation_table[REG_TABLE_SIZE]; + +/* + * NOTE: taken from dmalloc (http://dmalloc.com) and modified. + */ +static unsigned int +mt_hash (key) + const PTR_T key; +{ + unsigned int a, b, c; + unsigned long x; + + /* set up the internal state */ + a = 0x9e3779b9; /* the golden ratio; an arbitrary value */ + x = (unsigned long)key; /* truncation is OK */ + b = x >> 8; + c = x >> 3; /* XXX - was >> 4 */ + + HASH_MIX(a, b, c); + return c; +} + +#if 0 +static unsigned int +which_bucket (mem) + PTR_T mem; +{ + return (mt_hash ((unsigned char *)mem) & (REG_TABLE_SIZE-1)); +} + +#else +#define which_bucket(mem) (mt_hash ((unsigned char *)(mem)) & (REG_TABLE_SIZE-1)); + +#define next_bucket() ((table_bucket_index + 1) & (REG_TABLE_SIZE-1)) +#define next_entry(mem) ((mem == mem_table + REG_TABLE_SIZE - 1) ? mem_table : ++mem) + +#define prev_bucket() (table_bucket_index == 0 ? REG_TABLE_SIZE-1 : table_bucket_index-1) +#define prev_entry(mem) ((mem == mem_table) ? mem_table + REG_TABLE_SIZE - 1 : mem - 1) +#endif + +static mr_table_t * +find_entry (mem, flags) + PTR_T mem; + int flags; +{ + unsigned int bucket; + register mr_table_t *tp; + mr_table_t *endp; + + if (mem_overflow.mem == mem) + return (&mem_overflow); + + /* If we want to insert an allocation entry just use the next slot */ + if (flags & FIND_ALLOC) + { + table_bucket_index = next_bucket(); + table_count++; + tp = mem_table + table_bucket_index; + memset(tp, 0, sizeof (mr_table_t)); /* overwrite next existing entry */ + return tp; + } + + tp = endp = mem_table + table_bucket_index; + + /* search for last allocation corresponding to MEM, return entry pointer */ + while (1) + { + if (tp->mem == mem) + return (tp); + + tp = prev_entry (tp); + + /* if we went all the way around and didn't find it, return NULL */ + if (tp == endp) + return ((mr_table_t *)NULL); + } + + return (mr_table_t *)NULL; +} + +mr_table_t * +mr_table_entry (mem) + PTR_T mem; +{ + return (find_entry (mem, FIND_EXIST)); +} + +void +mregister_describe_mem (mem, fp) + PTR_T mem; + FILE *fp; +{ + mr_table_t *entry; + + entry = find_entry (mem, FIND_EXIST); + if (entry == 0) + return; + fprintf (fp, "malloc: %p: %s: last %s from %s:%d\n", + mem, + (entry->flags & MT_ALLOC) ? "allocated" : "free", + (entry->flags & MT_ALLOC) ? "allocated" : "freed", + entry->file ? entry->file : "unknown", + entry->line); +} + +void +mregister_alloc (tag, mem, size, file, line) + const char *tag; + PTR_T mem; + size_t size; + const char *file; + int line; +{ + mr_table_t *tentry; + 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 (running_trap || signal_is_trapped (SIGINT) || signal_is_trapped (SIGCHLD)) +#endif + { + _malloc_block_signals (&set, &oset); + blocked_sigs = 1; + } + + mlocation_register_alloc (file, line); + + tentry = find_entry (mem, FIND_ALLOC); + + if (tentry == 0) + { + /* oops. table is full. punt. */ + fprintf (stderr, _("register_alloc: alloc table is full with FIND_ALLOC?\n")); + if (blocked_sigs) + _malloc_unblock_signals (&set, &oset); + return; + } + + if (tentry->flags & MT_ALLOC) + { + /* oops. bad bookkeeping. ignore for now */ + fprintf (stderr, _("register_alloc: %p already in table as allocated?\n"), mem); + } + + tentry->mem = mem; + tentry->size = size; + tentry->func = tag; + tentry->flags = MT_ALLOC; + tentry->file = file; + tentry->line = line; + tentry->nalloc++; + + if (tentry != &mem_overflow) + table_allocated++; + + if (blocked_sigs) + _malloc_unblock_signals (&set, &oset); +} + +void +mregister_free (mem, size, file, line) + PTR_T mem; + int size; + const char *file; + int line; +{ + mr_table_t *tentry; + 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 (running_trap || signal_is_trapped (SIGINT) || signal_is_trapped (SIGCHLD)) +#endif + { + _malloc_block_signals (&set, &oset); + blocked_sigs = 1; + } + + tentry = find_entry (mem, FIND_EXIST); + if (tentry == 0) + { + /* oops. not found. */ +#if 0 + fprintf (stderr, "register_free: %p not in allocation table?\n", mem); +#endif + if (blocked_sigs) + _malloc_unblock_signals (&set, &oset); + return; + } + if (tentry->flags & MT_FREE) + { + /* oops. bad bookkeeping. ignore for now */ + fprintf (stderr, _("register_free: %p already in table as free?\n"), mem); + } + + tentry->flags = MT_FREE; + tentry->func = "free"; + tentry->file = file; + tentry->line = line; + tentry->nfree++; + + if (tentry != &mem_overflow) + table_allocated--; + + if (blocked_sigs) + _malloc_unblock_signals (&set, &oset); +} + +/* If we ever add more flags, this will require changes. */ +static char * +_entry_flags(x) + int x; +{ + if (x & MT_FREE) + return "free"; + else if (x & MT_ALLOC) + return "allocated"; + else + return "undetermined?"; +} + +static void +_register_dump_table(fp) + FILE *fp; +{ + register int i; + mr_table_t entry; + + for (i = 0; i < REG_TABLE_SIZE; i++) + { + entry = mem_table[i]; + if (entry.mem) + fprintf (fp, "%s[%d] %p:%zu:%s:%s:%s:%d:%d:%d\n", + (i == table_bucket_index) ? "*" : "", + i, + entry.mem, entry.size, + _entry_flags(entry.flags), + entry.func ? entry.func : "unknown", + entry.file ? entry.file : "unknown", + entry.line, + entry.nalloc, entry.nfree); + } +} + +void +mregister_dump_table() +{ + _register_dump_table (stderr); +} + +void +mregister_table_init () +{ + memset (mem_table, 0, sizeof(mr_table_t) * REG_TABLE_SIZE); + memset (&mem_overflow, 0, sizeof (mr_table_t)); + table_count = 0; +} + +/* Simple for now */ + +static ma_table_t * +find_location_entry (file, line) + const char *file; + int line; +{ + register ma_table_t *tp, *endp; + + endp = mlocation_table + location_table_count; + for (tp = mlocation_table; tp <= endp; tp++) + { + if (tp->line == line && STREQ (file, tp->file)) + return tp; + } + return (ma_table_t *)NULL; +} + +void +mlocation_register_alloc (file, line) + const char *file; + int line; +{ + ma_table_t *lentry; + const char *nfile; + + if (file == 0) + { + mlocation_table[0].nalloc++; + return; + } + + nfile = strrchr (file, '/'); + if (nfile) + nfile++; + else + nfile = file; + + lentry = find_location_entry (nfile, line); + if (lentry == 0) + { + location_table_index++; + if (location_table_index == REG_TABLE_SIZE) + location_table_index = 1; /* slot 0 reserved */ + lentry = mlocation_table + location_table_index; + lentry->file = nfile; + lentry->line = line; + lentry->nalloc = 1; + if (location_table_count < REG_TABLE_SIZE) + location_table_count++; /* clamp at REG_TABLE_SIZE for now */ + } + else + lentry->nalloc++; +} + +static void +_location_dump_table (fp) + FILE *fp; +{ + register ma_table_t *tp, *endp; + + endp = mlocation_table + location_table_count; + for (tp = mlocation_table; tp < endp; tp++) + fprintf (fp, "%s:%d\t%d\n", tp->file ? tp->file : "unknown", + tp->line ? tp->line : 0, + tp->nalloc); +} + +void +mlocation_dump_table () +{ + _location_dump_table (stderr); +} + +#define LOCROOT "/var/tmp/maltrace/locations." + +void +mlocation_write_table () +{ + FILE *fp; + char defname[sizeof (LOCROOT) + 64]; + + fp = _imalloc_fopen ((char *)NULL, (char *)NULL, LOCROOT, defname, sizeof (defname)); + if (fp == 0) + return; /* XXX - no error message yet */ + _location_dump_table (fp); + fclose (fp); +} + +void +mlocation_table_init () +{ + memset (mlocation_table, 0, sizeof (ma_table_t) * REG_TABLE_SIZE); + mlocation_table[0].file = ""; /* reserve slot 0 for unknown locations */ + mlocation_table[0].line = 0; + mlocation_table[0].nalloc = 0; + location_table_count = 1; +} + +#endif /* MALLOC_REGISTER */ + +int +malloc_set_register(n) + int n; +{ + int old; + + old = malloc_register; + malloc_register = n; + return old; +} diff --git a/bash-5.1/lib/malloc/table.h b/bash-5.1/lib/malloc/table.h new file mode 100644 index 0000000..92866cf --- /dev/null +++ b/bash-5.1/lib/malloc/table.h @@ -0,0 +1,116 @@ +/* table.h - definitions for tables for keeping track of allocated memory */ + +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _MTABLE_H +#define _MTABLE_H + +#include "imalloc.h" + +#ifdef MALLOC_REGISTER + +/* values for flags byte. */ +#define MT_ALLOC 0x01 +#define MT_FREE 0x02 + +/* + * Memory table entry. + * + * MEM is the address of the allocated pointer. + * SIZE is the requested allocation size. + * FLAGS includes either MT_ALLOC (MEM is allocated) or MT_FREE (MEM is + * not allocated). Other flags later. + * FUNC is set to the name of the function doing the allocation (from the + * `tag' argument to register_alloc(). + * FILE and LINE are the filename and line number of the last allocation + * and free (depending on STATUS) of MEM. + * NALLOC and NFREE are incremented on each allocation that returns MEM or + * each free of MEM, respectively (way to keep track of memory reuse + * and how well the free lists are working). + * + */ +typedef struct mr_table { + PTR_T mem; + size_t size; + char flags; + const char *func; + const char *file; + int line; + int nalloc, nfree; +} mr_table_t; + +#define REG_TABLE_SIZE 8192 + +extern mr_table_t *mr_table_entry PARAMS((PTR_T)); +extern void mregister_alloc PARAMS((const char *, PTR_T, size_t, const char *, int)); +extern void mregister_free PARAMS((PTR_T, int, const char *, int)); +extern void mregister_describe_mem (); +extern void mregister_dump_table PARAMS((void)); +extern void mregister_table_init PARAMS((void)); + +typedef struct ma_table { + const char *file; + int line; + int nalloc; +} ma_table_t; + +extern void mlocation_register_alloc PARAMS((const char *, int)); +extern void mlocation_table_init PARAMS((void)); +extern void mlocation_dump_table PARAMS((void)); +extern void mlocation_write_table PARAMS((void)); + +/* NOTE: HASH_MIX taken from dmalloc (http://dmalloc.com) */ + +/* + * void HASH_MIX + * + * DESCRIPTION: + * + * Mix 3 32-bit values reversibly. For every delta with one or two + * bits set, and the deltas of all three high bits or all three low + * bits, whether the original value of a,b,c is almost all zero or is + * uniformly distributed. + * + * If HASH_MIX() is run forward or backward, at least 32 bits in a,b,c + * have at least 1/4 probability of changing. If mix() is run + * forward, every bit of c will change between 1/3 and 2/3 of the + * time. (Well, 22/100 and 78/100 for some 2-bit deltas.) + * + * HASH_MIX() takes 36 machine instructions, but only 18 cycles on a + * superscalar machine (like a Pentium or a Sparc). No faster mixer + * seems to work, that's the result of my brute-force search. There + * were about 2^68 hashes to choose from. I only tested about a + * billion of those. + */ +#define HASH_MIX(a, b, c) \ + do { \ + a -= b; a -= c; a ^= (c >> 13); \ + b -= c; b -= a; b ^= (a << 8); \ + c -= a; c -= b; c ^= (b >> 13); \ + a -= b; a -= c; a ^= (c >> 12); \ + b -= c; b -= a; b ^= (a << 16); \ + c -= a; c -= b; c ^= (b >> 5); \ + a -= b; a -= c; a ^= (c >> 3); \ + b -= c; b -= a; b ^= (a << 10); \ + c -= a; c -= b; c ^= (b >> 15); \ + } while(0) + +#endif /* MALLOC_REGISTER */ + +#endif /* _MTABLE_H */ diff --git a/bash-5.1/lib/malloc/trace.c b/bash-5.1/lib/malloc/trace.c new file mode 100644 index 0000000..391ca9d --- /dev/null +++ b/bash-5.1/lib/malloc/trace.c @@ -0,0 +1,126 @@ +/* trace.c - tracing functions for malloc */ + +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#ifdef HAVE_UNISTD_H +# include +#endif + +#include "imalloc.h" + +extern int malloc_trace; + +static int _mtrace_verbose = 0; + +#ifdef MALLOC_TRACE + +extern FILE *_imalloc_fopen PARAMS((char *, char *, char *, char *, size_t)); + +FILE *_mtrace_fp = NULL; +extern char _malloc_trace_buckets[]; + +void +mtrace_alloc (tag, mem, size, file, line) + const char *tag; + PTR_T mem; + size_t size; + const char *file; + int line; +{ + if (_mtrace_fp == NULL) + _mtrace_fp = stderr; + + if (_mtrace_verbose) + fprintf (_mtrace_fp, "alloc: %s: %p (%zu bytes) from '%s:%d'\n", + tag, mem, size, file ? file : "unknown", line); + else + fprintf (_mtrace_fp, "alloc:%p:%zu:%s:%d\n", + mem, size, file ? file : "unknown", line); +} + +void +mtrace_free (mem, size, file, line) + PTR_T mem; + int size; + const char *file; + int line; +{ + if (_mtrace_fp == NULL) + _mtrace_fp = stderr; + + if (_mtrace_verbose) + fprintf (_mtrace_fp, "free: %p (%d bytes) from '%s:%d'\n", + mem, size, file ? file : "unknown", line); + else + fprintf (_mtrace_fp, "free:%p:%d:%s:%d\n", + mem, size, file ? file : "unknown", line); +} +#endif /* MALLOC_TRACE */ + +int +malloc_set_trace (n) + int n; +{ + int old; + + old = malloc_trace; + malloc_trace = n; + _mtrace_verbose = (n > 1); + return old; +} + +void +malloc_set_tracefp (fp) + FILE *fp; +{ +#ifdef MALLOC_TRACE + _mtrace_fp = fp ? fp : stderr; +#endif +} + +void +malloc_trace_bin (n) + int n; +{ +#ifdef MALLOC_TRACE + _malloc_trace_buckets[n] = 1; +#endif +} + +#define TRACEROOT "/var/tmp/maltrace/trace." + +void +malloc_set_tracefn (s, fn) + char *s; + char *fn; +{ +#ifdef MALLOC_TRACE + FILE *fp; + char defname[sizeof (TRACEROOT) + 64]; + + fp = _imalloc_fopen (s, fn, TRACEROOT, defname, sizeof (defname)); + if (fp) + malloc_set_tracefp (fp); +#endif +} diff --git a/bash-5.1/lib/malloc/watch.c b/bash-5.1/lib/malloc/watch.c new file mode 100644 index 0000000..00c8a82 --- /dev/null +++ b/bash-5.1/lib/malloc/watch.c @@ -0,0 +1,151 @@ +/* watch.c - watchpoint functions for malloc */ + +/* Copyright (C) 2001-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 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include "imalloc.h" + +#ifdef MALLOC_WATCH +#include "watch.h" + +#define WATCH_MAX 32 + +int _malloc_nwatch; +static PTR_T _malloc_watch_list[WATCH_MAX]; + +static void +watch_warn (addr, file, line, type, data) + PTR_T addr; + const char *file; + int line, type; + unsigned long data; +{ + char *tag; + + if (type == W_ALLOC) + tag = "allocated"; + else if (type == W_FREE) + tag = "freed"; + else if (type == W_REALLOC) + tag = "requesting resize"; + else if (type == W_RESIZED) + tag = "just resized"; + else + tag = "bug: unknown operation"; + + fprintf (stderr, "malloc: watch alert: %p %s ", addr, tag); + if (data != (unsigned long)-1) + fprintf (stderr, "(size %lu) ", data); + fprintf (stderr, "from '%s:%d'\n", file ? file : "unknown", line); +} + +void +_malloc_ckwatch (addr, file, line, type, data) + PTR_T addr; + const char *file; + int line, type; + unsigned long data; +{ + register int i; + + for (i = _malloc_nwatch - 1; i >= 0; i--) + { + if (_malloc_watch_list[i] == addr) + { + watch_warn (addr, file, line, type, data); + return; + } + } +} +#endif /* MALLOC_WATCH */ + +PTR_T +malloc_watch (addr) + PTR_T addr; +{ + register int i; + PTR_T ret; + + if (addr == 0) + return addr; + ret = (PTR_T)0; + +#ifdef MALLOC_WATCH + for (i = _malloc_nwatch - 1; i >= 0; i--) + { + if (_malloc_watch_list[i] == addr) + break; + } + if (i < 0) + { + if (_malloc_nwatch == WATCH_MAX) /* full, take out first */ + { + ret = _malloc_watch_list[0]; + _malloc_nwatch--; + for (i = 0; i < _malloc_nwatch; i++) + _malloc_watch_list[i] = _malloc_watch_list[i+1]; + } + _malloc_watch_list[_malloc_nwatch++] = addr; + } +#endif + + return ret; +} + +/* Remove a watchpoint set on ADDR. If ADDR is NULL, remove all + watchpoints. Returns ADDR if everything went OK, NULL if ADDR was + not being watched. */ +PTR_T +malloc_unwatch (addr) + PTR_T addr; +{ +#ifdef MALLOC_WATCH + register int i; + + if (addr == 0) + { + for (i = 0; i < _malloc_nwatch; i++) + _malloc_watch_list[i] = (PTR_T)0; + _malloc_nwatch = 0; + return ((PTR_T)0); + } + else + { + for (i = 0; i < _malloc_nwatch; i++) + { + if (_malloc_watch_list[i] == addr) + break; + } + if (i == _malloc_nwatch) + return ((PTR_T)0); /* not found */ + /* shuffle everything from i+1 to end down 1 */ + _malloc_nwatch--; + for ( ; i < _malloc_nwatch; i++) + _malloc_watch_list[i] = _malloc_watch_list[i+1]; + return addr; + } +#else + return ((PTR_T)0); +#endif +} diff --git a/bash-5.1/lib/malloc/watch.h b/bash-5.1/lib/malloc/watch.h new file mode 100644 index 0000000..2a0f497 --- /dev/null +++ b/bash-5.1/lib/malloc/watch.h @@ -0,0 +1,41 @@ +/* watch.h - definitions for tables for keeping track of allocated memory */ + +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne-Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _MWATCH_H +#define _MWATCH_H + +#include "imalloc.h" + +#ifdef MALLOC_WATCH + +/* `Events' for watchpoints */ + +#define W_ALLOC 0x01 +#define W_FREE 0x02 +#define W_REALLOC 0x04 +#define W_RESIZED 0x08 + +extern int _malloc_nwatch; + +extern void _malloc_ckwatch PARAMS((PTR_T, const char *, int, int, unsigned long)); + +#endif /* MALLOC_WATCH */ + +#endif /* _MWATCH_H */ diff --git a/bash-5.1/lib/malloc/x386-alloca.s b/bash-5.1/lib/malloc/x386-alloca.s new file mode 100644 index 0000000..112d33c --- /dev/null +++ b/bash-5.1/lib/malloc/x386-alloca.s @@ -0,0 +1,63 @@ +;; alloca386.s 1.2 +;; GNU-compatible stack allocation function for Xenix/386. +;; Written by Chip Salzenberg at ComDev. +;; Last modified 90/01/11 +;;> Is your alloca clearly better than the one in i386-alloca.s? I haven't +;;> looked at either. +;; +;;They're different because Xenix/386 has a different assembler. SCO +;;Xenix has the Microsoft C compiler and the Microsoft macro assembler, +;;called "masm". MASM's assembler syntax is quite different from AT&T's +;;in all sorts of ways. Xenix people can't use the AT&T version. +;;-- +;;Chip Salzenberg at ComDev/TCT , + + TITLE $alloca386 + + .386 +DGROUP GROUP CONST, _BSS, _DATA +_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' +_DATA ENDS +_BSS SEGMENT DWORD USE32 PUBLIC 'BSS' +_BSS ENDS +CONST SEGMENT DWORD USE32 PUBLIC 'CONST' +CONST ENDS +_TEXT SEGMENT DWORD USE32 PUBLIC 'CODE' + ASSUME CS: _TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP + + PUBLIC _alloca +_alloca PROC NEAR + +; Get argument. + pop edx ; edx -> return address + pop eax ; eax = amount to allocate + +; Validate allocation amount. + add eax,3 + and eax,not 3 + cmp eax,0 + jg aa_size_ok + mov eax,4 +aa_size_ok: + +; Allocate stack space. + mov ecx,esp ; ecx -> old stack pointer + sub esp,eax ; perform allocation + mov eax,esp ; eax -> new stack pointer + +; Copy the three saved register variables from old stack top to new stack top. +; They may not be there. So we waste twelve bytes. Big fat hairy deal. + push DWORD PTR 8[ecx] + push DWORD PTR 4[ecx] + push DWORD PTR 0[ecx] + +; Push something so the caller can pop it off. + push eax + +; Return to caller. + jmp edx + +_alloca ENDP + +_TEXT ENDS + END diff --git a/bash-5.1/lib/malloc/xleaktrace b/bash-5.1/lib/malloc/xleaktrace new file mode 100755 index 0000000..d7e3cd5 --- /dev/null +++ b/bash-5.1/lib/malloc/xleaktrace @@ -0,0 +1,47 @@ +#! /usr/bin/awk -f +# +# xleaktrace - print unfreed memory using input generated by compact malloc +# tracing (malloc_set_trace(1)) +# +# NOTE: we ignore `realloc' tags because they're just extra information +# +# Copyright (c) 2001 Chester Ramey +# Permission is hereby granted to deal in this Software without restriction. +# THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. +# +# Chet Ramey +# chet@po.cwru.edu +# +BEGIN { + FS=":"; +} + +$1 == "alloc" { + alloc[$2] = 1; + + size[$2] = $3; + file[$2] = $4; + line[$2] = $5; + +# printf "allocated: %s %d %d %s %d\n", $2, alloc[$2], size[$2], file[$2], line[$2]; + } + +$1 == "free" { + if ($2 in alloc) { + alloc[$2] = 0; +# printf "freed: %s %d\n", $2, alloc[$2]; + } else + printf "freeing unallocated pointer: %s\n", $2; + + } + +END { + printf "unfreed memory\n"; + for (ptr in alloc) { + if (alloc[ptr] == 1) { + printf "%s (%d) from %s:%d\n", ptr, size[ptr], file[ptr], line[ptr]; + } + } +} + + diff --git a/bash-5.1/lib/malloc/xmalloc.c b/bash-5.1/lib/malloc/xmalloc.c new file mode 100644 index 0000000..f6dec67 --- /dev/null +++ b/bash-5.1/lib/malloc/xmalloc.c @@ -0,0 +1,94 @@ +/* xmalloc.c -- safe versions of malloc and realloc */ + +/* Copyright (C) 1991-2003 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 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 . +*/ + +#if defined (HAVE_CONFIG_H) +#include +#endif + +#include + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +/* Generic pointer type. */ +#ifndef PTR_T + +#if defined (__STDC__) +# define PTR_T void * +#else +# define PTR_T char * +#endif + +#endif /* PTR_T */ + +/* **************************************************************** */ +/* */ +/* Memory Allocation and Deallocation. */ +/* */ +/* **************************************************************** */ + +static void +memory_error_and_abort (fname) + char *fname; +{ + fprintf (stderr, "%s: out of virtual memory\n", fname); + exit (2); +} + +/* 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) + memory_error_and_abort ("xmalloc"); + 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) + memory_error_and_abort ("xrealloc"); + return (temp); +} + +void +xfree (string) + PTR_T string; +{ + if (string) + free (string); +} diff --git a/bash-5.1/lib/readline/COPYING b/bash-5.1/lib/readline/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/bash-5.1/lib/readline/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + 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 +state 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) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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 Lesser General +Public License instead of this License. But first, please read +. diff --git a/bash-5.1/lib/readline/ChangeLog b/bash-5.1/lib/readline/ChangeLog new file mode 100644 index 0000000..1cf0c00 --- /dev/null +++ b/bash-5.1/lib/readline/ChangeLog @@ -0,0 +1,403 @@ +Tue Mar 23 14:36:51 1993 Brian Fox (bfox@eos.crseo.ucsb.edu) + + * readline.c (rl_copy): Changed name to rl_copy_text. + +Mon Mar 22 19:16:05 1993 Brian Fox (bfox@eos.crseo.ucsb.edu) + + * dispose_cmd.c, several other files. Declare dispose_xxx () as + "void". + + * builtins/hashcom.h: Make declarations of hashed_filenames be + "extern" to keep the SGI compiler happy. + + * readline.c (rl_initialize_everything): Assign values to + out_stream and in_stream immediately, since + output_character_function () can be called before + readline_internal () is called. + +Tue Dec 8 09:30:56 1992 Brian Fox (bfox@cubit) + + * readline.c (rl_init_terminal) Set PC from BC, not from *buffer. + +Mon Nov 30 09:35:47 1992 Brian Fox (bfox@cubit) + + * readline.c (invoking_keyseqs_in_map, rl_parse_and_bind) Allow + backslash to quote characters, such as backslash, double quote, + and space. Backslash quotes all character indiscriminately. + + * funmap.c (vi_keymap) Fix type in "vi-replace" declaration. + +Fri Nov 20 10:55:05 1992 Brian Fox (bfox@cubit) + + * readline.c (init_terminal_io, rl_prep_terminal): FINALLY! + Declare and use termcap variable `ospeed' when setting up terminal + parameters. + +Thu Oct 8 08:53:07 1992 Brian J. Fox (bfox@helios) + + * Makefile, this directory: Include (as links to the canonical + sources), tilde.c, tilde.h, posixstat.h and xmalloc.c. + +Tue Sep 29 13:07:21 1992 Brian J. Fox (bfox@helios) + + * readline.c (init_terminal_io) Don't set arrow keys if the key + sequences that represent them are already set. + + * readline.c (rl_function_of_keyseq) New function returns the first + function (or macro) found while searching a key sequence. + +Mon Sep 28 00:34:04 1992 Brian J. Fox (bfox@helios) + + * readline.c (LibraryVersion) New static char * contains current + version number. Version is at 2.0. + + * readline.c (rl_complete_internal): Incorporated clean changes + from gilmore (gnu@cygnus.com) to support quoted substrings within + completion functions. + + * readline.c (many locations) Added support for the _GO32_, + whatever that is. Patches supplied by Cygnus, typed in by hand, + with cleanups. + +Sun Aug 16 12:46:24 1992 Brian Fox (bfox@cubit) + + * readline.c (init_terminal_io): Find out the values of the keypad + arrows and bind them to appropriate RL functions if present. + +Mon Aug 10 18:13:24 1992 Brian Fox (bfox@cubit) + + * history.c (stifle_history): A negative argument to stifle + becomes zero. + +Tue Jul 28 09:28:41 1992 Brian Fox (bfox@cubit) + + * readline.c (rl_variable_bind): New local structure describes + booleans by name and address; code in rl_variable_bind () looks at + structure to set simple variables. + + * parens.c (rl_insert_close): New variable rl_blink_matching_paren + is non-zero if we want to blink the matching open when a close is + inserted. If FD_SET is defined, rl_blink_matching_paren defaults + to 1, else 0. If FD_SET is not defined, and + rl_blink_matching_paren is non-zero, the close character(s) are/is + simply inserted. + +Wed Jul 22 20:03:59 1992 Brian Fox (bfox@cubit) + + * history.c, readline.c, vi_mode.c: Cause the functions strchr () + and strrchr () to be used instead of index () and rindex () + throughout the source. + +Mon Jul 13 11:34:07 1992 Brian Fox (bfox@cubit) + + * readline.c: (rl_variable_bind) New variable "meta-flag" if "on" + means force the use of the 8th bit as Meta bit. Internal variable + is called meta_flag. + +Thu Jul 9 10:37:56 1992 Brian Fox (bfox@cubit) + + * history.c (get_history_event) Change INDEX to LOCAL_INDEX. If + compiling for the shell, allow shell metacharacters to separate + history tokens as they would for shell tokens. + +Sat Jul 4 19:29:12 1992 Brian Fox (bfox@cubit) + + * vi_keymap.c: According to Posix, TAB self-inserts instead of + doing completion. + + * vi_mode.c: (rl_vi_yank_arg) Enter VI insert mode after yanking + an arg from the previous line. + + * search.c: New file takes over vi style searching and implements + non-incremental searching the history. + + Makefile: Add search.c and search.o. + + funmap.c: Add names for non-incremental-forward-search-history and + non-incremental-reverse-search-history. + + readline.h: Add extern definitions for non-incremental searching. + + vi_mode.c: Remove old search code; add calls to code in search.c. + +Fri Jul 3 10:36:33 1992 Brian Fox (bfox@cubit) + + * readline.c (rl_delete_horizontal_space); New function deletes + all whitespace surrounding point. + + funmap.c: Add "delete-horizontal-space". + emacs_keymap.c: Put rl_delete_horizontal_space () on M-\. + + * readline.c (rl_set_signals, rl_clear_signals); New function + rl_set_sighandler () is either defined in a Posix way (if + HAVE_POSIX_SIGNALS is defined) or in a BSD way. Function is + called from rl_set_signals () and rl_clear_signals (). + +Fri May 8 12:50:15 1992 Brian Fox (bfox@cubit) + + * readline.c: (readline_default_bindings) Do comparisons with + _POSIX_VDISABLE casted to `unsigned char'. Change tty characters + to be unsigned char. + +Thu Apr 30 12:36:35 1992 Brian Fox (bfox@cubit) + + * readline.c: (rl_getc) Handle "read would block" error on + non-blocking IO streams. + + * readline.c: (rl_signal_handler): Unblock only the signal that we + have caught, not all signals. + +Sun Feb 23 03:33:09 1992 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: Many functions. Use only the macros META_CHAR and + UNMETA to deal with meta characters. Prior to this, we used + numeric values and tests. + + * readline.c (rl_complete_internal) Report exactly the number of + possible completions, not the number + 1. + + * vi_mode.c (rl_do_move) Do not change the cursor position when + using `cw' or `cW'. + + * vi_mode.c (rl_vi_complete) Enter insert mode after completing + with `*' or `\'. + +Fri Feb 21 05:58:18 1992 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c (rl_dispatch) Increment rl_key_sequence_length for + meta characters that map onto ESC map. + +Mon Feb 10 01:41:35 1992 Brian Fox (bfox at gnuwest.fsf.org) + + * history.c (history_do_write) Build a buffer of all of the lines + to write and write them in one fell swoop (lower overhead than + calling write () for each line). Suggested by Peter Ho. + + * readline.c: Include hbullx20 as well as hpux for determining + USGr3ness. + + * readline.c (rl_unix_word_rubout) As per the "Now REMEMBER" + comment, pass arguments to rl_kill_text () in the correct order to + preserve prepending and appending of killed text. + + * readline.c (rl_search_history) malloc (), realloc (), and free + () SEARCH_STRING so that there are no static limits on searching. + + * vi_mode.c (rl_vi_subst) Don't forget to end the undo group. + +Fri Jan 31 14:51:02 1992 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c (rl_signal_handler): Zero the current history entry's + pointer after freeing the undo_list when SIGINT received. + Reformat a couple of functions. + +Sat Jan 25 13:47:35 1992 Brian Fox (bfox at bears) + + * readline.c (parser_if): free () TNAME after use. + +Tue Jan 21 01:01:35 1992 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c (rl_redisplay) and (rl_character_len): Display + Control characters as "^c" and Meta characters as "\234", instead + of "C-C" and "M-C". + +Sun Dec 29 10:59:00 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c (init_terminal_io) Default to environment variables + LINES and COLUMNS before termcap entry values. If all else fails, + then assume 80x24 terminal. + +Sat Dec 28 16:33:11 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: If this machine is USG and it is hpux, then define + USGr3. + + * history.c: Cosmetic fixes. + +Thu Nov 21 00:10:12 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * vi_mode.c: (rl_do_move) Place cursor at end of line, never at + next to last character. + +Thu Nov 14 05:08:01 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * history.c (get_history_event) Non-anchored searches can have a + return index of greater than zero from get_history_event (). + +Fri Nov 1 07:02:13 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c (rl_translate_keyseq) Make C-? translate to RUBOUT + unconditionally. + +Mon Oct 28 11:34:52 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c; Use Posix directory routines and macros. + + * funmap.c; Add entry for call-last-kbd-macro. + + * readline.c (rl_prep_term); Use system EOF character on POSIX + systems also. + +Thu Oct 3 16:19:53 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c; Make a distinction between having a TERMIOS tty + driver, and having POSIX signal handling. You might one without + the other. New defines used HAVE_POSIX_SIGNALS, and + TERMIOS_TTY_DRIVER. + +Tue Jul 30 22:37:26 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: rl_getc () If a call to read () returns without an + error, but with zero characters, the file is empty, so return EOF. + +Thu Jul 11 20:58:38 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: (rl_get_next_history, rl_get_previous_history) + Reallocate the buffer space if the line being moved to is longer + the the current space allocated. Amazing that no one has found + this bug until now. + +Sun Jul 7 02:37:05 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c:(rl_parse_and_bind) Allow leading whitespace. + Make sure TERMIO and TERMIOS systems treat CR and NL + disctinctly. + +Tue Jun 25 04:09:27 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: Rework parsing conditionals to pay attention to the + prior states of the conditional stack. This makes $if statements + work correctly. + +Mon Jun 24 20:45:59 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: support for displaying key binding information + includes the functions rl_list_funmap_names (), + invoking_keyseqs_in_map (), rl_invoking_keyseqs (), + rl_dump_functions (), and rl_function_dumper (). + + funmap.c: support for same includes rl_funmap_names (). + + readline.c, funmap.c: no longer define STATIC_MALLOC. However, + update both version of xrealloc () to handle a null pointer. + +Thu Apr 25 12:03:49 1991 Brian Fox (bfox at gnuwest.fsf.org) + + * vi_mode.c (rl_vi_fword, fWord, etc. All functions use + the macro `isident()'. Fixed movement bug which prevents + continious movement through the text. + +Fri Jul 27 16:47:01 1990 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c (parser_if) Allow "$if term=foo" construct. + +Wed May 23 16:10:33 1990 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c (rl_dispatch) Correctly remember the last command + executed. Fixed typo in username_completion_function (). + +Mon Apr 9 19:55:48 1990 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: username_completion_function (); For text passed in + with a leading `~', remember that this could be a filename (after + it is completed). + +Thu Apr 5 13:44:24 1990 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: rl_search_history (): Correctly handle case of an + unfound search string, but a graceful exit (as with ESC). + + * readline.c: rl_restart_output (); The Apollo passes the address + of the file descriptor to TIOCSTART, not the descriptor itself. + +Tue Mar 20 05:38:55 1990 Brian Fox (bfox at gnuwest.fsf.org) + + * readline.c: rl_complete (); second call in a row causes possible + completions to be listed. + + * readline.c: rl_redisplay (), added prompt_this_line variable + which is the first character character following \n in prompt. + +Sun Mar 11 04:32:03 1990 Brian Fox (bfox at gnuwest.fsf.org) + + * Signals are now supposedly handled inside of SYSV compilation. + +Wed Jan 17 19:24:09 1990 Brian Fox (bfox at sbphy.ucsb.edu) + + * history.c: history_expand (); fixed overwriting memory error, + added needed argument to call to get_history_event (). + +Thu Jan 11 10:54:04 1990 Brian Fox (bfox at sbphy.ucsb.edu) + + * readline.c: added mark_modified_lines to control the + display of an asterisk on modified history lines. Also + added a user variable called mark-modified-lines to the + `set' command. + +Thu Jan 4 10:38:05 1990 Brian Fox (bfox at sbphy.ucsb.edu) + + * readline.c: start_insert (). Only use IC if we don't have an im + capability. + +Fri Sep 8 09:00:45 1989 Brian Fox (bfox at aurel) + + * readline.c: rl_prep_terminal (). Only turn on 8th bit + as meta-bit iff the terminal is not using parity. + +Sun Sep 3 08:57:40 1989 Brian Fox (bfox at aurel) + + * readline.c: start_insert (). Uses multiple + insertion call in cases where that makes sense. + + rl_insert (). Read type-ahead buffer for additional + keys that are bound to rl_insert, and insert them + all at once. Make insertion of single keys given + with an argument much more efficient. + +Tue Aug 8 18:13:57 1989 Brian Fox (bfox at aurel) + + * readline.c: Changed handling of EOF. readline () returns + (char *)EOF or consed string. The EOF character is read from the + tty, or if the tty doesn't have one, defaults to C-d. + + * readline.c: Added support for event driven programs. + rl_event_hook is the address of a function you want called + while Readline is waiting for input. + + * readline.c: Cleanup time. Functions without type declarations + do not use return with a value. + + * history.c: history_expand () has new variable which is the + characters to ignore immediately following history_expansion_char. + +Sun Jul 16 08:14:00 1989 Brian Fox (bfox at aurel) + + * rl_prep_terminal () + BSD version turns off C-s, C-q, C-y, C-v. + + * readline.c -- rl_prep_terminal () + SYSV version hacks readline_echoing_p. + BSD version turns on passing of the 8th bit for the duration + of reading the line. + +Tue Jul 11 06:25:01 1989 Brian Fox (bfox at aurel) + + * readline.c: new variable rl_tilde_expander. + If non-null, this contains the address of a function to call if + the standard meaning for expanding a tilde fails. The function is + called with the text sans tilde (as in "foo"), and returns a + malloc()'ed string which is the expansion, or a NULL pointer if + there is no expansion. + + * readline.h - new file chardefs.h + Separates things that only readline.c needs from the standard + header file publishing interesting things about readline. + + * readline.c: + readline_default_bindings () now looks at terminal chararacters + and binds those as well. + +Wed Jun 28 20:20:51 1989 Brian Fox (bfox at aurel) + + * Made readline and history into independent libraries. + diff --git a/bash-5.1/lib/readline/Makefile.in b/bash-5.1/lib/readline/Makefile.in new file mode 100644 index 0000000..b2358c6 --- /dev/null +++ b/bash-5.1/lib/readline/Makefile.in @@ -0,0 +1,396 @@ +## -*- text -*- ############################################################# +# # +# Makefile for the Bash versions of the GNU Readline and History Libraries. # +# # +############################################################################# + +# Copyright (C) 1994-2012 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# 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 . + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_VERSION = @PACKAGE_VERSION@ + +srcdir = @srcdir@ +VPATH = @srcdir@ +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ + +datarootdir = @datarootdir@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ + +CC = @CC@ +RANLIB = @RANLIB@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +RM = rm -f +CP = cp +MV = mv + +SHELL = @MAKE_SHELL@ + +# Programs to make tags files. +ETAGS = etags -tw +CTAGS = ctags -tw + +DEBUG = @DEBUG@ + +CFLAGS = @CFLAGS@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ + +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +INCLUDES = -I. -I$(BUILD_DIR) -I$(topdir) -I$(topdir)/lib + +CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(APP_CFLAGS) $(CPPFLAGS) ${INCLUDES} \ + $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS} + +.c.o: + ${RM} $@ + $(CC) -c $(CCFLAGS) $< + +# 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)/terminal.c $(srcdir)/xmalloc.c \ + $(srcdir)/history.c $(srcdir)/histsearch.c $(srcdir)/histexpand.c \ + $(srcdir)/histfile.c $(srcdir)/nls.c $(srcdir)/search.c \ + $(srcdir)/shell.c $(srcdir)/tilde.c $(srcdir)/savestring.c \ + $(srcdir)/text.c $(srcdir)/misc.c $(srcdir)/compat.c \ + $(srcdir)/colors.c $(srcdir)/parse-colors.c \ + $(srcdir)/mbutil.c $(srcdir)/xfree.c + +# The header files for this library. +HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \ + posixstat.h posixdir.h posixjmp.h tilde.h rlconf.h rltty.h \ + ansi_stdlib.h rlstdc.h tcap.h xmalloc.h rlprivate.h rlshell.h \ + rltypedefs.h rlmbutil.h colors.h parse-colors.h + +HISTOBJ = history.o histexpand.o histfile.o histsearch.o shell.o savestring.o \ + mbutil.o +TILDEOBJ = tilde.o +COLORSOBJ = colors.o parse-colors.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 terminal.o \ + text.o nls.o misc.o $(HISTOBJ) $(TILDEOBJ) $(COLORSOBJ) \ + xmalloc.o xfree.o compat.o + +# 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 \ + rlstdc.h rlconf.h rltypedefs.h + +########################################################################## + +all: libreadline.a libhistory.a + +libreadline.a: $(OBJECTS) + $(RM) $@ + $(AR) $(ARFLAGS) $@ $(OBJECTS) + -test -n "$(RANLIB)" && $(RANLIB) $@ + +libhistory.a: $(HISTOBJ) xmalloc.o xfree.o + $(RM) $@ + $(AR) $(ARFLAGS) $@ $(HISTOBJ) xmalloc.o xfree.o + -test -n "$(RANLIB)" && $(RANLIB) $@ + +documentation: force + test -d doc || mkdir doc + -( cd doc && $(MAKE) $(MFLAGS) ) + +# Since tilde.c is shared between readline and bash, make sure we compile +# it with the right flags when it's built as part of readline +tilde.o: tilde.c + rm -f $@ + $(CC) $(CCFLAGS) -DREADLINE_LIBRARY -c $(srcdir)/tilde.c + +force: + +install: + @echo "This version of the readline library should not be installed." + +uninstall: + @echo "This version of the readline library should not be installed." + +TAGS: force + $(ETAGS) $(CSOURCES) $(HSOURCES) + +tags: force + $(CTAGS) $(CSOURCES) $(HSOURCES) + +clean: force + $(RM) $(OBJECTS) *.a + -( cd doc && $(MAKE) $(MFLAGS) $@ ) + +mostlyclean: clean + -( cd doc && $(MAKE) $(MFLAGS) $@ ) + +distclean maintainer-clean: clean + -( cd doc && $(MAKE) $(MFLAGS) $@ ) + $(RM) Makefile + $(RM) TAGS tags + +# Dependencies +bind.o: ansi_stdlib.h posixstat.h +bind.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +bind.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +bind.o: history.h rlstdc.h +callback.o: rlconf.h ansi_stdlib.h +callback.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +callback.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h +compat.o: ${BUILD_DIR}/config.h +compat.o: rlstdc.h rltypedefs.h +complete.o: ansi_stdlib.h posixdir.h posixstat.h +complete.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +complete.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h +complete.o: colors.h +display.o: ansi_stdlib.h posixstat.h +display.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +display.o: tcap.h +display.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +display.o: history.h rlstdc.h +funmap.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +funmap.o: rlconf.h ansi_stdlib.h rlstdc.h +funmap.o: ${BUILD_DIR}/config.h +histexpand.o: ansi_stdlib.h +histexpand.o: history.h histlib.h rlstdc.h +histexpand.o: ${BUILD_DIR}/config.h +histfile.o: ansi_stdlib.h +histfile.o: history.h histlib.h rlstdc.h +histfile.o: ${BUILD_DIR}/config.h +history.o: ansi_stdlib.h +history.o: history.h histlib.h rlstdc.h +history.o: ${BUILD_DIR}/config.h +histsearch.o: ansi_stdlib.h +histsearch.o: history.h histlib.h rlstdc.h +histsearch.o: ${BUILD_DIR}/config.h +input.o: ansi_stdlib.h +input.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +input.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h +isearch.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +isearch.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +isearch.o: ansi_stdlib.h history.h rlstdc.h +keymaps.o: emacs_keymap.c vi_keymap.c +keymaps.o: keymaps.h rltypedefs.h chardefs.h rlconf.h ansi_stdlib.h +keymaps.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +keymaps.o: ${BUILD_DIR}/config.h rlstdc.h +kill.o: ansi_stdlib.h +kill.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +kill.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +kill.o: history.h rlstdc.h +macro.o: ansi_stdlib.h +macro.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +macro.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +macro.o: history.h rlstdc.h +mbutil.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h rlmbutil.h +mbutil.o: readline.h keymaps.h rltypedefs.h chardefs.h rlstdc.h +misc.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +misc.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +misc.o: history.h rlstdc.h ansi_stdlib.h +nls.o: ansi_stdlib.h +nls.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +nls.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +nls.o: history.h rlstdc.h +parens.o: rlconf.h +parens.o: ${BUILD_DIR}/config.h +parens.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h +readline.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +readline.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +readline.o: history.h rlstdc.h +readline.o: posixstat.h ansi_stdlib.h posixjmp.h +rltty.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +rltty.o: rltty.h +rltty.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h +savestring.o: ${BUILD_DIR}/config.h +search.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +search.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +search.o: ansi_stdlib.h history.h rlstdc.h +shell.o: ${BUILD_DIR}/config.h ansi_stdlib.h +signals.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +signals.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +signals.o: history.h rlstdc.h +terminal.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +terminal.o: tcap.h +terminal.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +terminal.o: history.h rlstdc.h +text.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +text.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +text.o: history.h rlstdc.h ansi_stdlib.h +rltty.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +tilde.o: ansi_stdlib.h +tilde.o: ${BUILD_DIR}/config.h +tilde.o: tilde.h +undo.o: ansi_stdlib.h +undo.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +undo.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +undo.o: history.h rlstdc.h xmalloc.h +util.o: posixjmp.h ansi_stdlib.h +util.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +util.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h +vi_mode.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h +vi_mode.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h +vi_mode.o: history.h ansi_stdlib.h rlstdc.h +xmalloc.o: ${BUILD_DIR}/config.h ansi_stdlib.h +xfree.o: ${BUILD_DIR}/config.h ansi_stdlib.h + +colors.o: ${BUILD_DIR}/config.h colors.h +colors.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h +colors.o: rlconf.h +colors.o: ansi_stdlib.h posixstat.h +parse-colors.o: ${BUILD_DIR}/config.h colors.h parse-colors.h +parse-colors.o: rldefs.h rlconf.h +parse-colors.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h + +bind.o: rlshell.h +histfile.o: rlshell.h +nls.o: rlshell.h +readline.o: rlshell.h +shell.o: rlshell.h +terminal.o: rlshell.h +histexpand.o: rlshell.h + +bind.o: rlprivate.h +callback.o: rlprivate.h +complete.o: rlprivate.h +display.o: rlprivate.h +input.o: rlprivate.h +isearch.o: rlprivate.h +kill.o: rlprivate.h +macro.o: rlprivate.h +mbutil.o: rlprivate.h +misc.o: rlprivate.h +nls.o: rlprivate.h +parens.o: rlprivate.h +readline.o: rlprivate.h +rltty.o: rlprivate.h +search.o: rlprivate.h +signals.o: rlprivate.h +terminal.o: rlprivate.h +text.o: rlprivate.h +undo.o: rlprivate.h +util.o: rlprivate.h +vi_mode.o: rlprivate.h +colors.o: rlprivate.h +parse-colors.o: rlprivate.h + +bind.o: xmalloc.h +complete.o: xmalloc.h +display.o: xmalloc.h +funmap.o: xmalloc.h +histexpand.o: xmalloc.h +histfile.o: xmalloc.h +history.o: xmalloc.h +input.o: xmalloc.h +isearch.o: xmalloc.h +keymaps.o: xmalloc.h +kill.o: xmalloc.h +macro.o: xmalloc.h +mbutil.o: xmalloc.h +misc.o: xmalloc.h +readline.o: xmalloc.h +savestring.o: xmalloc.h +search.o: xmalloc.h +shell.o: xmalloc.h +terminal.o: xmalloc.h +text.o: xmalloc.h +tilde.o: xmalloc.h +undo.o: xmalloc.h +util.o: xmalloc.h +vi_mode.o: xmalloc.h +xfree.o: xmalloc.h +xmalloc.o: xmalloc.h +colors.o: xmalloc.h +parse-colors.o: xmalloc.h + +complete.o: rlmbutil.h +display.o: rlmbutil.h +histexpand.o: rlmbutil.h +input.o: rlmbutil.h +isearch.o: rlmbutil.h +mbutil.o: rlmbutil.h +misc.o: rlmbutil.h +readline.o: rlmbutil.h +search.o: rlmbutil.h +text.o: rlmbutil.h +vi_mode.o: rlmbutil.h +colors.o: rlmbutil.h +parse-colors.o: rlmbutil.h + +# Rules for deficient makes, like SunOS and Solaris +bind.o: bind.c +callback.o: callback.c +compat.o: compat.c +complete.o: complete.c +display.o: display.c +funmap.o: funmap.c +input.o: input.c +isearch.o: isearch.c +keymaps.o: keymaps.c emacs_keymap.c vi_keymap.c +kill.o: kill.c +macro.o: macro.c +mbutil.o: mbutil.c +misc.o: misc.c +nls.o: nls.c +parens.o: parens.c +readline.o: readline.c +rltty.o: rltty.c +savestring.o: savestring.c +search.o: search.c +shell.o: shell.c +signals.o: signals.c +terminal.o: terminal.c +text.o: text.c +tilde.o: tilde.c +undo.o: undo.c +util.o: util.c +vi_mode.o: vi_mode.c +xfree.o: xfree.c +xmalloc.o: xmalloc.c + +colors.o: colors.c +parse-colors.o: parse-colors.c + +histexpand.o: histexpand.c +histfile.o: histfile.c +history.o: history.c +histsearch.o: histsearch.c diff --git a/bash-5.1/lib/readline/README b/bash-5.1/lib/readline/README new file mode 100644 index 0000000..131471c --- /dev/null +++ b/bash-5.1/lib/readline/README @@ -0,0 +1,6 @@ +This is the distribution of the Gnu Readline library. See the file +STANDALONE for a description of the #defines that can be passed via +the makefile to build readline on different systems. + +The file rlconf.h contains defines that enable and disable certain +readline features. diff --git a/bash-5.1/lib/readline/STANDALONE b/bash-5.1/lib/readline/STANDALONE new file mode 100644 index 0000000..c6b5cbd --- /dev/null +++ b/bash-5.1/lib/readline/STANDALONE @@ -0,0 +1,2 @@ +This is not to be built as a standalone library to be installed in some +public place; get the full readline distribution instead. diff --git a/bash-5.1/lib/readline/ansi_stdlib.h b/bash-5.1/lib/readline/ansi_stdlib.h new file mode 100644 index 0000000..7dc2ee0 --- /dev/null +++ b/bash-5.1/lib/readline/ansi_stdlib.h @@ -0,0 +1,54 @@ +/* ansi_stdlib.h -- An ANSI Standard stdlib.h. */ +/* A minimal stdlib.h containing extern declarations for those functions + that bash uses. */ + +/* 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 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 . +*/ + +#if !defined (_STDLIB_H_) +#define _STDLIB_H_ 1 + +/* String conversion functions. */ +extern int atoi (); + +extern double atof (); +extern double strtod (); + +/* Memory allocation functions. */ +/* Generic pointer type. */ +#ifndef PTR_T + +#if defined (__STDC__) +# define PTR_T void * +#else +# define PTR_T char * +#endif + +#endif /* PTR_T */ + +extern PTR_T malloc (); +extern PTR_T realloc (); +extern void free (); + +/* Other miscellaneous functions. */ +extern void abort (); +extern void exit (); +extern char *getenv (); +extern void qsort (); + +#endif /* _STDLIB_H */ diff --git a/bash-5.1/lib/readline/bind.c b/bash-5.1/lib/readline/bind.c new file mode 100644 index 0000000..87596dc --- /dev/null +++ b/bash-5.1/lib/readline/bind.c @@ -0,0 +1,2970 @@ +/* bind.c -- key binding and startup file support for the readline library. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (__TANDEM) +# include +#endif + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#include +#include +#if defined (HAVE_SYS_FILE_H) +# include +#endif /* HAVE_SYS_FILE_H */ + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#include "posixstat.h" + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" + +/* Some standard library routines. */ +#include "readline.h" +#include "history.h" + +#include "rlprivate.h" +#include "rlshell.h" +#include "xmalloc.h" + +#if !defined (strchr) && !defined (__STDC__) +extern char *strchr (), *strrchr (); +#endif /* !strchr && !__STDC__ */ + +/* Variables exported by this file. */ +Keymap rl_binding_keymap; + +static int _rl_skip_to_delim PARAMS((char *, int, int)); + +#if defined (USE_VARARGS) && defined (PREFER_STDARG) +static void _rl_init_file_error (const char *, ...) __attribute__((__format__ (printf, 1, 2))); +#else +static void _rl_init_file_error (); +#endif + +static rl_command_func_t *_rl_function_of_keyseq_internal PARAMS((const char *, size_t, Keymap, int *)); + +static char *_rl_read_file PARAMS((char *, size_t *)); +static int _rl_read_init_file PARAMS((const char *, int)); +static int glean_key_from_name PARAMS((char *)); + +static int find_boolean_var PARAMS((const char *)); +static int find_string_var PARAMS((const char *)); + +static const char *boolean_varname PARAMS((int)); +static const char *string_varname PARAMS((int)); + +static char *_rl_get_string_variable_value PARAMS((const char *)); +static int substring_member_of_array PARAMS((const char *, const char * const *)); + +static int _rl_get_keymap_by_name PARAMS((const char *)); +static int _rl_get_keymap_by_map PARAMS((Keymap)); + +static int currently_reading_init_file; + +/* used only in this file */ +static int _rl_prefer_visible_bell = 1; + +#define OP_EQ 1 +#define OP_NE 2 +#define OP_GT 3 +#define OP_GE 4 +#define OP_LT 5 +#define OP_LE 6 + +#define OPSTART(c) ((c) == '=' || (c) == '!' || (c) == '<' || (c) == '>') +#define CMPSTART(c) ((c) == '=' || (c) == '!') + +/* **************************************************************** */ +/* */ +/* Binding keys */ +/* */ +/* **************************************************************** */ + +/* rl_add_defun (char *name, rl_command_func_t *function, int key) + Add NAME to the list of named functions. Make FUNCTION be the function + that gets called. If KEY is not -1, then bind it. */ +int +rl_add_defun (const char *name, rl_command_func_t *function, int key) +{ + if (key != -1) + rl_bind_key (key, function); + rl_add_funmap_entry (name, function); + return 0; +} + +/* Bind KEY to FUNCTION. Returns non-zero if KEY is out of range. */ +int +rl_bind_key (int key, rl_command_func_t *function) +{ + char keyseq[4]; + int l; + + if (key < 0 || key > largest_char) + return (key); + + /* Want to make this a multi-character key sequence with an ESC prefix */ + if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii) + { + if (_rl_keymap[ESC].type == ISKMAP) + { + Keymap escmap; + + escmap = FUNCTION_TO_KEYMAP (_rl_keymap, ESC); + key = UNMETA (key); + escmap[key].type = ISFUNC; + escmap[key].function = function; + return (0); + } + + /* Otherwise, let's just let rl_generic_bind handle the key sequence. + We start it off with ESC here and let the code below add the rest + of the sequence. */ + keyseq[0] = ESC; + l = 1; + key = UNMETA(key); + goto bind_keyseq; + } + + /* If it's bound to a function or macro, just overwrite. Otherwise we have + to treat it as a key sequence so rl_generic_bind handles shadow keymaps + for us. If we are binding '\' or \C-@ (NUL) make sure to escape it so + it makes it through the call to rl_translate_keyseq. */ + if (_rl_keymap[key].type != ISKMAP) + { + if (_rl_keymap[key].type == ISMACR) + xfree ((char *)_rl_keymap[key].function); + _rl_keymap[key].type = ISFUNC; + _rl_keymap[key].function = function; + } + else + { + l = 0; +bind_keyseq: + if (key == '\\') + { + keyseq[l++] = '\\'; + keyseq[l++] = '\\'; + } + else if (key == '\0') + { + keyseq[l++] = '\\'; + keyseq[l++] = '0'; + } + else + keyseq[l++] = key; + keyseq[l] = '\0'; + rl_bind_keyseq (keyseq, function); + } + rl_binding_keymap = _rl_keymap; + return (0); +} + +/* Bind KEY to FUNCTION in MAP. Returns non-zero in case of invalid + KEY. */ +int +rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map) +{ + int result; + Keymap oldmap; + + oldmap = _rl_keymap; + _rl_keymap = map; + result = rl_bind_key (key, function); + _rl_keymap = oldmap; + return (result); +} + +/* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right + now, this is always used to attempt to bind the arrow keys. */ +int +rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *default_func, Keymap kmap) +{ + char *keyseq; + + keyseq = rl_untranslate_keyseq ((unsigned char)key); + return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap)); +} + +int +rl_bind_key_if_unbound (int key, rl_command_func_t *default_func) +{ + char *keyseq; + + keyseq = rl_untranslate_keyseq ((unsigned char)key); + return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap)); +} + +/* Make KEY do nothing in the currently selected keymap. + Returns non-zero in case of error. This is not the same as self-insert; + this makes it a dead key. */ +int +rl_unbind_key (int key) +{ + return (rl_bind_key (key, (rl_command_func_t *)NULL)); +} + +/* Make KEY do nothing in MAP. Returns non-zero in case of error. */ +int +rl_unbind_key_in_map (int key, Keymap map) +{ + return (rl_bind_key_in_map (key, (rl_command_func_t *)NULL, map)); +} + +/* Unbind all keys bound to FUNCTION in MAP. */ +int +rl_unbind_function_in_map (rl_command_func_t *func, Keymap map) +{ + register int i, rval; + + for (i = rval = 0; i < KEYMAP_SIZE; i++) + { + if (map[i].type == ISFUNC && map[i].function == func) + { + map[i].function = (rl_command_func_t *)NULL; + rval = 1; + } + else if (map[i].type == ISKMAP) /* TAG:readline-8.1 */ + { + int r; + r = rl_unbind_function_in_map (func, FUNCTION_TO_KEYMAP (map, i)); + if (r == 1) + rval = 1; + } + } + return rval; +} + +/* Unbind all keys bound to COMMAND, which is a bindable command name, in MAP */ +int +rl_unbind_command_in_map (const char *command, Keymap map) +{ + rl_command_func_t *func; + + func = rl_named_function (command); + if (func == 0) + return 0; + return (rl_unbind_function_in_map (func, map)); +} + +/* Bind the key sequence represented by the string KEYSEQ to + FUNCTION, starting in the current keymap. This makes new + keymaps as necessary. */ +int +rl_bind_keyseq (const char *keyseq, rl_command_func_t *function) +{ + return (rl_generic_bind (ISFUNC, keyseq, (char *)function, _rl_keymap)); +} + +/* Bind the key sequence represented by the string KEYSEQ to + FUNCTION. This makes new keymaps as necessary. The initial + place to do bindings is in MAP. */ +int +rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map) +{ + return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map)); +} + +/* Backwards compatibility; equivalent to rl_bind_keyseq_in_map() */ +int +rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map) +{ + return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map)); +} + +/* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right + now, this is always used to attempt to bind the arrow keys, hence the + check for rl_vi_movement_mode. */ +int +rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *default_func, Keymap kmap) +{ + rl_command_func_t *func; + char *keys; + int keys_len; + + if (keyseq) + { + /* Handle key sequences that require translations and `raw' ones that + don't. This might be a problem with backslashes. */ + keys = (char *)xmalloc (1 + (2 * strlen (keyseq))); + if (rl_translate_keyseq (keyseq, keys, &keys_len)) + { + xfree (keys); + return -1; + } + func = rl_function_of_keyseq_len (keys, keys_len, kmap, (int *)NULL); + xfree (keys); +#if defined (VI_MODE) + if (!func || func == rl_do_lowercase_version || func == rl_vi_movement_mode) +#else + if (!func || func == rl_do_lowercase_version) +#endif + return (rl_bind_keyseq_in_map (keyseq, default_func, kmap)); + else + return 1; + } + return 0; +} + +int +rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *default_func) +{ + return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap)); +} + +/* Bind the key sequence represented by the string KEYSEQ to + the string of characters MACRO. This makes new keymaps as + necessary. The initial place to do bindings is in MAP. */ +int +rl_macro_bind (const char *keyseq, const char *macro, Keymap map) +{ + char *macro_keys; + int macro_keys_len; + + macro_keys = (char *)xmalloc ((2 * strlen (macro)) + 1); + + if (rl_translate_keyseq (macro, macro_keys, ¯o_keys_len)) + { + xfree (macro_keys); + return -1; + } + rl_generic_bind (ISMACR, keyseq, macro_keys, map); + return 0; +} + +/* Bind the key sequence represented by the string KEYSEQ to + the arbitrary pointer DATA. TYPE says what kind of data is + pointed to by DATA, right now this can be a function (ISFUNC), + a macro (ISMACR), or a keymap (ISKMAP). This makes new keymaps + as necessary. The initial place to do bindings is in MAP. */ +int +rl_generic_bind (int type, const char *keyseq, char *data, Keymap map) +{ + char *keys; + int keys_len, prevkey, ic; + register int i; + KEYMAP_ENTRY k; + Keymap prevmap; + + k.function = 0; + + /* If no keys to bind to, exit right away. */ + if (keyseq == 0 || *keyseq == 0) + { + if (type == ISMACR) + xfree (data); + return -1; + } + + keys = (char *)xmalloc (1 + (2 * strlen (keyseq))); + + /* Translate the ASCII representation of KEYSEQ into an array of + characters. Stuff the characters into KEYS, and the length of + KEYS into KEYS_LEN. */ + if (rl_translate_keyseq (keyseq, keys, &keys_len)) + { + xfree (keys); + return -1; + } + + prevmap = map; + prevkey = keys[0]; + + /* Bind keys, making new keymaps as necessary. */ + for (i = 0; i < keys_len; i++) + { + unsigned char uc = keys[i]; + + if (i > 0) + prevkey = ic; + + ic = uc; + if (ic < 0 || ic >= KEYMAP_SIZE) + { + xfree (keys); + return -1; + } + + /* We now rely on rl_translate_keyseq to do this conversion, so this + check is superfluous. */ +#if 0 + if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii) + { + ic = UNMETA (ic); + if (map[ESC].type == ISKMAP) + { + prevmap = map; + map = FUNCTION_TO_KEYMAP (map, ESC); + } + } +#endif + + if ((i + 1) < keys_len) + { + if (map[ic].type != ISKMAP) + { + /* We allow subsequences of keys. If a keymap is being + created that will `shadow' an existing function or macro + key binding, we save that keybinding into the ANYOTHERKEY + index in the new map. The dispatch code will look there + to find the function to execute if the subsequence is not + matched. ANYOTHERKEY was chosen to be greater than + UCHAR_MAX. */ + k = map[ic]; + + map[ic].type = ISKMAP; + map[ic].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap()); + } + prevmap = map; + map = FUNCTION_TO_KEYMAP (map, ic); + /* The dispatch code will return this function if no matching + key sequence is found in the keymap. This (with a little + help from the dispatch code in readline.c) allows `a' to be + mapped to something, `abc' to be mapped to something else, + and the function bound to `a' to be executed when the user + types `abx', leaving `bx' in the input queue. */ + if (k.function && ((k.type == ISFUNC && k.function != rl_do_lowercase_version) || k.type == ISMACR)) + { + map[ANYOTHERKEY] = k; + k.function = 0; + } + } + else + { + if (map[ic].type == ISKMAP) + { + prevmap = map; + map = FUNCTION_TO_KEYMAP (map, ic); + ic = ANYOTHERKEY; + /* If we're trying to override a keymap with a null function + (e.g., trying to unbind it), we can't use a null pointer + here because that's indistinguishable from having not been + overridden. We use a special bindable function that does + nothing. */ + if (type == ISFUNC && data == 0) + data = (char *)_rl_null_function; + } + if (map[ic].type == ISMACR) + xfree ((char *)map[ic].function); + + map[ic].function = KEYMAP_TO_FUNCTION (data); + map[ic].type = type; + } + + rl_binding_keymap = map; + + } + + /* If we unbound a key (type == ISFUNC, data == 0), and the prev keymap + points to the keymap where we unbound the key (sanity check), and the + current binding keymap is empty (rl_empty_keymap() returns non-zero), + and the binding keymap has ANYOTHERKEY set with type == ISFUNC + (overridden function), delete the now-empty keymap, take the previously- + overridden function and remove the override. */ + /* Right now, this only works one level back. */ + if (type == ISFUNC && data == 0 && + prevmap[prevkey].type == ISKMAP && + (FUNCTION_TO_KEYMAP(prevmap, prevkey) == rl_binding_keymap) && + rl_binding_keymap[ANYOTHERKEY].type == ISFUNC && + rl_empty_keymap (rl_binding_keymap)) + { + prevmap[prevkey].type = rl_binding_keymap[ANYOTHERKEY].type; + prevmap[prevkey].function = rl_binding_keymap[ANYOTHERKEY].function; + rl_discard_keymap (rl_binding_keymap); + rl_binding_keymap = prevmap; + } + + xfree (keys); + return 0; +} + +/* Translate the ASCII representation of SEQ, stuffing the values into ARRAY, + an array of characters. LEN gets the final length of ARRAY. Return + non-zero if there was an error parsing SEQ. */ +int +rl_translate_keyseq (const char *seq, char *array, int *len) +{ + register int i, l, temp; + int has_control, has_meta; + unsigned char c; + + has_control = 0; + has_meta = 0; + + /* When there are incomplete prefixes \C- or \M- (has_control || has_meta) + without base character at the end of SEQ, they are processed as the + prefixes for '\0'. + */ + for (i = l = 0; (c = seq[i]) || has_control || has_meta; i++) + { + /* Only backslashes followed by a non-null character are handled + specially. Trailing backslash (backslash followed by '\0') is + processed as a normal character. + */ + if (c == '\\' && seq[i + 1] != '\0') + { + c = seq[++i]; + + /* Handle \C- and \M- prefixes. */ + if (c == 'C' && seq[i + 1] == '-') + { + i++; + has_control = 1; + continue; + } + else if (c == 'M' && seq[i + 1] == '-') + { + i++; + has_meta = 1; + continue; + } + + /* Translate other backslash-escaped characters. These are the + same escape sequences that bash's `echo' and `printf' builtins + handle, with the addition of \d -> RUBOUT. A backslash + preceding a character that is not special is stripped. */ + switch (c) + { + case 'a': + c = '\007'; + break; + case 'b': + c = '\b'; + break; + case 'd': + c = RUBOUT; /* readline-specific */ + break; + case 'e': + c = ESC; + break; + case 'f': + c = '\f'; + break; + case 'n': + c = NEWLINE; + break; + case 'r': + c = RETURN; + break; + case 't': + c = TAB; + break; + case 'v': + c = 0x0B; + break; + case '\\': + c = '\\'; + break; + case '0': case '1': case '2': case '3': + case '4': case '5': case '6': case '7': + i++; + for (temp = 2, c -= '0'; ISOCTAL ((unsigned char)seq[i]) && temp--; i++) + c = (c * 8) + OCTVALUE (seq[i]); + i--; /* auto-increment in for loop */ + c &= largest_char; + break; + case 'x': + i++; + for (temp = 2, c = 0; ISXDIGIT ((unsigned char)seq[i]) && temp--; i++) + c = (c * 16) + HEXVALUE (seq[i]); + if (temp == 2) + c = 'x'; + i--; /* auto-increment in for loop */ + c &= largest_char; + break; + default: /* backslashes before non-special chars just add the char */ + c &= largest_char; + break; /* the backslash is stripped */ + } + } + + /* Process \C- and \M- flags */ + if (has_control) + { + /* Special treatment for C-? */ + c = (c == '?') ? RUBOUT : CTRL (_rl_to_upper (c)); + has_control = 0; + } + if (has_meta) + { + c = META (c); + has_meta = 0; + } + + /* If convert-meta is turned on, convert a meta char to a key sequence */ + if (META_CHAR (c) && _rl_convert_meta_chars_to_ascii) + { + array[l++] = ESC; /* ESC is meta-prefix */ + array[l++] = UNMETA (c); + } + else + array[l++] = (c); + + /* Null characters may be processed for incomplete prefixes at the end of + sequence */ + if (seq[i] == '\0') + break; + } + + *len = l; + array[l] = '\0'; + return (0); +} + +static int +_rl_isescape (int c) +{ + switch (c) + { + case '\007': + case '\b': + case '\f': + case '\n': + case '\r': + case TAB: + case 0x0b: return (1); + default: return (0); + } +} + +static int +_rl_escchar (int c) +{ + switch (c) + { + case '\007': return ('a'); + case '\b': return ('b'); + case '\f': return ('f'); + case '\n': return ('n'); + case '\r': return ('r'); + case TAB: return ('t'); + case 0x0b: return ('v'); + default: return (c); + } +} + +char * +rl_untranslate_keyseq (int seq) +{ + static char kseq[16]; + int i, c; + + i = 0; + c = seq; + if (META_CHAR (c)) + { + kseq[i++] = '\\'; + kseq[i++] = 'M'; + kseq[i++] = '-'; + c = UNMETA (c); + } + else if (c == ESC) + { + kseq[i++] = '\\'; + c = 'e'; + } + else if (CTRL_CHAR (c)) + { + kseq[i++] = '\\'; + kseq[i++] = 'C'; + kseq[i++] = '-'; + c = _rl_to_lower (UNCTRL (c)); + } + else if (c == RUBOUT) + { + kseq[i++] = '\\'; + kseq[i++] = 'C'; + kseq[i++] = '-'; + c = '?'; + } + + if (c == ESC) + { + kseq[i++] = '\\'; + c = 'e'; + } + else if (c == '\\' || c == '"') + { + kseq[i++] = '\\'; + } + + kseq[i++] = (unsigned char) c; + kseq[i] = '\0'; + return kseq; +} + +char * +_rl_untranslate_macro_value (char *seq, int use_escapes) +{ + char *ret, *r, *s; + int c; + + r = ret = (char *)xmalloc (7 * strlen (seq) + 1); + for (s = seq; *s; s++) + { + c = *s; + if (META_CHAR (c)) + { + *r++ = '\\'; + *r++ = 'M'; + *r++ = '-'; + c = UNMETA (c); + } + else if (c == ESC) + { + *r++ = '\\'; + c = 'e'; + } + else if (CTRL_CHAR (c)) + { + *r++ = '\\'; + if (use_escapes && _rl_isescape (c)) + c = _rl_escchar (c); + else + { + *r++ = 'C'; + *r++ = '-'; + c = _rl_to_lower (UNCTRL (c)); + } + } + else if (c == RUBOUT) + { + *r++ = '\\'; + *r++ = 'C'; + *r++ = '-'; + c = '?'; + } + + if (c == ESC) + { + *r++ = '\\'; + c = 'e'; + } + else if (c == '\\' || c == '"') + *r++ = '\\'; + + *r++ = (unsigned char)c; + } + *r = '\0'; + return ret; +} + +/* Return a pointer to the function that STRING represents. + If STRING doesn't have a matching function, then a NULL pointer + is returned. The string match is case-insensitive. */ +rl_command_func_t * +rl_named_function (const char *string) +{ + register int i; + + rl_initialize_funmap (); + + for (i = 0; funmap[i]; i++) + if (_rl_stricmp (funmap[i]->name, string) == 0) + return (funmap[i]->function); + return ((rl_command_func_t *)NULL); +} + +/* Return the function (or macro) definition which would be invoked via + KEYSEQ if executed in MAP. If MAP is NULL, then the current keymap is + used. TYPE, if non-NULL, is a pointer to an int which will receive the + type of the object pointed to. One of ISFUNC (function), ISKMAP (keymap), + or ISMACR (macro). */ +static rl_command_func_t * +_rl_function_of_keyseq_internal (const char *keyseq, size_t len, Keymap map, int *type) +{ + register int i; + + if (map == 0) + map = _rl_keymap; + + for (i = 0; keyseq && i < len; i++) + { + unsigned char ic = keyseq[i]; + + if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii) + { + if (map[ESC].type == ISKMAP) + { + map = FUNCTION_TO_KEYMAP (map, ESC); + ic = UNMETA (ic); + } + /* XXX - should we just return NULL here, since this obviously + doesn't match? */ + else + { + if (type) + *type = map[ESC].type; + + return (map[ESC].function); + } + } + + if (map[ic].type == ISKMAP) + { + /* If this is the last key in the key sequence, return the + map. */ + if (i + 1 == len) + { + if (type) + *type = ISKMAP; + + return (map[ic].function); + } + else + map = FUNCTION_TO_KEYMAP (map, ic); + } + /* If we're not at the end of the key sequence, and the current key + is bound to something other than a keymap, then the entire key + sequence is not bound. */ + else if (map[ic].type != ISKMAP && i+1 < len) + return ((rl_command_func_t *)NULL); + else /* map[ic].type != ISKMAP && i+1 == len */ + { + if (type) + *type = map[ic].type; + + return (map[ic].function); + } + } + return ((rl_command_func_t *) NULL); +} + +rl_command_func_t * +rl_function_of_keyseq (const char *keyseq, Keymap map, int *type) +{ + return _rl_function_of_keyseq_internal (keyseq, strlen (keyseq), map, type); +} + +rl_command_func_t * +rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type) +{ + return _rl_function_of_keyseq_internal (keyseq, len, map, type); +} + +/* The last key bindings file read. */ +static char *last_readline_init_file = (char *)NULL; + +/* The file we're currently reading key bindings from. */ +static const char *current_readline_init_file; +static int current_readline_init_include_level; +static int current_readline_init_lineno; + +/* Read FILENAME into a locally-allocated buffer and return the buffer. + The size of the buffer is returned in *SIZEP. Returns NULL if any + errors were encountered. */ +static char * +_rl_read_file (char *filename, size_t *sizep) +{ + struct stat finfo; + size_t file_size; + char *buffer; + int i, file; + + file = -1; + if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) < 0)) + { + if (file >= 0) + close (file); + return ((char *)NULL); + } + + file_size = (size_t)finfo.st_size; + + /* check for overflow on very large files */ + if (file_size != finfo.st_size || file_size + 1 < file_size) + { + if (file >= 0) + close (file); +#if defined (EFBIG) + errno = EFBIG; +#endif + return ((char *)NULL); + } + + /* Read the file into BUFFER. */ + buffer = (char *)xmalloc (file_size + 1); + i = read (file, buffer, file_size); + close (file); + + if (i < 0) + { + xfree (buffer); + return ((char *)NULL); + } + + RL_CHECK_SIGNALS (); + + buffer[i] = '\0'; + if (sizep) + *sizep = i; + + return (buffer); +} + +/* Re-read the current keybindings file. */ +int +rl_re_read_init_file (int count, int ignore) +{ + int r; + r = rl_read_init_file ((const char *)NULL); + rl_set_keymap_from_edit_mode (); + return r; +} + +/* Do key bindings from a file. If FILENAME is NULL it defaults + to the first non-null filename from this list: + 1. the filename used for the previous call + 2. the value of the shell variable `INPUTRC' + 3. ~/.inputrc + 4. /etc/inputrc + If the file existed and could be opened and read, 0 is returned, + otherwise errno is returned. */ +int +rl_read_init_file (const char *filename) +{ + /* Default the filename. */ + if (filename == 0) + filename = last_readline_init_file; + if (filename == 0) + filename = sh_get_env_value ("INPUTRC"); + if (filename == 0 || *filename == 0) + { + filename = DEFAULT_INPUTRC; + /* Try to read DEFAULT_INPUTRC; fall back to SYS_INPUTRC on failure */ + if (_rl_read_init_file (filename, 0) == 0) + return 0; + filename = SYS_INPUTRC; + } + +#if defined (__MSDOS__) + if (_rl_read_init_file (filename, 0) == 0) + return 0; + filename = "~/_inputrc"; +#endif + return (_rl_read_init_file (filename, 0)); +} + +static int +_rl_read_init_file (const char *filename, int include_level) +{ + register int i; + char *buffer, *openname, *line, *end; + size_t file_size; + + current_readline_init_file = filename; + current_readline_init_include_level = include_level; + + openname = tilde_expand (filename); + buffer = _rl_read_file (openname, &file_size); + xfree (openname); + + RL_CHECK_SIGNALS (); + if (buffer == 0) + return (errno); + + if (include_level == 0 && filename != last_readline_init_file) + { + FREE (last_readline_init_file); + last_readline_init_file = savestring (filename); + } + + currently_reading_init_file = 1; + + /* Loop over the lines in the file. Lines that start with `#' are + comments; all other lines are commands for readline initialization. */ + current_readline_init_lineno = 1; + line = buffer; + end = buffer + file_size; + while (line < end) + { + /* Find the end of this line. */ + for (i = 0; line + i != end && line[i] != '\n'; i++); + +#if defined (__CYGWIN__) + /* ``Be liberal in what you accept.'' */ + if (line[i] == '\n' && line[i-1] == '\r') + line[i - 1] = '\0'; +#endif + + /* Mark end of line. */ + line[i] = '\0'; + + /* Skip leading whitespace. */ + while (*line && whitespace (*line)) + { + line++; + i--; + } + + /* If the line is not a comment, then parse it. */ + if (*line && *line != '#') + rl_parse_and_bind (line); + + /* Move to the next line. */ + line += i + 1; + current_readline_init_lineno++; + } + + xfree (buffer); + currently_reading_init_file = 0; + return (0); +} + +static void +#if defined (PREFER_STDARG) +_rl_init_file_error (const char *format, ...) +#else +_rl_init_file_error (va_alist) + va_dcl +#endif +{ + va_list args; +#if defined (PREFER_VARARGS) + char *format; +#endif + +#if defined (PREFER_STDARG) + va_start (args, format); +#else + va_start (args); + format = va_arg (args, char *); +#endif + + fprintf (stderr, "readline: "); + if (currently_reading_init_file) + fprintf (stderr, "%s: line %d: ", current_readline_init_file, + current_readline_init_lineno); + + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + fflush (stderr); + + va_end (args); +} + +/* **************************************************************** */ +/* */ +/* Parser Helper Functions */ +/* */ +/* **************************************************************** */ + +static int +parse_comparison_op (s, indp) + const char *s; + int *indp; +{ + int i, peekc, op; + + if (OPSTART (s[*indp]) == 0) + return -1; + i = *indp; + peekc = s[i] ? s[i+1] : 0; + op = -1; + + if (s[i] == '=') + { + op = OP_EQ; + if (peekc == '=') + i++; + i++; + } + else if (s[i] == '!' && peekc == '=') + { + op = OP_NE; + i += 2; + } + else if (s[i] == '<' && peekc == '=') + { + op = OP_LE; + i += 2; + } + else if (s[i] == '>' && peekc == '=') + { + op = OP_GE; + i += 2; + } + else if (s[i] == '<') + { + op = OP_LT; + i += 1; + } + else if (s[i] == '>') + { + op = OP_GT; + i += 1; + } + + *indp = i; + return op; +} + +/* **************************************************************** */ +/* */ +/* Parser Directives */ +/* */ +/* **************************************************************** */ + +typedef int _rl_parser_func_t PARAMS((char *)); + +/* Things that mean `Control'. */ +const char * const _rl_possible_control_prefixes[] = { + "Control-", "C-", "CTRL-", (const char *)NULL +}; + +const char * const _rl_possible_meta_prefixes[] = { + "Meta", "M-", (const char *)NULL +}; + +/* Conditionals. */ + +/* Calling programs set this to have their argv[0]. */ +const char *rl_readline_name = "other"; + +/* Stack of previous values of parsing_conditionalized_out. */ +static unsigned char *if_stack = (unsigned char *)NULL; +static int if_stack_depth; +static int if_stack_size; + +/* Push _rl_parsing_conditionalized_out, and set parser state based + on ARGS. */ +static int +parser_if (char *args) +{ + int i, llen, boolvar, strvar; + + boolvar = strvar = -1; + + /* Push parser state. */ + if (if_stack_depth + 1 >= if_stack_size) + { + if (!if_stack) + if_stack = (unsigned char *)xmalloc (if_stack_size = 20); + else + if_stack = (unsigned char *)xrealloc (if_stack, if_stack_size += 20); + } + if_stack[if_stack_depth++] = _rl_parsing_conditionalized_out; + + /* If parsing is turned off, then nothing can turn it back on except + for finding the matching endif. In that case, return right now. */ + if (_rl_parsing_conditionalized_out) + return 0; + + llen = strlen (args); + + /* Isolate first argument. */ + for (i = 0; args[i] && !whitespace (args[i]); i++); + + if (args[i]) + args[i++] = '\0'; + + /* Handle "$if term=foo" and "$if mode=emacs" constructs. If this + isn't term=foo, or mode=emacs, then check to see if the first + word in ARGS is the same as the value stored in rl_readline_name. */ + if (rl_terminal_name && _rl_strnicmp (args, "term=", 5) == 0) + { + char *tem, *tname; + + /* Terminals like "aaa-60" are equivalent to "aaa". */ + tname = savestring (rl_terminal_name); + tem = strchr (tname, '-'); + if (tem) + *tem = '\0'; + + /* Test the `long' and `short' forms of the terminal name so that + if someone has a `sun-cmd' and does not want to have bindings + that will be executed if the terminal is a `sun', they can put + `$if term=sun-cmd' into their .inputrc. */ + _rl_parsing_conditionalized_out = _rl_stricmp (args + 5, tname) && + _rl_stricmp (args + 5, rl_terminal_name); + xfree (tname); + } +#if defined (VI_MODE) + else if (_rl_strnicmp (args, "mode=", 5) == 0) + { + int mode; + + if (_rl_stricmp (args + 5, "emacs") == 0) + mode = emacs_mode; + else if (_rl_stricmp (args + 5, "vi") == 0) + mode = vi_mode; + else + mode = no_mode; + + _rl_parsing_conditionalized_out = mode != rl_editing_mode; + } +#endif /* VI_MODE */ + else if (_rl_strnicmp (args, "version", 7) == 0) + { + int rlversion, versionarg, op, previ, major, minor; + + _rl_parsing_conditionalized_out = 1; + rlversion = RL_VERSION_MAJOR*10 + RL_VERSION_MINOR; + /* if "version" is separated from the operator by whitespace, or the + operand is separated from the operator by whitespace, restore it. + We're more liberal with allowed whitespace for this variable. */ + if (i > 0 && i <= llen && args[i-1] == '\0') + args[i-1] = ' '; + args[llen] = '\0'; /* just in case */ + for (i = 7; whitespace (args[i]); i++) + ; + if (OPSTART(args[i]) == 0) + { + _rl_init_file_error ("comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line"); + return 0; + } + previ = i; + op = parse_comparison_op (args, &i); + if (op <= 0) + { + _rl_init_file_error ("comparison operator expected, found `%s'", args+previ); + return 0; + } + for ( ; args[i] && whitespace (args[i]); i++) + ; + if (args[i] == 0 || _rl_digit_p (args[i]) == 0) + { + _rl_init_file_error ("numeric argument expected, found `%s'", args+i); + return 0; + } + major = minor = 0; + previ = i; + for ( ; args[i] && _rl_digit_p (args[i]); i++) + major = major*10 + _rl_digit_value (args[i]); + if (args[i] == '.') + { + if (args[i + 1] && _rl_digit_p (args [i + 1]) == 0) + { + _rl_init_file_error ("numeric argument expected, found `%s'", args+previ); + return 0; + } + for (++i; args[i] && _rl_digit_p (args[i]); i++) + minor = minor*10 + _rl_digit_value (args[i]); + } + /* optional - check for trailing garbage on the line, allow whitespace + and a trailing comment */ + previ = i; + for ( ; args[i] && whitespace (args[i]); i++) + ; + if (args[i] && args[i] != '#') + { + _rl_init_file_error ("trailing garbage on line: `%s'", args+previ); + return 0; + } + versionarg = major*10 + minor; + + switch (op) + { + case OP_EQ: + _rl_parsing_conditionalized_out = rlversion == versionarg; + break; + case OP_NE: + _rl_parsing_conditionalized_out = rlversion != versionarg; + break; + case OP_GT: + _rl_parsing_conditionalized_out = rlversion > versionarg; + break; + case OP_GE: + _rl_parsing_conditionalized_out = rlversion >= versionarg; + break; + case OP_LT: + _rl_parsing_conditionalized_out = rlversion < versionarg; + break; + case OP_LE: + _rl_parsing_conditionalized_out = rlversion <= versionarg; + break; + } + } + /* Check to see if the first word in ARGS is the same as the + value stored in rl_readline_name. */ + else if (_rl_stricmp (args, rl_readline_name) == 0) + _rl_parsing_conditionalized_out = 0; + else if ((boolvar = find_boolean_var (args)) >= 0 || (strvar = find_string_var (args)) >= 0) + { + int op, previ; + size_t vlen; + const char *vname; + char *valuearg, *vval, prevc; + + _rl_parsing_conditionalized_out = 1; + vname = (boolvar >= 0) ? boolean_varname (boolvar) : string_varname (strvar); + vlen = strlen (vname); + if (i > 0 && i <= llen && args[i-1] == '\0') + args[i-1] = ' '; + args[llen] = '\0'; /* just in case */ + for (i = vlen; whitespace (args[i]); i++) + ; + if (CMPSTART(args[i]) == 0) + { + _rl_init_file_error ("equality comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line"); + return 0; + } + previ = i; + op = parse_comparison_op (args, &i); + if (op != OP_EQ && op != OP_NE) + { + _rl_init_file_error ("equality comparison operator expected, found `%s'", args+previ); + return 0; + } + for ( ; args[i] && whitespace (args[i]); i++) + ; + if (args[i] == 0) + { + _rl_init_file_error ("argument expected, found `%s'", args+i); + return 0; + } + previ = i; + valuearg = args + i; + for ( ; args[i] && whitespace (args[i]) == 0; i++) + ; + prevc = args[i]; + args[i] = '\0'; /* null-terminate valuearg */ + vval = rl_variable_value (vname); + if (op == OP_EQ) + _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) != 0; + else if (op == OP_NE) + _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) == 0; + args[i] = prevc; + } + else + _rl_parsing_conditionalized_out = 1; + return 0; +} + +/* Invert the current parser state if there is anything on the stack. */ +static int +parser_else (char *args) +{ + register int i; + + if (if_stack_depth == 0) + { + _rl_init_file_error ("$else found without matching $if"); + return 0; + } + +#if 0 + /* Check the previous (n - 1) levels of the stack to make sure that + we haven't previously turned off parsing. */ + for (i = 0; i < if_stack_depth - 1; i++) +#else + /* Check the previous (n) levels of the stack to make sure that + we haven't previously turned off parsing. */ + for (i = 0; i < if_stack_depth; i++) +#endif + if (if_stack[i] == 1) + return 0; + + /* Invert the state of parsing if at top level. */ + _rl_parsing_conditionalized_out = !_rl_parsing_conditionalized_out; + return 0; +} + +/* Terminate a conditional, popping the value of + _rl_parsing_conditionalized_out from the stack. */ +static int +parser_endif (char *args) +{ + if (if_stack_depth) + _rl_parsing_conditionalized_out = if_stack[--if_stack_depth]; + else + _rl_init_file_error ("$endif without matching $if"); + return 0; +} + +static int +parser_include (char *args) +{ + const char *old_init_file; + char *e; + int old_line_number, old_include_level, r; + + if (_rl_parsing_conditionalized_out) + return (0); + + old_init_file = current_readline_init_file; + old_line_number = current_readline_init_lineno; + old_include_level = current_readline_init_include_level; + + e = strchr (args, '\n'); + if (e) + *e = '\0'; + r = _rl_read_init_file ((const char *)args, old_include_level + 1); + + current_readline_init_file = old_init_file; + current_readline_init_lineno = old_line_number; + current_readline_init_include_level = old_include_level; + + return r; +} + +/* Associate textual names with actual functions. */ +static const struct { + const char * const name; + _rl_parser_func_t *function; +} parser_directives [] = { + { "if", parser_if }, + { "endif", parser_endif }, + { "else", parser_else }, + { "include", parser_include }, + { (char *)0x0, (_rl_parser_func_t *)0x0 } +}; + +/* Handle a parser directive. STATEMENT is the line of the directive + without any leading `$'. */ +static int +handle_parser_directive (char *statement) +{ + register int i; + char *directive, *args; + + /* Isolate the actual directive. */ + + /* Skip whitespace. */ + for (i = 0; whitespace (statement[i]); i++); + + directive = &statement[i]; + + for (; statement[i] && !whitespace (statement[i]); i++); + + if (statement[i]) + statement[i++] = '\0'; + + for (; statement[i] && whitespace (statement[i]); i++); + + args = &statement[i]; + + /* Lookup the command, and act on it. */ + for (i = 0; parser_directives[i].name; i++) + if (_rl_stricmp (directive, parser_directives[i].name) == 0) + { + (*parser_directives[i].function) (args); + return (0); + } + + /* display an error message about the unknown parser directive */ + _rl_init_file_error ("%s: unknown parser directive", directive); + return (1); +} + +/* Start at STRING[START] and look for DELIM. Return I where STRING[I] == + DELIM or STRING[I] == 0. DELIM is usually a double quote. */ +static int +_rl_skip_to_delim (char *string, int start, int delim) +{ + int i, c, passc; + + for (i = start,passc = 0; c = string[i]; i++) + { + if (passc) + { + passc = 0; + if (c == 0) + break; + continue; + } + + if (c == '\\') + { + passc = 1; + continue; + } + + if (c == delim) + break; + } + + return i; +} + +/* Read the binding command from STRING and perform it. + A key binding command looks like: Keyname: function-name\0, + a variable binding command looks like: set variable value. + A new-style keybinding looks like "\C-x\C-x": exchange-point-and-mark. */ +int +rl_parse_and_bind (char *string) +{ + char *funname, *kname; + register int c, i; + int key, equivalency, foundmod, foundsep; + + while (string && whitespace (*string)) + string++; + + if (string == 0 || *string == 0 || *string == '#') + return 0; + + /* If this is a parser directive, act on it. */ + if (*string == '$') + { + handle_parser_directive (&string[1]); + return 0; + } + + /* If we aren't supposed to be parsing right now, then we're done. */ + if (_rl_parsing_conditionalized_out) + return 0; + + i = 0; + /* If this keyname is a complex key expression surrounded by quotes, + advance to after the matching close quote. This code allows the + backslash to quote characters in the key expression. */ + if (*string == '"') + { + i = _rl_skip_to_delim (string, 1, '"'); + + /* If we didn't find a closing quote, abort the line. */ + if (string[i] == '\0') + { + _rl_init_file_error ("%s: no closing `\"' in key binding", string); + return 1; + } + else + i++; /* skip past closing double quote */ + } + + /* Advance to the colon (:) or whitespace which separates the two objects. */ + for (; (c = string[i]) && c != ':' && c != ' ' && c != '\t'; i++ ); + + if (i == 0) + { + _rl_init_file_error ("`%s': invalid key binding: missing key sequence", string); + return 1; + } + + equivalency = (c == ':' && string[i + 1] == '='); + + foundsep = c != 0; + + /* Mark the end of the command (or keyname). */ + if (string[i]) + string[i++] = '\0'; + + /* If doing assignment, skip the '=' sign as well. */ + if (equivalency) + string[i++] = '\0'; + + /* If this is a command to set a variable, then do that. */ + if (_rl_stricmp (string, "set") == 0) + { + char *var, *value, *e; + int s; + + var = string + i; + /* Make VAR point to start of variable name. */ + while (*var && whitespace (*var)) var++; + + /* Make VALUE point to start of value string. */ + value = var; + while (*value && whitespace (*value) == 0) value++; + if (*value) + *value++ = '\0'; + while (*value && whitespace (*value)) value++; + + /* Strip trailing whitespace from values of boolean variables. */ + if (find_boolean_var (var) >= 0) + { + /* just read a whitespace-delimited word or empty string */ + for (e = value; *e && whitespace (*e) == 0; e++) + ; + if (e > value) + *e = '\0'; /* cut off everything trailing */ + } + else if ((i = find_string_var (var)) >= 0) + { + /* Allow quoted strings in variable values */ + if (*value == '"') + { + i = _rl_skip_to_delim (value, 1, *value); + value[i] = '\0'; + value++; /* skip past the quote */ + } + else + { + /* remove trailing whitespace */ + e = value + strlen (value) - 1; + while (e >= value && whitespace (*e)) + e--; + e++; /* skip back to whitespace or EOS */ + + if (*e && e >= value) + *e = '\0'; + } + } + else + { + /* avoid calling rl_variable_bind just to find this out */ + _rl_init_file_error ("%s: unknown variable name", var); + return 1; + } + + rl_variable_bind (var, value); + return 0; + } + + /* Skip any whitespace between keyname and funname. */ + for (; string[i] && whitespace (string[i]); i++); + funname = &string[i]; + + /* Now isolate funname. + For straight function names just look for whitespace, since + that will signify the end of the string. But this could be a + macro definition. In that case, the string is quoted, so skip + to the matching delimiter. We allow the backslash to quote the + delimiter characters in the macro body. */ + /* This code exists to allow whitespace in macro expansions, which + would otherwise be gobbled up by the next `for' loop.*/ + /* XXX - it may be desirable to allow backslash quoting only if " is + the quoted string delimiter, like the shell. */ + if (*funname == '\'' || *funname == '"') + { + i = _rl_skip_to_delim (string, i+1, *funname); + if (string[i]) + i++; + else + { + _rl_init_file_error ("`%s': missing closing quote for macro", funname); + return 1; + } + } + + /* Advance to the end of the string. */ + for (; string[i] && whitespace (string[i]) == 0; i++); + + /* No extra whitespace at the end of the string. */ + string[i] = '\0'; + + /* Handle equivalency bindings here. Make the left-hand side be exactly + whatever the right-hand evaluates to, including keymaps. */ + if (equivalency) + { + return 0; + } + + if (foundsep == 0) + { + _rl_init_file_error ("%s: no key sequence terminator", string); + return 1; + } + + /* If this is a new-style key-binding, then do the binding with + rl_bind_keyseq (). Otherwise, let the older code deal with it. */ + if (*string == '"') + { + char *seq; + register int j, k, passc; + + seq = (char *)xmalloc (1 + strlen (string)); + for (j = 1, k = passc = 0; string[j]; j++) + { + /* Allow backslash to quote characters, but leave them in place. + This allows a string to end with a backslash quoting another + backslash, or with a backslash quoting a double quote. The + backslashes are left in place for rl_translate_keyseq (). */ + if (passc || (string[j] == '\\')) + { + seq[k++] = string[j]; + passc = !passc; + continue; + } + + if (string[j] == '"') + break; + + seq[k++] = string[j]; + } + seq[k] = '\0'; + + /* Binding macro? */ + if (*funname == '\'' || *funname == '"') + { + j = strlen (funname); + + /* Remove the delimiting quotes from each end of FUNNAME. */ + if (j && funname[j - 1] == *funname) + funname[j - 1] = '\0'; + + rl_macro_bind (seq, &funname[1], _rl_keymap); + } + else + rl_bind_keyseq (seq, rl_named_function (funname)); + + xfree (seq); + return 0; + } + + /* Get the actual character we want to deal with. */ + kname = strrchr (string, '-'); + if (kname == 0) + kname = string; + else + kname++; + + key = glean_key_from_name (kname); + + /* Add in control and meta bits. */ + foundmod = 0; + if (substring_member_of_array (string, _rl_possible_control_prefixes)) + { + key = CTRL (_rl_to_upper (key)); + foundmod = 1; + } + + if (substring_member_of_array (string, _rl_possible_meta_prefixes)) + { + key = META (key); + foundmod = 1; + } + + if (foundmod == 0 && kname != string) + { + _rl_init_file_error ("%s: unknown key modifier", string); + return 1; + } + + /* Temporary. Handle old-style keyname with macro-binding. */ + if (*funname == '\'' || *funname == '"') + { + char useq[2]; + int fl = strlen (funname); + + useq[0] = key; useq[1] = '\0'; + if (fl && funname[fl - 1] == *funname) + funname[fl - 1] = '\0'; + + rl_macro_bind (useq, &funname[1], _rl_keymap); + } +#if defined (PREFIX_META_HACK) + /* Ugly, but working hack to keep prefix-meta around. */ + else if (_rl_stricmp (funname, "prefix-meta") == 0) + { + char seq[2]; + + seq[0] = key; + seq[1] = '\0'; + rl_generic_bind (ISKMAP, seq, (char *)emacs_meta_keymap, _rl_keymap); + } +#endif /* PREFIX_META_HACK */ + else + rl_bind_key (key, rl_named_function (funname)); + + return 0; +} + +/* Simple structure for boolean readline variables (i.e., those that can + have one of two values; either "On" or 1 for truth, or "Off" or 0 for + false. */ + +#define V_SPECIAL 0x1 + +static const struct { + const char * const name; + int *value; + int flags; +} boolean_varlist [] = { + { "bind-tty-special-chars", &_rl_bind_stty_chars, 0 }, + { "blink-matching-paren", &rl_blink_matching_paren, V_SPECIAL }, + { "byte-oriented", &rl_byte_oriented, 0 }, +#if defined (COLOR_SUPPORT) + { "colored-completion-prefix",&_rl_colored_completion_prefix, 0 }, + { "colored-stats", &_rl_colored_stats, 0 }, +#endif + { "completion-ignore-case", &_rl_completion_case_fold, 0 }, + { "completion-map-case", &_rl_completion_case_map, 0 }, + { "convert-meta", &_rl_convert_meta_chars_to_ascii, 0 }, + { "disable-completion", &rl_inhibit_completion, 0 }, + { "echo-control-characters", &_rl_echo_control_chars, 0 }, + { "enable-bracketed-paste", &_rl_enable_bracketed_paste, V_SPECIAL }, + { "enable-keypad", &_rl_enable_keypad, 0 }, + { "enable-meta-key", &_rl_enable_meta, 0 }, + { "expand-tilde", &rl_complete_with_tilde_expansion, 0 }, + { "history-preserve-point", &_rl_history_preserve_point, 0 }, + { "horizontal-scroll-mode", &_rl_horizontal_scroll_mode, 0 }, + { "input-meta", &_rl_meta_flag, 0 }, + { "mark-directories", &_rl_complete_mark_directories, 0 }, + { "mark-modified-lines", &_rl_mark_modified_lines, 0 }, + { "mark-symlinked-directories", &_rl_complete_mark_symlink_dirs, 0 }, + { "match-hidden-files", &_rl_match_hidden_files, 0 }, + { "menu-complete-display-prefix", &_rl_menu_complete_prefix_first, 0 }, + { "meta-flag", &_rl_meta_flag, 0 }, + { "output-meta", &_rl_output_meta_chars, 0 }, + { "page-completions", &_rl_page_completions, 0 }, + { "prefer-visible-bell", &_rl_prefer_visible_bell, V_SPECIAL }, + { "print-completions-horizontally", &_rl_print_completions_horizontally, 0 }, + { "revert-all-at-newline", &_rl_revert_all_at_newline, 0 }, + { "show-all-if-ambiguous", &_rl_complete_show_all, 0 }, + { "show-all-if-unmodified", &_rl_complete_show_unmodified, 0 }, + { "show-mode-in-prompt", &_rl_show_mode_in_prompt, 0 }, + { "skip-completed-text", &_rl_skip_completed_text, 0 }, +#if defined (VISIBLE_STATS) + { "visible-stats", &rl_visible_stats, 0 }, +#endif /* VISIBLE_STATS */ + { (char *)NULL, (int *)NULL, 0 } +}; + +static int +find_boolean_var (const char *name) +{ + register int i; + + for (i = 0; boolean_varlist[i].name; i++) + if (_rl_stricmp (name, boolean_varlist[i].name) == 0) + return i; + return -1; +} + +static const char * +boolean_varname (int i) +{ + return ((i >= 0) ? boolean_varlist[i].name : (char *)NULL); +} + +/* Hooks for handling special boolean variables, where a + function needs to be called or another variable needs + to be changed when they're changed. */ +static void +hack_special_boolean_var (int i) +{ + const char *name; + + name = boolean_varlist[i].name; + + if (_rl_stricmp (name, "blink-matching-paren") == 0) + _rl_enable_paren_matching (rl_blink_matching_paren); + else if (_rl_stricmp (name, "prefer-visible-bell") == 0) + { + if (_rl_prefer_visible_bell) + _rl_bell_preference = VISIBLE_BELL; + else + _rl_bell_preference = AUDIBLE_BELL; + } + else if (_rl_stricmp (name, "show-mode-in-prompt") == 0) + _rl_reset_prompt (); + else if (_rl_stricmp (name, "enable-bracketed-paste") == 0) + _rl_enable_active_region = _rl_enable_bracketed_paste; +} + +typedef int _rl_sv_func_t PARAMS((const char *)); + +/* These *must* correspond to the array indices for the appropriate + string variable. (Though they're not used right now.) */ +#define V_BELLSTYLE 0 +#define V_COMBEGIN 1 +#define V_EDITMODE 2 +#define V_ISRCHTERM 3 +#define V_KEYMAP 4 + +#define V_STRING 1 +#define V_INT 2 + +/* Forward declarations */ +static int sv_bell_style PARAMS((const char *)); +static int sv_combegin PARAMS((const char *)); +static int sv_dispprefix PARAMS((const char *)); +static int sv_compquery PARAMS((const char *)); +static int sv_compwidth PARAMS((const char *)); +static int sv_editmode PARAMS((const char *)); +static int sv_emacs_modestr PARAMS((const char *)); +static int sv_histsize PARAMS((const char *)); +static int sv_isrchterm PARAMS((const char *)); +static int sv_keymap PARAMS((const char *)); +static int sv_seqtimeout PARAMS((const char *)); +static int sv_viins_modestr PARAMS((const char *)); +static int sv_vicmd_modestr PARAMS((const char *)); + +static const struct { + const char * const name; + int flags; + _rl_sv_func_t *set_func; +} string_varlist[] = { + { "bell-style", V_STRING, sv_bell_style }, + { "comment-begin", V_STRING, sv_combegin }, + { "completion-display-width", V_INT, sv_compwidth }, + { "completion-prefix-display-length", V_INT, sv_dispprefix }, + { "completion-query-items", V_INT, sv_compquery }, + { "editing-mode", V_STRING, sv_editmode }, + { "emacs-mode-string", V_STRING, sv_emacs_modestr }, + { "history-size", V_INT, sv_histsize }, + { "isearch-terminators", V_STRING, sv_isrchterm }, + { "keymap", V_STRING, sv_keymap }, + { "keyseq-timeout", V_INT, sv_seqtimeout }, + { "vi-cmd-mode-string", V_STRING, sv_vicmd_modestr }, + { "vi-ins-mode-string", V_STRING, sv_viins_modestr }, + { (char *)NULL, 0, (_rl_sv_func_t *)0 } +}; + +static int +find_string_var (const char *name) +{ + register int i; + + for (i = 0; string_varlist[i].name; i++) + if (_rl_stricmp (name, string_varlist[i].name) == 0) + return i; + return -1; +} + +static const char * +string_varname (int i) +{ + return ((i >= 0) ? string_varlist[i].name : (char *)NULL); +} + +/* A boolean value that can appear in a `set variable' command is true if + the value is null or empty, `on' (case-insensitive), or "1". All other + values result in 0 (false). */ +static int +bool_to_int (const char *value) +{ + return (value == 0 || *value == '\0' || + (_rl_stricmp (value, "on") == 0) || + (value[0] == '1' && value[1] == '\0')); +} + +char * +rl_variable_value (const char *name) +{ + register int i; + + /* Check for simple variables first. */ + i = find_boolean_var (name); + if (i >= 0) + return (*boolean_varlist[i].value ? "on" : "off"); + + i = find_string_var (name); + if (i >= 0) + return (_rl_get_string_variable_value (string_varlist[i].name)); + + /* Unknown variable names return NULL. */ + return (char *)NULL; +} + +int +rl_variable_bind (const char *name, const char *value) +{ + register int i; + int v; + + /* Check for simple variables first. */ + i = find_boolean_var (name); + if (i >= 0) + { + *boolean_varlist[i].value = bool_to_int (value); + if (boolean_varlist[i].flags & V_SPECIAL) + hack_special_boolean_var (i); + return 0; + } + + i = find_string_var (name); + + /* For the time being, string names without a handler function are simply + ignored. */ + if (i < 0 || string_varlist[i].set_func == 0) + { + if (i < 0) + _rl_init_file_error ("%s: unknown variable name", name); + return 0; + } + + v = (*string_varlist[i].set_func) (value); + if (v != 0) + _rl_init_file_error ("%s: could not set value to `%s'", name, value); + return v; +} + +static int +sv_editmode (const char *value) +{ + if (_rl_strnicmp (value, "vi", 2) == 0) + { +#if defined (VI_MODE) + _rl_keymap = vi_insertion_keymap; + rl_editing_mode = vi_mode; +#endif /* VI_MODE */ + return 0; + } + else if (_rl_strnicmp (value, "emacs", 5) == 0) + { + _rl_keymap = emacs_standard_keymap; + rl_editing_mode = emacs_mode; + return 0; + } + return 1; +} + +static int +sv_combegin (const char *value) +{ + if (value && *value) + { + FREE (_rl_comment_begin); + _rl_comment_begin = savestring (value); + return 0; + } + return 1; +} + +static int +sv_dispprefix (const char *value) +{ + int nval = 0; + + if (value && *value) + { + nval = atoi (value); + if (nval < 0) + nval = 0; + } + _rl_completion_prefix_display_length = nval; + return 0; +} + +static int +sv_compquery (const char *value) +{ + int nval = 100; + + if (value && *value) + { + nval = atoi (value); + if (nval < 0) + nval = 0; + } + rl_completion_query_items = nval; + return 0; +} + +static int +sv_compwidth (const char *value) +{ + int nval = -1; + + if (value && *value) + nval = atoi (value); + + _rl_completion_columns = nval; + return 0; +} + +static int +sv_histsize (const char *value) +{ + int nval; + + nval = 500; + if (value && *value) + { + nval = atoi (value); + if (nval < 0) + { + unstifle_history (); + return 0; + } + } + stifle_history (nval); + return 0; +} + +static int +sv_keymap (const char *value) +{ + Keymap kmap; + + kmap = rl_get_keymap_by_name (value); + if (kmap) + { + rl_set_keymap (kmap); + return 0; + } + return 1; +} + +static int +sv_seqtimeout (const char *value) +{ + int nval; + + nval = 0; + if (value && *value) + { + nval = atoi (value); + if (nval < 0) + nval = 0; + } + _rl_keyseq_timeout = nval; + return 0; +} + +static int +sv_bell_style (const char *value) +{ + if (value == 0 || *value == '\0') + _rl_bell_preference = AUDIBLE_BELL; + else if (_rl_stricmp (value, "none") == 0 || _rl_stricmp (value, "off") == 0) + _rl_bell_preference = NO_BELL; + else if (_rl_stricmp (value, "audible") == 0 || _rl_stricmp (value, "on") == 0) + _rl_bell_preference = AUDIBLE_BELL; + else if (_rl_stricmp (value, "visible") == 0) + _rl_bell_preference = VISIBLE_BELL; + else + return 1; + return 0; +} + +static int +sv_isrchterm (const char *value) +{ + int beg, end, delim; + char *v; + + if (value == 0) + return 1; + + /* Isolate the value and translate it into a character string. */ + v = savestring (value); + FREE (_rl_isearch_terminators); + if (v[0] == '"' || v[0] == '\'') + { + delim = v[0]; + for (beg = end = 1; v[end] && v[end] != delim; end++) + ; + } + else + { + for (beg = end = 0; v[end] && whitespace (v[end]) == 0; end++) + ; + } + + v[end] = '\0'; + + /* The value starts at v + beg. Translate it into a character string. */ + _rl_isearch_terminators = (char *)xmalloc (2 * strlen (v) + 1); + rl_translate_keyseq (v + beg, _rl_isearch_terminators, &end); + _rl_isearch_terminators[end] = '\0'; + + xfree (v); + return 0; +} + +extern char *_rl_emacs_mode_str; + +static int +sv_emacs_modestr (const char *value) +{ + if (value && *value) + { + FREE (_rl_emacs_mode_str); + _rl_emacs_mode_str = (char *)xmalloc (2 * strlen (value) + 1); + rl_translate_keyseq (value, _rl_emacs_mode_str, &_rl_emacs_modestr_len); + _rl_emacs_mode_str[_rl_emacs_modestr_len] = '\0'; + return 0; + } + else if (value) + { + FREE (_rl_emacs_mode_str); + _rl_emacs_mode_str = (char *)xmalloc (1); + _rl_emacs_mode_str[_rl_emacs_modestr_len = 0] = '\0'; + return 0; + } + else if (value == 0) + { + FREE (_rl_emacs_mode_str); + _rl_emacs_mode_str = 0; /* prompt_modestr does the right thing */ + _rl_emacs_modestr_len = 0; + return 0; + } + return 1; +} + +static int +sv_viins_modestr (const char *value) +{ + if (value && *value) + { + FREE (_rl_vi_ins_mode_str); + _rl_vi_ins_mode_str = (char *)xmalloc (2 * strlen (value) + 1); + rl_translate_keyseq (value, _rl_vi_ins_mode_str, &_rl_vi_ins_modestr_len); + _rl_vi_ins_mode_str[_rl_vi_ins_modestr_len] = '\0'; + return 0; + } + else if (value) + { + FREE (_rl_vi_ins_mode_str); + _rl_vi_ins_mode_str = (char *)xmalloc (1); + _rl_vi_ins_mode_str[_rl_vi_ins_modestr_len = 0] = '\0'; + return 0; + } + else if (value == 0) + { + FREE (_rl_vi_ins_mode_str); + _rl_vi_ins_mode_str = 0; /* prompt_modestr does the right thing */ + _rl_vi_ins_modestr_len = 0; + return 0; + } + return 1; +} + +static int +sv_vicmd_modestr (const char *value) +{ + if (value && *value) + { + FREE (_rl_vi_cmd_mode_str); + _rl_vi_cmd_mode_str = (char *)xmalloc (2 * strlen (value) + 1); + rl_translate_keyseq (value, _rl_vi_cmd_mode_str, &_rl_vi_cmd_modestr_len); + _rl_vi_cmd_mode_str[_rl_vi_cmd_modestr_len] = '\0'; + return 0; + } + else if (value) + { + FREE (_rl_vi_cmd_mode_str); + _rl_vi_cmd_mode_str = (char *)xmalloc (1); + _rl_vi_cmd_mode_str[_rl_vi_cmd_modestr_len = 0] = '\0'; + return 0; + } + else if (value == 0) + { + FREE (_rl_vi_cmd_mode_str); + _rl_vi_cmd_mode_str = 0; /* prompt_modestr does the right thing */ + _rl_vi_cmd_modestr_len = 0; + return 0; + } + return 1; +} + +/* Return the character which matches NAME. + For example, `Space' returns ' '. */ + +typedef struct { + const char * const name; + int value; +} assoc_list; + +static const assoc_list name_key_alist[] = { + { "DEL", 0x7f }, + { "ESC", '\033' }, + { "Escape", '\033' }, + { "LFD", '\n' }, + { "Newline", '\n' }, + { "RET", '\r' }, + { "Return", '\r' }, + { "Rubout", 0x7f }, + { "SPC", ' ' }, + { "Space", ' ' }, + { "Tab", 0x09 }, + { (char *)0x0, 0 } +}; + +static int +glean_key_from_name (char *name) +{ + register int i; + + for (i = 0; name_key_alist[i].name; i++) + if (_rl_stricmp (name, name_key_alist[i].name) == 0) + return (name_key_alist[i].value); + + return (*(unsigned char *)name); /* XXX was return (*name) */ +} + +/* Auxiliary functions to manage keymaps. */ +struct name_and_keymap { + char *name; + Keymap map; +}; + +static struct name_and_keymap builtin_keymap_names[] = { + { "emacs", emacs_standard_keymap }, + { "emacs-standard", emacs_standard_keymap }, + { "emacs-meta", emacs_meta_keymap }, + { "emacs-ctlx", emacs_ctlx_keymap }, +#if defined (VI_MODE) + { "vi", vi_movement_keymap }, + { "vi-move", vi_movement_keymap }, + { "vi-command", vi_movement_keymap }, + { "vi-insert", vi_insertion_keymap }, +#endif /* VI_MODE */ + { (char *)0x0, (Keymap)0x0 } +}; + +/* -1 for NULL entry */ +#define NUM_BUILTIN_KEYMAPS (sizeof (builtin_keymap_names) / sizeof (builtin_keymap_names[0]) - 1) + +static struct name_and_keymap *keymap_names = builtin_keymap_names; + +static int +_rl_get_keymap_by_name (const char *name) +{ + register int i; + + for (i = 0; keymap_names[i].name; i++) + if (_rl_stricmp (name, keymap_names[i].name) == 0) + return (i); + return -1; +} + +Keymap +rl_get_keymap_by_name (const char *name) +{ + int i; + + i = _rl_get_keymap_by_name (name); + return ((i >= 0) ? keymap_names[i].map : (Keymap) NULL); +} + +static int +_rl_get_keymap_by_map (Keymap map) +{ + register int i; + + for (i = 0; keymap_names[i].name; i++) + if (map == keymap_names[i].map) + return (i); + return -1; +} + +char * +rl_get_keymap_name (Keymap map) +{ + int i; + + i = _rl_get_keymap_by_map (map); + return ((i >= 0) ? keymap_names[i].name : (char *)NULL); +} + +int +rl_set_keymap_name (const char *name, Keymap map) +{ + int i, ni, mi; + + /* First check whether or not we're trying to rename a builtin keymap */ + mi = _rl_get_keymap_by_map (map); + if (mi >= 0 && mi < NUM_BUILTIN_KEYMAPS) + return -1; + + /* Then reject attempts to set one of the builtin names to a new map */ + ni = _rl_get_keymap_by_name (name); + if (ni >= 0 && ni < NUM_BUILTIN_KEYMAPS) + return -1; + + /* Renaming a keymap we already added */ + if (mi >= 0) /* XXX - could be >= NUM_BUILTIN_KEYMAPS */ + { + xfree (keymap_names[mi].name); + keymap_names[mi].name = savestring (name); + return mi; + } + + /* Associating new keymap with existing name */ + if (ni >= 0) + { + keymap_names[ni].map = map; + return ni; + } + + for (i = 0; keymap_names[i].name; i++) + ; + + if (keymap_names == builtin_keymap_names) + { + keymap_names = xmalloc ((i + 2) * sizeof (struct name_and_keymap)); + memcpy (keymap_names, builtin_keymap_names, i * sizeof (struct name_and_keymap)); + } + else + keymap_names = xrealloc (keymap_names, (i + 2) * sizeof (struct name_and_keymap)); + + keymap_names[i].name = savestring (name); + keymap_names[i].map = map; + + keymap_names[i+1].name = NULL; + keymap_names[i+1].map = NULL; + + return i; +} + +void +rl_set_keymap (Keymap map) +{ + if (map) + _rl_keymap = map; +} + +Keymap +rl_get_keymap (void) +{ + return (_rl_keymap); +} + +void +rl_set_keymap_from_edit_mode (void) +{ + if (rl_editing_mode == emacs_mode) + _rl_keymap = emacs_standard_keymap; +#if defined (VI_MODE) + else if (rl_editing_mode == vi_mode) + _rl_keymap = vi_insertion_keymap; +#endif /* VI_MODE */ +} + +char * +rl_get_keymap_name_from_edit_mode (void) +{ + if (rl_editing_mode == emacs_mode) + return "emacs"; +#if defined (VI_MODE) + else if (rl_editing_mode == vi_mode) + return "vi"; +#endif /* VI_MODE */ + else + return "none"; +} + +/* **************************************************************** */ +/* */ +/* Key Binding and Function Information */ +/* */ +/* **************************************************************** */ + +/* Each of the following functions produces information about the + state of keybindings and functions known to Readline. The info + is always printed to rl_outstream, and in such a way that it can + be read back in (i.e., passed to rl_parse_and_bind ()). */ + +/* Print the names of functions known to Readline. */ +void +rl_list_funmap_names (void) +{ + register int i; + const char **funmap_names; + + funmap_names = rl_funmap_names (); + + if (!funmap_names) + return; + + for (i = 0; funmap_names[i]; i++) + fprintf (rl_outstream, "%s\n", funmap_names[i]); + + xfree (funmap_names); +} + +static char * +_rl_get_keyname (int key) +{ + char *keyname; + int i, c; + + keyname = (char *)xmalloc (8); + + c = key; + /* Since this is going to be used to write out keysequence-function + pairs for possible inclusion in an inputrc file, we don't want to + do any special meta processing on KEY. */ + +#if 1 + /* XXX - Experimental */ + /* We might want to do this, but the old version of the code did not. */ + + /* If this is an escape character, we don't want to do any more processing. + Just add the special ESC key sequence and return. */ + if (c == ESC) + { + keyname[0] = '\\'; + keyname[1] = 'e'; + keyname[2] = '\0'; + return keyname; + } +#endif + + /* RUBOUT is translated directly into \C-? */ + if (key == RUBOUT) + { + keyname[0] = '\\'; + keyname[1] = 'C'; + keyname[2] = '-'; + keyname[3] = '?'; + keyname[4] = '\0'; + return keyname; + } + + i = 0; + /* Now add special prefixes needed for control characters. This can + potentially change C. */ + if (CTRL_CHAR (c)) + { + keyname[i++] = '\\'; + keyname[i++] = 'C'; + keyname[i++] = '-'; + c = _rl_to_lower (UNCTRL (c)); + } + + /* XXX experimental code. Turn the characters that are not ASCII or + ISO Latin 1 (128 - 159) into octal escape sequences (\200 - \237). + This changes C. */ + if (c >= 128 && c <= 159) + { + keyname[i++] = '\\'; + keyname[i++] = '2'; + c -= 128; + keyname[i++] = (c / 8) + '0'; + c = (c % 8) + '0'; + } + + /* Now, if the character needs to be quoted with a backslash, do that. */ + if (c == '\\' || c == '"') + keyname[i++] = '\\'; + + /* Now add the key, terminate the string, and return it. */ + keyname[i++] = (char) c; + keyname[i] = '\0'; + + return keyname; +} + +/* Return a NULL terminated array of strings which represent the key + sequences that are used to invoke FUNCTION in MAP. */ +char ** +rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map) +{ + register int key; + char **result; + int result_index, result_size; + + result = (char **)NULL; + result_index = result_size = 0; + + for (key = 0; key < KEYMAP_SIZE; key++) + { + switch (map[key].type) + { + case ISMACR: + /* Macros match, if, and only if, the pointers are identical. + Thus, they are treated exactly like functions in here. */ + case ISFUNC: + /* If the function in the keymap is the one we are looking for, + then add the current KEY to the list of invoking keys. */ + if (map[key].function == function) + { + char *keyname; + + keyname = _rl_get_keyname (key); + + if (result_index + 2 > result_size) + { + result_size += 10; + result = (char **)xrealloc (result, result_size * sizeof (char *)); + } + + result[result_index++] = keyname; + result[result_index] = (char *)NULL; + } + break; + + case ISKMAP: + { + char **seqs; + register int i; + + /* Find the list of keyseqs in this map which have FUNCTION as + their target. Add the key sequences found to RESULT. */ + if (map[key].function) + seqs = + rl_invoking_keyseqs_in_map (function, FUNCTION_TO_KEYMAP (map, key)); + else + break; + + if (seqs == 0) + break; + + for (i = 0; seqs[i]; i++) + { + char *keyname = (char *)xmalloc (6 + strlen (seqs[i])); + + if (key == ESC) + { + /* If ESC is the meta prefix and we're converting chars + with the eighth bit set to ESC-prefixed sequences, then + we can use \M-. Otherwise we need to use the sequence + for ESC. */ + if (_rl_convert_meta_chars_to_ascii && map[ESC].type == ISKMAP) + sprintf (keyname, "\\M-"); + else + sprintf (keyname, "\\e"); + } + else + { + int c = key, l = 0; + if (CTRL_CHAR (c) || c == RUBOUT) + { + keyname[l++] = '\\'; + keyname[l++] = 'C'; + keyname[l++] = '-'; + c = (c == RUBOUT) ? '?' : _rl_to_lower (UNCTRL (c)); + } + + if (c == '\\' || c == '"') + keyname[l++] = '\\'; + + keyname[l++] = (char) c; + keyname[l++] = '\0'; + } + + strcat (keyname, seqs[i]); + xfree (seqs[i]); + + if (result_index + 2 > result_size) + { + result_size += 10; + result = (char **)xrealloc (result, result_size * sizeof (char *)); + } + + result[result_index++] = keyname; + result[result_index] = (char *)NULL; + } + + xfree (seqs); + } + break; + } + } + return (result); +} + +/* Return a NULL terminated array of strings which represent the key + sequences that can be used to invoke FUNCTION using the current keymap. */ +char ** +rl_invoking_keyseqs (rl_command_func_t *function) +{ + return (rl_invoking_keyseqs_in_map (function, _rl_keymap)); +} + +/* Print all of the functions and their bindings to rl_outstream. If + PRINT_READABLY is non-zero, then print the output in such a way + that it can be read back in. */ +void +rl_function_dumper (int print_readably) +{ + register int i; + const char **names; + const char *name; + + names = rl_funmap_names (); + + fprintf (rl_outstream, "\n"); + + for (i = 0; name = names[i]; i++) + { + rl_command_func_t *function; + char **invokers; + + function = rl_named_function (name); + invokers = rl_invoking_keyseqs_in_map (function, _rl_keymap); + + if (print_readably) + { + if (!invokers) + fprintf (rl_outstream, "# %s (not bound)\n", name); + else + { + register int j; + + for (j = 0; invokers[j]; j++) + { + fprintf (rl_outstream, "\"%s\": %s\n", + invokers[j], name); + xfree (invokers[j]); + } + + xfree (invokers); + } + } + else + { + if (!invokers) + fprintf (rl_outstream, "%s is not bound to any keys\n", + name); + else + { + register int j; + + fprintf (rl_outstream, "%s can be found on ", name); + + for (j = 0; invokers[j] && j < 5; j++) + { + fprintf (rl_outstream, "\"%s\"%s", invokers[j], + invokers[j + 1] ? ", " : ".\n"); + } + + if (j == 5 && invokers[j]) + fprintf (rl_outstream, "...\n"); + + for (j = 0; invokers[j]; j++) + xfree (invokers[j]); + + xfree (invokers); + } + } + } + + xfree (names); +} + +/* Print all of the current functions and their bindings to + rl_outstream. If an explicit argument is given, then print + the output in such a way that it can be read back in. */ +int +rl_dump_functions (int count, int key) +{ + if (rl_dispatching) + fprintf (rl_outstream, "\r\n"); + rl_function_dumper (rl_explicit_arg); + rl_on_new_line (); + return (0); +} + +static void +_rl_macro_dumper_internal (int print_readably, Keymap map, char *prefix) +{ + register int key; + char *keyname, *out; + int prefix_len; + + for (key = 0; key < KEYMAP_SIZE; key++) + { + switch (map[key].type) + { + case ISMACR: + keyname = _rl_get_keyname (key); + out = _rl_untranslate_macro_value ((char *)map[key].function, 0); + + if (print_readably) + fprintf (rl_outstream, "\"%s%s\": \"%s\"\n", prefix ? prefix : "", + keyname, + out ? out : ""); + else + fprintf (rl_outstream, "%s%s outputs %s\n", prefix ? prefix : "", + keyname, + out ? out : ""); + xfree (keyname); + xfree (out); + break; + case ISFUNC: + break; + case ISKMAP: + prefix_len = prefix ? strlen (prefix) : 0; + if (key == ESC) + { + keyname = (char *)xmalloc (3 + prefix_len); + if (prefix) + strcpy (keyname, prefix); + keyname[prefix_len] = '\\'; + keyname[prefix_len + 1] = 'e'; + keyname[prefix_len + 2] = '\0'; + } + else + { + keyname = _rl_get_keyname (key); + if (prefix) + { + out = (char *)xmalloc (strlen (keyname) + prefix_len + 1); + strcpy (out, prefix); + strcpy (out + prefix_len, keyname); + xfree (keyname); + keyname = out; + } + } + + _rl_macro_dumper_internal (print_readably, FUNCTION_TO_KEYMAP (map, key), keyname); + xfree (keyname); + break; + } + } +} + +void +rl_macro_dumper (int print_readably) +{ + _rl_macro_dumper_internal (print_readably, _rl_keymap, (char *)NULL); +} + +int +rl_dump_macros (int count, int key) +{ + if (rl_dispatching) + fprintf (rl_outstream, "\r\n"); + rl_macro_dumper (rl_explicit_arg); + rl_on_new_line (); + return (0); +} + +static char * +_rl_get_string_variable_value (const char *name) +{ + static char numbuf[32]; + char *ret; + + if (_rl_stricmp (name, "bell-style") == 0) + { + switch (_rl_bell_preference) + { + case NO_BELL: + return "none"; + case VISIBLE_BELL: + return "visible"; + case AUDIBLE_BELL: + default: + return "audible"; + } + } + else if (_rl_stricmp (name, "comment-begin") == 0) + return (_rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT); + else if (_rl_stricmp (name, "completion-display-width") == 0) + { + sprintf (numbuf, "%d", _rl_completion_columns); + return (numbuf); + } + else if (_rl_stricmp (name, "completion-prefix-display-length") == 0) + { + sprintf (numbuf, "%d", _rl_completion_prefix_display_length); + return (numbuf); + } + else if (_rl_stricmp (name, "completion-query-items") == 0) + { + sprintf (numbuf, "%d", rl_completion_query_items); + return (numbuf); + } + else if (_rl_stricmp (name, "editing-mode") == 0) + return (rl_get_keymap_name_from_edit_mode ()); + else if (_rl_stricmp (name, "history-size") == 0) + { + sprintf (numbuf, "%d", history_is_stifled() ? history_max_entries : 0); + return (numbuf); + } + else if (_rl_stricmp (name, "isearch-terminators") == 0) + { + if (_rl_isearch_terminators == 0) + return 0; + ret = _rl_untranslate_macro_value (_rl_isearch_terminators, 0); + if (ret) + { + strncpy (numbuf, ret, sizeof (numbuf) - 1); + xfree (ret); + numbuf[sizeof(numbuf) - 1] = '\0'; + } + else + numbuf[0] = '\0'; + return numbuf; + } + else if (_rl_stricmp (name, "keymap") == 0) + { + ret = rl_get_keymap_name (_rl_keymap); + if (ret == 0) + ret = rl_get_keymap_name_from_edit_mode (); + return (ret ? ret : "none"); + } + else if (_rl_stricmp (name, "keyseq-timeout") == 0) + { + sprintf (numbuf, "%d", _rl_keyseq_timeout); + return (numbuf); + } + else if (_rl_stricmp (name, "emacs-mode-string") == 0) + return (_rl_emacs_mode_str ? _rl_emacs_mode_str : RL_EMACS_MODESTR_DEFAULT); + else if (_rl_stricmp (name, "vi-cmd-mode-string") == 0) + return (_rl_vi_cmd_mode_str ? _rl_vi_cmd_mode_str : RL_VI_CMD_MODESTR_DEFAULT); + else if (_rl_stricmp (name, "vi-ins-mode-string") == 0) + return (_rl_vi_ins_mode_str ? _rl_vi_ins_mode_str : RL_VI_INS_MODESTR_DEFAULT); + else + return (0); +} + +void +rl_variable_dumper (int print_readably) +{ + int i; + char *v; + + for (i = 0; boolean_varlist[i].name; i++) + { + if (print_readably) + fprintf (rl_outstream, "set %s %s\n", boolean_varlist[i].name, + *boolean_varlist[i].value ? "on" : "off"); + else + fprintf (rl_outstream, "%s is set to `%s'\n", boolean_varlist[i].name, + *boolean_varlist[i].value ? "on" : "off"); + } + + for (i = 0; string_varlist[i].name; i++) + { + v = _rl_get_string_variable_value (string_varlist[i].name); + if (v == 0) /* _rl_isearch_terminators can be NULL */ + continue; + if (print_readably) + fprintf (rl_outstream, "set %s %s\n", string_varlist[i].name, v); + else + fprintf (rl_outstream, "%s is set to `%s'\n", string_varlist[i].name, v); + } +} + +/* Print all of the current variables and their values to + rl_outstream. If an explicit argument is given, then print + the output in such a way that it can be read back in. */ +int +rl_dump_variables (int count, int key) +{ + if (rl_dispatching) + fprintf (rl_outstream, "\r\n"); + rl_variable_dumper (rl_explicit_arg); + rl_on_new_line (); + return (0); +} + +/* Return non-zero if any members of ARRAY are a substring in STRING. */ +static int +substring_member_of_array (const char *string, const char * const *array) +{ + while (*array) + { + if (_rl_strindex (string, *array)) + return (1); + array++; + } + return (0); +} diff --git a/bash-5.1/lib/readline/callback.c b/bash-5.1/lib/readline/callback.c new file mode 100644 index 0000000..a466cf9 --- /dev/null +++ b/bash-5.1/lib/readline/callback.c @@ -0,0 +1,360 @@ +/* callback.c -- functions to use readline as an X `callback' mechanism. */ + +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include "rlconf.h" + +#if defined (READLINE_CALLBACKS) + +#include + +#ifdef HAVE_STDLIB_H +# include +#else +# include "ansi_stdlib.h" +#endif + +#include + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" +#include "readline.h" +#include "rlprivate.h" +#include "xmalloc.h" + +/* Private data for callback registration functions. See comments in + rl_callback_read_char for more details. */ +_rl_callback_func_t *_rl_callback_func = 0; +_rl_callback_generic_arg *_rl_callback_data = 0; + +/* Applications can set this to non-zero to have readline's signal handlers + installed during the entire duration of reading a complete line, as in + readline-6.2. This should be used with care, because it can result in + readline receiving signals and not handling them until it's called again + via rl_callback_read_char, thereby stealing them from the application. + By default, signal handlers are only active while readline is active. */ +int rl_persistent_signal_handlers = 0; + +/* **************************************************************** */ +/* */ +/* Callback Readline Functions */ +/* */ +/* **************************************************************** */ + +/* Allow using readline in situations where a program may have multiple + things to handle at once, and dispatches them via select(). Call + rl_callback_handler_install() with the prompt and a function to call + whenever a complete line of input is ready. The user must then + call rl_callback_read_char() every time some input is available, and + rl_callback_read_char() will call the user's function with the complete + text read in at each end of line. The terminal is kept prepped + all the time, except during calls to the user's function. Signal + handlers are only installed when the application calls back into + readline, so readline doesn't `steal' signals from the application. */ + +rl_vcpfunc_t *rl_linefunc; /* user callback function */ +static int in_handler; /* terminal_prepped and signals set? */ + +/* Make sure the terminal is set up, initialize readline, and prompt. */ +static void +_rl_callback_newline (void) +{ + rl_initialize (); + + if (in_handler == 0) + { + in_handler = 1; + + if (rl_prep_term_function) + (*rl_prep_term_function) (_rl_meta_flag); + +#if defined (HANDLE_SIGNALS) + if (rl_persistent_signal_handlers) + rl_set_signals (); +#endif + } + + readline_internal_setup (); + RL_CHECK_SIGNALS (); +} + +/* Install a readline handler, set up the terminal, and issue the prompt. */ +void +rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *linefunc) +{ + rl_set_prompt (prompt); + RL_SETSTATE (RL_STATE_CALLBACK); + rl_linefunc = linefunc; + _rl_callback_newline (); +} + +#if defined (HANDLE_SIGNALS) +#define CALLBACK_READ_RETURN() \ + do { \ + if (rl_persistent_signal_handlers == 0) \ + rl_clear_signals (); \ + return; \ + } while (0) +#else +#define CALLBACK_READ_RETURN() return +#endif + +/* Read one character, and dispatch to the handler if it ends the line. */ +void +rl_callback_read_char (void) +{ + char *line; + int eof, jcode; + static procenv_t olevel; + + if (rl_linefunc == NULL) + { + _rl_errmsg ("readline_callback_read_char() called with no handler!"); + abort (); + } + + memcpy ((void *)olevel, (void *)_rl_top_level, sizeof (procenv_t)); +#if defined (HAVE_POSIX_SIGSETJMP) + jcode = sigsetjmp (_rl_top_level, 0); +#else + jcode = setjmp (_rl_top_level); +#endif + if (jcode) + { + (*rl_redisplay_function) (); + _rl_want_redisplay = 0; + memcpy ((void *)_rl_top_level, (void *)olevel, sizeof (procenv_t)); + CALLBACK_READ_RETURN (); + } + +#if defined (HANDLE_SIGNALS) + /* Install signal handlers only when readline has control. */ + if (rl_persistent_signal_handlers == 0) + rl_set_signals (); +#endif + + do + { + RL_CHECK_SIGNALS (); + if (RL_ISSTATE (RL_STATE_ISEARCH)) + { + eof = _rl_isearch_callback (_rl_iscxt); + if (eof == 0 && (RL_ISSTATE (RL_STATE_ISEARCH) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING)) + rl_callback_read_char (); + + CALLBACK_READ_RETURN (); + } + else if (RL_ISSTATE (RL_STATE_NSEARCH)) + { + eof = _rl_nsearch_callback (_rl_nscxt); + + CALLBACK_READ_RETURN (); + } +#if defined (VI_MODE) + /* States that can occur while in state VIMOTION have to be checked + before RL_STATE_VIMOTION */ + else if (RL_ISSTATE (RL_STATE_CHARSEARCH)) + { + int k; + + k = _rl_callback_data->i2; + + eof = (*_rl_callback_func) (_rl_callback_data); + /* If the function `deregisters' itself, make sure the data is + cleaned up. */ + if (_rl_callback_func == 0) /* XXX - just sanity check */ + { + if (_rl_callback_data) + { + _rl_callback_data_dispose (_rl_callback_data); + _rl_callback_data = 0; + } + } + + /* Messy case where vi motion command can be char search */ + if (RL_ISSTATE (RL_STATE_VIMOTION)) + { + _rl_vi_domove_motion_cleanup (k, _rl_vimvcxt); + _rl_internal_char_cleanup (); + CALLBACK_READ_RETURN (); + } + + _rl_internal_char_cleanup (); + } + else if (RL_ISSTATE (RL_STATE_VIMOTION)) + { + eof = _rl_vi_domove_callback (_rl_vimvcxt); + /* Should handle everything, including cleanup, numeric arguments, + and turning off RL_STATE_VIMOTION */ + if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) + _rl_internal_char_cleanup (); + + CALLBACK_READ_RETURN (); + } +#endif + else if (RL_ISSTATE (RL_STATE_NUMERICARG)) + { + eof = _rl_arg_callback (_rl_argcxt); + if (eof == 0 && (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) && RL_ISSTATE (RL_STATE_INPUTPENDING)) + rl_callback_read_char (); + /* XXX - this should handle _rl_last_command_was_kill better */ + else if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0) + _rl_internal_char_cleanup (); + + CALLBACK_READ_RETURN (); + } + else if (RL_ISSTATE (RL_STATE_MULTIKEY)) + { + eof = _rl_dispatch_callback (_rl_kscxt); /* For now */ + while ((eof == -1 || eof == -2) && RL_ISSTATE (RL_STATE_MULTIKEY) && _rl_kscxt && (_rl_kscxt->flags & KSEQ_DISPATCHED)) + eof = _rl_dispatch_callback (_rl_kscxt); + if (RL_ISSTATE (RL_STATE_MULTIKEY) == 0) + { + _rl_internal_char_cleanup (); + _rl_want_redisplay = 1; + } + } + else if (_rl_callback_func) + { + /* This allows functions that simply need to read an additional + character (like quoted-insert) to register a function to be + called when input is available. _rl_callback_data is a + pointer to a struct that has the argument count originally + passed to the registering function and space for any additional + parameters. */ + eof = (*_rl_callback_func) (_rl_callback_data); + /* If the function `deregisters' itself, make sure the data is + cleaned up. */ + if (_rl_callback_func == 0) + { + if (_rl_callback_data) + { + _rl_callback_data_dispose (_rl_callback_data); + _rl_callback_data = 0; + } + _rl_internal_char_cleanup (); + } + } + else + eof = readline_internal_char (); + + RL_CHECK_SIGNALS (); + if (rl_done == 0 && _rl_want_redisplay) + { + (*rl_redisplay_function) (); + _rl_want_redisplay = 0; + } + + if (rl_done) + { + line = readline_internal_teardown (eof); + + if (rl_deprep_term_function) + (*rl_deprep_term_function) (); +#if defined (HANDLE_SIGNALS) + rl_clear_signals (); +#endif + in_handler = 0; + (*rl_linefunc) (line); + + /* If the user did not clear out the line, do it for him. */ + if (rl_line_buffer[0]) + _rl_init_line_state (); + + /* Redisplay the prompt if readline_handler_{install,remove} + not called. */ + if (in_handler == 0 && rl_linefunc) + _rl_callback_newline (); + } + } + while (rl_pending_input || _rl_pushed_input_available () || RL_ISSTATE (RL_STATE_MACROINPUT)); + + CALLBACK_READ_RETURN (); +} + +/* Remove the handler, and make sure the terminal is in its normal state. */ +void +rl_callback_handler_remove (void) +{ + rl_linefunc = NULL; + RL_UNSETSTATE (RL_STATE_CALLBACK); + RL_CHECK_SIGNALS (); + if (in_handler) + { + in_handler = 0; + if (rl_deprep_term_function) + (*rl_deprep_term_function) (); +#if defined (HANDLE_SIGNALS) + rl_clear_signals (); +#endif + } +} + +_rl_callback_generic_arg * +_rl_callback_data_alloc (int count) +{ + _rl_callback_generic_arg *arg; + + arg = (_rl_callback_generic_arg *)xmalloc (sizeof (_rl_callback_generic_arg)); + arg->count = count; + + arg->i1 = arg->i2 = 0; + + return arg; +} + +void +_rl_callback_data_dispose (_rl_callback_generic_arg *arg) +{ + xfree (arg); +} + +/* Make sure that this agrees with cases in rl_callback_read_char */ +void +rl_callback_sigcleanup (void) +{ + if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) + return; + + if (RL_ISSTATE (RL_STATE_ISEARCH)) + _rl_isearch_cleanup (_rl_iscxt, 0); + else if (RL_ISSTATE (RL_STATE_NSEARCH)) + _rl_nsearch_cleanup (_rl_nscxt, 0); + else if (RL_ISSTATE (RL_STATE_VIMOTION)) + RL_UNSETSTATE (RL_STATE_VIMOTION); + else if (RL_ISSTATE (RL_STATE_NUMERICARG)) + { + _rl_argcxt = 0; + RL_UNSETSTATE (RL_STATE_NUMERICARG); + } + else if (RL_ISSTATE (RL_STATE_MULTIKEY)) + RL_UNSETSTATE (RL_STATE_MULTIKEY); + if (RL_ISSTATE (RL_STATE_CHARSEARCH)) + RL_UNSETSTATE (RL_STATE_CHARSEARCH); + + _rl_callback_func = 0; +} +#endif diff --git a/bash-5.1/lib/readline/chardefs.h b/bash-5.1/lib/readline/chardefs.h new file mode 100644 index 0000000..3cf1326 --- /dev/null +++ b/bash-5.1/lib/readline/chardefs.h @@ -0,0 +1,164 @@ +/* chardefs.h -- Character definitions for readline. */ + +/* Copyright (C) 1994-2015 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#ifndef _CHARDEFS_H_ +#define _CHARDEFS_H_ + +#include + +#if defined (HAVE_CONFIG_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 */ +#else +# include +#endif /* !HAVE_CONFIG_H */ + +#ifndef whitespace +#define whitespace(c) (((c) == ' ') || ((c) == '\t')) +#endif + +#ifdef CTRL +# undef CTRL +#endif +#ifdef UNCTRL +# undef UNCTRL +#endif + +/* Some character stuff. */ +#define control_character_threshold 0x020 /* Smaller than this is control. */ +#define control_character_mask 0x1f /* 0x20 - 1 */ +#define meta_character_threshold 0x07f /* Larger than this is Meta. */ +#define control_character_bit 0x40 /* 0x000000, must be off. */ +#define meta_character_bit 0x080 /* x0000000, must be on. */ +#define largest_char 255 /* Largest character value. */ + +#define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0)) +#define META_CHAR(c) ((c) > meta_character_threshold && (c) <= largest_char) + +#define CTRL(c) ((c) & control_character_mask) +#define META(c) ((c) | meta_character_bit) + +#define UNMETA(c) ((c) & (~meta_character_bit)) +#define UNCTRL(c) _rl_to_upper(((c)|control_character_bit)) + +#if defined STDC_HEADERS || (!defined (isascii) && !defined (HAVE_ISASCII)) +# define IN_CTYPE_DOMAIN(c) 1 +#else +# define IN_CTYPE_DOMAIN(c) isascii(c) +#endif + +#if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) && !defined (__cplusplus) +# define isxdigit(c) (isdigit((unsigned char)(c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) +#endif + +#if defined (CTYPE_NON_ASCII) +# define NON_NEGATIVE(c) 1 +#else +# define NON_NEGATIVE(c) ((unsigned char)(c) == (c)) +#endif + +/* Some systems define these; we want our definitions. */ +#undef ISPRINT + +/* Beware: these only work with single-byte ASCII characters. */ + +#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum ((unsigned char)c)) +#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha ((unsigned char)c)) +#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit ((unsigned char)c)) +#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower ((unsigned char)c)) +#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint ((unsigned char)c)) +#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper ((unsigned char)c)) +#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit ((unsigned char)c)) + +#define _rl_lowercase_p(c) (NON_NEGATIVE(c) && ISLOWER(c)) +#define _rl_uppercase_p(c) (NON_NEGATIVE(c) && ISUPPER(c)) +#define _rl_digit_p(c) ((c) >= '0' && (c) <= '9') + +#define _rl_pure_alphabetic(c) (NON_NEGATIVE(c) && ISALPHA(c)) +#define ALPHABETIC(c) (NON_NEGATIVE(c) && ISALNUM(c)) + +#ifndef _rl_to_upper +# define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)c) : (c)) +# define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)c) : (c)) +#endif + +#ifndef _rl_digit_value +# define _rl_digit_value(x) ((x) - '0') +#endif + +#ifndef _rl_isident +# define _rl_isident(c) (ISALNUM(c) || (c) == '_') +#endif + +#ifndef ISOCTAL +# define ISOCTAL(c) ((c) >= '0' && (c) <= '7') +#endif +#define OCTVALUE(c) ((c) - '0') + +#define HEXVALUE(c) \ + (((c) >= 'a' && (c) <= 'f') \ + ? (c)-'a'+10 \ + : (c) >= 'A' && (c) <= 'F' ? (c)-'A'+10 : (c)-'0') + +#ifndef NEWLINE +#define NEWLINE '\n' +#endif + +#ifndef RETURN +#define RETURN CTRL('M') +#endif + +#ifndef RUBOUT +#define RUBOUT 0x7f +#endif + +#ifndef TAB +#define TAB '\t' +#endif + +#ifdef ABORT_CHAR +#undef ABORT_CHAR +#endif +#define ABORT_CHAR CTRL('G') + +#ifdef PAGE +#undef PAGE +#endif +#define PAGE CTRL('L') + +#ifdef SPACE +#undef SPACE +#endif +#define SPACE ' ' /* XXX - was 0x20 */ + +#ifdef ESC +#undef ESC +#endif +#define ESC CTRL('[') + +#endif /* _CHARDEFS_H_ */ diff --git a/bash-5.1/lib/readline/colors.c b/bash-5.1/lib/readline/colors.c new file mode 100644 index 0000000..9e37527 --- /dev/null +++ b/bash-5.1/lib/readline/colors.c @@ -0,0 +1,301 @@ +/* `dir', `vdir' and `ls' directory listing programs for GNU. + + Modified by Chet Ramey for Readline. + + Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015, 2017, 2019 + Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Richard Stallman and David MacKenzie. */ + +/* Color support by Peter Anvin and Dennis + Flaherty based on original patches by + Greg Lee . */ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include "rlconf.h" + +#if defined __TANDEM +# define _XOPEN_SOURCE_EXTENDED 1 +# define _TANDEM_SOURCE 1 +# include +# include +#endif + +#include + +#include "posixstat.h" // stat related macros (S_ISREG, ...) +#include // S_ISUID + +#ifndef S_ISDIR +# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#endif + +// strlen() +#if defined (HAVE_STRING_H) +# include +#else /* !HAVE_STRING_H */ +# include +#endif /* !HAVE_STRING_H */ + +// abort() +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include "readline.h" +#include "rldefs.h" + +#ifdef COLOR_SUPPORT + +#include "xmalloc.h" +#include "colors.h" + +static bool is_colored (enum indicator_no type); +static void restore_default_color (void); + +COLOR_EXT_TYPE *_rl_color_ext_list = 0; + +/* Output a color indicator (which may contain nulls). */ +void +_rl_put_indicator (const struct bin_str *ind) +{ + fwrite (ind->string, ind->len, 1, rl_outstream); +} + +static bool +is_colored (enum indicator_no colored_filetype) +{ + size_t len = _rl_color_indicator[colored_filetype].len; + char const *s = _rl_color_indicator[colored_filetype].string; + return ! (len == 0 + || (len == 1 && strncmp (s, "0", 1) == 0) + || (len == 2 && strncmp (s, "00", 2) == 0)); +} + +static void +restore_default_color (void) +{ + _rl_put_indicator (&_rl_color_indicator[C_LEFT]); + _rl_put_indicator (&_rl_color_indicator[C_RIGHT]); +} + +void +_rl_set_normal_color (void) +{ + if (is_colored (C_NORM)) + { + _rl_put_indicator (&_rl_color_indicator[C_LEFT]); + _rl_put_indicator (&_rl_color_indicator[C_NORM]); + _rl_put_indicator (&_rl_color_indicator[C_RIGHT]); + } +} + +bool +_rl_print_prefix_color (void) +{ + struct bin_str *s; + + /* What do we want to use for the prefix? Let's try cyan first, see colors.h */ + s = &_rl_color_indicator[C_PREFIX]; + if (s->string != NULL) + { + if (is_colored (C_NORM)) + restore_default_color (); + _rl_put_indicator (&_rl_color_indicator[C_LEFT]); + _rl_put_indicator (s); + _rl_put_indicator (&_rl_color_indicator[C_RIGHT]); + return 0; + } + else + return 1; +} + +/* Returns whether any color sequence was printed. */ +bool +_rl_print_color_indicator (const char *f) +{ + enum indicator_no colored_filetype; + COLOR_EXT_TYPE *ext; /* Color extension */ + size_t len; /* Length of name */ + + const char* name; + char *filename; + struct stat astat, linkstat; + mode_t mode; + int linkok; /* 1 == ok, 0 == dangling symlink, -1 == missing */ + int stat_ok; + + name = f; + + /* This should already have undergone tilde expansion */ + filename = 0; + if (rl_filename_stat_hook) + { + filename = savestring (f); + (*rl_filename_stat_hook) (&filename); + name = filename; + } + +#if defined (HAVE_LSTAT) + stat_ok = lstat(name, &astat); +#else + stat_ok = stat(name, &astat); +#endif + if (stat_ok == 0) + { + mode = astat.st_mode; +#if defined (HAVE_LSTAT) + if (S_ISLNK (mode)) + { + linkok = stat (name, &linkstat) == 0; + if (linkok && strncmp (_rl_color_indicator[C_LINK].string, "target", 6) == 0) + mode = linkstat.st_mode; + } + else +#endif + linkok = 1; + } + else + linkok = -1; + + /* Is this a nonexistent file? If so, linkok == -1. */ + + if (linkok == -1 && _rl_color_indicator[C_MISSING].string != NULL) + colored_filetype = C_MISSING; + else if (linkok == 0 && _rl_color_indicator[C_ORPHAN].string != NULL) + colored_filetype = C_ORPHAN; /* dangling symlink */ + else if(stat_ok != 0) + { + static enum indicator_no filetype_indicator[] = FILETYPE_INDICATORS; + colored_filetype = filetype_indicator[normal]; //f->filetype]; + } + else + { + if (S_ISREG (mode)) + { + colored_filetype = C_FILE; + +#if defined (S_ISUID) + if ((mode & S_ISUID) != 0 && is_colored (C_SETUID)) + colored_filetype = C_SETUID; + else +#endif +#if defined (S_ISGID) + if ((mode & S_ISGID) != 0 && is_colored (C_SETGID)) + colored_filetype = C_SETGID; + else +#endif + if (is_colored (C_CAP) && 0) //f->has_capability) + colored_filetype = C_CAP; + else if ((mode & S_IXUGO) != 0 && is_colored (C_EXEC)) + colored_filetype = C_EXEC; + else if ((1 < astat.st_nlink) && is_colored (C_MULTIHARDLINK)) + colored_filetype = C_MULTIHARDLINK; + } + else if (S_ISDIR (mode)) + { + colored_filetype = C_DIR; + +#if defined (S_ISVTX) + if ((mode & S_ISVTX) && (mode & S_IWOTH) + && is_colored (C_STICKY_OTHER_WRITABLE)) + colored_filetype = C_STICKY_OTHER_WRITABLE; + else +#endif + if ((mode & S_IWOTH) != 0 && is_colored (C_OTHER_WRITABLE)) + colored_filetype = C_OTHER_WRITABLE; +#if defined (S_ISVTX) + else if ((mode & S_ISVTX) != 0 && is_colored (C_STICKY)) + colored_filetype = C_STICKY; +#endif + } +#if defined (S_ISLNK) + else if (S_ISLNK (mode)) + colored_filetype = C_LINK; +#endif + else if (S_ISFIFO (mode)) + colored_filetype = C_FIFO; +#if defined (S_ISSOCK) + else if (S_ISSOCK (mode)) + colored_filetype = C_SOCK; +#endif + else if (S_ISBLK (mode)) + colored_filetype = C_BLK; + else if (S_ISCHR (mode)) + colored_filetype = C_CHR; + else + { + /* Classify a file of some other type as C_ORPHAN. */ + colored_filetype = C_ORPHAN; + } + } + + /* Check the file's suffix only if still classified as C_FILE. */ + ext = NULL; + if (colored_filetype == C_FILE) + { + /* Test if NAME has a recognized suffix. */ + len = strlen (name); + name += len; /* Pointer to final \0. */ + for (ext = _rl_color_ext_list; ext != NULL; ext = ext->next) + { + if (ext->ext.len <= len + && strncmp (name - ext->ext.len, ext->ext.string, + ext->ext.len) == 0) + break; + } + } + + free (filename); /* NULL or savestring return value */ + + { + const struct bin_str *const s + = ext ? &(ext->seq) : &_rl_color_indicator[colored_filetype]; + if (s->string != NULL) + { + /* Need to reset so not dealing with attribute combinations */ + if (is_colored (C_NORM)) + restore_default_color (); + _rl_put_indicator (&_rl_color_indicator[C_LEFT]); + _rl_put_indicator (s); + _rl_put_indicator (&_rl_color_indicator[C_RIGHT]); + return 0; + } + else + return 1; + } +} + +void +_rl_prep_non_filename_text (void) +{ + if (_rl_color_indicator[C_END].string != NULL) + _rl_put_indicator (&_rl_color_indicator[C_END]); + else + { + _rl_put_indicator (&_rl_color_indicator[C_LEFT]); + _rl_put_indicator (&_rl_color_indicator[C_RESET]); + _rl_put_indicator (&_rl_color_indicator[C_RIGHT]); + } +} +#endif /* COLOR_SUPPORT */ diff --git a/bash-5.1/lib/readline/colors.h b/bash-5.1/lib/readline/colors.h new file mode 100644 index 0000000..6561ad9 --- /dev/null +++ b/bash-5.1/lib/readline/colors.h @@ -0,0 +1,126 @@ +/* `dir', `vdir' and `ls' directory listing programs for GNU. + + Modified by Chet Ramey for Readline. + + Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015 + Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Richard Stallman and David MacKenzie. */ + +/* Color support by Peter Anvin and Dennis + Flaherty based on original patches by + Greg Lee . */ + +#ifndef _COLORS_H_ +#define _COLORS_H_ + +#include // size_t + +#if defined(__TANDEM) && defined(HAVE_STDBOOL_H) && (__STDC_VERSION__ < 199901L) +typedef int _Bool; +#endif + +#if defined (HAVE_STDBOOL_H) +# include // bool +#else +typedef int _rl_bool_t; + +#ifdef bool +# undef bool +#endif +#define bool _rl_bool_t + +#ifndef true +# define true 1 +# define false 0 +#endif + +#endif /* !HAVE_STDBOOL_H */ + +/* Null is a valid character in a color indicator (think about Epson + printers, for example) so we have to use a length/buffer string + type. */ +struct bin_str + { + size_t len; + const char *string; + }; + +/* file type indicators (dir, sock, fifo, ...) + Default value is initialized in parse-colors.c. + It is then modified from the values of $LS_COLORS. */ +extern struct bin_str _rl_color_indicator[]; + +/* The LS_COLORS variable is in a termcap-like format. */ +typedef struct _color_ext_type + { + struct bin_str ext; /* The extension we're looking for */ + struct bin_str seq; /* The sequence to output when we do */ + struct _color_ext_type *next; /* Next in list */ + } COLOR_EXT_TYPE; + +/* file extensions indicators (.txt, .log, .jpg, ...) + Values are taken from $LS_COLORS in rl_parse_colors(). */ +extern COLOR_EXT_TYPE *_rl_color_ext_list; + +#define FILETYPE_INDICATORS \ + { \ + C_ORPHAN, C_FIFO, C_CHR, C_DIR, C_BLK, C_FILE, \ + C_LINK, C_SOCK, C_FILE, C_DIR \ + } + +/* Whether we used any colors in the output so far. If so, we will + need to restore the default color later. If not, we will need to + call prep_non_filename_text before using color for the first time. */ + +enum indicator_no + { + C_LEFT, C_RIGHT, C_END, C_RESET, C_NORM, C_FILE, C_DIR, C_LINK, + C_FIFO, C_SOCK, + C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID, + C_STICKY, C_OTHER_WRITABLE, C_STICKY_OTHER_WRITABLE, C_CAP, C_MULTIHARDLINK, + C_CLR_TO_EOL + }; + + +#if !S_IXUGO +# define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) +#endif + +enum filetype + { + unknown, + fifo, + chardev, + directory, + blockdev, + normal, + symbolic_link, + sock, + whiteout, + arg_directory + }; + +/* Prefix color, currently same as socket */ +#define C_PREFIX C_SOCK + +extern void _rl_put_indicator (const struct bin_str *ind); +extern void _rl_set_normal_color (void); +extern bool _rl_print_prefix_color (void); +extern bool _rl_print_color_indicator (const char *f); +extern void _rl_prep_non_filename_text (void); + +#endif /* !_COLORS_H_ */ diff --git a/bash-5.1/lib/readline/compat.c b/bash-5.1/lib/readline/compat.c new file mode 100644 index 0000000..3ade362 --- /dev/null +++ b/bash-5.1/lib/readline/compat.c @@ -0,0 +1,106 @@ +/* compat.c -- backwards compatibility functions. */ + +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#include "rlstdc.h" +#include "rltypedefs.h" + +extern void rl_free_undo_list PARAMS((void)); +extern int rl_maybe_save_line PARAMS((void)); +extern int rl_maybe_unsave_line PARAMS((void)); +extern int rl_maybe_replace_line PARAMS((void)); + +extern int rl_crlf PARAMS((void)); +extern int rl_ding PARAMS((void)); +extern int rl_alphabetic PARAMS((int)); + +extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *)); +extern char *rl_username_completion_function PARAMS((const char *, int)); +extern char *rl_filename_completion_function PARAMS((const char *, int)); + +/* Provide backwards-compatible entry points for old function names. */ + +void +free_undo_list (void) +{ + rl_free_undo_list (); +} + +int +maybe_replace_line (void) +{ + return rl_maybe_replace_line (); +} + +int +maybe_save_line (void) +{ + return rl_maybe_save_line (); +} + +int +maybe_unsave_line (void) +{ + return rl_maybe_unsave_line (); +} + +int +ding (void) +{ + return rl_ding (); +} + +int +crlf (void) +{ + return rl_crlf (); +} + +int +alphabetic (int c) +{ + return rl_alphabetic (c); +} + +char ** +completion_matches (const char *s, rl_compentry_func_t *f) +{ + return rl_completion_matches (s, f); +} + +char * +username_completion_function (const char *s, int i) +{ + return rl_username_completion_function (s, i); +} + +char * +filename_completion_function (const char *s, int i) +{ + return rl_filename_completion_function (s, i); +} diff --git a/bash-5.1/lib/readline/complete.c b/bash-5.1/lib/readline/complete.c new file mode 100644 index 0000000..fc5c3ad --- /dev/null +++ b/bash-5.1/lib/readline/complete.c @@ -0,0 +1,2990 @@ +/* complete.c -- filename completion for readline. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (__TANDEM) +# define _XOPEN_SOURCE_EXTENDED 1 +#endif + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#if defined (__TANDEM) +# include +#endif +#include +#if defined (HAVE_SYS_FILE_H) +# include +#endif + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include + +#include +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#if defined (HAVE_PWD_H) +#include +#endif + +#include "posixdir.h" +#include "posixstat.h" + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" +#include "rlmbutil.h" + +/* Some standard library routines. */ +#include "readline.h" +#include "xmalloc.h" +#include "rlprivate.h" + +#if defined (COLOR_SUPPORT) +# include "colors.h" +#endif + +#ifdef __STDC__ +typedef int QSFUNC (const void *, const void *); +#else +typedef int QSFUNC (); +#endif + +#ifdef HAVE_LSTAT +# define LSTAT lstat +#else +# define LSTAT stat +#endif + +/* Unix version of a hidden file. Could be different on other systems. */ +#define HIDDEN_FILE(fname) ((fname)[0] == '.') + +/* Most systems don't declare getpwent in if _POSIX_SOURCE is + defined. */ +#if defined (HAVE_GETPWENT) && (!defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE)) +extern struct passwd *getpwent PARAMS((void)); +#endif /* HAVE_GETPWENT && (!HAVE_GETPW_DECLS || _POSIX_SOURCE) */ + +/* If non-zero, then this is the address of a function to call when + completing a word would normally display the list of possible matches. + This function is called instead of actually doing the display. + It takes three arguments: (char **matches, int num_matches, int max_length) + where MATCHES is the array of strings that matched, NUM_MATCHES is the + number of strings in that array, and MAX_LENGTH is the length of the + longest string in that array. */ +rl_compdisp_func_t *rl_completion_display_matches_hook = (rl_compdisp_func_t *)NULL; + +#if defined (VISIBLE_STATS) || defined (COLOR_SUPPORT) +# if !defined (X_OK) +# define X_OK 1 +# endif +#endif + +#if defined (VISIBLE_STATS) +static int stat_char PARAMS((char *)); +#endif + +#if defined (COLOR_SUPPORT) +static int colored_stat_start PARAMS((const char *)); +static void colored_stat_end PARAMS((void)); +static int colored_prefix_start PARAMS((void)); +static void colored_prefix_end PARAMS((void)); +#endif + +static int path_isdir PARAMS((const char *)); + +static char *rl_quote_filename PARAMS((char *, int, char *)); + +static void _rl_complete_sigcleanup PARAMS((int, void *)); + +static void set_completion_defaults PARAMS((int)); +static int get_y_or_n PARAMS((int)); +static int _rl_internal_pager PARAMS((int)); +static char *printable_part PARAMS((char *)); +static int fnwidth PARAMS((const char *)); +static int fnprint PARAMS((const char *, int, const char *)); +static int print_filename PARAMS((char *, char *, int)); + +static char **gen_completion_matches PARAMS((char *, int, int, rl_compentry_func_t *, int, int)); + +static char **remove_duplicate_matches PARAMS((char **)); +static void insert_match PARAMS((char *, int, int, char *)); +static int append_to_match PARAMS((char *, int, int, int)); +static void insert_all_matches PARAMS((char **, int, char *)); +static int complete_fncmp PARAMS((const char *, int, const char *, int)); +static void display_matches PARAMS((char **)); +static int compute_lcd_of_matches PARAMS((char **, int, const char *)); +static int postprocess_matches PARAMS((char ***, int)); +static int compare_match PARAMS((char *, const char *)); +static int complete_get_screenwidth PARAMS((void)); + +static char *make_quoted_replacement PARAMS((char *, int, char *)); + +/* **************************************************************** */ +/* */ +/* Completion matching, from readline's point of view. */ +/* */ +/* **************************************************************** */ + +/* Variables known only to the readline library. */ + +/* If non-zero, non-unique completions always show the list of matches. */ +int _rl_complete_show_all = 0; + +/* If non-zero, non-unique completions show the list of matches, unless it + is not possible to do partial completion and modify the line. */ +int _rl_complete_show_unmodified = 0; + +/* If non-zero, completed directory names have a slash appended. */ +int _rl_complete_mark_directories = 1; + +/* If non-zero, the symlinked directory completion behavior introduced in + readline-4.2a is disabled, and symlinks that point to directories have + a slash appended (subject to the value of _rl_complete_mark_directories). + This is user-settable via the mark-symlinked-directories variable. */ +int _rl_complete_mark_symlink_dirs = 0; + +/* If non-zero, completions are printed horizontally in alphabetical order, + like `ls -x'. */ +int _rl_print_completions_horizontally; + +/* Non-zero means that case is not significant in filename completion. */ +#if (defined (__MSDOS__) && !defined (__DJGPP__)) || (defined (_WIN32) && !defined (__CYGWIN__)) +int _rl_completion_case_fold = 1; +#else +int _rl_completion_case_fold = 0; +#endif + +/* Non-zero means that `-' and `_' are equivalent when comparing filenames + for completion. */ +int _rl_completion_case_map = 0; + +/* If zero, don't match hidden files (filenames beginning with a `.' on + Unix) when doing filename completion. */ +int _rl_match_hidden_files = 1; + +/* Length in characters of a common prefix replaced with an ellipsis (`...') + when displaying completion matches. Matches whose printable portion has + more than this number of displaying characters in common will have the common + display prefix replaced with an ellipsis. */ +int _rl_completion_prefix_display_length = 0; + +/* The readline-private number of screen columns to use when displaying + matches. If < 0 or > _rl_screenwidth, it is ignored. */ +int _rl_completion_columns = -1; + +#if defined (COLOR_SUPPORT) +/* Non-zero means to use colors to indicate file type when listing possible + completions. The colors used are taken from $LS_COLORS, if set. */ +int _rl_colored_stats = 0; + +/* Non-zero means to use a color (currently magenta) to indicate the common + prefix of a set of possible word completions. */ +int _rl_colored_completion_prefix = 0; +#endif + +/* If non-zero, when completing in the middle of a word, don't insert + characters from the match that match characters following point in + the word. This means, for instance, completing when the cursor is + after the `e' in `Makefile' won't result in `Makefilefile'. */ +int _rl_skip_completed_text = 0; + +/* If non-zero, menu completion displays the common prefix first in the + cycle of possible completions instead of the last. */ +int _rl_menu_complete_prefix_first = 0; + +/* Global variables available to applications using readline. */ + +#if defined (VISIBLE_STATS) +/* Non-zero means add an additional character to each filename displayed + during listing completion iff rl_filename_completion_desired which helps + to indicate the type of file being listed. */ +int rl_visible_stats = 0; +#endif /* VISIBLE_STATS */ + +/* If non-zero, then this is the address of a function to call when + completing on a directory name. The function is called with + the address of a string (the current directory name) as an arg. */ +rl_icppfunc_t *rl_directory_completion_hook = (rl_icppfunc_t *)NULL; + +rl_icppfunc_t *rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL; + +rl_icppfunc_t *rl_filename_stat_hook = (rl_icppfunc_t *)NULL; + +/* If non-zero, this is the address of a function to call when reading + directory entries from the filesystem for completion and comparing + them to the partial word to be completed. The function should + either return its first argument (if no conversion takes place) or + newly-allocated memory. This can, for instance, convert filenames + between character sets for comparison against what's typed at the + keyboard. The returned value is what is added to the list of + matches. The second argument is the length of the filename to be + converted. */ +rl_dequote_func_t *rl_filename_rewrite_hook = (rl_dequote_func_t *)NULL; + +/* Non-zero means readline completion functions perform tilde expansion. */ +int rl_complete_with_tilde_expansion = 0; + +/* Pointer to the generator function for completion_matches (). + NULL means to use rl_filename_completion_function (), the default filename + completer. */ +rl_compentry_func_t *rl_completion_entry_function = (rl_compentry_func_t *)NULL; + +/* Pointer to generator function for rl_menu_complete (). NULL means to use + *rl_completion_entry_function (see above). */ +rl_compentry_func_t *rl_menu_completion_entry_function = (rl_compentry_func_t *)NULL; + +/* Pointer to alternative function to create matches. + Function is called with TEXT, START, and END. + START and END are indices in RL_LINE_BUFFER saying what the boundaries + of TEXT are. + If this function exists and returns NULL then call the value of + rl_completion_entry_function to try to match, otherwise use the + array of strings returned. */ +rl_completion_func_t *rl_attempted_completion_function = (rl_completion_func_t *)NULL; + +/* Non-zero means to suppress normal filename completion after the + user-specified completion function has been called. */ +int rl_attempted_completion_over = 0; + +/* Set to a character indicating the type of completion being performed + by rl_complete_internal, available for use by application completion + functions. */ +int rl_completion_type = 0; + +/* Up to this many items will be displayed in response to a + possible-completions call. After that, we ask the user if + she is sure she wants to see them all. A negative value means + don't ask. */ +int rl_completion_query_items = 100; + +int _rl_page_completions = 1; + +/* The basic list of characters that signal a break between words for the + completer routine. The contents of this variable is what breaks words + in the shell, i.e. " \t\n\"\\'`@$><=" */ +const char *rl_basic_word_break_characters = " \t\n\"\\'`@$><=;|&{("; /* }) */ + +/* List of basic quoting characters. */ +const char *rl_basic_quote_characters = "\"'"; + +/* The list of characters that signal a break between words for + rl_complete_internal. The default list is the contents of + rl_basic_word_break_characters. */ +/*const*/ char *rl_completer_word_break_characters = (/*const*/ char *)NULL; + +/* Hook function to allow an application to set the completion word + break characters before readline breaks up the line. Allows + position-dependent word break characters. */ +rl_cpvfunc_t *rl_completion_word_break_hook = (rl_cpvfunc_t *)NULL; + +/* List of characters which can be used to quote a substring of the line. + Completion occurs on the entire substring, and within the substring + rl_completer_word_break_characters are treated as any other character, + unless they also appear within this list. */ +const char *rl_completer_quote_characters = (const char *)NULL; + +/* List of characters that should be quoted in filenames by the completer. */ +const char *rl_filename_quote_characters = (const char *)NULL; + +/* List of characters that are word break characters, but should be left + in TEXT when it is passed to the completion function. The shell uses + this to help determine what kind of completing to do. */ +const char *rl_special_prefixes = (const char *)NULL; + +/* If non-zero, then disallow duplicates in the matches. */ +int rl_ignore_completion_duplicates = 1; + +/* Non-zero means that the results of the matches are to be treated + as filenames. This is ALWAYS zero on entry, and can only be changed + within a completion entry finder function. */ +int rl_filename_completion_desired = 0; + +/* Non-zero means that the results of the matches are to be quoted using + double quotes (or an application-specific quoting mechanism) if the + filename contains any characters in rl_filename_quote_chars. This is + ALWAYS non-zero on entry, and can only be changed within a completion + entry finder function. */ +int rl_filename_quoting_desired = 1; + +/* This function, if defined, is called by the completer when real + filename completion is done, after all the matching names have been + generated. It is passed a (char**) known as matches in the code below. + It consists of a NULL-terminated array of pointers to potential + matching strings. The 1st element (matches[0]) is the maximal + substring that is common to all matches. This function can re-arrange + the list of matches as required, but all elements of the array must be + free()'d if they are deleted. The main intent of this function is + to implement FIGNORE a la SunOS csh. */ +rl_compignore_func_t *rl_ignore_some_completions_function = (rl_compignore_func_t *)NULL; + +/* Set to a function to quote a filename in an application-specific fashion. + Called with the text to quote, the type of match found (single or multiple) + and a pointer to the quoting character to be used, which the function can + reset if desired. */ +rl_quote_func_t *rl_filename_quoting_function = rl_quote_filename; + +/* Function to call to remove quoting characters from a filename. Called + before completion is attempted, so the embedded quotes do not interfere + with matching names in the file system. Readline doesn't do anything + with this; it's set only by applications. */ +rl_dequote_func_t *rl_filename_dequoting_function = (rl_dequote_func_t *)NULL; + +/* Function to call to decide whether or not a word break character is + quoted. If a character is quoted, it does not break words for the + completer. */ +rl_linebuf_func_t *rl_char_is_quoted_p = (rl_linebuf_func_t *)NULL; + +/* If non-zero, the completion functions don't append anything except a + possible closing quote. This is set to 0 by rl_complete_internal and + may be changed by an application-specific completion function. */ +int rl_completion_suppress_append = 0; + +/* Character appended to completed words when at the end of the line. The + default is a space. */ +int rl_completion_append_character = ' '; + +/* If non-zero, the completion functions don't append any closing quote. + This is set to 0 by rl_complete_internal and may be changed by an + application-specific completion function. */ +int rl_completion_suppress_quote = 0; + +/* Set to any quote character readline thinks it finds before any application + completion function is called. */ +int rl_completion_quote_character; + +/* Set to a non-zero value if readline found quoting anywhere in the word to + be completed; set before any application completion function is called. */ +int rl_completion_found_quote; + +/* If non-zero, a slash will be appended to completed filenames that are + symbolic links to directory names, subject to the value of the + mark-directories variable (which is user-settable). This exists so + that application completion functions can override the user's preference + (set via the mark-symlinked-directories variable) if appropriate. + It's set to the value of _rl_complete_mark_symlink_dirs in + rl_complete_internal before any application-specific completion + function is called, so without that function doing anything, the user's + preferences are honored. */ +int rl_completion_mark_symlink_dirs; + +/* If non-zero, inhibit completion (temporarily). */ +int rl_inhibit_completion; + +/* Set to the last key used to invoke one of the completion functions */ +int rl_completion_invoking_key; + +/* If non-zero, sort the completion matches. On by default. */ +int rl_sort_completion_matches = 1; + +/* Variables local to this file. */ + +/* Local variable states what happened during the last completion attempt. */ +static int completion_changed_buffer; +static int last_completion_failed = 0; + +/* The result of the query to the user about displaying completion matches */ +static int completion_y_or_n; + +static int _rl_complete_display_matches_interrupt = 0; + +/*************************************/ +/* */ +/* Bindable completion functions */ +/* */ +/*************************************/ + +/* Complete the word at or before point. You have supplied the function + that does the initial simple matching selection algorithm (see + rl_completion_matches ()). The default is to do filename completion. */ +int +rl_complete (int ignore, int invoking_key) +{ + rl_completion_invoking_key = invoking_key; + + if (rl_inhibit_completion) + return (_rl_insert_char (ignore, invoking_key)); +#if 0 + else if (rl_last_func == rl_complete && completion_changed_buffer == 0 && last_completion_failed == 0) +#else + else if (rl_last_func == rl_complete && completion_changed_buffer == 0) +#endif + return (rl_complete_internal ('?')); + else if (_rl_complete_show_all) + return (rl_complete_internal ('!')); + else if (_rl_complete_show_unmodified) + return (rl_complete_internal ('@')); + else + return (rl_complete_internal (TAB)); +} + +/* List the possible completions. See description of rl_complete (). */ +int +rl_possible_completions (int ignore, int invoking_key) +{ + rl_completion_invoking_key = invoking_key; + return (rl_complete_internal ('?')); +} + +int +rl_insert_completions (int ignore, int invoking_key) +{ + rl_completion_invoking_key = invoking_key; + return (rl_complete_internal ('*')); +} + +/* Return the correct value to pass to rl_complete_internal performing + the same tests as rl_complete. This allows consecutive calls to an + application's completion function to list possible completions and for + an application-specific completion function to honor the + show-all-if-ambiguous readline variable. */ +int +rl_completion_mode (rl_command_func_t *cfunc) +{ + if (rl_last_func == cfunc && !completion_changed_buffer) + return '?'; + else if (_rl_complete_show_all) + return '!'; + else if (_rl_complete_show_unmodified) + return '@'; + else + return TAB; +} + +/************************************/ +/* */ +/* Completion utility functions */ +/* */ +/************************************/ + +/* Reset public readline state on a signal or other event. */ +void +_rl_reset_completion_state (void) +{ + rl_completion_found_quote = 0; + rl_completion_quote_character = 0; +} + +static void +_rl_complete_sigcleanup (int sig, void *ptr) +{ + if (sig == SIGINT) /* XXX - for now */ + { + _rl_free_match_list ((char **)ptr); + _rl_complete_display_matches_interrupt = 1; + } +} + +/* Set default values for readline word completion. These are the variables + that application completion functions can change or inspect. */ +static void +set_completion_defaults (int what_to_do) +{ + /* Only the completion entry function can change these. */ + rl_filename_completion_desired = 0; + rl_filename_quoting_desired = 1; + rl_completion_type = what_to_do; + rl_completion_suppress_append = rl_completion_suppress_quote = 0; + rl_completion_append_character = ' '; + + /* The completion entry function may optionally change this. */ + rl_completion_mark_symlink_dirs = _rl_complete_mark_symlink_dirs; + + /* Reset private state. */ + _rl_complete_display_matches_interrupt = 0; +} + +/* The user must press "y" or "n". Non-zero return means "y" pressed. */ +static int +get_y_or_n (int for_pager) +{ + int c; + + /* For now, disable pager in callback mode, until we later convert to state + driven functions. Have to wait until next major version to add new + state definition, since it will change value of RL_STATE_DONE. */ +#if defined (READLINE_CALLBACKS) + if (RL_ISSTATE (RL_STATE_CALLBACK)) + return 1; +#endif + + for (;;) + { + RL_SETSTATE(RL_STATE_MOREINPUT); + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + + if (c == 'y' || c == 'Y' || c == ' ') + return (1); + if (c == 'n' || c == 'N' || c == RUBOUT) + return (0); + if (c == ABORT_CHAR || c < 0) + _rl_abort_internal (); + if (for_pager && (c == NEWLINE || c == RETURN)) + return (2); + if (for_pager && (c == 'q' || c == 'Q')) + return (0); + rl_ding (); + } +} + +static int +_rl_internal_pager (int lines) +{ + int i; + + fprintf (rl_outstream, "--More--"); + fflush (rl_outstream); + i = get_y_or_n (1); + _rl_erase_entire_line (); + if (i == 0) + return -1; + else if (i == 2) + return (lines - 1); + else + return 0; +} + +static int +path_isdir (const char *filename) +{ + struct stat finfo; + + return (stat (filename, &finfo) == 0 && S_ISDIR (finfo.st_mode)); +} + +#if defined (VISIBLE_STATS) +/* Return the character which best describes FILENAME. + `@' for symbolic links + `/' for directories + `*' for executables + `=' for sockets + `|' for FIFOs + `%' for character special devices + `#' for block special devices */ +static int +stat_char (char *filename) +{ + struct stat finfo; + int character, r; + char *f; + const char *fn; + + /* Short-circuit a //server on cygwin, since that will always behave as + a directory. */ +#if __CYGWIN__ + if (filename[0] == '/' && filename[1] == '/' && strchr (filename+2, '/') == 0) + return '/'; +#endif + + f = 0; + if (rl_filename_stat_hook) + { + f = savestring (filename); + (*rl_filename_stat_hook) (&f); + fn = f; + } + else + fn = filename; + +#if defined (HAVE_LSTAT) && defined (S_ISLNK) + r = lstat (fn, &finfo); +#else + r = stat (fn, &finfo); +#endif + + if (r == -1) + { + xfree (f); + return (0); + } + + character = 0; + if (S_ISDIR (finfo.st_mode)) + character = '/'; +#if defined (S_ISCHR) + else if (S_ISCHR (finfo.st_mode)) + character = '%'; +#endif /* S_ISCHR */ +#if defined (S_ISBLK) + else if (S_ISBLK (finfo.st_mode)) + character = '#'; +#endif /* S_ISBLK */ +#if defined (S_ISLNK) + else if (S_ISLNK (finfo.st_mode)) + character = '@'; +#endif /* S_ISLNK */ +#if defined (S_ISSOCK) + else if (S_ISSOCK (finfo.st_mode)) + character = '='; +#endif /* S_ISSOCK */ +#if defined (S_ISFIFO) + else if (S_ISFIFO (finfo.st_mode)) + character = '|'; +#endif + else if (S_ISREG (finfo.st_mode)) + { +#if defined (_WIN32) && !defined (__CYGWIN__) + char *ext; + + /* Windows doesn't do access and X_OK; check file extension instead */ + ext = strrchr (fn, '.'); + if (ext && (_rl_stricmp (ext, ".exe") == 0 || + _rl_stricmp (ext, ".cmd") == 0 || + _rl_stricmp (ext, ".bat") == 0 || + _rl_stricmp (ext, ".com") == 0)) + character = '*'; +#else + if (access (filename, X_OK) == 0) + character = '*'; +#endif + } + + xfree (f); + return (character); +} +#endif /* VISIBLE_STATS */ + +#if defined (COLOR_SUPPORT) +static int +colored_stat_start (const char *filename) +{ + _rl_set_normal_color (); + return (_rl_print_color_indicator (filename)); +} + +static void +colored_stat_end (void) +{ + _rl_prep_non_filename_text (); + _rl_put_indicator (&_rl_color_indicator[C_CLR_TO_EOL]); +} + +static int +colored_prefix_start (void) +{ + _rl_set_normal_color (); + return (_rl_print_prefix_color ()); +} + +static void +colored_prefix_end (void) +{ + colored_stat_end (); /* for now */ +} +#endif + +/* Return the portion of PATHNAME that should be output when listing + possible completions. If we are hacking filename completion, we + are only interested in the basename, the portion following the + final slash. Otherwise, we return what we were passed. Since + printing empty strings is not very informative, if we're doing + filename completion, and the basename is the empty string, we look + for the previous slash and return the portion following that. If + there's no previous slash, we just return what we were passed. */ +static char * +printable_part (char *pathname) +{ + char *temp, *x; + + if (rl_filename_completion_desired == 0) /* don't need to do anything */ + return (pathname); + + temp = strrchr (pathname, '/'); +#if defined (__MSDOS__) || defined (_WIN32) + if (temp == 0 && ISALPHA ((unsigned char)pathname[0]) && pathname[1] == ':') + temp = pathname + 1; +#endif + + if (temp == 0 || *temp == '\0') + return (pathname); + else if (temp[1] == 0 && temp == pathname) + return (pathname); + /* If the basename is NULL, we might have a pathname like '/usr/src/'. + Look for a previous slash and, if one is found, return the portion + following that slash. If there's no previous slash, just return the + pathname we were passed. */ + else if (temp[1] == '\0') + { + for (x = temp - 1; x > pathname; x--) + if (*x == '/') + break; + return ((*x == '/') ? x + 1 : pathname); + } + else + return ++temp; +} + +/* Compute width of STRING when displayed on screen by print_filename */ +static int +fnwidth (const char *string) +{ + int width, pos; +#if defined (HANDLE_MULTIBYTE) + mbstate_t ps; + int left, w; + size_t clen; + wchar_t wc; + + left = strlen (string) + 1; + memset (&ps, 0, sizeof (mbstate_t)); +#endif + + width = pos = 0; + while (string[pos]) + { + if (CTRL_CHAR (string[pos]) || string[pos] == RUBOUT) + { + width += 2; + pos++; + } + else + { +#if defined (HANDLE_MULTIBYTE) + clen = mbrtowc (&wc, string + pos, left - pos, &ps); + if (MB_INVALIDCH (clen)) + { + width++; + pos++; + memset (&ps, 0, sizeof (mbstate_t)); + } + else if (MB_NULLWCH (clen)) + break; + else + { + pos += clen; + w = WCWIDTH (wc); + width += (w >= 0) ? w : 1; + } +#else + width++; + pos++; +#endif + } + } + + return width; +} + +#define ELLIPSIS_LEN 3 + +static int +fnprint (const char *to_print, int prefix_bytes, const char *real_pathname) +{ + int printed_len, w; + const char *s; + int common_prefix_len, print_len; +#if defined (HANDLE_MULTIBYTE) + mbstate_t ps; + const char *end; + size_t tlen; + int width; + wchar_t wc; + + print_len = strlen (to_print); + end = to_print + print_len + 1; + memset (&ps, 0, sizeof (mbstate_t)); +#else + print_len = strlen (to_print); +#endif + + printed_len = common_prefix_len = 0; + + /* Don't print only the ellipsis if the common prefix is one of the + possible completions. Only cut off prefix_bytes if we're going to be + printing the ellipsis, which takes precedence over coloring the + completion prefix (see print_filename() below). */ + if (_rl_completion_prefix_display_length > 0 && prefix_bytes >= print_len) + prefix_bytes = 0; + +#if defined (COLOR_SUPPORT) + if (_rl_colored_stats && (prefix_bytes == 0 || _rl_colored_completion_prefix <= 0)) + colored_stat_start (real_pathname); +#endif + + if (prefix_bytes && _rl_completion_prefix_display_length > 0) + { + char ellipsis; + + ellipsis = (to_print[prefix_bytes] == '.') ? '_' : '.'; + for (w = 0; w < ELLIPSIS_LEN; w++) + putc (ellipsis, rl_outstream); + printed_len = ELLIPSIS_LEN; + } +#if defined (COLOR_SUPPORT) + else if (prefix_bytes && _rl_colored_completion_prefix > 0) + { + common_prefix_len = prefix_bytes; + prefix_bytes = 0; + /* XXX - print color indicator start here */ + colored_prefix_start (); + } +#endif + + s = to_print + prefix_bytes; + while (*s) + { + if (CTRL_CHAR (*s)) + { + putc ('^', rl_outstream); + putc (UNCTRL (*s), rl_outstream); + printed_len += 2; + s++; +#if defined (HANDLE_MULTIBYTE) + memset (&ps, 0, sizeof (mbstate_t)); +#endif + } + else if (*s == RUBOUT) + { + putc ('^', rl_outstream); + putc ('?', rl_outstream); + printed_len += 2; + s++; +#if defined (HANDLE_MULTIBYTE) + memset (&ps, 0, sizeof (mbstate_t)); +#endif + } + else + { +#if defined (HANDLE_MULTIBYTE) + tlen = mbrtowc (&wc, s, end - s, &ps); + if (MB_INVALIDCH (tlen)) + { + tlen = 1; + width = 1; + memset (&ps, 0, sizeof (mbstate_t)); + } + else if (MB_NULLWCH (tlen)) + break; + else + { + w = WCWIDTH (wc); + width = (w >= 0) ? w : 1; + } + fwrite (s, 1, tlen, rl_outstream); + s += tlen; + printed_len += width; +#else + putc (*s, rl_outstream); + s++; + printed_len++; +#endif + } + if (common_prefix_len > 0 && (s - to_print) >= common_prefix_len) + { +#if defined (COLOR_SUPPORT) + /* printed bytes = s - to_print */ + /* printed bytes should never be > but check for paranoia's sake */ + colored_prefix_end (); + if (_rl_colored_stats) + colored_stat_start (real_pathname); /* XXX - experiment */ +#endif + common_prefix_len = 0; + } + } + +#if defined (COLOR_SUPPORT) + /* XXX - unconditional for now */ + if (_rl_colored_stats) + colored_stat_end (); +#endif + + return printed_len; +} + +/* Output TO_PRINT to rl_outstream. If VISIBLE_STATS is defined and we + are using it, check for and output a single character for `special' + filenames. Return the number of characters we output. */ + +static int +print_filename (char *to_print, char *full_pathname, int prefix_bytes) +{ + int printed_len, extension_char, slen, tlen; + char *s, c, *new_full_pathname, *dn; + + extension_char = 0; +#if defined (COLOR_SUPPORT) + /* Defer printing if we want to prefix with a color indicator */ + if (_rl_colored_stats == 0 || rl_filename_completion_desired == 0) +#endif + printed_len = fnprint (to_print, prefix_bytes, to_print); + + if (rl_filename_completion_desired && ( +#if defined (VISIBLE_STATS) + rl_visible_stats || +#endif +#if defined (COLOR_SUPPORT) + _rl_colored_stats || +#endif + _rl_complete_mark_directories)) + { + /* If to_print != full_pathname, to_print is the basename of the + path passed. In this case, we try to expand the directory + name before checking for the stat character. */ + if (to_print != full_pathname) + { + /* Terminate the directory name. */ + c = to_print[-1]; + to_print[-1] = '\0'; + + /* If setting the last slash in full_pathname to a NUL results in + full_pathname being the empty string, we are trying to complete + files in the root directory. If we pass a null string to the + bash directory completion hook, for example, it will expand it + to the current directory. We just want the `/'. */ + if (full_pathname == 0 || *full_pathname == 0) + dn = "/"; + else if (full_pathname[0] != '/') + dn = full_pathname; + else if (full_pathname[1] == 0) + dn = "//"; /* restore trailing slash to `//' */ + else if (full_pathname[1] == '/' && full_pathname[2] == 0) + dn = "/"; /* don't turn /// into // */ + else + dn = full_pathname; + s = tilde_expand (dn); + if (rl_directory_completion_hook) + (*rl_directory_completion_hook) (&s); + + slen = strlen (s); + tlen = strlen (to_print); + new_full_pathname = (char *)xmalloc (slen + tlen + 2); + strcpy (new_full_pathname, s); + if (s[slen - 1] == '/') + slen--; + else + new_full_pathname[slen] = '/'; + strcpy (new_full_pathname + slen + 1, to_print); + +#if defined (VISIBLE_STATS) + if (rl_visible_stats) + extension_char = stat_char (new_full_pathname); + else +#endif + if (_rl_complete_mark_directories) + { + dn = 0; + if (rl_directory_completion_hook == 0 && rl_filename_stat_hook) + { + dn = savestring (new_full_pathname); + (*rl_filename_stat_hook) (&dn); + xfree (new_full_pathname); + new_full_pathname = dn; + } + if (path_isdir (new_full_pathname)) + extension_char = '/'; + } + + /* Move colored-stats code inside fnprint() */ +#if defined (COLOR_SUPPORT) + if (_rl_colored_stats) + printed_len = fnprint (to_print, prefix_bytes, new_full_pathname); +#endif + + xfree (new_full_pathname); + to_print[-1] = c; + } + else + { + s = tilde_expand (full_pathname); +#if defined (VISIBLE_STATS) + if (rl_visible_stats) + extension_char = stat_char (s); + else +#endif + if (_rl_complete_mark_directories && path_isdir (s)) + extension_char = '/'; + + /* Move colored-stats code inside fnprint() */ +#if defined (COLOR_SUPPORT) + if (_rl_colored_stats) + printed_len = fnprint (to_print, prefix_bytes, s); +#endif + } + + xfree (s); + if (extension_char) + { + putc (extension_char, rl_outstream); + printed_len++; + } + } + + return printed_len; +} + +static char * +rl_quote_filename (char *s, int rtype, char *qcp) +{ + char *r; + + r = (char *)xmalloc (strlen (s) + 2); + *r = *rl_completer_quote_characters; + strcpy (r + 1, s); + if (qcp) + *qcp = *rl_completer_quote_characters; + return r; +} + +/* Find the bounds of the current word for completion purposes, and leave + rl_point set to the end of the word. This function skips quoted + substrings (characters between matched pairs of characters in + rl_completer_quote_characters). First we try to find an unclosed + quoted substring on which to do matching. If one is not found, we use + the word break characters to find the boundaries of the current word. + We call an application-specific function to decide whether or not a + particular word break character is quoted; if that function returns a + non-zero result, the character does not break a word. This function + returns the opening quote character if we found an unclosed quoted + substring, '\0' otherwise. FP, if non-null, is set to a value saying + which (shell-like) quote characters we found (single quote, double + quote, or backslash) anywhere in the string. DP, if non-null, is set to + the value of the delimiter character that caused a word break. */ + +char +_rl_find_completion_word (int *fp, int *dp) +{ + int scan, end, found_quote, delimiter, pass_next, isbrk; + char quote_char, *brkchars; + + end = rl_point; + found_quote = delimiter = 0; + quote_char = '\0'; + + brkchars = 0; + if (rl_completion_word_break_hook) + brkchars = (*rl_completion_word_break_hook) (); + if (brkchars == 0) + brkchars = rl_completer_word_break_characters; + + if (rl_completer_quote_characters) + { + /* We have a list of characters which can be used in pairs to + quote substrings for the completer. Try to find the start + of an unclosed quoted substring. */ + /* FOUND_QUOTE is set so we know what kind of quotes we found. */ + for (scan = pass_next = 0; scan < end; scan = MB_NEXTCHAR (rl_line_buffer, scan, 1, MB_FIND_ANY)) + { + if (pass_next) + { + pass_next = 0; + continue; + } + + /* Shell-like semantics for single quotes -- don't allow backslash + to quote anything in single quotes, especially not the closing + quote. If you don't like this, take out the check on the value + of quote_char. */ + if (quote_char != '\'' && rl_line_buffer[scan] == '\\') + { + pass_next = 1; + found_quote |= RL_QF_BACKSLASH; + continue; + } + + if (quote_char != '\0') + { + /* Ignore everything until the matching close quote char. */ + if (rl_line_buffer[scan] == quote_char) + { + /* Found matching close. Abandon this substring. */ + quote_char = '\0'; + rl_point = end; + } + } + else if (strchr (rl_completer_quote_characters, rl_line_buffer[scan])) + { + /* Found start of a quoted substring. */ + quote_char = rl_line_buffer[scan]; + rl_point = scan + 1; + /* Shell-like quoting conventions. */ + if (quote_char == '\'') + found_quote |= RL_QF_SINGLE_QUOTE; + else if (quote_char == '"') + found_quote |= RL_QF_DOUBLE_QUOTE; + else + found_quote |= RL_QF_OTHER_QUOTE; + } + } + } + + if (rl_point == end && quote_char == '\0') + { + /* We didn't find an unclosed quoted substring upon which to do + completion, so use the word break characters to find the + substring on which to complete. */ + while (rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_ANY)) + { + scan = rl_line_buffer[rl_point]; + + if (strchr (brkchars, scan) == 0) + continue; + + /* Call the application-specific function to tell us whether + this word break character is quoted and should be skipped. */ + if (rl_char_is_quoted_p && found_quote && + (*rl_char_is_quoted_p) (rl_line_buffer, rl_point)) + continue; + + /* Convoluted code, but it avoids an n^2 algorithm with calls + to char_is_quoted. */ + break; + } + } + + /* If we are at an unquoted word break, then advance past it. */ + scan = rl_line_buffer[rl_point]; + + /* If there is an application-specific function to say whether or not + a character is quoted and we found a quote character, let that + function decide whether or not a character is a word break, even + if it is found in rl_completer_word_break_characters. Don't bother + if we're at the end of the line, though. */ + if (scan) + { + if (rl_char_is_quoted_p) + isbrk = (found_quote == 0 || + (*rl_char_is_quoted_p) (rl_line_buffer, rl_point) == 0) && + strchr (brkchars, scan) != 0; + else + isbrk = strchr (brkchars, scan) != 0; + + if (isbrk) + { + /* If the character that caused the word break was a quoting + character, then remember it as the delimiter. */ + if (rl_basic_quote_characters && + strchr (rl_basic_quote_characters, scan) && + (end - rl_point) > 1) + delimiter = scan; + + /* If the character isn't needed to determine something special + about what kind of completion to perform, then advance past it. */ + if (rl_special_prefixes == 0 || strchr (rl_special_prefixes, scan) == 0) + rl_point++; + } + } + + if (fp) + *fp = found_quote; + if (dp) + *dp = delimiter; + + return (quote_char); +} + +static char ** +gen_completion_matches (char *text, int start, int end, rl_compentry_func_t *our_func, int found_quote, int quote_char) +{ + char **matches; + + rl_completion_found_quote = found_quote; + rl_completion_quote_character = quote_char; + + /* If the user wants to TRY to complete, but then wants to give + up and use the default completion function, they set the + variable rl_attempted_completion_function. */ + if (rl_attempted_completion_function) + { + matches = (*rl_attempted_completion_function) (text, start, end); + if (RL_SIG_RECEIVED()) + { + _rl_free_match_list (matches); + matches = 0; + RL_CHECK_SIGNALS (); + } + + if (matches || rl_attempted_completion_over) + { + rl_attempted_completion_over = 0; + return (matches); + } + } + + /* XXX -- filename dequoting moved into rl_filename_completion_function */ + + /* rl_completion_matches will check for signals as well to avoid a long + delay while reading a directory. */ + matches = rl_completion_matches (text, our_func); + if (RL_SIG_RECEIVED()) + { + _rl_free_match_list (matches); + matches = 0; + RL_CHECK_SIGNALS (); + } + return matches; +} + +/* Filter out duplicates in MATCHES. This frees up the strings in + MATCHES. */ +static char ** +remove_duplicate_matches (char **matches) +{ + char *lowest_common; + int i, j, newlen; + char dead_slot; + char **temp_array; + + /* Sort the items. */ + for (i = 0; matches[i]; i++) + ; + + /* Sort the array without matches[0], since we need it to + stay in place no matter what. */ + if (i && rl_sort_completion_matches) + qsort (matches+1, i-1, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare); + + /* Remember the lowest common denominator for it may be unique. */ + lowest_common = savestring (matches[0]); + + for (i = newlen = 0; matches[i + 1]; i++) + { + if (strcmp (matches[i], matches[i + 1]) == 0) + { + xfree (matches[i]); + matches[i] = (char *)&dead_slot; + } + else + newlen++; + } + + /* We have marked all the dead slots with (char *)&dead_slot. + Copy all the non-dead entries into a new array. */ + temp_array = (char **)xmalloc ((3 + newlen) * sizeof (char *)); + for (i = j = 1; matches[i]; i++) + { + if (matches[i] != (char *)&dead_slot) + temp_array[j++] = matches[i]; + } + temp_array[j] = (char *)NULL; + + if (matches[0] != (char *)&dead_slot) + xfree (matches[0]); + + /* Place the lowest common denominator back in [0]. */ + temp_array[0] = lowest_common; + + /* If there is one string left, and it is identical to the + lowest common denominator, then the LCD is the string to + insert. */ + if (j == 2 && strcmp (temp_array[0], temp_array[1]) == 0) + { + xfree (temp_array[1]); + temp_array[1] = (char *)NULL; + } + return (temp_array); +} + +/* Find the common prefix of the list of matches, and put it into + matches[0]. */ +static int +compute_lcd_of_matches (char **match_list, int matches, const char *text) +{ + register int i, c1, c2, si; + int low; /* Count of max-matched characters. */ + int lx; + char *dtext; /* dequoted TEXT, if needed */ +#if defined (HANDLE_MULTIBYTE) + int v; + size_t v1, v2; + mbstate_t ps1, ps2; + wchar_t wc1, wc2; +#endif + + /* If only one match, just use that. Otherwise, compare each + member of the list with the next, finding out where they + stop matching. */ + if (matches == 1) + { + match_list[0] = match_list[1]; + match_list[1] = (char *)NULL; + return 1; + } + + for (i = 1, low = 100000; i < matches; i++) + { +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + memset (&ps1, 0, sizeof (mbstate_t)); + memset (&ps2, 0, sizeof (mbstate_t)); + } +#endif + for (si = 0; (c1 = match_list[i][si]) && (c2 = match_list[i + 1][si]); si++) + { + if (_rl_completion_case_fold) + { + c1 = _rl_to_lower (c1); + c2 = _rl_to_lower (c2); + } +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + v1 = mbrtowc(&wc1, match_list[i]+si, strlen (match_list[i]+si), &ps1); + v2 = mbrtowc (&wc2, match_list[i+1]+si, strlen (match_list[i+1]+si), &ps2); + if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2)) + { + if (c1 != c2) /* do byte comparison */ + break; + continue; + } + if (_rl_completion_case_fold) + { + wc1 = towlower (wc1); + wc2 = towlower (wc2); + } + if (wc1 != wc2) + break; + else if (v1 > 1) + si += v1 - 1; + } + else +#endif + if (c1 != c2) + break; + } + + if (low > si) + low = si; + } + + /* If there were multiple matches, but none matched up to even the + first character, and the user typed something, use that as the + value of matches[0]. */ + if (low == 0 && text && *text) + { + match_list[0] = (char *)xmalloc (strlen (text) + 1); + strcpy (match_list[0], text); + } + else + { + match_list[0] = (char *)xmalloc (low + 1); + + /* XXX - this might need changes in the presence of multibyte chars */ + + /* If we are ignoring case, try to preserve the case of the string + the user typed in the face of multiple matches differing in case. */ + if (_rl_completion_case_fold) + { + /* We're making an assumption here: + IF we're completing filenames AND + the application has defined a filename dequoting function AND + we found a quote character AND + the application has requested filename quoting + THEN + we assume that TEXT was dequoted before checking against + the file system and needs to be dequoted here before we + check against the list of matches + FI */ + dtext = (char *)NULL; + if (rl_filename_completion_desired && + rl_filename_dequoting_function && + rl_completion_found_quote && + rl_filename_quoting_desired) + { + dtext = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); + text = dtext; + } + + /* sort the list to get consistent answers. */ + if (rl_sort_completion_matches) + qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare); + + si = strlen (text); + lx = (si <= low) ? si : low; /* check shorter of text and matches */ + /* Try to preserve the case of what the user typed in the presence of + multiple matches: check each match for something that matches + what the user typed taking case into account; use it up to common + length of matches if one is found. If not, just use first match. */ + for (i = 1; i <= matches; i++) + if (strncmp (match_list[i], text, lx) == 0) + { + strncpy (match_list[0], match_list[i], low); + break; + } + /* no casematch, use first entry */ + if (i > matches) + strncpy (match_list[0], match_list[1], low); + + FREE (dtext); + } + else + strncpy (match_list[0], match_list[1], low); + + match_list[0][low] = '\0'; + } + + return matches; +} + +static int +postprocess_matches (char ***matchesp, int matching_filenames) +{ + char *t, **matches, **temp_matches; + int nmatch, i; + + matches = *matchesp; + + if (matches == 0) + return 0; + + /* It seems to me that in all the cases we handle we would like + to ignore duplicate possibilities. Scan for the text to + insert being identical to the other completions. */ + if (rl_ignore_completion_duplicates) + { + temp_matches = remove_duplicate_matches (matches); + xfree (matches); + matches = temp_matches; + } + + /* If we are matching filenames, then here is our chance to + do clever processing by re-examining the list. Call the + ignore function with the array as a parameter. It can + munge the array, deleting matches as it desires. */ + if (rl_ignore_some_completions_function && matching_filenames) + { + for (nmatch = 1; matches[nmatch]; nmatch++) + ; + (void)(*rl_ignore_some_completions_function) (matches); + if (matches == 0 || matches[0] == 0) + { + FREE (matches); + *matchesp = (char **)0; + return 0; + } + else + { + /* If we removed some matches, recompute the common prefix. */ + for (i = 1; matches[i]; i++) + ; + if (i > 1 && i < nmatch) + { + t = matches[0]; + compute_lcd_of_matches (matches, i - 1, t); + FREE (t); + } + } + } + + *matchesp = matches; + return (1); +} + +static int +complete_get_screenwidth (void) +{ + int cols; + char *envcols; + + cols = _rl_completion_columns; + if (cols >= 0 && cols <= _rl_screenwidth) + return cols; + envcols = getenv ("COLUMNS"); + if (envcols && *envcols) + cols = atoi (envcols); + if (cols >= 0 && cols <= _rl_screenwidth) + return cols; + return _rl_screenwidth; +} + +/* A convenience function for displaying a list of strings in + columnar format on readline's output stream. MATCHES is the list + of strings, in argv format, LEN is the number of strings in MATCHES, + and MAX is the length of the longest string in MATCHES. */ +void +rl_display_match_list (char **matches, int len, int max) +{ + int count, limit, printed_len, lines, cols; + int i, j, k, l, common_length, sind; + char *temp, *t; + + /* Find the length of the prefix common to all items: length as displayed + characters (common_length) and as a byte index into the matches (sind) */ + common_length = sind = 0; + if (_rl_completion_prefix_display_length > 0) + { + t = printable_part (matches[0]); + /* check again in case of /usr/src/ */ + temp = rl_filename_completion_desired ? strrchr (t, '/') : 0; + common_length = temp ? fnwidth (temp) : fnwidth (t); + sind = temp ? strlen (temp) : strlen (t); + if (common_length > max || sind > max) + common_length = sind = 0; + + if (common_length > _rl_completion_prefix_display_length && common_length > ELLIPSIS_LEN) + max -= common_length - ELLIPSIS_LEN; + else + common_length = sind = 0; + } +#if defined (COLOR_SUPPORT) + else if (_rl_colored_completion_prefix > 0) + { + t = printable_part (matches[0]); + temp = rl_filename_completion_desired ? strrchr (t, '/') : 0; + common_length = temp ? fnwidth (temp) : fnwidth (t); + sind = temp ? RL_STRLEN (temp+1) : RL_STRLEN (t); /* want portion after final slash */ + if (common_length > max || sind > max) + common_length = sind = 0; + } +#endif + + /* How many items of MAX length can we fit in the screen window? */ + cols = complete_get_screenwidth (); + max += 2; + limit = cols / max; + if (limit != 1 && (limit * max == cols)) + limit--; + + /* If cols == 0, limit will end up -1 */ + if (cols < _rl_screenwidth && limit < 0) + limit = 1; + + /* Avoid a possible floating exception. If max > cols, + limit will be 0 and a divide-by-zero fault will result. */ + if (limit == 0) + limit = 1; + + /* How many iterations of the printing loop? */ + count = (len + (limit - 1)) / limit; + + /* Watch out for special case. If LEN is less than LIMIT, then + just do the inner printing loop. + 0 < len <= limit implies count = 1. */ + + /* Sort the items if they are not already sorted. */ + if (rl_ignore_completion_duplicates == 0 && rl_sort_completion_matches) + qsort (matches + 1, len, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare); + + rl_crlf (); + + lines = 0; + if (_rl_print_completions_horizontally == 0) + { + /* Print the sorted items, up-and-down alphabetically, like ls. */ + for (i = 1; i <= count; i++) + { + for (j = 0, l = i; j < limit; j++) + { + if (l > len || matches[l] == 0) + break; + else + { + temp = printable_part (matches[l]); + printed_len = print_filename (temp, matches[l], sind); + + if (j + 1 < limit) + { + if (max <= printed_len) + putc (' ', rl_outstream); + else + for (k = 0; k < max - printed_len; k++) + putc (' ', rl_outstream); + } + } + l += count; + } + rl_crlf (); +#if defined (SIGWINCH) + if (RL_SIG_RECEIVED () && RL_SIGWINCH_RECEIVED() == 0) +#else + if (RL_SIG_RECEIVED ()) +#endif + return; + lines++; + if (_rl_page_completions && lines >= (_rl_screenheight - 1) && i < count) + { + lines = _rl_internal_pager (lines); + if (lines < 0) + return; + } + } + } + else + { + /* Print the sorted items, across alphabetically, like ls -x. */ + for (i = 1; matches[i]; i++) + { + temp = printable_part (matches[i]); + printed_len = print_filename (temp, matches[i], sind); + /* Have we reached the end of this line? */ +#if defined (SIGWINCH) + if (RL_SIG_RECEIVED () && RL_SIGWINCH_RECEIVED() == 0) +#else + if (RL_SIG_RECEIVED ()) +#endif + return; + if (matches[i+1]) + { + if (limit == 1 || (i && (limit > 1) && (i % limit) == 0)) + { + rl_crlf (); + lines++; + if (_rl_page_completions && lines >= _rl_screenheight - 1) + { + lines = _rl_internal_pager (lines); + if (lines < 0) + return; + } + } + else if (max <= printed_len) + putc (' ', rl_outstream); + else + for (k = 0; k < max - printed_len; k++) + putc (' ', rl_outstream); + } + } + rl_crlf (); + } +} + +/* Display MATCHES, a list of matching filenames in argv format. This + handles the simple case -- a single match -- first. If there is more + than one match, we compute the number of strings in the list and the + length of the longest string, which will be needed by the display + function. If the application wants to handle displaying the list of + matches itself, it sets RL_COMPLETION_DISPLAY_MATCHES_HOOK to the + address of a function, and we just call it. If we're handling the + display ourselves, we just call rl_display_match_list. We also check + that the list of matches doesn't exceed the user-settable threshold, + and ask the user if he wants to see the list if there are more matches + than RL_COMPLETION_QUERY_ITEMS. */ +static void +display_matches (char **matches) +{ + int len, max, i; + char *temp; + + /* Move to the last visible line of a possibly-multiple-line command. */ + _rl_move_vert (_rl_vis_botlin); + + /* Handle simple case first. What if there is only one answer? */ + if (matches[1] == 0) + { + temp = printable_part (matches[0]); + rl_crlf (); + print_filename (temp, matches[0], 0); + rl_crlf (); + + rl_forced_update_display (); + rl_display_fixed = 1; + + return; + } + + /* There is more than one answer. Find out how many there are, + and find the maximum printed length of a single entry. */ + for (max = 0, i = 1; matches[i]; i++) + { + temp = printable_part (matches[i]); + len = fnwidth (temp); + + if (len > max) + max = len; + } + + len = i - 1; + + /* If the caller has defined a display hook, then call that now. */ + if (rl_completion_display_matches_hook) + { + (*rl_completion_display_matches_hook) (matches, len, max); + return; + } + + /* If there are many items, then ask the user if she really wants to + see them all. */ + if (rl_completion_query_items > 0 && len >= rl_completion_query_items) + { + rl_crlf (); + fprintf (rl_outstream, "Display all %d possibilities? (y or n)", len); + fflush (rl_outstream); + if ((completion_y_or_n = get_y_or_n (0)) == 0) + { + rl_crlf (); + + rl_forced_update_display (); + rl_display_fixed = 1; + + return; + } + } + + rl_display_match_list (matches, len, max); + + rl_forced_update_display (); + rl_display_fixed = 1; +} + +/* qc == pointer to quoting character, if any */ +static char * +make_quoted_replacement (char *match, int mtype, char *qc) +{ + int should_quote, do_replace; + char *replacement; + + /* If we are doing completion on quoted substrings, and any matches + contain any of the completer_word_break_characters, then auto- + matically prepend the substring with a quote character (just pick + the first one from the list of such) if it does not already begin + with a quote string. FIXME: Need to remove any such automatically + inserted quote character when it no longer is necessary, such as + if we change the string we are completing on and the new set of + matches don't require a quoted substring. */ + replacement = match; + + should_quote = match && rl_completer_quote_characters && + rl_filename_completion_desired && + rl_filename_quoting_desired; + + if (should_quote) + should_quote = should_quote && (!qc || !*qc || + (rl_completer_quote_characters && strchr (rl_completer_quote_characters, *qc))); + + if (should_quote) + { + /* If there is a single match, see if we need to quote it. + This also checks whether the common prefix of several + matches needs to be quoted. */ + should_quote = rl_filename_quote_characters + ? (_rl_strpbrk (match, rl_filename_quote_characters) != 0) + : 0; + + do_replace = should_quote ? mtype : NO_MATCH; + /* Quote the replacement, since we found an embedded + word break character in a potential match. */ + if (do_replace != NO_MATCH && rl_filename_quoting_function) + replacement = (*rl_filename_quoting_function) (match, do_replace, qc); + } + return (replacement); +} + +static void +insert_match (char *match, int start, int mtype, char *qc) +{ + char *replacement, *r; + char oqc; + int end, rlen; + + oqc = qc ? *qc : '\0'; + replacement = make_quoted_replacement (match, mtype, qc); + + /* Now insert the match. */ + if (replacement) + { + rlen = strlen (replacement); + /* Don't double an opening quote character. */ + if (qc && *qc && start && rl_line_buffer[start - 1] == *qc && + replacement[0] == *qc) + start--; + /* If make_quoted_replacement changed the quoting character, remove + the opening quote and insert the (fully-quoted) replacement. */ + else if (qc && (*qc != oqc) && start && rl_line_buffer[start - 1] == oqc && + replacement[0] != oqc) + start--; + end = rl_point - 1; + /* Don't double a closing quote character */ + if (qc && *qc && end && rl_line_buffer[rl_point] == *qc && replacement[rlen - 1] == *qc) + end++; + if (_rl_skip_completed_text) + { + r = replacement; + while (start < rl_end && *r && rl_line_buffer[start] == *r) + { + start++; + r++; + } + if (start <= end || *r) + _rl_replace_text (r, start, end); + rl_point = start + strlen (r); + } + else + _rl_replace_text (replacement, start, end); + if (replacement != match) + xfree (replacement); + } +} + +/* Append any necessary closing quote and a separator character to the + just-inserted match. If the user has specified that directories + should be marked by a trailing `/', append one of those instead. The + default trailing character is a space. Returns the number of characters + appended. If NONTRIVIAL_MATCH is set, we test for a symlink (if the OS + has them) and don't add a suffix for a symlink to a directory. A + nontrivial match is one that actually adds to the word being completed. + The variable rl_completion_mark_symlink_dirs controls this behavior + (it's initially set to the what the user has chosen, indicated by the + value of _rl_complete_mark_symlink_dirs, but may be modified by an + application's completion function). */ +static int +append_to_match (char *text, int delimiter, int quote_char, int nontrivial_match) +{ + char temp_string[4], *filename, *fn; + int temp_string_index, s; + struct stat finfo; + + temp_string_index = 0; + if (quote_char && rl_point && rl_completion_suppress_quote == 0 && + rl_line_buffer[rl_point - 1] != quote_char) + temp_string[temp_string_index++] = quote_char; + + if (delimiter) + temp_string[temp_string_index++] = delimiter; + else if (rl_completion_suppress_append == 0 && rl_completion_append_character) + temp_string[temp_string_index++] = rl_completion_append_character; + + temp_string[temp_string_index++] = '\0'; + + if (rl_filename_completion_desired) + { + filename = tilde_expand (text); + if (rl_filename_stat_hook) + { + fn = savestring (filename); + (*rl_filename_stat_hook) (&fn); + xfree (filename); + filename = fn; + } + s = (nontrivial_match && rl_completion_mark_symlink_dirs == 0) + ? LSTAT (filename, &finfo) + : stat (filename, &finfo); + if (s == 0 && S_ISDIR (finfo.st_mode)) + { + if (_rl_complete_mark_directories /* && rl_completion_suppress_append == 0 */) + { + /* This is clumsy. Avoid putting in a double slash if point + is at the end of the line and the previous character is a + slash. */ + if (rl_point && rl_line_buffer[rl_point] == '\0' && rl_line_buffer[rl_point - 1] == '/') + ; + else if (rl_line_buffer[rl_point] != '/') + rl_insert_text ("/"); + } + } +#ifdef S_ISLNK + /* Don't add anything if the filename is a symlink and resolves to a + directory. */ + else if (s == 0 && S_ISLNK (finfo.st_mode) && path_isdir (filename)) + ; +#endif + else + { + if (rl_point == rl_end && temp_string_index) + rl_insert_text (temp_string); + } + xfree (filename); + } + else + { + if (rl_point == rl_end && temp_string_index) + rl_insert_text (temp_string); + } + + return (temp_string_index); +} + +static void +insert_all_matches (char **matches, int point, char *qc) +{ + int i; + char *rp; + + rl_begin_undo_group (); + /* remove any opening quote character; make_quoted_replacement will add + it back. */ + if (qc && *qc && point && rl_line_buffer[point - 1] == *qc) + point--; + rl_delete_text (point, rl_point); + rl_point = point; + + if (matches[1]) + { + for (i = 1; matches[i]; i++) + { + rp = make_quoted_replacement (matches[i], SINGLE_MATCH, qc); + rl_insert_text (rp); + rl_insert_text (" "); + if (rp != matches[i]) + xfree (rp); + } + } + else + { + rp = make_quoted_replacement (matches[0], SINGLE_MATCH, qc); + rl_insert_text (rp); + rl_insert_text (" "); + if (rp != matches[0]) + xfree (rp); + } + rl_end_undo_group (); +} + +void +_rl_free_match_list (char **matches) +{ + register int i; + + if (matches == 0) + return; + + for (i = 0; matches[i]; i++) + xfree (matches[i]); + xfree (matches); +} + +/* Compare a possibly-quoted filename TEXT from the line buffer and a possible + MATCH that is the product of filename completion, which acts on the dequoted + text. */ +static int +compare_match (char *text, const char *match) +{ + char *temp; + int r; + + if (rl_filename_completion_desired && rl_filename_quoting_desired && + rl_completion_found_quote && rl_filename_dequoting_function) + { + temp = (*rl_filename_dequoting_function) (text, rl_completion_quote_character); + r = strcmp (temp, match); + free (temp); + return r; + } + return (strcmp (text, match)); +} + +/* Complete the word at or before point. + WHAT_TO_DO says what to do with the completion. + `?' means list the possible completions. + TAB means do standard completion. + `*' means insert all of the possible completions. + `!' means to do standard completion, and list all possible completions if + there is more than one. + `@' means to do standard completion, and list all possible completions if + there is more than one and partial completion is not possible. */ +int +rl_complete_internal (int what_to_do) +{ + char **matches; + rl_compentry_func_t *our_func; + int start, end, delimiter, found_quote, i, nontrivial_lcd; + char *text, *saved_line_buffer; + char quote_char; + int tlen, mlen, saved_last_completion_failed; + + RL_SETSTATE(RL_STATE_COMPLETING); + + saved_last_completion_failed = last_completion_failed; + + set_completion_defaults (what_to_do); + + saved_line_buffer = rl_line_buffer ? savestring (rl_line_buffer) : (char *)NULL; + 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. */ + 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); + + start = rl_point; + rl_point = end; + + text = rl_copy_text (start, end); + matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char); + /* nontrivial_lcd is set if the common prefix adds something to the word + being completed. */ + nontrivial_lcd = matches && compare_match (text, matches[0]) != 0; + if (what_to_do == '!' || what_to_do == '@') + tlen = strlen (text); + xfree (text); + + if (matches == 0) + { + rl_ding (); + FREE (saved_line_buffer); + completion_changed_buffer = 0; + last_completion_failed = 1; + RL_UNSETSTATE(RL_STATE_COMPLETING); + _rl_reset_completion_state (); + return (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. */ + i = rl_filename_completion_desired; + + if (postprocess_matches (&matches, i) == 0) + { + rl_ding (); + FREE (saved_line_buffer); + completion_changed_buffer = 0; + last_completion_failed = 1; + RL_UNSETSTATE(RL_STATE_COMPLETING); + _rl_reset_completion_state (); + return (0); + } + + if (matches && matches[0] && *matches[0]) + last_completion_failed = 0; + + switch (what_to_do) + { + case TAB: + case '!': + case '@': + /* Insert the first match with proper quoting. */ + if (what_to_do == TAB) + { + if (*matches[0]) + insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, "e_char); + } + else if (*matches[0] && matches[1] == 0) + /* should we perform the check only if there are multiple matches? */ + insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, "e_char); + else if (*matches[0]) /* what_to_do != TAB && multiple matches */ + { + mlen = *matches[0] ? strlen (matches[0]) : 0; + if (mlen >= tlen) + insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, "e_char); + } + + /* If there are more matches, ring the bell to indicate. + If we are in vi mode, Posix.2 says to not ring the bell. + If the `show-all-if-ambiguous' variable is set, display + all the matches immediately. Otherwise, if this was the + only match, and we are hacking files, check the file to + see if it was a directory. If so, and the `mark-directories' + variable is set, add a '/' to the name. If not, and we + are at the end of the line, then add a space. */ + if (matches[1]) + { + if (what_to_do == '!') + { + display_matches (matches); + break; + } + else if (what_to_do == '@') + { + if (nontrivial_lcd == 0) + display_matches (matches); + break; + } + else if (rl_editing_mode != vi_mode) + rl_ding (); /* There are other matches remaining. */ + } + else + append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd); + + break; + + case '*': + insert_all_matches (matches, start, "e_char); + break; + + case '?': + /* Let's try to insert a single match here if the last completion failed + but this attempt returned a single match. */ + if (saved_last_completion_failed && matches[0] && *matches[0] && matches[1] == 0) + { + insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, "e_char); + append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd); + break; + } + + if (rl_completion_display_matches_hook == 0) + { + _rl_sigcleanup = _rl_complete_sigcleanup; + _rl_sigcleanarg = matches; + _rl_complete_display_matches_interrupt = 0; + } + display_matches (matches); + if (_rl_complete_display_matches_interrupt) + { + matches = 0; /* already freed by rl_complete_sigcleanup */ + _rl_complete_display_matches_interrupt = 0; + if (rl_signal_event_hook) + (*rl_signal_event_hook) (); /* XXX */ + } + _rl_sigcleanup = 0; + _rl_sigcleanarg = 0; + break; + + default: + _rl_ttymsg ("bad value %d for what_to_do in rl_complete", what_to_do); + rl_ding (); + FREE (saved_line_buffer); + RL_UNSETSTATE(RL_STATE_COMPLETING); + _rl_free_match_list (matches); + _rl_reset_completion_state (); + return 1; + } + + _rl_free_match_list (matches); + + /* Check to see if the line has changed through all of this manipulation. */ + if (saved_line_buffer) + { + completion_changed_buffer = strcmp (rl_line_buffer, saved_line_buffer) != 0; + xfree (saved_line_buffer); + } + + RL_UNSETSTATE(RL_STATE_COMPLETING); + _rl_reset_completion_state (); + + RL_CHECK_SIGNALS (); + return 0; +} + +/***************************************************************/ +/* */ +/* Application-callable completion match generator functions */ +/* */ +/***************************************************************/ + +/* Return an array of (char *) which is a list of completions for TEXT. + If there are no completions, return a NULL pointer. + The first entry in the returned array is the substitution for TEXT. + The remaining entries are the possible completions. + The array is terminated with a NULL pointer. + + ENTRY_FUNCTION is a function of two args, and returns a (char *). + The first argument is TEXT. + The second is a state argument; it should be zero on the first call, and + non-zero on subsequent calls. It returns a NULL pointer to the caller + when there are no more matches. + */ +char ** +rl_completion_matches (const char *text, rl_compentry_func_t *entry_function) +{ + register int i; + + /* Number of slots in match_list. */ + int match_list_size; + + /* The list of matches. */ + char **match_list; + + /* Number of matches actually found. */ + int matches; + + /* Temporary string binder. */ + char *string; + + matches = 0; + match_list_size = 10; + match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *)); + match_list[1] = (char *)NULL; + + while (string = (*entry_function) (text, matches)) + { + if (RL_SIG_RECEIVED ()) + { + /* Start at 1 because we don't set matches[0] in this function. + Only free the list members if we're building match list from + rl_filename_completion_function, since we know that doesn't + free the strings it returns. */ + if (entry_function == rl_filename_completion_function) + { + for (i = 1; match_list[i]; i++) + xfree (match_list[i]); + } + xfree (match_list); + match_list = 0; + match_list_size = 0; + matches = 0; + RL_CHECK_SIGNALS (); + } + + if (matches + 1 >= match_list_size) + match_list = (char **)xrealloc + (match_list, ((match_list_size += 10) + 1) * sizeof (char *)); + + if (match_list == 0) + return (match_list); + + match_list[++matches] = string; + match_list[matches + 1] = (char *)NULL; + } + + /* If there were any matches, then look through them finding out the + lowest common denominator. That then becomes match_list[0]. */ + if (matches) + compute_lcd_of_matches (match_list, matches, text); + else /* There were no matches. */ + { + xfree (match_list); + match_list = (char **)NULL; + } + return (match_list); +} + +/* A completion function for usernames. + TEXT contains a partial username preceded by a random + character (usually `~'). */ +char * +rl_username_completion_function (const char *text, int state) +{ +#if defined (__WIN32__) || defined (__OPENNT) + return (char *)NULL; +#else /* !__WIN32__ && !__OPENNT) */ + static char *username = (char *)NULL; + static struct passwd *entry; + static int namelen, first_char, first_char_loc; + char *value; + + if (state == 0) + { + FREE (username); + + first_char = *text; + first_char_loc = first_char == '~'; + + username = savestring (&text[first_char_loc]); + namelen = strlen (username); +#if defined (HAVE_GETPWENT) + setpwent (); +#endif + } + +#if defined (HAVE_GETPWENT) + while (entry = getpwent ()) + { + /* Null usernames should result in all users as possible completions. */ + if (namelen == 0 || (STREQN (username, entry->pw_name, namelen))) + break; + } +#endif + + if (entry == 0) + { +#if defined (HAVE_GETPWENT) + endpwent (); +#endif + return ((char *)NULL); + } + else + { + value = (char *)xmalloc (2 + strlen (entry->pw_name)); + + *value = *text; + + strcpy (value + first_char_loc, entry->pw_name); + + if (first_char == '~') + rl_filename_completion_desired = 1; + + return (value); + } +#endif /* !__WIN32__ && !__OPENNT */ +} + +/* Return non-zero if CONVFN matches FILENAME up to the length of FILENAME + (FILENAME_LEN). If _rl_completion_case_fold is set, compare without + regard to the alphabetic case of characters. If + _rl_completion_case_map is set, make `-' and `_' equivalent. CONVFN is + the possibly-converted directory entry; FILENAME is what the user typed. */ +static int +complete_fncmp (const char *convfn, int convlen, const char *filename, int filename_len) +{ + register char *s1, *s2; + int d, len; +#if defined (HANDLE_MULTIBYTE) + size_t v1, v2; + mbstate_t ps1, ps2; + wchar_t wc1, wc2; +#endif + +#if defined (HANDLE_MULTIBYTE) + memset (&ps1, 0, sizeof (mbstate_t)); + memset (&ps2, 0, sizeof (mbstate_t)); +#endif + + if (filename_len == 0) + return 1; + if (convlen < filename_len) + return 0; + + len = filename_len; + s1 = (char *)convfn; + s2 = (char *)filename; + + /* Otherwise, if these match up to the length of filename, then + it is a match. */ + if (_rl_completion_case_fold && _rl_completion_case_map) + { + /* Case-insensitive comparison treating _ and - as equivalent */ +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + do + { + v1 = mbrtowc (&wc1, s1, convlen, &ps1); + v2 = mbrtowc (&wc2, s2, filename_len, &ps2); + if (v1 == 0 && v2 == 0) + return 1; + else if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2)) + { + if (*s1 != *s2) /* do byte comparison */ + return 0; + else if ((*s1 == '-' || *s1 == '_') && (*s2 == '-' || *s2 == '_')) + return 0; + s1++; s2++; len--; + continue; + } + wc1 = towlower (wc1); + wc2 = towlower (wc2); + s1 += v1; + s2 += v1; + len -= v1; + if ((wc1 == L'-' || wc1 == L'_') && (wc2 == L'-' || wc2 == L'_')) + continue; + if (wc1 != wc2) + return 0; + } + while (len != 0); + } + else +#endif + { + do + { + d = _rl_to_lower (*s1) - _rl_to_lower (*s2); + /* *s1 == [-_] && *s2 == [-_] */ + if ((*s1 == '-' || *s1 == '_') && (*s2 == '-' || *s2 == '_')) + d = 0; + if (d != 0) + return 0; + s1++; s2++; /* already checked convlen >= filename_len */ + } + while (--len != 0); + } + + return 1; + } + else if (_rl_completion_case_fold) + { +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + do + { + v1 = mbrtowc (&wc1, s1, convlen, &ps1); + v2 = mbrtowc (&wc2, s2, filename_len, &ps2); + if (v1 == 0 && v2 == 0) + return 1; + else if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2)) + { + if (*s1 != *s2) /* do byte comparison */ + return 0; + s1++; s2++; len--; + continue; + } + wc1 = towlower (wc1); + wc2 = towlower (wc2); + if (wc1 != wc2) + return 0; + s1 += v1; + s2 += v1; + len -= v1; + } + while (len != 0); + return 1; + } + else +#endif + if ((_rl_to_lower (convfn[0]) == _rl_to_lower (filename[0])) && + (convlen >= filename_len) && + (_rl_strnicmp (filename, convfn, filename_len) == 0)) + return 1; + } + else + { + if ((convfn[0] == filename[0]) && + (convlen >= filename_len) && + (strncmp (filename, convfn, filename_len) == 0)) + return 1; + } + return 0; +} + +/* Okay, now we write the entry_function for filename completion. In the + general case. Note that completion in the shell is a little different + because of all the pathnames that must be followed when looking up the + completion for a command. */ +char * +rl_filename_completion_function (const char *text, int state) +{ + static DIR *directory = (DIR *)NULL; + static char *filename = (char *)NULL; + static char *dirname = (char *)NULL; + static char *users_dirname = (char *)NULL; + static int filename_len; + char *temp, *dentry, *convfn; + int dirlen, dentlen, convlen; + int tilde_dirname; + struct dirent *entry; + + /* If we don't have any state, then do some initialization. */ + if (state == 0) + { + /* If we were interrupted before closing the directory or reading + all of its contents, close it. */ + if (directory) + { + closedir (directory); + directory = (DIR *)NULL; + } + FREE (dirname); + FREE (filename); + FREE (users_dirname); + + filename = savestring (text); + if (*text == 0) + text = "."; + dirname = savestring (text); + + temp = strrchr (dirname, '/'); + +#if defined (__MSDOS__) || defined (_WIN32) + /* special hack for //X/... */ + if (dirname[0] == '/' && dirname[1] == '/' && ISALPHA ((unsigned char)dirname[2]) && dirname[3] == '/') + temp = strrchr (dirname + 3, '/'); +#endif + + if (temp) + { + strcpy (filename, ++temp); + *temp = '\0'; + } +#if defined (__MSDOS__) || (defined (_WIN32) && !defined (__CYGWIN__)) + /* searches from current directory on the drive */ + else if (ISALPHA ((unsigned char)dirname[0]) && dirname[1] == ':') + { + strcpy (filename, dirname + 2); + dirname[2] = '\0'; + } +#endif + else + { + dirname[0] = '.'; + dirname[1] = '\0'; + } + + /* We aren't done yet. We also support the "~user" syntax. */ + + /* Save the version of the directory that the user typed, dequoting + it if necessary. */ + if (rl_completion_found_quote && rl_filename_dequoting_function) + users_dirname = (*rl_filename_dequoting_function) (dirname, rl_completion_quote_character); + else + users_dirname = savestring (dirname); + + tilde_dirname = 0; + if (*dirname == '~') + { + temp = tilde_expand (dirname); + xfree (dirname); + dirname = temp; + tilde_dirname = 1; + } + + /* We have saved the possibly-dequoted version of the directory name + the user typed. Now transform the directory name we're going to + pass to opendir(2). The directory rewrite hook modifies only the + directory name; the directory completion hook modifies both the + directory name passed to opendir(2) and the version the user + typed. Both the directory completion and rewrite hooks should perform + any necessary dequoting. The hook functions return 1 if they modify + the directory name argument. If either hook returns 0, it should + not modify the directory name pointer passed as an argument. */ + if (rl_directory_rewrite_hook) + (*rl_directory_rewrite_hook) (&dirname); + else if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&dirname)) + { + xfree (users_dirname); + users_dirname = savestring (dirname); + } + else if (tilde_dirname == 0 && rl_completion_found_quote && rl_filename_dequoting_function) + { + /* delete single and double quotes */ + xfree (dirname); + dirname = savestring (users_dirname); + } + directory = opendir (dirname); + + /* Now dequote a non-null filename. FILENAME will not be NULL, but may + be empty. */ + if (*filename && rl_completion_found_quote && rl_filename_dequoting_function) + { + /* delete single and double quotes */ + temp = (*rl_filename_dequoting_function) (filename, rl_completion_quote_character); + xfree (filename); + filename = temp; + } + filename_len = strlen (filename); + + rl_filename_completion_desired = 1; + } + + /* At this point we should entertain the possibility of hacking wildcarded + filenames, like /usr/man/man/te. If the directory name + contains globbing characters, then build an array of directories, and + then map over that list while completing. */ + /* *** UNIMPLEMENTED *** */ + + /* Now that we have some state, we can read the directory. */ + + entry = (struct dirent *)NULL; + while (directory && (entry = readdir (directory))) + { + convfn = dentry = entry->d_name; + convlen = dentlen = D_NAMLEN (entry); + + if (rl_filename_rewrite_hook) + { + convfn = (*rl_filename_rewrite_hook) (dentry, dentlen); + convlen = (convfn == dentry) ? dentlen : strlen (convfn); + } + + /* Special case for no filename. If the user has disabled the + `match-hidden-files' variable, skip filenames beginning with `.'. + All other entries except "." and ".." match. */ + if (filename_len == 0) + { + if (_rl_match_hidden_files == 0 && HIDDEN_FILE (convfn)) + continue; + + if (convfn[0] != '.' || + (convfn[1] && (convfn[1] != '.' || convfn[2]))) + break; + } + else + { + if (complete_fncmp (convfn, convlen, filename, filename_len)) + break; + } + } + + if (entry == 0) + { + if (directory) + { + closedir (directory); + directory = (DIR *)NULL; + } + if (dirname) + { + xfree (dirname); + dirname = (char *)NULL; + } + if (filename) + { + xfree (filename); + filename = (char *)NULL; + } + if (users_dirname) + { + xfree (users_dirname); + users_dirname = (char *)NULL; + } + + return (char *)NULL; + } + else + { + /* dirname && (strcmp (dirname, ".") != 0) */ + if (dirname && (dirname[0] != '.' || dirname[1])) + { + if (rl_complete_with_tilde_expansion && *users_dirname == '~') + { + dirlen = strlen (dirname); + temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry)); + strcpy (temp, dirname); + /* Canonicalization cuts off any final slash present. We + may need to add it back. */ + if (dirname[dirlen - 1] != '/') + { + temp[dirlen++] = '/'; + temp[dirlen] = '\0'; + } + } + else + { + dirlen = strlen (users_dirname); + temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry)); + strcpy (temp, users_dirname); + /* Make sure that temp has a trailing slash here. */ + if (users_dirname[dirlen - 1] != '/') + temp[dirlen++] = '/'; + } + + strcpy (temp + dirlen, convfn); + } + else + temp = savestring (convfn); + + if (convfn != dentry) + xfree (convfn); + + return (temp); + } +} + +/* An initial implementation of a menu completion function a la tcsh. The + first time (if the last readline command was not rl_old_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_old_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 (int count, int invoking_key) +{ + 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_old_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; + + rl_completion_invoking_key = invoking_key; + + RL_SETSTATE(RL_STATE_COMPLETING); + + /* 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; + RL_UNSETSTATE(RL_STATE_COMPLETING); + return (0); + } + + RL_UNSETSTATE(RL_STATE_COMPLETING); + + 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) + { + while (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, + compare_match (orig_text, matches[match_list_index])); + } + + completion_changed_buffer = 1; + return (0); +} + +/* The current version of menu completion. + The differences between this function and the original are: + +1. It honors the maximum number of completions variable (completion-query-items) +2. It appends to the word as usual if there is only one match +3. It displays the common prefix if there is one, and makes it the first menu + choice if the menu-complete-display-prefix option is enabled +*/ + +int +rl_menu_complete (int count, int 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, cstate; + + /* The first time through, we generate the list of matches and set things + up to insert them. */ + if ((rl_last_func != rl_menu_complete && rl_last_func != rl_backward_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; + + RL_SETSTATE(RL_STATE_COMPLETING); + + /* 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 && compare_match (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; + RL_UNSETSTATE(RL_STATE_COMPLETING); + return (0); + } + + RL_UNSETSTATE(RL_STATE_COMPLETING); + + 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 (_rl_menu_complete_prefix_first) + { + rl_ding (); + return (0); + } + } + else if (match_list_size <= 1) + { + append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd); + full_completion = 1; + return (0); + } + else if (_rl_menu_complete_prefix_first && match_list_size > 1) + { + rl_ding (); + 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) + { + while (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, + compare_match (orig_text, matches[match_list_index])); + } + + completion_changed_buffer = 1; + return (0); +} + +int +rl_backward_menu_complete (int count, int key) +{ + /* Positive arguments to backward-menu-complete translate into negative + arguments for menu-complete, and vice versa. */ + return (rl_menu_complete (-count, key)); +} diff --git a/bash-5.1/lib/readline/display.c b/bash-5.1/lib/readline/display.c new file mode 100644 index 0000000..38b3d0e --- /dev/null +++ b/bash-5.1/lib/readline/display.c @@ -0,0 +1,3557 @@ +/* display.c -- readline redisplay facility. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#include "posixstat.h" + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include + +#ifdef __MSDOS__ +# include +#endif + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" +#include "rlmbutil.h" + +/* Termcap library stuff. */ +#include "tcap.h" + +/* Some standard library routines. */ +#include "readline.h" +#include "history.h" + +#include "rlprivate.h" +#include "xmalloc.h" + +#if !defined (strchr) && !defined (__STDC__) +extern char *strchr (), *strrchr (); +#endif /* !strchr && !__STDC__ */ + +static void putc_face PARAMS((int, int, char *)); +static void puts_face PARAMS((const char *, const char *, int)); +static void norm_face PARAMS((char *, int)); + +static void update_line PARAMS((char *, char *, char *, char *, int, int, int, int)); +static void space_to_eol PARAMS((int)); +static void delete_chars PARAMS((int)); +static void insert_some_chars PARAMS((char *, int, int)); +static void open_some_spaces PARAMS((int)); +static void cr PARAMS((void)); +static void redraw_prompt PARAMS((char *)); +static void _rl_move_cursor_relative PARAMS((int, const char *, const char *)); + +/* Values for FLAGS */ +#define PMT_MULTILINE 0x01 + +static char *expand_prompt PARAMS((char *, int, int *, int *, int *, int *)); + +#define DEFAULT_LINE_BUFFER_SIZE 1024 + +/* State of visible and invisible lines. */ +struct line_state + { + char *line; + char *lface; + int *lbreaks; + int lbsize; +#if defined (HANDLE_MULTIBYTE) + int wbsize; + int *wrapped_line; +#endif + }; + +/* The line display buffers. One is the line currently displayed on + the screen. The other is the line about to be displayed. */ +static struct line_state line_state_array[2]; +static struct line_state *line_state_visible = &line_state_array[0]; +static struct line_state *line_state_invisible = &line_state_array[1]; +static int line_structures_initialized = 0; + +/* Backwards-compatible names. */ +#define inv_lbreaks (line_state_invisible->lbreaks) +#define inv_lbsize (line_state_invisible->lbsize) +#define vis_lbreaks (line_state_visible->lbreaks) +#define vis_lbsize (line_state_visible->lbsize) + +#define visible_line (line_state_visible->line) +#define vis_face (line_state_visible->lface) +#define invisible_line (line_state_invisible->line) +#define inv_face (line_state_invisible->lface) + +#if defined (HANDLE_MULTIBYTE) +static int _rl_col_width PARAMS((const char *, int, int, int)); +#else +# define _rl_col_width(l, s, e, f) (((e) <= (s)) ? 0 : (e) - (s)) +#endif + +/* Heuristic used to decide whether it is faster to move from CUR to NEW + by backing up or outputting a carriage return and moving forward. CUR + and NEW are either both buffer positions or absolute screen positions. */ +#define CR_FASTER(new, cur) (((new) + 1) < ((cur) - (new))) + +/* _rl_last_c_pos is an absolute cursor position in multibyte locales and a + buffer index in others. This macro is used when deciding whether the + current cursor position is in the middle of a prompt string containing + invisible characters. XXX - might need to take `modmark' into account. */ +/* XXX - only valid when tested against _rl_last_c_pos; buffer indices need + to use prompt_last_invisible directly. */ +#define PROMPT_ENDING_INDEX \ + ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) ? prompt_physical_chars : prompt_last_invisible+1) + +#define FACE_NORMAL '0' +#define FACE_STANDOUT '1' +#define FACE_INVALID ((char)1) + +/* **************************************************************** */ +/* */ +/* Display stuff */ +/* */ +/* **************************************************************** */ + +/* This is the stuff that is hard for me. I never seem to write good + display routines in C. Let's see how I do this time. */ + +/* (PWP) Well... Good for a simple line updater, but totally ignores + the problems of input lines longer than the screen width. + + update_line and the code that calls it makes a multiple line, + automatically wrapping line update. Careful attention needs + to be paid to the vertical position variables. */ + +/* Keep two buffers; one which reflects the current contents of the + screen, and the other to draw what we think the new contents should + be. Then compare the buffers, and make whatever changes to the + screen itself that we should. Finally, make the buffer that we + just drew into be the one which reflects the current contents of the + screen, and place the cursor where it belongs. + + Commands that want to can fix the display themselves, and then let + this function know that the display has been fixed by setting the + RL_DISPLAY_FIXED variable. This is good for efficiency. */ + +/* Application-specific redisplay function. */ +rl_voidfunc_t *rl_redisplay_function = rl_redisplay; + +/* Global variables declared here. */ +/* What YOU turn on when you have handled all redisplay yourself. */ +int rl_display_fixed = 0; + +/* The stuff that gets printed out before the actual text of the line. + This is usually pointing to rl_prompt. */ +char *rl_display_prompt = (char *)NULL; + +/* Variables used to include the editing mode in the prompt. */ +char *_rl_emacs_mode_str; +int _rl_emacs_modestr_len; + +char *_rl_vi_ins_mode_str; +int _rl_vi_ins_modestr_len; + +char *_rl_vi_cmd_mode_str; +int _rl_vi_cmd_modestr_len; + +/* Pseudo-global variables declared here. */ + +/* Hints for other parts of readline to give to the display engine. */ +int _rl_suppress_redisplay = 0; +int _rl_want_redisplay = 0; + +/* The visible cursor position. If you print some text, adjust this. */ +/* NOTE: _rl_last_c_pos is used as a buffer index when not in a locale + supporting multibyte characters, and an absolute cursor position when + in such a locale. This is an artifact of the donated multibyte support. + Care must be taken when modifying its value. */ +int _rl_last_c_pos = 0; +int _rl_last_v_pos = 0; + +/* Number of physical lines consumed by the current line buffer currently + on screen minus 1. */ +int _rl_vis_botlin = 0; + +static int _rl_quick_redisplay = 0; + +/* This is a hint update_line gives to rl_redisplay that it has adjusted the + value of _rl_last_c_pos *and* taken the presence of any invisible chars in + the prompt into account. rl_redisplay notes this and does not do the + adjustment itself. */ +static int cpos_adjusted; + +/* The index into the line buffer corresponding to the cursor position */ +static int cpos_buffer_position; + +/* A flag to note when we're displaying the first line of the prompt */ +static int displaying_prompt_first_line; +/* The number of multibyte characters in the prompt, if any */ +static int prompt_multibyte_chars; + +static int _rl_inv_botlin = 0; + +/* Variables used only in this file. */ +/* The last left edge of text that was displayed. This is used when + doing horizontal scrolling. It shifts in thirds of a screenwidth. */ +static int last_lmargin; + +/* A buffer for `modeline' messages. */ +static char *msg_buf = 0; +static int msg_bufsiz = 0; + +/* Non-zero forces the redisplay even if we thought it was unnecessary. */ +static int forced_display; + +/* Default and initial buffer size. Can grow. */ +static int line_size = 0; + +/* Set to a non-zero value if horizontal scrolling has been enabled + automatically because the terminal was resized to height 1. */ +static int horizontal_scrolling_autoset = 0; /* explicit initialization */ + +/* Variables to keep track of the expanded prompt string, which may + include invisible characters. */ + +static char *local_prompt, *local_prompt_prefix; +static int local_prompt_len; +static int prompt_prefix_length; +/* Number of chars in the buffer that contribute to visible chars on the screen. + This might be different from the number of physical chars in the presence + of multibyte characters */ +static int prompt_visible_length; + +/* The number of invisible characters in the line currently being + displayed on the screen. */ +static int visible_wrap_offset; + +/* The number of invisible characters in the prompt string. Static so it + can be shared between rl_redisplay and update_line */ +static int wrap_offset; + +/* The index of the last invisible character in the prompt string. */ +static int prompt_last_invisible; + +/* The length (buffer offset) of the first line of the last (possibly + multi-line) buffer displayed on the screen. */ +static int visible_first_line_len; + +/* Number of invisible characters on the first physical line of the prompt. + Only valid when the number of physical characters in the prompt exceeds + (or is equal to) _rl_screenwidth. */ +static int prompt_invis_chars_first_line; + +static int prompt_last_screen_line; + +static int prompt_physical_chars; + +/* An array of indexes into the prompt string where we will break physical + screen lines. It's easier to compute in expand_prompt and use later in + rl_redisplay instead of having rl_redisplay try to guess about invisible + characters in the prompt or use heuristics about where they are. */ +static int *local_prompt_newlines; + +/* set to a non-zero value by rl_redisplay if we are marking modified history + lines and the current line is so marked. */ +static int modmark; + +static int line_totbytes; + +/* Variables to save and restore prompt and display information. */ + +/* These are getting numerous enough that it's time to create a struct. */ + +static char *saved_local_prompt; +static char *saved_local_prefix; +static int *saved_local_prompt_newlines; + +static int saved_last_invisible; +static int saved_visible_length; +static int saved_prefix_length; +static int saved_local_length; +static int saved_invis_chars_first_line; +static int saved_physical_chars; + +/* Return a string indicating the editing mode, for use in the prompt. */ + +static char * +prompt_modestr (int *lenp) +{ + if (rl_editing_mode == emacs_mode) + { + if (lenp) + *lenp = _rl_emacs_mode_str ? _rl_emacs_modestr_len : RL_EMACS_MODESTR_DEFLEN; + return _rl_emacs_mode_str ? _rl_emacs_mode_str : RL_EMACS_MODESTR_DEFAULT; + } + else if (_rl_keymap == vi_insertion_keymap) + { + if (lenp) + *lenp = _rl_vi_ins_mode_str ? _rl_vi_ins_modestr_len : RL_VI_INS_MODESTR_DEFLEN; + return _rl_vi_ins_mode_str ? _rl_vi_ins_mode_str : RL_VI_INS_MODESTR_DEFAULT; /* vi insert mode */ + } + else + { + if (lenp) + *lenp = _rl_vi_cmd_mode_str ? _rl_vi_cmd_modestr_len : RL_VI_CMD_MODESTR_DEFLEN; + return _rl_vi_cmd_mode_str ? _rl_vi_cmd_mode_str : RL_VI_CMD_MODESTR_DEFAULT; /* vi command mode */ + } +} + +/* Expand the prompt string S and return the number of visible + characters in *LP, if LP is not null. This is currently more-or-less + a placeholder for expansion. LIP, if non-null is a place to store the + index of the last invisible character in the returned string. NIFLP, + if non-zero, is a place to store the number of invisible characters in + the first prompt line. The previous are used as byte counts -- indexes + into a character buffer. *VLP gets the number of physical characters in + the expanded prompt (visible length) */ + +/* Current implementation: + \001 (^A) start non-visible characters + \002 (^B) end non-visible characters + all characters except \001 and \002 (following a \001) are copied to + the returned string; all characters except those between \001 and + \002 are assumed to be `visible'. */ + +/* Possible values for FLAGS: + PMT_MULTILINE caller indicates that this is part of a multiline prompt +*/ + +/* This approximates the number of lines the prompt will take when displayed */ +#define APPROX_DIV(n, d) (((n) < (d)) ? 1 : ((n) / (d)) + 1) + +static char * +expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) +{ + char *r, *ret, *p, *igstart, *nprompt, *ms; + int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars; + int mlen, newlines, newlines_guess, bound; + int mb_cur_max; + + /* We only expand the mode string for the last line of a multiline prompt + (a prompt with embedded newlines). */ + ms = (((pmt == rl_prompt) ^ (flags & PMT_MULTILINE)) && _rl_show_mode_in_prompt) ? prompt_modestr (&mlen) : 0; + if (ms) + { + l = strlen (pmt); + nprompt = (char *)xmalloc (l + mlen + 1); + memcpy (nprompt, ms, mlen); + strcpy (nprompt + mlen, pmt); + } + else + nprompt = pmt; + + mb_cur_max = MB_CUR_MAX; + + if (_rl_screenwidth == 0) + _rl_get_screen_size (0, 0); /* avoid division by zero */ + + /* Short-circuit if we can. We can do this if we are treating the prompt as + a sequence of bytes and there are no invisible characters in the prompt + to deal with. Since we populate local_prompt_newlines, we have to run + through the rest of the function if this prompt looks like it's going to + be longer than one screen line. */ + if ((mb_cur_max <= 1 || rl_byte_oriented) && strchr (nprompt, RL_PROMPT_START_IGNORE) == 0) + { + l = strlen (nprompt); + if (l < (_rl_screenwidth > 0 ? _rl_screenwidth : 80)) + { + r = (nprompt == pmt) ? savestring (pmt) : nprompt; + if (lp) + *lp = l; + if (lip) + *lip = 0; + if (niflp) + *niflp = 0; + if (vlp) + *vlp = l; + + local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * 2); + local_prompt_newlines[0] = 0; + local_prompt_newlines[1] = -1; + + return r; + } + } + + l = strlen (nprompt); /* XXX */ + r = ret = (char *)xmalloc (l + 1); + + /* Guess at how many screen lines the prompt will take to size the array that + keeps track of where the line wraps happen */ + newlines_guess = (_rl_screenwidth > 0) ? APPROX_DIV(l, _rl_screenwidth) : APPROX_DIV(l, 80); + local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * (newlines_guess + 1)); + local_prompt_newlines[newlines = 0] = 0; + for (rl = 1; rl <= newlines_guess; rl++) + local_prompt_newlines[rl] = -1; + + rl = physchars = 0; /* mode string now part of nprompt */ + invfl = 0; /* invisible chars in first line of prompt */ + invflset = 0; /* we only want to set invfl once */ + igstart = 0; /* we're not ignoring any characters yet */ + + for (ignoring = last = ninvis = 0, p = nprompt; p && *p; p++) + { + /* This code strips the invisible character string markers + RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE */ + if (ignoring == 0 && *p == RL_PROMPT_START_IGNORE) /* XXX - check ignoring? */ + { + ignoring = 1; + igstart = p; + continue; + } + else if (ignoring && *p == RL_PROMPT_END_IGNORE) + { + ignoring = 0; + if (p != (igstart + 1)) + last = r - ret - 1; + continue; + } + else + { +#if defined (HANDLE_MULTIBYTE) + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + pind = p - nprompt; + ind = _rl_find_next_mbchar (nprompt, pind, 1, MB_FIND_NONZERO); + l = ind - pind; + while (l--) + *r++ = *p++; + if (!ignoring) + { + /* rl ends up being assigned to prompt_visible_length, + which is the number of characters in the buffer that + contribute to characters on the screen, which might + not be the same as the number of physical characters + on the screen in the presence of multibyte characters */ + rl += ind - pind; + physchars += _rl_col_width (nprompt, pind, ind, 0); + } + else + ninvis += ind - pind; + p--; /* compensate for later increment */ + } + else +#endif + { + *r++ = *p; + if (!ignoring) + { + rl++; /* visible length byte counter */ + physchars++; + } + else + ninvis++; /* invisible chars byte counter */ + } + + if (invflset == 0 && physchars >= _rl_screenwidth) + { + invfl = ninvis; + invflset = 1; + } + + if (physchars >= (bound = (newlines + 1) * _rl_screenwidth) && local_prompt_newlines[newlines+1] == -1) + { + int new; + if (physchars > bound) /* should rarely happen */ + { +#if defined (HANDLE_MULTIBYTE) + *r = '\0'; /* need null-termination for strlen */ + if (mb_cur_max > 1 && rl_byte_oriented == 0) + new = _rl_find_prev_mbchar (ret, r - ret, MB_FIND_ANY); + else +#endif + new = r - ret - (physchars - bound); /* XXX */ + } + else + new = r - ret; + local_prompt_newlines[++newlines] = new; + } + } + } + + if (rl < _rl_screenwidth) + invfl = ninvis; + + *r = '\0'; + if (lp) + *lp = rl; + if (lip) + *lip = last; + if (niflp) + *niflp = invfl; + if (vlp) + *vlp = physchars; + + if (nprompt != pmt) + free (nprompt); + + return ret; +} + +/* Just strip out RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE from + PMT and return the rest of PMT. */ +char * +_rl_strip_prompt (char *pmt) +{ + char *ret; + + ret = expand_prompt (pmt, 0, (int *)NULL, (int *)NULL, (int *)NULL, (int *)NULL); + return ret; +} + +void +_rl_reset_prompt (void) +{ + rl_visible_prompt_length = rl_expand_prompt (rl_prompt); +} + +/* + * Expand the prompt string into the various display components, if + * necessary. + * + * local_prompt = expanded last line of string in rl_display_prompt + * (portion after the final newline) + * local_prompt_prefix = portion before last newline of rl_display_prompt, + * expanded via expand_prompt + * prompt_visible_length = number of visible characters in local_prompt + * prompt_prefix_length = number of visible characters in local_prompt_prefix + * + * It also tries to keep track of the number of invisible characters in the + * prompt string, and where they are. + * + * This function is called once per call to readline(). It may also be + * called arbitrarily to expand the primary prompt. + * + * The return value is the number of visible characters on the last line + * of the (possibly multi-line) prompt. In this case, multi-line means + * there are embedded newlines in the prompt string itself, not that the + * number of physical characters exceeds the screen width and the prompt + * wraps. + */ +int +rl_expand_prompt (char *prompt) +{ + char *p, *t; + int c; + + /* Clear out any saved values. */ + FREE (local_prompt); + FREE (local_prompt_prefix); + + local_prompt = local_prompt_prefix = (char *)0; + local_prompt_len = 0; + prompt_last_invisible = prompt_invis_chars_first_line = 0; + prompt_visible_length = prompt_physical_chars = 0; + + if (prompt == 0 || *prompt == 0) + return (0); + + p = strrchr (prompt, '\n'); + if (p == 0) + { + /* The prompt is only one logical line, though it might wrap. */ + local_prompt = expand_prompt (prompt, 0, &prompt_visible_length, + &prompt_last_invisible, + &prompt_invis_chars_first_line, + &prompt_physical_chars); + local_prompt_prefix = (char *)0; + local_prompt_len = local_prompt ? strlen (local_prompt) : 0; + return (prompt_visible_length); + } + else + { + /* The prompt spans multiple lines. */ + t = ++p; + c = *t; *t = '\0'; + /* The portion of the prompt string up to and including the + final newline is now null-terminated. */ + local_prompt_prefix = expand_prompt (prompt, PMT_MULTILINE, + &prompt_prefix_length, + (int *)NULL, + (int *)NULL, + (int *)NULL); + *t = c; + + local_prompt = expand_prompt (p, PMT_MULTILINE, + &prompt_visible_length, + &prompt_last_invisible, + &prompt_invis_chars_first_line, + &prompt_physical_chars); + local_prompt_len = local_prompt ? strlen (local_prompt) : 0; + return (prompt_prefix_length); + } +} + +/* Allocate the various line structures, making sure they can hold MINSIZE + bytes. If the existing line size can accommodate MINSIZE bytes, don't do + anything. */ +static void +realloc_line (int minsize) +{ + int minimum_size; + int newsize, delta; + + minimum_size = DEFAULT_LINE_BUFFER_SIZE; + if (minsize < minimum_size) + minsize = minimum_size; + if (minsize <= _rl_screenwidth) /* XXX - for gdb */ + minsize = _rl_screenwidth + 1; + if (line_size >= minsize) + return; + + newsize = minimum_size; + while (newsize < minsize) + newsize *= 2; + + visible_line = (char *)xrealloc (visible_line, newsize); + vis_face = (char *)xrealloc (vis_face, newsize); + + invisible_line = (char *)xrealloc (invisible_line, newsize); + inv_face = (char *)xrealloc (inv_face, newsize); + + delta = newsize - line_size; + memset (visible_line + line_size, 0, delta); + memset (vis_face + line_size, FACE_NORMAL, delta); + memset (invisible_line + line_size, 1, delta); + memset (inv_face + line_size, FACE_INVALID, delta); + + line_size = newsize; +} + +/* Initialize the VISIBLE_LINE and INVISIBLE_LINE arrays, and their associated + arrays of line break markers. MINSIZE is the minimum size of VISIBLE_LINE + and INVISIBLE_LINE; if it is greater than LINE_SIZE, LINE_SIZE is + increased. If the lines have already been allocated, this ensures that + they can hold at least MINSIZE characters. */ +static void +init_line_structures (int minsize) +{ + if (invisible_line == 0) /* initialize it */ + { + if (line_size > minsize) + minsize = line_size; + } + realloc_line (minsize); + + if (vis_lbreaks == 0) + { + /* should be enough. */ + inv_lbsize = vis_lbsize = 256; + +#if defined (HANDLE_MULTIBYTE) + line_state_visible->wbsize = vis_lbsize; + line_state_visible->wrapped_line = (int *)xmalloc (line_state_visible->wbsize * sizeof (int)); + + line_state_invisible->wbsize = inv_lbsize; + line_state_invisible->wrapped_line = (int *)xmalloc (line_state_invisible->wbsize * sizeof (int)); +#endif + + inv_lbreaks = (int *)xmalloc (inv_lbsize * sizeof (int)); + vis_lbreaks = (int *)xmalloc (vis_lbsize * sizeof (int)); + inv_lbreaks[0] = vis_lbreaks[0] = 0; + } + + line_structures_initialized = 1; +} + +/* Convenience functions to add chars to the invisible line that update the + face information at the same time. */ +static void /* XXX - change this */ +invis_addc (int *outp, char c, char face) +{ + realloc_line (*outp + 1); + invisible_line[*outp] = c; + inv_face[*outp] = face; + *outp += 1; +} + +static void +invis_adds (int *outp, const char *str, int n, char face) +{ + int i; + + for (i = 0; i < n; i++) + invis_addc (outp, str[i], face); +} + +static void +invis_nul (int *outp) +{ + invis_addc (outp, '\0', 0); + *outp -= 1; +} + +static void +set_active_region (int *beg, int *end) +{ + if (rl_point >= 0 && rl_point <= rl_end && rl_mark >= 0 && rl_mark <= rl_end) + { + *beg = (rl_mark < rl_point) ? rl_mark : rl_point; + *end = (rl_mark < rl_point) ? rl_point : rl_mark; + } +} + +/* Do whatever tests are necessary and tell update_line that it can do a + quick, dumb redisplay on the assumption that there are so many + differences between the old and new lines that it would be a waste to + compute all the differences. + Right now, it just sets _rl_quick_redisplay if the current visible line + is a single line (so we don't have to move vertically or mess with line + wrapping). */ +void +_rl_optimize_redisplay (void) +{ + if (_rl_vis_botlin == 0) + _rl_quick_redisplay = 1; +} + +/* Basic redisplay algorithm. See comments inline. */ +void +rl_redisplay (void) +{ + int in, out, c, linenum, cursor_linenum; + int inv_botlin, lb_botlin, lb_linenum, o_cpos; + int newlines, lpos, temp, n0, num, prompt_lines_estimate; + char *prompt_this_line; + char cur_face; + int hl_begin, hl_end; + int mb_cur_max = MB_CUR_MAX; +#if defined (HANDLE_MULTIBYTE) + wchar_t wc; + size_t wc_bytes; + int wc_width; + mbstate_t ps; + int _rl_wrapped_multicolumn = 0; +#endif + + if (_rl_echoing_p == 0) + return; + + /* Block keyboard interrupts because this function manipulates global + data structures. */ + _rl_block_sigint (); + RL_SETSTATE (RL_STATE_REDISPLAYING); + + cur_face = FACE_NORMAL; + /* Can turn this into an array for multiple highlighted objects in addition + to the region */ + hl_begin = hl_end = -1; + + if (rl_mark_active_p ()) + set_active_region (&hl_begin, &hl_end); + + if (!rl_display_prompt) + rl_display_prompt = ""; + + if (line_structures_initialized == 0) + { + init_line_structures (0); + rl_on_new_line (); + } + else if (line_size <= _rl_screenwidth) + init_line_structures (_rl_screenwidth + 1); + + /* Enable horizontal scrolling automatically for terminals of height 1 + where wrapping lines doesn't work. Disable it as soon as the terminal + height is increased again if it was automatically enabled. */ + if (_rl_screenheight <= 1) + { + if (_rl_horizontal_scroll_mode == 0) + horizontal_scrolling_autoset = 1; + _rl_horizontal_scroll_mode = 1; + } + else if (horizontal_scrolling_autoset) + _rl_horizontal_scroll_mode = 0; + + /* Draw the line into the buffer. */ + cpos_buffer_position = -1; + + prompt_multibyte_chars = prompt_visible_length - prompt_physical_chars; + + out = inv_botlin = 0; + + /* Mark the line as modified or not. We only do this for history + lines. */ + modmark = 0; + if (_rl_mark_modified_lines && current_history () && rl_undo_list) + { + invis_addc (&out, '*', cur_face); + invis_nul (&out); + modmark = 1; + } + + /* If someone thought that the redisplay was handled, but the currently + visible line has a different modification state than the one about + to become visible, then correct the caller's misconception. */ + if (visible_line[0] != invisible_line[0]) + rl_display_fixed = 0; + + /* If the prompt to be displayed is the `primary' readline prompt (the + one passed to readline()), use the values we have already expanded. + If not, use what's already in rl_display_prompt. WRAP_OFFSET is the + number of non-visible characters (bytes) in the prompt string. */ + /* This is where we output the characters in the prompt before the last + newline, if any. If there aren't any embedded newlines, we don't + write anything. Copy the last line of the prompt string into the line in + any case */ + if (rl_display_prompt == rl_prompt || local_prompt) + { + if (local_prompt_prefix && forced_display) + _rl_output_some_chars (local_prompt_prefix, strlen (local_prompt_prefix)); + + if (local_prompt_len > 0) + invis_adds (&out, local_prompt, local_prompt_len, cur_face); + invis_nul (&out); + wrap_offset = local_prompt_len - prompt_visible_length; + } + else + { + int pmtlen; + prompt_this_line = strrchr (rl_display_prompt, '\n'); + if (!prompt_this_line) + prompt_this_line = rl_display_prompt; + else + { + prompt_this_line++; + pmtlen = prompt_this_line - rl_display_prompt; /* temp var */ + if (forced_display) + { + _rl_output_some_chars (rl_display_prompt, pmtlen); + /* Make sure we are at column zero even after a newline, + regardless of the state of terminal output processing. */ + if (pmtlen < 2 || prompt_this_line[-2] != '\r') + cr (); + } + } + + prompt_physical_chars = pmtlen = strlen (prompt_this_line); /* XXX */ + invis_adds (&out, prompt_this_line, pmtlen, cur_face); + invis_nul (&out); + wrap_offset = prompt_invis_chars_first_line = 0; + } + +#if defined (HANDLE_MULTIBYTE) +#define CHECK_INV_LBREAKS() \ + do { \ + if (newlines >= (inv_lbsize - 2)) \ + { \ + inv_lbsize *= 2; \ + inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ + } \ + if (newlines >= (line_state_invisible->wbsize - 2)) \ + { \ + line_state_invisible->wbsize *= 2; \ + line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \ + } \ + } while (0) +#else +#define CHECK_INV_LBREAKS() \ + do { \ + if (newlines >= (inv_lbsize - 2)) \ + { \ + inv_lbsize *= 2; \ + inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ + } \ + } while (0) +#endif /* !HANDLE_MULTIBYTE */ + +#if defined (HANDLE_MULTIBYTE) +#define CHECK_LPOS() \ + do { \ + lpos++; \ + if (lpos >= _rl_screenwidth) \ + { \ + if (newlines >= (inv_lbsize - 2)) \ + { \ + inv_lbsize *= 2; \ + inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ + } \ + inv_lbreaks[++newlines] = out; \ + if (newlines >= (line_state_invisible->wbsize - 2)) \ + { \ + line_state_invisible->wbsize *= 2; \ + line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \ + } \ + line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; \ + lpos = 0; \ + } \ + } while (0) +#else +#define CHECK_LPOS() \ + do { \ + lpos++; \ + if (lpos >= _rl_screenwidth) \ + { \ + if (newlines >= (inv_lbsize - 2)) \ + { \ + inv_lbsize *= 2; \ + inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ + } \ + inv_lbreaks[++newlines] = out; \ + lpos = 0; \ + } \ + } while (0) +#endif + + /* inv_lbreaks[i] is where line i starts in the buffer. */ + inv_lbreaks[newlines = 0] = 0; + /* lpos is a physical cursor position, so it needs to be adjusted by the + number of invisible characters in the prompt, per line. We compute + the line breaks in the prompt string in expand_prompt, taking invisible + characters into account, and if lpos exceeds the screen width, we copy + the data in the loop below. */ + lpos = prompt_physical_chars + modmark; + +#if defined (HANDLE_MULTIBYTE) + memset (line_state_invisible->wrapped_line, 0, line_state_invisible->wbsize * sizeof (int)); + num = 0; +#endif + + /* prompt_invis_chars_first_line is the number of invisible characters (bytes) + in the first physical line of the prompt. + wrap_offset - prompt_invis_chars_first_line is usually 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 + contents of the command line? */ + if (lpos >= _rl_screenwidth) + { + temp = 0; + + /* first copy the linebreaks array we computed in expand_prompt */ + while (local_prompt_newlines[newlines+1] != -1) + { + temp = local_prompt_newlines[newlines+1]; + inv_lbreaks[++newlines] = temp; + } + + /* Now set lpos from the last newline */ + if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0) + lpos = _rl_col_width (local_prompt, temp, local_prompt_len, 1) - (wrap_offset - prompt_invis_chars_first_line); + else + lpos -= (_rl_screenwidth * newlines); + } + + prompt_last_screen_line = newlines; + + /* Draw the rest of the line (after the prompt) into invisible_line, keeping + track of where the cursor is (cpos_buffer_position), the number of the + line containing the cursor (lb_linenum), the last line number (lb_botlin + and inv_botlin). + It maintains an array of line breaks for display (inv_lbreaks). + This handles expanding tabs for display and displaying meta characters. */ + lb_linenum = 0; +#if defined (HANDLE_MULTIBYTE) + in = 0; + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + memset (&ps, 0, sizeof (mbstate_t)); + if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[0])) + { + wc = (wchar_t)rl_line_buffer[0]; + wc_bytes = 1; + } + else + wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps); + } + else + wc_bytes = 1; + while (in < rl_end) +#else + for (in = 0; in < rl_end; in++) +#endif + { + if (in == hl_begin) + cur_face = FACE_STANDOUT; + else if (in == hl_end) + cur_face = FACE_NORMAL; + + c = (unsigned char)rl_line_buffer[in]; + +#if defined (HANDLE_MULTIBYTE) + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + if (MB_INVALIDCH (wc_bytes)) + { + /* Byte sequence is invalid or shortened. Assume that the + first byte represents a character. */ + wc_bytes = 1; + /* Assume that a character occupies a single column. */ + wc_width = 1; + memset (&ps, 0, sizeof (mbstate_t)); + } + else if (MB_NULLWCH (wc_bytes)) + break; /* Found '\0' */ + else + { + temp = WCWIDTH (wc); + wc_width = (temp >= 0) ? temp : 1; + } + } +#endif + + if (in == rl_point) + { + cpos_buffer_position = out; + lb_linenum = newlines; + } + +#if defined (HANDLE_MULTIBYTE) + if (META_CHAR (c) && _rl_output_meta_chars == 0) /* XXX - clean up */ +#else + if (META_CHAR (c)) +#endif + { + if (_rl_output_meta_chars == 0) + { + char obuf[5]; + int olen; + + olen = sprintf (obuf, "\\%o", c); + + if (lpos + olen >= _rl_screenwidth) + { + temp = _rl_screenwidth - lpos; + CHECK_INV_LBREAKS (); + inv_lbreaks[++newlines] = out + temp; +#if defined (HANDLE_MULTIBYTE) + line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; +#endif + lpos = olen - temp; + } + else + lpos += olen; + + for (temp = 0; temp < olen; temp++) + { + invis_addc (&out, obuf[temp], cur_face); + CHECK_LPOS (); + } + } + else + { + invis_addc (&out, c, cur_face); + CHECK_LPOS(); + } + } +#if defined (DISPLAY_TABS) + else if (c == '\t') + { + register int newout; + + newout = out + 8 - lpos % 8; + temp = newout - out; + if (lpos + temp >= _rl_screenwidth) + { + register int temp2; + temp2 = _rl_screenwidth - lpos; + CHECK_INV_LBREAKS (); + inv_lbreaks[++newlines] = out + temp2; +#if defined (HANDLE_MULTIBYTE) + line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; +#endif + lpos = temp - temp2; + while (out < newout) + invis_addc (&out, ' ', cur_face); + } + else + { + while (out < newout) + invis_addc (&out, ' ', cur_face); + lpos += temp; + } + } +#endif + else if (c == '\n' && _rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up) + { + invis_addc (&out, '\0', cur_face); + CHECK_INV_LBREAKS (); + inv_lbreaks[++newlines] = out; +#if defined (HANDLE_MULTIBYTE) + line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; +#endif + lpos = 0; + } + else if (CTRL_CHAR (c) || c == RUBOUT) + { + invis_addc (&out, '^', cur_face); + CHECK_LPOS(); + invis_addc (&out, CTRL_CHAR (c) ? UNCTRL (c) : '?', cur_face); + CHECK_LPOS(); + } + else + { +#if defined (HANDLE_MULTIBYTE) + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + register int i; + + _rl_wrapped_multicolumn = 0; + + if (_rl_screenwidth < lpos + wc_width) + for (i = lpos; i < _rl_screenwidth; i++) + { + /* The space will be removed in update_line() */ + invis_addc (&out, ' ', cur_face); + _rl_wrapped_multicolumn++; + CHECK_LPOS(); + } + if (in == rl_point) + { + cpos_buffer_position = out; + lb_linenum = newlines; + } + for (i = in; i < in+wc_bytes; i++) + invis_addc (&out, rl_line_buffer[i], cur_face); + for (i = 0; i < wc_width; i++) + CHECK_LPOS(); + } + else + { + invis_addc (&out, c, cur_face); + CHECK_LPOS(); + } +#else + invis_addc (&out, c, cur_face); + CHECK_LPOS(); +#endif + } + +#if defined (HANDLE_MULTIBYTE) + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + in += wc_bytes; + if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[in])) + { + wc = (wchar_t)rl_line_buffer[in]; + wc_bytes = 1; + memset (&ps, 0, sizeof (mbstate_t)); /* re-init state */ + } + else + wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps); + } + else + in++; +#endif + } + invis_nul (&out); + line_totbytes = out; + if (cpos_buffer_position < 0) + { + cpos_buffer_position = out; + lb_linenum = newlines; + } + + /* If we are switching from one line to multiple wrapped lines, we don't + want to do a dumb update (or we want to make it smarter). */ + if (_rl_quick_redisplay && newlines > 0) + _rl_quick_redisplay = 0; + + inv_botlin = lb_botlin = _rl_inv_botlin = newlines; + CHECK_INV_LBREAKS (); + inv_lbreaks[newlines+1] = out; +#if defined (HANDLE_MULTIBYTE) + /* This should be 0 anyway */ + line_state_invisible->wrapped_line[newlines+1] = _rl_wrapped_multicolumn; +#endif + cursor_linenum = lb_linenum; + + /* CPOS_BUFFER_POSITION == position in buffer where cursor should be placed. + CURSOR_LINENUM == line number where the cursor should be placed. */ + + /* PWP: now is when things get a bit hairy. The visible and invisible + line buffers are really multiple lines, which would wrap every + (screenwidth - 1) characters. Go through each in turn, finding + the changed region and updating it. The line order is top to bottom. */ + + /* If we can move the cursor up and down, then use multiple lines, + otherwise, let long lines display in a single terminal line, and + horizontally scroll it. */ + displaying_prompt_first_line = 1; + if (_rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up) + { + int nleft, pos, changed_screen_line, tx; + + if (!rl_display_fixed || forced_display) + { + forced_display = 0; + + /* If we have more than a screenful of material to display, then + only display a screenful. We should display the last screen, + not the first. */ + if (out >= _rl_screenchars) + { +#if defined (HANDLE_MULTIBYTE) + if (mb_cur_max > 1 && rl_byte_oriented == 0) + out = _rl_find_prev_mbchar (invisible_line, _rl_screenchars, MB_FIND_ANY); + else +#endif + out = _rl_screenchars - 1; + } + + /* The first line is at character position 0 in the buffer. The + second and subsequent lines start at inv_lbreaks[N], offset by + OFFSET (which has already been calculated above). */ + +#define INVIS_FIRST() (prompt_physical_chars > _rl_screenwidth ? prompt_invis_chars_first_line : wrap_offset) +#define WRAP_OFFSET(line, offset) ((line == 0) \ + ? (offset ? INVIS_FIRST() : 0) \ + : ((line == prompt_last_screen_line) ? wrap_offset-prompt_invis_chars_first_line : 0)) +#define W_OFFSET(line, offset) ((line) == 0 ? offset : 0) +#define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l])) +#define INV_LLEN(l) (inv_lbreaks[l+1] - inv_lbreaks[l]) +#define VIS_CHARS(line) (visible_line + vis_lbreaks[line]) +#define VIS_FACE(line) (vis_face + vis_lbreaks[line]) +#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? "" : VIS_CHARS(line) +#define VIS_LINE_FACE(line) ((line) > _rl_vis_botlin) ? "" : VIS_FACE(line) +#define INV_LINE(line) (invisible_line + inv_lbreaks[line]) +#define INV_LINE_FACE(line) (inv_face + inv_lbreaks[line]) + +#define OLD_CPOS_IN_PROMPT() (cpos_adjusted == 0 && \ + _rl_last_c_pos != o_cpos && \ + _rl_last_c_pos > wrap_offset && \ + o_cpos < prompt_last_invisible) + + + /* We don't want to highlight anything that's going to be off the top + of the display; if the current line takes up more than an entire + screen, just mark the lines that won't be displayed as having a + `normal' face. + It's imperfect, but better than display corruption. */ + if (rl_mark_active_p () && inv_botlin > _rl_screenheight) + { + int extra; + + extra = inv_botlin - _rl_screenheight; + for (linenum = 0; linenum <= extra; linenum++) + norm_face (INV_LINE_FACE(linenum), INV_LLEN (linenum)); + } + + /* For each line in the buffer, do the updating display. */ + for (linenum = 0; linenum <= inv_botlin; linenum++) + { + /* This can lead us astray if we execute a program that changes + the locale from a non-multibyte to a multibyte one. */ + o_cpos = _rl_last_c_pos; + cpos_adjusted = 0; + update_line (VIS_LINE(linenum), VIS_LINE_FACE(linenum), + INV_LINE(linenum), INV_LINE_FACE(linenum), + linenum, + VIS_LLEN(linenum), INV_LLEN(linenum), inv_botlin); + + /* update_line potentially changes _rl_last_c_pos, but doesn't + take invisible characters into account, since _rl_last_c_pos + is an absolute cursor position in a multibyte locale. We + choose to (mostly) compensate for that here, rather than + 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 + this back by setting cpos_adjusted. If we assume that + _rl_last_c_pos is correct (an absolute cursor position) each + time update_line is called, then we can assume in our + calculations that o_cpos does not need to be adjusted by + wrap_offset. */ + if (linenum == 0 && (mb_cur_max > 1 && rl_byte_oriented == 0) && OLD_CPOS_IN_PROMPT()) + _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ + else if (cpos_adjusted == 0 && + linenum == prompt_last_screen_line && + prompt_physical_chars > _rl_screenwidth && + (mb_cur_max > 1 && rl_byte_oriented == 0) && + _rl_last_c_pos != o_cpos && + _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) /* XXX - rethink this last one */ + /* This assumes that all the invisible characters are split + between the first and last lines of the prompt, if the + prompt consumes more than two lines. It's usually right */ + /* XXX - not sure this is ever executed */ + _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line); + + /* If this is the line with the prompt, we might need to + compensate for invisible characters in the new line. Do + this only if there is not more than one new line (which + implies that we completely overwrite the old visible line) + and the new line is shorter than the old. Make sure we are + at the end of the new line before clearing. */ + if (linenum == 0 && + inv_botlin == 0 && _rl_last_c_pos == out && + (wrap_offset > visible_wrap_offset) && + (_rl_last_c_pos < visible_first_line_len)) + { + if (mb_cur_max > 1 && rl_byte_oriented == 0) + nleft = _rl_screenwidth - _rl_last_c_pos; + else + nleft = _rl_screenwidth + wrap_offset - _rl_last_c_pos; + if (nleft) + _rl_clear_to_eol (nleft); + } +#if 0 + /* This segment is intended to handle the case where the old + visible prompt has invisible characters and the new line + to be displayed needs to clear the rest of the old characters + out (e.g., when printing the i-search prompt): in general, + the case of the new line being shorter than the old. We need + to be at the end of the new line and the old line needs to be + longer than the current cursor position. It's not perfect, + since it uses the byte length of the first line, but this will + at worst result in some extra clear-to-end-of-lines. We can't + use the prompt length variables because they may not + correspond to the visible line (see printing the i-search + prompt above). The tests for differing numbers of invisible + characters may not matter and can probably be removed. */ + else if (linenum == 0 && + linenum == prompt_last_screen_line && + _rl_last_c_pos == out && + _rl_last_c_pos < visible_first_line_len && + visible_wrap_offset && + visible_wrap_offset != wrap_offset) + { + if (mb_cur_max > 1 && rl_byte_oriented == 0) + nleft = _rl_screenwidth - _rl_last_c_pos; + else + nleft = _rl_screenwidth + wrap_offset - _rl_last_c_pos; + if (nleft) + _rl_clear_to_eol (nleft); + } +#endif + + /* Since the new first line is now visible, save its length. */ + if (linenum == 0) + visible_first_line_len = (inv_botlin > 0) ? inv_lbreaks[1] : out - wrap_offset; + } + + /* We may have deleted some lines. If so, clear the left over + blank ones at the bottom out. */ + if (_rl_vis_botlin > inv_botlin) + { + char *tt; + for (; linenum <= _rl_vis_botlin; linenum++) + { + tt = VIS_CHARS (linenum); + _rl_move_vert (linenum); + _rl_move_cursor_relative (0, tt, VIS_FACE(linenum)); + _rl_clear_to_eol + ((linenum == _rl_vis_botlin) ? strlen (tt) : _rl_screenwidth); + } + } + _rl_vis_botlin = inv_botlin; + + /* CHANGED_SCREEN_LINE is set to 1 if we have moved to a + different screen line during this redisplay. */ + changed_screen_line = _rl_last_v_pos != cursor_linenum; + if (changed_screen_line) + { + _rl_move_vert (cursor_linenum); + /* If we moved up to the line with the prompt using _rl_term_up, + the physical cursor position on the screen stays the same, + but the buffer position needs to be adjusted to account + for invisible characters. */ + if ((mb_cur_max == 1 || rl_byte_oriented) && cursor_linenum == 0 && wrap_offset) + _rl_last_c_pos += wrap_offset; + } + + /* Now we move the cursor to where it needs to be. First, make + sure we are on the correct line (cursor_linenum). */ + + /* We have to reprint the prompt if it contains invisible + characters, since it's not generally OK to just reprint + the characters from the current cursor position. But we + only need to reprint it if the cursor is before the last + invisible character in the prompt string. */ + /* XXX - why not use local_prompt_len? */ + nleft = prompt_visible_length + wrap_offset; + if (cursor_linenum == 0 && wrap_offset > 0 && _rl_last_c_pos > 0 && + _rl_last_c_pos < PROMPT_ENDING_INDEX && local_prompt) + { + _rl_cr (); + if (modmark) + _rl_output_some_chars ("*", 1); + + _rl_output_some_chars (local_prompt, nleft); + if (mb_cur_max > 1 && rl_byte_oriented == 0) + _rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft, 1) - wrap_offset + modmark; + else + _rl_last_c_pos = nleft + modmark; + } + + /* Where on that line? And where does that line start + in the buffer? */ + pos = inv_lbreaks[cursor_linenum]; + /* nleft == number of characters (bytes) in the line buffer between + the start of the line and the desired cursor position. */ + nleft = cpos_buffer_position - pos; + + /* NLEFT is now a number of characters in a buffer. When in a + multibyte locale, however, _rl_last_c_pos is an absolute cursor + position that doesn't take invisible characters in the prompt + into account. We use a fudge factor to compensate. */ + + /* Since _rl_backspace() doesn't know about invisible characters in + the prompt, and there's no good way to tell it, we compensate for + those characters here and call _rl_backspace() directly if + necessary */ + if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos) + { + /* TX == new physical cursor position in multibyte locale. */ + if (mb_cur_max > 1 && rl_byte_oriented == 0) + tx = _rl_col_width (&visible_line[pos], 0, nleft, 1) - visible_wrap_offset; + else + tx = nleft; + if (tx >= 0 && _rl_last_c_pos > tx) + { + _rl_backspace (_rl_last_c_pos - tx); /* XXX */ + _rl_last_c_pos = tx; + } + } + + /* We need to note that in a multibyte locale we are dealing with + _rl_last_c_pos as an absolute cursor position, but moving to a + point specified by a buffer position (NLEFT) that doesn't take + invisible characters into account. */ + if (mb_cur_max > 1 && rl_byte_oriented == 0) + _rl_move_cursor_relative (nleft, &invisible_line[pos], &inv_face[pos]); + else if (nleft != _rl_last_c_pos) + _rl_move_cursor_relative (nleft, &invisible_line[pos], &inv_face[pos]); + } + } + else /* Do horizontal scrolling. Much simpler */ + { +#define M_OFFSET(margin, offset) ((margin) == 0 ? offset : 0) + int lmargin, ndisp, nleft, phys_c_pos, t; + + /* Always at top line. */ + _rl_last_v_pos = 0; + + /* Compute where in the buffer the displayed line should start. This + will be LMARGIN. */ + + /* The number of characters that will be displayed before the cursor. */ + ndisp = cpos_buffer_position - wrap_offset; + nleft = prompt_visible_length + wrap_offset; + /* Where the new cursor position will be on the screen. This can be + longer than SCREENWIDTH; if it is, lmargin will be adjusted. */ + phys_c_pos = cpos_buffer_position - (last_lmargin ? last_lmargin : wrap_offset); + t = _rl_screenwidth / 3; + + /* If the number of characters had already exceeded the screenwidth, + last_lmargin will be > 0. */ + + /* If the number of characters to be displayed is more than the screen + width, compute the starting offset so that the cursor is about + two-thirds of the way across the screen. */ + if (phys_c_pos > _rl_screenwidth - 2) + { + lmargin = cpos_buffer_position - (2 * t); + if (lmargin < 0) + lmargin = 0; + /* If the left margin would be in the middle of a prompt with + invisible characters, don't display the prompt at all. */ + if (wrap_offset && lmargin > 0 && lmargin < nleft) + lmargin = nleft; + } + else if (ndisp < _rl_screenwidth - 2) /* XXX - was -1 */ + lmargin = 0; + else if (phys_c_pos < 1) + { + /* If we are moving back towards the beginning of the line and + the last margin is no longer correct, compute a new one. */ + lmargin = ((cpos_buffer_position - 1) / t) * t; /* XXX */ + if (wrap_offset && lmargin > 0 && lmargin < nleft) + lmargin = nleft; + } + else + lmargin = last_lmargin; + + displaying_prompt_first_line = lmargin < nleft; + + /* If the first character on the screen isn't the first character + in the display line, indicate this with a special character. */ + if (lmargin > 0) + invisible_line[lmargin] = '<'; + + /* If SCREENWIDTH characters starting at LMARGIN do not encompass + the whole line, indicate that with a special character at the + right edge of the screen. If LMARGIN is 0, we need to take the + wrap offset into account. */ + t = lmargin + M_OFFSET (lmargin, wrap_offset) + _rl_screenwidth; + if (t > 0 && t < out) + invisible_line[t - 1] = '>'; + + if (rl_display_fixed == 0 || forced_display || lmargin != last_lmargin) + { + forced_display = 0; + o_cpos = _rl_last_c_pos; + cpos_adjusted = 0; + update_line (&visible_line[last_lmargin], &vis_face[last_lmargin], + &invisible_line[lmargin], &inv_face[lmargin], + 0, + _rl_screenwidth + visible_wrap_offset, + _rl_screenwidth + (lmargin ? 0 : wrap_offset), + 0); + + if ((mb_cur_max > 1 && rl_byte_oriented == 0) && + displaying_prompt_first_line && OLD_CPOS_IN_PROMPT()) + _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ + + /* If the visible new line is shorter than the old, but the number + of invisible characters is greater, and we are at the end of + the new line, we need to clear to eol. */ + t = _rl_last_c_pos - M_OFFSET (lmargin, wrap_offset); + if ((M_OFFSET (lmargin, wrap_offset) > visible_wrap_offset) && + (_rl_last_c_pos == out) && displaying_prompt_first_line && + t < visible_first_line_len) + { + nleft = _rl_screenwidth - t; + _rl_clear_to_eol (nleft); + } + visible_first_line_len = out - lmargin - M_OFFSET (lmargin, wrap_offset); + if (visible_first_line_len > _rl_screenwidth) + visible_first_line_len = _rl_screenwidth; + + _rl_move_cursor_relative (cpos_buffer_position - lmargin, &invisible_line[lmargin], &inv_face[lmargin]); + last_lmargin = lmargin; + } + } + fflush (rl_outstream); + + /* Swap visible and non-visible lines. */ + { + struct line_state *vtemp = line_state_visible; + + line_state_visible = line_state_invisible; + line_state_invisible = vtemp; + + rl_display_fixed = 0; + /* If we are displaying on a single line, and last_lmargin is > 0, we + are not displaying any invisible characters, so set visible_wrap_offset + to 0. */ + if (_rl_horizontal_scroll_mode && last_lmargin) + visible_wrap_offset = 0; + else + visible_wrap_offset = wrap_offset; + + _rl_quick_redisplay = 0; + } + + RL_UNSETSTATE (RL_STATE_REDISPLAYING); + _rl_release_sigint (); +} + +static void +putc_face (int c, int face, char *cur_face) +{ + char cf; + cf = *cur_face; + if (cf != face) + { + if (cf != FACE_NORMAL && cf != FACE_STANDOUT) + return; + if (face != FACE_NORMAL && face != FACE_STANDOUT) + return; + if (face == FACE_STANDOUT && cf == FACE_NORMAL) + _rl_standout_on (); + if (face == FACE_NORMAL && cf == FACE_STANDOUT) + _rl_standout_off (); + *cur_face = face; + } + if (c != EOF) + putc (c, rl_outstream); +} + +static void +puts_face (const char *str, const char *face, int n) +{ + int i; + char cur_face; + + for (cur_face = FACE_NORMAL, i = 0; i < n; i++) + putc_face (str[i], face[i], &cur_face); + putc_face (EOF, FACE_NORMAL, &cur_face); +} + +static void +norm_face (char *face, int n) +{ + memset (face, FACE_NORMAL, n); +} + +#define ADJUST_CPOS(x) do { _rl_last_c_pos -= (x) ; cpos_adjusted = 1; } while (0) + +/* PWP: update_line() is based on finding the middle difference of each + line on the screen; vis: + + /old first difference + /beginning of line | /old last same /old EOL + v v v v +old: eddie> Oh, my little gruntle-buggy is to me, as lurgid as +new: eddie> Oh, my little buggy says to me, as lurgid as + ^ ^ ^ ^ + \beginning of line | \new last same \new end of line + \new first difference + + All are character pointers for the sake of speed. Special cases for + no differences, as well as for end of line additions must be handled. + + Could be made even smarter, but this works well enough */ +static void +update_line (char *old, char *old_face, char *new, char *new_face, int current_line, int omax, int nmax, int inv_botlin) +{ + char *ofd, *ols, *oe, *nfd, *nls, *ne; + char *ofdf, *nfdf, *olsf, *nlsf; + int temp, lendiff, wsatend, od, nd, twidth, o_cpos; + int current_invis_chars; + int col_lendiff, col_temp; + int bytes_to_insert; + int mb_cur_max = MB_CUR_MAX; +#if defined (HANDLE_MULTIBYTE) + mbstate_t ps_new, ps_old; + int new_offset, old_offset; +#endif + + /* If we're at the right edge of a terminal that supports xn, we're + ready to wrap around, so do so. This fixes problems with knowing + the exact cursor position and cut-and-paste with certain terminal + emulators. In this calculation, TEMP is the physical screen + position of the cursor. */ + if (mb_cur_max > 1 && rl_byte_oriented == 0) + temp = _rl_last_c_pos; + else + temp = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset); + if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode + && _rl_last_v_pos == current_line - 1) + { + /* We're going to wrap around by writing the first character of NEW to + the screen and dealing with changes to what's visible by modifying + OLD to match it. Complicated by the presence of multi-width + characters at the end of the line or beginning of the new one. */ + /* old is always somewhere in visible_line; new is always somewhere in + invisible_line. These should always be null-terminated. */ +#if defined (HANDLE_MULTIBYTE) + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + wchar_t wc; + mbstate_t ps; + int oldwidth, newwidth; + int oldbytes, newbytes; + size_t ret; + + /* This fixes only double-column characters, but if the wrapped + character consumes more than three columns, spaces will be + inserted in the string buffer. */ + /* XXX remember that we are working on the invisible line right now; + we don't swap visible and invisible until just before rl_redisplay + returns */ + /* This will remove the extra placeholder space we added with + _rl_wrapped_multicolumn */ + if (current_line < line_state_invisible->wbsize && line_state_invisible->wrapped_line[current_line] > 0) + _rl_clear_to_eol (line_state_invisible->wrapped_line[current_line]); + + /* 1. how many screen positions does first char in old consume? */ + memset (&ps, 0, sizeof (mbstate_t)); + ret = mbrtowc (&wc, old, mb_cur_max, &ps); + oldbytes = ret; + if (MB_INVALIDCH (ret)) + { + oldwidth = 1; + oldbytes = 1; + } + else if (MB_NULLWCH (ret)) + oldwidth = 0; + else + oldwidth = WCWIDTH (wc); + if (oldwidth < 0) + oldwidth = 1; + + /* 2. how many screen positions does the first char in new consume? */ + memset (&ps, 0, sizeof (mbstate_t)); + ret = mbrtowc (&wc, new, mb_cur_max, &ps); + newbytes = ret; + if (MB_INVALIDCH (ret)) + { + newwidth = 1; + newbytes = 1; + } + else if (MB_NULLWCH (ret)) + newwidth = 0; + else + newwidth = WCWIDTH (wc); + if (newwidth < 0) + newwidth = 1; + + /* 3. if the new width is less than the old width, we need to keep + going in new until we have consumed at least that many screen + positions, and figure out how many bytes that will take */ + while (newbytes < nmax && newwidth < oldwidth) + { + int t; + + ret = mbrtowc (&wc, new+newbytes, mb_cur_max, &ps); + if (MB_INVALIDCH (ret)) + { + newwidth += 1; + newbytes += 1; + } + else if (MB_NULLWCH (ret)) + break; + else + { + t = WCWIDTH (wc); + newwidth += (t >= 0) ? t : 1; + newbytes += ret; + } + } + /* 4. If the new width is more than the old width, keep going in old + until we have consumed exactly that many screen positions, and + figure out how many bytes that will take. This is an optimization */ + while (oldbytes < omax && oldwidth < newwidth) + { + int t; + + ret = mbrtowc (&wc, old+oldbytes, mb_cur_max, &ps); + if (MB_INVALIDCH (ret)) + { + oldwidth += 1; + oldbytes += 1; + } + else if (MB_NULLWCH (ret)) + break; + else + { + t = WCWIDTH (wc); + oldwidth += (t >= 0) ? t : 1; + oldbytes += ret; + } + } + /* 5. write the first newbytes of new, which takes newwidth. This is + where the screen wrapping takes place, and we are now writing + characters onto the new line. We need to fix up old so it + accurately reflects what is on the screen after the + _rl_output_some_chars below. */ + if (newwidth > 0) + { + int count, i, j; + char *optr; + + puts_face (new, new_face, newbytes); + _rl_last_c_pos = newwidth; + _rl_last_v_pos++; + + /* 5a. If the number of screen positions doesn't match, punt + and do a dumb update. + 5b. If the number of bytes is greater in the new line than + the old, do a dumb update, because there is no guarantee we + can extend the old line enough to fit the new bytes. */ + if (newwidth != oldwidth || newbytes > oldbytes) + { + oe = old + omax; + ne = new + nmax; + nd = newbytes; + nfd = new + nd; + ofdf = old_face + oldbytes; + nfdf = new_face + newbytes; + + goto dumb_update; + } + if (oldbytes != 0 && newbytes != 0) + { + /* We have written as many bytes from new as we need to + consume the first character of old. Fix up `old' so it + reflects the new screen contents. We use +1 in the + memmove call to copy the trailing NUL. */ + /* (strlen(old+oldbytes) == (omax - oldbytes - 1)) */ + + /* Don't bother trying to fit the bytes if the number of bytes + doesn't change. */ + if (oldbytes != newbytes) + { + memmove (old+newbytes, old+oldbytes, strlen (old+oldbytes) + 1); + memmove (old_face+newbytes, old_face+oldbytes, strlen (old+oldbytes) + 1); + } + memcpy (old, new, newbytes); + memcpy (old_face, new_face, newbytes); + j = newbytes - oldbytes; + omax += j; + /* Fix up indices if we copy data from one line to another */ + for (i = current_line+1; j != 0 && i <= inv_botlin+1 && i <=_rl_vis_botlin+1; i++) + vis_lbreaks[i] += j; + } + } + else + { + putc (' ', rl_outstream); + _rl_last_c_pos = 1; + _rl_last_v_pos++; + if (old[0] && new[0]) + { + old[0] = new[0]; + old_face[0] = new_face[0]; + } + } + } + else +#endif + { + if (new[0]) + puts_face (new, new_face, 1); + else + putc (' ', rl_outstream); + _rl_last_c_pos = 1; + _rl_last_v_pos++; + if (old[0] && new[0]) + { + old[0] = new[0]; + old_face[0] = new_face[0]; + } + } + } + + /* We know that we are dealing with a single screen line here */ + if (_rl_quick_redisplay) + { + nfd = new; + nfdf = new_face; + ofd = old; + ofdf = old_face; + for (od = 0, oe = ofd; od < omax && *oe; oe++, od++); + for (nd = 0, ne = nfd; nd < nmax && *ne; ne++, nd++); + od = nd = 0; + _rl_move_cursor_relative (0, old, old_face); + + bytes_to_insert = ne - nfd; + if (bytes_to_insert < local_prompt_len) /* ??? */ + goto dumb_update; + + /* output the prompt, output the line contents, clear the rest */ + _rl_output_some_chars (nfd, local_prompt_len); + if (mb_cur_max > 1 && rl_byte_oriented == 0) + _rl_last_c_pos = prompt_physical_chars; + else + _rl_last_c_pos = local_prompt_len; + + bytes_to_insert -= local_prompt_len; + if (bytes_to_insert > 0) + { + puts_face (new+local_prompt_len, nfdf+local_prompt_len, bytes_to_insert); + if (mb_cur_max > 1 && rl_byte_oriented) + _rl_last_c_pos += _rl_col_width (new, local_prompt_len, ne-new, 1); + else + _rl_last_c_pos += bytes_to_insert; + } + + /* See comments at dumb_update: for an explanation of this heuristic */ + if (nmax < omax) + goto clear_rest_of_line; + else if ((nmax - W_OFFSET(current_line, wrap_offset)) < (omax - W_OFFSET (current_line, visible_wrap_offset))) + goto clear_rest_of_line; + else + return; + } + + /* Find first difference. */ +#if defined (HANDLE_MULTIBYTE) + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + /* See if the old line is a subset of the new line, so that the + only change is adding characters. */ + temp = (omax < nmax) ? omax : nmax; + if (memcmp (old, new, temp) == 0 && memcmp (old_face, new_face, temp) == 0) + { + new_offset = old_offset = temp; /* adding at the end */ + ofd = old + temp; + ofdf = old_face + temp; + nfd = new + temp; + nfdf = new_face + temp; + } + else + { + memset (&ps_new, 0, sizeof(mbstate_t)); + memset (&ps_old, 0, sizeof(mbstate_t)); + + /* Are the old and new lines the same? */ + if (omax == nmax && memcmp (new, old, omax) == 0 && memcmp (new_face, old_face, omax) == 0) + { + old_offset = omax; + new_offset = nmax; + ofd = old + omax; + ofdf = old_face + omax; + nfd = new + nmax; + nfdf = new_face + nmax; + } + else + { + /* Go through the line from the beginning and find the first + difference. We assume that faces change at (possibly multi- + byte) character boundaries. */ + new_offset = old_offset = 0; + for (ofd = old, ofdf = old_face, nfd = new, nfdf = new_face; + (ofd - old < omax) && *ofd && + _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new) && + *ofdf == *nfdf; ) + { + old_offset = _rl_find_next_mbchar (old, old_offset, 1, MB_FIND_ANY); + new_offset = _rl_find_next_mbchar (new, new_offset, 1, MB_FIND_ANY); + + ofd = old + old_offset; + ofdf = old_face + old_offset; + nfd = new + new_offset; + nfdf = new_face + new_offset; + } + } + } + } + else +#endif + for (ofd = old, ofdf = old_face, nfd = new, nfdf = new_face; + (ofd - old < omax) && *ofd && (*ofd == *nfd) && (*ofdf == *nfdf); + ofd++, nfd++, ofdf++, nfdf++) + ; + + /* Move to the end of the screen line. ND and OD are used to keep track + of the distance between ne and new and oe and old, respectively, to + move a subtraction out of each loop. */ + for (od = ofd - old, oe = ofd; od < omax && *oe; oe++, od++); + for (nd = nfd - new, ne = nfd; nd < nmax && *ne; ne++, nd++); + + /* If no difference, continue to next line. */ + if (ofd == oe && nfd == ne) + return; + +#if defined (HANDLE_MULTIBYTE) + if (mb_cur_max > 1 && rl_byte_oriented == 0 && _rl_utf8locale) + { + wchar_t wc; + mbstate_t ps = { 0 }; + int t; + + /* If the first character in the difference is a zero-width character, + assume it's a combining character and back one up so the two base + characters no longer compare equivalently. */ + t = mbrtowc (&wc, ofd, mb_cur_max, &ps); + if (t > 0 && UNICODE_COMBINING_CHAR (wc) && WCWIDTH (wc) == 0) + { + old_offset = _rl_find_prev_mbchar (old, ofd - old, MB_FIND_ANY); + new_offset = _rl_find_prev_mbchar (new, nfd - new, MB_FIND_ANY); + ofd = old + old_offset; /* equal by definition */ + ofdf = old_face + old_offset; + nfd = new + new_offset; + nfdf = new_face + new_offset; + } + } +#endif + + wsatend = 1; /* flag for trailing whitespace */ + +#if defined (HANDLE_MULTIBYTE) + /* Find the last character that is the same between the two lines. This + bounds the region that needs to change. */ + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY); + olsf = old_face + (ols - old); + nls = new + _rl_find_prev_mbchar (new, ne - new, MB_FIND_ANY); + nlsf = new_face + (nls - new); + + while ((ols > ofd) && (nls > nfd)) + { + memset (&ps_old, 0, sizeof (mbstate_t)); + memset (&ps_new, 0, sizeof (mbstate_t)); + + if (_rl_compare_chars (old, ols - old, &ps_old, new, nls - new, &ps_new) == 0 || + *olsf != *nlsf) + break; + + if (*ols == ' ') + wsatend = 0; + + ols = old + _rl_find_prev_mbchar (old, ols - old, MB_FIND_ANY); + olsf = old_face + (ols - old); + nls = new + _rl_find_prev_mbchar (new, nls - new, MB_FIND_ANY); + nlsf = new_face + (nls - new); + } + } + else + { +#endif /* HANDLE_MULTIBYTE */ + ols = oe - 1; /* find last same */ + olsf = old_face + (ols - old); + nls = ne - 1; + nlsf = new_face + (nls - new); + while ((ols > ofd) && (nls > nfd) && (*ols == *nls) && (*olsf == *nlsf)) + { + if (*ols != ' ') + wsatend = 0; + ols--; olsf--; + nls--; nlsf--; + } +#if defined (HANDLE_MULTIBYTE) + } +#endif + + if (wsatend) + { + ols = oe; + olsf = old_face + (ols - old); + nls = ne; + nlsf = new_face + (nls - new); + } +#if defined (HANDLE_MULTIBYTE) + /* This may not work for stateful encoding, but who cares? To handle + stateful encoding properly, we have to scan each string from the + beginning and compare. */ + else if (_rl_compare_chars (ols, 0, NULL, nls, 0, NULL) == 0 || *olsf != *nlsf) +#else + else if (*ols != *nls || *olsf != *nlsf) +#endif + { + if (*ols) /* don't step past the NUL */ + { + if (mb_cur_max > 1 && rl_byte_oriented == 0) + ols = old + _rl_find_next_mbchar (old, ols - old, 1, MB_FIND_ANY); + else + ols++; + } + if (*nls) + { + if (mb_cur_max > 1 && rl_byte_oriented == 0) + nls = new + _rl_find_next_mbchar (new, nls - new, 1, MB_FIND_ANY); + else + nls++; + } + olsf = old_face + (ols - old); + nlsf = new_face + (nls - new); + } + + /* count of invisible characters in the current invisible line. */ + current_invis_chars = W_OFFSET (current_line, wrap_offset); + if (_rl_last_v_pos != current_line) + { + _rl_move_vert (current_line); + /* We have moved up to a new screen line. This line may or may not have + invisible characters on it, but we do our best to recalculate + visible_wrap_offset based on what we know. */ + if (current_line == 0) + visible_wrap_offset = prompt_invis_chars_first_line; /* XXX */ +#if 0 /* XXX - not yet */ + else if (current_line == prompt_last_screen_line && wrap_offset > prompt_invis_chars_first_line) + visible_wrap_offset = wrap_offset - prompt_invis_chars_first_line +#endif + if ((mb_cur_max == 1 || rl_byte_oriented) && current_line == 0 && visible_wrap_offset) + _rl_last_c_pos += visible_wrap_offset; + } + + /* If this is the first line and there are invisible characters in the + prompt string, and the prompt string has not changed, and the current + cursor position is before the last invisible character in the prompt, + and the index of the character to move to is past the end of the prompt + string, then redraw the entire prompt string. We can only do this + reliably if the terminal supports a `cr' capability. + + This can also happen if the prompt string has changed, and the first + difference in the line is in the middle of the prompt string, after a + sequence of invisible characters (worst case) and before the end of + the prompt. In this case, we have to redraw the entire prompt string + so that the entire sequence of invisible characters is drawn. We need + to handle the worst case, when the difference is after (or in the middle + of) a sequence of invisible characters that changes the text color and + before the sequence that restores the text color to normal. Then we have + to make sure that the lines still differ -- if they don't, we can + return immediately. + + This is not an efficiency hack -- there is a problem with redrawing + portions of the prompt string if they contain terminal escape + sequences (like drawing the `unbold' sequence without a corresponding + `bold') that manifests itself on certain terminals. */ + + lendiff = local_prompt_len; + if (lendiff > nmax) + lendiff = nmax; + od = ofd - old; /* index of first difference in visible line */ + nd = nfd - new; /* nd, od are buffer indexes */ + if (current_line == 0 && !_rl_horizontal_scroll_mode && + _rl_term_cr && lendiff > prompt_visible_length && _rl_last_c_pos > 0 && + (((od > 0 || nd > 0) && (od <= prompt_last_invisible || nd <= prompt_last_invisible)) || + ((od >= lendiff) && _rl_last_c_pos < PROMPT_ENDING_INDEX))) + { + _rl_cr (); + if (modmark) + _rl_output_some_chars ("*", 1); + _rl_output_some_chars (local_prompt, lendiff); + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + /* If we just output the entire prompt string we can take advantage + of knowing the number of physical characters in the prompt. If + the prompt wraps lines (lendiff clamped at nmax), we can't. */ + if (lendiff == local_prompt_len) + _rl_last_c_pos = prompt_physical_chars + modmark; + else + /* We take wrap_offset into account here so we can pass correct + information to _rl_move_cursor_relative. */ + _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff, 1) - wrap_offset + modmark; + cpos_adjusted = 1; + } + else + _rl_last_c_pos = lendiff + modmark; + + /* Now if we have printed the prompt string because the first difference + was within the prompt, see if we need to recompute where the lines + differ. Check whether where we are now is past the last place where + the old and new lines are the same and short-circuit now if we are. */ + if ((od <= prompt_last_invisible || nd <= prompt_last_invisible) && + omax == nmax && + lendiff > (ols-old) && lendiff > (nls-new)) + return; + + /* XXX - we need to fix up our calculations if we are now past the + old ofd/nfd and the prompt length (or line length) has changed. + We punt on the problem and do a dumb update. We'd like to be able + to just output the prompt from the beginning of the line up to the + first difference, but you don't know the number of invisible + characters in that case. + This needs a lot of work to be efficient, but it usually doesn't matter. */ + if ((od <= prompt_last_invisible || nd <= prompt_last_invisible)) + { + nfd = new + lendiff; /* number of characters we output above */ + nfdf = new_face + lendiff; + nd = lendiff; + + /* Do a dumb update and return */ +dumb_update: + temp = ne - nfd; + if (temp > 0) + { + puts_face (nfd, nfdf, temp); + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + _rl_last_c_pos += _rl_col_width (new, nd, ne - new, 1); + /* Need to adjust here based on wrap_offset. Guess that if + this is the line containing the last line of the prompt + we need to adjust by + wrap_offset-prompt_invis_chars_first_line + on the assumption that this is the number of invisible + characters in the last line of the prompt. */ + if (wrap_offset > prompt_invis_chars_first_line && + current_line == prompt_last_screen_line && + prompt_physical_chars > _rl_screenwidth && + _rl_horizontal_scroll_mode == 0) + ADJUST_CPOS (wrap_offset - prompt_invis_chars_first_line); + + /* If we just output a new line including the prompt, and + the prompt includes invisible characters, we need to + account for them in the _rl_last_c_pos calculation, since + _rl_col_width does not. This happens when other code does + a goto dumb_update; */ + else if (current_line == 0 && + nfd == new && + prompt_invis_chars_first_line && + local_prompt_len <= temp && + wrap_offset >= prompt_invis_chars_first_line && + _rl_horizontal_scroll_mode == 0) + ADJUST_CPOS (prompt_invis_chars_first_line); + } + else + _rl_last_c_pos += temp; + } + /* This is a useful heuristic, but what we really want is to clear + if the new number of visible screen characters is less than the + old number of visible screen characters. If the prompt has changed, + we don't really have enough information about the visible line to + know for sure, so we use another heuristic calclulation below. */ + if (nmax < omax) + goto clear_rest_of_line; /* XXX */ + else if ((nmax - W_OFFSET(current_line, wrap_offset)) < (omax - W_OFFSET (current_line, visible_wrap_offset))) + goto clear_rest_of_line; + else + return; + } + } + + o_cpos = _rl_last_c_pos; + + /* When this function returns, _rl_last_c_pos is correct, and an absolute + cursor position in multibyte mode, but a buffer index when not in a + multibyte locale. */ + _rl_move_cursor_relative (od, old, old_face); + +#if defined (HANDLE_MULTIBYTE) + /* We need to indicate that the cursor position is correct in the presence of + invisible characters in the prompt string. Let's see if setting this when + we make sure we're at the end of the drawn prompt string works. */ + if (current_line == 0 && mb_cur_max > 1 && rl_byte_oriented == 0 && + (_rl_last_c_pos > 0 || o_cpos > 0) && + _rl_last_c_pos == prompt_physical_chars) + cpos_adjusted = 1; +#endif + + /* if (len (new) > len (old)) + lendiff == difference in buffer (bytes) + col_lendiff == difference on screen (columns) + When not using multibyte characters, these are equal */ + lendiff = (nls - nfd) - (ols - ofd); + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + int newchars, newwidth, newind; + int oldchars, oldwidth, oldind; + + newchars = nls - new; + oldchars = ols - old; + + /* If we can do it, try to adjust nls and ols so that nls-new will + contain the entire new prompt string. That way we can use + prompt_physical_chars and not have to recompute column widths. + _rl_col_width adds wrap_offset and expects the caller to compensate, + which we do below, so we do the same thing if we don't call + _rl_col_width. + We don't have to compare, since we know the characters are the same. + The check of differing numbers of invisible chars may be extraneous. + XXX - experimental */ + if (current_line == 0 && nfd == new && newchars > prompt_last_invisible && + newchars <= local_prompt_len && + local_prompt_len <= nmax && + current_invis_chars != visible_wrap_offset) + { + while (newchars < nmax && oldchars < omax && newchars < local_prompt_len) + { +#if defined (HANDLE_MULTIBYTE) + newind = _rl_find_next_mbchar (new, newchars, 1, MB_FIND_NONZERO); + oldind = _rl_find_next_mbchar (old, oldchars, 1, MB_FIND_NONZERO); + + nls += newind - newchars; + ols += oldind - oldchars; + + newchars = newind; + oldchars = oldind; +#else + nls++; ols++; + newchars++; oldchars++; +#endif + } + newwidth = (newchars == local_prompt_len) ? prompt_physical_chars + wrap_offset + : _rl_col_width (new, 0, nls - new, 1); + /* if we changed nls and ols, we need to recompute lendiff */ + lendiff = (nls - nfd) - (ols - ofd); + + nlsf = new_face + (nls - new); + olsf = old_face + (ols - old); + } + else + newwidth = _rl_col_width (new, nfd - new, nls - new, 1); + + oldwidth = _rl_col_width (old, ofd - old, ols - old, 1); + + col_lendiff = newwidth - oldwidth; + } + else + col_lendiff = lendiff; + + /* col_lendiff uses _rl_col_width(), which doesn't know about whether or not + the multibyte characters it counts are invisible, so unless we're printing + the entire prompt string (in which case we can use prompt_physical_chars) + the count is short by the number of bytes in the invisible multibyte + characters - the number of multibyte characters. + + We don't have a good way to solve this without moving to something like + a bitmap that indicates which characters are visible and which are + invisible. We fix it up (imperfectly) in the caller and by trying to use + the entire prompt string wherever we can. */ + + /* If we are changing the number of invisible characters in a line, and + the spot of first difference is before the end of the invisible chars, + lendiff needs to be adjusted. */ + if (current_line == 0 && current_invis_chars != visible_wrap_offset) + { + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + lendiff += visible_wrap_offset - current_invis_chars; + col_lendiff += visible_wrap_offset - current_invis_chars; + } + else + { + lendiff += visible_wrap_offset - current_invis_chars; + col_lendiff = lendiff; + } + } + + /* We use temp as a count of the number of bytes from the first difference + to the end of the new line. col_temp is the corresponding number of + screen columns. A `dumb' update moves to the spot of first difference + and writes TEMP bytes. */ + /* Insert (diff (len (old), len (new)) ch. */ + temp = ne - nfd; + if (mb_cur_max > 1 && rl_byte_oriented == 0) + col_temp = _rl_col_width (new, nfd - new, ne - new, 1); + else + col_temp = temp; + + /* how many bytes from the new line buffer to write to the display */ + bytes_to_insert = nls - nfd; + + /* col_lendiff > 0 if we are adding characters to the line */ + if (col_lendiff > 0) /* XXX - was lendiff */ + { + /* 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) + { + puts_face (nfd, nfdf, temp); + _rl_last_c_pos += col_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 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) + ADJUST_CPOS (wrap_offset); /* XXX - prompt_invis_chars_first_line? */ + 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 + _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 or we're increasing the + number of invisible characters in the line 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) && + (visible_wrap_offset >= current_invis_chars)) + { + open_some_spaces (col_lendiff); + puts_face (nfd, nfdf, bytes_to_insert); + if (mb_cur_max > 1 && rl_byte_oriented == 0) + _rl_last_c_pos += _rl_col_width (nfd, 0, bytes_to_insert, 1); + else + _rl_last_c_pos += bytes_to_insert; + } + else if ((mb_cur_max == 1 || rl_byte_oriented != 0) && *ols == 0 && lendiff > 0) + { + /* At the end of a line the characters do not have to + be "inserted". They can just be placed on the screen. */ + puts_face (nfd, nfdf, temp); + _rl_last_c_pos += col_temp; + return; + } + else /* just write from first difference to end of new line */ + { + puts_face (nfd, nfdf, temp); + _rl_last_c_pos += col_temp; + /* If nfd begins before the last invisible character 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 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) + ADJUST_CPOS (wrap_offset); /* XXX - prompt_invis_chars_first_line? */ + return; + } + + if (bytes_to_insert > lendiff) + { + /* If nfd begins before the last invisible character 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 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) + ADJUST_CPOS (wrap_offset); /* XXX - prompt_invis_chars_first_line? */ + } + } + else + { + /* cannot insert chars, write to EOL */ + puts_face (nfd, nfdf, temp); + _rl_last_c_pos += col_temp; + /* If we're in a multibyte locale and were before the last invisible + char in the current line (which implies we just output some invisible + characters) we need to adjust _rl_last_c_pos, since it represents + a physical character position. */ + /* The current_line*rl_screenwidth+prompt_invis_chars_first_line is a + crude attempt to compute how far into the new line buffer we are. + It doesn't work well in the face of multibyte characters and needs + to be rethought. XXX */ + if ((mb_cur_max > 1 && rl_byte_oriented == 0) && + current_line == prompt_last_screen_line && wrap_offset && + displaying_prompt_first_line && + wrap_offset != prompt_invis_chars_first_line && + ((nfd-new) < (prompt_last_invisible-(current_line*_rl_screenwidth+prompt_invis_chars_first_line)))) + ADJUST_CPOS (wrap_offset - prompt_invis_chars_first_line); + + /* XXX - what happens if wrap_offset == prompt_invis_chars_first_line + and we are drawing the first line (current_line == 0)? We should + adjust by _rl_last_c_pos -= prompt_invis_chars_first_line */ + } + } + else /* Delete characters from line. */ + { + /* If possible and inexpensive to use terminal deletion, then do so. */ + if (_rl_term_dc && (2 * col_temp) >= -col_lendiff) + { + /* If all we're doing is erasing the invisible characters in the + prompt string, don't bother. It screws up the assumptions + about what's on the screen. */ + if (_rl_horizontal_scroll_mode && _rl_last_c_pos == 0 && + displaying_prompt_first_line && + -lendiff == visible_wrap_offset) + col_lendiff = 0; + + /* If we have moved lmargin and we're shrinking the line, we've + already moved the cursor to the first character of the new line, + so deleting -col_lendiff characters will mess up the cursor + position calculation */ + if (_rl_horizontal_scroll_mode && displaying_prompt_first_line == 0 && + col_lendiff && _rl_last_c_pos < -col_lendiff) + col_lendiff = 0; + + if (col_lendiff) + delete_chars (-col_lendiff); /* delete (diff) characters */ + + /* Copy (new) chars to screen from first diff to last match, + overwriting what is there. */ + if (bytes_to_insert > 0) + { + /* If nfd begins at the prompt, or before the invisible + characters in the prompt, we need to adjust _rl_last_c_pos + in a multibyte locale to account for the wrap offset and + set cpos_adjusted accordingly. */ + puts_face (nfd, nfdf, bytes_to_insert); + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + /* This still doesn't take into account whether or not the + characters that this counts are invisible. */ + _rl_last_c_pos += _rl_col_width (nfd, 0, bytes_to_insert, 1); + if (current_line == 0 && wrap_offset && + displaying_prompt_first_line && + prompt_invis_chars_first_line && + _rl_last_c_pos >= prompt_invis_chars_first_line && + ((nfd - new) <= prompt_last_invisible)) + ADJUST_CPOS (prompt_invis_chars_first_line); + +#if 1 +#ifdef HANDLE_MULTIBYTE + /* If we write a non-space into the last screen column, + remove the note that we added a space to compensate for + a multibyte double-width character that didn't fit, since + it's only valid for what was previously there. */ + /* XXX - watch this */ + if (_rl_last_c_pos == _rl_screenwidth && + line_state_invisible->wrapped_line[current_line+1] && + nfd[bytes_to_insert-1] != ' ') + line_state_invisible->wrapped_line[current_line+1] = 0; +#endif +#endif + } + else + _rl_last_c_pos += bytes_to_insert; + + /* XXX - we only want to do this if we are at the end of the line + so we move there with _rl_move_cursor_relative */ + if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) + { + _rl_move_cursor_relative (ne-new, new, new_face); + goto clear_rest_of_line; + } + } + } + /* Otherwise, print over the existing material. */ + else + { + if (temp > 0) + { + /* If nfd begins at the prompt, or before the invisible + characters in the prompt, we need to adjust _rl_last_c_pos + in a multibyte locale to account for the wrap offset and + set cpos_adjusted accordingly. */ + puts_face (nfd, nfdf, temp); + _rl_last_c_pos += col_temp; /* XXX */ + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + if (current_line == 0 && wrap_offset && + displaying_prompt_first_line && + _rl_last_c_pos > wrap_offset && + ((nfd - new) <= prompt_last_invisible)) + ADJUST_CPOS (wrap_offset); /* XXX - prompt_invis_chars_first_line? */ + } + } +clear_rest_of_line: + lendiff = (oe - old) - (ne - new); + if (mb_cur_max > 1 && rl_byte_oriented == 0) + col_lendiff = _rl_col_width (old, 0, oe - old, 1) - _rl_col_width (new, 0, ne - new, 1); + else + col_lendiff = lendiff; + + /* 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 && ((mb_cur_max == 1 || rl_byte_oriented) || (_rl_last_c_pos < _rl_screenwidth))) + { + if (_rl_term_autowrap && current_line < inv_botlin) + space_to_eol (col_lendiff); + else + _rl_clear_to_eol (col_lendiff); + } + } + } +} + +/* Tell the update routines that we have moved onto a new (empty) line. */ +int +rl_on_new_line (void) +{ + if (visible_line) + visible_line[0] = '\0'; + + _rl_last_c_pos = _rl_last_v_pos = 0; + _rl_vis_botlin = last_lmargin = 0; + if (vis_lbreaks) + vis_lbreaks[0] = vis_lbreaks[1] = 0; + visible_wrap_offset = 0; + return 0; +} + +/* Clear all screen lines occupied by the current readline line buffer + (visible line) */ +int +rl_clear_visible_line (void) +{ + int curr_line; + + /* Make sure we move to column 0 so we clear the entire line */ + _rl_cr (); + _rl_last_c_pos = 0; + + /* Move to the last screen line of the current visible line */ + _rl_move_vert (_rl_vis_botlin); + + /* And erase screen lines going up to line 0 (first visible line) */ + for (curr_line = _rl_last_v_pos; curr_line >= 0; curr_line--) + { + _rl_move_vert (curr_line); + _rl_clear_to_eol (0); + } + + return 0; +} + +/* Tell the update routines that we have moved onto a new line with the + prompt already displayed. Code originally from the version of readline + distributed with CLISP. rl_expand_prompt must have already been called + (explicitly or implicitly). This still doesn't work exactly right; it + should use expand_prompt() */ +int +rl_on_new_line_with_prompt (void) +{ + int prompt_size, i, l, real_screenwidth, newlines; + char *prompt_last_line, *lprompt; + + /* Initialize visible_line and invisible_line to ensure that they can hold + the already-displayed prompt. */ + prompt_size = strlen (rl_prompt) + 1; + init_line_structures (prompt_size); + + /* Make sure the line structures hold the already-displayed prompt for + redisplay. */ + lprompt = local_prompt ? local_prompt : rl_prompt; + strcpy (visible_line, lprompt); + strcpy (invisible_line, lprompt); + + /* If the prompt contains newlines, take the last tail. */ + prompt_last_line = strrchr (rl_prompt, '\n'); + if (!prompt_last_line) + prompt_last_line = rl_prompt; + + l = strlen (prompt_last_line); + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + _rl_last_c_pos = _rl_col_width (prompt_last_line, 0, l, 1); /* XXX */ + else + _rl_last_c_pos = l; + + /* Dissect prompt_last_line into screen lines. Note that here we have + to use the real screenwidth. Readline's notion of screenwidth might be + one less, see terminal.c. */ + real_screenwidth = _rl_screenwidth + (_rl_term_autowrap ? 0 : 1); + _rl_last_v_pos = l / real_screenwidth; + /* If the prompt length is a multiple of real_screenwidth, we don't know + whether the cursor is at the end of the last line, or already at the + beginning of the next line. Output a newline just to be safe. */ + if (l > 0 && (l % real_screenwidth) == 0) + _rl_output_some_chars ("\n", 1); + last_lmargin = 0; + + newlines = 0; i = 0; + while (i <= l) + { + _rl_vis_botlin = newlines; + vis_lbreaks[newlines++] = i; + i += real_screenwidth; + } + vis_lbreaks[newlines] = l; + visible_wrap_offset = 0; + + rl_display_prompt = rl_prompt; /* XXX - make sure it's set */ + + return 0; +} + +/* Actually update the display, period. */ +int +rl_forced_update_display (void) +{ + register char *temp; + + if (visible_line) + { + temp = visible_line; + while (*temp) + *temp++ = '\0'; + } + rl_on_new_line (); + forced_display++; + (*rl_redisplay_function) (); + return 0; +} + +/* Redraw only the last line of a multi-line prompt. */ +void +rl_redraw_prompt_last_line (void) +{ + char *t; + + t = strrchr (rl_display_prompt, '\n'); + if (t) + redraw_prompt (++t); + else + rl_forced_update_display (); +} + +/* Move the cursor from _rl_last_c_pos to NEW, which are buffer indices. + (Well, when we don't have multibyte characters, _rl_last_c_pos is a + buffer index.) + DATA is the contents of the screen line of interest; i.e., where + the movement is being done. + DATA is always the visible line or the invisible line */ +static void +_rl_move_cursor_relative (int new, const char *data, const char *dataf) +{ + register int i; + int woff; /* number of invisible chars on current line */ + int cpos, dpos; /* current and desired cursor positions */ + int adjust; + int in_invisline; + int mb_cur_max = MB_CUR_MAX; + + woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset); + cpos = _rl_last_c_pos; + + if (cpos == 0 && cpos == new) + return; + +#if defined (HANDLE_MULTIBYTE) + /* If we have multibyte characters, NEW is indexed by the buffer point in + a multibyte string, but _rl_last_c_pos is the display position. In + this case, NEW's display position is not obvious and must be + calculated. We need to account for invisible characters in this line, + as long as we are past them and they are counted by _rl_col_width. */ + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + adjust = 1; + /* Try to short-circuit common cases and eliminate a bunch of multibyte + character function calls. */ + /* 1. prompt string */ + if (new == local_prompt_len && memcmp (data, local_prompt, new) == 0) + { + dpos = prompt_physical_chars; + cpos_adjusted = 1; + adjust = 0; + } + /* 2. prompt_string + line contents */ + else if (new > local_prompt_len && local_prompt && memcmp (data, local_prompt, local_prompt_len) == 0) + { + dpos = prompt_physical_chars + _rl_col_width (data, local_prompt_len, new, 1); + cpos_adjusted = 1; + adjust = 0; + } + else + dpos = _rl_col_width (data, 0, new, 1); + + if (displaying_prompt_first_line == 0) + adjust = 0; + + /* yet another special case: printing the last line of a prompt with + multibyte characters and invisible characters whose printable length + exceeds the screen width with the last invisible character + (prompt_last_invisible) in the last line. IN_INVISLINE is the + offset of DATA in invisible_line */ + in_invisline = 0; + if (data > invisible_line && data < invisible_line+inv_lbreaks[_rl_inv_botlin+1]) + in_invisline = data - invisible_line; + + /* Use NEW when comparing against the last invisible character in the + prompt string, since they're both buffer indices and DPOS is a + desired display position. */ + /* NEW is relative to the current displayed line, while + PROMPT_LAST_INVISIBLE is relative to the entire (wrapped) line. + Need a way to reconcile these two variables by turning NEW into a + buffer position relative to the start of the line */ + if (adjust && ((new > prompt_last_invisible) || /* XXX - don't use woff here */ + (new+in_invisline > prompt_last_invisible) || /* invisible line */ + (prompt_physical_chars >= _rl_screenwidth && /* visible line */ + _rl_last_v_pos == prompt_last_screen_line && + wrap_offset >= woff && dpos >= woff && + new > (prompt_last_invisible-(vis_lbreaks[_rl_last_v_pos])-wrap_offset)))) + /* XXX last comparison might need to be >= */ + { + dpos -= woff; + /* Since this will be assigned to _rl_last_c_pos at the end (more + precisely, _rl_last_c_pos == dpos when this function returns), + let the caller know. */ + cpos_adjusted = 1; + } + } + else +#endif + dpos = new; + + /* If we don't have to do anything, then return. */ + if (cpos == dpos) + return; + + /* It may be faster to output a CR, and then move forwards instead + of moving backwards. */ + /* i == current physical cursor position. */ +#if defined (HANDLE_MULTIBYTE) + if (mb_cur_max > 1 && rl_byte_oriented == 0) + i = _rl_last_c_pos; + else +#endif + i = _rl_last_c_pos - woff; + if (dpos == 0 || CR_FASTER (dpos, _rl_last_c_pos) || + (_rl_term_autowrap && i == _rl_screenwidth)) + { + _rl_cr (); + cpos = _rl_last_c_pos = 0; + } + + if (cpos < dpos) + { + /* Move the cursor forward. We do it by printing the command + to move the cursor forward if there is one, else print that + portion of the output buffer again. Which is cheaper? */ + + /* The above comment is left here for posterity. It is faster + to print one character (non-control) than to print a control + sequence telling the terminal to move forward one character. + That kind of control is for people who don't know what the + data is underneath the cursor. */ + + /* However, we need a handle on where the current display position is + in the buffer for the immediately preceding comment to be true. + In multibyte locales, we don't currently have that info available. + Without it, we don't know where the data we have to display begins + in the buffer and we have to go back to the beginning of the screen + line. In this case, we can use the terminal sequence to move forward + if it's available. */ + if (mb_cur_max > 1 && rl_byte_oriented == 0) + { + if (_rl_term_forward_char) + { + for (i = cpos; i < dpos; i++) + tputs (_rl_term_forward_char, 1, _rl_output_character_function); + } + else + { + _rl_cr (); + puts_face (data, dataf, new); + } + } + else + puts_face (data + cpos, dataf + cpos, new - cpos); + } + +#if defined (HANDLE_MULTIBYTE) + /* NEW points to the buffer point, but _rl_last_c_pos is the display point. + The byte length of the string is probably bigger than the column width + of the string, which means that if NEW == _rl_last_c_pos, then NEW's + display point is less than _rl_last_c_pos. */ +#endif + else if (cpos > dpos) + _rl_backspace (cpos - dpos); + + _rl_last_c_pos = dpos; +} + +/* PWP: move the cursor up or down. */ +void +_rl_move_vert (int to) +{ + register int delta, i; + + if (_rl_last_v_pos == to || to > _rl_screenheight) + return; + + if ((delta = to - _rl_last_v_pos) > 0) + { + for (i = 0; i < delta; i++) + putc ('\n', rl_outstream); + _rl_cr (); + _rl_last_c_pos = 0; + } + else + { /* delta < 0 */ +#ifdef __DJGPP__ + int row, col; + + fflush (rl_outstream); + ScreenGetCursor (&row, &col); + ScreenSetCursor (row + delta, col); + i = -delta; +#else + if (_rl_term_up && *_rl_term_up) + for (i = 0; i < -delta; i++) + tputs (_rl_term_up, 1, _rl_output_character_function); +#endif /* !__DJGPP__ */ + } + + _rl_last_v_pos = to; /* Now TO is here */ +} + +/* Physically print C on rl_outstream. This is for functions which know + how to optimize the display. Return the number of characters output. */ +int +rl_show_char (int c) +{ + int n = 1; + if (META_CHAR (c) && (_rl_output_meta_chars == 0)) + { + fprintf (rl_outstream, "M-"); + n += 2; + c = UNMETA (c); + } + +#if defined (DISPLAY_TABS) + if ((CTRL_CHAR (c) && c != '\t') || c == RUBOUT) +#else + if (CTRL_CHAR (c) || c == RUBOUT) +#endif /* !DISPLAY_TABS */ + { + fprintf (rl_outstream, "C-"); + n += 2; + c = CTRL_CHAR (c) ? UNCTRL (c) : '?'; + } + + putc (c, rl_outstream); + fflush (rl_outstream); + return n; +} + +int +rl_character_len (int c, int pos) +{ + unsigned char uc; + + uc = (unsigned char)c; + + if (META_CHAR (uc)) + return ((_rl_output_meta_chars == 0) ? 4 : 1); + + if (uc == '\t') + { +#if defined (DISPLAY_TABS) + return (((pos | 7) + 1) - pos); +#else + return (2); +#endif /* !DISPLAY_TABS */ + } + + if (CTRL_CHAR (c) || c == RUBOUT) + return (2); + + return ((ISPRINT (uc)) ? 1 : 2); +} +/* How to print things in the "echo-area". The prompt is treated as a + mini-modeline. */ +static int msg_saved_prompt = 0; + +#if defined (USE_VARARGS) +int +#if defined (PREFER_STDARG) +rl_message (const char *format, ...) +#else +rl_message (va_alist) + va_dcl +#endif +{ + va_list args; +#if defined (PREFER_VARARGS) + char *format; +#endif +#if defined (HAVE_VSNPRINTF) + int bneed; +#endif + +#if defined (PREFER_STDARG) + va_start (args, format); +#else + va_start (args); + format = va_arg (args, char *); +#endif + + if (msg_buf == 0) + msg_buf = xmalloc (msg_bufsiz = 128); + +#if defined (HAVE_VSNPRINTF) + bneed = vsnprintf (msg_buf, msg_bufsiz, format, args); + if (bneed >= msg_bufsiz - 1) + { + msg_bufsiz = bneed + 1; + msg_buf = xrealloc (msg_buf, msg_bufsiz); + va_end (args); + +#if defined (PREFER_STDARG) + va_start (args, format); +#else + va_start (args); + format = va_arg (args, char *); +#endif + vsnprintf (msg_buf, msg_bufsiz - 1, format, args); + } +#else + vsprintf (msg_buf, format, args); + msg_buf[msg_bufsiz - 1] = '\0'; /* overflow? */ +#endif + va_end (args); + + if (saved_local_prompt == 0) + { + rl_save_prompt (); + msg_saved_prompt = 1; + } + else if (local_prompt != saved_local_prompt) + { + FREE (local_prompt); + FREE (local_prompt_prefix); + local_prompt = (char *)NULL; + } + rl_display_prompt = msg_buf; + local_prompt = expand_prompt (msg_buf, 0, &prompt_visible_length, + &prompt_last_invisible, + &prompt_invis_chars_first_line, + &prompt_physical_chars); + local_prompt_prefix = (char *)NULL; + local_prompt_len = local_prompt ? strlen (local_prompt) : 0; + (*rl_redisplay_function) (); + + return 0; +} +#else /* !USE_VARARGS */ +int +rl_message (format, arg1, arg2) + char *format; +{ + if (msg_buf == 0) + msg_buf = xmalloc (msg_bufsiz = 128); + + sprintf (msg_buf, format, arg1, arg2); + msg_buf[msg_bufsiz - 1] = '\0'; /* overflow? */ + + rl_display_prompt = msg_buf; + if (saved_local_prompt == 0) + { + rl_save_prompt (); + msg_saved_prompt = 1; + } + else if (local_prompt != saved_local_prompt) + { + FREE (local_prompt); + FREE (local_prompt_prefix); + local_prompt = (char *)NULL; + } + local_prompt = expand_prompt (msg_buf, 0, &prompt_visible_length, + &prompt_last_invisible, + &prompt_invis_chars_first_line, + &prompt_physical_chars); + local_prompt_prefix = (char *)NULL; + local_prompt_len = local_prompt ? strlen (local_prompt) : 0; + (*rl_redisplay_function) (); + + return 0; +} +#endif /* !USE_VARARGS */ + +/* How to clear things from the "echo-area". */ +int +rl_clear_message (void) +{ + rl_display_prompt = rl_prompt; + if (msg_saved_prompt) + { + rl_restore_prompt (); + msg_saved_prompt = 0; + } + (*rl_redisplay_function) (); + return 0; +} + +int +rl_reset_line_state (void) +{ + rl_on_new_line (); + + rl_display_prompt = rl_prompt ? rl_prompt : ""; + forced_display = 1; + return 0; +} + +/* Save all of the variables associated with the prompt and its display. Most + of the complexity is dealing with the invisible characters in the prompt + string and where they are. There are enough of these that I should consider + a struct. */ +void +rl_save_prompt (void) +{ + saved_local_prompt = local_prompt; + saved_local_prefix = local_prompt_prefix; + saved_prefix_length = prompt_prefix_length; + saved_local_length = local_prompt_len; + saved_last_invisible = prompt_last_invisible; + saved_visible_length = prompt_visible_length; + saved_invis_chars_first_line = prompt_invis_chars_first_line; + saved_physical_chars = prompt_physical_chars; + saved_local_prompt_newlines = local_prompt_newlines; + + local_prompt = local_prompt_prefix = (char *)0; + local_prompt_len = 0; + local_prompt_newlines = (int *)0; + + prompt_last_invisible = prompt_visible_length = prompt_prefix_length = 0; + prompt_invis_chars_first_line = prompt_physical_chars = 0; +} + +void +rl_restore_prompt (void) +{ + FREE (local_prompt); + FREE (local_prompt_prefix); + FREE (local_prompt_newlines); + + local_prompt = saved_local_prompt; + local_prompt_prefix = saved_local_prefix; + local_prompt_len = saved_local_length; + local_prompt_newlines = saved_local_prompt_newlines; + + prompt_prefix_length = saved_prefix_length; + prompt_last_invisible = saved_last_invisible; + prompt_visible_length = saved_visible_length; + prompt_invis_chars_first_line = saved_invis_chars_first_line; + prompt_physical_chars = saved_physical_chars; + + /* can test saved_local_prompt to see if prompt info has been saved. */ + saved_local_prompt = saved_local_prefix = (char *)0; + saved_local_length = 0; + saved_last_invisible = saved_visible_length = saved_prefix_length = 0; + saved_invis_chars_first_line = saved_physical_chars = 0; + saved_local_prompt_newlines = 0; +} + +char * +_rl_make_prompt_for_search (int pchar) +{ + int len; + char *pmt, *p; + + rl_save_prompt (); + + /* We've saved the prompt, and can do anything with the various prompt + strings we need before they're restored. We want the unexpanded + portion of the prompt string after any final newline. */ + p = rl_prompt ? strrchr (rl_prompt, '\n') : 0; + if (p == 0) + { + len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0; + pmt = (char *)xmalloc (len + 2); + if (len) + strcpy (pmt, rl_prompt); + pmt[len] = pchar; + pmt[len+1] = '\0'; + } + else + { + p++; + len = strlen (p); + pmt = (char *)xmalloc (len + 2); + if (len) + strcpy (pmt, p); + pmt[len] = pchar; + pmt[len+1] = '\0'; + } + + /* will be overwritten by expand_prompt, called from rl_message */ + prompt_physical_chars = saved_physical_chars + 1; + return pmt; +} + +/* Quick redisplay hack when erasing characters at the end of the line. */ +void +_rl_erase_at_end_of_line (int l) +{ + register int i; + + _rl_backspace (l); + for (i = 0; i < l; i++) + putc (' ', rl_outstream); + _rl_backspace (l); + for (i = 0; i < l; i++) + visible_line[--_rl_last_c_pos] = '\0'; + rl_display_fixed++; +} + +/* Clear to the end of the line. COUNT is the minimum + number of character spaces to clear, but we use a terminal escape + sequence if available. */ +void +_rl_clear_to_eol (int count) +{ +#ifndef __MSDOS__ + if (_rl_term_clreol) + tputs (_rl_term_clreol, 1, _rl_output_character_function); + else +#endif + if (count) + space_to_eol (count); +} + +/* Clear to the end of the line using spaces. COUNT is the minimum + number of character spaces to clear, */ +static void +space_to_eol (int count) +{ + register int i; + + for (i = 0; i < count; i++) + putc (' ', rl_outstream); + + _rl_last_c_pos += count; +} + +void +_rl_clear_screen (int clrscr) +{ +#if defined (__DJGPP__) + ScreenClear (); + ScreenSetCursor (0, 0); +#else + if (_rl_term_clrpag) + { + tputs (_rl_term_clrpag, 1, _rl_output_character_function); + if (clrscr && _rl_term_clrscroll) + tputs (_rl_term_clrscroll, 1, _rl_output_character_function); + } + else + rl_crlf (); +#endif /* __DJGPP__ */ +} + +/* Insert COUNT characters from STRING to the output stream at column COL. */ +static void +insert_some_chars (char *string, int count, int col) +{ + open_some_spaces (col); + _rl_output_some_chars (string, count); +} + +/* Insert COL spaces, keeping the cursor at the same position. We follow the + ncurses documentation and use either im/ei with explicit spaces, or IC/ic + by itself. We assume there will either be ei or we don't need to use it. */ +static void +open_some_spaces (int col) +{ +#if !defined (__MSDOS__) && (!defined (__MINGW32__) || defined (NCURSES_VERSION)) + char *buffer; + register int i; + + /* If IC is defined, then we do not have to "enter" insert mode. */ + if (_rl_term_IC) + { + buffer = tgoto (_rl_term_IC, 0, col); + tputs (buffer, 1, _rl_output_character_function); + } + else if (_rl_term_im && *_rl_term_im) + { + tputs (_rl_term_im, 1, _rl_output_character_function); + /* just output the desired number of spaces */ + for (i = col; i--; ) + _rl_output_character_function (' '); + /* If there is a string to turn off insert mode, use it now. */ + if (_rl_term_ei && *_rl_term_ei) + tputs (_rl_term_ei, 1, _rl_output_character_function); + /* and move back the right number of spaces */ + _rl_backspace (col); + } + else if (_rl_term_ic && *_rl_term_ic) + { + /* If there is a special command for inserting characters, then + use that first to open up the space. */ + for (i = col; i--; ) + tputs (_rl_term_ic, 1, _rl_output_character_function); + } +#endif /* !__MSDOS__ && (!__MINGW32__ || NCURSES_VERSION)*/ +} + +/* Delete COUNT characters from the display line. */ +static void +delete_chars (int count) +{ + if (count > _rl_screenwidth) /* XXX */ + return; + +#if !defined (__MSDOS__) && (!defined (__MINGW32__) || defined (NCURSES_VERSION)) + if (_rl_term_DC && *_rl_term_DC) + { + char *buffer; + buffer = tgoto (_rl_term_DC, count, count); + tputs (buffer, count, _rl_output_character_function); + } + else + { + if (_rl_term_dc && *_rl_term_dc) + while (count--) + tputs (_rl_term_dc, 1, _rl_output_character_function); + } +#endif /* !__MSDOS__ && (!__MINGW32__ || NCURSES_VERSION)*/ +} + +void +_rl_update_final (void) +{ + int full_lines, woff, botline_length; + + if (line_structures_initialized == 0) + return; + + full_lines = 0; + /* If the cursor is the only thing on an otherwise-blank last line, + compensate so we don't print an extra CRLF. */ + if (_rl_vis_botlin && _rl_last_c_pos == 0 && + visible_line[vis_lbreaks[_rl_vis_botlin]] == 0) + { + _rl_vis_botlin--; + full_lines = 1; + } + _rl_move_vert (_rl_vis_botlin); + woff = W_OFFSET(_rl_vis_botlin, wrap_offset); + botline_length = VIS_LLEN(_rl_vis_botlin) - woff; + /* If we've wrapped lines, remove the final xterm line-wrap flag. */ + if (full_lines && _rl_term_autowrap && botline_length == _rl_screenwidth) + { + char *last_line, *last_face; + + /* LAST_LINE includes invisible characters, so if you want to get the + last character of the first line, you have to take WOFF into account. + This needs to be done for both calls to _rl_move_cursor_relative, + which takes a buffer position as the first argument, and any direct + subscripts of LAST_LINE. */ + last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]]; /* = VIS_CHARS(_rl_vis_botlin); */ + last_face = &vis_face[vis_lbreaks[_rl_vis_botlin]]; /* = VIS_CHARS(_rl_vis_botlin); */ + cpos_buffer_position = -1; /* don't know where we are in buffer */ + _rl_move_cursor_relative (_rl_screenwidth - 1 + woff, last_line, last_face); /* XXX */ + _rl_clear_to_eol (0); + puts_face (&last_line[_rl_screenwidth - 1 + woff], + &last_face[_rl_screenwidth - 1 + woff], 1); + } + _rl_vis_botlin = 0; + if (botline_length > 0 || _rl_last_c_pos > 0) + rl_crlf (); + fflush (rl_outstream); + rl_display_fixed++; +} + +/* Move to the start of the current line. */ +static void +cr (void) +{ + _rl_cr (); + _rl_last_c_pos = 0; +} + +/* Redraw the last line of a multi-line prompt that may possibly contain + terminal escape sequences. Called with the cursor at column 0 of the + line to draw the prompt on. */ +static void +redraw_prompt (char *t) +{ + char *oldp; + + oldp = rl_display_prompt; + rl_save_prompt (); + + rl_display_prompt = t; + local_prompt = expand_prompt (t, PMT_MULTILINE, + &prompt_visible_length, + &prompt_last_invisible, + &prompt_invis_chars_first_line, + &prompt_physical_chars); + local_prompt_prefix = (char *)NULL; + local_prompt_len = local_prompt ? strlen (local_prompt) : 0; + + rl_forced_update_display (); + + rl_display_prompt = oldp; + rl_restore_prompt(); +} + +/* Redisplay the current line after a SIGWINCH is received. */ +void +_rl_redisplay_after_sigwinch (void) +{ + char *t; + + /* Clear the last line (assuming that the screen size change will result in + either more or fewer characters on that line only) and put the cursor at + column 0. Make sure the right thing happens if we have wrapped to a new + screen line. */ + if (_rl_term_cr) + { + _rl_move_vert (_rl_vis_botlin); + + _rl_cr (); + _rl_last_c_pos = 0; + +#if !defined (__MSDOS__) + if (_rl_term_clreol) + tputs (_rl_term_clreol, 1, _rl_output_character_function); + else +#endif + { + space_to_eol (_rl_screenwidth); + _rl_cr (); + } + + if (_rl_last_v_pos > 0) + _rl_move_vert (0); + } + else + rl_crlf (); + + /* Redraw only the last line of a multi-line prompt. */ + t = strrchr (rl_display_prompt, '\n'); + if (t) + redraw_prompt (++t); + else + rl_forced_update_display (); +} + +void +_rl_clean_up_for_exit (void) +{ + if (_rl_echoing_p) + { + if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */ + _rl_move_vert (_rl_vis_botlin); + _rl_vis_botlin = 0; + fflush (rl_outstream); + rl_restart_output (1, 0); + } +} + +void +_rl_erase_entire_line (void) +{ + cr (); + _rl_clear_to_eol (0); + cr (); + fflush (rl_outstream); +} + +void +_rl_ttyflush (void) +{ + fflush (rl_outstream); +} + +/* return the `current display line' of the cursor -- the number of lines to + move up to get to the first screen line of the current readline line. */ +int +_rl_current_display_line (void) +{ + int ret, nleft; + + /* Find out whether or not there might be invisible characters in the + editing buffer. */ + if (rl_display_prompt == rl_prompt) + nleft = _rl_last_c_pos - _rl_screenwidth - rl_visible_prompt_length; + else + nleft = _rl_last_c_pos - _rl_screenwidth; + + if (nleft > 0) + ret = 1 + nleft / _rl_screenwidth; + else + ret = 0; + + return ret; +} + +void +_rl_refresh_line (void) +{ + rl_clear_visible_line (); + rl_redraw_prompt_last_line (); + rl_keep_mark_active (); +} + +#if defined (HANDLE_MULTIBYTE) +/* Calculate the number of screen columns occupied by STR from START to END. + In the case of multibyte characters with stateful encoding, we have to + scan from the beginning of the string to take the state into account. */ +static int +_rl_col_width (const char *str, int start, int end, int flags) +{ + wchar_t wc; + mbstate_t ps; + int tmp, point, width, max; + + if (end <= start) + return 0; + if (MB_CUR_MAX == 1 || rl_byte_oriented) + /* this can happen in some cases where it's inconvenient to check */ + return (end - start); + + memset (&ps, 0, sizeof (mbstate_t)); + + point = 0; + max = end; + + /* Try to short-circuit common cases. The adjustment to remove wrap_offset + is done by the caller. */ + /* 1. prompt string */ + if (flags && start == 0 && end == local_prompt_len && memcmp (str, local_prompt, local_prompt_len) == 0) + return (prompt_physical_chars + wrap_offset); + /* 2. prompt string + line contents */ + else if (flags && start == 0 && local_prompt_len > 0 && end > local_prompt_len && local_prompt && memcmp (str, local_prompt, local_prompt_len) == 0) + { + tmp = prompt_physical_chars + wrap_offset; + /* XXX - try to call ourselves recursively with non-prompt portion */ + tmp += _rl_col_width (str, local_prompt_len, end, flags); + return (tmp); + } + + while (point < start) + { + if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point])) + { + memset (&ps, 0, sizeof (mbstate_t)); + tmp = 1; + } + else + tmp = mbrlen (str + point, max, &ps); + if (MB_INVALIDCH ((size_t)tmp)) + { + /* In this case, the bytes are invalid or too short to compose a + multibyte character, so we assume that the first byte represents + a single character. */ + point++; + max--; + + /* Clear the state of the byte sequence, because in this case the + effect of mbstate is undefined. */ + memset (&ps, 0, sizeof (mbstate_t)); + } + else if (MB_NULLWCH (tmp)) + break; /* Found '\0' */ + else + { + point += tmp; + max -= tmp; + } + } + + /* If START is not a byte that starts a character, then POINT will be + greater than START. In this case, assume that (POINT - START) gives + a byte count that is the number of columns of difference. */ + width = point - start; + + while (point < end) + { + if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point])) + { + tmp = 1; + wc = (wchar_t) str[point]; + } + else + tmp = mbrtowc (&wc, str + point, max, &ps); + if (MB_INVALIDCH ((size_t)tmp)) + { + /* In this case, the bytes are invalid or too short to compose a + multibyte character, so we assume that the first byte represents + a single character. */ + point++; + max--; + + /* and assume that the byte occupies a single column. */ + width++; + + /* Clear the state of the byte sequence, because in this case the + effect of mbstate is undefined. */ + memset (&ps, 0, sizeof (mbstate_t)); + } + else if (MB_NULLWCH (tmp)) + break; /* Found '\0' */ + else + { + point += tmp; + max -= tmp; + tmp = WCWIDTH(wc); + width += (tmp >= 0) ? tmp : 1; + } + } + + width += point - end; + + return width; +} +#endif /* HANDLE_MULTIBYTE */ diff --git a/bash-5.1/lib/readline/doc/Makefile b/bash-5.1/lib/readline/doc/Makefile new file mode 100644 index 0000000..af5ee3e --- /dev/null +++ b/bash-5.1/lib/readline/doc/Makefile @@ -0,0 +1,145 @@ +# Derived by hand from the generated readline-src/doc/Makefile +# This makefile for Readline library documentation is in -*- text -*- mode. +# Emacs likes it that way. + +# 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 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 . +# + + +topdir = . +srcdir = . +VPATH = . + +prefix = /usr/local +infodir = ${prefix}/info + +mandir = ${prefix}/man +manpfx = man + +man1ext = 1 +man1dir = $(mandir)/$(manpfx)$(man1ext) +man3ext = 3 +man3dir = $(mandir)/$(manpfx)$(man3ext) + +SHELL = /bin/sh +RM = rm -f + +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 + +BUILD_DIR = . +TEXINPUTDIR = $(srcdir) + +MAKEINFO = LANGUAGE= makeinfo +TEXI2DVI = $(srcdir)/texi2dvi +TEXI2HTML = $(srcdir)/texi2html +QUIETPS = #set this to -q to shut up dvips +PSDPI = 300 # I don't have any 600-dpi printers +DVIPS = dvips -D ${PSDPI} $(QUIETPS) -o $@ # tricky + +RLSRC = $(srcdir)/rlman.texi $(srcdir)/rluser.texi \ + $(srcdir)/rltech.texi $(srcdir)/version.texi \ + $(srcdir)/rluserman.texi +HISTSRC = $(srcdir)/history.texi $(srcdir)/hsuser.texi \ + $(srcdir)/hstech.texi $(srcdir)/version.texi + +# 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 + +DVIOBJ = readline.dvi history.dvi rluserman.dvi +INFOOBJ = readline.info history.info rluserman.info +PSOBJ = readline.ps history.ps rluserman.ps +HTMLOBJ = readline.html history.html rluserman.html + +INTERMEDIATE_OBJ = rlman.dvi + +CREATED_DOCS = $(DVIOBJ) $(INFOOBJ) $(PSOBJ) $(HTMLOBJ) + +.SUFFIXES: .ps .txt .dvi + +all: info dvi html ps +nodvi: info html + +readline.dvi: $(RLSRC) + TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texi + mv rlman.dvi readline.dvi + +readline.info: $(RLSRC) + $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi + +rluserman.dvi: $(RLSRC) + TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texi + +rluserman.info: $(RLSRC) + $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texi + +history.dvi: ${HISTSRC} + TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/history.texi + +history.info: ${HISTSRC} + $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/history.texi + +readline.ps: readline.dvi + $(RM) $@ + $(DVIPS) readline.dvi + +rluserman.ps: rluserman.dvi + $(RM) $@ + $(DVIPS) rluserman.dvi + +history.ps: history.dvi + $(RM) $@ + $(DVIPS) history.dvi + +readline.html: ${RLSRC} + $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rlman.texi + sed -e 's:rlman.html:readline.html:' rlman.html > readline.html + $(RM) rlman.html + +rluserman.html: ${RLSRC} + $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texi + +history.html: ${HISTSRC} + $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/history.texi + +info: $(INFOOBJ) +dvi: $(DVIOBJ) +ps: $(PSOBJ) +html: $(HTMLOBJ) + +clean: + $(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \ + *.fns *.kys *.tps *.vrs *.o core + +distclean: clean + $(RM) $(CREATED_DOCS) + $(RM) $(INTERMEDIATE_OBJ) + $(RM) Makefile + +mostlyclean: clean + +maintainer-clean: clean + $(RM) $(CREATED_DOCS) + $(RM) $(INTERMEDIATE_OBJ) + $(RM) Makefile + +install: + @echo "This documentation should not be installed." + +uninstall: diff --git a/bash-5.1/lib/readline/doc/fdl.texi b/bash-5.1/lib/readline/doc/fdl.texi new file mode 100644 index 0000000..8805f1a --- /dev/null +++ b/bash-5.1/lib/readline/doc/fdl.texi @@ -0,0 +1,506 @@ +@c The GNU Free Documentation License. +@center Version 1.3, 3 November 2008 + +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. + +@display +Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. +@uref{http://fsf.org/} + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +@end display + +@enumerate 0 +@item +PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document @dfn{free} in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of ``copyleft'', which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +@item +APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The ``Document'', below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as ``you''. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A ``Modified Version'' of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A ``Secondary Section'' is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The ``Invariant Sections'' are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The ``Cover Texts'' are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A ``Transparent'' copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not ``Transparent'' is called ``Opaque''. + +Examples of suitable formats for Transparent copies include plain +@sc{ascii} without markup, Texinfo input format, La@TeX{} input +format, @acronym{SGML} or @acronym{XML} using a publicly available +@acronym{DTD}, and standard-conforming simple @acronym{HTML}, +PostScript or @acronym{PDF} designed for human modification. Examples +of transparent image formats include @acronym{PNG}, @acronym{XCF} and +@acronym{JPG}. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, @acronym{SGML} or +@acronym{XML} for which the @acronym{DTD} and/or processing tools are +not generally available, and the machine-generated @acronym{HTML}, +PostScript or @acronym{PDF} produced by some word processors for +output purposes only. + +The ``Title Page'' means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, ``Title Page'' means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +The ``publisher'' means any person or entity that distributes copies +of the Document to the public. + +A section ``Entitled XYZ'' means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as ``Acknowledgements'', +``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' +of such a section when you modify the Document means that it remains a +section ``Entitled XYZ'' according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +@item +VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +@item +COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +@item +MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +@enumerate A +@item +Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +@item +List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +@item +State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +@item +Preserve all the copyright notices of the Document. + +@item +Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +@item +Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +@item +Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +@item +Include an unaltered copy of this License. + +@item +Preserve the section Entitled ``History'', Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled ``History'' in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +@item +Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the ``History'' section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +@item +For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +@item +Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +@item +Delete any section Entitled ``Endorsements''. Such a section +may not be included in the Modified Version. + +@item +Do not retitle any existing section to be Entitled ``Endorsements'' or +to conflict in title with any Invariant Section. + +@item +Preserve any Warranty Disclaimers. +@end enumerate + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled ``Endorsements'', provided it contains +nothing but endorsements of your Modified Version by various +parties---for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +@item +COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled ``History'' +in the various original documents, forming one section Entitled +``History''; likewise combine any sections Entitled ``Acknowledgements'', +and any sections Entitled ``Dedications''. You must delete all +sections Entitled ``Endorsements.'' + +@item +COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +@item +AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an ``aggregate'' if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +@item +TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled ``Acknowledgements'', +``Dedications'', or ``History'', the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +@item +TERMINATION + +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. + +@item +FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation 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. See +@uref{http://www.gnu.org/copyleft/}. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License ``or any later version'' applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +@item +RELICENSING + +``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the +site means any set of copyrightable works thus published on the MMC +site. + +``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +``Incorporate'' means to publish or republish a Document, in whole or +in part, as part of another Document. + +An MMC is ``eligible for relicensing'' if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole +or in part into the MMC, (1) had no cover texts or invariant sections, +and (2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + +@end enumerate + +@page +@heading ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +@smallexample +@group + Copyright (C) @var{year} @var{your name}. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU + Free Documentation License''. +@end group +@end smallexample + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the ``with@dots{}Texts.'' line with this: + +@smallexample +@group + with the Invariant Sections being @var{list their titles}, with + the Front-Cover Texts being @var{list}, and with the Back-Cover Texts + being @var{list}. +@end group +@end smallexample + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +@c Local Variables: +@c ispell-local-pdict: "ispell-dict" +@c End: + diff --git a/bash-5.1/lib/readline/doc/history.texi b/bash-5.1/lib/readline/doc/history.texi new file mode 100644 index 0000000..7a3a476 --- /dev/null +++ b/bash-5.1/lib/readline/doc/history.texi @@ -0,0 +1,85 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header (This is for running Texinfo on a region.) +@setfilename history.info +@settitle GNU History Library +@include version.texi + +@c %**end of header (This is for running Texinfo on a region.) + +@copying +This document describes the GNU History library +(version @value{VERSION}, @value{UPDATED}), +a programming tool that provides a consistent user interface for +recalling lines of previously typed input. + +Copyright @copyright{} 1988--2020 Free Software Foundation, Inc. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +A copy of the license is included in the section entitled +``GNU Free Documentation License''. + +@end quotation +@end copying + +@dircategory Libraries +@direntry +* History: (history). The GNU history library API. +@end direntry + +@titlepage +@title GNU History Library +@subtitle Edition @value{EDITION}, for @code{History Library} Version @value{VERSION}. +@subtitle @value{UPDATED-MONTH} +@author Chet Ramey, Case Western Reserve University +@author Brian Fox, Free Software Foundation + +@page + +@vskip 0pt plus 1filll +@insertcopying + +@end titlepage + +@contents + +@ifnottex +@node Top +@top GNU History Library + +This document describes the GNU History library, a programming tool that +provides a consistent user interface for recalling lines of previously +typed input. + +@menu +* Using History Interactively:: GNU History User's Manual. +* Programming with GNU History:: GNU History Programmer's Manual. +* GNU Free Documentation License:: License for copying this manual. +* Concept Index:: Index of concepts described in this manual. +* Function and Variable Index:: Index of externally visible functions + and variables. +@end menu +@end ifnottex + +@syncodeindex fn vr + +@include hsuser.texi +@include hstech.texi + +@node GNU Free Documentation License +@appendix GNU Free Documentation License + +@include fdl.texi + +@node Concept Index +@appendix Concept Index +@printindex cp + +@node Function and Variable Index +@appendix Function and Variable Index +@printindex vr + +@bye diff --git a/bash-5.1/lib/readline/doc/hstech.texi b/bash-5.1/lib/readline/doc/hstech.texi new file mode 100644 index 0000000..7ac1195 --- /dev/null +++ b/bash-5.1/lib/readline/doc/hstech.texi @@ -0,0 +1,602 @@ +@ignore +This file documents the user interface to the GNU History library. + +Copyright (C) 1988-2020 Free Software Foundation, Inc. +Authored by Brian Fox and Chet Ramey. + +Permission is granted to make and distribute verbatim copies of this manual +provided the copyright notice and this permission notice are preserved on +all copies. + +Permission is granted to process this file through Tex and print the +results, provided the printed document carries copying permission notice +identical to this one except for the removal of this paragraph (this +paragraph not being relevant to the printed manual). + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided also that the +GNU Copyright statement is available to the distributee, and provided that +the entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions. +@end ignore + +@node Programming with GNU History +@chapter Programming with GNU History + +This chapter describes how to interface programs that you write +with the @sc{gnu} History Library. +It should be considered a technical guide. +For information on the interactive use of @sc{gnu} History, @pxref{Using +History Interactively}. + +@menu +* Introduction to History:: What is the GNU History library for? +* History Storage:: How information is stored. +* History Functions:: Functions that you can use. +* History Variables:: Variables that control behaviour. +* History Programming Example:: Example of using the GNU History Library. +@end menu + +@node Introduction to History +@section Introduction to History + +Many programs read input from the user a line at a time. The @sc{gnu} +History library is able to keep track of those lines, associate arbitrary +data with each line, and utilize information from previous lines in +composing new ones. + +A programmer using the History library has available functions +for remembering lines on a history list, associating arbitrary data +with a line, removing lines from the list, searching through the list +for a line containing an arbitrary text string, and referencing any line +in the list directly. In addition, a history @dfn{expansion} function +is available which provides for a consistent user interface across +different programs. + +The user using programs written with the History library has the +benefit of a consistent user interface with a set of well-known +commands for manipulating the text of previous lines and using that text +in new commands. The basic history manipulation commands are similar to +the history substitution provided by @code{csh}. + +The programmer can also use the Readline library, which +includes some history manipulation by default, and has the added +advantage of command line editing. + +Before declaring any functions using any functionality the History +library provides in other code, an application writer should include +the file @code{} in any file that uses the +History library's features. It supplies extern declarations for all +of the library's public functions and variables, and declares all of +the public data structures. + +@node History Storage +@section History Storage + +The history list is an array of history entries. A history entry is +declared as follows: + +@example +typedef void *histdata_t; + +typedef struct _hist_entry @{ + char *line; + char *timestamp; + histdata_t data; +@} HIST_ENTRY; +@end example + +The history list itself might therefore be declared as + +@example +HIST_ENTRY **the_history_list; +@end example + +The state of the History library is encapsulated into a single structure: + +@example +/* + * A structure used to pass around the current state of the history. + */ +typedef struct _hist_state @{ + HIST_ENTRY **entries; /* Pointer to the entries themselves. */ + int offset; /* The location pointer within this array. */ + int length; /* Number of elements within this array. */ + int size; /* Number of slots allocated to this array. */ + int flags; +@} HISTORY_STATE; +@end example + +If the flags member includes @code{HS_STIFLED}, the history has been +stifled. + +@node History Functions +@section History Functions + +This section describes the calling sequence for the various functions +exported by the @sc{gnu} History library. + +@menu +* Initializing History and State Management:: Functions to call when you + want to use history in a + program. +* History List Management:: Functions used to manage the list + of history entries. +* Information About the History List:: Functions returning information about + the history list. +* Moving Around the History List:: Functions used to change the position + in the history list. +* Searching the History List:: Functions to search the history list + for entries containing a string. +* Managing the History File:: Functions that read and write a file + containing the history list. +* History Expansion:: Functions to perform csh-like history + expansion. +@end menu + +@node Initializing History and State Management +@subsection Initializing History and State Management + +This section describes functions used to initialize and manage +the state of the History library when you want to use the history +functions in your program. + +@deftypefun void using_history (void) +Begin a session in which the history functions might be used. This +initializes the interactive variables. +@end deftypefun + +@deftypefun {HISTORY_STATE *} history_get_history_state (void) +Return a structure describing the current state of the input history. +@end deftypefun + +@deftypefun void history_set_history_state (HISTORY_STATE *state) +Set the state of the history list according to @var{state}. +@end deftypefun + +@node History List Management +@subsection History List Management + +These functions manage individual entries on the history list, or set +parameters managing the list itself. + +@deftypefun void add_history (const char *string) +Place @var{string} at the end of the history list. The associated data +field (if any) is set to @code{NULL}. +If the maximum number of history entries has been set using +@code{stifle_history()}, and the new number of history entries would exceed +that maximum, the oldest history entry is removed. +@end deftypefun + +@deftypefun void add_history_time (const char *string) +Change the time stamp associated with the most recent history entry to +@var{string}. +@end deftypefun + +@deftypefun {HIST_ENTRY *} remove_history (int which) +Remove history entry at offset @var{which} from the history. The +removed element is returned so you can free the line, data, +and containing structure. +@end deftypefun + +@deftypefun {histdata_t} free_history_entry (HIST_ENTRY *histent) +Free the history entry @var{histent} and any history library private +data associated with it. Returns the application-specific data +so the caller can dispose of it. +@end deftypefun + +@deftypefun {HIST_ENTRY *} replace_history_entry (int which, const char *line, histdata_t data) +Make the history entry at offset @var{which} have @var{line} and @var{data}. +This returns the old entry so the caller can dispose of any +application-specific data. In the case +of an invalid @var{which}, a @code{NULL} pointer is returned. +@end deftypefun + +@deftypefun void clear_history (void) +Clear the history list by deleting all the entries. +@end deftypefun + +@deftypefun void stifle_history (int max) +Stifle the history list, remembering only the last @var{max} entries. +The history list will contain only @var{max} entries at a time. +@end deftypefun + +@deftypefun int unstifle_history (void) +Stop stifling the history. This returns the previously-set +maximum number of history entries (as set by @code{stifle_history()}). +The value is positive if the history was +stifled, negative if it wasn't. +@end deftypefun + +@deftypefun int history_is_stifled (void) +Returns non-zero if the history is stifled, zero if it is not. +@end deftypefun + +@node Information About the History List +@subsection Information About the History List + +These functions return information about the entire history list or +individual list entries. + +@deftypefun {HIST_ENTRY **} history_list (void) +Return a @code{NULL} terminated array of @code{HIST_ENTRY *} which is the +current input history. Element 0 of this list is the beginning of time. +If there is no history, return @code{NULL}. +@end deftypefun + +@deftypefun int where_history (void) +Returns the offset of the current history element. +@end deftypefun + +@deftypefun {HIST_ENTRY *} current_history (void) +Return the history entry at the current position, as determined by +@code{where_history()}. If there is no entry there, return a @code{NULL} +pointer. +@end deftypefun + +@deftypefun {HIST_ENTRY *} history_get (int offset) +Return the history entry at position @var{offset}. +The range of valid +values of @var{offset} starts at @code{history_base} and ends at +@var{history_length} - 1 (@pxref{History Variables}). +If there is no entry there, or if @var{offset} is outside the valid +range, return a @code{NULL} pointer. +@end deftypefun + +@deftypefun time_t history_get_time (HIST_ENTRY *entry) +Return the time stamp associated with the history entry @var{entry}. +If the timestamp is missing or invalid, return 0. +@end deftypefun + +@deftypefun int history_total_bytes (void) +Return the number of bytes that the primary history entries are using. +This function returns the sum of the lengths of all the lines in the +history. +@end deftypefun + +@node Moving Around the History List +@subsection Moving Around the History List + +These functions allow the current index into the history list to be +set or changed. + +@deftypefun int history_set_pos (int pos) +Set the current history offset to @var{pos}, an absolute index +into the list. +Returns 1 on success, 0 if @var{pos} is less than zero or greater +than the number of history entries. +@end deftypefun + +@deftypefun {HIST_ENTRY *} previous_history (void) +Back up the current history offset to the previous history entry, and +return a pointer to that entry. If there is no previous entry, return +a @code{NULL} pointer. +@end deftypefun + +@deftypefun {HIST_ENTRY *} next_history (void) +If the current history offset refers to a valid history entry, +increment the current history offset. +If the possibly-incremented history offset refers to a valid history +entry, return a pointer to that entry; +otherwise, return a @code{BNULL} pointer. +@end deftypefun + +@node Searching the History List +@subsection Searching the History List +@cindex History Searching + +These functions allow searching of the history list for entries containing +a specific string. Searching may be performed both forward and backward +from the current history position. The search may be @dfn{anchored}, +meaning that the string must match at the beginning of the history entry. +@cindex anchored search + +@deftypefun int history_search (const char *string, int direction) +Search the history for @var{string}, starting at the current history offset. +If @var{direction} is less than 0, then the search is through +previous entries, otherwise through subsequent entries. +If @var{string} is found, then +the current history index is set to that history entry, and the value +returned is the offset in the line of the entry where +@var{string} was found. Otherwise, nothing is changed, and a -1 is +returned. +@end deftypefun + +@deftypefun int history_search_prefix (const char *string, int direction) +Search the history for @var{string}, starting at the current history +offset. The search is anchored: matching lines must begin with +@var{string}. If @var{direction} is less than 0, then the search is +through previous entries, otherwise through subsequent entries. +If @var{string} is found, then the +current history index is set to that entry, and the return value is 0. +Otherwise, nothing is changed, and a -1 is returned. +@end deftypefun + +@deftypefun int history_search_pos (const char *string, int direction, int pos) +Search for @var{string} in the history list, starting at @var{pos}, an +absolute index into the list. If @var{direction} is negative, the search +proceeds backward from @var{pos}, otherwise forward. Returns the absolute +index of the history element where @var{string} was found, or -1 otherwise. +@end deftypefun + +@node Managing the History File +@subsection Managing the History File + +The History library can read the history from and write it to a file. +This section documents the functions for managing a history file. + +@deftypefun int read_history (const char *filename) +Add the contents of @var{filename} to the history list, a line at a time. +If @var{filename} is @code{NULL}, then read from @file{~/.history}. +Returns 0 if successful, or @code{errno} if not. +@end deftypefun + +@deftypefun int read_history_range (const char *filename, int from, int to) +Read a range of lines from @var{filename}, adding them to the history list. +Start reading at line @var{from} and end at @var{to}. +If @var{from} is zero, start at the beginning. If @var{to} is less than +@var{from}, then read until the end of the file. If @var{filename} is +@code{NULL}, then read from @file{~/.history}. Returns 0 if successful, +or @code{errno} if not. +@end deftypefun + +@deftypefun int write_history (const char *filename) +Write the current history to @var{filename}, overwriting @var{filename} +if necessary. +If @var{filename} is @code{NULL}, then write the history list to +@file{~/.history}. +Returns 0 on success, or @code{errno} on a read or write error. +@end deftypefun + +@deftypefun int append_history (int nelements, const char *filename) +Append the last @var{nelements} of the history list to @var{filename}. +If @var{filename} is @code{NULL}, then append to @file{~/.history}. +Returns 0 on success, or @code{errno} on a read or write error. +@end deftypefun + +@deftypefun int history_truncate_file (const char *filename, int nlines) +Truncate the history file @var{filename}, leaving only the last +@var{nlines} lines. +If @var{filename} is @code{NULL}, then @file{~/.history} is truncated. +Returns 0 on success, or @code{errno} on failure. +@end deftypefun + +@node History Expansion +@subsection History Expansion + +These functions implement history expansion. + +@deftypefun int history_expand (char *string, char **output) +Expand @var{string}, placing the result into @var{output}, a pointer +to a string (@pxref{History Interaction}). Returns: +@table @code +@item 0 +If no expansions took place (or, if the only change in +the text was the removal of escape characters preceding the history expansion +character); +@item 1 +if expansions did take place; +@item -1 +if there was an error in expansion; +@item 2 +if the returned line should be displayed, but not executed, +as with the @code{:p} modifier (@pxref{Modifiers}). +@end table + +If an error occurred in expansion, then @var{output} contains a descriptive +error message. +@end deftypefun + +@deftypefun {char *} get_history_event (const char *string, int *cindex, int qchar) +Returns the text of the history event beginning at @var{string} + +@var{*cindex}. @var{*cindex} is modified to point to after the event +specifier. At function entry, @var{cindex} points to the index into +@var{string} where the history event specification begins. @var{qchar} +is a character that is allowed to end the event specification in addition +to the ``normal'' terminating characters. +@end deftypefun + +@deftypefun {char **} history_tokenize (const char *string) +Return an array of tokens parsed out of @var{string}, much as the +shell might. The tokens are split on the characters in the +@var{history_word_delimiters} variable, +and shell quoting conventions are obeyed as described below. +@end deftypefun + +@deftypefun {char *} history_arg_extract (int first, int last, const char *string) +Extract a string segment consisting of the @var{first} through @var{last} +arguments present in @var{string}. Arguments are split using +@code{history_tokenize}. +@end deftypefun + +@node History Variables +@section History Variables + +This section describes the externally-visible variables exported by +the @sc{gnu} History Library. + +@deftypevar int history_base +The logical offset of the first entry in the history list. +@end deftypevar + +@deftypevar int history_length +The number of entries currently stored in the history list. +@end deftypevar + +@deftypevar int history_max_entries +The maximum number of history entries. This must be changed using +@code{stifle_history()}. +@end deftypevar + +@deftypevar int history_write_timestamps +If non-zero, timestamps are written to the history file, so they can be +preserved between sessions. The default value is 0, meaning that +timestamps are not saved. + +The current timestamp format uses the value of @var{history_comment_char} +to delimit timestamp entries in the history file. If that variable does +not have a value (the default), timestamps will not be written. +@end deftypevar + +@deftypevar char history_expansion_char +The character that introduces a history event. The default is @samp{!}. +Setting this to 0 inhibits history expansion. +@end deftypevar + +@deftypevar char history_subst_char +The character that invokes word substitution if found at the start of +a line. The default is @samp{^}. +@end deftypevar + +@deftypevar char history_comment_char +During tokenization, if this character is seen as the first character +of a word, then it and all subsequent characters up to a newline are +ignored, suppressing history expansion for the remainder of the line. +This is disabled by default. +@end deftypevar + +@deftypevar {char *} history_word_delimiters +The characters that separate tokens for @code{history_tokenize()}. +The default value is @code{" \t\n()<>;&|"}. +@end deftypevar + +@deftypevar {char *} history_search_delimiter_chars +The list of additional characters which can delimit a history search +string, in addition to space, TAB, @samp{:} and @samp{?} in the case of +a substring search. The default is empty. +@end deftypevar + +@deftypevar {char *} history_no_expand_chars +The list of characters which inhibit history expansion if found immediately +following @var{history_expansion_char}. The default is space, tab, newline, +carriage return, and @samp{=}. +@end deftypevar + +@deftypevar int history_quotes_inhibit_expansion +If non-zero, the history expansion code implements shell-like quoting: +single-quoted words are not scanned for the history expansion +character or the history comment character, and double-quoted words may +have history expansion performed, since single quotes are not special +within double quotes. +The default value is 0. +@end deftypevar + +@deftypevar int history_quoting_state +An application may set this variable to indicate that the current line +being expanded is subject to existing quoting. If set to @samp{'}, the +history expansion function will assume that the line is single-quoted and +inhibit expansion until it reads an unquoted closing single quote; if set +to @samp{"}, history expansion will assume the line is double quoted until +it reads an unquoted closing double quote. If set to zero, the default, +the history expansion function will assume the line is not quoted and +treat quote characters within the line as described above. +This is only effective if @var{history_quotes_inhibit_expansion} is set. +@end deftypevar + +@deftypevar {rl_linebuf_func_t *} history_inhibit_expansion_function +This should be set to the address of a function that takes two arguments: +a @code{char *} (@var{string}) +and an @code{int} index into that string (@var{i}). +It should return a non-zero value if the history expansion starting at +@var{string[i]} should not be performed; zero if the expansion should +be done. +It is intended for use by applications like Bash that use the history +expansion character for additional purposes. +By default, this variable is set to @code{NULL}. +@end deftypevar + +@node History Programming Example +@section History Programming Example + +The following program demonstrates simple use of the @sc{gnu} History Library. + +@smallexample +#include +#include + +main (argc, argv) + int argc; + char **argv; +@{ + char line[1024], *t; + int len, done = 0; + + line[0] = 0; + + using_history (); + while (!done) + @{ + printf ("history$ "); + fflush (stdout); + t = fgets (line, sizeof (line) - 1, stdin); + if (t && *t) + @{ + len = strlen (t); + if (t[len - 1] == '\n') + t[len - 1] = '\0'; + @} + + if (!t) + strcpy (line, "quit"); + + if (line[0]) + @{ + char *expansion; + int result; + + result = history_expand (line, &expansion); + if (result) + fprintf (stderr, "%s\n", expansion); + + if (result < 0 || result == 2) + @{ + free (expansion); + continue; + @} + + add_history (expansion); + strncpy (line, expansion, sizeof (line) - 1); + free (expansion); + @} + + if (strcmp (line, "quit") == 0) + done = 1; + else if (strcmp (line, "save") == 0) + write_history ("history_file"); + else if (strcmp (line, "read") == 0) + read_history ("history_file"); + else if (strcmp (line, "list") == 0) + @{ + register HIST_ENTRY **the_list; + register int i; + + the_list = history_list (); + if (the_list) + for (i = 0; the_list[i]; i++) + printf ("%d: %s\n", i + history_base, the_list[i]->line); + @} + else if (strncmp (line, "delete", 6) == 0) + @{ + int which; + if ((sscanf (line + 6, "%d", &which)) == 1) + @{ + HIST_ENTRY *entry = remove_history (which); + if (!entry) + fprintf (stderr, "No such entry %d\n", which); + else + @{ + free (entry->line); + free (entry); + @} + @} + else + @{ + fprintf (stderr, "non-numeric arg given to `delete'\n"); + @} + @} + @} +@} +@end smallexample diff --git a/bash-5.1/lib/readline/doc/hsuser.texi b/bash-5.1/lib/readline/doc/hsuser.texi new file mode 100644 index 0000000..b8fedf3 --- /dev/null +++ b/bash-5.1/lib/readline/doc/hsuser.texi @@ -0,0 +1,527 @@ +@ignore +This file documents the user interface to the GNU History library. + +Copyright (C) 1988--2020 Free Software Foundation, Inc. +Authored by Brian Fox and Chet Ramey. + +Permission is granted to make and distribute verbatim copies of this manual +provided the copyright notice and this permission notice are preserved on +all copies. + +Permission is granted to process this file through Tex and print the +results, provided the printed document carries copying permission notice +identical to this one except for the removal of this paragraph (this +paragraph not being relevant to the printed manual). + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided also that the +GNU Copyright statement is available to the distributee, and provided that +the entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions. +@end ignore + +@node Using History Interactively +@chapter Using History Interactively + +@ifclear BashFeatures +@defcodeindex bt +@end ifclear + +@ifset BashFeatures +This chapter describes how to use the @sc{gnu} History Library +interactively, from a user's standpoint. +It should be considered a user's guide. +For information on using the @sc{gnu} History Library in other programs, +see the @sc{gnu} Readline Library Manual. +@end ifset +@ifclear BashFeatures +This chapter describes how to use the @sc{gnu} History Library interactively, +from a user's standpoint. It should be considered a user's guide. For +information on using the @sc{gnu} History Library in your own programs, +@pxref{Programming with GNU History}. +@end ifclear + +@ifset BashFeatures +@menu +* Bash History Facilities:: How Bash lets you manipulate your command + history. +* Bash History Builtins:: The Bash builtin commands that manipulate + the command history. +* History Interaction:: What it feels like using History as a user. +@end menu +@end ifset +@ifclear BashFeatures +@menu +* History Interaction:: What it feels like using History as a user. +@end menu +@end ifclear + +@ifset BashFeatures +@node Bash History Facilities +@section Bash History Facilities +@cindex command history +@cindex history list + +When the @option{-o history} option to the @code{set} builtin +is enabled (@pxref{The Set Builtin}), +the shell provides access to the @dfn{command history}, +the list of commands previously typed. +The value of the @env{HISTSIZE} shell variable is used as the +number of commands to save in a history list. +The text of the last @env{$HISTSIZE} +commands (default 500) is saved. +The shell stores each command in the history list prior to +parameter and variable expansion +but after history expansion is performed, subject to the +values of the shell variables +@env{HISTIGNORE} and @env{HISTCONTROL}. + +When the shell starts up, the history is initialized from the +file named by the @env{HISTFILE} variable (default @file{~/.bash_history}). +The file named by the value of @env{HISTFILE} is truncated, if +necessary, to contain no more than the number of lines specified by +the value of the @env{HISTFILESIZE} variable. +When a shell with history enabled exits, the last +@env{$HISTSIZE} lines are copied from the history list to the file +named by @env{$HISTFILE}. +If the @code{histappend} shell option is set (@pxref{Bash Builtins}), +the lines are appended to the history file, +otherwise the history file is overwritten. +If @env{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 @env{$HISTFILESIZE} lines. +If @env{HISTFILESIZE} is unset, or set to null, a non-numeric value, or +a numeric value less than zero, the history file is not truncated. + +If the @env{HISTTIMEFORMAT} is set, the time stamp information +associated with each history entry is written to the history file, +marked with the history comment character. +When the history file is read, lines beginning with the history +comment character followed immediately by a digit are interpreted +as timestamps for the following history entry. + +The builtin command @code{fc} may be used to list or edit and re-execute +a portion of the history list. +The @code{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 (@pxref{Commands For History}). + +The shell allows control over which commands are saved on the history +list. The @env{HISTCONTROL} and @env{HISTIGNORE} +variables may be set to cause the shell to save only a subset of the +commands entered. +The @code{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 @code{lithist} +shell option causes the shell to save the command with embedded newlines +instead of semicolons. +The @code{shopt} builtin is used to set these options. +@xref{The Shopt Builtin}, for a description of @code{shopt}. + +@node Bash History Builtins +@section Bash History Builtins +@cindex history builtins + +Bash provides two builtin commands which manipulate the +history list and history file. + +@table @code + +@item fc +@btindex fc +@example +@code{fc [-e @var{ename}] [-lnr] [@var{first}] [@var{last}]} +@code{fc -s [@var{pat}=@var{rep}] [@var{command}]} +@end example + +The first form selects a range of commands from @var{first} to +@var{last} from the history list and displays or edits and re-executes +them. +Both @var{first} and +@var{last} may be specified as a string (to locate the most recent +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). + +When listing, a @var{first} or @var{last} of 0 is equivalent to -1 +and -0 is equivalent to the current command (usually the @code{fc} +command); +otherwise 0 is equivalent to -1 and -0 is invalid. + +If @var{last} is not specified, it is set to +@var{first}. If @var{first} is not specified, it is set to the previous +command for editing and @minus{}16 for listing. If the @option{-l} flag is +given, the commands are listed on standard output. The @option{-n} flag +suppresses the command numbers when listing. The @option{-r} flag +reverses the order of the listing. Otherwise, the editor given by +@var{ename} is invoked on a file containing those commands. If +@var{ename} is not given, the value of the following variable expansion +is used: @code{$@{FCEDIT:-$@{EDITOR:-vi@}@}}. This says to use the +value of the @env{FCEDIT} variable if set, or the value of the +@env{EDITOR} variable if that is set, or @code{vi} if neither is set. +When editing is complete, the edited commands are echoed and executed. + +In the second form, @var{command} is re-executed after each instance +of @var{pat} in the selected command is replaced by @var{rep}. +@var{command} is interpreted the same as @var{first} above. + +A useful alias to use with the @code{fc} command is @code{r='fc -s'}, so +that typing @samp{r cc} runs the last command beginning with @code{cc} +and typing @samp{r} re-executes the last command (@pxref{Aliases}). + +@item history +@btindex history +@example +history [@var{n}] +history -c +history -d @var{offset} +history -d @var{start}-@var{end} +history [-anrw] [@var{filename}] +history -ps @var{arg} +@end example + +With no options, display the history list with line numbers. +Lines prefixed with a @samp{*} have been modified. +An argument of @var{n} lists only the last @var{n} lines. +If the shell variable @env{HISTTIMEFORMAT} is set and not null, +it is used as a format string for @var{strftime} 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. + +Options, if supplied, have the following meanings: + +@table @code +@item -c +Clear the history list. This may be combined +with the other options to replace the history list completely. + +@item -d @var{offset} +Delete the history entry at position @var{offset}. +If @var{offset} is positive, it should be specified as it appears when +the history is displayed. +If @var{offset} is negative, it is interpreted as relative to one greater +than the last history position, so negative indices count back from the +end of the history, and an index of @samp{-1} refers to the current +@code{history -d} command. + +@item -d @var{start}-@var{end} +Delete the history entries between positions @var{start} and @var{end}, +inclusive. Positive and negative values for @var{start} and @var{end} +are interpreted as described above. + +@item -a +Append the new history lines to the history file. +These are history lines entered since the beginning of the current +Bash session, but not already appended to the history file. + +@item -n +Append the history lines not already read from the history file +to the current history list. These are lines appended to the history +file since the beginning of the current Bash session. + +@item -r +Read the history file and append its contents to +the history list. + +@item -w +Write out the current history list to the history file. + +@item -p +Perform history substitution on the @var{arg}s and display the result +on the standard output, without storing the results in the history list. + +@item -s +The @var{arg}s are added to the end of +the history list as a single entry. + +@end table + +When any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options is +used, if @var{filename} +is given, then it is used as the history file. If not, then +the value of the @env{HISTFILE} variable is used. + +@end table +@end ifset + +@node History Interaction +@section History Expansion +@cindex history expansion + +The History library provides a history expansion feature that is similar +to the history expansion provided by @code{csh}. This section +describes the syntax used to manipulate the history information. + +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. + +@ifset BashFeatures +History expansion is performed immediately after a complete line +is read, before the shell breaks it into words, and is performed +on each line individually. Bash attempts to inform the history +expansion functions about quoting still in effect from previous lines. +@end ifset + +History expansion takes place in two parts. The first is to determine +which line from the history list should be used during substitution. +The second is to select portions of that line for inclusion into the +current one. The line selected from the history is called the +@dfn{event}, and the portions of that line that are acted upon are +called @dfn{words}. Various @dfn{modifiers} are available to manipulate +the selected words. The line is broken into words in the same fashion +that Bash does, so that several words +surrounded by quotes are considered one word. +History expansions are introduced by the appearance of the +history expansion character, which is @samp{!} by default. + +History expansion implements shell-like quoting conventions: +a backslash can be used to remove the special handling for the next character; +single quotes enclose verbatim sequences of characters, and can be used to +inhibit history expansion; +and characters enclosed within double quotes may be subject to history +expansion, since backslash can escape the history expansion character, +but single quotes may not, since they are not treated specially within +double quotes. + +@ifset BashFeatures +When using the shell, only @samp{\} and @samp{'} may be used to escape the +history expansion character, but the history expansion character is +also treated as quoted if it immediately precedes the closing double quote +in a double-quoted string. +@end ifset + +@ifset BashFeatures +Several shell options settable with the @code{shopt} +builtin (@pxref{The Shopt Builtin}) may be used to tailor +the behavior of history expansion. If the +@code{histverify} shell option is enabled, 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 @code{histreedit} +shell option is enabled, a failed history expansion will be +reloaded into the Readline editing buffer for correction. +The @option{-p} option to the @code{history} builtin command +may be used to see what a history expansion will do before using it. +The @option{-s} option to the @code{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. +This is most useful in conjunction with Readline. + +The shell allows control of the various characters used by the +history expansion mechanism with the @code{histchars} variable, +as explained above (@pxref{Bash Variables}). The shell uses +the history comment character to mark history timestamps when +writing the history file. +@end ifset + +@menu +* Event Designators:: How to specify which history line to use. +* Word Designators:: Specifying which words are of interest. +* Modifiers:: Modifying the results of substitution. +@end menu + +@node Event Designators +@subsection Event Designators +@cindex event designators + +An event designator is a reference to a command line entry in the +history list. +Unless the reference is absolute, events are relative to the current +position in the history list. +@cindex history events + +@table @asis + +@item @code{!} +@ifset BashFeatures +Start a history substitution, except when followed by a space, tab, +the end of the line, @samp{=} or @samp{(} (when the +@code{extglob} shell option is enabled using the @code{shopt} builtin). +@end ifset +@ifclear BashFeatures +Start a history substitution, except when followed by a space, tab, +the end of the line, or @samp{=}. +@end ifclear + +@item @code{!@var{n}} +Refer to command line @var{n}. + +@item @code{!-@var{n}} +Refer to the command @var{n} lines back. + +@item @code{!!} +Refer to the previous command. This is a synonym for @samp{!-1}. + +@item @code{!@var{string}} +Refer to the most recent command +preceding the current position in the history list +starting with @var{string}. + +@item @code{!?@var{string}[?]} +Refer to the most recent command +preceding the current position in the history list +containing @var{string}. +The trailing +@samp{?} may be omitted if the @var{string} is followed immediately by +a newline. +If @var{string} is missing, the string from the most recent search is used; +it is an error if there is no previous search string. + +@item @code{^@var{string1}^@var{string2}^} +Quick Substitution. Repeat the last command, replacing @var{string1} +with @var{string2}. Equivalent to +@code{!!:s^@var{string1}^@var{string2}^}. + +@item @code{!#} +The entire command line typed so far. + +@end table + +@node Word Designators +@subsection Word Designators + +Word designators are used to select desired words from the event. +A @samp{:} separates the event specification from the word designator. It +may be omitted if the word designator begins with a @samp{^}, @samp{$}, +@samp{*}, @samp{-}, or @samp{%}. 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. + +@need 0.75 +For example, + +@table @code +@item !! +designates the preceding command. When you type this, the preceding +command is repeated in toto. + +@item !!:$ +designates the last argument of the preceding command. This may be +shortened to @code{!$}. + +@item !fi:2 +designates the second argument of the most recent command starting with +the letters @code{fi}. +@end table + +@need 0.75 +Here are the word designators: + +@table @code + +@item 0 (zero) +The @code{0}th word. For many applications, this is the command word. + +@item @var{n} +The @var{n}th word. + +@item ^ +The first argument; that is, word 1. + +@item $ +The last argument. + +@item % +The first word matched by the most recent @samp{?@var{string}?} search, +if the search string begins with a character that is part of a word. + +@item @var{x}-@var{y} +A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}. + +@item * +All of the words, except the @code{0}th. This is a synonym for @samp{1-$}. +It is not an error to use @samp{*} if there is just one word in the event; +the empty string is returned in that case. + +@item @var{x}* +Abbreviates @samp{@var{x}-$} + +@item @var{x}- +Abbreviates @samp{@var{x}-$} like @samp{@var{x}*}, but omits the last word. +If @samp{x} is missing, it defaults to 0. + +@end table + +If a word designator is supplied without an event specification, the +previous command is used as the event. + +@node Modifiers +@subsection Modifiers + +After the optional word designator, you can add a sequence of one or more +of the following modifiers, each preceded by a @samp{:}. +These modify, or edit, the word or words selected from the history event. + +@table @code + +@item h +Remove a trailing pathname component, leaving only the head. + +@item t +Remove all leading pathname components, leaving the tail. + +@item r +Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving +the basename. + +@item e +Remove all but the trailing suffix. + +@item p +Print the new command but do not execute it. + +@ifset BashFeatures +@item q +Quote the substituted words, escaping further substitutions. + +@item x +Quote the substituted words as with @samp{q}, +but break into words at spaces, tabs, and newlines. +The @samp{q} and @samp{x} modifiers are mutually exclusive; the last one +supplied is used. +@end ifset + +@item s/@var{old}/@var{new}/ +Substitute @var{new} for the first occurrence of @var{old} in the +event line. +Any character may be used as the delimiter in place of @samp{/}. +The delimiter may be quoted in @var{old} and @var{new} +with a single backslash. If @samp{&} appears in @var{new}, +it is replaced by @var{old}. A single backslash will quote +the @samp{&}. +If @var{old} is null, it is set to the last @var{old} +substituted, or, if no previous history substitutions took place, +the last @var{string} +in a !?@var{string}@code{[?]} +search. +If @var{new} is is null, each matching @var{old} is deleted. +The final delimiter is optional if it is the last +character on the input line. + +@item & +Repeat the previous substitution. + +@item g +@itemx a +Cause changes to be applied over the entire event line. Used in +conjunction with @samp{s}, as in @code{gs/@var{old}/@var{new}/}, +or with @samp{&}. + +@item G +Apply the following @samp{s} or @samp{&} modifier once to each word +in the event. + +@end table diff --git a/bash-5.1/lib/readline/doc/rlman.texi b/bash-5.1/lib/readline/doc/rlman.texi new file mode 100644 index 0000000..ec7487b --- /dev/null +++ b/bash-5.1/lib/readline/doc/rlman.texi @@ -0,0 +1,84 @@ +\input texinfo @c -*-texinfo-*- +@comment %**start of header (This is for running Texinfo on a region.) +@setfilename readline.info +@settitle GNU Readline Library +@include version.texi + +@comment %**end of header (This is for running Texinfo on a region.) +@synindex vr fn + +@copying +This manual describes the GNU Readline Library +(version @value{VERSION}, @value{UPDATED}), a library which aids in the +consistency of user interface across discrete programs which provide +a command line interface. + +Copyright @copyright{} 1988--2020 Free Software Foundation, Inc. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +A copy of the license is included in the section entitled +``GNU Free Documentation License''. + +@end quotation +@end copying + +@dircategory Libraries +@direntry +* Readline: (readline). The GNU readline library API. +@end direntry + +@titlepage +@title GNU Readline Library +@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}. +@subtitle @value{UPDATED-MONTH} +@author Chet Ramey, Case Western Reserve University +@author Brian Fox, Free Software Foundation + +@page +@vskip 0pt plus 1filll +@insertcopying + +@end titlepage + +@contents + +@ifnottex +@node Top +@top GNU Readline Library + +This document describes the GNU Readline Library, a utility which aids +in the consistency of user interface across discrete programs which +provide a command line interface. +The Readline home page is @url{http://www.gnu.org/software/readline/}. + +@menu +* Command Line Editing:: GNU Readline User's Manual. +* Programming with GNU Readline:: GNU Readline Programmer's Manual. +* GNU Free Documentation License:: License for copying this manual. +* Concept Index:: Index of concepts described in this manual. +* Function and Variable Index:: Index of externally visible functions + and variables. +@end menu +@end ifnottex + +@include rluser.texi +@include rltech.texi + +@node GNU Free Documentation License +@appendix GNU Free Documentation License + +@include fdl.texi + +@node Concept Index +@unnumbered Concept Index +@printindex cp + +@node Function and Variable Index +@unnumbered Function and Variable Index +@printindex fn + +@bye diff --git a/bash-5.1/lib/readline/doc/rltech.texi b/bash-5.1/lib/readline/doc/rltech.texi new file mode 100644 index 0000000..bbf57c2 --- /dev/null +++ b/bash-5.1/lib/readline/doc/rltech.texi @@ -0,0 +1,2757 @@ +@comment %**start of header (This is for running Texinfo on a region.) +@setfilename rltech.info +@comment %**end of header (This is for running Texinfo on a region.) + +@ifinfo +This document describes the GNU Readline Library, a utility for aiding +in the consistency of user interface across discrete programs that need +to provide a command line interface. + +Copyright (C) 1988--2020 Free Software Foundation, Inc. + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +pare preserved on all copies. + +@ignore +Permission is granted to process this file through TeX and print the +results, provided the printed document carries copying permission +notice identical to this one except for the removal of this paragraph +(this paragraph not being relevant to the printed manual). +@end ignore + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation approved +by the Foundation. +@end ifinfo + +@node Programming with GNU Readline +@chapter Programming with GNU Readline + +This chapter describes the interface between the @sc{gnu} Readline Library and +other programs. If you are a programmer, and you wish to include the +features found in @sc{gnu} Readline +such as completion, line editing, and interactive history manipulation +in your own programs, this section is for you. + +@menu +* Basic Behavior:: Using the default behavior of Readline. +* Custom Functions:: Adding your own functions to Readline. +* Readline Variables:: Variables accessible to custom + functions. +* Readline Convenience Functions:: Functions which Readline supplies to + aid in writing your own custom + functions. +* Readline Signal Handling:: How Readline behaves when it receives signals. +* Custom Completers:: Supplanting or supplementing Readline's + completion functions. +@end menu + +@node Basic Behavior +@section Basic Behavior + +Many programs provide a command line interface, such as @code{mail}, +@code{ftp}, and @code{sh}. For such programs, the default behaviour of +Readline is sufficient. This section describes how to use Readline in +the simplest way possible, perhaps to replace calls in your code to +@code{gets()} or @code{fgets()}. + +@findex readline +@cindex readline, function + +The function @code{readline()} prints a prompt @var{prompt} +and then reads and returns a single line of text from the user. +If @var{prompt} is @code{NULL} or the empty string, no prompt is displayed. +The line @code{readline} returns is allocated with @code{malloc()}; +the caller should @code{free()} the line when it has finished with it. +The declaration for @code{readline} in ANSI C is + +@example +@code{char *readline (const char *@var{prompt});} +@end example + +@noindent +So, one might say +@example +@code{char *line = readline ("Enter a line: ");} +@end example +@noindent +in order to read a line of text from the user. +The line returned has the final newline removed, so only the +text remains. + +If @code{readline} encounters an @code{EOF} while reading the line, and the +line is empty at that point, then @code{(char *)NULL} is returned. +Otherwise, the line is ended just as if a newline had been typed. + +Readline performs some expansion on the @var{prompt} before it is +displayed on the screen. See the description of @code{rl_expand_prompt} +(@pxref{Redisplay}) for additional details, especially if @var{prompt} +will contain characters that do not consume physical screen space when +displayed. + +If you want the user to be able to get at the line later, (with +@key{C-p} for example), you must call @code{add_history()} to save the +line away in a @dfn{history} list of such lines. + +@example +@code{add_history (line)}; +@end example + +@noindent +For full details on the GNU History Library, see the associated manual. + +It is preferable to avoid saving empty lines on the history list, since +users rarely have a burning need to reuse a blank line. Here is +a function which usefully replaces the standard @code{gets()} library +function, and has the advantage of no static buffer to overflow: + +@example +/* A static variable for holding the line. */ +static char *line_read = (char *)NULL; + +/* Read a string, and return a pointer to it. + Returns NULL on EOF. */ +char * +rl_gets () +@{ + /* If the buffer has already been allocated, + return the memory to the free pool. */ + if (line_read) + @{ + free (line_read); + line_read = (char *)NULL; + @} + + /* Get a line from the user. */ + line_read = readline (""); + + /* If the line has any text in it, + save it on the history. */ + if (line_read && *line_read) + add_history (line_read); + + return (line_read); +@} +@end example + +This function gives the user the default behaviour of @key{TAB} +completion: completion on file names. If you do not want Readline to +complete on filenames, you can change the binding of the @key{TAB} key +with @code{rl_bind_key()}. + +@example +@code{int rl_bind_key (int @var{key}, rl_command_func_t *@var{function});} +@end example + +@code{rl_bind_key()} takes two arguments: @var{key} is the character that +you want to bind, and @var{function} is the address of the function to +call when @var{key} is pressed. Binding @key{TAB} to @code{rl_insert()} +makes @key{TAB} insert itself. +@code{rl_bind_key()} returns non-zero if @var{key} is not a valid +ASCII character code (between 0 and 255). + +Thus, to disable the default @key{TAB} behavior, the following suffices: +@example +@code{rl_bind_key ('\t', rl_insert);} +@end example + +This code should be executed once at the start of your program; you +might write a function called @code{initialize_readline()} which +performs this and other desired initializations, such as installing +custom completers (@pxref{Custom Completers}). + +@node Custom Functions +@section Custom Functions + +Readline provides many functions for manipulating the text of +the line, but it isn't possible to anticipate the needs of all +programs. This section describes the various functions and variables +defined within the Readline library which allow a user program to add +customized functionality to Readline. + +Before declaring any functions that customize Readline's behavior, or +using any functionality Readline provides in other code, an +application writer should include the file @code{} +in any file that uses Readline's features. Since some of the definitions +in @code{readline.h} use the @code{stdio} library, the file +@code{} should be included before @code{readline.h}. + +@code{readline.h} defines a C preprocessor variable that should +be treated as an integer, @code{RL_READLINE_VERSION}, which may +be used to conditionally compile application code depending on +the installed Readline version. The value is a hexadecimal +encoding of the major and minor version numbers of the library, +of the form 0x@var{MMmm}. @var{MM} is the two-digit major +version number; @var{mm} is the two-digit minor version number. +For Readline 4.2, for example, the value of +@code{RL_READLINE_VERSION} would be @code{0x0402}. + +@menu +* Readline Typedefs:: C declarations to make code readable. +* Function Writing:: Variables and calling conventions. +@end menu + +@node Readline Typedefs +@subsection Readline Typedefs + +For readability, we declare a number of new object types, all pointers +to functions. + +The reason for declaring these new types is to make it easier to write +code describing pointers to C functions with appropriately prototyped +arguments and return values. + +For instance, say we want to declare a variable @var{func} as a pointer +to a function which takes two @code{int} arguments and returns an +@code{int} (this is the type of all of the Readline bindable functions). +Instead of the classic C declaration + +@code{int (*func)();} + +@noindent +or the ANSI-C style declaration + +@code{int (*func)(int, int);} + +@noindent +we may write + +@code{rl_command_func_t *func;} + +The full list of function pointer types available is + +@table @code +@item typedef int rl_command_func_t (int, int); + +@item typedef char *rl_compentry_func_t (const char *, int); + +@item typedef char **rl_completion_func_t (const char *, int, int); + +@item typedef char *rl_quote_func_t (char *, int, char *); + +@item typedef char *rl_dequote_func_t (char *, int); + +@item typedef int rl_compignore_func_t (char **); + +@item typedef void rl_compdisp_func_t (char **, int, int); + +@item typedef int rl_hook_func_t (void); + +@item typedef int rl_getc_func_t (FILE *); + +@item typedef int rl_linebuf_func_t (char *, int); + +@item typedef int rl_intfunc_t (int); +@item #define rl_ivoidfunc_t rl_hook_func_t +@item typedef int rl_icpfunc_t (char *); +@item typedef int rl_icppfunc_t (char **); + +@item typedef void rl_voidfunc_t (void); +@item typedef void rl_vintfunc_t (int); +@item typedef void rl_vcpfunc_t (char *); +@item typedef void rl_vcppfunc_t (char **); + +@end table + +@node Function Writing +@subsection Writing a New Function + +In order to write new functions for Readline, you need to know the +calling conventions for keyboard-invoked functions, and the names of the +variables that describe the current state of the line read so far. + +The calling sequence for a command @code{foo} looks like + +@example +@code{int foo (int count, int key)} +@end example + +@noindent +where @var{count} is the numeric argument (or 1 if defaulted) and +@var{key} is the key that invoked this function. + +It is completely up to the function as to what should be done with the +numeric argument. Some functions use it as a repeat count, some +as a flag, and others to choose alternate behavior (refreshing the current +line as opposed to refreshing the screen, for example). Some choose to +ignore it. In general, if a +function uses the numeric argument as a repeat count, it should be able +to do something useful with both negative and positive arguments. +At the very least, it should be aware that it can be passed a +negative argument. + +A command function should return 0 if its action completes successfully, +and a value greater than zero if some error occurs. +This is the convention obeyed by all of the builtin Readline bindable +command functions. + +@node Readline Variables +@section Readline Variables + +These variables are available to function writers. + +@deftypevar {char *} rl_line_buffer +This is the line gathered so far. You are welcome to modify the +contents of the line, but see @ref{Allowing Undoing}. The +function @code{rl_extend_line_buffer} is available to increase +the memory allocated to @code{rl_line_buffer}. +@end deftypevar + +@deftypevar int rl_point +The offset of the current cursor position in @code{rl_line_buffer} +(the @emph{point}). +@end deftypevar + +@deftypevar int rl_end +The number of characters present in @code{rl_line_buffer}. When +@code{rl_point} is at the end of the line, @code{rl_point} and +@code{rl_end} are equal. +@end deftypevar + +@deftypevar int rl_mark +The @var{mark} (saved position) in the current line. If set, the mark +and point define a @emph{region}. +@end deftypevar + +@deftypevar int rl_done +Setting this to a non-zero value causes Readline to return the current +line immediately. +@end deftypevar + +@deftypevar int rl_num_chars_to_read +Setting this to a positive value before calling @code{readline()} causes +Readline to return after accepting that many characters, rather +than reading up to a character bound to @code{accept-line}. +@end deftypevar + +@deftypevar int rl_pending_input +Setting this to a value makes it the next keystroke read. This is a +way to stuff a single character into the input stream. +@end deftypevar + +@deftypevar int rl_dispatching +Set to a non-zero value if a function is being called from a key binding; +zero otherwise. Application functions can test this to discover whether +they were called directly or by Readline's dispatching mechanism. +@end deftypevar + +@deftypevar int rl_erase_empty_line +Setting this to a non-zero value causes Readline to completely erase +the current line, including any prompt, any time a newline is typed as +the only character on an otherwise-empty line. The cursor is moved to +the beginning of the newly-blank line. +@end deftypevar + +@deftypevar {char *} rl_prompt +The prompt Readline uses. This is set from the argument to +@code{readline()}, and should not be assigned to directly. +The @code{rl_set_prompt()} function (@pxref{Redisplay}) may +be used to modify the prompt string after calling @code{readline()}. +@end deftypevar + +@deftypevar {char *} rl_display_prompt +The string displayed as the prompt. This is usually identical to +@var{rl_prompt}, but may be changed temporarily by functions that +use the prompt string as a message area, such as incremental search. +@end deftypevar + +@deftypevar int rl_already_prompted +If an application wishes to display the prompt itself, rather than have +Readline do it the first time @code{readline()} is called, it should set +this variable to a non-zero value after displaying the prompt. +The prompt must also be passed as the argument to @code{readline()} so +the redisplay functions can update the display properly. +The calling application is responsible for managing the value; Readline +never sets it. +@end deftypevar + +@deftypevar {const char *} rl_library_version +The version number of this revision of the library. +@end deftypevar + +@deftypevar int rl_readline_version +An integer encoding the current version of the library. The encoding is +of the form 0x@var{MMmm}, where @var{MM} is the two-digit major version +number, and @var{mm} is the two-digit minor version number. +For example, for Readline-4.2, @code{rl_readline_version} would have the +value 0x0402. +@end deftypevar + +@deftypevar {int} rl_gnu_readline_p +Always set to 1, denoting that this is @sc{gnu} readline rather than some +emulation. +@end deftypevar + +@deftypevar {const char *} rl_terminal_name +The terminal type, used for initialization. If not set by the application, +Readline sets this to the value of the @env{TERM} environment variable +the first time it is called. +@end deftypevar + +@deftypevar {const char *} rl_readline_name +This variable is set to a unique name by each application using Readline. +The value allows conditional parsing of the inputrc file +(@pxref{Conditional Init Constructs}). +@end deftypevar + +@deftypevar {FILE *} rl_instream +The stdio stream from which Readline reads input. +If @code{NULL}, Readline defaults to @var{stdin}. +@end deftypevar + +@deftypevar {FILE *} rl_outstream +The stdio stream to which Readline performs output. +If @code{NULL}, Readline defaults to @var{stdout}. +@end deftypevar + +@deftypevar int rl_prefer_env_winsize +If non-zero, Readline gives values found in the @env{LINES} and +@env{COLUMNS} environment variables greater precedence than values fetched +from the kernel when computing the screen dimensions. +@end deftypevar + +@deftypevar {rl_command_func_t *} rl_last_func +The address of the last command function Readline executed. May be used to +test whether or not a function is being executed twice in succession, for +example. +@end deftypevar + +@deftypevar {rl_hook_func_t *} rl_startup_hook +If non-zero, this is the address of a function to call just +before @code{readline} prints the first prompt. +@end deftypevar + +@deftypevar {rl_hook_func_t *} rl_pre_input_hook +If non-zero, this is the address of a function to call after +the first prompt has been printed and just before @code{readline} +starts reading input characters. +@end deftypevar + +@deftypevar {rl_hook_func_t *} rl_event_hook +If non-zero, this is the address of a function to call periodically +when Readline is waiting for terminal input. +By default, this will be called at most ten times a second if there +is no keyboard input. +@end deftypevar + +@deftypevar {rl_getc_func_t *} rl_getc_function +If non-zero, Readline will call indirectly through this pointer +to get a character from the input stream. By default, it is set to +@code{rl_getc}, the default Readline character input function +(@pxref{Character Input}). +In general, an application that sets @var{rl_getc_function} should consider +setting @var{rl_input_available_hook} as well. +@end deftypevar + +@deftypevar {rl_hook_func_t *} rl_signal_event_hook +If non-zero, this is the address of a function to call if a read system +call is interrupted when Readline is reading terminal input. +@end deftypevar + +@deftypevar {rl_hook_func_t *} rl_input_available_hook +If non-zero, Readline will use this function's return value when it needs +to determine whether or not there is available input on the current input +source. +The default hook checks @code{rl_instream}; if an application is using a +different input source, it should set the hook appropriately. +Readline queries for available input when implementing intra-key-sequence +timeouts during input and incremental searches. +This may use an application-specific timeout before returning a value; +Readline uses the value passed to @code{rl_set_keyboard_input_timeout()} +or the value of the user-settable @var{keyseq-timeout} variable. +This is designed for use by applications using Readline's callback interface +(@pxref{Alternate Interface}), which may not use the traditional +@code{read(2)} and file descriptor interface, or other applications using +a different input mechanism. +If an application uses an input mechanism or hook that can potentially exceed +the value of @var{keyseq-timeout}, it should increase the timeout or set +this hook appropriately even when not using the callback interface. +In general, an application that sets @var{rl_getc_function} should consider +setting @var{rl_input_available_hook} as well. +@end deftypevar + +@deftypevar {rl_voidfunc_t *} rl_redisplay_function +If non-zero, Readline will call indirectly through this pointer +to update the display with the current contents of the editing buffer. +By default, it is set to @code{rl_redisplay}, the default Readline +redisplay function (@pxref{Redisplay}). +@end deftypevar + +@deftypevar {rl_vintfunc_t *} rl_prep_term_function +If non-zero, Readline will call indirectly through this pointer +to initialize the terminal. The function takes a single argument, an +@code{int} flag that says whether or not to use eight-bit characters. +By default, this is set to @code{rl_prep_terminal} +(@pxref{Terminal Management}). +@end deftypevar + +@deftypevar {rl_voidfunc_t *} rl_deprep_term_function +If non-zero, Readline will call indirectly through this pointer +to reset the terminal. This function should undo the effects of +@code{rl_prep_term_function}. +By default, this is set to @code{rl_deprep_terminal} +(@pxref{Terminal Management}). +@end deftypevar + +@deftypevar {Keymap} rl_executing_keymap +This variable is set to the keymap (@pxref{Keymaps}) in which the +currently executing readline function was found. +@end deftypevar + +@deftypevar {Keymap} rl_binding_keymap +This variable is set to the keymap (@pxref{Keymaps}) in which the +last key binding occurred. +@end deftypevar + +@deftypevar {char *} rl_executing_macro +This variable is set to the text of any currently-executing macro. +@end deftypevar + +@deftypevar int rl_executing_key +The key that caused the dispatch to the currently-executing Readline function. +@end deftypevar + +@deftypevar {char *} rl_executing_keyseq +The full key sequence that caused the dispatch to the currently-executing +Readline function. +@end deftypevar + +@deftypevar int rl_key_sequence_length +The number of characters in @var{rl_executing_keyseq}. +@end deftypevar + +@deftypevar {int} rl_readline_state +A variable with bit values that encapsulate the current Readline state. +A bit is set with the @code{RL_SETSTATE} macro, and unset with the +@code{RL_UNSETSTATE} macro. Use the @code{RL_ISSTATE} macro to test +whether a particular state bit is set. Current state bits include: + +@table @code +@item RL_STATE_NONE +Readline has not yet been called, nor has it begun to initialize. +@item RL_STATE_INITIALIZING +Readline is initializing its internal data structures. +@item RL_STATE_INITIALIZED +Readline has completed its initialization. +@item RL_STATE_TERMPREPPED +Readline has modified the terminal modes to do its own input and redisplay. +@item RL_STATE_READCMD +Readline is reading a command from the keyboard. +@item RL_STATE_METANEXT +Readline is reading more input after reading the meta-prefix character. +@item RL_STATE_DISPATCHING +Readline is dispatching to a command. +@item RL_STATE_MOREINPUT +Readline is reading more input while executing an editing command. +@item RL_STATE_ISEARCH +Readline is performing an incremental history search. +@item RL_STATE_NSEARCH +Readline is performing a non-incremental history search. +@item RL_STATE_SEARCH +Readline is searching backward or forward through the history for a string. +@item RL_STATE_NUMERICARG +Readline is reading a numeric argument. +@item RL_STATE_MACROINPUT +Readline is currently getting its input from a previously-defined keyboard +macro. +@item RL_STATE_MACRODEF +Readline is currently reading characters defining a keyboard macro. +@item RL_STATE_OVERWRITE +Readline is in overwrite mode. +@item RL_STATE_COMPLETING +Readline is performing word completion. +@item RL_STATE_SIGHANDLER +Readline is currently executing the readline signal handler. +@item RL_STATE_UNDOING +Readline is performing an undo. +@item RL_STATE_INPUTPENDING +Readline has input pending due to a call to @code{rl_execute_next()}. +@item RL_STATE_TTYCSAVED +Readline has saved the values of the terminal's special characters. +@item RL_STATE_CALLBACK +Readline is currently using the alternate (callback) interface +(@pxref{Alternate Interface}). +@item RL_STATE_VIMOTION +Readline is reading the argument to a vi-mode "motion" command. +@item RL_STATE_MULTIKEY +Readline is reading a multiple-keystroke command. +@item RL_STATE_VICMDONCE +Readline has entered vi command (movement) mode at least one time during +the current call to @code{readline()}. +@item RL_STATE_DONE +Readline has read a key sequence bound to @code{accept-line} +and is about to return the line to the caller. +@end table + +@end deftypevar + +@deftypevar {int} rl_explicit_arg +Set to a non-zero value if an explicit numeric argument was specified by +the user. Only valid in a bindable command function. +@end deftypevar + +@deftypevar {int} rl_numeric_arg +Set to the value of any numeric argument explicitly specified by the user +before executing the current Readline function. Only valid in a bindable +command function. +@end deftypevar + +@deftypevar {int} rl_editing_mode +Set to a value denoting Readline's current editing mode. A value of +@var{1} means Readline is currently in emacs mode; @var{0} +means that vi mode is active. +@end deftypevar + + +@node Readline Convenience Functions +@section Readline Convenience Functions + +@menu +* Function Naming:: How to give a function you write a name. +* Keymaps:: Making keymaps. +* Binding Keys:: Changing Keymaps. +* Associating Function Names and Bindings:: Translate function names to + key sequences. +* Allowing Undoing:: How to make your functions undoable. +* Redisplay:: Functions to control line display. +* Modifying Text:: Functions to modify @code{rl_line_buffer}. +* Character Input:: Functions to read keyboard input. +* Terminal Management:: Functions to manage terminal settings. +* Utility Functions:: Generally useful functions and hooks. +* Miscellaneous Functions:: Functions that don't fall into any category. +* Alternate Interface:: Using Readline in a `callback' fashion. +* A Readline Example:: An example Readline function. +* Alternate Interface Example:: An example program using the alternate interface. +@end menu + +@node Function Naming +@subsection Naming a Function + +The user can dynamically change the bindings of keys while using +Readline. This is done by representing the function with a descriptive +name. The user is able to type the descriptive name when referring to +the function. Thus, in an init file, one might find + +@example +Meta-Rubout: backward-kill-word +@end example + +This binds the keystroke @key{Meta-Rubout} to the function +@emph{descriptively} named @code{backward-kill-word}. You, as the +programmer, should bind the functions you write to descriptive names as +well. Readline provides a function for doing that: + +@deftypefun int rl_add_defun (const char *name, rl_command_func_t *function, int key) +Add @var{name} to the list of named functions. Make @var{function} be +the function that gets called. If @var{key} is not -1, then bind it to +@var{function} using @code{rl_bind_key()}. +@end deftypefun + +Using this function alone is sufficient for most applications. +It is the recommended way to add a few functions to the default +functions that Readline has built in. +If you need to do something other than adding a function to Readline, +you may need to use the underlying functions described below. + +@node Keymaps +@subsection Selecting a Keymap + +Key bindings take place on a @dfn{keymap}. The keymap is the +association between the keys that the user types and the functions that +get run. You can make your own keymaps, copy existing keymaps, and tell +Readline which keymap to use. + +@deftypefun Keymap rl_make_bare_keymap (void) +Returns a new, empty keymap. The space for the keymap is allocated with +@code{malloc()}; the caller should free it by calling +@code{rl_free_keymap()} when done. +@end deftypefun + +@deftypefun Keymap rl_copy_keymap (Keymap map) +Return a new keymap which is a copy of @var{map}. +@end deftypefun + +@deftypefun Keymap rl_make_keymap (void) +Return a new keymap with the printing characters bound to rl_insert, +the lowercase Meta characters bound to run their equivalents, and +the Meta digits bound to produce numeric arguments. +@end deftypefun + +@deftypefun void rl_discard_keymap (Keymap keymap) +Free the storage associated with the data in @var{keymap}. +The caller should free @var{keymap}. +@end deftypefun + +@deftypefun void rl_free_keymap (Keymap keymap) +Free all storage associated with @var{keymap}. This calls +@code{rl_discard_keymap} to free subordindate keymaps and macros. +@end deftypefun + +@deftypefun int rl_empty_keymap (Keymap keymap) +Return non-zero if there are no keys bound to functions in @var{keymap}; +zero if there are any keys bound. +@end deftypefun + +Readline has several internal keymaps. These functions allow you to +change which keymap is active. + +@deftypefun Keymap rl_get_keymap (void) +Returns the currently active keymap. +@end deftypefun + +@deftypefun void rl_set_keymap (Keymap keymap) +Makes @var{keymap} the currently active keymap. +@end deftypefun + +@deftypefun Keymap rl_get_keymap_by_name (const char *name) +Return the keymap matching @var{name}. @var{name} is one which would +be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}). +@end deftypefun + +@deftypefun {char *} rl_get_keymap_name (Keymap keymap) +Return the name matching @var{keymap}. @var{name} is one which would +be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}). +@end deftypefun + +@deftypefun int rl_set_keymap_name (const char *name, Keymap keymap) +Set the name of @var{keymap}. This name will then be "registered" and +available for use in a @code{set keymap} inputrc directive +@pxref{Readline Init File}). +The @var{name} may not be one of Readline's builtin keymap names; +you may not add a different name for one of Readline's builtin keymaps. +You may replace the name associated with a given keymap by calling this +function more than once with the same @var{keymap} argument. +You may associate a registered @var{name} with a new keymap by calling this +function more than once with the same @var{name} argument. +There is no way to remove a named keymap once the name has been +registered. +Readline will make a copy of @var{name}. +The return value is greater than zero unless @var{name} is one of +Readline's builtin keymap names or @var{keymap} is one of Readline's +builtin keymaps. +@end deftypefun + +@node Binding Keys +@subsection Binding Keys + +Key sequences are associate with functions through the keymap. +Readline has several internal keymaps: @code{emacs_standard_keymap}, +@code{emacs_meta_keymap}, @code{emacs_ctlx_keymap}, +@code{vi_movement_keymap}, and @code{vi_insertion_keymap}. +@code{emacs_standard_keymap} is the default, and the examples in +this manual assume that. + +Since @code{readline()} installs a set of default key bindings the first +time it is called, there is always the danger that a custom binding +installed before the first call to @code{readline()} will be overridden. +An alternate mechanism is to install custom key bindings in an +initialization function assigned to the @code{rl_startup_hook} variable +(@pxref{Readline Variables}). + +These functions manage key bindings. + +@deftypefun int rl_bind_key (int key, rl_command_func_t *function) +Binds @var{key} to @var{function} in the currently active keymap. +Returns non-zero in the case of an invalid @var{key}. +@end deftypefun + +@deftypefun int rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map) +Bind @var{key} to @var{function} in @var{map}. +Returns non-zero in the case of an invalid @var{key}. +@end deftypefun + +@deftypefun int rl_bind_key_if_unbound (int key, rl_command_func_t *function) +Binds @var{key} to @var{function} if it is not already bound in the +currently active keymap. +Returns non-zero in the case of an invalid @var{key} or if @var{key} is +already bound. +@end deftypefun + +@deftypefun int rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *function, Keymap map) +Binds @var{key} to @var{function} if it is not already bound in @var{map}. +Returns non-zero in the case of an invalid @var{key} or if @var{key} is +already bound. +@end deftypefun + +@deftypefun int rl_unbind_key (int key) +Bind @var{key} to the null function in the currently active keymap. +Returns non-zero in case of error. +@end deftypefun + +@deftypefun int rl_unbind_key_in_map (int key, Keymap map) +Bind @var{key} to the null function in @var{map}. +Returns non-zero in case of error. +@end deftypefun + +@deftypefun int rl_unbind_function_in_map (rl_command_func_t *function, Keymap map) +Unbind all keys that execute @var{function} in @var{map}. +@end deftypefun + +@deftypefun int rl_unbind_command_in_map (const char *command, Keymap map) +Unbind all keys that are bound to @var{command} in @var{map}. +@end deftypefun + +@deftypefun int rl_bind_keyseq (const char *keyseq, rl_command_func_t *function) +Bind the key sequence represented by the string @var{keyseq} to the function +@var{function}, beginning in the current keymap. +This makes new keymaps as necessary. +The return value is non-zero if @var{keyseq} is invalid. +@end deftypefun + +@deftypefun int rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map) +Bind the key sequence represented by the string @var{keyseq} to the function +@var{function}. This makes new keymaps as necessary. +Initial bindings are performed in @var{map}. +The return value is non-zero if @var{keyseq} is invalid. +@end deftypefun + +@deftypefun int rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map) +Equivalent to @code{rl_bind_keyseq_in_map}. +@end deftypefun + +@deftypefun int rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *function) +Binds @var{keyseq} to @var{function} if it is not already bound in the +currently active keymap. +Returns non-zero in the case of an invalid @var{keyseq} or if @var{keyseq} is +already bound. +@end deftypefun + +@deftypefun int rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *function, Keymap map) +Binds @var{keyseq} to @var{function} if it is not already bound in @var{map}. +Returns non-zero in the case of an invalid @var{keyseq} or if @var{keyseq} is +already bound. +@end deftypefun + +@deftypefun int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map) +Bind the key sequence represented by the string @var{keyseq} to the arbitrary +pointer @var{data}. @var{type} says what kind of data is pointed to by +@var{data}; this can be a function (@code{ISFUNC}), a macro +(@code{ISMACR}), or a keymap (@code{ISKMAP}). This makes new keymaps as +necessary. The initial keymap in which to do bindings is @var{map}. +@end deftypefun + +@deftypefun int rl_parse_and_bind (char *line) +Parse @var{line} as if it had been read from the @code{inputrc} file and +perform any key bindings and variable assignments found +(@pxref{Readline Init File}). +@end deftypefun + +@deftypefun int rl_read_init_file (const char *filename) +Read keybindings and variable assignments from @var{filename} +(@pxref{Readline Init File}). +@end deftypefun + +@node Associating Function Names and Bindings +@subsection Associating Function Names and Bindings + +These functions allow you to find out what keys invoke named functions +and the functions invoked by a particular key sequence. You may also +associate a new function name with an arbitrary function. + +@deftypefun {rl_command_func_t *} rl_named_function (const char *name) +Return the function with name @var{name}. +@end deftypefun + +@deftypefun {rl_command_func_t *} rl_function_of_keyseq (const char *keyseq, Keymap map, int *type) +Return the function invoked by @var{keyseq} in keymap @var{map}. +If @var{map} is @code{NULL}, the current keymap is used. If @var{type} is +not @code{NULL}, the type of the object is returned in the @code{int} variable +it points to (one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}). +It takes a "translated" key sequence and should not be used if the key sequence +can include NUL. +@end deftypefun + +@deftypefun {rl_command_func_t *} rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type) +Return the function invoked by @var{keyseq} of length @var{len} +in keymap @var{map}. Equivalent to @code{rl_function_of_keyseq} with the +addition of the @var{len} parameter. +It takes a "translated" key sequence and should be used if the key sequence +can include NUL. +@end deftypefun + +@deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function) +Return an array of strings representing the key sequences used to +invoke @var{function} in the current keymap. +@end deftypefun + +@deftypefun {char **} rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map) +Return an array of strings representing the key sequences used to +invoke @var{function} in the keymap @var{map}. +@end deftypefun + +@deftypefun void rl_function_dumper (int readable) +Print the readline function names and the key sequences currently +bound to them to @code{rl_outstream}. If @var{readable} is non-zero, +the list is formatted in such a way that it can be made part of an +@code{inputrc} file and re-read. +@end deftypefun + +@deftypefun void rl_list_funmap_names (void) +Print the names of all bindable Readline functions to @code{rl_outstream}. +@end deftypefun + +@deftypefun {const char **} rl_funmap_names (void) +Return a NULL terminated array of known function names. The array is +sorted. The array itself is allocated, but not the strings inside. You +should free the array, but not the pointers, using @code{free} or +@code{rl_free} when you are done. +@end deftypefun + +@deftypefun int rl_add_funmap_entry (const char *name, rl_command_func_t *function) +Add @var{name} to the list of bindable Readline command names, and make +@var{function} the function to be called when @var{name} is invoked. +@end deftypefun + +@node Allowing Undoing +@subsection Allowing Undoing + +Supporting the undo command is a painless thing, and makes your +functions much more useful. It is certainly easy to try +something if you know you can undo it. + +If your function simply inserts text once, or deletes text once, and +uses @code{rl_insert_text()} or @code{rl_delete_text()} to do it, then +undoing is already done for you automatically. + +If you do multiple insertions or multiple deletions, or any combination +of these operations, you should group them together into one operation. +This is done with @code{rl_begin_undo_group()} and +@code{rl_end_undo_group()}. + +The types of events that can be undone are: + +@smallexample +enum undo_code @{ UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END @}; +@end smallexample + +Notice that @code{UNDO_DELETE} means to insert some text, and +@code{UNDO_INSERT} means to delete some text. That is, the undo code +tells what to undo, not how to undo it. @code{UNDO_BEGIN} and +@code{UNDO_END} are tags added by @code{rl_begin_undo_group()} and +@code{rl_end_undo_group()}. + +@deftypefun int rl_begin_undo_group (void) +Begins saving undo information in a group construct. The undo +information usually comes from calls to @code{rl_insert_text()} and +@code{rl_delete_text()}, but could be the result of calls to +@code{rl_add_undo()}. +@end deftypefun + +@deftypefun int rl_end_undo_group (void) +Closes the current undo group started with @code{rl_begin_undo_group +()}. There should be one call to @code{rl_end_undo_group()} +for each call to @code{rl_begin_undo_group()}. +@end deftypefun + +@deftypefun void rl_add_undo (enum undo_code what, int start, int end, char *text) +Remember how to undo an event (according to @var{what}). The affected +text runs from @var{start} to @var{end}, and encompasses @var{text}. +@end deftypefun + +@deftypefun void rl_free_undo_list (void) +Free the existing undo list. +@end deftypefun + +@deftypefun int rl_do_undo (void) +Undo the first thing on the undo list. Returns @code{0} if there was +nothing to undo, non-zero if something was undone. +@end deftypefun + +Finally, if you neither insert nor delete text, but directly modify the +existing text (e.g., change its case), call @code{rl_modifying()} +once, just before you modify the text. You must supply the indices of +the text range that you are going to modify. + +@deftypefun int rl_modifying (int start, int end) +Tell Readline to save the text between @var{start} and @var{end} as a +single undo unit. It is assumed that you will subsequently modify +that text. +@end deftypefun + +@node Redisplay +@subsection Redisplay + +@deftypefun void rl_redisplay (void) +Change what's displayed on the screen to reflect the current contents +of @code{rl_line_buffer}. +@end deftypefun + +@deftypefun int rl_forced_update_display (void) +Force the line to be updated and redisplayed, whether or not +Readline thinks the screen display is correct. +@end deftypefun + +@deftypefun int rl_on_new_line (void) +Tell the update functions that we have moved onto a new (empty) line, +usually after outputting a newline. +@end deftypefun + +@deftypefun int rl_on_new_line_with_prompt (void) +Tell the update functions that we have moved onto a new line, with +@var{rl_prompt} already displayed. +This could be used by applications that want to output the prompt string +themselves, but still need Readline to know the prompt string length for +redisplay. +It should be used after setting @var{rl_already_prompted}. +@end deftypefun + +@deftypefun int rl_clear_visible_line (void) +Clear the screen lines corresponding to the current line's contents. +@end deftypefun + +@deftypefun int rl_reset_line_state (void) +Reset the display state to a clean state and redisplay the current line +starting on a new line. +@end deftypefun + +@deftypefun int rl_crlf (void) +Move the cursor to the start of the next screen line. +@end deftypefun + +@deftypefun int rl_show_char (int c) +Display character @var{c} on @code{rl_outstream}. +If Readline has not been set to display meta characters directly, this +will convert meta characters to a meta-prefixed key sequence. +This is intended for use by applications which wish to do their own +redisplay. +@end deftypefun + +@deftypefun int rl_message (const char *, @dots{}) +The arguments are a format string as would be supplied to @code{printf}, +possibly containing conversion specifications such as @samp{%d}, and +any additional arguments necessary to satisfy the conversion specifications. +The resulting string is displayed in the @dfn{echo area}. The echo area +is also used to display numeric arguments and search strings. +You should call @code{rl_save_prompt} to save the prompt information +before calling this function. +@end deftypefun + +@deftypefun int rl_clear_message (void) +Clear the message in the echo area. If the prompt was saved with a call to +@code{rl_save_prompt} before the last call to @code{rl_message}, +call @code{rl_restore_prompt} before calling this function. +@end deftypefun + +@deftypefun void rl_save_prompt (void) +Save the local Readline prompt display state in preparation for +displaying a new message in the message area with @code{rl_message()}. +@end deftypefun + +@deftypefun void rl_restore_prompt (void) +Restore the local Readline prompt display state saved by the most +recent call to @code{rl_save_prompt}. +if @code{rl_save_prompt} was called to save the prompt before a call +to @code{rl_message}, this function should be called before the +corresponding call to @code{rl_clear_message}. +@end deftypefun + +@deftypefun int rl_expand_prompt (char *prompt) +Expand any special character sequences in @var{prompt} and set up the +local Readline prompt redisplay variables. +This function is called by @code{readline()}. It may also be called to +expand the primary prompt if the @code{rl_on_new_line_with_prompt()} +function or @code{rl_already_prompted} variable is used. +It returns the number of visible characters on the last line of the +(possibly multi-line) prompt. +Applications may indicate that the prompt contains characters that take +up no physical screen space when displayed by bracketing a sequence of +such characters with the special markers @code{RL_PROMPT_START_IGNORE} +and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h}). This may +be used to embed terminal-specific escape sequences in prompts. +@end deftypefun + +@deftypefun int rl_set_prompt (const char *prompt) +Make Readline use @var{prompt} for subsequent redisplay. This calls +@code{rl_expand_prompt()} to expand the prompt and sets @code{rl_prompt} +to the result. +@end deftypefun + +@node Modifying Text +@subsection Modifying Text + +@deftypefun int rl_insert_text (const char *text) +Insert @var{text} into the line at the current cursor position. +Returns the number of characters inserted. +@end deftypefun + +@deftypefun int rl_delete_text (int start, int end) +Delete the text between @var{start} and @var{end} in the current line. +Returns the number of characters deleted. +@end deftypefun + +@deftypefun {char *} rl_copy_text (int start, int end) +Return a copy of the text between @var{start} and @var{end} in +the current line. +@end deftypefun + +@deftypefun int rl_kill_text (int start, int end) +Copy the text between @var{start} and @var{end} in the current line +to the kill ring, appending or prepending to the last kill if the +last command was a kill command. The text is deleted. +If @var{start} is less than @var{end}, +the text is appended, otherwise prepended. If the last command was +not a kill, a new kill ring slot is used. +@end deftypefun + +@deftypefun int rl_push_macro_input (char *macro) +Cause @var{macro} to be inserted into the line, as if it had been invoked +by a key bound to a macro. Not especially useful; use +@code{rl_insert_text()} instead. +@end deftypefun + +@node Character Input +@subsection Character Input + +@deftypefun int rl_read_key (void) +Return the next character available from Readline's current input stream. +This handles input inserted into +the input stream via @var{rl_pending_input} (@pxref{Readline Variables}) +and @code{rl_stuff_char()}, macros, and characters read from the keyboard. +While waiting for input, this function will call any function assigned to +the @code{rl_event_hook} variable. +@end deftypefun + +@deftypefun int rl_getc (FILE *stream) +Return the next character available from @var{stream}, which is assumed to +be the keyboard. +@end deftypefun + +@deftypefun int rl_stuff_char (int c) +Insert @var{c} into the Readline input stream. It will be "read" +before Readline attempts to read characters from the terminal with +@code{rl_read_key()}. Up to 512 characters may be pushed back. +@code{rl_stuff_char} returns 1 if the character was successfully inserted; +0 otherwise. +@end deftypefun + +@deftypefun int rl_execute_next (int c) +Make @var{c} be the next command to be executed when @code{rl_read_key()} +is called. This sets @var{rl_pending_input}. +@end deftypefun + +@deftypefun int rl_clear_pending_input (void) +Unset @var{rl_pending_input}, effectively negating the effect of any +previous call to @code{rl_execute_next()}. This works only if the +pending input has not already been read with @code{rl_read_key()}. +@end deftypefun + +@deftypefun int rl_set_keyboard_input_timeout (int u) +While waiting for keyboard input in @code{rl_read_key()}, Readline will +wait for @var{u} microseconds for input before calling any function +assigned to @code{rl_event_hook}. @var{u} must be greater than or equal +to zero (a zero-length timeout is equivalent to a poll). +The default waiting period is one-tenth of a second. +Returns the old timeout value. +@end deftypefun + +@node Terminal Management +@subsection Terminal Management + +@deftypefun void rl_prep_terminal (int meta_flag) +Modify the terminal settings for Readline's use, so @code{readline()} +can read a single character at a time from the keyboard. +The @var{meta_flag} argument should be non-zero if Readline should +read eight-bit input. +@end deftypefun + +@deftypefun void rl_deprep_terminal (void) +Undo the effects of @code{rl_prep_terminal()}, leaving the terminal in +the state in which it was before the most recent call to +@code{rl_prep_terminal()}. +@end deftypefun + +@deftypefun void rl_tty_set_default_bindings (Keymap kmap) +Read the operating system's terminal editing characters (as would be +displayed by @code{stty}) to their Readline equivalents. +The bindings are performed in @var{kmap}. +@end deftypefun + +@deftypefun void rl_tty_unset_default_bindings (Keymap kmap) +Reset the bindings manipulated by @code{rl_tty_set_default_bindings} so +that the terminal editing characters are bound to @code{rl_insert}. +The bindings are performed in @var{kmap}. +@end deftypefun + +@deftypefun int rl_tty_set_echoing (int value) +Set Readline's idea of whether or not it is echoing output to its output +stream (@var{rl_outstream}). If @var{value} is 0, Readline does not display +output to @var{rl_outstream}; any other value enables output. The initial +value is set when Readline initializes the terminal settings. +This function returns the previous value. +@end deftypefun + +@deftypefun int rl_reset_terminal (const char *terminal_name) +Reinitialize Readline's idea of the terminal settings using +@var{terminal_name} as the terminal type (e.g., @code{vt100}). +If @var{terminal_name} is @code{NULL}, the value of the @code{TERM} +environment variable is used. +@end deftypefun + +@node Utility Functions +@subsection Utility Functions + +@deftypefun int rl_save_state (struct readline_state *sp) +Save a snapshot of Readline's internal state to @var{sp}. +The contents of the @var{readline_state} structure are documented +in @file{readline.h}. +The caller is responsible for allocating the structure. +@end deftypefun + +@deftypefun int rl_restore_state (struct readline_state *sp) +Restore Readline's internal state to that stored in @var{sp}, which must +have been saved by a call to @code{rl_save_state}. +The contents of the @var{readline_state} structure are documented +in @file{readline.h}. +The caller is responsible for freeing the structure. +@end deftypefun + +@deftypefun void rl_free (void *mem) +Deallocate the memory pointed to by @var{mem}. @var{mem} must have been +allocated by @code{malloc}. +@end deftypefun + +@deftypefun void rl_replace_line (const char *text, int clear_undo) +Replace the contents of @code{rl_line_buffer} with @var{text}. +The point and mark are preserved, if possible. +If @var{clear_undo} is non-zero, the undo list associated with the +current line is cleared. +@end deftypefun + +@deftypefun void rl_extend_line_buffer (int len) +Ensure that @code{rl_line_buffer} has enough space to hold @var{len} +characters, possibly reallocating it if necessary. +@end deftypefun + +@deftypefun int rl_initialize (void) +Initialize or re-initialize Readline's internal state. +It's not strictly necessary to call this; @code{readline()} calls it before +reading any input. +@end deftypefun + +@deftypefun int rl_ding (void) +Ring the terminal bell, obeying the setting of @code{bell-style}. +@end deftypefun + +@deftypefun int rl_alphabetic (int c) +Return 1 if @var{c} is an alphabetic character. +@end deftypefun + +@deftypefun void rl_display_match_list (char **matches, int len, int max) +A convenience function for displaying a list of strings in +columnar format on Readline's output stream. @code{matches} is the list +of strings, in argv format, such as a list of completion matches. +@code{len} is the number of strings in @code{matches}, and @code{max} +is the length of the longest string in @code{matches}. This function uses +the setting of @code{print-completions-horizontally} to select how the +matches are displayed (@pxref{Readline Init File Syntax}). +When displaying completions, this function sets the number of columns used +for display to the value of @code{completion-display-width}, the value of +the environment variable @env{COLUMNS}, or the screen width, in that order. +@end deftypefun + +The following are implemented as macros, defined in @code{chardefs.h}. +Applications should refrain from using them. + +@deftypefun int _rl_uppercase_p (int c) +Return 1 if @var{c} is an uppercase alphabetic character. +@end deftypefun + +@deftypefun int _rl_lowercase_p (int c) +Return 1 if @var{c} is a lowercase alphabetic character. +@end deftypefun + +@deftypefun int _rl_digit_p (int c) +Return 1 if @var{c} is a numeric character. +@end deftypefun + +@deftypefun int _rl_to_upper (int c) +If @var{c} is a lowercase alphabetic character, return the corresponding +uppercase character. +@end deftypefun + +@deftypefun int _rl_to_lower (int c) +If @var{c} is an uppercase alphabetic character, return the corresponding +lowercase character. +@end deftypefun + +@deftypefun int _rl_digit_value (int c) +If @var{c} is a number, return the value it represents. +@end deftypefun + +@node Miscellaneous Functions +@subsection Miscellaneous Functions + +@deftypefun int rl_macro_bind (const char *keyseq, const char *macro, Keymap map) +Bind the key sequence @var{keyseq} to invoke the macro @var{macro}. +The binding is performed in @var{map}. When @var{keyseq} is invoked, the +@var{macro} will be inserted into the line. This function is deprecated; +use @code{rl_generic_bind()} instead. +@end deftypefun + +@deftypefun void rl_macro_dumper (int readable) +Print the key sequences bound to macros and their values, using +the current keymap, to @code{rl_outstream}. +If @var{readable} is non-zero, the list is formatted in such a way +that it can be made part of an @code{inputrc} file and re-read. +@end deftypefun + +@deftypefun int rl_variable_bind (const char *variable, const char *value) +Make the Readline variable @var{variable} have @var{value}. +This behaves as if the readline command +@samp{set @var{variable} @var{value}} had been executed in an @code{inputrc} +file (@pxref{Readline Init File Syntax}). +@end deftypefun + +@deftypefun {char *} rl_variable_value (const char *variable) +Return a string representing the value of the Readline variable @var{variable}. +For boolean variables, this string is either @samp{on} or @samp{off}. +@end deftypefun + +@deftypefun void rl_variable_dumper (int readable) +Print the readline variable names and their current values +to @code{rl_outstream}. +If @var{readable} is non-zero, the list is formatted in such a way +that it can be made part of an @code{inputrc} file and re-read. +@end deftypefun + +@deftypefun int rl_set_paren_blink_timeout (int u) +Set the time interval (in microseconds) that Readline waits when showing +a balancing character when @code{blink-matching-paren} has been enabled. +@end deftypefun + +@deftypefun {char *} rl_get_termcap (const char *cap) +Retrieve the string value of the termcap capability @var{cap}. +Readline fetches the termcap entry for the current terminal name and +uses those capabilities to move around the screen line and perform other +terminal-specific operations, like erasing a line. Readline does not +use all of a terminal's capabilities, and this function will return +values for only those capabilities Readline uses. +@end deftypefun + +@deftypefun {void} rl_clear_history (void) +Clear the history list by deleting all of the entries, in the same manner +as the History library's @code{clear_history()} function. +This differs from @code{clear_history} because it frees private data +Readline saves in the history list. +@end deftypefun + +@deftypefun {void} rl_activate_mark (void) +Enable an @emph{active} mark. +When this is enabled, the text between point and mark (the @var{region}) is +displayed in the terminal's standout mode (a @var{face}). +This is called by various readline functions that set the mark and insert +text, and is available for applications to call. +@end deftypefun + +@deftypefun {void} rl_deactivate_mark (void) +Turn off the active mark. +@end deftypefun + +@deftypefun {void} rl_keep_mark_active (void) +Indicate that the mark should remain active when the current readline function +completes and after redisplay occurs. +In most cases, the mark remains active for only the duration of a single +bindable readline function. +@end deftypefun + +@deftypefun {int} rl_mark_active_p (void) +Return a non-zero value if the mark is currently active; zero otherwise. +@end deftypefun + +@node Alternate Interface +@subsection Alternate Interface + +An alternate interface is available to plain @code{readline()}. Some +applications need to interleave keyboard I/O with file, device, or +window system I/O, typically by using a main loop to @code{select()} +on various file descriptors. To accommodate this need, readline can +also be invoked as a `callback' function from an event loop. There +are functions available to make this easy. + +@deftypefun void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler) +Set up the terminal for readline I/O and display the initial +expanded value of @var{prompt}. Save the value of @var{lhandler} to +use as a handler function to call when a complete line of input has been +entered. +The handler function receives the text of the line as an argument. +As with @code{readline()}, the handler function should @code{free} the +line when it it finished with it. +@end deftypefun + +@deftypefun void rl_callback_read_char (void) +Whenever an application determines that keyboard input is available, it +should call @code{rl_callback_read_char()}, which will read the next +character from the current input source. +If that character completes the line, @code{rl_callback_read_char} will +invoke the @var{lhandler} function installed by +@code{rl_callback_handler_install} to process the line. +Before calling the @var{lhandler} function, the terminal settings are +reset to the values they had before calling +@code{rl_callback_handler_install}. +If the @var{lhandler} function returns, +and the line handler remains installed, +the terminal settings are modified for Readline's use again. +@code{EOF} is indicated by calling @var{lhandler} with a +@code{NULL} line. +@end deftypefun + +@deftypefun void rl_callback_sigcleanup (void) +Clean up any internal state the callback interface uses to maintain state +between calls to rl_callback_read_char (e.g., the state of any active +incremental searches). This is intended to be used by applications that +wish to perform their own signal handling; Readline's internal signal handler +calls this when appropriate. +@end deftypefun + +@deftypefun void rl_callback_handler_remove (void) +Restore the terminal to its initial state and remove the line handler. +You may call this function from within a callback as well as independently. +If the @var{lhandler} installed by @code{rl_callback_handler_install} +does not exit the program, either this function or the function referred +to by the value of @code{rl_deprep_term_function} should be called before +the program exits to reset the terminal settings. +@end deftypefun + +@node A Readline Example +@subsection A Readline Example + +Here is a function which changes lowercase characters to their uppercase +equivalents, and uppercase characters to lowercase. If +this function was bound to @samp{M-c}, then typing @samp{M-c} would +change the case of the character under point. Typing @samp{M-1 0 M-c} +would change the case of the following 10 characters, leaving the cursor on +the last character changed. + +@example +/* Invert the case of the COUNT following characters. */ +int +invert_case_line (count, key) + int count, key; +@{ + register int start, end, i; + + start = rl_point; + + if (rl_point >= rl_end) + return (0); + + if (count < 0) + @{ + direction = -1; + count = -count; + @} + else + direction = 1; + + /* Find the end of the range to modify. */ + end = start + (count * direction); + + /* Force it to be within range. */ + if (end > rl_end) + end = rl_end; + else if (end < 0) + end = 0; + + if (start == end) + return (0); + + if (start > end) + @{ + int temp = start; + start = end; + end = temp; + @} + + /* Tell readline that we are modifying the line, + so it will save the undo information. */ + rl_modifying (start, end); + + for (i = start; i != end; i++) + @{ + if (_rl_uppercase_p (rl_line_buffer[i])) + rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]); + else if (_rl_lowercase_p (rl_line_buffer[i])) + rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]); + @} + /* Move point to on top of the last character changed. */ + rl_point = (direction == 1) ? end - 1 : start; + return (0); +@} +@end example + +@node Alternate Interface Example +@subsection Alternate Interface Example + +Here is a complete program that illustrates Readline's alternate interface. +It reads lines from the terminal and displays them, providing the +standard history and TAB completion functions. +It understands the EOF character or "exit" to exit the program. + +@example +/* Standard include files. stdio.h is required. */ +#include +#include +#include +#include + +/* Used for select(2) */ +#include +#include + +#include + +#include + +/* Standard readline include files. */ +#include +#include + +static void cb_linehandler (char *); +static void sighandler (int); + +int running; +int sigwinch_received; +const char *prompt = "rltest$ "; + +/* Handle SIGWINCH and window size changes when readline is not active and + reading a character. */ +static void +sighandler (int sig) +@{ + sigwinch_received = 1; +@} + +/* Callback function called for each line when accept-line executed, EOF + seen, or EOF character read. This sets a flag and returns; it could + also call exit(3). */ +static void +cb_linehandler (char *line) +@{ + /* Can use ^D (stty eof) or `exit' to exit. */ + if (line == NULL || strcmp (line, "exit") == 0) + @{ + if (line == 0) + printf ("\n"); + printf ("exit\n"); + /* This function needs to be called to reset the terminal settings, + and calling it from the line handler keeps one extra prompt from + being displayed. */ + rl_callback_handler_remove (); + + running = 0; + @} + else + @{ + if (*line) + add_history (line); + printf ("input line: %s\n", line); + free (line); + @} +@} + +int +main (int c, char **v) +@{ + fd_set fds; + int r; + + /* Set the default locale values according to environment variables. */ + setlocale (LC_ALL, ""); + + /* Handle window size changes when readline is not active and reading + characters. */ + signal (SIGWINCH, sighandler); + + /* Install the line handler. */ + rl_callback_handler_install (prompt, cb_linehandler); + + /* Enter a simple event loop. This waits until something is available + to read on readline's input stream (defaults to standard input) and + calls the builtin character read callback to read it. It does not + have to modify the user's terminal settings. */ + running = 1; + while (running) + @{ + FD_ZERO (&fds); + FD_SET (fileno (rl_instream), &fds); + + r = select (FD_SETSIZE, &fds, NULL, NULL, NULL); + if (r < 0 && errno != EINTR) + @{ + perror ("rltest: select"); + rl_callback_handler_remove (); + break; + @} + if (sigwinch_received) + @{ + rl_resize_terminal (); + sigwinch_received = 0; + @} + if (r < 0) + continue; + + if (FD_ISSET (fileno (rl_instream), &fds)) + rl_callback_read_char (); + @} + + printf ("rltest: Event loop has exited\n"); + return 0; +@} +@end example + +@node Readline Signal Handling +@section Readline Signal Handling + +Signals are asynchronous events sent to a process by the Unix kernel, +sometimes on behalf of another process. They are intended to indicate +exceptional events, like a user pressing the interrupt key on his terminal, +or a network connection being broken. There is a class of signals that can +be sent to the process currently reading input from the keyboard. Since +Readline changes the terminal attributes when it is called, it needs to +perform special processing when such a signal is received in order to +restore the terminal to a sane state, or provide application writers with +functions to do so manually. + +Readline contains an internal signal handler that is installed for a +number of signals (@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM}, +@code{SIGHUP}, +@code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}). +When one of these signals is received, the signal handler +will reset the terminal attributes to those that were in effect before +@code{readline()} was called, reset the signal handling to what it was +before @code{readline()} was called, and resend the signal to the calling +application. +If and when the calling application's signal handler returns, Readline +will reinitialize the terminal and continue to accept input. +When a @code{SIGINT} is received, the Readline signal handler performs +some additional work, which will cause any partially-entered line to be +aborted (see the description of @code{rl_free_line_state()} below). + +There is an additional Readline signal handler, for @code{SIGWINCH}, which +the kernel sends to a process whenever the terminal's size changes (for +example, if a user resizes an @code{xterm}). The Readline @code{SIGWINCH} +handler updates Readline's internal screen size information, and then calls +any @code{SIGWINCH} signal handler the calling application has installed. +Readline calls the application's @code{SIGWINCH} signal handler without +resetting the terminal to its original state. If the application's signal +handler does more than update its idea of the terminal size and return (for +example, a @code{longjmp} back to a main processing loop), it @emph{must} +call @code{rl_cleanup_after_signal()} (described below), to restore the +terminal state. + +When an application is using the callback interface +(@pxref{Alternate Interface}), Readline installs signal handlers only for +the duration of the call to @code{rl_callback_read_char}. Applications +using the callback interface should be prepared to clean up Readline's +state if they wish to handle the signal before the line handler completes +and restores the terminal state. + +If an application using the callback interface wishes to have Readline +install its signal handlers at the time the application calls +@code{rl_callback_handler_install} and remove them only when a complete +line of input has been read, it should set the +@code{rl_persistent_signal_handlers} variable to a non-zero value. +This allows an application to defer all of the handling of the signals +Readline catches to Readline. +Applications should use this variable with care; it can result in Readline +catching signals and not acting on them (or allowing the application to react +to them) until the application calls @code{rl_callback_read_char}. This +can result in an application becoming less responsive to keyboard signals +like SIGINT. +If an application does not want or need to perform any signal handling, or +does not need to do any processing between calls to @code{rl_callback_read_char}, +setting this variable may be desirable. + +Readline provides two variables that allow application writers to +control whether or not it will catch certain signals and act on them +when they are received. It is important that applications change the +values of these variables only when calling @code{readline()}, not in +a signal handler, so Readline's internal signal state is not corrupted. + +@deftypevar int rl_catch_signals +If this variable is non-zero, Readline will install signal handlers for +@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM}, @code{SIGHUP}, @code{SIGALRM}, +@code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}. + +The default value of @code{rl_catch_signals} is 1. +@end deftypevar + +@deftypevar int rl_catch_sigwinch +If this variable is set to a non-zero value, +Readline will install a signal handler for @code{SIGWINCH}. + +The default value of @code{rl_catch_sigwinch} is 1. +@end deftypevar + +@deftypevar int rl_persistent_signal_handlers +If an application using the callback interface wishes Readline's signal +handlers to be installed and active during the set of calls to +@code{rl_callback_read_char} that constitutes an entire single line, +it should set this variable to a non-zero value. + +The default value of @code{rl_persistent_signal_handlers} is 0. +@end deftypevar + +@deftypevar int rl_change_environment +If this variable is set to a non-zero value, +and Readline is handling @code{SIGWINCH}, Readline will modify the +@var{LINES} and @var{COLUMNS} environment variables upon receipt of a +@code{SIGWINCH} + +The default value of @code{rl_change_environment} is 1. +@end deftypevar + +If an application does not wish to have Readline catch any signals, or +to handle signals other than those Readline catches (@code{SIGHUP}, +for example), +Readline provides convenience functions to do the necessary terminal +and internal state cleanup upon receipt of a signal. + +@deftypefun int rl_pending_signal (void) +Return the signal number of the most recent signal Readline received but +has not yet handled, or 0 if there is no pending signal. +@end deftypefun + +@deftypefun void rl_cleanup_after_signal (void) +This function will reset the state of the terminal to what it was before +@code{readline()} was called, and remove the Readline signal handlers for +all signals, depending on the values of @code{rl_catch_signals} and +@code{rl_catch_sigwinch}. +@end deftypefun + +@deftypefun void rl_free_line_state (void) +This will free any partial state associated with the current input line +(undo information, any partial history entry, any partially-entered +keyboard macro, and any partially-entered numeric argument). This +should be called before @code{rl_cleanup_after_signal()}. The +Readline signal handler for @code{SIGINT} calls this to abort the +current input line. +@end deftypefun + +@deftypefun void rl_reset_after_signal (void) +This will reinitialize the terminal and reinstall any Readline signal +handlers, depending on the values of @code{rl_catch_signals} and +@code{rl_catch_sigwinch}. +@end deftypefun + +If an application wants to force Readline to handle any signals that +have arrived while it has been executing, @code{rl_check_signals()} +will call Readline's internal signal handler if there are any pending +signals. This is primarily intended for those applications that use +a custom @code{rl_getc_function} (@pxref{Readline Variables}) and wish +to handle signals received while waiting for input. + +@deftypefun void rl_check_signals (void) +If there are any pending signals, call Readline's internal signal handling +functions to process them. @code{rl_pending_signal()} can be used independently +to determine whether or not there are any pending signals. +@end deftypefun + +If an application does not wish Readline to catch @code{SIGWINCH}, it may +call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force +Readline to update its idea of the terminal size when it receives +a @code{SIGWINCH}. + +@deftypefun void rl_echo_signal_char (int sig) +If an application wishes to install its own signal handlers, but still +have readline display characters that generate signals, calling this +function with @var{sig} set to @code{SIGINT}, @code{SIGQUIT}, or +@code{SIGTSTP} will display the character generating that signal. +@end deftypefun + +@deftypefun void rl_resize_terminal (void) +Update Readline's internal screen size by reading values from the kernel. +@end deftypefun + +@deftypefun void rl_set_screen_size (int rows, int cols) +Set Readline's idea of the terminal size to @var{rows} rows and +@var{cols} columns. If either @var{rows} or @var{columns} is less than +or equal to 0, Readline's idea of that terminal dimension is unchanged. +This is intended to tell Readline the physical dimensions of the terminal, +and is used internally to calculate the maximum number of characters that +may appear on a single line and on the screen. +@end deftypefun + +If an application does not want to install a @code{SIGWINCH} handler, but +is still interested in the screen dimensions, it may query Readline's idea +of the screen size. + +@deftypefun void rl_get_screen_size (int *rows, int *cols) +Return Readline's idea of the terminal's size in the +variables pointed to by the arguments. +@end deftypefun + +@deftypefun void rl_reset_screen_size (void) +Cause Readline to reobtain the screen size and recalculate its dimensions. +@end deftypefun + +The following functions install and remove Readline's signal handlers. + +@deftypefun int rl_set_signals (void) +Install Readline's signal handler for @code{SIGINT}, @code{SIGQUIT}, +@code{SIGTERM}, @code{SIGHUP}, @code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN}, +@code{SIGTTOU}, and @code{SIGWINCH}, depending on the values of +@code{rl_catch_signals} and @code{rl_catch_sigwinch}. +@end deftypefun + +@deftypefun int rl_clear_signals (void) +Remove all of the Readline signal handlers installed by +@code{rl_set_signals()}. +@end deftypefun + +@node Custom Completers +@section Custom Completers +@cindex application-specific completion functions + +Typically, a program that reads commands from the user has a way of +disambiguating commands and data. If your program is one of these, then +it can provide completion for commands, data, or both. +The following sections describe how your program and Readline +cooperate to provide this service. + +@menu +* How Completing Works:: The logic used to do completion. +* Completion Functions:: Functions provided by Readline. +* Completion Variables:: Variables which control completion. +* A Short Completion Example:: An example of writing completer subroutines. +@end menu + +@node How Completing Works +@subsection How Completing Works + +In order to complete some text, the full list of possible completions +must be available. That is, it is not possible to accurately +expand a partial word without knowing all of the possible words +which make sense in that context. The Readline library provides +the user interface to completion, and two of the most common +completion functions: filename and username. For completing other types +of text, you must write your own completion function. This section +describes exactly what such functions must do, and provides an example. + +There are three major functions used to perform completion: + +@enumerate +@item +The user-interface function @code{rl_complete()}. This function is +called with the same arguments as other bindable Readline functions: +@var{count} and @var{invoking_key}. +It isolates the word to be completed and calls +@code{rl_completion_matches()} to generate a list of possible completions. +It then either lists the possible completions, inserts the possible +completions, or actually performs the +completion, depending on which behavior is desired. + +@item +The internal function @code{rl_completion_matches()} uses an +application-supplied @dfn{generator} function to generate the list of +possible matches, and then returns the array of these matches. +The caller should place the address of its generator function in +@code{rl_completion_entry_function}. + +@item +The generator function is called repeatedly from +@code{rl_completion_matches()}, returning a string each time. The +arguments to the generator function are @var{text} and @var{state}. +@var{text} is the partial word to be completed. @var{state} is zero the +first time the function is called, allowing the generator to perform +any necessary initialization, and a positive non-zero integer for +each subsequent call. The generator function returns +@code{(char *)NULL} to inform @code{rl_completion_matches()} that there are +no more possibilities left. Usually the generator function computes the +list of possible completions when @var{state} is zero, and returns them +one at a time on subsequent calls. Each string the generator function +returns as a match must be allocated with @code{malloc()}; Readline +frees the strings when it has finished with them. +Such a generator function is referred to as an +@dfn{application-specific completion function}. + +@end enumerate + +@deftypefun int rl_complete (int ignore, int invoking_key) +Complete the word at or before point. You have supplied the function +that does the initial simple matching selection algorithm (see +@code{rl_completion_matches()}). The default is to do filename completion. +@end deftypefun + +@deftypevar {rl_compentry_func_t *} rl_completion_entry_function +This is a pointer to the generator function for +@code{rl_completion_matches()}. +If the value of @code{rl_completion_entry_function} is +@code{NULL} then the default filename generator +function, @code{rl_filename_completion_function()}, is used. +An @dfn{application-specific completion function} is a function whose +address is assigned to @code{rl_completion_entry_function} and whose +return values are used to generate possible completions. +@end deftypevar + +@node Completion Functions +@subsection Completion Functions + +Here is the complete list of callable completion functions present in +Readline. + +@deftypefun int rl_complete_internal (int what_to_do) +Complete the word at or before point. @var{what_to_do} says what to do +with the completion. A value of @samp{?} means list the possible +completions. @samp{TAB} means do standard completion. @samp{*} means +insert all of the possible completions. @samp{!} means to display +all of the possible completions, if there is more than one, as well as +performing partial completion. @samp{@@} is similar to @samp{!}, but +possible completions are not listed if the possible completions share +a common prefix. +@end deftypefun + +@deftypefun int rl_complete (int ignore, int invoking_key) +Complete the word at or before point. You have supplied the function +that does the initial simple matching selection algorithm (see +@code{rl_completion_matches()} and @code{rl_completion_entry_function}). +The default is to do filename +completion. This calls @code{rl_complete_internal()} with an +argument depending on @var{invoking_key}. +@end deftypefun + +@deftypefun int rl_possible_completions (int count, int invoking_key) +List the possible completions. See description of @code{rl_complete +()}. This calls @code{rl_complete_internal()} with an argument of +@samp{?}. +@end deftypefun + +@deftypefun int rl_insert_completions (int count, int invoking_key) +Insert the list of possible completions into the line, deleting the +partially-completed word. See description of @code{rl_complete()}. +This calls @code{rl_complete_internal()} with an argument of @samp{*}. +@end deftypefun + +@deftypefun int rl_completion_mode (rl_command_func_t *cfunc) +Returns the appropriate value to pass to @code{rl_complete_internal()} +depending on whether @var{cfunc} was called twice in succession and +the values of the @code{show-all-if-ambiguous} and +@code{show-all-if-unmodified} variables. +Application-specific completion functions may use this function to present +the same interface as @code{rl_complete()}. +@end deftypefun + +@deftypefun {char **} rl_completion_matches (const char *text, rl_compentry_func_t *entry_func) +Returns an array of strings which is a list of completions for +@var{text}. If there are no completions, returns @code{NULL}. +The first entry in the returned array is the substitution for @var{text}. +The remaining entries are the possible completions. The array is +terminated with a @code{NULL} pointer. + +@var{entry_func} is a function of two args, and returns a +@code{char *}. The first argument is @var{text}. The second is a +state argument; it is zero on the first call, and non-zero on subsequent +calls. @var{entry_func} returns a @code{NULL} pointer to the caller +when there are no more matches. +@end deftypefun + +@deftypefun {char *} rl_filename_completion_function (const char *text, int state) +A generator function for filename completion in the general case. +@var{text} is a partial filename. +The Bash source is a useful reference for writing application-specific +completion functions (the Bash completion functions call this and other +Readline functions). +@end deftypefun + +@deftypefun {char *} rl_username_completion_function (const char *text, int state) +A completion generator for usernames. @var{text} contains a partial +username preceded by a random character (usually @samp{~}). As with all +completion generators, @var{state} is zero on the first call and non-zero +for subsequent calls. +@end deftypefun + +@node Completion Variables +@subsection Completion Variables + +@deftypevar {rl_compentry_func_t *} rl_completion_entry_function +A pointer to the generator function for @code{rl_completion_matches()}. +@code{NULL} means to use @code{rl_filename_completion_function()}, +the default filename completer. +@end deftypevar + +@deftypevar {rl_completion_func_t *} rl_attempted_completion_function +A pointer to an alternative function to create matches. +The function is called with @var{text}, @var{start}, and @var{end}. +@var{start} and @var{end} are indices in @code{rl_line_buffer} defining +the boundaries of @var{text}, which is a character string. +If this function exists and returns @code{NULL}, or if this variable is +set to @code{NULL}, then @code{rl_complete()} will call the value of +@code{rl_completion_entry_function} to generate matches, otherwise the +array of strings returned will be used. +If this function sets the @code{rl_attempted_completion_over} +variable to a non-zero value, Readline will not perform its default +completion even if this function returns no matches. +@end deftypevar + +@deftypevar {rl_quote_func_t *} rl_filename_quoting_function +A pointer to a function that will quote a filename in an +application-specific fashion. This is called if filename completion is being +attempted and one of the characters in @code{rl_filename_quote_characters} +appears in a completed filename. The function is called with +@var{text}, @var{match_type}, and @var{quote_pointer}. The @var{text} +is the filename to be quoted. The @var{match_type} is either +@code{SINGLE_MATCH}, if there is only one completion match, or +@code{MULT_MATCH}. Some functions use this to decide whether or not to +insert a closing quote character. The @var{quote_pointer} is a pointer +to any opening quote character the user typed. Some functions choose +to reset this character. +@end deftypevar + +@deftypevar {rl_dequote_func_t *} rl_filename_dequoting_function +A pointer to a function that will remove application-specific quoting +characters from a filename before completion is attempted, so those +characters do not interfere with matching the text against names in +the filesystem. It is called with @var{text}, the text of the word +to be dequoted, and @var{quote_char}, which is the quoting character +that delimits the filename (usually @samp{'} or @samp{"}). If +@var{quote_char} is zero, the filename was not in an embedded string. +@end deftypevar + +@deftypevar {rl_linebuf_func_t *} rl_char_is_quoted_p +A pointer to a function to call that determines whether or not a specific +character in the line buffer is quoted, according to whatever quoting +mechanism the program calling Readline uses. The function is called with +two arguments: @var{text}, the text of the line, and @var{index}, the +index of the character in the line. It is used to decide whether a +character found in @code{rl_completer_word_break_characters} should be +used to break words for the completer. +@end deftypevar + +@deftypevar {rl_compignore_func_t *} rl_ignore_some_completions_function +This function, if defined, is called by the completer when real filename +completion is done, after all the matching names have been generated. +It is passed a @code{NULL} terminated array of matches. +The first element (@code{matches[0]}) is the +maximal substring common to all matches. This function can +re-arrange the list of matches as required, but each element deleted +from the array must be freed. +@end deftypevar + +@deftypevar {rl_icppfunc_t *} rl_directory_completion_hook +This function, if defined, is allowed to modify the directory portion +of filenames Readline completes. +It could be used to expand symbolic links or shell variables in pathnames. +It is called with the address of a string (the current directory name) as an +argument, and may modify that string. +If the string is replaced with a new string, the old value should be freed. +Any modified directory name should have a trailing slash. +The modified value will be used as part of the completion, replacing +the directory portion of the pathname the user typed. +At the least, even if no other expansion is performed, this function should +remove any quote characters from the directory name, because its result will +be passed directly to @code{opendir()}. + +The directory completion hook returns an integer that should be non-zero if +the function modifies its directory argument. +The function should not modify the directory argument if it returns 0. +@end deftypevar + +@deftypevar {rl_icppfunc_t *} rl_directory_rewrite_hook; +If non-zero, this is the address of a function to call when completing +a directory name. This function takes the address of the directory name +to be modified as an argument. Unlike @code{rl_directory_completion_hook}, +it only modifies the directory name used in @code{opendir}, not what is +displayed when the possible completions are printed or inserted. It is +called before rl_directory_completion_hook. +At the least, even if no other expansion is performed, this function should +remove any quote characters from the directory name, because its result will +be passed directly to @code{opendir()}. + +The directory rewrite hook returns an integer that should be non-zero if +the function modifies its directory argument. +The function should not modify the directory argument if it returns 0. +@end deftypevar + +@deftypevar {rl_icppfunc_t *} rl_filename_stat_hook +If non-zero, this is the address of a function for the completer to +call before deciding which character to append to a completed name. +This function modifies its filename name argument, and the modified value +is passed to @code{stat()} to determine the file's type and characteristics. +This function does not need to remove quote characters from the filename. + +The stat hook returns an integer that should be non-zero if +the function modifies its directory argument. +The function should not modify the directory argument if it returns 0. +@end deftypevar + +@deftypevar {rl_dequote_func_t *} rl_filename_rewrite_hook +If non-zero, this is the address of a function called when reading +directory entries from the filesystem for completion and comparing +them to the partial word to be completed. The function should +perform any necessary application or system-specific conversion on +the filename, such as converting between character sets or converting +from a filesystem format to a character input format. +The function takes two arguments: @var{fname}, the filename to be converted, +and @var{fnlen}, its length in bytes. +It must either return its first argument (if no conversion takes place) +or the converted filename in newly-allocated memory. The converted +form is used to compare against the word to be completed, and, if it +matches, is added to the list of matches. Readline will free the +allocated string. +@end deftypevar + +@deftypevar {rl_compdisp_func_t *} rl_completion_display_matches_hook +If non-zero, then this is the address of a function to call when +completing a word would normally display the list of possible matches. +This function is called in lieu of Readline displaying the list. +It takes three arguments: +(@code{char **}@var{matches}, @code{int} @var{num_matches}, @code{int} @var{max_length}) +where @var{matches} is the array of matching strings, +@var{num_matches} is the number of strings in that array, and +@var{max_length} is the length of the longest string in that array. +Readline provides a convenience function, @code{rl_display_match_list}, +that takes care of doing the display to Readline's output stream. +You may call that function from this hook. +@end deftypevar + +@deftypevar {const char *} rl_basic_word_break_characters +The basic list of characters that signal a break between words for the +completer routine. The default value of this variable is the characters +which break words for completion in Bash: +@code{" \t\n\"\\'`@@$><=;|&@{("}. +@end deftypevar + +@deftypevar {const char *} rl_basic_quote_characters +A list of quote characters which can cause a word break. +@end deftypevar + +@deftypevar {const char *} rl_completer_word_break_characters +The list of characters that signal a break between words for +@code{rl_complete_internal()}. The default list is the value of +@code{rl_basic_word_break_characters}. +@end deftypevar + +@deftypevar {rl_cpvfunc_t *} rl_completion_word_break_hook +If non-zero, this is the address of a function to call when Readline is +deciding where to separate words for word completion. It should return +a character string like @code{rl_completer_word_break_characters} to be +used to perform the current completion. The function may choose to set +@code{rl_completer_word_break_characters} itself. If the function +returns @code{NULL}, @code{rl_completer_word_break_characters} is used. +@end deftypevar + +@deftypevar {const char *} rl_completer_quote_characters +A list of characters which can be used to quote a substring of the line. +Completion occurs on the entire substring, and within the substring +@code{rl_completer_word_break_characters} are treated as any other character, +unless they also appear within this list. +@end deftypevar + +@deftypevar {const char *} rl_filename_quote_characters +A list of characters that cause a filename to be quoted by the completer +when they appear in a completed filename. The default is the null string. +@end deftypevar + +@deftypevar {const char *} rl_special_prefixes +The list of characters that are word break characters, but should be +left in @var{text} when it is passed to the completion function. +Programs can use this to help determine what kind of completing to do. +For instance, Bash sets this variable to "$@@" so that it can complete +shell variables and hostnames. +@end deftypevar + +@deftypevar int rl_completion_query_items +Up to this many items will be displayed in response to a +possible-completions call. After that, readline asks the user if she is sure +she wants to see them all. The default value is 100. A negative value +indicates that Readline should never ask the user. +@end deftypevar + +@deftypevar {int} rl_completion_append_character +When a single completion alternative matches at the end of the command +line, this character is appended to the inserted completion text. The +default is a space character (@samp{ }). Setting this to the null +character (@samp{\0}) prevents anything being appended automatically. +This can be changed in application-specific completion functions to +provide the ``most sensible word separator character'' according to +an application-specific command line syntax specification. +It is set to the default before any application-specific completion function +is called, and may only be changed within such a function. +@end deftypevar + +@deftypevar int rl_completion_suppress_append +If non-zero, @var{rl_completion_append_character} is not appended to +matches at the end of the command line, as described above. +It is set to 0 before any application-specific completion function +is called, and may only be changed within such a function. +@end deftypevar + +@deftypevar int rl_completion_quote_character +When Readline is completing quoted text, as delimited by one of the +characters in @var{rl_completer_quote_characters}, it sets this variable +to the quoting character found. +This is set before any application-specific completion function is called. +@end deftypevar + +@deftypevar int rl_completion_suppress_quote +If non-zero, Readline does not append a matching quote character when +performing completion on a quoted string. +It is set to 0 before any application-specific completion function +is called, and may only be changed within such a function. +@end deftypevar + +@deftypevar int rl_completion_found_quote +When Readline is completing quoted text, it sets this variable +to a non-zero value if the word being completed contains or is delimited +by any quoting characters, including backslashes. +This is set before any application-specific completion function is called. +@end deftypevar + +@deftypevar int rl_completion_mark_symlink_dirs +If non-zero, a slash will be appended to completed filenames that are +symbolic links to directory names, subject to the value of the +user-settable @var{mark-directories} variable. +This variable exists so that application-specific completion functions +can override the user's global preference (set via the +@var{mark-symlinked-directories} Readline variable) if appropriate. +This variable is set to the user's preference before any +application-specific completion function is called, so unless that +function modifies the value, the user's preferences are honored. +@end deftypevar + +@deftypevar int rl_ignore_completion_duplicates +If non-zero, then duplicates in the matches are removed. +The default is 1. +@end deftypevar + +@deftypevar int rl_filename_completion_desired +Non-zero means that the results of the matches are to be treated as +filenames. This is @emph{always} zero when completion is attempted, +and can only be changed +within an application-specific completion function. If it is set to a +non-zero value by such a function, directory names have a slash appended +and Readline attempts to quote completed filenames if they contain any +characters in @code{rl_filename_quote_characters} and +@code{rl_filename_quoting_desired} is set to a non-zero value. +@end deftypevar + +@deftypevar int rl_filename_quoting_desired +Non-zero means that the results of the matches are to be quoted using +double quotes (or an application-specific quoting mechanism) if the +completed filename contains any characters in +@code{rl_filename_quote_chars}. This is @emph{always} non-zero +when completion is attempted, and can only be changed within an +application-specific completion function. +The quoting is effected via a call to the function pointed to +by @code{rl_filename_quoting_function}. +@end deftypevar + +@deftypevar int rl_attempted_completion_over +If an application-specific completion function assigned to +@code{rl_attempted_completion_function} sets this variable to a non-zero +value, Readline will not perform its default filename completion even +if the application's completion function returns no matches. +It should be set only by an application's completion function. +@end deftypevar + +@deftypevar int rl_sort_completion_matches +If an application sets this variable to 0, Readline will not sort the +list of completions (which implies that it cannot remove any duplicate +completions). The default value is 1, which means that Readline will +sort the completions and, depending on the value of +@code{rl_ignore_completion_duplicates}, will attempt to remove duplicate +matches. +@end deftypevar + +@deftypevar int rl_completion_type +Set to a character describing the type of completion Readline is currently +attempting; see the description of @code{rl_complete_internal()} +(@pxref{Completion Functions}) for the list of characters. +This is set to the appropriate value before any application-specific +completion function is called, allowing such functions to present +the same interface as @code{rl_complete()}. +@end deftypevar + +@deftypevar int rl_completion_invoking_key +Set to the final character in the key sequence that invoked one of the +completion functions that call @code{rl_complete_internal()}. This is +set to the appropriate value before any application-specific completion +function is called. +@end deftypevar + +@deftypevar int rl_inhibit_completion +If this variable is non-zero, completion is inhibited. The completion +character will be inserted as any other bound to @code{self-insert}. +@end deftypevar + +@node A Short Completion Example +@subsection A Short Completion Example + +Here is a small application demonstrating the use of the GNU Readline +library. It is called @code{fileman}, and the source code resides in +@file{examples/fileman.c}. This sample application provides +completion of command names, line editing features, and access to the +history list. + +@page +@smallexample +/* fileman.c -- A tiny application which demonstrates how to use the + GNU Readline library. This application interactively allows users + to manipulate files and their modes. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#ifdef HAVE_SYS_FILE_H +# include +#endif +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#include +#include +#include + +#if defined (HAVE_STRING_H) +# include +#else /* !HAVE_STRING_H */ +# include +#endif /* !HAVE_STRING_H */ + +#ifdef HAVE_STDLIB_H +# include +#endif + +#include + +#include +#include + +extern char *xmalloc PARAMS((size_t)); + +/* The names of functions that actually do the manipulation. */ +int com_list PARAMS((char *)); +int com_view PARAMS((char *)); +int com_rename PARAMS((char *)); +int com_stat PARAMS((char *)); +int com_pwd PARAMS((char *)); +int com_delete PARAMS((char *)); +int com_help PARAMS((char *)); +int com_cd PARAMS((char *)); +int com_quit PARAMS((char *)); + +/* A structure which contains information on the commands this program + can understand. */ + +typedef struct @{ + char *name; /* User printable name of the function. */ + rl_icpfunc_t *func; /* Function to call to do the job. */ + char *doc; /* Documentation for this function. */ +@} COMMAND; + +COMMAND commands[] = @{ + @{ "cd", com_cd, "Change to directory DIR" @}, + @{ "delete", com_delete, "Delete FILE" @}, + @{ "help", com_help, "Display this text" @}, + @{ "?", com_help, "Synonym for `help'" @}, + @{ "list", com_list, "List files in DIR" @}, + @{ "ls", com_list, "Synonym for `list'" @}, + @{ "pwd", com_pwd, "Print the current working directory" @}, + @{ "quit", com_quit, "Quit using Fileman" @}, + @{ "rename", com_rename, "Rename FILE to NEWNAME" @}, + @{ "stat", com_stat, "Print out statistics on FILE" @}, + @{ "view", com_view, "View the contents of FILE" @}, + @{ (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL @} +@}; + +/* Forward declarations. */ +char *stripwhite (); +COMMAND *find_command (); + +/* The name of this program, as taken from argv[0]. */ +char *progname; + +/* When non-zero, this global means the user is done using this program. */ +int done; + +char * +dupstr (s) + char *s; +@{ + char *r; + + r = xmalloc (strlen (s) + 1); + strcpy (r, s); + return (r); +@} + +main (argc, argv) + int argc; + char **argv; +@{ + char *line, *s; + + progname = argv[0]; + + initialize_readline (); /* Bind our completer. */ + + /* Loop reading and executing lines until the user quits. */ + for ( ; done == 0; ) + @{ + line = readline ("FileMan: "); + + if (!line) + break; + + /* Remove leading and trailing whitespace from the line. + Then, if there is anything left, add it to the history list + and execute it. */ + s = stripwhite (line); + + if (*s) + @{ + add_history (s); + execute_line (s); + @} + + free (line); + @} + exit (0); +@} + +/* Execute a command line. */ +int +execute_line (line) + char *line; +@{ + register int i; + COMMAND *command; + char *word; + + /* Isolate the command word. */ + i = 0; + while (line[i] && whitespace (line[i])) + i++; + word = line + i; + + while (line[i] && !whitespace (line[i])) + i++; + + if (line[i]) + line[i++] = '\0'; + + command = find_command (word); + + if (!command) + @{ + fprintf (stderr, "%s: No such command for FileMan.\n", word); + return (-1); + @} + + /* Get argument to command, if any. */ + while (whitespace (line[i])) + i++; + + word = line + i; + + /* Call the function. */ + return ((*(command->func)) (word)); +@} + +/* Look up NAME as the name of a command, and return a pointer to that + command. Return a NULL pointer if NAME isn't a command name. */ +COMMAND * +find_command (name) + char *name; +@{ + register int i; + + for (i = 0; commands[i].name; i++) + if (strcmp (name, commands[i].name) == 0) + return (&commands[i]); + + return ((COMMAND *)NULL); +@} + +/* Strip whitespace from the start and end of STRING. Return a pointer + into STRING. */ +char * +stripwhite (string) + char *string; +@{ + register char *s, *t; + + for (s = string; whitespace (*s); s++) + ; + + if (*s == 0) + return (s); + + t = s + strlen (s) - 1; + while (t > s && whitespace (*t)) + t--; + *++t = '\0'; + + return s; +@} + +/* **************************************************************** */ +/* */ +/* Interface to Readline Completion */ +/* */ +/* **************************************************************** */ + +char *command_generator PARAMS((const char *, int)); +char **fileman_completion PARAMS((const char *, int, int)); + +/* Tell the GNU Readline library how to complete. We want to try to complete + on command names if this is the first word in the line, or on filenames + if not. */ +initialize_readline () +@{ + /* Allow conditional parsing of the ~/.inputrc file. */ + rl_readline_name = "FileMan"; + + /* Tell the completer that we want a crack first. */ + rl_attempted_completion_function = fileman_completion; +@} + +/* Attempt to complete on the contents of TEXT. START and END bound the + region of rl_line_buffer that contains the word to complete. TEXT is + the word to complete. We can use the entire contents of rl_line_buffer + in case we want to do some simple parsing. Return the array of matches, + or NULL if there aren't any. */ +char ** +fileman_completion (text, start, end) + const char *text; + int start, end; +@{ + char **matches; + + matches = (char **)NULL; + + /* If this word is at the start of the line, then it is a command + to complete. Otherwise it is the name of a file in the current + directory. */ + if (start == 0) + matches = rl_completion_matches (text, command_generator); + + return (matches); +@} + +/* Generator function for command completion. STATE lets us know whether + to start from scratch; without any state (i.e. STATE == 0), then we + start at the top of the list. */ +char * +command_generator (text, state) + const char *text; + int state; +@{ + static int list_index, len; + char *name; + + /* If this is a new word to complete, initialize now. This includes + saving the length of TEXT for efficiency, and initializing the index + variable to 0. */ + if (!state) + @{ + list_index = 0; + len = strlen (text); + @} + + /* Return the next name which partially matches from the command list. */ + while (name = commands[list_index].name) + @{ + list_index++; + + if (strncmp (name, text, len) == 0) + return (dupstr(name)); + @} + + /* If no names matched, then return NULL. */ + return ((char *)NULL); +@} + +/* **************************************************************** */ +/* */ +/* FileMan Commands */ +/* */ +/* **************************************************************** */ + +/* String to pass to system (). This is for the LIST, VIEW and RENAME + commands. */ +static char syscom[1024]; + +/* List the file(s) named in arg. */ +com_list (arg) + char *arg; +@{ + if (!arg) + arg = ""; + + sprintf (syscom, "ls -FClg %s", arg); + return (system (syscom)); +@} + +com_view (arg) + char *arg; +@{ + if (!valid_argument ("view", arg)) + return 1; + +#if defined (__MSDOS__) + /* more.com doesn't grok slashes in pathnames */ + sprintf (syscom, "less %s", arg); +#else + sprintf (syscom, "more %s", arg); +#endif + return (system (syscom)); +@} + +com_rename (arg) + char *arg; +@{ + too_dangerous ("rename"); + return (1); +@} + +com_stat (arg) + char *arg; +@{ + struct stat finfo; + + if (!valid_argument ("stat", arg)) + return (1); + + if (stat (arg, &finfo) == -1) + @{ + perror (arg); + return (1); + @} + + printf ("Statistics for `%s':\n", arg); + + printf ("%s has %d link%s, and is %d byte%s in length.\n", + arg, + finfo.st_nlink, + (finfo.st_nlink == 1) ? "" : "s", + finfo.st_size, + (finfo.st_size == 1) ? "" : "s"); + printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime)); + printf (" Last access at: %s", ctime (&finfo.st_atime)); + printf (" Last modified at: %s", ctime (&finfo.st_mtime)); + return (0); +@} + +com_delete (arg) + char *arg; +@{ + too_dangerous ("delete"); + return (1); +@} + +/* Print out help for ARG, or for all of the commands if ARG is + not present. */ +com_help (arg) + char *arg; +@{ + register int i; + int printed = 0; + + for (i = 0; commands[i].name; i++) + @{ + if (!*arg || (strcmp (arg, commands[i].name) == 0)) + @{ + printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc); + printed++; + @} + @} + + if (!printed) + @{ + printf ("No commands match `%s'. Possibilities are:\n", arg); + + for (i = 0; commands[i].name; i++) + @{ + /* Print in six columns. */ + if (printed == 6) + @{ + printed = 0; + printf ("\n"); + @} + + printf ("%s\t", commands[i].name); + printed++; + @} + + if (printed) + printf ("\n"); + @} + return (0); +@} + +/* Change to the directory ARG. */ +com_cd (arg) + char *arg; +@{ + if (chdir (arg) == -1) + @{ + perror (arg); + return 1; + @} + + com_pwd (""); + return (0); +@} + +/* Print out the current working directory. */ +com_pwd (ignore) + char *ignore; +@{ + char dir[1024], *s; + + s = getcwd (dir, sizeof(dir) - 1); + if (s == 0) + @{ + printf ("Error getting pwd: %s\n", dir); + return 1; + @} + + printf ("Current directory is %s\n", dir); + return 0; +@} + +/* The user wishes to quit using this program. Just set DONE non-zero. */ +com_quit (arg) + char *arg; +@{ + done = 1; + return (0); +@} + +/* Function which tells you that you can't do this. */ +too_dangerous (caller) + char *caller; +@{ + fprintf (stderr, + "%s: Too dangerous for me to distribute. Write it yourself.\n", + caller); +@} + +/* Return non-zero if ARG is a valid argument for CALLER, else print + an error message and return zero. */ +int +valid_argument (caller, arg) + char *caller, *arg; +@{ + if (!arg || !*arg) + @{ + fprintf (stderr, "%s: Argument required.\n", caller); + return (0); + @} + + return (1); +@} +@end smallexample diff --git a/bash-5.1/lib/readline/doc/rluser.texi b/bash-5.1/lib/readline/doc/rluser.texi new file mode 100644 index 0000000..26b0ff0 --- /dev/null +++ b/bash-5.1/lib/readline/doc/rluser.texi @@ -0,0 +1,2422 @@ +@comment %**start of header (This is for running Texinfo on a region.) +@setfilename rluser.info +@comment %**end of header (This is for running Texinfo on a region.) + +@ignore +This file documents the end user interface to the GNU command line +editing features. It is to be an appendix to manuals for programs which +use these features. There is a document entitled "readline.texinfo" +which contains both end-user and programmer documentation for the +GNU Readline Library. + +Copyright (C) 1988--2020 Free Software Foundation, Inc. + +Authored by Brian Fox and Chet Ramey. + +Permission is granted to process this file through Tex and print the +results, provided the printed document carries copying permission notice +identical to this one except for the removal of this paragraph (this +paragraph not being relevant to the printed manual). + +Permission is granted to make and distribute verbatim copies of this manual +provided the copyright notice and this permission notice are preserved on +all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided also that the +GNU Copyright statement is available to the distributee, and provided that +the entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions. +@end ignore + +@comment If you are including this manual as an appendix, then set the +@comment variable readline-appendix. + +@ifclear BashFeatures +@defcodeindex bt +@end ifclear + +@node Command Line Editing +@chapter Command Line Editing + +This chapter describes the basic features of the @sc{gnu} +command line editing interface. +@ifset BashFeatures +Command line editing is provided by the Readline library, which is +used by several different programs, including Bash. +Command line editing is enabled by default when using an interactive shell, +unless the @option{--noediting} option is supplied at shell invocation. +Line editing is also used when using the @option{-e} option to the +@code{read} builtin command (@pxref{Bash Builtins}). +By default, the line editing commands are similar to those of Emacs. +A vi-style line editing interface is also available. +Line editing can be enabled at any time using the @option{-o emacs} or +@option{-o vi} options to the @code{set} builtin command +(@pxref{The Set Builtin}), or disabled using the @option{+o emacs} or +@option{+o vi} options to @code{set}. +@end ifset + +@menu +* Introduction and Notation:: Notation used in this text. +* Readline Interaction:: The minimum set of commands for editing a line. +* Readline Init File:: Customizing Readline from a user's view. +* Bindable Readline Commands:: A description of most of the Readline commands + available for binding +* Readline vi Mode:: A short description of how to make Readline + behave like the vi editor. +@ifset BashFeatures +* Programmable Completion:: How to specify the possible completions for + a specific command. +* Programmable Completion Builtins:: Builtin commands to specify how to + complete arguments for a particular command. +* A Programmable Completion Example:: An example shell function for + generating possible completions. +@end ifset +@end menu + +@node Introduction and Notation +@section Introduction to Line Editing + +The following paragraphs describe the notation used to represent +keystrokes. + +The text @kbd{C-k} is read as `Control-K' and describes the character +produced when the @key{k} key is pressed while the Control key +is depressed. + +The text @kbd{M-k} is read as `Meta-K' and describes the character +produced when the Meta key (if you have one) is depressed, and the @key{k} +key is pressed. +The Meta key is labeled @key{ALT} on many keyboards. +On keyboards with two keys labeled @key{ALT} (usually to either side of +the space bar), the @key{ALT} on the left side is generally set to +work as a Meta key. +The @key{ALT} key on the right may also be configured to work as a +Meta key or may be configured as some other modifier, such as a +Compose key for typing accented characters. + +If you do not have a Meta or @key{ALT} key, or another key working as +a Meta key, the identical keystroke can be generated by typing @key{ESC} +@emph{first}, and then typing @key{k}. +Either process is known as @dfn{metafying} the @key{k} key. + +The text @kbd{M-C-k} is read as `Meta-Control-k' and describes the +character produced by @dfn{metafying} @kbd{C-k}. + +In addition, several keys have their own names. Specifically, +@key{DEL}, @key{ESC}, @key{LFD}, @key{SPC}, @key{RET}, and @key{TAB} all +stand for themselves when seen in this text, or in an init file +(@pxref{Readline Init File}). +If your keyboard lacks a @key{LFD} key, typing @key{C-j} will +produce the desired character. +The @key{RET} key may be labeled @key{Return} or @key{Enter} on +some keyboards. + +@node Readline Interaction +@section Readline Interaction +@cindex interaction, readline + +Often during an interactive session you type in a long line of text, +only to notice that the first word on the line is misspelled. The +Readline library gives you a set of commands for manipulating the text +as you type it in, allowing you to just fix your typo, and not forcing +you to retype the majority of the line. Using these editing commands, +you move the cursor to the place that needs correction, and delete or +insert the text of the corrections. Then, when you are satisfied with +the line, you simply press @key{RET}. You do not have to be at the +end of the line to press @key{RET}; the entire line is accepted +regardless of the location of the cursor within the line. + +@menu +* Readline Bare Essentials:: The least you need to know about Readline. +* Readline Movement Commands:: Moving about the input line. +* Readline Killing Commands:: How to delete text, and how to get it back! +* Readline Arguments:: Giving numeric arguments to commands. +* Searching:: Searching through previous lines. +@end menu + +@node Readline Bare Essentials +@subsection Readline Bare Essentials +@cindex notation, readline +@cindex command editing +@cindex editing command lines + +In order to enter characters into the line, simply type them. The typed +character appears where the cursor was, and then the cursor moves one +space to the right. If you mistype a character, you can use your +erase character to back up and delete the mistyped character. + +Sometimes you may mistype a character, and +not notice the error until you have typed several other characters. In +that case, you can type @kbd{C-b} to move the cursor to the left, and then +correct your mistake. Afterwards, you can move the cursor to the right +with @kbd{C-f}. + +When you add text in the middle of a line, you will notice that characters +to the right of the cursor are `pushed over' to make room for the text +that you have inserted. Likewise, when you delete text behind the cursor, +characters to the right of the cursor are `pulled back' to fill in the +blank space created by the removal of the text. A list of the bare +essentials for editing the text of an input line follows. + +@table @asis +@item @kbd{C-b} +Move back one character. +@item @kbd{C-f} +Move forward one character. +@item @key{DEL} or @key{Backspace} +Delete the character to the left of the cursor. +@item @kbd{C-d} +Delete the character underneath the cursor. +@item @w{Printing characters} +Insert the character into the line at the cursor. +@item @kbd{C-_} or @kbd{C-x C-u} +Undo the last editing command. You can undo all the way back to an +empty line. +@end table + +@noindent +(Depending on your configuration, the @key{Backspace} key be set to +delete the character to the left of the cursor and the @key{DEL} key set +to delete the character underneath the cursor, like @kbd{C-d}, rather +than the character to the left of the cursor.) + +@node Readline Movement Commands +@subsection Readline Movement Commands + + +The above table describes the most basic keystrokes that you need +in order to do editing of the input line. For your convenience, many +other commands have been added in addition to @kbd{C-b}, @kbd{C-f}, +@kbd{C-d}, and @key{DEL}. Here are some commands for moving more rapidly +about the line. + +@table @kbd +@item C-a +Move to the start of the line. +@item C-e +Move to the end of the line. +@item M-f +Move forward a word, where a word is composed of letters and digits. +@item M-b +Move backward a word. +@item C-l +Clear the screen, reprinting the current line at the top. +@end table + +Notice how @kbd{C-f} moves forward a character, while @kbd{M-f} moves +forward a word. It is a loose convention that control keystrokes +operate on characters while meta keystrokes operate on words. + +@node Readline Killing Commands +@subsection Readline Killing Commands + +@cindex killing text +@cindex yanking text + +@dfn{Killing} text means to delete the text from the line, but to save +it away for later use, usually by @dfn{yanking} (re-inserting) +it back into the line. +(`Cut' and `paste' are more recent jargon for `kill' and `yank'.) + +If the description for a command says that it `kills' text, then you can +be sure that you can get the text back in a different (or the same) +place later. + +When you use a kill command, the text is saved in a @dfn{kill-ring}. +Any number of consecutive kills save all of the killed text together, so +that when you yank it back, you get it all. The kill +ring is not line specific; the text that you killed on a previously +typed line is available to be yanked back later, when you are typing +another line. +@cindex kill ring + +Here is the list of commands for killing text. + +@table @kbd +@item C-k +Kill the text from the current cursor position to the end of the line. + +@item M-d +Kill from the cursor 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 @kbd{M-f}. + +@item M-@key{DEL} +Kill from the cursor the start of the current word, or, if between +words, to the start of the previous word. +Word boundaries are the same as those used by @kbd{M-b}. + +@item C-w +Kill from the cursor to the previous whitespace. This is different than +@kbd{M-@key{DEL}} because the word boundaries differ. + +@end table + +Here is how to @dfn{yank} the text back into the line. Yanking +means to copy the most-recently-killed text from the kill buffer. + +@table @kbd +@item C-y +Yank the most recently killed text back into the buffer at the cursor. + +@item M-y +Rotate the kill-ring, and yank the new top. You can only do this if +the prior command is @kbd{C-y} or @kbd{M-y}. +@end table + +@node Readline Arguments +@subsection Readline Arguments + +You can pass numeric arguments to Readline commands. Sometimes the +argument acts as a repeat count, other times it is the @i{sign} of the +argument that is significant. If you pass a negative argument to a +command which normally acts in a forward direction, that command will +act in a backward direction. For example, to kill text back to the +start of the line, you might type @samp{M-- C-k}. + +The general way to pass numeric arguments to a command is to type meta +digits before the command. If the first `digit' typed is a minus +sign (@samp{-}), then the sign of the argument will be negative. Once +you have typed one meta digit to get the argument started, you can type +the remainder of the digits, and then the command. For example, to give +the @kbd{C-d} command an argument of 10, you could type @samp{M-1 0 C-d}, +which will delete the next ten characters on the input line. + +@node Searching +@subsection Searching for Commands in the History + +Readline provides commands for searching through the command history +@ifset BashFeatures +(@pxref{Bash History Facilities}) +@end ifset +for lines containing a specified string. +There are two search modes: @dfn{incremental} and @dfn{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. +To search backward in the history for a particular string, type +@kbd{C-r}. Typing @kbd{C-s} searches forward through the history. +The characters present in the value of the @code{isearch-terminators} variable +are used to terminate an incremental search. +If that variable has not been assigned a value, the @key{ESC} and +@kbd{C-J} characters will terminate an incremental search. +@kbd{C-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 @kbd{C-r} or +@kbd{C-s} 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 @key{RET} will terminate the search and accept +the line, thereby executing the command from the history list. +A movement command will terminate the search, make the last line found +the current line, and begin editing. + +Readline remembers the last incremental search string. If two +@kbd{C-r}s 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. + +@node Readline Init File +@section Readline Init File +@cindex initialization file, readline + +Although the Readline library comes with a set of Emacs-like +keybindings installed by default, it is possible to use a different set +of keybindings. +Any user can customize programs that use Readline by putting +commands in an @dfn{inputrc} file, conventionally in his home directory. +The name of this +@ifset BashFeatures +file is taken from the value of the shell variable @env{INPUTRC}. If +@end ifset +@ifclear BashFeatures +file is taken from the value of the environment variable @env{INPUTRC}. If +@end ifclear +that variable is unset, the default is @file{~/.inputrc}. If that +file does not exist or cannot be read, the ultimate default is +@file{/etc/inputrc}. +@ifset BashFeatures +The @w{@code{bind}} builtin command can also be used to set Readline +keybindings and variables. +@xref{Bash Builtins}. +@end ifset + +When a program which uses the Readline library starts up, the +init file is read, and the key bindings are set. + +In addition, the @code{C-x C-r} command re-reads this init file, thus +incorporating any changes that you might have made to it. + +@menu +* Readline Init File Syntax:: Syntax for the commands in the inputrc file. + +* Conditional Init Constructs:: Conditional key bindings in the inputrc file. + +* Sample Init File:: An example inputrc file. +@end menu + +@node Readline Init File Syntax +@subsection Readline Init File Syntax + +There are only a few basic constructs allowed in the +Readline init file. Blank lines are ignored. +Lines beginning with a @samp{#} are comments. +Lines beginning with a @samp{$} indicate conditional +constructs (@pxref{Conditional Init Constructs}). Other lines +denote variable settings and key bindings. + +@table @asis +@item Variable Settings +You can modify the run-time behavior of Readline by +altering the values of variables in Readline +using the @code{set} command within the init file. +The syntax is simple: + +@example +set @var{variable} @var{value} +@end example + +@noindent +Here, for example, is how to +change from the default Emacs-like key binding to use +@code{vi} line editing commands: + +@example +set editing-mode vi +@end example + +Variable names and values, where appropriate, are recognized without regard +to case. Unrecognized variable names are ignored. + +Boolean variables (those that can be set to on or off) are set to on if +the value is null or empty, @var{on} (case-insensitive), or 1. Any other +value results in the variable being set to off. + +@ifset BashFeatures +The @w{@code{bind -V}} command lists the current Readline variable names +and values. @xref{Bash Builtins}. +@end ifset + +A great deal of run-time behavior is changeable with the following +variables. + +@cindex variables, readline +@table @code + +@item bell-style +@vindex bell-style +Controls what happens when Readline wants to ring the terminal bell. +If set to @samp{none}, Readline never rings the bell. If set to +@samp{visible}, Readline uses a visible bell if one is available. +If set to @samp{audible} (the default), Readline attempts to ring +the terminal's bell. + +@item bind-tty-special-chars +@vindex bind-tty-special-chars +If set to @samp{on} (the default), Readline attempts to bind the control +characters treated specially by the kernel's terminal driver to their +Readline equivalents. + +@item blink-matching-paren +@vindex blink-matching-paren +If set to @samp{on}, Readline attempts to briefly move the cursor to an +opening parenthesis when a closing parenthesis is inserted. The default +is @samp{off}. + +@item colored-completion-prefix +@vindex colored-completion-prefix +If set to @samp{on}, when listing completions, Readline displays the +common prefix of the set of possible completions using a different color. +The color definitions are taken from the value of the @env{LS_COLORS} +environment variable. +The default is @samp{off}. + +@item colored-stats +@vindex colored-stats +If set to @samp{on}, Readline displays possible completions using different +colors to indicate their file type. +The color definitions are taken from the value of the @env{LS_COLORS} +environment variable. +The default is @samp{off}. + +@item comment-begin +@vindex comment-begin +The string to insert at the beginning of the line when the +@code{insert-comment} command is executed. The default value +is @code{"#"}. + +@item completion-display-width +@vindex completion-display-width +The number of screen columns used to display possible matches +when performing completion. +The value is ignored if it is less than 0 or greater than the terminal +screen width. +A value of 0 will cause matches to be displayed one per line. +The default value is -1. + +@item completion-ignore-case +@vindex completion-ignore-case +If set to @samp{on}, Readline performs filename matching and completion +in a case-insensitive fashion. +The default value is @samp{off}. + +@item completion-map-case +@vindex completion-map-case +If set to @samp{on}, and @var{completion-ignore-case} is enabled, Readline +treats hyphens (@samp{-}) and underscores (@samp{_}) as equivalent when +performing case-insensitive filename matching and completion. +The default value is @samp{off}. + +@item completion-prefix-display-length +@vindex completion-prefix-display-length +The length in characters of the common prefix of a list of possible +completions that is displayed without modification. When set to a +value greater than zero, common prefixes longer than this value are +replaced with an ellipsis when displaying possible completions. + +@item completion-query-items +@vindex completion-query-items +The number of possible completions that determines when the user is +asked whether the list of possibilities should be displayed. +If the number of possible completions is greater than or equal to this value, +Readline will ask whether or not the user wishes to view them; +otherwise, they are simply listed. +This variable must be set to an integer value greater than or equal to 0. +A negative value means Readline should never ask. +The default limit is @code{100}. + +@item convert-meta +@vindex convert-meta +If set to @samp{on}, Readline will convert characters with the +eighth bit set to an @sc{ascii} key sequence by stripping the eighth +bit and prefixing an @key{ESC} character, converting them to a +meta-prefixed key sequence. The default value is @samp{on}, but +will be set to @samp{off} if the locale is one that contains +eight-bit characters. + +@item disable-completion +@vindex disable-completion +If set to @samp{On}, Readline will inhibit word completion. +Completion characters will be inserted into the line as if they had +been mapped to @code{self-insert}. The default is @samp{off}. + +@item echo-control-characters +@vindex echo-control-characters +When set to @samp{on}, on operating systems that indicate they support it, +readline echoes a character corresponding to a signal generated from the +keyboard. The default is @samp{on}. + +@item editing-mode +@vindex editing-mode +The @code{editing-mode} variable controls which default set of +key bindings is used. By default, Readline starts up in Emacs editing +mode, where the keystrokes are most similar to Emacs. This variable can be +set to either @samp{emacs} or @samp{vi}. + +@item emacs-mode-string +@vindex emacs-mode-string +If the @var{show-mode-in-prompt} variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is @samp{@@}. + +@item enable-bracketed-paste +@vindex enable-bracketed-paste +When set to @samp{On}, Readline will configure the terminal in a way +that will enable it to insert each paste into the editing buffer as a +single string of characters, instead of treating each character as if +it had been read from the keyboard. This can prevent pasted characters +from being interpreted as editing commands. The default is @samp{On}. + +@item enable-keypad +@vindex enable-keypad +When set to @samp{on}, Readline will try to enable the application +keypad when it is called. Some systems need this to enable the +arrow keys. The default is @samp{off}. + +@item enable-meta-key +When set to @samp{on}, Readline will try to enable any meta modifier +key the terminal claims to support when it is called. On many terminals, +the meta key is used to send eight-bit characters. +The default is @samp{on}. + +@item expand-tilde +@vindex expand-tilde +If set to @samp{on}, tilde expansion is performed when Readline +attempts word completion. The default is @samp{off}. + +@item history-preserve-point +@vindex history-preserve-point +If set to @samp{on}, the history code attempts to place the point (the +current cursor position) at the +same location on each history line retrieved with @code{previous-history} +or @code{next-history}. The default is @samp{off}. + +@item history-size +@vindex history-size +Set the maximum number of history entries saved in the history list. +If set to zero, any existing history entries are deleted and no new entries +are saved. +If set to a value less than zero, the number of history entries is not +limited. +By default, the number of history entries is not limited. +If an attempt is made to set @var{history-size} to a non-numeric value, +the maximum number of history entries will be set to 500. + +@item horizontal-scroll-mode +@vindex horizontal-scroll-mode +This variable can be set to either @samp{on} or @samp{off}. Setting it +to @samp{on} means that the text of the lines being edited will scroll +horizontally on a single screen line when they are longer than the width +of the screen, instead of wrapping onto a new screen line. +This variable is automatically set to @samp{on} for terminals of height 1. +By default, this variable is set to @samp{off}. + +@item input-meta +@vindex input-meta +@vindex meta-flag +If set to @samp{on}, Readline will enable eight-bit input (it +will not clear the eighth bit in the characters it reads), +regardless of what the terminal claims it can support. The +default value is @samp{off}, but Readline will set it to @samp{on} if the +locale contains eight-bit characters. +The name @code{meta-flag} is a synonym for this variable. + +@item isearch-terminators +@vindex isearch-terminators +The string of characters that should terminate an incremental search without +subsequently executing the character as a command (@pxref{Searching}). +If this variable has not been given a value, the characters @key{ESC} and +@kbd{C-J} will terminate an incremental search. + +@item keymap +@vindex keymap +Sets Readline's idea of the current keymap for key binding commands. +Built-in @code{keymap} names are +@code{emacs}, +@code{emacs-standard}, +@code{emacs-meta}, +@code{emacs-ctlx}, +@code{vi}, +@code{vi-move}, +@code{vi-command}, and +@code{vi-insert}. +@code{vi} is equivalent to @code{vi-command} (@code{vi-move} is also a +synonym); @code{emacs} is equivalent to @code{emacs-standard}. +Applications may add additional names. +The default value is @code{emacs}. +The value of the @code{editing-mode} variable also affects the +default keymap. + +@item keyseq-timeout +Specifies the duration Readline will wait for a character when reading an +ambiguous key sequence (one that can form a complete key sequence using +the input read so far, or can take additional input to complete a longer +key sequence). +If no input is received within the timeout, Readline will use the shorter +but complete key sequence. +Readline uses this value to determine whether or not input is +available on the current input source (@code{rl_instream} by default). +The value is specified in milliseconds, so a value of 1000 means that +Readline will wait one second for additional input. +If this variable is set to a value less than or equal to zero, or to a +non-numeric value, Readline will wait until another key is pressed to +decide which key sequence to complete. +The default value is @code{500}. + +@item mark-directories +If set to @samp{on}, completed directory names have a slash +appended. The default is @samp{on}. + +@item mark-modified-lines +@vindex mark-modified-lines +This variable, when set to @samp{on}, causes Readline to display an +asterisk (@samp{*}) at the start of history lines which have been modified. +This variable is @samp{off} by default. + +@item mark-symlinked-directories +@vindex mark-symlinked-directories +If set to @samp{on}, completed names which are symbolic links +to directories have a slash appended (subject to the value of +@code{mark-directories}). +The default is @samp{off}. + +@item match-hidden-files +@vindex match-hidden-files +This variable, when set to @samp{on}, causes Readline to match files whose +names begin with a @samp{.} (hidden files) when performing filename +completion. +If set to @samp{off}, the leading @samp{.} must be +supplied by the user in the filename to be completed. +This variable is @samp{on} by default. + +@item menu-complete-display-prefix +@vindex menu-complete-display-prefix +If set to @samp{on}, menu completion displays the common prefix of the +list of possible completions (which may be empty) before cycling through +the list. The default is @samp{off}. + +@item output-meta +@vindex output-meta +If set to @samp{on}, Readline will display characters with the +eighth bit set directly rather than as a meta-prefixed escape +sequence. +The default is @samp{off}, but Readline will set it to @samp{on} if the +locale contains eight-bit characters. + +@item page-completions +@vindex page-completions +If set to @samp{on}, Readline uses an internal @code{more}-like pager +to display a screenful of possible completions at a time. +This variable is @samp{on} by default. + +@item print-completions-horizontally +If set to @samp{on}, Readline will display completions with matches +sorted horizontally in alphabetical order, rather than down the screen. +The default is @samp{off}. + +@item revert-all-at-newline +@vindex revert-all-at-newline +If set to @samp{on}, Readline will undo all changes to history lines +before returning when @code{accept-line} is executed. By default, +history lines may be modified and retain individual undo lists across +calls to @code{readline}. The default is @samp{off}. + +@item show-all-if-ambiguous +@vindex show-all-if-ambiguous +This alters the default behavior of the completion functions. If +set to @samp{on}, +words which have more than one possible completion cause the +matches to be listed immediately instead of ringing the bell. +The default value is @samp{off}. + +@item show-all-if-unmodified +@vindex show-all-if-unmodified +This alters the default behavior of the completion functions in +a fashion similar to @var{show-all-if-ambiguous}. +If set to @samp{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. +The default value is @samp{off}. + +@item show-mode-in-prompt +@vindex show-mode-in-prompt +If set to @samp{on}, add a string to the beginning of the prompt +indicating the editing mode: emacs, vi command, or vi insertion. +The mode strings are user-settable (e.g., @var{emacs-mode-string}). +The default value is @samp{off}. + +@item skip-completed-text +@vindex skip-completed-text +If set to @samp{on}, this alters the default completion behavior when +inserting a single match into the line. It's only active when +performing completion in the middle of a word. If enabled, readline +does not insert characters from the completion that match characters +after point in the word being completed, so portions of the word +following the cursor are not duplicated. +For instance, if this is enabled, attempting completion when the cursor +is after the @samp{e} in @samp{Makefile} will result in @samp{Makefile} +rather than @samp{Makefilefile}, assuming there is a single possible +completion. +The default value is @samp{off}. + +@item vi-cmd-mode-string +@vindex vi-cmd-mode-string +If the @var{show-mode-in-prompt} variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in command mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is @samp{(cmd)}. + +@item vi-ins-mode-string +@vindex vi-ins-mode-string +If the @var{show-mode-in-prompt} variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in insertion mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is @samp{(ins)}. + +@item visible-stats +@vindex visible-stats +If set to @samp{on}, a character denoting a file's type +is appended to the filename when listing possible +completions. The default is @samp{off}. + +@end table + +@item Key Bindings +The syntax for controlling key bindings in the init file is +simple. First you need to find the name of the command that you +want to change. The following sections contain tables of the command +name, the default keybinding, if any, and a short description of what +the command does. + +Once you know the name of the command, simply place on a line +in the init file the name of the key +you wish to bind the command to, a colon, and then the name of the +command. +There can be no space between the key name and the colon -- that will be +interpreted as part of the key name. +The name of the key can be expressed in different ways, depending on +what you find most comfortable. + +In addition to command names, readline allows keys to be bound +to a string that is inserted when the key is pressed (a @var{macro}). + +@ifset BashFeatures +The @w{@code{bind -p}} command displays Readline function names and +bindings in a format that can put directly into an initialization file. +@xref{Bash Builtins}. +@end ifset + +@table @asis +@item @w{@var{keyname}: @var{function-name} or @var{macro}} +@var{keyname} is the name of a key spelled out in English. For example: +@example +Control-u: universal-argument +Meta-Rubout: backward-kill-word +Control-o: "> output" +@end example + +In the example above, @kbd{C-u} is bound to the function +@code{universal-argument}, +@kbd{M-DEL} is bound to the function @code{backward-kill-word}, and +@kbd{C-o} is bound to run the macro +expressed on the right hand side (that is, to insert the text +@samp{> output} into the line). + +A number of symbolic character names are recognized while +processing this key binding syntax: +@var{DEL}, +@var{ESC}, +@var{ESCAPE}, +@var{LFD}, +@var{NEWLINE}, +@var{RET}, +@var{RETURN}, +@var{RUBOUT}, +@var{SPACE}, +@var{SPC}, +and +@var{TAB}. + +@item @w{"@var{keyseq}": @var{function-name} or @var{macro}} +@var{keyseq} differs from @var{keyname} above in that strings +denoting an entire key sequence can be specified, by placing +the key sequence in double quotes. Some @sc{gnu} Emacs style key +escapes can be used, as in the following example, but the +special character names are not recognized. + +@example +"\C-u": universal-argument +"\C-x\C-r": re-read-init-file +"\e[11~": "Function Key 1" +@end example + +In the above example, @kbd{C-u} is again bound to the function +@code{universal-argument} (just as it was in the first example), +@samp{@kbd{C-x} @kbd{C-r}} is bound to the function @code{re-read-init-file}, +and @samp{@key{ESC} @key{[} @key{1} @key{1} @key{~}} is bound to insert +the text @samp{Function Key 1}. + +@end table + +The following @sc{gnu} Emacs style escape sequences are available when +specifying key sequences: + +@table @code +@item @kbd{\C-} +control prefix +@item @kbd{\M-} +meta prefix +@item @kbd{\e} +an escape character +@item @kbd{\\} +backslash +@item @kbd{\"} +@key{"}, a double quotation mark +@item @kbd{\'} +@key{'}, a single quote or apostrophe +@end table + +In addition to the @sc{gnu} Emacs style escape sequences, a second +set of backslash escapes is available: + +@table @code +@item \a +alert (bell) +@item \b +backspace +@item \d +delete +@item \f +form feed +@item \n +newline +@item \r +carriage return +@item \t +horizontal tab +@item \v +vertical tab +@item \@var{nnn} +the eight-bit character whose value is the octal value @var{nnn} +(one to three digits) +@item \x@var{HH} +the eight-bit character whose value is the hexadecimal value @var{HH} +(one or two hex digits) +@end table + +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 @samp{"} and @samp{'}. +For example, the following binding will make @samp{@kbd{C-x} \} +insert a single @samp{\} into the line: +@example +"\C-x\\": "\\" +@end example + +@end table + +@node Conditional Init Constructs +@subsection Conditional Init 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. + +@table @code +@item $if +The @code{$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, after any comparison operator, +extends to the end of the line; +unless otherwise noted, no characters are required to isolate it. + +@table @code +@item mode +The @code{mode=} form of the @code{$if} directive is used to test +whether Readline is in @code{emacs} or @code{vi} mode. +This may be used in conjunction +with the @samp{set keymap} command, for instance, to set bindings in +the @code{emacs-standard} and @code{emacs-ctlx} keymaps only if +Readline is starting out in @code{emacs} mode. + +@item term +The @code{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 +@samp{=} is tested against both the full name of the terminal and +the portion of the terminal name before the first @samp{-}. This +allows @code{sun} to match both @code{sun} and @code{sun-cmd}, +for instance. + +@item version +The @code{version} test may be used to perform comparisons against +specific Readline versions. +The @code{version} expands to the current Readline version. +The set of comparison operators includes +@samp{=} (and @samp{==}), @samp{!=}, @samp{<=}, @samp{>=}, @samp{<}, +and @samp{>}. +The version number supplied on the right side of the operator consists +of a major version number, an optional decimal point, and an optional +minor version (e.g., @samp{7.1}). If the minor version is omitted, it +is assumed to be @samp{0}. +The operator may be separated from the string @code{version} and +from the version number argument by whitespace. +The following example sets a variable if the Readline version being used +is 7.0 or newer: +@example +$if version >= 7.0 +set show-mode-in-prompt on +$endif +@end example + +@item application +The @var{application} construct is used to include +application-specific settings. Each program using the Readline +library sets the @var{application name}, and you 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: +@example +$if Bash +# Quote the current or previous word +"\C-xq": "\eb\"\ef\"" +$endif +@end example + +@item variable +The @var{variable} construct provides simple equality tests for Readline +variables and values. +The permitted comparison operators are @samp{=}, @samp{==}, and @samp{!=}. +The variable name must be separated from the comparison operator by +whitespace; the operator may be separated from the value on the right hand +side by whitespace. +Both string and boolean variables may be tested. Boolean variables must be +tested against the values @var{on} and @var{off}. +The following example is equivalent to the @code{mode=emacs} test described +above: +@example +$if editing-mode == emacs +set show-mode-in-prompt on +$endif +@end example +@end table + +@item $endif +This command, as seen in the previous example, terminates an +@code{$if} command. + +@item $else +Commands in this branch of the @code{$if} directive are executed if +the test fails. + +@item $include +This directive takes a single filename as an argument and reads commands +and bindings from that file. +For example, the following directive reads from @file{/etc/inputrc}: +@example +$include /etc/inputrc +@end example +@end table + +@node Sample Init File +@subsection Sample Init File + +Here is an example of an @var{inputrc} file. This illustrates key +binding, variable assignment, and conditional syntax. + +@example +@page +# This file controls the behaviour of line input editing for +# programs that use the GNU Readline library. Existing +# programs include FTP, Bash, and GDB. +# +# You can re-read the inputrc file with C-x C-r. +# Lines beginning with '#' are comments. +# +# First, include any system-wide bindings and variable +# assignments from /etc/Inputrc +$include /etc/Inputrc + +# +# Set various bindings for emacs mode. + +set editing-mode emacs + +$if mode=emacs + +Meta-Control-h: backward-kill-word Text after the function name is ignored + +# +# Arrow keys in keypad mode +# +#"\M-OD": backward-char +#"\M-OC": forward-char +#"\M-OA": previous-history +#"\M-OB": next-history +# +# Arrow keys in ANSI mode +# +"\M-[D": backward-char +"\M-[C": forward-char +"\M-[A": previous-history +"\M-[B": next-history +# +# Arrow keys in 8 bit keypad mode +# +#"\M-\C-OD": backward-char +#"\M-\C-OC": forward-char +#"\M-\C-OA": previous-history +#"\M-\C-OB": next-history +# +# Arrow keys in 8 bit ANSI mode +# +#"\M-\C-[D": backward-char +#"\M-\C-[C": forward-char +#"\M-\C-[A": previous-history +#"\M-\C-[B": next-history + +C-q: quoted-insert + +$endif + +# An old-style binding. This happens to be the default. +TAB: complete + +# Macros that are convenient for shell interaction +$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" +# insert a backslash (testing backslash escapes +# in sequences and macros) +"\C-x\\": "\\" +# Quote the current or previous word +"\C-xq": "\eb\"\ef\"" +# Add a binding to refresh the line, which is unbound +"\C-xr": redraw-current-line +# Edit variable on current line. +"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y=" +$endif + +# use a visible bell if one is available +set bell-style visible + +# don't strip characters to 7 bits when reading +set input-meta on + +# allow iso-latin1 characters to be inserted rather +# than converted to prefix-meta sequences +set convert-meta off + +# display characters with the eighth bit set directly +# rather than as meta-prefixed characters +set output-meta on + +# if there are 150 or more possible completions for a word, +# ask whether or not the user wants to see all of them +set completion-query-items 150 + +# For FTP +$if Ftp +"\C-xg": "get \M-?" +"\C-xt": "put \M-?" +"\M-.": yank-last-arg +$endif +@end example + +@node Bindable Readline Commands +@section Bindable Readline Commands + +@menu +* Commands For Moving:: Moving about the line. +* Commands For History:: Getting at previous lines. +* Commands For Text:: Commands for changing text. +* Commands For Killing:: Commands for killing and yanking. +* Numeric Arguments:: Specifying numeric arguments, repeat counts. +* Commands For Completion:: Getting Readline to do the typing for you. +* Keyboard Macros:: Saving and re-executing typed characters +* Miscellaneous Commands:: Other miscellaneous commands. +@end menu + +This section describes Readline commands that may be bound to key +sequences. +@ifset BashFeatures +You can list your key bindings by executing +@w{@code{bind -P}} or, for a more terse format, suitable for an +@var{inputrc} file, @w{@code{bind -p}}. (@xref{Bash Builtins}.) +@end ifset +Command names without an accompanying key sequence are unbound by default. + +In the following descriptions, @dfn{point} refers to the current cursor +position, and @dfn{mark} refers to a cursor position saved by the +@code{set-mark} command. +The text between the point and mark is referred to as the @dfn{region}. + +@node Commands For Moving +@subsection Commands For Moving +@ftable @code +@item beginning-of-line (C-a) +Move to the start of the current line. + +@item end-of-line (C-e) +Move to the end of the line. + +@item forward-char (C-f) +Move forward a character. + +@item backward-char (C-b) +Move back a character. + +@item forward-word (M-f) +Move forward to the end of the next word. +Words are composed of letters and digits. + +@item backward-word (M-b) +Move back to the start of the current or previous word. +Words are composed of letters and digits. + +@ifset BashFeatures +@item shell-forward-word (M-C-f) +Move forward to the end of the next word. +Words are delimited by non-quoted shell metacharacters. + +@item shell-backward-word (M-C-b) +Move back to the start of the current or previous word. +Words are delimited by non-quoted shell metacharacters. +@end ifset + +@item previous-screen-line () +Attempt to move point to the same physical screen column on the previous +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if point is not +greater than the length of the prompt plus the screen width. + +@item next-screen-line () +Attempt to move point to the same physical screen column on the next +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if the length +of the current Readline line is not greater than the length of the prompt +plus the screen width. + +@item clear-display (M-C-l) +Clear the screen and, if possible, the terminal's scrollback buffer, +then redraw the current line, +leaving the current line at the top of the screen. + +@item clear-screen (C-l) +Clear the screen, +then redraw the current line, +leaving the current line at the top of the screen. + +@item redraw-current-line () +Refresh the current line. By default, this is unbound. + +@end ftable + +@node Commands For History +@subsection Commands For Manipulating The History + +@ftable @code +@item accept-line (Newline or Return) +@ifset BashFeatures +Accept the line regardless of where the cursor is. +If this line is +non-empty, add it to the history list according to the setting of +the @env{HISTCONTROL} and @env{HISTIGNORE} variables. +If this line is a modified history line, then restore the history line +to its original state. +@end ifset +@ifclear BashFeatures +Accept the line regardless of where the cursor is. +If this line is +non-empty, it may be added to the history list for future recall with +@code{add_history()}. +If this line is a modified history line, the history line is restored +to its original state. +@end ifclear + +@item previous-history (C-p) +Move `back' through the history list, fetching the previous command. + +@item next-history (C-n) +Move `forward' through the history list, fetching the next command. + +@item beginning-of-history (M-<) +Move to the first line in the history. + +@item end-of-history (M->) +Move to the end of the input history, i.e., the line currently +being entered. + +@item 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. +This command sets the region to the matched text and activates the mark. + +@item 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. +This command sets the region to the matched text and activates the mark. + +@item non-incremental-reverse-search-history (M-p) +Search backward starting at the current line and moving `up' +through the history as necessary using a non-incremental search +for a string supplied by the user. +The search string may match anywhere in a history line. + +@item non-incremental-forward-search-history (M-n) +Search forward starting at the current line and moving `down' +through the history as necessary using a non-incremental search +for a string supplied by the user. +The search string may match anywhere in a history line. + +@item history-search-forward () +Search forward through the history for the string of characters +between the start of the current line and the point. +The search string must match at the beginning of a history line. +This is a non-incremental search. +By default, this command is unbound. + +@item history-search-backward () +Search backward through the history for the string of characters +between the start of the current line and the point. +The search string must match at the beginning of a history line. +This is a non-incremental search. +By default, this command is unbound. + +@item history-substring-search-forward () +Search forward through the history for the string of characters +between the start of the current line and the point. +The search string may match anywhere in a history line. +This is a non-incremental search. +By default, this command is unbound. + +@item history-substring-search-backward () +Search backward through the history for the string of characters +between the start of the current line and the point. +The search string may match anywhere in a history line. +This is a non-incremental search. +By default, this command is unbound. + +@item 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 @var{n}, +insert the @var{n}th word from the previous command (the words +in the previous command begin with word 0). A negative argument +inserts the @var{n}th word from the end of the previous command. +Once the argument @var{n} is computed, the argument is extracted +as if the @samp{!@var{n}} history expansion had been specified. + +@item yank-last-arg (M-. or M-_) +Insert last argument to the previous command (the last word of the +previous history entry). +With a numeric argument, behave exactly like @code{yank-nth-arg}. +Successive calls to @code{yank-last-arg} move back through the history +list, inserting the last word (or the word specified by the argument to +the first call) of each line in turn. +Any numeric argument supplied to these successive calls determines +the direction to move through the history. A negative argument switches +the direction through the history (back or forward). +The history expansion facilities are used to extract the last argument, +as if the @samp{!$} history expansion had been specified. + +@item operate-and-get-next (C-o) +Accept the current line for return to the calling application as if a +newline had been entered, +and fetch the next line relative to the current line from the history +for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. + +@end ftable + +@node Commands For Text +@subsection Commands For Changing Text + +@ftable @code + +@item @i{end-of-file} (usually C-d) +The character indicating end-of-file as set, for example, by +@code{stty}. If this character is read when there are no characters +on the line, and point is at the beginning of the line, Readline +interprets it as the end of input and returns @sc{eof}. + +@item delete-char (C-d) +Delete the character at point. If this function is bound to the +same character as the tty @sc{eof} character, as @kbd{C-d} +commonly is, see above for the effects. + +@item backward-delete-char (Rubout) +Delete the character behind the cursor. A numeric argument means +to kill the characters instead of deleting them. + +@item forward-backward-delete-char () +Delete the character under the cursor, unless the cursor is at the +end of the line, in which case the character behind the cursor is +deleted. By default, this is not bound to a key. + +@item quoted-insert (C-q or C-v) +Add the next character typed to the line verbatim. This is +how to insert key sequences like @kbd{C-q}, for example. + +@ifclear BashFeatures +@item tab-insert (M-@key{TAB}) +Insert a tab character. +@end ifclear + +@item self-insert (a, b, A, 1, !, @dots{}) +Insert yourself. + +@item bracketed-paste-begin () +This function is intended to be bound to the "bracketed paste" escape +sequence sent by some terminals, and such a binding is assigned by default. +It allows Readline to insert the pasted text as a single unit without treating +each character as if it had been read from the keyboard. The characters +are inserted as if each one was bound to @code{self-insert} instead of +executing any editing commands. + +Bracketed paste sets the region (the characters between point and the mark) +to the inserted text. It uses the concept of an @emph{active mark}: when the +mark is active, Readline redisplay uses the terminal's standout mode to +denote the region. + +@item transpose-chars (C-t) +Drag the character before the cursor forward over +the character at the cursor, moving the +cursor forward as well. If the insertion point +is at the end of the line, then this +transposes the last two characters of the line. +Negative arguments have no effect. + +@item transpose-words (M-t) +Drag the word before point past the word after point, +moving point past that word as well. +If the insertion point is at the end of the line, this transposes +the last two words on the line. + +@item upcase-word (M-u) +Uppercase the current (or following) word. With a negative argument, +uppercase the previous word, but do not move the cursor. + +@item downcase-word (M-l) +Lowercase the current (or following) word. With a negative argument, +lowercase the previous word, but do not move the cursor. + +@item capitalize-word (M-c) +Capitalize the current (or following) word. With a negative argument, +capitalize the previous word, but do not move the cursor. + +@item 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 +@code{emacs} mode; @code{vi} mode does overwrite differently. +Each call to @code{readline()} starts in insert mode. + +In overwrite mode, characters bound to @code{self-insert} replace +the text at point rather than pushing the text to the right. +Characters bound to @code{backward-delete-char} replace the character +before point with a space. + +By default, this command is unbound. + +@end ftable + +@node Commands For Killing +@subsection Killing And Yanking + +@ftable @code + +@item kill-line (C-k) +Kill the text from point to the end of the line. +With a negative numeric argument, kill backward from the cursor to the +beginning of the current line. + +@item backward-kill-line (C-x Rubout) +Kill backward from the cursor to the beginning of the current line. +With a negative numeric argument, kill forward from the cursor to the +end of the current line. + +@item unix-line-discard (C-u) +Kill backward from the cursor to the beginning of the current line. + +@item kill-whole-line () +Kill all characters on the current line, no matter where point is. +By default, this is unbound. + +@item 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 @code{forward-word}. + +@item backward-kill-word (M-@key{DEL}) +Kill the word behind point. +Word boundaries are the same as @code{backward-word}. + +@ifset BashFeatures +@item shell-kill-word (M-C-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 @code{shell-forward-word}. + +@item shell-backward-kill-word () +Kill the word behind point. +Word boundaries are the same as @code{shell-backward-word}. +@end ifset + +@item shell-transpose-words (M-C-t) +Drag the word before point past the word after point, +moving point past that word as well. +If the insertion point is at the end of the line, this transposes +the last two words on the line. +Word boundaries are the same as @code{shell-forward-word} and +@code{shell-backward-word}. + +@item 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. + +@item 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. + +@item delete-horizontal-space () +Delete all spaces and tabs around point. By default, this is unbound. + +@item kill-region () +Kill the text in the current region. +By default, this command is unbound. + +@item copy-region-as-kill () +Copy the text in the region to the kill buffer, so it can be yanked +right away. By default, this command is unbound. + +@item copy-backward-word () +Copy the word before point to the kill buffer. +The word boundaries are the same as @code{backward-word}. +By default, this command is unbound. + +@item copy-forward-word () +Copy the word following point to the kill buffer. +The word boundaries are the same as @code{forward-word}. +By default, this command is unbound. + +@item yank (C-y) +Yank the top of the kill ring into the buffer at point. + +@item yank-pop (M-y) +Rotate the kill-ring, and yank the new top. You can only do this if +the prior command is @code{yank} or @code{yank-pop}. +@end ftable + +@node Numeric Arguments +@subsection Specifying Numeric Arguments +@ftable @code + +@item digit-argument (@kbd{M-0}, @kbd{M-1}, @dots{} @kbd{M--}) +Add this digit to the argument already accumulating, or start a new +argument. @kbd{M--} starts a negative argument. + +@item 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 @code{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 nor 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. +By default, this is not bound to a key. +@end ftable + +@node Commands For Completion +@subsection Letting Readline Type For You + +@ftable @code +@item complete (@key{TAB}) +Attempt to perform completion on the text before point. +The actual completion performed is application-specific. +@ifset BashFeatures +Bash attempts completion treating the text as a variable (if the +text begins with @samp{$}), username (if the text begins with +@samp{~}), hostname (if the text begins with @samp{@@}), or +command (including aliases and functions) in turn. If none +of these produces a match, filename completion is attempted. +@end ifset +@ifclear BashFeatures +The default is filename completion. +@end ifclear + +@item possible-completions (M-?) +List the possible completions of the text before point. +When displaying completions, Readline sets the number of columns used +for display to the value of @code{completion-display-width}, the value of +the environment variable @env{COLUMNS}, or the screen width, in that order. + +@item insert-completions (M-*) +Insert all completions of the text before point that would have +been generated by @code{possible-completions}. + +@item menu-complete () +Similar to @code{complete}, but replaces the word to be completed +with a single match from the list of possible completions. +Repeated execution of @code{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 @code{bell-style}) +and the original text is restored. +An argument of @var{n} moves @var{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 @key{TAB}, but is unbound +by default. + +@item menu-complete-backward () +Identical to @code{menu-complete}, but moves backward through the list +of possible completions, as if @code{menu-complete} had been given a +negative argument. + +@item delete-char-or-list () +Deletes the character under the cursor if not at the beginning or +end of the line (like @code{delete-char}). +If at the end of the line, behaves identically to +@code{possible-completions}. +This command is unbound by default. + +@ifset BashFeatures +@item complete-filename (M-/) +Attempt filename completion on the text before point. + +@item possible-filename-completions (C-x /) +List the possible completions of the text before point, +treating it as a filename. + +@item complete-username (M-~) +Attempt completion on the text before point, treating +it as a username. + +@item possible-username-completions (C-x ~) +List the possible completions of the text before point, +treating it as a username. + +@item complete-variable (M-$) +Attempt completion on the text before point, treating +it as a shell variable. + +@item possible-variable-completions (C-x $) +List the possible completions of the text before point, +treating it as a shell variable. + +@item complete-hostname (M-@@) +Attempt completion on the text before point, treating +it as a hostname. + +@item possible-hostname-completions (C-x @@) +List the possible completions of the text before point, +treating it as a hostname. + +@item 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. + +@item possible-command-completions (C-x !) +List the possible completions of the text before point, +treating it as a command name. + +@item dynamic-complete-history (M-@key{TAB}) +Attempt completion on the text before point, comparing +the text against lines from the history list for possible +completion matches. + +@item dabbrev-expand () +Attempt menu completion on the text before point, comparing +the text against lines from the history list for possible +completion matches. + +@item 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 +(@pxref{Brace Expansion}). + +@end ifset +@end ftable + +@node Keyboard Macros +@subsection Keyboard Macros +@ftable @code + +@item start-kbd-macro (C-x () +Begin saving the characters typed into the current keyboard macro. + +@item end-kbd-macro (C-x )) +Stop saving the characters typed into the current keyboard macro +and save the definition. + +@item 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. + +@item print-last-kbd-macro () +Print the last keboard macro defined in a format suitable for the +@var{inputrc} file. + +@end ftable + +@node Miscellaneous Commands +@subsection Some Miscellaneous Commands +@ftable @code + +@item re-read-init-file (C-x C-r) +Read in the contents of the @var{inputrc} file, and incorporate +any bindings or variable assignments found there. + +@item abort (C-g) +Abort the current editing command and +ring the terminal's bell (subject to the setting of +@code{bell-style}). + +@item do-lowercase-version (M-A, M-B, M-@var{x}, @dots{}) +If the metafied character @var{x} is upper case, run the command +that is bound to the corresponding metafied lower case character. +The behavior is undefined if @var{x} is already lower case. + +@item prefix-meta (@key{ESC}) +Metafy the next character typed. This is for keyboards +without a meta key. Typing @samp{@key{ESC} f} is equivalent to typing +@kbd{M-f}. + +@item undo (C-_ or C-x C-u) +Incremental undo, separately remembered for each line. + +@item revert-line (M-r) +Undo all changes made to this line. This is like executing the @code{undo} +command enough times to get back to the beginning. + +@ifset BashFeatures +@item tilde-expand (M-&) +@end ifset +@ifclear BashFeatures +@item tilde-expand (M-~) +@end ifclear +Perform tilde expansion on the current word. + +@item set-mark (C-@@) +Set the mark to the point. If a +numeric argument is supplied, the mark is set to that position. + +@item 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. + +@item 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. + +@item 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. + +@item skip-csi-sequence () +Read enough characters to consume a multi-key sequence such as those +defined for keys like Home and End. Such sequences begin with a +Control Sequence Indicator (CSI), usually ESC-[. If this sequence is +bound to "\e[", keys producing such sequences will have no effect +unless explicitly bound to a readline command, instead of inserting +stray characters into the editing buffer. This is unbound by default, +but usually bound to ESC-[. + +@item insert-comment (M-#) +Without a numeric argument, the value of the @code{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 @code{comment-begin}, the value is inserted, otherwise +the characters in @code{comment-begin} are deleted from the beginning of +the line. +In either case, the line is accepted as if a newline had been typed. +@ifset BashFeatures +The default value of @code{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. +@end ifset + +@item 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 @var{inputrc} file. This command is unbound by default. + +@item dump-variables () +Print all of the settable variables and their values to the +Readline output stream. If a numeric argument is supplied, +the output is formatted in such a way that it can be made part +of an @var{inputrc} file. This command is unbound by default. + +@item 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 @var{inputrc} file. This command is unbound by default. + +@ifset BashFeatures +@item 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. + +@item glob-expand-word (C-x *) +The word before point is treated as a pattern for pathname expansion, +and the list of matching file names is inserted, replacing the word. +If a numeric argument is supplied, a @samp{*} is appended before +pathname expansion. + +@item glob-list-expansions (C-x g) +The list of expansions that would have been generated by +@code{glob-expand-word} is displayed, and the line is redrawn. +If a numeric argument is supplied, a @samp{*} is appended before +pathname expansion. + +@item display-shell-version (C-x C-v) +Display version information about the current instance of Bash. + +@item 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 (@pxref{Shell Expansions}). + +@item history-expand-line (M-^) +Perform history expansion on the current line. + +@item magic-space () +Perform history expansion on the current line and insert a space +(@pxref{History Interaction}). + +@item alias-expand-line () +Perform alias expansion on the current line (@pxref{Aliases}). + +@item history-and-alias-expand-line () +Perform history and alias expansion on the current line. + +@item insert-last-argument (M-. or M-_) +A synonym for @code{yank-last-arg}. + +@item edit-and-execute-command (C-x C-e) +Invoke an editor on the current command line, and execute the result as shell +commands. +Bash attempts to invoke +@code{$VISUAL}, @code{$EDITOR}, and @code{emacs} +as the editor, in that order. + +@end ifset + +@ifclear BashFeatures +@item emacs-editing-mode (C-e) +When in @code{vi} command mode, this causes a switch to @code{emacs} +editing mode. + +@item vi-editing-mode (M-C-j) +When in @code{emacs} editing mode, this causes a switch to @code{vi} +editing mode. + +@end ifclear + +@end ftable + +@node Readline vi Mode +@section Readline vi Mode + +While the Readline library does not have a full set of @code{vi} +editing functions, it does contain enough to allow simple editing +of the line. The Readline @code{vi} mode behaves as specified in +the @sc{posix} standard. + +@ifset BashFeatures +In order to switch interactively between @code{emacs} and @code{vi} +editing modes, use the @samp{set -o emacs} and @samp{set -o vi} +commands (@pxref{The Set Builtin}). +@end ifset +@ifclear BashFeatures +In order to switch interactively between @code{emacs} and @code{vi} +editing modes, use the command @kbd{M-C-j} (bound to emacs-editing-mode +when in @code{vi} mode and to vi-editing-mode in @code{emacs} mode). +@end ifclear +The Readline default is @code{emacs} mode. + +When you enter a line in @code{vi} mode, you are already placed in +`insertion' mode, as if you had typed an @samp{i}. Pressing @key{ESC} +switches you into `command' mode, where you can edit the text of the +line with the standard @code{vi} movement keys, move to previous +history lines with @samp{k} and subsequent lines with @samp{j}, and +so forth. + +@ifset BashFeatures +@node Programmable Completion +@section Programmable Completion +@cindex programmable completion + +When word completion is attempted for an argument to a command for +which a completion specification (a @var{compspec}) has been defined +using the @code{complete} builtin (@pxref{Programmable Completion Builtins}), +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 the empty string (completion attempted at the +beginning of an empty line), any compspec defined with +the @option{-E} option to @code{complete} is used. +If the command word is a full pathname, a compspec for the full +pathname is searched for first. +If no compspec is found for the full pathname, an attempt is made to +find a compspec for the portion following the final slash. +If those searches do not result in a compspec, any compspec defined with +the @option{-D} option to @code{complete} is used as the default. +If there is no default compspec, Bash attempts alias expansion +on the command word as a final resort, and attempts to find a compspec +for the command word from any successful expansion + +Once a compspec has been found, it is used to generate the list of +matching words. +If a compspec is not found, the default Bash completion +described above (@pxref{Commands For Completion}) 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 @option{-f} or @option{-d} option is used for filename or +directory name completion, the shell variable @env{FIGNORE} is +used to filter the matches. +@xref{Bash Variables}, for a description of @env{FIGNORE}. + +Any completions specified by a filename expansion pattern to the +@option{-G} option are generated next. +The words generated by the pattern need not match the word being completed. +The @env{GLOBIGNORE} shell variable is not used to filter the matches, +but the @env{FIGNORE} shell variable is used. + +Next, the string specified as the argument to the @option{-W} option +is considered. +The string is first split using the characters in the @env{IFS} +special variable as delimiters. +Shell quoting is honored within the string, in order to provide a +mechanism for the words to contain shell metacharacters or characters +in the value of @env{IFS}. +Each word is then expanded using +brace expansion, tilde expansion, parameter and variable expansion, +command substitution, and arithmetic expansion, +as described above (@pxref{Shell Expansions}). +The results are split using the rules described above +(@pxref{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 @option{-F} and @option{-C} options is invoked. +When the command or function is invoked, the @env{COMP_LINE}, +@env{COMP_POINT}, @env{COMP_KEY}, and @env{COMP_TYPE} variables are +assigned values as described above (@pxref{Bash Variables}). +If a shell function is being invoked, the @env{COMP_WORDS} and +@env{COMP_CWORD} variables are also set. +When the function or command is invoked, the first argument ($1) is the +name of the command whose arguments are being completed, the +second argument ($2) is the word being completed, and the third argument +($3) is the word preceding the word being completed on the current command +line. +No filtering of the generated completions against the word being completed +is performed; the function or command has complete freedom in generating +the matches. + +Any function specified with @option{-F} is invoked first. +The function may use any of the shell facilities, including the +@code{compgen} and @code{compopt} builtins described below +(@pxref{Programmable Completion Builtins}), to generate the matches. +It must put the possible completions in the @env{COMPREPLY} array +variable, one per array element. + +Next, any command specified with the @option{-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 @option{-X} option is applied to the list. +The filter is a pattern as used for pathname expansion; a @samp{&} +in the pattern is replaced with the text of the word being completed. +A literal @samp{&} 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 @samp{!} negates the pattern; in this case any completion +not matching the pattern will be removed. +If the @code{nocasematch} shell option +(see the description of @code{shopt} in @ref{The Shopt Builtin}) +is enabled, the match is performed without regard to the case +of alphabetic characters. + +Finally, any prefix and suffix specified with the @option{-P} and @option{-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 +@option{-o dirnames} option was supplied to @code{complete} when the +compspec was defined, directory name completion is attempted. + +If the @option{-o plusdirs} option was supplied to @code{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 @option{-o bashdefault} option was supplied to @code{complete} when +the compspec was defined, the default Bash completions are attempted +if the compspec generates no matches. +If the @option{-o default} option was supplied to @code{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 @var{mark-directories} Readline variable, regardless +of the setting of the @var{mark-symlinked-directories} Readline variable. + +There is some support for dynamically modifying completions. This is +most useful when used in combination with a default completion specified +with @option{-D}. It's possible for shell functions executed as completion +handlers to indicate that completion should be retried by returning an +exit status of 124. If a shell function returns 124, and changes +the compspec associated with the command on which completion is being +attempted (supplied as the first argument when the function is executed), +programmable completion restarts from the beginning, with an +attempt to find a new compspec for that command. This allows a set of +completions to be built dynamically as completion is attempted, rather than +being loaded all at once. + +For instance, assuming that there is a library of compspecs, each kept in a +file corresponding to the name of the command, the following default +completion function would load completions dynamically: + +@example +_completion_loader() +@{ + . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 +@} +complete -D -F _completion_loader -o bashdefault -o default +@end example + +@node Programmable Completion Builtins +@section Programmable Completion Builtins +@cindex completion builtins + +Three builtin commands are available to manipulate the programmable completion +facilities: one to specify how the arguments to a particular command are to +be completed, and two to modify the completion as it is happening. + +@table @code +@item compgen +@btindex compgen +@example +@code{compgen [@var{option}] [@var{word}]} +@end example + +Generate possible completion matches for @var{word} according to +the @var{option}s, which may be any option accepted by the +@code{complete} +builtin with the exception of @option{-p} and @option{-r}, and write +the matches to the standard output. +When using the @option{-F} or @option{-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 @var{word} is specified, only those completions matching @var{word} +will be displayed. + +The return value is true unless an invalid option is supplied, or no +matches were generated. + +@item complete +@btindex complete +@example +@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DEI] [-A @var{action}] [-G @var{globpat}] +[-W @var{wordlist}] [-F @var{function}] [-C @var{command}] [-X @var{filterpat}] +[-P @var{prefix}] [-S @var{suffix}] @var{name} [@var{name} @dots{}]} +@code{complete -pr [-DEI] [@var{name} @dots{}]} +@end example + +Specify how arguments to each @var{name} should be completed. +If the @option{-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 @option{-r} option removes a completion specification for +each @var{name}, or, if no @var{name}s are supplied, all +completion specifications. +The @option{-D} option indicates that other supplied options and actions should +apply to the ``default'' command completion; that is, completion attempted +on a command for which no completion has previously been defined. +The @option{-E} option indicates that other supplied options and actions should +apply to ``empty'' command completion; that is, completion attempted on a +blank line. +The @option{-I} option indicates that other supplied options and actions should +apply to completion on the initial non-assignment word on the line, or after a +command delimiter such as @samp{;} or @samp{|}, which is usually command +name completion. +If multiple options are supplied, the @option{-D} option takes precedence +over @option{-E}, and both take precedence over @option{-I}. +If any of @option{-D}, @option{-E}, or @option{-I} are supplied, any other +@var{name} arguments are ignored; these completions only apply to the case +specified by the option. + +The process of applying these completion specifications when word completion +is attempted is described above (@pxref{Programmable Completion}). + +Other options, if specified, have the following meanings. +The arguments to the @option{-G}, @option{-W}, and @option{-X} options +(and, if necessary, the @option{-P} and @option{-S} options) +should be quoted to protect them from expansion before the +@code{complete} builtin is invoked. + + +@table @code +@item -o @var{comp-option} +The @var{comp-option} controls several aspects of the compspec's behavior +beyond the simple generation of completions. +@var{comp-option} may be one of: + +@table @code + +@item bashdefault +Perform the rest of the default Bash completions if the compspec +generates no matches. + +@item default +Use Readline's default filename completion if the compspec generates +no matches. + +@item dirnames +Perform directory name completion if the compspec generates no matches. + +@item filenames +Tell Readline that the compspec generates filenames, so it can perform any +filename-specific processing (like adding a slash to directory names, +quoting special characters, or suppressing trailing spaces). +This option is intended to be used with shell functions specified +with @option{-F}. + +@item noquote +Tell Readline not to quote the completed words if they are filenames +(quoting filenames is the default). + +@item nosort +Tell Readline not to sort the list of possible completions alphabetically. + +@item nospace +Tell Readline not to append a space (the default) to words completed at +the end of the line. + +@item 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. + +@end table + +@item -A @var{action} +The @var{action} may be one of the following to generate a list of possible +completions: + +@table @code +@item alias +Alias names. May also be specified as @option{-a}. + +@item arrayvar +Array variable names. + +@item binding +Readline key binding names (@pxref{Bindable Readline Commands}). + +@item builtin +Names of shell builtin commands. May also be specified as @option{-b}. + +@item command +Command names. May also be specified as @option{-c}. + +@item directory +Directory names. May also be specified as @option{-d}. + +@item disabled +Names of disabled shell builtins. + +@item enabled +Names of enabled shell builtins. + +@item export +Names of exported shell variables. May also be specified as @option{-e}. + +@item file +File names. May also be specified as @option{-f}. + +@item function +Names of shell functions. + +@item group +Group names. May also be specified as @option{-g}. + +@item helptopic +Help topics as accepted by the @code{help} builtin (@pxref{Bash Builtins}). + +@item hostname +Hostnames, as taken from the file specified by the +@env{HOSTFILE} shell variable (@pxref{Bash Variables}). + +@item job +Job names, if job control is active. May also be specified as @option{-j}. + +@item keyword +Shell reserved words. May also be specified as @option{-k}. + +@item running +Names of running jobs, if job control is active. + +@item service +Service names. May also be specified as @option{-s}. + +@item setopt +Valid arguments for the @option{-o} option to the @code{set} builtin +(@pxref{The Set Builtin}). + +@item shopt +Shell option names as accepted by the @code{shopt} builtin +(@pxref{Bash Builtins}). + +@item signal +Signal names. + +@item stopped +Names of stopped jobs, if job control is active. + +@item user +User names. May also be specified as @option{-u}. + +@item variable +Names of all shell variables. May also be specified as @option{-v}. +@end table + +@item -C @var{command} +@var{command} is executed in a subshell environment, and its output is +used as the possible completions. + +@item -F @var{function} +The shell function @var{function} is executed in the current shell +environment. +When it is executed, $1 is the name of the command whose arguments are +being completed, $2 is the word being completed, and $3 is the word +preceding the word being completed, as described above +(@pxref{Programmable Completion}). +When it finishes, the possible completions are retrieved from the value +of the @env{COMPREPLY} array variable. + +@item -G @var{globpat} +The filename expansion pattern @var{globpat} is expanded to generate +the possible completions. + +@item -P @var{prefix} +@var{prefix} is added at the beginning of each possible completion +after all other options have been applied. + +@item -S @var{suffix} +@var{suffix} is appended to each possible completion +after all other options have been applied. + +@item -W @var{wordlist} +The @var{wordlist} is split using the characters in the +@env{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. + +@item -X @var{filterpat} +@var{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 +@var{filterpat} is removed from the list. +A leading @samp{!} in @var{filterpat} negates the pattern; in this +case, any completion not matching @var{filterpat} is removed. +@end table + +The return value is true unless an invalid option is supplied, an option +other than @option{-p} or @option{-r} is supplied without a @var{name} +argument, an attempt is made to remove a completion specification for +a @var{name} for which no specification exists, or +an error occurs adding a completion specification. + +@item compopt +@btindex compopt +@example +@code{compopt} [-o @var{option}] [-DEI] [+o @var{option}] [@var{name}] +@end example +Modify completion options for each @var{name} according to the +@var{option}s, or for the currently-executing completion if no @var{name}s +are supplied. +If no @var{option}s are given, display the completion options for each +@var{name} or the current completion. +The possible values of @var{option} are those valid for the @code{complete} +builtin described above. +The @option{-D} option indicates that other supplied options should +apply to the ``default'' command completion; that is, completion attempted +on a command for which no completion has previously been defined. +The @option{-E} option indicates that other supplied options should +apply to ``empty'' command completion; that is, completion attempted on a +blank line. +The @option{-I} option indicates that other supplied options should +apply to completion on the initial non-assignment word on the line, or after a +command delimiter such as @samp{;} or @samp{|}, which is usually command +name completion. + +If multiple options are supplied, the @option{-D} option takes precedence +over @option{-E}, and both take precedence over @option{-I} + +The return value is true unless an invalid option is supplied, an attempt +is made to modify the options for a @var{name} for which no completion +specification exists, or an output error occurs. + +@end table + +@node A Programmable Completion Example +@section A Programmable Completion Example + +The most common way to obtain additional completion functionality beyond +the default actions @code{complete} and @code{compgen} provide is to use +a shell function and bind it to a particular command using @code{complete -F}. + +The following function provides completions for the @code{cd} builtin. +It is a reasonably good example of what shell functions must do when +used for completion. This function uses the word passed as @code{$2} +to determine the directory name to complete. You can also use the +@code{COMP_WORDS} array variable; the current word is indexed by the +@code{COMP_CWORD} variable. + +The function relies on the @code{complete} and @code{compgen} builtins +to do much of the work, adding only the things that the Bash @code{cd} +does beyond accepting basic directory names: +tilde expansion (@pxref{Tilde Expansion}), +searching directories in @var{$CDPATH}, which is described above +(@pxref{Bourne Shell Builtins}), +and basic support for the @code{cdable_vars} shell option +(@pxref{The Shopt Builtin}). +@code{_comp_cd} modifies the value of @var{IFS} so that it contains only +a newline to accommodate file names containing spaces and tabs -- +@code{compgen} prints the possible completions it generates one per line. + +Possible completions go into the @var{COMPREPLY} array variable, one +completion per array element. The programmable completion system retrieves +the completions from there when the function returns. + +@example +# A completion function for the cd builtin +# based on the cd completion function from the bash_completion package +_comp_cd() +@{ + local IFS=$' \t\n' # normalize IFS + local cur _skipdot _cdpath + local i j k + + # Tilde expansion, which also expands tilde to full pathname + case "$2" in + \~*) eval cur="$2" ;; + *) cur=$2 ;; + esac + + # no cdpath or absolute pathname -- straight directory completion + if [[ -z "$@{CDPATH:-@}" ]] || [[ "$cur" == @@(./*|../*|/*) ]]; then + # compgen prints paths one per line; could also use while loop + IFS=$'\n' + COMPREPLY=( $(compgen -d -- "$cur") ) + IFS=$' \t\n' + # CDPATH+directories in the current directory if not in CDPATH + else + IFS=$'\n' + _skipdot=false + # preprocess CDPATH to convert null directory names to . + _cdpath=$@{CDPATH/#:/.:@} + _cdpath=$@{_cdpath//::/:.:@} + _cdpath=$@{_cdpath/%:/:.@} + for i in $@{_cdpath//:/$'\n'@}; do + if [[ $i -ef . ]]; then _skipdot=true; fi + k="$@{#COMPREPLY[@@]@}" + for j in $( compgen -d -- "$i/$cur" ); do + COMPREPLY[k++]=$@{j#$i/@} # cut off directory + done + done + $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") ) + IFS=$' \t\n' + fi + + # variable names if appropriate shell option set and no completions + if shopt -q cdable_vars && [[ $@{#COMPREPLY[@@]@} -eq 0 ]]; then + COMPREPLY=( $(compgen -v -- "$cur") ) + fi + + return 0 +@} +@end example + +We install the completion function using the @option{-F} option to +@code{complete}: + +@example +# Tell readline to quote appropriate and append slashes to directories; +# use the bash default completion for other arguments +complete -o filenames -o nospace -o bashdefault -F _comp_cd cd +@end example + +@noindent +Since we'd like Bash and Readline to take care of some +of the other details for us, we use several other options to tell Bash +and Readline what to do. The @option{-o filenames} option tells Readline +that the possible completions should be treated as filenames, and quoted +appropriately. That option will also cause Readline to append a slash to +filenames it can determine are directories (which is why we might want to +extend @code{_comp_cd} to append a slash if we're using directories found +via @var{CDPATH}: Readline can't tell those completions are directories). +The @option{-o nospace} option tells Readline to not append a space +character to the directory name, in case we want to append to it. +The @option{-o bashdefault} option brings in the rest of the "Bash default" +completions -- possible completion that Bash adds to the default Readline +set. These include things like command name completion, variable completion +for words beginning with @samp{$} or @samp{$@{}, completions containing pathname +expansion patterns (@pxref{Filename Expansion}), and so on. + +Once installed using @code{complete}, @code{_comp_cd} will be called every +time we attempt word completion for a @code{cd} command. + +Many more examples -- an extensive collection of completions for most of +the common GNU, Unix, and Linux commands -- are available as part of the +bash_completion project. This is installed by default on many GNU/Linux +distributions. Originally written by Ian Macdonald, the project now lives +at @url{https://github.com/scop/bash-completion/}. There are ports for +other systems such as Solaris and Mac OS X. + +An older version of the bash_completion package is distributed with bash +in the @file{examples/complete} subdirectory. + +@end ifset diff --git a/bash-5.1/lib/readline/doc/rluserman.texi b/bash-5.1/lib/readline/doc/rluserman.texi new file mode 100644 index 0000000..6e8e848 --- /dev/null +++ b/bash-5.1/lib/readline/doc/rluserman.texi @@ -0,0 +1,70 @@ +\input texinfo @c -*-texinfo-*- +@comment %**start of header (This is for running Texinfo on a region.) +@setfilename rluserman.info +@settitle GNU Readline Library +@include version.texi + +@comment %**end of header (This is for running Texinfo on a region.) + +@copying +This manual describes the end user interface of the GNU Readline Library +(version @value{VERSION}, @value{UPDATED}), a library which aids in the +consistency of user interface across discrete programs which provide +a command line interface. + +Copyright @copyright{} 1988--2020 Free Software Foundation, Inc. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +A copy of the license is included in the section entitled +``GNU Free Documentation License''. + +@end quotation +@end copying + +@dircategory Libraries +@direntry +* RLuserman: (rluserman). The GNU readline library User's Manual. +@end direntry + +@titlepage +@title GNU Readline Library User Interface +@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}. +@subtitle @value{UPDATED-MONTH} +@author Chet Ramey, Case Western Reserve University +@author Brian Fox, Free Software Foundation + +@page +@vskip 0pt plus 1filll +@insertcopying + +@end titlepage + +@contents + +@ifnottex +@node Top +@top GNU Readline Library + +This document describes the end user interface of the GNU Readline Library, +a utility which aids in the consistency of user interface across discrete +programs which provide a command line interface. +The Readline home page is @url{http://www.gnu.org/software/readline/}. + +@menu +* Command Line Editing:: GNU Readline User's Manual. +* GNU Free Documentation License:: License for copying this manual. +@end menu +@end ifnottex + +@include rluser.texi + +@node GNU Free Documentation License +@appendix GNU Free Documentation License + +@include fdl.texi + +@bye diff --git a/bash-5.1/lib/readline/doc/version.texi b/bash-5.1/lib/readline/doc/version.texi new file mode 100644 index 0000000..abb9cb6 --- /dev/null +++ b/bash-5.1/lib/readline/doc/version.texi @@ -0,0 +1,10 @@ +@ignore +Copyright (C) 1988-2020 Free Software Foundation, Inc. +@end ignore + +@set EDITION 8.1 +@set VERSION 8.1 +@set UPDATED 29 October 2020 +@set UPDATED-MONTH October 2020 + +@set LASTCHANGE Thu Oct 29 16:49:01 EDT 2020 diff --git a/bash-5.1/lib/readline/emacs_keymap.c b/bash-5.1/lib/readline/emacs_keymap.c new file mode 100644 index 0000000..02597da --- /dev/null +++ b/bash-5.1/lib/readline/emacs_keymap.c @@ -0,0 +1,872 @@ +/* emacs_keymap.c -- the keymap for emacs_mode in readline (). */ + +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (BUFSIZ) +#include +#endif /* !BUFSIZ */ + +#include "readline.h" + +/* An array of function pointers, one for each possible key. + If the type byte is ISKMAP, then the pointer is the address of + a keymap. */ + +KEYMAP_ENTRY_ARRAY emacs_standard_keymap = { + + /* Control keys. */ + { ISFUNC, rl_set_mark }, /* Control-@ */ + { ISFUNC, rl_beg_of_line }, /* Control-a */ + { ISFUNC, rl_backward_char }, /* Control-b */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */ + { ISFUNC, rl_delete }, /* Control-d */ + { ISFUNC, rl_end_of_line }, /* Control-e */ + { ISFUNC, rl_forward_char }, /* Control-f */ + { ISFUNC, rl_abort }, /* Control-g */ + { ISFUNC, rl_rubout }, /* Control-h */ + { ISFUNC, rl_complete }, /* Control-i */ + { ISFUNC, rl_newline }, /* Control-j */ + { ISFUNC, rl_kill_line }, /* Control-k */ + { ISFUNC, rl_clear_screen }, /* Control-l */ + { ISFUNC, rl_newline }, /* Control-m */ + { ISFUNC, rl_get_next_history }, /* Control-n */ + { ISFUNC, rl_operate_and_get_next }, /* Control-o */ + { ISFUNC, rl_get_previous_history }, /* Control-p */ + { ISFUNC, rl_quoted_insert }, /* Control-q */ + { ISFUNC, rl_reverse_search_history }, /* Control-r */ + { ISFUNC, rl_forward_search_history }, /* Control-s */ + { ISFUNC, rl_transpose_chars }, /* Control-t */ + { ISFUNC, rl_unix_line_discard }, /* Control-u */ + { ISFUNC, rl_quoted_insert }, /* Control-v */ + { ISFUNC, rl_unix_word_rubout }, /* Control-w */ + { ISKMAP, (rl_command_func_t *)emacs_ctlx_keymap }, /* Control-x */ + { ISFUNC, rl_yank }, /* Control-y */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */ + { ISKMAP, (rl_command_func_t *)emacs_meta_keymap }, /* Control-[ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */ + { ISFUNC, rl_char_search }, /* Control-] */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */ + { ISFUNC, rl_undo_command }, /* Control-_ */ + + /* The start of printing characters. */ + { ISFUNC, rl_insert }, /* SPACE */ + { ISFUNC, rl_insert }, /* ! */ + { ISFUNC, rl_insert }, /* " */ + { ISFUNC, rl_insert }, /* # */ + { ISFUNC, rl_insert }, /* $ */ + { ISFUNC, rl_insert }, /* % */ + { ISFUNC, rl_insert }, /* & */ + { ISFUNC, rl_insert }, /* ' */ + { ISFUNC, rl_insert }, /* ( */ + { ISFUNC, rl_insert }, /* ) */ + { ISFUNC, rl_insert }, /* * */ + { ISFUNC, rl_insert }, /* + */ + { ISFUNC, rl_insert }, /* , */ + { ISFUNC, rl_insert }, /* - */ + { ISFUNC, rl_insert }, /* . */ + { ISFUNC, rl_insert }, /* / */ + + /* Regular digits. */ + { ISFUNC, rl_insert }, /* 0 */ + { ISFUNC, rl_insert }, /* 1 */ + { ISFUNC, rl_insert }, /* 2 */ + { ISFUNC, rl_insert }, /* 3 */ + { ISFUNC, rl_insert }, /* 4 */ + { ISFUNC, rl_insert }, /* 5 */ + { ISFUNC, rl_insert }, /* 6 */ + { ISFUNC, rl_insert }, /* 7 */ + { ISFUNC, rl_insert }, /* 8 */ + { ISFUNC, rl_insert }, /* 9 */ + + /* A little more punctuation. */ + { ISFUNC, rl_insert }, /* : */ + { ISFUNC, rl_insert }, /* ; */ + { ISFUNC, rl_insert }, /* < */ + { ISFUNC, rl_insert }, /* = */ + { ISFUNC, rl_insert }, /* > */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* @ */ + + /* Uppercase alphabet. */ + { ISFUNC, rl_insert }, /* A */ + { ISFUNC, rl_insert }, /* B */ + { ISFUNC, rl_insert }, /* C */ + { ISFUNC, rl_insert }, /* D */ + { ISFUNC, rl_insert }, /* E */ + { ISFUNC, rl_insert }, /* F */ + { ISFUNC, rl_insert }, /* G */ + { ISFUNC, rl_insert }, /* H */ + { ISFUNC, rl_insert }, /* I */ + { ISFUNC, rl_insert }, /* J */ + { ISFUNC, rl_insert }, /* K */ + { ISFUNC, rl_insert }, /* L */ + { ISFUNC, rl_insert }, /* M */ + { ISFUNC, rl_insert }, /* N */ + { ISFUNC, rl_insert }, /* O */ + { ISFUNC, rl_insert }, /* P */ + { ISFUNC, rl_insert }, /* Q */ + { ISFUNC, rl_insert }, /* R */ + { ISFUNC, rl_insert }, /* S */ + { ISFUNC, rl_insert }, /* T */ + { ISFUNC, rl_insert }, /* U */ + { ISFUNC, rl_insert }, /* V */ + { ISFUNC, rl_insert }, /* W */ + { ISFUNC, rl_insert }, /* X */ + { ISFUNC, rl_insert }, /* Y */ + { ISFUNC, rl_insert }, /* Z */ + + /* Some more punctuation. */ + { ISFUNC, rl_insert }, /* [ */ + { ISFUNC, rl_insert }, /* \ */ + { ISFUNC, rl_insert }, /* ] */ + { ISFUNC, rl_insert }, /* ^ */ + { ISFUNC, rl_insert }, /* _ */ + { ISFUNC, rl_insert }, /* ` */ + + /* Lowercase alphabet. */ + { ISFUNC, rl_insert }, /* a */ + { ISFUNC, rl_insert }, /* b */ + { ISFUNC, rl_insert }, /* c */ + { ISFUNC, rl_insert }, /* d */ + { ISFUNC, rl_insert }, /* e */ + { ISFUNC, rl_insert }, /* f */ + { ISFUNC, rl_insert }, /* g */ + { ISFUNC, rl_insert }, /* h */ + { ISFUNC, rl_insert }, /* i */ + { ISFUNC, rl_insert }, /* j */ + { ISFUNC, rl_insert }, /* k */ + { ISFUNC, rl_insert }, /* l */ + { ISFUNC, rl_insert }, /* m */ + { ISFUNC, rl_insert }, /* n */ + { ISFUNC, rl_insert }, /* o */ + { ISFUNC, rl_insert }, /* p */ + { ISFUNC, rl_insert }, /* q */ + { ISFUNC, rl_insert }, /* r */ + { ISFUNC, rl_insert }, /* s */ + { ISFUNC, rl_insert }, /* t */ + { ISFUNC, rl_insert }, /* u */ + { ISFUNC, rl_insert }, /* v */ + { ISFUNC, rl_insert }, /* w */ + { ISFUNC, rl_insert }, /* x */ + { ISFUNC, rl_insert }, /* y */ + { ISFUNC, rl_insert }, /* z */ + + /* Final punctuation. */ + { ISFUNC, rl_insert }, /* { */ + { ISFUNC, rl_insert }, /* | */ + { ISFUNC, rl_insert }, /* } */ + { ISFUNC, rl_insert }, /* ~ */ + { ISFUNC, rl_rubout }, /* RUBOUT */ + +#if KEYMAP_SIZE > 128 + /* Pure 8-bit characters (128 - 159). + These might be used in some + character sets. */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + + /* ISO Latin-1 characters (160 - 255) */ + { ISFUNC, rl_insert }, /* No-break space */ + { ISFUNC, rl_insert }, /* Inverted exclamation mark */ + { ISFUNC, rl_insert }, /* Cent sign */ + { ISFUNC, rl_insert }, /* Pound sign */ + { ISFUNC, rl_insert }, /* Currency sign */ + { ISFUNC, rl_insert }, /* Yen sign */ + { ISFUNC, rl_insert }, /* Broken bar */ + { ISFUNC, rl_insert }, /* Section sign */ + { ISFUNC, rl_insert }, /* Diaeresis */ + { ISFUNC, rl_insert }, /* Copyright sign */ + { ISFUNC, rl_insert }, /* Feminine ordinal indicator */ + { ISFUNC, rl_insert }, /* Left pointing double angle quotation mark */ + { ISFUNC, rl_insert }, /* Not sign */ + { ISFUNC, rl_insert }, /* Soft hyphen */ + { ISFUNC, rl_insert }, /* Registered sign */ + { ISFUNC, rl_insert }, /* Macron */ + { ISFUNC, rl_insert }, /* Degree sign */ + { ISFUNC, rl_insert }, /* Plus-minus sign */ + { ISFUNC, rl_insert }, /* Superscript two */ + { ISFUNC, rl_insert }, /* Superscript three */ + { ISFUNC, rl_insert }, /* Acute accent */ + { ISFUNC, rl_insert }, /* Micro sign */ + { ISFUNC, rl_insert }, /* Pilcrow sign */ + { ISFUNC, rl_insert }, /* Middle dot */ + { ISFUNC, rl_insert }, /* Cedilla */ + { ISFUNC, rl_insert }, /* Superscript one */ + { ISFUNC, rl_insert }, /* Masculine ordinal indicator */ + { ISFUNC, rl_insert }, /* Right pointing double angle quotation mark */ + { ISFUNC, rl_insert }, /* Vulgar fraction one quarter */ + { ISFUNC, rl_insert }, /* Vulgar fraction one half */ + { ISFUNC, rl_insert }, /* Vulgar fraction three quarters */ + { ISFUNC, rl_insert }, /* Inverted questionk mark */ + { ISFUNC, rl_insert }, /* Latin capital letter a with grave */ + { ISFUNC, rl_insert }, /* Latin capital letter a with acute */ + { ISFUNC, rl_insert }, /* Latin capital letter a with circumflex */ + { ISFUNC, rl_insert }, /* Latin capital letter a with tilde */ + { ISFUNC, rl_insert }, /* Latin capital letter a with diaeresis */ + { ISFUNC, rl_insert }, /* Latin capital letter a with ring above */ + { ISFUNC, rl_insert }, /* Latin capital letter ae */ + { ISFUNC, rl_insert }, /* Latin capital letter c with cedilla */ + { ISFUNC, rl_insert }, /* Latin capital letter e with grave */ + { ISFUNC, rl_insert }, /* Latin capital letter e with acute */ + { ISFUNC, rl_insert }, /* Latin capital letter e with circumflex */ + { ISFUNC, rl_insert }, /* Latin capital letter e with diaeresis */ + { ISFUNC, rl_insert }, /* Latin capital letter i with grave */ + { ISFUNC, rl_insert }, /* Latin capital letter i with acute */ + { ISFUNC, rl_insert }, /* Latin capital letter i with circumflex */ + { ISFUNC, rl_insert }, /* Latin capital letter i with diaeresis */ + { ISFUNC, rl_insert }, /* Latin capital letter eth (Icelandic) */ + { ISFUNC, rl_insert }, /* Latin capital letter n with tilde */ + { ISFUNC, rl_insert }, /* Latin capital letter o with grave */ + { ISFUNC, rl_insert }, /* Latin capital letter o with acute */ + { ISFUNC, rl_insert }, /* Latin capital letter o with circumflex */ + { ISFUNC, rl_insert }, /* Latin capital letter o with tilde */ + { ISFUNC, rl_insert }, /* Latin capital letter o with diaeresis */ + { ISFUNC, rl_insert }, /* Multiplication sign */ + { ISFUNC, rl_insert }, /* Latin capital letter o with stroke */ + { ISFUNC, rl_insert }, /* Latin capital letter u with grave */ + { ISFUNC, rl_insert }, /* Latin capital letter u with acute */ + { ISFUNC, rl_insert }, /* Latin capital letter u with circumflex */ + { ISFUNC, rl_insert }, /* Latin capital letter u with diaeresis */ + { ISFUNC, rl_insert }, /* Latin capital letter Y with acute */ + { ISFUNC, rl_insert }, /* Latin capital letter thorn (Icelandic) */ + { ISFUNC, rl_insert }, /* Latin small letter sharp s (German) */ + { ISFUNC, rl_insert }, /* Latin small letter a with grave */ + { ISFUNC, rl_insert }, /* Latin small letter a with acute */ + { ISFUNC, rl_insert }, /* Latin small letter a with circumflex */ + { ISFUNC, rl_insert }, /* Latin small letter a with tilde */ + { ISFUNC, rl_insert }, /* Latin small letter a with diaeresis */ + { ISFUNC, rl_insert }, /* Latin small letter a with ring above */ + { ISFUNC, rl_insert }, /* Latin small letter ae */ + { ISFUNC, rl_insert }, /* Latin small letter c with cedilla */ + { ISFUNC, rl_insert }, /* Latin small letter e with grave */ + { ISFUNC, rl_insert }, /* Latin small letter e with acute */ + { ISFUNC, rl_insert }, /* Latin small letter e with circumflex */ + { ISFUNC, rl_insert }, /* Latin small letter e with diaeresis */ + { ISFUNC, rl_insert }, /* Latin small letter i with grave */ + { ISFUNC, rl_insert }, /* Latin small letter i with acute */ + { ISFUNC, rl_insert }, /* Latin small letter i with circumflex */ + { ISFUNC, rl_insert }, /* Latin small letter i with diaeresis */ + { ISFUNC, rl_insert }, /* Latin small letter eth (Icelandic) */ + { ISFUNC, rl_insert }, /* Latin small letter n with tilde */ + { ISFUNC, rl_insert }, /* Latin small letter o with grave */ + { ISFUNC, rl_insert }, /* Latin small letter o with acute */ + { ISFUNC, rl_insert }, /* Latin small letter o with circumflex */ + { ISFUNC, rl_insert }, /* Latin small letter o with tilde */ + { ISFUNC, rl_insert }, /* Latin small letter o with diaeresis */ + { ISFUNC, rl_insert }, /* Division sign */ + { ISFUNC, rl_insert }, /* Latin small letter o with stroke */ + { ISFUNC, rl_insert }, /* Latin small letter u with grave */ + { ISFUNC, rl_insert }, /* Latin small letter u with acute */ + { ISFUNC, rl_insert }, /* Latin small letter u with circumflex */ + { ISFUNC, rl_insert }, /* Latin small letter u with diaeresis */ + { ISFUNC, rl_insert }, /* Latin small letter y with acute */ + { ISFUNC, rl_insert }, /* Latin small letter thorn (Icelandic) */ + { ISFUNC, rl_insert } /* Latin small letter y with diaeresis */ +#endif /* KEYMAP_SIZE > 128 */ +}; + +KEYMAP_ENTRY_ARRAY emacs_meta_keymap = { + + /* Meta keys. Just like above, but the high bit is set. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-@ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-a */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-b */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-c */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-d */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-e */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-f */ + { ISFUNC, rl_abort }, /* Meta-Control-g */ + { ISFUNC, rl_backward_kill_word }, /* Meta-Control-h */ + { ISFUNC, rl_tab_insert }, /* Meta-Control-i */ + { ISFUNC, rl_vi_editing_mode }, /* Meta-Control-j */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-k */ + { ISFUNC, rl_clear_display }, /* Meta-Control-l */ + { ISFUNC, rl_vi_editing_mode }, /* Meta-Control-m */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-n */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-o */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-p */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-q */ + { ISFUNC, rl_revert_line }, /* Meta-Control-r */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-s */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-t */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-u */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-v */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-w */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-x */ + { ISFUNC, rl_yank_nth_arg }, /* Meta-Control-y */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-z */ + + { ISFUNC, rl_complete }, /* Meta-Control-[ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-\ */ + { ISFUNC, rl_backward_char_search }, /* Meta-Control-] */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-^ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-_ */ + + /* The start of printing characters. */ + { ISFUNC, rl_set_mark }, /* Meta-SPACE */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-! */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-" */ + { ISFUNC, rl_insert_comment }, /* Meta-# */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-$ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-% */ + { ISFUNC, rl_tilde_expand }, /* Meta-& */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-' */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-( */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-) */ + { ISFUNC, rl_insert_completions }, /* Meta-* */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-+ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-, */ + { ISFUNC, rl_digit_argument }, /* Meta-- */ + { ISFUNC, rl_yank_last_arg}, /* Meta-. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-/ */ + + /* Regular digits. */ + { ISFUNC, rl_digit_argument }, /* Meta-0 */ + { ISFUNC, rl_digit_argument }, /* Meta-1 */ + { ISFUNC, rl_digit_argument }, /* Meta-2 */ + { ISFUNC, rl_digit_argument }, /* Meta-3 */ + { ISFUNC, rl_digit_argument }, /* Meta-4 */ + { ISFUNC, rl_digit_argument }, /* Meta-5 */ + { ISFUNC, rl_digit_argument }, /* Meta-6 */ + { ISFUNC, rl_digit_argument }, /* Meta-7 */ + { ISFUNC, rl_digit_argument }, /* Meta-8 */ + { ISFUNC, rl_digit_argument }, /* Meta-9 */ + + /* A little more punctuation. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-: */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-; */ + { ISFUNC, rl_beginning_of_history }, /* Meta-< */ + { ISFUNC, rl_possible_completions }, /* Meta-= */ + { ISFUNC, rl_end_of_history }, /* Meta-> */ + { ISFUNC, rl_possible_completions }, /* Meta-? */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-@ */ + + /* Uppercase alphabet. */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-A */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-B */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-C */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-D */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-E */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-F */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-G */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-H */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-I */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-J */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-K */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-L */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-M */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-N */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-O */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-P */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-Q */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-R */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-S */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-T */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-U */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-V */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-W */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-X */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-Y */ + { ISFUNC, rl_do_lowercase_version }, /* Meta-Z */ + + /* Some more punctuation. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-[ */ /* was rl_arrow_keys */ + { ISFUNC, rl_delete_horizontal_space }, /* Meta-\ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-] */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-^ */ + { ISFUNC, rl_yank_last_arg }, /* Meta-_ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-` */ + + /* Lowercase alphabet. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-a */ + { ISFUNC, rl_backward_word }, /* Meta-b */ + { ISFUNC, rl_capitalize_word }, /* Meta-c */ + { ISFUNC, rl_kill_word }, /* Meta-d */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-e */ + { ISFUNC, rl_forward_word }, /* Meta-f */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-g */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-h */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-i */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-j */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-k */ + { ISFUNC, rl_downcase_word }, /* Meta-l */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-m */ + { ISFUNC, rl_noninc_forward_search }, /* Meta-n */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-o */ /* was rl_arrow_keys */ + { ISFUNC, rl_noninc_reverse_search }, /* Meta-p */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-q */ + { ISFUNC, rl_revert_line }, /* Meta-r */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-s */ + { ISFUNC, rl_transpose_words }, /* Meta-t */ + { ISFUNC, rl_upcase_word }, /* Meta-u */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-v */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-w */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-x */ + { ISFUNC, rl_yank_pop }, /* Meta-y */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-z */ + + /* Final punctuation. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-{ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-| */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-} */ + { ISFUNC, rl_tilde_expand }, /* Meta-~ */ + { ISFUNC, rl_backward_kill_word }, /* Meta-rubout */ + +#if KEYMAP_SIZE > 128 + /* Undefined keys. */ + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 } +#endif /* KEYMAP_SIZE > 128 */ +}; + +KEYMAP_ENTRY_ARRAY emacs_ctlx_keymap = { + + /* Control keys. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-a */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-b */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-d */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-e */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-f */ + { ISFUNC, rl_abort }, /* Control-g */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-h */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-i */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-j */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-k */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-l */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-m */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-n */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-p */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-q */ + { ISFUNC, rl_re_read_init_file }, /* Control-r */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-s */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-t */ + { ISFUNC, rl_undo_command }, /* Control-u */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-v */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-w */ + { ISFUNC, rl_exchange_point_and_mark }, /* Control-x */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-y */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-[ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-] */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-_ */ + + /* The start of printing characters. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* SPACE */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ! */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* " */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* # */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* $ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* % */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* & */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ' */ + { ISFUNC, rl_start_kbd_macro }, /* ( */ + { ISFUNC, rl_end_kbd_macro }, /* ) */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* * */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* + */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* , */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* - */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* . */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* / */ + + /* Regular digits. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* 0 */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* 1 */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* 2 */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* 3 */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* 4 */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* 5 */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* 6 */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* 7 */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* 8 */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* 9 */ + + /* A little more punctuation. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* : */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ; */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* < */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* = */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* > */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ? */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* @ */ + + /* Uppercase alphabet. */ + { ISFUNC, rl_do_lowercase_version }, /* A */ + { ISFUNC, rl_do_lowercase_version }, /* B */ + { ISFUNC, rl_do_lowercase_version }, /* C */ + { ISFUNC, rl_do_lowercase_version }, /* D */ + { ISFUNC, rl_do_lowercase_version }, /* E */ + { ISFUNC, rl_do_lowercase_version }, /* F */ + { ISFUNC, rl_do_lowercase_version }, /* G */ + { ISFUNC, rl_do_lowercase_version }, /* H */ + { ISFUNC, rl_do_lowercase_version }, /* I */ + { ISFUNC, rl_do_lowercase_version }, /* J */ + { ISFUNC, rl_do_lowercase_version }, /* K */ + { ISFUNC, rl_do_lowercase_version }, /* L */ + { ISFUNC, rl_do_lowercase_version }, /* M */ + { ISFUNC, rl_do_lowercase_version }, /* N */ + { ISFUNC, rl_do_lowercase_version }, /* O */ + { ISFUNC, rl_do_lowercase_version }, /* P */ + { ISFUNC, rl_do_lowercase_version }, /* Q */ + { ISFUNC, rl_do_lowercase_version }, /* R */ + { ISFUNC, rl_do_lowercase_version }, /* S */ + { ISFUNC, rl_do_lowercase_version }, /* T */ + { ISFUNC, rl_do_lowercase_version }, /* U */ + { ISFUNC, rl_do_lowercase_version }, /* V */ + { ISFUNC, rl_do_lowercase_version }, /* W */ + { ISFUNC, rl_do_lowercase_version }, /* X */ + { ISFUNC, rl_do_lowercase_version }, /* Y */ + { ISFUNC, rl_do_lowercase_version }, /* Z */ + + /* Some more punctuation. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* [ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* \ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ] */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ^ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* _ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ` */ + + /* Lowercase alphabet. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* a */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* b */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* c */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* d */ + { ISFUNC, rl_call_last_kbd_macro }, /* e */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* f */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* g */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* h */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* i */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* j */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* k */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* l */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* m */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* n */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* o */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* p */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* q */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* r */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* s */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* t */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* u */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* v */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* w */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* x */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* y */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* z */ + + /* Final punctuation. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* { */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* | */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* } */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ~ */ + { ISFUNC, rl_backward_kill_line }, /* RUBOUT */ + +#if KEYMAP_SIZE > 128 + /* Undefined keys. */ + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 } +#endif /* KEYMAP_SIZE > 128 */ +}; diff --git a/bash-5.1/lib/readline/examples/Inputrc b/bash-5.1/lib/readline/examples/Inputrc new file mode 100644 index 0000000..a358bc4 --- /dev/null +++ b/bash-5.1/lib/readline/examples/Inputrc @@ -0,0 +1,81 @@ +# My ~/.inputrc file is in -*- text -*- for easy editing with Emacs. +# +# Notice the various bindings which are conditionalized depending +# on which program is running, or what terminal is active. +# + +# Copyright (C) 1989-2009 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# 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 . +# + +# In all programs, all terminals, make sure this is bound. +"\C-x\C-r": re-read-init-file + +# Hp terminals (and some others) have ugly default behaviour for C-h. +"\C-h": backward-delete-char +"\e\C-h": backward-kill-word +"\C-xd": dump-functions + +# In xterm windows, make the arrow keys do the right thing. +$if TERM=xterm +"\e[A": previous-history +"\e[B": next-history +"\e[C": forward-char +"\e[D": backward-char + +# alternate arrow key prefix +"\eOA": previous-history +"\eOB": next-history +"\eOC": forward-char +"\eOD": backward-char + +# Under Xterm in Bash, we bind local Function keys to do something useful. +$if Bash +"\e[11~": "Function Key 1" +"\e[12~": "Function Key 2" +"\e[13~": "Function Key 3" +"\e[14~": "Function Key 4" +"\e[15~": "Function Key 5" + +# I know the following escape sequence numbers are 1 greater than +# the function key. Don't ask me why, I didn't design the xterm terminal. +"\e[17~": "Function Key 6" +"\e[18~": "Function Key 7" +"\e[19~": "Function Key 8" +"\e[20~": "Function Key 9" +"\e[21~": "Function Key 10" +$endif +$endif + +# For Bash, all terminals, add some Bash specific hacks. +$if Bash +"\C-xv": show-bash-version +"\C-x\C-e": shell-expand-line + +# Here is one for editing my path. +"\C-xp": "$PATH\C-x\C-e\C-e\"\C-aPATH=\":\C-b" + +# Make C-x r read my mail in emacs. +# "\C-xr": "emacs -f rmail\C-j" +$endif + +# For FTP, different hacks: +$if Ftp +"\C-xg": "get \M-?" +"\C-xt": "put \M-?" +"\M-.": yank-last-arg +$endif + +" ": self-insert diff --git a/bash-5.1/lib/readline/examples/Makefile b/bash-5.1/lib/readline/examples/Makefile new file mode 100644 index 0000000..2df2240 --- /dev/null +++ b/bash-5.1/lib/readline/examples/Makefile @@ -0,0 +1,44 @@ +# This is the Makefile for the examples subdirectory of readline. -*- text -*- +# +# Copyright (C) 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 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 . +# + +EXECUTABLES = fileman rltest rl +CFLAGS = -g -I../.. -I.. -DREADLINE_LIBRARY +LDFLAGS = -g -L.. + +.c.o: + $(CC) $(CFLAGS) -c $< + +all: $(EXECUTABLES) + + +rl: rl.o + $(CC) $(LDFLAGS) -o $@ rl.o -lreadline -ltermcap + +fileman: fileman.o + $(CC) $(LDFLAGS) -o $@ fileman.o -lreadline -ltermcap + +rltest: rltest.o + $(CC) $(LDFLAGS) -o $@ rltest.o -lreadline -ltermcap + +rlcat: rlcat.o + $(CC) $(LDFLAGS) -o $@ rlcat.o -lreadline -ltermcap + +fileman.o: fileman.c +rltest.o: rltest.c +rl.o: rl.c +rlcat.o: rlcat.c diff --git a/bash-5.1/lib/readline/examples/excallback.c b/bash-5.1/lib/readline/examples/excallback.c new file mode 100644 index 0000000..4206acf --- /dev/null +++ b/bash-5.1/lib/readline/examples/excallback.c @@ -0,0 +1,196 @@ +/* +From: Jeff Solomon +Date: Fri, 9 Apr 1999 10:13:27 -0700 (PDT) +To: chet@po.cwru.edu +Subject: new readline example +Message-ID: <14094.12094.527305.199695@mrclean.Stanford.EDU> + +Chet, + +I've been using readline 4.0. Specifically, I've been using the perl +version Term::ReadLine::Gnu. It works great. + +Anyway, I've been playing around the alternate interface and I wanted +to contribute a little C program, callback.c, to you that you could +use as an example of the alternate interface in the /examples +directory of the readline distribution. + +My example shows how, using the alternate interface, you can +interactively change the prompt (which is very nice imo). Also, I +point out that you must roll your own terminal setting when using the +alternate interface because readline depreps (using your parlance) the +terminal while in the user callback. I try to demostrate what I mean +with an example. I've included the program below. + +To compile, I just put the program in the examples directory and made +the appropriate changes to the EXECUTABLES and OBJECTS line and added +an additional target 'callback'. + +I compiled on my Sun Solaris2.6 box using Sun's cc. + +Let me know what you think. + +Jeff +*/ +/* +Copyright (C) 1999 Jeff Solomon +*/ + +#if defined (HAVE_CONFIG_H) +#include +#endif + +#include + +#ifdef HAVE_UNISTD_H +#include +#endif +#include + +#include +#include /* xxx - should make this more general */ + +#ifdef READLINE_LIBRARY +# include "readline.h" +#else +# include +#endif + +#ifndef STDIN_FILENO +# define STDIN_FILENO 0 +#endif + +/* This little examples demonstrates the alternate interface to using readline. + * In the alternate interface, the user maintains control over program flow and + * only calls readline when STDIN is readable. Using the alternate interface, + * you can do anything else while still using readline (like talking to a + * network or another program) without blocking. + * + * Specifically, this program highlights two importants features of the + * alternate interface. The first is the ability to interactively change the + * prompt, which can't be done using the regular interface since rl_prompt is + * read-only. + * + * The second feature really highlights a subtle point when using the alternate + * interface. That is, readline will not alter the terminal when inside your + * callback handler. So let's so, your callback executes a user command that + * takes a non-trivial amount of time to complete (seconds). While your + * executing the command, the user continues to type keystrokes and expects them + * to be re-echoed on the new prompt when it returns. Unfortunately, the default + * terminal configuration doesn't do this. After the prompt returns, the user + * must hit one additional keystroke and then will see all of his previous + * keystrokes. To illustrate this, compile and run this program. Type "sleep" at + * the prompt and then type "bar" before the prompt returns (you have 3 + * seconds). Notice how "bar" is re-echoed on the prompt after the prompt + * returns? This is what you expect to happen. Now comment out the 4 lines below + * the line that says COMMENT LINE BELOW. Recompile and rerun the program and do + * the same thing. When the prompt returns, you should not see "bar". Now type + * "f", see how "barf" magically appears? This behavior is un-expected and not + * desired. + */ + +void process_line(char *line); +int change_prompt(void); +char *get_prompt(void); + +int prompt = 1; +char prompt_buf[40], line_buf[256]; +tcflag_t old_lflag; +cc_t old_vtime; +struct termios term; + +int +main() +{ + fd_set fds; + + /* Adjust the terminal slightly before the handler is installed. Disable + * canonical mode processing and set the input character time flag to be + * non-blocking. + */ + if( tcgetattr(STDIN_FILENO, &term) < 0 ) { + perror("tcgetattr"); + exit(1); + } + old_lflag = term.c_lflag; + old_vtime = term.c_cc[VTIME]; + term.c_lflag &= ~ICANON; + term.c_cc[VTIME] = 1; + /* COMMENT LINE BELOW - see above */ + if( tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0 ) { + perror("tcsetattr"); + exit(1); + } + + rl_add_defun("change-prompt", change_prompt, CTRL('t')); + rl_callback_handler_install(get_prompt(), process_line); + + while(1) { + FD_ZERO(&fds); + FD_SET(fileno(stdin), &fds); + + if( select(FD_SETSIZE, &fds, NULL, NULL, NULL) < 0) { + perror("select"); + exit(1); + } + + if( FD_ISSET(fileno(stdin), &fds) ) { + rl_callback_read_char(); + } + } +} + +void +process_line(char *line) +{ + if( line == NULL ) { + fprintf(stderr, "\n", line); + + /* reset the old terminal setting before exiting */ + term.c_lflag = old_lflag; + term.c_cc[VTIME] = old_vtime; + if( tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0 ) { + perror("tcsetattr"); + exit(1); + } + exit(0); + } + + if( strcmp(line, "sleep") == 0 ) { + sleep(3); + } else { + fprintf(stderr, "|%s|\n", line); + } + + free (line); +} + +int +change_prompt(void) +{ + /* toggle the prompt variable */ + prompt = !prompt; + + /* save away the current contents of the line */ + strcpy(line_buf, rl_line_buffer); + + /* install a new handler which will change the prompt and erase the current line */ + rl_callback_handler_install(get_prompt(), process_line); + + /* insert the old text on the new line */ + rl_insert_text(line_buf); + + /* redraw the current line - this is an undocumented function. It invokes the + * redraw-current-line command. + */ + rl_refresh_line(0, 0); +} + +char * +get_prompt(void) +{ + /* The prompts can even be different lengths! */ + sprintf(prompt_buf, "%s", + prompt ? "Hit ctrl-t to toggle prompt> " : "Pretty cool huh?> "); + return prompt_buf; +} diff --git a/bash-5.1/lib/readline/examples/fileman.c b/bash-5.1/lib/readline/examples/fileman.c new file mode 100644 index 0000000..2a8b097 --- /dev/null +++ b/bash-5.1/lib/readline/examples/fileman.c @@ -0,0 +1,506 @@ +/* fileman.c - file manager example for readline library. */ + +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +/* fileman.c -- A tiny application which demonstrates how to use the + GNU Readline library. This application interactively allows users + to manipulate files and their modes. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#ifdef HAVE_SYS_FILE_H +# include +#endif +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#include +#include +#include + +#if defined (HAVE_STRING_H) +# include +#else /* !HAVE_STRING_H */ +# include +#endif /* !HAVE_STRING_H */ + +#ifdef HAVE_STDLIB_H +# include +#endif + +#include + +#ifdef READLINE_LIBRARY +# include "readline.h" +# include "history.h" +#else +# include +# include +#endif + +extern char *xmalloc PARAMS((size_t)); + +void initialize_readline PARAMS((void)); +void too_dangerous PARAMS((char *)); + +int execute_line PARAMS((char *)); +int valid_argument PARAMS((char *, char *)); + +/* The names of functions that actually do the manipulation. */ +int com_list PARAMS((char *)); +int com_view PARAMS((char *)); +int com_rename PARAMS((char *)); +int com_stat PARAMS((char *)); +int com_pwd PARAMS((char *)); +int com_delete PARAMS((char *)); +int com_help PARAMS((char *)); +int com_cd PARAMS((char *)); +int com_quit PARAMS((char *)); + +/* A structure which contains information on the commands this program + can understand. */ + +typedef struct { + char *name; /* User printable name of the function. */ + rl_icpfunc_t *func; /* Function to call to do the job. */ + char *doc; /* Documentation for this function. */ +} COMMAND; + +COMMAND commands[] = { + { "cd", com_cd, "Change to directory DIR" }, + { "delete", com_delete, "Delete FILE" }, + { "help", com_help, "Display this text" }, + { "?", com_help, "Synonym for `help'" }, + { "list", com_list, "List files in DIR" }, + { "ls", com_list, "Synonym for `list'" }, + { "pwd", com_pwd, "Print the current working directory" }, + { "quit", com_quit, "Quit using Fileman" }, + { "rename", com_rename, "Rename FILE to NEWNAME" }, + { "stat", com_stat, "Print out statistics on FILE" }, + { "view", com_view, "View the contents of FILE" }, + { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL } +}; + +/* Forward declarations. */ +char *stripwhite (); +COMMAND *find_command (); + +/* The name of this program, as taken from argv[0]. */ +char *progname; + +/* When non-zero, this global means the user is done using this program. */ +int done; + +char * +dupstr (s) + char *s; +{ + char *r; + + r = xmalloc (strlen (s) + 1); + strcpy (r, s); + return (r); +} + +int +main (argc, argv) + int argc; + char **argv; +{ + char *line, *s; + + progname = argv[0]; + + initialize_readline (); /* Bind our completer. */ + + /* Loop reading and executing lines until the user quits. */ + for ( ; done == 0; ) + { + line = readline ("FileMan: "); + + if (!line) + break; + + /* Remove leading and trailing whitespace from the line. + Then, if there is anything left, add it to the history list + and execute it. */ + s = stripwhite (line); + + if (*s) + { + add_history (s); + execute_line (s); + } + + free (line); + } + exit (0); +} + +/* Execute a command line. */ +int +execute_line (line) + char *line; +{ + register int i; + COMMAND *command; + char *word; + + /* Isolate the command word. */ + i = 0; + while (line[i] && whitespace (line[i])) + i++; + word = line + i; + + while (line[i] && !whitespace (line[i])) + i++; + + if (line[i]) + line[i++] = '\0'; + + command = find_command (word); + + if (!command) + { + fprintf (stderr, "%s: No such command for FileMan.\n", word); + return (-1); + } + + /* Get argument to command, if any. */ + while (whitespace (line[i])) + i++; + + word = line + i; + + /* Call the function. */ + return ((*(command->func)) (word)); +} + +/* Look up NAME as the name of a command, and return a pointer to that + command. Return a NULL pointer if NAME isn't a command name. */ +COMMAND * +find_command (name) + char *name; +{ + register int i; + + for (i = 0; commands[i].name; i++) + if (strcmp (name, commands[i].name) == 0) + return (&commands[i]); + + return ((COMMAND *)NULL); +} + +/* Strip whitespace from the start and end of STRING. Return a pointer + into STRING. */ +char * +stripwhite (string) + char *string; +{ + register char *s, *t; + + for (s = string; whitespace (*s); s++) + ; + + if (*s == 0) + return (s); + + t = s + strlen (s) - 1; + while (t > s && whitespace (*t)) + t--; + *++t = '\0'; + + return s; +} + +/* **************************************************************** */ +/* */ +/* Interface to Readline Completion */ +/* */ +/* **************************************************************** */ + +char *command_generator PARAMS((const char *, int)); +char **fileman_completion PARAMS((const char *, int, int)); + +/* Tell the GNU Readline library how to complete. We want to try to complete + on command names if this is the first word in the line, or on filenames + if not. */ +void +initialize_readline () +{ + /* Allow conditional parsing of the ~/.inputrc file. */ + rl_readline_name = "FileMan"; + + /* Tell the completer that we want a crack first. */ + rl_attempted_completion_function = fileman_completion; +} + +/* Attempt to complete on the contents of TEXT. START and END bound the + region of rl_line_buffer that contains the word to complete. TEXT is + the word to complete. We can use the entire contents of rl_line_buffer + in case we want to do some simple parsing. Return the array of matches, + or NULL if there aren't any. */ +char ** +fileman_completion (text, start, end) + const char *text; + int start, end; +{ + char **matches; + + matches = (char **)NULL; + + /* If this word is at the start of the line, then it is a command + to complete. Otherwise it is the name of a file in the current + directory. */ + if (start == 0) + matches = rl_completion_matches (text, command_generator); + + return (matches); +} + +/* Generator function for command completion. STATE lets us know whether + to start from scratch; without any state (i.e. STATE == 0), then we + start at the top of the list. */ +char * +command_generator (text, state) + const char *text; + int state; +{ + static int list_index, len; + char *name; + + /* If this is a new word to complete, initialize now. This includes + saving the length of TEXT for efficiency, and initializing the index + variable to 0. */ + if (!state) + { + list_index = 0; + len = strlen (text); + } + + /* Return the next name which partially matches from the command list. */ + while (name = commands[list_index].name) + { + list_index++; + + if (strncmp (name, text, len) == 0) + return (dupstr(name)); + } + + /* If no names matched, then return NULL. */ + return ((char *)NULL); +} + +/* **************************************************************** */ +/* */ +/* FileMan Commands */ +/* */ +/* **************************************************************** */ + +/* String to pass to system (). This is for the LIST, VIEW and RENAME + commands. */ +static char syscom[1024]; + +/* List the file(s) named in arg. */ +int +com_list (arg) + char *arg; +{ + if (!arg) + arg = ""; + + sprintf (syscom, "ls -FClg %s", arg); + return (system (syscom)); +} + +int +com_view (arg) + char *arg; +{ + if (!valid_argument ("view", arg)) + return 1; + +#if defined (__MSDOS__) + /* more.com doesn't grok slashes in pathnames */ + sprintf (syscom, "less %s", arg); +#else + sprintf (syscom, "more %s", arg); +#endif + return (system (syscom)); +} + +int +com_rename (arg) + char *arg; +{ + too_dangerous ("rename"); + return (1); +} + +int +com_stat (arg) + char *arg; +{ + struct stat finfo; + + if (!valid_argument ("stat", arg)) + return (1); + + if (stat (arg, &finfo) == -1) + { + perror (arg); + return (1); + } + + printf ("Statistics for `%s':\n", arg); + + printf ("%s has %d link%s, and is %lu byte%s in length.\n", + arg, + finfo.st_nlink, + (finfo.st_nlink == 1) ? "" : "s", + (unsigned long)finfo.st_size, + (finfo.st_size == 1) ? "" : "s"); + printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime)); + printf (" Last access at: %s", ctime (&finfo.st_atime)); + printf (" Last modified at: %s", ctime (&finfo.st_mtime)); + return (0); +} + +int +com_delete (arg) + char *arg; +{ + too_dangerous ("delete"); + return (1); +} + +/* Print out help for ARG, or for all of the commands if ARG is + not present. */ +int +com_help (arg) + char *arg; +{ + register int i; + int printed = 0; + + for (i = 0; commands[i].name; i++) + { + if (!*arg || (strcmp (arg, commands[i].name) == 0)) + { + printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc); + printed++; + } + } + + if (!printed) + { + printf ("No commands match `%s'. Possibilities are:\n", arg); + + for (i = 0; commands[i].name; i++) + { + /* Print in six columns. */ + if (printed == 6) + { + printed = 0; + printf ("\n"); + } + + printf ("%s\t", commands[i].name); + printed++; + } + + if (printed) + printf ("\n"); + } + return (0); +} + +/* Change to the directory ARG. */ +int +com_cd (arg) + char *arg; +{ + if (chdir (arg) == -1) + { + perror (arg); + return 1; + } + + com_pwd (""); + return (0); +} + +/* Print out the current working directory. */ +int +com_pwd (ignore) + char *ignore; +{ + char dir[1024], *s; + + s = getcwd (dir, sizeof(dir) - 1); + if (s == 0) + { + printf ("Error getting pwd: %s\n", dir); + return 1; + } + + printf ("Current directory is %s\n", dir); + return 0; +} + +/* The user wishes to quit using this program. Just set DONE non-zero. */ +int +com_quit (arg) + char *arg; +{ + done = 1; + return (0); +} + +/* Function which tells you that you can't do this. */ +void +too_dangerous (caller) + char *caller; +{ + fprintf (stderr, + "%s: Too dangerous for me to distribute. Write it yourself.\n", + caller); +} + +/* Return non-zero if ARG is a valid argument for CALLER, else print + an error message and return zero. */ +int +valid_argument (caller, arg) + char *caller, *arg; +{ + if (!arg || !*arg) + { + fprintf (stderr, "%s: Argument required.\n", caller); + return (0); + } + + return (1); +} diff --git a/bash-5.1/lib/readline/examples/histexamp.c b/bash-5.1/lib/readline/examples/histexamp.c new file mode 100644 index 0000000..3b43674 --- /dev/null +++ b/bash-5.1/lib/readline/examples/histexamp.c @@ -0,0 +1,125 @@ +/* histexamp.c - history library example program. */ + +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#include + +#ifdef READLINE_LIBRARY +# include "history.h" +#else +# include +#endif + +#include + +main (argc, argv) + int argc; + char **argv; +{ + char line[1024], *t; + int len, done; + + line[0] = 0; + done = 0; + + using_history (); + while (!done) + { + printf ("history$ "); + fflush (stdout); + t = fgets (line, sizeof (line) - 1, stdin); + if (t && *t) + { + len = strlen (t); + if (t[len - 1] == '\n') + t[len - 1] = '\0'; + } + + if (!t) + strcpy (line, "quit"); + + if (line[0]) + { + char *expansion; + int result; + + using_history (); + + result = history_expand (line, &expansion); + if (result) + fprintf (stderr, "%s\n", expansion); + + if (result < 0 || result == 2) + { + free (expansion); + continue; + } + + add_history (expansion); + strncpy (line, expansion, sizeof (line) - 1); + free (expansion); + } + + if (strcmp (line, "quit") == 0) + done = 1; + else if (strcmp (line, "save") == 0) + write_history ("history_file"); + else if (strcmp (line, "read") == 0) + read_history ("history_file"); + else if (strcmp (line, "list") == 0) + { + register HIST_ENTRY **the_list; + register int i; + time_t tt; + char timestr[128]; + + the_list = history_list (); + if (the_list) + for (i = 0; the_list[i]; i++) + { + tt = history_get_time (the_list[i]); + if (tt) + strftime (timestr, sizeof (timestr), "%a %R", localtime(&tt)); + else + strcpy (timestr, "??"); + printf ("%d: %s: %s\n", i + history_base, timestr, the_list[i]->line); + } + } + else if (strncmp (line, "delete", 6) == 0) + { + int which; + if ((sscanf (line + 6, "%d", &which)) == 1) + { + HIST_ENTRY *entry = remove_history (which); + if (!entry) + fprintf (stderr, "No such entry %d\n", which); + else + { + free (entry->line); + free (entry); + } + } + else + { + fprintf (stderr, "non-numeric arg given to `delete'\n"); + } + } + } +} diff --git a/bash-5.1/lib/readline/examples/manexamp.c b/bash-5.1/lib/readline/examples/manexamp.c new file mode 100644 index 0000000..351c628 --- /dev/null +++ b/bash-5.1/lib/readline/examples/manexamp.c @@ -0,0 +1,111 @@ +/* manexamp.c -- The examples which appear in the documentation are here. */ + +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#include +#include + +/* **************************************************************** */ +/* */ +/* How to Emulate gets () */ +/* */ +/* **************************************************************** */ + +/* A static variable for holding the line. */ +static char *line_read = (char *)NULL; + +/* Read a string, and return a pointer to it. Returns NULL on EOF. */ +char * +rl_gets () +{ + /* If the buffer has already been allocated, return the memory + to the free pool. */ + if (line_read) + { + free (line_read); + line_read = (char *)NULL; + } + + /* Get a line from the user. */ + line_read = readline (""); + + /* If the line has any text in it, save it on the history. */ + if (line_read && *line_read) + add_history (line_read); + + return (line_read); +} + +/* **************************************************************** */ +/* */ +/* Writing a Function to be Called by Readline. */ +/* */ +/* **************************************************************** */ + +/* Invert the case of the COUNT following characters. */ +invert_case_line (count, key) + int count, key; +{ + register int start, end; + + start = rl_point; + + if (count < 0) + { + direction = -1; + count = -count; + } + else + direction = 1; + + /* Find the end of the range to modify. */ + end = start + (count * direction); + + /* Force it to be within range. */ + if (end > rl_end) + end = rl_end; + else if (end < 0) + end = -1; + + if (start > end) + { + int temp = start; + start = end; + end = temp; + } + + if (start == end) + return; + + /* Tell readline that we are modifying the line, so save the undo + information. */ + rl_modifying (start, end); + + for (; start != end; start += direction) + { + if (_rl_uppercase_p (rl_line_buffer[start])) + rl_line_buffer[start] = _rl_to_lower (rl_line_buffer[start]); + else if (_rl_lowercase_p (rl_line_buffer[start])) + rl_line_buffer[start] = _rl_to_upper (rl_line_buffer[start]); + } + + /* Move point to on top of the last character changed. */ + rl_point = end - direction; +} diff --git a/bash-5.1/lib/readline/examples/rl-callbacktest.c b/bash-5.1/lib/readline/examples/rl-callbacktest.c new file mode 100644 index 0000000..0f00e57 --- /dev/null +++ b/bash-5.1/lib/readline/examples/rl-callbacktest.c @@ -0,0 +1,90 @@ +/* Standard include files. stdio.h is required. */ +#include +#include +#include + +/* Used for select(2) */ +#include +#include + +#include +#include + +/* Standard readline include files. */ +#if defined (READLINE_LIBRARY) +# include "readline.h" +# include "history.h" +#else +# include +# include +#endif + +extern int errno; + +static void cb_linehandler (char *); + +int running; +const char *prompt = "rltest$ "; + +/* Callback function called for each line when accept-line executed, EOF + seen, or EOF character read. This sets a flag and returns; it could + also call exit(3). */ +static void +cb_linehandler (char *line) +{ + /* Can use ^D (stty eof) or `exit' to exit. */ + if (line == NULL || strcmp (line, "exit") == 0) + { + if (line == 0) + printf ("\n"); + printf ("exit\n"); + /* This function needs to be called to reset the terminal settings, + and calling it from the line handler keeps one extra prompt from + being displayed. */ + rl_callback_handler_remove (); + + running = 0; + } + else + { + if (*line) + add_history (line); + printf ("input line: %s\n", line); + free (line); + } +} + +int +main (int c, char **v) +{ + fd_set fds; + int r; + + /* Install the line handler. */ + rl_callback_handler_install (prompt, cb_linehandler); + + /* Enter a simple event loop. This waits until something is available + to read on readline's input stream (defaults to standard input) and + calls the builtin character read callback to read it. It does not + have to modify the user's terminal settings. */ + running = 1; + while (running) + { + FD_ZERO (&fds); + FD_SET (fileno (rl_instream), &fds); + + r = select (FD_SETSIZE, &fds, NULL, NULL, NULL); + if (r < 0 && errno != EINTR) + { + perror ("rltest: select"); + rl_callback_handler_remove (); + break; + } + + if (FD_ISSET (fileno (rl_instream), &fds)) + rl_callback_read_char (); + } + + printf ("rltest: Event loop has exited\n"); + return 0; +} diff --git a/bash-5.1/lib/readline/examples/rl.c b/bash-5.1/lib/readline/examples/rl.c new file mode 100644 index 0000000..a5cf276 --- /dev/null +++ b/bash-5.1/lib/readline/examples/rl.c @@ -0,0 +1,158 @@ +/* + * rl - command-line interface to read a line from the standard input + * (or another fd) using readline. + * + * usage: rl [-p prompt] [-u unit] [-d default] [-n nchars] + */ + +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#include +#include + +#ifdef HAVE_STDLIB_H +# include +#else +extern void exit(); +#endif + +#if defined (READLINE_LIBRARY) +# include "posixstat.h" +# include "readline.h" +# include "history.h" +#else +# include +# include +# include +#endif + +extern int optind; +extern char *optarg; + +#if !defined (strchr) && !defined (__STDC__) +extern char *strrchr(); +#endif + +static char *progname; +static char *deftext; + +static int +set_deftext () +{ + if (deftext) + { + rl_insert_text (deftext); + deftext = (char *)NULL; + rl_startup_hook = (rl_hook_func_t *)NULL; + } + return 0; +} + +static void +usage() +{ + fprintf (stderr, "%s: usage: %s [-p prompt] [-u unit] [-d default] [-n nchars]\n", + progname, progname); +} + +int +main (argc, argv) + int argc; + char **argv; +{ + char *temp, *prompt; + struct stat sb; + int opt, fd, nch; + FILE *ifp; + + progname = strrchr(argv[0], '/'); + if (progname == 0) + progname = argv[0]; + else + progname++; + + /* defaults */ + prompt = "readline$ "; + fd = nch = 0; + deftext = (char *)0; + + while ((opt = getopt(argc, argv, "p:u:d:n:")) != EOF) + { + switch (opt) + { + case 'p': + prompt = optarg; + break; + case 'u': + fd = atoi(optarg); + if (fd < 0) + { + fprintf (stderr, "%s: bad file descriptor `%s'\n", progname, optarg); + exit (2); + } + break; + case 'd': + deftext = optarg; + break; + case 'n': + nch = atoi(optarg); + if (nch < 0) + { + fprintf (stderr, "%s: bad value for -n: `%s'\n", progname, optarg); + exit (2); + } + break; + default: + usage (); + exit (2); + } + } + + if (fd != 0) + { + if (fstat (fd, &sb) < 0) + { + fprintf (stderr, "%s: %d: bad file descriptor\n", progname, fd); + exit (1); + } + ifp = fdopen (fd, "r"); + rl_instream = ifp; + } + + if (deftext && *deftext) + rl_startup_hook = set_deftext; + + if (nch > 0) + rl_num_chars_to_read = nch; + + temp = readline (prompt); + + /* Test for EOF. */ + if (temp == 0) + exit (1); + + printf ("%s\n", temp); + exit (0); +} diff --git a/bash-5.1/lib/readline/examples/rlcat.c b/bash-5.1/lib/readline/examples/rlcat.c new file mode 100644 index 0000000..b494241 --- /dev/null +++ b/bash-5.1/lib/readline/examples/rlcat.c @@ -0,0 +1,179 @@ +/* + * rlcat - cat(1) using readline + * + * usage: rlcat + */ + +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#ifdef HAVE_UNISTD_H +# include +#endif + +#include +#include "posixstat.h" + +#include +#include +#include +#include + +#ifdef HAVE_STDLIB_H +# include +#else +extern void exit(); +#endif + +#ifndef errno +extern int errno; +#endif + +#if defined (READLINE_LIBRARY) +# include "readline.h" +# include "history.h" +#else +# include +# include +#endif + +extern int optind; +extern char *optarg; + +static int stdcat(); + +static char *progname; +static int vflag; + +static void +usage() +{ + fprintf (stderr, "%s: usage: %s [-vEVN] [filename]\n", progname, progname); +} + +int +main (argc, argv) + int argc; + char **argv; +{ + char *temp; + int opt, Vflag, Nflag; + + progname = strrchr(argv[0], '/'); + if (progname == 0) + progname = argv[0]; + else + progname++; + + vflag = Vflag = Nflag = 0; + while ((opt = getopt(argc, argv, "vEVN")) != EOF) + { + switch (opt) + { + case 'v': + vflag = 1; + break; + case 'V': + Vflag = 1; + break; + case 'E': + Vflag = 0; + break; + case 'N': + Nflag = 1; + break; + default: + usage (); + exit (2); + } + } + + argc -= optind; + argv += optind; + + if (isatty(0) == 0 || argc || Nflag) + return stdcat(argc, argv); + + rl_variable_bind ("editing-mode", Vflag ? "vi" : "emacs"); + while (temp = readline ("")) + { + if (*temp) + add_history (temp); + printf ("%s\n", temp); + } + + return (ferror (stdout)); +} + +static int +fcopy(fp) + FILE *fp; +{ + int c; + char *x; + + while ((c = getc(fp)) != EOF) + { + if (vflag && isascii ((unsigned char)c) && isprint((unsigned char)c) == 0) + { + x = rl_untranslate_keyseq (c); + if (fputs (x, stdout) == EOF) + return 1; + } + else if (putchar (c) == EOF) + return 1; + } + return (ferror (stdout)); +} + +int +stdcat (argc, argv) + int argc; + char **argv; +{ + int i, fd, r; + char *s; + FILE *fp; + + if (argc == 0) + return (fcopy(stdin)); + + for (i = 0, r = 1; i < argc; i++) + { + if (*argv[i] == '-' && argv[i][1] == 0) + fp = stdin; + else + { + fp = fopen (argv[i], "r"); + if (fp == 0) + { + fprintf (stderr, "%s: %s: cannot open: %s\n", progname, argv[i], strerror(errno)); + continue; + } + } + r = fcopy (fp); + if (fp != stdin) + fclose(fp); + } + return r; +} diff --git a/bash-5.1/lib/readline/examples/rltest.c b/bash-5.1/lib/readline/examples/rltest.c new file mode 100644 index 0000000..65abe87 --- /dev/null +++ b/bash-5.1/lib/readline/examples/rltest.c @@ -0,0 +1,93 @@ +/* **************************************************************** */ +/* */ +/* Testing Readline */ +/* */ +/* **************************************************************** */ + +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if defined (HAVE_CONFIG_H) +#include +#endif + +#include +#include + +#ifdef HAVE_STDLIB_H +# include +#else +extern void exit(); +#endif + +#ifdef READLINE_LIBRARY +# include "readline.h" +# include "history.h" +#else +# include +# include +#endif + +extern HIST_ENTRY **history_list (); + +int +main () +{ + char *temp, *prompt; + int done; + + temp = (char *)NULL; + prompt = "readline$ "; + done = 0; + + while (!done) + { + temp = readline (prompt); + + /* Test for EOF. */ + if (!temp) + exit (1); + + /* If there is anything on the line, print it and remember it. */ + if (*temp) + { + fprintf (stderr, "%s\r\n", temp); + add_history (temp); + } + + /* Check for `command' that we handle. */ + if (strcmp (temp, "quit") == 0) + done = 1; + + if (strcmp (temp, "list") == 0) + { + HIST_ENTRY **list; + register int i; + + list = history_list (); + if (list) + { + for (i = 0; list[i]; i++) + fprintf (stderr, "%d: %s\r\n", i, list[i]->line); + } + } + free (temp); + } + exit (0); +} diff --git a/bash-5.1/lib/readline/funmap.c b/bash-5.1/lib/readline/funmap.c new file mode 100644 index 0000000..eca49a3 --- /dev/null +++ b/bash-5.1/lib/readline/funmap.c @@ -0,0 +1,271 @@ +/* funmap.c -- attach names to functions. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#if !defined (BUFSIZ) +#include +#endif /* BUFSIZ */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include "rlconf.h" +#include "readline.h" + +#include "xmalloc.h" + +#ifdef __STDC__ +typedef int QSFUNC (const void *, const void *); +#else +typedef int QSFUNC (); +#endif + +extern int _rl_qsort_string_compare PARAMS((char **, char **)); + +FUNMAP **funmap; +static int funmap_size; +static int funmap_entry; + +/* After initializing the function map, this is the index of the first + program specific function. */ +int funmap_program_specific_entry_start; + +static const FUNMAP default_funmap[] = { + { "abort", rl_abort }, + { "accept-line", rl_newline }, + { "arrow-key-prefix", rl_arrow_keys }, + { "backward-byte", rl_backward_byte }, + { "backward-char", rl_backward_char }, + { "backward-delete-char", rl_rubout }, + { "backward-kill-line", rl_backward_kill_line }, + { "backward-kill-word", rl_backward_kill_word }, + { "backward-word", rl_backward_word }, + { "beginning-of-history", rl_beginning_of_history }, + { "beginning-of-line", rl_beg_of_line }, + { "bracketed-paste-begin", rl_bracketed_paste_begin }, + { "call-last-kbd-macro", rl_call_last_kbd_macro }, + { "capitalize-word", rl_capitalize_word }, + { "character-search", rl_char_search }, + { "character-search-backward", rl_backward_char_search }, + { "clear-display", rl_clear_display }, + { "clear-screen", rl_clear_screen }, + { "complete", rl_complete }, + { "copy-backward-word", rl_copy_backward_word }, + { "copy-forward-word", rl_copy_forward_word }, + { "copy-region-as-kill", rl_copy_region_to_kill }, + { "delete-char", rl_delete }, + { "delete-char-or-list", rl_delete_or_show_completions }, + { "delete-horizontal-space", rl_delete_horizontal_space }, + { "digit-argument", rl_digit_argument }, + { "do-lowercase-version", rl_do_lowercase_version }, + { "downcase-word", rl_downcase_word }, + { "dump-functions", rl_dump_functions }, + { "dump-macros", rl_dump_macros }, + { "dump-variables", rl_dump_variables }, + { "emacs-editing-mode", rl_emacs_editing_mode }, + { "end-kbd-macro", rl_end_kbd_macro }, + { "end-of-history", rl_end_of_history }, + { "end-of-line", rl_end_of_line }, + { "exchange-point-and-mark", rl_exchange_point_and_mark }, + { "forward-backward-delete-char", rl_rubout_or_delete }, + { "forward-byte", rl_forward_byte }, + { "forward-char", rl_forward_char }, + { "forward-search-history", rl_forward_search_history }, + { "forward-word", rl_forward_word }, + { "history-search-backward", rl_history_search_backward }, + { "history-search-forward", rl_history_search_forward }, + { "history-substring-search-backward", rl_history_substr_search_backward }, + { "history-substring-search-forward", rl_history_substr_search_forward }, + { "insert-comment", rl_insert_comment }, + { "insert-completions", rl_insert_completions }, + { "kill-whole-line", rl_kill_full_line }, + { "kill-line", rl_kill_line }, + { "kill-region", rl_kill_region }, + { "kill-word", rl_kill_word }, + { "menu-complete", rl_menu_complete }, + { "menu-complete-backward", rl_backward_menu_complete }, + { "next-history", rl_get_next_history }, + { "next-screen-line", rl_next_screen_line }, + { "non-incremental-forward-search-history", rl_noninc_forward_search }, + { "non-incremental-reverse-search-history", rl_noninc_reverse_search }, + { "non-incremental-forward-search-history-again", rl_noninc_forward_search_again }, + { "non-incremental-reverse-search-history-again", rl_noninc_reverse_search_again }, + { "old-menu-complete", rl_old_menu_complete }, + { "operate-and-get-next", rl_operate_and_get_next }, + { "overwrite-mode", rl_overwrite_mode }, +#if defined (_WIN32) + { "paste-from-clipboard", rl_paste_from_clipboard }, +#endif + { "possible-completions", rl_possible_completions }, + { "previous-history", rl_get_previous_history }, + { "previous-screen-line", rl_previous_screen_line }, + { "print-last-kbd-macro", rl_print_last_kbd_macro }, + { "quoted-insert", rl_quoted_insert }, + { "re-read-init-file", rl_re_read_init_file }, + { "redraw-current-line", rl_refresh_line}, + { "reverse-search-history", rl_reverse_search_history }, + { "revert-line", rl_revert_line }, + { "self-insert", rl_insert }, + { "set-mark", rl_set_mark }, + { "skip-csi-sequence", rl_skip_csi_sequence }, + { "start-kbd-macro", rl_start_kbd_macro }, + { "tab-insert", rl_tab_insert }, + { "tilde-expand", rl_tilde_expand }, + { "transpose-chars", rl_transpose_chars }, + { "transpose-words", rl_transpose_words }, + { "tty-status", rl_tty_status }, + { "undo", rl_undo_command }, + { "universal-argument", rl_universal_argument }, + { "unix-filename-rubout", rl_unix_filename_rubout }, + { "unix-line-discard", rl_unix_line_discard }, + { "unix-word-rubout", rl_unix_word_rubout }, + { "upcase-word", rl_upcase_word }, + { "yank", rl_yank }, + { "yank-last-arg", rl_yank_last_arg }, + { "yank-nth-arg", rl_yank_nth_arg }, + { "yank-pop", rl_yank_pop }, + +#if defined (VI_MODE) + { "vi-append-eol", rl_vi_append_eol }, + { "vi-append-mode", rl_vi_append_mode }, + { "vi-arg-digit", rl_vi_arg_digit }, + { "vi-back-to-indent", rl_vi_back_to_indent }, + { "vi-backward-bigword", rl_vi_bWord }, + { "vi-backward-word", rl_vi_bword }, + { "vi-bWord", rl_vi_bWord }, + { "vi-bword", rl_vi_bword }, /* BEWARE: name matching is case insensitive */ + { "vi-change-case", rl_vi_change_case }, + { "vi-change-char", rl_vi_change_char }, + { "vi-change-to", rl_vi_change_to }, + { "vi-char-search", rl_vi_char_search }, + { "vi-column", rl_vi_column }, + { "vi-complete", rl_vi_complete }, + { "vi-delete", rl_vi_delete }, + { "vi-delete-to", rl_vi_delete_to }, + { "vi-eWord", rl_vi_eWord }, + { "vi-editing-mode", rl_vi_editing_mode }, + { "vi-end-bigword", rl_vi_eWord }, + { "vi-end-word", rl_vi_end_word }, + { "vi-eof-maybe", rl_vi_eof_maybe }, + { "vi-eword", rl_vi_eword }, /* BEWARE: name matching is case insensitive */ + { "vi-fWord", rl_vi_fWord }, + { "vi-fetch-history", rl_vi_fetch_history }, + { "vi-first-print", rl_vi_first_print }, + { "vi-forward-bigword", rl_vi_fWord }, + { "vi-forward-word", rl_vi_fword }, + { "vi-fword", rl_vi_fword }, /* BEWARE: name matching is case insensitive */ + { "vi-goto-mark", rl_vi_goto_mark }, + { "vi-insert-beg", rl_vi_insert_beg }, + { "vi-insertion-mode", rl_vi_insert_mode }, + { "vi-match", rl_vi_match }, + { "vi-movement-mode", rl_vi_movement_mode }, + { "vi-next-word", rl_vi_next_word }, + { "vi-overstrike", rl_vi_overstrike }, + { "vi-overstrike-delete", rl_vi_overstrike_delete }, + { "vi-prev-word", rl_vi_prev_word }, + { "vi-put", rl_vi_put }, + { "vi-redo", rl_vi_redo }, + { "vi-replace", rl_vi_replace }, + { "vi-rubout", rl_vi_rubout }, + { "vi-search", rl_vi_search }, + { "vi-search-again", rl_vi_search_again }, + { "vi-set-mark", rl_vi_set_mark }, + { "vi-subst", rl_vi_subst }, + { "vi-tilde-expand", rl_vi_tilde_expand }, + { "vi-unix-word-rubout", rl_vi_unix_word_rubout }, + { "vi-yank-arg", rl_vi_yank_arg }, + { "vi-yank-pop", rl_vi_yank_pop }, + { "vi-yank-to", rl_vi_yank_to }, +#endif /* VI_MODE */ + + {(char *)NULL, (rl_command_func_t *)NULL } +}; + +int +rl_add_funmap_entry (const char *name, rl_command_func_t *function) +{ + if (funmap_entry + 2 >= funmap_size) + { + funmap_size += 64; + funmap = (FUNMAP **)xrealloc (funmap, funmap_size * sizeof (FUNMAP *)); + } + + funmap[funmap_entry] = (FUNMAP *)xmalloc (sizeof (FUNMAP)); + funmap[funmap_entry]->name = name; + funmap[funmap_entry]->function = function; + + funmap[++funmap_entry] = (FUNMAP *)NULL; + return funmap_entry; +} + +static int funmap_initialized; + +/* Make the funmap contain all of the default entries. */ +void +rl_initialize_funmap (void) +{ + register int i; + + if (funmap_initialized) + return; + + for (i = 0; default_funmap[i].name; i++) + rl_add_funmap_entry (default_funmap[i].name, default_funmap[i].function); + + funmap_initialized = 1; + funmap_program_specific_entry_start = i; +} + +/* Produce a NULL terminated array of known function names. The array + is sorted. The array itself is allocated, but not the strings inside. + You should free () the array when you done, but not the pointers. */ +const char ** +rl_funmap_names (void) +{ + const char **result; + int result_size, result_index; + + /* Make sure that the function map has been initialized. */ + rl_initialize_funmap (); + + for (result_index = result_size = 0, result = (const char **)NULL; funmap[result_index]; result_index++) + { + if (result_index + 2 > result_size) + { + result_size += 20; + result = (const char **)xrealloc (result, result_size * sizeof (char *)); + } + + result[result_index] = funmap[result_index]->name; + result[result_index + 1] = (char *)NULL; + } + + qsort (result, result_index, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare); + return (result); +} diff --git a/bash-5.1/lib/readline/histexpand.c b/bash-5.1/lib/readline/histexpand.c new file mode 100644 index 0000000..b986dba --- /dev/null +++ b/bash-5.1/lib/readline/histexpand.c @@ -0,0 +1,1695 @@ +/* histexpand.c -- history expansion. */ + +/* Copyright (C) 1989-2018 Free Software Foundation, Inc. + + This file contains the GNU History Library (History), a set of + routines for managing the text of previously typed lines. + + 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if defined (HAVE_UNISTD_H) +# ifndef _MINIX +# include +# endif +# include +#endif + +#include "rlmbutil.h" + +#include "history.h" +#include "histlib.h" +#include "chardefs.h" + +#include "rlshell.h" +#include "xmalloc.h" + +#define HISTORY_WORD_DELIMITERS " \t\n;&()|<>" +#define HISTORY_QUOTE_CHARACTERS "\"'`" +#define HISTORY_EVENT_DELIMITERS "^$*%-" + +#define slashify_in_quotes "\\`\"$" + +#define fielddelim(c) (whitespace(c) || (c) == '\n') + +typedef int _hist_search_func_t PARAMS((const char *, int)); + +static char error_pointer; + +static char *subst_lhs; +static char *subst_rhs; +static int subst_lhs_len; +static int subst_rhs_len; + +/* Characters that delimit history event specifications and separate event + specifications from word designators. Static for now */ +static char *history_event_delimiter_chars = HISTORY_EVENT_DELIMITERS; + +static char *get_history_word_specifier PARAMS((char *, char *, int *)); +static int history_tokenize_word PARAMS((const char *, int)); +static char **history_tokenize_internal PARAMS((const char *, int, int *)); +static char *history_substring PARAMS((const char *, int, int)); +static void freewords PARAMS((char **, int)); +static char *history_find_word PARAMS((char *, int)); + +static char *quote_breaks PARAMS((char *)); + +/* Variables exported by this file. */ +/* The character that represents the start of a history expansion + request. This is usually `!'. */ +char history_expansion_char = '!'; + +/* The character that invokes word substitution if found at the start of + a line. This is usually `^'. */ +char history_subst_char = '^'; + +/* During tokenization, if this character is seen as the first character + of a word, then it, and all subsequent characters up to a newline are + ignored. For a Bourne shell, this should be '#'. Bash special cases + the interactive comment character to not be a comment delimiter. */ +char history_comment_char = '\0'; + +/* The list of characters which inhibit the expansion of text if found + immediately following history_expansion_char. */ +char *history_no_expand_chars = " \t\n\r="; + +/* If set to a non-zero value, single quotes inhibit history expansion. + The default is 0. */ +int history_quotes_inhibit_expansion = 0; + +/* Used to split words by history_tokenize_internal. */ +char *history_word_delimiters = HISTORY_WORD_DELIMITERS; + +/* If set, this points to a function that is called to verify that a + particular history expansion should be performed. */ +rl_linebuf_func_t *history_inhibit_expansion_function; + +int history_quoting_state = 0; + +/* **************************************************************** */ +/* */ +/* History Expansion */ +/* */ +/* **************************************************************** */ + +/* Hairy history expansion on text, not tokens. This is of general + use, and thus belongs in this library. */ + +/* The last string searched for by a !?string? search. */ +static char *search_string; +/* The last string matched by a !?string? search. */ +static char *search_match; + +/* Return the event specified at TEXT + OFFSET modifying OFFSET to + point to after the event specifier. Just a pointer to the history + line is returned; NULL is returned in the event of a bad specifier. + You pass STRING with *INDEX equal to the history_expansion_char that + begins this specification. + DELIMITING_QUOTE is a character that is allowed to end the string + specification for what to search for in addition to the normal + characters `:', ` ', `\t', `\n', and sometimes `?'. + So you might call this function like: + line = get_history_event ("!echo:p", &index, 0); */ +char * +get_history_event (const char *string, int *caller_index, int delimiting_quote) +{ + register int i; + register char c; + HIST_ENTRY *entry; + int which, sign, local_index, substring_okay; + _hist_search_func_t *search_func; + char *temp; + + /* The event can be specified in a number of ways. + + !! the previous command + !n command line N + !-n current command-line minus N + !str the most recent command starting with STR + !?str[?] + the most recent command containing STR + + All values N are determined via HISTORY_BASE. */ + + i = *caller_index; + + if (string[i] != history_expansion_char) + return ((char *)NULL); + + /* Move on to the specification. */ + i++; + + sign = 1; + substring_okay = 0; + +#define RETURN_ENTRY(e, w) \ + return ((e = history_get (w)) ? e->line : (char *)NULL) + + /* Handle !! case. */ + if (string[i] == history_expansion_char) + { + i++; + which = history_base + (history_length - 1); + *caller_index = i; + RETURN_ENTRY (entry, which); + } + + /* Hack case of numeric line specification. */ + if (string[i] == '-' && _rl_digit_p (string[i+1])) + { + sign = -1; + i++; + } + + if (_rl_digit_p (string[i])) + { + /* Get the extent of the digits and compute the value. */ + for (which = 0; _rl_digit_p (string[i]); i++) + which = (which * 10) + _rl_digit_value (string[i]); + + *caller_index = i; + + if (sign < 0) + which = (history_length + history_base) - which; + + RETURN_ENTRY (entry, which); + } + + /* This must be something to search for. If the spec begins with + a '?', then the string may be anywhere on the line. Otherwise, + the string must be found at the start of a line. */ + if (string[i] == '?') + { + substring_okay++; + i++; + } + + /* Only a closing `?' or a newline delimit a substring search string. */ + for (local_index = i; c = string[i]; i++) + { +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + int v; + mbstate_t ps; + + memset (&ps, 0, sizeof (mbstate_t)); + /* These produce warnings because we're passing a const string to a + function that takes a non-const string. */ + _rl_adjust_point ((char *)string, i, &ps); + if ((v = _rl_get_char_len ((char *)string + i, &ps)) > 1) + { + i += v - 1; + continue; + } + } + +#endif /* HANDLE_MULTIBYTE */ + if ((!substring_okay && + (whitespace (c) || c == ':' || + (i > local_index && history_event_delimiter_chars && c == '-') || + (c != '-' && history_event_delimiter_chars && member (c, history_event_delimiter_chars)) || + (history_search_delimiter_chars && member (c, history_search_delimiter_chars)) || + string[i] == delimiting_quote)) || + string[i] == '\n' || + (substring_okay && string[i] == '?')) + break; + } + + which = i - local_index; + temp = (char *)xmalloc (1 + which); + if (which) + strncpy (temp, string + local_index, which); + temp[which] = '\0'; + + if (substring_okay && string[i] == '?') + i++; + + *caller_index = i; + +#define FAIL_SEARCH() \ + do { \ + history_offset = history_length; xfree (temp) ; return (char *)NULL; \ + } while (0) + + /* If there is no search string, try to use the previous search string, + if one exists. If not, fail immediately. */ + if (*temp == '\0' && substring_okay) + { + if (search_string) + { + xfree (temp); + temp = savestring (search_string); + } + else + FAIL_SEARCH (); + } + + search_func = substring_okay ? history_search : history_search_prefix; + while (1) + { + local_index = (*search_func) (temp, -1); + + if (local_index < 0) + FAIL_SEARCH (); + + if (local_index == 0 || substring_okay) + { + entry = current_history (); + if (entry == 0) + FAIL_SEARCH (); + history_offset = history_length; + + /* If this was a substring search, then remember the + string that we matched for word substitution. */ + if (substring_okay) + { + FREE (search_string); + search_string = temp; + + FREE (search_match); + search_match = history_find_word (entry->line, local_index); + } + else + xfree (temp); + + return (entry->line); + } + + if (history_offset) + history_offset--; + else + FAIL_SEARCH (); + } +#undef FAIL_SEARCH +#undef RETURN_ENTRY +} + +/* Function for extracting single-quoted strings. Used for inhibiting + history expansion within single quotes. */ + +/* 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 + to the closing single quote. FLAGS currently used to allow backslash + to escape a single quote (e.g., for bash $'...'). */ +static void +hist_string_extract_single_quoted (char *string, int *sindex, int flags) +{ + register int i; + + for (i = *sindex; string[i] && string[i] != '\''; i++) + { + if ((flags & 1) && string[i] == '\\' && string[i+1]) + i++; + } + + *sindex = i; +} + +static char * +quote_breaks (char *s) +{ + register char *p, *r; + char *ret; + int len = 3; + + for (p = s; p && *p; p++, len++) + { + if (*p == '\'') + len += 3; + else if (whitespace (*p) || *p == '\n') + len += 2; + } + + r = ret = (char *)xmalloc (len); + *r++ = '\''; + for (p = s; p && *p; ) + { + if (*p == '\'') + { + *r++ = '\''; + *r++ = '\\'; + *r++ = '\''; + *r++ = '\''; + p++; + } + else if (whitespace (*p) || *p == '\n') + { + *r++ = '\''; + *r++ = *p++; + *r++ = '\''; + } + else + *r++ = *p++; + } + *r++ = '\''; + *r = '\0'; + return ret; +} + +static char * +hist_error(char *s, int start, int current, int errtype) +{ + char *temp; + const char *emsg; + int ll, elen; + + ll = current - start; + + switch (errtype) + { + case EVENT_NOT_FOUND: + emsg = "event not found"; + elen = 15; + break; + case BAD_WORD_SPEC: + emsg = "bad word specifier"; + elen = 18; + break; + case SUBST_FAILED: + emsg = "substitution failed"; + elen = 19; + break; + case BAD_MODIFIER: + emsg = "unrecognized history modifier"; + elen = 29; + break; + case NO_PREV_SUBST: + emsg = "no previous substitution"; + elen = 24; + break; + default: + emsg = "unknown expansion error"; + elen = 23; + break; + } + + temp = (char *)xmalloc (ll + elen + 3); + if (s[start]) + strncpy (temp, s + start, ll); + else + ll = 0; + temp[ll] = ':'; + temp[ll + 1] = ' '; + strcpy (temp + ll + 2, emsg); + return (temp); +} + +/* Get a history substitution string from STR starting at *IPTR + and return it. The length is returned in LENPTR. + + A backslash can quote the delimiter. If the string is the + empty string, the previous pattern is used. If there is + no previous pattern for the lhs, the last history search + string is used. + + If IS_RHS is 1, we ignore empty strings and set the pattern + to "" anyway. subst_lhs is not changed if the lhs is empty; + subst_rhs is allowed to be set to the empty string. */ + +static char * +get_subst_pattern (char *str, int *iptr, int delimiter, int is_rhs, int *lenptr) +{ + register int si, i, j, k; + char *s; +#if defined (HANDLE_MULTIBYTE) + mbstate_t ps; +#endif + + s = (char *)NULL; + i = *iptr; + +#if defined (HANDLE_MULTIBYTE) + memset (&ps, 0, sizeof (mbstate_t)); + _rl_adjust_point (str, i, &ps); +#endif + + for (si = i; str[si] && str[si] != delimiter; si++) +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + int v; + if ((v = _rl_get_char_len (str + si, &ps)) > 1) + si += v - 1; + else if (str[si] == '\\' && str[si + 1] == delimiter) + si++; + } + else +#endif /* HANDLE_MULTIBYTE */ + if (str[si] == '\\' && str[si + 1] == delimiter) + si++; + + if (si > i || is_rhs) + { + s = (char *)xmalloc (si - i + 1); + for (j = 0, k = i; k < si; j++, k++) + { + /* Remove a backslash quoting the search string delimiter. */ + if (str[k] == '\\' && str[k + 1] == delimiter) + k++; + s[j] = str[k]; + } + s[j] = '\0'; + if (lenptr) + *lenptr = j; + } + + i = si; + if (str[i]) + i++; + *iptr = i; + + return s; +} + +static void +postproc_subst_rhs (void) +{ + char *new; + int i, j, new_size; + + new = (char *)xmalloc (new_size = subst_rhs_len + subst_lhs_len); + for (i = j = 0; i < subst_rhs_len; i++) + { + if (subst_rhs[i] == '&') + { + if (j + subst_lhs_len >= new_size) + new = (char *)xrealloc (new, (new_size = new_size * 2 + subst_lhs_len)); + strcpy (new + j, subst_lhs); + j += subst_lhs_len; + } + else + { + /* a single backslash protects the `&' from lhs interpolation */ + if (subst_rhs[i] == '\\' && subst_rhs[i + 1] == '&') + i++; + if (j >= new_size) + new = (char *)xrealloc (new, new_size *= 2); + new[j++] = subst_rhs[i]; + } + } + new[j] = '\0'; + xfree (subst_rhs); + subst_rhs = new; + subst_rhs_len = j; +} + +/* Expand the bulk of a history specifier starting at STRING[START]. + Returns 0 if everything is OK, -1 if an error occurred, and 1 + if the `p' modifier was supplied and the caller should just print + the returned string. Returns the new index into string in + *END_INDEX_PTR, and the expanded specifier in *RET_STRING. */ +/* need current line for !# */ +static int +history_expand_internal (char *string, int start, int qc, int *end_index_ptr, char **ret_string, char *current_line) +{ + int i, n, starting_index; + int substitute_globally, subst_bywords, want_quotes, print_only; + char *event, *temp, *result, *tstr, *t, c, *word_spec; + int result_len; +#if defined (HANDLE_MULTIBYTE) + mbstate_t ps; + + memset (&ps, 0, sizeof (mbstate_t)); +#endif + + result = (char *)xmalloc (result_len = 128); + + i = start; + + /* If it is followed by something that starts a word specifier, + then !! is implied as the event specifier. */ + + if (member (string[i + 1], ":$*%^")) + { + char fake_s[3]; + int fake_i = 0; + i++; + fake_s[0] = fake_s[1] = history_expansion_char; + fake_s[2] = '\0'; + event = get_history_event (fake_s, &fake_i, 0); + } + else if (string[i + 1] == '#') + { + i += 2; + event = current_line; + } + else + event = get_history_event (string, &i, qc); + + if (event == 0) + { + *ret_string = hist_error (string, start, i, EVENT_NOT_FOUND); + xfree (result); + return (-1); + } + + /* If a word specifier is found, then do what that requires. */ + starting_index = i; + word_spec = get_history_word_specifier (string, event, &i); + + /* There is no such thing as a `malformed word specifier'. However, + it is possible for a specifier that has no match. In that case, + we complain. */ + if (word_spec == (char *)&error_pointer) + { + *ret_string = hist_error (string, starting_index, i, BAD_WORD_SPEC); + xfree (result); + return (-1); + } + + /* If no word specifier, than the thing of interest was the event. */ + temp = word_spec ? savestring (word_spec) : savestring (event); + FREE (word_spec); + + /* Perhaps there are other modifiers involved. Do what they say. */ + want_quotes = substitute_globally = subst_bywords = print_only = 0; + starting_index = i; + + while (string[i] == ':') + { + c = string[i + 1]; + + if (c == 'g' || c == 'a') + { + substitute_globally = 1; + i++; + c = string[i + 1]; + } + else if (c == 'G') + { + subst_bywords = 1; + i++; + c = string[i + 1]; + } + + switch (c) + { + default: + *ret_string = hist_error (string, i+1, i+2, BAD_MODIFIER); + xfree (result); + xfree (temp); + return -1; + + case 'q': + want_quotes = 'q'; + break; + + case 'x': + want_quotes = 'x'; + break; + + /* :p means make this the last executed line. So we + return an error state after adding this line to the + history. */ + case 'p': + print_only = 1; + break; + + /* :t discards all but the last part of the pathname. */ + case 't': + tstr = strrchr (temp, '/'); + if (tstr) + { + tstr++; + t = savestring (tstr); + xfree (temp); + temp = t; + } + break; + + /* :h discards the last part of a pathname. */ + case 'h': + tstr = strrchr (temp, '/'); + if (tstr) + *tstr = '\0'; + break; + + /* :r discards the suffix. */ + case 'r': + tstr = strrchr (temp, '.'); + if (tstr) + *tstr = '\0'; + break; + + /* :e discards everything but the suffix. */ + case 'e': + tstr = strrchr (temp, '.'); + if (tstr) + { + t = savestring (tstr); + xfree (temp); + temp = t; + } + break; + + /* :s/this/that substitutes `that' for the first + occurrence of `this'. :gs/this/that substitutes `that' + for each occurrence of `this'. :& repeats the last + substitution. :g& repeats the last substitution + globally. */ + + case '&': + case 's': + { + char *new_event; + int delimiter, failed, si, l_temp, ws, we; + + if (c == 's') + { + if (i + 2 < (int)strlen (string)) + { +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + _rl_adjust_point (string, i + 2, &ps); + if (_rl_get_char_len (string + i + 2, &ps) > 1) + delimiter = 0; + else + delimiter = string[i + 2]; + } + else +#endif /* HANDLE_MULTIBYTE */ + delimiter = string[i + 2]; + } + else + break; /* no search delimiter */ + + i += 3; + + t = get_subst_pattern (string, &i, delimiter, 0, &subst_lhs_len); + /* An empty substitution lhs with no previous substitution + uses the last search string as the lhs. */ + if (t) + { + FREE (subst_lhs); + subst_lhs = t; + } + else if (!subst_lhs) + { + if (search_string && *search_string) + { + subst_lhs = savestring (search_string); + subst_lhs_len = strlen (subst_lhs); + } + else + { + subst_lhs = (char *) NULL; + subst_lhs_len = 0; + } + } + + FREE (subst_rhs); + subst_rhs = get_subst_pattern (string, &i, delimiter, 1, &subst_rhs_len); + + /* If `&' appears in the rhs, it's supposed to be replaced + with the lhs. */ + if (member ('&', subst_rhs)) + postproc_subst_rhs (); + } + else + i += 2; + + /* If there is no lhs, the substitution can't succeed. */ + if (subst_lhs_len == 0) + { + *ret_string = hist_error (string, starting_index, i, NO_PREV_SUBST); + xfree (result); + xfree (temp); + return -1; + } + + l_temp = strlen (temp); + /* Ignore impossible cases. */ + if (subst_lhs_len > l_temp) + { + *ret_string = hist_error (string, starting_index, i, SUBST_FAILED); + xfree (result); + xfree (temp); + return (-1); + } + + /* Find the first occurrence of THIS in TEMP. */ + /* Substitute SUBST_RHS for SUBST_LHS in TEMP. There are three + cases to consider: + + 1. substitute_globally == subst_bywords == 0 + 2. substitute_globally == 1 && subst_bywords == 0 + 3. substitute_globally == 0 && subst_bywords == 1 + + In the first case, we substitute for the first occurrence only. + In the second case, we substitute for every occurrence. + In the third case, we tokenize into words and substitute the + first occurrence of each word. */ + + si = we = 0; + for (failed = 1; (si + subst_lhs_len) <= l_temp; si++) + { + /* First skip whitespace and find word boundaries if + we're past the end of the word boundary we found + the last time. */ + if (subst_bywords && si > we) + { + for (; temp[si] && fielddelim (temp[si]); si++) + ; + ws = si; + we = history_tokenize_word (temp, si); + } + + if (STREQN (temp+si, subst_lhs, subst_lhs_len)) + { + int len = subst_rhs_len - subst_lhs_len + l_temp; + new_event = (char *)xmalloc (1 + len); + strncpy (new_event, temp, si); + strncpy (new_event + si, subst_rhs, subst_rhs_len); + strncpy (new_event + si + subst_rhs_len, + temp + si + subst_lhs_len, + l_temp - (si + subst_lhs_len)); + new_event[len] = '\0'; + xfree (temp); + temp = new_event; + + failed = 0; + + if (substitute_globally) + { + /* Reported to fix a bug that causes it to skip every + other match when matching a single character. Was + si += subst_rhs_len previously. */ + si += subst_rhs_len - 1; + l_temp = strlen (temp); + substitute_globally++; + continue; + } + else if (subst_bywords) + { + si = we; + l_temp = strlen (temp); + continue; + } + else + break; + } + } + + if (substitute_globally > 1) + { + substitute_globally = 0; + continue; /* don't want to increment i */ + } + + if (failed == 0) + continue; /* don't want to increment i */ + + *ret_string = hist_error (string, starting_index, i, SUBST_FAILED); + xfree (result); + xfree (temp); + return (-1); + } + } + i += 2; + } + /* Done with modifiers. */ + /* Believe it or not, we have to back the pointer up by one. */ + --i; + + if (want_quotes) + { + char *x; + + if (want_quotes == 'q') + x = sh_single_quote (temp); + else if (want_quotes == 'x') + x = quote_breaks (temp); + else + x = savestring (temp); + + xfree (temp); + temp = x; + } + + n = strlen (temp); + if (n >= result_len) + result = (char *)xrealloc (result, n + 2); + strcpy (result, temp); + xfree (temp); + + *end_index_ptr = i; + *ret_string = result; + return (print_only); +} + +/* Expand the string STRING, placing the result into OUTPUT, a pointer + to a string. Returns: + + -1) If there was an error in expansion. + 0) If no expansions took place (or, if the only change in + the text was the de-slashifying of the history expansion + character) + 1) If expansions did take place + 2) If the `p' modifier was given and the caller should print the result + + If an error occurred in expansion, then OUTPUT contains a descriptive + error message. */ + +#define ADD_STRING(s) \ + do \ + { \ + int sl = strlen (s); \ + j += sl; \ + if (j >= result_len) \ + { \ + while (j >= result_len) \ + result_len += 128; \ + result = (char *)xrealloc (result, result_len); \ + } \ + strcpy (result + j - sl, s); \ + } \ + while (0) + +#define ADD_CHAR(c) \ + do \ + { \ + if (j >= result_len - 1) \ + result = (char *)xrealloc (result, result_len += 64); \ + result[j++] = c; \ + result[j] = '\0'; \ + } \ + while (0) + +int +history_expand (char *hstring, char **output) +{ + register int j; + int i, r, l, passc, cc, modified, eindex, only_printing, dquote, squote, flag; + char *string; + + /* The output string, and its length. */ + int result_len; + char *result; + +#if defined (HANDLE_MULTIBYTE) + char mb[MB_LEN_MAX]; + mbstate_t ps; +#endif + + /* Used when adding the string. */ + char *temp; + + if (output == 0) + return 0; + + /* Setting the history expansion character to 0 inhibits all + history expansion. */ + if (history_expansion_char == 0) + { + *output = savestring (hstring); + return (0); + } + + /* Prepare the buffer for printing error messages. */ + result = (char *)xmalloc (result_len = 256); + result[0] = '\0'; + + only_printing = modified = 0; + l = strlen (hstring); + + /* Grovel the string. Only backslash and single quotes can quote the + history escape character. We also handle arg specifiers. */ + + /* Before we grovel forever, see if the history_expansion_char appears + anywhere within the text. */ + + /* The quick substitution character is a history expansion all right. That + is to say, "^this^that^" is equivalent to "!!:s^this^that^", and in fact, + that is the substitution that we do. */ + if (hstring[0] == history_subst_char) + { + string = (char *)xmalloc (l + 5); + + string[0] = string[1] = history_expansion_char; + string[2] = ':'; + string[3] = 's'; + strcpy (string + 4, hstring); + l += 4; + } + else + { +#if defined (HANDLE_MULTIBYTE) + memset (&ps, 0, sizeof (mbstate_t)); +#endif + + string = hstring; + /* If not quick substitution, still maybe have to do expansion. */ + + /* `!' followed by one of the characters in history_no_expand_chars + is NOT an expansion. */ + dquote = history_quoting_state == '"'; + squote = history_quoting_state == '\''; + + /* If the calling application tells us we are already reading a + single-quoted string, consume the rest of the string right now + and then go on. */ + i = 0; + if (squote && history_quotes_inhibit_expansion) + { + hist_string_extract_single_quoted (string, &i, 0); + squote = 0; + if (string[i]) + i++; + } + + for ( ; string[i]; i++) + { +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + int v; + v = _rl_get_char_len (string + i, &ps); + if (v > 1) + { + i += v - 1; + continue; + } + } +#endif /* HANDLE_MULTIBYTE */ + + cc = string[i + 1]; + /* The history_comment_char, if set, appearing at the beginning + of a word signifies that the rest of the line should not have + history expansion performed on it. + Skip the rest of the line and break out of the loop. */ + if (history_comment_char && string[i] == history_comment_char && + dquote == 0 && + (i == 0 || member (string[i - 1], history_word_delimiters))) + { + while (string[i]) + i++; + break; + } + else if (string[i] == history_expansion_char) + { + if (cc == 0 || member (cc, history_no_expand_chars)) + continue; + /* DQUOTE won't be set unless history_quotes_inhibit_expansion + is set. The idea here is to treat double-quoted strings the + same as the word outside double quotes; in effect making the + double quote part of history_no_expand_chars when DQUOTE is + set. */ + else if (dquote && cc == '"') + continue; + /* If the calling application has set + history_inhibit_expansion_function to a function that checks + for special cases that should not be history expanded, + call the function and skip the expansion if it returns a + non-zero value. */ + else if (history_inhibit_expansion_function && + (*history_inhibit_expansion_function) (string, i)) + continue; + else + break; + } + /* Shell-like quoting: allow backslashes to quote double quotes + inside a double-quoted string. */ + else if (dquote && string[i] == '\\' && cc == '"') + i++; + /* More shell-like quoting: if we're paying attention to single + quotes and letting them quote the history expansion character, + then we need to pay attention to double quotes, because single + quotes are not special inside double-quoted strings. */ + else if (history_quotes_inhibit_expansion && string[i] == '"') + { + dquote = 1 - dquote; + } + else if (dquote == 0 && history_quotes_inhibit_expansion && string[i] == '\'') + { + /* If this is bash, single quotes inhibit history expansion. */ + flag = (i > 0 && string[i - 1] == '$'); + i++; + hist_string_extract_single_quoted (string, &i, flag); + } + else if (history_quotes_inhibit_expansion && string[i] == '\\') + { + /* If this is bash, allow backslashes to quote single + quotes and the history expansion character. */ + if (cc == '\'' || cc == history_expansion_char) + i++; + } + + } + + if (string[i] != history_expansion_char) + { + xfree (result); + *output = savestring (string); + return (0); + } + } + + /* Extract and perform the substitution. */ + dquote = history_quoting_state == '"'; + squote = history_quoting_state == '\''; + + /* If the calling application tells us we are already reading a + single-quoted string, consume the rest of the string right now + and then go on. */ + i = j = 0; + if (squote && history_quotes_inhibit_expansion) + { + int c; + + hist_string_extract_single_quoted (string, &i, 0); + squote = 0; + for (c = 0; c < i; c++) + ADD_CHAR (string[c]); + if (string[i]) + { + ADD_CHAR (string[i]); + i++; + } + } + + for (passc = 0; i < l; i++) + { + int qc, tchar = string[i]; + + if (passc) + { + passc = 0; + ADD_CHAR (tchar); + continue; + } + +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + int k, c; + + c = tchar; + memset (mb, 0, sizeof (mb)); + for (k = 0; k < MB_LEN_MAX; k++) + { + mb[k] = (char)c; + memset (&ps, 0, sizeof (mbstate_t)); + if (_rl_get_char_len (mb, &ps) == -2) + c = string[++i]; + else + break; + } + if (strlen (mb) > 1) + { + ADD_STRING (mb); + continue; + } + } +#endif /* HANDLE_MULTIBYTE */ + + if (tchar == history_expansion_char) + tchar = -3; + else if (tchar == history_comment_char) + tchar = -2; + + switch (tchar) + { + default: + ADD_CHAR (string[i]); + break; + + case '\\': + passc++; + ADD_CHAR (tchar); + break; + + case '"': + dquote = 1 - dquote; + ADD_CHAR (tchar); + break; + + case '\'': + { + /* If history_quotes_inhibit_expansion is set, single quotes + inhibit history expansion, otherwise they are treated like + double quotes. */ + if (squote) + { + squote = 0; + ADD_CHAR (tchar); + } + else if (dquote == 0 && history_quotes_inhibit_expansion) + { + int quote, slen; + + flag = (i > 0 && string[i - 1] == '$'); + quote = i++; + hist_string_extract_single_quoted (string, &i, flag); + + slen = i - quote + 2; + temp = (char *)xmalloc (slen); + strncpy (temp, string + quote, slen); + temp[slen - 1] = '\0'; + ADD_STRING (temp); + xfree (temp); + } + else if (dquote == 0 && squote == 0 && history_quotes_inhibit_expansion == 0) + { + squote = 1; + ADD_CHAR (string[i]); + } + else + ADD_CHAR (string[i]); + break; + } + + case -2: /* history_comment_char */ + if ((dquote == 0 || history_quotes_inhibit_expansion == 0) && + (i == 0 || member (string[i - 1], history_word_delimiters))) + { + temp = (char *)xmalloc (l - i + 1); + strcpy (temp, string + i); + ADD_STRING (temp); + xfree (temp); + i = l; + } + else + ADD_CHAR (string[i]); + break; + + case -3: /* history_expansion_char */ + cc = string[i + 1]; + + /* If the history_expansion_char is followed by one of the + characters in history_no_expand_chars, then it is not a + candidate for expansion of any kind. */ + if (cc == 0 || member (cc, history_no_expand_chars) || + (dquote && cc == '"') || + (history_inhibit_expansion_function && (*history_inhibit_expansion_function) (string, i))) + { + ADD_CHAR (string[i]); + break; + } + +#if defined (NO_BANG_HASH_MODIFIERS) + /* There is something that is listed as a `word specifier' in csh + documentation which means `the expanded text to this point'. + That is not a word specifier, it is an event specifier. If we + don't want to allow modifiers with `!#', just stick the current + output line in again. */ + if (cc == '#') + { + if (result) + { + temp = (char *)xmalloc (1 + strlen (result)); + strcpy (temp, result); + ADD_STRING (temp); + xfree (temp); + } + i++; + break; + } +#endif + qc = squote ? '\'' : (dquote ? '"' : 0); + r = history_expand_internal (string, i, qc, &eindex, &temp, result); + if (r < 0) + { + *output = temp; + xfree (result); + if (string != hstring) + xfree (string); + return -1; + } + else + { + if (temp) + { + modified++; + if (*temp) + ADD_STRING (temp); + xfree (temp); + } + only_printing += r == 1; + i = eindex; + } + break; + } + } + + *output = result; + if (string != hstring) + xfree (string); + + if (only_printing) + { +#if 0 + add_history (result); +#endif + return (2); + } + + return (modified != 0); +} + +/* Return a consed string which is the word specified in SPEC, and found + in FROM. NULL is returned if there is no spec. The address of + ERROR_POINTER is returned if the word specified cannot be found. + CALLER_INDEX is the offset in SPEC to start looking; it is updated + to point to just after the last character parsed. */ +static char * +get_history_word_specifier (char *spec, char *from, int *caller_index) +{ + register int i = *caller_index; + int first, last; + int expecting_word_spec = 0; + char *result; + + /* The range of words to return doesn't exist yet. */ + first = last = 0; + result = (char *)NULL; + + /* If we found a colon, then this *must* be a word specification. If + it isn't, then it is an error. */ + if (spec[i] == ':') + { + i++; + expecting_word_spec++; + } + + /* Handle special cases first. */ + + /* `%' is the word last searched for. */ + if (spec[i] == '%') + { + *caller_index = i + 1; + return (search_match ? savestring (search_match) : savestring ("")); + } + + /* `*' matches all of the arguments, but not the command. */ + if (spec[i] == '*') + { + *caller_index = i + 1; + result = history_arg_extract (1, '$', from); + return (result ? result : savestring ("")); + } + + /* `$' is last arg. */ + if (spec[i] == '$') + { + *caller_index = i + 1; + return (history_arg_extract ('$', '$', from)); + } + + /* Try to get FIRST and LAST figured out. */ + + if (spec[i] == '-') + first = 0; + else if (spec[i] == '^') + { + first = 1; + i++; + } + else if (_rl_digit_p (spec[i]) && expecting_word_spec) + { + for (first = 0; _rl_digit_p (spec[i]); i++) + first = (first * 10) + _rl_digit_value (spec[i]); + } + else + return ((char *)NULL); /* no valid `first' for word specifier */ + + if (spec[i] == '^' || spec[i] == '*') + { + last = (spec[i] == '^') ? 1 : '$'; /* x* abbreviates x-$ */ + i++; + } + else if (spec[i] != '-') + last = first; + else + { + i++; + + if (_rl_digit_p (spec[i])) + { + for (last = 0; _rl_digit_p (spec[i]); i++) + last = (last * 10) + _rl_digit_value (spec[i]); + } + else if (spec[i] == '$') + { + i++; + last = '$'; + } + else if (spec[i] == '^') + { + i++; + last = 1; + } +#if 0 + else if (!spec[i] || spec[i] == ':') + /* check against `:' because there could be a modifier separator */ +#else + else + /* csh seems to allow anything to terminate the word spec here, + leaving it as an abbreviation. */ +#endif + last = -1; /* x- abbreviates x-$ omitting word `$' */ + } + + *caller_index = i; + + if (last >= first || last == '$' || last < 0) + result = history_arg_extract (first, last, from); + + return (result ? result : (char *)&error_pointer); +} + +/* Extract the args specified, starting at FIRST, and ending at LAST. + The args are taken from STRING. If either FIRST or LAST is < 0, + then make that arg count from the right (subtract from the number of + tokens, so that FIRST = -1 means the next to last token on the line). + If LAST is `$' the last arg from STRING is used. */ +char * +history_arg_extract (int first, int last, const char *string) +{ + register int i, len; + char *result; + int size, offset; + char **list; + + /* XXX - think about making history_tokenize return a struct array, + each struct in array being a string and a length to avoid the + calls to strlen below. */ + if ((list = history_tokenize (string)) == NULL) + return ((char *)NULL); + + for (len = 0; list[len]; len++) + ; + + if (last < 0) + last = len + last - 1; + + if (first < 0) + first = len + first - 1; + + if (last == '$') + last = len - 1; + + if (first == '$') + first = len - 1; + + last++; + + if (first >= len || last > len || first < 0 || last < 0 || first > last) + result = ((char *)NULL); + else + { + for (size = 0, i = first; i < last; i++) + size += strlen (list[i]) + 1; + result = (char *)xmalloc (size + 1); + result[0] = '\0'; + + for (i = first, offset = 0; i < last; i++) + { + strcpy (result + offset, list[i]); + offset += strlen (list[i]); + if (i + 1 < last) + { + result[offset++] = ' '; + result[offset] = 0; + } + } + } + + for (i = 0; i < len; i++) + xfree (list[i]); + xfree (list); + + return (result); +} + +static int +history_tokenize_word (const char *string, int ind) +{ + register int i, j; + int delimiter, nestdelim, delimopen; + + i = ind; + delimiter = nestdelim = 0; + + if (member (string[i], "()\n")) /* XXX - included \n, but why? been here forever */ + { + i++; + return i; + } + + if (ISDIGIT (string[i])) + { + j = i; + while (string[j] && ISDIGIT (string[j])) + j++; + if (string[j] == 0) + return (j); + if (string[j] == '<' || string[j] == '>') + i = j; /* digit sequence is a file descriptor */ + else + { + i = j; + goto get_word; /* digit sequence is part of a word */ + } + } + + if (member (string[i], "<>;&|")) + { + int peek = string[i + 1]; + + if (peek == string[i]) + { + if (peek == '<' && string[i + 2] == '-') + i++; + else if (peek == '<' && string[i + 2] == '<') + i++; + i += 2; + return i; + } + else if (peek == '&' && (string[i] == '>' || string[i] == '<')) + { + j = i + 2; + while (string[j] && ISDIGIT (string[j])) /* file descriptor */ + j++; + if (string[j] =='-') /* <&[digits]-, >&[digits]- */ + j++; + return j; + } + else if ((peek == '>' && string[i] == '&') || (peek == '|' && string[i] == '>')) + { + i += 2; + return i; + } + /* XXX - process substitution -- separated out for later -- bash-4.2 */ + else if (peek == '(' && (string[i] == '>' || string[i] == '<')) /*)*/ + { + i += 2; + delimopen = '('; + delimiter = ')'; + nestdelim = 1; + goto get_word; + } + + i++; + return i; + } + +get_word: + /* Get word from string + i; */ + + if (delimiter == 0 && member (string[i], HISTORY_QUOTE_CHARACTERS)) + delimiter = string[i++]; + + for (; string[i]; i++) + { + if (string[i] == '\\' && string[i + 1] == '\n') + { + i++; + continue; + } + + if (string[i] == '\\' && delimiter != '\'' && + (delimiter != '"' || member (string[i], slashify_in_quotes))) + { + i++; + continue; + } + + /* delimiter must be set and set to something other than a quote if + nestdelim is set, so these tests are safe. */ + if (nestdelim && string[i] == delimopen) + { + nestdelim++; + continue; + } + if (nestdelim && string[i] == delimiter) + { + nestdelim--; + if (nestdelim == 0) + delimiter = 0; + continue; + } + + if (delimiter && string[i] == delimiter) + { + delimiter = 0; + continue; + } + + /* Command and process substitution; shell extended globbing patterns */ + if (nestdelim == 0 && delimiter == 0 && member (string[i], "<>$!@?+*") && string[i+1] == '(') /*)*/ + { + i += 2; + delimopen = '('; + delimiter = ')'; + nestdelim = 1; + continue; + } + + if (delimiter == 0 && (member (string[i], history_word_delimiters))) + break; + + if (delimiter == 0 && member (string[i], HISTORY_QUOTE_CHARACTERS)) + delimiter = string[i]; + } + + return i; +} + +static char * +history_substring (const char *string, int start, int end) +{ + register int len; + register char *result; + + len = end - start; + result = (char *)xmalloc (len + 1); + strncpy (result, string + start, len); + result[len] = '\0'; + return result; +} + +/* Parse STRING into tokens and return an array of strings. If WIND is + not -1 and INDP is not null, we also want the word surrounding index + WIND. The position in the returned array of strings is returned in + *INDP. */ +static char ** +history_tokenize_internal (const char *string, int wind, int *indp) +{ + char **result; + register int i, start, result_index, size; + + /* If we're searching for a string that's not part of a word (e.g., " "), + make sure we set *INDP to a reasonable value. */ + if (indp && wind != -1) + *indp = -1; + + /* Get a token, and stuff it into RESULT. The tokens are split + exactly where the shell would split them. */ + for (i = result_index = size = 0, result = (char **)NULL; string[i]; ) + { + /* Skip leading whitespace. */ + for (; string[i] && fielddelim (string[i]); i++) + ; + if (string[i] == 0 || string[i] == history_comment_char) + return (result); + + start = i; + + i = history_tokenize_word (string, start); + + /* If we have a non-whitespace delimiter character (which would not be + skipped by the loop above), use it and any adjacent delimiters to + make a separate field. Any adjacent white space will be skipped the + next time through the loop. */ + if (i == start && history_word_delimiters) + { + i++; + while (string[i] && member (string[i], history_word_delimiters)) + i++; + } + + /* If we are looking for the word in which the character at a + particular index falls, remember it. */ + if (indp && wind != -1 && wind >= start && wind < i) + *indp = result_index; + + if (result_index + 2 >= size) + result = (char **)xrealloc (result, ((size += 10) * sizeof (char *))); + + result[result_index++] = history_substring (string, start, i); + result[result_index] = (char *)NULL; + } + + return (result); +} + +/* Return an array of tokens, much as the shell might. The tokens are + parsed out of STRING. */ +char ** +history_tokenize (const char *string) +{ + return (history_tokenize_internal (string, -1, (int *)NULL)); +} + +/* Free members of WORDS from START to an empty string */ +static void +freewords (char **words, int start) +{ + register int i; + + for (i = start; words[i]; i++) + xfree (words[i]); +} + +/* Find and return the word which contains the character at index IND + in the history line LINE. Used to save the word matched by the + last history !?string? search. */ +static char * +history_find_word (char *line, int ind) +{ + char **words, *s; + int i, wind; + + words = history_tokenize_internal (line, ind, &wind); + if (wind == -1 || words == 0) + { + if (words) + freewords (words, 0); + FREE (words); + return ((char *)NULL); + } + s = words[wind]; + for (i = 0; i < wind; i++) + xfree (words[i]); + freewords (words, wind + 1); + xfree (words); + return s; +} diff --git a/bash-5.1/lib/readline/histfile.c b/bash-5.1/lib/readline/histfile.c new file mode 100644 index 0000000..f0fa5ce --- /dev/null +++ b/bash-5.1/lib/readline/histfile.c @@ -0,0 +1,835 @@ +/* histfile.c - functions to manipulate the history file. */ + +/* Copyright (C) 1989-2019 Free Software Foundation, Inc. + + This file contains the GNU History Library (History), a set of + routines for managing the text of previously typed lines. + + 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 . +*/ + +/* The goal is to make the implementation transparent, so that you + don't have to know what data types are used, just what functions + you can call. I think I have done that. */ + +#define READLINE_LIBRARY + +#if defined (__TANDEM) +# define _XOPEN_SOURCE_EXTENDED 1 +# include +# include +#endif + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#if defined (HAVE_LIMITS_H) +# include +#endif + +#include +#if ! defined (_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif +#include "posixstat.h" +#include + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#if defined (__EMX__) +# undef HAVE_MMAP +#endif + +#ifdef HISTORY_USE_MMAP +# include + +# ifdef MAP_FILE +# define MAP_RFLAGS (MAP_FILE|MAP_PRIVATE) +# define MAP_WFLAGS (MAP_FILE|MAP_SHARED) +# else +# define MAP_RFLAGS MAP_PRIVATE +# define MAP_WFLAGS MAP_SHARED +# endif + +# ifndef MAP_FAILED +# define MAP_FAILED ((void *)-1) +# endif + +#endif /* HISTORY_USE_MMAP */ + +#if defined(_WIN32) +# define WIN32_LEAN_AND_MEAN +# include +#endif + +/* If we're compiling for __EMX__ (OS/2) or __CYGWIN__ (cygwin32 environment + on win 95/98/nt), we want to open files with O_BINARY mode so that there + is no \n -> \r\n conversion performed. On other systems, we don't want to + mess around with O_BINARY at all, so we ensure that it's defined to 0. */ +#if defined (__EMX__) || defined (__CYGWIN__) +# ifndef O_BINARY +# define O_BINARY 0 +# endif +#else /* !__EMX__ && !__CYGWIN__ */ +# undef O_BINARY +# define O_BINARY 0 +#endif /* !__EMX__ && !__CYGWIN__ */ + +#include +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#include "history.h" +#include "histlib.h" + +#include "rlshell.h" +#include "xmalloc.h" + +#if !defined (PATH_MAX) +# define PATH_MAX 1024 /* default */ +#endif + +extern void _hs_append_history_line PARAMS((int, const char *)); + +/* history file version; currently unused */ +int history_file_version = 1; + +/* If non-zero, we write timestamps to the history file in history_do_write() */ +int history_write_timestamps = 0; + +/* If non-zero, we assume that a history file that starts with a timestamp + uses timestamp-delimited entries and can include multi-line history + entries. Used by read_history_range */ +int history_multiline_entries = 0; + +/* Immediately after a call to read_history() or read_history_range(), this + will return the number of lines just read from the history file in that + call. */ +int history_lines_read_from_file = 0; + +/* Immediately after a call to write_history() or history_do_write(), this + will return the number of lines just written to the history file in that + call. This also works with history_truncate_file. */ +int history_lines_written_to_file = 0; + +/* Does S look like the beginning of a history timestamp entry? Placeholder + for more extensive tests. */ +#define HIST_TIMESTAMP_START(s) (*(s) == history_comment_char && isdigit ((unsigned char)(s)[1]) ) + +static char *history_backupfile PARAMS((const char *)); +static char *history_tempfile PARAMS((const char *)); +static int histfile_backup PARAMS((const char *, const char *)); +static int histfile_restore PARAMS((const char *, const char *)); +static int history_rename PARAMS((const char *, const char *)); + +/* Return the string that should be used in the place of this + filename. This only matters when you don't specify the + filename to read_history (), or write_history (). */ +static char * +history_filename (const char *filename) +{ + char *return_val; + const char *home; + int home_len; + + return_val = filename ? savestring (filename) : (char *)NULL; + + if (return_val) + return (return_val); + + home = sh_get_env_value ("HOME"); +#if defined (_WIN32) + if (home == 0) + home = sh_get_env_value ("APPDATA"); +#endif + + if (home == 0) + return (NULL); + else + home_len = strlen (home); + + return_val = (char *)xmalloc (2 + home_len + 8); /* strlen(".history") == 8 */ + strcpy (return_val, home); + return_val[home_len] = '/'; +#if defined (__MSDOS__) + strcpy (return_val + home_len + 1, "_history"); +#else + strcpy (return_val + home_len + 1, ".history"); +#endif + + return (return_val); +} + +static char * +history_backupfile (const char *filename) +{ + const char *fn; + char *ret, linkbuf[PATH_MAX+1]; + size_t len; + ssize_t n; + struct stat fs; + + fn = filename; +#if defined (HAVE_READLINK) + /* Follow symlink to avoid backing up symlink itself; call will fail if + not a symlink */ + if ((n = readlink (filename, linkbuf, sizeof (linkbuf) - 1)) > 0) + { + linkbuf[n] = '\0'; + fn = linkbuf; + } +#endif + + len = strlen (fn); + ret = xmalloc (len + 2); + strcpy (ret, fn); + ret[len] = '-'; + ret[len+1] = '\0'; + return ret; +} + +static char * +history_tempfile (const char *filename) +{ + const char *fn; + char *ret, linkbuf[PATH_MAX+1]; + size_t len; + ssize_t n; + struct stat fs; + int pid; + + fn = filename; +#if defined (HAVE_READLINK) + /* Follow symlink so tempfile created in the same directory as any symlinked + history file; call will fail if not a symlink */ + if ((n = readlink (filename, linkbuf, sizeof (linkbuf) - 1)) > 0) + { + linkbuf[n] = '\0'; + fn = linkbuf; + } +#endif + + len = strlen (fn); + ret = xmalloc (len + 11); + strcpy (ret, fn); + + pid = (int)getpid (); + + /* filename-PID.tmp */ + ret[len] = '-'; + ret[len+1] = (pid / 10000 % 10) + '0'; + ret[len+2] = (pid / 1000 % 10) + '0'; + ret[len+3] = (pid / 100 % 10) + '0'; + ret[len+4] = (pid / 10 % 10) + '0'; + ret[len+5] = (pid % 10) + '0'; + strcpy (ret + len + 6, ".tmp"); + + return ret; +} + +/* Add the contents of FILENAME to the history list, a line at a time. + If FILENAME is NULL, then read from ~/.history. Returns 0 if + successful, or errno if not. */ +int +read_history (const char *filename) +{ + return (read_history_range (filename, 0, -1)); +} + +/* Read a range of lines from FILENAME, adding them to the history list. + Start reading at the FROM'th line and end at the TO'th. If FROM + is zero, start at the beginning. If TO is less than FROM, read + until the end of the file. If FILENAME is NULL, then read from + ~/.history. Returns 0 if successful, or errno if not. */ +int +read_history_range (const char *filename, int from, int to) +{ + register char *line_start, *line_end, *p; + char *input, *buffer, *bufend, *last_ts; + int file, current_line, chars_read, has_timestamps, reset_comment_char; + struct stat finfo; + size_t file_size; +#if defined (EFBIG) + int overflow_errno = EFBIG; +#elif defined (EOVERFLOW) + int overflow_errno = EOVERFLOW; +#else + int overflow_errno = EIO; +#endif + + history_lines_read_from_file = 0; + + buffer = last_ts = (char *)NULL; + input = history_filename (filename); + file = input ? open (input, O_RDONLY|O_BINARY, 0666) : -1; + + if ((file < 0) || (fstat (file, &finfo) == -1)) + goto error_and_exit; + + if (S_ISREG (finfo.st_mode) == 0) + { +#ifdef EFTYPE + errno = EFTYPE; +#else + errno = EINVAL; +#endif + goto error_and_exit; + } + + file_size = (size_t)finfo.st_size; + + /* check for overflow on very large files */ + if (file_size != finfo.st_size || file_size + 1 < file_size) + { + errno = overflow_errno; + goto error_and_exit; + } + + if (file_size == 0) + { + free (input); + close (file); + return 0; /* don't waste time if we don't have to */ + } + +#ifdef HISTORY_USE_MMAP + /* We map read/write and private so we can change newlines to NULs without + affecting the underlying object. */ + buffer = (char *)mmap (0, file_size, PROT_READ|PROT_WRITE, MAP_RFLAGS, file, 0); + if ((void *)buffer == MAP_FAILED) + { + errno = overflow_errno; + goto error_and_exit; + } + chars_read = file_size; +#else + buffer = (char *)malloc (file_size + 1); + if (buffer == 0) + { + errno = overflow_errno; + goto error_and_exit; + } + + chars_read = read (file, buffer, file_size); +#endif + if (chars_read < 0) + { + error_and_exit: + if (errno != 0) + chars_read = errno; + else + chars_read = EIO; + if (file >= 0) + close (file); + + FREE (input); +#ifndef HISTORY_USE_MMAP + FREE (buffer); +#endif + + return (chars_read); + } + + close (file); + + /* Set TO to larger than end of file if negative. */ + if (to < 0) + to = chars_read; + + /* Start at beginning of file, work to end. */ + bufend = buffer + chars_read; + *bufend = '\0'; /* null-terminate buffer for timestamp checks */ + current_line = 0; + + /* Heuristic: the history comment character rarely changes, so assume we + have timestamps if the buffer starts with `#[:digit:]' and temporarily + set history_comment_char so timestamp parsing works right */ + reset_comment_char = 0; + if (history_comment_char == '\0' && buffer[0] == '#' && isdigit ((unsigned char)buffer[1])) + { + history_comment_char = '#'; + reset_comment_char = 1; + } + + has_timestamps = HIST_TIMESTAMP_START (buffer); + history_multiline_entries += has_timestamps && history_write_timestamps; + + /* Skip lines until we are at FROM. */ + if (has_timestamps) + last_ts = buffer; + for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++) + if (*line_end == '\n') + { + p = line_end + 1; + /* If we see something we think is a timestamp, continue with this + line. We should check more extensively here... */ + if (HIST_TIMESTAMP_START(p) == 0) + current_line++; + else + last_ts = p; + line_start = p; + /* If we are at the last line (current_line == from) but we have + timestamps (has_timestamps), then line_start points to the + text of the last command, and we need to skip to its end. */ + if (current_line >= from && has_timestamps) + { + for (line_end = p; line_end < bufend && *line_end != '\n'; line_end++) + ; + line_start = (*line_end == '\n') ? line_end + 1 : line_end; + } + } + + /* If there are lines left to gobble, then gobble them now. */ + for (line_end = line_start; line_end < bufend; line_end++) + if (*line_end == '\n') + { + /* Change to allow Windows-like \r\n end of line delimiter. */ + if (line_end > line_start && line_end[-1] == '\r') + line_end[-1] = '\0'; + else + *line_end = '\0'; + + if (*line_start) + { + if (HIST_TIMESTAMP_START(line_start) == 0) + { + if (last_ts == NULL && history_length > 0 && history_multiline_entries) + _hs_append_history_line (history_length - 1, line_start); + else + add_history (line_start); + if (last_ts) + { + add_history_time (last_ts); + last_ts = NULL; + } + } + else + { + last_ts = line_start; + current_line--; + } + } + + current_line++; + + if (current_line >= to) + break; + + line_start = line_end + 1; + } + + history_lines_read_from_file = current_line; + if (reset_comment_char) + history_comment_char = '\0'; + + FREE (input); +#ifndef HISTORY_USE_MMAP + FREE (buffer); +#else + munmap (buffer, file_size); +#endif + + return (0); +} + +/* We need a special version for WIN32 because Windows rename() refuses to + overwrite an existing file. */ +static int +history_rename (const char *old, const char *new) +{ +#if defined (_WIN32) + return (MoveFileEx (old, new, MOVEFILE_REPLACE_EXISTING) == 0 ? -1 : 0); +#else + return (rename (old, new)); +#endif +} + +/* Save FILENAME to BACK, handling case where FILENAME is a symlink + (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */ +static int +histfile_backup (const char *filename, const char *back) +{ +#if defined (HAVE_READLINK) + char linkbuf[PATH_MAX+1]; + ssize_t n; + + /* Follow to target of symlink to avoid renaming symlink itself */ + if ((n = readlink (filename, linkbuf, sizeof (linkbuf) - 1)) > 0) + { + linkbuf[n] = '\0'; + return (history_rename (linkbuf, back)); + } +#endif + return (history_rename (filename, back)); +} + +/* Restore ORIG from BACKUP handling case where ORIG is a symlink + (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */ +static int +histfile_restore (const char *backup, const char *orig) +{ +#if defined (HAVE_READLINK) + char linkbuf[PATH_MAX+1]; + ssize_t n; + + /* Follow to target of symlink to avoid renaming symlink itself */ + if ((n = readlink (orig, linkbuf, sizeof (linkbuf) - 1)) > 0) + { + linkbuf[n] = '\0'; + return (history_rename (backup, linkbuf)); + } +#endif + return (history_rename (backup, orig)); +} + +/* Should we call chown, based on whether finfo and nfinfo describe different + files with different owners? */ + +#define SHOULD_CHOWN(finfo, nfinfo) \ + (finfo.st_uid != nfinfo.st_uid || finfo.st_gid != nfinfo.st_gid) + +/* Truncate the history file FNAME, leaving only LINES trailing lines. + If FNAME is NULL, then use ~/.history. Writes a new file and renames + it to the original name. Returns 0 on success, errno on failure. */ +int +history_truncate_file (const char *fname, int lines) +{ + char *buffer, *filename, *tempname, *bp, *bp1; /* bp1 == bp+1 */ + int file, chars_read, rv, orig_lines, exists, r; + struct stat finfo, nfinfo; + size_t file_size; + + history_lines_written_to_file = 0; + + buffer = (char *)NULL; + filename = history_filename (fname); + tempname = 0; + file = filename ? open (filename, O_RDONLY|O_BINARY, 0666) : -1; + rv = exists = 0; + + /* Don't try to truncate non-regular files. */ + if (file == -1 || fstat (file, &finfo) == -1) + { + rv = errno; + if (file != -1) + close (file); + goto truncate_exit; + } + exists = 1; + + nfinfo.st_uid = finfo.st_uid; + nfinfo.st_gid = finfo.st_gid; + + if (S_ISREG (finfo.st_mode) == 0) + { + close (file); +#ifdef EFTYPE + rv = EFTYPE; +#else + rv = EINVAL; +#endif + goto truncate_exit; + } + + file_size = (size_t)finfo.st_size; + + /* check for overflow on very large files */ + if (file_size != finfo.st_size || file_size + 1 < file_size) + { + close (file); +#if defined (EFBIG) + rv = errno = EFBIG; +#elif defined (EOVERFLOW) + rv = errno = EOVERFLOW; +#else + rv = errno = EINVAL; +#endif + goto truncate_exit; + } + + buffer = (char *)malloc (file_size + 1); + if (buffer == 0) + { + rv = errno; + close (file); + goto truncate_exit; + } + + chars_read = read (file, buffer, file_size); + close (file); + + if (chars_read <= 0) + { + rv = (chars_read < 0) ? errno : 0; + goto truncate_exit; + } + + orig_lines = lines; + /* Count backwards from the end of buffer until we have passed + LINES lines. bp1 is set funny initially. But since bp[1] can't + be a comment character (since it's off the end) and *bp can't be + both a newline and the history comment character, it should be OK. */ + for (bp1 = bp = buffer + chars_read - 1; lines && bp > buffer; bp--) + { + if (*bp == '\n' && HIST_TIMESTAMP_START(bp1) == 0) + lines--; + bp1 = bp; + } + + /* If this is the first line, then the file contains exactly the + number of lines we want to truncate to, so we don't need to do + anything. It's the first line if we don't find a newline between + the current value of i and 0. Otherwise, write from the start of + this line until the end of the buffer. */ + for ( ; bp > buffer; bp--) + { + if (*bp == '\n' && HIST_TIMESTAMP_START(bp1) == 0) + { + bp++; + break; + } + bp1 = bp; + } + + /* Write only if there are more lines in the file than we want to + truncate to. */ + if (bp <= buffer) + { + rv = 0; + /* No-op if LINES == 0 at this point */ + history_lines_written_to_file = orig_lines - lines; + goto truncate_exit; + } + + tempname = history_tempfile (filename); + + if ((file = open (tempname, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0600)) != -1) + { + if (write (file, bp, chars_read - (bp - buffer)) < 0) + rv = errno; + + if (fstat (file, &nfinfo) < 0 && rv == 0) + rv = errno; + + if (close (file) < 0 && rv == 0) + rv = errno; + } + else + rv = errno; + + truncate_exit: + FREE (buffer); + + history_lines_written_to_file = orig_lines - lines; + + if (rv == 0 && filename && tempname) + rv = histfile_restore (tempname, filename); + + if (rv != 0) + { + rv = errno; + if (tempname) + unlink (tempname); + history_lines_written_to_file = 0; + } + +#if defined (HAVE_CHOWN) + /* Make sure the new filename is owned by the same user as the old. If one + user is running this, it's a no-op. If the shell is running after sudo + with a shared history file, we don't want to leave the history file + owned by root. */ + if (rv == 0 && exists && SHOULD_CHOWN (finfo, nfinfo)) + r = chown (filename, finfo.st_uid, finfo.st_gid); +#endif + + xfree (filename); + FREE (tempname); + + return rv; +} + +/* Workhorse function for writing history. Writes the last NELEMENT entries + from the history list to FILENAME. OVERWRITE is non-zero if you + wish to replace FILENAME with the entries. */ +static int +history_do_write (const char *filename, int nelements, int overwrite) +{ + register int i; + char *output, *tempname, *histname; + int file, mode, rv, exists; + struct stat finfo, nfinfo; +#ifdef HISTORY_USE_MMAP + size_t cursize; + + history_lines_written_to_file = 0; + + mode = overwrite ? O_RDWR|O_CREAT|O_TRUNC|O_BINARY : O_RDWR|O_APPEND|O_BINARY; +#else + mode = overwrite ? O_WRONLY|O_CREAT|O_TRUNC|O_BINARY : O_WRONLY|O_APPEND|O_BINARY; +#endif + histname = history_filename (filename); + exists = histname ? (stat (histname, &finfo) == 0) : 0; + + tempname = (overwrite && exists && S_ISREG (finfo.st_mode)) ? history_tempfile (histname) : 0; + output = tempname ? tempname : histname; + + file = output ? open (output, mode, 0600) : -1; + rv = 0; + + if (file == -1) + { + rv = errno; + FREE (histname); + FREE (tempname); + return (rv); + } + +#ifdef HISTORY_USE_MMAP + cursize = overwrite ? 0 : lseek (file, 0, SEEK_END); +#endif + + if (nelements > history_length) + nelements = history_length; + + /* Build a buffer of all the lines to write, and write them in one syscall. + Suggested by Peter Ho (peter@robosts.oxford.ac.uk). */ + { + HIST_ENTRY **the_history; /* local */ + register int j; + int buffer_size; + char *buffer; + + the_history = history_list (); + /* Calculate the total number of bytes to write. */ + for (buffer_size = 0, i = history_length - nelements; i < history_length; i++) + { + if (history_write_timestamps && the_history[i]->timestamp && the_history[i]->timestamp[0]) + buffer_size += strlen (the_history[i]->timestamp) + 1; + buffer_size += strlen (the_history[i]->line) + 1; + } + + /* Allocate the buffer, and fill it. */ +#ifdef HISTORY_USE_MMAP + if (ftruncate (file, buffer_size+cursize) == -1) + goto mmap_error; + buffer = (char *)mmap (0, buffer_size, PROT_READ|PROT_WRITE, MAP_WFLAGS, file, cursize); + if ((void *)buffer == MAP_FAILED) + { +mmap_error: + rv = errno; + close (file); + if (tempname) + unlink (tempname); + FREE (histname); + FREE (tempname); + return rv; + } +#else + buffer = (char *)malloc (buffer_size); + if (buffer == 0) + { + rv = errno; + close (file); + if (tempname) + unlink (tempname); + FREE (histname); + FREE (tempname); + return rv; + } +#endif + + for (j = 0, i = history_length - nelements; i < history_length; i++) + { + if (history_write_timestamps && the_history[i]->timestamp && the_history[i]->timestamp[0]) + { + strcpy (buffer + j, the_history[i]->timestamp); + j += strlen (the_history[i]->timestamp); + buffer[j++] = '\n'; + } + strcpy (buffer + j, the_history[i]->line); + j += strlen (the_history[i]->line); + buffer[j++] = '\n'; + } + +#ifdef HISTORY_USE_MMAP + if (msync (buffer, buffer_size, MS_ASYNC) != 0 || munmap (buffer, buffer_size) != 0) + rv = errno; +#else + if (write (file, buffer, buffer_size) < 0) + rv = errno; + xfree (buffer); +#endif + } + + history_lines_written_to_file = nelements; + + if (close (file) < 0 && rv == 0) + rv = errno; + + if (rv == 0 && histname && tempname) + rv = histfile_restore (tempname, histname); + + if (rv != 0) + { + rv = errno; + if (tempname) + unlink (tempname); + history_lines_written_to_file = 0; + } + +#if defined (HAVE_CHOWN) + /* Make sure the new filename is owned by the same user as the old. If one + user is running this, it's a no-op. If the shell is running after sudo + with a shared history file, we don't want to leave the history file + owned by root. */ + if (rv == 0 && exists) + mode = chown (histname, finfo.st_uid, finfo.st_gid); +#endif + + FREE (histname); + FREE (tempname); + + return (rv); +} + +/* Append NELEMENT entries to FILENAME. The entries appended are from + the end of the list minus NELEMENTs up to the end of the list. */ +int +append_history (int nelements, const char *filename) +{ + return (history_do_write (filename, nelements, HISTORY_APPEND)); +} + +/* Overwrite FILENAME with the current history. If FILENAME is NULL, + then write the history list to ~/.history. Values returned + are as in read_history ().*/ +int +write_history (const char *filename) +{ + return (history_do_write (filename, history_length, HISTORY_OVERWRITE)); +} diff --git a/bash-5.1/lib/readline/histlib.h b/bash-5.1/lib/readline/histlib.h new file mode 100644 index 0000000..9627b24 --- /dev/null +++ b/bash-5.1/lib/readline/histlib.h @@ -0,0 +1,85 @@ +/* histlib.h -- internal definitions for the history library. */ + +/* Copyright (C) 1989-2009 Free Software Foundation, Inc. + + This file contains the GNU History Library (History), a set of + routines for managing the text of previously typed lines. + + 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 . +*/ + +#if !defined (_HISTLIB_H_) +#define _HISTLIB_H_ + +#if defined (HAVE_STRING_H) +# include +#else +# include +#endif /* !HAVE_STRING_H */ + +#if !defined (STREQ) +#define STREQ(a, b) (((a)[0] == (b)[0]) && (strcmp ((a), (b)) == 0)) +#define STREQN(a, b, n) (((n) == 0) ? (1) \ + : ((a)[0] == (b)[0]) && (strncmp ((a), (b), (n)) == 0)) +#endif + +#ifndef savestring +#define savestring(x) strcpy (xmalloc (1 + strlen (x)), (x)) +#endif + +#ifndef whitespace +#define whitespace(c) (((c) == ' ') || ((c) == '\t')) +#endif + +#ifndef _rl_digit_p +#define _rl_digit_p(c) ((c) >= '0' && (c) <= '9') +#endif + +#ifndef _rl_digit_value +#define _rl_digit_value(c) ((c) - '0') +#endif + +#ifndef member +# if !defined (strchr) && !defined (__STDC__) +extern char *strchr (); +# endif /* !strchr && !__STDC__ */ +#define member(c, s) ((c) ? ((char *)strchr ((s), (c)) != (char *)NULL) : 0) +#endif + +#ifndef FREE +# define FREE(x) if (x) free (x) +#endif + +/* Possible history errors passed to hist_error. */ +#define EVENT_NOT_FOUND 0 +#define BAD_WORD_SPEC 1 +#define SUBST_FAILED 2 +#define BAD_MODIFIER 3 +#define NO_PREV_SUBST 4 + +/* Possible definitions for history starting point specification. */ +#define NON_ANCHORED_SEARCH 0 +#define ANCHORED_SEARCH 0x01 +#define PATTERN_SEARCH 0x02 + +/* Possible definitions for what style of writing the history file we want. */ +#define HISTORY_APPEND 0 +#define HISTORY_OVERWRITE 1 + +/* internal extern function declarations used by other parts of the library */ + +/* histsearch.c */ +extern int _hs_history_patsearch PARAMS((const char *, int, int)); + +#endif /* !_HISTLIB_H_ */ diff --git a/bash-5.1/lib/readline/history.c b/bash-5.1/lib/readline/history.c new file mode 100644 index 0000000..67158b1 --- /dev/null +++ b/bash-5.1/lib/readline/history.c @@ -0,0 +1,607 @@ +/* history.c -- standalone history library */ + +/* Copyright (C) 1989-2017 Free Software Foundation, Inc. + + This file contains the GNU History Library (History), a set of + routines for managing the text of previously typed lines. + + 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 . +*/ + +/* The goal is to make the implementation transparent, so that you + don't have to know what data types are used, just what functions + you can call. I think I have done that. */ +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include + +#include "history.h" +#include "histlib.h" + +#include "xmalloc.h" + +#if !defined (errno) +extern int errno; +#endif + +/* How big to make the_history when we first allocate it. */ +#define DEFAULT_HISTORY_INITIAL_SIZE 502 + +#define MAX_HISTORY_INITIAL_SIZE 8192 + +/* The number of slots to increase the_history by. */ +#define DEFAULT_HISTORY_GROW_SIZE 50 + +static char *hist_inittime PARAMS((void)); + +/* **************************************************************** */ +/* */ +/* History Functions */ +/* */ +/* **************************************************************** */ + +/* An array of HIST_ENTRY. This is where we store the history. */ +static HIST_ENTRY **the_history = (HIST_ENTRY **)NULL; + +/* Non-zero means that we have enforced a limit on the amount of + history that we save. */ +static int history_stifled; + +/* The current number of slots allocated to the input_history. */ +static int history_size; + +/* If HISTORY_STIFLED is non-zero, then this is the maximum number of + entries to remember. */ +int history_max_entries; +int max_input_history; /* backwards compatibility */ + +/* The current location of the interactive history pointer. Just makes + life easier for outside callers. */ +int history_offset; + +/* The number of strings currently stored in the history list. */ +int history_length; + +/* The logical `base' of the history array. It defaults to 1. */ +int history_base = 1; + +/* Return the current HISTORY_STATE of the history. */ +HISTORY_STATE * +history_get_history_state (void) +{ + HISTORY_STATE *state; + + state = (HISTORY_STATE *)xmalloc (sizeof (HISTORY_STATE)); + state->entries = the_history; + state->offset = history_offset; + state->length = history_length; + state->size = history_size; + state->flags = 0; + if (history_stifled) + state->flags |= HS_STIFLED; + + return (state); +} + +/* Set the state of the current history array to STATE. */ +void +history_set_history_state (HISTORY_STATE *state) +{ + the_history = state->entries; + history_offset = state->offset; + history_length = state->length; + history_size = state->size; + if (state->flags & HS_STIFLED) + history_stifled = 1; +} + +/* Begin a session in which the history functions might be used. This + initializes interactive variables. */ +void +using_history (void) +{ + history_offset = history_length; +} + +/* Return the number of bytes that the primary history entries are using. + This just adds up the lengths of the_history->lines and the associated + timestamps. */ +int +history_total_bytes (void) +{ + register int i, result; + + for (i = result = 0; the_history && the_history[i]; i++) + result += HISTENT_BYTES (the_history[i]); + + return (result); +} + +/* Returns the magic number which says what history element we are + looking at now. In this implementation, it returns history_offset. */ +int +where_history (void) +{ + return (history_offset); +} + +/* Make the current history item be the one at POS, an absolute index. + Returns zero if POS is out of range, else non-zero. */ +int +history_set_pos (int pos) +{ + if (pos > history_length || pos < 0 || !the_history) + return (0); + history_offset = pos; + return (1); +} + +/* Return the current history array. The caller has to be careful, since this + is the actual array of data, and could be bashed or made corrupt easily. + The array is terminated with a NULL pointer. */ +HIST_ENTRY ** +history_list (void) +{ + return (the_history); +} + +/* Return the history entry at the current position, as determined by + history_offset. If there is no entry there, return a NULL pointer. */ +HIST_ENTRY * +current_history (void) +{ + return ((history_offset == history_length) || the_history == 0) + ? (HIST_ENTRY *)NULL + : the_history[history_offset]; +} + +/* Back up history_offset to the previous history entry, and return + a pointer to that entry. If there is no previous entry then return + a NULL pointer. */ +HIST_ENTRY * +previous_history (void) +{ + return history_offset ? the_history[--history_offset] : (HIST_ENTRY *)NULL; +} + +/* Move history_offset forward to the next history entry, and return + a pointer to that entry. If there is no next entry then return a + NULL pointer. */ +HIST_ENTRY * +next_history (void) +{ + return (history_offset == history_length) ? (HIST_ENTRY *)NULL : the_history[++history_offset]; +} + +/* Return the history entry which is logically at OFFSET in the history array. + OFFSET is relative to history_base. */ +HIST_ENTRY * +history_get (int offset) +{ + int local_index; + + local_index = offset - history_base; + return (local_index >= history_length || local_index < 0 || the_history == 0) + ? (HIST_ENTRY *)NULL + : the_history[local_index]; +} + +HIST_ENTRY * +alloc_history_entry (char *string, char *ts) +{ + HIST_ENTRY *temp; + + temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY)); + + temp->line = string ? savestring (string) : string; + temp->data = (char *)NULL; + temp->timestamp = ts; + + return temp; +} + +time_t +history_get_time (HIST_ENTRY *hist) +{ + char *ts; + time_t t; + + if (hist == 0 || hist->timestamp == 0) + return 0; + ts = hist->timestamp; + if (ts[0] != history_comment_char) + return 0; + errno = 0; + t = (time_t) strtol (ts + 1, (char **)NULL, 10); /* XXX - should use strtol() here */ + if (errno == ERANGE) + return (time_t)0; + return t; +} + +static char * +hist_inittime (void) +{ + time_t t; + char ts[64], *ret; + + t = (time_t) time ((time_t *)0); +#if defined (HAVE_VSNPRINTF) /* assume snprintf if vsnprintf exists */ + snprintf (ts, sizeof (ts) - 1, "X%lu", (unsigned long) t); +#else + sprintf (ts, "X%lu", (unsigned long) t); +#endif + ret = savestring (ts); + ret[0] = history_comment_char; + + return ret; +} + +/* Place STRING at the end of the history list. The data field + is set to NULL. */ +void +add_history (const char *string) +{ + HIST_ENTRY *temp; + int new_length; + + if (history_stifled && (history_length == history_max_entries)) + { + register int i; + + /* If the history is stifled, and history_length is zero, + and it equals history_max_entries, we don't save items. */ + if (history_length == 0) + return; + + /* If there is something in the slot, then remove it. */ + if (the_history[0]) + (void) free_history_entry (the_history[0]); + + /* Copy the rest of the entries, moving down one slot. Copy includes + trailing NULL. */ + memmove (the_history, the_history + 1, history_length * sizeof (HIST_ENTRY *)); + + new_length = history_length; + history_base++; + } + else + { + if (history_size == 0) + { + if (history_stifled && history_max_entries > 0) + history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE) + ? MAX_HISTORY_INITIAL_SIZE + : history_max_entries + 2; + else + history_size = DEFAULT_HISTORY_INITIAL_SIZE; + the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *)); + new_length = 1; + } + else + { + if (history_length == (history_size - 1)) + { + history_size += DEFAULT_HISTORY_GROW_SIZE; + the_history = (HIST_ENTRY **) + xrealloc (the_history, history_size * sizeof (HIST_ENTRY *)); + } + new_length = history_length + 1; + } + } + + temp = alloc_history_entry ((char *)string, hist_inittime ()); + + the_history[new_length] = (HIST_ENTRY *)NULL; + the_history[new_length - 1] = temp; + history_length = new_length; +} + +/* Change the time stamp of the most recent history entry to STRING. */ +void +add_history_time (const char *string) +{ + HIST_ENTRY *hs; + + if (string == 0 || history_length < 1) + return; + hs = the_history[history_length - 1]; + FREE (hs->timestamp); + hs->timestamp = savestring (string); +} + +/* Free HIST and return the data so the calling application can free it + if necessary and desired. */ +histdata_t +free_history_entry (HIST_ENTRY *hist) +{ + histdata_t x; + + if (hist == 0) + return ((histdata_t) 0); + FREE (hist->line); + FREE (hist->timestamp); + x = hist->data; + xfree (hist); + return (x); +} + +HIST_ENTRY * +copy_history_entry (HIST_ENTRY *hist) +{ + HIST_ENTRY *ret; + char *ts; + + if (hist == 0) + return hist; + + ret = alloc_history_entry (hist->line, (char *)NULL); + + ts = hist->timestamp ? savestring (hist->timestamp) : hist->timestamp; + ret->timestamp = ts; + + ret->data = hist->data; + + return ret; +} + +/* Make the history entry at WHICH have LINE and DATA. This returns + the old entry so you can dispose of the data. In the case of an + invalid WHICH, a NULL pointer is returned. */ +HIST_ENTRY * +replace_history_entry (int which, const char *line, histdata_t data) +{ + HIST_ENTRY *temp, *old_value; + + if (which < 0 || which >= history_length) + return ((HIST_ENTRY *)NULL); + + temp = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY)); + old_value = the_history[which]; + + temp->line = savestring (line); + temp->data = data; + temp->timestamp = savestring (old_value->timestamp); + the_history[which] = temp; + + return (old_value); +} + +/* Append LINE to the history line at offset WHICH, adding a newline to the + end of the current line first. This can be used to construct multi-line + history entries while reading lines from the history file. */ +void +_hs_append_history_line (int which, const char *line) +{ + HIST_ENTRY *hent; + size_t newlen, curlen, minlen; + char *newline; + + hent = the_history[which]; + curlen = strlen (hent->line); + minlen = curlen + strlen (line) + 2; /* min space needed */ + if (curlen > 256) /* XXX - for now */ + { + newlen = 512; /* now realloc in powers of 2 */ + /* we recalcluate every time; the operations are cheap */ + while (newlen < minlen) + newlen <<= 1; + } + else + newlen = minlen; + /* Assume that realloc returns the same pointer and doesn't try a new + alloc/copy if the new size is the same as the one last passed. */ + newline = realloc (hent->line, newlen); + if (newline) + { + hent->line = newline; + hent->line[curlen++] = '\n'; + strcpy (hent->line + curlen, line); + } +} + +/* Replace the DATA in the specified history entries, replacing OLD with + NEW. WHICH says which one(s) to replace: WHICH == -1 means to replace + all of the history entries where entry->data == OLD; WHICH == -2 means + to replace the `newest' history entry where entry->data == OLD; and + WHICH >= 0 means to replace that particular history entry's data, as + long as it matches OLD. */ +void +_hs_replace_history_data (int which, histdata_t *old, histdata_t *new) +{ + HIST_ENTRY *entry; + register int i, last; + + if (which < -2 || which >= history_length || history_length == 0 || the_history == 0) + return; + + if (which >= 0) + { + entry = the_history[which]; + if (entry && entry->data == old) + entry->data = new; + return; + } + + last = -1; + for (i = 0; i < history_length; i++) + { + entry = the_history[i]; + if (entry == 0) + continue; + if (entry->data == old) + { + last = i; + if (which == -1) + entry->data = new; + } + } + if (which == -2 && last >= 0) + { + entry = the_history[last]; + entry->data = new; /* XXX - we don't check entry->old */ + } +} + +/* Remove history element WHICH from the history. The removed + element is returned to you so you can free the line, data, + and containing structure. */ +HIST_ENTRY * +remove_history (int which) +{ + HIST_ENTRY *return_value; + register int i; +#if 1 + int nentries; + HIST_ENTRY **start, **end; +#endif + + if (which < 0 || which >= history_length || history_length == 0 || the_history == 0) + return ((HIST_ENTRY *)NULL); + + return_value = the_history[which]; + +#if 1 + /* Copy the rest of the entries, moving down one slot. Copy includes + trailing NULL. */ + nentries = history_length - which; + start = the_history + which; + end = start + 1; + memmove (start, end, nentries * sizeof (HIST_ENTRY *)); +#else + for (i = which; i < history_length; i++) + the_history[i] = the_history[i + 1]; +#endif + + history_length--; + + return (return_value); +} + +HIST_ENTRY ** +remove_history_range (int first, int last) +{ + HIST_ENTRY **return_value; + register int i; + int nentries; + HIST_ENTRY **start, **end; + + if (the_history == 0 || history_length == 0) + return ((HIST_ENTRY **)NULL); + if (first < 0 || first >= history_length || last < 0 || last >= history_length) + return ((HIST_ENTRY **)NULL); + if (first > last) + return (HIST_ENTRY **)NULL; + + nentries = last - first + 1; + return_value = (HIST_ENTRY **)malloc ((nentries + 1) * sizeof (HIST_ENTRY *)); + if (return_value == 0) + return return_value; + + /* Return all the deleted entries in a list */ + for (i = first ; i <= last; i++) + return_value[i - first] = the_history[i]; + return_value[i - first] = (HIST_ENTRY *)NULL; + + /* Copy the rest of the entries, moving down NENTRIES slots. Copy includes + trailing NULL. */ + start = the_history + first; + end = the_history + last + 1; + memmove (start, end, (history_length - last) * sizeof (HIST_ENTRY *)); + + history_length -= nentries; + + return (return_value); +} + +/* Stifle the history list, remembering only MAX number of lines. */ +void +stifle_history (int max) +{ + register int i, j; + + if (max < 0) + max = 0; + + if (history_length > max) + { + /* This loses because we cannot free the data. */ + for (i = 0, j = history_length - max; i < j; i++) + free_history_entry (the_history[i]); + + history_base = i; + for (j = 0, i = history_length - max; j < max; i++, j++) + the_history[j] = the_history[i]; + the_history[j] = (HIST_ENTRY *)NULL; + history_length = j; + } + + history_stifled = 1; + max_input_history = history_max_entries = max; +} + +/* Stop stifling the history. This returns the previous maximum + number of history entries. The value is positive if the history + was stifled, negative if it wasn't. */ +int +unstifle_history (void) +{ + if (history_stifled) + { + history_stifled = 0; + return (history_max_entries); + } + else + return (-history_max_entries); +} + +int +history_is_stifled (void) +{ + return (history_stifled); +} + +void +clear_history (void) +{ + register int i; + + /* This loses because we cannot free the data. */ + for (i = 0; i < history_length; i++) + { + free_history_entry (the_history[i]); + the_history[i] = (HIST_ENTRY *)NULL; + } + + history_offset = history_length = 0; + history_base = 1; /* reset history base to default */ +} diff --git a/bash-5.1/lib/readline/history.h b/bash-5.1/lib/readline/history.h new file mode 100644 index 0000000..cc3de29 --- /dev/null +++ b/bash-5.1/lib/readline/history.h @@ -0,0 +1,286 @@ +/* history.h -- the names of functions that you can call in history. */ + +/* Copyright (C) 1989-2015 Free Software Foundation, Inc. + + This file contains the GNU History Library (History), a set of + routines for managing the text of previously typed lines. + + 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 . +*/ + +#ifndef _HISTORY_H_ +#define _HISTORY_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include /* XXX - for history timestamp code */ + +#if defined READLINE_LIBRARY +# include "rlstdc.h" +# include "rltypedefs.h" +#else +# include +# include +#endif + +#ifdef __STDC__ +typedef void *histdata_t; +#else +typedef char *histdata_t; +#endif + +/* The structure used to store a history entry. */ +typedef struct _hist_entry { + char *line; + char *timestamp; /* char * rather than time_t for read/write */ + histdata_t data; +} HIST_ENTRY; + +/* Size of the history-library-managed space in history entry HS. */ +#define HISTENT_BYTES(hs) (strlen ((hs)->line) + strlen ((hs)->timestamp)) + +/* A structure used to pass the current state of the history stuff around. */ +typedef struct _hist_state { + HIST_ENTRY **entries; /* Pointer to the entries themselves. */ + int offset; /* The location pointer within this array. */ + int length; /* Number of elements within this array. */ + int size; /* Number of slots allocated to this array. */ + int flags; +} HISTORY_STATE; + +/* Flag values for the `flags' member of HISTORY_STATE. */ +#define HS_STIFLED 0x01 + +/* Initialization and state management. */ + +/* Begin a session in which the history functions might be used. This + just initializes the interactive variables. */ +extern void using_history PARAMS((void)); + +/* Return the current HISTORY_STATE of the history. */ +extern HISTORY_STATE *history_get_history_state PARAMS((void)); + +/* Set the state of the current history array to STATE. */ +extern void history_set_history_state PARAMS((HISTORY_STATE *)); + +/* Manage the history list. */ + +/* Place STRING at the end of the history list. + The associated data field (if any) is set to NULL. */ +extern void add_history PARAMS((const char *)); + +/* Change the timestamp associated with the most recent history entry to + STRING. */ +extern void add_history_time PARAMS((const char *)); + +/* Remove an entry from the history list. WHICH is the magic number that + tells us which element to delete. The elements are numbered from 0. */ +extern HIST_ENTRY *remove_history PARAMS((int)); + +/* Remove a set of entries from the history list: FIRST to LAST, inclusive */ +extern HIST_ENTRY **remove_history_range PARAMS((int, int)); + +/* Allocate a history entry consisting of STRING and TIMESTAMP and return + a pointer to it. */ +extern HIST_ENTRY *alloc_history_entry PARAMS((char *, char *)); + +/* Copy the history entry H, but not the (opaque) data pointer */ +extern HIST_ENTRY *copy_history_entry PARAMS((HIST_ENTRY *)); + +/* Free the history entry H and return any application-specific data + associated with it. */ +extern histdata_t free_history_entry PARAMS((HIST_ENTRY *)); + +/* Make the history entry at WHICH have LINE and DATA. This returns + the old entry so you can dispose of the data. In the case of an + invalid WHICH, a NULL pointer is returned. */ +extern HIST_ENTRY *replace_history_entry PARAMS((int, const char *, histdata_t)); + +/* Clear the history list and start over. */ +extern void clear_history PARAMS((void)); + +/* Stifle the history list, remembering only MAX number of entries. */ +extern void stifle_history PARAMS((int)); + +/* Stop stifling the history. This returns the previous amount the + history was stifled by. The value is positive if the history was + stifled, negative if it wasn't. */ +extern int unstifle_history PARAMS((void)); + +/* Return 1 if the history is stifled, 0 if it is not. */ +extern int history_is_stifled PARAMS((void)); + +/* Information about the history list. */ + +/* Return a NULL terminated array of HIST_ENTRY which is the current input + history. Element 0 of this list is the beginning of time. If there + is no history, return NULL. */ +extern HIST_ENTRY **history_list PARAMS((void)); + +/* Returns the number which says what history element we are now + looking at. */ +extern int where_history PARAMS((void)); + +/* Return the history entry at the current position, as determined by + history_offset. If there is no entry there, return a NULL pointer. */ +extern HIST_ENTRY *current_history PARAMS((void)); + +/* Return the history entry which is logically at OFFSET in the history + array. OFFSET is relative to history_base. */ +extern HIST_ENTRY *history_get PARAMS((int)); + +/* Return the timestamp associated with the HIST_ENTRY * passed as an + argument */ +extern time_t history_get_time PARAMS((HIST_ENTRY *)); + +/* Return the number of bytes that the primary history entries are using. + This just adds up the lengths of the_history->lines. */ +extern int history_total_bytes PARAMS((void)); + +/* Moving around the history list. */ + +/* Set the position in the history list to POS. */ +extern int history_set_pos PARAMS((int)); + +/* Back up history_offset to the previous history entry, and return + a pointer to that entry. If there is no previous entry, return + a NULL pointer. */ +extern HIST_ENTRY *previous_history PARAMS((void)); + +/* Move history_offset forward to the next item in the input_history, + and return the a pointer to that entry. If there is no next entry, + return a NULL pointer. */ +extern HIST_ENTRY *next_history PARAMS((void)); + +/* Searching the history list. */ + +/* Search the history for STRING, starting at history_offset. + If DIRECTION < 0, then the search is through previous entries, + else through subsequent. If the string is found, then + current_history () is the history entry, and the value of this function + is the offset in the line of that history entry that the string was + found in. Otherwise, nothing is changed, and a -1 is returned. */ +extern int history_search PARAMS((const char *, int)); + +/* Search the history for STRING, starting at history_offset. + The search is anchored: matching lines must begin with string. + DIRECTION is as in history_search(). */ +extern int history_search_prefix PARAMS((const char *, int)); + +/* Search for STRING in the history list, starting at POS, an + absolute index into the list. DIR, if negative, says to search + backwards from POS, else forwards. + Returns the absolute index of the history element where STRING + was found, or -1 otherwise. */ +extern int history_search_pos PARAMS((const char *, int, int)); + +/* Managing the history file. */ + +/* Add the contents of FILENAME to the history list, a line at a time. + If FILENAME is NULL, then read from ~/.history. Returns 0 if + successful, or errno if not. */ +extern int read_history PARAMS((const char *)); + +/* Read a range of lines from FILENAME, adding them to the history list. + Start reading at the FROM'th line and end at the TO'th. If FROM + is zero, start at the beginning. If TO is less than FROM, read + until the end of the file. If FILENAME is NULL, then read from + ~/.history. Returns 0 if successful, or errno if not. */ +extern int read_history_range PARAMS((const char *, int, int)); + +/* Write the current history to FILENAME. If FILENAME is NULL, + then write the history list to ~/.history. Values returned + are as in read_history (). */ +extern int write_history PARAMS((const char *)); + +/* Append NELEMENT entries to FILENAME. The entries appended are from + the end of the list minus NELEMENTs up to the end of the list. */ +extern int append_history PARAMS((int, const char *)); + +/* Truncate the history file, leaving only the last NLINES lines. */ +extern int history_truncate_file PARAMS((const char *, int)); + +/* History expansion. */ + +/* Expand the string STRING, placing the result into OUTPUT, a pointer + to a string. Returns: + + 0) If no expansions took place (or, if the only change in + the text was the de-slashifying of the history expansion + character) + 1) If expansions did take place + -1) If there was an error in expansion. + 2) If the returned line should just be printed. + + If an error occurred in expansion, then OUTPUT contains a descriptive + error message. */ +extern int history_expand PARAMS((char *, char **)); + +/* Extract a string segment consisting of the FIRST through LAST + arguments present in STRING. Arguments are broken up as in + the shell. */ +extern char *history_arg_extract PARAMS((int, int, const char *)); + +/* Return the text of the history event beginning at the current + offset into STRING. Pass STRING with *INDEX equal to the + history_expansion_char that begins this specification. + DELIMITING_QUOTE is a character that is allowed to end the string + specification for what to search for in addition to the normal + characters `:', ` ', `\t', `\n', and sometimes `?'. */ +extern char *get_history_event PARAMS((const char *, int *, int)); + +/* Return an array of tokens, much as the shell might. The tokens are + parsed out of STRING. */ +extern char **history_tokenize PARAMS((const char *)); + +/* Exported history variables. */ +extern int history_base; +extern int history_length; +extern int history_max_entries; +extern int history_offset; + +extern int history_lines_read_from_file; +extern int history_lines_written_to_file; + +extern char history_expansion_char; +extern char history_subst_char; +extern char *history_word_delimiters; +extern char history_comment_char; +extern char *history_no_expand_chars; +extern char *history_search_delimiter_chars; + +extern int history_quotes_inhibit_expansion; +extern int history_quoting_state; + +extern int history_write_timestamps; + +/* These two are undocumented; the second is reserved for future use */ +extern int history_multiline_entries; +extern int history_file_version; + +/* Backwards compatibility */ +extern int max_input_history; + +/* If set, this function is called to decide whether or not a particular + history expansion should be treated as a special case for the calling + application and not expanded. */ +extern rl_linebuf_func_t *history_inhibit_expansion_function; + +#ifdef __cplusplus +} +#endif + +#endif /* !_HISTORY_H_ */ diff --git a/bash-5.1/lib/readline/histsearch.c b/bash-5.1/lib/readline/histsearch.c new file mode 100644 index 0000000..7a426c9 --- /dev/null +++ b/bash-5.1/lib/readline/histsearch.c @@ -0,0 +1,287 @@ +/* histsearch.c -- searching the history list. */ + +/* Copyright (C) 1989, 1992-2009,2017 Free Software Foundation, Inc. + + This file contains the GNU History Library (History), a set of + routines for managing the text of previously typed lines. + + 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#if defined (HAVE_FNMATCH) +# include +#endif + +#include "history.h" +#include "histlib.h" +#include "xmalloc.h" + +/* The list of alternate characters that can delimit a history search + string. */ +char *history_search_delimiter_chars = (char *)NULL; + +static int history_search_internal PARAMS((const char *, int, int)); + +/* Search the history for STRING, starting at history_offset. + If DIRECTION < 0, then the search is through previous entries, else + through subsequent. If ANCHORED is non-zero, the string must + appear at the beginning of a history line, otherwise, the string + may appear anywhere in the line. If the string is found, then + current_history () is the history entry, and the value of this + function is the offset in the line of that history entry that the + string was found in. Otherwise, nothing is changed, and a -1 is + returned. */ + +static int +history_search_internal (const char *string, int direction, int flags) +{ + register int i, reverse; + register char *line; + register int line_index; + int string_len, anchored, patsearch; + HIST_ENTRY **the_history; /* local */ + + i = history_offset; + reverse = (direction < 0); + anchored = (flags & ANCHORED_SEARCH); +#if defined (HAVE_FNMATCH) + patsearch = (flags & PATTERN_SEARCH); +#else + patsearch = 0; +#endif + + /* Take care of trivial cases first. */ + if (string == 0 || *string == '\0') + return (-1); + + if (!history_length || ((i >= history_length) && !reverse)) + return (-1); + + if (reverse && (i >= history_length)) + i = history_length - 1; + +#define NEXT_LINE() do { if (reverse) i--; else i++; } while (0) + + the_history = history_list (); + string_len = strlen (string); + while (1) + { + /* Search each line in the history list for STRING. */ + + /* At limit for direction? */ + if ((reverse && i < 0) || (!reverse && i == history_length)) + return (-1); + + line = the_history[i]->line; + line_index = strlen (line); + + /* If STRING is longer than line, no match. */ + if (patsearch == 0 && (string_len > line_index)) + { + NEXT_LINE (); + continue; + } + + /* Handle anchored searches first. */ + if (anchored == ANCHORED_SEARCH) + { +#if defined (HAVE_FNMATCH) + if (patsearch) + { + if (fnmatch (string, line, 0) == 0) + { + history_offset = i; + return (0); + } + } + else +#endif + if (STREQN (string, line, string_len)) + { + history_offset = i; + return (0); + } + + NEXT_LINE (); + continue; + } + + /* Do substring search. */ + if (reverse) + { + line_index -= (patsearch == 0) ? string_len : 1; + + while (line_index >= 0) + { +#if defined (HAVE_FNMATCH) + if (patsearch) + { + if (fnmatch (string, line + line_index, 0) == 0) + { + history_offset = i; + return (line_index); + } + } + else +#endif + if (STREQN (string, line + line_index, string_len)) + { + history_offset = i; + return (line_index); + } + line_index--; + } + } + else + { + register int limit; + + limit = line_index - string_len + 1; + line_index = 0; + + while (line_index < limit) + { +#if defined (HAVE_FNMATCH) + if (patsearch) + { + if (fnmatch (string, line + line_index, 0) == 0) + { + history_offset = i; + return (line_index); + } + } + else +#endif + if (STREQN (string, line + line_index, string_len)) + { + history_offset = i; + return (line_index); + } + line_index++; + } + } + NEXT_LINE (); + } +} + +int +_hs_history_patsearch (const char *string, int direction, int flags) +{ + char *pat; + size_t len, start; + int ret, unescaped_backslash; + +#if defined (HAVE_FNMATCH) + /* Assume that the string passed does not have a leading `^' and any + anchored search request is captured in FLAGS */ + len = strlen (string); + ret = len - 1; + /* fnmatch is required to reject a pattern that ends with an unescaped + backslash */ + if (unescaped_backslash = (string[ret] == '\\')) + { + while (ret > 0 && string[--ret] == '\\') + unescaped_backslash = 1 - unescaped_backslash; + } + if (unescaped_backslash) + return -1; + pat = (char *)xmalloc (len + 3); + /* If the search string is not anchored, we'll be calling fnmatch (assuming + we have it). Prefix a `*' to the front of the search string so we search + anywhere in the line. */ + if ((flags & ANCHORED_SEARCH) == 0 && string[0] != '*') + { + pat[0] = '*'; + start = 1; + len++; + } + else + { + start = 0; + } + + /* Attempt to reduce the number of searches by tacking a `*' onto the end + of a pattern that doesn't have one. Assume a pattern that ends in a + backslash contains an even number of trailing backslashes; we check + above */ + strcpy (pat + start, string); + if (pat[len - 1] != '*') + { + pat[len] = '*'; /* XXX */ + pat[len+1] = '\0'; + } +#else + pat = string; +#endif + + ret = history_search_internal (pat, direction, flags|PATTERN_SEARCH); + + if (pat != string) + free (pat); + return ret; +} + +/* Do a non-anchored search for STRING through the history in DIRECTION. */ +int +history_search (const char *string, int direction) +{ + return (history_search_internal (string, direction, NON_ANCHORED_SEARCH)); +} + +/* Do an anchored search for string through the history in DIRECTION. */ +int +history_search_prefix (const char *string, int direction) +{ + return (history_search_internal (string, direction, ANCHORED_SEARCH)); +} + +/* Search for STRING in the history list. DIR is < 0 for searching + backwards. POS is an absolute index into the history list at + which point to begin searching. */ +int +history_search_pos (const char *string, int dir, int pos) +{ + int ret, old; + + old = where_history (); + history_set_pos (pos); + if (history_search (string, dir) == -1) + { + history_set_pos (old); + return (-1); + } + ret = where_history (); + history_set_pos (old); + return ret; +} diff --git a/bash-5.1/lib/readline/input.c b/bash-5.1/lib/readline/input.c new file mode 100644 index 0000000..61b0fde --- /dev/null +++ b/bash-5.1/lib/readline/input.c @@ -0,0 +1,715 @@ +/* input.c -- character input functions for readline. */ + +/* Copyright (C) 1994-2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (__TANDEM) +# define _XOPEN_SOURCE_EXTENDED 1 +# define _TANDEM_SOURCE 1 +# include +#endif + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#include +#if defined (HAVE_SYS_FILE_H) +# include +#endif /* HAVE_SYS_FILE_H */ + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include + +#include "posixselect.h" + +#if defined (FIONREAD_IN_SYS_IOCTL) +# include +#endif + +#include +#include + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" +#include "rlmbutil.h" + +/* Some standard library routines. */ +#include "readline.h" + +#include "rlprivate.h" +#include "rlshell.h" +#include "xmalloc.h" + +/* What kind of non-blocking I/O do we have? */ +#if !defined (O_NDELAY) && defined (O_NONBLOCK) +# define O_NDELAY O_NONBLOCK /* Posix style */ +#endif + +#if defined (HAVE_PSELECT) +extern sigset_t _rl_orig_sigset; +#endif + +/* Non-null means it is a pointer to a function to run while waiting for + character input. */ +rl_hook_func_t *rl_event_hook = (rl_hook_func_t *)NULL; + +/* A function to call if a read(2) is interrupted by a signal. */ +rl_hook_func_t *rl_signal_event_hook = (rl_hook_func_t *)NULL; + +/* A function to replace _rl_input_available for applications using the + callback interface. */ +rl_hook_func_t *rl_input_available_hook = (rl_hook_func_t *)NULL; + +rl_getc_func_t *rl_getc_function = rl_getc; + +static int _keyboard_input_timeout = 100000; /* 0.1 seconds; it's in usec */ + +static int ibuffer_space PARAMS((void)); +static int rl_get_char PARAMS((int *)); +static int rl_gather_tyi PARAMS((void)); + +/* Windows isatty returns true for every character device, including the null + device, so we need to perform additional checks. */ +#if defined (_WIN32) && !defined (__CYGWIN__) +#include +#include +#define WIN32_LEAN_AND_MEAN 1 +#include + +int +win32_isatty (int fd) +{ + if (_isatty(fd)) + { + HANDLE h; + DWORD ignored; + + if ((h = (HANDLE) _get_osfhandle (fd)) == INVALID_HANDLE_VALUE) + { + errno = EBADF; + return 0; + } + if (GetConsoleMode (h, &ignored) != 0) + return 1; + } + errno = ENOTTY; + return 0; +} + +#define isatty(x) win32_isatty(x) +#endif + +/* **************************************************************** */ +/* */ +/* Character Input Buffering */ +/* */ +/* **************************************************************** */ + +static int pop_index, push_index; +static unsigned char ibuffer[512]; +static int ibuffer_len = sizeof (ibuffer) - 1; + +#define any_typein (push_index != pop_index) + +int +_rl_any_typein (void) +{ + return any_typein; +} + +int +_rl_pushed_input_available (void) +{ + return (push_index != pop_index); +} + +/* Return the amount of space available in the buffer for stuffing + characters. */ +static int +ibuffer_space (void) +{ + if (pop_index > push_index) + return (pop_index - push_index - 1); + else + return (ibuffer_len - (push_index - pop_index)); +} + +/* Get a key from the buffer of characters to be read. + Return the key in KEY. + Result is non-zero if there was a key, or 0 if there wasn't. */ +static int +rl_get_char (int *key) +{ + if (push_index == pop_index) + return (0); + + *key = ibuffer[pop_index++]; +#if 0 + if (pop_index >= ibuffer_len) +#else + if (pop_index > ibuffer_len) +#endif + pop_index = 0; + + return (1); +} + +/* Stuff KEY into the *front* of the input buffer. + Returns non-zero if successful, zero if there is + no space left in the buffer. */ +int +_rl_unget_char (int key) +{ + if (ibuffer_space ()) + { + pop_index--; + if (pop_index < 0) + pop_index = ibuffer_len; + ibuffer[pop_index] = key; + return (1); + } + return (0); +} + +/* If a character is available to be read, then read it and stuff it into + IBUFFER. Otherwise, just return. Returns number of characters read + (0 if none available) and -1 on error (EIO). */ +static int +rl_gather_tyi (void) +{ + int tty; + register int tem, result; + int chars_avail, k; + char input; +#if defined(HAVE_SELECT) + fd_set readfds, exceptfds; + struct timeval timeout; +#endif + + chars_avail = 0; + input = 0; + tty = fileno (rl_instream); + +#if defined (HAVE_SELECT) + FD_ZERO (&readfds); + FD_ZERO (&exceptfds); + FD_SET (tty, &readfds); + FD_SET (tty, &exceptfds); + USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout); + result = select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout); + if (result <= 0) + return 0; /* Nothing to read. */ +#endif + + result = -1; + errno = 0; +#if defined (FIONREAD) + result = ioctl (tty, FIONREAD, &chars_avail); + if (result == -1 && errno == EIO) + return -1; + if (result == -1) + chars_avail = 0; +#endif + +#if defined (O_NDELAY) + if (result == -1) + { + tem = fcntl (tty, F_GETFL, 0); + + fcntl (tty, F_SETFL, (tem | O_NDELAY)); + chars_avail = read (tty, &input, 1); + + fcntl (tty, F_SETFL, tem); + if (chars_avail == -1 && errno == EAGAIN) + return 0; + if (chars_avail == -1 && errno == EIO) + return -1; + if (chars_avail == 0) /* EOF */ + { + rl_stuff_char (EOF); + return (0); + } + } +#endif /* O_NDELAY */ + +#if defined (__MINGW32__) + /* Use getch/_kbhit to check for available console input, in the same way + that we read it normally. */ + chars_avail = isatty (tty) ? _kbhit () : 0; + result = 0; +#endif + + /* If there's nothing available, don't waste time trying to read + something. */ + if (chars_avail <= 0) + return 0; + + tem = ibuffer_space (); + + if (chars_avail > tem) + chars_avail = tem; + + /* One cannot read all of the available input. I can only read a single + character at a time, or else programs which require input can be + thwarted. If the buffer is larger than one character, I lose. + Damn! */ + if (tem < ibuffer_len) + chars_avail = 0; + + if (result != -1) + { + while (chars_avail--) + { + RL_CHECK_SIGNALS (); + k = (*rl_getc_function) (rl_instream); + if (rl_stuff_char (k) == 0) + break; /* some problem; no more room */ + if (k == NEWLINE || k == RETURN) + break; + } + } + else + { + if (chars_avail) + rl_stuff_char (input); + } + + return 1; +} + +int +rl_set_keyboard_input_timeout (int u) +{ + int o; + + o = _keyboard_input_timeout; + if (u >= 0) + _keyboard_input_timeout = u; + return (o); +} + +/* Is there input available to be read on the readline input file + descriptor? Only works if the system has select(2) or FIONREAD. + Uses the value of _keyboard_input_timeout as the timeout; if another + readline function wants to specify a timeout and not leave it up to + the user, it should use _rl_input_queued(timeout_value_in_microseconds) + instead. */ +int +_rl_input_available (void) +{ +#if defined(HAVE_SELECT) + fd_set readfds, exceptfds; + struct timeval timeout; +#endif +#if !defined (HAVE_SELECT) && defined(FIONREAD) + int chars_avail; +#endif + int tty; + + if (rl_input_available_hook) + return (*rl_input_available_hook) (); + + tty = fileno (rl_instream); + +#if defined (HAVE_SELECT) + FD_ZERO (&readfds); + FD_ZERO (&exceptfds); + FD_SET (tty, &readfds); + FD_SET (tty, &exceptfds); + USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout); + return (select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout) > 0); +#else + +#if defined (FIONREAD) + if (ioctl (tty, FIONREAD, &chars_avail) == 0) + return (chars_avail); +#endif + +#endif + +#if defined (__MINGW32__) + if (isatty (tty)) + return (_kbhit ()); +#endif + + return 0; +} + +int +_rl_nchars_available () +{ + int chars_avail, fd, result; + + chars_avail = 0; + +#if defined (FIONREAD) + fd = fileno (rl_instream); + errno = 0; + result = ioctl (fd, FIONREAD, &chars_avail); + if (result == -1 && errno == EIO) + return -1; +#endif + + return chars_avail; +} + +int +_rl_input_queued (int t) +{ + int old_timeout, r; + + old_timeout = rl_set_keyboard_input_timeout (t); + r = _rl_input_available (); + rl_set_keyboard_input_timeout (old_timeout); + return r; +} + +void +_rl_insert_typein (int c) +{ + int key, t, i; + char *string; + + i = key = 0; + string = (char *)xmalloc (ibuffer_len + 1); + string[i++] = (char) c; + + while ((t = rl_get_char (&key)) && + _rl_keymap[key].type == ISFUNC && + _rl_keymap[key].function == rl_insert) + string[i++] = key; + + if (t) + _rl_unget_char (key); + + string[i] = '\0'; + rl_insert_text (string); + xfree (string); +} + +/* Add KEY to the buffer of characters to be read. Returns 1 if the + character was stuffed correctly; 0 otherwise. */ +int +rl_stuff_char (int key) +{ + if (ibuffer_space () == 0) + return 0; + + if (key == EOF) + { + key = NEWLINE; + rl_pending_input = EOF; + RL_SETSTATE (RL_STATE_INPUTPENDING); + } + ibuffer[push_index++] = key; +#if 0 + if (push_index >= ibuffer_len) +#else + if (push_index > ibuffer_len) +#endif + push_index = 0; + + return 1; +} + +/* Make C be the next command to be executed. */ +int +rl_execute_next (int c) +{ + rl_pending_input = c; + RL_SETSTATE (RL_STATE_INPUTPENDING); + return 0; +} + +/* Clear any pending input pushed with rl_execute_next() */ +int +rl_clear_pending_input (void) +{ + rl_pending_input = 0; + RL_UNSETSTATE (RL_STATE_INPUTPENDING); + return 0; +} + +/* **************************************************************** */ +/* */ +/* Character Input */ +/* */ +/* **************************************************************** */ + +/* Read a key, including pending input. */ +int +rl_read_key (void) +{ + int c, r; + + if (rl_pending_input) + { + c = rl_pending_input; /* XXX - cast to unsigned char if > 0? */ + rl_clear_pending_input (); + } + else + { + /* If input is coming from a macro, then use that. */ + if (c = _rl_next_macro_key ()) + return ((unsigned char)c); + + /* If the user has an event function, then call it periodically. */ + if (rl_event_hook) + { + while (rl_event_hook) + { + if (rl_get_char (&c) != 0) + break; + + if ((r = rl_gather_tyi ()) < 0) /* XXX - EIO */ + { + rl_done = 1; + return (errno == EIO ? (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF) : '\n'); + } + else if (r > 0) /* read something */ + continue; + + RL_CHECK_SIGNALS (); + if (rl_done) /* XXX - experimental */ + return ('\n'); + (*rl_event_hook) (); + } + } + else + { + if (rl_get_char (&c) == 0) + c = (*rl_getc_function) (rl_instream); +/* fprintf(stderr, "rl_read_key: calling RL_CHECK_SIGNALS: _rl_caught_signal = %d\r\n", _rl_caught_signal); */ + RL_CHECK_SIGNALS (); + } + } + + return (c); +} + +int +rl_getc (FILE *stream) +{ + int result; + unsigned char c; +#if defined (HAVE_PSELECT) + sigset_t empty_set; + fd_set readfds; +#endif + + while (1) + { + RL_CHECK_SIGNALS (); + + /* We know at this point that _rl_caught_signal == 0 */ + +#if defined (__MINGW32__) + if (isatty (fileno (stream))) + return (_getch ()); /* "There is no error return." */ +#endif + result = 0; +#if defined (HAVE_PSELECT) + FD_ZERO (&readfds); + FD_SET (fileno (stream), &readfds); +# if defined (HANDLE_SIGNALS) + result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &_rl_orig_sigset); +# else + sigemptyset (&empty_set); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &empty_set); + result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &empty_set); +# endif /* HANDLE_SIGNALS */ +#endif + if (result >= 0) + result = read (fileno (stream), &c, sizeof (unsigned char)); + + if (result == sizeof (unsigned char)) + return (c); + + /* If zero characters are returned, then the file that we are + reading from is empty! Return EOF in that case. */ + if (result == 0) + return (EOF); + +#if defined (__BEOS__) + if (errno == EINTR) + continue; +#endif + +#if defined (EWOULDBLOCK) +# define X_EWOULDBLOCK EWOULDBLOCK +#else +# define X_EWOULDBLOCK -99 +#endif + +#if defined (EAGAIN) +# define X_EAGAIN EAGAIN +#else +# define X_EAGAIN -99 +#endif + + if (errno == X_EWOULDBLOCK || errno == X_EAGAIN) + { + if (sh_unset_nodelay_mode (fileno (stream)) < 0) + return (EOF); + continue; + } + +#undef X_EWOULDBLOCK +#undef X_EAGAIN + +/* fprintf(stderr, "rl_getc: result = %d errno = %d\n", result, errno); */ + +handle_error: + /* If the error that we received was EINTR, then try again, + this is simply an interrupted system call to read (). We allow + the read to be interrupted if we caught SIGHUP, SIGTERM, or any + of the other signals readline treats specially. If the + application sets an event hook, call it for other signals. + Otherwise (not EINTR), some error occurred, also signifying EOF. */ + if (errno != EINTR) + return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); + /* fatal signals of interest */ +#if defined (SIGHUP) + else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM) +#else + else if (_rl_caught_signal == SIGTERM) +#endif + return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); + /* keyboard-generated signals of interest */ +#if defined (SIGQUIT) + else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT) +#else + else if (_rl_caught_signal == SIGINT) +#endif + RL_CHECK_SIGNALS (); +#if defined (SIGTSTP) + else if (_rl_caught_signal == SIGTSTP) + RL_CHECK_SIGNALS (); +#endif + /* non-keyboard-generated signals of interest */ +#if defined (SIGWINCH) + else if (_rl_caught_signal == SIGWINCH) + RL_CHECK_SIGNALS (); +#endif /* SIGWINCH */ +#if defined (SIGALRM) + else if (_rl_caught_signal == SIGALRM +# if defined (SIGVTALRM) + || _rl_caught_signal == SIGVTALRM +# endif + ) + RL_CHECK_SIGNALS (); +#endif /* SIGALRM */ + + if (rl_signal_event_hook) + (*rl_signal_event_hook) (); + } +} + +#if defined (HANDLE_MULTIBYTE) +/* read multibyte char */ +int +_rl_read_mbchar (char *mbchar, int size) +{ + int mb_len, c; + size_t mbchar_bytes_length; + wchar_t wc; + mbstate_t ps, ps_back; + + memset(&ps, 0, sizeof (mbstate_t)); + memset(&ps_back, 0, sizeof (mbstate_t)); + + mb_len = 0; + while (mb_len < size) + { + c = (mb_len == 0) ? _rl_bracketed_read_key () : rl_read_key (); + + if (c < 0) + break; + + mbchar[mb_len++] = c; + + mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps); + if (mbchar_bytes_length == (size_t)(-1)) + break; /* invalid byte sequence for the current locale */ + else if (mbchar_bytes_length == (size_t)(-2)) + { + /* shorted bytes */ + ps = ps_back; + continue; + } + else if (mbchar_bytes_length == 0) + { + mbchar[0] = '\0'; /* null wide character */ + mb_len = 1; + break; + } + else if (mbchar_bytes_length > (size_t)(0)) + break; + } + + return mb_len; +} + +/* Read a multibyte-character string whose first character is FIRST into + the buffer MB of length MLEN. Returns the last character read, which + may be FIRST. Used by the search functions, among others. Very similar + to _rl_read_mbchar. */ +int +_rl_read_mbstring (int first, char *mb, int mlen) +{ + int i, c, n; + mbstate_t ps; + + c = first; + memset (mb, 0, mlen); + for (i = 0; c >= 0 && i < mlen; i++) + { + mb[i] = (char)c; + memset (&ps, 0, sizeof (mbstate_t)); + n = _rl_get_char_len (mb, &ps); + if (n == -2) + { + /* Read more for multibyte character */ + RL_SETSTATE (RL_STATE_MOREINPUT); + c = rl_read_key (); + RL_UNSETSTATE (RL_STATE_MOREINPUT); + } + else + break; + } + return c; +} +#endif /* HANDLE_MULTIBYTE */ diff --git a/bash-5.1/lib/readline/isearch.c b/bash-5.1/lib/readline/isearch.c new file mode 100644 index 0000000..080ba3c --- /dev/null +++ b/bash-5.1/lib/readline/isearch.c @@ -0,0 +1,890 @@ +/* isearch.c - incremental searching */ + +/* **************************************************************** */ +/* */ +/* I-Search and Searching */ +/* */ +/* **************************************************************** */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif + +#include "rldefs.h" +#include "rlmbutil.h" + +#include "readline.h" +#include "history.h" + +#include "rlprivate.h" +#include "xmalloc.h" + +/* Variables exported to other files in the readline library. */ +char *_rl_isearch_terminators = (char *)NULL; + +_rl_search_cxt *_rl_iscxt = 0; + +/* Variables imported from other files in the readline library. */ +extern HIST_ENTRY *_rl_saved_line_for_history; + +static int rl_search_history PARAMS((int, int)); + +static _rl_search_cxt *_rl_isearch_init PARAMS((int)); +static void _rl_isearch_fini PARAMS((_rl_search_cxt *)); + +/* Last line found by the current incremental search, so we don't `find' + identical lines many times in a row. Now part of isearch context. */ +/* static char *prev_line_found; */ + +/* Last search string and its length. */ +static char *last_isearch_string; +static int last_isearch_string_len; + +static char * const default_isearch_terminators = "\033\012"; + +_rl_search_cxt * +_rl_scxt_alloc (int type, int flags) +{ + _rl_search_cxt *cxt; + + cxt = (_rl_search_cxt *)xmalloc (sizeof (_rl_search_cxt)); + + cxt->type = type; + cxt->sflags = flags; + + cxt->search_string = 0; + cxt->search_string_size = cxt->search_string_index = 0; + + cxt->lines = 0; + cxt->allocated_line = 0; + cxt->hlen = cxt->hindex = 0; + + cxt->save_point = rl_point; + cxt->save_mark = rl_mark; + cxt->save_line = where_history (); + cxt->last_found_line = cxt->save_line; + cxt->prev_line_found = 0; + + cxt->save_undo_list = 0; + + cxt->keymap = _rl_keymap; + cxt->okeymap = _rl_keymap; + + cxt->history_pos = 0; + cxt->direction = 0; + + cxt->prevc = cxt->lastc = 0; + + cxt->sline = 0; + cxt->sline_len = cxt->sline_index = 0; + + cxt->search_terminators = 0; + + return cxt; +} + +void +_rl_scxt_dispose (_rl_search_cxt *cxt, int flags) +{ + FREE (cxt->search_string); + FREE (cxt->allocated_line); + FREE (cxt->lines); + + xfree (cxt); +} + +/* Search backwards through the history looking for a string which is typed + interactively. Start with the current line. */ +int +rl_reverse_search_history (int sign, int key) +{ + return (rl_search_history (-sign, key)); +} + +/* Search forwards through the history looking for a string which is typed + interactively. Start with the current line. */ +int +rl_forward_search_history (int sign, int key) +{ + return (rl_search_history (sign, key)); +} + +/* Display the current state of the search in the echo-area. + SEARCH_STRING contains the string that is being searched for, + DIRECTION is zero for forward, or non-zero for reverse, + WHERE is the history list number of the current line. If it is + -1, then this line is the starting one. */ +static void +rl_display_search (char *search_string, int flags, int where) +{ + char *message; + int msglen, searchlen; + + searchlen = (search_string && *search_string) ? strlen (search_string) : 0; + + message = (char *)xmalloc (searchlen + 64); + msglen = 0; + +#if defined (NOTDEF) + if (where != -1) + { + sprintf (message, "[%d]", where + history_base); + msglen = strlen (message); + } +#endif /* NOTDEF */ + + message[msglen++] = '('; + + if (flags & SF_FAILED) + { + strcpy (message + msglen, "failed "); + msglen += 7; + } + + if (flags & SF_REVERSE) + { + strcpy (message + msglen, "reverse-"); + msglen += 8; + } + + strcpy (message + msglen, "i-search)`"); + msglen += 10; + + if (search_string && *search_string) + { + strcpy (message + msglen, search_string); + msglen += searchlen; + } + else + _rl_optimize_redisplay (); + + strcpy (message + msglen, "': "); + + rl_message ("%s", message); + xfree (message); + (*rl_redisplay_function) (); +} + +static _rl_search_cxt * +_rl_isearch_init (int direction) +{ + _rl_search_cxt *cxt; + register int i; + HIST_ENTRY **hlist; + + cxt = _rl_scxt_alloc (RL_SEARCH_ISEARCH, 0); + if (direction < 0) + cxt->sflags |= SF_REVERSE; + + cxt->search_terminators = _rl_isearch_terminators ? _rl_isearch_terminators + : default_isearch_terminators; + + /* Create an array of pointers to the lines that we want to search. */ + hlist = history_list (); + rl_maybe_replace_line (); + i = 0; + if (hlist) + for (i = 0; hlist[i]; i++); + + /* Allocate space for this many lines, +1 for the current input line, + and remember those lines. */ + cxt->lines = (char **)xmalloc ((1 + (cxt->hlen = i)) * sizeof (char *)); + for (i = 0; i < cxt->hlen; i++) + cxt->lines[i] = hlist[i]->line; + + if (_rl_saved_line_for_history) + cxt->lines[i] = _rl_saved_line_for_history->line; + else + { + /* Keep track of this so we can free it. */ + cxt->allocated_line = (char *)xmalloc (1 + strlen (rl_line_buffer)); + strcpy (cxt->allocated_line, &rl_line_buffer[0]); + cxt->lines[i] = cxt->allocated_line; + } + + cxt->hlen++; + + /* The line where we start the search. */ + cxt->history_pos = cxt->save_line; + + rl_save_prompt (); + + /* Initialize search parameters. */ + cxt->search_string = (char *)xmalloc (cxt->search_string_size = 128); + cxt->search_string[cxt->search_string_index = 0] = '\0'; + + /* Normalize DIRECTION into 1 or -1. */ + cxt->direction = (direction >= 0) ? 1 : -1; + + cxt->sline = rl_line_buffer; + cxt->sline_len = strlen (cxt->sline); + cxt->sline_index = rl_point; + + _rl_iscxt = cxt; /* save globally */ + + /* experimental right now */ + _rl_init_executing_keyseq (); + + return cxt; +} + +static void +_rl_isearch_fini (_rl_search_cxt *cxt) +{ + /* First put back the original state. */ + rl_replace_line (cxt->lines[cxt->save_line], 0); + + rl_restore_prompt (); + + /* Save the search string for possible later use. */ + FREE (last_isearch_string); + last_isearch_string = cxt->search_string; + last_isearch_string_len = cxt->search_string_index; + cxt->search_string = 0; + + if (cxt->last_found_line < cxt->save_line) + rl_get_previous_history (cxt->save_line - cxt->last_found_line, 0); + else + rl_get_next_history (cxt->last_found_line - cxt->save_line, 0); + + /* If the string was not found, put point at the end of the last matching + line. If last_found_line == orig_line, we didn't find any matching + history lines at all, so put point back in its original position. */ + if (cxt->sline_index < 0) + { + if (cxt->last_found_line == cxt->save_line) + cxt->sline_index = cxt->save_point; + else + cxt->sline_index = strlen (rl_line_buffer); + rl_mark = cxt->save_mark; + rl_deactivate_mark (); + } + + rl_point = cxt->sline_index; + /* Don't worry about where to put the mark here; rl_get_previous_history + and rl_get_next_history take care of it. + If we want to highlight the search string, this is where to set the + point and mark to do it. */ + _rl_fix_point (0); + rl_deactivate_mark (); + +/* _rl_optimize_redisplay (); */ + rl_clear_message (); +} + +/* XXX - we could use _rl_bracketed_read_mbstring () here. */ +int +_rl_search_getchar (_rl_search_cxt *cxt) +{ + int c; + + /* Read a key and decide how to proceed. */ + RL_SETSTATE(RL_STATE_MOREINPUT); + c = cxt->lastc = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + +#if defined (HANDLE_MULTIBYTE) + /* This ends up with C (and LASTC) being set to the last byte of the + multibyte character. In most cases c == lastc == mb[0] */ + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + c = cxt->lastc = _rl_read_mbstring (cxt->lastc, cxt->mb, MB_LEN_MAX); +#endif + + RL_CHECK_SIGNALS (); + return c; +} + +#define ENDSRCH_CHAR(c) \ + ((CTRL_CHAR (c) || META_CHAR (c) || (c) == RUBOUT) && ((c) != CTRL ('G'))) + +/* Process just-read character C according to isearch context CXT. Return + -1 if the caller should just free the context and return, 0 if we should + break out of the loop, and 1 if we should continue to read characters. */ +int +_rl_isearch_dispatch (_rl_search_cxt *cxt, int c) +{ + int n, wstart, wlen, limit, cval, incr; + char *paste; + size_t pastelen; + int j; + rl_command_func_t *f; + + f = (rl_command_func_t *)NULL; + + if (c < 0) + { + cxt->sflags |= SF_FAILED; + cxt->history_pos = cxt->last_found_line; + return -1; + } + + _rl_add_executing_keyseq (c); + + /* XXX - experimental code to allow users to bracketed-paste into the search + string even when ESC is one of the isearch-terminators. Not perfect yet. */ + if (_rl_enable_bracketed_paste && c == ESC && strchr (cxt->search_terminators, c) && (n = _rl_nchars_available ()) > (BRACK_PASTE_SLEN-1)) + { + j = _rl_read_bracketed_paste_prefix (c); + if (j == 1) + { + cxt->lastc = -7; /* bracketed paste, see below */ + goto opcode_dispatch; + } + else if (_rl_pushed_input_available ()) /* eat extra char we pushed back */ + c = cxt->lastc = rl_read_key (); + else + c = cxt->lastc; /* last ditch */ + } + + /* If we are moving into a new keymap, modify cxt->keymap and go on. + This can be a problem if c == ESC and we want to terminate the + incremental search, so we check */ + if (c >= 0 && cxt->keymap[c].type == ISKMAP && strchr (cxt->search_terminators, cxt->lastc) == 0) + { + /* _rl_keyseq_timeout specified in milliseconds; _rl_input_queued + takes microseconds, so multiply by 1000. If we don't get any + additional input and this keymap shadows another function, process + that key as if it was all we read. */ + if (_rl_keyseq_timeout > 0 && + RL_ISSTATE (RL_STATE_CALLBACK) == 0 && + RL_ISSTATE (RL_STATE_INPUTPENDING) == 0 && + _rl_pushed_input_available () == 0 && + ((Keymap)(cxt->keymap[c].function))[ANYOTHERKEY].function && + _rl_input_queued (_rl_keyseq_timeout*1000) == 0) + goto add_character; + + cxt->okeymap = cxt->keymap; + cxt->keymap = FUNCTION_TO_KEYMAP (cxt->keymap, c); + cxt->sflags |= SF_CHGKMAP; + /* XXX - we should probably save this sequence, so we can do + something useful if this doesn't end up mapping to a command we + interpret here. Right now we just save the most recent character + that caused the index into a new keymap. */ + cxt->prevc = c; +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + if (cxt->mb[1] == 0) + { + cxt->pmb[0] = c; /* XXX should be == cxt->mb[0] */ + cxt->pmb[1] = '\0'; + } + else + memcpy (cxt->pmb, cxt->mb, sizeof (cxt->pmb)); + } +#endif + return 1; + } + +add_character: + + /* Translate the keys we do something with to opcodes. */ + if (c >= 0 && cxt->keymap[c].type == ISFUNC) + { + /* If we have a multibyte character, see if it's bound to something that + affects the search. */ +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && cxt->mb[1]) + f = rl_function_of_keyseq (cxt->mb, cxt->keymap, (int *)NULL); + else +#endif + { + f = cxt->keymap[c].function; + if (f == rl_do_lowercase_version) + f = cxt->keymap[_rl_to_lower (c)].function; + } + + if (f == rl_reverse_search_history) + cxt->lastc = (cxt->sflags & SF_REVERSE) ? -1 : -2; + else if (f == rl_forward_search_history) + cxt->lastc = (cxt->sflags & SF_REVERSE) ? -2 : -1; + else if (f == rl_rubout) + cxt->lastc = -3; + else if (c == CTRL ('G') || f == rl_abort) + cxt->lastc = -4; + else if (c == CTRL ('W') || f == rl_unix_word_rubout) /* XXX */ + cxt->lastc = -5; + else if (c == CTRL ('Y') || f == rl_yank) /* XXX */ + cxt->lastc = -6; + else if (f == rl_bracketed_paste_begin) + cxt->lastc = -7; + } + + /* If we changed the keymap earlier while translating a key sequence into + a command, restore it now that we've succeeded. */ + if (cxt->sflags & SF_CHGKMAP) + { + cxt->keymap = cxt->okeymap; + cxt->sflags &= ~SF_CHGKMAP; + /* If we indexed into a new keymap, but didn't map to a command that + affects the search (lastc > 0), and the character that mapped to a + new keymap would have ended the search (ENDSRCH_CHAR(cxt->prevc)), + handle that now as if the previous char would have ended the search + and we would have read the current character. */ + /* XXX - should we check cxt->mb? */ + if (cxt->lastc > 0 && ENDSRCH_CHAR (cxt->prevc)) + { + rl_stuff_char (cxt->lastc); + rl_execute_next (cxt->prevc); + /* XXX - do we insert everything in cxt->pmb? */ + return (0); + } + /* Otherwise, if the current character is mapped to self-insert or + nothing (i.e., not an editing command), and the previous character + was a keymap index, then we need to insert both the previous + character and the current character into the search string. */ + else if (cxt->lastc > 0 && cxt->prevc > 0 && + cxt->keymap[cxt->prevc].type == ISKMAP && + (f == 0 || f == rl_insert)) + { + /* Make lastc be the next character read */ + /* XXX - do we insert everything in cxt->mb? */ + rl_execute_next (cxt->lastc); + /* Dispatch on the previous character (insert into search string) */ + cxt->lastc = cxt->prevc; +#if defined (HANDLE_MULTIBYTE) + /* Have to overwrite cxt->mb here because dispatch uses it below */ + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + if (cxt->pmb[1] == 0) + { + cxt->mb[0] = cxt->lastc; /* == cxt->prevc */ + cxt->mb[1] = '\0'; + } + else + memcpy (cxt->mb, cxt->pmb, sizeof (cxt->mb)); + } +#endif + cxt->prevc = 0; + } + else if (cxt->lastc > 0 && cxt->prevc > 0 && f && f != rl_insert) + { + _rl_term_executing_keyseq (); /* should this go in the caller? */ + + _rl_pending_command.map = cxt->keymap; + _rl_pending_command.count = 1; /* XXX */ + _rl_pending_command.key = cxt->lastc; + _rl_pending_command.func = f; + _rl_command_to_execute = &_rl_pending_command; + + return (0); + } + } + + /* The characters in isearch_terminators (set from the user-settable + variable isearch-terminators) are used to terminate the search but + not subsequently execute the character as a command. The default + value is "\033\012" (ESC and C-J). */ + if (cxt->lastc > 0 && strchr (cxt->search_terminators, cxt->lastc)) + { + /* 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. WATCH OUT FOR THIS! This is intended + to allow the arrow keys to be used like ^F and ^B are used + to terminate the search and execute the movement command. + XXX - since _rl_input_available depends on the application- + settable keyboard timeout value, this could alternatively + use _rl_input_queued(100000) */ + if (cxt->lastc == ESC && (_rl_pushed_input_available () || _rl_input_available ())) + rl_execute_next (ESC); + return (0); + } + +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + if (cxt->lastc >= 0 && (cxt->mb[0] && cxt->mb[1] == '\0') && ENDSRCH_CHAR (cxt->lastc)) + { + /* This sets rl_pending_input to LASTC; it will be picked up the next + time rl_read_key is called. */ + rl_execute_next (cxt->lastc); + return (0); + } + } + else +#endif + if (cxt->lastc >= 0 && ENDSRCH_CHAR (cxt->lastc)) + { + /* This sets rl_pending_input to LASTC; it will be picked up the next + time rl_read_key is called. */ + rl_execute_next (cxt->lastc); + return (0); + } + + _rl_init_executing_keyseq (); + +opcode_dispatch: + /* Now dispatch on the character. `Opcodes' affect the search string or + state. Other characters are added to the string. */ + switch (cxt->lastc) + { + /* search again */ + case -1: + if (cxt->search_string_index == 0) + { + if (last_isearch_string) + { + cxt->search_string_size = 64 + last_isearch_string_len; + cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); + strcpy (cxt->search_string, last_isearch_string); + cxt->search_string_index = last_isearch_string_len; + rl_display_search (cxt->search_string, cxt->sflags, -1); + break; + } + /* XXX - restore keymap here? */ + return (1); + } + else if ((cxt->sflags & SF_REVERSE) && cxt->sline_index >= 0) + cxt->sline_index--; + else if (cxt->sline_index != cxt->sline_len) + cxt->sline_index++; + else + rl_ding (); + break; + + /* switch directions */ + case -2: + cxt->direction = -cxt->direction; + if (cxt->direction < 0) + cxt->sflags |= SF_REVERSE; + else + cxt->sflags &= ~SF_REVERSE; + break; + + /* delete character from search string. */ + case -3: /* C-H, DEL */ + /* This is tricky. To do this right, we need to keep a + stack of search positions for the current search, with + sentinels marking the beginning and end. But this will + do until we have a real isearch-undo. */ + if (cxt->search_string_index == 0) + rl_ding (); + else if (MB_CUR_MAX == 1 || rl_byte_oriented) + cxt->search_string[--cxt->search_string_index] = '\0'; + else + { + wstart = _rl_find_prev_mbchar (cxt->search_string, cxt->search_string_index, MB_FIND_NONZERO); + if (wstart >= 0) + cxt->search_string[cxt->search_string_index = wstart] = '\0'; + else + cxt->search_string[cxt->search_string_index = 0] = '\0'; + } + + if (cxt->search_string_index == 0) + rl_ding (); + + break; + + case -4: /* C-G, abort */ + rl_replace_line (cxt->lines[cxt->save_line], 0); + rl_point = cxt->save_point; + rl_mark = cxt->save_mark; + rl_deactivate_mark (); + rl_restore_prompt(); + rl_clear_message (); + + _rl_fix_point (1); /* in case save_line and save_point are out of sync */ + return -1; + + case -5: /* C-W */ + /* skip over portion of line we already matched and yank word */ + wstart = rl_point + cxt->search_string_index; + if (wstart >= rl_end) + { + rl_ding (); + break; + } + + /* if not in a word, move to one. */ + cval = _rl_char_value (rl_line_buffer, wstart); + if (_rl_walphabetic (cval) == 0) + { + rl_ding (); + break; + } + n = MB_NEXTCHAR (rl_line_buffer, wstart, 1, MB_FIND_NONZERO);; + while (n < rl_end) + { + cval = _rl_char_value (rl_line_buffer, n); + if (_rl_walphabetic (cval) == 0) + break; + n = MB_NEXTCHAR (rl_line_buffer, n, 1, MB_FIND_NONZERO);; + } + wlen = n - wstart + 1; + if (cxt->search_string_index + wlen + 1 >= cxt->search_string_size) + { + cxt->search_string_size += wlen + 1; + cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); + } + for (; wstart < n; wstart++) + cxt->search_string[cxt->search_string_index++] = rl_line_buffer[wstart]; + cxt->search_string[cxt->search_string_index] = '\0'; + break; + + case -6: /* C-Y */ + /* skip over portion of line we already matched and yank rest */ + wstart = rl_point + cxt->search_string_index; + if (wstart >= rl_end) + { + rl_ding (); + break; + } + n = rl_end - wstart + 1; + if (cxt->search_string_index + n + 1 >= cxt->search_string_size) + { + cxt->search_string_size += n + 1; + cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); + } + for (n = wstart; n < rl_end; n++) + cxt->search_string[cxt->search_string_index++] = rl_line_buffer[n]; + cxt->search_string[cxt->search_string_index] = '\0'; + break; + + case -7: /* bracketed paste */ + paste = _rl_bracketed_text (&pastelen); + if (paste == 0 || *paste == 0) + { + free (paste); + break; + } + if (_rl_enable_active_region) + rl_activate_mark (); + if (cxt->search_string_index + pastelen + 1 >= cxt->search_string_size) + { + cxt->search_string_size += pastelen + 2; + cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); + } + strcpy (cxt->search_string + cxt->search_string_index, paste); + cxt->search_string_index += pastelen; + free (paste); + break; + + /* Add character to search string and continue search. */ + default: +#if defined (HANDLE_MULTIBYTE) + wlen = (cxt->mb[0] == 0 || cxt->mb[1] == 0) ? 1 : RL_STRLEN (cxt->mb); +#else + wlen = 1; +#endif + if (cxt->search_string_index + wlen + 1 >= cxt->search_string_size) + { + cxt->search_string_size += 128; /* 128 much greater than MB_CUR_MAX */ + cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size); + } +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + int j; + + if (cxt->mb[0] == 0 || cxt->mb[1] == 0) + cxt->search_string[cxt->search_string_index++] = cxt->mb[0]; + else + for (j = 0; j < wlen; ) + cxt->search_string[cxt->search_string_index++] = cxt->mb[j++]; + } + else +#endif + cxt->search_string[cxt->search_string_index++] = cxt->lastc; /* XXX - was c instead of lastc */ + cxt->search_string[cxt->search_string_index] = '\0'; + break; + } + + for (cxt->sflags &= ~(SF_FOUND|SF_FAILED);; ) + { + if (cxt->search_string_index == 0) + { + cxt->sflags |= SF_FAILED; + break; + } + + limit = cxt->sline_len - cxt->search_string_index + 1; + + /* Search the current line. */ + while ((cxt->sflags & SF_REVERSE) ? (cxt->sline_index >= 0) : (cxt->sline_index < limit)) + { + if (STREQN (cxt->search_string, cxt->sline + cxt->sline_index, cxt->search_string_index)) + { + cxt->sflags |= SF_FOUND; + break; + } + else + cxt->sline_index += cxt->direction; + + if (cxt->sline_index < 0) + { + cxt->sline_index = 0; + break; + } + } + if (cxt->sflags & SF_FOUND) + break; + + /* Move to the next line, but skip new copies of the line + we just found and lines shorter than the string we're + searching for. */ + do + { + /* Move to the next line. */ + cxt->history_pos += cxt->direction; + + /* At limit for direction? */ + if ((cxt->sflags & SF_REVERSE) ? (cxt->history_pos < 0) : (cxt->history_pos == cxt->hlen)) + { + cxt->sflags |= SF_FAILED; + break; + } + + /* We will need these later. */ + cxt->sline = cxt->lines[cxt->history_pos]; + cxt->sline_len = strlen (cxt->sline); + } + while ((cxt->prev_line_found && STREQ (cxt->prev_line_found, cxt->lines[cxt->history_pos])) || + (cxt->search_string_index > cxt->sline_len)); + + if (cxt->sflags & SF_FAILED) + { + /* XXX - reset sline_index if < 0 */ + if (cxt->sline_index < 0) + cxt->sline_index = 0; + break; + } + + /* Now set up the line for searching... */ + cxt->sline_index = (cxt->sflags & SF_REVERSE) ? cxt->sline_len - cxt->search_string_index : 0; + } + + /* reset the keymaps for the next time through the loop */ + cxt->keymap = cxt->okeymap = _rl_keymap; + + if (cxt->sflags & SF_FAILED) + { + /* We cannot find the search string. Ding the bell. */ + rl_ding (); + cxt->history_pos = cxt->last_found_line; + rl_deactivate_mark (); + rl_display_search (cxt->search_string, cxt->sflags, (cxt->history_pos == cxt->save_line) ? -1 : cxt->history_pos); + return 1; + } + + /* We have found the search string. Just display it. But don't + actually move there in the history list until the user accepts + the location. */ + if (cxt->sflags & SF_FOUND) + { + cxt->prev_line_found = cxt->lines[cxt->history_pos]; + rl_replace_line (cxt->lines[cxt->history_pos], 0); + if (_rl_enable_active_region) + rl_activate_mark (); + rl_point = cxt->sline_index; + if (rl_mark_active_p () && cxt->search_string_index > 0) + rl_mark = rl_point + cxt->search_string_index; + cxt->last_found_line = cxt->history_pos; + rl_display_search (cxt->search_string, cxt->sflags, (cxt->history_pos == cxt->save_line) ? -1 : cxt->history_pos); + } + + return 1; +} + +int +_rl_isearch_cleanup (_rl_search_cxt *cxt, int r) +{ + if (r >= 0) + _rl_isearch_fini (cxt); + _rl_scxt_dispose (cxt, 0); + _rl_iscxt = 0; + + RL_UNSETSTATE(RL_STATE_ISEARCH); + + return (r != 0); +} + +/* Search through the history looking for an interactively typed string. + This is analogous to i-search. We start the search in the current line. + DIRECTION is which direction to search; >= 0 means forward, < 0 means + backwards. */ +static int +rl_search_history (int direction, int invoking_key) +{ + _rl_search_cxt *cxt; /* local for now, but saved globally */ + int c, r; + + RL_SETSTATE(RL_STATE_ISEARCH); + cxt = _rl_isearch_init (direction); + + rl_display_search (cxt->search_string, cxt->sflags, -1); + + /* If we are using the callback interface, all we do is set up here and + return. The key is that we leave RL_STATE_ISEARCH set. */ + if (RL_ISSTATE (RL_STATE_CALLBACK)) + return (0); + + r = -1; + for (;;) + { + c = _rl_search_getchar (cxt); + /* We might want to handle EOF here (c == 0) */ + r = _rl_isearch_dispatch (cxt, cxt->lastc); + if (r <= 0) + break; + } + + /* The searching is over. The user may have found the string that she + was looking for, or else she may have exited a failing search. If + LINE_INDEX is -1, then that shows that the string searched for was + not found. We use this to determine where to place rl_point. */ + return (_rl_isearch_cleanup (cxt, r)); +} + +#if defined (READLINE_CALLBACKS) +/* Called from the callback functions when we are ready to read a key. The + callback functions know to call this because RL_ISSTATE(RL_STATE_ISEARCH). + If _rl_isearch_dispatch finishes searching, this function is responsible + for turning off RL_STATE_ISEARCH, which it does using _rl_isearch_cleanup. */ +int +_rl_isearch_callback (_rl_search_cxt *cxt) +{ + int c, r; + + c = _rl_search_getchar (cxt); + /* We might want to handle EOF here */ + r = _rl_isearch_dispatch (cxt, cxt->lastc); + + return (r <= 0) ? _rl_isearch_cleanup (cxt, r) : 0; +} +#endif diff --git a/bash-5.1/lib/readline/keymaps.c b/bash-5.1/lib/readline/keymaps.c new file mode 100644 index 0000000..4ade30b --- /dev/null +++ b/bash-5.1/lib/readline/keymaps.c @@ -0,0 +1,174 @@ +/* keymaps.c -- Functions and keymaps for the GNU Readline library. */ + +/* Copyright (C) 1988,1989-2009,2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include /* for FILE * definition for readline.h */ + +#include "readline.h" +#include "rlconf.h" + +#include "emacs_keymap.c" + +#if defined (VI_MODE) +#include "vi_keymap.c" +#endif + +#include "xmalloc.h" + +/* **************************************************************** */ +/* */ +/* Functions for manipulating Keymaps. */ +/* */ +/* **************************************************************** */ + + +/* Return a new, empty keymap. + Free it with free() when you are done. */ +Keymap +rl_make_bare_keymap (void) +{ + register int i; + Keymap keymap; + + keymap = (Keymap)xmalloc (KEYMAP_SIZE * sizeof (KEYMAP_ENTRY)); + for (i = 0; i < KEYMAP_SIZE; i++) + { + keymap[i].type = ISFUNC; + keymap[i].function = (rl_command_func_t *)NULL; + } + +#if 0 + for (i = 'A'; i < ('Z' + 1); i++) + { + keymap[i].type = ISFUNC; + keymap[i].function = rl_do_lowercase_version; + } +#endif + + return (keymap); +} + +/* A convenience function that returns 1 if there are no keys bound to + functions in KEYMAP */ +int +rl_empty_keymap (Keymap keymap) +{ + int i; + + for (i = 0; i < ANYOTHERKEY; i++) + { + if (keymap[i].type != ISFUNC || keymap[i].function) + return 0; + } + return 1; +} + +/* Return a new keymap which is a copy of MAP. Just copies pointers, does + not copy text of macros or descend into child keymaps. */ +Keymap +rl_copy_keymap (Keymap map) +{ + register int i; + Keymap temp; + + temp = rl_make_bare_keymap (); + for (i = 0; i < KEYMAP_SIZE; i++) + { + temp[i].type = map[i].type; + temp[i].function = map[i].function; + } + return (temp); +} + +/* Return a new keymap with the printing characters bound to rl_insert, + the uppercase Meta characters bound to run their lowercase equivalents, + and the Meta digits bound to produce numeric arguments. */ +Keymap +rl_make_keymap (void) +{ + register int i; + Keymap newmap; + + newmap = rl_make_bare_keymap (); + + /* All ASCII printing characters are self-inserting. */ + for (i = ' '; i < 127; i++) + newmap[i].function = rl_insert; + + newmap[TAB].function = rl_insert; + newmap[RUBOUT].function = rl_rubout; /* RUBOUT == 127 */ + newmap[CTRL('H')].function = rl_rubout; + +#if KEYMAP_SIZE > 128 + /* Printing characters in ISO Latin-1 and some 8-bit character sets. */ + for (i = 128; i < 256; i++) + newmap[i].function = rl_insert; +#endif /* KEYMAP_SIZE > 128 */ + + return (newmap); +} + +/* Free the storage associated with MAP. */ +void +rl_discard_keymap (Keymap map) +{ + int i; + + if (map == 0) + return; + + for (i = 0; i < KEYMAP_SIZE; i++) + { + switch (map[i].type) + { + case ISFUNC: + break; + + case ISKMAP: + rl_discard_keymap ((Keymap)map[i].function); + xfree ((char *)map[i].function); + break; + + case ISMACR: + xfree ((char *)map[i].function); + break; + } + } +} + +/* Convenience function that discards, then frees, MAP. */ +void +rl_free_keymap (Keymap map) +{ + rl_discard_keymap (map); + xfree ((char *)map); +} diff --git a/bash-5.1/lib/readline/keymaps.h b/bash-5.1/lib/readline/keymaps.h new file mode 100644 index 0000000..1fa853d --- /dev/null +++ b/bash-5.1/lib/readline/keymaps.h @@ -0,0 +1,100 @@ +/* keymaps.h -- Manipulation of readline keymaps. */ + +/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#ifndef _KEYMAPS_H_ +#define _KEYMAPS_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined (READLINE_LIBRARY) +# include "rlstdc.h" +# include "chardefs.h" +# include "rltypedefs.h" +#else +# include +# include +# include +#endif + +/* A keymap contains one entry for each key in the ASCII set. + Each entry consists of a type and a pointer. + FUNCTION is the address of a function to run, or the + address of a keymap to indirect through. + TYPE says which kind of thing FUNCTION is. */ +typedef struct _keymap_entry { + char type; + rl_command_func_t *function; +} KEYMAP_ENTRY; + +/* This must be large enough to hold bindings for all of the characters + in a desired character set (e.g, 128 for ASCII, 256 for ISO Latin-x, + and so on) plus one for subsequence matching. */ +#define KEYMAP_SIZE 257 +#define ANYOTHERKEY KEYMAP_SIZE-1 + +typedef KEYMAP_ENTRY KEYMAP_ENTRY_ARRAY[KEYMAP_SIZE]; +typedef KEYMAP_ENTRY *Keymap; + +/* The values that TYPE can have in a keymap entry. */ +#define ISFUNC 0 +#define ISKMAP 1 +#define ISMACR 2 + +extern KEYMAP_ENTRY_ARRAY emacs_standard_keymap, emacs_meta_keymap, emacs_ctlx_keymap; +extern KEYMAP_ENTRY_ARRAY vi_insertion_keymap, vi_movement_keymap; + +/* Return a new, empty keymap. + Free it with free() when you are done. */ +extern Keymap rl_make_bare_keymap PARAMS((void)); + +/* Return a new keymap which is a copy of MAP. */ +extern Keymap rl_copy_keymap PARAMS((Keymap)); + +/* Return a new keymap with the printing characters bound to rl_insert, + the lowercase Meta characters bound to run their equivalents, and + the Meta digits bound to produce numeric arguments. */ +extern Keymap rl_make_keymap PARAMS((void)); + +/* Free the storage associated with a keymap. */ +extern void rl_discard_keymap PARAMS((Keymap)); + +/* These functions actually appear in bind.c */ + +/* Return the keymap corresponding to a given name. Names look like + `emacs' or `emacs-meta' or `vi-insert'. */ +extern Keymap rl_get_keymap_by_name PARAMS((const char *)); + +/* Return the current keymap. */ +extern Keymap rl_get_keymap PARAMS((void)); + +/* Set the current keymap to MAP. */ +extern void rl_set_keymap PARAMS((Keymap)); + +/* Set the name of MAP to NAME */ +extern int rl_set_keymap_name PARAMS((const char *, Keymap)); + +#ifdef __cplusplus +} +#endif + +#endif /* _KEYMAPS_H_ */ diff --git a/bash-5.1/lib/readline/kill.c b/bash-5.1/lib/readline/kill.c new file mode 100644 index 0000000..50c3fde --- /dev/null +++ b/bash-5.1/lib/readline/kill.c @@ -0,0 +1,866 @@ +/* kill.c -- kill ring management. */ + +/* Copyright (C) 1994-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#if defined (HAVE_UNISTD_H) +# include /* for _POSIX_VERSION */ +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" + +/* Some standard library routines. */ +#include "readline.h" +#include "history.h" + +#include "rlprivate.h" +#include "xmalloc.h" + +/* **************************************************************** */ +/* */ +/* Killing Mechanism */ +/* */ +/* **************************************************************** */ + +/* What we assume for a max number of kills. */ +#define DEFAULT_MAX_KILLS 10 + +/* The real variable to look at to find out when to flush kills. */ +static int rl_max_kills = DEFAULT_MAX_KILLS; + +/* Where to store killed text. */ +static char **rl_kill_ring = (char **)NULL; + +/* Where we are in the kill ring. */ +static int rl_kill_index; + +/* How many slots we have in the kill ring. */ +static int rl_kill_ring_length; + +static int _rl_copy_to_kill_ring PARAMS((char *, int)); +static int region_kill_internal PARAMS((int)); +static int _rl_copy_word_as_kill PARAMS((int, int)); +static int rl_yank_nth_arg_internal PARAMS((int, int, int)); + +/* How to say that you only want to save a certain amount + of kill material. */ +int +rl_set_retained_kills (int num) +{ + return 0; +} + +/* Add TEXT to the kill ring, allocating a new kill ring slot as necessary. + This uses TEXT directly, so the caller must not free it. If APPEND is + non-zero, and the last command was a kill, the text is appended to the + current kill ring slot, otherwise prepended. */ +static int +_rl_copy_to_kill_ring (char *text, int append) +{ + char *old, *new; + int slot; + + /* First, find the slot to work with. */ + if (_rl_last_command_was_kill == 0 || rl_kill_ring == 0) + { + /* Get a new slot. */ + if (rl_kill_ring == 0) + { + /* If we don't have any defined, then make one. */ + rl_kill_ring = (char **) + xmalloc (((rl_kill_ring_length = 1) + 1) * sizeof (char *)); + rl_kill_ring[slot = 0] = (char *)NULL; + } + else + { + /* We have to add a new slot on the end, unless we have + exceeded the max limit for remembering kills. */ + slot = rl_kill_ring_length; + if (slot == rl_max_kills) + { + register int i; + xfree (rl_kill_ring[0]); + for (i = 0; i < slot; i++) + rl_kill_ring[i] = rl_kill_ring[i + 1]; + } + else + { + slot = rl_kill_ring_length += 1; + rl_kill_ring = (char **)xrealloc (rl_kill_ring, (slot + 1) * sizeof (char *)); + } + rl_kill_ring[--slot] = (char *)NULL; + } + } + else + slot = rl_kill_ring_length - 1; + + /* If the last command was a kill, prepend or append. */ + if (_rl_last_command_was_kill && rl_kill_ring[slot] && rl_editing_mode != vi_mode) + { + old = rl_kill_ring[slot]; + new = (char *)xmalloc (1 + strlen (old) + strlen (text)); + + if (append) + { + strcpy (new, old); + strcat (new, text); + } + else + { + strcpy (new, text); + strcat (new, old); + } + xfree (old); + xfree (text); + rl_kill_ring[slot] = new; + } + else + rl_kill_ring[slot] = text; + + rl_kill_index = slot; + return 0; +} + +/* The way to kill something. This appends or prepends to the last + kill, if the last command was a kill command. if FROM is less + than TO, then the text is appended, otherwise prepended. If the + last command was not a kill command, then a new slot is made for + this kill. */ +int +rl_kill_text (int from, int to) +{ + char *text; + + /* Is there anything to kill? */ + if (from == to) + { + _rl_last_command_was_kill++; + return 0; + } + + text = rl_copy_text (from, to); + + /* Delete the copied text from the line. */ + rl_delete_text (from, to); + + _rl_copy_to_kill_ring (text, from < to); + + _rl_last_command_was_kill++; + return 0; +} + +/* Now REMEMBER! In order to do prepending or appending correctly, kill + commands always make rl_point's original position be the FROM argument, + and rl_point's extent be the TO argument. */ + +/* **************************************************************** */ +/* */ +/* Killing Commands */ +/* */ +/* **************************************************************** */ + +/* Delete the word at point, saving the text in the kill ring. */ +int +rl_kill_word (int count, int key) +{ + int orig_point; + + if (count < 0) + return (rl_backward_kill_word (-count, key)); + else + { + orig_point = rl_point; + rl_forward_word (count, key); + + if (rl_point != orig_point) + rl_kill_text (orig_point, rl_point); + + rl_point = orig_point; + if (rl_editing_mode == emacs_mode) + rl_mark = rl_point; + } + return 0; +} + +/* Rubout the word before point, placing it on the kill ring. */ +int +rl_backward_kill_word (int count, int key) +{ + int orig_point; + + if (count < 0) + return (rl_kill_word (-count, key)); + else + { + orig_point = rl_point; + rl_backward_word (count, key); + + if (rl_point != orig_point) + rl_kill_text (orig_point, rl_point); + + if (rl_editing_mode == emacs_mode) + rl_mark = rl_point; + } + return 0; +} + +/* Kill from here to the end of the line. If DIRECTION is negative, kill + back to the line start instead. */ +int +rl_kill_line (int direction, int key) +{ + int orig_point; + + if (direction < 0) + return (rl_backward_kill_line (1, key)); + else + { + orig_point = rl_point; + rl_end_of_line (1, key); + if (orig_point != rl_point) + rl_kill_text (orig_point, rl_point); + rl_point = orig_point; + if (rl_editing_mode == emacs_mode) + rl_mark = rl_point; + } + return 0; +} + +/* Kill backwards to the start of the line. If DIRECTION is negative, kill + forwards to the line end instead. */ +int +rl_backward_kill_line (int direction, int key) +{ + int orig_point; + + if (direction < 0) + return (rl_kill_line (1, key)); + else + { + if (rl_point == 0) + rl_ding (); + else + { + orig_point = rl_point; + rl_beg_of_line (1, key); + if (rl_point != orig_point) + rl_kill_text (orig_point, rl_point); + if (rl_editing_mode == emacs_mode) + rl_mark = rl_point; + } + } + return 0; +} + +/* Kill the whole line, no matter where point is. */ +int +rl_kill_full_line (int count, int key) +{ + rl_begin_undo_group (); + rl_point = 0; + rl_kill_text (rl_point, rl_end); + rl_mark = 0; + rl_end_undo_group (); + return 0; +} + +/* The next two functions mimic unix line editing behaviour, except they + save the deleted text on the kill ring. This is safer than not saving + it, and since we have a ring, nobody should get screwed. */ + +/* This does what C-w does in Unix. We can't prevent people from + using behaviour that they expect. */ +int +rl_unix_word_rubout (int count, int key) +{ + int orig_point; + + if (rl_point == 0) + rl_ding (); + else + { + orig_point = rl_point; + if (count <= 0) + count = 1; + + while (count--) + { + while (rl_point && whitespace (rl_line_buffer[rl_point - 1])) + rl_point--; + + while (rl_point && (whitespace (rl_line_buffer[rl_point - 1]) == 0)) + rl_point--; /* XXX - multibyte? */ + } + + rl_kill_text (orig_point, rl_point); + if (rl_editing_mode == emacs_mode) + rl_mark = rl_point; + } + + return 0; +} + +/* This deletes one filename component in a Unix pathname. That is, it + deletes backward to directory separator (`/') or whitespace. */ +int +rl_unix_filename_rubout (int count, int key) +{ + int orig_point, c; + + if (rl_point == 0) + rl_ding (); + else + { + orig_point = rl_point; + if (count <= 0) + count = 1; + + while (count--) + { + c = rl_line_buffer[rl_point - 1]; + while (rl_point && (whitespace (c) || c == '/')) + { + rl_point--; + c = rl_line_buffer[rl_point - 1]; + } + + while (rl_point && (whitespace (c) == 0) && c != '/') + { + rl_point--; /* XXX - multibyte? */ + c = rl_line_buffer[rl_point - 1]; + } + } + + rl_kill_text (orig_point, rl_point); + if (rl_editing_mode == emacs_mode) + rl_mark = rl_point; + } + + return 0; +} + +/* Here is C-u doing what Unix does. You don't *have* to use these + key-bindings. We have a choice of killing the entire line, or + killing from where we are to the start of the line. We choose the + latter, because if you are a Unix weenie, then you haven't backspaced + into the line at all, and if you aren't, then you know what you are + doing. */ +int +rl_unix_line_discard (int count, int key) +{ + if (rl_point == 0) + rl_ding (); + else + { + rl_kill_text (rl_point, 0); + rl_point = 0; + if (rl_editing_mode == emacs_mode) + rl_mark = rl_point; + } + return 0; +} + +/* Copy the text in the `region' to the kill ring. If DELETE is non-zero, + delete the text from the line as well. */ +static int +region_kill_internal (int delete) +{ + char *text; + + if (rl_mark != rl_point) + { + text = rl_copy_text (rl_point, rl_mark); + if (delete) + rl_delete_text (rl_point, rl_mark); + _rl_copy_to_kill_ring (text, rl_point < rl_mark); + } + + _rl_fix_point (1); + _rl_last_command_was_kill++; + return 0; +} + +/* Copy the text in the region to the kill ring. */ +int +rl_copy_region_to_kill (int count, int key) +{ + return (region_kill_internal (0)); +} + +/* Kill the text between the point and mark. */ +int +rl_kill_region (int count, int key) +{ + int r, npoint; + + npoint = (rl_point < rl_mark) ? rl_point : rl_mark; + r = region_kill_internal (1); + rl_point = npoint; + _rl_fix_point (1); + return r; +} + +/* Copy COUNT words to the kill ring. DIR says which direction we look + to find the words. */ +static int +_rl_copy_word_as_kill (int count, int dir) +{ + int om, op, r; + + om = rl_mark; + op = rl_point; + + if (dir > 0) + rl_forward_word (count, 0); + else + rl_backward_word (count, 0); + + rl_mark = rl_point; + + if (dir > 0) + rl_backward_word (count, 0); + else + rl_forward_word (count, 0); + + r = region_kill_internal (0); + + rl_mark = om; + rl_point = op; + + return r; +} + +int +rl_copy_forward_word (int count, int key) +{ + if (count < 0) + return (rl_copy_backward_word (-count, key)); + + return (_rl_copy_word_as_kill (count, 1)); +} + +int +rl_copy_backward_word (int count, int key) +{ + if (count < 0) + return (rl_copy_forward_word (-count, key)); + + return (_rl_copy_word_as_kill (count, -1)); +} + +/* Yank back the last killed text. This ignores arguments. */ +int +rl_yank (int count, int key) +{ + if (rl_kill_ring == 0) + { + _rl_abort_internal (); + return 1; + } + + _rl_set_mark_at_pos (rl_point); + rl_insert_text (rl_kill_ring[rl_kill_index]); + return 0; +} + +/* If the last command was yank, or yank_pop, and the text just + before point is identical to the current kill item, then + delete that text from the line, rotate the index down, and + yank back some other text. */ +int +rl_yank_pop (int count, int key) +{ + int l, n; + + if (((rl_last_func != rl_yank_pop) && (rl_last_func != rl_yank)) || + !rl_kill_ring) + { + _rl_abort_internal (); + return 1; + } + + l = strlen (rl_kill_ring[rl_kill_index]); + n = rl_point - l; + if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l)) + { + rl_delete_text (n, rl_point); + rl_point = n; + rl_kill_index--; + if (rl_kill_index < 0) + rl_kill_index = rl_kill_ring_length - 1; + rl_yank (1, 0); + return 0; + } + else + { + _rl_abort_internal (); + return 1; + } +} + +#if defined (VI_MODE) +int +rl_vi_yank_pop (int count, int key) +{ + int l, n; + + if (((rl_last_func != rl_vi_yank_pop) && (rl_last_func != rl_vi_put)) || + !rl_kill_ring) + { + _rl_abort_internal (); + return 1; + } + + l = strlen (rl_kill_ring[rl_kill_index]); + n = rl_point - l; + if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l)) + { + rl_delete_text (n, rl_point); + rl_point = n; + rl_kill_index--; + if (rl_kill_index < 0) + rl_kill_index = rl_kill_ring_length - 1; + rl_vi_put (1, 'p'); + return 0; + } + else + { + _rl_abort_internal (); + return 1; + } +} +#endif /* VI_MODE */ + +/* Yank the COUNTh argument from the previous history line, skipping + HISTORY_SKIP lines before looking for the `previous line'. */ +static int +rl_yank_nth_arg_internal (int count, int key, int history_skip) +{ + register HIST_ENTRY *entry; + char *arg; + int i, pos; + + pos = where_history (); + + if (history_skip) + { + for (i = 0; i < history_skip; i++) + entry = previous_history (); + } + + entry = previous_history (); + + history_set_pos (pos); + + if (entry == 0) + { + rl_ding (); + return 1; + } + + arg = history_arg_extract (count, count, entry->line); + if (!arg || !*arg) + { + rl_ding (); + FREE (arg); + return 1; + } + + rl_begin_undo_group (); + + _rl_set_mark_at_pos (rl_point); + +#if defined (VI_MODE) + /* Vi mode always inserts a space before yanking the argument, and it + inserts it right *after* rl_point. */ + if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap) + { + rl_vi_append_mode (1, key); + rl_insert_text (" "); + } +#endif /* VI_MODE */ + + rl_insert_text (arg); + xfree (arg); + + rl_end_undo_group (); + return 0; +} + +/* Yank the COUNTth argument from the previous history line. */ +int +rl_yank_nth_arg (int count, int key) +{ + return (rl_yank_nth_arg_internal (count, key, 0)); +} + +/* Yank the last argument from the previous history line. This `knows' + how rl_yank_nth_arg treats a count of `$'. With an argument, this + behaves the same as rl_yank_nth_arg. */ +int +rl_yank_last_arg (int count, int key) +{ + static int history_skip = 0; + static int explicit_arg_p = 0; + static int count_passed = 1; + static int direction = 1; + static int undo_needed = 0; + int retval; + + if (rl_last_func != rl_yank_last_arg) + { + history_skip = 0; + explicit_arg_p = rl_explicit_arg; + count_passed = count; + direction = 1; + } + else + { + if (undo_needed) + rl_do_undo (); + if (count < 0) /* XXX - was < 1 */ + direction = -direction; + history_skip += direction; + if (history_skip < 0) + history_skip = 0; + } + + if (explicit_arg_p) + retval = rl_yank_nth_arg_internal (count_passed, key, history_skip); + else + retval = rl_yank_nth_arg_internal ('$', key, history_skip); + + undo_needed = retval == 0; + return retval; +} + +/* Having read the special escape sequence denoting the beginning of a + `bracketed paste' sequence, read the rest of the pasted input until the + closing sequence and return the pasted text. */ +char * +_rl_bracketed_text (size_t *lenp) +{ + int c; + size_t len, cap; + char *buf; + + len = 0; + buf = xmalloc (cap = 64); + buf[0] = '\0'; + + RL_SETSTATE (RL_STATE_MOREINPUT); + while ((c = rl_read_key ()) >= 0) + { + if (RL_ISSTATE (RL_STATE_MACRODEF)) + _rl_add_macro_char (c); + + if (c == '\r') /* XXX */ + c = '\n'; + + if (len == cap) + buf = xrealloc (buf, cap *= 2); + + buf[len++] = c; + if (len >= BRACK_PASTE_SLEN && c == BRACK_PASTE_LAST && + STREQN (buf + len - BRACK_PASTE_SLEN, BRACK_PASTE_SUFF, BRACK_PASTE_SLEN)) + { + len -= BRACK_PASTE_SLEN; + break; + } + } + RL_UNSETSTATE (RL_STATE_MOREINPUT); + + if (c >= 0) + { + if (len == cap) + buf = xrealloc (buf, cap + 1); + buf[len] = '\0'; + } + + if (lenp) + *lenp = len; + return (buf); +} + +/* Having read the special escape sequence denoting the beginning of a + `bracketed paste' sequence, read the rest of the pasted input until the + closing sequence and insert the pasted text as a single unit without + interpretation. Temporarily highlight the inserted text. */ +int +rl_bracketed_paste_begin (int count, int key) +{ + int retval, c; + size_t len, cap; + char *buf; + + buf = _rl_bracketed_text (&len); + rl_mark = rl_point; + retval = rl_insert_text (buf) == len ? 0 : 1; + if (_rl_enable_active_region) + rl_activate_mark (); + + xfree (buf); + return (retval); +} + +int +_rl_read_bracketed_paste_prefix (int c) +{ + char pbuf[BRACK_PASTE_SLEN+1], *pbpref; + int key, ind, j; + + pbpref = BRACK_PASTE_PREF; /* XXX - debugging */ + if (c != pbpref[0]) + return (0); + pbuf[ind = 0] = c; + while (ind < BRACK_PASTE_SLEN-1 && + (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) && + _rl_pushed_input_available () == 0 && + _rl_input_queued (0)) + { + key = rl_read_key (); /* XXX - for now */ + if (key < 0) + break; + pbuf[++ind] = key; + if (pbuf[ind] != pbpref[ind]) + break; + } + + if (ind < BRACK_PASTE_SLEN-1) /* read incomplete sequence */ + { + while (ind >= 0) + _rl_unget_char (pbuf[ind--]); + return (key < 0 ? key : 0); + } + return (key < 0 ? key : 1); +} + +/* Get a character from wherever we read input, handling input in bracketed + paste mode. If we don't have or use bracketed paste mode, this can be + used in place of rl_read_key(). */ +int +_rl_bracketed_read_key () +{ + int c, r; + char *pbuf; + size_t pblen; + + RL_SETSTATE(RL_STATE_MOREINPUT); + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + + if (c < 0) + return -1; + + /* read pasted data with bracketed-paste mode enabled. */ + if (_rl_enable_bracketed_paste && c == ESC && (r = _rl_read_bracketed_paste_prefix (c)) == 1) + { + pbuf = _rl_bracketed_text (&pblen); + if (pblen == 0) + { + xfree (pbuf); + return 0; /* XXX */ + } + c = (unsigned char)pbuf[0]; + if (pblen > 1) + { + while (--pblen > 0) + _rl_unget_char ((unsigned char)pbuf[pblen]); + } + xfree (pbuf); + } + + return c; +} + +/* Get a character from wherever we read input, handling input in bracketed + paste mode. If we don't have or use bracketed paste mode, this can be + used in place of rl_read_key(). */ +int +_rl_bracketed_read_mbstring (char *mb, int mlen) +{ + int c, r; + + c = _rl_bracketed_read_key (); + if (c < 0) + return -1; + +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + c = _rl_read_mbstring (c, mb, mlen); + else +#endif + mb[0] = c; + mb[mlen] = '\0'; /* just in case */ + + return c; +} + +/* A special paste command for Windows users. */ +#if defined (_WIN32) +#include + +int +rl_paste_from_clipboard (int count, int key) +{ + char *data, *ptr; + int len; + + if (OpenClipboard (NULL) == 0) + return (0); + + data = (char *)GetClipboardData (CF_TEXT); + if (data) + { + ptr = strchr (data, '\r'); + if (ptr) + { + len = ptr - data; + ptr = (char *)xmalloc (len + 1); + ptr[len] = '\0'; + strncpy (ptr, data, len); + } + else + ptr = data; + _rl_set_mark_at_pos (rl_point); + rl_insert_text (ptr); + if (ptr != data) + xfree (ptr); + CloseClipboard (); + } + return (0); +} +#endif /* _WIN32 */ diff --git a/bash-5.1/lib/readline/macro.c b/bash-5.1/lib/readline/macro.c new file mode 100644 index 0000000..92cc55c --- /dev/null +++ b/bash-5.1/lib/readline/macro.c @@ -0,0 +1,332 @@ +/* macro.c -- keyboard macros for readline. */ + +/* Copyright (C) 1994-2009,2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#if defined (HAVE_UNISTD_H) +# include /* for _POSIX_VERSION */ +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" + +/* Some standard library routines. */ +#include "readline.h" +#include "history.h" + +#include "rlprivate.h" +#include "xmalloc.h" + +#define MAX_MACRO_LEVEL 16 + +/* **************************************************************** */ +/* */ +/* Hacking Keyboard Macros */ +/* */ +/* **************************************************************** */ + +/* The currently executing macro string. If this is non-zero, + then it is a malloc ()'ed string where input is coming from. */ +char *rl_executing_macro = (char *)NULL; + +/* The offset in the above string to the next character to be read. */ +static int executing_macro_index; + +/* The current macro string being built. Characters get stuffed + in here by add_macro_char (). */ +static char *current_macro = (char *)NULL; + +/* The size of the buffer allocated to current_macro. */ +static int current_macro_size; + +/* The index at which characters are being added to current_macro. */ +static int current_macro_index; + +/* A structure used to save nested macro strings. + It is a linked list of string/index for each saved macro. */ +struct saved_macro { + struct saved_macro *next; + char *string; + int sindex; +}; + +/* The list of saved macros. */ +static struct saved_macro *macro_list = (struct saved_macro *)NULL; + +static int macro_level = 0; + +/* Set up to read subsequent input from STRING. + STRING is free ()'ed when we are done with it. */ +void +_rl_with_macro_input (char *string) +{ + if (macro_level > MAX_MACRO_LEVEL) + { + _rl_errmsg ("maximum macro execution nesting level exceeded"); + _rl_abort_internal (); + return; + } + +#if 0 + if (rl_executing_macro) /* XXX - later */ +#endif + _rl_push_executing_macro (); + rl_executing_macro = string; + executing_macro_index = 0; + RL_SETSTATE(RL_STATE_MACROINPUT); +} + +/* Return the next character available from a macro, or 0 if + there are no macro characters. */ +int +_rl_next_macro_key (void) +{ + int c; + + if (rl_executing_macro == 0) + return (0); + + if (rl_executing_macro[executing_macro_index] == 0) + { + _rl_pop_executing_macro (); + return (_rl_next_macro_key ()); + } + +#if defined (READLINE_CALLBACKS) + c = rl_executing_macro[executing_macro_index++]; + if (RL_ISSTATE (RL_STATE_CALLBACK) && RL_ISSTATE (RL_STATE_READCMD|RL_STATE_MOREINPUT) && rl_executing_macro[executing_macro_index] == 0) + _rl_pop_executing_macro (); + return c; +#else + /* XXX - consider doing the same as the callback code, just not testing + whether we're running in callback mode */ + return (rl_executing_macro[executing_macro_index++]); +#endif +} + +int +_rl_peek_macro_key (void) +{ + if (rl_executing_macro == 0) + return (0); + if (rl_executing_macro[executing_macro_index] == 0 && (macro_list == 0 || macro_list->string == 0)) + return (0); + if (rl_executing_macro[executing_macro_index] == 0 && macro_list && macro_list->string) + return (macro_list->string[0]); + return (rl_executing_macro[executing_macro_index]); +} + +int +_rl_prev_macro_key (void) +{ + if (rl_executing_macro == 0) + return (0); + + if (executing_macro_index == 0) + return (0); + + executing_macro_index--; + return (rl_executing_macro[executing_macro_index]); +} + +/* Save the currently executing macro on a stack of saved macros. */ +void +_rl_push_executing_macro (void) +{ + struct saved_macro *saver; + + saver = (struct saved_macro *)xmalloc (sizeof (struct saved_macro)); + saver->next = macro_list; + saver->sindex = executing_macro_index; + saver->string = rl_executing_macro; + + macro_list = saver; + + macro_level++; +} + +/* Discard the current macro, replacing it with the one + on the top of the stack of saved macros. */ +void +_rl_pop_executing_macro (void) +{ + struct saved_macro *macro; + + FREE (rl_executing_macro); + rl_executing_macro = (char *)NULL; + executing_macro_index = 0; + + if (macro_list) + { + macro = macro_list; + rl_executing_macro = macro_list->string; + executing_macro_index = macro_list->sindex; + macro_list = macro_list->next; + xfree (macro); + } + + macro_level--; + + if (rl_executing_macro == 0) + RL_UNSETSTATE(RL_STATE_MACROINPUT); +} + +/* Add a character to the macro being built. */ +void +_rl_add_macro_char (int c) +{ + if (current_macro_index + 1 >= current_macro_size) + { + if (current_macro == 0) + current_macro = (char *)xmalloc (current_macro_size = 25); + else + current_macro = (char *)xrealloc (current_macro, current_macro_size += 25); + } + + current_macro[current_macro_index++] = c; + current_macro[current_macro_index] = '\0'; +} + +void +_rl_kill_kbd_macro (void) +{ + if (current_macro) + { + xfree (current_macro); + current_macro = (char *) NULL; + } + current_macro_size = current_macro_index = 0; + + FREE (rl_executing_macro); + rl_executing_macro = (char *) NULL; + executing_macro_index = 0; + + RL_UNSETSTATE(RL_STATE_MACRODEF); +} + +/* Begin defining a keyboard macro. + Keystrokes are recorded as they are executed. + End the definition with rl_end_kbd_macro (). + If a numeric argument was explicitly typed, then append this + definition to the end of the existing macro, and start by + re-executing the existing macro. */ +int +rl_start_kbd_macro (int ignore1, int ignore2) +{ + if (RL_ISSTATE (RL_STATE_MACRODEF)) + { + _rl_abort_internal (); + return 1; + } + + if (rl_explicit_arg) + { + if (current_macro) + _rl_with_macro_input (savestring (current_macro)); + } + else + current_macro_index = 0; + + RL_SETSTATE(RL_STATE_MACRODEF); + return 0; +} + +/* Stop defining a keyboard macro. + A numeric argument says to execute the macro right now, + that many times, counting the definition as the first time. */ +int +rl_end_kbd_macro (int count, int ignore) +{ + if (RL_ISSTATE (RL_STATE_MACRODEF) == 0) + { + _rl_abort_internal (); + return 1; + } + + current_macro_index -= rl_key_sequence_length; + current_macro[current_macro_index] = '\0'; + + RL_UNSETSTATE(RL_STATE_MACRODEF); + + return (rl_call_last_kbd_macro (--count, 0)); +} + +/* Execute the most recently defined keyboard macro. + COUNT says how many times to execute it. */ +int +rl_call_last_kbd_macro (int count, int ignore) +{ + if (current_macro == 0) + _rl_abort_internal (); + + if (RL_ISSTATE (RL_STATE_MACRODEF)) + { + rl_ding (); /* no recursive macros */ + current_macro[--current_macro_index] = '\0'; /* erase this char */ + return 0; + } + + while (count--) + _rl_with_macro_input (savestring (current_macro)); + return 0; +} + +int +rl_print_last_kbd_macro (int count, int ignore) +{ + char *m; + + if (current_macro == 0) + { + rl_ding (); + return 0; + } + m = _rl_untranslate_macro_value (current_macro, 1); + rl_crlf (); + printf ("%s", m); + fflush (stdout); + rl_crlf (); + FREE (m); + rl_forced_update_display (); + rl_display_fixed = 1; + + return 0; +} + +void +rl_push_macro_input (char *macro) +{ + _rl_with_macro_input (macro); +} diff --git a/bash-5.1/lib/readline/mbutil.c b/bash-5.1/lib/readline/mbutil.c new file mode 100644 index 0000000..dc62b4c --- /dev/null +++ b/bash-5.1/lib/readline/mbutil.c @@ -0,0 +1,524 @@ +/* mbutil.c -- readline multibyte character utility functions */ + +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#include +#include "posixjmp.h" + +#if defined (HAVE_UNISTD_H) +# include /* for _POSIX_VERSION */ +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include +#include + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" +#include "rlmbutil.h" + +#if defined (TIOCSTAT_IN_SYS_IOCTL) +# include +#endif /* TIOCSTAT_IN_SYS_IOCTL */ + +/* Some standard library routines. */ +#include "readline.h" + +#include "rlprivate.h" +#include "xmalloc.h" + +/* Declared here so it can be shared between the readline and history + libraries. */ +#if defined (HANDLE_MULTIBYTE) +int rl_byte_oriented = 0; +#else +int rl_byte_oriented = 1; +#endif + +/* Ditto */ +int _rl_utf8locale = 0; + +/* **************************************************************** */ +/* */ +/* Multibyte Character Utility Functions */ +/* */ +/* **************************************************************** */ + +#if defined(HANDLE_MULTIBYTE) + +/* **************************************************************** */ +/* */ +/* UTF-8 specific Character Utility Functions */ +/* */ +/* **************************************************************** */ + +/* Return the length in bytes of the possibly-multibyte character beginning + at S. Encoding is UTF-8. */ +static int +_rl_utf8_mblen (const char *s, size_t n) +{ + unsigned char c, c1, c2, c3; + + if (s == 0) + return (0); /* no shift states */ + if (n <= 0) + return (-1); + + c = (unsigned char)*s; + if (c < 0x80) + return (c != 0); + if (c >= 0xc2) + { + c1 = (unsigned char)s[1]; + if (c < 0xe0) + { + if (n == 1) + return -2; + if (n >= 2 && (c1 ^ 0x80) < 0x40) + return 2; + } + else if (c < 0xf0) + { + if (n == 1) + return -2; + if ((c1 ^ 0x80) < 0x40 + && (c >= 0xe1 || c1 >= 0xa0) + && (c != 0xed || c1 < 0xa0)) + { + if (n == 2) + return -2; + c2 = (unsigned char)s[2]; + if ((c2 ^ 0x80) < 0x40) + return 3; + } + } + else if (c < 0xf4) + { + if (n == 1) + return -2; + if (((c1 ^ 0x80) < 0x40) + && (c >= 0xf1 || c1 >= 0x90) + && (c < 0xf4 || (c == 0xf4 && c1 < 0x90))) + { + if (n == 2) + return -2; + c2 = (unsigned char)s[2]; + if ((c2 ^ 0x80) < 0x40) + { + if (n == 3) + return -2; + c3 = (unsigned char)s[3]; + if ((c3 ^ 0x80) < 0x40) + return 4; + } + } + } + } + /* invalid or incomplete multibyte character */ + return -1; +} + +static int +_rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_zero) +{ + size_t tmp, len; + mbstate_t ps; + int point; + wchar_t wc; + + tmp = 0; + + memset(&ps, 0, sizeof (mbstate_t)); + if (seed < 0) + seed = 0; + if (count <= 0) + return seed; + + point = seed + _rl_adjust_point (string, seed, &ps); + /* if _rl_adjust_point returns -1, the character or string is invalid. + treat as a byte. */ + if (point == seed - 1) /* invalid */ + return seed + 1; + + /* if this is true, means that seed was not pointing to a byte indicating + the beginning of a multibyte character. Correct the point and consume + one char. */ + if (seed < point) + count--; + + while (count > 0) + { + len = strlen (string + point); + if (len == 0) + break; + if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point])) + { + tmp = 1; + wc = (wchar_t) string[point]; + memset(&ps, 0, sizeof(mbstate_t)); + } + else + tmp = mbrtowc (&wc, string+point, len, &ps); + if (MB_INVALIDCH ((size_t)tmp)) + { + /* invalid bytes. assume a byte represents a character */ + point++; + count--; + /* reset states. */ + memset(&ps, 0, sizeof(mbstate_t)); + } + else if (MB_NULLWCH (tmp)) + break; /* found wide '\0' */ + else + { + /* valid bytes */ + point += tmp; + if (find_non_zero) + { + if (WCWIDTH (wc) == 0) + continue; + else + count--; + } + else + count--; + } + } + + if (find_non_zero) + { + tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); + while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && WCWIDTH (wc) == 0) + { + point += tmp; + tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); + } + } + + return point; +} + +static inline int +_rl_test_nonzero (char *string, int ind, int len) +{ + size_t tmp; + wchar_t wc; + mbstate_t ps; + + memset (&ps, 0, sizeof (mbstate_t)); + tmp = mbrtowc (&wc, string + ind, len - ind, &ps); + /* treat invalid multibyte sequences as non-zero-width */ + return (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp) || WCWIDTH (wc) > 0); +} + +/* experimental -- needs to handle zero-width characters better */ +static int +_rl_find_prev_utf8char (char *string, int seed, int find_non_zero) +{ + char *s; + unsigned char b; + int save, prev; + size_t len; + + if (find_non_zero) + len = RL_STRLEN (string); + + prev = seed - 1; + while (prev >= 0) + { + b = (unsigned char)string[prev]; + if (UTF8_SINGLEBYTE (b)) + return (prev); + + save = prev; + + /* Move back until we're not in the middle of a multibyte char */ + if (UTF8_MBCHAR (b)) + { + while (prev > 0 && (b = (unsigned char)string[--prev]) && UTF8_MBCHAR (b)) + ; + } + + if (UTF8_MBFIRSTCHAR (b)) + { + if (find_non_zero) + { + if (_rl_test_nonzero (string, prev, len)) + return (prev); + else /* valid but WCWIDTH (wc) == 0 */ + prev = prev - 1; + } + else + return (prev); + } + else + return (save); /* invalid utf-8 multibyte sequence */ + } + + return ((prev < 0) ? 0 : prev); +} + +/*static*/ int +_rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero) +{ + mbstate_t ps; + int prev, non_zero_prev, point, length; + size_t tmp; + wchar_t wc; + + if (_rl_utf8locale) + return (_rl_find_prev_utf8char (string, seed, find_non_zero)); + + memset(&ps, 0, sizeof(mbstate_t)); + length = strlen(string); + + if (seed < 0) + return 0; + else if (length < seed) + return length; + + prev = non_zero_prev = point = 0; + while (point < seed) + { + if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point])) + { + tmp = 1; + wc = (wchar_t) string[point]; + memset(&ps, 0, sizeof(mbstate_t)); + } + else + tmp = mbrtowc (&wc, string + point, length - point, &ps); + if (MB_INVALIDCH ((size_t)tmp)) + { + /* in this case, bytes are invalid or too short to compose + multibyte char, so assume that the first byte represents + a single character anyway. */ + tmp = 1; + /* clear the state of the byte sequence, because + in this case effect of mbstate is undefined */ + memset(&ps, 0, sizeof (mbstate_t)); + + /* Since we're assuming that this byte represents a single + non-zero-width character, don't forget about it. */ + prev = point; + } + else if (MB_NULLWCH (tmp)) + break; /* Found '\0' char. Can this happen? */ + else + { + if (find_non_zero) + { + if (WCWIDTH (wc) != 0) + prev = point; + } + else + prev = point; + } + + point += tmp; + } + + return prev; +} + +/* return the number of bytes parsed from the multibyte sequence starting + at src, if a non-L'\0' wide character was recognized. It returns 0, + if a L'\0' wide character was recognized. It returns (size_t)(-1), + if an invalid multibyte sequence was encountered. It returns (size_t)(-2) + if it couldn't parse a complete multibyte character. */ +int +_rl_get_char_len (char *src, mbstate_t *ps) +{ + size_t tmp, l; + int mb_cur_max; + + /* Look at no more than MB_CUR_MAX characters */ + l = (size_t)strlen (src); + if (_rl_utf8locale && l > 0 && UTF8_SINGLEBYTE(*src)) + tmp = (*src != 0) ? 1 : 0; + else + { + mb_cur_max = MB_CUR_MAX; + tmp = mbrlen((const char *)src, (l < mb_cur_max) ? l : mb_cur_max, ps); + } + if (tmp == (size_t)(-2)) + { + /* too short to compose multibyte char */ + if (ps) + memset (ps, 0, sizeof(mbstate_t)); + return -2; + } + else if (tmp == (size_t)(-1)) + { + /* invalid to compose multibyte char */ + /* initialize the conversion state */ + if (ps) + memset (ps, 0, sizeof(mbstate_t)); + return -1; + } + else if (tmp == (size_t)0) + return 0; + else + return (int)tmp; +} + +/* compare the specified two characters. If the characters matched, + return 1. Otherwise return 0. */ +int +_rl_compare_chars (char *buf1, int pos1, mbstate_t *ps1, char *buf2, int pos2, mbstate_t *ps2) +{ + int i, w1, w2; + + if ((w1 = _rl_get_char_len (&buf1[pos1], ps1)) <= 0 || + (w2 = _rl_get_char_len (&buf2[pos2], ps2)) <= 0 || + (w1 != w2) || + (buf1[pos1] != buf2[pos2])) + return 0; + + for (i = 1; i < w1; i++) + if (buf1[pos1+i] != buf2[pos2+i]) + return 0; + + return 1; +} + +/* adjust pointed byte and find mbstate of the point of string. + adjusted point will be point <= adjusted_point, and returns + differences of the byte(adjusted_point - point). + if point is invalid (point < 0 || more than string length), + it returns -1 */ +int +_rl_adjust_point (char *string, int point, mbstate_t *ps) +{ + size_t tmp; + int length, pos; + + tmp = 0; + pos = 0; + length = strlen(string); + if (point < 0) + return -1; + if (length < point) + return -1; + + while (pos < point) + { + if (_rl_utf8locale && UTF8_SINGLEBYTE(string[pos])) + tmp = 1; + else + tmp = mbrlen (string + pos, length - pos, ps); + if (MB_INVALIDCH ((size_t)tmp)) + { + /* in this case, bytes are invalid or too short to compose + multibyte char, so assume that the first byte represents + a single character anyway. */ + pos++; + /* clear the state of the byte sequence, because + in this case effect of mbstate is undefined */ + if (ps) + memset (ps, 0, sizeof (mbstate_t)); + } + else if (MB_NULLWCH (tmp)) + pos++; + else + pos += tmp; + } + + return (pos - point); +} + +int +_rl_is_mbchar_matched (char *string, int seed, int end, char *mbchar, int length) +{ + int i; + + if ((end - seed) < length) + return 0; + + for (i = 0; i < length; i++) + if (string[seed + i] != mbchar[i]) + return 0; + return 1; +} + +wchar_t +_rl_char_value (char *buf, int ind) +{ + size_t tmp; + wchar_t wc; + mbstate_t ps; + int l; + + if (MB_LEN_MAX == 1 || rl_byte_oriented) + return ((wchar_t) buf[ind]); + if (_rl_utf8locale && UTF8_SINGLEBYTE(buf[ind])) + return ((wchar_t) buf[ind]); + l = strlen (buf); + if (ind >= l - 1) + return ((wchar_t) buf[ind]); + if (l < ind) /* Sanity check */ + l = strlen (buf+ind); + memset (&ps, 0, sizeof (mbstate_t)); + tmp = mbrtowc (&wc, buf + ind, l - ind, &ps); + if (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp)) + return ((wchar_t) buf[ind]); + return wc; +} +#endif /* HANDLE_MULTIBYTE */ + +/* Find next `count' characters started byte point of the specified seed. + If flags is MB_FIND_NONZERO, we look for non-zero-width multibyte + characters. */ +#undef _rl_find_next_mbchar +int +_rl_find_next_mbchar (char *string, int seed, int count, int flags) +{ +#if defined (HANDLE_MULTIBYTE) + return _rl_find_next_mbchar_internal (string, seed, count, flags); +#else + return (seed + count); +#endif +} + +/* Find previous character started byte point of the specified seed. + Returned point will be point <= seed. If flags is MB_FIND_NONZERO, + we look for non-zero-width multibyte characters. */ +#undef _rl_find_prev_mbchar +int +_rl_find_prev_mbchar (char *string, int seed, int flags) +{ +#if defined (HANDLE_MULTIBYTE) + return _rl_find_prev_mbchar_internal (string, seed, flags); +#else + return ((seed == 0) ? seed : seed - 1); +#endif +} diff --git a/bash-5.1/lib/readline/misc.c b/bash-5.1/lib/readline/misc.c new file mode 100644 index 0000000..3d9a674 --- /dev/null +++ b/bash-5.1/lib/readline/misc.c @@ -0,0 +1,737 @@ +/* misc.c -- miscellaneous bindable readline functions. */ + +/* Copyright (C) 1987-2019 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if defined (HAVE_LOCALE_H) +# include +#endif + +#include + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" +#include "rlmbutil.h" + +/* Some standard library routines. */ +#include "readline.h" +#include "history.h" + +#include "rlprivate.h" +#include "rlshell.h" +#include "xmalloc.h" + +static int rl_digit_loop PARAMS((void)); +static void _rl_history_set_point PARAMS((void)); + +/* Forward declarations used in this file */ +void _rl_free_history_entry PARAMS((HIST_ENTRY *)); + +/* If non-zero, rl_get_previous_history and rl_get_next_history attempt + to preserve the value of rl_point from line to line. */ +int _rl_history_preserve_point = 0; + +_rl_arg_cxt _rl_argcxt; + +/* Saved target point for when _rl_history_preserve_point is set. Special + value of -1 means that point is at the end of the line. */ +int _rl_history_saved_point = -1; + +/* **************************************************************** */ +/* */ +/* Numeric Arguments */ +/* */ +/* **************************************************************** */ + +int +_rl_arg_overflow (void) +{ + if (rl_numeric_arg > 1000000) + { + _rl_argcxt = 0; + rl_explicit_arg = rl_numeric_arg = 0; + rl_ding (); + rl_restore_prompt (); + rl_clear_message (); + RL_UNSETSTATE(RL_STATE_NUMERICARG); + return 1; + } + return 0; +} + +void +_rl_arg_init (void) +{ + rl_save_prompt (); + _rl_argcxt = 0; + RL_SETSTATE(RL_STATE_NUMERICARG); +} + +int +_rl_arg_getchar (void) +{ + int c; + + rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); + RL_SETSTATE(RL_STATE_MOREINPUT); + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + + return c; +} + +/* Process C as part of the current numeric argument. Return -1 if the + argument should be aborted, 0 if we should not read any more chars, and + 1 if we should continue to read chars. */ +int +_rl_arg_dispatch (_rl_arg_cxt cxt, int c) +{ + int key, r; + + key = c; + + /* If we see a key bound to `universal-argument' after seeing digits, + it ends the argument but is otherwise ignored. */ + if (c >= 0 && _rl_keymap[c].type == ISFUNC && _rl_keymap[c].function == rl_universal_argument) + { + if ((cxt & NUM_SAWDIGITS) == 0) + { + rl_numeric_arg *= 4; + return 1; + } + else if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + _rl_argcxt |= NUM_READONE; + return 0; /* XXX */ + } + else + { + key = _rl_bracketed_read_key (); + rl_restore_prompt (); + rl_clear_message (); + RL_UNSETSTATE(RL_STATE_NUMERICARG); + if (key < 0) + return -1; + return (_rl_dispatch (key, _rl_keymap)); + } + } + + c = UNMETA (c); + + if (_rl_digit_p (c)) + { + r = _rl_digit_value (c); + rl_numeric_arg = rl_explicit_arg ? (rl_numeric_arg * 10) + r : r; + rl_explicit_arg = 1; + _rl_argcxt |= NUM_SAWDIGITS; + } + else if (c == '-' && rl_explicit_arg == 0) + { + rl_numeric_arg = 1; + _rl_argcxt |= NUM_SAWMINUS; + rl_arg_sign = -1; + } + else + { + /* Make M-- command equivalent to M--1 command. */ + if ((_rl_argcxt & NUM_SAWMINUS) && rl_numeric_arg == 1 && rl_explicit_arg == 0) + rl_explicit_arg = 1; + rl_restore_prompt (); + rl_clear_message (); + RL_UNSETSTATE(RL_STATE_NUMERICARG); + + r = _rl_dispatch (key, _rl_keymap); + if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + /* At worst, this will cause an extra redisplay. Otherwise, + we have to wait until the next character comes in. */ + if (rl_done == 0) + (*rl_redisplay_function) (); + r = 0; + } + return r; + } + + return 1; +} + +/* Handle C-u style numeric args, as well as M--, and M-digits. */ +static int +rl_digit_loop (void) +{ + int c, r; + + while (1) + { + if (_rl_arg_overflow ()) + return 1; + + c = _rl_arg_getchar (); + + if (c < 0) + { + _rl_abort_internal (); + return -1; + } + + r = _rl_arg_dispatch (_rl_argcxt, c); + if (r <= 0 || (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)) + break; + } + + return r; +} + +/* Create a default argument. */ +void +_rl_reset_argument (void) +{ + rl_numeric_arg = rl_arg_sign = 1; + rl_explicit_arg = 0; + _rl_argcxt = 0; +} + +/* Start a numeric argument with initial value KEY */ +int +rl_digit_argument (int ignore, int key) +{ + _rl_arg_init (); + if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + _rl_arg_dispatch (_rl_argcxt, key); + rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); + return 0; + } + else + { + rl_execute_next (key); + return (rl_digit_loop ()); + } +} + +/* C-u, universal argument. Multiply the current argument by 4. + Read a key. If the key has nothing to do with arguments, then + dispatch on it. If the key is the abort character then abort. */ +int +rl_universal_argument (int count, int key) +{ + _rl_arg_init (); + rl_numeric_arg *= 4; + + return (RL_ISSTATE (RL_STATE_CALLBACK) ? 0 : rl_digit_loop ()); +} + +int +_rl_arg_callback (_rl_arg_cxt cxt) +{ + int c, r; + + c = _rl_arg_getchar (); + if (c < 0) + return (1); /* EOF */ + + if (_rl_argcxt & NUM_READONE) + { + _rl_argcxt &= ~NUM_READONE; + rl_restore_prompt (); + rl_clear_message (); + RL_UNSETSTATE(RL_STATE_NUMERICARG); + rl_execute_next (c); + return 0; + } + + r = _rl_arg_dispatch (cxt, c); + if (r > 0) + rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); + return (r != 1); +} + +/* What to do when you abort reading an argument. */ +int +rl_discard_argument (void) +{ + rl_ding (); + rl_clear_message (); + _rl_reset_argument (); + + return 0; +} + +/* **************************************************************** */ +/* */ +/* History Utilities */ +/* */ +/* **************************************************************** */ + +/* We already have a history library, and that is what we use to control + the history features of readline. This is our local interface to + the history mechanism. */ + +/* While we are editing the history, this is the saved + version of the original line. */ +HIST_ENTRY *_rl_saved_line_for_history = (HIST_ENTRY *)NULL; + +/* Set the history pointer back to the last entry in the history. */ +void +_rl_start_using_history (void) +{ + using_history (); + if (_rl_saved_line_for_history) + _rl_free_history_entry (_rl_saved_line_for_history); + + _rl_saved_line_for_history = (HIST_ENTRY *)NULL; +} + +/* Free the contents (and containing structure) of a HIST_ENTRY. */ +void +_rl_free_history_entry (HIST_ENTRY *entry) +{ + if (entry == 0) + return; + + FREE (entry->line); + FREE (entry->timestamp); + + xfree (entry); +} + +/* Perhaps put back the current line if it has changed. */ +int +rl_maybe_replace_line (void) +{ + HIST_ENTRY *temp; + + temp = current_history (); + /* If the current line has changed, save the changes. */ + if (temp && ((UNDO_LIST *)(temp->data) != rl_undo_list)) + { + temp = replace_history_entry (where_history (), rl_line_buffer, (histdata_t)rl_undo_list); + xfree (temp->line); + FREE (temp->timestamp); + xfree (temp); + } + return 0; +} + +/* Restore the _rl_saved_line_for_history if there is one. */ +int +rl_maybe_unsave_line (void) +{ + if (_rl_saved_line_for_history) + { + /* Can't call with `1' because rl_undo_list might point to an undo + list from a history entry, as in rl_replace_from_history() below. */ + rl_replace_line (_rl_saved_line_for_history->line, 0); + rl_undo_list = (UNDO_LIST *)_rl_saved_line_for_history->data; + _rl_free_history_entry (_rl_saved_line_for_history); + _rl_saved_line_for_history = (HIST_ENTRY *)NULL; + rl_point = rl_end; /* rl_replace_line sets rl_end */ + } + else + rl_ding (); + return 0; +} + +/* Save the current line in _rl_saved_line_for_history. */ +int +rl_maybe_save_line (void) +{ + if (_rl_saved_line_for_history == 0) + { + _rl_saved_line_for_history = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY)); + _rl_saved_line_for_history->line = savestring (rl_line_buffer); + _rl_saved_line_for_history->timestamp = (char *)NULL; + _rl_saved_line_for_history->data = (char *)rl_undo_list; + } + + return 0; +} + +int +_rl_free_saved_history_line (void) +{ + if (_rl_saved_line_for_history) + { + _rl_free_history_entry (_rl_saved_line_for_history); + _rl_saved_line_for_history = (HIST_ENTRY *)NULL; + } + return 0; +} + +static void +_rl_history_set_point (void) +{ + rl_point = (_rl_history_preserve_point && _rl_history_saved_point != -1) + ? _rl_history_saved_point + : rl_end; + if (rl_point > rl_end) + rl_point = rl_end; + +#if defined (VI_MODE) + if (rl_editing_mode == vi_mode && _rl_keymap != vi_insertion_keymap) + rl_point = 0; +#endif /* VI_MODE */ + + if (rl_editing_mode == emacs_mode) + rl_mark = (rl_point == rl_end ? 0 : rl_end); +} + +void +rl_replace_from_history (HIST_ENTRY *entry, int flags) +{ + /* Can't call with `1' because rl_undo_list might point to an undo list + from a history entry, just like we're setting up here. */ + rl_replace_line (entry->line, 0); + rl_undo_list = (UNDO_LIST *)entry->data; + rl_point = rl_end; + rl_mark = 0; + +#if defined (VI_MODE) + if (rl_editing_mode == vi_mode) + { + rl_point = 0; + rl_mark = rl_end; + } +#endif +} + +/* Process and free undo lists attached to each history entry prior to the + current entry, inclusive, reverting each line to its saved state. This + is destructive, and state about the current line is lost. This is not + intended to be called while actively editing, and the current line is + not assumed to have been added to the history list. */ +void +_rl_revert_previous_lines (void) +{ + int hpos; + HIST_ENTRY *entry; + UNDO_LIST *ul, *saved_undo_list; + char *lbuf; + + lbuf = savestring (rl_line_buffer); + saved_undo_list = rl_undo_list; + hpos = where_history (); + + entry = (hpos == history_length) ? previous_history () : current_history (); + while (entry) + { + if (ul = (UNDO_LIST *)entry->data) + { + if (ul == saved_undo_list) + saved_undo_list = 0; + /* Set up rl_line_buffer and other variables from history entry */ + rl_replace_from_history (entry, 0); /* entry->line is now current */ + entry->data = 0; /* entry->data is now current undo list */ + /* Undo all changes to this history entry */ + while (rl_undo_list) + rl_do_undo (); + /* And copy the reverted line back to the history entry, preserving + the timestamp. */ + FREE (entry->line); + entry->line = savestring (rl_line_buffer); + } + entry = previous_history (); + } + + /* Restore history state */ + rl_undo_list = saved_undo_list; /* may have been set to null */ + history_set_pos (hpos); + + /* reset the line buffer */ + rl_replace_line (lbuf, 0); + _rl_set_the_line (); + + /* and clean up */ + xfree (lbuf); +} + +/* Revert all lines in the history by making sure we are at the end of the + history before calling _rl_revert_previous_lines() */ +void +_rl_revert_all_lines (void) +{ + int pos; + + pos = where_history (); + using_history (); + _rl_revert_previous_lines (); + history_set_pos (pos); +} + +/* Free the history list, including private readline data and take care + of pointer aliases to history data. Resets rl_undo_list if it points + to an UNDO_LIST * saved as some history entry's data member. This + should not be called while editing is active. */ +void +rl_clear_history (void) +{ + HIST_ENTRY **hlist, *hent; + register int i; + UNDO_LIST *ul, *saved_undo_list; + + saved_undo_list = rl_undo_list; + hlist = history_list (); /* direct pointer, not copy */ + + for (i = 0; i < history_length; i++) + { + hent = hlist[i]; + if (ul = (UNDO_LIST *)hent->data) + { + if (ul == saved_undo_list) + saved_undo_list = 0; + _rl_free_undo_list (ul); + hent->data = 0; + } + _rl_free_history_entry (hent); + } + + history_offset = history_length = 0; + rl_undo_list = saved_undo_list; /* should be NULL */ +} + +/* **************************************************************** */ +/* */ +/* History Commands */ +/* */ +/* **************************************************************** */ + +/* Meta-< goes to the start of the history. */ +int +rl_beginning_of_history (int count, int key) +{ + return (rl_get_previous_history (1 + where_history (), key)); +} + +/* Meta-> goes to the end of the history. (The current line). */ +int +rl_end_of_history (int count, int key) +{ + rl_maybe_replace_line (); + using_history (); + rl_maybe_unsave_line (); + return 0; +} + +/* Move down to the next history line. */ +int +rl_get_next_history (int count, int key) +{ + HIST_ENTRY *temp; + + if (count < 0) + return (rl_get_previous_history (-count, key)); + + if (count == 0) + return 0; + + rl_maybe_replace_line (); + + /* either not saved by rl_newline or at end of line, so set appropriately. */ + if (_rl_history_saved_point == -1 && (rl_point || rl_end)) + _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point; + + temp = (HIST_ENTRY *)NULL; + while (count) + { + temp = next_history (); + if (!temp) + break; + --count; + } + + if (temp == 0) + rl_maybe_unsave_line (); + else + { + rl_replace_from_history (temp, 0); + _rl_history_set_point (); + } + return 0; +} + +/* Get the previous item out of our interactive history, making it the current + line. If there is no previous history, just ding. */ +int +rl_get_previous_history (int count, int key) +{ + HIST_ENTRY *old_temp, *temp; + int had_saved_line; + + if (count < 0) + return (rl_get_next_history (-count, key)); + + if (count == 0 || history_list () == 0) + return 0; + + /* either not saved by rl_newline or at end of line, so set appropriately. */ + if (_rl_history_saved_point == -1 && (rl_point || rl_end)) + _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point; + + /* If we don't have a line saved, then save this one. */ + had_saved_line = _rl_saved_line_for_history != 0; + rl_maybe_save_line (); + + /* If the current line has changed, save the changes. */ + rl_maybe_replace_line (); + + temp = old_temp = (HIST_ENTRY *)NULL; + while (count) + { + temp = previous_history (); + if (temp == 0) + break; + + old_temp = temp; + --count; + } + + /* If there was a large argument, and we moved back to the start of the + history, that is not an error. So use the last value found. */ + if (!temp && old_temp) + temp = old_temp; + + if (temp == 0) + { + if (had_saved_line == 0) + _rl_free_saved_history_line (); + rl_ding (); + } + else + { + rl_replace_from_history (temp, 0); + _rl_history_set_point (); + } + + return 0; +} + +/* The equivalent of the Korn shell C-o operate-and-get-next-history-line + editing command. */ + +/* This could stand to be global to the readline library */ +static rl_hook_func_t *_rl_saved_internal_startup_hook = 0; +static int saved_history_logical_offset = -1; + +#define HISTORY_FULL() (history_is_stifled () && history_length >= history_max_entries) + +static int +set_saved_history () +{ + int absolute_offset, count; + + if (saved_history_logical_offset >= 0) + { + absolute_offset = saved_history_logical_offset - history_base; + count = where_history () - absolute_offset; + rl_get_previous_history (count, 0); + } + saved_history_logical_offset = -1; + _rl_internal_startup_hook = _rl_saved_internal_startup_hook; + + return (0); +} + +int +rl_operate_and_get_next (count, c) + int count, c; +{ + /* Accept the current line. */ + rl_newline (1, c); + + saved_history_logical_offset = rl_explicit_arg ? count : where_history () + history_base + 1; + + + _rl_saved_internal_startup_hook = _rl_internal_startup_hook; + _rl_internal_startup_hook = set_saved_history; + + return 0; +} + +/* **************************************************************** */ +/* */ +/* Editing Modes */ +/* */ +/* **************************************************************** */ +/* How to toggle back and forth between editing modes. */ +int +rl_vi_editing_mode (int count, int key) +{ +#if defined (VI_MODE) + _rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */ + rl_editing_mode = vi_mode; + rl_vi_insert_mode (1, key); +#endif /* VI_MODE */ + + return 0; +} + +int +rl_emacs_editing_mode (int count, int key) +{ + rl_editing_mode = emacs_mode; + _rl_set_insert_mode (RL_IM_INSERT, 1); /* emacs mode default is insert mode */ + _rl_keymap = emacs_standard_keymap; + + if (_rl_show_mode_in_prompt) + _rl_reset_prompt (); + + return 0; +} + +/* Function for the rest of the library to use to set insert/overwrite mode. */ +void +_rl_set_insert_mode (int im, int force) +{ +#ifdef CURSOR_MODE + _rl_set_cursor (im, force); +#endif + + rl_insert_mode = im; +} + +/* Toggle overwrite mode. A positive explicit argument selects overwrite + mode. A negative or zero explicit argument selects insert mode. */ +int +rl_overwrite_mode (int count, int key) +{ + if (rl_explicit_arg == 0) + _rl_set_insert_mode (rl_insert_mode ^ 1, 0); + else if (count > 0) + _rl_set_insert_mode (RL_IM_OVERWRITE, 0); + else + _rl_set_insert_mode (RL_IM_INSERT, 0); + + return 0; +} diff --git a/bash-5.1/lib/readline/nls.c b/bash-5.1/lib/readline/nls.c new file mode 100644 index 0000000..d2f67e0 --- /dev/null +++ b/bash-5.1/lib/readline/nls.c @@ -0,0 +1,290 @@ +/* nls.c -- skeletal internationalization code. */ + +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if defined (HAVE_LOCALE_H) +# include +#endif + +#if defined (HAVE_LANGINFO_CODESET) +# include +#endif + +#include + +#include "rldefs.h" +#include "readline.h" +#include "rlshell.h" +#include "rlprivate.h" + +static int utf8locale PARAMS((char *)); + +#if !defined (HAVE_SETLOCALE) +/* A list of legal values for the LANG or LC_CTYPE environment variables. + If a locale name in this list is the value for the LC_ALL, LC_CTYPE, + or LANG environment variable (using the first of those with a value), + readline eight-bit mode is enabled. */ +static char *legal_lang_values[] = +{ + "iso88591", + "iso88592", + "iso88593", + "iso88594", + "iso88595", + "iso88596", + "iso88597", + "iso88598", + "iso88599", + "iso885910", + "koi8r", + "utf8", + 0 +}; + +static char *normalize_codeset PARAMS((char *)); +#endif /* !HAVE_SETLOCALE */ + +static char *find_codeset PARAMS((char *, size_t *)); + +static char *_rl_get_locale_var PARAMS((const char *)); + +static char * +_rl_get_locale_var (const char *v) +{ + char *lspec; + + lspec = sh_get_env_value ("LC_ALL"); + if (lspec == 0 || *lspec == 0) + lspec = sh_get_env_value (v); + if (lspec == 0 || *lspec == 0) + lspec = sh_get_env_value ("LANG"); + + return lspec; +} + +static int +utf8locale (char *lspec) +{ + char *cp; + size_t len; + +#if HAVE_LANGINFO_CODESET + cp = nl_langinfo (CODESET); + return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8")); +#else + cp = find_codeset (lspec, &len); + + if (cp == 0 || len < 4 || len > 5) + return 0; + return ((len == 5) ? strncmp (cp, "UTF-8", len) == 0 : strncmp (cp, "utf8", 4) == 0); +#endif +} + +/* Query the right environment variables and call setlocale() to initialize + the C library locale settings. */ +char * +_rl_init_locale (void) +{ + char *ret, *lspec; + + /* Set the LC_CTYPE locale category from environment variables. */ + lspec = _rl_get_locale_var ("LC_CTYPE"); + /* Since _rl_get_locale_var queries the right environment variables, + we query the current locale settings with setlocale(), and, if + that doesn't return anything, we set lspec to the empty string to + force the subsequent call to setlocale() to define the `native' + environment. */ + if (lspec == 0 || *lspec == 0) + lspec = setlocale (LC_CTYPE, (char *)NULL); + if (lspec == 0) + lspec = ""; + ret = setlocale (LC_CTYPE, lspec); /* ok, since it does not change locale */ + + _rl_utf8locale = (ret && *ret) ? utf8locale (ret) : 0; + + return ret; +} + +/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value + to decide the defaults for 8-bit character input and output. Returns + 1 if we set eight-bit mode. */ +int +_rl_init_eightbit (void) +{ +/* If we have setlocale(3), just check the current LC_CTYPE category + value, and go into eight-bit mode if it's not C or POSIX. */ +#if defined (HAVE_SETLOCALE) + char *lspec, *t; + + t = _rl_init_locale (); /* returns static pointer */ + + if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0)) + { + _rl_meta_flag = 1; + _rl_convert_meta_chars_to_ascii = 0; + _rl_output_meta_chars = 1; + return (1); + } + else + return (0); + +#else /* !HAVE_SETLOCALE */ + char *lspec, *t; + int i; + + /* We don't have setlocale. Finesse it. Check the environment for the + appropriate variables and set eight-bit mode if they have the right + values. */ + lspec = _rl_get_locale_var ("LC_CTYPE"); + + if (lspec == 0 || (t = normalize_codeset (lspec)) == 0) + return (0); + for (i = 0; t && legal_lang_values[i]; i++) + if (STREQ (t, legal_lang_values[i])) + { + _rl_meta_flag = 1; + _rl_convert_meta_chars_to_ascii = 0; + _rl_output_meta_chars = 1; + break; + } + + _rl_utf8locale = *t ? STREQ (t, "utf8") : 0; + + xfree (t); + return (legal_lang_values[i] ? 1 : 0); +#endif /* !HAVE_SETLOCALE */ +} + +#if !defined (HAVE_SETLOCALE) +static char * +normalize_codeset (char *codeset) +{ + size_t namelen, i; + int len, all_digits; + char *wp, *retval; + + codeset = find_codeset (codeset, &namelen); + + if (codeset == 0) + return (codeset); + + all_digits = 1; + for (len = 0, i = 0; i < namelen; i++) + { + if (ISALNUM ((unsigned char)codeset[i])) + { + len++; + all_digits &= _rl_digit_p (codeset[i]); + } + } + + retval = (char *)malloc ((all_digits ? 3 : 0) + len + 1); + if (retval == 0) + return ((char *)0); + + wp = retval; + /* Add `iso' to beginning of an all-digit codeset */ + if (all_digits) + { + *wp++ = 'i'; + *wp++ = 's'; + *wp++ = 'o'; + } + + for (i = 0; i < namelen; i++) + if (ISALPHA ((unsigned char)codeset[i])) + *wp++ = _rl_to_lower (codeset[i]); + else if (_rl_digit_p (codeset[i])) + *wp++ = codeset[i]; + *wp = '\0'; + + return retval; +} +#endif /* !HAVE_SETLOCALE */ + +/* Isolate codeset portion of locale specification. */ +static char * +find_codeset (char *name, size_t *lenp) +{ + char *cp, *language, *result; + + cp = language = name; + result = (char *)0; + + while (*cp && *cp != '_' && *cp != '@' && *cp != '+' && *cp != ',') + cp++; + + /* This does not make sense: language has to be specified. As + an exception we allow the variable to contain only the codeset + name. Perhaps there are funny codeset names. */ + if (language == cp) + { + *lenp = strlen (language); + result = language; + } + else + { + /* Next is the territory. */ + if (*cp == '_') + do + ++cp; + while (*cp && *cp != '.' && *cp != '@' && *cp != '+' && *cp != ',' && *cp != '_'); + + /* Now, finally, is the codeset. */ + result = cp; + if (*cp == '.') + do + ++cp; + while (*cp && *cp != '@'); + + if (cp - result > 2) + { + result++; + *lenp = cp - result; + } + else + { + *lenp = strlen (language); + result = language; + } + } + + return result; +} diff --git a/bash-5.1/lib/readline/parens.c b/bash-5.1/lib/readline/parens.c new file mode 100644 index 0000000..af47977 --- /dev/null +++ b/bash-5.1/lib/readline/parens.c @@ -0,0 +1,180 @@ +/* parens.c -- implementation of matching parentheses feature. */ + +/* Copyright (C) 1987, 1989, 1992-2015, 2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (__TANDEM) +# include +#endif + +#include "rlconf.h" + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "posixselect.h" + +#if defined (HAVE_STRING_H) +# include +#else /* !HAVE_STRING_H */ +# include +#endif /* !HAVE_STRING_H */ + +#if !defined (strchr) && !defined (__STDC__) +extern char *strchr (), *strrchr (); +#endif /* !strchr && !__STDC__ */ + +#include "readline.h" +#include "rlprivate.h" + +static int find_matching_open PARAMS((char *, int, int)); + +/* Non-zero means try to blink the matching open parenthesis when the + close parenthesis is inserted. */ +int rl_blink_matching_paren = 0; + +static int _paren_blink_usec = 500000; + +/* Change emacs_standard_keymap to have bindings for paren matching when + ON_OR_OFF is 1, change them back to self_insert when ON_OR_OFF == 0. */ +void +_rl_enable_paren_matching (int on_or_off) +{ + if (on_or_off) + { + /* ([{ */ + rl_bind_key_in_map (')', rl_insert_close, emacs_standard_keymap); + rl_bind_key_in_map (']', rl_insert_close, emacs_standard_keymap); + rl_bind_key_in_map ('}', rl_insert_close, emacs_standard_keymap); + +#if defined (VI_MODE) + /* ([{ */ + rl_bind_key_in_map (')', rl_insert_close, vi_insertion_keymap); + rl_bind_key_in_map (']', rl_insert_close, vi_insertion_keymap); + rl_bind_key_in_map ('}', rl_insert_close, vi_insertion_keymap); +#endif + } + else + { + /* ([{ */ + rl_bind_key_in_map (')', rl_insert, emacs_standard_keymap); + rl_bind_key_in_map (']', rl_insert, emacs_standard_keymap); + rl_bind_key_in_map ('}', rl_insert, emacs_standard_keymap); + +#if defined (VI_MODE) + /* ([{ */ + rl_bind_key_in_map (')', rl_insert, vi_insertion_keymap); + rl_bind_key_in_map (']', rl_insert, vi_insertion_keymap); + rl_bind_key_in_map ('}', rl_insert, vi_insertion_keymap); +#endif + } +} + +int +rl_set_paren_blink_timeout (int u) +{ + int o; + + o = _paren_blink_usec; + if (u > 0) + _paren_blink_usec = u; + return (o); +} + +int +rl_insert_close (int count, int invoking_key) +{ + if (rl_explicit_arg || !rl_blink_matching_paren) + _rl_insert_char (count, invoking_key); + else + { +#if defined (HAVE_SELECT) + int orig_point, match_point, ready; + struct timeval timer; + fd_set readfds; + + _rl_insert_char (1, invoking_key); + (*rl_redisplay_function) (); + match_point = + find_matching_open (rl_line_buffer, rl_point - 2, invoking_key); + + /* Emacs might message or ring the bell here, but I don't. */ + if (match_point < 0) + return 1; + + FD_ZERO (&readfds); + FD_SET (fileno (rl_instream), &readfds); + USEC_TO_TIMEVAL (_paren_blink_usec, timer); + + orig_point = rl_point; + rl_point = match_point; + (*rl_redisplay_function) (); + ready = select (1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timer); + rl_point = orig_point; +#else /* !HAVE_SELECT */ + _rl_insert_char (count, invoking_key); +#endif /* !HAVE_SELECT */ + } + return 0; +} + +static int +find_matching_open (char *string, int from, int closer) +{ + register int i; + int opener, level, delimiter; + + switch (closer) + { + case ']': opener = '['; break; + case '}': opener = '{'; break; + case ')': opener = '('; break; + default: + return (-1); + } + + level = 1; /* The closer passed in counts as 1. */ + delimiter = 0; /* Delimited state unknown. */ + + for (i = from; i > -1; i--) + { + if (delimiter && (string[i] == delimiter)) + delimiter = 0; + else if (rl_basic_quote_characters && strchr (rl_basic_quote_characters, string[i])) + delimiter = string[i]; + else if (!delimiter && (string[i] == closer)) + level++; + else if (!delimiter && (string[i] == opener)) + level--; + + if (!level) + break; + } + return (i); +} diff --git a/bash-5.1/lib/readline/parse-colors.c b/bash-5.1/lib/readline/parse-colors.c new file mode 100644 index 0000000..05ec9bc --- /dev/null +++ b/bash-5.1/lib/readline/parse-colors.c @@ -0,0 +1,440 @@ +/* `dir', `vdir' and `ls' directory listing programs for GNU. + + Modified by Chet Ramey for Readline. + + Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2017 + Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Richard Stallman and David MacKenzie. */ + +/* Color support by Peter Anvin and Dennis + Flaherty based on original patches by + Greg Lee . */ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +// strdup() / strcpy() +#if defined (HAVE_STRING_H) +# include +#else /* !HAVE_STRING_H */ +# include +#endif /* !HAVE_STRING_H */ + +// abort() +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include "rldefs.h" // STREQ, savestring +#include "readline.h" +#include "rlprivate.h" +#include "rlshell.h" +#include "xmalloc.h" + +#include "colors.h" +#include "parse-colors.h" + +#if defined (COLOR_SUPPORT) + +static bool get_funky_string (char **dest, const char **src, bool equals_end, size_t *output_count); + +struct bin_str _rl_color_indicator[] = + { + { LEN_STR_PAIR ("\033[") }, // lc: Left of color sequence + { LEN_STR_PAIR ("m") }, // rc: Right of color sequence + { 0, NULL }, // ec: End color (replaces lc+no+rc) + { LEN_STR_PAIR ("0") }, // rs: Reset to ordinary colors + { 0, NULL }, // no: Normal + { 0, NULL }, // fi: File: default + { LEN_STR_PAIR ("01;34") }, // di: Directory: bright blue + { LEN_STR_PAIR ("01;36") }, // ln: Symlink: bright cyan + { LEN_STR_PAIR ("33") }, // pi: Pipe: yellow/brown + { LEN_STR_PAIR ("01;35") }, // so: Socket: bright magenta + { LEN_STR_PAIR ("01;33") }, // bd: Block device: bright yellow + { LEN_STR_PAIR ("01;33") }, // cd: Char device: bright yellow + { 0, NULL }, // mi: Missing file: undefined + { 0, NULL }, // or: Orphaned symlink: undefined + { LEN_STR_PAIR ("01;32") }, // ex: Executable: bright green + { LEN_STR_PAIR ("01;35") }, // do: Door: bright magenta + { LEN_STR_PAIR ("37;41") }, // su: setuid: white on red + { LEN_STR_PAIR ("30;43") }, // sg: setgid: black on yellow + { LEN_STR_PAIR ("37;44") }, // st: sticky: black on blue + { LEN_STR_PAIR ("34;42") }, // ow: other-writable: blue on green + { LEN_STR_PAIR ("30;42") }, // tw: ow w/ sticky: black on green + { LEN_STR_PAIR ("30;41") }, // ca: black on red + { 0, NULL }, // mh: disabled by default + { LEN_STR_PAIR ("\033[K") }, // cl: clear to end of line + }; + +/* Parse a string as part of the LS_COLORS variable; this may involve + decoding all kinds of escape characters. If equals_end is set an + unescaped equal sign ends the string, otherwise only a : or \0 + does. Set *OUTPUT_COUNT to the number of bytes output. Return + true if successful. + + The resulting string is *not* null-terminated, but may contain + embedded nulls. + + Note that both dest and src are char **; on return they point to + the first free byte after the array and the character that ended + the input string, respectively. */ + +static bool +get_funky_string (char **dest, const char **src, bool equals_end, size_t *output_count) { + char num; /* For numerical codes */ + size_t count; /* Something to count with */ + enum { + ST_GND, ST_BACKSLASH, ST_OCTAL, ST_HEX, ST_CARET, ST_END, ST_ERROR + } state; + const char *p; + char *q; + + p = *src; /* We don't want to double-indirect */ + q = *dest; /* the whole darn time. */ + + count = 0; /* No characters counted in yet. */ + num = 0; + + state = ST_GND; /* Start in ground state. */ + while (state < ST_END) + { + switch (state) + { + case ST_GND: /* Ground state (no escapes) */ + switch (*p) + { + case ':': + case '\0': + state = ST_END; /* End of string */ + break; + case '\\': + state = ST_BACKSLASH; /* Backslash scape sequence */ + ++p; + break; + case '^': + state = ST_CARET; /* Caret escape */ + ++p; + break; + case '=': + if (equals_end) + { + state = ST_END; /* End */ + break; + } + /* else fall through */ + default: + *(q++) = *(p++); + ++count; + break; + } + break; + + case ST_BACKSLASH: /* Backslash escaped character */ + switch (*p) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + state = ST_OCTAL; /* Octal sequence */ + num = *p - '0'; + break; + case 'x': + case 'X': + state = ST_HEX; /* Hex sequence */ + num = 0; + break; + case 'a': /* Bell */ + num = '\a'; + break; + case 'b': /* Backspace */ + num = '\b'; + break; + case 'e': /* Escape */ + num = 27; + break; + case 'f': /* Form feed */ + num = '\f'; + break; + case 'n': /* Newline */ + num = '\n'; + break; + case 'r': /* Carriage return */ + num = '\r'; + break; + case 't': /* Tab */ + num = '\t'; + break; + case 'v': /* Vtab */ + num = '\v'; + break; + case '?': /* Delete */ + num = 127; + break; + case '_': /* Space */ + num = ' '; + break; + case '\0': /* End of string */ + state = ST_ERROR; /* Error! */ + break; + default: /* Escaped character like \ ^ : = */ + num = *p; + break; + } + if (state == ST_BACKSLASH) + { + *(q++) = num; + ++count; + state = ST_GND; + } + ++p; + break; + + case ST_OCTAL: /* Octal sequence */ + if (*p < '0' || *p > '7') + { + *(q++) = num; + ++count; + state = ST_GND; + } + else + num = (num << 3) + (*(p++) - '0'); + break; + + case ST_HEX: /* Hex sequence */ + switch (*p) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + num = (num << 4) + (*(p++) - '0'); + break; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + num = (num << 4) + (*(p++) - 'a') + 10; + break; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + num = (num << 4) + (*(p++) - 'A') + 10; + break; + default: + *(q++) = num; + ++count; + state = ST_GND; + break; + } + break; + + case ST_CARET: /* Caret escape */ + state = ST_GND; /* Should be the next state... */ + if (*p >= '@' && *p <= '~') + { + *(q++) = *(p++) & 037; + ++count; + } + else if (*p == '?') + { + *(q++) = 127; + ++count; + } + else + state = ST_ERROR; + break; + + default: + /* should we ? */ + /* abort (); no, we should not */ + state = ST_ERROR; + break; + } + } + + *dest = q; + *src = p; + *output_count = count; + + return state != ST_ERROR; +} +#endif /* COLOR_SUPPORT */ + +void _rl_parse_colors(void) +{ +#if defined (COLOR_SUPPORT) + const char *p; /* Pointer to character being parsed */ + char *buf; /* color_buf buffer pointer */ + int state; /* State of parser */ + int ind_no; /* Indicator number */ + char label[3]; /* Indicator label */ + COLOR_EXT_TYPE *ext; /* Extension we are working on */ + + p = sh_get_env_value ("LS_COLORS"); + if (p == 0 || *p == '\0') + { + _rl_color_ext_list = NULL; + return; + } + + ext = NULL; + strcpy (label, "??"); + + /* This is an overly conservative estimate, but any possible + LS_COLORS string will *not* generate a color_buf longer than + itself, so it is a safe way of allocating a buffer in + advance. */ + buf = color_buf = savestring (p); + + state = 1; + while (state > 0) + { + switch (state) + { + case 1: /* First label character */ + switch (*p) + { + case ':': + ++p; + break; + + case '*': + /* Allocate new extension block and add to head of + linked list (this way a later definition will + override an earlier one, which can be useful for + having terminal-specific defs override global). */ + + ext = (COLOR_EXT_TYPE *)xmalloc (sizeof *ext); + ext->next = _rl_color_ext_list; + _rl_color_ext_list = ext; + + ++p; + ext->ext.string = buf; + + state = (get_funky_string (&buf, &p, true, &ext->ext.len) + ? 4 : -1); + break; + + case '\0': + state = 0; /* Done! */ + break; + + default: /* Assume it is file type label */ + label[0] = *(p++); + state = 2; + break; + } + break; + + case 2: /* Second label character */ + if (*p) + { + label[1] = *(p++); + state = 3; + } + else + state = -1; /* Error */ + break; + + case 3: /* Equal sign after indicator label */ + state = -1; /* Assume failure... */ + if (*(p++) == '=')/* It *should* be... */ + { + for (ind_no = 0; indicator_name[ind_no] != NULL; ++ind_no) + { + if (STREQ (label, indicator_name[ind_no])) + { + _rl_color_indicator[ind_no].string = buf; + state = (get_funky_string (&buf, &p, false, + &_rl_color_indicator[ind_no].len) + ? 1 : -1); + break; + } + } + if (state == -1) + { + _rl_errmsg ("LS_COLORS: unrecognized prefix: %s", label); + /* recover from an unrecognized prefix */ + while (p && *p && *p != ':') + p++; + if (p && *p == ':') + state = 1; + else if (p && *p == 0) + state = 0; + } + } + break; + + case 4: /* Equal sign after *.ext */ + if (*(p++) == '=') + { + ext->seq.string = buf; + state = (get_funky_string (&buf, &p, false, &ext->seq.len) + ? 1 : -1); + } + else + state = -1; + /* XXX - recover here as with an unrecognized prefix? */ + if (state == -1 && ext->ext.string) + _rl_errmsg ("LS_COLORS: syntax error: %s", ext->ext.string); + break; + } + } + + if (state < 0) + { + COLOR_EXT_TYPE *e; + COLOR_EXT_TYPE *e2; + + _rl_errmsg ("unparsable value for LS_COLORS environment variable"); + free (color_buf); + for (e = _rl_color_ext_list; e != NULL; /* empty */) + { + e2 = e; + e = e->next; + free (e2); + } + _rl_color_ext_list = NULL; + _rl_colored_stats = 0; /* can't have colored stats without colors */ + } +#else /* !COLOR_SUPPORT */ + ; +#endif /* !COLOR_SUPPORT */ +} diff --git a/bash-5.1/lib/readline/parse-colors.h b/bash-5.1/lib/readline/parse-colors.h new file mode 100644 index 0000000..aef86f7 --- /dev/null +++ b/bash-5.1/lib/readline/parse-colors.h @@ -0,0 +1,46 @@ +/* `dir', `vdir' and `ls' directory listing programs for GNU. + + Modified by Chet Ramey for Readline. + + Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + 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 . */ + +/* Written by Richard Stallman and David MacKenzie. */ + +/* Color support by Peter Anvin and Dennis + Flaherty based on original patches by + Greg Lee . */ + +#ifndef _PARSE_COLORS_H_ +#define _PARSE_COLORS_H_ + +#include "readline.h" + +#define LEN_STR_PAIR(s) sizeof (s) - 1, s + +void _rl_parse_colors (void); + +static const char *const indicator_name[]= + { + "lc", "rc", "ec", "rs", "no", "fi", "di", "ln", "pi", "so", + "bd", "cd", "mi", "or", "ex", "do", "su", "sg", "st", + "ow", "tw", "ca", "mh", "cl", NULL + }; + +/* Buffer for color sequences */ +static char *color_buf; + +#endif /* !_PARSE_COLORS_H_ */ diff --git a/bash-5.1/lib/readline/posixdir.h b/bash-5.1/lib/readline/posixdir.h new file mode 100644 index 0000000..af5be80 --- /dev/null +++ b/bash-5.1/lib/readline/posixdir.h @@ -0,0 +1,71 @@ +/* posixdir.h -- Posix directory reading includes and defines. */ + +/* Copyright (C) 1987,1991,2012 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* This file should be included instead of or . */ + +#if !defined (_POSIXDIR_H_) +#define _POSIXDIR_H_ + +#if defined (HAVE_DIRENT_H) +# include +# if defined (HAVE_STRUCT_DIRENT_D_NAMLEN) +# define D_NAMLEN(d) ((d)->d_namlen) +# else +# define D_NAMLEN(d) (strlen ((d)->d_name)) +# endif /* !HAVE_STRUCT_DIRENT_D_NAMLEN */ +#else +# if defined (HAVE_SYS_NDIR_H) +# include +# endif +# if defined (HAVE_SYS_DIR_H) +# include +# endif +# if defined (HAVE_NDIR_H) +# include +# endif +# if !defined (dirent) +# define dirent direct +# endif /* !dirent */ +# define D_NAMLEN(d) ((d)->d_namlen) +#endif /* !HAVE_DIRENT_H */ + +/* The bash code fairly consistently uses d_fileno; make sure it's available */ +#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (HAVE_STRUCT_DIRENT_D_FILENO) +# define d_fileno d_ino +#endif + +/* Posix does not require that the d_ino field be present, and some + systems do not provide it. */ +#if !defined (HAVE_STRUCT_DIRENT_D_INO) || defined (BROKEN_DIRENT_D_INO) +# define REAL_DIR_ENTRY(dp) 1 +#else +# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0) +#endif /* _POSIX_SOURCE */ + +#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (BROKEN_DIRENT_D_INO) +# define D_INO_AVAILABLE +#endif + +/* Signal the rest of the code that it can safely use dirent.d_fileno */ +#if defined (D_INO_AVAILABLE) || defined (HAVE_STRUCT_DIRENT_D_FILENO) +# define D_FILENO_AVAILABLE 1 +#endif + +#endif /* !_POSIXDIR_H_ */ diff --git a/bash-5.1/lib/readline/posixjmp.h b/bash-5.1/lib/readline/posixjmp.h new file mode 100644 index 0000000..9c7e99e --- /dev/null +++ b/bash-5.1/lib/readline/posixjmp.h @@ -0,0 +1,46 @@ +/* posixjmp.h -- wrapper for setjmp.h with changes for POSIX systems. */ + +/* Copyright (C) 1987,1991-2015 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _POSIXJMP_H_ +#define _POSIXJMP_H_ + +#include + +/* This *must* be included *after* config.h */ + +#if defined (HAVE_POSIX_SIGSETJMP) +# define procenv_t sigjmp_buf + +# define setjmp_nosigs(x) sigsetjmp((x), 0) +# define setjmp_sigs(x) sigsetjmp((x), 1) + +# define _rl_longjmp(x, n) siglongjmp((x), (n)) +# define sh_longjmp(x, n) siglongjmp((x), (n)) +#else +# define procenv_t jmp_buf + +# define setjmp_nosigs setjmp +# define setjmp_sigs setjmp + +# define _rl_longjmp(x, n) longjmp((x), (n)) +# define sh_longjmp(x, n) longjmp((x), (n)) +#endif + +#endif /* _POSIXJMP_H_ */ diff --git a/bash-5.1/lib/readline/posixselect.h b/bash-5.1/lib/readline/posixselect.h new file mode 100644 index 0000000..da6a1ac --- /dev/null +++ b/bash-5.1/lib/readline/posixselect.h @@ -0,0 +1,47 @@ +/* posixselect.h -- wrapper for select(2) includes and definitions */ + +/* Copyright (C) 2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _POSIXSELECT_H_ +#define _POSIXSELECT_H_ + +#if defined (FD_SET) && !defined (HAVE_SELECT) +# define HAVE_SELECT 1 +#endif + +#if defined (HAVE_SELECT) +# if !defined (HAVE_SYS_SELECT_H) || !defined (M_UNIX) +# include +# endif +#endif /* HAVE_SELECT */ +#if defined (HAVE_SYS_SELECT_H) +# include +#endif + +#ifndef USEC_PER_SEC +# define USEC_PER_SEC 1000000 +#endif + +#define USEC_TO_TIMEVAL(us, tv) \ +do { \ + (tv).tv_sec = (us) / USEC_PER_SEC; \ + (tv).tv_usec = (us) % USEC_PER_SEC; \ +} while (0) + +#endif /* _POSIXSELECT_H_ */ diff --git a/bash-5.1/lib/readline/posixstat.h b/bash-5.1/lib/readline/posixstat.h new file mode 100644 index 0000000..b607786 --- /dev/null +++ b/bash-5.1/lib/readline/posixstat.h @@ -0,0 +1,162 @@ +/* posixstat.h -- Posix stat(2) definitions for systems that + don't have them. */ + +/* Copyright (C) 1987-2019 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* This file should be included instead of . + It relies on the local sys/stat.h to work though. */ +#if !defined (_POSIXSTAT_H_) +#define _POSIXSTAT_H_ + +#include + +#if defined (STAT_MACROS_BROKEN) +# undef S_ISBLK +# undef S_ISCHR +# undef S_ISDIR +# undef S_ISFIFO +# undef S_ISREG +# undef S_ISLNK +#endif /* STAT_MACROS_BROKEN */ + +/* These are guaranteed to work only on isc386 */ +#if !defined (S_IFDIR) && !defined (S_ISDIR) +# define S_IFDIR 0040000 +#endif /* !S_IFDIR && !S_ISDIR */ +#if !defined (S_IFMT) +# define S_IFMT 0170000 +#endif /* !S_IFMT */ + +/* Posix 1003.1 5.6.1.1 file types */ + +/* Some Posix-wannabe systems define _S_IF* macros instead of S_IF*, but + do not provide the S_IS* macros that Posix requires. */ + +#if defined (_S_IFMT) && !defined (S_IFMT) +#define S_IFMT _S_IFMT +#endif +#if defined (_S_IFIFO) && !defined (S_IFIFO) +#define S_IFIFO _S_IFIFO +#endif +#if defined (_S_IFCHR) && !defined (S_IFCHR) +#define S_IFCHR _S_IFCHR +#endif +#if defined (_S_IFDIR) && !defined (S_IFDIR) +#define S_IFDIR _S_IFDIR +#endif +#if defined (_S_IFBLK) && !defined (S_IFBLK) +#define S_IFBLK _S_IFBLK +#endif +#if defined (_S_IFREG) && !defined (S_IFREG) +#define S_IFREG _S_IFREG +#endif +#if defined (_S_IFLNK) && !defined (S_IFLNK) +#define S_IFLNK _S_IFLNK +#endif +#if defined (_S_IFSOCK) && !defined (S_IFSOCK) +#define S_IFSOCK _S_IFSOCK +#endif + +/* Test for each symbol individually and define the ones necessary (some + systems claiming Posix compatibility define some but not all). */ + +#if defined (S_IFBLK) && !defined (S_ISBLK) +#define S_ISBLK(m) (((m)&S_IFMT) == S_IFBLK) /* block device */ +#endif + +#if defined (S_IFCHR) && !defined (S_ISCHR) +#define S_ISCHR(m) (((m)&S_IFMT) == S_IFCHR) /* character device */ +#endif + +#if defined (S_IFDIR) && !defined (S_ISDIR) +#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) /* directory */ +#endif + +#if defined (S_IFREG) && !defined (S_ISREG) +#define S_ISREG(m) (((m)&S_IFMT) == S_IFREG) /* file */ +#endif + +#if defined (S_IFIFO) && !defined (S_ISFIFO) +#define S_ISFIFO(m) (((m)&S_IFMT) == S_IFIFO) /* fifo - named pipe */ +#endif + +#if defined (S_IFLNK) && !defined (S_ISLNK) +#define S_ISLNK(m) (((m)&S_IFMT) == S_IFLNK) /* symbolic link */ +#endif + +#if defined (S_IFSOCK) && !defined (S_ISSOCK) +#define S_ISSOCK(m) (((m)&S_IFMT) == S_IFSOCK) /* socket */ +#endif + +/* + * POSIX 1003.1 5.6.1.2 File Modes + */ + +#if !defined (S_IRWXU) +# if !defined (S_IREAD) +# define S_IREAD 00400 +# define S_IWRITE 00200 +# define S_IEXEC 00100 +# endif /* S_IREAD */ + +# if !defined (S_IRUSR) +# define S_IRUSR S_IREAD /* read, owner */ +# define S_IWUSR S_IWRITE /* write, owner */ +# define S_IXUSR S_IEXEC /* execute, owner */ + +# define S_IRGRP (S_IREAD >> 3) /* read, group */ +# define S_IWGRP (S_IWRITE >> 3) /* write, group */ +# define S_IXGRP (S_IEXEC >> 3) /* execute, group */ + +# define S_IROTH (S_IREAD >> 6) /* read, other */ +# define S_IWOTH (S_IWRITE >> 6) /* write, other */ +# define S_IXOTH (S_IEXEC >> 6) /* execute, other */ +# endif /* !S_IRUSR */ + +# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) +# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) +# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) +#else /* !S_IRWXU */ + /* S_IRWXU is defined, but "group" and "other" bits might not be + (happens in certain versions of MinGW). */ +# if !defined (S_IRGRP) +# define S_IRGRP (S_IREAD >> 3) /* read, group */ +# define S_IWGRP (S_IWRITE >> 3) /* write, group */ +# define S_IXGRP (S_IEXEC >> 3) /* execute, group */ +# endif /* !S_IRGRP */ + +# if !defined (S_IROTH) +# define S_IROTH (S_IREAD >> 6) /* read, other */ +# define S_IWOTH (S_IWRITE >> 6) /* write, other */ +# define S_IXOTH (S_IEXEC >> 6) /* execute, other */ +# endif /* !S_IROTH */ +# if !defined (S_IRWXG) +# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) +# endif +# if !defined (S_IRWXO) +# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) +# endif +#endif /* !S_IRWXU */ + +/* These are non-standard, but are used in builtins.c$symbolic_umask() */ +#define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH) +#define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH) +#define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) + +#endif /* _POSIXSTAT_H_ */ diff --git a/bash-5.1/lib/readline/readline.c b/bash-5.1/lib/readline/readline.c new file mode 100644 index 0000000..c8726ff --- /dev/null +++ b/bash-5.1/lib/readline/readline.c @@ -0,0 +1,1581 @@ +/* readline.c -- a general facility for reading lines of input + with emacs style editing and completion. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#include "posixstat.h" +#include +#if defined (HAVE_SYS_FILE_H) +# include +#endif /* HAVE_SYS_FILE_H */ + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if defined (HAVE_LOCALE_H) +# include +#endif + +#include +#include "posixjmp.h" +#include + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#if defined (HAVE_DECL_AUDIT_USER_TTY) +# include +# include +# include +#endif + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" +#include "rlmbutil.h" + +#if defined (__EMX__) +# define INCL_DOSPROCESS +# include +#endif /* __EMX__ */ + +/* Some standard library routines. */ +#include "readline.h" +#include "history.h" + +#include "rlprivate.h" +#include "rlshell.h" +#include "xmalloc.h" + +#ifndef RL_LIBRARY_VERSION +# define RL_LIBRARY_VERSION "8.0" +#endif + +#ifndef RL_READLINE_VERSION +# define RL_READLINE_VERSION 0x0800 +#endif + +extern void _rl_free_history_entry PARAMS((HIST_ENTRY *)); + +#if defined (COLOR_SUPPORT) +extern void _rl_parse_colors PARAMS((void)); /* XXX */ +#endif + + +/* Forward declarations used in this file. */ +static char *readline_internal PARAMS((void)); +static void readline_initialize_everything PARAMS((void)); + +static void bind_arrow_keys_internal PARAMS((Keymap)); +static void bind_arrow_keys PARAMS((void)); + +static void bind_bracketed_paste_prefix PARAMS((void)); + +static void readline_default_bindings PARAMS((void)); +static void reset_default_bindings PARAMS((void)); + +static int _rl_subseq_result PARAMS((int, Keymap, int, int)); +static int _rl_subseq_getchar PARAMS((int)); + +/* **************************************************************** */ +/* */ +/* Line editing input utility */ +/* */ +/* **************************************************************** */ + +const char *rl_library_version = RL_LIBRARY_VERSION; + +int rl_readline_version = RL_READLINE_VERSION; + +/* True if this is `real' readline as opposed to some stub substitute. */ +int rl_gnu_readline_p = 1; + +/* A pointer to the keymap that is currently in use. + By default, it is the standard emacs keymap. */ +Keymap _rl_keymap = emacs_standard_keymap; + +/* The current style of editing. */ +int rl_editing_mode = emacs_mode; + +/* The current insert mode: input (the default) or overwrite */ +int rl_insert_mode = RL_IM_DEFAULT; + +/* Non-zero if we called this function from _rl_dispatch(). It's present + so functions can find out whether they were called from a key binding + or directly from an application. */ +int rl_dispatching; + +/* Non-zero if the previous command was a kill command. */ +int _rl_last_command_was_kill = 0; + +/* The current value of the numeric argument specified by the user. */ +int rl_numeric_arg = 1; + +/* Non-zero if an argument was typed. */ +int rl_explicit_arg = 0; + +/* Temporary value used while generating the argument. */ +int rl_arg_sign = 1; + +/* Non-zero means we have been called at least once before. */ +static int rl_initialized; + +#if 0 +/* If non-zero, this program is running in an EMACS buffer. */ +static int running_in_emacs; +#endif + +/* Flags word encapsulating the current readline state. */ +unsigned long rl_readline_state = RL_STATE_NONE; + +/* The current offset in the current input line. */ +int rl_point; + +/* Mark in the current input line. */ +int rl_mark; + +/* Length of the current input line. */ +int rl_end; + +/* Make this non-zero to return the current input_line. */ +int rl_done; + +/* The last function executed by readline. */ +rl_command_func_t *rl_last_func = (rl_command_func_t *)NULL; + +/* Top level environment for readline_internal (). */ +procenv_t _rl_top_level; + +/* The streams we interact with. */ +FILE *_rl_in_stream, *_rl_out_stream; + +/* The names of the streams that we do input and output to. */ +FILE *rl_instream = (FILE *)NULL; +FILE *rl_outstream = (FILE *)NULL; + +/* Non-zero means echo characters as they are read. Defaults to no echo; + set to 1 if there is a controlling terminal, we can get its attributes, + and the attributes include `echo'. Look at rltty.c:prepare_terminal_settings + for the code that sets it. */ +int _rl_echoing_p = 0; + +/* Current prompt. */ +char *rl_prompt = (char *)NULL; +int rl_visible_prompt_length = 0; + +/* Set to non-zero by calling application if it has already printed rl_prompt + and does not want readline to do it the first time. */ +int rl_already_prompted = 0; + +/* The number of characters read in order to type this complete command. */ +int rl_key_sequence_length = 0; + +/* If non-zero, then this is the address of a function to call just + before readline_internal_setup () prints the first prompt. */ +rl_hook_func_t *rl_startup_hook = (rl_hook_func_t *)NULL; + +/* Any readline function can set this and have it run just before the user's + rl_startup_hook. */ +rl_hook_func_t *_rl_internal_startup_hook = (rl_hook_func_t *)NULL; + +/* If non-zero, this is the address of a function to call just before + readline_internal_setup () returns and readline_internal starts + reading input characters. */ +rl_hook_func_t *rl_pre_input_hook = (rl_hook_func_t *)NULL; + +/* What we use internally. You should always refer to RL_LINE_BUFFER. */ +static char *the_line; + +/* The character that can generate an EOF. Really read from + the terminal driver... just defaulted here. */ +int _rl_eof_char = CTRL ('D'); + +/* Non-zero makes this the next keystroke to read. */ +int rl_pending_input = 0; + +/* If non-zero when readline_internal returns, it means we found EOF */ +int _rl_eof_found = 0; + +/* Pointer to a useful terminal name. */ +const char *rl_terminal_name = (const char *)NULL; + +/* Non-zero means to always use horizontal scrolling in line display. */ +int _rl_horizontal_scroll_mode = 0; + +/* Non-zero means to display an asterisk at the starts of history lines + which have been modified. */ +int _rl_mark_modified_lines = 0; + +/* The style of `bell' notification preferred. This can be set to NO_BELL, + AUDIBLE_BELL, or VISIBLE_BELL. */ +int _rl_bell_preference = AUDIBLE_BELL; + +/* String inserted into the line by rl_insert_comment (). */ +char *_rl_comment_begin; + +/* Keymap holding the function currently being executed. */ +Keymap rl_executing_keymap; + +/* Keymap we're currently using to dispatch. */ +Keymap _rl_dispatching_keymap; + +/* Non-zero means to erase entire line, including prompt, on empty input lines. */ +int rl_erase_empty_line = 0; + +/* Non-zero means to read only this many characters rather than up to a + character bound to accept-line. */ +int rl_num_chars_to_read = 0; + +/* Line buffer and maintenance. */ +char *rl_line_buffer = (char *)NULL; +int rl_line_buffer_len = 0; + +/* Key sequence `contexts' */ +_rl_keyseq_cxt *_rl_kscxt = 0; + +int rl_executing_key; +char *rl_executing_keyseq = 0; +int _rl_executing_keyseq_size = 0; + +struct _rl_cmd _rl_pending_command; +struct _rl_cmd *_rl_command_to_execute = (struct _rl_cmd *)NULL; + +/* Timeout (specified in milliseconds) when reading characters making up an + ambiguous multiple-key sequence */ +int _rl_keyseq_timeout = 500; + +#define RESIZE_KEYSEQ_BUFFER() \ + do \ + { \ + if (rl_key_sequence_length + 2 >= _rl_executing_keyseq_size) \ + { \ + _rl_executing_keyseq_size += 16; \ + rl_executing_keyseq = xrealloc (rl_executing_keyseq, _rl_executing_keyseq_size); \ + } \ + } \ + while (0); + +/* Forward declarations used by the display, termcap, and history code. */ + +/* **************************************************************** */ +/* */ +/* `Forward' declarations */ +/* */ +/* **************************************************************** */ + +/* Non-zero means do not parse any lines other than comments and + parser directives. */ +unsigned char _rl_parsing_conditionalized_out = 0; + +/* Non-zero means to convert characters with the meta bit set to + escape-prefixed characters so we can indirect through + emacs_meta_keymap or vi_escape_keymap. */ +int _rl_convert_meta_chars_to_ascii = 1; + +/* Non-zero means to output characters with the meta bit set directly + rather than as a meta-prefixed escape sequence. */ +int _rl_output_meta_chars = 0; + +/* Non-zero means to look at the termios special characters and bind + them to equivalent readline functions at startup. */ +int _rl_bind_stty_chars = 1; + +/* Non-zero means to go through the history list at every newline (or + whenever rl_done is set and readline returns) and revert each line to + its initial state. */ +int _rl_revert_all_at_newline = 0; + +/* Non-zero means to honor the termios ECHOCTL bit and echo control + characters corresponding to keyboard-generated signals. */ +int _rl_echo_control_chars = 1; + +/* Non-zero means to prefix the displayed prompt with a character indicating + the editing mode: @ for emacs, : for vi-command, + for vi-insert. */ +int _rl_show_mode_in_prompt = 0; + +/* Non-zero means to attempt to put the terminal in `bracketed paste mode', + where it will prefix pasted text with an escape sequence and send + another to mark the end of the paste. */ +int _rl_enable_bracketed_paste = BRACKETED_PASTE_DEFAULT; +int _rl_enable_active_region = BRACKETED_PASTE_DEFAULT; + +/* **************************************************************** */ +/* */ +/* Top Level Functions */ +/* */ +/* **************************************************************** */ + +/* Non-zero means treat 0200 bit in terminal input as Meta bit. */ +int _rl_meta_flag = 0; /* Forward declaration */ + +/* Set up the prompt and expand it. Called from readline() and + rl_callback_handler_install (). */ +int +rl_set_prompt (const char *prompt) +{ + FREE (rl_prompt); + rl_prompt = prompt ? savestring (prompt) : (char *)NULL; + rl_display_prompt = rl_prompt ? rl_prompt : ""; + + rl_visible_prompt_length = rl_expand_prompt (rl_prompt); + return 0; +} + +#if defined (HAVE_DECL_AUDIT_USER_TTY) +/* Report STRING to the audit system. */ +static void +audit_tty (char *string) +{ + struct sockaddr_nl addr; + struct msghdr msg; + struct nlmsghdr nlm; + struct iovec iov[2]; + size_t size; + int fd; + + size = strlen (string) + 1; + fd = socket (AF_NETLINK, SOCK_RAW, NETLINK_AUDIT); + if (fd < 0) + return; + nlm.nlmsg_len = NLMSG_LENGTH (size); + nlm.nlmsg_type = AUDIT_USER_TTY; + nlm.nlmsg_flags = NLM_F_REQUEST; + nlm.nlmsg_seq = 0; + nlm.nlmsg_pid = 0; + iov[0].iov_base = &nlm; + iov[0].iov_len = sizeof (nlm); + iov[1].iov_base = string; + iov[1].iov_len = size; + addr.nl_family = AF_NETLINK; + addr.nl_pad = 0; + addr.nl_pid = 0; + addr.nl_groups = 0; + msg.msg_name = &addr; + msg.msg_namelen = sizeof (addr); + msg.msg_iov = iov; + msg.msg_iovlen = 2; + msg.msg_control = NULL; + msg.msg_controllen = 0; + msg.msg_flags = 0; + (void)sendmsg (fd, &msg, 0); + close (fd); +} +#endif + +/* Read a line of input. Prompt with PROMPT. An empty PROMPT means + none. A return value of NULL means that EOF was encountered. */ +char * +readline (const char *prompt) +{ + char *value; +#if 0 + int in_callback; +#endif + + /* If we are at EOF return a NULL string. */ + if (rl_pending_input == EOF) + { + rl_clear_pending_input (); + return ((char *)NULL); + } + +#if 0 + /* If readline() is called after installing a callback handler, temporarily + turn off the callback state to avoid ensuing messiness. Patch supplied + by the gdb folks. XXX -- disabled. This can be fooled and readline + left in a strange state by a poorly-timed longjmp. */ + if (in_callback = RL_ISSTATE (RL_STATE_CALLBACK)) + RL_UNSETSTATE (RL_STATE_CALLBACK); +#endif + + rl_set_prompt (prompt); + + rl_initialize (); + if (rl_prep_term_function) + (*rl_prep_term_function) (_rl_meta_flag); + +#if defined (HANDLE_SIGNALS) + rl_set_signals (); +#endif + + value = readline_internal (); + if (rl_deprep_term_function) + (*rl_deprep_term_function) (); + +#if defined (HANDLE_SIGNALS) + rl_clear_signals (); +#endif + +#if 0 + if (in_callback) + RL_SETSTATE (RL_STATE_CALLBACK); +#endif + +#if HAVE_DECL_AUDIT_USER_TTY && defined (HAVE_LIBAUDIT_H) && defined (ENABLE_TTY_AUDIT_SUPPORT) + if (value) + _rl_audit_tty (value); +#endif + + return (value); +} + +#if defined (READLINE_CALLBACKS) +# define STATIC_CALLBACK +#else +# define STATIC_CALLBACK static +#endif + +STATIC_CALLBACK void +readline_internal_setup (void) +{ + char *nprompt; + + _rl_in_stream = rl_instream; + _rl_out_stream = rl_outstream; + + /* Enable the meta key only for the duration of readline(), if this + terminal has one and the terminal has been initialized */ + if (_rl_enable_meta & RL_ISSTATE (RL_STATE_TERMPREPPED)) + _rl_enable_meta_key (); + + if (rl_startup_hook) + (*rl_startup_hook) (); + + if (_rl_internal_startup_hook) + (*_rl_internal_startup_hook) (); + + rl_deactivate_mark (); + +#if defined (VI_MODE) + if (rl_editing_mode == vi_mode) + rl_vi_insertion_mode (1, 'i'); /* don't want to reset last */ + else +#endif /* VI_MODE */ + if (_rl_show_mode_in_prompt) + _rl_reset_prompt (); + + /* If we're not echoing, we still want to at least print a prompt, because + rl_redisplay will not do it for us. If the calling application has a + custom redisplay function, though, let that function handle it. */ + if (_rl_echoing_p == 0 && rl_redisplay_function == rl_redisplay) + { + if (rl_prompt && rl_already_prompted == 0) + { + nprompt = _rl_strip_prompt (rl_prompt); + fprintf (_rl_out_stream, "%s", nprompt); + fflush (_rl_out_stream); + xfree (nprompt); + } + } + else + { + if (rl_prompt && rl_already_prompted) + rl_on_new_line_with_prompt (); + else + rl_on_new_line (); + (*rl_redisplay_function) (); + } + + if (rl_pre_input_hook) + (*rl_pre_input_hook) (); + + RL_CHECK_SIGNALS (); +} + +STATIC_CALLBACK char * +readline_internal_teardown (int eof) +{ + char *temp; + HIST_ENTRY *entry; + + RL_CHECK_SIGNALS (); + + /* Restore the original of this history line, iff the line that we + are editing was originally in the history, AND the line has changed. */ + entry = current_history (); + + if (entry && rl_undo_list) + { + temp = savestring (the_line); + rl_revert_line (1, 0); + entry = replace_history_entry (where_history (), the_line, (histdata_t)NULL); + _rl_free_history_entry (entry); + + strcpy (the_line, temp); + xfree (temp); + } + + if (_rl_revert_all_at_newline) + _rl_revert_all_lines (); + + /* At any rate, it is highly likely that this line has an undo list. Get + rid of it now. */ + if (rl_undo_list) + rl_free_undo_list (); + + /* Disable the meta key, if this terminal has one and we were told to use it. + The check whether or not we sent the enable string is in + _rl_disable_meta_key(); the flag is set in _rl_enable_meta_key */ + _rl_disable_meta_key (); + + /* Restore normal cursor, if available. */ + _rl_set_insert_mode (RL_IM_INSERT, 0); + + return (eof ? (char *)NULL : savestring (the_line)); +} + +void +_rl_internal_char_cleanup (void) +{ +#if defined (VI_MODE) + /* In vi mode, when you exit insert mode, the cursor moves back + over the previous character. We explicitly check for that here. */ + if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap) + rl_vi_check (); +#endif /* VI_MODE */ + + if (rl_num_chars_to_read && rl_end >= rl_num_chars_to_read) + { + (*rl_redisplay_function) (); + _rl_want_redisplay = 0; + rl_newline (1, '\n'); + } + + if (rl_done == 0) + { + (*rl_redisplay_function) (); + _rl_want_redisplay = 0; + } + + /* If the application writer has told us to erase the entire line if + the only character typed was something bound to rl_newline, do so. */ + if (rl_erase_empty_line && rl_done && rl_last_func == rl_newline && + rl_point == 0 && rl_end == 0) + _rl_erase_entire_line (); +} + +STATIC_CALLBACK int +#if defined (READLINE_CALLBACKS) +readline_internal_char (void) +#else +readline_internal_charloop (void) +#endif +{ + static int lastc, eof_found; + int c, code, lk, r; + + lastc = EOF; + +#if !defined (READLINE_CALLBACKS) + eof_found = 0; + while (rl_done == 0) + { +#endif + lk = _rl_last_command_was_kill; + +#if defined (HAVE_POSIX_SIGSETJMP) + code = sigsetjmp (_rl_top_level, 0); +#else + code = setjmp (_rl_top_level); +#endif + + if (code) + { + (*rl_redisplay_function) (); + _rl_want_redisplay = 0; + /* If we get here, we're not being called from something dispatched + from _rl_callback_read_char(), which sets up its own value of + _rl_top_level (saving and restoring the old, of course), so + we can just return here. */ + if (RL_ISSTATE (RL_STATE_CALLBACK)) + return (0); + } + + if (rl_pending_input == 0) + { + /* Then initialize the argument and number of keys read. */ + _rl_reset_argument (); + rl_executing_keyseq[rl_key_sequence_length = 0] = '\0'; + } + + RL_SETSTATE(RL_STATE_READCMD); + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_READCMD); + + /* look at input.c:rl_getc() for the circumstances under which this will + be returned; punt immediately on read error without converting it to + a newline; assume that rl_read_key has already called the signal + handler. */ + if (c == READERR) + { +#if defined (READLINE_CALLBACKS) + RL_SETSTATE(RL_STATE_DONE); + return (rl_done = 1); +#else + eof_found = 1; + break; +#endif + } + + /* EOF typed to a non-blank line is ^D the first time, EOF the second + time in a row. This won't return any partial line read from the tty. + If we want to change this, to force any existing line to be returned + when read(2) reads EOF, for example, this is the place to change. */ + if (c == EOF && rl_end) + { + if (RL_SIG_RECEIVED ()) + { + RL_CHECK_SIGNALS (); + if (rl_signal_event_hook) + (*rl_signal_event_hook) (); /* XXX */ + } + + /* XXX - reading two consecutive EOFs returns EOF */ + if (RL_ISSTATE (RL_STATE_TERMPREPPED)) + { + if (lastc == _rl_eof_char || lastc == EOF) + rl_end = 0; + else + c = _rl_eof_char; + } + else + c = NEWLINE; + } + + /* The character _rl_eof_char typed to blank line, and not as the + previous character is interpreted as EOF. This doesn't work when + READLINE_CALLBACKS is defined, so hitting a series of ^Ds will + erase all the chars on the line and then return EOF. */ + if (((c == _rl_eof_char && lastc != c) || c == EOF) && rl_end == 0) + { +#if defined (READLINE_CALLBACKS) + RL_SETSTATE(RL_STATE_DONE); + return (rl_done = 1); +#else + eof_found = 1; + break; +#endif + } + + lastc = c; + r = _rl_dispatch ((unsigned char)c, _rl_keymap); + RL_CHECK_SIGNALS (); + + if (_rl_command_to_execute) + { + (*rl_redisplay_function) (); + + rl_executing_keymap = _rl_command_to_execute->map; + rl_executing_key = _rl_command_to_execute->key; + + rl_dispatching = 1; + RL_SETSTATE(RL_STATE_DISPATCHING); + r = (*(_rl_command_to_execute->func)) (_rl_command_to_execute->count, _rl_command_to_execute->key); + _rl_command_to_execute = 0; + RL_UNSETSTATE(RL_STATE_DISPATCHING); + rl_dispatching = 0; + + RL_CHECK_SIGNALS (); + } + + /* If there was no change in _rl_last_command_was_kill, then no kill + has taken place. Note that if input is pending we are reading + a prefix command, so nothing has changed yet. */ + if (rl_pending_input == 0 && lk == _rl_last_command_was_kill) + _rl_last_command_was_kill = 0; + + if (_rl_keep_mark_active) + _rl_keep_mark_active = 0; + else if (rl_mark_active_p ()) + rl_deactivate_mark (); + + _rl_internal_char_cleanup (); + +#if defined (READLINE_CALLBACKS) + return 0; +#else + } + + return (eof_found); +#endif +} + +#if defined (READLINE_CALLBACKS) +static int +readline_internal_charloop (void) +{ + int eof = 1; + + while (rl_done == 0) + eof = readline_internal_char (); + return (eof); +} +#endif /* READLINE_CALLBACKS */ + +/* Read a line of input from the global rl_instream, doing output on + the global rl_outstream. + If rl_prompt is non-null, then that is our prompt. */ +static char * +readline_internal (void) +{ + readline_internal_setup (); + _rl_eof_found = readline_internal_charloop (); + return (readline_internal_teardown (_rl_eof_found)); +} + +void +_rl_init_line_state (void) +{ + rl_point = rl_end = rl_mark = 0; + the_line = rl_line_buffer; + the_line[0] = 0; +} + +void +_rl_set_the_line (void) +{ + the_line = rl_line_buffer; +} + +#if defined (READLINE_CALLBACKS) +_rl_keyseq_cxt * +_rl_keyseq_cxt_alloc (void) +{ + _rl_keyseq_cxt *cxt; + + cxt = (_rl_keyseq_cxt *)xmalloc (sizeof (_rl_keyseq_cxt)); + + cxt->flags = cxt->subseq_arg = cxt->subseq_retval = 0; + + cxt->okey = 0; + cxt->ocxt = _rl_kscxt; + cxt->childval = 42; /* sentinel value */ + + return cxt; +} + +void +_rl_keyseq_cxt_dispose (_rl_keyseq_cxt *cxt) +{ + xfree (cxt); +} + +void +_rl_keyseq_chain_dispose (void) +{ + _rl_keyseq_cxt *cxt; + + while (_rl_kscxt) + { + cxt = _rl_kscxt; + _rl_kscxt = _rl_kscxt->ocxt; + _rl_keyseq_cxt_dispose (cxt); + } +} +#endif + +static int +_rl_subseq_getchar (int key) +{ + int k; + + if (key == ESC) + RL_SETSTATE(RL_STATE_METANEXT); + RL_SETSTATE(RL_STATE_MOREINPUT); + k = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + if (key == ESC) + RL_UNSETSTATE(RL_STATE_METANEXT); + + return k; +} + +#if defined (READLINE_CALLBACKS) +int +_rl_dispatch_callback (_rl_keyseq_cxt *cxt) +{ + int nkey, r; + + /* For now */ + /* The first time this context is used, we want to read input and dispatch + on it. When traversing the chain of contexts back `up', we want to use + the value from the next context down. We're simulating recursion using + a chain of contexts. */ + if ((cxt->flags & KSEQ_DISPATCHED) == 0) + { + nkey = _rl_subseq_getchar (cxt->okey); + if (nkey < 0) + { + _rl_abort_internal (); + return -1; + } + r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg); + cxt->flags |= KSEQ_DISPATCHED; + } + else + r = cxt->childval; + + /* For now */ + if (r != -3) /* don't do this if we indicate there will be other matches */ + r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ)); + + RL_CHECK_SIGNALS (); + /* We only treat values < 0 specially to simulate recursion. */ + if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */ + { + _rl_keyseq_chain_dispose (); + RL_UNSETSTATE (RL_STATE_MULTIKEY); + return r; + } + + if (r != -3) /* magic value that says we added to the chain */ + _rl_kscxt = cxt->ocxt; + if (_rl_kscxt) + _rl_kscxt->childval = r; + if (r != -3) + _rl_keyseq_cxt_dispose (cxt); + + return r; +} +#endif /* READLINE_CALLBACKS */ + +/* Do the command associated with KEY in MAP. + If the associated command is really a keymap, then read + another key, and dispatch into that map. */ +int +_rl_dispatch (register int key, Keymap map) +{ + _rl_dispatching_keymap = map; + return _rl_dispatch_subseq (key, map, 0); +} + +int +_rl_dispatch_subseq (register int key, Keymap map, int got_subseq) +{ + int r, newkey; + char *macro; + rl_command_func_t *func; +#if defined (READLINE_CALLBACKS) + _rl_keyseq_cxt *cxt; +#endif + + if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii) + { + if (map[ESC].type == ISKMAP) + { + if (RL_ISSTATE (RL_STATE_MACRODEF)) + _rl_add_macro_char (ESC); + RESIZE_KEYSEQ_BUFFER (); + rl_executing_keyseq[rl_key_sequence_length++] = ESC; + map = FUNCTION_TO_KEYMAP (map, ESC); + key = UNMETA (key); + return (_rl_dispatch (key, map)); + } + else + rl_ding (); + return 0; + } + + if (RL_ISSTATE (RL_STATE_MACRODEF)) + _rl_add_macro_char (key); + + r = 0; + switch (map[key].type) + { + case ISFUNC: + func = map[key].function; + if (func) + { + /* Special case rl_do_lowercase_version (). */ + if (func == rl_do_lowercase_version) + /* Should we do anything special if key == ANYOTHERKEY? */ + return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map)); + + rl_executing_keymap = map; + rl_executing_key = key; + + RESIZE_KEYSEQ_BUFFER(); + rl_executing_keyseq[rl_key_sequence_length++] = key; + rl_executing_keyseq[rl_key_sequence_length] = '\0'; + + rl_dispatching = 1; + RL_SETSTATE(RL_STATE_DISPATCHING); + r = (*func) (rl_numeric_arg * rl_arg_sign, key); + RL_UNSETSTATE(RL_STATE_DISPATCHING); + rl_dispatching = 0; + + /* If we have input pending, then the last command was a prefix + command. Don't change the state of rl_last_func. Otherwise, + remember the last command executed in this variable. */ +#if defined (VI_MODE) + if (rl_pending_input == 0 && map[key].function != rl_digit_argument && map[key].function != rl_vi_arg_digit) +#else + if (rl_pending_input == 0 && map[key].function != rl_digit_argument) +#endif + rl_last_func = map[key].function; + + RL_CHECK_SIGNALS (); + } + else if (map[ANYOTHERKEY].function) + { + /* OK, there's no function bound in this map, but there is a + shadow function that was overridden when the current keymap + was created. Return -2 to note that. */ + if (RL_ISSTATE (RL_STATE_MACROINPUT)) + _rl_prev_macro_key (); + else + _rl_unget_char (key); + if (rl_key_sequence_length > 0) + rl_executing_keyseq[--rl_key_sequence_length] = '\0'; + return -2; + } + else if (got_subseq) + { + /* Return -1 to note that we're in a subsequence, but we don't + have a matching key, nor was one overridden. This means + we need to back up the recursion chain and find the last + subsequence that is bound to a function. */ + if (RL_ISSTATE (RL_STATE_MACROINPUT)) + _rl_prev_macro_key (); + else + _rl_unget_char (key); + if (rl_key_sequence_length > 0) + rl_executing_keyseq[--rl_key_sequence_length] = '\0'; + return -1; + } + else + { +#if defined (READLINE_CALLBACKS) + RL_UNSETSTATE (RL_STATE_MULTIKEY); + _rl_keyseq_chain_dispose (); +#endif + _rl_abort_internal (); + return -1; + } + break; + + case ISKMAP: + if (map[key].function != 0) + { +#if defined (VI_MODE) + /* The only way this test will be true is if a subsequence has been + bound starting with ESC, generally the arrow keys. What we do is + check whether there's input in the queue, which there generally + will be if an arrow key has been pressed, and, if there's not, + just dispatch to (what we assume is) rl_vi_movement_mode right + away. This is essentially an input test with a zero timeout (by + default) or a timeout determined by the value of `keyseq-timeout' */ + /* _rl_keyseq_timeout specified in milliseconds; _rl_input_queued + takes microseconds, so multiply by 1000 */ + if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap && + (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) && + _rl_pushed_input_available () == 0 && + _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0) + return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key))); + /* This is a very specific test. It can possibly be generalized in + the future, but for now it handles a specific case of ESC being + the last character in a keyboard macro. */ + if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap && + (RL_ISSTATE (RL_STATE_INPUTPENDING) == 0) && + (RL_ISSTATE (RL_STATE_MACROINPUT) && _rl_peek_macro_key () == 0) && + _rl_pushed_input_available () == 0 && + _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0) + return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key))); +#endif + + RESIZE_KEYSEQ_BUFFER (); + rl_executing_keyseq[rl_key_sequence_length++] = key; + _rl_dispatching_keymap = FUNCTION_TO_KEYMAP (map, key); + + /* Allocate new context here. Use linked contexts (linked through + cxt->ocxt) to simulate recursion */ +#if defined (READLINE_CALLBACKS) +# if defined (VI_MODE) + /* If we're redoing a vi mode command and we know there is a shadowed + function corresponding to this key, just call it -- all the redoable + vi mode commands already have all the input they need, and rl_vi_redo + assumes that one call to rl_dispatch is sufficient to complete the + command. */ + if (_rl_vi_redoing && RL_ISSTATE (RL_STATE_CALLBACK) && + map[ANYOTHERKEY].function != 0) + return (_rl_subseq_result (-2, map, key, got_subseq)); +# endif + if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + /* Return 0 only the first time, to indicate success to + _rl_callback_read_char. The rest of the time, we're called + from _rl_dispatch_callback, so we return -3 to indicate + special handling is necessary. */ + r = RL_ISSTATE (RL_STATE_MULTIKEY) ? -3 : 0; + cxt = _rl_keyseq_cxt_alloc (); + + if (got_subseq) + cxt->flags |= KSEQ_SUBSEQ; + cxt->okey = key; + cxt->oldmap = map; + cxt->dmap = _rl_dispatching_keymap; + cxt->subseq_arg = got_subseq || cxt->dmap[ANYOTHERKEY].function; + + RL_SETSTATE (RL_STATE_MULTIKEY); + _rl_kscxt = cxt; + + return r; /* don't indicate immediate success */ + } +#endif + + /* Tentative inter-character timeout for potential multi-key + sequences? If no input within timeout, abort sequence and + act as if we got non-matching input. */ + /* _rl_keyseq_timeout specified in milliseconds; _rl_input_queued + takes microseconds, so multiply by 1000 */ + if (_rl_keyseq_timeout > 0 && + (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) && + _rl_pushed_input_available () == 0 && + _rl_dispatching_keymap[ANYOTHERKEY].function && + _rl_input_queued (_rl_keyseq_timeout*1000) == 0) + { + if (rl_key_sequence_length > 0) + rl_executing_keyseq[--rl_key_sequence_length] = '\0'; + return (_rl_subseq_result (-2, map, key, got_subseq)); + } + + newkey = _rl_subseq_getchar (key); + if (newkey < 0) + { + _rl_abort_internal (); + return -1; + } + + r = _rl_dispatch_subseq (newkey, _rl_dispatching_keymap, got_subseq || map[ANYOTHERKEY].function); + return _rl_subseq_result (r, map, key, got_subseq); + } + else + { + _rl_abort_internal (); /* XXX */ + return -1; + } + break; + + case ISMACR: + if (map[key].function != 0) + { + rl_executing_keyseq[rl_key_sequence_length] = '\0'; + macro = savestring ((char *)map[key].function); + _rl_with_macro_input (macro); + return 0; + } + break; + } + +#if defined (VI_MODE) + if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && + key != ANYOTHERKEY && + _rl_dispatching_keymap == vi_movement_keymap && + _rl_vi_textmod_command (key)) + _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); +#endif + + return (r); +} + +static int +_rl_subseq_result (int r, Keymap map, int key, int got_subseq) +{ + Keymap m; + int type, nt; + rl_command_func_t *func, *nf; + + if (r == -2) + /* We didn't match anything, and the keymap we're indexed into + shadowed a function previously bound to that prefix. Call + the function. The recursive call to _rl_dispatch_subseq has + already taken care of pushing any necessary input back onto + the input queue with _rl_unget_char. */ + { + m = _rl_dispatching_keymap; + type = m[ANYOTHERKEY].type; + func = m[ANYOTHERKEY].function; + if (type == ISFUNC && func == rl_do_lowercase_version) + r = _rl_dispatch (_rl_to_lower ((unsigned char)key), map); + else if (type == ISFUNC) + { + /* If we shadowed a function, whatever it is, we somehow need a + keymap with map[key].func == shadowed-function. + Let's use this one. Then we can dispatch using the original + key, since there are commands (e.g., in vi mode) for which it + matters. */ + nt = m[key].type; + nf = m[key].function; + + m[key].type = type; + m[key].function = func; + /* Don't change _rl_dispatching_keymap, set it here */ + _rl_dispatching_keymap = map; /* previous map */ + r = _rl_dispatch_subseq (key, m, 0); + m[key].type = nt; + m[key].function = nf; + } + else + /* We probably shadowed a keymap, so keep going. */ + r = _rl_dispatch (ANYOTHERKEY, m); + } + else if (r < 0 && map[ANYOTHERKEY].function) + { + /* We didn't match (r is probably -1), so return something to + tell the caller that it should try ANYOTHERKEY for an + overridden function. */ + if (RL_ISSTATE (RL_STATE_MACROINPUT)) + _rl_prev_macro_key (); + else + _rl_unget_char (key); + if (rl_key_sequence_length > 0) + rl_executing_keyseq[--rl_key_sequence_length] = '\0'; + _rl_dispatching_keymap = map; + return -2; + } + else if (r < 0 && got_subseq) /* XXX */ + { + /* OK, back up the chain. */ + if (RL_ISSTATE (RL_STATE_MACROINPUT)) + _rl_prev_macro_key (); + else + _rl_unget_char (key); + if (rl_key_sequence_length > 0) + rl_executing_keyseq[--rl_key_sequence_length] = '\0'; + _rl_dispatching_keymap = map; + return -1; + } + + return r; +} + +/* **************************************************************** */ +/* */ +/* Initializations */ +/* */ +/* **************************************************************** */ + +/* Initialize readline (and terminal if not already). */ +int +rl_initialize (void) +{ + /* If we have never been called before, initialize the + terminal and data structures. */ + if (rl_initialized == 0) + { + RL_SETSTATE(RL_STATE_INITIALIZING); + readline_initialize_everything (); + RL_UNSETSTATE(RL_STATE_INITIALIZING); + rl_initialized++; + RL_SETSTATE(RL_STATE_INITIALIZED); + } + else + (void)_rl_init_locale (); /* check current locale */ + + /* Initialize the current line information. */ + _rl_init_line_state (); + + /* We aren't done yet. We haven't even gotten started yet! */ + rl_done = 0; + RL_UNSETSTATE(RL_STATE_DONE); + + /* Tell the history routines what is going on. */ + _rl_start_using_history (); + + /* Make the display buffer match the state of the line. */ + rl_reset_line_state (); + + /* No such function typed yet. */ + rl_last_func = (rl_command_func_t *)NULL; + + /* Parsing of key-bindings begins in an enabled state. */ + _rl_parsing_conditionalized_out = 0; + +#if defined (VI_MODE) + if (rl_editing_mode == vi_mode) + _rl_vi_initialize_line (); +#endif + + /* Each line starts in insert mode (the default). */ + _rl_set_insert_mode (RL_IM_DEFAULT, 1); + + return 0; +} + +#if 0 +#if defined (__EMX__) +static void +_emx_build_environ (void) +{ + TIB *tibp; + PIB *pibp; + char *t, **tp; + int c; + + DosGetInfoBlocks (&tibp, &pibp); + t = pibp->pib_pchenv; + for (c = 1; *t; c++) + t += strlen (t) + 1; + tp = environ = (char **)xmalloc ((c + 1) * sizeof (char *)); + t = pibp->pib_pchenv; + while (*t) + { + *tp++ = t; + t += strlen (t) + 1; + } + *tp = 0; +} +#endif /* __EMX__ */ +#endif + +/* Initialize the entire state of the world. */ +static void +readline_initialize_everything (void) +{ +#if 0 +#if defined (__EMX__) + if (environ == 0) + _emx_build_environ (); +#endif +#endif + +#if 0 + /* Find out if we are running in Emacs -- UNUSED. */ + running_in_emacs = sh_get_env_value ("EMACS") != (char *)0; +#endif + + /* Set up input and output if they are not already set up. */ + if (!rl_instream) + rl_instream = stdin; + + if (!rl_outstream) + rl_outstream = stdout; + + /* Bind _rl_in_stream and _rl_out_stream immediately. These values + may change, but they may also be used before readline_internal () + is called. */ + _rl_in_stream = rl_instream; + _rl_out_stream = rl_outstream; + + /* Allocate data structures. */ + if (rl_line_buffer == 0) + rl_line_buffer = (char *)xmalloc (rl_line_buffer_len = DEFAULT_BUFFER_SIZE); + + /* Initialize the terminal interface. */ + if (rl_terminal_name == 0) + rl_terminal_name = sh_get_env_value ("TERM"); + _rl_init_terminal_io (rl_terminal_name); + + /* Bind tty characters to readline functions. */ + readline_default_bindings (); + + /* Initialize the function names. */ + rl_initialize_funmap (); + + /* Decide whether we should automatically go into eight-bit mode. */ + _rl_init_eightbit (); + + /* Read in the init file. */ + rl_read_init_file ((char *)NULL); + + /* XXX */ + if (_rl_horizontal_scroll_mode && _rl_term_autowrap) + { + _rl_screenwidth--; + _rl_screenchars -= _rl_screenheight; + } + + /* Override the effect of any `set keymap' assignments in the + inputrc file. */ + rl_set_keymap_from_edit_mode (); + + /* Try to bind a common arrow key prefix, if not already bound. */ + bind_arrow_keys (); + + /* Bind the bracketed paste prefix assuming that the user will enable + it on terminals that support it. */ + bind_bracketed_paste_prefix (); + + /* If the completion parser's default word break characters haven't + been set yet, then do so now. */ + if (rl_completer_word_break_characters == (char *)NULL) + rl_completer_word_break_characters = (char *)rl_basic_word_break_characters; + +#if defined (COLOR_SUPPORT) + if (_rl_colored_stats || _rl_colored_completion_prefix) + _rl_parse_colors (); +#endif + + rl_executing_keyseq = malloc (_rl_executing_keyseq_size = 16); + if (rl_executing_keyseq) + rl_executing_keyseq[rl_key_sequence_length = 0] = '\0'; +} + +/* If this system allows us to look at the values of the regular + input editing characters, then bind them to their readline + equivalents, iff the characters are not bound to keymaps. */ +static void +readline_default_bindings (void) +{ + if (_rl_bind_stty_chars) + rl_tty_set_default_bindings (_rl_keymap); +} + +/* Reset the default bindings for the terminal special characters we're + interested in back to rl_insert and read the new ones. */ +static void +reset_default_bindings (void) +{ + if (_rl_bind_stty_chars) + { + rl_tty_unset_default_bindings (_rl_keymap); + rl_tty_set_default_bindings (_rl_keymap); + } +} + +/* Bind some common arrow key sequences in MAP. */ +static void +bind_arrow_keys_internal (Keymap map) +{ + Keymap xkeymap; + + xkeymap = _rl_keymap; + _rl_keymap = map; + +#if defined (__MSDOS__) + rl_bind_keyseq_if_unbound ("\033[0A", rl_get_previous_history); + rl_bind_keyseq_if_unbound ("\033[0B", rl_backward_char); + rl_bind_keyseq_if_unbound ("\033[0C", rl_forward_char); + rl_bind_keyseq_if_unbound ("\033[0D", rl_get_next_history); +#endif + + rl_bind_keyseq_if_unbound ("\033[A", rl_get_previous_history); + rl_bind_keyseq_if_unbound ("\033[B", rl_get_next_history); + rl_bind_keyseq_if_unbound ("\033[C", rl_forward_char); + rl_bind_keyseq_if_unbound ("\033[D", rl_backward_char); + rl_bind_keyseq_if_unbound ("\033[H", rl_beg_of_line); + rl_bind_keyseq_if_unbound ("\033[F", rl_end_of_line); + + rl_bind_keyseq_if_unbound ("\033OA", rl_get_previous_history); + rl_bind_keyseq_if_unbound ("\033OB", rl_get_next_history); + rl_bind_keyseq_if_unbound ("\033OC", rl_forward_char); + rl_bind_keyseq_if_unbound ("\033OD", rl_backward_char); + rl_bind_keyseq_if_unbound ("\033OH", rl_beg_of_line); + rl_bind_keyseq_if_unbound ("\033OF", rl_end_of_line); + + /* Key bindings for control-arrow keys */ + rl_bind_keyseq_if_unbound ("\033[1;5C", rl_forward_word); + rl_bind_keyseq_if_unbound ("\033[1;5D", rl_backward_word); + rl_bind_keyseq_if_unbound ("\033[3;5~", rl_kill_word); + + /* Key bindings for alt-arrow keys */ + rl_bind_keyseq_if_unbound ("\033[1;3C", rl_forward_word); + rl_bind_keyseq_if_unbound ("\033[1;3D", rl_backward_word); + +#if defined (__MINGW32__) + rl_bind_keyseq_if_unbound ("\340H", rl_get_previous_history); + rl_bind_keyseq_if_unbound ("\340P", rl_get_next_history); + rl_bind_keyseq_if_unbound ("\340M", rl_forward_char); + rl_bind_keyseq_if_unbound ("\340K", rl_backward_char); + rl_bind_keyseq_if_unbound ("\340G", rl_beg_of_line); + rl_bind_keyseq_if_unbound ("\340O", rl_end_of_line); + rl_bind_keyseq_if_unbound ("\340S", rl_delete); + rl_bind_keyseq_if_unbound ("\340R", rl_overwrite_mode); + + /* These may or may not work because of the embedded NUL. */ + rl_bind_keyseq_if_unbound ("\\000H", rl_get_previous_history); + rl_bind_keyseq_if_unbound ("\\000P", rl_get_next_history); + rl_bind_keyseq_if_unbound ("\\000M", rl_forward_char); + rl_bind_keyseq_if_unbound ("\\000K", rl_backward_char); + rl_bind_keyseq_if_unbound ("\\000G", rl_beg_of_line); + rl_bind_keyseq_if_unbound ("\\000O", rl_end_of_line); + rl_bind_keyseq_if_unbound ("\\000S", rl_delete); + rl_bind_keyseq_if_unbound ("\\000R", rl_overwrite_mode); +#endif + + _rl_keymap = xkeymap; +} + +/* Try and bind the common arrow key prefixes after giving termcap and + the inputrc file a chance to bind them and create `real' keymaps + for the arrow key prefix. */ +static void +bind_arrow_keys (void) +{ + bind_arrow_keys_internal (emacs_standard_keymap); + +#if defined (VI_MODE) + bind_arrow_keys_internal (vi_movement_keymap); + /* Unbind vi_movement_keymap[ESC] to allow users to repeatedly hit ESC + in vi command mode while still allowing the arrow keys to work. */ + if (vi_movement_keymap[ESC].type == ISKMAP) + rl_bind_keyseq_in_map ("\033", (rl_command_func_t *)NULL, vi_movement_keymap); + bind_arrow_keys_internal (vi_insertion_keymap); +#endif +} + +static void +bind_bracketed_paste_prefix (void) +{ + Keymap xkeymap; + + xkeymap = _rl_keymap; + + _rl_keymap = emacs_standard_keymap; + rl_bind_keyseq_if_unbound (BRACK_PASTE_PREF, rl_bracketed_paste_begin); + +#if defined (VI_MODE) + _rl_keymap = vi_insertion_keymap; + rl_bind_keyseq_if_unbound (BRACK_PASTE_PREF, rl_bracketed_paste_begin); + /* XXX - is there a reason to do this in the vi command keymap? */ +#endif + + _rl_keymap = xkeymap; +} + +/* **************************************************************** */ +/* */ +/* Saving and Restoring Readline's state */ +/* */ +/* **************************************************************** */ + +int +rl_save_state (struct readline_state *sp) +{ + if (sp == 0) + return -1; + + sp->point = rl_point; + sp->end = rl_end; + sp->mark = rl_mark; + sp->buffer = rl_line_buffer; + sp->buflen = rl_line_buffer_len; + sp->ul = rl_undo_list; + sp->prompt = rl_prompt; + + sp->rlstate = rl_readline_state; + sp->done = rl_done; + sp->kmap = _rl_keymap; + + sp->lastfunc = rl_last_func; + sp->insmode = rl_insert_mode; + sp->edmode = rl_editing_mode; + sp->kseq = rl_executing_keyseq; + sp->kseqlen = rl_key_sequence_length; + sp->inf = rl_instream; + sp->outf = rl_outstream; + sp->pendingin = rl_pending_input; + sp->macro = rl_executing_macro; + + sp->catchsigs = rl_catch_signals; + sp->catchsigwinch = rl_catch_sigwinch; + + sp->entryfunc = rl_completion_entry_function; + sp->menuentryfunc = rl_menu_completion_entry_function; + sp->ignorefunc = rl_ignore_some_completions_function; + sp->attemptfunc = rl_attempted_completion_function; + sp->wordbreakchars = rl_completer_word_break_characters; + + return (0); +} + +int +rl_restore_state (struct readline_state *sp) +{ + if (sp == 0) + return -1; + + rl_point = sp->point; + rl_end = sp->end; + rl_mark = sp->mark; + the_line = rl_line_buffer = sp->buffer; + rl_line_buffer_len = sp->buflen; + rl_undo_list = sp->ul; + rl_prompt = sp->prompt; + + rl_readline_state = sp->rlstate; + rl_done = sp->done; + _rl_keymap = sp->kmap; + + rl_last_func = sp->lastfunc; + rl_insert_mode = sp->insmode; + rl_editing_mode = sp->edmode; + rl_executing_keyseq = sp->kseq; + rl_key_sequence_length = sp->kseqlen; + rl_instream = sp->inf; + rl_outstream = sp->outf; + rl_pending_input = sp->pendingin; + rl_executing_macro = sp->macro; + + rl_catch_signals = sp->catchsigs; + rl_catch_sigwinch = sp->catchsigwinch; + + rl_completion_entry_function = sp->entryfunc; + rl_menu_completion_entry_function = sp->menuentryfunc; + rl_ignore_some_completions_function = sp->ignorefunc; + rl_attempted_completion_function = sp->attemptfunc; + rl_completer_word_break_characters = sp->wordbreakchars; + + rl_deactivate_mark (); + + return (0); +} + +/* Functions to manage the string that is the current key sequence. */ + +void +_rl_init_executing_keyseq (void) +{ + rl_executing_keyseq[rl_key_sequence_length = 0] = '\0'; +} + +void +_rl_term_executing_keyseq (void) +{ + rl_executing_keyseq[rl_key_sequence_length] = '\0'; +} + +void +_rl_end_executing_keyseq (void) +{ + if (rl_key_sequence_length > 0) + rl_executing_keyseq[--rl_key_sequence_length] = '\0'; +} + +void +_rl_add_executing_keyseq (int key) +{ + RESIZE_KEYSEQ_BUFFER (); + rl_executing_keyseq[rl_key_sequence_length++] = key; +} diff --git a/bash-5.1/lib/readline/readline.h b/bash-5.1/lib/readline/readline.h new file mode 100644 index 0000000..78fa39d --- /dev/null +++ b/bash-5.1/lib/readline/readline.h @@ -0,0 +1,969 @@ +/* Readline.h -- the names of functions callable from within readline. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (_READLINE_H_) +#define _READLINE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined (READLINE_LIBRARY) +# include "rlstdc.h" +# include "rltypedefs.h" +# include "keymaps.h" +# include "tilde.h" +#else +# include +# include +# include +# include +#endif + +/* Hex-encoded Readline version number. */ +#define RL_READLINE_VERSION 0x0801 /* Readline 8.0 */ +#define RL_VERSION_MAJOR 8 +#define RL_VERSION_MINOR 1 + +/* Readline data structures. */ + +/* Maintaining the state of undo. We remember individual deletes and inserts + on a chain of things to do. */ + +/* The actions that undo knows how to undo. Notice that UNDO_DELETE means + to insert some text, and UNDO_INSERT means to delete some text. I.e., + the code tells undo what to undo, not how to undo it. */ +enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; + +/* What an element of THE_UNDO_LIST looks like. */ +typedef struct undo_list { + struct undo_list *next; + int start, end; /* Where the change took place. */ + char *text; /* The text to insert, if undoing a delete. */ + enum undo_code what; /* Delete, Insert, Begin, End. */ +} UNDO_LIST; + +/* The current undo list for RL_LINE_BUFFER. */ +extern UNDO_LIST *rl_undo_list; + +/* The data structure for mapping textual names to code addresses. */ +typedef struct _funmap { + const char *name; + rl_command_func_t *function; +} FUNMAP; + +extern FUNMAP **funmap; + +/* **************************************************************** */ +/* */ +/* Functions available to bind to key sequences */ +/* */ +/* **************************************************************** */ + +/* Bindable commands for numeric arguments. */ +extern int rl_digit_argument PARAMS((int, int)); +extern int rl_universal_argument PARAMS((int, int)); + +/* Bindable commands for moving the cursor. */ +extern int rl_forward_byte PARAMS((int, int)); +extern int rl_forward_char PARAMS((int, int)); +extern int rl_forward PARAMS((int, int)); +extern int rl_backward_byte PARAMS((int, int)); +extern int rl_backward_char PARAMS((int, int)); +extern int rl_backward PARAMS((int, int)); +extern int rl_beg_of_line PARAMS((int, int)); +extern int rl_end_of_line PARAMS((int, int)); +extern int rl_forward_word PARAMS((int, int)); +extern int rl_backward_word PARAMS((int, int)); +extern int rl_refresh_line PARAMS((int, int)); +extern int rl_clear_screen PARAMS((int, int)); +extern int rl_clear_display PARAMS((int, int)); +extern int rl_skip_csi_sequence PARAMS((int, int)); +extern int rl_arrow_keys PARAMS((int, int)); + +extern int rl_previous_screen_line PARAMS((int, int)); +extern int rl_next_screen_line PARAMS((int, int)); + +/* Bindable commands for inserting and deleting text. */ +extern int rl_insert PARAMS((int, int)); +extern int rl_quoted_insert PARAMS((int, int)); +extern int rl_tab_insert PARAMS((int, int)); +extern int rl_newline PARAMS((int, int)); +extern int rl_do_lowercase_version PARAMS((int, int)); +extern int rl_rubout PARAMS((int, int)); +extern int rl_delete PARAMS((int, int)); +extern int rl_rubout_or_delete PARAMS((int, int)); +extern int rl_delete_horizontal_space PARAMS((int, int)); +extern int rl_delete_or_show_completions PARAMS((int, int)); +extern int rl_insert_comment PARAMS((int, int)); + +/* Bindable commands for changing case. */ +extern int rl_upcase_word PARAMS((int, int)); +extern int rl_downcase_word PARAMS((int, int)); +extern int rl_capitalize_word PARAMS((int, int)); + +/* Bindable commands for transposing characters and words. */ +extern int rl_transpose_words PARAMS((int, int)); +extern int rl_transpose_chars PARAMS((int, int)); + +/* Bindable commands for searching within a line. */ +extern int rl_char_search PARAMS((int, int)); +extern int rl_backward_char_search PARAMS((int, int)); + +/* Bindable commands for readline's interface to the command history. */ +extern int rl_beginning_of_history PARAMS((int, int)); +extern int rl_end_of_history PARAMS((int, int)); +extern int rl_get_next_history PARAMS((int, int)); +extern int rl_get_previous_history PARAMS((int, int)); +extern int rl_operate_and_get_next PARAMS((int, int)); + +/* Bindable commands for managing the mark and region. */ +extern int rl_set_mark PARAMS((int, int)); +extern int rl_exchange_point_and_mark PARAMS((int, int)); + +/* Bindable commands to set the editing mode (emacs or vi). */ +extern int rl_vi_editing_mode PARAMS((int, int)); +extern int rl_emacs_editing_mode PARAMS((int, int)); + +/* Bindable commands to change the insert mode (insert or overwrite) */ +extern int rl_overwrite_mode PARAMS((int, int)); + +/* Bindable commands for managing key bindings. */ +extern int rl_re_read_init_file PARAMS((int, int)); +extern int rl_dump_functions PARAMS((int, int)); +extern int rl_dump_macros PARAMS((int, int)); +extern int rl_dump_variables PARAMS((int, int)); + +/* Bindable commands for word completion. */ +extern int rl_complete PARAMS((int, int)); +extern int rl_possible_completions PARAMS((int, int)); +extern int rl_insert_completions PARAMS((int, int)); +extern int rl_old_menu_complete PARAMS((int, int)); +extern int rl_menu_complete PARAMS((int, int)); +extern int rl_backward_menu_complete PARAMS((int, int)); + +/* Bindable commands for killing and yanking text, and managing the kill ring. */ +extern int rl_kill_word PARAMS((int, int)); +extern int rl_backward_kill_word PARAMS((int, int)); +extern int rl_kill_line PARAMS((int, int)); +extern int rl_backward_kill_line PARAMS((int, int)); +extern int rl_kill_full_line PARAMS((int, int)); +extern int rl_unix_word_rubout PARAMS((int, int)); +extern int rl_unix_filename_rubout PARAMS((int, int)); +extern int rl_unix_line_discard PARAMS((int, int)); +extern int rl_copy_region_to_kill PARAMS((int, int)); +extern int rl_kill_region PARAMS((int, int)); +extern int rl_copy_forward_word PARAMS((int, int)); +extern int rl_copy_backward_word PARAMS((int, int)); +extern int rl_yank PARAMS((int, int)); +extern int rl_yank_pop PARAMS((int, int)); +extern int rl_yank_nth_arg PARAMS((int, int)); +extern int rl_yank_last_arg PARAMS((int, int)); +extern int rl_bracketed_paste_begin PARAMS((int, int)); +/* Not available unless _WIN32 is defined. */ +#if defined (_WIN32) +extern int rl_paste_from_clipboard PARAMS((int, int)); +#endif + +/* Bindable commands for incremental searching. */ +extern int rl_reverse_search_history PARAMS((int, int)); +extern int rl_forward_search_history PARAMS((int, int)); + +/* Bindable keyboard macro commands. */ +extern int rl_start_kbd_macro PARAMS((int, int)); +extern int rl_end_kbd_macro PARAMS((int, int)); +extern int rl_call_last_kbd_macro PARAMS((int, int)); +extern int rl_print_last_kbd_macro PARAMS((int, int)); + +/* Bindable undo commands. */ +extern int rl_revert_line PARAMS((int, int)); +extern int rl_undo_command PARAMS((int, int)); + +/* Bindable tilde expansion commands. */ +extern int rl_tilde_expand PARAMS((int, int)); + +/* Bindable terminal control commands. */ +extern int rl_restart_output PARAMS((int, int)); +extern int rl_stop_output PARAMS((int, int)); + +/* Miscellaneous bindable commands. */ +extern int rl_abort PARAMS((int, int)); +extern int rl_tty_status PARAMS((int, int)); + +/* Bindable commands for incremental and non-incremental history searching. */ +extern int rl_history_search_forward PARAMS((int, int)); +extern int rl_history_search_backward PARAMS((int, int)); +extern int rl_history_substr_search_forward PARAMS((int, int)); +extern int rl_history_substr_search_backward PARAMS((int, int)); +extern int rl_noninc_forward_search PARAMS((int, int)); +extern int rl_noninc_reverse_search PARAMS((int, int)); +extern int rl_noninc_forward_search_again PARAMS((int, int)); +extern int rl_noninc_reverse_search_again PARAMS((int, int)); + +/* Bindable command used when inserting a matching close character. */ +extern int rl_insert_close PARAMS((int, int)); + +/* Not available unless READLINE_CALLBACKS is defined. */ +extern void rl_callback_handler_install PARAMS((const char *, rl_vcpfunc_t *)); +extern void rl_callback_read_char PARAMS((void)); +extern void rl_callback_handler_remove PARAMS((void)); +extern void rl_callback_sigcleanup PARAMS((void)); + +/* Things for vi mode. Not available unless readline is compiled -DVI_MODE. */ +/* VI-mode bindable commands. */ +extern int rl_vi_redo PARAMS((int, int)); +extern int rl_vi_undo PARAMS((int, int)); +extern int rl_vi_yank_arg PARAMS((int, int)); +extern int rl_vi_fetch_history PARAMS((int, int)); +extern int rl_vi_search_again PARAMS((int, int)); +extern int rl_vi_search PARAMS((int, int)); +extern int rl_vi_complete PARAMS((int, int)); +extern int rl_vi_tilde_expand PARAMS((int, int)); +extern int rl_vi_prev_word PARAMS((int, int)); +extern int rl_vi_next_word PARAMS((int, int)); +extern int rl_vi_end_word PARAMS((int, int)); +extern int rl_vi_insert_beg PARAMS((int, int)); +extern int rl_vi_append_mode PARAMS((int, int)); +extern int rl_vi_append_eol PARAMS((int, int)); +extern int rl_vi_eof_maybe PARAMS((int, int)); +extern int rl_vi_insertion_mode PARAMS((int, int)); +extern int rl_vi_insert_mode PARAMS((int, int)); +extern int rl_vi_movement_mode PARAMS((int, int)); +extern int rl_vi_arg_digit PARAMS((int, int)); +extern int rl_vi_change_case PARAMS((int, int)); +extern int rl_vi_put PARAMS((int, int)); +extern int rl_vi_column PARAMS((int, int)); +extern int rl_vi_delete_to PARAMS((int, int)); +extern int rl_vi_change_to PARAMS((int, int)); +extern int rl_vi_yank_to PARAMS((int, int)); +extern int rl_vi_yank_pop PARAMS((int, int)); +extern int rl_vi_rubout PARAMS((int, int)); +extern int rl_vi_delete PARAMS((int, int)); +extern int rl_vi_back_to_indent PARAMS((int, int)); +extern int rl_vi_unix_word_rubout PARAMS((int, int)); +extern int rl_vi_first_print PARAMS((int, int)); +extern int rl_vi_char_search PARAMS((int, int)); +extern int rl_vi_match PARAMS((int, int)); +extern int rl_vi_change_char PARAMS((int, int)); +extern int rl_vi_subst PARAMS((int, int)); +extern int rl_vi_overstrike PARAMS((int, int)); +extern int rl_vi_overstrike_delete PARAMS((int, int)); +extern int rl_vi_replace PARAMS((int, int)); +extern int rl_vi_set_mark PARAMS((int, int)); +extern int rl_vi_goto_mark PARAMS((int, int)); + +/* VI-mode utility functions. */ +extern int rl_vi_check PARAMS((void)); +extern int rl_vi_domove PARAMS((int, int *)); +extern int rl_vi_bracktype PARAMS((int)); + +extern void rl_vi_start_inserting PARAMS((int, int, int)); + +/* VI-mode pseudo-bindable commands, used as utility functions. */ +extern int rl_vi_fWord PARAMS((int, int)); +extern int rl_vi_bWord PARAMS((int, int)); +extern int rl_vi_eWord PARAMS((int, int)); +extern int rl_vi_fword PARAMS((int, int)); +extern int rl_vi_bword PARAMS((int, int)); +extern int rl_vi_eword PARAMS((int, int)); + +/* **************************************************************** */ +/* */ +/* Well Published Functions */ +/* */ +/* **************************************************************** */ + +/* Readline functions. */ +/* Read a line of input. Prompt with PROMPT. A NULL PROMPT means none. */ +extern char *readline PARAMS((const char *)); + +extern int rl_set_prompt PARAMS((const char *)); +extern int rl_expand_prompt PARAMS((char *)); + +extern int rl_initialize PARAMS((void)); + +/* Undocumented; unused by readline */ +extern int rl_discard_argument PARAMS((void)); + +/* Utility functions to bind keys to readline commands. */ +extern int rl_add_defun PARAMS((const char *, rl_command_func_t *, int)); +extern int rl_bind_key PARAMS((int, rl_command_func_t *)); +extern int rl_bind_key_in_map PARAMS((int, rl_command_func_t *, Keymap)); +extern int rl_unbind_key PARAMS((int)); +extern int rl_unbind_key_in_map PARAMS((int, Keymap)); +extern int rl_bind_key_if_unbound PARAMS((int, rl_command_func_t *)); +extern int rl_bind_key_if_unbound_in_map PARAMS((int, rl_command_func_t *, Keymap)); +extern int rl_unbind_function_in_map PARAMS((rl_command_func_t *, Keymap)); +extern int rl_unbind_command_in_map PARAMS((const char *, Keymap)); +extern int rl_bind_keyseq PARAMS((const char *, rl_command_func_t *)); +extern int rl_bind_keyseq_in_map PARAMS((const char *, rl_command_func_t *, Keymap)); +extern int rl_bind_keyseq_if_unbound PARAMS((const char *, rl_command_func_t *)); +extern int rl_bind_keyseq_if_unbound_in_map PARAMS((const char *, rl_command_func_t *, Keymap)); +extern int rl_generic_bind PARAMS((int, const char *, char *, Keymap)); + +extern char *rl_variable_value PARAMS((const char *)); +extern int rl_variable_bind PARAMS((const char *, const char *)); + +/* Backwards compatibility, use rl_bind_keyseq_in_map instead. */ +extern int rl_set_key PARAMS((const char *, rl_command_func_t *, Keymap)); + +/* Backwards compatibility, use rl_generic_bind instead. */ +extern int rl_macro_bind PARAMS((const char *, const char *, Keymap)); + +/* Undocumented in the texinfo manual; not really useful to programs. */ +extern int rl_translate_keyseq PARAMS((const char *, char *, int *)); +extern char *rl_untranslate_keyseq PARAMS((int)); + +extern rl_command_func_t *rl_named_function PARAMS((const char *)); +extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *)); +extern rl_command_func_t *rl_function_of_keyseq_len PARAMS((const char *, size_t, Keymap, int *)); + +extern void rl_list_funmap_names PARAMS((void)); +extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap)); +extern char **rl_invoking_keyseqs PARAMS((rl_command_func_t *)); + +extern void rl_function_dumper PARAMS((int)); +extern void rl_macro_dumper PARAMS((int)); +extern void rl_variable_dumper PARAMS((int)); + +extern int rl_read_init_file PARAMS((const char *)); +extern int rl_parse_and_bind PARAMS((char *)); + +/* Functions for manipulating keymaps. */ +extern Keymap rl_make_bare_keymap PARAMS((void)); +extern int rl_empty_keymap PARAMS((Keymap)); +extern Keymap rl_copy_keymap PARAMS((Keymap)); +extern Keymap rl_make_keymap PARAMS((void)); +extern void rl_discard_keymap PARAMS((Keymap)); +extern void rl_free_keymap PARAMS((Keymap)); + +extern Keymap rl_get_keymap_by_name PARAMS((const char *)); +extern char *rl_get_keymap_name PARAMS((Keymap)); +extern void rl_set_keymap PARAMS((Keymap)); +extern Keymap rl_get_keymap PARAMS((void)); + +extern int rl_set_keymap_name PARAMS((const char *, Keymap)); + +/* Undocumented; used internally only. */ +extern void rl_set_keymap_from_edit_mode PARAMS((void)); +extern char *rl_get_keymap_name_from_edit_mode PARAMS((void)); + +/* Functions for manipulating the funmap, which maps command names to functions. */ +extern int rl_add_funmap_entry PARAMS((const char *, rl_command_func_t *)); +extern const char **rl_funmap_names PARAMS((void)); +/* Undocumented, only used internally -- there is only one funmap, and this + function may be called only once. */ +extern void rl_initialize_funmap PARAMS((void)); + +/* Utility functions for managing keyboard macros. */ +extern void rl_push_macro_input PARAMS((char *)); + +/* Functions for undoing, from undo.c */ +extern void rl_add_undo PARAMS((enum undo_code, int, int, char *)); +extern void rl_free_undo_list PARAMS((void)); +extern int rl_do_undo PARAMS((void)); +extern int rl_begin_undo_group PARAMS((void)); +extern int rl_end_undo_group PARAMS((void)); +extern int rl_modifying PARAMS((int, int)); + +/* Functions for redisplay. */ +extern void rl_redisplay PARAMS((void)); +extern int rl_on_new_line PARAMS((void)); +extern int rl_on_new_line_with_prompt PARAMS((void)); +extern int rl_forced_update_display PARAMS((void)); +extern int rl_clear_visible_line PARAMS((void)); +extern int rl_clear_message PARAMS((void)); +extern int rl_reset_line_state PARAMS((void)); +extern int rl_crlf PARAMS((void)); + +/* Functions to manage the mark and region, especially the notion of an + active mark and an active region. */ +extern void rl_keep_mark_active PARAMS((void)); + +extern void rl_activate_mark PARAMS((void)); +extern void rl_deactivate_mark PARAMS((void)); +extern int rl_mark_active_p PARAMS((void)); + +#if defined (USE_VARARGS) && defined (PREFER_STDARG) +extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2))); +#else +extern int rl_message (); +#endif + +extern int rl_show_char PARAMS((int)); + +/* Undocumented in texinfo manual. */ +extern int rl_character_len PARAMS((int, int)); +extern void rl_redraw_prompt_last_line PARAMS((void)); + +/* Save and restore internal prompt redisplay information. */ +extern void rl_save_prompt PARAMS((void)); +extern void rl_restore_prompt PARAMS((void)); + +/* Modifying text. */ +extern void rl_replace_line PARAMS((const char *, int)); +extern int rl_insert_text PARAMS((const char *)); +extern int rl_delete_text PARAMS((int, int)); +extern int rl_kill_text PARAMS((int, int)); +extern char *rl_copy_text PARAMS((int, int)); + +/* Terminal and tty mode management. */ +extern void rl_prep_terminal PARAMS((int)); +extern void rl_deprep_terminal PARAMS((void)); +extern void rl_tty_set_default_bindings PARAMS((Keymap)); +extern void rl_tty_unset_default_bindings PARAMS((Keymap)); + +extern int rl_tty_set_echoing PARAMS((int)); +extern int rl_reset_terminal PARAMS((const char *)); +extern void rl_resize_terminal PARAMS((void)); +extern void rl_set_screen_size PARAMS((int, int)); +extern void rl_get_screen_size PARAMS((int *, int *)); +extern void rl_reset_screen_size PARAMS((void)); + +extern char *rl_get_termcap PARAMS((const char *)); + +/* Functions for character input. */ +extern int rl_stuff_char PARAMS((int)); +extern int rl_execute_next PARAMS((int)); +extern int rl_clear_pending_input PARAMS((void)); +extern int rl_read_key PARAMS((void)); +extern int rl_getc PARAMS((FILE *)); +extern int rl_set_keyboard_input_timeout PARAMS((int)); + +/* `Public' utility functions . */ +extern void rl_extend_line_buffer PARAMS((int)); +extern int rl_ding PARAMS((void)); +extern int rl_alphabetic PARAMS((int)); +extern void rl_free PARAMS((void *)); + +/* Readline signal handling, from signals.c */ +extern int rl_set_signals PARAMS((void)); +extern int rl_clear_signals PARAMS((void)); +extern void rl_cleanup_after_signal PARAMS((void)); +extern void rl_reset_after_signal PARAMS((void)); +extern void rl_free_line_state PARAMS((void)); + +extern int rl_pending_signal PARAMS((void)); +extern void rl_check_signals PARAMS((void)); + +extern void rl_echo_signal_char PARAMS((int)); + +extern int rl_set_paren_blink_timeout PARAMS((int)); + +/* History management functions. */ + +extern void rl_clear_history PARAMS((void)); + +/* Undocumented. */ +extern int rl_maybe_save_line PARAMS((void)); +extern int rl_maybe_unsave_line PARAMS((void)); +extern int rl_maybe_replace_line PARAMS((void)); + +/* Completion functions. */ +extern int rl_complete_internal PARAMS((int)); +extern void rl_display_match_list PARAMS((char **, int, int)); + +extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *)); +extern char *rl_username_completion_function PARAMS((const char *, int)); +extern char *rl_filename_completion_function PARAMS((const char *, int)); + +extern int rl_completion_mode PARAMS((rl_command_func_t *)); + +#if 0 +/* Backwards compatibility (compat.c). These will go away sometime. */ +extern void free_undo_list PARAMS((void)); +extern int maybe_save_line PARAMS((void)); +extern int maybe_unsave_line PARAMS((void)); +extern int maybe_replace_line PARAMS((void)); + +extern int ding PARAMS((void)); +extern int alphabetic PARAMS((int)); +extern int crlf PARAMS((void)); + +extern char **completion_matches PARAMS((char *, rl_compentry_func_t *)); +extern char *username_completion_function PARAMS((const char *, int)); +extern char *filename_completion_function PARAMS((const char *, int)); +#endif + +/* **************************************************************** */ +/* */ +/* Well Published Variables */ +/* */ +/* **************************************************************** */ + +/* The version of this incarnation of the readline library. */ +extern const char *rl_library_version; /* e.g., "4.2" */ +extern int rl_readline_version; /* e.g., 0x0402 */ + +/* True if this is real GNU readline. */ +extern int rl_gnu_readline_p; + +/* Flags word encapsulating the current readline state. */ +extern unsigned long rl_readline_state; + +/* Says which editing mode readline is currently using. 1 means emacs mode; + 0 means vi mode. */ +extern int rl_editing_mode; + +/* Insert or overwrite mode for emacs mode. 1 means insert mode; 0 means + overwrite mode. Reset to insert mode on each input line. */ +extern int rl_insert_mode; + +/* The name of the calling program. You should initialize this to + whatever was in argv[0]. It is used when parsing conditionals. */ +extern const char *rl_readline_name; + +/* The prompt readline uses. This is set from the argument to + readline (), and should not be assigned to directly. */ +extern char *rl_prompt; + +/* The prompt string that is actually displayed by rl_redisplay. Public so + applications can more easily supply their own redisplay functions. */ +extern char *rl_display_prompt; + +/* The line buffer that is in use. */ +extern char *rl_line_buffer; + +/* The location of point, and end. */ +extern int rl_point; +extern int rl_end; + +/* The mark, or saved cursor position. */ +extern int rl_mark; + +/* Flag to indicate that readline has finished with the current input + line and should return it. */ +extern int rl_done; + +/* If set to a character value, that will be the next keystroke read. */ +extern int rl_pending_input; + +/* Non-zero if we called this function from _rl_dispatch(). It's present + so functions can find out whether they were called from a key binding + or directly from an application. */ +extern int rl_dispatching; + +/* Non-zero if the user typed a numeric argument before executing the + current function. */ +extern int rl_explicit_arg; + +/* The current value of the numeric argument specified by the user. */ +extern int rl_numeric_arg; + +/* The address of the last command function Readline executed. */ +extern rl_command_func_t *rl_last_func; + +/* The name of the terminal to use. */ +extern const char *rl_terminal_name; + +/* The input and output streams. */ +extern FILE *rl_instream; +extern FILE *rl_outstream; + +/* If non-zero, Readline gives values of LINES and COLUMNS from the environment + greater precedence than values fetched from the kernel when computing the + screen dimensions. */ +extern int rl_prefer_env_winsize; + +/* If non-zero, then this is the address of a function to call just + before readline_internal () prints the first prompt. */ +extern rl_hook_func_t *rl_startup_hook; + +/* If non-zero, this is the address of a function to call just before + readline_internal_setup () returns and readline_internal starts + reading input characters. */ +extern rl_hook_func_t *rl_pre_input_hook; + +/* The address of a function to call periodically while Readline is + awaiting character input, or NULL, for no event handling. */ +extern rl_hook_func_t *rl_event_hook; + +/* The address of a function to call if a read is interrupted by a signal. */ +extern rl_hook_func_t *rl_signal_event_hook; + +/* The address of a function to call if Readline needs to know whether or not + there is data available from the current input source. */ +extern rl_hook_func_t *rl_input_available_hook; + +/* The address of the function to call to fetch a character from the current + Readline input stream */ +extern rl_getc_func_t *rl_getc_function; + +extern rl_voidfunc_t *rl_redisplay_function; + +extern rl_vintfunc_t *rl_prep_term_function; +extern rl_voidfunc_t *rl_deprep_term_function; + +/* Dispatch variables. */ +extern Keymap rl_executing_keymap; +extern Keymap rl_binding_keymap; + +extern int rl_executing_key; +extern char *rl_executing_keyseq; +extern int rl_key_sequence_length; + +/* Display variables. */ +/* If non-zero, readline will erase the entire line, including any prompt, + if the only thing typed on an otherwise-blank line is something bound to + rl_newline. */ +extern int rl_erase_empty_line; + +/* If non-zero, the application has already printed the prompt (rl_prompt) + before calling readline, so readline should not output it the first time + redisplay is done. */ +extern int rl_already_prompted; + +/* A non-zero value means to read only this many characters rather than + up to a character bound to accept-line. */ +extern int rl_num_chars_to_read; + +/* The text of a currently-executing keyboard macro. */ +extern char *rl_executing_macro; + +/* Variables to control readline signal handling. */ +/* If non-zero, readline will install its own signal handlers for + SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU. */ +extern int rl_catch_signals; + +/* If non-zero, readline will install a signal handler for SIGWINCH + that also attempts to call any calling application's SIGWINCH signal + handler. Note that the terminal is not cleaned up before the + application's signal handler is called; use rl_cleanup_after_signal() + to do that. */ +extern int rl_catch_sigwinch; + +/* If non-zero, the readline SIGWINCH handler will modify LINES and + COLUMNS in the environment. */ +extern int rl_change_environment; + +/* Completion variables. */ +/* Pointer to the generator function for completion_matches (). + NULL means to use rl_filename_completion_function (), the default + filename completer. */ +extern rl_compentry_func_t *rl_completion_entry_function; + +/* Optional generator for menu completion. Default is + rl_completion_entry_function (rl_filename_completion_function). */ +extern rl_compentry_func_t *rl_menu_completion_entry_function; + +/* If rl_ignore_some_completions_function is non-NULL it is the address + of a function to call after all of the possible matches have been + generated, but before the actual completion is done to the input line. + The function is called with one argument; a NULL terminated array + of (char *). If your function removes any of the elements, they + must be free()'ed. */ +extern rl_compignore_func_t *rl_ignore_some_completions_function; + +/* Pointer to alternative function to create matches. + Function is called with TEXT, START, and END. + START and END are indices in RL_LINE_BUFFER saying what the boundaries + of TEXT are. + If this function exists and returns NULL then call the value of + rl_completion_entry_function to try to match, otherwise use the + array of strings returned. */ +extern rl_completion_func_t *rl_attempted_completion_function; + +/* The basic list of characters that signal a break between words for the + completer routine. The initial contents of this variable is what + breaks words in the shell, i.e. "n\"\\'`@$>". */ +extern const char *rl_basic_word_break_characters; + +/* The list of characters that signal a break between words for + rl_complete_internal. The default list is the contents of + rl_basic_word_break_characters. */ +extern /*const*/ char *rl_completer_word_break_characters; + +/* Hook function to allow an application to set the completion word + break characters before readline breaks up the line. Allows + position-dependent word break characters. */ +extern rl_cpvfunc_t *rl_completion_word_break_hook; + +/* List of characters which can be used to quote a substring of the line. + Completion occurs on the entire substring, and within the substring + rl_completer_word_break_characters are treated as any other character, + unless they also appear within this list. */ +extern const char *rl_completer_quote_characters; + +/* List of quote characters which cause a word break. */ +extern const char *rl_basic_quote_characters; + +/* List of characters that need to be quoted in filenames by the completer. */ +extern const char *rl_filename_quote_characters; + +/* List of characters that are word break characters, but should be left + in TEXT when it is passed to the completion function. The shell uses + this to help determine what kind of completing to do. */ +extern const char *rl_special_prefixes; + +/* If non-zero, then this is the address of a function to call when + completing on a directory name. The function is called with + the address of a string (the current directory name) as an arg. It + changes what is displayed when the possible completions are printed + or inserted. The directory completion hook should perform + any necessary dequoting. This function should return 1 if it modifies + the directory name pointer passed as an argument. If the directory + completion hook returns 0, it should not modify the directory name + pointer passed as an argument. */ +extern rl_icppfunc_t *rl_directory_completion_hook; + +/* If non-zero, this is the address of a function to call when completing + a directory name. This function takes the address of the directory name + to be modified as an argument. Unlike rl_directory_completion_hook, it + only modifies the directory name used in opendir(2), not what is displayed + when the possible completions are printed or inserted. If set, it takes + precedence over rl_directory_completion_hook. The directory rewrite + hook should perform any necessary dequoting. This function has the same + return value properties as the directory_completion_hook. + + I'm not happy with how this works yet, so it's undocumented. I'm trying + it in bash to see how well it goes. */ +extern rl_icppfunc_t *rl_directory_rewrite_hook; + +/* If non-zero, this is the address of a function for the completer to call + before deciding which character to append to a completed name. It should + modify the directory name passed as an argument if appropriate, and return + non-zero if it modifies the name. This should not worry about dequoting + the filename; that has already happened by the time it gets here. */ +extern rl_icppfunc_t *rl_filename_stat_hook; + +/* If non-zero, this is the address of a function to call when reading + directory entries from the filesystem for completion and comparing + them to the partial word to be completed. The function should + either return its first argument (if no conversion takes place) or + newly-allocated memory. This can, for instance, convert filenames + between character sets for comparison against what's typed at the + keyboard. The returned value is what is added to the list of + matches. The second argument is the length of the filename to be + converted. */ +extern rl_dequote_func_t *rl_filename_rewrite_hook; + +/* Backwards compatibility with previous versions of readline. */ +#define rl_symbolic_link_hook rl_directory_completion_hook + +/* If non-zero, then this is the address of a function to call when + completing a word would normally display the list of possible matches. + This function is called instead of actually doing the display. + It takes three arguments: (char **matches, int num_matches, int max_length) + where MATCHES is the array of strings that matched, NUM_MATCHES is the + number of strings in that array, and MAX_LENGTH is the length of the + longest string in that array. */ +extern rl_compdisp_func_t *rl_completion_display_matches_hook; + +/* Non-zero means that the results of the matches are to be treated + as filenames. This is ALWAYS zero on entry, and can only be changed + within a completion entry finder function. */ +extern int rl_filename_completion_desired; + +/* Non-zero means that the results of the matches are to be quoted using + double quotes (or an application-specific quoting mechanism) if the + filename contains any characters in rl_word_break_chars. This is + ALWAYS non-zero on entry, and can only be changed within a completion + entry finder function. */ +extern int rl_filename_quoting_desired; + +/* Set to a function to quote a filename in an application-specific fashion. + Called with the text to quote, the type of match found (single or multiple) + and a pointer to the quoting character to be used, which the function can + reset if desired. */ +extern rl_quote_func_t *rl_filename_quoting_function; + +/* Function to call to remove quoting characters from a filename. Called + before completion is attempted, so the embedded quotes do not interfere + with matching names in the file system. */ +extern rl_dequote_func_t *rl_filename_dequoting_function; + +/* Function to call to decide whether or not a word break character is + quoted. If a character is quoted, it does not break words for the + completer. */ +extern rl_linebuf_func_t *rl_char_is_quoted_p; + +/* Non-zero means to suppress normal filename completion after the + user-specified completion function has been called. */ +extern int rl_attempted_completion_over; + +/* Set to a character describing the type of completion being attempted by + rl_complete_internal; available for use by application completion + functions. */ +extern int rl_completion_type; + +/* Set to the last key used to invoke one of the completion functions */ +extern int rl_completion_invoking_key; + +/* Up to this many items will be displayed in response to a + possible-completions call. After that, we ask the user if she + is sure she wants to see them all. The default value is 100. */ +extern int rl_completion_query_items; + +/* Character appended to completed words when at the end of the line. The + default is a space. Nothing is added if this is '\0'. */ +extern int rl_completion_append_character; + +/* If set to non-zero by an application completion function, + rl_completion_append_character will not be appended. */ +extern int rl_completion_suppress_append; + +/* Set to any quote character readline thinks it finds before any application + completion function is called. */ +extern int rl_completion_quote_character; + +/* Set to a non-zero value if readline found quoting anywhere in the word to + be completed; set before any application completion function is called. */ +extern int rl_completion_found_quote; + +/* If non-zero, the completion functions don't append any closing quote. + This is set to 0 by rl_complete_internal and may be changed by an + application-specific completion function. */ +extern int rl_completion_suppress_quote; + +/* If non-zero, readline will sort the completion matches. On by default. */ +extern int rl_sort_completion_matches; + +/* If non-zero, a slash will be appended to completed filenames that are + symbolic links to directory names, subject to the value of the + mark-directories variable (which is user-settable). This exists so + that application completion functions can override the user's preference + (set via the mark-symlinked-directories variable) if appropriate. + It's set to the value of _rl_complete_mark_symlink_dirs in + rl_complete_internal before any application-specific completion + function is called, so without that function doing anything, the user's + preferences are honored. */ +extern int rl_completion_mark_symlink_dirs; + +/* If non-zero, then disallow duplicates in the matches. */ +extern int rl_ignore_completion_duplicates; + +/* If this is non-zero, completion is (temporarily) inhibited, and the + completion character will be inserted as any other. */ +extern int rl_inhibit_completion; + +/* Applications can set this to non-zero to have readline's signal handlers + installed during the entire duration of reading a complete line, as in + readline-6.2. This should be used with care, because it can result in + readline receiving signals and not handling them until it's called again + via rl_callback_read_char, thereby stealing them from the application. + By default, signal handlers are only active while readline is active. */ +extern int rl_persistent_signal_handlers; + +/* Input error; can be returned by (*rl_getc_function) if readline is reading + a top-level command (RL_ISSTATE (RL_STATE_READCMD)). */ +#define READERR (-2) + +/* Definitions available for use by readline clients. */ +#define RL_PROMPT_START_IGNORE '\001' +#define RL_PROMPT_END_IGNORE '\002' + +/* Possible values for do_replace argument to rl_filename_quoting_function, + called by rl_complete_internal. */ +#define NO_MATCH 0 +#define SINGLE_MATCH 1 +#define MULT_MATCH 2 + +/* Possible state values for rl_readline_state */ +#define RL_STATE_NONE 0x000000 /* no state; before first call */ + +#define RL_STATE_INITIALIZING 0x0000001 /* initializing */ +#define RL_STATE_INITIALIZED 0x0000002 /* initialization done */ +#define RL_STATE_TERMPREPPED 0x0000004 /* terminal is prepped */ +#define RL_STATE_READCMD 0x0000008 /* reading a command key */ +#define RL_STATE_METANEXT 0x0000010 /* reading input after ESC */ +#define RL_STATE_DISPATCHING 0x0000020 /* dispatching to a command */ +#define RL_STATE_MOREINPUT 0x0000040 /* reading more input in a command function */ +#define RL_STATE_ISEARCH 0x0000080 /* doing incremental search */ +#define RL_STATE_NSEARCH 0x0000100 /* doing non-inc search */ +#define RL_STATE_SEARCH 0x0000200 /* doing a history search */ +#define RL_STATE_NUMERICARG 0x0000400 /* reading numeric argument */ +#define RL_STATE_MACROINPUT 0x0000800 /* getting input from a macro */ +#define RL_STATE_MACRODEF 0x0001000 /* defining keyboard macro */ +#define RL_STATE_OVERWRITE 0x0002000 /* overwrite mode */ +#define RL_STATE_COMPLETING 0x0004000 /* doing completion */ +#define RL_STATE_SIGHANDLER 0x0008000 /* in readline sighandler */ +#define RL_STATE_UNDOING 0x0010000 /* doing an undo */ +#define RL_STATE_INPUTPENDING 0x0020000 /* rl_execute_next called */ +#define RL_STATE_TTYCSAVED 0x0040000 /* tty special chars saved */ +#define RL_STATE_CALLBACK 0x0080000 /* using the callback interface */ +#define RL_STATE_VIMOTION 0x0100000 /* reading vi motion arg */ +#define RL_STATE_MULTIKEY 0x0200000 /* reading multiple-key command */ +#define RL_STATE_VICMDONCE 0x0400000 /* entered vi command mode at least once */ +#define RL_STATE_CHARSEARCH 0x0800000 /* vi mode char search */ +#define RL_STATE_REDISPLAYING 0x1000000 /* updating terminal display */ + +#define RL_STATE_DONE 0x2000000 /* done; accepted line */ + +#define RL_SETSTATE(x) (rl_readline_state |= (x)) +#define RL_UNSETSTATE(x) (rl_readline_state &= ~(x)) +#define RL_ISSTATE(x) (rl_readline_state & (x)) + +struct readline_state { + /* line state */ + int point; + int end; + int mark; + int buflen; + char *buffer; + UNDO_LIST *ul; + char *prompt; + + /* global state */ + int rlstate; + int done; + Keymap kmap; + + /* input state */ + rl_command_func_t *lastfunc; + int insmode; + int edmode; + char *kseq; + int kseqlen; + + int pendingin; + FILE *inf; + FILE *outf; + char *macro; + + /* signal state */ + int catchsigs; + int catchsigwinch; + + /* search state */ + + /* completion state */ + rl_compentry_func_t *entryfunc; + rl_compentry_func_t *menuentryfunc; + rl_compignore_func_t *ignorefunc; + rl_completion_func_t *attemptfunc; + char *wordbreakchars; + + /* options state */ + + /* hook state */ + + /* reserved for future expansion, so the struct size doesn't change */ + char reserved[64]; +}; + +extern int rl_save_state PARAMS((struct readline_state *)); +extern int rl_restore_state PARAMS((struct readline_state *)); + +#ifdef __cplusplus +} +#endif + +#endif /* _READLINE_H_ */ diff --git a/bash-5.1/lib/readline/rlconf.h b/bash-5.1/lib/readline/rlconf.h new file mode 100644 index 0000000..b6d6a2f --- /dev/null +++ b/bash-5.1/lib/readline/rlconf.h @@ -0,0 +1,79 @@ +/* rlconf.h -- readline configuration definitions */ + +/* Copyright (C) 1992-2015 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (_RLCONF_H_) +#define _RLCONF_H_ + +/* Define this if you want the vi-mode editing available. */ +#define VI_MODE + +/* Define this to get an indication of file type when listing completions. */ +#define VISIBLE_STATS + +/* Define this to get support for colors when listing completions and in + other places. */ +#define COLOR_SUPPORT + +/* This definition is needed by readline.c, rltty.c, and signals.c. */ +/* If on, then readline handles signals in a way that doesn't suck. */ +#define HANDLE_SIGNALS + +/* Ugly but working hack for binding prefix meta. */ +#define PREFIX_META_HACK + +/* The next-to-last-ditch effort file name for a user-specific init file. */ +#define DEFAULT_INPUTRC "~/.inputrc" + +/* The ultimate last-ditch filename for an init file -- system-wide. */ +#define SYS_INPUTRC "/etc/inputrc" + +/* If defined, expand tabs to spaces. */ +#define DISPLAY_TABS + +/* If defined, use the terminal escape sequence to move the cursor forward + over a character when updating the line rather than rewriting it. */ +/* #define HACK_TERMCAP_MOTION */ + +/* The string inserted by the `insert comment' command. */ +#define RL_COMMENT_BEGIN_DEFAULT "#" + +/* Define this if you want code that allows readline to be used in an + X `callback' style. */ +#define READLINE_CALLBACKS + +/* Define this if you want the cursor to indicate insert or overwrite mode. */ +/* #define CURSOR_MODE */ + +/* Define this if you want to enable code that talks to the Linux kernel + tty auditing system. */ +/* #define ENABLE_TTY_AUDIT_SUPPORT */ + +/* Defaults for the various editing mode indicators, inserted at the beginning + of the last (maybe only) line of the prompt if show-mode-in-prompt is on */ +#define RL_EMACS_MODESTR_DEFAULT "@" +#define RL_EMACS_MODESTR_DEFLEN 1 + +#define RL_VI_INS_MODESTR_DEFAULT "(ins)" +#define RL_VI_INS_MODESTR_DEFLEN 5 +#define RL_VI_CMD_MODESTR_DEFAULT "(cmd)" +#define RL_VI_CMD_MODESTR_DEFLEN 5 + +#endif /* _RLCONF_H_ */ diff --git a/bash-5.1/lib/readline/rldefs.h b/bash-5.1/lib/readline/rldefs.h new file mode 100644 index 0000000..dab1beb --- /dev/null +++ b/bash-5.1/lib/readline/rldefs.h @@ -0,0 +1,166 @@ +/* rldefs.h -- an attempt to isolate some of the system-specific defines + for readline. This should be included after any files that define + system-specific constants like _POSIX_VERSION or USG. */ + +/* Copyright (C) 1987-2011 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (_RLDEFS_H_) +#define _RLDEFS_H_ + +#if defined (HAVE_CONFIG_H) +# include "config.h" +#endif + +#include "rlstdc.h" + +#if defined (STRCOLL_BROKEN) +# undef HAVE_STRCOLL +#endif + +#if defined (_POSIX_VERSION) && !defined (TERMIOS_MISSING) +# define TERMIOS_TTY_DRIVER +#else +# if defined (HAVE_TERMIO_H) +# define TERMIO_TTY_DRIVER +# else +# if !defined (__MINGW32__) +# define NEW_TTY_DRIVER +# else +# define NO_TTY_DRIVER +# endif +# endif +#endif + +/* Posix macro to check file in statbuf for directory-ness. + This requires that be included before this test. */ +#if defined (S_IFDIR) && !defined (S_ISDIR) +# define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) +#endif + +/* Decide which flavor of the header file describing the C library + string functions to include and include it. */ + +#if defined (HAVE_STRING_H) +# include +#else /* !HAVE_STRING_H */ +# include +#endif /* !HAVE_STRING_H */ + +#if !defined (strchr) && !defined (__STDC__) +extern char *strchr (), *strrchr (); +#endif /* !strchr && !__STDC__ */ + +#if defined (PREFER_STDARG) +# include +#else +# if defined (PREFER_VARARGS) +# include +# endif +#endif + +#if defined (HAVE_STRCASECMP) +#define _rl_stricmp strcasecmp +#define _rl_strnicmp strncasecmp +#else +extern int _rl_stricmp PARAMS((const char *, const char *)); +extern int _rl_strnicmp PARAMS((const char *, const char *, int)); +#endif + +#if defined (HAVE_STRPBRK) && !defined (HAVE_MULTIBYTE) +# define _rl_strpbrk(a,b) strpbrk((a),(b)) +#else +extern char *_rl_strpbrk PARAMS((const char *, const char *)); +#endif + +#if !defined (emacs_mode) +# define no_mode -1 +# define vi_mode 0 +# define emacs_mode 1 +#endif + +#if !defined (RL_IM_INSERT) +# define RL_IM_INSERT 1 +# define RL_IM_OVERWRITE 0 +# +# define RL_IM_DEFAULT RL_IM_INSERT +#endif + +/* If you cast map[key].function to type (Keymap) on a Cray, + the compiler takes the value of map[key].function and + divides it by 4 to convert between pointer types (pointers + to functions and pointers to structs are different sizes). + This is not what is wanted. */ +#if defined (CRAY) +# define FUNCTION_TO_KEYMAP(map, key) (Keymap)((int)map[key].function) +# define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)((int)(data)) +#else +# define FUNCTION_TO_KEYMAP(map, key) (Keymap)(map[key].function) +# define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)(data) +#endif + +#ifndef savestring +#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x)) +#endif + +/* Possible values for _rl_bell_preference. */ +#define NO_BELL 0 +#define AUDIBLE_BELL 1 +#define VISIBLE_BELL 2 + +/* Definitions used when searching the line for characters. */ +/* NOTE: it is necessary that opposite directions are inverses */ +#define FTO 1 /* forward to */ +#define BTO -1 /* backward to */ +#define FFIND 2 /* forward find */ +#define BFIND -2 /* backward find */ + +/* Possible values for the found_quote flags word used by the completion + functions. It says what kind of (shell-like) quoting we found anywhere + in the line. */ +#define RL_QF_SINGLE_QUOTE 0x01 +#define RL_QF_DOUBLE_QUOTE 0x02 +#define RL_QF_BACKSLASH 0x04 +#define RL_QF_OTHER_QUOTE 0x08 + +/* Default readline line buffer length. */ +#define DEFAULT_BUFFER_SIZE 256 + +#if !defined (STREQ) +#define STREQ(a, b) (((a)[0] == (b)[0]) && (strcmp ((a), (b)) == 0)) +#define STREQN(a, b, n) (((n) == 0) ? (1) \ + : ((a)[0] == (b)[0]) && (strncmp ((a), (b), (n)) == 0)) +#endif + +#if !defined (RL_STRLEN) +# define RL_STRLEN(s) (((s) && (s)[0]) ? ((s)[1] ? ((s)[2] ? strlen(s) : 2) : 1) : 0) +#endif + +#if !defined (FREE) +# define FREE(x) if (x) free (x) +#endif + +#if !defined (SWAP) +# define SWAP(s, e) do { int t; t = s; s = e; e = t; } while (0) +#endif + +/* CONFIGURATION SECTION */ +#include "rlconf.h" + +#endif /* !_RLDEFS_H_ */ diff --git a/bash-5.1/lib/readline/rlmbutil.h b/bash-5.1/lib/readline/rlmbutil.h new file mode 100644 index 0000000..4d3e907 --- /dev/null +++ b/bash-5.1/lib/readline/rlmbutil.h @@ -0,0 +1,213 @@ +/* rlmbutil.h -- utility functions for multibyte characters. */ + +/* Copyright (C) 2001-2015 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (_RL_MBUTIL_H_) +#define _RL_MBUTIL_H_ + +#include "rlstdc.h" + +/************************************************/ +/* check multibyte capability for I18N code */ +/************************************************/ + +/* For platforms which support the ISO C amendment 1 functionality we + support user defined character classes. */ + /* Solaris 2.5 has a bug: must be included before . */ +#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) && defined (HAVE_LOCALE_H) +# include +# include +# if defined (HAVE_ISWCTYPE) && \ + defined (HAVE_ISWLOWER) && \ + defined (HAVE_ISWUPPER) && \ + defined (HAVE_MBSRTOWCS) && \ + defined (HAVE_MBRTOWC) && \ + defined (HAVE_MBRLEN) && \ + defined (HAVE_TOWLOWER) && \ + defined (HAVE_TOWUPPER) && \ + defined (HAVE_WCHAR_T) && \ + defined (HAVE_WCWIDTH) + /* 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 on systems that claim to be able to + handle multibyte chars (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 */ +/************************************************/ + +/* + * Flags for _rl_find_prev_mbchar and _rl_find_next_mbchar: + * + * MB_FIND_ANY find any multibyte character + * MB_FIND_NONZERO find a non-zero-width multibyte character + */ + +#define MB_FIND_ANY 0x00 +#define MB_FIND_NONZERO 0x01 + +extern int _rl_find_prev_mbchar PARAMS((char *, int, int)); +extern int _rl_find_next_mbchar PARAMS((char *, int, int, int)); + +#ifdef HANDLE_MULTIBYTE + +extern int _rl_compare_chars PARAMS((char *, int, mbstate_t *, char *, int, mbstate_t *)); +extern int _rl_get_char_len PARAMS((char *, mbstate_t *)); +extern int _rl_adjust_point PARAMS((char *, int, mbstate_t *)); + +extern int _rl_read_mbchar PARAMS((char *, int)); +extern int _rl_read_mbstring PARAMS((int, char *, int)); + +extern int _rl_is_mbchar_matched PARAMS((char *, int, int, char *, int)); + +extern wchar_t _rl_char_value PARAMS((char *, int)); +extern int _rl_walphabetic PARAMS((wchar_t)); + +#define _rl_to_wupper(wc) (iswlower (wc) ? towupper (wc) : (wc)) +#define _rl_to_wlower(wc) (iswupper (wc) ? towlower (wc) : (wc)) + +#define MB_NEXTCHAR(b,s,c,f) \ + ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) \ + ? _rl_find_next_mbchar ((b), (s), (c), (f)) \ + : ((s) + (c))) +#define MB_PREVCHAR(b,s,f) \ + ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) \ + ? _rl_find_prev_mbchar ((b), (s), (f)) \ + : ((s) - 1)) + +#define MB_INVALIDCH(x) ((x) == (size_t)-1 || (x) == (size_t)-2) +#define MB_NULLWCH(x) ((x) == 0) + +/* Try and shortcut the printable ascii characters to cut down the number of + calls to a libc wcwidth() */ +static inline int +_rl_wcwidth (wc) + wchar_t wc; +{ + switch (wc) + { + case ' ': case '!': case '"': case '#': case '%': + case '&': case '\'': case '(': case ')': case '*': + case '+': case ',': case '-': case '.': case '/': + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case ':': case ';': case '<': case '=': case '>': + case '?': + case 'A': case 'B': case 'C': case 'D': case 'E': + case 'F': case 'G': case 'H': case 'I': case 'J': + case 'K': case 'L': case 'M': case 'N': case 'O': + case 'P': case 'Q': case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': case 'Y': + case 'Z': + case '[': case '\\': case ']': case '^': case '_': + case 'a': case 'b': case 'c': case 'd': case 'e': + case 'f': case 'g': case 'h': case 'i': case 'j': + case 'k': case 'l': case 'm': case 'n': case 'o': + case 'p': case 'q': case 'r': case 's': case 't': + case 'u': case 'v': case 'w': case 'x': case 'y': + case 'z': case '{': case '|': case '}': case '~': + return 1; + default: + return wcwidth (wc); + } +} + +/* Unicode combining characters range from U+0300 to U+036F */ +#define UNICODE_COMBINING_CHAR(x) ((x) >= 768 && (x) <= 879) + +#if defined (WCWIDTH_BROKEN) +# define WCWIDTH(wc) ((_rl_utf8locale && UNICODE_COMBINING_CHAR(wc)) ? 0 : _rl_wcwidth(wc)) +#else +# define WCWIDTH(wc) _rl_wcwidth(wc) +#endif + +#if defined (WCWIDTH_BROKEN) +# define IS_COMBINING_CHAR(x) (WCWIDTH(x) == 0 && iswcntrl(x) == 0) +#else +# define IS_COMBINING_CHAR(x) (WCWIDTH(x) == 0) +#endif + +#define UTF8_SINGLEBYTE(c) (((c) & 0x80) == 0) +#define UTF8_MBFIRSTCHAR(c) (((c) & 0xc0) == 0xc0) +#define UTF8_MBCHAR(c) (((c) & 0xc0) == 0x80) + +#else /* !HANDLE_MULTIBYTE */ + +#undef MB_LEN_MAX +#undef MB_CUR_MAX + +#define MB_LEN_MAX 1 +#define MB_CUR_MAX 1 + +#define _rl_find_prev_mbchar(b, i, f) (((i) == 0) ? (i) : ((i) - 1)) +#define _rl_find_next_mbchar(b, i1, i2, f) ((i1) + (i2)) + +#define _rl_char_value(buf,ind) ((buf)[(ind)]) + +#define _rl_walphabetic(c) (rl_alphabetic (c)) + +#define _rl_to_wupper(c) (_rl_to_upper (c)) +#define _rl_to_wlower(c) (_rl_to_lower (c)) + +#define MB_NEXTCHAR(b,s,c,f) ((s) + (c)) +#define MB_PREVCHAR(b,s,f) ((s) - 1) + +#define MB_INVALIDCH(x) (0) +#define MB_NULLWCH(x) (0) + +#define UTF8_SINGLEBYTE(c) (1) + +#if !defined (HAVE_WCHAR_T) && !defined (wchar_t) +# define wchar_t int +#endif + +#endif /* !HANDLE_MULTIBYTE */ + +extern int rl_byte_oriented; + +#endif /* _RL_MBUTIL_H_ */ diff --git a/bash-5.1/lib/readline/rlprivate.h b/bash-5.1/lib/readline/rlprivate.h new file mode 100644 index 0000000..23ab2d8 --- /dev/null +++ b/bash-5.1/lib/readline/rlprivate.h @@ -0,0 +1,605 @@ +/* rlprivate.h -- functions and variables global to the readline library, + but not intended for use by applications. */ + +/* Copyright (C) 1999-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (_RL_PRIVATE_H_) +#define _RL_PRIVATE_H_ + +#include "rlconf.h" /* for VISIBLE_STATS */ +#include "rlstdc.h" +#include "posixjmp.h" /* defines procenv_t */ +#include "rlmbutil.h" /* for HANDLE_MULTIBYTE */ + +/************************************************************************* + * * + * Convenience definitions * + * * + *************************************************************************/ + +#define EMACS_MODE() (rl_editing_mode == emacs_mode) +#define VI_COMMAND_MODE() (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap) +#define VI_INSERT_MODE() (rl_editing_mode == vi_mode && _rl_keymap == vi_insertion_keymap) + +#define RL_CHECK_SIGNALS() \ + do { \ + if (_rl_caught_signal) _rl_signal_handler (_rl_caught_signal); \ + } while (0) + +#define RL_SIG_RECEIVED() (_rl_caught_signal != 0) +#define RL_SIGINT_RECEIVED() (_rl_caught_signal == SIGINT) +#define RL_SIGWINCH_RECEIVED() (_rl_caught_signal == SIGWINCH) + +#define CUSTOM_REDISPLAY_FUNC() (rl_redisplay_function != rl_redisplay) +#define CUSTOM_INPUT_FUNC() (rl_getc_function != rl_getc) + +/************************************************************************* + * * + * Global structs undocumented in texinfo manual and not in readline.h * + * * + *************************************************************************/ +/* search types */ +#define RL_SEARCH_ISEARCH 0x01 /* incremental search */ +#define RL_SEARCH_NSEARCH 0x02 /* non-incremental search */ +#define RL_SEARCH_CSEARCH 0x04 /* intra-line char search */ + +/* search flags */ +#define SF_REVERSE 0x01 +#define SF_FOUND 0x02 +#define SF_FAILED 0x04 +#define SF_CHGKMAP 0x08 +#define SF_PATTERN 0x10 +#define SF_NOCASE 0x20 /* unused so far */ + +typedef struct __rl_search_context +{ + int type; + int sflags; + + char *search_string; + int search_string_index; + int search_string_size; + + char **lines; + char *allocated_line; + int hlen; + int hindex; + + int save_point; + int save_mark; + int save_line; + int last_found_line; + char *prev_line_found; + + UNDO_LIST *save_undo_list; + + Keymap keymap; /* used when dispatching commands in search string */ + Keymap okeymap; /* original keymap */ + + int history_pos; + int direction; + + int prevc; + int lastc; +#if defined (HANDLE_MULTIBYTE) + char mb[MB_LEN_MAX]; + char pmb[MB_LEN_MAX]; +#endif + + char *sline; + int sline_len; + int sline_index; + + char *search_terminators; +} _rl_search_cxt; + +struct _rl_cmd { + Keymap map; + int count; + int key; + rl_command_func_t *func; +}; +extern struct _rl_cmd _rl_pending_command; +extern struct _rl_cmd *_rl_command_to_execute; + +/* Callback data for reading numeric arguments */ +#define NUM_SAWMINUS 0x01 +#define NUM_SAWDIGITS 0x02 +#define NUM_READONE 0x04 + +typedef int _rl_arg_cxt; + +/* A context for reading key sequences longer than a single character when + using the callback interface. */ +#define KSEQ_DISPATCHED 0x01 +#define KSEQ_SUBSEQ 0x02 +#define KSEQ_RECURSIVE 0x04 + +typedef struct __rl_keyseq_context +{ + int flags; + int subseq_arg; + int subseq_retval; /* XXX */ + int okey; + + Keymap dmap; + Keymap oldmap; + + struct __rl_keyseq_context *ocxt; + int childval; +} _rl_keyseq_cxt; + +/* vi-mode commands that use result of motion command to define boundaries */ +#define VIM_DELETE 0x01 +#define VIM_CHANGE 0x02 +#define VIM_YANK 0x04 + +/* various states for vi-mode commands that use motion commands. reflects + RL_READLINE_STATE */ +#define VMSTATE_READ 0x01 +#define VMSTATE_NUMARG 0x02 + +typedef struct __rl_vimotion_context +{ + int op; + int state; + int flags; /* reserved */ + _rl_arg_cxt ncxt; + int numeric_arg; + int start, end; /* rl_point, rl_end */ + int key, motion; /* initial key, motion command */ +} _rl_vimotion_cxt; + +/* fill in more as needed */ +/* `Generic' callback data and functions */ +typedef struct __rl_callback_generic_arg +{ + int count; + int i1, i2; + /* add here as needed */ +} _rl_callback_generic_arg; + +typedef int _rl_callback_func_t PARAMS((_rl_callback_generic_arg *)); + +typedef void _rl_sigcleanup_func_t PARAMS((int, void *)); + +/************************************************************************* + * * + * Global functions undocumented in texinfo manual and not in readline.h * + * * + *************************************************************************/ + +/************************************************************************* + * * + * Global variables undocumented in texinfo manual and not in readline.h * + * * + *************************************************************************/ + +/* complete.c */ +extern int rl_complete_with_tilde_expansion; +#if defined (VISIBLE_STATS) +extern int rl_visible_stats; +#endif /* VISIBLE_STATS */ +#if defined (COLOR_SUPPORT) +extern int _rl_colored_stats; +extern int _rl_colored_completion_prefix; +#endif + +/* readline.c */ +extern int rl_line_buffer_len; +extern int rl_arg_sign; +extern int rl_visible_prompt_length; +extern int rl_byte_oriented; + +/* display.c */ +extern int rl_display_fixed; + +/* parens.c */ +extern int rl_blink_matching_paren; + +/************************************************************************* + * * + * Global functions and variables unused and undocumented * + * * + *************************************************************************/ + +/* kill.c */ +extern int rl_set_retained_kills PARAMS((int)); + +/* terminal.c */ +extern void _rl_set_screen_size PARAMS((int, int)); + +/* undo.c */ +extern int _rl_fix_last_undo_of_type PARAMS((int, int, int)); + +/* util.c */ +extern char *_rl_savestring PARAMS((const char *)); + +/************************************************************************* + * * + * Functions and variables private to the readline library * + * * + *************************************************************************/ + +/* NOTE: Functions and variables prefixed with `_rl_' are + pseudo-global: they are global so they can be shared + between files in the readline library, but are not intended + to be visible to readline callers. */ + +/************************************************************************* + * Undocumented private functions * + *************************************************************************/ + +#if defined(READLINE_CALLBACKS) + +/* readline.c */ +extern void readline_internal_setup PARAMS((void)); +extern char *readline_internal_teardown PARAMS((int)); +extern int readline_internal_char PARAMS((void)); + +extern _rl_keyseq_cxt *_rl_keyseq_cxt_alloc PARAMS((void)); +extern void _rl_keyseq_cxt_dispose PARAMS((_rl_keyseq_cxt *)); +extern void _rl_keyseq_chain_dispose PARAMS((void)); + +extern int _rl_dispatch_callback PARAMS((_rl_keyseq_cxt *)); + +/* callback.c */ +extern _rl_callback_generic_arg *_rl_callback_data_alloc PARAMS((int)); +extern void _rl_callback_data_dispose PARAMS((_rl_callback_generic_arg *)); + +#endif /* READLINE_CALLBACKS */ + +/* bind.c */ +extern char *_rl_untranslate_macro_value PARAMS((char *, int)); + +/* complete.c */ +extern void _rl_reset_completion_state PARAMS((void)); +extern char _rl_find_completion_word PARAMS((int *, int *)); +extern void _rl_free_match_list PARAMS((char **)); + +/* display.c */ +extern char *_rl_strip_prompt PARAMS((char *)); +extern void _rl_reset_prompt PARAMS((void)); +extern void _rl_move_vert PARAMS((int)); +extern void _rl_save_prompt PARAMS((void)); +extern void _rl_restore_prompt PARAMS((void)); +extern char *_rl_make_prompt_for_search PARAMS((int)); +extern void _rl_erase_at_end_of_line PARAMS((int)); +extern void _rl_clear_to_eol PARAMS((int)); +extern void _rl_clear_screen PARAMS((int)); +extern void _rl_update_final PARAMS((void)); +extern void _rl_optimize_redisplay PARAMS((void)); +extern void _rl_redisplay_after_sigwinch PARAMS((void)); +extern void _rl_clean_up_for_exit PARAMS((void)); +extern void _rl_erase_entire_line PARAMS((void)); +extern int _rl_current_display_line PARAMS((void)); +extern void _rl_refresh_line PARAMS((void)); + +/* input.c */ +extern int _rl_any_typein PARAMS((void)); +extern int _rl_input_available PARAMS((void)); +extern int _rl_nchars_available PARAMS((void)); +extern int _rl_input_queued PARAMS((int)); +extern void _rl_insert_typein PARAMS((int)); +extern int _rl_unget_char PARAMS((int)); +extern int _rl_pushed_input_available PARAMS((void)); + +/* isearch.c */ +extern _rl_search_cxt *_rl_scxt_alloc PARAMS((int, int)); +extern void _rl_scxt_dispose PARAMS((_rl_search_cxt *, int)); + +extern int _rl_isearch_dispatch PARAMS((_rl_search_cxt *, int)); +extern int _rl_isearch_callback PARAMS((_rl_search_cxt *)); +extern int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int)); + +extern int _rl_search_getchar PARAMS((_rl_search_cxt *)); + +/* kill.c */ +#ifndef BRACKETED_PASTE_DEFAULT +# define BRACKETED_PASTE_DEFAULT 1 /* XXX - for now */ +#endif + +#define BRACK_PASTE_PREF "\033[200~" +#define BRACK_PASTE_SUFF "\033[201~" + +#define BRACK_PASTE_LAST '~' +#define BRACK_PASTE_SLEN 6 + +#define BRACK_PASTE_INIT "\033[?2004h" +#define BRACK_PASTE_FINI "\033[?2004l\r" + +extern int _rl_read_bracketed_paste_prefix PARAMS((int)); +extern char *_rl_bracketed_text PARAMS((size_t *)); +extern int _rl_bracketed_read_key PARAMS((void)); +extern int _rl_bracketed_read_mbstring PARAMS((char *, int)); + +/* macro.c */ +extern void _rl_with_macro_input PARAMS((char *)); +extern int _rl_peek_macro_key PARAMS((void)); +extern int _rl_next_macro_key PARAMS((void)); +extern int _rl_prev_macro_key PARAMS((void)); +extern void _rl_push_executing_macro PARAMS((void)); +extern void _rl_pop_executing_macro PARAMS((void)); +extern void _rl_add_macro_char PARAMS((int)); +extern void _rl_kill_kbd_macro PARAMS((void)); + +/* misc.c */ +extern int _rl_arg_overflow PARAMS((void)); +extern void _rl_arg_init PARAMS((void)); +extern int _rl_arg_getchar PARAMS((void)); +extern int _rl_arg_callback PARAMS((_rl_arg_cxt)); +extern void _rl_reset_argument PARAMS((void)); + +extern void _rl_start_using_history PARAMS((void)); +extern int _rl_free_saved_history_line PARAMS((void)); +extern void _rl_set_insert_mode PARAMS((int, int)); + +extern void _rl_revert_previous_lines PARAMS((void)); +extern void _rl_revert_all_lines PARAMS((void)); + +/* nls.c */ +extern char *_rl_init_locale PARAMS((void)); +extern int _rl_init_eightbit PARAMS((void)); + +/* parens.c */ +extern void _rl_enable_paren_matching PARAMS((int)); + +/* readline.c */ +extern void _rl_init_line_state PARAMS((void)); +extern void _rl_set_the_line PARAMS((void)); +extern int _rl_dispatch PARAMS((int, Keymap)); +extern int _rl_dispatch_subseq PARAMS((int, Keymap, int)); +extern void _rl_internal_char_cleanup PARAMS((void)); + +extern void _rl_init_executing_keyseq PARAMS((void)); +extern void _rl_term_executing_keyseq PARAMS((void)); +extern void _rl_end_executing_keyseq PARAMS((void)); +extern void _rl_add_executing_keyseq PARAMS((int)); + +/* rltty.c */ +extern int _rl_disable_tty_signals PARAMS((void)); +extern int _rl_restore_tty_signals PARAMS((void)); + +/* search.c */ +extern int _rl_nsearch_callback PARAMS((_rl_search_cxt *)); +extern int _rl_nsearch_cleanup PARAMS((_rl_search_cxt *, int)); + +/* signals.c */ +extern void _rl_signal_handler PARAMS((int)); + +extern void _rl_block_sigint PARAMS((void)); +extern void _rl_release_sigint PARAMS((void)); +extern void _rl_block_sigwinch PARAMS((void)); +extern void _rl_release_sigwinch PARAMS((void)); + +/* terminal.c */ +extern void _rl_get_screen_size PARAMS((int, int)); +extern void _rl_sigwinch_resize_terminal PARAMS((void)); +extern int _rl_init_terminal_io PARAMS((const char *)); +#ifdef _MINIX +extern void _rl_output_character_function PARAMS((int)); +#else +extern int _rl_output_character_function PARAMS((int)); +#endif +extern void _rl_cr PARAMS((void)); +extern void _rl_output_some_chars PARAMS((const char *, int)); +extern int _rl_backspace PARAMS((int)); +extern void _rl_enable_meta_key PARAMS((void)); +extern void _rl_disable_meta_key PARAMS((void)); +extern void _rl_control_keypad PARAMS((int)); +extern void _rl_set_cursor PARAMS((int, int)); +extern void _rl_standout_on PARAMS((void)); +extern void _rl_standout_off PARAMS((void)); + +/* text.c */ +extern void _rl_fix_point PARAMS((int)); +extern void _rl_fix_mark PARAMS((void)); +extern int _rl_replace_text PARAMS((const char *, int, int)); +extern int _rl_forward_char_internal PARAMS((int)); +extern int _rl_backward_char_internal PARAMS((int)); +extern int _rl_insert_char PARAMS((int, int)); +extern int _rl_overwrite_char PARAMS((int, int)); +extern int _rl_overwrite_rubout PARAMS((int, int)); +extern int _rl_rubout_char PARAMS((int, int)); +#if defined (HANDLE_MULTIBYTE) +extern int _rl_char_search_internal PARAMS((int, int, char *, int)); +#else +extern int _rl_char_search_internal PARAMS((int, int, int)); +#endif +extern int _rl_set_mark_at_pos PARAMS((int)); + +/* undo.c */ +extern UNDO_LIST *_rl_copy_undo_entry PARAMS((UNDO_LIST *)); +extern UNDO_LIST *_rl_copy_undo_list PARAMS((UNDO_LIST *)); +extern void _rl_free_undo_list PARAMS((UNDO_LIST *)); + +/* util.c */ +#if defined (USE_VARARGS) && defined (PREFER_STDARG) +extern void _rl_ttymsg (const char *, ...) __attribute__((__format__ (printf, 1, 2))); +extern void _rl_errmsg (const char *, ...) __attribute__((__format__ (printf, 1, 2))); +extern void _rl_trace (const char *, ...) __attribute__((__format__ (printf, 1, 2))); +#else +extern void _rl_ttymsg (); +extern void _rl_errmsg (); +extern void _rl_trace (); +#endif +extern void _rl_audit_tty PARAMS((char *)); + +extern int _rl_tropen PARAMS((void)); + +extern int _rl_abort_internal PARAMS((void)); +extern int _rl_null_function PARAMS((int, int)); +extern char *_rl_strindex PARAMS((const char *, const char *)); +extern int _rl_qsort_string_compare PARAMS((char **, char **)); +extern int (_rl_uppercase_p) PARAMS((int)); +extern int (_rl_lowercase_p) PARAMS((int)); +extern int (_rl_pure_alphabetic) PARAMS((int)); +extern int (_rl_digit_p) PARAMS((int)); +extern int (_rl_to_lower) PARAMS((int)); +extern int (_rl_to_upper) PARAMS((int)); +extern int (_rl_digit_value) PARAMS((int)); + +/* vi_mode.c */ +extern void _rl_vi_initialize_line PARAMS((void)); +extern void _rl_vi_reset_last PARAMS((void)); +extern void _rl_vi_set_last PARAMS((int, int, int)); +extern int _rl_vi_textmod_command PARAMS((int)); +extern int _rl_vi_motion_command PARAMS((int)); +extern void _rl_vi_done_inserting PARAMS((void)); +extern int _rl_vi_domove_callback PARAMS((_rl_vimotion_cxt *)); +extern int _rl_vi_domove_motion_cleanup PARAMS((int, _rl_vimotion_cxt *)); + +/************************************************************************* + * Undocumented private variables * + *************************************************************************/ + +/* bind.c */ +extern const char * const _rl_possible_control_prefixes[]; +extern const char * const _rl_possible_meta_prefixes[]; + +/* callback.c */ +extern _rl_callback_func_t *_rl_callback_func; +extern _rl_callback_generic_arg *_rl_callback_data; + +/* complete.c */ +extern int _rl_complete_show_all; +extern int _rl_complete_show_unmodified; +extern int _rl_complete_mark_directories; +extern int _rl_complete_mark_symlink_dirs; +extern int _rl_completion_prefix_display_length; +extern int _rl_completion_columns; +extern int _rl_print_completions_horizontally; +extern int _rl_completion_case_fold; +extern int _rl_completion_case_map; +extern int _rl_match_hidden_files; +extern int _rl_page_completions; +extern int _rl_skip_completed_text; +extern int _rl_menu_complete_prefix_first; + +/* display.c */ +extern int _rl_vis_botlin; +extern int _rl_last_c_pos; +extern int _rl_suppress_redisplay; +extern int _rl_want_redisplay; + +extern char *_rl_emacs_mode_str; +extern int _rl_emacs_modestr_len; +extern char *_rl_vi_ins_mode_str; +extern int _rl_vi_ins_modestr_len; +extern char *_rl_vi_cmd_mode_str; +extern int _rl_vi_cmd_modestr_len; + +/* isearch.c */ +extern char *_rl_isearch_terminators; + +extern _rl_search_cxt *_rl_iscxt; + +/* macro.c */ +extern char *_rl_executing_macro; + +/* misc.c */ +extern int _rl_history_preserve_point; +extern int _rl_history_saved_point; + +extern _rl_arg_cxt _rl_argcxt; + +/* nls.c */ +extern int _rl_utf8locale; + +/* readline.c */ +extern int _rl_echoing_p; +extern int _rl_horizontal_scroll_mode; +extern int _rl_mark_modified_lines; +extern int _rl_bell_preference; +extern int _rl_meta_flag; +extern int _rl_convert_meta_chars_to_ascii; +extern int _rl_output_meta_chars; +extern int _rl_bind_stty_chars; +extern int _rl_revert_all_at_newline; +extern int _rl_echo_control_chars; +extern int _rl_show_mode_in_prompt; +extern int _rl_enable_bracketed_paste; +extern int _rl_enable_active_region; +extern char *_rl_comment_begin; +extern unsigned char _rl_parsing_conditionalized_out; +extern Keymap _rl_keymap; +extern FILE *_rl_in_stream; +extern FILE *_rl_out_stream; +extern int _rl_last_command_was_kill; +extern int _rl_eof_char; +extern int _rl_eof_found; +extern procenv_t _rl_top_level; +extern _rl_keyseq_cxt *_rl_kscxt; +extern int _rl_keyseq_timeout; + +extern int _rl_executing_keyseq_size; + +extern rl_hook_func_t *_rl_internal_startup_hook; + +/* search.c */ +extern _rl_search_cxt *_rl_nscxt; + +/* signals.c */ +extern int volatile _rl_caught_signal; + +extern _rl_sigcleanup_func_t *_rl_sigcleanup; +extern void *_rl_sigcleanarg; + +extern int _rl_echoctl; + +extern int _rl_intr_char; +extern int _rl_quit_char; +extern int _rl_susp_char; + +/* terminal.c */ +extern int _rl_enable_keypad; +extern int _rl_enable_meta; +extern char *_rl_term_clreol; +extern char *_rl_term_clrpag; +extern char *_rl_term_clrscroll; +extern char *_rl_term_im; +extern char *_rl_term_ic; +extern char *_rl_term_ei; +extern char *_rl_term_DC; +extern char *_rl_term_up; +extern char *_rl_term_dc; +extern char *_rl_term_cr; +extern char *_rl_term_IC; +extern char *_rl_term_forward_char; +extern int _rl_screenheight; +extern int _rl_screenwidth; +extern int _rl_screenchars; +extern int _rl_terminal_can_insert; +extern int _rl_term_autowrap; + +/* text.c */ +extern int _rl_optimize_typeahead; +extern int _rl_keep_mark_active; + +/* undo.c */ +extern int _rl_doing_an_undo; +extern int _rl_undo_group_level; + +/* vi_mode.c */ +extern int _rl_vi_last_command; +extern int _rl_vi_redoing; +extern _rl_vimotion_cxt *_rl_vimvcxt; + +#endif /* _RL_PRIVATE_H_ */ diff --git a/bash-5.1/lib/readline/rlshell.h b/bash-5.1/lib/readline/rlshell.h new file mode 100644 index 0000000..3e17d8b --- /dev/null +++ b/bash-5.1/lib/readline/rlshell.h @@ -0,0 +1,33 @@ +/* rlshell.h -- utility functions normally provided by bash. */ + +/* Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (_RL_SHELL_H_) +#define _RL_SHELL_H_ + +#include "rlstdc.h" + +extern char *sh_single_quote PARAMS((char *)); +extern void sh_set_lines_and_columns PARAMS((int, int)); +extern char *sh_get_env_value PARAMS((const char *)); +extern char *sh_get_home_dir PARAMS((void)); +extern int sh_unset_nodelay_mode PARAMS((int)); + +#endif /* _RL_SHELL_H_ */ diff --git a/bash-5.1/lib/readline/rlstdc.h b/bash-5.1/lib/readline/rlstdc.h new file mode 100644 index 0000000..2aaa30b --- /dev/null +++ b/bash-5.1/lib/readline/rlstdc.h @@ -0,0 +1,57 @@ +/* stdc.h -- macros to make source compile on both ANSI C and K&R C compilers. */ + +/* Copyright (C) 1993-2009 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (_RL_STDC_H_) +#define _RL_STDC_H_ + +/* Adapted from BSD /usr/include/sys/cdefs.h. */ + +/* A function can be defined using prototypes and compile on both ANSI C + and traditional C compilers with something like this: + extern char *func PARAMS((char *, char *, int)); */ + +#if !defined (PARAMS) +# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) +# define PARAMS(protos) protos +# else +# define PARAMS(protos) () +# endif +#endif + +#ifndef __attribute__ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) +# define __attribute__(x) +# endif +#endif + +/* Moved from config.h.in because readline.h:rl_message depends on these + defines. */ +#if defined (__STDC__) && defined (HAVE_STDARG_H) +# define PREFER_STDARG +# define USE_VARARGS +#else +# if defined (HAVE_VARARGS_H) +# define PREFER_VARARGS +# define USE_VARARGS +# endif +#endif + +#endif /* !_RL_STDC_H_ */ diff --git a/bash-5.1/lib/readline/rltty.c b/bash-5.1/lib/readline/rltty.c new file mode 100644 index 0000000..d0cd572 --- /dev/null +++ b/bash-5.1/lib/readline/rltty.c @@ -0,0 +1,991 @@ +/* rltty.c -- functions to prepare and restore the terminal for readline's + use. */ + +/* Copyright (C) 1992-2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#include +#include +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#include "rldefs.h" + +#include "rltty.h" +#if defined (HAVE_SYS_IOCTL_H) +# include /* include for declaration of ioctl */ +#endif + +#include "readline.h" +#include "rlprivate.h" + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal; +rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal; + +static void set_winsize PARAMS((int)); + +/* **************************************************************** */ +/* */ +/* Saving and Restoring the TTY */ +/* */ +/* **************************************************************** */ + +/* Non-zero means that the terminal is in a prepped state. There are several + flags that are OR'd in to denote whether or not we have sent various + init strings to the terminal. */ +#define TPX_PREPPED 0x01 +#define TPX_BRACKPASTE 0x02 +#define TPX_METAKEY 0x04 + +static int terminal_prepped; + +static _RL_TTY_CHARS _rl_tty_chars, _rl_last_tty_chars; + +/* If non-zero, means that this process has called tcflow(fd, TCOOFF) + and output is suspended. */ +#if defined (__ksr1__) +static int ksrflow; +#endif + +/* Dummy call to force a backgrounded readline to stop before it tries + to get the tty settings. */ +static void +set_winsize (tty) + int tty; +{ +#if defined (TIOCGWINSZ) + struct winsize w; + + if (ioctl (tty, TIOCGWINSZ, &w) == 0) + (void) ioctl (tty, TIOCSWINSZ, &w); +#endif /* TIOCGWINSZ */ +} + +#if defined (NO_TTY_DRIVER) +/* Nothing */ +#elif defined (NEW_TTY_DRIVER) + +/* Values for the `flags' field of a struct bsdtty. This tells which + elements of the struct bsdtty have been fetched from the system and + are valid. */ +#define SGTTY_SET 0x01 +#define LFLAG_SET 0x02 +#define TCHARS_SET 0x04 +#define LTCHARS_SET 0x08 + +struct bsdtty { + struct sgttyb sgttyb; /* Basic BSD tty driver information. */ + int lflag; /* Local mode flags, like LPASS8. */ +#if defined (TIOCGETC) + struct tchars tchars; /* Terminal special characters, including ^S and ^Q. */ +#endif +#if defined (TIOCGLTC) + struct ltchars ltchars; /* 4.2 BSD editing characters */ +#endif + int flags; /* Bitmap saying which parts of the struct are valid. */ +}; + +#define TIOTYPE struct bsdtty + +static TIOTYPE otio; + +static void save_tty_chars PARAMS((TIOTYPE *)); +static int _get_tty_settings PARAMS((int, TIOTYPE *)); +static int get_tty_settings PARAMS((int, TIOTYPE *)); +static int _set_tty_settings PARAMS((int, TIOTYPE *)); +static int set_tty_settings PARAMS((int, TIOTYPE *)); + +static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *)); + +static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *)); + +static void +save_tty_chars (TIOTYPE *tiop) +{ + _rl_last_tty_chars = _rl_tty_chars; + + if (tiop->flags & SGTTY_SET) + { + _rl_tty_chars.t_erase = tiop->sgttyb.sg_erase; + _rl_tty_chars.t_kill = tiop->sgttyb.sg_kill; + } + + if (tiop->flags & TCHARS_SET) + { + _rl_intr_char = _rl_tty_chars.t_intr = tiop->tchars.t_intrc; + _rl_quit_char = _rl_tty_chars.t_quit = tiop->tchars.t_quitc; + + _rl_tty_chars.t_start = tiop->tchars.t_startc; + _rl_tty_chars.t_stop = tiop->tchars.t_stopc; + _rl_tty_chars.t_eof = tiop->tchars.t_eofc; + _rl_tty_chars.t_eol = '\n'; + _rl_tty_chars.t_eol2 = tiop->tchars.t_brkc; + } + + if (tiop->flags & LTCHARS_SET) + { + _rl_susp_char = _rl_tty_chars.t_susp = tiop->ltchars.t_suspc; + + _rl_tty_chars.t_dsusp = tiop->ltchars.t_dsuspc; + _rl_tty_chars.t_reprint = tiop->ltchars.t_rprntc; + _rl_tty_chars.t_flush = tiop->ltchars.t_flushc; + _rl_tty_chars.t_werase = tiop->ltchars.t_werasc; + _rl_tty_chars.t_lnext = tiop->ltchars.t_lnextc; + } + + _rl_tty_chars.t_status = -1; +} + +static int +get_tty_settings (int tty, TIOTYPE *tiop) +{ + set_winsize (tty); + + tiop->flags = tiop->lflag = 0; + + errno = 0; + if (ioctl (tty, TIOCGETP, &(tiop->sgttyb)) < 0) + return -1; + tiop->flags |= SGTTY_SET; + +#if defined (TIOCLGET) + if (ioctl (tty, TIOCLGET, &(tiop->lflag)) == 0) + tiop->flags |= LFLAG_SET; +#endif + +#if defined (TIOCGETC) + if (ioctl (tty, TIOCGETC, &(tiop->tchars)) == 0) + tiop->flags |= TCHARS_SET; +#endif + +#if defined (TIOCGLTC) + if (ioctl (tty, TIOCGLTC, &(tiop->ltchars)) == 0) + tiop->flags |= LTCHARS_SET; +#endif + + return 0; +} + +static int +set_tty_settings (int tty, TIOTYPE *tiop) +{ + if (tiop->flags & SGTTY_SET) + { + ioctl (tty, TIOCSETN, &(tiop->sgttyb)); + tiop->flags &= ~SGTTY_SET; + } + _rl_echoing_p = 1; + +#if defined (TIOCLSET) + if (tiop->flags & LFLAG_SET) + { + ioctl (tty, TIOCLSET, &(tiop->lflag)); + tiop->flags &= ~LFLAG_SET; + } +#endif + +#if defined (TIOCSETC) + if (tiop->flags & TCHARS_SET) + { + ioctl (tty, TIOCSETC, &(tiop->tchars)); + tiop->flags &= ~TCHARS_SET; + } +#endif + +#if defined (TIOCSLTC) + if (tiop->flags & LTCHARS_SET) + { + ioctl (tty, TIOCSLTC, &(tiop->ltchars)); + tiop->flags &= ~LTCHARS_SET; + } +#endif + + return 0; +} + +static void +prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop) +{ + _rl_echoing_p = (oldtio.sgttyb.sg_flags & ECHO); + _rl_echoctl = (oldtio.sgttyb.sg_flags & ECHOCTL); + + /* Copy the original settings to the structure we're going to use for + our settings. */ + tiop->sgttyb = oldtio.sgttyb; + tiop->lflag = oldtio.lflag; +#if defined (TIOCGETC) + tiop->tchars = oldtio.tchars; +#endif +#if defined (TIOCGLTC) + tiop->ltchars = oldtio.ltchars; +#endif + tiop->flags = oldtio.flags; + + /* First, the basic settings to put us into character-at-a-time, no-echo + input mode. */ + tiop->sgttyb.sg_flags &= ~(ECHO | CRMOD); + tiop->sgttyb.sg_flags |= CBREAK; + + /* If this terminal doesn't care how the 8th bit is used, then we can + use it for the meta-key. If only one of even or odd parity is + specified, then the terminal is using parity, and we cannot. */ +#if !defined (ANYP) +# define ANYP (EVENP | ODDP) +#endif + if (((oldtio.sgttyb.sg_flags & ANYP) == ANYP) || + ((oldtio.sgttyb.sg_flags & ANYP) == 0)) + { + tiop->sgttyb.sg_flags |= ANYP; + + /* Hack on local mode flags if we can. */ +#if defined (TIOCLGET) +# if defined (LPASS8) + tiop->lflag |= LPASS8; +# endif /* LPASS8 */ +#endif /* TIOCLGET */ + } + +#if defined (TIOCGETC) +# if defined (USE_XON_XOFF) + /* Get rid of terminal output start and stop characters. */ + tiop->tchars.t_stopc = -1; /* C-s */ + tiop->tchars.t_startc = -1; /* C-q */ + + /* If there is an XON character, bind it to restart the output. */ + if (oldtio.tchars.t_startc != -1) + rl_bind_key (oldtio.tchars.t_startc, rl_restart_output); +# endif /* USE_XON_XOFF */ + + /* If there is an EOF char, bind _rl_eof_char to it. */ + if (oldtio.tchars.t_eofc != -1) + _rl_eof_char = oldtio.tchars.t_eofc; + +# if defined (NO_KILL_INTR) + /* Get rid of terminal-generated SIGQUIT and SIGINT. */ + tiop->tchars.t_quitc = -1; /* C-\ */ + tiop->tchars.t_intrc = -1; /* C-c */ +# endif /* NO_KILL_INTR */ +#endif /* TIOCGETC */ + +#if defined (TIOCGLTC) + /* Make the interrupt keys go away. Just enough to make people happy. */ + tiop->ltchars.t_dsuspc = -1; /* C-y */ + tiop->ltchars.t_lnextc = -1; /* C-v */ +#endif /* TIOCGLTC */ +} + +#else /* !defined (NEW_TTY_DRIVER) */ + +#if !defined (VMIN) +# define VMIN VEOF +#endif + +#if !defined (VTIME) +# define VTIME VEOL +#endif + +#if defined (TERMIOS_TTY_DRIVER) +# define TIOTYPE struct termios +# define DRAIN_OUTPUT(fd) tcdrain (fd) +# define GETATTR(tty, tiop) (tcgetattr (tty, tiop)) +# ifdef M_UNIX +# define SETATTR(tty, tiop) (tcsetattr (tty, TCSANOW, tiop)) +# else +# define SETATTR(tty, tiop) (tcsetattr (tty, TCSADRAIN, tiop)) +# endif /* !M_UNIX */ +#else +# define TIOTYPE struct termio +# define DRAIN_OUTPUT(fd) +# define GETATTR(tty, tiop) (ioctl (tty, TCGETA, tiop)) +# define SETATTR(tty, tiop) (ioctl (tty, TCSETAW, tiop)) +#endif /* !TERMIOS_TTY_DRIVER */ + +static TIOTYPE otio; + +static void save_tty_chars PARAMS((TIOTYPE *)); +static int _get_tty_settings PARAMS((int, TIOTYPE *)); +static int get_tty_settings PARAMS((int, TIOTYPE *)); +static int _set_tty_settings PARAMS((int, TIOTYPE *)); +static int set_tty_settings PARAMS((int, TIOTYPE *)); + +static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *)); + +static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *)); +static void _rl_bind_tty_special_chars PARAMS((Keymap, TIOTYPE)); + +#if defined (FLUSHO) +# define OUTPUT_BEING_FLUSHED(tp) (tp->c_lflag & FLUSHO) +#else +# define OUTPUT_BEING_FLUSHED(tp) 0 +#endif + +static void +save_tty_chars (TIOTYPE *tiop) +{ + _rl_last_tty_chars = _rl_tty_chars; + + _rl_tty_chars.t_eof = tiop->c_cc[VEOF]; + _rl_tty_chars.t_eol = tiop->c_cc[VEOL]; +#ifdef VEOL2 + _rl_tty_chars.t_eol2 = tiop->c_cc[VEOL2]; +#endif + _rl_tty_chars.t_erase = tiop->c_cc[VERASE]; +#ifdef VWERASE + _rl_tty_chars.t_werase = tiop->c_cc[VWERASE]; +#endif + _rl_tty_chars.t_kill = tiop->c_cc[VKILL]; +#ifdef VREPRINT + _rl_tty_chars.t_reprint = tiop->c_cc[VREPRINT]; +#endif + _rl_intr_char = _rl_tty_chars.t_intr = tiop->c_cc[VINTR]; + _rl_quit_char = _rl_tty_chars.t_quit = tiop->c_cc[VQUIT]; +#ifdef VSUSP + _rl_susp_char = _rl_tty_chars.t_susp = tiop->c_cc[VSUSP]; +#endif +#ifdef VDSUSP + _rl_tty_chars.t_dsusp = tiop->c_cc[VDSUSP]; +#endif +#ifdef VSTART + _rl_tty_chars.t_start = tiop->c_cc[VSTART]; +#endif +#ifdef VSTOP + _rl_tty_chars.t_stop = tiop->c_cc[VSTOP]; +#endif +#ifdef VLNEXT + _rl_tty_chars.t_lnext = tiop->c_cc[VLNEXT]; +#endif +#ifdef VDISCARD + _rl_tty_chars.t_flush = tiop->c_cc[VDISCARD]; +#endif +#ifdef VSTATUS + _rl_tty_chars.t_status = tiop->c_cc[VSTATUS]; +#endif +} + +#if defined (_AIX) || defined (_AIX41) +/* Currently this is only used on AIX */ +static void +rltty_warning (char *msg) +{ + _rl_errmsg ("warning: %s", msg); +} +#endif + +#if defined (_AIX) +void +setopost (TIOTYPE *tp) +{ + if ((tp->c_oflag & OPOST) == 0) + { + _rl_errmsg ("warning: turning on OPOST for terminal\r"); + tp->c_oflag |= OPOST|ONLCR; + } +} +#endif + +static int +_get_tty_settings (int tty, TIOTYPE *tiop) +{ + int ioctl_ret; + + while (1) + { + ioctl_ret = GETATTR (tty, tiop); + if (ioctl_ret < 0) + { + if (errno != EINTR) + return -1; + else + continue; + } + if (OUTPUT_BEING_FLUSHED (tiop)) + { +#if defined (FLUSHO) + _rl_errmsg ("warning: turning off output flushing"); + tiop->c_lflag &= ~FLUSHO; + break; +#else + continue; +#endif + } + break; + } + + return 0; +} + +static int +get_tty_settings (int tty, TIOTYPE *tiop) +{ + set_winsize (tty); + + errno = 0; + if (_get_tty_settings (tty, tiop) < 0) + return -1; + +#if defined (_AIX) + setopost(tiop); +#endif + + return 0; +} + +static int +_set_tty_settings (int tty, TIOTYPE *tiop) +{ + while (SETATTR (tty, tiop) < 0) + { + if (errno != EINTR) + return -1; + errno = 0; + } + return 0; +} + +static int +set_tty_settings (int tty, TIOTYPE *tiop) +{ + if (_set_tty_settings (tty, tiop) < 0) + return -1; + +#if 0 + +#if defined (TERMIOS_TTY_DRIVER) +# if defined (__ksr1__) + if (ksrflow) + { + ksrflow = 0; + tcflow (tty, TCOON); + } +# else /* !ksr1 */ + tcflow (tty, TCOON); /* Simulate a ^Q. */ +# endif /* !ksr1 */ +#else + ioctl (tty, TCXONC, 1); /* Simulate a ^Q. */ +#endif /* !TERMIOS_TTY_DRIVER */ + +#endif /* 0 */ + + return 0; +} + +static void +prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop) +{ + int sc; + Keymap kmap; + + _rl_echoing_p = (oldtio.c_lflag & ECHO); +#if defined (ECHOCTL) + _rl_echoctl = (oldtio.c_lflag & ECHOCTL); +#endif + + tiop->c_lflag &= ~(ICANON | ECHO); + + if ((unsigned char) oldtio.c_cc[VEOF] != (unsigned char) _POSIX_VDISABLE) + _rl_eof_char = oldtio.c_cc[VEOF]; + +#if defined (USE_XON_XOFF) +#if defined (IXANY) + tiop->c_iflag &= ~(IXON | IXANY); +#else + /* `strict' Posix systems do not define IXANY. */ + tiop->c_iflag &= ~IXON; +#endif /* IXANY */ +#endif /* USE_XON_XOFF */ + + /* Only turn this off if we are using all 8 bits. */ + if (((tiop->c_cflag & CSIZE) == CS8) || meta_flag) + tiop->c_iflag &= ~(ISTRIP | INPCK); + + /* Make sure we differentiate between CR and NL on input. */ + tiop->c_iflag &= ~(ICRNL | INLCR); + +#if !defined (HANDLE_SIGNALS) + tiop->c_lflag &= ~ISIG; +#else + tiop->c_lflag |= ISIG; +#endif + + tiop->c_cc[VMIN] = 1; + tiop->c_cc[VTIME] = 0; + +#if defined (FLUSHO) + if (OUTPUT_BEING_FLUSHED (tiop)) + { + tiop->c_lflag &= ~FLUSHO; + oldtio.c_lflag &= ~FLUSHO; + } +#endif + + /* Turn off characters that we need on Posix systems with job control, + just to be sure. This includes ^Y and ^V. This should not really + be necessary. */ +#if defined (TERMIOS_TTY_DRIVER) && defined (_POSIX_VDISABLE) + +#if defined (VLNEXT) + tiop->c_cc[VLNEXT] = _POSIX_VDISABLE; +#endif + +#if defined (VDSUSP) + tiop->c_cc[VDSUSP] = _POSIX_VDISABLE; +#endif + + /* Conditionally disable some other tty special characters if there is a + key binding for them in the current keymap. Readline ordinarily doesn't + bind these characters, but an application or user might. */ +#if defined (VI_MODE) + kmap = (rl_editing_mode == vi_mode) ? vi_insertion_keymap : _rl_keymap; +#else + kmap = _rl_keymap; +#endif +#if defined (VDISCARD) + sc = tiop->c_cc[VDISCARD]; + if (sc != _POSIX_VDISABLE && kmap[(unsigned char)sc].type == ISFUNC) + tiop->c_cc[VDISCARD] = _POSIX_VDISABLE; +#endif /* VDISCARD */ + +#endif /* TERMIOS_TTY_DRIVER && _POSIX_VDISABLE */ +} +#endif /* !NEW_TTY_DRIVER */ + +/* Put the terminal in CBREAK mode so that we can detect key presses. */ +#if defined (NO_TTY_DRIVER) +void +rl_prep_terminal (int meta_flag) +{ + _rl_echoing_p = 1; +} + +void +rl_deprep_terminal (void) +{ +} + +#else /* ! NO_TTY_DRIVER */ +void +rl_prep_terminal (int meta_flag) +{ + int tty, nprep; + TIOTYPE tio; + + if (terminal_prepped) + return; + + /* Try to keep this function from being INTerrupted. */ + _rl_block_sigint (); + + tty = rl_instream ? fileno (rl_instream) : fileno (stdin); + + if (get_tty_settings (tty, &tio) < 0) + { +#if defined (ENOTSUP) + /* MacOS X and Linux, at least, lie about the value of errno if + tcgetattr fails. */ + if (errno == ENOTTY || errno == EINVAL || errno == ENOTSUP) +#else + if (errno == ENOTTY || errno == EINVAL) +#endif + _rl_echoing_p = 1; /* XXX */ + + _rl_release_sigint (); + return; + } + + otio = tio; + + if (_rl_bind_stty_chars) + { +#if defined (VI_MODE) + /* If editing in vi mode, make sure we restore the bindings in the + insertion keymap no matter what keymap we ended up in. */ + if (rl_editing_mode == vi_mode) + rl_tty_unset_default_bindings (vi_insertion_keymap); + else +#endif + rl_tty_unset_default_bindings (_rl_keymap); + } + save_tty_chars (&otio); + RL_SETSTATE(RL_STATE_TTYCSAVED); + if (_rl_bind_stty_chars) + { +#if defined (VI_MODE) + /* If editing in vi mode, make sure we set the bindings in the + insertion keymap no matter what keymap we ended up in. */ + if (rl_editing_mode == vi_mode) + _rl_bind_tty_special_chars (vi_insertion_keymap, tio); + else +#endif + _rl_bind_tty_special_chars (_rl_keymap, tio); + } + + prepare_terminal_settings (meta_flag, otio, &tio); + + if (set_tty_settings (tty, &tio) < 0) + { + _rl_release_sigint (); + return; + } + + if (_rl_enable_keypad) + _rl_control_keypad (1); + + nprep = TPX_PREPPED; + + if (_rl_enable_bracketed_paste) + { + fprintf (rl_outstream, BRACK_PASTE_INIT); + nprep |= TPX_BRACKPASTE; + } + + fflush (rl_outstream); + terminal_prepped = nprep; + RL_SETSTATE(RL_STATE_TERMPREPPED); + + _rl_release_sigint (); +} + +/* Restore the terminal's normal settings and modes. */ +void +rl_deprep_terminal (void) +{ + int tty; + + if (terminal_prepped == 0) + return; + + /* Try to keep this function from being interrupted. */ + _rl_block_sigint (); + + tty = rl_instream ? fileno (rl_instream) : fileno (stdin); + + if (terminal_prepped & TPX_BRACKPASTE) + { + fprintf (rl_outstream, BRACK_PASTE_FINI); + if (_rl_eof_found) + fprintf (rl_outstream, "\n"); + } + + if (_rl_enable_keypad) + _rl_control_keypad (0); + + fflush (rl_outstream); + + if (set_tty_settings (tty, &otio) < 0) + { + _rl_release_sigint (); + return; + } + + terminal_prepped = 0; + RL_UNSETSTATE(RL_STATE_TERMPREPPED); + + _rl_release_sigint (); +} +#endif /* !NO_TTY_DRIVER */ + +/* Set readline's idea of whether or not it is echoing output to the terminal, + returning the old value. */ +int +rl_tty_set_echoing (int u) +{ + int o; + + o = _rl_echoing_p; + _rl_echoing_p = u; + return o; +} + +/* **************************************************************** */ +/* */ +/* Bogus Flow Control */ +/* */ +/* **************************************************************** */ + +int +rl_restart_output (int count, int key) +{ +#if defined (__MINGW32__) + return 0; +#else /* !__MING32__ */ + + int fildes = fileno (rl_outstream); +#if defined (TIOCSTART) +#if defined (apollo) + ioctl (&fildes, TIOCSTART, 0); +#else + ioctl (fildes, TIOCSTART, 0); +#endif /* apollo */ + +#else /* !TIOCSTART */ +# if defined (TERMIOS_TTY_DRIVER) +# if defined (__ksr1__) + if (ksrflow) + { + ksrflow = 0; + tcflow (fildes, TCOON); + } +# else /* !ksr1 */ + tcflow (fildes, TCOON); /* Simulate a ^Q. */ +# endif /* !ksr1 */ +# else /* !TERMIOS_TTY_DRIVER */ +# if defined (TCXONC) + ioctl (fildes, TCXONC, TCOON); +# endif /* TCXONC */ +# endif /* !TERMIOS_TTY_DRIVER */ +#endif /* !TIOCSTART */ + + return 0; +#endif /* !__MINGW32__ */ +} + +int +rl_stop_output (int count, int key) +{ +#if defined (__MINGW32__) + return 0; +#else + + int fildes = fileno (rl_instream); + +#if defined (TIOCSTOP) +# if defined (apollo) + ioctl (&fildes, TIOCSTOP, 0); +# else + ioctl (fildes, TIOCSTOP, 0); +# endif /* apollo */ +#else /* !TIOCSTOP */ +# if defined (TERMIOS_TTY_DRIVER) +# if defined (__ksr1__) + ksrflow = 1; +# endif /* ksr1 */ + tcflow (fildes, TCOOFF); +# else +# if defined (TCXONC) + ioctl (fildes, TCXONC, TCOON); +# endif /* TCXONC */ +# endif /* !TERMIOS_TTY_DRIVER */ +#endif /* !TIOCSTOP */ + + return 0; +#endif /* !__MINGW32__ */ +} + +/* **************************************************************** */ +/* */ +/* Default Key Bindings */ +/* */ +/* **************************************************************** */ + +#if !defined (NO_TTY_DRIVER) +#define SET_SPECIAL(sc, func) set_special_char(kmap, &ttybuff, sc, func) +#endif + +#if defined (NO_TTY_DRIVER) + +#define SET_SPECIAL(sc, func) +#define RESET_SPECIAL(c) + +#elif defined (NEW_TTY_DRIVER) +static void +set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func) +{ + if (sc != -1 && kmap[(unsigned char)sc].type == ISFUNC) + kmap[(unsigned char)sc].function = func; +} + +#define RESET_SPECIAL(c) \ + if (c != -1 && kmap[(unsigned char)c].type == ISFUNC) \ + kmap[(unsigned char)c].function = rl_insert; + +static void +_rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff) +{ + if (ttybuff.flags & SGTTY_SET) + { + SET_SPECIAL (ttybuff.sgttyb.sg_erase, rl_rubout); + SET_SPECIAL (ttybuff.sgttyb.sg_kill, rl_unix_line_discard); + } + +# if defined (TIOCGLTC) + if (ttybuff.flags & LTCHARS_SET) + { + SET_SPECIAL (ttybuff.ltchars.t_werasc, rl_unix_word_rubout); + SET_SPECIAL (ttybuff.ltchars.t_lnextc, rl_quoted_insert); + } +# endif /* TIOCGLTC */ +} + +#else /* !NEW_TTY_DRIVER */ +static void +set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func) +{ + unsigned char uc; + + uc = tiop->c_cc[sc]; + if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC) + kmap[uc].function = func; +} + +/* used later */ +#define RESET_SPECIAL(uc) \ + if (uc != (unsigned char)_POSIX_VDISABLE && kmap[uc].type == ISFUNC) \ + kmap[uc].function = rl_insert; + +static void +_rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff) +{ + SET_SPECIAL (VERASE, rl_rubout); + SET_SPECIAL (VKILL, rl_unix_line_discard); + +# if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER) + SET_SPECIAL (VLNEXT, rl_quoted_insert); +# endif /* VLNEXT && TERMIOS_TTY_DRIVER */ + +# if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER) +# if defined (VI_MODE) + if (rl_editing_mode == vi_mode) + SET_SPECIAL (VWERASE, rl_vi_unix_word_rubout); + else +# endif + SET_SPECIAL (VWERASE, rl_unix_word_rubout); +# endif /* VWERASE && TERMIOS_TTY_DRIVER */ +} + +#endif /* !NEW_TTY_DRIVER */ + +/* Set the system's default editing characters to their readline equivalents + in KMAP. Should be static, now that we have rl_tty_set_default_bindings. */ +void +rltty_set_default_bindings (Keymap kmap) +{ +#if !defined (NO_TTY_DRIVER) + TIOTYPE ttybuff; + int tty; + + tty = fileno (rl_instream); + + if (get_tty_settings (tty, &ttybuff) == 0) + _rl_bind_tty_special_chars (kmap, ttybuff); +#endif +} + +/* New public way to set the system default editing chars to their readline + equivalents. */ +void +rl_tty_set_default_bindings (Keymap kmap) +{ + rltty_set_default_bindings (kmap); +} + +/* Rebind all of the tty special chars that readline worries about back + to self-insert. Call this before saving the current terminal special + chars with save_tty_chars(). This only works on POSIX termios or termio + systems. */ +void +rl_tty_unset_default_bindings (Keymap kmap) +{ + /* Don't bother before we've saved the tty special chars at least once. */ + if (RL_ISSTATE(RL_STATE_TTYCSAVED) == 0) + return; + + RESET_SPECIAL (_rl_tty_chars.t_erase); + RESET_SPECIAL (_rl_tty_chars.t_kill); + +# if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER) + RESET_SPECIAL (_rl_tty_chars.t_lnext); +# endif /* VLNEXT && TERMIOS_TTY_DRIVER */ + +# if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER) + RESET_SPECIAL (_rl_tty_chars.t_werase); +# endif /* VWERASE && TERMIOS_TTY_DRIVER */ +} + +#if defined (HANDLE_SIGNALS) + +#if defined (NEW_TTY_DRIVER) || defined (NO_TTY_DRIVER) +int +_rl_disable_tty_signals (void) +{ + return 0; +} + +int +_rl_restore_tty_signals (void) +{ + return 0; +} +#else + +static TIOTYPE sigstty, nosigstty; +static int tty_sigs_disabled = 0; + +int +_rl_disable_tty_signals (void) +{ + if (tty_sigs_disabled) + return 0; + + if (_get_tty_settings (fileno (rl_instream), &sigstty) < 0) + return -1; + + nosigstty = sigstty; + + nosigstty.c_lflag &= ~ISIG; + nosigstty.c_iflag &= ~IXON; + + if (_set_tty_settings (fileno (rl_instream), &nosigstty) < 0) + return (_set_tty_settings (fileno (rl_instream), &sigstty)); + + tty_sigs_disabled = 1; + return 0; +} + +int +_rl_restore_tty_signals (void) +{ + int r; + + if (tty_sigs_disabled == 0) + return 0; + + r = _set_tty_settings (fileno (rl_instream), &sigstty); + + if (r == 0) + tty_sigs_disabled = 0; + + return r; +} +#endif /* !NEW_TTY_DRIVER */ + +#endif /* HANDLE_SIGNALS */ diff --git a/bash-5.1/lib/readline/rltty.h b/bash-5.1/lib/readline/rltty.h new file mode 100644 index 0000000..5bcc946 --- /dev/null +++ b/bash-5.1/lib/readline/rltty.h @@ -0,0 +1,80 @@ +/* rltty.h - tty driver-related definitions used by some library files. */ + +/* Copyright (C) 1995-2009 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (_RLTTY_H_) +#define _RLTTY_H_ + +/* Posix systems use termios and the Posix signal functions. */ +#if defined (TERMIOS_TTY_DRIVER) +# include +#endif /* TERMIOS_TTY_DRIVER */ + +/* System V machines use termio. */ +#if defined (TERMIO_TTY_DRIVER) +# include +# if !defined (TCOON) +# define TCOON 1 +# endif +#endif /* TERMIO_TTY_DRIVER */ + +/* Other (BSD) machines use sgtty. */ +#if defined (NEW_TTY_DRIVER) +# include +#endif + +#include "rlwinsize.h" + +/* Define _POSIX_VDISABLE if we are not using the `new' tty driver and + it is not already defined. It is used both to determine if a + special character is disabled and to disable certain special + characters. Posix systems should set to 0, USG systems to -1. */ +#if !defined (NEW_TTY_DRIVER) && !defined (_POSIX_VDISABLE) +# if defined (_SVR4_VDISABLE) +# define _POSIX_VDISABLE _SVR4_VDISABLE +# else +# if defined (_POSIX_VERSION) +# define _POSIX_VDISABLE 0 +# else /* !_POSIX_VERSION */ +# define _POSIX_VDISABLE -1 +# endif /* !_POSIX_VERSION */ +# endif /* !_SVR4_DISABLE */ +#endif /* !NEW_TTY_DRIVER && !_POSIX_VDISABLE */ + +typedef struct _rl_tty_chars { + unsigned char t_eof; + unsigned char t_eol; + unsigned char t_eol2; + unsigned char t_erase; + unsigned char t_werase; + unsigned char t_kill; + unsigned char t_reprint; + unsigned char t_intr; + unsigned char t_quit; + unsigned char t_susp; + unsigned char t_dsusp; + unsigned char t_start; + unsigned char t_stop; + unsigned char t_lnext; + unsigned char t_flush; + unsigned char t_status; +} _RL_TTY_CHARS; + +#endif /* _RLTTY_H_ */ diff --git a/bash-5.1/lib/readline/rltypedefs.h b/bash-5.1/lib/readline/rltypedefs.h new file mode 100644 index 0000000..f9f5cd3 --- /dev/null +++ b/bash-5.1/lib/readline/rltypedefs.h @@ -0,0 +1,100 @@ +/* rltypedefs.h -- Type declarations for readline functions. */ + +/* Copyright (C) 2000-2011 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#ifndef _RL_TYPEDEFS_H_ +#define _RL_TYPEDEFS_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Old-style, attempt to mark as deprecated in some way people will notice. */ + +#if !defined (_FUNCTION_DEF) +# define _FUNCTION_DEF + +#if defined(__GNUC__) || defined(__clang__) +typedef int Function () __attribute__ ((deprecated)); +typedef void VFunction () __attribute__ ((deprecated)); +typedef char *CPFunction () __attribute__ ((deprecated)); +typedef char **CPPFunction () __attribute__ ((deprecated)); +#else +typedef int Function (); +typedef void VFunction (); +typedef char *CPFunction (); +typedef char **CPPFunction (); +#endif + +#endif /* _FUNCTION_DEF */ + +/* New style. */ + +#if !defined (_RL_FUNCTION_TYPEDEF) +# define _RL_FUNCTION_TYPEDEF + +/* Bindable functions */ +typedef int rl_command_func_t PARAMS((int, int)); + +/* Typedefs for the completion system */ +typedef char *rl_compentry_func_t PARAMS((const char *, int)); +typedef char **rl_completion_func_t PARAMS((const char *, int, int)); + +typedef char *rl_quote_func_t PARAMS((char *, int, char *)); +typedef char *rl_dequote_func_t PARAMS((char *, int)); + +typedef int rl_compignore_func_t PARAMS((char **)); + +typedef void rl_compdisp_func_t PARAMS((char **, int, int)); + +/* Type for input and pre-read hook functions like rl_event_hook */ +typedef int rl_hook_func_t PARAMS((void)); + +/* Input function type */ +typedef int rl_getc_func_t PARAMS((FILE *)); + +/* Generic function that takes a character buffer (which could be the readline + line buffer) and an index into it (which could be rl_point) and returns + an int. */ +typedef int rl_linebuf_func_t PARAMS((char *, int)); + +/* `Generic' function pointer typedefs */ +typedef int rl_intfunc_t PARAMS((int)); +#define rl_ivoidfunc_t rl_hook_func_t +typedef int rl_icpfunc_t PARAMS((char *)); +typedef int rl_icppfunc_t PARAMS((char **)); + +typedef void rl_voidfunc_t PARAMS((void)); +typedef void rl_vintfunc_t PARAMS((int)); +typedef void rl_vcpfunc_t PARAMS((char *)); +typedef void rl_vcppfunc_t PARAMS((char **)); + +typedef char *rl_cpvfunc_t PARAMS((void)); +typedef char *rl_cpifunc_t PARAMS((int)); +typedef char *rl_cpcpfunc_t PARAMS((char *)); +typedef char *rl_cpcppfunc_t PARAMS((char **)); + +#endif /* _RL_FUNCTION_TYPEDEF */ + +#ifdef __cplusplus +} +#endif + +#endif /* _RL_TYPEDEFS_H_ */ diff --git a/bash-5.1/lib/readline/rlwinsize.h b/bash-5.1/lib/readline/rlwinsize.h new file mode 100644 index 0000000..d198fcf --- /dev/null +++ b/bash-5.1/lib/readline/rlwinsize.h @@ -0,0 +1,58 @@ +/* rlwinsize.h -- an attempt to isolate some of the system-specific defines + for `struct winsize' and TIOCGWINSZ. */ + +/* Copyright (C) 1997-2009 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (_RLWINSIZE_H_) +#define _RLWINSIZE_H_ + +#if defined (HAVE_CONFIG_H) +# include "config.h" +#endif + +/* Try to find the definitions of `struct winsize' and TIOGCWINSZ */ + +#if defined (GWINSZ_IN_SYS_IOCTL) && !defined (TIOCGWINSZ) +# include +#endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */ + +#if defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) +# include +#endif /* STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */ + +/* Not in either of the standard places, look around. */ +#if !defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) +# if defined (HAVE_SYS_STREAM_H) +# include +# endif /* HAVE_SYS_STREAM_H */ +# if defined (HAVE_SYS_PTEM_H) /* SVR4.2, at least, has it here */ +# include +# define _IO_PTEM_H /* work around SVR4.2 1.1.4 bug */ +# endif /* HAVE_SYS_PTEM_H */ +# if defined (HAVE_SYS_PTE_H) /* ??? */ +# include +# endif /* HAVE_SYS_PTE_H */ +#endif /* !STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */ + +#if defined (M_UNIX) && !defined (_SCO_DS) && !defined (tcflow) +# define tcflow(fd, action) ioctl(fd, TCXONC, action) +#endif + +#endif /* _RL_WINSIZE_H */ diff --git a/bash-5.1/lib/readline/savestring.c b/bash-5.1/lib/readline/savestring.c new file mode 100644 index 0000000..f4bb6aa --- /dev/null +++ b/bash-5.1/lib/readline/savestring.c @@ -0,0 +1,40 @@ +/* savestring.c - function version of savestring for backwards compatibility */ + +/* Copyright (C) 1998,2003,2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#include +#ifdef HAVE_STRING_H +# include +#endif +#include "xmalloc.h" + +/* Backwards compatibility, now that savestring has been removed from + all `public' readline header files. */ +char * +savestring (const char *s) +{ + char *ret; + + ret = (char *)xmalloc (strlen (s) + 1); + strcpy (ret, s); + return ret; +} diff --git a/bash-5.1/lib/readline/search.c b/bash-5.1/lib/readline/search.c new file mode 100644 index 0000000..38a2936 --- /dev/null +++ b/bash-5.1/lib/readline/search.c @@ -0,0 +1,695 @@ +/* search.c - code for non-incremental searching in emacs and vi modes. */ + +/* Copyright (C) 1992-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif + +#include "rldefs.h" +#include "rlmbutil.h" + +#include "readline.h" +#include "history.h" +#include "histlib.h" + +#include "rlprivate.h" +#include "xmalloc.h" + +#ifdef abs +# undef abs +#endif +#define abs(x) (((x) >= 0) ? (x) : -(x)) + +_rl_search_cxt *_rl_nscxt = 0; + +extern HIST_ENTRY *_rl_saved_line_for_history; + +/* Functions imported from the rest of the library. */ +extern void _rl_free_history_entry PARAMS((HIST_ENTRY *)); + +static char *noninc_search_string = (char *) NULL; +static int noninc_history_pos; + +static char *prev_line_found = (char *) NULL; + +static int rl_history_search_len; +static int rl_history_search_pos; +static int rl_history_search_flags; + +static char *history_search_string; +static int history_string_size; + +static void make_history_line_current PARAMS((HIST_ENTRY *)); +static int noninc_search_from_pos PARAMS((char *, int, int, int, int *)); +static int noninc_dosearch PARAMS((char *, int, int)); +static int noninc_search PARAMS((int, int)); +static int rl_history_search_internal PARAMS((int, int)); +static void rl_history_search_reinit PARAMS((int)); + +static _rl_search_cxt *_rl_nsearch_init PARAMS((int, int)); +static void _rl_nsearch_abort PARAMS((_rl_search_cxt *)); +static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int)); + +/* Make the data from the history entry ENTRY be the contents of the + current line. This doesn't do anything with rl_point; the caller + must set it. */ +static void +make_history_line_current (HIST_ENTRY *entry) +{ + _rl_replace_text (entry->line, 0, rl_end); + _rl_fix_point (1); +#if defined (VI_MODE) + if (rl_editing_mode == vi_mode) + /* POSIX.2 says that the `U' command doesn't affect the copy of any + command lines to the edit line. We're going to implement that by + making the undo list start after the matching line is copied to the + current editing buffer. */ + rl_free_undo_list (); +#endif + + if (_rl_saved_line_for_history) + _rl_free_history_entry (_rl_saved_line_for_history); + _rl_saved_line_for_history = (HIST_ENTRY *)NULL; +} + +/* Search the history list for STRING starting at absolute history position + POS. If STRING begins with `^', the search must match STRING at the + beginning of a history line, otherwise a full substring match is performed + for STRING. DIR < 0 means to search backwards through the history list, + DIR >= 0 means to search forward. */ +static int +noninc_search_from_pos (char *string, int pos, int dir, int flags, int *ncp) +{ + int ret, old, sflags; + char *s; + + if (pos < 0) + return -1; + + old = where_history (); + if (history_set_pos (pos) == 0) + return -1; + + RL_SETSTATE(RL_STATE_SEARCH); + /* These functions return the match offset in the line; history_offset gives + the matching line in the history list */ + if (flags & SF_PATTERN) + { + s = string; + sflags = 0; /* Non-anchored search */ + if (*s == '^') + { + sflags |= ANCHORED_SEARCH; + s++; + } + ret = _hs_history_patsearch (s, dir, sflags); + } + else if (*string == '^') + ret = history_search_prefix (string + 1, dir); + else + ret = history_search (string, dir); + RL_UNSETSTATE(RL_STATE_SEARCH); + + if (ncp) + *ncp = ret; /* caller will catch -1 to indicate no-op */ + + if (ret != -1) + ret = where_history (); + + history_set_pos (old); + return (ret); +} + +/* Search for a line in the history containing STRING. If DIR is < 0, the + search is backwards through previous entries, else through subsequent + entries. Returns 1 if the search was successful, 0 otherwise. */ +static int +noninc_dosearch (char *string, int dir, int flags) +{ + int oldpos, pos, ind; + HIST_ENTRY *entry; + + if (string == 0 || *string == '\0' || noninc_history_pos < 0) + { + rl_ding (); + return 0; + } + + pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir, flags, &ind); + if (pos == -1) + { + /* Search failed, current history position unchanged. */ + rl_maybe_unsave_line (); + rl_clear_message (); + rl_point = 0; + rl_ding (); + return 0; + } + + noninc_history_pos = pos; + + oldpos = where_history (); + history_set_pos (noninc_history_pos); + entry = current_history (); /* will never be NULL after successful search */ + +#if defined (VI_MODE) + if (rl_editing_mode != vi_mode) +#endif + history_set_pos (oldpos); + + make_history_line_current (entry); + + if (_rl_enable_active_region && ((flags & SF_PATTERN) == 0) && ind > 0 && ind < rl_end) + { + rl_point = ind; + rl_mark = ind + strlen (string); + if (rl_mark > rl_end) + rl_mark = rl_end; /* can't happen? */ + rl_activate_mark (); + } + else + { + rl_point = 0; + rl_mark = rl_end; + } + + rl_clear_message (); + return 1; +} + +static _rl_search_cxt * +_rl_nsearch_init (int dir, int pchar) +{ + _rl_search_cxt *cxt; + char *p; + + cxt = _rl_scxt_alloc (RL_SEARCH_NSEARCH, 0); + if (dir < 0) + cxt->sflags |= SF_REVERSE; /* not strictly needed */ +#if defined (VI_MODE) + if (VI_COMMAND_MODE() && (pchar == '?' || pchar == '/')) + cxt->sflags |= SF_PATTERN; +#endif + + cxt->direction = dir; + cxt->history_pos = cxt->save_line; + + rl_maybe_save_line (); + + /* Clear the undo list, since reading the search string should create its + own undo list, and the whole list will end up being freed when we + finish reading the search string. */ + rl_undo_list = 0; + + /* Use the line buffer to read the search string. */ + rl_line_buffer[0] = 0; + rl_end = rl_point = 0; + + p = _rl_make_prompt_for_search (pchar ? pchar : ':'); + rl_message ("%s", p); + xfree (p); + + RL_SETSTATE(RL_STATE_NSEARCH); + + _rl_nscxt = cxt; + + return cxt; +} + +int +_rl_nsearch_cleanup (_rl_search_cxt *cxt, int r) +{ + _rl_scxt_dispose (cxt, 0); + _rl_nscxt = 0; + + RL_UNSETSTATE(RL_STATE_NSEARCH); + + return (r != 1); +} + +static void +_rl_nsearch_abort (_rl_search_cxt *cxt) +{ + rl_maybe_unsave_line (); + rl_clear_message (); + rl_point = cxt->save_point; + rl_mark = cxt->save_mark; + _rl_fix_point (1); + rl_restore_prompt (); + + RL_UNSETSTATE (RL_STATE_NSEARCH); +} + +/* Process just-read character C according to search context CXT. Return -1 + if the caller should abort the search, 0 if we should break out of the + loop, and 1 if we should continue to read characters. */ +static int +_rl_nsearch_dispatch (_rl_search_cxt *cxt, int c) +{ + int n; + + if (c < 0) + c = CTRL ('C'); + + switch (c) + { + case CTRL('W'): + rl_unix_word_rubout (1, c); + break; + + case CTRL('U'): + rl_unix_line_discard (1, c); + break; + + case RETURN: + case NEWLINE: + return 0; + + case CTRL('H'): + case RUBOUT: + if (rl_point == 0) + { + _rl_nsearch_abort (cxt); + return -1; + } + _rl_rubout_char (1, c); + break; + + case CTRL('C'): + case CTRL('G'): + rl_ding (); + _rl_nsearch_abort (cxt); + return -1; + + case ESC: + /* XXX - experimental code to allow users to bracketed-paste into the + search string. Similar code is in isearch.c:_rl_isearch_dispatch(). + The difference here is that the bracketed paste sometimes doesn't + paste everything, so checking for the prefix and the suffix in the + input queue doesn't work well. We just have to check to see if the + number of chars in the input queue is enough for the bracketed paste + prefix and hope for the best. */ + if (_rl_enable_bracketed_paste && ((n = _rl_nchars_available ()) >= (BRACK_PASTE_SLEN-1))) + { + if (_rl_read_bracketed_paste_prefix (c) == 1) + rl_bracketed_paste_begin (1, c); + else + { + c = rl_read_key (); /* get the ESC that got pushed back */ + _rl_insert_char (1, c); + } + } + else + _rl_insert_char (1, c); + break; + + default: +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_insert_text (cxt->mb); + else +#endif + _rl_insert_char (1, c); + break; + } + + (*rl_redisplay_function) (); + rl_deactivate_mark (); + return 1; +} + +/* Perform one search according to CXT, using NONINC_SEARCH_STRING. Return + -1 if the search should be aborted, any other value means to clean up + using _rl_nsearch_cleanup (). Returns 1 if the search was successful, + 0 otherwise. */ +static int +_rl_nsearch_dosearch (_rl_search_cxt *cxt) +{ + rl_mark = cxt->save_mark; + + /* If rl_point == 0, we want to re-use the previous search string and + start from the saved history position. If there's no previous search + string, punt. */ + if (rl_point == 0) + { + if (noninc_search_string == 0) + { + rl_ding (); + rl_restore_prompt (); + RL_UNSETSTATE (RL_STATE_NSEARCH); + return -1; + } + } + else + { + /* We want to start the search from the current history position. */ + noninc_history_pos = cxt->save_line; + FREE (noninc_search_string); + noninc_search_string = savestring (rl_line_buffer); + + /* If we don't want the subsequent undo list generated by the search + matching a history line to include the contents of the search string, + we need to clear rl_line_buffer here. For now, we just clear the + undo list generated by reading the search string. (If the search + fails, the old undo list will be restored by rl_maybe_unsave_line.) */ + rl_free_undo_list (); + } + + rl_restore_prompt (); + return (noninc_dosearch (noninc_search_string, cxt->direction, cxt->sflags&SF_PATTERN)); +} + +/* Search non-interactively through the history list. DIR < 0 means to + search backwards through the history of previous commands; otherwise + the search is for commands subsequent to the current position in the + history list. PCHAR is the character to use for prompting when reading + the search string; if not specified (0), it defaults to `:'. */ +static int +noninc_search (int dir, int pchar) +{ + _rl_search_cxt *cxt; + int c, r; + + cxt = _rl_nsearch_init (dir, pchar); + + if (RL_ISSTATE (RL_STATE_CALLBACK)) + return (0); + + /* Read the search string. */ + r = 0; + while (1) + { + c = _rl_search_getchar (cxt); + + if (c < 0) + { + _rl_nsearch_abort (cxt); + return 1; + } + + if (c == 0) + break; + + r = _rl_nsearch_dispatch (cxt, c); + if (r < 0) + return 1; + else if (r == 0) + break; + } + + r = _rl_nsearch_dosearch (cxt); + return ((r >= 0) ? _rl_nsearch_cleanup (cxt, r) : (r != 1)); +} + +/* Search forward through the history list for a string. If the vi-mode + code calls this, KEY will be `?'. */ +int +rl_noninc_forward_search (int count, int key) +{ + return noninc_search (1, (key == '?') ? '?' : 0); +} + +/* Reverse search the history list for a string. If the vi-mode code + calls this, KEY will be `/'. */ +int +rl_noninc_reverse_search (int count, int key) +{ + return noninc_search (-1, (key == '/') ? '/' : 0); +} + +/* Search forward through the history list for the last string searched + for. If there is no saved search string, abort. If the vi-mode code + calls this, KEY will be `N'. */ +int +rl_noninc_forward_search_again (int count, int key) +{ + int r; + + if (!noninc_search_string) + { + rl_ding (); + return (1); + } +#if defined (VI_MODE) + if (VI_COMMAND_MODE() && key == 'N') + r = noninc_dosearch (noninc_search_string, 1, SF_PATTERN); + else +#endif + r = noninc_dosearch (noninc_search_string, 1, 0); + return (r != 1); +} + +/* Reverse search in the history list for the last string searched + for. If there is no saved search string, abort. If the vi-mode code + calls this, KEY will be `n'. */ +int +rl_noninc_reverse_search_again (int count, int key) +{ + int r; + + if (!noninc_search_string) + { + rl_ding (); + return (1); + } +#if defined (VI_MODE) + if (VI_COMMAND_MODE() && key == 'n') + r = noninc_dosearch (noninc_search_string, -1, SF_PATTERN); + else +#endif + r = noninc_dosearch (noninc_search_string, -1, 0); + return (r != 1); +} + +#if defined (READLINE_CALLBACKS) +int +_rl_nsearch_callback (_rl_search_cxt *cxt) +{ + int c, r; + + c = _rl_search_getchar (cxt); + if (c <= 0) + { + if (c < 0) + _rl_nsearch_abort (cxt); + return 1; + } + r = _rl_nsearch_dispatch (cxt, c); + if (r != 0) + return 1; + + r = _rl_nsearch_dosearch (cxt); + return ((r >= 0) ? _rl_nsearch_cleanup (cxt, r) : (r != 1)); +} +#endif + +static int +rl_history_search_internal (int count, int dir) +{ + HIST_ENTRY *temp; + int ret, oldpos, newcol; + char *t; + + rl_maybe_save_line (); + temp = (HIST_ENTRY *)NULL; + + /* Search COUNT times through the history for a line matching + history_search_string. If history_search_string[0] == '^', the + line must match from the start; otherwise any substring can match. + When this loop finishes, TEMP, if non-null, is the history line to + copy into the line buffer. */ + while (count) + { + RL_CHECK_SIGNALS (); + ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir, 0, &newcol); + if (ret == -1) + break; + + /* Get the history entry we found. */ + rl_history_search_pos = ret; + oldpos = where_history (); + history_set_pos (rl_history_search_pos); + temp = current_history (); /* will never be NULL after successful search */ + history_set_pos (oldpos); + + /* Don't find multiple instances of the same line. */ + if (prev_line_found && STREQ (prev_line_found, temp->line)) + continue; + prev_line_found = temp->line; + count--; + } + + /* If we didn't find anything at all, return. */ + if (temp == 0) + { + rl_maybe_unsave_line (); + rl_ding (); + /* If you don't want the saved history line (last match) to show up + in the line buffer after the search fails, change the #if 0 to + #if 1 */ +#if 0 + if (rl_point > rl_history_search_len) + { + rl_point = rl_end = rl_history_search_len; + rl_line_buffer[rl_end] = '\0'; + rl_mark = 0; + } +#else + rl_point = rl_history_search_len; /* rl_maybe_unsave_line changes it */ + rl_mark = rl_end; +#endif + return 1; + } + + /* Copy the line we found into the current line buffer. */ + make_history_line_current (temp); + + /* decide where to put rl_point -- need to change this for pattern search */ + if (rl_history_search_flags & ANCHORED_SEARCH) + rl_point = rl_history_search_len; /* easy case */ + else + { +#if 0 + t = strstr (rl_line_buffer, history_search_string); /* XXX */ + rl_point = t ? (int)(t - rl_line_buffer) + rl_history_search_len : rl_end; +#else + rl_point = (newcol >= 0) ? newcol : rl_end; +#endif + } + rl_mark = rl_end; + + return 0; +} + +static void +rl_history_search_reinit (int flags) +{ + int sind; + + rl_history_search_pos = where_history (); + rl_history_search_len = rl_point; + rl_history_search_flags = flags; + + prev_line_found = (char *)NULL; + if (rl_point) + { + /* Allocate enough space for anchored and non-anchored searches */ + if (rl_history_search_len >= history_string_size - 2) + { + history_string_size = rl_history_search_len + 2; + history_search_string = (char *)xrealloc (history_search_string, history_string_size); + } + sind = 0; + if (flags & ANCHORED_SEARCH) + history_search_string[sind++] = '^'; + strncpy (history_search_string + sind, rl_line_buffer, rl_point); + history_search_string[rl_point + sind] = '\0'; + } + _rl_free_saved_history_line (); +} + +/* Search forward in the history for the string of characters + from the start of the line to rl_point. This is a non-incremental + search. The search is anchored to the beginning of the history line. */ +int +rl_history_search_forward (int count, int ignore) +{ + if (count == 0) + return (0); + + if (rl_last_func != rl_history_search_forward && + rl_last_func != rl_history_search_backward) + rl_history_search_reinit (ANCHORED_SEARCH); + + if (rl_history_search_len == 0) + return (rl_get_next_history (count, ignore)); + return (rl_history_search_internal (abs (count), (count > 0) ? 1 : -1)); +} + +/* Search backward through the history for the string of characters + from the start of the line to rl_point. This is a non-incremental + search. */ +int +rl_history_search_backward (int count, int ignore) +{ + if (count == 0) + return (0); + + if (rl_last_func != rl_history_search_forward && + rl_last_func != rl_history_search_backward) + rl_history_search_reinit (ANCHORED_SEARCH); + + if (rl_history_search_len == 0) + return (rl_get_previous_history (count, ignore)); + return (rl_history_search_internal (abs (count), (count > 0) ? -1 : 1)); +} + +/* Search forward in the history for the string of characters + from the start of the line to rl_point. This is a non-incremental + search. The search succeeds if the search string is present anywhere + in the history line. */ +int +rl_history_substr_search_forward (int count, int ignore) +{ + if (count == 0) + return (0); + + if (rl_last_func != rl_history_substr_search_forward && + rl_last_func != rl_history_substr_search_backward) + rl_history_search_reinit (NON_ANCHORED_SEARCH); + + if (rl_history_search_len == 0) + return (rl_get_next_history (count, ignore)); + return (rl_history_search_internal (abs (count), (count > 0) ? 1 : -1)); +} + +/* Search backward through the history for the string of characters + from the start of the line to rl_point. This is a non-incremental + search. */ +int +rl_history_substr_search_backward (int count, int ignore) +{ + if (count == 0) + return (0); + + if (rl_last_func != rl_history_substr_search_forward && + rl_last_func != rl_history_substr_search_backward) + rl_history_search_reinit (NON_ANCHORED_SEARCH); + + if (rl_history_search_len == 0) + return (rl_get_previous_history (count, ignore)); + return (rl_history_search_internal (abs (count), (count > 0) ? -1 : 1)); +} diff --git a/bash-5.1/lib/readline/shell.c b/bash-5.1/lib/readline/shell.c new file mode 100644 index 0000000..7fe2e97 --- /dev/null +++ b/bash-5.1/lib/readline/shell.c @@ -0,0 +1,214 @@ +/* shell.c -- readline utility functions that are normally provided by + bash when readline is linked as part of the shell. */ + +/* Copyright (C) 1997-2009,2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if defined (HAVE_STRING_H) +# include +#else +# include +#endif /* !HAVE_STRING_H */ + +#if defined (HAVE_LIMITS_H) +# include +#endif + +#if defined (HAVE_FCNTL_H) +#include +#endif +#if defined (HAVE_PWD_H) +#include +#endif + +#include + +#include "rlstdc.h" +#include "rlshell.h" +#include "rldefs.h" + +#include "xmalloc.h" + +#if defined (HAVE_GETPWUID) && !defined (HAVE_GETPW_DECLS) +extern struct passwd *getpwuid PARAMS((uid_t)); +#endif /* HAVE_GETPWUID && !HAVE_GETPW_DECLS */ + +#ifndef NULL +# define NULL 0 +#endif + +#ifndef CHAR_BIT +# define CHAR_BIT 8 +#endif + +/* Nonzero if the integer type T is signed. */ +#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* Bound on length of the string representing an integer value of type T. + Subtract one for the sign bit if T is signed; + 302 / 1000 is log10 (2) rounded up; + add one for integer division truncation; + add one more for a minus sign if t is signed. */ +#define INT_STRLEN_BOUND(t) \ + ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 \ + + 1 + TYPE_SIGNED (t)) + +/* All of these functions are resolved from bash if we are linking readline + as part of bash. */ + +/* Does shell-like quoting using single quotes. */ +char * +sh_single_quote (char *string) +{ + register int c; + char *result, *r, *s; + + result = (char *)xmalloc (3 + (4 * strlen (string))); + r = result; + *r++ = '\''; + + for (s = string; s && (c = *s); s++) + { + *r++ = c; + + if (c == '\'') + { + *r++ = '\\'; /* insert escaped single quote */ + *r++ = '\''; + *r++ = '\''; /* start new quoted string */ + } + } + + *r++ = '\''; + *r = '\0'; + + return (result); +} + +/* Set the environment variables LINES and COLUMNS to lines and cols, + respectively. */ +static char setenv_buf[INT_STRLEN_BOUND (int) + 1]; +static char putenv_buf1[INT_STRLEN_BOUND (int) + 6 + 1]; /* sizeof("LINES=") == 6 */ +static char putenv_buf2[INT_STRLEN_BOUND (int) + 8 + 1]; /* sizeof("COLUMNS=") == 8 */ + +void +sh_set_lines_and_columns (int lines, int cols) +{ +#if defined (HAVE_SETENV) + sprintf (setenv_buf, "%d", lines); + setenv ("LINES", setenv_buf, 1); + + sprintf (setenv_buf, "%d", cols); + setenv ("COLUMNS", setenv_buf, 1); +#else /* !HAVE_SETENV */ +# if defined (HAVE_PUTENV) + sprintf (putenv_buf1, "LINES=%d", lines); + putenv (putenv_buf1); + + sprintf (putenv_buf2, "COLUMNS=%d", cols); + putenv (putenv_buf2); +# endif /* HAVE_PUTENV */ +#endif /* !HAVE_SETENV */ +} + +char * +sh_get_env_value (const char *varname) +{ + return ((char *)getenv (varname)); +} + +char * +sh_get_home_dir (void) +{ + static char *home_dir = (char *)NULL; + struct passwd *entry; + + if (home_dir) + return (home_dir); + + home_dir = (char *)NULL; +#if defined (HAVE_GETPWUID) +# if defined (__TANDEM) + entry = getpwnam (getlogin ()); +# else + entry = getpwuid (getuid ()); +# endif + if (entry) + home_dir = savestring (entry->pw_dir); +#endif + +#if defined (HAVE_GETPWENT) + endpwent (); /* some systems need this */ +#endif + + return (home_dir); +} + +#if !defined (O_NDELAY) +# if defined (FNDELAY) +# define O_NDELAY FNDELAY +# endif +#endif + +int +sh_unset_nodelay_mode (int fd) +{ +#if defined (HAVE_FCNTL) + int flags, bflags; + + if ((flags = fcntl (fd, F_GETFL, 0)) < 0) + return -1; + + bflags = 0; + +#ifdef O_NONBLOCK + bflags |= O_NONBLOCK; +#endif + +#ifdef O_NDELAY + bflags |= O_NDELAY; +#endif + + if (flags & bflags) + { + flags &= ~bflags; + return (fcntl (fd, F_SETFL, flags)); + } +#endif + + return 0; +} diff --git a/bash-5.1/lib/readline/signals.c b/bash-5.1/lib/readline/signals.c new file mode 100644 index 0000000..f9174ab --- /dev/null +++ b/bash-5.1/lib/readline/signals.c @@ -0,0 +1,779 @@ +/* signals.c -- signal handling support for readline. */ + +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include /* Just for NULL. Yuck. */ +#include +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" + +#if defined (GWINSZ_IN_SYS_IOCTL) +# include +#endif /* GWINSZ_IN_SYS_IOCTL */ + +/* Some standard library routines. */ +#include "readline.h" +#include "history.h" + +#include "rlprivate.h" + +#if defined (HANDLE_SIGNALS) + +#if !defined (RETSIGTYPE) +# if defined (VOID_SIGHANDLER) +# define RETSIGTYPE void +# else +# define RETSIGTYPE int +# endif /* !VOID_SIGHANDLER */ +#endif /* !RETSIGTYPE */ + +#if defined (VOID_SIGHANDLER) +# define SIGHANDLER_RETURN return +#else +# define SIGHANDLER_RETURN return (0) +#endif + +/* This typedef is equivalent to the one for Function; it allows us + to say SigHandler *foo = signal (SIGKILL, SIG_IGN); */ +typedef RETSIGTYPE SigHandler (); + +#if defined (HAVE_POSIX_SIGNALS) +typedef struct sigaction sighandler_cxt; +# define rl_sigaction(s, nh, oh) sigaction(s, nh, oh) +#else +typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt; +# define sigemptyset(m) +#endif /* !HAVE_POSIX_SIGNALS */ + +#ifndef SA_RESTART +# define SA_RESTART 0 +#endif + +static SigHandler *rl_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *)); +static void rl_maybe_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *)); +static void rl_maybe_restore_sighandler PARAMS((int, sighandler_cxt *)); + +static RETSIGTYPE rl_signal_handler PARAMS((int)); +static RETSIGTYPE _rl_handle_signal PARAMS((int)); + +/* Exported variables for use by applications. */ + +/* If non-zero, readline will install its own signal handlers for + SIGINT, SIGTERM, SIGHUP, SIGQUIT, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU. */ +int rl_catch_signals = 1; + +/* If non-zero, readline will install a signal handler for SIGWINCH. */ +#ifdef SIGWINCH +int rl_catch_sigwinch = 1; +#else +int rl_catch_sigwinch = 0; /* for the readline state struct in readline.c */ +#endif + +/* Private variables. */ +int volatile _rl_caught_signal = 0; /* should be sig_atomic_t, but that requires including everywhere */ + +/* If non-zero, print characters corresponding to received signals as long as + the user has indicated his desire to do so (_rl_echo_control_chars). */ +int _rl_echoctl = 0; + +int _rl_intr_char = 0; +int _rl_quit_char = 0; +int _rl_susp_char = 0; + +static int signals_set_flag; +static int sigwinch_set_flag; + +#if defined (HAVE_POSIX_SIGNALS) +sigset_t _rl_orig_sigset; +#endif /* !HAVE_POSIX_SIGNALS */ + +/* **************************************************************** */ +/* */ +/* Signal Handling */ +/* */ +/* **************************************************************** */ + +static sighandler_cxt old_int, old_term, old_hup, old_alrm, old_quit; +#if defined (SIGTSTP) +static sighandler_cxt old_tstp, old_ttou, old_ttin; +#endif +#if defined (SIGWINCH) +static sighandler_cxt old_winch; +#endif + +_rl_sigcleanup_func_t *_rl_sigcleanup; +void *_rl_sigcleanarg; + +/* Readline signal handler functions. */ + +/* Called from RL_CHECK_SIGNALS() macro to run signal handling code. */ +RETSIGTYPE +_rl_signal_handler (int sig) +{ + _rl_caught_signal = 0; /* XXX */ + +#if defined (SIGWINCH) + if (sig == SIGWINCH) + { + RL_SETSTATE(RL_STATE_SIGHANDLER); + + rl_resize_terminal (); + /* XXX - experimental for now */ + /* Call a signal hook because though we called the original signal handler + in rl_sigwinch_handler below, we will not resend the signal to + ourselves. */ + if (rl_signal_event_hook) + (*rl_signal_event_hook) (); + + RL_UNSETSTATE(RL_STATE_SIGHANDLER); + } + else +#endif + _rl_handle_signal (sig); + + SIGHANDLER_RETURN; +} + +static RETSIGTYPE +rl_signal_handler (int sig) +{ + _rl_caught_signal = sig; + SIGHANDLER_RETURN; +} + +/* This is called to handle a signal when it is safe to do so (out of the + signal handler execution path). Called by _rl_signal_handler for all the + signals readline catches except SIGWINCH. */ +static RETSIGTYPE +_rl_handle_signal (int sig) +{ + int block_sig; + +#if defined (HAVE_POSIX_SIGNALS) + sigset_t set, oset; +#else /* !HAVE_POSIX_SIGNALS */ +# if defined (HAVE_BSD_SIGNALS) + long omask; +# else /* !HAVE_BSD_SIGNALS */ + sighandler_cxt dummy_cxt; /* needed for rl_set_sighandler call */ +# endif /* !HAVE_BSD_SIGNALS */ +#endif /* !HAVE_POSIX_SIGNALS */ + + RL_SETSTATE(RL_STATE_SIGHANDLER); + +#if !defined (HAVE_BSD_SIGNALS) && !defined (HAVE_POSIX_SIGNALS) + /* Since the signal will not be blocked while we are in the signal + handler, ignore it until rl_clear_signals resets the catcher. */ +# if defined (SIGALRM) + if (sig == SIGINT || sig == SIGALRM) +# else + if (sig == SIGINT) +# endif + rl_set_sighandler (sig, SIG_IGN, &dummy_cxt); +#endif /* !HAVE_BSD_SIGNALS && !HAVE_POSIX_SIGNALS */ + + /* If there's a sig cleanup function registered, call it and `deregister' + the cleanup function to avoid multiple calls */ + if (_rl_sigcleanup) + { + (*_rl_sigcleanup) (sig, _rl_sigcleanarg); + _rl_sigcleanup = 0; + _rl_sigcleanarg = 0; + } + +#if defined (HAVE_POSIX_SIGNALS) + /* Get the current set of blocked signals. If we want to block a signal for + the duration of the cleanup functions, make sure to add it to SET and + set block_sig = 1 (see the SIGHUP case below). */ + block_sig = 0; /* sentinel to block signals with sigprocmask */ + sigemptyset (&set); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set); +#endif + + switch (sig) + { + case SIGINT: + _rl_reset_completion_state (); + rl_free_line_state (); +#if defined (READLINE_CALLBACKS) + rl_callback_sigcleanup (); +#endif + + /* FALLTHROUGH */ + +#if defined (SIGTSTP) + case SIGTSTP: + case SIGTTIN: + case SIGTTOU: +# if defined (HAVE_POSIX_SIGNALS) + /* Block SIGTTOU so we can restore the terminal settings to something + sane without stopping on SIGTTOU if we have been placed into the + background. Even trying to get the current terminal pgrp with + tcgetpgrp() will generate SIGTTOU, so we don't bother. We still do + this even if we've been stopped on SIGTTOU, since we handle signals + when we have returned from the signal handler and the signal is no + longer blocked. */ + sigaddset (&set, SIGTTOU); + block_sig = 1; +# endif +#endif /* SIGTSTP */ + /* Any signals that should be blocked during cleanup should go here. */ +#if defined (SIGHUP) + case SIGHUP: +# if defined (_AIX) + if (block_sig == 0) + { + sigaddset (&set, sig); + block_sig = 1; + } +# endif // _AIX +#endif + /* Signals that don't require blocking during cleanup should go here. */ + case SIGTERM: +#if defined (SIGALRM) + case SIGALRM: +#endif +#if defined (SIGQUIT) + case SIGQUIT: +#endif + + if (block_sig) + sigprocmask (SIG_BLOCK, &set, &oset); + + rl_echo_signal_char (sig); + rl_cleanup_after_signal (); + + /* At this point, the application's signal handler, if any, is the + current handler. */ + +#if defined (HAVE_POSIX_SIGNALS) + /* Unblock any signal(s) blocked above */ + if (block_sig) + sigprocmask (SIG_UNBLOCK, &oset, (sigset_t *)NULL); +#endif + + /* We don't have to bother unblocking the signal because we are not + running in a signal handler context. */ +#if 0 +#if defined (HAVE_POSIX_SIGNALS) + /* Make sure this signal is not blocked when we resend it to the + calling application. */ + sigemptyset (&set); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set); + sigdelset (&set, sig); +#else /* !HAVE_POSIX_SIGNALS */ +# if defined (HAVE_BSD_SIGNALS) + omask = sigblock (0); +# endif /* HAVE_BSD_SIGNALS */ +#endif /* !HAVE_POSIX_SIGNALS */ +#endif + +#if defined (__EMX__) + signal (sig, SIG_ACK); +#endif + +#if defined (HAVE_KILL) + kill (getpid (), sig); +#else + raise (sig); /* assume we have raise */ +#endif + + /* We don't need to modify the signal mask now that this is not run in + a signal handler context. */ +#if 0 + /* Let the signal that we just sent through if it is blocked. */ +#if defined (HAVE_POSIX_SIGNALS) + sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL); +#else /* !HAVE_POSIX_SIGNALS */ +# if defined (HAVE_BSD_SIGNALS) + sigsetmask (omask & ~(sigmask (sig))); +# endif /* HAVE_BSD_SIGNALS */ +#endif /* !HAVE_POSIX_SIGNALS */ +#endif + + rl_reset_after_signal (); + } + + RL_UNSETSTATE(RL_STATE_SIGHANDLER); + SIGHANDLER_RETURN; +} + +#if defined (SIGWINCH) +static RETSIGTYPE +rl_sigwinch_handler (int sig) +{ + SigHandler *oh; + +#if defined (MUST_REINSTALL_SIGHANDLERS) + sighandler_cxt dummy_winch; + + /* We don't want to change old_winch -- it holds the state of SIGWINCH + disposition set by the calling application. We need this state + because we call the application's SIGWINCH handler after updating + our own idea of the screen size. */ + rl_set_sighandler (SIGWINCH, rl_sigwinch_handler, &dummy_winch); +#endif + + RL_SETSTATE(RL_STATE_SIGHANDLER); + _rl_caught_signal = sig; + + /* If another sigwinch handler has been installed, call it. */ + oh = (SigHandler *)old_winch.sa_handler; + if (oh && oh != (SigHandler *)SIG_IGN && oh != (SigHandler *)SIG_DFL) + (*oh) (sig); + + RL_UNSETSTATE(RL_STATE_SIGHANDLER); + SIGHANDLER_RETURN; +} +#endif /* SIGWINCH */ + +/* Functions to manage signal handling. */ + +#if !defined (HAVE_POSIX_SIGNALS) +static int +rl_sigaction (int sig, sighandler_cxt *nh, sighandler_cxt *oh) +{ + oh->sa_handler = signal (sig, nh->sa_handler); + return 0; +} +#endif /* !HAVE_POSIX_SIGNALS */ + +/* Set up a readline-specific signal handler, saving the old signal + information in OHANDLER. Return the old signal handler, like + signal(). */ +static SigHandler * +rl_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler) +{ + sighandler_cxt old_handler; +#if defined (HAVE_POSIX_SIGNALS) + struct sigaction act; + + act.sa_handler = handler; +# if defined (SIGWINCH) + act.sa_flags = (sig == SIGWINCH) ? SA_RESTART : 0; +# else + act.sa_flags = 0; +# endif /* SIGWINCH */ + sigemptyset (&act.sa_mask); + sigemptyset (&ohandler->sa_mask); + sigaction (sig, &act, &old_handler); +#else + old_handler.sa_handler = (SigHandler *)signal (sig, handler); +#endif /* !HAVE_POSIX_SIGNALS */ + + /* XXX -- assume we have memcpy */ + /* If rl_set_signals is called twice in a row, don't set the old handler to + rl_signal_handler, because that would cause infinite recursion. */ + if (handler != rl_signal_handler || old_handler.sa_handler != rl_signal_handler) + memcpy (ohandler, &old_handler, sizeof (sighandler_cxt)); + + return (ohandler->sa_handler); +} + +/* Set disposition of SIG to HANDLER, returning old state in OHANDLER. Don't + change disposition if OHANDLER indicates the signal was ignored. */ +static void +rl_maybe_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler) +{ + sighandler_cxt dummy; + SigHandler *oh; + + sigemptyset (&dummy.sa_mask); + dummy.sa_flags = 0; + oh = rl_set_sighandler (sig, handler, ohandler); + if (oh == (SigHandler *)SIG_IGN) + rl_sigaction (sig, ohandler, &dummy); +} + +/* Set the disposition of SIG to HANDLER, if HANDLER->sa_handler indicates the + signal was not being ignored. MUST only be called for signals whose + disposition was changed using rl_maybe_set_sighandler or for which the + SIG_IGN check was performed inline (e.g., SIGALRM below). */ +static void +rl_maybe_restore_sighandler (int sig, sighandler_cxt *handler) +{ + sighandler_cxt dummy; + + sigemptyset (&dummy.sa_mask); + dummy.sa_flags = 0; + if (handler->sa_handler != SIG_IGN) + rl_sigaction (sig, handler, &dummy); +} + +int +rl_set_signals (void) +{ + sighandler_cxt dummy; + SigHandler *oh; +#if defined (HAVE_POSIX_SIGNALS) + static int sigmask_set = 0; + static sigset_t bset, oset; +#endif + +#if defined (HAVE_POSIX_SIGNALS) + if (rl_catch_signals && sigmask_set == 0) + { + sigemptyset (&bset); + + sigaddset (&bset, SIGINT); + sigaddset (&bset, SIGTERM); +#if defined (SIGHUP) + sigaddset (&bset, SIGHUP); +#endif +#if defined (SIGQUIT) + sigaddset (&bset, SIGQUIT); +#endif +#if defined (SIGALRM) + sigaddset (&bset, SIGALRM); +#endif +#if defined (SIGTSTP) + sigaddset (&bset, SIGTSTP); +#endif +#if defined (SIGTTIN) + sigaddset (&bset, SIGTTIN); +#endif +#if defined (SIGTTOU) + sigaddset (&bset, SIGTTOU); +#endif + sigmask_set = 1; + } +#endif /* HAVE_POSIX_SIGNALS */ + + if (rl_catch_signals && signals_set_flag == 0) + { +#if defined (HAVE_POSIX_SIGNALS) + sigemptyset (&_rl_orig_sigset); + sigprocmask (SIG_BLOCK, &bset, &_rl_orig_sigset); +#endif + + rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int); + rl_maybe_set_sighandler (SIGTERM, rl_signal_handler, &old_term); +#if defined (SIGHUP) + rl_maybe_set_sighandler (SIGHUP, rl_signal_handler, &old_hup); +#endif +#if defined (SIGQUIT) + rl_maybe_set_sighandler (SIGQUIT, rl_signal_handler, &old_quit); +#endif + +#if defined (SIGALRM) + oh = rl_set_sighandler (SIGALRM, rl_signal_handler, &old_alrm); + if (oh == (SigHandler *)SIG_IGN) + rl_sigaction (SIGALRM, &old_alrm, &dummy); +#if defined (HAVE_POSIX_SIGNALS) && defined (SA_RESTART) + /* If the application using readline has already installed a signal + handler with SA_RESTART, SIGALRM will cause reads to be restarted + automatically, so readline should just get out of the way. Since + we tested for SIG_IGN above, we can just test for SIG_DFL here. */ + if (oh != (SigHandler *)SIG_DFL && (old_alrm.sa_flags & SA_RESTART)) + rl_sigaction (SIGALRM, &old_alrm, &dummy); +#endif /* HAVE_POSIX_SIGNALS */ +#endif /* SIGALRM */ + +#if defined (SIGTSTP) + rl_maybe_set_sighandler (SIGTSTP, rl_signal_handler, &old_tstp); +#endif /* SIGTSTP */ + +#if defined (SIGTTOU) + rl_maybe_set_sighandler (SIGTTOU, rl_signal_handler, &old_ttou); +#endif /* SIGTTOU */ + +#if defined (SIGTTIN) + rl_maybe_set_sighandler (SIGTTIN, rl_signal_handler, &old_ttin); +#endif /* SIGTTIN */ + + signals_set_flag = 1; + +#if defined (HAVE_POSIX_SIGNALS) + sigprocmask (SIG_SETMASK, &_rl_orig_sigset, (sigset_t *)NULL); +#endif + } + else if (rl_catch_signals == 0) + { +#if defined (HAVE_POSIX_SIGNALS) + sigemptyset (&_rl_orig_sigset); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &_rl_orig_sigset); +#endif + } + +#if defined (SIGWINCH) + if (rl_catch_sigwinch && sigwinch_set_flag == 0) + { + rl_maybe_set_sighandler (SIGWINCH, rl_sigwinch_handler, &old_winch); + sigwinch_set_flag = 1; + } +#endif /* SIGWINCH */ + + return 0; +} + +int +rl_clear_signals (void) +{ + sighandler_cxt dummy; + + if (rl_catch_signals && signals_set_flag == 1) + { + /* Since rl_maybe_set_sighandler doesn't override a SIG_IGN handler, + we should in theory not have to restore a handler where + old_xxx.sa_handler == SIG_IGN. That's what rl_maybe_restore_sighandler + does. Fewer system calls should reduce readline's per-line + overhead */ + rl_maybe_restore_sighandler (SIGINT, &old_int); + rl_maybe_restore_sighandler (SIGTERM, &old_term); +#if defined (SIGHUP) + rl_maybe_restore_sighandler (SIGHUP, &old_hup); +#endif +#if defined (SIGQUIT) + rl_maybe_restore_sighandler (SIGQUIT, &old_quit); +#endif +#if defined (SIGALRM) + rl_maybe_restore_sighandler (SIGALRM, &old_alrm); +#endif + +#if defined (SIGTSTP) + rl_maybe_restore_sighandler (SIGTSTP, &old_tstp); +#endif /* SIGTSTP */ + +#if defined (SIGTTOU) + rl_maybe_restore_sighandler (SIGTTOU, &old_ttou); +#endif /* SIGTTOU */ + +#if defined (SIGTTIN) + rl_maybe_restore_sighandler (SIGTTIN, &old_ttin); +#endif /* SIGTTIN */ + + signals_set_flag = 0; + } + +#if defined (SIGWINCH) + if (rl_catch_sigwinch && sigwinch_set_flag == 1) + { + sigemptyset (&dummy.sa_mask); + rl_sigaction (SIGWINCH, &old_winch, &dummy); + sigwinch_set_flag = 0; + } +#endif + + return 0; +} + +/* Clean up the terminal and readline state after catching a signal, before + resending it to the calling application. */ +void +rl_cleanup_after_signal (void) +{ + _rl_clean_up_for_exit (); + if (rl_deprep_term_function) + (*rl_deprep_term_function) (); + rl_clear_pending_input (); + rl_clear_signals (); +} + +/* Reset the terminal and readline state after a signal handler returns. */ +void +rl_reset_after_signal (void) +{ + if (rl_prep_term_function) + (*rl_prep_term_function) (_rl_meta_flag); + rl_set_signals (); +} + +/* Free up the readline variable line state for the current line (undo list, + any partial history entry, any keyboard macros in progress, and any + numeric arguments in process) after catching a signal, before calling + rl_cleanup_after_signal(). */ +void +rl_free_line_state (void) +{ + register HIST_ENTRY *entry; + + rl_free_undo_list (); + + entry = current_history (); + if (entry) + entry->data = (char *)NULL; + + _rl_kill_kbd_macro (); + rl_clear_message (); + _rl_reset_argument (); +} + +int +rl_pending_signal (void) +{ + return (_rl_caught_signal); +} + +void +rl_check_signals (void) +{ + RL_CHECK_SIGNALS (); +} +#endif /* HANDLE_SIGNALS */ + +/* **************************************************************** */ +/* */ +/* SIGINT Management */ +/* */ +/* **************************************************************** */ + +#if defined (HAVE_POSIX_SIGNALS) +static sigset_t sigint_set, sigint_oset; +static sigset_t sigwinch_set, sigwinch_oset; +#else /* !HAVE_POSIX_SIGNALS */ +# if defined (HAVE_BSD_SIGNALS) +static int sigint_oldmask; +static int sigwinch_oldmask; +# endif /* HAVE_BSD_SIGNALS */ +#endif /* !HAVE_POSIX_SIGNALS */ + +static int sigint_blocked; +static int sigwinch_blocked; + +/* Cause SIGINT to not be delivered until the corresponding call to + release_sigint(). */ +void +_rl_block_sigint (void) +{ + if (sigint_blocked) + return; + + sigint_blocked = 1; +} + +/* Allow SIGINT to be delivered. */ +void +_rl_release_sigint (void) +{ + if (sigint_blocked == 0) + return; + + sigint_blocked = 0; + RL_CHECK_SIGNALS (); +} + +/* Cause SIGWINCH to not be delivered until the corresponding call to + release_sigwinch(). */ +void +_rl_block_sigwinch (void) +{ + if (sigwinch_blocked) + return; + +#if defined (SIGWINCH) + +#if defined (HAVE_POSIX_SIGNALS) + sigemptyset (&sigwinch_set); + sigemptyset (&sigwinch_oset); + sigaddset (&sigwinch_set, SIGWINCH); + sigprocmask (SIG_BLOCK, &sigwinch_set, &sigwinch_oset); +#else /* !HAVE_POSIX_SIGNALS */ +# if defined (HAVE_BSD_SIGNALS) + sigwinch_oldmask = sigblock (sigmask (SIGWINCH)); +# else /* !HAVE_BSD_SIGNALS */ +# if defined (HAVE_USG_SIGHOLD) + sighold (SIGWINCH); +# endif /* HAVE_USG_SIGHOLD */ +# endif /* !HAVE_BSD_SIGNALS */ +#endif /* !HAVE_POSIX_SIGNALS */ + +#endif /* SIGWINCH */ + + sigwinch_blocked = 1; +} + +/* Allow SIGWINCH to be delivered. */ +void +_rl_release_sigwinch (void) +{ + if (sigwinch_blocked == 0) + return; + +#if defined (SIGWINCH) + +#if defined (HAVE_POSIX_SIGNALS) + sigprocmask (SIG_SETMASK, &sigwinch_oset, (sigset_t *)NULL); +#else +# if defined (HAVE_BSD_SIGNALS) + sigsetmask (sigwinch_oldmask); +# else /* !HAVE_BSD_SIGNALS */ +# if defined (HAVE_USG_SIGHOLD) + sigrelse (SIGWINCH); +# endif /* HAVE_USG_SIGHOLD */ +# endif /* !HAVE_BSD_SIGNALS */ +#endif /* !HAVE_POSIX_SIGNALS */ + +#endif /* SIGWINCH */ + + sigwinch_blocked = 0; +} + +/* **************************************************************** */ +/* */ +/* Echoing special control characters */ +/* */ +/* **************************************************************** */ +void +rl_echo_signal_char (int sig) +{ + char cstr[3]; + int cslen, c; + + if (_rl_echoctl == 0 || _rl_echo_control_chars == 0) + return; + + switch (sig) + { + case SIGINT: c = _rl_intr_char; break; +#if defined (SIGQUIT) + case SIGQUIT: c = _rl_quit_char; break; +#endif +#if defined (SIGTSTP) + case SIGTSTP: c = _rl_susp_char; break; +#endif + default: return; + } + + if (CTRL_CHAR (c) || c == RUBOUT) + { + cstr[0] = '^'; + cstr[1] = CTRL_CHAR (c) ? UNCTRL (c) : '?'; + cstr[cslen = 2] = '\0'; + } + else + { + cstr[0] = c; + cstr[cslen = 1] = '\0'; + } + + _rl_output_some_chars (cstr, cslen); +} diff --git a/bash-5.1/lib/readline/tcap.h b/bash-5.1/lib/readline/tcap.h new file mode 100644 index 0000000..859e6ee --- /dev/null +++ b/bash-5.1/lib/readline/tcap.h @@ -0,0 +1,60 @@ +/* tcap.h -- termcap library functions and variables. */ + +/* Copyright (C) 1996-2015 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (_RLTCAP_H_) +#define _RLTCAP_H_ + +#if defined (HAVE_CONFIG_H) +# include "config.h" +#endif + +#if defined (HAVE_TERMCAP_H) +# if defined (__linux__) && !defined (SPEED_T_IN_SYS_TYPES) +# include "rltty.h" +# endif +# include +#elif defined (HAVE_NCURSES_TERMCAP_H) +# include +#else + +/* On Solaris2, sys/types.h #includes sys/reg.h, which #defines PC. + Unfortunately, PC is a global variable used by the termcap library. */ +#ifdef PC +# undef PC +#endif + +extern char PC; +extern char *UP, *BC; + +extern short ospeed; + +extern int tgetent (); +extern int tgetflag (); +extern int tgetnum (); +extern char *tgetstr (); + +extern int tputs (); + +extern char *tgoto (); + +#endif /* HAVE_TERMCAP_H */ + +#endif /* !_RLTCAP_H_ */ diff --git a/bash-5.1/lib/readline/terminal.c b/bash-5.1/lib/readline/terminal.c new file mode 100644 index 0000000..05415dc --- /dev/null +++ b/bash-5.1/lib/readline/terminal.c @@ -0,0 +1,845 @@ +/* terminal.c -- controlling the terminal with termcap. */ + +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#include "posixstat.h" +#include +#if defined (HAVE_SYS_FILE_H) +# include +#endif /* HAVE_SYS_FILE_H */ + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if defined (HAVE_LOCALE_H) +# include +#endif + +#include + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" + +#ifdef __MSDOS__ +# include +#endif + +#include "rltty.h" +#if defined (HAVE_SYS_IOCTL_H) +# include /* include for declaration of ioctl */ +#endif +#include "tcap.h" + +/* Some standard library routines. */ +#include "readline.h" +#include "history.h" + +#include "rlprivate.h" +#include "rlshell.h" +#include "xmalloc.h" + +#if defined (__MINGW32__) +# include +# include + +static void _win_get_screensize PARAMS((int *, int *)); +#endif + +#if defined (__EMX__) +static void _emx_get_screensize PARAMS((int *, int *)); +#endif + +/* If the calling application sets this to a non-zero value, readline will + use the $LINES and $COLUMNS environment variables to set its idea of the + window size before interrogating the kernel. */ +int rl_prefer_env_winsize = 0; + +/* If this is non-zero, readline will set LINES and COLUMNS in the + environment when it handles SIGWINCH. */ +int rl_change_environment = 1; + +/* **************************************************************** */ +/* */ +/* Terminal and Termcap */ +/* */ +/* **************************************************************** */ + +#ifndef __MSDOS__ +static char *term_buffer = (char *)NULL; +static char *term_string_buffer = (char *)NULL; +#endif + +static int tcap_initialized; + +#if !defined (__linux__) && !defined (NCURSES_VERSION) +# if defined (__EMX__) || defined (NEED_EXTERN_PC) +extern +# endif /* __EMX__ || NEED_EXTERN_PC */ +char PC, *BC, *UP; +#endif /* !__linux__ && !NCURSES_VERSION */ + +/* Some strings to control terminal actions. These are output by tputs (). */ +char *_rl_term_clreol; +char *_rl_term_clrpag; +char *_rl_term_clrscroll; +char *_rl_term_cr; +char *_rl_term_backspace; +char *_rl_term_goto; +char *_rl_term_pc; + +/* Non-zero if we determine that the terminal can do character insertion. */ +int _rl_terminal_can_insert = 0; + +/* How to insert characters. */ +char *_rl_term_im; +char *_rl_term_ei; +char *_rl_term_ic; +char *_rl_term_ip; +char *_rl_term_IC; + +/* How to delete characters. */ +char *_rl_term_dc; +char *_rl_term_DC; + +/* How to move forward a char, non-destructively */ +char *_rl_term_forward_char; + +/* How to go up a line. */ +char *_rl_term_up; + +/* A visible bell; char if the terminal can be made to flash the screen. */ +static char *_rl_visible_bell; + +/* Non-zero means the terminal can auto-wrap lines. */ +int _rl_term_autowrap = -1; + +/* Non-zero means that this terminal has a meta key. */ +static int term_has_meta; + +/* The sequences to write to turn on and off the meta key, if this + terminal has one. */ +static char *_rl_term_mm; +static char *_rl_term_mo; + +/* The sequences to enter and exit standout mode. */ +static char *_rl_term_so; +static char *_rl_term_se; + +/* The key sequences output by the arrow keys, if this terminal has any. */ +static char *_rl_term_ku; +static char *_rl_term_kd; +static char *_rl_term_kr; +static char *_rl_term_kl; + +/* How to initialize and reset the arrow keys, if this terminal has any. */ +static char *_rl_term_ks; +static char *_rl_term_ke; + +/* The key sequences sent by the Home and End keys, if any. */ +static char *_rl_term_kh; +static char *_rl_term_kH; +static char *_rl_term_at7; /* @7 */ + +/* Delete key */ +static char *_rl_term_kD; + +/* Insert key */ +static char *_rl_term_kI; + +/* Cursor control */ +static char *_rl_term_vs; /* very visible */ +static char *_rl_term_ve; /* normal */ + +/* It's not clear how HPUX is so broken here. */ +#ifdef TGETENT_BROKEN +# define TGETENT_SUCCESS 0 +#else +# define TGETENT_SUCCESS 1 +#endif +#ifdef TGETFLAG_BROKEN +# define TGETFLAG_SUCCESS 0 +#else +# define TGETFLAG_SUCCESS 1 +#endif +#define TGETFLAG(cap) (tgetflag (cap) == TGETFLAG_SUCCESS) + +static void bind_termcap_arrow_keys PARAMS((Keymap)); + +/* Variables that hold the screen dimensions, used by the display code. */ +int _rl_screenwidth, _rl_screenheight, _rl_screenchars; + +/* Non-zero means the user wants to enable the keypad. */ +int _rl_enable_keypad; + +/* Non-zero means the user wants to enable a meta key. */ +int _rl_enable_meta = 1; + +#if defined (__EMX__) +static void +_emx_get_screensize (int *swp, int *shp) +{ + int sz[2]; + + _scrsize (sz); + + if (swp) + *swp = sz[0]; + if (shp) + *shp = sz[1]; +} +#endif + +#if defined (__MINGW32__) +static void +_win_get_screensize (int *swp, int *shp) +{ + HANDLE hConOut; + CONSOLE_SCREEN_BUFFER_INFO scr; + + hConOut = GetStdHandle (STD_OUTPUT_HANDLE); + if (hConOut != INVALID_HANDLE_VALUE) + { + if (GetConsoleScreenBufferInfo (hConOut, &scr)) + { + *swp = scr.dwSize.X; + *shp = scr.srWindow.Bottom - scr.srWindow.Top + 1; + } + } +} +#endif + +/* Get readline's idea of the screen size. TTY is a file descriptor open + to the terminal. If IGNORE_ENV is true, we do not pay attention to the + values of $LINES and $COLUMNS. The tests for TERM_STRING_BUFFER being + non-null serve to check whether or not we have initialized termcap. */ +void +_rl_get_screen_size (int tty, int ignore_env) +{ + char *ss; +#if defined (TIOCGWINSZ) + struct winsize window_size; +#endif /* TIOCGWINSZ */ + int wr, wc; + + wr = wc = -1; +#if defined (TIOCGWINSZ) + if (ioctl (tty, TIOCGWINSZ, &window_size) == 0) + { + wc = (int) window_size.ws_col; + wr = (int) window_size.ws_row; + } +#endif /* TIOCGWINSZ */ + +#if defined (__EMX__) + _emx_get_screensize (&wc, &wr); +#elif defined (__MINGW32__) + _win_get_screensize (&wc, &wr); +#endif + + if (ignore_env || rl_prefer_env_winsize == 0) + { + _rl_screenwidth = wc; + _rl_screenheight = wr; + } + else + _rl_screenwidth = _rl_screenheight = -1; + + /* Environment variable COLUMNS overrides setting of "co" if IGNORE_ENV + is unset. If we prefer the environment, check it first before + assigning the value returned by the kernel. */ + if (_rl_screenwidth <= 0) + { + if (ignore_env == 0 && (ss = sh_get_env_value ("COLUMNS"))) + _rl_screenwidth = atoi (ss); + + if (_rl_screenwidth <= 0) + _rl_screenwidth = wc; + +#if defined (__DJGPP__) + if (_rl_screenwidth <= 0) + _rl_screenwidth = ScreenCols (); +#else + if (_rl_screenwidth <= 0 && term_string_buffer) + _rl_screenwidth = tgetnum ("co"); +#endif + } + + /* Environment variable LINES overrides setting of "li" if IGNORE_ENV + is unset. */ + if (_rl_screenheight <= 0) + { + if (ignore_env == 0 && (ss = sh_get_env_value ("LINES"))) + _rl_screenheight = atoi (ss); + + if (_rl_screenheight <= 0) + _rl_screenheight = wr; + +#if defined (__DJGPP__) + if (_rl_screenheight <= 0) + _rl_screenheight = ScreenRows (); +#else + if (_rl_screenheight <= 0 && term_string_buffer) + _rl_screenheight = tgetnum ("li"); +#endif + } + + /* If all else fails, default to 80x24 terminal. */ + if (_rl_screenwidth <= 1) + _rl_screenwidth = 80; + + if (_rl_screenheight <= 0) + _rl_screenheight = 24; + + /* If we're being compiled as part of bash, set the environment + variables $LINES and $COLUMNS to new values. Otherwise, just + do a pair of putenv () or setenv () calls. */ + if (rl_change_environment) + sh_set_lines_and_columns (_rl_screenheight, _rl_screenwidth); + + if (_rl_term_autowrap == 0) + _rl_screenwidth--; + + _rl_screenchars = _rl_screenwidth * _rl_screenheight; +} + +void +_rl_set_screen_size (int rows, int cols) +{ + if (_rl_term_autowrap == -1) + _rl_init_terminal_io (rl_terminal_name); + + if (rows > 0) + _rl_screenheight = rows; + if (cols > 0) + { + _rl_screenwidth = cols; + if (_rl_term_autowrap == 0) + _rl_screenwidth--; + } + + if (rows > 0 || cols > 0) + _rl_screenchars = _rl_screenwidth * _rl_screenheight; +} + +void +rl_set_screen_size (int rows, int cols) +{ + _rl_set_screen_size (rows, cols); +} + +void +rl_get_screen_size (int *rows, int *cols) +{ + if (rows) + *rows = _rl_screenheight; + if (cols) + *cols = _rl_screenwidth; +} + +void +rl_reset_screen_size (void) +{ + _rl_get_screen_size (fileno (rl_instream), 0); +} + +void +_rl_sigwinch_resize_terminal (void) +{ + _rl_get_screen_size (fileno (rl_instream), 1); +} + +void +rl_resize_terminal (void) +{ + _rl_get_screen_size (fileno (rl_instream), 1); + if (_rl_echoing_p) + { + if (CUSTOM_REDISPLAY_FUNC ()) + rl_forced_update_display (); + else if (RL_ISSTATE(RL_STATE_REDISPLAYING) == 0) + _rl_redisplay_after_sigwinch (); + } +} + +struct _tc_string { + const char * const tc_var; + char **tc_value; +}; + +/* This should be kept sorted, just in case we decide to change the + search algorithm to something smarter. */ +static const struct _tc_string tc_strings[] = +{ + { "@7", &_rl_term_at7 }, + { "DC", &_rl_term_DC }, + { "E3", &_rl_term_clrscroll }, + { "IC", &_rl_term_IC }, + { "ce", &_rl_term_clreol }, + { "cl", &_rl_term_clrpag }, + { "cr", &_rl_term_cr }, + { "dc", &_rl_term_dc }, + { "ei", &_rl_term_ei }, + { "ic", &_rl_term_ic }, + { "im", &_rl_term_im }, + { "kD", &_rl_term_kD }, /* delete */ + { "kH", &_rl_term_kH }, /* home down ?? */ + { "kI", &_rl_term_kI }, /* insert */ + { "kd", &_rl_term_kd }, + { "ke", &_rl_term_ke }, /* end keypad mode */ + { "kh", &_rl_term_kh }, /* home */ + { "kl", &_rl_term_kl }, + { "kr", &_rl_term_kr }, + { "ks", &_rl_term_ks }, /* start keypad mode */ + { "ku", &_rl_term_ku }, + { "le", &_rl_term_backspace }, + { "mm", &_rl_term_mm }, + { "mo", &_rl_term_mo }, + { "nd", &_rl_term_forward_char }, + { "pc", &_rl_term_pc }, + { "se", &_rl_term_se }, + { "so", &_rl_term_so }, + { "up", &_rl_term_up }, + { "vb", &_rl_visible_bell }, + { "vs", &_rl_term_vs }, + { "ve", &_rl_term_ve }, +}; + +#define NUM_TC_STRINGS (sizeof (tc_strings) / sizeof (struct _tc_string)) + +/* Read the desired terminal capability strings into BP. The capabilities + are described in the TC_STRINGS table. */ +static void +get_term_capabilities (char **bp) +{ +#if !defined (__DJGPP__) /* XXX - doesn't DJGPP have a termcap library? */ + register int i; + + for (i = 0; i < NUM_TC_STRINGS; i++) + *(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp); +#endif + tcap_initialized = 1; +} + +int +_rl_init_terminal_io (const char *terminal_name) +{ + const char *term; + char *buffer; + int tty, tgetent_ret, dumbterm; + + term = terminal_name ? terminal_name : sh_get_env_value ("TERM"); + _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = _rl_term_clrscroll = (char *)NULL; + tty = rl_instream ? fileno (rl_instream) : 0; + + if (term == 0) + term = "dumb"; + + dumbterm = STREQ (term, "dumb"); + +#ifdef __MSDOS__ + _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL; + _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL; + _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL; + _rl_term_mm = _rl_term_mo = (char *)NULL; + _rl_terminal_can_insert = term_has_meta = _rl_term_autowrap = 0; + _rl_term_cr = "\r"; + _rl_term_backspace = (char *)NULL; + _rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL; + _rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL; + _rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL; + _rl_term_so = _rl_term_se = (char *)NULL; +#if defined(HACK_TERMCAP_MOTION) + _rl_term_forward_char = (char *)NULL; +#endif + + _rl_get_screen_size (tty, 0); +#else /* !__MSDOS__ */ + /* I've separated this out for later work on not calling tgetent at all + if the calling application has supplied a custom redisplay function, + (and possibly if the application has supplied a custom input function). */ + if (CUSTOM_REDISPLAY_FUNC()) + { + tgetent_ret = -1; + } + else + { + if (term_string_buffer == 0) + term_string_buffer = (char *)xmalloc(2032); + + if (term_buffer == 0) + term_buffer = (char *)xmalloc(4080); + + buffer = term_string_buffer; + + tgetent_ret = tgetent (term_buffer, term); + } + + if (tgetent_ret != TGETENT_SUCCESS) + { + FREE (term_string_buffer); + FREE (term_buffer); + buffer = term_buffer = term_string_buffer = (char *)NULL; + + _rl_term_autowrap = 0; /* used by _rl_get_screen_size */ + + /* Allow calling application to set default height and width, using + rl_set_screen_size */ + if (_rl_screenwidth <= 0 || _rl_screenheight <= 0) + { +#if defined (__EMX__) + _emx_get_screensize (&_rl_screenwidth, &_rl_screenheight); + _rl_screenwidth--; +#else /* !__EMX__ */ + _rl_get_screen_size (tty, 0); +#endif /* !__EMX__ */ + } + + /* Defaults. */ + if (_rl_screenwidth <= 0 || _rl_screenheight <= 0) + { + _rl_screenwidth = 79; + _rl_screenheight = 24; + } + + /* Everything below here is used by the redisplay code (tputs). */ + _rl_screenchars = _rl_screenwidth * _rl_screenheight; + _rl_term_cr = "\r"; + _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL; + _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL; + _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL; + _rl_term_kh = _rl_term_kH = _rl_term_kI = _rl_term_kD = (char *)NULL; + _rl_term_ks = _rl_term_ke = _rl_term_at7 = (char *)NULL; + _rl_term_mm = _rl_term_mo = (char *)NULL; + _rl_term_ve = _rl_term_vs = (char *)NULL; + _rl_term_forward_char = (char *)NULL; + _rl_term_so = _rl_term_se = (char *)NULL; + _rl_terminal_can_insert = term_has_meta = 0; + + /* Assume generic unknown terminal can't handle the enable/disable + escape sequences */ + _rl_enable_bracketed_paste = 0; + + /* Reasonable defaults for tgoto(). Readline currently only uses + tgoto if _rl_term_IC or _rl_term_DC is defined, but just in case we + change that later... */ + PC = '\0'; + BC = _rl_term_backspace = "\b"; + UP = _rl_term_up; + + return 0; + } + + get_term_capabilities (&buffer); + + /* Set up the variables that the termcap library expects the application + to provide. */ + PC = _rl_term_pc ? *_rl_term_pc : 0; + BC = _rl_term_backspace; + UP = _rl_term_up; + + if (_rl_term_cr == 0) + _rl_term_cr = "\r"; + + _rl_term_autowrap = TGETFLAG ("am") && TGETFLAG ("xn"); + + /* Allow calling application to set default height and width, using + rl_set_screen_size */ + if (_rl_screenwidth <= 0 || _rl_screenheight <= 0) + _rl_get_screen_size (tty, 0); + + /* "An application program can assume that the terminal can do + character insertion if *any one of* the capabilities `IC', + `im', `ic' or `ip' is provided." But we can't do anything if + only `ip' is provided, so... */ + _rl_terminal_can_insert = (_rl_term_IC || _rl_term_im || _rl_term_ic); + + /* Check to see if this terminal has a meta key and clear the capability + variables if there is none. */ + term_has_meta = TGETFLAG ("km"); + if (term_has_meta == 0) + _rl_term_mm = _rl_term_mo = (char *)NULL; +#endif /* !__MSDOS__ */ + + /* Attempt to find and bind the arrow keys. Do not override already + bound keys in an overzealous attempt, however. */ + + bind_termcap_arrow_keys (emacs_standard_keymap); + +#if defined (VI_MODE) + bind_termcap_arrow_keys (vi_movement_keymap); + bind_termcap_arrow_keys (vi_insertion_keymap); +#endif /* VI_MODE */ + + /* There's no way to determine whether or not a given terminal supports + bracketed paste mode, so we assume a terminal named "dumb" does not. */ + if (dumbterm) + _rl_enable_bracketed_paste = 0; + + return 0; +} + +/* Bind the arrow key sequences from the termcap description in MAP. */ +static void +bind_termcap_arrow_keys (Keymap map) +{ + Keymap xkeymap; + + xkeymap = _rl_keymap; + _rl_keymap = map; + + rl_bind_keyseq_if_unbound (_rl_term_ku, rl_get_previous_history); + rl_bind_keyseq_if_unbound (_rl_term_kd, rl_get_next_history); + rl_bind_keyseq_if_unbound (_rl_term_kr, rl_forward_char); + rl_bind_keyseq_if_unbound (_rl_term_kl, rl_backward_char); + + rl_bind_keyseq_if_unbound (_rl_term_kh, rl_beg_of_line); /* Home */ + rl_bind_keyseq_if_unbound (_rl_term_at7, rl_end_of_line); /* End */ + + rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete); + rl_bind_keyseq_if_unbound (_rl_term_kI, rl_overwrite_mode); /* Insert */ + + _rl_keymap = xkeymap; +} + +char * +rl_get_termcap (const char *cap) +{ + register int i; + + if (tcap_initialized == 0) + return ((char *)NULL); + for (i = 0; i < NUM_TC_STRINGS; i++) + { + if (tc_strings[i].tc_var[0] == cap[0] && strcmp (tc_strings[i].tc_var, cap) == 0) + return *(tc_strings[i].tc_value); + } + return ((char *)NULL); +} + +/* Re-initialize the terminal considering that the TERM/TERMCAP variable + has changed. */ +int +rl_reset_terminal (const char *terminal_name) +{ + _rl_screenwidth = _rl_screenheight = 0; + _rl_init_terminal_io (terminal_name); + return 0; +} + +/* A function for the use of tputs () */ +#ifdef _MINIX +void +_rl_output_character_function (int c) +{ + putc (c, _rl_out_stream); +} +#else /* !_MINIX */ +int +_rl_output_character_function (int c) +{ + return putc (c, _rl_out_stream); +} +#endif /* !_MINIX */ + +/* Write COUNT characters from STRING to the output stream. */ +void +_rl_output_some_chars (const char *string, int count) +{ + fwrite (string, 1, count, _rl_out_stream); +} + +/* Move the cursor back. */ +int +_rl_backspace (int count) +{ + register int i; + +#ifndef __MSDOS__ + if (_rl_term_backspace) + for (i = 0; i < count; i++) + tputs (_rl_term_backspace, 1, _rl_output_character_function); + else +#endif + for (i = 0; i < count; i++) + putc ('\b', _rl_out_stream); + return 0; +} + +/* Move to the start of the next line. */ +int +rl_crlf (void) +{ +#if defined (NEW_TTY_DRIVER) || defined (__MINT__) + if (_rl_term_cr) + tputs (_rl_term_cr, 1, _rl_output_character_function); +#endif /* NEW_TTY_DRIVER || __MINT__ */ + putc ('\n', _rl_out_stream); + return 0; +} + +void +_rl_cr (void) +{ +#if defined (__MSDOS__) + putc ('\r', rl_outstream); +#else + tputs (_rl_term_cr, 1, _rl_output_character_function); +#endif +} + +/* Ring the terminal bell. */ +int +rl_ding (void) +{ + if (_rl_echoing_p) + { + switch (_rl_bell_preference) + { + case NO_BELL: + default: + break; + case VISIBLE_BELL: + if (_rl_visible_bell) + { +#ifdef __DJGPP__ + ScreenVisualBell (); +#else + tputs (_rl_visible_bell, 1, _rl_output_character_function); +#endif + break; + } + /* FALLTHROUGH */ + case AUDIBLE_BELL: + fprintf (stderr, "\007"); + fflush (stderr); + break; + } + return (0); + } + return (-1); +} + +/* **************************************************************** */ +/* */ +/* Entering and leaving terminal standout mode */ +/* */ +/* **************************************************************** */ + +void +_rl_standout_on (void) +{ +#ifndef __MSDOS__ + if (_rl_term_so && _rl_term_se) + tputs (_rl_term_so, 1, _rl_output_character_function); +#endif +} + +void +_rl_standout_off (void) +{ +#ifndef __MSDOS__ + if (_rl_term_so && _rl_term_se) + tputs (_rl_term_se, 1, _rl_output_character_function); +#endif +} + +/* **************************************************************** */ +/* */ +/* Controlling the Meta Key and Keypad */ +/* */ +/* **************************************************************** */ + +static int enabled_meta = 0; /* flag indicating we enabled meta mode */ + +void +_rl_enable_meta_key (void) +{ +#if !defined (__DJGPP__) + if (term_has_meta && _rl_term_mm) + { + tputs (_rl_term_mm, 1, _rl_output_character_function); + enabled_meta = 1; + } +#endif +} + +void +_rl_disable_meta_key (void) +{ +#if !defined (__DJGPP__) + if (term_has_meta && _rl_term_mo && enabled_meta) + { + tputs (_rl_term_mo, 1, _rl_output_character_function); + enabled_meta = 0; + } +#endif +} + +void +_rl_control_keypad (int on) +{ +#if !defined (__DJGPP__) + if (on && _rl_term_ks) + tputs (_rl_term_ks, 1, _rl_output_character_function); + else if (!on && _rl_term_ke) + tputs (_rl_term_ke, 1, _rl_output_character_function); +#endif +} + +/* **************************************************************** */ +/* */ +/* Controlling the Cursor */ +/* */ +/* **************************************************************** */ + +/* Set the cursor appropriately depending on IM, which is one of the + insert modes (insert or overwrite). Insert mode gets the normal + cursor. Overwrite mode gets a very visible cursor. Only does + anything if we have both capabilities. */ +void +_rl_set_cursor (int im, int force) +{ +#ifndef __MSDOS__ + if (_rl_term_ve && _rl_term_vs) + { + if (force || im != rl_insert_mode) + { + if (im == RL_IM_OVERWRITE) + tputs (_rl_term_vs, 1, _rl_output_character_function); + else + tputs (_rl_term_ve, 1, _rl_output_character_function); + } + } +#endif +} diff --git a/bash-5.1/lib/readline/text.c b/bash-5.1/lib/readline/text.c new file mode 100644 index 0000000..2567dea --- /dev/null +++ b/bash-5.1/lib/readline/text.c @@ -0,0 +1,1880 @@ +/* text.c -- text handling commands for readline. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if defined (HAVE_LOCALE_H) +# include +#endif + +#include + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" +#include "rlmbutil.h" + +#if defined (__EMX__) +# define INCL_DOSPROCESS +# include +#endif /* __EMX__ */ + +/* Some standard library routines. */ +#include "readline.h" +#include "history.h" + +#include "rlprivate.h" +#include "rlshell.h" +#include "xmalloc.h" + +/* Forward declarations. */ +static int rl_change_case PARAMS((int, int)); +static int _rl_char_search PARAMS((int, int, int)); + +#if defined (READLINE_CALLBACKS) +static int _rl_insert_next_callback PARAMS((_rl_callback_generic_arg *)); +static int _rl_char_search_callback PARAMS((_rl_callback_generic_arg *)); +#endif + +/* The largest chunk of text that can be inserted in one call to + rl_insert_text. Text blocks larger than this are divided. */ +#define TEXT_COUNT_MAX 1024 + +int _rl_optimize_typeahead = 1; /* rl_insert tries to read typeahead */ + +/* **************************************************************** */ +/* */ +/* Insert and Delete */ +/* */ +/* **************************************************************** */ + +/* Insert a string of text into the line at point. This is the only + way that you should do insertion. _rl_insert_char () calls this + function. Returns the number of characters inserted. */ +int +rl_insert_text (const char *string) +{ + register int i, l; + + l = (string && *string) ? strlen (string) : 0; + if (l == 0) + return 0; + + if (rl_end + l >= rl_line_buffer_len) + rl_extend_line_buffer (rl_end + l); + + for (i = rl_end; i >= rl_point; i--) + rl_line_buffer[i + l] = rl_line_buffer[i]; + strncpy (rl_line_buffer + rl_point, string, l); + + /* Remember how to undo this if we aren't undoing something. */ + if (_rl_doing_an_undo == 0) + { + /* If possible and desirable, concatenate the undos. */ + if ((l == 1) && + rl_undo_list && + (rl_undo_list->what == UNDO_INSERT) && + (rl_undo_list->end == rl_point) && + (rl_undo_list->end - rl_undo_list->start < 20)) + rl_undo_list->end++; + else + rl_add_undo (UNDO_INSERT, rl_point, rl_point + l, (char *)NULL); + } + rl_point += l; + rl_end += l; + rl_line_buffer[rl_end] = '\0'; + return l; +} + +/* Delete the string between FROM and TO. FROM is inclusive, TO is not. + Returns the number of characters deleted. */ +int +rl_delete_text (int from, int to) +{ + register char *text; + register int diff, i; + + /* Fix it if the caller is confused. */ + if (from > to) + SWAP (from, to); + + /* fix boundaries */ + if (to > rl_end) + { + to = rl_end; + if (from > to) + from = to; + } + if (from < 0) + from = 0; + + text = rl_copy_text (from, to); + + /* Some versions of strncpy() can't handle overlapping arguments. */ + diff = to - from; + for (i = from; i < rl_end - diff; i++) + rl_line_buffer[i] = rl_line_buffer[i + diff]; + + /* Remember how to undo this delete. */ + if (_rl_doing_an_undo == 0) + rl_add_undo (UNDO_DELETE, from, to, text); + else + xfree (text); + + rl_end -= diff; + rl_line_buffer[rl_end] = '\0'; + _rl_fix_mark (); + return (diff); +} + +/* Fix up point so that it is within the line boundaries after killing + text. If FIX_MARK_TOO is non-zero, the mark is forced within line + boundaries also. */ + +#define _RL_FIX_POINT(x) \ + do { \ + if (x > rl_end) \ + x = rl_end; \ + else if (x < 0) \ + x = 0; \ + } while (0) + +void +_rl_fix_point (int fix_mark_too) +{ + _RL_FIX_POINT (rl_point); + if (fix_mark_too) + _RL_FIX_POINT (rl_mark); +} + +void +_rl_fix_mark (void) +{ + _RL_FIX_POINT (rl_mark); +} +#undef _RL_FIX_POINT + +/* Replace the contents of the line buffer between START and END with + TEXT. The operation is undoable. To replace the entire line in an + undoable mode, use _rl_replace_text(text, 0, rl_end); */ +int +_rl_replace_text (const char *text, int start, int end) +{ + int n; + + n = 0; + rl_begin_undo_group (); + if (start <= end) + rl_delete_text (start, end + 1); + rl_point = start; + if (*text) + n = rl_insert_text (text); + rl_end_undo_group (); + + return n; +} + +/* Replace the current line buffer contents with TEXT. If CLEAR_UNDO is + non-zero, we free the current undo list. */ +void +rl_replace_line (const char *text, int clear_undo) +{ + int len; + + len = strlen (text); + if (len >= rl_line_buffer_len) + rl_extend_line_buffer (len); + strcpy (rl_line_buffer, text); + rl_end = len; + + if (clear_undo) + rl_free_undo_list (); + + _rl_fix_point (1); +} + +/* **************************************************************** */ +/* */ +/* Readline character functions */ +/* */ +/* **************************************************************** */ + +/* This is not a gap editor, just a stupid line input routine. No hair + is involved in writing any of the functions, and none should be. */ + +/* Note that: + + rl_end is the place in the string that we would place '\0'; + i.e., it is always safe to place '\0' there. + + rl_point is the place in the string where the cursor is. Sometimes + this is the same as rl_end. + + Any command that is called interactively receives two arguments. + The first is a count: the numeric arg passed to this command. + The second is the key which invoked this command. +*/ + +/* **************************************************************** */ +/* */ +/* Movement Commands */ +/* */ +/* **************************************************************** */ + +/* Note that if you `optimize' the display for these functions, you cannot + use said functions in other functions which do not do optimizing display. + I.e., you will have to update the data base for rl_redisplay, and you + might as well let rl_redisplay do that job. */ + +/* Move forward COUNT bytes. */ +int +rl_forward_byte (int count, int key) +{ + if (count < 0) + return (rl_backward_byte (-count, key)); + + if (count > 0) + { + int end, lend; + + end = rl_point + count; +#if defined (VI_MODE) + lend = rl_end > 0 ? rl_end - (VI_COMMAND_MODE()) : rl_end; +#else + lend = rl_end; +#endif + + if (end > lend) + { + rl_point = lend; + rl_ding (); + } + else + rl_point = end; + } + + if (rl_end < 0) + rl_end = 0; + + return 0; +} + +int +_rl_forward_char_internal (int count) +{ + int point; + +#if defined (HANDLE_MULTIBYTE) + point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO); + +#if defined (VI_MODE) + if (point >= rl_end && VI_COMMAND_MODE()) + point = _rl_find_prev_mbchar (rl_line_buffer, rl_end, MB_FIND_NONZERO); +#endif + + if (rl_end < 0) + rl_end = 0; +#else + point = rl_point + count; +#endif + + if (point > rl_end) + point = rl_end; + return (point); +} + +int +_rl_backward_char_internal (int count) +{ + int point; + + point = rl_point; +#if defined (HANDLE_MULTIBYTE) + if (count > 0) + { + while (count > 0 && point > 0) + { + point = _rl_find_prev_mbchar (rl_line_buffer, point, MB_FIND_NONZERO); + count--; + } + if (count > 0) + return 0; /* XXX - rl_ding() here? */ + } +#else + if (count > 0) + point -= count; +#endif + + if (point < 0) + point = 0; + return (point); +} + +#if defined (HANDLE_MULTIBYTE) +/* Move forward COUNT characters. */ +int +rl_forward_char (int count, int key) +{ + int point; + + if (MB_CUR_MAX == 1 || rl_byte_oriented) + return (rl_forward_byte (count, key)); + + if (count < 0) + return (rl_backward_char (-count, key)); + + if (count > 0) + { + if (rl_point == rl_end && EMACS_MODE()) + { + rl_ding (); + return 0; + } + + point = _rl_forward_char_internal (count); + + if (rl_point == point) + rl_ding (); + + rl_point = point; + } + + return 0; +} +#else /* !HANDLE_MULTIBYTE */ +int +rl_forward_char (int count, int key) +{ + return (rl_forward_byte (count, key)); +} +#endif /* !HANDLE_MULTIBYTE */ + +/* Backwards compatibility. */ +int +rl_forward (int count, int key) +{ + return (rl_forward_char (count, key)); +} + +/* Move backward COUNT bytes. */ +int +rl_backward_byte (int count, int key) +{ + if (count < 0) + return (rl_forward_byte (-count, key)); + + if (count > 0) + { + if (rl_point < count) + { + rl_point = 0; + rl_ding (); + } + else + rl_point -= count; + } + + if (rl_point < 0) + rl_point = 0; + + return 0; +} + +#if defined (HANDLE_MULTIBYTE) +/* Move backward COUNT characters. */ +int +rl_backward_char (int count, int key) +{ + int point; + + if (MB_CUR_MAX == 1 || rl_byte_oriented) + return (rl_backward_byte (count, key)); + + if (count < 0) + return (rl_forward_char (-count, key)); + + if (count > 0) + { + point = rl_point; + + while (count > 0 && point > 0) + { + point = _rl_find_prev_mbchar (rl_line_buffer, point, MB_FIND_NONZERO); + count--; + } + if (count > 0) + { + rl_point = 0; + rl_ding (); + } + else + rl_point = point; + } + + return 0; +} +#else +int +rl_backward_char (int count, int key) +{ + return (rl_backward_byte (count, key)); +} +#endif + +/* Backwards compatibility. */ +int +rl_backward (int count, int key) +{ + return (rl_backward_char (count, key)); +} + +/* Move to the beginning of the line. */ +int +rl_beg_of_line (int count, int key) +{ + rl_point = 0; + return 0; +} + +/* Move to the end of the line. */ +int +rl_end_of_line (int count, int key) +{ + rl_point = rl_end; + return 0; +} + +/* Move forward a word. We do what Emacs does. Handles multibyte chars. */ +int +rl_forward_word (int count, int key) +{ + int c; + + if (count < 0) + return (rl_backward_word (-count, key)); + + while (count) + { + if (rl_point > rl_end) + rl_point = rl_end; + if (rl_point == rl_end) + return 0; + + /* If we are not in a word, move forward until we are in one. + Then, move forward until we hit a non-alphabetic character. */ + c = _rl_char_value (rl_line_buffer, rl_point); + + if (_rl_walphabetic (c) == 0) + { + rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); + while (rl_point < rl_end) + { + c = _rl_char_value (rl_line_buffer, rl_point); + if (_rl_walphabetic (c)) + break; + rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); + } + } + + if (rl_point > rl_end) + rl_point = rl_end; + if (rl_point == rl_end) + return 0; + + rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); + while (rl_point < rl_end) + { + c = _rl_char_value (rl_line_buffer, rl_point); + if (_rl_walphabetic (c) == 0) + break; + rl_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); + } + + --count; + } + + return 0; +} + +/* Move backward a word. We do what Emacs does. Handles multibyte chars. */ +int +rl_backward_word (int count, int key) +{ + int c, p; + + if (count < 0) + return (rl_forward_word (-count, key)); + + while (count) + { + if (rl_point == 0) + return 0; + + /* Like rl_forward_word (), except that we look at the characters + just before point. */ + + p = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); + c = _rl_char_value (rl_line_buffer, p); + + if (_rl_walphabetic (c) == 0) + { + rl_point = p; + while (rl_point > 0) + { + p = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); + c = _rl_char_value (rl_line_buffer, p); + if (_rl_walphabetic (c)) + break; + rl_point = p; + } + } + + while (rl_point) + { + p = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); + c = _rl_char_value (rl_line_buffer, p); + if (_rl_walphabetic (c) == 0) + break; + else + rl_point = p; + } + + --count; + } + + return 0; +} + +/* Clear the current line. Numeric argument to C-l does this. */ +int +rl_refresh_line (int ignore1, int ignore2) +{ + _rl_refresh_line (); + rl_display_fixed = 1; + return 0; +} + +/* C-l typed to a line without quoting clears the screen, and then reprints + the prompt and the current input line. Given a numeric arg, redraw only + the current line. */ +int +rl_clear_screen (int count, int key) +{ + if (rl_explicit_arg) + { + rl_refresh_line (count, key); + return 0; + } + + _rl_clear_screen (0); /* calls termcap function to clear screen */ + rl_keep_mark_active (); + rl_forced_update_display (); + rl_display_fixed = 1; + + return 0; +} + +int +rl_clear_display (int count, int key) +{ + _rl_clear_screen (1); /* calls termcap function to clear screen and scrollback buffer */ + rl_forced_update_display (); + rl_display_fixed = 1; + + return 0; +} + +int +rl_previous_screen_line (int count, int key) +{ + int c; + + c = _rl_term_autowrap ? _rl_screenwidth : (_rl_screenwidth + 1); + return (rl_backward_char (c, key)); +} + +int +rl_next_screen_line (int count, int key) +{ + int c; + + c = _rl_term_autowrap ? _rl_screenwidth : (_rl_screenwidth + 1); + return (rl_forward_char (c, key)); +} + +int +rl_skip_csi_sequence (int count, int key) +{ + int ch; + + RL_SETSTATE (RL_STATE_MOREINPUT); + do + ch = rl_read_key (); + while (ch >= 0x20 && ch < 0x40); + RL_UNSETSTATE (RL_STATE_MOREINPUT); + + return (ch < 0); +} + +int +rl_arrow_keys (int count, int key) +{ + int ch; + + RL_SETSTATE(RL_STATE_MOREINPUT); + ch = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + if (ch < 0) + return (1); + + switch (_rl_to_upper (ch)) + { + case 'A': + rl_get_previous_history (count, ch); + break; + + case 'B': + rl_get_next_history (count, ch); + break; + + case 'C': + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_forward_char (count, ch); + else + rl_forward_byte (count, ch); + break; + + case 'D': + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_backward_char (count, ch); + else + rl_backward_byte (count, ch); + break; + + default: + rl_ding (); + } + + return 0; +} + +/* **************************************************************** */ +/* */ +/* Text commands */ +/* */ +/* **************************************************************** */ + +#ifdef HANDLE_MULTIBYTE +static char pending_bytes[MB_LEN_MAX]; +static int pending_bytes_length = 0; +static mbstate_t ps = {0}; +#endif + +/* Insert the character C at the current location, moving point forward. + If C introduces a multibyte sequence, we read the whole sequence and + then insert the multibyte char into the line buffer. */ +int +_rl_insert_char (int count, int c) +{ + register int i; + char *string; +#ifdef HANDLE_MULTIBYTE + int string_size; + char incoming[MB_LEN_MAX + 1]; + int incoming_length = 0; + mbstate_t ps_back; + static int stored_count = 0; +#endif + + if (count <= 0) + return 0; + +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX == 1 || rl_byte_oriented) + { + incoming[0] = c; + incoming[1] = '\0'; + incoming_length = 1; + } + else if (_rl_utf8locale && (c & 0x80) == 0) + { + incoming[0] = c; + incoming[1] = '\0'; + incoming_length = 1; + } + else + { + wchar_t wc; + size_t ret; + + if (stored_count <= 0) + stored_count = count; + else + count = stored_count; + + ps_back = ps; + pending_bytes[pending_bytes_length++] = c; + ret = mbrtowc (&wc, pending_bytes, pending_bytes_length, &ps); + + if (ret == (size_t)-2) + { + /* Bytes too short to compose character, try to wait for next byte. + Restore the state of the byte sequence, because in this case the + effect of mbstate is undefined. */ + ps = ps_back; + return 1; + } + else if (ret == (size_t)-1) + { + /* Invalid byte sequence for the current locale. Treat first byte + as a single character. */ + incoming[0] = pending_bytes[0]; + incoming[1] = '\0'; + incoming_length = 1; + pending_bytes_length--; + memmove (pending_bytes, pending_bytes + 1, pending_bytes_length); + /* Clear the state of the byte sequence, because in this case the + effect of mbstate is undefined. */ + memset (&ps, 0, sizeof (mbstate_t)); + } + else if (ret == (size_t)0) + { + incoming[0] = '\0'; + incoming_length = 0; + pending_bytes_length--; + /* Clear the state of the byte sequence, because in this case the + effect of mbstate is undefined. */ + memset (&ps, 0, sizeof (mbstate_t)); + } + else if (ret == 1) + { + incoming[0] = pending_bytes[0]; + incoming[incoming_length = 1] = '\0'; + pending_bytes_length = 0; + } + else + { + /* We successfully read a single multibyte character. */ + memcpy (incoming, pending_bytes, pending_bytes_length); + incoming[pending_bytes_length] = '\0'; + incoming_length = pending_bytes_length; + pending_bytes_length = 0; + } + } +#endif /* HANDLE_MULTIBYTE */ + + /* If we can optimize, then do it. But don't let people crash + readline because of extra large arguments. */ + if (count > 1 && count <= TEXT_COUNT_MAX) + { +#if defined (HANDLE_MULTIBYTE) + string_size = count * incoming_length; + string = (char *)xmalloc (1 + string_size); + + i = 0; + while (i < string_size) + { + if (incoming_length == 1) + string[i++] = *incoming; + else + { + strncpy (string + i, incoming, incoming_length); + i += incoming_length; + } + } + incoming_length = 0; + stored_count = 0; +#else /* !HANDLE_MULTIBYTE */ + string = (char *)xmalloc (1 + count); + + for (i = 0; i < count; i++) + string[i] = c; +#endif /* !HANDLE_MULTIBYTE */ + + string[i] = '\0'; + rl_insert_text (string); + xfree (string); + + return 0; + } + + if (count > TEXT_COUNT_MAX) + { + int decreaser; +#if defined (HANDLE_MULTIBYTE) + string_size = incoming_length * TEXT_COUNT_MAX; + string = (char *)xmalloc (1 + string_size); + + i = 0; + while (i < string_size) + { + if (incoming_length == 1) + string[i++] = *incoming; + else + { + strncpy (string + i, incoming, incoming_length); + i += incoming_length; + } + } + + while (count) + { + decreaser = (count > TEXT_COUNT_MAX) ? TEXT_COUNT_MAX : count; + string[decreaser*incoming_length] = '\0'; + rl_insert_text (string); + count -= decreaser; + } + + xfree (string); + incoming_length = 0; + stored_count = 0; +#else /* !HANDLE_MULTIBYTE */ + char str[TEXT_COUNT_MAX+1]; + + for (i = 0; i < TEXT_COUNT_MAX; i++) + str[i] = c; + + while (count) + { + decreaser = (count > TEXT_COUNT_MAX ? TEXT_COUNT_MAX : count); + str[decreaser] = '\0'; + rl_insert_text (str); + count -= decreaser; + } +#endif /* !HANDLE_MULTIBYTE */ + + return 0; + } + + if (MB_CUR_MAX == 1 || rl_byte_oriented) + { + /* We are inserting a single character. + If there is pending input, then make a string of all of the + pending characters that are bound to rl_insert, and insert + them all. Don't do this if we're current reading input from + a macro. */ + if ((RL_ISSTATE (RL_STATE_MACROINPUT) == 0) && _rl_pushed_input_available ()) + _rl_insert_typein (c); + else + { + /* Inserting a single character. */ + char str[2]; + + str[1] = '\0'; + str[0] = c; + rl_insert_text (str); + } + } +#if defined (HANDLE_MULTIBYTE) + else + { + rl_insert_text (incoming); + stored_count = 0; + } +#endif + + return 0; +} + +/* Overwrite the character at point (or next COUNT characters) with C. + If C introduces a multibyte character sequence, read the entire sequence + before starting the overwrite loop. */ +int +_rl_overwrite_char (int count, int c) +{ + int i; +#if defined (HANDLE_MULTIBYTE) + char mbkey[MB_LEN_MAX]; + int k; + + /* Read an entire multibyte character sequence to insert COUNT times. */ + if (count > 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0) + k = _rl_read_mbstring (c, mbkey, MB_LEN_MAX); +#endif + + rl_begin_undo_group (); + + for (i = 0; i < count; i++) + { +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_insert_text (mbkey); + else +#endif + _rl_insert_char (1, c); + + if (rl_point < rl_end) + rl_delete (1, c); + } + + rl_end_undo_group (); + + return 0; +} + +int +rl_insert (int count, int c) +{ + int r, n, x; + + r = (rl_insert_mode == RL_IM_INSERT) ? _rl_insert_char (count, c) : _rl_overwrite_char (count, c); + + /* XXX -- attempt to batch-insert pending input that maps to self-insert */ + x = 0; + n = (unsigned short)-2; + while (_rl_optimize_typeahead && + rl_num_chars_to_read == 0 && + (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) && + _rl_pushed_input_available () == 0 && + _rl_input_queued (0) && + (n = rl_read_key ()) > 0 && + _rl_keymap[(unsigned char)n].type == ISFUNC && + _rl_keymap[(unsigned char)n].function == rl_insert) + { + r = (rl_insert_mode == RL_IM_INSERT) ? _rl_insert_char (1, n) : _rl_overwrite_char (1, n); + /* _rl_insert_char keeps its own set of pending characters to compose a + complete multibyte character, and only returns 1 if it sees a character + that's part of a multibyte character but too short to complete one. We + can try to read another character in the hopes that we will get the + next one or just punt. Right now we try to read another character. + We don't want to call rl_insert_next if _rl_insert_char has already + stored the character in the pending_bytes array because that will + result in doubled input. */ + n = (unsigned short)-2; + x++; /* count of bytes of typeahead read, currently unused */ + if (r == 1) /* read partial multibyte character */ + continue; + if (rl_done || r != 0) + break; + } + + if (n != (unsigned short)-2) /* -2 = sentinel value for having inserted N */ + { + /* setting rl_pending_input inhibits setting rl_last_func so we do it + ourselves here */ + rl_last_func = rl_insert; + _rl_reset_argument (); + rl_executing_keyseq[rl_key_sequence_length = 0] = '\0'; + r = rl_execute_next (n); + } + + return r; +} + +/* Insert the next typed character verbatim. */ +static int +_rl_insert_next (int count) +{ + int c; + + RL_SETSTATE(RL_STATE_MOREINPUT); + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + + if (c < 0) + return 1; + + if (RL_ISSTATE (RL_STATE_MACRODEF)) + _rl_add_macro_char (c); + +#if defined (HANDLE_SIGNALS) + if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) + _rl_restore_tty_signals (); +#endif + + return (_rl_insert_char (count, c)); +} + +#if defined (READLINE_CALLBACKS) +static int +_rl_insert_next_callback (_rl_callback_generic_arg *data) +{ + int count, r; + + count = data->count; + r = 0; + + if (count < 0) + { + data->count++; + r = _rl_insert_next (1); + _rl_want_redisplay = 1; + /* If we should keep going, leave the callback function installed */ + if (data->count < 0 && r == 0) + return r; + count = 0; /* data->count == 0 || r != 0; force break below */ + } + + /* Deregister function, let rl_callback_read_char deallocate data */ + _rl_callback_func = 0; + _rl_want_redisplay = 1; + + if (count == 0) + return r; + + return _rl_insert_next (count); +} +#endif + +int +rl_quoted_insert (int count, int key) +{ + /* Let's see...should the callback interface futz with signal handling? */ +#if defined (HANDLE_SIGNALS) + if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) + _rl_disable_tty_signals (); +#endif + +#if defined (READLINE_CALLBACKS) + if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + _rl_callback_data = _rl_callback_data_alloc (count); + _rl_callback_func = _rl_insert_next_callback; + return (0); + } +#endif + + /* A negative count means to quote the next -COUNT characters. */ + if (count < 0) + { + int r; + + do + r = _rl_insert_next (1); + while (r == 0 && ++count < 0); + return r; + } + + return _rl_insert_next (count); +} + +/* Insert a tab character. */ +int +rl_tab_insert (int count, int key) +{ + return (_rl_insert_char (count, '\t')); +} + +/* What to do when a NEWLINE is pressed. We accept the whole line. + KEY is the key that invoked this command. I guess it could have + meaning in the future. */ +int +rl_newline (int count, int key) +{ + if (rl_mark_active_p ()) + { + rl_deactivate_mark (); + (*rl_redisplay_function) (); + _rl_want_redisplay = 0; + } + + rl_done = 1; + + if (_rl_history_preserve_point) + _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point; + + RL_SETSTATE(RL_STATE_DONE); + +#if defined (VI_MODE) + if (rl_editing_mode == vi_mode) + { + _rl_vi_done_inserting (); + if (_rl_vi_textmod_command (_rl_vi_last_command) == 0) /* XXX */ + _rl_vi_reset_last (); + } +#endif /* VI_MODE */ + + /* If we've been asked to erase empty lines, suppress the final update, + since _rl_update_final calls rl_crlf(). */ + if (rl_erase_empty_line && rl_point == 0 && rl_end == 0) + return 0; + + if (_rl_echoing_p) + _rl_update_final (); + return 0; +} + +/* What to do for some uppercase characters, like meta characters, + and some characters appearing in emacs_ctlx_keymap. This function + is just a stub, you bind keys to it and the code in _rl_dispatch () + is special cased. */ +int +rl_do_lowercase_version (int ignore1, int ignore2) +{ + return 0; +} + +/* This is different from what vi does, so the code's not shared. Emacs + rubout in overwrite mode has one oddity: it replaces a control + character that's displayed as two characters (^X) with two spaces. */ +int +_rl_overwrite_rubout (int count, int key) +{ + int opoint; + int i, l; + + if (rl_point == 0) + { + rl_ding (); + return 1; + } + + opoint = rl_point; + + /* L == number of spaces to insert */ + for (i = l = 0; i < count; i++) + { + rl_backward_char (1, key); + l += rl_character_len (rl_line_buffer[rl_point], rl_point); /* not exactly right */ + } + + rl_begin_undo_group (); + + if (count > 1 || rl_explicit_arg) + rl_kill_text (opoint, rl_point); + else + rl_delete_text (opoint, rl_point); + + /* Emacs puts point at the beginning of the sequence of spaces. */ + if (rl_point < rl_end) + { + opoint = rl_point; + _rl_insert_char (l, ' '); + rl_point = opoint; + } + + rl_end_undo_group (); + + return 0; +} + +/* Rubout the character behind point. */ +int +rl_rubout (int count, int key) +{ + if (count < 0) + return (rl_delete (-count, key)); + + if (!rl_point) + { + rl_ding (); + return 1; + } + + if (rl_insert_mode == RL_IM_OVERWRITE) + return (_rl_overwrite_rubout (count, key)); + + return (_rl_rubout_char (count, key)); +} + +int +_rl_rubout_char (int count, int key) +{ + int orig_point; + unsigned char c; + + /* Duplicated code because this is called from other parts of the library. */ + if (count < 0) + return (rl_delete (-count, key)); + + if (rl_point == 0) + { + rl_ding (); + return 1; + } + + orig_point = rl_point; + if (count > 1 || rl_explicit_arg) + { + rl_backward_char (count, key); + rl_kill_text (orig_point, rl_point); + } + else if (MB_CUR_MAX == 1 || rl_byte_oriented) + { + c = rl_line_buffer[--rl_point]; + rl_delete_text (rl_point, orig_point); + /* The erase-at-end-of-line hack is of questionable merit now. */ + if (rl_point == rl_end && ISPRINT ((unsigned char)c) && _rl_last_c_pos) + { + int l; + l = rl_character_len (c, rl_point); + _rl_erase_at_end_of_line (l); + } + } + else + { + rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); + rl_delete_text (rl_point, orig_point); + } + + return 0; +} + +/* Delete the character under the cursor. Given a numeric argument, + kill that many characters instead. */ +int +rl_delete (int count, int key) +{ + int xpoint; + + if (count < 0) + return (_rl_rubout_char (-count, key)); + + if (rl_point == rl_end) + { + rl_ding (); + return 1; + } + + if (count > 1 || rl_explicit_arg) + { + xpoint = rl_point; + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_forward_char (count, key); + else + rl_forward_byte (count, key); + + rl_kill_text (xpoint, rl_point); + rl_point = xpoint; + } + else + { + xpoint = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); + rl_delete_text (rl_point, xpoint); + } + return 0; +} + +/* Delete the character under the cursor, unless the insertion + point is at the end of the line, in which case the character + behind the cursor is deleted. COUNT is obeyed and may be used + to delete forward or backward that many characters. */ +int +rl_rubout_or_delete (int count, int key) +{ + if (rl_end != 0 && rl_point == rl_end) + return (_rl_rubout_char (count, key)); + else + return (rl_delete (count, key)); +} + +/* Delete all spaces and tabs around point. */ +int +rl_delete_horizontal_space (int count, int ignore) +{ + int start; + + while (rl_point && whitespace (rl_line_buffer[rl_point - 1])) + rl_point--; + + start = rl_point; + + while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) + rl_point++; + + if (start != rl_point) + { + rl_delete_text (start, rl_point); + rl_point = start; + } + + if (rl_point < 0) + rl_point = 0; + + return 0; +} + +/* Like the tcsh editing function delete-char-or-list. The eof character + is caught before this is invoked, so this really does the same thing as + delete-char-or-list-or-eof, as long as it's bound to the eof character. */ +int +rl_delete_or_show_completions (int count, int key) +{ + if (rl_end != 0 && rl_point == rl_end) + return (rl_possible_completions (count, key)); + else + return (rl_delete (count, key)); +} + +#ifndef RL_COMMENT_BEGIN_DEFAULT +#define RL_COMMENT_BEGIN_DEFAULT "#" +#endif + +/* Turn the current line into a comment in shell history. + A K*rn shell style function. */ +int +rl_insert_comment (int count, int key) +{ + char *rl_comment_text; + int rl_comment_len; + + rl_beg_of_line (1, key); + rl_comment_text = _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT; + + if (rl_explicit_arg == 0) + rl_insert_text (rl_comment_text); + else + { + rl_comment_len = strlen (rl_comment_text); + if (STREQN (rl_comment_text, rl_line_buffer, rl_comment_len)) + rl_delete_text (rl_point, rl_point + rl_comment_len); + else + rl_insert_text (rl_comment_text); + } + + (*rl_redisplay_function) (); + rl_newline (1, '\n'); + + return (0); +} + +/* **************************************************************** */ +/* */ +/* Changing Case */ +/* */ +/* **************************************************************** */ + +/* The three kinds of things that we know how to do. */ +#define UpCase 1 +#define DownCase 2 +#define CapCase 3 + +/* Uppercase the word at point. */ +int +rl_upcase_word (int count, int key) +{ + return (rl_change_case (count, UpCase)); +} + +/* Lowercase the word at point. */ +int +rl_downcase_word (int count, int key) +{ + return (rl_change_case (count, DownCase)); +} + +/* Upcase the first letter, downcase the rest. */ +int +rl_capitalize_word (int count, int key) +{ + return (rl_change_case (count, CapCase)); +} + +/* The meaty function. + Change the case of COUNT words, performing OP on them. + OP is one of UpCase, DownCase, or CapCase. + If a negative argument is given, leave point where it started, + otherwise, leave it where it moves to. */ +static int +rl_change_case (int count, int op) +{ + int start, next, end; + int inword, nc, nop; + wchar_t c; +#if defined (HANDLE_MULTIBYTE) + wchar_t wc, nwc; + char mb[MB_LEN_MAX+1]; + int mlen; + size_t m; + mbstate_t mps; +#endif + + start = rl_point; + rl_forward_word (count, 0); + end = rl_point; + + if (op != UpCase && op != DownCase && op != CapCase) + { + rl_ding (); + return 1; + } + + if (count < 0) + SWAP (start, end); + +#if defined (HANDLE_MULTIBYTE) + memset (&mps, 0, sizeof (mbstate_t)); +#endif + + /* We are going to modify some text, so let's prepare to undo it. */ + rl_modifying (start, end); + + inword = 0; + while (start < end) + { + c = _rl_char_value (rl_line_buffer, start); + /* This assumes that the upper and lower case versions are the same width. */ + next = MB_NEXTCHAR (rl_line_buffer, start, 1, MB_FIND_NONZERO); + + if (_rl_walphabetic (c) == 0) + { + inword = 0; + start = next; + continue; + } + + if (op == CapCase) + { + nop = inword ? DownCase : UpCase; + inword = 1; + } + else + nop = op; + /* Can't check isascii here; some languages (e.g, Turkish) have + multibyte upper and lower case equivalents of single-byte ascii + characters */ + if (MB_CUR_MAX == 1 || rl_byte_oriented) + { + nc = (nop == UpCase) ? _rl_to_upper (c) : _rl_to_lower (c); + rl_line_buffer[start] = nc; + } +#if defined (HANDLE_MULTIBYTE) + else + { + m = mbrtowc (&wc, rl_line_buffer + start, end - start, &mps); + if (MB_INVALIDCH (m)) + wc = (wchar_t)rl_line_buffer[start]; + else if (MB_NULLWCH (m)) + wc = L'\0'; + nwc = (nop == UpCase) ? _rl_to_wupper (wc) : _rl_to_wlower (wc); + if (nwc != wc) /* just skip unchanged characters */ + { + char *s, *e; + mbstate_t ts; + + memset (&ts, 0, sizeof (mbstate_t)); + mlen = wcrtomb (mb, nwc, &ts); + if (mlen < 0) + { + nwc = wc; + memset (&ts, 0, sizeof (mbstate_t)); + mlen = wcrtomb (mb, nwc, &ts); + if (mlen < 0) /* should not happen */ + strncpy (mb, rl_line_buffer + start, mlen = m); + } + if (mlen > 0) + mb[mlen] = '\0'; + /* what to do if m != mlen? adjust below */ + /* m == length of old char, mlen == length of new char */ + s = rl_line_buffer + start; + e = rl_line_buffer + rl_end; + if (m == mlen) + memcpy (s, mb, mlen); + else if (m > mlen) + { + memcpy (s, mb, mlen); + memmove (s + mlen, s + m, (e - s) - m); + next -= m - mlen; /* next char changes */ + end -= m - mlen; /* end of word changes */ + rl_end -= m - mlen; /* end of line changes */ + rl_line_buffer[rl_end] = 0; + } + else if (m < mlen) + { + rl_extend_line_buffer (rl_end + mlen + (e - s) - m + 2); + s = rl_line_buffer + start; /* have to redo this */ + e = rl_line_buffer + rl_end; + memmove (s + mlen, s + m, (e - s) - m); + memcpy (s, mb, mlen); + next += mlen - m; /* next char changes */ + end += mlen - m; /* end of word changes */ + rl_end += mlen - m; /* end of line changes */ + rl_line_buffer[rl_end] = 0; + } + } + } +#endif + + start = next; + } + + rl_point = end; + return 0; +} + +/* **************************************************************** */ +/* */ +/* Transposition */ +/* */ +/* **************************************************************** */ + +/* Transpose the words at point. If point is at the end of the line, + transpose the two words before point. */ +int +rl_transpose_words (int count, int key) +{ + char *word1, *word2; + int w1_beg, w1_end, w2_beg, w2_end; + int orig_point = rl_point; + + if (!count) + return 0; + + /* Find the two words. */ + rl_forward_word (count, key); + w2_end = rl_point; + rl_backward_word (1, key); + w2_beg = rl_point; + rl_backward_word (count, key); + w1_beg = rl_point; + rl_forward_word (1, key); + w1_end = rl_point; + + /* Do some check to make sure that there really are two words. */ + if ((w1_beg == w2_beg) || (w2_beg < w1_end)) + { + rl_ding (); + rl_point = orig_point; + return 1; + } + + /* Get the text of the words. */ + word1 = rl_copy_text (w1_beg, w1_end); + word2 = rl_copy_text (w2_beg, w2_end); + + /* We are about to do many insertions and deletions. Remember them + as one operation. */ + rl_begin_undo_group (); + + /* Do the stuff at word2 first, so that we don't have to worry + about word1 moving. */ + rl_point = w2_beg; + rl_delete_text (w2_beg, w2_end); + rl_insert_text (word1); + + rl_point = w1_beg; + rl_delete_text (w1_beg, w1_end); + rl_insert_text (word2); + + /* This is exactly correct since the text before this point has not + changed in length. */ + rl_point = w2_end; + + /* I think that does it. */ + rl_end_undo_group (); + xfree (word1); + xfree (word2); + + return 0; +} + +/* Transpose the characters at point. If point is at the end of the line, + then transpose the characters before point. */ +int +rl_transpose_chars (int count, int key) +{ +#if defined (HANDLE_MULTIBYTE) + char *dummy; + int i; +#else + char dummy[2]; +#endif + int char_length, prev_point; + + if (count == 0) + return 0; + + if (!rl_point || rl_end < 2) + { + rl_ding (); + return 1; + } + + rl_begin_undo_group (); + + if (rl_point == rl_end) + { + rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); + count = 1; + } + + prev_point = rl_point; + rl_point = MB_PREVCHAR (rl_line_buffer, rl_point, MB_FIND_NONZERO); + +#if defined (HANDLE_MULTIBYTE) + char_length = prev_point - rl_point; + dummy = (char *)xmalloc (char_length + 1); + for (i = 0; i < char_length; i++) + dummy[i] = rl_line_buffer[rl_point + i]; + dummy[i] = '\0'; +#else + dummy[0] = rl_line_buffer[rl_point]; + dummy[char_length = 1] = '\0'; +#endif + + rl_delete_text (rl_point, rl_point + char_length); + + rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO); + + _rl_fix_point (0); + rl_insert_text (dummy); + rl_end_undo_group (); + +#if defined (HANDLE_MULTIBYTE) + xfree (dummy); +#endif + + return 0; +} + +/* **************************************************************** */ +/* */ +/* Character Searching */ +/* */ +/* **************************************************************** */ + +int +#if defined (HANDLE_MULTIBYTE) +_rl_char_search_internal (int count, int dir, char *smbchar, int len) +#else +_rl_char_search_internal (int count, int dir, int schar) +#endif +{ + int pos, inc; +#if defined (HANDLE_MULTIBYTE) + int prepos; +#endif + + if (dir == 0) + return 1; + + pos = rl_point; + inc = (dir < 0) ? -1 : 1; + while (count) + { + if ((dir < 0 && pos <= 0) || (dir > 0 && pos >= rl_end)) + { + rl_ding (); + return 1; + } + +#if defined (HANDLE_MULTIBYTE) + pos = (inc > 0) ? _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY) + : _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY); +#else + pos += inc; +#endif + do + { +#if defined (HANDLE_MULTIBYTE) + if (_rl_is_mbchar_matched (rl_line_buffer, pos, rl_end, smbchar, len)) +#else + if (rl_line_buffer[pos] == schar) +#endif + { + count--; + if (dir < 0) + rl_point = (dir == BTO) ? _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY) + : pos; + else + rl_point = (dir == FTO) ? _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY) + : pos; + break; + } +#if defined (HANDLE_MULTIBYTE) + prepos = pos; +#endif + } +#if defined (HANDLE_MULTIBYTE) + while ((dir < 0) ? (pos = _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY)) != prepos + : (pos = _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY)) != prepos); +#else + while ((dir < 0) ? pos-- : ++pos < rl_end); +#endif + } + return (0); +} + +/* Search COUNT times for a character read from the current input stream. + FDIR is the direction to search if COUNT is non-negative; otherwise + the search goes in BDIR. So much is dependent on HANDLE_MULTIBYTE + that there are two separate versions of this function. */ +#if defined (HANDLE_MULTIBYTE) +static int +_rl_char_search (int count, int fdir, int bdir) +{ + char mbchar[MB_LEN_MAX]; + int mb_len; + + mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX); + + if (mb_len <= 0) + return 1; + + if (count < 0) + return (_rl_char_search_internal (-count, bdir, mbchar, mb_len)); + else + return (_rl_char_search_internal (count, fdir, mbchar, mb_len)); +} +#else /* !HANDLE_MULTIBYTE */ +static int +_rl_char_search (int count, int fdir, int bdir) +{ + int c; + + c = _rl_bracketed_read_key (); + if (c < 0) + return 1; + + if (count < 0) + return (_rl_char_search_internal (-count, bdir, c)); + else + return (_rl_char_search_internal (count, fdir, c)); +} +#endif /* !HANDLE_MULTIBYTE */ + +#if defined (READLINE_CALLBACKS) +static int +_rl_char_search_callback (data) + _rl_callback_generic_arg *data; +{ + _rl_callback_func = 0; + _rl_want_redisplay = 1; + + return (_rl_char_search (data->count, data->i1, data->i2)); +} +#endif + +int +rl_char_search (int count, int key) +{ +#if defined (READLINE_CALLBACKS) + if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + _rl_callback_data = _rl_callback_data_alloc (count); + _rl_callback_data->i1 = FFIND; + _rl_callback_data->i2 = BFIND; + _rl_callback_func = _rl_char_search_callback; + return (0); + } +#endif + + return (_rl_char_search (count, FFIND, BFIND)); +} + +int +rl_backward_char_search (int count, int key) +{ +#if defined (READLINE_CALLBACKS) + if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + _rl_callback_data = _rl_callback_data_alloc (count); + _rl_callback_data->i1 = BFIND; + _rl_callback_data->i2 = FFIND; + _rl_callback_func = _rl_char_search_callback; + return (0); + } +#endif + + return (_rl_char_search (count, BFIND, FFIND)); +} + +/* **************************************************************** */ +/* */ +/* The Mark and the Region. */ +/* */ +/* **************************************************************** */ + +/* Set the mark at POSITION. */ +int +_rl_set_mark_at_pos (int position) +{ + if (position < 0 || position > rl_end) + return 1; + + rl_mark = position; + return 0; +} + +/* A bindable command to set the mark. */ +int +rl_set_mark (int count, int key) +{ + return (_rl_set_mark_at_pos (rl_explicit_arg ? count : rl_point)); +} + +/* Exchange the position of mark and point. */ +int +rl_exchange_point_and_mark (int count, int key) +{ + if (rl_mark > rl_end) + rl_mark = -1; + + if (rl_mark < 0) + { + rl_ding (); + rl_mark = 0; /* like _RL_FIX_POINT */ + return 1; + } + else + { + SWAP (rl_point, rl_mark); + rl_activate_mark (); + } + + return 0; +} + +/* Active mark support */ + +/* Is the region active? */ +static int mark_active = 0; + +/* Does the current command want the mark to remain active when it completes? */ +int _rl_keep_mark_active; + +void +rl_keep_mark_active (void) +{ + _rl_keep_mark_active++; +} + +void +rl_activate_mark (void) +{ + mark_active = 1; + rl_keep_mark_active (); +} + +void +rl_deactivate_mark (void) +{ + mark_active = 0; +} + +int +rl_mark_active_p (void) +{ + return (mark_active); +} diff --git a/bash-5.1/lib/readline/tilde.c b/bash-5.1/lib/readline/tilde.c new file mode 100644 index 0000000..d678a31 --- /dev/null +++ b/bash-5.1/lib/readline/tilde.c @@ -0,0 +1,493 @@ +/* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */ + +/* Copyright (C) 1988-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#if defined (HAVE_STRING_H) +# include +#else /* !HAVE_STRING_H */ +# include +#endif /* !HAVE_STRING_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include +#if defined (HAVE_PWD_H) +#include +#endif + +#include "tilde.h" + +#if defined (TEST) || defined (STATIC_MALLOC) +static void *xmalloc (), *xrealloc (); +#else +# include "xmalloc.h" +#endif /* TEST || STATIC_MALLOC */ + +#if !defined (HAVE_GETPW_DECLS) +# if defined (HAVE_GETPWUID) +extern struct passwd *getpwuid (uid_t); +# endif +# if defined (HAVE_GETPWNAM) +extern struct passwd *getpwnam (const char *); +# endif +#endif /* !HAVE_GETPW_DECLS */ + +#if !defined (savestring) +#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x)) +#endif /* !savestring */ + +#if !defined (NULL) +# if defined (__STDC__) +# define NULL ((void *) 0) +# else +# define NULL 0x0 +# endif /* !__STDC__ */ +#endif /* !NULL */ + +/* If being compiled as part of bash, these will be satisfied from + variables.o. If being compiled as part of readline, they will + be satisfied from shell.o. */ +extern char *sh_get_home_dir (void); +extern char *sh_get_env_value (const char *); + +/* The default value of tilde_additional_prefixes. This is set to + whitespace preceding a tilde so that simple programs which do not + perform any word separation get desired behaviour. */ +static const char *default_prefixes[] = + { " ~", "\t~", (const char *)NULL }; + +/* The default value of tilde_additional_suffixes. This is set to + whitespace or newline so that simple programs which do not + perform any word separation get desired behaviour. */ +static const char *default_suffixes[] = + { " ", "\n", (const char *)NULL }; + +/* If non-null, this contains the address of a function that the application + wants called before trying the standard tilde expansions. The function + is called with the text sans tilde, and returns a malloc()'ed string + which is the expansion, or a NULL pointer if the expansion fails. */ +tilde_hook_func_t *tilde_expansion_preexpansion_hook = (tilde_hook_func_t *)NULL; + +/* If non-null, this contains the address of a function to call if the + standard meaning for expanding a tilde fails. The function is called + with the text (sans tilde, as in "foo"), and returns a malloc()'ed string + which is the expansion, or a NULL pointer if there is no expansion. */ +tilde_hook_func_t *tilde_expansion_failure_hook = (tilde_hook_func_t *)NULL; + +/* When non-null, this is a NULL terminated array of strings which + are duplicates for a tilde prefix. Bash uses this to expand + `=~' and `:~'. */ +char **tilde_additional_prefixes = (char **)default_prefixes; + +/* When non-null, this is a NULL terminated array of strings which match + the end of a username, instead of just "/". Bash sets this to + `:' and `=~'. */ +char **tilde_additional_suffixes = (char **)default_suffixes; + +static int tilde_find_prefix (const char *, int *); +static int tilde_find_suffix (const char *); +static char *isolate_tilde_prefix (const char *, int *); +static char *glue_prefix_and_suffix (char *, const char *, int); + +/* Find the start of a tilde expansion in STRING, and return the index of + the tilde which starts the expansion. Place the length of the text + which identified this tilde starter in LEN, excluding the tilde itself. */ +static int +tilde_find_prefix (const char *string, int *len) +{ + register int i, j, string_len; + register char **prefixes; + + prefixes = tilde_additional_prefixes; + + string_len = strlen (string); + *len = 0; + + if (*string == '\0' || *string == '~') + return (0); + + if (prefixes) + { + for (i = 0; i < string_len; i++) + { + for (j = 0; prefixes[j]; j++) + { + if (strncmp (string + i, prefixes[j], strlen (prefixes[j])) == 0) + { + *len = strlen (prefixes[j]) - 1; + return (i + *len); + } + } + } + } + return (string_len); +} + +/* Find the end of a tilde expansion in STRING, and return the index of + the character which ends the tilde definition. */ +static int +tilde_find_suffix (const char *string) +{ + register int i, j, string_len; + register char **suffixes; + + suffixes = tilde_additional_suffixes; + string_len = strlen (string); + + for (i = 0; i < string_len; i++) + { +#if defined (__MSDOS__) + if (string[i] == '/' || string[i] == '\\' /* || !string[i] */) +#else + if (string[i] == '/' /* || !string[i] */) +#endif + break; + + for (j = 0; suffixes && suffixes[j]; j++) + { + if (strncmp (string + i, suffixes[j], strlen (suffixes[j])) == 0) + return (i); + } + } + return (i); +} + +/* Return a new string which is the result of tilde expanding STRING. */ +char * +tilde_expand (const char *string) +{ + char *result; + int result_size, result_index; + + result_index = result_size = 0; + if (result = strchr (string, '~')) + result = (char *)xmalloc (result_size = (strlen (string) + 16)); + else + result = (char *)xmalloc (result_size = (strlen (string) + 1)); + + /* Scan through STRING expanding tildes as we come to them. */ + while (1) + { + register int start, end; + char *tilde_word, *expansion; + int len; + + /* Make START point to the tilde which starts the expansion. */ + start = tilde_find_prefix (string, &len); + + /* Copy the skipped text into the result. */ + if ((result_index + start + 1) > result_size) + result = (char *)xrealloc (result, 1 + (result_size += (start + 20))); + + strncpy (result + result_index, string, start); + result_index += start; + + /* Advance STRING to the starting tilde. */ + string += start; + + /* Make END be the index of one after the last character of the + username. */ + end = tilde_find_suffix (string); + + /* If both START and END are zero, we are all done. */ + if (!start && !end) + break; + + /* Expand the entire tilde word, and copy it into RESULT. */ + tilde_word = (char *)xmalloc (1 + end); + strncpy (tilde_word, string, end); + tilde_word[end] = '\0'; + string += end; + + expansion = tilde_expand_word (tilde_word); + + if (expansion == 0) + expansion = tilde_word; + else + xfree (tilde_word); + + len = strlen (expansion); +#ifdef __CYGWIN__ + /* Fix for Cygwin to prevent ~user/xxx from expanding to //xxx when + $HOME for `user' is /. On cygwin, // denotes a network drive. */ + if (len > 1 || *expansion != '/' || *string != '/') +#endif + { + if ((result_index + len + 1) > result_size) + result = (char *)xrealloc (result, 1 + (result_size += (len + 20))); + + strcpy (result + result_index, expansion); + result_index += len; + } + xfree (expansion); + } + + result[result_index] = '\0'; + + return (result); +} + +/* Take FNAME and return the tilde prefix we want expanded. If LENP is + non-null, the index of the end of the prefix into FNAME is returned in + the location it points to. */ +static char * +isolate_tilde_prefix (const char *fname, int *lenp) +{ + char *ret; + int i; + + ret = (char *)xmalloc (strlen (fname)); +#if defined (__MSDOS__) + for (i = 1; fname[i] && fname[i] != '/' && fname[i] != '\\'; i++) +#else + for (i = 1; fname[i] && fname[i] != '/'; i++) +#endif + ret[i - 1] = fname[i]; + ret[i - 1] = '\0'; + if (lenp) + *lenp = i; + return ret; +} + +#if 0 +/* Public function to scan a string (FNAME) beginning with a tilde and find + the portion of the string that should be passed to the tilde expansion + function. Right now, it just calls tilde_find_suffix and allocates new + memory, but it can be expanded to do different things later. */ +char * +tilde_find_word (const char *fname, int flags, int *lenp) +{ + int x; + char *r; + + x = tilde_find_suffix (fname); + if (x == 0) + { + r = savestring (fname); + if (lenp) + *lenp = 0; + } + else + { + r = (char *)xmalloc (1 + x); + strncpy (r, fname, x); + r[x] = '\0'; + if (lenp) + *lenp = x; + } + + return r; +} +#endif + +/* Return a string that is PREFIX concatenated with SUFFIX starting at + SUFFIND. */ +static char * +glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind) +{ + char *ret; + int plen, slen; + + plen = (prefix && *prefix) ? strlen (prefix) : 0; + slen = strlen (suffix + suffind); + ret = (char *)xmalloc (plen + slen + 1); + if (plen) + strcpy (ret, prefix); + strcpy (ret + plen, suffix + suffind); + return ret; +} + +/* Do the work of tilde expansion on FILENAME. FILENAME starts with a + tilde. If there is no expansion, call tilde_expansion_failure_hook. + This always returns a newly-allocated string, never static storage. */ +char * +tilde_expand_word (const char *filename) +{ + char *dirname, *expansion, *username; + int user_len; + struct passwd *user_entry; + + if (filename == 0) + return ((char *)NULL); + + if (*filename != '~') + return (savestring (filename)); + + /* A leading `~/' or a bare `~' is *always* translated to the value of + $HOME or the home directory of the current user, regardless of any + preexpansion hook. */ + if (filename[1] == '\0' || filename[1] == '/') + { + /* Prefix $HOME to the rest of the string. */ + expansion = sh_get_env_value ("HOME"); +#if defined (_WIN32) + if (expansion == 0) + expansion = sh_get_env_value ("APPDATA"); +#endif + + /* If there is no HOME variable, look up the directory in + the password database. */ + if (expansion == 0) + expansion = sh_get_home_dir (); + + return (glue_prefix_and_suffix (expansion, filename, 1)); + } + + username = isolate_tilde_prefix (filename, &user_len); + + if (tilde_expansion_preexpansion_hook) + { + expansion = (*tilde_expansion_preexpansion_hook) (username); + if (expansion) + { + dirname = glue_prefix_and_suffix (expansion, filename, user_len); + xfree (username); + xfree (expansion); + return (dirname); + } + } + + /* No preexpansion hook, or the preexpansion hook failed. Look in the + password database. */ + dirname = (char *)NULL; +#if defined (HAVE_GETPWNAM) + user_entry = getpwnam (username); +#else + user_entry = 0; +#endif + if (user_entry == 0) + { + /* If the calling program has a special syntax for expanding tildes, + and we couldn't find a standard expansion, then let them try. */ + if (tilde_expansion_failure_hook) + { + expansion = (*tilde_expansion_failure_hook) (username); + if (expansion) + { + dirname = glue_prefix_and_suffix (expansion, filename, user_len); + xfree (expansion); + } + } + /* If we don't have a failure hook, or if the failure hook did not + expand the tilde, return a copy of what we were passed. */ + if (dirname == 0) + dirname = savestring (filename); + } +#if defined (HAVE_GETPWENT) + else + dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); +#endif + + xfree (username); +#if defined (HAVE_GETPWENT) + endpwent (); +#endif + return (dirname); +} + + +#if defined (TEST) +#undef NULL +#include + +main (int argc, char **argv) +{ + char *result, line[512]; + int done = 0; + + while (!done) + { + printf ("~expand: "); + fflush (stdout); + + if (!gets (line)) + strcpy (line, "done"); + + if ((strcmp (line, "done") == 0) || + (strcmp (line, "quit") == 0) || + (strcmp (line, "exit") == 0)) + { + done = 1; + break; + } + + result = tilde_expand (line); + printf (" --> %s\n", result); + free (result); + } + exit (0); +} + +static void memory_error_and_abort (void); + +static void * +xmalloc (size_t bytes) +{ + void *temp = (char *)malloc (bytes); + + if (!temp) + memory_error_and_abort (); + return (temp); +} + +static void * +xrealloc (void *pointer, int bytes) +{ + void *temp; + + if (!pointer) + temp = malloc (bytes); + else + temp = realloc (pointer, bytes); + + if (!temp) + memory_error_and_abort (); + + return (temp); +} + +static void +memory_error_and_abort (void) +{ + fprintf (stderr, "readline: out of virtual memory\n"); + abort (); +} + +/* + * Local variables: + * compile-command: "gcc -g -DTEST -o tilde tilde.c" + * end: + */ +#endif /* TEST */ diff --git a/bash-5.1/lib/readline/tilde.h b/bash-5.1/lib/readline/tilde.h new file mode 100644 index 0000000..e26dd04 --- /dev/null +++ b/bash-5.1/lib/readline/tilde.h @@ -0,0 +1,80 @@ +/* tilde.h: Externally available variables and function in libtilde.a. */ + +/* Copyright (C) 1992-2009 Free Software Foundation, Inc. + + This file contains the Readline Library (Readline), a set of + routines for providing Emacs style line input to programs that ask + for it. + + 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 . +*/ + +#if !defined (_TILDE_H_) +# define _TILDE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* A function can be defined using prototypes and compile on both ANSI C + and traditional C compilers with something like this: + extern char *func PARAMS((char *, char *, int)); */ + +#if !defined (PARAMS) +# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) +# define PARAMS(protos) protos +# else +# define PARAMS(protos) () +# endif +#endif + +typedef char *tilde_hook_func_t PARAMS((char *)); + +/* If non-null, this contains the address of a function that the application + wants called before trying the standard tilde expansions. The function + is called with the text sans tilde, and returns a malloc()'ed string + which is the expansion, or a NULL pointer if the expansion fails. */ +extern tilde_hook_func_t *tilde_expansion_preexpansion_hook; + +/* If non-null, this contains the address of a function to call if the + standard meaning for expanding a tilde fails. The function is called + with the text (sans tilde, as in "foo"), and returns a malloc()'ed string + which is the expansion, or a NULL pointer if there is no expansion. */ +extern tilde_hook_func_t *tilde_expansion_failure_hook; + +/* When non-null, this is a NULL terminated array of strings which + are duplicates for a tilde prefix. Bash uses this to expand + `=~' and `:~'. */ +extern char **tilde_additional_prefixes; + +/* When non-null, this is a NULL terminated array of strings which match + the end of a username, instead of just "/". Bash sets this to + `:' and `=~'. */ +extern char **tilde_additional_suffixes; + +/* Return a new string which is the result of tilde expanding STRING. */ +extern char *tilde_expand PARAMS((const char *)); + +/* Do the work of tilde expansion on FILENAME. FILENAME starts with a + tilde. If there is no expansion, call tilde_expansion_failure_hook. */ +extern char *tilde_expand_word PARAMS((const char *)); + +/* Find the portion of the string beginning with ~ that should be expanded. */ +extern char *tilde_find_word PARAMS((const char *, int, int *)); + +#ifdef __cplusplus +} +#endif + +#endif /* _TILDE_H_ */ diff --git a/bash-5.1/lib/readline/undo.c b/bash-5.1/lib/readline/undo.c new file mode 100644 index 0000000..1479991 --- /dev/null +++ b/bash-5.1/lib/readline/undo.c @@ -0,0 +1,367 @@ +/* undo.c - manage list of changes to lines, offering opportunity to undo them */ + +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#if defined (HAVE_UNISTD_H) +# include /* for _POSIX_VERSION */ +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" + +/* Some standard library routines. */ +#include "readline.h" +#include "history.h" + +#include "rlprivate.h" +#include "xmalloc.h" + +extern void _hs_replace_history_data PARAMS((int, histdata_t *, histdata_t *)); + +extern HIST_ENTRY *_rl_saved_line_for_history; + +/* Non-zero tells rl_delete_text and rl_insert_text to not add to + the undo list. */ +int _rl_doing_an_undo = 0; + +/* How many unclosed undo groups we currently have. */ +int _rl_undo_group_level = 0; + +/* The current undo list for THE_LINE. */ +UNDO_LIST *rl_undo_list = (UNDO_LIST *)NULL; + +/* **************************************************************** */ +/* */ +/* Undo, and Undoing */ +/* */ +/* **************************************************************** */ + +static UNDO_LIST * +alloc_undo_entry (enum undo_code what, int start, int end, char *text) +{ + UNDO_LIST *temp; + + temp = (UNDO_LIST *)xmalloc (sizeof (UNDO_LIST)); + temp->what = what; + temp->start = start; + temp->end = end; + temp->text = text; + + temp->next = (UNDO_LIST *)NULL; + return temp; +} + +/* Remember how to undo something. Concatenate some undos if that + seems right. */ +void +rl_add_undo (enum undo_code what, int start, int end, char *text) +{ + UNDO_LIST *temp; + + temp = alloc_undo_entry (what, start, end, text); + temp->next = rl_undo_list; + rl_undo_list = temp; +} + +/* Free an UNDO_LIST */ +void +_rl_free_undo_list (UNDO_LIST *ul) +{ + UNDO_LIST *release; + + while (ul) + { + release = ul; + ul = ul->next; + + if (release->what == UNDO_DELETE) + xfree (release->text); + + xfree (release); + } +} + +/* Free the existing undo list. */ +void +rl_free_undo_list (void) +{ + UNDO_LIST *release, *orig_list; + + orig_list = rl_undo_list; + _rl_free_undo_list (rl_undo_list); + rl_undo_list = (UNDO_LIST *)NULL; + _hs_replace_history_data (-1, (histdata_t *)orig_list, (histdata_t *)NULL); +} + +UNDO_LIST * +_rl_copy_undo_entry (UNDO_LIST *entry) +{ + UNDO_LIST *new; + + new = alloc_undo_entry (entry->what, entry->start, entry->end, (char *)NULL); + new->text = entry->text ? savestring (entry->text) : 0; + return new; +} + +UNDO_LIST * +_rl_copy_undo_list (UNDO_LIST *head) +{ + UNDO_LIST *list, *new, *roving, *c; + + if (head == 0) + return head; + + list = head; + new = 0; + while (list) + { + c = _rl_copy_undo_entry (list); + if (new == 0) + roving = new = c; + else + { + roving->next = c; + roving = roving->next; + } + list = list->next; + } + + roving->next = 0; + return new; +} + +/* Undo the next thing in the list. Return 0 if there + is nothing to undo, or non-zero if there was. */ +int +rl_do_undo (void) +{ + UNDO_LIST *release, *search; + int waiting_for_begin, start, end; + HIST_ENTRY *cur, *temp; + +#define TRANS(i) ((i) == -1 ? rl_point : ((i) == -2 ? rl_end : (i))) + + start = end = waiting_for_begin = 0; + do + { + if (rl_undo_list == 0) + return (0); + + _rl_doing_an_undo = 1; + RL_SETSTATE(RL_STATE_UNDOING); + + /* To better support vi-mode, a start or end value of -1 means + rl_point, and a value of -2 means rl_end. */ + if (rl_undo_list->what == UNDO_DELETE || rl_undo_list->what == UNDO_INSERT) + { + start = TRANS (rl_undo_list->start); + end = TRANS (rl_undo_list->end); + } + + switch (rl_undo_list->what) + { + /* Undoing deletes means inserting some text. */ + case UNDO_DELETE: + rl_point = start; + _rl_fix_point (1); + rl_insert_text (rl_undo_list->text); + xfree (rl_undo_list->text); + break; + + /* Undoing inserts means deleting some text. */ + case UNDO_INSERT: + rl_delete_text (start, end); + rl_point = start; + _rl_fix_point (1); + break; + + /* Undoing an END means undoing everything 'til we get to a BEGIN. */ + case UNDO_END: + waiting_for_begin++; + break; + + /* Undoing a BEGIN means that we are done with this group. */ + case UNDO_BEGIN: + if (waiting_for_begin) + waiting_for_begin--; + else + rl_ding (); + break; + } + + _rl_doing_an_undo = 0; + RL_UNSETSTATE(RL_STATE_UNDOING); + + release = rl_undo_list; + rl_undo_list = rl_undo_list->next; + release->next = 0; /* XXX */ + + /* If we are editing a history entry, make sure the change is replicated + in the history entry's line */ + cur = current_history (); + if (cur && cur->data && (UNDO_LIST *)cur->data == release) + { + temp = replace_history_entry (where_history (), rl_line_buffer, (histdata_t)rl_undo_list); + xfree (temp->line); + FREE (temp->timestamp); + xfree (temp); + } + + /* Make sure there aren't any history entries with that undo list */ + _hs_replace_history_data (-1, (histdata_t *)release, (histdata_t *)rl_undo_list); + + /* And make sure this list isn't anywhere in the saved line for history */ + if (_rl_saved_line_for_history && _rl_saved_line_for_history->data) + { + /* Brute force; no finesse here */ + search = (UNDO_LIST *)_rl_saved_line_for_history->data; + if (search == release) + _rl_saved_line_for_history->data = rl_undo_list; + else + { + while (search->next) + { + if (search->next == release) + { + search->next = rl_undo_list; + break; + } + search = search->next; + } + } + } + + xfree (release); + } + while (waiting_for_begin); + + return (1); +} +#undef TRANS + +int +_rl_fix_last_undo_of_type (int type, int start, int end) +{ + UNDO_LIST *rl; + + for (rl = rl_undo_list; rl; rl = rl->next) + { + if (rl->what == type) + { + rl->start = start; + rl->end = end; + return 0; + } + } + return 1; +} + +/* Begin a group. Subsequent undos are undone as an atomic operation. */ +int +rl_begin_undo_group (void) +{ + rl_add_undo (UNDO_BEGIN, 0, 0, 0); + _rl_undo_group_level++; + return 0; +} + +/* End an undo group started with rl_begin_undo_group (). */ +int +rl_end_undo_group (void) +{ + rl_add_undo (UNDO_END, 0, 0, 0); + _rl_undo_group_level--; + return 0; +} + +/* Save an undo entry for the text from START to END. */ +int +rl_modifying (int start, int end) +{ + if (start > end) + { + SWAP (start, end); + } + + if (start != end) + { + char *temp = rl_copy_text (start, end); + rl_begin_undo_group (); + rl_add_undo (UNDO_DELETE, start, end, temp); + rl_add_undo (UNDO_INSERT, start, end, (char *)NULL); + rl_end_undo_group (); + } + return 0; +} + +/* Revert the current line to its previous state. */ +int +rl_revert_line (int count, int key) +{ + if (rl_undo_list == 0) + rl_ding (); + else + { + while (rl_undo_list) + rl_do_undo (); +#if defined (VI_MODE) + if (rl_editing_mode == vi_mode) + rl_point = rl_mark = 0; /* rl_end should be set correctly */ +#endif + } + + return 0; +} + +/* Do some undoing of things that were done. */ +int +rl_undo_command (int count, int key) +{ + if (count < 0) + return 0; /* Nothing to do. */ + + while (count) + { + if (rl_do_undo ()) + count--; + else + { + rl_ding (); + break; + } + } + return 0; +} diff --git a/bash-5.1/lib/readline/util.c b/bash-5.1/lib/readline/util.c new file mode 100644 index 0000000..1576b55 --- /dev/null +++ b/bash-5.1/lib/readline/util.c @@ -0,0 +1,576 @@ +/* util.c -- readline utility functions */ + +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#include +#include "posixjmp.h" + +#if defined (HAVE_UNISTD_H) +# include /* for _POSIX_VERSION */ +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include +#include + +/* System-specific feature definitions and include files. */ +#include "rldefs.h" +#include "rlmbutil.h" + +#if defined (TIOCSTAT_IN_SYS_IOCTL) +# include +#endif /* TIOCSTAT_IN_SYS_IOCTL */ + +/* Some standard library routines. */ +#include "readline.h" + +#include "rlprivate.h" +#include "xmalloc.h" +#include "rlshell.h" + +/* **************************************************************** */ +/* */ +/* Utility Functions */ +/* */ +/* **************************************************************** */ + +/* Return 0 if C is not a member of the class of characters that belong + in words, or 1 if it is. */ + +int _rl_allow_pathname_alphabetic_chars = 0; +static const char * const pathname_alphabetic_chars = "/-_=~.#$"; + +int +rl_alphabetic (int c) +{ + if (ALPHABETIC (c)) + return (1); + + return (_rl_allow_pathname_alphabetic_chars && + strchr (pathname_alphabetic_chars, c) != NULL); +} + +#if defined (HANDLE_MULTIBYTE) +int +_rl_walphabetic (wchar_t wc) +{ + int c; + + if (iswalnum (wc)) + return (1); + + c = wc & 0177; + return (_rl_allow_pathname_alphabetic_chars && + strchr (pathname_alphabetic_chars, c) != NULL); +} +#endif + +/* How to abort things. */ +int +_rl_abort_internal (void) +{ + rl_ding (); + rl_clear_message (); + _rl_reset_argument (); + rl_clear_pending_input (); + rl_deactivate_mark (); + + while (rl_executing_macro) + _rl_pop_executing_macro (); + _rl_kill_kbd_macro (); + + RL_UNSETSTATE (RL_STATE_MULTIKEY); /* XXX */ + + rl_last_func = (rl_command_func_t *)NULL; + + _rl_longjmp (_rl_top_level, 1); + return (0); +} + +int +rl_abort (int count, int key) +{ + return (_rl_abort_internal ()); +} + +int +_rl_null_function (int count, int key) +{ + return 0; +} + +int +rl_tty_status (int count, int key) +{ +#if defined (TIOCSTAT) + ioctl (1, TIOCSTAT, (char *)0); + rl_refresh_line (count, key); +#else + rl_ding (); +#endif + return 0; +} + +/* Return a copy of the string between FROM and TO. + FROM is inclusive, TO is not. */ +char * +rl_copy_text (int from, int to) +{ + register int length; + char *copy; + + /* Fix it if the caller is confused. */ + if (from > to) + SWAP (from, to); + + length = to - from; + copy = (char *)xmalloc (1 + length); + strncpy (copy, rl_line_buffer + from, length); + copy[length] = '\0'; + return (copy); +} + +/* Increase the size of RL_LINE_BUFFER until it has enough space to hold + LEN characters. */ +void +rl_extend_line_buffer (int len) +{ + while (len >= rl_line_buffer_len) + { + rl_line_buffer_len += DEFAULT_BUFFER_SIZE; + rl_line_buffer = (char *)xrealloc (rl_line_buffer, rl_line_buffer_len); + } + + _rl_set_the_line (); +} + + +/* A function for simple tilde expansion. */ +int +rl_tilde_expand (int ignore, int key) +{ + register int start, end; + char *homedir, *temp; + int len; + + end = rl_point; + start = end - 1; + + if (rl_point == rl_end && rl_line_buffer[rl_point] == '~') + { + homedir = tilde_expand ("~"); + _rl_replace_text (homedir, start, end); + xfree (homedir); + return (0); + } + else if (start >= 0 && rl_line_buffer[start] != '~') + { + for (; start >= 0 && !whitespace (rl_line_buffer[start]); start--) + ; + start++; + } + else if (start < 0) + start = 0; + + end = start; + do + end++; + while (whitespace (rl_line_buffer[end]) == 0 && end < rl_end); + + if (whitespace (rl_line_buffer[end]) || end >= rl_end) + end--; + + /* If the first character of the current word is a tilde, perform + tilde expansion and insert the result. If not a tilde, do + nothing. */ + if (rl_line_buffer[start] == '~') + { + len = end - start + 1; + temp = (char *)xmalloc (len + 1); + strncpy (temp, rl_line_buffer + start, len); + temp[len] = '\0'; + homedir = tilde_expand (temp); + xfree (temp); + + _rl_replace_text (homedir, start, end); + xfree (homedir); + } + + return (0); +} + +#if defined (USE_VARARGS) +void +#if defined (PREFER_STDARG) +_rl_ttymsg (const char *format, ...) +#else +_rl_ttymsg (va_alist) + va_dcl +#endif +{ + va_list args; +#if defined (PREFER_VARARGS) + char *format; +#endif + +#if defined (PREFER_STDARG) + va_start (args, format); +#else + va_start (args); + format = va_arg (args, char *); +#endif + + fprintf (stderr, "readline: "); + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + fflush (stderr); + + va_end (args); + + rl_forced_update_display (); +} + +void +#if defined (PREFER_STDARG) +_rl_errmsg (const char *format, ...) +#else +_rl_errmsg (va_alist) + va_dcl +#endif +{ + va_list args; +#if defined (PREFER_VARARGS) + char *format; +#endif + +#if defined (PREFER_STDARG) + va_start (args, format); +#else + va_start (args); + format = va_arg (args, char *); +#endif + + fprintf (stderr, "readline: "); + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + fflush (stderr); + + va_end (args); +} + +#else /* !USE_VARARGS */ +void +_rl_ttymsg (format, arg1, arg2) + char *format; +{ + fprintf (stderr, "readline: "); + fprintf (stderr, format, arg1, arg2); + fprintf (stderr, "\n"); + + rl_forced_update_display (); +} + +void +_rl_errmsg (format, arg1, arg2) + char *format; +{ + fprintf (stderr, "readline: "); + fprintf (stderr, format, arg1, arg2); + fprintf (stderr, "\n"); +} +#endif /* !USE_VARARGS */ + +/* **************************************************************** */ +/* */ +/* String Utility Functions */ +/* */ +/* **************************************************************** */ + +/* Determine if s2 occurs in s1. If so, return a pointer to the + match in s1. The compare is case insensitive. */ +char * +_rl_strindex (const char *s1, const char *s2) +{ + register int i, l, len; + + for (i = 0, l = strlen (s2), len = strlen (s1); (len - i) >= l; i++) + if (_rl_strnicmp (s1 + i, s2, l) == 0) + return ((char *) (s1 + i)); + return ((char *)NULL); +} + +#ifndef HAVE_STRPBRK +/* Find the first occurrence in STRING1 of any character from STRING2. + Return a pointer to the character in STRING1. */ +char * +_rl_strpbrk (const char *string1, const char *string2) +{ + register const char *scan; +#if defined (HANDLE_MULTIBYTE) + mbstate_t ps; + register int i, v; + + memset (&ps, 0, sizeof (mbstate_t)); +#endif + + for (; *string1; string1++) + { + for (scan = string2; *scan; scan++) + { + if (*string1 == *scan) + return ((char *)string1); + } +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + v = _rl_get_char_len (string1, &ps); + if (v > 1) + string1 += v - 1; /* -1 to account for auto-increment in loop */ + } +#endif + } + return ((char *)NULL); +} +#endif + +#if !defined (HAVE_STRCASECMP) +/* Compare at most COUNT characters from string1 to string2. Case + doesn't matter (strncasecmp). */ +int +_rl_strnicmp (const char *string1, const char *string2, int count) +{ + register const char *s1; + register const char *s2; + register int d; + + if (count <= 0 || (string1 == string2)) + return 0; + + s1 = string1; + s2 = string2; + do + { + d = _rl_to_lower (*s1) - _rl_to_lower (*s2); /* XXX - cast to unsigned char? */ + if (d != 0) + return d; + if (*s1++ == '\0') + break; + s2++; + } + while (--count != 0); + + return (0); +} + +/* strcmp (), but caseless (strcasecmp). */ +int +_rl_stricmp (const char *string1, const char *string2) +{ + register const char *s1; + register const char *s2; + register int d; + + s1 = string1; + s2 = string2; + + if (s1 == s2) + return 0; + + while ((d = _rl_to_lower (*s1) - _rl_to_lower (*s2)) == 0) + { + if (*s1++ == '\0') + return 0; + s2++; + } + + return (d); +} +#endif /* !HAVE_STRCASECMP */ + +/* Stupid comparison routine for qsort () ing strings. */ +int +_rl_qsort_string_compare (char **s1, char **s2) +{ +#if defined (HAVE_STRCOLL) + return (strcoll (*s1, *s2)); +#else + int result; + + result = **s1 - **s2; + if (result == 0) + result = strcmp (*s1, *s2); + + return result; +#endif +} + +/* Function equivalents for the macros defined in chardefs.h. */ +#define FUNCTION_FOR_MACRO(f) int (f) (int c) { return f (c); } + +FUNCTION_FOR_MACRO (_rl_digit_p) +FUNCTION_FOR_MACRO (_rl_digit_value) +FUNCTION_FOR_MACRO (_rl_lowercase_p) +FUNCTION_FOR_MACRO (_rl_pure_alphabetic) +FUNCTION_FOR_MACRO (_rl_to_lower) +FUNCTION_FOR_MACRO (_rl_to_upper) +FUNCTION_FOR_MACRO (_rl_uppercase_p) + +/* A convenience function, to force memory deallocation to be performed + by readline. DLLs on Windows apparently require this. */ +void +rl_free (void *mem) +{ + if (mem) + free (mem); +} + +/* Backwards compatibility, now that savestring has been removed from + all `public' readline header files. */ +#undef _rl_savestring +char * +_rl_savestring (const char *s) +{ + return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s))); +} + +#if defined (DEBUG) +#if defined (USE_VARARGS) +static FILE *_rl_tracefp; + +void +#if defined (PREFER_STDARG) +_rl_trace (const char *format, ...) +#else +_rl_trace (va_alist) + va_dcl +#endif +{ + va_list args; +#if defined (PREFER_VARARGS) + char *format; +#endif + +#if defined (PREFER_STDARG) + va_start (args, format); +#else + va_start (args); + format = va_arg (args, char *); +#endif + + if (_rl_tracefp == 0) + _rl_tropen (); + vfprintf (_rl_tracefp, format, args); + fprintf (_rl_tracefp, "\n"); + fflush (_rl_tracefp); + + va_end (args); +} + +int +_rl_tropen (void) +{ + char fnbuf[128], *x; + + if (_rl_tracefp) + fclose (_rl_tracefp); +#if defined (_WIN32) && !defined (__CYGWIN__) + x = sh_get_env_value ("TEMP"); + if (x == 0) + x = "."; +#else + x = "/var/tmp"; +#endif + snprintf (fnbuf, sizeof (fnbuf), "%s/rltrace.%ld", x, (long)getpid()); + unlink(fnbuf); + _rl_tracefp = fopen (fnbuf, "w+"); + return _rl_tracefp != 0; +} + +int +_rl_trclose (void) +{ + int r; + + r = fclose (_rl_tracefp); + _rl_tracefp = 0; + return r; +} + +void +_rl_settracefp (FILE *fp) +{ + _rl_tracefp = fp; +} +#endif +#endif /* DEBUG */ + + +#if HAVE_DECL_AUDIT_USER_TTY && defined (HAVE_LIBAUDIT_H) && defined (ENABLE_TTY_AUDIT_SUPPORT) +#include +#include +#include +#include + +/* Report STRING to the audit system. */ +void +_rl_audit_tty (char *string) +{ + struct audit_message req; + struct sockaddr_nl addr; + size_t size; + int fd; + + fd = socket (PF_NETLINK, SOCK_RAW, NETLINK_AUDIT); + if (fd < 0) + return; + size = strlen (string) + 1; + + if (NLMSG_SPACE (size) > MAX_AUDIT_MESSAGE_LENGTH) + return; + + memset (&req, 0, sizeof(req)); + req.nlh.nlmsg_len = NLMSG_SPACE (size); + req.nlh.nlmsg_type = AUDIT_USER_TTY; + req.nlh.nlmsg_flags = NLM_F_REQUEST; + req.nlh.nlmsg_seq = 0; + if (size && string) + memcpy (NLMSG_DATA(&req.nlh), string, size); + memset (&addr, 0, sizeof(addr)); + + addr.nl_family = AF_NETLINK; + addr.nl_pid = 0; + addr.nl_groups = 0; + + sendto (fd, &req, req.nlh.nlmsg_len, 0, (struct sockaddr*)&addr, sizeof(addr)); + close (fd); +} +#endif diff --git a/bash-5.1/lib/readline/vi_keymap.c b/bash-5.1/lib/readline/vi_keymap.c new file mode 100644 index 0000000..045258b --- /dev/null +++ b/bash-5.1/lib/readline/vi_keymap.c @@ -0,0 +1,875 @@ +/* vi_keymap.c -- the keymap for vi_mode in readline (). */ + +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (BUFSIZ) +#include +#endif /* !BUFSIZ */ + +#include "readline.h" + +#if 0 +extern KEYMAP_ENTRY_ARRAY vi_escape_keymap; +#endif + +/* The keymap arrays for handling vi mode. */ +KEYMAP_ENTRY_ARRAY vi_movement_keymap = { + /* The regular control keys come first. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-a */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-b */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */ + { ISFUNC, rl_vi_eof_maybe }, /* Control-d */ + { ISFUNC, rl_emacs_editing_mode }, /* Control-e */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-f */ + { ISFUNC, rl_abort }, /* Control-g */ + { ISFUNC, rl_backward_char }, /* Control-h */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-i */ + { ISFUNC, rl_newline }, /* Control-j */ + { ISFUNC, rl_kill_line }, /* Control-k */ + { ISFUNC, rl_clear_screen }, /* Control-l */ + { ISFUNC, rl_newline }, /* Control-m */ + { ISFUNC, rl_get_next_history }, /* Control-n */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */ + { ISFUNC, rl_get_previous_history }, /* Control-p */ + { ISFUNC, rl_quoted_insert }, /* Control-q */ + { ISFUNC, rl_reverse_search_history }, /* Control-r */ + { ISFUNC, rl_forward_search_history }, /* Control-s */ + { ISFUNC, rl_transpose_chars }, /* Control-t */ + { ISFUNC, rl_unix_line_discard }, /* Control-u */ + { ISFUNC, rl_quoted_insert }, /* Control-v */ + { ISFUNC, rl_vi_unix_word_rubout }, /* Control-w */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-x */ + { ISFUNC, rl_yank }, /* Control-y */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */ + + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-[ */ /* vi_escape_keymap */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-] */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */ + { ISFUNC, rl_vi_undo }, /* Control-_ */ + + /* The start of printing characters. */ + { ISFUNC, rl_forward_char }, /* SPACE */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ! */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* " */ + { ISFUNC, rl_insert_comment }, /* # */ + { ISFUNC, rl_end_of_line }, /* $ */ + { ISFUNC, rl_vi_match }, /* % */ + { ISFUNC, rl_vi_tilde_expand }, /* & */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ' */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ( */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ) */ + { ISFUNC, rl_vi_complete }, /* * */ + { ISFUNC, rl_get_next_history}, /* + */ + { ISFUNC, rl_vi_char_search }, /* , */ + { ISFUNC, rl_get_previous_history }, /* - */ + { ISFUNC, rl_vi_redo }, /* . */ + { ISFUNC, rl_vi_search }, /* / */ + + /* Regular digits. */ + { ISFUNC, rl_beg_of_line }, /* 0 */ + { ISFUNC, rl_vi_arg_digit }, /* 1 */ + { ISFUNC, rl_vi_arg_digit }, /* 2 */ + { ISFUNC, rl_vi_arg_digit }, /* 3 */ + { ISFUNC, rl_vi_arg_digit }, /* 4 */ + { ISFUNC, rl_vi_arg_digit }, /* 5 */ + { ISFUNC, rl_vi_arg_digit }, /* 6 */ + { ISFUNC, rl_vi_arg_digit }, /* 7 */ + { ISFUNC, rl_vi_arg_digit }, /* 8 */ + { ISFUNC, rl_vi_arg_digit }, /* 9 */ + + /* A little more punctuation. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* : */ + { ISFUNC, rl_vi_char_search }, /* ; */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* < */ + { ISFUNC, rl_vi_complete }, /* = */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* > */ + { ISFUNC, rl_vi_search }, /* ? */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* @ */ + + /* Uppercase alphabet. */ + { ISFUNC, rl_vi_append_eol }, /* A */ + { ISFUNC, rl_vi_prev_word}, /* B */ + { ISFUNC, rl_vi_change_to }, /* C */ + { ISFUNC, rl_vi_delete_to }, /* D */ + { ISFUNC, rl_vi_end_word }, /* E */ + { ISFUNC, rl_vi_char_search }, /* F */ + { ISFUNC, rl_vi_fetch_history }, /* G */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* H */ + { ISFUNC, rl_vi_insert_beg }, /* I */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* J */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* K */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* L */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* M */ + { ISFUNC, rl_vi_search_again }, /* N */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* O */ + { ISFUNC, rl_vi_put }, /* P */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Q */ + { ISFUNC, rl_vi_replace }, /* R */ + { ISFUNC, rl_vi_subst }, /* S */ + { ISFUNC, rl_vi_char_search }, /* T */ + { ISFUNC, rl_revert_line }, /* U */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* V */ + { ISFUNC, rl_vi_next_word }, /* W */ + { ISFUNC, rl_vi_rubout }, /* X */ + { ISFUNC, rl_vi_yank_to }, /* Y */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Z */ + + /* Some more punctuation. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* [ */ + { ISFUNC, rl_vi_complete }, /* \ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ] */ + { ISFUNC, rl_vi_first_print }, /* ^ */ + { ISFUNC, rl_vi_yank_arg }, /* _ */ + { ISFUNC, rl_vi_goto_mark }, /* ` */ + + /* Lowercase alphabet. */ + { ISFUNC, rl_vi_append_mode }, /* a */ + { ISFUNC, rl_vi_prev_word }, /* b */ + { ISFUNC, rl_vi_change_to }, /* c */ + { ISFUNC, rl_vi_delete_to }, /* d */ + { ISFUNC, rl_vi_end_word }, /* e */ + { ISFUNC, rl_vi_char_search }, /* f */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* g */ + { ISFUNC, rl_backward_char }, /* h */ + { ISFUNC, rl_vi_insert_mode }, /* i */ + { ISFUNC, rl_get_next_history }, /* j */ + { ISFUNC, rl_get_previous_history }, /* k */ + { ISFUNC, rl_forward_char }, /* l */ + { ISFUNC, rl_vi_set_mark }, /* m */ + { ISFUNC, rl_vi_search_again }, /* n */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* o */ + { ISFUNC, rl_vi_put }, /* p */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* q */ + { ISFUNC, rl_vi_change_char }, /* r */ + { ISFUNC, rl_vi_subst }, /* s */ + { ISFUNC, rl_vi_char_search }, /* t */ + { ISFUNC, rl_vi_undo }, /* u */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* v */ + { ISFUNC, rl_vi_next_word }, /* w */ + { ISFUNC, rl_vi_delete }, /* x */ + { ISFUNC, rl_vi_yank_to }, /* y */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* z */ + + /* Final punctuation. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* { */ + { ISFUNC, rl_vi_column }, /* | */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* } */ + { ISFUNC, rl_vi_change_case }, /* ~ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* RUBOUT */ + +#if KEYMAP_SIZE > 128 + /* Undefined keys. */ + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 } +#endif /* KEYMAP_SIZE > 128 */ +}; + +KEYMAP_ENTRY_ARRAY vi_insertion_keymap = { + /* The regular control keys come first. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */ + { ISFUNC, rl_insert }, /* Control-a */ + { ISFUNC, rl_insert }, /* Control-b */ + { ISFUNC, rl_insert }, /* Control-c */ + { ISFUNC, rl_vi_eof_maybe }, /* Control-d */ + { ISFUNC, rl_insert }, /* Control-e */ + { ISFUNC, rl_insert }, /* Control-f */ + { ISFUNC, rl_insert }, /* Control-g */ + { ISFUNC, rl_rubout }, /* Control-h */ + { ISFUNC, rl_complete }, /* Control-i */ + { ISFUNC, rl_newline }, /* Control-j */ + { ISFUNC, rl_insert }, /* Control-k */ + { ISFUNC, rl_insert }, /* Control-l */ + { ISFUNC, rl_newline }, /* Control-m */ + { ISFUNC, rl_menu_complete}, /* Control-n */ + { ISFUNC, rl_insert }, /* Control-o */ + { ISFUNC, rl_backward_menu_complete }, /* Control-p */ + { ISFUNC, rl_insert }, /* Control-q */ + { ISFUNC, rl_reverse_search_history }, /* Control-r */ + { ISFUNC, rl_forward_search_history }, /* Control-s */ + { ISFUNC, rl_transpose_chars }, /* Control-t */ + { ISFUNC, rl_unix_line_discard }, /* Control-u */ + { ISFUNC, rl_quoted_insert }, /* Control-v */ + { ISFUNC, rl_vi_unix_word_rubout }, /* Control-w */ + { ISFUNC, rl_insert }, /* Control-x */ + { ISFUNC, rl_yank }, /* Control-y */ + { ISFUNC, rl_insert }, /* Control-z */ + + { ISFUNC, rl_vi_movement_mode }, /* Control-[ */ + { ISFUNC, rl_insert }, /* Control-\ */ + { ISFUNC, rl_insert }, /* Control-] */ + { ISFUNC, rl_insert }, /* Control-^ */ + { ISFUNC, rl_vi_undo }, /* Control-_ */ + + /* The start of printing characters. */ + { ISFUNC, rl_insert }, /* SPACE */ + { ISFUNC, rl_insert }, /* ! */ + { ISFUNC, rl_insert }, /* " */ + { ISFUNC, rl_insert }, /* # */ + { ISFUNC, rl_insert }, /* $ */ + { ISFUNC, rl_insert }, /* % */ + { ISFUNC, rl_insert }, /* & */ + { ISFUNC, rl_insert }, /* ' */ + { ISFUNC, rl_insert }, /* ( */ + { ISFUNC, rl_insert }, /* ) */ + { ISFUNC, rl_insert }, /* * */ + { ISFUNC, rl_insert }, /* + */ + { ISFUNC, rl_insert }, /* , */ + { ISFUNC, rl_insert }, /* - */ + { ISFUNC, rl_insert }, /* . */ + { ISFUNC, rl_insert }, /* / */ + + /* Regular digits. */ + { ISFUNC, rl_insert }, /* 0 */ + { ISFUNC, rl_insert }, /* 1 */ + { ISFUNC, rl_insert }, /* 2 */ + { ISFUNC, rl_insert }, /* 3 */ + { ISFUNC, rl_insert }, /* 4 */ + { ISFUNC, rl_insert }, /* 5 */ + { ISFUNC, rl_insert }, /* 6 */ + { ISFUNC, rl_insert }, /* 7 */ + { ISFUNC, rl_insert }, /* 8 */ + { ISFUNC, rl_insert }, /* 9 */ + + /* A little more punctuation. */ + { ISFUNC, rl_insert }, /* : */ + { ISFUNC, rl_insert }, /* ; */ + { ISFUNC, rl_insert }, /* < */ + { ISFUNC, rl_insert }, /* = */ + { ISFUNC, rl_insert }, /* > */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* @ */ + + /* Uppercase alphabet. */ + { ISFUNC, rl_insert }, /* A */ + { ISFUNC, rl_insert }, /* B */ + { ISFUNC, rl_insert }, /* C */ + { ISFUNC, rl_insert }, /* D */ + { ISFUNC, rl_insert }, /* E */ + { ISFUNC, rl_insert }, /* F */ + { ISFUNC, rl_insert }, /* G */ + { ISFUNC, rl_insert }, /* H */ + { ISFUNC, rl_insert }, /* I */ + { ISFUNC, rl_insert }, /* J */ + { ISFUNC, rl_insert }, /* K */ + { ISFUNC, rl_insert }, /* L */ + { ISFUNC, rl_insert }, /* M */ + { ISFUNC, rl_insert }, /* N */ + { ISFUNC, rl_insert }, /* O */ + { ISFUNC, rl_insert }, /* P */ + { ISFUNC, rl_insert }, /* Q */ + { ISFUNC, rl_insert }, /* R */ + { ISFUNC, rl_insert }, /* S */ + { ISFUNC, rl_insert }, /* T */ + { ISFUNC, rl_insert }, /* U */ + { ISFUNC, rl_insert }, /* V */ + { ISFUNC, rl_insert }, /* W */ + { ISFUNC, rl_insert }, /* X */ + { ISFUNC, rl_insert }, /* Y */ + { ISFUNC, rl_insert }, /* Z */ + + /* Some more punctuation. */ + { ISFUNC, rl_insert }, /* [ */ + { ISFUNC, rl_insert }, /* \ */ + { ISFUNC, rl_insert }, /* ] */ + { ISFUNC, rl_insert }, /* ^ */ + { ISFUNC, rl_insert }, /* _ */ + { ISFUNC, rl_insert }, /* ` */ + + /* Lowercase alphabet. */ + { ISFUNC, rl_insert }, /* a */ + { ISFUNC, rl_insert }, /* b */ + { ISFUNC, rl_insert }, /* c */ + { ISFUNC, rl_insert }, /* d */ + { ISFUNC, rl_insert }, /* e */ + { ISFUNC, rl_insert }, /* f */ + { ISFUNC, rl_insert }, /* g */ + { ISFUNC, rl_insert }, /* h */ + { ISFUNC, rl_insert }, /* i */ + { ISFUNC, rl_insert }, /* j */ + { ISFUNC, rl_insert }, /* k */ + { ISFUNC, rl_insert }, /* l */ + { ISFUNC, rl_insert }, /* m */ + { ISFUNC, rl_insert }, /* n */ + { ISFUNC, rl_insert }, /* o */ + { ISFUNC, rl_insert }, /* p */ + { ISFUNC, rl_insert }, /* q */ + { ISFUNC, rl_insert }, /* r */ + { ISFUNC, rl_insert }, /* s */ + { ISFUNC, rl_insert }, /* t */ + { ISFUNC, rl_insert }, /* u */ + { ISFUNC, rl_insert }, /* v */ + { ISFUNC, rl_insert }, /* w */ + { ISFUNC, rl_insert }, /* x */ + { ISFUNC, rl_insert }, /* y */ + { ISFUNC, rl_insert }, /* z */ + + /* Final punctuation. */ + { ISFUNC, rl_insert }, /* { */ + { ISFUNC, rl_insert }, /* | */ + { ISFUNC, rl_insert }, /* } */ + { ISFUNC, rl_insert }, /* ~ */ + { ISFUNC, rl_rubout }, /* RUBOUT */ + +#if KEYMAP_SIZE > 128 + /* Pure 8-bit characters (128 - 159). + These might be used in some + character sets. */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + { ISFUNC, rl_insert }, /* ? */ + + /* ISO Latin-1 characters (160 - 255) */ + { ISFUNC, rl_insert }, /* No-break space */ + { ISFUNC, rl_insert }, /* Inverted exclamation mark */ + { ISFUNC, rl_insert }, /* Cent sign */ + { ISFUNC, rl_insert }, /* Pound sign */ + { ISFUNC, rl_insert }, /* Currency sign */ + { ISFUNC, rl_insert }, /* Yen sign */ + { ISFUNC, rl_insert }, /* Broken bar */ + { ISFUNC, rl_insert }, /* Section sign */ + { ISFUNC, rl_insert }, /* Diaeresis */ + { ISFUNC, rl_insert }, /* Copyright sign */ + { ISFUNC, rl_insert }, /* Feminine ordinal indicator */ + { ISFUNC, rl_insert }, /* Left pointing double angle quotation mark */ + { ISFUNC, rl_insert }, /* Not sign */ + { ISFUNC, rl_insert }, /* Soft hyphen */ + { ISFUNC, rl_insert }, /* Registered sign */ + { ISFUNC, rl_insert }, /* Macron */ + { ISFUNC, rl_insert }, /* Degree sign */ + { ISFUNC, rl_insert }, /* Plus-minus sign */ + { ISFUNC, rl_insert }, /* Superscript two */ + { ISFUNC, rl_insert }, /* Superscript three */ + { ISFUNC, rl_insert }, /* Acute accent */ + { ISFUNC, rl_insert }, /* Micro sign */ + { ISFUNC, rl_insert }, /* Pilcrow sign */ + { ISFUNC, rl_insert }, /* Middle dot */ + { ISFUNC, rl_insert }, /* Cedilla */ + { ISFUNC, rl_insert }, /* Superscript one */ + { ISFUNC, rl_insert }, /* Masculine ordinal indicator */ + { ISFUNC, rl_insert }, /* Right pointing double angle quotation mark */ + { ISFUNC, rl_insert }, /* Vulgar fraction one quarter */ + { ISFUNC, rl_insert }, /* Vulgar fraction one half */ + { ISFUNC, rl_insert }, /* Vulgar fraction three quarters */ + { ISFUNC, rl_insert }, /* Inverted questionk mark */ + { ISFUNC, rl_insert }, /* Latin capital letter a with grave */ + { ISFUNC, rl_insert }, /* Latin capital letter a with acute */ + { ISFUNC, rl_insert }, /* Latin capital letter a with circumflex */ + { ISFUNC, rl_insert }, /* Latin capital letter a with tilde */ + { ISFUNC, rl_insert }, /* Latin capital letter a with diaeresis */ + { ISFUNC, rl_insert }, /* Latin capital letter a with ring above */ + { ISFUNC, rl_insert }, /* Latin capital letter ae */ + { ISFUNC, rl_insert }, /* Latin capital letter c with cedilla */ + { ISFUNC, rl_insert }, /* Latin capital letter e with grave */ + { ISFUNC, rl_insert }, /* Latin capital letter e with acute */ + { ISFUNC, rl_insert }, /* Latin capital letter e with circumflex */ + { ISFUNC, rl_insert }, /* Latin capital letter e with diaeresis */ + { ISFUNC, rl_insert }, /* Latin capital letter i with grave */ + { ISFUNC, rl_insert }, /* Latin capital letter i with acute */ + { ISFUNC, rl_insert }, /* Latin capital letter i with circumflex */ + { ISFUNC, rl_insert }, /* Latin capital letter i with diaeresis */ + { ISFUNC, rl_insert }, /* Latin capital letter eth (Icelandic) */ + { ISFUNC, rl_insert }, /* Latin capital letter n with tilde */ + { ISFUNC, rl_insert }, /* Latin capital letter o with grave */ + { ISFUNC, rl_insert }, /* Latin capital letter o with acute */ + { ISFUNC, rl_insert }, /* Latin capital letter o with circumflex */ + { ISFUNC, rl_insert }, /* Latin capital letter o with tilde */ + { ISFUNC, rl_insert }, /* Latin capital letter o with diaeresis */ + { ISFUNC, rl_insert }, /* Multiplication sign */ + { ISFUNC, rl_insert }, /* Latin capital letter o with stroke */ + { ISFUNC, rl_insert }, /* Latin capital letter u with grave */ + { ISFUNC, rl_insert }, /* Latin capital letter u with acute */ + { ISFUNC, rl_insert }, /* Latin capital letter u with circumflex */ + { ISFUNC, rl_insert }, /* Latin capital letter u with diaeresis */ + { ISFUNC, rl_insert }, /* Latin capital letter Y with acute */ + { ISFUNC, rl_insert }, /* Latin capital letter thorn (Icelandic) */ + { ISFUNC, rl_insert }, /* Latin small letter sharp s (German) */ + { ISFUNC, rl_insert }, /* Latin small letter a with grave */ + { ISFUNC, rl_insert }, /* Latin small letter a with acute */ + { ISFUNC, rl_insert }, /* Latin small letter a with circumflex */ + { ISFUNC, rl_insert }, /* Latin small letter a with tilde */ + { ISFUNC, rl_insert }, /* Latin small letter a with diaeresis */ + { ISFUNC, rl_insert }, /* Latin small letter a with ring above */ + { ISFUNC, rl_insert }, /* Latin small letter ae */ + { ISFUNC, rl_insert }, /* Latin small letter c with cedilla */ + { ISFUNC, rl_insert }, /* Latin small letter e with grave */ + { ISFUNC, rl_insert }, /* Latin small letter e with acute */ + { ISFUNC, rl_insert }, /* Latin small letter e with circumflex */ + { ISFUNC, rl_insert }, /* Latin small letter e with diaeresis */ + { ISFUNC, rl_insert }, /* Latin small letter i with grave */ + { ISFUNC, rl_insert }, /* Latin small letter i with acute */ + { ISFUNC, rl_insert }, /* Latin small letter i with circumflex */ + { ISFUNC, rl_insert }, /* Latin small letter i with diaeresis */ + { ISFUNC, rl_insert }, /* Latin small letter eth (Icelandic) */ + { ISFUNC, rl_insert }, /* Latin small letter n with tilde */ + { ISFUNC, rl_insert }, /* Latin small letter o with grave */ + { ISFUNC, rl_insert }, /* Latin small letter o with acute */ + { ISFUNC, rl_insert }, /* Latin small letter o with circumflex */ + { ISFUNC, rl_insert }, /* Latin small letter o with tilde */ + { ISFUNC, rl_insert }, /* Latin small letter o with diaeresis */ + { ISFUNC, rl_insert }, /* Division sign */ + { ISFUNC, rl_insert }, /* Latin small letter o with stroke */ + { ISFUNC, rl_insert }, /* Latin small letter u with grave */ + { ISFUNC, rl_insert }, /* Latin small letter u with acute */ + { ISFUNC, rl_insert }, /* Latin small letter u with circumflex */ + { ISFUNC, rl_insert }, /* Latin small letter u with diaeresis */ + { ISFUNC, rl_insert }, /* Latin small letter y with acute */ + { ISFUNC, rl_insert }, /* Latin small letter thorn (Icelandic) */ + { ISFUNC, rl_insert } /* Latin small letter y with diaeresis */ +#endif /* KEYMAP_SIZE > 128 */ +}; + +/* Unused for the time being. */ +#if 0 +KEYMAP_ENTRY_ARRAY vi_escape_keymap = { + /* The regular control keys come first. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-@ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-a */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-b */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-c */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-d */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-e */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-f */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-g */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-h */ + { ISFUNC, rl_tab_insert}, /* Control-i */ + { ISFUNC, rl_emacs_editing_mode}, /* Control-j */ + { ISFUNC, rl_kill_line }, /* Control-k */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-l */ + { ISFUNC, rl_emacs_editing_mode}, /* Control-m */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-n */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-p */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-q */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-r */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-s */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-t */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-u */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-v */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-w */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-x */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-y */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */ + + { ISFUNC, rl_vi_movement_mode }, /* Control-[ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-\ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-] */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-^ */ + { ISFUNC, rl_vi_undo }, /* Control-_ */ + + /* The start of printing characters. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* SPACE */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ! */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* " */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* # */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* $ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* % */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* & */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ' */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ( */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ) */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* * */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* + */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* , */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* - */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* . */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* / */ + + /* Regular digits. */ + { ISFUNC, rl_vi_arg_digit }, /* 0 */ + { ISFUNC, rl_vi_arg_digit }, /* 1 */ + { ISFUNC, rl_vi_arg_digit }, /* 2 */ + { ISFUNC, rl_vi_arg_digit }, /* 3 */ + { ISFUNC, rl_vi_arg_digit }, /* 4 */ + { ISFUNC, rl_vi_arg_digit }, /* 5 */ + { ISFUNC, rl_vi_arg_digit }, /* 6 */ + { ISFUNC, rl_vi_arg_digit }, /* 7 */ + { ISFUNC, rl_vi_arg_digit }, /* 8 */ + { ISFUNC, rl_vi_arg_digit }, /* 9 */ + + /* A little more punctuation. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* : */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ; */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* < */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* = */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* > */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ? */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* @ */ + + /* Uppercase alphabet. */ + { ISFUNC, rl_do_lowercase_version }, /* A */ + { ISFUNC, rl_do_lowercase_version }, /* B */ + { ISFUNC, rl_do_lowercase_version }, /* C */ + { ISFUNC, rl_do_lowercase_version }, /* D */ + { ISFUNC, rl_do_lowercase_version }, /* E */ + { ISFUNC, rl_do_lowercase_version }, /* F */ + { ISFUNC, rl_do_lowercase_version }, /* G */ + { ISFUNC, rl_do_lowercase_version }, /* H */ + { ISFUNC, rl_do_lowercase_version }, /* I */ + { ISFUNC, rl_do_lowercase_version }, /* J */ + { ISFUNC, rl_do_lowercase_version }, /* K */ + { ISFUNC, rl_do_lowercase_version }, /* L */ + { ISFUNC, rl_do_lowercase_version }, /* M */ + { ISFUNC, rl_do_lowercase_version }, /* N */ + { ISFUNC, rl_do_lowercase_version }, /* O */ + { ISFUNC, rl_do_lowercase_version }, /* P */ + { ISFUNC, rl_do_lowercase_version }, /* Q */ + { ISFUNC, rl_do_lowercase_version }, /* R */ + { ISFUNC, rl_do_lowercase_version }, /* S */ + { ISFUNC, rl_do_lowercase_version }, /* T */ + { ISFUNC, rl_do_lowercase_version }, /* U */ + { ISFUNC, rl_do_lowercase_version }, /* V */ + { ISFUNC, rl_do_lowercase_version }, /* W */ + { ISFUNC, rl_do_lowercase_version }, /* X */ + { ISFUNC, rl_do_lowercase_version }, /* Y */ + { ISFUNC, rl_do_lowercase_version }, /* Z */ + + /* Some more punctuation. */ + { ISFUNC, rl_arrow_keys }, /* [ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* \ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ] */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ^ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* _ */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ` */ + + /* Lowercase alphabet. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* a */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* b */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* c */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* d */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* e */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* f */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* g */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* h */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* i */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* j */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* k */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* l */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* m */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* n */ + { ISFUNC, rl_arrow_keys }, /* o */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* p */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* q */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* r */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* s */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* t */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* u */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* v */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* w */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* x */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* y */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* z */ + + /* Final punctuation. */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* { */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* | */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* } */ + { ISFUNC, (rl_command_func_t *)0x0 }, /* ~ */ + { ISFUNC, rl_backward_kill_word }, /* RUBOUT */ + +#if KEYMAP_SIZE > 128 + /* Undefined keys. */ + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 }, + { ISFUNC, (rl_command_func_t *)0x0 } +#endif /* KEYMAP_SIZE > 128 */ +}; +#endif diff --git a/bash-5.1/lib/readline/vi_mode.c b/bash-5.1/lib/readline/vi_mode.c new file mode 100644 index 0000000..742341e --- /dev/null +++ b/bash-5.1/lib/readline/vi_mode.c @@ -0,0 +1,2408 @@ +/* vi_mode.c -- A vi emulation mode for Bash. + Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +/* **************************************************************** */ +/* */ +/* VI Emulation Mode */ +/* */ +/* **************************************************************** */ +#include "rlconf.h" + +#if defined (VI_MODE) + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +/* Some standard library routines. */ +#include "rldefs.h" +#include "rlmbutil.h" + +#include "readline.h" +#include "history.h" + +#include "rlprivate.h" +#include "xmalloc.h" + +#ifndef member +#define member(c, s) ((c) ? (char *)strchr ((s), (c)) != (char *)NULL : 0) +#endif + +/* Increment START to the next character in RL_LINE_BUFFER, handling multibyte chars */ +#if defined (HANDLE_MULTIBYTE) +#define INCREMENT_POS(start) \ + do { \ + if (MB_CUR_MAX == 1 || rl_byte_oriented) \ + start++; \ + else \ + start = _rl_find_next_mbchar (rl_line_buffer, start, 1, MB_FIND_ANY); \ + } while (0) +#else /* !HANDLE_MULTIBYTE */ +#define INCREMENT_POS(start) (start)++ +#endif /* !HANDLE_MULTIBYTE */ + +/* This is global so other parts of the code can check whether the last + command was a text modification command. */ +int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */ + +_rl_vimotion_cxt *_rl_vimvcxt = 0; + +/* Non-zero indicates we are redoing a vi-mode command with `.' */ +int _rl_vi_redoing; + +/* Non-zero means enter insertion mode. */ +static int _rl_vi_doing_insert; + +/* Command keys which do movement for xxx_to commands. */ +static const char * const vi_motion = " hl^$0ftFT;,%wbeWBE|`"; + +/* Keymap used for vi replace characters. Created dynamically since + rarely used. */ +static Keymap vi_replace_map; + +/* The number of characters inserted in the last replace operation. */ +static int vi_replace_count; + +/* If non-zero, we have text inserted after a c[motion] command that put + us implicitly into insert mode. Some people want this text to be + attached to the command so that it is `redoable' with `.'. */ +static int vi_continued_command; +static char *vi_insert_buffer; +static int vi_insert_buffer_size; + +static int _rl_vi_last_repeat = 1; +static int _rl_vi_last_arg_sign = 1; +static int _rl_vi_last_motion; +#if defined (HANDLE_MULTIBYTE) +static char _rl_vi_last_search_mbchar[MB_LEN_MAX]; +static int _rl_vi_last_search_mblen; +#else +static int _rl_vi_last_search_char; +#endif +static char _rl_vi_last_replacement[MB_LEN_MAX+1]; /* reserve for trailing NULL */ + +static int _rl_vi_last_key_before_insert; + +/* Text modification commands. These are the `redoable' commands. */ +static const char * const vi_textmod = "_*\\AaIiCcDdPpYyRrSsXx~"; + +/* Arrays for the saved marks. */ +static int vi_mark_chars['z' - 'a' + 1]; + +static void _rl_vi_replace_insert PARAMS((int)); +static void _rl_vi_save_replace PARAMS((void)); +static void _rl_vi_stuff_insert PARAMS((int)); +static void _rl_vi_save_insert PARAMS((UNDO_LIST *)); + +static void vi_save_insert_buffer PARAMS ((int, int)); + +static inline void _rl_vi_backup PARAMS((void)); + +static int _rl_vi_arg_dispatch PARAMS((int)); +static int rl_digit_loop1 PARAMS((void)); + +static int _rl_vi_set_mark PARAMS((void)); +static int _rl_vi_goto_mark PARAMS((void)); + +static inline int _rl_vi_advance_point PARAMS((void)); +static inline int _rl_vi_backup_point PARAMS((void)); + +static void _rl_vi_append_forward PARAMS((int)); + +static int _rl_vi_callback_getchar PARAMS((char *, int)); + +#if defined (READLINE_CALLBACKS) +static int _rl_vi_callback_set_mark PARAMS((_rl_callback_generic_arg *)); +static int _rl_vi_callback_goto_mark PARAMS((_rl_callback_generic_arg *)); +static int _rl_vi_callback_change_char PARAMS((_rl_callback_generic_arg *)); +static int _rl_vi_callback_char_search PARAMS((_rl_callback_generic_arg *)); +#endif + +static int rl_domove_read_callback PARAMS((_rl_vimotion_cxt *)); +static int rl_domove_motion_callback PARAMS((_rl_vimotion_cxt *)); +static int rl_vi_domove_getchar PARAMS((_rl_vimotion_cxt *)); + +static int vi_change_dispatch PARAMS((_rl_vimotion_cxt *)); +static int vi_delete_dispatch PARAMS((_rl_vimotion_cxt *)); +static int vi_yank_dispatch PARAMS((_rl_vimotion_cxt *)); + +static int vidomove_dispatch PARAMS((_rl_vimotion_cxt *)); + +void +_rl_vi_initialize_line (void) +{ + register int i, n; + + n = sizeof (vi_mark_chars) / sizeof (vi_mark_chars[0]); + for (i = 0; i < n; i++) + vi_mark_chars[i] = -1; + + RL_UNSETSTATE(RL_STATE_VICMDONCE); +} + +void +_rl_vi_reset_last (void) +{ + _rl_vi_last_command = 'i'; + _rl_vi_last_repeat = 1; + _rl_vi_last_arg_sign = 1; + _rl_vi_last_motion = 0; +} + +void +_rl_vi_set_last (int key, int repeat, int sign) +{ + _rl_vi_last_command = key; + _rl_vi_last_repeat = repeat; + _rl_vi_last_arg_sign = sign; +} + +/* A convenience function that calls _rl_vi_set_last to save the last command + information and enters insertion mode. */ +void +rl_vi_start_inserting (int key, int repeat, int sign) +{ + _rl_vi_set_last (key, repeat, sign); + rl_begin_undo_group (); /* ensure inserts aren't concatenated */ + rl_vi_insertion_mode (1, key); +} + +/* Is the command C a VI mode text modification command? */ +int +_rl_vi_textmod_command (int c) +{ + return (member (c, vi_textmod)); +} + +int +_rl_vi_motion_command (int c) +{ + return (member (c, vi_motion)); +} + +static void +_rl_vi_replace_insert (int count) +{ + int nchars; + + nchars = strlen (vi_insert_buffer); + + rl_begin_undo_group (); + while (count--) + /* nchars-1 to compensate for _rl_replace_text using `end+1' in call + to rl_delete_text */ + _rl_replace_text (vi_insert_buffer, rl_point, rl_point+nchars-1); + rl_end_undo_group (); +} + +static void +_rl_vi_stuff_insert (int count) +{ + rl_begin_undo_group (); + while (count--) + rl_insert_text (vi_insert_buffer); + rl_end_undo_group (); +} + +/* Bound to `.'. Called from command mode, so we know that we have to + redo a text modification command. The default for _rl_vi_last_command + puts you back into insert mode. */ +int +rl_vi_redo (int count, int c) +{ + int r; + + if (rl_explicit_arg == 0) + { + rl_numeric_arg = _rl_vi_last_repeat; + rl_arg_sign = _rl_vi_last_arg_sign; + } + + r = 0; + _rl_vi_redoing = 1; + /* If we're redoing an insert with `i', stuff in the inserted text + and do not go into insertion mode. */ + if (_rl_vi_last_command == 'i' && vi_insert_buffer && *vi_insert_buffer) + { + _rl_vi_stuff_insert (count); + /* And back up point over the last character inserted. */ + if (rl_point > 0) + _rl_vi_backup (); + } + else if (_rl_vi_last_command == 'R' && vi_insert_buffer && *vi_insert_buffer) + { + _rl_vi_replace_insert (count); + /* And back up point over the last character inserted. */ + if (rl_point > 0) + _rl_vi_backup (); + } + /* Ditto for redoing an insert with `I', but move to the beginning of the + line like the `I' command does. */ + else if (_rl_vi_last_command == 'I' && vi_insert_buffer && *vi_insert_buffer) + { + rl_beg_of_line (1, 'I'); + _rl_vi_stuff_insert (count); + if (rl_point > 0) + _rl_vi_backup (); + } + /* Ditto for redoing an insert with `a', but move forward a character first + like the `a' command does. */ + else if (_rl_vi_last_command == 'a' && vi_insert_buffer && *vi_insert_buffer) + { + _rl_vi_append_forward ('a'); + _rl_vi_stuff_insert (count); + if (rl_point > 0) + _rl_vi_backup (); + } + /* Ditto for redoing an insert with `A', but move to the end of the line + like the `A' command does. */ + else if (_rl_vi_last_command == 'A' && vi_insert_buffer && *vi_insert_buffer) + { + rl_end_of_line (1, 'A'); + _rl_vi_stuff_insert (count); + if (rl_point > 0) + _rl_vi_backup (); + } + else if (_rl_vi_last_command == '.' && _rl_keymap == vi_movement_keymap) + { + rl_ding (); + r = 0; + } + else + r = _rl_dispatch (_rl_vi_last_command, _rl_keymap); + + _rl_vi_redoing = 0; + + return (r); +} + +/* A placeholder for further expansion. */ +int +rl_vi_undo (int count, int key) +{ + return (rl_undo_command (count, key)); +} + +/* Yank the nth arg from the previous line into this line at point. */ +int +rl_vi_yank_arg (int count, int key) +{ + /* 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. */ + if (rl_explicit_arg) + rl_yank_nth_arg (count - 1, key); + else + rl_yank_nth_arg ('$', key); + + return (0); +} + +/* With an argument, move back that many history lines, else move to the + beginning of history. */ +int +rl_vi_fetch_history (int count, int c) +{ + int wanted; + + /* Giving an argument of n means we want the nth command in the history + file. The command number is interpreted the same way that the bash + `history' command does it -- that is, giving an argument count of 450 + to this command would get the command listed as number 450 in the + output of `history'. */ + if (rl_explicit_arg) + { + wanted = history_base + where_history () - count; + if (wanted <= 0) + rl_beginning_of_history (0, 0); + else + rl_get_previous_history (wanted, c); + } + else + rl_beginning_of_history (count, 0); + return (0); +} + +/* Search again for the last thing searched for. */ +int +rl_vi_search_again (int count, int key) +{ + switch (key) + { + case 'n': + rl_noninc_reverse_search_again (count, key); + break; + + case 'N': + rl_noninc_forward_search_again (count, key); + break; + } + return (0); +} + +/* Do a vi style search. */ +int +rl_vi_search (int count, int key) +{ + switch (key) + { + case '?': + _rl_free_saved_history_line (); + rl_noninc_forward_search (count, key); + break; + + case '/': + _rl_free_saved_history_line (); + rl_noninc_reverse_search (count, key); + break; + + default: + rl_ding (); + break; + } + return (0); +} + +/* Completion, from vi's point of view. */ +int +rl_vi_complete (int ignore, int key) +{ + 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_vi_advance_point (); + } + + if (key == '*') + rl_complete_internal ('*'); /* Expansion and replacement. */ + else if (key == '=') + rl_complete_internal ('?'); /* List possible completions. */ + else if (key == '\\') + rl_complete_internal (TAB); /* Standard Readline completion. */ + else + rl_complete (0, key); + + if (key == '*' || key == '\\') + rl_vi_start_inserting (key, 1, rl_arg_sign); + + return (0); +} + +/* Tilde expansion for vi mode. */ +int +rl_vi_tilde_expand (int ignore, int key) +{ + rl_tilde_expand (0, key); + rl_vi_start_inserting (key, 1, rl_arg_sign); + return (0); +} + +/* Previous word in vi mode. */ +int +rl_vi_prev_word (int count, int key) +{ + if (count < 0) + return (rl_vi_next_word (-count, key)); + + if (rl_point == 0) + { + rl_ding (); + return (0); + } + + if (_rl_uppercase_p (key)) + rl_vi_bWord (count, key); + else + rl_vi_bword (count, key); + + return (0); +} + +/* Next word in vi mode. */ +int +rl_vi_next_word (int count, int key) +{ + if (count < 0) + return (rl_vi_prev_word (-count, key)); + + if (rl_point >= (rl_end - 1)) + { + rl_ding (); + return (0); + } + + if (_rl_uppercase_p (key)) + rl_vi_fWord (count, key); + else + rl_vi_fword (count, key); + return (0); +} + +static inline int +_rl_vi_advance_point (void) +{ + int point; + + point = rl_point; + if (rl_point < rl_end) +#if defined (HANDLE_MULTIBYTE) + { + if (MB_CUR_MAX == 1 || rl_byte_oriented) + rl_point++; + else + { + point = rl_point; + rl_point = _rl_forward_char_internal (1); + if (point == rl_point || rl_point > rl_end) + rl_point = rl_end; + } + } +#else + rl_point++; +#endif + + return point; +} + +/* Move the cursor back one character. */ +static inline void +_rl_vi_backup (void) +{ + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); + else + rl_point--; +} + +/* Move the point back one character, returning the starting value and not + doing anything at the beginning of the line */ +static inline int +_rl_vi_backup_point (void) +{ + int point; + + point = rl_point; + if (rl_point > 0) +#if defined (HANDLE_MULTIBYTE) + { + if (MB_CUR_MAX == 1 || rl_byte_oriented) + rl_point--; + else + { + point = rl_point; + rl_point = _rl_backward_char_internal (1); + if (rl_point < 0) + rl_point = 0; /* XXX - not really necessary */ + } + } +#else + rl_point--; +#endif + return point; +} + +/* Move to the end of the ?next? word. */ +int +rl_vi_end_word (int count, int key) +{ + if (count < 0) + { + rl_ding (); + return 1; + } + + if (_rl_uppercase_p (key)) + rl_vi_eWord (count, key); + else + rl_vi_eword (count, key); + return (0); +} + +/* Move forward a word the way that 'W' does. */ +int +rl_vi_fWord (int count, int ignore) +{ + while (count-- && rl_point < (rl_end - 1)) + { + /* Skip until whitespace. */ + while (!whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end) + _rl_vi_advance_point (); + + /* Now skip whitespace. */ + while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end) + _rl_vi_advance_point (); + } + return (0); +} + +int +rl_vi_bWord (int count, int ignore) +{ + while (count-- && rl_point > 0) + { + /* If we are at the start of a word, move back to whitespace so + we will go back to the start of the previous word. */ + if (!whitespace (rl_line_buffer[rl_point]) && + whitespace (rl_line_buffer[rl_point - 1])) + rl_point--; + + while (rl_point > 0 && whitespace (rl_line_buffer[rl_point])) + _rl_vi_backup_point (); + + if (rl_point > 0) + { + do + _rl_vi_backup_point (); + while (rl_point > 0 && !whitespace (rl_line_buffer[rl_point])); + if (rl_point > 0) /* hit whitespace */ + rl_point++; + + if (rl_point < 0) + rl_point = 0; + } + } + return (0); +} + +int +rl_vi_eWord (int count, int ignore) +{ + int opoint; + + while (count-- && rl_point < (rl_end - 1)) + { + if (whitespace (rl_line_buffer[rl_point]) == 0) + _rl_vi_advance_point (); + + /* Move to the next non-whitespace character (to the start of the + next word). */ + while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) + _rl_vi_advance_point (); + + if (rl_point && rl_point < rl_end) + { + opoint = rl_point; + + /* Skip whitespace. */ + while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) + opoint = _rl_vi_advance_point (); /* XXX - why? */ + + /* Skip until whitespace. */ + while (rl_point < rl_end && !whitespace (rl_line_buffer[rl_point])) + opoint = _rl_vi_advance_point (); + + /* Move back to the last character of the word. */ + rl_point = opoint; + } + } + return (0); +} + +int +rl_vi_fword (int count, int ignore) +{ + int opoint; + + while (count-- && rl_point < (rl_end - 1)) + { + /* Move to white space (really non-identifer). */ + if (_rl_isident (rl_line_buffer[rl_point])) + { + while (_rl_isident (rl_line_buffer[rl_point]) && rl_point < rl_end) + _rl_vi_advance_point (); + } + else /* if (!whitespace (rl_line_buffer[rl_point])) */ + { + while (!_rl_isident (rl_line_buffer[rl_point]) && + !whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end) + _rl_vi_advance_point (); + } + + opoint = rl_point; + + /* Move past whitespace. */ + while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end) + opoint = _rl_vi_advance_point (); + } + return (0); +} + +int +rl_vi_bword (int count, int ignore) +{ + int opoint; + + while (count-- && rl_point > 0) + { + int prev_is_ident, cur_is_ident; + + /* If we are at the start of a word, move back to whitespace + so we will go back to the start of the previous word. */ + if (!whitespace (rl_line_buffer[rl_point]) && + whitespace (rl_line_buffer[rl_point - 1])) + if (--rl_point == 0) + break; + + /* If this character and the previous character are `opposite', move + back so we don't get messed up by the rl_point++ down there in + the while loop. Without this code, words like `l;' screw up the + function. */ + cur_is_ident = _rl_isident (rl_line_buffer[rl_point]); + opoint = _rl_vi_backup_point (); + prev_is_ident = _rl_isident (rl_line_buffer[rl_point]); + if ((cur_is_ident && !prev_is_ident) || (!cur_is_ident && prev_is_ident)) + ; /* leave point alone, we backed it up one character */ + else + rl_point = opoint; + + while (rl_point > 0 && whitespace (rl_line_buffer[rl_point])) + _rl_vi_backup_point (); + + if (rl_point > 0) + { + opoint = rl_point; + if (_rl_isident (rl_line_buffer[rl_point])) + do + opoint = _rl_vi_backup_point (); + while (rl_point > 0 && _rl_isident (rl_line_buffer[rl_point])); + else + do + opoint = _rl_vi_backup_point (); + while (rl_point > 0 && !_rl_isident (rl_line_buffer[rl_point]) && + !whitespace (rl_line_buffer[rl_point])); + + if (rl_point > 0) + rl_point = opoint; + + if (rl_point < 0) + rl_point = 0; + } + } + return (0); +} + +int +rl_vi_eword (int count, int ignore) +{ + int opoint; + + while (count-- && rl_point < (rl_end - 1)) + { + if (whitespace (rl_line_buffer[rl_point]) == 0) + _rl_vi_advance_point (); + + while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) + _rl_vi_advance_point (); + + opoint = rl_point; + if (rl_point < rl_end) + { + if (_rl_isident (rl_line_buffer[rl_point])) + do + { + opoint = _rl_vi_advance_point (); + } + while (rl_point < rl_end && _rl_isident (rl_line_buffer[rl_point])); + else + do + { + opoint = _rl_vi_advance_point (); + } + while (rl_point < rl_end && !_rl_isident (rl_line_buffer[rl_point]) + && !whitespace (rl_line_buffer[rl_point])); + } + rl_point = opoint; + } + return (0); +} + +int +rl_vi_insert_beg (int count, int key) +{ + rl_beg_of_line (1, key); + rl_vi_insert_mode (1, key); + return (0); +} + +static void +_rl_vi_append_forward (int key) +{ + _rl_vi_advance_point (); +} + +int +rl_vi_append_mode (int count, int key) +{ + _rl_vi_append_forward (key); + rl_vi_start_inserting (key, 1, rl_arg_sign); + return (0); +} + +int +rl_vi_append_eol (int count, int key) +{ + rl_end_of_line (1, key); + rl_vi_append_mode (1, key); + return (0); +} + +/* What to do in the case of C-d. */ +int +rl_vi_eof_maybe (int count, int c) +{ + return (rl_newline (1, '\n')); +} + +/* Insertion mode stuff. */ + +/* Switching from one mode to the other really just involves + switching keymaps. */ +int +rl_vi_insertion_mode (int count, int key) +{ + _rl_keymap = vi_insertion_keymap; + _rl_vi_last_key_before_insert = key; + if (_rl_show_mode_in_prompt) + _rl_reset_prompt (); + return (0); +} + +int +rl_vi_insert_mode (int count, int key) +{ + rl_vi_start_inserting (key, 1, rl_arg_sign); + return (0); +} + +static void +vi_save_insert_buffer (int start, int len) +{ + /* Same code as _rl_vi_save_insert below */ + if (len >= vi_insert_buffer_size) + { + vi_insert_buffer_size += (len + 32) - (len % 32); + vi_insert_buffer = (char *)xrealloc (vi_insert_buffer, vi_insert_buffer_size); + } + strncpy (vi_insert_buffer, rl_line_buffer + start, len - 1); + vi_insert_buffer[len-1] = '\0'; +} + +static void +_rl_vi_save_replace (void) +{ + int len, start, end; + UNDO_LIST *up; + + up = rl_undo_list; + if (up == 0 || up->what != UNDO_END || vi_replace_count <= 0) + { + if (vi_insert_buffer_size >= 1) + vi_insert_buffer[0] = '\0'; + return; + } + /* Let's try it the quick and easy way for now. This should essentially + accommodate every UNDO_INSERT and save the inserted text to + vi_insert_buffer */ + end = rl_point; + start = end - vi_replace_count + 1; + len = vi_replace_count + 1; + + if (start < 0) + { + len = end + 1; + start = 0; + } + + vi_save_insert_buffer (start, len); +} + +static void +_rl_vi_save_insert (UNDO_LIST *up) +{ + int len, start, end; + + if (up == 0 || up->what != UNDO_INSERT) + { + if (vi_insert_buffer_size >= 1) + vi_insert_buffer[0] = '\0'; + return; + } + + start = up->start; + end = up->end; + len = end - start + 1; + + vi_save_insert_buffer (start, len); +} + +void +_rl_vi_done_inserting (void) +{ + if (_rl_vi_doing_insert) + { + /* The `c', `s', `S', and `R' commands set this. */ + rl_end_undo_group (); /* for the group in rl_vi_start_inserting */ + /* Now, the text between rl_undo_list->next->start and + rl_undo_list->next->end is what was inserted while in insert + mode. It gets copied to VI_INSERT_BUFFER because it depends + on absolute indices into the line which may change (though they + probably will not). */ + _rl_vi_doing_insert = 0; + if (_rl_vi_last_key_before_insert == 'R') + _rl_vi_save_replace (); /* Half the battle */ + else + _rl_vi_save_insert (rl_undo_list->next); + /* sanity check, should always be >= 1 here */ + if (_rl_undo_group_level > 0) + rl_end_undo_group (); /* for the group in the command (change or replace) */ + } + else + { + if (rl_undo_list && (_rl_vi_last_key_before_insert == 'i' || + _rl_vi_last_key_before_insert == 'a' || + _rl_vi_last_key_before_insert == 'I' || + _rl_vi_last_key_before_insert == 'A')) + _rl_vi_save_insert (rl_undo_list); + /* XXX - Other keys probably need to be checked. */ + else if (_rl_vi_last_key_before_insert == 'C') + rl_end_undo_group (); + } + + /* Sanity check, make sure all the undo groups are closed before we leave + insert mode */ + while (_rl_undo_group_level > 0) + rl_end_undo_group (); +} + +int +rl_vi_movement_mode (int count, int key) +{ + if (rl_point > 0) + rl_backward_char (1, key); + + _rl_keymap = vi_movement_keymap; + _rl_vi_done_inserting (); + + /* This is how POSIX.2 says `U' should behave -- everything up until the + first time you go into command mode should not be undone. */ + if (RL_ISSTATE (RL_STATE_VICMDONCE) == 0) + rl_free_undo_list (); + + if (_rl_show_mode_in_prompt) + _rl_reset_prompt (); + + RL_SETSTATE (RL_STATE_VICMDONCE); + return (0); +} + +int +rl_vi_arg_digit (int count, int c) +{ + if (c == '0' && rl_numeric_arg == 1 && !rl_explicit_arg) + return (rl_beg_of_line (1, c)); + else + return (rl_digit_argument (count, c)); +} + +/* Change the case of the next COUNT characters. */ +#if defined (HANDLE_MULTIBYTE) +static int +_rl_vi_change_mbchar_case (int count) +{ + wchar_t wc; + char mb[MB_LEN_MAX+1]; + int mlen, p; + size_t m; + mbstate_t ps; + + memset (&ps, 0, sizeof (mbstate_t)); + if (_rl_adjust_point (rl_line_buffer, rl_point, &ps) > 0) + count--; + while (count-- && rl_point < rl_end) + { + m = mbrtowc (&wc, rl_line_buffer + rl_point, rl_end - rl_point, &ps); + if (MB_INVALIDCH (m)) + wc = (wchar_t)rl_line_buffer[rl_point]; + else if (MB_NULLWCH (m)) + wc = L'\0'; + if (iswupper (wc)) + wc = towlower (wc); + else if (iswlower (wc)) + wc = towupper (wc); + else + { + /* Just skip over chars neither upper nor lower case */ + rl_forward_char (1, 0); + continue; + } + + /* Vi is kind of strange here. */ + if (wc) + { + p = rl_point; + mlen = wcrtomb (mb, wc, &ps); + if (mlen >= 0) + mb[mlen] = '\0'; + rl_begin_undo_group (); + rl_vi_delete (1, 0); + if (rl_point < p) /* Did we retreat at EOL? */ + _rl_vi_advance_point (); + rl_insert_text (mb); + rl_end_undo_group (); + rl_vi_check (); + } + else + rl_forward_char (1, 0); + } + + return 0; +} +#endif + +int +rl_vi_change_case (int count, int ignore) +{ + int c, p; + + /* Don't try this on an empty line. */ + if (rl_point >= rl_end) + return (0); + + c = 0; +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + return (_rl_vi_change_mbchar_case (count)); +#endif + + while (count-- && rl_point < rl_end) + { + if (_rl_uppercase_p (rl_line_buffer[rl_point])) + c = _rl_to_lower (rl_line_buffer[rl_point]); + else if (_rl_lowercase_p (rl_line_buffer[rl_point])) + c = _rl_to_upper (rl_line_buffer[rl_point]); + else + { + /* Just skip over characters neither upper nor lower case. */ + rl_forward_char (1, c); + continue; + } + + /* Vi is kind of strange here. */ + if (c) + { + p = rl_point; + rl_begin_undo_group (); + rl_vi_delete (1, c); + if (rl_point < p) /* Did we retreat at EOL? */ + rl_point++; + _rl_insert_char (1, c); + rl_end_undo_group (); + rl_vi_check (); + } + else + rl_forward_char (1, c); + } + return (0); +} + +int +rl_vi_put (int count, int key) +{ + if (!_rl_uppercase_p (key) && (rl_point + 1 <= rl_end)) + rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); + + while (count--) + rl_yank (1, key); + + rl_backward_char (1, key); + return (0); +} + +/* Move the cursor back one character if you're at the end of the line */ +int +rl_vi_check (void) +{ + if (rl_point && rl_point == rl_end) + _rl_vi_backup (); + return (0); +} + +/* Move to the character position specified by COUNT */ +int +rl_vi_column (int count, int key) +{ + if (count > rl_end) + rl_end_of_line (1, key); + else + { + rl_point = 0; + rl_point = _rl_forward_char_internal (count - 1); + } + return (0); +} + +/* Process C as part of the current numeric argument. Return -1 if the + argument should be aborted, 0 if we should not read any more chars, and + 1 if we should continue to read chars. */ +static int +_rl_vi_arg_dispatch (int c) +{ + int key; + + key = c; + if (c >= 0 && _rl_keymap[c].type == ISFUNC && _rl_keymap[c].function == rl_universal_argument) + { + rl_numeric_arg *= 4; + return 1; + } + + c = UNMETA (c); + + if (_rl_digit_p (c)) + { + if (rl_explicit_arg) + rl_numeric_arg = (rl_numeric_arg * 10) + _rl_digit_value (c); + else + rl_numeric_arg = _rl_digit_value (c); + rl_explicit_arg = 1; + return 1; /* keep going */ + } + else + { + rl_clear_message (); + rl_stuff_char (key); + return 0; /* done */ + } +} + +/* A simplified loop for vi. Don't dispatch key at end. + Don't recognize minus sign? + Should this do rl_save_prompt/rl_restore_prompt? */ +static int +rl_digit_loop1 (void) +{ + int c, r; + + while (1) + { + if (_rl_arg_overflow ()) + return 1; + + c = _rl_arg_getchar (); + + r = _rl_vi_arg_dispatch (c); + if (r <= 0) + break; + } + + RL_UNSETSTATE(RL_STATE_NUMERICARG); + return (0); +} + +/* This set of functions is basically to handle the commands that take a + motion argument while in callback mode: read the command, read the motion + command modifier, find the extent of the text to affect, and dispatch the + command for execution. */ +static void +_rl_mvcxt_init (_rl_vimotion_cxt *m, int op, int key) +{ + m->op = op; + m->state = m->flags = 0; + m->ncxt = 0; + m->numeric_arg = -1; + m->start = rl_point; + m->end = rl_end; + m->key = key; + m->motion = -1; +} + +static _rl_vimotion_cxt * +_rl_mvcxt_alloc (int op, int key) +{ + _rl_vimotion_cxt *m; + + m = xmalloc (sizeof (_rl_vimotion_cxt)); + _rl_mvcxt_init (m, op, key); + return m; +} + +static void +_rl_mvcxt_dispose (_rl_vimotion_cxt *m) +{ + xfree (m); +} + +static int +rl_domove_motion_callback (_rl_vimotion_cxt *m) +{ + int c; + + _rl_vi_last_motion = c = m->motion; + + /* Append a blank character temporarily so that the motion routines + work right at the end of the line. Original value of rl_end is saved + as m->end. */ + rl_extend_line_buffer (rl_end + 1); + rl_line_buffer[rl_end++] = ' '; + rl_line_buffer[rl_end] = '\0'; + + _rl_dispatch (c, _rl_keymap); + +#if defined (READLINE_CALLBACKS) + if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + /* Messy case where char search can be vi motion command; see rest of + details in callback.c. vi_char_search and callback_char_search just + set and unset the CHARSEARCH state. This is where any vi motion + command that needs to set its own state should be handled, with any + corresponding code to manage that state in callback.c */ + if (RL_ISSTATE (RL_STATE_CHARSEARCH)) + return 0; + else + return (_rl_vi_domove_motion_cleanup (c, m)); + } +#endif + + return (_rl_vi_domove_motion_cleanup (c, m)); +} + +int +_rl_vi_domove_motion_cleanup (int c, _rl_vimotion_cxt *m) +{ + int r; + + /* Remove the blank that we added in rl_domove_motion_callback. */ + rl_end = m->end; + rl_line_buffer[rl_end] = '\0'; + _rl_fix_point (0); + + /* No change in position means the command failed. */ + if (rl_mark == rl_point) + { + /* 'c' and 'C' enter insert mode after the delete even if the motion + didn't delete anything, as long as the motion command is valid. */ + if (_rl_to_upper (m->key) == 'C' && _rl_vi_motion_command (c)) + return (vidomove_dispatch (m)); + RL_UNSETSTATE (RL_STATE_VIMOTION); + return (-1); + } + + /* rl_vi_f[wW]ord () leaves the cursor on the first character of the next + word. If we are not at the end of the line, and we are on a + non-whitespace character, move back one (presumably to whitespace). */ + if ((_rl_to_upper (c) == 'W') && rl_point < rl_end && rl_point > rl_mark && + !whitespace (rl_line_buffer[rl_point])) + rl_point--; /* XXX */ + + /* If cw or cW, back up to the end of a word, so the behaviour of ce + or cE is the actual result. Brute-force, no subtlety. */ + if (m->key == 'c' && rl_point >= rl_mark && (_rl_to_upper (c) == 'W')) + { + /* Don't move farther back than where we started. */ + while (rl_point > rl_mark && whitespace (rl_line_buffer[rl_point])) + rl_point--; + + /* Posix.2 says that if cw or cW moves the cursor towards the end of + the line, the character under the cursor should be deleted. */ + if (rl_point == rl_mark) + _rl_vi_advance_point (); + else + { + /* Move past the end of the word so that the kill doesn't + remove the last letter of the previous word. Only do this + if we are not at the end of the line. */ + if (rl_point >= 0 && rl_point < (rl_end - 1) && !whitespace (rl_line_buffer[rl_point])) + _rl_vi_advance_point (); + } + } + + if (rl_mark < rl_point) + SWAP (rl_point, rl_mark); + +#if defined (READLINE_CALLBACKS) + if (RL_ISSTATE (RL_STATE_CALLBACK)) + (*rl_redisplay_function)(); /* make sure motion is displayed */ +#endif + + r = vidomove_dispatch (m); + + return (r); +} + +#define RL_VIMOVENUMARG() (RL_ISSTATE (RL_STATE_VIMOTION) && RL_ISSTATE (RL_STATE_NUMERICARG)) + +static int +rl_domove_read_callback (_rl_vimotion_cxt *m) +{ + int c, save; + + c = m->motion; + + if (member (c, vi_motion)) + { +#if defined (READLINE_CALLBACKS) + /* If we just read a vi-mode motion command numeric argument, turn off + the `reading numeric arg' state */ + if (RL_ISSTATE (RL_STATE_CALLBACK) && RL_VIMOVENUMARG()) + RL_UNSETSTATE (RL_STATE_NUMERICARG); +#endif + /* Should do everything, including turning off RL_STATE_VIMOTION */ + return (rl_domove_motion_callback (m)); + } + else if (m->key == c && (m->key == 'd' || m->key == 'y' || m->key == 'c')) + { + rl_mark = rl_end; + rl_beg_of_line (1, c); + _rl_vi_last_motion = c; + RL_UNSETSTATE (RL_STATE_VIMOTION); + return (vidomove_dispatch (m)); + } +#if defined (READLINE_CALLBACKS) + /* XXX - these need to handle rl_universal_argument bindings */ + /* Reading vi motion char continuing numeric argument */ + else if (_rl_digit_p (c) && RL_ISSTATE (RL_STATE_CALLBACK) && RL_VIMOVENUMARG()) + { + return (_rl_vi_arg_dispatch (c)); + } + /* Readine vi motion char starting numeric argument */ + else if (_rl_digit_p (c) && RL_ISSTATE (RL_STATE_CALLBACK) && RL_ISSTATE (RL_STATE_VIMOTION) && (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)) + { + RL_SETSTATE (RL_STATE_NUMERICARG); + return (_rl_vi_arg_dispatch (c)); + } +#endif + else if (_rl_digit_p (c)) + { + /* This code path taken when not in callback mode */ + save = rl_numeric_arg; + rl_numeric_arg = _rl_digit_value (c); + rl_explicit_arg = 1; + RL_SETSTATE (RL_STATE_NUMERICARG); + rl_digit_loop1 (); + rl_numeric_arg *= save; + c = rl_vi_domove_getchar (m); + if (c < 0) + { + m->motion = 0; + return -1; + } + m->motion = c; + return (rl_domove_motion_callback (m)); + } + else + { + RL_UNSETSTATE (RL_STATE_VIMOTION); + RL_UNSETSTATE (RL_STATE_NUMERICARG); + return (1); + } +} + +static int +rl_vi_domove_getchar (_rl_vimotion_cxt *m) +{ + return (_rl_bracketed_read_key ()); +} + +#if defined (READLINE_CALLBACKS) +int +_rl_vi_domove_callback (_rl_vimotion_cxt *m) +{ + int c, r; + + m->motion = c = rl_vi_domove_getchar (m); + if (c < 0) + return 1; /* EOF */ + r = rl_domove_read_callback (m); + + return ((r == 0) ? r : 1); /* normalize return values */ +} +#endif + +/* This code path is taken when not in callback mode. */ +int +rl_vi_domove (int x, int *ignore) +{ + int r; + _rl_vimotion_cxt *m; + + m = _rl_vimvcxt; + *ignore = m->motion = rl_vi_domove_getchar (m); + + if (m->motion < 0) + { + m->motion = 0; + return -1; + } + + return (rl_domove_read_callback (m)); +} + +static int +vi_delete_dispatch (_rl_vimotion_cxt *m) +{ + /* These are the motion commands that do not require adjusting the + mark. */ + if (((strchr (" l|h^0bBFT`", m->motion) == 0) && (rl_point >= m->start)) && + (rl_mark < rl_end)) + INCREMENT_POS (rl_mark); + + rl_kill_text (rl_point, rl_mark); + return (0); +} + +int +rl_vi_delete_to (int count, int key) +{ + int c, r; + + if (_rl_vimvcxt) + _rl_mvcxt_init (_rl_vimvcxt, VIM_DELETE, key); + else + _rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key); + + _rl_vimvcxt->start = rl_point; + + rl_mark = rl_point; + if (_rl_uppercase_p (key)) + { + _rl_vimvcxt->motion = '$'; + r = rl_domove_motion_callback (_rl_vimvcxt); + } + else if (_rl_vi_redoing && _rl_vi_last_motion != 'd') /* `dd' is special */ + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + r = rl_domove_motion_callback (_rl_vimvcxt); + } + else if (_rl_vi_redoing) /* handle redoing `dd' here */ + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + rl_mark = rl_end; + rl_beg_of_line (1, key); + RL_UNSETSTATE (RL_STATE_VIMOTION); + r = vidomove_dispatch (_rl_vimvcxt); + } +#if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + RL_SETSTATE (RL_STATE_VIMOTION); + return (0); + } +#endif + else + r = rl_vi_domove (key, &c); + + if (r < 0) + { + rl_ding (); + r = -1; + } + + _rl_mvcxt_dispose (_rl_vimvcxt); + _rl_vimvcxt = 0; + + return r; +} + +static int +vi_change_dispatch (_rl_vimotion_cxt *m) +{ + /* These are the motion commands that do not require adjusting the + mark. c[wW] are handled by special-case code in rl_vi_domove(), + and already leave the mark at the correct location. */ + if (((strchr (" l|hwW^0bBFT`", m->motion) == 0) && (rl_point >= m->start)) && + (rl_mark < rl_end)) + INCREMENT_POS (rl_mark); + + /* The cursor never moves with c[wW]. */ + if ((_rl_to_upper (m->motion) == 'W') && rl_point < m->start) + rl_point = m->start; + + if (_rl_vi_redoing) + { + if (vi_insert_buffer && *vi_insert_buffer) + rl_begin_undo_group (); + rl_delete_text (rl_point, rl_mark); + if (vi_insert_buffer && *vi_insert_buffer) + { + rl_insert_text (vi_insert_buffer); + rl_end_undo_group (); + } + } + else + { + rl_begin_undo_group (); /* to make the `u' command work */ + rl_kill_text (rl_point, rl_mark); + /* `C' does not save the text inserted for undoing or redoing. */ + if (_rl_uppercase_p (m->key) == 0) + _rl_vi_doing_insert = 1; + /* XXX -- TODO -- use m->numericarg? */ + rl_vi_start_inserting (m->key, rl_numeric_arg, rl_arg_sign); + } + + return (0); +} + +int +rl_vi_change_to (int count, int key) +{ + int c, r; + + if (_rl_vimvcxt) + _rl_mvcxt_init (_rl_vimvcxt, VIM_CHANGE, key); + else + _rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key); + _rl_vimvcxt->start = rl_point; + + rl_mark = rl_point; + if (_rl_uppercase_p (key)) + { + _rl_vimvcxt->motion = '$'; + r = rl_domove_motion_callback (_rl_vimvcxt); + } + else if (_rl_vi_redoing && _rl_vi_last_motion != 'c') /* `cc' is special */ + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + r = rl_domove_motion_callback (_rl_vimvcxt); + } + else if (_rl_vi_redoing) /* handle redoing `cc' here */ + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + rl_mark = rl_end; + rl_beg_of_line (1, key); + RL_UNSETSTATE (RL_STATE_VIMOTION); + r = vidomove_dispatch (_rl_vimvcxt); + } +#if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + RL_SETSTATE (RL_STATE_VIMOTION); + return (0); + } +#endif + else + r = rl_vi_domove (key, &c); + + if (r < 0) + { + rl_ding (); + r = -1; /* normalize return value */ + } + + _rl_mvcxt_dispose (_rl_vimvcxt); + _rl_vimvcxt = 0; + + return r; +} + +static int +vi_yank_dispatch (_rl_vimotion_cxt *m) +{ + /* These are the motion commands that do not require adjusting the + mark. */ + if (((strchr (" l|h^0%bBFT`", m->motion) == 0) && (rl_point >= m->start)) && + (rl_mark < rl_end)) + INCREMENT_POS (rl_mark); + + rl_begin_undo_group (); + rl_kill_text (rl_point, rl_mark); + rl_end_undo_group (); + rl_do_undo (); + rl_point = m->start; + + _rl_fix_point (1); + + return (0); +} + +int +rl_vi_yank_to (int count, int key) +{ + int c, r; + + if (_rl_vimvcxt) + _rl_mvcxt_init (_rl_vimvcxt, VIM_YANK, key); + else + _rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key); + _rl_vimvcxt->start = rl_point; + + rl_mark = rl_point; + if (_rl_uppercase_p (key)) + { + _rl_vimvcxt->motion = '$'; + r = rl_domove_motion_callback (_rl_vimvcxt); + } + else if (_rl_vi_redoing && _rl_vi_last_motion != 'y') /* `yy' is special */ + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + r = rl_domove_motion_callback (_rl_vimvcxt); + } + else if (_rl_vi_redoing) /* handle redoing `yy' here */ + { + _rl_vimvcxt->motion = _rl_vi_last_motion; + rl_mark = rl_end; + rl_beg_of_line (1, key); + RL_UNSETSTATE (RL_STATE_VIMOTION); + r = vidomove_dispatch (_rl_vimvcxt); + } +#if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + RL_SETSTATE (RL_STATE_VIMOTION); + return (0); + } +#endif + else + r = rl_vi_domove (key, &c); + + if (r < 0) + { + rl_ding (); + r = -1; + } + + _rl_mvcxt_dispose (_rl_vimvcxt); + _rl_vimvcxt = 0; + + return r; +} + +static int +vidomove_dispatch (_rl_vimotion_cxt *m) +{ + int r; + + switch (m->op) + { + case VIM_DELETE: + r = vi_delete_dispatch (m); + break; + case VIM_CHANGE: + r = vi_change_dispatch (m); + break; + case VIM_YANK: + r = vi_yank_dispatch (m); + break; + default: + _rl_errmsg ("vidomove_dispatch: unknown operator %d", m->op); + r = 1; + break; + } + + RL_UNSETSTATE (RL_STATE_VIMOTION); + return r; +} + +int +rl_vi_rubout (int count, int key) +{ + int opoint; + + if (count < 0) + return (rl_vi_delete (-count, key)); + + if (rl_point == 0) + { + rl_ding (); + return 1; + } + + opoint = rl_point; + if (count > 1 && MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_backward_char (count, key); + else if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); + else + rl_point -= count; + + if (rl_point < 0) + rl_point = 0; + + rl_kill_text (rl_point, opoint); + + return (0); +} + +int +rl_vi_delete (int count, int key) +{ + int end; + + if (count < 0) + return (rl_vi_rubout (-count, key)); + + if (rl_end == 0) + { + rl_ding (); + return 1; + } + + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + end = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO); + else + end = rl_point + count; + + if (end >= rl_end) + end = rl_end; + + rl_kill_text (rl_point, end); + + if (rl_point > 0 && rl_point == rl_end) + rl_backward_char (1, key); + + return (0); +} + +/* This does what Posix specifies vi-mode C-w to do: using whitespace and + punctuation characters as the word boundaries. */ + +#define vi_unix_word_boundary(c) (whitespace(c) || ispunct(c)) + +int +rl_vi_unix_word_rubout (int count, int key) +{ + int orig_point; + + if (rl_point == 0) + rl_ding (); + else + { + orig_point = rl_point; + if (count <= 0) + count = 1; + + while (count--) + { + /* This isn't quite what ksh93 does but it seems to match what the + Posix description of sh specifies, with a few accommodations + for sequences of whitespace characters between words and at + the end of the line. */ + + /* Skip over whitespace at the end of the line as a special case */ + if (rl_point > 0 && (rl_line_buffer[rl_point] == 0) && + whitespace (rl_line_buffer[rl_point - 1])) + while (--rl_point > 0 && whitespace (rl_line_buffer[rl_point])) + ; + + /* If we're at the start of a word, move back to word boundary so we + move back to the `preceding' word */ + if (rl_point > 0 && (vi_unix_word_boundary (rl_line_buffer[rl_point]) == 0) && + vi_unix_word_boundary (rl_line_buffer[rl_point - 1])) + rl_point--; + + /* If we are at a word boundary (whitespace/punct), move backward + past a sequence of word boundary characters. If we are at the + end of a word (non-word boundary), move back to a word boundary */ + if (rl_point > 0 && vi_unix_word_boundary (rl_line_buffer[rl_point])) + while (rl_point && vi_unix_word_boundary (rl_line_buffer[rl_point - 1])) + rl_point--; + else if (rl_point > 0 && vi_unix_word_boundary (rl_line_buffer[rl_point]) == 0) + while (rl_point > 0 && (vi_unix_word_boundary (rl_line_buffer[rl_point - 1]) == 0)) + _rl_vi_backup_point (); + } + + rl_kill_text (orig_point, rl_point); + } + + return 0; +} + + +int +rl_vi_back_to_indent (int count, int key) +{ + rl_beg_of_line (1, key); + while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) + rl_point++; + return (0); +} + +int +rl_vi_first_print (int count, int key) +{ + return (rl_vi_back_to_indent (1, key)); +} + +static int _rl_cs_dir, _rl_cs_orig_dir; + +#if defined (READLINE_CALLBACKS) +static int +_rl_vi_callback_char_search (_rl_callback_generic_arg *data) +{ + int c; +#if defined (HANDLE_MULTIBYTE) + c = _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); +#else + RL_SETSTATE(RL_STATE_MOREINPUT); + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); +#endif + + if (c <= 0) + { + RL_UNSETSTATE (RL_STATE_CHARSEARCH); + return -1; + } + +#if !defined (HANDLE_MULTIBYTE) + _rl_vi_last_search_char = c; +#endif + + _rl_callback_func = 0; + _rl_want_redisplay = 1; + RL_UNSETSTATE (RL_STATE_CHARSEARCH); + +#if defined (HANDLE_MULTIBYTE) + return (_rl_char_search_internal (data->count, _rl_cs_dir, _rl_vi_last_search_mbchar, _rl_vi_last_search_mblen)); +#else + return (_rl_char_search_internal (data->count, _rl_cs_dir, _rl_vi_last_search_char)); +#endif +} +#endif + +int +rl_vi_char_search (int count, int key) +{ + int c; +#if defined (HANDLE_MULTIBYTE) + static char *target; + static int tlen; +#else + static char target; +#endif + + if (key == ';' || key == ',') + { + if (_rl_cs_orig_dir == 0) + return 1; +#if defined (HANDLE_MULTIBYTE) + if (_rl_vi_last_search_mblen == 0) + return 1; +#else + if (_rl_vi_last_search_char == 0) + return 1; +#endif + _rl_cs_dir = (key == ';') ? _rl_cs_orig_dir : -_rl_cs_orig_dir; + } + else + { + switch (key) + { + case 't': + _rl_cs_orig_dir = _rl_cs_dir = FTO; + break; + + case 'T': + _rl_cs_orig_dir = _rl_cs_dir = BTO; + break; + + case 'f': + _rl_cs_orig_dir = _rl_cs_dir = FFIND; + break; + + case 'F': + _rl_cs_orig_dir = _rl_cs_dir = BFIND; + break; + } + + if (_rl_vi_redoing) + { + /* set target and tlen below */ + } +#if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + _rl_callback_data = _rl_callback_data_alloc (count); + _rl_callback_data->i1 = _rl_cs_dir; + _rl_callback_data->i2 = key; + _rl_callback_func = _rl_vi_callback_char_search; + RL_SETSTATE (RL_STATE_CHARSEARCH); + return (0); + } +#endif + else + { +#if defined (HANDLE_MULTIBYTE) + c = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX); + if (c <= 0) + return -1; + _rl_vi_last_search_mblen = c; +#else + RL_SETSTATE(RL_STATE_MOREINPUT); + c = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + if (c < 0) + return -1; + _rl_vi_last_search_char = c; +#endif + } + } + +#if defined (HANDLE_MULTIBYTE) + target = _rl_vi_last_search_mbchar; + tlen = _rl_vi_last_search_mblen; +#else + target = _rl_vi_last_search_char; +#endif + +#if defined (HANDLE_MULTIBYTE) + return (_rl_char_search_internal (count, _rl_cs_dir, target, tlen)); +#else + return (_rl_char_search_internal (count, _rl_cs_dir, target)); +#endif +} + +/* Match brackets */ +int +rl_vi_match (int ignore, int key) +{ + int count = 1, brack, pos, tmp, pre; + + pos = rl_point; + if ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0) + { + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + while ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0) + { + pre = rl_point; + rl_forward_char (1, key); + if (pre == rl_point) + break; + } + } + else + while ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0 && + rl_point < rl_end - 1) + rl_forward_char (1, key); + + if (brack <= 0) + { + rl_point = pos; + rl_ding (); + return 1; + } + } + + pos = rl_point; + + if (brack < 0) + { + while (count) + { + tmp = pos; + if (MB_CUR_MAX == 1 || rl_byte_oriented) + pos--; + else + { + pos = _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY); + if (tmp == pos) + pos--; + } + if (pos >= 0) + { + int b = rl_vi_bracktype (rl_line_buffer[pos]); + if (b == -brack) + count--; + else if (b == brack) + count++; + } + else + { + rl_ding (); + return 1; + } + } + } + else + { /* brack > 0 */ + while (count) + { + if (MB_CUR_MAX == 1 || rl_byte_oriented) + pos++; + else + pos = _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY); + + if (pos < rl_end) + { + int b = rl_vi_bracktype (rl_line_buffer[pos]); + if (b == -brack) + count--; + else if (b == brack) + count++; + } + else + { + rl_ding (); + return 1; + } + } + } + rl_point = pos; + return (0); +} + +int +rl_vi_bracktype (int c) +{ + switch (c) + { + case '(': return 1; + case ')': return -1; + case '[': return 2; + case ']': return -2; + case '{': return 3; + case '}': return -3; + default: return 0; + } +} + +static int +_rl_vi_change_char (int count, int c, char *mb) +{ + int p; + + if (c == '\033' || c == CTRL ('C')) + return -1; + + rl_begin_undo_group (); + while (count-- && rl_point < rl_end) + { + p = rl_point; + rl_vi_delete (1, c); + if (rl_point < p) /* Did we retreat at EOL? */ + _rl_vi_append_forward (c); +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + rl_insert_text (mb); + else +#endif + _rl_insert_char (1, c); + } + + /* The cursor shall be left on the last character changed. */ + rl_backward_char (1, c); + + rl_end_undo_group (); + + return (0); +} + +static int +_rl_vi_callback_getchar (char *mb, int mlen) +{ + return (_rl_bracketed_read_mbstring (mb, mlen)); +} + +#if defined (READLINE_CALLBACKS) +static int +_rl_vi_callback_change_char (_rl_callback_generic_arg *data) +{ + int c; + char mb[MB_LEN_MAX+1]; + + c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX); + else +#endif + _rl_vi_last_replacement[0] = c; + _rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* XXX */ + + if (c < 0) + return -1; + + _rl_callback_func = 0; + _rl_want_redisplay = 1; + + return (_rl_vi_change_char (data->count, c, mb)); +} +#endif + +int +rl_vi_change_char (int count, int key) +{ + int c; + char mb[MB_LEN_MAX+1]; + + if (_rl_vi_redoing) + { + strncpy (mb, _rl_vi_last_replacement, MB_LEN_MAX); + c = (unsigned char)_rl_vi_last_replacement[0]; /* XXX */ + mb[MB_LEN_MAX] = '\0'; + } +#if defined (READLINE_CALLBACKS) + else if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + _rl_callback_data = _rl_callback_data_alloc (count); + _rl_callback_func = _rl_vi_callback_change_char; + return (0); + } +#endif + else + { + c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); +#ifdef HANDLE_MULTIBYTE + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX); + else +#endif + _rl_vi_last_replacement[0] = c; + _rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* just in case */ + } + + if (c < 0) + return -1; + + return (_rl_vi_change_char (count, c, mb)); +} + +int +rl_vi_subst (int count, int key) +{ + /* If we are redoing, rl_vi_change_to will stuff the last motion char */ + if (_rl_vi_redoing == 0) + rl_stuff_char ((key == 'S') ? 'c' : 'l'); /* `S' == `cc', `s' == `cl' */ + + return (rl_vi_change_to (count, 'c')); +} + +int +rl_vi_overstrike (int count, int key) +{ + if (_rl_vi_doing_insert == 0) + { + _rl_vi_doing_insert = 1; + rl_begin_undo_group (); + } + + if (count > 0) + { + _rl_overwrite_char (count, key); + vi_replace_count += count; + } + + return (0); +} + +int +rl_vi_overstrike_delete (int count, int key) +{ + int i, s; + + for (i = 0; i < count; i++) + { + if (vi_replace_count == 0) + { + rl_ding (); + break; + } + s = rl_point; + + if (rl_do_undo ()) + vi_replace_count--; /* XXX */ + + if (rl_point == s) + rl_backward_char (1, key); + } + + if (vi_replace_count == 0 && _rl_vi_doing_insert) + { + rl_end_undo_group (); + rl_do_undo (); + _rl_vi_doing_insert = 0; + } + return (0); +} + +static int +rl_vi_overstrike_kill_line (int count, int key) +{ + int r, end; + + end = rl_end; + r = rl_unix_line_discard (count, key); + vi_replace_count -= end - rl_end; + return r; +} + +static int +rl_vi_overstrike_kill_word (int count, int key) +{ + int r, end; + + end = rl_end; + r = rl_vi_unix_word_rubout (count, key); + vi_replace_count -= end - rl_end; + return r; +} + +static int +rl_vi_overstrike_yank (int count, int key) +{ + int r, end; + + end = rl_end; + r = rl_yank (count, key); + vi_replace_count += rl_end - end; + return r; +} + +/* Read bracketed paste mode pasted text and insert it in overwrite mode */ +static int +rl_vi_overstrike_bracketed_paste (int count, int key) +{ + int r; + char *pbuf; + size_t pblen; + + pbuf = _rl_bracketed_text (&pblen); + if (pblen == 0) + { + xfree (pbuf); + return 0; + } + r = pblen; + while (--r >= 0) + _rl_unget_char ((unsigned char)pbuf[r]); + xfree (pbuf); + + while (_rl_pushed_input_available ()) + { + key = rl_read_key (); + r = rl_vi_overstrike (1, key); + } + + return r; +} + +int +rl_vi_replace (int count, int key) +{ + int i; + + vi_replace_count = 0; + + if (vi_replace_map == 0) + { + vi_replace_map = rl_make_bare_keymap (); + + for (i = 0; i < ' '; i++) + if (vi_insertion_keymap[i].type == ISFUNC) + vi_replace_map[i].function = vi_insertion_keymap[i].function; + + for (i = ' '; i < KEYMAP_SIZE; i++) + vi_replace_map[i].function = rl_vi_overstrike; + + vi_replace_map[RUBOUT].function = rl_vi_overstrike_delete; + + /* Make sure these are what we want. */ + vi_replace_map[ESC].function = rl_vi_movement_mode; + vi_replace_map[RETURN].function = rl_newline; + vi_replace_map[NEWLINE].function = rl_newline; + + /* If the normal vi insertion keymap has ^H bound to erase, do the + same here. Probably should remove the assignment to RUBOUT up + there, but I don't think it will make a difference in real life. */ + if (vi_insertion_keymap[CTRL ('H')].type == ISFUNC && + vi_insertion_keymap[CTRL ('H')].function == rl_rubout) + vi_replace_map[CTRL ('H')].function = rl_vi_overstrike_delete; + + /* Same for ^U and unix-line-discard. */ + if (vi_insertion_keymap[CTRL ('U')].type == ISFUNC && + vi_insertion_keymap[CTRL ('U')].function == rl_unix_line_discard) + vi_replace_map[CTRL ('U')].function = rl_vi_overstrike_kill_line; + + /* And for ^W and unix-word-rubout. */ + if (vi_insertion_keymap[CTRL ('W')].type == ISFUNC && + vi_insertion_keymap[CTRL ('W')].function == rl_vi_unix_word_rubout) + vi_replace_map[CTRL ('W')].function = rl_vi_overstrike_kill_word; + + /* And finally for ^Y and yank. */ + if (vi_insertion_keymap[CTRL ('Y')].type == ISFUNC && + vi_insertion_keymap[CTRL ('Y')].function == rl_yank) + vi_replace_map[CTRL ('Y')].function = rl_vi_overstrike_yank; + + /* Make sure this is the value we need. */ + vi_replace_map[ANYOTHERKEY].type = ISFUNC; + vi_replace_map[ANYOTHERKEY].function = (rl_command_func_t *)NULL; + } + + rl_vi_start_inserting (key, 1, rl_arg_sign); + + _rl_vi_last_key_before_insert = 'R'; /* in case someone rebinds it */ + _rl_keymap = vi_replace_map; + + if (_rl_enable_bracketed_paste) + rl_bind_keyseq_if_unbound (BRACK_PASTE_PREF, rl_vi_overstrike_bracketed_paste); + + return (0); +} + +#if 0 +/* Try to complete the word we are standing on or the word that ends with + the previous character. A space matches everything. Word delimiters are + space and ;. */ +int +rl_vi_possible_completions (void) +{ + int save_pos = rl_point; + + if (rl_line_buffer[rl_point] != ' ' && rl_line_buffer[rl_point] != ';') + { + while (rl_point < rl_end && rl_line_buffer[rl_point] != ' ' && + rl_line_buffer[rl_point] != ';') + _rl_vi_advance_point (); + } + else if (rl_line_buffer[rl_point - 1] == ';') + { + rl_ding (); + return (0); + } + + rl_possible_completions (); + rl_point = save_pos; + + return (0); +} +#endif + +/* Functions to save and restore marks. */ +static int +_rl_vi_set_mark (void) +{ + int ch; + + RL_SETSTATE(RL_STATE_MOREINPUT); + ch = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + + if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ + { + rl_ding (); + return 1; + } + ch -= 'a'; + vi_mark_chars[ch] = rl_point; + return 0; +} + +#if defined (READLINE_CALLBACKS) +static int +_rl_vi_callback_set_mark (_rl_callback_generic_arg *data) +{ + _rl_callback_func = 0; + _rl_want_redisplay = 1; + + return (_rl_vi_set_mark ()); +} +#endif + +int +rl_vi_set_mark (int count, int key) +{ +#if defined (READLINE_CALLBACKS) + if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + _rl_callback_data = 0; + _rl_callback_func = _rl_vi_callback_set_mark; + return (0); + } +#endif + + return (_rl_vi_set_mark ()); +} + +static int +_rl_vi_goto_mark (void) +{ + int ch; + + RL_SETSTATE(RL_STATE_MOREINPUT); + ch = rl_read_key (); + RL_UNSETSTATE(RL_STATE_MOREINPUT); + + if (ch == '`') + { + rl_point = rl_mark; + _rl_fix_point (1); + return 0; + } + else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ + { + rl_ding (); + return 1; + } + + ch -= 'a'; + if (vi_mark_chars[ch] == -1) + { + rl_ding (); + return 1; + } + rl_point = vi_mark_chars[ch]; + _rl_fix_point (1); + return 0; +} + +#if defined (READLINE_CALLBACKS) +static int +_rl_vi_callback_goto_mark (_rl_callback_generic_arg *data) +{ + _rl_callback_func = 0; + _rl_want_redisplay = 1; + + return (_rl_vi_goto_mark ()); +} +#endif + +int +rl_vi_goto_mark (int count, int key) +{ +#if defined (READLINE_CALLBACKS) + if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + _rl_callback_data = 0; + _rl_callback_func = _rl_vi_callback_goto_mark; + return (0); + } +#endif + + return (_rl_vi_goto_mark ()); +} +#endif /* VI_MODE */ diff --git a/bash-5.1/lib/readline/xfree.c b/bash-5.1/lib/readline/xfree.c new file mode 100644 index 0000000..c199b29 --- /dev/null +++ b/bash-5.1/lib/readline/xfree.c @@ -0,0 +1,49 @@ +/* xfree.c -- safe version of free that ignores attempts to free NUL */ + +/* Copyright (C) 1991-2010,2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +#include +#endif + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include "xmalloc.h" + +/* **************************************************************** */ +/* */ +/* Memory Deallocation. */ +/* */ +/* **************************************************************** */ + +/* Use this as the function to call when adding unwind protects so we + don't need to know what free() returns. */ +void +xfree (PTR_T string) +{ + if (string) + free (string); +} diff --git a/bash-5.1/lib/readline/xmalloc.c b/bash-5.1/lib/readline/xmalloc.c new file mode 100644 index 0000000..5d01d75 --- /dev/null +++ b/bash-5.1/lib/readline/xmalloc.c @@ -0,0 +1,75 @@ +/* xmalloc.c -- safe versions of malloc and realloc */ + +/* Copyright (C) 1991-2017 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#define READLINE_LIBRARY + +#if defined (HAVE_CONFIG_H) +#include +#endif + +#include + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include "xmalloc.h" + +/* **************************************************************** */ +/* */ +/* Memory Allocation and Deallocation. */ +/* */ +/* **************************************************************** */ + +static void +memory_error_and_abort (char *fname) +{ + fprintf (stderr, "%s: out of virtual memory\n", fname); + exit (2); +} + +/* 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 (size_t bytes) +{ + PTR_T temp; + + temp = malloc (bytes); + if (temp == 0) + memory_error_and_abort ("xmalloc"); + return (temp); +} + +PTR_T +xrealloc (PTR_T pointer, size_t bytes) +{ + PTR_T temp; + + temp = pointer ? realloc (pointer, bytes) : malloc (bytes); + + if (temp == 0) + memory_error_and_abort ("xrealloc"); + return (temp); +} diff --git a/bash-5.1/lib/readline/xmalloc.h b/bash-5.1/lib/readline/xmalloc.h new file mode 100644 index 0000000..f40d7a5 --- /dev/null +++ b/bash-5.1/lib/readline/xmalloc.h @@ -0,0 +1,45 @@ +/* xmalloc.h -- memory allocation that aborts on errors. */ + +/* Copyright (C) 1999-2009 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if !defined (_XMALLOC_H_) +#define _XMALLOC_H_ + +#if defined (READLINE_LIBRARY) +# include "rlstdc.h" +#else +# include +#endif + +#ifndef PTR_T + +#ifdef __STDC__ +# define PTR_T void * +#else +# define PTR_T char * +#endif + +#endif /* !PTR_T */ + +extern PTR_T xmalloc PARAMS((size_t)); +extern PTR_T xrealloc PARAMS((void *, size_t)); +extern void xfree PARAMS((void *)); + +#endif /* _XMALLOC_H_ */ diff --git a/bash-5.1/lib/sh/Makefile.in b/bash-5.1/lib/sh/Makefile.in new file mode 100644 index 0000000..98064de --- /dev/null +++ b/bash-5.1/lib/sh/Makefile.in @@ -0,0 +1,639 @@ +# +# Makefile for the Bash library +# +# +# Copyright (C) 1998-2020 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_VERSION = @PACKAGE_VERSION@ + +srcdir = @srcdir@ +VPATH = @srcdir@ +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ + +LIBBUILD = ${BUILD_DIR}/lib + +BASHINCDIR = ${topdir}/include + +INTL_LIBSRC = ${topdir}/lib/intl +INTL_BUILDDIR = ${LIBBUILD}/intl +INTL_INC = @INTL_INC@ +LIBINTL_H = @LIBINTL_H@ + +datarootdir = @datarootdir@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ + +CC = @CC@ +RANLIB = @RANLIB@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +RM = rm -f +CP = cp +MV = mv + +SHELL = @MAKE_SHELL@ + +CFLAGS = @CFLAGS@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@ + +PROFILE_FLAGS = @PROFILE_FLAGS@ + +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +INCLUDES = -I. -I../.. -I$(topdir) -I$(topdir)/lib -I$(BASHINCDIR) -I$(srcdir) $(INTL_INC) + +CCFLAGS = ${ADDON_CFLAGS} ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) \ + $(LOCAL_CFLAGS) $(CFLAGS) $(CPPFLAGS) + +GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ + -Wcast-align -Wstrict-prototypes -Wconversion \ + -Wmissing-prototypes -Wtraditional -Wredundant-decls -pedantic + +.c.o: + $(CC) -c $(CCFLAGS) $< + +# The name of the library target. +LIBRARY_NAME = libsh.a + +# The C code source files for this library. +CSOURCES = clktck.c clock.c getcwd.c getenv.c oslib.c setlinebuf.c \ + strcasecmp.c strerror.c strtod.c strtol.c strtoul.c \ + vprint.c itos.c rename.c zread.c zwrite.c shtty.c \ + inet_aton.c netconn.c netopen.c strpbrk.c timeval.c makepath.c \ + pathcanon.c pathphys.c tmpfile.c stringlist.c stringvec.c spell.c \ + shquote.c strtrans.c strcasestr.c snprintf.c mailstat.c \ + fmtulong.c fmtullong.c fmtumax.c shmatch.c strnlen.c \ + strtoll.c strtoull.c strtoimax.c strtoumax.c memset.c strstr.c \ + mktime.c strftime.c mbschr.c zcatfd.c zmapfd.c winsize.c eaccess.c \ + wcsdup.c fpurge.c zgetline.c mbscmp.c uconvert.c ufuncs.c \ + casemod.c dprintf.c input_avail.c mbscasecmp.c fnxform.c \ + strchrnul.c unicode.c wcswidth.c wcsnwidth.c shmbchar.c strdup.c \ + utf8.c random.c gettimeofday.c + +# The header files for this library. +HSOURCES = + +# The object files contained in $(LIBRARY_NAME) +LIBOBJS = @LIBOBJS@ +OBJECTS = clktck.o clock.o getenv.o oslib.o setlinebuf.o strnlen.o \ + itos.o zread.o zwrite.o shtty.o shmatch.o eaccess.o \ + netconn.o netopen.o timeval.o makepath.o pathcanon.o \ + pathphys.o tmpfile.o stringlist.o stringvec.o spell.o shquote.o \ + strtrans.o snprintf.o mailstat.o fmtulong.o \ + fmtullong.o fmtumax.o zcatfd.o zmapfd.o winsize.o wcsdup.o \ + fpurge.o zgetline.o mbscmp.o uconvert.o ufuncs.o casemod.o \ + input_avail.o mbscasecmp.o fnxform.o unicode.o shmbchar.o \ + utf8.o random.o gettimeofday.o wcsnwidth.o ${LIBOBJS} + +SUPPORT = Makefile + +all: $(LIBRARY_NAME) + +$(LIBRARY_NAME): $(OBJECTS) + $(RM) $@ + $(AR) $(ARFLAGS) $@ $(OBJECTS) + -test -n "$(RANLIB)" && $(RANLIB) $@ + +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: + +clean: + $(RM) $(OBJECTS) $(LIBRARY_NAME) + +realclean distclean maintainer-clean: clean + $(RM) Makefile + +mostlyclean: clean + +# Dependencies + +${BUILD_DIR}/version.h: ${BUILD_DIR}/config.h ${BUILD_DIR}/Makefile Makefile + -( cd ${BUILD_DIR} && ${MAKE} ${MFLAGS} version.h ) + +${BUILD_DIR}/pathnames.h: ${BUILD_DIR}/config.h ${BUILD_DIR}/Makefile Makefile + -( cd ${BUILD_DIR} && ${MAKE} ${MFLAGS} pathnames.h ) + +# rules for losing makes, like SunOS +casemod.o: casemod.c +clktck.o: clktck.c +clock.o: clock.c +eaccess.o: eaccess.c +dprintf.o: dprintf.c +fmtullong.o: fmtullong.c +fmtulong.o: fmtulong.c +fmtumax.o: fmtumax.c +fnxform.o: fnxform.c +fpurge.o: fpurge.c +getcwd.o: getcwd.c +getenv.o: getenv.c +gettimeofday.o: gettimeofday.c +inet_aton.o: inet_aton.c +input_avail.o: input_avail.c +itos.o: itos.c +mailstat.o: mailstat.c +makepath.o: makepath.c +mbscasecmp.o: mbscasecmp.c +mbschr.o: mbschr.c +mbscmp.o: mbscmp.c +memset.o: memset.c +mktime.o: mktime.c +netconn.o: netconn.c +netopen.o: netopen.c +oslib.o: oslib.c +pathcanon.o: pathcanon.c +pathphys.o: pathphys.c +random.o: random.c +rename.o: rename.c +setlinebuf.o: setlinebuf.c +shmatch.o: shmatch.c +shmbchar.o: shmbchar.c +shquote.o: shquote.c +shtty.o: shtty.c +snprintf.o: snprintf.c +spell.o: spell.c +strcasecmp.o: strcasecmp.c +strchrnul.o: strchrnul.c +strerror.o: strerror.c +strftime.o: strftime.c +strcasestr.o: strcasestr.c +stringlist.o: stringlist.c +stringvec.o: stringvec.c +strnlen.o: strnlen.c +strpbrk.o: strpbrk.c +strtod.o: strtod.c +strtoimax.o: strtoimax.c +strtol.o: strtol.c +strtoll.o: strtoll.c +strtoul.o: strtoul.c +strtoull.o: strtoull.c +strtoumax.o: strtoumax.c +strtrans.o: strtrans.c +times.o: times.c +timeval.o: timeval.c +tmpfile.o: tmpfile.c +uconvert.o: uconvert.c +ufuncs.o: ufuncs.c +unicode.o: unicode.c +utf8.o: utf8.c +vprint.o: vprint.c +wcsdup.o: wcsdup.c +wcsnwidth.o: wcsnwidth.c +wcswidth.o: wcswidth.c +winsize.o: winsize.c +zcatfd.o: zcatfd.c +zmapfd.o: zmapfd.c +zgetline.o: zgetline.c +zread.o: zread.c +zwrite.o: zwrite.c + +# dependencies for c files that include other c files +fmtullong.o: fmtulong.c +fmtumax.o: fmtulong.c +strtoll.o: strtol.c +strtoul.o: strtol.c +strtoull.o: strtol.c + +# all files in the library depend on config.h +casemod.o: ${BUILD_DIR}/config.h +clktck.o: ${BUILD_DIR}/config.h +clock.o: ${BUILD_DIR}/config.h +eaccess.o: ${BUILD_DIR}/config.h +dprintf.o: ${BUILD_DIR}/config.h +fmtullong.o: ${BUILD_DIR}/config.h +fmtulong.o: ${BUILD_DIR}/config.h +fmtumax.o: ${BUILD_DIR}/config.h +fnxform.o: ${BUILD_DIR}/config.h +fpurge.o: ${BUILD_DIR}/config.h +getcwd.o: ${BUILD_DIR}/config.h +getenv.o: ${BUILD_DIR}/config.h +gettimeofday.o: ${BUILD_DIR}/config.h +inet_aton.o: ${BUILD_DIR}/config.h +input_avail.o: ${BUILD_DIR}/config.h +itos.o: ${BUILD_DIR}/config.h +mailstat.o: ${BUILD_DIR}/config.h +makepath.o: ${BUILD_DIR}/config.h +mbscasecmp.o: ${BUILD_DIR}/config.h +mbschr.o: ${BUILD_DIR}/config.h +mbscmp.o: ${BUILD_DIR}/config.h +memset.o: ${BUILD_DIR}/config.h +mktime.o: ${BUILD_DIR}/config.h +netconn.o: ${BUILD_DIR}/config.h +netopen.o: ${BUILD_DIR}/config.h +oslib.o: ${BUILD_DIR}/config.h +pathcanon.o: ${BUILD_DIR}/config.h +pathphys.o: ${BUILD_DIR}/config.h +random.o: ${BUILD_DIR}/config.h +rename.o: ${BUILD_DIR}/config.h +setlinebuf.o: ${BUILD_DIR}/config.h +shmatch.o: ${BUILD_DIR}/config.h +shmbchar.o: ${BUILD_DIR}/config.h +shquote.o: ${BUILD_DIR}/config.h +shtty.o: ${BUILD_DIR}/config.h +snprintf.o: ${BUILD_DIR}/config.h +spell.o: ${BUILD_DIR}/config.h +strcasecmp.o: ${BUILD_DIR}/config.h +strchrnul.o: ${BUILD_DIR}/config.h +strerror.o: ${BUILD_DIR}/config.h +strftime.o: ${BUILD_DIR}/config.h +strcasestr.o: ${BUILD_DIR}/config.h +stringlist.o: ${BUILD_DIR}/config.h +stringvec.o: ${BUILD_DIR}/config.h +strnlen.o: ${BUILD_DIR}/config.h +strpbrk.o: ${BUILD_DIR}/config.h +strtod.o: ${BUILD_DIR}/config.h +strtoimax.o: ${BUILD_DIR}/config.h +strtol.o: ${BUILD_DIR}/config.h +strtoll.o: ${BUILD_DIR}/config.h +strtoul.o: ${BUILD_DIR}/config.h +strtoull.o: ${BUILD_DIR}/config.h +strtoumax.o: ${BUILD_DIR}/config.h +strtrans.o: ${BUILD_DIR}/config.h +times.o: ${BUILD_DIR}/config.h +timeval.o: ${BUILD_DIR}/config.h +tmpfile.o: ${BUILD_DIR}/config.h ${topdir}/config-top.h +uconvert.o: ${BUILD_DIR}/config.h +ufuncs.o: ${BUILD_DIR}/config.h +unicode.o: ${BUILD_DIR}/config.h +utf8.o: ${BUILD_DIR}/config.h +vprint.o: ${BUILD_DIR}/config.h +wcsdup.o: ${BUILD_DIR}/config.h +wcsnwidth.o: ${BUILD_DIR}/config.h +wcswidth.o: ${BUILD_DIR}/config.h +winsize.o: ${BUILD_DIR}/config.h +zcatfd.o: ${BUILD_DIR}/config.h +zgetline.o: ${BUILD_DIR}/config.h +zmapfd.o: ${BUILD_DIR}/config.h +zread.o: ${BUILD_DIR}/config.h +zwrite.o: ${BUILD_DIR}/config.h + +clktck.o: ${topdir}/bashtypes.h + +getcwd.o: ${topdir}/bashtypes.h ${topdir}/bashansi.h ${BASHINCDIR}/maxpath.h +getcwd.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/posixdir.h +getcwd.o: ${BASHINCDIR}/memalloc.h ${BASHINCDIR}/ansi_stdlib.h + +getenv.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +getenv.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +getenv.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +getenv.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +getenv.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +getenv.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +getenv.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +getenv.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +#getenv.o: ${BUILD_DIR}/version.h + +inet_aton.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +inet_aton.o: ${BASHINCDIR}/stdc.h + +itos.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +itos.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +itos.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +itos.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +itos.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +itos.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +itos.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +itos.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +#itos.o: ${BUILD_DIR}/version.h + +makepath.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +makepath.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +makepath.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +makepath.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +makepath.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +makepath.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +makepath.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +makepath.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +#makepath.o: ${BUILD_DIR}/version.h + +netconn.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h +netconn.o: ${topdir}/bashtypes.h + +netopen.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${topdir}/xmalloc.h +netopen.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +netopen.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +netopen.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +netopen.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +netopen.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +netopen.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +netopen.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +netopen.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +#netopen.o: ${BUILD_DIR}/version.h + +oslib.o: ${topdir}/bashtypes.h ${topdir}/bashansi.h ${BASHINCDIR}/maxpath.h +oslib.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +oslib.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +oslib.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +oslib.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +oslib.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +oslib.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +oslib.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +oslib.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h +oslib.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +#oslib.o: ${BUILD_DIR}/version.h + +pathcanon.o: ${topdir}/bashtypes.h ${topdir}/bashansi.h ${BASHINCDIR}/maxpath.h +pathcanon.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +pathcanon.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +pathcanon.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +pathcanon.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +pathcanon.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +pathcanon.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +pathcanon.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +pathcanon.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h +pathcanon.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +#pathcanon.o: ${BUILD_DIR}/version.h + +pathphys.o: ${topdir}/bashtypes.h ${topdir}/bashansi.h ${BASHINCDIR}/maxpath.h +pathphys.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +pathphys.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +pathphys.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +pathphys.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +pathphys.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +pathphys.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +pathphys.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +pathphys.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h +pathphys.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +#pathphys.o: ${BUILD_DIR}/version.h + +random.o: ${topdir}/bashtypes.h ${BASHINCDIR}/stdc.h +random.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +random.o: ${BASHINCDIR}/filecntl.h + +rename.o: ${topdir}/bashtypes.h ${BASHINCDIR}/stdc.h +rename.o: ${BASHINCDIR}/posixstat.h + +setlinebuf.o: ${topdir}/xmalloc.h ${topdir}/bashansi.h +setlinebuf.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/stdc.h + +eaccess.o: ${topdir}/bashtypes.h +eaccess.o: ${BASHINCDIR}/posixstat.h +eaccess.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +eaccess.o: ${BASHINCDIR}/filecntl.h +eaccess.o: ${BASHINCDIR}/stdc.h +eaccess.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +eaccess.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +eaccess.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +eaccess.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +eaccess.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +eaccess.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +eaccess.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +#eaccess.o: ${BUILD_DIR}/version.h + +shmatch.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h +shmatch.o: ${BASHINCDIR}/ansi_stdlib.h ${topdir}/xmalloc.h +shmatch.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +shmatch.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +shmatch.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +shmatch.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +shmatch.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +shmatch.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +shmatch.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h + +shquote.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h +shquote.o: ${BASHINCDIR}/ansi_stdlib.h ${topdir}/xmalloc.h +shquote.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h + +shtty.o: ${BASHINCDIR}/shtty.h +shtty.o: ${BASHINCDIR}/stdc.h + +snprintf.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h ${topdir}/xmalloc.h +snprintf.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +snprintf.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h +snprintf.o: ${BASHINCDIR}/typemax.h + +spell.o: ${topdir}/bashtypes.h +spell.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/posixdir.h +spell.o: ${BASHINCDIR}/ansi_stdlib.h + +strcasecmp.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h +strcasecmp.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h + +strerror.o: ${topdir}/bashtypes.h +strerror.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +strerror.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +strerror.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +strerror.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +strerror.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +strerror.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +strerror.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +#strerror.o: ${BUILD_DIR}/version.h + +strcasestr.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h +strcasestr.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h + +stringlist.o: ${topdir}/bashansi.h +stringlist.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +stringlist.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +stringlist.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +stringlist.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +stringlist.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +stringlist.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +stringlist.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +#stringlist.o: ${BUILD_DIR}/version.h + +stringvec.o: ${topdir}/bashansi.h ${BASHINCDIR}/chartypes.h +stringvec.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +stringvec.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +stringvec.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +stringvec.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +stringvec.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +stringvec.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +stringvec.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +#stringvec.o: ${BUILD_DIR}/version.h + +strnlen.o: ${BASHINCDIR}/stdc.h + +strpbrk.o: ${BASHINCDIR}/stdc.h + +strtod.o: ${topdir}/bashansi.h +strtod.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h + +strtoimax.o: ${BASHINCDIR}/stdc.h + +strtol.o: ${topdir}/bashansi.h +strtol.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +strtol.o: ${BASHINCDIR}/typemax.h + +strtoll.o: ${topdir}/bashansi.h +strtoll.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +strtoll.o: ${BASHINCDIR}/typemax.h + +strtoul.o: ${topdir}/bashansi.h +strtoul.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +strtoul.o: ${BASHINCDIR}/typemax.h + +strtoull.o: ${topdir}/bashansi.h +strtoull.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +strtoull.o: ${BASHINCDIR}/typemax.h + +strtoumax.o: ${BASHINCDIR}/stdc.h + +strtrans.o: ${topdir}/bashansi.h +strtrans.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +strtrans.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +strtrans.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +strtrans.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +strtrans.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +strtrans.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +strtrans.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +strtrans.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +strtrans.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h +#strtrans.o: ${BUILD_DIR}/version.h + +times.o: ${BASHINCDIR}/systimes.h +times.o: ${BASHINCDIR}/posixtime.h + +timeval.o: ${BASHINCDIR}/posixtime.h +gettimeofday.o: ${BASHINCDIR}/posixtime.h + +tmpfile.o: ${topdir}/bashtypes.h +tmpfile.o: ${BASHINCDIR}/chartypes.h +tmpfile.o: ${BASHINCDIR}/posixstat.h +tmpfile.o: ${BASHINCDIR}/filecntl.h +tmpfile.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +tmpfile.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +tmpfile.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +tmpfile.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +tmpfile.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +tmpfile.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +tmpfile.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h + +uconvert.o: ${topdir}/bashtypes.h +uconvert.o: ${BASHINCDIR}/chartypes.h +uconvert.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +uconvert.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +uconvert.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +uconvert.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +uconvert.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +uconvert.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +uconvert.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h + +ufuncs.o: ${topdir}/bashtypes.h + +clock.o: ${BASHINCDIR}/posixtime.h + +mailstat.o: ${topdir}/bashansi.h +mailstat.o: ${topdir}/bashtypes.h +mailstat.o: ${BASHINCDIR}/ansi_stdlib.h +mailstat.o: ${BASHINCDIR}/posixstat.h +mailstat.o: ${BASHINCDIR}/posixdir.h +mailstat.o: ${BASHINCDIR}/maxpath.h + +fmtulong.o: ${topdir}/bashansi.h +fmtulong.o: ${BASHINCDIR}/ansi_stdlib.h +fmtulong.o: ${BASHINCDIR}/chartypes.h +fmtulong.o: ${BASHINCDIR}/stdc.h +fmtulong.o: ${BASHINCDIR}/typemax.h +fmtulong.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h + +fmtullong.o: ${topdir}/bashansi.h +fmtullong.o: ${BASHINCDIR}/ansi_stdlib.h +fmtullong.o: ${BASHINCDIR}/chartypes.h +fmtullong.o: ${BASHINCDIR}/stdc.h +fmtullong.o: ${BASHINCDIR}/typemax.h +fmtullong.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h + +fmtumax.o: ${topdir}/bashansi.h +fmtumax.o: ${BASHINCDIR}/ansi_stdlib.h +fmtumax.o: ${BASHINCDIR}/chartypes.h +fmtumax.o: ${BASHINCDIR}/stdc.h +fmtumax.o: ${BASHINCDIR}/typemax.h +fmtumax.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h + +wcsdup.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +wcsdup.o: ${BASHINCDIR}/stdc.h +wcsdup.o: ${topdir}/xmalloc.h + +wcsnwidth.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +wcsnwidth.o: ${BASHINCDIR}/stdc.h + +wcswidth.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +wcswidth.o: ${BASHINCDIR}/stdc.h + +mbschr.o: ${topdir}/bashansi.h +mbschr.o: ${BASHINCDIR}/ansi_stdlib.h +mbschr.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h + +zgetline.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +zgetline.o: ${BASHINCDIR}/stdc.h +zgetline.o: ${topdir}/xmalloc.h +zgetline.o: ${topdir}/bashtypes.h + +mbscasecmp.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +mbscasecmp.o: ${BASHINCDIR}/stdc.h +mbscasecmp.o: ${topdir}/xmalloc.h + +mbscmp.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +mbscmp.o: ${BASHINCDIR}/stdc.h +mbscmp.o: ${topdir}/xmalloc.h + +casemod.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +casemod.o: ${BASHINCDIR}/stdc.h +casemod.o: ${topdir}/xmalloc.h +casemod.o: ${topdir}/bashtypes.h +casemod.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h +casemod.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h + +dprintf.o: ${BASHINCDIR}/stdc.h + +input_avail.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +input_avail.o: ${BASHINCDIR}/stdc.h +input_avail.o: ${topdir}/xmalloc.h ${BASHINCDIR}/posixselect.h + +mktime.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +mktime.o: ${BASHINCDIR}/stdc.h + +fnxform.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +fnxform.o: ${BASHINCDIR}/stdc.h +fnxform.o: ${topdir}/bashtypes.h +fnxform.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h + +shmbchar.o: ${BASHINCDIR}/shmbchar.h +shmbchar.o: ${BASHINCDIR}/shmbutil.h + +unicode.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +unicode.o: ${BASHINCDIR}/stdc.h +unicode.o: ${topdir}/xmalloc.h + +utf8.o: ${topdir}/bashansi.h +utf8.o: ${BASHINCDIR}/ansi_stdlib.h +utf8.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h + +winsize.o: ${BASHINCDIR}/stdc.h +winsize.o: ${topdir}/xmalloc.h +winsize.o: ${topdir}/bashtypes.h + +zmapfd.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +zmapfd.o: ${BASHINCDIR}/stdc.h +zmapfd.o: ${topdir}/command.h +zmapfd.o: ${topdir}/general.h +zmapfd.o: ${topdir}/bashtypes.h ${BASHINCDIR}/chartypes.h ${topdir}/xmalloc.h diff --git a/bash-5.1/lib/sh/casemod.c b/bash-5.1/lib/sh/casemod.c new file mode 100644 index 0000000..bdd96f8 --- /dev/null +++ b/bash-5.1/lib/sh/casemod.c @@ -0,0 +1,273 @@ +/* casemod.c -- functions to change case of strings */ + +/* Copyright (C) 2008-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include + +#define _to_wupper(wc) (iswlower (wc) ? towupper (wc) : (wc)) +#define _to_wlower(wc) (iswupper (wc) ? towlower (wc) : (wc)) + +#if !defined (HANDLE_MULTIBYTE) +# define cval(s, i) ((s)[(i)]) +# define iswalnum(c) (isalnum(c)) +# define TOGGLE(x) (ISUPPER (x) ? tolower ((unsigned char)x) : (TOUPPER (x))) +#else +# define TOGGLE(x) (iswupper (x) ? towlower (x) : (_to_wupper(x))) +#endif + +/* These must agree with the defines in externs.h */ +#define CASE_NOOP 0x0000 +#define CASE_LOWER 0x0001 +#define CASE_UPPER 0x0002 +#define CASE_CAPITALIZE 0x0004 +#define CASE_UNCAP 0x0008 +#define CASE_TOGGLE 0x0010 +#define CASE_TOGGLEALL 0x0020 +#define CASE_UPFIRST 0x0040 +#define CASE_LOWFIRST 0x0080 + +#define CASE_USEWORDS 0x1000 /* modify behavior to act on words in passed string */ + +extern char *substring PARAMS((char *, int, int)); + +#ifndef UCHAR_MAX +# define UCHAR_MAX TYPE_MAXIMUM(unsigned char) +#endif + +#if defined (HANDLE_MULTIBYTE) +static wchar_t +cval (s, i) + char *s; + int i; +{ + size_t tmp; + wchar_t wc; + int l; + mbstate_t mps; + + if (MB_CUR_MAX == 1 || is_basic (s[i])) + return ((wchar_t)s[i]); + l = strlen (s); + if (i >= (l - 1)) + return ((wchar_t)s[i]); + memset (&mps, 0, sizeof (mbstate_t)); + tmp = mbrtowc (&wc, s + i, l - i, &mps); + if (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp)) + return ((wchar_t)s[i]); + return wc; +} +#endif + +/* Modify the case of characters in STRING matching PAT based on the value of + FLAGS. If PAT is null, modify the case of each character */ +char * +sh_modcase (string, pat, flags) + const char *string; + char *pat; + int flags; +{ + int start, next, end, retind; + int inword, c, nc, nop, match, usewords; + char *ret, *s; + wchar_t wc; + int mb_cur_max; +#if defined (HANDLE_MULTIBYTE) + wchar_t nwc; + char mb[MB_LEN_MAX+1]; + int mlen; + size_t m; + mbstate_t state; +#endif + + if (string == 0 || *string == 0) + { + ret = (char *)xmalloc (1); + ret[0] = '\0'; + return ret; + } + +#if defined (HANDLE_MULTIBYTE) + memset (&state, 0, sizeof (mbstate_t)); +#endif + + start = 0; + end = strlen (string); + mb_cur_max = MB_CUR_MAX; + + ret = (char *)xmalloc (2*end + 1); + retind = 0; + + /* See if we are supposed to split on alphanumerics and operate on each word */ + usewords = (flags & CASE_USEWORDS); + flags &= ~CASE_USEWORDS; + + inword = 0; + while (start < end) + { + wc = cval ((char *)string, start); + + if (iswalnum (wc) == 0) + inword = 0; + + if (pat) + { + next = start; + ADVANCE_CHAR (string, end, next); + s = substring ((char *)string, start, next); + match = strmatch (pat, s, FNM_EXTMATCH) != FNM_NOMATCH; + free (s); + if (match == 0) + { + /* copy unmatched portion */ + memcpy (ret + retind, string + start, next - start); + retind += next - start; + start = next; + inword = 1; + continue; + } + } + + /* XXX - for now, the toggling operators work on the individual + words in the string, breaking on alphanumerics. Should I + leave the capitalization operators to do that also? */ + if (flags == CASE_CAPITALIZE) + { + if (usewords) + nop = inword ? CASE_LOWER : CASE_UPPER; + else + nop = (start > 0) ? CASE_LOWER : CASE_UPPER; + inword = 1; + } + else if (flags == CASE_UNCAP) + { + if (usewords) + nop = inword ? CASE_UPPER : CASE_LOWER; + else + nop = (start > 0) ? CASE_UPPER : CASE_LOWER; + inword = 1; + } + else if (flags == CASE_UPFIRST) + { + if (usewords) + nop = inword ? CASE_NOOP : CASE_UPPER; + else + nop = (start > 0) ? CASE_NOOP : CASE_UPPER; + inword = 1; + } + else if (flags == CASE_LOWFIRST) + { + if (usewords) + nop = inword ? CASE_NOOP : CASE_LOWER; + else + nop = (start > 0) ? CASE_NOOP : CASE_LOWER; + inword = 1; + } + else if (flags == CASE_TOGGLE) + { + nop = inword ? CASE_NOOP : CASE_TOGGLE; + inword = 1; + } + else + nop = flags; + + /* Can't short-circuit, some locales have multibyte upper and lower + case equivalents of single-byte ascii characters (e.g., Turkish) */ + if (mb_cur_max == 1) + { +singlebyte: + switch (nop) + { + default: + case CASE_NOOP: nc = wc; break; + case CASE_UPPER: nc = TOUPPER (wc); break; + case CASE_LOWER: nc = TOLOWER (wc); break; + case CASE_TOGGLEALL: + case CASE_TOGGLE: nc = TOGGLE (wc); break; + } + ret[retind++] = nc; + } +#if defined (HANDLE_MULTIBYTE) + else + { + m = mbrtowc (&wc, string + start, end - start, &state); + /* Have to go through wide case conversion even for single-byte + chars, to accommodate single-byte characters where the + corresponding upper or lower case equivalent is multibyte. */ + if (MB_INVALIDCH (m)) + { + wc = (unsigned char)string[start]; + goto singlebyte; + } + else if (MB_NULLWCH (m)) + wc = L'\0'; + switch (nop) + { + default: + case CASE_NOOP: nwc = wc; break; + case CASE_UPPER: nwc = _to_wupper (wc); break; + case CASE_LOWER: nwc = _to_wlower (wc); break; + case CASE_TOGGLEALL: + case CASE_TOGGLE: nwc = TOGGLE (wc); break; + } + + /* We don't have to convert `wide' characters that are in the + unsigned char range back to single-byte `multibyte' characters. */ + if ((int)nwc <= UCHAR_MAX && is_basic ((int)nwc)) + ret[retind++] = nwc; + else + { + mlen = wcrtomb (mb, nwc, &state); + if (mlen > 0) + mb[mlen] = '\0'; + /* Don't assume the same width */ + strncpy (ret + retind, mb, mlen); + retind += mlen; + } + } +#endif + + ADVANCE_CHAR (string, end, start); + } + + ret[retind] = '\0'; + return ret; +} diff --git a/bash-5.1/lib/sh/clktck.c b/bash-5.1/lib/sh/clktck.c new file mode 100644 index 0000000..8b9b5b3 --- /dev/null +++ b/bash-5.1/lib/sh/clktck.c @@ -0,0 +1,61 @@ +/* clktck.c - get the value of CLK_TCK. */ + +/* 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 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 . +*/ + +#include + +#include +#if defined (HAVE_SYS_PARAM_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (HAVE_LIMITS_H) +# include +#endif + +#if !defined (HAVE_SYSCONF) || !defined (_SC_CLK_TCK) +# if !defined (CLK_TCK) +# if defined (HZ) +# define CLK_TCK HZ +# else +# define CLK_TCK 60 +# endif +# endif /* !CLK_TCK */ +#endif /* !HAVE_SYSCONF && !_SC_CLK_TCK */ + +long +get_clk_tck () +{ + static long retval = 0; + + if (retval != 0) + return (retval); + +#if defined (HAVE_SYSCONF) && defined (_SC_CLK_TCK) + retval = sysconf (_SC_CLK_TCK); +#else /* !SYSCONF || !_SC_CLK_TCK */ + retval = CLK_TCK; +#endif /* !SYSCONF || !_SC_CLK_TCK */ + + return (retval); +} diff --git a/bash-5.1/lib/sh/clock.c b/bash-5.1/lib/sh/clock.c new file mode 100644 index 0000000..c6c52bf --- /dev/null +++ b/bash-5.1/lib/sh/clock.c @@ -0,0 +1,87 @@ +/* clock.c - operations on struct tms and clock_t's */ + +/* 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 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 . +*/ + +#include + +#if defined (HAVE_TIMES) + +#include +#include + +#if defined (HAVE_SYS_TIMES_H) +# include +#endif + +#include +#include + +#include + +#ifndef locale_decpoint +extern int locale_decpoint PARAMS((void)); +#endif + +extern long get_clk_tck PARAMS((void)); + +void +clock_t_to_secs (t, sp, sfp) + clock_t t; + time_t *sp; + int *sfp; +{ + static long clk_tck = -1; + + if (clk_tck == -1) + clk_tck = get_clk_tck (); + + *sfp = t % clk_tck; + *sfp = (*sfp * 1000) / clk_tck; + + *sp = t / clk_tck; + + /* Sanity check */ + if (*sfp >= 1000) + { + *sp += 1; + *sfp -= 1000; + } +} + +/* Print the time defined by a clock_t (returned by the `times' and `time' + system calls) in a standard way to stdio stream FP. This is scaled in + terms of the value of CLK_TCK, which is what is returned by the + `times' call. */ +void +print_clock_t (fp, t) + FILE *fp; + clock_t t; +{ + time_t timestamp; + long minutes; + int seconds, seconds_fraction; + + clock_t_to_secs (t, ×tamp, &seconds_fraction); + + minutes = timestamp / 60; + seconds = timestamp % 60; + + fprintf (fp, "%ldm%d%c%03ds", minutes, seconds, locale_decpoint(), seconds_fraction); +} +#endif /* HAVE_TIMES */ diff --git a/bash-5.1/lib/sh/dprintf.c b/bash-5.1/lib/sh/dprintf.c new file mode 100644 index 0000000..b3b5d64 --- /dev/null +++ b/bash-5.1/lib/sh/dprintf.c @@ -0,0 +1,70 @@ +/* dprintf -- printf to a file descriptor */ + +/* Copyright (C) 2008-2010 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (PREFER_STDARG) +# include +#else +# include +#endif + +#include + +int +#if defined (PREFER_STDARG) +dprintf(int fd, const char *format, ...) +#else +dprintf(fd, format, va_alist) + int fd; + const char *format; + va_dcl +#endif +{ + FILE *fp; + int fd2, rc, r2; + va_list args; + + if ((fd2 = dup(fd)) < 0) + return -1; + fp = fdopen (fd2, "w"); + if (fp == 0) + { + close (fd2); + return -1; + } + + SH_VA_START (args, format); + rc = vfprintf (fp, format, args); + fflush (fp); + va_end (args); + + r2 = fclose (fp); /* check here */ + + return rc; +} diff --git a/bash-5.1/lib/sh/eaccess.c b/bash-5.1/lib/sh/eaccess.c new file mode 100644 index 0000000..c3043ec --- /dev/null +++ b/bash-5.1/lib/sh/eaccess.c @@ -0,0 +1,244 @@ +/* eaccess.c - eaccess replacement for the shell, plus other access functions. */ + +/* Copyright (C) 2006-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include + +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" + +#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 "shell.h" + +#if !defined (R_OK) +#define R_OK 4 +#define W_OK 2 +#define X_OK 1 +#define F_OK 0 +#endif /* R_OK */ + +static int path_is_devfd PARAMS((const char *)); +static int sh_stataccess PARAMS((const char *, int)); +#if HAVE_DECL_SETREGID +static int sh_euidaccess PARAMS((const char *, int)); +#endif + +static int +path_is_devfd (path) + const char *path; +{ + if (path[0] == '/' && path[1] == 'd' && strncmp (path, "/dev/fd/", 8) == 0) + return 1; + else if (STREQN (path, "/dev/std", 8)) + { + if (STREQ (path+8, "in") || STREQ (path+8, "out") || STREQ (path+8, "err")) + return 1; + else + return 0; + } + else + return 0; +} + +/* A wrapper for stat () which disallows pathnames that are empty strings + and handles /dev/fd emulation on systems that don't have it. */ +int +sh_stat (path, finfo) + const char *path; + struct stat *finfo; +{ + static char *pbuf = 0; + + if (*path == '\0') + { + errno = ENOENT; + return (-1); + } + if (path[0] == '/' && path[1] == 'd' && strncmp (path, "/dev/fd/", 8) == 0) + { + /* If stating /dev/fd/n doesn't produce the same results as fstat of + FD N, then define DEV_FD_STAT_BROKEN */ +#if !defined (HAVE_DEV_FD) || defined (DEV_FD_STAT_BROKEN) + intmax_t fd; + int r; + + if (legal_number (path + 8, &fd) && fd == (int)fd) + { + r = fstat ((int)fd, finfo); + if (r == 0 || errno != EBADF) + return (r); + } + errno = ENOENT; + return (-1); +#else + /* If HAVE_DEV_FD is defined, DEV_FD_PREFIX is defined also, and has a + trailing slash. Make sure /dev/fd/xx really uses DEV_FD_PREFIX/xx. + On most systems, with the notable exception of linux, this is + effectively a no-op. */ + pbuf = xrealloc (pbuf, sizeof (DEV_FD_PREFIX) + strlen (path + 8)); + strcpy (pbuf, DEV_FD_PREFIX); + strcat (pbuf, path + 8); + return (stat (pbuf, finfo)); +#endif /* !HAVE_DEV_FD */ + } +#if !defined (HAVE_DEV_STDIN) + else if (STREQN (path, "/dev/std", 8)) + { + if (STREQ (path+8, "in")) + return (fstat (0, finfo)); + else if (STREQ (path+8, "out")) + return (fstat (1, finfo)); + else if (STREQ (path+8, "err")) + return (fstat (2, finfo)); + else + return (stat (path, finfo)); + } +#endif /* !HAVE_DEV_STDIN */ + return (stat (path, finfo)); +} + +/* Do the same thing access(2) does, but use the effective uid and gid, + and don't make the mistake of telling root that any file is + executable. This version uses stat(2). */ +static int +sh_stataccess (path, mode) + const char *path; + int mode; +{ + struct stat st; + + if (sh_stat (path, &st) < 0) + return (-1); + + if (current_user.euid == 0) + { + /* Root can read or write any file. */ + if ((mode & X_OK) == 0) + return (0); + + /* Root can execute any file that has any one of the execute + bits set. */ + if (st.st_mode & S_IXUGO) + return (0); + } + + if (st.st_uid == current_user.euid) /* owner */ + mode <<= 6; + else if (group_member (st.st_gid)) + mode <<= 3; + + if (st.st_mode & mode) + return (0); + + errno = EACCES; + return (-1); +} + +#if HAVE_DECL_SETREGID +/* Version to call when uid != euid or gid != egid. We temporarily swap + the effective and real uid and gid as appropriate. */ +static int +sh_euidaccess (path, mode) + const char *path; + int mode; +{ + int r, e; + + if (current_user.uid != current_user.euid) + setreuid (current_user.euid, current_user.uid); + if (current_user.gid != current_user.egid) + setregid (current_user.egid, current_user.gid); + + r = access (path, mode); + e = errno; + + if (current_user.uid != current_user.euid) + setreuid (current_user.uid, current_user.euid); + if (current_user.gid != current_user.egid) + setregid (current_user.gid, current_user.egid); + + errno = e; + return r; +} +#endif + +int +sh_eaccess (path, mode) + const char *path; + int mode; +{ + int ret; + + if (path_is_devfd (path)) + return (sh_stataccess (path, mode)); + +#if (defined (HAVE_FACCESSAT) && defined (AT_EACCESS)) || defined (HAVE_EACCESS) +# if defined (HAVE_FACCESSAT) && defined (AT_EACCESS) + ret = faccessat (AT_FDCWD, path, mode, AT_EACCESS); +# else /* HAVE_EACCESS */ /* FreeBSD */ + ret = eaccess (path, mode); /* XXX -- not always correct for X_OK */ +# endif /* HAVE_EACCESS */ +# if defined (__FreeBSD__) || defined (SOLARIS) || defined (_AIX) + if (ret == 0 && current_user.euid == 0 && mode == X_OK) + return (sh_stataccess (path, mode)); +# endif /* __FreeBSD__ || SOLARIS || _AIX */ + return ret; +#elif defined (EFF_ONLY_OK) /* SVR4(?), SVR4.2 */ + return access (path, mode|EFF_ONLY_OK); +#else + if (mode == F_OK) + return (sh_stataccess (path, mode)); + +# if HAVE_DECL_SETREGID + if (current_user.uid != current_user.euid || current_user.gid != current_user.egid) + return (sh_euidaccess (path, mode)); +# endif + + if (current_user.uid == current_user.euid && current_user.gid == current_user.egid) + { + ret = access (path, mode); +#if defined (__FreeBSD__) || defined (SOLARIS) + if (ret == 0 && current_user.euid == 0 && mode == X_OK) + return (sh_stataccess (path, mode)); +#endif + return ret; + } + + return (sh_stataccess (path, mode)); +#endif +} diff --git a/bash-5.1/lib/sh/fmtullong.c b/bash-5.1/lib/sh/fmtullong.c new file mode 100644 index 0000000..97a1dc1 --- /dev/null +++ b/bash-5.1/lib/sh/fmtullong.c @@ -0,0 +1,31 @@ +/* fmtullong.c - convert `long long int' to string */ + +/* Copyright (C) 2001-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 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 . +*/ + +#include + +#ifdef HAVE_LONG_LONG + +#define LONG long long +#define UNSIGNED_LONG unsigned long long +#define fmtulong fmtullong + +#include "fmtulong.c" + +#endif diff --git a/bash-5.1/lib/sh/fmtulong.c b/bash-5.1/lib/sh/fmtulong.c new file mode 100644 index 0000000..0ccc22b --- /dev/null +++ b/bash-5.1/lib/sh/fmtulong.c @@ -0,0 +1,191 @@ +/* fmtulong.c -- Convert unsigned long int to string. */ + +/* Copyright (C) 1998-2011 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (HAVE_LIMITS_H) +# include +#endif + +#include +#ifdef HAVE_STDDEF_H +# include +#endif + +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#include +#include + +#include + +#include "stdc.h" + +#include + +#ifndef errno +extern int errno; +#endif + +#define x_digs "0123456789abcdef" +#define X_digs "0123456789ABCDEF" + +/* XXX -- assumes uppercase letters, lowercase letters, and digits are + contiguous */ +#define FMTCHAR(x) \ + ((x) < 10) ? (x) + '0' \ + : (((x) < 36) ? (x) - 10 + 'a' \ + : (((x) < 62) ? (x) - 36 + 'A' \ + : (((x) == 62) ? '@' : '_'))) + +#ifndef FL_PREFIX +# define FL_PREFIX 0x01 /* add 0x, 0X, or 0 prefix as appropriate */ +# define FL_ADDBASE 0x02 /* add base# prefix to converted value */ +# define FL_HEXUPPER 0x04 /* use uppercase when converting to hex */ +# define FL_UNSIGNED 0x08 /* don't add any sign */ +#endif + +#ifndef LONG +# define LONG long +# define UNSIGNED_LONG unsigned long +#endif + +/* `unsigned long' (or unsigned long long) to string conversion for a given + base. The caller passes the output buffer and the size. This should + check for buffer underflow, but currently does not. */ +char * +fmtulong (ui, base, buf, len, flags) + UNSIGNED_LONG ui; + int base; + char *buf; + size_t len; + int flags; +{ + char *p; + int sign; + LONG si; + + if (base == 0) + base = 10; + + if (base < 2 || base > 64) + { +#if 1 + /* XXX - truncation possible with long translation */ + strncpy (buf, _("invalid base"), len - 1); + buf[len-1] = '\0'; + errno = EINVAL; + return (p = buf); +#else + base = 10; +#endif + } + + sign = 0; + if ((flags & FL_UNSIGNED) == 0 && (LONG)ui < 0) + { + ui = -ui; + sign = '-'; + } + + p = buf + len - 2; + p[1] = '\0'; + + /* handle common cases explicitly */ + switch (base) + { + case 10: + if (ui < 10) + { + *p-- = TOCHAR (ui); + break; + } + /* Favor signed arithmetic over unsigned arithmetic; it is faster on + many machines. */ + if ((LONG)ui < 0) + { + *p-- = TOCHAR (ui % 10); + si = ui / 10; + } + else + si = ui; + do + *p-- = TOCHAR (si % 10); + while (si /= 10); + break; + + case 8: + do + *p-- = TOCHAR (ui & 7); + while (ui >>= 3); + break; + + case 16: + do + *p-- = (flags & FL_HEXUPPER) ? X_digs[ui & 15] : x_digs[ui & 15]; + while (ui >>= 4); + break; + + case 2: + do + *p-- = TOCHAR (ui & 1); + while (ui >>= 1); + break; + + default: + do + *p-- = FMTCHAR (ui % base); + while (ui /= base); + break; + } + + if ((flags & FL_PREFIX) && (base == 8 || base == 16)) + { + if (base == 16) + { + *p-- = (flags & FL_HEXUPPER) ? 'X' : 'x'; + *p-- = '0'; + } + else if (p[1] != '0') + *p-- = '0'; + } + else if ((flags & FL_ADDBASE) && base != 10) + { + *p-- = '#'; + *p-- = TOCHAR (base % 10); + if (base > 10) + *p-- = TOCHAR (base / 10); + } + + if (sign) + *p-- = '-'; + + return (p + 1); +} diff --git a/bash-5.1/lib/sh/fmtumax.c b/bash-5.1/lib/sh/fmtumax.c new file mode 100644 index 0000000..f2786b5 --- /dev/null +++ b/bash-5.1/lib/sh/fmtumax.c @@ -0,0 +1,27 @@ +/* fmtumax.c -- Convert uintmax_t to string. */ + +/* 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 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 . +*/ + +#include + +#define LONG intmax_t +#define UNSIGNED_LONG uintmax_t +#define fmtulong fmtumax + +#include "fmtulong.c" diff --git a/bash-5.1/lib/sh/fnxform.c b/bash-5.1/lib/sh/fnxform.c new file mode 100644 index 0000000..35d7e73 --- /dev/null +++ b/bash-5.1/lib/sh/fnxform.c @@ -0,0 +1,199 @@ +/* fnxform - use iconv(3) to transform strings to and from "filename" format */ + +/* Copyright (C) 2009-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include +#if defined (HAVE_UNISTD_H) +# include +#endif +#include "bashansi.h" +#include +#include "bashtypes.h" + +#include "stdc.h" +#include "bashintl.h" +#include + +#if defined (HAVE_ICONV) +# include +#endif + +#if defined (HAVE_LOCALE_CHARSET) +extern const char *locale_charset PARAMS((void)); +#else +extern char *get_locale_var PARAMS((char *)); +#endif + +#if defined (HAVE_ICONV) +static iconv_t conv_fromfs = (iconv_t)-1; +static iconv_t conv_tofs = (iconv_t)-1; + +#define OUTLEN_MAX 4096 + +static char *outbuf = 0; +static size_t outlen = 0; + +static char *curencoding PARAMS((void)); +static void init_tofs PARAMS((void)); +static void init_fromfs PARAMS((void)); + +static char * +curencoding () +{ + char *loc; +#if defined (HAVE_LOCALE_CHARSET) + loc = (char *)locale_charset (); + return loc; +#else + char *dot, *mod; + + loc = get_locale_var ("LC_CTYPE"); + if (loc == 0 || *loc == 0) + return ""; + dot = strchr (loc, '.'); + if (dot == 0) + return loc; + mod = strchr (dot, '@'); + if (mod) + *mod = '\0'; + return ++dot; +#endif +} + +static void +init_tofs () +{ + char *cur; + + cur = curencoding (); + conv_tofs = iconv_open ("UTF-8-MAC", cur); +} + +static void +init_fromfs () +{ + char *cur; + + cur = curencoding (); + conv_fromfs = iconv_open (cur, "UTF-8-MAC"); +} + +char * +fnx_tofs (string, len) + char *string; + size_t len; +{ +#ifdef MACOSX + ICONV_CONST char *inbuf; + char *tempbuf; + size_t templen; + + if (conv_tofs == (iconv_t)-1) + init_tofs (); + if (conv_tofs == (iconv_t)-1) + return string; + + /* Free and reallocate outbuf if it's *too* big */ + if (outlen >= OUTLEN_MAX && len < OUTLEN_MAX - 8) + { + free (outbuf); + outbuf = 0; + outlen = 0; + } + + inbuf = string; + if (outbuf == 0 || outlen < len + 8) + { + outlen = len + 8; + outbuf = outbuf ? xrealloc (outbuf, outlen + 1) : xmalloc (outlen + 1); + } + tempbuf = outbuf; + templen = outlen; + + iconv (conv_tofs, NULL, NULL, NULL, NULL); + + if (iconv (conv_tofs, &inbuf, &len, &tempbuf, &templen) == (size_t)-1) + return string; + + *tempbuf = '\0'; + return outbuf; +#else + return string; +#endif +} + +char * +fnx_fromfs (string, len) + char *string; + size_t len; +{ +#ifdef MACOSX + ICONV_CONST char *inbuf; + char *tempbuf; + size_t templen; + + if (conv_fromfs == (iconv_t)-1) + init_fromfs (); + if (conv_fromfs == (iconv_t)-1) + return string; + + /* Free and reallocate outbuf if it's *too* big */ + if (outlen >= OUTLEN_MAX && len < OUTLEN_MAX - 8) + { + free (outbuf); + outbuf = 0; + outlen = 0; + } + + inbuf = string; + if (outbuf == 0 || outlen < (len + 8)) + { + outlen = len + 8; + outbuf = outbuf ? xrealloc (outbuf, outlen + 1) : xmalloc (outlen + 1); + } + tempbuf = outbuf; + templen = outlen; + + iconv (conv_fromfs, NULL, NULL, NULL, NULL); + + if (iconv (conv_fromfs, &inbuf, &len, &tempbuf, &templen) == (size_t)-1) + return string; + + *tempbuf = '\0'; + return outbuf; +#else + return string; +#endif +} + +#else +char * +fnx_tofs (string) + char *string; +{ + return string; +} + +char * +fnx_fromfs (string) + char *string; +{ + return string; +} +#endif diff --git a/bash-5.1/lib/sh/fpurge.c b/bash-5.1/lib/sh/fpurge.c new file mode 100644 index 0000000..8cd4e36 --- /dev/null +++ b/bash-5.1/lib/sh/fpurge.c @@ -0,0 +1,232 @@ +/* fpurge - Flushing buffers of a FILE stream. */ + +/* Copyright (C) 2007-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include "stdc.h" + +#include + +/* Specification. Same as in ../../externs.h. */ +#define NEED_FPURGE_DECL +#if HAVE_FPURGE +# define fpurge _bash_fpurge +#endif +extern int fpurge PARAMS((FILE *stream)); + +#if HAVE___FPURGE /* glibc >= 2.2, Haiku, Solaris >= 7 */ +# include +#endif +#include + +/* Inline contents of gnulib:stdio-impl.h */ + +/* Many stdio implementations have the same logic and therefore can share + the same implementation of stdio extension API, except that some fields + have different naming conventions, or their access requires some casts. */ + +/* BSD stdio derived implementations. */ + +#if defined __NetBSD__ /* NetBSD */ +/* Get __NetBSD_Version__. */ +# include +#endif + +#if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ + +# if defined __DragonFly__ /* DragonFly */ + /* See . */ +# define fp_ ((struct { struct __FILE_public pub; \ + struct { unsigned char *_base; int _size; } _bf; \ + void *cookie; \ + void *_close; \ + void *_read; \ + void *_seek; \ + void *_write; \ + struct { unsigned char *_base; int _size; } _ub; \ + int _ur; \ + unsigned char _ubuf[3]; \ + unsigned char _nbuf[1]; \ + struct { unsigned char *_base; int _size; } _lb; \ + int _blksize; \ + fpos_t _offset; \ + /* More fields, not relevant here. */ \ + } *) fp) + /* See . */ +# define _p pub._p +# define _flags pub._flags +# define _r pub._r +# define _w pub._w +# else +# define fp_ fp +# endif + +# if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ /* NetBSD >= 1.5ZA, OpenBSD */ + /* See + and */ + struct __sfileext + { + struct __sbuf _ub; /* ungetc buffer */ + /* More fields, not relevant here. */ + }; +# define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub +# else /* FreeBSD, NetBSD <= 1.5Z, DragonFly, MacOS X, Cygwin */ +# define fp_ub fp_->_ub +# endif + +# define HASUB(fp) (fp_ub._base != NULL) + +#endif + +/* SystemV derived implementations. */ + +#if defined _IOERR + +# if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */ +# define fp_ ((struct { unsigned char *_ptr; \ + unsigned char *_base; \ + unsigned char *_end; \ + long _cnt; \ + int _file; \ + unsigned int _flag; \ + } *) fp) +# else +# define fp_ fp +# endif + +# if defined _SCO_DS /* OpenServer */ +# define _cnt __cnt +# define _ptr __ptr +# define _base __base +# define _flag __flag +# endif + +#endif + +int +fpurge (FILE *fp) +{ +#if HAVE___FPURGE /* glibc >= 2.2, Haiku, Solaris >= 7 */ + + __fpurge (fp); + /* The __fpurge function does not have a return value. */ + return 0; + +#elif HAVE_FPURGE /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin 1.7 */ + + /* Call the system's fpurge function. */ +# undef fpurge +# if !HAVE_DECL_FPURGE + extern int fpurge (FILE *); +# endif + int result = fpurge (fp); +# if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ + if (result == 0) + /* Correct the invariants that fpurge broke. + on BSD systems says: + "The following always hold: if _flags & __SRD, _w is 0." + If this invariant is not fulfilled and the stream is read-write but + currently reading, subsequent putc or fputc calls will write directly + into the buffer, although they shouldn't be allowed to. */ + if ((fp_->_flags & __SRD) != 0) + fp_->_w = 0; +# endif + return result; + +#else + + /* Most systems provide FILE as a struct and the necessary bitmask in + , because they need it for implementing getc() and putc() as + fast macros. */ +# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + fp->_IO_read_end = fp->_IO_read_ptr; + fp->_IO_write_ptr = fp->_IO_write_base; + /* Avoid memory leak when there is an active ungetc buffer. */ + if (fp->_IO_save_base != NULL) + { + free (fp->_IO_save_base); + fp->_IO_save_base = NULL; + } + return 0; +# elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */ + fp_->_p = fp_->_bf._base; + fp_->_r = 0; + fp_->_w = ((fp_->_flags & (__SLBF | __SNBF | __SRD)) == 0 /* fully buffered and not currently reading? */ + ? fp_->_bf._size + : 0); + /* Avoid memory leak when there is an active ungetc buffer. */ + if (fp_ub._base != NULL) + { + if (fp_ub._base != fp_->_ubuf) + free (fp_ub._base); + fp_ub._base = NULL; + } + return 0; +# elif defined __EMX__ /* emx+gcc */ + fp->_ptr = fp->_buffer; + fp->_rcount = 0; + fp->_wcount = 0; + fp->_ungetc_count = 0; + return 0; +# elif defined _IOERR || defined __TANDEM /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ + fp->_ptr = fp->_base; + if (fp->_ptr != NULL) + fp->_cnt = 0; + return 0; +# elif defined __UCLIBC__ /* uClibc */ +# ifdef __STDIO_BUFFERS + if (fp->__modeflags & __FLAG_WRITING) + fp->__bufpos = fp->__bufstart; + else if (fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) + fp->__bufpos = fp->__bufread; +# endif + return 0; +# elif defined __QNX__ /* QNX */ + fp->_Rback = fp->_Back + sizeof (fp->_Back); + fp->_Rsave = NULL; + if (fp->_Mode & 0x2000 /* _MWRITE */) + /* fp->_Buf <= fp->_Next <= fp->_Wend */ + fp->_Next = fp->_Buf; + else + /* fp->_Buf <= fp->_Next <= fp->_Rend */ + fp->_Rend = fp->_Next; + return 0; +# elif defined __MINT__ /* Atari FreeMiNT */ + if (fp->__pushed_back) + { + fp->__bufp = fp->__pushback_bufp; + fp->__pushed_back = 0; + } + /* Preserve the current file position. */ + if (fp->__target != -1) + fp->__target += fp->__bufp - fp->__buffer; + fp->__bufp = fp->__buffer; + /* Nothing in the buffer, next getc is nontrivial. */ + fp->__get_limit = fp->__bufp; + /* Nothing in the buffer, next putc is nontrivial. */ + fp->__put_limit = fp->__buffer; + return 0; +# else +# warning "Please port gnulib fpurge.c to your platform! Look at the definitions of fflush, setvbuf and ungetc on your system, then report this to bug-gnulib." + return 0; +# endif + +#endif +} diff --git a/bash-5.1/lib/sh/getcwd.c b/bash-5.1/lib/sh/getcwd.c new file mode 100644 index 0000000..d7bd241 --- /dev/null +++ b/bash-5.1/lib/sh/getcwd.c @@ -0,0 +1,356 @@ +/* getcwd.c -- get pathname of current directory */ + +/* Copyright (C) 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 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 . +*/ + +#include + +#if !defined (HAVE_GETCWD) + +#if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) + #pragma alloca +#endif /* _AIX && RISC6000 && !__GNUC__ */ + +#if defined (__QNX__) +# undef HAVE_LSTAT +#endif + +#include +#include + +#if defined (HAVE_LIMITS_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include +#include +#include + +#include + +#if !defined (D_FILENO_AVAILABLE) +# include "command.h" +# include "general.h" +# include "externs.h" +#endif + +#include + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#if !defined (HAVE_LSTAT) +# define lstat stat +#endif + +#if !defined (NULL) +# define NULL 0 +#endif + +/* If the d_fileno member of a struct dirent doesn't return anything useful, + we need to check inode number equivalence the hard way. Return 1 if + the inode corresponding to PATH/DIR is identical to THISINO. */ +#if !defined (D_FILENO_AVAILABLE) +static int +_path_checkino (dotp, name, thisino) + char *dotp; + char *name; + ino_t thisino; +{ + char *fullpath; + int r, e; + struct stat st; + + e = errno; + fullpath = sh_makepath (dotp, name, MP_RMDOT); + if (stat (fullpath, &st) < 0) + { + errno = e; + return 0; + } + free (fullpath); + errno = e; + return (st.st_ino == thisino); +} +#endif + +/* Get the pathname of the current working directory, + and put it in SIZE bytes of BUF. Returns NULL if the + directory couldn't be determined or SIZE was too small. + If successful, returns BUF. In GNU, if BUF is NULL, + an array is allocated with `malloc'; the array is SIZE + bytes long, unless SIZE <= 0, in which case it is as + big as necessary. */ +#if defined (__STDC__) +char * +getcwd (char *buf, size_t size) +#else /* !__STDC__ */ +char * +getcwd (buf, size) + char *buf; + size_t size; +#endif /* !__STDC__ */ +{ + static const char dots[] + = "../../../../../../../../../../../../../../../../../../../../../../../\ +../../../../../../../../../../../../../../../../../../../../../../../../../../\ +../../../../../../../../../../../../../../../../../../../../../../../../../.."; + const char *dotp, *dotlist; + size_t dotsize; + dev_t rootdev, thisdev; + ino_t rootino, thisino; + char path[PATH_MAX + 1]; + register char *pathp; + char *pathbuf; + size_t pathsize; + struct stat st; + int saved_errno; + + if (buf != NULL && size == 0) + { + errno = EINVAL; + return ((char *)NULL); + } + + pathsize = sizeof (path); + pathp = &path[pathsize]; + *--pathp = '\0'; + pathbuf = path; + + if (stat (".", &st) < 0) + return ((char *)NULL); + thisdev = st.st_dev; + thisino = st.st_ino; + + if (stat ("/", &st) < 0) + return ((char *)NULL); + rootdev = st.st_dev; + rootino = st.st_ino; + + saved_errno = 0; + + dotsize = sizeof (dots) - 1; + dotp = &dots[sizeof (dots)]; + dotlist = dots; + while (!(thisdev == rootdev && thisino == rootino)) + { + register DIR *dirstream; + register struct dirent *d; + dev_t dotdev; + ino_t dotino; + char mount_point; + int namlen; + + /* Look at the parent directory. */ + if (dotp == dotlist) + { + /* My, what a deep directory tree you have, Grandma. */ + char *new; + if (dotlist == dots) + { + new = (char *)malloc (dotsize * 2 + 1); + if (new == NULL) + goto lose; + memcpy (new, dots, dotsize); + } + else + { + new = (char *)realloc ((PTR_T) dotlist, dotsize * 2 + 1); + if (new == NULL) + goto lose; + } + memcpy (&new[dotsize], new, dotsize); + dotp = &new[dotsize]; + dotsize *= 2; + new[dotsize] = '\0'; + dotlist = new; + } + + dotp -= 3; + + /* Figure out if this directory is a mount point. */ + if (stat (dotp, &st) < 0) + goto lose; + dotdev = st.st_dev; + dotino = st.st_ino; + mount_point = dotdev != thisdev; + + /* Search for the last directory. */ + dirstream = opendir (dotp); + if (dirstream == NULL) + goto lose; + while ((d = readdir (dirstream)) != NULL) + { + if (d->d_name[0] == '.' && + (d->d_name[1] == '\0' || + (d->d_name[1] == '.' && d->d_name[2] == '\0'))) + continue; +#if defined (D_FILENO_AVAILABLE) + if (mount_point || d->d_fileno == thisino) +#else + if (mount_point || _path_checkino (dotp, d->d_name, thisino)) +#endif + { + char *name; + + namlen = D_NAMLEN(d); + name = (char *) + alloca (dotlist + dotsize - dotp + 1 + namlen + 1); + memcpy (name, dotp, dotlist + dotsize - dotp); + name[dotlist + dotsize - dotp] = '/'; + memcpy (&name[dotlist + dotsize - dotp + 1], + d->d_name, namlen + 1); + if (lstat (name, &st) < 0) + { +#if 0 + int save = errno; + (void) closedir (dirstream); + errno = save; + goto lose; +#else + saved_errno = errno; +#endif + } + if (st.st_dev == thisdev && st.st_ino == thisino) + break; + } + } + if (d == NULL) + { +#if 0 + int save = errno; +#else + int save = errno ? errno : saved_errno; +#endif + (void) closedir (dirstream); + errno = save; + goto lose; + } + else + { + size_t space; + + while ((space = pathp - pathbuf) <= namlen) + { + char *new; + + if (pathbuf == path) + { + new = (char *)malloc (pathsize * 2); + if (!new) + goto lose; + } + else + { + new = (char *)realloc ((PTR_T) pathbuf, (pathsize * 2)); + if (!new) + goto lose; + pathp = new + space; + } + (void) memcpy (new + pathsize + space, pathp, pathsize - space); + pathp = new + pathsize + space; + pathbuf = new; + pathsize *= 2; + } + + pathp -= namlen; + (void) memcpy (pathp, d->d_name, namlen); + *--pathp = '/'; + (void) closedir (dirstream); + } + + thisdev = dotdev; + thisino = dotino; + } + + if (pathp == &path[sizeof(path) - 1]) + *--pathp = '/'; + + if (dotlist != dots) + free ((PTR_T) dotlist); + + { + size_t len = pathbuf + pathsize - pathp; + if (buf == NULL && size <= 0) + size = len; + + if ((size_t) size < len) + { + errno = ERANGE; + goto lose2; + } + if (buf == NULL) + { + buf = (char *) malloc (size); + if (buf == NULL) + goto lose2; + } + + (void) memcpy((PTR_T) buf, (PTR_T) pathp, len); + } + + if (pathbuf != path) + free (pathbuf); + + return (buf); + + lose: + if ((dotlist != dots) && dotlist) + { + int e = errno; + free ((PTR_T) dotlist); + errno = e; + } + + lose2: + if ((pathbuf != path) && pathbuf) + { + int e = errno; + free ((PTR_T) pathbuf); + errno = e; + } + return ((char *)NULL); +} + +#if defined (TEST) +# include +main (argc, argv) + int argc; + char **argv; +{ + char b[PATH_MAX]; + + if (getcwd(b, sizeof(b))) + { + printf ("%s\n", b); + exit (0); + } + else + { + perror ("cwd: getcwd"); + exit (1); + } +} +#endif /* TEST */ +#endif /* !HAVE_GETCWD */ diff --git a/bash-5.1/lib/sh/getenv.c b/bash-5.1/lib/sh/getenv.c new file mode 100644 index 0000000..1e682ae --- /dev/null +++ b/bash-5.1/lib/sh/getenv.c @@ -0,0 +1,233 @@ +/* getenv.c - get environment variable value from the shell's variable + list. */ + +/* Copyright (C) 1997-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 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 . +*/ + +#include + +#if defined (CAN_REDEFINE_GETENV) + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include +#include + +#ifndef errno +extern int errno; +#endif + +extern char **environ; + +/* We supply our own version of getenv () because we want library + routines to get the changed values of exported variables. */ + +/* The NeXT C library has getenv () defined and used in the same file. + This screws our scheme. However, Bash will run on the NeXT using + the C library getenv (), since right now the only environment variable + that we care about is HOME, and that is already defined. */ +static char *last_tempenv_value = (char *)NULL; + +char * +getenv (name) + const char *name; +{ + SHELL_VAR *var; + + if (name == 0 || *name == '\0') + return ((char *)NULL); + + var = find_tempenv_variable ((char *)name); + if (var) + { + FREE (last_tempenv_value); + + last_tempenv_value = value_cell (var) ? savestring (value_cell (var)) : (char *)NULL; + return (last_tempenv_value); + } + else if (shell_variables) + { + var = find_variable ((char *)name); + if (var && exported_p (var)) + return (value_cell (var)); + } + else if (environ) + { + register int i, len; + + /* In some cases, s5r3 invokes getenv() before main(); BSD systems + using gprof also exhibit this behavior. This means that + shell_variables will be 0 when this is invoked. We look up the + variable in the real environment in that case. */ + + for (i = 0, len = strlen (name); environ[i]; i++) + { + if ((STREQN (environ[i], name, len)) && (environ[i][len] == '=')) + return (environ[i] + len + 1); + } + } + + return ((char *)NULL); +} + +/* Some versions of Unix use _getenv instead. */ +char * +_getenv (name) + const char *name; +{ + return (getenv (name)); +} + +/* SUSv3 says argument is a `char *'; BSD implementations disagree */ +int +putenv (str) +#ifndef HAVE_STD_PUTENV + const char *str; +#else + char *str; +#endif +{ + SHELL_VAR *var; + char *name, *value; + int offset; + + if (str == 0 || *str == '\0') + { + errno = EINVAL; + return -1; + } + + offset = assignment (str, 0); + if (str[offset] != '=') + { + errno = EINVAL; + return -1; + } + name = savestring (str); + name[offset] = 0; + + value = name + offset + 1; + + /* XXX - should we worry about readonly here? */ + var = bind_variable (name, value, 0); + if (var == 0) + { + errno = EINVAL; + return -1; + } + + VUNSETATTR (var, att_invisible); + VSETATTR (var, att_exported); + + return 0; +} + +#if 0 +int +_putenv (name) +#ifndef HAVE_STD_PUTENV + const char *name; +#else + char *name; +#endif +{ + return putenv (name); +} +#endif + +int +setenv (name, value, rewrite) + const char *name; + const char *value; + int rewrite; +{ + SHELL_VAR *var; + char *v; + + if (name == 0 || *name == '\0' || strchr (name, '=') != 0) + { + errno = EINVAL; + return -1; + } + + var = 0; + v = (char *)value; /* some compilers need explicit cast */ + /* XXX - should we worry about readonly here? */ + if (rewrite == 0) + var = find_variable (name); + + if (var == 0) + var = bind_variable (name, v, 0); + + if (var == 0) + return -1; + + VUNSETATTR (var, att_invisible); + VSETATTR (var, att_exported); + + return 0; +} + +#if 0 +int +_setenv (name, value, rewrite) + const char *name; + const char *value; + int rewrite; +{ + return setenv (name, value, rewrite); +} +#endif + +/* SUSv3 says unsetenv returns int; existing implementations (BSD) disagree. */ + +#ifdef HAVE_STD_UNSETENV +#define UNSETENV_RETURN(N) return(N) +#define UNSETENV_RETTYPE int +#else +#define UNSETENV_RETURN(N) return +#define UNSETENV_RETTYPE void +#endif + +UNSETENV_RETTYPE +unsetenv (name) + const char *name; +{ + if (name == 0 || *name == '\0' || strchr (name, '=') != 0) + { + errno = EINVAL; + UNSETENV_RETURN(-1); + } + + /* XXX - should we just remove the export attribute here? */ +#if 1 + unbind_variable (name); +#else + SHELL_VAR *v; + + v = find_variable (name); + if (v) + VUNSETATTR (v, att_exported); +#endif + + UNSETENV_RETURN(0); +} +#endif /* CAN_REDEFINE_GETENV */ diff --git a/bash-5.1/lib/sh/gettimeofday.c b/bash-5.1/lib/sh/gettimeofday.c new file mode 100644 index 0000000..b654c15 --- /dev/null +++ b/bash-5.1/lib/sh/gettimeofday.c @@ -0,0 +1,35 @@ +/* gettimeofday.c - gettimeofday replacement using time() */ + +/* Copyright (C) 2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#if !defined (HAVE_GETTIMEOFDAY) + +#include "posixtime.h" + +/* A version of gettimeofday that just sets tv_sec from time(3) */ +int +gettimeofday (struct timeval *tv, void *tz) +{ + tv->tv_sec = (time_t) time ((time_t *)0); + tv->tv_usec = 0; + return 0; +} +#endif diff --git a/bash-5.1/lib/sh/inet_aton.c b/bash-5.1/lib/sh/inet_aton.c new file mode 100644 index 0000000..e377178 --- /dev/null +++ b/bash-5.1/lib/sh/inet_aton.c @@ -0,0 +1,214 @@ +/* inet_aton - convert string to numeric IP address */ + +/* Snagged from GNU C library, version 2.0.3. */ + +/* + * ++Copyright++ 1983, 1990, 1993 + * - + * Copyright (c) 1983, 1990, 1993 + * 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. + * - + * Portions Copyright (c) 1993 by Digital Equipment Corporation. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies, and that + * the name of Digital Equipment Corporation not be used in advertising or + * publicity pertaining to distribution of the document or software without + * specific, written prior permission. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT + * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + * - + * --Copyright-- + */ + +#if defined(LIBC_SCCS) && !defined(lint) +static char sccsid[] = "@(#)inet_addr.c 8.1 (Berkeley) 6/17/93"; +static char rcsid[] = "$Id: inet_addr.c,v 1.5 1996/08/14 03:48:37 drepper Exp $"; +#endif /* LIBC_SCCS and not lint */ + +#include + +#if !defined (HAVE_INET_ATON) && defined (HAVE_NETWORK) && defined (HAVE_NETINET_IN_H) && defined (HAVE_ARPA_INET_H) + +#include +#if defined (HAVE_SYS_PARAM_H) +#include +#endif +#include +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#include +#include +#include + +#ifndef INADDR_NONE +# define INADDR_NONE 0xffffffff +#endif + +/* these are compatibility routines, not needed on recent BSD releases */ + +#if 0 +/* Not used, not needed. */ +/* + * Ascii internet address interpretation routine. + * The value returned is in network order. + */ +u_long +inet_addr(cp) + register const char *cp; +{ + struct in_addr val; + + if (inet_aton(cp, &val)) + return (val.s_addr); + return (INADDR_NONE); +} +#endif + +/* + * Check whether "cp" is a valid ascii representation + * of an Internet address and convert to a binary address. + * Returns 1 if the address is valid, 0 if not. + * This replaces inet_addr, the return value from which + * cannot distinguish between failure and a local broadcast address. + */ +int +inet_aton(cp, addr) + register const char *cp; + struct in_addr *addr; +{ + register u_bits32_t val; + register int base, n; + register unsigned char c; + u_int parts[4]; + register u_int *pp = parts; + + c = *cp; + for (;;) { + /* + * Collect number up to ``.''. + * Values are specified as for C: + * 0x=hex, 0=octal, isdigit=decimal. + */ +#if 0 + if (!isdigit(c)) +#else + if (c != '0' && c != '1' && c != '2' && c != '3' && c != '4' && + c != '5' && c != '6' && c != '7' && c != '8' && c != '9') +#endif + return (0); + val = 0; base = 10; + if (c == '0') { + c = *++cp; + if (c == 'x' || c == 'X') + base = 16, c = *++cp; + else + base = 8; + } + for (;;) { + if (isascii(c) && isdigit(c)) { + val = (val * base) + (c - '0'); + c = *++cp; + } else if (base == 16 && isascii(c) && isxdigit(c)) { + val = (val << 4) | + (c + 10 - (islower(c) ? 'a' : 'A')); + c = *++cp; + } else + break; + } + if (c == '.') { + /* + * Internet format: + * a.b.c.d + * a.b.c (with c treated as 16 bits) + * a.b (with b treated as 24 bits) + */ + if (pp >= parts + 3) + return (0); + *pp++ = val; + c = *++cp; + } else + break; + } + /* + * Check for trailing characters. + */ + if (c != '\0' && (!isascii(c) || !isspace(c))) + return (0); + /* + * Concoct the address according to + * the number of parts specified. + */ + n = pp - parts + 1; + switch (n) { + + case 0: + return (0); /* initial nondigit */ + + case 1: /* a -- 32 bits */ + break; + + case 2: /* a.b -- 8.24 bits */ + if (val > 0xffffff) + return (0); + val |= parts[0] << 24; + break; + + case 3: /* a.b.c -- 8.8.16 bits */ + if (val > 0xffff) + return (0); + val |= (parts[0] << 24) | (parts[1] << 16); + break; + + case 4: /* a.b.c.d -- 8.8.8.8 bits */ + if (val > 0xff) + return (0); + val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8); + break; + } + if (addr) + addr->s_addr = htonl(val); + return (1); +} + +#endif /* !HAVE_INET_ATON */ diff --git a/bash-5.1/lib/sh/input_avail.c b/bash-5.1/lib/sh/input_avail.c new file mode 100644 index 0000000..695165f --- /dev/null +++ b/bash-5.1/lib/sh/input_avail.c @@ -0,0 +1,165 @@ +/* input_avail.c -- check whether or not data is available for reading on a + specified file descriptor. */ + +/* Copyright (C) 2008,2009-2019 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if defined (__TANDEM) +# include +#endif + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include +#include +#if defined (HAVE_SYS_FILE_H) +# include +#endif /* HAVE_SYS_FILE_H */ + +#if defined (HAVE_PSELECT) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif /* HAVE_UNISTD_H */ + +#include "bashansi.h" + +#include "posixselect.h" + +#if defined (FIONREAD_IN_SYS_IOCTL) +# include +#endif + +#include +#include + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#if !defined (O_NDELAY) && defined (O_NONBLOCK) +# define O_NDELAY O_NONBLOCK /* Posix style */ +#endif + +/* Return >= 1 if select/FIONREAD indicates data available for reading on + file descriptor FD; 0 if no data available. Return -1 on error. */ +int +input_avail (fd) + int fd; +{ + int result, chars_avail; +#if defined(HAVE_SELECT) + fd_set readfds, exceptfds; + struct timeval timeout; +#endif + + if (fd < 0) + return -1; + + chars_avail = 0; + +#if defined (HAVE_SELECT) + FD_ZERO (&readfds); + FD_ZERO (&exceptfds); + FD_SET (fd, &readfds); + FD_SET (fd, &exceptfds); + timeout.tv_sec = 0; + timeout.tv_usec = 0; + result = select (fd + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout); + return ((result <= 0) ? 0 : 1); +#endif + +#if defined (FIONREAD) + errno = 0; + result = ioctl (fd, FIONREAD, &chars_avail); + if (result == -1 && errno == EIO) + return -1; + return (chars_avail); +#endif + + return 0; +} + +/* Wait until NCHARS are available for reading on file descriptor FD. + This can wait indefinitely. Return -1 on error. */ +int +nchars_avail (fd, nchars) + int fd; + int nchars; +{ + int result, chars_avail; +#if defined(HAVE_SELECT) + fd_set readfds, exceptfds; +#endif +#if defined (HAVE_PSELECT) + sigset_t set, oset; +#endif + + if (fd < 0 || nchars < 0) + return -1; + if (nchars == 0) + return (input_avail (fd)); + + chars_avail = 0; + +#if defined (HAVE_SELECT) + FD_ZERO (&readfds); + FD_ZERO (&exceptfds); + FD_SET (fd, &readfds); + FD_SET (fd, &exceptfds); +#endif +#if defined (HAVE_SELECT) || defined (HAVE_PSELECT) + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set); +# ifdef SIGCHLD + sigaddset (&set, SIGCHLD); +# endif + sigemptyset (&oset); +#endif + + while (1) + { + result = 0; +#if defined (HAVE_PSELECT) + /* XXX - use pselect(2) to block SIGCHLD atomically */ + result = pselect (fd + 1, &readfds, (fd_set *)NULL, &exceptfds, (struct timespec *)NULL, &set); +#elif defined (HAVE_SELECT) + sigprocmask (SIG_BLOCK, &set, &oset); + result = select (fd + 1, &readfds, (fd_set *)NULL, &exceptfds, (struct timeval *)NULL); + sigprocmask (SIG_BLOCK, &oset, (sigset_t *)NULL); +#endif + if (result < 0) + return -1; + +#if defined (FIONREAD) + errno = 0; + result = ioctl (fd, FIONREAD, &chars_avail); + if (result == -1 && errno == EIO) + return -1; + if (chars_avail >= nchars) + break; +#else + break; +#endif + } + + return 0; +} diff --git a/bash-5.1/lib/sh/itos.c b/bash-5.1/lib/sh/itos.c new file mode 100644 index 0000000..cd36ef3 --- /dev/null +++ b/bash-5.1/lib/sh/itos.c @@ -0,0 +1,84 @@ +/* itos.c -- Convert integer to string. */ + +/* 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 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include "shell.h" + +char * +inttostr (i, buf, len) + intmax_t i; + char *buf; + size_t len; +{ + return (fmtumax (i, 10, buf, len, 0)); +} + +/* Integer to string conversion. This conses the string; the + caller should free it. */ +char * +itos (i) + intmax_t i; +{ + char *p, lbuf[INT_STRLEN_BOUND(intmax_t) + 1]; + + p = fmtumax (i, 10, lbuf, sizeof(lbuf), 0); + return (savestring (p)); +} + +/* Integer to string conversion. This conses the string using strdup; + caller should free it and be prepared to deal with NULL return. */ +char * +mitos (i) + intmax_t i; +{ + char *p, lbuf[INT_STRLEN_BOUND(intmax_t) + 1]; + + p = fmtumax (i, 10, lbuf, sizeof(lbuf), 0); + return (strdup (p)); +} + +char * +uinttostr (i, buf, len) + uintmax_t i; + char *buf; + size_t len; +{ + return (fmtumax (i, 10, buf, len, FL_UNSIGNED)); +} + +/* Integer to string conversion. This conses the string; the + caller should free it. */ +char * +uitos (i) + uintmax_t i; +{ + char *p, lbuf[INT_STRLEN_BOUND(uintmax_t) + 1]; + + p = fmtumax (i, 10, lbuf, sizeof(lbuf), FL_UNSIGNED); + return (savestring (p)); +} diff --git a/bash-5.1/lib/sh/mailstat.c b/bash-5.1/lib/sh/mailstat.c new file mode 100644 index 0000000..bd5c25f --- /dev/null +++ b/bash-5.1/lib/sh/mailstat.c @@ -0,0 +1,159 @@ +/* mailstat.c -- stat a mailbox file, handling maildir-type mail directories */ + +/* 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 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 . +*/ + +#include + +#include +#include + +#include +#include +#include +#include + +#if defined (HAVE_SYS_PARAM_H) +# include +#endif + +#include + +/* + * Stat a file. If it's a maildir, check all messages + * in the maildir and present the grand total as a file. + * The fields in the 'struct stat' are from the mail directory. + * The following fields are emulated: + * + * st_nlink always 1, unless st_blocks is not present, in which case it's + * the total number of messages + * st_size total number of bytes in all files + * st_blocks total number of messages, if present in struct stat + * st_atime access time of newest file in maildir + * st_mtime modify time of newest file in maildir + * st_mode S_IFDIR changed to S_IFREG + * + * This is good enough for most mail-checking applications. + */ + +int +mailstat(path, st) + const char *path; + struct stat *st; +{ + static struct stat st_new_last, st_ret_last; + struct stat st_ret, st_tmp; + DIR *dd; + struct dirent *fn; + char dir[PATH_MAX * 2], file[PATH_MAX * 2 + 1]; + int i, l; + time_t atime, mtime; + + atime = mtime = 0; + + /* First see if it's a directory. */ + if ((i = stat(path, st)) != 0 || S_ISDIR(st->st_mode) == 0) + return i; + + if (strlen(path) > sizeof(dir) - 5) + { +#ifdef ENAMETOOLONG + errno = ENAMETOOLONG; +#else + errno = EINVAL; +#endif + return -1; + } + + st_ret = *st; + st_ret.st_nlink = 1; + st_ret.st_size = 0; +#ifdef HAVE_STRUCT_STAT_ST_BLOCKS + st_ret.st_blocks = 0; +#else + st_ret.st_nlink = 0; +#endif + st_ret.st_mode &= ~S_IFDIR; + st_ret.st_mode |= S_IFREG; + + /* See if cur/ is present */ + sprintf(dir, "%s/cur", path); + if (stat(dir, &st_tmp) || S_ISDIR(st_tmp.st_mode) == 0) + return 0; + st_ret.st_atime = st_tmp.st_atime; + + /* See if tmp/ is present */ + sprintf(dir, "%s/tmp", path); + if (stat(dir, &st_tmp) || S_ISDIR(st_tmp.st_mode) == 0) + return 0; + st_ret.st_mtime = st_tmp.st_mtime; + + /* And new/ */ + sprintf(dir, "%s/new", path); + if (stat(dir, &st_tmp) || S_ISDIR(st_tmp.st_mode) == 0) + return 0; + st_ret.st_mtime = st_tmp.st_mtime; + + /* Optimization - if new/ didn't change, nothing else did. */ + if (st_tmp.st_dev == st_new_last.st_dev && + st_tmp.st_ino == st_new_last.st_ino && + st_tmp.st_atime == st_new_last.st_atime && + st_tmp.st_mtime == st_new_last.st_mtime) + { + *st = st_ret_last; + return 0; + } + st_new_last = st_tmp; + + /* Loop over new/ and cur/ */ + for (i = 0; i < 2; i++) + { + sprintf(dir, "%s/%s", path, i ? "cur" : "new"); + sprintf(file, "%s/", dir); + l = strlen(file); + if ((dd = opendir(dir)) == NULL) + return 0; + while ((fn = readdir(dd)) != NULL) + { + if (fn->d_name[0] == '.' || strlen(fn->d_name) + l >= sizeof(file)) + continue; + strcpy(file + l, fn->d_name); + if (stat(file, &st_tmp) != 0) + continue; + st_ret.st_size += st_tmp.st_size; +#ifdef HAVE_STRUCT_STAT_ST_BLOCKS + st_ret.st_blocks++; +#else + st_ret.st_nlink++; +#endif + if (st_tmp.st_atime != st_tmp.st_mtime && st_tmp.st_atime > atime) + atime = st_tmp.st_atime; + if (st_tmp.st_mtime > mtime) + mtime = st_tmp.st_mtime; + } + closedir(dd); + } + +/* if (atime) */ /* Set atime even if cur/ is empty */ + st_ret.st_atime = atime; + if (mtime) + st_ret.st_mtime = mtime; + + *st = st_ret_last = st_ret; + return 0; +} diff --git a/bash-5.1/lib/sh/makepath.c b/bash-5.1/lib/sh/makepath.c new file mode 100644 index 0000000..ab46c96 --- /dev/null +++ b/bash-5.1/lib/sh/makepath.c @@ -0,0 +1,128 @@ +/* makepath.c - glue PATH and DIR together into a full pathname. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include "shell.h" + +#include + +#ifndef NULL +# define NULL 0 +#endif + +/* MAKE SURE THESE AGREE WITH ../../externs.h. */ + +#ifndef MP_DOTILDE +# define MP_DOTILDE 0x01 +# define MP_DOCWD 0x02 +# define MP_RMDOT 0x04 +# define MP_IGNDOT 0x08 +#endif + +extern char *get_working_directory PARAMS((char *)); + +static char *nullpath = ""; + +/* Take PATH, an element from, e.g., $CDPATH, and DIR, a directory name, + and paste them together into PATH/DIR. Tilde expansion is performed on + PATH if (flags & MP_DOTILDE) is non-zero. If PATH is NULL or the empty + string, it is converted to the current directory. A full pathname is + used if (flags & MP_DOCWD) is non-zero, otherwise `./' is used. If + (flags & MP_RMDOT) is non-zero, any `./' is removed from the beginning + of DIR. If (flags & MP_IGNDOT) is non-zero, a PATH that is "." or "./" + is ignored. */ + +#define MAKEDOT() \ + do { \ + xpath = (char *)xmalloc (2); \ + xpath[0] = '.'; \ + xpath[1] = '\0'; \ + pathlen = 1; \ + } while (0) + +char * +sh_makepath (path, dir, flags) + const char *path, *dir; + int flags; +{ + int dirlen, pathlen; + char *ret, *xpath, *xdir, *r, *s; + + if (path == 0 || *path == '\0') + { + if (flags & MP_DOCWD) + { + xpath = get_working_directory ("sh_makepath"); + if (xpath == 0) + { + ret = get_string_value ("PWD"); + if (ret) + xpath = savestring (ret); + } + if (xpath == 0) + MAKEDOT(); + else + pathlen = strlen (xpath); + } + else + MAKEDOT(); + } + else if ((flags & MP_IGNDOT) && path[0] == '.' && (path[1] == '\0' || + (path[1] == '/' && path[2] == '\0'))) + { + xpath = nullpath; + pathlen = 0; + } + else + { + xpath = ((flags & MP_DOTILDE) && *path == '~') ? bash_tilde_expand (path, 0) : (char *)path; + pathlen = strlen (xpath); + } + + xdir = (char *)dir; + dirlen = strlen (xdir); + if ((flags & MP_RMDOT) && dir[0] == '.' && dir[1] == '/') + { + xdir += 2; + dirlen -= 2; + } + + r = ret = (char *)xmalloc (2 + dirlen + pathlen); + s = xpath; + while (*s) + *r++ = *s++; + if (s > xpath && s[-1] != '/') + *r++ = '/'; + s = xdir; + while (*r++ = *s++) + ; + if (xpath != path && xpath != nullpath) + free (xpath); + return (ret); +} diff --git a/bash-5.1/lib/sh/mbscasecmp.c b/bash-5.1/lib/sh/mbscasecmp.c new file mode 100644 index 0000000..0ab9560 --- /dev/null +++ b/bash-5.1/lib/sh/mbscasecmp.c @@ -0,0 +1,79 @@ +/* mbscasecmp - case-insensitive multibyte string comparison. */ + +/* Copyright (C) 2009-2015 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if !defined (HAVE_MBSCASECMP) && defined (HANDLE_MULTIBYTE) + +#include +#include +#include + +#include +#include + +/* Compare MBS1 and MBS2 without regard to case. */ +int +mbscasecmp (mbs1, mbs2) + const char *mbs1; + const char *mbs2; +{ + int len1, len2, mb_cur_max; + wchar_t c1, c2, l1, l2; + + len1 = len2 = 0; + /* Reset multibyte characters to their initial state. */ + (void) mblen ((char *) NULL, 0); + + mb_cur_max = MB_CUR_MAX; + do + { + len1 = mbtowc (&c1, mbs1, mb_cur_max); + len2 = mbtowc (&c2, mbs2, mb_cur_max); + + if (len1 == 0) + return len2 == 0 ? 0 : -1; + else if (len2 == 0) + return 1; + else if (len1 > 0 && len2 < 0) + return -1; + else if (len1 < 0 && len2 > 0) + return 1; + else if (len1 < 0 && len2 < 0) + { + len1 = strlen (mbs1); + len2 = strlen (mbs2); + return (len1 == len2 ? memcmp (mbs1, mbs2, len1) + : ((len1 < len2) ? (memcmp (mbs1, mbs2, len1) > 0 ? 1 : -1) + : (memcmp (mbs1, mbs2, len2) >= 0 ? 1 : -1))); + } + + l1 = towlower (c1); + l2 = towlower (c2); + + mbs1 += len1; + mbs2 += len2; + } + while (l1 == l2); + + return l1 - l2; +} + +#endif diff --git a/bash-5.1/lib/sh/mbschr.c b/bash-5.1/lib/sh/mbschr.c new file mode 100644 index 0000000..639962d --- /dev/null +++ b/bash-5.1/lib/sh/mbschr.c @@ -0,0 +1,91 @@ +/* mbschr.c - strchr(3) that handles multibyte characters. */ + +/* 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 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 . +*/ + +#include + +#ifdef HAVE_STDLIB_H +# include +#endif + +#include "bashansi.h" +#include "shmbutil.h" + +extern int locale_mb_cur_max; +extern int locale_utf8locale; + +#undef mbschr + +extern char *utf8_mbschr (const char *, int); /* XXX */ + +/* In some locales, the non-first byte of some multibyte characters have + the same value as some ascii character. Faced with these strings, a + legacy strchr() might return the wrong value. */ + +char * +#if defined (PROTOTYPES) +mbschr (const char *s, int c) +#else +mbschr (s, c) + const char *s; + int c; +#endif +{ +#if HANDLE_MULTIBYTE + char *pos; + mbstate_t state; + size_t strlength, mblength; + + if (locale_utf8locale && c < 0x80) + return (utf8_mbschr (s, c)); /* XXX */ + + /* The locale encodings with said weird property are BIG5, BIG5-HKSCS, + GBK, GB18030, SHIFT_JIS, and JOHAB. They exhibit the problem only + when c >= 0x30. We can therefore use the faster bytewise search if + c <= 0x30. */ + if ((unsigned char)c >= '0' && locale_mb_cur_max > 1) + { + pos = (char *)s; + memset (&state, '\0', sizeof(mbstate_t)); + strlength = strlen (s); + + while (strlength > 0) + { + if (is_basic (*pos)) + mblength = 1; + else + { + mblength = mbrlen (pos, strlength, &state); + if (mblength == (size_t)-2 || mblength == (size_t)-1 || mblength == (size_t)0) + mblength = 1; + } + + if (mblength == 1 && c == (unsigned char)*pos) + return pos; + + strlength -= mblength; + pos += mblength; + } + + return ((char *)NULL); + } + else +#endif + return (strchr (s, c)); +} diff --git a/bash-5.1/lib/sh/mbscmp.c b/bash-5.1/lib/sh/mbscmp.c new file mode 100644 index 0000000..c7c8443 --- /dev/null +++ b/bash-5.1/lib/sh/mbscmp.c @@ -0,0 +1,77 @@ +/* mbscmp - multibyte string comparison. */ + +/* Copyright (C) 1995-2018 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if !defined (HAVE_MBSCMP) && defined (HANDLE_MULTIBYTE) + +#include +#include +#include + +extern int locale_utf8locale; + +extern int utf8_mbscmp (const char *, const char *); + +/* Compare MBS1 and MBS2. */ +int +mbscmp (mbs1, mbs2) + const char *mbs1; + const char *mbs2; +{ + int len1, len2, mb_cur_max; + wchar_t c1, c2; + + len1 = len2 = 0; + /* Reset multibyte characters to their initial state. */ + (void) mblen ((char *) NULL, 0); + + mb_cur_max = MB_CUR_MAX; + do + { + len1 = mbtowc (&c1, mbs1, mb_cur_max); + len2 = mbtowc (&c2, mbs2, mb_cur_max); + + if (len1 == 0) + return len2 == 0 ? 0 : -1; + else if (len2 == 0) + return 1; + else if (len1 > 0 && len2 < 0) + return -1; + else if (len1 < 0 && len2 > 0) + return 1; + else if (len1 < 0 && len2 < 0) + { + len1 = strlen (mbs1); + len2 = strlen (mbs2); + return (len1 == len2 ? memcmp (mbs1, mbs2, len1) + : ((len1 < len2) ? (memcmp (mbs1, mbs2, len1) > 0 ? 1 : -1) + : (memcmp (mbs1, mbs2, len2) >= 0 ? 1 : -1))); + } + + mbs1 += len1; + mbs2 += len2; + } + while (c1 == c2); + + return c1 - c2; +} + +#endif diff --git a/bash-5.1/lib/sh/memset.c b/bash-5.1/lib/sh/memset.c new file mode 100644 index 0000000..4ebc418 --- /dev/null +++ b/bash-5.1/lib/sh/memset.c @@ -0,0 +1,29 @@ +/* memset.c -- set an area of memory to a given value */ + +/* 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 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 . +*/ + +char * +memset (char *str, int c, unsigned int len) +{ + register char *st = str; + + while (len-- > 0) + *st++ = c; + return str; +} diff --git a/bash-5.1/lib/sh/mktime.c b/bash-5.1/lib/sh/mktime.c new file mode 100644 index 0000000..9ee675b --- /dev/null +++ b/bash-5.1/lib/sh/mktime.c @@ -0,0 +1,438 @@ +/* mktime - convert struct tm to a time_t value */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + Contributed by Paul Eggert (eggert@twinsun.com). + + 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 . +*/ +/* Define this to have a standalone program to test this implementation of + mktime. */ +/* #define DEBUG 1 */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef _LIBC +# define HAVE_LIMITS_H 1 +# define HAVE_LOCALTIME_R 1 +# define STDC_HEADERS 1 +#endif + +/* Assume that leap seconds are possible, unless told otherwise. + If the host has a `zic' command with a `-L leapsecondfilename' option, + then it supports leap seconds; otherwise it probably doesn't. */ +#ifndef LEAP_SECONDS_POSSIBLE +#define LEAP_SECONDS_POSSIBLE 1 +#endif + +#ifndef VMS +#include /* Some systems define `time_t' here. */ +#endif +#include + +#if HAVE_LIMITS_H +#include +#endif + +#include "bashansi.h" + +#if DEBUG_MKTIME +#include +/* Make it work even if the system's libc has its own mktime routine. */ +#define mktime my_mktime +#endif /* DEBUG_MKTIME */ + +#ifndef PARAMS +#if defined (__GNUC__) || (defined (__STDC__) && __STDC__) +#define PARAMS(args) args +#else +#define PARAMS(args) () +#endif /* GCC. */ +#endif /* Not PARAMS. */ + +#ifndef CHAR_BIT +#define CHAR_BIT 8 +#endif + +#ifndef INT_MIN +#define INT_MIN (~0 << (sizeof (int) * CHAR_BIT - 1)) +#endif +#ifndef INT_MAX +#define INT_MAX (~0 - INT_MIN) +#endif + +/* True if the arithmetic type T is signed. */ +#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* The maximum and minimum values for the integer type T. These + macros have undefined behavior if T is signed and has padding bits. + If this is a problem for you, please let us know how to fix it for + your host. */ +#define TYPE_MINIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) 0 \ + : ~ TYPE_MAXIMUM (t))) +#define TYPE_MAXIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) -1 \ + : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) + +#ifndef TIME_T_MIN +# define TIME_T_MIN TYPE_MINIMUM (time_t) +#endif +#ifndef TIME_T_MAX +# define TIME_T_MAX TYPE_MAXIMUM (time_t) +#endif + +#define TM_YEAR_BASE 1900 +#define EPOCH_YEAR 1970 + +#ifndef __isleap +/* Nonzero if YEAR is a leap year (every 4 years, + except every 100th isn't, and every 400th is). */ +#define __isleap(year) \ + ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) +#endif + +/* How many days come before each month (0-12). */ +const unsigned short int __mon_yday[2][13] = + { + /* Normal years. */ + { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }, + /* Leap years. */ + { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 } + }; + +static time_t ydhms_tm_diff PARAMS ((int, int, int, int, int, const struct tm *)); +time_t __mktime_internal PARAMS ((struct tm *, + struct tm *(*) (const time_t *, struct tm *), + time_t *)); + + +static struct tm *my_localtime_r PARAMS ((const time_t *, struct tm *)); +static struct tm * +my_localtime_r (t, tp) + const time_t *t; + struct tm *tp; +{ + struct tm *l = localtime (t); + if (! l) + return 0; + *tp = *l; + return tp; +} + + +/* Yield the difference between (YEAR-YDAY HOUR:MIN:SEC) and (*TP), + measured in seconds, ignoring leap seconds. + YEAR uses the same numbering as TM->tm_year. + All values are in range, except possibly YEAR. + If overflow occurs, yield the low order bits of the correct answer. */ +static time_t +ydhms_tm_diff (year, yday, hour, min, sec, tp) + int year, yday, hour, min, sec; + const struct tm *tp; +{ + /* Compute intervening leap days correctly even if year is negative. + Take care to avoid int overflow. time_t overflow is OK, since + only the low order bits of the correct time_t answer are needed. + Don't convert to time_t until after all divisions are done, since + time_t might be unsigned. */ + int a4 = (year >> 2) + (TM_YEAR_BASE >> 2) - ! (year & 3); + int b4 = (tp->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (tp->tm_year & 3); + int a100 = a4 / 25 - (a4 % 25 < 0); + int b100 = b4 / 25 - (b4 % 25 < 0); + int a400 = a100 >> 2; + int b400 = b100 >> 2; + int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); + time_t years = year - (time_t) tp->tm_year; + time_t days = (365 * years + intervening_leap_days + + (yday - tp->tm_yday)); + return (60 * (60 * (24 * days + (hour - tp->tm_hour)) + + (min - tp->tm_min)) + + (sec - tp->tm_sec)); +} + + +static time_t localtime_offset; + +/* Convert *TP to a time_t value. */ +time_t +mktime (tp) + struct tm *tp; +{ +#ifdef _LIBC + /* POSIX.1 8.1.1 requires that whenever mktime() is called, the + time zone names contained in the external variable `tzname' shall + be set as if the tzset() function had been called. */ + __tzset (); +#endif + + return __mktime_internal (tp, my_localtime_r, &localtime_offset); +} + +/* Convert *TP to a time_t value, inverting + the monotonic and mostly-unit-linear conversion function CONVERT. + Use *OFFSET to keep track of a guess at the offset of the result, + compared to what the result would be for UTC without leap seconds. + If *OFFSET's guess is correct, only one CONVERT call is needed. */ +time_t +__mktime_internal (tp, convert, offset) + struct tm *tp; + struct tm *(*convert) PARAMS ((const time_t *, struct tm *)); + time_t *offset; +{ + time_t t, dt, t0; + struct tm tm; + + /* The maximum number of probes (calls to CONVERT) should be enough + to handle any combinations of time zone rule changes, solar time, + and leap seconds. Posix.1 prohibits leap seconds, but some hosts + have them anyway. */ + int remaining_probes = 4; + + /* Time requested. Copy it in case CONVERT modifies *TP; this can + occur if TP is localtime's returned value and CONVERT is localtime. */ + int sec = tp->tm_sec; + int min = tp->tm_min; + int hour = tp->tm_hour; + int mday = tp->tm_mday; + int mon = tp->tm_mon; + int year_requested = tp->tm_year; + int isdst = tp->tm_isdst; + + /* Ensure that mon is in range, and set year accordingly. */ + int mon_remainder = mon % 12; + int negative_mon_remainder = mon_remainder < 0; + int mon_years = mon / 12 - negative_mon_remainder; + int year = year_requested + mon_years; + + /* The other values need not be in range: + the remaining code handles minor overflows correctly, + assuming int and time_t arithmetic wraps around. + Major overflows are caught at the end. */ + + /* Calculate day of year from year, month, and day of month. + The result need not be in range. */ + int yday = ((__mon_yday[__isleap (year + TM_YEAR_BASE)] + [mon_remainder + 12 * negative_mon_remainder]) + + mday - 1); + +#if LEAP_SECONDS_POSSIBLE + /* Handle out-of-range seconds specially, + since ydhms_tm_diff assumes every minute has 60 seconds. */ + int sec_requested = sec; + if (sec < 0) + sec = 0; + if (59 < sec) + sec = 59; +#endif + + /* Invert CONVERT by probing. First assume the same offset as last time. + Then repeatedly use the error to improve the guess. */ + + tm.tm_year = EPOCH_YEAR - TM_YEAR_BASE; + tm.tm_yday = tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + t0 = ydhms_tm_diff (year, yday, hour, min, sec, &tm); + + for (t = t0 + *offset; + (dt = ydhms_tm_diff (year, yday, hour, min, sec, (*convert) (&t, &tm))); + t += dt) + if (--remaining_probes == 0) + return -1; + + /* Check whether tm.tm_isdst has the requested value, if any. */ + if (0 <= isdst && 0 <= tm.tm_isdst) + { + int dst_diff = (isdst != 0) - (tm.tm_isdst != 0); + if (dst_diff) + { + /* Move two hours in the direction indicated by the disagreement, + probe some more, and switch to a new time if found. + The largest known fallback due to daylight savings is two hours: + once, in Newfoundland, 1988-10-30 02:00 -> 00:00. */ + time_t ot = t - 2 * 60 * 60 * dst_diff; + while (--remaining_probes != 0) + { + struct tm otm; + if (! (dt = ydhms_tm_diff (year, yday, hour, min, sec, + (*convert) (&ot, &otm)))) + { + t = ot; + tm = otm; + break; + } + if ((ot += dt) == t) + break; /* Avoid a redundant probe. */ + } + } + } + + *offset = t - t0; + +#if LEAP_SECONDS_POSSIBLE + if (sec_requested != tm.tm_sec) + { + /* Adjust time to reflect the tm_sec requested, not the normalized value. + Also, repair any damage from a false match due to a leap second. */ + t += sec_requested - sec + (sec == 0 && tm.tm_sec == 60); + (*convert) (&t, &tm); + } +#endif + + if (TIME_T_MAX / INT_MAX / 366 / 24 / 60 / 60 < 3) + { + /* time_t isn't large enough to rule out overflows in ydhms_tm_diff, + so check for major overflows. A gross check suffices, + since if t has overflowed, it is off by a multiple of + TIME_T_MAX - TIME_T_MIN + 1. So ignore any component of + the difference that is bounded by a small value. */ + + double dyear = (double) year_requested + mon_years - tm.tm_year; + double dday = 366 * dyear + mday; + double dsec = 60 * (60 * (24 * dday + hour) + min) + sec_requested; + + if (TIME_T_MAX / 3 - TIME_T_MIN / 3 < (dsec < 0 ? - dsec : dsec)) + return -1; + } + + *tp = tm; + return t; +} + +#ifdef weak_alias +weak_alias (mktime, timelocal) +#endif + +#if DEBUG_MKTIME + +static int +not_equal_tm (a, b) + struct tm *a; + struct tm *b; +{ + return ((a->tm_sec ^ b->tm_sec) + | (a->tm_min ^ b->tm_min) + | (a->tm_hour ^ b->tm_hour) + | (a->tm_mday ^ b->tm_mday) + | (a->tm_mon ^ b->tm_mon) + | (a->tm_year ^ b->tm_year) + | (a->tm_mday ^ b->tm_mday) + | (a->tm_yday ^ b->tm_yday) + | (a->tm_isdst ^ b->tm_isdst)); +} + +static void +print_tm (tp) + struct tm *tp; +{ + printf ("%04d-%02d-%02d %02d:%02d:%02d yday %03d wday %d isdst %d", + tp->tm_year + TM_YEAR_BASE, tp->tm_mon + 1, tp->tm_mday, + tp->tm_hour, tp->tm_min, tp->tm_sec, + tp->tm_yday, tp->tm_wday, tp->tm_isdst); +} + +static int +check_result (tk, tmk, tl, tml) + time_t tk; + struct tm tmk; + time_t tl; + struct tm tml; +{ + if (tk != tl || not_equal_tm (&tmk, &tml)) + { + printf ("mktime ("); + print_tm (&tmk); + printf (")\nyields ("); + print_tm (&tml); + printf (") == %ld, should be %ld\n", (long) tl, (long) tk); + return 1; + } + + return 0; +} + +int +main (argc, argv) + int argc; + char **argv; +{ + int status = 0; + struct tm tm, tmk, tml; + time_t tk, tl; + char trailer; + + if ((argc == 3 || argc == 4) + && (sscanf (argv[1], "%d-%d-%d%c", + &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &trailer) + == 3) + && (sscanf (argv[2], "%d:%d:%d%c", + &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &trailer) + == 3)) + { + tm.tm_year -= TM_YEAR_BASE; + tm.tm_mon--; + tm.tm_isdst = argc == 3 ? -1 : atoi (argv[3]); + tmk = tm; + tl = mktime (&tmk); + tml = *localtime (&tl); + printf ("mktime returns %ld == ", (long) tl); + print_tm (&tmk); + printf ("\n"); + status = check_result (tl, tmk, tl, tml); + } + else if (argc == 4 || (argc == 5 && strcmp (argv[4], "-") == 0)) + { + time_t from = atol (argv[1]); + time_t by = atol (argv[2]); + time_t to = atol (argv[3]); + + if (argc == 4) + for (tl = from; tl <= to; tl += by) + { + tml = *localtime (&tl); + tmk = tml; + tk = mktime (&tmk); + status |= check_result (tk, tmk, tl, tml); + } + else + for (tl = from; tl <= to; tl += by) + { + /* Null benchmark. */ + tml = *localtime (&tl); + tmk = tml; + tk = tl; + status |= check_result (tk, tmk, tl, tml); + } + } + else + printf ("Usage:\ +\t%s YYYY-MM-DD HH:MM:SS [ISDST] # Test given time.\n\ +\t%s FROM BY TO # Test values FROM, FROM+BY, ..., TO.\n\ +\t%s FROM BY TO - # Do not test those values (for benchmark).\n", + argv[0], argv[0], argv[0]); + + return status; +} + +#endif /* DEBUG_MKTIME */ + +/* +Local Variables: +compile-command: "gcc -DDEBUG=1 -Wall -O -g mktime.c -o mktime" +End: +*/ diff --git a/bash-5.1/lib/sh/netconn.c b/bash-5.1/lib/sh/netconn.c new file mode 100644 index 0000000..e20f104 --- /dev/null +++ b/bash-5.1/lib/sh/netconn.c @@ -0,0 +1,82 @@ +/* netconn.c -- is a particular file descriptor a network connection?. */ + +/* Copyright (C) 2002-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 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 . +*/ + +#include + +#include +#if ! defined(_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif +#include +#include + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +/* The second and subsequent conditions must match those used to decide + whether or not to call getpeername() in isnetconn(). */ +#if defined (HAVE_SYS_SOCKET_H) && defined (HAVE_GETPEERNAME) && !defined (SVR4_2) +# include +#endif + +/* Is FD a socket or network connection? */ +int +isnetconn (fd) + int fd; +{ +#if defined (HAVE_SYS_SOCKET_H) && defined (HAVE_GETPEERNAME) && !defined (SVR4_2) && !defined (__BEOS__) + int rv; + socklen_t l; + struct sockaddr sa; + + l = sizeof(sa); + rv = getpeername(fd, &sa, &l); + /* Posix.2 says getpeername can return these errors. */ + return ((rv < 0 && (errno == ENOTSOCK || errno == ENOTCONN || errno == EINVAL || errno == EBADF)) ? 0 : 1); +#else /* !HAVE_GETPEERNAME || SVR4_2 || __BEOS__ */ +# if defined (SVR4) || defined (SVR4_2) + /* Sockets on SVR4 and SVR4.2 are character special (streams) devices. */ + struct stat sb; + + if (isatty (fd)) + return (0); + if (fstat (fd, &sb) < 0) + return (0); +# if defined (S_ISFIFO) + if (S_ISFIFO (sb.st_mode)) + return (0); +# endif /* S_ISFIFO */ + return (S_ISCHR (sb.st_mode)); +# else /* !SVR4 && !SVR4_2 */ +# if defined (S_ISSOCK) && !defined (__BEOS__) + struct stat sb; + + if (fstat (fd, &sb) < 0) + return (0); + return (S_ISSOCK (sb.st_mode)); +# else /* !S_ISSOCK || __BEOS__ */ + return (0); +# endif /* !S_ISSOCK || __BEOS__ */ +# endif /* !SVR4 && !SVR4_2 */ +#endif /* !HAVE_GETPEERNAME || SVR4_2 || __BEOS__ */ +} diff --git a/bash-5.1/lib/sh/netopen.c b/bash-5.1/lib/sh/netopen.c new file mode 100644 index 0000000..ee0baf6 --- /dev/null +++ b/bash-5.1/lib/sh/netopen.c @@ -0,0 +1,351 @@ +/* + * netopen.c -- functions to make tcp/udp connections + * + * Chet Ramey + * chet@ins.CWRU.Edu + */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HAVE_NETWORK) + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include + +#if defined (HAVE_SYS_SOCKET_H) +# include +#endif + +#if defined (HAVE_NETINET_IN_H) +# include +#endif + +#if defined (HAVE_NETDB_H) +# include +#endif + +#if defined (HAVE_ARPA_INET_H) +# include +#endif + +#include +#include + +#include + +#include +#include + +#ifndef errno +extern int errno; +#endif + +#if !defined (HAVE_INET_ATON) +extern int inet_aton PARAMS((const char *, struct in_addr *)); +#endif + +#ifndef HAVE_GETADDRINFO +static int _getaddr PARAMS((char *, struct in_addr *)); +static int _getserv PARAMS((char *, int, unsigned short *)); +static int _netopen4 PARAMS((char *, char *, int)); +#else /* HAVE_GETADDRINFO */ +static int _netopen6 PARAMS((char *, char *, int)); +#endif + +static int _netopen PARAMS((char *, char *, int)); + +#ifndef HAVE_GETADDRINFO +/* Stuff the internet address corresponding to HOST into AP, in network + byte order. Return 1 on success, 0 on failure. */ + +static int +_getaddr (host, ap) + char *host; + struct in_addr *ap; +{ + struct hostent *h; + int r; + + r = 0; + if (host[0] >= '0' && host[0] <= '9') + { + /* If the first character is a digit, guess that it's an + Internet address and return immediately if inet_aton succeeds. */ + r = inet_aton (host, ap); + if (r) + return r; + } +#if !defined (HAVE_GETHOSTBYNAME) + return 0; +#else + h = gethostbyname (host); + if (h && h->h_addr) + { + bcopy(h->h_addr, (char *)ap, h->h_length); + return 1; + } +#endif + return 0; + +} + +/* Return 1 if SERV is a valid port number and stuff the converted value into + PP in network byte order. */ +static int +_getserv (serv, proto, pp) + char *serv; + int proto; + unsigned short *pp; +{ + intmax_t l; + unsigned short s; + + if (legal_number (serv, &l)) + { + s = (unsigned short)(l & 0xFFFF); + if (s != l) + return (0); + s = htons (s); + if (pp) + *pp = s; + return 1; + } + else +#if defined (HAVE_GETSERVBYNAME) + { + struct servent *se; + + se = getservbyname (serv, (proto == 't') ? "tcp" : "udp"); + if (se == 0) + return 0; + if (pp) + *pp = se->s_port; /* ports returned in network byte order */ + return 1; + } +#else /* !HAVE_GETSERVBYNAME */ + return 0; +#endif /* !HAVE_GETSERVBYNAME */ +} + +/* + * Open a TCP or UDP connection to HOST on port SERV. Uses the + * traditional BSD mechanisms. Returns the connected socket or -1 on error. + */ +static int +_netopen4(host, serv, typ) + char *host, *serv; + int typ; +{ + struct in_addr ina; + struct sockaddr_in sin; + unsigned short p; + int s, e; + + if (_getaddr(host, &ina) == 0) + { + internal_error (_("%s: host unknown"), host); + errno = EINVAL; + return -1; + } + + if (_getserv(serv, typ, &p) == 0) + { + internal_error(_("%s: invalid service"), serv); + errno = EINVAL; + return -1; + } + + memset ((char *)&sin, 0, sizeof(sin)); + sin.sin_family = AF_INET; + sin.sin_port = p; + sin.sin_addr = ina; + + s = socket(AF_INET, (typ == 't') ? SOCK_STREAM : SOCK_DGRAM, 0); + if (s < 0) + { + sys_error ("socket"); + return (-1); + } + + if (connect (s, (struct sockaddr *)&sin, sizeof (sin)) < 0) + { + e = errno; + sys_error("connect"); + close(s); + errno = e; + return (-1); + } + + return(s); +} +#endif /* ! HAVE_GETADDRINFO */ + +#ifdef HAVE_GETADDRINFO +/* + * Open a TCP or UDP connection to HOST on port SERV. Uses getaddrinfo(3) + * which provides support for IPv6. Returns the connected socket or -1 + * on error. + */ +static int +_netopen6 (host, serv, typ) + char *host, *serv; + int typ; +{ + int s, e; + struct addrinfo hints, *res, *res0; + int gerr; + + memset ((char *)&hints, 0, sizeof (hints)); + /* XXX -- if problems with IPv6, set to PF_INET for IPv4 only */ +#ifdef DEBUG /* PF_INET is the one that works for me */ + hints.ai_family = PF_INET; +#else + hints.ai_family = PF_UNSPEC; +#endif + hints.ai_socktype = (typ == 't') ? SOCK_STREAM : SOCK_DGRAM; + + gerr = getaddrinfo (host, serv, &hints, &res0); + if (gerr) + { + if (gerr == EAI_SERVICE) + internal_error ("%s: %s", serv, gai_strerror (gerr)); + else + internal_error ("%s: %s", host, gai_strerror (gerr)); + errno = EINVAL; + return -1; + } + + for (res = res0; res; res = res->ai_next) + { + if ((s = socket (res->ai_family, res->ai_socktype, res->ai_protocol)) < 0) + { + if (res->ai_next) + continue; + sys_error ("socket"); + freeaddrinfo (res0); + return -1; + } + if (connect (s, res->ai_addr, res->ai_addrlen) < 0) + { + if (res->ai_next) + { + close (s); + continue; + } + e = errno; + sys_error ("connect"); + close (s); + freeaddrinfo (res0); + errno = e; + return -1; + } + freeaddrinfo (res0); + break; + } + return s; +} +#endif /* HAVE_GETADDRINFO */ + +/* + * Open a TCP or UDP connection to HOST on port SERV. Uses getaddrinfo(3) + * if available, falling back to the traditional BSD mechanisms otherwise. + * Returns the connected socket or -1 on error. + */ +static int +_netopen(host, serv, typ) + char *host, *serv; + int typ; +{ +#ifdef HAVE_GETADDRINFO + return (_netopen6 (host, serv, typ)); +#else + return (_netopen4 (host, serv, typ)); +#endif +} + +/* + * Open a TCP or UDP connection given a path like `/dev/tcp/host/port' to + * host `host' on port `port' and return the connected socket. + */ +int +netopen (path) + char *path; +{ + char *np, *s, *t; + int fd; + + np = (char *)xmalloc (strlen (path) + 1); + strcpy (np, path); + + s = np + 9; + t = strchr (s, '/'); + if (t == 0) + { + internal_error (_("%s: bad network path specification"), path); + free (np); + return -1; + } + *t++ = '\0'; + fd = _netopen (s, t, path[5]); + free (np); + + return fd; +} + +#if 0 +/* + * Open a TCP connection to host `host' on the port defined for service + * `serv' and return the connected socket. + */ +int +tcpopen (host, serv) + char *host, *serv; +{ + return (_netopen (host, serv, 't')); +} + +/* + * Open a UDP connection to host `host' on the port defined for service + * `serv' and return the connected socket. + */ +int +udpopen (host, serv) + char *host, *serv; +{ + return _netopen (host, serv, 'u'); +} +#endif + +#else /* !HAVE_NETWORK */ + +int +netopen (path) + char *path; +{ + internal_error (_("network operations not supported")); + return -1; +} + +#endif /* !HAVE_NETWORK */ diff --git a/bash-5.1/lib/sh/oslib.c b/bash-5.1/lib/sh/oslib.c new file mode 100644 index 0000000..65eb99d --- /dev/null +++ b/bash-5.1/lib/sh/oslib.c @@ -0,0 +1,301 @@ +/* oslib.c - functions present only in some unix versions. */ + +/* Copyright (C) 1995,2010 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include +#if defined (HAVE_SYS_PARAM_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (HAVE_LIMITS_H) +# include +#endif + +#include +#include +#include + +#if !defined (HAVE_KILLPG) +# include +#endif + +#include +#include +#include + +#include + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +/* Make the functions strchr and strrchr if they do not exist. */ +#if !defined (HAVE_STRCHR) +char * +strchr (string, c) + char *string; + int c; +{ + register char *s; + + for (s = string; s && *s; s++) + if (*s == c) + return (s); + + return ((char *) NULL); +} + +char * +strrchr (string, c) + char *string; + int c; +{ + register char *s, *t; + + for (s = string, t = (char *)NULL; s && *s; s++) + if (*s == c) + t = s; + return (t); +} +#endif /* !HAVE_STRCHR */ + +#if !defined (HAVE_DUP2) || defined (DUP2_BROKEN) +/* Replacement for dup2 (), for those systems which either don't have it, + or supply one with broken behaviour. */ +int +dup2 (fd1, fd2) + int fd1, fd2; +{ + int saved_errno, r; + + /* If FD1 is not a valid file descriptor, then return immediately with + an error. */ + if (fcntl (fd1, F_GETFL, 0) == -1) + return (-1); + + if (fd2 < 0 || fd2 >= getdtablesize ()) + { + errno = EBADF; + return (-1); + } + + if (fd1 == fd2) + return (0); + + saved_errno = errno; + + (void) close (fd2); + r = fcntl (fd1, F_DUPFD, fd2); + + if (r >= 0) + errno = saved_errno; + else + if (errno == EINVAL) + errno = EBADF; + + /* Force the new file descriptor to remain open across exec () calls. */ + SET_OPEN_ON_EXEC (fd2); + return (r); +} +#endif /* !HAVE_DUP2 */ + +/* + * Return the total number of available file descriptors. + * + * On some systems, like 4.2BSD and its descendants, there is a system call + * that returns the size of the descriptor table: getdtablesize(). There are + * lots of ways to emulate this on non-BSD systems. + * + * On System V.3, this can be obtained via a call to ulimit: + * return (ulimit(4, 0L)); + * + * On other System V systems, NOFILE is defined in /usr/include/sys/param.h + * (this is what we assume below), so we can simply use it: + * return (NOFILE); + * + * On POSIX systems, there are specific functions for retrieving various + * configuration parameters: + * return (sysconf(_SC_OPEN_MAX)); + * + */ + +#if !defined (HAVE_GETDTABLESIZE) +int +getdtablesize () +{ +# if defined (_POSIX_VERSION) && defined (HAVE_SYSCONF) && defined (_SC_OPEN_MAX) + return (sysconf(_SC_OPEN_MAX)); /* Posix systems use sysconf */ +# else /* ! (_POSIX_VERSION && HAVE_SYSCONF && _SC_OPEN_MAX) */ +# if defined (ULIMIT_MAXFDS) + return (ulimit (4, 0L)); /* System V.3 systems use ulimit(4, 0L) */ +# else /* !ULIMIT_MAXFDS */ +# if defined (NOFILE) /* Other systems use NOFILE */ + return (NOFILE); +# else /* !NOFILE */ + return (20); /* XXX - traditional value is 20 */ +# endif /* !NOFILE */ +# endif /* !ULIMIT_MAXFDS */ +# endif /* ! (_POSIX_VERSION && _SC_OPEN_MAX) */ +} +#endif /* !HAVE_GETDTABLESIZE */ + +#if !defined (HAVE_BCOPY) +# if defined (bcopy) +# undef bcopy +# endif +void +bcopy (s,d,n) + char *d, *s; + int n; +{ + FASTCOPY (s, d, n); +} +#endif /* !HAVE_BCOPY */ + +#if !defined (HAVE_BZERO) +# if defined (bzero) +# undef bzero +# endif +void +bzero (s, n) + char *s; + int n; +{ + register int i; + register char *r; + + for (i = 0, r = s; i < n; i++) + *r++ = '\0'; +} +#endif + +#if !defined (HAVE_GETHOSTNAME) +# if defined (HAVE_UNAME) +# include +int +gethostname (name, namelen) + char *name; + int namelen; +{ + int i; + struct utsname ut; + + --namelen; + + uname (&ut); + i = strlen (ut.nodename) + 1; + strncpy (name, ut.nodename, i < namelen ? i : namelen); + name[namelen] = '\0'; + return (0); +} +# else /* !HAVE_UNAME */ +int +gethostname (name, namelen) + char *name; + int namelen; +{ + strncpy (name, "unknown", namelen); + name[namelen] = '\0'; + return 0; +} +# endif /* !HAVE_UNAME */ +#endif /* !HAVE_GETHOSTNAME */ + +#if !defined (HAVE_KILLPG) +int +killpg (pgrp, sig) + pid_t pgrp; + int sig; +{ + return (kill (-pgrp, sig)); +} +#endif /* !HAVE_KILLPG */ + +#if !defined (HAVE_MKFIFO) && defined (PROCESS_SUBSTITUTION) +int +mkfifo (path, mode) + char *path; + int mode; +{ +#if defined (S_IFIFO) + return (mknod (path, (mode | S_IFIFO), 0)); +#else /* !S_IFIFO */ + return (-1); +#endif /* !S_IFIFO */ +} +#endif /* !HAVE_MKFIFO && PROCESS_SUBSTITUTION */ + +#define DEFAULT_MAXGROUPS 64 + +int +getmaxgroups () +{ + static int maxgroups = -1; + + if (maxgroups > 0) + return maxgroups; + +#if defined (HAVE_SYSCONF) && defined (_SC_NGROUPS_MAX) + maxgroups = sysconf (_SC_NGROUPS_MAX); +#else +# if defined (NGROUPS_MAX) + maxgroups = NGROUPS_MAX; +# else /* !NGROUPS_MAX */ +# if defined (NGROUPS) + maxgroups = NGROUPS; +# else /* !NGROUPS */ + maxgroups = DEFAULT_MAXGROUPS; +# endif /* !NGROUPS */ +# endif /* !NGROUPS_MAX */ +#endif /* !HAVE_SYSCONF || !SC_NGROUPS_MAX */ + + if (maxgroups <= 0) + maxgroups = DEFAULT_MAXGROUPS; + + return maxgroups; +} + +long +getmaxchild () +{ + static long maxchild = -1L; + + if (maxchild > 0) + return maxchild; + +#if defined (HAVE_SYSCONF) && defined (_SC_CHILD_MAX) + maxchild = sysconf (_SC_CHILD_MAX); +#else +# if defined (CHILD_MAX) + maxchild = CHILD_MAX; +# else +# if defined (MAXUPRC) + maxchild = MAXUPRC; +# endif /* MAXUPRC */ +# endif /* CHILD_MAX */ +#endif /* !HAVE_SYSCONF || !_SC_CHILD_MAX */ + + return (maxchild); +} diff --git a/bash-5.1/lib/sh/pathcanon.c b/bash-5.1/lib/sh/pathcanon.c new file mode 100644 index 0000000..7d0df9f --- /dev/null +++ b/bash-5.1/lib/sh/pathcanon.c @@ -0,0 +1,234 @@ +/* pathcanon.c -- canonicalize and manipulate pathnames. */ + +/* 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 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 . +*/ + +#include + +#include +#if defined (HAVE_SYS_PARAM_H) +# include +#endif +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include +#include +#include +#include + +#include "shell.h" + +#if !defined (errno) +extern int errno; +#endif + +#if defined (__CYGWIN__) +#include + +static int +_is_cygdrive (path) + char *path; +{ + static char user[MAXPATHLEN]; + static char system[MAXPATHLEN]; + static int first_time = 1; + + /* If the path is the first part of a network path, treat it as + existing. */ + if (path[0] == '/' && path[1] == '/' && !strchr (path + 2, '/')) + return 1; + /* Otherwise check for /cygdrive prefix. */ + if (first_time) + { + char user_flags[MAXPATHLEN]; + char system_flags[MAXPATHLEN]; + /* Get the cygdrive info */ + cygwin_internal (CW_GET_CYGDRIVE_INFO, user, system, user_flags, system_flags); + first_time = 0; + } + return !strcasecmp (path, user) || !strcasecmp (path, system); +} +#endif /* __CYGWIN__ */ + +/* Return 1 if PATH corresponds to a directory. A function for debugging. */ +static int +_path_isdir (path) + char *path; +{ + int l; + struct stat sb; + + /* This should leave errno set to the correct value. */ + errno = 0; + l = stat (path, &sb) == 0 && S_ISDIR (sb.st_mode); +#if defined (__CYGWIN__) + if (l == 0) + l = _is_cygdrive (path); +#endif + return l; +} + +/* Canonicalize PATH, and return a new path. The new path differs from PATH + in that: + Multiple `/'s are collapsed to a single `/'. + Leading `./'s and trailing `/.'s are removed. + Trailing `/'s are removed. + Non-leading `../'s and trailing `..'s are handled by removing + portions of the path. */ + +/* Look for ROOTEDPATH, PATHSEP, DIRSEP, and ISDIRSEP in ../../general.h */ + +#define DOUBLE_SLASH(p) ((p[0] == '/') && (p[1] == '/') && p[2] != '/') + +char * +sh_canonpath (path, flags) + char *path; + int flags; +{ + char stub_char; + char *result, *p, *q, *base, *dotdot; + int rooted, double_slash_path; + + /* The result cannot be larger than the input PATH. */ + result = (flags & PATH_NOALLOC) ? path : savestring (path); + + /* POSIX.2 says to leave a leading `//' alone. On cygwin, we skip over any + leading `x:' (dos drive name). */ + if (rooted = ROOTEDPATH(path)) + { + stub_char = DIRSEP; +#if defined (__CYGWIN__) + base = (ISALPHA((unsigned char)result[0]) && result[1] == ':') ? result + 3 : result + 1; +#else + base = result + 1; +#endif + double_slash_path = DOUBLE_SLASH (path); + base += double_slash_path; + } + else + { + stub_char = '.'; +#if defined (__CYGWIN__) + base = (ISALPHA((unsigned char)result[0]) && result[1] == ':') ? result + 2 : result; +#else + base = result; +#endif + double_slash_path = 0; + } + + /* + * invariants: + * base points to the portion of the path we want to modify + * p points at beginning of path element we're considering. + * q points just past the last path element we wrote (no slash). + * dotdot points just past the point where .. cannot backtrack + * any further (no slash). + */ + p = q = dotdot = base; + + while (*p) + { + if (ISDIRSEP(p[0])) /* null element */ + p++; + else if(p[0] == '.' && PATHSEP(p[1])) /* . and ./ */ + p += 1; /* don't count the separator in case it is nul */ + else if (p[0] == '.' && p[1] == '.' && PATHSEP(p[2])) /* .. and ../ */ + { + p += 2; /* skip `..' */ + if (q > dotdot) /* can backtrack */ + { + if (flags & PATH_CHECKDOTDOT) + { + char c; + + /* Make sure what we have so far corresponds to a valid + path before we chop some of it off. */ + c = *q; + *q = '\0'; + if (_path_isdir (result) == 0) + { + if ((flags & PATH_NOALLOC) == 0) + free (result); + return ((char *)NULL); + } + *q = c; + } + + while (--q > dotdot && ISDIRSEP(*q) == 0) + ; + } + else if (rooted == 0) + { + /* /.. is / but ./../ is .. */ + if (q != base) + *q++ = DIRSEP; + *q++ = '.'; + *q++ = '.'; + dotdot = q; + } + } + else /* real path element */ + { + /* add separator if not at start of work portion of result */ + if (q != base) + *q++ = DIRSEP; + while (*p && (ISDIRSEP(*p) == 0)) + *q++ = *p++; + /* Check here for a valid directory with _path_isdir. */ + if (flags & PATH_CHECKEXISTS) + { + char c; + + /* Make sure what we have so far corresponds to a valid + path before we chop some of it off. */ + c = *q; + *q = '\0'; + if (_path_isdir (result) == 0) + { + if ((flags & PATH_NOALLOC) == 0) + free (result); + return ((char *)NULL); + } + *q = c; + } + } + } + + /* Empty string is really ``.'' or `/', depending on what we started with. */ + if (q == result) + *q++ = stub_char; + *q = '\0'; + + /* If the result starts with `//', but the original path does not, we + can turn the // into /. Because of how we set `base', this should never + be true, but it's a sanity check. */ + if (DOUBLE_SLASH(result) && double_slash_path == 0) + { + if (result[2] == '\0') /* short-circuit for bare `//' */ + result[1] = '\0'; + else + memmove (result, result + 1, strlen (result + 1) + 1); + } + + return (result); +} diff --git a/bash-5.1/lib/sh/pathphys.c b/bash-5.1/lib/sh/pathphys.c new file mode 100644 index 0000000..95b72f1 --- /dev/null +++ b/bash-5.1/lib/sh/pathphys.c @@ -0,0 +1,296 @@ +/* pathphys.c -- return pathname with all symlinks expanded. */ + +/* Copyright (C) 2000-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include +#if defined (HAVE_SYS_PARAM_H) +# include +#endif +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include +#include +#include +#include + +#include "shell.h" + +#if !defined (MAXSYMLINKS) +# define MAXSYMLINKS 32 +#endif + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +extern char *get_working_directory PARAMS((char *)); + +static int +_path_readlink (path, buf, bufsiz) + char *path; + char *buf; + int bufsiz; +{ +#ifdef HAVE_READLINK + return readlink (path, buf, bufsiz); +#else + errno = EINVAL; + return -1; +#endif +} + +/* Look for ROOTEDPATH, PATHSEP, DIRSEP, and ISDIRSEP in ../../general.h */ + +#define DOUBLE_SLASH(p) ((p[0] == '/') && (p[1] == '/') && p[2] != '/') + +/* + * Return PATH with all symlinks expanded in newly-allocated memory. + * This always gets an absolute pathname. + */ + +char * +sh_physpath (path, flags) + char *path; + int flags; +{ + char tbuf[PATH_MAX+1], linkbuf[PATH_MAX+1]; + char *result, *p, *q, *qsave, *qbase, *workpath; + int double_slash_path, linklen, nlink; + + linklen = strlen (path); + +#if 0 + /* First sanity check -- punt immediately if the name is too long. */ + if (linklen >= PATH_MAX) + return (savestring (path)); +#endif + + nlink = 0; + q = result = (char *)xmalloc (PATH_MAX + 1); + + /* Even if we get something longer than PATH_MAX, we might be able to + shorten it, so we try. */ + if (linklen >= PATH_MAX) + workpath = savestring (path); + else + { + workpath = (char *)xmalloc (PATH_MAX + 1); + strcpy (workpath, path); + } + + /* This always gets an absolute pathname. */ + + /* POSIX.2 says to leave a leading `//' alone. On cygwin, we skip over any + leading `x:' (dos drive name). */ +#if defined (__CYGWIN__) + qbase = (ISALPHA((unsigned char)workpath[0]) && workpath[1] == ':') ? workpath + 3 : workpath + 1; +#else + qbase = workpath + 1; +#endif + double_slash_path = DOUBLE_SLASH (workpath); + qbase += double_slash_path; + + for (p = workpath; p < qbase; ) + *q++ = *p++; + qbase = q; + + /* + * invariants: + * qbase points to the portion of the result path we want to modify + * p points at beginning of path element we're considering. + * q points just past the last path element we wrote (no slash). + * + * XXX -- need to fix error checking for too-long pathnames + */ + + while (*p) + { + if (ISDIRSEP(p[0])) /* null element */ + p++; + else if(p[0] == '.' && PATHSEP(p[1])) /* . and ./ */ + p += 1; /* don't count the separator in case it is nul */ + else if (p[0] == '.' && p[1] == '.' && PATHSEP(p[2])) /* .. and ../ */ + { + p += 2; /* skip `..' */ + if (q > qbase) + { + while (--q > qbase && ISDIRSEP(*q) == 0) + ; + } + } + else /* real path element */ + { + /* add separator if not at start of work portion of result */ + qsave = q; + if (q != qbase) + *q++ = DIRSEP; + while (*p && (ISDIRSEP(*p) == 0)) + { + if (q - result >= PATH_MAX) + { +#ifdef ENAMETOOLONG + errno = ENAMETOOLONG; +#else + errno = EINVAL; +#endif + goto error; + } + + *q++ = *p++; + } + + *q = '\0'; + + linklen = _path_readlink (result, linkbuf, PATH_MAX); + if (linklen < 0) /* if errno == EINVAL, it's not a symlink */ + { + if (errno != EINVAL) + goto error; + continue; + } + + /* It's a symlink, and the value is in LINKBUF. */ + nlink++; + if (nlink > MAXSYMLINKS) + { +#ifdef ELOOP + errno = ELOOP; +#else + errno = EINVAL; +#endif +error: + free (result); + free (workpath); + return ((char *)NULL); + } + + linkbuf[linklen] = '\0'; + + /* If the new path length would overrun PATH_MAX, punt now. */ + if ((strlen (p) + linklen + 2) >= PATH_MAX) + { +#ifdef ENAMETOOLONG + errno = ENAMETOOLONG; +#else + errno = EINVAL; +#endif + goto error; + } + + /* Form the new pathname by copying the link value to a temporary + buffer and appending the rest of `workpath'. Reset p to point + to the start of the rest of the path. If the link value is an + absolute pathname, reset p, q, and qbase. If not, reset p + and q. */ + strcpy (tbuf, linkbuf); + tbuf[linklen] = '/'; + strcpy (tbuf + linklen, p); + strcpy (workpath, tbuf); + + if (ABSPATH(linkbuf)) + { + q = result; + /* Duplicating some code here... */ +#if defined (__CYGWIN__) + qbase = (ISALPHA((unsigned char)workpath[0]) && workpath[1] == ':') ? workpath + 3 : workpath + 1; +#else + qbase = workpath + 1; +#endif + double_slash_path = DOUBLE_SLASH (workpath); + qbase += double_slash_path; + + for (p = workpath; p < qbase; ) + *q++ = *p++; + qbase = q; + } + else + { + p = workpath; + q = qsave; + } + } + } + + *q = '\0'; + free (workpath); + + /* If the result starts with `//', but the original path does not, we + can turn the // into /. Because of how we set `qbase', this should never + be true, but it's a sanity check. */ + if (DOUBLE_SLASH(result) && double_slash_path == 0) + { + if (result[2] == '\0') /* short-circuit for bare `//' */ + result[1] = '\0'; + else + memmove (result, result + 1, strlen (result + 1) + 1); + } + + return (result); +} + +char * +sh_realpath (pathname, resolved) + const char *pathname; + char *resolved; +{ + char *tdir, *wd; + + if (pathname == 0 || *pathname == '\0') + { + errno = (pathname == 0) ? EINVAL : ENOENT; + return ((char *)NULL); + } + + if (ABSPATH (pathname) == 0) + { + wd = get_working_directory ("sh_realpath"); + if (wd == 0) + return ((char *)NULL); + tdir = sh_makepath (wd, (char *)pathname, 0); + free (wd); + } + else + tdir = savestring (pathname); + + wd = sh_physpath (tdir, 0); + free (tdir); + + if (resolved == 0) + return (wd); + + if (wd) + { + strncpy (resolved, wd, PATH_MAX - 1); + resolved[PATH_MAX - 1] = '\0'; + free (wd); + return resolved; + } + else + { + resolved[0] = '\0'; + return wd; + } +} diff --git a/bash-5.1/lib/sh/random.c b/bash-5.1/lib/sh/random.c new file mode 100644 index 0000000..1eaa71a --- /dev/null +++ b/bash-5.1/lib/sh/random.c @@ -0,0 +1,240 @@ +/* random.c -- Functions for managing 16-bit and 32-bit random numbers. */ + +/* Copyright (C) 2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" + +#if defined (HAVE_SYS_RANDOM_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include "filecntl.h" + +#include +#include "bashansi.h" + +#include "shell.h" + +extern time_t shell_start_time; + +extern int last_random_value; + +static u_bits32_t intrand32 PARAMS((u_bits32_t)); +static u_bits32_t genseed PARAMS((void)); + +static u_bits32_t brand32 PARAMS((void)); +static void sbrand32 PARAMS((u_bits32_t)); +static void perturb_rand32 PARAMS((void)); + +/* The random number seed. You can change this by setting RANDOM. */ +static u_bits32_t rseed = 1; + +/* Returns a 32-bit pseudo-random number. */ +static u_bits32_t +intrand32 (last) + u_bits32_t last; +{ + /* Minimal Standard generator from + "Random number generators: good ones are hard to find", + Park and Miller, Communications of the ACM, vol. 31, no. 10, + October 1988, p. 1195. Filtered through FreeBSD. + + x(n+1) = 16807 * x(n) mod (m). + + We split up the calculations to avoid overflow. + + h = last / q; l = x - h * q; t = a * l - h * r + m = 2147483647, a = 16807, q = 127773, r = 2836 + + There are lots of other combinations of constants to use; look at + https://www.gnu.org/software/gsl/manual/html_node/Other-random-number-generators.html#Other-random-number-generators */ + + bits32_t h, l, t; + u_bits32_t ret; + + /* Can't seed with 0. */ + ret = (last == 0) ? 123459876 : last; + h = ret / 127773; + l = ret - (127773 * h); + t = 16807 * l - 2836 * h; + ret = (t < 0) ? t + 0x7fffffff : t; + + return (ret); +} + +static u_bits32_t +genseed () +{ + struct timeval tv; + u_bits32_t iv; + + gettimeofday (&tv, NULL); + iv = (u_bits32_t)seedrand; /* let the compiler truncate */ + iv = tv.tv_sec ^ tv.tv_usec ^ getpid () ^ getppid () ^ current_user.uid ^ iv; + return (iv); +} + +#define BASH_RAND_MAX 32767 /* 0x7fff - 16 bits */ + +/* Returns a pseudo-random number between 0 and 32767. */ +int +brand () +{ + unsigned int ret; + + rseed = intrand32 (rseed); + if (shell_compatibility_level > 50) + ret = (rseed >> 16) ^ (rseed & 65535); + else + ret = rseed; + return (ret & BASH_RAND_MAX); +} + +/* Set the random number generator seed to SEED. */ +void +sbrand (seed) + unsigned long seed; +{ + rseed = seed; + last_random_value = 0; +} + +void +seedrand () +{ + u_bits32_t iv; + + iv = genseed (); + sbrand (iv); +} + +static u_bits32_t rseed32 = 1073741823; +static int last_rand32; + +static int urandfd = -1; + +#define BASH_RAND32_MAX 0x7fffffff /* 32 bits */ + +/* Returns a 32-bit pseudo-random number between 0 and 4294967295. */ +static u_bits32_t +brand32 () +{ + u_bits32_t ret; + + rseed32 = intrand32 (rseed32); + return (rseed32 & BASH_RAND32_MAX); +} + +static void +sbrand32 (seed) + u_bits32_t seed; +{ + last_rand32 = rseed32 = seed; +} + +void +seedrand32 () +{ + u_bits32_t iv; + + iv = genseed (); + sbrand32 (iv); +} + +static void +perturb_rand32 () +{ + rseed32 ^= genseed (); +} + +/* Force another attempt to open /dev/urandom on the next call to get_urandom32 */ +void +urandom_close () +{ + if (urandfd >= 0) + close (urandfd); + urandfd = -1; +} + +#if !defined (HAVE_GETRANDOM) +/* Imperfect emulation of getrandom(2). */ +#ifndef GRND_NONBLOCK +# define GRND_NONBLOCK 1 +# define GRND_RANDOM 2 +#endif + +static ssize_t +getrandom (buf, len, flags) + void *buf; + size_t len; + unsigned int flags; +{ + int oflags; + ssize_t r; + static int urand_unavail = 0; + +#if HAVE_GETENTROPY + r = getentropy (buf, len); + return (r == 0) ? len : -1; +#endif + + if (urandfd == -1 && urand_unavail == 0) + { + oflags = O_RDONLY; + if (flags & GRND_NONBLOCK) + oflags |= O_NONBLOCK; + urandfd = open ("/dev/urandom", oflags, 0); + if (urandfd >= 0) + SET_CLOSE_ON_EXEC (urandfd); + else + { + urand_unavail = 1; + return -1; + } + } + if (urandfd >= 0 && (r = read (urandfd, buf, len)) == len) + return (r); + return -1; +} +#endif + +u_bits32_t +get_urandom32 () +{ + u_bits32_t ret; + + if (getrandom ((void *)&ret, sizeof (ret), GRND_NONBLOCK) == sizeof (ret)) + return (last_rand32 = ret); + +#if defined (HAVE_ARC4RANDOM) + ret = arc4random (); +#else + if (subshell_environment) + perturb_rand32 (); + do + ret = brand32 (); + while (ret == last_rand32); +#endif + return (last_rand32 = ret); +} diff --git a/bash-5.1/lib/sh/rename.c b/bash-5.1/lib/sh/rename.c new file mode 100644 index 0000000..e410b5e --- /dev/null +++ b/bash-5.1/lib/sh/rename.c @@ -0,0 +1,76 @@ +/* + * rename - rename a file + */ + +/* 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 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 . +*/ + +#include + +#if !defined (HAVE_RENAME) + +#include +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include + +#include + +#ifndef errno +extern int errno; +#endif + +int +rename (from, to) + const char *from, *to; +{ + struct stat fb, tb; + + if (stat (from, &fb) < 0) + return -1; + + if (stat (to, &tb) < 0) + { + if (errno != ENOENT) + return -1; + } + else + { + if (fb.st_dev == tb.st_dev && fb.st_ino == tb.st_ino) + return 0; /* same file */ + if (unlink (to) < 0 && errno != ENOENT) + return -1; + } + + if (link (from, to) < 0) + return (-1); + + if (unlink (from) < 0 && errno != ENOENT) + { + int e = errno; + unlink (to); + errno = e; + return (-1); + } + + return (0); +} +#endif /* !HAVE_RENAME */ diff --git a/bash-5.1/lib/sh/setlinebuf.c b/bash-5.1/lib/sh/setlinebuf.c new file mode 100644 index 0000000..6473ddf --- /dev/null +++ b/bash-5.1/lib/sh/setlinebuf.c @@ -0,0 +1,63 @@ +/* setlinebuf.c - line-buffer a stdio stream. */ + +/* 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 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 . +*/ + +#include + +#include + +#include + +#if defined (USING_BASH_MALLOC) +# define LBUF_BUFSIZE 1008 +#else +# define LBUF_BUFSIZE BUFSIZ +#endif + +/* Cause STREAM to buffer lines as opposed to characters or blocks. */ +int +sh_setlinebuf (stream) + FILE *stream; +{ + char *local_linebuf; + +#if !defined (HAVE_SETLINEBUF) && !defined (HAVE_SETVBUF) + return (0); +#endif + +#if defined (USING_BASH_MALLOC) + local_linebuf = (char *)xmalloc (LBUF_BUFSIZE); +#else + local_linebuf = (char *)NULL; +#endif + +#if defined (HAVE_SETVBUF) + +# if defined (SETVBUF_REVERSED) + return (setvbuf (stream, _IOLBF, local_linebuf, LBUF_BUFSIZE)); +# else /* !SETVBUF_REVERSED */ + return (setvbuf (stream, local_linebuf, _IOLBF, LBUF_BUFSIZE)); +# endif /* !SETVBUF_REVERSED */ +# else /* !HAVE_SETVBUF */ + + setlinebuf (stream); + return (0); + +#endif /* !HAVE_SETVBUF */ +} diff --git a/bash-5.1/lib/sh/shmatch.c b/bash-5.1/lib/sh/shmatch.c new file mode 100644 index 0000000..d6e7f90 --- /dev/null +++ b/bash-5.1/lib/sh/shmatch.c @@ -0,0 +1,123 @@ +/* + * shmatch.c -- shell interface to posix regular expression matching. + */ + +/* Copyright (C) 2003-2015 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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; + +#if defined (ARRAY_VARS) + rematch = (SHELL_VAR *)NULL; +#endif + + rflags = REG_EXTENDED; + if (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 + + /* man regexec: NULL PMATCH ignored if NMATCH == 0 */ + if (regexec (®ex, string, matches ? regex.re_nsub + 1 : 0, matches, 0)) + result = EXECUTION_FAILURE; + else + result = EXECUTION_SUCCESS; /* match */ + +#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_noref ("BASH_REMATCH"); + rematch = make_new_array_variable ("BASH_REMATCH"); + amatch = array_cell (rematch); + + if (matches && (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); + } + } + +#if 0 + VSETATTR (rematch, att_readonly); +#endif + + free (subexp_str); + free (matches); +#endif /* ARRAY_VARS */ + + regfree (®ex); + + return result; +} + +#endif /* HAVE_POSIX_REGEXP */ diff --git a/bash-5.1/lib/sh/shmbchar.c b/bash-5.1/lib/sh/shmbchar.c new file mode 100644 index 0000000..f2f2582 --- /dev/null +++ b/bash-5.1/lib/sh/shmbchar.c @@ -0,0 +1,137 @@ +/* Copyright (C) 2001, 2006, 2009, 2010, 2012, 2015-2018 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + + +#include + +#if defined (HANDLE_MULTIBYTE) +#include +#include + +#include + +#include +#include + +#ifndef errno +extern int errno; +#endif + +#if IS_BASIC_ASCII + +/* Bit table of characters in the ISO C "basic character set". */ +const unsigned int is_basic_table [UCHAR_MAX / 32 + 1] = +{ + 0x00001a00, /* '\t' '\v' '\f' */ + 0xffffffef, /* ' '...'#' '%'...'?' */ + 0xfffffffe, /* 'A'...'Z' '[' '\\' ']' '^' '_' */ + 0x7ffffffe /* 'a'...'z' '{' '|' '}' '~' */ + /* The remaining bits are 0. */ +}; + +#endif /* IS_BASIC_ASCII */ + +extern int locale_utf8locale; + +extern char *utf8_mbsmbchar (const char *); +extern int utf8_mblen (const char *, size_t); + +/* Count the number of characters in S, counting multi-byte characters as a + single character. */ +size_t +mbstrlen (s) + const char *s; +{ + size_t clen, nc; + mbstate_t mbs = { 0 }, mbsbak = { 0 }; + int f, mb_cur_max; + + nc = 0; + mb_cur_max = MB_CUR_MAX; + while (*s && (clen = (f = is_basic (*s)) ? 1 : mbrlen(s, mb_cur_max, &mbs)) != 0) + { + if (MB_INVALIDCH(clen)) + { + clen = 1; /* assume single byte */ + mbs = mbsbak; + } + + if (f == 0) + mbsbak = mbs; + + s += clen; + nc++; + } + return nc; +} + +/* Return pointer to first multibyte char in S, or NULL if none. */ +/* XXX - if we know that the locale is UTF-8, we can just check whether or + not any byte has the eighth bit turned on */ +char * +mbsmbchar (s) + const char *s; +{ + char *t; + size_t clen; + mbstate_t mbs = { 0 }; + int mb_cur_max; + + if (locale_utf8locale) + return (utf8_mbsmbchar (s)); /* XXX */ + + mb_cur_max = MB_CUR_MAX; + for (t = (char *)s; *t; t++) + { + if (is_basic (*t)) + continue; + + if (locale_utf8locale) /* not used if above code active */ + clen = utf8_mblen (t, mb_cur_max); + else + clen = mbrlen (t, mb_cur_max, &mbs); + + if (clen == 0) + return 0; + if (MB_INVALIDCH(clen)) + continue; + + if (clen > 1) + return t; + } + return 0; +} + +int +sh_mbsnlen(src, srclen, maxlen) + const char *src; + size_t srclen; + int maxlen; +{ + int count; + int sind; + DECLARE_MBSTATE; + + for (sind = count = 0; src[sind]; ) + { + count++; /* number of multibyte characters */ + ADVANCE_CHAR (src, srclen, sind); + if (sind > maxlen) + break; + } + + return count; +} +#endif diff --git a/bash-5.1/lib/sh/shquote.c b/bash-5.1/lib/sh/shquote.c new file mode 100644 index 0000000..680f84e --- /dev/null +++ b/bash-5.1/lib/sh/shquote.c @@ -0,0 +1,431 @@ +/* shquote - functions to quote and dequote strings */ + +/* Copyright (C) 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include + +#include "syntax.h" +#include + +#include "shmbchar.h" +#include "shmbutil.h" + +extern char *ansic_quote PARAMS((char *, int, int *)); +extern int ansic_shouldquote PARAMS((const char *)); + +/* Default set of characters that should be backslash-quoted in strings */ +static const char bstab[256] = + { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0, 0, 0, /* TAB, NL */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + 1, 1, 1, 0, 1, 0, 1, 1, /* SPACE, !, DQUOTE, DOL, AMP, SQUOTE */ + 1, 1, 1, 0, 1, 0, 0, 0, /* LPAR, RPAR, STAR, COMMA */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 0, 1, 1, /* SEMI, LESSTHAN, GREATERTHAN, QUEST */ + + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 1, 0, /* LBRACK, BS, RBRACK, CARAT */ + + 1, 0, 0, 0, 0, 0, 0, 0, /* BACKQ */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 0, 0, /* LBRACE, BAR, RBRACE */ + + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }; + +/* **************************************************************** */ +/* */ +/* Functions for quoting strings to be re-read as input */ +/* */ +/* **************************************************************** */ + +/* Return a new string which is the single-quoted version of STRING. + Used by alias and trap, among others. */ +char * +sh_single_quote (string) + const char *string; +{ + register int c; + char *result, *r; + const char *s; + + result = (char *)xmalloc (3 + (4 * strlen (string))); + r = result; + + if (string[0] == '\'' && string[1] == 0) + { + *r++ = '\\'; + *r++ = '\''; + *r++ = 0; + return result; + } + + *r++ = '\''; + + for (s = string; s && (c = *s); s++) + { + *r++ = c; + + if (c == '\'') + { + *r++ = '\\'; /* insert escaped single quote */ + *r++ = '\''; + *r++ = '\''; /* start new quoted string */ + } + } + + *r++ = '\''; + *r = '\0'; + + return (result); +} + +/* Quote STRING using double quotes. Return a new string. */ +char * +sh_double_quote (string) + const char *string; +{ + register unsigned char c; + int mb_cur_max; + char *result, *r; + size_t slen; + const char *s, *send; + DECLARE_MBSTATE; + + slen = strlen (string); + send = string + slen; + mb_cur_max = MB_CUR_MAX; + + result = (char *)xmalloc (3 + (2 * strlen (string))); + r = result; + *r++ = '"'; + + for (s = string; s && (c = *s); s++) + { + /* Backslash-newline disappears within double quotes, so don't add one. */ + if ((sh_syntaxtab[c] & CBSDQUOTE) && c != '\n') + *r++ = '\\'; + +#if defined (HANDLE_MULTIBYTE) + if ((locale_utf8locale && (c & 0x80)) || + (locale_utf8locale == 0 && mb_cur_max > 1 && is_basic (c) == 0)) + { + COPY_CHAR_P (r, s, send); + s--; /* compensate for auto-increment in loop above */ + continue; + } +#endif + + /* Assume that the string will not be further expanded, so no need to + add CTLESC to protect CTLESC or CTLNUL. */ + *r++ = c; + } + + *r++ = '"'; + *r = '\0'; + + return (result); +} + +/* Turn S into a simple double-quoted string. If FLAGS is non-zero, quote + double quote characters in S with backslashes. */ +char * +sh_mkdoublequoted (s, slen, flags) + const char *s; + int slen, flags; +{ + char *r, *ret; + const char *send; + int rlen, mb_cur_max; + DECLARE_MBSTATE; + + send = s + slen; + mb_cur_max = flags ? MB_CUR_MAX : 1; + rlen = (flags == 0) ? slen + 3 : (2 * slen) + 1; + ret = r = (char *)xmalloc (rlen); + + *r++ = '"'; + while (*s) + { + if (flags && *s == '"') + *r++ = '\\'; + +#if defined (HANDLE_MULTIBYTE) + if (flags && ((locale_utf8locale && (*s & 0x80)) || + (locale_utf8locale == 0 && mb_cur_max > 1 && is_basic (*s) == 0))) + { + COPY_CHAR_P (r, s, send); + continue; + } +#endif + *r++ = *s++; + } + *r++ = '"'; + *r = '\0'; + + return ret; +} + +/* Remove backslashes that are quoting characters that are special between + double quotes. Return a new string. XXX - should this handle CTLESC + and CTLNUL? */ +char * +sh_un_double_quote (string) + char *string; +{ + register int c, pass_next; + char *result, *r, *s; + + r = result = (char *)xmalloc (strlen (string) + 1); + + for (pass_next = 0, s = string; s && (c = *s); s++) + { + if (pass_next) + { + *r++ = c; + pass_next = 0; + continue; + } + if (c == '\\' && (sh_syntaxtab[(unsigned char) s[1]] & CBSDQUOTE)) + { + pass_next = 1; + continue; + } + *r++ = c; + } + + *r = '\0'; + return result; +} + +/* Quote special characters in STRING using backslashes. Return a new + string. NOTE: if the string is to be further expanded, we need a + way to protect the CTLESC and CTLNUL characters. As I write this, + the current callers will never cause the string to be expanded without + going through the shell parser, which will protect the internal + quoting characters. TABLE, if set, points to a map of the ascii code + set with char needing to be backslash-quoted if table[char]==1. FLAGS, + if 1, causes tildes to be quoted as well. If FLAGS&2, backslash-quote + other shell blank characters. */ + +char * +sh_backslash_quote (string, table, flags) + char *string; + char *table; + int flags; +{ + int c, mb_cur_max; + size_t slen; + char *result, *r, *s, *backslash_table, *send; + DECLARE_MBSTATE; + + slen = strlen (string); + send = string + slen; + result = (char *)xmalloc (2 * slen + 1); + + backslash_table = table ? table : (char *)bstab; + mb_cur_max = MB_CUR_MAX; + + for (r = result, s = string; s && (c = *s); s++) + { +#if defined (HANDLE_MULTIBYTE) + /* XXX - isascii, even if is_basic(c) == 0 - works in most cases. */ + if (c >= 0 && c <= 127 && backslash_table[(unsigned char)c] == 1) + { + *r++ = '\\'; + *r++ = c; + continue; + } + if ((locale_utf8locale && (c & 0x80)) || + (locale_utf8locale == 0 && mb_cur_max > 1 && is_basic (c) == 0)) + { + COPY_CHAR_P (r, s, send); + s--; /* compensate for auto-increment in loop above */ + continue; + } +#endif + if (backslash_table[(unsigned char)c] == 1) + *r++ = '\\'; + else if (c == '#' && s == string) /* comment char */ + *r++ = '\\'; + else if ((flags&1) && c == '~' && (s == string || s[-1] == ':' || s[-1] == '=')) + /* Tildes are special at the start of a word or after a `:' or `=' + (technically unquoted, but it doesn't make a difference in practice) */ + *r++ = '\\'; + else if ((flags&2) && shellblank((unsigned char)c)) + *r++ = '\\'; + *r++ = c; + } + + *r = '\0'; + return (result); +} + +#if defined (PROMPT_STRING_DECODE) +/* Quote characters that get special treatment when in double quotes in STRING + using backslashes. Return a new string. */ +char * +sh_backslash_quote_for_double_quotes (string) + char *string; +{ + unsigned char c; + char *result, *r, *s, *send; + size_t slen; + int mb_cur_max; + DECLARE_MBSTATE; + + slen = strlen (string); + send = string + slen; + mb_cur_max = MB_CUR_MAX; + result = (char *)xmalloc (2 * slen + 1); + + for (r = result, s = string; s && (c = *s); s++) + { + /* Backslash-newline disappears within double quotes, so don't add one. */ + if ((sh_syntaxtab[c] & CBSDQUOTE) && c != '\n') + *r++ = '\\'; + /* I should probably use the CSPECL flag for these in sh_syntaxtab[] */ + else if (c == CTLESC || c == CTLNUL) + *r++ = CTLESC; /* could be '\\'? */ + +#if defined (HANDLE_MULTIBYTE) + if ((locale_utf8locale && (c & 0x80)) || + (locale_utf8locale == 0 && mb_cur_max > 1 && is_basic (c) == 0)) + { + COPY_CHAR_P (r, s, send); + s--; /* compensate for auto-increment in loop above */ + continue; + } +#endif + + *r++ = c; + } + + *r = '\0'; + return (result); +} +#endif /* PROMPT_STRING_DECODE */ + +char * +sh_quote_reusable (s, flags) + char *s; + int flags; +{ + char *ret; + + if (s == 0) + return s; + else if (*s == 0) + { + ret = (char *)xmalloc (3); + ret[0] = ret[1] = '\''; + ret[2] = '\0'; + } + else if (ansic_shouldquote (s)) + ret = ansic_quote (s, 0, (int *)0); + else if (flags) + ret = sh_backslash_quote (s, 0, 1); + else + ret = sh_single_quote (s); + + return ret; +} + +int +sh_contains_shell_metas (string) + const char *string; +{ + const char *s; + + for (s = string; s && *s; s++) + { + switch (*s) + { + case ' ': case '\t': case '\n': /* IFS white space */ + case '\'': case '"': case '\\': /* quoting chars */ + case '|': case '&': case ';': /* shell metacharacters */ + case '(': case ')': case '<': case '>': + case '!': case '{': case '}': /* reserved words */ + case '*': case '[': case '?': case ']': /* globbing chars */ + case '^': + case '$': case '`': /* expansion chars */ + return (1); + case '~': /* tilde expansion */ + if (s == string || s[-1] == '=' || s[-1] == ':') + return (1); + break; + case '#': + if (s == string) /* comment char */ + return (1); + /* FALLTHROUGH */ + default: + break; + } + } + + return (0); +} + +int +sh_contains_quotes (string) + const char *string; +{ + const char *s; + + for (s = string; s && *s; s++) + { + if (*s == '\'' || *s == '"' || *s == '\\') + return 1; + } + return 0; +} diff --git a/bash-5.1/lib/sh/shtty.c b/bash-5.1/lib/sh/shtty.c new file mode 100644 index 0000000..0433f5e --- /dev/null +++ b/bash-5.1/lib/sh/shtty.c @@ -0,0 +1,330 @@ +/* + * shtty.c -- abstract interface to the terminal, focusing on capabilities. + */ + +/* 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 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef HAVE_UNISTD_H +# include +#endif + +#include + +static TTYSTRUCT ttin, ttout; +static int ttsaved = 0; + +int +ttgetattr(fd, ttp) +int fd; +TTYSTRUCT *ttp; +{ +#ifdef TERMIOS_TTY_DRIVER + return tcgetattr(fd, ttp); +#else +# ifdef TERMIO_TTY_DRIVER + return ioctl(fd, TCGETA, ttp); +# else + return ioctl(fd, TIOCGETP, ttp); +# endif +#endif +} + +int +ttsetattr(fd, ttp) +int fd; +TTYSTRUCT *ttp; +{ +#ifdef TERMIOS_TTY_DRIVER + return tcsetattr(fd, TCSADRAIN, ttp); +#else +# ifdef TERMIO_TTY_DRIVER + return ioctl(fd, TCSETAW, ttp); +# else + return ioctl(fd, TIOCSETN, ttp); +# endif +#endif +} + +void +ttsave() +{ + if (ttsaved) + return; + ttgetattr (0, &ttin); + ttgetattr (1, &ttout); + ttsaved = 1; +} + +void +ttrestore() +{ + if (ttsaved == 0) + return; + ttsetattr (0, &ttin); + ttsetattr (1, &ttout); + ttsaved = 0; +} + +/* Retrieve the internally-saved attributes associated with tty fd FD. */ +TTYSTRUCT * +ttattr (fd) + int fd; +{ + if (ttsaved == 0) + return ((TTYSTRUCT *)0); + if (fd == 0) + return &ttin; + else if (fd == 1) + return &ttout; + else + return ((TTYSTRUCT *)0); +} + +/* + * Change attributes in ttp so that when it is installed using + * ttsetattr, the terminal will be in one-char-at-a-time mode. + */ +int +tt_setonechar(ttp) + TTYSTRUCT *ttp; +{ +#if defined (TERMIOS_TTY_DRIVER) || defined (TERMIO_TTY_DRIVER) + + /* XXX - might not want this -- it disables erase and kill processing. */ + ttp->c_lflag &= ~ICANON; + + ttp->c_lflag |= ISIG; +# ifdef IEXTEN + ttp->c_lflag |= IEXTEN; +# endif + + ttp->c_iflag |= ICRNL; /* make sure we get CR->NL on input */ + ttp->c_iflag &= ~INLCR; /* but no NL->CR */ + +# ifdef OPOST + ttp->c_oflag |= OPOST; +# endif +# ifdef ONLCR + ttp->c_oflag |= ONLCR; +# endif +# ifdef OCRNL + ttp->c_oflag &= ~OCRNL; +# endif +# ifdef ONOCR + ttp->c_oflag &= ~ONOCR; +# endif +# ifdef ONLRET + ttp->c_oflag &= ~ONLRET; +# endif + + ttp->c_cc[VMIN] = 1; + ttp->c_cc[VTIME] = 0; + +#else + + ttp->sg_flags |= CBREAK; + +#endif + + return 0; +} + +/* Set the tty associated with FD and TTP into one-character-at-a-time mode */ +int +ttfd_onechar (fd, ttp) + int fd; + TTYSTRUCT *ttp; +{ + if (tt_setonechar(ttp) < 0) + return -1; + return (ttsetattr (fd, ttp)); +} + +/* Set the terminal into one-character-at-a-time mode */ +int +ttonechar () +{ + TTYSTRUCT tt; + + if (ttsaved == 0) + return -1; + tt = ttin; + return (ttfd_onechar (0, &tt)); +} + +/* + * Change attributes in ttp so that when it is installed using + * ttsetattr, the terminal will be in no-echo mode. + */ +int +tt_setnoecho(ttp) + TTYSTRUCT *ttp; +{ +#if defined (TERMIOS_TTY_DRIVER) || defined (TERMIO_TTY_DRIVER) + ttp->c_lflag &= ~(ECHO|ECHOK|ECHONL); +#else + ttp->sg_flags &= ~ECHO; +#endif + + return 0; +} + +/* Set the tty associated with FD and TTP into no-echo mode */ +int +ttfd_noecho (fd, ttp) + int fd; + TTYSTRUCT *ttp; +{ + if (tt_setnoecho (ttp) < 0) + return -1; + return (ttsetattr (fd, ttp)); +} + +/* Set the terminal into no-echo mode */ +int +ttnoecho () +{ + TTYSTRUCT tt; + + if (ttsaved == 0) + return -1; + tt = ttin; + return (ttfd_noecho (0, &tt)); +} + +/* + * Change attributes in ttp so that when it is installed using + * ttsetattr, the terminal will be in eight-bit mode (pass8). + */ +int +tt_seteightbit (ttp) + TTYSTRUCT *ttp; +{ +#if defined (TERMIOS_TTY_DRIVER) || defined (TERMIO_TTY_DRIVER) + ttp->c_iflag &= ~ISTRIP; + ttp->c_cflag |= CS8; + ttp->c_cflag &= ~PARENB; +#else + ttp->sg_flags |= ANYP; +#endif + + return 0; +} + +/* Set the tty associated with FD and TTP into eight-bit mode */ +int +ttfd_eightbit (fd, ttp) + int fd; + TTYSTRUCT *ttp; +{ + if (tt_seteightbit (ttp) < 0) + return -1; + return (ttsetattr (fd, ttp)); +} + +/* Set the terminal into eight-bit mode */ +int +tteightbit () +{ + TTYSTRUCT tt; + + if (ttsaved == 0) + return -1; + tt = ttin; + return (ttfd_eightbit (0, &tt)); +} + +/* + * Change attributes in ttp so that when it is installed using + * ttsetattr, the terminal will be in non-canonical input mode. + */ +int +tt_setnocanon (ttp) + TTYSTRUCT *ttp; +{ +#if defined (TERMIOS_TTY_DRIVER) || defined (TERMIO_TTY_DRIVER) + ttp->c_lflag &= ~ICANON; +#endif + + return 0; +} + +/* Set the tty associated with FD and TTP into non-canonical mode */ +int +ttfd_nocanon (fd, ttp) + int fd; + TTYSTRUCT *ttp; +{ + if (tt_setnocanon (ttp) < 0) + return -1; + return (ttsetattr (fd, ttp)); +} + +/* Set the terminal into non-canonical mode */ +int +ttnocanon () +{ + TTYSTRUCT tt; + + if (ttsaved == 0) + return -1; + tt = ttin; + return (ttfd_nocanon (0, &tt)); +} + +/* + * Change attributes in ttp so that when it is installed using + * ttsetattr, the terminal will be in cbreak, no-echo mode. + */ +int +tt_setcbreak(ttp) + TTYSTRUCT *ttp; +{ + if (tt_setonechar (ttp) < 0) + return -1; + return (tt_setnoecho (ttp)); +} + +/* Set the tty associated with FD and TTP into cbreak (no-echo, + one-character-at-a-time) mode */ +int +ttfd_cbreak (fd, ttp) + int fd; + TTYSTRUCT *ttp; +{ + if (tt_setcbreak (ttp) < 0) + return -1; + return (ttsetattr (fd, ttp)); +} + +/* Set the terminal into cbreak (no-echo, one-character-at-a-time) mode */ +int +ttcbreak () +{ + TTYSTRUCT tt; + + if (ttsaved == 0) + return -1; + tt = ttin; + return (ttfd_cbreak (0, &tt)); +} diff --git a/bash-5.1/lib/sh/snprintf.c b/bash-5.1/lib/sh/snprintf.c new file mode 100644 index 0000000..406a3a5 --- /dev/null +++ b/bash-5.1/lib/sh/snprintf.c @@ -0,0 +1,2221 @@ +/* snprintf - formatted output to strings, with bounds checking and allocation */ + +/* + build a test version with + gcc -g -DDRIVER -I../.. -I../../include -o test-snprintf snprintf.c fmtu*long.o +*/ + +/* + Unix snprintf implementation. + derived from inetutils/libinetutils/snprintf.c Version 1.1 + + Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . + + Original (pre-bash) Revision History: + + 1.1: + * added changes from Miles Bader + * corrected a bug with %f + * added support for %#g + * added more comments :-) + 1.0: + * supporting must ANSI syntaxic_sugars + 0.0: + * support %s %c %d + + THANKS(for the patches and ideas): + Miles Bader + Cyrille Rustom + Jacek Slabocewiz + Mike Parker(mouse) + +*/ + +/* + * Currently doesn't handle (and bash/readline doesn't use): + * * *M$ width, precision specifications + * * %N$ numbered argument conversions + * * support for `F' is imperfect with ldfallback(), since underlying + * printf may not handle it -- should ideally have another autoconf test + */ + +#define FLOATING_POINT + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* GCC 4.2 on Snow Leopard doesn't like the snprintf prototype */ +#if defined(DEBUG) && !defined (MACOSX) +# undef HAVE_SNPRINTF +# undef HAVE_ASPRINTF + +# define HAVE_SNPRINTF 0 +# define HAVE_ASPRINTF 0 +#endif + +#if defined(DRIVER) && !defined(HAVE_CONFIG_H) +#define HAVE_LONG_LONG +#define HAVE_LONG_DOUBLE +#ifdef __linux__ +#define HAVE_PRINTF_A_FORMAT +#endif +#define HAVE_ISINF_IN_LIBC +#define HAVE_ISNAN_IN_LIBC +#define PREFER_STDARG +#define HAVE_STRINGIZE +#define HAVE_LIMITS_H +#define HAVE_STDDEF_H +#define HAVE_LOCALE_H +#define intmax_t long +#endif + +#if !HAVE_SNPRINTF || !HAVE_ASPRINTF + +#include + +#if defined(PREFER_STDARG) +# include +#else +# include +#endif + +#ifdef HAVE_LIMITS_H +# include +#endif +#include +#ifdef HAVE_STDDEF_H +# include +#endif +#include + +#ifdef HAVE_STDINT_H +# include +#endif + +#ifdef FLOATING_POINT +# include /* for manifest constants */ +# include /* for sprintf */ +#endif + +#include + +#ifdef HAVE_LOCALE_H +# include +#endif + +#include "stdc.h" +#include + +#ifndef DRIVER +# include "shell.h" +#else +# define FL_PREFIX 0x01 /* add 0x, 0X, or 0 prefix as appropriate */ +# define FL_ADDBASE 0x02 /* add base# prefix to converted value */ +# define FL_HEXUPPER 0x04 /* use uppercase when converting to hex */ +# define FL_UNSIGNED 0x08 /* don't add any sign */ +extern char *fmtulong PARAMS((unsigned long int, int, char *, size_t, int)); +extern char *fmtullong PARAMS((unsigned long long int, int, char *, size_t, int)); +#endif + +#ifndef FREE +# define FREE(x) if (x) free (x) +#endif + +/* Bound on length of the string representing an integer value of type T. + Subtract one for the sign bit if T is signed; + 302 / 1000 is log10 (2) rounded up; + add one for integer division truncation; + add one more for a minus sign if t is signed. */ +#ifndef INT_STRLEN_BOUND +#define INT_STRLEN_BOUND(t) \ + ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 \ + + 1 + TYPE_SIGNED (t)) +#endif + +/* conversion flags */ +#define PF_ALTFORM 0x00001 /* # */ +#define PF_HEXPREFIX 0x00002 /* 0[Xx] */ +#define PF_LADJUST 0x00004 /* - */ +#define PF_ZEROPAD 0x00008 /* 0 */ +#define PF_PLUS 0x00010 /* + */ +#define PF_SPACE 0x00020 /* ' ' */ +#define PF_THOUSANDS 0x00040 /* ' */ + +#define PF_DOT 0x00080 /* `.precision' */ +#define PF_STAR_P 0x00100 /* `*' after precision */ +#define PF_STAR_W 0x00200 /* `*' before or without precision */ + +/* length modifiers */ +#define PF_SIGNEDCHAR 0x00400 /* hh */ +#define PF_SHORTINT 0x00800 /* h */ +#define PF_LONGINT 0x01000 /* l */ +#define PF_LONGLONG 0x02000 /* ll */ +#define PF_LONGDBL 0x04000 /* L */ +#define PF_INTMAX_T 0x08000 /* j */ +#define PF_SIZE_T 0x10000 /* z */ +#define PF_PTRDIFF_T 0x20000 /* t */ + +#define PF_ALLOCBUF 0x40000 /* for asprintf, vasprintf */ + +#define PFM_SN 0x01 /* snprintf, vsnprintf */ +#define PFM_AS 0x02 /* asprintf, vasprintf */ + +#define ASBUFSIZE 128 + +#define x_digs "0123456789abcdef" +#define X_digs "0123456789ABCDEF" + +static char intbuf[INT_STRLEN_BOUND(unsigned long) + 1]; + +static int decpoint; +static int thoussep; +static char *grouping; + +/* + * For the FLOATING POINT FORMAT : + * the challenge was finding a way to + * manipulate the Real numbers without having + * to resort to mathematical function(it + * would require to link with -lm) and not + * going down to the bit pattern(not portable) + * + * so a number, a real is: + + real = integral + fraction + + integral = ... + a(2)*10^2 + a(1)*10^1 + a(0)*10^0 + fraction = b(1)*10^-1 + b(2)*10^-2 + ... + + where: + 0 <= a(i) => 9 + 0 <= b(i) => 9 + + from then it was simple math + */ + +/* + * size of the buffer for the integral part + * and the fraction part + */ +#define MAX_INT 99 + 1 /* 1 for the null */ +#define MAX_FRACT 307 + 1 + +/* + * These functions use static buffers to store the results, + * and so are not reentrant + */ +#define itoa(n) fmtulong(n, 10, intbuf, sizeof(intbuf), 0); +#define dtoa(n, p, f) numtoa(n, 10, p, f) + +#define SWAP_INT(a,b) {int t; t = (a); (a) = (b); (b) = t;} + +#define GETARG(type) (va_arg(args, type)) + +/* Macros that do proper sign extension and handle length modifiers. Used + for the integer conversion specifiers. */ +#define GETSIGNED(p) \ + (((p)->flags & PF_LONGINT) \ + ? GETARG (long) \ + : (((p)->flags & PF_SHORTINT) ? (long)(short)GETARG (int) \ + : (long)GETARG (int))) + +#define GETUNSIGNED(p) \ + (((p)->flags & PF_LONGINT) \ + ? GETARG (unsigned long) \ + : (((p)->flags & PF_SHORTINT) ? (unsigned long)(unsigned short)GETARG (int) \ + : (unsigned long)GETARG (unsigned int))) + + +#ifdef HAVE_LONG_DOUBLE +#define GETLDOUBLE(p) GETARG (long double) +#endif +#define GETDOUBLE(p) GETARG (double) + +#define SET_SIZE_FLAGS(p, type) \ + if (sizeof (type) > sizeof (int)) \ + (p)->flags |= PF_LONGINT; \ + if (sizeof (type) > sizeof (long)) \ + (p)->flags |= PF_LONGLONG; + +/* this struct holds everything we need */ +struct DATA +{ + int length; + char *base; /* needed for [v]asprintf */ + char *holder; + int counter; + const char *pf; + +/* FLAGS */ + int flags; + int justify; + int width, precision; + char pad; +}; + +/* the floating point stuff */ +#ifdef FLOATING_POINT +static double pow_10 PARAMS((int)); +static int log_10 PARAMS((double)); +static double integral PARAMS((double, double *)); +static char *numtoa PARAMS((double, int, int, char **)); +#endif + +static void init_data PARAMS((struct DATA *, char *, size_t, const char *, int)); +static void init_conv_flag PARAMS((struct DATA *)); + +/* for the format */ +#ifdef FLOATING_POINT +static void floating PARAMS((struct DATA *, double)); +static void exponent PARAMS((struct DATA *, double)); +#endif +static void number PARAMS((struct DATA *, unsigned long, int)); +#ifdef HAVE_LONG_LONG +static void lnumber PARAMS((struct DATA *, unsigned long long, int)); +#endif +static void pointer PARAMS((struct DATA *, unsigned long)); +static void strings PARAMS((struct DATA *, char *)); + +#ifdef FLOATING_POINT +# define FALLBACK_FMTSIZE 32 +# define FALLBACK_BASE 4096 +# define LFALLBACK_BASE 5120 +# ifdef HAVE_LONG_DOUBLE +static void ldfallback PARAMS((struct DATA *, const char *, const char *, long double)); +# endif +static void dfallback PARAMS((struct DATA *, const char *, const char *, double)); +#endif + +static char *groupnum PARAMS((char *)); + +#if defined (HAVE_LONG_DOUBLE) +# define LONGDOUBLE long double +#else +# define LONGDOUBLE double +#endif + +#ifndef isnan + static inline int isnan_f (float x) { return x != x; } + static inline int isnan_d (double x) { return x != x; } + static inline int isnan_ld (LONGDOUBLE x) { return x != x; } + # define isnan(x) \ + (sizeof (x) == sizeof (LONGDOUBLE) ? isnan_ld (x) \ + : sizeof (x) == sizeof (double) ? isnan_d (x) \ + : isnan_f (x)) +#endif + +#ifndef isinf + static inline int isinf_f (float x) { return !isnan (x) && isnan (x - x); } + static inline int isinf_d (double x) { return !isnan (x) && isnan (x - x); } + static inline int isinf_ld (LONGDOUBLE x) { return !isnan (x) && isnan (x - x); } + # define isinf(x) \ + (sizeof (x) == sizeof (LONGDOUBLE) ? isinf_ld (x) \ + : sizeof (x) == sizeof (double) ? isinf_d (x) \ + : isinf_f (x)) +#endif + +#ifdef DRIVER +static void memory_error_and_abort (); +static void *xmalloc PARAMS((size_t)); +static void *xrealloc PARAMS((void *, size_t)); +static void xfree PARAMS((void *)); +#else +# include +#endif + +/* those are defines specific to snprintf to hopefully + * make the code clearer :-) + */ +#define RIGHT 1 +#define LEFT 0 +#define NOT_FOUND -1 +#define FOUND 1 +#define MAX_FIELD 15 + +/* round off to the precision */ +#define ROUND(d, p) \ + (d < 0.) ? \ + d - pow_10(-(p)->precision) * 0.5 : \ + d + pow_10(-(p)->precision) * 0.5 + +/* set default precision */ +#define DEF_PREC(p) \ + if ((p)->precision == NOT_FOUND) \ + (p)->precision = 6 + +/* put a char. increment the number of chars written even if we've exceeded + the vsnprintf/snprintf buffer size (for the return value) */ +#define PUT_CHAR(c, p) \ + do \ + { \ + if (((p)->flags & PF_ALLOCBUF) && ((p)->counter >= (p)->length - 1)) \ + { \ + (p)->length += ASBUFSIZE; \ + (p)->base = (char *)xrealloc((p)->base, (p)->length); \ + (p)->holder = (p)->base + (p)->counter; /* in case reallocated */ \ + } \ + if ((p)->counter < (p)->length) \ + *(p)->holder++ = (c); \ + (p)->counter++; \ + } \ + while (0) + +/* Output a string. P->WIDTH has already been adjusted for padding. */ +#define PUT_STRING(string, len, p) \ + do \ + { \ + PAD_RIGHT (p); \ + while ((len)-- > 0) \ + { \ + PUT_CHAR (*(string), (p)); \ + (string)++; \ + } \ + PAD_LEFT (p); \ + } \ + while (0) + +#define PUT_PLUS(d, p, zero) \ + if (((p)->flags & PF_PLUS) && (d) > zero) \ + PUT_CHAR('+', p) + +#define PUT_SPACE(d, p, zero) \ + if (((p)->flags & PF_SPACE) && (d) > zero) \ + PUT_CHAR(' ', p) + +/* pad right */ +#define PAD_RIGHT(p) \ + if ((p)->width > 0 && (p)->justify != LEFT) \ + for (; (p)->width > 0; (p)->width--) \ + PUT_CHAR((p)->pad, p) + +/* pad left */ +#define PAD_LEFT(p) \ + if ((p)->width > 0 && (p)->justify == LEFT) \ + for (; (p)->width > 0; (p)->width--) \ + PUT_CHAR((p)->pad, p) + +/* pad with zeros from decimal precision */ +#define PAD_ZERO(p) \ + if ((p)->precision > 0) \ + for (; (p)->precision > 0; (p)->precision--) \ + PUT_CHAR('0', p) + +/* if width and prec. in the args */ +#define STAR_ARGS(p) \ + do { \ + if ((p)->flags & PF_STAR_W) \ + { \ + (p)->width = GETARG (int); \ + if ((p)->width < 0) \ + { \ + (p)->flags |= PF_LADJUST; \ + (p)->justify = LEFT; \ + (p)->width = -(p)->width; \ + } \ + } \ + if ((p)->flags & PF_STAR_P) \ + { \ + (p)->precision = GETARG (int); \ + if ((p)->precision < 0) \ + { \ + (p)->flags &= ~PF_STAR_P; \ + (p)->precision = NOT_FOUND; \ + } \ + } \ + } while (0) + +#if defined (HAVE_LOCALE_H) && defined (HAVE_LOCALECONV) +# define GETLOCALEDATA(d, t, g) \ + do \ + { \ + struct lconv *lv; \ + if ((d) == 0) { \ + (d) = '.'; (t) = -1; (g) = 0; /* defaults */ \ + lv = localeconv(); \ + if (lv) \ + { \ + if (lv->decimal_point && lv->decimal_point[0]) \ + (d) = lv->decimal_point[0]; \ + if (lv->thousands_sep && lv->thousands_sep[0]) \ + (t) = lv->thousands_sep[0]; \ + (g) = lv->grouping ? lv->grouping : ""; \ + if (*(g) == '\0' || *(g) == CHAR_MAX || (t) == -1) (g) = 0; \ + } \ + } \ + } \ + while (0); +#else +# define GETLOCALEDATA(d, t, g) \ + ( (d) = '.', (t) = ',', g = "\003" ) +#endif + +#ifdef FLOATING_POINT +/* + * Find the nth power of 10 + */ +static double +pow_10(n) + int n; +{ + double P; + + /* handle common cases with fast switch statement. */ + switch (n) + { + case -3: return .001; + case -2: return .01; + case -1: return .1; + case 0: return 1.; + case 1: return 10.; + case 2: return 100.; + case 3: return 1000.; + } + + if (n < 0) + { + P = .0001; + for (n += 4; n < 0; n++) + P /= 10.; + } + else + { + P = 10000.; + for (n -= 4; n > 0; n--) + P *= 10.; + } + + return P; +} + +/* + * Find the integral part of the log in base 10 + * Note: this not a real log10() + I just need and approximation(integerpart) of x in: + 10^x ~= r + * log_10(200) = 2; + * log_10(250) = 2; + * + * NOTE: do not call this with r == 0 -- an infinite loop results. + */ +static int +log_10(r) + double r; +{ + int i = 0; + double result = 1.; + + if (r < 0.) + r = -r; + + if (r < 1.) + { + while (result >= r) + { + result /= 10.; + i++; + } + return (-i); + } + else + { + while (result <= r) + { + result *= 10.; + i++; + } + return (i - 1); + } +} + +/* + * This function return the fraction part of a double + * and set in ip the integral part. + * In many ways it resemble the modf() found on most Un*x + */ +static double +integral(real, ip) + double real; + double *ip; +{ + int j; + double i, s, p; + double real_integral = 0.; + + /* take care of the obvious */ + /* equal to zero ? */ + if (real == 0.) + { + *ip = 0.; + return (0.); + } + + /* negative number ? */ + if (real < 0.) + real = -real; + + /* a fraction ? */ + if ( real < 1.) + { + *ip = 0.; + return real; + } + + /* the real work :-) */ + for (j = log_10(real); j >= 0; j--) + { + p = pow_10(j); + s = (real - real_integral)/p; + i = 0.; + while (i + 1. <= s) + i++; + real_integral += i*p; + } + *ip = real_integral; + return (real - real_integral); +} + +#define PRECISION 1.e-6 +/* + * return an ascii representation of the integral part of the number + * and set fract to be an ascii representation of the fraction part + * the container for the fraction and the integral part or statically + * declare with fix size + */ +static char * +numtoa(number, base, precision, fract) + double number; + int base, precision; + char **fract; +{ + register int i, j; + double ip, fp; /* integer and fraction part */ + double fraction; + int digits, sign; + static char integral_part[MAX_INT]; + static char fraction_part[MAX_FRACT]; + int ch; + + /* taking care of the obvious case: 0.0 */ + if (number == 0.) + { + integral_part[0] = '0'; + integral_part[1] = '\0'; + /* The fractional part has to take the precision into account */ + for (ch = 0; ch < precision-1; ch++) + fraction_part[ch] = '0'; + fraction_part[ch] = '0'; + fraction_part[ch+1] = '\0'; + if (fract) + *fract = fraction_part; + return integral_part; + } + + /* -0 is tricky */ + sign = (number == -0.) ? '-' : ((number < 0.) ? '-' : '+'); + digits = MAX_INT - 1; + + /* for negative numbers */ + if (sign == '-') + { + number = -number; + digits--; /* sign consume one digit */ + } + + fraction = integral(number, &ip); + number = ip; + + /* do the integral part */ + if (ip == 0.) + { + integral_part[0] = '0'; + i = 1; + } + else + { + for ( i = 0; i < digits && number != 0.; ++i) + { + number /= base; + fp = integral(number, &ip); + ch = (int)((fp + PRECISION)*base); /* force to round */ + integral_part[i] = (ch <= 9) ? ch + '0' : ch + 'a' - 10; + if (! ISXDIGIT((unsigned char)integral_part[i])) + break; /* bail out overflow !! */ + number = ip; + } + } + + /* Oh No !! out of bound, ho well fill it up ! */ + if (number != 0.) + for (i = 0; i < digits; ++i) + integral_part[i] = '9'; + + /* put the sign ? */ + if (sign == '-') + integral_part[i++] = '-'; + + integral_part[i] = '\0'; + + /* reverse every thing */ + for ( i--, j = 0; j < i; j++, i--) + SWAP_INT(integral_part[i], integral_part[j]); + + /* the fractional part */ + for (i=0, fp=fraction; precision > 0 && i < MAX_FRACT ; i++, precision--) + { + fraction_part[i] = (int)((fp + PRECISION)*10. + '0'); + if (! DIGIT(fraction_part[i])) /* underflow ? */ + break; + fp = (fp*10.0) - (double)(long)((fp + PRECISION)*10.); + } + fraction_part[i] = '\0'; + + if (fract != (char **)0) + *fract = fraction_part; + + return integral_part; +} +#endif + +/* for %d and friends, it puts in holder + * the representation with the right padding + */ +static void +number(p, d, base) + struct DATA *p; + unsigned long d; + int base; +{ + char *tmp, *t; + long sd; + int flags; + + /* An explicit precision turns off the zero-padding flag and sets the + pad character back to space. */ + if ((p->flags & PF_ZEROPAD) && p->precision >= 0 && (p->flags & PF_DOT)) + { + p->flags &= ~PF_ZEROPAD; + p->pad = ' '; + } + + sd = d; /* signed for ' ' padding in base 10 */ + flags = 0; + flags = (*p->pf == 'x' || *p->pf == 'X' || *p->pf == 'o' || *p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0; + if (*p->pf == 'X') + flags |= FL_HEXUPPER; + + tmp = fmtulong (d, base, intbuf, sizeof(intbuf), flags); + t = 0; + if ((p->flags & PF_THOUSANDS)) + { + GETLOCALEDATA(decpoint, thoussep, grouping); + if (grouping && (t = groupnum (tmp))) + tmp = t; + } + + /* need to add one for any `+', but we only add one in base 10 */ + p->width -= strlen(tmp) + (base == 10 && d > 0 && (p->flags & PF_PLUS)); + PAD_RIGHT(p); + + if ((p->flags & PF_DOT) && p->precision > 0) + { + p->precision -= strlen(tmp); + PAD_ZERO(p); + } + + switch (base) + { + case 10: + PUT_PLUS(sd, p, 0); + PUT_SPACE(sd, p, 0); + break; + case 8: + if (p->flags & PF_ALTFORM) + PUT_CHAR('0', p); + break; + case 16: + if (p->flags & PF_ALTFORM) + { + PUT_CHAR('0', p); + PUT_CHAR(*p->pf, p); + } + break; + } + + while (*tmp) + { + PUT_CHAR(*tmp, p); + tmp++; + } + + PAD_LEFT(p); + FREE (t); +} + +#ifdef HAVE_LONG_LONG +/* + * identical to number() but works for `long long' + */ +static void +lnumber(p, d, base) + struct DATA *p; + unsigned long long d; + int base; +{ + char *tmp, *t; + long long sd; + int flags; + + /* An explicit precision turns off the zero-padding flag and sets the + pad character back to space. */ + if ((p->flags & PF_ZEROPAD) && p->precision >= 0 && (p->flags & PF_DOT)) + { + p->flags &= ~PF_ZEROPAD; + p->pad = ' '; + } + + sd = d; /* signed for ' ' padding in base 10 */ + flags = (*p->pf == 'x' || *p->pf == 'X' || *p->pf == 'o' || *p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0; + if (*p->pf == 'X') + flags |= FL_HEXUPPER; + + tmp = fmtullong (d, base, intbuf, sizeof(intbuf), flags); + t = 0; + if ((p->flags & PF_THOUSANDS)) + { + GETLOCALEDATA(decpoint, thoussep, grouping); + if (grouping && (t = groupnum (tmp))) + tmp = t; + } + + /* need to add one for any `+', but we only add one in base 10 */ + p->width -= strlen(tmp) + (base == 10 && d > 0 && (p->flags & PF_PLUS)); + PAD_RIGHT(p); + + if ((p->flags & PF_DOT) && p->precision > 0) + { + p->precision -= strlen(tmp); + PAD_ZERO(p); + } + + switch (base) + { + case 10: + PUT_PLUS(sd, p, 0); + PUT_SPACE(sd, p, 0); + break; + case 8: + if (p->flags & PF_ALTFORM) + PUT_CHAR('0', p); + break; + case 16: + if (p->flags & PF_ALTFORM) + { + PUT_CHAR('0', p); + PUT_CHAR(*p->pf, p); + } + break; + } + + while (*tmp) + { + PUT_CHAR(*tmp, p); + tmp++; + } + + PAD_LEFT(p); + FREE (t); +} +#endif + +static void +pointer(p, d) + struct DATA *p; + unsigned long d; +{ + char *tmp; + + tmp = fmtulong(d, 16, intbuf, sizeof(intbuf), 0); + p->width -= strlen(tmp); + PAD_RIGHT(p); + + /* prefix '0x' for pointers */ + PUT_CHAR('0', p); + PUT_CHAR('x', p); + + while (*tmp) + { + PUT_CHAR(*tmp, p); + tmp++; + } + + PAD_LEFT(p); +} + +/* %s strings */ +static void +strings(p, tmp) + struct DATA *p; + char *tmp; +{ + size_t len; + + len = strlen(tmp); + if (p->precision != NOT_FOUND) /* the smallest number */ + len = (len < p->precision ? len : p->precision); + p->width -= len; + + PUT_STRING (tmp, len, p); +} + +#if HANDLE_MULTIBYTE +/* %ls wide-character strings */ +static void +wstrings(p, tmp) + struct DATA *p; + wchar_t *tmp; +{ + size_t len; + mbstate_t mbs; + char *os; + const wchar_t *ws; + + memset (&mbs, '\0', sizeof (mbstate_t)); + ws = (const wchar_t *)tmp; + + os = (char *)NULL; + if (p->precision != NOT_FOUND) + { + os = (char *)xmalloc (p->precision + 1); + len = wcsrtombs (os, &ws, p->precision, &mbs); + } + else + { + len = wcsrtombs (NULL, &ws, 0, &mbs); + if (len != (size_t)-1) + { + memset (&mbs, '\0', sizeof (mbstate_t)); + os = (char *)xmalloc (len + 1); + (void)wcsrtombs (os, &ws, len + 1, &mbs); + } + } + if (len == (size_t)-1) + { + /* invalid multibyte sequence; bail now. */ + FREE (os); + return; + } + + p->width -= len; + PUT_STRING (os, len, p); + free (os); +} + +static void +wchars (p, wc) + struct DATA *p; + wint_t wc; +{ + char *lbuf, *l; + mbstate_t mbs; + size_t len; + + lbuf = (char *)malloc (MB_CUR_MAX+1); + if (lbuf == 0) + return; + memset (&mbs, '\0', sizeof (mbstate_t)); + len = wcrtomb (lbuf, wc, &mbs); + if (len == (size_t)-1) + /* conversion failed; bail now. */ + return; + p->width -= len; + l = lbuf; + PUT_STRING (l, len, p); + free (lbuf); +} +#endif /* HANDLE_MULTIBYTE */ + +#ifdef FLOATING_POINT + +/* Check for [+-]infinity and NaN. If MODE == 1, we check for Infinity, else + (mode == 2) we check for NaN. This does the necessary printing. Returns + 1 if Inf or Nan, 0 if not. */ +static int +chkinfnan(p, d, mode) + struct DATA *p; + double d; + int mode; /* == 1 for inf, == 2 for nan */ +{ + int i; + char *tmp; + char *big, *small; + + i = (mode == 1) ? isinf(d) : isnan(d); + if (i == 0) + return 0; + big = (mode == 1) ? "INF" : "NAN"; + small = (mode == 1) ? "inf" : "nan"; + + tmp = (*p->pf == 'F' || *p->pf == 'G' || *p->pf == 'E') ? big : small; + + if (i < 0) + PUT_CHAR('-', p); + + while (*tmp) + { + PUT_CHAR (*tmp, p); + tmp++; + } + + return 1; +} + +/* %f %F %g %G floating point representation */ +static void +floating(p, d) + struct DATA *p; + double d; +{ + char *tmp, *tmp2, *t; + int i; + + if (d != 0 && (chkinfnan(p, d, 1) || chkinfnan(p, d, 2))) + return; /* already printed nan or inf */ + + GETLOCALEDATA(decpoint, thoussep, grouping); + DEF_PREC(p); + d = ROUND(d, p); + tmp = dtoa(d, p->precision, &tmp2); + t = 0; + if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp))) + tmp = t; + + if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0) + { + /* smash the trailing zeros unless altform */ + for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--) + tmp2[i] = '\0'; + if (tmp2[0] == '\0') + p->precision = 0; + } + + /* calculate the padding. 1 for the dot */ + p->width = p->width - + /* XXX - should this be d>0. && (p->flags & PF_PLUS) ? */ +#if 0 + ((d > 0. && p->justify == RIGHT) ? 1:0) - +#else + ((d > 0. && (p->flags & PF_PLUS)) ? 1:0) - +#endif + ((p->flags & PF_SPACE) ? 1:0) - + strlen(tmp) - p->precision - + ((p->precision != 0 || (p->flags & PF_ALTFORM)) ? 1 : 0); /* radix char */ + + if (p->pad == ' ') + { + PAD_RIGHT(p); + PUT_PLUS(d, p, 0.); + } + else + { + if (*tmp == '-') + PUT_CHAR(*tmp++, p); + PUT_PLUS(d, p, 0.); + PAD_RIGHT(p); + } + PUT_SPACE(d, p, 0.); + + while (*tmp) + { + PUT_CHAR(*tmp, p); /* the integral */ + tmp++; + } + FREE (t); + + if (p->precision != 0 || (p->flags & PF_ALTFORM)) + PUT_CHAR(decpoint, p); /* put the '.' */ + + for (; *tmp2; tmp2++) + PUT_CHAR(*tmp2, p); /* the fraction */ + + PAD_LEFT(p); +} + +/* %e %E %g %G exponent representation */ +static void +exponent(p, d) + struct DATA *p; + double d; +{ + char *tmp, *tmp2; + int j, i; + + if (d != 0 && (chkinfnan(p, d, 1) || chkinfnan(p, d, 2))) + return; /* already printed nan or inf */ + + GETLOCALEDATA(decpoint, thoussep, grouping); + DEF_PREC(p); + if (d == 0.) + j = 0; + else + { + j = log_10(d); + d = d / pow_10(j); /* get the Mantissa */ + d = ROUND(d, p); + } + tmp = dtoa(d, p->precision, &tmp2); + + /* 1 for unit, 1 for the '.', 1 for 'e|E', + * 1 for '+|-', 2 for 'exp' (but no `.' if precision == 0 */ + /* calculate how much padding need */ + p->width = p->width - + /* XXX - should this be d>0. && (p->flags & PF_PLUS) ? */ +#if 0 + ((d > 0. && p->justify == RIGHT) ? 1:0) - +#else + ((d > 0. && (p->flags & PF_PLUS)) ? 1:0) - +#endif + (p->precision != 0 || (p->flags & PF_ALTFORM)) - + ((p->flags & PF_SPACE) ? 1:0) - p->precision - 5; + + if (p->pad == ' ') + { + PAD_RIGHT(p); + PUT_PLUS(d, p, 0.); + } + else + { + if (*tmp == '-') + PUT_CHAR(*tmp++, p); + PUT_PLUS(d, p, 0.); + PAD_RIGHT(p); + } + PUT_SPACE(d, p, 0.); + + while (*tmp) + { + PUT_CHAR(*tmp, p); + tmp++; + } + + if (p->precision != 0 || (p->flags & PF_ALTFORM)) + PUT_CHAR(decpoint, p); /* the '.' */ + + if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0) + /* smash the trailing zeros unless altform */ + for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--) + tmp2[i] = '\0'; + + for (; *tmp2; tmp2++) + PUT_CHAR(*tmp2, p); /* the fraction */ + + /* the exponent put the 'e|E' */ + if (*p->pf == 'g' || *p->pf == 'e') + PUT_CHAR('e', p); + else + PUT_CHAR('E', p); + + /* the sign of the exp */ + if (j >= 0) + PUT_CHAR('+', p); + else + { + PUT_CHAR('-', p); + j = -j; + } + + tmp = itoa(j); + /* pad out to at least two spaces. pad with `0' if the exponent is a + single digit. */ + if (j <= 9) + PUT_CHAR('0', p); + + /* the exponent */ + while (*tmp) + { + PUT_CHAR(*tmp, p); + tmp++; + } + + PAD_LEFT(p); +} +#endif + +/* Return a new string with the digits in S grouped according to the locale's + grouping info and thousands separator. If no grouping should be performed, + this returns NULL; the caller needs to check for it. */ +static char * +groupnum (s) + char *s; +{ + char *se, *ret, *re, *g; + int len, slen; + + if (grouping == 0 || *grouping <= 0 || *grouping == CHAR_MAX) + return ((char *)NULL); + + /* find min grouping to size returned string */ + for (len = *grouping, g = grouping; *g; g++) + if (*g > 0 && *g < len) + len = *g; + + slen = strlen (s); + len = slen / len + 1; + ret = (char *)xmalloc (slen + len + 1); + re = ret + slen + len; + *re = '\0'; + + g = grouping; + se = s + slen; + len = *g; + + while (se > s) + { + *--re = *--se; + + /* handle `-' inserted by numtoa() and the fmtu* family here. */ + if (se > s && se[-1] == '-') + continue; + + /* begin new group. */ + if (--len == 0 && se > s) + { + *--re = thoussep; + len = *++g; /* was g++, but that uses first char twice (glibc bug, too) */ + if (*g == '\0') + len = *--g; /* use previous grouping */ + else if (*g == CHAR_MAX) + { + do + *--re = *--se; + while (se > s); + break; + } + } + } + + if (re > ret) +#ifdef HAVE_MEMMOVE + memmove (ret, re, strlen (re) + 1); +#else + strcpy (ret, re); +#endif + + return ret; +} + +/* initialize the conversion specifiers */ +static void +init_conv_flag (p) + struct DATA *p; +{ + p->flags &= PF_ALLOCBUF; /* preserve PF_ALLOCBUF flag */ + p->precision = p->width = NOT_FOUND; + p->justify = NOT_FOUND; + p->pad = ' '; +} + +static void +init_data (p, string, length, format, mode) + struct DATA *p; + char *string; + size_t length; + const char *format; + int mode; +{ + p->length = length - 1; /* leave room for '\0' */ + p->holder = p->base = string; + p->pf = format; + p->counter = 0; + p->flags = (mode == PFM_AS) ? PF_ALLOCBUF : 0; +} + +static int +#if defined (__STDC__) +vsnprintf_internal(struct DATA *data, char *string, size_t length, const char *format, va_list args) +#else +vsnprintf_internal(data, string, length, format, args) + struct DATA *data; + char *string; + size_t length; + const char *format; + va_list args; +#endif +{ + double d; /* temporary holder */ +#ifdef HAVE_LONG_DOUBLE + long double ld; /* for later */ +#endif + unsigned long ul; +#ifdef HAVE_LONG_LONG + unsigned long long ull; +#endif + int state, i, c, n; + char *s; +#if HANDLE_MULTIBYTE + wchar_t *ws; + wint_t wc; +#endif + const char *convstart; + int negprec; + + /* Sanity check, the string length must be >= 0. C99 actually says that + LENGTH can be zero here, in the case of snprintf/vsnprintf (it's never + 0 in the case of asprintf/vasprintf), and the return value is the number + of characters that would have been written. */ + if (length < 0) + return -1; + + if (format == 0) + return 0; + + /* Reset these for each call because the locale might have changed. */ + decpoint = thoussep = 0; + grouping = 0; + + negprec = 0; + for (; c = *(data->pf); data->pf++) + { + if (c != '%') + { + PUT_CHAR (c, data); + continue; + } + + convstart = data->pf; + init_conv_flag (data); /* initialise format flags */ + + state = 1; + for (state = 1; state && *data->pf; ) + { + c = *(++data->pf); + /* fmtend = data->pf */ +#if defined (FLOATING_POINT) && defined (HAVE_LONG_DOUBLE) + if (data->flags & PF_LONGDBL) + { + switch (c) + { + case 'f': case 'F': + case 'e': case 'E': + case 'g': case 'G': +# ifdef HAVE_PRINTF_A_FORMAT + case 'a': case 'A': +# endif + STAR_ARGS (data); + ld = GETLDOUBLE (data); + ldfallback (data, convstart, data->pf, ld); + goto conv_break; + } + } +#endif /* FLOATING_POINT && HAVE_LONG_DOUBLE */ + + switch (c) + { + /* Parse format flags */ + case '\0': /* a NULL here ? ? bail out */ + *data->holder = '\0'; + return data->counter; + break; + case '#': + data->flags |= PF_ALTFORM; + continue; + case '*': + if (data->flags & PF_DOT) + data->flags |= PF_STAR_P; + else + data->flags |= PF_STAR_W; + continue; + case '-': + if ((data->flags & PF_DOT) == 0) + { + data->flags |= PF_LADJUST; + data->justify = LEFT; + } + else + negprec = 1; + continue; + case ' ': + if ((data->flags & PF_PLUS) == 0) + data->flags |= PF_SPACE; + continue; + case '+': + if ((data->flags & PF_DOT) == 0) + { + data->flags |= PF_PLUS; + if ((data->flags & PF_LADJUST) == 0) + data->justify = RIGHT; + } + continue; + case '\'': + data->flags |= PF_THOUSANDS; + continue; + + case '0': + /* If we're not specifying precision (in which case we've seen + a `.') and we're not performing left-adjustment (in which + case the `0' is ignored), a `0' is taken as the zero-padding + flag. */ + if ((data->flags & (PF_DOT|PF_LADJUST)) == 0) + { + data->flags |= PF_ZEROPAD; + data->pad = '0'; + continue; + } + case '1': case '2': case '3': + case '4': case '5': case '6': + case '7': case '8': case '9': + n = 0; + do + { + n = n * 10 + TODIGIT(c); + c = *(++data->pf); + } + while (DIGIT(c)); + data->pf--; /* went too far */ + if (n < 0) + n = 0; + if (data->flags & PF_DOT) + data->precision = negprec ? NOT_FOUND : n; + else + data->width = n; + continue; + + /* optional precision */ + case '.': + data->flags |= PF_DOT; + data->precision = 0; + continue; + + /* length modifiers */ + case 'h': + data->flags |= (data->flags & PF_SHORTINT) ? PF_SIGNEDCHAR : PF_SHORTINT; + continue; + case 'l': + data->flags |= (data->flags & PF_LONGINT) ? PF_LONGLONG : PF_LONGINT; + continue; + case 'L': + data->flags |= PF_LONGDBL; + continue; + case 'q': + data->flags |= PF_LONGLONG; + continue; + case 'j': + data->flags |= PF_INTMAX_T; + SET_SIZE_FLAGS(data, intmax_t); + continue; + case 'z': + data->flags |= PF_SIZE_T; + SET_SIZE_FLAGS(data, size_t); + continue; + case 't': + data->flags |= PF_PTRDIFF_T; + SET_SIZE_FLAGS(data, ptrdiff_t); + continue; + + /* Conversion specifiers */ +#ifdef FLOATING_POINT + case 'f': /* float, double */ + case 'F': + STAR_ARGS(data); + d = GETDOUBLE(data); + floating(data, d); +conv_break: + state = 0; + break; + case 'g': + case 'G': + STAR_ARGS(data); + DEF_PREC(data); + d = GETDOUBLE(data); + i = (d != 0.) ? log_10(d) : -1; + /* + * for '%g|%G' ANSI: use f if exponent + * is in the range or [-4,p] exclusively + * else use %e|%E + */ + if (-4 < i && i < data->precision) + { + /* reset precision */ + data->precision -= i + 1; + floating(data, d); + } + else + { + /* reduce precision by 1 because of leading digit before + decimal point in e format, unless specified as 0. */ + if (data->precision > 0) + data->precision--; + exponent(data, d); + } + state = 0; + break; + case 'e': + case 'E': /* Exponent double */ + STAR_ARGS(data); + d = GETDOUBLE(data); + exponent(data, d); + state = 0; + break; +# ifdef HAVE_PRINTF_A_FORMAT + case 'a': + case 'A': + STAR_ARGS(data); + d = GETDOUBLE(data); + dfallback(data, convstart, data->pf, d); + state = 0; + break; +# endif /* HAVE_PRINTF_A_FORMAT */ +#endif /* FLOATING_POINT */ + case 'U': + data->flags |= PF_LONGINT; + /* FALLTHROUGH */ + case 'u': + STAR_ARGS(data); +#ifdef HAVE_LONG_LONG + if (data->flags & PF_LONGLONG) + { + ull = GETARG (unsigned long long); + lnumber(data, ull, 10); + } + else +#endif + { + ul = GETUNSIGNED(data); + number(data, ul, 10); + } + state = 0; + break; + case 'D': + data->flags |= PF_LONGINT; + /* FALLTHROUGH */ + case 'd': /* decimal */ + case 'i': + STAR_ARGS(data); +#ifdef HAVE_LONG_LONG + if (data->flags & PF_LONGLONG) + { + ull = GETARG (long long); + lnumber(data, ull, 10); + } + else +#endif + { + ul = GETSIGNED(data); + number(data, ul, 10); + } + state = 0; + break; + case 'o': /* octal */ + STAR_ARGS(data); +#ifdef HAVE_LONG_LONG + if (data->flags & PF_LONGLONG) + { + ull = GETARG (unsigned long long); + lnumber(data, ull, 8); + } + else +#endif + { + ul = GETUNSIGNED(data); + number(data, ul, 8); + } + state = 0; + break; + case 'x': + case 'X': /* hexadecimal */ + STAR_ARGS(data); +#ifdef HAVE_LONG_LONG + if (data->flags & PF_LONGLONG) + { + ull = GETARG (unsigned long long); + lnumber(data, ull, 16); + } + else +#endif + { + ul = GETUNSIGNED(data); + number(data, ul, 16); + } + state = 0; + break; + case 'p': + STAR_ARGS(data); + ul = (unsigned long)GETARG (void *); + pointer(data, ul); + state = 0; + break; +#if HANDLE_MULTIBYTE + case 'C': + data->flags |= PF_LONGINT; + /* FALLTHROUGH */ +#endif + case 'c': /* character */ + STAR_ARGS(data); +#if HANDLE_MULTIBYTE + if (data->flags & PF_LONGINT) + { + wc = GETARG (wint_t); + wchars (data, wc); + } + else +#endif + { + ul = GETARG (int); + PUT_CHAR(ul, data); + } + state = 0; + break; +#if HANDLE_MULTIBYTE + case 'S': + data->flags |= PF_LONGINT; + /* FALLTHROUGH */ +#endif + case 's': /* string */ + STAR_ARGS(data); +#if HANDLE_MULTIBYTE + if (data->flags & PF_LONGINT) + { + ws = GETARG (wchar_t *); + wstrings (data, ws); + } + else +#endif + { + s = GETARG (char *); + strings(data, s); + } + state = 0; + break; + case 'n': +#ifdef HAVE_LONG_LONG + if (data->flags & PF_LONGLONG) + *(GETARG (long long *)) = data->counter; + else +#endif + if (data->flags & PF_LONGINT) + *(GETARG (long *)) = data->counter; + else if (data->flags & PF_SHORTINT) + *(GETARG (short *)) = data->counter; + else + *(GETARG (int *)) = data->counter; + state = 0; + break; + case '%': /* nothing just % */ + PUT_CHAR('%', data); + state = 0; + break; + default: + /* is this an error ? maybe bail out */ + state = 0; + break; + } /* end switch */ + } /* end of `%' for loop */ + } /* end of format string for loop */ + + if (data->length >= 0) + *data->holder = '\0'; /* the end ye ! */ + + return data->counter; +} + +#if defined (FLOATING_POINT) && defined (HAVE_LONG_DOUBLE) +/* + * Printing floating point numbers accurately is an art. I'm not good + * at it. Fall back to sprintf for long double formats. + */ +static void +ldfallback (data, fs, fe, ld) + struct DATA *data; + const char *fs, *fe; + long double ld; +{ + register char *x; + char fmtbuf[FALLBACK_FMTSIZE], *obuf; + int fl; + + fl = LFALLBACK_BASE + (data->precision < 6 ? 6 : data->precision) + 2; + obuf = (char *)xmalloc (fl); + fl = fe - fs + 1; + strncpy (fmtbuf, fs, fl); + fmtbuf[fl] = '\0'; + + if ((data->flags & PF_STAR_W) && (data->flags & PF_STAR_P)) + sprintf (obuf, fmtbuf, data->width, data->precision, ld); + else if (data->flags & PF_STAR_W) + sprintf (obuf, fmtbuf, data->width, ld); + else if (data->flags & PF_STAR_P) + sprintf (obuf, fmtbuf, data->precision, ld); + else + sprintf (obuf, fmtbuf, ld); + + for (x = obuf; *x; x++) + PUT_CHAR (*x, data); + xfree (obuf); +} +#endif /* FLOATING_POINT && HAVE_LONG_DOUBLE */ + +#ifdef FLOATING_POINT +/* Used for %a, %A if the libc printf supports them. */ +static void +dfallback (data, fs, fe, d) + struct DATA *data; + const char *fs, *fe; + double d; +{ + register char *x; + char fmtbuf[FALLBACK_FMTSIZE], obuf[FALLBACK_BASE]; + int fl; + + fl = fe - fs + 1; + strncpy (fmtbuf, fs, fl); + fmtbuf[fl] = '\0'; + + if ((data->flags & PF_STAR_W) && (data->flags & PF_STAR_P)) + sprintf (obuf, fmtbuf, data->width, data->precision, d); + else if (data->flags & PF_STAR_W) + sprintf (obuf, fmtbuf, data->width, d); + else if (data->flags & PF_STAR_P) + sprintf (obuf, fmtbuf, data->precision, d); + else + sprintf (obuf, fmtbuf, d); + + for (x = obuf; *x; x++) + PUT_CHAR (*x, data); +} +#endif /* FLOATING_POINT */ + +#if !HAVE_SNPRINTF + +int +#if defined (__STDC__) +vsnprintf(char *string, size_t length, const char *format, va_list args) +#else +vsnprintf(string, length, format, args) + char *string; + size_t length; + const char *format; + va_list args; +#endif +{ + struct DATA data; + + if (string == 0 && length != 0) + return 0; + init_data (&data, string, length, format, PFM_SN); + return (vsnprintf_internal(&data, string, length, format, args)); +} + +int +#if defined(PREFER_STDARG) +snprintf(char *string, size_t length, const char * format, ...) +#else +snprintf(string, length, format, va_alist) + char *string; + size_t length; + const char *format; + va_dcl +#endif +{ + struct DATA data; + int rval; + va_list args; + + SH_VA_START(args, format); + + if (string == 0 && length != 0) + return 0; + init_data (&data, string, length, format, PFM_SN); + rval = vsnprintf_internal (&data, string, length, format, args); + + va_end(args); + + return rval; +} + +#endif /* HAVE_SNPRINTF */ + +#if !HAVE_ASPRINTF + +int +#if defined (__STDC__) +vasprintf(char **stringp, const char *format, va_list args) +#else +vasprintf(stringp, format, args) + char **stringp; + const char *format; + va_list args; +#endif +{ + struct DATA data; + char *string; + int r; + + string = (char *)xmalloc(ASBUFSIZE); + init_data (&data, string, ASBUFSIZE, format, PFM_AS); + r = vsnprintf_internal(&data, string, ASBUFSIZE, format, args); + *stringp = data.base; /* not string in case reallocated */ + return r; +} + +int +#if defined(PREFER_STDARG) +asprintf(char **stringp, const char * format, ...) +#else +asprintf(stringp, format, va_alist) + char **stringp; + const char *format; + va_dcl +#endif +{ + int rval; + va_list args; + + SH_VA_START(args, format); + + rval = vasprintf (stringp, format, args); + + va_end(args); + + return rval; +} + +#endif /* !HAVE_ASPRINTF */ + +#endif /* !HAVE_SNPRINTF || !HAVE_ASPRINTF */ + +#ifdef DRIVER + +static void +memory_error_and_abort () +{ + write (2, "out of virtual memory\n", 22); + abort (); +} + +static void * +xmalloc(bytes) + size_t bytes; +{ + void *ret; + + ret = malloc(bytes); + if (ret == 0) + memory_error_and_abort (); + return ret; +} + +static void * +xrealloc (pointer, bytes) + void *pointer; + size_t bytes; +{ + void *ret; + + ret = pointer ? realloc(pointer, bytes) : malloc(bytes); + if (ret == 0) + memory_error_and_abort (); + return ret; +} + +static void +xfree(x) + void *x; +{ + if (x) + free (x); +} + +/* set of small tests for snprintf() */ +main() +{ + char holder[100]; + char *h; + int i, si, ai; + +#ifdef HAVE_LOCALE_H + setlocale(LC_ALL, ""); +#endif + +#if 1 + si = snprintf((char *)NULL, 0, "abcde\n"); + printf("snprintf returns %d with NULL first argument and size of 0\n", si); + si = snprintf(holder, 0, "abcde\n"); + printf("snprintf returns %d with non-NULL first argument and size of 0\n", si); + si = snprintf((char *)NULL, 16, "abcde\n"); + printf("snprintf returns %d with NULL first argument and non-zero size\n", si); + +/* + printf("Suite of test for snprintf:\n"); + printf("a_format\n"); + printf("printf() format\n"); + printf("snprintf() format\n\n"); +*/ +/* Checking the field widths */ + + printf("/%%ld %%ld/, 336, 336\n"); + snprintf(holder, sizeof holder, "/%ld %ld/\n", 336, 336); + asprintf(&h, "/%ld %ld/\n", 336, 336); + printf("/%ld %ld/\n", 336, 336); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%d/, 336\n"); + snprintf(holder, sizeof holder, "/%d/\n", 336); + asprintf(&h, "/%d/\n", 336); + printf("/%d/\n", 336); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%2d/, 336\n"); + snprintf(holder, sizeof holder, "/%2d/\n", 336); + asprintf(&h, "/%2d/\n", 336); + printf("/%2d/\n", 336); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%10d/, 336\n"); + snprintf(holder, sizeof holder, "/%10d/\n", 336); + asprintf(&h, "/%10d/\n", 336); + printf("/%10d/\n", 336); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%-10d/, 336\n"); + snprintf(holder, sizeof holder, "/%-10d/\n", 336); + asprintf(&h, "/%-10d/\n", 336); + printf("/%-10d/\n", 336); + printf("%s", holder); + printf("%s\n", h); + + +/* floating points */ + + printf("/%%f/, 1234.56\n"); + snprintf(holder, sizeof holder, "/%f/\n", 1234.56); + asprintf(&h, "/%f/\n", 1234.56); + printf("/%f/\n", 1234.56); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%e/, 1234.56\n"); + snprintf(holder, sizeof holder, "/%e/\n", 1234.56); + asprintf(&h, "/%e/\n", 1234.56); + printf("/%e/\n", 1234.56); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%4.2f/, 1234.56\n"); + snprintf(holder, sizeof holder, "/%4.2f/\n", 1234.56); + asprintf(&h, "/%4.2f/\n", 1234.56); + printf("/%4.2f/\n", 1234.56); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%3.1f/, 1234.56\n"); + snprintf(holder, sizeof holder, "/%3.1f/\n", 1234.56); + asprintf(&h, "/%3.1f/\n", 1234.56); + printf("/%3.1f/\n", 1234.56); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%10.3f/, 1234.56\n"); + snprintf(holder, sizeof holder, "/%10.3f/\n", 1234.56); + asprintf(&h, "/%10.3f/\n", 1234.56); + printf("/%10.3f/\n", 1234.56); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%10.3e/, 1234.56\n"); + snprintf(holder, sizeof holder, "/%10.3e/\n", 1234.56); + asprintf(&h, "/%10.3e/\n", 1234.56); + printf("/%10.3e/\n", 1234.56); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%+4.2f/, 1234.56\n"); + snprintf(holder, sizeof holder, "/%+4.2f/\n", 1234.56); + asprintf(&h, "/%+4.2f/\n", 1234.56); + printf("/%+4.2f/\n", 1234.56); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%010.2f/, 1234.56\n"); + snprintf(holder, sizeof holder, "/%010.2f/\n", 1234.56); + asprintf(&h, "/%010.2f/\n", 1234.56); + printf("/%010.2f/\n", 1234.56); + printf("%s", holder); + printf("%s\n", h); + +#define BLURB "Outstanding acting !" +/* strings precisions */ + + printf("/%%2s/, \"%s\"\n", BLURB); + snprintf(holder, sizeof holder, "/%2s/\n", BLURB); + asprintf(&h, "/%2s/\n", BLURB); + printf("/%2s/\n", BLURB); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%22s/ %s\n", BLURB); + snprintf(holder, sizeof holder, "/%22s/\n", BLURB); + asprintf(&h, "/%22s/\n", BLURB); + printf("/%22s/\n", BLURB); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%22.5s/ %s\n", BLURB); + snprintf(holder, sizeof holder, "/%22.5s/\n", BLURB); + asprintf(&h, "/%22.5s/\n", BLURB); + printf("/%22.5s/\n", BLURB); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%-22.5s/ %s\n", BLURB); + snprintf(holder, sizeof holder, "/%-22.5s/\n", BLURB); + asprintf(&h, "/%-22.5s/\n", BLURB); + printf("/%-22.5s/\n", BLURB); + printf("%s", holder); + printf("%s\n", h); + +/* see some flags */ + + printf("%%x %%X %%#x, 31, 31, 31\n"); + snprintf(holder, sizeof holder, "%x %X %#x\n", 31, 31, 31); + asprintf(&h, "%x %X %#x\n", 31, 31, 31); + printf("%x %X %#x\n", 31, 31, 31); + printf("%s", holder); + printf("%s\n", h); + + printf("**%%d**%% d**%% d**, 42, 42, -42\n"); + snprintf(holder, sizeof holder, "**%d**% d**% d**\n", 42, 42, -42); + asprintf(&h, "**%d**% d**% d**\n", 42, 42, -42); + printf("**%d**% d**% d**\n", 42, 42, -42); + printf("%s", holder); + printf("%s\n", h); + +/* other flags */ + + printf("/%%g/, 31.4\n"); + snprintf(holder, sizeof holder, "/%g/\n", 31.4); + asprintf(&h, "/%g/\n", 31.4); + printf("/%g/\n", 31.4); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%.6g/, 31.4\n"); + snprintf(holder, sizeof holder, "/%.6g/\n", 31.4); + asprintf(&h, "/%.6g/\n", 31.4); + printf("/%.6g/\n", 31.4); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%.1G/, 31.4\n"); + snprintf(holder, sizeof holder, "/%.1G/\n", 31.4); + asprintf(&h, "/%.1G/\n", 31.4); + printf("/%.1G/\n", 31.4); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%.1G/, 3100000000.4\n"); + snprintf(holder, sizeof holder, "/%.1G/\n", 3100000000.4); + asprintf(&h, "/%.1G/\n", 3100000000.4); + printf("/%.1G/\n", 3100000000.4); + printf("%s", holder); + printf("%s\n", h); + + printf("abc%%n\n"); + printf("abc%n", &i); printf("%d\n", i); + snprintf(holder, sizeof holder, "abc%n", &i); + printf("%s", holder); printf("%d\n\n", i); + asprintf(&h, "abc%n", &i); + printf("%s", h); printf("%d\n\n", i); + + printf("%%*.*s --> 10.10\n"); + snprintf(holder, sizeof holder, "%*.*s\n", 10, 10, BLURB); + asprintf(&h, "%*.*s\n", 10, 10, BLURB); + printf("%*.*s\n", 10, 10, BLURB); + printf("%s", holder); + printf("%s\n", h); + + printf("%%%%%%%%\n"); + snprintf(holder, sizeof holder, "%%%%\n"); + asprintf(&h, "%%%%\n"); + printf("%%%%\n"); + printf("%s", holder); + printf("%s\n", h); + +#define BIG "Hello this is a too big string for the buffer" +/* printf("A buffer to small of 10, trying to put this:\n");*/ + printf("<%%>, %s\n", BIG); + i = snprintf(holder, 10, "%s\n", BIG); + i = asprintf(&h, "%s", BIG); + printf("<%s>\n", BIG); + printf("<%s>\n", holder); + printf("<%s>\n\n", h); + + printf ("<%%p> vsnprintf\n"); + i = snprintf(holder, 100, "%p", vsnprintf); + i = asprintf(&h, "%p", vsnprintf); + printf("<%p>\n", vsnprintf); + printf("<%s>\n", holder); + printf("<%s>\n\n", h); + + printf ("<%%lu> LONG_MAX+1\n"); + i = snprintf(holder, 100, "%lu", (unsigned long)(LONG_MAX)+1); + i = asprintf(&h, "%lu", (unsigned long)(LONG_MAX)+1); + printf("<%lu>\n", (unsigned long)(LONG_MAX)+1); + printf("<%s>\n", holder); + printf("<%s>\n\n", h); + +#ifdef HAVE_LONG_LONG + printf ("<%%llu> LLONG_MAX+1\n"); + i = snprintf(holder, 100, "%llu", (unsigned long long)(LLONG_MAX)+1); + i = asprintf(&h, "%llu", (unsigned long long)(LLONG_MAX)+1); + printf("<%llu>\n", (unsigned long long)(LLONG_MAX)+1); + printf("<%s>\n", holder); + printf("<%s>\n\n", h); +#endif + +#ifdef HAVE_LONG_DOUBLE + printf ("<%%6.2LE> 42.42\n"); + i = snprintf(holder, 100, "%6.2LE", (long double)42.42); + i = asprintf(&h, "%6.2LE", (long double)42.42); + printf ("<%6.2LE>\n", (long double)42.42); + printf ("<%s>\n", holder); + printf ("<%s>\n\n", h); +#endif + +#ifdef HAVE_PRINTF_A_FORMAT + printf ("<%%6.2A> 42.42\n"); + i = snprintf(holder, 100, "%6.2A", 42.42); + i = asprintf(&h, "%6.2A", 42.42); + printf ("<%6.2A>\n", 42.42); + printf ("<%s>\n", holder); + printf ("<%s>\n\n", h); + + printf ("<%%6.2LA> 42.42\n"); + i = snprintf(holder, 100, "%6.2LA", (long double)42.42); + i = asprintf(&h, "%6.2LA", (long double)42.42); + printf ("<%6.2LA>\n", (long double)42.42); + printf ("<%s>\n", holder); + printf ("<%s>\n\n", h); +#endif + + printf ("<%%.10240f> DBL_MAX\n"); + si = snprintf(holder, 100, "%.10240f", DBL_MAX); + ai = asprintf(&h, "%.10240f", DBL_MAX); + printf ("<%.10240f>\n", DBL_MAX); + printf ("<%d> <%s>\n", si, holder); + printf ("<%d> <%s>\n\n", ai, h); + + printf ("<%%.10240Lf> LDBL_MAX\n"); + si = snprintf(holder, 100, "%.10240Lf", (long double)LDBL_MAX); + ai = asprintf(&h, "%.10240Lf", (long double)LDBL_MAX); + printf ("<%.10240Lf>\n", (long double)LDBL_MAX); + printf ("<%d> <%s>\n", si, holder); + printf ("<%d> <%s>\n\n", ai, h); + + /* huh? */ + printf("/%%g/, 421.2345\n"); + snprintf(holder, sizeof holder, "/%g/\n", 421.2345); + asprintf(&h, "/%g/\n", 421.2345); + printf("/%g/\n", 421.2345); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%g/, 4214.2345\n"); + snprintf(holder, sizeof holder, "/%g/\n", 4214.2345); + asprintf(&h, "/%g/\n", 4214.2345); + printf("/%g/\n", 4214.2345); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%.5g/, 4214.2345\n"); + snprintf(holder, sizeof holder, "/%.5g/\n", 4214.2345); + asprintf(&h, "/%.5g/\n", 4214.2345); + printf("/%.5g/\n", 4214.2345); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%.4g/, 4214.2345\n"); + snprintf(holder, sizeof holder, "/%.4g/\n", 4214.2345); + asprintf(&h, "/%.4g/\n", 4214.2345); + printf("/%.4g/\n", 4214.2345); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%'ld %%'ld/, 12345, 1234567\n"); + snprintf(holder, sizeof holder, "/%'ld %'ld/\n", 12345, 1234567); + asprintf(&h, "/%'ld %'ld/\n", 12345, 1234567); + printf("/%'ld %'ld/\n", 12345, 1234567); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%'ld %%'ld/, 336, 3336\n"); + snprintf(holder, sizeof holder, "/%'ld %'ld/\n", 336, 3336); + asprintf(&h, "/%'ld %'ld/\n", 336, 3336); + printf("/%'ld %'ld/\n", 336, 3336); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%'ld %%'ld/, -42786, -142786\n"); + snprintf(holder, sizeof holder, "/%'ld %'ld/\n", -42786, -142786); + asprintf(&h, "/%'ld %'ld/\n", -42786, -142786); + printf("/%'ld %'ld/\n", -42786, -142786); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%'f %%'f/, 421.2345, 421234.56789\n"); + snprintf(holder, sizeof holder, "/%'f %'f/\n", 421.2345, 421234.56789); + asprintf(&h, "/%'f %'f/\n", 421.2345, 421234.56789); + printf("/%'f %'f/\n", 421.2345, 421234.56789); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%'f %%'f/, -421.2345, -421234.56789\n"); + snprintf(holder, sizeof holder, "/%'f %'f/\n", -421.2345, -421234.56789); + asprintf(&h, "/%'f %'f/\n", -421.2345, -421234.56789); + printf("/%'f %'f/\n", -421.2345, -421234.56789); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%'g %%'g/, 421.2345, 421234.56789\n"); + snprintf(holder, sizeof holder, "/%'g %'g/\n", 421.2345, 421234.56789); + asprintf(&h, "/%'g %'g/\n", 421.2345, 421234.56789); + printf("/%'g %'g/\n", 421.2345, 421234.56789); + printf("%s", holder); + printf("%s\n", h); + + printf("/%%'g %%'g/, -421.2345, -421234.56789\n"); + snprintf(holder, sizeof holder, "/%'g %'g/\n", -421.2345, -421234.56789); + asprintf(&h, "/%'g %'g/\n", -421.2345, -421234.56789); + printf("/%'g %'g/\n", -421.2345, -421234.56789); + printf("%s", holder); + printf("%s\n", h); +#endif + + printf("/%%'g/, 4213455.8392\n"); + snprintf(holder, sizeof holder, "/%'g/\n", 4213455.8392); + asprintf(&h, "/%'g/\n", 4213455.8392); + printf("/%'g/\n", 4213455.8392); + printf("%s", holder); + printf("%s\n", h); + + exit (0); +} +#endif diff --git a/bash-5.1/lib/sh/spell.c b/bash-5.1/lib/sh/spell.c new file mode 100644 index 0000000..cdf465b --- /dev/null +++ b/bash-5.1/lib/sh/spell.c @@ -0,0 +1,212 @@ +/* spell.c -- spelling correction for pathnames. */ + +/* Copyright (C) 2000-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include +#include +#if defined (HAVE_SYS_PARAM_H) +#include +#endif + +#include + +#include +#include +#include + +static int mindist PARAMS((char *, char *, char *)); +static int spdist PARAMS((char *, char *)); + +/* + * `spname' and its helpers are inspired by the code in "The UNIX + * Programming Environment", Kernighan & Pike, Prentice-Hall 1984, + * pages 209 - 213. + */ + +/* + * `spname' -- return a correctly spelled filename + * + * int spname(char * oldname, char * newname) + * Returns: -1 if no reasonable match found + * 0 if exact match found + * 1 if corrected + * Stores corrected name in `newname'. + */ +int +spname(oldname, newname) + char *oldname; + char *newname; +{ + char *op, *np, *p; + char guess[PATH_MAX + 1], best[PATH_MAX + 1]; + + op = oldname; + np = newname; + for (;;) + { + while (*op == '/') /* Skip slashes */ + *np++ = *op++; + *np = '\0'; + + if (*op == '\0') /* Exact or corrected */ + { + /* `.' is rarely the right thing. */ + if (oldname[1] == '\0' && newname[1] == '\0' && + oldname[0] != '.' && newname[0] == '.') + return -1; + return strcmp(oldname, newname) != 0; + } + + /* Copy next component into guess */ + for (p = guess; *op != '/' && *op != '\0'; op++) + if (p < guess + PATH_MAX) + *p++ = *op; + *p = '\0'; + + if (mindist(newname, guess, best) >= 3) + return -1; /* Hopeless */ + + /* + * Add to end of newname + */ + for (p = best; *np = *p++; np++) + ; + } +} + +/* + * Search directory for a guess + */ +static int +mindist(dir, guess, best) + char *dir; + char *guess; + char *best; +{ + DIR *fd; + struct dirent *dp; + int dist, x; + + dist = 3; /* Worst distance */ + if (*dir == '\0') + dir = "."; + + if ((fd = opendir(dir)) == NULL) + return dist; + + while ((dp = readdir(fd)) != NULL) + { + /* + * Look for a better guess. If the new guess is as + * good as the current one, we take it. This way, + * any single character match will be a better match + * than ".". + */ + x = spdist(dp->d_name, guess); + if (x <= dist && x != 3) + { + strcpy(best, dp->d_name); + dist = x; + if (dist == 0) /* Exact match */ + break; + } + } + (void)closedir(fd); + + /* Don't return `.' */ + if (best[0] == '.' && best[1] == '\0') + dist = 3; + return dist; +} + +/* + * `spdist' -- return the "distance" between two names. + * + * int spname(char * oldname, char * newname) + * Returns: 0 if strings are identical + * 1 if two characters are transposed + * 2 if one character is wrong, added or deleted + * 3 otherwise + */ +static int +spdist(cur, new) + char *cur, *new; +{ + while (*cur == *new) + { + if (*cur == '\0') + return 0; /* Exact match */ + cur++; + new++; + } + + if (*cur) + { + if (*new) + { + if (cur[1] && new[1] && cur[0] == new[1] && cur[1] == new[0] && strcmp (cur + 2, new + 2) == 0) + return 1; /* Transposition */ + + if (strcmp (cur + 1, new + 1) == 0) + return 2; /* One character mismatch */ + } + + if (strcmp(&cur[1], &new[0]) == 0) + return 2; /* Extra character */ + } + + if (*new && strcmp(cur, new + 1) == 0) + return 2; /* Missing character */ + + return 3; +} + +char * +dirspell (dirname) + char *dirname; +{ + int n; + char *guess; + + n = (strlen (dirname) * 3 + 1) / 2 + 1; + guess = (char *)malloc (n); + if (guess == 0) + return 0; + + switch (spname (dirname, guess)) + { + case -1: + default: + free (guess); + return (char *)NULL; + case 0: + case 1: + return guess; + } +} diff --git a/bash-5.1/lib/sh/strcasecmp.c b/bash-5.1/lib/sh/strcasecmp.c new file mode 100644 index 0000000..70d0551 --- /dev/null +++ b/bash-5.1/lib/sh/strcasecmp.c @@ -0,0 +1,84 @@ +/* strcasecmp.c - functions for case-insensitive string comparison. */ + +/* Copyright (C) 1995 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if !defined (HAVE_STRCASECMP) + +#include +#include +#include + +/* Compare at most COUNT characters from string1 to string2. Case + doesn't matter. */ +int +strncasecmp (string1, string2, count) + const char *string1; + const char *string2; + size_t count; +{ + register const char *s1; + register const char *s2; + register int r; + + if (count <= 0 || (string1 == string2)) + return 0; + + s1 = string1; + s2 = string2; + do + { + if ((r = TOLOWER ((unsigned char) *s1) - TOLOWER ((unsigned char) *s2)) != 0) + return r; + if (*s1++ == '\0') + break; + s2++; + } + while (--count != 0); + + return (0); +} + +/* strcmp (), but caseless. */ +int +strcasecmp (string1, string2) + const char *string1; + const char *string2; +{ + register const char *s1; + register const char *s2; + register int r; + + s1 = string1; + s2 = string2; + + if (s1 == s2) + return (0); + + while ((r = TOLOWER ((unsigned char)*s1) - TOLOWER ((unsigned char)*s2)) == 0) + { + if (*s1++ == '\0') + return 0; + s2++; + } + + return (r); +} +#endif /* !HAVE_STRCASECMP */ diff --git a/bash-5.1/lib/sh/strcasestr.c b/bash-5.1/lib/sh/strcasestr.c new file mode 100644 index 0000000..c819b3e --- /dev/null +++ b/bash-5.1/lib/sh/strcasestr.c @@ -0,0 +1,46 @@ +/* strcasestr.c - Find if one string appears as a substring of another string, + without regard to case. */ + +/* 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 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 . +*/ + +#include + +#include +#include + +#include + +/* Determine if s2 occurs in s1. If so, return a pointer to the + match in s1. The compare is case insensitive. This is a + case-insensitive strstr(3). */ +char * +strcasestr (s1, s2) + const char *s1; + const char *s2; +{ + register int i, l, len, c; + + c = TOLOWER ((unsigned char)s2[0]); + len = strlen (s1); + l = strlen (s2); + for (i = 0; (len - i) >= l; i++) + if ((TOLOWER ((unsigned char)s1[i]) == c) && (strncasecmp (s1 + i, s2, l) == 0)) + return ((char *)s1 + i); + return ((char *)0); +} diff --git a/bash-5.1/lib/sh/strchrnul.c b/bash-5.1/lib/sh/strchrnul.c new file mode 100644 index 0000000..00cb88c --- /dev/null +++ b/bash-5.1/lib/sh/strchrnul.c @@ -0,0 +1,35 @@ +/* Searching in a string. + Copyright (C) 2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + 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 . */ + +#include +#include + +/* Specification. */ +#include + +/* Find the first occurrence of C in S or the final NUL byte. */ +char * +strchrnul (s, c_in) + const char *s; + int c_in; +{ + char c; + register char *s1; + + for (c = c_in, s1 = (char *)s; s1 && *s1 && *s1 != c; s1++) + ; + return (s1); +} diff --git a/bash-5.1/lib/sh/strdup.c b/bash-5.1/lib/sh/strdup.c new file mode 100644 index 0000000..90fa353 --- /dev/null +++ b/bash-5.1/lib/sh/strdup.c @@ -0,0 +1,42 @@ +/* strdup - return a copy of a string in newly-allocated memory. */ + +/* Copyright (C) 2013 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + + +#include + +/* Get specification. */ +#include +#include + +/* Duplicate S, returning an identical malloc'd string. */ +char * +strdup (s) + const char *s; +{ + size_t len; + void *new; + + len = strlen (s) + 1; + if ((new = malloc (len)) == NULL) + return NULL; + + memcpy (new, s, len); + return ((char *)new); +} diff --git a/bash-5.1/lib/sh/strerror.c b/bash-5.1/lib/sh/strerror.c new file mode 100644 index 0000000..bf63926 --- /dev/null +++ b/bash-5.1/lib/sh/strerror.c @@ -0,0 +1,74 @@ +/* strerror.c - string corresponding to a particular value of errno. */ + +/* Copyright (C) 1995 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if !defined (HAVE_STRERROR) + +#include +#if defined (HAVE_SYS_PARAM_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include + +#include + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +/* Return a string corresponding to the error number E. From + the ANSI C spec. */ +#if defined (strerror) +# undef strerror +#endif + +static char *errbase = "Unknown system error "; + +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 */ + { + char *z; + + z = itos (e); + strcpy (emsg, errbase); + strcat (emsg, z); + free (z); + return (&emsg[0]); + } +} +#endif /* HAVE_STRERROR */ diff --git a/bash-5.1/lib/sh/strftime.c b/bash-5.1/lib/sh/strftime.c new file mode 100644 index 0000000..08ccb9a --- /dev/null +++ b/bash-5.1/lib/sh/strftime.c @@ -0,0 +1,1015 @@ +/* strftime - formatted time and date to a string */ +/* + * Modified slightly by Chet Ramey for inclusion in Bash + */ +/* + * strftime.c + * + * Public-domain implementation of ISO C library routine. + * + * If you can't do prototypes, get GCC. + * + * The C99 standard now specifies just about all of the formats + * that were additional in the earlier versions of this file. + * + * For extensions from SunOS, add SUNOS_EXT. + * For extensions from HP/UX, add HPUX_EXT. + * For VMS dates, add VMS_EXT. + * For complete POSIX semantics, add POSIX_SEMANTICS. + * + * The code for %c, %x, and %X follows the C99 specification for + * the "C" locale. + * + * This version ignores LOCALE information. + * It also doesn't worry about multi-byte characters. + * So there. + * + * Arnold Robbins + * January, February, March, 1991 + * Updated March, April 1992 + * Updated April, 1993 + * Updated February, 1994 + * Updated May, 1994 + * Updated January, 1995 + * Updated September, 1995 + * Updated January, 1996 + * Updated July, 1997 + * Updated October, 1999 + * Updated September, 2000 + * Updated December, 2001 + * Updated January, 2011 + * Updated April, 2012 + * + * Fixes from ado@elsie.nci.nih.gov, + * February 1991, May 1992 + * Fixes from Tor Lillqvist tml@tik.vtt.fi, + * May 1993 + * Further fixes from ado@elsie.nci.nih.gov, + * February 1994 + * %z code from chip@chinacat.unicom.com, + * Applied September 1995 + * %V code fixed (again) and %G, %g added, + * January 1996 + * %v code fixed, better configuration, + * July 1997 + * Moved to C99 specification. + * September 2000 + * Fixes from Tanaka Akira + * December 2001 + */ +#include + +#include +#include +#include +#include + +#if defined(TM_IN_SYS_TIME) +#include +#include +#endif + +#include +#include + +/* defaults: season to taste */ +#define SUNOS_EXT 1 /* stuff in SunOS strftime routine */ +#define VMS_EXT 1 /* include %v for VMS date format */ +#define HPUX_EXT 1 /* non-conflicting stuff in HP-UX date */ +#define POSIX_SEMANTICS 1 /* call tzset() if TZ changes */ +#define POSIX_2008 1 /* flag and fw for C, F, G, Y formats */ + +#undef strchr /* avoid AIX weirdness */ + +#if !defined (errno) +extern int errno; +#endif + +#if defined (SHELL) +extern char *get_string_value (const char *); +#endif + +extern void tzset(void); +static int weeknumber(const struct tm *timeptr, int firstweekday); +static int iso8601wknum(const struct tm *timeptr); + +#ifndef inline +#ifdef __GNUC__ +#define inline __inline__ +#else +#define inline /**/ +#endif +#endif + +#define range(low, item, hi) max(low, min(item, hi)) + +/* Whew! This stuff is a mess. */ +#if !defined(OS2) && !defined(MSDOS) && !defined(__CYGWIN__) && defined(HAVE_TZNAME) +extern char *tzname[2]; +extern int daylight; +#if defined(SOLARIS) || defined(mips) || defined (M_UNIX) +extern long int timezone, altzone; +#else +# if defined (HPUX) || defined(__hpux) +extern long int timezone; +# else +# if !defined(__CYGWIN__) +extern int timezone, altzone; +# endif +# endif +#endif +#endif + +#undef min /* just in case */ + +/* min --- return minimum of two numbers */ + +static inline int +min(int a, int b) +{ + return (a < b ? a : b); +} + +#undef max /* also, just in case */ + +/* max --- return maximum of two numbers */ + +static inline int +max(int a, int b) +{ + return (a > b ? a : b); +} + +#ifdef POSIX_2008 +/* iso_8601_2000_year --- format a year per ISO 8601:2000 as in 1003.1 */ + +static void +iso_8601_2000_year(char *buf, int year, size_t fw) +{ + int extra; + char sign = '\0'; + + if (year >= -9999 && year <= 9999) { + sprintf(buf, "%0*d", (int) fw, year); + return; + } + + /* now things get weird */ + if (year > 9999) { + sign = '+'; + } else { + sign = '-'; + year = -year; + } + + extra = year / 10000; + year %= 10000; + sprintf(buf, "%c_%04d_%d", sign, extra, year); +} +#endif /* POSIX_2008 */ + +/* strftime --- produce formatted time */ + +size_t +strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr) +{ + char *endp = s + maxsize; + char *start = s; + auto char tbuf[100]; + long off; + int i, w, oerrno; + long y; + static short first = 1; +#ifdef POSIX_SEMANTICS + static char *savetz = NULL; + static int savetzlen = 0; + char *tz; +#endif /* POSIX_SEMANTICS */ +#ifndef HAVE_TM_ZONE +#ifndef HAVE_TM_NAME +#ifndef HAVE_TZNAME +#ifndef __CYGWIN__ + extern char *timezone(); + struct timeval tv; + struct timezone zone; +#endif /* __CYGWIN__ */ +#endif /* HAVE_TZNAME */ +#endif /* HAVE_TM_NAME */ +#endif /* HAVE_TM_ZONE */ +#ifdef POSIX_2008 + int pad; + size_t fw; + char flag; +#endif /* POSIX_2008 */ + + /* various tables, useful in North America */ + static const char *days_a[] = { + "Sun", "Mon", "Tue", "Wed", + "Thu", "Fri", "Sat", + }; + static const char *days_l[] = { + "Sunday", "Monday", "Tuesday", "Wednesday", + "Thursday", "Friday", "Saturday", + }; + static const char *months_a[] = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + }; + static const char *months_l[] = { + "January", "February", "March", "April", + "May", "June", "July", "August", "September", + "October", "November", "December", + }; + static const char *ampm[] = { "AM", "PM", }; + + oerrno = errno; + + if (s == NULL || format == NULL || timeptr == NULL || maxsize == 0) + return 0; + + /* quick check if we even need to bother */ + if (strchr(format, '%') == NULL && strlen(format) + 1 >= maxsize) + return 0; + +#ifndef POSIX_SEMANTICS + if (first) { + tzset(); + first = 0; + } +#else /* POSIX_SEMANTICS */ +#if defined (SHELL) + tz = get_string_value ("TZ"); +#else + tz = getenv("TZ"); +#endif + if (first) { + if (tz != NULL) { + int tzlen = strlen(tz); + + savetz = (char *) malloc(tzlen + 1); + if (savetz != NULL) { + savetzlen = tzlen + 1; + strcpy(savetz, tz); + } + } + tzset(); + first = 0; + } + /* if we have a saved TZ, and it is different, recapture and reset */ + if (tz && savetz && (tz[0] != savetz[0] || strcmp(tz, savetz) != 0)) { + i = strlen(tz) + 1; + if (i > savetzlen) { + savetz = (char *) realloc(savetz, i); + if (savetz) { + savetzlen = i; + strcpy(savetz, tz); + } + } else + strcpy(savetz, tz); + tzset(); + } +#endif /* POSIX_SEMANTICS */ + + for (; *format && s < endp - 1; format++) { + tbuf[0] = '\0'; + if (*format != '%') { + *s++ = *format; + continue; + } +#ifdef POSIX_2008 + pad = '\0'; + fw = 0; + flag = '\0'; + switch (*++format) { + case '+': + flag = '+'; + /* fall through */ + case '0': + pad = '0'; + format++; + break; + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + break; + + default: + format--; + goto again; + } + for (; isdigit(*format); format++) { + fw = fw * 10 + (*format - '0'); + } + format--; +#endif /* POSIX_2008 */ + + again: + switch (*++format) { + case '\0': + *s++ = '%'; + goto out; + + case '%': + *s++ = '%'; + continue; + + case 'a': /* abbreviated weekday name */ + if (timeptr->tm_wday < 0 || timeptr->tm_wday > 6) + strcpy(tbuf, "?"); + else + strcpy(tbuf, days_a[timeptr->tm_wday]); + break; + + case 'A': /* full weekday name */ + if (timeptr->tm_wday < 0 || timeptr->tm_wday > 6) + strcpy(tbuf, "?"); + else + strcpy(tbuf, days_l[timeptr->tm_wday]); + break; + + case 'b': /* abbreviated month name */ + short_month: + if (timeptr->tm_mon < 0 || timeptr->tm_mon > 11) + strcpy(tbuf, "?"); + else + strcpy(tbuf, months_a[timeptr->tm_mon]); + break; + + case 'B': /* full month name */ + if (timeptr->tm_mon < 0 || timeptr->tm_mon > 11) + strcpy(tbuf, "?"); + else + strcpy(tbuf, months_l[timeptr->tm_mon]); + break; + + case 'c': /* appropriate date and time representation */ + /* + * This used to be: + * + * strftime(tbuf, sizeof tbuf, "%a %b %e %H:%M:%S %Y", timeptr); + * + * Now, per the ISO 1999 C standard, it this: + */ + strftime(tbuf, sizeof tbuf, "%A %B %d %T %Y", timeptr); + break; + + case 'C': +#ifdef POSIX_2008 + if (pad != '\0' && fw > 0) { + size_t min_fw = (flag ? 3 : 2); + + fw = max(fw, min_fw); + sprintf(tbuf, flag + ? "%+0*ld" + : "%0*ld", (int) fw, + (timeptr->tm_year + 1900L) / 100); + } else +#endif /* POSIX_2008 */ + century: + sprintf(tbuf, "%02ld", (timeptr->tm_year + 1900L) / 100); + break; + + case 'd': /* day of the month, 01 - 31 */ + i = range(1, timeptr->tm_mday, 31); + sprintf(tbuf, "%02d", i); + break; + + case 'D': /* date as %m/%d/%y */ + strftime(tbuf, sizeof tbuf, "%m/%d/%y", timeptr); + break; + + case 'e': /* day of month, blank padded */ + sprintf(tbuf, "%2d", range(1, timeptr->tm_mday, 31)); + break; + + case 'E': + /* POSIX (now C99) locale extensions, ignored for now */ + goto again; + + case 'F': /* ISO 8601 date representation */ + { +#ifdef POSIX_2008 + /* + * Field width for %F is for the whole thing. + * It must be at least 10. + */ + char m_d[10]; + strftime(m_d, sizeof m_d, "-%m-%d", timeptr); + size_t min_fw = 10; + + if (pad != '\0' && fw > 0) { + fw = max(fw, min_fw); + } else { + fw = min_fw; + } + + fw -= 6; /* -XX-XX at end are invariant */ + + iso_8601_2000_year(tbuf, timeptr->tm_year + 1900, fw); + strcat(tbuf, m_d); +#else + strftime(tbuf, sizeof tbuf, "%Y-%m-%d", timeptr); +#endif /* POSIX_2008 */ + } + break; + + case 'g': + case 'G': + /* + * Year of ISO week. + * + * If it's December but the ISO week number is one, + * that week is in next year. + * If it's January but the ISO week number is 52 or + * 53, that week is in last year. + * Otherwise, it's this year. + */ + w = iso8601wknum(timeptr); + if (timeptr->tm_mon == 11 && w == 1) + y = 1900L + timeptr->tm_year + 1; + else if (timeptr->tm_mon == 0 && w >= 52) + y = 1900L + timeptr->tm_year - 1; + else + y = 1900L + timeptr->tm_year; + + if (*format == 'G') { +#ifdef POSIX_2008 + if (pad != '\0' && fw > 0) { + size_t min_fw = 4; + + fw = max(fw, min_fw); + sprintf(tbuf, flag + ? "%+0*ld" + : "%0*ld", (int) fw, + y); + } else +#endif /* POSIX_2008 */ + sprintf(tbuf, "%ld", y); + } + else + sprintf(tbuf, "%02ld", y % 100); + break; + + case 'h': /* abbreviated month name */ + goto short_month; + + case 'H': /* hour, 24-hour clock, 00 - 23 */ + i = range(0, timeptr->tm_hour, 23); + sprintf(tbuf, "%02d", i); + break; + + case 'I': /* hour, 12-hour clock, 01 - 12 */ + i = range(0, timeptr->tm_hour, 23); + if (i == 0) + i = 12; + else if (i > 12) + i -= 12; + sprintf(tbuf, "%02d", i); + break; + + case 'j': /* day of the year, 001 - 366 */ + sprintf(tbuf, "%03d", timeptr->tm_yday + 1); + break; + + case 'm': /* month, 01 - 12 */ + i = range(0, timeptr->tm_mon, 11); + sprintf(tbuf, "%02d", i + 1); + break; + + case 'M': /* minute, 00 - 59 */ + i = range(0, timeptr->tm_min, 59); + sprintf(tbuf, "%02d", i); + break; + + case 'n': /* same as \n */ + tbuf[0] = '\n'; + tbuf[1] = '\0'; + break; + + case 'O': + /* POSIX (now C99) locale extensions, ignored for now */ + goto again; + + case 'p': /* am or pm based on 12-hour clock */ + i = range(0, timeptr->tm_hour, 23); + if (i < 12) + strcpy(tbuf, ampm[0]); + else + strcpy(tbuf, ampm[1]); + break; + + case 'r': /* time as %I:%M:%S %p */ + strftime(tbuf, sizeof tbuf, "%I:%M:%S %p", timeptr); + break; + + case 'R': /* time as %H:%M */ + strftime(tbuf, sizeof tbuf, "%H:%M", timeptr); + break; + +#if defined(HAVE_MKTIME) + case 's': /* time as seconds since the Epoch */ + { + struct tm non_const_timeptr; + + non_const_timeptr = *timeptr; + sprintf(tbuf, "%ld", mktime(& non_const_timeptr)); + break; + } +#endif /* defined(HAVE_MKTIME) */ + + case 'S': /* second, 00 - 60 */ + i = range(0, timeptr->tm_sec, 60); + sprintf(tbuf, "%02d", i); + break; + + case 't': /* same as \t */ + tbuf[0] = '\t'; + tbuf[1] = '\0'; + break; + + case 'T': /* time as %H:%M:%S */ + the_time: + strftime(tbuf, sizeof tbuf, "%H:%M:%S", timeptr); + break; + + case 'u': + /* ISO 8601: Weekday as a decimal number [1 (Monday) - 7] */ + sprintf(tbuf, "%d", timeptr->tm_wday == 0 ? 7 : + timeptr->tm_wday); + break; + + case 'U': /* week of year, Sunday is first day of week */ + sprintf(tbuf, "%02d", weeknumber(timeptr, 0)); + break; + + case 'V': /* week of year according ISO 8601 */ + sprintf(tbuf, "%02d", iso8601wknum(timeptr)); + break; + + case 'w': /* weekday, Sunday == 0, 0 - 6 */ + i = range(0, timeptr->tm_wday, 6); + sprintf(tbuf, "%d", i); + break; + + case 'W': /* week of year, Monday is first day of week */ + sprintf(tbuf, "%02d", weeknumber(timeptr, 1)); + break; + + case 'x': /* appropriate date representation */ + strftime(tbuf, sizeof tbuf, "%A %B %d %Y", timeptr); + break; + + case 'X': /* appropriate time representation */ + goto the_time; + break; + + case 'y': /* year without a century, 00 - 99 */ + year: + i = timeptr->tm_year % 100; + sprintf(tbuf, "%02d", i); + break; + + case 'Y': /* year with century */ +#ifdef POSIX_2008 + if (pad != '\0' && fw > 0) { + size_t min_fw = 4; + + fw = max(fw, min_fw); + sprintf(tbuf, flag + ? "%+0*ld" + : "%0*ld", (int) fw, + 1900L + timeptr->tm_year); + } else +#endif /* POSIX_2008 */ + sprintf(tbuf, "%ld", 1900L + timeptr->tm_year); + break; + + /* + * From: Chip Rosenthal + * Date: Sun, 19 Mar 1995 00:33:29 -0600 (CST) + * + * Warning: the %z [code] is implemented by inspecting the + * timezone name conditional compile settings, and + * inferring a method to get timezone offsets. I've tried + * this code on a couple of machines, but I don't doubt + * there is some system out there that won't like it. + * Maybe the easiest thing to do would be to bracket this + * with an #ifdef that can turn it off. The %z feature + * would be an admittedly obscure one that most folks can + * live without, but it would be a great help to those of + * us that muck around with various message processors. + */ + case 'z': /* time zone offset east of GMT e.g. -0600 */ + if (timeptr->tm_isdst < 0) + break; +#ifdef HAVE_TM_NAME + /* + * Systems with tm_name probably have tm_tzadj as + * secs west of GMT. Convert to mins east of GMT. + */ + off = -timeptr->tm_tzadj / 60; +#else /* !HAVE_TM_NAME */ +#ifdef HAVE_TM_ZONE + /* + * Systems with tm_zone probably have tm_gmtoff as + * secs east of GMT. Convert to mins east of GMT. + */ + off = timeptr->tm_gmtoff / 60; +#else /* !HAVE_TM_ZONE */ +#if HAVE_TZNAME + /* + * Systems with tzname[] probably have timezone as + * secs west of GMT. Convert to mins east of GMT. + */ +# if defined(__hpux) || defined (HPUX) || defined(__CYGWIN__) + off = -timezone / 60; +# else + /* ADR: 4 August 2001, fixed this per gazelle@interaccess.com */ + off = -(daylight ? altzone : timezone) / 60; +# endif +#else /* !HAVE_TZNAME */ + gettimeofday(& tv, & zone); + off = -zone.tz_minuteswest; +#endif /* !HAVE_TZNAME */ +#endif /* !HAVE_TM_ZONE */ +#endif /* !HAVE_TM_NAME */ + if (off < 0) { + tbuf[0] = '-'; + off = -off; + } else { + tbuf[0] = '+'; + } + sprintf(tbuf+1, "%02ld%02ld", off/60, off%60); + break; + + case 'Z': /* time zone name or abbreviation */ +#ifdef HAVE_TZNAME + i = (daylight && timeptr->tm_isdst > 0); /* 0 or 1 */ + strcpy(tbuf, tzname[i]); +#else +#ifdef HAVE_TM_ZONE + strcpy(tbuf, timeptr->tm_zone); +#else +#ifdef HAVE_TM_NAME + strcpy(tbuf, timeptr->tm_name); +#else + gettimeofday(& tv, & zone); + strcpy(tbuf, timezone(zone.tz_minuteswest, + timeptr->tm_isdst > 0)); +#endif /* HAVE_TM_NAME */ +#endif /* HAVE_TM_ZONE */ +#endif /* HAVE_TZNAME */ + break; + +#ifdef SUNOS_EXT + case 'k': /* hour, 24-hour clock, blank pad */ + sprintf(tbuf, "%2d", range(0, timeptr->tm_hour, 23)); + break; + + case 'l': /* hour, 12-hour clock, 1 - 12, blank pad */ + i = range(0, timeptr->tm_hour, 23); + if (i == 0) + i = 12; + else if (i > 12) + i -= 12; + sprintf(tbuf, "%2d", i); + break; +#endif + +#ifdef HPUX_EXT + case 'N': /* Emperor/Era name */ + /* this is essentially the same as the century */ + goto century; /* %C */ + + case 'o': /* Emperor/Era year */ + goto year; /* %y */ +#endif /* HPUX_EXT */ + + +#ifdef VMS_EXT + case 'v': /* date as dd-bbb-YYYY */ + sprintf(tbuf, "%2d-%3.3s-%4ld", + range(1, timeptr->tm_mday, 31), + months_a[range(0, timeptr->tm_mon, 11)], + timeptr->tm_year + 1900L); + for (i = 3; i < 6; i++) + if (islower(tbuf[i])) + tbuf[i] = toupper(tbuf[i]); + break; +#endif + + default: + tbuf[0] = '%'; + tbuf[1] = *format; + tbuf[2] = '\0'; + break; + } + i = strlen(tbuf); + if (i) { + if (s + i < endp - 1) { + strcpy(s, tbuf); + s += i; + } else + return 0; + } + } +out: + if (s < endp && *format == '\0') { + *s = '\0'; + if (s == start) + errno = oerrno; + return (s - start); + } else + return 0; +} + +/* isleap --- is a year a leap year? */ + +static int +isleap(long year) +{ + return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0); +} + + +/* iso8601wknum --- compute week number according to ISO 8601 */ + +static int +iso8601wknum(const struct tm *timeptr) +{ + /* + * From 1003.2: + * If the week (Monday to Sunday) containing January 1 + * has four or more days in the new year, then it is week 1; + * otherwise it is the highest numbered week of the previous + * year (52 or 53), and the next week is week 1. + * + * ADR: This means if Jan 1 was Monday through Thursday, + * it was week 1, otherwise week 52 or 53. + * + * XPG4 erroneously included POSIX.2 rationale text in the + * main body of the standard. Thus it requires week 53. + */ + + int weeknum, jan1day, diff; + + /* get week number, Monday as first day of the week */ + weeknum = weeknumber(timeptr, 1); + + /* + * With thanks and tip of the hatlo to tml@tik.vtt.fi + * + * What day of the week does January 1 fall on? + * We know that + * (timeptr->tm_yday - jan1.tm_yday) MOD 7 == + * (timeptr->tm_wday - jan1.tm_wday) MOD 7 + * and that + * jan1.tm_yday == 0 + * and that + * timeptr->tm_wday MOD 7 == timeptr->tm_wday + * from which it follows that. . . + */ + jan1day = timeptr->tm_wday - (timeptr->tm_yday % 7); + if (jan1day < 0) + jan1day += 7; + + /* + * If Jan 1 was a Monday through Thursday, it was in + * week 1. Otherwise it was last year's highest week, which is + * this year's week 0. + * + * What does that mean? + * If Jan 1 was Monday, the week number is exactly right, it can + * never be 0. + * If it was Tuesday through Thursday, the weeknumber is one + * less than it should be, so we add one. + * Otherwise, Friday, Saturday or Sunday, the week number is + * OK, but if it is 0, it needs to be 52 or 53. + */ + switch (jan1day) { + case 1: /* Monday */ + break; + case 2: /* Tuesday */ + case 3: /* Wednesday */ + case 4: /* Thursday */ + weeknum++; + break; + case 5: /* Friday */ + case 6: /* Saturday */ + case 0: /* Sunday */ + if (weeknum == 0) { +#ifdef USE_BROKEN_XPG4 + /* XPG4 (as of March 1994) says 53 unconditionally */ + weeknum = 53; +#else + /* get week number of last week of last year */ + struct tm dec31ly; /* 12/31 last year */ + dec31ly = *timeptr; + dec31ly.tm_year--; + dec31ly.tm_mon = 11; + dec31ly.tm_mday = 31; + dec31ly.tm_wday = (jan1day == 0) ? 6 : jan1day - 1; + dec31ly.tm_yday = 364 + isleap(dec31ly.tm_year + 1900L); + weeknum = iso8601wknum(& dec31ly); +#endif + } + break; + } + + if (timeptr->tm_mon == 11) { + /* + * The last week of the year + * can be in week 1 of next year. + * Sigh. + * + * This can only happen if + * M T W + * 29 30 31 + * 30 31 + * 31 + */ + int wday, mday; + + wday = timeptr->tm_wday; + mday = timeptr->tm_mday; + if ( (wday == 1 && (mday >= 29 && mday <= 31)) + || (wday == 2 && (mday == 30 || mday == 31)) + || (wday == 3 && mday == 31)) + weeknum = 1; + } + + return weeknum; +} + +/* weeknumber --- figure how many weeks into the year */ + +/* With thanks and tip of the hatlo to ado@elsie.nci.nih.gov */ + +static int +weeknumber(const struct tm *timeptr, int firstweekday) +{ + int wday = timeptr->tm_wday; + int ret; + + if (firstweekday == 1) { + if (wday == 0) /* sunday */ + wday = 6; + else + wday--; + } + ret = ((timeptr->tm_yday + 7 - wday) / 7); + if (ret < 0) + ret = 0; + return ret; +} + +#if 0 +/* ADR --- I'm loathe to mess with ado's code ... */ + +Date: Wed, 24 Apr 91 20:54:08 MDT +From: Michal Jaegermann +To: arnold@audiofax.com + +Hi Arnold, +in a process of fixing of strftime() in libraries on Atari ST I grabbed +some pieces of code from your own strftime. When doing that it came +to mind that your weeknumber() function compiles a little bit nicer +in the following form: +/* + * firstweekday is 0 if starting in Sunday, non-zero if in Monday + */ +{ + return (timeptr->tm_yday - timeptr->tm_wday + + (firstweekday ? (timeptr->tm_wday ? 8 : 1) : 7)) / 7; +} +How nicer it depends on a compiler, of course, but always a tiny bit. + + Cheers, + Michal + ntomczak@vm.ucs.ualberta.ca +#endif + +#ifdef TEST_STRFTIME + +/* + * NAME: + * tst + * + * SYNOPSIS: + * tst + * + * DESCRIPTION: + * "tst" is a test driver for the function "strftime". + * + * OPTIONS: + * None. + * + * AUTHOR: + * Karl Vogel + * Control Data Systems, Inc. + * vogelke@c-17igp.wpafb.af.mil + * + * BUGS: + * None noticed yet. + * + * COMPILE: + * cc -o tst -DTEST_STRFTIME strftime.c + */ + +/* ADR: I reformatted this to my liking, and deleted some unneeded code. */ + +#ifndef NULL +#include +#endif +#include +#include + +#define MAXTIME 132 + +/* + * Array of time formats. + */ + +static char *array[] = +{ + "(%%A) full weekday name, var length (Sunday..Saturday) %A", + "(%%B) full month name, var length (January..December) %B", + "(%%C) Century %C", + "(%%D) date (%%m/%%d/%%y) %D", + "(%%E) Locale extensions (ignored) %E", + "(%%F) full month name, var length (January..December) %F", + "(%%H) hour (24-hour clock, 00..23) %H", + "(%%I) hour (12-hour clock, 01..12) %I", + "(%%M) minute (00..59) %M", + "(%%N) Emperor/Era Name %N", + "(%%O) Locale extensions (ignored) %O", + "(%%R) time, 24-hour (%%H:%%M) %R", + "(%%S) second (00..60) %S", + "(%%T) time, 24-hour (%%H:%%M:%%S) %T", + "(%%U) week of year, Sunday as first day of week (00..53) %U", + "(%%V) week of year according to ISO 8601 %V", + "(%%W) week of year, Monday as first day of week (00..53) %W", + "(%%X) appropriate locale time representation (%H:%M:%S) %X", + "(%%Y) year with century (1970...) %Y", + "(%%Z) timezone (EDT), or blank if timezone not determinable %Z", + "(%%a) locale's abbreviated weekday name (Sun..Sat) %a", + "(%%b) locale's abbreviated month name (Jan..Dec) %b", + "(%%c) full date (Sat Nov 4 12:02:33 1989)%n%t%t%t %c", + "(%%d) day of the month (01..31) %d", + "(%%e) day of the month, blank-padded ( 1..31) %e", + "(%%h) should be same as (%%b) %h", + "(%%j) day of the year (001..366) %j", + "(%%k) hour, 24-hour clock, blank pad ( 0..23) %k", + "(%%l) hour, 12-hour clock, blank pad ( 0..12) %l", + "(%%m) month (01..12) %m", + "(%%o) Emperor/Era Year %o", + "(%%p) locale's AM or PM based on 12-hour clock %p", + "(%%r) time, 12-hour (same as %%I:%%M:%%S %%p) %r", + "(%%u) ISO 8601: Weekday as decimal number [1 (Monday) - 7] %u", + "(%%v) VMS date (dd-bbb-YYYY) %v", + "(%%w) day of week (0..6, Sunday == 0) %w", + "(%%x) appropriate locale date representation %x", + "(%%y) last two digits of year (00..99) %y", + "(%%z) timezone offset east of GMT as HHMM (e.g. -0500) %z", + (char *) NULL +}; + +/* main routine. */ + +int +main(argc, argv) +int argc; +char **argv; +{ + long time(); + + char *next; + char string[MAXTIME]; + + int k; + int length; + + struct tm *tm; + + long clock; + + /* Call the function. */ + + clock = time((long *) 0); + tm = localtime(&clock); + + for (k = 0; next = array[k]; k++) { + length = strftime(string, MAXTIME, next, tm); + printf("%s\n", string); + } + + exit(0); +} +#endif /* TEST_STRFTIME */ diff --git a/bash-5.1/lib/sh/stringlist.c b/bash-5.1/lib/sh/stringlist.c new file mode 100644 index 0000000..3f28b63 --- /dev/null +++ b/bash-5.1/lib/sh/stringlist.c @@ -0,0 +1,297 @@ +/* stringlist.c - functions to handle a generic `list of strings' structure */ + +/* Copyright (C) 2000-2019 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include + +#include "shell.h" + +#ifdef STRDUP +# undef STRDUP +#endif +#define STRDUP(x) ((x) ? savestring (x) : (char *)NULL) + +/* Allocate a new STRINGLIST, with room for N strings. */ + +STRINGLIST * +strlist_create (n) + int n; +{ + STRINGLIST *ret; + register int i; + + ret = (STRINGLIST *)xmalloc (sizeof (STRINGLIST)); + if (n) + { + ret->list = strvec_create (n+1); + ret->list_size = n; + for (i = 0; i < n; i++) + ret->list[i] = (char *)NULL; + } + else + { + ret->list = (char **)NULL; + ret->list_size = 0; + } + ret->list_len = 0; + return ret; +} + +STRINGLIST * +strlist_resize (sl, n) + STRINGLIST *sl; + int n; +{ + register int i; + + if (sl == 0) + return (sl = strlist_create (n)); + + if (n > sl->list_size) + { + sl->list = strvec_resize (sl->list, n + 1); + for (i = sl->list_size; i <= n; i++) + sl->list[i] = (char *)NULL; + sl->list_size = n; + } + return sl; +} + +void +strlist_flush (sl) + STRINGLIST *sl; +{ + if (sl == 0 || sl->list == 0) + return; + strvec_flush (sl->list); + sl->list_len = 0; +} + +void +strlist_dispose (sl) + STRINGLIST *sl; +{ + if (sl == 0) + return; + if (sl->list) + strvec_dispose (sl->list); + free (sl); +} + +int +strlist_remove (sl, s) + STRINGLIST *sl; + char *s; +{ + int r; + + if (sl == 0 || sl->list == 0 || sl->list_len == 0) + return 0; + + r = strvec_remove (sl->list, s); + if (r) + sl->list_len--; + return r; +} + +STRINGLIST * +strlist_copy (sl) + STRINGLIST *sl; +{ + STRINGLIST *new; + register int i; + + if (sl == 0) + return ((STRINGLIST *)0); + new = strlist_create (sl->list_size); + /* I'd like to use strvec_copy, but that doesn't copy everything. */ + if (sl->list) + { + for (i = 0; i < sl->list_size; i++) + new->list[i] = STRDUP (sl->list[i]); + } + new->list_size = sl->list_size; + new->list_len = sl->list_len; + /* just being careful */ + if (new->list) + new->list[new->list_len] = (char *)NULL; + return new; +} + +/* Return a new STRINGLIST with everything from M1 and M2. */ + +STRINGLIST * +strlist_merge (m1, m2) + STRINGLIST *m1, *m2; +{ + STRINGLIST *sl; + int i, n, l1, l2; + + l1 = m1 ? m1->list_len : 0; + l2 = m2 ? m2->list_len : 0; + + sl = strlist_create (l1 + l2 + 1); + for (i = n = 0; i < l1; i++, n++) + sl->list[n] = STRDUP (m1->list[i]); + for (i = 0; i < l2; i++, n++) + sl->list[n] = STRDUP (m2->list[i]); + sl->list_len = n; + sl->list[n] = (char *)NULL; + return (sl); +} + +/* Make STRINGLIST M1 contain everything in M1 and M2. */ +STRINGLIST * +strlist_append (m1, m2) + STRINGLIST *m1, *m2; +{ + register int i, n, len1, len2; + + if (m1 == 0) + return (m2 ? strlist_copy (m2) : (STRINGLIST *)0); + + len1 = m1->list_len; + len2 = m2 ? m2->list_len : 0; + + if (len2) + { + m1 = strlist_resize (m1, len1 + len2 + 1); + for (i = 0, n = len1; i < len2; i++, n++) + m1->list[n] = STRDUP (m2->list[i]); + m1->list[n] = (char *)NULL; + m1->list_len = n; + } + + return m1; +} + +STRINGLIST * +strlist_prefix_suffix (sl, prefix, suffix) + STRINGLIST *sl; + char *prefix, *suffix; +{ + int plen, slen, tlen, llen, i; + char *t; + + if (sl == 0 || sl->list == 0 || sl->list_len == 0) + return sl; + + plen = STRLEN (prefix); + slen = STRLEN (suffix); + + if (plen == 0 && slen == 0) + return (sl); + + for (i = 0; i < sl->list_len; i++) + { + llen = STRLEN (sl->list[i]); + tlen = plen + llen + slen + 1; + t = (char *)xmalloc (tlen + 1); + if (plen) + strcpy (t, prefix); + strcpy (t + plen, sl->list[i]); + if (slen) + strcpy (t + plen + llen, suffix); + free (sl->list[i]); + sl->list[i] = t; + } + + return (sl); +} + +void +strlist_print (sl, prefix) + STRINGLIST *sl; + char *prefix; +{ + register int i; + + if (sl == 0) + return; + for (i = 0; i < sl->list_len; i++) + printf ("%s%s\n", prefix ? prefix : "", sl->list[i]); +} + +void +strlist_walk (sl, func) + STRINGLIST *sl; + sh_strlist_map_func_t *func; +{ + register int i; + + if (sl == 0) + return; + for (i = 0; i < sl->list_len; i++) + if ((*func)(sl->list[i]) < 0) + break; +} + +void +strlist_sort (sl) + STRINGLIST *sl; +{ + if (sl == 0 || sl->list_len == 0 || sl->list == 0) + return; + strvec_sort (sl->list, 0); +} + +STRINGLIST * +strlist_from_word_list (list, alloc, starting_index, ip) + WORD_LIST *list; + int alloc, starting_index, *ip; +{ + STRINGLIST *ret; + int slen, len; + + if (list == 0) + { + if (ip) + *ip = 0; + return ((STRINGLIST *)0); + } + slen = list_length (list); + ret = (STRINGLIST *)xmalloc (sizeof (STRINGLIST)); + ret->list = strvec_from_word_list (list, alloc, starting_index, &len); + ret->list_size = slen + starting_index; + ret->list_len = len; + if (ip) + *ip = len; + return ret; +} + +WORD_LIST * +strlist_to_word_list (sl, alloc, starting_index) + STRINGLIST *sl; + int alloc, starting_index; +{ + WORD_LIST *list; + + if (sl == 0 || sl->list == 0) + return ((WORD_LIST *)NULL); + + list = strvec_to_word_list (sl->list, alloc, starting_index); + return list; +} diff --git a/bash-5.1/lib/sh/stringvec.c b/bash-5.1/lib/sh/stringvec.c new file mode 100644 index 0000000..8600042 --- /dev/null +++ b/bash-5.1/lib/sh/stringvec.c @@ -0,0 +1,272 @@ +/* stringvec.c - functions for managing arrays of strings. */ + +/* 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 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 . +*/ + +#include + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include +#include + +#include "shell.h" + +/* Allocate an array of strings with room for N members. */ +char ** +strvec_create (n) + int n; +{ + return ((char **)xmalloc ((n) * sizeof (char *))); +} + +/* Allocate an array of strings with room for N members. */ +char ** +strvec_mcreate (n) + int n; +{ + return ((char **)malloc ((n) * sizeof (char *))); +} + +char ** +strvec_resize (array, nsize) + char **array; + int nsize; +{ + return ((char **)xrealloc (array, nsize * sizeof (char *))); +} + +char ** +strvec_mresize (array, nsize) + char **array; + int nsize; +{ + return ((char **)realloc (array, nsize * sizeof (char *))); +} + +/* Return the length of ARRAY, a NULL terminated array of char *. */ +int +strvec_len (array) + 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 +strvec_flush (array) + char **array; +{ + register int i; + + if (array == 0) + return; + + for (i = 0; array[i]; i++) + free (array[i]); +} + +void +strvec_dispose (array) + char **array; +{ + if (array == 0) + return; + + strvec_flush (array); + free (array); +} + +int +strvec_remove (array, name) + char **array, *name; +{ + register int i, j; + char *x; + + if (array == 0) + return 0; + + for (i = 0; array[i]; i++) + if (STREQ (name, array[i])) + { + x = array[i]; + for (j = i; array[j]; j++) + array[j] = array[j + 1]; + free (x); + return 1; + } + return 0; +} + +/* Find NAME in ARRAY. Return the index of NAME, or -1 if not present. + ARRAY should be NULL terminated. */ +int +strvec_search (array, name) + char **array, *name; +{ + int i; + + for (i = 0; array[i]; i++) + if (STREQ (name, array[i])) + return (i); + + return (-1); +} + +/* Allocate and return a new copy of ARRAY and its contents. */ +char ** +strvec_copy (array) + char **array; +{ + register int i; + int len; + char **ret; + + len = strvec_len (array); + + ret = (char **)xmalloc ((len + 1) * sizeof (char *)); + for (i = 0; array[i]; i++) + ret[i] = savestring (array[i]); + ret[i] = (char *)NULL; + + return (ret); +} + +/* Comparison routine for use by qsort that conforms to the new Posix + requirements (http://austingroupbugs.net/view.php?id=1070). + + Perform a bytewise comparison if *S1 and *S2 collate equally. */ +int +strvec_posixcmp (s1, s2) + register char **s1, **s2; +{ + int result; + +#if defined (HAVE_STRCOLL) + result = strcoll (*s1, *s2); + if (result != 0) + return result; +#endif + + if ((result = **s1 - **s2) == 0) + result = strcmp (*s1, *s2); + + return (result); +} + +/* Comparison routine for use with qsort() on arrays of strings. Uses + strcoll(3) if available, otherwise it uses strcmp(3). */ +int +strvec_strcmp (s1, s2) + register char **s1, **s2; +{ +#if defined (HAVE_STRCOLL) + return (strcoll (*s1, *s2)); +#else /* !HAVE_STRCOLL */ + int result; + + if ((result = **s1 - **s2) == 0) + result = strcmp (*s1, *s2); + + return (result); +#endif /* !HAVE_STRCOLL */ +} + +/* Sort ARRAY, a null terminated array of pointers to strings. */ +void +strvec_sort (array, posix) + char **array; + int posix; +{ + if (posix) + qsort (array, strvec_len (array), sizeof (char *), (QSFUNC *)strvec_posixcmp); + else + qsort (array, strvec_len (array), sizeof (char *), (QSFUNC *)strvec_strcmp); +} + +/* Cons up a new array of words. The words are taken from LIST, + which is a WORD_LIST *. If ALLOC is true, everything is malloc'ed, + so you should free everything in this array when you are done. + The array is NULL terminated. If IP is non-null, it gets the + number of words in the returned array. STARTING_INDEX says where + to start filling in the returned array; it can be used to reserve + space at the beginning of the array. */ + +char ** +strvec_from_word_list (list, alloc, starting_index, ip) + WORD_LIST *list; + int alloc, starting_index, *ip; +{ + int count; + char **array; + + count = list_length (list); + array = (char **)xmalloc ((1 + count + starting_index) * sizeof (char *)); + + for (count = 0; count < starting_index; count++) + array[count] = (char *)NULL; + for (count = starting_index; list; count++, list = list->next) + array[count] = alloc ? savestring (list->word->word) : list->word->word; + array[count] = (char *)NULL; + + if (ip) + *ip = count; + return (array); +} + +/* Convert an array of strings into the form used internally by the shell. + ALLOC means to allocate new storage for each WORD_DESC in the returned + list rather than copy the values in ARRAY. STARTING_INDEX says where + in ARRAY to begin. */ + +WORD_LIST * +strvec_to_word_list (array, alloc, starting_index) + char **array; + int alloc, starting_index; +{ + WORD_LIST *list; + WORD_DESC *w; + int i, count; + + if (array == 0 || array[0] == 0) + return (WORD_LIST *)NULL; + + for (count = 0; array[count]; count++) + ; + + for (i = starting_index, list = (WORD_LIST *)NULL; i < count; i++) + { + w = make_bare_word (alloc ? array[i] : ""); + if (alloc == 0) + { + free (w->word); + w->word = array[i]; + } + list = make_word_list (w, list); + } + return (REVERSE_LIST (list, WORD_LIST *)); +} diff --git a/bash-5.1/lib/sh/strnlen.c b/bash-5.1/lib/sh/strnlen.c new file mode 100644 index 0000000..10414d3 --- /dev/null +++ b/bash-5.1/lib/sh/strnlen.c @@ -0,0 +1,49 @@ +/* strnlen - return length of passed string, with length limit */ + +/* Copyright (C) 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 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 . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if !defined (HAVE_STRNLEN) + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +/* Find the length of S, but scan at most MAXLEN characters. If no '\0' + terminator is found within the first MAXLEN characters, return MAXLEN. */ +size_t +strnlen (s, maxlen) + register const char *s; + size_t maxlen; +{ + register const char *e; + size_t n; + + for (e = s, n = 0; *e && n < maxlen; e++, n++) + ; + return n; +} +#endif diff --git a/bash-5.1/lib/sh/strpbrk.c b/bash-5.1/lib/sh/strpbrk.c new file mode 100644 index 0000000..8cce830 --- /dev/null +++ b/bash-5.1/lib/sh/strpbrk.c @@ -0,0 +1,49 @@ +/* strpbrk.c - locate multiple characters in a string */ + +/* Copyright (C) 1991, 1994 Free Software Foundation, Inc. + + NOTE: The canonical source of this file is maintained with the GNU C Library. + Bugs can be reported to bug-glibc@prep.ai.mit.edu. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if !defined (HAVE_STRPBRK) + +#include + +/* Find the first occurrence in S of any character in ACCEPT. */ +char * +strpbrk (s, accept) + register const char *s; + register const char *accept; +{ + while (*s != '\0') + { + const char *a = accept; + while (*a != '\0') + if (*a++ == *s) + return (char *) s; + ++s; + } + + return 0; +} +#endif diff --git a/bash-5.1/lib/sh/strstr.c b/bash-5.1/lib/sh/strstr.c new file mode 100644 index 0000000..c43b05e --- /dev/null +++ b/bash-5.1/lib/sh/strstr.c @@ -0,0 +1,125 @@ +/* strstr - find a substring within a string */ + +/* Copyright (C) 1994, 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 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 . +*/ + +/* + * My personal strstr() implementation that beats most other algorithms. + * Until someone tells me otherwise, I assume that this is the + * fastest implementation of strstr() in C. + * I deliberately chose not to comment it. You should have at least + * as much fun trying to understand it, as I had to write it :-). + * + * Stephen R. van den Berg, berg@pool.informatik.rwth-aachen.de */ + +#if HAVE_CONFIG_H +# include +#endif + +#if defined _LIBC || defined HAVE_STRING_H +# include +#endif +#include + +typedef unsigned chartype; + +#undef strstr + +char * +strstr (const char *phaystack, const char *pneedle) +{ + register const unsigned char *haystack, *needle; + register chartype b, c; + + haystack = (const unsigned char *) phaystack; + needle = (const unsigned char *) pneedle; + + b = *needle; + if (b != '\0') + { + haystack--; /* possible ANSI violation */ + do + { + c = *++haystack; + if (c == '\0') + goto ret0; + } + while (c != b); + + c = *++needle; + if (c == '\0') + goto foundneedle; + ++needle; + goto jin; + + for (;;) + { + register chartype a; + register const unsigned char *rhaystack, *rneedle; + + do + { + a = *++haystack; + if (a == '\0') + goto ret0; + if (a == b) + break; + a = *++haystack; + if (a == '\0') + goto ret0; +shloop:; } + while (a != b); + +jin: a = *++haystack; + if (a == '\0') + goto ret0; + + if (a != c) + goto shloop; + + rhaystack = haystack-- + 1; + rneedle = needle; + a = *rneedle; + + if (*rhaystack == a) + do + { + if (a == '\0') + goto foundneedle; + ++rhaystack; + a = *++needle; + if (*rhaystack != a) + break; + if (a == '\0') + goto foundneedle; + ++rhaystack; + a = *++needle; + } + while (*rhaystack == a); + + needle = rneedle; /* took the register-poor approach */ + + if (a == '\0') + break; + } + } +foundneedle: + return (char*) haystack; +ret0: + return 0; +} diff --git a/bash-5.1/lib/sh/strtod.c b/bash-5.1/lib/sh/strtod.c new file mode 100644 index 0000000..55e1154 --- /dev/null +++ b/bash-5.1/lib/sh/strtod.c @@ -0,0 +1,207 @@ +/* strtod.c - convert string to double-precision floating-point value. */ + +/* Copyright (C) 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 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 . +*/ + +#if HAVE_CONFIG_H +# include +#endif + +#ifndef HAVE_STRTOD + +#include +#ifndef errno +extern int errno; +#endif + +#include +#include + +#if HAVE_FLOAT_H +# include +#else +# define DBL_MAX 1.7976931348623159e+308 +# define DBL_MIN 2.2250738585072010e-308 +#endif + +#include + +#ifndef NULL +# define NULL 0 +#endif + +#ifndef HUGE_VAL +# define HUGE_VAL HUGE +#endif + +#ifndef locale_decpoint +extern int locale_decpoint PARAMS((void)); +#endif + +/* Convert NPTR to a double. If ENDPTR is not NULL, a pointer to the + character after the last one used in the number is put in *ENDPTR. */ +double +strtod (nptr, endptr) + const char *nptr; + char **endptr; +{ + register const char *s; + short sign; + + /* The number so far. */ + double num; + + int radixchar; + int got_dot; /* Found a decimal point. */ + int got_digit; /* Seen any digits. */ + + /* The exponent of the number. */ + long int exponent; + + if (nptr == NULL) + { + errno = EINVAL; + goto noconv; + } + + s = nptr; + + /* Eat whitespace. */ + while (ISSPACE ((unsigned char)*s)) + ++s; + + /* Get the sign. */ + sign = *s == '-' ? -1 : 1; + if (*s == '-' || *s == '+') + ++s; + + radixchar = locale_decpoint (); + num = 0.0; + got_dot = 0; + got_digit = 0; + exponent = 0; + for (;; ++s) + { + if (DIGIT (*s)) + { + got_digit = 1; + + /* Make sure that multiplication by 10 will not overflow. */ + if (num > DBL_MAX * 0.1) + /* The value of the digit doesn't matter, since we have already + gotten as many digits as can be represented in a `double'. + This doesn't necessarily mean the result will overflow. + The exponent may reduce it to within range. + + We just need to record that there was another + digit so that we can multiply by 10 later. */ + ++exponent; + else + num = (num * 10.0) + (*s - '0'); + + /* Keep track of the number of digits after the decimal point. + If we just divided by 10 here, we would lose precision. */ + if (got_dot) + --exponent; + } + else if (!got_dot && *s == radixchar) + /* Record that we have found the decimal point. */ + got_dot = 1; + else + /* Any other character terminates the number. */ + break; + } + + if (!got_digit) + goto noconv; + + if (TOLOWER ((unsigned char)*s) == 'e') + { + /* Get the exponent specified after the `e' or `E'. */ + int save = errno; + char *end; + long int exp; + + errno = 0; + ++s; + exp = strtol (s, &end, 10); + if (errno == ERANGE) + { + /* The exponent overflowed a `long int'. It is probably a safe + assumption that an exponent that cannot be represented by + a `long int' exceeds the limits of a `double'. */ + if (endptr != NULL) + *endptr = end; + if (exp < 0) + goto underflow; + else + goto overflow; + } + else if (end == s) + /* There was no exponent. Reset END to point to + the 'e' or 'E', so *ENDPTR will be set there. */ + end = (char *) s - 1; + errno = save; + s = end; + exponent += exp; + } + + if (endptr != NULL) + *endptr = (char *) s; + + if (num == 0.0) + return 0.0; + + /* Multiply NUM by 10 to the EXPONENT power, + checking for overflow and underflow. */ + + if (exponent < 0) + { + if (num < DBL_MIN * pow (10.0, (double) -exponent)) + goto underflow; + } + else if (exponent > 0) + { + if (num > DBL_MAX * pow (10.0, (double) -exponent)) + goto overflow; + } + + num *= pow (10.0, (double) exponent); + + return num * sign; + +overflow: + /* Return an overflow error. */ + errno = ERANGE; + return HUGE_VAL * sign; + +underflow: + /* Return an underflow error. */ + if (endptr != NULL) + *endptr = (char *) nptr; + errno = ERANGE; + return 0.0; + +noconv: + /* There was no number. */ + if (endptr != NULL) + *endptr = (char *) nptr; + return 0.0; +} + +#endif /* !HAVE_STRTOD */ diff --git a/bash-5.1/lib/sh/strtoimax.c b/bash-5.1/lib/sh/strtoimax.c new file mode 100644 index 0000000..676e02e --- /dev/null +++ b/bash-5.1/lib/sh/strtoimax.c @@ -0,0 +1,113 @@ +/* strtoimax - convert string representation of a number into an intmax_t value. */ + +/* Copyright 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* Written by Paul Eggert. Modified by Chet Ramey for Bash. */ + +#if HAVE_CONFIG_H +# include +#endif + +#if HAVE_INTTYPES_H +# include +#endif + +#if HAVE_STDINT_H +# include +#endif + +#if HAVE_STDLIB_H +# include +#endif + +#include + +/* Verify a requirement at compile-time (unlike assert, which is runtime). */ +#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; } + +#ifndef HAVE_DECL_STRTOL +"this configure-time declaration test was not run" +#endif +#if !HAVE_DECL_STRTOL +extern long strtol PARAMS((const char *, char **, int)); +#endif + +#ifndef HAVE_DECL_STRTOLL +"this configure-time declaration test was not run" +#endif +#if !HAVE_DECL_STRTOLL && HAVE_LONG_LONG +extern long long strtoll PARAMS((const char *, char **, int)); +#endif + +#ifdef strtoimax +#undef strtoimax +#endif + +intmax_t +strtoimax (ptr, endptr, base) + const char *ptr; + char **endptr; + int base; +{ +#if HAVE_LONG_LONG + verify(size_is_that_of_long_or_long_long, + (sizeof (intmax_t) == sizeof (long) || + sizeof (intmax_t) == sizeof (long long))); + + if (sizeof (intmax_t) != sizeof (long)) + return (strtoll (ptr, endptr, base)); +#else + verify (size_is_that_of_long, sizeof (intmax_t) == sizeof (long)); +#endif + + return (strtol (ptr, endptr, base)); +} + +#ifdef TESTING +# include +int +main () +{ + char *p, *endptr; + intmax_t x; +#if HAVE_LONG_LONG + long long y; +#endif + long z; + + printf ("sizeof intmax_t: %d\n", sizeof (intmax_t)); + +#if HAVE_LONG_LONG + printf ("sizeof long long: %d\n", sizeof (long long)); +#endif + printf ("sizeof long: %d\n", sizeof (long)); + + x = strtoimax("42", &endptr, 10); +#if HAVE_LONG_LONG + y = strtoll("42", &endptr, 10); +#else + y = -1; +#endif + z = strtol("42", &endptr, 10); + + printf ("%lld %lld %ld\n", x, y, z); + + exit (0); +} +#endif diff --git a/bash-5.1/lib/sh/strtol.c b/bash-5.1/lib/sh/strtol.c new file mode 100644 index 0000000..8aa7478 --- /dev/null +++ b/bash-5.1/lib/sh/strtol.c @@ -0,0 +1,259 @@ +/* strtol - convert string representation of a number into a long integer value. */ + +/* Copyright (C) 1991,92,94,95,96,97,98,99,2000,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 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 . +*/ + +#include + +#if !defined (HAVE_STRTOL) + +#include +#include + +#ifndef errno +extern int errno; +#endif + +#ifndef __set_errno +# define __set_errno(Val) errno = (Val) +#endif + +#ifdef HAVE_LIMITS_H +# include +#endif + +#include + +#include +#include + +#ifndef NULL +# define NULL 0 +#endif + +/* Nonzero if we are defining `strtoul' or `strtoull', operating on + unsigned integers. */ +#ifndef UNSIGNED +# define UNSIGNED 0 +# define INT LONG int +#else +# define INT unsigned LONG int +#endif + +#if UNSIGNED +# ifdef QUAD +# define strtol strtoull +# else +# define strtol strtoul +# endif +#else +# ifdef QUAD +# define strtol strtoll +# endif +#endif + +/* If QUAD is defined, we are defining `strtoll' or `strtoull', + operating on `long long ints. */ + +#ifdef QUAD +# define LONG long long +# define STRTOL_LONG_MIN LLONG_MIN +# define STRTOL_LONG_MAX LLONG_MAX +# define STRTOL_ULONG_MAX ULLONG_MAX +#else /* !QUAD */ +# define LONG long +# define STRTOL_LONG_MIN LONG_MIN +# define STRTOL_LONG_MAX LONG_MAX +# define STRTOL_ULONG_MAX ULONG_MAX +#endif + +/* Convert NPTR to an `unsigned long int' or `long int' in base BASE. + If BASE is 0 the base is determined by the presence of a leading + zero, indicating octal or a leading "0x" or "0X", indicating hexadecimal. + If BASE is < 2 or > 36, it is no longer reset to 10; EINVAL is returned. + If ENDPTR is not NULL, a pointer to the character after the last + one converted is stored in *ENDPTR. */ + +INT +strtol (nptr, endptr, base) + const char *nptr; + char **endptr; + int base; +{ + int negative; + register unsigned LONG int cutoff; + register unsigned int cutlim; + register unsigned LONG int i; + register const char *s; + register unsigned char c; + const char *save, *end; + int overflow; + + if (base < 0 || base == 1 || base > 36) + { + __set_errno (EINVAL); + return 0; + } + + save = s = nptr; + + /* Skip white space. */ + while (ISSPACE ((unsigned char)*s)) + ++s; + if (*s == '\0') + goto noconv; + + /* Check for a sign. */ + if (*s == '-' || *s == '+') + { + negative = (*s == '-'); + ++s; + } + else + negative = 0; + + /* Recognize number prefix and if BASE is zero, figure it out ourselves. */ + if (*s == '0') + { + if ((base == 0 || base == 16) && TOUPPER ((unsigned char) s[1]) == 'X') + { + s += 2; + base = 16; + } + else if (base == 0) + base = 8; + } + else if (base == 0) + base = 10; + + /* Save the pointer so we can check later if anything happened. */ + save = s; + + end = NULL; + + cutoff = STRTOL_ULONG_MAX / (unsigned LONG int) base; + cutlim = STRTOL_ULONG_MAX % (unsigned LONG int) base; + + overflow = 0; + i = 0; + c = *s; + if (sizeof (long int) != sizeof (LONG int)) + { + unsigned long int j = 0; + unsigned long int jmax = ULONG_MAX / base; + + for (;c != '\0'; c = *++s) + { + if (s == end) + break; + if (DIGIT (c)) + c -= '0'; + else if (ISALPHA (c)) + c = TOUPPER (c) - 'A' + 10; + else + break; + + if ((int) c >= base) + break; + /* Note that we never can have an overflow. */ + else if (j >= jmax) + { + /* We have an overflow. Now use the long representation. */ + i = (unsigned LONG int) j; + goto use_long; + } + else + j = j * (unsigned long int) base + c; + } + + i = (unsigned LONG int) j; + } + else + for (;c != '\0'; c = *++s) + { + if (s == end) + break; + if (DIGIT (c)) + c -= '0'; + else if (ISALPHA (c)) + c = TOUPPER (c) - 'A' + 10; + else + break; + if ((int) c >= base) + break; + /* Check for overflow. */ + if (i > cutoff || (i == cutoff && c > cutlim)) + overflow = 1; + else + { + use_long: + i *= (unsigned LONG int) base; + i += c; + } + } + + /* Check if anything actually happened. */ + if (s == save) + goto noconv; + + /* Store in ENDPTR the address of one character + past the last character we converted. */ + if (endptr != NULL) + *endptr = (char *) s; + +#if !UNSIGNED + /* Check for a value that is within the range of + `unsigned LONG int', but outside the range of `LONG int'. */ + if (overflow == 0 + && i > (negative + ? -((unsigned LONG int) (STRTOL_LONG_MIN + 1)) + 1 + : (unsigned LONG int) STRTOL_LONG_MAX)) + overflow = 1; +#endif + + if (overflow) + { + __set_errno (ERANGE); +#if UNSIGNED + return STRTOL_ULONG_MAX; +#else + return negative ? STRTOL_LONG_MIN : STRTOL_LONG_MAX; +#endif + } + + /* Return the result of the appropriate sign. */ + return negative ? -i : i; + +noconv: + /* We must handle a special case here: the base is 0 or 16 and the + first two characters are '0' and 'x', but the rest are no + hexadecimal digits. This is no error case. We return 0 and + ENDPTR points to the `x`. */ + if (endptr != NULL) + { + if (save - nptr >= 2 && TOUPPER ((unsigned char) save[-1]) == 'X' && save[-2] == '0') + *endptr = (char *) &save[-1]; + else + /* There was no number to convert. */ + *endptr = (char *) nptr; + } + + return 0L; +} + +#endif /* !HAVE_STRTOL */ diff --git a/bash-5.1/lib/sh/strtoll.c b/bash-5.1/lib/sh/strtoll.c new file mode 100644 index 0000000..f6060ee --- /dev/null +++ b/bash-5.1/lib/sh/strtoll.c @@ -0,0 +1,30 @@ +/* strtoll - convert string representation of a number into a long long value. */ + +/* 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 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 . +*/ + +#include + +#if defined (HAVE_LONG_LONG) && !defined (HAVE_STRTOLL) + +#define QUAD 1 +#undef HAVE_STRTOL + +#include "strtol.c" + +#endif /* HAVE_LONG_LONG && !HAVE_STRTOLL */ diff --git a/bash-5.1/lib/sh/strtoul.c b/bash-5.1/lib/sh/strtoul.c new file mode 100644 index 0000000..cbaa484 --- /dev/null +++ b/bash-5.1/lib/sh/strtoul.c @@ -0,0 +1,30 @@ +/* strtoul - convert string representation of a number into an unsigned long value. */ + +/* 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 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 . +*/ + +#include + +#ifndef HAVE_STRTOUL + +#define UNSIGNED 1 +#undef HAVE_STRTOL + +#include + +#endif /* !HAVE_STRTOUL */ diff --git a/bash-5.1/lib/sh/strtoull.c b/bash-5.1/lib/sh/strtoull.c new file mode 100644 index 0000000..02ddebb --- /dev/null +++ b/bash-5.1/lib/sh/strtoull.c @@ -0,0 +1,31 @@ +/* strtoull - convert string representation of a number into an unsigned long long value. */ + +/* 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 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 . +*/ + +#include + +#if defined (HAVE_LONG_LONG) && !defined (HAVE_STRTOULL) + +#define QUAD 1 +#define UNSIGNED 1 +#undef HAVE_STRTOL + +#include "strtol.c" + +#endif /* HAVE_LONG_LONG && !HAVE_STRTOULL */ diff --git a/bash-5.1/lib/sh/strtoumax.c b/bash-5.1/lib/sh/strtoumax.c new file mode 100644 index 0000000..0247e57 --- /dev/null +++ b/bash-5.1/lib/sh/strtoumax.c @@ -0,0 +1,113 @@ +/* strtoumax - convert string representation of a number into an uintmax_t value. */ + +/* Copyright 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* Written by Paul Eggert. Modified by Chet Ramey for Bash. */ + +#if HAVE_CONFIG_H +# include +#endif + +#if HAVE_INTTYPES_H +# include +#endif + +#if HAVE_STDINT_H +# include +#endif + +#if HAVE_STDLIB_H +# include +#endif + +#include + +/* Verify a requirement at compile-time (unlike assert, which is runtime). */ +#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; } + +#ifndef HAVE_DECL_STRTOUL +"this configure-time declaration test was not run" +#endif +#if !HAVE_DECL_STRTOUL +extern unsigned long strtoul PARAMS((const char *, char **, int)); +#endif + +#ifndef HAVE_DECL_STRTOULL +"this configure-time declaration test was not run" +#endif +#if !HAVE_DECL_STRTOULL && HAVE_UNSIGNED_LONG_LONG +extern unsigned long long strtoull PARAMS((const char *, char **, int)); +#endif + +#ifdef strtoumax +#undef strtoumax +#endif + +uintmax_t +strtoumax (ptr, endptr, base) + const char *ptr; + char **endptr; + int base; +{ +#if HAVE_UNSIGNED_LONG_LONG + verify (size_is_that_of_unsigned_long_or_unsigned_long_long, + (sizeof (uintmax_t) == sizeof (unsigned long) || + sizeof (uintmax_t) == sizeof (unsigned long long))); + + if (sizeof (uintmax_t) != sizeof (unsigned long)) + return (strtoull (ptr, endptr, base)); +#else + verify (size_is_that_of_unsigned_long, sizeof (uintmax_t) == sizeof (unsigned long)); +#endif + + return (strtoul (ptr, endptr, base)); +} + +#ifdef TESTING +# include +int +main () +{ + char *p, *endptr; + uintmax_t x; +#if HAVE_UNSIGNED_LONG_LONG + unsigned long long y; +#endif + unsigned long z; + + printf ("sizeof uintmax_t: %d\n", sizeof (uintmax_t)); + +#if HAVE_UNSIGNED_LONG_LONG + printf ("sizeof unsigned long long: %d\n", sizeof (unsigned long long)); +#endif + printf ("sizeof unsigned long: %d\n", sizeof (unsigned long)); + + x = strtoumax("42", &endptr, 10); +#if HAVE_LONG_LONG + y = strtoull("42", &endptr, 10); +#else + y = 0; +#endif + z = strtoul("42", &endptr, 10); + + printf ("%llu %llu %lu\n", x, y, z); + + exit (0); +} +#endif diff --git a/bash-5.1/lib/sh/strtrans.c b/bash-5.1/lib/sh/strtrans.c new file mode 100644 index 0000000..b2b1acc --- /dev/null +++ b/bash-5.1/lib/sh/strtrans.c @@ -0,0 +1,400 @@ +/* strtrans.c - Translate and untranslate strings with ANSI-C escape sequences. */ + +/* Copyright (C) 2000-2015 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include +#include + +#include "shell.h" + +#include "shmbchar.h" +#include "shmbutil.h" + +#ifdef ESC +#undef ESC +#endif +#define ESC '\033' /* ASCII */ + +/* Convert STRING by expanding the escape sequences specified by the + ANSI C standard. If SAWC is non-null, 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. If (FLAGS&1) is non-zero, + that we're translating a string for `echo -e', and therefore should not + treat a single quote as a character that may be escaped with a backslash. + If (FLAGS&2) is non-zero, we're expanding for the parser and want to + quote CTLESC and CTLNUL with CTLESC. If (flags&4) is non-zero, we want + to remove the backslash before any unrecognized escape sequence. */ +char * +ansicstr (string, len, flags, sawc, rlen) + char *string; + int len, flags, *sawc, *rlen; +{ + int c, temp; + char *ret, *r, *s; + unsigned long v; + size_t clen; + int b, mb_cur_max; +#if defined (HANDLE_MULTIBYTE) + wchar_t wc; +#endif + + if (string == 0 || *string == '\0') + return ((char *)NULL); + + mb_cur_max = MB_CUR_MAX; +#if defined (HANDLE_MULTIBYTE) + temp = 4*len + 4; + if (temp < 12) + temp = 12; /* ensure enough for eventual u32cesc */ + ret = (char *)xmalloc (temp); +#else + ret = (char *)xmalloc (2*len + 1); /* 2*len for possible CTLESC */ +#endif + for (r = ret, s = string; s && *s; ) + { + c = *s++; + if (c != '\\' || *s == '\0') + { + clen = 1; +#if defined (HANDLE_MULTIBYTE) + if ((locale_utf8locale && (c & 0x80)) || + (locale_utf8locale == 0 && mb_cur_max > 0 && is_basic (c) == 0)) + { + clen = mbrtowc (&wc, s - 1, mb_cur_max, 0); + if (MB_INVALIDCH (clen)) + clen = 1; + } +#endif + *r++ = c; + for (--clen; clen > 0; clen--) + *r++ = *s++; + } + else + { + switch (c = *s++) + { +#if defined (__STDC__) + case 'a': c = '\a'; break; + case 'v': c = '\v'; break; +#else + case 'a': c = (int) 0x07; break; + case 'v': c = (int) 0x0B; break; +#endif + case 'b': c = '\b'; break; + case 'e': case 'E': /* ESC -- non-ANSI */ + c = ESC; break; + case 'f': c = '\f'; break; + case 'n': c = '\n'; break; + case 'r': c = '\r'; break; + case 't': c = '\t'; break; + case '1': case '2': case '3': + case '4': case '5': case '6': + case '7': +#if 1 + if (flags & 1) + { + *r++ = '\\'; + break; + } + /*FALLTHROUGH*/ +#endif + case '0': + /* If (FLAGS & 1), we're translating a string for echo -e (or + the equivalent xpg_echo option), so we obey the SUSv3/ + POSIX-2001 requirement and accept 0-3 octal digits after + a leading `0'. */ + temp = 2 + ((flags & 1) && (c == '0')); + for (c -= '0'; ISOCTAL (*s) && temp--; s++) + c = (c * 8) + OCTVALUE (*s); + c &= 0xFF; + break; + case 'x': /* Hex digit -- non-ANSI */ + if ((flags & 2) && *s == '{') + { + flags |= 16; /* internal flag value */ + s++; + } + /* Consume at least two hex characters */ + for (temp = 2, c = 0; ISXDIGIT ((unsigned char)*s) && temp--; s++) + c = (c * 16) + HEXVALUE (*s); + /* DGK says that after a `\x{' ksh93 consumes ISXDIGIT chars + until a non-xdigit or `}', so potentially more than two + chars are consumed. */ + if (flags & 16) + { + for ( ; ISXDIGIT ((unsigned char)*s); s++) + c = (c * 16) + HEXVALUE (*s); + flags &= ~16; + if (*s == '}') + s++; + } + /* \x followed by non-hex digits is passed through unchanged */ + else if (temp == 2) + { + *r++ = '\\'; + c = 'x'; + } + c &= 0xFF; + break; +#if defined (HANDLE_MULTIBYTE) + case 'u': + case 'U': + temp = (c == 'u') ? 4 : 8; /* \uNNNN \UNNNNNNNN */ + for (v = 0; ISXDIGIT ((unsigned char)*s) && temp--; s++) + v = (v * 16) + HEXVALUE (*s); + if (temp == ((c == 'u') ? 4 : 8)) + { + *r++ = '\\'; /* c remains unchanged */ + break; + } + else if (v <= 0x7f) /* <= 0x7f translates directly */ + { + c = v; + break; + } + else + { + temp = u32cconv (v, r); + r += temp; + continue; + } +#endif + case '\\': + break; + case '\'': case '"': case '?': + if (flags & 1) + *r++ = '\\'; + break; + case 'c': + if (sawc) + { + *sawc = 1; + *r = '\0'; + if (rlen) + *rlen = r - ret; + return ret; + } + else if ((flags & 1) == 0 && *s == 0) + ; /* pass \c through */ + else if ((flags & 1) == 0 && (c = *s)) + { + s++; + if ((flags & 2) && c == '\\' && c == *s) + s++; /* Posix requires $'\c\\' do backslash escaping */ + c = TOCTRL(c); + break; + } + /*FALLTHROUGH*/ + default: + if ((flags & 4) == 0) + *r++ = '\\'; + break; + } + if ((flags & 2) && (c == CTLESC || c == CTLNUL)) + *r++ = CTLESC; + *r++ = c; + } + } + *r = '\0'; + if (rlen) + *rlen = r - ret; + return ret; +} + +/* Take a string STR, possibly containing non-printing characters, and turn it + into a $'...' ANSI-C style quoted string. Returns a new string. */ +char * +ansic_quote (str, flags, rlen) + char *str; + int flags, *rlen; +{ + char *r, *ret, *s; + int l, rsize; + unsigned char c; + size_t clen; + int b; +#if defined (HANDLE_MULTIBYTE) + wchar_t wc; +#endif + + if (str == 0 || *str == 0) + return ((char *)0); + + l = strlen (str); + rsize = 4 * l + 4; + r = ret = (char *)xmalloc (rsize); + + *r++ = '$'; + *r++ = '\''; + + for (s = str; c = *s; s++) + { + b = l = 1; /* 1 == add backslash; 0 == no backslash */ + clen = 1; + + switch (c) + { + case ESC: c = 'E'; break; +#ifdef __STDC__ + case '\a': c = 'a'; break; + case '\v': c = 'v'; break; +#else + case 0x07: c = 'a'; break; + case 0x0b: c = 'v'; break; +#endif + + case '\b': c = 'b'; break; + case '\f': c = 'f'; break; + case '\n': c = 'n'; break; + case '\r': c = 'r'; break; + case '\t': c = 't'; break; + case '\\': + case '\'': + break; + default: +#if defined (HANDLE_MULTIBYTE) + b = is_basic (c); + /* XXX - clen comparison to 0 is dicey */ + if ((b == 0 && ((clen = mbrtowc (&wc, s, MB_CUR_MAX, 0)) < 0 || MB_INVALIDCH (clen) || iswprint (wc) == 0)) || + (b == 1 && ISPRINT (c) == 0)) +#else + if (ISPRINT (c) == 0) +#endif + { + *r++ = '\\'; + *r++ = TOCHAR ((c >> 6) & 07); + *r++ = TOCHAR ((c >> 3) & 07); + *r++ = TOCHAR (c & 07); + continue; + } + l = 0; + break; + } + if (b == 0 && clen == 0) + break; + + if (l) + *r++ = '\\'; + + if (clen == 1) + *r++ = c; + else + { + for (b = 0; b < (int)clen; b++) + *r++ = (unsigned char)s[b]; + s += clen - 1; /* -1 because of the increment above */ + } + } + + *r++ = '\''; + *r = '\0'; + if (rlen) + *rlen = r - ret; + return ret; +} + +#if defined (HANDLE_MULTIBYTE) +int +ansic_wshouldquote (string) + const char *string; +{ + const wchar_t *wcs; + wchar_t wcc; + wchar_t *wcstr = NULL; + size_t slen; + + slen = mbstowcs (wcstr, string, 0); + + if (slen == (size_t)-1) + return 1; + + wcstr = (wchar_t *)xmalloc (sizeof (wchar_t) * (slen + 1)); + mbstowcs (wcstr, string, slen + 1); + + for (wcs = wcstr; wcc = *wcs; wcs++) + if (iswprint(wcc) == 0) + { + free (wcstr); + return 1; + } + + free (wcstr); + return 0; +} +#endif + +/* return 1 if we need to quote with $'...' because of non-printing chars. */ +int +ansic_shouldquote (string) + const char *string; +{ + const char *s; + unsigned char c; + + if (string == 0) + return 0; + + for (s = string; c = *s; s++) + { +#if defined (HANDLE_MULTIBYTE) + if (is_basic (c) == 0) + return (ansic_wshouldquote (s)); +#endif + if (ISPRINT (c) == 0) + return 1; + } + + return 0; +} + +/* $'...' ANSI-C expand the portion of STRING between START and END and + return the result. The result cannot be longer than the input string. */ +char * +ansiexpand (string, start, end, lenp) + char *string; + int start, end, *lenp; +{ + char *temp, *t; + int len, tlen; + + temp = (char *)xmalloc (end - start + 1); + for (tlen = 0, len = start; len < end; ) + temp[tlen++] = string[len++]; + temp[tlen] = '\0'; + + if (*temp) + { + t = ansicstr (temp, tlen, 2, (int *)NULL, lenp); + free (temp); + return (t); + } + else + { + if (lenp) + *lenp = 0; + return (temp); + } +} diff --git a/bash-5.1/lib/sh/times.c b/bash-5.1/lib/sh/times.c new file mode 100644 index 0000000..2423078 --- /dev/null +++ b/bash-5.1/lib/sh/times.c @@ -0,0 +1,77 @@ +/* times.c - times(3) library function */ + +/* Copyright (C) 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if !defined (HAVE_TIMES) + +#include +#include +#include + +#if defined (HAVE_SYS_RESOURCE_H) && defined (HAVE_GETRUSAGE) +# include +#endif /* HAVE_SYS_RESOURCE_H && HAVE_GETRUSAGE */ + +extern long get_clk_tck PARAMS((void)); + +#define CONVTCK(r) (r.tv_sec * clk_tck + r.tv_usec / (1000000 / clk_tck)) + +clock_t +times(tms) + struct tms *tms; +{ + clock_t rv; + static long clk_tck = -1; + +#if defined (HAVE_GETRUSAGE) + struct timeval tv; + struct rusage ru; + + if (clk_tck == -1) + clk_tck = get_clk_tck(); + + if (getrusage(RUSAGE_SELF, &ru) < 0) + return ((clock_t)-1); + tms->tms_utime = CONVTCK(ru.ru_utime); + tms->tms_stime = CONVTCK(ru.ru_stime); + + if (getrusage(RUSAGE_CHILDREN, &ru) < 0) + return ((clock_t)-1); + tms->tms_cutime = CONVTCK(ru.ru_utime); + tms->tms_cstime = CONVTCK(ru.ru_stime); + + if (gettimeofday(&tv, NULL) < 0) + return ((clock_t)-1); + rv = (clock_t)(CONVTCK(tv)); +#else /* !HAVE_GETRUSAGE */ + if (clk_tck == -1) + clk_tck = get_clk_tck(); + + /* We can't do anything. */ + tms->tms_utime = tms->tms_stime = (clock_t)0; + tms->tms_cutime = tms->tms_cstime = (clock_t)0; + + rv = (clock_t)time((time_t *)0) * clk_tck; +# endif /* HAVE_GETRUSAGE */ + + return rv; +} +#endif /* !HAVE_TIMES */ diff --git a/bash-5.1/lib/sh/timeval.c b/bash-5.1/lib/sh/timeval.c new file mode 100644 index 0000000..f2ca762 --- /dev/null +++ b/bash-5.1/lib/sh/timeval.c @@ -0,0 +1,179 @@ +/* timeval.c - functions to perform operations on struct timevals */ + +/* 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 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 . +*/ + +#include + +#if defined (HAVE_TIMEVAL) + +#include +#include + +#include +#include + +#ifndef locale_decpoint +extern int locale_decpoint PARAMS((void)); +#endif + +#include + +struct timeval * +difftimeval (d, t1, t2) + struct timeval *d, *t1, *t2; +{ + d->tv_sec = t2->tv_sec - t1->tv_sec; + d->tv_usec = t2->tv_usec - t1->tv_usec; + if (d->tv_usec < 0) + { + d->tv_usec += 1000000; + d->tv_sec -= 1; + if (d->tv_sec < 0) /* ??? -- BSD/OS does this */ + { + d->tv_sec = 0; + d->tv_usec = 0; + } + } + return d; +} + +struct timeval * +addtimeval (d, t1, t2) + struct timeval *d, *t1, *t2; +{ + d->tv_sec = t1->tv_sec + t2->tv_sec; + d->tv_usec = t1->tv_usec + t2->tv_usec; + if (d->tv_usec >= 1000000) + { + d->tv_usec -= 1000000; + d->tv_sec += 1; + } + return d; +} + +struct timeval * +multimeval (d, m) + struct timeval *d; + int m; +{ + time_t t; + + t = d->tv_usec * m; + d->tv_sec = d->tv_sec * m + t / 1000000; + d->tv_usec = t % 1000000; + return d; +} + +struct timeval * +divtimeval (d, m) + struct timeval *d; + int m; +{ + time_t t; + + t = d->tv_sec; + d->tv_sec = t / m; + d->tv_usec = (d->tv_usec + 1000000 * (t % m)) / m; + return d; +} + +/* Do "cpu = ((user + sys) * 10000) / real;" with timevals. + Barely-tested code from Deven T. Corzine . */ +int +timeval_to_cpu (rt, ut, st) + struct timeval *rt, *ut, *st; /* real, user, sys */ +{ + struct timeval t1, t2; + register int i; + + addtimeval (&t1, ut, st); + t2.tv_sec = rt->tv_sec; + t2.tv_usec = rt->tv_usec; + + for (i = 0; i < 6; i++) + { + if ((t1.tv_sec > 99999999) || (t2.tv_sec > 99999999)) + break; + t1.tv_sec *= 10; + t1.tv_sec += t1.tv_usec / 100000; + t1.tv_usec *= 10; + t1.tv_usec %= 1000000; + t2.tv_sec *= 10; + t2.tv_sec += t2.tv_usec / 100000; + t2.tv_usec *= 10; + t2.tv_usec %= 1000000; + } + for (i = 0; i < 4; i++) + { + if (t1.tv_sec < 100000000) + t1.tv_sec *= 10; + else + t2.tv_sec /= 10; + } + + return ((t2.tv_sec == 0) ? 0 : t1.tv_sec / t2.tv_sec); +} + +/* Convert a pointer to a struct timeval to seconds and thousandths of a + second, returning the values in *SP and *SFP, respectively. This does + rounding on the fractional part, not just truncation to three places. */ +void +timeval_to_secs (tvp, sp, sfp) + struct timeval *tvp; + time_t *sp; + int *sfp; +{ + int rest; + + *sp = tvp->tv_sec; + + *sfp = tvp->tv_usec % 1000000; /* pretty much a no-op */ + rest = *sfp % 1000; + *sfp = (*sfp * 1000) / 1000000; + if (rest >= 500) + *sfp += 1; + + /* Sanity check */ + if (*sfp >= 1000) + { + *sp += 1; + *sfp -= 1000; + } +} + +/* Print the contents of a struct timeval * in a standard way to stdio + stream FP. */ +void +print_timeval (fp, tvp) + FILE *fp; + struct timeval *tvp; +{ + time_t timestamp; + long minutes; + int seconds, seconds_fraction; + + timeval_to_secs (tvp, ×tamp, &seconds_fraction); + + minutes = timestamp / 60; + seconds = timestamp % 60; + + fprintf (fp, "%ldm%d%c%03ds", minutes, seconds, locale_decpoint (), seconds_fraction); +} + +#endif /* HAVE_TIMEVAL */ diff --git a/bash-5.1/lib/sh/tmpfile.c b/bash-5.1/lib/sh/tmpfile.c new file mode 100644 index 0000000..ef8b067 --- /dev/null +++ b/bash-5.1/lib/sh/tmpfile.c @@ -0,0 +1,311 @@ +/* + * tmpfile.c - functions to create and safely open temp files for the shell. + */ + +/* Copyright (C) 2000-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include +#include +#include +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#include +#include + +#include + +#ifndef errno +extern int errno; +#endif + +#define BASEOPENFLAGS (O_CREAT | O_TRUNC | O_EXCL | O_BINARY) + +#define DEFAULT_TMPDIR "." /* bogus default, should be changed */ +#define DEFAULT_NAMEROOT "shtmp" + +/* Use ANSI-C rand() interface if random(3) is not available */ +#if !HAVE_RANDOM +#define random() rand() +#endif + +extern pid_t dollar_dollar_pid; + +static char *get_sys_tmpdir PARAMS((void)); +static char *get_tmpdir PARAMS((int)); + +static char *sys_tmpdir = (char *)NULL; +static int ntmpfiles; +static int tmpnamelen = -1; +static unsigned long filenum = 1L; + +static char * +get_sys_tmpdir () +{ + if (sys_tmpdir) + return sys_tmpdir; + +#ifdef P_tmpdir + sys_tmpdir = P_tmpdir; + if (file_iswdir (sys_tmpdir)) + return sys_tmpdir; +#endif + + sys_tmpdir = "/tmp"; + if (file_iswdir (sys_tmpdir)) + return sys_tmpdir; + + sys_tmpdir = "/var/tmp"; + if (file_iswdir (sys_tmpdir)) + return sys_tmpdir; + + sys_tmpdir = "/usr/tmp"; + if (file_iswdir (sys_tmpdir)) + return sys_tmpdir; + + sys_tmpdir = DEFAULT_TMPDIR; + + return sys_tmpdir; +} + +static char * +get_tmpdir (flags) + int flags; +{ + char *tdir; + + tdir = (flags & MT_USETMPDIR) ? get_string_value ("TMPDIR") : (char *)NULL; + if (tdir && (file_iswdir (tdir) == 0 || strlen (tdir) > PATH_MAX)) + tdir = 0; + + if (tdir == 0) + tdir = get_sys_tmpdir (); + +#if defined (HAVE_PATHCONF) && defined (_PC_NAME_MAX) + if (tmpnamelen == -1) + tmpnamelen = pathconf (tdir, _PC_NAME_MAX); +#else + tmpnamelen = 0; +#endif + + return tdir; +} + +static void +sh_seedrand () +{ +#if HAVE_RANDOM + int d; + static int seeded = 0; + if (seeded == 0) + { + struct timeval tv; + + gettimeofday (&tv, NULL); + srandom (tv.tv_sec ^ tv.tv_usec ^ (getpid () << 16) ^ (uintptr_t)&d); + seeded = 1; + } +#endif +} + +char * +sh_mktmpname (nameroot, flags) + char *nameroot; + int flags; +{ + char *filename, *tdir, *lroot; + struct stat sb; + int r, tdlen; + static int seeded = 0; + + filename = (char *)xmalloc (PATH_MAX + 1); + tdir = get_tmpdir (flags); + tdlen = strlen (tdir); + + lroot = nameroot ? nameroot : DEFAULT_NAMEROOT; + if (nameroot == 0) + flags &= ~MT_TEMPLATE; + + if ((flags & MT_TEMPLATE) && strlen (nameroot) > PATH_MAX) + flags &= ~MT_TEMPLATE; + +#ifdef USE_MKTEMP + if (flags & MT_TEMPLATE) + strcpy (filename, nameroot); + else + sprintf (filename, "%s/%s.XXXXXX", tdir, lroot); + if (mktemp (filename) == 0) + { + free (filename); + filename = NULL; + } +#else /* !USE_MKTEMP */ + sh_seedrand (); + while (1) + { + filenum = (filenum << 1) ^ + (unsigned long) time ((time_t *)0) ^ + (unsigned long) dollar_dollar_pid ^ + (unsigned long) ((flags & MT_USERANDOM) ? random () : ntmpfiles++); + sprintf (filename, "%s/%s-%lu", tdir, lroot, filenum); + if (tmpnamelen > 0 && tmpnamelen < 32) + filename[tdlen + 1 + tmpnamelen] = '\0'; +# ifdef HAVE_LSTAT + r = lstat (filename, &sb); +# else + r = stat (filename, &sb); +# endif + if (r < 0 && errno == ENOENT) + break; + } +#endif /* !USE_MKTEMP */ + + return filename; +} + +int +sh_mktmpfd (nameroot, flags, namep) + char *nameroot; + int flags; + char **namep; +{ + char *filename, *tdir, *lroot; + int fd, tdlen; + + filename = (char *)xmalloc (PATH_MAX + 1); + tdir = get_tmpdir (flags); + tdlen = strlen (tdir); + + lroot = nameroot ? nameroot : DEFAULT_NAMEROOT; + if (nameroot == 0) + flags &= ~MT_TEMPLATE; + + if ((flags & MT_TEMPLATE) && strlen (nameroot) > PATH_MAX) + flags &= ~MT_TEMPLATE; + +#ifdef USE_MKSTEMP + if (flags & MT_TEMPLATE) + strcpy (filename, nameroot); + else + sprintf (filename, "%s/%s.XXXXXX", tdir, lroot); + fd = mkstemp (filename); + if (fd < 0 || namep == 0) + { + free (filename); + filename = NULL; + } + if (namep) + *namep = filename; + return fd; +#else /* !USE_MKSTEMP */ + sh_seedrand (); + do + { + filenum = (filenum << 1) ^ + (unsigned long) time ((time_t *)0) ^ + (unsigned long) dollar_dollar_pid ^ + (unsigned long) ((flags & MT_USERANDOM) ? random () : ntmpfiles++); + sprintf (filename, "%s/%s-%lu", tdir, lroot, filenum); + if (tmpnamelen > 0 && tmpnamelen < 32) + filename[tdlen + 1 + tmpnamelen] = '\0'; + fd = open (filename, BASEOPENFLAGS | ((flags & MT_READWRITE) ? O_RDWR : O_WRONLY), 0600); + } + while (fd < 0 && errno == EEXIST); + + if (namep) + *namep = filename; + else + free (filename); + + return fd; +#endif /* !USE_MKSTEMP */ +} + +FILE * +sh_mktmpfp (nameroot, flags, namep) + char *nameroot; + int flags; + char **namep; +{ + int fd; + FILE *fp; + + fd = sh_mktmpfd (nameroot, flags, namep); + if (fd < 0) + return ((FILE *)NULL); + fp = fdopen (fd, (flags & MT_READWRITE) ? "w+" : "w"); + if (fp == 0) + close (fd); + return fp; +} + +char * +sh_mktmpdir (nameroot, flags) + char *nameroot; + int flags; +{ + char *filename, *tdir, *lroot, *dirname; + int fd, tdlen; + +#ifdef USE_MKDTEMP + filename = (char *)xmalloc (PATH_MAX + 1); + tdir = get_tmpdir (flags); + tdlen = strlen (tdir); + + lroot = nameroot ? nameroot : DEFAULT_NAMEROOT; + if (nameroot == 0) + flags &= ~MT_TEMPLATE; + + if ((flags & MT_TEMPLATE) && strlen (nameroot) > PATH_MAX) + flags &= ~MT_TEMPLATE; + + if (flags & MT_TEMPLATE) + strcpy (filename, nameroot); + else + sprintf (filename, "%s/%s.XXXXXX", tdir, lroot); + dirname = mkdtemp (filename); + if (dirname == 0) + { + free (filename); + filename = NULL; + } + return dirname; +#else /* !USE_MKDTEMP */ + filename = (char *)NULL; + do + { + filename = sh_mktmpname (nameroot, flags); + fd = mkdir (filename, 0700); + if (fd == 0) + break; + free (filename); + filename = (char *)NULL; + } + while (fd < 0 && errno == EEXIST); + + return (filename); +#endif /* !USE_MKDTEMP */ +} diff --git a/bash-5.1/lib/sh/uconvert.c b/bash-5.1/lib/sh/uconvert.c new file mode 100644 index 0000000..457552e --- /dev/null +++ b/bash-5.1/lib/sh/uconvert.c @@ -0,0 +1,124 @@ +/* uconvert - convert string representations of decimal numbers into whole + number/fractional value pairs. */ + +/* Copyright (C) 2008,2009,2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" + +#include "posixtime.h" + +#if defined (HAVE_UNISTD_H) +#include +#endif + +#include +#include "chartypes.h" + +#include "shell.h" +#include "builtins.h" + +#define DECIMAL '.' /* XXX - should use locale */ + +#define RETURN(x) \ +do { \ + if (ip) *ip = ipart * mult; \ + if (up) *up = upart; \ + if (ep) *ep = p; \ + return (x); \ +} while (0) + +/* + * An incredibly simplistic floating point converter. + */ +static int multiplier[7] = { 1, 100000, 10000, 1000, 100, 10, 1 }; + +/* Take a decimal number int-part[.[micro-part]] and convert it to the whole + and fractional portions. The fractional portion is returned in + millionths (micro); callers are responsible for multiplying appropriately. + EP, if non-null, gets the address of the character where conversion stops. + Return 1 if value converted; 0 if invalid integer for either whole or + fractional parts. */ +int +uconvert(s, ip, up, ep) + char *s; + long *ip, *up; + char **ep; +{ + int n, mult; + long ipart, upart; + char *p; + + ipart = upart = 0; + mult = 1; + + if (s && (*s == '-' || *s == '+')) + { + mult = (*s == '-') ? -1 : 1; + p = s + 1; + } + else + p = s; + + for ( ; p && *p; p++) + { + if (*p == DECIMAL) /* decimal point */ + break; + if (DIGIT(*p) == 0) + RETURN(0); + ipart = (ipart * 10) + (*p - '0'); + } + + if (p == 0 || *p == 0) /* callers ensure p can never be 0; this is to shut up clang */ + RETURN(1); + + if (*p == DECIMAL) + p++; + + /* Look for up to six digits past a decimal point. */ + for (n = 0; n < 6 && p[n]; n++) + { + if (DIGIT(p[n]) == 0) + { + if (ep) + { + upart *= multiplier[n]; + p += n; /* To set EP */ + } + RETURN(0); + } + upart = (upart * 10) + (p[n] - '0'); + } + + /* Now convert to millionths */ + upart *= multiplier[n]; + + if (n == 6 && p[6] >= '5' && p[6] <= '9') + upart++; /* round up 1 */ + + if (ep) + { + p += n; + while (DIGIT(*p)) + p++; + } + + RETURN(1); +} diff --git a/bash-5.1/lib/sh/ufuncs.c b/bash-5.1/lib/sh/ufuncs.c new file mode 100644 index 0000000..4dc4853 --- /dev/null +++ b/bash-5.1/lib/sh/ufuncs.c @@ -0,0 +1,140 @@ +/* ufuncs - sleep and alarm functions that understand fractional values */ + +/* Copyright (C) 2008,2009-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" + +#include "posixtime.h" + +#if defined (HAVE_UNISTD_H) +#include +#endif + +#include +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +#if defined (HAVE_SELECT) +# include "posixselect.h" +# include "quit.h" +# include "trap.h" +# include "stat-time.h" +#endif + +/* A version of `alarm' using setitimer if it's available. */ + +#if defined (HAVE_SETITIMER) +unsigned int +falarm(secs, usecs) + unsigned int secs, usecs; +{ + struct itimerval it, oit; + + it.it_interval.tv_sec = 0; + it.it_interval.tv_usec = 0; + + it.it_value.tv_sec = secs; + it.it_value.tv_usec = usecs; + + if (setitimer(ITIMER_REAL, &it, &oit) < 0) + return (-1); /* XXX will be converted to unsigned */ + + /* Backwards compatibility with alarm(3) */ + if (oit.it_value.tv_usec) + oit.it_value.tv_sec++; + return (oit.it_value.tv_sec); +} +#else +int +falarm (secs, usecs) + unsigned int secs, usecs; +{ + if (secs == 0 && usecs == 0) + return (alarm (0)); + + if (secs == 0 || usecs >= 500000) + { + secs++; + usecs = 0; + } + return (alarm (secs)); +} +#endif /* !HAVE_SETITIMER */ + +/* A version of sleep using fractional seconds and select. I'd like to use + `usleep', but it's already taken */ + +#if defined (HAVE_TIMEVAL) && (defined (HAVE_SELECT) || defined (HAVE_PSELECT)) +int +fsleep(sec, usec) + unsigned int sec, usec; +{ + int e, r; + sigset_t blocked_sigs, prevmask; +#if defined (HAVE_PSELECT) + struct timespec ts; +#else + struct timeval tv; +#endif + + sigemptyset (&blocked_sigs); +# if defined (SIGCHLD) + sigaddset (&blocked_sigs, SIGCHLD); +# endif + +#if defined (HAVE_PSELECT) + ts.tv_sec = sec; + ts.tv_nsec = usec * 1000; +#else + sigemptyset (&prevmask); + tv.tv_sec = sec; + tv.tv_usec = usec; +#endif /* !HAVE_PSELECT */ + + do + { +#if defined (HAVE_PSELECT) + r = pselect(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &ts, &blocked_sigs); +#else + sigprocmask (SIG_SETMASK, &blocked_sigs, &prevmask); + r = select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &tv); + sigprocmask (SIG_SETMASK, &prevmask, NULL); +#endif + e = errno; + if (r < 0 && errno == EINTR) + return -1; /* caller will handle */ + errno = e; + } + while (r < 0 && errno == EINTR); + + return r; +} +#else /* !HAVE_TIMEVAL || !HAVE_SELECT */ +int +fsleep(sec, usec) + long sec, usec; +{ + if (usec >= 500000) /* round */ + sec++; + return (sleep(sec)); +} +#endif /* !HAVE_TIMEVAL || !HAVE_SELECT */ diff --git a/bash-5.1/lib/sh/unicode.c b/bash-5.1/lib/sh/unicode.c new file mode 100644 index 0000000..d95d1e2 --- /dev/null +++ b/bash-5.1/lib/sh/unicode.c @@ -0,0 +1,339 @@ +/* unicode.c - functions to convert unicode characters */ + +/* Copyright (C) 2010-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HANDLE_MULTIBYTE) + +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include + +#if HAVE_ICONV +# include +#endif + +#include + +#ifndef USHORT_MAX +# ifdef USHRT_MAX +# define USHORT_MAX USHRT_MAX +# else +# define USHORT_MAX ((unsigned short) ~(unsigned short)0) +# endif +#endif + +#if !defined (STREQ) +# define STREQ(a, b) ((a)[0] == (b)[0] && strcmp ((a), (b)) == 0) +#endif /* !STREQ */ + +#if defined (HAVE_LOCALE_CHARSET) +extern const char *locale_charset PARAMS((void)); +#else +extern char *get_locale_var PARAMS((char *)); +#endif + +extern int locale_utf8locale; + +static int u32init = 0; +static int utf8locale = 0; +#if defined (HAVE_ICONV) +static iconv_t localconv; +#endif + +#ifndef HAVE_LOCALE_CHARSET +static char charsetbuf[40]; + +static char * +stub_charset () +{ + char *locale, *s, *t; + + locale = get_locale_var ("LC_CTYPE"); + if (locale == 0 || *locale == 0) + { + strcpy (charsetbuf, "ASCII"); + return charsetbuf; + } + s = strrchr (locale, '.'); + if (s) + { + strncpy (charsetbuf, s+1, sizeof (charsetbuf) - 1); + charsetbuf[sizeof (charsetbuf) - 1] = '\0'; + t = strchr (charsetbuf, '@'); + if (t) + *t = 0; + return charsetbuf; + } + strncpy (charsetbuf, locale, sizeof (charsetbuf) - 1); + charsetbuf[sizeof (charsetbuf) - 1] = '\0'; + return charsetbuf; +} +#endif + +void +u32reset () +{ +#if defined (HAVE_ICONV) + if (u32init && localconv != (iconv_t)-1) + { + iconv_close (localconv); + localconv = (iconv_t)-1; + } +#endif + u32init = 0; + utf8locale = 0; +} + +/* u32toascii ? */ +int +u32tochar (x, s) + unsigned long x; + char *s; +{ + int l; + + l = (x <= UCHAR_MAX) ? 1 : ((x <= USHORT_MAX) ? 2 : 4); + + if (x <= UCHAR_MAX) + s[0] = x & 0xFF; + else if (x <= USHORT_MAX) /* assume unsigned short = 16 bits */ + { + s[0] = (x >> 8) & 0xFF; + s[1] = x & 0xFF; + } + else + { + s[0] = (x >> 24) & 0xFF; + s[1] = (x >> 16) & 0xFF; + s[2] = (x >> 8) & 0xFF; + s[3] = x & 0xFF; + } + s[l] = '\0'; + return l; +} + +int +u32tocesc (wc, s) + u_bits32_t wc; + char *s; +{ + int l; + + if (wc < 0x10000) + l = sprintf (s, "\\u%04X", wc); + else + l = sprintf (s, "\\u%08X", wc); + return l; +} + +/* Convert unsigned 32-bit int to utf-8 character string */ +int +u32toutf8 (wc, s) + u_bits32_t wc; + char *s; +{ + int l; + + if (wc < 0x0080) + { + s[0] = (char)wc; + l = 1; + } + else if (wc < 0x0800) + { + s[0] = (wc >> 6) | 0xc0; + s[1] = (wc & 0x3f) | 0x80; + l = 2; + } + else if (wc < 0x10000) + { + /* Technically, we could return 0 here if 0xd800 <= wc <= 0x0dfff */ + s[0] = (wc >> 12) | 0xe0; + s[1] = ((wc >> 6) & 0x3f) | 0x80; + s[2] = (wc & 0x3f) | 0x80; + l = 3; + } + else if (wc < 0x200000) + { + s[0] = (wc >> 18) | 0xf0; + s[1] = ((wc >> 12) & 0x3f) | 0x80; + s[2] = ((wc >> 6) & 0x3f) | 0x80; + s[3] = (wc & 0x3f) | 0x80; + l = 4; + } + /* Strictly speaking, UTF-8 doesn't have characters longer than 4 bytes */ + else if (wc < 0x04000000) + { + s[0] = (wc >> 24) | 0xf8; + s[1] = ((wc >> 18) & 0x3f) | 0x80; + s[2] = ((wc >> 12) & 0x3f) | 0x80; + s[3] = ((wc >> 6) & 0x3f) | 0x80; + s[4] = (wc & 0x3f) | 0x80; + l = 5; + } + else if (wc < 0x080000000) + { + s[0] = (wc >> 30) | 0xfc; + s[1] = ((wc >> 24) & 0x3f) | 0x80; + s[2] = ((wc >> 18) & 0x3f) | 0x80; + s[3] = ((wc >> 12) & 0x3f) | 0x80; + s[4] = ((wc >> 6) & 0x3f) | 0x80; + s[5] = (wc & 0x3f) | 0x80; + l = 6; + } + else + l = 0; + + s[l] = '\0'; + return l; +} + +/* Convert a 32-bit unsigned int (unicode) to a UTF-16 string. Rarely used, + only if sizeof(wchar_t) == 2. */ +int +u32toutf16 (c, s) + u_bits32_t c; + wchar_t *s; +{ + int l; + + l = 0; + if (c < 0x0d800 || (c >= 0x0e000 && c <= 0x0ffff)) + { + s[0] = (wchar_t) (c & 0xFFFF); + l = 1; + } + else if (c >= 0x10000 && c <= 0x010ffff) + { + c -= 0x010000; + s[0] = (wchar_t)((c >> 10) + 0xd800); + s[1] = (wchar_t)((c & 0x3ff) + 0xdc00); + l = 2; + } + s[l] = 0; + return l; +} + +/* convert a single unicode-32 character into a multibyte string and put the + result in S, which must be large enough (at least max(10,MB_LEN_MAX) bytes) */ +int +u32cconv (c, s) + unsigned long c; + char *s; +{ + wchar_t wc; + wchar_t ws[3]; + int n; +#if HAVE_ICONV + const char *charset; + char obuf[25], *optr; + size_t obytesleft; + const char *iptr; + size_t sn; +#endif + +#if __STDC_ISO_10646__ + wc = c; + if (sizeof (wchar_t) == 4 && c <= 0x7fffffff) + n = wctomb (s, wc); + else if (sizeof (wchar_t) == 2 && c <= 0x10ffff && u32toutf16 (c, ws)) + n = wcstombs (s, ws, MB_LEN_MAX); + else + n = -1; + if (n != -1) + return n; +#endif + +#if HAVE_ICONV + /* this is mostly from coreutils-8.5/lib/unicodeio.c */ + if (u32init == 0) + { + utf8locale = locale_utf8locale; + localconv = (iconv_t)-1; + if (utf8locale == 0) + { +#if HAVE_LOCALE_CHARSET + charset = locale_charset (); +#elif HAVE_NL_LANGINFO + charset = nl_langinfo (CODESET); +#else + charset = stub_charset (); +#endif + localconv = iconv_open (charset, "UTF-8"); + if (localconv == (iconv_t)-1) + /* We assume ASCII when presented with an unknown encoding. */ + localconv = iconv_open ("ASCII", "UTF-8"); + } + u32init = 1; + } + + /* NL_LANGINFO and locale_charset used when setting locale_utf8locale */ + + /* If we have a UTF-8 locale, convert to UTF-8 and return converted value. */ + n = u32toutf8 (c, s); + if (utf8locale) + return n; + + /* If the conversion is not supported, even the ASCII requested above, we + bail now. Currently we return the UTF-8 conversion. We could return + u32tocesc(). */ + if (localconv == (iconv_t)-1) + return n; + + optr = obuf; + obytesleft = sizeof (obuf); + iptr = s; + sn = n; + + iconv (localconv, NULL, NULL, NULL, NULL); + + if (iconv (localconv, (ICONV_CONST char **)&iptr, &sn, &optr, &obytesleft) == (size_t)-1) + { + /* You get ISO C99 escape sequences if iconv fails */ + n = u32tocesc (c, s); + return n; + } + + *optr = '\0'; + + /* number of chars to be copied is optr - obuf if we want to do bounds + checking */ + strcpy (s, obuf); + return (optr - obuf); +#endif /* HAVE_ICONV */ + + if (locale_utf8locale) + n = u32toutf8 (c, s); + else + n = u32tocesc (c, s); /* fallback is ISO C99 escape sequences */ + return n; +} +#else +void +u32reset () +{ +} +#endif /* HANDLE_MULTIBYTE */ diff --git a/bash-5.1/lib/sh/utf8.c b/bash-5.1/lib/sh/utf8.c new file mode 100644 index 0000000..fed2522 --- /dev/null +++ b/bash-5.1/lib/sh/utf8.c @@ -0,0 +1,196 @@ +/* utf8.c - UTF-8 character handling functions */ + +/* Copyright (C) 2018 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#ifdef HAVE_STDLIB_H +# include +#endif + +#include "bashansi.h" +#include "shmbutil.h" + +extern int locale_mb_cur_max; +extern int locale_utf8locale; + +#if defined (HANDLE_MULTIBYTE) + +char * +utf8_mbschr (s, c) + const char *s; + int c; +{ + return strchr (s, c); /* for now */ +} + +int +utf8_mbscmp (s1, s2) + const char *s1, *s2; +{ + /* Use the fact that the UTF-8 encoding preserves lexicographic order. */ + return strcmp (s1, s2); +} + +char * +utf8_mbsmbchar (str) + const char *str; +{ + register char *s; + + for (s = (char *)str; *s; s++) + if ((*s & 0xc0) == 0x80) + return s; + return (0); +} + +int +utf8_mbsnlen(src, srclen, maxlen) + const char *src; + size_t srclen; + int maxlen; +{ + register int sind, count; + + for (sind = count = 0; src[sind] && sind <= maxlen; sind++) + { + if ((src[sind] & 0xc0) != 0x80) + count++; + } + return (count); +} + +/* Adapted from GNU gnulib. Handles UTF-8 characters up to 4 bytes long */ +int +utf8_mblen (s, n) + const char *s; + size_t n; +{ + unsigned char c, c1, c2, c3; + + if (s == 0) + return (0); /* no shift states */ + if (n <= 0) + return (-1); + + c = (unsigned char)*s; + if (c < 0x80) + return (c != 0); + if (c >= 0xc2) + { + c1 = (unsigned char)s[1]; + if (c < 0xe0) + { + if (n == 1) + return -2; + + /* + * c c1 + * + * U+0080..U+07FF C2..DF 80..BF + */ + + if (n >= 2 && (c1 ^ 0x80) < 0x40) /* 0x80..0xbf */ + return 2; + } + else if (c < 0xf0) + { + if (n == 1) + return -2; + + /* + * c c1 c2 + * + * U+0800..U+0FFF E0 A0..BF 80..BF + * U+1000..U+CFFF E1..EC 80..BF 80..BF + * U+D000..U+D7FF ED 80..9F 80..BF + * U+E000..U+FFFF EE..EF 80..BF 80..BF + */ + + if ((c1 ^ 0x80) < 0x40 + && (c >= 0xe1 || c1 >= 0xa0) + && (c != 0xed || c1 < 0xa0)) + { + if (n == 2) + return -2; /* incomplete */ + + c2 = (unsigned char)s[2]; + if ((c2 ^ 0x80) < 0x40) + return 3; + } + } + else if (c <= 0xf4) + { + if (n == 1) + return -2; + + /* + * c c1 c2 c3 + * + * U+10000..U+3FFFF F0 90..BF 80..BF 80..BF + * U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + * U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + */ + if (((c1 ^ 0x80) < 0x40) + && (c >= 0xf1 || c1 >= 0x90) + && (c < 0xf4 || (c == 0xf4 && c1 < 0x90))) + { + if (n == 2) + return -2; /* incomplete */ + + c2 = (unsigned char)s[2]; + if ((c2 ^ 0x80) < 0x40) + { + if (n == 3) + return -2; + + c3 = (unsigned char)s[3]; + if ((c3 ^ 0x80) < 0x40) + return 4; + } + } + } + } + /* invalid or incomplete multibyte character */ + return -1; +} + +/* We can optimize this if we know the locale is UTF-8, but needs to handle + malformed byte sequences. */ +size_t +utf8_mbstrlen(s) + const char *s; +{ + size_t clen, nc; + int mb_cur_max; + + nc = 0; + mb_cur_max = MB_CUR_MAX; + while (*s && (clen = (size_t)utf8_mblen(s, mb_cur_max)) != 0) + { + if (MB_INVALIDCH(clen)) + clen = 1; /* assume single byte */ + + s += clen; + nc++; + } + return nc; +} + +#endif diff --git a/bash-5.1/lib/sh/vprint.c b/bash-5.1/lib/sh/vprint.c new file mode 100644 index 0000000..567fba3 --- /dev/null +++ b/bash-5.1/lib/sh/vprint.c @@ -0,0 +1,85 @@ +/* vprint.c -- v[fs]printf() for 4.[23] BSD systems. */ + +/* 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 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 . +*/ + +#include + +#if defined (USE_VFPRINTF_EMULATION) + +#include + +#if !defined (NULL) +# if defined (__STDC__) +# define NULL ((void *)0) +# else +# define NULL 0x0 +# endif /* __STDC__ */ +#endif /* !NULL */ + +/* + * 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 *. + */ +#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 /* USE_VFPRINTF_EMULATION */ diff --git a/bash-5.1/lib/sh/wcsdup.c b/bash-5.1/lib/sh/wcsdup.c new file mode 100644 index 0000000..62a3c86 --- /dev/null +++ b/bash-5.1/lib/sh/wcsdup.c @@ -0,0 +1,44 @@ +/* wcsdup.c - duplicate wide character string */ + +/* Copyright (C) 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 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 . +*/ + +#include + +#if !defined (HAVE_WCSDUP) && defined (HANDLE_MULTIBYTE) + +#include +#include +#include +#include + +wchar_t * +wcsdup (ws) + const wchar_t *ws; +{ + wchar_t *ret; + size_t len; + + len = wcslen (ws); + ret = xmalloc ((len + 1) * sizeof (wchar_t)); + if (ret == 0) + return ret; + + return (wcscpy (ret, ws)); +} +#endif /* !HAVE_WCSDUP && HANDLE_MULTIBYTE */ diff --git a/bash-5.1/lib/sh/wcsnwidth.c b/bash-5.1/lib/sh/wcsnwidth.c new file mode 100644 index 0000000..9c7e7cc --- /dev/null +++ b/bash-5.1/lib/sh/wcsnwidth.c @@ -0,0 +1,56 @@ +/* wcsnwidth.c - compute display width of wide character string, up to max + specified width, return length. */ + +/* Copyright (C) 2012 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HANDLE_MULTIBYTE) + +#include +#include +#include + +/* Return the number of wide characters that will be displayed from wide string + PWCS. If the display width exceeds MAX, return the number of wide chars + from PWCS required to display MAX characters on the screen. */ +int +wcsnwidth(pwcs, n, max) + const wchar_t *pwcs; + size_t n, max; +{ + wchar_t wc, *ws; + int len, l; + + len = 0; + ws = (wchar_t *)pwcs; + while (n-- > 0 && (wc = *ws++) != L'\0') + { + l = wcwidth (wc); + if (l < 0) + return (-1); + else if (l == max - len) + return (ws - pwcs); + else if (l > max - len) + return (--ws - pwcs); + len += l; + } + return (ws - pwcs); +} +#endif diff --git a/bash-5.1/lib/sh/wcswidth.c b/bash-5.1/lib/sh/wcswidth.c new file mode 100644 index 0000000..1a30d9f --- /dev/null +++ b/bash-5.1/lib/sh/wcswidth.c @@ -0,0 +1,46 @@ +/* wcswidth.c - compute display width of wide character string */ + +/* Copyright (C) 2010 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HANDLE_MULTIBYTE) && !defined (HAVE_WCSWIDTH) + +#include +#include +#include + +int +wcswidth(pwcs, n) + const wchar_t *pwcs; + size_t n; +{ + wchar_t wc; + int len, l; + + len = 0; + while (n-- > 0 && (wc = *pwcs++) != L'\0') + { + if ((l = wcwidth(wc)) < 0) + return (-1); + len += l; + } + return (len); +} +#endif diff --git a/bash-5.1/lib/sh/winsize.c b/bash-5.1/lib/sh/winsize.c new file mode 100644 index 0000000..861c7c8 --- /dev/null +++ b/bash-5.1/lib/sh/winsize.c @@ -0,0 +1,98 @@ +/* winsize.c - handle window size changes and information. */ + +/* Copyright (C) 2005-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include + +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +/* Try to find the definitions of `struct winsize' and TIOGCWINSZ */ + +#if 0 +#if defined (GWINSZ_IN_SYS_IOCTL) && !defined (TIOCGWINSZ) +# include +#endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */ +#endif + +#if defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) +# include +#endif /* STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */ + +/* Not in either of the standard places, look around. */ +#if !defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) +# if defined (HAVE_SYS_STREAM_H) +# include +# endif /* HAVE_SYS_STREAM_H */ +# if defined (HAVE_SYS_PTEM_H) /* SVR4.2, at least, has it here */ +# include +# define _IO_PTEM_H /* work around SVR4.2 1.1.4 bug */ +# endif /* HAVE_SYS_PTEM_H */ +# if defined (HAVE_SYS_PTE_H) /* ??? */ +# include +# endif /* HAVE_SYS_PTE_H */ +#endif /* !STRUCT_WINSIZE_IN_TERMIOS && !STRUCT_WINSIZE_IN_SYS_IOCTL */ + +#include + +/* Return the fd from which we are actually getting input. */ +#define input_tty() (shell_tty != -1) ? shell_tty : fileno (stderr) + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +extern int shell_tty; + +#if defined (READLINE) +extern void rl_set_screen_size PARAMS((int, int)); +#endif +extern void sh_set_lines_and_columns PARAMS((int, int)); + +void +get_new_window_size (from_sig, rp, cp) + int from_sig; + int *rp, *cp; +{ +#if defined (TIOCGWINSZ) + struct winsize win; + int tty; + + tty = input_tty (); + if (tty >= 0 && (ioctl (tty, TIOCGWINSZ, &win) == 0) && + win.ws_row > 0 && win.ws_col > 0) + { + sh_set_lines_and_columns (win.ws_row, win.ws_col); +#if defined (READLINE) + rl_set_screen_size (win.ws_row, win.ws_col); + if (rp) + *rp = win.ws_row; + if (cp) + *cp = win.ws_col; +#endif + } +#endif +} diff --git a/bash-5.1/lib/sh/zcatfd.c b/bash-5.1/lib/sh/zcatfd.c new file mode 100644 index 0000000..aa8199f --- /dev/null +++ b/bash-5.1/lib/sh/zcatfd.c @@ -0,0 +1,74 @@ +/* zcatfd - copy contents of file descriptor to another */ + +/* Copyright (C) 2002-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#include + +#if !defined (errno) +extern int errno; +#endif + +#ifndef ZBUFSIZ +# define ZBUFSIZ 4096 +#endif + +extern ssize_t zread PARAMS((int, char *, size_t)); +extern int zwrite PARAMS((int, char *, ssize_t)); + +/* Dump contents of file descriptor FD to OFD. FN is the filename for + error messages (not used right now). */ +int +zcatfd (fd, ofd, fn) + int fd, ofd; + char *fn; +{ + ssize_t nr; + int rval; + char lbuf[ZBUFSIZ]; + + rval = 0; + while (1) + { + nr = zread (fd, lbuf, sizeof (lbuf)); + if (nr == 0) + break; + else if (nr < 0) + { + rval = -1; + break; + } + else if (zwrite (ofd, lbuf, nr) < 0) + { + rval = -1; + break; + } + } + + return rval; +} diff --git a/bash-5.1/lib/sh/zgetline.c b/bash-5.1/lib/sh/zgetline.c new file mode 100644 index 0000000..8ded144 --- /dev/null +++ b/bash-5.1/lib/sh/zgetline.c @@ -0,0 +1,125 @@ +/* zgetline - read a line of input from a specified file descriptor and return + a pointer to a newly-allocated buffer containing the data. */ + +/* Copyright (C) 2008-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include "xmalloc.h" + +#if !defined (errno) +extern int errno; +#endif + +extern ssize_t zread PARAMS((int, char *, size_t)); +extern ssize_t zreadc PARAMS((int, char *)); +extern ssize_t zreadintr PARAMS((int, char *, size_t)); +extern ssize_t zreadcintr PARAMS((int, char *)); + +typedef ssize_t breadfunc_t PARAMS((int, char *, size_t)); +typedef ssize_t creadfunc_t PARAMS((int, char *)); + +/* Initial memory allocation for automatic growing buffer in zreadlinec */ +#define GET_LINE_INITIAL_ALLOCATION 16 + +/* Derived from GNU libc's getline. + The behavior is almost the same as getline. See man getline. + The differences are + (1) using file descriptor instead of FILE *; + (2) the order of arguments: the file descriptor comes first; + (3) the addition of a fourth argument, DELIM; sets the delimiter to + be something other than newline if desired. If setting DELIM, + the next argument should be 1; and + (4) the addition of a fifth argument, UNBUFFERED_READ; this argument + controls whether get_line uses buffering or not to get a byte data + from FD. get_line uses zreadc if UNBUFFERED_READ is zero; and + uses zread if UNBUFFERED_READ is non-zero. + + Returns number of bytes read or -1 on error. */ + +ssize_t +zgetline (fd, lineptr, n, delim, unbuffered_read) + int fd; + char **lineptr; + size_t *n; + int delim; + int unbuffered_read; +{ + int nr, retval; + char *line, c; + + if (lineptr == 0 || n == 0 || (*lineptr == 0 && *n != 0)) + return -1; + + nr = 0; + line = *lineptr; + + while (1) + { + retval = unbuffered_read ? zread (fd, &c, 1) : zreadc(fd, &c); + + if (retval <= 0) + { + if (line && nr > 0) + line[nr] = '\0'; + break; + } + + if (nr + 2 >= *n) + { + size_t new_size; + + new_size = (*n == 0) ? GET_LINE_INITIAL_ALLOCATION : *n * 2; + line = (*n >= new_size) ? NULL : xrealloc (*lineptr, new_size); + + if (line) + { + *lineptr = line; + *n = new_size; + } + else + { + if (*n > 0) + { + (*lineptr)[*n - 1] = '\0'; + nr = *n - 2; + } + break; + } + } + + line[nr] = c; + nr++; + + if (c == delim) + { + line[nr] = '\0'; + break; + } + } + + return nr - 1; +} diff --git a/bash-5.1/lib/sh/zmapfd.c b/bash-5.1/lib/sh/zmapfd.c new file mode 100644 index 0000000..f9e9ed7 --- /dev/null +++ b/bash-5.1/lib/sh/zmapfd.c @@ -0,0 +1,93 @@ +/* zmapfd - read contents of file descriptor into a newly-allocated buffer */ + +/* Copyright (C) 2006-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#include "bashansi.h" +#include "command.h" +#include "general.h" + +#if !defined (errno) +extern int errno; +#endif + +#ifndef ZBUFSIZ +# define ZBUFSIZ 4096 +#endif + +extern ssize_t zread PARAMS((int, char *, size_t)); + +/* Dump contents of file descriptor FD to *OSTR. FN is the filename for + error messages (not used right now). */ +int +zmapfd (fd, ostr, fn) + int fd; + char **ostr; + char *fn; +{ + ssize_t nr; + int rval; + char lbuf[ZBUFSIZ]; + char *result; + int rsize, rind; + + rval = 0; + result = (char *)xmalloc (rsize = ZBUFSIZ); + rind = 0; + + while (1) + { + nr = zread (fd, lbuf, sizeof (lbuf)); + if (nr == 0) + { + rval = rind; + break; + } + else if (nr < 0) + { + free (result); + if (ostr) + *ostr = (char *)NULL; + return -1; + } + + RESIZE_MALLOCED_BUFFER (result, rind, nr, rsize, ZBUFSIZ); + memcpy (result+rind, lbuf, nr); + rind += nr; + } + + RESIZE_MALLOCED_BUFFER (result, rind, 1, rsize, 128); + result[rind] = '\0'; + + if (ostr) + *ostr = result; + else + free (result); + + return rval; +} diff --git a/bash-5.1/lib/sh/zread.c b/bash-5.1/lib/sh/zread.c new file mode 100644 index 0000000..71a06a7 --- /dev/null +++ b/bash-5.1/lib/sh/zread.c @@ -0,0 +1,224 @@ +/* zread - read data from file descriptor into buffer with retries */ + +/* Copyright (C) 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include + +#if !defined (errno) +extern int errno; +#endif + +#ifndef SEEK_CUR +# define SEEK_CUR 1 +#endif + +#ifndef ZBUFSIZ +# define ZBUFSIZ 4096 +#endif + +extern int executing_builtin; + +extern void check_signals_and_traps (void); +extern void check_signals (void); +extern int signal_is_trapped (int); + +/* Read LEN bytes from FD into BUF. Retry the read on EINTR. Any other + error causes the loop to break. */ +ssize_t +zread (fd, buf, len) + int fd; + char *buf; + size_t len; +{ + ssize_t r; + + check_signals (); /* check for signals before a blocking read */ + while ((r = read (fd, buf, len)) < 0 && errno == EINTR) + { + int t; + t = errno; + /* XXX - bash-5.0 */ + /* We check executing_builtin and run traps here for backwards compatibility */ + if (executing_builtin) + check_signals_and_traps (); /* XXX - should it be check_signals()? */ + else + check_signals (); + errno = t; + } + + return r; +} + +/* Read LEN bytes from FD into BUF. Retry the read on EINTR, up to three + interrupts. Any other error causes the loop to break. */ + +#ifdef NUM_INTR +# undef NUM_INTR +#endif +#define NUM_INTR 3 + +ssize_t +zreadretry (fd, buf, len) + int fd; + char *buf; + size_t len; +{ + ssize_t r; + int nintr; + + for (nintr = 0; ; ) + { + r = read (fd, buf, len); + if (r >= 0) + return r; + if (r == -1 && errno == EINTR) + { + if (++nintr >= NUM_INTR) + return -1; + continue; + } + return r; + } +} + +/* Call read(2) and allow it to be interrupted. Just a stub for now. */ +ssize_t +zreadintr (fd, buf, len) + int fd; + char *buf; + size_t len; +{ + check_signals (); + return (read (fd, buf, len)); +} + +/* Read one character from FD and return it in CP. Return values are as + in read(2). This does some local buffering to avoid many one-character + calls to read(2), like those the `read' builtin performs. */ + +static char lbuf[ZBUFSIZ]; +static size_t lind, lused; + +ssize_t +zreadc (fd, cp) + int fd; + char *cp; +{ + ssize_t nr; + + if (lind == lused || lused == 0) + { + nr = zread (fd, lbuf, sizeof (lbuf)); + lind = 0; + if (nr <= 0) + { + lused = 0; + return nr; + } + lused = nr; + } + if (cp) + *cp = lbuf[lind++]; + return 1; +} + +/* Don't mix calls to zreadc and zreadcintr in the same function, since they + use the same local buffer. */ +ssize_t +zreadcintr (fd, cp) + int fd; + char *cp; +{ + ssize_t nr; + + if (lind == lused || lused == 0) + { + nr = zreadintr (fd, lbuf, sizeof (lbuf)); + lind = 0; + if (nr <= 0) + { + lused = 0; + return nr; + } + lused = nr; + } + if (cp) + *cp = lbuf[lind++]; + return 1; +} + +/* Like zreadc, but read a specified number of characters at a time. Used + for `read -N'. */ +ssize_t +zreadn (fd, cp, len) + int fd; + char *cp; + size_t len; +{ + ssize_t nr; + + if (lind == lused || lused == 0) + { + if (len > sizeof (lbuf)) + len = sizeof (lbuf); + nr = zread (fd, lbuf, len); + lind = 0; + if (nr <= 0) + { + lused = 0; + return nr; + } + lused = nr; + } + if (cp) + *cp = lbuf[lind++]; + return 1; +} + +void +zreset () +{ + lind = lused = 0; +} + +/* Sync the seek pointer for FD so that the kernel's idea of the last char + read is the last char returned by zreadc. */ +void +zsyncfd (fd) + int fd; +{ + off_t off, r; + + off = lused - lind; + r = 0; + if (off > 0) + r = lseek (fd, -off, SEEK_CUR); + + if (r != -1) + lused = lind = 0; +} diff --git a/bash-5.1/lib/sh/zwrite.c b/bash-5.1/lib/sh/zwrite.c new file mode 100644 index 0000000..3240f4f --- /dev/null +++ b/bash-5.1/lib/sh/zwrite.c @@ -0,0 +1,64 @@ +/* zwrite - write contents of buffer to file descriptor, retrying on error */ + +/* Copyright (C) 1999-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 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 . +*/ + +#include + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#if !defined (errno) +extern int errno; +#endif + +/* Write NB bytes from BUF to file descriptor FD, retrying the write if + it is interrupted. We retry three times if we get a zero-length + write. Any other signal causes this function to return prematurely. */ +int +zwrite (fd, buf, nb) + int fd; + char *buf; + size_t nb; +{ + int n, i, nt; + + for (n = nb, nt = 0;;) + { + i = write (fd, buf, n); + if (i > 0) + { + n -= i; + if (n <= 0) + return nb; + buf += i; + } + else if (i == 0) + { + if (++nt > 3) + return (nb - n); + } + else if (errno != EINTR) + return -1; + } +} diff --git a/bash-5.1/lib/termcap/Makefile.in b/bash-5.1/lib/termcap/Makefile.in new file mode 100644 index 0000000..66dd7c1 --- /dev/null +++ b/bash-5.1/lib/termcap/Makefile.in @@ -0,0 +1,90 @@ +## -*- text -*- #################################################### +# # +# Makefile for termcap replacement libbrary. # +# # +#################################################################### + +# Copyright (C) 1996-2009 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# 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 . + +srcdir = @srcdir@ +VPATH = @srcdir@ +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ + +libdir = @libdir@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ + +CC = @CC@ +RANLIB = @RANLIB@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +RM = rm -f +CP = cp +MV = mv + +SHELL = @MAKE_SHELL@ + +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ + +DEFS = @DEFS@ + +INCLUDES = -I. -I../.. -I$(topdir) -I$(topdir)/lib -I$(srcdir) + +CCFLAGS = $(CFLAGS) $(DEFS) $(CPPFLAGS) ${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 $(CCFLAGS) $< + +SOURCES = termcap.c tparam.c +OBJECTS = termcap.o tparam.o + +DOCUMENTATION = termcap.texinfo + +THINGS_TO_TAR = $(SOURCES) $(DOCUMENTATION) + +########################################################################## + +all: libtermcap.a + +libtermcap.a: $(OBJECTS) + $(RM) -f $@ + $(AR) $(ARFLAGS) $@ $(OBJECTS) + -test -n "$(RANLIB)" && $(RANLIB) $@ + +install: + +clean: + $(RM) *.o *.a *.log *.cp *.tp *.vr *.fn *.aux *.pg *.toc + +mostlyclean: clean + +distclean maintainer-clean: clean + $(RM) Makefile + +$(DESTDIR)$(libdir)/libtermcap.a: libtermcap.a + ${INSTALL_DATA} -c -m 644 libtermcap.a $@ + -test -n "$(RANLIB)" && $(RANLIB) -t $@ + +termcap.o: $(BUILD_DIR)/config.h +tparam.o: $(BUILD_DIR)/config.h +version.o: $(BUILD_DIR)/config.h diff --git a/bash-5.1/lib/termcap/ltcap.h b/bash-5.1/lib/termcap/ltcap.h new file mode 100644 index 0000000..a97f0d8 --- /dev/null +++ b/bash-5.1/lib/termcap/ltcap.h @@ -0,0 +1,30 @@ +/* ltcap.h - Local declarations for termcap library. */ + +/* Copyright (C) 1999-2009 Free Software Foundation, Inc. + + 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 . +*/ + +#ifndef _LTCAP_H_ +#define _LTCAP_H_ 1 + +#if !defined (__APPLE__) +# define __private_extern__ +#endif + +#ifndef MAX_TGETENT_BUFSIZ +# define MAX_TGETENT_BUFSIZ 2048 +#endif + +#endif /* _LTCAP_H_ */ diff --git a/bash-5.1/lib/termcap/termcap.c b/bash-5.1/lib/termcap/termcap.c new file mode 100644 index 0000000..ba3dab2 --- /dev/null +++ b/bash-5.1/lib/termcap/termcap.c @@ -0,0 +1,817 @@ +/* termcap.c - Work-alike for termcap, plus extra features. */ + +/* Copyright (C) 1985, 1986, 1993,1994, 1995, 1998, 2001,2003,2005,2006,2008,2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* Emacs config.h may rename various library functions such as malloc. */ +#ifdef HAVE_CONFIG_H + +#include + +/* Get the O_* definitions for open et al. */ +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif + +#include + +#ifdef HAVE_UNISTD_H +#include +#endif + +#ifdef HAVE_STDLIB_H +# include +#else +extern char *getenv (); +extern char *malloc (); +extern char *realloc (); +#endif + +#if defined (HAVE_STRING_H) +#include +#endif + +#if !defined (HAVE_BCOPY) && (defined (HAVE_STRING_H) || defined (STDC_HEADERS)) +# define bcopy(s, d, n) memcpy ((d), (s), (n)) +#endif + +#else /* not HAVE_CONFIG_H */ + +#ifdef STDC_HEADERS +#include +#include +#else +char *getenv (); +char *malloc (); +char *realloc (); +#endif + +/* Do this after the include, in case string.h prototypes bcopy. */ +#if (defined(HAVE_STRING_H) || defined(STDC_HEADERS)) && !defined(bcopy) +#define bcopy(s, d, n) memcpy ((d), (s), (n)) +#endif + +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef _POSIX_VERSION +#include +#endif + +#endif /* not HAVE_CONFIG_H */ + +#ifndef NULL +#define NULL (char *) 0 +#endif + +#ifndef O_RDONLY +#define O_RDONLY 0 +#endif + +/* BUFSIZE is the initial size allocated for the buffer + for reading the termcap file. + It is not a limit. + Make it large normally for speed. + Make it variable when debugging, so can exercise + increasing the space dynamically. */ + +#ifndef BUFSIZE +#ifdef DEBUG +#define BUFSIZE bufsize + +int bufsize = 128; +#else +#define BUFSIZE 2048 +#endif +#endif + +#include "ltcap.h" + +#ifndef TERMCAP_FILE +#define TERMCAP_FILE "/etc/termcap" +#endif + +#ifndef emacs +static void +memory_out () +{ + write (2, "virtual memory exhausted\n", 25); + exit (1); +} + +static char * +xmalloc (size) + unsigned size; +{ + register char *tem = malloc (size); + + if (!tem) + memory_out (); + return tem; +} + +static char * +xrealloc (ptr, size) + char *ptr; + unsigned size; +{ + register char *tem = realloc (ptr, size); + + if (!tem) + memory_out (); + return tem; +} +#endif /* not emacs */ + +/* Looking up capabilities in the entry already found. */ + +/* The pointer to the data made by tgetent is left here + for tgetnum, tgetflag and tgetstr to find. */ +static char *term_entry; + +static char *tgetst1 (); + +/* Search entry BP for capability CAP. + Return a pointer to the capability (in BP) if found, + 0 if not found. */ + +static char * +find_capability (bp, cap) + register char *bp, *cap; +{ + for (; *bp; bp++) + if (bp[0] == ':' + && bp[1] == cap[0] + && bp[2] == cap[1]) + return &bp[4]; + return NULL; +} + +__private_extern__ +int +tgetnum (cap) + char *cap; +{ + register char *ptr = find_capability (term_entry, cap); + if (!ptr || ptr[-1] != '#') + return -1; + return atoi (ptr); +} + +__private_extern__ +int +tgetflag (cap) + char *cap; +{ + register char *ptr = find_capability (term_entry, cap); + return ptr && ptr[-1] == ':'; +} + +/* Look up a string-valued capability CAP. + If AREA is non-null, it points to a pointer to a block in which + to store the string. That pointer is advanced over the space used. + If AREA is null, space is allocated with `malloc'. */ + +__private_extern__ +char * +tgetstr (cap, area) + char *cap; + char **area; +{ + register char *ptr = find_capability (term_entry, cap); + if (!ptr || (ptr[-1] != '=' && ptr[-1] != '~')) + return NULL; + return tgetst1 (ptr, area); +} + +/* Table, indexed by a character in range 0100 to 0140 with 0100 subtracted, + gives meaning of character following \, or a space if no special meaning. + Eight characters per line within the string. */ + +static char esctab[] + = " \007\010 \033\014 \ + \012 \ + \015 \011 \013 \ + "; + +/* PTR points to a string value inside a termcap entry. + Copy that value, processing \ and ^ abbreviations, + into the block that *AREA points to, + or to newly allocated storage if AREA is NULL. + Return the address to which we copied the value, + or NULL if PTR is NULL. */ + +static char * +tgetst1 (ptr, area) + char *ptr; + char **area; +{ + register char *p, *r; + register int c; + register int size; + char *ret; + register int c1; + + if (!ptr) + return NULL; + + /* `ret' gets address of where to store the string. */ + if (!area) + { + /* Compute size of block needed (may overestimate). */ + p = ptr; + while ((c = *p++) && c != ':' && c != '\n') + ; + ret = (char *) xmalloc (p - ptr + 1); + } + else + ret = *area; + + /* Copy the string value, stopping at null or colon. + Also process ^ and \ abbreviations. */ + p = ptr; + r = ret; + while ((c = *p++) && c != ':' && c != '\n') + { + if (c == '^') + { + c = *p++; + if (c == '?') + c = 0177; + else + c &= 037; + } + else if (c == '\\') + { + c = *p++; + if (c >= '0' && c <= '7') + { + c -= '0'; + size = 0; + + while (++size < 3 && (c1 = *p) >= '0' && c1 <= '7') + { + c *= 8; + c += c1 - '0'; + p++; + } + } + else if (c >= 0100 && c < 0200) + { + c1 = esctab[(c & ~040) - 0100]; + if (c1 != ' ') + c = c1; + } + } + *r++ = c; + } + *r = '\0'; + /* Update *AREA. */ + if (area) + *area = r + 1; + return ret; +} + +/* Outputting a string with padding. */ + +short ospeed; +/* If OSPEED is 0, we use this as the actual baud rate. */ +int tputs_baud_rate; +__private_extern__ char PC = '\0'; + +/* Actual baud rate if positive; + - baud rate / 100 if negative. */ + +static int speeds[] = + { +#ifdef VMS + 0, 50, 75, 110, 134, 150, -3, -6, -12, -18, + -20, -24, -36, -48, -72, -96, -192 +#else /* not VMS */ + 0, 50, 75, 110, 135, 150, -2, -3, -6, -12, + -18, -24, -48, -96, -192, -288, -384, -576, -1152 +#endif /* not VMS */ + }; + +__private_extern__ +int +tputs (str, nlines, outfun) + register char *str; + int nlines; + register int (*outfun) (); +{ + register int padcount = 0; + register int speed; + +#ifdef emacs + extern baud_rate; + speed = baud_rate; + /* For quite high speeds, convert to the smaller + units to avoid overflow. */ + if (speed > 10000) + speed = - speed / 100; +#else + if (ospeed == 0) + speed = tputs_baud_rate; + else if (ospeed > 0 && ospeed < (sizeof speeds / sizeof speeds[0])) + speed = speeds[ospeed]; + else + speed = 0; +#endif + + if (!str) + return -1; + + while (*str >= '0' && *str <= '9') + { + padcount += *str++ - '0'; + padcount *= 10; + } + if (*str == '.') + { + str++; + padcount += *str++ - '0'; + } + if (*str == '*') + { + str++; + padcount *= nlines; + } + while (*str) + (*outfun) (*str++); + + /* PADCOUNT is now in units of tenths of msec. + SPEED is measured in characters per 10 seconds + or in characters per .1 seconds (if negative). + We use the smaller units for larger speeds to avoid overflow. */ + padcount *= speed; + padcount += 500; + padcount /= 1000; + if (speed < 0) + padcount = -padcount; + else + { + padcount += 50; + padcount /= 100; + } + + while (padcount-- > 0) + (*outfun) (PC); + + return 0; +} + +/* Finding the termcap entry in the termcap data base. */ + +struct buffer + { + char *beg; + int size; + char *ptr; + int ateof; + int full; + }; + +/* Forward declarations of static functions. */ + +static int scan_file (); +static char *gobble_line (); +static int compare_contin (); +static int name_match (); + +#ifdef VMS + +#include +#include +#include + +static int +valid_filename_p (fn) + char *fn; +{ + struct FAB fab = cc$rms_fab; + struct NAM nam = cc$rms_nam; + char esa[NAM$C_MAXRSS]; + + fab.fab$l_fna = fn; + fab.fab$b_fns = strlen(fn); + fab.fab$l_nam = &nam; + fab.fab$l_fop = FAB$M_NAM; + + nam.nam$l_esa = esa; + nam.nam$b_ess = sizeof esa; + + return SYS$PARSE(&fab, 0, 0) == RMS$_NORMAL; +} + +#else /* !VMS */ + +#ifdef MSDOS /* MW, May 1993 */ +static int +valid_filename_p (fn) + char *fn; +{ + return *fn == '\\' || *fn == '/' || + (*fn >= 'A' && *fn <= 'z' && fn[1] == ':'); +} +#else +#define valid_filename_p(fn) (*(fn) == '/') +#endif + +#endif /* !VMS */ + +/* Find the termcap entry data for terminal type NAME + and store it in the block that BP points to. + Record its address for future use. + + If BP is null, space is dynamically allocated. + + Return -1 if there is some difficulty accessing the data base + of terminal types, + 0 if the data base is accessible but the type NAME is not defined + in it, and some other value otherwise. */ + +__private_extern__ +int +tgetent (bp, name) + char *bp, *name; +{ + register char *termcap_name; + register int fd; + struct buffer buf; + register char *bp1; + char *bp2; + char *term; + int malloc_size = 0; + register int c; + char *tcenv; /* TERMCAP value, if it contains :tc=. */ + char *indirect = NULL; /* Terminal type in :tc= in TERMCAP value. */ + int filep; + +#ifdef INTERNAL_TERMINAL + /* For the internal terminal we don't want to read any termcap file, + so fake it. */ + if (!strcmp (name, "internal")) + { + term = INTERNAL_TERMINAL; + if (!bp) + { + malloc_size = 1 + strlen (term); + bp = (char *) xmalloc (malloc_size); + } + strcpy (bp, term); + goto ret; + } +#endif /* INTERNAL_TERMINAL */ + + /* For compatibility with programs like `less' that want to + put data in the termcap buffer themselves as a fallback. */ + if (bp) + term_entry = bp; + + termcap_name = getenv ("TERMCAP"); + if (termcap_name && *termcap_name == '\0') + termcap_name = NULL; +#if 0 +#if defined (MSDOS) && !defined (TEST) + if (termcap_name && (*termcap_name == '\\' + || *termcap_name == '/' + || termcap_name[1] == ':')) + dostounix_filename(termcap_name); +#endif +#endif + + filep = termcap_name && valid_filename_p (termcap_name); + + /* If termcap_name is non-null and starts with / (in the un*x case, that is), + it is a file name to use instead of /etc/termcap. + If it is non-null and does not start with /, + it is the entry itself, but only if + the name the caller requested matches the TERM variable. */ + + if (termcap_name && !filep && !strcmp (name, getenv ("TERM"))) + { + indirect = tgetst1 (find_capability (termcap_name, "tc"), (char **) 0); + if (!indirect) + { + if (!bp) + bp = termcap_name; + else + strcpy (bp, termcap_name); + goto ret; + } + else + { /* It has tc=. Need to read /etc/termcap. */ + tcenv = termcap_name; + termcap_name = NULL; + } + } + + if (!termcap_name || !filep) + termcap_name = TERMCAP_FILE; + + /* Here we know we must search a file and termcap_name has its name. */ + +#ifdef MSDOS + fd = open (termcap_name, O_RDONLY|O_TEXT, 0); +#else + fd = open (termcap_name, O_RDONLY, 0); +#endif + if (fd < 0) + return -1; + + buf.size = BUFSIZE; + /* Add 1 to size to ensure room for terminating null. */ + buf.beg = (char *) xmalloc (buf.size + 1); + term = indirect ? indirect : name; + + if (!bp) + { + malloc_size = indirect ? strlen (tcenv) + 1 : buf.size; + bp = (char *) xmalloc (malloc_size); + } + bp1 = bp; + + if (indirect) + /* Copy the data from the environment variable. */ + { + strcpy (bp, tcenv); + bp1 += strlen (tcenv); + } + + while (term) + { + /* Scan the file, reading it via buf, till find start of main entry. */ + if (scan_file (term, fd, &buf) == 0) + { + close (fd); + free (buf.beg); + if (malloc_size) + free (bp); + return 0; + } + + /* Free old `term' if appropriate. */ + if (term != name) + free (term); + + /* If BP is malloc'd by us, make sure it is big enough. */ + if (malloc_size) + { + malloc_size = bp1 - bp + buf.size; + termcap_name = (char *) xrealloc (bp, malloc_size); + bp1 += termcap_name - bp; + bp = termcap_name; + } + + bp2 = bp1; + + /* Copy the line of the entry from buf into bp. */ + termcap_name = buf.ptr; + while ((*bp1++ = c = *termcap_name++) && c != '\n') + /* Drop out any \ newline sequence. */ + if (c == '\\' && *termcap_name == '\n') + { + bp1--; + termcap_name++; + } + *bp1 = '\0'; + + /* Does this entry refer to another terminal type's entry? + If something is found, copy it into heap and null-terminate it. */ + term = tgetst1 (find_capability (bp2, "tc"), (char **) 0); + } + + close (fd); + free (buf.beg); + + if (malloc_size) + bp = (char *) xrealloc (bp, bp1 - bp + 1); + + ret: + term_entry = bp; + return 1; +} + +/* Given file open on FD and buffer BUFP, + scan the file from the beginning until a line is found + that starts the entry for terminal type STR. + Return 1 if successful, with that line in BUFP, + or 0 if no entry is found in the file. */ + +static int +scan_file (str, fd, bufp) + char *str; + int fd; + register struct buffer *bufp; +{ + register char *end; + + bufp->ptr = bufp->beg; + bufp->full = 0; + bufp->ateof = 0; + *bufp->ptr = '\0'; + + lseek (fd, 0L, 0); + + while (!bufp->ateof) + { + /* Read a line into the buffer. */ + end = NULL; + do + { + /* if it is continued, append another line to it, + until a non-continued line ends. */ + end = gobble_line (fd, bufp, end); + } + while (!bufp->ateof && end[-2] == '\\'); + + if (*bufp->ptr != '#' + && name_match (bufp->ptr, str)) + return 1; + + /* Discard the line just processed. */ + bufp->ptr = end; + } + return 0; +} + +/* Return nonzero if NAME is one of the names specified + by termcap entry LINE. */ + +static int +name_match (line, name) + char *line, *name; +{ + register char *tem; + + if (!compare_contin (line, name)) + return 1; + /* This line starts an entry. Is it the right one? */ + for (tem = line; *tem && *tem != '\n' && *tem != ':'; tem++) + if (*tem == '|' && !compare_contin (tem + 1, name)) + return 1; + + return 0; +} + +static int +compare_contin (str1, str2) + register char *str1, *str2; +{ + register int c1, c2; + while (1) + { + c1 = *str1++; + c2 = *str2++; + while (c1 == '\\' && *str1 == '\n') + { + str1++; + while ((c1 = *str1++) == ' ' || c1 == '\t'); + } + if (c2 == '\0') + { + /* End of type being looked up. */ + if (c1 == '|' || c1 == ':') + /* If end of name in data base, we win. */ + return 0; + else + return 1; + } + else if (c1 != c2) + return 1; + } +} + +/* Make sure that the buffer <- BUFP contains a full line + of the file open on FD, starting at the place BUFP->ptr + points to. Can read more of the file, discard stuff before + BUFP->ptr, or make the buffer bigger. + + Return the pointer to after the newline ending the line, + or to the end of the file, if there is no newline to end it. + + Can also merge on continuation lines. If APPEND_END is + non-null, it points past the newline of a line that is + continued; we add another line onto it and regard the whole + thing as one line. The caller decides when a line is continued. */ + +static char * +gobble_line (fd, bufp, append_end) + int fd; + register struct buffer *bufp; + char *append_end; +{ + register char *end; + register int nread; + register char *buf = bufp->beg; + register char *tem; + + if (!append_end) + append_end = bufp->ptr; + + while (1) + { + end = append_end; + while (*end && *end != '\n') end++; + if (*end) + break; + if (bufp->ateof) + return buf + bufp->full; + if (bufp->ptr == buf) + { + if (bufp->full == bufp->size) + { + bufp->size *= 2; + /* Add 1 to size to ensure room for terminating null. */ + tem = (char *) xrealloc (buf, bufp->size + 1); + bufp->ptr = (bufp->ptr - buf) + tem; + append_end = (append_end - buf) + tem; + bufp->beg = buf = tem; + } + } + else + { + append_end -= bufp->ptr - buf; + bcopy (bufp->ptr, buf, bufp->full -= bufp->ptr - buf); + bufp->ptr = buf; + } + if (!(nread = read (fd, buf + bufp->full, bufp->size - bufp->full))) + bufp->ateof = 1; + bufp->full += nread; + buf[bufp->full] = '\0'; + } + return end + 1; +} + +#ifdef TEST + +#ifdef NULL +#undef NULL +#endif + +#include + +main (argc, argv) + int argc; + char **argv; +{ + char *term; + char *buf; + + term = argv[1]; + printf ("TERM: %s\n", term); + + buf = (char *) tgetent (0, term); + if ((int) buf <= 0) + { + printf ("No entry.\n"); + return 0; + } + + printf ("Entry: %s\n", buf); + + tprint ("cm"); + tprint ("AL"); + + printf ("co: %d\n", tgetnum ("co")); + printf ("am: %d\n", tgetflag ("am")); +} + +tprint (cap) + char *cap; +{ + char *x = tgetstr (cap, 0); + register char *y; + + printf ("%s: ", cap); + if (x) + { + for (y = x; *y; y++) + if (*y <= ' ' || *y == 0177) + printf ("\\%0o", *y); + else + putchar (*y); + free (x); + } + else + printf ("none"); + putchar ('\n'); +} + +#endif /* TEST */ diff --git a/bash-5.1/lib/termcap/termcap.h b/bash-5.1/lib/termcap/termcap.h new file mode 100644 index 0000000..b0e3061 --- /dev/null +++ b/bash-5.1/lib/termcap/termcap.h @@ -0,0 +1,63 @@ +/* termcap.h - public declarations for termcap library. */ + +/* Copyright (C) 1991, 1992, 1995, 2001, 2005, 2006, 2008,2009 Free Software Foundation, Inc. + + 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 . +*/ + +#ifndef _TERMCAP_H +#define _TERMCAP_H 1 + +#if __STDC__ + +extern int tgetent (char *buffer, const char *termtype); + +extern int tgetnum (const char *name); +extern int tgetflag (const char *name); +extern char *tgetstr (const char *name, char **area); + +extern char PC; +extern short ospeed; +extern int tputs (const char *string, int nlines, int (*outfun) (int)); + +extern char *tparam (const char *ctlstring, char *buffer, int size, ...); + +extern char *UP; +extern char *BC; + +extern char *tgoto (const char *cstring, int hpos, int vpos); + +#else /* not __STDC__ */ + +extern int tgetent (); + +extern int tgetnum (); +extern int tgetflag (); +extern char *tgetstr (); + +extern char PC; +extern short ospeed; + +extern void tputs (); + +extern char *tparam (); + +extern char *UP; +extern char *BC; + +extern char *tgoto (); + +#endif /* not __STDC__ */ + +#endif /* not _TERMCAP_H */ diff --git a/bash-5.1/lib/termcap/tparam.c b/bash-5.1/lib/termcap/tparam.c new file mode 100644 index 0000000..c4bff08 --- /dev/null +++ b/bash-5.1/lib/termcap/tparam.c @@ -0,0 +1,345 @@ +/* tparam.c - merge parameters into a termcap entry string. */ + +/* Copyright (C) 1985, 1986, 1993,1994, 1995, 1998, 2001,2003,2005,2006,2008,2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* Emacs config.h may rename various library functions such as malloc. */ +#ifdef HAVE_CONFIG_H +#include + +#ifdef HAVE_STDLIB_H +# include +#else +extern char *getenv (); +extern char *malloc (); +extern char *realloc (); +#endif + +#if defined (HAVE_STRING_H) +#include +#endif + +#if !defined (HAVE_BCOPY) && (defined (HAVE_STRING_H) || defined (STDC_HEADERS)) +# define bcopy(s, d, n) memcpy ((d), (s), (n)) +#endif + +#else /* not HAVE_CONFIG_H */ + +#if defined(HAVE_STRING_H) || defined(STDC_HEADERS) +#define bcopy(s, d, n) memcpy ((d), (s), (n)) +#endif + +#ifdef STDC_HEADERS +#include +#include +#else +char *malloc (); +char *realloc (); +#endif + +#endif /* not HAVE_CONFIG_H */ + +#include "ltcap.h" + +#ifndef NULL +#define NULL (char *) 0 +#endif + +#ifndef emacs +static void +memory_out () +{ + write (2, "virtual memory exhausted\n", 25); + exit (1); +} + +static char * +xmalloc (size) + unsigned size; +{ + register char *tem = malloc (size); + + if (!tem) + memory_out (); + return tem; +} + +static char * +xrealloc (ptr, size) + char *ptr; + unsigned size; +{ + register char *tem = realloc (ptr, size); + + if (!tem) + memory_out (); + return tem; +} +#endif /* not emacs */ + +/* Assuming STRING is the value of a termcap string entry + containing `%' constructs to expand parameters, + merge in parameter values and store result in block OUTSTRING points to. + LEN is the length of OUTSTRING. If more space is needed, + a block is allocated with `malloc'. + + The value returned is the address of the resulting string. + This may be OUTSTRING or may be the address of a block got with `malloc'. + In the latter case, the caller must free the block. + + The fourth and following args to tparam serve as the parameter values. */ + +static char *tparam1 (); + +/* VARARGS 2 */ +char * +tparam (string, outstring, len, arg0, arg1, arg2, arg3) + char *string; + char *outstring; + int len; + int arg0, arg1, arg2, arg3; +{ + int arg[4]; + + arg[0] = arg0; + arg[1] = arg1; + arg[2] = arg2; + arg[3] = arg3; + return tparam1 (string, outstring, len, NULL, NULL, arg); +} + +__private_extern__ char *BC; +__private_extern__ char *UP; + +static char tgoto_buf[50]; + +__private_extern__ +char * +tgoto (cm, hpos, vpos) + char *cm; + int hpos, vpos; +{ + int args[2]; + if (!cm) + return NULL; + args[0] = vpos; + args[1] = hpos; + return tparam1 (cm, tgoto_buf, 50, UP, BC, args); +} + +static char * +tparam1 (string, outstring, len, up, left, argp) + char *string; + char *outstring; + int len; + char *up, *left; + register int *argp; +{ + register int c; + register char *p = string; + register char *op = outstring; + char *outend; + int outlen = 0; + + register int tem; + int *old_argp = argp; + int doleft = 0; + int doup = 0; + + outend = outstring + len; + + while (1) + { + /* If the buffer might be too short, make it bigger. */ + if (op + 5 >= outend) + { + register char *new; + if (outlen == 0) + { + outlen = len + 40; + new = (char *) xmalloc (outlen); + outend += 40; + bcopy (outstring, new, op - outstring); + } + else + { + outend += outlen; + outlen *= 2; + new = (char *) xrealloc (outstring, outlen); + } + op += new - outstring; + outend += new - outstring; + outstring = new; + } + c = *p++; + if (!c) + break; + if (c == '%') + { + c = *p++; + tem = *argp; + switch (c) + { + case 'd': /* %d means output in decimal. */ + if (tem < 10) + goto onedigit; + if (tem < 100) + goto twodigit; + case '3': /* %3 means output in decimal, 3 digits. */ + if (tem > 999) + { + *op++ = tem / 1000 + '0'; + tem %= 1000; + } + *op++ = tem / 100 + '0'; + case '2': /* %2 means output in decimal, 2 digits. */ + twodigit: + tem %= 100; + *op++ = tem / 10 + '0'; + onedigit: + *op++ = tem % 10 + '0'; + argp++; + break; + + case 'C': + /* For c-100: print quotient of value by 96, if nonzero, + then do like %+. */ + if (tem >= 96) + { + *op++ = tem / 96; + tem %= 96; + } + case '+': /* %+x means add character code of char x. */ + tem += *p++; + case '.': /* %. means output as character. */ + if (left) + { + /* If want to forbid output of 0 and \n and \t, + and this is one of them, increment it. */ + while (tem == 0 || tem == '\n' || tem == '\t') + { + tem++; + if (argp == old_argp) + doup++, outend -= strlen (up); + else + doleft++, outend -= strlen (left); + } + } + *op++ = tem ? tem : 0200; + case 'f': /* %f means discard next arg. */ + argp++; + break; + + case 'b': /* %b means back up one arg (and re-use it). */ + argp--; + break; + + case 'r': /* %r means interchange following two args. */ + argp[0] = argp[1]; + argp[1] = tem; + old_argp++; + break; + + case '>': /* %>xy means if arg is > char code of x, */ + if (argp[0] > *p++) /* then add char code of y to the arg, */ + argp[0] += *p; /* and in any case don't output. */ + p++; /* Leave the arg to be output later. */ + break; + + case 'a': /* %a means arithmetic. */ + /* Next character says what operation. + Add or subtract either a constant or some other arg. */ + /* First following character is + to add or - to subtract + or = to assign. */ + /* Next following char is 'p' and an arg spec + (0100 plus position of that arg relative to this one) + or 'c' and a constant stored in a character. */ + tem = p[2] & 0177; + if (p[1] == 'p') + tem = argp[tem - 0100]; + if (p[0] == '-') + argp[0] -= tem; + else if (p[0] == '+') + argp[0] += tem; + else if (p[0] == '*') + argp[0] *= tem; + else if (p[0] == '/') + argp[0] /= tem; + else + argp[0] = tem; + + p += 3; + break; + + case 'i': /* %i means add one to arg, */ + argp[0] ++; /* and leave it to be output later. */ + argp[1] ++; /* Increment the following arg, too! */ + break; + + case '%': /* %% means output %; no arg. */ + goto ordinary; + + case 'n': /* %n means xor each of next two args with 140. */ + argp[0] ^= 0140; + argp[1] ^= 0140; + break; + + case 'm': /* %m means xor each of next two args with 177. */ + argp[0] ^= 0177; + argp[1] ^= 0177; + break; + + case 'B': /* %B means express arg as BCD char code. */ + argp[0] += 6 * (tem / 10); + break; + + case 'D': /* %D means weird Delta Data transformation. */ + argp[0] -= 2 * (tem % 16); + break; + } + } + else + /* Ordinary character in the argument string. */ + ordinary: + *op++ = c; + } + *op = 0; + while (doup-- > 0) + strcat (op, up); + while (doleft-- > 0) + strcat (op, left); + return outstring; +} + +#ifdef DEBUG + +main (argc, argv) + int argc; + char **argv; +{ + char buf[50]; + int args[3]; + args[0] = atoi (argv[2]); + args[1] = atoi (argv[3]); + args[2] = atoi (argv[4]); + tparam1 (argv[1], buf, "LEFT", "UP", args); + printf ("%s\n", buf); + return 0; +} + +#endif /* DEBUG */ diff --git a/bash-5.1/lib/termcap/version.c b/bash-5.1/lib/termcap/version.c new file mode 100644 index 0000000..cad57be --- /dev/null +++ b/bash-5.1/lib/termcap/version.c @@ -0,0 +1,22 @@ +/* version.c - termcap library version information. */ + +/* Copyright (C) 1985-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* Make the library identifiable with the RCS ident command. */ +static char *termcap_version_string = "\n$Version: GNU termcap 1.3 $\n"; diff --git a/bash-5.1/lib/tilde/Makefile.in b/bash-5.1/lib/tilde/Makefile.in new file mode 100644 index 0000000..c21d389 --- /dev/null +++ b/bash-5.1/lib/tilde/Makefile.in @@ -0,0 +1,126 @@ +## -*- text -*- #################################################### +# # +# Makefile for the GNU Tilde Library. # +# # +#################################################################### + +# Copyright (C) 1996-2009 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# 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 . + +srcdir = @srcdir@ +VPATH = @srcdir@ +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ + +CC = @CC@ +RANLIB = @RANLIB@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +RM = rm +CP = cp +MV = mv + +SHELL = @MAKE_SHELL@ + +PROFILE_FLAGS = @PROFILE_FLAGS@ + +CFLAGS = @CFLAGS@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@ + +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +BASHINCDIR = ${topdir}/include + +INCLUDES = -I. -I../.. -I$(topdir) -I${BASHINCDIR} -I$(topdir)/lib + +CCFLAGS = ${ASAN_CFLAGS} $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) \ + ${INCLUDES} $(LOCAL_CFLAGS) $(CFLAGS) + +.c.o: + $(CC) -c $(CCFLAGS) $< + +# 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) $(ARFLAGS) $@ $(OBJECTS) + -test -n "$(RANLIB)" && $(RANLIB) $@ + +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: + $(INSTALL_DATA) -c -m 644 $(LIBRARY_NAME) $(libdir)/$(LIBRARY_NAME) + -test -n "$(RANLIB)" && $(RANLIB) -t $(libdir)/$(LIBRARY_NAME) + +clean: + $(RM) -f $(OBJECTS) $(LIBRARY_NAME) + -( cd doc && $(MAKE) $(MFLAGS) $@ ) + +realclean distclean maintainer-clean: clean + -( cd doc && $(MAKE) $(MFLAGS) $@ ) + $(RM) -f Makefile + +mostlyclean: clean + -( cd doc && $(MAKE) $(MFLAGS) $@ ) + +###################################################################### +# # +# Dependencies for the object files which make up this library. # +# # +###################################################################### + +tilde.o: tilde.h $(BASHINCDIR)/ansi_stdlib.h +tilde.o: $(BUILD_DIR)/config.h + +# Rules for deficient makes, like SunOS and Solaris +tilde.o: tilde.c diff --git a/bash-5.1/lib/tilde/README b/bash-5.1/lib/tilde/README new file mode 100644 index 0000000..a8772f3 --- /dev/null +++ b/bash-5.1/lib/tilde/README @@ -0,0 +1,5 @@ +If you're building this separately from bash or the readline library, add +$(srcdir)/shell.c to the CSOURCES variable and shell.o to the OBJECTS +variable in Makefile.in. (Not that this is very useful without readline +or bash.) + diff --git a/bash-5.1/lib/tilde/shell.c b/bash-5.1/lib/tilde/shell.c new file mode 100644 index 0000000..9805a92 --- /dev/null +++ b/bash-5.1/lib/tilde/shell.c @@ -0,0 +1,79 @@ +/* shell.c -- tilde utility functions that are normally provided by + bash when readline is linked as part of the shell. */ + +/* Copyright (C) 1998-2017 Free Software Foundation, Inc. + + This file is part of the GNU Tilde Library. + + The GNU Tilde Library is free software: you can 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. + + The GNU Tilde Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the GNU Tilde Library. If not, see . +*/ + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif /* HAVE_UNISTD_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if defined (HAVE_STRING_H) +# include +#else +# include +#endif /* !HAVE_STRING_H */ + +#include + +#if !defined (HAVE_GETPW_DECLS) +extern struct passwd *getpwuid (); +#endif /* !HAVE_GETPW_DECLS */ + +char * +get_env_value (char *varname) +{ + return ((char *)getenv (varname)); +} + +/* If we're not using $HOME, assume that the passwd file information won't + change while this shell instance is running. */ +char * +get_home_dir (void) +{ + static char *home_dir = (char *)NULL; + struct passwd *entry; + + if (home_dir) + return (home_dir); + +#if defined (HAVE_GETPWUID) + entry = getpwuid (getuid ()); + if (entry) + home_dir = savestring (entry->pw_dir); +#endif + +#if defined (HAVE_GETPWENT) + endpwent (); /* some systems need this */ +#endif + + return (home_dir); +} diff --git a/bash-5.1/lib/tilde/tilde.c b/bash-5.1/lib/tilde/tilde.c new file mode 100644 index 0000000..d678a31 --- /dev/null +++ b/bash-5.1/lib/tilde/tilde.c @@ -0,0 +1,493 @@ +/* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */ + +/* Copyright (C) 1988-2020 Free Software Foundation, Inc. + + This file is part of the GNU Readline Library (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 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 . +*/ + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#if defined (HAVE_STRING_H) +# include +#else /* !HAVE_STRING_H */ +# include +#endif /* !HAVE_STRING_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include +#if defined (HAVE_PWD_H) +#include +#endif + +#include "tilde.h" + +#if defined (TEST) || defined (STATIC_MALLOC) +static void *xmalloc (), *xrealloc (); +#else +# include "xmalloc.h" +#endif /* TEST || STATIC_MALLOC */ + +#if !defined (HAVE_GETPW_DECLS) +# if defined (HAVE_GETPWUID) +extern struct passwd *getpwuid (uid_t); +# endif +# if defined (HAVE_GETPWNAM) +extern struct passwd *getpwnam (const char *); +# endif +#endif /* !HAVE_GETPW_DECLS */ + +#if !defined (savestring) +#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x)) +#endif /* !savestring */ + +#if !defined (NULL) +# if defined (__STDC__) +# define NULL ((void *) 0) +# else +# define NULL 0x0 +# endif /* !__STDC__ */ +#endif /* !NULL */ + +/* If being compiled as part of bash, these will be satisfied from + variables.o. If being compiled as part of readline, they will + be satisfied from shell.o. */ +extern char *sh_get_home_dir (void); +extern char *sh_get_env_value (const char *); + +/* The default value of tilde_additional_prefixes. This is set to + whitespace preceding a tilde so that simple programs which do not + perform any word separation get desired behaviour. */ +static const char *default_prefixes[] = + { " ~", "\t~", (const char *)NULL }; + +/* The default value of tilde_additional_suffixes. This is set to + whitespace or newline so that simple programs which do not + perform any word separation get desired behaviour. */ +static const char *default_suffixes[] = + { " ", "\n", (const char *)NULL }; + +/* If non-null, this contains the address of a function that the application + wants called before trying the standard tilde expansions. The function + is called with the text sans tilde, and returns a malloc()'ed string + which is the expansion, or a NULL pointer if the expansion fails. */ +tilde_hook_func_t *tilde_expansion_preexpansion_hook = (tilde_hook_func_t *)NULL; + +/* If non-null, this contains the address of a function to call if the + standard meaning for expanding a tilde fails. The function is called + with the text (sans tilde, as in "foo"), and returns a malloc()'ed string + which is the expansion, or a NULL pointer if there is no expansion. */ +tilde_hook_func_t *tilde_expansion_failure_hook = (tilde_hook_func_t *)NULL; + +/* When non-null, this is a NULL terminated array of strings which + are duplicates for a tilde prefix. Bash uses this to expand + `=~' and `:~'. */ +char **tilde_additional_prefixes = (char **)default_prefixes; + +/* When non-null, this is a NULL terminated array of strings which match + the end of a username, instead of just "/". Bash sets this to + `:' and `=~'. */ +char **tilde_additional_suffixes = (char **)default_suffixes; + +static int tilde_find_prefix (const char *, int *); +static int tilde_find_suffix (const char *); +static char *isolate_tilde_prefix (const char *, int *); +static char *glue_prefix_and_suffix (char *, const char *, int); + +/* Find the start of a tilde expansion in STRING, and return the index of + the tilde which starts the expansion. Place the length of the text + which identified this tilde starter in LEN, excluding the tilde itself. */ +static int +tilde_find_prefix (const char *string, int *len) +{ + register int i, j, string_len; + register char **prefixes; + + prefixes = tilde_additional_prefixes; + + string_len = strlen (string); + *len = 0; + + if (*string == '\0' || *string == '~') + return (0); + + if (prefixes) + { + for (i = 0; i < string_len; i++) + { + for (j = 0; prefixes[j]; j++) + { + if (strncmp (string + i, prefixes[j], strlen (prefixes[j])) == 0) + { + *len = strlen (prefixes[j]) - 1; + return (i + *len); + } + } + } + } + return (string_len); +} + +/* Find the end of a tilde expansion in STRING, and return the index of + the character which ends the tilde definition. */ +static int +tilde_find_suffix (const char *string) +{ + register int i, j, string_len; + register char **suffixes; + + suffixes = tilde_additional_suffixes; + string_len = strlen (string); + + for (i = 0; i < string_len; i++) + { +#if defined (__MSDOS__) + if (string[i] == '/' || string[i] == '\\' /* || !string[i] */) +#else + if (string[i] == '/' /* || !string[i] */) +#endif + break; + + for (j = 0; suffixes && suffixes[j]; j++) + { + if (strncmp (string + i, suffixes[j], strlen (suffixes[j])) == 0) + return (i); + } + } + return (i); +} + +/* Return a new string which is the result of tilde expanding STRING. */ +char * +tilde_expand (const char *string) +{ + char *result; + int result_size, result_index; + + result_index = result_size = 0; + if (result = strchr (string, '~')) + result = (char *)xmalloc (result_size = (strlen (string) + 16)); + else + result = (char *)xmalloc (result_size = (strlen (string) + 1)); + + /* Scan through STRING expanding tildes as we come to them. */ + while (1) + { + register int start, end; + char *tilde_word, *expansion; + int len; + + /* Make START point to the tilde which starts the expansion. */ + start = tilde_find_prefix (string, &len); + + /* Copy the skipped text into the result. */ + if ((result_index + start + 1) > result_size) + result = (char *)xrealloc (result, 1 + (result_size += (start + 20))); + + strncpy (result + result_index, string, start); + result_index += start; + + /* Advance STRING to the starting tilde. */ + string += start; + + /* Make END be the index of one after the last character of the + username. */ + end = tilde_find_suffix (string); + + /* If both START and END are zero, we are all done. */ + if (!start && !end) + break; + + /* Expand the entire tilde word, and copy it into RESULT. */ + tilde_word = (char *)xmalloc (1 + end); + strncpy (tilde_word, string, end); + tilde_word[end] = '\0'; + string += end; + + expansion = tilde_expand_word (tilde_word); + + if (expansion == 0) + expansion = tilde_word; + else + xfree (tilde_word); + + len = strlen (expansion); +#ifdef __CYGWIN__ + /* Fix for Cygwin to prevent ~user/xxx from expanding to //xxx when + $HOME for `user' is /. On cygwin, // denotes a network drive. */ + if (len > 1 || *expansion != '/' || *string != '/') +#endif + { + if ((result_index + len + 1) > result_size) + result = (char *)xrealloc (result, 1 + (result_size += (len + 20))); + + strcpy (result + result_index, expansion); + result_index += len; + } + xfree (expansion); + } + + result[result_index] = '\0'; + + return (result); +} + +/* Take FNAME and return the tilde prefix we want expanded. If LENP is + non-null, the index of the end of the prefix into FNAME is returned in + the location it points to. */ +static char * +isolate_tilde_prefix (const char *fname, int *lenp) +{ + char *ret; + int i; + + ret = (char *)xmalloc (strlen (fname)); +#if defined (__MSDOS__) + for (i = 1; fname[i] && fname[i] != '/' && fname[i] != '\\'; i++) +#else + for (i = 1; fname[i] && fname[i] != '/'; i++) +#endif + ret[i - 1] = fname[i]; + ret[i - 1] = '\0'; + if (lenp) + *lenp = i; + return ret; +} + +#if 0 +/* Public function to scan a string (FNAME) beginning with a tilde and find + the portion of the string that should be passed to the tilde expansion + function. Right now, it just calls tilde_find_suffix and allocates new + memory, but it can be expanded to do different things later. */ +char * +tilde_find_word (const char *fname, int flags, int *lenp) +{ + int x; + char *r; + + x = tilde_find_suffix (fname); + if (x == 0) + { + r = savestring (fname); + if (lenp) + *lenp = 0; + } + else + { + r = (char *)xmalloc (1 + x); + strncpy (r, fname, x); + r[x] = '\0'; + if (lenp) + *lenp = x; + } + + return r; +} +#endif + +/* Return a string that is PREFIX concatenated with SUFFIX starting at + SUFFIND. */ +static char * +glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind) +{ + char *ret; + int plen, slen; + + plen = (prefix && *prefix) ? strlen (prefix) : 0; + slen = strlen (suffix + suffind); + ret = (char *)xmalloc (plen + slen + 1); + if (plen) + strcpy (ret, prefix); + strcpy (ret + plen, suffix + suffind); + return ret; +} + +/* Do the work of tilde expansion on FILENAME. FILENAME starts with a + tilde. If there is no expansion, call tilde_expansion_failure_hook. + This always returns a newly-allocated string, never static storage. */ +char * +tilde_expand_word (const char *filename) +{ + char *dirname, *expansion, *username; + int user_len; + struct passwd *user_entry; + + if (filename == 0) + return ((char *)NULL); + + if (*filename != '~') + return (savestring (filename)); + + /* A leading `~/' or a bare `~' is *always* translated to the value of + $HOME or the home directory of the current user, regardless of any + preexpansion hook. */ + if (filename[1] == '\0' || filename[1] == '/') + { + /* Prefix $HOME to the rest of the string. */ + expansion = sh_get_env_value ("HOME"); +#if defined (_WIN32) + if (expansion == 0) + expansion = sh_get_env_value ("APPDATA"); +#endif + + /* If there is no HOME variable, look up the directory in + the password database. */ + if (expansion == 0) + expansion = sh_get_home_dir (); + + return (glue_prefix_and_suffix (expansion, filename, 1)); + } + + username = isolate_tilde_prefix (filename, &user_len); + + if (tilde_expansion_preexpansion_hook) + { + expansion = (*tilde_expansion_preexpansion_hook) (username); + if (expansion) + { + dirname = glue_prefix_and_suffix (expansion, filename, user_len); + xfree (username); + xfree (expansion); + return (dirname); + } + } + + /* No preexpansion hook, or the preexpansion hook failed. Look in the + password database. */ + dirname = (char *)NULL; +#if defined (HAVE_GETPWNAM) + user_entry = getpwnam (username); +#else + user_entry = 0; +#endif + if (user_entry == 0) + { + /* If the calling program has a special syntax for expanding tildes, + and we couldn't find a standard expansion, then let them try. */ + if (tilde_expansion_failure_hook) + { + expansion = (*tilde_expansion_failure_hook) (username); + if (expansion) + { + dirname = glue_prefix_and_suffix (expansion, filename, user_len); + xfree (expansion); + } + } + /* If we don't have a failure hook, or if the failure hook did not + expand the tilde, return a copy of what we were passed. */ + if (dirname == 0) + dirname = savestring (filename); + } +#if defined (HAVE_GETPWENT) + else + dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); +#endif + + xfree (username); +#if defined (HAVE_GETPWENT) + endpwent (); +#endif + return (dirname); +} + + +#if defined (TEST) +#undef NULL +#include + +main (int argc, char **argv) +{ + char *result, line[512]; + int done = 0; + + while (!done) + { + printf ("~expand: "); + fflush (stdout); + + if (!gets (line)) + strcpy (line, "done"); + + if ((strcmp (line, "done") == 0) || + (strcmp (line, "quit") == 0) || + (strcmp (line, "exit") == 0)) + { + done = 1; + break; + } + + result = tilde_expand (line); + printf (" --> %s\n", result); + free (result); + } + exit (0); +} + +static void memory_error_and_abort (void); + +static void * +xmalloc (size_t bytes) +{ + void *temp = (char *)malloc (bytes); + + if (!temp) + memory_error_and_abort (); + return (temp); +} + +static void * +xrealloc (void *pointer, int bytes) +{ + void *temp; + + if (!pointer) + temp = malloc (bytes); + else + temp = realloc (pointer, bytes); + + if (!temp) + memory_error_and_abort (); + + return (temp); +} + +static void +memory_error_and_abort (void) +{ + fprintf (stderr, "readline: out of virtual memory\n"); + abort (); +} + +/* + * Local variables: + * compile-command: "gcc -g -DTEST -o tilde tilde.c" + * end: + */ +#endif /* TEST */ diff --git a/bash-5.1/lib/tilde/tilde.h b/bash-5.1/lib/tilde/tilde.h new file mode 100644 index 0000000..e26dd04 --- /dev/null +++ b/bash-5.1/lib/tilde/tilde.h @@ -0,0 +1,80 @@ +/* tilde.h: Externally available variables and function in libtilde.a. */ + +/* Copyright (C) 1992-2009 Free Software Foundation, Inc. + + This file contains the Readline Library (Readline), a set of + routines for providing Emacs style line input to programs that ask + for it. + + 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 . +*/ + +#if !defined (_TILDE_H_) +# define _TILDE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* A function can be defined using prototypes and compile on both ANSI C + and traditional C compilers with something like this: + extern char *func PARAMS((char *, char *, int)); */ + +#if !defined (PARAMS) +# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) +# define PARAMS(protos) protos +# else +# define PARAMS(protos) () +# endif +#endif + +typedef char *tilde_hook_func_t PARAMS((char *)); + +/* If non-null, this contains the address of a function that the application + wants called before trying the standard tilde expansions. The function + is called with the text sans tilde, and returns a malloc()'ed string + which is the expansion, or a NULL pointer if the expansion fails. */ +extern tilde_hook_func_t *tilde_expansion_preexpansion_hook; + +/* If non-null, this contains the address of a function to call if the + standard meaning for expanding a tilde fails. The function is called + with the text (sans tilde, as in "foo"), and returns a malloc()'ed string + which is the expansion, or a NULL pointer if there is no expansion. */ +extern tilde_hook_func_t *tilde_expansion_failure_hook; + +/* When non-null, this is a NULL terminated array of strings which + are duplicates for a tilde prefix. Bash uses this to expand + `=~' and `:~'. */ +extern char **tilde_additional_prefixes; + +/* When non-null, this is a NULL terminated array of strings which match + the end of a username, instead of just "/". Bash sets this to + `:' and `=~'. */ +extern char **tilde_additional_suffixes; + +/* Return a new string which is the result of tilde expanding STRING. */ +extern char *tilde_expand PARAMS((const char *)); + +/* Do the work of tilde expansion on FILENAME. FILENAME starts with a + tilde. If there is no expansion, call tilde_expansion_failure_hook. */ +extern char *tilde_expand_word PARAMS((const char *)); + +/* Find the portion of the string beginning with ~ that should be expanded. */ +extern char *tilde_find_word PARAMS((const char *, int, int *)); + +#ifdef __cplusplus +} +#endif + +#endif /* _TILDE_H_ */ diff --git a/bash-5.1/list.c b/bash-5.1/list.c new file mode 100644 index 0000000..88835f5 --- /dev/null +++ b/bash-5.1/list.c @@ -0,0 +1,136 @@ +/* list.c - Functions for manipulating linked lists of objects. */ + +/* Copyright (C) 1996-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "shell.h" + +/* A global variable which acts as a sentinel for an `error' list return. */ +GENERIC_LIST global_error_list; + +#ifdef INCLUDE_UNUSED +/* Call FUNCTION on every member of LIST, a generic list. */ +void +list_walk (list, function) + GENERIC_LIST *list; + sh_glist_func_t *function; +{ + for ( ; list; list = list->next) + if ((*function) (list) < 0) + return; +} + +/* Call FUNCTION on every string in WORDS. */ +void +wlist_walk (words, function) + WORD_LIST *words; + sh_icpfunc_t *function; +{ + for ( ; words; words = words->next) + if ((*function) (words->word->word) < 0) + return; +} +#endif /* INCLUDE_UNUSED */ + +/* 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 * +list_reverse (list) + GENERIC_LIST *list; +{ + register GENERIC_LIST *next, *prev; + + for (prev = (GENERIC_LIST *)NULL; 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) + GENERIC_LIST *list; +{ + register int i; + + for (i = 0; list; list = list->next, i++); + return (i); +} + +/* Append TAIL to HEAD. Return the header of the list. */ +GENERIC_LIST * +list_append (head, tail) + GENERIC_LIST *head, *tail; +{ + register GENERIC_LIST *t_head; + + if (head == 0) + return (tail); + + for (t_head = head; t_head->next; t_head = t_head->next) + ; + t_head->next = tail; + return (head); +} + +#ifdef INCLUDE_UNUSED +/* 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 = list_remove (&variable_list, check_var_has_name, "foo"); + dispose_variable (elt); +*/ +GENERIC_LIST * +list_remove (list, comparer, arg) + GENERIC_LIST **list; + Function *comparer; + char *arg; +{ + register GENERIC_LIST *prev, *temp; + + for (prev = (GENERIC_LIST *)NULL, temp = *list; temp; prev = temp, temp = temp->next) + { + if ((*comparer) (temp, arg)) + { + if (prev) + prev->next = temp->next; + else + *list = temp->next; + return (temp); + } + } + return ((GENERIC_LIST *)&global_error_list); +} +#endif diff --git a/bash-5.1/locale.c b/bash-5.1/locale.c new file mode 100644 index 0000000..a6c07a3 --- /dev/null +++ b/bash-5.1/locale.c @@ -0,0 +1,639 @@ +/* locale.c - Miscellaneous internationalization functions. */ + +/* Copyright (C) 1996-2009,2012,2016,2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if HAVE_LANGINFO_CODESET +# include +#endif + +#include "bashintl.h" +#include "bashansi.h" +#include +#include "chartypes.h" +#include + +#include "shell.h" +#include "input.h" /* For bash_input */ + +#ifndef errno +extern int errno; +#endif + +int locale_utf8locale; +int locale_mb_cur_max; /* value of MB_CUR_MAX for current locale (LC_CTYPE) */ +int locale_shiftstates = 0; + +extern int dump_translatable_strings, dump_po_strings; + +/* The current locale when the program begins */ +static char *default_locale; + +/* The current domain for textdomain(3). */ +static char *default_domain; +static char *default_dir; + +/* tracks the value of LC_ALL; used to override values for other locale + categories */ +static char *lc_all; + +/* tracks the value of LC_ALL; used to provide defaults for locale + categories */ +static char *lang; + +/* Called to reset all of the locale variables to their appropriate values + if (and only if) LC_ALL has not been assigned a value. */ +static int reset_locale_vars PARAMS((void)); + +static void locale_setblanks PARAMS((void)); +static int locale_isutf8 PARAMS((char *)); + +/* Set the value of default_locale and make the current locale the + system default locale. This should be called very early in main(). */ +void +set_default_locale () +{ +#if defined (HAVE_SETLOCALE) + default_locale = setlocale (LC_ALL, ""); +#else + default_locale = savestring ("C"); +#endif /* HAVE_SETLOCALE */ + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + locale_mb_cur_max = MB_CUR_MAX; + locale_utf8locale = locale_isutf8 (default_locale); +#if defined (HANDLE_MULTIBYTE) + locale_shiftstates = mblen ((char *)NULL, 0); +#else + local_shiftstates = 0; +#endif +} + +/* Set default values for LC_CTYPE, LC_COLLATE, LC_MESSAGES, LC_NUMERIC and + LC_TIME if they are not specified in the environment, but LC_ALL is. This + should be called from main() after parsing the environment. */ +void +set_default_locale_vars () +{ + char *val; + +#if defined (HAVE_SETLOCALE) + +# if defined (LC_CTYPE) + val = get_string_value ("LC_CTYPE"); + if (val == 0 && lc_all && *lc_all) + { + setlocale (LC_CTYPE, lc_all); + locale_setblanks (); + locale_mb_cur_max = MB_CUR_MAX; + locale_utf8locale = locale_isutf8 (lc_all); + +# if defined (HANDLE_MULTIBYTE) + locale_shiftstates = mblen ((char *)NULL, 0); +# else + local_shiftstates = 0; +# endif + + u32reset (); + } +# endif + +# if defined (LC_COLLATE) + val = get_string_value ("LC_COLLATE"); + if (val == 0 && lc_all && *lc_all) + setlocale (LC_COLLATE, lc_all); +# endif /* LC_COLLATE */ + +# if defined (LC_MESSAGES) + val = get_string_value ("LC_MESSAGES"); + if (val == 0 && lc_all && *lc_all) + setlocale (LC_MESSAGES, lc_all); +# endif /* LC_MESSAGES */ + +# if defined (LC_NUMERIC) + val = get_string_value ("LC_NUMERIC"); + if (val == 0 && lc_all && *lc_all) + setlocale (LC_NUMERIC, lc_all); +# endif /* LC_NUMERIC */ + +# if defined (LC_TIME) + val = get_string_value ("LC_TIME"); + if (val == 0 && lc_all && *lc_all) + setlocale (LC_TIME, lc_all); +# endif /* LC_TIME */ + +#endif /* HAVE_SETLOCALE */ + + val = get_string_value ("TEXTDOMAIN"); + if (val && *val) + { + FREE (default_domain); + default_domain = savestring (val); + if (default_dir && *default_dir) + bindtextdomain (default_domain, default_dir); + } + + val = get_string_value ("TEXTDOMAINDIR"); + if (val && *val) + { + FREE (default_dir); + default_dir = savestring (val); + if (default_domain && *default_domain) + bindtextdomain (default_domain, default_dir); + } +} + +/* Set one of the locale categories (specified by VAR) to VALUE. Returns 1 + if successful, 0 otherwise. */ +int +set_locale_var (var, value) + char *var, *value; +{ + int r; + char *x; + + x = ""; + errno = 0; + if (var[0] == 'T' && var[10] == 0) /* TEXTDOMAIN */ + { + FREE (default_domain); + default_domain = value ? savestring (value) : (char *)NULL; + if (default_dir && *default_dir) + bindtextdomain (default_domain, default_dir); + return (1); + } + else if (var[0] == 'T') /* TEXTDOMAINDIR */ + { + FREE (default_dir); + default_dir = value ? savestring (value) : (char *)NULL; + if (default_domain && *default_domain) + bindtextdomain (default_domain, default_dir); + return (1); + } + + /* var[0] == 'L' && var[1] == 'C' && var[2] == '_' */ + + else if (var[3] == 'A') /* LC_ALL */ + { + FREE (lc_all); + if (value) + lc_all = savestring (value); + else + { + lc_all = (char *)xmalloc (1); + lc_all[0] = '\0'; + } +#if defined (HAVE_SETLOCALE) + r = *lc_all ? ((x = setlocale (LC_ALL, lc_all)) != 0) : reset_locale_vars (); + if (x == 0) + { + if (errno == 0) + internal_warning(_("setlocale: LC_ALL: cannot change locale (%s)"), lc_all); + else + internal_warning(_("setlocale: LC_ALL: cannot change locale (%s): %s"), lc_all, strerror (errno)); + } + locale_setblanks (); + locale_mb_cur_max = MB_CUR_MAX; + /* if LC_ALL == "", reset_locale_vars has already called this */ + if (*lc_all && x) + locale_utf8locale = locale_isutf8 (lc_all); +# if defined (HANDLE_MULTIBYTE) + locale_shiftstates = mblen ((char *)NULL, 0); +# else + local_shiftstates = 0; +# endif + u32reset (); + return r; +#else + return (1); +#endif + } + +#if defined (HAVE_SETLOCALE) + else if (var[3] == 'C' && var[4] == 'T') /* LC_CTYPE */ + { +# if defined (LC_CTYPE) + if (lc_all == 0 || *lc_all == '\0') + { + x = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE")); + locale_setblanks (); + locale_mb_cur_max = MB_CUR_MAX; + /* if setlocale() returns NULL, the locale is not changed */ + if (x) + locale_utf8locale = locale_isutf8 (x); +#if defined (HANDLE_MULTIBYTE) + locale_shiftstates = mblen ((char *)NULL, 0); +#else + local_shiftstates = 0; +#endif + u32reset (); + } +# endif + } + else if (var[3] == 'C' && var[4] == 'O') /* LC_COLLATE */ + { +# if defined (LC_COLLATE) + if (lc_all == 0 || *lc_all == '\0') + x = setlocale (LC_COLLATE, get_locale_var ("LC_COLLATE")); +# endif /* LC_COLLATE */ + } + else if (var[3] == 'M' && var[4] == 'E') /* LC_MESSAGES */ + { +# if defined (LC_MESSAGES) + if (lc_all == 0 || *lc_all == '\0') + x = setlocale (LC_MESSAGES, get_locale_var ("LC_MESSAGES")); +# endif /* LC_MESSAGES */ + } + else if (var[3] == 'N' && var[4] == 'U') /* LC_NUMERIC */ + { +# if defined (LC_NUMERIC) + if (lc_all == 0 || *lc_all == '\0') + x = setlocale (LC_NUMERIC, get_locale_var ("LC_NUMERIC")); +# endif /* LC_NUMERIC */ + } + else if (var[3] == 'T' && var[4] == 'I') /* LC_TIME */ + { +# if defined (LC_TIME) + if (lc_all == 0 || *lc_all == '\0') + x = setlocale (LC_TIME, get_locale_var ("LC_TIME")); +# endif /* LC_TIME */ + } +#endif /* HAVE_SETLOCALE */ + + if (x == 0) + { + if (errno == 0) + internal_warning(_("setlocale: %s: cannot change locale (%s)"), var, get_locale_var (var)); + else + internal_warning(_("setlocale: %s: cannot change locale (%s): %s"), var, get_locale_var (var), strerror (errno)); + } + + return (x != 0); +} + +/* Called when LANG is assigned a value. Tracks value in `lang'. Calls + reset_locale_vars() to reset any default values if LC_ALL is unset or + null. */ +int +set_lang (var, value) + char *var, *value; +{ + FREE (lang); + if (value) + lang = savestring (value); + else + { + lang = (char *)xmalloc (1); + lang[0] = '\0'; + } + + return ((lc_all == 0 || *lc_all == 0) ? reset_locale_vars () : 0); +} + +/* Set default values for LANG and LC_ALL. Default values for all other + locale-related variables depend on these. */ +void +set_default_lang () +{ + char *v; + + v = get_string_value ("LC_ALL"); + set_locale_var ("LC_ALL", v); + + v = get_string_value ("LANG"); + set_lang ("LANG", v); +} + +/* Get the value of one of the locale variables (LC_MESSAGES, LC_CTYPE). + The precedence is as POSIX.2 specifies: LC_ALL has precedence over + the specific locale variables, and LANG, if set, is used as the default. */ +char * +get_locale_var (var) + char *var; +{ + char *locale; + + locale = lc_all; + + if (locale == 0 || *locale == 0) + locale = get_string_value (var); /* XXX - no mem leak */ + if (locale == 0 || *locale == 0) + locale = lang; + if (locale == 0 || *locale == 0) +#if 0 + locale = default_locale; /* system-dependent; not really portable. should it be "C"? */ +#else + locale = ""; +#endif + return (locale); +} + +/* Called to reset all of the locale variables to their appropriate values + if (and only if) LC_ALL has not been assigned a value. DO NOT CALL THIS + IF LC_ALL HAS BEEN ASSIGNED A VALUE. */ +static int +reset_locale_vars () +{ + char *t, *x; +#if defined (HAVE_SETLOCALE) + if (lang == 0 || *lang == '\0') + maybe_make_export_env (); /* trust that this will change environment for setlocale */ + if (setlocale (LC_ALL, lang ? lang : "") == 0) + return 0; + + x = 0; +# if defined (LC_CTYPE) + x = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE")); +# endif +# if defined (LC_COLLATE) + t = setlocale (LC_COLLATE, get_locale_var ("LC_COLLATE")); +# endif +# if defined (LC_MESSAGES) + t = setlocale (LC_MESSAGES, get_locale_var ("LC_MESSAGES")); +# endif +# if defined (LC_NUMERIC) + t = setlocale (LC_NUMERIC, get_locale_var ("LC_NUMERIC")); +# endif +# if defined (LC_TIME) + t = setlocale (LC_TIME, get_locale_var ("LC_TIME")); +# endif + + locale_setblanks (); + locale_mb_cur_max = MB_CUR_MAX; + if (x) + locale_utf8locale = locale_isutf8 (x); +# if defined (HANDLE_MULTIBYTE) + locale_shiftstates = mblen ((char *)NULL, 0); +# else + local_shiftstates = 0; +# endif + u32reset (); +#endif + return 1; +} + +/* Translate the contents of STRING, a $"..." quoted string, according + to the current locale. In the `C' or `POSIX' locale, or if gettext() + is not available, the passed string is returned unchanged. The + length of the translated string is returned in LENP, if non-null. */ +char * +localetrans (string, len, lenp) + char *string; + int len, *lenp; +{ + char *locale, *t; + char *translated; + int tlen; + + /* Don't try to translate null strings. */ + if (string == 0 || *string == 0) + { + if (lenp) + *lenp = 0; + return ((char *)NULL); + } + + locale = get_locale_var ("LC_MESSAGES"); + + /* If we don't have setlocale() or the current locale is `C' or `POSIX', + just return the string. If we don't have gettext(), there's no use + doing anything else. */ + if (locale == 0 || locale[0] == '\0' || + (locale[0] == 'C' && locale[1] == '\0') || STREQ (locale, "POSIX")) + { + t = (char *)xmalloc (len + 1); + strcpy (t, string); + if (lenp) + *lenp = len; + return (t); + } + + /* Now try to translate it. */ + if (default_domain && *default_domain) + translated = dgettext (default_domain, string); + else + translated = string; + + if (translated == string) /* gettext returns its argument if untranslatable */ + { + t = (char *)xmalloc (len + 1); + strcpy (t, string); + if (lenp) + *lenp = len; + } + else + { + tlen = strlen (translated); + t = (char *)xmalloc (tlen + 1); + strcpy (t, translated); + if (lenp) + *lenp = tlen; + } + return (t); +} + +/* Change a bash string into a string suitable for inclusion in a `po' file. + This backslash-escapes `"' and `\' and changes newlines into \\\n"\n". */ +char * +mk_msgstr (string, foundnlp) + char *string; + int *foundnlp; +{ + register int c, len; + char *result, *r, *s; + + for (len = 0, s = string; s && *s; s++) + { + len++; + if (*s == '"' || *s == '\\') + len++; + else if (*s == '\n') + len += 5; + } + + r = result = (char *)xmalloc (len + 3); + *r++ = '"'; + + for (s = string; s && (c = *s); s++) + { + if (c == '\n') /* -> \n"" */ + { + *r++ = '\\'; + *r++ = 'n'; + *r++ = '"'; + *r++ = '\n'; + *r++ = '"'; + if (foundnlp) + *foundnlp = 1; + continue; + } + if (c == '"' || c == '\\') + *r++ = '\\'; + *r++ = c; + } + + *r++ = '"'; + *r++ = '\0'; + + return result; +} + +/* $"..." -- Translate the portion of STRING between START and END + according to current locale using gettext (if available) and return + the result. The caller will take care of leaving the quotes intact. + The string will be left without the leading `$' by the caller. + If translation is performed, the translated string will be double-quoted + by the caller. The length of the translated string is returned in LENP, + if non-null. */ +char * +localeexpand (string, start, end, lineno, lenp) + char *string; + int start, end, lineno, *lenp; +{ + int len, tlen, foundnl; + char *temp, *t, *t2; + + temp = (char *)xmalloc (end - start + 1); + for (tlen = 0, len = start; len < end; ) + temp[tlen++] = string[len++]; + temp[tlen] = '\0'; + + /* If we're just dumping translatable strings, don't do anything with the + string itself, but if we're dumping in `po' file format, convert it into + a form more palatable to gettext(3) and friends by quoting `"' and `\' + with backslashes and converting into `\n""'. If we find a + newline in TEMP, we first output a `msgid ""' line and then the + translated string; otherwise we output the `msgid' and translated + string all on one line. */ + if (dump_translatable_strings) + { + if (dump_po_strings) + { + foundnl = 0; + t = mk_msgstr (temp, &foundnl); + t2 = foundnl ? "\"\"\n" : ""; + + printf ("#: %s:%d\nmsgid %s%s\nmsgstr \"\"\n", + yy_input_name (), lineno, t2, t); + free (t); + } + else + printf ("\"%s\"\n", temp); + + if (lenp) + *lenp = tlen; + return (temp); + } + else if (*temp) + { + t = localetrans (temp, tlen, &len); + free (temp); + if (lenp) + *lenp = len; + return (t); + } + else + { + if (lenp) + *lenp = 0; + return (temp); + } +} + +/* Set every character in the character class to be a shell break + character for the lexical analyzer when the locale changes. */ +static void +locale_setblanks () +{ + int x; + + for (x = 0; x < sh_syntabsiz; x++) + { + if (isblank ((unsigned char)x)) + sh_syntaxtab[x] |= CSHBRK|CBLANK; + else if (member (x, shell_break_chars)) + { + sh_syntaxtab[x] |= CSHBRK; + sh_syntaxtab[x] &= ~CBLANK; + } + else + sh_syntaxtab[x] &= ~(CSHBRK|CBLANK); + } +} + +/* Parse a locale specification + language[_territory][.codeset][@modifier][+special][,[sponsor][_revision]] + and return TRUE if the codeset is UTF-8 or utf8 */ +static int +locale_isutf8 (lspec) + char *lspec; +{ + char *cp, *encoding; + +#if HAVE_LANGINFO_CODESET + cp = nl_langinfo (CODESET); + return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8")); +#elif HAVE_LOCALE_CHARSET + cp = locale_charset (); + return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8")); +#else + /* Take a shot */ + for (cp = lspec; *cp && *cp != '@' && *cp != '+' && *cp != ','; cp++) + { + if (*cp == '.') + { + for (encoding = ++cp; *cp && *cp != '@' && *cp != '+' && *cp != ','; cp++) + ; + /* The encoding (codeset) is the substring between encoding and cp */ + if ((cp - encoding == 5 && STREQN (encoding, "UTF-8", 5)) || + (cp - encoding == 4 && STREQN (encoding, "utf8", 4))) + return 1; + else + return 0; + } + } + return 0; +#endif +} + +#if defined (HAVE_LOCALECONV) +int +locale_decpoint () +{ + struct lconv *lv; + + lv = localeconv (); + return (lv && lv->decimal_point && lv->decimal_point[0]) ? lv->decimal_point[0] : '.'; +} +#else +# undef locale_decpoint +int +locale_decpoint () +{ + return '.'; +} +#endif diff --git a/bash-5.1/m4/codeset.m4 b/bash-5.1/m4/codeset.m4 new file mode 100644 index 0000000..280f556 --- /dev/null +++ b/bash-5.1/m4/codeset.m4 @@ -0,0 +1,24 @@ +# codeset.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019 Free Software +dnl Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[char* cs = nl_langinfo(CODESET); return !cs;]])], + [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 +]) diff --git a/bash-5.1/m4/extern-inline.m4 b/bash-5.1/m4/extern-inline.m4 new file mode 100644 index 0000000..ec9f221 --- /dev/null +++ b/bash-5.1/m4/extern-inline.m4 @@ -0,0 +1,114 @@ +dnl 'extern inline' a la ISO C99. + +dnl Copyright 2012-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_EXTERN_INLINE], +[ + AH_VERBATIM([extern_inline], +[/* Please see the Gnulib manual for how to use these macros. + + Suppress extern inline with HP-UX cc, as it appears to be broken; see + . + + Suppress extern inline with Sun C in standards-conformance mode, as it + mishandles inline functions that call each other. E.g., for 'inline void f + (void) { } inline void g (void) { f (); }', c99 incorrectly complains + 'reference to static identifier "f" in extern inline function'. + This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. + + Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) + on configurations that mistakenly use 'static inline' to implement + functions or macros in standard C headers like . For example, + if isdigit is mistakenly implemented via a static inline function, + a program containing an extern inline function that calls isdigit + may not work since the C standard prohibits extern inline functions + from calling static functions (ISO C 99 section 6.7.4.(3). + This bug is known to occur on: + + OS X 10.8 and earlier; see: + https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html + + DragonFly; see + http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log + + FreeBSD; see: + https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html + + OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and + for clang but remains for g++; see . + Assume DragonFly and FreeBSD will be similar. + + GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 + inline semantics, unless -fgnu89-inline is used. It defines a macro + __GNUC_STDC_INLINE__ to indicate this situation or a macro + __GNUC_GNU_INLINE__ to indicate the opposite situation. + GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline + semantics but warns, unless -fgnu89-inline is used: + warning: C99 inline functions are not supported; using GNU89 + warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute + It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. + */ +#if (((defined __APPLE__ && defined __MACH__) \ + || defined __DragonFly__ || defined __FreeBSD__) \ + && (defined __header_inline \ + ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ + && ! defined __clang__) \ + : ((! defined _DONT_USE_CTYPE_INLINE_ \ + && (defined __GNUC__ || defined __cplusplus)) \ + || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ + && defined __GNUC__ && ! defined __cplusplus)))) +# define _GL_EXTERN_INLINE_STDHEADER_BUG +#endif +#if ((__GNUC__ \ + ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + : (199901L <= __STDC_VERSION__ \ + && !defined __HP_cc \ + && !defined __PGI \ + && !(defined __SUNPRO_C && __STDC__))) \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) +# define _GL_INLINE inline +# define _GL_EXTERN_INLINE extern inline +# define _GL_EXTERN_INLINE_IN_USE +#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) +# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ + /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ +# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) +# else +# define _GL_INLINE extern inline +# endif +# define _GL_EXTERN_INLINE extern +# define _GL_EXTERN_INLINE_IN_USE +#else +# define _GL_INLINE static _GL_UNUSED +# define _GL_EXTERN_INLINE static _GL_UNUSED +#endif + +/* In GCC 4.6 (inclusive) to 5.1 (exclusive), + suppress bogus "no previous prototype for 'FOO'" + and "no previous declaration for 'FOO'" diagnostics, + when FOO is an inline function in the header; see + and + . */ +#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__ +# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ +# define _GL_INLINE_HEADER_CONST_PRAGMA +# else +# define _GL_INLINE_HEADER_CONST_PRAGMA \ + _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +# endif +# define _GL_INLINE_HEADER_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ + _GL_INLINE_HEADER_CONST_PRAGMA +# define _GL_INLINE_HEADER_END \ + _Pragma ("GCC diagnostic pop") +#else +# define _GL_INLINE_HEADER_BEGIN +# define _GL_INLINE_HEADER_END +#endif]) +]) diff --git a/bash-5.1/m4/fcntl-o.m4 b/bash-5.1/m4/fcntl-o.m4 new file mode 100644 index 0000000..6ab3387 --- /dev/null +++ b/bash-5.1/m4/fcntl-o.m4 @@ -0,0 +1,139 @@ +# fcntl-o.m4 serial 6 +dnl Copyright (C) 2006, 2009-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Written by Paul Eggert. + +AC_PREREQ([2.60]) + +# Test whether the flags O_NOATIME and O_NOFOLLOW actually work. +# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. +# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. +AC_DEFUN([gl_FCNTL_O_FLAGS], +[ + dnl Persuade glibc to define O_NOATIME and O_NOFOLLOW. + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CHECK_HEADERS_ONCE([unistd.h]) + AC_CHECK_FUNCS_ONCE([symlink]) + AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + #if HAVE_UNISTD_H + # include + #else /* on Windows with MSVC */ + # include + # include + # defined sleep(n) _sleep ((n) * 1000) + #endif + #include + #ifndef O_NOATIME + #define O_NOATIME 0 + #endif + #ifndef O_NOFOLLOW + #define O_NOFOLLOW 0 + #endif + static int const constants[] = + { + O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, + O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY + }; + ]], + [[ + int result = !constants; + #if HAVE_SYMLINK + { + static char const sym[] = "conftest.sym"; + if (symlink ("/dev/null", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + if (unlink (sym) != 0 || symlink (".", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_RDONLY | O_NOFOLLOW); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + unlink (sym); + } + #endif + { + static char const file[] = "confdefs.h"; + int fd = open (file, O_RDONLY | O_NOATIME); + if (fd < 0) + result |= 8; + else + { + struct stat st0; + if (fstat (fd, &st0) != 0) + result |= 16; + else + { + char c; + sleep (1); + if (read (fd, &c, 1) != 1) + result |= 24; + else + { + if (close (fd) != 0) + result |= 32; + else + { + struct stat st1; + if (stat (file, &st1) != 0) + result |= 40; + else + if (st0.st_atime != st1.st_atime) + result |= 64; + } + } + } + } + } + return result;]])], + [gl_cv_header_working_fcntl_h=yes], + [case $? in #( + 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( + 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( + 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( + *) gl_cv_header_working_fcntl_h='no';; + esac], + [case "$host_os" in + # Guess 'no' on native Windows. + mingw*) gl_cv_header_working_fcntl_h='no' ;; + *) gl_cv_header_working_fcntl_h=cross-compiling ;; + esac + ]) + ]) + + case $gl_cv_header_working_fcntl_h in #( + *O_NOATIME* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val], + [Define to 1 if O_NOATIME works.]) + + case $gl_cv_header_working_fcntl_h in #( + *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val], + [Define to 1 if O_NOFOLLOW works.]) +]) diff --git a/bash-5.1/m4/gettext.m4 b/bash-5.1/m4/gettext.m4 new file mode 100644 index 0000000..fec3804 --- /dev/null +++ b/bash-5.1/m4/gettext.m4 @@ -0,0 +1,419 @@ +# gettext.m4 serial 69 (gettext-0.19.9) +dnl Copyright (C) 1995-2014, 2016, 2018-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file 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 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-2006, 2008-2010. + +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(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], + [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) + 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], + ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), + [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + 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 { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "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 not documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl Add a version number to the cache macros. + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + 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. + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#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 +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + ]])], + [eval "$gt_func_gnugettext_libc=yes"], + [eval "$gt_func_gnugettext_libc=no"])]) + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "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_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_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + ]])], + [eval "$gt_func_gnugettext_libintl=yes"], + [eval "$gt_func_gnugettext_libintl=no"]) + dnl Now see whether libintl exists and depends on libiconv. + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + ]])], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_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 { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "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 $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + 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 -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + 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 { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "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 { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "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. + INTLOBJS= + 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 gt_NEEDS_INIT ensures that the gt_needs variable is initialized. +m4_define([gt_NEEDS_INIT], +[ + m4_divert_text([DEFAULTS], [gt_needs=]) + m4_define([gt_NEEDS_INIT], []) +]) + + +dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) +AC_DEFUN([AM_GNU_GETTEXT_NEED], +[ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) + + +dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], []) diff --git a/bash-5.1/m4/glibc2.m4 b/bash-5.1/m4/glibc2.m4 new file mode 100644 index 0000000..17a7004 --- /dev/null +++ b/bash-5.1/m4/glibc2.m4 @@ -0,0 +1,31 @@ +# glibc2.m4 serial 3 +dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2019 Free Software Foundation, +dnl Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.0 or newer. +# From Bruno Haible. + +AC_DEFUN([gt_GLIBC2], + [ + AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer], + [ac_cv_gnu_library_2], + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) && !defined __UCLIBC__ + Lucky GNU user + #endif +#endif + ], + [ac_cv_gnu_library_2=yes], + [ac_cv_gnu_library_2=no]) + ] + ) + AC_SUBST([GLIBC2]) + GLIBC2="$ac_cv_gnu_library_2" + ] +) diff --git a/bash-5.1/m4/glibc21.m4 b/bash-5.1/m4/glibc21.m4 new file mode 100644 index 0000000..0ab0f23 --- /dev/null +++ b/bash-5.1/m4/glibc21.m4 @@ -0,0 +1,34 @@ +# glibc21.m4 serial 5 +dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2019 Free Software Foundation, +dnl Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.1 or newer, or uClibc. +# From Bruno Haible. + +AC_DEFUN([gl_GLIBC21], + [ + AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc], + [ac_cv_gnu_library_2_1], + [AC_EGREP_CPP([Lucky], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif +#ifdef __UCLIBC__ + Lucky user +#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" + ] +) diff --git a/bash-5.1/m4/host-cpu-c-abi.m4 b/bash-5.1/m4/host-cpu-c-abi.m4 new file mode 100644 index 0000000..4407296 --- /dev/null +++ b/bash-5.1/m4/host-cpu-c-abi.m4 @@ -0,0 +1,644 @@ +# host-cpu-c-abi.m4 serial 11 +dnl Copyright (C) 2002-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible and Sam Steingold. + +dnl Sets the HOST_CPU variable to the canonical name of the CPU. +dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its +dnl C language ABI (application binary interface). +dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in +dnl config.h. +dnl +dnl This canonical name can be used to select a particular assembly language +dnl source file that will interoperate with C code on the given host. +dnl +dnl For example: +dnl * 'i386' and 'sparc' are different canonical names, because code for i386 +dnl will not run on SPARC CPUs and vice versa. They have different +dnl instruction sets. +dnl * 'sparc' and 'sparc64' are different canonical names, because code for +dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code +dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit +dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit +dnl mode, but not both. +dnl * 'mips' and 'mipsn32' are different canonical names, because they use +dnl different argument passing and return conventions for C functions, and +dnl although the instruction set of 'mips' is a large subset of the +dnl instruction set of 'mipsn32'. +dnl * 'mipsn32' and 'mips64' are different canonical names, because they use +dnl different sizes for the C types like 'int' and 'void *', and although +dnl the instruction sets of 'mipsn32' and 'mips64' are the same. +dnl * The same canonical name is used for different endiannesses. You can +dnl determine the endianness through preprocessor symbols: +dnl - 'arm': test __ARMEL__. +dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL. +dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN. +dnl * The same name 'i386' is used for CPUs of type i386, i486, i586 +dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because +dnl - Instructions that do not exist on all of these CPUs (cmpxchg, +dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your +dnl assembly language source files use such instructions, you will +dnl need to make the distinction. +dnl - Speed of execution of the common instruction set is reasonable across +dnl the entire family of CPUs. If you have assembly language source files +dnl that are optimized for particular CPU types (like GNU gmp has), you +dnl will need to make the distinction. +dnl See . +AC_DEFUN([gl_HOST_CPU_C_ABI], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_C_ASM]) + AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], + [case "$host_cpu" in + +changequote(,)dnl + i[4567]86 ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=x86_64-x32], + [gl_cv_host_cpu_c_abi=x86_64])], + [gl_cv_host_cpu_c_abi=i386]) + ;; + +changequote(,)dnl + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __aarch64__ + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=arm64-ilp32], + [gl_cv_host_cpu_c_abi=arm64])], + [# Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ]) + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __LP64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=hppa64], + [gl_cv_host_cpu_c_abi=hppa]) + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=ia64-ilp32], + [gl_cv_host_cpu_c_abi=ia64]) + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mips64], + [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mipsn32], + [gl_cv_host_cpu_c_abi=mips])]) + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __powerpc64__ || defined _ARCH_PPC64 + int ok; + #else + error fail + #endif + ]])], + [# On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=powerpc64-elfv2], + [gl_cv_host_cpu_c_abi=powerpc64]) + ], + [gl_cv_host_cpu_c_abi=powerpc]) + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + ]])], + [cpu=riscv64], + [cpu=riscv32]) + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [main_abi=lp64], + [main_abi=ilp32]) + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + ]])], + [float_abi=d], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + ]])], + [float_abi=f], + [float_abi='']) + ]) + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=s390x], + [gl_cv_host_cpu_c_abi=s390]) + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=sparc64], + [gl_cv_host_cpu_c_abi=sparc]) + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ]) + + dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + AC_SUBST([HOST_CPU]) + AC_SUBST([HOST_CPU_C_ABI]) + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h < +#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_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#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_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ + dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, + dnl Solaris 10. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + ]], + [[int result = 0; + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_CONST char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + { + /* Try standardized names. */ + iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); + /* Try IRIX, OSF/1 names. */ + iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); + /* Try AIX names. */ + iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); + /* Try HP-UX names. */ + iconv_t cd4 = iconv_open ("utf8", "eucJP"); + if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) + && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) + result |= 16; + if (cd1 != (iconv_t)(-1)) + iconv_close (cd1); + if (cd2 != (iconv_t)(-1)) + iconv_close (cd2); + if (cd3 != (iconv_t)(-1)) + iconv_close (cd3); + if (cd4 != (iconv_t)(-1)) + iconv_close (cd4); + } + return result; +]])], + [am_cv_func_iconv_works=yes], , + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ]) + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + AC_DEFINE([HAVE_ICONV], [1], + [Define if you have the iconv() function and it works.]) + 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]) +]) + +dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to +dnl avoid warnings like +dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". +dnl This is tricky because of the way 'aclocal' is implemented: +dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. +dnl Otherwise aclocal's initial scan pass would miss the macro definition. +dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. +dnl Otherwise aclocal would emit many "Use of uninitialized value $1" +dnl warnings. +m4_define([gl_iconv_AC_DEFUN], + m4_version_prereq([2.64], + [[AC_DEFUN_ONCE( + [$1], [$2])]], + [m4_ifdef([gl_00GNULIB], + [[AC_DEFUN_ONCE( + [$1], [$2])]], + [[AC_DEFUN( + [$1], [$2])]])])) +gl_iconv_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_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(_MSC_VER) || 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([ + $am_cv_proto_iconv]) + else + dnl When compiling GNU libiconv on a system that does not have iconv yet, + dnl pick the POSIX compliant declaration without 'const'. + am_cv_proto_iconv_arg1="" + fi + AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], + [Define as const if the declaration of iconv() needs const.]) + dnl Also substitute ICONV_CONST in the gnulib generated . + m4_ifdef([gl_ICONV_H_DEFAULTS], + [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + if test -n "$am_cv_proto_iconv_arg1"; then + ICONV_CONST="const" + fi + ]) +]) diff --git a/bash-5.1/m4/intdiv0.m4 b/bash-5.1/m4/intdiv0.m4 new file mode 100644 index 0000000..40dd43b --- /dev/null +++ b/bash-5.1/m4/intdiv0.m4 @@ -0,0 +1,87 @@ +# intdiv0.m4 serial 6 (gettext-0.18.2) +dnl Copyright (C) 2002, 2007-2008, 2010-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +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, + [ + gt_cv_int_divbyzero_sigfpe= +changequote(,)dnl + case "$host_os" in + macos* | darwin[6-9]* | darwin[1-9][0-9]*) + # On Mac OS X 10.2 or newer, just assume the same as when cross- + # compiling. If we were to perform the real test, 1 Crash Report + # dialog window would pop up. + case "$host_cpu" in + i[34567]86 | x86_64) + gt_cv_int_divbyzero_sigfpe="guessing yes" ;; + esac + ;; + esac +changequote([,])dnl + if test -z "$gt_cv_int_divbyzero_sigfpe"; then + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#include + +static void +sigfpe_handler (int sig) +{ + /* 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 xnan; + +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; + xnan = y / y; + exit (2); +} +]])], + [gt_cv_int_divbyzero_sigfpe=yes], + [gt_cv_int_divbyzero_sigfpe=no], + [ + # Guess based on the CPU. +changequote(,)dnl + case "$host_cpu" in + alpha* | i[34567]86 | x86_64 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac +changequote([,])dnl + ]) + fi + ]) + 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.]) +]) diff --git a/bash-5.1/m4/intl-thread-locale.m4 b/bash-5.1/m4/intl-thread-locale.m4 new file mode 100644 index 0000000..3ecba86 --- /dev/null +++ b/bash-5.1/m4/intl-thread-locale.m4 @@ -0,0 +1,183 @@ +# intl-thread-locale.m4 serial 4 +dnl Copyright (C) 2015-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file 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 is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Check how to retrieve the name of a per-thread locale (POSIX locale_t). +dnl Sets gt_nameless_locales. +AC_DEFUN([gt_INTL_THREAD_LOCALE_NAME], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + dnl Persuade Solaris to define 'locale_t'. + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + + dnl Test whether uselocale() exists and works at all. + gt_FUNC_USELOCALE + + dnl On OpenBSD >= 6.2, the locale_t type and the uselocale(), newlocale(), + dnl duplocale(), freelocale() functions exist but are effectively useless, + dnl because the locale_t value depends only on the LC_CTYPE category of the + dnl locale and furthermore contains only one bit of information (it + dnl distinguishes the "C" locale from the *.UTF-8 locales). See + dnl . + dnl In the setlocale() implementation they have thought about the programs + dnl that use the API ("Even though only LC_CTYPE has any effect in the + dnl OpenBSD base system, store complete information about the global locale, + dnl such that third-party software can access it"), but for uselocale() + dnl they did not think about the programs. + dnl In this situation, even the HAVE_NAMELESS_LOCALES support does not work. + dnl So, define HAVE_FAKE_LOCALES and disable all locale_t support. + case "$gt_cv_func_uselocale_works" in + *yes) + AC_CHECK_HEADERS_ONCE([xlocale.h]) + AC_CACHE_CHECK([for fake locale system (OpenBSD)], + [gt_cv_locale_fake], + [AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#if HAVE_XLOCALE_H +# include +#endif +int main () +{ + locale_t loc1, loc2; + if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL) return 1; + if (setlocale (LC_ALL, "fr_FR.UTF-8") == NULL) return 1; + loc1 = newlocale (LC_ALL_MASK, "de_DE.UTF-8", (locale_t)0); + loc2 = newlocale (LC_ALL_MASK, "fr_FR.UTF-8", (locale_t)0); + return !(loc1 == loc2); +}]])], + [gt_cv_locale_fake=yes], + [gt_cv_locale_fake=no], + [dnl Guess the locale system is fake only on OpenBSD. + case "$host_os" in + openbsd*) gt_cv_locale_fake="guessing yes" ;; + *) gt_cv_locale_fake="guessing no" ;; + esac + ]) + ]) + ;; + *) gt_cv_locale_fake=no ;; + esac + case "$gt_cv_locale_fake" in + *yes) + AC_DEFINE([HAVE_FAKE_LOCALES], [1], + [Define if the locale_t type contains insufficient information, as on OpenBSD.]) + ;; + esac + + case "$gt_cv_func_uselocale_works" in + *yes) + AC_CACHE_CHECK([for Solaris 11.4 locale system], + [gt_cv_locale_solaris114], + [case "$host_os" in + solaris*) + dnl Test whether defines locale_t as a typedef of + dnl 'struct _LC_locale_t **' (whereas Illumos defines it as a + dnl typedef of 'struct _locale *'). + dnl Another possible test would be to include + dnl and test whether it defines the _LC_core_data_locale_t type. + dnl This type was added in Solaris 11.4. + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #include + struct _LC_locale_t *x; + locale_t y; + ]], + [[*y = x;]])], + [gt_cv_locale_solaris114=yes], + [gt_cv_locale_solaris114=no]) + ;; + *) gt_cv_locale_solaris114=no ;; + esac + ]) + ;; + *) gt_cv_locale_solaris114=no ;; + esac + if test $gt_cv_locale_solaris114 = yes; then + AC_DEFINE([HAVE_SOLARIS114_LOCALES], [1], + [Define if the locale_t type is as on Solaris 11.4.]) + fi + + dnl Solaris 12 will maybe provide getlocalename_l. If it does, it will + dnl improve the implementation of gl_locale_name_thread(), by removing + dnl the use of undocumented structures. + case "$gt_cv_func_uselocale_works" in + *yes) + AC_CHECK_FUNCS([getlocalename_l]) + ;; + esac + + dnl This code is for future use, in case we some day have to port to a + dnl platform where the locale_t type does not provide access to the name of + dnl each locale category. This code has the drawback that it requires the + dnl gnulib overrides of 'newlocale', 'duplocale', 'freelocale', which is a + dnl problem for GNU libunistring. Therefore try hard to avoid enabling this + dnl code! + gt_nameless_locales=no + if false; then + gt_nameless_locales=yes + AC_DEFINE([HAVE_NAMELESS_LOCALES], [1], + [Define if the locale_t type does not contain the name of each locale category.]) + fi +]) + +dnl Tests whether uselocale() exists and is usable. +dnl Sets gt_cv_func_uselocale_works. Defines HAVE_WORKING_USELOCALE. +AC_DEFUN([gt_FUNC_USELOCALE], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + dnl Persuade Solaris to define 'locale_t'. + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + + AC_CHECK_FUNCS_ONCE([uselocale]) + + dnl On AIX 7.2, the uselocale() function is not documented and leads to + dnl crashes in subsequent setlocale() invocations. + if test $ac_cv_func_uselocale = yes; then + AC_CHECK_HEADERS_ONCE([xlocale.h]) + AC_CACHE_CHECK([whether uselocale works], + [gt_cv_func_uselocale_works], + [AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#if HAVE_XLOCALE_H +# include +#endif +int main () +{ + uselocale (NULL); + setlocale (LC_ALL, "en_US.UTF-8"); + return 0; +}]])], + [gt_cv_func_uselocale_works=yes], + [gt_cv_func_uselocale_works=no], + [# Guess no on AIX, yes otherwise. + case "$host_os" in + aix*) gt_cv_func_uselocale_works="guessing no" ;; + *) gt_cv_func_uselocale_works="guessing yes" ;; + esac + ]) + ]) + else + gt_cv_func_uselocale_works=no + fi + case "$gt_cv_func_uselocale_works" in + *yes) + AC_DEFINE([HAVE_WORKING_USELOCALE], [1], + [Define if the uselocale function exists any may safely be called.]) + ;; + esac +]) diff --git a/bash-5.1/m4/intl.m4 b/bash-5.1/m4/intl.m4 new file mode 100644 index 0000000..b481c50 --- /dev/null +++ b/bash-5.1/m4/intl.m4 @@ -0,0 +1,312 @@ +# intl.m4 serial 34 (gettext-0.19.9) +dnl Copyright (C) 1995-2014, 2016-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file 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 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-2009. + +AC_PREREQ([2.60]) + +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([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([gt_GLIBC2])dnl + AC_REQUIRE([gl_VISIBILITY])dnl + AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl + AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl + AC_REQUIRE([gt_TYPE_WCHAR_T])dnl + AC_REQUIRE([gt_TYPE_WINT_T])dnl + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gt_TYPE_INTMAX_T]) + AC_REQUIRE([gt_PRINTF_POSIX]) + AC_REQUIRE([gl_GLIBC21])dnl + AC_REQUIRE([gl_XSIZE])dnl + AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl + AC_REQUIRE([gt_INTL_THREAD_LOCALE_NAME]) + AC_REQUIRE([gt_INTL_MACOSX])dnl + AC_REQUIRE([gl_EXTERN_INLINE])dnl + AC_REQUIRE([gt_GL_ATTRIBUTE])dnl + AC_REQUIRE([AC_C_FLEXIBLE_ARRAY_MEMBER])dnl + + dnl In projects that use gnulib, use gl_PROG_AR_RANLIB. + dnl The '][' hides this use from 'aclocal'. + m4_ifdef([g][l_PROG_AR_RANLIB], + [AC_REQUIRE([g][l_PROG_AR_RANLIB])], + [AC_REQUIRE([AC_PROG_RANLIB]) + dnl Use Automake-documented default values for AR and ARFLAGS, but prefer + dnl ${host}-ar over ar (useful for cross-compiling). + AC_CHECK_TOOL([AR], [ar], [ar]) + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + AC_SUBST([AR]) + AC_SUBST([ARFLAGS]) + ]) + + dnl Support for automake's --enable-silent-rules. + case "$enable_silent_rules" in + yes) INTL_DEFAULT_VERBOSITY=0;; + no) INTL_DEFAULT_VERBOSITY=1;; + *) INTL_DEFAULT_VERBOSITY=1;; + esac + AC_SUBST([INTL_DEFAULT_VERBOSITY]) + + AC_CHECK_TYPE([ptrdiff_t], , + [AC_DEFINE([ptrdiff_t], [long], + [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) + ]) + AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h]) + AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ + snprintf strnlen uselocale wcslen wcsnlen mbrtowc wcrtomb]) + + dnl Use the _snprintf function only if it is declared (because on NetBSD it + dnl is defined as a weak alias of snprintf; we prefer to use the latter). + AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include ]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + AC_CHECK_DECLS([getc_unlocked], , , [#include ]) + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + AC_SUBST([HAVE_POSIX_PRINTF]) + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + AC_SUBST([HAVE_ASPRINTF]) + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + AC_SUBST([HAVE_SNPRINTF]) + if test "$ac_cv_func_newlocale" = yes; then + HAVE_NEWLOCALE=1 + else + HAVE_NEWLOCALE=0 + fi + AC_SUBST([HAVE_NEWLOCALE]) + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + AC_SUBST([HAVE_WPRINTF]) + + AM_LANGINFO_CODESET + gt_LC_MESSAGES + + if test $gt_nameless_locales = yes; then + HAVE_NAMELESS_LOCALES=1 + else + HAVE_NAMELESS_LOCALES=0 + fi + AC_SUBST([HAVE_NAMELESS_LOCALES]) + + dnl Compilation on mingw and Cygwin needs special Makefile rules, because + dnl 1. when we install a shared library, we must arrange to export + dnl auxiliary pointer variables for every exported variable, + dnl 2. when we install a shared library and a static library simultaneously, + dnl the include file specifies __declspec(dllimport) and therefore we + dnl must arrange to define the auxiliary pointer variables for the + dnl exported variables _also_ in the static library. + if test "$enable_shared" = yes; then + case "$host_os" in + mingw* | cygwin*) is_woe32dll=yes ;; + *) is_woe32dll=no ;; + esac + else + is_woe32dll=no + fi + WOE32DLL=$is_woe32dll + AC_SUBST([WOE32DLL]) + + dnl On mingw and Cygwin, we can activate special Makefile rules which add + dnl version information to the shared libraries and executables. + case "$host_os" in + mingw* | cygwin*) is_woe32=yes ;; + *) is_woe32=no ;; + esac + WOE32=$is_woe32 + AC_SUBST([WOE32]) + if test $WOE32 = yes; then + dnl Check for a program that compiles Windows resource files. + AC_CHECK_TOOL([WINDRES], [windres]) + fi + + dnl Rename some macros and functions used for locking. + AH_BOTTOM([ +#define __libc_lock_t gl_lock_t +#define __libc_lock_define gl_lock_define +#define __libc_lock_define_initialized gl_lock_define_initialized +#define __libc_lock_init gl_lock_init +#define __libc_lock_lock gl_lock_lock +#define __libc_lock_unlock gl_lock_unlock +#define __libc_lock_recursive_t gl_recursive_lock_t +#define __libc_lock_define_recursive gl_recursive_lock_define +#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized +#define __libc_lock_init_recursive gl_recursive_lock_init +#define __libc_lock_lock_recursive gl_recursive_lock_lock +#define __libc_lock_unlock_recursive gl_recursive_lock_unlock +#define glthread_in_use libintl_thread_in_use +#define glthread_lock_init_func libintl_lock_init_func +#define glthread_lock_lock_func libintl_lock_lock_func +#define glthread_lock_unlock_func libintl_lock_unlock_func +#define glthread_lock_destroy_func libintl_lock_destroy_func +#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded +#define glthread_rwlock_init_func libintl_rwlock_init_func +#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded +#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func +#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded +#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func +#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded +#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func +#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded +#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func +#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded +#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func +#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded +#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func +#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded +#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func +#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded +#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func +#define glthread_once_func libintl_once_func +#define glthread_once_singlethreaded libintl_once_singlethreaded +#define glthread_once_multithreaded libintl_once_multithreaded +]) +]) + + +dnl Checks for the core files of the intl subdirectory: +dnl dcigettext.c +dnl eval-plural.h +dnl explodename.c +dnl finddomain.c +dnl gettextP.h +dnl gmo.h +dnl hash-string.h hash-string.c +dnl l10nflist.c +dnl libgnuintl.h.in (except the *printf stuff) +dnl loadinfo.h +dnl loadmsgcat.c +dnl localealias.c +dnl log.c +dnl plural-exp.h plural-exp.c +dnl plural.y +dnl Used by libglocale. +AC_DEFUN([gt_INTL_SUBDIR_CORE], +[ + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + AC_REQUIRE([gl_LOCK])dnl + + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]], + [[]])], + [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], + [Define to 1 if the compiler understands __builtin_expect.])]) + + AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ + stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \ + argz_next __fsetlocking]) + + dnl ADDED FOR BASH + AC_CHECK_FUNCS([localeconv]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include ]) + + AM_ICONV + + 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-2.7 for %define api.pure. + 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;; + 2.[7-9]* | [3-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 Copies _GL_UNUSED and _GL_ATTRIBUTE_PURE definitions from +dnl gnulib-common.m4 as a fallback, if the project isn't using Gnulib. +AC_DEFUN([gt_GL_ATTRIBUTE], [ + m4_ifndef([gl_[]COMMON], + AH_VERBATIM([gt_gl_attribute], +[/* Define as a marker that can be attached to declarations that might not + be used. This helps to reduce warnings, such as from + GCC -Wunused-parameter. */ +#ifndef _GL_UNUSED +# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _GL_UNUSED __attribute__ ((__unused__)) +# else +# define _GL_UNUSED +# endif +#endif + +/* The __pure__ attribute was added in gcc 2.96. */ +#ifndef _GL_ATTRIBUTE_PURE +# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define _GL_ATTRIBUTE_PURE /* empty */ +# endif +#endif +]))]) diff --git a/bash-5.1/m4/intlmacosx.m4 b/bash-5.1/m4/intlmacosx.m4 new file mode 100644 index 0000000..7a47427 --- /dev/null +++ b/bash-5.1/m4/intlmacosx.m4 @@ -0,0 +1,72 @@ +# intlmacosx.m4 serial 6 (gettext-0.19.9) +dnl Copyright (C) 2004-2014, 2016, 2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file 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 is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Checks for special options needed on Mac OS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in Mac OS X 10.4. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + [gt_cv_func_CFPreferencesCopyAppValue], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFPreferencesCopyAppValue(NULL, NULL)]])], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], + [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in Mac OS X 10.5. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFLocaleCopyCurrent();]])], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], + [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFLocaleCopyPreferredLanguages();]])], + [gt_cv_func_CFLocaleCopyPreferredLanguages=yes], + [gt_cv_func_CFLocaleCopyPreferredLanguages=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1], + [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ + || test $gt_cv_func_CFLocaleCopyCurrent = yes \ + || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) diff --git a/bash-5.1/m4/intmax.m4 b/bash-5.1/m4/intmax.m4 new file mode 100644 index 0000000..2f4b450 --- /dev/null +++ b/bash-5.1/m4/intmax.m4 @@ -0,0 +1,36 @@ +# intmax.m4 serial 6 (gettext-0.18.2) +dnl Copyright (C) 2002-2005, 2008-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether the system has the 'intmax_t' type, but don't attempt to +dnl find a replacement if it is lacking. + +AC_DEFUN([gt_TYPE_INTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#endif + ]], + [[intmax_t x = -1; + return !x;]])], + [gt_cv_c_intmax_t=yes], + [gt_cv_c_intmax_t=no])]) + if test $gt_cv_c_intmax_t = yes; then + AC_DEFINE([HAVE_INTMAX_T], [1], + [Define if you have the 'intmax_t' type in or .]) + fi +]) diff --git a/bash-5.1/m4/inttypes-pri.m4 b/bash-5.1/m4/inttypes-pri.m4 new file mode 100644 index 0000000..38fe118 --- /dev/null +++ b/bash-5.1/m4/inttypes-pri.m4 @@ -0,0 +1,42 @@ +# inttypes-pri.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1997-2002, 2006, 2008-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ([2.53]) + +# 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_CHECK_HEADERS([inttypes.h]) + if test $ac_cv_header_inttypes_h = yes; then + AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], + [gt_cv_inttypes_pri_broken], + [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#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.]) + PRI_MACROS_BROKEN=1 + else + PRI_MACROS_BROKEN=0 + fi + AC_SUBST([PRI_MACROS_BROKEN]) +]) diff --git a/bash-5.1/m4/inttypes.m4 b/bash-5.1/m4/inttypes.m4 new file mode 100644 index 0000000..c58a1be --- /dev/null +++ b/bash-5.1/m4/inttypes.m4 @@ -0,0 +1,159 @@ +# inttypes.m4 serial 27 +dnl Copyright (C) 2006-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Derek Price, Bruno Haible. +dnl Test whether is supported or must be substituted. + +AC_DEFUN([gl_INTTYPES_H], +[ + AC_REQUIRE([gl_INTTYPES_INCOMPLETE]) + gl_INTTYPES_PRI_SCN +]) + +AC_DEFUN_ONCE([gl_INTTYPES_INCOMPLETE], +[ + AC_REQUIRE([gl_STDINT_H]) + AC_CHECK_HEADERS_ONCE([inttypes.h]) + + dnl Override always, so that the portability warnings work. + AC_REQUIRE([gl_INTTYPES_H_DEFAULTS]) + gl_CHECK_NEXT_HEADERS([inttypes.h]) + + AC_REQUIRE([gl_MULTIARCH]) + + dnl Check for declarations of anything we want to poison if the + dnl corresponding gnulib module is not in use. + gl_WARN_ON_USE_PREPARE([[#include + ]], [imaxabs imaxdiv strtoimax strtoumax]) +]) + +# Ensure that the PRI* and SCN* macros are defined appropriately. +AC_DEFUN([gl_INTTYPES_PRI_SCN], +[ + AC_REQUIRE([gt_INTTYPES_PRI]) + + PRIPTR_PREFIX= + if test -n "$STDINT_H"; then + dnl Using the gnulib . It always defines intptr_t to 'long'. + PRIPTR_PREFIX='"l"' + else + dnl Using the system's . + for glpfx in '' l ll I64; do + case $glpfx in + '') gltype1='int';; + l) gltype1='long int';; + ll) gltype1='long long int';; + I64) gltype1='__int64';; + esac + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[#include + extern intptr_t foo; + extern $gltype1 foo;]])], + [PRIPTR_PREFIX='"'$glpfx'"']) + test -n "$PRIPTR_PREFIX" && break + done + fi + AC_SUBST([PRIPTR_PREFIX]) + + gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION( + [INT32_MAX_LT_INTMAX_MAX], + [defined INT32_MAX && defined INTMAX_MAX], + [INT32_MAX < INTMAX_MAX], + [sizeof (int) < sizeof (long long int)]) + if test $APPLE_UNIVERSAL_BUILD = 0; then + gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION( + [INT64_MAX_EQ_LONG_MAX], + [defined INT64_MAX], + [INT64_MAX == LONG_MAX], + [sizeof (long long int) == sizeof (long int)]) + else + INT64_MAX_EQ_LONG_MAX=-1 + fi + gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION( + [UINT32_MAX_LT_UINTMAX_MAX], + [defined UINT32_MAX && defined UINTMAX_MAX], + [UINT32_MAX < UINTMAX_MAX], + [sizeof (unsigned int) < sizeof (unsigned long long int)]) + if test $APPLE_UNIVERSAL_BUILD = 0; then + gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION( + [UINT64_MAX_EQ_ULONG_MAX], + [defined UINT64_MAX], + [UINT64_MAX == ULONG_MAX], + [sizeof (unsigned long long int) == sizeof (unsigned long int)]) + else + UINT64_MAX_EQ_ULONG_MAX=-1 + fi +]) + +# Define the symbol $1 to be 1 if the condition is true, 0 otherwise. +# If $2 is true, the condition is $3; otherwise if long long int is supported +# approximate the condition with $4; otherwise, assume the condition is false. +# The condition should work on all C99 platforms; the approximations should be +# good enough to work on all practical pre-C99 platforms. +# $2 is evaluated by the C preprocessor, $3 and $4 as compile-time constants. +AC_DEFUN([gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION], +[ + AC_CACHE_CHECK([whether $3], + [gl_cv_test_$1], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[/* Work also in C++ mode. */ + #define __STDC_LIMIT_MACROS 1 + + /* Work if build is not clean. */ + #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H + + #include + #if HAVE_STDINT_H + #include + #endif + + #if $2 + #define CONDITION ($3) + #elif HAVE_LONG_LONG_INT + #define CONDITION ($4) + #else + #define CONDITION 0 + #endif + int test[CONDITION ? 1 : -1];]])], + [gl_cv_test_$1=yes], + [gl_cv_test_$1=no])]) + if test $gl_cv_test_$1 = yes; then + $1=1; + else + $1=0; + fi + AC_SUBST([$1]) +]) + +AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR], +[ + dnl Use AC_REQUIRE here, so that the default settings are expanded once only. + AC_REQUIRE([gl_INTTYPES_H_DEFAULTS]) + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) +]) + +AC_DEFUN([gl_INTTYPES_H_DEFAULTS], +[ + GNULIB_IMAXABS=0; AC_SUBST([GNULIB_IMAXABS]) + GNULIB_IMAXDIV=0; AC_SUBST([GNULIB_IMAXDIV]) + GNULIB_STRTOIMAX=0; AC_SUBST([GNULIB_STRTOIMAX]) + GNULIB_STRTOUMAX=0; AC_SUBST([GNULIB_STRTOUMAX]) + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_DECL_IMAXABS=1; AC_SUBST([HAVE_DECL_IMAXABS]) + HAVE_DECL_IMAXDIV=1; AC_SUBST([HAVE_DECL_IMAXDIV]) + HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX]) + HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX]) + HAVE_IMAXDIV_T=1; AC_SUBST([HAVE_IMAXDIV_T]) + REPLACE_STRTOIMAX=0; AC_SUBST([REPLACE_STRTOIMAX]) + REPLACE_STRTOUMAX=0; AC_SUBST([REPLACE_STRTOUMAX]) + INT32_MAX_LT_INTMAX_MAX=1; AC_SUBST([INT32_MAX_LT_INTMAX_MAX]) + INT64_MAX_EQ_LONG_MAX='defined _LP64'; AC_SUBST([INT64_MAX_EQ_LONG_MAX]) + PRI_MACROS_BROKEN=0; AC_SUBST([PRI_MACROS_BROKEN]) + PRIPTR_PREFIX=__PRIPTR_PREFIX; AC_SUBST([PRIPTR_PREFIX]) + UINT32_MAX_LT_UINTMAX_MAX=1; AC_SUBST([UINT32_MAX_LT_UINTMAX_MAX]) + UINT64_MAX_EQ_ULONG_MAX='defined _LP64'; AC_SUBST([UINT64_MAX_EQ_ULONG_MAX]) +]) diff --git a/bash-5.1/m4/inttypes_h.m4 b/bash-5.1/m4/inttypes_h.m4 new file mode 100644 index 0000000..d20422a --- /dev/null +++ b/bash-5.1/m4/inttypes_h.m4 @@ -0,0 +1,29 @@ +# inttypes_h.m4 serial 10 +dnl Copyright (C) 1997-2004, 2006, 2008-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [gl_cv_header_inttypes_h=yes], + [gl_cv_header_inttypes_h=no])]) + if test $gl_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 +]) diff --git a/bash-5.1/m4/lcmessage.m4 b/bash-5.1/m4/lcmessage.m4 new file mode 100644 index 0000000..8d32e10 --- /dev/null +++ b/bash-5.1/m4/lcmessage.m4 @@ -0,0 +1,35 @@ +# lcmessage.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014, 2016, 2019 Free Software +dnl Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file 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 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([gt_LC_MESSAGES], +[ + AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[return LC_MESSAGES]])], + [gt_cv_val_LC_MESSAGES=yes], + [gt_cv_val_LC_MESSAGES=no])]) + if test $gt_cv_val_LC_MESSAGES = yes; then + AC_DEFINE([HAVE_LC_MESSAGES], [1], + [Define if your file defines LC_MESSAGES.]) + fi +]) diff --git a/bash-5.1/m4/lib-ld.m4 b/bash-5.1/m4/lib-ld.m4 new file mode 100644 index 0000000..a187196 --- /dev/null +++ b/bash-5.1/m4/lib-ld.m4 @@ -0,0 +1,168 @@ +# lib-ld.m4 serial 9 +dnl Copyright (C) 1996-2003, 2009-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid +dnl collision with libtool.m4. + +dnl From libtool-2.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 lds only accept -v. +case `$LD -v 2>&1 /dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +if test -n "$LD"; then + AC_MSG_CHECKING([for ld]) +elif test "$GCC" = yes; then + AC_MSG_CHECKING([for ld used by $CC]) +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +if test -n "$LD"; then + # Let the user override the test with a path. + : +else + AC_CACHE_VAL([acl_cv_path_LD], + [ + acl_cv_path_LD= # Final result of this test + ac_prog=ld # Program to search in $PATH + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + acl_output=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $acl_output in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` + while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do + acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` + done + # Got the pathname. No search in PATH is needed. + acl_cv_path_LD="$acl_output" + ac_prog= + ;; + "") + # If it fails, then pretend we aren't using GCC. + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + fi + if test -n "$ac_prog"; then + # Search for $ac_prog in $PATH. + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + 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 variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_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_FROMPACKAGE(name, package) +dnl declares that libname comes from the given package. The configure file +dnl will then not have a --with-libname-prefix option but a +dnl --with-package-prefix option. Several libraries can come from the same +dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar +dnl macro call that searches for libname. +AC_DEFUN([AC_LIB_FROMPACKAGE], +[ + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_frompackage_]NAME, [$2]) + popdef([NAME]) + pushdef([PACK],[$2]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_libsinpackage_]PACKUP, + m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) + popdef([PACKUP]) + popdef([PACK]) +]) + +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. +dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found +dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) + 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_ARG_WITH(PACK[-prefix], +[[ --with-]]PACK[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib + --without-]]PACK[[-prefix don't search for ]PACKLIBS[ 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/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && test ! -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + 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= + LIB[]NAME[]_PREFIX= + dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been + dnl computed. So it has to be reset here. + HAVE_LIB[]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= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + 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//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; 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 "$acl_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 "$acl_hardcode_libdir_flag_spec" && test "$acl_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 "$acl_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 $acl_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 + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + 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* | gnu* | k*bsd*-gnu) 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/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) 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 "$acl_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:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_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=\"$acl_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 + popdef([PACKLIBS]) + popdef([PACKUP]) + popdef([PACK]) + popdef([NAME]) +]) + +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 +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) diff --git a/bash-5.1/m4/lib-prefix.m4 b/bash-5.1/m4/lib-prefix.m4 new file mode 100644 index 0000000..8adb17b --- /dev/null +++ b/bash-5.1/m4/lib-prefix.m4 @@ -0,0 +1,249 @@ +# lib-prefix.m4 serial 14 +dnl Copyright (C) 2001-2005, 2008-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +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_MULTILIB]) + 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_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/$acl_libdirstem" + 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* | gnu* | k*bsd*-gnu) 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/$acl_libdirstem"; 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/$acl_libdirstem"; 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" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates +dnl - a variable acl_libdirstem, containing the basename of the libdir, either +dnl "lib" or "lib64" or "lib/64", +dnl - a variable acl_libdirstem2, as a secondary possible value for +dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or +dnl "lib/amd64". +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib and lib64. + dnl On glibc systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine + dnl the compiler's default mode by looking at the compiler's library search + dnl path. If at least one of its elements ends in /lib64 or points to a + dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. + dnl Otherwise we use the default, namely "lib". + dnl On Solaris systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or + dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT]) + + case "$host_os" in + solaris*) + AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _LP64 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_solaris_64bit=yes], + [gl_cv_solaris_64bit=no]) + ]);; + esac + + dnl Allow the user to override the result by setting acl_cv_libdirstems. + AC_CACHE_CHECK([for the common suffixes of directories in the library search path], + [acl_cv_libdirstems], + [acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment + dnl . + dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." + dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the + dnl symlink is missing, so we set acl_libdirstem2 too. + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + dnl If $CC generates code for a 32-bit ABI, the libraries are + dnl surely under $prefix/lib, not $prefix/lib64. + if test "$HOST_CPU_C_ABI_32BIT" != yes; then + dnl The result is a property of the system. However, non-system + dnl compilers sometimes have odd library search paths. Therefore + dnl prefer asking /usr/bin/gcc, if available, rather than $CC. + searchpath=`(if test -f /usr/bin/gcc \ + && LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \ + LC_ALL=C /usr/bin/gcc -print-search-dirs; \ + else \ + LC_ALL=C $CC -print-search-dirs; \ + fi) 2>/dev/null \ + | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2" + ]) + # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2. + acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` + acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'` +]) diff --git a/bash-5.1/m4/lock.m4 b/bash-5.1/m4/lock.m4 new file mode 100644 index 0000000..93b76fa --- /dev/null +++ b/bash-5.1/m4/lock.m4 @@ -0,0 +1,47 @@ +# lock.m4 serial 14 +dnl Copyright (C) 2005-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gl_LOCK], +[ + AC_REQUIRE([gl_THREADLIB]) + if test "$gl_threads_api" = posix; then + # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the + # pthread_rwlock_* functions. + has_rwlock=false + AC_CHECK_TYPE([pthread_rwlock_t], + [has_rwlock=true + AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1], + [Define if the POSIX multithreading library has read/write locks.])], + [], + [#include ]) + if $has_rwlock; then + gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER + fi + # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM( + [[#include ]], + [[ +#if __FreeBSD__ == 4 +error "No, in FreeBSD 4.0 recursive mutexes actually don't work." +#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \ + && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070) +error "No, in Mac OS X < 10.7 recursive mutexes actually don't work." +#else +int x = (int)PTHREAD_MUTEX_RECURSIVE; +return !x; +#endif + ]])], + [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1], + [Define if the defines PTHREAD_MUTEX_RECURSIVE.])]) + fi + gl_PREREQ_LOCK +]) + +# Prerequisites of lib/glthread/lock.c. +AC_DEFUN([gl_PREREQ_LOCK], [:]) diff --git a/bash-5.1/m4/nls.m4 b/bash-5.1/m4/nls.m4 new file mode 100644 index 0000000..b62f614 --- /dev/null +++ b/bash-5.1/m4/nls.m4 @@ -0,0 +1,32 @@ +# nls.m4 serial 5 (gettext-0.18) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019 Free Software +dnl Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file 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 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_PREREQ([2.50]) + +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]) +]) diff --git a/bash-5.1/m4/po.m4 b/bash-5.1/m4/po.m4 new file mode 100644 index 0000000..ce72d01 --- /dev/null +++ b/bash-5.1/m4/po.m4 @@ -0,0 +1,441 @@ +# po.m4 serial 24a +dnl Copyright (C) 1995-2014, 2016, 2018-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file 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 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_PREREQ([2.60]) + +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([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_SED])dnl + AC_REQUIRE([AM_NLS])dnl + + dnl Release version of the gettext macros. This is used to ensure that + dnl the gettext macros and po/Makefile.in.in are in sync. + AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) + + 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 >&]AS_MESSAGE_LOG_FD[ 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 Test whether it is GNU msgfmt >= 0.15. +changequote(,)dnl + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([MSGFMT_015]) +changequote(,)dnl + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([GMSGFMT_015]) + + 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 >&]AS_MESSAGE_LOG_FD[ 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 Test whether it is GNU xgettext >= 0.15. +changequote(,)dnl + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac +changequote([,])dnl + AC_SUBST([XGETTEXT_015]) + + 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 >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + 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 + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + 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" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES 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" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + 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|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|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, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. + OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS" + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # 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 + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + tab=`printf '\t'` + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <> "$ac_file.tmp" < +#include +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 0); +}]])], + [gt_cv_func_printf_posix=yes], + [gt_cv_func_printf_posix=no], + [ + AC_EGREP_CPP([notposix], [ +#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + ], + [gt_cv_func_printf_posix="guessing no"], + [gt_cv_func_printf_posix="guessing yes"]) + ]) + ]) + case $gt_cv_func_printf_posix in + *yes) + AC_DEFINE([HAVE_POSIX_PRINTF], [1], + [Define if your printf() function supports format strings with positions.]) + ;; + esac +]) diff --git a/bash-5.1/m4/progtest.m4 b/bash-5.1/m4/progtest.m4 new file mode 100644 index 0000000..5f186b1 --- /dev/null +++ b/bash-5.1/m4/progtest.m4 @@ -0,0 +1,91 @@ +# progtest.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1996-2003, 2005, 2008-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file 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 is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1996. + +AC_PREREQ([2.50]) + +# 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 + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +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 + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + 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 +]) diff --git a/bash-5.1/m4/pthread_rwlock_rdlock.m4 b/bash-5.1/m4/pthread_rwlock_rdlock.m4 new file mode 100644 index 0000000..3c1d645 --- /dev/null +++ b/bash-5.1/m4/pthread_rwlock_rdlock.m4 @@ -0,0 +1,165 @@ +# pthread_rwlock_rdlock.m4 serial 2 +dnl Copyright (C) 2017-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Inspired by +dnl https://github.com/linux-test-project/ltp/blob/master/testcases/open_posix_testsuite/conformance/interfaces/pthread_rwlock_rdlock/2-2.c +dnl by Intel Corporation. + +dnl Test whether in a situation where +dnl - an rwlock is taken by a reader and has a writer waiting, +dnl - an additional reader requests the lock, +dnl - the waiting writer and the requesting reader threads have the same +dnl priority, +dnl the requesting reader thread gets blocked, so that at some point the +dnl waiting writer can acquire the lock. +dnl Without such a guarantee, when there a N readers and each of the readers +dnl spends more than 1/Nth of the time with the lock held, there is a high +dnl probability that the waiting writer will not get the lock in a given finite +dnl time, a phenomenon called "writer starvation". +dnl Without such a guarantee, applications have a hard time avoiding writer +dnl starvation. +dnl +dnl POSIX:2017 makes this requirement only for implementations that support TPS +dnl (Thread Priority Scheduling) and only for the scheduling policies SCHED_FIFO +dnl and SCHED_RR, see +dnl http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_rwlock_rdlock.html +dnl but this test verifies the guarantee regardless of TPS and regardless of +dnl scheduling policy. +dnl Glibc currently does not provide this guarantee, see +dnl https://sourceware.org/bugzilla/show_bug.cgi?id=13701 +AC_DEFUN([gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER], +[ + AC_REQUIRE([gl_THREADLIB_EARLY]) + AC_CACHE_CHECK([whether pthread_rwlock_rdlock prefers a writer to a reader], + [gl_cv_pthread_rwlock_rdlock_prefer_writer], + [save_LIBS="$LIBS" + LIBS="$LIBS $LIBMULTITHREAD" + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#include +#include +#include + +#define SUCCEED() exit (0) +#define FAILURE() exit (1) +#define UNEXPECTED(n) (exit (10 + (n))) + +/* The main thread creates the waiting writer and the requesting reader threads + in the default way; this guarantees that they have the same priority. + We can reuse the main thread as first reader thread. */ + +static pthread_rwlock_t lock; +static pthread_t reader1; +static pthread_t writer; +static pthread_t reader2; +static pthread_t timer; +/* Used to pass control from writer to reader2 and from reader2 to timer, + as in a relay race. + Passing control from one running thread to another running thread + is most likely faster than to create the second thread. */ +static pthread_mutex_t baton; + +static void * +timer_func (void *ignored) +{ + /* Step 13 (can be before or after step 12): + The timer thread takes the baton, then waits a moment to make sure + it can tell whether the second reader thread is blocked at step 12. */ + if (pthread_mutex_lock (&baton)) + UNEXPECTED (13); + usleep (100000); + /* By the time we get here, it's clear that the second reader thread is + blocked at step 12. This is the desired behaviour. */ + SUCCEED (); +} + +static void * +reader2_func (void *ignored) +{ + int err; + + /* Step 8 (can be before or after step 7): + The second reader thread takes the baton, then waits a moment to make sure + the writer thread has reached step 7. */ + if (pthread_mutex_lock (&baton)) + UNEXPECTED (8); + usleep (100000); + /* Step 9: The second reader thread requests the lock. */ + err = pthread_rwlock_tryrdlock (&lock); + if (err == 0) + FAILURE (); + else if (err != EBUSY) + UNEXPECTED (9); + /* Step 10: Launch a timer, to test whether the next call blocks. */ + if (pthread_create (&timer, NULL, timer_func, NULL)) + UNEXPECTED (10); + /* Step 11: Release the baton. */ + if (pthread_mutex_unlock (&baton)) + UNEXPECTED (11); + /* Step 12: The second reader thread requests the lock. */ + err = pthread_rwlock_rdlock (&lock); + if (err == 0) + FAILURE (); + else + UNEXPECTED (12); +} + +static void * +writer_func (void *ignored) +{ + /* Step 4: Take the baton, so that the second reader thread does not go ahead + too early. */ + if (pthread_mutex_lock (&baton)) + UNEXPECTED (4); + /* Step 5: Create the second reader thread. */ + if (pthread_create (&reader2, NULL, reader2_func, NULL)) + UNEXPECTED (5); + /* Step 6: Release the baton. */ + if (pthread_mutex_unlock (&baton)) + UNEXPECTED (6); + /* Step 7: The writer thread requests the lock. */ + if (pthread_rwlock_wrlock (&lock)) + UNEXPECTED (7); + return NULL; +} + +int +main () +{ + reader1 = pthread_self (); + + /* Step 1: The main thread initializes the lock and the baton. */ + if (pthread_rwlock_init (&lock, NULL)) + UNEXPECTED (1); + if (pthread_mutex_init (&baton, NULL)) + UNEXPECTED (1); + /* Step 2: The main thread acquires the lock as a reader. */ + if (pthread_rwlock_rdlock (&lock)) + UNEXPECTED (2); + /* Step 3: Create the writer thread. */ + if (pthread_create (&writer, NULL, writer_func, NULL)) + UNEXPECTED (3); + /* Job done. Go to sleep. */ + for (;;) + { + sleep (1); + } +} +]])], + [gl_cv_pthread_rwlock_rdlock_prefer_writer=yes], + [gl_cv_pthread_rwlock_rdlock_prefer_writer=no], + [gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes"]) + LIBS="$save_LIBS" + ]) + case "$gl_cv_pthread_rwlock_rdlock_prefer_writer" in + *yes) + AC_DEFINE([HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER], [1], + [Define if the 'pthread_rwlock_rdlock' function prefers a writer to a reader.]) + ;; + esac +]) diff --git a/bash-5.1/m4/size_max.m4 b/bash-5.1/m4/size_max.m4 new file mode 100644 index 0000000..ab79052 --- /dev/null +++ b/bash-5.1/m4/size_max.m4 @@ -0,0 +1,75 @@ +# size_max.m4 serial 11 +dnl Copyright (C) 2003, 2005-2006, 2008-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ([2.61]) + +AC_DEFUN([gl_SIZE_MAX], +[ + AC_CHECK_HEADERS([stdint.h]) + dnl First test whether the system already has SIZE_MAX. + AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [ + gl_cv_size_max= + AC_EGREP_CPP([Found it], [ +#include +#if HAVE_STDINT_H +#include +#endif +#ifdef SIZE_MAX +Found it +#endif +], [gl_cv_size_max=yes]) + if test -z "$gl_cv_size_max"; then + dnl Define it ourselves. Here we assume that the type 'size_t' is not wider + dnl than the type 'unsigned long'. Try hard to find a definition that can + dnl be used in a preprocessor #if, i.e. doesn't contain a cast. + AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], + [#include +#include ], [size_t_bits_minus_1=]) + AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], + [#include ], [fits_in_uint=]) + if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then + if test $fits_in_uint = 1; then + dnl Even though SIZE_MAX fits in an unsigned int, it must be of type + dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + extern size_t foo; + extern unsigned long foo; + ]], + [[]])], + [fits_in_uint=0]) + fi + dnl We cannot use 'expr' to simplify this expression, because 'expr' + dnl works only with 'long' integers in the host environment, while we + dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. + if test $fits_in_uint = 1; then + gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" + else + gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" + fi + else + dnl Shouldn't happen, but who knows... + gl_cv_size_max='((size_t)~(size_t)0)' + fi + fi + ]) + if test "$gl_cv_size_max" != yes; then + AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max], + [Define as the maximum value of type 'size_t', if the system doesn't define it.]) + fi + dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after + dnl . Remember that the #undef in AH_VERBATIM gets replaced with + dnl #define by AC_DEFINE_UNQUOTED. + AH_VERBATIM([SIZE_MAX], +[/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +#ifndef SIZE_MAX +# undef SIZE_MAX +#endif]) +]) diff --git a/bash-5.1/m4/stat-time.m4 b/bash-5.1/m4/stat-time.m4 new file mode 100644 index 0000000..f5d67a1 --- /dev/null +++ b/bash-5.1/m4/stat-time.m4 @@ -0,0 +1,61 @@ +# Checks for stat-related time functions. + +# Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2012 Free Software +# Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. +dnl Modified by Chet Ramey for bash. + +# st_atim.tv_nsec - Linux, Solaris, Cygwin +# st_atimespec.tv_nsec - FreeBSD, NetBSD, if ! defined _POSIX_SOURCE +# st_atimensec - FreeBSD, NetBSD, if defined _POSIX_SOURCE +# st_atim.st__tim.tv_nsec - UnixWare (at least 2.1.2 through 7.1) + +# st_birthtimespec - FreeBSD, NetBSD (hidden on OpenBSD 3.9, anyway) +# st_birthtim - Cygwin 1.7.0+ + +AC_DEFUN([BASH_STAT_TIME], +[ + AC_REQUIRE([AC_C_INLINE]) + AC_CHECK_HEADERS_ONCE([sys/time.h]) + + AC_CHECK_MEMBERS([struct stat.st_atim.tv_nsec], + [AC_CACHE_CHECK([whether struct stat.st_atim is of type struct timespec], + [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [[ + #include + #include + #if HAVE_SYS_TIME_H + # include + #endif + #include + struct timespec ts; + struct stat st; + ]], + [[ + st.st_atim = ts; + ]])], + [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes], + [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no])]) + if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then + AC_DEFINE([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], [1], + [Define to 1 if the type of the st_atim member of a struct stat is + struct timespec.]) + fi], + [AC_CHECK_MEMBERS([struct stat.st_atimespec.tv_nsec], [], + [AC_CHECK_MEMBERS([struct stat.st_atimensec], [], + [AC_CHECK_MEMBERS([struct stat.st_atim.st__tim.tv_nsec], [], [], + [#include + #include ])], + [#include + #include ])], + [#include + #include ])], + [#include + #include ]) +]) diff --git a/bash-5.1/m4/stdint_h.m4 b/bash-5.1/m4/stdint_h.m4 new file mode 100644 index 0000000..6d5f1af --- /dev/null +++ b/bash-5.1/m4/stdint_h.m4 @@ -0,0 +1,27 @@ +# stdint_h.m4 serial 9 +dnl Copyright (C) 1997-2004, 2006, 2008-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_STDINT_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_STDINT_H], +[ + AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [gl_cv_header_stdint_h=yes], + [gl_cv_header_stdint_h=no])]) + if test $gl_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 +]) diff --git a/bash-5.1/m4/threadlib.m4 b/bash-5.1/m4/threadlib.m4 new file mode 100644 index 0000000..bfc3bac --- /dev/null +++ b/bash-5.1/m4/threadlib.m4 @@ -0,0 +1,393 @@ +# threadlib.m4 serial 16 +dnl Copyright (C) 2005-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ([2.60]) + +dnl gl_THREADLIB +dnl ------------ +dnl Tests for a multithreading library to be used. +dnl If the configure.ac contains a definition of the gl_THREADLIB_DEFAULT_NO +dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the +dnl default is 'no', otherwise it is system dependent. In both cases, the user +dnl can change the choice through the options --enable-threads=choice or +dnl --disable-threads. +dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS, +dnl USE_PTH_THREADS, USE_WINDOWS_THREADS +dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use +dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with +dnl libtool). +dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for +dnl programs that really need multithread functionality. The difference +dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak +dnl symbols, typically LIBTHREAD is empty whereas LIBMULTITHREAD is not. +dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for +dnl multithread-safe programs. + +AC_DEFUN([gl_THREADLIB_EARLY], +[ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) +]) + +dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once. + +AC_DEFUN([gl_THREADLIB_EARLY_BODY], +[ + dnl Ordering constraints: This macro modifies CPPFLAGS in a way that + dnl influences the result of the autoconf tests that test for *_unlocked + dnl declarations, on AIX 5 at least. Therefore it must come early. + AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl + AC_BEFORE([$0], [gl_ARGP])dnl + + AC_REQUIRE([AC_CANONICAL_HOST]) + dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + dnl Check for multithreading. + m4_ifdef([gl_THREADLIB_DEFAULT_NO], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) + AC_ARG_ENABLE([threads], +AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ +AC_HELP_STRING([--disable-threads], [build without multithread safety])]), + [gl_use_threads=$enableval], + [if test -n "$gl_use_threads_default"; then + gl_use_threads="$gl_use_threads_default" + else +changequote(,)dnl + case "$host_os" in + dnl Disable multithreading by default on OSF/1, because it interferes + dnl with fork()/exec(): When msgexec is linked with -lpthread, its + dnl child process gets an endless segmentation fault inside execvp(). + dnl Disable multithreading by default on Cygwin 1.5.x, because it has + dnl bugs that lead to endless loops or crashes. See + dnl . + osf*) gl_use_threads=no ;; + cygwin*) + case `uname -r` in + 1.[0-5].*) gl_use_threads=no ;; + *) gl_use_threads=yes ;; + esac + ;; + *) gl_use_threads=yes ;; + esac +changequote([,])dnl + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # For using : + case "$host_os" in + osf*) + # On OSF/1, the compiler needs the flag -D_REENTRANT so that it + # groks . cc also understands the flag -pthread, but + # we don't use it because 1. gcc-2.95 doesn't understand -pthread, + # 2. putting a flag into CPPFLAGS that has an effect on the linker + # causes the AC_LINK_IFELSE test below to succeed unexpectedly, + # leading to wrong values of LIBTHREAD and LTLIBTHREAD. + CPPFLAGS="$CPPFLAGS -D_REENTRANT" + ;; + esac + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in . + case "$host_os" in + aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; + esac + fi +]) + +dnl The guts of gl_THREADLIB. Needs to be expanded only once. + +AC_DEFUN([gl_THREADLIB_BODY], +[ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) + gl_threads_api=none + LIBTHREAD= + LTLIBTHREAD= + LIBMULTITHREAD= + LTLIBMULTITHREAD= + if test "$gl_use_threads" != no; then + dnl Check whether the compiler and linker support weak declarations. + AC_CACHE_CHECK([whether imported symbols can be declared weak], + [gl_cv_have_weak], + [gl_cv_have_weak=no + dnl First, test whether the compiler accepts it syntactically. + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[extern void xyzzy (); +#pragma weak xyzzy]], + [[xyzzy();]])], + [gl_cv_have_weak=maybe]) + if test $gl_cv_have_weak = maybe; then + dnl Second, test whether it actually works. On Cygwin 1.7.2, with + dnl gcc 4.3, symbols declared weak always evaluate to the address 0. + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#pragma weak fputs +int main () +{ + return (fputs == NULL); +}]])], + [gl_cv_have_weak=yes], + [gl_cv_have_weak=no], + [dnl When cross-compiling, assume that only ELF platforms support + dnl weak symbols. + AC_EGREP_CPP([Extensible Linking Format], + [#ifdef __ELF__ + Extensible Linking Format + #endif + ], + [gl_cv_have_weak="guessing yes"], + [gl_cv_have_weak="guessing no"]) + ]) + fi + dnl But when linking statically, weak symbols don't work. + case " $LDFLAGS " in + *" -static "*) gl_cv_have_weak=no ;; + esac + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that + # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. + AC_CHECK_HEADER([pthread.h], + [gl_have_pthread_h=yes], [gl_have_pthread_h=no]) + if test "$gl_have_pthread_h" = yes; then + # Other possible tests: + # -lpthreads (FSU threads, PCthreads) + # -lgthreads + gl_have_pthread= + # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist + # in libc. IRIX 6.5 has the first one in both libc and libpthread, but + # the second one only in libpthread, and lock.c needs it. + # + # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04 + # needs -pthread for some reason. See: + # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html + save_LIBS=$LIBS + for gl_pthread in '' '-pthread'; do + LIBS="$LIBS $gl_pthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + pthread_mutex_t m; + pthread_mutexattr_t ma; + ]], + [[pthread_mutex_lock (&m); + pthread_mutexattr_init (&ma);]])], + [gl_have_pthread=yes + LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread + LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread]) + LIBS=$save_LIBS + test -n "$gl_have_pthread" && break + done + + # Test for libpthread by looking for pthread_kill. (Not pthread_self, + # since it is defined as a macro on OSF/1.) + if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then + # The program links fine without libpthread. But it may actually + # need to link with libpthread in order to create multiple threads. + AC_CHECK_LIB([pthread], [pthread_kill], + [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread + # On Solaris and HP-UX, most pthread functions exist also in libc. + # Therefore pthread_in_use() needs to actually try to create a + # thread: pthread_create from libc will fail, whereas + # pthread_create will actually create a thread. + # On Solaris 10 or newer, this test is no longer needed, because + # libc contains the fully functional pthread functions. + case "$host_os" in + solaris | solaris2.[1-9] | solaris2.[1-9].* | hpux*) + AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], + [Define if the pthread_in_use() detection is hard.]) + esac + ]) + elif test -z "$gl_have_pthread"; then + # Some library is needed. Try libpthread and libc_r. + AC_CHECK_LIB([pthread], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread]) + if test -z "$gl_have_pthread"; then + # For FreeBSD 4. + AC_CHECK_LIB([c_r], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r + LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r]) + fi + fi + if test -n "$gl_have_pthread"; then + gl_threads_api=posix + AC_DEFINE([USE_POSIX_THREADS], [1], + [Define if the POSIX multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_POSIX_THREADS_WEAK], [1], + [Define if references to the POSIX multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then + gl_have_solaristhread= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[thr_self();]])], + [gl_have_solaristhread=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_solaristhread"; then + gl_threads_api=solaris + LIBTHREAD=-lthread + LTLIBTHREAD=-lthread + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_SOLARIS_THREADS], [1], + [Define if the old Solaris multithreading library can be used.]) + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1], + [Define if references to the old Solaris multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + if test "$gl_use_threads" = pth; then + gl_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_LINKFLAGS([pth]) + gl_have_pth= + gl_save_LIBS="$LIBS" + LIBS="$LIBS $LIBPTH" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include ]], [[pth_self();]])], + [gl_have_pth=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_pth"; then + gl_threads_api=pth + LIBTHREAD="$LIBPTH" + LTLIBTHREAD="$LTLIBPTH" + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_PTH_THREADS], [1], + [Define if the GNU Pth multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_PTH_THREADS_WEAK], [1], + [Define if references to the GNU Pth multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + else + CPPFLAGS="$gl_save_CPPFLAGS" + fi + fi + if test -z "$gl_have_pthread"; then + case "$gl_use_threads" in + yes | windows | win32) # The 'win32' is for backward compatibility. + if { case "$host_os" in + mingw*) true;; + *) false;; + esac + }; then + gl_threads_api=windows + AC_DEFINE([USE_WINDOWS_THREADS], [1], + [Define if the native Windows multithreading API can be used.]) + fi + ;; + esac + fi + fi + AC_MSG_CHECKING([for multithread API to use]) + AC_MSG_RESULT([$gl_threads_api]) + AC_SUBST([LIBTHREAD]) + AC_SUBST([LTLIBTHREAD]) + AC_SUBST([LIBMULTITHREAD]) + AC_SUBST([LTLIBMULTITHREAD]) +]) + +AC_DEFUN([gl_THREADLIB], +[ + AC_REQUIRE([gl_THREADLIB_EARLY]) + AC_REQUIRE([gl_THREADLIB_BODY]) +]) + + +dnl gl_DISABLE_THREADS +dnl ------------------ +dnl Sets the gl_THREADLIB default so that threads are not used by default. +dnl The user can still override it at installation time, by using the +dnl configure option '--enable-threads'. + +AC_DEFUN([gl_DISABLE_THREADS], [ + m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no]) +]) + + +dnl Survey of platforms: +dnl +dnl Platform Available Compiler Supports test-lock +dnl flavours option weak result +dnl --------------- --------- --------- -------- --------- +dnl Linux 2.4/glibc posix -lpthread Y OK +dnl +dnl GNU Hurd/glibc posix +dnl +dnl Ubuntu 14.04 posix -pthread Y OK +dnl +dnl FreeBSD 5.3 posix -lc_r Y +dnl posix -lkse ? Y +dnl posix -lpthread ? Y +dnl posix -lthr Y +dnl +dnl FreeBSD 5.2 posix -lc_r Y +dnl posix -lkse Y +dnl posix -lthr Y +dnl +dnl FreeBSD 4.0,4.10 posix -lc_r Y OK +dnl +dnl NetBSD 1.6 -- +dnl +dnl OpenBSD 3.4 posix -lpthread Y OK +dnl +dnl Mac OS X 10.[123] posix -lpthread Y OK +dnl +dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK +dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK +dnl +dnl HP-UX 11 posix -lpthread N (cc) OK +dnl Y (gcc) +dnl +dnl IRIX 6.5 posix -lpthread Y 0.5 +dnl +dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK +dnl +dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK +dnl -lpthread (gcc) Y +dnl +dnl Cygwin posix -lpthread Y OK +dnl +dnl Any of the above pth -lpth 0.0 +dnl +dnl Mingw windows N OK +dnl +dnl BeOS 5 -- +dnl +dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is +dnl turned off: +dnl OK if all three tests terminate OK, +dnl 0.5 if the first test terminates OK but the second one loops endlessly, +dnl 0.0 if the first test already loops endlessly. diff --git a/bash-5.1/m4/timespec.m4 b/bash-5.1/m4/timespec.m4 new file mode 100644 index 0000000..3643b47 --- /dev/null +++ b/bash-5.1/m4/timespec.m4 @@ -0,0 +1,71 @@ +# Configure checks for struct timespec + +# Copyright (C) 2000-2001, 2003-2007, 2009-2011, 2012 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Original written by Paul Eggert and Jim Meyering. +# Modified by Chet Ramey for bash + +dnl Define HAVE_STRUCT_TIMESPEC if `struct timespec' is declared +dnl in time.h, sys/time.h, or pthread.h. + +AC_DEFUN([BASH_CHECK_TYPE_STRUCT_TIMESPEC], +[ + AC_CHECK_HEADERS_ONCE([sys/time.h]) + AC_CACHE_CHECK([for struct timespec in ], + [bash_cv_sys_struct_timespec_in_time_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + ]], + [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], + [bash_cv_sys_struct_timespec_in_time_h=yes], + [bash_cv_sys_struct_timespec_in_time_h=no])]) + + HAVE_STRUCT_TIMESPEC=0 + TIME_H_DEFINES_STRUCT_TIMESPEC=0 + SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 + PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 + if test $bash_cv_sys_struct_timespec_in_time_h = yes; then + AC_DEFINE([HAVE_STRUCT_TIMESPEC]) + AC_DEFINE([TIME_H_DEFINES_STRUCT_TIMESPEC]) + TIME_H_DEFINES_STRUCT_TIMESPEC=1 + else + AC_CACHE_CHECK([for struct timespec in ], + [bash_cv_sys_struct_timespec_in_sys_time_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + ]], + [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], + [bash_cv_sys_struct_timespec_in_sys_time_h=yes], + [bash_cv_sys_struct_timespec_in_sys_time_h=no])]) + if test $bash_cv_sys_struct_timespec_in_sys_time_h = yes; then + SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 + AC_DEFINE([HAVE_STRUCT_TIMESPEC]) + AC_DEFINE([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC]) + else + AC_CACHE_CHECK([for struct timespec in ], + [bash_cv_sys_struct_timespec_in_pthread_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + ]], + [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], + [bash_cv_sys_struct_timespec_in_pthread_h=yes], + [bash_cv_sys_struct_timespec_in_pthread_h=no])]) + if test $bash_cv_sys_struct_timespec_in_pthread_h = yes; then + PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 + AC_DEFINE([HAVE_STRUCT_TIMESPEC]) + AC_DEFINE([PTHREAD_H_DEFINES_STRUCT_TIMESPEC]) + fi + fi + fi + AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC]) + AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC]) + AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC]) + +]) diff --git a/bash-5.1/m4/uintmax_t.m4 b/bash-5.1/m4/uintmax_t.m4 new file mode 100644 index 0000000..2926bea --- /dev/null +++ b/bash-5.1/m4/uintmax_t.m4 @@ -0,0 +1,30 @@ +# uintmax_t.m4 serial 12 +dnl Copyright (C) 1997-2004, 2007-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +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([gl_AC_TYPE_UINTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + test $ac_cv_type_unsigned_long_long_int = 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 +]) diff --git a/bash-5.1/m4/ulonglong.m4 b/bash-5.1/m4/ulonglong.m4 new file mode 100644 index 0000000..58b5334 --- /dev/null +++ b/bash-5.1/m4/ulonglong.m4 @@ -0,0 +1,5 @@ +# ulonglong.m4 serial 10 +dnl Copyright (C) 1999-2007, 2009-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. diff --git a/bash-5.1/m4/visibility.m4 b/bash-5.1/m4/visibility.m4 new file mode 100644 index 0000000..8c266a8 --- /dev/null +++ b/bash-5.1/m4/visibility.m4 @@ -0,0 +1,77 @@ +# visibility.m4 serial 6 +dnl Copyright (C) 2005, 2008, 2010-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl Tests whether the compiler supports the command-line option +dnl -fvisibility=hidden and the function and variable attributes +dnl __attribute__((__visibility__("hidden"))) and +dnl __attribute__((__visibility__("default"))). +dnl Does *not* test for __visibility__("protected") - which has tricky +dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on +dnl Mac OS X. +dnl Does *not* test for __visibility__("internal") - which has processor +dnl dependent semantics. +dnl Does *not* test for #pragma GCC visibility push(hidden) - which is +dnl "really only recommended for legacy code". +dnl Set the variable CFLAG_VISIBILITY. +dnl Defines and sets the variable HAVE_VISIBILITY. + +AC_DEFUN([gl_VISIBILITY], +[ + AC_REQUIRE([AC_PROG_CC]) + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + dnl First, check whether -Werror can be added to the command line, or + dnl whether it leads to an error because of some other option that the + dnl user has put into $CC $CFLAGS $CPPFLAGS. + AC_CACHE_CHECK([whether the -Werror option is usable], + [gl_cv_cc_vis_werror], + [gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror" + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[]], [[]])], + [gl_cv_cc_vis_werror=yes], + [gl_cv_cc_vis_werror=no]) + CFLAGS="$gl_save_CFLAGS" + ]) + dnl Now check whether visibility declarations are supported. + AC_CACHE_CHECK([for simple visibility declarations], + [gl_cv_cc_visibility], + [gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + dnl We use the option -Werror and a function dummyfunc, because on some + dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning + dnl "visibility attribute not supported in this configuration; ignored" + dnl at the first function definition in every compilation unit, and we + dnl don't want to use the option in this case. + if test $gl_cv_cc_vis_werror = yes; then + CFLAGS="$CFLAGS -Werror" + fi + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); + void dummyfunc (void) {} + ]], + [[]])], + [gl_cv_cc_visibility=yes], + [gl_cv_cc_visibility=no]) + CFLAGS="$gl_save_CFLAGS" + ]) + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + AC_SUBST([CFLAG_VISIBILITY]) + AC_SUBST([HAVE_VISIBILITY]) + AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], + [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) +]) diff --git a/bash-5.1/m4/wchar_t.m4 b/bash-5.1/m4/wchar_t.m4 new file mode 100644 index 0000000..5db5815 --- /dev/null +++ b/bash-5.1/m4/wchar_t.m4 @@ -0,0 +1,24 @@ +# wchar_t.m4 serial 4 (gettext-0.18.2) +dnl Copyright (C) 2002-2003, 2008-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether has the 'wchar_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WCHAR_T], +[ + AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + wchar_t foo = (wchar_t)'\0';]], + [[]])], + [gt_cv_c_wchar_t=yes], + [gt_cv_c_wchar_t=no])]) + if test $gt_cv_c_wchar_t = yes; then + AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) + fi +]) diff --git a/bash-5.1/m4/wint_t.m4 b/bash-5.1/m4/wint_t.m4 new file mode 100644 index 0000000..61e8a23 --- /dev/null +++ b/bash-5.1/m4/wint_t.m4 @@ -0,0 +1,74 @@ +# wint_t.m4 serial 7 +dnl Copyright (C) 2003, 2007-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether has the 'wint_t' type and whether gnulib's +dnl or would, if present, override 'wint_t'. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WINT_T], +[ + AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be included + before . */ +#include +#include +#include +#include + wint_t foo = (wchar_t)'\0';]], + [[]])], + [gt_cv_c_wint_t=yes], + [gt_cv_c_wint_t=no])]) + if test $gt_cv_c_wint_t = yes; then + AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) + + dnl Determine whether gnulib's or would, if present, + dnl override 'wint_t'. + AC_CACHE_CHECK([whether wint_t is too small], + [gl_cv_type_wint_t_too_small], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be + included before . */ +#if !(defined __GLIBC__ && !defined __UCLIBC__) +# include +# include +# include +#endif +#include + int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1]; + ]])], + [gl_cv_type_wint_t_too_small=no], + [gl_cv_type_wint_t_too_small=yes])]) + if test $gl_cv_type_wint_t_too_small = yes; then + GNULIB_OVERRIDES_WINT_T=1 + else + GNULIB_OVERRIDES_WINT_T=0 + fi + else + GNULIB_OVERRIDES_WINT_T=0 + fi + AC_SUBST([GNULIB_OVERRIDES_WINT_T]) +]) + +dnl Prerequisites of the 'wint_t' override. +AC_DEFUN([gl_TYPE_WINT_T_PREREQ], +[ + AC_CHECK_HEADERS_ONCE([crtdefs.h]) + if test $ac_cv_header_crtdefs_h = yes; then + HAVE_CRTDEFS_H=1 + else + HAVE_CRTDEFS_H=0 + fi + AC_SUBST([HAVE_CRTDEFS_H]) +]) diff --git a/bash-5.1/m4/xsize.m4 b/bash-5.1/m4/xsize.m4 new file mode 100644 index 0000000..f2898ba --- /dev/null +++ b/bash-5.1/m4/xsize.m4 @@ -0,0 +1,12 @@ +# xsize.m4 serial 5 +dnl Copyright (C) 2003-2004, 2008-2019 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_XSIZE], +[ + dnl Prerequisites of lib/xsize.h. + AC_REQUIRE([gl_SIZE_MAX]) + AC_CHECK_HEADERS([stdint.h]) +]) diff --git a/bash-5.1/mailcheck.c b/bash-5.1/mailcheck.c new file mode 100644 index 0000000..4a11143 --- /dev/null +++ b/bash-5.1/mailcheck.c @@ -0,0 +1,491 @@ +/* mailcheck.c -- The check is in the mail... */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include +#include "bashtypes.h" +#include "posixstat.h" +#if defined (HAVE_SYS_PARAM_H) +# include +#endif +#if defined (HAVE_UNISTD_H) +# include +#endif +#include "posixtime.h" +#include "bashansi.h" +#include "bashintl.h" + +#include "shell.h" +#include "execute_cmd.h" +#include "mailcheck.h" +#include + +/* Values for flags word in struct _fileinfo */ +#define MBOX_INITIALIZED 0x01 + +extern time_t shell_start_time; + +extern int mailstat PARAMS((const char *, struct stat *)); + +typedef struct _fileinfo { + char *name; + char *msg; + time_t access_time; + time_t mod_time; + off_t file_size; + int flags; +} FILEINFO; + +/* The list of remembered mail files. */ +static FILEINFO **mailfiles = (FILEINFO **)NULL; + +/* Number of mail files that we have. */ +static int mailfiles_count; + +/* The last known time that mail was checked. */ +static time_t last_time_mail_checked = 0; + +/* Non-zero means warn if a mail file has been read since last checked. */ +int mail_warning; + +static int find_mail_file PARAMS((char *)); +static void init_mail_file PARAMS((int)); +static void update_mail_file PARAMS((int)); +static int add_mail_file PARAMS((char *, char *)); + +static FILEINFO *alloc_mail_file PARAMS((char *, char *)); +static void dispose_mail_file PARAMS((FILEINFO *)); + +static int file_mod_date_changed PARAMS((int)); +static int file_access_date_changed PARAMS((int)); +static int file_has_grown PARAMS((int)); + +static char *parse_mailpath_spec PARAMS((char *)); + +/* Returns non-zero if it is time to check mail. */ +int +time_to_check_mail () +{ + char *temp; + time_t now; + intmax_t seconds; + + temp = get_string_value ("MAILCHECK"); + + /* Negative number, or non-numbers (such as empty string) cause no + checking to take place. */ + if (temp == 0 || legal_number (temp, &seconds) == 0 || seconds < 0) + return (0); + + now = NOW; + /* Time to check if MAILCHECK is explicitly set to zero, or if enough + time has passed since the last check. */ + return (seconds == 0 || ((now - last_time_mail_checked) >= seconds)); +} + +/* Okay, we have checked the mail. Perhaps I should make this function + go away. */ +void +reset_mail_timer () +{ + last_time_mail_checked = NOW; +} + +/* Locate a file in the list. Return index of + entry, or -1 if not found. */ +static int +find_mail_file (file) + char *file; +{ + register int i; + + for (i = 0; i < mailfiles_count; i++) + if (STREQ (mailfiles[i]->name, file)) + return i; + + return -1; +} + +#define RESET_MAIL_FILE(i) \ + do \ + { \ + mailfiles[i]->access_time = mailfiles[i]->mod_time = 0; \ + mailfiles[i]->file_size = 0; \ + mailfiles[i]->flags = 0; \ + } \ + while (0) + +#define UPDATE_MAIL_FILE(i, finfo) \ + do \ + { \ + mailfiles[i]->access_time = finfo.st_atime; \ + mailfiles[i]->mod_time = finfo.st_mtime; \ + mailfiles[i]->file_size = finfo.st_size; \ + mailfiles[i]->flags |= MBOX_INITIALIZED; \ + } \ + while (0) + +static void +init_mail_file (i) + int i; +{ + mailfiles[i]->access_time = mailfiles[i]->mod_time = last_time_mail_checked ? last_time_mail_checked : shell_start_time; + mailfiles[i]->file_size = 0; + mailfiles[i]->flags = 0; +} + +static void +update_mail_file (i) + int i; +{ + char *file; + struct stat finfo; + + file = mailfiles[i]->name; + if (mailstat (file, &finfo) == 0) + UPDATE_MAIL_FILE (i, finfo); + else + RESET_MAIL_FILE (i); +} + +/* Add this file to the list of remembered files and return its index + in the list of mail files. */ +static int +add_mail_file (file, msg) + char *file, *msg; +{ + struct stat finfo; + char *filename; + int i; + + filename = full_pathname (file); + i = find_mail_file (filename); + if (i >= 0) + { + if (mailstat (filename, &finfo) == 0) + UPDATE_MAIL_FILE (i, finfo); + + free (filename); + return i; + } + + i = mailfiles_count++; + mailfiles = (FILEINFO **)xrealloc + (mailfiles, mailfiles_count * sizeof (FILEINFO *)); + + mailfiles[i] = alloc_mail_file (filename, msg); + init_mail_file (i); + + return i; +} + +/* Reset the existing mail files access and modification times to zero. */ +void +reset_mail_files () +{ + register int i; + + for (i = 0; i < mailfiles_count; i++) + RESET_MAIL_FILE (i); +} + +static FILEINFO * +alloc_mail_file (filename, msg) + char *filename, *msg; +{ + FILEINFO *mf; + + mf = (FILEINFO *)xmalloc (sizeof (FILEINFO)); + mf->name = filename; + mf->msg = msg ? savestring (msg) : (char *)NULL; + mf->flags = 0; + + return mf; +} + +static void +dispose_mail_file (mf) + FILEINFO *mf; +{ + free (mf->name); + FREE (mf->msg); + free (mf); +} + +/* Free the information that we have about the remembered mail files. */ +void +free_mail_files () +{ + register int i; + + for (i = 0; i < mailfiles_count; i++) + dispose_mail_file (mailfiles[i]); + + if (mailfiles) + free (mailfiles); + + mailfiles_count = 0; + mailfiles = (FILEINFO **)NULL; +} + +void +init_mail_dates () +{ + if (mailfiles == 0) + remember_mail_dates (); +} + +/* Return non-zero if FILE's mod date has changed and it has not been + accessed since modified. If the size has dropped to zero, reset + the cached mail file info. */ +static int +file_mod_date_changed (i) + int i; +{ + time_t mtime; + struct stat finfo; + char *file; + + file = mailfiles[i]->name; + mtime = mailfiles[i]->mod_time; + + if (mailstat (file, &finfo) != 0) + return (0); + + if (finfo.st_size > 0) + return (mtime < finfo.st_mtime); + + if (finfo.st_size == 0 && mailfiles[i]->file_size > 0) + UPDATE_MAIL_FILE (i, finfo); + + return (0); +} + +/* Return non-zero if FILE's access date has changed. */ +static int +file_access_date_changed (i) + int i; +{ + time_t atime; + struct stat finfo; + char *file; + + file = mailfiles[i]->name; + atime = mailfiles[i]->access_time; + + if (mailstat (file, &finfo) != 0) + return (0); + + if (finfo.st_size > 0) + return (atime < finfo.st_atime); + + return (0); +} + +/* Return non-zero if FILE's size has increased. */ +static int +file_has_grown (i) + int i; +{ + off_t size; + struct stat finfo; + char *file; + + file = mailfiles[i]->name; + size = mailfiles[i]->file_size; + + return ((mailstat (file, &finfo) == 0) && (finfo.st_size > size)); +} + +/* Take an element from $MAILPATH and return the portion from + the first unquoted `?' or `%' to the end of the string. This is the + message to be printed when the file contents change. */ +static char * +parse_mailpath_spec (str) + char *str; +{ + char *s; + int pass_next; + + for (s = str, pass_next = 0; s && *s; s++) + { + if (pass_next) + { + pass_next = 0; + continue; + } + if (*s == '\\') + { + pass_next++; + continue; + } + if (*s == '?' || *s == '%') + return s; + } + return ((char *)NULL); +} + +char * +make_default_mailpath () +{ +#if defined (DEFAULT_MAIL_DIRECTORY) + char *mp; + + get_current_user_info (); + mp = (char *)xmalloc (2 + sizeof (DEFAULT_MAIL_DIRECTORY) + strlen (current_user.user_name)); + strcpy (mp, DEFAULT_MAIL_DIRECTORY); + mp[sizeof(DEFAULT_MAIL_DIRECTORY) - 1] = '/'; + strcpy (mp + sizeof (DEFAULT_MAIL_DIRECTORY), current_user.user_name); + return (mp); +#else + return ((char *)NULL); +#endif +} + +/* Remember the dates of the files specified by MAILPATH, or if there is + no MAILPATH, by the file specified in MAIL. If neither exists, use a + default value, which we randomly concoct from using Unix. */ + +void +remember_mail_dates () +{ + char *mailpaths; + char *mailfile, *mp; + int i = 0; + + mailpaths = get_string_value ("MAILPATH"); + + /* If no $MAILPATH, but $MAIL, use that as a single filename to check. */ + if (mailpaths == 0 && (mailpaths = get_string_value ("MAIL"))) + { + add_mail_file (mailpaths, (char *)NULL); + return; + } + + if (mailpaths == 0) + { + mailpaths = make_default_mailpath (); + if (mailpaths) + { + add_mail_file (mailpaths, (char *)NULL); + free (mailpaths); + } + return; + } + + while (mailfile = extract_colon_unit (mailpaths, &i)) + { + mp = parse_mailpath_spec (mailfile); + if (mp && *mp) + *mp++ = '\0'; + add_mail_file (mailfile, mp); + free (mailfile); + } +} + +/* check_mail () is useful for more than just checking mail. Since it has + the paranoids dream ability of telling you when someone has read your + mail, it can just as easily be used to tell you when someones .profile + file has been read, thus letting one know when someone else has logged + in. Pretty good, huh? */ + +/* Check for mail in some files. If the modification date of any + of the files in MAILPATH has changed since we last did a + remember_mail_dates () then mention that the user has mail. + Special hack: If the variable MAIL_WARNING is non-zero and the + mail file has been accessed since the last time we remembered, then + the message "The mail in has been read" is printed. */ +void +check_mail () +{ + char *current_mail_file, *message; + int i, use_user_notification; + char *dollar_underscore, *temp; + + dollar_underscore = get_string_value ("_"); + if (dollar_underscore) + dollar_underscore = savestring (dollar_underscore); + + for (i = 0; i < mailfiles_count; i++) + { + current_mail_file = mailfiles[i]->name; + + if (*current_mail_file == '\0') + continue; + + if (file_mod_date_changed (i)) + { + int file_is_bigger; + + use_user_notification = mailfiles[i]->msg != (char *)NULL; + message = mailfiles[i]->msg ? mailfiles[i]->msg : _("You have mail in $_"); + + bind_variable ("_", current_mail_file, 0); + +#define atime mailfiles[i]->access_time +#define mtime mailfiles[i]->mod_time + + /* Have to compute this before the call to update_mail_file, which + resets all the information. */ + file_is_bigger = file_has_grown (i); + + update_mail_file (i); + + /* If the user has just run a program which manipulates the + mail file, then don't bother explaining that the mail + file has been manipulated. Since some systems don't change + the access time to be equal to the modification time when + the mail in the file is manipulated, check the size also. If + the file has not grown, continue. */ + if ((atime >= mtime) && !file_is_bigger) + continue; + + /* If the mod time is later than the access time and the file + has grown, note the fact that this is *new* mail. */ + if (use_user_notification == 0 && (atime < mtime) && file_is_bigger) + message = _("You have new mail in $_"); +#undef atime +#undef mtime + + if (temp = expand_string_to_string (message, Q_DOUBLE_QUOTES)) + { + puts (temp); + free (temp); + } + else + putchar ('\n'); + } + + if (mail_warning && file_access_date_changed (i)) + { + update_mail_file (i); + printf (_("The mail in %s has been read\n"), current_mail_file); + } + } + + if (dollar_underscore) + { + bind_variable ("_", dollar_underscore, 0); + free (dollar_underscore); + } + else + unbind_variable ("_"); +} diff --git a/bash-5.1/mailcheck.h b/bash-5.1/mailcheck.h new file mode 100644 index 0000000..e930124 --- /dev/null +++ b/bash-5.1/mailcheck.h @@ -0,0 +1,34 @@ +/* mailcheck.h -- variables and function declarations for mail checking. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_MAILCHECK_H_) +#define _MAILCHECK_H_ + +/* Functions from mailcheck.c */ +extern int time_to_check_mail PARAMS((void)); +extern void reset_mail_timer PARAMS((void)); +extern void reset_mail_files PARAMS((void)); +extern void free_mail_files PARAMS((void)); +extern char *make_default_mailpath PARAMS((void)); +extern void remember_mail_dates PARAMS((void)); +extern void init_mail_dates PARAMS((void)); +extern void check_mail PARAMS((void)); + +#endif /* _MAILCHECK_H */ diff --git a/bash-5.1/make_cmd.c b/bash-5.1/make_cmd.c new file mode 100644 index 0000000..ac53526 --- /dev/null +++ b/bash-5.1/make_cmd.c @@ -0,0 +1,944 @@ +/* make_cmd.c -- Functions for making instances of the various + parser constructs. */ + +/* Copyright (C) 1989-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include +#include "bashtypes.h" +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif +#include "filecntl.h" +#include "bashansi.h" +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashintl.h" + +#include "shell.h" +#include "builtins.h" +#include "builtins/common.h" +#include "execute_cmd.h" +#include "parser.h" +#include "flags.h" +#include "input.h" + +#if defined (JOB_CONTROL) +#include "jobs.h" +#endif + +#include "shmbutil.h" + +int here_doc_first_line = 0; + +/* Object caching */ +sh_obj_cache_t wdcache = {0, 0, 0}; +sh_obj_cache_t wlcache = {0, 0, 0}; + +#define WDCACHESIZE 128 +#define WLCACHESIZE 128 + +static COMMAND *make_for_or_select PARAMS((enum command_type, WORD_DESC *, WORD_LIST *, COMMAND *, int)); +#if defined (ARITH_FOR_COMMAND) +static WORD_LIST *make_arith_for_expr PARAMS((char *)); +#endif +static COMMAND *make_until_or_while PARAMS((enum command_type, COMMAND *, COMMAND *)); + +void +cmd_init () +{ + ocache_create (wdcache, WORD_DESC, WDCACHESIZE); + ocache_create (wlcache, WORD_LIST, WLCACHESIZE); +} + +WORD_DESC * +alloc_word_desc () +{ + WORD_DESC *temp; + + ocache_alloc (wdcache, WORD_DESC, temp); + temp->flags = 0; + temp->word = 0; + return temp; +} + +WORD_DESC * +make_bare_word (string) + const char *string; +{ + WORD_DESC *temp; + + temp = alloc_word_desc (); + + if (*string) + temp->word = savestring (string); + else + { + temp->word = (char *)xmalloc (1); + temp->word[0] = '\0'; + } + + return (temp); +} + +WORD_DESC * +make_word_flags (w, string) + WORD_DESC *w; + const char *string; +{ + register int i; + size_t slen; + DECLARE_MBSTATE; + + i = 0; + slen = strlen (string); + while (i < slen) + { + switch (string[i]) + { + case '$': + w->flags |= W_HASDOLLAR; + break; + case '\\': + break; /* continue the loop */ + case '\'': + case '`': + case '"': + w->flags |= W_QUOTED; + break; + } + + ADVANCE_CHAR (string, slen, i); + } + + return (w); +} + +WORD_DESC * +make_word (string) + const char *string; +{ + WORD_DESC *temp; + + temp = make_bare_word (string); + return (make_word_flags (temp, string)); +} + +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, wlink) + WORD_DESC *word; + WORD_LIST *wlink; +{ + WORD_LIST *temp; + + ocache_alloc (wlcache, WORD_LIST, temp); + + temp->word = word; + temp->next = wlink; + return (temp); +} + +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 = 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)); +} + +static COMMAND * +make_for_or_select (type, name, map_list, action, lineno) + enum command_type type; + WORD_DESC *name; + WORD_LIST *map_list; + COMMAND *action; + int lineno; +{ + FOR_COM *temp; + + temp = (FOR_COM *)xmalloc (sizeof (FOR_COM)); + temp->flags = 0; + temp->name = name; + temp->line = lineno; + temp->map_list = map_list; + temp->action = action; + return (make_command (type, (SIMPLE_COM *)temp)); +} + +COMMAND * +make_for_command (name, map_list, action, lineno) + WORD_DESC *name; + WORD_LIST *map_list; + COMMAND *action; + int lineno; +{ + return (make_for_or_select (cm_for, name, map_list, action, lineno)); +} + +COMMAND * +make_select_command (name, map_list, action, lineno) + WORD_DESC *name; + WORD_LIST *map_list; + COMMAND *action; + int lineno; +{ +#if defined (SELECT_COMMAND) + return (make_for_or_select (cm_select, name, map_list, action, lineno)); +#else + set_exit_status (2); + return ((COMMAND *)NULL); +#endif +} + +#if defined (ARITH_FOR_COMMAND) +static WORD_LIST * +make_arith_for_expr (s) + char *s; +{ + WORD_LIST *result; + WORD_DESC *wd; + + if (s == 0 || *s == '\0') + return ((WORD_LIST *)NULL); + wd = make_word (s); + wd->flags |= W_NOGLOB|W_NOSPLIT|W_QUOTED|W_DQUOTE; /* no word splitting or globbing */ +#if defined (PROCESS_SUBSTITUTION) + wd->flags |= W_NOPROCSUB; /* no process substitution */ +#endif + result = make_word_list (wd, (WORD_LIST *)NULL); + return result; +} +#endif + +/* Note that this function calls dispose_words on EXPRS, since it doesn't + use the word list directly. We free it here rather than at the caller + because no other function in this file requires that the caller free + any arguments. */ +COMMAND * +make_arith_for_command (exprs, action, lineno) + WORD_LIST *exprs; + COMMAND *action; + int lineno; +{ +#if defined (ARITH_FOR_COMMAND) + ARITH_FOR_COM *temp; + WORD_LIST *init, *test, *step; + char *s, *t, *start; + int nsemi, i; + + init = test = step = (WORD_LIST *)NULL; + /* Parse the string into the three component sub-expressions. */ + start = t = s = exprs->word->word; + for (nsemi = 0; ;) + { + /* skip whitespace at the start of each sub-expression. */ + while (whitespace (*s)) + s++; + start = s; + /* skip to the semicolon or EOS */ + i = skip_to_delim (start, 0, ";", SD_NOJMP|SD_NOPROCSUB); + s = start + i; + + t = (i > 0) ? substring (start, 0, i) : (char *)NULL; + + nsemi++; + switch (nsemi) + { + case 1: + init = make_arith_for_expr (t); + break; + case 2: + test = make_arith_for_expr (t); + break; + case 3: + step = make_arith_for_expr (t); + break; + } + + FREE (t); + if (*s == '\0') + break; + s++; /* skip over semicolon */ + } + + if (nsemi != 3) + { + if (nsemi < 3) + parser_error (lineno, _("syntax error: arithmetic expression required")); + else + parser_error (lineno, _("syntax error: `;' unexpected")); + parser_error (lineno, _("syntax error: `((%s))'"), exprs->word->word); + free (init); + free (test); + free (step); + set_exit_status (2); + return ((COMMAND *)NULL); + } + + temp = (ARITH_FOR_COM *)xmalloc (sizeof (ARITH_FOR_COM)); + temp->flags = 0; + temp->line = lineno; + temp->init = init ? init : make_arith_for_expr ("1"); + temp->test = test ? test : make_arith_for_expr ("1"); + temp->step = step ? step : make_arith_for_expr ("1"); + temp->action = action; + + dispose_words (exprs); + return (make_command (cm_arith_for, (SIMPLE_COM *)temp)); +#else + dispose_words (exprs); + set_exit_status (2); + return ((COMMAND *)NULL); +#endif /* ARITH_FOR_COMMAND */ +} + +COMMAND * +make_group_command (command) + COMMAND *command; +{ + GROUP_COM *temp; + + temp = (GROUP_COM *)xmalloc (sizeof (GROUP_COM)); + temp->command = command; + return (make_command (cm_group, (SIMPLE_COM *)temp)); +} + +COMMAND * +make_case_command (word, clauses, lineno) + WORD_DESC *word; + PATTERN_LIST *clauses; + int lineno; +{ + CASE_COM *temp; + + temp = (CASE_COM *)xmalloc (sizeof (CASE_COM)); + temp->flags = 0; + temp->line = lineno; + temp->word = word; + temp->clauses = REVERSE_LIST (clauses, PATTERN_LIST *); + 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 = REVERSE_LIST (patterns, WORD_LIST *); + temp->action = action; + temp->next = NULL; + temp->flags = 0; + 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)); +} + +static COMMAND * +make_until_or_while (which, test, action) + enum command_type which; + COMMAND *test, *action; +{ + 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 (cm_while, test, action)); +} + +COMMAND * +make_until_command (test, action) + COMMAND *test, *action; +{ + return (make_until_or_while (cm_until, test, action)); +} + +COMMAND * +make_arith_command (exp) + WORD_LIST *exp; +{ +#if defined (DPAREN_ARITHMETIC) + COMMAND *command; + ARITH_COM *temp; + + command = (COMMAND *)xmalloc (sizeof (COMMAND)); + command->value.Arith = temp = (ARITH_COM *)xmalloc (sizeof (ARITH_COM)); + + temp->flags = 0; + temp->line = line_number; + temp->exp = exp; + + command->type = cm_arith; + command->redirects = (REDIRECT *)NULL; + command->flags = 0; + + return (command); +#else + set_exit_status (2); + return ((COMMAND *)NULL); +#endif +} + +#if defined (COND_COMMAND) +struct cond_com * +make_cond_node (type, op, left, right) + int type; + WORD_DESC *op; + struct cond_com *left, *right; +{ + COND_COM *temp; + + temp = (COND_COM *)xmalloc (sizeof (COND_COM)); + temp->flags = 0; + temp->line = line_number; + temp->type = type; + temp->op = op; + temp->left = left; + temp->right = right; + + return (temp); +} +#endif + +COMMAND * +make_cond_command (cond_node) + COND_COM *cond_node; +{ +#if defined (COND_COMMAND) + COMMAND *command; + + command = (COMMAND *)xmalloc (sizeof (COMMAND)); + command->value.Cond = cond_node; + + command->type = cm_cond; + command->redirects = (REDIRECT *)NULL; + command->flags = 0; + command->line = cond_node ? cond_node->line : 0; + + return (command); +#else + set_exit_status (2); + return ((COMMAND *)NULL); +#endif +} + +COMMAND * +make_bare_simple_command () +{ + COMMAND *command; + SIMPLE_COM *temp; + + command = (COMMAND *)xmalloc (sizeof (COMMAND)); + command->value.Simple = temp = (SIMPLE_COM *)xmalloc (sizeof (SIMPLE_COM)); + + temp->flags = 0; + temp->line = line_number; + temp->words = (WORD_LIST *)NULL; + temp->redirects = (REDIRECT *)NULL; + + command->type = cm_simple; + command->redirects = (REDIRECT *)NULL; + command->flags = 0; + + return (command); +} + +/* 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 == 0) + { + command = make_bare_simple_command (); + parser_state |= PST_REDIRLIST; + } + + if (element.word) + { + command->value.Simple->words = make_word_list (element.word, command->value.Simple->words); + parser_state &= ~PST_REDIRLIST; + } + else if (element.redirect) + { + 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); +} + +/* 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. */ +void +make_here_document (temp, lineno) + REDIRECT *temp; + int lineno; +{ + int kill_leading, redir_len; + char *redir_word, *document, *full_line; + int document_index, document_size, delim_unquoted; + + if (temp->instruction != r_deblank_reading_until && + temp->instruction != r_reading_until) + { + internal_error (_("make_here_document: bad instruction type %d"), temp->instruction); + return; + } + + kill_leading = temp->instruction == r_deblank_reading_until; + + document = (char *)NULL; + document_index = document_size = 0; + + /* Quote removal is the only expansion performed on the delimiter + for here documents, making it an extremely special case. */ + redir_word = string_quote_removal (temp->redirectee.filename->word, 0); + + /* 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 (redir_word) + redir_len = strlen (redir_word); + else + { + temp->here_doc_eof = (char *)xmalloc (1); + temp->here_doc_eof[0] = '\0'; + goto document_done; + } + + free (temp->redirectee.filename->word); + temp->here_doc_eof = redir_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 redir_word exactly, then we have + manufactured the document. Otherwise, add the line to the + list of lines in the document. */ + + /* If the here-document delimiter was quoted, the lines should + be read verbatim from the input. If it was not quoted, we + need to perform backslash-quoted newline removal. */ + delim_unquoted = (temp->redirectee.filename->flags & W_QUOTED) == 0; + while (full_line = read_secondary_line (delim_unquoted)) + { + register char *line; + int len; + + here_doc_first_line = 0; + line = full_line; + line_number++; + + /* If set -v is in effect, echo the line read. read_secondary_line/ + read_a_line leaves the newline at the end, so don't print another. */ + if (echo_input_at_read) + fprintf (stderr, "%s", line); + + if (kill_leading && *line) + { + /* Hack: To be compatible with some Bourne shells, we + check the word before stripping the whitespace. This + is a hack, though. */ + if (STREQN (line, redir_word, redir_len) && line[redir_len] == '\n') + goto document_done; + + while (*line == '\t') + line++; + } + + if (*line == 0) + continue; + + if (STREQN (line, redir_word, redir_len) && line[redir_len] == '\n') + goto document_done; + + len = strlen (line); + if (len + document_index >= document_size) + { + document_size = document_size ? 2 * (document_size + len) : len + 2; + document = (char *)xrealloc (document, document_size); + } + + /* len is guaranteed to be > 0 because of the check for line + being an empty string before the call to strlen. */ + FASTCOPY (line, document + document_index, len); + document_index += len; + } + + if (full_line == 0) + internal_warning (_("here-document at line %d delimited by end-of-file (wanted `%s')"), lineno, redir_word); + +document_done: + if (document) + document[document_index] = '\0'; + else + { + document = (char *)xmalloc (1); + document[0] = '\0'; + } + temp->redirectee.filename->word = document; + here_doc_first_line = 0; +} + +/* Generate a REDIRECT from SOURCE, DEST, and INSTRUCTION. + INSTRUCTION is the instruction type, SOURCE is a file descriptor, + and DEST is a file descriptor or a WORD_DESC *. */ +REDIRECT * +make_redirection (source, instruction, dest_and_filename, flags) + REDIRECTEE source; + enum r_instruction instruction; + REDIRECTEE dest_and_filename; + int flags; +{ + REDIRECT *temp; + WORD_DESC *w; + int wlen; + intmax_t lfd; + + temp = (REDIRECT *)xmalloc (sizeof (REDIRECT)); + + /* First do the common cases. */ + temp->redirector = source; + temp->redirectee = dest_and_filename; + temp->here_doc_eof = 0; + temp->instruction = instruction; + temp->flags = 0; + temp->rflags = flags; + temp->next = (REDIRECT *)NULL; + + switch (instruction) + { + + case r_output_direction: /* >foo */ + case r_output_force: /* >| foo */ + case r_err_and_out: /* &>filename */ + temp->flags = O_TRUNC | O_WRONLY | O_CREAT; + break; + + case r_appending_to: /* >>foo */ + case r_append_err_and_out: /* &>> filename */ + temp->flags = O_APPEND | O_WRONLY | O_CREAT; + break; + + case r_input_direction: /* flags = O_RDONLY; + break; + + case r_input_output: /* <>foo */ + temp->flags = O_RDWR | O_CREAT; + break; + + case r_deblank_reading_until: /* <<-foo */ + case r_reading_until: /* << foo */ + case r_reading_string: /* <<< foo */ + case r_close_this: /* <&- */ + case r_duplicating_input: /* 1<&2 */ + case r_duplicating_output: /* 1>&2 */ + break; + + /* the parser doesn't pass these. */ + case r_move_input: /* 1<&2- */ + case r_move_output: /* 1>&2- */ + case r_move_input_word: /* 1<&$foo- */ + case r_move_output_word: /* 1>&$foo- */ + break; + + /* The way the lexer works we have to do this here. */ + case r_duplicating_input_word: /* 1<&$foo */ + case r_duplicating_output_word: /* 1>&$foo */ + w = dest_and_filename.filename; + wlen = strlen (w->word) - 1; + if (w->word[wlen] == '-') /* Yuck */ + { + w->word[wlen] = '\0'; + if (all_digits (w->word) && legal_number (w->word, &lfd) && lfd == (int)lfd) + { + dispose_word (w); + temp->instruction = (instruction == r_duplicating_input_word) ? r_move_input : r_move_output; + temp->redirectee.dest = lfd; + } + else + temp->instruction = (instruction == r_duplicating_input_word) ? r_move_input_word : r_move_output_word; + } + + break; + + default: + programming_error (_("make_redirection: redirection instruction `%d' out of range"), instruction); + abort (); + break; + } + return (temp); +} + +COMMAND * +make_function_def (name, command, lineno, lstart) + WORD_DESC *name; + COMMAND *command; + int lineno, lstart; +{ + FUNCTION_DEF *temp; +#if defined (ARRAY_VARS) + SHELL_VAR *bash_source_v; + ARRAY *bash_source_a; +#endif + + temp = (FUNCTION_DEF *)xmalloc (sizeof (FUNCTION_DEF)); + temp->command = command; + temp->name = name; + temp->line = lineno; + temp->flags = 0; + command->line = lstart; + + /* Information used primarily for debugging. */ + temp->source_file = 0; +#if defined (ARRAY_VARS) + GET_ARRAY_FROM_VAR ("BASH_SOURCE", bash_source_v, bash_source_a); + if (bash_source_a && array_num_elements (bash_source_a) > 0) + temp->source_file = array_reference (bash_source_a, 0); +#endif + /* Assume that shell functions without a source file before the shell is + initialized come from the environment. Otherwise default to "main" + (usually functions being defined interactively) */ + if (temp->source_file == 0) + temp->source_file = shell_initialized ? "main" : "environment"; + +#if defined (DEBUGGER) + bind_function_def (name->word, temp, 0); +#endif + + temp->source_file = temp->source_file ? savestring (temp->source_file) : 0; + + return (make_command (cm_function_def, (SIMPLE_COM *)temp)); +} + +COMMAND * +make_subshell_command (command) + COMMAND *command; +{ + SUBSHELL_COM *temp; + + temp = (SUBSHELL_COM *)xmalloc (sizeof (SUBSHELL_COM)); + temp->command = command; + temp->flags = CMD_WANT_SUBSHELL; + temp->line = line_number; + return (make_command (cm_subshell, (SIMPLE_COM *)temp)); +} + +COMMAND * +make_coproc_command (name, command) + char *name; + COMMAND *command; +{ + COPROC_COM *temp; + + temp = (COPROC_COM *)xmalloc (sizeof (COPROC_COM)); + temp->name = savestring (name); + temp->command = command; + temp->flags = CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + return (make_command (cm_coproc, (SIMPLE_COM *)temp)); +} + +static void +output_requirement (deptype, filename) +const char *deptype; +char *filename; +{ + static char *alphabet_set = "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + + if (strchr(filename, '$') || (filename[0] != '/' && strchr(filename, '/'))) + return; + + /* + if the executable is called via variable substitution we can + not dermine what it is at compile time. + + if the executable consists only of characters not in the + alphabet we do not consider it a dependency just an artifact + of shell parsing (ex "exec < ${infile}"). + */ + + if (strpbrk(filename, alphabet_set)) + printf ("%s(%s)\n", deptype, filename); +} + +/* 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; +{ + if (command->type != cm_simple) + command_error ("clean_simple_command", CMDERR_BADTYPE, command->type, 0); + else + { + command->value.Simple->words = + REVERSE_LIST (command->value.Simple->words, WORD_LIST *); + command->value.Simple->redirects = + REVERSE_LIST (command->value.Simple->redirects, REDIRECT *); + } + + if (rpm_requires && command->value.Simple->words) + { + char *cmd0; + char *cmd1; + struct builtin *b; + + cmd0 = command->value.Simple->words->word->word; + b = builtin_address_internal (cmd0, 0); + cmd1 = 0; + if (command->value.Simple->words->next) + cmd1 = command->value.Simple->words->next->word->word; + + if (b) { + if ( (b->flags & REQUIRES_BUILTIN) && cmd1) + output_requirement ("executable", cmd1); + } else { + if (!assignment(cmd0, 0)) + output_requirement (find_function(cmd0) ? "function" : "executable", cmd0); + } + } /*rpm_requires*/ + + + parser_state &= ~PST_REDIRLIST; + return (command); +} + +/* The Yacc grammar productions have a problem, in that they take a + list followed by an ampersand (`&') and do a simple command connection, + making the entire list effectively asynchronous, instead of just + the last command. This means that when the list is executed, all + the commands have stdin set to /dev/null when job control is not + active, instead of just the last. This is wrong, and needs fixing + up. This function takes the `&' and applies it to the last command + in the list. This is done only for lists connected by `;'; it makes + `;' bind `tighter' than `&'. */ +COMMAND * +connect_async_list (command, command2, connector) + COMMAND *command, *command2; + int connector; +{ + COMMAND *t, *t1, *t2; + + t1 = command; + t = command->value.Connection->second; + + if (!t || (command->flags & CMD_WANT_SUBSHELL) || + command->value.Connection->connector != ';') + { + t = command_connect (command, command2, connector); + return t; + } + + /* This is just defensive programming. The Yacc precedence rules + will generally hand this function a command where t points directly + to the command we want (e.g. given a ; b ; c ; d &, t1 will point + to the `a ; b ; c' list and t will be the `d'). We only want to do + this if the list is not being executed as a unit in the background + with `( ... )', so we have to check for CMD_WANT_SUBSHELL. That's + the only way to tell. */ + while (((t->flags & CMD_WANT_SUBSHELL) == 0) && t->type == cm_connection && + t->value.Connection->connector == ';') + { + t1 = t; + t = t->value.Connection->second; + } + /* Now we have t pointing to the last command in the list, and + t1->value.Connection->second == t. */ + t2 = command_connect (t, command2, connector); + t1->value.Connection->second = t2; + return command; +} diff --git a/bash-5.1/make_cmd.h b/bash-5.1/make_cmd.h new file mode 100644 index 0000000..bf1fb00 --- /dev/null +++ b/bash-5.1/make_cmd.h @@ -0,0 +1,72 @@ +/* make_cmd.h -- Declarations of functions found in make_cmd.c */ + +/* Copyright (C) 1993-2009,2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_MAKE_CMD_H_) +#define _MAKE_CMD_H_ + +#include "stdc.h" + +extern int here_doc_first_line; + +extern void cmd_init PARAMS((void)); + +extern WORD_DESC *alloc_word_desc PARAMS((void)); +extern WORD_DESC *make_bare_word PARAMS((const char *)); +extern WORD_DESC *make_word_flags PARAMS((WORD_DESC *, const char *)); +extern WORD_DESC *make_word PARAMS((const char *)); +extern WORD_DESC *make_word_from_token PARAMS((int)); + +extern WORD_LIST *make_word_list PARAMS((WORD_DESC *, WORD_LIST *)); + +#define add_string_to_list(s, l) make_word_list (make_word(s), (l)) + +extern COMMAND *make_command PARAMS((enum command_type, SIMPLE_COM *)); +extern COMMAND *command_connect PARAMS((COMMAND *, COMMAND *, int)); +extern COMMAND *make_for_command PARAMS((WORD_DESC *, WORD_LIST *, COMMAND *, int)); +extern COMMAND *make_group_command PARAMS((COMMAND *)); +extern COMMAND *make_case_command PARAMS((WORD_DESC *, PATTERN_LIST *, int)); +extern PATTERN_LIST *make_pattern_list PARAMS((WORD_LIST *, COMMAND *)); +extern COMMAND *make_if_command PARAMS((COMMAND *, COMMAND *, COMMAND *)); +extern COMMAND *make_while_command PARAMS((COMMAND *, COMMAND *)); +extern COMMAND *make_until_command PARAMS((COMMAND *, COMMAND *)); +extern COMMAND *make_bare_simple_command PARAMS((void)); +extern COMMAND *make_simple_command PARAMS((ELEMENT, COMMAND *)); +extern void make_here_document PARAMS((REDIRECT *, int)); +extern REDIRECT *make_redirection PARAMS((REDIRECTEE, enum r_instruction, REDIRECTEE, int)); +extern COMMAND *make_function_def PARAMS((WORD_DESC *, COMMAND *, int, int)); +extern COMMAND *clean_simple_command PARAMS((COMMAND *)); + +extern COMMAND *make_arith_command PARAMS((WORD_LIST *)); + +extern COMMAND *make_select_command PARAMS((WORD_DESC *, WORD_LIST *, COMMAND *, int)); + +#if defined (COND_COMMAND) +extern COND_COM *make_cond_node PARAMS((int, WORD_DESC *, COND_COM *, COND_COM *)); +extern COMMAND *make_cond_command PARAMS((COND_COM *)); +#endif + +extern COMMAND *make_arith_for_command PARAMS((WORD_LIST *, COMMAND *, int)); + +extern COMMAND *make_subshell_command PARAMS((COMMAND *)); +extern COMMAND *make_coproc_command PARAMS((char *, COMMAND *)); + +extern COMMAND *connect_async_list PARAMS((COMMAND *, COMMAND *, int)); + +#endif /* !_MAKE_CMD_H */ diff --git a/bash-5.1/mksyntax.c b/bash-5.1/mksyntax.c new file mode 100644 index 0000000..0385686 --- /dev/null +++ b/bash-5.1/mksyntax.c @@ -0,0 +1,415 @@ +/* + * mksyntax.c - construct shell syntax table for fast char attribute lookup. + */ + +/* Copyright (C) 2000-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include +#include "bashansi.h" +#include "chartypes.h" +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#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 +#if defined (HAVE_SYS_PARAM_H) +# 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/bash-5.1/nojobs.c b/bash-5.1/nojobs.c new file mode 100644 index 0000000..c5fc83d --- /dev/null +++ b/bash-5.1/nojobs.c @@ -0,0 +1,1070 @@ +/* nojobs.c - functions that make children, remember them, and handle their termination. */ + +/* This file works under BSD, System V, minix, and Posix systems. It does + not implement job control. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" +#include "filecntl.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include +#include +#include + +#if defined (BUFFERED_INPUT) +# include "input.h" +#endif + +/* Need to include this up here for *_TTY_DRIVER definitions. */ +#include "shtty.h" + +#include "bashintl.h" + +#include "shell.h" +#include "jobs.h" +#include "execute_cmd.h" +#include "trap.h" + +#include "builtins/builtext.h" /* for wait_builtin */ +#include "builtins/common.h" + +#define DEFAULT_CHILD_MAX 4096 + +#if defined (_POSIX_VERSION) || !defined (HAVE_KILLPG) +# define killpg(pg, sig) kill(-(pg),(sig)) +#endif /* USG || _POSIX_VERSION */ + +#if !defined (HAVE_SIGINTERRUPT) && !defined (HAVE_POSIX_SIGNALS) +# define siginterrupt(sig, code) +#endif /* !HAVE_SIGINTERRUPT && !HAVE_POSIX_SIGNALS */ + +#if defined (HAVE_WAITPID) +# define WAITPID(pid, statusp, options) waitpid (pid, statusp, options) +#else +# define WAITPID(pid, statusp, options) wait (statusp) +#endif /* !HAVE_WAITPID */ + +/* Return the fd from which we are actually getting input. */ +#define input_tty() (shell_tty != -1) ? shell_tty : fileno (stderr) + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +extern void set_original_signal PARAMS((int, SigHandler *)); + +volatile pid_t last_made_pid = NO_PID; +volatile pid_t last_asynchronous_pid = NO_PID; + +static int queue_sigchld; /* dummy declaration */ +int waiting_for_child; + +/* Call this when you start making children. */ +int already_making_children = 0; + +/* The controlling tty for this shell. */ +int shell_tty = -1; + +/* If this is non-zero, $LINES and $COLUMNS are reset after every process + exits from get_tty_state(). */ +int check_window_size = CHECKWINSIZE_DEFAULT; + +/* We don't have job control. */ +int job_control = 0; + +int running_in_background = 0; /* can't tell without job control */ + +/* STATUS and FLAGS are only valid if pid != NO_PID + STATUS is only valid if (flags & PROC_RUNNING) == 0 */ +struct proc_status { + pid_t pid; + int status; /* Exit status of PID or 128 + fatal signal number */ + int flags; +}; + +/* Values for proc_status.flags */ +#define PROC_RUNNING 0x01 +#define PROC_NOTIFIED 0x02 +#define PROC_ASYNC 0x04 +#define PROC_SIGNALED 0x10 + +/* Return values from find_status_by_pid */ +#define PROC_BAD -1 +#define PROC_STILL_ALIVE -2 + +static struct proc_status *pid_list = (struct proc_status *)NULL; +static int pid_list_size; +static int wait_sigint_received; + +static long child_max = -1L; + +static void alloc_pid_list PARAMS((void)); +static int find_proc_slot PARAMS((pid_t)); +static int find_index_by_pid PARAMS((pid_t)); +static int find_status_by_pid PARAMS((pid_t)); +static int process_exit_status PARAMS((WAIT)); +static int find_termsig_by_pid PARAMS((pid_t)); +static int get_termsig PARAMS((WAIT)); +static void set_pid_status PARAMS((pid_t, WAIT)); +static void set_pid_flags PARAMS((pid_t, int)); +static void unset_pid_flags PARAMS((pid_t, int)); +static int get_pid_flags PARAMS((pid_t)); +static void add_pid PARAMS((pid_t, int)); +static void mark_dead_jobs_as_notified PARAMS((int)); + +static sighandler wait_sigint_handler PARAMS((int)); +static char *j_strsignal PARAMS((int)); + +#if defined (HAVE_WAITPID) +static void reap_zombie_children PARAMS((void)); +#endif + +#if !defined (HAVE_SIGINTERRUPT) && defined (HAVE_POSIX_SIGNALS) +static int siginterrupt PARAMS((int, int)); +#endif + +static void restore_sigint_handler PARAMS((void)); + +/* Allocate new, or grow existing PID_LIST. */ +static void +alloc_pid_list () +{ + register int i; + int old = pid_list_size; + + pid_list_size += 10; + pid_list = (struct proc_status *)xrealloc (pid_list, pid_list_size * sizeof (struct proc_status)); + + /* None of the newly allocated slots have process id's yet. */ + for (i = old; i < pid_list_size; i++) + { + pid_list[i].pid = NO_PID; + pid_list[i].status = pid_list[i].flags = 0; + } +} + +/* Return the offset within the PID_LIST array of an empty slot. This can + create new slots if all of the existing slots are taken. */ +static int +find_proc_slot (pid) + pid_t pid; +{ + register int i; + + for (i = 0; i < pid_list_size; i++) + if (pid_list[i].pid == NO_PID || pid_list[i].pid == pid) + return (i); + + if (i == pid_list_size) + alloc_pid_list (); + + return (i); +} + +/* Return the offset within the PID_LIST array of a slot containing PID, + or the value NO_PID if the pid wasn't found. */ +static int +find_index_by_pid (pid) + pid_t pid; +{ + register int i; + + for (i = 0; i < pid_list_size; i++) + if (pid_list[i].pid == pid) + return (i); + + return (NO_PID); +} + +/* Return the status of PID as looked up in the PID_LIST array. A + return value of PROC_BAD indicates that PID wasn't found. */ +static int +find_status_by_pid (pid) + pid_t pid; +{ + int i; + + i = find_index_by_pid (pid); + if (i == NO_PID) + return (PROC_BAD); + if (pid_list[i].flags & PROC_RUNNING) + return (PROC_STILL_ALIVE); + return (pid_list[i].status); +} + +static int +process_exit_status (status) + WAIT status; +{ + if (WIFSIGNALED (status)) + return (128 + WTERMSIG (status)); + else + return (WEXITSTATUS (status)); +} + +/* Return the status of PID as looked up in the PID_LIST array. A + return value of PROC_BAD indicates that PID wasn't found. */ +static int +find_termsig_by_pid (pid) + pid_t pid; +{ + int i; + + i = find_index_by_pid (pid); + if (i == NO_PID) + return (0); + if (pid_list[i].flags & PROC_RUNNING) + return (0); + return (get_termsig ((WAIT)pid_list[i].status)); +} + +/* Set LAST_COMMAND_EXIT_SIGNAL depending on STATUS. If STATUS is -1, look + up PID in the pid array and set LAST_COMMAND_EXIT_SIGNAL appropriately + depending on its flags and exit status. */ +static int +get_termsig (status) + WAIT status; +{ + if (WIFSTOPPED (status) == 0 && WIFSIGNALED (status)) + return (WTERMSIG (status)); + else + return (0); +} + +/* Give PID the status value STATUS in the PID_LIST array. */ +static void +set_pid_status (pid, status) + pid_t pid; + WAIT status; +{ + int slot; + +#if defined (COPROCESS_SUPPORT) + coproc_pidchk (pid, status); +#endif + +#if defined (PROCESS_SUBSTITUTION) + if ((slot = find_procsub_child (pid)) >= 0) + set_procsub_status (slot, pid, WSTATUS (status)); + /* XXX - also saving in list below */ +#endif + + slot = find_index_by_pid (pid); + if (slot == NO_PID) + return; + + pid_list[slot].status = process_exit_status (status); + pid_list[slot].flags &= ~PROC_RUNNING; + if (WIFSIGNALED (status)) + pid_list[slot].flags |= PROC_SIGNALED; + /* If it's not a background process, mark it as notified so it gets + cleaned up. */ + if ((pid_list[slot].flags & PROC_ASYNC) == 0) + pid_list[slot].flags |= PROC_NOTIFIED; +} + +/* Give PID the flags FLAGS in the PID_LIST array. */ +static void +set_pid_flags (pid, flags) + pid_t pid; + int flags; +{ + int slot; + + slot = find_index_by_pid (pid); + if (slot == NO_PID) + return; + + pid_list[slot].flags |= flags; +} + +/* Unset FLAGS for PID in the pid list */ +static void +unset_pid_flags (pid, flags) + pid_t pid; + int flags; +{ + int slot; + + slot = find_index_by_pid (pid); + if (slot == NO_PID) + return; + + pid_list[slot].flags &= ~flags; +} + +/* Return the flags corresponding to PID in the PID_LIST array. */ +static int +get_pid_flags (pid) + pid_t pid; +{ + int slot; + + slot = find_index_by_pid (pid); + if (slot == NO_PID) + return 0; + + return (pid_list[slot].flags); +} + +static void +add_pid (pid, async) + pid_t pid; + int async; +{ + int slot; + + slot = find_proc_slot (pid); + + pid_list[slot].pid = pid; + pid_list[slot].status = -1; + pid_list[slot].flags = PROC_RUNNING; + if (async) + pid_list[slot].flags |= PROC_ASYNC; +} + +static void +mark_dead_jobs_as_notified (force) + int force; +{ + register int i, ndead; + + /* first, count the number of non-running async jobs if FORCE == 0 */ + for (i = ndead = 0; force == 0 && i < pid_list_size; i++) + { + if (pid_list[i].pid == NO_PID) + continue; + if (((pid_list[i].flags & PROC_RUNNING) == 0) && + (pid_list[i].flags & PROC_ASYNC)) + ndead++; + } + + if (child_max < 0) + child_max = getmaxchild (); + if (child_max < 0) + child_max = DEFAULT_CHILD_MAX; + + if (force == 0 && ndead <= child_max) + return; + + /* If FORCE == 0, we just mark as many non-running async jobs as notified + to bring us under the CHILD_MAX limit. */ + for (i = 0; i < pid_list_size; i++) + { + if (pid_list[i].pid == NO_PID) + continue; + if (((pid_list[i].flags & PROC_RUNNING) == 0) && + pid_list[i].pid != last_asynchronous_pid) + { + pid_list[i].flags |= PROC_NOTIFIED; + if (force == 0 && (pid_list[i].flags & PROC_ASYNC) && --ndead <= child_max) + break; + } + } +} + +/* Remove all dead, notified jobs from the pid_list. */ +int +cleanup_dead_jobs () +{ + register int i; + +#if defined (HAVE_WAITPID) + reap_zombie_children (); +#endif + + for (i = 0; i < pid_list_size; i++) + { + if (pid_list[i].pid != NO_PID && + (pid_list[i].flags & PROC_RUNNING) == 0 && + (pid_list[i].flags & PROC_NOTIFIED)) + pid_list[i].pid = NO_PID; + } + +#if defined (COPROCESS_SUPPORT) + coproc_reap (); +#endif + + return 0; +} + +void +reap_dead_jobs () +{ + mark_dead_jobs_as_notified (0); + cleanup_dead_jobs (); +} + +/* Initialize the job control mechanism, and set up the tty stuff. */ +int +initialize_job_control (force) + int force; +{ + shell_tty = fileno (stderr); + + if (interactive) + get_tty_state (); + return 0; +} + +/* Setup this shell to handle C-C, etc. */ +void +initialize_job_signals () +{ + set_signal_handler (SIGINT, sigint_sighandler); + + /* If this is a login shell we don't wish to be disturbed by + stop signals. */ + if (login_shell) + ignore_tty_job_signals (); +} + +#if defined (HAVE_WAITPID) +/* Collect the status of all zombie children so that their system + resources can be deallocated. */ +static void +reap_zombie_children () +{ +# if defined (WNOHANG) + pid_t pid; + WAIT status; + + CHECK_TERMSIG; + CHECK_WAIT_INTR; + while ((pid = waitpid (-1, (int *)&status, WNOHANG)) > 0) + set_pid_status (pid, status); +# endif /* WNOHANG */ + CHECK_TERMSIG; + CHECK_WAIT_INTR; +} +#endif /* WAITPID */ + +#if !defined (HAVE_SIGINTERRUPT) && defined (HAVE_POSIX_SIGNALS) + +#if !defined (SA_RESTART) +# define SA_RESTART 0 +#endif + +static int +siginterrupt (sig, flag) + int sig, flag; +{ + struct sigaction act; + + sigaction (sig, (struct sigaction *)NULL, &act); + + if (flag) + act.sa_flags &= ~SA_RESTART; + else + act.sa_flags |= SA_RESTART; + + return (sigaction (sig, &act, (struct sigaction *)NULL)); +} +#endif /* !HAVE_SIGINTERRUPT && HAVE_POSIX_SIGNALS */ + +/* 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, flags) + char *command; + int flags; +{ + pid_t pid; + int async_p, forksleep; + sigset_t set, oset; + + /* Discard saved memory. */ + if (command) + free (command); + + async_p = (flags & FORK_ASYNC); + start_pipeline (); + +#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 */ + + /* Block SIGTERM here and unblock in child after fork resets the + set of pending signals */ + if (interactive_shell) + { + sigemptyset (&set); + sigaddset (&set, SIGTERM); + sigemptyset (&oset); + sigprocmask (SIG_BLOCK, &set, &oset); + set_signal_handler (SIGTERM, SIG_DFL); + } + + /* Create the child, handle severe errors. Retry on EAGAIN. */ + forksleep = 1; + while ((pid = fork ()) < 0 && errno == EAGAIN && forksleep < FORKSLEEP_MAX) + { + sys_error ("fork: retry"); + +#if defined (HAVE_WAITPID) + /* Posix systems with a non-blocking waitpid () system call available + get another chance after zombies are reaped. */ + reap_zombie_children (); + if (forksleep > 1 && sleep (forksleep) != 0) + break; +#else + if (sleep (forksleep) != 0) + break; +#endif /* HAVE_WAITPID */ + forksleep <<= 1; + } + + if (pid != 0) + if (interactive_shell) + { + set_signal_handler (SIGTERM, SIG_IGN); + sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); + } + + if (pid < 0) + { + sys_error ("fork"); + last_command_exit_value = EX_NOEXEC; + throw_to_top_level (); + } + + if (pid == 0) + { +#if defined (BUFFERED_INPUT) + unset_bash_input (0); +#endif /* BUFFERED_INPUT */ + + CLRINTERRUPT; /* XXX - children have their own interrupt state */ + + /* Restore top-level signal mask. */ + restore_sigmask (); + +#if 0 + /* Ignore INT and QUIT in asynchronous children. */ + if (async_p) + last_asynchronous_pid = getpid (); +#endif + + default_tty_job_signals (); + } + else + { + /* In the parent. */ + + last_made_pid = pid; + + if (async_p) + last_asynchronous_pid = pid; + + add_pid (pid, async_p); + } + return (pid); +} + +void +ignore_tty_job_signals () +{ +#if defined (SIGTSTP) + set_signal_handler (SIGTSTP, SIG_IGN); + set_signal_handler (SIGTTIN, SIG_IGN); + set_signal_handler (SIGTTOU, SIG_IGN); +#endif +} + +void +default_tty_job_signals () +{ +#if defined (SIGTSTP) + if (signal_is_trapped (SIGTSTP) == 0 && signal_is_hard_ignored (SIGTSTP)) + set_signal_handler (SIGTSTP, SIG_IGN); + else + set_signal_handler (SIGTSTP, SIG_DFL); + if (signal_is_trapped (SIGTTIN) == 0 && signal_is_hard_ignored (SIGTTIN)) + set_signal_handler (SIGTTIN, SIG_IGN); + else + set_signal_handler (SIGTTIN, SIG_DFL); + if (signal_is_trapped (SIGTTOU) == 0 && signal_is_hard_ignored (SIGTTOU)) + set_signal_handler (SIGTTOU, SIG_IGN); + else + set_signal_handler (SIGTTOU, SIG_DFL); +#endif +} + +/* Called once in a parent process. */ +void +get_original_tty_job_signals () +{ + static int fetched = 0; + + if (fetched == 0) + { +#if defined (SIGTSTP) + if (interactive_shell) + { + set_original_signal (SIGTSTP, SIG_DFL); + set_original_signal (SIGTTIN, SIG_DFL); + set_original_signal (SIGTTOU, SIG_DFL); + } + else + { + get_original_signal (SIGTSTP); + get_original_signal (SIGTTIN); + get_original_signal (SIGTTOU); + } +#endif + fetched = 1; + } +} + +/* Wait for a single pid (PID) and return its exit status. Called by + the wait builtin. */ +int +wait_for_single_pid (pid, flags) + pid_t pid; + int flags; +{ + pid_t got_pid; + WAIT status; + int pstatus; + + pstatus = find_status_by_pid (pid); + + if (pstatus == PROC_BAD) + { + internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid); + return (127); + } + + if (pstatus != PROC_STILL_ALIVE) + { + if (pstatus > 128) + last_command_exit_signal = find_termsig_by_pid (pid); + return (pstatus); + } + + siginterrupt (SIGINT, 1); + while ((got_pid = WAITPID (pid, &status, 0)) != pid) + { + CHECK_TERMSIG; + CHECK_WAIT_INTR; + if (got_pid < 0) + { + if (errno != EINTR && errno != ECHILD) + { + siginterrupt (SIGINT, 0); + sys_error ("wait"); + } + break; + } + else if (got_pid > 0) + set_pid_status (got_pid, status); + } + + if (got_pid > 0) + { + set_pid_status (got_pid, status); + set_pid_flags (got_pid, PROC_NOTIFIED); + } + + siginterrupt (SIGINT, 0); + QUIT; + CHECK_WAIT_INTR; + + return (got_pid > 0 ? process_exit_status (status) : -1); +} + +/* Wait for all of the shell's children to exit. Called by the `wait' + builtin. */ +void +wait_for_background_pids (ps) + struct procstat *ps; +{ + pid_t got_pid; + WAIT status; + + /* If we aren't using job control, we let the kernel take care of the + bookkeeping for us. wait () will return -1 and set errno to ECHILD + when there are no more unwaited-for child processes on both + 4.2 BSD-based and System V-based systems. */ + + siginterrupt (SIGINT, 1); + + /* Wait for ECHILD */ + waiting_for_child = 1; + while ((got_pid = WAITPID (-1, &status, 0)) != -1) + { + waiting_for_child = 0; + set_pid_status (got_pid, status); + if (ps) + { + ps->pid = got_pid; + ps->status = process_exit_status (status); + } + waiting_for_child = 1; + CHECK_WAIT_INTR; + } + waiting_for_child = 0; + + if (errno != EINTR && errno != ECHILD) + { + siginterrupt (SIGINT, 0); + sys_error("wait"); + } + + siginterrupt (SIGINT, 0); + QUIT; + CHECK_WAIT_INTR; + + mark_dead_jobs_as_notified (1); + cleanup_dead_jobs (); +} + +void +wait_sigint_cleanup () +{ +} + +/* 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; + } +} + +/* Handle SIGINT while we are waiting for children in a script to exit. + All interrupts are effectively ignored by the shell, but allowed to + kill a running job. */ +static sighandler +wait_sigint_handler (sig) + int sig; +{ + SigHandler *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)) + { + last_command_exit_value = 128+SIGINT; + restore_sigint_handler (); + trap_handler (SIGINT); /* set pending_traps[SIGINT] */ + wait_signal_received = SIGINT; + SIGRETURN (0); + } + + wait_sigint_received = 1; + + SIGRETURN (0); +} + +static char * +j_strsignal (s) + int s; +{ + static char retcode_name_buffer[64] = { '\0' }; + char *x; + + x = strsignal (s); + if (x == 0) + { + x = retcode_name_buffer; + sprintf (x, "Signal %d", s); + } + return x; +} + +/* Wait for pid (one of our children) to terminate. This is called only + by the execution code in execute_cmd.c. */ +int +wait_for (pid, flags) + pid_t pid; + int flags; +{ + int return_val, pstatus; + pid_t got_pid; + WAIT status; + + pstatus = find_status_by_pid (pid); + + if (pstatus == PROC_BAD) + return (0); + + if (pstatus != PROC_STILL_ALIVE) + { + if (pstatus > 128) + last_command_exit_signal = find_termsig_by_pid (pid); + return (pstatus); + } + + /* If we are running a script, ignore SIGINT while we're waiting for + a child to exit. The loop below does some of this, but not all. */ + wait_sigint_received = 0; + if (interactive_shell == 0) + old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); + + waiting_for_child = 1; + CHECK_WAIT_INTR; + while ((got_pid = WAITPID (-1, &status, 0)) != pid) /* XXX was pid now -1 */ + { + waiting_for_child = 0; + CHECK_TERMSIG; + CHECK_WAIT_INTR; + if (got_pid < 0 && errno == ECHILD) + { +#if !defined (_POSIX_VERSION) + status.w_termsig = status.w_retcode = 0; +#else + status = 0; +#endif /* _POSIX_VERSION */ + break; + } + else if (got_pid < 0 && errno != EINTR) + programming_error ("wait_for(%ld): %s", (long)pid, strerror(errno)); + else if (got_pid > 0) + set_pid_status (got_pid, status); + waiting_for_child = 1; + } + waiting_for_child = 0; + + if (got_pid > 0) + set_pid_status (got_pid, status); + +#if defined (HAVE_WAITPID) + if (got_pid >= 0) + reap_zombie_children (); +#endif /* HAVE_WAITPID */ + + CHECK_TERMSIG; + CHECK_WAIT_INTR; + + if (interactive_shell == 0) + { + SigHandler *temp_handler; + + temp_handler = old_sigint_handler; + restore_sigint_handler (); + + /* If the job exited because of SIGINT, make sure the shell acts as if + it had received one also. */ + if (WIFSIGNALED (status) && (WTERMSIG (status) == SIGINT)) + { + + if (maybe_call_trap_handler (SIGINT) == 0) + { + if (temp_handler == SIG_DFL) + termsig_handler (SIGINT); + else if (temp_handler != INVALID_SIGNAL_HANDLER && temp_handler != SIG_IGN) + (*temp_handler) (SIGINT); + } + } + } + + /* Default return value. */ + /* ``a full 8 bits of status is returned'' */ + return_val = process_exit_status (status); + last_command_exit_signal = get_termsig (status); + +#if defined (DONT_REPORT_SIGPIPE) && defined (DONT_REPORT_SIGTERM) +# define REPORTSIG(x) ((x) != SIGINT && (x) != SIGPIPE && (x) != SIGTERM) +#elif !defined (DONT_REPORT_SIGPIPE) && !defined (DONT_REPORT_SIGTERM) +# define REPORTSIG(x) ((x) != SIGINT) +#elif defined (DONT_REPORT_SIGPIPE) +# define REPORTSIG(x) ((x) != SIGINT && (x) != SIGPIPE) +#else +# define REPORTSIG(x) ((x) != SIGINT && (x) != SIGTERM) +#endif + + if ((WIFSTOPPED (status) == 0) && WIFSIGNALED (status) && REPORTSIG(WTERMSIG (status))) + { + fprintf (stderr, "%s", j_strsignal (WTERMSIG (status))); + if (WIFCORED (status)) + fprintf (stderr, _(" (core dumped)")); + fprintf (stderr, "\n"); + } + + if (interactive_shell && subshell_environment == 0) + { + if (WIFSIGNALED (status) || WIFSTOPPED (status)) + set_tty_state (); + else + get_tty_state (); + } + else if (interactive_shell == 0 && subshell_environment == 0 && check_window_size) + get_new_window_size (0, (int *)0, (int *)0); + + return (return_val); +} + +/* Send PID SIGNAL. Returns -1 on failure, 0 on success. If GROUP is non-zero, + or PID is less than -1, then kill the process group associated with PID. */ +int +kill_pid (pid, signal, group) + pid_t pid; + int signal, group; +{ + int result; + + if (pid < -1) + { + pid = -pid; + group = 1; + } + result = group ? killpg (pid, signal) : kill (pid, signal); + return (result); +} + +static TTYSTRUCT shell_tty_info; +static int got_tty_state; + +/* Fill the contents of shell_tty_info with the current tty info. */ +int +get_tty_state () +{ + int tty; + + tty = input_tty (); + if (tty != -1) + { + ttgetattr (tty, &shell_tty_info); + got_tty_state = 1; + 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 (got_tty_state == 0) + return 0; + ttsetattr (tty, &shell_tty_info); + } + return 0; +} + +/* Give the terminal to PGRP. */ +int +give_terminal_to (pgrp, force) + pid_t pgrp; + int force; +{ + return 0; +} + +/* Stop a pipeline. */ +int +stop_pipeline (async, ignore) + int async; + COMMAND *ignore; +{ + already_making_children = 0; + return 0; +} + +void +start_pipeline () +{ + already_making_children = 1; +} + +void +stop_making_children () +{ + already_making_children = 0; +} + +/* The name is kind of a misnomer, but it's what the job control code uses. */ +void +without_job_control () +{ + stop_making_children (); + last_made_pid = NO_PID; /* XXX */ +} + +int +get_job_by_pid (pid, block, ignore) + pid_t pid; + int block; + PROCESS **ignore; +{ + int i; + + i = find_index_by_pid (pid); + return ((i == NO_PID) ? PROC_BAD : i); +} + +/* Print descriptive information about the job with leader pid PID. */ +void +describe_pid (pid) + pid_t pid; +{ + fprintf (stderr, "%ld\n", (long) pid); +} + +int +freeze_jobs_list () +{ + return 0; +} + +void +unfreeze_jobs_list () +{ +} + +void +set_jobs_list_frozen (s) + int s; +{ +} + +int +count_all_jobs () +{ + return 0; +} diff --git a/bash-5.1/parse.y b/bash-5.1/parse.y new file mode 100644 index 0000000..2449fa8 --- /dev/null +++ b/bash-5.1/parse.y @@ -0,0 +1,6921 @@ +/* parse.y - Yacc grammar for bash. */ + +/* Copyright (C) 1989-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +%{ +#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 "execute_cmd.h" +#include "typemax.h" /* SIZE_MAX if needed */ +#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" +#else +extern int cleanup_dead_jobs PARAMS((void)); +#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 + +#define END_ALIAS -2 + +#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 dump_translatable_strings, dump_po_strings; + +#if !defined (errno) +extern int errno; +#endif + +/* **************************************************************** */ +/* */ +/* "Forward" declarations */ +/* */ +/* **************************************************************** */ + +#ifdef DEBUG +static void debug_parser PARAMS((int)); +#endif + +static int yy_getc PARAMS((void)); +static int yy_ungetc PARAMS((int)); + +#if defined (READLINE) +static int yy_readline_get PARAMS((void)); +static int yy_readline_unget PARAMS((int)); +#endif + +static int yy_string_get PARAMS((void)); +static int yy_string_unget PARAMS((int)); +static void rewind_input_string PARAMS((void)); +static int yy_stream_get PARAMS((void)); +static int yy_stream_unget PARAMS((int)); + +static int shell_getc PARAMS((int)); +static void shell_ungetc PARAMS((int)); +static void discard_until PARAMS((int)); + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) +static void push_string PARAMS((char *, int, alias_t *)); +static void pop_string PARAMS((void)); +static void free_string_list PARAMS((void)); +#endif + +static char *read_a_line PARAMS((int)); + +static int reserved_word_acceptable PARAMS((int)); +static int yylex PARAMS((void)); + +static void push_heredoc PARAMS((REDIRECT *)); +static char *mk_alexpansion PARAMS((char *)); +static int alias_expand_token PARAMS((char *)); +static int time_command_acceptable PARAMS((void)); +static int special_case_tokens PARAMS((char *)); +static int read_token PARAMS((int)); +static char *parse_matched_pair PARAMS((int, int, int, int *, int)); +static char *parse_comsub PARAMS((int, int, int, int *, int)); +#if defined (ARRAY_VARS) +static char *parse_compound_assignment PARAMS((int *)); +#endif +#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) +static int parse_dparen PARAMS((int)); +static int parse_arith_cmd PARAMS((char **, int)); +#endif +#if defined (COND_COMMAND) +static void cond_error PARAMS((void)); +static COND_COM *cond_expr PARAMS((void)); +static COND_COM *cond_or PARAMS((void)); +static COND_COM *cond_and PARAMS((void)); +static COND_COM *cond_term PARAMS((void)); +static int cond_skip_newlines PARAMS((void)); +static COMMAND *parse_cond_command PARAMS((void)); +#endif +#if defined (ARRAY_VARS) +static int token_is_assignment PARAMS((char *, int)); +static int token_is_ident PARAMS((char *, int)); +#endif +static int read_token_word PARAMS((int)); +static void discard_parser_constructs PARAMS((int)); + +static char *error_token_from_token PARAMS((int)); +static char *error_token_from_text PARAMS((void)); +static void print_offending_line PARAMS((void)); +static void report_syntax_error PARAMS((char *)); + +static void handle_eof_input_unit PARAMS((void)); +static void prompt_again PARAMS((void)); +#if 0 +static void reset_readline_prompt PARAMS((void)); +#endif +static void print_prompt PARAMS((void)); + +#if defined (HANDLE_MULTIBYTE) +static void set_line_mbstate PARAMS((void)); +static char *shell_input_line_property = NULL; +static size_t shell_input_line_propsize = 0; +#else +# define set_line_mbstate() +#endif + +extern int yyerror PARAMS((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; + +/* Displayed after reading a command but before executing it in an interactive shell */ +char *ps0_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 number of lines read from input while creating the current command. */ +int current_command_line_count; + +/* The number of lines in a command saved while we run parse_and_execute */ +int saved_command_line_count; + +/* The token that currently denotes the end of parse. */ +int shell_eof_token; + +/* The token currently being read. */ +int current_token; + +/* The current parser state. */ +int parser_state; + +/* 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[HEREDOC_MAX]; +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 size_t shell_input_line_index; +static size_t shell_input_line_size; /* Amount allocated for shell_input_line. */ +static size_t 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 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 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; + +static int global_extglob; + +/* 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+1]; +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 source; +static REDIRECTEE redir; + +static FILE *yyoutstream; +static FILE *yyerrstream; +%} + +%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 COPROC +%token COND_START COND_END COND_ERROR +%token IN BANG TIME TIMEOPT TIMEIGN + +/* More general tokens. yylex () knows how to make these. */ +%token WORD ASSIGNMENT_WORD REDIR_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 SEMI_AND SEMI_SEMI_AND +%token LESS_LESS_MINUS AND_GREATER AND_GREATER_GREATER LESS_GREATER +%token GREATER_BAR BAR_AND + +/* 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 coproc +%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 '|' BAR_AND +%% + +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); */ + if (parser_state & PST_CMDSUBST) + parser_state |= PST_EOFTOKEN; + YYACCEPT; + } + | '\n' + { + /* Case of regular command, but not a very + interesting one. Return a NULL command. */ + global_command = (COMMAND *)NULL; + if (parser_state & PST_CMDSUBST) + parser_state |= PST_EOFTOKEN; + YYACCEPT; + } + | error '\n' + { + /* Error during parsing. Return NULL command. */ + global_command = (COMMAND *)NULL; + eof_encountered = 0; + /* discard_parser_constructs (1); */ + if (interactive && parse_and_execute_level == 0) + { + YYACCEPT; + } + else + { + YYABORT; + } + } + | error yacc_EOF + { + /* EOF after an error. Do ignoreeof or not. Really + only interesting in non-interactive shells */ + global_command = (COMMAND *)NULL; + if (last_command_exit_value == 0) + last_command_exit_value = EX_BADUSAGE; /* force error return */ + if (interactive && parse_and_execute_level == 0) + { + handle_eof_input_unit (); + 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 + { + source.dest = 1; + redir.filename = $2; + $$ = make_redirection (source, r_output_direction, redir, 0); + } + | '<' WORD + { + source.dest = 0; + redir.filename = $2; + $$ = make_redirection (source, r_input_direction, redir, 0); + } + | NUMBER '>' WORD + { + source.dest = $1; + redir.filename = $3; + $$ = make_redirection (source, r_output_direction, redir, 0); + } + | NUMBER '<' WORD + { + source.dest = $1; + redir.filename = $3; + $$ = make_redirection (source, r_input_direction, redir, 0); + } + | REDIR_WORD '>' WORD + { + source.filename = $1; + redir.filename = $3; + $$ = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN); + } + | REDIR_WORD '<' WORD + { + source.filename = $1; + redir.filename = $3; + $$ = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN); + } + | GREATER_GREATER WORD + { + source.dest = 1; + redir.filename = $2; + $$ = make_redirection (source, r_appending_to, redir, 0); + } + | NUMBER GREATER_GREATER WORD + { + source.dest = $1; + redir.filename = $3; + $$ = make_redirection (source, r_appending_to, redir, 0); + } + | REDIR_WORD GREATER_GREATER WORD + { + source.filename = $1; + redir.filename = $3; + $$ = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN); + } + | GREATER_BAR WORD + { + source.dest = 1; + redir.filename = $2; + $$ = make_redirection (source, r_output_force, redir, 0); + } + | NUMBER GREATER_BAR WORD + { + source.dest = $1; + redir.filename = $3; + $$ = make_redirection (source, r_output_force, redir, 0); + } + | REDIR_WORD GREATER_BAR WORD + { + source.filename = $1; + redir.filename = $3; + $$ = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN); + } + | LESS_GREATER WORD + { + source.dest = 0; + redir.filename = $2; + $$ = make_redirection (source, r_input_output, redir, 0); + } + | NUMBER LESS_GREATER WORD + { + source.dest = $1; + redir.filename = $3; + $$ = make_redirection (source, r_input_output, redir, 0); + } + | REDIR_WORD LESS_GREATER WORD + { + source.filename = $1; + redir.filename = $3; + $$ = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN); + } + | LESS_LESS WORD + { + source.dest = 0; + redir.filename = $2; + $$ = make_redirection (source, r_reading_until, redir, 0); + push_heredoc ($$); + } + | NUMBER LESS_LESS WORD + { + source.dest = $1; + redir.filename = $3; + $$ = make_redirection (source, r_reading_until, redir, 0); + push_heredoc ($$); + } + | REDIR_WORD LESS_LESS WORD + { + source.filename = $1; + redir.filename = $3; + $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); + push_heredoc ($$); + } + | LESS_LESS_MINUS WORD + { + source.dest = 0; + redir.filename = $2; + $$ = make_redirection (source, r_deblank_reading_until, redir, 0); + push_heredoc ($$); + } + | NUMBER LESS_LESS_MINUS WORD + { + source.dest = $1; + redir.filename = $3; + $$ = make_redirection (source, r_deblank_reading_until, redir, 0); + push_heredoc ($$); + } + | REDIR_WORD LESS_LESS_MINUS WORD + { + source.filename = $1; + redir.filename = $3; + $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); + push_heredoc ($$); + } + | LESS_LESS_LESS WORD + { + source.dest = 0; + redir.filename = $2; + $$ = make_redirection (source, r_reading_string, redir, 0); + } + | NUMBER LESS_LESS_LESS WORD + { + source.dest = $1; + redir.filename = $3; + $$ = make_redirection (source, r_reading_string, redir, 0); + } + | REDIR_WORD LESS_LESS_LESS WORD + { + source.filename = $1; + redir.filename = $3; + $$ = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN); + } + | LESS_AND NUMBER + { + source.dest = 0; + redir.dest = $2; + $$ = make_redirection (source, r_duplicating_input, redir, 0); + } + | NUMBER LESS_AND NUMBER + { + source.dest = $1; + redir.dest = $3; + $$ = make_redirection (source, r_duplicating_input, redir, 0); + } + | REDIR_WORD LESS_AND NUMBER + { + source.filename = $1; + redir.dest = $3; + $$ = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN); + } + | GREATER_AND NUMBER + { + source.dest = 1; + redir.dest = $2; + $$ = make_redirection (source, r_duplicating_output, redir, 0); + } + | NUMBER GREATER_AND NUMBER + { + source.dest = $1; + redir.dest = $3; + $$ = make_redirection (source, r_duplicating_output, redir, 0); + } + | REDIR_WORD GREATER_AND NUMBER + { + source.filename = $1; + redir.dest = $3; + $$ = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN); + } + | LESS_AND WORD + { + source.dest = 0; + redir.filename = $2; + $$ = make_redirection (source, r_duplicating_input_word, redir, 0); + } + | NUMBER LESS_AND WORD + { + source.dest = $1; + redir.filename = $3; + $$ = make_redirection (source, r_duplicating_input_word, redir, 0); + } + | REDIR_WORD LESS_AND WORD + { + source.filename = $1; + redir.filename = $3; + $$ = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN); + } + | GREATER_AND WORD + { + source.dest = 1; + redir.filename = $2; + $$ = make_redirection (source, r_duplicating_output_word, redir, 0); + } + | NUMBER GREATER_AND WORD + { + source.dest = $1; + redir.filename = $3; + $$ = make_redirection (source, r_duplicating_output_word, redir, 0); + } + | REDIR_WORD GREATER_AND WORD + { + source.filename = $1; + redir.filename = $3; + $$ = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN); + } + | GREATER_AND '-' + { + source.dest = 1; + redir.dest = 0; + $$ = make_redirection (source, r_close_this, redir, 0); + } + | NUMBER GREATER_AND '-' + { + source.dest = $1; + redir.dest = 0; + $$ = make_redirection (source, r_close_this, redir, 0); + } + | REDIR_WORD GREATER_AND '-' + { + source.filename = $1; + redir.dest = 0; + $$ = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); + } + | LESS_AND '-' + { + source.dest = 0; + redir.dest = 0; + $$ = make_redirection (source, r_close_this, redir, 0); + } + | NUMBER LESS_AND '-' + { + source.dest = $1; + redir.dest = 0; + $$ = make_redirection (source, r_close_this, redir, 0); + } + | REDIR_WORD LESS_AND '-' + { + source.filename = $1; + redir.dest = 0; + $$ = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); + } + | AND_GREATER WORD + { + source.dest = 1; + redir.filename = $2; + $$ = make_redirection (source, r_err_and_out, redir, 0); + } + | AND_GREATER_GREATER WORD + { + source.dest = 1; + redir.filename = $2; + $$ = make_redirection (source, r_append_err_and_out, redir, 0); + } + ; + +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 && tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = $2; + } + else if (tc) + tc->redirects = $2; + $$ = $1; + } + | function_def + { $$ = $1; } + | coproc + { $$ = $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 ($$ == 0) YYERROR; + 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 ($$ == 0) YYERROR; + if (word_top > 0) word_top--; + } + | FOR ARITH_FOR_EXPRS DO compound_list DONE + { + $$ = make_arith_for_command ($2, $4, arith_for_lineno); + if ($$ == 0) YYERROR; + if (word_top > 0) word_top--; + } + | FOR ARITH_FOR_EXPRS '{' compound_list '}' + { + $$ = make_arith_for_command ($2, $4, arith_for_lineno); + if ($$ == 0) YYERROR; + 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--; + } + | SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE + { + $$ = make_select_command ($2, (WORD_LIST *)NULL, $8, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + | SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}' + { + $$ = make_select_command ($2, (WORD_LIST *)NULL, $8, 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 function_body + { $$ = make_function_def ($2, $3, function_dstart, function_bstart); } + | FUNCTION WORD '\n' newline_list function_body + { $$ = make_function_def ($2, $5, 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 && tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = $2; + } + else if (tc) + tc->redirects = $2; + $$ = $1; + } + ; + +subshell: '(' compound_list ')' + { + $$ = make_subshell_command ($2); + $$->flags |= CMD_WANT_SUBSHELL; + } + ; + +coproc: COPROC shell_command + { + $$ = make_coproc_command ("COPROC", $2); + $$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } + | COPROC shell_command redirection_list + { + COMMAND *tc; + + tc = $2; + if (tc && tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = $3; + } + else if (tc) + tc->redirects = $3; + $$ = make_coproc_command ("COPROC", $2); + $$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } + | COPROC WORD shell_command + { + $$ = make_coproc_command ($2->word, $3); + $$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } + | COPROC WORD shell_command redirection_list + { + COMMAND *tc; + + tc = $3; + if (tc && tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = $4; + } + else if (tc) + tc->redirects = $4; + $$ = make_coproc_command ($2->word, $3); + $$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } + | COPROC simple_command + { + $$ = make_coproc_command ("COPROC", clean_simple_command ($2)); + $$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_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 + { $$ = $1; } + | case_clause_sequence pattern_list SEMI_SEMI + { $2->next = $1; $$ = $2; } + | pattern_list SEMI_AND + { $1->flags |= CASEPAT_FALLTHROUGH; $$ = $1; } + | case_clause_sequence pattern_list SEMI_AND + { $2->flags |= CASEPAT_FALLTHROUGH; $2->next = $1; $$ = $2; } + | pattern_list SEMI_SEMI_AND + { $1->flags |= CASEPAT_TESTNEXT; $$ = $1; } + | case_clause_sequence pattern_list SEMI_SEMI_AND + { $2->flags |= CASEPAT_TESTNEXT; $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' + | 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 ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) + { + global_command = $1; + eof_encountered = 0; + rewind_input_string (); + YYACCEPT; + } + } + | 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 ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) + { + global_command = $1; + eof_encountered = 0; + rewind_input_string (); + YYACCEPT; + } + } + | simple_list1 ';' + { + $$ = $1; + if (need_here_doc) + gather_here_documents (); + if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) + { + global_command = $1; + eof_encountered = 0; + rewind_input_string (); + YYACCEPT; + } + } + ; + +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_command + { + if ($2) + $2->flags ^= CMD_INVERT_RETURN; /* toggle */ + $$ = $2; + } + | timespec pipeline_command + { + if ($2) + $2->flags |= $1; + $$ = $2; + } + | 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'; + else if ($2 == ';') + token_to_read = ';'; + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ + } + | BANG list_terminator + { + ELEMENT x; + + /* This is just as unclean. Posix says that `!' + by itself should be equivalent to `false'. + 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 |= CMD_INVERT_RETURN; + /* XXX - let's cheat and push a newline back */ + if ($2 == '\n') + token_to_read = '\n'; + if ($2 == ';') + token_to_read = ';'; + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ + } + ; + +pipeline: pipeline '|' newline_list pipeline + { $$ = command_connect ($1, $4, '|'); } + | pipeline BAR_AND newline_list pipeline + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ + COMMAND *tc; + REDIRECTEE rd, sd; + REDIRECT *r; + + tc = $1->type == cm_simple ? (COMMAND *)$1->value.Simple : $1; + sd.dest = 2; + rd.dest = 1; + r = make_redirection (sd, r_duplicating_output, rd, 0); + if (tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = r; + } + else + tc->redirects = r; + + $$ = command_connect ($1, $4, '|'); + } + | command + { $$ = $1; } + ; + +timespec: TIME + { $$ = CMD_TIME_PIPELINE; } + | TIME TIMEOPT + { $$ = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + | TIME TIMEIGN + { $$ = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + | TIME TIMEOPT TIMEIGN + { $$ = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + ; +%% + +/* 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 + +/* 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; + yyoutstream = stdout; + yyerrstream = stderr; +#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 == 0) + { + if (bash_readline_initialized == 0) + initialize_readline (); + +#if defined (JOB_CONTROL) + if (job_control) + give_terminal_to (shell_pgrp, 0); +#endif /* JOB_CONTROL */ + + old_sigint = IMPOSSIBLE_TRAP_HANDLER; + if (signal_is_ignored (SIGINT) == 0) + { + old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler); + } + + sh_unset_nodelay_mode (fileno (rl_instream)); /* just in case */ + current_readline_line = readline (current_readline_prompt ? + current_readline_prompt : ""); + + CHECK_TERMSIG; + if (signal_is_ignored (SIGINT) == 0) + { + if (old_sigint != IMPOSSIBLE_TRAP_HANDLER) + 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); + } +} + +/* Will we be collecting another input line and printing a prompt? This uses + different conditions than SHOULD_PROMPT(), since readline allows a user to + embed a newline in the middle of the line it collects, which the parser + will interpret as a line break and command delimiter. */ +int +parser_will_prompt () +{ + return (current_readline_line == 0 || current_readline_line[current_readline_line_index] == 0); +} + +#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); +} + +/* Count the number of characters we've consumed from bash_input.location.string + and read into shell_input_line, but have not returned from shell_getc. + That is the true input location. Rewind bash_input.location.string by + that number of characters, so it points to the last character actually + consumed by the parser. */ +static void +rewind_input_string () +{ + int xchars; + + /* number of unconsumed characters in the input -- XXX need to take newlines + into account, e.g., $(...\n) */ + xchars = shell_input_line_len - shell_input_line_index; + if (bash_input.location.string[-1] == '\n') + xchars++; + + /* XXX - how to reflect bash_input.location.string back to string passed to + parse_and_execute or xparse_dolparen? xparse_dolparen needs to know how + far into the string we parsed. parse_and_execute knows where bash_input. + location.string is, and how far from orig_string that is -- that's the + number of characters the command consumed. */ + + /* bash_input.location.string - xchars should be where we parsed to */ + /* need to do more validation on xchars value for sanity -- test cases. */ + bash_input.location.string -= xchars; +} + +/* **************************************************************** */ +/* */ +/* 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 most of its signal handlers without the SA_RESTART flag, some + signals received during a read(2) will not cause the read to be restarted. + We will need to restart it ourselves. */ + +static int +yy_stream_get () +{ + int result; + + result = EOF; + if (bash_input.location.file) + { + /* XXX - don't need terminate_immediately; getc_with_restart checks + for terminating signals itself if read returns < 0 */ + result = getc_with_restart (bash_input.location.file); + } + 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; + +/* The line number offset set by assigning to LINENO. Not currently used. */ +int line_number_base = 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 (4 * sizeof (int)); + ret[0] = last_read_token; + ret[1] = token_before_that; + ret[2] = two_tokens_ago; + ret[3] = current_token; + 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]; + current_token = ts[3]; +} + +/* + * 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. + */ + +#define PSH_ALIAS 0x01 +#define PSH_DPAREN 0x02 +#define PSH_SOURCE 0x04 +#define PSH_ARRAY 0x08 + +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 + size_t saved_line_size, saved_line_index; + int saved_line_terminator; + int flags; +} 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; + temp->flags = 0; +#if defined (ALIAS) + temp->expander = ap; + if (ap) + temp->flags = PSH_ALIAS; +#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 +} + +int +parser_expanding_alias () +{ + return (expanding_alias ()); +} + +void +parser_save_alias () +{ +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + push_string ((char *)NULL, 0, (alias_t *)NULL); + pushed_string_list->flags = PSH_SOURCE; /* XXX - for now */ +#else + ; +#endif +} + +void +parser_restore_alias () +{ +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + if (pushed_string_list) + pop_string (); +#else + ; +#endif +} + +#if defined (ALIAS) +/* Before freeing AP, make sure that there aren't any cases of pointer + aliasing that could cause us to reference freed memory later on. */ +void +clear_string_list_expander (ap) + alias_t *ap; +{ + register STRING_SAVER *t; + + for (t = pushed_string_list; t; t = t->next) + { + if (t->expander && t->expander == ap) + t->expander = 0; + } +} +#endif + +void +clear_shell_input_line () +{ + if (shell_input_line) + shell_input_line[shell_input_line_index = 0] = '\0'; +} + +/* 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, c, peekc, pass_next; + +#if defined (READLINE) + if (no_line_editing && SHOULD_PROMPT ()) +#else + if (SHOULD_PROMPT ()) +#endif + print_prompt (); + + pass_next = indx = 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 or we + have to handle CTLESC or CTLNUL. */ + 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) + { + QUIT; + 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 + { + /* remove_quoted_newline is non-zero if the here-document delimiter + is unquoted. In this case, we will be expanding the lines and + need to make sure CTLESC and CTLNUL in the input are quoted. */ + if (remove_quoted_newline && (c == CTLESC || c == CTLNUL)) + line_buffer[indx++] = CTLESC; + 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; +{ + char *ret; + int n, c; + + prompt_string_pointer = &ps2_prompt; + if (SHOULD_PROMPT()) + prompt_again (); + ret = read_a_line (remove_quoted_newline); +#if defined (HISTORY) + if (ret && remember_on_history && (parser_state & PST_HEREDOC)) + { + /* To make adding the here-document body right, we need to rely on + history_delimiting_chars() returning \n for the first line of the + here-document body and the null string for the second and subsequent + lines, so we avoid double newlines. + current_command_line_count == 2 for the first line of the body. */ + + current_command_line_count++; + maybe_add_history (ret); + } +#endif /* HISTORY */ + return ret; +} + +/* **************************************************************** */ +/* */ +/* 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 +#if defined (COPROCESS_SUPPORT) + { "coproc", COPROC }, +#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 */ + { "--", TIMEIGN }, + { "-p", TIMEOPT }, + { "&&", AND_AND }, + { "||", OR_OR }, + { ">>", GREATER_GREATER }, + { "<<", LESS_LESS }, + { "<&", LESS_AND }, + { ">&", GREATER_AND }, + { ";;", SEMI_SEMI }, + { ";&", SEMI_AND }, + { ";;&", SEMI_SEMI_AND }, + { "<<-", LESS_LESS_MINUS }, + { "<<<", LESS_LESS_LESS }, + { "&>", AND_GREATER }, + { "&>>", AND_GREATER_GREATER }, + { "<>", LESS_GREATER }, + { ">|", GREATER_BAR }, + { "|&", BAR_AND }, + { "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 unquoted_backslash = 0; + +static int +shell_getc (remove_quoted_newline) + int remove_quoted_newline; +{ + register int i; + int c, truncating, last_was_backslash; + unsigned char uc; + + QUIT; + + last_was_backslash = 0; + 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++; + + /* Let's not let one really really long line blow up memory allocation */ + if (shell_input_line && shell_input_line_size >= 32768) + { + free (shell_input_line); + shell_input_line = 0; + shell_input_line_size = 0; + } + + restart_read: + + /* Allow immediate exit if interrupted during input. */ + QUIT; + + i = truncating = 0; + shell_input_line_terminator = 0; + + /* If the shell is interactive, 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 + /* If we get EOS while parsing a string, treat it as EOF so we + don't just keep looping. Happens very rarely */ + if (bash_input.type == st_string) + { + if (i == 0) + shell_input_line_terminator = EOF; + shell_input_line[i] = '\0'; + c = EOF; + break; + } + continue; + } + + /* Theoretical overflow */ + /* If we can't put 256 bytes more into the buffer, allocate + everything we can and fill it as full as we can. */ + /* XXX - we ignore rest of line using `truncating' flag */ + if (shell_input_line_size > (SIZE_MAX - 256)) + { + size_t n; + + n = SIZE_MAX - i; /* how much more can we put into the buffer? */ + if (n <= 2) /* we have to save 1 for the newline added below */ + { + if (truncating == 0) + internal_warning(_("shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"), shell_input_line_size, (unsigned long)SIZE_MAX); + shell_input_line[i] = '\0'; + truncating = 1; + } + if (shell_input_line_size < SIZE_MAX) + { + shell_input_line_size = SIZE_MAX; + shell_input_line = xrealloc (shell_input_line, shell_input_line_size); + } + } + else + 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; + } + + if (truncating == 0 || c == '\n') + shell_input_line[i++] = c; + + if (c == '\n') + { + shell_input_line[--i] = '\0'; + current_command_line_count++; + break; + } + + last_was_backslash = last_was_backslash == 0 && c == '\\'; + } + + 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) + /* 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. */ + if (current_delimiter (dstack) == '\'') + history_quoting_state = '\''; + else if (current_delimiter (dstack) == '"') + history_quoting_state = '"'; + else + history_quoting_state = 0; +# endif + /* Calling with a third argument of 1 allows remember_on_history to + determine whether or not the line is saved to the history list */ + expansions = pre_process_line (shell_input_line, 1, 1); +# if defined (BANG_HISTORY) + history_quoting_state = 0; +# 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 == 0) + 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 (shell_input_line); + 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. We should not echo lines while parsing command + substitutions with recursive calls into the parsing engine; those + should only be echoed once when we read the word. That is the + reason for the test against shell_eof_token, which is set to a + right paren when parsing the contents of command substitutions. */ + if (echo_input_at_read && (shell_input_line[0] || + shell_input_line_terminator != EOF) && + shell_eof_token == 0) + 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_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size)) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); + + /* Don't add a newline to a string that ends with a backslash if we're + going to be removing quoted newlines, since that will eat the + backslash. Add another backslash instead (will be removed by + word expansion). */ + if (bash_input.type == st_string && expanding_alias() == 0 && last_was_backslash && c == EOF && remove_quoted_newline) + shell_input_line[shell_input_line_len] = '\\'; + else + shell_input_line[shell_input_line_len] = '\n'; + shell_input_line[shell_input_line_len + 1] = '\0'; + +#if 0 + set_line_mbstate (); /* XXX - this is wasteful */ +#else +# if defined (HANDLE_MULTIBYTE) + /* This is kind of an abstraction violation, but there's no need to + go through the entire shell_input_line again with a call to + set_line_mbstate(). */ + if (shell_input_line_len + 2 > shell_input_line_propsize) + { + shell_input_line_propsize = shell_input_line_len + 2; + shell_input_line_property = (char *)xrealloc (shell_input_line_property, + shell_input_line_propsize); + } + shell_input_line_property[shell_input_line_len] = 1; +# endif +#endif + } + } + +next_alias_char: + if (shell_input_line_index == 0) + unquoted_backslash = 0; + + uc = shell_input_line[shell_input_line_index]; + + if (uc) + { + unquoted_backslash = unquoted_backslash == 0 && 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 pushed_string_list != 0 but pushed_string_list->expander == 0 (not + currently tested) and the flags value is not PSH_SOURCE, we are not + parsing an alias, we have just saved one (push_string, when called by + the parse_dparen code) In this case, just go on as well. The PSH_SOURCE + case is handled below. */ + + /* If we're at the end of an alias expansion add a space to make sure that + the alias remains marked as being in use while we expand its last word. + This makes sure that pop_string doesn't mark the alias as not in use + before the string resulting from the alias expansion is tokenized and + checked for alias expansion, preventing recursion. At this point, the + last character in shell_input_line is the last character of the alias + expansion. We test that last character to determine whether or not to + return the space that will delimit the token and postpone the pop_string. + This set of conditions duplicates what used to be in mk_alexpansion () + below, with the addition that we don't add a space if we're currently + reading a quoted string or in a shell comment. */ +#ifndef OLD_ALIAS_HACK + if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE && + pushed_string_list->flags != PSH_DPAREN && + (parser_state & PST_COMMENT) == 0 && + (parser_state & PST_ENDALIAS) == 0 && /* only once */ + shell_input_line_index > 0 && + shellblank (shell_input_line[shell_input_line_index-1]) == 0 && + shell_input_line[shell_input_line_index-1] != '\n' && + unquoted_backslash == 0 && + shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && + (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"')) + { + parser_state |= PST_ENDALIAS; + return ' '; /* END_ALIAS */ + } +#endif + +pop_alias: + /* This case works for PSH_DPAREN as well */ + if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) + { + parser_state &= ~PST_ENDALIAS; + 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++; + + /* What do we do here if we're expanding an alias whose definition + includes an escaped newline? If that's the last character in the + alias expansion, we just pop the pushed string list (recall that + we inhibit the appending of a space if newline is the last + character). If it's not the last character, we need to consume the + quoted newline and move to the next character in the expansion. */ +#if defined (ALIAS) + if (expanding_alias () && shell_input_line[shell_input_line_index+1] == '\0') + { + uc = 0; + goto pop_alias; + } + else if (expanding_alias () && shell_input_line[shell_input_line_index+1] != '\0') + { + shell_input_line_index++; /* skip newline */ + goto next_alias_char; /* and get next character */ + } + else +#endif + goto restart_read; + } + + if (uc == 0 && shell_input_line_terminator == EOF) + return ((shell_input_line_index != 0) ? '\n' : EOF); + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + /* We already know that we are not parsing an alias expansion because of the + check for expanding_alias() above. This knows how parse_and_execute + handles switching to st_string input while an alias is being expanded, + hence the check for pushed_string_list without pushed_string_list->expander + and the check for PSH_SOURCE as pushed_string_list->flags. + parse_and_execute and parse_string both change the input type to st_string + and place the string to be parsed and executed into location.string, so + we should not stop reading that until the pointer is '\0'. + The check for shell_input_line_terminator may be superfluous. + + This solves the problem of `.' inside a multi-line alias with embedded + newlines executing things out of order. */ + if (uc == 0 && bash_input.type == st_string && *bash_input.location.string && + pushed_string_list && pushed_string_list->flags == PSH_SOURCE && + shell_input_line_terminator == 0) + { + shell_input_line_index = 0; + goto restart_read; + } +#endif + + 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; +} + +char * +parser_remaining_input () +{ + if (shell_input_line == 0) + return 0; + if ((int)shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) + return ""; /* XXX */ + return (shell_input_line + shell_input_line_index); +} + +#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; +} + +void +push_token (x) + int x; +{ + two_tokens_ago = token_before_that; + token_before_that = last_read_token; + last_read_token = current_token; + + current_token = x; +} + +/* 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 && parse_and_execute_level == 0 && 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); + + if ((parser_state & PST_EOFTOKEN) && current_token == shell_eof_token) + { + current_token = yacc_EOF; + if (bash_input.type == st_string) + rewind_input_string (); + } + parser_state &= ~PST_EOFTOKEN; /* ??? */ + + 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; + +/* When non-zero, we can read IN as an acceptable token, regardless of how + many newlines we read. */ +static int expecting_in_token; + +static void +push_heredoc (r) + REDIRECT *r; +{ + if (need_here_doc >= HEREDOC_MAX) + { + last_command_exit_value = EX_BADUSAGE; + need_here_doc = 0; + report_syntax_error (_("maximum here-document count exceeded")); + reset_parser (); + exit_shell (last_command_exit_value); + } + redir_stack[need_here_doc++] = r; +} + +void +gather_here_documents () +{ + int r; + + r = 0; + here_doc_first_line = 1; + while (need_here_doc > 0) + { + parser_state |= PST_HEREDOC; + make_here_document (redir_stack[r++], line_number); + parser_state &= ~PST_HEREDOC; + need_here_doc--; + redir_stack[r - 1] = 0; /* XXX */ + } + here_doc_first_line = 0; /* just in case */ +} + +/* When non-zero, an open-brace used to create a group is awaiting a close + brace partner. */ +static int open_brace_count; + +/* In the following three macros, `token' is always last_read_token */ + +/* Are we in the middle of parsing a redirection where we are about to read + a word? This is used to make sure alias expansion doesn't happen in the + middle of a redirection, even though we're parsing a simple command. */ +#define parsing_redirection(token) \ + (token == '<' || token == '>' || \ + token == GREATER_GREATER || token == GREATER_BAR || \ + token == LESS_GREATER || token == LESS_LESS_MINUS || \ + token == LESS_LESS || token == LESS_LESS_LESS || \ + token == LESS_AND || token == GREATER_AND || token == AND_GREATER) + +/* Is `token' one that will allow a WORD to be read in a command position? + We can read a simple command name on which we should attempt alias expansion + or we can read an assignment statement. */ +#define command_token_position(token) \ + (((token) == ASSIGNMENT_WORD) || \ + ((parser_state&PST_REDIRLIST) && parsing_redirection(token) == 0) || \ + ((token) != SEMI_SEMI && (token) != SEMI_AND && (token) != SEMI_SEMI_AND && reserved_word_acceptable(token))) + +/* Are we in a position where we can read an assignment statement? */ +#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 ((parser_state & PST_CASEPAT) && last_read_token == '|' && word_token_alist[i].token == ESAC) \ + break; /* Posix grammar rule 4 */ \ + 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); +#ifdef OLD_ALIAS_HACK + /* If the last character in the alias is a newline, don't add a trailing + space to the expansion. Works with shell_getc above. */ + /* Need to do something about the case where the alias expansion contains + an unmatched quoted string, since appending this space affects the + subsequent output. */ + if (l > 0 && r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0) + r[l++] = ' '; +#endif + 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); + +#ifdef OLD_ALIAS_HACK + /* mk_alexpansion puts an extra space on the end of the alias expansion, + so the lookahead by the parser works right (the alias needs to remain + `in use' while parsing its last word to avoid alias recursion for + something like "alias echo=echo"). 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. */ +#endif + 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) + int i; + + if (posixly_correct && shell_compatibility_level > 41) + { + /* Quick check of the rest of the line to find the next token. If it + begins with a `-', Posix says to not return `time' as the token. + This was interp 267. */ + i = shell_input_line_index; + while (i < shell_input_line_len && (shell_input_line[i] == ' ' || shell_input_line[i] == '\t')) + i++; + if (shell_input_line[i] == '-') + return 0; + } + + switch (last_read_token) + { + case 0: + case ';': + case '\n': + if (token_before_that == '|') + return (0); + /* FALLTHROUGH */ + case AND_AND: + case OR_OR: + case '&': + case WHILE: + case DO: + case UNTIL: + case IF: + case THEN: + case ELIF: + case ELSE: + case '{': /* } */ + case '(': /* )( */ + case ')': /* only valid in case statement */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ + case TIMEOPT: /* time -p time pipeline */ + case TIMEIGN: /* time -p -- ... */ + 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 TIMEIGN if the last read token was TIME or TIMEOPT. + + ']]' 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; +{ + /* Posix grammar rule 6 */ + 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++; + } + if (expecting_in_token) + expecting_in_token--; + return (IN); + } + + /* XXX - leaving above code intact for now, but it should eventually be + removed in favor of this clause. */ + /* Posix grammar rule 6 */ + if (expecting_in_token && (last_read_token == WORD || last_read_token == '\n') && + (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0)) + { + if (parser_state & PST_CASESTMT) + { + parser_state |= PST_CASEPAT; + esacs_needed_count++; + } + expecting_in_token--; + return (IN); + } + /* Posix grammar rule 6, third word in FOR: for i; do command-list; done */ + else if (expecting_in_token && (last_read_token == '\n' || last_read_token == ';') && + (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) + { + expecting_in_token--; + return (DO); + } + + /* for i do; command-list; done */ + 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')) + { + if (expecting_in_token) + expecting_in_token--; + 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) + { + if (last_read_token == IN && STREQ (tokstr, "esac")) + { + esacs_needed_count--; + 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); + /* Handle -- after `time'. */ + if (last_read_token == TIME && tokstr[0] == '-' && tokstr[1] == '-' && !tokstr[2]) + return (TIMEIGN); + /* Handle -- after `time -p'. */ + if (last_read_token == TIMEOPT && tokstr[0] == '-' && tokstr[1] == '-' && !tokstr[2]) + return (TIMEIGN); +#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; + +#if defined (EXTENDED_GLOB) + /* Reset to global value of extended glob */ + if (parser_state & PST_EXTPAT) + extended_glob = global_extglob; +#endif + + parser_state = 0; + here_doc_first_line = 0; + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + if (pushed_string_list) + free_string_list (); +#endif /* ALIAS || DPAREN_ARITHMETIC */ + + /* This is where we resynchronize to the next newline on error/reset */ + 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; + + eol_ungetc_lookahead = 0; + + current_token = '\n'; /* XXX */ + last_read_token = '\n'; + token_to_read = '\n'; +} + +void +reset_readahead_token () +{ + if (token_to_read == '\n') + token_to_read = 0; +} + +/* 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 we hit the end of the string and we're not expanding an alias (e.g., + we are eval'ing a string that is an incomplete command), return EOF */ + if (character == '\0' && bash_input.type == st_string && expanding_alias() == 0) + { +#if defined (DEBUG) +itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.string); +#endif + EOF_Reached = 1; + return (yacc_EOF); + } + + if MBTEST(character == '#' && (!interactive || interactive_comments)) + { + /* A comment. Discard until EOL or EOF, and then return a newline. */ + parser_state |= PST_COMMENT; + discard_until ('\n'); + shell_getc (0); + parser_state &= ~PST_COMMENT; + 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); + } + + if (parser_state & PST_REGEXP) + goto tokword; + + /* 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; + + /* If we are parsing a command substitution and we have read a character + that marks the end of it, don't bother to skip over quoted newlines + when we read the next token. We're just interested in a character + that will turn this into a two-character token, so we let the higher + layers deal with quoted newlines following the command substitution. */ + if ((parser_state & PST_CMDSUBST) && character == shell_eof_token) + peek_char = shell_getc (0); + else + 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 MBTEST(peek_char == '-') + return (LESS_LESS_MINUS); + else if MBTEST(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 */ + + peek_char = shell_getc (1); + if MBTEST(peek_char == '&') + return (SEMI_SEMI_AND); + else + { + shell_ungetc (peek_char); + 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(character == '&' && peek_char == '>') + { + peek_char = shell_getc (1); + if MBTEST(peek_char == '>') + return (AND_GREATER_GREATER); + else + { + shell_ungetc (peek_char); + return (AND_GREATER); + } + } + else if MBTEST(character == '|' && peek_char == '&') + return (BAR_AND); + else if MBTEST(character == ';' && peek_char == '&') + { + parser_state |= PST_CASEPAT; +#if defined (ALIAS) + parser_state &= ~PST_ALEXPNEXT; +#endif /* ALIAS */ + return (SEMI_AND); + } + + 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((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); + +tokword: + /* 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 0x0001 +#define P_ALLOWESC 0x0002 +#define P_DQUOTE 0x0004 +#define P_COMMAND 0x0008 /* parsing a command, so look for comments */ +#define P_BACKQUOTE 0x0010 /* parsing a backquoted command substitution */ +#define P_ARRAYSUB 0x0020 /* parsing a [...] array subscript for assignment */ +#define P_DOLBRACE 0x0040 /* parsing a ${...} construct */ + +/* Lexical state while parsing a grouping construct or $(...). */ +#define LEX_WASDOL 0x0001 +#define LEX_CKCOMMENT 0x0002 +#define LEX_INCOMMENT 0x0004 +#define LEX_PASSNEXT 0x0008 +#define LEX_RESWDOK 0x0010 +#define LEX_CKCASE 0x0020 +#define LEX_INCASE 0x0040 +#define LEX_INHEREDOC 0x0080 +#define LEX_HEREDELIM 0x0100 /* reading here-doc delimiter */ +#define LEX_STRIPDOC 0x0200 /* <<- strip tabs from here doc delim */ +#define LEX_QUOTEDDOC 0x0400 /* here doc with quoted delim */ +#define LEX_INWORD 0x0800 +#define LEX_GTLT 0x1000 + +#define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|') + +#define CHECK_NESTRET_ERROR() \ + do { \ + if (nestret == &matched_pair_error) \ + { \ + free (ret); \ + return &matched_pair_error; \ + } \ + } while (0) + +#define APPEND_NESTRET() \ + do { \ + if (nestlen) \ + { \ + RESIZE_MALLOCED_BUFFER (ret, retind, nestlen, retsize, 64); \ + strcpy (ret + retind, nestret); \ + retind += nestlen; \ + } \ + } while (0) + +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, prevch, tflags; + int nestlen, ttranslen, start_lineno; + char *ret, *nestret, *ttrans; + int retind, retsize, rflags; + int dolbrace_state; + + dolbrace_state = (flags & P_DOLBRACE) ? DOLBRACE_PARAM : 0; + +/*itrace("parse_matched_pair[%d]: open = %c close = %c flags = %d", line_number, open, close, flags);*/ + count = 1; + tflags = 0; + + if ((flags & P_COMMAND) && qc != '`' && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0) + tflags |= LEX_CKCOMMENT; + + /* 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; + ch = EOF; /* just in case */ + while (count) + { + prevch = ch; + ch = shell_getc (qc != '\'' && (tflags & (LEX_PASSNEXT)) == 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 (); + + /* Don't bother counting parens or doing anything else if in a comment + or part of a case statement */ + if (tflags & LEX_INCOMMENT) + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + + if (ch == '\n') + tflags &= ~LEX_INCOMMENT; + + 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((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || shellblank (ret[retind - 1]))) + tflags |= LEX_INCOMMENT; + + if (tflags & LEX_PASSNEXT) /* last char was backslash */ + { + tflags &= ~LEX_PASSNEXT; + 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) + ret[retind++] = CTLESC; + ret[retind++] = ch; + continue; + } + /* If we're reparsing the input (e.g., from parse_string_to_word_list), + we've already prepended CTLESC to single-quoted results of $'...'. + We may want to do this for other CTLESC-quoted characters in + reparse, too. */ + else if MBTEST((parser_state & PST_REPARSE) && open == '\'' && (ch == CTLESC || ch == CTLNUL)) + { + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + 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 && (tflags & LEX_WASDOL) && 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 we just read the ending character, don't bother continuing. */ + if (count == 0) + break; + + if (open == '\'') /* '' inside grouping construct */ + { + if MBTEST((flags & P_ALLOWESC) && ch == '\\') + tflags |= LEX_PASSNEXT; + continue; + } + + if MBTEST(ch == '\\') /* backslashes */ + tflags |= LEX_PASSNEXT; + + /* Based on which dolstate is currently in (param, op, or word), + decide what the op is. We're really only concerned if it's % or + #, so we can turn on a flag that says whether or not we should + treat single quotes as special when inside a double-quoted + ${...}. This logic must agree with subst.c:extract_dollar_brace_string + since they share the same defines. */ + /* FLAG POSIX INTERP 221 */ + if (flags & P_DOLBRACE) + { + /* ${param%[%]word} */ + if MBTEST(dolbrace_state == DOLBRACE_PARAM && ch == '%' && retind > 1) + dolbrace_state = DOLBRACE_QUOTE; + /* ${param#[#]word} */ + else if MBTEST(dolbrace_state == DOLBRACE_PARAM && ch == '#' && retind > 1) + dolbrace_state = DOLBRACE_QUOTE; + /* ${param/[/]pat/rep} */ + else if MBTEST(dolbrace_state == DOLBRACE_PARAM && ch == '/' && retind > 1) + dolbrace_state = DOLBRACE_QUOTE2; /* XXX */ + /* ${param^[^]pat} */ + else if MBTEST(dolbrace_state == DOLBRACE_PARAM && ch == '^' && retind > 1) + dolbrace_state = DOLBRACE_QUOTE; + /* ${param,[,]pat} */ + else if MBTEST(dolbrace_state == DOLBRACE_PARAM && ch == ',' && retind > 1) + dolbrace_state = DOLBRACE_QUOTE; + else if MBTEST(dolbrace_state == DOLBRACE_PARAM && strchr ("#%^,~:-=?+/", ch) != 0) + dolbrace_state = DOLBRACE_OP; + else if MBTEST(dolbrace_state == DOLBRACE_OP && strchr ("#%^,~:-=?+/", ch) == 0) + dolbrace_state = DOLBRACE_WORD; + } + + /* The big hammer. Single quotes aren't special in double quotes. The + problem is that Posix used to say the single quotes are semi-special: + within a double-quoted ${...} construct "an even number of + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ + if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') + continue; + + /* Could also check open == '`' if we want to parse grouping constructs + inside old-style command substitution. */ + if (open != close) /* a grouping construct */ + { + if MBTEST(shellquote (ch)) + { + /* '', ``, or "" inside $(...) or other grouping construct. */ + push_delimiter (dstack, ch); + if MBTEST((tflags & LEX_WASDOL) && 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); + CHECK_NESTRET_ERROR (); + + if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0)) + { + /* Translate $'...' here. */ + ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); + free (nestret); + + /* If we're parsing a double-quoted brace expansion and we are + not in a place where single quotes are treated specially, + make sure we single-quote the results of the ansi + expansion because quote removal should remove them later */ + /* FLAG POSIX INTERP 221 */ + if ((shell_compatibility_level > 42) && (rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2) && (flags & P_DOLBRACE)) + { + nestret = sh_single_quote (ttrans); + free (ttrans); + nestlen = strlen (nestret); + } + else 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((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0)) + { + /* Locale expand $"..." here. */ + ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); + free (nestret); + + nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); + free (ttrans); + nestlen = ttranslen + 2; + retind -= 2; /* back up before the $" */ + } + + APPEND_NESTRET (); + FREE (nestret); + } + else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ + goto parse_dollar_word; +#if defined (PROCESS_SUBSTITUTION) + /* XXX - technically this should only be recognized at the start of + a word */ + else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_GTLT) && (ch == '(')) /* ) */ + goto parse_dollar_word; +#endif + } + /* 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); + + CHECK_NESTRET_ERROR (); + APPEND_NESTRET (); + + FREE (nestret); + } + else if MBTEST(open != '`' && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ + /* check for $(), $[], or ${} inside quoted string. */ + { +parse_dollar_word: + if (open == ch) /* undo previous increment */ + count--; + if (ch == '(') /* ) */ + nestret = parse_comsub (0, '(', ')', &nestlen, (rflags|P_COMMAND) & ~P_DQUOTE); + else if (ch == '{') /* } */ + nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags); + else if (ch == '[') /* ] */ + nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags); + + CHECK_NESTRET_ERROR (); + APPEND_NESTRET (); + + FREE (nestret); + } +#if defined (PROCESS_SUBSTITUTION) + if MBTEST((ch == '<' || ch == '>') && (tflags & LEX_GTLT) == 0) + tflags |= LEX_GTLT; + else + tflags &= ~LEX_GTLT; +#endif + if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0) + tflags |= LEX_WASDOL; + else + tflags &= ~LEX_WASDOL; + } + + ret[retind] = '\0'; + if (lenp) + *lenp = retind; +/*itrace("parse_matched_pair[%d]: returning %s", line_number, ret);*/ + return ret; +} + +#if defined (DEBUG) +static void +dump_tflags (flags) + int flags; +{ + int f; + + f = flags; + fprintf (stderr, "%d -> ", f); + if (f & LEX_WASDOL) + { + f &= ~LEX_WASDOL; + fprintf (stderr, "LEX_WASDOL%s", f ? "|" : ""); + } + if (f & LEX_CKCOMMENT) + { + f &= ~LEX_CKCOMMENT; + fprintf (stderr, "LEX_CKCOMMENT%s", f ? "|" : ""); + } + if (f & LEX_INCOMMENT) + { + f &= ~LEX_INCOMMENT; + fprintf (stderr, "LEX_INCOMMENT%s", f ? "|" : ""); + } + if (f & LEX_PASSNEXT) + { + f &= ~LEX_PASSNEXT; + fprintf (stderr, "LEX_PASSNEXT%s", f ? "|" : ""); + } + if (f & LEX_RESWDOK) + { + f &= ~LEX_RESWDOK; + fprintf (stderr, "LEX_RESWDOK%s", f ? "|" : ""); + } + if (f & LEX_CKCASE) + { + f &= ~LEX_CKCASE; + fprintf (stderr, "LEX_CKCASE%s", f ? "|" : ""); + } + if (f & LEX_INCASE) + { + f &= ~LEX_INCASE; + fprintf (stderr, "LEX_INCASE%s", f ? "|" : ""); + } + if (f & LEX_INHEREDOC) + { + f &= ~LEX_INHEREDOC; + fprintf (stderr, "LEX_INHEREDOC%s", f ? "|" : ""); + } + if (f & LEX_HEREDELIM) + { + f &= ~LEX_HEREDELIM; + fprintf (stderr, "LEX_HEREDELIM%s", f ? "|" : ""); + } + if (f & LEX_STRIPDOC) + { + f &= ~LEX_STRIPDOC; + fprintf (stderr, "LEX_WASDOL%s", f ? "|" : ""); + } + if (f & LEX_QUOTEDDOC) + { + f &= ~LEX_QUOTEDDOC; + fprintf (stderr, "LEX_QUOTEDDOC%s", f ? "|" : ""); + } + if (f & LEX_INWORD) + { + f &= ~LEX_INWORD; + fprintf (stderr, "LEX_INWORD%s", f ? "|" : ""); + } + + fprintf (stderr, "\n"); + fflush (stderr); +} +#endif + +/* Parse a $(...) command substitution. This is messier than I'd like, and + reproduces a lot more of the token-reading code than I'd like. */ +static char * +parse_comsub (qc, open, close, lenp, flags) + int qc; /* `"' if this construct is within double quotes */ + int open, close; + int *lenp, flags; +{ + int count, ch, peekc, tflags, lex_rwlen, lex_wlen, lex_firstind; + int nestlen, ttranslen, start_lineno, orig_histexp; + char *ret, *nestret, *ttrans, *heredelim; + int retind, retsize, rflags, hdlen; + + /* Posix interp 217 says arithmetic expressions have precedence, so + assume $(( introduces arithmetic expansion and parse accordingly. */ + peekc = shell_getc (0); + shell_ungetc (peekc); + if (peekc == '(') + return (parse_matched_pair (qc, open, close, lenp, 0)); + +/*itrace("parse_comsub: qc = `%c' open = %c close = %c", qc, open, close);*/ + count = 1; + tflags = LEX_RESWDOK; +#if defined (BANG_HISTORY) + orig_histexp = history_expansion_inhibited; +#endif + + if ((flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0) + tflags |= LEX_CKCASE; + if ((tflags & LEX_CKCASE) && (interactive == 0 || interactive_comments)) + tflags |= LEX_CKCOMMENT; + + /* RFLAGS is the set of flags we want to pass to recursive calls. */ + rflags = (flags & P_DQUOTE); + + ret = (char *)xmalloc (retsize = 64); + retind = 0; + + start_lineno = line_number; + lex_rwlen = lex_wlen = 0; + + heredelim = 0; + lex_firstind = -1; + + while (count) + { +comsub_readchar: + ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT|LEX_QUOTEDDOC)) == 0); + + if (ch == EOF) + { +eof_error: +#if defined (BANG_HISTORY) + history_expansion_inhibited = orig_histexp; +#endif + free (ret); + FREE (heredelim); + parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close); + EOF_Reached = 1; /* XXX */ + return (&matched_pair_error); + } + + /* If we hit the end of a line and are reading the contents of a here + document, and it's not the same line that the document starts on, + check for this line being the here doc delimiter. Otherwise, if + we're in a here document, mark the next character as the beginning + of a line. */ + if (ch == '\n') + { + if ((tflags & LEX_HEREDELIM) && heredelim) + { + tflags &= ~LEX_HEREDELIM; + tflags |= LEX_INHEREDOC; +#if defined (BANG_HISTORY) + history_expansion_inhibited = 1; +#endif + lex_firstind = retind + 1; + } + else if (tflags & LEX_INHEREDOC) + { + int tind; + tind = lex_firstind; + while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') + tind++; + if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen)) + { + tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); +/*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/ + free (heredelim); + heredelim = 0; + lex_firstind = -1; +#if defined (BANG_HISTORY) + history_expansion_inhibited = orig_histexp; +#endif + } + else + lex_firstind = retind + 1; + } + } + + /* Possible reprompting. */ + if (ch == '\n' && SHOULD_PROMPT ()) + prompt_again (); + + /* XXX -- we currently allow here doc to be delimited by ending right + paren in default mode and posix mode. To change posix mode, change + the #if 1 to #if 0 below */ + if ((tflags & LEX_INHEREDOC) && ch == close && count == 1) + { + int tind; +/*itrace("parse_comsub:%d: in here doc, ch == close, retind - firstind = %d hdlen = %d retind = %d", line_number, retind-lex_firstind, hdlen, retind);*/ + tind = lex_firstind; + while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') + tind++; +#if 1 + if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen)) +#else + /* Posix-mode shells require the newline after the here-document + delimiter. */ + if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen) && + posixly_correct == 0) +#endif + { + tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); +/*itrace("parse_comsub:%d: found here doc end `%*s'", line_number, hdlen, ret + tind);*/ + free (heredelim); + heredelim = 0; + lex_firstind = -1; +#if defined (BANG_HISTORY) + history_expansion_inhibited = orig_histexp; +#endif + } + } + + /* Don't bother counting parens or doing anything else if in a comment or + here document (not exactly right for here-docs -- if we want to allow + recursive calls to parse_comsub to have their own here documents, + change the LEX_INHEREDOC to LEX_QUOTEDDOC here and uncomment the next + clause below. Note that to make this work completely, we need to make + additional changes to allow xparse_dolparen to work right when the + command substitution is parsed, because read_secondary_line doesn't know + to recursively parse through command substitutions embedded in here- + documents */ + if (tflags & (LEX_INCOMMENT|LEX_INHEREDOC)) + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + + if ((tflags & LEX_INCOMMENT) && ch == '\n') + { +/*itrace("parse_comsub:%d: lex_incomment -> 0 ch = `%c'", line_number, ch);*/ + tflags &= ~LEX_INCOMMENT; + } + + continue; + } +#if 0 + /* If we're going to recursively parse a command substitution inside a + here-document, make sure we call parse_comsub recursively below. See + above for additional caveats. */ + if ((tflags & LEX_INHEREDOC) && ((tflags & LEX_WASDOL) == 0 || ch != '(')) /*)*/ + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + if MBTEST(ch == '$') + tflags |= LEX_WASDOL; + else + tflags &= ~LEX_WASDOL; + } +#endif + + if (tflags & LEX_PASSNEXT) /* last char was backslash */ + { +/*itrace("parse_comsub:%d: lex_passnext -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/ + tflags &= ~LEX_PASSNEXT; + 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) + ret[retind++] = CTLESC; + ret[retind++] = ch; + continue; + } + + /* If this is a shell break character, we are not in a word. If not, + we either start or continue a word. */ + if MBTEST(shellbreak (ch)) + { + tflags &= ~LEX_INWORD; +/*itrace("parse_comsub:%d: lex_inword -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/ + } + else + { + if (tflags & LEX_INWORD) + { + lex_wlen++; +/*itrace("parse_comsub:%d: lex_inword == 1 ch = `%c' lex_wlen = %d (%d)", line_number, ch, lex_wlen, __LINE__);*/ + } + else + { +/*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/ + tflags |= LEX_INWORD; + lex_wlen = 0; + if (tflags & LEX_RESWDOK) + lex_rwlen = 0; + } + } + + /* Skip whitespace */ + if MBTEST(shellblank (ch) && (tflags & LEX_HEREDELIM) == 0 && lex_rwlen == 0) + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + continue; + } + + /* Either we are looking for the start of the here-doc delimiter + (lex_firstind == -1) or we are reading one (lex_firstind >= 0). + If this character is a shell break character and we are reading + the delimiter, save it and note that we are now reading a here + document. If we've found the start of the delimiter, note it by + setting lex_firstind. Backslashes can quote shell metacharacters + in here-doc delimiters. */ + if (tflags & LEX_HEREDELIM) + { + if (lex_firstind == -1 && shellbreak (ch) == 0) + lex_firstind = retind; +#if 0 + else if (heredelim && (tflags & LEX_PASSNEXT) == 0 && ch == '\n') + { + tflags |= LEX_INHEREDOC; + tflags &= ~LEX_HEREDELIM; + lex_firstind = retind + 1; +#if defined (BANG_HISTORY) + history_expansion_inhibited = 1; +#endif + } +#endif + else if (lex_firstind >= 0 && (tflags & LEX_PASSNEXT) == 0 && shellbreak (ch)) + { + if (heredelim == 0) + { + nestret = substring (ret, lex_firstind, retind); + heredelim = string_quote_removal (nestret, 0); + hdlen = STRLEN(heredelim); +/*itrace("parse_comsub:%d: found here doc delimiter `%s' (%d)", line_number, heredelim, hdlen);*/ + if (STREQ (heredelim, nestret) == 0) + tflags |= LEX_QUOTEDDOC; + free (nestret); + } + if (ch == '\n') + { + tflags |= LEX_INHEREDOC; + tflags &= ~LEX_HEREDELIM; + lex_firstind = retind + 1; +#if defined (BANG_HISTORY) + history_expansion_inhibited = 1; +#endif + } + else + lex_firstind = -1; + } + } + + /* Meta-characters that can introduce a reserved word. Not perfect yet. */ + if MBTEST((tflags & LEX_RESWDOK) == 0 && (tflags & LEX_CKCASE) && (tflags & LEX_INCOMMENT) == 0 && (shellmeta(ch) || ch == '\n')) + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + peekc = shell_getc (1); + if (ch == peekc && (ch == '&' || ch == '|' || ch == ';')) /* two-character tokens */ + { + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = peekc; +/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/ + tflags |= LEX_RESWDOK; + lex_rwlen = 0; + continue; + } + else if (ch == '\n' || COMSUB_META(ch)) + { + shell_ungetc (peekc); +/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/ + tflags |= LEX_RESWDOK; + lex_rwlen = 0; + continue; + } + else if (ch == EOF) + goto eof_error; + else + { + /* `unget' the character we just added and fall through */ + retind--; + shell_ungetc (peekc); + } + } + + /* If we can read a reserved word, try to read one. */ + if (tflags & LEX_RESWDOK) + { + if MBTEST(islower ((unsigned char)ch)) + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + lex_rwlen++; + continue; + } + else if MBTEST(lex_rwlen == 4 && shellbreak (ch)) + { + if (STREQN (ret + retind - 4, "case", 4)) + { + tflags |= LEX_INCASE; + tflags &= ~LEX_RESWDOK; +/*itrace("parse_comsub:%d: found `case', lex_incase -> 1 lex_reswdok -> 0", line_number);*/ + } + else if (STREQN (ret + retind - 4, "esac", 4)) + { + tflags &= ~LEX_INCASE; +/*itrace("parse_comsub:%d: found `esac', lex_incase -> 0 lex_reswdok -> 1", line_number);*/ + tflags |= LEX_RESWDOK; + lex_rwlen = 0; + } + else if (STREQN (ret + retind - 4, "done", 4) || + STREQN (ret + retind - 4, "then", 4) || + STREQN (ret + retind - 4, "else", 4) || + STREQN (ret + retind - 4, "elif", 4) || + STREQN (ret + retind - 4, "time", 4)) + { + /* these are four-character reserved words that can be + followed by a reserved word; anything else turns off + the reserved-word-ok flag */ +/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 1", line_number, ret+retind-4);*/ + tflags |= LEX_RESWDOK; + lex_rwlen = 0; + } + else if (shellmeta (ch) == 0) + { + tflags &= ~LEX_RESWDOK; +/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/ + } + else /* can't be in a reserved word any more */ + lex_rwlen = 0; + } + else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0))) + ; /* don't modify LEX_RESWDOK if we're starting a comment */ + /* Allow `do' followed by space, tab, or newline to preserve the + RESWDOK flag, but reset the reserved word length counter so we + can read another one. */ + else if MBTEST(((tflags & LEX_INCASE) == 0) && + (isblank((unsigned char)ch) || ch == '\n') && + lex_rwlen == 2 && + STREQN (ret + retind - 2, "do", 2)) + { +/*itrace("parse_comsub:%d: lex_incase == 0 found `%c', found \"do\"", line_number, ch);*/ + lex_rwlen = 0; + } + else if MBTEST((tflags & LEX_INCASE) && ch != '\n') + /* If we can read a reserved word and we're in case, we're at the + point where we can read a new pattern list or an esac. We + handle the esac case above. If we read a newline, we want to + leave LEX_RESWDOK alone. If we read anything else, we want to + turn off LEX_RESWDOK, since we're going to read a pattern list. */ + { + tflags &= ~LEX_RESWDOK; +/*itrace("parse_comsub:%d: lex_incase == 1 found `%c', lex_reswordok -> 0", line_number, ch);*/ + } + else if MBTEST(shellbreak (ch) == 0) + { + tflags &= ~LEX_RESWDOK; +/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ + } +#if 0 + /* If we find a space or tab but have read something and it's not + `do', turn off the reserved-word-ok flag */ + else if MBTEST(isblank ((unsigned char)ch) && lex_rwlen > 0) + { + tflags &= ~LEX_RESWDOK; +/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ + } +#endif + } + + /* Might be the start of a here-doc delimiter */ + if MBTEST((tflags & LEX_INCOMMENT) == 0 && (tflags & LEX_CKCASE) && ch == '<') + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + peekc = shell_getc (1); + if (peekc == EOF) + goto eof_error; + if (peekc == ch) + { + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = peekc; + peekc = shell_getc (1); + if (peekc == EOF) + goto eof_error; + if (peekc == '-') + { + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = peekc; + tflags |= LEX_STRIPDOC; + } + else + shell_ungetc (peekc); + if (peekc != '<') + { + tflags |= LEX_HEREDELIM; + lex_firstind = -1; + } + continue; + } + else + { + shell_ungetc (peekc); /* not a here-doc, start over */ + continue; + } + } + else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0))) + { +/*itrace("parse_comsub:%d: lex_incomment -> 1 (%d)", line_number, __LINE__);*/ + tflags |= LEX_INCOMMENT; + } + + if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */ + { + RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); + ret[retind++] = CTLESC; + ret[retind++] = ch; + continue; + } +#if 0 + else if MBTEST((tflags & LEX_INCASE) && ch == close && close == ')') + tflags &= ~LEX_INCASE; /* XXX */ +#endif + else if MBTEST(ch == close && (tflags & LEX_INCASE) == 0) /* ending delimiter */ + { + count--; +/*itrace("parse_comsub:%d: found close: count = %d", line_number, count);*/ + } + else if MBTEST(((flags & P_FIRSTCLOSE) == 0) && (tflags & LEX_INCASE) == 0 && ch == open) /* nested begin */ + { + count++; +/*itrace("parse_comsub:%d: found open: count = %d", line_number, count);*/ + } + + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + + /* If we just read the ending character, don't bother continuing. */ + if (count == 0) + break; + + if MBTEST(ch == '\\') /* backslashes */ + tflags |= LEX_PASSNEXT; + + if MBTEST(shellquote (ch)) + { + /* '', ``, or "" inside $(...). */ + push_delimiter (dstack, ch); + if MBTEST((tflags & LEX_WASDOL) && 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); + CHECK_NESTRET_ERROR (); + + if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0)) + { + /* Translate $'...' here. */ + ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); + free (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((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0)) + { + /* Locale expand $"..." here. */ + ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); + free (nestret); + + nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); + free (ttrans); + nestlen = ttranslen + 2; + retind -= 2; /* back up before the $" */ + } + + APPEND_NESTRET (); + FREE (nestret); + } + else if MBTEST((tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ + /* check for $(), $[], or ${} inside command substitution. */ + { + if ((tflags & LEX_INCASE) == 0 && open == ch) /* undo previous increment */ + count--; + if (ch == '(') /* ) */ + nestret = parse_comsub (0, '(', ')', &nestlen, (rflags|P_COMMAND) & ~P_DQUOTE); + else if (ch == '{') /* } */ + nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags); + else if (ch == '[') /* ] */ + nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags); + + CHECK_NESTRET_ERROR (); + APPEND_NESTRET (); + + FREE (nestret); + } + if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0) + tflags |= LEX_WASDOL; + else + tflags &= ~LEX_WASDOL; + } + +#if defined (BANG_HISTORY) + history_expansion_inhibited = orig_histexp; +#endif + FREE (heredelim); + ret[retind] = '\0'; + if (lenp) + *lenp = retind; +/*itrace("parse_comsub:%d: returning `%s'", line_number, ret);*/ + return ret; +} + +/* Recursively call the parser to parse a $(...) command substitution. */ +char * +xparse_dolparen (base, string, indp, flags) + char *base; + char *string; + int *indp; + int flags; +{ + sh_parser_state_t ps; + sh_input_line_state_t ls; + int orig_ind, nc, sflags, orig_eof_token, start_lineno; + char *ret, *ep, *ostring; +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + STRING_SAVER *saved_pushed_strings; +#endif + +/*debug_parser(1);*/ + orig_ind = *indp; + ostring = string; + start_lineno = line_number; + + if (*string == 0) + { + if (flags & SX_NOALLOC) + return (char *)NULL; + + ret = xmalloc (1); + ret[0] = '\0'; + return ret; + } + +/*itrace("xparse_dolparen: size = %d shell_input_line = `%s' string=`%s'", shell_input_line_size, shell_input_line, string);*/ + sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE; + if (flags & SX_NOLONGJMP) + sflags |= SEVAL_NOLONGJMP; + save_parser_state (&ps); + save_input_line_state (&ls); + orig_eof_token = shell_eof_token; + /* avoid echoing every substitution again */ + echo_input_at_read = 0; +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + saved_pushed_strings = pushed_string_list; /* separate parsing context */ + pushed_string_list = (STRING_SAVER *)NULL; +#endif + + /*(*/ + parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ + shell_eof_token = ')'; + + /* Should we save and restore the bison/yacc lookahead token (yychar) here? + Or only if it's not YYEMPTY? */ + + nc = parse_string (string, "command substitution", sflags, &ep); + + if (current_token == shell_eof_token) + yyclearin; /* might want to clear lookahead token unconditionally */ + + reset_parser (); + /* reset_parser() clears shell_input_line and associated variables, including + parser_state, so we want to reset things, then restore what we need. */ + restore_input_line_state (&ls); + + shell_eof_token = orig_eof_token; + restore_parser_state (&ps); + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + pushed_string_list = saved_pushed_strings; +#endif + + token_to_read = 0; + + /* If parse_string returns < 0, we need to jump to top level with the + negative of the return value. We abandon the rest of this input line + first */ + if (nc < 0) + { + clear_shell_input_line (); /* XXX */ + if (bash_input.type != st_string) /* paranoia */ + parser_state &= ~(PST_CMDSUBST|PST_EOFTOKEN); + jump_to_top_level (-nc); /* XXX */ + } + + /* Need to find how many characters parse_and_execute consumed, update + *indp, if flags != 0, copy the portion of the string parsed into RET + and return it. If flags & 1 (SX_NOALLOC) we can return NULL. */ + + /*(*/ + if (ep[-1] != ')') + { +#if DEBUG + if (ep[-1] != '\n') + itrace("xparse_dolparen:%d: ep[-1] != RPAREN (%d), ep = `%s'", line_number, ep[-1], ep); +#endif + + while (ep > ostring && ep[-1] == '\n') ep--; + } + + nc = ep - ostring; + *indp = ep - base - 1; + + /*((*/ +#if DEBUG + if (base[*indp] != ')') + itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base); + if (*indp < orig_ind) + itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring); +#endif + + if (base[*indp] != ')') + { + /*(*/ + parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), ')'); + jump_to_top_level (DISCARD); + } + + if (flags & SX_NOALLOC) + return (char *)NULL; + + if (nc == 0) + { + ret = xmalloc (1); + ret[0] = '\0'; + } + else + ret = substring (ostring, 0, nc - 1); + + 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); + pushed_string_list->flags = PSH_DPAREN; + 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 && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && 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 (op->word[0] == '=' && (op->word[1] == '\0' || (op->word[1] == '=' && op->word[2] == '\0'))) + parser_state |= PST_EXTPAT; + else if (op->word[0] == '!' && op->word[1] == '=' && op->word[2] == '\0') + parser_state |= PST_EXTPAT; + } +#if defined (COND_REGEXP) + else if (tok == WORD && STREQ (yylval.word->word, "=~")) + { + op = yylval.word; + parser_state |= PST_REGEXP; + } +#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 */ + if (parser_state & PST_EXTPAT) + extended_glob = 1; + tok = read_token (READ); + if (parser_state & PST_EXTPAT) + extended_glob = global_extglob; + parser_state &= ~(PST_REGEXP|PST_EXTPAT); + + 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; + + global_extglob = extended_glob; + 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 use a buffer with room for the characters we add just + in case assignment() ends up doing something like parsing a command + substitution that will reallocate atoken. We don't want to write beyond + the end of an allocated buffer. */ +static int +token_is_assignment (t, i) + char *t; + int i; +{ + int r; + char *atoken; + + atoken = xmalloc (i + 3); + memcpy (atoken, t, i); + atoken[i] = '='; + atoken[i+1] = '\0'; + + r = assignment (atoken, (parser_state & PST_COMPASSIGN) != 0); + + free (atoken); + + /* XXX - check that r == i to avoid returning false positive for + t containing `=' before t[i]. */ + return (r > 0 && r == i); +} + +/* 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_escaped_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; + if (character != '`') + quoted = 1; + dollar_present |= (character == '"' && strchr (ttok, '$') != 0); + FREE (ttok); + goto next_character; + } + +#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 */ + +#ifdef EXTENDED_GLOB + /* Parse a ksh-style extended pattern matching specification. */ + if MBTEST(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 + 3, + 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|P_DOLBRACE); + 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_comsub (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 + 3, + 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 + 1, + 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 == '$') + { + RESIZE_MALLOCED_BUFFER (token, token_index, 3, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = '$'; + token[token_index++] = peek_char; + dollar_present = 1; + all_digit_token = 0; + goto next_character; + } + else + shell_ungetc (peek_char); + } + +#if defined (ARRAY_VARS) + /* Identify possible array subscript assignment; match [...]. If + parser_state&PST_COMPASSIGN, we need to parse [sub]=words treating + `sub' as if it were enclosed in double quotes. */ + else if MBTEST(character == '[' && /* ] */ + ((token_index > 0 && assignment_acceptable (last_read_token) && token_is_ident (token, token_index)) || + (token_index == 0 && (parser_state&PST_COMPASSIGN)))) + { + ttok = parse_matched_pair (cd, '[', ']', &ttoklen, P_ARRAYSUB); + 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: + if (character == CTLESC || character == CTLNUL) + { + RESIZE_MALLOCED_BUFFER (token, token_index, 2, token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = CTLESC; + } + else +got_escaped_character: + RESIZE_MALLOCED_BUFFER (token, token_index, 1, token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + + token[token_index++] = character; + + all_digit_token &= DIGIT (character); + dollar_present |= character == '$'; + + 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: + + /* Calls to RESIZE_MALLOCED_BUFFER ensure there is sufficient room. */ + 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; + 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 = alloc_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 (parser_state & PST_COMPASSIGN) + the_word->flags |= W_NOGLOB; /* XXX - W_NOBRACE? */ + } + } + + 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; + + /* should we check that quoted == 0 as well? */ + if (token[0] == '{' && token[token_index-1] == '}' && + (character == '<' || character == '>')) + { + /* can use token; already copied to the_word */ + token[token_index-1] = '\0'; +#if defined (ARRAY_VARS) + if (legal_identifier (token+1) || valid_array_reference (token+1, 0)) +#else + if (legal_identifier (token+1)) +#endif + { + strcpy (the_word->word, token+1); +/* itrace("read_token_word: returning REDIR_WORD for %s", the_word->word); */ + yylval.word = the_word; /* accommodate recursive call */ + return (REDIR_WORD); + } + else + /* valid_array_reference can call the parser recursively; need to + make sure that yylval.word doesn't change if we are going to + return WORD or ASSIGNMENT_WORD */ + 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; + expecting_in_token++; + 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 BAR_AND: + case DO: + case DONE: + case ELIF: + case ELSE: + case ESAC: + case FI: + case IF: + case OR_OR: + case SEMI_SEMI: + case SEMI_AND: + case SEMI_SEMI_AND: + case THEN: + case TIME: + case TIMEOPT: + case TIMEIGN: + case COPROC: + case UNTIL: + case WHILE: + case 0: + return 1; + default: +#if defined (COPROCESS_SUPPORT) + if (last_read_token == WORD && token_before_that == COPROC) + return 1; +#endif + if (last_read_token == WORD && token_before_that == FUNCTION) + return 1; + 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; +} + +/* An interface to let the rest of the shell (primarily the completion + system) know what the parser is expecting. */ +int +parser_in_command_position () +{ + return (command_token_position (last_read_token)); +} + +#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 const int no_semi_successors[] = { + '\n', '{', '(', ')', ';', '&', '|', + CASE, DO, ELSE, IF, SEMI_SEMI, SEMI_AND, SEMI_SEMI_AND, 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. LINE is the line we're about to add; it helps + make some more intelligent decisions in certain cases. */ +char * +history_delimiting_chars (line) + const char *line; +{ + static int last_was_heredoc = 0; /* was the last entry the start of a here document? */ + register int i; + + if ((parser_state & PST_HEREDOC) == 0) + last_was_heredoc = 0; + + if (dstack.delimiter_depth != 0) + return ("\n"); + + /* We look for current_command_line_count == 2 because we are looking to + add the first line of the body of the here document (the second line + of the command). We also keep LAST_WAS_HEREDOC as a private sentinel + variable to note when we think we added the first line of a here doc + (the one with a "<<" somewhere in it) */ + if (parser_state & PST_HEREDOC) + { + if (last_was_heredoc) + { + last_was_heredoc = 0; + return "\n"; + } + return (here_doc_first_line ? "\n" : ""); + } + + if (parser_state & PST_COMPASSIGN) + return (" "); + + /* 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 `()' */ + + /* If we're not in a here document, but we think we're about to parse one, + and we would otherwise return a `;', return a newline to delimit the + line with the here-doc delimiter */ + else if ((parser_state & PST_HEREDOC) == 0 && current_command_line_count > 1 && last_read_token == '\n' && strstr (line, "<<")) + { + last_was_heredoc = 1; + return "\n"; + } + else if ((parser_state & PST_HEREDOC) == 0 && current_command_line_count > 1 && need_here_doc > 0) + return "\n"; + 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 (" "); + } + + if (line_isblank (line)) + 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"); + + ps0_prompt = get_string_value ("PS0"); + + 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); +} + +#if defined (HISTORY) + /* The history library increments the history offset as soon as it stores + the first line of a potentially multi-line command, so we compensate + here by returning one fewer when appropriate. */ +static int +prompt_history_number (pmt) + char *pmt; +{ + int ret; + + ret = history_number (); + if (ret == 1) + return ret; + + if (pmt == ps1_prompt) /* are we expanding $PS1? */ + return ret; + else if (pmt == ps2_prompt && command_oriented_history == 0) + return ret; /* not command oriented history */ + else if (pmt == ps2_prompt && command_oriented_history && current_command_first_line_saved) + return ret - 1; + else + return ret - 1; /* PS0, PS4, ${var@P}, PS2 other cases */ +} +#endif + +/* 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, *orig_string; + struct dstack save_dstack; + int last_exit_value, last_comsub_pid; +#if defined (PROMPT_STRING_DECODE) + size_t result_size; + int result_index; + int c, n, i; + char *temp, *t_host, 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; + orig_string = string; + + 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 (prompt_history_number (orig_string)); +#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); +#if defined (HAVE_TZSET) + sv_tz ("TZ"); /* XXX -- just make sure */ +#endif + 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); + /* Try to quote anything the user can set in the file system */ + if (promptvars || posixly_correct) + temp = sh_backslash_quote_for_double_quotes (temp); + else + 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'; + +#if defined (MACOSX) + /* Convert from "fs" format to "input" format */ + temp = fnx_fromfs (t_string, strlen (t_string)); + if (temp != t_string) + strcpy (t_string, temp); +#endif + +#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) + memmove (t_string, t + 1, strlen (t)); /* strlen(t) to copy NULL */ + } + } +#undef ROOT_PATH +#undef DOUBLE_SLASH_ROOT + else + { + /* polite_directory_format is guaranteed to return a string + no longer than PATH_MAX - 1 characters. */ + temp = polite_directory_format (t_string); + if (temp != t_string) + strcpy (t_string, temp); + } + + temp = trim_pathname (t_string, PATH_MAX - 1); + /* 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': + t_host = savestring (current_host_name); + if (c == 'h' && (t = (char *)strchr (t_host, '.'))) + *t = '\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 (t_host); + else + temp = savestring (t_host); + free (t_host); + goto add_string; + + case '#': + n = current_command_number; + /* If we have already incremented current_command_number (PS4, + ${var@P}), compensate */ + if (orig_string != ps0_prompt && orig_string != ps1_prompt && orig_string != ps2_prompt) + n--; + temp = itos (n); + goto add_string; + + case '!': +#if !defined (HISTORY) + temp = savestring ("1"); +#else /* HISTORY */ + temp = itos (prompt_history_number (orig_string)); +#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); + /* dequote_string should take care of removing this if we are not + performing the rest of the word expansions. */ + if (c == CTLESC || c == CTLNUL) + result[result_index++] = CTLESC; + 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; + last_comsub_pid = last_command_subst_pid; + list = expand_prompt_string (result, Q_DOUBLE_QUOTES, 0); + free (result); + result = string_list (list); + dispose_words (list); + last_command_exit_value = last_exit_value; + last_command_subst_pid = last_comsub_pid; + } + 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, *p; + + if (message) + { + parser_error (line_number, "%s", message); + if (interactive && EOF_Reached) + EOF_Reached = 0; + last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE; + set_pipestatus_from_exit (last_command_exit_value); + 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))) + { + if (ansic_shouldquote (msg)) + { + p = ansic_quote (msg, 0, NULL); + free (msg); + msg = p; + } + parser_error (line_number, _("syntax error near unexpected token `%s'"), msg); + free (msg); + + if (interactive == 0) + print_offending_line (); + + last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE; + set_pipestatus_from_exit (last_command_exit_value); + 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 = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE; + set_pipestatus_from_exit (last_command_exit_value); +} + +/* ??? 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 (); + + last_shell_builtin = this_shell_builtin; + this_shell_builtin = exit_builtin; + 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, ea; +#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); +#if 0 /* TAG: bash-5.2 Alex fxmbsw7 Ratchev 11/17/2020 */ + if (ea = expanding_alias ()) + parser_save_alias (); +#endif + 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|PST_REPARSE; + + 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 0 /* TAG: bash-5.2 */ + if (ea) + parser_restore_alias (); +#endif + +#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|PST_REPARSE); + + if (wl == &parse_string_error) + { + set_exit_status (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) + { + set_exit_status (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 (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->prompt_string_pointer = prompt_string_pointer; + + 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) + ps->pipestatus = save_pipestatus_array (); +#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; + ps->need_here_doc = need_here_doc; + ps->here_doc_first_line = here_doc_first_line; + + if (need_here_doc == 0) + ps->redir_stack[0] = 0; + else + memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); + + ps->token = token; + ps->token_buffer_size = token_buffer_size; + /* Force reallocation on next call to read_token_word */ + token = 0; + token_buffer_size = 0; + + return (ps); +} + +void +restore_parser_state (ps) + sh_parser_state_t *ps; +{ + int i; + + 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; + + prompt_string_pointer = ps->prompt_string_pointer; + + 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) + restore_pipestatus_array (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; + need_here_doc = ps->need_here_doc; + here_doc_first_line = ps->here_doc_first_line; + +#if 0 + for (i = 0; i < HEREDOC_MAX; i++) + redir_stack[i] = ps->redir_stack[i]; +#else + if (need_here_doc == 0) + redir_stack[0] = 0; + else + memcpy (redir_stack, ps->redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); +#endif + + FREE (token); + token = ps->token; + token_buffer_size = ps->token_buffer_size; +} + +sh_input_line_state_t * +save_input_line_state (ls) + sh_input_line_state_t *ls; +{ + if (ls == 0) + ls = (sh_input_line_state_t *)xmalloc (sizeof (sh_input_line_state_t)); + if (ls == 0) + return ((sh_input_line_state_t *)NULL); + + ls->input_line = shell_input_line; + ls->input_line_size = shell_input_line_size; + ls->input_line_len = shell_input_line_len; + ls->input_line_index = shell_input_line_index; + +#if defined (HANDLE_MULTIBYTE) + ls->input_property = shell_input_line_property; + ls->input_propsize = shell_input_line_propsize; +#endif + + /* force reallocation */ + shell_input_line = 0; + shell_input_line_size = shell_input_line_len = shell_input_line_index = 0; + +#if defined (HANDLE_MULTIBYTE) + shell_input_line_property = 0; + shell_input_line_propsize = 0; +#endif + + return ls; +} + +void +restore_input_line_state (ls) + sh_input_line_state_t *ls; +{ + FREE (shell_input_line); + shell_input_line = ls->input_line; + shell_input_line_size = ls->input_line_size; + shell_input_line_len = ls->input_line_len; + shell_input_line_index = ls->input_line_index; + +#if defined (HANDLE_MULTIBYTE) + FREE (shell_input_line_property); + shell_input_line_property = ls->input_property; + shell_input_line_propsize = ls->input_propsize; +#endif + +#if 0 + set_line_mbstate (); +#endif +} + +/************************************************ + * * + * MULTIBYTE CHARACTER HANDLING * + * * + ************************************************/ + +#if defined (HANDLE_MULTIBYTE) + +/* We don't let the property buffer get larger than this unless the line is */ +#define MAX_PROPSIZE 32768 + +static void +set_line_mbstate () +{ + int c; + size_t i, previ, len; + mbstate_t mbs, prevs; + size_t mbclen; + int ilen; + + if (shell_input_line == NULL) + return; + len = STRLEN (shell_input_line); /* XXX - shell_input_line_len ? */ + if (len == 0) + return; + if (shell_input_line_propsize >= MAX_PROPSIZE && len < MAX_PROPSIZE>>1) + { + free (shell_input_line_property); + shell_input_line_property = 0; + shell_input_line_propsize = 0; + } + if (len+1 > shell_input_line_propsize) + { + shell_input_line_propsize = len + 1; + shell_input_line_property = (char *)xrealloc (shell_input_line_property, shell_input_line_propsize); + } + + if (locale_mb_cur_max == 1) + { + memset (shell_input_line_property, 1, len); + return; + } + + /* XXX - use whether or not we are in a UTF-8 locale to avoid calls to + mbrlen */ + if (locale_utf8locale == 0) + memset (&prevs, '\0', sizeof (mbstate_t)); + + for (i = previ = 0; i < len; i++) + { + if (locale_utf8locale == 0) + mbs = prevs; + + c = shell_input_line[i]; + if (c == EOF) + { + size_t j; + for (j = i; j < len; j++) + shell_input_line_property[j] = 1; + break; + } + + if (locale_utf8locale) + { + if ((unsigned char)shell_input_line[previ] < 128) /* i != previ */ + mbclen = 1; + else + { + ilen = utf8_mblen (shell_input_line + previ, i - previ + 1); + mbclen = (ilen == -1) ? (size_t)-1 + : ((ilen == -2) ? (size_t)-2 : (size_t)ilen); + } + } + else + 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; + if (locale_utf8locale == 0) + prevs = mbs; + } + else + { + size_t 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/bash-5.1/parser-built b/bash-5.1/parser-built new file mode 100644 index 0000000..41bdea0 --- /dev/null +++ b/bash-5.1/parser-built @@ -0,0 +1,186 @@ +/* A Bison parser, made by GNU Bison 3.6.4. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +#ifndef YY_YY_Y_TAB_H_INCLUDED +# define YY_YY_Y_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token kinds. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + IF = 258, /* IF */ + THEN = 259, /* THEN */ + ELSE = 260, /* ELSE */ + ELIF = 261, /* ELIF */ + FI = 262, /* FI */ + CASE = 263, /* CASE */ + ESAC = 264, /* ESAC */ + FOR = 265, /* FOR */ + SELECT = 266, /* SELECT */ + WHILE = 267, /* WHILE */ + UNTIL = 268, /* UNTIL */ + DO = 269, /* DO */ + DONE = 270, /* DONE */ + FUNCTION = 271, /* FUNCTION */ + COPROC = 272, /* COPROC */ + COND_START = 273, /* COND_START */ + COND_END = 274, /* COND_END */ + COND_ERROR = 275, /* COND_ERROR */ + IN = 276, /* IN */ + BANG = 277, /* BANG */ + TIME = 278, /* TIME */ + TIMEOPT = 279, /* TIMEOPT */ + TIMEIGN = 280, /* TIMEIGN */ + WORD = 281, /* WORD */ + ASSIGNMENT_WORD = 282, /* ASSIGNMENT_WORD */ + REDIR_WORD = 283, /* REDIR_WORD */ + NUMBER = 284, /* NUMBER */ + ARITH_CMD = 285, /* ARITH_CMD */ + ARITH_FOR_EXPRS = 286, /* ARITH_FOR_EXPRS */ + COND_CMD = 287, /* COND_CMD */ + AND_AND = 288, /* AND_AND */ + OR_OR = 289, /* OR_OR */ + GREATER_GREATER = 290, /* GREATER_GREATER */ + LESS_LESS = 291, /* LESS_LESS */ + LESS_AND = 292, /* LESS_AND */ + LESS_LESS_LESS = 293, /* LESS_LESS_LESS */ + GREATER_AND = 294, /* GREATER_AND */ + SEMI_SEMI = 295, /* SEMI_SEMI */ + SEMI_AND = 296, /* SEMI_AND */ + SEMI_SEMI_AND = 297, /* SEMI_SEMI_AND */ + LESS_LESS_MINUS = 298, /* LESS_LESS_MINUS */ + AND_GREATER = 299, /* AND_GREATER */ + AND_GREATER_GREATER = 300, /* AND_GREATER_GREATER */ + LESS_GREATER = 301, /* LESS_GREATER */ + GREATER_BAR = 302, /* GREATER_BAR */ + BAR_AND = 303, /* BAR_AND */ + yacc_EOF = 304 /* yacc_EOF */ + }; + typedef enum yytokentype yytoken_kind_t; +#endif +/* Token kinds. */ +#define YYEOF 0 +#define YYerror 256 +#define YYUNDEF 257 +#define IF 258 +#define THEN 259 +#define ELSE 260 +#define ELIF 261 +#define FI 262 +#define CASE 263 +#define ESAC 264 +#define FOR 265 +#define SELECT 266 +#define WHILE 267 +#define UNTIL 268 +#define DO 269 +#define DONE 270 +#define FUNCTION 271 +#define COPROC 272 +#define COND_START 273 +#define COND_END 274 +#define COND_ERROR 275 +#define IN 276 +#define BANG 277 +#define TIME 278 +#define TIMEOPT 279 +#define TIMEIGN 280 +#define WORD 281 +#define ASSIGNMENT_WORD 282 +#define REDIR_WORD 283 +#define NUMBER 284 +#define ARITH_CMD 285 +#define ARITH_FOR_EXPRS 286 +#define COND_CMD 287 +#define AND_AND 288 +#define OR_OR 289 +#define GREATER_GREATER 290 +#define LESS_LESS 291 +#define LESS_AND 292 +#define LESS_LESS_LESS 293 +#define GREATER_AND 294 +#define SEMI_SEMI 295 +#define SEMI_AND 296 +#define SEMI_SEMI_AND 297 +#define LESS_LESS_MINUS 298 +#define AND_GREATER 299 +#define AND_GREATER_GREATER 300 +#define LESS_GREATER 301 +#define GREATER_BAR 302 +#define BAR_AND 303 +#define yacc_EOF 304 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +union YYSTYPE +{ +#line 328 "/Users/chet/src/bash/src/parse.y" + + 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; + +#line 174 "y.tab.h" + +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_Y_TAB_H_INCLUDED */ diff --git a/bash-5.1/parser.h b/bash-5.1/parser.h new file mode 100644 index 0000000..59bddac --- /dev/null +++ b/bash-5.1/parser.h @@ -0,0 +1,100 @@ +/* parser.h -- Everything you wanted to know about the parser, but were + afraid to ask. */ + +/* Copyright (C) 1995-2019 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_PARSER_H_) +# define _PARSER_H_ + +# include "command.h" +# include "input.h" + +/* Possible states for the parser that require it to do special things. */ +#define PST_CASEPAT 0x000001 /* in a case pattern list */ +#define PST_ALEXPNEXT 0x000002 /* expand next word for aliases */ +#define PST_ALLOWOPNBRC 0x000004 /* allow open brace for function def */ +#define PST_NEEDCLOSBRC 0x000008 /* need close brace */ +#define PST_DBLPAREN 0x000010 /* double-paren parsing */ +#define PST_SUBSHELL 0x000020 /* ( ... ) subshell */ +#define PST_CMDSUBST 0x000040 /* $( ... ) command substitution */ +#define PST_CASESTMT 0x000080 /* parsing a case statement */ +#define PST_CONDCMD 0x000100 /* parsing a [[...]] command */ +#define PST_CONDEXPR 0x000200 /* parsing the guts of [[...]] */ +#define PST_ARITHFOR 0x000400 /* parsing an arithmetic for command - unused */ +#define PST_ALEXPAND 0x000800 /* OK to expand aliases - unused */ +#define PST_EXTPAT 0x001000 /* parsing an extended shell pattern */ +#define PST_COMPASSIGN 0x002000 /* parsing x=(...) compound assignment */ +#define PST_ASSIGNOK 0x004000 /* assignment statement ok in this context */ +#define PST_EOFTOKEN 0x008000 /* yylex checks against shell_eof_token */ +#define PST_REGEXP 0x010000 /* parsing an ERE/BRE as a single word */ +#define PST_HEREDOC 0x020000 /* reading body of here-document */ +#define PST_REPARSE 0x040000 /* re-parsing in parse_string_to_word_list */ +#define PST_REDIRLIST 0x080000 /* parsing a list of redirections preceding a simple command name */ +#define PST_COMMENT 0x100000 /* parsing a shell comment; used by aliases */ +#define PST_ENDALIAS 0x200000 /* just finished expanding and consuming an alias */ + +/* Definition of the delimiter stack. Needed by parse.y and bashhist.c. */ +struct dstack { +/* DELIMITERS is a stack of the nested delimiters that we have + encountered so far. */ + char *delimiters; + +/* Offset into the stack of delimiters. */ + int delimiter_depth; + +/* How many slots are allocated to DELIMITERS. */ + int delimiter_space; +}; + +/* States we can be in while scanning a ${...} expansion. Shared between + parse.y and subst.c */ +#define DOLBRACE_PARAM 0x01 +#define DOLBRACE_OP 0x02 +#define DOLBRACE_WORD 0x04 + +#define DOLBRACE_QUOTE 0x40 /* single quote is special in double quotes */ +#define DOLBRACE_QUOTE2 0x80 /* single quote is semi-special in double quotes */ + +/* variable declarations from parse.y */ +extern struct dstack dstack; + +extern char *primary_prompt; +extern char *secondary_prompt; + +extern char *current_prompt_string; + +extern char *ps1_prompt; +extern char *ps2_prompt; +extern char *ps0_prompt; + +extern int expand_aliases; +extern int current_command_line_count; +extern int saved_command_line_count; +extern int shell_eof_token; +extern int current_token; +extern int parser_state; +extern int need_here_doc; + +extern int ignoreeof; +extern int eof_encountered; +extern int eof_encountered_limit; + +extern int line_number, line_number_base; + +#endif /* _PARSER_H_ */ diff --git a/bash-5.1/patchlevel.h b/bash-5.1/patchlevel.h new file mode 100644 index 0000000..e1429c2 --- /dev/null +++ b/bash-5.1/patchlevel.h @@ -0,0 +1,30 @@ +/* patchlevel.h -- current bash patch level */ + +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_PATCHLEVEL_H_) +#define _PATCHLEVEL_H_ + +/* It's important that there be no other strings in this file that match the + regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh + looks for to find the patch level (for the sccs version string). */ + +#define PATCHLEVEL 4 + +#endif /* _PATCHLEVEL_H_ */ diff --git a/bash-5.1/pathexp.c b/bash-5.1/pathexp.c new file mode 100644 index 0000000..6e7ef28 --- /dev/null +++ b/bash-5.1/pathexp.c @@ -0,0 +1,690 @@ +/* pathexp.c -- The shell interface to the globbing library. */ + +/* Copyright (C) 1995-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" + +#include "shell.h" +#include "pathexp.h" +#include "flags.h" + +#include "shmbutil.h" +#include "bashintl.h" + +#include + +static int glob_name_is_acceptable PARAMS((const char *)); +static void ignore_globbed_names PARAMS((char **, sh_ignore_func_t *)); +static char *split_ignorespec PARAMS((char *, int *)); + +#if defined (USE_POSIX_GLOB_LIBRARY) +# include +typedef int posix_glob_errfunc_t PARAMS((const char *, int)); +#else +# include +#endif + +/* Control whether * matches .files in globbing. */ +int glob_dot_filenames; + +/* Control whether the extended globbing features are enabled. */ +int extended_glob = EXTGLOB_DEFAULT; + +/* Control enabling special handling of `**' */ +int glob_star = 0; + +/* Return nonzero if STRING has any unquoted special globbing chars in it. + This is supposed to be called when pathname expansion is performed, so + it implements the rules in Posix 2.13.3, specifically that an unquoted + slash cannot appear in a bracket expression. */ +int +unquoted_glob_pattern_p (string) + register char *string; +{ + register int c; + char *send; + int open, bsquote; + + DECLARE_MBSTATE; + + open = bsquote = 0; + send = string + strlen (string); + + while (c = *string++) + { + switch (c) + { + case '?': + case '*': + return (1); + + case '[': + open++; + continue; + + case ']': + if (open) /* XXX - if --open == 0? */ + return (1); + continue; + + case '/': + if (open) + open = 0; + + case '+': + case '@': + case '!': + if (*string == '(') /*)*/ + return (1); + continue; + + /* A pattern can't end with a backslash, but a backslash in the pattern + can be special to the matching engine, so we note it in case we + need it later. */ + case '\\': + if (*string != '\0' && *string != '/') + { + bsquote = 1; + string++; + continue; + } + else if (open && *string == '/') + { + string++; /* quoted slashes in bracket expressions are ok */ + continue; + } + else if (*string == 0) + return (0); + + case CTLESC: + if (*string++ == '\0') + return (0); + } + + /* Advance one fewer byte than an entire multibyte character to + account for the auto-increment in the loop above. */ +#ifdef HANDLE_MULTIBYTE + string--; + ADVANCE_CHAR_P (string, send - string); + string++; +#else + ADVANCE_CHAR_P (string, send - string); +#endif + } + +#if 0 + return (bsquote ? 2 : 0); +#else + return (0); +#endif +} + +/* Return 1 if C is a character that is `special' in a POSIX ERE and needs to + be quoted to match itself. */ +static inline int +ere_char (c) + int c; +{ + switch (c) + { + case '.': + case '[': + case '\\': + case '(': + case ')': + case '*': + case '+': + case '?': + case '{': + case '|': + case '^': + case '$': + return 1; + default: + return 0; + } + return (0); +} + +int +glob_char_p (s) + const char *s; +{ + switch (*s) + { + case '*': + case '[': + case ']': + case '?': + case '\\': + return 1; + case '+': + case '@': + case '!': + if (s[1] == '(') /*(*/ + return 1; + break; + } + return 0; +} + +/* PATHNAME can contain characters prefixed by CTLESC; this indicates + that the character is to be quoted. We quote it here in the style + that the glob library recognizes. If flags includes QGLOB_CVTNULL, + we change quoted null strings (pathname[0] == CTLNUL) into empty + strings (pathname[0] == 0). If this is called after quote removal + is performed, (flags & QGLOB_CVTNULL) should be 0; if called when quote + removal has not been done (for example, before attempting to match a + pattern while executing a case statement), flags should include + QGLOB_CVTNULL. If flags includes QGLOB_CTLESC, we need to remove CTLESC + quoting CTLESC or CTLNUL (as if dequote_string were called). If flags + includes QGLOB_FILENAME, appropriate quoting to match a filename should be + performed. QGLOB_REGEXP means we're quoting for a Posix ERE (for + [[ string =~ pat ]]) and that requires some special handling. */ +char * +quote_string_for_globbing (pathname, qflags) + const char *pathname; + int qflags; +{ + char *temp; + register int i, j; + int cclass, collsym, equiv, c, last_was_backslash; + int savei, savej; + + temp = (char *)xmalloc (2 * strlen (pathname) + 1); + + if ((qflags & QGLOB_CVTNULL) && QUOTED_NULL (pathname)) + { + temp[0] = '\0'; + return temp; + } + + cclass = collsym = equiv = last_was_backslash = 0; + for (i = j = 0; pathname[i]; i++) + { + /* Fix for CTLESC at the end of the string? */ + if (pathname[i] == CTLESC && pathname[i+1] == '\0') + { + temp[j++] = pathname[i++]; + break; + } + /* If we are parsing regexp, turn CTLESC CTLESC into CTLESC. It's not an + ERE special character, so we should just be able to pass it through. */ + else if ((qflags & (QGLOB_REGEXP|QGLOB_CTLESC)) && pathname[i] == CTLESC && (pathname[i+1] == CTLESC || pathname[i+1] == CTLNUL)) + { + i++; + temp[j++] = pathname[i]; + continue; + } + else if (pathname[i] == CTLESC) + { +convert_to_backslash: + if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/') + continue; + /* What to do if preceding char is backslash? */ + if (pathname[i+1] != CTLESC && (qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0) + continue; + temp[j++] = '\\'; + i++; + if (pathname[i] == '\0') + break; + } + else if ((qflags & QGLOB_REGEXP) && (i == 0 || pathname[i-1] != CTLESC) && pathname[i] == '[') /*]*/ + { + temp[j++] = pathname[i++]; /* open bracket */ + savej = j; + savei = i; + c = pathname[i++]; /* c == char after open bracket */ + if (c == '^') /* ignore pattern negation */ + { + temp[j++] = c; + c = pathname[i++]; + } + if (c == ']') /* ignore right bracket if first char */ + { + temp[j++] = c; + c = pathname[i++]; + } + do + { + if (c == 0) + goto endpat; + else if (c == CTLESC) + { + /* skip c, check for EOS, let assignment at end of loop */ + /* pathname[i] == backslash-escaped character */ + if (pathname[i] == 0) + goto endpat; + temp[j++] = pathname[i++]; + } + else if (c == '[' && pathname[i] == ':') + { + temp[j++] = c; + temp[j++] = pathname[i++]; + cclass = 1; + } + else if (cclass && c == ':' && pathname[i] == ']') + { + temp[j++] = c; + temp[j++] = pathname[i++]; + cclass = 0; + } + else if (c == '[' && pathname[i] == '=') + { + temp[j++] = c; + temp[j++] = pathname[i++]; + if (pathname[i] == ']') + temp[j++] = pathname[i++]; /* right brack can be in equiv */ + equiv = 1; + } + else if (equiv && c == '=' && pathname[i] == ']') + { + temp[j++] = c; + temp[j++] = pathname[i++]; + equiv = 0; + } + else if (c == '[' && pathname[i] == '.') + { + temp[j++] = c; + temp[j++] = pathname[i++]; + if (pathname[i] == ']') + temp[j++] = pathname[i++]; /* right brack can be in collsym */ + collsym = 1; + } + else if (collsym && c == '.' && pathname[i] == ']') + { + temp[j++] = c; + temp[j++] = pathname[i++]; + collsym = 0; + } + else + temp[j++] = c; + } + while (((c = pathname[i++]) != ']') && c != 0); + + /* If we don't find the closing bracket before we hit the end of + the string, rescan string without treating it as a bracket + expression (has implications for backslash and special ERE + chars) */ + if (c == 0) + { + i = savei - 1; /* -1 for autoincrement above */ + j = savej; + continue; + } + + temp[j++] = c; /* closing right bracket */ + i--; /* increment will happen above in loop */ + continue; /* skip double assignment below */ + } + else if (pathname[i] == '\\' && (qflags & QGLOB_REGEXP) == 0) + { + /* XXX - if not quoting regexp, use backslash as quote char. Should + We just pass it through without treating it as special? That is + what ksh93 seems to do. */ + + /* If we want to pass through backslash unaltered, comment out these + lines. */ + temp[j++] = '\\'; + + i++; + if (pathname[i] == '\0') + break; + /* If we are turning CTLESC CTLESC into CTLESC, we need to do that + even when the first CTLESC is preceded by a backslash. */ + if ((qflags & QGLOB_CTLESC) && pathname[i] == CTLESC && (pathname[i+1] == CTLESC || pathname[i+1] == CTLNUL)) + i++; /* skip over the CTLESC */ + else if ((qflags & QGLOB_CTLESC) && pathname[i] == CTLESC) + /* A little more general: if there is an unquoted backslash in the + pattern and we are handling quoted characters in the pattern, + convert the CTLESC to backslash and add the next character on + the theory that the backslash will quote the next character + but it would be inconsistent not to replace the CTLESC with + another backslash here. We can't tell at this point whether the + CTLESC comes from a backslash or other form of quoting in the + original pattern. */ + goto convert_to_backslash; + } + else if (pathname[i] == '\\' && (qflags & QGLOB_REGEXP)) + last_was_backslash = 1; + temp[j++] = pathname[i]; + } +endpat: + temp[j] = '\0'; + + return (temp); +} + +char * +quote_globbing_chars (string) + const char *string; +{ + size_t slen; + char *temp, *t; + const char *s, *send; + DECLARE_MBSTATE; + + slen = strlen (string); + send = string + slen; + + temp = (char *)xmalloc (slen * 2 + 1); + for (t = temp, s = string; *s; ) + { + if (glob_char_p (s)) + *t++ = '\\'; + + /* Copy a single (possibly multibyte) character from s to t, + incrementing both. */ + COPY_CHAR_P (t, s, send); + } + *t = '\0'; + return temp; +} + +/* Call the glob library to do globbing on PATHNAME. */ +char ** +shell_glob_filename (pathname, qflags) + const char *pathname; + int qflags; +{ +#if defined (USE_POSIX_GLOB_LIBRARY) + register int i; + char *temp, **results; + glob_t filenames; + int glob_flags; + + temp = quote_string_for_globbing (pathname, QGLOB_FILENAME|qflags); + + filenames.gl_offs = 0; + +# if defined (GLOB_PERIOD) + glob_flags = glob_dot_filenames ? GLOB_PERIOD : 0; +# else + glob_flags = 0; +# endif /* !GLOB_PERIOD */ + + glob_flags |= (GLOB_ERR | GLOB_DOOFFS); + + i = glob (temp, glob_flags, (posix_glob_errfunc_t *)NULL, &filenames); + + free (temp); + + if (i == GLOB_NOSPACE || i == GLOB_ABORTED) + return ((char **)NULL); + else if (i == GLOB_NOMATCH) + filenames.gl_pathv = (char **)NULL; + else if (i != 0) /* other error codes not in POSIX.2 */ + filenames.gl_pathv = (char **)NULL; + + results = filenames.gl_pathv; + + if (results && ((GLOB_FAILED (results)) == 0)) + { + if (should_ignore_glob_matches ()) + ignore_glob_matches (results); + if (results && results[0]) + strvec_sort (results, 1); /* posix sort */ + else + { + FREE (results); + results = (char **)NULL; + } + } + + return (results); + +#else /* !USE_POSIX_GLOB_LIBRARY */ + + char *temp, **results; + int gflags, quoted_pattern; + + noglob_dot_filenames = glob_dot_filenames == 0; + + temp = quote_string_for_globbing (pathname, QGLOB_FILENAME|qflags); + gflags = glob_star ? GX_GLOBSTAR : 0; + results = glob_filename (temp, gflags); + free (temp); + + if (results && ((GLOB_FAILED (results)) == 0)) + { + if (should_ignore_glob_matches ()) + ignore_glob_matches (results); + if (results && results[0]) + strvec_sort (results, 1); /* posix sort */ + else + { + FREE (results); + results = (char **)&glob_error_return; + } + } + + return (results); +#endif /* !USE_POSIX_GLOB_LIBRARY */ +} + +/* Stuff for GLOBIGNORE. */ + +static struct ignorevar globignore = +{ + "GLOBIGNORE", + (struct ign *)0, + 0, + (char *)0, + (sh_iv_item_func_t *)0, +}; + +/* Set up to ignore some glob matches because the value of GLOBIGNORE + has changed. If GLOBIGNORE is being unset, we also need to disable + the globbing of filenames beginning with a `.'. */ +void +setup_glob_ignore (name) + char *name; +{ + char *v; + + v = get_string_value (name); + setup_ignore_patterns (&globignore); + + if (globignore.num_ignores) + glob_dot_filenames = 1; + else if (v == 0) + glob_dot_filenames = 0; +} + +int +should_ignore_glob_matches () +{ + return globignore.num_ignores; +} + +/* Return 0 if NAME matches a pattern in the globignore.ignores list. */ +static int +glob_name_is_acceptable (name) + const char *name; +{ + struct ign *p; + char *n; + int flags; + + /* . and .. are never matched. We extend this to the terminal component of a + pathname. */ + n = strrchr (name, '/'); + if (n == 0 || n[1] == 0) + n = (char *)name; + else + n++; + + if (n[0] == '.' && (n[1] == '\0' || (n[1] == '.' && n[2] == '\0'))) + return (0); + + flags = FNM_PATHNAME | FNMATCH_EXTFLAG | FNMATCH_NOCASEGLOB; + for (p = globignore.ignores; p->val; p++) + { + if (strmatch (p->val, (char *)name, flags) != FNM_NOMATCH) + return (0); + } + return (1); +} + +/* Internal function to test whether filenames in NAMES should be + ignored. NAME_FUNC is a pointer to a function to call with each + name. It returns non-zero if the name is acceptable to the particular + ignore function which called _ignore_names; zero if the name should + be removed from NAMES. */ + +static void +ignore_globbed_names (names, name_func) + char **names; + sh_ignore_func_t *name_func; +{ + char **newnames; + int n, i; + + for (i = 0; names[i]; i++) + ; + newnames = strvec_create (i + 1); + + for (n = i = 0; names[i]; i++) + { + if ((*name_func) (names[i])) + newnames[n++] = names[i]; + else + free (names[i]); + } + + newnames[n] = (char *)NULL; + + if (n == 0) + { + names[0] = (char *)NULL; + free (newnames); + return; + } + + /* Copy the acceptable names from NEWNAMES back to NAMES and set the + new array end. */ + for (n = 0; newnames[n]; n++) + names[n] = newnames[n]; + names[n] = (char *)NULL; + free (newnames); +} + +void +ignore_glob_matches (names) + char **names; +{ + if (globignore.num_ignores == 0) + return; + + ignore_globbed_names (names, glob_name_is_acceptable); +} + +static char * +split_ignorespec (s, ip) + char *s; + int *ip; +{ + char *t; + int n, i; + + if (s == 0) + return 0; + + i = *ip; + if (s[i] == 0) + return 0; + + n = skip_to_delim (s, i, ":", SD_NOJMP|SD_EXTGLOB|SD_GLOB); + t = substring (s, i, n); + + if (s[n] == ':') + n++; + *ip = n; + return t; +} + +void +setup_ignore_patterns (ivp) + struct ignorevar *ivp; +{ + int numitems, maxitems, ptr; + char *colon_bit, *this_ignoreval; + struct ign *p; + + this_ignoreval = get_string_value (ivp->varname); + + /* If nothing has changed then just exit now. */ + if ((this_ignoreval && ivp->last_ignoreval && STREQ (this_ignoreval, ivp->last_ignoreval)) || + (!this_ignoreval && !ivp->last_ignoreval)) + return; + + /* Oops. The ignore variable has changed. Re-parse it. */ + ivp->num_ignores = 0; + + if (ivp->ignores) + { + for (p = ivp->ignores; p->val; p++) + free(p->val); + free (ivp->ignores); + ivp->ignores = (struct ign *)NULL; + } + + if (ivp->last_ignoreval) + { + free (ivp->last_ignoreval); + ivp->last_ignoreval = (char *)NULL; + } + + if (this_ignoreval == 0 || *this_ignoreval == '\0') + return; + + ivp->last_ignoreval = savestring (this_ignoreval); + + numitems = maxitems = ptr = 0; + +#if 0 + while (colon_bit = extract_colon_unit (this_ignoreval, &ptr)) +#else + while (colon_bit = split_ignorespec (this_ignoreval, &ptr)) +#endif + { + if (numitems + 1 >= maxitems) + { + maxitems += 10; + ivp->ignores = (struct ign *)xrealloc (ivp->ignores, maxitems * sizeof (struct ign)); + } + ivp->ignores[numitems].val = colon_bit; + ivp->ignores[numitems].len = strlen (colon_bit); + ivp->ignores[numitems].flags = 0; + if (ivp->item_func) + (*ivp->item_func) (&ivp->ignores[numitems]); + numitems++; + } + ivp->ignores[numitems].val = (char *)NULL; + ivp->num_ignores = numitems; +} diff --git a/bash-5.1/pathexp.h b/bash-5.1/pathexp.h new file mode 100644 index 0000000..7ed0d2a --- /dev/null +++ b/bash-5.1/pathexp.h @@ -0,0 +1,107 @@ +/* pathexp.h -- The shell interface to the globbing library. */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_PATHEXP_H_) +#define _PATHEXP_H_ + +#if defined (USE_POSIX_GLOB_LIBRARY) +# define GLOB_FAILED(glist) !(glist) +#else /* !USE_POSIX_GLOB_LIBRARY */ +# define GLOB_FAILED(glist) (glist) == (char **)&glob_error_return +extern int noglob_dot_filenames; +extern char *glob_error_return; +#endif /* !USE_POSIX_GLOB_LIBRARY */ + +/* Flag values for quote_string_for_globbing */ +#define QGLOB_CVTNULL 0x01 /* convert QUOTED_NULL strings to '\0' */ +#define QGLOB_FILENAME 0x02 /* do correct quoting for matching filenames */ +#define QGLOB_REGEXP 0x04 /* quote an ERE for regcomp/regexec */ +#define QGLOB_CTLESC 0x08 /* turn CTLESC CTLESC into CTLESC for BREs */ +#define QGLOB_DEQUOTE 0x10 /* like dequote_string but quote glob chars */ + +#if defined (EXTENDED_GLOB) +/* Flags to OR with other flag args to strmatch() to enabled the extended + pattern matching. */ +# define FNMATCH_EXTFLAG (extended_glob ? FNM_EXTMATCH : 0) +#else +# define FNMATCH_EXTFLAG 0 +#endif /* !EXTENDED_GLOB */ + +#define FNMATCH_IGNCASE (match_ignore_case ? FNM_CASEFOLD : 0) +#define FNMATCH_NOCASEGLOB (glob_ignore_case ? FNM_CASEFOLD : 0) + +extern int glob_dot_filenames; +extern int extended_glob; +extern int glob_star; +extern int match_ignore_case; /* doesn't really belong here */ + +extern int unquoted_glob_pattern_p PARAMS((char *)); + +/* PATHNAME can contain characters prefixed by CTLESC; this indicates + that the character is to be quoted. We quote it here in the style + that the glob library recognizes. If flags includes QGLOB_CVTNULL, + we change quoted null strings (pathname[0] == CTLNUL) into empty + strings (pathname[0] == 0). If this is called after quote removal + is performed, (flags & QGLOB_CVTNULL) should be 0; if called when quote + removal has not been done (for example, before attempting to match a + pattern while executing a case statement), flags should include + QGLOB_CVTNULL. If flags includes QGLOB_FILENAME, appropriate quoting + to match a filename should be performed. */ +extern char *quote_string_for_globbing PARAMS((const char *, int)); + +extern int glob_char_p PARAMS((const char *)); +extern char *quote_globbing_chars PARAMS((const char *)); + +/* Call the glob library to do globbing on PATHNAME. FLAGS is additional + flags to pass to QUOTE_STRING_FOR_GLOBBING, mostly having to do with + whether or not we've already performed quote removal. */ +extern char **shell_glob_filename PARAMS((const char *, int)); + +/* Filename completion ignore. Used to implement the "fignore" facility of + tcsh, GLOBIGNORE (like ksh-93 FIGNORE), and EXECIGNORE. + + It is passed a NULL-terminated array of (char *)'s that must be + free()'d if they are deleted. The first element (names[0]) is the + least-common-denominator string of the matching patterns (i.e. + u produces names[0] = "und", names[1] = "under.c", names[2] = + "undun.c", name[3] = NULL). */ + +struct ign { + char *val; + int len, flags; +}; + +typedef int sh_iv_item_func_t PARAMS((struct ign *)); + +struct ignorevar { + char *varname; /* FIGNORE, GLOBIGNORE, or EXECIGNORE */ + struct ign *ignores; /* Store the ignore strings here */ + int num_ignores; /* How many are there? */ + char *last_ignoreval; /* Last value of variable - cached for speed */ + sh_iv_item_func_t *item_func; /* Called when each item is parsed from $`varname' */ +}; + +extern void setup_ignore_patterns PARAMS((struct ignorevar *)); + +extern void setup_glob_ignore PARAMS((char *)); +extern int should_ignore_glob_matches PARAMS((void)); +extern void ignore_glob_matches PARAMS((char **)); + +#endif diff --git a/bash-5.1/pathnames.h.in b/bash-5.1/pathnames.h.in new file mode 100644 index 0000000..38d0939 --- /dev/null +++ b/bash-5.1/pathnames.h.in @@ -0,0 +1,33 @@ +/* pathnames.h -- absolute filenames that bash wants for various defaults. */ + +/* Copyright (C) 1987-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_PATHNAMES_H_) +#define _PATHNAMES_H_ + +/* The default file for hostname completion. */ +#define DEFAULT_HOSTS_FILE "/etc/hosts" + +/* The default login shell startup file. */ +#define SYS_PROFILE "/etc/profile" + +/* The default location of the bash debugger initialization/startup file. */ +#define DEBUGGER_START_FILE "@DEBUGGER_START_FILE@" + +#endif /* _PATHNAMES_H */ diff --git a/bash-5.1/pcomplete.c b/bash-5.1/pcomplete.c new file mode 100644 index 0000000..fe1a032 --- /dev/null +++ b/bash-5.1/pcomplete.c @@ -0,0 +1,1754 @@ +/* pcomplete.c - functions to generate lists of matches for programmable completion. */ + +/* Copyright (C) 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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 "posixtime.h" + +#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 "shmbutil.h" + +#include "builtins.h" +#include "builtins/common.h" +#include "builtins/builtext.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 PARAMS((char *, char *)); +#endif + +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 PARAMS((ITEMLIST *, int)); + +static int it_init_aliases PARAMS((ITEMLIST *)); +static int it_init_arrayvars PARAMS((ITEMLIST *)); +static int it_init_bindings PARAMS((ITEMLIST *)); +static int it_init_builtins PARAMS((ITEMLIST *)); +static int it_init_disabled PARAMS((ITEMLIST *)); +static int it_init_enabled PARAMS((ITEMLIST *)); +static int it_init_exported PARAMS((ITEMLIST *)); +static int it_init_functions PARAMS((ITEMLIST *)); +static int it_init_helptopics PARAMS((ITEMLIST *)); +static int it_init_hostnames PARAMS((ITEMLIST *)); +static int it_init_jobs PARAMS((ITEMLIST *)); +static int it_init_running PARAMS((ITEMLIST *)); +static int it_init_stopped PARAMS((ITEMLIST *)); +static int it_init_keywords PARAMS((ITEMLIST *)); +static int it_init_signals PARAMS((ITEMLIST *)); +static int it_init_variables PARAMS((ITEMLIST *)); +static int it_init_setopts PARAMS((ITEMLIST *)); +static int it_init_shopts PARAMS((ITEMLIST *)); + +static int shouldexp_filterpat PARAMS((char *)); +static char *preproc_filterpat PARAMS((char *, const char *)); + +static void init_itemlist_from_varlist PARAMS((ITEMLIST *, SVFUNC *)); + +static STRINGLIST *gen_matches_from_itemlist PARAMS((ITEMLIST *, const char *)); +static STRINGLIST *gen_action_completions PARAMS((COMPSPEC *, const char *)); +static STRINGLIST *gen_globpat_matches PARAMS((COMPSPEC *, const char *)); +static STRINGLIST *gen_wordlist_matches PARAMS((COMPSPEC *, const char *)); +static STRINGLIST *gen_shell_function_matches PARAMS((COMPSPEC *, const char *, + const char *, + char *, int, WORD_LIST *, + int, int, int *)); +static STRINGLIST *gen_command_matches PARAMS((COMPSPEC *, const char *, + const char *, + char *, int, WORD_LIST *, + int, int)); + +static STRINGLIST *gen_progcomp_completions PARAMS((const char *, const char *, + const char *, + int, int, int *, int *, + COMPSPEC **)); + +static char *pcomp_filename_completion_function PARAMS((const char *, int)); + +#if defined (ARRAY_VARS) +static SHELL_VAR *bind_comp_words PARAMS((WORD_LIST *)); +#endif +static void bind_compfunc_variables PARAMS((char *, int, WORD_LIST *, int, int)); +static void unbind_compfunc_variables PARAMS((int)); +static WORD_LIST *build_arg_list PARAMS((char *, const char *, const char *, WORD_LIST *, int)); +static WORD_LIST *command_line_to_word_list PARAMS((char *, int, int, int *, int *)); + +#ifdef DEBUG +static int progcomp_debug = 0; +#endif + +int prog_completion_enabled = 1; + +#ifdef ALIAS +int progcomp_alias = 0; /* unavailable to user code for now */ +#endif + +/* 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_helptopics = { 0, it_init_helptopics, (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; +const char *pcomp_curtxt; + +char *pcomp_line; +int pcomp_ind; + +#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; + const 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; + const char *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; + +#if defined (EXTENDED_GLOB) + not = (npat[0] == '!' && (extended_glob == 0 || npat[1] != '(')); /*)*/ +#else + not = (npat[0] == '!'); +#endif + 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 | FNMATCH_IGNCASE); + 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 + free (alias_list); + 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; +} + +/* Like it_init_builtins, but includes everything the help builtin looks at, + not just builtins with an active implementing function. */ +static int +it_init_helptopics (itp) + ITEMLIST *itp; +{ + STRINGLIST *sl; + register int i, n; + + sl = strlist_create (num_shell_builtins); + for (i = n = 0; i < num_shell_builtins; i++) + 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_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 */ + + ws = JNONE; + 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 iscompgen, iscompleting; + + if (state == 0) + { + FREE (dfn); + /* remove backslashes quoting special characters in filenames. */ + /* There are roughly three paths we can follow to get here: + 1. complete -f + 2. compgen -f "$word" from a completion function + 3. compgen -f "$word" from the command line + They all need to be handled. + + In the first two cases, readline will run the filename dequoting + function in rl_filename_completion_function if it found a filename + quoting character in the word to be completed + (rl_completion_found_quote). We run the dequoting function here + if we're running compgen, we're not completing, and the + rl_filename_completion_function won't dequote the filename + (rl_completion_found_quote == 0). */ + iscompgen = this_shell_builtin == compgen_builtin; + iscompleting = RL_ISSTATE (RL_STATE_COMPLETING); + if (iscompgen && iscompleting == 0 && rl_completion_found_quote == 0 + && rl_filename_dequoting_function) + { + /* 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); + } + /* Intended to solve a mismatched assumption by bash-completion. If + the text to be completed is empty, but bash-completion turns it into + a quoted string ('') assuming that this code will dequote it before + calling readline, do the dequoting. */ + else if (iscompgen && iscompleting && + pcomp_curtxt && *pcomp_curtxt == 0 && + text && (*text == '\'' || *text == '"') && text[1] == text[0] && text[2] == 0 && + rl_filename_dequoting_function) + dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); + /* Another mismatched assumption by bash-completion. If compgen is being + run as part of bash-completion, and the argument to compgen is not + the same as the word originally passed to the programmable completion + code, dequote the argument if it has quote characters. It's an + attempt to detect when bash-completion is quoting its filename + argument before calling compgen. */ + /* We could check whether gen_shell_function_matches is in the call + stack by checking whether the gen-shell-function-matches tag is in + the unwind-protect stack, but there's no function to do that yet. + We could simply check whether we're executing in a function by + checking variable_context, and may end up doing that. */ + else if (iscompgen && iscompleting && rl_filename_dequoting_function && + pcomp_curtxt && text && + STREQ (pcomp_curtxt, text) == 0 && + variable_context && + sh_contains_quotes (text)) /* guess */ + 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; + int t; + + 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_HELPTOPIC, &it_helptopics, 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) + { + t = rl_filename_completion_desired; + rl_completion_mark_symlink_dirs = 1; /* override user preference */ + cmatches = bash_directory_completion_matches (text); + /* If we did not want filename completion before this, and there are + no matches, turn off rl_filename_completion_desired so whatever + matches we get are not treated as filenames (it gets turned on by + rl_filename_completion_function unconditionally). */ + if (t == 0 && cmatches == 0 && rl_filename_completion_desired == 1) + rl_filename_completion_desired = 0; + 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. split_at_delims also handles embedded + quoted strings and preserves the quotes for the expand_words_shellexp + function call that follows. */ + /* XXX - this is where this function spends most of its time */ + l = split_at_delims (cs->words, strlen (cs->words), (char *)NULL, -1, 0, (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_noref ("COMP_WORDS"); + if (v == 0) + v = make_new_array_variable ("COMP_WORDS"); + if (nameref_p (v)) + VUNSETATTR (v, att_nameref); +#if 0 + if (readonly_p (v)) + VUNSETATTR (v, att_readonly); +#endif + 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; + size_t llen; + int c; + + /* 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); + + /* Post bash-4.2: COMP_POINT is characters instead of bytes. */ + c = line[ind]; + line[ind] = '\0'; + llen = MB_STRLEN (line); + line[ind] = c; + value = inttostr (llen, ibuf, sizeof(ibuf)); + v = bind_int_variable ("COMP_POINT", value, 0); + if (v && exported) + VSETATTR(v, att_exported); + + value = inttostr (rl_completion_type, ibuf, sizeof (ibuf)); + v = bind_int_variable ("COMP_TYPE", value, 0); + if (v && exported) + VSETATTR(v, att_exported); + + value = inttostr (rl_completion_invoking_key, ibuf, sizeof (ibuf)); + v = bind_int_variable ("COMP_KEY", value, 0); + 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, 0); +#endif + } + else + array_needs_making = 1; +} + +static void +unbind_compfunc_variables (exported) + int exported; +{ + unbind_variable_noref ("COMP_LINE"); + unbind_variable_noref ("COMP_POINT"); + unbind_variable_noref ("COMP_TYPE"); + unbind_variable_noref ("COMP_KEY"); +#ifdef ARRAY_VARS + unbind_variable_noref ("COMP_WORDS"); + unbind_variable_noref ("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; they have to + make do with the COMP_LINE and COMP_POINT variables. */ + +static WORD_LIST * +build_arg_list (cmd, cname, text, lwords, ind) + char *cmd; + const char *cname; + 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); /* $0 */ + + w = make_word (cname); /* $1 */ + cl = ret->next = make_word_list (w, (WORD_LIST *)NULL); + + w = make_word (text); + cl->next = make_word_list (w, (WORD_LIST *)NULL); /* $2 */ + 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, cmd, text, line, ind, lwords, nw, cw, foundp) + COMPSPEC *cs; + const char *cmd; + const char *text; + char *line; + int ind; + WORD_LIST *lwords; + int nw, cw; + int *foundp; +{ + char *funcname; + STRINGLIST *sl; + SHELL_VAR *f, *v; + WORD_LIST *cmdlist; + int fval, found; + sh_parser_state_t ps; + sh_parser_state_t * restrict pps; +#if defined (ARRAY_VARS) + ARRAY *a; +#endif + + found = 0; + if (foundp) + *foundp = found; + + 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, cmd, text, lwords, cw); + + pps = &ps; + save_parser_state (pps); + begin_unwind_frame ("gen-shell-function-matches"); + add_unwind_protect (restore_parser_state, (char *)pps); + add_unwind_protect (dispose_words, (char *)cmdlist); + add_unwind_protect (unbind_compfunc_variables, (char *)0); + + fval = execute_shell_function (f, cmdlist); + + discard_unwind_frame ("gen-shell-function-matches"); + restore_parser_state (pps); + + found = fval != EX_NOTFOUND; + if (fval == EX_RETRYFAIL) + found |= PCOMP_RETRYFAIL; + if (foundp) + *foundp = found; + + /* 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 && assoc_p (v) == 0) + v = convert_var_to_array (v); + + VUNSETATTR (v, att_invisible); + + a = array_cell (v); + if (found == 0 || (found & PCOMP_RETRYFAIL) || a == 0 || array_p (v) == 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, 0); + sl->list_len = sl->list_size = array_num_elements (a); + } + + /* XXX - should we unbind COMPREPLY here? */ + unbind_variable_noref ("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 it 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, cmd, text, line, ind, lwords, nw, cw) + COMPSPEC *cs; + const char *cmd; + 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, cmd, 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, 0); + csbuf = tw ? tw->word : (char *)NULL; + if (tw) + 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, SD_NOQUOTEDELIM|SD_COMPLETE, nwp, cwp); + return (ret); +} + +/* Evaluate COMPSPEC *cs and return all matches for WORD. */ + +STRINGLIST * +gen_compspec_completions (cs, cmd, word, start, end, foundp) + COMPSPEC *cs; + const char *cmd; + const char *word; + int start, end; + int *foundp; +{ + STRINGLIST *ret, *tmatches; + char *line; + int llen, nw, cw, found, foundf; + WORD_LIST *lwords; + WORD_DESC *lw; + COMPSPEC *tcs; + + found = 1; + +#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 (pcomp_line, start, end); + llen = end - start; + +#ifdef DEBUG + debug_printf ("command_line_to_word_list (%s, %d, %d, %p, %p)", + line, llen, pcomp_ind - start, &nw, &cw); +#endif + lwords = command_line_to_word_list (line, llen, pcomp_ind - start, &nw, &cw); + /* If we skipped a NULL word at the beginning of the line, add it back */ + if (lwords && lwords->word && cmd[0] == 0 && lwords->word->word[0] != 0) + { + lw = make_bare_word (cmd); + lwords = make_word_list (lw, lwords); + 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) + { + foundf = 0; + tmatches = gen_shell_function_matches (cs, cmd, word, line, pcomp_ind - start, lwords, nw, cw, &foundf); + if (foundf != 0) + found = foundf; + if (tmatches) + { +#ifdef DEBUG + if (progcomp_debug) + { + debug_printf ("gen_shell_function_matches (%p, %s, %s, %p, %d, %d) -->", cs, cmd, 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, cmd, word, line, pcomp_ind - start, lwords, nw, cw); + if (tmatches) + { +#ifdef DEBUG + if (progcomp_debug) + { + debug_printf ("gen_command_matches (%p, %s, %s, %p, %d, %d) -->", cs, cmd, 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 (foundp) + *foundp = found; + + if (found == 0 || (found & PCOMP_RETRYFAIL)) + { + strlist_dispose (ret); + return NULL; + } + + 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; + FREE (ret); + 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; + /* The value here is inverted, since the default is on and the `noquote' + option is supposed to turn it off */ + if (flags & COPT_NOQUOTE) + rl_filename_quoting_desired = 1 - nval; + if (flags & COPT_NOSORT) + rl_sort_completion_matches = 1 - 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; +} + +static STRINGLIST * +gen_progcomp_completions (ocmd, cmd, word, start, end, foundp, retryp, lastcs) + const char *ocmd; + const char *cmd; + const char *word; + int start, end; + int *foundp, *retryp; + COMPSPEC **lastcs; +{ + COMPSPEC *cs, *oldcs; + const char *oldcmd, *oldtxt; + STRINGLIST *ret; + + cs = progcomp_search (ocmd); + + if (cs == 0 || cs == *lastcs) + { +#if 0 + if (foundp) + *foundp = 0; +#endif + return (NULL); + } + + if (*lastcs) + compspec_dispose (*lastcs); + cs->refcount++; /* XXX */ + *lastcs = cs; + + cs = compspec_copy (cs); + + oldcs = pcomp_curcs; + oldcmd = pcomp_curcmd; + oldtxt = pcomp_curtxt; + + pcomp_curcs = cs; + pcomp_curcmd = cmd; + pcomp_curtxt = word; + + ret = gen_compspec_completions (cs, cmd, word, start, end, foundp); + + pcomp_curcs = oldcs; + pcomp_curcmd = oldcmd; + pcomp_curtxt = oldtxt; + + /* We need to conditionally handle setting *retryp here */ + if (retryp) + *retryp = foundp && (*foundp & PCOMP_RETRYFAIL); + + if (foundp) + { + *foundp &= ~PCOMP_RETRYFAIL; + *foundp |= cs->options; + } + + compspec_dispose (cs); + return ret; +} + +/* 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 pcomp_line (usually + rl_line_buffer). */ +char ** +programmable_completions (cmd, word, start, end, foundp) + const char *cmd; + const char *word; + int start, end, *foundp; +{ + COMPSPEC *lastcs; + STRINGLIST *ret; + char **rmatches, *t; + int found, retry, count; + char *ocmd; + int oend; +#if defined (ALIAS) + alias_t *al; +#endif + + lastcs = 0; + found = count = 0; + + pcomp_line = rl_line_buffer; + pcomp_ind = rl_point; + + ocmd = (char *)cmd; + oend = end; + + do + { + retry = 0; + + /* We look at the basename of CMD if the full command does not have + an associated COMPSPEC. */ + ret = gen_progcomp_completions (ocmd, ocmd, word, start, oend, &found, &retry, &lastcs); + if (found == 0) + { + t = strrchr (ocmd, '/'); + if (t && *(++t)) + ret = gen_progcomp_completions (t, ocmd, word, start, oend, &found, &retry, &lastcs); + } + + if (found == 0) + ret = gen_progcomp_completions (DEFAULTCMD, ocmd, word, start, oend, &found, &retry, &lastcs); + +#if defined (ALIAS) + /* Look up any alias for CMD, try to gen completions for it */ + /* Look up the alias, find the value, build a new line replacing CMD + with that value, offsetting PCOMP_IND and END appropriately, reset + PCOMP_LINE to the new line and OCMD with the new command name, then + call gen_progcomp_completions again. We could use alias_expand for + this, but it does more (and less) than we need right now. */ + if (found == 0 && retry == 0 && progcomp_alias && (al = find_alias (ocmd))) + { + char *ncmd, *nline, *ntxt; + int ind, lendiff; + size_t nlen, olen, llen; + + /* We found an alias for OCMD. Take the value and build a new line */ + ntxt = al->value; + nlen = strlen (ntxt); + if (nlen == 0) + break; + olen = strlen (ocmd); + lendiff = nlen - olen; /* can be negative */ + llen = strlen (pcomp_line); + + nline = (char *)xmalloc (llen + lendiff + 1); + if (start > 0) + strncpy (nline, pcomp_line, start); + strncpy (nline + start, ntxt, nlen); + strcpy (nline + start + nlen, pcomp_line + start + olen); + + /* Find the first word of the alias value and use that as OCMD. We + don't check the alias value to see whether it begins with a valid + command name, so this can be fooled. */ + ind = skip_to_delim (ntxt, 0, "()<>;&| \t\n", SD_NOJMP|SD_COMPLETE); + if (ind > 0) + ncmd = substring (ntxt, 0, ind); + else + { + free (nline); + break; /* will free pcomp_line and ocmd later */ + } + + /* Adjust PCOMP_IND and OEND appropriately */ + pcomp_ind += lendiff; + oend += lendiff; + + /* Set up values with new line. WORD stays the same. */ + if (ocmd != cmd) + free (ocmd); + if (pcomp_line != rl_line_buffer) + free (pcomp_line); + + ocmd = ncmd; + pcomp_line = nline; + + /* And go back and start over. */ + retry = 1; + } +#endif /* ALIAS */ + + count++; + + if (count > 32) + { + internal_warning (_("programmable_completion: %s: possible retry loop"), cmd); + break; + } + } + while (retry); + + if (pcomp_line != rl_line_buffer) + free (pcomp_line); + if (ocmd != cmd) + free (ocmd); + + if (ret) + { + rmatches = ret->list; + free (ret); + } + else + rmatches = (char **)NULL; + + if (foundp) + *foundp = found; + + if (lastcs) /* XXX - should be while? */ + compspec_dispose (lastcs); + + /* XXX restore pcomp_line and pcomp_ind? */ + pcomp_line = rl_line_buffer; + pcomp_ind = rl_point; + + return (rmatches); +} + +#endif /* PROGRAMMABLE_COMPLETION */ diff --git a/bash-5.1/pcomplete.h b/bash-5.1/pcomplete.h new file mode 100644 index 0000000..2a68e6a --- /dev/null +++ b/bash-5.1/pcomplete.h @@ -0,0 +1,177 @@ +/* pcomplete.h - structure definitions and other stuff for programmable + completion. */ + +/* Copyright (C) 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_PCOMPLETE_H_) +# define _PCOMPLETE_H_ + +#include "stdc.h" +#include "hashlib.h" + +typedef struct compspec { + int refcount; + unsigned long actions; + unsigned long options; + char *globpat; + char *words; + char *prefix; + char *suffix; + char *funcname; + char *command; + char *lcommand; + char *filterpat; +} COMPSPEC; + +/* Values for COMPSPEC actions. These are things the shell knows how to + build internally. */ +#define CA_ALIAS (1<<0) +#define CA_ARRAYVAR (1<<1) +#define CA_BINDING (1<<2) +#define CA_BUILTIN (1<<3) +#define CA_COMMAND (1<<4) +#define CA_DIRECTORY (1<<5) +#define CA_DISABLED (1<<6) +#define CA_ENABLED (1<<7) +#define CA_EXPORT (1<<8) +#define CA_FILE (1<<9) +#define CA_FUNCTION (1<<10) +#define CA_GROUP (1<<11) +#define CA_HELPTOPIC (1<<12) +#define CA_HOSTNAME (1<<13) +#define CA_JOB (1<<14) +#define CA_KEYWORD (1<<15) +#define CA_RUNNING (1<<16) +#define CA_SERVICE (1<<17) +#define CA_SETOPT (1<<18) +#define CA_SHOPT (1<<19) +#define CA_SIGNAL (1<<20) +#define CA_STOPPED (1<<21) +#define CA_USER (1<<22) +#define CA_VARIABLE (1<<23) + +/* Values for COMPSPEC options field. */ +#define COPT_RESERVED (1<<0) /* reserved for other use */ +#define COPT_DEFAULT (1<<1) +#define COPT_FILENAMES (1<<2) +#define COPT_DIRNAMES (1<<3) +#define COPT_NOQUOTE (1<<4) +#define COPT_NOSPACE (1<<5) +#define COPT_BASHDEFAULT (1<<6) +#define COPT_PLUSDIRS (1<<7) +#define COPT_NOSORT (1<<8) + +#define COPT_LASTUSER COPT_NOSORT + +#define PCOMP_RETRYFAIL (COPT_LASTUSER << 1) +#define PCOMP_NOTFOUND (COPT_LASTUSER << 2) + + +/* List of items is used by the code that implements the programmable + completions. */ +typedef struct _list_of_items { + int flags; + int (*list_getter) PARAMS((struct _list_of_items *)); /* function to call to get the list */ + + STRINGLIST *slist; + + /* These may or may not be used. */ + STRINGLIST *genlist; /* for handing to the completion code one item at a time */ + int genindex; /* index of item last handed to completion code */ + +} ITEMLIST; + +/* Values for ITEMLIST -> flags */ +#define LIST_DYNAMIC 0x001 +#define LIST_DIRTY 0x002 +#define LIST_INITIALIZED 0x004 +#define LIST_MUSTSORT 0x008 +#define LIST_DONTFREE 0x010 +#define LIST_DONTFREEMEMBERS 0x020 + +#define EMPTYCMD "_EmptycmD_" +#define DEFAULTCMD "_DefaultCmD_" +#define INITIALWORD "_InitialWorD_" + +extern HASH_TABLE *prog_completes; + +extern char *pcomp_line; +extern int pcomp_ind; + +extern int prog_completion_enabled; +extern int progcomp_alias; + +/* Not all of these are used yet. */ +extern ITEMLIST it_aliases; +extern ITEMLIST it_arrayvars; +extern ITEMLIST it_bindings; +extern ITEMLIST it_builtins; +extern ITEMLIST it_commands; +extern ITEMLIST it_directories; +extern ITEMLIST it_disabled; +extern ITEMLIST it_enabled; +extern ITEMLIST it_exports; +extern ITEMLIST it_files; +extern ITEMLIST it_functions; +extern ITEMLIST it_groups; +extern ITEMLIST it_helptopics; +extern ITEMLIST it_hostnames; +extern ITEMLIST it_jobs; +extern ITEMLIST it_keywords; +extern ITEMLIST it_running; +extern ITEMLIST it_services; +extern ITEMLIST it_setopts; +extern ITEMLIST it_shopts; +extern ITEMLIST it_signals; +extern ITEMLIST it_stopped; +extern ITEMLIST it_users; +extern ITEMLIST it_variables; + +extern COMPSPEC *pcomp_curcs; +extern const char *pcomp_curcmd; + +/* Functions from pcomplib.c */ +extern COMPSPEC *compspec_create PARAMS((void)); +extern void compspec_dispose PARAMS((COMPSPEC *)); +extern COMPSPEC *compspec_copy PARAMS((COMPSPEC *)); + +extern void progcomp_create PARAMS((void)); +extern void progcomp_flush PARAMS((void)); +extern void progcomp_dispose PARAMS((void)); + +extern int progcomp_size PARAMS((void)); + +extern int progcomp_insert PARAMS((char *, COMPSPEC *)); +extern int progcomp_remove PARAMS((char *)); + +extern COMPSPEC *progcomp_search PARAMS((const char *)); + +extern void progcomp_walk PARAMS((hash_wfunc *)); + +/* Functions from pcomplete.c */ +extern void set_itemlist_dirty PARAMS((ITEMLIST *)); + +extern STRINGLIST *completions_to_stringlist PARAMS((char **)); + +extern STRINGLIST *gen_compspec_completions PARAMS((COMPSPEC *, const char *, const char *, int, int, int *)); +extern char **programmable_completions PARAMS((const char *, const char *, int, int, int *)); + +extern void pcomp_set_readline_variables PARAMS((int, int)); +extern void pcomp_set_compspec_options PARAMS((COMPSPEC *, int, int)); +#endif /* _PCOMPLETE_H_ */ diff --git a/bash-5.1/pcomplib.c b/bash-5.1/pcomplib.c new file mode 100644 index 0000000..075fce7 --- /dev/null +++ b/bash-5.1/pcomplib.c @@ -0,0 +1,228 @@ +/* pcomplib.c - library functions for programmable completion. */ + +/* Copyright (C) 1999-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (PROGRAMMABLE_COMPLETION) + +#include "bashansi.h" +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include "bashintl.h" + +#include "shell.h" +#include "pcomplete.h" + +#define COMPLETE_HASH_BUCKETS 256 /* must be power of two */ + +#define STRDUP(x) ((x) ? savestring (x) : (char *)NULL) + +HASH_TABLE *prog_completes = (HASH_TABLE *)NULL; + +static void free_progcomp PARAMS((PTR_T)); + +COMPSPEC * +compspec_create () +{ + COMPSPEC *ret; + + ret = (COMPSPEC *)xmalloc (sizeof (COMPSPEC)); + ret->refcount = 0; + + ret->actions = (unsigned long)0; + ret->options = (unsigned long)0; + + ret->globpat = (char *)NULL; + ret->words = (char *)NULL; + ret->prefix = (char *)NULL; + ret->suffix = (char *)NULL; + ret->funcname = (char *)NULL; + ret->command = (char *)NULL; + ret->lcommand = (char *)NULL; + ret->filterpat = (char *)NULL; + + return ret; +} + +void +compspec_dispose (cs) + COMPSPEC *cs; +{ + cs->refcount--; + if (cs->refcount == 0) + { + FREE (cs->globpat); + FREE (cs->words); + FREE (cs->prefix); + FREE (cs->suffix); + FREE (cs->funcname); + FREE (cs->command); + FREE (cs->lcommand); + FREE (cs->filterpat); + + free (cs); + } +} + +COMPSPEC * +compspec_copy (cs) + COMPSPEC *cs; +{ + COMPSPEC *new; + + new = (COMPSPEC *)xmalloc (sizeof (COMPSPEC)); + + new->refcount = 1; /* was cs->refcount, but this is a fresh copy */ + new->actions = cs->actions; + new->options = cs->options; + + new->globpat = STRDUP (cs->globpat); + new->words = STRDUP (cs->words); + new->prefix = STRDUP (cs->prefix); + new->suffix = STRDUP (cs->suffix); + new->funcname = STRDUP (cs->funcname); + new->command = STRDUP (cs->command); + new->lcommand = STRDUP (cs->lcommand); + new->filterpat = STRDUP (cs->filterpat); + + return new; +} + +void +progcomp_create () +{ + if (prog_completes == 0) + prog_completes = hash_create (COMPLETE_HASH_BUCKETS); +} + +int +progcomp_size () +{ + return (HASH_ENTRIES (prog_completes)); +} + +static void +free_progcomp (data) + PTR_T data; +{ + COMPSPEC *cs; + + cs = (COMPSPEC *)data; + compspec_dispose (cs); +} + +void +progcomp_flush () +{ + if (prog_completes) + hash_flush (prog_completes, free_progcomp); +} + +void +progcomp_dispose () +{ + if (prog_completes) + hash_dispose (prog_completes); + prog_completes = (HASH_TABLE *)NULL; +} + +int +progcomp_remove (cmd) + char *cmd; +{ + register BUCKET_CONTENTS *item; + + if (prog_completes == 0) + return 1; + + item = hash_remove (cmd, prog_completes, 0); + if (item) + { + if (item->data) + free_progcomp (item->data); + free (item->key); + free (item); + return (1); + } + return (0); +} + +int +progcomp_insert (cmd, cs) + char *cmd; + COMPSPEC *cs; +{ + register BUCKET_CONTENTS *item; + + if (cs == NULL) + programming_error (_("progcomp_insert: %s: NULL COMPSPEC"), cmd); + + if (prog_completes == 0) + progcomp_create (); + + cs->refcount++; + item = hash_insert (cmd, prog_completes, 0); + if (item->data) + free_progcomp (item->data); + else + item->key = savestring (cmd); + item->data = cs; + + return 1; +} + +COMPSPEC * +progcomp_search (cmd) + const char *cmd; +{ + register BUCKET_CONTENTS *item; + COMPSPEC *cs; + + if (prog_completes == 0) + return ((COMPSPEC *)NULL); + + item = hash_search (cmd, prog_completes, 0); + + if (item == NULL) + return ((COMPSPEC *)NULL); + + cs = (COMPSPEC *)item->data; + + return (cs); +} + +void +progcomp_walk (pfunc) + hash_wfunc *pfunc; +{ + if (prog_completes == 0 || pfunc == 0 || HASH_ENTRIES (prog_completes) == 0) + return; + + hash_walk (prog_completes, pfunc); +} + +#endif /* PROGRAMMABLE_COMPLETION */ diff --git a/bash-5.1/po/LINGUAS b/bash-5.1/po/LINGUAS new file mode 100644 index 0000000..27165b3 --- /dev/null +++ b/bash-5.1/po/LINGUAS @@ -0,0 +1,2 @@ +# Set of available languages. +en@quot en@boldquot af bg ca cs da de el eo es et fi fr ga gl hr hu id it ja ko lt nb nl pl pt pt_BR ro ru sk sl sr sv tr uk vi zh_CN zh_TW diff --git a/bash-5.1/po/Makefile.in.in b/bash-5.1/po/Makefile.in.in new file mode 100644 index 0000000..6f0abed --- /dev/null +++ b/bash-5.1/po/Makefile.in.in @@ -0,0 +1,359 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2003 by Ulrich Drepper +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ + +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = $(top_srcdir)/support/mkinstalldirs +mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) + +GMSGFMT = @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = @XGETTEXT@ +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: all-@USE_NLS@ + +all-yes: stamp-po +all-no: + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test -z "$(CATALOGS)" || $(MAKE) $(CATALOGS) + @echo "touch stamp-po" + @echo timestamp > stamp-poT + @mv stamp-poT stamp-po + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' + $(MAKE) $(MFLAGS) builtins.pot-update + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo stamp-po + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir); \ + else \ + cp -p $(srcdir)/$$file $(distdir); \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@ $(srcdir)/Rules-builtins + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/bash-5.1/po/Makevars b/bash-5.1/po/Makevars new file mode 100644 index 0000000..84b2d95 --- /dev/null +++ b/bash-5.1/po/Makevars @@ -0,0 +1,41 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = $(BUILD_DIR) + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ -C + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Free Software Foundation, Inc. + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = bug-bash@gnu.org + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = diff --git a/bash-5.1/po/POTFILES.in b/bash-5.1/po/POTFILES.in new file mode 100644 index 0000000..2a8f369 --- /dev/null +++ b/bash-5.1/po/POTFILES.in @@ -0,0 +1,81 @@ +# List of source files containing translatable strings. +# Copyright (C) 2004 Free Software Foundation, Inc. + +arrayfunc.c +bashhist.c +bashline.c +braces.c +builtins/alias.def +builtins/bind.def +builtins/break.def +builtins/caller.def +builtins/cd.def +builtins/common.c +builtins/complete.def +builtins/declare.def +builtins/enable.def +builtins/evalfile.c +builtins/exec.def +builtins/exit.def +builtins/fc.def +builtins/fg_bg.def +builtins/getopt.c +builtins/hash.def +builtins/help.def +builtins/history.def +builtins/inlib.def +builtins/jobs.def +builtins/kill.def +builtins/let.def +builtins/mapfile.def +builtins/mkbuiltins.c +builtins/printf.def +builtins/pushd.def +builtins/read.def +builtins/return.def +builtins/set.def +builtins/setattr.def +builtins/shift.def +builtins/shopt.def +builtins/source.def +builtins/suspend.def +builtins/type.def +builtins/ulimit.def +builtins/umask.def +error.c +eval.c +execute_cmd.c +expr.c +general.c +input.c +jobs.c +lib/intl/os2compat.c +lib/malloc/malloc.c +lib/malloc/stats.c +lib/malloc/table.c +lib/malloc/watch.c +lib/sh/fmtulong.c +lib/sh/netopen.c +locale.c +mailcheck.c +make_cmd.c +nojobs.c +parse.y +pcomplete.c +pcomplib.c +print_cmd.c +redir.c +shell.c +sig.c +siglist.c +subst.c +test.c +trap.c +variables.c +version.c +version2.c +xmalloc.c + +# Apparently gettext's defaults cannot handle files that exist outside of the +# source directory, like in the build directory +#../builtins/builtins.c diff --git a/bash-5.1/po/README b/bash-5.1/po/README new file mode 100644 index 0000000..979884c --- /dev/null +++ b/bash-5.1/po/README @@ -0,0 +1 @@ +This apparently requires GNU sed diff --git a/bash-5.1/po/Rules-builtins b/bash-5.1/po/Rules-builtins new file mode 100644 index 0000000..57df81c --- /dev/null +++ b/bash-5.1/po/Rules-builtins @@ -0,0 +1,19 @@ +# +# Update the strings from the builtins' long docs. Must be called when +# bash.pot exists, in the middle of the bash.pot-update recipe +# +builtins.pot-update: $(top_builddir)/builtins/builtins.c + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_builddir)/builtins \ + $(XGETTEXT_OPTIONS) --omit-header \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --join-existing \ + builtins.c + +# This rule has no dependencies: we don't need to update builtins.pot at +# every "make" invocation, only create it when it is missing. +# Only "make builtins.pot-update" or "make dist" will force an update. +$(srcdir)/builtins.pot: + $(MAKE) builtins.pot-update + +xdist: + $(MAKE) update-po diff --git a/bash-5.1/po/Rules-quot b/bash-5.1/po/Rules-quot new file mode 100644 index 0000000..5f46d23 --- /dev/null +++ b/bash-5.1/po/Rules-quot @@ -0,0 +1,42 @@ +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/bash-5.1/po/af.gmo b/bash-5.1/po/af.gmo new file mode 100644 index 0000000000000000000000000000000000000000..28fbbfb6732df3cea30cd3b6bdc3db7afc1e74ec GIT binary patch literal 1321 zcmY+D-HsGR6vqoeK1LBjf8b6Ws!3J# z>pquh!ny5{cM&SuIK6g4NdF-3c-Jt-=* z<2+cmYL8&Gu%?D;WAdP_5qE6ac=Eb5suuUG;r8=czqlecmpV|t5L+}=3x;trYQ~qu zccwD-z>p6rG+y9*-;OD_COBJ@HWa3C?WbJV!mmtFOJe7&6HTWm7OHNTg0)n}G!e3+ zvGOc-o!v*Ya;uQvv-5~Aix*QG4wBwOo?92>wl8%d?=+>Cdp4uq?#`aP8_hsk-fJIi zm<$t{rgAu;d>T$AYyO0Q+tN1sD4={-K<7JpCZ6_& z&*S>g`KKoK;!DR=zhp;^4hswZD>mi@*R6pPFCQCpt&jeIDhk=Pcg^fojjxet%*sRR zzHNf$118Vfh;M79T=#8T6WxK6wmUZ~nsR8Jz@$-X7T1@=ju~^srhtX6PfM7mpj0*H sDI-WU>Qu8UkX~WC)VxNwRvy1l5O%FE4&WMAQ2WwZ{9p^+cB}T{AAJ>3RR910 literal 0 HcmV?d00001 diff --git a/bash-5.1/po/af.po b/bash-5.1/po/af.po new file mode 100644 index 0000000..c350681 --- /dev/null +++ b/bash-5.1/po/af.po @@ -0,0 +1,4909 @@ +# bash +# Copyright (C) 2004 Free Software Foundation, Inc. +# Petri Jooste , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 2.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2004-03-17 13:48+0200\n" +"Last-Translator: Petri Jooste \n" +"Language-Team: Afrikaans \n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: arrayfunc.c:66 +#, fuzzy +msgid "bad array subscript" +msgstr "Os/2 Biskaart Skikking" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: kan nie %s skep nie" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "%s: bevel nie gevind nie" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:252 +#, fuzzy, c-format +msgid "%s: cannot read: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, fuzzy, c-format +msgid "`%s': unknown function name" +msgstr "%s: leesalleen-funksie" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "" + +#: builtins/bind.def:378 builtins/bind.def:395 +#, fuzzy, c-format +msgid "`%s': cannot unbind" +msgstr "%s: bevel nie gevind nie" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" + +#: builtins/caller.def:136 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +#, fuzzy +msgid "too many arguments" +msgstr "te veel parameters" + +#: builtins/cd.def:342 +#, fuzzy +msgid "null directory" +msgstr "boonste lêergids." + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "" + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "" + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, fuzzy, c-format +msgid "%s: option requires an argument" +msgstr "%s: option `%s' requires an argument\n" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "" + +#: builtins/common.c:207 +#, fuzzy, c-format +msgid "%s: not found" +msgstr "%s: bevel nie gevind nie" + +#: builtins/common.c:216 shell.c:857 +#, fuzzy, c-format +msgid "%s: invalid option" +msgstr "%s: illegal option -- %c\n" + +#: builtins/common.c:223 +#, fuzzy, c-format +msgid "%s: invalid option name" +msgstr "%s: illegal option -- %c\n" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, fuzzy, c-format +msgid "`%s': not a valid identifier" +msgstr "Die datum is nie geldige!" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid octal number" +msgstr "Die sein nommer wat was gevang het" + +#: builtins/common.c:242 +#, fuzzy +msgid "invalid hex number" +msgstr "Die sein nommer wat was gevang het" + +#: builtins/common.c:244 expr.c:1569 +#, fuzzy +msgid "invalid number" +msgstr "Die sein nommer wat was gevang het" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" + +#: builtins/common.c:266 error.c:510 +#, fuzzy, c-format +msgid "%s: readonly variable" +msgstr "Veranderlike boom" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "" + +#: builtins/common.c:274 builtins/common.c:276 +#, fuzzy +msgid "argument" +msgstr "argument verwag\n" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:292 +#, fuzzy, c-format +msgid "%s: no job control" +msgstr "geen taakbeheer in hierdie dop nie" + +#: builtins/common.c:294 +#, fuzzy +msgid "no job control" +msgstr "geen taakbeheer in hierdie dop nie" + +#: builtins/common.c:304 +#, fuzzy, c-format +msgid "%s: restricted" +msgstr "Die bediener beëindig Die verbinding." + +#: builtins/common.c:306 +msgid "restricted" +msgstr "" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "" + +#: builtins/common.c:323 +#, fuzzy, c-format +msgid "write error: %s" +msgstr "pypfout: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:701 builtins/common.c:703 +#, fuzzy, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: dubbelsinnige herroetering" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, fuzzy, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, fuzzy, c-format +msgid "%s: cannot unset" +msgstr "%s: kan nie %s skep nie" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: leesalleen-funksie" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, fuzzy, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:343 +#, fuzzy, c-format +msgid "cannot open shared object %s: %s" +msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:388 +#, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:543 +#, fuzzy, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: is 'n gids" + +#: builtins/evalfile.c:144 +#, fuzzy, c-format +msgid "%s: not a regular file" +msgstr "%s: kan nie 'n binêre lêer uitvoer nie" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: kan nie 'n binêre lêer uitvoer nie" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, fuzzy, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/exit.def:64 +#, fuzzy, c-format +msgid "logout\n" +msgstr "Afteken" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +#, fuzzy +msgid "no command found" +msgstr "%s: bevel nie gevind nie" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:444 +#, fuzzy, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "" + +#: builtins/getopt.c:110 +#, fuzzy, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: illegal option -- %c\n" + +#: builtins/getopt.c:111 +#, fuzzy, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: option `%s' requires an argument\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:267 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "Bevelreël" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:224 +#, fuzzy, c-format +msgid "%s: cannot open: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "" + +#: builtins/history.def:451 +#, fuzzy, c-format +msgid "%s: history expansion failed" +msgstr "%s: heelgetal-uitdrukking is verwag\n" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "Veranderlike boom" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:274 +#, fuzzy +msgid "Unknown error" +msgstr "Onbekende fout %d" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +#, fuzzy +msgid "expression expected" +msgstr "Bools uitdrukking verwag" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "" + +#: builtins/mapfile.def:299 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "Os/2 Biskaart Skikking" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "" + +#: builtins/pushd.def:199 +#, fuzzy +msgid "no other directory" +msgstr "boonste lêergids." + +#: builtins/pushd.def:360 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: option `%s' requires an argument\n" + +#: builtins/pushd.def:480 +#, fuzzy +msgid "" +msgstr "Nuutste gebruik word werksaam gids" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:755 +#, fuzzy, c-format +msgid "read error: %d: %s" +msgstr "pypfout: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" + +#: builtins/set.def:966 +#, fuzzy, c-format +msgid "%s: not an array variable" +msgstr "Veranderlike boom" + +#: builtins/setattr.def:189 +#, fuzzy, c-format +msgid "%s: not a function" +msgstr "%s: leesalleen-funksie" + +#: builtins/setattr.def:194 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: kan nie %s skep nie" + +#: builtins/shift.def:72 builtins/shift.def:79 +#, fuzzy +msgid "shift count" +msgstr "Shift" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:154 +#, fuzzy, c-format +msgid "%s: file not found" +msgstr "%s: bevel nie gevind nie" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:112 +#, fuzzy +msgid "cannot suspend a login shell" +msgstr "Begin aanteken tolk" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:275 +#, fuzzy, c-format +msgid "%s is a function\n" +msgstr "%s: leesalleen-funksie" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:426 +#, fuzzy, c-format +msgid "`%c': bad command" +msgstr "%s: illegal option -- %c\n" + +#: builtins/ulimit.def:455 +#, fuzzy, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/ulimit.def:481 +#, fuzzy +msgid "limit" +msgstr "Filter beperk:" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, fuzzy, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: kan nie %s skep nie" + +#: builtins/umask.def:115 +#, fuzzy +msgid "octal number" +msgstr "Die sein nommer wat was gevang het" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr "" + +#: error.c:164 +#, fuzzy, c-format +msgid "last command: %s\n" +msgstr "Bevelreël" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "" + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:462 +#, fuzzy +msgid "unknown command error" +msgstr "Onbekende fout %d" + +#: error.c:463 +#, fuzzy +msgid "bad command type" +msgstr "bevelnaam" + +#: error.c:464 +#, fuzzy +msgid "bad connector" +msgstr "foutiewe verbinder`%d'" + +#: error.c:465 +#, fuzzy +msgid "bad jump" +msgstr "Spring na:" + +#: error.c:503 +#, fuzzy, c-format +msgid "%s: unbound variable" +msgstr "Veranderlike boom" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +#, fuzzy +msgid "pipe error" +msgstr "pypfout: %s" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: bevel nie gevind nie" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "" + +#: execute_cmd.c:5854 +#, fuzzy, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: is 'n gids" + +#: execute_cmd.c:5891 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: kan nie 'n binêre lêer uitvoer nie" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "" + +#: execute_cmd.c:6029 +#, fuzzy, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "" + +#: expr.c:291 +#, fuzzy +msgid "recursion stack underflow" +msgstr "Stapel grootte verhoog" + +#: expr.c:477 +#, fuzzy +msgid "syntax error in expression" +msgstr "Sintaks fout in patroon" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "Sintaks fout in patroon" + +#: expr.c:544 expr.c:911 +#, fuzzy +msgid "division by 0" +msgstr "devisie by nul." + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "" + +#: expr.c:646 +#, fuzzy +msgid "`:' expected for conditional expression" +msgstr "Soek die lêer vir 'n uitdrukking" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:1056 +#, fuzzy +msgid "missing `)'" +msgstr "Ontbrekende '>'" + +#: expr.c:1107 expr.c:1487 +#, fuzzy +msgid "syntax error: operand expected" +msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "" + +#: expr.c:1513 +#, fuzzy, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" +"Hierdie is die fout boodskap van %1:\n" +"%2" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1582 +msgid "invalid integer constant" +msgstr "" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "waarde te groot vir basis" + +#: expr.c:1647 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "Pypfout.\n" + +#: general.c:70 +#, fuzzy +msgid "getcwd: cannot access parent directories" +msgstr "Kan nie die program uitvoer nie:" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1850 +#, fuzzy, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "E108: Geen veranderlike: \"%s\"" + +#: jobs.c:1865 +#, fuzzy, c-format +msgid "Signal %d" +msgstr "Sein kwaliteit:" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Klaar" + +#: jobs.c:1884 siglist.c:122 +#, fuzzy +msgid "Stopped" +msgstr "Op gehou" + +#: jobs.c:1888 +#, fuzzy, c-format +msgid "Stopped(%s)" +msgstr "Op gehou" + +#: jobs.c:1892 +#, fuzzy +msgid "Running" +msgstr "aktief" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Klaar(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Verlaat %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Onbekende status" + +#: jobs.c:2001 +#, fuzzy, c-format +msgid "(core dumped) " +msgstr "Kern Ontwikkelaar" + +#: jobs.c:2020 +#, fuzzy, c-format +msgid " (wd: %s)" +msgstr "Aktiveer nou dadelik" + +#: jobs.c:2259 +#, fuzzy, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "Fout in die skryf van %s" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: kan nie %s skep nie" + +#: jobs.c:3571 +#, fuzzy, c-format +msgid "%s: job has terminated" +msgstr "Die bediener beëindig Die verbinding." + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "" + +#: jobs.c:4334 nojobs.c:919 +#, fuzzy, c-format +msgid " (core dumped)" +msgstr "Kern Ontwikkelaar" + +#: jobs.c:4346 jobs.c:4359 +#, fuzzy, c-format +msgid "(wd now: %s)\n" +msgstr "Aktiveer nou dadelik" + +#: jobs.c:4391 +#, fuzzy +msgid "initialize_job_control: getpgrp failed" +msgstr "Inisialisering van OpenGL het misluk." + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:4473 +#, fuzzy +msgid "initialize_job_control: setpgid" +msgstr "Inisialisering van OpenGL het misluk." + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "geen taakbeheer in hierdie dop nie" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "onbekend" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "free: underflow detected; magic8 corrupted" +msgstr "" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1141 +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "" + +#: lib/sh/netopen.c:168 +#, fuzzy, c-format +msgid "%s: host unknown" +msgstr "onbekend" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "" + +#: mailcheck.c:439 +#, fuzzy +msgid "You have mail in $_" +msgstr "Bevestig Pos In" + +#: mailcheck.c:464 +#, fuzzy +msgid "You have new mail in $_" +msgstr "Wanneer nuwe pos arriveer in" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "" + +#: make_cmd.c:317 +#, fuzzy +msgid "syntax error: arithmetic expression required" +msgstr "Sintaks fout in patroon" + +#: make_cmd.c:319 +#, fuzzy +msgid "syntax error: `;' unexpected" +msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." + +#: make_cmd.c:320 +#, fuzzy, c-format +msgid "syntax error: `((%s))'" +msgstr "sintaksfout" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" + +#: parse.y:4705 +#, fuzzy +msgid "syntax error in conditional expression" +msgstr "Sintaks fout in patroon" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:4787 +#, fuzzy +msgid "expected `)'" +msgstr "')' is verwag\n" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:4865 +#, fuzzy, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "%s: binêre operator is verwag\n" + +#: parse.y:4869 +#, fuzzy +msgid "conditional binary operator expected" +msgstr "%s: binêre operator is verwag\n" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:4906 +#, fuzzy, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "Soek die lêer vir 'n uitdrukking" + +#: parse.y:4909 +#, fuzzy, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "Soek die lêer vir 'n uitdrukking" + +#: parse.y:4913 +#, fuzzy, c-format +msgid "unexpected token %d in conditional command" +msgstr "Soek die lêer vir 'n uitdrukking" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "" + +#: parse.y:6355 +#, fuzzy, c-format +msgid "syntax error near `%s'" +msgstr "Sintaks fout in patroon" + +#: parse.y:6365 +#, fuzzy +msgid "syntax error: unexpected end of file" +msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." + +#: parse.y:6365 +msgid "syntax error" +msgstr "sintaksfout" + +#: parse.y:6428 +#, fuzzy, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Gebruik Kaart na Los Tronk" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:204 +#, fuzzy, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: dubbelsinnige herroetering" + +#: redir.c:208 +#, fuzzy, c-format +msgid "%s: cannot overwrite existing file" +msgstr "Jy het gespesifiseer 'n bestaande lêer" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "" + +#: redir.c:222 +#, fuzzy, c-format +msgid "%s: cannot assign fd to variable" +msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#, fuzzy +msgid "redirection error: cannot duplicate fd" +msgstr "Pypfout.\n" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, fuzzy, c-format +msgid "%c%c: invalid option" +msgstr "%s: illegal option -- %c\n" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: is 'n gids" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Ek het nie 'n naam nie!" + +#: shell.c:2035 +#, fuzzy, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "bedryfstelselkernweergawe" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" + +#: shell.c:2038 +#, fuzzy +msgid "GNU long options:\n" +msgstr "Gnu C Saamsteller Opsies" + +#: shell.c:2042 +#, fuzzy +msgid "Shell options:\n" +msgstr "opneem opsies" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" + +#: shell.c:2062 +#, fuzzy, c-format +msgid "\t-%s or -o option\n" +msgstr "" +"Gebruik so: %s LÊER \n" +" of: %s OPSIE\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Foutiewe sein" + +#: siglist.c:50 +#, fuzzy +msgid "Hangup" +msgstr "Ophang" + +#: siglist.c:54 +#, fuzzy +msgid "Interrupt" +msgstr "Interrupt" + +#: siglist.c:58 +#, fuzzy +msgid "Quit" +msgstr "Verlaat" + +#: siglist.c:62 +#, fuzzy +msgid "Illegal instruction" +msgstr "Sigill (onwettige instruksie)" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "" + +#: siglist.c:74 +#, fuzzy +msgid "ABORT instruction" +msgstr "Verwerking Instruksie" + +#: siglist.c:78 +#, fuzzy +msgid "EMT instruction" +msgstr "Verwerking Instruksie" + +#: siglist.c:82 +#, fuzzy +msgid "Floating point exception" +msgstr "wisselpuntgetaluitsondering" + +#: siglist.c:86 +#, fuzzy +msgid "Killed" +msgstr "Doodgemaak proses." + +#: siglist.c:90 +#, fuzzy +msgid "Bus error" +msgstr "Pypfout.\n" + +#: siglist.c:94 +#, fuzzy +msgid "Segmentation fault" +msgstr "Sigsegv (segmentasie oortreding)" + +#: siglist.c:98 +#, fuzzy +msgid "Bad system call" +msgstr "fork-stelselroep het gefaal" + +#: siglist.c:102 +#, fuzzy +msgid "Broken pipe" +msgstr "Sigpipe (gebroke pyp)" + +#: siglist.c:106 +#, fuzzy +msgid "Alarm clock" +msgstr "wêreld horlosie" + +#: siglist.c:110 +#, fuzzy +msgid "Terminated" +msgstr "" +"\n" +"Bevel beëindig\n" + +#: siglist.c:114 +#, fuzzy +msgid "Urgent IO condition" +msgstr "Ooreenstem enige kondisie" + +#: siglist.c:118 +#, fuzzy +msgid "Stopped (signal)" +msgstr "Sein kwaliteit:" + +#: siglist.c:126 +#, fuzzy +msgid "Continue" +msgstr "Gaan voort" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "" + +#: siglist.c:138 +#, fuzzy +msgid "Stopped (tty input)" +msgstr "Sigttin (tty invoer)" + +#: siglist.c:142 +#, fuzzy +msgid "Stopped (tty output)" +msgstr "Sigttou (tty uitset)" + +#: siglist.c:146 +#, fuzzy +msgid "I/O ready" +msgstr "Gereed." + +#: siglist.c:150 +#, fuzzy +msgid "CPU limit" +msgstr "Filter beperk:" + +#: siglist.c:154 +#, fuzzy +msgid "File limit" +msgstr "Filter beperk:" + +#: siglist.c:158 +#, fuzzy +msgid "Alarm (virtual)" +msgstr "virtuele werkskerms" + +#: siglist.c:162 +#, fuzzy +msgid "Alarm (profile)" +msgstr "Vee profiel uit..." + +#: siglist.c:166 +#, fuzzy +msgid "Window changed" +msgstr "Lêer Het verander" + +#: siglist.c:170 +#, fuzzy +msgid "Record lock" +msgstr "Sluit Lêers" + +#: siglist.c:174 +#, fuzzy +msgid "User signal 1" +msgstr "Gebruiker Sein 1" + +#: siglist.c:178 +#, fuzzy +msgid "User signal 2" +msgstr "Gebruiker Sein 1" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "" + +#: siglist.c:186 +#, fuzzy +msgid "power failure imminent" +msgstr "Vaaling na Uitpak" + +#: siglist.c:190 +#, fuzzy +msgid "system crash imminent" +msgstr "Die Kde Omval Handteerder" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "" + +#: siglist.c:198 +#, fuzzy +msgid "programming error" +msgstr "Pypfout.\n" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "" + +#: siglist.c:214 +msgid "Information request" +msgstr "" + +#: siglist.c:222 siglist.c:224 +#, fuzzy, c-format +msgid "Unknown Signal #%d" +msgstr "Sein kwaliteit:" + +#: subst.c:1476 subst.c:1666 +#, fuzzy, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "--Geen reëls in buffer--" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "" + +#: subst.c:5910 subst.c:5926 +#, fuzzy +msgid "cannot make pipe for process substitution" +msgstr "Woord Substitusie" + +#: subst.c:5985 +#, fuzzy +msgid "cannot make child for process substitution" +msgstr "Woord Substitusie" + +#: subst.c:6059 +#, fuzzy, c-format +msgid "cannot open named pipe %s for reading" +msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" + +#: subst.c:6061 +#, fuzzy, c-format +msgid "cannot open named pipe %s for writing" +msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" + +#: subst.c:6084 +#, fuzzy, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" + +#: subst.c:6213 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "--Geen reëls in buffer--" + +#: subst.c:6353 +#, fuzzy +msgid "cannot make pipe for command substitution" +msgstr "Woord Substitusie" + +#: subst.c:6397 +#, fuzzy +msgid "cannot make child for command substitution" +msgstr "Woord Substitusie" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "" + +#: subst.c:7013 subst.c:7177 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "Veranderlike boom" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "" + +#: subst.c:7503 subst.c:7518 +#, fuzzy, c-format +msgid "%s: substring expression < 0" +msgstr "ongeldige uitdrukking" + +#: subst.c:9281 subst.c:9302 +#, fuzzy, c-format +msgid "%s: bad substitution" +msgstr "Woord Substitusie" + +#: subst.c:9390 +#, fuzzy, c-format +msgid "$%s: cannot assign in this way" +msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" + +#: subst.c:10367 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "--Geen reëls in buffer--" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "" + +#: test.c:147 +#, fuzzy +msgid "argument expected" +msgstr "argument verwag\n" + +#: test.c:156 +#, fuzzy, c-format +msgid "%s: integer expression expected" +msgstr "%s: heelgetal-uitdrukking is verwag\n" + +#: test.c:265 +#, fuzzy +msgid "`)' expected" +msgstr "')' is verwag\n" + +#: test.c:267 +#, fuzzy, c-format +msgid "`)' expected, found %s" +msgstr "')' is verwag, maar %s gevind\n" + +#: test.c:466 test.c:799 +#, fuzzy, c-format +msgid "%s: binary operator expected" +msgstr "%s: binêre operator is verwag\n" + +#: test.c:756 test.c:759 +#, fuzzy, c-format +msgid "%s: unary operator expected" +msgstr "%s: unitêre operator is verwag\n" + +#: test.c:881 +#, fuzzy +msgid "missing `]'" +msgstr "Ontbrekende '>'" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." + +#: trap.c:220 +#, fuzzy +msgid "invalid signal number" +msgstr "Die sein nommer wat was gevang het" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 version2.c:86 +#, fuzzy, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "bedryfstelselkernweergawe" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "" + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:95 +#, fuzzy, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: kan nie %s skep nie" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:167 +#, fuzzy, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: kan nie %s skep nie" + +#: builtins.c:45 +#, fuzzy +msgid "alias [-p] [name[=value] ... ]" +msgstr "E418: Ongeldige waarde: %s" + +#: builtins.c:49 +#, fuzzy +msgid "unalias [-a] name [name ...]" +msgstr "Volle Naam:" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:56 +#, fuzzy +msgid "break [n]" +msgstr "Breek" + +#: builtins.c:58 +#, fuzzy +msgid "continue [n]" +msgstr "Gaan voort" + +#: builtins.c:60 +#, fuzzy +msgid "builtin [shell-builtin [arg ...]]" +msgstr "Ontfouting %1 (met arg %2 %3)" + +#: builtins.c:63 +#, fuzzy +msgid "caller [expr]" +msgstr "/Opsies/Toets" + +#: builtins.c:66 +#, fuzzy +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "init_cache_dir %s... " + +#: builtins.c:68 +#, fuzzy +msgid "pwd [-LP]" +msgstr "miniserv.pl is gestop\n" + +#: builtins.c:76 +#, fuzzy +msgid "command [-pVv] command [arg ...]" +msgstr "Gebruik so: %s [OPSIE] [BEVEL [ARG]...]\n" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "E418: Ongeldige waarde: %s" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "E418: Ongeldige waarde: %s" + +#: builtins.c:82 +#, fuzzy +msgid "local [option] name[=value] ..." +msgstr "Name=Plaaslike Netwerk" + +#: builtins.c:85 +#, fuzzy +msgid "echo [-neE] [arg ...]" +msgstr "Ontfouting %1 (met arg %2 %3)" + +#: builtins.c:89 +#, fuzzy +msgid "echo [-n] [arg ...]" +msgstr "Konfigureer Eggo" + +#: builtins.c:92 +#, fuzzy +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "Teruglus lêernaam:" + +#: builtins.c:94 +#, fuzzy +msgid "eval [arg ...]" +msgstr "Ontfouting %1 (met arg %2 %3)" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "Kom ons begin!" + +#: builtins.c:98 +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "" + +#: builtins.c:100 +#, fuzzy +msgid "exit [n]" +msgstr "Verlaat" + +#: builtins.c:102 +#, fuzzy +msgid "logout [n]" +msgstr "Afteken" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:109 +#, fuzzy +msgid "fg [job_spec]" +msgstr "Kort Spesifikasie werkvoorbeeld" + +#: builtins.c:113 +#, fuzzy +msgid "bg [job_spec ...]" +msgstr "Kort Spesifikasie werkvoorbeeld" + +#: builtins.c:116 +#, fuzzy +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "Teruglus lêernaam:" + +#: builtins.c:119 +#, fuzzy +msgid "help [-dms] [pattern ...]" +msgstr "enige patroon" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:136 +#, fuzzy +msgid "let arg [arg ...]" +msgstr "Kom ons begin!" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:140 +#, fuzzy +msgid "return [n]" +msgstr "Terug Adres - 3/4 x 2\"" + +#: builtins.c:142 +#, fuzzy +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "Gebruik so: %s [OPSIE]... [-] [GEBRUIKER [ARG]...]\n" + +#: builtins.c:144 +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "Volle Naam:" + +#: builtins.c:146 +#, fuzzy +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "Bediener of domein naam:" + +#: builtins.c:148 +#, fuzzy +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "Bediener of domein naam:" + +#: builtins.c:150 +#, fuzzy +msgid "shift [n]" +msgstr "Shift" + +#: builtins.c:152 +#, fuzzy +msgid "source filename [arguments]" +msgstr "Kies Lêernaam" + +#: builtins.c:154 +#, fuzzy +msgid ". filename [arguments]" +msgstr ". lêernaam" + +#: builtins.c:157 +#, fuzzy +msgid "suspend [-f]" +msgstr "|uitsit}\n" + +#: builtins.c:160 +#, fuzzy +msgid "test [expr]" +msgstr "/Opsies/Toets" + +#: builtins.c:162 +#, fuzzy +msgid "[ arg... ]" +msgstr "Arg %1" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:168 +#, fuzzy +msgid "type [-afptP] name [name ...]" +msgstr "Tipe die naam van die %1 speler." + +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "Grootte beperk (Kb):" + +#: builtins.c:174 +#, fuzzy +msgid "umask [-p] [-S] [mode]" +msgstr "Belmetode" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "Konfigureer Eggo" + +#: builtins.c:181 +#, fuzzy +msgid "wait [pid ...]" +msgstr "Wag:" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:202 +#, fuzzy +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "Bediener of domein naam:" + +#: builtins.c:204 +#, fuzzy +msgid "{ COMMANDS ; }" +msgstr "Opdragte" + +#: builtins.c:206 +#, fuzzy +msgid "job_spec [&]" +msgstr "Kort Spesifikasie werkvoorbeeld" + +#: builtins.c:208 +#, fuzzy +msgid "(( expression ))" +msgstr "Bools uitdrukking verwag" + +#: builtins.c:210 +#, fuzzy +msgid "[[ expression ]]" +msgstr "Bools uitdrukking verwag" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:215 +#, fuzzy +msgid "pushd [-n] [+N | -N | dir]" +msgstr "Tydelike gids:" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:226 +#, fuzzy +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "Volle Naam:" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:231 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" + +#: builtins.c:235 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "Volle Naam:" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" + +#: builtins.c:490 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" + +#: builtins.c:652 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" + +#: builtins.c:1431 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" + +#: builtins.c:1502 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" + +#: builtins.c:1726 +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#, fuzzy +#~ msgid "Unknown Signal #" +#~ msgstr "Sein kwaliteit:" + +#~ msgid "Missing `}'" +#~ msgstr "Ontbrekende `}'" + +#~ msgid "brace_expand> " +#~ msgstr "krulhakie_uitbrei>" + +#~ msgid "Attempt to free unknown command type `%d'.\n" +#~ msgstr "Poging om onbekende beveltipe vry te maak `%d'.\n" + +#~ msgid "Report this to %s\n" +#~ msgstr "Meld dit aan by %s\n" + +#~ msgid "Stopping myself..." +#~ msgstr "Besig om myself te stop..." + +#~ msgid "Tell %s to fix this someday.\n" +#~ msgstr "Laat weet %s om dit eendag reg te maak.\n" + +#, fuzzy +#~ msgid "execute_command: bad command type `%d'" +#~ msgstr "Uitvoer 'n tolk opdrag lyn" + +#~ msgid "real\t" +#~ msgstr "regtig\t" + +#~ msgid "user\t" +#~ msgstr "gebruiker\t" + +#~ msgid "sys\t" +#~ msgstr "stelsel\t" + +#~ msgid "" +#~ "real\t0m0.00s\n" +#~ "user\t0m0.00s\n" +#~ "sys\t0m0.00s\n" +#~ msgstr "" +#~ "regtig\t0m0.00s\n" +#~ "gebruiker\t0m0.00s\n" +#~ "stelsel\t0m0.00s\n" + +#~ msgid "cannot duplicate fd %d to fd 1: %s" +#~ msgstr "kan nie fd %d na fd 1 dupliseer nie: %s" + +#, fuzzy +#~ msgid "%s: output redirection restricted" +#~ msgstr "gebruik tans beperkte dop %s" + +#, fuzzy +#~ msgid "Out of memory!" +#~ msgstr "Te min geheue." + +#, fuzzy +#~ msgid "You have already added item `%s'\n" +#~ msgstr "Jy alreeds het 'n groep genaamd %1." + +#, fuzzy +#~ msgid "You have entered %d (%d) items. The distribution is:\n" +#~ msgstr "Die wagwoord frase jy ingevoerde is ongeldige." + +#, fuzzy +#~ msgid "slot %3d: " +#~ msgstr "3d modus" + +#, fuzzy +#~ msgid "" +#~ msgstr "(onbekend)" + +#, fuzzy +#~ msgid "%s: bg background job?" +#~ msgstr "Druktaak gestuur." + +#, fuzzy +#~ msgid "cprintf: bad `%%' argument (%c)" +#~ msgstr "%s: option `%s' requires an argument\n" + +#, fuzzy +#~ msgid "option `%s' requires an argument" +#~ msgstr "%s: option `%s' requires an argument\n" + +#, fuzzy +#~ msgid "%s: unrecognized option" +#~ msgstr "%s: unrecognized option `%c%s'\n" + +#, fuzzy +#~ msgid "`-c' requires an argument" +#~ msgstr "%s: option `%s' requires an argument\n" + +#, fuzzy +#~ msgid "reading" +#~ msgstr "besig om te lees" + +#, fuzzy +#~ msgid "writing" +#~ msgstr "besig om te skryf" + +#, fuzzy +#~ msgid "$%c: unbound variable" +#~ msgstr "Veranderlike boom" + +#, fuzzy +#~ msgid "%s: bad arithmetic substitution" +#~ msgstr "&Sintetisering/Wiskundige + Menging" + +#, fuzzy +#~ msgid "-%s: binary operator expected" +#~ msgstr "%s: binêre operator is verwag\n" + +#, fuzzy +#~ msgid "%s[%s: bad subscript" +#~ msgstr "Slegte formule." + +#, fuzzy +#~ msgid "[%s: bad subscript" +#~ msgstr "Slegte formule." + +#, fuzzy +#~ msgid "option %c\n" +#~ msgstr "Opsie" + +#, fuzzy +#~ msgid "option a\n" +#~ msgstr "Opsie" + +#, fuzzy +#~ msgid "option b\n" +#~ msgstr "Opsie" + +#, fuzzy +#~ msgid "option c with value `%s'\n" +#~ msgstr "Opsie '%s' vereis 'n waarde." + +#, fuzzy +#~ msgid "non-option ARGV-elements: " +#~ msgstr "parameters wat nie opsies is nie word geïgnoreer" + +#, fuzzy +#~ msgid "%s: Unknown flag %s.\n" +#~ msgstr "onbekende vlag: " + +#, fuzzy +#~ msgid "Unknown directive `%s'" +#~ msgstr "Onbekende direktief" + +#, fuzzy +#~ msgid "%s found before $END" +#~ msgstr "Nee einde was gevind." + +#, fuzzy +#~ msgid "%s already has a function (%s)" +#~ msgstr "Proses %1 het alreeds verdwyn!" + +#, fuzzy +#~ msgid "%s already had a docname (%s)" +#~ msgstr "Alles is alreeds installeer" + +#, fuzzy +#~ msgid "%s already has short documentation (%s)" +#~ msgstr "Proses %1 het alreeds verdwyn!" + +#, fuzzy +#~ msgid "%s already has a %s definition" +#~ msgstr "Proses %1 het alreeds verdwyn!" + +#, fuzzy +#~ msgid "mkbuiltins: Out of virtual memory!\n" +#~ msgstr "GenericName=Virtuele Geheue Statistieke" + +#~ msgid ":" +#~ msgstr ":" + +#, fuzzy +#~ msgid "times" +#~ msgstr "Herhaal %1 times " + +#, fuzzy +#~ msgid "%[DIGITS | WORD] [&]" +#~ msgstr "Woord oorvloei" + +#, fuzzy +#~ msgid "Arguments we accept:" +#~ msgstr "Aanvaar karakter verstel:" + +#, fuzzy +#~ msgid " vi-command, and vi-insert." +#~ msgstr "Biep op kaart voeg by en verwydering" + +#, fuzzy +#~ msgid " -l List names of functions." +#~ msgstr "Verander Posisies/Name..." + +#, fuzzy +#~ msgid " reused as input." +#~ msgstr "Invoer Versterking Limiet" + +#, fuzzy +#~ msgid " -r keyseq Remove the binding for KEYSEQ." +#~ msgstr "Verwyder koekies vir domein." + +#, fuzzy +#~ msgid "break N levels." +#~ msgstr "6 nuwe vlakke" + +#, fuzzy +#~ msgid "to be followed." +#~ msgstr "Lêers na Wees Uitgepak" + +#, fuzzy +#~ msgid "The flags are:" +#~ msgstr "Linker Vlaggies" + +#, fuzzy +#~ msgid "name only." +#~ msgstr "Naam slegs" + +#, fuzzy +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Verkeerde verklaring tipe" + +#, fuzzy +#~ msgid "\t\\a\talert (bell)" +#~ msgstr "stelsel klok" + +#, fuzzy +#~ msgid "\t\\c\tsuppress trailing newline" +#~ msgstr "Verwyder agterste spasies" + +#, fuzzy +#~ msgid "\t\\E\tescape character" +#~ msgstr "Ongeldige karakter <%s>" + +#, fuzzy +#~ msgid "\t\\f\tform feed" +#~ msgstr "Koevert Voer" + +#, fuzzy +#~ msgid "\t\\n\tnew line" +#~ msgstr "Lyn uit" + +#, fuzzy +#~ msgid "\t\\r\tcarriage return" +#~ msgstr "Terug Adres - 3/4 x 2\"" + +#, fuzzy +#~ msgid "\t\\t\thorizontal tab" +#~ msgstr "Oortjie Wydte:" + +#, fuzzy +#~ msgid "\t\\v\tvertical tab" +#~ msgstr "Oortjie Wydte:" + +#, fuzzy +#~ msgid "with the -E option." +#~ msgstr "%s: illegal option -- %c\n" + +#, fuzzy +#~ msgid "printed." +#~ msgstr "Gedruk: %s" + +#, fuzzy +#~ msgid "is set." +#~ msgstr "Nie stel" + +#, fuzzy +#~ msgid "string." +#~ msgstr "String" + +#, fuzzy +#~ msgid " mode, then vi." +#~ msgstr "-v\t\t\tVi modus (soos \"vi\")" + +#, fuzzy +#~ msgid "used." +#~ msgstr "gebruik word" + +#, fuzzy +#~ msgid "job is used." +#~ msgstr "Die naam '%1' is alreeds gebruik word" + +#, fuzzy +#~ msgid "anything in the history list." +#~ msgstr "Lêer Alreeds in Lys" + +#, fuzzy +#~ msgid "process group leader." +#~ msgstr "Proses groep Id" + +#, fuzzy +#~ msgid "\t-, +\t\tunary minus, plus" +#~ msgstr "Name=Qt Motif Plus" + +#, fuzzy +#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" +#~ msgstr "devisie by nul." + +#, fuzzy +#~ msgid "\t&\t\tbitwise AND" +#~ msgstr "en etiket: " + +#, fuzzy +#~ msgid "\t^\t\tbitwise XOR" +#~ msgstr "operande Xor data" + +#, fuzzy +#~ msgid "\t|\t\tbitwise OR" +#~ msgstr " of meer" + +#, fuzzy +#~ msgid "\t&&\t\tlogical AND" +#~ msgstr "en etiket: " + +#, fuzzy +#~ msgid "\t||\t\tlogical OR" +#~ msgstr " of meer" + +#, fuzzy +#~ msgid "\texpr ? expr : expr" +#~ msgstr "ooreenstemmende inskrywings gewone uitdrukking." + +#, fuzzy +#~ msgid "\t\t\tconditional expression" +#~ msgstr "ongeldige uitdrukking" + +#, fuzzy +#~ msgid "rules above." +#~ msgstr "Boonste Redigeerder" + +#, fuzzy +#~ msgid " -m Job control is enabled." +#~ msgstr "Stop flikkerende (as flikkerende is geaktiveer)" + +#, fuzzy +#~ msgid " -o option-name" +#~ msgstr "Gebruik so: %s [OPSIE] NAAM...\n" + +#~ msgid " allexport same as -a" +#~ msgstr " allexport dieselfde as -a" + +#~ msgid " braceexpand same as -B" +#~ msgstr " braceexpand dieselfde as -B" + +#~ msgid " errexit same as -e" +#~ msgstr " errexit dieselfde as -e" + +#~ msgid " hashall same as -h" +#~ msgstr " hashall dieselfde as -h" + +#~ msgid " histexpand same as -H" +#~ msgstr " histexpand dieselfde as -H" + +#~ msgid " interactive-comments" +#~ msgstr " interaktiewe-kommentaar" + +#~ msgid " keyword same as -k" +#~ msgstr " keyword dieselfde as -k" + +#~ msgid " monitor same as -m" +#~ msgstr " monitor dieselfde as -m" + +#~ msgid " noclobber same as -C" +#~ msgstr " noclobber dieselfde as -C" + +#~ msgid " noexec same as -n" +#~ msgstr " noexec dieselfde as -n" + +#~ msgid " noglob same as -f" +#~ msgstr " noglob dieselfde as -f" + +#~ msgid " notify save as -b" +#~ msgstr " notify dieselfde as -b" + +#~ msgid " nounset same as -u" +#~ msgstr " nounset dieselfde as -u" + +#~ msgid " onecmd same as -t" +#~ msgstr " onecmd dieselfde as -t" + +#~ msgid " physical same as -P" +#~ msgstr " physical dieselfde as -P" + +#~ msgid " match the standard" +#~ msgstr " pas by die standaard" + +#~ msgid " privileged same as -p" +#~ msgstr " privileged dieselfde as -p" + +#~ msgid " verbose same as -v" +#~ msgstr " verbose dieselfde as -v" + +#~ msgid " xtrace same as -x" +#~ msgstr " xtrace dieselfde as -x" + +#~ msgid " by default." +#~ msgstr " by verstek." + +#, fuzzy +#~ msgid " by redirection of output." +#~ msgstr "eSound Uitsetinpropprogram %s" + +#~ msgid "see readonly." +#~ msgstr "sien leesalleen" + +#, fuzzy +#~ msgid "processing." +#~ msgstr "Verwerking..." + +#, fuzzy +#~ msgid "File operators:" +#~ msgstr "lêer assosiasies" + +#, fuzzy +#~ msgid " -d FILE True if file is a directory." +#~ msgstr "%1 is 'n gids, maar 'n lêer was verwag." + +#, fuzzy +#~ msgid " -e FILE True if file exists." +#~ msgstr "Verwyder, as bestaan, die _:kommentaar" + +#, fuzzy +#~ msgid " modification date) file2." +#~ msgstr "Begin na datum" + +#, fuzzy +#~ msgid "String operators:" +#~ msgstr "Soekstring" + +#, fuzzy +#~ msgid " -n STRING" +#~ msgstr "String" + +#, fuzzy +#~ msgid "Other operators:" +#~ msgstr "Ander weergawe (B):" + +#, fuzzy +#~ msgid "" +#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgstr "is grootter as of gelyk na" + +#, fuzzy +#~ msgid "than ARG2." +#~ msgstr "%1 vroeër as %2" + +#~ msgid "the shell." +#~ msgstr "die dop." + +#, fuzzy +#~ msgid "with \"kill -signal $$\"." +#~ msgstr "Stuur alle prosesse die KILL sein...\n" + +#, fuzzy +#~ msgid "or unfound, respectively." +#~ msgstr "Formule of gewig:" + +#, fuzzy +#~ msgid " -H\tuse the `hard' resource limit" +#~ msgstr "Minimum waarde is 'n hard beperk" + +#, fuzzy +#~ msgid " -m\tthe maximum resident set size" +#~ msgstr "Data inwoonend stel grootte in Kgrepe" + +#, fuzzy +#~ msgid " -p\tthe pipe buffer size" +#~ msgstr " Audio Buffer Grootte (antwoord tyd) " + +#, fuzzy +#~ msgid " -v\tthe size of virtual memory" +#~ msgstr "GenericName=Virtuele Geheue Statistieke" + +#, fuzzy +#~ msgid "processes." +#~ msgstr "Prosesse" + +#, fuzzy +#~ msgid "pipeline are waited for." +#~ msgstr "Die drukker vir wat werke word versoekte" + +#, fuzzy +#~ msgid "the COMMANDS are executed." +#~ msgstr "Stoor geskiedenis van uitgevoerde bevele." + +#, fuzzy +#~ msgid "function as $0 .. $n." +#~ msgstr "-L\t\t\tSelfde as -r" + +#, fuzzy +#~ msgid "entire set of commands." +#~ msgstr "%s outobevele vir \"%s\"" + +#, fuzzy +#~ msgid "BASH_VERSION The version numbers of this Bash." +#~ msgstr "Hierdie is hoe nommers sal wees vertoon." + +#, fuzzy +#~ msgid "\t\tshell can access." +#~ msgstr "Konfigureer internettoegang..." + +#, fuzzy +#~ msgid "\t\tfor new mail." +#~ msgstr "Nuwe Pos Inkennisstelling" + +#, fuzzy +#~ msgid "\t\tlooking for commands." +#~ msgstr "%s outobevele vir \"%s\"" + +#, fuzzy +#~ msgid "\t\tprimary prompt." +#~ msgstr "Konqueror: Por" + +#, fuzzy +#~ msgid "command_oriented_history" +#~ msgstr "Herstel/Herstel herroep Geskiedenis..." + +#, fuzzy +#~ msgid " a single history line." +#~ msgstr "/Skoopmodus/Lynskoop" + +#~ msgid "not each is set." +#~ msgstr "nie elkeen is gestel nie." diff --git a/bash-5.1/po/bash.pot b/bash-5.1/po/bash.pot new file mode 100644 index 0000000..fb895a2 --- /dev/null +++ b/bash-5.1/po/bash.pot @@ -0,0 +1,4248 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "" + +#: bashline.c:4555 +#, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "" + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "" + +#: builtins/caller.def:136 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "" + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "" + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:388 +#, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr "" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "" + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:462 +msgid "unknown command error" +msgstr "" + +#: error.c:463 +msgid "bad command type" +msgstr "" + +#: error.c:464 +msgid "bad connector" +msgstr "" + +#: error.c:465 +msgid "bad jump" +msgstr "" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1582 +msgid "invalid integer constant" +msgstr "" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1892 +msgid "Running" +msgstr "" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:3564 +#, c-format +msgid "%s: no current jobs" +msgstr "" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "" + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "free: underflow detected; magic8 corrupted" +msgstr "" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1141 +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "" + +#: parse.y:6365 +msgid "syntax error" +msgstr "" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "" + +#: siglist.c:50 +msgid "Hangup" +msgstr "" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "" + +#: siglist.c:58 +msgid "Quit" +msgstr "" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "" + +#: siglist.c:86 +msgid "Killed" +msgstr "" + +#: siglist.c:90 +msgid "Bus error" +msgstr "" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "" + +#: siglist.c:110 +msgid "Terminated" +msgstr "" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "" + +#: siglist.c:126 +msgid "Continue" +msgstr "" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "" + +#: siglist.c:154 +msgid "File limit" +msgstr "" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "" + +#: siglist.c:166 +msgid "Window changed" +msgstr "" + +#: siglist.c:170 +msgid "Record lock" +msgstr "" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "" + +#: siglist.c:198 +msgid "programming error" +msgstr "" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "" + +#: siglist.c:214 +msgid "Information request" +msgstr "" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "" + +#: test.c:147 +msgid "argument expected" +msgstr "" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "" + +#: test.c:265 +msgid "`)' expected" +msgstr "" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "" + +#: test.c:881 +msgid "missing `]'" +msgstr "" + +#: test.c:899 +#, c-format +msgid "syntax error: `%s' unexpected" +msgstr "" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "" + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:56 +msgid "break [n]" +msgstr "" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "" + +#: builtins.c:78 +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "" + +#: builtins.c:80 +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "" + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "" + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "" + +#: builtins.c:96 +msgid "getopts optstring name [arg ...]" +msgstr "" + +#: builtins.c:98 +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:140 +msgid "return [n]" +msgstr "" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr "" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "" + +#: builtins.c:177 +msgid "wait [-fn] [-p var] [id ...]" +msgstr "" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:231 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" + +#: builtins.c:235 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" + +#: builtins.c:490 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" + +#: builtins.c:652 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" + +#: builtins.c:1431 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" + +#: builtins.c:1502 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" + +#: builtins.c:1726 +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" diff --git a/bash-5.1/po/bg.gmo b/bash-5.1/po/bg.gmo new file mode 100644 index 0000000000000000000000000000000000000000..fc647414e6c5241379e11f60dd39e58e9dc6b07e GIT binary patch literal 219994 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, 2007, 2010, 2012, 2013, 2014, 2015, 2016, 2018, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: bash-5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2020-03-27 19:47+0100\n" +"Last-Translator: Alexander Shopov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "грешен Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð° маÑив" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: изтриване на атрибута за указател от променливата" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: маÑивът не може да бъде преобразуван към речник" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: грешно име на ключ в речник" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: не може да Ñе приÑвоÑва на нецифров индекÑ" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: при приÑвоÑване към речник трÑбва да Ñе използва индекÑ" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: не може да Ñе Ñъздаде: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"изпълнение на команда на Ð®Ð½Ð¸ÐºÑ Ð¾Ñ‚ bash: не може да Ñе открие подредбата на\n" +"функциите на клавишите за командата" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: първиÑÑ‚ непразен знак не е „\"“" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "в %2$s липÑва затварÑщ знак „%1$c“" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: разделителÑÑ‚ „:“ липÑва" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "„%s“: не може да Ñе премахне приÑвоÑване" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" +"замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за „%s“" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" +"замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за %u " +"елемента" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" +"замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за „%s“" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "„%s“: грешно име на Ñиноним" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "редактирането на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´ не е включено" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%s“: грешно име на подредбата на функциите на клавишите" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: не може да Ñе прочете: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "„%s“: име на непозната функциÑ" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s не е зададена на никой клавиш.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s може да Ñе извика чрез " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: не може да Ñе премахне приÑвоÑване" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "брой цикли" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "валидно Ñамо за циклите Ñ â€žfor“, „while“ и „until“" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Връщане на контекÑта на текущото извикване на подпрограма.\n" +" \n" +" Без ИЗРÐЗ връща „$line $filename“. С ИЗРÐЗ връща\n" +" „$line $subroutine $filename“. Допълнителната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶Ðµ да Ñе\n" +" използва за получаване на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ÑÑŠÑтоÑнието на Ñтека.\n" +" \n" +" СтойноÑтта на ИЗРÐЗа показва за колко рамки ÑпрÑмо текущата да Ñе " +"изведе\n" +" информациÑ. Ðай-горната рамка е 0.\n" +" \n" +" Изходен код:\n" +" Връща 0, оÑвен ако обвивката изпълнÑва Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð° в обвивката " +"или\n" +" ИЗРÐЗът е грешен." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "Променливата „HOME“ не е зададена" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "прекалено много аргументи" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "нулева директориÑ" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "Променливата „OLDPWD“ не е зададена" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "ред %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "предупреждение: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: употреба: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: опциÑта изиÑква аргумент" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: изиÑква Ñе чиÑлов аргумент" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: не е открит" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: грешна опциÑ" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: грешно име на опциÑ" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "„%s“: грешен идентификатор" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "грешно оÑмично чиÑло" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "грешно шеÑтнайÑетично чиÑло" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "грешно чиÑло" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: грешно указване на Ñигнал" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "„%s“: грешен идентификатор на Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸Ð»Ð¸ задача" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: променлива Ñ Ð¿Ñ€Ð°Ð²Ð° Ñамо за четене" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "аргументът" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: нÑма такава задача" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: нÑма управление на задачите" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "нÑма управление на задачите" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: ограничена обвивка" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "ограничена обвивка" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: не е команда вградена в обвивката" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "грешка при запиÑ: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "грешка при задаване на атрибутите на терминала: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "грешка при получаване на атрибутите на терминала: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: грешка при получаване на текущата директориÑ: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: нееднозначно указана задача" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "помощта не е включена в тази верÑиÑ" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: не може да Ñе премахне: %s е Ñамо за четене" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: не може да Ñе премахне" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: грешно име на дейÑтвие" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: не е указано допиÑване" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "предупреждение: опциÑта „-F“ може да не работи Ñпоред очакваниÑта ви" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "предупреждение: опциÑта „-C“ може да не работи Ñпоред очакваниÑта ви" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "в момента не Ñе изпълнÑва Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° допиÑване" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "може да Ñе използва Ñамо във функциÑ" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: променливата-указател не може да е маÑив" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: променливата-указател не може да Ñочи към Ñебе Ñи" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: цикъл в променливите-указатели" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "„%s“: неправилно име за променлива-указател" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "„-f“ не може да Ñе използва за Ñъздаването на функции" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð²Ð° Ñамо за четене" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: ÑÑŠÑтавното приÑвоÑване на маÑив чрез цитат е оÑтарÑло" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: променливите за маÑиви не могат да Ñе унищожават така" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: речник не може да Ñе преобразува в маÑив" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "липÑва възможноÑÑ‚ за динамично зареждане" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "ÑподелениÑÑ‚ обект „%s“ не може да бъде зареден: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "„%s“ не може да Ñе открие в ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚ %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: не е зареден динамично" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "зареждащата Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° „%s“ върна грешка (%d): не е зареден" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: не е зареден динамично" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: не може да Ñе изтрие: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: е директориÑ" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: не е обикновен файл" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: файлът е прекалено голÑм" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: двоичниÑÑ‚ файл не може да бъде изпълнен" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: не може да Ñе изпълни: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "изход\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "това не е входна обвивка: използвайте „exit“" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Има Ñпрени задачи.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Има изпълнÑвани задачи.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "не е открита команда" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "указване на иÑториÑта" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: не може да Ñе отвори временен файл: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "текуща" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "задача %d е Ñтартирана без управление на задачите" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: непозволена Ð¾Ð¿Ñ†Ð¸Ñ â€” %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: опциÑта изиÑква аргумент — %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "хеширането е изключено" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: таблицата Ñ Ñ…ÐµÑˆÐ¾Ð²Ðµ е празна\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "Ñъвпад.\tкоманда\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Команди на обвивката, които напаÑват на ключовата дума „" +msgstr[1] "Команди на обвивката, които напаÑват на ключовите думи „" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"нÑма теми в помощта, които да отговарÑÑ‚ на „%s“. Опитайте Ñ\n" +"„help help“, „man -k %s“ или „info %s“." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: не може да Ñе отвори: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Тези команди на интерпретатора Ñа дефинирани вътрешно.\n" +"Ðапишете „help“, за да видите ÑпиÑъка.\n" +"Ðапишете „help ИМЕ_ÐÐ_ФУÐКЦИЯ“ за повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° Ñъответната функциÑ.\n" +"Ðапишете „info bash“ за повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° обвивката като цÑло.\n" +"Ðапишете „man -k“ или „info“ за повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° командите извън " +"ÑпиÑъка.\n" +"\n" +"Знакът звездичка „*“ до името на команда означава, че Ñ‚Ñ Ðµ изключена.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "не може да Ñе ползва едновременно повече от една от опциите „-anrw“" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð² иÑториÑта" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: грешна дата Ñ Ð²Ñ€ÐµÐ¼Ðµ" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: неуÑпешно замеÑтване чрез иÑториÑта" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: неуÑпешно извикване на inlib" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "не е позволена друга Ð¾Ð¿Ñ†Ð¸Ñ Ñ â€ž-x“" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: аргументите трÑбва да Ñа идентификатори на процеÑи или задачи" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "ÐеизвеÑтна грешка" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "очаква Ñе израз" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: не е маÑив" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: грешно указване на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: грешен файлов деÑкриптор: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: грешен номер на ред" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: грешен начален Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° маÑив" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: грешно количеÑтво редове за обработка" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "празно име на променлива за маÑив" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "изиÑква Ñе поддръжка на променливи за маÑиви" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "„%s“: липÑва форматиращ знак" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "„%c“: грешен формат на времето" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%c“: грешен форматиращ знак" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "предупреждение: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "неуÑпешен анализ на форма̀та: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "липÑва шеÑтнадеÑетична цифра за \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "липÑва цифра за Уникод за \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "нÑма друга директориÑ" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: грешен аргумент" + +#: builtins/pushd.def:480 +msgid "" +msgstr "«нÑма текуща директориÑ»" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "Ñтекът Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸ е празен" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° Ñтека Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Извежда ÑпиÑъка Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¾ запомнените директории. СпиÑъкът Ñе попълва чрез\n" +" командата „pushd“. Можете да вадите директории от ÑпиÑъка Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð°\n" +" „popd“.\n" +" \n" +" Опции:\n" +" -c изчиÑтва Ñтека на директориите като изтрива вÑички елементи.\n" +" -l кара командата „dirs“ да извежда пълните имена на директориите,\n" +" а не Ñъкратените ÑÑŠÑ Ñ‚Ð¸Ð»Ð´Ð° „~“.\n" +" -p поредово отпечатване на Ñтека на директориите.\n" +" -v поредово отпечатване на Ñтека на директориите заедно Ñ Ð½Ð¾Ð¼ÐµÑ€Ð° в\n" +" Ñтека.\n" +" \n" +" Ðргументи: \n" +" +N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отлÑво в ÑпиÑъка отпечатан от командата " +"„dirs“,\n" +" когато е Ñтартирана без опции. Брои Ñе от 0.\n" +" \n" +" -N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отдÑÑно в ÑпиÑъка отпечатан от командата " +"„dirs“,\n" +" когато е Ñтартирана без опции. Брои Ñе от 0." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Ð”Ð¾Ð±Ð°Ð²Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð² Ñтека на директориите или превърта Ñтека\n" +" като най-горна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñтава текущата директориÑ. Без\n" +" аргументи ÑÐ¼ÐµÐ½Ñ Ð½Ð°Ð¹-горните две директории.\n" +" \n" +" Опции:\n" +" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ добавÑнето " +"на\n" +" директории към Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n" +" \n" +" Ðргументи:\n" +" +N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от " +"лÑвата\n" +" Ñтрана на ÑпиÑъка, отпечатан от командата „dirs“ като Ñе почва от " +"0)\n" +" да е най-отгоре.\n" +" \n" +" -N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от " +"дÑÑната\n" +" Ñтрана на ÑпиÑъка, отпечатан от командата „dirs“ като Ñе почва от " +"0)\n" +" да е най-отгоре.\n" +" \n" +" dir Ð”Ð¾Ð±Ð°Ð²Ñ Ð”Ð˜Ð  най-отгоре в Ñтека на директориите, като Ñ Ð¿Ñ€Ð°Ð²Ð¸ " +"новата\n" +" текуща работна директориÑ.\n" +" \n" +" Можете да изведете Ñтека на директориÑта Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Маха директории от Ñтека Ñ Ñ‚ÑÑ…. Без аргументи премахва поÑледната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ " +"в\n" +" Ñтека и влиза в новата поÑледна директориÑ.\n" +" \n" +" Опции:\n" +" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ махането " +"на\n" +" Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¾Ñ‚ Ñтека — Ñамо той Ñе променÑ.\n" +" \n" +" Ðргументи:\n" +" +N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отлÑво в ÑпиÑъка отпечатан от\n" +" командата „dirs“, като Ñе брои от 0. Ðапр.: „popd +0“ премахва\n" +" първата директориÑ, „popd +1“ - втората.\n" +" \n" +" -N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отдÑÑно в ÑпиÑъка отпечатан " +"от\n" +" командата „dirs“, като Ñе брои от 0. Ðапр.: „popd -0“ премахва\n" +" поÑледната директориÑ, „popd -1“ - предпоÑледната.\n" +" \n" +" Можете да изведете Ñтека на директориÑта Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: грешно указване на изтичането на времето" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "грешка при четене: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"„return“ е възможен Ñамо от Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ изпълнен в текущата обвивка Ñкрипт" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" +"не може едновременно да Ñе премахват задаваниÑта на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸ променлива" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: не е променлива за маÑив" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: не е функциÑ" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: не може да Ñе изнеÑе" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "брой на премеÑтваниÑта" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "" +"не може едновременно да Ñе задават и да Ñе премахват опции на обвивката" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: грешно име на Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° обвивката" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "изиÑква Ñе аргумент име на файл" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: файлът не е открит" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "не може да бъде временно ÑпрÑна" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "входната обвивка не може да бъде временно ÑпрÑна" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s е Ñиноним на „%s“\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s е ключова дума на обвивката\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s е функциÑ\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s е Ñпециална, вградена команда в обвивката\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s е вградена команда в обвивката\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s е %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s е хеширан (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: грешен аргумент за ограничение" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "„%c“: грешна команда" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: ограничението не може да бъде получено: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "ограничение" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: ограничението не може да бъде променено: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "оÑмично чиÑло" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%c“: неправилен оператор за опиÑателен режим" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%c“: неправилен знак за опиÑателен режим" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " ред " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "поÑледна команда: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "ПреуÑтановÑване…" + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "ИÐФОРМÐЦИЯ: " + +#: error.c:462 +msgid "unknown command error" +msgstr "неизвеÑтна грешка в команда" + +#: error.c:463 +msgid "bad command type" +msgstr "грешен вид команда" + +#: error.c:464 +msgid "bad connector" +msgstr "грешна връзка" + +#: error.c:465 +msgid "bad jump" +msgstr "грешен преход" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: променлива без ÑтойноÑÑ‚" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" +"\aвремето за изчакване на вход изтече: Ñледва автоматично излизане от " +"ÑиÑтемата\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "ÑтандартниÑÑ‚ вход не може да бъде пренаÑочен от „/dev/null“: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "в променливата $TIMEFORMAT: „%c“: грешен форматиращ знак" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: копроцеÑÑŠÑ‚ [%d:%s] вÑе още ÑъщеÑтвува" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "грешка в програмен канал" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: превишено е макÑималното ниво на влагане на „eval“ (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: превишено е макÑималното ниво на влагане на код (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: превишено е макÑималното ниво на влагане на функции (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" +"%s: ограничение: в имената на командите не може да приÑÑŠÑтва знакът „/“" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: командата не е открита" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: лош интерпретатор" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: двоичниÑÑ‚ файл не може да бъде изпълнен: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "„%s“ е вградена команда в обвивката" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "файловиÑÑ‚ деÑкриптор %d не може да Ñе дублира като деÑкриптор %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "макÑималниÑÑ‚ брой нива за рекурÑÐ¸Ñ Ð² израз бÑха преминати" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "отрицателно препълване на Ñтека за рекурÑии" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "Ñинтактична грешка в израз" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "опит за приÑвоÑване на ÑтойноÑÑ‚ на нещо, което не е променлива" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "Ñинтактична грешка при приÑвоÑване на променлива" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "деление на 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "програмна грешка: неправилна лекÑема за приÑвоÑване на израз" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "за уÑловен израз Ñе изиÑква „:“" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "Ñтепента е по-малка от 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "очаква Ñе идентификатор Ñлед предварително увеличаване или намалÑване" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "липÑва „)“" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "Ñинтактична грешка: очаква Ñе оператор" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "Ñинтактична грешка: грешен аритметичен оператор" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (грешната лекÑема е „%s“)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "грешна аритметична оÑнова на бройна ÑиÑтема" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: грешен номер на ред" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "ÑтойноÑтта е прекалено голÑма за оÑновата" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: грешка в израза\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: нÑма доÑтъп до родителÑките директории" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "не може да Ñе изчиÑти режимът без забавÑне на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"не може да Ñе задели нов файлов деÑкриптор за вход на bash от деÑкриптор %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" +"запазване на входа на bash: вече ÑъщеÑтвува буфер за Ð½Ð¾Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² деÑкриптор " +"%d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "" +"Ñтартиране на програмен канал: не може да Ñе комуникира Ñ Ð²Ð¾Ð´Ð°Ñ‡Ð° на канала\n" +"(pgrp pipe)" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "ÑтартираниÑÑ‚ Ð¿Ñ€Ð¾Ñ†ÐµÑ %d е в изпълнÑваната задача %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "изтриване на ÑпрÑната задача %d в групата процеÑи %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "добавÑне на процеÑ: процеÑÑŠÑ‚ %5ld (%s) е отбелÑзан като още жив" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "" +"опиÑателен идентификатор на процеÑ: %ld: нÑма такъв идентификатор на процеÑ" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Сигнал %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Завършен" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "СпрÑн" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "СпрÑн (%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "ИзпълнÑван" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Завършен (%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Изход %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Ðепознато ÑÑŠÑтоÑние" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(паметта е разтоварена)" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "дъщерниÑÑ‚ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñмени групата при изпълнение (от %ld на %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "изчакване: процеÑÑŠÑ‚ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %ld не е дъщерен на тази обвивка" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "изчакване: липÑват данни за Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "изчакване на задача: задачата %d е ÑпрÑна" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: нÑма такава задача" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: задачата е приключила" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: задача %d вече е във фонов режим" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" +"изчакване на дъщерен процеÑ: включване на незабавното излизане от функциÑта\n" +"чрез WNOHANG, за да Ñе избегне недефиниран блок" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: ред %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (паметта е разтоварена)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(работната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ðµ: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: неуÑпешно изпълнение на getpgrp" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "" +"Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: нÑма управление на задачите във фонов " +"режим" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: диÑциплина на линиÑта" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "" +"Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: задаване на група при изпълнение " +"(setpgid)" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "групата на процеÑите на терминала не може да бъде зададена (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "в тази обвивка нÑма управление на задачите" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "заделÑне на памет: грешно предположение: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"заделÑне на памет: %s:%d: предположението е отпечатано\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "непознат" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "" +"заделÑне на памет: блок в ÑпиÑъка ÑÑŠÑ Ñвободни блокове е зает или неподходÑщ" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "" +"изчиÑтване на памет: извикано е Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² аргумент, който вече е изчиÑтен" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "изчиÑтване на памет: извикано е Ñ Ð½ÐµÐ·Ð°Ð´ÐµÐ»ÐµÐ½ блоков аргумент" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" +"изчиÑтване на памет: открито е отрицателно препълване Ñ mh_nbytes извън\n" +"допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "" +"изчиÑтване на памет: открито е отрицателно препълване Ñ mh_nbytes извън\n" +"допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "" +"изчиÑтване на памет: къÑовете на началната и крайната облаÑти Ñе различават" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "презаделÑне: извикано е Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ñ Ð½ÐµÐ·Ð°Ð´ÐµÐ»ÐµÐ½ блок" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" +"презаделÑне: открито е отрицателно препълване Ñ mh_nbytes извън допуÑтимиÑ\n" +"диапазон" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "" +"презаделÑне: открито е отрицателно препълване Ñ mh_nbytes извън допуÑтимиÑ\n" +"диапазон" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "презаделÑне: къÑовете на началната и крайната облаÑти Ñе различават" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" +"региÑтриране на презаделÑне: таблицата за заделÑниÑта е пълна Ñ FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "региÑтриране на презаделÑне: %p вече е в таблицата като заделен?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "региÑтриране на Ñвободни: %p вече е в таблицата като Ñвободен?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "грешна оÑнова на бройна ÑиÑтема" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: непознат хоÑÑ‚" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: неправилна уÑлуга" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: неправилно указан мрежов път" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "не Ñе поддържат мрежови операции" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: локалът не може да бъде Ñменен (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: локалът не може да бъде Ñменен (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: локалът не може да бъде Ñменен (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: локалът не може да бъде Ñменен (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Имате поща в $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Имате нова поща в $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Пощата в %s вече е прочетена\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "Ñинтактична грешка: изиÑква Ñе аритметичен израз" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "Ñинтактична грешка: неочакван знак „;“" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "Ñинтактична грешка: „((%s))“" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "вътрешен документ Ñ â€ž<<“: неправилен вид инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"вътрешниÑÑ‚ документ на ред %d е отделен ÑÑŠÑ Ð·Ð½Ð°Ðº за нов ред (а трÑбва да е " +"„%s“)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"пренаÑочване: инÑтрукциÑта за пренаÑочване „%d“ е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) надвишава SIZE_MAX (%lu): редът е " +"отрÑзан" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "превишен е макÑималниÑÑ‚ брой възможни вътрешни документи" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" +"неочакван знак за край на файл „EOF“, а Ñе очакваше ÑъответÑтващ знак „%c“" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "неочакван знак за край на файл „EOF“, а Ñе очакваше „]]“" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "Ñинтактична грешка в уÑловен израз: неочаквана лекÑема „%s“" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "Ñинтактична грешка в уÑловен израз" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "неочаквана лекÑема „%s“, а Ñе очакваше знакът „)“" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "очакваше Ñе „)“" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "неочакван аргумент „%s“ за унарен уÑловен оператор" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "неочакван аргумент за унарен уÑловен оператор" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "неочаквана лекÑема „%s“, очакваше Ñе бинарен уÑловен оператор" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "очакваше Ñе бинарен уÑловен оператор" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "неочакван аргумент „%s“ за бинарен уÑловен оператор" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "неочакван аргумент за бинарен уÑловен оператор" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "неочаквана лекÑема „%c“ в уÑловна команда" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "неочаквана лекÑема „%s“ в уÑловна команда" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "неочаквана лекÑема %d в уÑловна команда" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "Ñинтактична грешка в близоÑÑ‚ до неочакваната лекÑема „%s“" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "Ñинтактична грешка в близоÑÑ‚ до „%s“" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "Ñинтактична грешка: неочакван край на файл" + +#: parse.y:6365 +msgid "syntax error" +msgstr "Ñинтактична грешка" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Използвайте „%s“, за да излезете от обвивката.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "неочакван знак за край на файл „EOF“, очакваше Ñе знакът „)“" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "допиÑване: функциÑта „%s“ не е открита" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: възможно зациклÑне на повторните опити" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" +"вмъкване на завършване на команда: %s указване на команда, което е NULL" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "команда за печат: лош конектор „%d“" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: грешен файлов деÑкриптор" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: указател към файл – NULL" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "отпечатване: „%c“: неправилен форматиращ знак" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "файловиÑÑ‚ деÑкриптор е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: двуÑмиÑлено пренаÑочване" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: не може да Ñе презапише ÑъщеÑтвуващ файл" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: поради ограничение изходът не може да Ñе пренаÑочи" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "не може да Ñе Ñъздаде временен файл за вътрешен документ: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: на променлива не може да Ñе приÑвои файлов деÑкриптор" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" +"„/dev/(tcp|udp)/host/port“ не Ñе поддържат, ако нÑма поддръжка на мрежа" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "грешка при пренаÑочване: файловиÑÑ‚ деÑкриптор не може да бъде дублиран" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "не е открита директориÑта „/tmp“. Създайте Ñ!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "„/tmp“ трÑбва да е директориÑ" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "режимът за краÑив изход Ñе игнорира при интерактивна работа" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: неправилна опциÑ" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" +"идентификаторът на потребител на процеÑа не може да Ñе зададе да е %d,\n" +"ефективниÑÑ‚ идентификатор на потребител на процеÑа е %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" +"идентификаторът на група на процеÑа не може да Ñе зададе да е %d,\n" +"ефективниÑÑ‚ идентификатор на група на процеÑа е %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "режимът на изчиÑтване на грешки е недоÑтъпен, защото е изключен" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: е директориÑ" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Ðе може да Ñе получи името на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, верÑÐ¸Ñ %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Употреба: %s [дълга Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° GNU] [опциÑ]…\n" +" %s [дълга Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° GNU] [опциÑ] файл-Ñкрипт…\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Дълги опции на GNU:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Опции на обвивката:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" +" -ilrsD или -c команда, или -O къÑа_Ð¾Ð¿Ñ†Ð¸Ñ (Ñамо при Ñтартиране)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr " -%s или -o опциÑ\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° опциите на обвивката въведете „%s -c \"help set\"“.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вградените в обвивката команди въведете „%s -c " +"help“.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "За да докладвате грешки, използвайте командата „bashbug“.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "Интернет Ñтраница на bash: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Обща помощ за програмите на GNU: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "маÑка за обработката на Ñигнали: %d: грешна операциÑ" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Фалшив Ñигнал" + +#: siglist.c:50 +msgid "Hangup" +msgstr "ПрекъÑване на връзката" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "ПрекъÑване" + +#: siglist.c:58 +msgid "Quit" +msgstr "Спиране" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Ðеправилна инÑтрукциÑ" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "Капан за авариен изход чрез BPT" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð·Ð° прекратÑване" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "Капан Ñ EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Изключение от плаваща запетаÑ" + +#: siglist.c:86 +msgid "Killed" +msgstr "Убит" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Грешка в шината" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Грешка в разделÑнето" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Грешно ÑиÑтемно извикване" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "ПрекъÑнат програмен канал" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Ðларма" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Прекратен" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Спешно вх./изх. ÑÑŠÑтоÑние" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "СпрÑн (Ñигнал)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Продължаване" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Смърт или Ñпиране на дъщерен процеÑ" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Спиране (вход от tty)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Спиране (изход към tty)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "ГотовноÑÑ‚ за вх./изх." + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Ограничение на процеÑора" + +#: siglist.c:154 +msgid "File limit" +msgstr "Ограничение на файловете" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Ðларма (виртуална)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Ðларма (по профил)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Преоразмерен прозорец" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Заключен запиÑ" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "ПотребителÑки Ñигнал 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "ПотребителÑки Ñигнал 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "Идват данни по конзола HFT" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "ПредÑтои Ñпиране на захранването" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "ПредÑтои забиване на ÑиÑтемата" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "ПремеÑтване на процеÑа на друг процеÑор" + +#: siglist.c:198 +msgid "programming error" +msgstr "Програмна грешка" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "Дадено право за управление чрез конзола HFT" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "Отнето право за управление чрез конзола HFT" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "Завършена звукова поредица през HFT" + +#: siglist.c:214 +msgid "Information request" +msgstr "ЗаÑвка за информациÑ" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Ðепознат Ñигнал #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "лошо замеÑтване: липÑва затварÑщ знак „%s“ в %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: на член от маÑив не може да Ñе приÑвои ÑпиÑък" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "не може да Ñе Ñъздаде програмен канал за замеÑтване на процеÑи" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "не може да Ñе Ñъздаде дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° замеÑтване на процеÑи" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "именуваниÑÑ‚ програмен канал %s не може да Ñе отвори за четене" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "именуваниÑÑ‚ програмен канал %s не може да Ñе отвори за запиÑ" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" +"именуваниÑÑ‚ програмен канал %s не може да Ñе\n" +"дублира като Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "замеÑтване на команди: знакът „null“ във входа е преÑкочен" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "не може да Ñе Ñъздаде програмен канал за замеÑтване на команди" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "не може да Ñе Ñъздаде дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° замеÑтване на команди" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "замеÑтване на команди: каналът не може да Ñе дублира като fd 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: неправилно име за променлива-указател" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: грешно непрÑко замеÑтване" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "„%s“: грешно име на променлива" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: аргументът не е зададен" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: аргументът е „null“ или не е зададен" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: изразът от подниза е < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: лошо замеÑтване" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: не може да Ñе задава по този начин" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"бъдещите верÑии на обвивката ще използват изчиÑлÑване като аритметично\n" +"замеÑтване" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "лошо замеÑтване: липÑва затварÑщ знак „`“ в %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "нÑма Ñъвпадение: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "очаква Ñе аргумент" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: очаква Ñе целочиÑлен израз" + +#: test.c:265 +msgid "`)' expected" +msgstr "очаква Ñе „)“" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "очаква Ñе „)“, а е получено %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: очаква Ñе бинарен оператор" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: очаква Ñе унарен оператор" + +#: test.c:881 +msgid "missing `]'" +msgstr "липÑва „]“" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "Ñинтактична грешка: неочакван знак „;“" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "неправилен номер на Ñигнал" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: превишено е макÑималното ниво на влагане на „eval“ (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" +"Ñтартиране на предÑтоÑщите прихващаниÑ: неправилна ÑтойноÑÑ‚ в\n" +"trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"Ñтартиране на предÑтоÑщите прихващаниÑ: обработката на Ñигнали е SIG_DFL.\n" +"%d (%s) е преизпратен на текущата обвивка" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "обработка на прихващаниÑ: неправилен Ñигнал %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "грешка при внаÑÑнето на дефинициÑта на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° „%s“" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "нивото на обвивката (%d) е прекалено голÑмо. Задава Ñе да е 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "" +"Ñъздаване на локална променлива: липÑва контекÑÑ‚ на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð² текущата " +"облаÑÑ‚\n" +"на видимоÑÑ‚" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: на тази променлива не може да Ñе приÑвои ÑтойноÑÑ‚" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: приÑвоÑване на чиÑло на променлива-указател" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "" +"вÑички локални променливи: липÑва контекÑÑ‚ на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð² текущата облаÑÑ‚ на\n" +"видимоÑÑ‚" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s: аргументът за низа за изнаÑÑне не трÑбва да е „null“" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "неправилен знак на Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ %d в низа за изнаÑÑне за %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "липÑва „=“ в низа за изнаÑÑне за %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"изваждане на контекÑÑ‚ на променливи: в началото на Ñтруктурата за променливи " +"на\n" +"обвивката (shell_variables) е нещо, което не е контекÑÑ‚ на функциÑ" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "" +"изваждане на контекÑÑ‚ на променливи: липÑва контекÑÑ‚ за глобални променливи\n" +"(global_variables)" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"изваждане на облаÑÑ‚: в началото на Ñтруктурата за променливи на обвивката\n" +"(shell_variables) е нещо, което не е временна облаÑÑ‚ в обкръжението" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s не може да Ñе отвори като ФÐЙЛ" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: грешен файлов деÑкриптор за файла за траÑиране" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "ÐвторÑки права © 2018 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Лиценз GPLv3+: ОПЛ на GNU, верÑÐ¸Ñ 3 или по-виÑока \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, верÑÐ¸Ñ %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Това е Ñвободен Ñофтуер. Можете да го променÑте и разпроÑтранÑвате." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "ÐÑма ÐИКÐКВИ ГÐРÐÐЦИИ до Ñтепента позволена от закона." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: не могат да Ñе заделÑÑ‚ %lu байта (заделени Ñа %lu байта)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: не могат да Ñе заделÑÑ‚ %lu байта" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: не могат да Ñе заделÑÑ‚ %lu байта (заделени Ñа %lu байта)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: не могат да Ñе заделÑÑ‚ %lu байта" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [ИМЕ[=СТОЙÐОСТ]…]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] ИМЕ [ИМЕ…]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m ПОДРЕДБÐ_ÐÐ_КЛÐВИÐТУРÐТÐ] [-f ИМЕ_ÐÐ_ФÐЙЛ]\n" +" [-q ИМЕ] [-u ИМЕ] [-r ПОСЛЕДОВÐТЕЛÐОСТ_ОТ_КЛÐВИШИ]\n" +" [-x ПОСЛЕДОВÐТЕЛÐОСТ_ОТ_КЛÐВИШИ:КОМÐÐДÐ_ÐÐ_ОБВИВКÐТÐ]\n" +" [ПОСЛЕДОВÐТЕЛÐОСТ_ОТ_КЛÐВИШИ:КОМÐÐДÐ_ÐÐ_ОБВИВКÐТРили " +"КОМÐÐДÐ_ÐÐ_READLINE]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [БРОЙ]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [БРОЙ]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [ВГРÐДЕÐÐ_КОМÐÐДР[ÐРГУМЕÐТ…]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [ИЗРÐЗ]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [ДИРЕКТОРИЯ]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] команда [ÐРГУМЕÐТ…]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [ИМЕ[=СТОЙÐОСТ]…]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] ИМЕ[=СТОЙÐОСТ]…" + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [ОПЦИЯ] ИМЕ[=СТОЙÐОСТ]…" + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [ÐРГУМЕÐТ…]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [ÐРГУМЕÐТ…]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f ФÐЙЛ] [ÐРГУМЕÐТ…]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [ÐРГУМЕÐТ…]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts ÐИЗ_С_ОПЦИИ ИМЕ [ÐРГУМЕÐТ]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a ИМЕ] [КОМÐÐДР[ÐРГУМЕÐТИ…]] [ПРЕÐÐСОЧВÐÐЕ…]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [ЦИФРОВ_КОД]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [ЦИФРОВ_КОД]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e РЕДÐКТОР] [-lnr] [ПЪРВИ] [ПОСЛЕДЕÐ] или fc -s [ШÐБЛОÐ=ЗÐМЕСТИТЕЛ…] " +"[КОМÐÐДÐ]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [ЗÐДÐЧÐ]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [ЗÐДÐЧÐ…]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p ПЪТ] [-dt] [ИМЕ…]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [ШÐБЛОÐ…]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d ОТМЕСТВÐÐЕ] [БРОЙ] или \n" +"history -anrw [ИМЕ_ÐÐ_ФÐЙЛ] или\n" +"history -ps ÐРГ [ÐРГ…]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [ИД_ЗÐДÐЧÐ…] или jobs -x КОМÐÐДР[ÐРГУМЕÐТИ]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [ИД_ЗÐДÐЧÐ… | ИД_ПРОЦЕС…]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s СИГÐÐЛ | -n ÐОМЕР_ÐÐ_СИГÐÐЛ | -СИГÐÐЛ] ИД_ПРОЦЕС | ИД_ЗÐДÐЧÐ…\n" +"или\n" +"kill -l [СИГÐÐЛ]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let ÐРГУМЕÐТ [ÐРГУМЕÐТ…]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a МÐСИВ] [-d РÐЗДЕЛИТЕЛ] [-i ТЕКСТ] [-n БРОЙ_ЗÐÐЦИ]\n" +" [-N БРОЙ_ЗÐÐЦИ] [-p ПОДСКÐЗКÐ] [-t БРОЙ_ЗÐÐЦИ] [-u ФÐЙЛОВ_ДЕСКРИПТОР]\n" +" [ИМЕ…]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [ЦИФРОВ_КОД]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o ОПЦИЯ] [--] [ÐРГУМЕÐТИ…]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [ИМЕ…]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [ИМЕ[=СТОЙÐОСТ]…] или export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [ИМЕ[=СТОЙÐОСТ]…] или readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [БРОЙ]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source ФÐЙЛ [ÐРГУМЕÐТИ]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". ФÐЙЛ [аргументи]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [ИЗРÐЗ]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ ÐРГУМЕÐТ…]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[ÐРГУМЕÐТ] СИГÐÐЛ…]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] ИМЕ [ИМЕ…]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ОГРÐÐИЧЕÐИЕ]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [МÐСКÐ]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [ИД…]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [ИД_ПР…]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for ИМЕ [in ДУМИ…] ; do КОМÐÐДИ; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( ИЗРÐЗ_1; ИЗРÐЗ_2; ИЗРÐЗ_3 )); do КОМÐÐДИ; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select ИМЕ [in ДУМИ…;] do КОМÐÐДИ; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] ПРОГРÐМЕÐ_КÐÐÐЛ" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case ДУМРin [ШÐБЛОР[| ШÐБЛОÐ]…) КОМÐÐДИ ;;]… esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if КОМÐÐДИ; then КОМÐÐДИ; [ elif КОМÐÐДИ; then КОМÐÐДИ; ]… [ else КОМÐÐДИ; ] " +"fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while КОМÐÐДИ; do КОМÐÐДИ; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until КОМÐÐДИ; do КОМÐÐДИ; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [ИМЕ] КОМÐÐДР[ПРЕÐÐСОЧВÐÐИЯ]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function name { КОМÐÐДИ ; } или name () { КОМÐÐДИ ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ КОМÐÐДИ ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "%ЗÐДÐЧР[&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( ИЗРÐЗ ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ ИЗРÐЗ ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables имена и значение на нÑкои от променливите на обвивката" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | ДИР]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [ОПЦИЯ…]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v ПРОМЕÐЛИВÐ] ФОРМÐТ [ÐРГУМЕÐТИ]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o ОПЦИЯ] [-A ДЕЙСТВИЕ]\n" +" [-G ШÐБЛОÐ] [-W ДУМИ] [-F ФУÐКЦИЯ] [-C КОМÐÐДÐ] [-X ФИЛТЪР]\n" +" [-P ПРЕДСТÐВКÐ] [-S ÐÐСТÐВКÐ] [ИМЕ…]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o ОПЦИЯ] [-A ДЕЙСТВИЕ] [-G ШÐБЛОÐ]\n" +" [-W ДУМИ] [-F ФУÐКЦИЯ] [-C КОМÐÐДÐ] [-X ФИЛТЪР] [-P ПРЕДСТÐВКÐ]\n" +" [-S ÐÐСТÐВКÐ] [ДУМÐ]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o ОПЦИЯ] [-DEI] [ИМЕ…]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d РÐЗДЕЛИТЕЛ] [-n БРОЙ] [-O ÐÐЧÐЛО] [-s БРОЙ] [-t]\n" +" [-u ФÐЙЛ_ДЕСКР] [-C ФУÐКЦИЯ] [-c КВÐÐТ] [МÐСИВ]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d РÐЗДЕЛИТЕЛ] [-n БРОЙ] [-O ÐÐЧÐЛО] [-s БРОЙ] [-t]\n" +" [-u ФÐЙЛ_ДЕСКР] [-C ФУÐКЦИЯ] [-c КВÐÐТ] [МÐСИВ]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Дефиниране или извеждане на Ñиноними.\n" +" \n" +" „alias“ без аргументи или Ñ Ð¾Ð¿Ñ†Ð¸Ñта „-p“ отпечатва ÑпиÑъка ÑÑŠÑ\n" +" Ñинонимите във формат „ИМЕ=СТОЙÐОСТ“ на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n" +" \n" +" Ð’ противен Ñлучай за вÑÑко ИМЕ, за което е зададена ÑтойноÑÑ‚, Ñе\n" +" дефинира Ñиноним. Интервал в ÐºÑ€Ð°Ñ Ð½Ð° СТОЙÐОСТ-та предизвиква Ñинонимно\n" +" замеÑтване на Ñледващата дума при замеÑтването на Ñинонима.\n" +" \n" +" Опции:\n" +" -p Извежда вÑички Ñиноними във формат за поÑледващо използване\n" +" \n" +" Изходен код:\n" +" alias връща 0, оÑвен в Ñлучаите, когато Ñе зададе ИМЕ, за което\n" +" не е дефиниран Ñиноним." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Премахване на ИМЕната от ÑпиÑъка Ñ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð¸Ñ‚Ðµ Ñиноними.\n" +" \n" +" Опции:\n" +" -a премахване на вÑички Ñиноними.\n" +" \n" +" Изходен код:\n" +" Връща 0, оÑвен в Ñлучаите, когато Ñе зададе ИМЕ, за което\n" +" не е дефиниран Ñиноним." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Задаване на клавишни комбинации и променливи на readline.\n" +" \n" +" ПриÑвоÑване на поÑледователноÑÑ‚ от клавиши на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ Ð¼Ð°ÐºÑ€Ð¾Ñ Ð¾Ñ‚\n" +" readline или задаване на променлива на readline. СинтакÑиÑÑŠÑ‚ Ñ\n" +" аргументи без опции е еквивалентен на този във файла „~/.inputrc“, но\n" +" трÑбва да Ñе подаде като единÑтвен аргумент. Ðапр:\n" +" bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Опции:\n" +" -m ПОДРЕДБР\n" +" Използване на ПОДРЕДБÐта като подредба на функциите на " +"клавишите\n" +" докато командата Ñе изпълнÑва. Валидни Ñа Ñледните имена:\n" +" „emacs“, „emacs-standard“, „emacs-meta“, „emacs-ctlx“, „vi“,\n" +" „vi-move“, „vi-command“ и „vi-insert“.\n" +" -l СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на функциите.\n" +" -P СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на функциите и приÑвоÑваниÑта.\n" +" -p СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на функциите и приÑвоÑваниÑта във вид, който " +"може\n" +" да Ñе използва за вход.\n" +" -S СпиÑък Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ½Ð¸Ñ‚Ðµ поÑледователноÑти, които извикват макроÑи " +"и\n" +" ÑтойноÑтите им.\n" +" -s СпиÑък Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ½Ð¸Ñ‚Ðµ поÑледователноÑти, които извикват макроÑи " +"и\n" +" ÑтойноÑтите им във вид, който може да Ñе използва за вход.\n" +" -V СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на променливите и ÑтойноÑтите им.\n" +" -v СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на променливите и ÑтойноÑтите им във вид, " +"който\n" +" може да Ñе използва за вход.\n" +" -q ИМЕ_ÐÐ_ФУÐКЦИЯ\n" +" Проверка кои клавиши извикват функциÑта Ñ Ñ‚Ð¾Ð²Ð° име.\n" +" -u ИМЕ_ÐÐ_ФУÐКЦИЯ\n" +" Премахване на приÑвоÑваниÑта към вÑички клавиши на функциÑта " +"Ñ\n" +" това име.\n" +" -r КЛÐВИШÐÐ_ПОСЛЕДОВÐТЕЛÐОСТ\n" +" Премахване на приÑвоената Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ñ‚ " +"КЛÐВИШÐÐта_ПОСЛЕДОВÐТЕЛÐОСТ.\n" +" -f ФÐЙЛ\n" +" Прочитане на приÑвоÑваниÑта на клавиши от ФÐЙЛа.\n" +" -x КЛÐВИШÐÐ_ПОСЛЕДОВÐТЕЛÐОСТ:КОМÐÐДÐ_ÐÐ_ОБВИВКÐТÐ\n" +" Изпълнение на КОМÐÐДÐта_ÐÐ_ОБВИВКÐТРпри въвеждането на\n" +" КЛÐВИШÐÐта_ПОСЛЕДОВÐТЕЛÐОСТ.\n" +" -X Извеждане на клавишните комбинации зададени Ñ â€ž-x“ и Ñвързаните Ñ " +"Ñ‚ÑÑ…\n" +" команди във форма, коÑто може да Ñе ползва и за вход\n" +" \n" +" Изходен код:\n" +" bind връща 0, оÑвен когато е зададена непозната Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне " +"грешка." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Изход от цикли чрез „for“, „while“ или „until“.\n" +" \n" +" Изход от цикли организирани чрез „for“, „while“ или „until“. Ðко е " +"зададен\n" +" БРОЙ Ñе излиза от толкова на БРОЙ обхващащи цикли.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е зададен БРОЙ, който е по-малък от 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Продължаване на цикъл чрез „for“, „while“ или „until“.\n" +" \n" +" Продължаване ÑÑŠÑ Ñледващата Ð¸Ñ‚ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ цикъл, организиран Ñ â€žfor“, " +"„while“\n" +" или „until“. Ðко е зададен БРОЙ, Ñе продължава ÑÑŠÑ Ñледващата " +"итерациÑ\n" +" на Ð¾Ð±Ñ…Ð²Ð°Ñ‰Ð°Ñ‰Ð¸Ñ Ñ†Ð¸ÐºÑŠÐ» зададен Ñ Ñ‚Ð¾Ð·Ð¸ БРОЙ.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е зададен БРОЙ, който е по-малък от 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Изпълнение на вградени команди.\n" +" \n" +" Изпълнение на ВГРÐДЕÐÐта_КОМÐÐÐ”Ð Ñ ÐРГУМЕÐТи, без да Ñе търÑи нормална\n" +" команда. Това е полезно в Ñлучаите, когато иÑкате да Ñъздадете " +"вградена\n" +" команда като Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката, но във функциÑта иÑкате да изпълните\n" +" вградената команда.\n" +" \n" +" Изходен код:\n" +" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на ВГРÐДЕÐÐта_КОМÐÐДРили лъжа, ако извиканата \n" +" ВГРÐДЕÐÐ_КОМÐÐДРвÑъщноÑÑ‚ не е вградена команда." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Връщане на контекÑта на текущото извикване на подпрограма.\n" +" \n" +" Без ИЗРÐЗ връща „$line $filename“. С ИЗРÐЗ връща\n" +" „$line $subroutine $filename“. Допълнителната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶Ðµ да Ñе\n" +" използва за получаване на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ÑÑŠÑтоÑнието на Ñтека.\n" +" \n" +" СтойноÑтта на ИЗРÐЗа показва за колко рамки ÑпрÑмо текущата да Ñе " +"изведе\n" +" информациÑ. Ðай-горната рамка е 0.\n" +" \n" +" Изходен код:\n" +" Връща 0, оÑвен ако обвивката изпълнÑва Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð° в обвивката " +"или\n" +" ИЗРÐЗът е грешен." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"СмÑна на работната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° обвивката.\n" +" \n" +" СмÑна на текущата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð´Ð° е ДИРЕКТОРИЯ. Променливата „HOME“ е\n" +" Ñтандартната директориÑ.\n" +" \n" +" Променливата „CDPATH“ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð¿ÑŠÑ‚Ñ Ð·Ð° търÑене на директории, които " +"могат да\n" +" Ñъдържат ДИРЕКТОРИЯта. Директориите в „CDPATH“ Ñа разделени Ñ â€ž:“. \n" +" ЛипÑващо име на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð° текущата директориÑ, Ñ‚.е. „.“. Ðко " +"името\n" +" на ДИРЕКТОРИЯта започва Ñ Ð½Ð°ÐºÐ»Ð¾Ð½ÐµÐ½Ð° черта „/“, „CDPATH“ не Ñе ползва.\n" +" \n" +" Ðко директориÑта не е открита, но е зададена опциÑта на обвивката\n" +" „cdable_vars“, то думата Ñе пробва като име на променлива. Ðко " +"променливата\n" +" има ÑтойноÑÑ‚, то директориÑта Ñе ÑÐ¼ÐµÐ½Ñ ÐºÑŠÐ¼ ÑтойноÑтта на тази " +"променлива.\n" +" \n" +" Опции:\n" +" -L налага Ñледването на Ñимволните връзки. Символните връзки в\n" +" ДИРЕКТОРИЯта Ñе обработват Ñлед указателите към горна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ " +"„..“.\n" +" -P налага използването на фактичеÑката подредба на директориите, " +"вмеÑто\n" +" да Ñе Ñледват Ñимволните връзки. Символните връзки в ДИРЕКТОРИЯта " +"Ñе\n" +" обработват Ñлед указателите към горна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž..“.\n" +" -e ако е използвана опциÑта „-P“ и текущата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ðµ може да " +"бъде\n" +" определена, командата завършва Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ² изход.\n" +" -@ на ÑиÑтемите Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на разширени атрибути файлът Ñе " +"предÑтавÑ\n" +" като директориÑ, в коÑто Ñа атрибутите.\n" +" \n" +" Стандартно Ñимволните връзки Ñе Ñледват, вÑе едно е зададена опциÑта „-" +"L“\n" +" \n" +" Изходен код:\n" +" Връща 0 при ÑмÑна на директориÑта. Когато е зададена опциÑта „-P“, 0 " +"Ñе\n" +" връща при уÑпешно задаване на променливата „PWD„. Във вÑички оÑтанали\n" +" Ñлучаи изходът е ненулев." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Извеждане на името на текущата работна директориÑ.\n" +" \n" +" Опции:\n" +" -L извежда ÑтойноÑтта на променливата „PWD“, ако Ñ‚Ñ ÑъответÑтва на\n" +" текущата директориÑ\n" +" -P извежда физичеÑката Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð±ÐµÐ· Ñимволни връзки\n" +" \n" +" Стандартно поведението на „pwd“ без аргументи ÑъответÑтва на „-L“.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е подадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ текущата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ðµ може " +"да\n" +" бъде прочетена." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Ðулева команда.\n" +" \n" +" Без ефект — командата нищо не прави.\n" +" \n" +" Изходен код:\n" +" Винаги завършва уÑпешно." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Връщане на уÑпешен резултат.\n" +" \n" +" Изходен код:\n" +" Винаги завършва уÑпешно." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Връщане на неуÑпешен резултат.\n" +" \n" +" Изходен код:\n" +" Винаги завършва неуÑпешно." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Изпълнение на нормална команда или извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° команди.\n" +" \n" +" Изпълнение на КОМÐÐДÐта Ñ ÐРГументи, без Ñ‚Ñ Ð´Ð° Ñе търÑи като Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð°\n" +" обвивката, или извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° указаните КОМÐÐДи. Може да " +"Ñе\n" +" използва за изпълнението на външни команди, дори когато ÑъщеÑтвува " +"функциÑ\n" +" ÑÑŠÑ Ñъщото име.\n" +" \n" +" Опции:\n" +" -p използване на Ñтандартна ÑтойноÑÑ‚ на PATH. Така могат да Ñе " +"откриÑÑ‚\n" +" вÑички Ñтандартни инÑтрументи\n" +" -v извежда опиÑание на КОМÐÐДÐта подобно на вградената команда " +"„type“\n" +" -V извежда по пълно опиÑание на вÑÑка КОМÐÐДÐ\n" +" \n" +" Изходен код:\n" +" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на КОМÐÐДÐта или грешка, ако такава не е открита." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Задаване на ÑтойноÑти на променливите и атрибутите.\n" +" \n" +" Деклариране на променливи и задаване на атрибутите им. Ðко не Ñа " +"дадени\n" +" ИМЕна Ñе изобразÑват атрибутите и ÑтойноÑтите на вÑички променливи.\n" +" \n" +" Опции:\n" +" -f Ограничаване на дейÑтвието или извеждането до имената и " +"дефинициите\n" +" на функциите\n" +" -F Ограничаване на извеждането Ñамо до имената на функциите, заедно " +"Ñ\n" +" номерата на редовете и изходните файлове при изчиÑтване на " +"грешките\n" +" -g Създаване на глобална променлива, когато опциÑта е употребена " +"във\n" +" функциÑ. Ð’ противен Ñлучай Ñе пренебрегва\n" +" -p Извеждане на атрибутите и ÑтойноÑтта на вÑÑко ИМЕ\n" +" \n" +" Опции за задаването на атрибути:\n" +" -a ИМЕната да Ñа на индекÑирани маÑиви (ако Ñе поддържат)\n" +" -A ИМЕната да Ñа аÑоциативни маÑиви (ако Ñе поддържат)\n" +" -i ИМЕната да Ñа Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ „цÑло чиÑло“\n" +" -l При приÑвоÑване на ÑтойноÑÑ‚ Ñ‚Ñ Ð´Ð° Ñе преобразува в малки букви\n" +" -n ИМЕто да е указател към променливата Ñ Ð¸Ð¼Ðµ, което е дадено от\n" +" ÑтойноÑтта\n" +" -r ИМЕната да Ñа Ñамо за четене\n" +" -t ИМЕната да Ñа Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ за траÑиране\n" +" -u При приÑвоÑване на ÑтойноÑÑ‚ Ñ‚Ñ Ð´Ð° Ñе преобразува в главни букви\n" +" -x ИМЕната да Ñе изнаÑÑÑ‚ към Ñредата\n" +" \n" +" При използването на „+“ вмеÑто „-“ атрибутът Ñе изключва.\n" +" \n" +" При приÑвоÑването на ÑтойноÑÑ‚ на променлива ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½ атрибут за цÑло\n" +" чиÑло Ñе извършва аритметично изчиÑлÑване (вижте командата „let“).\n" +" the `let' command).\n" +" \n" +" Когато Ñе използва във функциÑ, командата „declare“ прави ИМЕната " +"локални,\n" +" вÑе едно Ñе изпълнÑва командата „local“. ОпциÑта „-g“ предотвратÑва " +"това\n" +" поведение.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка при " +"задаването\n" +" на ÑтойноÑÑ‚ на променлива." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Задаване на ÑтойноÑÑ‚ и атрибути на променливи.\n" +" \n" +" Синоним на „declare“. Виж „help declare“." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Дефиниране на локални променливи.\n" +" \n" +" Създаване на локална променлива Ñ Ñ‚Ð¾Ð²Ð° ИМЕ и зададената СТОЙÐОСТ. " +"ОПЦИЯта\n" +" може да е вÑÑка приемана от вградената команда „declare“.\n" +" \n" +" Локалните променливи могат да Ñе използват Ñамо във функциÑ. Те Ñа " +"видими\n" +" Ñамо в Ð½ÐµÑ Ð¸ нейните наÑледници.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е зададена неправилна ОПЦИЯ, възникне грешка при задаването " +"на\n" +" ÑтойноÑÑ‚ на променлива, или в момента не Ñе изпълнÑва функциÑ." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Извеждане на аргументите на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n" +" \n" +" Извеждане на ÐРГУМЕÐТите на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ разделени Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»Ð¸ и\n" +" поÑледвани от нов ред.\n" +" \n" +" Опции:\n" +" -n не Ñе извежда знак за нов ред.\n" +" -e включва Ñе интерпретирането на знаците, изброени по-долу, " +"екранирани\n" +" Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð° наклонена черта — „\\“\n" +" -Е изрично Ñе Ñпира интерпретирането на долните знаци\n" +" \n" +" „echo“ поддържа Ñледните екранирани знаци:\n" +" \\a ÑиÑтемен звънец\n" +" \\b триене назад\n" +" \\c пропуÑкане на знака за нов ред\n" +" \\e знак за екраниране\n" +" \\E знак за екраниране\n" +" \\f знак „Завършване на формулÑра“ (form feed)\n" +" \\n знак за нов ред\n" +" \\r знак „Връщане на каретката“ (carriage return)\n" +" \\t хоризонтална табулациÑ\n" +" \\v вертикална табулациÑ\n" +" \\\\ обратно наклонена черта\n" +" \\0nnn\n" +" знакът Ñ ÐºÐ¾Ð´ в ASCII NNN (в оÑмична бройна ÑиÑтема).\n" +" NNN може да Ñе ÑÑŠÑтои от 1 до 3 оÑмични цифри.\n" +" \\xHH\n" +" знакът Ñ ÐºÐ¾Ð´ в ASCII HH (в шеÑтнайÑетична бройна ÑиÑтема).\n" +" HH може да Ñе ÑÑŠÑтои от 1 до 2 шеÑтнайÑетични цифри.\n" +" \\uHHHH\n" +" знакът Ñ ÐºÐ¾Ð´ в Unicode HHHH (в шеÑтнайÑетична бройна ÑиÑтема).\n" +" HHHH може да Ñе ÑÑŠÑтои от 1 до 4 шеÑтнайÑетични цифри.\n" +" \\UHHHHHHHH\n" +" знакът Ñ ÐºÐ¾Ð´ в Unicode HHHHHHHH (в шеÑтнайÑетична бройна " +"ÑиÑтема).\n" +" HHHHHHHH може да Ñе ÑÑŠÑтои от 1 до 8 шеÑтнайÑетични цифри.\n" +" \n" +" Изходен код:\n" +" Връща 0, оÑвен ако не възникне грешка при извеждането." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Извеждане на аргументите на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n" +" \n" +" Извеждане на ÐРГументите на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ поÑледвани от знак за нов " +"ред.\n" +" \n" +" Опции:\n" +" -n без извеждане на знак за нов ред\n" +" \n" +" Изходен код:\n" +" Връща 0, оÑвен ако възникне грешка при извеждането." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Включване и изключване на вградените в обвивката команди.\n" +" \n" +" Включване и изключване на командите вградени в обвивката. Изключването\n" +" позволÑва извикването на външна команда ÑÑŠÑ Ñъщото име като вградена " +"без\n" +" използването на пълното име Ñ Ð¿ÑŠÑ‚Ñ.\n" +" \n" +" Опции:\n" +" -a Извеждане на ÑпиÑъка Ñ Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð¸Ñ‚Ðµ команди заедно Ñ Ñ‚Ð¾Ð²Ð° дали Ñа\n" +" включени или не\n" +" -n Изключване на вградените команди Ñ Ð¿Ð¾Ñочените ИМЕна. Ðко не Ñа\n" +" дадени ИМЕна, Ñе извежда ÑпиÑъкът Ñ Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ‚Ðµ вътрешни " +"команди\n" +" -p Извеждане на ÑпиÑъка Ñ Ð²ÑŠÑ‚Ñ€ÐµÑˆÐ½Ð¸ команди във формат, който може " +"да\n" +" Ñе ползва като вход\n" +" -s Извеждане Ñамо на имената на Ñпециалните вградени команди " +"Ñпоред\n" +" POSIX\n" +" \n" +" Опции за динамичното зареждане:\n" +" -f Зареждане на вградена команда Ñ Ñ‚Ð¾Ð²Ð° ИМЕ от ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚ в\n" +" поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ Ð¤ÐЙЛ\n" +" -d Премахване на вътрешна команда заредена Ñ â€ž-f“\n" +" \n" +" Ðко не Ñа зададени опции, вÑÑка от вътрешните команди Ñ Ñ‚Ð°ÐºÐ¾Ð²Ð° ИМЕ бива\n" +" включена.\n" +" \n" +" За да ползвате командата „test“, коÑто Ñе намира в Ð¿ÑŠÑ‚Ñ Ð·Ð° изпълнение " +"$PATH,\n" +" вмеÑто Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð¸Ñ Ð² обвивката вариант изпълнете: „enable -n test“.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако ИМЕто не е на вградена команда или не възникне грешка." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Изпълнение на аргументите като команда на обвивката.\n" +" \n" +" Комбинира ÐРГументите в общ низ, който Ñе подава като вход на обвивка,\n" +" коÑто изпълнÑва получените команди.\n" +" \n" +" Изходен код:\n" +" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на командата или код за уÑпех, ако командата е нулева." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Ðнализиране на опциите и аргументите.\n" +" \n" +" getopts Ñе използва от процедурите на обвивката за анализа на " +"позиционните\n" +" аргументи и опции.\n" +" \n" +" ÐИЗът_С_ОПЦИИ Ñъдържа знаците, които трÑбва да Ñе разпознават като " +"опции.\n" +" Ðко буквата е Ñледвана от двоеточие, очаква Ñе опциÑта да получава " +"аргумент,\n" +" който да е разделен от Ð½ÐµÑ Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»(и).\n" +" \n" +" При вÑÑко извикване „getopts“ поÑÑ‚Ð°Ð²Ñ Ñледващата Ð¾Ð¿Ñ†Ð¸Ñ Ð² променливата " +"на\n" +" обвивката „name“, като Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð°, ако Ñ‚Ñ Ð½Ðµ ÑъщеÑтвува, а индекÑÑŠÑ‚ " +"на\n" +" ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚, който трÑбва да Ñе обработи, в променливата на " +"обвивката\n" +" „OPTIND“. „OPTIND“ Ñе инициализира да е 1 при вÑÑко извикване на " +"обвивка\n" +" или Ñкрипт. Когато опциÑта Ñе нуждае от аргумент, той Ñе поÑÑ‚Ð°Ð²Ñ Ð²\n" +" променливата на обвивката „OPTARG“.\n" +" \n" +" „getopts“ докладва грешки по един от два начина. Ðко първиÑÑ‚ знак на\n" +" „OPTSTRING“ е двоеточие, „getopts“ използва тихо докладване. Ð’ този " +"режим\n" +" не Ñе извеждат никакви ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° грешка. Ðко Ñе Ñрещне неправилна " +"опциÑ,\n" +" „getopts“ Ñлага ÑÑ€ÐµÑ‰Ð½Ð°Ñ‚Ð¸Ñ Ð·Ð½Ð°Ðº за Ð¾Ð¿Ñ†Ð¸Ñ Ð² „OPTARG“. Ðко липÑва " +"задължителен\n" +" аргумент, „getopts“ Ñлага „:“ в променливата „ИМЕ“, а в „OPTARG“ — " +"ÑрещнатиÑ\n" +" знак за опциÑ. Когато „getopts“ не е в режим на тихо докладване и Ñе " +"Ñрещне\n" +" неправилна опциÑ, в променливата „ИМЕ“ Ñе Ñлага „?“, а „OPTARG“ Ñе " +"премахва,\n" +" а ако липÑва задължителен аргумент, допълнително Ñе изпиÑва " +"диагноÑтично\n" +" Ñъобщение.\n" +" \n" +" Ðко променливата на обвивката „OPTERR“ е ÑÑŠÑ ÑтойноÑÑ‚ 0, „getopts“ " +"изключва\n" +" извеждането на диагноÑтични ÑъобщениÑ, дори първиÑÑ‚ знак в „OPTSTRING“ " +"да не\n" +" е двоеточие. По подразбиране „OPTERR“ е ÑÑŠÑ ÑтойноÑÑ‚ 1.\n" +" \n" +" „getopts“ по принцип анализира позиционните аргументи ($0 — $9), но ако " +"Ñа\n" +" дадени повече аргументи, те биват анализирани вмеÑто това.\n" +" \n" +" Изходен код:\n" +" Връща 0 при откриването на опциÑ. Връща друга ÑтойноÑÑ‚ при Ñтигането " +"на\n" +" поÑледната Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ при възникването на грешка." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"ЗамеÑтване на обвивката Ñ Ð´Ð°Ð´ÐµÐ½Ð°Ñ‚Ð° команда.\n" +" \n" +" ИзпълнÑване на КОМÐÐДÐта, като Ñ‚Ñ Ð·Ð°Ð¼ÐµÑтва текущата обвивка. " +"ÐРГУМЕÐТите\n" +" Ñе подават на КОМÐÐДÐта. Ðко не е дадена КОМÐÐДÐ, пренаÑочваниÑта Ñе\n" +" извършват в текущата обвивка.\n" +" \n" +" Опции:\n" +" -a ИМЕ ИМЕ-то Ñе подава като Ð½ÑƒÐ»ÐµÐ²Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ на КОМÐÐДÐта\n" +" -c изпълнÑване на КОМÐÐДÐта в празна Ñреда\n" +" -l поÑтавÑне на тире в Ð½ÑƒÐ»ÐµÐ²Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ на КОМÐÐДÐта\n" +" \n" +" Ðко КОМÐÐДÐта не може да бъде изпълнена, трÑбва да ÑъщеÑтвува " +"неинтерактивна\n" +" обвивка, оÑвен ако не е зададена опциÑта на обвивката „execfail“.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен когато КОМÐÐДÐта не е открита или възникне грешка при\n" +" пренаÑочването." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Изход от обвивката.\n" +" \n" +" Изход от обвивката Ñ Ñ‚Ð¾Ð·Ð¸ ЦИФРОВ_КОД. Ðко той е изпуÑнат, то изходниÑÑ‚ " +"код\n" +" е този на поÑледната изпълнена команда." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Изход от входната обвивка.\n" +" \n" +" Изход от входната обвивка Ñ Ñ‚Ð¾Ð·Ð¸ ЦИФРОВ_КОД. Връща грешка, ако е " +"изпълнена\n" +" в обвивка, коÑто не е входна." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Извеждане и/или изпълнение на команди от иÑториÑта.\n" +" \n" +" fc Ñе използва за изброÑването или редактирането и повторното изпълнение " +"на\n" +" команди от ÑпиÑъка на иÑториÑта.\n" +" ПЪРВИ и ПОСЛЕДЕРÑа номера, които могат да указват допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½. " +"Ðко\n" +" е зададен Ñамо ПЪРВИÑÑ‚ аргумент, той задава низ, който е началото на\n" +" команда.\n" +" \n" +" Опции:\n" +" -e РЕДÐКТОР\n" +" избор на текÑтов редактор, който да Ñе използва. Стандартно е\n" +" указаниÑÑ‚ в променливата „FCEDIT“, Ñлед това Ñе проверÑва „EDITOR“ " +"и\n" +" в краен Ñлучай е „vi“.\n" +" -l редовете да Ñе покажат вмеÑто редактират.\n" +" -n номерата на редовете да не Ñе отпечатват.\n" +" -r обратна подредба (отпред да е най-новиÑÑ‚ ред).\n" +" \n" +" При варианта „fc -s [ШÐБЛОÐ=ЗÐМЕСТИТЕЛ…] [КОМÐÐДÐ]“ командата Ñе " +"изпълнÑва, като\n" +" вÑÑка поÑва на ШÐБЛона Ñе Ð·Ð°Ð¼ÐµÐ½Ñ ÑÑŠÑ Ð—ÐМЕСТителÑ.\n" +" \n" +" Удобен за използване Ñиноним е „r='fc -s'“. По такъв начин, ако " +"напишете\n" +" „r cc“, ще Ñе изпълни поÑледната команда, коÑто започва Ñ â€žcc“, а " +"когато\n" +" Ñе въведе Ñамо „r“, ще Ñе изпълни поÑледната команда.\n" +" \n" +" Изходен код:\n" +" Връща 0 или изхода от поÑледната команда, който не е 0 в Ñлучай на " +"грешка." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Задаване на задача да е текуща.\n" +" \n" +" Изважда ЗÐДÐЧРот фонов режим и Ñ Ð¿Ñ€Ð°Ð²Ð¸ текуща задача. Ðко липÑва\n" +" аргумент ЗÐДÐЧÐ, Ñе използва текущата задача Ñпоред обвивката.\n" +" \n" +" Изходен код:\n" +" Изходът от командата, коÑто е зададена да е текуща или грешка, ако при\n" +" поÑтавÑнето на задачата от фонов към текущ режим възникне такава." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"ПоÑтавÑне на задачи във фонов режим.\n" +" \n" +" ПоÑÑ‚Ð°Ð²Ñ Ð²ÑÑка ЗÐДÐЧРвъв фонов режим, вÑе едно е била Ñтартирана Ñ â€ž&“.\n" +" Ðко липÑва аргумент ЗÐДÐЧÐ, Ñе използва текущата задача Ñпоред " +"обвивката.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако управлението на задачи е изключено или възникне грешка." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"ЗапомнÑне или извеждане на меÑтоположениÑта на програми.\n" +" \n" +" ОпределÑне и запомнÑне на пълното име Ñ Ð¿ÑŠÑ‚Ñ Ð½Ð° вÑÑко ИМЕ. Ðко не Ñа " +"дадени\n" +" аргументи, Ñе извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вÑички запомнени команди.\n" +" \n" +" Опции:\n" +" -d ЗабравÑне на запомненото меÑтоположение на вÑички ИМЕна\n" +" -l Извеждане във формат за преизползване като вход\n" +" -p ПЪТ\n" +" Използване на поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ ÐŸÐªÐ¢ като пълен път за ИМЕто\n" +" -r ЗабравÑне на вÑички запомнени меÑтоположениÑ\n" +" -t Извеждане на запомнените меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° вÑички ИМЕна. Ðко е\n" +" поÑочено повече от едно ИМЕ, вÑÑко меÑтоположение Ñе предшеÑтва " +"от\n" +" ИМЕто\n" +" Ðргументи:\n" +" ИМЕ Ð’ÑÑко име Ñе търÑи в Ð¿ÑŠÑ‚Ñ Ð·Ð° изпълнение „PATH“ и при намирането " +"му\n" +" Ñе Ð´Ð¾Ð±Ð°Ð²Ñ Ð² ÑпиÑъка ÑÑŠÑ Ð·Ð°Ð¿Ð¾Ð¼Ð½ÐµÐ½Ð¸ команди.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако ИМЕто не бъде открито или е дадена неправилна опциÑ." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вградените команди.\n" +" \n" +" Извежда кратка Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вградените команди. Ðко е указан ШÐБЛОÐ, " +"Ñе\n" +" извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° напаÑващите команди. Ð’ противен Ñлучай Ñе " +"изважда\n" +" Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вÑички команди.\n" +" \n" +" Опции:\n" +" -d Извеждане на кратко опиÑание на вÑÑка тема\n" +" -m Извеждане във формат наподобÑващ Ñтраница от ръководÑтвата\n" +" -s Извеждане Ñамо на кратко обобщение за използването на вÑÑка " +"команда,\n" +" Ñъвпадаща Ñ Ð¨ÐБЛОÐа\n" +" \n" +" Ðргументи:\n" +" ШÐБЛОРШаблон за имената на командите, за които да Ñе изведе " +"информациÑ\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако Ð½Ð¸ÐºÐ¾Ñ Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð° команда не Ñъвпада Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° или е дадена\n" +" неправилна опциÑ." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Извеждане и управление на ÑпиÑъка на иÑториÑта.\n" +" \n" +" Отпечатване на ÑпиÑъка на иÑториÑта Ñ Ð½Ð¾Ð¼ÐµÑ€Ð° на ред. Редовете, които " +"Ñа\n" +" отбелÑзани ÑÑŠÑ Ð·Ð½Ð°ÐºÐ° „*“, Ñа били променени. Ðргументът N указва да Ñе\n" +" извеждат Ñамо N на брой реда.\n" +" \n" +" Опции:\n" +" -c изчиÑтване на ÑпиÑъка, като Ñе изтриват вÑички елементи от него.\n" +" -d ПОЗИЦИЯ\n" +" изтрива елемента в иÑториÑта намиращ Ñе поÑочената ПОЗИЦИЯ.\n" +" Отрицателните позиции Ñе броÑÑ‚ от ÐºÑ€Ð°Ñ Ð½Ð° иÑториÑта\n" +" -a Ð´Ð¾Ð±Ð°Ð²Ñ Ð¸ÑториÑта от текущата ÑеÑÐ¸Ñ ÐºÑŠÐ¼ файла Ñ Ð¸ÑториÑта.\n" +" -n прочитане на непрочетените редове от файла Ñ Ð¸ÑториÑта и добавÑне " +"към\n" +" текущата иÑториÑ.\n" +" -r прочитане на файла Ñ Ð¸ÑториÑта и добавÑне на Ñъдържанието към " +"текущата\n" +" иÑториÑ.\n" +" -w запиÑване на текущата иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²ÑŠÐ² файла за иÑториÑта.\n" +" -p извършване на иÑторичеÑко замеÑтване за вÑеки ÐРГУМЕÐТ, а резултатът " +"да\n" +" Ñе изведе, без нищо да Ñе запиÑва в иÑториÑта на командите.\n" +" -s аргументите, които не Ñа опции, Ñе добавÑÑ‚ като един елемент към " +"файла Ñ\n" +" иÑториÑта.\n" +" \n" +" Ðко аргументът ИМЕ_ÐÐ_ФÐЙЛ е зададен, той Ñе използва като файл за\n" +" иÑториÑта. Ðко той липÑва, Ñе използва файлът Ñочен в променливата на\n" +" Ñредата „HISTFILE“. Ð’ противен Ñлучай Ñе ползва „~/.bash_history“.\n" +" \n" +" Ðко променливата „HISTTIMEFORMAT“ е зададена и не е „null“, ÑтойноÑтта Ñ " +"Ñе\n" +" използва като Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð°Ñ‰Ð¸Ñ Ð½Ð¸Ð· за функциÑта „strftime“, за да Ñе " +"отбелÑзва\n" +" времето Ñвързано Ñ Ð²Ñеки елемент от иÑториÑта. Ð’ противен Ñлучай " +"времето не\n" +" Ñе запиÑва.\n" +" \n" +" Изходен код:\n" +" 0. Ðко възникне грешка или е подадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð²Ñ€ÑŠÑ‰Ð° грешка." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Извежда ÑÑŠÑтоÑнието на задачите.\n" +" \n" +" Извежда ÑпиÑък Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¸Ñ‚Ðµ задачи. ЗÐДÐЧÐта ограничава информациÑта до\n" +" Ñебе Ñи. Без опции Ñе отпечатва ÑÑŠÑтоÑнието на вÑички активни задачи.\n" +" \n" +" Опции:\n" +" -l включва и идентификатора на процеÑите заедно ÑÑŠÑ Ñтандартната\n" +" информациÑ.\n" +" -n извеждат Ñе Ñамо процеÑите Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½ÐµÐ½Ð¾ ÑÑŠÑтоÑние от поÑледното\n" +" извеждане на тази информациÑ.\n" +" -p извежда Ñамо идентификаторите на процеÑите.\n" +" -r ограничаване на изхода Ñамо до изпълнÑваните задачи.\n" +" -s ограничаване на изхода Ñамо до Ñпрените задачи.\n" +" \n" +" Ðко е зададена опциÑта „-x“, КОМÐÐДÐта Ñе изпълнÑва, Ñлед като вÑички\n" +" ЗÐДÐЧи, които Ñе поÑвÑват като ÐРГУМЕÐТи, Ñе заменÑÑ‚ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° " +"на\n" +" водача на групата процеÑи.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако не е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникни грешка. Ðко Ñе\n" +" ползва „-x“, връща изходното ÑÑŠÑтоÑние на КОМÐÐДÐта." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Премахване на ЗÐДÐЧи от текущата обвивка.\n" +" \n" +" Премахва вÑеки аргумент-задача от таблицата на активните задачи. Ðко " +"ЗÐДÐЧÐ\n" +" не е указана, Ñе използва тази, коÑто обвивката Ñчита за текуща.\n" +" \n" +" Опции:\n" +" -a премахване на вÑички задачи, когато не е дадена ЗÐДÐЧÐ\n" +" -h предотвратÑване на препращането на Ñигнал SIGHUP към задачата,\n" +" когато тази обвивка получи ÑÑŠÑ‰Ð¸Ñ Ñ‚Ð¾Ð·Ð¸ Ñигнал\n" +" -r премахване Ñамо на Ñтартираните задачи.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен когато е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ неÑъщеÑтвуваща ЗÐДÐЧÐ." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Изпращане на Ñигнал към задача.\n" +" \n" +" Изпращане на СИГÐÐЛа на процеÑа Ñ Ñ‚Ð°ÐºÑŠÐ² ИДЕÐТИФИКÐТОР_ÐÐ_ПРОЦЕС (или\n" +" задачата Ñ Ñ‚Ð°ÐºÑŠÐ² ИДЕÐТИФИКÐТОР_ÐÐ_ЗÐДÐЧÐ). Ðко Ñигнал Ñ Ñ‚Ð°ÐºÐ¾Ð²Ð° име или\n" +" номер не ÑъщеÑтвува, Ñе използва SIGTERM.\n" +" \n" +" Опции:\n" +" -s СИГÐÐЛ\n" +" СИГÐÐЛ Ñе интерпретира като име на Ñигнал\n" +" -n СИГÐÐЛ\n" +" СИГÐÐЛ Ñе интерпретира като номер на Ñигнал\n" +" -l изброÑва имената на Ñигналите. Ðко към командата Ñа добавени\n" +" аргументи, те Ñе интерпретират като номера на Ñигналите чиито " +"имена\n" +" да Ñе изброÑÑ‚.\n" +" -L Ñиноним на „-l“\n" +" \n" +" „kill“ е команда вградена в обвивката поради две причини: позволÑва да " +"Ñе\n" +" използват и идентификатори на задачи оÑвен идентификатори на процеÑи, а " +"и\n" +" ако Ñте пуÑнали макÑимално Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð·Ð° Ð²Ð°Ñ Ð±Ñ€Ð¾Ð¹ процеÑи, нÑма да ви " +"Ñе\n" +" налага да пуÑнете още един процеÑ, за да убиете друг.\n" +" \n" +" Изходен код:\n" +" 0. Ðко възникне грешка или е подадена неправилна опциÑ, връща грешка." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"ИзчиÑлÑване на аритметичен израз.\n" +" \n" +" Ð’Ñеки ÐРГУМЕÐТ е аритметичен израз, който Ñе бъде изчиÑлен. " +"ИзчиÑлениÑта\n" +" Ñе извършват в аритметика Ñ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñлени ÑтойноÑти Ñ Ð¿Ð¾ÑтоÑнна широчина\n" +" без проверка за препълване. Делението на 0 Ñе прихваща и Ñе отбелÑзва\n" +" грешка. СледващиÑÑ‚ ÑпиÑък Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¸ е разделен на групи Ñпоред\n" +" приоритета на операциите. Подредбата е Ñ Ð½Ð°Ð¼Ð°Ð»Ñващ приоритет.\n" +" \n" +" id++, id-- поÑледващо увеличаване/намалÑване на променлива\n" +" ++id, --id предварително увеличаване/намалÑване на променлива\n" +" -, + унарни минуÑ, плюÑ\n" +" !, ~ логичеÑко и побитово отрицаниÑ\n" +" ** вдигане на Ñтепен\n" +" *, /, % умножение, деление, целочиÑлен оÑтатък\n" +" +, - Ñъбиране, изваждане\n" +" <<, >> побитово меÑтене налÑво и надÑÑно\n" +" <=, >=, <, > Ñравнение\n" +" ==, != равно, различно\n" +" & побитово И\n" +" ^ побитово изключващо ИЛИ\n" +" | побитово ИЛИ\n" +" && логичеÑко И\n" +" || логичеÑко ИЛИ\n" +" ИЗРÐЗ ? ИЗРÐЗ : ИЗРÐЗ\n" +" уÑловен оператор\n" +" =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=\n" +" приÑвоÑване\n" +" \n" +" Разрешено е ползването на променливи на обвивката като операнди. Името " +"на\n" +" променлива Ñе замеÑтва Ñ Ð½ÐµÐ¹Ð½Ð°Ñ‚Ð° ÑтойноÑÑ‚ (коÑто Ñе преобразува до цÑло\n" +" чиÑло Ñ Ð¿Ð¾ÑтоÑнна широчина) в израза. Ðе е необходимо променливата да е " +"Ñ\n" +" атрибут за целочиÑленоÑÑ‚, за да Ñе използва в израз.\n" +" \n" +" Операторите Ñе изчиÑлÑват по приоритет. Подизразите в Ñкоби Ñе " +"изчиÑлÑват\n" +" първи и могат да променÑÑ‚ приоритета.\n" +" \n" +" Изходен код:\n" +" Ðко поÑледниÑÑ‚ ÐРГУМЕÐТ Ñе изчиÑлÑва като 0, „let“ връща 1. Ð’ противен\n" +" Ñлучай — връща 0." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Изчитане на ред от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ и разделÑнето му по полета.\n" +" \n" +" От ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ или от Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор ФД, ако е използвана " +"опциÑта\n" +" „-u“, Ñе прочита един ред. Редът Ñе Ñ€Ð°Ð·Ð´ÐµÐ»Ñ Ð½Ð° полета — думи. Първата " +"дума\n" +" Ñе приÑвоÑва на първото ИМЕ, втората дума на второто ИМЕ и Ñ‚.н., а на\n" +" поÑледното ИМЕ Ñе приÑвоÑват оÑтаващите думи. Като разделители на думи " +"Ñе\n" +" използват Ñамо знаците указани в променливата „IFS“.\n" +" \n" +" Ðко не Ñа дадени ИМЕна, прочетениÑÑ‚ ред Ñе запазва в променливата " +"„REPLY“.\n" +" \n" +" Опции:\n" +" -a прочетените думи Ñе приÑвоÑват поÑледователно на елементите на " +"МÐСИВа,\n" +" като индекÑÑŠÑ‚ му започва от 0.\n" +" -d РÐЗДЕЛИТЕЛ\n" +" четенето продължава до прочитането на Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð·Ð½Ð°Ðº, който приÑÑŠÑтва " +"в\n" +" променливата „DELIM“, а не до минаването на нов ред.\n" +" -e за четене на реда Ñе използва readline\n" +" -i ТЕКСТ\n" +" за първоначален текÑÑ‚ в readline Ñе ползва ТЕКСТ\n" +" -n БРОЙ_ЗÐÐЦИ\n" +" четенето завършва Ñлед прочитането на този БРОЙ_ЗÐÐЦИ, не Ñе чака " +"за\n" +" нов ред. Разделител в рамките на този БРОЙ_ЗÐÐЦИ Ñе зачита.\n" +" -N БРОЙ_ЗÐÐЦИ\n" +" четенето завършва Ñ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½ÐµÑ‚Ð¾ на точно този БРОЙ_ЗÐÐЦИ, оÑвен " +"ако\n" +" не Ñе поÑви EOF или времето за изчакване на въвеждане не изтече.\n" +" Ð’Ñички разделители Ñе пренебрегват.\n" +" -p ПОДСКÐЗКÐ\n" +" извежда низа ПОДСКÐЗКРбез минаване на нов ред, преди да започне\n" +" четенето на знаци от входа.\n" +" -r замеÑтването на екранираните Ñ â€ž\\“ знаци Ñе изключва.\n" +" -s входът от терминал не Ñе отпечатва на екрана.\n" +" -t БРОЙ_СЕКУÐДИ\n" +" задава интервал от този БРОЙ_СЕКУÐДИ, в който трÑбва да Ñе въведе " +"цÑл\n" +" ред. Ð’ противен Ñлучай read завършва Ñ Ð³Ñ€ÐµÑˆÐºÐ°. Ðко е зададена,\n" +" ÑтойноÑтта на променливата „TMOUT“ обозначава времето, за което " +"трÑбва\n" +" да Ñе въведе редът. За БРОЙ_СЕКУÐДИ може да Ñе ползва и нецÑло " +"чиÑло.\n" +" Ðко БРОЙ_СЕКУÐДИ e 0, read незабавно завършва работа, без да Ñе " +"опитва\n" +" да чете данни и връща код 0, Ñамо ако от ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² " +"деÑкриптор\n" +" могат да Ñе прочетат данни.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако не Ñе Ñрещне знак за край на файл EOF, изтече време повече " +"от\n" +" указаното в БРОЙ_СЕКУÐДИ, при което кодът за изход е над 128, възникне\n" +" грешка при задаване на ÑтойноÑÑ‚ на променлива или е зададен неправилен\n" +" файлов деÑкриптор като аргумент на -u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Връщане от Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката.\n" +" \n" +" Кара изпълнÑваната Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ Ñкрипт да завършат работа ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð¸Ñ\n" +" изходен ЦИФРОВ_КОД. Ðко не е зададен ЦИФРОВ_КОД Ñе използва Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ " +"код на\n" +" поÑледно изпълнената команда във функциÑта или Ñкрипта.\n" +" \n" +" Изходен код:\n" +" Връща ЦИФРОВиÑ_КОД или грешка, ако обвивката в момента не изпълнÑва " +"функциÑ\n" +" или Ñкрипт." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Задаване или изтриване на позиционни параметри и опции на обвивката.\n" +" \n" +" ПромÑна на ÑтойноÑтите на позиционните параметри и опции на обвивката,\n" +" Извеждане на имената и ÑтойноÑтите на променливите на обвивката.\n" +" \n" +" Опции:\n" +" -a ОтбелÑзване на променливите, които Ñа Ñъздадени или променени, да\n" +" бъдат изнеÑени.\n" +" -b Ðезабавно извеÑÑ‚Ñване на Ñпиране на задача.\n" +" -e Ðезабавен изход, ако команда приключи команда Ñ ÐºÐ¾Ð´, който не е " +"0.\n" +" -f Изключване на генерирането на имена на файлове (чрез „*“, „?“ и Ñ‚." +"н.).\n" +" -h ЗапомнÑне на меÑтоположението на команди при търÑенето им.\n" +" -k Ð’Ñички аргументи за приÑвоÑване Ñе помеÑтват в Ñредата на команда, " +"не\n" +" Ñамо тези, които предхождат името на команда.\n" +" -m Включване на управлението на задачи.\n" +" -n Прочитане на команди, без да Ñе изпълнÑват.\n" +" -o ИМЕ_ÐÐ_ОПЦИЯ\n" +" Задаване на променливата, коÑто Ð¾Ñ‚Ð³Ð¾Ð²Ð°Ñ€Ñ Ð½Ð° ИМЕто_ÐÐ_ОПЦИЯ:\n" +" allexport Ñъщото като „-a“\n" +" braceexpand Ñъщото като „-B“\n" +" emacs Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð·Ð° редактиране подобен на „emacs“\n" +" errexit Ñъщото като „-e“\n" +" errtrace Ñъщото като „-E“\n" +" functrace Ñъщото като „-T“\n" +" hashall Ñъщото като „-h“\n" +" histexpand Ñъщото като „-H“\n" +" history включване на иÑториÑта на командите\n" +" ignoreeof обвивката нÑма да излезе при откриване на знак за " +"край\n" +" на файл „EOF“.\n" +" interactive-comments\n" +" позволÑване на коментари в интерактивните команди\n" +" keyword Ñъщото като „-k“\n" +" monitor Ñъщото като „-m“\n" +" noclobber Ñъщото като „-C“\n" +" noexec Ñъщото като „-n“\n" +" noglob Ñъщото като „-f“\n" +" nolog тази Ð¾Ð¿Ñ†Ð¸Ñ Ñе приема в момента, но Ñе игнорира\n" +" notify Ñъщото като „-b“\n" +" nounset Ñъщото като „-u“\n" +" onecmd Ñъщото като „-t“\n" +" physical Ñъщото като „-P“\n" +" pipefail изходниÑÑ‚ код на Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð» е този на " +"поÑледната\n" +" команда, коÑто завършва Ñ ÐºÐ¾Ð´ различен от 0\n" +" posix промÑна на поведението на „bash“ да Ð¾Ñ‚Ð³Ð¾Ð²Ð°Ñ€Ñ Ð¿Ð¾-" +"добре\n" +" на Ñтандарта POSIX\n" +" privileged Ñъщото като „-p“\n" +" verbose Ñъщото като „-v“\n" +" vi използване на Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð·Ð° редактиране подобен на " +"„vi“\n" +" xtrace Ñъщото като „-x“\n" +" -p ОпциÑта e включена, когато реалниÑÑ‚ и ефективниÑÑ‚ идентификатори " +"на\n" +" процеÑи не Ñъвпадат. Изключва обработката на файла поÑочен в\n" +" променливата „ENV“ и внаÑÑнето на функции на обвивката. " +"Изключването\n" +" на тази Ð¾Ð¿Ñ†Ð¸Ñ Ð²Ð¾Ð´Ð¸ до това ефективните идентификатори за " +"потребител и\n" +" група да Ñтанат равни на реалните.\n" +" -t Изход Ñлед прочитането и изпълнението на една команда.\n" +" -u Ðезададените променливи да Ñе третират като грешки при " +"замеÑтването.\n" +" -v Отпечатване на входните редове към обвивката при прочитането им.\n" +" -x Отпечатване на командите и аргументите им при изпълнението им.\n" +" -B Обвивката ще извършва замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби.\n" +" -C ПредотвратÑване на презапиÑването на ÑъщеÑтвуващите обикновени " +"файлове\n" +" чрез пренаÑочване на изхода.\n" +" -E Прихващането за „ERR“ да Ñе наÑледÑва от функциите на обвивката.\n" +" -H Включване на замеÑтването чрез иÑториÑта Ñ â€ž!“. Стандартно тази " +"опциÑ\n" +" е налична Ñамо за интерактивните обвивки.\n" +" -P Да не Ñе Ñледват Ñимволните връзки при изпълнението на команди " +"като\n" +" „cd“, които променÑÑ‚ текущата директориÑ.\n" +" -T Прихващането за „DEBUG“ и „RETURN“ да Ñе наÑледÑва от функциите " +"на\n" +" обвивката.\n" +" -- ОÑтаващите аргументи да Ñе тълкуват като позиционни. Ðко нÑма " +"повече\n" +" аргументи, Ñе изтриват Ñъответните позиционни.\n" +" - ОÑтаващите аргументи да Ñе тълкуват като позиционни. Опциите „-x“ " +"и\n" +" „-v“ Ñа изключени.\n" +" \n" +" Използването на „+“ вмеÑто „-“ изключва опциите. Тези опции могат да " +"Ñе\n" +" използват и при Ñтартирането на обвивката. Текущото им ÑÑŠÑтоÑние Ñе " +"намира\n" +" в променливата „-“ (получава Ñе Ñ â€ž$-“). ОÑтаналите ÐРГументи Ñа " +"позиционни\n" +" и Ñе приÑвоÑват Ñъответно на променливите Ñ Ð¸Ð¼ÐµÐ½Ð° „1“, „2“,… " +"„n“ (получават\n" +" Ñе Ñ â€ž$1“, „$2“,… „${n}“). Ðко не Ñа зададени ÐРГументи, Ñе извеждат\n" +" вÑички променливи на Ñредата.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако не е зададена неправилна опциÑ." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Изтриване на ÑтойноÑтите и атрибутите на променливите и функциите на " +"обвивката.\n" +" \n" +" За вÑÑко ИМЕ изтрива Ñъответната променлива или функциÑ.\n" +" \n" +" Опции:\n" +" -f вÑÑко ИМЕ Ñе тълкува като Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката\n" +" -v вÑÑко ИМЕ Ñе тълкува като променлива на обвивката\n" +" -n вÑÑко ИМЕ Ñе тълкува като променлива-указател — трие Ñе Ñамата\n" +" променлива, а не тази, към коÑто Ñ‚Ñ Ñочи\n" +" \n" +" Ðко не Ñа подадени опции, командата unset първо Ñе опитва да изтрие\n" +" променлива и Ñлед това Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ñ‚Ð¾Ð²Ð° ИМЕ.\n" +" \n" +" ÐÑкои променливи не могат да бъдат изтрити. Вижте вградената команда\n" +" „readonly“ (Ñамо за четене).\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е Ñамо за\n" +" четене." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Задаване на атрибута за изнаÑÑне на променливите на обвивката.\n" +" \n" +" Обозначава вÑÑко едно от ИМЕната за изнаÑÑне в Ñредата на изпълнение на\n" +" поÑледващо изпълнените команди. Ðко е дадена СТОЙÐОСТ, Ñ‚Ñ Ñе приÑвоÑва " +"на\n" +" ИМЕто преди изнаÑÑнето.\n" +" \n" +" Опции:\n" +" -f ИМЕто е на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката\n" +" -n Премахване на атрибута за изнаÑÑне от вÑÑко от ИМЕната\n" +" -p Извеждане на ÑпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на вÑички променливи и функции за\n" +" изнаÑÑне\n" +" \n" +" Ðргументът „--“ прекъÑва по нататъшната обработка на опции.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е " +"неправилно." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Задаване на променливи на обвивката като непроменливи конÑтанти.\n" +" \n" +" ОтбелÑзване на вÑÑко от ИМЕната Ñамо за четене. ТÑхната ÑтойноÑÑ‚ не " +"може да\n" +" бъде променÑна чрез поÑледващо приÑвоÑване. Ðко е дадена СТОЙÐОСТ, Ñ‚Ñ " +"Ñе\n" +" задава на името преди задаването му като конÑтантно.\n" +" \n" +" Опции:\n" +" -a ИМЕната Ñа на променливи-маÑиви\n" +" -A ИМЕната Ñа на променливи-аÑоциативни маÑиви\n" +" -f ИМЕната Ñа на функции на обвивката\n" +" -p Извеждане на имената на вÑички конÑтантни променливи или " +"функции, в\n" +" завиÑимоÑÑ‚ дали е зададена опциÑта „-f“\n" +" \n" +" Ðргументът „--“ прекъÑва по нататъшната обработка на опции.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е " +"неправилно." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"ИзмеÑтване на позиционните параметри.\n" +" \n" +" Преименуване на позиционните параметри „БРОЙ+1“, „БРОЙ+2“… на 1, 2…. " +"Така\n" +" те Ñтават доÑтъпни не като ${БРОЙ+1}…, като „$1“…. Ðко не е зададена\n" +" ÑтойноÑÑ‚ БРОЙ, Ñе използва 1.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако БРОÑÑ‚ е отрицателно или по-голÑмо от ÑтойноÑтта „$#“." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"ИзпълнÑване на команди от файл в текущата обвивка\n" +" \n" +" Изчитане и изпълнение на командите от ФÐЙЛа и изход. Директориите " +"опиÑани в\n" +" променливата „PATH“ Ñе използват за изпълнението на командите от ФÐЙЛа. " +"Ðко\n" +" Ñа зададени ÐРГУМЕÐТИ, те Ñе превръщат в позиционни аргументи при\n" +" изпълнението на ФÐЙЛа.\n" +" \n" +" Изходен код:\n" +" Връща ÑÑŠÑтоÑнието на поÑледно изпълнената команда във ФÐЙЛа. Ðко той " +"не\n" +" може да бъде открит, изходът е грешка." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Временно Ñпиране на изпълнението на обвивката.\n" +" \n" +" Спиране на работата на тази обвивка докато обвивката не получи Ñигнал\n" +" SIGCONT. ОÑвен ако изрично не Ñе зададе опциÑ, входните обвивки не " +"могат да\n" +" бъдат Ñпрени по този начин.\n" +" \n" +" Опции:\n" +" -f Задължително Ñпиране, дори и ако обвивката е входÑща\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако не възникне грешка или управлението на задачи е изключено." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"ИзчиÑлÑване на уÑловен израз.\n" +" \n" +" Изход Ñ ÐºÐ¾Ð´ 0 (иÑтина) или 1 (лъжа) в завиÑимоÑÑ‚ от ÑтойноÑтта на " +"ИЗРÐЗа.\n" +" Изразите могат да бъдат унарни или бинарни. Унарните най-чеÑто Ñе " +"използват\n" +" за проверка на ÑÑŠÑтоÑнието на файл. ОÑвен Ñ‚ÑÑ… има и оператори за " +"чиÑлови\n" +" ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð¸ низови оператори.\n" +" \n" +" Поведението на теÑтовете завиÑи от Ð±Ñ€Ð¾Ñ Ð½Ð° аргументите. За цÑлоÑтно\n" +" опиÑание прочетете Ñтраниците от ръководÑтвото на bash.\n" +" \n" +" Файлови оператори:\n" +" \n" +" -a ФÐЙЛ ИÑтина, ако ФÐЙЛът ÑъщеÑтвува.\n" +" -b ФÐЙЛ ИÑтина, ако ФÐЙЛът е блоково уÑтройÑтво.\n" +" -c ФÐЙЛ ИÑтина, ако ФÐЙЛът е знаково уÑтройÑтво.\n" +" -d ФÐЙЛ ИÑтина, ако ФÐЙЛът е директориÑ.\n" +" -e ФÐЙЛ ИÑтина, ако ФÐЙЛът ÑъщеÑтвува.\n" +" -f ФÐЙЛ ИÑтина, ако ФÐЙЛът ÑъщеÑтвува и е обикновен файл.\n" +" -g ФÐЙЛ ИÑтина, ако ФÐЙЛът е ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½ бит за ÑмÑна на група\n" +" при изпълнение.\n" +" -h ФÐЙЛ ИÑтина, ако ФÐЙЛът е Ñимволна връзка.\n" +" -L ФÐЙЛ ИÑтина, ако ФÐЙЛът е Ñимволна връзка.\n" +" -k ФÐЙЛ ИÑтина, ако ФÐЙЛът е ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½ лепкав бит.\n" +" -p ФÐЙЛ ИÑтина, ако ФÐЙЛът е именуван програмен канал.\n" +" -r ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде прочетен от ваÑ.\n" +" -s ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде запиÑван от ваÑ.\n" +" -S ФÐЙЛ ИÑтина, ако ФÐЙЛът е програмно гнездо.\n" +" -t ФДСК ИÑтина, ако ФайловиÑÑ‚_ДеСКриптор е отворен на терминал.\n" +" -u ФÐЙЛ ИÑтина, ако ФÐЙЛът е ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½ бит за ÑмÑна на " +"потребител\n" +" при изпълнение.\n" +" -w ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде запиÑван от ваÑ.\n" +" -x ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде изпълнÑван от ваÑ.\n" +" -O ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде ефективно притежаван от " +"ваÑ.\n" +" -G ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде ефективно притежаван от " +"вашата\n" +" група.\n" +" -N ФÐЙЛ ИÑтина, ако ФÐЙЛът е бил променÑн от поÑледното му " +"прочитане.\n" +" \n" +" ФÐЙЛ_1 -nt ФÐЙЛ_2 ИÑтина, ако ФÐЙЛ_1 е по-нов от ФÐЙЛ_2 (Ñпоред\n" +" датата на промÑна).\n" +" ФÐЙЛ_1 -ot ФÐЙЛ_2 ИÑтина, ако ФÐЙЛ_1 е по-Ñтар от ФÐЙЛ_2 (Ñпоред\n" +" датата на промÑна). \n" +" ФÐЙЛ_1 -ef ФÐЙЛ_2 ИÑтина, ако ФÐЙЛ_1 е твърда връзка към ФÐЙЛ_2.\n" +" \n" +" Ðизови оператори:\n" +" \n" +" -z ÐИЗ ИÑтина, ако ÐИЗът е празен.\n" +" -n ÐИЗ ИÑтина, ако ÐИЗът не е празен.\n" +" ÐИЗ ИÑтина, ако ÐИЗът не е празен.\n" +" \n" +" ÐИЗ_1 = ÐИЗ_2 ИÑтина, ако низовете Ñа равни.\n" +" ÐИЗ_1 != ÐИЗ_2 ИÑтина, ако низовете не Ñа равни.\n" +" ÐИЗ_1 < ÐИЗ_2 ИÑтина, ако ÐИЗ_1 е лекÑикографÑки преди ÐИЗ_2.\n" +" ÐИЗ_1 > ÐИЗ_2 ИÑтина, ако ÐИЗ_1 е лекÑикографÑки Ñлед ÐИЗ_2.\n" +" \n" +" Други оператори:\n" +" \n" +" -o ОПЦИЯ ИÑтина, ако ОПЦИЯта на обвивката е зададена.\n" +" -v ПРОМЕÐЛИВРИÑтина, ако ПРОМЕÐЛИВÐта на обвивката е " +"зададена.\n" +" -R ПРОМЕÐЛИВРИÑтина, ако ПРОМЕÐЛИВÐта е зададена като " +"променлива-\n" +" указател.\n" +" ! ИЗРÐЗ ИÑтина, ако ИЗРÐЗът е лъжа.\n" +" ИЗРÐЗ_1 -a ИЗРÐЗ_2 ИÑтина, ако и двата ИЗРÐЗа Ñа иÑтина.\n" +" ИЗРÐЗ_1 -o ИЗРÐЗ_2 ИÑтина, ако поне един от ИЗРÐЗите е иÑтина.\n" +" ÐРГ_1 ОПЕР ÐРГ_2 Ðритметични теÑтове. Те връщат иÑтина, ако Ñе\n" +" изпълнÑва математичеÑкото уÑловие на ОПЕРатора,\n" +" който е един от Ñледните (значението е в " +"Ñкоби):\n" +" „-eq“ (=), „-ne“ (!=), „-lt“ (<), „-le“ (<=),\n" +" „-gt“ (>) , „-ge“ (>=).\n" +" \n" +" Ðритметичните изрази завършват иÑтинно, ако ÐРГумент_1 е Ñъответно " +"равен,\n" +" неравен, по-малък, по-малък или равен, по-голÑм, по-голÑм или равен на\n" +" ÐРГумент_2.\n" +" \n" +" Изходен код:\n" +" 0, ако ИЗРÐЗът е верен. Грешка, когато ИЗРÐЗът е неверен или е даден\n" +" неправилен аргумент." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"ИзчиÑлÑване на уÑловен израз.\n" +" \n" +" Това е Ñиноним на вградената команда „test“, но поÑледниÑÑ‚ аргумент " +"трÑбва\n" +" задължително да е знакът „]“, който да ÑъответÑтва на отварÑщата " +"квадратна\n" +" Ñкоба „[“." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Извеждане на времето на работа на процеÑите.\n" +" \n" +" Отпечатва общото потребителÑко и ÑиÑтемно време на работа на обвивката " +"и\n" +" вÑичките Ñ Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸ процеÑи.\n" +" \n" +" Изходен код:\n" +" Винаги 0." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Прихващане на Ñигналите и другите ÑъбитиÑ.\n" +" \n" +" Дефинира и задейÑтва функции за обработка, когато обвивката получи " +"Ñигнал\n" +" или възникне друго Ñъбитие.\n" +" \n" +" Командата ÐРГУМЕÐТ ще бъде прочетена и изпълнена, когато обвивката " +"получи\n" +" УКÐЗÐÐиÑ_СИГÐÐЛ(и). Ðко ÐРГУМЕÐТът липÑва (и Ñе подава единичен\n" +" УКÐЗÐÐ_СИГÐÐЛ) или е „-“, то вÑеки УКÐЗÐÐ_СИГÐÐЛ Ñе връща към " +"първоначалната\n" +" Ñи ÑтойноÑÑ‚. Ðко ÐРГУМЕÐТът е нулевиÑÑ‚ низ, вÑеки УКÐЗÐÐ_СИГÐÐЛ Ñе\n" +" пренебрегва от обвивката и командите, които Ñе Ñтартират през неÑ.\n" +" \n" +" Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ е „EXIT (0)“, то командата ÐРГУМЕÐТ Ñе изпълнÑва " +"от\n" +" обвивката при изход. Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ е „DEBUG“, ÐРГУМЕÐТът Ñе\n" +" изпълнÑва Ñлед вÑÑка проÑта команда. Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ е „RETURN“,\n" +" ÐРГУМЕÐТът Ñе изпълнÑва Ñлед вÑÑко изпълнение на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÐºÐ°ÐºÑ‚Ð¾ и " +"изпълнение\n" +" на Ñкрипт чрез вградените команди „.“ и „source“. Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ " +"е\n" +" „ERR“, ÐРГУМЕÐТът Ñе изпълнÑва Ñлед вÑÑка грешка, коÑто би предизвикала\n" +" изход от обвивката при Ñтартирането Ñ Ñ Ð¾Ð¿Ñ†Ð¸Ñта „-e“.\n" +" \n" +" Ðко не Ñа дадени аргументи, Ñе отпечатват командите приÑвоени на вÑички\n" +" прихващаниÑ.\n" +" \n" +" Опции:\n" +" -l отпечатва ÑпиÑъка Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на Ñигналите и ÑъответÑтващите им " +"номера.\n" +" -p извеждат Ñе командите Ñвързани Ñ Ð²Ñеки УКÐЗÐÐ_СИГÐÐЛ.\n" +" \n" +" Ð’Ñеки УКÐЗÐÐ_СИГÐÐЛ е или име на Ñигнал от файла „signal.h“ или номер " +"на\n" +" Ñигнал.\n" +" ÐÑма разлика между главни и малки букви в имената на Ñигнали, а " +"предÑтавката\n" +" „SIG“ не е задължителна.\n" +" Сигнал може да бъде изпратен на обвивката Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „kill -signal $" +"$“.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е зададен неправилен Ñигнал или опциÑ." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вида на командата подадена като аргумент.\n" +" \n" +" За вÑÑко ИМЕ Ñе извежда как ще Ñе интерпретира, когато Ñе използва като\n" +" команда.\n" +" \n" +" Опции:\n" +" -a Извеждане на вÑички меÑтоположениÑ, които Ñъдържат изпълним файл " +"Ñ\n" +" това ИМЕ. Включва Ñинонимите, вградените команди и функции на\n" +" обвивката, Ñамо когато не е използвана опциÑта „-p“\n" +" -f Без търÑене във функциите дефинирани в обвивката\n" +" -P ТърÑене в Ð¿ÑŠÑ‚Ñ Ð·Ð° изпълнение указан в PATH, дори и ако " +"ÑъщеÑтвува\n" +" Ñиноним, вградена команда или Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð° в обвивката Ñ " +"това\n" +" ИМЕ\n" +" -p Връща или името на файла, който ще бъде изпълнен или нищо в\n" +" Ñлучаите, когато командата „type -t ИМЕ“ не би върнала „file“\n" +" -t Извеждане на една от думите „alias“ (Ñиноним), „keyword“\n" +" (резервирана лекÑема в обвивката), „function“ (Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ " +"дефинирана в\n" +" обвивката), „builtin“ (вградена команда), „file“ (изпълним файл) " +"или\n" +" „“, ако ИМЕто не е открито\n" +" \n" +" Ðргументи:\n" +" ИМЕ Името, за което да Ñе изведе информациÑ.\n" +" \n" +" Изходен код:\n" +" 0, ако вÑички подадени ИМЕна Ñа открити, неуÑпех, ако нÑкое от Ñ‚ÑÑ… " +"липÑва." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"ПромÑна на реÑурÑите на обвивката.\n" +" \n" +" Командата оÑъщеÑтвÑва контрол върху реÑурÑите, които Ñа доÑтъпни на\n" +" процеÑите Ñтартирани през обвивката върху ÑиÑтемите, които поддържат " +"такова\n" +" управление.\n" +" \n" +" Опции:\n" +" -S използване на „мекото“ ограничение на реÑурÑ\n" +" -H използване на „твърдото“ ограничение на реÑурÑ\n" +" -a извеждат Ñе вÑички текущи ограничениÑ\n" +" -b размер на буфера за програмните гнезда\n" +" -c макÑималниÑÑ‚ размер на Ñъздадените файлове ÑÑŠÑ Ñъдържание на\n" +" паметта (core)\n" +" -d макÑималниÑÑ‚ размер на Ñегмента на Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° данни\n" +" -e макÑималниÑÑ‚ приоритет (nice)\n" +" -f макÑималниÑÑ‚ размер на файловете Ñъздадени от обвивката и " +"дъщерните\n" +" Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑи\n" +" -i макÑималниÑÑ‚ брой на изчакващите Ñигнали\n" +" -l макÑималниÑÑ‚ размер памет, коÑто Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¼Ð¾Ð¶Ðµ да заключи\n" +" -m макÑималниÑÑ‚ поÑтоÑнно зареден в паметта Ñегмент\n" +" -n макÑималниÑÑ‚ брой деÑкриптори на отворени файлове\n" +" -p размер на буфера за програмни канали\n" +" -q макÑималниÑÑ‚ брой байтове в опашките за ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ POSIX\n" +" -r макÑималниÑÑ‚ приоритет за реално време\n" +" -s макÑималниÑÑ‚ размер на Ñтека\n" +" -t макÑималното процеÑорно време в Ñекунди\n" +" -u макÑималниÑÑ‚ брой потребителÑки процеÑи\n" +" -v размерът на виртуалната памет\n" +" -x макÑималниÑÑ‚ брой Ð·Ð°ÐºÐ»ÑŽÑ‡Ð²Ð°Ð½Ð¸Ñ Ð½Ð° файлове\n" +" -P макÑималниÑÑ‚ брой пÑевдотерминали\n" +" -T макÑималниÑÑ‚ брой нишки\n" +" \n" +" Ðе вÑички Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ñа налични на вÑички платформи.\n" +" \n" +" Ðко е зададено ОГРÐÐИЧЕÐИЕ, то това е новата ÑтойноÑÑ‚ на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ " +"реÑурÑ.\n" +" Специалните ÑтойноÑти „soft“, „hard“ и „unlimited“ означават текущите " +"меко,\n" +" твърдо и никакво ограничение Ñъответно. Ð’ противен Ñлучай Ñе извежда\n" +" текущата ÑтойноÑÑ‚ на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ€ÐµÑурÑ. Ðко не е зададена опциÑ, Ñе " +"приема,\n" +" че е зададена „-f“.\n" +" \n" +" СтойноÑтите Ñа в блокове от по 1024 байта, Ñ Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ на:\n" +" ⃠опциÑта „-t“, при коÑто ÑтойноÑтта е в Ñекунди;\n" +" ⃠опциÑта „-p“, при коÑто блоковете Ñа от по 512 байта;\n" +" ⃠опциÑта „-u“, при коÑто ÑтойноÑтта е точниÑÑ‚ брой процеÑи.<\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако не възникни грешка или е дадена неправилна опциÑ." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Извеждане или промÑна на маÑката за доÑтъпа до новоÑъздадени файлове.\n" +" \n" +" Задава МÐСКÐта за правата за доÑтъп до новоÑъздадени файлове. Ðко не е\n" +" зададена МÐСКÐ, Ñе извежда текущата Ñ ÑтойноÑÑ‚.\n" +" \n" +" Ðко МÐСКÐта започва Ñ Ñ†Ð¸Ñ„Ñ€Ð°, Ñ‚Ñ Ñе тълкува като оÑмично чиÑло. Ð’ " +"противен\n" +" Ñлучай трÑбва да е низ, който би бил приет от командата chmod(1).\n" +" \n" +" Опции:\n" +" -p ако не е зададена МÐСКÐ, изведениÑÑ‚ низ може да бъде ползван за " +"вход\n" +" -S изведената маÑка да е във вид на ÐИЗ. Без опциÑта изходът е " +"оÑмично\n" +" чиÑло\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако МÐСКÐта или нÑÐºÐ¾Ñ Ð¾Ñ‚ зададените опции Ñа неправилни." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Изчакване на завършването задача и връщане на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´.\n" +" \n" +" Изчакване на вÑички указани ИДентификатори, които могат да Ñа номера на\n" +" процеÑи или указатели на задачи, и докладване на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. Ðко не " +"е\n" +" зададен ИДентификатор, Ñе изчакват вÑички активни дъщерни процеÑи, а\n" +" изходниÑÑ‚ код е 0. Ðко ИДентификаторът е указател на задача, Ñе " +"изчакват\n" +" вÑички процеÑи в конвейера на задачата.\n" +" \n" +" Ðко е зададена опциÑта „-n“, Ñе изчаква ÐºÑ€Ð°Ñ Ð½Ð° работата на Ñледващата\n" +" задача и Ñе връща Ð½ÐµÐ¹Ð½Ð¸Ñ ÐºÐ¾Ð´.\n" +" \n" +" Ðко е зададена опциÑта „-n“ и управлението на задачите е включено, Ñе\n" +" изчаква завършването на процеÑа/задачата Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ‚Ðµ ИДентификатори " +"вмеÑто\n" +" ÑмÑната на ÑÑŠÑтоÑнието им.\n" +" \n" +" Изходен код:\n" +" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледната задача или процеÑ. Ðко е зададена\n" +" неправилна опциÑ, връща грешка." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Изчакване на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸ докладване за Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´.\n" +" \n" +" Изчакване на вÑички указани процеÑи и докладване за Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. Ðко " +"не е\n" +" зададен ИДентификатор_ПРоцeÑ, вÑички текущо активни дъщерни процеÑи Ñе\n" +" изчакват и изходниÑÑ‚ код е 0. ИДентификатор_ПРоцeÑ Ñ‚Ñ€Ñбва да " +"ÑъответÑтва на\n" +" нÑкой процеÑ.\n" +" \n" +" Изходен код:\n" +" Ð˜Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на процеÑа Ñ Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€. Грешка, ако е даден\n" +" неправилен идентификатор или е дадена неправилна опциÑ." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Изпълнение на команда за вÑеки член в ÑпиÑък от елементи\n" +" \n" +" Цикълът „for“ изпълнÑва поÑледователноÑÑ‚ от команди за вÑеки член в " +"ÑпиÑък\n" +" от елементи. Ðко блокът „в ДУМИ…“ не приÑÑŠÑтва, използва Ñе „in \"$@" +"\"“.\n" +" За вÑеки елемент в ДУМИте, ИМЕто Ñе задава да е елементът и Ñе " +"изпълнÑват\n" +" КОМÐÐДИте.\n" +" \n" +" Изходен код:\n" +" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледно изпълнената команда." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ðритметичен цикъл чрез „for“\n" +" Еквивалентно на:\n" +" (( ИЗРÐЗ_1 ))\n" +" while (( ИЗРÐЗ_2 )); do\n" +" КОМÐÐДИ\n" +" (( EXP_3 ))\n" +" done\n" +" ИЗРÐЗ_1, ИЗРÐЗ_2, и ИЗРÐЗ_3 Ñа аритметични изрази. Ð’Ñеки изпуÑнат израз " +"Ñе\n" +" изчиÑлÑва да е 1.\n" +" \n" +" Изходен код:\n" +" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледно изпълнената команда." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Избор на думи от ÑпиÑък и изпълнение на команди.\n" +" \n" +" ДУМИте биват замеÑтвани, което води до Ñъздаването на ÑпиÑък Ñ Ð´ÑƒÐ¼Ð¸.\n" +" Ðаборът от замеÑтените думи бива отпечатан на изхода за Ñтандартната\n" +" грешка, като вÑÑка от Ñ‚ÑÑ… Ñе предшеÑтва от номер. Ðко клаузата „in " +"ДУМИ“\n" +" липÑва, използва Ñе „in \"$@\"“. Ð’ такива Ñлучаи Ñе отпечатва " +"подÑказката\n" +" „PS3“ и от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ Ñе прочита ред. Ðко редът Ñе ÑÑŠÑтои от " +"номера,\n" +" който ÑъответÑтва на нÑÐºÐ¾Ñ Ð¾Ñ‚ изведените думи, ИМЕто Ñе задава да е " +"тази\n" +" дума. Ðко редът е празен, отново Ñе отпечатват ДУМИте и подÑказката. " +"Ðко\n" +" Ñе прочете „EOF“, командата завършва. Ð’ÑÑка друга ÑтойноÑÑ‚ приÑвоÑва " +"„null“\n" +" на ИМЕ. ПрочетениÑÑ‚ ред Ñе запазва в променливата REPLY. КОМÐÐДИте Ñе\n" +" изпълнÑват Ñлед вÑеки избор до изпълнÑването на команда за прекъÑване\n" +" (break).\n" +" \n" +" Изходен код:\n" +" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледно изпълнената команда." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Отпечатване на времето за изпълнение на програмен канал.\n" +" \n" +" Изпълнение на ПРОГРÐМÐиÑ_КÐÐÐЛ и отпечатване на обобщение за реалното,\n" +" потребителÑкото и ÑиÑтемно процеÑорни времена, които изпълнението на\n" +" ПРОГРÐМÐиÑ_КÐÐÐЛ отнема.\n" +" \n" +" Опции:\n" +" -p: извеждане на ÑтатиÑтиката за времето във формат POSIX\n" +" \n" +" СтойноÑтта на променливата на Ñредата „TIMEFORMAT“ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ\n" +" формат.\n" +" \n" +" Изходен код:\n" +" ИзходниÑÑ‚ код е този на ПРОГРÐМÐиÑ_КÐÐÐЛ." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Изпълнение на команди на базата на напаÑване по шаблон.\n" +" \n" +" Избирателно Ñе изпълнÑват КОМÐÐДИ на база ДУМÐ, коÑто напаÑва на " +"ШÐБЛОÐ.\n" +" Шаблоните Ñе разделÑÑ‚ ÑÑŠÑ Ð·Ð½Ð°ÐºÐ° „|“.\n" +" \n" +" Изходен код:\n" +" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Изпълнение на команда на базата на уÑловие.\n" +" \n" +" Първо Ñе изпълнÑват командите в блока „if КОМÐÐДИ“. Ðко изходниÑÑ‚ код е " +"0,\n" +" то Ñе изпълнÑва блокът „then КОМÐÐДИ“. Ð’ противен Ñлучай поÑледователно " +"Ñе\n" +" изпълнÑва вÑеки блок „elif КОМÐÐДИ“ — ако изходниÑÑ‚ код е 0, то Ñе " +"изпълнÑва\n" +" ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð±Ð»Ð¾Ðº „then КОМÐÐДИ“, Ñлед което завършва изпълнението на " +"целиÑ\n" +" блок „if“.\n" +" Ðко изходниÑÑ‚ код на никой от блоковете „if“ и „elif“ не е бил 0,\n" +" изпълнÑва Ñе блока „else КОМÐÐДИ“, Ñтига такъв да приÑÑŠÑтва. ИзходниÑÑ‚ " +"код\n" +" от цÑлата конÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ðµ този на поÑледната изпълнена команда или е 0, " +"ако\n" +" никое теÑтово уÑловие, не Ñе е оценило като иÑтина.<\n" +" \n" +" Изходен код:\n" +" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Изпълнение на команда докато определен теÑÑ‚ е уÑпешен.\n" +" \n" +" ЗамеÑтване и изпълнение на КОМÐÐДИте докато поÑледната команда в блока\n" +" „while“ е Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код, който е 0.\n" +" \n" +" Изходен код:\n" +" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Изпълнение на команда докато определен теÑÑ‚ е неуÑпешен.\n" +" \n" +" ЗамеÑтване и изпълнение на КОМÐÐДИте докато поÑледната команда в блока\n" +" „until“ е Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код, който не е 0.\n" +" \n" +" Изходен код:\n" +" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Създаване на ÐºÐ¾Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ Ð´Ð°Ð´ÐµÐ½Ð¾Ñ‚Ð¾ ИМЕ.\n" +" \n" +" ÐÑинхронно изпълнение на КОМÐÐДÐта, като Ñтандартните вход и изход Ñе\n" +" пренаÑочват от и към файловите деÑкриптори, които трÑбва да Ñа Ñ " +"индекÑи\n" +" Ñъответно 0 и 1 в променливата-маÑив ИМЕ в изпълнÑваната обвивка. Ðко " +"не е\n" +" дадено ИМЕ на променлива, Ñтандартно Ñе ползва „COPROC“.\n" +" \n" +" Изходен код:\n" +" ИзходниÑÑ‚ код е 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Дефиниране на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката.\n" +" \n" +" Създаване на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð¾Ñ‚Ð¾ ИМЕ. Когато Ñе извика " +"като\n" +" обикновена команда, КОМÐÐДИте Ñе изпълнÑват в контекÑта на извикващата\n" +" обвивка. При извикването на ИМЕто, аргументите подадени на функциÑта " +"Ñа\n" +" доÑтъпни като $1,… , $9, а името на функциÑта е доÑтъпно като " +"$FUNCNAME.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако ИМЕто не е Ñамо за четене." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Изпълнение на група от команди.\n" +" \n" +" ИзпълнÑване на цÑл набор от команди в група. Това е един от начините да " +"Ñе\n" +" пренаÑочи цÑл набор от команди.\n" +" \n" +" Изходен код:\n" +" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"ВъзобновÑване на заден фон на изпълнението на задача\n" +" \n" +" Еквивалентно на аргумента ЗÐДÐЧРна командата „fg“. ВъзобновÑва ÑпрÑна\n" +" задача или такава на заден фон. ЗÐДÐЧÐта може да указва или име, или\n" +" номер на задача. Ðко Ñлед ЗÐДÐЧÐта Ñе въведе знакът „&“, задачата\n" +" Ñе изпълнÑва във фонов режим, вÑе едно е била подадена като аргумент\n" +" на командата „bg“.\n" +" \n" +" Изходен код:\n" +" ИзходниÑÑ‚ код е този възобновената задача." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"ИзчиÑлÑване на аритметичен израз\n" +" \n" +" ИЗРÐЗът Ñе изчиÑлÑва Ñпоред правилата на аритметичното оценÑване.\n" +" Еквивалентно на „let ИЗРÐЗ“.\n" +" \n" +" Изходен код:\n" +" 1, ако резултатът на ИЗРÐЗа е 0. Ð’ противен Ñлучай — 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Изпълнение на команда-уÑловие\n" +" \n" +" Връща ÑÑŠÑтоÑние 0 или 1 в завиÑимоÑÑ‚ от оценката на уÑÐ»Ð¾Ð²Ð½Ð¸Ñ Ð˜Ð—Ð ÐЗ.\n" +" Изразите Ñа ÑÑŠÑтавени от Ñъщите примитиви, както вградената команда " +"„test“\n" +" и могат да Ñе Ñъчетават чрез Ñледните оператори:\n" +" \n" +" ( ИЗРÐЗ ) Връща ÑтойноÑтта на ИЗРÐЗа\n" +" ! ИЗРÐЗ ИÑтина, ако ИЗРÐЗ Ñе Ð¾Ñ†ÐµÐ½Ñ Ð½Ð° лъжа, в оÑтаналите Ñлучаи е " +"лъжа\n" +" ИЗРÐЗ_1 && ИЗРÐЗ_2\n" +" ИÑтина, ако едновременно ИЗРÐЗ_1 и ИЗРÐЗ_2 Ñа иÑтина, в\n" +" оÑтаналите Ñлучаи е лъжа.\n" +" ИЗРÐЗ_1 || ИЗРÐЗ_2\n" +" ИÑтина, ако поне единиÑÑ‚ от ИЗРÐЗ_1 и ИЗРÐЗ_2 е иÑтина, в\n" +" оÑтаналите Ñлучаи е лъжа.\n" +" \n" +" Когато Ñе използват операторите „==“ и „!=“, низът от дÑÑната Ñтрана на\n" +" оператора Ñе използва като шаблон и Ñе извършва напаÑване. Когато Ñе " +"ползва\n" +" операторът „=~“, изразът от дÑÑната му Ñтрана Ñе тълкува като регулÑрен\n" +" израз.\n" +" \n" +" Операторите „&&“ и „||“ не оценÑÑ‚ ИЗРÐЗ_2, ако ИЗРÐЗ_1 е доÑтатъчен за\n" +" определÑне на ÑтойноÑтта на израза.\n" +" \n" +" Изходен код:\n" +" 0 или едно Ñпоред ÑтойноÑтта на ИЗРÐЗа." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"ЧеÑто използване промени на обвивката\n" +" \n" +" BASH_VERSION Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта на bash\n" +" CDPATH СпиÑък Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸ разделени Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ, които да Ñе\n" +" търÑÑÑ‚ като аргументи за командата „cd“\n" +" GLOBIGNORE СпиÑък Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸ на файлови имена, разделени Ñ " +"двоеточие,\n" +" които да Ñе игнорират от замеÑтването на пътÑ\n" +" HISTFILE Името на файла, в който Ñе ÑъхранÑва иÑториÑта на " +"командите\n" +" HISTFILESIZE МакÑималниÑÑ‚ брой редове, които горниÑÑ‚ файл може да " +"Ñъдържа\n" +" HISTSIZE МакÑималниÑÑ‚ брой редове, които една работеща обвивка " +"може\n" +" да доÑтъпи\n" +" HOME ПълниÑÑ‚ път до домашната ви директориÑ\n" +" HOSTNAME Името на текущата машина\n" +" HOSTTYPE Видът на процеÑора, под който работи текущата обвивка\n" +" IGNOREEOF УправлÑва дейÑтвието на обвивката при Ñрещането на " +"единичен\n" +" знак за край на файл „EOF“. Ðко променливата е " +"зададена, Ñ‚Ñ\n" +" указва Ð±Ñ€Ð¾Ñ Ð½Ð° знаците „EOF“, който могат да Ñе Ñрещнат\n" +" ÑамоÑтоÑтелно на един ред, преди обвивката да завърши " +"работа\n" +" и излезе (Ñтандартно е 10). Когато променливата не е\n" +" зададена, един „EOF“ означава край на входÑщите данни\n" +" MACHTYPE Ðиз, който опиÑва текущата ÑиÑтема, на коÑто работи " +"bash\n" +" MAILCHECK Колко чеÑто bash да проверÑва за нови пиÑма (в Ñекунди)\n" +" MAILPATH СпиÑък Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ, които bash проверÑва за нови пиÑма\n" +" OSTYPE ВерÑиÑта на ЮникÑ, на коÑто работи bash\n" +" PATH СпиÑък Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸, които да Ñе претърÑват за команди\n" +" PROMPT_COMMAND Команда, коÑто да Ñе изпълнÑва преди отпечатването на\n" +" оÑновната подÑказка на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´\n" +" PS1 Ðиз за оÑновната подÑказка\n" +" PS2 Ðиз за втората подÑказка\n" +" PWD ПълниÑÑ‚ път и име на текущата директориÑ\n" +" SHELLOPTS СпиÑък Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ‚Ðµ опции на обвивката, разделени Ñ\n" +" двоеточие\n" +" TERM Името на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð²Ð¸Ð´ терминал\n" +" TIMEFORMAT ИзходниÑÑ‚ формат за ÑтатиÑтиката за времето за " +"изпълнение на\n" +" команда, който Ñе използва от запазената дума „time“\n" +" auto_resume СтойноÑÑ‚, коÑто не е „null“, означава, че командна " +"дума,\n" +" коÑто Ñе поÑвÑва ÑамоÑтоÑтелно на ред, първо Ñе " +"проверÑва в\n" +" ÑпиÑъка Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¾ Ñпрените задачи. Ðко бъде открита " +"там,\n" +" задачата Ñе пуÑка и Ñе Ñлага на преден план. СтойноÑÑ‚\n" +" „exact“ (Ñтрого Ñъвпадение) означава, че командната " +"дума,\n" +" трÑбва точно да Ñъвпада Ñ Ð¸Ð¼ÐµÑ‚Ð¾ на команда в ÑпиÑъка " +"ÑÑŠÑ\n" +" Ñпрени задачи. СтойноÑÑ‚ „substring“ (Ñъвпадение на " +"подниз)\n" +" означава, че командната дума трÑбва да е подниз на " +"задачата.\n" +" Ð’ÑÑка друга ÑтойноÑÑ‚ означава, че командата думата " +"трÑбва да\n" +" е началото на ÑпрÑна задача\n" +" histchars Знаци, които определÑÑ‚ бързото замеÑтване и това по " +"иÑториÑ.\n" +" ПървиÑÑ‚ знак е за замеÑтването по иÑториÑ, обикновено е " +"„!“.\n" +" ВториÑÑ‚ е за бързото замеÑтване, обикновено е „^“. " +"ТретиÑÑ‚\n" +" е за коментарите в иÑториÑта, обикновено е „#“\n" +" HISTIGNORE СпиÑък Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸, разделени Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ, които указват " +"кои\n" +" команди да не Ñе запазват в иÑториÑта\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"ДобавÑне на директории в Ñтека.\n" +" \n" +" Ð”Ð¾Ð±Ð°Ð²Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð² Ñтека на директориите или превърта Ñтека\n" +" като най-горна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñтава текущата директориÑ. Без\n" +" аргументи ÑÐ¼ÐµÐ½Ñ Ð½Ð°Ð¹-горните две директории.\n" +" \n" +" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ изваждането " +"на\n" +" Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ ÐºÑŠÐ¼ Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n" +" \n" +" Ðргументи:\n" +" +N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от " +"лÑвата \n" +" Ñтрана на ÑпиÑъка, изведен от командата „dirs“ като Ñе почва от " +"0)\n" +" да е най-отгоре.\n" +" \n" +" -N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от " +"дÑÑната\n" +" Ñтрана на ÑпиÑъка, изведен от командата „dirs“ като Ñе почва от " +"0)\n" +" да е най-отгоре.\n" +" \n" +" \n" +" dir Ð”Ð¾Ð±Ð°Ð²Ñ Ð”Ð˜Ð ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñта най-отгоре в Ñтека, като Ñ Ð¿Ñ€Ð°Ð²Ð¸ новата " +"текуща\n" +" работна директориÑ.\n" +" \n" +" Можете да изведете Ñтека на директориÑта Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е подаден неправилен аргумент или не може да Ñе премине " +"към\n" +" Ñъответната директориÑ." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Изваждане на директории от Ñтека.\n" +" \n" +" Маха директории от Ñтека Ñ Ñ‚ÑÑ…. Без аргументи премахва поÑледната " +"директориÑ\n" +" в Ñтека и влиза в новата поÑледна директориÑ.\n" +" \n" +" Опции:\n" +" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ изваждането " +"на\n" +" Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ ÐºÑŠÐ¼ Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n" +" \n" +" Ðргументи:\n" +" \n" +" +N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отлÑво в ÑпиÑъка изведен от\n" +" командата „dirs“, като Ñе брои от 0. Ðапр.: „popd +0“ премахва\n" +" първата директориÑ, „popd +1“ - втората.\n" +" \n" +" -N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отдÑÑно в ÑпиÑъка изведен от\n" +" командата „dirs“, като Ñе брои от 0. Ðапр.: „popd -0“ премахва\n" +" поÑледната директориÑ, „popd -1“ - предпоÑледната.\n" +" \n" +" Стекът Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸Ñ‚Ðµ Ñе визуализира Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е подаден неправилен аргумент или не може да Ñе премине " +"към\n" +" Ñъответната директориÑ." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Извеждане на Ñтека на директориите.\n" +" \n" +" Отпечатва ÑпиÑъка Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¾ запомнените директории. СпиÑъкът Ñе попълва " +"чрез\n" +" командата „pushd“. Можете да вадите директории от Ñтека Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð°\n" +" „popd“.\n" +" \n" +" Опции:\n" +" -c изчиÑтване на Ñтека на директориите като изтрива вÑички елементи\n" +" -l извеждане на пълните имена на директориите, а не Ñъкратените " +"ÑпрÑмо\n" +" домашната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð° („/homes/pesho/bin“, а не „~/bin“)\n" +" -p поредово отпечатване без Ð¿Ð¾Ñ€ÐµÐ´Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€ в Ñтека\n" +" -v поредово отпечатване заедно Ñ Ð¿Ð¾Ñ€ÐµÐ´Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€ в Ñтека\n" +" \n" +" Ðргументи: \n" +" +N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отлÑво в ÑпиÑъка отпечатан от командата " +"„dirs“,\n" +" когато е Ñтартирана без опции. Брои Ñе от 0.\n" +" -N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отдÑÑно в ÑпиÑъка отпечатан от командата " +"„dirs“,\n" +" когато е Ñтартирана без опции. Брои Ñе от 0.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Включване и изключване на опции на обвивката.\n" +" \n" +" Превключване на ÑÑŠÑтоÑнието на вÑÑка от дадените ОПЦИи на обвивката. " +"Ðко не\n" +" не Ñа зададени аргументи, Ñе извежда ÑпиÑък от Ñ Ð´Ð°Ð´ÐµÐ½Ð¸Ñ‚Ðµ ОПЦИи или " +"вÑички,\n" +" ако не Ñа дадени такива, като Ñе указва за вÑÑка дали и включена или " +"не.\n" +" \n" +" Опции:\n" +" -o ограничаване на опциите до определените за използване ÑÑŠÑ â€žset -" +"o“\n" +" -p извеждане на вÑÑка Ð¾Ð¿Ñ†Ð¸Ñ Ñ Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ дали е включена или не\n" +" -q без извеждане на информациÑ\n" +" -s включване на вÑÑка от ОПЦИИте\n" +" -u изключване на вÑÑка от ОПЦИИте\n" +" \n" +" Изходен код:\n" +" 0, ако ОПЦИЯта е включена, грешка, ако е зададена неправилна или " +"изключена\n" +" ОПЦИЯ." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Форматиране и отпечатване на ÐРГУМЕÐТИте Ñпоред управлението на ФОРМÐТа.\n" +" \n" +" Опции:\n" +" -v ПРОМЕÐЛИВРизходът Ñе поÑÑ‚Ð°Ð²Ñ Ð² ПРОМЕÐЛИВÐта на обвивката, вмеÑто " +"да\n" +" Ñе извежда на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n" +" \n" +" ФОРМÐТът е поÑледователноÑÑ‚ от знаци, коÑто Ñъдържа три вида обекти:\n" +" ⃠обикновени знаци, които биват отпечатани директно на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ " +"изход;\n" +" ⃠екраниращи знакови поÑледователноÑти, които биват преобразувани и\n" +" отпечатани на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´;\n" +" ⃠форматиращи знакови поÑледователноÑти, вÑÑка от които предизвиква\n" +" отпечатването на Ñледващ аргумент.\n" +" \n" +" ОÑвен Ñтандартните Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ð¾Ð¿Ð¸Ñани в ръководÑтвото на printf(1), " +"printf\n" +" приема и Ñледните инÑтрукции:\n" +" %b предизвиква замеÑтването на екранираниÑта Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾ наклонени\n" +" черти в ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚\n" +" %q предизвиква цитирането на аргумента, така че да може да бъде\n" +" използван като вход за обвивката\n" +" %(fmt) отпечатване на низа при третиране на аргумента като дата и " +"време\n" +" Ñпоред strftime(3)\n" +" \n" +" Форматът Ñе преизползва до приемането на вÑички аргументи. Ðко има по-\n" +" малко аргументи от поÑочените във форма̀та, поведението на допълнителните " +"е\n" +" вÑе едно за аргумент да Ñа подадени нулева ÑтойноÑÑ‚ или празен низ.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако не е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка при\n" +" извеждането на резултата или при приÑвоÑването на ÑтойноÑтта." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Указване на начина на автоматичното допиÑване на аргументите от Readline.\n" +" \n" +" За вÑÑко ИМЕ Ñе извежда начинът за допиÑване на аргументите. Ðко не Ñа\n" +" дадени никакви опции, Ñе извеждат текущите инÑтрукции за автоматично\n" +" допиÑване във формат, който може да Ñе използва за вход.\n" +" \n" +" Опции:\n" +" -p Извеждане на текущите инÑтрукции за автоматично допиÑване във " +"формат,\n" +" който може да Ñе използва за вход\n" +" -r Премахване на инÑтрукциите за автоматично допиÑване на вÑÑко ИМЕ, " +"а\n" +" когато такова не е указано — вÑички инÑтрукции\n" +" -D Прилагане на допиÑваниÑта и дейÑтвиÑта като Ñтандартните за " +"командите,\n" +" без никакви Ñпецифични инÑтрукции\n" +" -E Прилагане на допиÑваниÑта и дейÑтвиÑта като тези на „празната“\n" +" команда — когато вÑе още нищо не е напиÑано на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´\n" +" -I Прилагане на допиÑваниÑта и дейÑтвиÑта към първата дума " +"(обикновено\n" +" това е командата)\n" +" \n" +" При извършване на автоматично допиÑване, дейÑтвиÑта Ñе прилагат в реда " +"на\n" +" опциите Ñ Ð³Ð»Ð°Ð²Ð½Ð° буква дадени по-горе. ОпциÑта „-D“ е Ñ Ð¿Ð¾-виÑок " +"приоритет\n" +" от „-E“, коÑто има по-виÑок приоритет от „-I“.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен когато е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Извеждане на възможните допиÑваниÑ.\n" +" \n" +" Целта е да Ñе ползва в рамките Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката, коÑто генерира\n" +" възможните допиÑваниÑ. Ðко е зададен незадължителниÑÑ‚ аргумент ДУМÐ,\n" +" генерират Ñе напаÑваниÑта Ñ Ð½ÐµÐ³Ð¾.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен ако е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"ПроменÑне или извеждане на опциите за допиÑване.\n" +" \n" +" ПроменÑне на опциите допиÑване за вÑÑко ИМЕ, или когато не Ñа указани\n" +" ИМЕна — допиÑването, което Ñе изпълнÑва в момента. Ðко не Ñа зададени\n" +" ОПЦИи, извеждане на на опциите за допиÑване за вÑÑко име или за текущо\n" +" изпълнÑваното допиÑване.\n" +" \n" +" Опции:\n" +" -o ОПЦИЯ\n" +" Задаване ОПЦИЯта за допиÑване за вÑÑко зададено ИМЕ\n" +" -D Задаване на опциите за „Ñтандартното“ допиÑване на команда\n" +" -E Задаване на опциите за допиÑването на „празната“ команда\n" +" -I Задаване на опциите за допиÑването на първата дума\n" +" Използването на „+o“ вмеÑто „-o“ изключва дадената опциÑ.\n" +" \n" +" Ðргументи:\n" +" \n" +" Ð’ÑÑко ИМЕ указва команда, за коÑто трÑбва предварително да е зададена\n" +" ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð° допиÑване чрез вградената команда „complete“. Ðко не " +"Ñа\n" +" зададени ИМЕна, командата „compopt“ трÑбва да бъде изпълнена от " +"функциÑ,\n" +" коÑто генерира Ñпецификациите за допиÑване. Ð’ този Ñлучай опциите за " +"текущо\n" +" изпълнÑÐ²Ð°Ð½Ð¸Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ‚Ð¾Ñ€ на допиÑÐ²Ð°Ð½Ð¸Ñ Ñе променÑÑ‚.\n" +" \n" +" Изходен код:\n" +" 0, оÑвен когато е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ липÑват инÑтрукции към " +"ИМЕто\n" +" за автоматично допиÑване." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Изчитане на редове от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ и запазване в променлива — " +"индекÑиран\n" +" низ.\n" +" \n" +" Прочитане на редове от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´, които Ñлед това Ñе запазват в\n" +" променливата МÐСИВ. Когато е дадена опциÑта „-u“, Ñе чете от\n" +" ФÐЙЛов_ДЕСКРиптор. Стандартното име на променливата-маÑив е MAPFILE.\n" +" \n" +" Опции:\n" +" -d РÐЗДЕЛИТЕЛ РÐЗДЕЛÑне на редовете Ñ Ñ‚Ð¾Ð·Ð¸ знак, а не Ñ Ð½Ð¾Ð² ред\n" +" -n МÐКС_РЕДРИзчитане на не повече от МÐКСимум РЕДа. Ðко е 0, Ñе\n" +" прочитат вÑички редове\n" +" -O ÐÐЧÐЛО ПриÑвоÑването да започне при Ð¸Ð½Ð´ÐµÐºÑ ÐÐЧÐЛО в МÐСИВа\n" +" Стандартната ÑтойноÑÑ‚ е 0\n" +" -s БРОЙ_ПРОП ПреÑкачане на първите БРОЙ за ПРОПуÑкане прочетени реда\n" +" -t Премахване на поÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð·Ð½Ð°Ðº-РÐЗДЕЛител от вÑеки ред\n" +" (Ñтандартно е знакът за нов ред)\n" +" -u ФÐЙЛов_ДЕСКРиптор\n" +" Изчитане на редовете от ФÐЙЛов_ДЕСКРиптор, а не " +"ÑтандартниÑ\n" +" вход\n" +" -C ФУÐКЦИЯ ФункциÑ, коÑто Ñе извиква при изчитането на вÑеки " +"БРОЙ_РЕДÐ\n" +" -c БРОЙ_РЕДРРедове, които да Ñе изчетат преди да Ñе извика " +"ФУÐКЦИЯта\n" +" \n" +" Ðргументи:\n" +" МÐСИВ Име на променливата-маÑив\n" +" \n" +" Ðко опциÑта „-C“ е зададена без „-c“, ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð‘Ð ÐžÐ™_РЕДРе 5000. " +"При\n" +" извикването на ФУÐКЦИЯта за аргументи Ñ Ñе подават индекÑа на ÑледващиÑ\n" +" елемент от маÑива и реда, който Ñе Ñчита за ÑтойноÑÑ‚.\n" +" \n" +" Ðко не е дадено изрично ÐÐЧÐЛО, командата „mapfile“ изчиÑтва МÐСИВа, " +"преди\n" +" да започне приÑвоÑването към него.\n" +" \n" +" Изходен код:\n" +" Връща 0, оÑвен ако е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ ако МÐСИВът е " +"променлива\n" +" Ñамо за четене или не е индекÑиран маÑив." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Прочитане на редове от файл и поÑтавÑне в променлива – маÑив.\n" +" \n" +" Синоним на „mapfile“." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Връща контекÑта на текущото извикване на функциÑ.\n" +#~ " \n" +#~ " Без ИЗРÐЗ връща " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "добавÑне на процеÑ: процеÑÑŠÑ‚ %5ld (%s) е в Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð»" + +#~ msgid "Unknown Signal #" +#~ msgstr "Ðепознат Ñигнал #" diff --git a/bash-5.1/po/boldquot.sed b/bash-5.1/po/boldquot.sed new file mode 100644 index 0000000..4b937aa --- /dev/null +++ b/bash-5.1/po/boldquot.sed @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1â€/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“â€/""/g +s/“/“/g +s/â€/â€/g +s/‘/‘/g +s/’/’/g diff --git a/bash-5.1/po/ca.gmo b/bash-5.1/po/ca.gmo new file mode 100644 index 0000000000000000000000000000000000000000..0b94a7a0c4a33dba042b7450f868af413767e0ca GIT binary patch literal 143614 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 VOx;W81165@h*R2$bp)gL{{oycISK#( literal 0 HcmV?d00001 diff --git a/bash-5.1/po/ca.po b/bash-5.1/po/ca.po new file mode 100644 index 0000000..f1cadd2 --- /dev/null +++ b/bash-5.1/po/ca.po @@ -0,0 +1,5985 @@ +# Catalan messages for GNU bash. +# Copyright (C) 2002, 2003, 2010, 2014, 2015, 2017 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Montxo Vicente i Sempere , 2003 (traducció), 2010 (revisions). +# Jordi Mas i Hernàndez , 2004 (correccions). +# Ernest Adrogué Calveras , 2014, 2015, 2017. +msgid "" +msgstr "" +"Project-Id-Version: bash-4.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2017-01-10 20:11+0100\n" +"Last-Translator: Ernest Adrogué Calveras \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "subíndex erroni" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: s'elimina l'atribut «nameref»" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: no és possible convertir un vector indexat en associatiu" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: clau de vector associatiu no vàlida" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: no es pot assignar a un índex no-numèric" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: l'assignació en vectors associatius requereix un subíndex" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: no es pot crear: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: no s'ha trobat el mapa de tecles per a l'ordre" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: el primer caràcter no-blanc no és «\"»" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "falta un caràcter de tancament «%c» a %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: falta un caràcter «:» de separació" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "«%s»: no es pot desvincular" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "expansió de claus: no es pot assignar memòria per a %s" + +#: braces.c:406 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "expansió de claus: ha fallat l'assignació de memòria per a %d elements" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "expansió de claus: ha fallat l'assignació de memòria per a «%s»" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "«%s»: el nom de l'àlies no és valid" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "l'edició de línia no està habilitada" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "«%s»: el nom del mapa de tecles no és vàlid" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: no es pot llegir: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "«%s»: nom de funció desconegut" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s no està vinculat a cap tecla.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s pot ser invocat via " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: no es pot desvincular" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "nombre d'iteracions" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "només té sentit en una iteració de tipus «for», «while» o «until»" + +# help caller +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Retorna el context de la subrutina actual.\n" +"\n" +" Sense EXPR, torna \"$línia $nomfitxer\". Amb EXPR, torna \"$línia\n" +" $subrutina $nomfitxer\"; aquesta informació addicional es pot utilitzar\n" +" per a proporcionar un traçat de la pila.\n" +"\n" +" El valor de EXPR indica quants «frames» retrocedir des de l'actual; el\n" +" «frame» superior és el 0.\n" +"\n" +" Estat de sortida:\n" +" Retorna 0 excepte si l'intèrpret no està executant una funció o si EXPR\n" +" no és una expressió vàlida." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "la variable HOME no està definida" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "sobren arguments" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "directori nul" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "la variable OLDPWD no està definida" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "línia %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "atenció: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: sintaxi: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: l'opció requereix un argument" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: falta un argument numèric" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: no s'ha trobat" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: l'opció no és vàlida" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: el nom de l'opció no és vàlid" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "«%s»: no és un identificador vàlid" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "nombre octal no vàlid" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "nombre hexadecimal no vàlid" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "nombre no vàlid" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: especificació de senyal no vàlida" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "«%s»: pid o especificació de feina no vàlids" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: variable de només lectura" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s fora del domini" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s fora del domini" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: no existeix tal feina" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: no hi ha control de feines" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "no hi ha control de feines" + +# cd .. en un intèrpret restringit +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: restringit" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "restringit" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: no és una ordre interna de l'intèrpret" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "error d'escriptura: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "error en establir els atributs del terminal: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "error en obtenir els atributs del terminal: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: error en obtenir el directori actual: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: l'especificació de feina és ambigua" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "aquesta versió no té ajuda disponible" + +# unset UID +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: no es pot suprimir: %s de només lectura" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: no es pot suprimir" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nom d'acció no vàlid" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: no hi ha especificació de compleció" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "atenció: l'opció -F pot no funcionar com us espereu" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "atenció: l'opció -C pot no funcionar com us espereu" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "no s'està executant una funció de compleció" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "només es pot utilitzar en una funció" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: una variable referència no pot ser un vector" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: no es permeten autoreferències en variables referència" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: referència circular" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "«%s»: la variable referència conté un nom de variable no vàlid" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "no és possible usar «-f» per convertir en funció" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funció de només lectura" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" +"%s: es desaconsella l'assignació múltiple en vectors utilitzant cometes" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: no és possible destruir variables vector d'aquesta manera" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: no és possible convertir un vector associatiu en indexat" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "no es poden carregar biblioteques dinàmicament" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "no es pot obrir l'objecte compartit %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "no s'ha trobat %s a l'objecte compartit %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: no s'ha carregat dinàmicament" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "l'intent de carregar %s ha fallat (%d): no carregat" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: no s'ha carregat dinàmicament" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: no es pot eliminar: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: és un directori" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: no és un fitxer ordinari" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: el fitxer és massa gran" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: no es poden executar fitxers binaris" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: no es pot executar: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "desconnectat\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "no és una sessió d'entrada: utilitzeu «exit»" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Hi ha feines aturades.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Hi ha feines en funcionament.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "no s'ha trobat cap ordre" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "especificació d'historial" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: no es pot obrir el fitxer temporal: %s" + +# fg quan no hi ha cap feina en segon pla +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "actual" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "la feina %d es va iniciar sense control de feines" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opció il·legal -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: l'opció requereix un argument -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "el «hashing» està deshabilitat" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: la taula «hash» és buida\n" + +# hash (sense arguments) +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "vegades\tordre\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Ordres de l'intèrpret coincidents amb '" +msgstr[1] "Ordres de l'intèrpret coincidents amb '" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"no hi ha ajuda sobre «%s». Proveu «help help», «man -k %s» o «info %s»." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: no es pot obrir: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Aquestes ordres de l'intèrpret estan definides internament.\n" +"Feu «help» per a veure'n una llista. \n" +"Feu «help nom» per a obtenir informació sobre la funció «nom».\n" +"Feu «info bash» per a obtenir informació general sobre l'intèrpret.\n" +"Feu «man -k» o «info» per a obtenir informació sobre altres programes.\n" +"\n" +"Un asterisc (*) significa que l'ordre està deshabilitada.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "no és possible usar més d'una opció d'entre -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "posició a l'historial" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: la marca horària no és vàlida" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: ha fallat l'expansió de l'historial" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib ha fallat" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "no es permeten altres opcions amb «-x»" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: els arguments han de ser ids de processos o feines" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Error desconegut" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "s'esperava una expressió" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: no és un vector indexat" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: l'especificació de descriptor de fitxer no és vàlida" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: el descriptor de fitxer no és vàlid: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: el nombre de línies no és vàlid" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: l'origen del vector no és vàlid" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: el quàntum de retorn no és vàlid" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "nom de variable vector en blanc" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "fa falta suport per a variables vector" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "«%s»: falta un caràcter de format" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "«%c»: l'especificació de format de temps no és vàlida" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "«%c»: el caràcter de format no és vàlid" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "atenció: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "problema en interpretar el format: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "falta un dígit hexadecimal a \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "falta un dígit Unicode a \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "no hi ha més directoris" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: l'argument no és vàlid" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "la pila de directoris està buida" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "índex de la pila de directoris" + +# còpia parcial d'una altra cadena - l'original es troba més endavant +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Mostra la llista actual de directoris recordats. Els directoris són " +"afegits\n" +" a la llista mitjançant l'ordre «pushd»; podeu recórrer la llista de\n" +" directoris cap enrere amb l'ordre «popd».\n" +"\n" +" Opcions:\n" +" -c neteja la pila, esborrant-ne tots els elements\n" +" -l no mostra les versions abreviades (amb el prefix ~) dels\n" +" directoris relatius al vostre directori personal\n" +" -p mostra la pila, una entrada per línia\n" +" -v mostra la pila, una entrada per línia indicant la posició a\n" +" la pila\n" +"\n" +" Arguments:\n" +" +N Mostra l'entrada N-èssima, comptant des de l'esquerra de la\n" +" llista mostrada per «dirs» quan s'invoca sense opcions, \n" +" començant des de zero.\n" +"\n" +" -N Mostra l'entrada N-èssima, comptant des de la dreta de la\n" +" llista mostrada per «dirs» quan s'invoca sense opcions,\n" +" començant des de zero." + +# còpia parcial d'una altra cadena - l'original es troba més endavant +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Afegeix un directori al capdamunt de la pila de directoris, o fa girar la\n" +" llista, de manera que al capdamunt de la pila hi queda el directori de\n" +" treball corrent. Sense arguments, intercanvia els dos directoris de " +"més\n" +" amunt.\n" +"\n" +" Opcions:\n" +" -n Omet el canvi de directori quan s'afegeixen directoris a la\n" +" pila, de manera que només canvia el contingut de la pila.\n" +"\n" +" Arguments:\n" +"\n" +" +N Gira la llista de manera tal que l'N-èssim directori\n" +" (comptant des de l'esquerra de la llista que mostra «dirs»,\n" +" començant des de zero) queda a dalt de tot.\n" +"\n" +" -N Gira la llista de manera tal que l'N-èssim directori\n" +" (comptant des de la dreta de la llista que mostra «dirs»,\n" +" començant des de zero) queda a dalt de tot.\n" +"\n" +" dir Afegeix DIR al capdamunt de la pila de directoris, i el\n" +" converteix en el nou directori de treball corrent.\n" +"\n" +" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs»." + +# còpia parcial d'una altra cadena - l'original es troba més endavant +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Elimina entrades de la pila de directoris. Sense arguments, elimina el\n" +" directori al capdamunt de la pila, i canvia al nou directori de dalt de\n" +" la pila.\n" +"\n" +" Opcions:\n" +" -n Omet el canvi de directori quan s'eliminen directoris de la\n" +" pila, de manera que només canvia el contingut de la pila.\n" +"\n" +" Arguments:\n" +" +N Elimina l'entrada N-èssima, comptant des de l'esquerra de la\n" +" llista que mostra «dirs», començant des de zero. Per\n" +" exemple: «popd +0» elimina el primer directori, i «popd +1»\n" +" el segon.\n" +"\n" +" -N Elimina l'entrada N-èssima, comptant des de la dreta de la\n" +" llista que mostra «dirs», començant des de zero. Per\n" +" exemple: «popd -0» elimina l'últim directori, i «popd -1» el\n" +" penúltim.\n" +"\n" +" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs»." + +# read -t -5 +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: el límit de temps no és vàlid" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "error de lectura: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "només es permet fer «return» des d'una funció o script" + +# unset -f -v foo +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "no és possible suprimir una funció i una variable alhora" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: no és una variable vector" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: no és una funció" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: no es pot exportar" + +# shift -4 +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "nombre de «shifts»" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "no es poden activar i desactivar opcions de forma simultània" + +# shopt -s foo +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: l'opció de l'intèrpret no és vàlida" + +# source +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "fa falta un nom de fitxer" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: no s'ha trobat el fitxer" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "no es pot suspendre" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "no és possible suspendre un intèrpret d'entrada" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s és un àlies de «%s»\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s és una paraula clau de l'intèrpret\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s és una funció\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s és una ordre interna especial\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s és una ordre interna\n" + +# type dmesg +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s és %s\n" + +# hash cp; type cp +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s és a la taula «hash» (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: el límit no és vàlid" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "«%c»: ordre errònia" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: no es pot obtenir el límit: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "límit" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: no es pot modificar el límit: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "nombre octal" + +# umask z=rwx +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "«%c»: l'operador de mode simbòlic no és vàlid" + +# umask u=rwz +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "«%c»: el mode simbòlic conté caràcters no vàlids" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " línia " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "última ordre: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Avortant..." + +# prefix afegit als avisos infomatius interns (internal_inform) +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORMACIÓ: " + +#: error.c:462 +msgid "unknown command error" +msgstr "error no identificat" + +#: error.c:463 +msgid "bad command type" +msgstr "tipus d'ordre erroni" + +#: error.c:464 +msgid "bad connector" +msgstr "connector erroni" + +#: error.c:465 +msgid "bad jump" +msgstr "salt erroni" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variable no definida" + +# SIGALRM +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\atemps esgotat mentre s'esperaven dades: autodesconnexió\n" + +# error intern +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "no s'ha pogut redirigir l'entrada estàndard des de /dev/null: %s" + +# error intern +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: «%c»: el caràcter de format no és vàlid" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: el coprocés [%d:%s] encara existeix" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "error de canonada" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: excedit el nombre màxim d'imbricacions per a «source» (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: excedit el nombre màxim de funcions imbricades (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restricció: no podeu especificar «/» en noms d'ordres" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: no s'ha trobat l'ordre" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: intèrpret erroni" + +# error intern +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: no es pot executar el fitxer binari: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "«%s»: és una ordre interna especial" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "no s'ha pogut duplicar l'fd %d com a fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "excedit el nivell màxim de recursivitat per a expressions" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "«underflow» a la pila de recursivitat" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "error de sintaxi a l'expressió" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "intent d'assignació a una no-variable" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "error de sintaxi a l'expressió" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "divisió per 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "bug: el component «expassign» és erroni" + +# echo $((4 > 5 ? 0)) +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "falta un caràcter «:» a l'expressió condicional" + +# echo $((4 ** -1)) +#: expr.c:972 +msgid "exponent less than 0" +msgstr "exponent menor que 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "fa falta un identificador després del pre-increment o pre-decrement" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "falta un caràcter «)»" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "error de sintaxi: s'esperava un operand" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "error de sintaxi: l'operador aritmètic no és vàlid" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (l'element erroni és «%s»)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "la base aritmètica no és vàlida" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: el nombre de línies no és vàlid" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "el valor de la base és massa gran" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: expressió errònia\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: els directoris superiors són inaccessibles" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "no s'ha pogut restablir el mode «nodelay» per a l'fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "error en crear un fd nou a partir de l'fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: ja existia un «buffer» per al nou fd %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp de la canonada" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "el pid bifurcat %d apareix a la feina en execució %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "s'elimina la feina aturada %d amb grup de procés %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: el pid %5ld (%s) està marcat com a viu" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: no existeix tal pid" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Senyal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Fet" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Aturat" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Aturat(%s)" + +# ha de tenir menys de 10 caràcters o no queda alineat +#: jobs.c:1892 +msgid "Running" +msgstr "Funcionant" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Fet(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Sortida %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Estat desconegut" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(s'ha bolcat la memòria)" + +# wd = working directory +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (dt: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid (de %ld a %ld) per al procés inferior" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: el pid %ld no és un fill d'aquest intèrpret" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: No es té constància del procés %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: la feina %d està aturada" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: no existeix tal feina" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: la feina ha acabat" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: la feina %d ja es troba en segon pla" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: s'activa «WNOHANG» per a evitar un bloqueig indefinit" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s línia %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (s'ha bolcat la memòria)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(dt ara: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp ha fallat" + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: disciplina de línia" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: disciplina de línia" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "no s'ha pogut establir el grup de procés del terminal (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "aquesta sessió no té control de feines" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: asserció fallida: %s\n" + +# error intern i el \r provoca warnings +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "desconegut" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: bloc abatussat a la llista de disponibles" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: cridat amb un argument de bloc ja alliberat" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: cridat amb un argument bloc no assignat" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: underflow detectat; mh_nbytes fora del domini" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: underflow detectat; mh_nbytes fora del domini" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: les mides inicial i final del fragment difereixen" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: cridat amb un argument de bloc no assignat" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: underflow detectat: mh_nbytes fora del domini" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: underflow detectat: mh_nbytes fora del domini" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: les mides inicial i final del fragment difereixen" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: la taula «alloc» està plena de «FIND_ALLOC»?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p ja es troba a la taula com a assignat?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p ja es troba a la taula com a lliure?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "base no vàlida" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: màquina desconeguda" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: el servei no és vàlid" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: la ubicació remota no és vàlida" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "les operacions de xarxa no estan suportades" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: no s'ha pogut canviar el local (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: no s'ha pogut canviar el local (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Teniu correu a $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Teniu correu nou a $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "El correu a %s ha estat llegit\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "error de sintaxi: fa falta una expressió aritmètica" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "error de sintaxi: «;» inesperat" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "error de sintaxi: «((%s))»" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tipus d'instrucció erroni %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "document literal a la línia %d delimitat per EOF (volia «%s»)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: instrucció de redirecció «%d» fora del domini" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) excedeix «SIZE_MAX» (%lu): línia " +"truncada" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "excedit el nombre màxim de documents literals" + +# "echo $(echo" en un script +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "EOF inesperat mentre es cercava «%c»" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "EOF inesperat mentre es cercava «]]»" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "error de sintaxi a l'expressió condicional: element «%s» inesperat" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "error de sintaxi a l'expressió condicional" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "element «%s» inesperat, s'esperava «)»" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "s'esperava «)»" + +# [[ -d ]] +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argument «%s» inesperat a un operador unari condicional" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "argument inesperat a un operador unari condicional" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "element «%s» inesperat, s'esperava un operador binari condicional" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "s'esperava un operador binari condicional" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argument inesperat «%s» a un operador binari condicional" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "argument inesperat a un operador binari condicional" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "element «%c» inesperat en una ordre condicional" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "element «%s» inesperat en una ordre condicional" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "element %d inesperat en una ordre condicional" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "error de sintaxi a prop de l'element inesperat «%s»" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "error de sintaxi a prop de «%s»" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "error de sintaxi: final de fitxer inesperat" + +#: parse.y:6365 +msgid "syntax error" +msgstr "error de sintaxi" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Useu \"%s\" per a abandonar l'intèrpret.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "EOF inesperat mentre es cercava un «)»" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: la funció «%s» no s'ha trobat" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: possible reintent cíclic" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: el paràmetre «COMPSPEC» és NUL" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: el connector «%d» és erroni" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: el descriptor de fitxer no és vàlid" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: el punter de fitxer és NUL" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: «%c»: el caràcter de format no és vàlid" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "descriptor de fitxer fora del domini" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: redirecció ambigua" + +# opció noclobber +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: no es pot escriure sobre un fitxer existent" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricció: no podeu redirigir la sortida" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "no s'ha pogut crear el fitxer temporal per a un document literal: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: no és possible assignar un fd a una variable" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port no està suportat si no hi ha xarxa" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "error de redirecció: no es pot duplicar l'fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "no s'ha trobat el directori /tmp, sis-plau creeu-lo!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp ha de ser un nom de directori vàlid" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: l'opció no és vàlida" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "no s'ha pogut establir l'uid com a %d: uid effectiu %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "no s'ha pogut establir el gid com a %d: gid effectiu %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "no es pot iniciar el depurador; mode de depuració desactivat" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: És un directori" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "No teniu nom!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versió %s-(%s)\n" + +# +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Sintaxi: %s [opció GNU llarga] [opció] ...\n" +" %s [opció GNU llarga] [opció] fitxer-script ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Opcions GNU llargues:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Opcions de l'intèrpret:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD, o -c ordre, o bé -O opció_intèrpret\t(només invocació)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s, o bé -o opció\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Feu «%s -c \"help set\"» per a informació sobre les opcions de l'intèrpret.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "Feu «%s -c help» per a obtenir informació sobre les ordres internes.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Feu servir l'ordre «bashbug» per a informar de «bugs».\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "pàgina web de bash: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Ajuda general per a programari GNU: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: l'operació no és vàlida" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Senyal no fiable" + +# Senyals POSIX +#: siglist.c:50 +msgid "Hangup" +msgstr "Desconnexió" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Interrupció" + +#: siglist.c:58 +msgid "Quit" +msgstr "Sortida" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Instrucció il·legal" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "Traçat/trampa BPT" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Instrucció «ABORT»" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "Instrucció «EMT»" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Excepció de coma flotant" + +#: siglist.c:86 +msgid "Killed" +msgstr "Mort" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Error de bus" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Violació de segment" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Crida de sistema errònia" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Canonada trencada" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Alarma" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Finalitzat" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Estat E/S urgent" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Aturat (senyal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Continua" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Procés inferior mort o aturat" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Aturat (entrada tty)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Aturat (sortida tty)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "E/S a punt" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Limitació de CPU" + +#: siglist.c:154 +msgid "File limit" +msgstr "Limitació de fitxers" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarma (virtual)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarma (perfil)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Canvi de finestra" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Bloqueig de registre" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Senyal d'usuari 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Senyal d'usuari 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "Dades HFT d'entrada pendents" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "fallada imminent de l'alimentació" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "fallada imminent del sistema" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "migració del procés a una altra CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "error de programació" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "mode de monitoratge HFT concedit" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "mode de monitoratge HFT retractat" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "seqüència d'àudio HFT completada" + +#: siglist.c:214 +msgid "Information request" +msgstr "Petició d'informació" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Senyal Desconegut #%d" + +# missatge similar a subst.c:75XX +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "substitució errònia: falta un «%s» a %s" + +# foo[1]=(1 2 3) +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: no és possible assignar llistes a l'element d'un vector" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "no s'ha pogut crear la canonada per a la substitució de procés" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "no s'ha pogut crear el fill per a la substitució de procés" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "no s'ha pogut obrir la canonada %s per a lectura" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "no s'ha pogut obrir la canonada %s per a escriptura" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "no s'ha pogut duplicar la canonada %s com a fd %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "substitució d'ordre: s'ignora un octet nul en l'entrada" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "no s'ha pogut crear la canonada per a la substitució d'ordre" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "no s'ha pogut crear un fill per a la substitució d'ordre" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: no s'ha pogut duplicar la canonada com a fd 1" + +# buscar context +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: el nom de la variable referenciada no és vàlid" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: expansió indirecta no vàlida" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: nom de variable no vàlid" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: paràmetre nul o no definit" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: paràmetre nul o no definit" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expressió de subcadena < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substitució errònia" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: no és possible assignar d'aquesta manera" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "en futures versions de bash s'avaluarà com a substitució aritmètica" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "subtitució errònia: falta un caràcter «`» final a %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "cap coincidència: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "s'esperava un argument" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: s'esperava una expressió amb enters" + +#: test.c:265 +msgid "`)' expected" +msgstr "s'esperava «)»" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "s'esperava «)», s'ha trobat %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: s'esperava un operador binari" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: s'esperava un operador unari" + +#: test.c:881 +msgid "missing `]'" +msgstr "falta un «]»" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "error de sintaxi: «;» inesperat" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "el número de senyal no és vàlid" + +#: trap.c:325 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)" + +# internal warning +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: valor incorrecte a trap_list[%d]: %p" + +# internal warning +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: senyal erroni %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "error en importar la definició de funció de «%s»" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "el nivell de l'intèrpret (%d) és massa elevat, es restableix a 1" + +# error intern +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: no és possible assignar un valor a la variable" + +# buscar context +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: assignació numèrica a una variable referència" + +# error intern +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "el paràmetre «exportstr» de la variable %s és nul" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "el caràcter %d en el paràmetre «exportstr» de %s no és vàlid" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "falta un «=» en el paràmetre «exportstr» de %s" + +# error intern +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +# error intern +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "" + +# error intern +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +# error intern +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: no s'ha pogut obrir com a FITXER" + +# error intern +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: el valor de compatibilitat és fora del domini" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2012 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Llicència GPLv3+: GNU GPL versió 3 o posterior\n" +" \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versió %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"Aquest programa és lliure; sou lliures de modificar-lo i redistribuir-lo." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "No té CAP GARANTIA, fins a l'extrem permès per la llei." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: no s'han pogut assignar %lu octets (%lu octets assignats)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: no s'han pogut assignar %lu octets" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: no s'han pogut assignar %lu octets (%lu octets assignats)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: no s'han pogut assignar %lu octets" + +# help alias +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nom[=valor] ...]" + +# help unalias +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] nom [nom ...]" + +# help bind +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m mapa] [-f fitxer] [-q nom] [-u nom] [-r tecles] [-x " +"tecles:ordre-intèrpret] [tecles:funció-readline o ordre-readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [ordre-interna [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [dir]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] ordre [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [nom[=valor] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nom[=valor] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [opció] nom[=valor] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f fitxer] [nom ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts cadena nom [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a nom] [ordre [arguments ...]] [redirecció ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e editor] [-lnr] [primer] [últim] o fc -s [pat=sub] [ordre]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [feina]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [feina ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p ubicació] [-dt] [nom ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [patró ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d offset] [n] o history -anrw [fitxer] o history -ps arg " +"[arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [feina ...] o jobs -x ordre [args]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [feina ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s senyal | -n númsenyal | -senyal] pid | feina ... o kill -l [senyal]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a vector] [-d delim] [-i text] [-n núm] [-N núm] [-p introd] [-" +"t espera] [-u fd] [nom ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nom-opció] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [nom ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [nom[=valor] ...] o bé export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [nom[=valor] ...] o bé readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source fitxer [arguments]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". fitxer [arguments]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] senyal ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] nom [nom ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [límit]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mode]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-n] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOM [in PARAULES ... ] ; do ORDRES; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do ORDRES; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NOM [in PARAULES ... ;] do ORDRES; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] canonada" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PARAULA in [PATRÓ [| PATRÓ]...) ORDRES ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if ORDRES; then ORDRES; [ elif ORDRES; then ORDRES; ]... [ else ORDRES; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while ORDRES; do ORDRES; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until ORDRES; do ORDRES; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NOM] ordre [redireccions]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function nom { ORDRES ; } o bé nom () { ORDRES ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ ORDRES ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "feina [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( expressió ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ expressió ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Nom i significat d'algunes variables de l'intèrpret" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [opció ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [arguments]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o opció] [-A acció] [-G patró] [-W " +"llista] [-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [nom ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W paraules]\n" +"[-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o opció] [-DE] [nom ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C " +"callback] [-c quàntum] [vector]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c " +"quàntum] [vector]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Defineix o mostra àlies.\n" +"\n" +" Sense arguments «alias» mostra la llista d'àlies definits, en format\n" +" «alias NOM=VALOR», a la sortida estàndard.\n" +"\n" +" Altrament, defineix un àlies per a cada NOM per al qual existeix un\n" +" VALOR. Un espai al final de VALOR fa que la paraula següent sigui\n" +" susceptible de ser substituïda per un àlies quan s'expandeix aquest\n" +" àlies.\n" +"\n" +" Opcions:\n" +" -p Mostra tots els àlies definits en format reutilitzable\n" +"\n" +" Estat de sortida:\n" +" alias torna cert, excepte si NOM no correspon a cap àlies definit." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Esborra tots els NOMs de la llista d'àlies definits.\n" +"\n" +" Opcions:\n" +" -a esborra totes les definicions d'àlies.\n" +"\n" +" Torna cert, excepte si NOM no és un àlies existent." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Estableix vincles de tecla i variables Readline.\n" +"\n" +" Vincula una seqüència de tecles a una funció o macro Readline, o bé\n" +" estableix una variable Readline. La sintaxi dels arguments no-opcions\n" +" és la mateixa que en el fitxer ~/.inputrc, però ha de consistir en un\n" +" únic argument: per exemple, bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +"\n" +" Opcions:\n" +" -m mapa Usa MAPA com a mapa de tecles mentre duri aquesta\n" +" ordre. Els noms de mapes acceptables són emacs, emacs-\n" +" standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-" +"command,\n" +" i vi-insert.\n" +" -l Mostra els noms de les funcions\n" +" -P Mostra els noms de les funcions i els vincles de tecla.\n" +" -p Mostra les funcions i els vincles en un format que es pot\n" +" reutilitzar com a entrada.\n" +" -S Mostra les seqüències de tecles que invoquen macros i els\n" +" seus valors respectius.\n" +" -s Mostra les seqüències de tecles que invoquen macros i els\n" +" seus valors respectius en un format que es pot " +"reutilitzar\n" +" com a entrada.\n" +" -V Mostra els noms de les variables i els seus valors.\n" +" -v Mostra els noms de les variables i els seus respectius\n" +" valors en un format que es pot reutilitzar com a entrada.\n" +" -q funció Consulta quines tecles invoquen la funció especificada.\n" +" -u funció Desvincula les tecles vinculades a la funció " +"especificada.\n" +" -r tecles Elimina el vincle associat a TECLES.\n" +" -f fitxer Obté els vincles de tecles de FITXER.\n" +" -x tecles:ordre Fa que s'executi ORDRE quan es prem TECLES.\n" +" -X Mostra les tecles amb les respectives ordres vinculades\n" +" amb l'opció -x, en un format reutilitzable com a entrada.\n" +"\n" +" Estat de sortida:\n" +" bind torna 0 excepte si passeu una opció no reconeguda o es produeix\n" +" un error." + +# help break +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Surt de bucles for, while o until.\n" +"\n" +" Surt d'un bucle FOR, WHILE o UNTIL. Si especifiqueu N, trenca N bucles\n" +" de la imbricació.\n" +"\n" +" Estat de sortida:\n" +" L'estat de sortida és 0 excepte si N és més petit que 1." + +# help continue +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Continua bucles for, while o until.\n" +"\n" +" Executa la següent iteració en un bucle FOR, WHILE o UNTIL. Si\n" +" especifiqueu N, continua el bucle N-èssim de la imbricació.\n" +"\n" +" Estat de sortida:\n" +" L'estat de sortida és 0 excepte si N és més petit que 1." + +#: builtins.c:354 +#, fuzzy +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Executa ordres internes.\n" +"\n" +" Executa ORDRE-INTERNA amb ARG com a arguments sense fer una cerca de\n" +" l'ordre. Això és útil si voleu reimplementar una ordre interna de\n" +" l'intèrpret com a funció, però voleu executar l'ordre interna des de la\n" +" pròpia funció.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de ORDRE-INTERNA, o fals si ORDRE-INTERNA no " +"és\n" +" una ordre interna." + +# help caller +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Retorna el context de la subrutina actual.\n" +"\n" +" Sense EXPR, torna \"$línia $nomfitxer\". Amb EXPR, torna \"$línia\n" +" $subrutina $nomfitxer\"; aquesta informació addicional es pot utilitzar\n" +" per a proporcionar un traçat de la pila.\n" +"\n" +" El valor de EXPR indica quants «frames» retrocedir des de l'actual; el\n" +" «frame» superior és el 0.\n" +"\n" +" Estat de sortida:\n" +" Retorna 0 excepte si l'intèrpret no està executant una funció o si EXPR\n" +" no és una expressió vàlida." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Canvia el directori de treball de l'intèrpret.\n" +"\n" +" Canvia el directori actual a DIR. Per defecte, DIR és el valor de la\n" +" variable HOME.\n" +"\n" +" La variable CDPATH defineix els camins de cerca per al directori que\n" +" conté DIR. Es poden especificar camins alternatius separats per dos\n" +" punts (:). Un nom de directori nul s'interpreta com al directori\n" +" actual. Si DIR comença amb una barra, aleshores no s'usa CDPATH.\n" +"\n" +" Si no es troba el directori, i l'opció de l'intèrpret «cdable_vars» " +"està\n" +" activada, aleshores la paraula s'interpreta com a un nom de variable.\n" +" Si la variable especificada té algun valor, aquest valor s'usa en lloc\n" +" de DIR.\n" +"\n" +" Opcions:\n" +" -L força el seguiment d'enllaços simbòlics: resol els enllaços\n" +" simbòlics que conté DIR després de processar «..»\n" +" -P usa l'estructura de directoris física sense seguir " +"possibles\n" +" enllaços simbòlics: resol els enllaços simbòlics que conté\n" +" DIR abans de processar «..»\n" +" -e amb l'opció -P, si no es pot determinar el directori de\n" +" treball actual amb èxit, surt amb un estat diferent de zero\n" +" -@ en sistemes que ho suporten, presenta fitxers amb atributs\n" +" estesos com a directoris que contenen els atributs del\n" +" fitxer\n" +"\n" +" Per defecte, se segueixen els enllaços simbòlics, com si " +"especifiquéssiu\n" +" l'opció «-L». El component «..» es processa eliminant el component del\n" +" camí immediatament previ fins a la primera barra o fins al principi de\n" +" DIR.\n" +"\n" +" Estat de sortida:\n" +" Torna 0 si s'ha canviat de directori, i si $PWD s'ha establert de forma\n" +" satisfactòria quan s'utilitza -P; altrament un valor diferent de zero." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Mostra el nom del directori de treball actual.\n" +"\n" +" Opcions:\n" +" -L mostra el valor de $PWD si és el nom del directori de\n" +" treball actual\n" +" -P mostra el directori físic, sense cap enllaç simbòlic\n" +"\n" +" Per defecte, «pwd» es comporta com si haguéssiu especificat «-L».\n" +"\n" +" Estat de sortida:\n" +" Torna 0 excepte si heu especificat una opció no vàlida o no es pot\n" +" llegir el directori actual." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Ordre nul·la.\n" +"\n" +" No té cap efecte; aquesta ordre no fa res.\n" +"\n" +" Estat de sortida:\n" +" Sempre reïx." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Torna un resultat reeixit.\n" +"\n" +" Estat de sortida:\n" +" Sempre reïx." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Torna un resultat fallit.\n" +"\n" +" Estat de sortida:\n" +" Sempre falla." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Executa una ordre simple o mostra informació sobre ordres.\n" +"\n" +" Executa ORDRE amb ARGS sense cercar funcions de l'intèrpret amb aquest\n" +" nom, o bé mostra informació sobre l'ORDRE especificada. Es pot\n" +" utilitzar per a invocar programes en el disc, quan existeix una funció\n" +" amb el mateix nom.\n" +"\n" +" Opcions:\n" +" -p usa el valor per defecte de la variable PATH que garanteix\n" +" trobar totes les utilitats estàndards\n" +" -v mostra una descripció de l'ORDRE similar a la que mostra\n" +" l'ordre «type»\n" +" -V mostra una descripció més detallada per a cada ORDRE\n" +"\n" +" Estat de sortida:\n" +" Retorna l'estat de sortida de ORDRE, o fracàs si ORDRE no s'ha trobat." + +# help declare +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Assigna valors i atributs a variables.\n" +"\n" +" Declara variables i els hi assigna atributs. Sense cap NOM, mostra el\n" +" valor i atributs de totes les variables.\n" +"\n" +" Opcions:\n" +" -f només té en compte noms i definicions de funcions\n" +" -F només mostra noms de funcions (a part del número de línia i\n" +" el nom del fitxer, en mode de depuració)\n" +" -g crea variables globals quan s'utilitza dins d'una funció,\n" +" altrament s'ignora\n" +" -p mostra els atributs i el valor de cada NOM\n" +"\n" +" Opcions que estableixen atributs:\n" +" -a per a fer NOMs vectors indexats (si estan suportats)\n" +" -A per a fer NOMs vectors associatius (si estan suportats)\n" +" -i per a assignar l'atribut de nombre enter a NOMs\n" +" -l per a convertir NOMs a minúscules en l'assignació\n" +" -n per a fer NOM una referència a la variable que té per nom\n" +" el seu valor\n" +" -r per a fer NOMs variables de només lectura\n" +" -t per a assignar l'atribut «traça» a NOMs\n" +" -u per a convertir NOMs a majúscules en l'assignació\n" +" -x per a exportar NOMs\n" +"\n" +" Si feu servir «+» en lloc de «-», elimina l'atribut.\n" +"\n" +" Les variables que tenen l'atribut de nombre enter s'avaluen\n" +" aritmèticament (vegeu l'ordre «let») quan s'assigna un valor a la\n" +" variable.\n" +"\n" +" Quan s'usa en una funció, «declare» converteix NOMs en variables " +"locals,\n" +" igual que l'ordre «local». L'opció «-g» inhabilita aquest " +"comportament.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si rep una opció invàlida o es produeix un error." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Assigna valors i atributs a variables.\n" +"\n" +" Sinònim de «declare». Vegeu «help declare»." + +# help local +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Defineix variables locals.\n" +"\n" +" Crea una variable local anomenada NOM i li assigna VALOR. OPCIÓ pot " +"ser\n" +" qualsevol opció que «declare» admeti.\n" +"\n" +" Les variables locals només es poden utilitzar dins d'una funció; només\n" +" són visibles a dins de la funció on són definides i dins de les " +"funcions\n" +" imbricades dins d'aquestes.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit excepte si heu especificat una opció no vàlida, es produeix\n" +" un error, o l'intèrpret no està executant una funció." + +#: builtins.c:557 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Escriu arguments a la sortida estàndard.\n" +"\n" +" Mostra els ARGs a la sortida estàndard, separats per un únic espai i\n" +" seguits d'un salt de línia.\n" +"\n" +" Opcions:\n" +" -n omet el caràcter de salt de línia.\n" +" -e activa la interpretació de seqüències d'escapada\n" +" -E desactiva la interpretació de seqüències d'escapada\n" +"\n" +" «echo» interpreta els següents caràcters escapats amb una barra " +"inversa:\n" +" \\a alerta (campana)\n" +" \\b retrocés\n" +" \\c suprimeix tota sortida ulterior\n" +" \\e caràcter d'escapada\n" +" \\E caràcter d'escapada\n" +" \\f salt de pàgina\n" +" \\n salt de línia\n" +" \\r retorn de carro\n" +" \\t tabulació horitzontal\n" +" \\v tabulació vertical\n" +" \\\\ barra invertida\n" +" \\0nnn caràcter corresponent al codi ASCII número NNN, on NNN és " +"un\n" +" número octal de 0 a 3 dígits.\n" +" \\xHH caràcter de 8 bits corresponent al valor HH, on HH és un\n" +" número hexadecimal d'1 o 2 dígits.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, tret que es produeixi un error d'escriptura." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Escriu arguments a la sortida estàndard.\n" +"\n" +" Mostra els ARGs a la sortida estàndard seguits d'un salt de línia.\n" +"\n" +" Opcions:\n" +" -n omet el caràcter de salt de línia.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, tret que es produeixi un error d'escriptura." + +# help enable +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Habilita o inhabilita ordres internes de l'intèrpret.\n" +"\n" +" Habilita o inhabilita ordres internes de l'intèrpret. Inhabilitar una\n" +" ordre interna permet executar una ordre que es troba en el disc i que " +"té\n" +" el mateix nom que l'ordre interna, sense necessitat d'escriure'n la\n" +" ubicació completa.\n" +"\n" +" Opcions:\n" +" -a mostra una llista d'ordres internes indicant-ne l'estat\n" +" -n inhabilita NOM o bé mostra una llista de les ordres " +"internes\n" +" que es troben inhabilitades\n" +" -p mostra la llista en format reutilitzable\n" +" -s mostra només les ordres internes «especials» Posix\n" +"\n" +" Opcions per a controlar l'enllaçat dinàmic:\n" +" -f carrega l'ordre interna NOM, de l'objecte compartit FITXER\n" +" -d esborra una ordre interna carregada amb l'opció -f\n" +"\n" +" Sense opcions, habilita cada un dels NOMs.\n" +"\n" +" Per a utilitzar el «test» que es troba al $PATH en lloc de la versió\n" +" interna de l'intèrpret, feu «enable -n test».\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si NOM no és una ordre interna o té lloc un error." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Executa els arguments com una ordre.\n" +"\n" +" Combina ARGs en una única cadena, utilitza el resultat com a entrada " +"per\n" +" a l'intèrpret i executa les ordres resultants.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'ordre, o èxit si l'ordre és nul·la." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Interpreta arguments que representen opcions.\n" +"\n" +" getopts és utilitzat per les utilitats de bash per a interpretar els\n" +" paràmetres posicionals com a opcions.\n" +"\n" +" CADENA conté les lletres de les opcions a reconèixer; si una lletra va\n" +" seguida de dos punts, l'opció requereix un argument, que s'ha de " +"separar\n" +" amb un espai en blanc.\n" +"\n" +" Cada cop que s'invoca, getopts posarà l'opció successiva a la variable\n" +" d'entorn $nom, inicialitzant nom si no existeix, i l'índex del següent\n" +" argument a la variable OPTIND. La variable OPTIND s'inicialitza a 1\n" +" cada cop que s'invoca l'intèrpret o un script. Quan una opció " +"requereix\n" +" un argument, getopts col·loca l'argument a la variable OPTARG.\n" +"\n" +" getopts pot informar d'errors de dues maneres. Si el primer caràcter " +"de\n" +" CADENA és un caràcter de dos punts (:), getopts entra en mode " +"silenciós.\n" +" En aquest mode, no es mostra cap missatge d'error. Si es detecta una\n" +" opció no vàlida, getopts col·loca el caràcter de l'opció a OPTARG. Si\n" +" no es troba un argument requerit, getopts posa un ':' a NOM, i el\n" +" caràcter de l'opció trobada a OPTARG. Si getopts no es troba en mode\n" +" silenciós, i es detecta una opció no vàlida, getopts posa un '?' a NOM " +"i\n" +" elimina la variable OPTARG. Si no troba un argument requerit, posa un\n" +" '?' a NOM, elimina OPTARG, i mostra un missatge de diagnòstic.\n" +"\n" +" Si la variable OPTERR té el valor 0, getopts evita mostrar missatges\n" +" d'error, encara que el primer caràcter de CADENA no siguin dos punts.\n" +" Per defecte, OPTERR té el valor 1.\n" +"\n" +" Normalment, getopts interpreta els paràmetres posicionals ($0 - $9),\n" +" però si hi ha més arguments, s'interpreten aquests.\n" +"\n" +" Estat de sortida:\n" +" Retorna èxit si es troba alguna opció; falla si s'arriba al final de " +"les\n" +" opcions o si es produeix un error." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Substitueix el procés de l'intèrpret per l'ordre especificada.\n" +"\n" +" Executa ORDRE, substituint aquest intèrpret pel programa especificat.\n" +" Es passen ARGUMENTS a l'ORDRE com a arguments. Si no especifiqueu cap\n" +" ORDRE, qualsevol redirecció té efectes a l'intèrpret actual.\n" +"\n" +" Opcions:\n" +" -a nom passa NOM a ORDRE com a argument número zero\n" +" -c executa ORDRE en un entorn buit\n" +" -t passa un guionet a ORDRE com a argument número zero\n" +"\n" +" Si l'ordre no es pot executar i la sessió és no-interactiva, " +"l'intèrpret\n" +" surt, excepte si l'opció «execfail» està habilitada.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, tret que ORDRE no es trobi o es produeixi un error de\n" +" redirecció." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Abandona l'intèrpret.\n" +"\n" +" Surt de l'intèrpret amb estat N. Si ometeu N, l'estat de sortida és el\n" +" de l'última ordre executada." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Abandona una sessió d'entrada.\n" +"\n" +" Abandona una sessió d'entrada amb estat de sortida N. Torna un error " +"si\n" +" no s'està executant en una sessió d'entrada." + +# help fc (hi ha un bug a la cadena original) +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Mostra o executa ordres de l'historial.\n" +"\n" +" fc s'utilitza per a mostrar o editar i re-executar ordres de\n" +" l'historial. PRIMER i ÚLTIM poden ser números que defineixen un\n" +" interval, o PRIMER pot ser una cadena, que significa l'ordre més recent\n" +" que comença amb aquesta cadena.\n" +"\n" +" Opcions:\n" +" -e EDITOR selecciona quin editor utilitzar. Per defecte és el valor\n" +" de la variable FCEDIT, després el valor de EDITOR, i\n" +" finalment vi\n" +" -l\tmostra les línies en lloc d'editar-les\n" +" -n\tomet els números de línia a l'hora de mostrar la llista\n" +" -r\tinverteix l'ordre de les línies (més recents primer)\n" +"\n" +" Amb el format «fc -s [pat=sub ...] [ordre]», ORDRE es re-executa " +"després\n" +" d'haver fet la substitució PAT=SUB.\n" +"\n" +" Un àlies útil és r='fc -s', de manera que «r cc» executa l'última ordre\n" +" que comença per «cc» i «r» re-executa l'última ordre.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit o l'estat de l'última ordre executada; diferent de zero si " +"es\n" +" produeix un error." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Porta una feina al primer pla.\n" +"\n" +" Mou la feina identificada per FEINA al primer pla, convertint-la en la\n" +" feina corrent. Si ometeu FEINA, s'utilitza la feina que l'intèrpret\n" +" considera com a corrent.\n" +"\n" +" Estat de sortida:\n" +" L'estat de l'ordre que es mou al primer pla, o fallada si es produeix " +"un\n" +" error." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Mou feines al segon pla.\n" +"\n" +" Mou la feina identificada per FEINA al segon pla, com si s'hagués\n" +" iniciat amb un «&». Si ometeu FEINA, s'utilitza la feina que\n" +" l'intèrpret considera com a feina corrent.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si el control de feines no està habilitat o es\n" +" produeix un error." + +# help hash +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Recorda o mostra la ubicació de programes.\n" +"\n" +" Determina i recorda la ubicació completa de cada NOM d'ordre. Sense\n" +" arguments, mostra informació sobre les ordres que s'han recordat.\n" +"\n" +" Opcions:\n" +" -d oblida la ubicació recordada per a cada NOM\n" +" -l utilitza un format que es pot reciclar com a " +"entrada\n" +" -p ubicació utilitza UBICACIÓ com a ubicació completa per a NOM\n" +" -r oblida totes les ubicacions recordades\n" +" -t mostra la ubicació recordada per a cada NOM,\n" +" precedint cada ubicació amb el corresponent NOM, si\n" +" hi ha múltiples NOMs.\n" +" Arguments:\n" +" NOM Es busca NOM en el $PATH i s'afegeix a la llista\n" +" d'ordres recordades.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si NOM no es troba o passeu una opció invàlida." + +# help help +#: builtins.c:818 +#, fuzzy +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Mostra informació sobre ordres internes.\n" +"\n" +" Mostra ajuda sobre les ordres internes. Amb PATRÓ, dóna informació\n" +" detallada sobre aquelles ordres que coincideixen amb PATRÓ, altrament\n" +" mostra una llista amb temes d'ajuda.\n" +"\n" +" Opcions:\n" +" -d mostra una descripció curta de cada tema\n" +" -m mostra la forma d'ús en format de pseudo-pàgina de manual\n" +" -s mostra una sinopsi de cada tema corresponent a PATRÓ\n" +"\n" +" Arguments:\n" +" PATRÓ Patró que especifica un tema d'ajuda\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si PATRÓ no es troba o passeu una opció invàlida." + +#: builtins.c:842 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Mostra o manipula l'historial.\n" +"\n" +" Mostra l'historial amb números de línia, indicant les entrades\n" +" modificades amb «*». Amb l'argument N, només mostra les N últimes\n" +" entrades.\n" +"\n" +" Opcions:\n" +" -c esborra la llista d'entrades\n" +" -d offset esborra l'entrada de l'historial a la posició OFFSET\n" +" -a afegeix la sessió actual al fitxer de l'historial\n" +" -n llegeix el fitxer de l'historial i afegeix les línies\n" +" prèviament no llegides a la llista\n" +" -r llegeix el fitxer de l'historial i n'afegeix el contingut\n" +" sencer a la llista\n" +" -w escriu l'historial actual al fitxer de l'historial\n" +" -p expandeix cada ARG i mostra el resultat, sense desar-lo\n" +" a la llista\n" +" -s afegeix ARGs a la llista com una única entrada\n" +"\n" +" Si passeu un nom de FITXER, s'utilitza com a fitxer d'historial. En " +"cas\n" +" contrari, si $HISTFILE té algun valor, s'utilitza aquest, si no\n" +" s'utilitza ~/.bash_history.\n" +"\n" +" Si la variable $HISTTIMEFORMAT està definida i no és nul·la, el seu\n" +" valor s'utilitza com a cadena de format strftime(3) per a mostrar " +"l'hora\n" +" associada a cada entrada de l'historial. En cas contrari no es mostra\n" +" informació horària.\n" +"\n" +" Estat de sortida: \n" +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Mostra l'estat de feines.\n" +"\n" +" Mostra les feines actives. Si especifiqueu FEINA, es restringeix la\n" +" sortida a la feina especificada. Sense opcions, mostra l'estat de " +"totes\n" +" les feines actives.\n" +"\n" +" Opcions:\n" +" -l mostra els IDs de procés a més de la informació normal\n" +" -n mostra només les feines l'estat de les quals ha\n" +" canviat des de l'última notificació\n" +" -p mostra només els IDs de procés\n" +" -r restringeix la sortida a les feines en execució\n" +" -s restringeix la sortida a les feines aturades\n" +"\n" +" Amb l'opció -x, s'executa ORDRE, després de substituir totes les\n" +" especificacions de feina per l'ID del procés del líder del grup de\n" +" processos d'aquella feina, a ARGS.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si passeu una opció invàlida o es produeix un " +"error.\n" +" Si utilitzeu -x, torna l'estat de sortida d'ORDRE." + +# help disown +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Deslliga feines vinculades a l'intèrpret actual.\n" +"\n" +" Suprimeix FEINA de la taula de feines actives. Si no especifiqueu\n" +" FEINA, s'interpreta que us referiu a la feina corrent.\n" +"\n" +" Opcions:\n" +" -a suprimeix totes les feines si no especifiqueu FEINA\n" +" -h\tmarca FEINA per a no enviar-li un senyal SIGHUP si\n" +" l'intèrpret rep un SIGHUP\n" +" -r suprimeix totes les feines en execució\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si passeu una opció o FEINA invàlida." + +# help kill +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Envia un senyal a una feina.\n" +"\n" +" Envia el senyal SENYAL o NÚMSENYAL al procés corresponent a PID o " +"FEINA.\n" +" Si no especifiqueu cap senyal, s'envia un SIGTERM.\n" +"\n" +" Opcions:\n" +" -s senyal SENYAL és el nom d'un senyal\n" +" -n númsenyal\tNÚMSENYAL és el número d'un senyal\n" +" -l mostra els noms dels senyals; si hi ha arguments \n" +" després de «-l» s'interpreten com a números de\n" +" senyals, els noms dels quals s'han de mostrar\n" +" -L sinònim de -l\n" +"\n" +" kill és una ordre interna per dues raons: perquè això permet usar IDs " +"de\n" +" feina en lloc de IDs de procés, i perquè permet matar processos encara\n" +" que arribeu al límit de processos que se us permet crear.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error." + +# help let +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Avalua expressions aritmètiques.\n" +"\n" +" Avalua cada ARG com a expressió aritmètica. Les operacions es fan amb\n" +" enters d'amplada fixa sense comprovacions de desbordament, tot i que " +"les\n" +" divisions per 0 es detecten i es marquen com a error. La següent " +"llista\n" +" mostra els operadors, agrupats en nivells d'igual precedència. Els\n" +" nivells apareixen en ordre descendent de precedència.\n" +"\n" +" \tid++, id--\tpostincrement, postdecrement\n" +" \t++id, --id\tpreincrement, predecrement\n" +" \t-, +\t\tnegatiu, positiu unaris\n" +" \t!, ~\t\tnegació lògica i a nivell de bits\n" +" \t**\t\texponenciació\n" +" \t*, /, %\t\tmultiplicació, divisió, residu\n" +" \t+, -\t\taddició, subtracció\n" +" \t<<, >>\t\tdesplaçament de bits a l'esquerra i a la dreta\n" +" \t<=, >=, <, >\tcomparació\n" +" \t==, !=\t\tigualtat, desigualtat\n" +" \t&\t\tAND a nivell de bits\n" +" \t^\t\tXOR a nivell de bits\n" +" \t|\t\tOR a nivell de bits\n" +" \t&&\t\tAND lògic\n" +" \t||\t\tOR lògic\n" +" \texpr ? expr : expr\n" +" \t\t\toperador condicional\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignació\n" +"\n" +" S'admeten variables de l'intèrpret com a operands. El nom de la\n" +" variable se substitueix pel seu valor (convertit en enter d'amplada\n" +" fixa). No cal que la variable tingui l'atribut d'enter perquè pugui\n" +" aparèixer en una expressió aritmètica.\n" +"\n" +" Els operadors s'avaluen en ordre de precedència. Les subexpressions\n" +" entre parèntesis s'avaluen primer, independentment de les regles de\n" +" precedència anteriors.\n" +"\n" +" Estat de sortida:\n" +" Si l'avaluació de l'últim ARG és 0, let torna 1; altrament torna 0." + +#: builtins.c:994 +#, fuzzy +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Llegeix una línia a l'entrada estàndard i la divideix en camps.\n" +"\n" +" Llegeix una sola línia a l'entrada estàndard, o al descriptor de fitxer\n" +" FD si especifiqueu l'opció -u. La línia es divideix en camps, segons\n" +" les mateixes regles que en la separació de paraules, i la primera\n" +" paraula s'assigna al primer NOM, la segona al segon NOM, etc., mentre\n" +" que les paraules sobrants, si n'hi ha, s'assignen a l'últim NOM. Només\n" +" es reconeixen com a delimitadors de paraula els caràcters que conté la\n" +" variable $IFS.\n" +"\n" +" Si no especifiqueu cap NOM, en aquest cas la línia llegida es desa a la\n" +" variable REPLY.\n" +"\n" +" Opcions:\n" +" -a vector\tassigna les paraules llegides a VECTOR, de forma " +"seqüencial\n" +" començant des de l'índex número 0.\n" +" -d delim\tcontinue llegint fins a trobar el caràcter DELIM, en lloc " +"de\n" +" fins a trobar un salt de línia\n" +" -e\tsi la sessió és interactiva, utilitza Readline per a obtenir\n" +" la línia\n" +" -i text\tUtilitza TEXT com a text inicial per a Readline\n" +" -n núm\ttorna després de llegir exactament NÚM caràcters, o quan es\n" +" trobi el delimitador si apareix abans de NÚM caràcters\n" +" -N núm torna només després de llegir exactament NÚM caràcters,\n" +" excepte si es troba EOF o s'esgota el temps d'espera,\n" +" i ignora qualsevol delimitador\n" +" -p introd mostra la cadena INTROD sense cap caràcter de salt de línia\n" +" afegit, abans d'intentar llegir res\n" +" -r prohibeix escapar caràcters amb una barra invertida\n" +" -s suprimeix l'eco quan l'entrada està connectada a un " +"terminal\n" +" -t temps surt si transcorre TEMPS (en segons) abans d'haver\n" +" aconseguit llegir una línia sencera. Per defecte, el límit\n" +" de temps és el valor de la variable TMOUT. TEMPS pot ser " +"un\n" +" número amb decimals. Si TEMPS és 0, read torna\n" +" immediatament, sense intentar llegir cap dada, i torna èxit\n" +" només si hi ha dades disponibles en el descriptor de fitxer\n" +" FD especificat. Un estat de sortida més gran que 128 " +"indica\n" +" que s'ha esgotat el temps d'espera.\n" +" -u fd llegeix dades al descriptor de fitxer FD, en lloc de a\n" +" l'entrada estàndard.\n" +"\n" +" Estat de sortida:\n" +" El codi de retorn és zero, excepte si es troba EOF (final de fitxer),\n" +" s'arriba al límit de temps (en aquest cas, és major que 128), es\n" +" produeix un error d'assignació de variable, o si heu especificat un\n" +" descriptor de fitxer invàlid amb l'opció -u." + +# help return +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Torna des d'una funció de l'intèrpret.\n" +"\n" +" Provoca que una funció o script executat amb «source» torni amb el " +"valor\n" +" de retorn especificat per N. Si s'omet N, l'estat de retorn és aquell\n" +" de l'última ordre executada dins la funció o script.\n" +"\n" +" Estat de sortida:\n" +" Torna N, o fallada si l'intèrpret no està executant cap funció o script." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Estableix opcions de l'intèrpret i paràmetres posicionals.\n" +"\n" +" Modifica el valor d'atributs de l'intèrpret i de paràmetres " +"posicionals,\n" +" o mostra els noms i valors de les variables de l'intèrpret.\n" +"\n" +" Opcions:\n" +" -a Exporta les variables que es creïn o es modifiquin.\n" +" -b Notifica immediatament la finalització de feines.\n" +" -e Surt immediatament si una ordre acaba amb estat diferent de zero.\n" +" -f Deshabilita la generació de noms de fitxers («globbing»).\n" +" -h Recorda la ubicació de les ordres que s'executen.\n" +" -k Afegeix tots els arguments en forma d'assignació a l'entorn de\n" +" l'ordre, no només aquells que precedeixen el nom de l'ordre.\n" +" -m Activa la gestió de feines.\n" +" -n Llegeix ordres, però sense executar-les.\n" +" -o opció\n" +" Estableix la variable corresponent a OPCIÓ:\n" +" allexport igual que -a\n" +" braceexpand igual que -B\n" +" emacs utilitza una interfície d'edició estil emacs\n" +" errexit igual que -e\n" +" errtrace igual que -E\n" +" functrace igual que -T\n" +" hashall igual que -h\n" +" histexpand igual que -H\n" +" history activa l'historial\n" +" ignoreeof l'intèrpret no surt en cas de trobar EOF\n" +" interactive-comments\n" +" permet comentaris en ordres interactives\n" +" keyword igual que -k\n" +" monitor igual que -m\n" +" noclobber igual que -C\n" +" noexec igual que -n\n" +" noglob igual que -f\n" +" nolog actualment aquesta opció no té cap efecte\n" +" notify igual que -b\n" +" nounset igual que -u\n" +" onecmd igual que -t\n" +" physical igual que -P\n" +" pipefail el valor retornat per una canonada és l'estat de\n" +" l'última ordre que ha acabat amb estat no-zero,\n" +" o zero si cap ordre ha acabat amb estat diferent\n" +" de zero\n" +" posix ajusta el comportament de bash a l'estàndard " +"Posix\n" +" privileged igual que -p\n" +" verbose igual que -v\n" +" vi usa una interfície d'edició estil vi\n" +" xtrace igual que -x\n" +" -p S'activa automàticament sempre que els ids efectiu i real de\n" +" l'usuari no coincideixin. No processa el fitxer $ENV ni importa\n" +" funcions. Si desactiveu aquesta opció, els valors de l'uid i gid\n" +" reals s'assignen a l'uid i gid efectius.\n" +" -t Surt després de llegir i executar una única ordre.\n" +" -u Tracta les variables no definides com a error, en substitucions.\n" +" -v Escriu les línies de l'entrada a la sortida.\n" +" -x Escriu ordres i arguments a la sortida a mesura que s'executen.\n" +" -B Activa l'expansió de claudàtors ([])\n" +" -C Prohibeix la sobrescriptura de fitxers ordinaris mitjançant\n" +" redireccions.\n" +" -E Intercepta senyals ERR també durant l'execució de funcions.\n" +" -H Activa la substitució d'elements de l'historial. Aquesta opció\n" +" està activa per defecte si la sessió és interactiva.\n" +" -P Omet la resolució d'enllaços simbòlics a l'hora d'executar ordres\n" +" que canvien el directori corrent, tals com cd.\n" +" -T Intercepta senyals DEBUG i RETURN també durant l'execució de\n" +" funcions.\n" +"\n" +" -- Assigna els arguments restants a paràmetres posicionals. Si no\n" +" queda cap argument, suprimeix els paràmetres posicionals.\n" +" \n" +" - Assigna els arguments restants a paràmetres posicionals.\n" +" Desactiva les opcions -x i -v.\n" +"\n" +" Un signe + en lloc de - desactiva l'opció corresponent. Els arguments\n" +" que controlen les opcions es poden utilitzar a l'hora d'invocar\n" +" l'intèrpret. El conjunt d'opcions actives en aquest intèrpret es pot\n" +" trobar a $-. La resta d'arguments són paràmetres posicionals i\n" +" s'assignen per ordre a $1, $2, ... $n. Si no especifiqueu cap ARG, es\n" +" mostren totes les variables definides.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si especifiqueu una opció no vàlida." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Suprimeix el valor i atributs de variables i funcions.\n" +"\n" +" Per a cada NOM, suprimeix la corresponent variable o funció.\n" +"\n" +" Opcions:\n" +" -f interpreta NOM com a funció\n" +" -v interpreta NOM com a variable\n" +" -n interpreta NOM com a referència a una altra variable, i\n" +" suprimeix aquesta variable, en lloc de la variable a què\n" +" es refereix\n" +"\n" +" Sense opcions, primer intenta suprimir una variable, i si això falla\n" +" intenta suprimir una funció.\n" +"\n" +" Algunes variables no poden ser suprimides; per ex., vegeu «readonly».\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM és una\n" +" variable o funció de només lectura." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Exporta variables de l'intèrpret.\n" +"\n" +" Exporta automàticament cada NOM a l'entorn de les ordres subsegüents.\n" +" Si especifiqueu VALOR, s'assigna VALOR a la variable abans\n" +" d'exportar-la.\n" +"\n" +" Opcions:\n" +" -f tracta NOM com a funció\n" +" -n suprimeix la propietat d'exportació per a NOM\n" +" -p mostra una llista amb totes les variables i funcions\n" +" exportades\n" +" \n" +" L'argument «--» atura el processament de més opcions.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n" +" vàlid." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Marca variables com a no modificables.\n" +"\n" +" Marca cada NOM com a variable o funció de només lectura; els valors\n" +" d'aquests NOMs es poden modificar en assignacions subseqüents. Si\n" +" especifiqueu VALOR, s'assigna VALOR a la variable o funció abans de\n" +" marcar-la com a només lectura.\n" +"\n" +" Opcions:\n" +" -a limita la sortida a vectors indexats\n" +" -A limita la sortida a vectors associatius\n" +" -f limita la sortida a funcions\n" +" -p mostra una llista amb totes les variables o funcions,\n" +" depenent de si heu especificat l'opció -f, de només lectura\n" +"\n" +" L'argument «--» atura el processament de més opcions.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n" +" vàlid." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Desplaça els paràmetres posicionals.\n" +"\n" +" Reanomena els paràmetres posicionals $N+1, $N+2 ... com a $1, $2 ... " +"Si\n" +" ometeu N, s'assumeix que és 1.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si N és negatiu o més gran que $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Executa les ordres d'un fitxer a l'intèrpret actual.\n" +"\n" +" Llegeix les ordres que hi ha a FITXER i les executa a l'intèrpret\n" +" actual. Les entrades a $PATH s'utilitzen per a localitzar el directori\n" +" que conté FITXER. Si especifiqueu qualsevol ARG, aquests arguments es\n" +" converteixen en paràmetres posicionals quan s'executa FITXER.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de l'última ordre a FITXER executada; falla si FITXER no\n" +" es pot llegir." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspèn l'execució de l'intèrpret.\n" +"\n" +" Suspèn l'execució d'aquest intèrpret fins a rebre un senyal SIGCONT. " +"Si\n" +" no es força, les sessions d'entrada no es poden suspendre.\n" +"\n" +" Opcions:\n" +" -f força la suspensió, encara que sigui una sessió d'entrada\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si no hi ha control de feines o es produeix un error." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Avalua una expressió condicional.\n" +"\n" +" Surt amb estat 0 (cert) o 1 (fals) en funció de l'avaluació d'EXPR. " +"Les\n" +" expressions poden ser unàries o binàries. Les expressions unàries\n" +" s'utilitzen sovint per a determinar l'estat de fitxers. També podeu\n" +" utilitzar operadors de cadenes, i operadors de comparació numèrica.\n" +"\n" +" El comportament de test depèn del nombre d'arguments. Podeu trobar\n" +" l'especificació completa a la plana del manual de bash.\n" +"\n" +" Operadors de fitxer:\n" +"\n" +" -a FITXER Cert si el fitxer existeix.\n" +" -b FITXER Cert si el fitxer és un fitxer especial de blocs.\n" +" -c FITXER Cert si el fitxer és un fitxer especial de caràcters.\n" +" -d FITXER Cert si el fitxer és un directori.\n" +" -e FITXER Cert si el fitxer existeix.\n" +" -f FITXER Cert si el fitxer existeix i és ordinari.\n" +" -g FITXER Cert si el bit «set-group-id» està activat.\n" +" -h FITXER Cert si el fitxer és un enllaç simbòlic.\n" +" -L FITXER Cert si el fitxer és un enllaç simbòlic.\n" +" -k FITXER Cert si el bit «sticky» està activat.\n" +" -p FITXER Cert si el fitxer és una canonada.\n" +" -r FITXER Cert si teniu permís per a llegir el fitxer.\n" +" -s FITXER Cert si el fitxer existeix i no està buit.\n" +" -S FITXER Cert si el fitxer és un «socket».\n" +" -t FD Cert si FD està obert i es refereix a un terminal.\n" +" -u FITXER Cert si el bit «set-user-id» està activat.\n" +" -w FITXER Cert si teniu permís per a escriure al fitxer.\n" +" -x FITXER Cert si teniu permís per a executar el fitxer.\n" +" -O FITXER Cert si el vostre usuari és propietari del fitxer.\n" +" -G FITXER Cert si el vostre grup és propietari del fitxer.\n" +" -N FITXER Cert si el fitxer ha canviat des de l'última lectura.\n" +"\n" +" FITXER1 -nt FITXER2 Cert si fitxer1 és més nou que fitxer2 (segons " +"la\n" +" data de modificació).\n" +"\n" +" FITXER1 -ot FITXER2 Cert si fitxer1 és més antic que fitxer2.\n" +"\n" +" FITXER1 -ef FITXER2 Cert si fitxer1 és un enllaç dur a fitxer2.\n" +"\n" +" Operadors de cadena:\n" +"\n" +" -z CADENA Cert si la cadena és buida.\n" +"\n" +" -n CADENA Cert si la cadena no és buida.\n" +"\n" +" CADENA1 = CADENA2\n" +" Cert si les cadenes són iguals.\n" +" CADENA1 != CADENA2\n" +" Cert si les cadenes no són iguals.\n" +" CADENA1 < CADENA2\n" +" Cert si CADENA1 va primer alfabèticament.\n" +" CADENA1 > CADENA2\n" +" Cert si CADENA2 va primer alfabèticament.\n" +"\n" +" Altres operadors:\n" +"\n" +" -o OPCIÓ Cert si l'opció de l'intèrpret està activada.\n" +" -v VAR Cert si la variable VAR està definida.\n" +" -R VAR Cert si la variable VAR està definida i és una \n" +" referència a una altra variable.\n" +" ! EXPR Cert si expr és fals.\n" +" EXPR1 -a EXPR2 Cert si tant expr1 com expr2 són cert.\n" +" EXPR1 -o EXPR2 Cert si qualsevol de expr1 o expr2 són certes.\n" +"\n" +" arg1 OP arg2 Tests aritmètics. OP és un de -eq, -ne, -lt, -le, -" +"gt,\n" +" o -ge.\n" +"\n" +" Els operadors aritmètics binaris tornen cert si ARG1 és igual, no\n" +" igual, més petit que, més petit que o igual, més gran que, o més gran\n" +" que o igual que ARG2, respectivament.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit si EXPR s'avalua com a cert; falla si EXPR s'avalua com a\n" +" fals o si especifiqueu un argument no vàlid." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Avalua una expressió condicional.\n" +"\n" +" Aquesta ordre interna és un sinònim de \"test\", amb la diferència que\n" +" l'últim argument ha de ser un signe «]» que tanqui el «[» inicial." + +# help times +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Mostra els temps d'execució.\n" +"\n" +" Mostra el temps d'execució d'usuari i sistema acumulat per l'intèrpret " +"i\n" +" per tots els seus processos inferiors.\n" +"\n" +" Estat de sortida:\n" +" Sempre reïx." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Intercepta senyals i altres esdeveniments.\n" +"\n" +" Defineix i activa controladors de senyal, que són executats quan\n" +" l'intèrpret rep senyals o en altres circumstàncies.\n" +"\n" +" ARG és una ordre que es llegeix i s'executa quan l'intèrpret rep " +"SENYAL.\n" +" Si ometeu ARG (i especifiqueu un únic SENYAL) o ARG és «-», cada senyal\n" +" és restablert al seu valor original. Si ARG és una cadena nul·la,\n" +" aleshores SENYAL és ignorat per l'intèrpret i per tots els programes\n" +" invocats per l'intèrpret.\n" +"\n" +" Si SENYAL és EXIT (0), ARG s'executa quan l'intèrpret surt. Si SENYAL\n" +" és DEBUG, ARG s'executa abans de cada ordre. Si SENYAL és RETURN, ARG\n" +" s'executa cada cop que una funció o script executat amb l'ordre «.» o\n" +" «source» finalitza l'execució. Si SENYAL és ERR, ARG s'executa en els\n" +" mateixos casos en què una ordre faria sortir l'intèrpret si l'opció -e\n" +" estigués activada.\n" +"\n" +" Si no especifiqueu cap argument, trap mostra una llista d'ordres\n" +" associades a cada senyal.\n" +"\n" +" Opcions:\n" +" -l mostra una llista amb els noms dels senyals i els números\n" +" corresponents\n" +" -p mostra els controladors de senyal associats a cada SENYAL\n" +"\n" +" Cada SENYAL és o bé un nom de senyal definit al fitxer o bé\n" +" un número de senyal. Els noms de senyal no són sensibles a les\n" +" majúscules i el prefix SIG és opcional. Podeu enviar un senyal a\n" +" l'intèrpret amb l'ordre «kill -senyal $$».\n" +"\n" +" Estat de sortida: \n" +" Torna èxit, excepte si algun SENYAL no és vàlid o especifiqueu una\n" +" ordre no vàlida." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Mostra informació sobre el tipus d'ordre.\n" +"\n" +" Indica com seria interpretat NOM si s'utilitzés com a ordre.\n" +"\n" +" Opcions:\n" +" -a mostra totes les ubicacions que contenen un executable\n" +" anomenat NOM, incloent àlies, ordres internes i funcions si i\n" +" només si no s'usa conjuntament amb l'opció «-p»\n" +" -f omet la cerca de funcions\n" +" -P força una cerca al PATH per a cada NOM, encara que sigui un\n" +" àlies, ordre interna o funció, i torna el nom del fitxer que\n" +" s'executaria\n" +" -p torna o bé el nom del fitxer que s'executaria, o bé res, si\n" +" «type -t NOM» no indica «fitxer».\n" +" -t torna només una paraula, que és «àlies», «paraula clau»,\n" +" «funció», «ordre interna», «fitxer», o bé «», depenent de si\n" +" NOM és un àlies, una paraula reservada de l'intèrpret, una\n" +" funció, una ordre interna, un fitxer, o no es pot trobar,\n" +" respectivament.\n" +"\n" +" Arguments:\n" +" NOM El nom de l'ordre a interpretar.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit si es troben tots els NOMs; falla si n'hi ha algun que no es\n" +" pot trobar." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Canvia els límits d'utilització de recursos per part de l'intèrpret.\n" +"\n" +" Permet controlar la quantitat de recursos disponibles per a l'intèrpret\n" +" d'ordres i per als processos que aquest crea, en els sistemes que\n" +" admeten tal control.\n" +"\n" +" Opcions:\n" +" -S estableix una limitació «tova»\n" +" -H estableix una limitació «dura»\n" +" -a\tmostra tots els límits establerts\n" +" -b\tmida màxima de la memòria intermèdia per a «sockets»\n" +" -c\tmida màxima dels fitxers de bolcat de memòria\n" +" -d\tmida màxima del segment de dades d'un procés\n" +" -e\tprioritat màxima d'un procés («nice»)\n" +" -f\tmida màxima dels fitxers escrits per l'intèrpret i fills\n" +" -i\tnombre màxim de senyals pendents\n" +" -k nombre màxim de cues («kqueue») obertes per a aquest procés\n" +" -l\tquantitat màxima de memòria que un procés pot blocar\n" +" -m\tmida màxima del conjunt resident (RSS)\n" +" -n\tnombre màxim de descriptors de fitxers oberts\n" +" -p\tmida màxima de la memòria intermèdia per a canonades\n" +" -q\tnombre màxim d'octets a les cues de missatges POSIX\n" +" -r\tprioritat màxima de temps-real\n" +" -s\tmida màxima de la pila\n" +" -t\tquantitat màxima de temps de CPU en segons\n" +" -u\tnombre màxim de processos d'usuari\n" +" -v\tmida de la memòria virtual\n" +" -x\tnombre màxim de fitxers de bloqueig\n" +" -P nombre màxim de pseudoterminals\n" +" -T nombre màxim de fils d'execució\n" +"\n" +" Algunes opcions poden no estar disponibles en algunes plataformes.\n" +"\n" +" Si especifiqueu un LÃMIT, aquest s'utilitza com a nou valor per al\n" +" recurs indicat; els valors especials de LÃMIT són «soft», «hard» i\n" +" «unlimited», que signifiquen límit tou actual, límit dur actual, i " +"sense\n" +" límit, respectivament. En cas contrari, es mostra el valor actual per\n" +" al recurs especificat. Si no especifiqueu cap opció, se suposa -f.\n" +"\n" +" Els valors s'indiquen en increments de 1024 octets, excepte en el cas " +"de\n" +" l'opció -t, que és en segons, -p, que és en increments de 512 octets, i\n" +" -u, que és en nombre de processos.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, tret que especifiqueu una opció invàlida o es produeixi un\n" +" error." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Mostra o estableix la màscara de mode per a fitxers.\n" +"\n" +" Estableix la màscara de creació de fitxers en MODE. Si MODE s'omet,\n" +" mostra el valor actual de la màscara.\n" +"\n" +" Si MODE comença amb un dígit, s'interpreta com a número octal; en cas\n" +" contrari és una cadena de mode simbòlica com les que accepta chmod(1).\n" +"\n" +" Opcions:\n" +" -p sense MODE, mostra la sortida en un format que es pot\n" +" reciclar com a entrada\n" +" -S\tmostra la màscara en forma simbòlica; altrament produeix un\n" +" número octal\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si MODE no és vàlid o passeu una opció no vàlida." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Espera la finalització de feines i en retorna l'estat de sortida.\n" +"\n" +" Espera que cada procés identificat per un ID, que pot ser l'ID del\n" +" procés o una especificació de feina, acabi d'executar-se, i en torna\n" +" l'estat de sortida. Si ometeu ID, espera que acabin d'executar-se tots\n" +" els processos inferiors, i surt amb estat zero. Si ID és una\n" +" especificació de feina, espera cada un dels processos a la canonada\n" +" d'aquella feina.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'últim ID; falla si ID no és vàlid o " +"passeu\n" +" una opció no vàlida." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Espera la finalització de processos i en retorna l'estat de sortida.\n" +"\n" +" Espera que cada procés, identificat per PID, acabi d'executar-se, i en\n" +" mostra l'estat de sortida. Si no especifiqueu PID, espera que acabin\n" +" d'executar-se tots els processos inferiors, i surt amb estat zero. PID\n" +" ha de ser un ID de procés.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'últim PID; falla si PID no és vàlid o es\n" +" passa una opció no vàlida." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa ordres per a cada element d'una llista.\n" +"\n" +" Els bucles «for» executen una seqüència d'ordres per a cada un dels\n" +" elements d'una llista. Si «in PARAULES ...;» s'omet, aleshores se\n" +" suposa «in \"$@\"». Per a cada element de la llista PARAULES, " +"l'element\n" +" s'assigna a NOM, i les ORDRES s'executen.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'última ordre executada." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Bucle «for» aritmètic.\n" +"\n" +" Equivalent a\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tORDRES\n" +" \t\t(( EXP 3 ))\n" +" \tdone\n" +"\n" +" EXP1, EXP2 i EXP3 són expressions aritmètiques. Si s'omet qualsevol de\n" +" les expressions, es comporta com si el resultat de l'avaluació de\n" +" l'expressió omesa fos 1.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'última ordre executada." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Selecciona paraules d'una llista i executa ordres.\n" +"\n" +" Les PARAULES s'expandeixen i generen una llista de paraules. Les\n" +" paraules expandides s'envien a la sortida d'errors estàndard, cada una\n" +" precedida per un número. Si «in PARAULES» s'omet, se suposa «in \"$@" +"\"».\n" +" Llavors, es mostra l'introductor PS3 i es llegeix una línia a l'entrada\n" +" estàndard. Si la línia correspon amb el número d'alguna de les " +"paraules\n" +" mostrades, aleshores aquesta paraula s'assigna a NOM. Si la línia està\n" +" buida, les PARAULES i l'introductor es tornen a mostrar. Si es llegeix\n" +" EOF, l'ordre finalitza. Qualsevol altre valor llegit, fa que s'assigni\n" +" el valor nul a NOM. La línia llegida s'assigna a la variable REPLY.\n" +" Les ORDRES s'executen després de cada selecció fins a trobar una ordre\n" +" «break».\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'última ordre executada." + +# help time +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Informa del temps transcorregut durant l'execució d'una canonada.\n" +"\n" +" Executa CANONADA i mostra un resum del temps real, el temps de CPU\n" +" d'usuari i el temps de CPU de sistema transcorregut durant l'execució " +"de\n" +" CANONADA.\n" +"\n" +" Opcions:\n" +" -p mostra el resum de temps en format POSIX portable\n" +"\n" +" El valor de la variable TIMEFORMAT s'utilitza per formatar la sortida.\n" +"\n" +" Estat de sortida:\n" +" L'estat de sortida és l'estat de sortida de la CANONADA." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa ordres segons la coincidència amb patrons.\n" +"\n" +" Executa ORDRES de forma selectiva en funció de si PARAULA coincideix " +"amb\n" +" PATRÓ. El signe «|» serveix per a separar múltiples patrons.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'última ordre executada." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa ordres en funció d'una condició.\n" +"\n" +" Executa la llista «if ORDRES». Si l'estat de sortida és zero, llavors\n" +" també executa la llista «then ORDRES». En cas contrari cada una de les\n" +" llistes «elif ORDRES» és executada i en cas d'acabar amb estat de\n" +" sortida zero, també s'executa la corresponent llista «then ORDRES», i\n" +" l'ordre if finalitza. En cas contrari, la llista «else ORDRES»\n" +" s'executa, si és que existeix. L'estat de sortida la construcció\n" +" sencera és l'estat de sortida de l'última ordre executada, o zero si " +"cap\n" +" de les condicions s'avalua com a certa.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de l'última ordre executada." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa ordres repetidament mentre es compleixi una condició.\n" +"\n" +" Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n" +" «ORDRES while» tingui estat de sortida igual a zero.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de l'última ordre executada." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa ordres repetidament mentre no es compleixi una condició.\n" +"\n" +" Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n" +" ORDRES «until» tingui estat de sortida diferent de zero.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de l'última ordre executada." + +# help coproc +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Crea un coprocés anomenat NOM.\n" +"\n" +" Executa ORDRE de forma asincrònica, amb la sortida estàndard i " +"l'entrada\n" +" estàndard de l'ordre connectades via canonada als descriptors de fitxer\n" +" assignats als índexs 0 i 1 de la variable vector NOM. Per defecte NOM\n" +" és \"COPROC\".\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida d'ORDRE." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Defineix una funció.\n" +"\n" +" Crea una funció de l'intèrpret anomenada NOM. Quan s'invoca com a " +"ordre\n" +" simple, NOM executa ORDRES en el context de l'intèrpret de qui fa la\n" +" crida. Quan NOM s'invoca, els arguments es passen a la funció com a\n" +" $1...$n, i el nom de la funció es troba a $FUNCNAME.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si NOM és de només lectura." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Agrupa ordres de manera que formin una unitat.\n" +"\n" +" Executa un conjunt d'ordres en un grup. Això permet redirigir la\n" +" sortida d'un grup sencer d'ordres.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'última ordre executada." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Reprèn una feina i la porta al primer pla.\n" +"\n" +" Equivalent a utilitzar FEINA com a argument en l'ordre «fg». Reprèn " +"una\n" +" feina aturada o en segon pla. FEINA pot ser el nom d'una feina, o el\n" +" número d'una feina. Si es troba un «&» després de FEINA, llavors la\n" +" feina s'envia en un segon pla, com si l'especificació de feina\n" +" s'utilitzés com a argument en l'ordre «bg».\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de la feina represa." + +# help '((' +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Avalua una expressió aritmètica.\n" +"\n" +" EXPRESSIÓ s'avalua segons les normes d'avaluació aritmètica. És\n" +" equivalent a \"let EXPRESSIÓ\".\n" +"\n" +" Estat de sortida:\n" +" Si el resultat de l'avaluació és 0, torna 1; altrament torna 0." + +# help '[[' +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Executa una ordre condicional.\n" +"\n" +" Torna un estat 0 o 1, depenent del resultat de l'avaluació de\n" +" l'expressió condicional EXPRESSIÓ. Les expressions es componen dels\n" +" mateixos elements que en l'ordre interna «test», i es poden combinar\n" +" usant els següents operadors.\n" +"\n" +" ( EXPRESSIÓ ) Torna el valor d'EXPRESSIÓ\n" +" ! EXPRESSIÓ Cert si EXPRESSIÓ és fals; altrament fals.\n" +" EXPR1 && EXPR2 Cert si tant EXPR1 com EXPR2 són cert; si no, fals.\n" +" EXPR1 || EXPR2 Cert si EXPR1 o EXPR2 és cert; si no, fals.\n" +"\n" +" Quan s'utilitzen els operadors «==» o «!=», el component de la dreta\n" +" s'interpreta com a un patró i es comprova si coincideix amb la cadena " +"de\n" +" l'esquerra de l'operador. Quan s'utilitza l'operador «=~», el " +"component\n" +" de la dreta de l'operador s'interpreta com a expressió regular i es\n" +" comprova si coincideix amb la cadena de l'esquerra de l'operador.\n" +"\n" +" Els operadors && i || no avaluen EXPR2 si EXPR1 és suficient per\n" +" determinar el valor de l'expressió.\n" +"\n" +" Estat de sortida:\n" +" 0 o 1, depenent del valor d'EXPRESSIÓ." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Nom i ús de variables de l'intèrpret habituals.\n" +"\n" +" BASH_VERSION Informació de la versió de Bash.\n" +" CDPATH\t\tLlista de directoris separats per «:» on buscar\n" +" directoris passats com a arguments a «cd».\n" +" GLOBIGNORE\t\tLlista de patrons separats per «:» que indiquen noms\n" +" que s'ignoren en fer expansions de noms de fitxer.\n" +" HISTFILE\t\tNom del fitxer on es desa l'historial d'ordres.\n" +" HISTFILESIZE\tNombre màxim de línies que pot contenir el\n" +" fitxer de l'historial.\n" +" HISTSIZE\t\tNombre màxim de línies de l'historial a què un\n" +" \t\t\tintèrpret té accés.\n" +" HOME\t\tCamí complet cap al vostre directori personal.\n" +" HOSTNAME\t\tNom de la màquina actual.\n" +" HOSTTYPE\t\tTipus de CPU de la màquina en què corre Bash.\n" +" IGNOREEOF\t Controla el comportament de l'intèrpret en trobar un\n" +" \t\t\tcaràcter EOF (final de fitxer) com a únic caràcter.\n" +" Si la variable està definida, llavors el seu valor\n" +" és el nombre de caràcters EOF seguits que es poden\n" +" llegir en una línia buida abans que l'intèrpret\n" +" surti (per defecte: 10). Si no està definida, EOF\n" +" s'interpreta com el final de les dades d'entrada.\n" +" MACHTYPE\t\tCadena que descriu el sistema en què corre Bash.\n" +" MAILCHECK\t\tAmb quina freqüència, en segons, Bash comprova si hi\n" +" ha correu nou.\n" +" MAILPATH\t\tLlista de fitxers separats per «:» que Bash comprova\n" +" si tenen correu nou.\n" +" OSTYPE\t\tLa versió de Unix en què corre Bash.\n" +" PATH\t\tLlista de directoris separats per «:» on buscar quan\n" +" \t\t\tse cerquen ordres.\n" +" PROMPT_COMMAND\tOrdre que s'executa cada cop abans de mostrar\n" +" \t\t\tl'introductor de l'intèrpret.\n" +" PS1\t\t\tCadena de l'introductor principal.\n" +" PS2\t\t\tCadena de l'introductor secundari.\n" +" PWD\t\t\tCamí complet cap al directori corrent.\n" +" SHELLOPTS\t\tLlista d'opcions habilitades separades per «:».\n" +" TERM\t\tNom del tipus de terminal actual.\n" +" TIMEFORMAT\t\tFormat de sortida per a les estadístiques de temps\n" +" \t\t\tproduïdes per l'ordre «time».\n" +" auto_resume\t\tNo-nul·la significa que una ordre sola en una línia\n" +" \t\t\tes busca en primera instància a la llista actual de\n" +" \t\t\tfeines aturades. Si es troba, aquella feina es\n" +" passa a primer pla. El valor «exact» significa que\n" +" l'ordre ha de coincidir exactament amb alguna ordre\n" +" de la llista de feines aturades. El valor\n" +" «substring» significa que l'ordre ha de coincidir\n" +" amb una subcadena de la feina. Qualsevol altre\n" +" valor significa que l'ordre ha de ser el prefix\n" +" d'una feina aturada.\n" +" histchars\t\tCaràcters que controlen l'expansió de l'historial i\n" +" \t\t\tles substitucions ràpides. El primer caràcter és el\n" +" \t\t\tcaràcter de substitució de l'historial, habitualment\n" +" \t\t\t«!». El segon és el caràcter de «substitució\n" +" ràpida», normalment «^». El tercer és el caràcter\n" +" de «comentari d'historial», normalment «#».\n" +" HISTIGNORE\t\tLlista de patrons separats per «:» utilitzats per a\n" +" \t\t\tdecidir si les ordres s'han de desar a l'historial.\n" + +# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més +# enrere en aquest fitxer +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Afegeix directoris a la pila.\n" +"\n" +" Afegeix un directori al capdamunt de la pila de directoris, o fa girar\n" +" la llista, de manera que al capdamunt de la pila hi queda el directori\n" +" de treball corrent. Sense arguments, intercanvia els dos directoris de\n" +" més amunt.\n" +"\n" +" Opcions:\n" +" -n Omet el canvi de directori quan s'afegeixen directoris a la\n" +" pila, de manera que només canvia el contingut de la pila.\n" +"\n" +" Arguments:\n" +"\n" +" +N Gira la llista de manera tal que l'N-èssim directori\n" +" (comptant des de l'esquerra de la llista que mostra «dirs»,\n" +" començant des de zero) queda a dalt de tot.\n" +"\n" +" -N Gira la llista de manera tal que l'N-èssim directori\n" +" (comptant des de la dreta de la llista que mostra «dirs»,\n" +" començant des de zero) queda a dalt de tot.\n" +"\n" +" dir Afegeix DIR al capdamunt de la pila de directoris, i el\n" +" converteix en el nou directori de treball corrent.\n" +"\n" +" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs».\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si s'ha rebut un argument invàlid, o el canvi de\n" +" directori falla." + +# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més +# enrere en aquest fitxer +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Treu directoris de la pila.\n" +"\n" +" Elimina entrades de la pila de directoris. Sense arguments, elimina el\n" +" directori al capdamunt de la pila, i canvia al nou directori de dalt de\n" +" la pila.\n" +"\n" +" Opcions:\n" +" -n Omet el canvi de directori quan s'eliminen directoris de la\n" +" pila, de manera que només canvia el contingut de la pila.\n" +"\n" +" Arguments:\n" +" +N Elimina l'entrada N-èssima, comptant des de l'esquerra de la\n" +" llista que mostra «dirs», començant des de zero. Per\n" +" exemple: «popd +0» elimina el primer directori, i «popd +1»\n" +" el segon.\n" +"\n" +" -N Elimina l'entrada N-èssima, comptant des de la dreta de la\n" +" llista que mostra «dirs», començant des de zero. Per\n" +" exemple: «popd -0» elimina l'últim directori, i «popd -1» el\n" +" penúltim.\n" +"\n" +" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs».\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si es rep un argument invàlid o el canvi de\n" +" directori falla." + +# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més +# enrere en aquest fitxer +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Mostra la pila de directoris.\n" +"\n" +" Mostra la llista actual de directoris recordats. Els directoris són\n" +" afegits a la llista mitjançant l'ordre «pushd»; podeu recórrer la " +"llista\n" +" de directoris cap enrere amb l'ordre «popd».\n" +"\n" +" Opcions:\n" +" -c neteja la pila, esborrant-ne tots els elements\n" +" -l no mostra les versions abreviades (amb el prefix ~) dels\n" +" directoris relatius al vostre directori personal\n" +" -p mostra la pila, una entrada per línia\n" +" -v mostra la pila, una entrada per línia indicant la posició a\n" +" la pila\n" +"\n" +" Arguments:\n" +" +N Mostra l'entrada N-èssima, comptant des de l'esquerra de la\n" +" llista mostrada per «dirs» quan s'invoca sense opcions, \n" +" començant des de zero.\n" +"\n" +" -N Mostra l'entrada N-èssima, comptant des de la dreta de la\n" +" llista mostrada per «dirs» quan s'invoca sense opcions,\n" +" començant des de zero.\n" +"\n" +" Estat de sortida:\n" +" Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n" +" error." + +#: builtins.c:1916 +#, fuzzy +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Activa i desactiva opcions de l'intèrpret.\n" +"\n" +" Canvia l'estat de cada OPCIÓ. Si no especifiqueu cap OPCIÓ, mostra una\n" +" llista de totes les opcions indicant si estan activades o no.\n" +"\n" +" Opcions:\n" +" -o limita les opcions a les que es poden canviar amb «set -o»\n" +" -p\tmostra totes les opcions indicant-ne l'estat\n" +" -q\tsuprimeix la sortida\n" +" -s\tactiva OPCIÓ\n" +" -u\tdesactiva OPCIÓ\n" +"\n" +" Estat de sortida:\n" +" Torna èxit si OPCIÓ està activada; falla si especifiqueu una opció\n" +" invàlida o OPCIÓ està desactivada." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formata i escriu ARGUMENTS d'acord amb FORMAT.\n" +"\n" +" Opcions:\n" +" -v var assigna la sortida a la variable VAR en lloc d'enviar-la a\n" +" la sortida estàndard\n" +"\n" +" FORMAT és una cadena de caràcters que conté tres tipus d'objectes:\n" +" caràcters normals, que simplement es copien a la sortida estàndard;\n" +" seqüències d'escapada, que es transformen i es copien a la sortida\n" +" estàndard; i especificacions de format, cada una de les quals provoca\n" +" que s'escrigui un argument successiu a la sortida estàndard.\n" +"\n" +" A banda de les especificacions de format estàndards descrites a\n" +" printf(1), printf també interpreta:\n" +"\n" +" %b expandeix seqüències d'escapada a l'argument corresponent\n" +" %q afegeix les cometes necessàries perquè l'argument pugui ser\n" +" utilitzat com a entrada de l'intèrpret\n" +" %(fmt)T escriu la cadena resultant de passar FMT a strftime(3) com a\n" +" argument\n" +"\n" +" El format es reutilitza tant com sigui necessari fins a consumir tots\n" +" els arguments. Si hi ha menys arguments dels que el format requereix,\n" +" la resta d'especificacions de format funcionen com si s'hagués\n" +" especificat un valor de zero o una cadena nul·la, segons el cas.\n" +"\n" +" Estat de sortida:\n" +" Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n" +" error d'assignació o d'escriptura." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Especifica com Readline ha de completar arguments.\n" +"\n" +" Per a cada NOM, especifica com s'han de completar els arguments. Si no\n" +" s'indica cap opció, les especificacions de compleció existents es\n" +" mostren en un format que permet reutilitzar-les com a entrada.\n" +"\n" +" Opcions:\n" +" -p mostra les especificacions existents en format reciclable\n" +" -r suprimeix l'especificació de compleció per a NOM, o, si no\n" +" \t\ts'indica cap NOM, totes les especificacions de compleció\n" +" -D assigna les accions o complecions a totes les ordres que no\n" +" tenen definida una compleció específica\n" +" -E assigna les accions o complecions a ordres \"en blanc\", o\n" +" sigui, als intents de completar una línia en blanc\n" +"\n" +" Quan s'intenta una compleció, les accions s'apliquen en l'ordre en què\n" +" les opcions -D i -E apareixen al paràgraf anterior. L'opció -D té\n" +" preferència sobre l'opció -E.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Mostra possibles complecions en funció de les opcions.\n" +"\n" +" Aquesta ordre està pensada per a ser utilitzada en una funció que " +"generi\n" +" possibles complecions. Si especifiqueu l'argument opcional PARAULA, es\n" +" limiten les complecions a aquelles que coincideixen amb PARAULA.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error." + +#: builtins.c:2016 +#, fuzzy +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Modifica o mostra opcions de compleció.\n" +"\n" +" Modifica les opcions de compleció de NOM, o, si no especifiqueu cap " +"NOM,\n" +" la compleció que s'està executant en el moment. Si no s'indica cap\n" +" OPCIÓ, mostra les opcions de compleció per a cada NOM o\n" +" l'especificació de compleció en ús.\n" +"\n" +" Opcions:\n" +" -o opció Activa OPCIÓ per a NOM\n" +" -D Canvia les opcions de compleció d'ordres per " +"defecte\n" +" -E Canvia les opcions de compleció d'ordres \"buides\"\n" +"\n" +" Si utilitzeu «+o» en lloc de «-o», desactiva l'opció especificada.\n" +"\n" +" Arguments:\n" +"\n" +" Cada NOM és el nom d'una ordre per la qual s'ha d'haver definit una\n" +" especificació de compleció amb l'ordre interna «complete». Si no\n" +" especifiqueu cap NOM, compopt s'ha de cridar des d'una funció " +"generadora\n" +" de complecions, i les opcions que es modifiquen afecten la generació de\n" +" complecions que s'està executant en aquell moment.\n" +"\n" +" Estat de sortida: \n" +" Torna èxit, excepte si passeu alguna opció no vàlida o NOM no té\n" +" definida cap especificació de compleció." + +# help readarray +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Llegeix línies d'un fitxer cap a una variable vector.\n" +"\n" +" Llegeix línies de l'entrada estàndard cap a la variable VECTOR, o del\n" +" descriptor de fitxer FD si especifiqueu l'opció -u. La variable vector\n" +" per defecte és MAPFILE.\n" +"\n" +" Opcions:\n" +" -d delim Usa DELIM com delimitador de línies, en lloc del caràcter " +"de\n" +" salt de línia\n" +" -n nombre Copia com a màxim NOMBRE línies. Si NOMBRE és 0, es copien\n" +" \t\ttotes les línies.\n" +" -O origen Comença l'assignació a l'índex ORIGEN, per defecte 0.\n" +" -s nombre Descarta les primeres NOMBRE línies.\n" +" -t Estripa el caràcter de salt de línia de cada línia llegida.\n" +" -u fd Llegeix el descriptor de fitxer FD, en lloc de l'entrada\n" +" estàndard.\n" +" -C callback Avalua CALLBACK cada QUÀNTUM línies llegides.\n" +" -c quàntum Nombre de línies llegides abans de cridar " +"CALLBACK\n" +"\n" +" Arguments:\n" +" VECTOR Nom de la variable vector per a les dades.\n" +"\n" +" Si especifiqueu l'opció -C sense -c, el quàntum per defecte és 5000.\n" +" Quan s'avalua la funció CALLBACK, se li passa l'índex del proper " +"element\n" +" del vector i la línia que s'assigna a aquest element, com a arguments\n" +" addicionals.\n" +"\n" +" Si no especifiqueu un origen explícit, se suprimeix qualsevol valor\n" +" assignat a VECTOR abans d'assignar cap valor.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si passeu una opció no vàlida o VECTOR és de només\n" +" lectura o no és una variable vector." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Llegeix línies d'un fitxer cap a una variable vector.\n" +"\n" +" Un sinònim de «mapfile»." + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2016 Free Software Foundation, Inc." + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: procés %5ld (%s) a the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Senyal Desconegut #" + +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2013 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" diff --git a/bash-5.1/po/cs.gmo b/bash-5.1/po/cs.gmo new file mode 100644 index 0000000000000000000000000000000000000000..8058f0bb5ca5fc3cbc0d12cabdf97424bf8ca642 GIT binary patch literal 163842 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]D~v|w*F-*pAfD~Eb`%B< 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 U3@6#(Y9MbrilPx# literal 0 HcmV?d00001 diff --git a/bash-5.1/po/cs.po b/bash-5.1/po/cs.po new file mode 100644 index 0000000..52abc0a --- /dev/null +++ b/bash-5.1/po/cs.po @@ -0,0 +1,6630 @@ +# Czech tranlation for bash. +# Copyright (C) 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Petr Pisar , 2008, 2009, 2010, 2011, 2012, 2013, 2014. +# Petr Pisar , 2015, 2016, 2018, 2019. +# +# alias → alias +# subscript → podskript +# subroutine → podprogram +# completion options → možnosti doplňování +# shell option → pÅ™epínaÄ shellu (shopt) +# Názvy signálů a stavů procesu by mÄ›ly souhlasit se signal(7). +msgid "" +msgstr "" +"Project-Id-Version: bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-10-29 19:12+01:00\n" +"Last-Translator: Petr Pisar \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "chybný podskript pole" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: odstraňuje se atribut odkazu na název" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: Äíslované pole nezle pÅ™evést na pole asociativní" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: neplatný klÃ­Ä asociativního pole" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: pÅ™es neÄíselný indexu nelze dosadit" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: pÅ™i pÅ™iÅ™azovaní asociativního pole se musí použít podskript" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nelze vytvoÅ™it: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: pro příkaz nelze nalézt klávesovou mapu " + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: první nebílý znak není „\"“" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "ne zavírající „%c“ v %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: chybí dvojteÄkový oddÄ›lovaÄ" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "„%s“: nelze zruÅ¡it vazbu" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "závorková expanze: nelze alokovat paměť pro %s" + +# TODO: pluralize +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "závorková expanze: alokace pamÄ›ti pro %u prvků selhala" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "závorková expanze: alokace pamÄ›ti pro „%s“ selhala" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "„%s“: chybný název aliasu" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "upravování řádku není povoleno" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%s“: chybný název klávesové mapy" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nelze Äíst: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "„%s“: neznámé jméno funkce" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s není svázán s žádnou klávesou.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s lze vyvolat pÅ™es " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nelze zruÅ¡it vazbu" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "poÄet smyÄek" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "má smysl jen ve smyÄkách „for“, „while“ nebo „until“" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Vrátí kontext aktuálního podprogramu.\n" +" \n" +" Bez VÃRAZU vrátí „$řádek $název_souboru“. S VÃRAZEM vrátí\n" +" „$řádek $podprogram $název_souboru“; tuto zvláštní informaci lze\n" +" využít pro výpis zásobníku volání.\n" +" \n" +" Hodnota VÃRAZU urÄuje, kolik rámců volání se má zpÄ›tnÄ› projít od toho\n" +" souÄasného; vrcholový rámec má Äíslo 0.\n" +" \n" +" Návratový kód:\n" +" Vrací 0, pokud shell provádí shellovou funkci a VÃRAZ je platný." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "není nestavena HOME" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "příliÅ¡ mnoho argumentů" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "adresář s prázdným názvem" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "není nastaveno OLDPWD" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "řádek %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "varování: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: užití: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: pÅ™epínaÄ vyžaduje argument" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: vyžadován Äíselný argument" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: nenalezeno" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: chybný pÅ™epínaÄ" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: chybný název pÅ™epínaÄe" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "„%s“: není platným identifikátorem" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "neplatné osmiÄkové Äíslo" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "chybné Å¡estnáctkové Äíslo" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "chybné Äíslo" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: chybné urÄení signálu" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "„%s“: není PID ani platným oznaÄením úlohy" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: promÄ›nná pouze pro Ätení" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s mimo rozsah" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s mimo rozsah" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: žádná taková úloha" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: žádné řízení úloh" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "žádné řízení úloh" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: omezeno" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "omezeno" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: není vestavÄ›ným příkazem shellu" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "chyba zápisu: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "chyba pÅ™i nastavování vlastností terminálu: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "chyba pÅ™i získávání vlastností terminálu: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: chyba pÅ™i zjišťování souÄasného adresáře: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: nejednoznaÄné urÄení úlohy" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "k této verzi není dostupná nápovÄ›da" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nelze zruÅ¡it: %s jen pro Ätení" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: nelze zruÅ¡it" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: neplatný název akce" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: žádné doplňování neurÄeno" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "varování: pÅ™epínaÄ -F možná nebude dÄ›lat, co jste Äekali" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "varování: pÅ™epínaÄ -C možná nebude dÄ›lat, co jste Äekali" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "doplňovací funkce se právÄ› nevykonává" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "může být použito jen ve funkci" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: promÄ›nná s odkazem nemůže být polem" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: promÄ›nná s odkazem na název nemůže odkazovat sama na sebe" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: kruhový odkaz na název" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "„%s“: neplatný název promÄ›nné pro odkaz na název" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "„-f“ nezle použít na výrobu funkce" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkce jen pro Ätení" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: pÅ™iÅ™azení do složeného pole uzavÅ™eného v uvozovkách je zastaralé" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: takto nelze likvidovat pole" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: asociativní pole nelze pÅ™evést na Äíslované pole" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dynamické nahrávání není dostupné" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "sdílený objekt %s nelze otevřít: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "ve sdílením objektu %2$s nelze nalézt %1$s: %3$s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: není dynamicky nahráno" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "zavádÄ›cí funkce pro %s vrací chybu (%d): nezavedeno" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: není dynamicky nahráno" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nelze smazat: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: je adresářem" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: není obyÄejný soubor" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: soubor je příliÅ¡ velký" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: binární soubor nelze spustit" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nelze provést: %s" + +# XXX: Toto je zpráva interaktivního shellu pÅ™i příkazu exit informující +# o odhlášení +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "odhlášení\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "toto není login shell: použijte „exit“" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Jsou zde pozastavené úlohy.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Jsou zde běžící úlohy.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "žádný příkaz nenalezen" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "urÄení historie" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: doÄasný soubor nelze otevřít: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "souÄasný" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "úloha %d spuÅ¡tÄ›na bez správy úloh" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: chybný pÅ™epínaÄ – %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: pÅ™epínaÄ vyžaduje argument – %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hashování zakázáno" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tabulka hashů je prázdná\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "zásahů\tpříkaz\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Příkazy shellu shodující se s klíÄovým slovem „" +msgstr[1] "Příkazy shellu shodující se s klíÄovými slovy „" +msgstr[2] "Příkazy shellu shodující se s klíÄovými slovy „" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"žádné téma nápovÄ›dy se nehodí pro „%s“. Zkuste „help help“ nebo „man -k %s“ " +"nebo „info %s“." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nelze otevřít: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Tyto příkazy shellu jsou vnitÅ™nÄ› definovány. NapiÅ¡te „help“, abyste získali\n" +"tento seznam. Podrobnosti o funkci „název“ získáte příkazem „help název“.\n" +"Příkazem „info bash“ získáte obecné informace o tomto shellu.\n" +"Použijte „man -k“ nebo „info“, chcete-li zjistit více o příkazech, které\n" +"na tomto seznamu nejsou.\n" +"\n" +"HvÄ›zdiÄka (*) vedle jména znamená, že příkaz je zakázán.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "nelze použít více jak jeden z -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "místo v historii" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: neplatný Äasový údaj" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: expanze historie selhala" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib selhala" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "s „-x“ nejsou dovoleny další pÅ™epínaÄe" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumenty musí být proces nebo identifikátor úlohy" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Neznámá chyba" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "oÄekáván výraz" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: není (promÄ›nnou typu) indexované pole" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: chybné urÄení deskriptoru souboru" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: neplatný deskriptor souboru: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: chybný poÄet řádků" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: chybný poÄátek pole" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: neplatné množství mezi voláními" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "prázdný název promÄ›nné typu pole" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "je vyžadována podpora promÄ›nných typu pole" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "„%s“: postrádám formátovací znak" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "„%c“: chybné urÄení Äasového limitu" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%c“: neplatný formátovací znak" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "varování: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "potíže s rozebráním formátovacího Å™etÄ›zce: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "u \\x chybí Å¡estnáctková Äíslovka" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "u \\%c chybí unikódová Äíslovka" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "žádný další adresář" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: chybný argument" + +#: builtins/pushd.def:480 +msgid "" +msgstr "<žádný aktuální adresář>" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "prázdný zásobník adresářů" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "poÅ™adí v zásobníku adresářů" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Zobrazí seznam právÄ› zapamatovaných adresářů. Adresáře si najdou svoji\n" +" cestu na seznam příkazem „pushd“ a procházet seznamem zpÄ›t lze příkazem\n" +" „popd“.\n" +" \n" +" PÅ™epínaÄe:\n" +" -c\tvyprázdní zásobník adresářů tím, že smaže vÅ¡echny jeho prvky\n" +" -l\tnevypisuje adresáře relativní vaÅ¡emu domovskému adresáři pomocí\n" +" \tvlnkové pÅ™edpony\n" +" -p\tvypíše zásobník adresářů stylem jedna položka na jeden řádek\n" +" -v\tvypíše zásobník adresářů stylem jedna položka na jeden řádek\n" +" \tuvozená svojí pozicí na zásobníku\n" +" \n" +" Argumenty:\n" +" +N\tZobrazí N. položku poÄítáno zleva na seznamu, který zobrazuje\n" +" \tdirs, když je vyvolán bez pÅ™epínaÄů, poÄínaje nulou.\n" +" \n" +" -N\tZobrazí N. položku poÄítáno zprava na seznamu, který zobrazuje\n" +" \tdirs, když je vyvolán bez pÅ™epínaÄů, poÄínaje nulou." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"PÅ™idá adresář na vrchol zásobníku adresářů nebo zásobník zrotuje tak,\n" +" že nový vrchol zásobníku se stane souÄasným pracovním adresářem. Bez\n" +" argumentů prohodí dva vrchní adresáře.\n" +" \n" +" PÅ™epínaÄe:\n" +" -n\tPotlaÄí obvyklou zmÄ›nu adresáře, když se na zásobník pÅ™idávají\n" +" \tadresáře, takže zmÄ›nÄ›n bude pouze zásobník.\n" +" \n" +" Argumenty:\n" +" +N\tZrotuje zásobník tak, že N. adresář (poÄítáno zleva na seznamu\n" +" \tzobrazovaném pomocí „dirs“, poÄínaje nulou) se dostane na vrchol.\n" +" \n" +" -N\tZrotuje zásobník tak, že N. adresář (poÄítáno zprava na seznamu\n" +" \tzobrazovaném pomocí „dirs“, poÄínaje nulou) se dostane na vrchol.\n" +" \n" +" ADRESÃŘ\n" +" \tPÅ™idá ADRESÃŘ na vrchol zásobníku adresářů a uÄiní jej novým\n" +" \tsouÄasným pracovním adresářem.\n" +" \n" +" Zásobník adresářů si můžete prohlédnout příkazem „dirs“." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Odstraní položku ze zásobníku adresářů. Bez argumentů odstraní adresář\n" +" z vrcholu zásobníku a pÅ™epne se do nového vrcholového adresáře.\n" +" \n" +" PÅ™epínaÄe:\n" +" -n\tPotlaÄí obvyklou zmÄ›nu adresáře, když se ze zásobníku odebírají\n" +" \tadresáře, takže zmÄ›nÄ›n bude pouze zásobník.\n" +" \n" +" Argumenty:\n" +" +N\tOdstraní N. položku poÄítáno zleva na seznamu zobrazovaném pomocí\n" +" \t„dirs“, poÄínaje nulou. Na příklad: „popd +0“ odstraní první\n" +" \tadresář, „popd -1“ druhý.\n" +" \n" +" -N\tOdstraní N. položku poÄítáno zprava na seznamu zobrazovaném " +"pomocí\n" +" \t„dirs“, poÄínaje nulou. Na příklad: „popd -0“ odstraní poslední\n" +" \tadresář, „popd -1“ další vedle posledního.\n" +" \n" +" Zásobník adresářů si můžete prohlédnout příkazem „dirs“." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: chybné urÄení Äasového limitu" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "chyba Ätení: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "„return“ lze provést jen z funkce nebo skriptu naÄteného pÅ™es „source“" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "funkci i promÄ›nnou nelze ruÅ¡it souÄasnÄ›" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: není (promÄ›nnou typu) pole" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: není funkcí" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: nelze exportovat" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "poÄet shiftů" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "pÅ™epínaÄ shellu nelze zároveň nastavit a zruÅ¡it" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: chybný název pÅ™epínaÄe shellu" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "vyžadován argument s názvem souboru" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: soubor nenalezen" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "nelze pozastavit" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "login shell nelze pozastavit" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s je alias na „%s“\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s je klíÄové slovo shellu\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s je funkce\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s je zvláštní souÄást shellu\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s je souÄást shellu\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s je %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s je zahashován (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: chybný argument s limitou" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "„%c“: chybný příkaz" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: limit nelze zjistit: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "limit" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: limit nelze zmÄ›nit: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "osmiÄkové Äíslo" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%c“: chybný operátor symbolických práv" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%c“: chybný znak symbolický práv " + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " řádek " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "poslední příkaz: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "UkonÄuji…" + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORMACE: " + +#: error.c:462 +msgid "unknown command error" +msgstr "chyba neznámého příkazu" + +#: error.c:463 +msgid "bad command type" +msgstr "chybný druh příkazu" + +#: error.c:464 +msgid "bad connector" +msgstr "chybný konektor" + +#: error.c:465 +msgid "bad jump" +msgstr "chybný skok" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: nevázaná promÄ›nná" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aÄasový limit pro Äekání na vstup vyprÅ¡el: automatické odhlášení\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "standardní vstup nelze pÅ™esmÄ›rovat z /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: „%c“: chybný formátovací znak" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: koproces [%d:%s] stále existuje" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "chyba v rouÅ™e" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: maximální úroveň zanoÅ™ení funkce eval byla pÅ™ekroÄena (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: maximální úroveň zanoÅ™ení funkce source byla pÅ™ekroÄena (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: maximální úroveň zanoÅ™ení funkcí byla pÅ™ekroÄena (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: omezeno: v názvu příkazu nesmí být „/“" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: příkaz nenalezen" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: chybný interpretr" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: binární soubor nelze spustit: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "„%s“: je zvláštní vestavÄ›ný příkaz shellu" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "deskriptor souboru %d nelze duplikovat na deskriptor %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "úroveň rekurze výrazu byla pÅ™ekroÄena" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "zásobník rekurze podtekl" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "syntaktická chyba ve výrazu" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "pokus o pÅ™iÅ™azení do ne-promÄ›nné" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "syntaktická chyba v pÅ™iÅ™azení do promÄ›nné" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "dÄ›lení nulou" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "chyba: chybný expassing token" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "v podmínÄ›ném výrazu oÄekávána „:“" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "mocnitel menší než 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "po pÅ™ednostním zvýšení nebo snížení oÄekáván identifikátor" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "postrádám „)“" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "syntaktická chyba: oÄekáván operand" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntaktická chyba: chybný aritmetický operátor" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (chybný token je „%s“)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "chybný aritmetický základ" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: chybný poÄet řádků" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "hodnot je pro základ příliÅ¡ velká" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: chyba výrazu\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: rodiÄovské adresáře nejsou přístupné" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "na deskriptoru %d nelze resetovat režim nodelay" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "nový deskriptor souboru pro vstup bashe z deskr. %d nelze alokovat" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: buffer již pro nový deskriptor %d existuje" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp roury" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "forknutý PID %d se objevil v běžící úloze %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "mažu pozastavenou úlohu %d se skupinou procesů %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: PID %5ld (%s) oznaÄen za stále živého" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: žádný takový PID" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signál %d" + +# XXX: (úloha) dokonÄna. Používat ženský rod i unásledujících. Jedná se +# o výpis úloh. +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "DokonÄena" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Pozastavena" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Pozastavena (%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Běží" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "DokonÄena (%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "UkonÄena %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Stav neznámý" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(core dumped [obraz pamÄ›ti uložen]) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (cwd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid na potomku (z %ld na %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: PID %ld není potomkem tohoto shellu" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Žádný záznam o procesu %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: úloha %d je pozastavena" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: žádná taková úloha" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: úloha skonÄila" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: úloha %d je již na pozadí" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: zapíná se WNOHANG, aby se zabránilo neurÄitému zablokování" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: řádek %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (core dumped [obraz pamÄ›ti uložen])" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(cwd nyní: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp selhalo" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: správa úloh nefunguje na pozadí" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: disciplína linky" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "nelze nastavit skupinu procesů terminálu (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "žádná správa úloh v tomto shellu" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: pÅ™edpoklad nesplnÄ›n: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: zbabraný pÅ™edpoklad\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "není známo" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: blok v seznamu uvolnÄ›ných zbit" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: zavoláno s argumentem již uvolnÄ›ného bloku" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: zavoláno s argumentem nenaalokovaného bloku" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: velikosti poÄáteÄního a koncového kusu se liší" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: zavoláno s argumentem nenaalokovaného bloku" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: velikosti poÄáteÄního a koncového kusu se liší" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: tabulka alokací je plná FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p již obsažen v tabulce jako alokovaný?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p již obsažen v tabulce jako volný?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "chybný základ" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: stroj není znám" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: chybná služba" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: chybné urÄení síťové cesty" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "síťové operace nejsou podporovány" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: národní prostÅ™edí nelze zmÄ›nit (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: národní prostÅ™edí nelze zmÄ›nit (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: národní prostÅ™edí nelze zmÄ›nit (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: národní prostÅ™edí nelze zmÄ›nit (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "V $_ máte poÅ¡tu" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "V $_ máte novou poÅ¡tu" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "PoÅ¡ta v %s je pÅ™eÄtená\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "chyba syntaxe: vyžadován aritmetický výraz" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "chyba syntaxe: neoÄekávaný „;“" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "chyba syntaxe: „((%s))“" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: chybný druh instrukce %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "„here“ dokument na řádku %d ukonÄen koncem souboru (požadováno „%s“)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: instrukce pÅ™esmÄ›rování „%d“ mimo rozsah" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) pÅ™esahuje SIZE_MAX (%lu): řádek " +"zkrácen" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "maximální poÄet here dokumentů pÅ™ekroÄen" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "neoÄekávaný konec souboru pÅ™i hledání znaku odpovídajícímu „%c“" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "neoÄekávaný konec souboru pÅ™i hledání „]]“" + +# XXX: Condional means condition (adj.) probably. Can English distinguish +# between the condition (podmínkový) and the code branch (podmínÄ›ný)? Check +# for all "conditional" string occurences. +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "chyba syntaxe ve výrazu podmínky: neoÄekávaný token „%s“" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "chyba syntaxe ve výrazu podmínky" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "neoÄekávaný token „%s“, oÄekávána „)“" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "oÄekávána „)“" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "neoÄekávaný argument „%s“ u podmínkového unárního operátoru" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "neoÄekávaný argument u podmínkového unárního operátoru" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "neoÄekávaný token „%s“, oÄekáván podmínkový binární operátor" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "oÄekáván podmínkový binární operátor" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "neoÄekávaný argument „%s„ u podmínkového binárního operátoru" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "neoÄekávaný argument u podmínkového binárního operátoru" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "neoÄekávaný token „%c“ v podmínkovém příkazu" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "neoÄekávaný token „%s“ v podmínkovém příkazu" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "neoÄekávaný token %d v podmínkovém příkazu" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "chyba syntaxe poblíž neoÄekávaného tokenu „%s“" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "chyba syntaxe poblíž „%s“" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "chyba syntaxe: nenadálý konec souboru" + +#: parse.y:6365 +msgid "syntax error" +msgstr "chyba syntaxe" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Shell lze ukonÄit příkazem „%s“.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "nenadálý konec souboru pÅ™i hledání odpovídající „)“" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "doplňování: funkce „%s“ nenalezena" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: možná smyÄka opakování" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULLOVà COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: chybná propojka „%d“" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: neplatný deskriptor souboru" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: nullový ukazatel na soubor" + +# fd, fp a fileno jsou identifikátory v kódu +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace: fd (%d) != fileno fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: „%c“: chybný formátovací znak" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "deskriptor souboru mimo rozsah" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: nejednoznaÄné pÅ™esmÄ›rování" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: existující soubor nelze pÅ™epsat" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: omezeno: výstup nelze pÅ™esmÄ›rovat" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "pro „here“ dokument nelze vytvoÅ™it doÄasný soubor: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: deskriptor souboru nelze pÅ™iÅ™adit do promÄ›nné" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port není bez síťování podporováno" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "chyba pÅ™esmÄ›rování: deskriptor souboru nelze duplikovat" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "nelze nalézt /tmp, vytvoÅ™te jej, prosím!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp musí být platným názvem pro adresář" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "v interaktivních shellech se režim krásného výpisu nepoužije" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: chybný pÅ™epínaÄ" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "UID nelze nastavit na %d: efektivní UID je %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "GID nelze nastavit na %d: efektivní GID je %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "debuger nelze spustit, ladicí režim zakázán" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: Je adresářem" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Nemám žádné jméno!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, verze %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Použití:\t%s [Dlouhý GNU pÅ™epínaÄ] [pÅ™epínaÄ]…\n" +"\t%s [Dlouhý GNU pÅ™epínaÄ] [pÅ™epínaÄ] skriptový_soubor…\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Dlouhé GNU pÅ™epínaÄe:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "PÅ™epínaÄe shellu:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD nebo -c příkaz nebo -O shopt_pÅ™epínaÄ\t(pouze pÅ™i vyvolání)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s nebo -o pÅ™epínaÄ\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Podrobnosti o pÅ™epínaÄích shellu získáte tím, že napíšete „%s -c \"help set" +"\"“.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Podrobnosti o příkazech vestavÄ›ných do shellu získáte tím, že\n" +"napiÅ¡te „%s -c help“.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Chyby nahlásíte příkazem „bashbug“.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "Domovská stránka bashe: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Obecný návod na použití softwaru GNU: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: neplatná operace" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "FaleÅ¡ný signál" + +# PÅ™eklady názvů signálů pÅ™evzaty (s mírnými úpravami) z Äeské pÅ™ekladu +# manuálové stránky signal(7). +#: siglist.c:50 +msgid "Hangup" +msgstr "Linka terminálu zavěšena" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "PÅ™eruÅ¡ení" + +#: siglist.c:58 +msgid "Quit" +msgstr "UkonÄení" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Neplatná instrukce" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "PÅ™eruÅ¡ení pÅ™i ladÄ›ní" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "UkonÄení funkcí abort()" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "Instrukce EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Výjimka pÅ™i práci s pohyblivou řádovou Äárkou" + +#: siglist.c:86 +msgid "Killed" +msgstr "Zabit" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Chyba sbÄ›rnice" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Chyba segmentace" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Å patné volání systému" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Z roury nikdo neÄte" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Signál ÄasovaÄe" + +#: siglist.c:110 +msgid "Terminated" +msgstr "UkonÄit" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "ÄŒekají urgentní I/O data" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Pozastaveno (signálem)" + +#: siglist.c:126 +msgid "Continue" +msgstr "PokraÄovat" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Potomek byl pozastaven nebo zemÅ™el" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Pozastaveno (vstupem TTY)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Pozastaveno (výstupem na TTY)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O je pÅ™ipraveno" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Dosažen limit procesorového Äasu" + +#: siglist.c:154 +msgid "File limit" +msgstr "Dosažen limit velikosti souboru" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "ÄŒasovaÄ (virtuální)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "ÄŒasovaÄ (profilovací)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "ZmÄ›na okna" + +# XXX: SIGLOST +#: siglist.c:170 +msgid "Record lock" +msgstr "Zámek záznamu" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Uživatelský signal 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Uživatelský signál 2" + +# FIXME: HFT znamená High Frequency Timer? Zkontrolovat i další výskyty +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "vstupní data HFT Äekají" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "hrozí selhání napájení" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "hrozí selhání systému" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "pÅ™esunout proces na jiný procesor" + +#: siglist.c:198 +msgid "programming error" +msgstr "chyba programování" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "Režim HFT sledování pÅ™idÄ›len" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "Režim HFT sledování odebrán" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT zvuková posloupnost byla dokonÄena" + +#: siglist.c:214 +msgid "Information request" +msgstr "Požadavek o informaci" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Neznámý signál Ä. %d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "chybná substituce: v %2$s chybí uzavírací „%1$s“" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: seznam nelze pÅ™iÅ™adit do prvku pole" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "nelze vyrobit rouru za úÄelem substituce procesu" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "nelze vytvoÅ™it potomka za úÄelem substituce procesu" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "pojmenovanou rouru %s nelze otevřít pro Ätení" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "pojmenovanou rouru %s nelze otevřít pro zápis" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "pojmenovanou rouru %s nelze zdvojit jako deskriptor %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "substituce příkazu: nulový bajt ve vstupu ignorován" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "nelze vytvoÅ™it rouru pro substituci příkazu" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "nelze vytvoÅ™it potomka pro substituci příkazu" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: rouru nelze zdvojit jako deskriptor 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: neplatný název promÄ›nné pro odkaz na název" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: chybná nepřímá expanze" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: chybný název promÄ›nné" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parametr nenastaven" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametr null nebo nenastaven" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: výraz podÅ™etÄ›zce < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: chybná substituce" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: takto nelze pÅ™iÅ™azovat" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"budoucá verze tohoto shellu budou vynucovat vyhodnocení jako aritmetickou " +"substituci" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "chybná substituce: v %s chybí uzavírací „`“" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "žádná shoda: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "oÄekáván argument" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: oÄekáván celoÄíselný výraz" + +#: test.c:265 +msgid "`)' expected" +msgstr "oÄekávána „)“" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "oÄekávána „)“, nalezeno %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: oÄekáván binární operátor" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: oÄekáván unární operátor" + +#: test.c:881 +msgid "missing `]'" +msgstr "postrádám „]“" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "chyba syntaxe: neoÄekávaný „;“" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "neplatné Äíslo signálu" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" +"obsluha signálů: maximální úroveň zanoÅ™ení obsluhy signálů byla pÅ™ekroÄena " +"(%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: chybná hodnota v trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: obsluha signálu je SIG_DFL, pÅ™eposílám %d (%s) sobÄ›" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: chybný signál %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "chyba pÅ™i importu definice „%s“" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "úroveň shellu (%d) příliÅ¡ vysoká, resetuji na 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: žádný kontext funkce v aktuálním rozsahu" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: hodnotu nelze do promÄ›nné pÅ™iÅ™adit" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: pÅ™iÅ™azení Äísla odkazu na název" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: žádný kontext funkce v aktuálním rozsahu" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s: má nullový exportstr" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "neplatný znak %d v exportstr pro %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "v exportstr pro %s chybí „=“" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: hlava shell_variables není kontextem funkce" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: chybí kontext global_variables" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: hlava shell_variables není doÄasným rozsahem prostÅ™edí" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: nelze otevřít jako SOUBOR" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: neplatná hodnota pro deskriptor trasovacího souboru" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: hodnota kompatibility je mimo rozsah" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright © 2012 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licence GPLv3+: GNU GPL verze 3 nebo novÄ›jší \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, verze %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Toto je svobodné programové vybavení: máte právo jej mÄ›nit a šířit." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "VEÅ KERÉ ZÃRUKY chybí, jak jen zákon dovoluje." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: nelze alokovat %'lu bajtů (alokováno %'lu bajtů)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: nezle alokovat %'lu bajtů" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: nelze alokovat %'lu bajtů (alokováno %'lu bajtů)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: nelze alokovat %'lu bajtů" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [název[=hodnota] …]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] název [název…]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m klávmapa] [-f soubor] [-q název] [-u název] [-r " +"klávposl] [-x klávposl:příkaz-shellu] [klávposl:readline-funkce nebo " +"readline-příkaz]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [vestavÄ›ný-příkaz-shellu [argument…]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [výraz]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [adresář]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] příkaz [argument…]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [název[=hodnota]…]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] název[=hodnota]…" + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [pÅ™epínaÄ] název[=hodnota]…" + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [argument…]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [argument…]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f soubor] [název…]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [argument…]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts optstring name [argument]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a název] [příkaz [argument…]] [pÅ™esmÄ›rování…]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e enázev] [-lnr] [první] [poslední] nebo fc -s [vzor=náhrada] [příkaz]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [úloha]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [úloha…]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p název_cesty] [-dt] [název…]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [vzorek…]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d pozice] [n] nebo history -anrw [jméno_souboru] nebo history " +"-ps argument [argument…]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [úloha…] nebo jobs -x příkaz [argumenty]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [úloha… | PID…]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n Äíssig | -sigspec] pid | úloha… nebo kill -l [sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let argument [argument…]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a pole] [-d oddÄ›lovaÄ] [-i text] [-n p_znaků] [-N p_znaků] [-p " +"výzva] [-t limit] [-u fd] [jméno…]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o název_pÅ™epínaÄe] [--] [argument…]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [jméno…]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [název[=hodnota]…] nebo export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [název[=hodnota]…] nebo readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source název_souboru [argumenty]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". název_souboru [argumenty]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [výraz]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ argument… ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[argument] signal_spec…]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] název [název…]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mód]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [id…]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid…]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NÃZEV [in SLOVECH…] ; do PŘÃKAZY; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( výr1; výr2; výr3 )); do PŘÃKAZY; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NÃZEV [in SLOVA…;] do PŘÃKAZY; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] kolona" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case SLOVO in [VZOR [| VZOR]…) PŘÃKAZY ;;]… esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if PŘÃKAZY; then PŘÃKAZY; [ elif PŘÃKAZY; then PŘÃKAZY; ]… [ else PŘÃKAZY; ] " +"fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while PŘÃKAZY; do PŘÃKAZY; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until PŘÃKAZY; do PŘÃKAZY; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NÃZEV] příkaz [pÅ™esmÄ›rování]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function jméno { PŘÃKAZY ; } nebo jméno () { PŘÃKAZY ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ PŘÃKAZY ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "úloha [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( výraz ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ výraz ]]" + +# XXX: "variable" je literál na seznamy vestavÄ›ných příkazů +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables – názvy a významy nÄ›kterých promÄ›nných shellu" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | adresář]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [název_volby…]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v promÄ›nná] formát [argumenty]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o pÅ™epínaÄ] [-A akce] [-G globvzor] " +"[-W seznam_slov] [-F funkce] [-C příkaz] [-X filtrvzor] [-P pÅ™edpona] [-S " +"přípona] [název…]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o pÅ™epínaÄ] [-A akce] [-G globvzor] [-W " +"seznam_slov] [-F funkce] [-C příkaz] [-X filtrvzor] [-P pÅ™edpona] [-S " +"přípona] [slovo]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o možnost] [-DEI] [název…]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d oddÄ›lovaÄ] [-n poÄet] [-O poÄátek] [-s poÄet] [-t] [-u FD] [-C " +"volání] [-c množství] [pole]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d oddÄ›lovaÄ] [-n poÄet] [-O poÄátek] [-s poÄet] [-t] [-u FD] [-C " +"volání] [-c množství] [pole]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definuje nebo zobrazí aliasy.\n" +" \n" +" „alias“ bez argumentů vypíše na standardní výstup seznam aliasů ve " +"znovu\n" +" použitelném formátu NÃZEV=HODNOTA.\n" +" \n" +" Jinak bude definován alias pro každý NÃZEV, který má zadanou HODNOTU.\n" +" ZávÄ›reÄná mezera v HODNOTÄš způsobí, že pÅ™i expanzi bude následující " +"slovo\n" +" zkontrolováno na substituci aliasů.\n" +" \n" +" PÅ™epínaÄe:\n" +" -p\tvypíše vÅ¡echny definované aliasy ve znovu použitelném formátu\n" +" \n" +" Návratový kód:\n" +" alias vrátí pravdu, pokud nebyl zadán NÃZEV, pro který není žádný alias\n" +" definován." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Odstraní každý NÃZEV ze seznamů definovaných aliasů.\n" +" \n" +" PÅ™epínaÄe:\n" +" -a\todstraní vÅ¡echny definice aliasů\n" +" Vrátí úspÄ›ch, pokud NÃZEV není neexistující alias." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Nastaví klávesové zkratky a promÄ›nné Readline.\n" +" \n" +" Naváže posloupnost kláves na Readline funkci nebo makro nebo nastaví\n" +" Readline promÄ›nnou. Syntaxe nepÅ™epínaÄových argumentů je shodná se\n" +" syntaxí ~/.inputrc, ale musí být zadána jako jediný argument:\n" +" napÅ™. bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" PÅ™epínaÄe:\n" +" -m klávmapa Použije KLÃVMAPU jako klávesovou mapu pro trvání\n" +" tohoto příkazu. Možné klávesové mapy jsou emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command a vi-insert.\n" +" -l Vypíše seznam názvů funkcí.\n" +" -P Vypíše seznam názvů funkcí a klávesových vazeb.\n" +" -p Vypíše seznam funkcí a klávesových vazeb ve " +"formátu,\n" +" který lze použít jako vstup.\n" +" -S Vypíše seznam posloupností kláves,\n" +" které vyvolávají makra, a jejich hodnoty.\n" +" -s Vypíše seznam posloupností kláves,\n" +" která vyvolávají makra, a jejich hodnoty ve " +"formátu,\n" +" který lze použít jako vstup.\n" +" -V Vypíše seznam názvů promÄ›nných a hodnot.\n" +" -v Vypíše seznam názvů promÄ›nných a hodnot ve " +"formátu,\n" +" který lze použít jako vstup.\n" +" -q název-funkce Dotáže se, které klávesy vyvolají zadanou funkci.\n" +" -u název-funkce Zruší vÅ¡echny vazby na klávesy, které jsou " +"napojeny\n" +" na zadanou funkci.\n" +" -r klávposl Odstraní vazbu na KLÃVPOSL.\n" +" -f soubor NaÄte vazby kláves ze SOUBORU.\n" +" -x klávposl:příkaz-shellu\n" +" Způsobí, že bude vykonán PŘÃKAZ-SHELLU, když bude\n" +" zadána KLÃVPOSL.\n" +" -X Vypíše posloupnosti kláves a příkazy pÅ™idružené " +"pÅ™es\n" +" pÅ™epínaÄ -x ve formátu, který lze použít jako " +"vstup.\n" +" \n" +" Návratový kód:\n" +" bind vrací 0, pokud není zadán nerozpoznaný pÅ™epínaÄ nebo nedojde " +"k chybÄ›." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"UkonÄí smyÄku for, whle nebo until.\n" +" \n" +" UkonÄí smyÄku FOR, WHILE nebo UNTIL. Je-li zadáno N, ukonÄí N\n" +" obklopujících smyÄek.\n" +" \n" +" Návratový kód:\n" +" Návratový kód je 0, pokud N je vÄ›tší nebo rovno 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Obnoví smyÄku for, while nebo until.\n" +" \n" +" PÅ™ejde k další iteraci obklopující smyÄky FOR, WHILE nebo UNTIL.\n" +" Je-li zadáno N, bude tak uÄinÄ›no v N. obklopující smyÄce. \n" +" Návratový kód:\n" +" Návratový kód je 0, pokud N je vÄ›tší nebo rovno 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Provede vestavÄ›ný příkaz shellu.\n" +" \n" +" Provede VESTAVÄšNÃ-PŘÃKAZ-SHELLU s argumenty ARGUMENTY, aniž by se " +"uplatnilo\n" +" vyhledávání příkazu. Toto se hodí, když si pÅ™ejete reimplementovat\n" +" vestavÄ›ný příkaz shellu jako funkci shellu, avÅ¡ak potÅ™ebujete spustit\n" +" vestavÄ›ný příkaz uvnitÅ™ této funkce.\n" +" \n" +" Návratový kód:\n" +" Vrací návratový kód VESTAVÄšNÉHO-PŘÃKAZU-SHELLU, nebo nepravdu, pokud\n" +" VESTAVÄšNÃ-PŘÃKAZ-SHELLU není vestavÄ›ným příkazem shellu." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Vrátí kontext aktuálního podprogramu.\n" +" \n" +" Bez VÃRAZU vrátí „$řádek $název_souboru“. S VÃRAZEM vrátí\n" +" „$řádek $podprogram $název_souboru“; tuto zvláštní informaci lze\n" +" využít pro výpis zásobníku volání.\n" +" \n" +" Hodnota VÃRAZU urÄuje, kolik rámců volání se má zpÄ›tnÄ› projít od toho\n" +" souÄasného; vrcholový rámec má Äíslo 0.\n" +" \n" +" Návratový kód:\n" +" Vrací 0, pokud shell provádí shellovou funkci a VÃRAZ je platný." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"ZmÄ›ní pracovní adresář shellu.\n" +" \n" +" ZmÄ›ní aktuální adresář na ADR. Implicitní ADR je hodnota promÄ›nné " +"shellu\n" +" HOME.\n" +" \n" +" PromÄ›nná CDPATH definuje vyhledávací cestu pro adresář obsahující ADR.\n" +" Názvy náhradních adresářů v CDPATH se oddÄ›lují dvojteÄkou (:). Prázdný\n" +" název adresáře je stejný jako aktuální adresář. ZaÄíná-li ADR na " +"lomítko\n" +" (/), nebude CDPATH použita.\n" +" \n" +" Nebude-li adresář nalezen a pÅ™epínaÄ shellu „cdable_vars“ bude " +"nastaven,\n" +" pak se dané slovo zkusí jakožto název promÄ›nné. Má-li taková promÄ›nná\n" +" hodnotu, pak její hodnota se použije jako ADR.\n" +" \n" +" PÅ™epínaÄe:\n" +" -L vynutí následování symbolických odkazů: vyhodnotí symbolické\n" +" odkazy v ADR po zpracování vÅ¡ech výskytů „..“\n" +" -P naÅ™izuje použít fyzickou adresářovou strukturu namísto\n" +" následování symbolických odkazů: vyhodnotí symbolické odkazy " +"v ADR\n" +" pÅ™ed zpracováním vÅ¡ech výskytů „..“\n" +" -e je-li zadán pÅ™epínaÄ -P a souÄasný pracovní adresář nelze\n" +" zdárnÄ› zjistit, skonÄí s nenulovým návratovým kódem\n" +" -@ na systémech, které to podporují, vydává soubor s rozšířenými\n" +" atributy jako adresář obsahující atributy souboru\n" +" \n" +" Symbolické odkazy se implicitnÄ› následují, jako by bylo zadáno „-L“.\n" +" „..“ se zpracovávají tak, že se odstraní bezprostÅ™ednÄ› pÅ™edcházející\n" +" Äást cesty až k lomítku nebo zaÄátku ADR.\n" +" \n" +" Návratový kód:\n" +" Vrací 0, byl-li adresář zmÄ›nÄ›n a, byl-li zadán -P, $PWD byla úspěšnÄ›\n" +" nastavena. Jinak vrací nenulovou hodnotu." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Vypíše název souÄasného pracovního adresáře.\n" +" \n" +" PÅ™epínaÄe:\n" +" -L vypíše hodnotu $PWD, pokud pojmenovává souÄasný pracovní\n" +" adresář\n" +" -P vypíše fyzický adresář prostý vÅ¡ech symbolických odkazů\n" +" \n" +" ImplicitnÄ› se „pwd“ chová, jako by bylo zadáno „-L“.\n" +" \n" +" Návratový kód:\n" +" Vrací 0, nebyl-li zadán neplatný pÅ™epínaÄ a mohl-li být souÄasný\n" +" adresář pÅ™eÄten." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Prázdný příkaz.\n" +" \n" +" Žádný úÄinek, tento příkaz nic nedÄ›lá.\n" +" \n" +" Návratový kód:\n" +" Vždy uspÄ›je." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Vrátí výsledek úspÄ›chu.\n" +" \n" +" Návratový kód:\n" +" Vždy uspÄ›je." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Vrátí výsledek neúspÄ›chu.\n" +" \n" +" Návratový kód:\n" +" Vždy selže." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Provede jednoduchý příkaz nebo zobrazí podrobnosti o příkazech.\n" +" \n" +" Spustí PŘÃKAZ s ARGUMENTY ignoruje funkce shellu, nebo zobrazí " +"informace\n" +" o zadaných PŘÃKAZECH. Lze využít, když je tÅ™eba vyvolat příkazy " +"z disku,\n" +" pÅ™iÄemž existuje funkce stejného jména.\n" +" \n" +" PÅ™epínaÄe:\n" +" -p pro PATH bude použita implicitní hodnota, která zaruÄuje,\n" +" že budou nalezeny vÅ¡echny standardní nástroje\n" +" -v zobrazí popis PŘÃKAZU podobný vestavÄ›nému příkazu „type“\n" +" -V zobrazí podrobnÄ›jší popis každého PŘÃKAZU\n" +" \n" +" Návratový kód:\n" +" Vrací návratový kód PŘÃKAZU, nebo selže, nebyl–li příkaz nalezen." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Nastaví hodnoty a atributy promÄ›nných.\n" +" \n" +" Deklaruje promÄ›nné a nastaví jim atributy. Nejsou-li zadány NÃZVY,\n" +" zobrazí atributy a hodnoty vÅ¡ech promÄ›nných.\n" +" \n" +" PÅ™epínaÄe:\n" +" -f omezí akci nebo výpis na názvy funkcí a deklarace\n" +" -F omezí výpis jen na názvy funkcí (a Äíslo řádku a název\n" +" zdrojového souboru, je-li zapnuto ladÄ›ní)\n" +" -g vytváří globální promÄ›nné, je-li voláno z funkce shellu,\n" +" jinak ignorováno\n" +" -p zobrazí atributy a hodnotu každého NÃZVU\n" +" \n" +" PÅ™epínaÄe, které nastavují atributy:\n" +" -a uÄiní NÃZVY Äíslovanými poli (je-li podporováno)\n" +" -A uÄiní NÃZVY asociativními poli (je-li podporováno)\n" +" -i pÅ™iÅ™adí NÃZVÅ®M atribut „integer“ (Äíslo)\n" +" -l pÅ™evede hodnotu každého NÃZVU na malá písmena v dobÄ› pÅ™iÅ™azení\n" +" -n uÄiní NÃZEV odkazem na promÄ›nnou pojmenovanou podle své hodnoty\n" +" -r uÄiní NÃZVY jen pro Ätení\n" +" -t pÅ™iÅ™adí NÃZVÅ®M atribut „trace“ (sledování)\n" +" -u pÅ™evede hodnotu každého NÃZVU na velká písmena v dobÄ› pÅ™iÅ™azení\n" +" -x vyexportuje NÃZVY\n" +" \n" +" Pomocí „+“ namísto „-“ daný atribut vypnete.\n" +" \n" +" PromÄ›nné s atributem integer jsou aritmeticky vyhodnoceny (vizte příkaz\n" +" „let“), jakmile je do promÄ›nné pÅ™iÅ™azeno.\n" +" \n" +" Je-li použito uvnitÅ™ funkce, uÄiní „declare“ NÃZVY lokálními stejnÄ› " +"jako\n" +" příkaz „local“. PÅ™epínaÄ â€ž-g“ toto chování potlaÄí.\n" +" \n" +" Návratový kód:\n" +" Vrací úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nedoÅ¡lo k chybÄ› pÅ™i\n" +" pÅ™iÅ™azování do promÄ›nné." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Nastaví hodnoty a atributy promÄ›nných.\n" +" \n" +" Synonymum pro „declare“. Vizte „help declare“." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Definuje lokální promÄ›nné.\n" +" \n" +" Vytvoří lokální promÄ›nnou pojmenovanou NÃZEV a pÅ™iÅ™adí jí HODNOTU. " +"PŘEPÃNAÄŒ\n" +" smí být jakýkoliv pÅ™epínaÄ přípustný u „declare“.\n" +" \n" +" Lokální promÄ›nné lze použít jen uvnitÅ™ funkcí, budou viditelné jen " +"v dané\n" +" funkci a jejich potomcích.\n" +" \n" +" Návratový kód:\n" +" Vrací úspÄ›ch, nebyl-li zadán neplatný pÅ™epínaÄ, nenastala-li chyba pÅ™i\n" +" pÅ™iÅ™azování do promÄ›nné a vykonává-li shell funkci." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Vypíše své argumenty na standardní výstup.\n" +" \n" +" Zobrazí své ARGUMENTY oddÄ›lené jednou mezerou a zakonÄené novým řádkem\n" +" na standardní výstup.\n" +" \n" +" PÅ™epínaÄe:\n" +" -n nepÅ™ipojuje nový řádek\n" +" -e zapne interpretování následujících znaků uvozených zpÄ›tným " +"lomítkem\n" +" -E explicitnÄ› potlaÄí interpretování znaků uvozených zpÄ›tným " +"lomítkem\n" +" \n" +" „echo“ interpretuje následující znaky uvozené zpÄ›tným lomítkem:\n" +" \\a poplach (zvonek)\n" +" \\b backspace\n" +" \\c potlaÄí další výstup\n" +" \\e znak escapu\n" +" \\E znak escapu\n" +" \\f posun formuláře (form feed)\n" +" \\n nový řádek\n" +" \\r návrat vozíku\n" +" \\t vodorovný tabulátor\n" +" \\v svislý tabulátor\n" +" \\\\ zpÄ›tné lomítko\n" +" \\0nnn znak, jehož ASCII kód je NNN (osmiÄkovÄ›). NNN smí být\n" +" 0 až 3 osmiÄkové Äíslice\n" +" \\xHH osmibitový znak, jehož hodnota je HH (Å¡estnáctkovÄ›). HH smí\n" +" být jedna nebo dvÄ› Å¡estnáctkové Äíslice\n" +" \\uHHHH unikódový znak, jehož Å¡estnáctková hodnota je HHHH.\n" +" HHHH smí být jedna až ÄtyÅ™i Å¡estnáctkové Äíslice\n" +" \\UHHHHHHHH unikódový znak, jehož Å¡estnáctková hodnota je HHHHHHHH.\n" +" HHHHHHHH smí být jedna až osm Å¡estnáctkových Äíslic.\n" +" \n" +" Návratový kód:\n" +" Vrací úspÄ›ch, nedojde-li k chybÄ› zápisu na výstup." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Vypíše argumenty na standardní výstup.\n" +" \n" +" Na standardním výstupu zobrazí ARGUMENTY následované odřádkováním.\n" +" \n" +" PÅ™epínaÄe:\n" +" -n\tneodřádkovává\n" +" \n" +" Vrací úspÄ›ch, nedojte-li k chybÄ› zápisu na výstup." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Povoluje a zakazuje vestavÄ›né příkazy shellu.\n" +" \n" +" Povoluje a zakazuje vestavÄ›né příkazy shellu. Zakázání vám umožní\n" +" spustit program z disku, který má stejné jméno jako vestavÄ›ný příkaz\n" +" shellu, aniž byste museli zadávat celou cestu.\n" +" \n" +" PÅ™epínaÄe:\n" +" -a\tvypíše seznam vestavÄ›ných příkazů a vyznaÄí, který je a který " +"není\n" +" \tpovolen\n" +" -n\tzakáže každý NÃZEV nebo zobrazí seznam zakázaných vestavÄ›ných\n" +" \tpříkazů\n" +" -p\tvypíše seznam vestavÄ›ných příkazů ve znovu použitelné podobÄ›\n" +" -s\tvypíše pouze názvy posixových „speciálních“ vestavÄ›ných příkazů\n" +" \n" +" PÅ™epínaÄe řídící dynamické nahrávání:\n" +" -f\tZavede vestavÄ›ný příkaz NÃZEV ze sdíleného objektu NÃZEV_SOUBORU\n" +" -d\tOdstraní vestavÄ›ní příkaz zavedený pomocí –f\n" +" \n" +" Bez pÅ™epínaÄů povolí vÅ¡echny NÃZVY.\n" +" \n" +" Abyste používali „test“ z $PATH namísto verze vestavÄ›né do shellu,\n" +" napiÅ¡te „enable -n test“.\n" +" \n" +" Návratový kód:\n" +" Vrací úspÄ›ch, je-li NÃZEV vestavÄ›ným příkazem shellu a nevyskytne-li\n" +" se chyba." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Spustí argumenty jako příkaz shellu.\n" +" \n" +" ARGUMENTY slouÄí do jediného Å™etÄ›zce, použije jej jako vstup shellu\n" +" a vykoná výsledné příkazy.\n" +" Návratový kód:\n" +" Vrátí návratový kód příkazu, nebo úspÄ›ch, byl-li příkaz prázdný." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Rozebere pÅ™epínaÄové argumenty.\n" +" \n" +" Getopts se používá v shellových procedurách na rozebrání poziÄních\n" +" parametrů jakožto pÅ™epínaÄů.\n" +" \n" +" OPTSTRING obsahuje písmena pÅ™epínaÄů, které mají být rozeznány, Je-li\n" +" písmeno následováno dvojteÄkou, po pÅ™epínaÄi se oÄekává argument, který\n" +" by mÄ›l být od pÅ™epínaÄe oddÄ›len bílým místem.\n" +" \n" +" Pokaždé když je getopts zavolán, je následující pÅ™epínaÄ umístÄ›n do\n" +" promÄ›nné $name (promÄ›nná je inicializována, neexistuje-li) a poÅ™adí\n" +" dalšího argumentu, který Äeká na zpracování, do promÄ›nné shellu OPTIND.\n" +" OPTIND je inicializována na 1 vždy, když je zavolán shell nebo shellový\n" +" skript. Pokud pÅ™epínaÄ vyžaduje argument, getopts umístí tento argument\n" +" do promÄ›nné shellu OPTARG.\n" +" \n" +" getopts hlásí chyby jedním ze dvou způsobů. Pokud prvním znakem " +"OPTSTRING\n" +" je dvojteÄka, getopts hlásí chyby tichým způsobem. V tomto režimu žádné\n" +" chybové zprávy nejsou vypisovány. Když se narazí na neplatný pÅ™epínaÄ,\n" +" getopts umístí tento znak do OPTARG. Pokud není nalezen povinný " +"argument,\n" +" getopts umístí „:“ do NAME a OPTARG nastaví na znak nalezeného " +"pÅ™epínaÄe.\n" +" Pokud getopts nepracuje v tomto tichém režimu a je nalezen neplatný\n" +" pÅ™epínaÄ, getopts umístí „?“ do NAME a zruší OPTARG. Když nenajde " +"povinný\n" +" argument, je do NAME zapsán „?“, OPTARG zruÅ¡en a vytiÅ¡tÄ›na diagnostická\n" +" zpráva.\n" +" \n" +" Pokud promÄ›nná shellu OPTERR má hodnotu 0, getopts vypne vypisování\n" +" chybových zpráv, dokonce i když první znak OPTSTRING není dvojteÄka.\n" +" Implicitní hodnota OPTERR je 1.\n" +" \n" +" NormálnÄ› getopts zpracovává poziÄní parametry ($0–$9), avÅ¡ak následuje-" +"li\n" +" getopts více argumentů, budou rozebrány tyto namísto poziÄních.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, byl-li nalezen nÄ›jaký pÅ™epínaÄ. NeúspÄ›ch vrátí, když " +"dojde\n" +" na konec pÅ™epínaÄů nebo nastane-li chyba." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Nahradí shell zadaným příkazem.\n" +" \n" +" Vykoná PŘÃKAZ, pÅ™iÄemž nahradí tento shell zadaným programem. " +"ARGUMENTY\n" +" se stanou argumenty PŘÃKAZU. Není-li PŘÃKAZ zadán, pÅ™esmÄ›rování " +"zapůsobí\n" +" v tomto shellu.\n" +" \n" +" PÅ™epínaÄe:\n" +" -a název pÅ™edá název jakožto nultý argument PŘÃKAZU\n" +" -c spustí PŘÃKAZ s prázdným prostÅ™edím\n" +" -t do nultého argumentu PŘÃKAZU umístí pomlÄku\n" +" \n" +" Pokud příkaz nemůže být proveden, neinteraktivní shell bude ukonÄen,\n" +" pokud pÅ™epínaÄ shellu „execfail“ není nastaven.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud byl PŘÃKAZ nalezen a nedoÅ¡lo k chybÄ› pÅ™esmÄ›rování." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"UkonÄí shell.\n" +" \n" +" UkonÄí tento shell se stavem N. Bez N bude návratový kód roven kódu\n" +" poslednÄ› provádÄ›ného příkazu." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"UkonÄí pÅ™ihlaÅ¡ovací shell.\n" +" \n" +" UkonÄí pÅ™ihlaÅ¡ovací (login) shell se stavem N. Nebyl-li příkaz zavolán\n" +" z pÅ™ihlaÅ¡ovacího shellu, vrátí chybu." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Zobrazí nebo vykoná příkazy ze seznamu historie.\n" +" \n" +" fc se používá na vypsání, úpravu a znovu provedení příkazů ze seznamu\n" +" historie. PRVNà a POSLEDNà mohou být Äísla urÄující rozsah nebo PRVNà " +"může být\n" +" Å™etÄ›zec, což urÄuje nejnovÄ›jší příkaz zaÄínající na zadaný Å™etÄ›zec.\n" +" \n" +" PÅ™epínaÄe:\n" +" -e ENÃZEV\tvybere editor. Implicitní je FCEDIT, pak EDITOR, pak vi.\n" +" -l\tvypisuje řádky namísto jejich upravování\n" +" -n\tvypne Äíslování řádků pÅ™i jejich vypisování\n" +" -r\tobrátí poÅ™adí řádků (nejnovÄ›jší budou první)\n" +" \n" +" Forma příkazu „fc -s [vzor=náhrada… [příkaz]“ znamená, že PŘÃKAZ bude\n" +" po nahrazení STARÃ=NOVà znovu vykonán.\n" +" \n" +" UžiteÄný alias je r='fc -s', takže napsání „r cc“ spustí poslední " +"příkaz\n" +" zaÄínající na „cc“ a zadání „r“ znovu spustí poslední příkaz.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch nebo kód provedeného příkazu. Nenulový kód, vyskytne-li se\n" +" chyba." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"PÅ™epne úlohu na popÅ™edí.\n" +" \n" +" PÅ™esune úlohu urÄenou pomocí ÚLOHA na popÅ™edí a uÄiní ji aktuální " +"úlohou.\n" +" Není-li ÚLOHA zadána, použije se úloha, o které si shell myslí, že je\n" +" aktuální.\n" +" \n" +" Návratový kód:\n" +" Kód úlohy pÅ™esunuté do popÅ™edí, nebo doÅ¡lo-li k chybÄ›, kód selhání." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"PÅ™esune úlohy do pozadí.\n" +" \n" +" PÅ™epne každou úlohu urÄenou pomocí ÚLOHA na pozadí, jako by byla\n" +" spuÅ¡tÄ›na s „&“. Ne-li ÚLOHA uvedena, použije se úloha, o které si shell\n" +" myslí, že je aktuální.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud je správa úloh zapnuta a nedoÅ¡lo-li k nÄ›jaké chybÄ›." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Zapamatuje si nebo zobrazí umístÄ›ní programu.\n" +" \n" +" Pro každý NÃZEV je urÄena plná cesta k příkazu a je zapamatována. Nejsou-" +"li\n" +" zadány žádné argumenty, budou vypsány informace o zapamatovaných " +"příkazech.\n" +" \n" +" PÅ™epínaÄe:\n" +" -d zapomene zapamatovaná umístÄ›ní každého NÃZVU\n" +" -l vypíše v takové podobÄ›, kterou lze opÄ›t použít jako vstup\n" +" -p cesta použije NÃZEV_CESTY jako plnou cestu k NÃZVU\n" +" -r zapomene vÅ¡echna zapamatovaná umístÄ›ní\n" +" -t vypíše zapamatované umístÄ›ní každého NÃZVU a každému " +"umístÄ›ní\n" +" pÅ™edepíše odpovídající NÃZEV, bylo zadáno více NÃZVÅ®\n" +" Argumenty:\n" +" NÃZEV Každý NÃZEV je vyhledán v $PATH a pÅ™idán do seznamu\n" +" zapamatovaných příkazů.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud byl NÃZEV nalezen a nebyl-li zadán neplatný pÅ™epínaÄ." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Zobrazí podrobnosti o vestavÄ›ných příkazech.\n" +" \n" +" Zobrazí struÄný souhrn vestavÄ›ných příkazů. Je-li zadán VZOREK,\n" +" vrátí podrobnou nápovÄ›du ke vÅ¡em příkazům odpovídajícím VZORKU, jinak " +"je\n" +" vytiÅ¡tÄ›n seznam syntaxe vestavÄ›ných příkazů.\n" +" \n" +" PÅ™epínaÄe:\n" +" -d vypíše krátké pojednání na každé téma\n" +" -m zobrazí použití v jakoby manuálovém formátu\n" +" -s vypíše pouze krátký popis použití o každém příkazu odpovídajícímu\n" +" VZORKU\n" +" \n" +" Argumenty:\n" +" VZOREK Vzorek urÄující téma nápovÄ›dy\n" +" \n" +" Návratový kód:\n" +" Vrací úspÄ›ch, pokud byl nalezen VZOREK a nebyl zadán neplatný pÅ™epínaÄ." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Zobrazí nebo upraví seznam historie.\n" +" \n" +" Zobrazí seznam historie s oÄíslovanými řádky. Řádky vypsané s „*“ byly\n" +" zmÄ›nÄ›ny. Argument N říká, že se vypíše pouze posledních N řádek.\n" +" \n" +" PÅ™epínaÄe:\n" +" -c vyprázdní seznam historie smazáním vÅ¡ech položek\n" +" -d pozice smaže položku ze seznamu historie na pozici POZICE. " +"Záporné\n" +" pozice se poÄítají od konce seznamu historie.\n" +" \n" +" -a pÅ™ipojí řádky historie z této relace do souboru historie\n" +" -n naÄte vÅ¡echny řádky historie, které jeÅ¡tÄ› nebyly naÄteny,\n" +" ze souboru historie a pÅ™ipojí je do seznamu historie\n" +" -r naÄte soubor historie a obsah pÅ™ipojí do seznamu historie\n" +" -w zapíše souÄasnou historii do souboru historie\n" +" \n" +" -p provede expanzi historie na každém ARGUMENTU a výsledek zobrazí,\n" +" aniž by cokoliv uložil do seznamu historie\n" +" -s pÅ™ipojí ARGUMENTY do seznamu historie jako jednu položku\n" +" \n" +" Je-li zadán JMÉNO_SOUBORU, tak ten je použit jako soubor historie. " +"Jinak\n" +" pokud $HISTFILE má hodnotu, tato je použita, jinak ~/.bash_history.\n" +" \n" +" Je-li promÄ›nná $HISTTIMEFORMAT nastavena a není-li prázdná, její " +"hodnota\n" +" se použije jako formátovací Å™etÄ›zec pro strftime(3) pÅ™i výpisu Äasových\n" +" razítek spojených s každou položkou historie. Jinak žádná Äasová " +"razítka\n" +" nebudou vypisována. \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nedoÅ¡lo k chybÄ›." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Zobrazí stav úloh.\n" +" \n" +" Vypíše aktivní úlohy. ÚLOHA omezuje výstup na danou úlohu. Bez uvedení\n" +" pÅ™epínaÄů bude vypsán stav vÅ¡ech aktivních úloh.\n" +" \n" +" PÅ™epínaÄe:\n" +" -l vypíše navíc ID procesů\n" +" -n vypíše pouze procesy, které od minulého oznámení zmÄ›nily stav\n" +" -p vypíše pouze ID procesů\n" +" -r zúží výstup jen na běžící úlohy\n" +" -s zúží výstup jen na pozastavené úlohy\n" +" \n" +" Je-li použito -x, bude spuÅ¡tÄ›n příkaz, jakmile vÅ¡echny úlohy uvedené " +"mezi\n" +" ARGUMENTY budou nahrazeny ID procesu, který je vedoucím skupiny dané " +"úlohy.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se " +"chyba.\n" +" Byl-ly použit pÅ™epínaÄ -x, vrátí návratový kód PŘÃKAZU." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Odstraní úlohy ze souÄasného shellu.\n" +" \n" +" Z tabulky aktivních úloh odebere každou ÚLOHU. Nebudou-li ÚLOHY zadány,\n" +" shell použije vlastní pÅ™edstavu o souÄasné úloze.\n" +" \n" +" PÅ™epínaÄe:\n" +" -a odstraní vÅ¡echny úlohy, pokud nebyla žádná ÚLOHA urÄena\n" +" -h oznaÄí každou ÚLOHU tak, že jí nebude zaslán SIGHUP, až shell sám\n" +" obdrží tento signál\n" +" -r odstraní jen běžící úlohy\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ nebo ÚLOHA." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"ZaÅ¡le signál úloze.\n" +" \n" +" ZaÅ¡le procesu urÄeném PID (nebo ÚLOHOU) signál zadaný pomocí SIGSPEC\n" +" nebo ÄŒÃSSIG. Není-li SIGSPEC ani ÄŒÃSSIG zadán, pak se pÅ™edpokládá " +"SIGTERM.\n" +" \n" +" PÅ™epínaÄe:\n" +" -s sig SIG je název signálu\n" +" -n sig SIG je Äíslo signálu\n" +" -l vypíše Äísla signálů; pokud „-l“ následují argumenty, má\n" +" se za to, že se jedná o Äísla signálů, pro které se mají " +"vyspat\n" +" jejich názvy.\n" +" -L synonymum pro -l\n" +" \n" +" Kill je vestavÄ›ný příkaz shellu ze dvou důvodů: umožňuje použít\n" +" identifikátory úloh namísto ID procesů a umožní zabíjet procesy i poté,\n" +" co jste dosáhli limitu poÄtu procesů, které smíte vytvoÅ™it.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nedoÅ¡lo k chybÄ›." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Vyhodnotí aritmetický výraz.\n" +" \n" +" Vyhodnotí každý ARGUMENT jako aritmetický výraz. Vyhodnocení je\n" +" provádÄ›no v celých Äíslech o pevné šířce bez kontrol pÅ™eteÄení, avÅ¡ak\n" +" dÄ›lení 0 je zachyceno a oznaÄeno za chybu. Následující seznam operátorů\n" +" je rozdÄ›len do skupin podle úrovní pÅ™ednosti. Skupiny jsou seÅ™azeny\n" +" v sestupném poÅ™adí pÅ™ednosti.\n" +" \n" +" \tid++, id--\tnásledné zvýšení, snížení promÄ›nné\n" +" \t++id, --id\tpÅ™ednostní zvýšení, snížení promÄ›nné\n" +" \t-, +\t\tunární mínus, plus\n" +" \t!, ~\t\tlogická a bitová negace\n" +" \t**\t\tumocnÄ›ní\n" +" \t*, /, %\t\tnásobení, dÄ›lení, zbytková třída\n" +" \t+, -\t\tsÄítání, odeÄítání\n" +" \t<<, >>\t\tlevý a pravý bitový posun\n" +" \t<=, >=, <, >\tporovnání\n" +" \t==, !=\t\trovnost, nerovnost\n" +" \t&\t\tbitové a zároveň (AND)\n" +" \t^\t\tbitové vyluÄující nebo (XOR)\n" +" \t|\t\tbitové nebo (OR)\n" +" \t&&\t\tlogické a zároveň (AND)\n" +" \t||\t\tlogické nebo (OR)\n" +" \tVÃRAZ ? VÃRAZ : VÃRAZ\n" +" \t\t\tpodmínÄ›ný operátor\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tpÅ™iÅ™azení\n" +" \n" +" PromÄ›nné shellu jsou povolené operandy. Název promÄ›nné je uvnitÅ™ výrazu\n" +" nahrazen její hodnotou (s automatickým pÅ™evodem na celé Äíslo pevné " +"šířky).\n" +" PromÄ›nná nemusí mít atribut integer (Äíslo) zapnutý, aby byla " +"použitelná\n" +" ve výrazu.\n" +" \n" +" Operátory se vyhodnocují v poÅ™adí pÅ™ednosti. Podvýrazy v závorkách jsou\n" +" vyhodnoceny pÅ™ednostnÄ› a smí pÅ™ebít pravidla pÅ™ednosti uvedená výše.\n" +" \n" +" Návratový kód:\n" +" Pokud poslední ARGUMENT je vyhodnocen na 0, let vrátí 1. Jinak je\n" +" navrácena 0." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"NaÄte ze standardního vstupu jeden řádek a rozdÄ›lí jej na položky.\n" +" \n" +" Ze standardního vstupu, nebo deskriptoru souboru FD, je-li zadán\n" +" pÅ™epínaÄ -u, je naÄten jeden řádek. Řádek se rozdÄ›lí na Äásti jako pÅ™i\n" +" dÄ›lení na slova a první slovo je pÅ™iÅ™azeno do prvního JMÉNA, druhé " +"slovo\n" +" do druhého JMÉNA a tak dále, pÅ™iÄemž pÅ™ebývající slova se pÅ™iÅ™adí do\n" +" posledního JMÉNA. Pouze znaky uvedené v $IFS jsou považovány za\n" +" oddÄ›lovaÄe slov.\n" +" \n" +" Nejsou-li uvedena žádná JMÉNA, naÄtený řádek bude uložen do promÄ›nné " +"REPLY.\n" +" \n" +" PÅ™epínaÄe:\n" +" -a pole naÄtená slova budou pÅ™iÅ™azena do postupných prvků POLE\n" +" poÄínaje indexem nula\n" +" -d oddÄ›lovaÄ pokraÄuje, dokud není naÄten první znak ODDÄšLOVAÄŒE\n" +" namísto nového řádku\n" +" -e naÄte řádek pomocí knihovny Readline\n" +" -i text použije TEXT jako prvotní text pro Readline\n" +" -n p_znaků vrátí řízení po naÄtení P_ZNAKÅ® znaků, místo Äekání na\n" +" nový řádek, avÅ¡ak respektuje oddÄ›lovaÄ, je-li ménÄ› než\n" +" P_ZNAKÅ®\n" +" -N p_znaků vrátí řízení pouze po naÄtení pÅ™esnÄ› P_ZNAKÅ® znaků,\n" +" pokud se neobjeví konec souboru nebo nevyprší limit,\n" +" ignoruje jakýkoliv oddÄ›lovaÄ\n" +" -p výzva vypíše Å™etÄ›zec VÃZVA bez závÄ›reÄného nového řádku " +"dříve,\n" +" než se zahájí naÄítání\n" +" -r nepovolí zpÄ›tná lomítka pro escapování jakýchkoliv " +"znaků\n" +" -s vstup pocházející z terminálu nebude zobrazován\n" +" -t limit umožní vyprÅ¡ení Äasového limitu a vrácení chyby, pokud\n" +" nebude naÄten celý řádek do LIMIT sekund. Hodnota " +"promÄ›nné\n" +" TMOUT pÅ™edstavuje implicitní limit. LIMIT smí být " +"desetinné\n" +" Äíslo. Je-li LIMIT 0, read okamžitÄ› skonÄí, aniž by " +"zkusil\n" +" naÄíst jakákoliv data, a vrátí úspÄ›ch, jen bude-li na\n" +" zadaném deskriptoru souboru pÅ™ipraven vstup. Návratový\n" +" kód bude vÄ›tší než 128, pokud Äasový limit bude " +"pÅ™ekroÄen.\n" +" -u fd Äte z deskriptoru souboru FD namísto standardního " +"vstupu\n" +" \n" +" Návratový kód:\n" +" Návratový kód je nula, pokud se nenarazí na konec souboru, Äasový limit\n" +" pro Ätení nevyprší (pak je vÄ›tší než 128), nedojde k chybÄ› pÅ™i\n" +" pÅ™iÅ™azování do promÄ›nné, nebo není poskytnut neplatný deskriptor " +"souboru\n" +" jako argument -u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Návrat z shellové funkce.\n" +" \n" +" Způsobí ukonÄení funkce nebo skriptu naÄteného pÅ™es „source“ " +"s návratovou\n" +" hodnotou urÄenou N. Je-li N vynecháno, návratový kód bude roven " +"poslednímu\n" +" příkazu vykonanému uvnitÅ™ dotyÄné funkce nebo skriptu.\n" +" \n" +" Návratová hodnota:\n" +" Vrátí N, nebo selže, pokud shell neprovádí funkci nebo skript." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Nastaví nebo zruší hodnoty pÅ™epínaÄů shellu a poziÄních parametrů.\n" +" \n" +" ZmÄ›ní hodnoty atributům shellu a poziÄním parametrům, nebo zobrazí " +"názvy\n" +" a hodnoty promÄ›nných shellu.\n" +" \n" +" PÅ™epínaÄe:\n" +" -a OznaÄí mÄ›nÄ›né nebo vytvářené promÄ›nné pro export.\n" +" -b NeprodlenÄ› oznámí ukonÄení úlohy.\n" +" -e NeprodlenÄ› skonÄí, pokud nÄ›jaký příkaz skonÄí s nenulovým kódem.\n" +" -f Zakáže vytváření jmen souborů (globbing).\n" +" -h Zapamatuje si umístÄ›ní příkazů tehdy, když jsou vyhledány.\n" +" -k VÅ¡echny pÅ™iÅ™azovací argumenty budou umístÄ›ny do prostÅ™edí\n" +" příkazu. Nejenom ty, co pÅ™edchází název příkazu.\n" +" -m Správa úloh je zapnuta.\n" +" -n Příkazy naÄte, ale neprovede je.\n" +" -o NÃZEV_PŘEPÃNAÄŒE\n" +" Nastaví promÄ›nnou odpovídající NÃZVU_PŘEPÃNAÄŒE:\n" +" allexport stejné jako -a\n" +" braceexpand stejné jako -B\n" +" emacs použije emacsový způsob editace na řádku\n" +" errexit stejné jako -e\n" +" errtrace stejné jako -E\n" +" functrace stejné jako -T\n" +" hashall stejné jako -h\n" +" histexpand stejné jako -H\n" +" history zapne historii příkazů\n" +" ignoreeof shell neskonÄí, když naÄte EOF (konec souboru)\n" +" interactive-comments\n" +" povolí, aby se v interaktivních příkazech\n" +" objevovaly komentáře\n" +" keyword stejné jako -k\n" +" monitor stejné jako -m\n" +" noclobber stejné jako -C\n" +" noexec stejné jako -n\n" +" noglob stejné jako -f\n" +" nolog v souÄasnosti pÅ™ijímáno, ale ignorováno\n" +" notify stejné jako -b\n" +" nounset stejné jako -u\n" +" onecmd stejné jako -t\n" +" physical stejné jako -P\n" +" pipefail návratová hodnota kolony je status posledního\n" +" příkazu, který skonÄil s nenulovým kódem.\n" +" Návratová hodnota je nula, pokud žádný z příkazů\n" +" neskonÄil s nenulovým kódem.\n" +" posix zmÄ›ní chování bashe tam, kde implicitní chování\n" +" se liší od standardu 1003.2, tak, aby bylo\n" +" v souladu se standardem\n" +" privileged stejné jako -p\n" +" verbose stejné jako -v\n" +" vi použije vi způsob editace na řádku\n" +" xtrace stejné jako -x\n" +" -p Zapnuto, kdykoliv reálné a efektivní ID uživatele se neshodují.\n" +" Vypne zpracování souboru $ENV a importování shellových funkcí.\n" +" Vypnutí tohoto pÅ™epínaÄe způsobí, že efektivní UID a GID budou\n" +" nastavena na reálná UID a GID.\n" +" -t SkonÄí po naÄtení a provedení jednoho příkazu.\n" +" -u PÅ™i substituci považuje nenastavené promÄ›nné za chybu.\n" +" -v Vstupní řádky shellu se budou vypisovat tak, jak budou naÄítány.\n" +" -x Vypisuje příkazy a jejich argumenty tak, jak jsou spouÅ¡tÄ›ny.\n" +" -B Shell bude provádÄ›t závorkovou (brace) expanzi.\n" +" -C Je-li nastaveno, zakáže pÅ™epsání již existujících běžných souborů\n" +" pÅ™i pÅ™esmÄ›rování výstupu.\n" +" -E Je-li nastaveno, trap ERR (zachytávání chyb) bude dÄ›dÄ›n do\n" +" funkcí shellu.\n" +" -H Zapne ! způsob nahrazování historie. Tento příznak je automaticky\n" +" zapnut pÅ™i interaktivním shellu.\n" +" -P Je-li nastaveno, nebudou vyhodnocovány symbolické odkazy pÅ™i\n" +" provádÄ›ní příkazů jako zmÄ›na pracovního adresáře pomocí „cd“.\n" +" -T Je-li nastaveno, trap DEBUG (obsluha ladÄ›ní) a RETURN (návrat\n" +" z podprogramu) bude dÄ›dÄ›n do funkcí shellu.\n" +" -- PÅ™iÅ™adí jakékoliv zbývající argumenty do poziÄních parametrů.\n" +" Neexistují-li žádné zbývající argumenty, poziÄní parametry budou\n" +" odstranÄ›ny.\n" +" - PÅ™iÅ™adí jakékoliv zbývající argumenty do poziÄních parametrů.\n" +" PÅ™epínaÄe -x a -v budou vypnuty.\n" +" \n" +" Použití + místo - způsobí, že tyto příznaky budou vypnuty. Příznaky lze " +"též\n" +" použít pÅ™i volání shellu. Aktuální množinu příznaků je možno nalézt " +"v $-.\n" +" PÅ™ebývajících n ARGUMENTÅ® jsou poziÄní parametry a budou pÅ™iÅ™azeny,\n" +" v poÅ™adí, do $1, $2, … $n. Nejsou-li zadány žádné ARGUMENTY, budou\n" +" vytiÅ¡tÄ›ny vÅ¡echny promÄ›nné shellu.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný argument." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Odstraňuje hodnoty a atributy promÄ›nných a funkcí shellu.\n" +" \n" +" Pro každé JMÉNO odstraní odpovídající promÄ›nnou nebo funkci.\n" +" \n" +" PÅ™epínaÄe:\n" +" -f považuje každé JMÉNO za funkci shellu\n" +" -v považuje každé JMÉNO za promÄ›nnou shellu\n" +" -n považuje každé JMÉNO za odkaz na název a odstraní promÄ›nnou samu\n" +" namísto promÄ›nné, na kterou odkazuje\n" +" \n" +" Bez tÄ›chto dvou příznaků unset nejprve zkusí zruÅ¡it promÄ›nnou a pokud " +"toto\n" +" selže, tak zkusí zruÅ¡it funkci.\n" +" \n" +" NÄ›které promÄ›nné nelze odstranit. Vizte příkaz „readonly“.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a JMÉNO není jen pro\n" +" Ätení." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Nastaví atribut exportovat promÄ›nné shellu.\n" +" \n" +" Každý NÃZEV je oznaÄen pro automatické exportování do prostÅ™edí " +"následnÄ›\n" +" provádÄ›ných příkazů. Je-li zadána HODNOTA, pÅ™ed exportem pÅ™iÅ™adí " +"HODNOTU.\n" +" \n" +" PÅ™epínaÄe:\n" +" -f\tvztahuje se na funkce shellu\n" +" -n\todstraní vlastnost exportovat každému NÃZVU\n" +" -p\tzobrazí seznam vÅ¡ech exportovaných promÄ›nných a funkcí\n" +" \n" +" Argument „--“ zakazuje zpracování dalších pÅ™epínaÄů.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ nebo NÃZEV." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"OznaÄí promÄ›nné shellu za nezmÄ›nitelné.\n" +" \n" +" OznaÄí každý NÃZEV jako jen pro Ätení, hodnoty tÄ›chto NÃZVÅ® nebude " +"možné\n" +" zmÄ›nit následným pÅ™iÅ™azením. Je-li zadána HODNOTA, pÅ™ed oznaÄením za " +"jen\n" +" pro Ätení pÅ™iÅ™adí HODNOTU.\n" +" \n" +" PÅ™epínaÄe:\n" +" -a vztahuje se na promÄ›nné typu Äíslované pole\n" +" -A vztahuje se na promÄ›nné typu asociativní pole\n" +" -f vztahuje se funkce shellu\n" +" -p zobrazí seznam vÅ¡ech promÄ›nných nebo funkcí jen pro Ätení\n" +" v závislosti podle toho, zda-li byl zadán pÅ™epínaÄ -f\n" +" \n" +" Argument „--“ zakáže zpracování dalších pÅ™epínaÄů.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ nebo NÃZEV." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Posune poziÄní parametry.\n" +" \n" +" PÅ™ejmenuje poziÄní parametry $N+1, $N+2, … na $1, $2, …\n" +" Není-li zadáno N, pÅ™edpokládá se 1.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud N není záporný a není vÄ›tší než $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Vykoná příkazy obsažené ze souboru v souÄasném shellu.\n" +" \n" +" NaÄte a provede příkazy z NÃZEV_SOUBORU v tomto shellu. Položky v $PATH\n" +" jsou použity pro nalezení adresáře obsahujícího NÃZEV_SOUBORU. Jsou-li\n" +" zadány nÄ›jaké ARGUMENTY, stanou se poziÄními parametry pÅ™i bÄ›hu\n" +" NÃZVU_SOUBORU.\n" +" \n" +" Návratový kód:\n" +" Vrací návratový kód posledního provedeného příkazu z NÃZVU_SOUBORU.\n" +" Selže, pokud NÃZEV_SOUBORU nelze naÄíst." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Pozastaví bÄ›h shellu.\n" +" \n" +" Pozastaví provádÄ›ní tohoto shellu do doby, něž bude obdržen signál\n" +" SIGCONT. Není-li vynuceno, pÅ™ihlaÅ¡ovací shell nelze pozastavit.\n" +" \n" +" PÅ™epínaÄe:\n" +" -f\tvynutí pozastavení, i když se jedná o pÅ™ihlaÅ¡ovací (login) shellu\n" +" \n" +" Návratový kód:\n" +" Vrací úspÄ›ch, pokud je správa úloh zapnuta a nevyskytla se chyba." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Vyhodnotí podmínkový výraz.\n" +" \n" +" SkonÄí s kódem 0 (pravda) nebo 1 (nepravda) podle vyhodnocení VÃRAZU.\n" +" Výraz smí být unární nebo binární. Unární výrazy se Äasto používají pro\n" +" zjiÅ¡tÄ›ní stavu souboru. Rovněž jsou k dispozici Å™etÄ›zcové operátory a\n" +" operátory Äíselného porovnání.\n" +" \n" +" Chování testu závisí na poÄtu argumentů. Úplnou specifikaci si lze\n" +" pÅ™eÄíst v manuálové stránce bashe.\n" +" \n" +" Souborové operátory:\n" +" \n" +" -a SOUBOR Pravda, pokud soubor existuje.\n" +" -b SOUBOR Pravda, pokud soubor je blokovým zařízením.\n" +" -c SOUBOR Pravda, pokud soubor je znakovým zařízením.\n" +" -d SOUBOR Pravda, pokud soubor je adresářem.\n" +" -e SOUBOR Pravda, pokud soubor existuje.\n" +" -f SOUBOR Pravda, pokud soubor existuje a je to běžný soubor.\n" +" -g SOUBOR Pravda, pokud soubor je SGID.\n" +" -h SOUBOR Pravda, pokud soubor je symbolickým odkazem.\n" +" -L SOUBOR Pravda, pokud soubor je symbolickým odkazem.\n" +" -k SOUBOR Pravda, pokud soubor má nastavený „sticky“ bit.\n" +" -p SOUBOR Pravda, pokud soubor je pojmenovanou rourou.\n" +" -r SOUBOR Pravda, pokud soubor je vámi Äitelný.\n" +" -s SOUBOR Pravda, pokud soubor existuje a je neprázdný.\n" +" -S SOUBOR Pravda, pokud soubor je socketem.\n" +" -t FD Pravda, pokud FD (deskriptor souboru) je otevÅ™ený na\n" +" terminálu.\n" +" -u SOUBOR Pravda, pokud soubor je SUID.\n" +" -w SOUBOR Pravda, pokud soubor je vámi zapisovatelný.\n" +" -x SOUBOR Pravda, pokud soubor je vámi spustitelný.\n" +" -O SOUBOR Pravda, pokud soubor je vámi efektivnÄ› vlastnÄ›n.\n" +" -G SOUBOR Pravda, pokud soubor je efektivnÄ› vlastnÄ›n vaší\n" +" skupinou.\n" +" -N SOUBOR Pravda, pokud soubor byl zmÄ›nÄ›n po posledním Ätení.\n" +" \n" +" SOUBOR1 -nt SOUBOR2\n" +" Pravda, pokud je SOUBOR1 novÄ›jší než SOUBOR2 (podle " +"Äasu\n" +" zmÄ›ny obsahu).\n" +" \n" +" SOUBOR1 -ot SOUBOR2\n" +" Pravda, pokud SOUBOR1 je starší než SOUBOR2.\n" +" \n" +" SOUBOR1 -ef SOUBOR2\n" +" Pravda, pokud SOUBOR1 je pevným odkazem na SOUBOR2.\n" +" \n" +" ŘetÄ›zcové operátory:\n" +" \n" +" -z ŘETÄšZEC Pravda, pokud ŘETÄšZEC je prázdný.\n" +" \n" +" -n ŘETÄšZEC\n" +" ŘETÄšZEC Pravda, pokud ŘETÄšZEC není prázdný.\n" +" \n" +" ŘETÄšZEC1 = ŘETÄšZEC2\n" +" Pravda, pokud jsou Å™etÄ›zce shodné.\n" +" ŘETÄšZEC1 != ŘETÄšZEC2\n" +" Pravda, pokud se Å™etÄ›zce neshodují.\n" +" ŘETÄšZEC1 < ŘETÄšZEC2\n" +" Pravda, pokud se ŘETÄšZEC1 Å™adí lexikograficky pÅ™ed\n" +" ŘETÄšZEC2.\n" +" ŘETÄšZEC1 > ŘETÄšZEC2\n" +" Pravda, pokud se ŘETÄšZEC1 Å™adí lexikograficky za\n" +" ŘETÄšZEC2.\n" +" \n" +" Další operátory:\n" +" \n" +" -o PŘEPÃNAÄŒ Pravda, pokud je pÅ™epínaÄ shellu PŘEPÃNAÄŒ zapnut.\n" +" -v PROMÄšNNà Pravda, pokud je promÄ›nná shellu PROMÄšNNà nastavena\n" +" -R PROMÄšNNà Pravda, pokud je promÄ›nná shellu PROMÄšNNà nastavena a\n" +" jedná se odkaz na název.\n" +" ! VÃRAZ Pravda, pokud je VÃRAZ nepravdivý.\n" +" VÃRAZ1 -a VÃRAZ2\n" +" Pravda, pokud oba VÃRAZ1 I VÃRAZ2 jsou pravdivé.\n" +" VÃRAZ1 -o VÃRAZ2\n" +" Pravda, pokud VÃRAZ1 NEBO VÃRAZ2 je pravdivý.\n" +" \n" +" ARGUMENT1 OP ARGUMENT2\n" +" Aritmetické testy. OP je jeden z -eq, -ne, -lt,\n" +" -le, -gt nebo -ge.\n" +" \n" +" Aritmetické binární operátory vracejí pravdu, pokud ARGUMENT1 je roven,\n" +" neroven, menší než, menší než nebo roven, vÄ›tší než, vÄ›tší než nebo\n" +" roven ARGUMENTU2. \n" +" Návratový kód:\n" +" Vrací úspÄ›ch, je-li VÃRAZ vyhodnocen jako pravdivý. Selže, je-li VÃRAZ\n" +" vyhodnocen jako nepravdivý nebo je-li zadán neplatný argument." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Vyhodnotí podmínkový výraz.\n" +" \n" +" Toto je synonymum pro vestavÄ›ný příkaz „test“, až na to, že poslední\n" +" argument musí být doslovnÄ› „]“, aby se shodoval s otevírající „[“." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Zobrazí Äasy procesu.\n" +" \n" +" Vypíše celkovou dobu procesu shellu a vÅ¡ech jeho potomků, kterou " +"strávili\n" +" v uživatelském a jaderném (system) prostoru.\n" +" \n" +" Návratový kód:\n" +" Vždy uspÄ›je." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Zachytávání signálů a jiných událostí.\n" +" \n" +" Definuje a aktivuje obsluhy, které budou spuÅ¡tÄ›ny, když shell obdrží\n" +" signály nebo nastanou urÄité podmínky.\n" +" \n" +" Příkaz ARGUMENT bude naÄten a proveden, až shell obdrží signál(y)\n" +" SIGNAL_SPEC. Pokud ARGUMENT chybí (a je zadán jeden SIGNAL_SPEC) nebo " +"je\n" +" „-“, každý urÄený signál bude pÅ™enastaven zpÄ›t na svoji původní " +"hodnotu.\n" +" Je-li ARGUMENT prázdný Å™etÄ›zec, každý SIGNAL_SPEC bude shellem a " +"příkazy\n" +" z nÄ›j spuÅ¡tÄ›nými ignorován.\n" +" \n" +" Je-li SIGNAL_SPEC „EXIT (0)“, bude ARGUMENT proveden pÅ™i ukonÄování " +"tohoto\n" +" shellu. Je-li SIGNAL_SPEC „DEBUG“, bude ARGUMENT proveden pÅ™ed každým\n" +" jednoduchým příkazem. Je-li SIGNAL_SPEC „RETURN“, bude ARGUMENT " +"proveden\n" +" vždy, když skonÄí bÄ›h funkce shellu nebo skriptu spuÅ¡tÄ›ného pÅ™es\n" +" vestavÄ›ný příkaz „.“ nebo „source“. SIGNAL_SPEC „ERR“ znamená, že\n" +" ARGUMENT bude proveden pokaždé, když by selhání příkazu způsobilo\n" +" ukonÄení shellu (je-li zapnut pÅ™epínaÄ -e).\n" +" \n" +" Nejsou-li poskytnuty žádné argumenty, trap vypíše seznam příkazů " +"navázaných\n" +" na vÅ¡echny signály.\n" +" \n" +" PÅ™epínaÄe:\n" +" -l\tvypíše seznam jmen signálů a jim odpovídajících Äísel\n" +" -p\tzobrazí příkazy navázané na každý SIGNAL_SPEC\n" +" \n" +" Každý SIGNAL_SPEC je buÄto jméno signálu ze , nebo Äíslo " +"signálu.\n" +" U jmen signálů nezáleží na velikosti písmen a pÅ™edpona SIG je " +"nepovinná.\n" +" Aktuálnímu shellu lze zaslat signál pomocí „kill -signal $$“.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud SIGSPEC a zadané pÅ™epínaÄe jsou platné." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Zobrazí informace o typu příkazu.\n" +" \n" +" O každém NÃZVU Å™ekne, jak by byl interpretován, kdyby byl použit jako\n" +" název příkazu.\n" +" \n" +" PÅ™epínaÄe\n" +" -a zobrazí vÅ¡echna místa, kde se nalézá spustitelný program\n" +" pojmenovaný NÃZEV. To zahrnuje aliasy, vestavÄ›né příkazy a funkce\n" +" jen a pouze tehdy, když není rovněž použit pÅ™epínaÄ -p.\n" +" -f potlaÄí hledání mezi funkcemi shellu\n" +" -P vynutí prohledání PATH na každý NÃZEV, dokonce i když se\n" +" jedná o alias, vestavÄ›ný příkaz nebo funkci, a vrátí název\n" +" souboru na disku, který by byl spuÅ¡tÄ›n\n" +" -p buÄ vrátí jméno souboru na disku, který by byl spuÅ¡tÄ›n,\n" +" nebo nic, pokud „type -t NÃZEV“ by nevrátil „file“ (soubor)\n" +" -t vypíše jedno slovo z tÄ›chto: „alias“, „keyword“, „function“,\n" +" „builtin“, „file“ nebo „“, je-li NÃZEV alias, klíÄové slovo\n" +" shellu, shellová funkce, vestavÄ›ný příkaz shellu, soubor na\n" +" disku nebo nenalezený příkaz\n" +" \n" +" Argumenty:\n" +" NÃZEV Název příkazu urÄený k výkladu.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud vÅ¡echny NÃZVY byly nalezeny. Selže, pokud nÄ›které\n" +" nalezeny nebyly." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Upravuje omezení (limity) zdrojů shellu.\n" +" \n" +" Poskytuje kontrolu nad zdroji dostupnými shellu a procesům z nÄ›j\n" +" spuÅ¡tÄ›ných (na systémech, které takovou kontrolu umožňují).\n" +" \n" +" PÅ™epínaÄe:\n" +" -S použije se „mÄ›kké“ (soft) omezení zdroje\n" +" -H použije se „tvrdé“ (hard) omezení zdroje\n" +" -a nahlásí vÅ¡echna souÄasná omezení (limity)\n" +" -b velikost vyrovnávací pamÄ›ti socketů\n" +" -c maximální velikost vytvářených core souborů (výpis pamÄ›ti " +"programu)\n" +" -d maximální velikost datového segmentu procesu\n" +" -e maximální plánovací priorita („nice“)\n" +" -f maximální velikost souborů zapsaných shellem a jeho potomky\n" +" -i maximální poÄet Äekajících signálů\n" +" -k maximální poÄet jaderných front událostí („kqueue“) alokovaných\n" +" pro tento proces\n" +" -l maximální velikost pamÄ›ti, kterou může proces zamknout\n" +" -m maximální velikost rezidentní pamÄ›ti (resident set size)\n" +" -n maximální poÄet otevÅ™ených deskriptorů souboru\n" +" -p velikost vyrovnávací pamÄ›ti rour\n" +" -q maximální poÄet bajtů ve frontÄ› posixových zpráv\n" +" -r maximální priorita plánování v reálném Äase\n" +" -s maximální velikost zásobníku\n" +" -t maximální množství procesorového Äasu v sekundách\n" +" -u maximální poÄet procesů uživatele\n" +" -v velikost virtuální pamÄ›ti\n" +" -x maximální poÄet zámků na souborech\n" +" -P maximální poÄet pseudoterminálů\n" +" -T maximální poÄet vláken\n" +" \n" +" Ne vÅ¡echny pÅ™epínaÄe jsou dostupné na vÅ¡ech platformách.\n" +" \n" +" Je-li zadán LIMIT, jedná se o novou hodnotu daného zdroje. Zvláštní\n" +" hodnoty LIMITU „soft“, „hard“ a „unlimited“ znamenají souÄasný mÄ›kký\n" +" limit, souÄasný tvrdý limit a žádný limit. V opaÄném případÄ› bude\n" +" zobrazena souÄasná hodnota limitu daného zdroje. Není-li zadán žádný\n" +" pÅ™epínaÄ, pak se pÅ™edpokládá -f.\n" +" \n" +" Hodnoty jsou v násobcích 1024 bajtů, kromÄ› -t, která je v sekundách,\n" +" -p, která je v násobcích 512 bajtů, a -u, což je absolutní poÄet " +"procesů.\n" +" \n" +" Návratová hodnota:\n" +" Vrací úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se chyba." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Zobrazí nebo nastaví uživatelskou masku práv.\n" +" \n" +" Nastaví Uživatelskou masku práv vytvářených souborů na MÓD. Je-li\n" +" MÓD vynechán, bude vytiÅ¡tÄ›na souÄasná hodnota masky.\n" +" \n" +" ZaÄíná-li MÓD Äíslicí, bude interpretován jako osmiÄkové Äíslo, jinak\n" +" jako Å™etÄ›zec symbolického zápisu práv tak, jak jej chápe chmod(1).\n" +" \n" +" PÅ™epínaÄe:\n" +" -p\tje-li MÓD vynechán, bude výstup v podobÄ›, kterou lze použít\n" +" \tjako vstup\n" +" -S\tuÄiní výstup symbolický, jinak bude výstupem osmiÄkové Äíslo\n" +" \n" +" Návratový kód\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný MÓD nebo pÅ™epínaÄ." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"PoÄká na dokonÄení úlohy a vrátí její návratový kód.\n" +" \n" +" PoÄká na každý proces urÄený ID, což může být ID procesu nebo " +"identifikace\n" +" úlohy, a nahlásí jeho návratový kód. Není-li ID zadáno, poÄká na " +"vÅ¡echny\n" +" právÄ› aktivní dÄ›tské procesy a návratovým kódem bude nula. Je-li ID\n" +" identifikátorem úlohy, poÄká na vÅ¡echny procesy z kolony dané úlohy.\n" +" \n" +" Je-li zadán pÅ™epínaÄ -n, poÄká na ukonÄení další úlohy a vrátí její\n" +" návratový kód.\n" +" \n" +" Je-li zadán pÅ™epínaÄ -f a je-li zapnuta správa úloh, poÄká na ukonÄení\n" +" ukonÄení zadaného ID, místo aby Äekal na zmÄ›nu jeho stavu.\n" +" \n" +" Návratový kód:\n" +" Vrátí kód posledního ID. Selže, pokud ID není platný nebo byl zadán\n" +" neplatný pÅ™epínaÄ." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"PoÄká na dokonÄení procesu a vrátí jeho návratový kód.\n" +" \n" +" PoÄká na každý proces urÄený PID a nahlásí jeho návratový kód. Není-li\n" +" PID zadán, bude se Äekat na vÅ¡echny právÄ› aktivní procesy potomků a\n" +" návratová hodnota bude nula. PID musí být ID procesu.\n" +" \n" +" Návratový kód:\n" +" Vrátí kód posledního PID. Selže, pokud PID není platný nebo byl zadán\n" +" neplatný pÅ™epínaÄ." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Pro každý prvek seznamu vykoná příkazy.\n" +" \n" +" SmyÄka „for“ provede posloupnost příkazů pro každý prvek v seznamu " +"položek.\n" +" Pokud „in SLOVECH…;“ není přítomno, pak se pÅ™edpokládá „in \"$@\"“. " +"NÃZEV\n" +" bude postupnÄ› nastaven na každý prvek ve SLOVECH a PŘÃKAZY budou " +"provedeny.\n" +" \n" +" Návratový kód:\n" +" Vrátí kód naposledy provedeného příkazu." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Aritmetická smyÄka for.\n" +" \n" +" Ekvivalentní k\n" +" \t(( VÃR1 ))\n" +" \twhile (( VÃR2 )); do\n" +" \t\tPŘÃKAZY\n" +" \t\t(( VÃR3 ))\n" +" \tdone\n" +" VÃR1, VÃR2 a VÃR3 jsou aritmetické výrazy. Chybí-li nÄ›který výraz,\n" +" chová se, jako by byl vyhodnocen na 1. \n" +" Návratový kód:\n" +" Vrátí kód naposledy vykonaného příkazu." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Vybere slova ze seznamu a vykoná příkazy.\n" +" \n" +" SLOVA jsou expandována a vytvoří seznam slov. Množina expandovaných " +"slov\n" +" je vytiÅ¡tÄ›na na standardní chybový výstup, každé pÅ™edchází Äíslo. Není-" +"li\n" +" „in SLOVA“ přítomno, pÅ™edpokládá se „in \"$@\"“. Pak je zobrazena výzva " +"PS3\n" +" a jeden řádek naÄten ze standardního vstupu. Pokud je řádek tvoÅ™en " +"Äíslem\n" +" odpovídajícím jednomu ze zobrazených slov, pak NÃZEV bude nastaven na " +"toto\n" +" slovo. Pokud je řádek prázdný, SLOVA a výzva budou znovu zobrazeny. Je-" +"li\n" +" naÄten EOF (konec souboru), příkaz konÄí. NaÄtení jakékoliv jiné " +"hodnoty\n" +" nastaví NÃZEV na prázdný Å™etÄ›zec. NaÄtený řádek bude uložen do promÄ›nné\n" +" REPLY. Po každém výbÄ›ru budou provedeny PŘÃKAZY, dokud nebude vykonán\n" +" příkaz „break“.\n" +" \n" +" Návratový kód:\n" +" Vrátí kód naposledy provádÄ›ného příkazu." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Nahlásí Äas spotÅ™ebovaný provádÄ›ním kolony.\n" +" \n" +" Vykoná KOLONU a zobrazí pÅ™ehled reálného Äasu, uživatelského\n" +" procesorového Äasu a systémového procesorového Äasu stráveného " +"provádÄ›ním\n" +" KOLONY poté, co skonÄí.\n" +" \n" +" PÅ™epínaÄe:\n" +" -p\tzobrazí pÅ™ehled Äasů v pÅ™enositelném posixovém formátu\n" +" \n" +" Hodnota promÄ›nné TIMEFORMAT se použije jako specifikace výstupního " +"formátu.\n" +" \n" +" Návratový kód:\n" +" Návratová hodnota je návratová hodnota KOLONY." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Provede příkazy podle shody se vzorem.\n" +" \n" +" VýbÄ›rovÄ› provede PŘÃKAZY na základÄ› shody SLOVA se VZOREM. Znak „|“\n" +" se používá na oddÄ›lení násobných VZORÅ®.\n" +" \n" +" Návratový kód:\n" +" Vrátí kód naposledy provedeného příkazu." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Vykoná příkazy na základÄ› splnÄ›ní podmínky.\n" +" \n" +" Provede seznam „if PŘÃKAZŮ“. Bude-li jeho návratový kód nula, pak bude\n" +" proveden seznam „then PŘÃKAZŮ“. Jinak bude proveden popoÅ™adÄ› každý " +"seznam\n" +" „elif PŘÃKAZŮ“ a bude-li jeho návratový kód nula, odpovídající seznam\n" +" „then PŘÃKAZŮ“ bude proveden a příkaz if skonÄí. V opaÄném případÄ› bude\n" +" proveden seznam „else PŘÃKAZŮ“, pokud existuje. Návratová hodnota celé\n" +" konstrukce je návratovou hodnotou posledního provedeného příkazu nebo " +"nula,\n" +" pokud žádná z testovaných podmínek není pravdivá.\n" +" \n" +" Návratový kód:\n" +" Vrátí kód naposledy provedeného příkazu." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Vykonává příkazy, dokud test úspěšnÄ› prochází.\n" +" \n" +" Expanduje a provádí PŘÃKAZY tak dlouho, dokud poslední příkaz ve " +"„while“\n" +" PŘÃKAZECH má nulový návratový kód.\n" +" \n" +" Návratový kód:\n" +" Vrátí kód naposledy provedeného příkazu." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Vykonává příkazy, dokud test konÄí neúspěšnÄ›.\n" +" \n" +" Expanduje a provádí PŘÃKAZY tak dlouho, dokud poslední příkaz ve " +"„until“\n" +" PŘÃKAZECH má nenulový návratový kód. \n" +" Návratový kód:\n" +" Vrátí kód naposledy provedeného příkazu." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Vytvoří koproces pojmenovaný NÃZEV.\n" +" \n" +" Vykoná PŘÃKAZ asynchronnÄ›, pÅ™iÄemž jeho standardní výstup a standardní\n" +" vstup budou napojeny rourou na souborové deskriptory uvedené v poli " +"NÃZEV\n" +" tohoto shellu pod indexem 0 a 1. Implicitní NÃZEV je „COPROC“.\n" +" \n" +" Návratový kód:\n" +" Příkaz coproc vrací návratový kód 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Definuje funkci shellu.\n" +" \n" +" Vytvoří shellovou funkci pojmenovanou NÃZEV. Volána jakožto jednoduchý\n" +" příkaz spustí PŘÃKAZY v kontextu volajícího shellu. Je-li vyvolán " +"NÃZEV,\n" +" budou funkci pÅ™edány argumenty jako $1…$n a název funkce bude umístÄ›n " +"do\n" +" $FUNCNAME.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud NÃZEV není jen pro Ätení." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Seskupí příkazy do jednotky.\n" +" \n" +" Spustí množinu příkazů v jedné skupinÄ›. Toto je jeden ze způsobů,\n" +" jak pÅ™esmÄ›rovat celou množinu příkazů. \n" +" Návratový kód:\n" +" Vrátí kód naposledy spuÅ¡tÄ›ného příkazu." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Obnoví úlohu do popÅ™edí.\n" +" \n" +" Ekvivalent k argumentu ÚLOHA příkazu „fg“. Obnoví pozastavenou úlohu\n" +" nebo úlohu na pozadí. ÚLOHA může urÄovat buÄ název úlohy, nebo Äíslo " +"úlohy.\n" +" PÅ™idání „&“ za ÚLOHU pÅ™esune úlohu na pozadí, jako by identifikátor " +"úlohy\n" +" byl argumentem příkazu „bg“.\n" +" \n" +" Návratový kód:\n" +" Vrátí kód obnovené úlohy." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Vyhodnotí aritmetický výraz.\n" +" \n" +" VÃRAZ bude vyhodnocen podle pravidel aritmetického vyhodnocování.\n" +" Ekvivalentní k „let VÃRAZ“.\n" +" \n" +" Návratový kód:\n" +" Vrátí 1, pokud se VÃRAZ vyhodnotí na 0. Jinak vrátí 0." + +# XXX: „coniditional command“ znamená podmínka, výraz podmínky. Nikoliv +# příkaz, který by byl vykonán na základÄ› splnÄ›ní jiné podmínky. Tj. pÅ™eklad +# „podmínÄ›ný příkaz“ je chybný. +# Toto je nápovÄ›da k vestavÄ›nému příkazu „[“. +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Vykoná podmínkový příkaz.\n" +" \n" +" Vrátí status 0 nebo 1 podle vyhodnocení výrazu podmínky VÃRAZ. Výrazy\n" +" se skládají ze stejných primitiv jako u vestavÄ›ného příkazu „test“ a\n" +" mohou být kombinovány za pomoci následujících operátorů:\n" +" \n" +" ( VÃRAZ )\tVrátí hodnotu VÃRAZU\n" +" ! VÃRAZ\t\tPravda, pokud VÃRAZ je nepravdivý; jinak nepravda\n" +" VÃR1 && VÃR2\tPravda, pokud oba VÃR1 i VÃR2 jsou pravdivé;\n" +" \t\tjinak nepravda\n" +" VÃR1 || VÃR2\tPravda, pokud VÃR1 nebo VÃR2 je pravdivý; jinak " +"nepravda\n" +" \n" +" Jsou-li použity operátory „==“ a „!=“, Å™etÄ›zec napravo od operátoru je\n" +" použit jako vzor a bude uplatnÄ›no porovnávání proti vzoru. Je-li použit\n" +" operátor „=~, Å™etÄ›zec napravo do operátoru je uvažován jako regulární\n" +" výraz.\n" +" \n" +" Operátory && a || nevyhodnocují VÃR2, pokud VÃR1 je dostateÄný na " +"urÄení\n" +" hodnoty výrazu.\n" +" \n" +" Návratový kód:\n" +" 0 nebo 1 podle hodnoty VÃRAZU." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Názvu běžných promÄ›nných shellu a jejich význam.\n" +" \n" +" BASH_VERSION\tInformace o verzi tohoto Bashe.\n" +" CDPATH\tDvojteÄkou oddÄ›lený seznam adresářů, který se prohledává\n" +" \t\tna adresáře zadané jako argumenty u „cd“.\n" +" GLOBIGNORE\tDvojteÄkou oddÄ›lený seznam vzorů popisujících jména " +"souborů,\n" +" \t\tkterá budou ignorována pÅ™i expanzi cest.\n" +" HISTFILE\tJméno souboru, kde je uložena historie vaÅ¡ich příkazů.\n" +" HISTFILESIZE\tMaximální poÄet řádků, které tento soubor smí obsahovat.\n" +" HISTSIZE\tMaximální poÄet řádků historie, které jsou dostupné uvnitÅ™\n" +" \t\tběžícího shellu.\n" +" HOME\tCelá cesta do vaÅ¡eho domovského adresáře.\n" +" HOSTNAME\tJméno souÄasného stroje.\n" +" HOSTTYPE\tDruh CPU, na které tento Bash běží.\n" +" IGNOREEOF\tŘídí reakci shellu na pÅ™ijetí znaku EOF (konec souboru)\n" +" \t\tpÅ™i samotném vstupu. Je-li nastaveno, pak její hodnota udává\n" +" \t\tpoÄet znaků EOF, které mohou bezprostÅ™ednÄ› následovat na prázdném\n" +" \t\třádku, dříve než shell skonÄí (implicitní hodnota je 10). Není-li\n" +" \t\tnastaveno, EOF znaÄí konec vstupu.\n" +" MACHTYPE\tŘetÄ›zec popisující systém, na kterém tento Bash běží.\n" +" MAILCHECK\tJak Äasto, v sekundách, kontroluje Bash novou poÅ¡tu.\n" +" MAILPATH\tDvojteÄkou oddÄ›lený seznam názvů souborů, které Bash\n" +" \t\tkontroluje na novou poÅ¡tu.\n" +" OSTYPE\tVerze Unixu, na kterém tento Bash běží.\n" +" PATH\tDvojteÄkou oddÄ›lený seznam adresářů, které jsou prohledávány\n" +" \t\tna příkazy.\n" +" PROMPT_COMMAND\tPříkaz, který je proveden pÅ™ed vytiÅ¡tÄ›ním každé\n" +" \t\tprimární výzvy shellu.\n" +" PS1\t\tŘetÄ›zec prvotní výzvy shellu.\n" +" PS2\t\tŘetÄ›zec druhotné výzvy shellu.\n" +" PWD\t\tCelé jméno cesty do aktuálního adresáře.\n" +" SHELLOPTS\tDvojteÄkou oddÄ›lený seznam zapnutých pÅ™epínaÄů shellu.\n" +" TERM\tNázev druhu souÄasného terminálu.\n" +" TIMEFORMAT\tVýstupní formát Äasové statistiky zobrazované vyhrazeným\n" +" \t\tslovem „time“.\n" +" auto_resume\tNeprázdná hodnota znamená, že slovo příkazu objevující se\n" +" \t\tna řádce automaticky je nejprve vyhledáno v seznamu\n" +" \t\tprávÄ› pozastavených úloh. Je-li tam nalezeno, daná úloha bude\n" +" \t\tpÅ™epnuta na popÅ™edí. Hodnota „exact“ znamená, že slovo příkazu\n" +" \t\tse musí pÅ™esnÄ› shodovat s příkazem v seznamu pozastavených úloh.\n" +" \t\tHodnota „substring“ znamená, že slovo příkazu se musí shodovat\n" +" \t\ts podÅ™etÄ›zcem úlohy. Jakákoliv jiná hodnota znamená, že příkaz\n" +" \t\tmusí být pÅ™edponou pozastavené úlohy.\n" +" histchars\tZnaky řídící expanzi historie a rychlé nahrazování.\n" +" \t\tPrvní znak je znak nahrazení historie, obvykle „!“. Druhý je\n" +" \t\tznak „rychlého nahrazování“, obvykle „^“. TÅ™etí je znak\n" +" \t\t„komentáře historie“, obvykle „#“.\n" +" HISTIGNORE\tDvojteÄkou oddÄ›lený seznam vzorů používaný na\n" +" \t\trozliÅ¡ení, které příkazy by mÄ›ly být uloženy do seznamu\n" +" \t\thistorie.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"PÅ™idá adresáře do zásobníku.\n" +" \n" +" PÅ™idá adresář na vrchol zásobníku adresářů nebo zásobník zrotuje tak,\n" +" že nový vrchol zásobníku se stane souÄasným pracovním adresářem. Bez\n" +" argumentů prohodí dva vrchní adresáře.\n" +" \n" +" PÅ™epínaÄe:\n" +" -n PotlaÄí obvyklou zmÄ›nu adresáře, když se na zásobník pÅ™idávají\n" +" adresáře, takže zmÄ›nÄ›n bude pouze zásobník.\n" +" \n" +" Argumenty:\n" +" +N Zrotuje zásobník tak, že N. adresář (poÄítáno zleva na seznamu\n" +" zobrazovaném pomocí „dirs“, poÄínaje nulou) se dostane na vrchol.\n" +" \n" +" -N Zrotuje zásobník tak, že N. adresář (poÄítáno zprava na seznamu\n" +" zobrazovaném pomocí „dirs“, poÄínaje nulou) se dostane na vrchol.\n" +" \n" +" ADRESÃŘ\n" +" PÅ™idá ADRESÃŘ na vrchol zásobníku adresářů a uÄiní jej novým\n" +" souÄasným pracovním adresářem.\n" +" \n" +" Zásobník adresářů si můžete prohlédnout příkazem „dirs“.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný argument a zmÄ›na adresáře\n" +" neselhala." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Odebere adresáře ze zásobníku.\n" +" \n" +" Odstraní položky ze zásobníku adresářů. Bez argumentů odstraní adresář\n" +" z vrcholu zásobníku a pÅ™epne do nového adresáře na vrchu zásobníku.\n" +" \n" +" PÅ™epínaÄe:\n" +" -n PotlaÄí obvyklou zmÄ›nu adresáře, když se ze zásobníku odebírají\n" +" adresáře, takže zmÄ›nÄ›n bude pouze zásobník.\n" +" \n" +" Argumenty:\n" +" +N Odstraní N. položku poÄítáno zleva na seznamu zobrazovaném\n" +" pomocí „dirs“, poÄínaje nulou. Na příklad: „popd +0“ odstraní\n" +" první adresář, „popd -1“ druhý.\n" +" \n" +" -N Odstraní N. položku poÄítáno zprava na seznamu zobrazovaném\n" +" pomocí „dirs“, poÄínaje nulou. Na příklad: „popd -0“ odstraní\n" +" poslední adresář, „popd -1“ další vedle posledního.\n" +" \n" +" Zásobník adresářů si můžete prohlédnout příkazem „dirs“.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný argument nebo neselhala zmÄ›na\n" +" adresáře." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Zobrazí zásobník adresářů.\n" +" \n" +" Zobrazí seznam právÄ› pamatovaných adresářů. Adresáře si najdou cestu\n" +" na seznam příkazem „pushd“ a procházet seznamem zpÄ›t lze příkazem " +"„popd“.\n" +" \n" +" PÅ™epínaÄe:\n" +" -c vyprázdní zásobník adresářů tím, že smaže vÅ¡echny jeho prvky\n" +" -l nevypíše vlnkou zkrácené verze adresářů, které jsou relativní\n" +" vaÅ¡emu domovskému adresáři\n" +" -p vypíše zásobník adresářů po jedné položce na řádek\n" +" -v vypíše zásobník adresářů po jedné položce na řádek, pÅ™iÄemž\n" +" názvu adresáře pÅ™edÅ™adí jeho umístÄ›ní na zásobníku\n" +" \n" +" Argumenty:\n" +" +N zobrazí N. položku poÄítáno zleva na seznamu, který zobrazuje\n" +" dirs, když je vyvolán bez pÅ™epínaÄů, poÄínaje nulou.\n" +" \n" +" -N zobrazí N. položku poÄítáno zprava na seznamu, který zobrazuje\n" +" dirs, když je vyvolán bez pÅ™epínaÄů, poÄínaje nulou. \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se chyba." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Zapne nebo vypne volby (pÅ™epínaÄe) shellu.\n" +" \n" +" ZmÄ›ní nastavení každého pÅ™epínaÄe shellu NÃZEV_VOLBY. Bez pÅ™epínaÄových\n" +" argumentů vypíše každý zadaný NÃZEV_VOLBY, nebo seznam vÅ¡ech pÅ™epínaÄů\n" +" shellu, nebyl-li zadán žádný NÃZEV_VOLBY, s příznakem, zda je, nebo\n" +" není pÅ™epínaÄ nastaven.\n" +" PÅ™epínaÄe:\n" +" -o\tomezí NÃZVY_VOLEB na ty, které jsou definovány pro použití\n" +" \ts „set -o“\n" +" -p\tvypíše každou volbu shellu s urÄením jejího stavu\n" +" -q\tpotlaÄí výstup\n" +" -s\tzapne [set] každý NÃZEV_VOLBY\n" +" -u\tvypne [unset] každý NÃZEV_VOLBY\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, je-li NÃZEV_VOLBY zapnut. Selže, byl-li zadán neplatný\n" +" pÅ™epínaÄ nebo je-li NÃZEV_VOLBY vypnut." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Naformátuje a vypíše ARGUMENTY podle definice FORMÃTU.\n" +" \n" +" PÅ™epínaÄe:\n" +" -v promÄ›nná výstup umístí do promÄ›nné shellu PROMÄšNNà namísto\n" +" odeslání na standardní výstup.\n" +" \n" +" FORMÃT je Å™etÄ›zec znaků, který obsahuje tÅ™i druhy objektů: obyÄejné " +"znaky,\n" +" které jsou prostÄ› zkopírovány na standardní výstup, posloupnosti " +"escapových\n" +" znaků, které jsou zkonvertovány a zkopírovány na standardní výstup a\n" +" formátovací definice, z nichž každá způsobí vytiÅ¡tÄ›ní dalšího " +"argumentu.\n" +" \n" +" Tento printf interpretuje vedle standardních formátovacích definic\n" +" popsaných v printf(1) též:\n" +" \n" +" %b expanduje posloupnosti escapované zpÄ›tným lomítkem\n" +" v odpovídajícím argumentu\n" +" %q oescapuje argument takovým způsobem, že jej bude možné\n" +" použít jako vstup shellu\n" +" %(FORMÃT)T vypíše Å™etÄ›zec data-Äasu tak, jako by to byl výstup\n" +" funkce strftime(3) s formátovacím Å™etÄ›zcem FORMÃT\n" +" \n" +" FORMÃT lze znovu použít podle potÅ™eby ke zpracování vÅ¡ech argumentů. Je-" +"li\n" +" zde ménÄ› argumentů, než FORMÃT vyžaduje, nadbyteÄné formátovací znaky\n" +" se budou chovat, jako by nulová hodnota nebo nulový Å™etÄ›zec, jak je " +"tÅ™eba,\n" +" byly zadány.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nedoÅ¡lo k chybÄ›\n" +" zápisu nebo pÅ™iÅ™azení." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"UrÄuje, jak budou argumenty doplňovány pomocí knihovny Readline.\n" +" \n" +" Pro každý NÃZEV udává, jak se budou doplňovat argumenty. Nejsou-li\n" +" zadány žádné pÅ™epínaÄe, budou vypsány existující pravidla doplňování\n" +" v podobÄ› vhodné pro jejich znovu užití jako vstup.\n" +" \n" +" PÅ™epínaÄe:\n" +" -p vypíše existující pravidla doplňování v znovu použitelném tvaru\n" +" -r odstraní pro každý NÃZEV doplňovací pravidlo, nebo není-li zadán\n" +" žádný NÃZEV, zruší vÅ¡echna pravidla\n" +" -D použije pravidla doplňování a akce jako implicitní pro příkazy,\n" +" které nemají žádné urÄité pravidlo doplňování definováno\n" +" -E použije pravidla doplňování a akce na „prázdné“ příkazy –\n" +" pravidla doplňování se uplatní na prázdný řádek\n" +" -I použije pravidla doplňování a akce na první slovo (obvykle " +"příkaz)\n" +" \n" +" Použije-li se doplňování, akce se uplatní v poÅ™adí, v jakém jsou " +"vypsány\n" +" pÅ™epínaÄe psané velkými písmeny výše. Je-li zadáno více pÅ™epínaÄů,\n" +" pÅ™epínaÄ -D bude upÅ™ednostnÄ›n pÅ™ed pÅ™epínaÄem -E. Oba pÅ™epínaÄe " +"pÅ™ebíjejí\n" +" pÅ™epínaÄ -I.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se chyba." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Zobrazí možná doplnÄ›ní v závislosti na pÅ™epínaÄích.\n" +" \n" +" Je zamýšleno pro použití uvnitÅ™ shellových funkcí generujících možná\n" +" doplnÄ›ní. Je-li poskytnut volitelný argument SLOVO, budou vygenerovány\n" +" shody se SLOVEM.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se chyba." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Upraví nebo zobrazí možnosti doplňování.\n" +" \n" +" PozmÄ›ní možnosti doplňování každého NÃZVU, nebo, není-li zadán žádný\n" +" NÃZEV, právÄ› provádÄ›ného doplňování. Nejsou-li zadány žádné MOŽNOSTI,\n" +" vypíše možnosti doplňování každého NÃZVU nebo definic právÄ› provádÄ›ného\n" +" doplňování.\n" +" \n" +" PÅ™epínaÄe:\n" +" \t-o možnost\tNastaví možnost doplňování MOŽNOST každému NÃZVU\n" +" \t-D\t\tZmÄ›ní možnosti doplňování „implicitnímu“ příkazu\n" +" \t-E\t\tZmÄ›ní možnosti doplňování „prázdnému“ příkazu\n" +" \t-I\t\tZmÄ›ní možnosti doplňování prvnímu slovu\n" +" \n" +" Pomocí „+o“ namísto „-o“ zadanou možnost vypnete.\n" +" \n" +" Argumenty:\n" +" Každý NÃZEV odkazuje na příkaz, pro který musí být pÅ™edem definováno\n" +" pravidlo (definice) doplňování pomocí vestavÄ›ného příkazu „complete“.\n" +" Nejsou-li zadány žádné NÃZVY, musí být compopt volán funkcí, která " +"právÄ›\n" +" generuje doplňování. ZmÄ›nÄ›ny pak budou možnosti tohoto právÄ› " +"provádÄ›ného\n" +" generátoru doplňování.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a NÃZEV mÄ›l " +"definováno\n" +" pravidlo doplňování." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"NaÄte řádky ze standardního vstupu do promÄ›nné typu indexované pole.\n" +" \n" +" NaÄte řádky ze standardního vstupu nebo z deskriptoru souboru FD, byl-" +"li\n" +" zadán pÅ™epínaÄ -u, do promÄ›nné POLE, která je typu indexované pole.\n" +" Implicitním POLEM je promÄ›nná MAPFILE.\n" +" \n" +" PÅ™epínaÄe:\n" +" -d oddÄ›lovaÄ Å˜Ã¡dky zakonÄí ODDÄšLOVAÄŒEM namísto znakem nového řádku\n" +" -n poÄet Zkopíruje nejvýše POÄŒET řádků. Je-li POÄŒET 0,\n" +" zkopíruje vÅ¡echny řádky\n" +" -O poÄátek PÅ™iÅ™azování do POLE zaÄne na indexu POÄŒÃTEK,\n" +" výchozí index je 0\n" +" -s poÄet Zahodí prvních POÄŒET naÄtených řádků\n" +" -t Odstraní znak konce řádku z každého naÄteného řádku\n" +" -u fd Řádky Äte z deskriptoru souboru FD namísto ze\n" +" standardního vstupu\n" +" -C volání Vyhodnotí VOLÃNà pokaždé, když je naÄteno MNOŽSTVÃ\n" +" řádků\n" +" -c množství Udává poÄet řádků, které je tÅ™eba pÅ™eÄíst, mezi\n" +" každým zavoláním VOLÃNÃ\n" +" \n" +" Argumenty:\n" +" POLE Název promÄ›nné typu pole, do které budou pÅ™iÅ™azena data\n" +" \n" +" Je-li uvedeno -C bez -c, implicitní množství bude 5000. Vyhodnocovanému\n" +" VOLÃNà budou jako dodateÄné argumenty pÅ™edány index prvku pole, do\n" +" kterého se má vzápÄ›tí pÅ™iÅ™azovat, a řádek, který má být pÅ™iÅ™azen do\n" +" tohoto prvku.\n" +" \n" +" Nebude-li explicitnÄ› udán poÄátek, mapfile vyprázdní POLE pÅ™ed tím,\n" +" než do nÄ›j zaÄne pÅ™iÅ™azovat.\n" +" \n" +" Návratový kód:\n" +" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ, POLE nebylo jen pro\n" +" Ätení a bylo indexovaným polem." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"NaÄte řádky ze souboru do promÄ›nné typu pole.\n" +" \n" +" Synonymum pro „mapfile“." + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2018 Free Software Foundation, Inc." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Vrátí kontext aktuálního volání podprogramu.\n" +#~ " \n" +#~ " Bez VÃRAZU vrátí " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: proces %5ld (%s) do the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Neznámé Äíslo signálu" + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licence GPLv2+: GNU GPL verze 2 nebo novÄ›jší \n" + +#~ msgid "" +#~ ". With EXPR, returns\n" +#~ " " +#~ msgstr "" +#~ ". S VÃRAZEM vrátí\n" +#~ " " + +#~ msgid "" +#~ "; this extra information can be used to\n" +#~ " 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." +#~ msgstr "" +#~ "; tato dodateÄná informace může být\n" +#~ " použita jako výpis zásobníku volání.\n" +#~ " \n" +#~ " Hodnota VÃRAZU urÄuje, kolik rámců volání jít zpÄ›t pÅ™ed souÄasný,\n" +#~ " vrcholový rámec je rámce 0." + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: nelze pÅ™ealokovat %'lu bajtů (%'lu bajtů alokováno)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: nelze alokovat %'lu bajtů" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: %s:%d: nelze pÅ™ealokovat %'lu bajtů (%'lu bajtů alokováno)" + +#~ msgid " " +#~ msgstr " " + +#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +#~ msgstr "Bez VÃRAZU vrací „$line $filename“. S VÃRAZEM " + +#~ msgid "returns \"$line $subroutine $filename\"; this extra information" +#~ msgstr "vrací „$line $subroutine $filename“. Tyto údaje" + +#~ msgid "can be used used to provide a stack trace." +#~ msgstr "lze využít pÅ™i výpisu zásobníku volání." + +#~ msgid "" +#~ "The value of EXPR indicates how many call frames to go back before the" +#~ msgstr "Hodnota VÃRAZ znaÄí, kolik rámců volání se má jít zpÄ›t pÅ™ed" + +#~ msgid "current one; the top frame is frame 0." +#~ msgstr "souÄasný rámec, vrcholový rámec má Äíslo 0." + +#~ msgid "%s: invalid number" +#~ msgstr "%s: chybné Äíslo" + +#~ msgid "Shell commands matching keywords `" +#~ msgstr "Příkazy shellu shodující se s klíÄovými slovy „" + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "Zobrazí seznam právÄ› zapamatovaných adresářů. Adresáře" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "se na seznam umisÅ¥ují příkazem „pushd“, pÅ™edchozí stav seznamu lze" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "vrátit příkazem „popd“." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "Příznak -l znaÄí, že „dirs“ nemá vypisovat zkrácené verze adresářů," + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "které leží pod vaším domovským adresářem. To znamená, že „~/bin“" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "smí být zobrazen jako „/homes/bfox/bin“. Příznak -v způsobí, že" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "" +#~ "„dirs“ vypíše zásobník adresářů záznam po záznamu na samostatné řádky" + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "a pÅ™ed název adresáře uvede jeho poÅ™adí v zásobníku. Příznak -p" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "dÄ›lá to samé, ale bez informace o umístÄ›ní na zásobníku." + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "Příznak -c vyprázdní zásobník smazáním vÅ¡em prvků." + +#~ msgid "" +#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgstr "+N zobrazí N. položku poÄítáno zleva na seznamu, který by ukázal" + +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr " příkaz dirs bez jakýchkoliv pÅ™epínaÄů, poÄítáno od nuly." + +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "-N zobrazí N. položku poÄítáno zprava na seznamu, který by ukázal" + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "" +#~ "PÅ™idá adresář na vrchol zásobníku adresářů, nebo rotuje zásobník tak," + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "že nový vrchol zásobníku se stane pracovním adresářem." + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "Bez argumentů prohodí horní dva adresáře." + +#~ msgid "+N Rotates the stack so that the Nth directory (counting" +#~ msgstr "+N Zrotuje zásobník tak, že N. adresář (poÄítáno" + +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr " zleva seznamu, který by ukázal „dirs“, poÄínaje od" + +#~ msgid " zero) is at the top." +#~ msgstr " nuly) se dostane na vrchol." + +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "-N Zrotuje zásobník tak, že N. adresář (poÄítáno" + +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr " zprava seznamu, který by ukázal „dirs“, poÄínaje od" + +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "" +#~ "-n potlaÄí obvyklou zmÄ›nu pracovního adresáře pÅ™i pÅ™idávání adresářů" + +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr " na zásobník, takže se zmÄ›ní jen obsah zásobníku." + +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "adr pÅ™idá ADR na vrchol zásobníku adresářů a uÄiní jej" + +#~ msgid " new current working directory." +#~ msgstr " novým pracovním adresářem." + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "Zásobník adresářů si lze prohlédnout příkazem „dirs“." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Odstraní položky ze zásobníku adresářů. Bez argumentů" + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "odstraní adresář z vrcholu zásobníku a pÅ™epne se do nového" + +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "+N odstraní N. položku poÄítáno zleva na seznamu," + +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr " který by ukázal „dirs“, poÄínaje nulou. Například „popd +0“" + +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr " odstraní první adresář, „popd +1“ druhý." + +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "-N odstraní N. položku poÄítáno zprava na seznamu," + +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr " který by ukázal „dirs“, poÄínaje nulou. Například: „popd -0“" + +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr " odstraní poslední adresář, “popd -1“ pÅ™edposlední." + +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "" +#~ "-n potlaÄí obvyklou zmÄ›nu pracovního adresáře pÅ™i odebírání adresářů" + +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr " ze zásobníku, takže pouze zásobník dozná zmÄ›ny." + +#~ msgid "allocated" +#~ msgstr "alokováno" + +#~ msgid "freed" +#~ msgstr "uvolnÄ›no" + +#~ msgid "requesting resize" +#~ msgstr "požadující velikost" + +#~ msgid "just resized" +#~ msgstr "právÄ› zmÄ›nÄ›na velikost" + +#~ msgid "bug: unknown operation" +#~ msgstr "chyba: neznámá operace" + +#~ msgid "malloc: watch alert: %p %s " +#~ msgstr "malloc: výstraha sledování: %p %s" + +#~ msgid "" +#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "" +#~ "UkonÄí smyÄku FOR, WHILE nebo UNTIL. Je-li zadáno N, ukonÄí N úrovní." + +#~ msgid "" +#~ "Run a shell builtin. This is useful when you wish to rename a\n" +#~ " shell builtin to be a function, but need the functionality of the\n" +#~ " builtin within the function itself." +#~ msgstr "" +#~ "Spustí vestavÄ›ný příkaz shellu. Toto se hodí, pÅ™ejete-li si pÅ™ejmenovat\n" +#~ " vestavÄ›ný příkaz na funkci, avÅ¡ak funkcionalitu vestavÄ›ného příkazu\n" +#~ " potÅ™ebujete v téže funkci." + +#~ msgid "" +#~ "Print the current working directory. With the -P option, pwd prints\n" +#~ " the physical directory, without any symbolic links; the -L option\n" +#~ " makes pwd follow symbolic links." +#~ msgstr "" +#~ "Vypíše souÄasný pracovní adresář. S pÅ™epínaÄem -P vypíše pwd fyzický\n" +#~ " adresář prostý vÅ¡ech symbolický odkazů; pÅ™epínaÄ -L pÅ™inutí pwd\n" +#~ " následovat symbolické odkazy." + +#~ msgid "Return a successful result." +#~ msgstr "Vrací výsledek úspÄ›chu." + +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell\n" +#~ " function called `ls', and you wish to call the command `ls', you can\n" +#~ " say \"command ls\". If the -p option is given, a default value is " +#~ "used\n" +#~ " for PATH that is guaranteed to find all of the standard utilities. " +#~ "If\n" +#~ " the -V or -v option is given, a string is printed describing " +#~ "COMMAND.\n" +#~ " The -V option produces a more verbose description." +#~ msgstr "" +#~ "Spustí PŘÃKAZ s ARGUMENTY ignoruje funkce shellu. Máte-li shellovou\n" +#~ " funkci pojmenovanou „ls“, a chcete-li zavolat příkaz „ls“, použijte\n" +#~ " „command ls“. Je-li zadán pÅ™epínaÄ -p, bude pro PATH použita " +#~ "implicitní\n" +#~ " hodnota, která zaruÄuje, že budou nalezeny vÅ¡echny standardní " +#~ "nástroje.\n" +#~ " Je-li zadán pÅ™epínaÄ -V nebo -v, bude vytiÅ¡tÄ›n Å™etÄ›zec popisující " +#~ "PŘÃKAZ.\n" +#~ " PÅ™epínaÄ -V produkuje podrobnÄ›jší popis." + +#~ msgid "" +#~ "Declare variables and/or give them attributes. If no NAMEs are\n" +#~ " given, then display the values of variables instead. The -p option\n" +#~ " will display the attributes and values of each NAME.\n" +#~ " \n" +#~ " The flags are:\n" +#~ " \n" +#~ " -a\tto make NAMEs arrays (if supported)\n" +#~ " -f\tto select from among function names only\n" +#~ " -F\tto display function names (and line number and source file name " +#~ "if\n" +#~ " \tdebugging) without definitions\n" +#~ " -i\tto make NAMEs have the `integer' attribute\n" +#~ " -r\tto make NAMEs readonly\n" +#~ " -t\tto make NAMEs have the `trace' attribute\n" +#~ " -x\tto make NAMEs export\n" +#~ " \n" +#~ " Variables with the integer attribute have arithmetic evaluation (see\n" +#~ " `let') done when the variable is assigned to.\n" +#~ " \n" +#~ " When displaying values of variables, -f displays a function's name\n" +#~ " and definition. The -F option restricts the display to function\n" +#~ " name only.\n" +#~ " \n" +#~ " Using `+' instead of `-' turns off the given attribute instead. " +#~ "When\n" +#~ " used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "" +#~ "Deklaruje promÄ›nné a/nebo jim nastaví atributy. Nejsou-li zadány NÃZVY,\n" +#~ " tak místo toho zobrazí hodnoty promÄ›nných. PÅ™epínaÄ -p zobrazí " +#~ "atributy\n" +#~ " a hodnoty pro každý NÃZEV.\n" +#~ " \n" +#~ " Příznaky jsou:\n" +#~ " \n" +#~ " -a\tuÄiní NÃZVY poli (je-li podporováno)\n" +#~ " -f\tvybírá pouze mezi názvy funkcí\n" +#~ " -F\tzobrazí názvy funkcí (a Äíslo řádku a název zdrojového " +#~ "souboru,\n" +#~ " \tje-li zapnuto ladÄ›ní) bez definic\n" +#~ " -i\tpÅ™iÅ™adí NÃZVÅ®M atribut „integer“ (Äíslo)\n" +#~ " -r\tuÄiní NÃZVY jen pro Ätení\n" +#~ " -t\tpÅ™iÅ™adí NÃZVÅ®M atribut „trace“ (sledování)\n" +#~ " -x\tvyexportuje NÃZVY\n" +#~ " \n" +#~ " PromÄ›nné s atributem integer jsou aritmeticky vyhodnoceny (vizte " +#~ "„let“),\n" +#~ " když je do promÄ›nné pÅ™iÅ™azováno.\n" +#~ " \n" +#~ " PÅ™i zobrazování hodnot promÄ›nných -f zobrazí názvy a definice " +#~ "funkcí.\n" +#~ " PÅ™epínaÄ -F omezí výpis jen na názvy funkcí.\n" +#~ " \n" +#~ " Pomocí „+“ namísto „-“ daný atribut odeberete. Je-li použito uvnitÅ™\n" +#~ " funkce, uÄiní NÃZVY lokální stejnÄ› jako příkaz „local“." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Zastaralé. Vizte „declare“." + +#~ msgid "" +#~ "Create a local variable called NAME, and give it VALUE. LOCAL\n" +#~ " can only be used within a function; it makes the variable NAME\n" +#~ " have a visible scope restricted to that function and its children." +#~ msgstr "" +#~ "Vytvoří lokální promÄ›nnou pojmenovanou NÃZEV a pÅ™iÅ™adí jí HODNOTU.\n" +#~ " LOCAL smí být použito jen uvnitÅ™ funkcí. UÄiní promÄ›nnou NÃZEV " +#~ "viditelnou\n" +#~ " jen v dané funkci a jejích potomcích." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Vypíše ARGUMENTY. Je-li zadáni -n, závÄ›reÄný konec řádku bude potlaÄen." + +#~ msgid "" +#~ "Enable and disable builtin shell commands. This allows\n" +#~ " you to use a disk command which has the same name as a shell\n" +#~ " builtin without specifying a full pathname. If -n is used, the\n" +#~ " NAMEs become disabled; otherwise NAMEs are enabled. For example,\n" +#~ " to use the `test' found in $PATH instead of the shell builtin\n" +#~ " version, type `enable -n test'. On systems supporting dynamic\n" +#~ " loading, the -f option may be used to load new builtins from the\n" +#~ " shared object FILENAME. The -d option will delete a builtin\n" +#~ " previously loaded with -f. If no non-option names are given, or\n" +#~ " the -p option is supplied, a list of builtins is printed. The\n" +#~ " -a option means to print every builtin with an indication of whether\n" +#~ " or not it is enabled. The -s option restricts the output to the " +#~ "POSIX.2\n" +#~ " `special' builtins. The -n option displays a list of all disabled " +#~ "builtins." +#~ msgstr "" +#~ "Povolí nebo zakáže vestavÄ›ný příkaz shellu. To vám umožňuje použít\n" +#~ " příkaz z disku, který má stejné jméno jako vestavÄ›ný příkaz shellu, " +#~ "aniž\n" +#~ " byste museli zadávat celou cestu. Je-li použito -n, NÃZVY se stanou\n" +#~ " zakázanými, jinak budou povoleny. Například „test“ z PATH namísto " +#~ "verze\n" +#~ " vestavÄ›né do shellu lze používat tak, že napíšete „enable -n test“. " +#~ "Na\n" +#~ " systémech podporujících dynamické zavádÄ›ní pÅ™epínaÄ -f může být " +#~ "použit\n" +#~ " pro zavedení nových vestavÄ›ných příkazů ze sdíleného objektu " +#~ "NÃZEV_SOUBORU.\n" +#~ " PÅ™epínaÄ -d odstraní vestavÄ›ný příkaz zavedený pÅ™es -f. Není-li " +#~ "zadán\n" +#~ " žádný pÅ™epínaÄ nebo je-li zadán pÅ™epínaÄ -p, bude vypsán seznam " +#~ "vestavÄ›ných\n" +#~ " příkazů. PÅ™epínaÄ -a znamená, že budou vypsány vÅ¡echny vestavÄ›né " +#~ "příkazy a\n" +#~ " u každého bude vyznaÄeno, zda je povolen nebo zakázán. PÅ™epínaÄ -s " +#~ "omezí\n" +#~ " výpis na příkazy uvedené v POSIX.2. PÅ™epínaÄ -n zobrazí seznam vÅ¡ech\n" +#~ " zakázaných vestavÄ›ných příkazů." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "NaÄte ARGUMENTY jako vstup shellu a výsledný příkaz(y) provede." + +#~ msgid "" +#~ "Exec FILE, replacing this shell with the specified program.\n" +#~ " If FILE is not specified, the redirections take effect in this\n" +#~ " shell. If the first argument is `-l', then place a dash in the\n" +#~ " zeroth arg passed to FILE, as login does. If the `-c' option\n" +#~ " is supplied, FILE is executed with a null environment. The `-a'\n" +#~ " option means to make set argv[0] of the executed process to NAME.\n" +#~ " If the file cannot be executed and the shell is not interactive,\n" +#~ " then the shell exits, unless the shell option `execfail' is set." +#~ msgstr "" +#~ "Provede SOUBOR, pÅ™iÄemž nahradí tento shell zadaným programem.\n" +#~ " Není-li SOUBOR zadán, pÅ™esmÄ›rování zapůsobí v tomto shellu. Je-li " +#~ "prvním\n" +#~ " argumentem „-l“, bude do nultého argumentu SOUBORU umístÄ›na pomlÄka " +#~ "tak,\n" +#~ " jak to dÄ›lá login. Je-li zadán pÅ™epínaÄ â€ž-c“, bude SOUBOR spuÅ¡tÄ›n\n" +#~ " s prázdným prostÅ™edím. PÅ™epínaÄ â€ž-a“ znamená, že argv[0] provádÄ›ného\n" +#~ " procesu bude nastaven na NÃZEV. Pokud soubor nemůže být proveden a " +#~ "shell\n" +#~ " není interaktivní, pak shell bude ukonÄen, pokud pÅ™epínaÄ shellu\n" +#~ " „execfail“ není nastaven." + +#~ msgid "Logout of a login shell." +#~ msgstr "Odhlásí z pÅ™ihlaÅ¡ovacího (login) shellu." + +#~ msgid "" +#~ "For each NAME, the full pathname of the command is determined and\n" +#~ " remembered. If the -p option is supplied, PATHNAME is used as the\n" +#~ " full pathname of NAME, and no path search is performed. The -r\n" +#~ " option causes the shell to forget all remembered locations. The -d\n" +#~ " option causes the shell to forget the remembered location of each " +#~ "NAME.\n" +#~ " If the -t option is supplied the full pathname to which each NAME\n" +#~ " corresponds is printed. If multiple NAME arguments are supplied " +#~ "with\n" +#~ " -t, the NAME is printed before the hashed full pathname. The -l " +#~ "option\n" +#~ " causes output to be displayed in a format that may be reused as " +#~ "input.\n" +#~ " If no arguments are given, information about remembered commands is " +#~ "displayed." +#~ msgstr "" +#~ "Pro každý NÃZEV je urÄena plná cesta k příkazu a je zapamatována.\n" +#~ " Za použití pÅ™epínaÄe -p se vezme NÃZEV_CESTY za plnou cestu k NÃZVU " +#~ "a\n" +#~ " žádné vyhledávání cesty se nekoná. PÅ™epínaÄ -r způsobí, že shell " +#~ "zapomene\n" +#~ " vÅ¡echny zapamatovaná umístÄ›ní. PÅ™epínaÄ -d způsobí, že shell " +#~ "zapomene\n" +#~ " zapamatovaná umístÄ›ní každého NÃZVU. Je-li zadán pÅ™epínaÄ -t, bude " +#~ "vypsána\n" +#~ " plná cesta ke každému NÃZVU. Je-li s -t zadáno více NÃZVÅ®, NÃZEV " +#~ "bude\n" +#~ " vypsán pÅ™ed uloženou celou cestou. PÅ™epínaÄ -l vytvoří takový " +#~ "výstup,\n" +#~ " který lze opÄ›t použít jako vstup. Nejsou-li zadány žádné argumenty,\n" +#~ " budou vypsány informace o zapamatovaných příkazech." + +#~ msgid "" +#~ "Display helpful information about builtin commands. If PATTERN is\n" +#~ " specified, gives detailed help on all commands matching PATTERN,\n" +#~ " otherwise a list of the builtins is printed. The -s option\n" +#~ " restricts the output for each builtin command matching PATTERN to\n" +#~ " a short usage synopsis." +#~ msgstr "" +#~ "Zobrazí užiteÄné informace o vestavÄ›ných příkazech. Je-li zadán VZOREK,\n" +#~ " vrátí podrobnou nápovÄ›du ke vÅ¡em příkazům odpovídajícím VZORKU, jinak " +#~ "je\n" +#~ " vytiÅ¡tÄ›n seznam vestavÄ›ných příkazů. PÅ™epínaÄ -s omezí výstup " +#~ "o každém\n" +#~ " vestavÄ›ném příkazu odpovídajícího VZORKU na struÄný popis použití." + +#~ msgid "" +#~ "By default, removes each JOBSPEC argument from the table of active jobs.\n" +#~ " If the -h option is given, the job is not removed from the table, but " +#~ "is\n" +#~ " marked so that SIGHUP is not sent to the job if the shell receives a\n" +#~ " SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove " +#~ "all\n" +#~ " jobs from the job table; the -r option means to remove only running " +#~ "jobs." +#~ msgstr "" +#~ "ImplicitnÄ› odstraní každý argument ÚLOHA z tabulky aktivních úloh. Je-li\n" +#~ " zadán pÅ™epínaÄ -h, úloha není odstranÄ›na z tabulky, ale je oznaÄena " +#~ "tak.\n" +#~ " že úloze nebude zaslán SIGHUP, když shell obdrží SIGHUP. PÅ™epínaÄ -" +#~ "a,\n" +#~ " pokud není uvedena ÚLOHA, znamená, že vÅ¡echny úlohy budou odstranÄ›ny\n" +#~ " z tabulky úloh. PÅ™epínaÄ -r znamená, že pouze běžící úlohy budou\n" +#~ " odstranÄ›ny." + +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N\n" +#~ " is omitted, the return status is that of the last command." +#~ msgstr "" +#~ "Způsobí ukonÄení funkce s návratovou hodnotou uvedenou v N. Je-li\n" +#~ " N vynecháno, návratový kód je roven poslednímu příkazu." + +#~ msgid "" +#~ "For each NAME, remove the corresponding variable or function. Given\n" +#~ " the `-v', unset will only act on variables. Given the `-f' flag,\n" +#~ " unset will only act on functions. With neither flag, unset first\n" +#~ " tries to unset a variable, and if that fails, then tries to unset a\n" +#~ " function. Some variables cannot be unset; also see readonly." +#~ msgstr "" +#~ "Pro každé JMÉNO odstraní odpovídající promÄ›nnou nebo funkci.\n" +#~ " Spolu s „-v“ bude unset fungovat jen na promÄ›nné. S příznakem „-f“ " +#~ "bude\n" +#~ " unset fungovat jen na funkce. Bez tÄ›chto dvou příznaků unset nejprve " +#~ "zkusí\n" +#~ " zruÅ¡it promÄ›nnou a pokud toto selže, tak zkusí zruÅ¡it funkci. " +#~ "NÄ›které\n" +#~ " promÄ›nné nelze odstranit. Taktéž vizte příkaz „readonly“." + +#~ msgid "" +#~ "NAMEs are marked for automatic export to the environment of\n" +#~ " subsequently executed commands. If the -f option is given,\n" +#~ " the NAMEs refer to functions. If no NAMEs are given, or if `-p'\n" +#~ " is given, a list of all names that are exported in this shell is\n" +#~ " printed. An argument of `-n' says to remove the export property\n" +#~ " from subsequent NAMEs. An argument of `--' disables further option\n" +#~ " processing." +#~ msgstr "" +#~ "NÃZVY jsou oznaÄeny pro automatické exportování do prostÅ™edí následnÄ›\n" +#~ " provádÄ›ných příkazů. Je-li zadán pÅ™epínaÄ -f, NÃZVY se vztahují " +#~ "k funkcím.\n" +#~ " Nejsou-li zadány žádné NÃZVY nebo je-li zadáno „-p“, bude vytiÅ¡tÄ›n " +#~ "seznam\n" +#~ " vÅ¡ech názvů, které jsou v tomto shellu exportovány. Argument „-n“ " +#~ "naÅ™izuje\n" +#~ " odstranit vlastnost exportovat z následujících NÃZVÅ®. Argument „--“\n" +#~ " zakazuje zpracování dalších pÅ™epínaÄů." + +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may\n" +#~ " not be changed by subsequent assignment. If the -f option is given,\n" +#~ " then functions corresponding to the NAMEs are so marked. If no\n" +#~ " arguments are given, or if `-p' is given, a list of all readonly " +#~ "names\n" +#~ " is printed. The `-a' option means to treat each NAME as\n" +#~ " an array variable. An argument of `--' disables further option\n" +#~ " processing." +#~ msgstr "" +#~ "Zadané NÃZVY budou oznaÄeny jako jen pro Ätení a hodnoty tÄ›chto NÃZVÅ®\n" +#~ " nebude možné zmÄ›nit následným pÅ™iÅ™azením. Je-li zadán pÅ™epínaÄ -f, " +#~ "pak\n" +#~ " funkce tÄ›chto NÃZVÅ® budou takto oznaÄeny. Nejsou-li zadány žádné " +#~ "argumenty\n" +#~ " nebo je-li zadáno „-p“, bude vytiÅ¡tÄ›n seznam vÅ¡ech jmen jen pro " +#~ "Ätení.\n" +#~ " PÅ™epínaÄ â€ž-a“ znamená, že s každým NÃZVEM bude zacházeno jako " +#~ "s promÄ›nnou\n" +#~ " typu pole. Argument „--“ zakáže zpracování dalších pÅ™epínaÄů." + +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" +#~ " not given, it is assumed to be 1." +#~ msgstr "" +#~ "PoziÄní parametry budou pÅ™ejmenovány z $N+1 na $1 atd. Není-li N zadáno,\n" +#~ " pÅ™edpokládá se 1." + +#~ msgid "" +#~ "Suspend the execution of this shell until it receives a SIGCONT\n" +#~ " signal. The `-f' if specified says not to complain about this\n" +#~ " being a login shell if it is; just suspend anyway." +#~ msgstr "" +#~ "Pozastaví provádÄ›ní tohoto shellu do doby, něž bude obdržen signál\n" +#~ " SIGCONT. „-f“, je-li zadán, potlaÄí stížnost na to, že se jedná\n" +#~ " o pÅ™ihlaÅ¡ovací shell (pokud tomu tak je), a prostÄ› pozastaví Äinnost." + +#~ msgid "" +#~ "Print the accumulated user and system times for processes run from\n" +#~ " the shell." +#~ msgstr "" +#~ "Vypíše celkovou dobu procesu spuÅ¡tÄ›ného z shellu, kterou strávil\n" +#~ " v uživatelském a jaderném (system) prostoru." + +#~ msgid "" +#~ "For each NAME, indicate how it would be interpreted if used as a\n" +#~ " command name.\n" +#~ " \n" +#~ " If the -t option is used, `type' outputs a single word which is one " +#~ "of\n" +#~ " `alias', `keyword', `function', `builtin', `file' or `', if NAME is " +#~ "an\n" +#~ " alias, shell reserved word, shell function, shell builtin, disk " +#~ "file,\n" +#~ " or unfound, respectively.\n" +#~ " \n" +#~ " If the -p flag is used, `type' either returns the name of the disk\n" +#~ " file that would be executed, or nothing if `type -t NAME' would not\n" +#~ " return `file'.\n" +#~ " \n" +#~ " If the -a flag is used, `type' displays all of the places that " +#~ "contain\n" +#~ " an executable named `file'. This includes aliases, builtins, and\n" +#~ " functions, if and only if the -p flag is not also used.\n" +#~ " \n" +#~ " The -f flag suppresses shell function lookup.\n" +#~ " \n" +#~ " The -P flag forces a PATH search for each NAME, even if it is an " +#~ "alias,\n" +#~ " builtin, or function, and returns the name of the disk file that " +#~ "would\n" +#~ " be executed." +#~ msgstr "" +#~ "O každém NÃZVU Å™ekne, jak by byl interpretován, kdyby byl použit jako\n" +#~ " název příkazu.\n" +#~ " \n" +#~ " Je-li použit pÅ™epínaÄ -t, „type“ vypíše jedno slovo z tÄ›chto: " +#~ "„alias“,\n" +#~ " „keyword“, „function“, „builtin“, „file“ nebo „“, je-li NÃZEV alias,\n" +#~ " klíÄové slovo shellu, shellová funkce, vestavÄ›ný příkaz shellu, " +#~ "soubor\n" +#~ " na disku nebo nenalezený soubor.\n" +#~ " \n" +#~ " Je-li použit pÅ™epínaÄ -p, „type“ buÄ vrátí jméno souboru na disku, " +#~ "který\n" +#~ " by byl spuÅ¡tÄ›n, nebo nic, pokud „type -t NÃZEV“ by nevrátil „file“.\n" +#~ " \n" +#~ " Je-li použit pÅ™epínaÄ -a, „type“ zobrazí vÅ¡echna místa, kde se " +#~ "nalézá\n" +#~ " spustitelný program pojmenovaný „soubor“. To zahrnuje aliasy, " +#~ "vestavÄ›né\n" +#~ " příkazy a funkce jen a pouze tehdy, když není rovněž použit pÅ™epínaÄ -" +#~ "p.\n" +#~ " \n" +#~ " PÅ™epínaÄ -f potlaÄí hledání mezi funkcemi shellu.\n" +#~ " \n" +#~ " PÅ™epínaÄ -P vynutí prohledání PATH na každý NÃZEV, dokonce i když se\n" +#~ " jedná o alias, vestavÄ›ný příkaz nebo funkci, a vrátí název souboru " +#~ "na\n" +#~ " disku, který by byl spuÅ¡tÄ›n." + +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if\n" +#~ " `-S' is supplied, the current value of the mask is printed. The `-" +#~ "S'\n" +#~ " option makes the output symbolic; otherwise an octal number is " +#~ "output.\n" +#~ " If `-p' is supplied, and MODE is omitted, the output is in a form\n" +#~ " that may be used as input. If MODE begins with a digit, it is\n" +#~ " interpreted as an octal number, otherwise it is a symbolic mode " +#~ "string\n" +#~ " like that accepted by chmod(1)." +#~ msgstr "" +#~ "Uživatelská maska práv vytvářených souborů je nastavena na MÓD. Je-li\n" +#~ " MÓD vynechán nebo je-li uvedeno „-S“, bude vytiÅ¡tÄ›na souÄasná " +#~ "hodnota\n" +#~ " masky. PÅ™epínaÄ â€ž-S“ uÄiní výstup symbolický, jinak bude výstupem\n" +#~ " osmiÄkové Äíslo. Je-li zadáno „-p“ a MÓD je vynechán, bude výstup ve\n" +#~ " formátu, který lze použít jako vstup. ZaÄíná-li MÓD Äíslicí, bude\n" +#~ " interpretován jako osmiÄkové Äíslo, jinak jako Å™etÄ›zec symbolického " +#~ "zápisu\n" +#~ " práv tak, jak jej chápe chmod(1)." + +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If\n" +#~ " N is not given, all currently active child processes are waited for,\n" +#~ " and the return code is zero. N is a process ID; if it is not given,\n" +#~ " all child processes of the shell are waited for." +#~ msgstr "" +#~ "PoÄká na zadaný proces a nahlásí jeho návratový kód. Není-li N zadáno,\n" +#~ " bude se Äekat na vÅ¡echny právÄ› aktivní procesy potomků a návratová " +#~ "hodnota\n" +#~ " bude nula. N je ID procesu. Není-li zadáno, bude se Äekat na vÅ¡echny\n" +#~ " procesy potomků tohoto shellu." + +#~ msgid "" +#~ "Create a simple command invoked by NAME which runs COMMANDS.\n" +#~ " Arguments on the command line along with NAME are passed to the\n" +#~ " function as $0 .. $n." +#~ msgstr "" +#~ "Vytvoří jednoduchý příkaz volaný JMÉNEM, který spustí PŘÃKAZY. Argumenty\n" +#~ " z příkazové řádky spolu se JMÉNEM budou pÅ™edány do funkce jako $0…$n." + +#~ msgid "" +#~ "Toggle the values of variables controlling optional behavior.\n" +#~ " The -s flag means to enable (set) each OPTNAME; the -u flag\n" +#~ " unsets each OPTNAME. The -q flag suppresses output; the exit\n" +#~ " status indicates whether each OPTNAME is set or unset. The -o\n" +#~ " option restricts the OPTNAMEs to those defined for use with\n" +#~ " `set -o'. With no options, or with the -p option, a list of all\n" +#~ " settable options is displayed, with an indication of whether or\n" +#~ " not each is set." +#~ msgstr "" +#~ "PÅ™epne hodnoty promÄ›nných řídící volitelné chování. PÅ™epínaÄ -s znamená,\n" +#~ " že se každý NÃZEV_VOLBY zapne (nastaví). PÅ™epínaÄ -u každý " +#~ "NÃZEV_VOLBY\n" +#~ " vypne. PÅ™epínaÄ -q potlaÄí výstup. Zda je nebo není nastaven každý\n" +#~ " NÃZEV_VOLBY, indikuje návratový kód. PÅ™epínaÄ -o omezí NÃZVY_VOLEB na " +#~ "ty,\n" +#~ " které jsou definovány pro použití s „set -o“. Bez pÅ™epínaÄů nebo\n" +#~ " s pÅ™epínaÄem -p je zobrazen seznam vÅ¡ech nastavitelných voleb vÄetnÄ›\n" +#~ " indikace, zda je každá nastavena." + +#~ msgid "" +#~ "For each NAME, specify how arguments are to be completed.\n" +#~ " If the -p option is supplied, or if no options are supplied, " +#~ "existing\n" +#~ " completion specifications are printed in a way that allows them to " +#~ "be\n" +#~ " reused as input. The -r option removes a completion specification " +#~ "for\n" +#~ " each NAME, or, if no NAMEs are supplied, all completion " +#~ "specifications." +#~ msgstr "" +#~ "U každého NÃZVU sdÄ›lí, jak budou argumenty doplnÄ›ny. Je-li zadán\n" +#~ " pÅ™epínaÄ -p nebo není-li zadán pÅ™epínaÄ Å¾Ã¡dný, budou existující " +#~ "definice\n" +#~ " doplňování vytiÅ¡tÄ›ny tak. že je bude možné znovu použít jako vstup.\n" +#~ " PÅ™epínaÄ -r odstraní definici doplnÄ›ní pro každý NÃZEV nebo chybí-li " +#~ "NÃZVY,\n" +#~ " odstraní vÅ¡echny definice." diff --git a/bash-5.1/po/da.gmo b/bash-5.1/po/da.gmo new file mode 100644 index 0000000000000000000000000000000000000000..44572c77b2362e24f7e3791e79a5a093951b4fae GIT binary patch literal 72064 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 literal 0 HcmV?d00001 diff --git a/bash-5.1/po/da.po b/bash-5.1/po/da.po new file mode 100644 index 0000000..09b2cf6 --- /dev/null +++ b/bash-5.1/po/da.po @@ -0,0 +1,6073 @@ +# Danish translation of bash. +# Copyright (C) 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# +# Kenneth Nielsen , 2009-2011. +# +# Oversættelseskonventioner: +# keymap -> tastetildeling +# child -> underproces +# +msgid "" +msgstr "" +"Project-Id-Version: bash 4.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2011-03-18 01:36+0100\n" +"Last-Translator: Kenneth Nielsen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +# Den er jeg altsÃ¥ ikke helt sikker pÃ¥ +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "ugyldigt arrayindeks" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: kan ikke konvertere indekseret til associativt array" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: ugyldig nøgle til associativt array" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: kan ikke tildele til ikkenumerisk indeks" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: et indeks skal bruges ved tildeling til associativt array" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: kan ikke oprette %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: kan ikke finde tastetildeling for kommando" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: første ikke-blank-tegn er ikke '\"'" + +# Kønnet her er et gæt, hvis det er parenteser eller anførselstegn passer det +# FEJLRAPPORT +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "ingen afsluttende \"%c\" i %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: manglende kolonseparator" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "\"%s\": kan ikke løsne" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" + +#: builtins/alias.def:131 variables.c:1844 +#, fuzzy, c-format +msgid "`%s': invalid alias name" +msgstr "\"%s\": ugyldigt tastetildelingsnavn" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "linjeredigering ikke slÃ¥et til" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "\"%s\": ugyldigt tastetildelingsnavn" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: kan ikke læse: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "\"%s\": ukendt funktionsnavn" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s er ikke bundet til nogen taster.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s kan kaldes via " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "\"%s\": kan ikke løsne" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "løkketæller" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "kun meningsfuld i en \"for\"-, \"while\"- eller \"until\"-løkke" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Returnerer konteksten af det nuværende underrutinekald.\n" +"\n" +" Uden UDTRYK returneres \"$line $filename\". Med UDTRYK returneres\n" +" \"$line $subroutine $filename\". Den ekstra information\n" +" kan bruges til at give at stakspor.\n" +"\n" +" Værdien af UDTRYK angiver hvor mange kalderammer der skal gÃ¥s tilbage\n" +" fra den nuværende. Toprammen er ramme 0.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer 0 med mindre skallen ikke eksekverer en skalfunktion eller " +"hvis\n" +" UDTRYK er ugyldigt." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME ikke indstillet" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "for mange argumenter" + +#: builtins/cd.def:342 +#, fuzzy +msgid "null directory" +msgstr "ingen anden mappe" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD ikke indstillet" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "linje %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "advarsel: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: brug: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: tilvalg kræver et argument" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: numerisk argument pÃ¥krævet" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: ikke fundet" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: ugyldigt tilvalg" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: ugyldigt tilvalgsnavn" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "\"%s\": ikke et gyldigt identificeringsnavn" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "ugyldigt oktaltal" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "ugyldigt heksadecimalt tal" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "ugyldigt tal" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: ugyldig signalspecifikation" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "\"%s\": ikke en pid eller gyldig job-spec" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: skrivebeskyttet variabel" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s udenfor rækkevidde" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s udenfor rækkevidde" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: intet sÃ¥dant job" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: ingen jobkontrol" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "ingen jobkontrol" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: begrænset" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "begrænset" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: ikke indbygget i skallen" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "skrivefejl: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "fejl ved indstilling af terminalattribut: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "fejl ved indhentning af terminalattribut: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: fejl ved indhentning af nuværende mappe: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: tvetydig job-spec" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: kan ikke fjerne: skrivebeskyttet %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: kan ikke fjerne" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: ugyldigt handlingsnavn" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: ingen fuldførselsspecifikation" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "advarsel: tilvalget -F vil mÃ¥ske ikke virke, som du forventer" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "advarsel: tilvalget -C vil mÃ¥ske ikke virke, som du forventer" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "ikke i gang med at eksekvere fuldførelsesfunktion" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "kan kun bruges i en funktion" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "\"%s\": ugyldigt tastetildelingsnavn" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "kan ikke bruge \"-f\" til at lave funktioner" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: skrivebeskyttet funktion" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: kan ikke destruere arrayvariabel pÃ¥ denne mÃ¥de" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: kan ikke konvertere associativt til indekseret array" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dynamisk indlæsning ikke tilgængelig" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "kan ikke Ã¥bne delt objekt %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "kan ikke finde %s i delt objekt %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: ikke dynamisk indlæst" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: ikke dynamisk indlæst" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: kan ikke slette: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: er en mappe" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: ikke en regulær fil" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: fil er for stor" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: kan ikke eksekvere binær fil" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: kan ikke eksekvere: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "log ud\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "ikke en logind-skal: brug \"exit\"" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Der er stoppede job.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Der er kørende job.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "ingen kommando fundet" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "historikspecifikation" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: kan ikke Ã¥bne midl. fil: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "nuværende" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "job %d startet uden jobkontrol" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ugyldigt tilvalg -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: et argument er pÃ¥krævet til tilvalget -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hashing slÃ¥et fra" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: hash-tabel tom\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "hits\tkommando\n" + +# Jeg antager at det sidste ` er det første af et sæt af anførselstegn og +# det er derfor oversat til " +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Skalkommandoer som matcher nøgleordet \"" +msgstr[1] "Skal-kommandoer som matcher nøgleordene \"" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"ingen hjælpeemner matcher \"%s\". Prøv \"help help\" eller \"man -k %s\" " +"eller \"info %s\"." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: kan ikke Ã¥bne: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Disse skalkommandoer er defineret internt. Skriv \"help\" for at se denne " +"liste.\n" +"Skriv \"help navn\" for at finde ud af mere om kommandoen \"navn\".\n" +"Brug \"info bash\" for at fÃ¥ mere generel information om skallen.\n" +"Brug \"man -k\" eller \"info\" for at finde ud af mere om kommandoer som " +"ikke er \n" +"pÃ¥ listen.\n" +"\n" +"En stjerne (*) ved siden af et navn betyder at kommandoen er slÃ¥et fra.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "kan ikke bruge mere end en af -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "historikposition" + +#: builtins/history.def:340 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: ugyldigt tilvalgsnavn" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: historikudvidelse fejlede" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib fejlede" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "ingen andre tilvalg er tilladt sammen med \"-x\"" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumenter skal være processer eller job-id'er" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Ukendt fejl" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "forventede et udtryk" + +#: builtins/mapfile.def:178 +#, fuzzy, c-format +msgid "%s: not an indexed array" +msgstr "%s: ikke en arrayvariabel" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: ugyldig filbeskrivelsesspecifikation" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: ugyldig filbeskrivelse: %s" + +# -c Specify the number of lines read between each call to callback. +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: ugyldigt antal linjer" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: ugyldig array-startindeks" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: ugyldigt tilbagekaldskvantum" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "tomt arrayvariabelnavn" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "understøttelse af arrayvariabel pÃ¥krævet" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "\"%s\": manglende formattegn" + +#: builtins/printf.def:474 +#, fuzzy, c-format +msgid "`%c': invalid time format specification" +msgstr "%s: ugyldig specifikation af tidsudløb" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "\"%c\": ugyldigt formattegn" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "advarsel: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "manglende heksciffer for \\x" + +#: builtins/printf.def:900 +#, fuzzy, c-format +msgid "missing unicode digit for \\%c" +msgstr "manglende heksciffer for \\x" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "ingen anden mappe" + +#: builtins/pushd.def:360 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: ugyldigt grænseargument" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "mappestak tom" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "mappestakindeks" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Viser listen af huskede mapper. Mapper tilføjes til listen med\n" +" \"pushd\"-kommandoen. Du kan komme tilbage i listen med \"popd\"-\n" +" kommandoen.\n" +"\n" +" Valgmuligheder:\n" +" -c\tryd mappestakken ved at slette alle elementerne\n" +" -l\tvis ikke \"tildepræfiksede\" versioner af mapper relativt\n" +" til din hjemmemappe\n" +" -p\tvis mappestakken med et element per linje\n" +" -v\tvis mappestakken med et element per linje, præfikset med\n" +" med dets position i stakken\n" +" \n" +" Argumenter:\n" +" +N\tViser det N'te element, talt fra venstre af og vist mappevis\n" +" nÃ¥r der ikke angives nogle valgmuligheder, startende fra 0.\n" +" \n" +" -N\tViser det N'te element, talt fra venstre af og vist mappevis\n" +" nÃ¥r der ikke angives nogle valgmuligheder, startende fra 0." + +# Jeg tror der er en fejl i den engelske, fejlrapport +#: builtins/pushd.def:723 +#, fuzzy +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Tilføjer en mappe til toppen af mappestakken, eller roterer stakken\n" +" sÃ¥ledes at den nye top bliver den aktuelle mappe. Uden\n" +" argumenter ombyttes de to øverste mapper.\n" +" \n" +" Valgmuligheder:\n" +" -n\tUndertrykker det normale mappeskift ved tilføjelse\n" +" \taf mapper til stakken, sÃ¥ledes at kun stakken manipuleres.\n" +" \n" +" Argumenter:\n" +" +N\tRoterer stakken sÃ¥ledes at det N'te element (talt\n" +" \tfra venstre af listen som vist af \"dirs\", startende med nul)\n" +" \tbliver placeret i toppen.\n" +" \n" +" -N\tRoterer stakken sÃ¥ledes at det N'te element (talt\n" +" \tfra højre af listen som vist af \"dirs\", startende med nul)\n" +" \tbliver placeret i toppen.\n" +" \n" +" dir\tTilføjer DIR til toppen af mappestakken, sÃ¥ledes at den\n" +" \tbliver den nye aktive mappe.\n" +" \n" +"Den indbyggede funktion \"dirs\" viser mappestakken." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Fjerner en mappe fra toppen af mappestakken. Uden argumenter fjernes\n" +" den øverste mappe fra stakken og der skiftes til den nye øverste mappe.\n" +" \n" +" Valgmuligheder:\n" +" -n\tUndertrykker det normale mappeskift ved fjernelse\n" +" \taf mapper fra stakken, sÃ¥ledes at kun stakken manipuleres.\n" +" \n" +" Argumenter:\n" +" +N\tFjerner det N'te element, talt fra venstre af listen\n" +" \tsom vist af \"dirs\", startende med nul. F.eks: vil \"popd +0\"\n" +" \tfjerne det øverste argument og \"popd +1\" det andet.\n" +" \n" +" -N\tFjerner det N'te element, talt fra højre af listen\n" +" \tsom vist af \"dirs\", startende med nul. F.eks: vil \"popd -0\"\n" +" \tfjerne det sidste argument og \"popd -1\" det andetsidste.\n" +" \n" +"Den indbyggede funktion \"dirs\" viser mappestakken." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: ugyldig specifikation af tidsudløb" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "læsefejl: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "kan kun udføre \"return\" fra en funktion eller indlæst skript" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "kan ikke fjerne en funktion og en variabel samtidig" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: ikke en arrayvariabel" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: ikke en funktion" + +#: builtins/setattr.def:194 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: kan ikke fjerne" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "skifttæller" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "kan ikke indstille og fjerne skaltilvalg samtidig" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: ugyldigt navn for skaltilvalg" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "filnavnsargument pÃ¥krævet" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: fil ikke fundet" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "kan ikke sætte i hvile" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "kan ikke sætte en logindskal i hvile" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s er aliasset til \"%s\"\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s er et skalnøgleord\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s er en funktion\n" + +#: builtins/type.def:299 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s er indbygget i skallen\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s er indbygget i skallen\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s er %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s er hashet (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: ugyldigt grænseargument" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "\"%c\": ugyldig kommando" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: kan ikke indhente grænse: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "grænse" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: kan ikke modificere grænse: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "oktalt tal" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "\"%c\": ugyldig symbolsk tilstandsoperator" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "\"%c\": ugyldigt symbolsk tilstandstegn" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " linje " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "sidste kommando: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Afbryder..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:462 +msgid "unknown command error" +msgstr "ukendt kommandofejl" + +#: error.c:463 +msgid "bad command type" +msgstr "ugyldig kommandotype" + +#: error.c:464 +msgid "bad connector" +msgstr "dÃ¥rligt mellemled" + +#: error.c:465 +msgid "bad jump" +msgstr "dÃ¥rligt hop" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: ubundet variabel" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\atidsudløb mens der ventedes pÃ¥ input: auto-logud\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "kan ikke videresende standardinput fra /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: \"%c\": ugyldigt formateringstegn" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "datakanalfejl (pipe error)" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: begrænset: kan ikke specificere \"/\" i kommandonavne" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: kommando ikke fundet" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: dÃ¥rlig fortolker" + +#: execute_cmd.c:5891 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: kan ikke eksekvere binær fil" + +#: execute_cmd.c:5977 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s er indbygget i skallen\n" + +# 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 out†+# put 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 pro†+# vide input for list. If the <(list) form is used, the file passed as +# an argument should be read to obtain the output of list. +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "kan ikke duplikere fd %d til fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "grænse for rekursion af udtryk overskredet" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "underløb i rekursionsstak" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "syntaksfejl i udtryk" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "forsøgte tildeling til ikke-variabel" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "syntaksfejl i udtryk" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "division med 0" + +# denne her streng er dÃ¥rlig pÃ¥ sÃ¥ mange mÃ¥der at det fatter man slet ikke. Skal bug oversætter og hvad er expassign. Jeg laver et bud og har fejlmeldt den +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "bug: dÃ¥rligt expassign-udtryk" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "\":\" forventet for betingede udtryk" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "eksponent mindre end 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "identifikator forventet efter præforøgelse eller -formindskelse" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "manglende \")\"" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "syntaksfejl: operand forventet" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntaksfejl: ugyldig aritmetisk operator" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (fejlelement er \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "ugyldig aritmetisk grundtal" + +# -c Specify the number of lines read between each call to callback. +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: ugyldigt antal linjer" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "værdi for stor til grundtal" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: fejl i udtryk\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: kan ikke tilgÃ¥ overliggende mapper" + +# Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "kan ikke allokere ny fildeskriptor til bash-input fra fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: buffer eksisterer allerede til ny fd %d" + +# ?? +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp-datakanal (pipe)" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "forgrenet pid %d figurerer i kørende job %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "sletter stoppet job %d med procesgruppe %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) markeret som stadig i live" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: ingen process med det pid" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Færdig" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Stoppet" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Stoppet(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Kører" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Færdig(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Afslut %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Ukendt status" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(smed kerne) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "underproces setpgid (%ld til %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld er ikke en underproces af denne skal" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Ingen optegnelse af proces %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: job %d er stoppet" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: intet sÃ¥dant job" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: job er afbrudt" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: job %d er allerede i baggrunden" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: linje %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (smed kerne)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd nu: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp fejlede" + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: linjedisciplin" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: linjedisciplin" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "kan ikke indstille terminal-procesgruppe (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "ingen jobkontrol i denne skal" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: forfejlet hævdelse: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: hævdelse forkludret\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "ukendt" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: blok i fri liste tværet ud" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: kaldt med blokargument som allerede er fri" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: kaldt med ikke-allokeret blokargument" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: underløb detekteret, mh_nbytes uden for interval" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: underløb detekteret, mh_nbytes uden for interval" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: størrelse pÃ¥ start- og slut-bid afviger" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: kaldt med ikke-allokeret blokargument" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: underløb detekteret, mh_nbytes uden for interval" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: underløb detekteret, mh_nbytes uden for interval" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: størrelse pÃ¥ start- og slut-bid afviger" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: alloc-tabel er fyldt med FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p allerede i tabel som allokeret?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p allerede i tabel som fri?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "ugyldig base" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: vært ukendt" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: ugyldig tjeneste" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: dÃ¥rlig specifikation for netværkssti" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "netværksoperation ikke understøttet" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "" + +#: locale.c:292 +#, fuzzy, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes" + +#: locale.c:294 +#, fuzzy, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Du har post i $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Du har ny post i $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Posten i %s er blevet læst\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "syntaksfejl: aritmetisk udtryk pÃ¥krævet" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "syntaksfejl: \";\" uventet" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntaksfejl: \"((%s))\"" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: dÃ¥rlig instruktionstype %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"here-document ved linje %d er adskilt af slut-pÃ¥-linje (ønskede \"%s\")" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_direction: videresendelsesinstruktion \"%d\" uden for interval" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "uventet EOF mens der ledtes efter samhørende \"%c\"" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "uventet EOF mens der ledtes efter \"]]\"" + +# word A sequence of characters considered as a single unit by the +# shell. Also known as a token. +# Jeg har valgt udtryk +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntaksfejl i betingelsesudtryk: uventet element \"%s\"" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "syntaksfejl i betingelsesudtryk" + +# word A sequence of characters considered as a single unit by the +# shell. Also known as a token. +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "uventet element \"%s\", forventede \")\"" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "forventede \")\"" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "uventet argument \"%s\" til unær betingelsesoperator" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "uventet argument til unær betingelsesoperator" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "uventet udtryk \"%s\", ventede binær betingelsesoperator" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "ventedet binær betingelsesoperator" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "uventet argument \"%s\" til binær betingelsesoperator" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "uventet argument til binær betingelsesoperator" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "uventet udtryk \"%c\" i betingelseskommando" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "uventet udtryk \"%s\" i betingelseskommando" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "uventet udtryk \"%d\" i betingelseskommando" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntaksfejl nær uventet udtryk \"%s\"" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntaksfejl nær \"%s\"" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "syntaksfejl: uventet slutning pÃ¥ fil" + +#: parse.y:6365 +msgid "syntax error" +msgstr "syntaksfejl" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Brug \"%s\" for at forlade skallen.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "uventet EOF mens der ledtes efter samhørende \")\"" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: funktion \"%s\" ikke fundet" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: dÃ¥rligt mellemled \"%d\"" + +#: print_cmd.c:375 +#, fuzzy, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "%d: ugyldig filbeskrivelse: %s" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: \"%c\": ugyldigt formateringstegn" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "fil-deskriptor uden for interval" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: tvetydig videresendelse" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: kan ikke overskrive eksisterende fil" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: begrænset: kan ikke videresende output" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "kan ikke danne midlertidig fil til here-dokument: %s" + +#: redir.c:222 +#, fuzzy, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: kan ikke tildele liste til arrayelementer" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/vært/port ikke understøttet uden netværk" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "videresendelsesfejl: kan ikke duplikere fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "kan ikke finde /tmp, opret venligst mappen!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp skal være et gyldigt mappenavn" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: ugyldigt tilvalg" + +# Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn +#: shell.c:1319 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" + +# Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn +#: shell.c:1330 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: er en mappe" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Jeg har ikke noget navn!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, version %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Brug:\t%s [langt GNU-tilvalg] [tilvalg] ...\n" +"\t%s [langt GNU-tilvalg] [tilvalg] skript-fil ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Lange GNU-tilvalg:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Skal-tilvalg:\n" + +#: shell.c:2043 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD eller -c kommando eller -O shopt_option\t\t(kun programkald)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\tTilvalg -%s eller -o\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Skriv \"%s -c \"help set\"\" for at fÃ¥ mere information om skaltilvalg.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Skriv \"%s -c help\" for at fÃ¥ mere information om indbyggede " +"skalkommandoer.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Brug kommandoen \"bashbug\" til at rapportere fejl.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: ugyldig handling" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Falsk signal" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Læg pÃ¥" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Afbryd" + +#: siglist.c:58 +msgid "Quit" +msgstr "Afslut" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Ugyldig instruktion" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT-spor/fang" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ABORT-instruktion" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT-instruktion" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Kommatalsundtagelse" + +#: siglist.c:86 +msgid "Killed" +msgstr "SlÃ¥et ihjel" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Bus-fejl" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Segmenteringsfejl" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Ugyldigt systemkald" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Ødelagt datakanal" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Alarmklokke" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Afsluttet" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Presserende IO-forhold" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Stoppet (signal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Fortsæt" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Død eller stop af underproces" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Stoppet (tty-input)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Stoppet (tty-output)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O klar" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU-grænse" + +#: siglist.c:154 +msgid "File limit" +msgstr "Filgrænse" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarm (virtuel)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarm (profil)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Vindue ændret" + +# I fejlrapport for at fÃ¥ meningen +#: siglist.c:170 +msgid "Record lock" +msgstr "Optag lÃ¥s" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Brugersignal 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Brugersignal 2" + +# Fejlrapport +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT-inputdata afventer" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "strømsvigt nært forestÃ¥ende" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "systemnedbrud nært forestÃ¥ende" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "flyt proces til en anden CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "programmeringsfejl" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT-skærmtilstand tildelt" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT-skærmtilstand trukket tilbage" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT-lydsekvens er afsluttet" + +#: siglist.c:214 +msgid "Information request" +msgstr "Informationsforespørgsel" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Ukendt signal #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "dÃ¥rlig udskiftning: ingen lukkende \"%s\" i %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: kan ikke tildele liste til arrayelementer" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "kan ikke lave datakanal (pipe) til procesudskiftning" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "kan ikke danne underproces til procesudskiftning" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "kan ikke Ã¥bne navngiven datakanal (pipe) %s til læsning" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "kan ikke Ã¥bne navngiven datakanal (pipe) %s til skrivning" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "kan ikke duplikere navngiven datakanal (pipe) %s som %d" + +#: subst.c:6213 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "dÃ¥rlig udskiftning: ingen lukkende \"`\" i %s" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "kan ikke danne datakanal (pipe) til kommandoudskiftning" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "kan ikke danne underproces til kommandoudskiftning" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: kan ikke duplikere datakanal (pipe) som fd 1" + +#: subst.c:6883 subst.c:9952 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%d: ugyldig filbeskrivelse: %s" + +# -c Specify the number of lines read between each call to callback. +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: ugyldigt antal linjer" + +#: subst.c:7013 subst.c:7177 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "\"%s\": ugyldigt tastetildelingsnavn" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter null eller ikke indstillet" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter null eller ikke indstillet" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: understreng-udtryk < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: dÃ¥rlig udskiftning" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: kan ikke tildele pÃ¥ denne mÃ¥de" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "dÃ¥rlig udskiftning: ingen lukkende \"`\" i %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "intet match: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "argument forventet" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: heltalsudtryk forventet" + +#: test.c:265 +msgid "`)' expected" +msgstr "\")\" forventet" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "\")\" forventet, fandt %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: binær operator forventet" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: unær operator forventet" + +#: test.c:881 +msgid "missing `]'" +msgstr "manglende \"]\"" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "syntaksfejl: \";\" uventet" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "ugyldigt signalnummer" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: dÃ¥rlig værdi i trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: signalhÃ¥ndtering er SIG_DFL, gensender %d (%s) til mig " +"selv" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: ugyldigt signal %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "fejl under importering af funktionsdefinition for \"%s\"" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "skalniveau (%d) for højt, genindstiller til 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: ingen funktionskontekst ved nuværende navneomrÃ¥de" + +#: variables.c:2693 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: kan ikke tildele liste til arrayelementer" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: ingen funktionskontekst ved nuværende navneomrÃ¥de" + +#: variables.c:4771 +#, fuzzy, c-format +msgid "%s has null exportstr" +msgstr "%s: parameter null eller ikke indstillet" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "ugyldigt tegn %d i exportstr for %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "intet \"=\" i exportstr for %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: hoved af shell_variables er ikke en funktionskontekst" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: ingen global_variables-kontekst" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: hoved af shell_variables er ikke et midlertidigt miljønavnerum" + +#: variables.c:6387 +#, fuzzy, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: kan ikke Ã¥bne: %s" + +#: variables.c:6392 +#, fuzzy, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%d: ugyldig filbeskrivelse: %s" + +#: variables.c:6437 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s udenfor rækkevidde" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licens GPLv3+: GNU GPL version 3 eller senere \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, version %s (%s)\n" + +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." +msgstr "Dette er fri software; du kan frit ændre eller redistribuere det.\n" + +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Der er INGEN GARANTI i det omfang loven tillader.\n" + +#: xmalloc.c:93 +#, fuzzy, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: kan ikke allokere %lu bytes (%lu bytes allokeret)" + +#: xmalloc.c:95 +#, fuzzy, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "xmalloc: kan ikke allokere %lu bytes" + +#: xmalloc.c:165 +#, fuzzy, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %s:%d: kan ikke allokere %lu bytes (%lu bytes allokeret)" + +#: xmalloc.c:167 +#, fuzzy, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: kan ikke allokere %lu bytes" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [navn[=værdi] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] navn [navn ...]" + +#: builtins.c:53 +#, fuzzy +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m tastetildeling] [-f filnavn] [-q navn] [-u navn] [-r " +"nøglesek] [-x nøglesek:skalkommando] [nøglesek:readline-funktion eller " +"readline-kommando]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:66 +#, fuzzy +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|-P] [mappe]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] kommando [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFilrtux] [-p] [navn[=værdi] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFilrtux] [-p] navn[=værdi] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [tilvalg] navn[=værdi] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f filnavn] [navn ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts tilvalgsstreng navn [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a navn] [kommando [argumenter ...]] [videresendelse ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +# pat=rep betyder højst sandsynligt mønster=regulært udtryk, men jeg kan ikke finde pÃ¥ nogen 3-bogstavsudtryk som jeg man bruge for de to ting, som jeg synes er let forstÃ¥elige derfor har jeg ladet dem stÃ¥ +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e ename] [-lnr] [første] [sidste] eller fc -s [pat=rep] [kommando]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [job_spec ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p stinavn] [-dt] [navn ...]" + +#: builtins.c:119 +#, fuzzy +msgid "help [-dms] [pattern ...]" +msgstr "help [-ds] [mønster ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d forskydning] [n] eller history -anrw [filnavn] eller " +"history -ps arg [arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobspec ...] eller jobs -x kommando [arger]" + +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobspec ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... eller kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +#, fuzzy +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a array] [-d adskil] [-i tekst] [-n ntegn] [-p prompt] [-t " +"tidsgrænse] [-u fd] [navn ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +#, fuzzy +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o tilvalgsnavn] [arg ...]" + +#: builtins.c:144 +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [navn ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [navn[=værdi] ...] eller export -p" + +#: builtins.c:148 +#, fuzzy +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-af] [navn[=værdi] ...] eller readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source filnavn [argumenter]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". filnavn [argumenter]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [udtryk]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signal_spec ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] navn [navn ...]" + +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [grænse]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [tilstand]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [id]" + +#: builtins.c:181 +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [pid]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAVN [in ORD ... ] ; do KOMMANDOER; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( udtryk1; udtryk2; udtryk3 )); do KOMMANDOER; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAVN [in ORD ... ;] do KOMMANDOER; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] datakanal" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case ORD in [MØNSTER [| MØNSTER]...) KOMMANDOER ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if KOMMANDOER; then KOMMANDOER; [ elif KOMMANDOER; then KOMMANDOER; ]... " +"[ else KOMMANDOER; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while KOMMANDOER; do KOMMANDOER; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until KOMMANDOER; do KOMMANDOER; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAVN] kommando [videresendelser]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function navn { KOMMANDOER ; } eller navn () { KOMMANDOER ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ KOMMANDOER ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( udtryk ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ udtryk ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Navn og betydning af nogle skalvariable" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | mappe]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [indstnavn ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [argumenter]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-o valgmuligheder] [-A handling] [-G " +"globmønst] [-W ordliste] [-F funktion] [-C kommando] [-X filtermønst] [-P " +"præfiks] [-S suffiks] [navn ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o valgmuligheder] [-A handling] [-G globmønst] [-" +"W ordliste] [-F funktion] [-C kommando] [-X filtermønst] [-P præfiks] [-S " +"suffiks] [ord]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o valgmulighed] [navn ...]" + +#: builtins.c:242 +#, fuzzy +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-n antal] [-O oprindelse] [-s antal] [-t] [-u fd] [-C tilbagekald] " +"[-c kvantum] [array]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n antal] [-O oprindelse] [-s antal] [-t] [-u fd] [-C " +"tilbagekald] [-c kvantum] [array]" + +#: builtins.c:256 +#, fuzzy +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definer eller vis aliasser.\n" +" \n" +" Uden argumenter vil \"alias\" udskrive en liste af aliasser pÃ¥ den\n" +" genanvendelige form alias NAVN=VÆRDI til standardoutput.\n" +" \n" +" Ellers vil der blive defineret et alias for hvert NAVN, som der er an-\n" +" givet en VÆRDI til. Et efterfølgende mellemrum i VÆRDI vil medføre,\n" +" at det næste ord vil blive kontrolleret for alias-udskiftning, nÃ¥r\n" +" aliasset udvides.\n" +" \n" +" Tilvalg:\n" +" -p\tUdskriver alle definerede aliasser i et genanvendelig format\n" +" \n" +" Afslutningsstatus:\n" +" alias returnerer sand med mindre der gives et NAVN som der ikke er\n" +" defineret noget alias for." + +#: builtins.c:278 +#, fuzzy +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Fjern hvert NAVN fra listen af definerede aliasser.\n" +" \n" +" Tilvalg:\n" +" -a\tfjern alle aliasdefinitioner.\n" +" \n" +" Returner succes med mindre et NAVN ikke er et eksisterende alias." + +#: builtins.c:291 +#, fuzzy +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Indstil Readline-tastebindinger og variable.\n" +"\n" +" Bind en tastsekvens til en Readline-funktion eller en makro, eller " +"indstil\n" +" en Readline-variabel. Syntaksen uden tilvalg er ækvivalent til den som\n" +" bruges i ~/.inputrc, men skal gives som et enkelt argument:\n" +" f.eks. bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Tilvalg:\n" +" -m tastetildel Brug TASTETILDEL som tastetildeling for hele \n" +" varigheden af denne kommando. Accepterede " +"tastetildel-\n" +" ingsnavne er emacs, emacs-standard, emacs-meta,\n" +" emacs-ctlx, vi, vi-move, vi-command og vi-insert.\n" +" -l Vis liste af funktioner.\n" +" -P Vis liste af funktionsnavne og bindinger.\n" +" -p Vis liste af funktionsnavne og bindinger pÃ¥ en " +"form\n" +" som kan genbruges som input.\n" +" -S Vis tastesekvenser som udfører makroer og deres " +"værdier\n" +" -s Vis tastesekvenser som udfører makroer og deres " +"værdier\n" +" pÃ¥ en form som kan genbruges som inddata.<\n" +" -V Vis variabelnavne og -værdier\n" +" -v Vis variabelnavne og -værdier pÃ¥ en form som kan \n" +" genbruges som inddata.\n" +" -q funktionsnavn Forespørg hvilke taster der udfører den navngivne \n" +" funktion.\n" +" -u funktionsnavn Løsn alle taster som er bundet til den navngivne\n" +" funktion.\n" +" -r tastesekv Fjern bindingen for TASTESEKV.\n" +" -f filnavn Indlæs tastetildeling fra FILNAVN.\n" +" -x tastesekv:skalkommando\tMedfører at SKALKOMMANDO udføres nÃ¥r \n" +" \t\t\t\tTASTESEKV trykkes.\n" +" \n" +" Afslutningsstatus:\n" +" bind returnerer 0 med mindre et ugenkendt tilvalg angives, eller hvis " +"der\n" +" opstÃ¥r en fejl." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Afslut for-, while- eller until-løkker.\n" +" \n" +" Afslut en FOR, WHILE eller UNTIL-løkke. Hvis N er angivet, afbrydes N\n" +" indlejrede løkker.\n" +" \n" +" Afslutningsstatus:\n" +" Afslutningsstatussen er 0 med mindre N ikke er større end eller lig med " +"1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Genoptag for-, while- eller until-løkke.\n" +" \n" +" Genoptager den næste iteration af den omsluttende FOR-, WHILE- eller \n" +" UNTIL-løkke. Hvis N er angivet, genoptages fra den N'te indesluttende " +"løkke.\n" +" \n" +" Afslutningsstatus:\n" +" Afslutningsstatussen er 0 med mindre N ikke er større end eller lig med " +"1." + +#: builtins.c:354 +#, fuzzy +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Eksekver en skal-indbygget funktion.\n" +" \n" +" Eksekver en SKAL-INDBYGGET med argumenterne ARGer uden at udføre " +"kommando-\n" +" opslag. Dette er nyttigt, hvis du ønsker et reimplementere en skal-\n" +" indbygget som en skalfunktion, men har brug for at eksekvere den " +"indbyggede\n" +" inden i funktionen.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer afslutningsstatussen for den SKAL-INDBYGGEDE, eller falsk " +"hvis\n" +" SKAL-INDBYGGET ikke er en skal-indbygget.." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Returnerer konteksten af det nuværende underrutinekald.\n" +"\n" +" Uden UDTRYK returneres \"$line $filename\". Med UDTRYK returneres\n" +" \"$line $subroutine $filename\". Den ekstra information\n" +" kan bruges til at give at stakspor.\n" +"\n" +" Værdien af UDTRYK angiver hvor mange kalderammer der skal gÃ¥s tilbage\n" +" fra den nuværende. Toprammen er ramme 0.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer 0 med mindre skallen ikke eksekverer en skalfunktion eller " +"hvis\n" +" UDTRYK er ugyldigt." + +#: builtins.c:387 +#, fuzzy +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Ændrer skallens aktuelle mappe.\n" +" \n" +" Ændrer den nuværende mappe til MAPPE. Variablen HOME er standardmappen.\n" +" Variablen CDPATH definerer søgestien for mappen som indeholder DIR.\n" +" \n" +" Variablen CDPATH definerer søgestien for den mappe som indeholder " +"MAPPE.\n" +" Alternative mappenavne i CDPATH er separeret af et kolon (:). Et\n" +" null-mappenavn er det samme som den nuværende mappe. Hvis MAPPE " +"begynder\n" +" med en skrÃ¥streg (/) bruges CDPATH ikke.\n" +"\n" +" Hvis mappen ikke findes og skalvariablen \"cdabel_vars\" er indstillet,\n" +" vil det blive antaget at ordet er et variabelnavn. Hvis variablen har " +"en\n" +" værdi, sÃ¥ bruges denne som MAPPE.\n" +"\n" +" Tilvalg:\n" +" -L\tgennemtving at symbolske lænker følges\n" +" -P\tbrug den fysiske mappestruktur uden at følge symbolske lænker\n" +" \n" +" Som standard følges symbolske lænker, som om \"-L\" var valgt.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer 0 hvis mappen ændres, ellers noget forskellig fra 0." + +#: builtins.c:425 +#, fuzzy +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Udskriver navnet for den aktuelle mappe.\n" +" \n" +" Tilvalg:\n" +" -L\tudskriv værdien af $PWD hvis den indeholder den aktuelle mappe\n" +" -P\tudskriv den fysiske mappe uden nogen symbolske lænker\n" +" \n" +" Som standard vil \"pwd\" opføre sig som om \"-L\" var angivet.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer 0 med mindre der er angivet et ugyldigt tilvalg, eller hvis " +"den\n" +" aktuelle mappe ikke kan læses." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Null-kommando.\n" +" \n" +" Ingen effekt, kommandoen gør intet.\n" +" \n" +" Afslutningsstatus:\n" +" Afsluttes altid succesfuldt." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Returnerer et succesfuldt resultat.\n" +" \n" +" Afslutningsstatus:\n" +" Afsluttes altid succesfuldt." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Returnerer et mislykket resultat.\n" +" \n" +" Afslutningsstatus:\n" +" Afsluttes altid mislykket." + +#: builtins.c:471 +#, fuzzy +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Eksekverer en simpel kommando eller viser information om kommandoer.\n" +" \n" +" Kører KOMMANDO med ARGer med undertrykkelse af skalfunktionsopslag, " +"eller\n" +" vis information om de angivne KOMMANDOER. Kan bruges til at køre " +"kommandoer\n" +" fra disken, nÃ¥r en funktion af samme navn eksisterer.\n" +" \n" +" Tilvalg:\n" +" -p\tbrug en standardværdi for PATH som med garanti vil finde alle\n" +" \tstandardværktøjerne\n" +" -v\tudskriv en beskrivelse af KOMMANDO, i stil med den skal-\n" +" \tindbyggede \"type\"\n" +" -V\tUdskriv en større beskrivelse af hver kommando\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer afslutningsstatus fra KOMMANDO eller mislykket hvis KOMMANDO\n" +" ikke findes." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Indstil variabelværdier og -attributter\n" +" \n" +" Erklær variable og giv dem attributter. Hvis der ikke angives nogen " +"NAVNE,\n" +" sÃ¥ angives attributter og værdier for alle variable.\n" +" \n" +" Tilvalg:\n" +" -f\tbegræns handling eller visning til funktionsnavne og\n" +" \tdefinitioner\n" +" -F\tbegræns visning til funktionsnavne (inklusive linjenummer og\n" +" \tkildekodefil under fejlsøgning)\n" +" -p\tvis attributter og værdi for hvert NAVN\n" +" \n" +" Tilvalg som indstiller attributter:\n" +" -a\tfor at gøre NAVNE til indekserede arrays (hvis understøttet)\n" +" -A\tfor at gøre NAVNE til associerede arrays (hvis understøttet)\n" +" -i\tfor at give NAVNE \"integer\"-attributten\n" +" -l\tkonverter NAVNE til smÃ¥ bogstaver ved tildeling\n" +" -t\tfor at give NAVNE \"trace\"-attributten\n" +" -u\tkonverter NAVNE til store bogstaver ved tildeling\n" +" -x\tfor at eksportere NAVNE\n" +" \n" +" Brug \"+\" i stedet for \"-\" for at slÃ¥ den pÃ¥gældende attribut fra.\n" +" \n" +" Der vil blive udført en aritmetisk evaluering (se \"let\"-kommandoen) " +"af \n" +" variable med integer-attributten, nÃ¥r de tildeles en værdi.\n" +" \n" +" NÃ¥r de bliver brugt i en funktion, kan \"declare\" bruges til at gøre " +"NAVNE\n" +" lokale, ligesom med \"local\"-kommandoen.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg, eller " +"hvis\n" +" der opstÃ¥r en fejl." + +#: builtins.c:532 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Indstil variabelværdier og -attributter.\n" +" \n" +" Forældet. Læs i \"help declare\"." + +#: builtins.c:540 +#, fuzzy +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Definer lokale variable.\n" +" \n" +" Opret en lokal variabel med navnet NAVN og tildel den en værdi. TILVALG " +"kan\n" +" være alle tilvalg som accepteres af \"declare\".\n" +" \n" +" Lokale variable kan kun bruges inden i en funktion; de er kun synlige, " +"for\n" +" den funktion de er defineret i og dens underfunktioner.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg, hvis der\n" +" opstÃ¥r en fejl, eller hvis skallen ikke eksekverer en funktion." + +#: builtins.c:557 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Skriv argumenter til standardoutput.\n" +" \n" +" Vis ARGer fra standardoutput, efterfulgt af et nylinjetegn.\n" +" \n" +" Tilvalg:\n" +" -n vedhæft ikke nylinjetegn\n" +" -e aktiver fortolkning af de følgende undvigesekvenser med\n" +" omvendt skrÃ¥streg\n" +" -E\tundertryk eksplicit fortolkningen af undvigesekvenser med\n" +" \tomvendt skrÃ¥streg\n" +"\n" +" \"echo\" fortolker følgende undvigesekvenser med omvendt skrÃ¥streg\n" +" \\a\talarm (klokke)\n" +" \\b\ttilbageryk (backspace)\n" +" \\c\tundertryk yderligere output\n" +" \\e\tescape-tegn\n" +" \\f\tsideskift (form feed)\n" +" \\n\tny linje\n" +" \\r\tlinjeskift (carrige return)\n" +" \\t\thorisontalt tab\n" +" \\v\tvertikalt tab\n" +" \\\\\tomvendt skrÃ¥streg\n" +" \\0nnn\tdet tegn hvis ASCII-kode er NNN (oktalt). NNN kan have 0-3\n" +" \toktale cifre\n" +" \\xHH\tdet 8 bit tegn hvis værdi er HH (heksadecimalt). HH kan have\n" +" \tet eller to heksadecimale cifre\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der opstÃ¥r en skrivefejl." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Skriv argumenter til standardoutput.\n" +" \n" +" Vis ARGer til standard output, efterfulgt af et nylinjetegn.\n" +" \n" +" Tilvalg:\n" +" -n\tvedhæft ikke et nylinjetegn\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der opstÃ¥r en skrivefejl." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Aktiver og deaktiver skal-indbyggede.\n" +" \n" +" Aktiverer og deaktiverer indbyggede skalkommandoer. Deaktivering " +"tillader\n" +" dig at udføre diskkommandoer, som har det sammen navn som en skal-" +"indbygget\n" +" uden at bruge et fuldt stinavn.\n" +" \n" +" Tilvalg:\n" +" -a\tudskriver en liste over indbyggede, uanset om de er slÃ¥et til\n" +" -n\tdeaktiver hvert NAVN eller vis en liste af deaktiverede funk-\n" +" \ttioner\n" +" -p\tudskriv en liste over indbyggede i et genanvendeligt format\n" +" -s\tudskriv kun navne for \"specielle\" Posix-indbyggede\n" +" \n" +" Tilvalg som kontrollerer dynamisk indlæsning:\n" +" -f\tIndlæs indbygget NAVN fra det delte objekt FILNAVN\n" +" -d\tFjern en indbygget indlæst med -f\n" +" \n" +" Uden tilvalg bliver hvert NAVN aktiveret. \n" +" \n" +" Skriv \"enable -n test\" for at bruge den \"test\" som findes i $PATH, i " +"stedet\n" +" for den indbyggede version.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre NAVN ikke er en skal-indbygget eller hvis\n" +" der opstÃ¥r en fejl." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Eksekver argumenter som en skalkommando.\n" +" \n" +" Kombinerer ARGer til en enkelt streng, brug resultatet som input til " +"skallen\n" +" og udfør den resulterende kommando.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer kommandoens afslutningsstatus eller succes hvis kommandoen " +"er\n" +" null." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Fortolkning af tilvalgsargumenter\n" +" \n" +" Getopts bruges af skalprocedurer til at tolke positionsparametre og\n" +" tilvalg.\n" +" \n" +" OPTSTRING indeholder de tilvalg, som skal genkendes. Hvis et bogstav\n" +" følges af et kolon, forventes det at tilvalget har et argument, som\n" +" skal adskilles fra tilvalget med et mellemrum.\n" +" \n" +" Hver gang getopts kaldes, vil den placere det næste tilvalg i skal-\n" +" variablen $name, og initialisere $name, hvis den ikke eksisterer, og\n" +" putte indekset for det næste argument, som skal behandles, ind i\n" +" skalvariablen OPTIND. OPTIND initialiseres til 1 hver gang skallen\n" +" eller et skalskript kaldes. Hvis tilvalget kræver et argument, vil\n" +" getopts placere argumentet i skalvariablen OPTARG.\n" +" \n" +" getopts rapporterer fejl pÃ¥ en af to forskellige mÃ¥der. Hvis det\n" +" første tegn i OPTSTRENG er et kolon, vil getopts bruge stille fejl-\n" +" rapportering. I denne tilstand vil fejlbeskeder ikke blive\n" +" udskrevet. Hvis der angives et ugyldigt tilvalg, vil getopts placere\n" +" tilvalgstegnet i OPTARG. Hvis et pÃ¥krævet argument ikke bliver\n" +" fundet, vil getopts placere et \":\" i NAVN og sætte OPTARG til det\n" +" fundne tilvalgstegn. Hvis getopts ikke er i stille tilstand og der\n" +" angives et ugyldigt tilvalg, vil getopts placere \"?\" i NAVN og\n" +" fjerne (unset) OPTARG. Hvis et pÃ¥krævet argument ikke findes, vil\n" +" der blive placeret et \"?\" i NAVN og OPTARG vil blive fjernet\n" +" (unset) og en diagnosebesked vil blive udskrevet.\n" +" \n" +" Hvis skalvariablen OPTERR har værdien 0, vil udskrivningen af fejl-\n" +" beskeder blive slÃ¥et fra i getopts, ogsÃ¥ selv om det første tegn i\n" +" OPTSTRING ikke er et kolon. OPTERR har værdien 1 som standard.\n" +" \n" +" Normalt vil getopts tolke de positionelle parametre ($0 - $9), men\n" +" hvis der angives flere argumenter end dette, vil de blive tolket i\n" +" stedet for.\n" +" \n" +" Afslutningsstatus\n" +" Returnerer succes hvis et tilvalg findes, fejler hvis afslutningen\n" +" af tilvalgene nÃ¥s eller hvis der opstÃ¥r en fejl." + +#: builtins.c:694 +#, fuzzy +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Erstat skallen med den angivne kommando.\n" +" \n" +" Eksekver KOMMANDO og erstat derved skallen med det angivne program.\n" +" ARGUMENTER bliver argumenter til KOMMANDO. Hvis KOMMANDO ikke angives " +"vil\n" +" alle omdirigeringer træde i kraft i den aktuelle skal.\n" +" \n" +" Tilvalg:\n" +" -a\tnavn\tangiv NAVN som det nulte argument til KOMMANDO\n" +" -c\t\teksekver KOMMANDO i et tomt miljø\n" +" -l\t\tbrug en bindestreg som det nulte argument til KOMMANDO\n" +" \n" +" Hvis kommandoen ikke kan eksekveres, vil ikke-interaktive skaller " +"afsluttes,\n" +" med mindre skal-tilvalget \"execfail\" angives\n" +" \n" +" Afslutningsstatus:\n" +" Afsluttes succesfuldt med mindre KOMMANDO ikke kan findes, eller hvis " +"der\n" +" opstÃ¥r en omdirigeringsfejl." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Afslut skallen.\n" +" \n" +" Afslut skallen med status N. Hvis N udelades vil afslutningsstatus\n" +" blive den samme som sidst eksekverede kommando." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Afslut en logindskal.\n" +" \n" +" Afslutter en logindskal med afslutningsstatus N. Returnerer en fejl, " +"hvis\n" +" den ikke eksekveres i en logindskal." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Vis og eksekver kommandoer fra historiklisten.\n" +" \n" +" fc bruges til at vise, redigere og geneksekvere kommandoer fra " +"historikken.\n" +" FØRSTE og SIDSTE kan være numre som specificerer et interval, eller " +"FØRSTE\n" +" kan være en streng, hvilket vil resultere i den nyeste kommando som\n" +" begynder med den streng.\n" +" \n" +" Tilvalg: \n" +" -e ENAVN\tvælger hvilket tekstredigeringsprogram, der vil bliver " +"brugt.\n" +" Forvalget er FCEDIT, herefter EDITOR og til sidst \"vi\".\n" +" -l \tbetyder vis linjer i stedet for at redigere dem.\n" +" -n\tbetyder at linjenumre ikke vises.\n" +" -r\tbetyder at rækkefølgen af linjer vendes (sÃ¥ nye er først).\n" +" \n" +" Med \"fc -s [pat=rep ...] [command]\"-formatet vil kommandoen blive " +"gen-\n" +" eksekveret efter substitutionen GAMMEL=NY er foretaget.\n" +" \n" +" Et nyttigt alias er r=\\\"fc -s\\\", som vil medføre at den sidste " +"kommando\n" +" der begynder med \\\"cc\\\" vil afvikles, nÃ¥r der skrives \\\"r cc\\\", " +"og at\n" +" den seneste kommando afvikles, nÃ¥r der skrives \\\"r\\\".\n" +"\n" +" Afslutningsstatus.\n" +" Returnerer succes eller status af den eksekverede kommando, ikke-nul " +"hvis\n" +" der opstod en fejl." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Flyt jobs til forgrunden.\n" +" \n" +" Placer JOB_SPEC i forgrunden og gør det til det aktuelle job. Hvis\n" +" JOB_SPEC ikke findes, vil skallens opfattelse af, hvad der er det " +"nuværende\n" +" job, blive brugt.\n" +" \n" +" Afslutningsstatus:\n" +" Status af den kommando der placeres i forgrunden eller mislykket hvis " +"der\n" +" opstÃ¥r fejl." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Flyt jobs til baggrunden\n" +" \n" +" Placer hvert enkelt JOB_SPEC i baggrunden, som om de var startet med \n" +" \"&\". Hvis JOB_SPEC ikke findes, vil skallen opfattelse af, hvad der " +"er\n" +" det nuværende job, blive brugt.\n" +" \n" +" Afslutningsstatus:\n" +" Afsluttes succesfuldt medmindre jobkontrol ikke er slÃ¥et til, eller " +"hvis\n" +" der opstÃ¥r en fejl." + +#: builtins.c:793 +#, fuzzy +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Husk og vis programplaceringer.\n" +" \n" +" Afgør og husker det fulde stinavn for hver kommando-NAVN. Hvis der ikke\n" +" gives noget argument, vil information om huskede kommandoer blive vist.\n" +" \n" +" Tilvalg:\n" +" -d\t\tglem den huskede placering for hvert NAVN\n" +" -l\t\tvis i et format som kan genanvendes\n" +" -p stinavn\tbrug STINAVN som det fulde stinavn for NAVN\n" +" -r\t\tglem alle huskede placeringer\n" +" -t\t\tudskriv den huskede placering for hvert NAVN, med NAVNet\n" +" \t\tudskrevet foran placeringen hvis flere NAVNe er angivet.\n" +" Argumenter:\n" +" NAVN\t\tDer søges efter hvert navn i $PATH og de tilføjes til\n" +" \t\tlisten af huskede kommandoer.\n" +" \n" +" Afslutningsstatus:\n" +" Afsluttes succesfuldt med mindre NAVN ikke kan findes, eller hvis der " +"angives\n" +" et ugyldig tilvalg." + +#: builtins.c:818 +#, fuzzy +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Vis information om indbyggede kommandoer.\n" +" \n" +" Viser korte sammendrag om indbyggede kommandoer. Hvis MØNSTER er " +"angivet,\n" +" vil der blive givet en detaljeret hjælp, om alle de kommandoer som " +"matcher\n" +" MØNSTER, ellers vil der blive udskrevet en liste over hjælpeemner.\n" +" \n" +" Tilvalg:\n" +" -d\tudskriver kort beskrivelse for hvert emne\n" +" -m\tviser brugsinformation i pseudo-mansideformat\n" +" -s\tvis kun en kort synopsis for hvert emne som matcher MØNSTER\n" +" \n" +" Argumenter:\n" +" MØNSTER\tMønster som specificerer et hjælpeemne\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre MØNSTER ikke kan findes, eller hvis der\n" +" angives et ugyldigt tilvalg." + +#: builtins.c:842 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Vis eller manipuler med historiklisten.\n" +"\n" +" Vis historikken med linjenumre. Linjer som vises med \"*\" er blevet\n" +" ændret. Argumentet N gør at kun de N sidste linjer bliver vist.\n" +" \n" +" Tilvalg:\n" +" -c\trydder historiklisten ved at slette alle elementer i den.\n" +" -d forskydning\tsletter historik-elementet ved position FORSKYDNING.\n" +" -a\tvedhæfter historiklinjer fra denne session til historikfilen.\n" +" -n\tindlæser alle linjer fra historikfilen, som ikke allerede er\n" +" \tindlæst\n" +" -r\tindlæser historikfilen og føjer dens indhold til historiklisten\n" +" -w\tskriver den nuværende historik til historikfilen og vedhæft dem\n" +" \ttil historiklisten\n" +" \n" +" -p\tudfør en historikudvidelse pÃ¥ hvert enkelt ARG og udskriv\n" +" \tresultatet uden at tilføje det til historikken\n" +" -s\tvedhæft ARGer til historiklisten som et enkelt element\n" +" \n" +" Hvis FILENAVN er angivet, vil den blive brugt som historikfil,\n" +" ellers vil $HISTFILE blive brugt, hvis den har en værdi og ellers\n" +" vil ~/.bash_history blive brugt.\n" +" \n" +" Hvis variablen $HISTTIMEFORMAT er indstillet og ikke er \"null\", vil " +"dens\n" +" værdi blive brugt som formatstreng til strftime(3) til formatering af\n" +" tidspunkt for hvert historikelement. Ellers vil ingen tidsstempler " +"blive\n" +" skrevet.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der er angivet et ugyldig tilvalg, eller " +"hvis\n" +" der opstÃ¥r en fejl." + +#: builtins.c:879 +#, fuzzy +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Viser status af jobs.\n" +" \n" +" Viser de aktive jobs. JOBSPEC begrænser output til dette job. Uden " +"tilvalg\n" +" vil status for alle aktive jobs blive vist.\n" +" \n" +" Tilvalg:\n" +" \n" +" -l\tvis ogsÃ¥ proces-id'er ud over den normale information\n" +" -n\tviser kun de processer, som har ændret status siden sidste\n" +" \tpÃ¥mindelse\n" +" -p\tviser udelukkende proces-id'er\n" +" -r\tbegrænser uddata til kørende jobs\n" +" -s\tbegrænser uddata til stoppede jobs\n" +" \n" +" Hvis -x er givet, vil KOMMANDO blive kørt efter at alle " +"jobspecifikationer\n" +" som stÃ¥r i ARGer er blevet erstattet med proces-id'et for dette jobs " +"proces-\n" +" gruppeleder.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre et ugyldigt tilvalg er angivet, eller hvis " +"der\n" +" opstÃ¥r en fejl. Hvis -x bruges returneres afslutningsstatus for KOMMANDO." + +#: builtins.c:906 +#, fuzzy +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Fjern jobs fra den aktuelle skal.\n" +" \n" +" Fjerner hvert JOBSPEC-argument, fra tabellen over aktive jobs. Hvis der " +"ikke\n" +" angives nogen JOBSPEC bruges skallens opfattelse af det aktuelle job.\n" +" \n" +" Tilvalg:\n" +" -a\tfjern alle jobs hvis JOBSPEC ikke er angivet\n" +" -h\tmarker hvert JOBSPEC sÃ¥ledes at SIGHUP ikke sendes til jobbet\n" +" \thvis skallen modtager SIGHUP\n" +" -r\tfjern kun kørende jobs\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre et ugyldigt tilvalg eller JOBSPEC angives." + +#: builtins.c:925 +#, fuzzy +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Send et signal til et job.\n" +" \n" +" Send signalet SIGSPEC eller SIGNUM til processen, som er angivet ved " +"PID\n" +" eller JOBSPEC. Hvis hverken SIGSPEC eller SIGNUM er angivet antages " +"SIGTERM.\n" +" \n" +" -s sig\tSIG er et signalnavn\n" +" -n sig\tSIG er et signalnummer\n" +" -l\tudskriver signalnavnene. Hvis der stÃ¥r argumenter efter \"-l\",\n" +" \tantages det, at de er signalnumre hvis tilhørende signalnavne skal\n" +" udskrives.\n" +" \n" +" Der er to grunde til at kill er en indbygget skal-kommando: Det " +"tillader\n" +" at der kan bruges job-id'er i stedet for proces-id'er og tillader at " +"stoppe\n" +" processer, selvom du har nÃ¥et grænsen for, hvor mange processer du\n" +" kan oprette.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre et ugyldigt tilvalg er angivet, eller hvis " +"der\n" +" opstÃ¥r en fejl." + +#: builtins.c:949 +#, fuzzy +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Evaluer aritmetiske udtryk.\n" +" \n" +" Hvert ARG er et aritmetisk udtryk som skal evalueres. Evalueringen\n" +" bliver foretaget i heltal med fast-bredde, uden check for overløb,\n" +" dog vil division med 0 blive fanget og markeret som en fejl. Den\n" +" følgende liste af operatorer er vist i grupper med samme evaluerings-\n" +" prioritet. Grupperne er vist med faldende prioritet.\n" +" \n" +" \tid++, id--\tpost-forøgelse og -formindskelse af variabel\n" +" \t++id, --id\tpræ-forøgelse og -formindskelse af variabel\n" +" \t-, +\t\tunær minus og plus\n" +" \t!, ~\t\tlogisk og bitvis negation\n" +" \t**\t\teksponentiering\n" +" \t*, /, %\t\tmultiplikation, division, rest\n" +" \t+, -\t\taddition, subtraktion\n" +" \t<<, >>\t\tvenstre og højre bitvis skift\n" +" \t<=, >=, <, >\tsammenligning\n" +" \t==, !=\t\tlighed, ulighed\n" +" \t&\t\tbitvis AND (OG)\n" +" \t^\t\tbitvis XOR (EKSKLUSIVT ELLER)\n" +" \t|\t\tbitvis OR (ELLER)\n" +" \t&&\t\tlogisk AND (OG)\n" +" \t||\t\tlogisk OR (ELLER)\n" +" \texpr ? expr : expr\n" +" \t\t\tbetingelsesoperator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\ttildeling\n" +" \n" +" Skalvariable er tilladt som operander. Variablens navn vil blive\n" +" erstattet af dens værdi (tilpasset sÃ¥ den er et heltal med fast-bredde)\n" +" indeni udtrykket. Variablen skal have sin heltals-attribut slÃ¥et til\n" +" for, at den kan bruges i et udtryk.\n" +" \n" +" Operatorer vil blive evalueret efter prioritet. Underoperatorer i\n" +" parenteser bliver evalueret først og kan tilsidesætte de ovenstÃ¥ende\n" +" prioriteter.\n" +" \n" +" Afslutningsstatus:\n" +" Hvis det sidste ARG evalueres til 0, vil \"let\" returnere 1, ellers\n" +" returneres 0." + +#: builtins.c:994 +#, fuzzy +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Læs en linje fra standardinput og del den op i felter.\n" +" \n" +" En linje vil blive læst fra standardinput, eller fra fildeskriptor FD " +"hvis\n" +" tilvalget -u er givet. Linjen vil blive delt ind i felter som med ord-\n" +" opdeling Det første ord blive tildelt det første NAVN, det andet ord " +"til \n" +" det andet NAVN osv. og de tilbageblivende ord vil blive tildelt det " +"sidste\n" +" NAVN. Kun de tegn som findes i $IFS vil blive genkendt som " +"ordadskillere.\n" +"\n" +" Hvis der ikke er angivet nogle NAVNe, vil linjen blive gemt i REPLY-\n" +" variablen.\n" +"\n" +" Tilvalg:\n" +" -a array\tde indlæste ord blive tildelt fortløbende indeks i\n" +" \t\tARRAY startende ved 0\n" +" -d adskil\tfortsæt indtil det første tegn i ADSKIL bliver læst, i " +"stedet\n" +" \t\tfor ved nylinjetegn\n" +" -e\tbrug Readline til at indhente linje fra en interaktiv skal\n" +" -i tekst\tBrug TEKST som den indledende tekst til Readline\n" +" -n ntegn\treturnerer efter at have læst NTEGN tegn i stedet for at " +"vente\n" +" \t\tpÃ¥ et nylinjetegn\n" +" -p prompt\tudskriv strengen PROMPT, uden et nylinjetegn, før der " +"forsøges pÃ¥\n" +" \t\tat læse\n" +" -r\ttillad ikke at omvendte skrÃ¥streger undviger tegn\n" +" -s\tudskriv (echo) ikke input som kommer fra en terminal\n" +" -t tidsgrænse\tindstil tidsudløb og returner fejl, hvis der ikke kan\n" +" \t\t\tlæses en komplet linje indenfor TIDSGRÆNSE sekunder.\n" +" \t\t\tVærdien af variablen TMOUT er standardtidsudløbet.\n" +" \t\t\tTIDSGRÆNSE kan være et kommatal. Hvis TIDSGRÆNSE er 0,\n" +" \t\t\tvil read kun returnere succes hvis der er input\n" +" \t\t\ttilgængelig ved den angivne fildeskriptor. Fejlstatus\n" +" \t\t\tvil være større end 128 hvis tidsudløb indtræffer.\n" +" -u fd\tlæs fra fildeskriptoren FD i stedet for standardinput\n" +" \n" +" Afslutningsstatus:\n" +" Returkoden vil være nul, med mindre slut-pÃ¥-fil nÃ¥s, tidsudløb " +"indtræffer,\n" +" eller hvis en ugyldig fildeskriptor gives som argument til -u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Returner fra en skalfunktion.\n" +" \n" +" Gør at en funktion eller et kildeskript afslutter med en returværdi, som " +"er\n" +" angivet med N. Hvis N udelades, vil returstatussen være den samme som " +"værdien\n" +" fra sidste kommande, som blev eksekveret inde i funktionen eller " +"skriptet.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer N, eller fejl hvis skallen ikke er i færd med at eksekvere " +"en\n" +" funktion eller et skript." + +#: builtins.c:1054 +#, fuzzy +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Indstiller eller afinitialiserer (unset) skaltilvalg og positionsparametre.\n" +" \n" +" Ændr værdien af skalattributter og positionsparametre, eller vis navne " +"og\n" +" værdier af skalvariable.\n" +"\n" +" Tilvalg:\n" +" -a Marker variable som er ændret eller oprettet til eksport.\n" +" -b Underret om jobafslutning øjeblikkeligt.\n" +" -e Afslut øjeblikkeligt hvis en kommando afslutter med en\n" +" afslutningsstatus som ikke er nul.\n" +" -f SlÃ¥ filnavngenerering fra (globbing).\n" +" -h Husk kommandoers positionen mens de slÃ¥s op.\n" +" -k Overfør alle opgavens argumenter til kommandoens miljø, ikke kun " +"de\n" +" som kommer før kommandonavnet.\n" +" -m SlÃ¥ jobkontrol til.\n" +" -n Læs kommandoer men eksekver dem ikke.\n" +" -o tilvalgsnavn\n" +" Indstil variablen sÃ¥ den passer til tilvalgsnavn:\n" +" allexport samme som -a\n" +" braceexpand samme som -B\n" +" emacs brug en linjeredigerings-grænseflade som i emacs\n" +" errexit samme som -e\n" +" errtrace samme som -E\n" +" functrace samme som -T\n" +" hashall samme som -h\n" +" histexpand samme som -H\n" +" history slÃ¥ kommandohistorik til\n" +" ignoreeof skallen vil ikke afslutte ved læsning af\n" +" slut-pÃ¥-fil (EOF)\n" +" interactive-comments\n" +" vis ogsÃ¥ kommentarerer ved interaktive " +"kommandoer\n" +" keyword samme som -k\n" +" monitor samme som -m\n" +" noclobber samme som -C\n" +" noexec samme som -n\n" +" noglob samme som -f\n" +" nolog accepteres pÃ¥ nuværende tidspunkt men har ingen\n" +" virkning\n" +" notify samme som -b\n" +" nounset samme som -u\n" +" onecmd samme som -t\n" +" physical samme som -P\n" +" pipefail returværdien af en datakanal (pipeline) er\n" +" status af den sidste kommando, som afsluttedes " +"med en\n" +" status som er forskellig fra nul, eller nul hvis\n" +" ingen kommando afsluttedes med en status " +"forskellig\n" +" fra nul\n" +" posix ændrer den mÃ¥de bash opfører sig pÃ¥ de steder " +"hvor\n" +" opførslen afviger fra 1003.2-standarden sÃ¥ledes " +"at\n" +" standarden følges\n" +" privileged samme som -p\n" +" verbose samme som -v\n" +" vi brug en linjeredigerings-grænseflade som i \"vi" +"\"\n" +" xtrace samme som -x\n" +" -p SlÃ¥et til nÃ¥r den reelle og den faktiske brugers id'er ikke er " +"ens.\n" +" Deaktiverer behandling af $ENV-filen og import af skalfunktioner.\n" +" Deaktivering af denne valgmulighed vil sætte de faktiske\n" +" uid og gid til de reelle uid og gid.\n" +" -t Afslut efter af have læst og eksekveret en kommando.\n" +" -u Behandl afinitialiserede (unset) variable som en fejl ved " +"substitution.\n" +" -v Udskriv skal-inputlinjer nÃ¥r de læses.\n" +" -x Udskriv kommandoer og deres argumenter nÃ¥r de eksekveres.\n" +" -B Lad skallen udføre klammeudvidelse\n" +" -C Med dette tilvalg vil det ikke tillades at eksisterende regulære " +"filer\n" +" overskrives pga. videreførsel af output.\n" +" -E Med dette tilvalg vil ERR-fælden (trap) arves af skalfunktioner.\n" +" -H Aktiver !-stilhistoriksubstitution. Dette flag er aktiveret som\n" +" standard, nÃ¥r skallen er interaktiv.\n" +" -P Med dette tilvalg følges symbolske lænker ikke ved eksekvering af\n" +" kommandoer, som f.eks. cd, der ændrer den aktuelle mappe.\n" +" -T Med dette tilvalg vil DEBUG-fælden (trap) arves af " +"skalfunktioner.\n" +" - Tildel alle tilbageblevne argumenter til positionsparametrene.\n" +" Tilvalgene -x og -v er slÃ¥et fra.\n" +" \n" +" Bruges + i stedet for - vil disse flag blive slÃ¥et fra. Flagene kan " +"ogsÃ¥\n" +" bruges ved kald af skallen. Flagene det aktuelt er i brug kan findes i " +"$-.\n" +" De tilbageblevne n ARGer er positionsparametre og vil blive tildelt i " +"række-\n" +" følge til $1, $2, .. $n. Hvis der ikke angives nogen ARGer, vil alle " +"skal-\n" +" variable blive udskrevet.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg." + +#: builtins.c:1139 +#, fuzzy +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Afinitialiserer (unset) værdier og attributter for skalvariable og " +"funktioner.\n" +" \n" +" Fjerner den tilsvarende variabel eller funktion for hvert NAVN.\n" +" \n" +" Tilvalg:\n" +" -f\tbehandl ethvert NAVN som en skalfunktion\n" +" -v\tbehandl ethvert NAVN som en skalvariable\n" +" \n" +" Uden tilvalg vil unset først prøve at afinitialisere en variabel og " +"hvis\n" +" det mislykkes, vil den prøve med en funktion.\n" +" \n" +" Nogle variable kan ikke afinitialiseres; læs under \"readonly\".\n" +" \n" +" Afslutningstatus:\n" +" Returnerer succes med mindre der gives et ugyldigt tilvalg eller hvis " +"et\n" +" givent navn er skrivebeskyttet." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Indstil eksportattributten for skalvariable.\n" +" \n" +" Marker hvert NAVN til automatisk eksport til miljøet for de kommandoer " +"som\n" +" eksekveres efterfølgende. Hvis VÆRDI er angivet, vil den blive tildelt\n" +" variablen før eksportering.\n" +" \n" +" Tilvalg:\n" +" -f\treferer til skalfunktioner\n" +" -n\tfjern eksportegenskaben fra hvert NAVN\n" +" -p\tvis en liste over alle eksporterede variable og funktioner\n" +" \n" +" Argumentet \"--\" slÃ¥r al efterfølgende behandling fra.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n" +" NAVN er ugyldig." + +#: builtins.c:1180 +#, fuzzy +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Marker skalvariable som skrivebeskyttet.\n" +" \n" +" Marker hvert NAVN som skrivebeskyttet. Værdierne af disse navne kan\n" +" herefter ikke ændres ved efterfølgende tildeling. Hvis VÆRDI angives, " +"vil\n" +" denne blive tildelt variablen, før den markeres som skrivebeskyttet.\n" +" \n" +" Tilvalg:\n" +" -a\treferer til indekserede arrays\n" +" -A\treferer til associative arrayvariable\n" +" -f\treferer til skalfunktioner\n" +" -p\tvis en liste af alle skrivebeskyttede variable og funktioner\n" +" \n" +" Argumentet \"--\" slÃ¥r al efterfølgende fra.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n" +" NAVN er ugyldigt." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Skift positionsparametre.\n" +" \n" +" Omdøb positionsparametrene $N+1,$N+2 ... til $1,$2 ... Hvis N ikke " +"angives,\n" +" antages værdien 1.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre N er negativ eller større end $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Eksekver kommandoer fra en fil i den aktuelle skal.\n" +" \n" +" Læs og eksekver kommandoer fra FILNAVN i den aktuelle skal. Elementerne " +"i\n" +" $PATH bruges til at finde den mappe som FILNAVN ligger i. Hvis der " +"angives\n" +" ARGUMENTER, omdannes de til positionsparametre nÃ¥r FILNAVN eksekveres.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer status fra den sidst eksekverede kommando i FILNAVN; fejler " +"hvis\n" +" FILNAVN ikke kan læses." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspender skaleksekvering.\n" +" \n" +" Suspender eksekvering af denne skal indtil den modtager et SIGCONT-" +"signal.\n" +" Med mindre det gennemtvinges, kan en logindskal ikke suspenderes.\n" +" \n" +" Tilvalg:\n" +" -f\tgennemtving suspendering selvom skallen er en logindskal\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre jobkontrol ikke er slÃ¥et til, eller hvis " +"der\n" +" opstÃ¥r en fejl." + +#: builtins.c:1261 +#, fuzzy +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Evaluer betingelsesudtryk.\n" +" \n" +" Afslutter med status 0 (sand) eller 1 (falsk) afhængigt af evalueringen " +"af\n" +" UDTRYK. Udtrykket kan være unært eller binært. Unære udtryk bruges ofte " +"til\n" +" at undersøge filers status. Der findes ogsÃ¥ strengoperatorer sÃ¥vel som\n" +" operatorer til numeriske sammenligninger.\n" +" \n" +" Filoperatorer:\n" +" \n" +" -a FIL Sand hvis filen eksisterer.\n" +" -b FIL Sand hvis filen er blokspeciel.\n" +" -c FIL Sand hvis filen er tegnspecial.\n" +" -d FIL Sand hvis filen er en mappe.\n" +" -e FIL Sand hvis filen eksisterer.\n" +" -f FIL Sand hvis filen eksisterer og er en regulær fil.\n" +" -g FIL Sand hvis filen er sæt-gruppe-id.\n" +" -h FIL Sand hvis filen er en symbolsk lænke.\n" +" -L FIL Sand hvis filen er en symbolsk lænke.\n" +" -k FIL Sand hvis filens klæbebit (sticky bit) er indstillet.\n" +" -p FIL Sand hvis filen er en navngiven datakanal (pipe).\n" +" -r FIL Sand hvis du kan læse filen.\n" +" -s FIL Sand hvis filen eksisterer og ikke er tom.\n" +" -S FIL Sand hvis filen er en sokkel.\n" +" -t FD Sand hvis FD blev Ã¥bnet pÃ¥ en terminal.\n" +" -u FIL Sand hvis filen er sæt-bruger-id.\n" +" -w FIL Sand hvis du kan skrive til filen.\n" +" -x FIL Sand hvis du kan eksekvere filen.\n" +" -O FIL Sand hvis filen effektivt er ejet af dig.\n" +" -G FIL Sand hvis filen effektivt er ejet af din gruppe.\n" +" -N FIL Sand hvis filen er blevet ændret siden den sidst blev " +"læst.\n" +" \n" +" FIL1 -nt FIL2 Sand hvis fil1 er nyere end fil2 (ifølge " +"modificerings-\n" +" datoen)\n" +" \n" +" FIL1 -ot FIL2 Sand hvis fil1 er ældre en fil2.\n" +" \n" +" FIL1 -ef FIL2 Sand hvis fil1 er en hÃ¥rd lænke til fil2.\n" +" \n" +" Strengoperatorer:\n" +" \n" +" -z STRENG Sand hvis strengen er tom.\n" +" \n" +" -n STRENG\n" +" STRENG Sand hvis strengen ikke er tom.\n" +" \n" +" STRENG1 = STRENG2\n" +" Sand hvis strengene er ens.\n" +" STRENG1 != STRENG2\n" +" Sand hvis strengene ikke er ens.\n" +" STRENG1 < STRENG2\n" +" Sand hvis STRENG1 sorteres før STRENG2 leksikografisk.\n" +" STRENG1 > STRENG2\n" +" Sand hvis STRENG1 sorteres efter STRENG2 " +"leksikografisk.\n" +" \n" +" Andre operatorer:\n" +" \n" +" -o TILVALG Sand hvis skaltilvalget TILVALG er slÃ¥et til.\n" +" ! UDTRYK Sand hvis udtryk er falsk.\n" +" UDTR1 -a UDTR2 Sand hvis bÃ¥de udtr1 og udtr2 er sande.\n" +" UDTR1 -o UDTR2 Sand hvis enten udtr1 eller udtr2 er sand.\n" +" \n" +" arg1 OP arg2 Aritmetiske tests. OP er en af følgende: -eq, -ne,\n" +" -lt, -le, -gt, eller -ge.\n" +" \n" +" Binære aritmetiske operatorer returnerer sand hvis ARG1 er henholdsvis " +"lig,\n" +" ikke-lig, mindre-end, mindre-end-eller-lig, større-end, større-end-eller-" +"lig\n" +" ARG2.\n" +"\n" +" Afslutningsstatus:\n" +" Returnerer succes hvis UDTRYK evalueres til sand, og fejler hvis UDTRYK\n" +" evalueres til falsk eller hvis der gives et ugyldigt argument." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Evaluer betingelsesudtryk.\n" +" \n" +" Dette er et synonym for den indbyggede funktion \"test\", dog skal det " +"sidste\n" +" argument skal være \"]\", for at den passer til den Ã¥bnende \"[\"." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Vis procestid.\n" +" \n" +" Udskriver den akkumulerede bruger- og systemtid for skallen og alle " +"dens\n" +" underprocesser.\n" +" \n" +" Afslutningsstatus:\n" +" Lykkes altid." + +#: builtins.c:1364 +#, fuzzy +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Indfanger signaler og andre begivenheder.\n" +" \n" +" Definerer og aktiverer hÃ¥ndteringsenheder, som skal køres nÃ¥r skallen\n" +" modtager signaler eller under andre omstændigheder.\n" +" \n" +" ARG er en kommando som skal læses og eksekveres, nÃ¥r skallen modtager\n" +" signalet SIGNAL_SPEC. Hvis ARG ikke er angivet (og hvis der angives en\n" +" enkelt SIGNAL_SPEC) eller \"-\", vil hvert angivet signal blive " +"nulstillet\n" +" til dets oprindelige værdi. Hvis ARG er null-strengen, vil hvert\n" +" SIGNAL_SPEC bliver ignoreret af skallen og af de kommandoer som den\n" +" starter.\n" +" \n" +" Hvis en SIGNAL_SPEC er EXIT (0), vil ARG blive eksekveret ved " +"afslutning\n" +" af skallen. Hvis SIGNAL_SPEC er DEBUG, vil ARG blive eksekveret før " +"hver\n" +" simpel kommando.\n" +" \n" +" Hvis der ikke er angivet nogen argumenter, vil trap udskrive en liste " +"af\n" +" kommandoer som er associeret med hvert signal.\n" +" \n" +" Tilvalg:\n" +" -l\tudskriver en liste af signalnavne og deres tilhørende numre\n" +" -p\tvis de trap-kommandoer som er associeret med hvert SIGNAL_SPEC\n" +" \n" +" Hver SIGNAL_SPEC er enten et signalnavn i eller et signal-\n" +" nummer. Signalnavne er ikke versalfølsomme og præfikset SIG er " +"valgfrit.\n" +" Et signal kan sendes til skallen med \"kill -signal $$\".\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre SIGSPEC er ugyldig eller hvis der er " +"angivet\n" +" et ugyldigt tilvalg." + +#: builtins.c:1400 +#, fuzzy +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Vis information om kommandoers type.\n" +" \n" +" Oplys for hvert NAVN, hvordan det ville blive tolket, hvis det blev " +"brugt\n" +" som en kommando.\n" +" \n" +" Tilvalg:\n" +" -a\tvis alle placeringer som indeholder en eksekverbar ved navn NAVN;\n" +" \tinkluder aliasser, indbyggede og funktioner, hvis og kun hvis " +"tilvalget\n" +" \t\"-p\" ikke ogsÃ¥ bruges\n" +" -f\tundertryk søgning efter skalfunktioner\n" +" -P\tgennemtving en stisøgning for hvert NAVN, selvom det er et\n" +" \talias, en indbygget eller en funktion og returner samme navne som den\n" +" \tdiskfil der ville blive eksekveret\n" +" -p\treturnerer enten navnet pÃ¥ den diskfil, som ville blive\n" +" \teksekveret, eller ingenting hvis \"type -t NAVN\" ikke ville have\n" +" \treturneret \"file\".\n" +" -t\treturner et enkelt ord, enten \"alias\", \"keyword\", \"function" +"\",\n" +" \t\"builtin\", \"file\" eller \"\", hvis NAVN er henholdsvis et alias,\n" +" skalreserveret ord, skalfunktion, skalindbygget, diskfil eller ikke " +"blev\n" +" fundet.\n" +" \n" +" Argumenter:\n" +" NAVN\tNavnet pÃ¥ den kommando der skal fortolkes.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes hvis alle NAVNe kan findes, og fejler hvis bare et " +"enkelt\n" +" ikke findes." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modificer grænser for skalressourcer.\n" +" \n" +" Giver kontrol over de ressourcer som er tilgængelige for skallen og de\n" +" processer den starter pÃ¥ systemer som tillader den slags kontrol.\n" +" \n" +" Tilvalg:\n" +" -S\tbrug den \"bløde\" ressourcegrænse\n" +" -H\tbrug den \"hÃ¥rde\" ressourcegrænse\n" +" -a\talle aktuelle grænser rapporteres\n" +" -b\tstørrelse af sokkelbuffer\n" +" -c\tmaksimale størrelse af oprettede kernefiler\n" +" -d\tmaksimale størrelse af en proces' datasegment\n" +" -e\tmaksimale planlægningsprioritet (`nice')\n" +" -f\tmaksimale størrelse af filer skrevet af skallen og dens\n" +" \tunderprocesser\n" +" -i\tmaksimale antal af ventende signaler\n" +" -l\tmaksimale størrelse en proces mÃ¥ lÃ¥se i hukommelse\n" +" -m\tmaksimale indstillede omrÃ¥de (resident size)\n" +" -n\tmaksimale antal Ã¥bne fildeskriptorer\n" +" -p\tbufferstørrelse for datakanal (pipe)\n" +" -q\tmaksimale antal bytes i POSIX-beskedkøer\n" +" -r\tmaksimale realtids-planlægningsprioritet\n" +" -s\tmaksimal stakstørrelse\n" +" -t\tmaksimale mængde cpu-tid i sekunder\n" +" -u\tmaksimale antal brugerprocesser\n" +" -v\tstørrelsen af virtuel hukommelse\n" +" -x\tmaksimale antal fillÃ¥se\n" +" \n" +" Hvis GRÆNSE angives, er det den nye grænse for den specificerede " +"ressource\n" +" De specielle grænser, \"soft\", hard\" og \"unlimited\" stÃ¥r for " +"henholdsvis den\n" +" aktuelle bløde grænse, hÃ¥rde grænse og ingen grænse. Ellers vil den\n" +" aktuelle grænse for den specificerede ressource blive udskrevet. Hvis " +"der\n" +" ikke angives noget tilvalg, antages \"-f\".\n" +" \n" +" Værdier angives i forøgelser af 1024 bytes, bortset fra -t som er i " +"sekunder,\n" +" -p som er i forøgelser af 512 bytes og -u som er et uskaleret antal af\n" +" processer.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg, eller hvis " +"der\n" +" opstÃ¥r en fejl." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Vis eller indstil filmasketilstand.\n" +" \n" +" Indstiller brugeres filoprettelsesmaske til TILSTAND. Hvis TILSTAND " +"udelades,\n" +" udskrives den nuværende værdi af masken.\n" +" \n" +" Hvis TILSTAND begynder med et ciffer, bliver det fortolket som et " +"oktalt\n" +" tal, ellers er det en symbolsk tilstandsstreng, ligesom dem der angives\n" +" til chmod(1).\n" +" \n" +" Tilvalg:\n" +" -p\thvis TILSTAND udelades, udskrives der i en form der kan bruges\n" +" \tsom input\n" +" -S\tgør outputtet symbolsk, eller vil output være et oktalt tal\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre TILSTAND er ugyldig, eller hvis et " +"ugyldigt\n" +" tilvalg angives." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Vent pÃ¥ færdiggørelse af job og returner afslutningsstatus.\n" +" \n" +" Venter pÃ¥ processen ID. ID kan enten være et proces-id eller en job-\n" +" specifikation, og rapporterer dets afslutningstatus. Hvis ID ikke " +"angives\n" +" ventes pÃ¥ alle aktuelle underprocesser og afslutningsstatussen vil være " +"0.\n" +" Hvis ID er en jobspecifikation ventes pÃ¥ alle processer i dette jobs\n" +" datakanal (pipe).\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer status af ID, fejler hvis ID er ugyldigt eller hvis der " +"angives\n" +" et ugyldigt tilvalg." + +#: builtins.c:1533 +#, fuzzy +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Venter pÃ¥ færdiggørelse af proces og returnerer dens afslutningsstatus.\n" +" \n" +" Venter pÃ¥ den angivne proces og rapporterer dens afslutningsstatus. " +"Hvis\n" +" der ikke angives noget PID ventes pÃ¥ alle aktuelle underprocesser og\n" +" afslutningsstatussen er 0. PID skal være et proces-id.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer statussen for ID, fejler hvis ID er ugyldig eller hvis der\n" +" angives et ugyldigt tilvalg." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Eksekver kommandoer hvor hvert element i en liste.\n" +" \n" +" \"for\"-løkken eksekverer en sekvens af kommandoer for hvert element i " +"en\n" +" angivet liste af elementer. Hvis \"in ORD ...;\" ikke er tilstede, sÃ¥ " +"antages\n" +" \"in \"$@\"\". For hvert element i ORD, vil NAVN blive sat til det " +"element og\n" +" KOMMANDOER vil blive eksekveret.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer statussen for den sidst eksekverede kommando." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Aritmetisk for-løkke.\n" +" \n" +" Ækvivalent til\n" +" \t(( UDTRYK ))\n" +" \twhile (( UDTRYK )); do\n" +" \t\tKOMMANDOER\n" +" \t\t(( UDTRYK3 ))\n" +" \tdone\n" +" UDTRYK1, UDTRYK2 og UDTRYK3 er aritmetisk udtryk. Hvis et af udtrykkene\n" +" mangler, vil resultatet være som om det evalueredes til 1.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer afslutningsstatussen for den sidst eksekverede kommando." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Vælg ord fra en liste og eksekver kommandoer.\n" +" \n" +" ORD vil blive udvidet, sÃ¥ledes at der genereres en liste af ord. Denne\n" +" liste af udvidede ord vil blive skrevet til standardfejl, hvert af dem\n" +" med at nummer hæftet foran. Hvis \"in ORD\" ikke er angivet, antages " +"\"in $@\".\n" +" Derefter vil en PS3-prompt blive vist og der vil blive læst en linje " +"fra\n" +" standardinput. Hvis linje bestÃ¥r af et tal, som svarer til et af de\n" +" viste ord, sÃ¥ vil NAVN blive sat til det ord. Hvis linjen er tom, vil " +"ORD\n" +" og prompten blive vist igen. Hvis EOF bliver læst afsluttes kommandoen.\n" +" Hvis der læses en hvilken som helst anden værdi, vil NAVN blive sat til\n" +" null. Den læste linje vil bliver gemt i variablen REPLY. KOMMANDOER vil\n" +" blive eksekveret efter hvert valg indtil en break-kommando eksekveres.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer statussen fra den sidst eksekverede kommando." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Rapporterer tid brugt ved en datakanals (pipe) eksekvering.\n" +" \n" +" Eksekverer DATAKANAL og udskriv den brugte realtid, bruger-CPU-tid\n" +" og system-CPU-tid, nÃ¥r den er færdig.\n" +" \n" +" Tilvalg:\n" +" -p\tudskriver timingssammendrag i det flytbare (portable)\n" +" POSIX-format\n" +" \n" +" Værdien af variablen TIMEFORMAT bruges som outputformatet.\n" +" \n" +" Afslutningsstatus:\n" +" Afslutningsstatus er afslutningsstatus for DATAKANAL." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Eksekver kommandoer baseret pÃ¥ mønstersammenligning.\n" +" \n" +" Eksekver selektivt KOMMANDOER nÃ¥r ORD passer til MØNSTER. \"|\" bruges " +"til at\n" +" adskille flere mønstre.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer statussen fra den sidst eksekverede kommando." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Eksekverer kommandoer baseret pÃ¥ betingelse.\n" +" \n" +" Listen \"if KOMMANDOER\" bliver eksekveret. Hvis dens afslutningsstatus " +"er\n" +" nul, sÃ¥ vil listen \"then KOMMANDOER\" blive eksekveret. Ellers vil " +"hver\n" +" \"elif KOMMANDOER\"-liste blive eksekveret og hvis de returnerer nul " +"vil\n" +" deres tilhørende \"then KOMMANDER\"-liste blive eksekveret og if-" +"kommandoen\n" +" fuldføres. Ellers vil \"else KOMMANDOER\"-listen blive eksekveret, hvis " +"en\n" +" sÃ¥dan findes. Afslutningsstatus for hele strukturen er afslutnings-\n" +" statussen for den sidste kommando, eller nul hvis ingen betingelse var\n" +" sand.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer statussen fra den sidst eksekverede kommando." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Eksekver kommandoer sÃ¥ længe en test evaluerer til sad.\n" +" \n" +" Udvid og eksekver KOMMANDOER sÃ¥ længe den sidste kommando i \"while\"\n" +" KOMMANDOER har en afslutningsstatus pÃ¥ nul.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer statussen fra den sidst eksekverede kommando." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Eksekver kommandoer sÃ¥ længe en test ikke evaluerer til falsk.\n" +" \n" +" Udvid og eksekver KOMMANDOER sÃ¥ længe den sidste kommando i \"untill\"\n" +" KOMMANDOER har en afslutningsstatus som ikke er nul.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer statussen fra den sidst eksekverede kommando." + +#: builtins.c:1671 +#, fuzzy +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Opret en coproces ved navn NAVN.\n" +" \n" +" Eksekver KOMMANDO asynkront, med standardoutput og standardinput\n" +" for kommandoen forbundet via en datakanal (pipe), til fildeskriptorerne\n" +" tildelt til indeks 0 og 1 i en arrayvariabel NAVN i den eksekverende " +"skal.\n" +" Standardnavnet NAVN er \"COPROC\".\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer afslutningsstatussen for KOMMANDO." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Definer skalfunktion.\n" +" \n" +" Opret en skalfunktion ved navn NAVN. NÃ¥r den køres som en simpel " +"kommando,\n" +" NAVN kører KOMMANDOer i den kaldende skals kontekst. NÃ¥r NAVN kaldes, " +"bliver\n" +" argumenter sendt videre som $1..$n, og funktionens navn som $FUNCNAME.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre NAVN er skrivebeskyttet." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Grupper kommandoer som en enhed.\n" +" \n" +" Kør et sæt af kommandoer i en gruppe. Dette er en mÃ¥de at videresende\n" +" et sæt af kommandoer pÃ¥.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer statussen fra den sidst eksekverede kommando." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Genoptag job i forgrunden.\n" +" \n" +" Ækvivalent til JOB_SPEC-argumentet til \"fg\"-kommandoen. Genoptag et " +"stoppet\n" +" job eller et job som ligger i baggrunden. JOB_SPEC kan specificere enten " +"et\n" +" jobnavn eller et jobnummer. Hvis JOB_SPEC efterfølges af en \"&\", vil " +"jobbet\n" +" blive placeret i baggrunden, som om jobspecifikationen var givet som et\n" +" argument til \"bg\".\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer statussen af det genoptagede job." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Evaluer aritmetisk udtryk.\n" +" \n" +" UDTRYK evalueres ifølge reglerne for aritmetisk evaluering. Ækvivalent " +"til\n" +" \"let UDTRYK\".\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer 1 hvis udtrykket evalueres til 0, ellers returneres 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Eksekver betingelseskommando.\n" +" \n" +" Returnerer status 0 eller 1 afhængigt af evalueringen af betingelses-\n" +" udtrykket UDTRYK. Udtryk bestÃ¥r af de samme primære elementer som " +"bliver\n" +" brugt i den indbyggede funktion \"test\" og kan kombineres ved brug af " +"følgende\n" +" operatorer:\n" +" \n" +" ( UDTRYK )\tReturnerer værdien af UDTRYK\n" +" ! UDTRYK\t\tSand hvis UDTRYK er falsk, ellers falsk\n" +" UDTR1 && UDTR2\tSand hvis bÃ¥de UDTR1 og UDTR2 er sande, ellers falsk\n" +" UDTR1 && UDTR2\tSand hvis enten UDTR1 eller UDTR2 er sand, ellers " +"falsk\n" +" \n" +" NÃ¥r operatorerne \"==\" og \"!=\" bruges, vil strengen til højre for " +"operatoren\n" +" blive brugt som et mønster og der vil blive udført strengmatching. NÃ¥r\n" +" operatoren \"=~\" bliver brugt, vil strengen til højre for operatoren " +"blive\n" +" matchet som et regulært udtryk.\n" +" \n" +" Operatorerne && og || vil ikke evaluere UDTR2, hvis UDTR1 er nok til at\n" +" afgøre udtrykkets værdi.\n" +"\n" +" Afslutningsstatus:\n" +" 0 eller 1 afhængigt af udtrykkets værdi." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Navnene pÃ¥ almindelige skalvariable og deres brug.\n" +" \n" +" BASH_VERSION\tVersionsinformation for denne Bash.\n" +" CDPATH\tEn kolonsepareret liste af mapper som kan gennemsøges for at\n" +" \t\tfinde mapper som er givet som argument til cd.\n" +" GLOBIGNORE\tEn kolonsepareret liste af mønstre som beskriver filnavne " +"som\n" +" \t\tskal ignoreres ved stinavnsudvidelse.\n" +" HISTFILE\tNavnet pÃ¥ den fil hvori din kommandohistorik gemmes.\n" +" HISTFILESIZE\tDet maksimale antal linjer denne fil kan indeholde.\n" +" HISTSIZE\tDet maksimale antal linjer som en kørende skal kan tilgÃ¥.\n" +" HOME\tDet komplette stinavn til din logindmappe.\n" +" HOSTNAME\tNavnet pÃ¥ den aktuelle vært.\n" +" HOSTTYPE\tDen type af CPU som denne version af Bash kører under.\n" +" IGNOREEOF\tKontrollerer skallens handlinger hvis den modtager et EOF-" +"tegn\n" +" \t\tsom eneste input. Hvis den er indstillet, angiver den det antal\n" +" \t\tEOF-tegn som skal følge lige efter hinanden pÃ¥ en tom linje,\n" +" \t\tfør skallen afslutter (standardværdien er 10). Hvis den ikke er\n" +" indstillet vil EOF betyde slutningen af input.\n" +" MACHTYPE\tEn streng som beskriver det aktuelle system som Bash kører " +"pÃ¥.\n" +" MAILCHECK\tHvor ofte Bash tjekker for ny post, i sekunder.\n" +" MAILPATH\tEn kolonsepareret liste af filnavne som Bash tjekker for ny\n" +" \t\tpost.\n" +" OSTYPE\tDen version af Unix som denne version af Bash kører pÃ¥.\n" +" PATH\tEn kolonsepareret liste af mapper som der søges i efter " +"kommandoer.\n" +" PROMPT_COMMAND\tEn kommando som skal eksekveres før hver primære prompt\n" +" \t\tudskrives.\n" +" PS1\t\tStreng for den primære prompt.\n" +" PS2\t\tStreng for den sekundære prompt.\n" +" PWD\t\tDet fulde stinavn for den aktuelle mappe.\n" +" SHELLOPTS\tEn kolonsepareret liste af aktiverede skaltilvalg.\n" +" TERM\tNavnet pÃ¥ den aktuelle skaltype.\n" +" TIMEFORMAT\tOutputformatet for timingstatistik som vises ved hjælp af " +"det\n" +" \t\treserverede ord \"time\".\n" +" auto_resume\tIkke-null betyder at for et kommandoord, som optræder for " +"sig selv\n" +" \t\tpÃ¥ en linje, vil der først blive kigget efter det i listen over\n" +" \t\taktuelt stoppede jobs. Hvis det findes der, vil dette job blive\n" +" bragt i forgrunden. Værdien \"exact\" betyder at " +"kommandoordet\n" +" skal matche et ord fra listen over stoppede jobs præcist.\n" +" Værdien \"substring\" betyder at kommandoordet skal matche " +"en\n" +" delstreng af jobbet. Enhver anden værdi betyder at " +"kommandoen\n" +" skal være et præfiks for et stoppet job.\n" +" histchars\tTegn som kontrollerer historikudvidelse og hurtig " +"substitution\n" +" \t\ti historik. Det første tegn er historik-substitutionstegnet, som\n" +" regel \"!\". Det andet tegn er hurtigsubstitutionstegnet, " +"som\n" +" \t\tregel \"^\". Det tredje tegn er historik-kommentartegnet, som\n" +" \t\tregel \"#\".\n" +" HISTIGNORE\tEn kolonsepareret liste af mønstre som bliver brugt til at\n" +" \t\tbestemme hvilke kommandoer der skal gemmes i historikken.\n" + +#: builtins.c:1821 +#, fuzzy +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Tilføjer mapper til stakken.\n" +" \n" +" Tilføjer en mappe til toppen af stakken, eller roterer stakken, sÃ¥ledes\n" +" at den nye top af stakken bliver den aktuelle mappe. Uden argumenter\n" +" ombyttes de to øverste mapper.\n" +" \n" +" Tilvalg:\n" +" -n\tUndertrykker det mappeskift der normalt følger med tilføjelse\n" +" \taf mapper til stakken, sÃ¥ledes at kun stakken ændres.\n" +" \n" +" Argumenter:\n" +" +N\tRoterer stakken sÃ¥ledes at den N'te mappe (talt fra venstre i\n" +" \tlisten som vises af \"dirs\", startende med nul) vil blive placeret i\n" +" \ttoppen.\n" +" \n" +" -N\tRoterer stakken sÃ¥ledes at den N'te mappe (talt fra højre i\n" +" \tlisten som vises af \"dirs\", startende med nul) vil blive placeret i\n" +" \ttoppen.\n" +" \n" +" mappe\tTilføjer MAPPE til toppen af mappestakken, sÃ¥ledes at den\n" +" \tbliver den aktuelle mappe.\n" +" \n" +" Den indbyggede \"dirs\" viser mappestakken.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg, eller " +"hvis\n" +" mappeskiftet mislykkes." + +#: builtins.c:1855 +#, fuzzy +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Fjerner mapper fra stakken.\n" +" \n" +" Fjerner en mappe fra stakken. Uden argumenter fjernes den øverste mappe " +"fra\n" +" stakken og der skiftes til den nye aktuelle mappe.\n" +" \n" +" Tilvalg:\n" +" -n\tUndertrykker det mappeskift der normalt følger med fjernelse\n" +" \taf mapper fra stakken, sÃ¥ledes at kun stakken ændres.\n" +" \n" +" Argumenter:\n" +" +N\tFjerner den N'te mappe, talt fra venstre i listen som vises af\n" +" \t\"dirs\", startende med nul. F.eks: vil \"popd +0\" fjerne den første " +"mappe\n" +" \tog \"popd +1\" den anden.\n" +" \n" +" -N\tFjerner den N'te mappe, talt fra højre i listen som vises af\n" +" \t\"dirs\", startende med nul. F.eks: vil \"popd -0\" fjerne den sidste " +"mappe\n" +" \tog \"popd -1\" den andensidste.\n" +" \n" +" Den indbyggede \"dirs\" viser mappestakken.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg, eller " +"hvis\n" +" mappeskiftet mislykkes." + +#: builtins.c:1885 +#, fuzzy +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Vis mappestakken.\n" +" \n" +" Vis listen af huskede mapper. Mapper tilføjes denne liste ved hjælp\n" +" af \"pushd\"-kommandoen. Du kan komme tilbage gennem listen med \"popd" +"\"-\n" +" kommandoen.\n" +" \n" +" Tilvalg:\n" +" -c\tryd mappestakken ved at slette alle dens elementer\n" +" -l\tudskriv ikke mapper relativt til din hjemmemappe med et\n" +" foranstillet tildetegn\n" +" -p\tudskriv mappestakken med et element per linje\n" +" -v\tudskriv mappestakken med et element per linje, med dets\n" +" \tposition i stakken foranstillet\n" +" \n" +" Argumenter:\n" +" +N\tViser det N'te element, talt fra venstre i listen som den vises\n" +" af \"dirs\" kørt uden argumenter, talt fra nul.\n" +" -N\tViser det N'te element, talt fra højre i listen som den vises af\n" +" \t\"dirs\" kørt uden argumenter, talt fra nul.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg, eller hvis " +"der\n" +" opstÃ¥r en fejl." + +#: builtins.c:1916 +#, fuzzy +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Indstil og afindstil (unset) skalvariable.\n" +" \n" +" Ændr indstillinger for hver skalvariabel INDSTNAVN. Uden argumenter " +"vises\n" +" en liste af skalvariable, sammen med information om hvorvidt de er\n" +" indstillet.\n" +" \n" +" Tilvalg:\n" +" -o\tbegræns INDSTNAVN til dem som er defineret til brug med \"set -o" +"\"\n" +" -p\tudskriv alle skalvariable sammen med en indikation af deres\n" +" \tstatus\n" +" -q\tundertryk output\n" +" -s\taktiver (set) hvert INDSTNAVN\n" +" -u\tdeaktiver (unset) hvert INDSTNAVN\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes hvis INDSTNAVN er aktiveret; fejler hvis der angives " +"et\n" +" ugyldigt tilvalg eller hvis INDSTNAVN er deaktiveret." + +#: builtins.c:1937 +#, fuzzy +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formaterer og udskriver ARGUMENTER formateret efter FORMAT.\n" +" \n" +" Tilvalg:\n" +" -v var\tsend output til skalvariablen VAR i stedet for at vise det " +"via\n" +" \t\tstandardoutput\n" +" \n" +" FORMAT er en tegnstreng som indeholder 3 typer af objekter: Almindelige " +"tegn,\n" +" som kopieres til standardoutput som de er; undvigetegn, som konverteres " +"og\n" +" kopieres til standardoutput; og formatspecifikationer, som hver især " +"fører\n" +" til udskrivningen af det næste argument.\n" +" \n" +" Ud over de standardformatspecifikationer som er beskrevet i printf(1) " +"og\n" +" printf(3), fortolker printf ogsÃ¥ følgende:\n" +" \n" +" %b\tudvid undvigesekvenser med omvendt skrÃ¥streg i det tilsvarende\n" +" \targument\n" +" %q\tciter argumenter pÃ¥ en mÃ¥de sÃ¥ de kan genbruges som skalinput\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg, eller " +"hvis\n" +" der opstÃ¥r en skrive- eller tildelingsfejl." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Specificer hvordan argumenter fuldføres af Readline.\n" +" \n" +" Specificer hvordan argumenter skal fuldføres for hvert NAVN. Hvis der\n" +" ikke er angivet nogen tilvalg, vil de eksisterende fuldførsels-\n" +" specifikationer blive udskrevet pÃ¥ en form der tillader dem at blive\n" +" genbrugt som input.\n" +" \n" +" Tilvalg:\n" +" -p\tudskriv eksisterende fuldførselsspecifikationer i et format\n" +" \tsom kan genbruges\n" +" -r\tfjern en fuldførselsspecifikation for hvert NAVN, eller,\n" +" \thvis der ikke er angivet nogle NAVNe, alle fuldførselsspecifikationer\n" +" \n" +" NÃ¥r fuldførsel forsøges, vil handlinger blive anvendt i den rækkefølge,\n" +" som de tilvalg som har store bogstaver, stÃ¥r i.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg, eller " +"hvis\n" +" der opstÃ¥r en fejl." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Vis mulige fuldførsler afhængigt af indstillingerne.\n" +" \n" +" Beregnet til brug i skalfunktioner som genererer de mulige " +"fuldførelser.\n" +" Hvis det valgfrie ORD angives, vil der blive genereret fuldførsler som\n" +" matcher ORD.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg, eller " +"hvis\n" +" der opstÃ¥r en fejl." + +# Fejlrapport +#: builtins.c:2016 +#, fuzzy +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Ændr eller vis indstillinger for fuldførsel.\n" +" \n" +" Ændr fuldførselsindstillinger for hvert NAVN, eller, hvis der ikke er\n" +" angivet nogle NAVNe, fuldførslen der bliver eksekveret nu. Hvis der " +"ikke\n" +" er angivet nogle tilvalg, vil fuldførslen for hvert navn eller den\n" +" aktuelle fuldførsel blive udskrevet.\n" +" \n" +" Tilvalg:\n" +" \t-o indstilling\tIndstil fuldførselsindstillingen INDSTILLING for\n" +" \t\t\thvert NAVN.\n" +" Ved brug af \"+o\" i stedet for \"-o\" vil den specificerede indstilling " +"blive\n" +" slÃ¥et fra.\n" +" \n" +" Argumenter:\n" +" \n" +" Hvert NAVN refererer til en kommando, for hvilken der tidligere er " +"blevet\n" +" angivet en fuldførselsspecifikation med den indbyggede \"complete\". " +"Hvis\n" +" der ikke er angivet nogle NAVNe, sÃ¥ skal compopt kaldes af den funktion " +"som\n" +" genererer fuldførsler nu og sÃ¥ vil indstillingerne for den aktuelt\n" +" kørende fuldførselsgenerator blive modificeret.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives et ugyldigt tilvalg, eller " +"hvis\n" +" der ikke er defineret en fuldførselsspecifikation for NAVN." + +#: builtins.c:2047 +#, fuzzy +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Læs linjer ind i en arrayvariabel fra standardinput.\n" +" \n" +" Læs linjer ind i en arrayvariabel ARRAY fra standardinput, eller fra en\n" +" fildeskriptor FD, hvis tilvalget -u er givet. Variablen MAPFIL er " +"forvalgt\n" +" som ARRAY.\n" +" \n" +" Tilvalg:\n" +" -n antal\tKopier højst ANTAL linjer. Hvis ANTAL er 0 kopieres alle " +"linjer.\n" +" -O start\tBegynd at skrive til ARRAY ved indeks START. Standardværdien " +"er\n" +" \t0.\n" +" -s antal\tSmid de første ANTAL læste linjer væk.\n" +" -t \tFjern et efterfølgende nylinjetegn fra slutningen af hver linje.\n" +" -u fd\tLæs linjer fra fildeskriptoren FD i stedet for fra standard-\n" +" \t\tinput.\n" +" -C tilbagekald\tEvaluer TILBAGEKALD hver gang KVANTUM linjer er læst.\n" +" -c kvantum\tSpecificer antallet af linjer imellem hvert kald til\n" +" \t\t\tTILBAGEKALD\n" +" \n" +" Argumenter:\n" +" ARRAY\t\tNavn for arrayvariabel som skal bruges til fildata.\n" +" \n" +" Hvis -C er angivet uden -c er standardkvantum 5000. NÃ¥r TILBAGEKALD\n" +" kaldes, vil den fÃ¥ det næste arrayindeks, som vil blive brugt som et " +"ekstra\n" +" argument.\n" +" \n" +" Med mindre et startpunkt i arrayet eksplicit angives, vil mapfile rydde\n" +" ARRAY, inden skrivning til den pÃ¥begyndes.\n" +" \n" +" Afslutningsstatus:\n" +" Returnerer succes med mindre der angives at ugyldigt tilvalg, eller " +"hvis\n" +" ARRAY er skrivebeskyttet." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Læs linjer fra en fil ind i en arrayvariabel.\n" +" \n" +" Et synonym for \"mapfile\"." + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Returnerer konteksten af det nuværende underrutinekald.\n" +#~ " \n" +#~ " NÃ¥r UDTRYK udelades returneres " + +# ?? +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: proces %5ld (%s) i the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Ukendt signal #" + +#, fuzzy +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licens GPLv3+: GNU GPL version 3 eller senere \n" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: kan ikke allokere %lu bytes (%lu bytes allokeret)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: kan ikke allokere %lu bytes" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: %s:%d: kan ikke reallokere %lu bytes (%lu bytes allokeret)" diff --git a/bash-5.1/po/de.gmo b/bash-5.1/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..7a31bc581436aa2ead234c0a866d79a02dbd85dc GIT binary patch literal 94744 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

hN469_2$vSx^}S-W0yp;M6FhLv6Eb-T{ota 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 z zX4Jk&*328S{V%9!a6^@bvk`%198Zi zzLXx?AMz?cdF(&dUC>7nbRic>pzV{FwOGN+KI|ert$J$9Br zj$c~KS}s;$A5D8gWh-YSH=Cz~i;M}B?zD*FJOpOdbDq11Z>wGD?pO*lcTHJZ@M^+@ z+iXaicV%l>?p2zFo0tCHbf$OPD$;q1?Zmq-UZZKXrecM!^PZt{Lw|D33rN|&maV?x zLxM+nV|s70wDOS?Tk57YqcA(R@cwEvS?Xk&K4f6H!s))$x_te6k+*adA3C_~wRDB% zFv)Q7*imf}u4VDFs2(yDHwVuo7eWS;2ckehxVzl5MG(L#d!_g&l?ippim)HY^=OMw z28&NR=|dm>6IZ^>001-Hynh#i`641Ezo2<|5=s4Tnyp{S#V4uhUStu$+qcw}9? zj$VZ&#CAl=ir6v9dmJI+#N)t$H0Ly3(zU=1&R;(kY9ioV0VcA0i1g@9Y~Ic#WRi4W zGO=Q~CSu>pi0OydGjaMYBZ~e8KCLSqtu`o*8;QpqC%caejok}L|U6;>5zCgW>9 z^5qlhr)W4@LFeL6lhhU|T35AI6#g1$^iN*ivH{k>2tbwDB#S`J#i){8Augfyx(mNp zWcbo%31~|YMtPx?8RmYP&KvVahVJFK#MrRH5)&uXnQSR)2>X?*&&0Bqyj`ViPhaUp zu%7qt6lcL{9#ZgKISW;XO3HcybRpjAuN3swEwM`FKRf1Xs+ZBI*gfP?HB1^7hK#jaG( z9zEHLNIBi-cm44FU)q=Y=13qUc;zV&4bqOqNCPhvkFg16qKdla8zD1c{7F&Lkd#!( zq}n1zT1xC#xlX0HWKPZIrn}Ay0;L?;(0#{duppZcQlbo_Z~+enPHB>_Q8|2U4;*Kt zps;lJ5R{U+Qcb9H))IjLB3shL*AtcKa|5;*JMfaA1scLWJBuH>L)oyPdk#R<4y`n> zm9pEa4w6O{O{q%a)>%BcR_flY?~shGiQ|)&I_#Dw+?Q10K0< z``1QxIKi)5>%8C|fRxzgB^6`@To7@N3A&IWZcTUUZGA_=!*o6L>Nd6dY;J4J7eCb7 zvp$zZk!I9912`O{*8MGbPqirvse=(8J?-6dLLwlgm@P!)+Z!x=cR4m~uigy~x>s|L z)3r~%v*Y`feZTyf8&rQtnqS5WU2vW8A>cxL$AOH{EWCNPf&l{gh(V=;!Tj{#QY8+{ zk2zCMxE4#Um7wJwq7Fn zA;xBqy4Y2$jv7CgS|Iexr7Z;^ZbRb8Q#LZaV86M%@WolF=h*LJP#JHSaE+5?F}+Kl z3P93wKgzQ|Vt#kgTTeyY3d}i(_(lcs{bTpzGxmb@b+&`cvb;_NoAJiCn)Ov1l3yEc zJd#wUyCzK8d@^B2uvu+6q!@y42+ZxbVi+v3E4?g-Bd3|-B{@75Su|hBms}V|t{yip z>wj#ddt@GrCS;)9Ow;(`V8hD6LON!B;~wVU`4sbSd49Md=B3L?@~Pq1$iigu9@O;@ z!;Lg)AWpnFcfWPT@5gwn=ypu-15(oEL4JR%N)mwV^6#^a7XzSirX(^k>iqs< z_I3h$QRwWm!2#P$3~GMnmfsSyx~5PnOU>g6*J8hLAvWDs50MOX4SjEM&}UD?-`-+;9KtD5@;4>CtYXdT@n$ zuiE8@oYua#SG~M`_yyM@V{yThWoc!bc`;Zw<22d4pVok6}d+Op~9K_ zY0Rd9E+0vE!iTRIm{`|tbxNYN3*3d|o*+_k$YwKR}OGod7hn>zP_c167=U+ z+cR-Ij7&OBPwmHH>nMhuc~8>M`d9TN%;n5v>7MIxb75{w!ZML)rAn-F!Mjqx`I^Oz zEJijXnUSLJXF-1XQ1aRyA!~&=odb??0CVrrX2^&H&E^1SHmn&UH?4C^?yksz&|E>M z+gdx)OmYΞ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 literal 0 HcmV?d00001 diff --git a/bash-5.1/po/de.po b/bash-5.1/po/de.po new file mode 100644 index 0000000..64d676f --- /dev/null +++ b/bash-5.1/po/de.po @@ -0,0 +1,5156 @@ +# qerman language file for GNU Bash 5.0 +# Copyright (C) 2019 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Roland Illig 2019 +# Nils Naumann , 1996-2019. +msgid "" +msgstr "" +"Project-Id-Version: bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-10-21 20:58+0200\n" +"Last-Translator: Nils Naumann \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "Falscher Feldindex." + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: Entferne das Nameref Attribut." + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" +"%s: Das indizierte Array kann in kein assoziatives Array umgewandelt werden." + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: Ungültiger Schlüssel für das assoziative Array." + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: Das Zuweisen auf einen nicht-numerischen Index ist nicht möglich." + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" +"%s: %s: Ein Feldindex wird zum Zuweisen eines assoziativen Arrays benötigt." + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: Kann die Datei %s nicht erzeugen." + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando " +"finden." + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr " %s: Das erste Zeichen ist nicht `\\'." + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "fehlende schließende `%c' in %s." + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: Fehlender Doppelpunkt." + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "»%s«: Bindung kann nicht gelöst werden." + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "Klammererweiterung: Konnte keinen Speicher für %s zuweisen." + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "Klammererweiterung: Konnte keinen Speicher für %u Elemente zuweisen." + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "Klammererweiterung: Konnte keinen Speicher für »%s« zuweisen." + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "»%s«: Ungültiger Aliasname." + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "Zeileneditierung ist nicht aktiviert." + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "»%s«: Ungültiger Tastenzuordnungs-Name." + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: Nicht lesbar: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "%s: Unbekannter Funktionsname." + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s ist keiner Taste zugeordnet.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s kann aufgerufen werden durch " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "»%s«: Bindung kann nicht gelöst werden." + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "Schleifenzähler" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "nur in einer for-, while- oder until-Schleife sinnvoll." + +# caller +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Gibt Informationen zum aktuellen Subroutinenaufruf aus.\n" +"\n" +" Ohne Argument wird die Zeilennummer und der Dateiname angezeigt. Mit\n" +" Argument werden Zeilennummer, Subroutinenname und Dateiname ausgegeben.\n" +" Mit diesen Informationen kann ein Stacktrace erzeugt werden.\n" +"\n" +" Das Argument gibt die angezeigte Position im Funktionsaufrufstapel an,\n" +" wobei 0 der aktuelle Funktionsaufruf ist.\n" +"\n" +" Rückgabewert:\n" +" Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das " +"Argument\n" +" ungültig ist, sonst 0." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME ist nicht zugewiesen." + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "Zu viele Argumente." + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "NULL Verzeichnis" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD ist nicht zugewiesen." + +# Debug Ausgabe +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "Zeile %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "Warnung: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: Aufruf: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: Die Option erfordert ein Argument." + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: Ein numerischer Parameter ist erforderlich." + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: Nicht gefunden." + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: Ungültige Option." + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: Ungültiger Optionsname." + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "»%s«: Ist kein gültiger Bezeichner." + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "Ungültige Oktalzahl." + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "Ungültige hexadezimale Zahl." + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "Ungültige Zahl." + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: Ungültige Signalbezeichnung." + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "»%s«: Ist keine gültige Prozess-ID oder Jobbezeichnung." + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: Schreibgeschützte Variable." + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s ist außerhalb des Gültigkeitsbereiches." + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "Argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s ist außerhalb des Gültigkeitsbereiches." + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: Kein solcher Job." + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: Keine Jobsteuerung in dieser Shell." + +#: builtins/common.c:294 +msgid "no job control" +msgstr "Keine Jobsteuerung in dieser Shell." + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: eingeschränkt" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "eingeschränkt" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: Ist kein eingebautes Shellkommando." + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "Schreibfehler: %s." + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "Fehler beim Setzen der Terminalattribute: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "Fehler beim Ermitteln der Terminalattribute: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: Kann das aktuelle Verzeichnis nicht wiederfinden: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: Mehrdeutige Jobbezeichnung." + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "In dieser Version ist keine Hilfe verfügbar." + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: »unset« nicht möglich: %s ist schreibgeschützt" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: »unset« nicht möglich." + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: Ungültiger Aktionsname." + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: Keine Komplettierung angegeben." + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "Warnung: Die Option -F könnte unerwartete Ergebnisse liefern." + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "Warnung: Die Option -C könnte unerwartete Ergebnisse liefern." + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "Gegenwärtig wird keine Komplettierungsfunktion ausgeführt." + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "Kann nur innerhalb einer Funktion benutzt werden." + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: Zirkularbezug auf indirekte Variable." + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "»%s«: Ungültiger Name für indirekte Variablenreferenz." + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "Mit »-f« können keine Funktionen erzeugt werden." + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: Schreibgeschützte Funktion." + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: Kann Feldvariablen nicht auf diese Art löschen." + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" +"%s: Konvertieren von assoziativen in indizierte Arrays ist nicht möglich." + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "Dynamisches Laden ist nicht verfügbar." + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "Kann die dynamische Bibliothek nicht laden %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "Kann %s nicht in der dynamischen Bibliothek finden %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: Ist nicht dynamisch geladen." + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" +"Die Ladefunktion von %s lieferte einen Fehler (%d), daher nicht geladen." + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: Ist nicht dynamisch geladen." + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: Kann nicht löschen: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: ist ein Verzeichnis." + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: Ist keine normale Datei." + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: Die Datei ist zu groß." + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: Kann die Datei nicht ausführen." + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: Kann nicht ausführen: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "Abgemeldet\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "Keine Loginshell: Mit »exit« abmelden!" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Es gibt noch angehaltene Prozesse.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Es gibt noch laufende Prozesse.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "Kein Kommando gefunden." + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: Kann die temporäre Datei nicht öffnen: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "gegenwärtig" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "Job %d wurde ohne Jobsteuerung gestartet." + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: Ungültige Option -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: Diese Option erfordert ein Argument -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "Hashing deaktiviert." + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: Die Hashtabelle ist leer.\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "Treffer\tBefehl\n" + +# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00022.html +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Shellkommando, auf das das Schlüsselwort zutrifft `" +msgstr[1] "Shell Kommandos auf die die Schlüsselwörter zutreffen `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"Kein passendes Hilfethema für »%s«. Probieren Sie »help help«, »man -k %s« " +"oder »info %s«." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: Kann die Datei nicht öffnen: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Diese Shellkommandos sind intern definiert. Geben Sie »help« ein, um diese\n" +"Liste zu sehen. Geben Sie »help Name« ein, um die Beschreibung der Funktion\n" +"»Name« zu sehen. Geben Sie »info bash« ein, um die vollständige " +"Dokumentation\n" +"zu sehen. Geben Sie »man -k« oder »info« ein, um detaillierte " +"Beschreibungen\n" +"der Shellkommandos zu sehen.\n" +"\n" +"Ein Stern (*) neben dem Namen kennzeichnet deaktivierte Kommandos.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "Es darf höchstens eine Option aus -anrw angegeben werden." + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "Kommandostapelposition." + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: Ungültiger Zeitstempel." + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: Kommandoersetzung gescheitert." + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib gescheitert." + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "Keine weiteren Optionen mit `-x' erlaubt." + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: Die Argumente müssen Prozess- oder Job-IDs sein." + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Unbekannter Fehler." + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "Ausdruck erwartet." + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: Ist kein indiziertes Array." + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: Ungültige Dateideskriptor-Angabe." + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: Ungültiger Dateideskriptor: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: Ungültige Zeilenanzahlangabe." + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: Ungültiger Arrayanfang." + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "Fehlender Name für die Arrayvariable." + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "" +"Die Unterstützung für Arrayvariablen ist in dieser Shell nicht vorhanden." + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "»%s«: Fehlendes Formatierungszeichen." + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "»%c«: Ungültige Zeitformatangabe." + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "»%c«: Ungültiges Formatierungszeichen." + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "Warnung: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "Formatleseproblem: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "Fehlende hexadezimale Ziffer nach \\x." + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "Fehlende Unicode-Ziffer für \\%c." + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "kein anderes Verzeichnis" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: Ungültiges Argument." + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "Der Verzeichnisstapel ist leer." + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "Verzeichnisstapelindex" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Zeigt die Liste der gegenwärtig gespeicherten Verzeichnisse an. Durch\n" +" das Kommando »pushd« werden die Verzeichnisse auf den Stapel gelegt\n" +" und können durch das Kommando »popd« wieder vom Stapel entfernt\n" +" werden.\n" +"\n" +" Optionen:\n" +"\t-c\tVerzeichnisstapel durch Löschen aller Einträge bereinigen.\n" +"\t-l\tDas Heimatverzeichnis wird nicht mit vorangestellter Tilde\n" +"\tausgegeben\n" +"\t-p\tDen Verzeichnisstapel zeilenweise ausgeben.\n" +"\t-v\tDen Verzeichnisstapel zeilenweise mit vorangestellter\n" +"\tPositionsnummer auseben.\n" +"\n" +" Argumente:\n" +"\t+N\tZeigt den N'ten Eintrag von links an, der von »dirs« ausgegeben\n" +"\twird, wenn es ohne Optionen aufgerufen wird, beginnend mit Null.\n" +"\t-N\tZeigt den N'ten Eintrag von rechts an, der von »dirs« ausgegeben\n" +"\twird, wenn es ohne Optionen aufgerufen wird, beginnend mit Null." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Legt einen Verzeichniseintrag auf den Verzeichnisstapel ab oder rotiert\n" +"den Stapel so, dass das aktuelle Verzeichnis oben liegt. Ohne Argumente\n" +"werden die beiden oberen Einträge vertauscht.\n" +"\n" +" Optionen: \n" +" -n\tVermeidet das Wechseln des Verzeichnisses, so dass\n" +"\tnur der Verzeichnisstapel geändert wird.\n" +"\n" +" Argumente:\n" +" +N\tRotiert den Verzeichnisstapel, dass das N-te Verzeichnis\n" +"\tvon links, das von »dirs« angezeigt wird, nach oben kommt. Die Zählung\n" +"\tbeginnt dabei mit Null.\n" +"\n" +" -N\tRotiert den Verzeichnisstapel, dass das N-te Verzeichnis\n" +"\tvon rechts, das von »dirs« angezeigt wird, nach oben kommt. Die \n" +"\tZählung beginnt dabei mit Null.\n" +"\n" +" dir\tLegt DIR auf den Verzeichnisstapel und wechselt in dieses\n" +" Verzeichnis.\n" +" \n" +" Das Kommando »dirs« Kommando zeigt den Verzeichnisstapel an." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Entfernt Einträge vom Stapel. Ohne Argumente wird der oberste Eintrag\n" +" gelöscht und anschließend in das das neue oben liegende Verzeichnis\n" +" gewechselt.\n" +" \n" +" Optionen:\n" +" -n\tVermeidet das Wechseln des Verzeichnisses, so dass\n" +"\tnur der Verzeichnisstapel geändert wird.\n" +" \n" +" Argumente:\n" +" +N\tEntfernt den N-ten Eintrag von links, der von `dirs'\n" +"\tangezeigt wird. Dabei beginnt die Zählung von Null. So\n" +"\tentfernt z.B. »popd +0« den ersten und »popd +1« den zweiten\n" +"\tEintrag.\n" +" \n" +" -N\tEntfernt den N-ten Eintrag von rechts, der von `dirs'\n" +"\tangezeigt wird. Dabei beginnt die Zählung von Null. So\n" +"\tentfernt z.B. »popd -0« den letzten und »popd +1« den vorletzten\n" +"\tEintrag.\n" +" \n" +" Das Kommando »dirs« zeigt den Verzeichnisstapel an." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: Ungültige Wartezeitangebe." + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "Lesefehler: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"»Return« ist nur aus einer Funktion oder einem mit »source« ausgeführten " +"Skript möglich." + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" +"Gleichzeitiges »unset« einer Funktion und einer Variable ist nicht möglich." + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: Ist keine Feldvariable." + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: Ist keine Funktion." + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: Exportieren nicht möglich." + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "Verschiebeanzahl" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "Kann nicht Shelloptionen gleichzeitig aktivieren und deaktivieren." + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: Ungültiger Name für Shelloption." + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "Ein Dateiname wird als Argument benötigt." + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: Datei nicht gefunden." + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "Kann die Shell nicht unterbrechen." + +# logout +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "Kann die Loginshell nicht unterbrechen." + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s ist ein Alias von »%s«.\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s Ist ein reserviertes Schlüsselwort der Shell.\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s ist eine Funktion.\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s ist eine spezielle eingebaute Funktion.\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s ist eine von der Shell mitgelieferte Funktion.\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s ist %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s ist gehasht (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: Ungültiges Grenzwertargument." + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': Falsches Kommando." + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: Kann die nicht Grenze setzen: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "Grenze" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: Kann die Grenze nicht ändern: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "Oktalzahl" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': Ungültiger Operator für den symbolischen Modus." + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': Ungültiges Zeichen im symbolischen Modus." + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " Zeile " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "Letztes Kommando: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Abbruch..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFO: " + +#: error.c:462 +msgid "unknown command error" +msgstr "Unbekanntes Kommando" + +#: error.c:463 +msgid "bad command type" +msgstr "" + +# Programmierfehler +#: error.c:464 +msgid "bad connector" +msgstr "" + +#: error.c:465 +msgid "bad jump" +msgstr "Falscher Sprung" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s ist nicht gesetzt." + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aZu lange keine Eingabe: Automatisch ausgeloggt.\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "Kann nicht die Standardeingabe von /dev/null umleiten: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: »%c«: Ungültiges Formatzeichen." + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "Pipe-Fehler" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: Maximale Schachtelungstiefe überschritten (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: Maximale Quellcode-Schachtelungstiefe überschritten (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: maximale Schachtelungstiefe für Funktionen überschritten (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: eingeschränkt: `/' ist in Kommandonamen unzulässig." + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: Kommando nicht gefunden." + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: Defekter Interpreter" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: Kann die Binärdatei nicht ausführen: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "»%s« ist eine spezielle eingebaute Funktion." + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "Kann fd %d nicht auf fd %d verdoppeln." + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "Zu viele Rekursionen in Ausdruck." + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "Rekursionsstapel leer." + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "Syntaxfehler im Ausdruck." + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "Versuchte Zuweisung zu etwas, das keine Variable ist." + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "Syntaxfehler in der Variablenzuweisung." + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "Division durch 0." + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "Fehler: Falscher Zuweisungsoperator." + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "»:« für ein bedingten Ausdruck erwartet." + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "Der Exponent ist kleiner als 0." + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" +"Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet." + +#: expr.c:1056 +msgid "missing `)'" +msgstr "Fehlende »)«" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "Syntaxfehler: Operator erwartet." + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "Syntaxfehler: Ungültiger arithmetischer Operator." + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (Fehlerverursachendes Zeichen ist \"%s\")." + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "Ungültige Basis." + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: Ungültige Zeilenanzahlangabe." + +#: expr.c:1598 +msgid "value too great for base" +msgstr "Der Wert ist für die aktuelle Basis zu groß." + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: Fehler im Ausdruck.\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: Kann auf die übergeordneten Verzeichnisse nicht zugreifen." + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "Konnte den No-Delay-Modus für fd %d nicht wiederherstellen." + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "Kann keinen neuen Dateideskriptor für die Eingabe von fd %d zuweisen." + +# Debug Ausgabe +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: Es existiert bereits ein Puffer für den neuen fd %d." + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "Die geforkte PID %d erscheint im laufenden Prozess %d." + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "Lösche den gestoppten Prozess %d der Prozessgruppe %ld." + +# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00024.html +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +# Programmierfehler +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: Prozessnummer existiert nicht." + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Fertig" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Angehalten" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Angehalten(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Läuft" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Fertig(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Exit %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Unbekannter Status" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(Speicherabzug geschrieben) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (Verz.: %s)" + +# interner Fehler +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: Prozess %ld wurde nicht von dieser Shell gestartet." + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: Der Job %d ist gestoppt." + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: Kein solcher Job." + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: Der Job ist beendet." + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: Der Job %d läuft bereits im Hintergrund." + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" + +# Debug Ausgabe +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: Zeile %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (Speicherabzug geschrieben)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(gegenwärtiges Arbeitsverzeichnis ist: %s)\n" + +# interner Fehler +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp war nicht erfolgreich." + +# interner Fehler +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: Keine Jobsteuerung im Hintergrund." + +# interner Fehler +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: line discipline" + +# interner Fehler +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "Kann die Prozessgruppe des Terminals nicht setzen (%d)." + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "Keine Jobsteuerung in dieser Shell." + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: Zusicherung gescheitert: %s.\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: Zusicherung verpfuscht\\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "Unbekannt" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "Malloc: Ein internet Speicherbereich (free list) wurde überschrieben." + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: Wurde für bereits freigegebenen Speicherbereich aufgerufen." + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: Wurde für nicht zugeordneten Speicherbereich aufgerufen." + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: Beginn und Ende Segmentgrößen sind unterschiedlich." + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: Mit nicht zugewiesenen Argument aufgerufen." + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" +"realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "" +"realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: Beginn und Ende Segmentgrößen sind unterschiedlich.<" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" +"register_alloc: Speicherzuordnungstabelle ist mit FIND_ALLOC gefüllt?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" +"register_alloc: %p ist bereits in der Speicherzuordnungstabelle als belegt " +"gekennzeichnet?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" +"register_free: %p ist bereits in der Speicherzuordnungstabelle als frei " +"gekennzeichnet?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "Ungültige Basis" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: Unbekannter Host." + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: unbekannter Dienst." + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: Fehlerhafte Netzwerkspfadangabe." + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "Der Netzwerkbetrieb ist nicht unterstützt." + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: Kann die Regionseinstellungen nicht ändern (%s)." + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: Kann die Regionseinstellungen nicht ändern (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: Kann die Regionseinstellungen nicht ändern (%s)." + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: Kann die Regionseinstellungen nicht ändern (%s): %s" + +# Du oder Sie? +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Sie haben Post in $_." + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Sie haben neue Post in $_." + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Die Post in %s wurde bereits gelesen.\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "Syntaxfehler: Es wird ein arithmetischer Ausdruck benötigt." + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "Syntax Fehler: unerwartetes `;'." + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "Syntaxfehler: »((%s))«." + +# interner Fehler +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: Falscher Befehlstyp %d." + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"Das in der Zeile %d beginnende Here-Dokument geht bis zum Dateiende " +"(erwartet wird »%s«)." + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "Dateiende beim Suchen nach »%c« erreicht." + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "Dateiende beim Suchen nach »]]« erreicht." + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "Syntaxfehler im bedingten Ausdruck: Unerwartetes Symbol »%s«." + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "Syntaxfehler im bedingten Ausdruck." + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "Unerwartetes Zeichen: »%s« anstatt von »)«" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "»)« erwartet." + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "Syntaxfehler beim unerwarteten Symbol »%s«" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "Syntaxfehler bei »%s«" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "Syntaxfehler: Unerwartetes Dateiende." + +#: parse.y:6365 +msgid "syntax error" +msgstr "Syntaxfehler" + +# Du oder Sie? +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Verwenden Sie »%s«, um die Shell zu verlassen.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "Dateiende beim Suchen nach zugehöriger »)« erreicht." + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: Funktion »%s« nicht gefunden." + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: Falsches Verbindungszeichen »%d«." + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: Ungültiger Dateideskriptor." + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: »%c«: Ungültiges Formatsymbol." + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "Dateideskriptor außerhalb des gültigen Bereichs." + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: Mehrdeutige Umlenkung." + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: Kann existierende Datei nicht überschreiben." + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: eingeschränkt: Die Ausgabe darf nicht umgeleitet werden." + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "Kann die temporäre Datei für das Hier-Dokument nicht anlegen: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: Kann fd keiner Variable zuweisen." + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" +"Dateinamen der Form /dev/(tcp|udp)/host/port werden ohne Netzwerk nicht " +"unterstützt" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "Umleitungsfehler: Verdoppeln des Dateibezeichners nicht möglich." + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "Konnte das Verzeichnis »/tmp« nicht finden, bitte anlegen." + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp muss ein Verzeichnis sein." + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "Der hübsche Druckmodus wird in interaktiven Schells ignoriert." + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: Ungültige Option" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "Konnte die UID nicht in %d ändern: Die effektive UID ist %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "Konnte die GID nicht in %d ändern: Die effektive GID ist %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "Kann keinen Debugger starten. Der Debugmodus ist gesperrt." + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: Ist ein Verzeichnis." + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Ich habe keinen Benutzernamen!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, Version %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Aufruf:\t%s [Lange GNU-Option] [Option] ...\n" +"\t%s [Lange GNU-Option] [Option] Script-Datei ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Lange GNU-Optionen:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Shell-Optionen:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD oder -c Kommando oder -O shopt_option\t\t(Nur Aufruf)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s oder Option -o\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Geben Sie »%s -c \"help set\"« ein, um mehr über Shell-Optionen zu " +"erfahren.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Geben Sie »%s -c help« ein, um mehr über eingebaute Shellkommandos zu " +"erfahren.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Mit dem Kommando »bashbug« Kommando können Sie Fehler melden.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "Bash-Homepage: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Allgemeine Hilfe für GNU-Software: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: Ungültige Operation" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Falsches Signal." + +#: siglist.c:50 +msgid "Hangup" +msgstr "Aufgelegt" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Unterbrochen (Interrupt)" + +#: siglist.c:58 +msgid "Quit" +msgstr "Quit" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Ungültige Anweisung." + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "Verfolgen/anhalten abfangen (Trace/breakpoint trap)" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Abbruchkommando" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT abfangen (EMT trap)" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Gleitkommafehler" + +#: siglist.c:86 +msgid "Killed" +msgstr "Abgebrochen (Killed)" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Bus-Fehler" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Adressierungsfehler" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Falscher Systemaufruf" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Unterbrochene Pipe" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Wecker" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Abgebrochen (Terminated)" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Dringende IO-Bedingung" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Angehalten (Signal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Prozessbearbeitung wieder aufgenommen." + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Kindprozess abgebrochen oder gestoppt." + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Angehalten (Terminaleingabe)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Angehalten (Terminalausgabe)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "E/A fertig" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Rechenzeitgrenze" + +#: siglist.c:154 +msgid "File limit" +msgstr "Grenze für Dateigröße" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarm (Virtuell)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarm (Profil)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Fenster geändert" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Datei blockiert" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Nutzersignal 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Nutzersignal 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT Eingabedaten ausstehend" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "Spannungsausfall steht bevor" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "Systemausfall steht bevor" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "Verlege den Prozess auf einen anderen Prozessor" + +#: siglist.c:198 +msgid "programming error" +msgstr "Programmierfehler" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT-Monitormodus erlaubt" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT-Monitormodus abgeschaltet" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT-Tonfolge beendet" + +#: siglist.c:214 +msgid "Information request" +msgstr "Informationsanforderung" + +# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00025.html +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Unbekanntes Signal Nr.: %d." + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "Falsche Ersetzung: Kein schließendes »%s« in »%s« enthalten." + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: Kann einem Feldelement keine Liste zuweisen." + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "Kann keine Pipe für die Prozessersetzung erzeugen." + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "Kann den Kindsprozess für die Prozessersetzung nicht erzeugen." + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "Kann nicht die benannte Pipe %s zum Lesen öffnen." + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "Kann nicht die benannte Pipe %s zum Schreiben öffnen." + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "Kann die benannte Pipe %s nicht auf fd %d duplizieren." + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "Kommandoersetzung: NULL-Byte in der Eingabe ignoriert." + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "Kann keine Pipes für Kommandoersetzung erzeugen." + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "Kann keinen Unterprozess für die Kommandoersetzung erzeugen." + +# interner Fehler +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: Kann Pipe nicht als Dateideskriptor 1 duplizieren." + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: Ungültiger Variablenname für Namensreferenz." + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: Ungültige indirekte Expansion." + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: Ungültiger Variablenname." + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: Der Parameter ist nicht gesetzt." + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: Parameter ist leer oder nicht gesetzt." + +# interner Fehler +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: Teilstring-Ausdruck < 0." + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: Falsche Substitution." + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: Kann so nicht zuweisen." + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer " +"Ersetzungen erzwingen." + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "Falsche Ersetzung: Kein schließendes »`« in %s." + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "Keine Entsprechung: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "Argument erwartet." + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: Ganzzahliger Ausdruck erwartet." + +#: test.c:265 +msgid "`)' expected" +msgstr "»)« erwartet." + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "»)« erwartet, %s gefunden." + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: Zweistelliger (binärer) Operator erwartet." + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: Einstelliger (unärer) Operator erwartet." + +#: test.c:881 +msgid "missing `]'" +msgstr "Fehlende »]«" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "Syntax Fehler: unerwartetes `;'." + +#: trap.c:220 +msgid "invalid signal number" +msgstr "Ungültige Signalnummer." + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "Traphandler: Maximale Traphandler-Ebene überschritten (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: Ungültiger Wert in trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +# Programmierfehler +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: Falsches Signal %d." + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "Fehler beim Importieren der Funktionsdefinition für »%s«." + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "Der Shell-Level (%d) ist zu hoch und wird auf 1 zurückgesetzt." + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: no function context at current scope" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: Der Variable darf kein Wert zugewiesen werden." + +# Interner Fehler +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: assigning integer to name reference" + +# Interner Fehler +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: no function context at current scope" + +# Interner Fehler +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s has null exportstr" + +# Interner Fehler +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "invalid character %d in exportstr for %s" + +# Interner Fehler +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "no `=' in exportstr for %s" + +# Interner Fehler +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: head of shell_variables not a function context" + +# Interner Fehler +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: no global_variables context" + +# Interner Fehler +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: head of shell_variables not a temporary environment scope" + +# Interner Fehler +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: cannot open as FILE" + +# Interner Fehler +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: invalid value for trace file descriptor" + +# Interner Fehler +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: compatibility value out of range" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Lizenz GPLv3+: GNU GPL Version 3 oder jünger \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, Version %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Dies ist freie Software. Sie darf verändert und verteilt werden." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Es wird keine Garantie gewährt, soweit das Gesetz es zulässt." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: Konnte keine %lu Bytes reservieren (%lu bytes reserviert)." + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: Konnte keine %lu Bytes reservieren." + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: Konnte keine %lu Bytes reservieren (%lu bytes reserviert)." + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: Konnte keine %lu Bytes reservieren." + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [Name[=Wert] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] Name [Name ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m Tastaturtabelle] [-f Dateiname] [-q Name] [-u Name]\n" +"\t[-r Tastenfolge] [-x Tastenfolge:Shell Kommando]\n" +"\t[Tastenfolge:readline-Funktion oder -Kommando]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [Shellkommando [Argument ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [Ausdruck]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [Verzeichnis]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] Kommando [Argument ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilrntux] [-p] [Name[=Wert] ...]" + +# +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] Name[=Wert] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [Option] Name[=Wert] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [Argument ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [Argument ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f Dateiname] [Name ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [Argument ...]" + +# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00026.html +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts Optionen Variable [Argumente]" + +# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00026.html +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a Name] [Kommando [Argumente ...]] [Umleitung ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e Editor] [-lnr] [Anfang] [Ende] oder fc -s [Muster=Ersetzung] " +"[Kommando]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [Jobbezeichnung]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [Jobbezeichnung ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p Pfadname] [-dt] [Name ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [Muster ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d Offset] [n] oder history -anrw [Dateiname] oder history -ps " +"Argument [Argument...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [Jobbez. ...] or jobs -x Kommando [Arg]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [Jobbezeichnung ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s Signalname | -n Signalnummer | -Signalname] pid | jobspec ... oder " +"kill -l [Signalname]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let Argument [Argument ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a Feld] [-d Begrenzer] [-i Text] [-n Zeichenanzahl] [-N " +"Zeichenanzahl] [-p Prompt] [-t Zeitlimit] [-u fd] [Name ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o Option] [--] [Argument ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [NAME ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [Name[=Wert] ...] oder export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [Name[=Wert] ...] oder readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source Dateiname [Argumente]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". Dateiname [Argumente]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [Ausdruck]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ Argument... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[Argument] Signalbezeichnung ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] Name [Name ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [Grenze]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [Modus]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for Name [in Wort ... ] ; do Kommandos; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( Ausdr1; Ausdr2; Ausdr3 )); do Kommandos; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select Name [in Wort ... ;] do Kommandos; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] Pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case Wort in [Muster [| Muster]...) Kommandos ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if Kommandos; then Kommandos; [ elif Kommandos; then Kommandos; ]... [ else " +"Kommandos; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while Kommandos; do Kommandos; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until Kommandos; do Kommandos; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [Name] Kommando [Umleitungen]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function Name { Kommandos ; } oder Name () { Kommandos ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ Kommandos ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "Jobbezeichnung [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( Ausdruck ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ Ausdruck ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Namen und Bedeutung einiger Shellvariablen" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | Verzeichnis]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [Optionsname ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] Format [Argumente]" + +# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00027.html +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o Option] [-A Aktion]\n" +" [-G Suchmuster] [-W Wortliste] [-F Funktion] [-C Kommando]\n" +" [-X Filtermuster] [-P Prefix] [-S Suffix] [Name ...]" + +# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00027.html +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o Option] [-A Aktion] [-G Suchmuster] [-W " +"Wortliste]\n" +" [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S " +"Suffix]\n" +" [Wort]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o Option] [-DEI] [Name ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d Begrenzer] [-n Anzahl] [-O Quelle] [-s Anzahl] [-t] [-u fd]\n" +" [-C Callback] [-c Menge] [Feldvariable]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d Begrenzer] [-n Anzahl] [-O Quelle] [-s Anzahl] [-t]\n" +" [-u fd] [-C Callback] [-c Menge] [Feldvariable]" + +# alias +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definiert Aliase oder zeigt sie an.\n" +"\n" +" Ohne Argumente wird die Liste der Aliase (Synonyme) in der Form\n" +" »alias Name=Wert« auf die Standardausgabe ausgegeben.\n" +"\n" +" Sonst wird ein Alias für jeden angegebenen Namen definiert, wenn\n" +" für diesen auch ein »Wert« angegeben wurde. Wenn »Wert« mit einem\n" +" Leerzeichen endet, dann wird auch das nächste Wort auf Aliase\n" +" überprüft.\n" +"\n" +" Optionen:\n" +" -p\tGibt alle definierten Aliase aus.\n" +"\n" +" Rückgabewert:\n" +" Meldet Erfolg, außer wenn ein »Name« angegeben worden ist, für den\n" +" kein Alias definiert wurde." + +# unalias +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Entfernt jeden angegebenen Namen von der Aliasliste.\n" +"\n" +" Optionen:\n" +" -a\tEnfernt alle Alias-Definitionen.\n" +"\n" +" Gibt immer Erfolg zurück, außer wenn der Alias nicht existiert." + +# bind +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Bestimmt Readline Tastenzuordnungen und Variablen.\n" +" \n" +" Weist eine Tastensequenz einer Readlinefunktion oder -makro zu\n" +" oder setzt eine Readlinevariable. Die Argumentsyntax ist zu\n" +" den Einträgen in ~/.inputrc äquivalent, aber sie müssen als\n" +" einzelnes Argument übergeben werden. Z.B: bind '\"\\C-x\\C-r\":\n" +" re-read-init-file'.\n" +" \n" +" Optionen:\n" +" -m Keymap Benutzt KEYMAP as Tastaturbelegung für die " +"Laufzeit\n" +" dieses Kommandos. Gültige Keymapnamen sind: " +"emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command und vi-insert.\n" +" -l Listet Funktionsnamen auf.\n" +" -P Listet Funktionsnamen und Tastenzuordnungen auf.\n" +" -p Listet Funktionsnamen und Tastenzuordnungen so " +"auf,\n" +" dass sie direkt als Eingabe verwendet werden " +"können.\n" +" -S Listet Tastenfolgen und deren Werte auf, die " +"Makros \n" +" aufrufen.\n" +" -s Listet Tastenfolgen und deren Werte auf, die " +"Makros \n" +" aufrufen, dass sie als Eingabe wiederverwendet " +"werden\n" +" können.\n" +" -V Listet Variablennamen und Werte auf.\n" +" -v Listet Variablennamen und Werte so auf, dass sie " +"als\n" +" Eingabe verwendet werden können.\n" +" -q Funktionsname Sucht die Tastenfolgen, welche die angegebene\n" +" Funktion aufrufen.\n" +" -u Funktionsname Entfernt alle der Funktion zugeordneten " +"Tastenfolgen.\n" +" -r Tastenfolge Entfernt die Zuweisungen der angegebeben " +"Tastenfolge.\n" +" -f Dateiname Liest die Tastenzuordnungen aus der angegebenen " +"Datei.\n" +" -x Tastenfolge:Shellkommando\tWeist der Tastenfolge das " +"Shellkommando\n" +" \t\t\t\t\tzu.\n" +" -X Listet mit -x erzeugte\n" +" Tastenfolgen und deren Werte\n" +" auf, die Makros aufrufen, dass\n" +" sie als Eingabe wiederverwendet " +"werden\n" +" können.\n" +" \n" +" Rückgabewert: \n" +" Bind gibt 0 zurück, wenn keine unerkannte Option angegeben wurde\n" +" oder ein Fehler eintrat." + +# break +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Verlässt for-, while- oder until-Schleifen.\n" +"\n" +" Break beendet eine »for«-, »while«- oder »until«- Schleife. Wenn »n«\n" +" angegeben ist, werden entsprechend viele geschachtelte Schleifen " +"beendet.\n" +"\n" +" Rückgabewert:\n" +" Der Rückgabewert ist 0, außer »n« ist nicht größer oder gleich 1." + +# continue +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Springt zum Schleifenanfang von for, while, oder until Schleifen.\n" +"\n" +" Springt zum Schleifenanfang der aktuellen »for«, »while« oder »until«\n" +" Schleife. Wenn »n« angegeben ist, wird zum Beginn der »n«-ten\n" +" übergeordneten Schleife gesprungen.\n" +"\n" +" Rückgabewert:\n" +" Der Rückgabewert ist 0, außer wenn »n« nicht größer oder gleich 1 ist." + +# builtin +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Führt ein in der Shell definiertes Kommando aus.\n" +"\n" +" Führt ein in der Shell definiertes Kommando ohne vorherige\n" +" Befehlssuche aus. Dies ist dann nützlich, wenn das Kommando als\n" +" Shell-Funktion reimplementiert werden soll, aber das Kommando\n" +" innerhalb der neuen Funktion aufgerufen wird.\n" +"\n" +" Rückgabewert: \n" +" Der Rückgabewert des aufgerufenen Kommandos oder »falsch«, wenn\n" +" dieses nicht existiert." + +# caller +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Gibt Informationen zum aktuellen Subroutinenaufruf aus.\n" +"\n" +" Ohne Argument wird die Zeilennummer und der Dateiname angezeigt. Mit\n" +" Argument werden Zeilennummer, Subroutinenname und Dateiname ausgegeben.\n" +" Mit diesen Informationen kann ein Stacktrace erzeugt werden.\n" +"\n" +" Das Argument gibt die angezeigte Position im Funktionsaufrufstapel an,\n" +" wobei 0 der aktuelle Funktionsaufruf ist.\n" +"\n" +" Rückgabewert:\n" +" Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das " +"Argument\n" +" ungültig ist, sonst 0." + +# cd +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Wechselt das Arbeitsverzeichnis.\n" +"\n" +" Wechselt in das angegebene Arbeitsverzeichnis. Ohne Angabe eines\n" +" Verzeichnisses wird in das in der Variable HOME definierte\n" +" Verzeichnis gewechselt.\n" +"\n" +" Die Variable CDPATH definiert den Suchpfad, in dem nach dem\n" +" angegebenen Verzeichnisnamen gesucht wird. Mehrere Pfade werden\n" +" durch Doppelpunkte »:« getrennt. Ein leerer Pfadname entspricht\n" +" dem aktuellen Verzeichnis. Mit einem vollständigen Pfadnamen wird\n" +" CDPATH nicht benutzt.\n" +"\n" +" Wird kein entsprechendes Verzeichnis gefunden und die Shelloption\n" +" »cdable_vars« ist gesetzt, dann wird der `Wert' als Variable\n" +" interpretiert. Dessen Inhalt wird dann als Verzeichnisname\n" +" verwendet.\n" +"\n" +" Optionen:\n" +" -L Erzwingt, dass symbolischen Links gefolgt wird.\n" +" Symbolische Links im aktuellen Verzeichnis werden nach\n" +" dem übergeordneten Verzeichnis aufgelöst.\n" +" -P Symbolische Links werden ignoriert. Symbolische\n" +" Links im aktuellen Verzeichnis werden vor dem\n" +" übergeordneten Verzeichnis aufgelöst.\n" +" -e Wenn mit der Option »-P« das aktuelle Arbeitsverzeichnis\n" +" nicht ermittelt werden kann, wird mit einem Rückgabewert\n" +" ungleich 0 abgebrochen.\n" +" -@ Wenn es das System unterstützt, wird eine Datei mit\n" +" erweiterten Attributen als ein Verzeichnis angezeigt,\n" +" welches die erweiterten Attribute enthält.\n" +"\n" +" Standardmäßig wird symbolischen Links gefolgt (Option -L).\n" +" Das übergeordnete Verzeichnis wird ermittelt, indem der\n" +" Dateiname am letzten Schrägstrich gekürzt wird, oder es wird der\n" +" Anfang von DIR verwendet.\n" +"\n" +" Rückgabewert:\n" +" Der Rückgabewert ist 0, wenn das Verzeichnis erfolgreich\n" +" gewechselt wurde, oder wenn die Option -P angegeben und $PWD\n" +" erfolgreich gesetzt werden konnte. Sonst ist er ungleich 0." + +# pwd +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Gibt den Namen des aktuellen Arbeitsverzeichnisses aus.\n" +"\n" +" Optionen:\n" +" -L Gibt den Inhalt der Variable $PWD aus, wenn sie das " +"aktuelle\n" +" Arbeitsverzeichnis enthält.\n" +" -P Gibt den physischen Verzeichnispfad aus, ohne symbolische\n" +" Links.\n" +"\n" +" Standardmäßig wird immer die Option »-L« gesetzt.\n" +"\n" +" Rückgabewert:\n" +" Ist 0, außer wenn eine ungültige Option angegeben oder das aktuelle\n" +" Verzeichnis nicht lesbar ist." + +# colon +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Leeranweisung.\n" +"\n" +" Leeranweisung; das Kommando hat keine Wirkung.\n" +"\n" +" Rückgabewert:\n" +" Das Kommando ist immer »wahr«." + +# true +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Gibt »wahr« zurück.\n" +" \n" +" Rückgabewert:\n" +" Immer »wahr«." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Gibt »falsch« zurück.\n" +" \n" +" Rückgabewert:\n" +" Immer »falsch«." + +# command +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Führt ein einfaches Kommando aus oder zeigt Informationen über Kommandos " +"an.\n" +"\n" +" Führt das Kommando mit den angegebenen Argumenten aus, ohne\n" +" Shell-Funktion nachzuschlagen oder zeigt Informationen über die\n" +" Kommandos an. Dadurch können auch dann Kommandos ausgeführt\n" +" werden, wenn eine Shell-Funktion gleichen Namens existiert.\n" +"\n" +" Optionen:\n" +" -p Es wird ein Standardwert für PATH verwendet, der " +"garantiert,\n" +" dass alle Standard-Dienstprogramme gefunden werden.\n" +" -v Beschreibung des Kommandos ausgeben.\n" +" Ähnlich dem eingebauten Kommando »type«.\n" +" -V Eine ausführlichere Beschreibung jedes Kommandos ausgeben.\n" +"\n" +" Rückgabewert:\n" +" Gibt den Rückgabewert des Kommandos zurück, oder eine Fehlermeldung, " +"wenn\n" +" das Kommando nicht gefunden wird." + +# declare +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Setzt Variablenwerte und deren Attribute.\n" +"\n" +" Deklariert Variablen und weist ihnen Attribute zu. Wenn keine Namen\n" +" angegeben sind, werden die Attribute und Werte aller Variablen " +"ausgegeben.\n" +" \n" +" Optionen:\n" +" -f Schränkt Aktionen oder Anzeigen auf Funktionsnamen\n" +" und Definitionen ein.\n" +" -F Zeigt nur Funktionsnamen an (inklusive Zeilennummer\n" +" und Quelldatei beim Debuggen).\n" +" -g Deklariert globale Varieblen innerhalb einer\n" +" Shellfunktion; wird ansonsten ignoriert.\n" +" -p Zeigt die Attribute und Werte jeder angegebenen\n" +" Variable an.\n" +"\n" +" Attribute setzen:\n" +" -a\tDeklariert ein indiziertes Feld (wenn unterstützt).\n" +" -A\tDeklariert ein assoziatives Feld (wenn unterstützt).\n" +" -i\tDeklariert eine ganzzahlige Variable.\n" +" -l\tKonvertiert die Variabennmamen in Kleinbuchstaben.\n" +" -n\tDer Name wird als Variable interpretiert. \n" +" -r\tDeklariert nur lesbare Variablen.\n" +" -t\tWeist das Attribut »trace« zu.\n" +" -u\tKonvertiert die Variablennamen in Großbuchstaben.\n" +" -x\tExportiert die Variablen über die aktuelle Shell-\n" +" Umgebung hinaus.\n" +"\n" +" Das Voranstellen von »+« anstelle von »-« schaltet die angegebenen\n" +" Attribute ab.\n" +"\n" +" Für ganzzahlige Variablen werden bei der Zuweisung arithmetische\n" +" Berechnungen durchgeführt (siehe »help let«).\n" +"\n" +" Innerhalb einer Funktion werden lokale Variablen erzeugt. Die\n" +" Option »-g« unterdrückt dieses Verhalten.\n" +"\n" +" Rückgabewert:\n" +" Gibt »Erfolg« zurück, außer eine ungültige Option wurde angegeben,\n" +" oder ein Fehler trat auf." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Setzt Variablen Werte und Eigenschaften\n" +"\n" +" Synonym für »declare«. Siehe »help declare«." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Definiert lokale Variablen.\n" +"\n" +" Erzeugt eine lokale Variable Name und weist ihr den Wert Wert zu.\n" +" Option kann eine beliebige von »declare« akzeptierte Option sein.\n" +"\n" +" Lokale Variablen können nur innerhalb einer Funktion benutzt\n" +" werden. Sie sind nur in der sie erzeugenden Funktion und ihren\n" +" Kindern sichtbar.\n" +"\n" +" Rückgabewert: \n" +" Liefert 0 außer bei Angabe einer ungültigen Option, einer\n" +" fehlerhaften Variablenzuweisung oder dem Aufruf außerhalb einer\n" +" Funktion." + +# echo +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Ausgabe der Argumente auf die Standardausgabe.\n" +"\n" +" Zeigt die Argumente auf der Standardausgabe gefolgt von einem\n" +" Zeilenumbruch an.\n" +"\n" +" Optionen:\n" +" -n\tKeinen Zeilenumbruch anfügen\n" +" -e\tInterpretation der folgenden Escape-Sequenzen zulassen\n" +" -E\tKeine Interpretation der Escape-Sequenzen.\n" +"\n" +" »echo« interpretiert die folgenden Escape-Sequenzen:\n" +" \a\tAlarm (Glocke)\n" +" \\b\tRücktaste (Backspace)\n" +" \\c\tweitere Ausgabe unterdrücken\n" +" \\e\tEscape-Zeichen\n" +" \\E\tEscape-Zeichen\n" +" \\f\tSeitenvorschub\n" +" \\n\tZeilenvorschub\n" +" \\r\tWagenrücklauf\n" +" \\t\tHorizontaler Tabulator\n" +" \\v\tVertikaler Tabulator\n" +" \\\\tumgekehrter Schrägstrich (Backslash)\n" +" \\0nnn\tZeichen mit dem ASCII-Code »NNN« (oktal). »NNN« kann null\n" +" \t\tbis drei oktale Ziffern haben.\n" +" \\xHH\tAcht-Bit-Zeichen mit dem Wert »HH« (hexadezimal). »HH«\n" +" \t\tkann eine oder zwei hexadezimale Ziffern haben.\n" +"\n" +" Rückgabewert:\n" +" Gibt »Erfolg« zurück, außer ein Ausgabefehler tritt auf." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Ausgabe der Argumente auf die Standardausgabe.\n" +"\n" +" Zeigt die Argumente auf der Standardausgabe an, gefolgt von einem\n" +" Zeilenumbruch.\n" +"\n" +" Option:\n" +" -n\tkeinen Zeilenumbruch anfügen.\n" +"\n" +" Rückgabewert:\n" +" Gibt »Erfolg« zurück, außer nach einem Schreibfehler." + +# enable +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Eingebaute Shell-Kommandos aktivieren und deaktivieren.\n" +"\n" +" Aktiviert und deaktiviert eingebaute Shell-Kommandos. Die Deaktivierung\n" +" erlaubt Ihnen, eigene Kommandos mit demselben Namen wie die eingebauten\n" +" Kommandos zu nutzen, ohne den kompletten Pfad angeben zu müssen.\n" +"\n" +" Optionen:\n" +" -a\tGibt eine Liste der eingebauten Kommandos aus inklusive der\n" +" \tInformation, ob sie aktiv sind oder nicht.\n" +"\n" +" -n\tdeaktiviert jedes angegebene Kommando oder gibt eine\n" +" \tListe der deaktivierten eingebauten Kommandos aus.\n" +" -p\tGibt eine Liste der eingebauten Kommandos in einem\n" +" \twiederverwendbaren Format aus.\n" +" -s\tGibt nur die Namen der »speziellen« in POSIX eingebauten\n" +" \tKommandos aus.\n" +"\n" +" Optionen zum Beeinflussen des dynamischen Ladens:\n" +" -f\tLädt ein eingebautes Kommando aus der angegebenen Datei.\n" +" -d\tEntfernt ein mit »-f« geladenes Kommando.\n" +"\n" +" Ohne Optionen wird jedes angegebene Kommando aktiviert.\n" +"\n" +" Um das unter $PATH liegende Kommando »test« anstelle der eingebauten\n" +" Version zu nutzen, geben Sie »enable -n test« ein.\n" +"\n" +" Rückgabewert:\n" +" Gibt »Erfolg« zurück, außer Name ist kein eingebautes Kommando\n" +" oder ein Fehler tritt auf." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Führt die Argumente als Shellkommando aus.\n" +"\n" +" Fügt die Argumente zu einer Zeichenkette zusammen und verwendet\n" +" das Ergebnis als Eingebe in eine Shell, welche die enthaltenen\n" +" Kommandos ausführt.\n" +"\n" +" Rückgabewert:\n" +" Der Status des Kommandos oder Erfolg, wenn das Kommando leer war." + +# getopts +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Verarbeitet Optionsargumente.\n" +"\n" +" Getopts wird von Shell-Prozeduren verwendet, um die\n" +" Kommandozeilenoptionen auszuwerten.\n" +"\n" +" \"Optionen\" enthält die auszuwertenden Buchstaben. Ein Doppelpunkt\n" +" nach dem Buchstaben zeigt an, dass ein Argument erwartet wird,\n" +" welches durch ein Leerzeichen von der Option getrennt ist.\n" +"\n" +" Bei jedem Aufruf von »getopts« wird die nächste Option der\n" +" $Variable zugewiesen. Diese wird angelegt, falls sie noch\n" +" nicht existiert. Weiterhin wird der Index des nächsten zu\n" +" verarbeitenden Arguments der Shell-Variablen OPTIND\n" +" zugewiesen. OPTIND wird bei jedem Aufruf einer Shell oder eines\n" +" Shell-Skripts mit 1 initialisiert. Wenn eine Option ein Argument\n" +" benötigt, wird dieses OPTARG zugewiesen.\n" +"\n" +" Für Fehlermeldungen gibt es zwei Varianten. Wenn das erste\n" +" Zeichen des Optionsstrings ein Doppelpunkt ist, wird der stille\n" +" Fehlermodus von »getopts« verwendet. In diesem Modus wird keine\n" +" Fehlermeldung ausgegeben. Wenn eine ungültige Option erkannt wird,\n" +" wird das gefundene Optionenzeichen OPTARG zugewiesen. Wenn ein\n" +" benötigtes Argument fehlt, wird ein »:« der Variable zugewiesen\n" +" und OPTARG auf das gefundene Optionenzeichen gesetzt. Im anderen\n" +" Fehlermodus wird ein »?« der Variable zugewiesen, OPTARG geleert\n" +" und eine Fehlermeldung ausgegeben.\n" +"\n" +" Wenn die Shell-Variable OPTERR den Wert »0« hat, werden durch getopts\n" +" keine Fehlermeldungen ausgegeben, auch wenn das erste Zeichen\n" +" von OPTSTRING kein Doppelpunkt ist. OPTERR hat den Vorgabewert »1«.\n" +"\n" +" Wenn im Aufruf von »getops« die »Argumente« angegeben sind, werden " +"diese\n" +" verarbeitet. Ansonsten werden die von der Position abhängigen\n" +" Parameter ($1, $2, etc.) verarbeitet.\n" +"\n" +" Rückgabewert:\n" +" Gibt »Erfolg« zurück wenn eine Option gefunden wird und\n" +" »gescheitert«, wenn das Ende der Optionen erreicht oder ein Fehler\n" +" aufgetreten ist." + +# exec +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Ersetzt die Shell durch das angegebene Kommando.\n" +"\n" +" Führt das angegebene Kommando einschließlich dessen Optionen an\n" +" Stelle der Shell aus. Wenn kein Kommando angegeben ist, wirken\n" +" alle Weiterleitungen für die aktuellen Shell.\n" +"\n" +" Optionen:\n" +" -a Name\tSetzt den Namen als nulltes Argument für das Kommando.\n" +" -c\tFührt das Kommando in einer leeren Umgebung aus.\n" +" -l\tSetzt einen Strich in das nullte Argument für das Kommando.\n" +"\n" +" Wenn das Kommando nicht ausgeführt werden kann, wird eine nicht\n" +" interaktive Shell beendet, außer die Shell-Option »execfail« ist\n" +" gesetzt.\n" +"\n" +" Rückgabewert:\n" +" Gibt »Erfolg« zurück, außer das Kommando wurde nicht gefunden oder\n" +" ein Weiterleitungsfehler trat auf." + +# exit +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Beendet die aktuelle Shell.\n" +"\n" +" Beendet die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht " +"angegeben\n" +" ist, wird der Rückgabewert des letzten ausgeführten Kommandos übernommen." + +# logout +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Beendet eine Login-Shell.\n" +"\n" +" Beendet eine Login-Shell mit dem Rückgabewert »n«. Wenn logout\n" +" nicht von einer Login-Shell aus ausgeführt wurde, wird ein Fehler\n" +" zurückgegeben." + +# fc +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Bringt einen Job in den Vordergrund.\n" +"\n" +" Bringt den mit JOB_SPEC bezeichneten Prozess als aktuellen Job in den\n" +" Vordergrund. Wenn JOB_SPEC nicht angegeben ist, wird der zuletzt\n" +" angehaltene Job verwendet.\n" +"\n" +" Rückgabewert:\n" +" Status des in den Vordergrund geholten Jobs oder Fehler." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Bringt einen Job in den Hintergrund.\n" +"\n" +" Bringt den mit JOB_SPEC bezeichneten Job in den Hintergrund,\n" +" als ob er mit »&« gestartet wurde.\n" +"\n" +" Rückgabewert:\n" +" Immer Erfolg, außer wenn die Jobsteuerung nicht verfügbar ist\n" +" oder ein Fehler auftritt." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" + +# help +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Informationen zu eingebauten Kommandos.\n" +"\n" +" Zeigt kurze Informationen zu eingebauten Kommandos an. Wenn ein\n" +" Muster angegeben ist, dann wird eine ausführliche Anleitung zu\n" +" allen Kommandos mit zutreffendem Muster angezeigt. Sonst wird die\n" +" Liste der Hilfethemen ausgegeben.\n" +"\n" +" Optionen:\n" +" -d\tKurzbeschreibung für jedes Thema\n" +" -m\tAnzeige im Manpage-Format.\n" +" -s\tGibt eine kurze Zusammenfassung für jedes angegebene\n" +" \tangegebene Thema aus\n" +"\n" +" Argumente:\n" +" Muster\tDas gesuchte Hilfetheme\n" +"\n" +" Rückgabestatus:\n" +" Erfolg, außer wenn das Muster nicht gefunden oder eine ungültige Option\n" +" angegeben wurde." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" + +# [ +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Wertet einen bedingten Ausdruck aus.\n" +"\n" +" Dieses Kommando entspricht dem Kommando »test«. Jedoch muss das\n" +" letzte Argument ein »]« sein, welches die öffnende Klammer »[«\n" +" schließt." + +# times +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Zeigt den Zeitverbrauch an.\n" +"\n" +" Gibt den kumulierte Nutzer- und Systemzeitverbrauch der Shell und\n" +" aller von ihr gestarteten Prozesse aus.\n" +"\n" +" Rückgabewert:\n" +" Immer 0." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" + +#: builtins.c:1431 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" + +#: builtins.c:1502 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" + +# (( )) +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Wertet arithmetische Ausdrücke aus.\n" +"\n" +" Der Ausdruck wird nach den Regeln für arithmetische Berechnungen\n" +" ausgewertet. Diese Schreibweise entspricht »let Ausdruck«.\n" +"\n" +" Rückgabewert: \n" +" Gibt »1« zurück, wenn die Auswertung des letzten Arguments Null\n" +" ergibt, sonst »0«." + +# [[ +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Erweiterte Vergleiche.\n" +" \n" +" Der Status 0 oder 1 wird abhängig vom Vergleichsergebnis zurückgegeben.\n" +" Es werden die gleichen Ausdrücke wie in der »test« Funktion " +"unterstützt,\n" +" die mit folgenden Operatoren verbunden werden können:\n" +" \n" +" ( AUSDRUCK )\tErgibt den Wert des AUSDRUCKs\n" +" ! Ausdruck\t\tNegiert den AUSDRUCK\n" +" AUSDR1 && AUSDR2\tUnd Verknüpfung der Ausdrücke\n" +" AUSDR1 || AUSDR2\tOder Verknüpfung der Ausdrücke\n" +" \n" +" Die `==' und `!=' Operatoren ermöglichen einen Mustervergleich mit dem\n" +" rechten Ausdruck als Muster.\n" +" Der `=~' Operator führt einen Vergleich mit dem regulären Ausdruck\n" +" in der rechten Seite aus.\n" +" \n" +" Die && und || Operatoren werten AUSDR2 nur aus, wenn nicht bereits\n" +" AUSDR1 das gesamte Ergebnis bestimt.\n" +" \n" +" Rückgabewert:\n" +" 0 oder 1 abhängig vom Wert des AUSDRUCKs." + +# variable_help +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +" BASH_VERSION\tVersionsnummer der Bash.\n" +" CDPATH\tEine durch Doppelpunkte getrennte Liste von\n" +" Verzeichnissen, die durchsucht werden, wenn das\n" +" Argument von »cd« nicht im aktuellen Verzeichnis\n" +" gefunden wird.\n" +" GLOBIGNORE Eine durch Doppelpunkte getrennte Liste von\n" +" Dateinamenmustern, die für die Dateinamensergänzung\n" +" ignoriert werden.\n" +" HISTFILE\tDatei, die den Kommandozeilenspeicher enthält.\n" +" HISTFILESIZE\tMaximale Zeilenanzahl dieser Datei.\n" +" HISTSIZE\tMaximale Anzahl von Zeilen, auf die der\n" +" Historymechanismus der Shell zurückgreifen kann.\n" +" HOME\tHeimatverzeichnis des aktuellen Benutzers.\n" +" HOSTNAME Der aktuelle Rechnername.\n" +" HOSTTYPE\tCPU-Typ des aktuellen Rechners.\n" +" IGNOREEOF\tLegt die Reaktion der Shell auf ein EOF-Zeichen fest.\n" +" Wenn die Variable eine ganze Zahl enthält, wird diese\n" +" Anzahl EOF Zeichen (Ctrl-D) abgewartet, bis die Shell\n" +" verlassen wird. Der Vorgabewert ist 10. Ist IGNOREEOF\n" +" nicht gesetzt, signalisiert EOF das Ende der Eingabe.\n" +" MACHTYPE Eine Zeichenkette die das aktuell laufende System " +"beschreibt.\n" +" MAILCHECK\tZeit in Sekunden, nach der nach E-Mails gesehen wird.\n" +" MAILPATH\tEine durch Doppelpunkt getrennte Liste von Dateinamen,\n" +" die nach E-Mail durchsucht werden.\n" +" OSTYPE\tUnix Version, auf der die Bash gegenwärtig läuft.\n" +" PATH\tDurch Doppelpunkt getrennte Liste von Verzeichnissen,\n" +" die nach Kommandos durchsucht werden.\n" +" PROMPT_COMMAND\tKommando, das vor der Anzeige einer primären\n" +" Eingabeaufforderung (PS1) ausgeführt wird.\n" +" PS1 Zeichenkette, die die primäre\n" +" Eingabeaufforderung enthält.\n" +" PS2 Zeichenkette, die die sekundäre\n" +" Eingabeaufforderung enthält.\n" +" PWD Der vollständige aktuelle Verzeichnisname.\n" +" SHELLOPTS Durch Doppelpunkt getrennte Liste der aktiven\n" +" Shell-Optionen.\n" +" TERM\tName des aktuellen Terminaltyps.\n" +" auto_resume Ein Wert ungleich Null bewirkt, dass ein einzelnes\n" +" Kommando auf einer Zeile zunächst in der Liste\n" +" gegenwärtig gestoppter Jobs gesucht und dieser in den\n" +" Vordergrund geholt wird. »exact« bewirkt, dass das\n" +" Kommando genau dem Kommando in der Liste der\n" +" gestoppten Jobs entsprechen muss. Wenn die Variable den\n" +" Wert »substring« enthält, muss das Kommando einem\n" +" Substring der Jobbezeichnung entsprechen. Bei einem\n" +" anderen Wert müssen die ersten Zeichen übereinstimmen.\n" +" histchars Zeichen, die die Befehlswiederholung und die\n" +" Schnellersetzung steuern. An erster Stelle steht\n" +" das Befehlswiederholungszeichen (normalerweise\n" +" `!'); an zweiter das `Schnell-Ersetzen-Zeichen'\n" +" (normalerweise `^'). Das dritte Zeichen ist das\n" +" `Kommentarzeichen' (normalerweise `#').\n" +" HISTIGNORE Eine durch Doppelpunkt getrennte Liste von\n" +" Mustern, welche die in der\n" +" Befehlswiederholungsliste zu speichernden\n" +" Kommandos angibt.\n" + +# pushd +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Fügt ein Verzeichnis dem Stapel hinzu.\n" +"\n" +" Legt einen Verzeichnisnamen auf den Verzeichnisstapel oder rotiert\n" +" diesen so, dass das aktuelle Arbeitsverzeichnis oben liegt. Ohne\n" +" Argumente werden die obersten zwei Verzeichnisse auf dem Stapel\n" +" vertauscht.\n" +"\n" +" Optionen: -n Es wird nur das angebene Verzeichnis dem Stapel\n" +" \thinzugefügt, aber nicht in das Verzeichnis gewechselt.\n" +"\n" +" Argumente: \n" +" +N\tRotiert den Stapel so, dass das N'te Verzeichnis (angezeigt\n" +" von `dirs', gezählt von links) oben auf dem Stapels liegt.\n" +"\n" +" -N\tRotiert den Stapel so, dass das N'te Verzeichnis (angezeigt\n" +" von `dirs', gezählt von rechts) sich an der Spitze des Stapels\n" +" \tbefindet.\n" +"\n" +" Der Verzeichnisstapel kann mit dem Kommando `dirs' angezeigt\n" +" werden.\n" +"\n" +" Rückgabewert: \n" +" Gibt Erfolg zurück, außer wenn ein ungültiges Argument angegeben\n" +" wurde oder der Verzeichniswechsel nicht erfolgreich war." + +# popd +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Entfernt Einträge vom Verzeichnisstapel.\n" +"\n" +" Entfernt Einträge vom Verzeichnisstapel. Ohne Argumente wird der\n" +" oberste Eintrag entfernt und in das neue oberste Verzeichnis\n" +" gewechselt.\n" +"\n" +" Optionen:\n" +" -n\tEntfernt nur den Verzeichniseintrag und wechselt nicht\n" +" \tdas Verzeichnis.\n" +" \n" +" Argumente:\n" +" +N\tEntfernt den N-ten Eintrag von links, gezählt von\n" +" Null, aus der von »dirs« anzeigten Liste. Beispielsweise\n" +" entfernen »popd +0« den ersten und »popd +1« den zweiten\n" +" Verzeichniseintrag.\n" +"\n" +" -N\tEntfernt den N-ten Eintrag von rechts, gezählt von Null,\n" +" \taus der von »dirs« angeigten Liste. Beispielsweise entfernen\n" +" »popd -0« den letzten und »popd -1« den vorletzten\n" +" Verzeichniseintrag.\n" +"\n" +" Mit »dirs« kann der Verzeichnisstapel angezeigt werden.\n" +"\n" +" Rückgabewert:\n" +" Gibt 0 zurück, außer wenn ein ungültiges Argument angegeben\n" +" wurde oder der Verzeichniswechsel nicht erfolgreich war." + +# dirs +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Zeigt den Verzeichnisstapel an.\n" +"\n" +" Zeigt die Liste der gegenwärtig gespeicherten Verzeichnisse.\n" +" Diese werden mit dem `pushd' Kommando eingetragen und mit dem\n" +" `popd' Kommando ausgelesen.\n" +"\n" +" Optionen:\n" +" -c Löscht den Verzeichnisstapel.\n" +" -l Keine Abkürzung für das Heimatverzeichnis durch die\n" +" Tilde (~).\n" +" -p Ausgabe von einem Eintrag pro Zeile.\n" +" -v Ausgabe von einem Eintrag pro Zeile mit Angabe der\n" +" Position im Stapel<\n" +"\n" +" Argumente:\n" +" +N Gibt das N'te Element von links der Liste aus, die\n" +" ohne Argumente ausgegeben wird. Die Zählung beginnt\n" +" bei 0.\n" +" -N Gibt das N'te Element von rechts der Liste aus, die\n" +" ohne Argumente ausgegeben wird. Die Zählung beginnt\n" +" bei 0.\n" +"\n" +" Rückgabewert:\n" +" Gibt Erfolg zurück, außer bei einer ungültigen Option oder wenn\n" +" ein Fehler auftritt." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Setzt oder löscht Shell-Optionen.\n" +"\n" +" Ändert die in »Optionsnamen« genannten Shell-Optionen. Ohne\n" +" Argumente wird eine Liste der Shell-Optionen und deren Status\n" +" ausgegeben.\n" +"\n" +" Optionen:\n" +" -o Beschränkt die Optionsmanen auf die, welche mit \n" +" »set -o« definiert werden müssen.\n" +" -p Gibt alle Shelloptionen und deren Status aus.\n" +" -q Unterdrückt Ausgaben.\n" +" -s Setzt jede Option in »Optionsname.«\n" +" -u Deaktiviert jede Option in »Optionsname«.\n" +"\n" +" Rückgabewert:\n" +" Gibt Erfolg zurück, wenn eine Option gesetzt worden ist. Wenn\n" +" eine ungültige Option angegeben wurde oder eine Option deaktiviert\n" +" worden ist, wird ein Fehler zurückgegeben." + +# printf +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formatierte Ausgabe der ARGUMENTE.\n" +"\n" +" Optionen:\n" +" -v var\tDie formatierte Ausgabe ver Variable var zuweisen statt\n" +" \tsie an die Standardausgebe zu senden.\n" +"\n" +" Die FORMAT-Zeichenkette kann einfache Zeichen enthalten, die " +"unverändert\n" +" an die Standardausgabe geschickt werden. Escape-Sequenzen werden " +"umgewandelt\n" +" und an die Standardausgabe geschickt sowie Formatanweisungen, welche " +"das \n" +" nachfolgende ARGUMENT auswerten und ausgeben.\n" +"\n" +" Gegenüber der in printf(1) beschriebenen Standardverion werden " +"zusätzliche\n" +" Formatanweisungen ausgewertet:\n" +"\n" +" %b\tWertet Escape-Sequenzen des zugehörigen Arguments aus.\n" +" %q\tBettet das Argument so ein, dass es als Shelleingabe\n" +" verwendet werden kann.\n" +" %(fmt)T\tAusgabe der aus FMT entstehende Datum-Zeit Zeichenkette, " +"dass\n" +" sie als Zeichenkette für strftime(3) verwendet werden kann.\n" +"\n" +" Die Formatangabe wird wiederverwendet, bis alle Argumente ausgewertet\n" +" sind. Wenn weniger Argumente als Formatangaben vorhanden sind, werden " +"für\n" +" die Argumente Nullwerte bzw. leere Zeichenketten eingesetzt.\n" +"\n" +" Rücgabewert:\n" +" Gibt Erfolg zurück, außer es wird eine ungültige Option angegeben oder " +"ein\n" +" Aus- bzw. Zuweisungsfehler auftritt." + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +# compgen +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Zeigt mögliche Komplettierungen.\n" +"\n" +" Wird in Shellfunktionen benutzt, um mögliche Komplettierungen " +"anzuzeigen.\n" +" Wenn das optionale Wort-Argument angegeben ist, werden Komplettierungen\n" +" für dieses Wort erzeugt.\n" +" \n" +" Rückgabewert:\n" +" Falsche Optionen oder Fehler führen zu Rückgabewerten ungleich Null." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" + +# readarray +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Liest Zeilen einer Datei in eine Array-Variable.\n" +"\n" +" Ist ein Synonym für »mapfile«." + +# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00025.html +#~ msgid "Unknown Signal #" +#~ msgstr "Unbekannte Signalnummer" diff --git a/bash-5.1/po/el.gmo b/bash-5.1/po/el.gmo new file mode 100644 index 0000000000000000000000000000000000000000..97304da9e17ce96948b65c587ad07cd67159658f GIT binary patch literal 74685 zcmc${34mNxnf8C<0wgN9feIoQBqo7WHUzQ57D#|d=!7IJ8rx2FclAQ5t14C1SrnCh zQNUf?g~1&NM!*=hXw=bh#?JT6IF6$;4vynKI^(G0d^3LI_j}&=+*|inRd)h9|9>U7 zpSzrUmiN5ddC$4`e)ri=c~`{m=QE<{h2XV^MbSH+6h;61BAtz*Q|Cp|3E<1YXM;oF zY2a3H7I;5+D7Xha2%H3U>tBP<1%C}51I{FqBfxp!;ow=|Oz;x$S>VQSyμQ2E>* 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 Kr&rlZ70mzZ_+Rt@ literal 0 HcmV?d00001 diff --git a/bash-5.1/po/el.po b/bash-5.1/po/el.po new file mode 100644 index 0000000..ed9fb5b --- /dev/null +++ b/bash-5.1/po/el.po @@ -0,0 +1,4613 @@ +# translation of bash to Greek +# Copyright (C) 2013 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# +# Lefteris Dimitroulakis , 2013, 2016, 2017. +msgid "" +msgstr "" +"Project-Id-Version: bash-4.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2017-06-21 17:08+0300\n" +"Last-Translator: Lefteris Dimitroulakis \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.5\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "κακός δείκτης πίνακα" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: αφαίÏεση του χαÏακτηÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï nameref " + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: αδυναμία μετατÏοπής indexed πίνακα σε associative πίνακα " + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: μη έγκυÏο κλειδί associative πίνακα " + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: αδυναμία εκχώÏησης σε μη αÏιθμητικό δείκτη " + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: αδυναμία δημιουÏγίας: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: δεν μποÏÏŽ να βÏω keymap για εντολή" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: ο Ï€Ïώτος μη-λευκό διάστημα χαÏακτήÏας δεν είναι «\"» " + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "όχι «%c» κλεισήματος σε %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: απουσιάζει διαχωÏιστής δίστιγμο " + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "«%s»: αδυναμία αποσÏνδεσης" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "brace expansion: αδυναμία εκχώÏησης μνήμης για %s " + +#: braces.c:406 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "brace expansion: αδυναμία εκχώÏησης μνήμης για %d στοιχεία " + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "brace expansion: αδυναμία εκχώÏησης μνήμης για «%s»" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "«%s»: μη έγκυÏο ψευδώνημο" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "μη ενεÏγοποιημένο line editing" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "«%s»: μη έγκυÏο όνομα keymap" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: αδυναμία ανάγνωσης: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "«%s»: άγνωστο όνομα συνάÏτησης" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s δεν έχει συνδεθεί με κανένα πλήκτÏο.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s μποÏεί να κληθεί μέσω " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: αδυναμία αποσÏνδεσης" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "αÏιθμός βÏόχων" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "έχει μόνο νόημα σε ένα βÏόχο «for», «while», ή «until»" + +#: builtins/caller.def:136 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME δεν έχει οÏιστεί" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "πάÏα πολλά οÏίσματα" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "κατάλογος nul" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD δεν έχει οÏιστεί" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "γÏαμμή %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "Ï€Ïοειδοποίηση: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: χÏήση: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: η επιλογή απαιτεί ÏŒÏισμα" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: απαιτείται αÏιθμητικό ÏŒÏισμα" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: δεν βÏέθηκε" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: μη έγκυÏη επιλογή" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: μη έγκυÏο όνομα επιλογής" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "«%s»: μή έγκυÏο αναγνωÏιστικό " + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "μη έγκυÏος οκταδικός αÏιθμός" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "μη έγκυÏος εξαδικός αÏιθμός" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "μη έγκυÏος αÏιθμός" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: μη έγκυÏη Ï€ÏοδιαγÏαφή σήματος" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "«%s»: όχι pid ή έγκυÏο job spec" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: μεταβλητή μόνο για ανάγνωση" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s εκτός οÏίων" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "ÏŒÏισμα" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s εκτός οÏίων" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: δεν υπάÏχει τέτοια εÏγασία" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: όχι έλεγχος εγασιών " + +#: builtins/common.c:294 +msgid "no job control" +msgstr "όχι έλεγχος εÏγασιών" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: πεÏιοÏισμένο " + +#: builtins/common.c:306 +msgid "restricted" +msgstr "πεÏιοÏισμένο" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: όχι ένα builtin κελÏφους " + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "σφάλμα εγγÏαφής: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "σφάλμα κατά τον οÏισμό των χαÏακτηÏιστικών τεÏματικοÏ: %s " + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "σφάλμα κατά την λήψη των χαÏακτηÏιστικών τεÏματικοÏ: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: σφάλμα κατά την ανάκτηση Ï„Ïέχοντος καταλόγου: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: ασαφείς Ï€ÏοδιαγÏαφές εÏγασίας" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "βοήθεια μη διαθέσιμη σ' αυτήν την έκδοση " + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: αδυναμία unset: %s μόνο για ανάγνωση" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: αδυναμία «unset»" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: μη έγκυÏο όνομα ενέÏγειας" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: δεν υπάÏχει Ï€ÏοδιαγÏαφή συμπλήÏωσης" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "Ï€Ïοειδοποίηση: η επιλογή -F μποÏεί να μη δουλέψει όπως πεÏιμένεις" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "Ï€Ïοειδοποίηση: η επιλογή -C ίσως δεν δουλέψει όπως αναμένετε" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "η λειτουÏγία συμπλήÏωσης δεν εκτελείται επί του παÏόντος " + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "μποÏεί να χÏησιμοποιηθεί μόνο μέσα σε συνάÏτηση" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: η μεταβλητή αναφοÏάς δεν μποÏεί να είναι πίνακας " + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: nameref αυτοαναφοÏά μεταβλητής δεν επιτÏέπεται " + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: κυκλική αναφοÏά ονόματος " + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "«%s»: μη έγκυÏο όνομα μεταβλητής για όνομα αναφοÏάς " + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "" +"η επιλογή «-f» δεν μποÏεί να χÏησιμοποιηθεί για τη δημιουÏγία συναÏτήσεων" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: συνάÏτηση μόνο για ανάγνωση" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: η σÏνθετη εκχώÏηση πίνακα αποÏÏίφθηκε" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: αδυναμία καταστÏοφής μεταβλητής πίνακα κατ' αυτόν τον Ï„Ïόπο " + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: αδυναμία μετατÏοπής associative πίνακα σε indexed πίνακα " + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "δυναμική φόÏτωση μη διαθέσημη" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "αδυναμία ανοίγματος κοινόχÏηστου αντικειμένου %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "αδυναμία εÏÏεσης %s στο κοινόχÏηστο αντικείμενο %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: δεν φοÏτώθηκε δυναμικά" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "Η συνάÏτηση φοÏτώματος του %s επιστÏέφει λάθος (%d): δεν φοÏτώθηκε " + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: δεν φοÏτώθηκε δυναμικά" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: αδυναμία διαγÏαφής: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: είναι κατάλογος" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: όχι κανονικό αÏχείο" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: αÏχείο Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: αδυναμία εκτέλεσης Î´Ï…Î±Î´Î¹ÎºÎ¿Ï Î±Ïχείου" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: αδυναμία εκτέλεσης: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "logout\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "όχι login shell: χÏησιμοποίησε «exit»" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "ΥπάÏχουν σταματημένες εÏγασίες.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "ΥπάÏχουν εÏγασίες που Ï„Ïέχουν.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "δεν βÏέθηκε εντολή" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "history specification" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: αδυναμία ανοίγματος Ï€ÏοσωÏÎ¹Î½Î¿Ï Î±Ïχείου: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "Ï„Ïέχων" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "η εÏγασία %d ξεκίνησε χωÏίς έλεγχο εÏγασιών " + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: μη επιτÏεπόμενη επιλογή -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: η επιλογή απαιτεί ένα ÏŒÏισμα -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hashing απενεÏγοποιημένο " + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: πίνακας hash κενός\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "hits\tcommand\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Εντολές κελÏφους που ταιÏιάζουν στη λέξη-κλειδί `" +msgstr[1] "Εντολές κελÏφους που ταιÏιάζουν στις λέξεις-κλειδί" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"ουδεμία βοήθεια ταιÏιάζει με «%s». Δοκιμάστε «help help» ή «man -k %s» ή " +"«info %s»." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: αδυναμία ανοίγματος: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Αυτές οι εντολές οÏίζονται εσωτεÏικά. Δώσε «help» για να δεις την λίστα.\n" +"Δώσε «help name» για να δεις πεÏισσότεÏα για την συνάÏτηση «name».\n" +"ΧÏησιμοποίησε «info bash» για να βÏεις πεÏισσότεÏα σχετικά με το κέλυφος.\n" +"ΧÏησιμοποίησε «man -k» ή «info» για να βÏεις πεÏισσότεÏα για εντολές από την " +"λίστα.\n" +"\n" +"ΑστεÏίσκος (*) δίπλα στο όνομα σημαίνει ότι η εντολή είναι " +"απενεÏγοποιημένη.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "δεν μποÏÏŽ να χÏησιμοποιήσω πεÏισσότεÏες της μιας από τις -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "θέση στο ιστοÏικό" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: μη έγκυÏη χÏονοσήμανση" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: αποτυχία inlib" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "δεν επιτÏέπονται άλλες επιλογές με την «-x»" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: οÏίσματα Ï€Ïέπει να είναι ID διεÏγασιών ή εÏγασιών" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Άγνωστο σφάλμα" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "αναμενόταν έκφÏαση" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: μη δικτοδοτημένος πίνακας" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: μη έγκυÏη Ï€ÏοδιαγÏαφή πεÏιγÏαφέα αÏχείου" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: μη έγκυÏος πεÏιγÏαφέας αÏχείου: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: μη έγκυÏος αÏιθμός γÏαμμής" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: μη έγκυÏη αÏχή πίνακα " + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: μη έγκυÏο κβάντο του callback " + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "όνομα μεταβλητής πίνακα κενό " + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "απαιτείται υποστήÏιξη μεταβλητής πίνακος" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "«%s»: απουσία χαÏακτήÏα φοÏμαÏίσματος " + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "«%c»: μη έγκυÏη Ï€ÏοδιαγÏαφή για φοÏμά χÏόνου" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "«%c»: μη έγκυÏος χαÏακτήÏας φοÏμαÏίσματος" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "Ï€Ïοειδοποίηση: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "Ï€Ïόβλημα ανάλυσης του format: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "απουσία hex ψηφίου για \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "απουσία ψηφίου unicode για \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "όχι άλλος κατάλογος" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: μη έγκυÏο ÏŒÏισμα" + +#: builtins/pushd.def:480 +msgid "" +msgstr "<όχι Ï„Ïέχων κατάλογος>" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "κενή στίβα καταλόγου" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "δείκτης στοίβας καταλόγου" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: μη έγκυÏη Ï€ÏοδιαγÏαφή timeout " + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "σφάλμα ανάγνωσης: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "«επιστÏοφή» είναι μόνο δυνατή από συνάÏτηση ή sourced script " + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "«unset» δεν μποÏεί να εφαÏμοστεί συγχÏόνως σε συνάÏτηση και μεταβλητή" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: δεν είναι μεταβλητή πίνακα" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: δεν είναι συνάÏτηση" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: αδυναμία εξαγωγής" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "αÏιθμός του « shift »" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "" +"οι επιλογές κελÏφους δεν είναι δυνατόν συγχÏόνως να ενεÏγοποιηθοÏν και " +"απενεÏγοποιηθοÏν" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: μη έγκυÏο όνομα επιλογής" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "απαιτείται όνομα αÏχείου για ÏŒÏισμα" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: αÏχείο δεν βÏέθηκε" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "αναστολή αδÏνατη " + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "ένα κέλυφος σÏνδεσης δεν μποÏεί ν' ανασταλεί " + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s είναι ψευδώνημο του «%s»\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s αποτελεί δεσμευμένη λέξη του κελÏφους\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s είναι συνάÏτηση\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s είναι ένα ειδικό builtin\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s είναι ένα builtin κελÏφους\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s είναι %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s is hashed (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: μη έγκυÏο ÏŒÏισμα οÏίου" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "«%c»: λάθος διαταγή" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: αδÏνατον να πάÏω το ÏŒÏιο: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "ÏŒÏιο" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: αδυναμία μεταβολής οÏίου: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "οκταδικός αÏιθμός" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': μη έγκυÏος τελεστής ÏƒÏ…Î¼Î²Î¿Î»Î¹ÎºÎ¿Ï mode" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': μη έγκυÏος χαÏακτήÏας ÏƒÏ…Î¼Î²Î¿Î»Î¹ÎºÎ¿Ï mode " + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " γÏαμμή " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "τελευταία εντολή: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "ΑκÏÏωση..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:462 +msgid "unknown command error" +msgstr "σφάλμα άγνωστης εντολής" + +#: error.c:463 +msgid "bad command type" +msgstr "λάθος Ï„Ïπος εντολής" + +#: error.c:464 +msgid "bad connector" +msgstr "bad connector" + +#: error.c:465 +msgid "bad jump" +msgstr "κακό άλμα" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: μεταβλητή χωÏίς σÏνδεση " + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aη αναμονή για δεδομένα έληξε: αυτόματη αποσÏνδεση\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "αδυναμία ανακατεÏθυνσης τυπικής εισόδου από /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: «%c»: μη έγκυÏος χαÏακτήÏας μοÏφοποίησης" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] υφίσταται ακόμη " + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "pipe error" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεÏάστηκε (%d) " + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: μέγιστο επίπεδο φωλιάσματος source ξεπεÏάστηκε (%d) " + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: μέγιστο επίπεδο φωλιάσματος συνάÏτησης ξεπεÏάστηκε (%d) " + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: πεÏιοÏισμός: δεν μποÏεί να πεÏιέχεται «/» σε όνομα εντολής" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: εντολή δεν βÏέθηκε" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: κακός interpreter " + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: αδυναμία εκτέλεσης Î´Ï…Î±Î´Î¹ÎºÎ¿Ï Î±Ïχείου: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "«%s»: είναι ειδικό builtin" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "αδυναμία αντιγÏαφής του fd %d στον fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "συντακτικό σφάλμα στην έκφÏαση" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "απόπειÏα ανάθεσης σε μη-μεταβλητή" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "συντακτικό σφάλμα στην έκφÏαση" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "διαίÏεση διά 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "bug: κακό σÏμβολο για expassign " + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "«:» αναμενόταν για μια έκφÏαση υπό συνθήκη" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "εκθέτης μικÏότεÏος του 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "αναγνωÏιστικό αναμενόταν μετά από pre-increment ή pre-decrement " + +#: expr.c:1056 +msgid "missing `)'" +msgstr "λείπει «)»" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "syntax error: αναμενόταν τελεστέος" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntax error: μη έγκυÏος αÏιθμητικός τελεστής" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (το λανθασμένο σÏμβολο είναι \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "μη έγκυÏη αÏιθμητική βάση" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: μη έγκυÏος αÏιθμός γÏαμμής" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "τιμή Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î· για βάση" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: σφάλμα έκφÏασης\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: αδυναμία Ï€Ïόσβασης στο γονικό κατάλογο" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "αδυναμία επανάταξης nodelay mode για fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"αδυναμία εκχώÏησης νέου πεÏιγÏαφέα αÏχείου για είσοδο του bash από fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: ο buffer υπάÏχει ήδη για νέο fd %d " + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "η διεÏγασία κλώνος %d εμφανίζεται στην εÏγασία που Ï„Ïέχει %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "διαγÏαφή σταματημένης εγασίας %d με ομάδα %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) μαÏκαÏισμένη ως ακόμα ζωντανή " + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: δεν υπάÏχει τέτοιο pid" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Σήμα %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Done" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "σταματημένο" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "σταματημένο(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "υπό εκτέλεση" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Done(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Έξοδος %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Άγνωστη κατάσταση" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(core dumped) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "child setpgid (%ld to %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: διεÏγασία %ld δεν αποτελεί θυγατÏική Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… κελÏφους" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Δεν υπάÏχουν στοιχεία για διεÏγασία %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: η εÏγασία %d είναι σταματημένη" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: δεν υπάÏχει τέτοια εÏγασία" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: η εÏγασία τεÏματίστηκε" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: εÏγασία %d ήδη στο παÏασκήνιο" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" +"waitchld: ενεÏγοποίηση WNOHANG ώστε ν' αποφευχθεί οÏιστικό μπλοκάÏισμα " + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: γÏαμμή %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (core dumped)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(τώÏα wd: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: αποτυχία getpgrp" + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "αδυναμία ÏÏθμισης της ομάδας της διεÏγασίας του τεÏÎ¼Î±Ï„Î¹ÎºÎ¿Ï (%d) " + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "δεν υπάÏχει job control σ'αυτό το κέλυφος" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: αποτυχημένη assertion: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "άγνωστο" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: κλήθηκε με ÏŒÏισμα ήδη ελευθεÏωμένο μπλοκ " + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: κλήθηκε με ÏŒÏισμα ένα μη εκχωÏημένο μπλοκ " + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου " + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου " + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: τα μεγέθη των κομματιών στην αÏχή και το τέλος διαφέÏουν " + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: κλήθηκε με ÏŒÏισμα ένα μη εκχωÏημένο μπλοκ " + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: μεγέθη κομματιών σ' αÏχή και τέλος διαφέÏουν " + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: πίνακας alloc γεμάτος με FIND_ALLOC;\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p ήδη στον πίνακα ως εκχωÏισμένος;\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p ήδη στον πίνακα ως ελεÏθεÏος;\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "μη έγκυÏη βάση" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: άγνωστος host" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: μη έγκυÏη υπηÏεσία" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: κακιά Ï€ÏοδιαγÏαφή διαδÏομής δικτÏου " + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "μη υποστηÏιζόμενες δικτιακές υπηÏεσίες" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Έχεις μήνυμα στο $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Έχεις νέο μήνυμα στο $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Το μήνυμα στο %s διαβάστηκε\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "syntax error: απαιτείται αÏιθμητική έκφÏαση" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "συντακτικό σφάλμα: δεν αναμενόταν «;»" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "συντακτικό σφάλμα: «((%s))»" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: ο Ï„Ïπος οδηγίας δεν είναι σωστός %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"here-document στη γÏαμμή %d με ÏŒÏιο το τέλος του αÏχείου (αντί του «%s»)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: η οδηγία της ανακατεÏθυνσης «%d» εκτός οÏίων" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) υπεÏβαίνει το SIZE_MAX (%lu): γÏαμμή " +"κόπηκε " + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "ο μέγιστος αÏιθμός here-document ξεπεÏάστηκε " + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "μη αναμενόμενο EOF κατά την αναζήτηση «%c»" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "μη αναμενόμενο EOF ενώ έψαχνα για «]]»" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntax error in conditional expression: μη αναμενόμενο σÏμβολο «%s»" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "συντακτικό σφάλμα σ' έκφÏαση υπό συνθήκη " + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "μη αναμενόμενο σÏμβολο «%s», αναμενόταν «)»" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "αναμενόταν «)»" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "απÏοσδόκητο ÏŒÏισμα «%s» στον υπό αίÏεση μοναδιαίο τελεστή " + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "απÏοσδόκητο ÏŒÏισμα για τον μοναδιαίο τελεστή " + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "απÏοσδόκητο σÏμβολο «%s» βÏέθηκε αντί για δυαδικό τελεστή υπό αίÏεση " + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "αναμενόταν δυαδικός τελεστής υπό αίÏεση " + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "απÏοσδόκητο ÏŒÏισμα «%s» για δυαδικό τελεστή υπό αίÏεση " + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "απÏοσδόκητο ÏŒÏισμα για δυαδικό τελεστή υπό αίÏεση " + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "απÏοσδόκητο σÏμβολο «%c» σε εντολή υπό αίÏεση " + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "απÏοσδόκητο σÏμβολο «%s» σε εντολή υπό αίÏεση " + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "απÏοσδόκητο σÏμβολο %d σε εντολή υπό αίÏεση " + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "συντακτικό σφάλμα κοντά στο μη αναμενόμενο σÏμβολο «%s»" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "συντακτικό σφάλμα κοντά σε «%s»" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "syntax error: μη αναμενόμενο τέλος αÏχείου" + +#: parse.y:6365 +msgid "syntax error" +msgstr "συντακτικό σφάλμα" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "ΧÏήση «%s» για έξοδο από το κέλυφος.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "μη αναμενόμενο EOF ενώ έψαχνα «)»" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: η συνάÏτηση «%s» δεν βÏέθηκε" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: μη έγκυÏος πεÏιγÏαφέας αÏχείου" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: NULL file pointer" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: «%c»: μη έγκυÏη μοÏφή χαÏακτήÏα" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "πεÏιγÏαφέας αÏχείου εκτός οÏίων" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: ασαφής ανακατεÏθυνση" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: αδυναμία εγγÏαφής πάνω σε υπάÏχον αÏχείο" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricted: αδυναμία ανακατεÏθυνσης εξόδου" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "αδυναμία δημιουÏγίας Ï€ÏοσωÏÎ¹Î½Î¿Ï Î±Ïχείου για here-document: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: αδυναμία ανάθεσης fd σε μεταβλητή" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port δεν υποστηÏίζεται χωÏίς δικτÏωση" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "δεν μπόÏεσα να βÏω /tmp, παÏακαλώ να τον δημιουÏγήσετε!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp Ï€Ïέπει να είναι ένα έγκυÏο όνομα αÏχείου" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: μη έγκυÏη επιλογή" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "αδυναμία ÏÏθμισης uid σε %d: effective uid %d " + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "αδυναμί ÏÏθμισης gid σε %d: effective gid %d " + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "αδυναμία εκκίνησης του debugger, debugging απενεÏγοποιημένο " + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: είναι κατάλογος" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Δεν έχω όνομα!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, έκδοση %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"ΧÏήση:\t%s [μακÏά επιλογή GNU] [επιλογή] ...\n" +"\t%s [μακÏά επιλογή GNU] [επιλοη] script-file ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "ΜακÏές επιλογές GNU:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Επιλογές κελÏφους:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD ή -c εντολή ή -O shopt_option\t\t(invocation only)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ή επιλογή -o\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"ΠληκτÏολόγησε «%s -c \"help set\"» για πληÏοφοÏίες επί των επιλογών " +"κελÏφους.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"ΠληκτÏολόγησε «%s -c help» για πεÏισσότεÏες πληÏοφοÏίες σχετικά με τις " +"ενσωματομένες στο κέλυφος εντολές.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "ΧÏησιμοποίησε την εντολή «bashbug» για αναφοÏά σφαλμάτων.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "σελίδα του bash: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Γενική βοήθεια για την χÏήση του Î»Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÎ¿Ï GNU: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: μη έγκυÏη λειτουÏγία" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "ΨεÏτικο σήματος " + +#: siglist.c:50 +msgid "Hangup" +msgstr "Hangup" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Διακοπή" + +#: siglist.c:58 +msgid "Quit" +msgstr "Quit" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Μη έγκυÏη οδηγία" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "οδηγία ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "οδηγία EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "ΕξαίÏεση κινητής υποδιαστολής" + +#: siglist.c:86 +msgid "Killed" +msgstr "Killed" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Bus error" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Σφάλμα κατάτμησης" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Κακή κλήση συστήματος " + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Σπασμένη σωλήνα" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Ρολόι συναγεÏμοÏ" + +#: siglist.c:110 +msgid "Terminated" +msgstr "τεÏματισμός" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Επείγουσα κατάσταση IO" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Σταματημένο (σήμα)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Συνέχεια" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Child death or stop" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Σταματημένο (είσοδος tty)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Σταματημένο (έξοδος tty)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O ready" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "ÏŒÏιο CPU" + +#: siglist.c:154 +msgid "File limit" +msgstr "ÎŒÏιο αÏχείου" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarm (virtual)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarm (profile)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "ΠαÏάθυÏο άλλαξε" + +#: siglist.c:170 +msgid "Record lock" +msgstr "" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Σήμα χÏήστη 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Σήμα χÏήστη 2 " + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "Δεδομένα εισόδου HFT στην αναμονή" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "επικείμενη έλλειψη ÏεÏματος" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "επικείμενη πτώση συστήματος" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "μετανάστευση διεÏγασίας σε άλλη CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "Ï€ÏογÏαμματιστικό σφάλμα" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "" + +#: siglist.c:214 +msgid "Information request" +msgstr "Αίτηση για πληÏοφοÏίες" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Άγνωστο σήμα #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "κακή αντικατάσταση: όχι «%s» που κλείνει στο %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: αδυναμία εκχώÏησης λίστας σε στοιχείο του πίνακα " + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "αδυναμία δημιουÏγίας σωλήνα για αντικατάσταση διεÏγασίας " + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "αδυναμία δημιουÏγίας θυγατÏικής για αντικατάσταση διεÏγασίας " + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "αδυναμία ανοίγματοε επώνυμης σωλήνας %s Ï€Ïος ανάγνωση" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "αδυναμία ανοίγματος επώνυμης σωλήνας %s Ï€Ïος εγγÏαφή" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "αδυναμία αναπαÏαγωγής named pipe %s ως fd %d " + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "αντικατάσταση εντολής: null byte αγνοήθηκε στην είσοδο " + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "αδυναμία δημιουÏγίας σωλήνα για αντικατάσταση εντολής " + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "αδυναμία δημιουÏγίας θυγατÏικής για αντικατάσταση εντολής " + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: αδυναμία αναπαÏαγωγής σωλήνα ως fd 1 " + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: μη έγκυÏο όνομα μεταβλητής ως όνομα αναφοÏάς " + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: μη έγκυÏη έμμεση επέκταση " + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: μη έγκυÏο όνομα μεταβλητής" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: παÏάμετÏος κενή ή δεν έχει οÏιστεί" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: παÏάμετÏος κενή ή δεν έχει οÏιστεί" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: έκφÏαση αÏνητική < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: κακή αντικατάσταση" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: αδÏνατη ανάθεση κατ' αυτόν τον Ï„Ïόπο" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"μελλοντικές εκδόσεις του κελÏφους θα επιβάλουν την αποτίμηση ως μια " +"αÏιθμητική αντικατάσταση" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "κακή αντικατάσταση: δεν υπάÏχει «`» που κλείνει στο %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "χωÏίς ταίÏιασμα: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "αναμενόταν ÏŒÏισμα" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: αναμενόταν ως έκφÏαση ακέÏαιος αÏιθμός" + +#: test.c:265 +msgid "`)' expected" +msgstr "αναμενόταν «)»" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "σναμενόταν «)», βÏέθηκε %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: αναμενόταν δυαδικός τελεστής" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: αναμενόταν μοναδιαίος τελεστής " + +#: test.c:881 +msgid "missing `]'" +msgstr "αποÏσα «]»" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "συντακτικό σφάλμα: δεν αναμενόταν «;»" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "μη έγκυÏος αÏιθμός σήματος" + +#: trap.c:325 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεÏάστηκε (%d) " + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: κακή τιμή στην trap_list[%d]: %p " + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: ο διαχειÏιστής σήματος είναι ο SIG_DFL, στέλνει %d (%s) " +"σε μένα " + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: κακό σήμα %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "σφάλμα κατά την εισαγωγή του οÏÎ¹ÏƒÎ¼Î¿Ï Ï„Î·Ï‚ συνάÏτησης «%s»" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "επίπεδο κελÏφους (%d) Ï€Î¿Î»Ï Ï…ÏˆÎ·Î»ÏŒ, επαναφοÏά στο 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: no function context at current scope" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: η μεταβλητή δεν μποÏεί να δεχτεί τιμή " + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s έχει κενό exportstr" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "ο χαÏακτήÏας %d δεν έίναι έγκυÏος στην exportstr για %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "απουσία «=» στην exportstr για %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: head of shell_variables not a function context" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: no global_variables context" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: head of shell_variables not a temporary environment scope" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: αδυναμία ανοίγματος ως ΑΡΧΕΙΟ" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: μη έγκυÏη τιμή για trace file descriptor" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: τιμή συμβατότητας εκτός οÏίου " + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"License GPLv3+: GNU GPL έκδοση 3 ή νεώτεÏη \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, έκδοση %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "This is free software; you are free to change and redistribute it." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "There is NO WARRANTY, to the extent permitted by law." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: αδυναμία εκχώÏησης %lu bytes (%lu bytes εκχωÏήθηκαν)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: αδυναμία εκχώÏησης %lu bytes" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: αδυναμία εκχώÏησης %lu bytes (%lu bytes εκχωÏήθηκαν)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: αδυναμία εκχώÏησης %lu bytes" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [name[=value] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] name [name ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function ή readline-command]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [dir]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [option] name[=value] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f filename] [name ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts optstring name [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [job_spec ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p pathname] [-dt] [name ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [pattern ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d offset] [n] ή history -anrw [filename] ή history -ps arg " +"[arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [name ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [name[=value] ...] ή export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [name[=value] ...] ή readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source filename [arguments]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". όνομα αÏχείου [οÏίσματα]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signal_spec ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] name [name ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mode]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-n] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAME [in WORDS ... ;] do COMMANDS; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMMANDS; do COMMANDS; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMMANDS; do COMMANDS; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAME] command [redirections]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function name { COMMANDS ; } ή name () { COMMANDS ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ COMMANDS ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( expression ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ expression ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Ονόματα και σημασία οÏισμένων μεταβλητών του κελÏφους" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [optname ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [οÏίσματα]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o option] [-DE] [name ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"ΑφαίÏεση κάθε ΟÎΟΜΑτος από τη λίστα των καθοÏισμένων ψευδωνÏμων.\n" +" \n" +" Επιλογές:\n" +" -a\tαφαίÏεση όλων των ψευδωνÏμων.\n" +" \n" +" ΕπιστÏέφει επιτυχία εκτός αν το ΟÎΟΜΑ δεν είναι υπαÏκτό ψευδώνυμο." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"ΞαναÏχίζει τους βÏόχους for, while, ή until.\n" +" \n" +" ΞαναÏχίζει την επόμενη επανάληψη του βÏόχου FOR, WHILE ή UNTIL .\n" +" Αν N είναι οÏισμένο, ξαναÏχίζει το N-στο βÏόχο.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Ο κωδικός εξόδου είναι 0 εκτός αν το N δεν είναι μαγαλÏτεÏο ή ίσον του 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Εμφάνιση του ονόματος του Ï„Ïέχοντος καταλόγου εÏγασίας.\n" +" \n" +" Επιλογές:\n" +" -L\tεμφάνιση της τιμής της $PWD if it names the current working\n" +" \tdirectory\n" +" -P\tεμφάνιση του Ï†Ï…ÏƒÎ¹ÎºÎ¿Ï ÎºÎ±Ï„Î±Î»ÏŒÎ³Î¿Ï…, χωÏίς συμβολικοÏÏ‚ συνδέσμους\n" +" \n" +" Από Ï€Ïοεπιλογή, η «pwd» συμπεÏιφέÏεται σαν να είχε δωθεί «-L» .\n" +" \n" +" Κατάσταση εξόδου:\n" +" ΕπιστÏέφει 0 εκτός αν δίνεται μη έγκυÏη επιλογή ή ο Ï„Ïέχων κατάλογος\n" +" δεν μποÏεί να διαβαστεί." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Εντολή Null.\n" +" \n" +" Κανένα αποτέλεσμα, η εντολή δεν κάνει τίποτα.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Πάντα επιτυχία." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"ΕπιστÏέφει επιτυχημένο αποτέλεσμα.\n" +" \n" +" Κατάσταση Εξόδου:\n" +" Πάντοτε επιτυχία." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"ΕπιστÏέφει αποτυχημένο αποτέλεσμα.\n" +" \n" +" Κατάσταση Εξόδου:\n" +" Πάντοτε αποτυχία." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" + +#: builtins.c:490 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"ΚαθοÏίζει τιμές και χαÏακτηÏιστκά μεταβλητής.\n" +" \n" +" Συνώνημο με «declare». Βλέπε «help declare»." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" + +#: builtins.c:557 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"ΓÏάφει οÏίσματα στη κανονική έξοδο.\n" +" \n" +" Εμφανίζει τα ARG, χωÏισμένα από χαÏακτήÏες Î±Ï€Î»Î¿Ï Î´Î¹Î±ÏƒÏ„Î®Î¼Î±Ï„Î¿Ï‚ " +"ακολουθοÏμενα από\n" +" νέα γÏαμμή, στη τυπική έξοδο.\n" +" \n" +" Έπιλογές:\n" +" -n\tδεν επισυνάπτεται νέα γÏαμμή\n" +" -e\tενεÏγοποίηση εÏμηνείας των παÏακάτω backslash διαφυγής\n" +" -E\tÏητή απενεÏγοποίηση εÏμηνείας του backslash διαφυγής\n" +" \n" +" η «echo» εÏμηνεÏει τους επόμενους backslash-escaped χαÏακτήÏες:\n" +" \\a\tσυναγεÏμός (κουδοÏνι)\n" +" \\b\tbackspace\n" +" \\c\tκαταστέλλει την παÏαπέÏα έξοδο\n" +" \\e\tχαÏακτήÏας διαφυγής\n" +" \\E\tχαÏακτήÏας διαφυγής\n" +" \\f\tνέα σελίδα\n" +" \\n\tνέα γÏαμμή\n" +" \\r\tcarriage return\n" +" \\t\tοÏιζόντιο tab\n" +" \\v\tκατακόÏυφο tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tο χαÏακτήÏας με κωδικό ASCII NNN (οκταδικός), ο NNN μποÏεί\n" +" \t\tνα είναι 0 έως 3 οκταδικά ψηφία\n" +" \\xHH\tο οκταδικός χαÏακτήÏας με τιμή HH (εξαδικός), ο HH\n" +" \t\tμποÏεί να είναι ένα ή δÏο εξαδικά ψηφία\n" +" \n" +" Κατάσταση εξόδου:\n" +" ΕπιστÏέφει επιτυχία εκτός αν συμβεί λάθος εγγÏαφής. " + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"ΓÏάφει οÏίσματα στην κανονική έξοδο.\n" +" \n" +" Εμφανίζει στην κανονική έξοδο τα ARG ακολουθοÏμενα από μια νέα γÏαμμή.\n" +" \n" +" Επιλογή:\n" +" -n\tδεν επισυνάπτεις μια νέα γÏαμμή\n" +" \n" +" Κατάσταση εξόδου:\n" +" ΕπιστÏέφει επιτυχία εκτός αν συμβεί σφάλμα. " + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Εκτελεί οÏίσματα σαν να είναι εντολή κελÏφους.\n" +" \n" +" Συνδιάζει ARGs σε μια μοναδική συμβολοσειÏά, χÏησιμοποιεί το αποτέλεσμα " +"ως είσοδο στο κέλυφος,\n" +" και εκτελεί τις εντολές που Ï€ÏοκÏπτουν.\n" +" \n" +" Κατάσταση εξόδου:\n" +" ΕπιστÏέφει τον ίδιο κωδικό εξόδου με την εντολή ή επιτυχία αν ή εντολή " +"είναι κενή. " + +#: builtins.c:652 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"ΤεÏματισμός του κελÏφους.\n" +" \n" +" ΤεÏματισμός κελÏφους με κωδικό N. Αν το N παÏαληφθεί, η κατάσταση " +"εξόδου\n" +" είναι αυτή της τελευταίας εκτελεσμένης εντολής." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"ΤεÏματισμός ενός κελÏφους σÏνδεσης.\n" +" \n" +" ΤεÏματίζει ένα κέλυφος σÏνδεσης με κατάσταση εξόδου N. ΕπιστÏέφει σφάλμα " +"αν δεν εκτελείται\n" +" σ' ένα κέλυφος σÏνδεσης. " + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Μετακίνηση της εÏγασίας στο Ï€Ïοσκήνιο.\n" +" \n" +" Βάζει την εÏγασία που οÏίζεται από JOB_SPEC στο Ï€Ïοσκήνιο, κάνοντάς την\n" +" την Ï„Ïέχουσα εÏγασία. Αν δεν δίνεται η JOB_SPEC, τότε χÏησιμοποιείται η " +"αντίληψη\n" +" που έχει το κέλυφος ως Ï„Ïέχουσα εÏγασία.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Η κατάσταση της εÏγασίας που μπήκε στο Ï€Ïοσκήνιο, ή κωδικός αποτυχίας " +"στην πεÏίπτωση σφάλματος." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Μετακινεί εÏγασίες στο παÏασκήνιο.\n" +" \n" +" Τοποθετεί τις εÏγασίες που οÏίζονται από κάθε JOB_SPEC στο παÏασκήνιο,\n" +" όπως αν άÏχισαν με «&». Αν δεν δίνεται η JOB_SPEC, τότε χÏησιμοποιείται " +"ή αντίληψη που έχει το κέλυφος\n" +" ως Ï„Ïέχουσα εÏγασία.\n" +" \n" +" Κατάσταση εξόδου:\n" +" ΕπιστÏέφεται επιτυχία εκτός αν δεν έχει ενεÏγοποιηθεί job control ή έχει " +"συμβεί σφάλμα." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"ΑφαίÏεση εÏγασιών από το Ï„Ïέχον κέλυφος.\n" +" \n" +" ΑφαιÏεί κάθε ÏŒÏισμα JOBSPEC από τον πίνακα ενεÏγών εÏγασιών. Στην " +"απουσία\n" +" JOBSPEC, τότε το κέλυφος χÏησιμοποιεί την ιδέα που έχει πεÏί της " +"Ï„Ïέχουσας εÏγασίας.\n" +" \n" +" Επιλογές:\n" +" -a\tαφαιÏεί όλες τις εÏγασίες αν δεν δοθεί JOBSPEC\n" +" -h\tσημαδεÏει κάθε JOBSPEC έτσι ώστε το SIGHUP δεν στέλνεται στην " +"εÏγασία\n" +" \t\tαν το κέλυφος δεχτεί ένα σήμα SIGHUP\n" +" -r\tαφαιÏεί μόνο εκτελοÏμενες εÏγασίες\n" +" \n" +" Κατάσταση εξόδου:\n" +" ΕπιστÏέφει επιτυχία εκτός αν έχει δοθεί μη έγκυÏη επιλογή ή JOBSPEC." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Ολίσθηση θεσιακών παÏαμέτÏων.\n" +" \n" +" Μετονομασία των θεσιακών παÏαμέτÏων $N+1,$N+2 ... to $1,$2 ... Αν N\n" +" δεν δίνεται, υποτίθεται πως είναι 1.\n" +" \n" +" Κατάσταση εξόδου:\n" +" ΕπιστÏέφει επιτυχία εκτός αν N είναι αÏνητικός ή μαγαλÏτεÏο; από $#. " + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Αποτίμηση δυνητικής έκφÏασης.\n" +" \n" +" ΤεÏματίζεται με κωδικό 0 (αληθής) ή 1 (ψευδής) ανάλογα\n" +" με την αποτίμηση της EXPR. Η έκφÏαση μποÏεί να είναι μοναδιαία ή " +"δυαδική. Μοναδιαίες\n" +" εκφÏάσεις χÏησιμοποιοÏνται συχνά για την εξέταση της κατάστασης " +"αÏχείου. ΥπάÏχουν\n" +" τελεστές αλφαÏιθμητικών όπως και συγκÏίσεως αÏιθμών.\n" +" \n" +" Η συμπεÏιφοÏά των τεστ εξαÏτάται από τον αÏιθμό των οÏισμάτων. " +"ΑναφεÏθείτε\n" +" στη σελίδα εγχειÏιδίου του bash για τις ολοκληÏωμένες Ï€ÏοδιαγÏαφές.\n" +" \n" +" Τελεστές αÏχείων:\n" +" \n" +" -a ΑΡΧΕΙΟ Αληθής αν το αÏχείο υπάÏχει.\n" +" -b ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι ειδικό αÏχείο μπλοκ.\n" +" -c ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι ειδικό αÏχείο χαÏακτήÏων.\n" +" -d ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι κατάλογος.\n" +" -e ΑΡΧΕΙΟ Αληθής αν το αÏχείο υπάÏχει.\n" +" -f ΑΡΧΕΙΟ Αληθής αν το αÏχείο υπάÏχει και είναι κανονικό " +"αÏχείο.\n" +" -g ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι «set-group-id».\n" +" -h ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι συμβολικός σÏνδεσμος.\n" +" -L ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι συμβολικός σÏνδεσμος.\n" +" -k ΑΡΧΕΙΟ Αληθής αν το αÏχείο έχει οÏισμένο το bit «sticky».\n" +" -p ΑΡΧΕΙΟ Αληθής αν το αÏχείο μια named pipe.\n" +" -r ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι αναγνώσιμο από εσάς.\n" +" -s ΑΡΧΕΙΟ Αληθής αν το αÏχείο υπάÏχει και δεν είναι κενό.\n" +" -S ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι ένα socket.\n" +" -t FD Αληθής αν ο FD είναι ανοιγμένος σ' ενα " +"τεÏματικό.\n" +" -u ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι «set-user-id».\n" +" -w ΑΡΧΕΙΟ Αληθής αν το αÏχείο εγγÏάψιμο από εσάς.\n" +" -x ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι εκτελέσιμο από εσάς.\n" +" -O ΑΡΧΕΙΟ Αληθής αν το αÏχείο is effectively owned by you.\n" +" -G ΑΡΧΕΙΟ Αληθής αν το αÏχείο is effectively owned by your " +"group.\n" +" -N ΑΡΧΕΙΟ Αληθής αν το αÏχείο μεταβλήθηκε από την τελευταία " +"φοÏά που διαβάστηκε.\n" +" \n" +" ΑΡΧΕΙΟ1 -nt ΑΡΧΕΙΟ2 Αληθής αν το αÏχείο1 είναι νεότεÏο από το αÏχείο2 " +"(σÏμφωνα\n" +" με την ημεÏομηνία Ï„Ïοποποίηση).\n" +" \n" +" ΑΡΧΕΙΟ1 -ot ΑΡΧΕΙΟ2 Αληθές αν αÏχείο1 είναι παλαιότεÏο από το " +"αÏχείο2.\n" +" \n" +" ΑΡΧΕΙΟ1 -ef ΑΡΧΕΙΟ2 Αληθές αν το αÏχείο1 είναι hard link στο " +"αÏχείο2.\n" +" \n" +" Τελεστές συμβολοσειÏάς:\n" +" \n" +" -z STRING Αληθές αν η συμβολοσειÏά είναι κενή.\n" +" \n" +" -n STRING\n" +" STRING Αληθές αν η συμβολοσειÏά δεν είναι κενή.\n" +" \n" +" STRING1 = STRING2\n" +" Αληθές αν οι συμβολοσειÏές είναι ίσες.\n" +" STRING1 != STRING2\n" +" Αληθές αν οι συμβολοσειÏές δεν είναι ίσες.\n" +" STRING1 < STRING2\n" +" Αληθές αν η STRING1 Ï€Ïοηγείται λεξικογÏαφικά της " +"STRING2.\n" +" STRING1 > STRING2\n" +" Αληθές αν η STRING1 έπεται λεξικογÏαφικά της STRING2.\n" +" \n" +" Άλλοι τελεστές:\n" +" \n" +" -o OPTION Αληθές αν η επιλογή του κελÏφους OPTION έχει " +"ενεÏγοποιηθεί.\n" +" -v VAR Αληθές αν η μεταβλητή VAR έχει οÏιστεί.\n" +" -R VAR Αληθές αν η μεταβλητή VAR έχει οÏιστεί και είναι όνομα\n" +" αναφοÏάς.\n" +" ! EXPR Αληθές αν η expr είναι ψευδής.\n" +" EXPR1 -a EXPR2 Αληθές αν αμφότεÏες οι expr1 ΚΑΙ expr2 είναι αληθείς.\n" +" EXPR1 -o EXPR2 Αληθές αν είτε η expr1 Ή η expr2 είναι αληθής.\n" +" \n" +" arg1 OP arg2 ΑÏηθμιτικά τεστ. OP είναι ένα από τα -eq, -ne,\n" +" -lt, -le, -gt, ή -ge.\n" +" \n" +" ΑÏιθμητικοί δυαδικοί τελεστές επιστÏέφουν αληθές αν ARG1 είναι ίσο, μη-" +"ίσο,\n" +" μικÏότεÏο-από, μικÏότεÏο-από-ή-ίσο, μεγαλÏτεÏο-από, ή μεγαλÏτεÏο-από-ή-" +"ίσο\n" +" από το ARG2.\n" +" \n" +" Κατάσταση εξόδου:\n" +" ΕπιστÏέφει επιτυχία αν EXPR αποτιμάται σε αληθές, αποτυχία αν EXPR " +"αποτιμάται σε\n" +" ψευδές ή αν δίδεται ένα μη έγκυÏο ÏŒÏισμα." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Αποτιμά δυνητική έκφÏαση.\n" +" \n" +" Συνώνυμο με το «test» builtin, αλλά το τελευταίο ÏŒÏισμα Ï€Ïέπει\n" +"να είναι ένα «]», ώστε να κλείνει το αντίστοιχο «[»." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Εμφανίζει χÏόνους διεÏγασιών.\n" +" \n" +" Εμφανίζει το χÏόνο του χÏήστη και συστήματος για το κέλυφος και όλες " +"τις\n" +" θυγατÏικές διεÏγασίες.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Πάντα επιτυχία." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" + +#: builtins.c:1431 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" + +#: builtins.c:1502 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Εκτέλεση εντολών για μέλος μιας λίστας.\n" +" \n" +" Ο βÏόχος «for» εκτελεί μια αλληλουχία εντολών για κάθε μέλος\n" +" μιας λίστας. Αν «in ΛΕΞΕΙΣ ...;» δεν δίνεται, τότε υποτίθεται η «in \"$@" +"\"».\n" +" Για κάθε στοιχείο στις ΛΕΞΕΙΣ, ΟÎΟΜΑ οÏίζεται σ' αυτό το στοιχείο, και\n" +" οι ΕÎΤΟΛΕΣ εκτελοÏνται.\n" +" \n" +" Κατάσταση εξόδου:\n" +" ΕπιστÏέφει την κατάσταση της τελευταίας εκτελεσμένης εντολής." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"ΑÏιθμητική βÏόχου for.\n" +" \n" +" ΙσοδÏναμο με\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, και EXP3 είναι αÏιθμητικές εκφÏάσεις. Αν μια έκφÏαση\n" +" παÏαληφθεί, συμπεÏιφέÏεται σαν να είχε αποτιμηθεί ίση με 1.\n" +" \n" +" Κατάσταση εξόδου:\n" +" ΕπιστÏέφει τη κατάσταση της τελευταίας εκτελεσμένης εντολής." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Αποτίμηση αÏιθμητικής εκφÏάσεως.\n" +" \n" +" Η ΕΚΦΡΑΣΗ αποτιμάται σÏμφωνα με τους αÏιθμητικοÏÏ‚ κανόνες.\n" +" ΙσοδÏναμο με το \"let ΕΚΦΡΑΣΗ\".\n" +" \n" +" Κωδικός εξόδου:\n" +" ΕπιστÏέφει 1 αν η ΕΚΦΡΑΣΗ αποτιμάται σε 0, αλλιώς επιστÏέφει 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Διαβάζει γÏαμμές από αÏχείο σε μεταβλητή Ï„Ïπου πίνακα.\n" +" \n" +" Συνώνημο του «mapfile»." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "ΕπιστÏέφει το context της κλήσης της Ï„Ïέχουσας υποÏουτίνας.\n" +#~ " \n" +#~ " ΧωÏίς EXPR, επιστÏέφει " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: διεÏγασία %5ld (%s) στη the_pipeline " + +#~ msgid "Unknown Signal #" +#~ msgstr "Άγνωστο σήμα #" diff --git a/bash-5.1/po/en@boldquot.gmo b/bash-5.1/po/en@boldquot.gmo new file mode 100644 index 0000000000000000000000000000000000000000..15cd5f1ffd73254d78738e793629d5d55baf343a GIT binary patch literal 173562 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

e1o_ZOCc#XQsC${#d1C=Q>G5A zgMuSODUwg7u|PAe4j{j19^?z_yc(F5!~EbrVT=Wg#4#zTwy?61t5%4jo!t7lhK5Z4 zvrvD8o|W+#OSV{ww(~R^(C@bMnYVw#i(<%n>(g;Zz6OmTJcA3wxjjr zl_H@Vk9gy}c3V)fzQA#`vDT(~p_=+? zS;lmQZH0v-t;%t^8C`2eEIGioC-Rd|-mtb=Y&MEWhz6z$JyU^}F1u{0URy#edFTL6 zlGqW8AGSZM{FdIDY(JDdU2VX}2Q7rMK4>Y4Nn;1_g#y>`ispSD&qbo@;IYfGZn)W9|Lu2(t56%#bIS=WaP3oQX^PD2)cGusiUKnrKCh+ zG?Bo1qA9g;=uy?;?`#+$WY^BILXjStmn0^+SUIdBu?$uyQg@$ecdf{lQ)EsF{vH<2 z{u!YLG>wW0X=6I_05NSmu3bj5y5Ybq8?CuXKG;-6B0(BUD?4=8%9LlvX(q;5g?=|r zBCzr~uhT8Sj(NZC@XqNRUHvO^!#aYmck8}^T_Xd7KJ$%MgO*RJq8nIf3w59%m908D znQm^@#(GHVt*d=~Ch>G?2#yx)HEcj&vm(gTgVCU)V3v?Egg=gE05@mYqB#i!{mIA{ zy`EIKFs8&vi_x#xjVlG^811fu5MiP!jS>B<;}uo3;!2EmRYPP);a)!Bh-zVHo^}s% z3M74^@YV@mERh6aEUji>cBX{sit*g0+$pCcsZayARLya1Hj#Fk|qyBHG_Ha7&{|@{o`d( zyK`nIijZqV%n&mplCM~y3`7JM) zDKSR1!#8m(^E6#PCf_yHUq>_f#{-;hOt*aEBJ-GWPRE3saoo53#)NJv*=N-(WPGQX zWjip+I!M@?pKtea4lHi^TE22}roCz;9tfeP&>CiM*coVh5E*DS0c1om_1?9!9k@{2 zSl|@0Qk9}vG%O(UO6(XnFIpJ;XM}75W#L}@1f#CO$%~BYI=mKX0>5ZZ73{7Z74@l_ zrKJu;7_LcMzm2poA>o7!S;bG^tw|99IQoSmSSlTUFIvPi*DorFFfW@)CMuNpLd(NC z8ZAWw&L-i=N*y`xEHEu!VeLqXbC3eFX;@iwJ>%H6QKr7%7Xo+r+I1dlbot;u833l& z#M8C-tXud(^+K@_!= z47gt+_9(4_o}CP=8=?=fM?D!B)R@4>00+XCV~d*{1`6l_oDQBTV^VZ+iKjT?fx!y(v{A^E+do^EKYT3f}3bJXL16nUcGYfw_`rN584Pu`%p{;(+nYg?a)}j zlQ#DhopoVi6$Oep>r`EOt?L}RTX!&i{t3wKIc2#MX zhQ-#UQLYyf4w3th9@(6b7Ku8rVANvKT@B#FQfwGt&Wlf%ISCV{KTKp zUhdtP#0e!v(rj`Ss#hRkUt9w%7^nKPqiszZppIzClTzV-%YG5sDQMXRT6C(p_MKEK zqbVaOllCne)NxZT!jZ29YuRY1GwWkv=AAK?F{q{0!K9WqEt`FkRW3@%D~xr8mG+!% z^9}KqR!(CSeN{`1?Tiu|AKg8R9**)6=jSmkp^z>_QSscR?vJw%-UP%%SfI^`Yb_Jb z66k7$Kxc^(-&(GgR7GjSa4>&?74~Qgvc1+GW}NR?hB6mLNXmZn8*D>*Q1J5v7W#B& zw7!#$H)9^%SC?f0Bl%!ZlfxFqDRc#sZ23Z1AsxwWsoI6|&J(+C4Jhbfnj>mo1%)ma zn6@hT2w({4)I1}xjPFG)&3B~7)r+}zPz%+rgIuNvJ4g&5oAT7u?8`( znHR2WLm>e6O~zP~)MPGp(XVB~(O=(Xd!TDc(!(tJ3!D<~SJ6}aU zv923gGFx>@u{r&4RN?F)PCf4Y{Nqu-IcBlvQ8Tu5W*?&!qZ?TmETfv#Jt}7;w3NG7 zd#;?Twv)Z6Y{+1$fS`#VLC(w)KK+oy#ahIKQvYl7Ad;rW9x6-L{!ucr4{4Ayd)U#F zb8D)yk`Hm_Sp<9T@C|9+*V5j(AmSxWqVh}^8=*C=xO(iR%8R7FYTYp#d@YEq3i-(4 zyO$I~NxL>qH;&?#J?MVGWsrFGIU=j2MG3*e=QJeeJ!MX%YvAHwxr;rtnNK^TOb_VD z#?lf~+Qd&OP_3bOtXgg$Lk?=nhCp04uw&SUEY>I+Q}ybDDXwZ7H4IKh!@rB!Qn5`i zaxSbgT8A(aN?|whvheAmSH;@fzh~Dq*}S08%H7?sOqrN)6wQz-l24~Z&oC*HHe`p) z(iwxevxr8BQoggZZ|~l|YuFzdzp%}qo_R*lIrTX@>ZxsnG^m|pkAsrcru$nd80siF{v1@o@zGAM`DI>(i2taNFn09Ld`N|!G4h)GOIQS z20{N!RxYer*9>2F2s8_|4N1%6g@lwJtuAWBiZ|m)@~Eqvjhxw1HK;H~njuDvx>@nR+2YxOHm1mYHbjN!C6!XB`X)m ztC7}PRniC+)`4+D`$p)G^qp+;Yc^s+x>%1pbx3Nt}xUm9F4zE%Uv$Nrh86O7O(fiK2&h#jSLcfOzoVk+!yO!iuiyess! zK>n<+S^6tsk+{O4Mb0(~es`_;@NnU4zqysGLmzhwj|5S!qjXoB^2E_xW0>llS#;=B zy>n|_DUlRrcGux9#CuZiv~m^3r@jt{_|cj2tTM-WeXkm!kl=h`Lvl}iVN+TmlVeRw zc`Te5E9o}Qg>S|jl{wrVu$Uf{b=2K`d*sz)tqFmZckHy5S)u&hgLoWO_tEk`W-0y`*YK@3<;l!cKs9ojo^`G8h)M+&v|SIQ@*7|wjvu|VVMTcVAt z3xz_OP>M0y`FSeYz~Pj!rn32>=?K=hv#)6ey7b~H@9^6hGP-}B(}{ycB28P zlx-B**0*cd*1l~Ia9g1b8dvV?8ywlUyFgx*F;;9mWjjs1JvUPt_S3eF82N^7ZxpN5 zSfzbPOG{Q+S!)>ZESVBku#m6a+do}~DK-^}!%KY~=4d}&2B~zVQS64qma0579`D3di!*i~`sZD@D3&kKZFVn(LGp`?9h1-{Rp@ zYCmVwVDt<#ssZ0a!yG81I=?c5_x#;MF$>xtm^^G1FqE~!oHb8~N+)L>(mGTjomj7| zj4GQo6n&cS6h$u#B%Qj1To8}s3Foi4-uA@d;KG3lrxlZOnGPJ6*v>L9{*T4#m9u*zGjWDH>9@A@L zQ`ysb5=Mba{h9GwJ=?y+LE~w9#Mlv>ed(`sKptD~)PR;9SqW(hHH&Rt7%Pvp&v-># z@AgT1rw-I*r%}JK1G}PuMj!LBv4yE`$7jAgoHRK1VYWabWQ-X;jV1AipwxsvV|J-} z%Een$k@&7oA!3%6W$H!@U(-Z^aMLqGT4$sJZMwTay)=vjleeU1N8}dH8}%f`E_s>F z9neabb4+}j(L!m2qM2Kcjysb}OjZ(&zK0pu+ z6eg;rc|-plG`S9J!MeW*yC0uBOINS=&k~fF1z1ZMU0nHy)#Z?;5O@PCL8`LN(F%m7 z!ykJUqN}YXRbcga&SLu8)}eR7I+*2ZUKM&n6>KDhg%qk#kr8U=*~fJwSi;=UylJxZ zyx9vekF_5brX8^xbd32lkw~0nWTGW7s3zE)0_;65Uw-v|saSCj2O5aEkK1Q!I?gig z?h;y|w|*{JYr&l#rfFUYn2 za3(?6#wLYFX_&b{E_~j*vt)A5iZJc)q;gm6!se|g9cjZx+$M)CWPTbl)3{>dC7Kl7 z_9X#{QM-yrksu^G-#Q4ZsZvT+oui5Ad2-Qa%q4xF)`x;%E|bE6t{00~C}EUa<9Pr2 zj*eJbBLc&tIk})t9<1^u^X!~Wn~XU5Swhh1ZK0^Qk(K2KO{`X7_LVO)Mz+awi8S zI>nemV^+cDZ)XxT(`|e9`K^&v5nD$%ZgnPmA&(K;SfD(_62C#7f*TAc8tItbR) zhDtoxw$Zb7NB}8`Ejk}U!&rMYmU(cKILimxxxdIZ7Z2-6nxbmwpA@y0Y%j~v_rgTR zx4kNvT#*1$K|FDvX@qStzJ(?y;XJKD)mC?q?i(tdt@v9m5;h%1dCfO;JdXN5J7NM2 zOvNd>&=hHX(_EEyD=0+hAMPqt6ec3}=;T!Py=UZJNIZUiuVDugQ-It}#&oK-Z68r&YI}6eEmU@!?{O)(<O>SBEHL=%7r!bc* zt=yl$${fkUmI`+&lP$_(Nxb`y^#vjwwe2#YxM-VovbVTH#kZ1>UFNmTUJ$J#C&QH~ z=|X0L#@&z}$|L{mr}?vlPGc4Tjmv=*qe@yFY(+Ca)}f36(>Gyh^&xj@h1}7UVBRt` zG?A=qVLM5T61Oi$L#4$U%2;7ygItSh!*xf=iQ3ECH-XtQsp+N-L{mrr0o> zLibrHgef|fq|LZY40Khjwb}LpMo)hfW^+9n?X8)4*uL*mmd7L0Ys7rYxSDFk34s1{pws({8e z`%I&`!oc8sW23kzaMaPH+vJ+Nt%T_(4eZtjDy`|W?YwXBp*mbG86(>1UV695Gd^Cf z6W+B3CZ%#B^P(z_4qFKT$0%&J6ORg)^JIz|O_?>0ah=jd<`NgKerGvGi2%os&^t86 z4yDeNS=zQ;wy&WvRmgRJBc%z*%*B)skJ=hzbKD&Ybx5SxO4bL-d1rLF#(o+I=Jd%#_`wvfa1KKjz4#*tYRJ@wfqm9zwjnj|95z%#>y{gFijlM5eA8pR z)f$)J7CVQgd-U;eUZ?d2FAGw$+H~bKTd{8aVbhzJTDow>;dE1~HS?4MW>!Bt zPO~Ewt6%K4h4wH-A*+X-=lNU2TcB7+Zw$Kh(aL)hA1-3YtU6V%`bC;vIagtieA$k2 z^}&S3G5uM`r)uOJon}!2V7gn`rY@OVhTqPcUcGkE6Htf<1L% z2Czit4V2bsagLhJy%-7S>X^9WUW8*EELDDt7z|}TLGyUU0dkw~>=Y{y%#57KcUNak z3kg}VKUBIjGCfYGH5c`lR+BhLp=Q)1H$92yV-=#?$SRiXD2}v_x_i5YaLAnKjgsx~ zpx4=4I1E8FI)%>mF9Ci5DDoauEi)?Y;W-xP+}P6=;D5&G}vJBktRf)it*2(YE({Y{Y#=Hxo!v z_!k@+`sAeT=g5dK|7&*XiyzdROa%F$YYkVBEUsQ~)F2yf>_cUI1&c8b(Ou+{f|$w- zWX@9=pDmJ*#Eua=m>9B=&*O9#EF7n3C63Oh8i2q*~Fu?z2P?i$A>*iGWb1(8ipw44~kPnHTp^!6Y`%puq` zk7z9;=ao~n#u&rURQTWtl4)8C5(RhAqL*dtYGKx3^JOi*9Dr{*nJ)790VV^;eI_^I zw2q8nUDn%TsO`P8ev_}4n)vXEm=D{T8m|SK8#QafVHt64ifgdPSp$cFrZQ#aVB&K{ z=bqi}Z(r2I$F;JG=}`Z8)L>ZUrHnIKl9w{xq^7-Q(=)NZdV&`OQXu zTQr^|+3rLryVhmwFDuXjq0Fe=8LGc4Et6m>x`JhCjdX?L`15J$3Y}?9cZZU7B~Tzw zYv%%?8mQLx7lzr$ADHiT4sBNq+Y(o)AWivGGrG7jUvP1r5yOsO)~uWEB79c60anj)>>H3%2vg=LdQb=(~{!#SeVt!=JuI$kBWqXvS3-LnXXXv z1`DZUEE6hN7HZqPP#SVQ!#q@dUMPu_?ogdyTu6~u9LX30MVAd+Q2AC9CIp0ux}i5p z++Ps`(;Skb{+E??Y+fmR7_wklsJX6CSiZ++0txdPxh*W_$HyP0kF@M_rh1g6wWljB zxh`li(Bg@OT(9?8w8lXWnF`(w(!z|%d@;J~a};^TSyCMCOH-Jz<5I+&o9 zWvbOaW+AKN>s%@p3v)PR!#;#`gvCpW3SBho<(tCpVT%l6aAg$mb0l!Cl%U5gpUvT6 z>@rHkK}+QfT7azcW+RpigDFL;W&ML!`EdbCld~ex=)-FhgN1r$+Ni9ezD<-QU}qoP zNRdH&hN6BANS*tljRrPKTY0q_ z?0!%2iIoCxeXfMyzH*7w5N6FS>ATm54u zsShQ$d}KjLxI=UC>y)#_{Dt(VzNoVy`DJf&zrDpA> za)j1VAyBK`2`(!$hFcaGoi=`kG}G}$jZV{f#)$PXNE_Y1V)GT)p9wXdf$VuiTJj~h zY3)qs06gnOaSc8?-e%v3>mA7ppu%qN-@5N|D``g>Z;z*cdlb)>=$WH=W-EqD{Z$T!Z5R0v1KPaSO>pYf*2aw^N4-}h-LcE60 zZ^&34z7rY5r!k-8Aq5RgV5z`y>Or1Z*m9OF2rcUkF>;#M{S0u?GN-qtluwe4Z4|<% zR<`jne0Q3bYNX3HtVx$`T*F5%(q(mWpoN32%|6+rm}b*qStPT|#TkneHTXglC~9(d z*i;ptw{)AA;*N?1tVo`ln~GvSt`U(NgH1l4FJ#!)xzU`@&+~09Hkxaah3_2Z1U6d5 zhsm&+7h-2+O%D}7-6877qqh};@8E_Yfw?#-byy#TFEj%Sbqm-j_A<9v>~j?9vcc6G z*6`0peT5{n&oaMJ(+ncqtbsMf2<^fchs2|K&C|^X$PESJ9BXSRZ4NP+!mx&OX#B}xrj+U1x zt`8W|hq}zgliIr(j(rQ^S$jN)YEX4O$qS~|DQ077*+0kHG_wB4uT3YCtC2Ln^iOiC zoittVSO?en9`63j&bQ^`D{u*@W5hy9qP(zsemqJt5)T%bNF)6YDG!ctm{1sL@P}g#t4~PaNf1SIf3;;N{5q@(Jgtc~xZ7^8C7!+)+dy=dIf%=O?@hI64s#vL#1J;0|hnx4>6)5z+n zhBf!1tO_R~+SuKgt~_rQeG|7vYKiy0gvd++BJlMEaU{aF@a6QDuxCKk{zeyxlh91u?B{ z1?=+|AJr#nnxK)37CSlaxl0Sn`fJF;5`$=-4SX-t6P_&vna0?pO63P@hQzg)n5+1V zz(>mpidi-UnVLJYSJM_w9`{5G*^3Op>>))rtCxvVmDwLg z_8@RvzAw^~p~d#v#Y!pF{;LN@(v|C1Ny*TCoO5V$$xMO01KIg>%FIe_#F&?o>91?% zr4w9IHA%(&rsFH7izMbM@ch(_+O|Ce4=}5J)}m8pDsKGoc^K#^QTTM6Y6LLeFG}imW|yaXw_eUpDRSYB89?Xq)kE zZ#-GmnxOa{W-EiKYXwDKeL8X?!d5-k^fL*He9LSmaL^j;`03ynW(FN+TN~;NJ+6D~ ztA*nTa_3p^N+z3J29P5Y*iNfl>UNMjaXL9RrX+TW=@go%yI)L}+GahArV?$8wAw^zLVAu z!ho;+VSXr?JJOjZjEZ8rUfk3?FUA679oAR-V(E)|x#hCir`b~XMx~x=J2)zvY!vp- zG54FJ_74{h@f;E5VV@&do9yFQ8PtJ+A=o4+Cds~5d8)FhL`S$5k7rbUSxRlLaD94h z{K0(gq}vGMJ7)ZtI0YwR4pCp;S}I+E^M#m}skw~9!&}{tNnZMVxt<&t(mEbiRg>)#t z=b?19pn;55F43!&m6psAx=_2L@{u(|T#K}{BEI7%8YAh&^jZK|3R3w|quTA#j z9HbRKvk^`t`(+(14DNC8h}$@drdCT3lfCwVSb@+&WCwMQ>5M^pX(iDOui3$+g?bNl zO?2z=@Jy{Y!V+1W-=WKePuO(MSby)DatKUC7MC!U)VS^+8K2dH2?UjmSNZ^@@2I`i zARHBkAIO6A`kg6*h_6JiEt|KZEQDQ6X1mb2YibEupR`M>_+hBH65QLbPe<9wV=#Q? z8#X_=g%hy)jq1?T6=(*KKt*tEaDlvg{R~z1$3%*S?^vbjb>$LURS_vG$I$lUse0Fq zl`LP8*|H+wc<#ZLeF3EC$#xwy@uOO^Tw+w}dXzV2YvGJ)PV|g{>m{9sBxnElq*>xf zLDp+9uzRnMFWRMP=2;KMgreOq<+%2H-N6!*4;;xlpI+y6qDx0_g6r1T>x{or4kBTg zTFR}YZ+P3l03y>*{Tv(|OjkC>$z>H1Mt22g>{4mHB=h;H1z?swg;0wnJiK$KrC+H| zO}Bf;5Xs#+nZ_ewv2$nof0%ol<~ENk&lkHJP{e!(lv*lDWkD~l=!m*fsitX(wlqVL z98q#tkIW`P0;Es|0U9J^$>ZsmFK`z(dUNmHdFkk=#e{d&JM){&C%M1>IVWEp0HkPF zRZmy9DF9DCnI})4Jnwn(<{L^I;nC!}RU7H4Cp5H~|5#SG9nkV)A+($uYW9@>*p)})aDA&3G;OSG}6YaJ>$0Ti3CWy;=s<&cTZwXzzQd|Acc+$@s+tB5ss;4^! zi}hK}92g9Z3qaW0=Q8z_{FuDcOF7j)aJ?}z zyAyne;S-%%!g&0ap!6b2QbFe);7ix(ktI)(Qs+)AX%0;dHg#lLvz#aF&9EBc(a{hr z!ZDYiNbpK+Q04@29y^i12l-DmwdlZGxRsO-xlQBYEXC{sKqb2h8j+BdQ&KLVFNZu}{j334%){tgp z-~KQ=I<^mb%OmWQu}vveZ@9X9RgO}St|88CCIZgwNHKXMtKwM7dcMZ2zPK*ANAF6Z z<{C5ovlCvO9j>i=w-bQpO<~^TpmkqyyXU91ci4Fi(d~%nv`X78OWc3m9UY&%-Q4>8 z_pD_1D9%{vGf}@d7ol%o8PVy}EPtBXIgPf=&`YrgffW$%bV?^$*4F1JqmxKC0@0fD;o2FZQoCC z$5~00z4w>(h5|0#{$!u9-uU!^79hsz&!i4&eXJAVztLNHE@pvUL=qXVi>ox+8S(Nv z6C#rmw?8*5{DECa+j_VoRZMaVt0M8nrc02`HBB~Ey+0dG4YEshnpR?2OeZ*>t`Qre4**XmTgQ`Fu5;O$+x?Q2B3+kcF}mW^hDTi`X;M1B?7 zDDF&YINanSrxHSM%$)=$qxWe#dLuHUuJ<2Q2~_&AkeHf<$vw)(u3fN+J+HfK-@fLs=j-lZTg>_I^p~6-*p0a*!2Ge+;^uXvyzn{_x}!Q5 zLjCi%+eruPyiS}eH>mdxaa>)*!A7-+(B69m=;XqJtE3lp@(T#L1%_eU$oas1y%Bz% z2Sry9>opb1)EaApn}TUgzWpd=q-&N>R-f^Ysct6UvNufX8l~zH8%f_RN`({=yD3Io z9SsDZOXszmY!wF5zEZ?bjb>m?9M-ti-P5CEiW}n#W5t|n{-U*S5srfo#=1lIX|ewX zmabR@tf6g>G9>=uTZ6TtxfuE0U+T!<(3|pCG4#+KI^UX-Xjtx(jA|AH;j4SC{(JDx zDJbqaw+wR=MCp!=mR)r6x;v(~OjYT(0T{1-RsD@n)ROMzYHy^%1C$`^kB?9EZ$nur zB;YO`s%{%{GqWifJH`yXRmmAm8x?M#xSJgz7h4n|w!ASr=;AI>hwJI^^#Q8%JDAiF zVQL<7b%pgXBG@Qh+%E=k&X*KCr$;tT&?WruI@5JU9PcN!QCj8%74f1^m@Ux37SI>? z3HmRWp31d?mT}L1gxi5Ft$?sptL@v;H1r-#y2omqY{S%Z{TmT-3LMCCY)+tc!2TgZ zXjw&CnbBCpV~%)QKKCE$@5lD{*PUCpVDgj9IrU{sN3=H2`fHe%7kv>w-R_*zSQe3)NyrrZ zk6hU#u2-d@NHEc-(W)`t-l#46+_wS(IcQp3?C^VmutHgPUXl!qXPJdH-uTUQ%YBQY0f6wWbrqsg8$xSCepGJIl+t%jB?3)hN&z|GSIRh9w4vg8YR zZhmd|a~p%X)k@jKaAkuPlpVlt1hH+M^xQNBZ7n~&-h6fp4ly~zQH@Qfmr_<{9;NAD zd4vCt+tbWsywWP32yG$fE}py&Z=f0l;?9h0R$o8h{qrAMgxFH;A*;Xwm=rdCc6|?@%ZD#Ah8t)IWR@n9Db%!jK zdnUTq`pTi~SB9SZQs`7Xhmg^&D)Pn9(qR63<4f^!LLQ6*mSMk~_cj9!`zpO9-=!xi zrSpN>t&yA9l3r3YOR;^dO}D%;MI#qR)`vUo)O^tAExF@! z+;m=Y^864)0+{`)eac6w*V(m4Eh+yyVhTIObe8KtHIJq(JYr|#F*(Duk z_GYE2s=SVKL$TC)tljHeIND(Cxa=7dhX#MYRK&@0@T@38oT&o|sZqFC@OmgtAupKL zB;7m%({w&3))f~&>Ei~At6Q7&IqqB1M{zZ~21);x8;tZVUq!?h^Vn@Oh$~P{4r^Fu z>$nEhIvR3c3}#4Do8=3F1b9bPa(V2oT4_o7^LF{1qXf1Ezj&7$;cc_Xgat|b;r0F2 zm|Kvzjy5a{&=EDCDVV@c25m5t-ACr~TiDz@O5Q`c(pe->sTb0Ya)XB-OzM!!I^5T# z7CIlci!Mq$=OsqXu07QsPwez0Pr533p89e}J+o&MUz_`?(M#&G9@;>ruJFYXn8fRQ zJ@=nHVvMwbgcQFuZDzOo?gmY=a~J=X>$H-x%q|7Q@R@+tK=z@=uw$=G9}q@m*Xwm?Pe7`b}beAMn~JSWhSTT@hvXl*fGcR18~fq zOxZel_xW<_Dn=bClMPvyba0=wI>AUWd4yB@LtUjw+d|OZfM~oAa&`W+cAwXcW#DTg zeY7rqinVqO<`EgezBp`;bQ{wzjP3M&*KE=3(n$6?n6lt&U2Xe>SNO5`l*OhHgYF22 z=K43h#Q_k!RWb}>*|l6L8s-*60Zb_*IR+LY%l(>yn zA1f~9x3%iWbpNV8ryEW6Ib9^G&-kqT4o-d11#bLns;{Y8HlC3dvzBdsVjy_Lp)u-T znm1}>+YL-}9$I6s-h(7?HN&(6EX5tAtw7B?N->4#wbf(-ng2|`?MVK*~()mEZI8XogB^ zYArhBSfQ3a-RXdrv`zoy>Lz78%{zMh)yd2d&L4g$JPNvzZgkW;`4aeHQpw10@2G6- zNIy@er7ck6?za2!Jo+UEaBEp!`r3*EN37`qAbDL$7qj&j?M7sZpP)dkMlA|QQ{$cU zo1q+V?j+1ni@KRMwD9%?9cP!K$L?grHeVm((^=B1{rut4@%!G?u0zGFXU@+LZ&bj~ zJ*+Io0y;d#5*tm4qtB)C{{lGeY@`54&_ z#4C(P=GVkNgCSn;w@#G?4g)$kK85KR=~qH}X67Q#x1RR)_T}XLas-$9YI-6@wfPcI zt;Ke0rcFXaLEqitkD@~SjQ4GbEMbHty%*wCL13rcUjZ>BhG&!fDxd)uJS*bW>p3mgcsPOdn?82M_|t(0DxpEA9&ADO_V#Kw<2D z+_d=27X93=U}&4#Nm?UEb4VqI$k~g|I)MRsVEcBC2of}>?THdqJo=j(x0D2pgA{j{ zNpF3P{2@YQC?w`6jYz$vm-3tSVQ=oR8!!x%8O{L*<2}h}SCmV=sfm1j56p7ak}D6% zPx|Wl{u>3qbO2sk1<%FbuWvkES^rFw-g`R%Fon4+ibH)Dxi{$68sjC(pCY>;f5#Ky zW-Z+8y-mVwe0ID_N&AYGx4WNSrnPL*%AdKoHj4J+2G_A!Q!Apf3bA-oDt__E7&E3} zdT{J~(7*1W<20rDT;!xxw=-kR8XQl|3T(}J?Kh_r4sBm)SIp>tijPEni$I4V20|O!jO2b~iOG5i_{1CDxvNJe+^y=lO z-QSdUf)#zbyE?{Q1XVuh{D$1wE5A1^J?J>%bg;~(1fG1&iPHH&tOnG&m{!`+ohzFh z)9a18pJHyK7>|$b>&YYHTK@6T&2a}Bxqs{7mDd09rY9;LPB95PM?=6zj59sXHuv^0 zf=7oiR~#Aq-0wZG;+5Ux!)$l)h)yUV3Q_M5&wdzRX|=lqiJ$1leY|*-;Md2E^nAw@ z&UX9e$=MGh4v<=H348O_mDYc_lH7*uG3lDP!l(8S9bq~nD&Oz@hbyg4=cWMB$@|XD zU6{e(Mx0#kPxxtc_D3|YPV1UBDm#G4!0~LLYe`Jxb6GSS2ffst5v}X{*HN$od;xU! z9Ul2!OXF8LP`q?N{Sy@&Ol=@xEOro(NAT&8wR!eO0N}|f=w!6)sK+}s(eE%O`9THY zKo@j+LY5B)KRczt+Db` zONXqsR25q6;slJ}PtU#scRFVYfk;!e-@zc*Lm+C|HvrI5_HYYzH_GDEVwd zDhR8&>;Htf&Q0bMH=9p1qA@eg>nbOPZqYK(YmFDW(XTQ_PS3u#BLVh4vm9s)f7n?2 zy{Vn$JeqVqefIe2>Whus3^9kE1pu%CqIbi+q1IoHe}{Zz@#E61x6edig)*23J>-Nr zI!naDN467Z>PiQY3pqr}#=~sjI5`1JNS5NikSHm$L8Uz-3lux@{sa9wlAgd8c~%ot z98}9dh+;J3%rv_980qVKVfqTk1PieCV%SCC*gF%47nRogvA_T4tu>nKm$j6 zL)fUj8?KmrxE5(1Fp%`vdl5TM3MU_h5^#ZUK{r0orAv37!0EhqpOR0MgGS;>+KU zT-@Y>6{ud!YYep^=}9E3a@4e1%i3x`$~gol*HW?&;L0`}Z##L}YAt)$-bl3h72YNq zK@r5}*mVRr7G6XRwgV}m>(qNiyntYdMDXzoUd?dj#;kPJ%i^o(5UvKzBVmt{q{|

&*%^0ODHg} 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 literal 0 HcmV?d00001 diff --git a/bash-5.1/po/es.po b/bash-5.1/po/es.po new file mode 100644 index 0000000..55c5cab --- /dev/null +++ b/bash-5.1/po/es.po @@ -0,0 +1,6046 @@ +# Mensajes en español para GNU bash +# Copyright (C) 2018, 2019 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Cristian Othón Martínez Vera , 2000 - 2011. +# Francisco Javier Serrador +# Antonio Ceballos Roa , 2018, 2019 +# +msgid "" +msgstr "" +"Project-Id-Version: GNU bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-08-18 10:08+0200\n" +"Last-Translator: Antonio Ceballos Roa \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "subíndice de matriz incorrecto" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: se elimina el atributo nameref" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: no se puede convertir la matriz indexada en asociativa" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: clave de matriz asociativa no válida" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: no se puede asignar a un índice que no es numérico" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: se debe usar un subíndice al asignar a una matriz asociativa" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: no se puede crear: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: no se puede encontrar la combinación de teclas " +"para la orden" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: el primer carácter que no es espacio en blanco no es «\"»" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "no hay un `%c' que cierre en %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: falta un «:» separador" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "`%s': no se puede borrar la asignación" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "expansión de llaves: no se puede asignar memoria a %s" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "expansión de llaves: fallo al asignar memoria a %u elementos" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "expansión de llaves: fallo al asignar memoria a «%s»" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "`%s': nombre de alias inválido" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "no se activó la edición de línea" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "`%s': nombre de combinación de teclas inválido" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: no se puede leer: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': nombre de función desconocido" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s no está asignado a ninguna tecla.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s se puede invocar vía " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': no se puede borrar la asignación" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "cuenta de bucle" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "solo tiene significado en un bucle `for', `while', o `until'" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Devuelve el contexto de la llamada a subrutina actual.\n" +" \n" +" Sin EXPR, devuelve \"$linea $nombrefichero\". Con EXPR, devuelve\n" +" \"$linea $subrutina $nombrefichero\"; esta información adicional\n" +" se puede usar para proporcionar un volcado de pila.\n" +" \n" +" El valor de EXPR indica cuántos marcos de llamada hay que retroceder\n" +" antes del actual; el marco superior es el marco 0.\n" +" \n" +" Estado de Salida:\n" +" Devuelve 0 a menos que el shell no esté ejecutando una función de shell\n" +" o EXPR sea inválida." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME no está definido" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "demasiados argumentos" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "directorio nulo" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD no está establecido" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "línea %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "aviso: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: modo de empleo: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: la opción requiere un argumento" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: se requiere un argumento numérico" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: no encontrado" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: opción inválida" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nombre de opción inválido" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': no es un identificador válido" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "número octal inválido" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "número hexadecimal inválido" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "número inválido" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: la especificación de señal no es válida" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s': no es un pid o una especificación válida de trabajo" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: variable de sólo lectura" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s fuera de rango" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argumento" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s fuera de rango" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: no existe ese trabajo" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: no hay control de trabajos" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "no hay control de trabajos" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: restringido" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "restringido" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: no es una orden interna de shell" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "error de escritura: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "error al establecer los atributos de la terminal: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "error al obtener los atributos de la terminal: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: error al obtener el directorio actual: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: especificación de trabajo ambigua" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "ayuda no disponible en esta versión" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: no se puede borrar: %s es de solo lectura" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: no se puede borrar" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nombre de acción inválido" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: no hay especificación para completado" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "aviso: es posible que la opción -F no funcione como se espera" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "aviso: es posible que la opción -C no funcione como se espera" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "no se está ejecutando la función de completado" + +# sólo se puede usar. sv +# De acuerdo. cfuga +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "sólo se puede usar dentro de una función" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: referencia variable no puede ser una matriz" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: no se permiten las autoreferencias a variables nameref" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: referencia de nombre circular" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "`%s': nombre variable inválido para referencia de nombre" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "no se puede usar `-f' para hacer funciones" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: función de sólo lectura" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: asignación obsoleta de matriz compuesta entrecomillada" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: no se pueden destruir variables de matriz de esta forma" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: no se puede convertir una matriz asociativa a indexada" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "la carga dinámica no está disponible" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "no se puede abrir el objeto compartido %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "no se puede encontrar %s en el objeto compartido %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: no cargado dinámicamente" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" +"función de carga para %s devuelve fallo (%d): no se ha efectuado la carga" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: no cargado dinámicamente" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: no se puede borrar: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: es un directorio" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: no es un fichero regular" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: el fichero es demasiado grande" + +# file=fichero. archive=archivo. Si no, es imposible traducir tar. sv +# De acuerdo. Corregido en todo el fichero. cfuga +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: no se puede ejecutar el fichero binario" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: no se puede ejecutar: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "cerrar sesión\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "no es un shell de inicio de sesión: utilice `exit'" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Hay trabajos detenidos.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Hay trabajos en ejecución.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "no se ha encontrado ninguna orden" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "especificación de historia" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: no se puede abrir el fichero temporal: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "actual" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "trabajo %d iniciado sin control de trabajo" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opción ilegal -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: la opción requiere un argumento -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "asociación desactivada" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tabla de asociación vacía\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "coinc\torden\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Órdenes de shell que coinciden con la palabra clave`" +msgstr[1] "Órdenes de shell que coinciden con las palabras claves`" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"no hay temas de ayuda que coincidan con `%s'. Pruebe `help help' o `man -k " +"%s' o `info %s'." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: no se puede abrir: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Estas órdenes de shell están definidas internamente. Teclee `help' para\n" +"ver esta lista.\n" +"Teclee `help nombre' para saber más sobre la función `nombre'.\n" +"Utilice `info bash' para saber más sobre la shell en general.\n" +"Utilice `man -k' o `info' para saber más sobre las órdenes que no están en\n" +"esta lista.\n" +"\n" +"Un asterisco (*) junto a un nombre significa que la orden está desactivada.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "no se puede usar más de uno de -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "posición en la historia" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: marca de tiempo inválida" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: falló la expansión de la historia" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: falló inlib" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "no se permiten otras opciones con `-x'" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: los argumentos deben ser IDs de procesos o trabajos" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Error desconocido" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "se esperaba una expresión" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: no es una matriz indexada" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: especificación de descriptor de fichero inválida" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: descriptor de fichero inválido: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: cuenta de líneas inválida" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: origen de matriz inválido" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: quantum de llamada inválido" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "nombre de variable matriz vacío" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "se requiere el soporte de variable de matriz" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': falta el carácter de formato" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "`%c': especificación de formato de tiempo inválida" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "`%c': carácter de formato inválido" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "aviso: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "problema con el análisis del formato: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "falta el dígito hexadecimal para \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "falta el dígito unicode para \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "no hay otro directorio" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: argumento inválido" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "la pila de directorios está vacía" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "índice de pilas de directorios" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Muestra la lista de directorios actualmente grabados. Los directorios\n" +" encuentran en la lista con la orden `pushd'; pueden ir saliendo de\n" +" la lista con la orden `popd'.\n" +" \n" +" Opciones:\n" +" -c\tlimpia la pila de directorios eliminando todos los elementos\n" +" -l\tno muestra las versiones con prefijo de tilde de los directorios\n" +" \t\trelativos a su directorio inicial\n" +" -p\tmuestra la pila de directorios con una entrada por línea\n" +" -v\tmuestra la pila de directorios con una entrada por línea con\n" +" \tsu posición en la pila como prefijo\n" +" \n" +" Argumentos:\n" +" +N\tMuestra la N-ésima entrada contando desde la izquierda de la " +"lista\n" +" \tmostrada por dirs cuando se llama sin opciones, empezando en cero.\n" +" \n" +" -N\tMuestra la N-ésima entrada contando desde la derecha de la lista\n" +" \tmostrada por dirs cuando se llama sin opciones, empezando en cero." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Agrega un directorio a la parte superior de la pila de directorios\n" +" o rota la pila, haciendo que la nueva parte superior de la pila\n" +" sea el directorio de trabajo actual. Sin argumentos, intercambia\n" +" los dos directorios de la parte superior.\n" +" \n" +" Opciones:\n" +" -n\tSuprime el cambio normal de directorio al añadir directorios\n" +" \ta la pila, de forma que solo se manipula la pila.\n" +" \n" +" Argumentos:\n" +" +N\tRota la pila para que el N-ésimo directorio (contando\n" +" \tdesde la izquierda de la lista mostrada por `dirs',\n" +" \tcomenzando desde cero) esté en la parte superior.\n" +" -N\tRota la pila para que el N-ésimo directorio (contando\n" +" \tdesde la derecha de la lista mostrada por `dirs',\n" +" \tcomenzando desde cero) esté en la parte superior.\n" +" \n" +" dir\tAñade DIR a la pila de directorios en la parte superior,\n" +" \thaciéndolo el nuevo directorio de trabajo actual.\n" +" \n" +" La orden interna `dirs' muestra la pila de directorios." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Quita entradas de la pila de directorios. Sin argumentos, borra\n" +" el directorio superior de la pila, y cambia al nuevo directorio " +"superior.\n" +" \n" +" Opciones:\n" +" -n\tSuprime el cambio normal de directorio cuando se borran\n" +" \tdirectorios de la pila, de modo que solo se manipula la pila.\n" +" \n" +" Argumentos:\n" +" +N\tBorra la N-ésima entrada contando desde la izquierda de\n" +" \tla lista mostrada por `dirs', comenzando desde cero.\n" +" \tPor ejemplo: `popd +0' borra el primer directorio, `popd +1'\n" +" \tel segundo.\n" +" \n" +" -N\tBorra la N-ésima entrada contando desde la derecha de\n" +" \tla lista mostrada por `dirs', comenzando desde cero. Por\n" +" \tejemplo: `popd -0' borra el último directorio, `popd -1' el\n" +" \tpenúltimo.\n" +" \n" +" La orden interna `dirs' muestra la pila de directorios." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: especificación del tiempo de expiración inválida" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "error de lectura: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"sólo se puede usar `return' desde una función o un script leído con `source'" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "no se puede borrar al mismo tiempo una función y una variable" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: no es una variable de matriz" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: no es una función" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: no se puede exportar" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "contador de desplazamiento" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "no se pueden activar y desactivar opciones del shell simultáneamente" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: nombre de opción de shell inválido" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "argumento de nombre de fichero requerido" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: no se encontró el fichero" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "no se puede suspender" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "no se puede suspender un shell de entrada" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s es un alias de `%s'\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s es una palabra clave del shell\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s: es una función\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s es una función interna de shell especial\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s es una orden interna del shell\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s is %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s está asociado (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: límite de argumento inválido" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': orden incorrecta" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: no se puede obtener el límite: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "límite" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: no se puede modificar el límite: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "número octal" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': operador de modo simbólico inválido" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': carácter de modo simbólico inválido" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " línea " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "última orden: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Abortando..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORME: " + +#: error.c:462 +msgid "unknown command error" +msgstr "error de orden desconocida" + +#: error.c:463 +msgid "bad command type" +msgstr "tipo de orden incorrecto" + +#: error.c:464 +msgid "bad connector" +msgstr "conector erróneo" + +#: error.c:465 +msgid "bad jump" +msgstr "salto erróneo" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variable sin asignar" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aha expirado mientras esperaba alguna entrada: auto-logout\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "no se puede redirigir la entrada estándar desde /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': carácter de formato inválido" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] aún existe" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "error de tubería" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: nivel máximo de anidamiento de evaluaciones excedido (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: nivel máximo de anidamiento de lecturas con `source' excedido (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: nivel máximo de anidamiento de funciones excedido (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restringido: no se puede especificar `/' en nombres de órdenes" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: orden no encontrada" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: intérprete erróneo" + +# file=fichero. archive=archivo. Si no, es imposible traducir tar. sv +# De acuerdo. Corregido en todo el fichero. cfuga +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: no se puede ejecutar fichero binario: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "`%s': es una orden interna especial" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "no se puede duplicar el df %d al df %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "se ha excedido el nivel de recursión de la expresión" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "desbordamiento de la pila de recursión" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "error sintáctico en la expresión" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "se intentó asignar a algo que no es una variable" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "error sintáctico en asignación de variable" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "división por 0" + +# token en bison fue traducido como terminal. ¿Lo traducimos igual aquí +# o lo dejamos como 'unidad' o 'elemento'? cfuga +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "defecto: elemento de asignación de expresión erróneo" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "se esperaba `:' para la expresión condicional" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "exponente menor que 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" +"se esperaba un identificador después del pre-incremento o pre-decremento" + +# falta , singular em+ +# mmmh, puede faltar más de un paréntesis cfuga +# tiene razón Enrique, es singular. cfuga +#: expr.c:1056 +msgid "missing `)'" +msgstr "falta un `)'" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "error sintáctico: se esperaba un operando" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "error sintáctico: operador aritmético inválido" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (el elemento de error es \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "base aritmética inválida" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: cuenta de líneas inválida" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "valor demasiado grande para la base" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: error de expresión\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: no se puede acceder a los directorios padre" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "no se puede reestablecer el modo nodelay para el df %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"no se puede asignar un nuevo descriptor de fichero para la entrada de bash " +"desde el df %d" + +# buffer: espacio intermedio , alojamiento intermedio ( me gusta menos ) +# em+ +# almacenamiento intermedio. cfuga +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" +"save_bash_input: el almacenamiento intermedio ya existe para el nuevo df %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: tubería de pgrp" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "el pid `forked' %d aparece en el trabajo en ejecución %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "borrando el trabajo detenido %d con grupo de proceso %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) se marca como vivo aún" + +# Cambiaría 'hay' por 'existe' em+ +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: no existe tal pid" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Señal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Hecho" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Detenido" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Detenido(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Ejecutando" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Hecho(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Salida %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Estado desconocido" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(`core' generado) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (da: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid hijo (%ld a %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld no es un proceso hijo de este shell" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: No hay un registro del proceso %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: el trabajo %d está detenido" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: no existe ese trabajo" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: el trabajo ha terminado" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: el trabajo %d ya está en segundo plano" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: se activa WNOHANG para evitar el bloque indefinido" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: línea %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (`core' generado)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(dir ahora: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: falló getpgrp" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: no hay control de trabajos en segundo plano" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: disciplina de línea" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "no se puede establecer el grupo de proceso de terminal (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "no hay control de trabajos en este shell" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: falló la aserción: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: aserción arruinada\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "desconocido" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: bloque en la lista libre sobreescrito" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: se llamó con un argumento de bloque previamente liberado" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: se llamó con un argumento de bloque sin asignar" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" +"free: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "" +"free: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "" +"free: los tamaños de los fragmentos del inicio y del final son diferentes" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: se llamó con un argumento de bloque sin asignar" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" +"realloc: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "" +"realloc: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: los tamaños de los pedazos de inicio y fin son diferentes" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: ¿la tabla alloc está llena con FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: ¿%p ya está en la tabla como asignado?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: ¿%p ya está en la tabla como libre?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "base inválida" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: anfitrión desconocido" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: servicio inválido" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: especificación de ruta de red errónea" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "no hay soporte para operaciones de red" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: no se puede cambiar el local (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: no se puede cambiar el local (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Tiene correo en $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Tiene correo nuevo en $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "El correo en %s fue leído\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "error sintáctico: se requiere una expresión aritmética" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "error sintáctico: `;' inesperado" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "error sintáctico: `((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tipo de instrucción %d erróneo" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"el documento-aquí en la línea %d está delimitado por fin-de-fichero (se " +"esperaba `%s')" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"make_redirection: la instrucción de redirección `%d' está fuera de rango" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) excede TAMAÑO_MAX (%lu): línea " +"truncada" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "número máximo de documentos en «here--document» excedido" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "EOF inesperado mientras se buscaba un `%c' coincidente" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "EOF inesperado mientras se buscaba `]]'" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "error sintáctico en la expresión condicional: elemento inesperado `%s'" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "error sintáctico en la expresión condicional" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "elemento inesperado `%s', se esperaba `)'" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "se esperaba `)'" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argumento inesperado `%s' para el operador unario condicional" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "argumento inesperado para el operador unario condicional" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "elemento inesperado `%s', se esperaba un operador binario condicional" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "se esperaba un operador binario condicional" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argumento inesperado `%s' para el operador binario condicional" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "argumento inesperado para el operador binario condicional" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "elemento inesperado `%c' en la orden condicional" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "elemento inesperado `%s' en la orden condicional" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "elemento inesperado %d en la orden condicional" + +# Token: elemento ? +# error sintáctico, no se esperaba el símbolo `%c' em+ +# No puedo tomar tal cual la corrección. El error puede no ser +# provocado por el símbolo. Simplemente estar cerca del mismo. cfuga +# Por consistencia con el siguiente, yo borraría la coma. sv +# Cierto. Coma borrada. cfuga +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "error sintáctico cerca del elemento inesperado `%s'" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "error sintáctico cerca de `%s'" + +# Propongo cambio de orden: +# no se esperaba el final de la línea em+ +# Ojo, que end of file es fin de fichero, no de línea. sv +# Se hicieron ambos cambios. cfuga +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "error sintáctico: no se esperaba el final del fichero" + +#: parse.y:6365 +msgid "syntax error" +msgstr "error sintáctico" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Utilice \"%s\" para dejar el shell.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "EOF inesperado mientras se buscaba un `)' coincidente" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: función `%s' no encontrada" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: posible bucle de reintento" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: COMPSPEC nulo" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: conector erróneo `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: descriptor de fichero inválido" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: puntero NULL a fichero" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != numfich xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: `%c': carácter de formato inválido" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "descriptor de fichero fuera de rango" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: redireccionamiento ambiguo" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: no se puede sobreescribir un fichero existente" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restringido: no se puede redirigir la salida" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "no se puede crear un fichero temporal para el documento-aquí: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: no se puede asignar el fd a la variable" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "no se admite /dev/(tcp|udp)/anfitrion/puerto sin red" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "error de redirección: no se puede duplicar el df" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "¡no se puede encontrar /tmp, crear por favor!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp debe ser un nombre de directorio válido" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "modo de impresión bonita desactivado en shells interactivos" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opción inválida" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "no se puede establecer el uid %d: uid efectivo %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "no se puede establecer gid a %d: gid efectivo %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "no puede ejecutar el depurador; modo depurado desactivado" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: es un directorio" + +# Yo pondría "no tengo ningún nombre". sv +# Revisé el código fuente de bash. Es un mensaje de error cuando no se +# encuentra el nombre del usuario que ejecuta el shell. cfuga +#: shell.c:1881 +msgid "I have no name!" +msgstr "¡No tengo nombre de usuario!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versión %s-(%s)\n" + +# En la lista spanglish se discutió mucho sobre script, +# no sé en que quedó, ni puedo decirte ahora cómo lo hemos +# traducido en otras ocasiones. Sehll script lo henmos traducido +# como guión del shell , eso es seguro ... así que puede estar +# bien así , ya lo verán otros em+ +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Modo de empleo:\t%s [opción GNU larga] [opción] ...\n" +"\t%s [opción GNU larga] [opción] fichero de shell ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Opciones GNU largas:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Opciones del shell:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD o -c orden o -O opción_shopt\t\t(sólo invocación)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s o -o opción\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Teclee `%s -c \"help set\"' para más información sobre las opciones del " +"shell.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Teclee `%s -c help' para más información sobre las órdenes internas del " +"shell.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Utilice la orden `bashbug' para reportar defectos.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "página inicial bash: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Ayuda general utilizando software GNU: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: operación inválida" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Señal ambigua" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Colgar" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Interrumpir" + +#: siglist.c:58 +msgid "Quit" +msgstr "Salir" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Instrucción ilegal" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT rastreo/captura" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "instrucción ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "instrucción EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Excepción de coma flotante" + +#: siglist.c:86 +msgid "Killed" +msgstr "Matado" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Error del bus" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Violación de segmento" + +# llamada del sistema em+ +# Es una llamada a una función del sistema em+ +# De acuerdo, pero lo que está mal es la forma de invocar la +# llamada a la función del sistema, no la llamada en sí cfuga +#: siglist.c:98 +msgid "Bad system call" +msgstr "Llamada al sistema errónea" + +# (pipe) no, por favor. Esto ya está traducido en libc, así que a estas +# alturas, la gente ya debería saber qué es eso de la tubería. sv +# De acuerdo. cfuga +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Tubería rota" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Temporizador" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Terminado" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Condición de E/S urgente" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Detenido (señal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Continúa" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "El proceso hijo ha muerto o está parado" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Detenido (entrada por terminal)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Detenido (salida por terminal)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "E/S listas" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Límite de CPU" + +#: siglist.c:154 +msgid "File limit" +msgstr "Límite de ficheros" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarma (virtual)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarma (entorno)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Ventana cambiada" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Bloqueo de registro" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Señal de usuario 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Señal de usuario 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "entrada de datos HFT pendiente" + +# falla: fallo em+ +# Suscribo lo anterior. falla suena muy raro. +# Yo lo pondría además al revés: fallo de energía inminente. sv +# Me gusta como lo sugieres. Cambio hecho. cfuga +#: siglist.c:186 +msgid "power failure imminent" +msgstr "fallo de energía inminente" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "caída del sistema inminente" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "migrando el proceso a otra CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "error de programación" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "el modo monitor HFT ha sido concedido" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "el modo monitor HTF ha sido retirado" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "la secuencia de sonido HFT ha sido completada" + +#: siglist.c:214 +msgid "Information request" +msgstr "Solicitud de información" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Señal Desconocida #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "sustitución errónea: no hay un `%s' que cierre en %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: no se puede asignar una lista a un miembro de la matriz" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "no se puede crear la tubería para la sustitución del proceso" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "no se puede crear un proceso hijo para la sustitución del proceso" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "no se puede abrir la tubería llamada %s para lectura" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "no se puede abrir la tubería llamada %s para escritura" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "no se puede duplicar la tubería llamada %s como df %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "sustitución de orden: se ignora byte nulo en la entrada" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "no se puede crear la tubería para la sustitución de la orden" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "no se puede crear un proceso hijo para la sustitución de la orden" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: no se puede duplicar la tubería como df 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: nombre de variable inválido para referencia de nombre" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: expansión indirecta inválida" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: nombre de variable inválido" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parámetro no establecido" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parámetro nulo o no establecido" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expresión de subcadena < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: sustitución errónea" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: no se puede asignar de esta forma" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"versiones futuras del intérprete obligarán la evaluación como una " +"sustitución aritmética" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "sustitución errónea: no hay una \"`\" que cierre en %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "no hay coincidencia: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "se esperaba un argumento" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: se esperaba una expresión entera" + +#: test.c:265 +msgid "`)' expected" +msgstr "`)' esperado" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "se esperaba `)', se encontró %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: se esperaba un operador binario" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: se esperaba un operador unario" + +# Singular em+ +# Puede faltar más de un ] cfuga +# Cierto, pero al menos uno seguro que falta. +# Yo creo que no hace falta el (n). sv +# Abreviando "falta [al menos] un `]'" saldría: "falta un `]'". +# ¿No es mejor "falta algún `]'"? cfuga +# Tiene razón Enrique: singular. cfuga +#: test.c:881 +msgid "missing `]'" +msgstr "falta un `]'" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "error sintáctico: `;' inesperado" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "número de señal inválido" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" +"manejador de capturas: se ha excedido el nivel máximo de manejadores de " +"capturas (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: valor erróneo en trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: el manejador de señal es SIG_DFL, reenviando %d (%s) a mí " +"mismo" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: señal errónea %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "error al importar la definición de la función para `%s'" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "el nivel de shell (%d) es demasiado alto, se reestablece a 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: no hay contexto de función en el ámbito actual" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: variable quizá no es valor asignado" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: asignando entero a nombre referencia" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: no hay contexto de función en el ámbito actual" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s tiene exportstr nulo" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "carácter inválido %d en exportstr para %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "no hay `=' en exportstr para %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context: la cabeza de shell_variables no es un contexto de función" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: no es un contexto global_variables" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: la cabeza de shell_variables no es un ámbito de entorno temporal" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: no se puede abrir como FICHERO" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: valor de compatibilidad fuera del rango" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licencia GPLv3+: GPL de GNU versión 3 o posterior \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versión %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Esto es software libre, es libre para modificar y redistribuirlo." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "No hay NINGUNA GARANTÃA, a la extensión permitida por la ley." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: no se pueden asignar %lu bytes (%lu bytes asignados)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: no se pueden asignar %lu bytes" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: no se pueden asignar %lu bytes (%lu bytes asignados)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: no se pueden asignar %lu bytes" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nombre[=valor] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] nombre [nombre ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m comb_teclas] [-f fichero] [-q nombre] [-u nombre] [-r " +"secteclas] [-x secteclas:orden-shell] [secteclas:función-leerlinea o orden-" +"leerlinea]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [orden-interna-shell [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expresión]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]]] [dir]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] orden [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilrtux] [-p] [nombre[=valor] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nombre[=valor] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [opción] nombre[=valor] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f fichero] [nombre ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts cadena_opciones nombre [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a nombre] [orden [argumentos ...]] [redirección ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e nombre_e] [-lnr] [primero] [último] o fc -s [pat=rep] [orden]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [id_trabajo]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [id_trabajo ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p ruta] [-dt] [nombre ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [patrón ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d despl] [n] o history -anrw [fichero] o history -ps arg " +"[arg...]" + +# jobspec no es sólo el pid del proceso, puede ser tambien +# el nombre de la orden que se creo con el proceso em+ +# por eso es idtrabajo, no pidtrabajo. De cualquier forma, no me agrada +# mucho. ¿Sugerencias? cfuga +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [idtrabajo ...] o jobs -x orden [args]" + +# lo mismo em+ +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [idtrabajo ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s id_señal | -n num_señal | -id_señal] pid | idtrabajo ... o kill -l " +"[id_señal]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a matriz] [-d delim] [-i texto] [-n ncars] [-N ncars] [-p " +"prompt] [-t tiempo] [-u df] [nombre ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nombre-opción] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [nombre ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [nombre[=valor] ...] ó export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [nombre[=valor] ...] ó readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source fichero [argumentos]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". fichero [argumentos]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expresión]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] id_señal ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] nombre [nombre ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [modo]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOMBRE [in PALABRAS ... ] ; do ÓRDENES; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do ÓRDENES; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NOMBRE [in PALABRAS ... ;] do ÓRDENES; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] tubería" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PALABRA in [PATRÓN [| PATRÓN]...) ÓRDENES ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if ÓRDENES; then ÓRDENES; [ elif ÓRDENES; then ÓRDENES; ]...[ else " +"ÓRDENES; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while ÓRDENES; do ÓRDENES; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until ÓRDENES; do ÓRDENES; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NOMBRE] orden [redirecciones]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function nombre { ÓRDENES ; } o nombre () { ÓRDENES ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ ÓRDENES ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "id_trabajo [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( expresión ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ expresión ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Nombres y significados de algunas variables de shell" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [nombre_opción...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] formato [argumentos]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opción] [-A acción] [-G patglob] [-" +"W listapalabras] [-F función] [-C orden] [-X patfiltro] [-P prefijo] [-S " +"sufijo] [nombre ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o opción] [-A acción] [-G patglob] [-W " +"listapalabras] [-F función] [-C orden] [-X patfiltro] [-P prefijo] [-S " +"sufijo] [palabra]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o opción] [-DEI] [nombre ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C " +"llamada] [-c quantum] [matriz]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d delim] [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C " +"llamada] [-c quantum] [matriz]" + +# Más en español sería: se define un alias por cada NOMBRE cuyo VALOR se da. sv +# Lo mismo de antes: el alias es expandido -> el alias se expande. sv +# no alias -> ningún alias. sv +# De acuerdo. cfuga +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Define o muestra alias.\n" +" \n" +" Sin argumentos `alias' muestra la lista de alias en el formato\n" +" reutilizable `alias NOMBRE=VALOR' en la salida estándar.\n" +" \n" +" En caso contrario, se define un alias por cada NOMBRE cuyo VALOR se\n" +" proporcione. Un espacio final en VALOR causa que se revise\n" +" la siguiente palabra para sustitución de alias cuando se expande\n" +" el alias.\n" +" \n" +" Opciones:\n" +" -p\tmuestra todos los alias definidos en un formato reutilizable\n" +" \n" +" Estado de Salida:\n" +" alias devuelve verdadero a menos que se dé un NOMBRE para el cual\n" +" no se haya definido ningún alias." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Quita cada NOMBRE de la lista de alias definidos.\n" +" \n" +" Opciones:\n" +" -a\tquita todas las definiciones de alias.\n" +" \n" +" Devuelve verdadero a menos que un NOMBRE no sea un alias existente." + +# lee 'la'... em+ +# Corregido. Además, es plural: lee las asignaciones... cfuga +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Establece secuencias de teclas y variables de Readline.\n" +" \n" +" Asigna una secuencia de teclas a una función Readline o a una macro, o\n" +" establece una variable Readline. La sintaxis de los argumentos que\n" +" no son opciones es equivalente a la que se encuentra en ~/.inputrc,\n" +" pero se debe pasar como un solo argumento:\n" +" p.ej., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Opciones:\n" +" -m comb_teclas Usa COMB_TECLAS como la combinación de teclas " +"durante el\n" +" que dure esta orden. Los nombres de combinaciones\n" +" de teclas aceptables son emacs, emacs-standard,\n" +" emacs-meta, emacs-ctlx, vi, vi-move, vi-command y\n" +" vi-insert.\n" +" -l Lista los nombres de las funciones.\n" +" -P Lista los nombres de las funciones y asignaciones.\n" +" -p Lista las funciones y asignaciones de tal forma " +"que\n" +" se pueda ruutilizar como entrada.\n" +" -S Lista las secuencias de teclas que invocan macros\n" +" y sus valores.\n" +" -s Lista las secuencias de teclas que invocan macros\n" +" y sus valores en una forma que se pueden reutilizar " +"como\n" +" entrada.\n" +" -V Lista los nombres de variables y valores.\n" +" -v Lista los nombres de variables y valores en una\n" +" forma que se pueden reutilizar como entrada.\n" +" -q nombre-función Pregunta qué teclas invocan la función nombrada.\n" +" -u nombre-función Borra todas las teclas que están ligadas a\n" +" la función nombrada.\n" +" -r secteclas Borra la asignación para la SECTECLAS.\n" +" -f fichero Lee las asignaciones de teclas del FICHERO.\n" +" -x secteclas:orden-shell\tCausa que se ejecute la ORDEN-SHELL cuando\n" +" \t\t\t\tse introduce la SECTECLAS.\n" +" \n" +" Estado de Salida:\n" +" bind devuelve 0 a menos que se presente una opción desconocida o suceda\n" +" un error." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Termina bucles for, while o until.\n" +" \n" +" Termina un bucle FOR, WHILE o UNTIL. Si se especifica N, termina\n" +" N bucles anidados.\n" +" \n" +" Estado de Salida:\n" +" El estado de salida es 0 a menos que N no sea mayor o igual a 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Reanuda bucles for, while o until\n" +" \n" +" Reanuda la siguiente iteración del bucle FOR, WHILE o UNTIL\n" +" circundante. Si se especifica N, reanuda en el N-ésimo bucle " +"circundante.\n" +" \n" +" Estado de Salida:\n" +" El estado de salida es 0 a menos que N no sea mayor o igual a 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Ejecuta órdenes internas del shell\n" +" \n" +" Ejecuta la ORDEN-INTERNA-SHELL con los argumentos ARGs sin realizar la\n" +" búsqueda interna de órdenes. Esto es útil cuando se desea " +"reimplementar\n" +" una orden interna de la shell como una función de shell, pero se " +"necesita\n" +" ejecutar la orden interna dentro de la función.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de salida de la ORDEN-INTERNA-SHELL, o falso si la\n" +" ORDEN-INTERNA-SHELL no es una orden interna de shell." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Devuelve el contexto de la llamada a subrutina actual.\n" +" \n" +" Sin EXPR, devuelve \"$linea $nombrefichero\". Con EXPR, devuelve\n" +" \"$linea $subrutina $nombrefichero\"; esta información adicional\n" +" se puede usar para proporcionar un volcado de pila.\n" +" \n" +" El valor de EXPR indica cuántos marcos de llamada hay que retroceder\n" +" antes del actual; el marco superior es el marco 0.\n" +" \n" +" Estado de Salida:\n" +" Devuelve 0 a menos que el shell no esté ejecutando una función de shell\n" +" o EXPR sea inválida." + +# Slash lo venimos traduciendo por barra inclinada , y backslash +# por barra invertida em++ +# Corregido en toda la traducción. cfuga +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Modifica el directorio de trabajo del shell.\n" +" \n" +" Modifica el directorio actual a DIR. DIR por defecto es el valor de la\n" +" variable de shell HOME.\n" +" \n" +" La variable CDPATH define la ruta de búsqueda para el directorio que\n" +" contiene DIR. Los nombres alternativos de directorio en CDPATH se\n" +" separan con dos puntos (:). Un nombre de directorio nulo es igual que\n" +" el directorio actual. Si DIR comienza con una barra inclinada (/),\n" +" entonces no se usa CDPATH.\n" +" \n" +" Si no se encuentra el directorio, y la opción del shell `cdable_vars'\n" +" está activa, entonces se trata la palabra como un nombre de variable.\n" +" Si esa variable tiene un valor, se utiliza su valor para DIR.\n" +" \n" +" Opciones:\n" +" -L\tfuerza a seguir los enlaces simbólicos: resuelve los enlaces\n" +" \t\tsimbólicos en DIR después de procesar las instancias de `..'\n" +" -P\tusa la estructura física de directorios sin seguir los enlaces\n" +" \t\tsimbólicos: resuelve los enlaces simbólicos en DIR antes de " +"procesar\n" +" \t\tlas instancias de `..'\n" +" -e\tsi se da la opción -P y el directorio actual de trabajo no se\n" +" \t\tpuede determinar con éxito, termina con un estado diferente de " +"cero.\n" +" \n" +" La acción por defecto es seguir los enlaces simbólicos, como si se\n" +" especificara `-L'.\n" +" `..' se procesa quitando la componente del nombre de la ruta " +"inmediatamente\n" +" anterior hasta una barra inclinada o el comienzo de DIR.\n" +" \n" +" Estado de Salida:\n" +" Devuelve 0 si se cambia el directorio, y si $PWD está definido como\n" +" correcto cuando se emplee -P; de otra forma es diferente a cero." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Muestra el nombre del directorio de trabajo actual.\n" +" \n" +" Opciones:\n" +" -L\tmuestra el valor de $PWD si nombra al directorio de\n" +" \ttrabajo actual\n" +" -P\tmuestra el directorio físico, sin enlaces simbólicos\n" +" \n" +" Por defecto, `pwd' se comporta como si se especificara `-L'.\n" +" \n" +" Estado de Salida:\n" +" Devuelve 0 a menos que se de una opción inválida o no se pueda leer\n" +" el directorio actual." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Orden nula.\n" +" \n" +" Sin efecto; la orden no hace nada.\n" +" \n" +" Estado de Salida:\n" +" Siempre correcto." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Devuelve un resultado correcto.\n" +" \n" +" Estado de Salida:\n" +" Siempre correcto." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Devuelve un resultado incorrecto.\n" +" \n" +" Estado de Salida:\n" +" Siempre incorrecto." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Ejecuta una orden simple o muestra información sobre órdenes.\n" +" \n" +" Ejecuta la ORDEN con ARGumentos, suprimiendo la búsqueda de funciones\n" +" de shell, o muestra información sobre las ORDENes especificadas. Se " +"puede\n" +" usar para invocar órdenes en disco cuando existe una función con el " +"mismo\n" +" nombre.\n" +" \n" +" Opciones:\n" +" -p utiliza un valor predeterminado de RUTA que garantiza que se\n" +" encuentren todas las utilidades comunes\n" +" -v muestra una descripción de la ORDEN similar a la orden\n" +" interna `type'\n" +" -V muestra una descripción más detallada de cada ORDEN\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de salida de la ORDEN, o fallo si no se encuentra\n" +" la ORDEN." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Establece valores de variable y atributos.\n" +" \n" +" Declara variables y les da atributos. Si no se da ningún NOMBRE,\n" +" muestra los atributos y valores de todas las variables.\n" +" \n" +" Opciones:\n" +" -f\trestringe la acción o la información a nombres y definiciones\n" +" \t\tde funciones\n" +" -F\trestringe la información a nombres de funciones únicamente (con\n" +" \t\tnúmero de línea y fichero fuente al depurar)\n" +" -g\tcrea variables globales cuando se usa en una función de shell;\n" +" \t\ten caso contrario, se descarta\n" +" -p\tmuestra los atributos y el valor de cada NOMBRE\n" +" \n" +" Opciones que establecen atributos:\n" +" -a\testablece NOMBREs como matrices indexadas (si se admiten)\n" +" -A\testablece NOMBREs como matrices asociativas (si se admiten)\n" +" -i\testablece NOMBREs con el atributo `integer'\n" +" -l\tconvierte el valor de cada NOMBRE a minúsculas en la asignación\n" +" -r\tcrea NOMBREs como de sólo lectura\n" +" -t\tcrea NOMBREs con el atributo `trace'\n" +" -u\tconvierte el valor de cada NOMBRE a mayúsculas en la asignación\n" +" -x\tcrea NOMBREs para exportar\n" +" \n" +" Si se usa `+' en lugar de `-', se desactiva el atributo dado.\n" +" \n" +" Las variables con el atributo ‘integer’ realizan evaluación aritmética\n" +" (vea la orden `let') cuando se asigna un valor a la variable.\n" +" \n" +" Cuando se usa en una función, `declare' hace locales a los NOMBREs,\n" +" como sucede con la orden `local'. La opción `-g' suprime esta\n" +" conducta.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se dé una opción inválida o\n" +" suceda un error de asignación de variable." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Establece valores de variables y atributos.\n" +" \n" +" Sinónimo de `declare'. Vea `help declare'." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Define variables locales.\n" +" \n" +" Crea una variable local llamada NOMBRE, y le da un VALOR. OPCIÓN puede\n" +" ser cualquier opción aceptada por `declare'.\n" +" \n" +" Las variables locales sólo pueden usarse dentro de funciones; son\n" +" visibles solo en la función donde se definen y sus hijos.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se dé una opción inválida, suceda\n" +" un error de asignación, o el shell no esté ejecutando una función." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Escribe argumentos en la salida estándar.\n" +" \n" +" Muestra los ARGumentos en la salida estándar seguidos por un carácter\n" +" de fin de línea.\n" +" \n" +" Opciones:\n" +" -n\tno agrega un carácter de fin de línea\n" +" -e\tactiva la interpretación de los siguientes caracteres de escape " +"de\n" +" \t\tbarra invertida\n" +" -E\tdesactiva explícitamente la interpretación de caracteres de\n" +" \t\tescape de barra invertida\n" +" \n" +" `echo' interpreta los siguientes caracteres de escape de barra " +"invertida:\n" +" \\a\talerta (timbre)\n" +" \\b\tborrado hacia atrás\n" +" \\c\tsuprime toda salida a continuación\n" +" \\e\tcarácter de escape\n" +" \\E\tcarácter de escape\n" +" \\f\talimentación de papel\n" +" \\n\tlínea nueva\n" +" \\r\tretorno de carro\n" +" \\t\ttabulador horizontal\n" +" \\v\ttabulador vertical\n" +" \\\\\tbarra invertida\n" +" \\0nnn\tcarácter cuyo código ASCII es NNN (octal). NNN puede ser\n" +" \t\tde 0 a 3 dígitos octales\n" +" \\xHH\tel de ocho bits cuyo valor es HH (hexadecimal). HH\n" +" \t\tpuede ser de uno o dos dígitos hexadecimales\n" +" \\uHHHH\tcarácter Unicode cuyo valor es el valor hexadecimal HHHH.\n" +" \t\tHHHH puede tener de uno a cuatro dígitos hexadecimales.\n" +" \\UHHHHHHHH carácter Unicode cuyo valor es el valor hexadecimal " +"HHHHHHHH.\n" +" \t\tHHHHHHHH puede tener de uno a ocho dígitos hexadecimales.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que suceda un error de escritura." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Escribe argumentos en la salida estándar.\n" +" \n" +" Muestra los ARGumentos en la salida estándar seguidos por un carácter\n" +" de fin de línea.\n" +" Opciones:\n" +" -n\tno agrega un carácter de fin de línea\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que suceda un error de escritura." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Activa y desactiva las órdenes internas del shell.\n" +" \n" +" Activa y desactiva las órdenes internas del shell. El desactivar le\n" +" permite ejecutar una orden del disco que tenga el mismo nombre que\n" +" la orden interna del shell, sin usar el nombre de ruta completo.\n" +" \n" +" Opciones:\n" +" -a\tmuestra la lista de órdenes internas indicando si están activas o " +"no\n" +" -n\tdesactiva cada NOMBRE o muestra la lista de órdenes internas\n" +" \t\tdesactivadas\n" +" -p\tmuestra la lista de órdenes internas en una forma reusable\n" +" -s\tmuestra solo los nombres de las órdenes internas `especiales' " +"Posix\n" +" \n" +" Opciones que controlan la carga dinámica:\n" +" -f\tCarga la función interna NOMBRE desde el objeto compartido " +"FICHERO\n" +" -d\tBorra una orden interna cargada con -f\n" +" \n" +" Sin opciones, se activa cada NOMBRE.\n" +" \n" +" Para usar el `test' que se encuentra en $PATH en lugar de la orden " +"interna\n" +" del shell, ejecute `enable -n test'.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que NOMBRE no sea una orden interna del shell\n" +" o suceda un error." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Ejecuta argumentos como una orden de shell.\n" +" \n" +" Combina los ARGumentos en una sola cadena, usa el resultado como " +"entrada\n" +" para el shell, y ejecuta las órdenes resultantes.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de salida de la orden o éxito si la orden es nula." + +# "a ser reconocidas" no está en español. +# Yo pondría "las letras de opción que se reconocen". sv +# en una de dos formas -> en una de las dos formas siguientes em+ +# dar argumentos -> especificar em+ +# De acuerdo. cfuga +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Decodifica argumentos de opción.\n" +"\n" +" Getopts se usa en procedimientos del shell para decodificar parámetros\n" +" posicionales como opciones.\n" +" \n" +" CADENA_OPCIONES contiene las letras de opción para reconocer; si\n" +" una letra es seguida por dos puntos, se espera que la opción tenga\n" +" un argumento, del cual se debe separar con espacios en blanco.\n" +" \n" +" Cada vez que se invoca, getopts colocará la siguiente opción en la\n" +" variable de shell $nombre, inicializando nombre si no existe, y el\n" +" índice del siguiente argumento a ser procesado en la variable de\n" +" shell OPTIND. OPTIND se inicializa a 1 cada vez que se invoca el\n" +" shell, o un guión de shell. Cuando una opción requiere un argumento,\n" +" getopts coloca ese argumento en la variable de shell OPTARG.\n" +" \n" +" getopts reporta errores en una de las dos formas siguientes. Si\n" +" el primer carácter de OPTSTRING es dos puntos, getopts usa el\n" +" aviso de errores silencioso. En este modo, no se muestran\n" +" mensajes de error. Si se encuentra una opción inválida, getopts\n" +" coloca el carácter de opción encontrado en OPTARG. Si no se\n" +" encuentra el argumento necesario, getopts coloca ':' en NOMBRE y\n" +" define OPTARG con el carácter de opción encontrado. Si getopts no\n" +" está en modo silencioso, y se encuentra una opción inválida, getopts\n" +" coloca '?' en NOMBRE y borra OPTARG. Si no se encuentra un argumento\n" +" necesario, se coloca '?' en NOMBRE, se borra OPTARG, y se muestra\n" +" un mensaje de diagnóstico.\n" +" \n" +" Si la variable de shell OPTERR tiene el valor 0, getopts desactiva\n" +" la notificación de mensajes de error, aún si el primer carácter de\n" +" OPTSTRING no es ':'. OPTERR tiene el valor 1 por defecto.\n" +" \n" +" Getopts normalmente compara los parámetros de posición ($0 - $9),\n" +" pero si se especifican más argumentos, éstos se comparan en lugar\n" +" de los primeros.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto si se encuentra una opción; falla si se encuentra\n" +" el final de las opciones o sucede un error." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Reemplaza el shell con la orden dada.\n" +" \n" +" Ejecuta la ORDEN, reemplazando este shell con el programa especificado.\n" +" Los ARGUMENTOS se vuelven los argumentos de la ORDEN. Si no se\n" +" especifica la ORDEN, cualquier redirección toma efecto en el shell " +"actual.\n" +" \n" +" Opciones:\n" +" -a nombre\tpasa el NOMBRE como el argumento cero de la ORDEN\n" +" -c\tejecuta la ORDEN en un entorno vacío\n" +" -l\tcoloca un guion en el argumento cero de la ORDEN\n" +" \n" +" Si la orden no se puede ejecutar, termina un shell no interactivo,\n" +" a menos que la opción de shell `execfail' esté activa.\n" +" \n" +" Estado de Salida:\n" +" Devuelve éxito a menos que no se encuentre la ORDEN o que suceda un\n" +" error de redirección." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Termina el shell.\n" +" \n" +" Termina el shell con un estado de N. Si se omite N, el estado de " +"salida\n" +" es el mismo de la última orden ejecutada." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Termina un shell de entrada.\n" +" \n" +" Termina un shell de entrada con un estado de salida de N. Devuelve un\n" +" error si no se ejecuta en un shell de entrada." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Muestra o ejecuta órdenes de la lista de la historia.\n" +" \n" +" fc se usa para listar o editar y reejecutar órdenes de la lista de la\n" +" historia. PRIMERO y ÚLTIMO pueden ser números que especifican el " +"rango,\n" +" o PRIMERO puede ser una cadena, que significa la orden más reciente que\n" +" comience con esa cadena.\n" +" \n" +" -e NOMBRE_E\tselecciona el editor a usar. Por defecto es FCEDIT,\n" +" \t\tdespués EDITOR, después vi\n" +" -l \tlista laslíneas en lugar de editar\n" +" -n\tomite los números de línea al listar\n" +" -r\tinvierte el orden de las líneas (muestra primero las más " +"recientes)\n" +" \n" +" Con el formato `fc -s [pat=rep ...] [orden]', la ORDEN se\n" +" ejecuta de nuevo después de realizar la sustitución ANT=NUEVO.\n" +" \n" +" Un alias útil para usar con esto es r='fc -s', tal que al teclear\n" +" `r cc' ejecuta la última orden que comience con `cc' y al teclear\n" +" `r' reejecuta la última orden.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto o el estado de la orden ejecutada; si sucede un " +"error,\n" +" es diferente de cero." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Mueve el trabajo al primer plano.\n" +" \n" +" Ubica el trabajo identificado con IDTRABAJO en primer plano y\n" +" lo convierte en el trabajo actual. Si IDTRABAJO no está presente, se " +"usa\n" +" la noción del shell del trabajo actual.\n" +" \n" +" Estado de Salida:\n" +" El estado de la orden ubicada en primer plano, o falla si sucede un " +"error." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Mueve trabajos al segundo plano.\n" +" \n" +" Coloca los trabajos identificados por cada IDTRABAJO en segundo plano,\n" +" como si se hubieran iniciado con `&'. Si IDTRABAJO no está presente,\n" +" se usa la noción del shell del trabajo actual.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que el control de trabajos no esté activado o\n" +" suceda un error." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Almacena o muestra la ubicación de los programas.\n" +" \n" +" Determina y almacena la ruta completa de cada órden NOMBRE. Si\n" +" no se proporcionan argumentos, se muestra la información de las\n" +" órdenes almacenadas.\n" +" \n" +" Opciones:\n" +" -d\tolvida la ubicación almacenada de cada NOMBRE\n" +" -l\tmuestra en un formato que se puede reutilizar como entrada\n" +" -p ruta\tusa RUTA como la ruta completa de NOMBRE\n" +" -r\tolvida todas las ubicaciones almacenadas\n" +" -t\tmuestra la ubicación almacenada de cada NOMBRE,\n" +" \t\tcada ubicación precedida del NOMBRE correspondiente\n" +" \t\tsi se dan varios NOMBREs\n" +" Argumentos:\n" +" NOMBRE\tCada NOMBRE se busca en $PATH y se agrega a la lista\n" +" \t\tde órdenes almacenadas.\n" +" \n" +" Estado de Salida\n" +" Devuelve correcto a menos que no se encuentre NOMBRE o se proporcione\n" +" una opción inválida." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Muestra información sobre órdenes internas.\n" +" \n" +" Muestra un resumen breve de las órdenes internas. Si se especifica\n" +" un PATRÓN, da ayuda detallada sobre todas las órdenes que\n" +" coincidan con el PATRÓN; en caso contrario, se muestra la lista de\n" +" tópicos de ayuda.\n" +" \n" +" Opciones:\n" +" -d\tmuestra una descripción corta para cada tópico\n" +" -m\tmuestra el uso en un formato similar a página man\n" +" -s\tmuestra sólo una sinopsis breve de uso para cada tópico que\n" +" \t\tcoincida con el PATRÓN\n" +" \n" +" Argumentos:\n" +" PATRÓN\tPatrón que especifica un tópico de ayuda\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que no se encuentre PATRÓN o se proporcione\n" +" una opción inválida." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Muestra o manipula la lista de la historia.\n" +" \n" +" Muestra la lista de la historia con números de línea, mostrando\n" +" cada línea modificada con un `*' como prefijo. El argumento N\n" +" muestra solamente las últimas N entradas.\n" +" \n" +" Opciones:\n" +" -c\tborra la lista de historia eliminando todas las entradas\n" +" -d despl\tborra la entrada de la historia en la posición DESPL. Los\n" +" \t\tdesplazamientos negativos se cuentan hacia atrás desde el final de\n" +" \t\tla lista de historia\n" +" \n" +" -a\tagrega las líneas de historia de esta sesión al fichero de " +"historia\n" +" -n\tlee todas las líneas de historia que no se han leído del fichero\n" +" \tde historia\n" +" -r\tlee el fichero de historia y agrega el contenido al fichero\n" +" \tde historia\n" +" -w\tescribe la historia actual en el fichero de historia\n" +" \n" +" -p\thace expansión de historia en cada ARGumento y muestra el\n" +" \tresultado, sin guardarlo en la lista de historia\n" +" -s\tagrega los ARGumentos a la lista de historia como\n" +" \tuna sola entrada\n" +" \n" +" Si se proporciona FICHERO, entonces se usa como el fichero de\n" +" historia. Si no, si $HISTFILE tien un valor, éste se usa, en otro caso\n" +" ~/.bash_history.\n" +" \n" +" Si la variable $HISTTIMEFORMAT está definida y no es nula, se usa su\n" +" valor como una cadena de formato strftime(3) para mostrar la marca de\n" +" tiempo asociada con cada entrada de historia mostrada. No se muestra\n" +" ninguna marca de tiempo de otra forma.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a no ser que se dé una opción inválida u ocurra un " +"error." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Muestra el estado de los trabajos.\n" +" \n" +" Muestra los trabajos activos. IDTRABAJO restringe la salida a\n" +" esa trabajo. Sin opciones, se muestra el estado de todas los trabajos\n" +" activos.\n" +" \n" +" Opciones:\n" +" -l\tmuestra los IDs de los procesos, además de la información normal\n" +" -n\tsolo muestra los procesos que han cambiado de estado desde\n" +" \t\tla última notificación\n" +" -p\tsolo muestra los IDs de los procesos\n" +" -r\trestringe la salida a los trabajos en ejecución\n" +" -s\trestringe la salida a los trabajos detenidos\n" +" \n" +" Si se especifica -x, la ORDEN se ejecuta después de que todas las\n" +" especificaciones de trabajo que aparecen en ARGS se hayan reemplazado\n" +" con el ID de proceso del líder del grupo de procesos de dicho trabajo.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se dé una opción inválida o suceda un\n" +" error. Si se usa -x, devuelve el estado de salida de la ORDEN." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Quita trabajos del shell actual.\n" +" \n" +" Quita cada argumento IDTRABAJO de la tabla de trabajos activos. Sin\n" +" ningún IDTRABAJO, el shell utiliza su noción del trabajo actual.\n" +" \n" +" Opciones:\n" +" -a\tquita todas los trabajos si no se proporciona IDTRABAJO\n" +" -h\tmarca cada IDTRABAJO para que no se le envíe SIGHUP\n" +" \t\tsi el shell recibe un SIGHUP\n" +" -r\tquita solo los trabajos en ejecución\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcionen una opción o\n" +" un IDTRABAJO inválida." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Envía una señal a una trabajo.\n" +" \n" +" Envía a los procesos nombrados por PID (o IDTRABAJO) la señal ID_SEÑAL\n" +" o NUM_SEÑAL. Si no están presentes ni ID_SEÑAL o NUM_SEÑAL, se asume\n" +" SIGTERM.\n" +" \n" +" Opciones:\n" +" -s sig\tSIG es un nombre de señal\n" +" -n sig\tSIG es un número de señal\n" +" -l\tlista los nombres de señales; si hay argumentos a continuación\n" +" \t\tde `-l', se asume que son números de señal para las cuales se debe\n" +" mostrar el nombre.\n" +" \n" +" Kill es una orden interna del shell por dos razones: permite que se\n" +" puedan utilizar IDs de trabajo en lugar de IDs de proceso y permite\n" +" matar procesos si se ha alcanzado el límite de procesos que se pueden\n" +" crear.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se dé una opción inválida o suceda un " +"error." + +# "a ser evaluada" no está en español. sv +# Cierto. ¿Así está mejor? cfuga +# overflow -> desbordamiento o sobrepasamiento. nunca lo he visto +# traducido como sobreflujo. sv +# Corregido. cfuga +# No sé si existe precedencia en español, pero me suena fatal. +# Yo pondría simplemente "prioridad". sv +# Creo que si existe, pero tu sugerencia es mejor. cfuga +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Evalúa expresiones aritméticas.\n" +" \n" +" Evalúa cada ARG como una expresión aritmética. La evaluación se hace\n" +" con enteros de longitud fija, sin revisar desbordamientos, aunque la\n" +" la división por 0 se captura y se marca como un error. La siguiente\n" +" lista de operadores está agrupada en niveles de operadores de la misma\n" +" prioridad. Los niveles se muestran en orden de prioridad decreciente.\n" +" \n" +" \tid++, id--\tpost-incremento, post-decremento de variable\n" +" \t++id, --id\tpre-incremento, pre-decremento de variable\n" +" \t-, +\t\tmenos, más unario\n" +" \t!, ~\t\tnegación lógica y basada en bits\n" +" \t**\t\texponenciación\n" +" \t*, /, %\t\tmultiplicación, división, residuo\n" +" \t+, -\t\tadición, sustracción\n" +" \t<<, >>\t\tdesplazamientos de varios bit izquierdo y derecho\n" +" \t<=, >=, <, >\tcomparación\n" +" \t==, !=\t\tequivalencia, inequivalencia\n" +" \t&\t\tAND de varios bit\n" +" \t^\t\tXOR de varios bit\n" +" \t|\t\tOR de varios bit\n" +" \t&&\t\tAND lógico\n" +" \t||\t\tOR lógico\n" +" \texpr ? expr : expr\n" +" \t\t\toperador condicional\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tasignación\n" +" \n" +" Se permiten las variables de shell como operandos. El nombre\n" +" de la variable se reemplaza por su valor (coercionado a un\n" +" entero de longitud fija) dentro de una expresión. La variable\n" +" no necesita tener activado su atributo entero para emplearse\n" +" en una expresión.\n" +" \n" +" Los operadores se evalúan en orden de prioridad. Primero se\n" +" evalúan las sub-expresiones en paréntesis y pueden sobrepasar\n" +" las reglas de prioridad anteriores.\n" +" \n" +" Estado de Salida:\n" +" Si el último ARGumento se evalúa como 0, ‘let’ devuelve 1; de\n" +" otra forma, ‘let’ devuelve 0." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Lee una línea de la salida estándar y la divide en campos.\n" +" \n" +" Lee una sola línea de la entrada estándar, o del descriptor de\n" +" fichero FD si se proporciona la opción -u. La línea se divide en " +"campos\n" +" con separación de palabras, y la primera palabra se asigna al primer\n" +" NOMBRE, la segunda palabra al segundo NOMBRE, y así sucesivamente, con\n" +" las palabras restantes asignadas al último NOMBRE. Sólo los caracteres\n" +" que se encuentran en $IFS se reconocen como delimitadores de palabras.\n" +" \n" +" Si no se proporciona ningún NOMBRE, la línea leída se guarda en la\n" +" variable REPLY.\n" +" \n" +" Opciones:\n" +" -a matriz\tasigna las palabras leídas a índices secuenciales de\n" +" \t\tla variable matricial MATRIZ, empezando en cero\n" +" -d delim\tcontinúa hasta que se lea el primer carácter de DELIM,\n" +" \t\ten lugar de línea nueva\n" +" -e\tusa Readline para obtener la línea\n" +" -i texto\tEmplea el TEXTO como el texto inicial para Readline\n" +" -n ncars\tregresa tras leer NCARS caracteres en lugar de\n" +" \t\tesperar una línea nueva, pero honra a un delimitador si\n" +" \t\tse leen menos de NCARS caracteres antes del delimitador\n" +" -N ncars\tdevuelve sólo después de leer exactamente NCARS\n" +" \t\tcaracteres, a menos que se encuentre el fin del fichero\n" +" \t\to expire la lectura, descartando cualquier delimitador\n" +" -p prompt\tsale la cadena PROMPT sin un carácter de línea nueva\n" +" \t\tal final antes de intentar leer\n" +" -r\t\tno permite que las barras invertidas escapen caracteres\n" +" -s\t\tno muestra la salida que proviene de una terminal\n" +" -t tiempo\texpira y devuelve fallo si no se lee una línea completa\n" +" \t\tde entrada en TIEMPO segundos. El valor de la variable TMOUT\n" +" \t\tes el tiempo de expiración por defecto. TIEMPO puede ser un\n" +" \t\tnúmero fraccionario. Si TIEMPO es 0, ‘read’ devuelve correcto\n" +" \t\tsólo si hay entrada disponible en el descriptor de fichero\n" +" \t\tespecificado. El estado de salida es mayor que 128 si se excede\n" +" \t\tel tiempo de expiración.\n" +" -u df\t\tlee del descriptor de fichero DF en lugar de la entrada\n" +" \t\testándar\n" +" \n" +" Estado de Salida:\n" +" El código de devolución es cero, a menos que se encuentre un final de\n" +" línea, el tiempo de lectura se agote, o se proporcione un descriptor\n" +" de fichero inválido como el argumento de -u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Devuelve de una función de shell.\n" +" \n" +" Causa que una función o un script leído termine con el valor devuelto\n" +" especificado por N. Si se omite N, el estado devuelto es el de la " +"última\n" +" orden ejecutada dentro de la función o script.\n" +" \n" +" Estado de Salida:\n" +" Devuelve N, o falla si el shell no está ejecutando una función o un " +"script." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Establece o borra los valores de las opciones de shell y los parámetros\n" +"posicionales.\n" +" \n" +" Modifica el valor de los atributos de shell y los parámetros " +"posicionales,\n" +" o muestra los nombres y valores de las variables de shell.\n" +" \n" +" Opciones:\n" +" -a Marca las variables que se modifican o crean para exportación.\n" +" -b Notifica el término de trabajos inmediatamente.\n" +" -e Termina inmediatamente si una orden termina con un estado\n" +" diferente a cero.\n" +" -f Desactiva la generación de nombres de ficheros (englobamiento).\n" +" -h Recuerda la ubicación de las órdenes como se localizaron.\n" +" -k Todos los argumentos de asignación se colocan en el ambiente para " +"una\n" +" orden, no solo aquellos que preceden al nombre de la orden.\n" +" -m Activa el control de trabajos.\n" +" -n Lee órdenes pero no las ejecuta.\n" +" -o nombre-opción\n" +" Establece la variable correspondiente a nombre-opción:\n" +" allexport igual que -a\n" +" braceexpand igual que -B\n" +" emacs usa una interfaz de edición lineal estilo emacs\n" +" errexit igual que -e\n" +" errtrace igual que -E\n" +" functrace igual que -T\n" +" hashall igual que -h\n" +" histexpand igual que -H\n" +" history activa la historia de órdenes\n" +" ignoreeof el shell no terminará después de leer EOF\n" +" interactive-comments\n" +" permite que haya comentarios en órdenes " +"interactivas\n" +" keyword igual que -k\n" +" monitor igual que -m\n" +" noclobber igual que -C\n" +" noexec igual que -n\n" +" noglob igual que -f\n" +" nolog actualmente se acepta pero se descarta\n" +" notify igual que -b\n" +" nounset igual que -u\n" +" onecmd igual que -t\n" +" physical igual que -P\n" +" pipefail el valor de retorno de una tubería es el estado\n" +" de la última orden que sale con un estado " +"diferente\n" +" de cero, o cero si ninguna orden termina con un\n" +" estado diferente de cero\n" +" posix modifica el comportamiento de bash donde la\n" +" operación por defecto difiere del estándar POSIX\n" +" para que coincida con el estándar\n" +" privileged igual que -p\n" +" verbose igual que -v\n" +" vi usa una interfaz de edición de línea estilo vi\n" +" xtrace igual que -x\n" +" -p Activo cuando los ids real y efectivo del usuario no coinciden.\n" +" Desactiva el procesamiento del fichero $ENV y la importación de\n" +" funciones de shell. Si se desactiva esta opción causa que el uid " +"y\n" +" el gid efectivos sean iguales al uid y el gid real.\n" +" -t Termina después de leer y ejecutar una orden.\n" +" -u Trata las variables sin definir como un error al sustituir.\n" +" -v Muestra las líneas de entrada del shell mientras se leen.\n" +" -x Muestra las órdenes y sus argumentos mientras se ejecutan.\n" +" -B el shell realizará expansión de llaves.\n" +" -C Si se activa, no permite que los ficheros regulares existentes\n" +" se sobreescriban por redirección de la salida.\n" +" -E Si se activa, las funciones del shell heredan la trampa ERR.\n" +" -H Activa el estilo de sustitución de historia ! . Esta opción está\n" +" activa por defecto cuando el shell es interactivo.\n" +" -P Si se activa, no sigue enlaces simbólicos cuando se ejecutan " +"órdenes\n" +" como cd, que cambian el directorio actual.\n" +" -T Si se activa, las funciones del shell heredan la trampa DEBUG.\n" +" -- Asigna cualquier argumento restante a los parámetros " +"posicionales.\n" +" Si no restan argumentos, se desactivan los parámetros " +"posicionales.\n" +" - Asigna cualquier argumento restante a los parámetros " +"posicionales.\n" +" Las opciones -x y -v se desactivan.\n" +" \n" +" Si se usa + en lugar de - causa que estas opciones se desactiven. Las\n" +" opciones también se pueden usar en la invocación del shell. El " +"conjunto\n" +" actual de opciones se puede encontrar en $-. Los n ARGs restantes son\n" +" parámetros posicionales que se asignan, en orden, a $1, $2, .. $n. Si " +"no\n" +" se proporciona ningún ARG, se muestran todas las variables del shell.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione una opción inválida." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Desactiva valores y atributos de las variables y funciones del shell.\n" +" \n" +" Por cada NOMBRE, borra la función o variable correspondiente.\n" +" \n" +" Opciones:\n" +" -f\ttrata cada NOMBRE como una función de shell\n" +" -v\ttrata cada NOMBRE como una variable de shell\n" +" -n\ttrata cada NOMBRE como una referencia de nombre y desasigna\n" +" \t\tla propia variable, no aquella a la que hace referencia\n" +" \n" +" Sin opciones, unset primero trata de borrar una variable, y si falla,\n" +" trata de borrar una función.\n" +" \n" +" Algunas variables no se pueden borrar; también consulte `readonly'.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" +" un NOMBRE sea de sólo lectura." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Establece el atributo de exportación para las variables de shell.\n" +" \n" +" Marca cada NOMBRE para exportación automática al ambiente para las " +"órdenes\n" +" ejecutadas subsecuentemente. Si se proporciona un VALOR, se asigna el\n" +" VALOR antes de exportar.\n" +" \n" +" Opciones:\n" +" -f\tse refiere a funciones de shell\n" +" -n\tborra la propiedad de exportación para cada NOMBRE\n" +" -p\tmuestra una lista de todas las variables y funciones exportadas\n" +" \n" +" El argumento `--' desactiva el procesamiento posterior de opciones.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione una opción inválida o que\n" +" NOMBRE sea inválido." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Marca las variables de shell para evitar su modificación.\n" +" \n" +" Marca cada NOMBRE como de sólo lectura; los valores de esos NOMBREs\n" +" no se pueden modificar por asignaciones subsecuentes. Si se " +"proporciona\n" +" un VALOR, se asigna el VALOR antes de marcar como de sólo lectura.\n" +" \n" +" Opciones:\n" +" -a\tse refiere a variables de matriz indexada\n" +" -A\tse refiere a variables de matriz asociativa\n" +" -f\tse refiere a funciones de shell\n" +" -p\tmuestra una lista de todas las variables y funciones de sólo " +"lectura,\n" +" \t\tdependiendo de si se pone o no la opción -f\n" +" \n" +" El argumento `--' desactiva el procesamiento posterior de opciones.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" +" el NOMBRE sea inválido." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Desplaza los parámetros posicionales.\n" +" \n" +" Renombra los parámetros posicionales $N+1,$N+2 ... a $1,$2 ... Si no\n" +" se proporciona N, se asume que es 1.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que N sea negativo o mayor que $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Ejecuta órdenes de un fichero en el shell actual.\n" +" \n" +" Lee y ejecuta órdenes del FICHERO en el shell actual. Se utilizan las\n" +" entradas en $PATH para encontrar el directorio que contiene el FICHERO.\n" +" Si se proporciona ARGUMENTOS, se convierten en los parámetros " +"posicionales\n" +" cuando se ejecuta el FICHERO.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de la última orden ejecutada del FICHERO; falla si\n" +" no se puede leer el FICHERO." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspende la ejecución del shell.\n" +" \n" +" Suspende la ejecución de este shell hasta que recibe una señal SIGCONT.\n" +" Los shells de entrada no se pueden suspender, a menos que sean " +"forzados.\n" +" \n" +" Opciones:\n" +" -f\tfuerza la suspensión, aún si el shell es un shell de entrada\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que no esté activo el control de trabajos o\n" +" suceda un error." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Evalúa expresiones condicionales.\n" +" \n" +" Termina con un estado de 0 (verdadero) o 1 (falso) dependiendo de\n" +" la evaluación de EXPR. Las expresiones pueden ser unarias o binarias.\n" +" Las expresiones unarias se usan generalmente para examinar el estado\n" +" de un fichero. Hay también operadores de cadenas, y operadores de\n" +" comparación numérica.\n" +" \n" +" El comportamiento de test depende del número de argumentos. Lea la " +"página\n" +" de manual de bash para la especificación completa.\n" +" \n" +" Operadores de fichero:\n" +" \n" +" -a FICHERO Verdadero si el fichero existe.\n" +" -b FICHERO Verdadero si el fichero es especial de bloques.\n" +" -c FICHERO Verdadero si el fichero es especial de caracteres.\n" +" -d FICHERO Verdadero si el fichero es un directorio.\n" +" -e FICHERO Verdadero si el fichero existe.\n" +" -f FICHERO Verdadero si el fichero existe y es un fichero " +"regular.\n" +" -g FICHERO Verdadero si el fichero tiene activado el set-group-" +"id.\n" +" -h FICHERO Verdadero si el fichero es un enlace simbólico.\n" +" -L FICHERO Verdadero si el fichero es un enlace simbólico.\n" +" -k FICHERO Verdadero si el fichero tiene el bit `sticky' " +"activado.\n" +" -p FICHERO Verdadero si el fichero es una tubería nombrada.\n" +" -r FICHERO Verdadero si el fichero es legible para usted.\n" +" -s FICHERO Verdadero si el fichero existe y no está vacío.\n" +" -S FICHERO Verdadero si el fichero es un `socket'.\n" +" -t DF Verdadero si el DF está abierto en una terminal.\n" +" -u FICHERO Verdadero si el fichero tiene activado el set-user-id.\n" +" -w FICHERO Verdadero si usted puede escribir en el fichero.\n" +" -x FICHERO Verdadero si usted puede ejecutar el fichero.\n" +" -O FICHERO Verdadero si usted efectivamente posee el fichero.\n" +" -G FICHERO Verdadero si su grupo efectivamente posee el fichero.\n" +" -N FICHERO Verdadero si el fichero se modificó desde la última " +"lectura.\n" +" \n" +" FICH1 -nt FICH2 Verdadero si fich1 es más reciente que fich2\n" +" (de acuerdo a la fecha de modificación).\n" +" \n" +" FICH1 -ot FICH2 Verdadero si fich1 es más antiguo que fich2.\n" +" \n" +" FICH1 -ef FICH2 Verdadero si fich1 es un enlace duro a fich2.\n" +" \n" +" Operadores de cadenas:\n" +" \n" +" -z CADENA Verdadero si la cadena está vacía.\n" +" \n" +" -n CADENA\n" +" CADENA Verdadero si la cadena no está vacía.\n" +" \n" +" CADENA1 = CADENA2\n" +" Verdadero si las cadenas son iguales.\n" +" CADENA1 != CADENA2\n" +" Verdadero si las cadenas no son iguales.\n" +" CADENA1 < CADENA2\n" +" Verdadero si STRING1 se ordena antes que STRING2\n" +" lexicográficamente.\n" +" CADENA1 > CADENA2\n" +" Verdadero si STRING1 se ordena después que STRING2\n" +" lexicográficamente.\n" +" \n" +" Otros operadores:\n" +" \n" +" -o OPCIÓN Verdadero si la opción del shell OPCIÓN está activada.\n" +" -v VAR Verdadero si la variable de shell VAR está activada.\n" +" -R VAR Verdadero si la variable VAR está activada y es una\n" +" referencia de nombre\n" +" ! EXPR Verdadero si expr es falso.\n" +" EXPR1 -a EXPR2 Verdadero si expr1 Y expr2 son ambas verdaderas.\n" +" EXPR1 -o EXPR2 Verdadero si cualquiera de expr1 O expr2 es verdadera.\n" +" \n" +" arg1 OP arg2 Pruebas aritméticas. OP es uno de -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Los operadores binarios aritméticos devuelven verdadero si ARG1 es\n" +" igual, no igual, menor, menor o igual, mayor, mayor o igual que ARG2.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto si EXPR evalúa a verdadero; falla si EXPR evalúa a\n" +" falso o se proporciona un argumento inválido." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Evalúa una expresión condicional.\n" +" \n" +" Este es un sinónimo para la orden interna \"test\", pero el último\n" +" argumento debe ser un `]' literal, que concuerde con el `[' inicial." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Muestra los tiempos de proceso.\n" +" \n" +" Muestra los tiempos de usuario y sistema acumulados por el shell y " +"todos\n" +" sus procesos hijos.\n" +" \n" +" Estado de Salida:\n" +" Siempre correcto." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Atrapa señales y otros eventos.\n" +" \n" +" Define y activa manejadores para ejecutar cuando el shell recibe " +"señales\n" +" u otras condiciones.\n" +" \n" +" ARG es una orden para leer y ejecutar cuando el shell recibe la(s)\n" +" señal(es) ID_SEÑAL. Si ARG no está presente (y sólo se proporciona\n" +" una sola ID_SEÑAL) o se proporciona `-', cada señal especificada se\n" +" reestablece a su valor original. Si ARG es la cadena nula, el shell\n" +" y las órdenes que invoque ignoran cada ID_SEÑAL.\n" +" \n" +" Si una ID_SEÑAL es EXIT (0) se ejecuta la orden ARG al salir del shell.\n" +" Si una ID_SEÑAL es DEBUG, se ejecuta ARG después de cada orden simple.\n" +" Si una ID_SEÑAL es RETURN, se ejecuta ARG cada vez que una función de\n" +" shell o un script ejecutado por las órdenes internas . o source termina\n" +" su ejecución. Una ID_SEÑAL de ERR conlleva que se ejecute ARG cada vez\n" +" que un fallo de una orden provocaría que el shell terminase si la\n" +" opción -e está activada.\n" +" \n" +" Si no se proporcionan argumentos, trap muestra la lista de órdenes\n" +" asociadas con cada señal.\n" +" \n" +" Opciones:\n" +" -l\tmuestra una lista de nombres de señal con su número " +"correspondiente\n" +" -p\tmuestra las órdenes trap asociadas con cada ID_SEÑAL\n" +" \n" +" Cada ID_SEÑAL es un nombre de señal en o un número de señal.\n" +" Los nombres de señal no son sensibles a mayúsculas y minúsculas y el\n" +" prefijo SIG es opcional. Se puede enviar una señal al shell con\n" +" \"kill -signal $$\". \n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que una ID_SEÑAL sea inválida o se " +"proporcione\n" +" una opción inválida." + +# No he visto que este fichero incluya la posibilidad de traducir las +# palabras que muestra `type -t'. Por esta razón, se dejan en inglés. cfuga +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Muestra información sobre el tipo de orden.\n" +" \n" +" Por cada NOMBRE, indica cómo se interpretaría si se utilizara como un\n" +" nombre de orden.\n" +" \n" +" Opciones:\n" +" -a\tmuestra todas las ubicaciones que contienen un ejecutable llamado\n" +" \t\tNOMBRE; incluye aliases, órdenes internas y funciones, si y solo si\n" +" \t\tno se utilizó también la opción `-p'\n" +" -f\tsuprime la búsqueda de funciones de shell\n" +" -P\tfuerza una búsqueda en PATH por cada nombre, aun si hay un alias,\n" +" \t\torden interna o función, y devuelve el nombre del fichero en disco\n" +" \t\tque se ejecutaría\n" +" -p\tdevuelve el nombre del fichero en disco que se ejecutaría,\n" +" \t\to nada si `type -t NOMBRE' no devuelve `fichero'\n" +" -t\tsaca una sola palabra, que es una de entre `alias', `keyword',\n" +" \t\t`function', `builtin', `file' o `', si el NOMBRE es un alias,\n" +" \t\tpalabra reservada del shell, función del shell, orden interna del\n" +" \t\tshell, fichero de disco, o no se encuentra, respectivamente.\n" +" \n" +" Argumentos:\n" +" NOMBRE\tNombre de orden a interpretar.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto si se encuentran todos los NOMBREs; falla si alguno\n" +" no se encuentra." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modifica los límites de recursos del shell.\n" +" \n" +" Provee control sobre los recursos disponibles para el shell y los\n" +" procesos que crea, en sistemas que permiten tal control.\n" +" \n" +" Opciones:\n" +" \n" +" -S\tusa el límite de recurso `soft'\n" +" -H\tusa el límite de recurso `hard'\n" +" -a\tmuestra todos los límites actuales\n" +" -b\tel tamaño del almacenamiento intermedio del `socket'\n" +" -c\tel tamaño máximo de los ficheros `core' creados\n" +" -d\tel tamaño máximo del segmento de datos de un proceso\n" +" -e\tla prioridad máxima de calendarización (`nice')\n" +" -f\tel tamaño máximo de los ficheros escritos por el shell y sus " +"hijos\n" +" -i\tel número máximo de señales pendientes\n" +" -k\tel número máximo de kcolas ubicadas para este proceso\n" +" -l\tel tamaño máximo que un proceso puede bloquear en memoria\n" +" -m\tel tamaño máximo para las variables residentes\n" +" -n\tel número máximo de descriptores de fichero abiertos\n" +" -p\tel tamaño del almacenamiento intermedio para tuberías\n" +" -q\tel tamaño máximo de bytes en las colas de mensajes POSIX\n" +" -r\tla prioridad máxima de calendarización en tiempo real\n" +" -s\tel tamaño máximo de pila\n" +" -t\tla cantidad máxima de tiempo de cpu en segundos\n" +" -u\tel número máximo de procesos de usuario\n" +" -v\tel tamaño de la memoria virtual\n" +" -x\tel número máximo de bloqueos de ficheros\n" +" -P\tel número máximo de pseudoterminales\n" +" -T\tel número máximo de hilos\n" +" \n" +" No todas las opciones están disponibles en todas las plataformas.\n" +" \n" +" Si se establece LÃMITE, éste es el nuevo valor del recurso " +"especificado;\n" +" los valores especiales de LÃMITE `soft', `hard' y `unlimited'\n" +" corresponden al límite suave actual, el límite duro actual, y\n" +" sin límite, respectivamente. De otra forma, se muestra el valor actual\n" +" de los recursos especificados. Si no se proporciona una opción, se\n" +" asume -f.\n" +" \n" +" Los valores son en incrementos de 1024 bytes, excepto para -t, el cual\n" +" es en segundos, -p, el cual es en incrementos de 512 bytes, y -u, el\n" +" cual es un número de procesos sin escala.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione una opción inválida o " +"suceda\n" +" un error." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Muestra o establece la máscara de modo de ficheros.\n" +" \n" +" Establece la máscara de creación de ficheros del usuario a MODO. Si se\n" +" omite el MODO, muestra el valor actual de la máscara.\n" +" \n" +" Si el MODO empieza con un dígito, se interpreta como un número octal;\n" +" de otra forma es una cadena de modo simbólico como la que acepta chmod " +"(1).\n" +" \n" +" Opciones:\n" +" -p\tsi se omite el MODO, muestra en una forma reusable como entrada\n" +" -S\tsalida simbólica; de otra forma muestra el modo como número octal\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que el MODO sea inválido o se proporcione\n" +" una opción inválida." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Espera la terminación del trabajo y devuelve el estado de salida.\n" +" \n" +" Espera al proceso identificado por ID, el cual puede ser un ID de\n" +" proceso o una especificación de trabajo e informa de su estado de " +"salida.\n" +" Si no se proporciona un ID, espera a todos los procesos hijos activos,\n" +" y el estado de devolución es cero. Si ID es una especificación de\n" +" trabajo, espera a todos los procesos en la cola de trabajos.\n" +" \n" +" Si se proporciona la opción -n, espera a que termine el siguiente " +"trabajo\n" +" y devuelve su estado de salida.\n" +" \n" +" Si se proporciona la opción -f y el control de trabajos está activado,\n" +" espera a que termine el ID especificado, en vez de esperar a que cambie " +"de\n" +" estado.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de ID; falla si ID es inválido o se proporciona una\n" +" opción inválida." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Espera la terminación del proceso y devuelve el estado de salida.\n" +" \n" +" Espera a cada proceso especificado por un PID y reporta su\n" +" estado de salida. Si no se proporciona un PID, espera a todos los\n" +" procesos hijos activos, y el código de devolución es cero.\n" +" El PID debe ser un ID de proceso.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado del último PID; falla si PID es inválido o se " +"proporciona\n" +" una opción inválida." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ejecuta órdenes por cada miembro en una lista.\n" +" \n" +" El bucle `for' ejecuta una secuencia de órdenes para cada miembro en\n" +" una lista de elementos. Si `in PALABRAS ...;' no está presente,\n" +" entonces se asume `in \"$@\"'. Para cada elemento en PALABRAS,\n" +" se define NOMBRE como ese elemento, y se ejecutan las ÓRDENES.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de la última orden ejecutada." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Aritmétical de bucle for.\n" +" \n" +" Equivalente a\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tÓRDENES\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, y EXP3 son expresiones aritméticas. Si se omite\n" +" cualquiera de ellas, se comporta como si se evaluara a 1.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de la última orden ejecutada." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Selecciona palabras de una lista y ejecuta órdenes.\n" +" \n" +" Se expanden las PALABRAS, generando una lista de palabras. El\n" +" conjunto de palabras expandidas se muestra en la salida de error\n" +" estándar, cada una precedida por un número. Si `in PALABRAS' no\n" +" está presente, se asume `in \"$@\"'. Entonces se muestra el\n" +" prompt PS3 y se lee una línea de la entrada estándar. Si la\n" +" línea consiste en el número correspondiente a una de las palabras\n" +" mostradas, entonces se define NOMBRE como esa palabra. Si la\n" +" línea está vacía, PALABRAS y el prompt se muestran de nuevo. Si\n" +" se lee EOF, se completa la orden. Cualquier otro valor leído\n" +" causa que NOMBRE se defina como nulo. La línea leída se guarda\n" +" en la variable REPLY. Se ejecutan las ÓRDENES después de cada\n" +" selección hasta que se ejecuta una orden break.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de la última orden ejecutada." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Reporta el tiempo consumido por la ejecución de la tubería.\n" +" \n" +" Ejecuta la TUBERÃA y muestra un resumen del tiempo real, el tiempo de\n" +" CPU del usuario, y el tiempo de CPU del sistema utilizado por\n" +" la ejecución de la TUBERÃA cuando termina.\n" +" \n" +" Opciones:\n" +" -p\tmuestra el resumen de tiempos en el formato Posix transportable\n" +" \n" +" Estado de Salida:\n" +" El estado de devolución es el estado de devolución de la TUBERÃA." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ejecuta órdenes en base a la coincidencia de patrones.\n" +" \n" +" Ejecuta ÓRDENES selectivamente basado en coincidencias de la PALABRA\n" +" con el PATRÓN. Se utiliza `|' para separar patrones múltiples.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de la última orden ejecutada." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ejecuta comandos en base a condicionales.\n" +" \n" +" Se ejecuta la lista `if ÓRDENES'. Si su estado de salida es cero,\n" +" entonces se ejecuta la lista `then ÓRDENES`. De otra forma, cada lista\n" +" `elif ÓRDENES' se ejecuta en su lugar, y si su estado de salida es " +"cero,\n" +" se ejecuta la lista `then ÓRDENES' correspondiente y se completa la\n" +" orden if. De otra forma, se ejecuta la lista `else ÓRDENES', si está\n" +" presente. El estado de salida del bloque entero es el estado saliente\n" +" de la última orden ejecutada, o cero si ninguna condición resultó\n" +" verdadera.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de la última orden ejecutada." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ejecuta órdenes mientras una prueba sea correcta.\n" +" \n" +" Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n" +" `while' tenga un estado de salida de cero.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de la última orden ejecutada." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ejecuta órdenes mientras una prueba sea correcta.\n" +" \n" +" Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n" +" `until' tengan un estado de salida que no sea cero.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de la última orden ejecutada." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Crea un coproceso llamado NOMBRE.\n" +" \n" +" Ejecuta la ORDEN asíncronamente, con la salida y la entrada estándar\n" +" de la orden conectadas a través de una tubería a los descriptores\n" +" de fichero asignados a los índices 0 y 1 de una variable de matriz\n" +" NOMBRE en el shell en ejecución. El nombre por defecto es\n" +" \"COPROC\".\n" +" \n" +" Estado de Salida:\n" +" La orden «coproc» devuelve un estado de salida de 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Define una función de shell.\n" +" \n" +" Crea una función de shell llamada NOMBRE. Cuando se invoca como una\n" +" orden simple, NOMBRE ejecuta ORDENes en el contexto del shell\n" +" que lo llamó. Cuando se invoca NOMBRE, los argumentos se pasan a la\n" +" función como $1...$n, y el nombre de la función está en $FUNCNAME.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que NOMBRE sea de sólo lectura." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Agrupa órdenes como una unidad.\n" +" \n" +" Ejecuta un conjunto de órdenes en un grupo. Esta es una\n" +" forma de redirigir un conjunto completo de órdenes.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado de la última orden ejecutada." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Reinicia el trabajo en primer plano.\n" +" \n" +" Equivalente al argumento IDTRABAJO de la orden `fg'. Reinicia un\n" +" trabajo detenido o en segundo plano. IDTRABAJO puede especificar\n" +" un nombre de trabajo o un número de trabajo. Un `&' a continuación\n" +" de IDTRABAJO coloca a el trabajo en segundo plano, como si la\n" +" especificación del trabajo se hubiera proporcionado como\n" +" un argumento de `bg'.\n" +" \n" +" Estado de Salida:\n" +" Devuelve el estado del trabajo reiniciado." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Evalúa una expresión aritmética.\n" +" \n" +" Se evalua la EXPRESIÓN de acuerdo a las reglas de evaluación\n" +" aritmética. Equivalente a \"let EXPRESIÓN\".\n" +" \n" +" Estado de Salida:\n" +" Devuelve 1 si la EXPRESIÓN evalúa a 0; devuelve 0 de otra manera." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Ejecuta una orden condicional.\n" +" \n" +" Devuelve un estado de 0 ó 1 dependiendo de la evaluación de la " +"expresión\n" +" condicional EXPRESIÓN. Las expresiones se componen de los mismos\n" +" elementos primarios usados por la orden interna `test', y se pueden\n" +" combinar usando los siguientes operadores:\n" +" \n" +" ( EXPRESIÓN )\tDevuelve el valor de la EXPRESIÓN\n" +" ! EXPRESIÓN\t\tVerdadero si la EXPRESIÓN es falsa; de otra forma es " +"falso\n" +" EXPR1 && EXPR2\tVerdadero si EXPR1 y EXPR2 son verdaderos; de\n" +" \t\totra forma es falso\n" +" \tEXPR1 || EXPR2\tVerdadero si EXPR1 o EXPR2 es verdadero; de\n" +" \t\totra forma es falso\n" +" \n" +" Cuando se usan los operadores `==' y `!=', se usa la cadena a la\n" +" derecha del operador como un patrón y se realiza una coincidencia de\n" +" patrones. Cuando se usa el operador `=~', la cadena a la derecha del\n" +" operador coincide como una expresión regular.\n" +" \n" +" Los operadores && y || no evalúan EXPR2 si EXPR1 es suficiente para\n" +" determinar el valor de una expresión. \n" +" Estado de Salida:\n" +" 0 o 1 dependiendo del valor de la EXPRESIÓN." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Nombres de variables de shell comunes y su uso.\n" +" \n" +" BASH_VERSION\tInformación de versión para este Bash.\n" +" CDPATH\tUna lista de directorios separada por dos puntos\n" +" \t\tpara buscar directorios dados como argumentos para `cd'.\n" +" GLOBIGNORE\tUna lista de patrones separada por dos puntos\n" +" \t\tque describe nombres de fichero a ignorar por la expansión\n" +" \t\tde rutas de nombre.\n" +" HISTFILE\tEl nombre del fichero donde se almacena su historia\n" +" \t\tde órdenes.\n" +" HISTFILESIZE\t El número máximo de líneas que puede contener\n" +" \t\teste fichero.\n" +" HISTSIZE\t El número máximo de líneas de historia que un shell\n" +" \t\ten ejecución puede acceder.\n" +" HOME\tLa ruta completa a su directorio de entrada.\n" +" HOSTNAME\tEl nombre del anfitrión actual.\n" +" HOSTTYPE\tEl tipo de CPU bajo el cual se ejecuta esta versión\n" +" \t\tde Bash.\n" +" IGNOREEOF\tControla la acción del shell al recibir un carácter\n" +" \t\tFDL como la única entrada. Si está definida, entonces su\n" +" \t\tvalor es el número de caracteres FDL que se deben leer de\n" +" \t\tforma consecutiva en una línea vacía antes de que el shell\n" +" \t\ttermine (por defecto 10). Cuando no está definida, EOF\n" +" \t\tsignifica el fin de la entrada.\n" +" MACHTYPE\tUna cadena que describe el sistema actual donde se\n" +" \t\tejecuta Bash.\n" +" MAILCHECK\tLa frecuencia, en segundos, que Bash busca correo nuevo.\n" +" MAILPATH\tUna lista de nombres de ficheros separada por dos puntos\n" +" \t\ten la cual Bash busca correo nuevo.\n" +" OSTYPE\tla versión de Unix en la que se ejecuta esta versión\n" +" \t\tde Bash.\n" +" PATH\tUna lista de directorios separada por dos puntos en la que\n" +" \t\tse buscan órdenes.\n" +" PROMPT_COMMAND\tUna orden a ejecutar antes de mostrar cada prompt\n" +" \t\tprimario.\n" +" PS1\t\tLa cadena primaria de prompt.\n" +" PS2\t\tLa cadena secundaria de prompt.\n" +" PWD\t\tLa ruta completa del directorio actual.\n" +" SHELLOPTS\tUna lista separada por dos puntos de las opciones\n" +" \t\tde shell activadas.\n" +" TERM\tEl nombre del tipo actual de terminal.\n" +" TIMEFORMAT\tEl formato de salida para las estadísticas de tiempo\n" +" \t\tmostradas por la palabra reservada `time'.\n" +" auto_resume\tSi no es nulo significa que una palabra de orden\n" +" \t\tque aparece en una línea por sí sola se busca primero en la lista\n" +" \t\tactual de trabajos detenidos. Si se encuentra ahí, esetrabajo\n" +" \t\tse coloca en primer plano. Un valor `exact' significa que la\n" +" \t\tpalabra de orden debe coincidir exactamente con una\n" +" \t\torden de la lista de trabajos detenidos. Un valor\n" +" \t\t`substring' significa que la palabra de orden debe coincidir\n" +" \t\tcon una subcadena del trabajo. Cualquier otro valor significa\n" +" \t\tque la orden debe ser un prefijo de un trabajo detenido.\n" +" histchars\tLos caracteres que controlan la expansión de historia\n" +" \t\ty la sustitución rápida. El primer carácter es el carácter de\n" +" \t\tsustitución de historia, generalmente `!'. El segundo es el\n" +" \t\tcarácter de `sustitución rápida', generalmente `^'. El tercero\n" +" \n" +" \t\tes el carácter `comentario de historia', generalmente `#'.\n" +" HISTIGNORE\tUna lista separada por dos puntos de patrones\n" +" \t\tutilizados para decidir qué órdenes se deben guardar en\n" +" \t\tel listado histórico.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Agrega directorios a la pila.\n" +" \n" +" Agrega un directorio por la parte superior de la pila de directorios\n" +" o rota la pila, haciendo que el nuevo elemento superior de la pila sea " +"el\n" +" directorio de trabajo actual. Sin argumentos, intercambia\n" +" los dos directorios de la parte superior.\n" +" \n" +" Opciones:\n" +" -n\tsuprime el cambio normal de directorio cuando se agregan\n" +" \t\tdirectorios a la pila, así sólo se manipula la pila.\n" +" \n" +" Argumentos:\n" +" +N\tRota la pila para que el N-ésimo directorio (contando\n" +" \t\tdesde la izquierda de la lista mostrada por `dirs', comenzando\n" +" \t\tdesde cero) esté en la parte superior.\n" +" \n" +" -N\tRota la pila para que el N-ésimo directorio (contando desde\n" +" \t\tla derecha de la lista mostrada por `dirs', comenzando\n" +" \t\tdesde cero) esté en la parte superior.\n" +" \n" +" dir\tAgrega DIR la pila de directorios por la parte superior, " +"haciendo\n" +" \t\tde él el nuevo directorio de trabajo actual.\n" +" \n" +" La orden interna `dirs' muestra la pila de directorios.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione un argumento\n" +" inválido o falle el cambio de directorio." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Borra directorios de la pila.\n" +" \n" +" Borra entradas de la pila de directorios. Sin argumentos,\n" +" borra el directorio del tope de la pila, y cambia al nuevo\n" +" directorio tope.\n" +" \n" +" Opciones:\n" +" -n\tSuprime el cambio normal de directorio cuando se borran\n" +" \t\tdirectorios de la pila; así sólo se manipula la pila.\n" +" \n" +" Argumentos:\n" +" \n" +" +N\tBorra la N-ésima entrada contando desde la izquierda de\n" +" \t\tla lista mostrada por `dirs', comenzando por cero. Por\n" +" \t\tejemplo: `popd +0' borra el primer directorio, `popd +1'\n" +" \t\tel segundo.\n" +" \n" +" -N\tBorra la N-ésima entrada contando desde la derecha de\n" +" \t\tla lista mostrada por `dirs', comenzando por cero. Por\n" +" \t\tejemplo: `popd -0' borra el último directorio, `popd -1'\n" +" \t\tel penúltimo.\n" +" \n" +" La orden interna `dirs' muestra la pila de directorios.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione un\n" +" argumento inválido o falle el cambio de directorio." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Muestra la pila de directorios.\n" +" \n" +" Muestra la lista de directorios actualmente grabados. Los directorios\n" +" se guardan en la lista con la orden `pushd'; pueden ir saliendo de\n" +" la lista con la orden `popd'.\n" +" \n" +" Opciones:\n" +" -c\tlimpia la pila de directorios, eliminando todos sus elementos.\n" +" -l\tno muestra versiones con prefijo de tilde de los directorios\n" +" \t\trelativos a su directorio inicial.\n" +" -p\tmuestra la pila de directorios con una entrada por línea\n" +" -v\tmuestra la pila de directorios con una entrada por línea con\n" +" \t\tsu posición en la pila como prefijo\n" +" \n" +" Argumentos:\n" +" +N\tmuestra la N-ésima entrada contando desde\n" +" \t\tla izquierda de la lista mostrada por dirs cuando se invoca sin\n" +" \t\topciones, empezando de cero.\n" +" \n" +" -N\tmuestra la N-ésima entrada contando desde la izquierda de la\n" +" \t\tlista mostrada por dirs cuando se invoca sin opciones, empezando\n" +" \t\tdesde cero.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto, a menos que se proporcione una opción inválida o\n" +" suceda un error." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Activa y desactiva opciones de shell.\n" +" \n" +" Cambia la configuración de cada opción de shell NOMBRE_OPCIÓN. Sin\n" +" ninguna opción como argumento, muestra cada NOMBRE_OPCIÓN\n" +" proporcionado o todas las opciones de shell si no se especifica\n" +" ningún NOMBRE_OPCIÓN, con una indicación de si está activa o no\n" +" cada una.\n" +" \n" +" Opciones:\n" +" -o\trestringe NOMBRE_OPCIÓN a aquellos definidos con `set -o'\n" +" -p\tmuestra cada opción de shell con un indicador de su estado\n" +" -q\tsuprime la salida\n" +" -s\tactiva (establece) cada NOMBRE_OPCIÓN\n" +" -u\tdesactiva (borra) cada NOMBRE_OPCIÓN\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto si se activa NOMBRE_OPCIÓN; falla si se proporciona\n" +" una opción inválida o NOMBRE_OPCIÓN está desactivado." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Da formato y muestra ARGUMENTOS bajo el control del FORMATO.\n" +" \n" +" Opciones:\n" +" -v var\tasigna la salida a la variable de shell VAR en lugar\n" +" \t\tde mostrarla en la salida estándar\n" +" \n" +" FORMATO es una cadena de caracteres la cual contiene tres tipos de\n" +" objetos: caracteres simples, los cuales solamente se copian a la salida\n" +" salida estándar; secuencias de escape de caracteres, las cuales\n" +" se convierten y se copian a la salida estándar; y especificaciones de\n" +" formato, cada una de las cuales causa la muestra del siguiente " +"argumento\n" +" consecutivo.\n" +" \n" +" Además de las especificaciones de formato estándar descritas en\n" +" printf(1) y printf(3), printf interpreta:\n" +" \n" +" %b\texpande las secuencias de escape de barra invertida en\n" +" el argumento correspondiente\n" +" %q\tcita el argumento de tal forma que se pueda reutilizar como\n" +" entrada del shell.\n" +" %(fmt)T muestra la cadena fecha hora resultante de usar FMT como\n" +" una cadena de formato para strftime(3)\n" +" \n" +" El formato se reutiliza según sea necesario para consumir todos los\n" +" argumentos. Si hay menos argumentos de los que el formato requiere,\n" +" las especificaciones de formato adicionales se comportan como si un " +"valor\n" +" cero o una cadena nula, lo que sea apropiado, se hubiera proporcionado.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" +" suceda un error de escritura o de asignación." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Especifica cuántos argumentos deben ser completados por Readline.\n" +" \n" +" Por cada NOMBRE, especifica cuántos argumentos se deben completar. Si\n" +" no se proporcionan opciones, se muestran las especificaciones de\n" +" completado existentes en una forma que permite que se reusen como " +"entrada.\n" +" \n" +" Opciones:\n" +" -p\tmuestra las especificaciones de completado existentes en formato\n" +" \t\treusable\n" +" -r\tborra una especificación de completado para cada NOMBRE o,\n" +" \t\tsi no se proporcionan NOMBREs, todas las especificaciones\n" +" \t\tde completado\n" +" -D\taplica los completados y acciones por defecto para las órdenes\n" +" \t\tsin ninguna especificación de completado definida\n" +" -E\taplica los completados y acciones para órdenes \"vacías\" --\n" +" \t\tcuando se intenta completar en una línea en blanco\n" +" -I\taplica los completados a acciones a la palabra incial " +"(habitualmente\n" +" \t\tla orden)\n" +" \n" +" Cuando se intenta el completado, las acciones se aplican en el orden\n" +" en que se listan las opciones de letra mayúscula antes indicadas. Si " +"se\n" +" proporcionan varias opciones, la opción -D tiene precedencia sobre -E " +"y,\n" +" ambas, sobre -I.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" +" suceda un error." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Muestra los posibles complementos dependiendo de las opciones.\n" +" \n" +" Sirve para usarse desde una función de shell que genere complementos\n" +" posibles. Si se proporciona el argumento opcional PALABRA, se generan\n" +" las coincidencias contra PALABRA.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" +" suceda un error." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Modifica o muestra las opciones de completado.\n" +" \n" +" Modifica las opciones de completado para cada NOMBRE, o, si no se\n" +" proporcionan NOMBREs, el completado actualmente en ejecución. Si no\n" +" se proporcionan OPCIONes, muestra las opciones de completado para\n" +" cada NOMBRE o la especificación de completado actual.\n" +" \n" +" Opciones:\n" +" \t-o opción\tEstablece la opción de completado OPCIÓN para cada NOMBRE\n" +" \t-D\t\tCambia las opciones para el completado de orden \"por defecto\"\n" +" \t-E\t\tCambia las opciones para el completado de orden \"vacía\"\n" +" \t-I\t\tCambia las opciones para el completado en la palabra inicial\n" +" \n" +" Si se usa `+o' en lugar de `-o', desactiva la opción especificada.\n" +" \n" +" Argumentos:\n" +" \n" +" Cada NOMBRE se refiere a una orden para la cual se definió previamente\n" +" una especificación de completado usando la orden interna `complete'.\n" +" Si no se proporcionan NOMBREs, se debe llamar a ‘compopt’ desde una\n" +" función que genere completados actualmente y se modifican las opciones\n" +" para ese generador de completados actualmente en ejecución.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" +" NOMBRE no tenga una especificación de completado definida." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Lee líneas de un fichero y las guarda en una variable de matriz indexada.\n" +" \n" +" Lee líneas de la entrada estándar y las guarda en la variable de matriz\n" +" indexada MATRIZ, o desde el descriptor de fichero DF si se proporciona\n" +" la opción -u. La variable MAPFILE es la MATRIZ por defecto.\n" +" \n" +" Opciones:\n" +" -d delim\tUtiliza DELIM para finalizar las líneas en lugar de nueva " +"línea\n" +" -n cuenta\tCopia hasta CUENTA líneas. Si CUENTA es 0, se copian " +"todas\n" +" -O origen\tComienza a asignar a MATRIZ en el índice ORIGEN. El\n" +" \t\t\tíndice por defecto es 0.\n" +" -s cuenta\tDescarta las primeras CUENTA líneas leídas.\n" +" -t\tBorra el DELIM final de cada línea leída (nueva línea por " +"defecto).\n" +" -u df\tLee líneas del descriptor de fichero DF en lugar de la\n" +" \t\t\tentrada estándar.\n" +" -C llamada\tEvalúa LLAMADA cada vez que se leen QUANTUM líneas.\n" +" -c quantum\tEspecifica el número de líneas a leer entre cada\n" +" \t\t\tllamada a LLAMADA.\n" +" \n" +" Argumentos:\n" +" MATRIZ\tNombre de variable de matriz a usar para guardar datos.\n" +" \n" +" Si se proporciona -C sin -c, el quantum por defecto es 5000. Cuando\n" +" se evalúa LLAMADA, se proporciona el índice del siguiente elemento\n" +" de la matriz a asignar como un argumento adicional.\n" +" \n" +" Si no se proporciona un origen explícito, mapfile borrará la MATRIZ\n" +" antes de usarla para asignación.\n" +" \n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" +" la MATRIZ sea de sólo lectura o no sea una matriz indexada." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Lee líneas de un fichero en una variable de matriz.\n" +" \n" +" Sinónimo de `mapfile'." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Devuelve el contexto de la llamada a subrutina actual.\n" +#~ " \n" +#~ " Sin EXPR, devuelve " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: el proceso %5ld (%s) en the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Señal Desconocida #" diff --git a/bash-5.1/po/et.gmo b/bash-5.1/po/et.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c0181254887b6a0aa67d8e4ec6a7766316e8dd71 GIT binary patch literal 12197 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 literal 0 HcmV?d00001 diff --git a/bash-5.1/po/et.po b/bash-5.1/po/et.po new file mode 100644 index 0000000..58f0e27 --- /dev/null +++ b/bash-5.1/po/et.po @@ -0,0 +1,4277 @@ +# Estonian translations for GNU bash. +# Copyright (C) 2001 Free Software Foundation, Inc. +# Toomas Soome , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 3.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2006-11-11 16:38+0200\n" +"Last-Translator: Toomas Soome \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8-bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "vigane massiivi indeks" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:700 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s: vigane tegevuse nimi" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: mitte-numbrilisele indeksile ei saa omistada" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: ei saa luua: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: esimine mitte-tühemik sümbol pole `\"'" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "sulgev `%c' puudub %s sees" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: puudub eraldav koolon" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "`%s': ei saa lahti siduda" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" + +#: builtins/alias.def:131 variables.c:1844 +#, fuzzy, c-format +msgid "`%s': invalid alias name" +msgstr "%s: vigane tegevuse nimi" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: ei saa lugeda: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': tundmatu funktsiooni nimi" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s ei ole seotud ühegi klahviga.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s saab kasutada läbi " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': ei saa lahti siduda" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "omab mõtet ainult `for', `while' või `until' tsüklis" + +#: builtins/caller.def:136 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME pole seatud" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "liiga palju argumente" + +#: builtins/cd.def:342 +#, fuzzy +msgid "null directory" +msgstr "teist kataloogi pole" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD pole seatud" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "" + +#: builtins/common.c:134 error.c:264 +#, fuzzy, c-format +msgid "warning: " +msgstr "%s: hoiatus: " + +#: builtins/common.c:148 +#, fuzzy, c-format +msgid "%s: usage: " +msgstr "%s: hoiatus: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: võti nõuab argumenti" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: nõutakse numbrilist argumenti" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: ei leitud" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: vigane võti" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: vigane võtme nimi" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': ei ole lubatud identifikaator" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid octal number" +msgstr "vigane signaali number" + +#: builtins/common.c:242 +#, fuzzy +msgid "invalid hex number" +msgstr "vigane number" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "vigane number" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: vigane signaali spetsifikatsioon" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s': ei ole pid ega korrektne töö spetsifikatsioon" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: mittemuudetav muutuja" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s on piiridest väljas" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s on piiridest väljas" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: sellist tööd pole" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: töökontroll puudub" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "töökontroll puudub" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: piiratud" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "piiratud" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: ei ole sisekäsk" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "kirjutamise viga: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: segane töö" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: ei saa eemaldada: %s on ainult lugemiseks" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: ei saa eemaldada" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: vigane tegevuse nimi" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "hoiatus: võti -F ei pruugi töötada nagu te ootate" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "hoiatus: võti -C ei pruugi töötada nagu te ootate" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "saab kasutada ainult funktsioonis" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "võtit `-f' ei saa funktsiooni loomiseks kasutada" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funktsioon ei ole muudetav" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: masiivi muutujaid ei saa nii kustutada" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dünaamilist laadimist et saa kasutada" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "jagatud objekti %s ei saa avada: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "%s puudub jagatud objektis %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: pole dünaamiliselt laetud" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: pole dünaamiliselt laetud" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: ei saa kustutada: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: on kataloog" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: ei ole tavaline fail" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: fail on liiga suur" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: kahendfaili ei õnnestu käivitada" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: ei saa käivitada: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "pole login shell: kasutage `exit'" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Teil on peatatud töid.\n" + +#: builtins/exit.def:123 +#, fuzzy, c-format +msgid "There are running jobs.\n" +msgstr "Teil on peatatud töid.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "käsku ei ole" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: ajutist faili ei saa avada: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: lubamatu võti -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: võti nõuab argumenti -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:267 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "viimane käsklus: %s\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: ei saa avada: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "" + +#: builtins/history.def:340 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: vigane võtme nimi" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s: vigane teenus" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Tundmatu viga" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "oodati avaldist" + +#: builtins/mapfile.def:178 +#, fuzzy, c-format +msgid "%s: not an indexed array" +msgstr "%s: pole massiiv" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s: vigane võti" + +#: builtins/mapfile.def:299 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s: vigane võti" + +#: builtins/mapfile.def:316 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: vigane tegevuse nimi" + +#: builtins/mapfile.def:349 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: pole massiiv" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:474 +#, fuzzy, c-format +msgid "`%c': invalid time format specification" +msgstr "%s: vigane signaali spetsifikatsioon" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:702 +#, fuzzy, c-format +msgid "warning: %s: %s" +msgstr "%s: hoiatus: " + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "teist kataloogi pole" + +#: builtins/pushd.def:360 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: vigane number" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "viga lugemisel: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: pole massiiv" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: ei ole funktsioon" + +#: builtins/setattr.def:194 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: ei saa eemaldada" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "shift arv" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: faili ei ole" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "peatamine ei õnnestu" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "login shelli ei saa peatada" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s on shelli võtmesõna\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s: on funktsioon\n" + +#: builtins/type.def:299 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s on shelli sisekäsk\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s on shelli sisekäsk\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s on %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': halb käsklus" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: ei õnnestu lugeda piirangut: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: ei õnnestu muuta piirangut: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "kaheksandnumber" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr "" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "viimane käsklus: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Katkestan..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:462 +msgid "unknown command error" +msgstr "tundmatu viga käsus" + +#: error.c:463 +msgid "bad command type" +msgstr "" + +#: error.c:464 +msgid "bad connector" +msgstr "" + +#: error.c:465 +msgid "bad jump" +msgstr "" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: sidumata muutuja" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +#, fuzzy +msgid "pipe error" +msgstr "kirjutamise viga: %s" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: piiratud: käskudes ei saa kasutada sümboleid `/'" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: käsku ei ole" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: halb interpretaator" + +#: execute_cmd.c:5891 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: kahendfaili ei õnnestu käivitada" + +#: execute_cmd.c:5977 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s on shelli sisekäsk\n" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "avaldise rekursioon on liiga sügav" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "süntaksi viga avaldises" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "üritati omistada mitte-muutujale" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "süntaksi viga avaldises" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "nulliga jagamine" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "eksponent on väiksem kui 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "puudub `)'" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "süntaksi viga: oodati operandi" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "süntaksi viga: vigane aritmeetiline operaator" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "vigane aritmeetiline baas" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: vigane võti" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "väärtus on baasiks liiga suur" + +#: expr.c:1647 +#, fuzzy, c-format +msgid "%s: expression error\n" +msgstr "%s: oodati täisarvude avaldist" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: vanemkataloogidele ei ole juurdepääsu" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: pid puudub" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1892 +msgid "Running" +msgstr "" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: töö %d on peatatud" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: sellist tööd pole" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: töö on lõpetatud" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: töö %d on juba taustal" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" + +#: jobs.c:4320 +#, fuzzy, c-format +msgid "%s: line %d: " +msgstr "%s: hoiatus: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +#, fuzzy +msgid "unknown" +msgstr "%s: tundmatu masin" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "free: underflow detected; magic8 corrupted" +msgstr "" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1141 +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "vigane baas" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: tundmatu masin" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: vigane teenus" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Teil on kiri kaustas $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Teil on uus kiri kaustas $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Kiri kaustas %s on loetud\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "süntaksi viga: nõutakse aritmeetilist avaldist" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "süntaksi viga: ootamatu `;'" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "süntaksi viga: `((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "süntaksi viga tingimuslikus avaldises" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "ootamatu märk `%s', oodati `)'" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "oodati `)'" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "süntaksi viga kohal `%s'" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "süntaksi viga: ootamatu faililõpp" + +#: parse.y:6365 +msgid "syntax error" +msgstr "süntaksi viga" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Käsuinterpretaatorist väljumiseks kasutage \"%s\".\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "faili deskriptor on piiridest väljas" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: segane ümbersuunamine" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: fail on olemas, ei kirjuta üle" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: piiratud: väljundit ei saa ümber suunata" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "" + +#: redir.c:222 +#, fuzzy, c-format +msgid "%s: cannot assign fd to variable" +msgstr "$%s: sedasi ei saa omistada" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "viga ümbersuunamisel: fd duplikaadi loomine ei õnnestu" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "/tmp puudub, palun looge see!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp peab olema kataloogi nimi" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: vigane võti" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: on kataloog" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Mul ei ole nime!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Kasuta:\t%s [GNU pikk võti] [võti] ...\n" +"\t%s [GNU pikk võti] [võti] skript-fail ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU pikad võtmed:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Käsuinterpretaatori võtmed:\n" + +#: shell.c:2043 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD või -c käsklus või -O lühivõti\t\t(ainult käivitamine)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s või -o võti\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Vigadest teatamiseks kasutage käsku `bashbug'.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: vigane operatsioon" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "" + +#: siglist.c:50 +msgid "Hangup" +msgstr "" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "" + +#: siglist.c:58 +msgid "Quit" +msgstr "" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "" + +#: siglist.c:86 +msgid "Killed" +msgstr "" + +#: siglist.c:90 +#, fuzzy +msgid "Bus error" +msgstr "süntaksi viga" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "" + +#: siglist.c:110 +msgid "Terminated" +msgstr "" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "" + +#: siglist.c:126 +msgid "Continue" +msgstr "" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "" + +#: siglist.c:154 +msgid "File limit" +msgstr "" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "" + +#: siglist.c:166 +msgid "Window changed" +msgstr "" + +#: siglist.c:170 +msgid "Record lock" +msgstr "" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "" + +#: siglist.c:198 +msgid "programming error" +msgstr "" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "" + +#: siglist.c:214 +msgid "Information request" +msgstr "" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: vigane võti" + +#: subst.c:7013 subst.c:7177 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "%s: vigane tegevuse nimi" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameeter on null või pole seatud" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameeter on null või pole seatud" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: halb asendus" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: sedasi ei saa omistada" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" + +#: subst.c:10367 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "sulgev `%c' puudub %s sees" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "ei leitud: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "oodati argumenti" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: oodati täisarvude avaldist" + +#: test.c:265 +msgid "`)' expected" +msgstr "oodati `)'" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "oodati `)', saadi %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: eeldati binaarset operaatorit" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: eeldati unaarset operaatorit" + +#: test.c:881 +msgid "missing `]'" +msgstr "puudub `]'" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "süntaksi viga: ootamatu `;'" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "vigane signaali number" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: halb väärtus muutujas trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: signaali käsitleja on SIG_DFL, saadan %d (%s) iseendale" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: vigane signaal %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "shelli tase (%d) on liiga kõrge, kasutan väärtust 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: praegune skoop pole funktsiooni kontekst" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: praegune skoop pole funktsiooni kontekst" + +#: variables.c:4771 +#, fuzzy, c-format +msgid "%s has null exportstr" +msgstr "%s: parameeter on null või pole seatud" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: pole global_variables kontekst" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: variables.c:6387 +#, fuzzy, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: ei saa avada: %s" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "" + +#: variables.c:6437 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s on piiridest väljas" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "" + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:95 +#, fuzzy, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: ei saa luua: %s" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" + +#: xmalloc.c:167 +#, fuzzy, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: ei saa luua: %s" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:56 +msgid "break [n]" +msgstr "" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "" + +#: builtins.c:78 +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "" + +#: builtins.c:80 +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "" + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "" + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "" + +#: builtins.c:96 +msgid "getopts optstring name [arg ...]" +msgstr "" + +#: builtins.c:98 +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:140 +msgid "return [n]" +msgstr "" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "" + +#: builtins.c:150 +#, fuzzy +msgid "shift [n]" +msgstr "shift arv" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "" + +#: builtins.c:154 +#, fuzzy +msgid ". filename [arguments]" +msgstr "liiga palju argumente" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "" + +#: builtins.c:177 +msgid "wait [-fn] [-p var] [id ...]" +msgstr "" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "" + +#: builtins.c:208 +#, fuzzy +msgid "(( expression ))" +msgstr "oodati avaldist" + +#: builtins.c:210 +#, fuzzy +msgid "[[ expression ]]" +msgstr "oodati avaldist" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:231 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" + +#: builtins.c:235 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" + +#: builtins.c:490 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" + +#: builtins.c:652 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" + +#: builtins.c:1431 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" + +#: builtins.c:1502 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" + +#: builtins.c:1726 +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#, fuzzy +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "Tagastab jooksva alamprotseduuri konteksti." + +#~ msgid " " +#~ msgstr " " + +#~ msgid "freed" +#~ msgstr "vabastatud" diff --git a/bash-5.1/po/fi.gmo b/bash-5.1/po/fi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..31ddbe4522e8b95c95b5120bc5edf01562d8b747 GIT binary patch literal 74465 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 literal 0 HcmV?d00001 diff --git a/bash-5.1/po/fi.po b/bash-5.1/po/fi.po new file mode 100644 index 0000000..6d13f2d --- /dev/null +++ b/bash-5.1/po/fi.po @@ -0,0 +1,5898 @@ +# Finnish translation for bash-4.0 +# Copyright (C) 2009 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash-4.0 package. +# +# Pekka Niemi, 2009. +# Pekka Niemi , 2009. +# $Id: bash-4.0.fi.po 38 2009-05-09 12:21:42Z pen $ +msgid "" +msgstr "" +"Project-Id-Version: bash-4.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2009-05-09 15:13+0300\n" +"Last-Translator: Pekka Niemi \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 0.3\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "virheellinen taulukkoindeksi" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: indeksoitua taulukkoa ei voi muuttaa assosiatiiviseksi" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: virheellinen assosiatiivinen indeksi" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: ei voida sijoittaa epänumeeriseen indeksiin" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" +"%s: %s: assosiatiiviseen taulukkoon sijoitettaessa täytyy käyttää " +"avainindeksiä" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: ei voida luoda: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: komennolle ei löydy näppäinkarttaa" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: ensimmäinen ei-tyhjä merkki ei ole â€\"â€" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "ei loppumerkkiä â€%c†rivissä %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: puuttuva kaksoispiste-erotin" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "â€%sâ€: ei voida irrottaa" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" + +#: builtins/alias.def:131 variables.c:1844 +#, fuzzy, c-format +msgid "`%s': invalid alias name" +msgstr "â€%sâ€: virheellinen näppäinkartan nimi" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "rivieditointi ei ole käytössä" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "â€%sâ€: virheellinen näppäinkartan nimi" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: ei voida lukea: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "â€%sâ€: tuntematon funktio" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s ei ole sidottu mihinkään näppäimeen.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s voidaan käynnistää näppäinkomennolla " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "â€%sâ€: ei voida irrottaa" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "toistolaskuri" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "voidaan käyttää vain â€forâ€-, â€whileâ€- tai â€untilâ€-silmukoissa" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Palauta tämänhetkisen alirutiinikutsun konteksti.\n" +" \n" +" Ilman parametria, palauttaa â€$line $filenameâ€. Parametrilla palauttaa \n" +" â€$line $subroutine $filenameâ€; saatua lisätietoa voidaan käyttää " +"kutsupinon\n" +" kuvaamiseksi.\n" +" \n" +" Parametrin arvo määrää, montako kutsukehystä taaksepäin siirrytään; \n" +" ylin kehys on numero 0.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa 0 ellei komentotulkki ole funktion ulkopuolella tai parametri\n" +" on virheellinen." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME-ympäristömuuttujaa ei ole asetettu" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "liian monta argumenttia" + +#: builtins/cd.def:342 +#, fuzzy +msgid "null directory" +msgstr "ei toista hakemistoa" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD-ympäristömuuttujaa ei ole asetettu" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "rivi %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "varoitus: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: käyttö: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: valitsin vaatii argumentin" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: vaaditaan numeerinen argumentti" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: ei löytynyt" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: virheellinen valitsin" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: virheellinen valitsimen nimi" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "â€%sâ€: virheellinen tunniste" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "virheellinen oktaaliluku" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "virheellinen heksadesimaaliluku" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "virheellinen luku" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: virheellinen signaalimääritys" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "â€%sâ€: ei ole prosessitunnus eikä kelvollinen työtunniste" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: kirjoitussuojattu muuttuja" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s rajojen ulkopuolella" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argumentti" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s rajojen ulkopuolella" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: työtä ei löydy" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: ei työnohjausta" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "ei työnohjausta" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: rajoitettu" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "rajoitettu" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: ei ole komentotulkin sisäänrakennettu komento" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "kirjoitusvirhe: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "pääteasetuksia asetettaessa tapahtui virhe: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "pääteasetuksia luettaessa tapahtui virhe: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: nykyhakemistoa luettaessa tapahtui virhe: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: ei ole yksiselitteinen työtunniste" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: ei voida poistaa: kirjoitussuojattu %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: ei voida poistaa" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: virheellinen toiminnon nimi" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: ei lavennusmääritystä" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "varoitus: -F -valitsin ei ehkä toimi odotetusti" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "varoitus: -C -valitsin ei ehkä toimi odotetusti" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "tällä hetkellä komennon lavennusfunktiota ei suoriteta" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "voidaan käyttää ainoastaan funktiossa" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "â€-fâ€:ää ei voida käyttää funktioiden luomiseen" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: kirjoitussuojattu funktio" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: taulukkomuuttujia ei voi tuhota näin" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: assosiatiivista taulukkoa ei voi muuttaa indeksoiduksi" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dynaaminen lataus ei ole käytettävissä" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "jaettua objektia %s ei voida avata: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "kohdetta %s ei löydy jaetusta objektista %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: ei dynaamisesti ladattu" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: ei dynaamisesti ladattu" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: ei voida poistaa: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: on hakemisto" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: ei tavallinen tiedosto" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: tiedosto on liian iso" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: binääritiedostoa ei voida suorittaa" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: ei voida suorittaa: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "lopetus\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "ei ole sisäänkirjautumiskomentotulkki: käytä komentoa â€exitâ€" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Töitä on pysäytettynä.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Töitä on ajossa.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "ei löytynyt komentoa" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "komentohistoriamääritys" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: väliaikaistiedostoa ei voitu avata: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "nykyinen" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "työ %d käynnistyi ilman työnohjausta" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: virheellinen valitsin – %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: valitsin vaatii argumentin – %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hajautus kytketty pois" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: hajautustaulukko on tyhjä\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "osumia\tkomento\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Sopivat komennot avainsanaan `" +msgstr[1] "Sopivat komennot avainsanoihin `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"Ohjeita kohteelle â€%s†ei löydy. Kokeile â€help helpâ€, â€man -k %s†tai \n" +"â€info %sâ€." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: ei voida avata: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Nämä komennot on määritelty sisäisesti. Kirjoita â€help†nähdäksesi tämän " +"listan.\n" +"Kirjoita â€help name†saadaksesi lisätietoja funktiosta â€nameâ€.\n" +"Komennolla â€info bash†saat lisää yleisiä tietoja komentotulkista.\n" +"Käytä komentoa â€man -k†tai â€info†saadaksesi lisätietoja komennoista, jotka " +"eivät ole tällä listalla.\n" +"\n" +"Asteriski (*) nimen vieressä tarkoittaa, että komennon käyttö on estetty.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "valitsimista -anrw voidaan käyttää vain yhtä" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "sijainti komentohistoriassa" + +#: builtins/history.def:340 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: virheellinen valitsimen nimi" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: historiaviittaus epäonnistui" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib epäonnistui" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "â€-xâ€:n kanssa ei voida käyttää muita valitsimia" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumenttien pitää olla prosessi- tai työtunnisteita" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Tuntematon virhe" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "odotettiin lauseketta" + +#: builtins/mapfile.def:178 +#, fuzzy, c-format +msgid "%s: not an indexed array" +msgstr "%s: ei ole taulukkomuuttuja" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: virheellinen tiedostokahvamääritys" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: virheellinen tiedostokahva: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: virheellinen rivimäärä" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: virheellinen taulukkoindeksi" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: virheellinen paluukutsumäärä" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "tyhjä taulukkomuuttujan nimi" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "vaaditaan tukea taulukkomuuttujille" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "â€%sâ€: puuttuva muotoilumerkki" + +#: builtins/printf.def:474 +#, fuzzy, c-format +msgid "`%c': invalid time format specification" +msgstr "%s: virheellinen aikakatkaisumääritys" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "â€%câ€: virheellinen muotoilumerkki" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "varoitus: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "\\x:stä puuttuu heksadesimaalinumero" + +#: builtins/printf.def:900 +#, fuzzy, c-format +msgid "missing unicode digit for \\%c" +msgstr "\\x:stä puuttuu heksadesimaalinumero" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "ei toista hakemistoa" + +#: builtins/pushd.def:360 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: virheellinen rajoitusargumentti" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "hakemistopino on tyhjä" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "hakemistopinon indeksi" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Näyttää muistissa olevat hakemistot. Hakemistot\n" +" löytävät tiensä listaan â€pushdâ€-komennolla; voit\n" +" palata listan hakemistoihin â€popdâ€-komennolla.\n" +" \n" +" Valitsimet:\n" +" -c\ttyhjennä hakemistopino\n" +" -l\tälä tulosta tilde-alkuisia versioita hakemistoista jotka ovat\n" +" \tsuhteessa kotihakemistoosi\n" +" -p tulosta hakemistopino, hakemisto per rivi\n" +" -v tulosta hakemistopino, hakemisto per rivi, pinon " +"sijaintinumeroineen\n" +" \n" +" Argumentit:\n" +" +N\tNäyttää listan N:nnen alkion (laskien vasemmalta dirs-komennon \n" +" \tantamasta listasta). Valitsimetta kutsuttaessa aloitetaan nollasta.\n" +" \n" +" -N\tNäyttää listan N:nnen alkion (laskien oikealta dirs-komennon\n" +" \tantamasta listasta). Valitsimetta kutsuttaessa aloitetaan nollasta." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Lisää hakemiston hakemistopinon ylimmäiseksi, tai kääntää pinon, \n" +" jolloin nykyhakemisto menee pinon huipulle. Ilman argumentteja \n" +" vaihtaa pinon kahden päällimmäisen hakemiston paikkoja.\n" +" \n" +" Valitsimet:\n" +" -n\tjättää hakemiston vaihtamatta, joten vain pinoa muutetaan\n" +" \n" +" Argumentit:\n" +" +N\tKääntää pinoa niin, että N:s hakemisto (laskien vasemmalta \"dirs" +"\"-\n" +" komennon antamasta listasta) on päällimmäisenä.\n" +" \n" +" -N\tKääntää pinoa niin, että N:s hakemisto (laskien oikealta \"dirs" +"\"-\n" +" komennon antamasta listasta) on päällimmäisenä.\n" +" \n" +" Sisäänrakennettu â€dirsâ€-komento näyttää hakemistopinon." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Poistaa alkioita hakemistopinosta. Ilman argumenttia poistaa ylimmän\n" +" hakemiston, ja siirtää seuraavan ylimmäiseksi.\n" +" \n" +" Valitsimet:\n" +" -n\tEi siirrytä normaalisti pinosta poistettuun hakemistoon,\n" +" \tjoten vain pinoa muutetaan.\n" +" \n" +" Argumentit:\n" +" +N\tPoistaa N:nnen alkion (laskien vasemmalta â€dirsâ€-komennon\n" +" \tantamasta listasta, alkaen nollasta). Esimerkiksi â€popd +0â€\n" +" \tpoistaa ensimmäisen hakemistot, â€popd +1†toisen.\n" +" \n" +" -N\tPoistaa N:nnen alkion (laskien oikealta â€dirsâ€-komennon \n" +" \tantamasta listasta, alkaen nollasta). Esimerkiksi: â€popd -0â€\n" +" \tpoistaa viimeisen hakemiston, â€popd -1†sitä edellisen.\n" +" \n" +" Sisäänrakennettu â€dirsâ€-komento näyttää hakemistopinon sisällön." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: virheellinen aikakatkaisumääritys" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "lukuvirhe: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "â€return†on käytettävissä vain funktiossa tai ladatussa skriptissä" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "funktiota ja muuttujaa ei voi poistaa yhtä aikaa" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: ei ole taulukkomuuttuja" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: ei ole funktio" + +#: builtins/setattr.def:194 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: ei voida poistaa" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "siirtolaskuri" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "" +"komentotulkin valitsimia ei voida laittaa päällä ja ottaa pois päältä " +"samanaikaisesti" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: virheellinen komentotulkin valitsimen nimi" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "vaaditaan tiedostonimi argumentiksi" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: tiedostoa ei löytynyt" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "ei voida keskeyttää" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "sisäänkirjautumiskomentotulkkia ei voi keskeyttää" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s on aliasioitu â€%sâ€\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s on komentotulkin avainsana\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s on funktio\n" + +#: builtins/type.def:299 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s on komentotulkin sisäänrakennettu komento\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s on komentotulkin sisäänrakennettu komento\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s on %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s on hajautettu (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: virheellinen rajoitusargumentti" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "â€%câ€: virheellinen komento" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: rajoitusta ei saada: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "rajoitus" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: rajoitusta ei voida muokata: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "oktaaliluku" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "â€%câ€: virheellinen symbolisen tilan operaattori" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "â€%câ€: virheellinen symbolisen tilan merkki" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " rivi " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "viimeinen komento: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Keskeytetään..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:462 +msgid "unknown command error" +msgstr "tuntematon komentovirhe" + +#: error.c:463 +msgid "bad command type" +msgstr "virheellinen komentotyyppi" + +#: error.c:464 +msgid "bad connector" +msgstr "virheellinen liittäjä" + +#: error.c:465 +msgid "bad jump" +msgstr "virheellinen hyppy" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: sitomaton muuttuja" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aaikakatkaisu: automaattinen uloskirjautuminen\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "syötettä ei voida lukea tiedostosta /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "AJAN MUOTOMÄÄRITYS: â€%câ€: virheellinen muotoilumerkki" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "putkitusvirhe" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: rajoitettu: komentojen nimissä ei voi käyttää â€/â€-merkkiä" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: komentoa ei löydy" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: virheellinen tulkki" + +#: execute_cmd.c:5891 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: binääritiedostoa ei voida suorittaa" + +#: execute_cmd.c:5977 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s on komentotulkin sisäänrakennettu komento\n" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "tiedostokahvaa %d ei voida kopioida kahvaksi %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "lausekkeen rekursiomäärä ylittyi" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "rekursiopinon alivuoto" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "lauseoppivirhe lausekkeessa" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "yritettiin sijoittaa objektiin, joka ei ole muuttuja" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "lauseoppivirhe lausekkeessa" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "jako nollalla" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "bugi: virheellinen sijoitusavainsana" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "â€:â€:ttä odotettiin ehdolliseen lausekkeeseen" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "eksponentti on pienempi kuin 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "odotettiin muuttujaa ++:n tai --:n jälkeen" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "puuttuva â€)â€" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "lauseoppivirhe: odotettiin operandia" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "lauseoppivirhe: virheellinen aritmetiikkaoperaattori" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (virheellinen avainsana on â€%sâ€)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "virheellinen lukujärjestelmä" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: virheellinen rivimäärä" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "liian iso luku lukujärjestelmälle" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: virhe lausekkeessa\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: ylempiin hakemistoihin ei päästä" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "bashin syötteeksi ei voida avata uutta tiedostokahvaa kahvasta %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: uudella tiedostokahvalla %d on jo puskuri" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp-putki" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "haarautettu prosessi-id %d on ajossa olevalla työllä %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "poistetaan pysäytetty työ %d prosessiryhmästä %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: prosessi %5ld (%s) on merkattu vielä toimivaksi" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: prosessitunnusta ei löydy." + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signaali %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Valmis" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Pysäytetty" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Pysäytetty(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Ajossa" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Valmis(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Poistui %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Tuntematon tila" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(luotiin core-tiedosto)" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (työhakemisto: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "lapsiprosessin setpgid (%ld => %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: prosessi %ld ei ole tämän komentotulkin lapsiprosessi" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Prosessista %ld ei ole tietoja" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: työ %d on pysäytetty" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: työtä ei löydy" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: työ on lopetettu" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: työ %d on jo taustalla" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: rivi %d:" + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (luotiin core-tiedosto)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(työhakemisto nyt: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp epäonnistui" + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: vuonhallinta" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: vuonhallinta" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "päätteen prosessiryhmää ei voitu asettaa (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "tällä komentotulkilla ei ole työnohjausta" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: varmistus epäonnistui: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: varmistus epäonnistui\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "tuntematon" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: vapaitten listan lohko ylikirjoittui" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: kutsuttiin argumenttina jo vapautettu lohko" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: kutsuttuun argumenttina varaamaton lohko" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: alku- ja loppulohkojen koot eroavat" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: kutsuargumentti on varaamaton lohko" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: alku- ja loppulohkojen koot eroavat" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: varaustaulukko on täynnä FIND_ALLOCeja?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p on merkitty taulukossa jo varatuksi?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p on jo taulukossa vapaana?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "virheellinen lukujärjestelmä" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: tuntematon palvelin" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: virheellinen palvelu" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: virheellinen verkkopolkumääritys" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "verkko-operaatioita ei ole tuettu" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "" + +#: locale.c:292 +#, fuzzy, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "xrealloc: %s:%d: ei voida varata %lu tavua" + +#: locale.c:294 +#, fuzzy, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "xrealloc: %s:%d: ei voida varata %lu tavua" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Sinulle on postia laatikossa $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Sinulla on uutta postia laatikossa $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Posti laatikossa %s on luettu\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "lauseoppivirhe: vaaditaan aritmeettinen lauseke" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "lauseoppivirhe: odottamaton â€;â€" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "lauseoppivirhe: â€((%s))â€" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: virheellinen käskytyyppi %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"here-dokumentti rivillä %d päättyi tiedoston loppumiseen (haluttiin â€%sâ€)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: uudelleenohjaus â€%d†rajojen ulkopuolella" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "odottamaton EOF (tiedostonloppu) odotettaessa sulkevaa â€%câ€" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "odottamaton EOF odotettaessa â€]]â€" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "lauseoppivirhe ehdollisessa lausekkeessa: odottamaton avainsana â€%sâ€" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "lauseoppivirhe ehdollisessa lausekkeessa" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "odottamaton avainsana â€%sâ€, odotettiin â€)â€" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "odototettiin â€)â€" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "odottamaton argumentti â€%s†ehdolliselle unaariselle operaattorille" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "odottamaton argumentti ehdolliselle unaariselle operaattorille" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" +"odottamaton avainsana â€%sâ€, odotettiin ehdollista binääristä operaattoria" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "odotettiin ehdollista binääristä operaattoria" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "odottamaton argumentti â€%s†ehdolliselle binääriselle operaattorille" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "odottamaton argumentti ehdolliselle binääriselle operaattorille" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "odottamaton avainsana â€%c†ehdollisessa komennossa" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "odottamaton avainsana â€%s†ehdollisessa komennossa" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "odottamaton avainsana %d ehdollisessa komennossa" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "lauseoppivirhe lähellä odottamatonta avainsanaa â€%sâ€" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "lauseoppivirhe lähellä â€%sâ€" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "lauseoppivirhe: odottamaton tiedostonloppu" + +#: parse.y:6365 +msgid "syntax error" +msgstr "lauseoppivirhe" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Kirjoita â€%s†poistuaksesi komentotulkista.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "Odottamaton EOF odotettaessa vastaavaa â€)â€" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "täydennys: funktiota â€%s†ei löytynyt" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: tyhjä COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: virheellinen yhdistin â€%dâ€" + +#: print_cmd.c:375 +#, fuzzy, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "%d: virheellinen tiedostokahva: %s" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: â€%câ€: virheellinen muotoilumerkki" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "tiedostokahva rajojen ulkopuolella" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: epämääräinen uudelleenohjaus" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: olemassa olevan tiedoston päälle ei voida kirjoittaa" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: rajoitettu: tulostusta ei voida uudelleenohjata" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "here-dokumentille ei voida luoda väliaikaistiedostoa: %s" + +#: redir.c:222 +#, fuzzy, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port-muotoa ei tueta ilman tietoliikennettä" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "virhe uudelleenohjauksessa: tiedostokahvaa ei voida kopioida" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "/tmp-hakemistoa ei löytynyt, luo se!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp:n pitää olla kelvollinen hakemiston nimi" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: virheellinen valitsin" + +#: shell.c:1319 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" + +#: shell.c:1330 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: on hakemisto" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Minulla ei ole nimeä!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versio %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Käyttö:\t%s[GNU:n pitkä valitsin] [valitsin] ...\n" +"\t%s [GNU:n pitkä valitsin] [valitsin] komentotiedosto ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU:n pitkät valitsimet:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Komentotulkin valitsimet:\n" + +#: shell.c:2043 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" +"\t-irsD tai -c komento tai -O shopt_option (ainoastaan käynnistettäessä)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s tai -o -valitsin\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Kirjoita â€%s -c 'help set'†saadaksesi lisätietoja komentotulkin " +"valitsimista.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Kirjoita â€%s -c help†saadaksesi lisätietoja komentotulkin " +"sisäänrakennetuista komennoista.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Raportoi virheet komennolla â€bashbugâ€.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: virheellinen operaatio" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Väärä signaali" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Linjankatkaisu" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Keskeytys" + +#: siglist.c:58 +msgid "Quit" +msgstr "Lopetettu" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Virheellinen käsky" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "Jäljitys/katkaisupisteansa" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ABORT-käsky" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT-käsky" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Liukulukupoikkeus" + +#: siglist.c:86 +msgid "Killed" +msgstr "Tapettu" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Väylävirhe" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Muistialueen ylitys" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Virheellinen järjestelmäkutsu" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Katkennut putki" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Herätyskello" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Päätetty" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Kiireellinen I/O-ehto" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Pysäytetty (signaali)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Jatka" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Lapsiprosessin kuolema tai pysähtyminen" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Pysäytetty (päätteen syöte)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Pysäytetty (päätteen tuloste)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O on valmis" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU-rajoitus" + +#: siglist.c:154 +msgid "File limit" +msgstr "Tiedostorajoitus" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Hälytys (virtuaalinen)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Hälytys (profiili)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Ikkuna vaihtunut" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Tietuelukko" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Käyttäjän määrittelemä signaali 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Käyttäjän määrittelemä signaali 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT-syöte odottaa" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "sähkökatko lähellä" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "järjestelmän kaatuminen lähellä" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "siirrä prosessi toiselle CPU:lle" + +#: siglist.c:198 +msgid "programming error" +msgstr "ohjelmointivirhe" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT-monitorointitila käytössä" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT-monitorointitila peruttu" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT-äänisekvenssi on valmistunut" + +#: siglist.c:214 +msgid "Information request" +msgstr "Informaatiopyyntö" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Tuntematon signaali #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "virheellinen korvaus: ei sulkevaa â€%s†jonossa %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "putkea ei voida luoda prosessin korvaamista varten" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "lapsiprosessia ei voida luoda prosessin korvaamista varten" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "nimettyä putkea %s ei voida avata lukemista varten" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "nimettyä putkea %s ei voida avata kirjoitusta varten" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "nimettyä putkea %s ei voida kopioida tiedostokahvaksi %d" + +#: subst.c:6213 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "virheellinen korvaus: ei sulkevaa â€`†jonossa %s" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "putkea ei voida luoda komennon korvaamista varten" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "ei voida luoda lapsiprosessia komennon korvaamista varten" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: putkea ei voida kopioida tiedostokahvaksi 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: virheellinen rivimäärä" + +#: subst.c:7013 subst.c:7177 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "%s: virheellinen toiminnon nimi" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametria ei ole tai sitä ei ole asetettu" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametria ei ole tai sitä ei ole asetettu" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: alimerkkijonolauseke < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: virheellinen korvaus" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: ei voida asettaa näin" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "virheellinen korvaus: ei sulkevaa â€`†jonossa %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "ei osumia: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "odotettiin argumenttia" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: odotettiin kokonaislukuilmaisua" + +#: test.c:265 +msgid "`)' expected" +msgstr "odotettiin â€)â€" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "odotettiin â€)â€, löydettiin %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: odotettiin binääristä operaattoria" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: odotettiin unaarista operaattoria" + +#: test.c:881 +msgid "missing `]'" +msgstr "puuttuva â€]â€" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "lauseoppivirhe: odottamaton â€;â€" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "virheellinen signaalinumero" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: virheellinen arvo trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: signaalikäsittelijä on SIG_DFL, lähetän %d (%s) uudelleen " +"itselleni" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: virheellinen signaali %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "virhe tuotaessa â€%sâ€:n funktiomääritystä" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "komentotulkkitaso (%d) liian korkea, palautetaan 1:ksi" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: ei funktiokontekstia nykytilassa" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: ei funktiokontekstia nykytilassa" + +#: variables.c:4771 +#, fuzzy, c-format +msgid "%s has null exportstr" +msgstr "%s: parametria ei ole tai sitä ei ole asetettu" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "virheellinen merkki %d %s:n exportstr:ssä" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "ei =:ä kohteen %s exportstr:ssä" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: shell_variablesin alku ei ole funktiokonteksti" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: ei global_variables-kontekstia" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: shell_variablesin alku ei väliaikaisten ympäristömuuttujien " +"ympäristössä" + +#: variables.c:6387 +#, fuzzy, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: ei voida avata: %s" + +#: variables.c:6392 +#, fuzzy, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%d: virheellinen tiedostokahva: %s" + +#: variables.c:6437 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s rajojen ulkopuolella" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright © 2009 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Lisenssi GPLv3+: GNU GPL versio 3 tai uudempi \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versio %s (%s)\n" + +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." +msgstr "Tämä on vapaa ohjelma; saat muutella ja levittää sitä vapaasti.\n" + +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Takuuta ei ole lain määräämissä rajoissa.\n" + +#: xmalloc.c:93 +#, fuzzy, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: ei voida varata %lu tavua (varattiin %lu tavua)" + +#: xmalloc.c:95 +#, fuzzy, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "xmalloc: ei voitu varata %lu tavua" + +#: xmalloc.c:165 +#, fuzzy, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %s:%d: ei voida varata %lu tavua (varattiin %lu tavua)" + +#: xmalloc.c:167 +#, fuzzy, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: ei voida varata %lu tavua" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nimi[=arvo] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] nimi [nimi ...]" + +#: builtins.c:53 +#, fuzzy +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m näppäinkartta] [-f tiedostonimi] [-q nimi] [-u nimi] [-r " +"näppäinsarja] [-x näppäinsarja:komento] [näppäinsarja:readline-funktio tai " +"readline-komento]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [sisäänrakennettu komento [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:66 +#, fuzzy +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|-P] [dir]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] komento [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFilrtux] [-p] [niemi[=arvo] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFilrtux] [-p] nimi[=arvo] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [valitsin] nimi[=arvo] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f tiedosto] [nimi ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts valitsinmerkit nimi [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a nimi] [komento [argumentit ...]] [uudelleenohjaus ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "lopetus [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e e-nimi] [-lnr] [ensimmäinen] [viimeinen] tai fc -s [pat=rep] [komento]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [työtunniste]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [työtunniste ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p polku] [-dt] [nimi ...]" + +#: builtins.c:119 +#, fuzzy +msgid "help [-dms] [pattern ...]" +msgstr "help [-ds] [malline ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d erotus] [n] tai history -anrw [tiedosto] or history -ps arg " +"[arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [työtunniste ...] tai jobs -x komento [args]" + +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [työtunniste ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s signaalitunniste | -n signaalinumero | -signaalimäärite] prosessi-" +"id | työtunniste ... tai kill -l [signaalimäärite]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +#, fuzzy +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a taulukko] [-d erotin] [-i teksti] [-n lkm] [-p kehote] [-t " +"aikakatkaisu] [-u tiedostokahva] [nimi ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +#, fuzzy +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o valitsinnimi] [arg ...]" + +#: builtins.c:144 +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [nimi ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [nimi[=arvo] ...] tai export -p" + +#: builtins.c:148 +#, fuzzy +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-af] [nimi[=arvo] ...] tai readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source tiedosto [argumentit]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". tiedosto [argumentit]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [lauseke]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signaalimäärite ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] nimi [nimi ...]" + +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [raja]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [tila]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [id]" + +#: builtins.c:181 +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [pid]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NIMI [in ARVOT ... ] ; do KOMENNOT; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( lause1; lause2; lause3 )); do KOMENNOT; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NIMI [in ARVOT ... ;] do KOMENNOT; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] komentoputki" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case SANA in [MALLINE [| MALLINE]...) KOMENNOT ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if KOMENNOT; then KOMENNOT; [ elif KOMENNOT; then KOMENNOT; ]... [ else " +"KOMENNOT; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while KOMENNOT; do KOMENNOT; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until KOMENNOT; do KOMENNOT; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NIMI] komento [uudelleenohjaukset]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function nimi { KOMENNOT ; } tai nimi () { KOMENNOT ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ KOMENNOT ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "työtunniste [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( lauseke ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ lauseke ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "muuttujat - eräiden komentotulkin muuttujien nimet ja merkitykset" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | hakemisto]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [valitsinnimi ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v muuttuja] muoto [argumentit]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-o valitsin] [-A toimenpide] [-G " +"jokerimalline] [-W sanalista] [-F funktio] [-C komento] [-X " +"suodatinmalline] [-P prefiksi] [-S suffiksi] [nimi...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o valitsin] [-A toimenpide] [-G jokerimalline] [-" +"W sanalista] [-F funktio] [-C komento] [-X suodatinmalline] [-P prefiksi] [-" +"S suffiksi] [sana]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o valitsin] [nimi ...]" + +#: builtins.c:242 +#, fuzzy +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-n lukumäärä] [-O alkuperä] [-s laskuri] [-t] [-u tiedostokahva] \n" +"[-C paluukutsu] [-c määrä] [taulukko]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n lukumäärä] [-O alkuperä] [-s laskuri] [-t] [-u " +"tiedostokahva] \n" +"[-C paluukutsu] [-c määrä] [taulukko]" + +#: builtins.c:256 +#, fuzzy +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Näytä tai määrittele aliaksia.\n" +" \n" +" Ilman aliaksia â€alias†tulostaa vakiotulosteeseen listan aliaksista \n" +" hyödynnettävässä muodossa â€alias NIMI=ARVOâ€.\n" +" \n" +" Muussa tapauksessa luodaan uusi alias jokaiselle NIMELLE,\n" +" jonka ARVO on annettu. ARVON jälkeinen tyhjä tarkastetaan\n" +" alias-korvauksen varalta aliasta laajennettaessa.\n" +" \n" +" Valitsimet:\n" +" -p\ttulosta kaikki määritellyt aliakset hyödynnettävässä\n" +" \tmuodossa.\n" +" \n" +" Paluuarvo:\n" +" alias palauttaa arvon tosi, mikäli parametriksi on annettu NIMI jonka\n" +" aliasta ei ole määritelty." + +#: builtins.c:278 +#, fuzzy +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Poista kukin NIMI määriteltyjen aliasten listasta.\n" +" \n" +" Valitsimet:\n" +" -a\tpoista kaikki aliasmääritykset.\n" +" \n" +" Palauttaa arvon tosi paitsi jos NIMI-nimistä aliasta\n" +" ei ole." + +#: builtins.c:291 +#, fuzzy +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Aseta readlinen näppäimistösidonnat ja muuttujat.\n" +" \n" +" Sido näppäinyhdistelmä readlinen funktioon tai makroon, tai \n" +" aseta readlinen muuttuja. Valitsimeton argumenttisyntaksi vastaa\n" +" ~/.inputrc:n, mutta on annettava yhtenä argumenttina:\n" +" esimerkiksi, bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Valitsimet:\n" +" -m näppäinkartta käytä NÄPPÄINKARTTAA tämän komennon ajan.\n" +" Hyväksyttäviä näppäinkarttoja ovat emacs, emacs-" +"standard,\n" +" emacs-meta, emacs-cltx, vi, vi-move, vi-command ja " +"vi-insert.\n" +" -l Listaa funktioiden nimet\n" +" -P Listaa funktioiden nimet ja sidonnat.\n" +" -p Listaa funktioiden nimet ja sidonnat " +"hyödynnettävässä \n" +" muodossa.\n" +" -S Listaa makrot herättävät näppäinyhdistelmät ja " +"niiden \n" +" arvot\n" +" -s Listaa makrot herättävät näppäinyhdistelmät ja " +"niiden \n" +" arvot\n" +" hyödynnettävässä muodossa.\n" +" -q funktion-nimi Tarkista, mitkä näppäimet käynnistävät nimetyn \n" +" funktion.\n" +" -u funktion-nimi Poista nimettyyn funktioon tehdyt näppäinsidonnat.\n" +" -r näppäinyhdistelmä Poista NÄPPÄINYHDISTELMÄN sidonta.\n" +" -f tiedosto Lue näppäinsidonnat TIEDOSTOSTA.\n" +" -x näppäinyhdistelmä:komento\tkäynnistä KOMENTO \n" +" NÄPPÄINYHDISTELMÄLLÄ.\n" +" \n" +" Paluuarvo:\n" +" bind palauttaa 0 paitsi jos on annettu tunnistamaton valitsin tai " +"tapahtuu \n" +" virhe." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Exit for, while- tai until-silmukoista\n" +" \n" +" Poistu FOR-, WHILE- tai UNTIL-silmukasta. Jos N on annettu, poistu\n" +" N:stä sisäkkäisestä silmukasta.\n" +" \n" +" Paluuarvo:\n" +" Paluuarvo on 0 jollei N ole suurempi tai yhtäsuuri kuin 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Jatko for-, while tai until-silmukoille.\n" +" \n" +" Jatkaa seuraavaa FOR-, WHILE- tai UNTIL-silmukan kierrosta.\n" +" Jos N on annettu, jatkaa N:ttä silmukkaa.\n" +" \n" +" Paluuarvo:\n" +" Paluuarvo on 0 ellei N ole suurempi tai yhtäsuuri kuin 1." + +#: builtins.c:354 +#, fuzzy +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Suorita komentotulkin sisäänrakennettuja komentoja.\n" +" \n" +" Suorita KOMENTO argumentein ARGs ilman komennon etsimistä.\n" +" Tämä on hyödyllistä silloin, kun haluat tehdä komentotulkin komennosta\n" +" funktion, mutta haluat suorittaa komennon funktiosta käsin.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa KOMENNON paluuarvon, tai epätoden jos KOMENTO ei ole\n" +" sisäänrakennettu komento." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Palauta tämänhetkisen alirutiinikutsun konteksti.\n" +" \n" +" Ilman parametria, palauttaa â€$line $filenameâ€. Parametrilla palauttaa \n" +" â€$line $subroutine $filenameâ€; saatua lisätietoa voidaan käyttää " +"kutsupinon\n" +" kuvaamiseksi.\n" +" \n" +" Parametrin arvo määrää, montako kutsukehystä taaksepäin siirrytään; \n" +" ylin kehys on numero 0.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa 0 ellei komentotulkki ole funktion ulkopuolella tai parametri\n" +" on virheellinen." + +#: builtins.c:387 +#, fuzzy +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Vaihtaa työhakemistoa.\n" +" \n" +" Siirry hakemistoon HAKEMISTO. HAKEMISTOn oletusarvo on HOME-\n" +" ympäristömuuttujan arvo.\n" +" \n" +" CDPATH-ympäristömuuttuja määrittelee hakupolun HAKEMISTOlle. Vaihto-\n" +" ehtoiset hakemistonimet erotetaan CDPAThissa kaksoispisteellä.\n" +" Tyhjä hakemisto tarkoittaa nykyistä hakemistoa. Jos HAKEMISTO ALKAA\n" +" kauttaviivalla, CDPATHia ei käytetä.\n" +" \n" +" Jos hakemistoa ei löydy, ja komentotulkin valitsin â€cdable_vars†on " +"asetettu,\n" +" oletetaan hakemiston olevan muuttuja. Jos kyseisellä muuttujalla on " +"arvo,\n" +" sitä käytetään HAKEMISTOksi.\n" +" \n" +" Valitsimet:\n" +" -L\tpakota seuraamaan symbolisia linkkejä\n" +" -P\tkäytä fyysistä hakemistorakennetta, älä seuraa symbolisia " +"linkkejä\n" +" \n" +" Oletus on seurata symbolisia linkkejä, kuten jos â€-L†olisi annettu.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa 0, jos hakemistoa vaihdettiin, nollasta poikkeavan muussa \n" +" tapauksessa." + +#: builtins.c:425 +#, fuzzy +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Tulostaa tämänhetkisen työhakemiston.\n" +" \n" +" Valitsimet:\n" +" -L\ttulosta $PWD-ympäristömuuttujan arvo jos se sisältää\n" +" \tnykyisen työhakemiston nimen\n" +" -P\ttulosta fyysinen hakemisto ilman symbolisia linkkejä\n" +" \n" +" Oletusarvoisesti â€pwd†käyttäytyy kuin â€-L†olisi annettu.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa 0 ellei ole annettu virheellistä valitsinta tai nykyistä \n" +" hakemistoa ei voida lukea." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Tyhjä komento.\n" +" \n" +" Ei vaikutusta; komento ei tee mitään.\n" +" \n" +" Paluuarvo:\n" +" Onnistuu aina." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Palauttaa onnistuneen paluuarvon.\n" +" \n" +" Paluuarvo:\n" +" Onnistuu aina." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Palauttaa epäonnistuneen paluuarvon.\n" +" \n" +" Paluuarvo:\n" +" Epäonnistuu aina." + +#: builtins.c:471 +#, fuzzy +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Suorittaa yksinkertaisen komennon tai näyttää tietoja komennoista.\n" +" \n" +" Suorittaa KOMENNON PARAMETREIN ohittaen komentotulkin funktiohaun,\n" +" tai näyttää tietoja annetuista KOMENNOISTA. Voidaan käyttää \n" +" käynnistämään komentoja levyltä silloin, kun on olemassa samanniminen\n" +" funktio.\n" +" \n" +" Valitsimet:\n" +" -p\tkäytä PATHin oletusarvoa jonka taataan löytävän kaikki " +"vakiotyökalut\n" +" -v\ttulosta KOMENNON kuvaus (kuten sisäänrakennettu â€typeâ€-komento)\n" +" -V\ttulosta KOMENTOJEN yksityiskohtaisemmat kuvaukset\n" +" \n" +" Paluuarvo:\n" +" Palauttaa KOMENNON paluuarvon, tai epäonnistumisen jos KOMENTOA ei \n" +" löytynyt." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Asettaa muuttujien arvot ja attribuutit.\n" +" \n" +" Määrittele muuttujat ja anna niille attribuutit. Jos NIMIÄ ei anneta,\n" +" näytä kaikkien muuttujien attribuutit ja arvot.\n" +" \n" +" Valitsimet:\n" +" -f\trajaa toiminto tai listaus funktioiden nimiin ja määrityksiin\n" +" -F\trajaa listaus ainoastaan funktioiden nimiin (plus rivinumeroon \n" +" \t ja lähdetiedostoon debugattaessa)\n" +" -p\tnäytä jokaisen NIMEN attribuutit ja arvo\n" +" \n" +" Attribuutteja muuttavat valitsimet:\n" +" -a\ttee NIMISTÄ indeksoidut taulukot (jos tuettu)\n" +" -A\ttee NIMISTÄ assosiatiiviset taulukot (jos tuettu)\n" +" -i\ttee NIMISTÄ kokonaislukuja\n" +" -l\tNIMIIN sijoitetut merkkijonot muutetaan pienaakkosiksi\n" +" -r\tkirjoitussuojaa NIMET\n" +" -t\taseta NIMIEN â€traceâ€-attribuutti\n" +" -u\tNIMIIN sijoitetut merkkijonot muutetaan suuraakkosiksi\n" +" -x\tNIMET viedään\n" +" \n" +" Käyttämällä â€+â€:aa â€-â€:n sijaan annettu attribuutti poistetaan.\n" +" \n" +" Muuttujille, joille on annettu kokonaislukuattribuutti, suoritetaan\n" +" aritmeettinen evaluointi silloin kun niille annetaan arvo (katso\n" +" â€letâ€-komento).\n" +" \n" +" Funktiossa käytettäessä â€declare†tekee NIMISTÄ paikallisia, kuten " +"â€localâ€-\n" +" komento.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistumisen ellei ole annettu virheellistä valitsinta tai " +"tule \n" +" virhetilannetta." + +#: builtins.c:532 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Asettaa muuttujien arvoja ja attribuutteja.\n" +" \n" +" Vanhentunut. Katso â€help declareâ€." + +#: builtins.c:540 +#, fuzzy +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Määrittele paikallisia muuttujia.\n" +" \n" +" Luo paikallinen NIMI-niminen muuttuja, ja anna sille arvo ARVO. " +"VALITSIN\n" +" voi olla mikä tahansa komennon â€declare†hyväksymä.\n" +" \n" +" Paikallisia muuttujia voidaan käyttää ainoastaan funktiossa; ne ovat\n" +" näkyviä ainoastaan määritelleessä funktiossa ja sen lapsissa.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen, ellei ole annettu virheellistä valitsinta,\n" +" tapahtuu virhe tai komentotulkki ei ole suorittamassa funktiota." + +#: builtins.c:557 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Kirjoita argumentit vakiotulosteeseen.\n" +" \n" +" Tulosta ARGUMENTIT vakiotulosteeseen rivinvaihdoin.\n" +" \n" +" Valitsimet:\n" +" -n\tälä lisää rivinvaihtoa\n" +" -e\ttulkitse seuraavat kenoviivaohjaukset\n" +" -E\tohita kenoviivaohjausten tulkinta\n" +" \n" +" \"echo\" tulkitsee seuraavat kenoviivaohjausmerkit:\n" +" \\a\täänimerkki\n" +" \\b\tbackspace\n" +" \\c\tkeskeytä tulostus\n" +" \\e\tESC-merkki\n" +" \\f\tsivunvaihto\n" +" \\n\trivinvaihto\n" +" \\r\tpalautin\n" +" \\t\tsarkain\n" +" \\v\tvertikaalinen sarkain\n" +" \\\\\tkenoviiva\n" +" \\0nnn\tmerkki jonka ASCII-koodi oktaalina on NNN. NNN voi olla 0-3\n" +" \toktaalimerkkiä\n" +" \\xHH\tkahdeksanbittinen merkki jonka heksadesimaaliarvo on HH. HH " +"voi \n" +" \tolla 1-2 heksadesimaalimerkkiä\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen ellei tapahdu virhettä." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Tulosta argumentit vakiotulosteeseen.\n" +" \n" +" Tulosta ARGUMENTIT vakiotulosteeseen päättäen rivinvaihdolla.\n" +" \n" +" Valitsimet:\n" +" -n\tälä lisää rivinvaihtoa\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen ellei tapahdu virhettä." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Ottaa käyttöön tai poistaa käytöstä komentotulkin sisäänrakennettuja " +"komentoja.\n" +" \n" +" Ottaa käyttöön tai poistaa komentotulkin sisäänrakennettuja komentoja\n" +" käytöstä. Käytöstäpoisto sallii sinun käyttävän sisäisen komennon " +"kanssa \n" +" samannimisiä, levyllä olevia komentoja käyttämättä koko polkua.\n" +" \n" +" Valitsimet:\n" +" -a\tlistaa komennot ja tiedot, mitkä on otettu käyttöön\n" +" -n\tpoistaa NIMET käytöstä tai näyttää listan poistetuista\n" +" -p\ttulosta lista komennoista hyödynnettävässä muodossa\n" +" -s\ttulosta ainoastaan Posix-komennot\n" +" \n" +" Valitsimet, jotka kontrolloivat dynaamista lataamista:\n" +" -f\tlataa komento NIMI jaetusta objektista TIEDOSTO\n" +" -d\tpoista -f:llä ladattu komento\n" +" \n" +" Jollei valitsimia anneta, kukin NIMI otetaan käyttöön.\n" +" \n" +" Jos haluat käyttää $PATHista löytyvää â€testâ€-komentoa sisäänrakennetun\n" +" sijaan, kirjoita â€enable -n testâ€.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen, paitsi jos NIMI ei ole komentotulkin " +"sisäänrakennettu\n" +" komento tai tapahtuu virhe." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Suorita argumentit komentotulkin komentona.\n" +" \n" +" Yhdistä ARGUMENTIT yhdeksi merkkijonoksi, käytä tulosta komentotulkin\n" +" syötteenä ja suorita saadut komennot.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa komennon paluuarvon tai onnistuneen jos komento on tyhjä." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Selaa valitsimien argumentit.\n" +" \n" +" Getoptsia käytetään komentotulkin proseduureissa käsiteltäessä\n" +" komentoriviparametreina annettuja valitsimia.\n" +" \n" +" OPTSTRING sisältää tunnistettavat valitsinkirjaimet; jos kirjainta\n" +" seuraa kaksoispiste, valitsimella odotetaan olevan argumentti, joka \n" +" pitäisi erottaa siitä tyhjämerkillä.\n" +" \n" +" Getopts sijoittaa joka kutsukerralla seuraavan valitsimen muuttujaan\n" +" $nimi, alustaen sen tarvittaessa, ja seuraavan käsiteltävän argumentin\n" +" OPTIND-ympäristömuuttujaan. OPTIND alustetaan 1:ksi jokaisella\n" +" komentotulkin tai komentotiedoston käynnistyskerralla. Kun valitsin\n" +" vaatii argumentin, getopts sijoittaa sen muuttujaan OPTARG.\n" +" \n" +" Getopts ilmoittaa virheistä jommallakummalla tavalla kahdesta. Jos\n" +" OPTSTRINGIN ensimmäinen merkki on kaksoispiste, getopts ilmoittaa\n" +" virheistä hiljaisesti. Tällöin ei tulosteta virheilmoitusta. Jos " +"löydetään\n" +" virheellinen valitsinmerkki, se sijoitetaan OPTARGIIN. Jos vaadittua\n" +" argumenttia ei löydetä, getopts sijoittaa â€:â€:n NAMEEN ja asettaa\n" +" löydetyn optiomerkin OPTARGIIN. Jos getopts ei ole hiljaisessa tilassa\n" +" ja löydetään virheellinen valitsin, getopts sijoittaa â€?â€:n NAMEEN ja\n" +" tyhjentää OPTARGIN. Jos vaadittua argumenttia ei löydetä, NAMEEN\n" +" sijoitetaan â€?â€, OPTARG tyhjennetään ja tulostetaan virheilmoitus.\n" +" \n" +" Jos OPTERR-ympäristömuuttujassa on arvo 0, getopts jättää " +"virheilmoitukset\n" +" tulostamatta, vaikka OPTSTRINGIN ensimmäinen merkki ei ole " +"kaksoispiste.\n" +" OPTERRin oletusarvo on 1.\n" +" \n" +" Getopts selaa normaalisti positioparametrit ($0 - $9), mutta jos \n" +" argumentteja annetaan enemmän, ne selataan sen sijaan.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen jos valitsin löytyy; epäonnistuneen jos " +"valitsimet\n" +" loppuvat tai tapahtuu virhe." + +#: builtins.c:694 +#, fuzzy +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Korvaa komentotulkki annetulla komennolla.\n" +" \n" +" Suorita KOMENTO, korvaten tämä komentotulkki annetulla ohjelmalla.\n" +" ARGUMENTEISTA tulee KOMENNON argumentteja. Jos KOMENTOA ei anneta,\n" +" kaikki uudelleenohjaukset tapahtuvat nykyisessä komentotulkissa.\n" +" \n" +" Valitsimet:\n" +" -a name\tanna NAME nollantena argumenttina KOMENNOLLE\n" +" -c\t\tsuorita KOMENTO tyhjässä ympäristössä\n" +" -l\t\tsijoita miinusmerkki KOMENNON nollanteen argumenttiin\n" +" \n" +" Jos komentoa ei voida suorittaa, ei-interaktiivinen komentotulkki " +"poistuu,\n" +" ellei tulkin valitsinta â€execfail†ole asetettu.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos KOMENTOA ei löydy tai " +"uudelleenohjauksessa\n" +" tapahtuu virhe." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Poistu komentotulkista.\n" +" \n" +" Poistuu komentotulkista paluuarvolla N. Jos N:ää ei anneta, paluuarvo\n" +" on viimeisen komennon paluuarvo." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Poistu sisäänkirjautumiskomentotulkista.\n" +" \n" +" Poistuu sisäänkirjautumiskomentotulkista paluuarvolla N. Palauttaa\n" +" virheen jos ei olla sisäänkirjautumiskomentotulkissa." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Näytä tai suorita komentoja komentohistoriasta.\n" +" \n" +" Fc:tä käytetään historialistassa olevien komentojen tulostamiseen tai\n" +" muokkaamiseen ja uudelleensuoritukseen. ALKU ja LOPPU voivat olla\n" +" rajaavia numeroita, tai ALKU voi olla merkkijono, joka tarkoittaa " +"viimei-\n" +" sintä sillä alkavaa komentoa.\n" +" \n" +" Valitsimet:\n" +" -e ENIMI\tvalitse käytettävä editori. Oletus on FCEDIT, sitten EDITOR\n" +" \t\tsitten vi\n" +" -l\tlistaa rivit editoinnin sijaan\n" +" -r\tlistaa käänteisessä järjestyksessä\n" +" \n" +" Käytettäessä muotoa â€fc -s [malline=korvaus] [komento]â€, komento\n" +" suoritetaan kun korvaus MALLINE=KORVAUS on suoritettu.\n" +" \n" +" Eräs käyttökelpoinen alias on r='fc -s', jolloin â€r cc†ajaa viimeisen " +"cc-\n" +" alkuisen komennon ja â€r†suorittaa viimeisen komennon.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen tai suoritetun komennon paluuarvon; nollasta\n" +" poikkeava virhetilanteessa." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Siirrä työ edustalle.\n" +" \n" +" Siirrä TYÖKUVAAJALLA tunnistettu työ edustalle, jolloin siitä tulee " +"nykyinen\n" +" työ. Jos TYÖKUVAAJAA ei ole annettu, käytetään komentotulkin käsitystä\n" +" tämänhetkisestä työstä.\n" +" \n" +" Paluuarvo:\n" +" Edustalle tuodun työn paluuarvo, tai epäonnistuminen virhetilanteessa." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Siirtää työt taustalle.\n" +" \n" +" Siirtää kunkin TYÖNKUVAAJALLA tunnistetun työn taustalle, kuten jos ne " +"olisi\n" +" käynnistetty â€&â€:llä. Jos TYÖNKUVAAJAA ei ole annettu, käytetään " +"komento-\n" +" tulkin käsitystä nykyisestä työstä.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos työnohjaus ei ole käytössä tai " +"tapahtuu\n" +" virhe." + +#: builtins.c:793 +#, fuzzy +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Muista tai näytä ohjelmien sijainnit.\n" +" \n" +" Selvitä ja muista jokaisen komennon NIMI täysi polkunimi. Jos " +"argumentteja\n" +" ei ole annettu, tulostetaan tiedot muistetuista komennoista.\n" +"\n" +" Valitsimet:\n" +" -d\t\tunohda jokaisen NIMEN sijainti\n" +" -l\t\tnäytä hyödynnettävässä muodossa\n" +" -p polku\tkäytä POLKUA NIMEN täytenä polkunimenä\n" +" -r\t\tunohda kaikki sijainnit\n" +" -t\t\ttulosta kaikkien NIMIEN muistetut sijainnit. Jos annetaan " +"useampi NIMI,\n" +" \t\tsijaintien eteen tulostetaan vastaava NIMI\n" +" Argumentit:\n" +" NIMI\t\tKukin NIMI etsitään $PATH-muuttujan hakupoluista ja lisätään\n" +" muistettujen komentojen listaan.\n" +"\n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos NIMEÄ ei löydy tai on annettu " +"virheellinen valitsin." + +#: builtins.c:818 +#, fuzzy +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Näyttää tietoja sisäänrakennetuista komennoista.\n" +" \n" +" Näyttää lyhyet tiivistelmät sisäänrakennetuista komennoista. Jos " +"MALLINE\n" +" on annettu, antaa yksityiskohtaisemman ohjeen kaikista MALLINEESEEN\n" +" sopivista komennoista, muuten tulostetaan lista ohjeotsikoista.\n" +" \n" +" Valitsimet:\n" +" -d\ttulosta kunkin aiheen lyhyt kuvaus\n" +" -m\tnäytä käyttöohje man-sivumaisessa muodossa\n" +" -s\ttulosta ainoastaan lyhyt käyttöohje kustakin MALLINEESEEN \n" +" \tsopivasta\n" +" \n" +" Argumentit:\n" +" MALLINE\tohjeotsikon hakumalline\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos MALLINETTA ei löydy tai valitsin on\n" +" virheellinen." + +#: builtins.c:842 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Näyttää tai muokkaa komentohistoriaa.\n" +" \n" +" Näyttää (komento)historian rivinumeroin, sijoittaen asteriskin jokaisen\n" +" muokatun alkion eteen. Argumentilla N listataan vain N viimeistä " +"alkiota.\n" +" \n" +" Valitsimet:\n" +" -c\ttyhjennä historia poistamalla kaikki alkiot\n" +" -d sijainti\tpoista alkio kohdasta SIJAINTI\n" +" \n" +" -a\tlisää tämän istunnon historiarivit historiatiedostoon\n" +" -n\tlue kaikki rivit, joita ei jo ole luettu historiatiedostosta\n" +" -r\tlue historiatiedosto ja lisää sen sisältö historiaan\n" +" -w\tkirjoita nykyinen historia historiatiedostoon ja lisää ne " +"historiaan\n" +" \n" +" -p\tsuorita historialaajennos jokaiselle ARGUMENTILLE ja näytä tulos\n" +" \tlisäämättä sitä historiaan\n" +" -s\tliitä ARGUMENTIT historiaan yhtenä alkiona\n" +" \n" +" Jos TIEDOSTO on annettu, sitä käytetään historiatiedostona. Muuten,\n" +" jos $HISTFILE:llä on arvo, sitä käytetään, muuten ~/.bash_history.\n" +" \n" +" Jos $HISTTIMEFORMAT-muuttuja on asetettu ja se ei ole tyhjä, sen arvoa\n" +" käytetään strftime(3):n muotoilujonona tulostettaessa kunkin alkion " +"aikaleima.\n" +" Muussa tapauksessa aikaleimoja ei tulosteta.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin " +"tai tapahtuu virhe." + +#: builtins.c:879 +#, fuzzy +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Näyttää töiden tilan.\n" +" \n" +" Listaa aktiiviset työt. TYÖMÄÄRITYS rajaa tulostuksen kyseiseen työhön.\n" +" Ilman valitsimia tulostetaan kaikkien aktiivisten töiden tila.\n" +" \n" +" Valitsimet:\n" +" -l\tlistaa prosessitunnukset (pid) muun tiedon lisäksi\n" +" -n\tlistaa ainoastaan prosessit joiden tila on muuttunut viimeisen\n" +" \tilmoituksen jälkeen\n" +" -p\tlistaa vain prosessitunnukset\n" +" -r\trajaa tulostus ajossa oleviin töihin\n" +" \n" +" Jos -x on annettu, KOMENTO suoritetaan kun kaikki ARGUMENTEISSA annetut\n" +" työmääritykset on korvattu kyseisen työn prosessiryhmän johtajan " +"prosessi-\n" +" tunnuksella.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n" +" tapahtuu virhe. Jos -x:ää on käytetty, palauttaa KOMENNON paluuarvon." + +#: builtins.c:906 +#, fuzzy +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Poistaa töitä nykyisestä komentotulkista.\n" +" \n" +" Poistaa kunkin TYÖTUNNISTEEN aktiivisten töiden taulukosta. Ilman\n" +" TYÖTUNNISTEITA komentotulkki käyttää omaa arviotaan nykyisestä\n" +" työstä.\n" +" \n" +" Valitsimet:\n" +" -a\tpoista kaikki työt ellei TYÖTUNNISTETTA ole annettu\n" +" -h\tmerkitse kukin TYÖTUNNISTE siten, ettei niille lähetetä\n" +" \tSIGHUPia, jos komentotulkki vastaanottaa sellaisen\n" +" -r\tpoista ainoastaan ajossa olevat työt\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos jokin valitsin tai TYÖTUNNISTE on " +"virheellinen." + +#: builtins.c:925 +#, fuzzy +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Lähetä työlle signaali.\n" +" \n" +" Lähettää PIDILLÄ tai TYÖTUNNISTEELLA tunnistetulle prosessille\n" +" SIGSPECILLÄ tai SIGNUMILLA annetun signaalin. Jos kumpaakaan\n" +" ei ole läsnä, käytetään SIGTERMIÄ.\n" +" \n" +" Valitsimet:\n" +" -s sig\tSIG on signaalin nimi\n" +" -n sig\tSIG on signaalin numero\n" +" -l\tlistaa signaalien nimet; â€-lâ€:n jälkeiset argumentit oletetaan\n" +" \tsignaalinumeroiksi, joiden nimet halutaan listata.\n" +" \n" +" Kill on sisäänrakennettu komento kahdesta syystä: se antaa käyttää\n" +" työtunnisteita prosessitunnusten sijaan, ja sallii prosessien " +"tappamisen\n" +" vaikka sallittujen prosessien lukumäärä olisikin ylitetty.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai " +"tapahtuu virhe." + +#: builtins.c:949 +#, fuzzy +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Laskee matemaattiset lausekkeet.\n" +" \n" +" Laskee jokaisen ARGUMENTIN matemaattisena lausekkeena. Evaluointi\n" +" tehdään kiinteänmittaisina kokonaislukuina ilman ylivuodon " +"tarkistamista,\n" +" vaikkakin nollalla jako havaitaan ja ilmoitetaan virheenä. Seuraava \n" +" operaattorilista on ryhmitelty samanarvoisten operaattoreiden ryhmiin. \n" +" Evaluointijärjestys on laskeva.\n" +" \n" +" \tid++, id--\tmuuttujan jälkilisäys, jälkivähennys\n" +" \t++id, --id\toperaattorin etulisäys, etuvähennys\n" +" \t-, +\t\tunaarinen miinus, plus\n" +" \t!, ~\t\tlooginen ja bittitason negaatio\n" +" \t**\t\tpotenssiinkorotus\n" +" \t*, /, %\t\tkertominen, jakaminen, jakojäännös\n" +" \t+, -\t\tlisäys, vähennys\n" +" \t<<, >>\t\tbittisiirrot vasemmalle ja oikealle\n" +" \t<=, >=, <, >\tvertailu\n" +" \t==, !=\t\tyhtäläisyys, epäyhtäläisyys\n" +" \t&\t\tbittitason AND\n" +" \t^\t\tbittitason XOR\n" +" \t|\t\tbittitason OR\n" +" \t&&\t\tlooginen AND\n" +" \t||\t\tlooginen OR\n" +" \texpr ? expr : expr\n" +" \t\t\tehdollinen operaattori\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tsijoitus\n" +" \n" +" Ympäristömuuttujia voidaan käyttää operandeina. Lausekkeessa muuttujan \n" +" nimi korvataan sen arvolla (määrämittaiseksi kokonaisluvuksi " +"pakotettuna).\n" +" Muuttujan integer-attribuutin ei tarvitse olla asetettuna.\n" +" \n" +" Operaattorit evaluoidaan laskennallisessa järjestyksessä. Suluissa " +"olevat \n" +" alilausekkeet evaluoidaan ensin; suluilla voidaan myös muuttaa \n" +" edelläkuvattua laskentajärjestystä.\n" +" \n" +" Paluuarvo:\n" +" Jos viimeinen ARGUMENTTI evaluoituu nollaksi, let palauttaa 1, muussa\n" +" tapauksessa 0." + +#: builtins.c:994 +#, fuzzy +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Lukee rivin vakiosyötteestä ja jakaa sen kenttiin.\n" +" \n" +" Lukee yksittäisen rivin vakiosyötteestä tai tiedostokahvasta\n" +" FD jos käytetään -u -valitsinta. Rivi jaetaan kenttiin kuten sanatkin, " +"ja \n" +" ensimmäinen sana sijoitetaan ensimmäiseen NIMEEN, toinen TOISEEN, ja " +"niin \n" +" edelleen, ylijäävien sanojen sijoittuessa viimeiseen NIMEEN. Sanojen \n" +" erottimiksi hyväksytään vain $IFS-muuttujassa ilmoitetut.\n" +" \n" +" Jos NIMIÄ ei ole annettu, luettu rivi sijoitetaan REPLY-muuttujaan.\n" +" \n" +" Valitsimet:\n" +" -a taulukko\tsijoita sanat järjestyksessä taulukkoon TAULUKKO, alkaen\n" +" \t\tindeksistä nolla\n" +" -d erotin \tjatka kunnes ensimmäinen EROTTIMEN merkki on luettu, ei\n" +" \t\trivinvaihto\n" +" -e käytä readlinea rivin lukemiseksi " +"interaktiivisessa \n" +" \t\tkomentotulkissa\n" +" -i teksti\tkäytä TEKSTIÄ readlinen oletustekstinä\n" +" -n määrä\t\tpalaa, kun MÄÄRÄ merkkiä on luettu, sen sijaan että \n" +" \t\todotetaan rivinvaihtoa\n" +" -p kehote\ttulosta KEHOTE ilman rivinvaihtoa ennen lukua\n" +" -r\t\tälä salli kenoviivojen käyttöä\n" +" -s \t\tälä näytä päätteeltä näppäiltyjä merkkejä\n" +" -t aikaraja\tkeskeytä ja palauta epäonnistuminen jos kokonaista riviä\n" +" \t\tei saada luettua sekunneissa ilmoitetun AIKARAJAN puitteissa.\n" +" \t\tMuuttujan TMOUT arvo on oletusarvo. AIKARAJA voi olla \n" +" \t\treaaliluku.\n" +"\t\tJos AIKARAJA on 0, read palauttaa onnistumisen vain jos syöte on\n" +"\t\tvalmiina annetussa tiedostokahvassa. Paluuarvo on suurempi \n" +" \t\tkuin 128 jos aikaraja ylittyy\n" +" -u FD\t\tlue tiedostokahvasta FD vakiosyötetiedoston sijaan\n" +" \n" +" Paluuarvo:\n" +" Paluuarvo on nolla, ellei törmätä tiedoston loppumiseen, aikarajan\n" +" ylitykseen tai mikäli -u:lle annetaan virheellinen tiedostokahva." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Palauttaa komentotulkin funktiosta.\n" +" \n" +" Aiheuttaa funktion tai luetun skriptin poistumisen annetulla " +"paluuarvolla N.\n" +" Jos N:ää ei ole annettu, palautetaan viimeisen funktiossa tai " +"skriptissä\n" +" suoritetun komennon paluuarvo.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa N:n, tai epäonnistuneen mikäli komentotulkki ei ole " +"suorittamassa\n" +" funktiota tai skriptiä." + +#: builtins.c:1054 +#, fuzzy +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Asettaa tai poistaa komentotulkin valitsimia ja positionaalisia " +"parametreja.\n" +" \n" +" Muuttaa komentotulkin attribuutteja ja positionaalisia parametreja, tai\n" +" näyttää komentotulkin muuttujien nimet ja arvot.\n" +" \n" +" Valitsimet:\n" +" -a Merkitse luodut tai muutetut parametrit vientiä varten.\n" +" -b Ilmoita työn päättymisestä välittömästi.\n" +" -e Poistu välittömästi jos komento palauttaa nollasta poikkeavan " +"arvon.\n" +" -f Poista tiedostonimen lavennus käytöstä.\n" +" -h muista komentojen sijainti sitä mukaa kun niitä etsitään.\n" +" -k kaikki asetukset sijoitetaan komennon ympäristöön, ei vain ne,\n" +" jotka ovat ennen komennon nimeä.\n" +" -m Työnohjaus on käytössä.\n" +" -n Lue komennot mutta älä suorita niitä.\n" +" -o valitsimen nimi\n" +" Aseta muuttuja valitsimen nimen mukaan:\n" +" allexport\tsama kuin -a\n" +" braceexpand\tsama kuin -B\n" +" emacs\t\tkäytä emacs-tyylistä rivieditointia\n" +" errexit\t\tsama kuin -e\n" +" errtrace\t\tsama kuin -E\n" +" functrace\tsama kuin -T\n" +" hashall\t\tsama kuin -h\n" +" histexpand\tsama kuin -H\n" +" history\t\tota komentohistoria käyttöön\n" +" ignoreeof\tkomentotulkki ei poistu syötteen loppuessa\n" +" interactive-comments\n" +" sallii kommentit interaktiivisissa " +"komennoissa\n" +" keyword\t\tsama kuin -k\n" +" monitor\t\tsama kuin -m\n" +" noclobber\tsama kuin -C\n" +" noexec\t\tsama kuin -n\n" +" noglob\t\tsama kuin -f\n" +" nolog\t\ttällä hetkellä hyväksytty mutta ei huomioida\n" +" notify\t\tsama kuin -b\n" +" nounset\t\tsama kuin -u\n" +" onecmd\t\tsama kuin -t\n" +" physical\t\tsama kuin -P\n" +" pipefail\t\tkomentoputken paluuarvo on viimeisen nollasta\n" +" \t\t\tpoikkeavan komennon paluuarvo, tai nolla jos\n" +" \t\t\tmikään komento ei palauttanut nollasta \n" +" \t\t\tpoikkeavaa\n" +" posix\t\tmuuta bashin toiminta vastaamaan Posixia\n" +" privileged\tsama kuin -p\n" +" verbose\t\tsama kuin -v\n" +" vi\t\tkäytä vi-tyylistä komentorivieditointia\n" +" xtrace\t\tsama kuin -x\n" +" -p Asetetaan jos todellinen ja efektiivinen uid eivät täsmää.\n" +" Poistaa $ENV-tiedoston käsittelyn ja funktioiden tuonnin " +"käytöstä.\n" +" Tämän valitsimen poistaminen aiheuttaa efektiivisen uid:n ja gid:" +"n\n" +" (käyttäjä- ja ryhmätunnus) asettamisen todelliseksi uid:ksi ja \n" +" gid:ksi.\n" +" -t Poistu yhden komennon lukemisen ja suorittamisen jälkeen.\n" +" -u Kohtele asettamattomia muuttujia virheenä korvauksen yhteydessä.\n" +" -v Tulosta komentotulkin syöterivit lukemisen myötä.\n" +" -x Tulosta komennot argumentteineen niitä suoritettaessa.\n" +" -B Komentotulkki suorittaa aaltosulkeitten laajentamisen\n" +" -C Jos asetettu, estää tavallisten tiedostojen päällekirjoittamisen\n" +" uudelleenohjauksella.\n" +" -E Jos asetettu, ERR-kaappaus periytyy funktioihin\n" +" -H Ota !-tyylinen historian korvaus käyttöön. Tämä on " +"oletusarvoisesti\n" +" päällä, mikäli komentotulkki on interaktiivinen.\n" +" -P Jos asetettu, älä seuraa symbolisia linkkejä suoritettaessa\n" +" hakemistoa vaihtavia komentoja, kuten cd.\n" +" -T Jos asetettu, funktiot perivät DEBUG-kaappauksen\n" +" - Sijoita loput argumentit positionaalisiin parametreihin. -x - ja \n" +" -v -optiot poistetaan käytöstä.\n" +" \n" +" Mikäli käytetään â€+â€-merkkiä â€-â€:n sijaan, optiot otetaan pois päältä.\n" +" Valitsimet voidaan myös asettaa komentotulkin käynnistyksessä.\n" +" Asetetut valitsimet löytyvät muuttujasta $-. Loput N ARGUMENTTIA ovat\n" +" positionaalisia parametreja ja asetetaan järjestyksessä muuttujiin\n" +" $1, $2, .. $N. Jos argumentteja ei ole annettu, tulostetaan kaikki\n" +" ympäristömuuttujat.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistumisen ellei ole annettu virheellistä valitsinta." + +#: builtins.c:1139 +#, fuzzy +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Poista ympäristömuuttujien ja funktioiden arvoja ja attribuutteja.\n" +"\n" +" Poista jokaisen NIMI-niminen muuttuja tai funktio.\n" +"\n" +" Valitsimet:\n" +" -f\tkohtele jokaista NIMEÄ funktiona\n" +" -v\tkohtele jokaista NIMEÄ muuttujana\n" +" \n" +" Ilman valitsimia unset yrittää ensin poistaa muuttujan, ja mikäli se\n" +" epäonnistuu, yrittää poistaa funktion.\n" +" \n" +" Joitain muuttujia ei voi poistaa; katso myös â€readonlyâ€.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" +" tai NIMI on kirjoitussuojattu." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Aseta ympäristömuuttujien vientiattribuutin.\n" +" \n" +" Merkitse kukin NIMI vietäväksi automaattisesti suoritettujen komentojen\n" +" ympäristöön. Jos ARVO on annettu, se sijoitetaan NIMEEN ennen vientiä.\n" +" \n" +" Valitsimet:\n" +" -f\tviittaa komentotulkin funktioihin\n" +" -n\tpoista jokaiselta NIMELTÄ vientiattribuutti\n" +" -p\tlistaa kaikki viedyt muuttujat ja funktiot\n" +" \n" +" â€--†argumenttina lopettaa valitsimien käsittelyn.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" +" tai NIMI on virheellinen." + +#: builtins.c:1180 +#, fuzzy +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Merkitse ympäristömuuttujat kirjoitussuojatuiksi.\n" +" \n" +" Merkitse kukin NIMI kirjoitussuojatuksi; näiden NIMIEN arvoa ei voi\n" +" muuttaa. Jos ARVO on annettu, sijoita se NIMEEN ennen merkitsemistä\n" +" kirjoitussuojatuksi.\n" +" \n" +" Valitsimet:\n" +" -a\tviittaa indeksoidun taulukon muuttujiin\n" +" -A\tviittaa assosiatiivisen taulukon muuttujiin\n" +" -f\tviittaa funktioihin\n" +" -p\tnäytä lista kirjoitussuojatuista muuttujista ja funktioista\n" +" \n" +" Argumentti â€--†päättää valitsimien käsittelyn.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" +" tai NIMI on virheellinen." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Siirrä positionaalisia parametreja.\n" +" \n" +" Siirrä positionaalisia parametreja $N+1, $N+2 ... parametreihin $1, " +"$2 ...\n" +" Jos N:ää ei ole annettu, sen oletetaan olevan 1.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen ellei N ole negatiivinen tai suurempi kuin $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Suorittaa tiedoston komennot nykyisessä komentotulkissa.\n" +" \n" +" Lue ja suorita komennot TIEDOSTOSTA nykyisessä tulkissa. $PATH:in\n" +" komponentteja käytetään TIEDOSTON sisältävän hakemiston haussa.\n" +" Mahdolliset ARGUMENTIT sijoitetaan positionaalisiksi parametreiksi\n" +" TIEDOSTOA suoritettaessa.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa viimeisen TIEDOSTON suoritetun komennon paluuarvon; " +"epäonnistuu\n" +" mikäli TIEDOSTOA ei voida lukea." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Keskeyttää komentotulkin suorituksen.\n" +" \n" +" Keskeyttää tämän tulkin suorituksen kunnes se saa SIGCONT-signaalin.\n" +" Sisäänkirjautumistulkkeja ei voi keskeyttää kuin väkisin.\n" +" \n" +" Valitsimet:\n" +" -f\tpakota keskeyttämään, vaikka tulkki olisi sisäänkirjautumis-\n" +" \ttulkki.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos työnohjaus ei ole käytössä tai " +"tapahtuu\n" +" virhe." + +#: builtins.c:1261 +#, fuzzy +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Evaluoi ehdollisen lausekkeen.\n" +" \n" +" Poistuu arvolla 0 (tosi) tai 1 (epätosi) riippuen LAUSEKKEEN " +"evaluoinnista.\n" +" Lausekkeen voivat olla unaarisia tai binäärisiä. Unaarisia lausekkeita\n" +" käytetään usein tarkistamaan tiedoston tila. On myös merkkijono-\n" +" operaattoreita, ja operaattoreita numeroiden vertailuun.\n" +" \n" +" Tiedosto-operaattorit:\n" +" \n" +" -a TIEDOSTO Tosi jos tiedosto on olemassa.\n" +" -b TIEDOSTO Tosi jos tiedosto on lohkolaite.\n" +" -c TIEDOSTO Tosi jos tiedosto on merkkilaite.\n" +" -d TIEDOSTO Tosi jos tiedosto on hakemisto.\n" +" -e TIEDOSTO Tosi jos tiedosto on olemassa.\n" +" -f TIEDOSTO Tosi jos tiedosto on olemassa ja on tavallinen " +"tiedosto.\n" +" -g TIEDOSTO Tosi jos tiedostolla on set-group-id -bitti.\n" +" -h TIEDOSTO Tosi jos tiedosto on symbolinen linkki.\n" +" -L TIEDOSTO Tosi jos tiedosto on symbolinen linkki.\n" +" -k TIEDOSTO Tosi jos tiedostolla on sticky-bitti.\n" +" -p TIEDOSTO Tosi jos tiedosto on nimetty putki.\n" +" -r TIEDOSTO Tosi jos sinulla on lukuoikeus tiedostoon.\n" +" -s TIEDOSTO Tosi jos tiedosto on olemassa eikä se ole tyhjä.\n" +" -S TIEDOSTO Tosi jos tiedosto on soketti.\n" +" -t FD Tosi jos FD on avattu päätteeseen.\n" +" -u TIEDOSTO Tosi jos tiedostolla on set-user-id -bitti.\n" +" -w TIEDOSTO Tosi jos sinulla on kirjoitusoikeus tiedostoon.\n" +" -x TIEDOSTO Tosi jos sinulla on tiedoston suoritusoikeus.\n" +" -O TIEDOSTO Tosi jos omistat tiedoston.\n" +" -G TIEDOSTO Tosi jos ryhmäsi omistaa tiedoston.\n" +" -N TIEDOSTO Tosi jos tiedostoa on muokattu viimeisen " +"lukukerran\n" +" jälkeen.\n" +" \n" +" TIEDOSTO1 -nt TIEDOSTO2 Tosi jos TIEDOSTO1 on uudempi kuin TIEDOSTO2\n" +" (muutospäivän perusteella).\n" +" \n" +" TIEDOSTO1 -ot TIEDOSTO2 Tosi jos TIEDOSTO1 on vanhempi kuin " +"TIEDOSTO2.\n" +" \n" +" TIEDOSTO1 -ef TIEDOSTO2 Tosi jos TIEDOSTO1 on kovolinkki TIEDOSTO2:" +"een.\n" +" \n" +" Merkkijono-operaattorit:\n" +" \n" +" -z JONO Tosi jos JONO on tyhjä.\n" +" \n" +" -n JONO\n" +" JONO Tosi jos JONO ei ole tyhjä.\n" +" \n" +" JONO1 = JONO2\n" +" Tosi jos JONOT ovat samat.\n" +" JONO1 != JONO2\n" +" Tosi jos JONOT eivät ole samat.\n" +" JONO1 < JONO2\n" +" Tosi jos JONO1 aakkostuu ennen JONO2:ta.\n" +" JONO1 > JONO2\n" +" Tosi jos JONO1 aakkostuu JONO2:n jälkeen.\n" +" \n" +" Muut operaattorit:\n" +" \n" +" -o VALITSIN Tosi jos tulkin VALITSIN on käytössä.\n" +" ! LAUSEKE Tosi jos LAUSEKE on epätosi.\n" +" LAUSEKE1 -a LAUSEKE2 \n" +" Tosi jos molemmat lausekkeet ovat tosia.\n" +" LAUSEKE1 -o LAUSEKE2 \n" +" Tosi jos jompikumpi lausekkeista on tosi.\n" +" \n" +" ARG1 OP ARG2 Aritmeettiset testit. OP on jokin seuraavista:\n" +" \t \t -eq, -ne, -lt, -le, -gt tai -ge.\n" +" \n" +" Binääriset aritmetiikkaoperaattorit palauttavat toden jos ARG1 on \n" +" yhtäsuuri, erisuuri, pienempi, pienempi tai yhtä suuri, suurempi\n" +" tahi suurempi tai yhtä suuri kuin ARG2.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistumisen jos LAUSEKE evaluoituu todeksi; epäonnistuu jos\n" +" LAUSEKE evaluoituu vääräksi tai on annettu virheellinen argumentti." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Evaluoi ehdollisen lausekkeen.\n" +" \n" +" Tämä on sisäänrakennetun â€testâ€-komennon synonyymi, mutta viimeisen\n" +" argumentin pitää olla â€]â€, joka sulkee avaavan â€[â€:n." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Näyttää prosessiajat.\n" +" \n" +" Tulostaa kumuloituneet käyttäjä- ja järjestelmäajat sekä " +"komentotulkille\n" +" että kaikille sen lapsiprosesseille.\n" +" \n" +" Paluuarvo:\n" +" Onnistuu aina." + +#: builtins.c:1364 +#, fuzzy +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Kaappaa signaalit ja muut poikkeamat.\n" +" \n" +" Määrittelee ja aktivoi käsittelijöitä, jotka suoritetaan kun " +"komentotulkki\n" +" saa signaalin tai muissa tilanteissa.\n" +" \n" +" ARGUMENTTI on luettava ja suoritettava komento kun tulkki saa \n" +" SIGNAALIissa määritellyn signaalin/signaalit. Jos ARGUMENTTI puuttuu\n" +" (ja vain yksittäinen SIGNAALI on annettu) tai on â€-â€, kukin määrätty\n" +" signaali palautetaan oletusarvoonsa. Jos ARGUMENTTI on tyhjä " +"merkkijono,\n" +" tulkki ja sen käynnistämät komennot jättävät annetut signaalit " +"huomiotta.\n" +" \n" +" Jos SIGNAALI on EXIT (0), ARGUMENTTI suoritetaan tulkin poistuessa.\n" +" Jos SIGNAALI on DEBUG, ARGUMENTTI suoritetaan ennen jokaista " +"yksittäistä\n" +" komentoa.\n" +" \n" +" Jos argumentteja ei ole annettu, trap tulostaa kuhunkin signaaliin " +"liitetyt\n" +" komennot.\n" +" \n" +" Valitsimet:\n" +" -l\ttulostaa listan signaalien nimistä ja vastaavista numeroista\n" +" -p\ttulostaa kuhunkin signaaliin liitetyt kaappauskomennot\n" +" \n" +" Kukin SIGNAALI on joko signaalin nimi -tiedostossa tai " +"numero.\n" +" Signaalien nimet eivät ole aakkoslajillisia ja alkuosa SIG on " +"valinnainen.\n" +" Signaali lähetetään tulkille komennolla â€kill -signal $$â€.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneet paitsi jos SIGNAALI on virheellinen tai on " +"annettu\n" +" virheellinen valitsin." + +#: builtins.c:1400 +#, fuzzy +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Näyttää tietoja komentotyypistä.\n" +" \n" +" Näyttää, miten kukin NIMI tulkittaisiin, jos sitä käytettäisiin " +"komentona.\n" +" \n" +" Valitsimet:\n" +" -a\tnäyttää kaikki paikat, jossa on NIMI-niminen ohjelma; sisältää\n" +" \taliakset, sisäänrakennetut komennot ja funktiot, jos ja vain\n" +" \tjos -p -valitsinta ole käytetty\n" +" -f\testää funktiohaun\n" +" -P\tpakottaa hakemaan NIMET hakupolulta, vaikka se olisikin alias,\n" +" \tsisäänrakennettu komento, tai funktio, ja palauttaa \n" +" \tsuoritettavan levytiedoston nimen\n" +" -p\tpalauttaa joko suoritettavan levytiedoston nimen, tai ei mitään\n" +" \tjos â€type -t NIMI†ei palauttaisi â€fileâ€.\n" +" -t\ttulosta sana, joka on â€aliasâ€, â€keywordâ€, â€functionâ€,\n" +" \tâ€builtinâ€, â€file†tai â€â€, jos NIMI on alias,\n" +" \tavainsana, funktio, sisäänrakennettu komento, levytiedosto tai\n" +" \tsitä ei löytynyt.\n" +" \n" +" Argumentit:\n" +" NIMI\tTulkittavan komennon nimi.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen mikäli kaikki NIMET löytyivät, muussa tapauksessa\n" +" epäonnistuu." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Muuttaa komentotulkin resurssirajoituksia.\n" +" \n" +" Antaa kontrollin tulkin ja sen luomien prosessien resursseille \n" +" järjestelmissä, jossa se on mahdollista.\n" +" \n" +" Valitsimet:\n" +" -S\tkäytä â€pehmeää†resurssirajaa\n" +" -H\tkäytä â€kovaa†resurssirajaa\n" +" -a\traportoi nykyiset rajat\n" +" -b\tsoketin puskurikoko\n" +" -c\tluotujen core-tiedostojen maksimikoko\n" +" -d\tprosessin datasegmentin maksimikoko\n" +" -e\tylin skedulointiprioriteetti (â€niceâ€-arvo)\n" +" -f\tkomentotulkin ja sen lapsiprosessien kirjoittamien tiedostojen\n" +" \tmaksimikoko\n" +" -i\todottavien signaalien maksimimäärä\n" +" -l\tprosessin lukitseman muistin maksimikoko\n" +" -m\tmuistinvaraisen joukon maksimikoko\n" +" -n\tavointen tiedostokahvojen maksimimäärä\n" +" -p\tputken puskurikoko\n" +" -q\tPOSIX-viestijonoissa olevien tavujen maksimi\n" +" -r\tsuurin reaaliaikaskedulointi-prioriteetti\n" +" -s\tpinon maksimikoko\n" +" -t\tenin CPU-aika sekunneissa\n" +" -u\tkäyttäjäprosessien maksimimäärä\n" +" -v\tvirtuaalimuistin koko\n" +" -x\ttiedostolukitusten maksimimäärä\n" +" \n" +" Jos RAJA on annettu, se on määrätyn resurssin uusi arvo; RAJAN " +"erikoisarvot\n" +" â€softâ€, â€hard†ja â€unlimited†tarkoittavat nykyistä pehmeää, kovaa ja\n" +" rajatonta. Muussa tapauksessa tulostetaan annetun resurssin arvo. Jos\n" +" valitsimia ei ole annettu, oletetaan -f.\n" +" \n" +" Arvon ovat 1024 tavun monikertoja, paitsi -t:n, joka on sekuntteja,\n" +" -p, jota kasvatetaan 512 tavun osissa, ja -u, joka on prosessien \n" +" skaalaamaton määrä.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" +" tai tapahtuu virhe." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Näyttää tai asettaa tiedoston tilamaskin.\n" +" \n" +" Asettaa käyttäjän tiedostonluontimaskin TILAKSI. Jos TILAA ei ole \n" +" annettu, tulostaa maskin nykyisen arvon.\n" +" \n" +" Jos TILA alkaa numerolla, se käsitellään oktaalinumerona; muussa\n" +" tapauksessa se on symbolinen tilamerkkijono jonka chmod(1) hyväksyy.\n" +" \n" +" Valitsimet:\n" +" -p\tjos TILAA ei ole annettu, tulostetaan hyödynnettävässä\n" +" \tmuodossa\n" +" -S\ttulostaa symbolisena; muussa tapauksessa tulostetaan\n" +" \toktaaliluku\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen ellei TILA ole virheellinen tai on annettu \n" +" virheellinen valitsin." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Odottaa työn valmistumista ja palauttaa paluuarvon.\n" +" \n" +" Odottaa ID:llä tunnistettua prosessia, joka (ID) voi olla " +"prosessitunnus\n" +" tai työtunniste, ja palauttaa sen paluuarvon. Jos ID:tä ei ole annettu,\n" +" odottaa kaikkia tällä hetkellä aktiivisia lapsiprosesseja, ja paluuarvo\n" +" on nolla. Jos ID on työtunniste, odottaa kaikkia prosesseja työn " +"komento-\n" +" putkessa.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n" +" virheellinen valitsin." + +#: builtins.c:1533 +#, fuzzy +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Odottaa työn valmistumista ja palauttaa paluuarvon.\n" +" \n" +" Odottaa annettua prosessia ja palauttaa sen paluuarvon. Jos prosessi-\n" +" tunnistetta (PID) ei ole annettu, odottaa kaikkia tällä hetkellä " +"aktiivisia \n" +" lapsiprosesseja, ja paluuarvo on nolla.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n" +" virheellinen valitsin." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Suorittaa komennot listan jokaiselle jäsenelle.\n" +" \n" +" â€Forâ€-silmukka suorittaa komentoketjun listan jokaiselle alkiolle. Jos\n" +" â€in SANAT ...;†ei ole annettu, käytetään rakennetta â€in $@â€. NIMI " +"asetetaan\n" +" vuorollaan jokaiseksi SANAT-listan alkioksi, ja KOMENNOT suoritetaan.\n" +" \n" +" Paluuarvo:\n" +" Viimeisen suoritetun komennon paluuarvo." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Aritmeettinen for-silmukka.\n" +" \n" +" Vastaa\n" +" \t(( LAUSEKE1))\n" +" \twhile (( LAUSEKE2 )); do\n" +" \t\tKOMENNOT\n" +" \t\t(( LAUSEKE3 ))\n" +" \tdone\n" +"\n" +" LAUSEKE1, LAUSEKE2 ja LAUSEKE3 ovat aritmeettisiä lausekkeita. Jos " +"jokin\n" +" lauseke on jätetty pois, se tulkitaan 1:ksi.\n" +" \n" +" Paluuarvo:\n" +" Viimeisen suoritetun komennon paluuarvo." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Valitsee sanat listasta ja suorittaa komennot.\n" +" \n" +" SANAT lavennetaan, jolloin saadaan sanalista. Lavennettujen sanojen " +"joukko\n" +" tulostetaan vakiovirhetulosteeseen juoksevasti numeroituna. Jos â€in " +"SANATâ€\n" +" puuttuu, käytetään rakennetta â€in $@â€. Tämän jälkeen tulostetaan \n" +" PS3-kehote ja vakiosyötteestä luetaan rivi. Mikäli rivi koostuu \n" +" numerosta joka vastaa jotakin tulostetuista sanoista, asetetaan NIMEN \n" +" arvoksi kyseinen sana. Jos rivi on tyhjä, SANAT ja kehote tulostetaan \n" +" uudelleen. Mikäli saadaan EOF (tiedoston loppu), komento päättyy.\n" +" Mikä tahansa muu luettu arvo aiheuttaa NIMEN tyhjäämisen. Luettu rivi \n" +" tallennetaan REPLY-muuttujaan. KOMENNOT suoritetaan kunkin valinnan \n" +" jälkeen kunnes suoritetaan break-komento.\n" +"\n" +" Paluuarvo:\n" +" Viimeisen suoritetun komennon paluuarvo." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Raportoi komentoketjun suoritusajan.\n" +" \n" +" Suorita KOMENTOKETJU ja tulosta yhteenveto käytetystä ajasta, käyttäjän\n" +" CPU-ajasta ja järjestelmän CPU-ajasta KOMENTOKETJUA suoritettaessa sen\n" +" päätyttyä.\n" +" \n" +" Valitsimet:\n" +" -p\ttulosta ajastusyhteenveto siirrettävässä POSIX-muodossa.\n" +" \n" +" Tulosteen muotoilussa käytetään TIMEFORMAT-muuttujan arvoa.\n" +" \n" +" Paluuarvo:\n" +" KOMENTOKETJUN paluuarvo." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Suorittaa komentoja tekstihaun perusteella.\n" +" \n" +" Suorittaa valikoiden KOMENTOJA perustuen SANAAN joka sopii " +"MALLINEESEEN.\n" +" â€|â€:ea käytetään erottamaan mallineita.\n" +" \n" +" Paluuarvo:\n" +" Viimeisen suoritetun komennon paluuarvo." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Suorittaa komentoja ehdollisesti.\n" +" \n" +" â€if KOMENNOTâ€-lista suoritetaan. Jos sen paluuarvo on nolla, " +"suoritetaan\n" +" â€then KOMENNOTâ€-lista. Muussa tapauksessa suoritetaan vuorollaan\n" +" kukin â€elif KOMENNOTâ€-lista, ja jos sen paluuarvo on nolla, suoritetaan\n" +" vastaava â€then KOMENNOTâ€-lista ja if-komento päätetään. Muutoin\n" +" suoritetaan â€else KOMENNOTâ€-lista, jos sellainen on. Koko rakenteen\n" +" paluuarvo on viimeisen komennon paluuarvo tai nolla, jos mikään ehto\n" +" ei toteutunut.\n" +"\n" +" Paluuarvo:\n" +" Viimeisen suoritetun komennon paluuarvo." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Suorittaa komentoja niin kauan kun testi onnistuu.\n" +" \n" +" Laventaa ja suorittaa KOMENTOJA niin kauan kun viimeinen komento\n" +" â€while KOMENNOT†palauttaa nollan.\n" +" \n" +" Paluuarvo:\n" +" Viimeisen komennon paluuarvo." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Suorittaa komentoja niin kauan kun testi epäonnistuu.\n" +" \n" +" Laventaa ja suorittaa KOMENTOJA niin kauna kun viimeinen komento\n" +" â€until KOMENNOT†palauttaa nollasta poikkeavan paluuarvon.\n" +" \n" +" Paluuarvo:\n" +" Viimeisen suoritetun komennon paluuarvo." + +#: builtins.c:1671 +#, fuzzy +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Luo NIMI-nimisen rinnakkaisprosessin.\n" +" \n" +" Suorittaa KOMENNON asynkronisesti, vakiotuloste ja vakiosyöte\n" +" ohjattuna putken kautta tiedostokahvoihin suorittavan tulkin NIMI-" +"nimisen\n" +" taulukon indekseihin 0 ja 1. Oletus-NIMI on â€COPROCâ€.\n" +" \n" +" Paluuarvo:\n" +" KOMENNON paluuarvo." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Luo funktion.\n" +" \n" +" Luo komentotulkin funktion NIMI. Jos NIMI käynnistetään komentona,\n" +" KOMENNOT ajetaan kutsuvan tulkin ympäristössä. Kun NIMI käynnistetään,\n" +" sen argumentit välitetään parametreina $1...$n, ja funktion nimi\n" +" sijoitetaan muuttujaan $FUNCNAME.\n" +" \n" +" Paluuarvo:\n" +" Onnistuu, ellei NIMI ole kirjoitussuojattu." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ryhmittää komennot.\n" +" \n" +" Suorittaa komennot ryhmässä. Tämä on eräs tapa uudelleenohjata " +"kokonaisen\n" +" komentojoukon tulosteet.\n" +" \n" +" Paluuarvo:\n" +" Viimeisen suoritetun komennon paluuarvo." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Siirtää komennon edustalle.\n" +" \n" +" Sama kuin â€fgâ€-komennon TYÖNKUVAAJA-argumentti. Jatkaa joko " +"keskeytettyä\n" +" tai taustatyötä. TYÖNKUVAAJA voi määritellä joko työn nimen tai " +"numeron.\n" +" Jos TYÖNKUVAAJAA seuraa â€&†siirretään työ taustalle, kuten jos " +"työnkuvaaja\n" +" olisi annettu â€bgâ€-komennon argumentiksi.\n" +" \n" +" Paluuarvo:\n" +" Työn tila." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Evaluoi artimeettinen lauseke.\n" +" \n" +" LAUSEKKEEN arvo evaluoidaan laskentasääntöjen mukaisesti. Sama kuin\n" +" â€let LAUSEKEâ€.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa 1, jos LAUSEKKEEN arvo on 0; muuten palauttaa 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Suorittaa ehdollisen komennon.\n" +" \n" +" Palauttaa 0 tai 1 riippuen ehdollisen LAUSEKKEEN tuloksesta. " +"Lausekkeissa\n" +" käytetään samoja primäärejä kuin sisäänrakennetussa â€testâ€-komennossa,\n" +" ja voidaan yhdistellä seuraavilla operaattoreilla:\n" +" \n" +" ( LAUSEKE )\tPalauttaa LAUSEKKEEN arvon\n" +" ! LAUSEKE\t\tTosi jos LAUSEKE on epätosi; muuten epätosi\n" +" LAUSEKE1 && LAUSEKE2\tTosi jos molemmat lausekkeet ovat tosia, muuten\n" +" \t\tepätosi\n" +" LAUSEKE1 || LAUSEKE2\tTosi jos jompikumpi lausekkeista on tosi,\n" +" \t\t\tmuuten epätosi\n" +" \n" +" Käytettäessä â€==â€- ja â€!=â€-operaattoreita oikeanpuoleista merkkijonoa \n" +" käytetään mallineena ja suoritetaan haku sen perusteella. Operaattoria\n" +" â€=~†käytettäessä oikeanpuoleinen merkkijonoa käsitellään kuten " +"säännöllistä\n" +" lauseketta.\n" +"\n" +" Operaattorit â€&&†ja â€||†eivät evaluoi LAUSEKETTA2 jos LAUSEKE1 " +"riittää\n" +" lausekkeen arvon päättelyyn.\n" +" \n" +" Paluuarvo:\n" +" 0 tai 1 riippuen LAUSEKKEEN arvosta." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Yleisiä komentotulkin muuttujia ja niiden käyttö.\n" +" \n" +" BASH_VERSION\tTämän Bashin versiotiedot.\n" +" CDPATH\tKaksoispistein eroteltu lista hakemistoista, joista etsitään\n" +" \t\tâ€cdâ€-komennolle argumentiksi annettua hakemistoa.\n" +" GLOBIGNORE\tKaksoispistein eroteltu lista mallineista, joihin sopivat\n" +" \t\ttiedostonimet jätetään huomiotta polun laventamisessa.\n" +" HISTFILE\tTiedosto, johon komentohistoriasi tallennetaan.\n" +" HISTFILESIZE\tMaksimi rivimäärä tähän tiedostoon tallennetaan.\n" +" HISTSIZE\tTulkin käytettävissä olevien historiarivien maksimimäärä\n" +" HOME\tTäydellinen polku sisäänkirjautumishakemistoosi.\n" +" HOSTNAME\tNykyisen palvelimen nimi.\n" +" HOSTTYPE\tCPU-tyyppi, jonka alaisuudessa tämä Bash-versio on ajossa.\n" +" IGNOREEOF\tKontrolloi, miten tulkki toimii saadessaan syötteenä pelkän\n" +" \t\tEOF:n (tiedoston loppu). Jos asetettu, sen määrittelemä\n" +" \t\tlukumäärä EOF:iä voidaan lukea syötteenä peräkkäin ennenkuin\n" +" \t\ttulkki poistuu (oletuksena 10). Jos ei ole asetettu, EOF\n" +" \t\tmerkitsee syötteen loppua.\n" +" MACHTYPE\tJärjestelmää kuvaava merkkijono.\n" +" MAILCHECK\tMiten monen sekunnein välein Bash tarkistaa uudet postit.\n" +" MAILPATH\tKaksoispistein eroteltu lista tiedostoista joista Bash\n" +" \t\ttarkistaa uudet postit.\n" +" OSTYPE\tJärjestelmän Unix-versio.\n" +" PATH\tKaksoispistein eroteltu lista hakemistoista, joista etsitään\n" +" \t\tkomentoja.\n" +" PROMPT_COMMAND\tEnnen primäärin kehotteen tulostamista suoritettava\n" +" \t\tkomento.\n" +" PS1\t\tPrimääri komentokehote.\n" +" PS2\t\tSekundääri kehote.\n" +" PWD\t\tNykyisen hakemiston täydellinen polkunimi.\n" +" SHELLOPTS\tKaksoispistein eroteltu lista käytössä olevista tulkin\n" +" \t\tvalitsimista.\n" +" TERM\tKäytettävän päätetyypin nimi.\n" +" TIMEFORMAT\tâ€timeâ€-käskyn tulosteen muotoilumalline.\n" +" auto_resume\tJos ei tyhjä, ensimmäistä rivillä olevaa komentosanaa " +"etsitään\n" +" \t\tkeskeytettyjen töiden listasta. Jos sana löydetään, kyseinen\n" +" \t\ttyö tuodaan esiin. â€exactâ€-arvo tarkoittaa, että komentosanan\n" +" \t\tpitää olla täysin sama kuin keskeytettyjen listalta löytyvä.\n" +" \t\tArvo â€substring†tarkoittaa että komentosanan pitää olla\n" +" \t\tosa työnimeä. Mikä tahansa muu tarkoittaa että komennon pitää\n" +" \t\tolla keskeytetyn työn nimen alkuosa.\n" +" histchars\tMerkit, jotka ohjaavat historialistasta hakua ja " +"pikakorvausta.\n" +" \t\tEnsimmäinen merkki on historiakorvausmerkki, tavallisesti â€!â€.\n" +" \t\tToinen, pikakorvausmerkki, on yleensä â€^â€. Kolmas merkki,\n" +" \t\ttavallisesti â€#â€, on historiakommentti.\n" +" HISTIGNORE\tKaksoispistein eroteltu lista mallineista, joita käytetään\n" +" \t\tpäätettäessä komentojen tallentamisesta historialistaan.\n" + +#: builtins.c:1821 +#, fuzzy +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Lisää hakemistoja pinoon.\n" +" \n" +" Lisää hakemiston hakemistopinon päällimmäiseksi, tai kierrättää pinoa,\n" +" jolloin nykyhakemisto siirretään pinon päällimmäiseksi. Ilman " +"argumentteja\n" +" vaihtaa pinon kaksi päällimmäistä keskenään.\n" +" \n" +" Valitsimet:\n" +" -n\tJättää normaalin hakemiston vaihdon tekemättä lisättäessä\n" +" \t\thakemistoja pinoon, joten ainoastaan pinoa muokataan.\n" +" \n" +" Argumentit:\n" +" +N\tKierrättää pinoa niin, että N:s hakemisto (laskien vasemmalta\n" +" \t\tâ€dirsâ€-komennon tuottamasta listasta, alkaen nollasta) on\n" +" \t\tpinon päällimmäisenä.\n" +" -N\tKierrättää pinoa niin, että N:s hakemisto (laskien oikealta\n" +" \t\tâ€dirsâ€-komennon tuottamasta listasta, alkaen nollasta) on\n" +" \t\tpinon päällimmäisenä.\n" +" HAKEM\tLisää HAKEMIN hakemistopinon päällimmäiseksi ja tekee \n" +" \t\tsiitä työhakemiston.\n" +" \n" +" Sisäänrakennettu â€dirs†näyttää hakemistopinon.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen, paitsi jos on annettu virheellinen argumentti " +"tai\n" +" hakemiston vaihtaminen epäonnistuu." + +#: builtins.c:1855 +#, fuzzy +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Poistaa hakemistoja pinosta.\n" +" \n" +" Poistaa alkioita hakemistopinosta. Ilman argumentteja poistaa\n" +" pinon päällimmäisen, ja siirtyy uuteen ylimpään hakemistoon.\n" +" \n" +" Valitsimet:\n" +" -n\tJättää normaalin hakemistoon siirtymisen suorittamatta,\n" +" \t\tjoten vain pinoa muokataan.\n" +" +N\tPoistaa N:nnen alkion (laskien vasemmalta â€dirsâ€-komennon\n" +" \t\ttuottamasta listasta, alkaen nollasta). Esimerkiksi â€popd +0â€\n" +" \t\tpoistaa ensimmäisen hakemiston, â€popd +1†toisen.\n" +" -N\tPoistaa N:nnen alkion (laskien oikealta â€dirsâ€-komennon\n" +" \ttuottamasta listasta, alkaen nollasta). Esimerkiksi â€popd -0â€\n" +" \tpoistaa viimeisen hakemiston, â€popd -1†toiseksi viimeisen.\n" +"\n" +" Sisäänrakennettu â€dirsâ€-komento listaa hakemistopinon.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen argumentti tai\n" +" hakemiston vaihto epäonnistuu." + +#: builtins.c:1885 +#, fuzzy +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Näyttää hakemistopinon.\n" +" \n" +" Näyttää listan tällä hetkellä muistetuista hakemistoista. Hakemistot\n" +" päätyvät listalle â€pushdâ€-komennolla; voit selata pinoa â€popdâ€-\n" +" komennolla.\n" +" \n" +" Valitsimet:\n" +" -c\tTyhjennä hakemistopino poistamalla kaikki alkiot\n" +" -l\tälä tulosta tilde-alkuisia versioita kotihakemistoon \n" +" \tsuhteutetuista hakemistoista\n" +" -p\ttulosta hakemistopuu hakemisto per rivi\n" +" -v\ttulosta hakemistopuu, hakemisto per rivi, numeroituina \n" +" \tpinoindeksin mukaan\n" +" \n" +" Argumentit:\n" +" +N\tNäyttää N:nnen alkion (â€dirsâ€-komennon tuottamasta listasta\n" +" \tvasemmalta laskien) alkaen nollasta käynnistettäessä ilman\n" +" \toptioita.\n" +" -N\tNäyttää N:nnen alkion (â€dirsâ€-komennon tuottamasta listasta\n" +" \toikealta laskien) alkaen nollasta käynnistettäessä ilman\n" +" \toptioita.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" +" tai tapahtuu virhe." + +#: builtins.c:1916 +#, fuzzy +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Asettaa ja poistaa komentotulkin valitsimia.\n" +" \n" +" Muuttaa kunkin tulkin VALITSIMEN asetuksen. Ilman argumentteja\n" +" listaa kaikki tulkin valitsimet ja tiedon, onko valitsin voimassa \n" +" vai ei.\n" +" \n" +" Valitsimet:\n" +" -o\trajaa VALITSIMET niihin, jotka on määritelty käytettäväksi\n" +" \tâ€set -oâ€:lla\n" +" -p\ttulosta kukin tulkin valitsin ja sen tila\n" +" -q\tälä tulosta\n" +" -s\taseta kukin VALITSIN\n" +" -u\tpoista kukin VALITSIN\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen, mikäli VALITSIN on käytössä, epäonnistuu jos on\n" +" annettu virheellinen VALITSIN tai VALITSIN ei ole käytössä." + +#: builtins.c:1937 +#, fuzzy +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Muotoilee ja tulostaa ARGUMENTIT MUOTOILULLA muotoiltuna.\n" +" \n" +" Valitsimet:\n" +" -v muuttuja\tsijoita tuloste muuttujaan MUUTTUJA, älä tulosta\n" +" \n" +" MUOTOILU on merkkijono, joka koostuu kolmentyyppisistä alkioista:\n" +" tavallisista merkeistä, jotka vain kopioidaan vakiotulosteeseen;\n" +" escape-yhdistelmistä, jotka muunnetaan ja kopioidaan vakiotulosteeseen; " +"ja\n" +" muotoilumäärityksistä, joista jokainen aiheuttaa seuraavan vuorossa\n" +" olevan argumentin tulostamisen.\n" +"\n" +" Printf(1):n ja printf(3):n vakiomuotoilujen lisäksi printf tulkitsee:\n" +" %b\tlavenna escape-yhdistelmät vastaavassa argumentissa\n" +" %q\tkapseloi argumentti siten, että se voidaan käyttää tulkin\n" +" \tsyötteenä\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" +" tapahtuu kirjoitus- tai sijoitusvirhe." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Määrittelee miten readline täydentää argumentit.\n" +" \n" +" Määrittelee, miten kukin NIMI täydennetään. Ilman valitsimia " +"tulostetaan\n" +" nykyiset täydennysmääritykset siten, että niitä voidaan käyttää \n" +" syötteenä.\n" +" \n" +" Valitsimet:\n" +" -p\ttulostaa olemassa olevat täydennysmääritykset \n" +" hyödynnettävässä muodossa\n" +" -r\tpoista täydennysmääritys kultakin NIMELTÄ, tai, jos NIMIÄ ei\n" +" \tole annettu, kaikki täydennysmääritykset\n" +" \n" +" Täydennystä yritettäessä toimenpiteen suoritetaan samassa " +"järjestyksessä\n" +" missä isoilla kirjoitetut valitsimet on edellä listattu.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n" +" tapahtuu virhe." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Näyttää mahdolliset täydenteet valitsimista riippuen.\n" +" \n" +" Tarkoitettu käytettäväksi komentotulkin funktiossa, joka luo " +"mahdollisia\n" +" täydenteitä. Jos valinnainen argumentti SANA on annettu, luodaan siihen\n" +" sopivat täydenteet.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" +" tapahtuu virhe." + +#: builtins.c:2016 +#, fuzzy +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Muuttaa tai näyttää täydennysvalitsimet.\n" +" \n" +" Muuttaa kunkin NIMEN, tai jos NIMIÄ ei ole annettu, tämänhetkisen\n" +" täydennyksen täydennysvalitsimia. Jos VALITSIMIA ei ole annettu, \n" +" tulostaa kunkin NIMEN tai tämänhetkisen täydennyksen \n" +" täydennysvalitsimet.\n" +" \n" +" Valitsimet:\n" +" \t-o valitsin\taseta täydennysvalitsin VALITSIN kullekin NIMELLE\n" +" \n" +" Käyttämällä â€+oâ€:ta â€-oâ€:n sijaan kyseinen valitsin poistetaan.\n" +" \n" +" Argumentit:\n" +" \n" +" Kukin NIMI viittaa komentoon jolle täydennysmääritys on ollut pakko\n" +" määritellä aiemmin käyttämällä sisäänrakennettua komentoa â€completeâ€.\n" +" Jos NIMIÄ ei ole annettu, compoptia pitää kutsua tällä hetkellä\n" +" täydennyksiä tuottavasta funktiosta, ja sen valitsimia muutetaan.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" +" NIMELLE ei ole määritetty täydennysmääritystä." + +#: builtins.c:2047 +#, fuzzy +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Lukee rivejä vakiosyötteestä taulukkomuuttujaan.\n" +" \n" +" Lukee rivejä vakiosyötteestä taulukkomuuttujaan TAULUKKO, tai \n" +" tiedostokahvasta TK jos käytetään -u -valitsinta. Muuttuja MAPFILE\n" +" on oletus-TAULUKKO.\n" +" \n" +" Valitsimet:\n" +" -n laskuri\tKopioi korkeintaan LASKURI riviä. Jos LASKURI on 0,\n" +" \t\tkaikki rivit kopioidaan.\n" +" -O alku\t\tAloita sijoitus indeksistä ALKU. Oletusindeksi on 0.\n" +" -s laskuri\tHylkää LASKURI ensimmäistä luettua riviä.\n" +" -t\t\tPoista rivinloppumerkki jokaisesta luetusta rivistä.\n" +" -u TK\t\tLue rivit tiedostokahvasta TK.\n" +" -C paluukutsu\tSuorita PALUUKUTSU aina, kun MÄÄRÄ riviä on luettu.\n" +" -c määrä\t\tMäärittele, montako riviä luetaan ennen kutakin \n" +" \t\tPALUUKUTSUA.\n" +" \n" +" Argumentit:\n" +" TAULUKKO\t\tTaulukkomuuttuja, johon tiedot luetaan.\n" +"\n" +" Jos -C on annettu ilman -c:tä, oletusmäärä on 5000. Kun PALUUKUTSUA\n" +" evaluoidaan, sille annetaan indeksi seuraavaan sijoituspaikkaan\n" +" ylimääräisenä argumenttina.\n" +" \n" +" Jos ALKUA ei ole annettu, mapfile tyhjentää TAULUKON ennen siihen\n" +" sijoittamista.\n" +" \n" +" Paluuarvo:\n" +" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" +" tai TAULUKKO on kirjoitussuojattu." + +# Changed " characters into â€... +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Lukee rivit tiedostosta taulukkomuuttujaan.\n" +" \n" +" â€mapfileâ€:n synonyymi." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Palauttaa nykyisen alirutiinikutsun kontekstin.\n" +#~ " \n" +#~ " Ilman LAUSEKETTA palauttaa" + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: prosessi %5ld (%s) putkijonossa" + +#~ msgid "Unknown Signal #" +#~ msgstr "Tuntematon signaali #" + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: ei voida varata %lu tavua" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: %s:%d: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" diff --git a/bash-5.1/po/fr.gmo b/bash-5.1/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..2e08b7888abd8f4ffb67bae1197451fc00081cf0 GIT binary patch literal 167579 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, 2004 +# Christophe Combelles , 2008, 2009, 2010, 2011 +# Frédéric Marchal , 2019 +msgid "" +msgstr "" +"Project-Id-Version: bash-5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-01-10 20:44+0100\n" +"Last-Translator: Frédéric Marchal \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n >= 2);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "mauvais indice de tableau" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: retire l'attribut nameref" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s : impossible de convertir un tableau indexé en associatif" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s : clé non valable pour le tableau associatif" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s : impossible d'assigner à un index non numérique" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" +"%s : %s : l'assignation d'un tableau associatif doit se faire avec un indice" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s : impossible de créer : %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command : impossible de trouver le mappage clavier pour la " +"commande" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s : le premier caractère non vide n'est pas « \" »" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "pas de « %c » de fermeture dans %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s : virgule de séparation manquante" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "« %s » : impossible à délier" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "expansion des accolades : impossible d'allouer la mémoire pour %s" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" +"expansion des accolades : échec lors de l'allocation mémoire pour %u éléments" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "expansion des accolades : échec de l'allocation mémoire pour « %s »" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "« %s » : nom d'alias non valable" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "édition de ligne non activée" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "« %s » : nom du mappage clavier invalide" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s : impossible de lire : %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "« %s » : nom de fonction inconnu" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s n'est lié à aucune touche.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s peut être appelé via " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "« %s » : impossible à délier" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "nombre de boucles" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "ceci n'a un sens que dans une boucle « for », « while » ou « until »" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Renvoie le contexte de l'appel de sous-routine actuel.\n" +" \n" +" Sans EXPR, renvoie « $ligne $nomfichier ». Avec EXPR,\n" +" renvoie « $ligne $sousroutine $nomfichier »; ces informations " +"supplémentaires\n" +" peuvent être utilisées pour fournir une trace de la pile.\n" +" \n" +" La valeur de EXPR indique le nombre de cadres d'appels duquel il faut " +"revenir en arrière\n" +" avant le cadre actuel ; le cadre supérieur est le cadre 0.\n" +" \n" +" Code de sortie :\n" +" Renvoie 0 à moins que le shell ne soit pas en train d'exécuter une " +"fonction ou que EXPR\n" +" ne soit pas valable." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "« HOME » non défini" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "trop d'arguments" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "répertoire nul" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "« OLDPWD » non défini" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "ligne %d : " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "avertissement :" + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s : utilisation :" + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s : l'option nécessite un argument" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s : argument numérique nécessaire" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s : non trouvé" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s : option non valable" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s : nom d'option non valable" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "« %s » : identifiant non valable" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "nombre octal non valable" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "nombre hexadécimal non valable" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "nombre non valable" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s : indication de signal non valable" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" +"« %s » : ce n'est pas un n° de processus ou une spécification de tâche " +"valable" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s : variable en lecture seule" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s : %s hors plage" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s hors plage" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s : tâche inexistante" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s : pas de contrôle de tâche" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "pas de contrôle de tâche" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s : restreint" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "restreint" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s : ceci n'est pas une primitive du shell" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "erreur d'écriture : %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "erreur lors de la définition de l'attribut du terminal : %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "erreur lors de la récupération de l'attribut du terminal : %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s : erreur de détermination du répertoire actuel : %s : %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s : spécification de tâche ambiguë" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "l'aide n'est pas disponible dans cette version" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s : « unset » impossible : %s est en lecture seule" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s : « unset » impossible" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s : nom d'action non valable" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s : pas d'indication de complètement" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "" +"avertissement : l'option « -F » peut fonctionner différemment de ce à quoi " +"vous vous attendez" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "" +"avertissement : l'option « -C » peut fonctionner différemment de ce à quoi " +"vous vous attendez" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "fonction de complétion actuellement non en cours d'exécution" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "utilisable seulement dans une fonction" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s : la variable de référence ne peut pas être un tableau" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s : références bouclées sur la même variable interdites" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s : référence de nom circulaire" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "« %s » : nom de variable invalide pour une référence de nom" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "« -f » ne peut pas être utilisé pour fabriquer des fonctions" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s : fonction en lecture seule" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" +"%s : l'assignation d'un tableau composé entre apostrophes est dépréciée" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s : impossible de détruire des variables tableaux de cette façon" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s : impossible de convertir un tableau indexé en tableau associatif" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "chargement dynamique non disponible" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "impossible d'ouvrir l'objet partagé %s : %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "impossible de trouver %s dans l'objet partagé %s : %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s : non chargé dynamiquement" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "la fonction de chargement de %s retourne un échec (%d) : pas chargé" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s : non chargé dynamiquement" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s : impossible d'effacer : %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s : ceci est un répertoire" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s : ceci n'est pas un fichier régulier" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s : le fichier est trop grand" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s : ne peut exécuter le fichier binaire" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s : impossible d'exécuter : %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "déconnexion\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "ce n'est pas un shell de connexion : utilisez « exit »" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Il y a des tâches stoppées.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Il y a des tâches en cours d'exécution.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "aucune commande trouvée" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "indication d'historique" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s : impossible d'ouvrir le fichier temporaire : %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "courant" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "tâche %d démarrée sans contrôle de tâche" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s : option non permise -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s : l'option nécessite un argument -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hachage désactivé" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s : table de hachage vide\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "occurrences\tcommande\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Commandes du shell correspondant au mot-clé « " +msgstr[1] "Commandes du shell correspondant aux mots-clés « " + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"Aucune rubrique d'aide ne correspond à « %s ». Essayez « help help », « man -" +"k %s » ou « info %s »." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s : impossible d'ouvrir : %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Ces commandes de shell sont définies de manière interne. Saisissez « help » " +"pour voir cette liste.\n" +"Tapez « help nom » pour en savoir plus sur la fonction qui s'appelle « nom " +"».\n" +"Utilisez « info bash » pour en savoir plus sur le shell en général.\n" +"Utilisez « man -k » ou « info » pour en savoir plus sur les commandes qui\n" +"ne font pas partie de cette liste.\n" +"\n" +"Une astérisque (*) à côté d'un nom signifie que la commande est désactivée.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "impossible d'utiliser plus d'une option parmi « -anrw »" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "position dans l'historique" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s : horodatage non valable" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s : l'expansion de l'historique a échoué" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s : « inlib » a échoué" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "pas d'autre option permise avec « -x »" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" +"%s : les arguments doivent être des identifiants de tâche ou de processus" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Erreur inconnue" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "une expression est attendue" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s : n'est pas un tableau indexé" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s : spécification de descripteur de fichier non valable" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d : descripteur de fichier non valable : %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s : nombre de lignes non valable" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s : origine de tableau non valable" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s : quantum de callback non valable" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "nom de variable tableau vide" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "nécessité de prise en charge des variables tableaux" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "« %s » : caractère de format manquant" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "« %c » : spécification de format d'heure incorrecte" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "« %c » : caractère de format non permis" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "avertissement : %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "problème d'analyse du format : %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "chiffre hexadécimal manquant pour \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "chiffre unicode manquant pour \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "pas d'autre répertoire" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s : argument non valable" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "pile de répertoire vide" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "indice de pile de répertoire" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Affiche la liste des répertoires actuellement mémorisés. Les répertoires\n" +" sont insérés dans la liste avec la commande « pushd ». Vous pouvez " +"remonter\n" +" dans la liste en enlevant des éléments avec la commande « popd ».\n" +" \n" +" Options :\n" +" -c\tefface la pile des répertoires en enlevant tous les éléments.\n" +" -l\tn'affiche pas les versions raccourcies (avec ~) des répertoires\n" +" \trelativement à votre répertoire personnel\n" +" -p\taffiche la pile des répertoires avec un élément par ligne\n" +" -v\taffiche la pile des répertoires avec un élément par ligne préfixé\n" +" \tavec la position dans la pile\n" +" \n" +" Arguments :\n" +" +N\tAffiche le Nième élément en comptant de zéro depuis la gauche de la\n" +" liste affichée par « dirs » lorsque celle-ci est appelée sans option.\n" +" \n" +" -N\tAffiche le Nième élément en comptant de zéro depuis la droite de la\n" +" liste affichée par « dirs » lorsque celle-ci est appelée sans option." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Ajoute un répertoire en haut de la pile des répertoires, ou permute\n" +" la pile de façon que le répertoire en haut de la pile devienne\n" +" le nouveau répertoire de travail. S'il n'y a pas d'argument, les deux\n" +" répertoires en haut de la pile sont échangés.\n" +" \n" +" Options :\n" +" -n\tNe change pas de répertoire de travail lorsque des répertoires\n" +" \tsont ajoutés à la pile, de façon que seule la pile soit manipulée\n" +" \n" +" Arguments :\n" +" +N\tPermute la pile de façon que le Nième répertoire se place en haut,\n" +" \ten comptant de zéro depuis la gauche de la liste fournie par « dirs " +"».\n" +" \n" +" -N\tPermute la pile de façon que le Nième répertoire se place en haut,\n" +" \ten comptant de zéro depuis la droite de la liste fournie par « dirs " +"».\n" +" \n" +" dir\tAjoute le répertoire DIR en haut de la pile, et en fait le " +"nouveau\n" +" \trépertoire de travail.\n" +" \n" +" Vous pouvez voir la pile des répertoires avec la commande « dirs »." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Enlève des éléments de la pile des répertoires. S'il n'y a pas\n" +" d'argument, le répertoire en haut de la pile est enlevé,\n" +" et le nouveau sommet de la pile devient le répertoire de travail.\n" +" \n" +" Options :\n" +" -n\tNe change pas de répertoire de travail lorsque des répertoires\n" +" \tsont enlevés de la pile, de façon que seule la pile soit manipulée.\n" +" \n" +" Arguments :\n" +" +N\tEnlève le Nième répertoire, en comptant de zéro depuis la gauche\n" +" \tde la liste fournie par « dirs ». Par exemple : « popd +0 »\n" +" \tenlève le premier répertoire, « popd +1 » le deuxième.\n" +" \n" +" -N\tEnlève le Nième répertoire, en comptant de zéro depuis la droite\n" +" \tde la liste fournie par « dirs ». Par exemple : « popd -0 »\n" +" \tenlève le dernier répertoire, « popd -1 » l'avant-dernier.\n" +" \n" +" Vous pouvez voir la pile des répertoires avec la commande « dirs »." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s : spécification de délai d'expiration non valable" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "erreur de lecture : %d : %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"« return » n'est possible que depuis une fonction ou depuis un script " +"exécuté par « source »" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" +"« unset » ne peut pas s'appliquer simultanément à une fonction et à une " +"variable" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s : n'est pas une variable tableau" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s : n'est pas une fonction" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s : impossible d'exporter" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "nombre de « shift »" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "" +"les options du shell ne peuvent pas être simultanément activées et " +"désactivées" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s : nom d'option du shell non valable" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "nom de fichier nécessaire en argument" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s : fichier introuvable" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "suspension impossible" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "un shell de connexion ne peut pas être suspendu" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s est un alias vers « %s »\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s est un mot-clé du shell\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s est une fonction\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s est une primitive spéciale du shell\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s est une primitive du shell\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s est %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s est haché (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s : argument de limite non valable" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "« %c » : mauvaise commande" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s : impossible d'obtenir la limite : %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "limite" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s : impossible de modifier la limite : %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "nombre octal" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "« %c » : opérateur de mode symbolique non valable" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "« %c » : caractère de mode symbolique non valable" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " ligne " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "dernière commande : %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Annulation…" + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:462 +msgid "unknown command error" +msgstr "erreur de commande inconnue" + +#: error.c:463 +msgid "bad command type" +msgstr "mauvais type de commande" + +#: error.c:464 +msgid "bad connector" +msgstr "mauvais connecteur" + +#: error.c:465 +msgid "bad jump" +msgstr "mauvais saut" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s : variable sans liaison" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aattente de données expirée : déconnexion automatique\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "l'entrée standard ne peut pas être redirigée depuis /dev/null : %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT : « %c » : caractère de format non valable" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] existe encore" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "erreur de tube" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" +"eval : dépassement de la profondeur maximum d'imbrication d'évaluations (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" +"%s : dépassement de la profondeur maximum d'imbrication de sources (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" +"%s : dépassement de la profondeur maximum d'imbrication de fonctions (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" +"%s : restriction : « / » ne peut pas être spécifié dans un nom de commande" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s : commande introuvable" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s : %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s : %s : mauvais interpréteur" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s : impossible d'exécuter le fichier binaire : %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "« %s » : est une primitive spéciale" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "impossible de dupliquer le fd %d vers le fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "dépassement du niveau de récursivité dans l'expression" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "débordement négatif de la pile de récursivité" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "erreur de syntaxe dans l'expression" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "tentative d'affectation à une non-variable" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "erreur de syntaxe dans l'affectation d'une variable" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "division par 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "bogue : mauvais symbole pour expassign" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "« : » attendu pour une expression conditionnelle" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "exposant négatif" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "identifiant attendu après un pré-incrément ou un pré-décrément" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "« ) » manquante" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "erreur de syntaxe : opérande attendu" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "erreur de syntaxe : opérateur arithmétique non valable" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s : %s (le symbole erroné est « %s »)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "base arithmétique non valable" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s : nombre de lignes non valable" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "valeur trop grande pour la base" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s : erreur d'expression\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd : ne peut accéder aux répertoires parents" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "impossible de réinitialiser le mode « nodelay » pour le fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"impossible d'allouer un nouveau descripteur de fichier pour l'entrée de bash " +"depuis le fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input : le tampon existe déjà pour le nouveau fd %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline : pgrp pipe" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "le processus cloné n°%d apparaît dans la tâche en fonctionnement %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "suppression de la tâche stoppée %d avec le groupe de processus %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process : pid %5ld (%s) signalé toujours en vie" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid : %ld : n° de processus inexistant" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Fini" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Stoppé" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Stoppé(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "En cours d'exécution" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Fini(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Termine %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "État inconnu" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(core dumped)" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd : %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "fils setpgid (%ld à %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait : le processus n°%ld n'est pas un fils de ce shell" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for : Aucun enregistrement du processus n°%ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job : la tâche %d est stoppée" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s : tâche inexistante" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s : la tâche s'est terminée" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s : la tâche %d est déjà en arrière plan" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld : activation de WNOHANG pour éviter un blocage définitif" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s : ligne %d : " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (core dumped)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(maintenant, wd : %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control : getpgrp a échoué" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control : pas de contrôle de tâche en tâche de fond" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control : discipline de ligne" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control : setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "impossible de régler le groupe de processus du terminal (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "pas de contrôle de tâche dans ce shell" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc : échec de l'assertion : %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc : %s:%d : assertion manquée\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "inconnu" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc : bloc écrasé sur liste libre" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free : appelé avec un bloc déjà libéré comme argument" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free : appelé avec un bloc non alloué comme argument" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free : débordement négatif détecté ; « mh_nbytes » est hors plage" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free : débordement négatif détecté ; « mh_nbytes » est hors plage" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free : les tailles de fragment au début et à la fin sont différentes" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc : appelé avec un bloc non alloué comme argument" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc : débordement négatif détecté ; « mh_nbytes » est hors plage" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc : débordement négatif détecté ; « mh_nbytes » est hors plage" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "" +"realloc : les tailles de fragment au début et à la fin sont différentes" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc : la table d'allocation est pleine avec FIND_ALLOC ?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc : %p déjà alloué selon la table ?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free : %p déjà libre selon la table ?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "base non valable" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s : hôte inconnu" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: service non valable" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s : mauvaise spécification de chemin réseau" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "opérations sur le réseau non prises en charge" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale : LC_ALL : impossible de changer le paramètre de langue (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "" +"setlocale : LC_ALL : impossible de changer le paramètre de langue (%s) : %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale : %s : impossible de changer le paramètre de langue (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "" +"setlocale : %s : impossible de changer le paramètre de langue (%s) : %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Vous avez du courrier dans $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Vous avez du nouveau courrier dans $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Le courrier dans %s a été lu\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "erreur de syntaxe : expression arithmétique nécessaire" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "erreur de syntaxe : « ; » non attendu" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "erreur de syntaxe : « ((%s)) »" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document : le type d'instruction %d est incorrect" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"« here-document » à la ligne %d délimité par la fin du fichier (au lieu de « " +"%s »)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection : l'instruction de redirection « %d » est hors plage" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) dépasse SIZE_MAX (%lu): ligne " +"tronquée" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "nombre maximum de documents en ligne (« here-document ») dépassé" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "" +"fin de fichier (EOF) prématurée lors de la recherche du « %c » correspondant" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "fin de fichier (EOF) prématurée lors de la recherche de « ]] »" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" +"erreur de syntaxe dans une expression conditionnelle : symbole « %s » " +"inattendu" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "erreur de syntaxe dans une expression conditionnelle" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "symbole inattendu « %s » au lieu de « ) »" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "« ) » attendu" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argument inattendu « %s » pour l'opérateur conditionnel à un argument" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "argument inattendu pour l'opérateur conditionnel à un argument" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "symbole « %s » trouvé à la place d'un opérateur binaire conditionnel" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "opérateur binaire conditionnel attendu" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argument « %s » inattendu pour l'opérateur binaire conditionnel" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "argument inattendu pour l'opérateur binaire conditionnel" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "symbole « %c » inattendu dans la commande conditionnelle" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "symbole « %s » inattendu dans la commande conditionnelle" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "symbole « %d » inattendu dans la commande conditionnelle" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "erreur de syntaxe près du symbole inattendu « %s »" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "erreur de syntaxe près de « %s »" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "erreur de syntaxe : fin de fichier prématurée" + +#: parse.y:6365 +msgid "syntax error" +msgstr "erreur de syntaxe" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Utilisez « %s » pour quitter le shell.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "" +"fin de fichier (EOF) prématurée lors de la recherche d'une « ) » " +"correspondante" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "complètement : fonction « %s » non trouvée" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: boucle de ré-essai possible" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert : %s : NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command : mauvais connecteur « %d »" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set : %d : descripteur de fichier non valable" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set : pointeur de fichier NULL" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf : « %c » : caractère de format invalide" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "descripteur de fichier hors plage" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s : redirection ambiguë" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s : impossible d'écraser le fichier existant" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s : restreint : impossible de rediriger la sortie" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "" +"impossible de créer un fichier temporaire pour le « here-document » : %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s : impossible d'affecter le descripteur de fichier à la variable" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port non pris en charge sans réseau" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "" +"erreur de redirection : impossible de dupliquer le descripteur de fichier" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "« /tmp » introuvable, veuillez le créer !" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "« /tmp » doit être un nom de répertoire valable" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "le mode d'affichage amélioré est ignoré dans les shells interactifs" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c : option non valable" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "impossible de changer le uid en %d : uid effectif %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "impossible de changer le gid en %d: gid effectif %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "impossible de démarrer le débogueur: mode déboguage désactivé" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s : Ceci est un répertoire" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Je n'ai pas de nom !" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, version %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Utilisation :\t%s [option longue GNU] [option] ...\n" +"\t%s [option longue GNU] [option] fichier-script ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Options longues GNU :\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Options du shell :\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD ou -c commande ou -O shopt_option\t\t(invocation seulement)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ou -o option\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Pour en savoir plus sur les options du shell, saisissez « %s -c \"help set\" " +"».\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Pour en savoir plus sur les primitives du shell, saisissez « %s -c help ».\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Utilisez la commande « bashbug » pour faire un rapport de bogue.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "page d'accueil de bash : \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Aide générale sur l'utilisation de logiciels GNU : \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask : %d : opération non valable" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Signal falsifié" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Raccroche" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Interrompt" + +#: siglist.c:58 +msgid "Quit" +msgstr "Quitte" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Instruction incorrecte" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "trace/trap BPT" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Instruction ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "Instruction EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Exception en virgule flottante" + +#: siglist.c:86 +msgid "Killed" +msgstr "Tué" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Erreur de bus" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Erreur de segmentation" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Mauvais appel système" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Tube brisé" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Horloge d'alarme" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Terminé" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Condition d'E/S urgente" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Stoppé (signal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Continue" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Mort ou arrêt du fils" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Stoppé (entrée tty)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Stoppé (sortie tty)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "E/S prête" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Limite CPU" + +#: siglist.c:154 +msgid "File limit" +msgstr "Limite fichier" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarme (virtuelle)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarme (profile)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Fenêtre changée" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Verrou d'enregistrement" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Signal utilisateur 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Signal utilisateur 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "données d'entrée HFT en attente" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "coupure d'alimentation imminente" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "panne système imminente" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "migration processus vers un autre CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "erreur de programmation" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "Mode de surveillance HFT accordé" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "Mode de surveillance HFT rétracté" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "Séquence de son HFT terminée" + +#: siglist.c:214 +msgid "Information request" +msgstr "Demande d'information" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Signal n°%d inconnu" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "Mauvaise substitution : pas de « %s » de fermeture dans %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s : impossible d'affecter une liste à un élément de tableau" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "impossible de fabriquer un tube pour une substitution de processus" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "impossible de fabriquer un fils pour une substitution de processus" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "impossible d'ouvrir le tube nommé « %s » en lecture" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "impossible d'ouvrir le tube nommé « %s » en écriture" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "impossible de dupliquer le tube nommé « %s » vers le fd %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "substitution de commande: octet nul ignoré en entrée" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "impossible de fabriquer un tube pour une substitution de commande" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "" +"impossible de fabriquer un processus fils pour une substitution de commande" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute : impossible de dupliquer le tube vers le fd 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s : nom de variable invalide pour une référence de nom" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s : expansion indirecte invalide" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: nom de variable invalide" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s : paramètre non défini" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s : paramètre vide ou non défini" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s : expression de sous-chaîne négative" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s : mauvaise substitution" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s : affectation impossible de cette façon" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"les versions futures du shell forceront l'évaluation comme une substitution " +"arithmétique" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "mauvais remplacement : pas de « ` » de fermeture dans %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "pas de correspondance : %s" + +#: test.c:147 +msgid "argument expected" +msgstr "argument attendu" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s : nombre entier attendu comme expression" + +#: test.c:265 +msgid "`)' expected" +msgstr "« ) » attendue" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "« ) » attendue au lieu de %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s : opérateur binaire attendu" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s : opérateur unaire attendu" + +#: test.c:881 +msgid "missing `]'" +msgstr "« ] » manquant" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "erreur de syntaxe : « ; » non attendu" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "numéro de signal non valable" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" +"gestionnaire trap : dépassement de la profondeur maximum du gestionnaire " +"« trap » (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps : mauvaise valeur dans trap_list[%d] : %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps : le gestionnaire de signal est SIG_DFL, renvoi de %d (%s) " +"à moi-même" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler : mauvais signal %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "erreur lors de l'importation de la définition de fonction pour « %s »" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "niveau de shell trop élevé (%d), initialisation à 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "" +"make_local_variable : aucun contexte de fonction dans le champ d'application " +"actuel" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s : la variable ne peut se voir assigner une valeur" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s : assigne un entier à la référence de nom" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "" +"all_local_variables : aucun contexte de fonction dans le champ d'application " +"actuel" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s a un « exportstr » nul" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "caractère %d non valable dans « exportstr » pour %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "pas de « = » dans « exportstr » pour %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context : le début de « shell_variables » n'est pas un contexte de " +"fonction" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context : aucun contexte à « global_variables »" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope : le début de « shell_variables » n'est pas un champ d'application " +"temporaire d'environnement" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s : %s : impossible d'ouvrir comme FILE" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s : %s : valeur de compatibilité hors plage" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2012 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licence GPLv3+ : GNU GPL version 3 ou ultérieure \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, version %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"Ceci est un logiciel libre ; vous être libre de le modifier et de le " +"redistribuer." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "AUCUNE GARANTIE n'est fournie, dans les limites permises par la loi." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s : impossible d'allouer %lu octets (%lu octets alloués)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s : impossible d'allouer %lu octets" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s : %s:%d : impossible d'allouer %lu octets (%lu octets alloués)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s : %s:%d : impossible d'allouer %lu octets" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nom[=valeur] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] nom [nom ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPSVX] [-m keymap] [-f nomfichier] [-q nom] [-u nom] [-r " +"seqtouche] [-x seqtouche:commande-shell] [seqtouche:fonction-readline ou " +"commande-readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [rép]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] commande [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [nom[=valeur] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nom[=valeur] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [option] nom[=valeur] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f nomfichier] [nom ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts chaineopts nom [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a nom] [commande [arguments ...]] [redirection ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e ename] [-lnr] [premier] [dernier] ou fc -s [motif=nouveau] [commande]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [job_spec ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p nomchemin] [-dt] [nom ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [motif ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d décalage] [n] ou history -anrw [nomfichier] ou history -ps " +"arg [arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobspec ...] ou jobs -x commande [args]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... ou kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a tableau] [-d delim] [-i texte] [-n ncars] [-N ncars] [-p " +"prompt] [-t timeout] [-u fd] [nom ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nom-option] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [nom ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [nom[=valeur] ...] ou export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [nom[=valeur] ...] ou readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source nom_fichier [arguments]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". nom_fichier [arguments]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signal_spec ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] nom [nom ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mode]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOM [in MOTS ... ] ; do COMMANDES; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do COMMANDES; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NOM [in MOTS ... ;] do COMMANDES; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case MOT in [MOTIF [| MOTIF]...) COMMANDES ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMMANDES; then COMMANDES; [ elif COMMANDES; then COMMANDES; ]... [ else " +"COMMANDES; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMMANDES; do COMMANDES; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMMANDES; do COMMANDES; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NOM] commande [redirections]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function nom { COMMANDES ; } ou nom () { COMMANDES ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ COMMANDES ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( expression ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ expression ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Noms et significations de certaines variables du shell" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | rép]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [nom_opt ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [arguments]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G " +"motif_glob] [-W liste_mots] [-F fonction] [-C commande] [-X motif_filtre] [-" +"P prefixe] [-S suffixe] [nom ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G motif_glob] [-W " +"liste_mots] [-F fonction] [-C commande] [-X motif_filtre] [-P prefixe] [-S " +"suffixe] [mot]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o option] [-DEI] [nom ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d délim] [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C " +"callback] [-c quantum] [tableau]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d delim] [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C " +"callback] [-c quantum] [tableau]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Définit ou affiche des alias.\n" +" \n" +" Sans argument, « alias » affiche la liste des alias dans le format " +"réutilisable\n" +" « alias NOM=VALEUR » sur la sortie standard.\n" +" \n" +" Sinon, un alias est défini pour chaque NOM dont la VALEUR est donnée.\n" +" Une espace à la fin de la VALEUR entraîne la vérification du mot suivant " +"pour\n" +" déterminer si un alias doit être remplacé lorsque l'alias est " +"développé.\n" +" \n" +" Options :\n" +" -p\tAffiche tous les alias actuels dans un format réutilisable\n" +" \n" +" Code de sortie :\n" +" « alias » renvoie la valeur vraie à moins que NOM ne soit fourni et que " +"celui-ci n'aie\n" +" pas d'alias." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Enlève chaque NOM de la liste des alias actuels.\n" +" \n" +" Options :\n" +" -a\tretire toutes les définitions d'alias\n" +" \n" +" Renvoie le code de succès à moins que NOM ne soit pas un alias existant." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Définit les associations de touches et les variables de « Readline ».\n" +" \n" +" Associe une séquence de touches à une fonction « Readline » ou une " +"macro, ou définit une\n" +" variable « Readline ». La syntaxe des arguments non-options est " +"équivalente à celle\n" +" du fichier ~/.inputrc, mais doivent être transmis comme arguments " +"uniques :\n" +" ex : bind '\"\\C-x\\C-r\" : re-read-init-file'.\n" +" \n" +" Options :\n" +" -m keymap Utilise KEYMAP comme mappage clavier pendant la\n" +" durée de cette commande. Des noms de mappage " +"valables\n" +" sont « emacs », « emacs-standard », « emacs-meta " +"», \n" +" « emacs-ctlx », « vi », « vi-move », « vi-command » " +"et\n" +" « vi-insert ».\n" +" -l Affiche les noms de fonctions.\n" +" -P Affiche les noms et associations des fonctions.\n" +" -p Affiche les fonctions et associations dans une " +"forme qui\n" +" peut être réutilisée comme entrée.\n" +" -S Affiche les séquences de touches qui invoquent des " +"macros,\n" +" et leurs valeurs.\n" +" -s Affiche les séquences de touches qui invoquent des " +"macros,\n" +" et leurs valeurs sous une forme qui peut être " +"utilisée comme entrée.\n" +" -V Affiche les noms et valeurs des variables\n" +" -v Affiche les noms et valeurs des variables dans une " +"forme qui peut\n" +" être réutilisée comme entrée.\n" +" -q nom-fonction Permet de savoir quelles touches appellent la " +"fonction.\n" +" -u nom-fonction Enlève toutes les associations de touches liée à la " +"fonction.\n" +" -r seqtouche Enlève l'association pour « seqtouche ».\n" +" -f nomfichier Lit l'association de touches depuis NOMFICHIER.\n" +" -x seqtouche:commande-shell\tEntraîne l'exécution de la commande-" +"shell\n" +" \t\t\t\tlorsque « seqtouche » est entrée.\n" +" -X Liste les séquences de touches liées à -x et les " +"commandes associées\n" +" sous une forme qui peut être réutilisée comme " +"entrée.\n" +" \n" +" Code de sortie :\n" +" « bind » renvoie 0 à moins qu'une option non reconnue ne soit donnée ou " +"qu'une erreur survienne." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Sort des boucles for, while, ou until.\n" +" \n" +" Sort d'une boucle FOR, WHILE ou UNTIL. Si N est spécifié, sort de N " +"boucles\n" +" imbriquées.\n" +" \n" +" Code de retour :\n" +" Le code de retour est 0 à moins que N ne soit pas supérieur ou égal à 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Reprend l'exécution des boucles for, while ou until.\n" +" \n" +" Reprend l'itération suivante de la boucle FOR, WHILE ou UNTIL de niveau " +"supérieur.\n" +" Si N est précisé, reprend à la N-ième boucle supérieure.\n" +" \n" +" Code de sortie :\n" +" Le code de sortie est 0 à moins que N ne soit pas supérieur ou égale à 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Exécute des commandes shell intégrées.\n" +" \n" +" Exécute SHELL-BUILTIN avec les arguments ARGs sans effectuer de " +"recherche\n" +" de commande. Ceci est utile lorsque vous souhaitez remplacer une " +"commande\n" +" intégrée par une fonction shell, mais nécessite d'exécuter la commande " +"intégrée\n" +" dans la fonction.\n" +" \n" +" Code de retour :\n" +" Renvoie le code de retour de SHELL-BUILTIN, ou false si SHELL-BUILTIN " +"n'est\n" +" pas une commande intégrée." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Renvoie le contexte de l'appel de sous-routine actuel.\n" +" \n" +" Sans EXPR, renvoie « $ligne $nomfichier ». Avec EXPR,\n" +" renvoie « $ligne $sousroutine $nomfichier »; ces informations " +"supplémentaires\n" +" peuvent être utilisées pour fournir une trace de la pile.\n" +" \n" +" La valeur de EXPR indique le nombre de cadres d'appels duquel il faut " +"revenir en arrière\n" +" avant le cadre actuel ; le cadre supérieur est le cadre 0.\n" +" \n" +" Code de sortie :\n" +" Renvoie 0 à moins que le shell ne soit pas en train d'exécuter une " +"fonction ou que EXPR\n" +" ne soit pas valable." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Change le répertoire de travail du shell.\n" +" \n" +" Change le répertoire actuel vers DIR. Le répertoire DIR par défaut\n" +" est donné par la variable « HOME » du shell.\n" +" \n" +" La variable CDPATH définit le chemin de recherche du répertoire " +"contenant\n" +" DIR. Les noms de répertoires alternatifs dans CDPATH sont séparés par un " +"deux-point « : ».\n" +" Un nom de répertoire vide est identique au répertoire actuel. Si DIR " +"commence\n" +" avec une barre oblique « / », alors CDPATH n'est pas utilisé.\n" +" \n" +" Si le répertoire n'est pas trouvé et que l'option « cdable_vars » du " +"shell est définie,\n" +" alors le mot est supposé être un nom de variable. Si la variable possède " +"une valeur,\n" +" alors cette valeur est utilisée pour DIR.\n" +" \n" +" Options :\n" +" -L\tforce le suivi des liens symboliques : résout les liens " +"symboliques dans\n" +" \t\tDIR après le traitement des instances de « .. »\n" +" -P\tutilise la structure physique des répertoires sans suivre les " +"liens\n" +" \t\tsymboliques : résout les liens symboliques dans DIR avant le " +"traitement des\n" +" \t\tinstances de « .. »\n" +" -e\tsi l'option -P est fournie et que le répertoire de travail actuel " +"ne peut pas\n" +" \t\têtre déterminé avec succès, alors sort avec un code de retour non " +"nul\n" +" -@ sur les systèmes qui le supporte, présente un fichier avec des " +"attributs\n" +" \t\tétendus comme un répertoire contenant les attributs du fichier\n" +" \n" +" Le comportement par défaut est de suivre les liens symboliques, comme si " +"« -L » était précisé.\n" +" « .. » est traité en retirant le composant immédiatement avant dans le " +"chemin jusqu'à\n" +" la barre oblique ou le début de DIR.\n" +" \n" +" Code de sortie :\n" +" Renvoie 0 si le répertoire est changé et si $PWD est correctement " +"défini\n" +" quand -P est utilisé ; sinon autre chose que 0." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Affiche le nom du répertoire de travail courant.\n" +" \n" +" Options :\n" +" -L\taffiche la valeur de $PWD s'il nomme le répertoire de travail\n" +" \t\tcourant\n" +" -P\taffiche le répertoire physique, sans aucun lien symbolique\n" +" \n" +" Par défaut, « pwd » se comporte comme si « -L » était spécifié.\n" +" \n" +" Code de retour :\n" +" Renvoie 0 à moins qu'une option non valable ne soit donnée ou que le\n" +" répertoire courant ne peut pas être lu." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Commande vide.\n" +" \n" +" Sans effet : la commande ne fait rien.\n" +" \n" +" Code de retour :\n" +" Renvoie toujours le code de succès." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Renvoie un résultat de succès.\n" +" \n" +" Code de retour :\n" +" Succès." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Renvoie un résultat d'échec.\n" +" \n" +" Code de sortie :\n" +" Toujours l'échec." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Exécute une simple commande ou affiche des informations sur les commandes.\n" +" \n" +" Lance la COMMANDE avec des ARGS en court-circuitant la recherche de " +"commande,\n" +" ou affiche des informations sur les COMMANDEs spécifiées. Ceci peut " +"être\n" +" utilisé pour invoquer des commandes sur le disque lorsqu'il y a conflit\n" +" avec une fonction portant le même nom.\n" +" \n" +" Options :\n" +" -p utilise une valeur par défaut pour CHEMIN qui garantit de " +"trouver\n" +" tous les utilitaires standards\n" +" -v affiche une description de la COMMANDE similaire à la commande " +"intégrée\n" +" « type »\n" +" -V affiche une description plus détaillée de chaque COMMANDE\n" +" \n" +" Code de retour :\n" +" Renvoie le code de sortie de la COMMANDE, ou le code d'échec si la " +"COMMANDE est introuvable." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Définit les valeurs et les attributs des variables.\n" +" \n" +" Déclare des variables et leur assigne des attributs. Si aucun NOM n'est " +"donné,\n" +" affiche les attributs et les valeurs de toutes les variables.\n" +" \n" +" Options :\n" +" -f\trestreint l'action ou l'affichage aux noms et définitions de " +"fonctions\n" +" -F\trestreint l'affichage aux noms des fonctions uniquement (avec le " +"numéro de ligne\n" +" \t\tet le fichier source lors du débogage)\n" +" -g\tcrée des variables globales lorsqu'utilisée dans une fonction " +"shell ; ignoré sinon\n" +" -p\taffiche les attributs et la valeur de chaque NOM\n" +" \n" +" Options qui définissent des attributs :\n" +" -a\tpour faire de NOMs des tableaux indexés (si pris en charge)\n" +" -A\tpour faire de NOMs des tableaux associatifs (si pris en charge)\n" +" -i\tpour assigner l'attribut « integer » aux NOMs\n" +" -l\tpour convertir la valeur de chaque NOM en minuscules lors de " +"l'affectation\n" +" -n\ttransforme NOM en une référence vers une variable nommée d'après " +"sa valeur\n" +" -r\tpour mettre les NOMs en lecture seule\n" +" -t\tpour permettre aux NOMs d'avoir l'attribut « trace »\n" +" -u\tpour convertir les NOMs en majuscules lors de l'affectation\n" +" -x\tpour permettre aux NOMs de s'exporter\n" +" \n" +" Utiliser « + » au lieu de « - » pour désactiver l'attribut.\n" +" \n" +" Les variables avec l'attribut « integer » ont une évaluation " +"arithmétique (voir\n" +" la commande « let ») effectuée lorsqu'une valeur est affectée à la " +"variable.\n" +" \n" +" Lorsqu'utilisée dans une fonction, « declare » permet aux NOMs d'être " +"locaux,\n" +" comme avec la commande « local ». L'option « -g » supprime ce " +"comportement.\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès à moins qu'une option non valable soit fournie " +"ou qu'une\n" +" erreur survienne lors de l'assignation d'une variable." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Définit des valeurs et des attributs de variables.\n" +" \n" +" Un synonyme de « déclare ». Consultez « help declare »." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Définit des variables locales.\n" +" \n" +" Crée une variable locale nommée NOM, avec une valeur VALEUR. OPTION " +"peut\n" +" être n'importe quelle option acceptée par « declare ».\n" +" \n" +" Les variables locales peuvent seulement être utilisées à l'intérieur " +"d'une\n" +" fonction; elles ne sont visibles que dans les fonctions où elles ont " +"été\n" +" définies et dans leurs fonctions filles.\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"fournie,\n" +" qu'une erreur survienne lors de l'assignation d'une variable, ou que le " +"shell\n" +" n'exécute pas une fonction." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Écrit les arguments sur la sortie standard.\n" +" \n" +" Affiche les ARGs, séparés par une espace, sur la sortie standard, " +"suivis\n" +" d'un retour à la ligne.\n" +" \n" +" Options :\n" +" -n\tn'ajoute pas de saut de ligne\n" +" -e\tactive l'interprétation des barres contre-obliques d'échappement " +"ci-dessous\n" +" -E\tsupprime explicitement l'interprétation des barres contre-obliques " +"d'échappement\n" +" \n" +" « echo » interprète les caractères suivants comme des séquences " +"d'échappement :\n" +" \\a\talerte (cloche)\n" +" \\b\tretour arrière\n" +" \\c\tsupprime la suite de la sortie\n" +" \\e\tcaractère échap.\n" +" \\E\tcaractère échap.\n" +" \\f\tsaut de page\n" +" \\n\tsaut de ligne\n" +" \\r\tretour chariot\n" +" \\t\ttabulation horizontale\n" +" \\v\ttabulation verticale\n" +" \\\\\tbarre contre-oblique\n" +" \\0nnn\tle caractère dont le code ASCII est NNN (en octal). NNN peut " +"être\n" +" \t\tlong de 0 à 3 chiffres octaux\n" +" \\xHH\tle caractère sur 8 bits dont la valeur est HH (hexadécimal). " +"HH\n" +" \t\tpeut être composé de 1 ou 2 chiffres hexadécimaux\n" +" \t\tHHHH peut être composé de un à quatre chiffres hexadécimaux.\n" +" \\UHHHHHHHH le caractère Unicode dont la valeur est la valeur " +"hexadécimale\n" +" \t\tHHHHHHHH. HHHHHHHH peut avoir un à huit chiffres hexadécimaux.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'une erreur d'écriture survienne." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Écrit des arguments sur la sortie standard.\n" +" \n" +" Affiche les ARGs sur la sortie standard, suivis d'un retour à la ligne.\n" +" \n" +" Options :\n" +" -n\tpas de retour à la ligne\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'une erreur d'écriture survienne." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Active et désactive les commandes intégrées.\n" +" \n" +" Active et désactive les commandes intégrées du shell. Les désactiver " +"vous permet\n" +" d'exécuter une commande du disque ayant le même nom qu'une commande du " +"shell\n" +" sans utiliser le chemin complet vers le fichier.\n" +" \n" +" Options :\n" +" -a\taffiche la liste des commandes intégrées et leur état " +"d'activation\n" +" -n\tdésactive chaque NOM ou affiche la liste des commandes " +"désactivées\n" +" -p\taffiche la liste des commandes dans un format réutilisable\n" +" -s\taffiche seulement les noms des commandes Posix de type « special " +"»\n" +" \n" +" Options contrôlant le chargement dynamique :\n" +" -f\tCharge la commande intégrée NOM depuis la bibliothèque partagée " +"FILENAME\n" +" -d\tDécharge une commande chargée avec « -f »\n" +" \n" +" S'il n'y a pas d'option, chaque commande NOM est activée.\n" +" \n" +" Pour utiliser le « test » trouvé dans $PATH au lieu de celui intégré au " +"shell,\n" +" saisissez « enable -n test ».\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins que NOM ne soit pas une commande " +"intégrée ou qu'une erreur ne survienne." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Exécute des arguments comme s'ils étaient une commande du shell.\n" +" \n" +" Combine des ARGs en une chaîne unique, utilise le résultat comme entrée " +"du shell,\n" +" puis exécute la commande résultante.\n" +" \n" +" Code de sortie :\n" +" Renvoie le même code de sortie que la commande, ou le code de succès si " +"la commande est vide." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Analyse les options en arguments.\n" +" \n" +" « getopts » est utilisé par les procédures du shell pour analyser les \n" +" paramètres de position.\n" +" \n" +" OPTSTRING contient les lettres d'options qui devront être reconnues ;\n" +" si une lettre est suivie par un deux-points, elle devra posséder un\n" +" argument séparé d'elle par une espace.\n" +" \n" +" À chaque fois qu'elle est appelée, « getopts » place l'option suivante\n" +" dans la variable de shell « $nom », en l'initialisant si elle n'existe " +"pas,\n" +" et place l'index de l'argument suivant dans la variable de shell " +"OPTIND.\n" +" OPTIND est initialisé à 1 à chaque fois que le shell ou qu'un script " +"shell\n" +" est appelé. Lorsqu'une option nécessite un argument, « getopts » place " +"cet\n" +" argument dans la variable de shell OPTARG.\n" +" \n" +" « getopts » signale les erreurs de deux manières. Si le premier " +"caractère\n" +" d'OPTSTRING est un deux-points, « getopts » utilise un signalement " +"d'erreur\n" +" silencieux. Dans ce mode aucun message d'erreur n'est affiché. Si une " +"option\n" +" incorrecte est rencontrée, « getopts » place dans OPTARG le caractère " +"d'option\n" +" trouvé. Si un argument nécessaire n'est pas trouvé, « getopts » place un " +"« : »\n" +" dans NOM et place dans OPTARG le caractère d'option trouvé. Si « " +"getopts »\n" +" n'est pas en mode silencieux et qu'une option incorrecte est rencontrée, " +"il\n" +" place « ? » dans NAME et efface OPTARG. Si un argument nécessaire n'est " +"pas\n" +" trouvé, un « ? » est placé dans NAME, OPTARG est effacé et un message " +"de\n" +" diagnostic est affiché.\n" +" \n" +" Si la variable de shell OPTERR possède la valeur 0, « getopts » " +"désactive\n" +" l'affichage des messages d'erreur, même si le premier caractère " +"d'OPTSTRING\n" +" n'est pas un deux-points. OPTERR possède la valeur 1 par défaut.\n" +" \n" +" « getopts » analyse habituellement les paramètres de position ($0 - $9), " +"mais\n" +" si plus d'argument sont données, ils sont analysés à la place.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès si une option est trouvée, le code d'échec si " +"la fin des options\n" +" est rencontrée ou si une erreur survient." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Remplace le shell par la commande fournie.\n" +" \n" +" Exécute la COMMANDE, en remplaçant ce shell par le programme spécifié.\n" +" Les ARGUMENTS deviennent ceux de la COMMANDE. Si la COMMANDE n'est pas " +"fournie,\n" +" les redirections prennent effet dans le shell courant.\n" +" \n" +" Options :\n" +" -a nom\tpasse NOM comme argument numéro 0 à la COMMANDE\n" +" -c\texécute la COMMANDE avec un environnement vide\n" +" -l\tplace un tiret comme argument numéro 0 de la COMMANDE\n" +" \n" +" Si la commande ne peut pas être exécutée, un shell non-interactif se " +"termine,\n" +" à moins que l'option « execfail » ne soit définie.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins que la COMMANDE ne soit pas trouvée " +"ou\n" +" qu'une erreur de redirection ne survienne." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Termine le shell.\n" +" \n" +" Termine le shell avec le code de retour « N ». Si N est omis, le code\n" +" de retour est celui de la dernière commande exécutée." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Termine un shell de connexion.\n" +" \n" +" Termine un shell de connexion avec le code de sortie N. Renvoie une " +"erreur\n" +" s'il n'est pas exécuté dans un shell de connexion." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Affiche ou exécute des commandes issues de l'historique.\n" +" \n" +" « fc » est utilisé pour afficher ou modifier puis ré-exécuter les " +"commandes\n" +" de l'historique des commandes. PREMIER et DERNIER peuvent être des " +"nombres\n" +" indiquant la plage ou PREMIER peut être une chaîne donnant le début de " +"la\n" +" commande la plus récente recherchée.\n" +" \n" +" Options :\n" +" -e ENAME\tdéfinit quel éditeur utiliser. Par défaut il s'agit de « " +"FCEDIT »\n" +" \t\tpuis « EDITOR », puis « vi »\n" +" -l\taffiche les lignes au lieu de les éditer\n" +" -n\tn'affiche pas les numéros de ligne\n" +" -r\tinverse l'ordre des lignes (les plus récentes en premier)\n" +" \n" +" En tapant « fc -s [motif=rempl ...] [commande] », la commande est ré-" +"exécutée\n" +" après avoir effectué le remplacement ANCIEN=NOUVEAU.\n" +" \n" +" Un alias utile est « r='fc -s' » de sorte qu'en tapant « r cc »,\n" +" la dernière commande commençant par « cc » est ré-exécutée et avec « r " +"», la\n" +" dernière commande est ré-exécutée.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès ou le code de sortie de la commande exécutée ; " +"autre\n" +" chose que 0 si une erreur survient." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Déplace une tâche au premier plan.\n" +" \n" +" Place JOB_SPEC au premier plan et en fait la tâche actuelle. Si\n" +" JOB_SPEC n'est pas fourni, le shell utilise sa propre notion\n" +" de tâche actuelle.\n" +" \n" +" Code de sortie :\n" +" Celui de la commande placée au premier plan ou le code d'échec si une " +"erreur survient." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Déplace des tâches vers l'arrière plan.\n" +" \n" +" Place chaque JOB_SPEC en arrière plan comme s'il avait été démarré avec " +"« & ».\n" +" Si JOB_SPEC n'est pas fourni, le shell utilise sa propre notion\n" +" de tâche actuelle.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins que le contrôle de tâche ne soit pas " +"activé\n" +" ou qu'une erreur ne survienne." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Mémorise ou affiche l'emplacement des programmes.\n" +" \n" +" Détermine et mémorise le chemin complet de chaque commande NOM. Si\n" +" aucun argument n'est donné, une information sur les commandes mémorisées " +"est\n" +" affichée.\n" +" \n" +" Options :\n" +" -d\toublie l'emplacement mémorisé de chaque NOM\n" +" -l\taffiche dans un format qui peut être réutilisé comme entrée\n" +" -p nomchemin\tutilise NOMCHEMIN comme le chemin complet de NOM\n" +" -r\toublie tous les emplacements mémorisés\n" +" -t\taffiche l'emplacement mémorisé de chaque NOM, en précédant\n" +" \t\tchaque emplacement du NOM correspondant si plusieurs NOMS\n" +" \t\tsont donnés\n" +" Arguments :\n" +" NOM\tChaque NOM est recherché dans $PATH et ajouté à la liste\n" +" \t\tdes commandes mémorisée.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins que le NOM ne soit pas trouvé ou\n" +" qu'une option non valable ne soit donnée." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Affiche des informations sur les commandes intégrées.\n" +" \n" +" Affiche de courts résumés des commandes intégrées. Si MOTIF est\n" +" spécifié, une aide détaillée de toutes les commandes correspondantes\n" +" au MOTIF est affichée, sinon la liste des sujets d'aide est affichée.\n" +" \n" +" Options :\n" +" -d\taffiche une courte description pour chaque sujet\n" +" -m\taffiche l'aide dans un format proche des pages de man(uel)\n" +" -s\tn'affiche qu'une courte aide pour chaque sujet correspondant au\n" +" \t\tMOTIF\n" +" \n" +" Arguments :\n" +" MOTIF\tMotif spécifiant un sujet d'aide\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès à moins que le MOTIF ne soit pas trouvé ou " +"qu'une\n" +" option non valable ne soit donnée." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Affiche ou manipule l'historique.\n" +" \n" +" Affiche l'historique avec les numéros de lignes en préfixant chaque " +"élément\n" +" modifié d'un « * ». Un argument égal à N limite la liste aux N derniers " +"éléments.\n" +" \n" +" Options :\n" +" -c\tefface la liste d'historique en supprimant tous les éléments\n" +" -d offset\tefface l'élément d'historique à l'emplacement OFFSET. Un " +"offset négatif\n" +" \t\tcompte à partir de la fin de la liste de l'historique\n" +" \n" +" -a\tajoute les lignes d'historique de cette session au fichier " +"d'historique\n" +" -n\tlit toutes les lignes d'historique non déjà lues depuis le fichier " +"d'historique\n" +" \t\tet les ajoute à la liste de l'historique\n" +" -r\tlit le fichier d'historique et ajoute le contenu à la liste " +"d'historique\n" +" -w\técrit l'historique actuelle dans le fichier d'historique\n" +" \n" +" -p\teffectue un développement de l'historique sur chaque ARG et " +"affiche le résultat\n" +" \t\tsans le stocker dans la liste d'historique\n" +" -s\tajoute les ARGs à la liste d'historique comme entrée unique\n" +" \n" +" Si NOMFICHIER est donné, il est utilisé comme fichier d'historique. " +"Sinon,\n" +" si HISTFILE contient une valeur, celle-ci est utilisée, sinon ~/." +"bash_history.\n" +" \n" +" Si la variable HISTTIMEFORMAT est définie et n'est pas vide, sa valeur " +"est utilisée\n" +" comme chaîne de format pour que strftime(3) affiche l'horodatage " +"associé\n" +" à chaque entrée d'historique. Sinon, aucun horodatage n'est affiché.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'une option non valable soit donnée " +"ou\n" +" qu'une erreur ne survienne." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Affiche l'état des tâches.\n" +" \n" +" Affiche la liste des tâches actives. JOBSPEC restreint l'affichage à\n" +" cette tâche. S'il n'y a pas d'option, l'état de toutes les tâches " +"actives\n" +" est affiché.\n" +" \n" +" Options :\n" +" -l\taffiche les IDs de processus en plus des informations normales\n" +" -n\taffiche seulement les processus dont l'état a changé depuis la\n" +" \t\tdernière notification\n" +" -p\taffiche seulement les IDs de processus\n" +" -r\trestreint l'affichage aux tâches en cours d'exécution\n" +" -s\trestreint l'affichage aux tâches stoppées\n" +" \n" +" Si « -x » est fournie, la COMMANDE est lancée après que toutes les\n" +" spécifications qui apparaissent dans ARGs ont été remplacées par l'ID " +"de\n" +" processus du leader de groupe de processus de cette tâche.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"donnée\n" +" ou qu'une erreur ne survienne. Si « -x » est utilisée, le code de sortie " +"de\n" +" la COMMANDE est renvoyé." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Retire des tâches du shell courant.\n" +" \n" +" Retire chaque argument JOBSPEC de la table des tâches actives. Sans\n" +" JOBSPEC, le shell utilise sa propre notion de tâche courante.\n" +" \n" +" Options :\n" +" -a\tretire toutes les tâches si JOBSPEC n'est pas fourni\n" +" -h\tmarque chaque JOBSPEC de façon que SIGHUP ne soit pas envoyé à la " +"tâche\n" +" \t\tsi le shell reçoit un SIGHUP\n" +" -r\tretire seulement les tâches en cours de fonctionnement\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'une option ou un JOBSPEC non\n" +" valable ne soit donné." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Envoie un signal à une tâche.\n" +" \n" +" Envoie le signal nommé par SIGSPEC ou SIGNUM au processus identifié par\n" +" PID ou JOBSPEC. Si SIGSPEC et SIGNUM ne sont pas donnés, alors SIGTERM " +"est\n" +" envoyé.\n" +" \n" +" Options :\n" +" -s sig\tSIG est un nom de signal\n" +" -n sig\tSIG est un numéro de signal\n" +" -l\taffiche la liste des noms de signaux ; si des arguments suivent « -" +"l »,\n" +" \t\tils sont supposés être des numéros de signaux pour lesquels les noms " +"doivent\n" +" \t\têtre affichés\n" +" -L\tsynonyme de -l\n" +" \n" +" « kill » est une commande intégrée pour deux raisons : elle permet aux " +"IDs de\n" +" tâches d'être utilisés à la place des IDs de processus et elle permet " +"aux\n" +" processus d'être tués si la limite du nombre de processus que vous " +"pouvez créer\n" +" est atteinte.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'une option non valable soit donnée " +"ou qu'une\n" +" erreur ne survienne." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Évalue des expressions arithmétiques.\n" +" \n" +" Chaque ARG est une expression arithmétique à évaluer. L'évaluation\n" +" est faite avec des entiers de largeur fixe sans vérification de\n" +" dépassement, mais la division par zéro est interceptée et\n" +" signalée comme une erreur. La liste suivante d'opérateurs\n" +" est groupée par niveau d'égale priorité. Les niveaux sont listés\n" +" par priorité décroissante.\n" +" \n" +" \tid++, id--\tpost-incrément ou post-décrément de variable\n" +" \t++id, --id\tpré-incrément ou pré-décrément de variable\n" +" \t-, +\t\tmoins unaire, plus unaire\n" +" \t!, ~\t\tnégations logique et binaire\n" +" \t**\t\tmise en exposant\n" +" \t*, /, %\t\tmultiplication, division, reste de la division\n" +" \t+, -\t\taddition, soustraction\n" +" \t<<, >>\t\tdécalage binaire à gauche et à droite\n" +" \t<=, >=, <, >\tcomparaison\n" +" \t==, !=\t\tégalité, inégalité\n" +" \t&\t\tET binaire\n" +" \t^\t\tOU binaire exclusif\n" +" \t|\t\tOU binaire\n" +" \t&&\t\tET logique\n" +" \t||\t\tOU logique\n" +" \texpr ? expr : expr\n" +" \t\t\topérateur de condition\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\taffectation\n" +" \n" +" Les variables de shell sont autorisées comme opérandes. Le nom de la\n" +" variable est remplacé par sa valeur (contrainte à un entier de largeur\n" +" fixe) à l'intérieur d'une expression. La variable n'a pas besoin " +"d'avoir\n" +" son attribut d'entier activé pour être utilisée dans une expression.\n" +" \n" +" Les opérateurs sont évalués dans leur ordre de priorité. Les sous-" +"expressions\n" +" entre parenthèses sont évaluées en premier et peuvent être prioritaires " +"sur\n" +" les règles ci-dessus.\n" +" \n" +" Code de sortie :\n" +" Si le dernier ARG est évalué à 0, « let » renvoie 1, sinon 0 est renvoyé." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Lit une ligne depuis l'entrée standard et la découper en morceaux.\n" +" \n" +" Lit une simple ligne depuis l'entrée standard ou depuis le descripteur " +"de\n" +" fichier FD si l'option « -u » est fournie. La ligne est découpée en " +"morceaux\n" +" comme des mots, et le premier mot est assigné au premier NOM, le " +"deuxième mot\n" +" au deuxième NOM, et ainsi de suite, le dernier NOM récupérant la liste " +"des mots\n" +" restants. Seuls les caractères trouvés dans $IFS sont reconnus comme " +"délimiteurs\n" +" de mots\n" +" \n" +" Si aucun NOM n'est fourni, la ligne lue est stockée dans la variable " +"REPLY.\n" +" \n" +" Options :\n" +" -a tableau\taffecte les mots lus séquentiellement aux indices de la " +"variable\n" +" \t\ttableau ARRAY en commençant à 0\n" +" -d délim\tcontinue jusqu'à ce que le premier caractère de DELIM soit " +"lu,\n" +" \t\tau lieu du retour à la ligne\n" +" -e\t\tutilise « Readline » pour obtenir la ligne\n" +" -i texte\tUtilise TEXTE comme texte initial pour « Readline »\n" +" -n n\ttermine après avoir lu N caractères plutôt que d'attendre\n" +" \t\tun retour à la ligne, mais obéi à un délimiteur si moins de N " +"caractères\n" +" \t\tsont lus avant le délimiteur\n" +" -N n\ttermine seulement après avoir lu exactement N caractères, à " +"moins\n" +" \t\tque le caractère EOF soit rencontré ou que le délai de lecture " +"n'expire.\n" +" \t\tLes délimiteurs sont ignorés\n" +" -p prompt\taffiche la chaîne PROMPT sans retour à la ligne final, " +"avant de\n" +" \t\ttenter une lecture\n" +" -r\tne pas permettre aux barres obliques inverses de se comporter " +"comme\n" +" \t\tdes caractères d'échappement\n" +" -s\tne pas répéter l'entrée provenant d'un terminal\n" +" -t timeout\texpire et renvoie un code d'échec si une ligne d'entrée " +"complète\n" +" \t\tn'est pas lue en moins de TIMEOUT secondes. La valeur de la " +"variable TIMEOUT\n" +" \t\test le délai d'expiration par défaut. TIMEOUT peut être un nombre " +"décimal.\n" +" \t\tSi TIMEOUT est à zéro, la lecture se termine immédiatement sans " +"essayer de\n" +" \t\tlire la moindre donnée mais elle renvoie un code de succès " +"seulement\n" +" \t\tsi l'entrée est disponible sur le descripteur de fichier. Le code\n" +" \t\tde sortie est supérieur à 128 si le délai a expiré\n" +" -u fd\tlit depuis le descripteur de fichier FD plutôt que l'entrée " +"standard\n" +" \n" +" Code de sortie :\n" +" Le code de retour est 0, à moins qu'une fin de fichier ne survienne, que " +"le délai expire,\n" +" ou qu'un descripteur de fichier non valable ne soit fourni comme " +"argument à « -u »." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Termine depuis une fonction du shell.\n" +" \n" +" Entraîne l'arrêt d'une fonction ou d'un script sourcé, avec le code\n" +" de retour spécifié par N. Si N est omis, le code de retour est celui\n" +" de la dernière commande exécutée à l'intérieur de la fonction ou du\n" +" script\n" +" \n" +" Code de retour :\n" +" Renvoie N ou le code d'échec si le shell n'est pas en train d'exécuter\n" +" une fonction ou un script." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Définit ou invalide des valeurs d'options et des paramètres de position du " +"shell.\n" +" \n" +" Change la valeur des attributs du shell et des paramètres de position, " +"ou\n" +" affiche les noms et valeurs des variables du shell.\n" +" \n" +" Options :\n" +" -a Marque pour l'export toutes les variables qui sont modifiées ou " +"créées.\n" +" -b Averti immédiatement de la fin d'une tâche.\n" +" -e Termine immédiatement si une commande s'arrête avec un code de " +"retour non nul.\n" +" -f Désactive la génération de nom de fichier (globbing).\n" +" -h Mémorise l'emplacement des commandes après leur recherche.\n" +" -k Place dans l'environnement tous les arguments d'affectation pour " +"une commande,\n" +" pas seulement ceux qui précèdent le nom de la commande.\n" +" -m Active le contrôle de tâche.\n" +" -n Lit les commandes, mais ne les exécute pas.\n" +" -o nom-option\n" +" Défini la variable correspondant à nom-option :\n" +" allexport identique à -a\n" +" braceexpand identique à -B\n" +" emacs utilise une édition de ligne façon « emacs »\n" +" errexit identique à -e\n" +" errtrace identique à -E\n" +" functrace identique à -T\n" +" hashall identique à -h\n" +" histexpand identique à -H\n" +" history active l'historique des commandes\n" +" ignoreeof ne termine pas le shell à la lecture d'un « EOF " +"»\n" +" interactive-comments\n" +" permet aux commentaires d'apparaître dans les " +"commandes interactives\n" +" keyword identique à -k\n" +" monitor identique à -m\n" +" noclobber identique à -C\n" +" noexec identique à -n\n" +" noglob identique à -f\n" +" nolog actuellement accepté mais ignoré\n" +" notify identique à -b\n" +" nounset identique à -u\n" +" onecmd identique à -t\n" +" physical identique à -P\n" +" pipefail le code de retour d'un tube est celui de la " +"dernière commande\n" +" qui s'est terminée avec un code non nul,\n" +" ou zéro si aucune commande ne s'est arrêtée " +"avec un code non nul.\n" +" posix modifie le comportement de « bash » où les " +"opérations par défaut\n" +" sont différentes du standard Posix de manière à " +"correspondre au\n" +" standard\n" +" privileged identique à -p\n" +" verbose identique à -v\n" +" vi utiliser une édition de ligne façon « vi »\n" +" xtrace identique à -x\n" +" -p Option activée lorsque les n° d'identifiants utilisateurs réels " +"et effectifs ne\n" +" sont pas les mêmes. Désactive le traitement du fichier $ENV et " +"l'importation des\n" +" fonctions du shell. Désactiver cette option permet de définir " +"les uid et gid\n" +" effectifs aux valeurs des uid et gid réels.\n" +" -t Termine après la lecture et l'exécution d'une commande.\n" +" -u Traite les variables non définies comme des erreurs lors de la " +"substitution.\n" +" -v Affiche les lignes d'entrée du shell à leur lecture.\n" +" -x Affiche les commandes et leurs arguments au moment de leur " +"exécution.\n" +" -B Effectue l'expansion des accolades\n" +" -C Si défini, empêche les fichiers réguliers existants d'être " +"écrasés par une\n" +" redirection de la sortie.\n" +" -E Si défini, l'interception ERR est héritée par les fonctions du " +"shell.\n" +" -H Active la substitution d'historique façon « ! ». Ceci est actif " +"par défaut\n" +" lorsque le shell est interactif.\n" +" -P Si défini, les liens symboliques ne sont pas suivis lors de " +"l'exécution des\n" +" commandes telles que « cd » qui changent le répertoire courant.\n" +" -T Si défini, l'interception de DEBUG et RETURN est héritée par les " +"fonctions du shell.\n" +" -- Affecte tous les arguments restants aux paramètres de position.\n" +" S'il n'y a plus d'argument, les paramètres de position sont\n" +" indéfinis.\n" +" - Affecter tous les arguments restants aux paramètres de " +"position.\n" +" Les options « -x » et « -v » sont désactivées.\n" +" \n" +" Ces indicateurs peuvent être désactivés en utilisant « + » plutôt que « " +"- ». Ils peuvent\n" +" être utilisés lors de l'appel au shell. Le jeu d'indicateurs actuel peut " +"être trouvé\n" +" dans « $- ». Les n ARGs restants sont des paramètres de position et " +"sont affectés,\n" +" dans l'ordre, à $1, $2, .. $n. Si aucun ARG n'est donné, toutes les " +"variables du shell\n" +" sont affichées.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"donnée." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Annule des valeurs ou des attributs de variables et de fonctions du shell.\n" +" \n" +" Pour chaque NOM, annule la variable ou fonction correspondante.\n" +" \n" +" Options :\n" +" -f\ttraite chaque NOM comme une fonction du shell\n" +" -v\ttraite chaque NOM comme une variable du shell\n" +" -n\ttraite chaque NOM comme une référence nommée et annule la " +"variable\n" +" \t\telle-même plutôt que la variable à laquelle elle fait référence\n" +" \n" +" Sans option, « unset » essaye d'abord d'annuler une variable et, \n" +" en cas d'échec, essaye d'annuler la fonction.\n" +" \n" +" Certaines variables ne peuvent pas être annulées ; consultez aussi « " +"readonly ».\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit\n" +" donnée ou que NOM soit en lecture seule." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Définit l'attribut « export » pour des variables du shell.\n" +" \n" +" Marque chaque NOM pour exportation automatique vers l'environnement des\n" +" commandes exécutées ultérieurement. Si VALEUR est fournie, affecte la " +"VALEUR\n" +" avant l'exportation.\n" +" \n" +" Options :\n" +" -f\tse référer aux fonctions du shell\n" +" -n\tenlève la propriété d'exportation de chaque NOM\n" +" -p\taffiche une liste de toutes les variables et fonctions exportées\n" +" \n" +" L'argument « -- » désactive tout traitement postérieur d'options.\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"données\n" +" ou que NOM ne soit pas valable." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Marque des variables du shell comme non modifiables.\n" +" \n" +" Marque chaque NOM comme étant en lecture seule ; les valeurs de ces " +"NOMs\n" +" ne peuvent plus être modifiées par des affectations ultérieures. Si " +"VALEUR\n" +" est fournie, lui affecter la VALEUR avant le passage en lecture seule.\n" +" \n" +" Options :\n" +" -a\tse réfère à des variables étant des tableaux indexés\n" +" -A\tse réfère à des variables étant des tableaux associatifs\n" +" -f\tse réfère à des fonctions du shell\n" +" -p\taffiche une liste des toutes les fonctions et variables en lecture " +"seule\n" +" \t\tselon que l'option -f est fournie ou non\n" +" \n" +" Un argument « -- » désactive tout traitement postérieur d'options.\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit\n" +" donnée ou que NOM ne soit pas valable." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Décale des paramètres de position.\n" +" \n" +" Renomme les paramètres de position $N+1,$N+2 ... à $1,$2 ... Si N n'est " +"pas\n" +" donné, il est supposé égal à 1.\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès à moins que N soit négatif ou supérieur à $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Exécute des commandes depuis un fichier dans le shell actuel.\n" +" \n" +" Lit et exécute des commandes depuis NOMFICHIER dans le shell actuel. " +"Les\n" +" éléments dans $PATH sont utilisés pour trouver le répertoire contenant " +"NOMFICHIER.\n" +" Si des ARGUMENTS sont fournis, ils deviennent les paramètres de " +"position\n" +" lorsque NOMFICHIER est exécuté.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de la dernière commande exécutée dans NOMFICHIER, ou le " +"code\n" +" d'échec si NOMFICHIER ne peut pas être lu." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspend l'exécution du shell.\n" +" \n" +" Suspend l'exécution de ce shell jusqu'à ce qu'il reçoive un signal " +"SIGCONT.\n" +" À moins que ce soit forcé, les shell de connexion ne peuvent pas être " +"suspendus.\n" +" \n" +" Options :\n" +" -f\tforce la suspension, même si le shell est un shell de connexion\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès à moins que le contrôle de tâche ne soit pas " +"activé\n" +" ou qu'une erreur survienne." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Évalue une expression conditionnelle.\n" +" \n" +" Se termine avec le code de retour 0 (vrai) ou 1 (faux) selon\n" +" le résultat de l'évaluation de EXPR. Les expressions peuvent être\n" +" unaires ou binaires. Les expressions unaires sont souvent utilisées\n" +" pour examiner l'état d'un fichier. Il existe aussi des opérateurs de\n" +" chaîne, ainsi que des opérateurs de comparaison numériques.\n" +" \n" +" Le comportement de test dépend du nombre d'arguments. Consultez la " +"page\n" +" de manuel de bash pour connaître les spécifications complètes.\n" +" \n" +" Opérateurs sur des fichiers : \n" +" \n" +" -a FICHIER Vrai si le fichier existe.\n" +" -b FICHIER Vrai si le fichier est un fichier spécial de bloc.\n" +" -c FICHIER Vrai si le fichier est un fichier spécial de " +"caractères.\n" +" -d FICHIER Vrai si le fichier est un répertoire.\n" +" -e FICHIER Vrai si le fichier existe.\n" +" -f FICHIER Vrai si le fichier existe et est un fichier régulier.\n" +" -g FICHIER Vrai si le fichier est « set-group-id ».\n" +" -h FICHIER Vrai si le fichier est un lien symbolique.\n" +" -L FICHIER Vrai si le fichier est un lien symbolique.\n" +" -k FICHIER Vrai si le fichier a son bit « sticky » défini.\n" +" -p FICHIER Vrai si le fichier est un tube nommé.\n" +" -r FICHIER Vrai si le fichier est lisible par vous.\n" +" -s FICHIER Vrai si le fichier existe et n'est pas vide.\n" +" -S FICHIER Vrai si le fichier est un socket.\n" +" -t FD Vrai si FD est ouvert sur un terminal.\n" +" -u FICHIER Vrai si le fichier est « set-user-id ».\n" +" -w FICHIER Vrai si le fichier peut être écrit par vous.\n" +" -x FICHIER Vrai si le fichier est exécutable par vous.\n" +" -O FICHIER Vrai si le fichier est effectivement possédé par vous.\n" +" -G FICHIER Vrai si le fichier est effectivement possédé par votre " +"groupe.\n" +" -N FICHIER Vrai si le fichier a été modifié depuis la dernière " +"fois qu'il a été lu.\n" +" \n" +" FICHIER1 -nt FICHIER2 Vrai si le fichier1 est plus récent que le " +"fichier2 (selon la date\n" +" de modification).\n" +" \n" +" FICHIER1 -ot FICHIER2 Vrai si le fichier1 est plus vieux que le " +"fichier2.\n" +" \n" +" FICHIER1 -ef FICHIER2 Vrai si le fichier1 est un lien physique vers le " +"fichier2.\n" +" \n" +" Opérateurs sur des chaînes :\n" +" \n" +" -z CHAÎNE Vrai si la chaîne est vide.\n" +" \n" +" -n CHAÎNE\n" +" CHAÎNE Vrai si la chaîne n'est pas vide.\n" +" \n" +" CHAÎNE1 = CHAÎNE2\n" +" Vrai si les chaînes sont égales.\n" +" CHAÎNE1 != CHAÎNE2\n" +" Vrai si les chaînes ne sont pas égales.\n" +" CHAÎNE1 < CHAÎNE2\n" +" Vrai si le tri lexicographique place la chaîne1 en " +"premier.\n" +" CHAÎNE1 > CHAÎNE2\n" +" Vrai si le tri lexicographique place la chaîne1 en " +"deuxième.\n" +" \n" +" Autres opérateurs :\n" +" \n" +" -o OPTION Vrai si l'OPTION du shell est activée.\n" +" -v VAR Vrai si la variable de shell VAR est définie.\n" +" -R VAR Vrai is la variable VAR est définie est une référence " +"nommée.\n" +" ! EXPR Vrai si l'EXPRession est fausse.\n" +" EXPR1 -a EXPR2 Vrai si les deux expressions sont vraies.\n" +" EXPR1 -o EXPR2 Vrai si l'une des deux expressions est vraie.\n" +" \n" +" arg1 OP arg2 Tests arithmétiques. OP peut être -eq, -ne,\n" +" -lt, -le, -gt ou -ge.\n" +" \n" +" Les opérateurs arithmétiques binaires renvoient « vrai » si ARG1 est " +"égal,\n" +" non-égal, inférieur, inférieur ou égal, supérieur, supérieur ou égal à " +"ARG2.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès si EXPR est vraie, le code d'échec si EXPR est " +"fausse ou si\n" +" un argument non valable est donné." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Évalue une expression conditionnelle.\n" +" \n" +" Ceci est un synonyme de la primitive « test », mais le dernier argument\n" +" doit être le caractère « ] », pour fermer le « [ » correspondant." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Affiche les temps des processus.\n" +" \n" +" Affiche le cumul des temps utilisateur et système pour le shell et\n" +" tous ses processus fils.\n" +" \n" +" Code de retour :\n" +" Toujours le code de succès." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Intercepter des signaux et d'autres événements.\n" +" \n" +" Définit et active des gestionnaires à lancer lorsque le shell reçoit des " +"signaux\n" +" ou sous d'autres conditions.\n" +" \n" +" La commande ARG doit être lue et exécutée lorsque le shell reçoit le\n" +" signal SIGNAL_SPEC. Si ARG est absent (et qu'un unique SIGNAL_SPEC\n" +" est fourni) ou égal à « - », tous les signaux spécifiés sont remis\n" +" à leur valeur d'origine. Si ARG est une chaîne vide, tous les " +"SIGNAL_SPEC\n" +" sont ignorés par le shell et les commandes qu'ils appellent.\n" +" \n" +" Si SIGNAL_SPEC est EXIT (0), la commande ARG est exécutée à la sortie du " +"shell. Si un\n" +" SIGNAL_SPEC est DEBUG, ARG est exécuté après chaque commande simple. Si\n" +" un SIGNAL_SPEC est RETURN, ARG est exécuté à chaque fois qu'une fonction " +"shell ou\n" +" qu'un script lancé avec . ou source se termine. Un SIGNAL_SPEC\n" +" valant ERR permet d'exécuter ARG à chaque fois qu'un échec d'une " +"commande engendrerait\n" +" la sortie du shell lorsque l'option -e est activée.\n" +" \n" +" Si aucun argument n'est fourni, « trap » affiche la liste des commandes " +"associées\n" +" à chaque signal.\n" +" \n" +" Options :\n" +" -l\taffiche la liste des noms de signaux et leur numéro correspondant\n" +" -p\taffiche les commandes de « trap » associées à chaque SIGNAL_SPEC\n" +" \n" +" Chaque SIGNAL_SPEC est soit un nom de signal dans \n" +" ou un numéro de signal. Les noms de signaux sont insensibles à la casse " +"et\n" +" le préfixe « SIG » est facultatif. Un signal peut être envoyé au\n" +" shell avec « kill -signal $$ ».\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins que SIGSPEC ne soit pas valable ou " +"qu'une\n" +" option non valable ne soit donnée." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Affiche des informations sur le type de commande.\n" +" \n" +" Pour chaque NOM, indique comment il serait interprété s'il était\n" +" utilisé comme un nom de commande.\n" +" \n" +" Options :\n" +" -a\taffiche tous les emplacements contenant un exécutable nommé NOM;\n" +" \t\ty compris les alias, les commandes intégrées et les fonctions si et " +"seulement si\n" +" \t\tl'option « -p » n'est pas utilisée\n" +" -f\tdésactive la recherche de fonctions du shell\n" +" -P\tforce une recherche de CHEMIN pour chaque NOM, même si c'est un " +"alias,\n" +" \t\tune commande intégrée ou une fonction et renvoie le nom du fichier " +"du disque\n" +" \t\tqui serait exécuté\n" +" -p\trenvoie le nom du fichier du disque qui serait exécuté sauf si\n" +" \t\t« type -t NOM » aurait renvoyé autre chose que « file » auquel cas, " +"rien\n" +" \t\tn'est renvoyé.\n" +" -t\taffiche un mot unique parmi « alias », « keyword »,\n" +" \t\t« function », « builtin », « file » or « », si NOM est " +"respectivement un alias,\n" +" \t\tun mot réservé du shell, une fonction du shell, une commande " +"intégrée,\n" +" \t\tun fichier du disque ou un nom inconnu\n" +" \n" +" Arguments :\n" +" NOM\tNom de commande à interpréter.\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès si tous les NOMs sont trouvés, le code d'échec " +"si l'un\n" +" d'entre eux n'est pas trouvé." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modifie les limites de ressources du shell.\n" +" \n" +" Fournit un contrôle sur les ressources disponibles au shell et aux " +"processus\n" +" qu'il crée, sur les systèmes qui permettent un tel contrôle. \n" +" \n" +" Options :\n" +" -S\tutilise la limite de ressources « soft »\n" +" -H\tutilise la limite de ressources « hard »\n" +" -a\ttoutes les limites actuelles sont présentées\n" +" -b\tla taille du tampon de socket\n" +" -c\ttaille maximale des fichiers « core » créés\n" +" -d\ttaille maximale du segment de données d'un processus\n" +" -e\tla priorité maximale d'ordonnancement (« nice »)\n" +" -f\tla taille maximale des fichiers écrits par le shell et ses fils\n" +" -i\tle nombre maximal de signaux en attente\n" +" -k\tle nombre maximal de kqueues allouées pour ce processus\n" +" -l\tla taille maximale qu'un processus peut verrouiller en mémoire\n" +" -m\tla taille maximale de « set » résident\n" +" -n\tle nombre maximal de descripteurs de fichiers ouverts\n" +" -p\tla taille du tampon pour les tubes\n" +" -q\tle nombre maximal d'octets dans les queues de messages POSIX\n" +" -r\tla priorité maximale pour l'ordonnancement temps-réel\n" +" -s\tla taille maximale de la pile\n" +" -t\tla quantité maximale de temps processeur en secondes\n" +" -u\tle nombre maximal de processus utilisateurs\n" +" -v\tla taille de la mémoire virtuelle\n" +" -x\tle nombre maximal de verrous de fichiers\n" +" -P\tle nombre maximal de pseudo terminaux\n" +" -T\tle nombre maximal de threads\n" +" \n" +" Toutes les options ne sont pas disponibles sur toutes les plates-" +"formes.\n" +" \n" +" Si LIMIT est fournie, elle est utilisée comme nouvelle valeur de " +"ressource.\n" +" Les valeurs spéciales de LIMIT « soft », « hard » et « unlimited » " +"correspondent\n" +" respectivement aux valeurs actuelles de la limite souple, de la limite " +"dure,\n" +" ou à une absence de limite. Sinon la valeur actuelle de la limite est " +"affichée\n" +" Si aucune option n'est donnée, « -f » est supposée.\n" +" \n" +" Les valeurs sont des multiples de 1024 octets, sauf pour « -t » qui " +"prend des\n" +" secondes, « -p » qui prend un multiple de 512 octets et « -u » qui prend " +"un nombre\n" +" de processus sans unité.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"fournie ou\n" +" qu'une erreur ne survienne." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Affiche ou définit le masque de mode de fichier.\n" +" \n" +" Définit le masque de création de fichier comme étant MODE. Si MODE est " +"omis,\n" +" affiche la valeur courante du MASQUE.\n" +" \n" +" Si MODE commence par un chiffre, il est interprété comme un nombre " +"octal ;\n" +" sinon comme une chaîne de symboles de mode comme ceux acceptés par " +"chmod(1).\n" +" \n" +" Options :\n" +" -p\tsi MODE est omis, affiche sous une forme réutilisable en entrée\n" +" -S\taffiche sous forme symbolique, sinon la sortie octale est " +"utilisée\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès à moins que MODE ne soit pas valable ou " +"qu'une\n" +" option non valable ne soit donnée." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Attend la fin d'une tâche et renvoie le code de retour.\n" +" \n" +" Attend la fin du processus identifié par ID, qui peut être un ID de " +"processus\n" +" ou une spécification de tâche, et renvoie son code de retour. Si ID " +"n'est\n" +" pas donné, la commande attend la fin de tous les processus actifs en " +"cours et\n" +" le code de retour est zéro. Si ID est une spécification de tâche, la " +"commande\n" +" attend tous les processus dans le pipeline de la tâche.\n" +" \n" +" Si l'option -n est fournie, attend la fin de la prochaine tâche et " +"retourne\n" +" son code de retour.\n" +" \n" +" Si l'option -f est fournie et que le contrôle de tâche est activé, " +"attends que\n" +" le ID spécifié soit terminé au lieu d'attendre qu'il change de statut.\n" +" \n" +" Code de retour :\n" +" Renvoie le même code que celui d'ID, ou le code d'échec si ID n'est pas " +"valable\n" +" ou en cas d'option non valable." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Attend la fin d'un processus et renvoie le code de sortie.\n" +" \n" +" Attend la fin de chaque processus spécifié par un PID et donne son code " +"de\n" +" retour. Si PID n'est pas mentionné, la fin de tous les processus fils\n" +" actuellement actifs est attendue et le code de retour est zéro. PID doit " +"être\n" +" un ID de processus.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de retour du dernier PID. Échoue si PID n'est pas " +"valable ou\n" +" si une option non valable est donnée." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Exécute des commandes pour chaque membre d'une liste.\n" +" \n" +" La boucle « for » exécute une suite de commandes pour chaque membre " +"d'une\n" +" liste d'éléments. Si « in MOTS ...; » n'est pas fourni, « in \"$@\" » " +"est\n" +" utilisé. Pour chaque élément dans MOTS, NOM est défini à cet élément,\n" +" et les COMMANDES sont exécutées.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de la dernière commande exécutée." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Boucle « for » arithmétique.\n" +" \n" +" Équivalent à\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 sont des expressions arithmétiques. Si une " +"expression\n" +" est omise, elle se comporte comme si elle était évaluée à 1.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de la dernière commande exécutée." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Sélectionne des mots d'une liste et exécute des commandes.\n" +" \n" +" Les mots WORDS subissent une expansion et génèrent une liste de mots.\n" +" L'ensemble de ces mots est affiché dans la sortie d'erreur, chacun\n" +" étant précédé d'un nombre. Si « in WORDS » n'est pas fourni, \n" +" « in \"$@\" » est utilisé. L'invite PS3 est ensuite affichée et une\n" +" ligne est lue depuis l'entrée standard. Si la ligne consiste en\n" +" le numéro d'un des mots affichés, alors ce mot est affecté à NAME.\n" +" Si la ligne est vide, WORDS et l'invite sont réaffichés. Si un EOF\n" +" est lu, la commande se termine. Toute autre valeur lue a pour effet\n" +" de vider NAME. La ligne lue est conservée dans la variable REPLY.\n" +" Les COMMANDS sont exécutées après chaque sélection jusqu'à ce qu'une\n" +" commande « break » soit exécutée.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de la dernière commande exécutée." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Signale le temps passé pendant l'exécution d'un tube de commandes.\n" +" \n" +" Exécute PIPELINE et affiche un résumé du temps réel, du temps " +"processeur\n" +" utilisateur, et du temps processeur système passés à exécuter PIPELINE\n" +" lorsque celui-ci se termine.\n" +" \n" +" Options :\n" +" -p\taffiche le résumé dans le format portable Posix.\n" +" \n" +" La valeur de la variable TIMEFORMAT est utilisée comme format de " +"sortie.\n" +" \n" +" Code de sortie :\n" +" Le code de retour est celui du PIPELINE." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Exécute des commandes selon une correspondance de motif.\n" +" \n" +" Exécute de manière sélective les COMMANDES selon la correspondance du " +"MOT\n" +" au MOTIF. Le caractère « | » est utilisé pour séparer les différents " +"motifs.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de la dernière commande exécutée." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Exécute des commandes selon une condition.\n" +" \n" +" La liste « if COMMANDES » est exécutée. Si elle se termine avec le code " +"zéro,\n" +" alors la liste « then COMMANDES » est exécutée. Sinon, chaque liste\n" +" « elif COMMANDES » est exécutée à son tour et si son code de retour est " +"zéro,\n" +" la liste « then COMMANDES » correspondante est exécutée et la commande « " +"if »\n" +" se termine. Sinon, la liste « else COMMANDES » est exécutée si elle " +"existe.\n" +" Le code de retour de l'ensemble est celui de la dernière commande " +"exécutée\n" +" ou zéro si aucune condition n'était vraie.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de la dernière commande exécutée." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Exécute des commandes aussi longtemps qu'elles réussissent.\n" +" \n" +" Effectue une expansion et exécute les COMMANDES aussi longtemps\n" +" que la commande finale du « while » se termine avec un code de\n" +" retour à zéro.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de la dernière commande exécutée." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Exécute des commandes aussi longtemps qu'un test échoue.\n" +" \n" +" Effectue une expansion et exécute les commandes « COMMANDES »\n" +" aussi longtemps que les commandes de « until » se terminent avec\n" +" un code de retour différent de zéro.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de la dernière commande exécutée." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Crée un coprocessus nommé NOM.\n" +" \n" +" Exécute la COMMANDE de manière asynchrone, en connectant la sortie et\n" +" l'entrée standard de la commande par un tube aux descripteurs de " +"fichiers\n" +" affectés aux indices 0 et 1 d'une variable tableau NOM dans le shell en\n" +" cours d'exécution. Le NOM par défaut est « COPROC ».\n" +" \n" +" Code de retour :\n" +" La commande coproc renvoie le code de sortie 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Définit une fonction du shell.\n" +" \n" +" Crée une fonction du shell nommée NOM. Lorsqu'appelée comme une simple " +"commande,\n" +" NOM lance la COMMANDE dans le contexte du shell qui l'appelle. Lorsque " +"NOM est appelé,\n" +" les arguments sont transmis à la fonction comme $1...$n, et le nom de la " +"fonction\n" +" est $FUNCNAME.\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès à moins que NOM ne soit en lecture seule." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Groupe plusieurs commandes en une seule.\n" +" \n" +" Lance un ensemble de commandes d'un groupe. Ceci est une façon de\n" +" rediriger tout un ensemble de commandes.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de la dernière commande exécutée." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Reprend une tâche en arrière plan.\n" +" \n" +" Équivalent à l'argument JOB_SPEC de la commande « fg ». Reprend " +"l'exécution\n" +" d'une tâche stoppée ou en tâche de fond. JOB_SPEC peut spécifier soit\n" +" un nom soit un numéro de tâche. Faire suivre JOB_SPEC de « & » permet " +"de\n" +" placer la tâche en arrière plan, comme si la spécification de tâche " +"avait\n" +" été fournie comme argument de « bg ».\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de la commande reprise." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Évalue une expression arithmétique.\n" +" \n" +" L'EXPRESSION est évaluée selon les règles d'évaluation arithmétique.\n" +" C'est équivalent à « let EXPRESSION ».\n" +" \n" +" Code de sortie :\n" +" Renvoie 1 si EXPRESSION est évaluée à 0, sinon renvoie 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Exécute une commande conditionnelle.\n" +" \n" +" Renvoie le code de retour 0 ou 1 dépendant de l'évaluation de " +"l'EXPRESSION\n" +" conditionnelle. Les expressions sont formées de la même façon que pour " +"la\n" +" primitive « test », et peuvent être combinées avec les opérateurs " +"suivants :\n" +" \n" +" \t( EXPRESSION )\tRenvoie la valeur de l'EXPRESSION\n" +" \t! EXPRESSION\tVrai si l'EXPRESSION est fausse, sinon vrai\n" +" \tEXPR1 && EXPR2\tVrai si EXPR1 et EXPR2 sont vraies, faux sinon\n" +" \tEXPR1 || EXPR2\tVrai si EXPR1 ou EXPR2 est vraie, faux sinon\n" +" \n" +" Lorsque les opérateurs « == » et « != » sont utilisés, la chaîne à " +"droite de\n" +" l'opérateur est utilisée comme motif, et une mise en correspondance est " +"effectuée.\n" +" Lorsque l'opérateur « =~ » est utilisé, la chaîne à droite de " +"l'opérateur\n" +" est mise en correspondance comme une expression rationnelle.\n" +" \n" +" Les opérateurs « && » et « || » n'évaluent pas EXPR2 si\n" +" EXPR1 est suffisant pour déterminer la valeur de l'expression.\n" +" \n" +" Code de sortie :\n" +" 0 ou 1 selon la valeur de l'EXPRESSION." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Nom et usage de variable shell courantes.\n" +" \n" +" BASH_VERSION\tNuméro de version de ce Bash.\n" +" CDPATH\tUne liste de répertoires, séparés par un deux-points, utilisés\n" +" \t\tpar « cd » pour la recherche de répertoires.\n" +" GLOBIGNORE\tUne liste de motifs séparés par un deux-points, décrivant " +"les\n" +" \t\tnoms de fichiers à ignorer lors de l'expansion des chemins.\n" +" HISTFILE\tLe nom du fichier où votre historique des commandes est " +"stocké.\n" +" HISTFILESIZE\tLe nombre maximal de lignes que ce fichier peut contenir.\n" +" HISTSIZE\tLe nombre maximal de lignes d'historique auquel un shell en\n" +" \t\tfonctionnement peut accéder.\n" +" HOME\tLe chemin complet vers votre répertoire de connexion.\n" +" HOSTNAME\tLe nom de la machine actuelle.\n" +" HOSTTYPE\tLe type de processeur sur lequel cette version de Bash " +"fonctionne.\n" +" IGNOREEOF\tContrôle l'action du shell à la réception d'un caractère « " +"EOF »\n" +" \t\tcomme seule entrée. Si défini, sa valeur est le nombre de " +"caractères\n" +" \t\t« EOF » qui peuvent être rencontrés à la suite sur une ligne vide\n" +" \t\tavant que le shell ne se termine (10 par défaut).\n" +" \t\tS'il n'est pas défini, « EOF » signifie la fin de l'entrée.\n" +" MACHTYPE\tUne chaîne décrivant le système actuel sur lequel fonctionne " +"Bash.\n" +" MAILCHECK\tLe nombre de secondes séparant deux vérifications du courrier " +"par Bash.\n" +" MAILPATH\tUne liste de fichiers séparés par un deux-points, que Bash " +"utilise\n" +" \t\tpour vérifier les nouveaux courriers.\n" +" OSTYPE\tLa version d'Unix sur laquelle cette version de Bash " +"fonctionne.\n" +" PATH\tUne liste de répertoires séparés par un deux-points, utilisés\n" +" \t\tpour la recherche des commandes.\n" +" PROMPT_COMMAND\tUne commande à exécuter avant d'afficher chaque invite\n" +" \t\tde commande principale.\n" +" PS1\t\tL'invite de commande principal.\n" +" PS2\t\tL'invite secondaire.\n" +" PWD\t\tLe chemin complet vers le répertoire actuel.\n" +" SHELLOPTS\tLa liste des options activées du shell, séparées par un deux-" +"points.\n" +" TERM\tLe nom du type actuel du terminal.\n" +" TIMEFORMAT\tLe format de sortie pour les statistiques de temps " +"affichées\n" +" \t\tpar le mot réservé « time ».\n" +" auto_resume\tNon-vide signifie qu'un mot de commande apparaissant\n" +" \t\tde lui-même sur une ligne est d'abord recherché dans la liste des\n" +" \t\ttâches stoppées. Si elle est trouvée, la tâche est remise en avant-" +"plan.\n" +" \t\tLa valeur « exact » signifie que le mot de commande doit " +"correspondre\n" +" \t\texactement à la commande dans la liste des tâches stoppées. La " +"valeur\n" +" \t\t« substring » signifie que le mot de commande doit correspondre à " +"une\n" +" \t\tsous-chaîne de la tâche. Une autre valeur signifie que la commande " +"doit\n" +" \t\têtre un préfixe d'une tâche stoppée.\n" +" histchars\tCaractères contrôlant l'expansion d'historique et la " +"substitution\n" +" \t\trapide. Le premier caractère est le caractère de substitution " +"d'historique,\n" +" \t\thabituellement « ! ». Le deuxième est le caractère de substitution " +"rapide,\n" +" \t\thabituellement « ^ ». Le troisième est le caractère de commentaire\n" +" \t\td'historique, habituellement « # ».\n" +" HISTIGNORE\tUne liste de motifs séparés par un deux-points, utilisés " +"pour\n" +" \t\tdécider quelles commandes doivent être conservées dans la liste " +"d'historique.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Ajoute un répertoire à la pile.\n" +" \n" +" Ajoute un répertoire en haut de la pile des répertoires, ou permute\n" +" la pile, de façon que le répertoire en haut de la pile devienne\n" +" le nouveau répertoire de travail. S'il n'y a pas d'argument, les deux\n" +" répertoires en haut de la pile sont échangés.\n" +" \n" +" Options :\n" +" -n\tNe change pas de répertoire de travail lorsque des répertoires\n" +" \t\tsont ajoutés à la pile, de façon que seule la pile soit manipulée\n" +" \n" +" Arguments :\n" +" +N\tPermute la pile de façon que le Nième répertoire se place en " +"haut,\n" +" \t\ten comptant de zéro depuis la gauche de la liste fournie par « dirs " +"».\n" +" \n" +" -N\tPermute la pile de façon que le Nième répertoire se place en " +"haut,\n" +" \t\ten comptant de zéro depuis la droite de la liste fournie par « dirs " +"».\n" +" \n" +" dir\tAjoute le répertoire DIR en haut de la pile, et en fait le " +"nouveau\n" +" \t\trépertoire de travail.\n" +" \n" +" Vous pouvez voir la pile des répertoires avec la commande « dirs ».\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'un argument non valable ne soit " +"fourni\n" +" ou que le changement de répertoire n'échoue." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Enlève des répertoires de la pile.\n" +" \n" +" Enlève des éléments de la pile des répertoires. S'il n'y a pas\n" +" d'argument, le répertoire en haut de la pile est enlevé et le\n" +" nouveau sommet de la pile devient le répertoire de travail.\n" +" \n" +" Options :\n" +" -n\tNe change pas de répertoire de travail lorsque des répertoires\n" +" \t\tsont enlevés de la pile, de façon que seule la pile soit manipulée\n" +" \n" +" Arguments :\n" +" +N\tEnlève le Nième répertoire, en comptant de zéro depuis la gauche\n" +" \t\tde la liste fournie par « dirs ». Par exemple : « popd +0 »\n" +" \t\tenlève le premier répertoire, « popd +1 » le deuxième.\n" +" \n" +" -N\tEnlève le Nième répertoire, en comptant de zéro depuis la droite\n" +" \t\tde la liste fournie par « dirs ». Par exemple : « popd -0 »\n" +" \t\tenlève le dernier répertoire, « popd -1 » l'avant-dernier.\n" +" \n" +" Vous pouvez voir la pile des répertoires avec la commande « dirs ».\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'un argument non valable ne soit " +"donné\n" +" ou que le changement de répertoire n'échoue." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Affiche la pile de répertoire.\n" +" \n" +" Affiche la liste des répertoires actuellement mémorisés. Les " +"répertoires\n" +" sont insérés dans la liste avec la commande « pushd ». Vous pouvez " +"remonter\n" +" dans la liste en enlevant des éléments avec la commande « popd ».\n" +" \n" +" Options:\n" +" -c\tefface la pile des répertoires en effaçant tous les éléments\n" +" -l\tn'affiche pas la version raccourcie (avec ~) des répertoires\n" +" \t\trelativement à votre dossier personnel\n" +" -p\taffiche la pile des répertoires avec un élément par ligne\n" +" -v\taffiche la pile des répertoires avec un élément par ligne,\n" +" \t\ten préfixant avec sa position dans la pile\n" +" \n" +" Arguments :\n" +" +N\tAffiche le Nième élément en comptant de zéro depuis la gauche de " +"la\n" +" \t\tliste affichée par « dirs » lorsque celle-ci est appelée sans " +"option.\n" +" \n" +" -N\tAffiche le Nième élément en comptant de zéro depuis la droite de " +"la\n" +" \t\tliste affichée par « dirs » lorsque celle-ci est appelée sans " +"option.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit\n" +" fournie ou qu'une erreur ne survienne." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Active ou désactive des options du shell.\n" +" \n" +" Change la valeur de chaque option du shell NOMOPT. S'il n'y a pas " +"d'argument\n" +" à l'option, liste chaque NOMOPT fourni ou toutes les options du shell si " +"aucun\n" +" NOMOPT est donné, avec une indication montrant si chacun est actif ou " +"non.\n" +" \n" +" Options :\n" +" -o\trestreint les NOMOPT à ceux définis pour être utilisés avec « set -" +"o »\n" +" -p\taffiche chaque option du shell en indiquant son état\n" +" -q\tsupprime l'affichage\n" +" -s\tactive (set) chaque NOMOPT\n" +" -u\tdésactive (unset) chaque NOMOPT\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès si NOMOPT est active ; échec si une option non " +"valable\n" +" est donnée ou si NOMOPT est inactive." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formate et affiche des ARGUMENTS en contrôlant le FORMAT.\n" +" \n" +" Options :\n" +" -v var\taffecte la sortie à la variable VAR du shell plutôt que de " +"l'afficher\n" +" \t\tsur la sortie standard\n" +" \n" +" Le FORMAT est une chaîne de caractères qui contient trois types " +"d'objets : des caractères\n" +" normaux qui sont simplement copiés vers la sortie standard ; des " +"séquences d'échappement\n" +" qui sont converties et copiées vers la sortie standard et des " +"spécifications de\n" +" format, chacun entraînant l'affichage de l'argument suivant.\n" +" \n" +" En plus des formats standards décrits dans printf(1), « printf » " +"interprète :\n" +" \n" +" %b\tdéveloppe les séquences d'échappement à contre-oblique dans " +"l'argument correspondant\n" +" %q\tprotège les arguments avec des guillemets de façon qu'ils puissent " +"être réutilisés\n" +" comme entrée du shell.\n" +" %(fmt)T\trenvoie la chaîne date-heure résultant de l'utilisation de " +"FMT comme\n" +" \t chaîne de format pour strftime(3)\n" +" \n" +" Le format est réutilisé si nécessaire pour consommer tous les arguments. " +"Si il y a\n" +" moins d'arguments que exigé par le format, les spécificateurs de format " +"surnuméraires\n" +" se comportent comme si la valeur zéro ou une chaîne nulle avait été " +"fournie (selon\n" +" ce qui est approprié).\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"donnée ou qu'une\n" +" erreur d'écriture ou d'affectation ne survienne." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Spécifie la façon dont Readline complète les arguments.\n" +" \n" +" Pour chaque NOM, la commande spécifie la façon dont les arguments sont " +"complétés\n" +" S'il n'y a pas d'option, le réglage actuel est affiché d'une manière\n" +" réutilisable comme une entrée.\n" +" \n" +" Options :\n" +" -p\taffiche le réglage d'auto-complètement actuel dans un format " +"réutilisable\n" +" -r\tretire un réglage d'auto-complètement de chaque NOM ou, si aucun " +"NOM\n" +" \t\tn'est fourni, retire tous les réglages\n" +" -D\tapplique les auto-complètements et actions comme valeurs par " +"défaut aux\n" +" \t\tcommandes ne possédant aucun auto-complètement spécifique\n" +" -E\tapplique les auto-complètements et actions aux commandes vides\n" +" \t\t(auto-complètement tenté sur une ligne vide)\n" +" -I\tapplique les auto-complètements et actions au mot initial " +"(habituellement\n" +" \t\tla commande)\n" +" \n" +" Lorsqu'un auto-complètement est tenté, les actions sont appliquées dans " +"l'ordre\n" +" dans lequel les options en majuscule ci-dessus sont listées. Si " +"plusieurs\n" +" options sont fournies, l'option « -D » est prioritaire sur -E et les " +"deux sont\n" +" prioritaires sur -I.\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"fournie ou\n" +" qu'une erreur ne survienne." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Affiche les possibilités de complètement dépendant des options.\n" +" \n" +" Ceci est destiné à être utilisé depuis une fonction de shell générant\n" +" des auto-complètements possibles. Si le MOT optionnel est fourni,\n" +" des correspondances avec « MOT » sont générées.\n" +" \n" +" Code de sortie :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit\n" +" fournie ou qu'une erreur ne survienne." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Modifie ou affiche les options d'auto-complètement.\n" +" \n" +" Modifie les options d'auto-complètement pour chaque NOM ou, si aucun NOM " +"n'est\n" +" fourni, pour l'auto-complètement actuellement exécuté. Si aucune OPTION " +"n'est\n" +" donnée, affiche les options d'auto-complètement de chaque NOM ou le " +"réglage\n" +" actuel d'auto-complètement.\n" +" \n" +" Options :\n" +" \t-o option\tDéfini l'option d'auto-complètement OPTION pour chaque NOM\n" +" \t-D\t\tChange les options pour l'auto-complètement de commande par " +"défaut\n" +" \t-E\t\tChange les options pour l'auto-complètement de commande vide\n" +" \t-I\t\tChange les options pour l'auto-complètement du mot initial\n" +" \n" +" Utiliser « +o » au lieu de « -o » désactive l'option spécifiée.\n" +" \n" +" Arguments :\n" +" \n" +" Chaque NOM correspond à une commande pour laquelle un réglage d'auto-" +"complètement\n" +" doit déjà avoir été défini grâce à la commande intégrée « complete ». " +"Si aucun\n" +" NOM n'est fourni, « compopt » doit être appelée par une fonction " +"générant\n" +" des auto-complètements ; ainsi les options de ce générateur d'auto-" +"complètement\n" +" en cours d'exécution seront modifiées.\n" +" \n" +" Code de retour :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"fournie\n" +" ou que NOM n'ait aucun réglage d'auto-complètement." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Lit des lignes depuis l'entrée standard vers une variable tableau indexé.\n" +" \n" +" Lit des lignes depuis l'entrée standard vers la variable tableau indexé " +"TABLEAU ou\n" +" depuis le descripteur de fichier FD si l'option « -u » est utilisée. La " +"variable\n" +" MAPFILE est le TABLEAU par défaut.\n" +" \n" +" Options :\n" +" -d delim\tUtilise DELIM pour terminer les lignes au lieu du saut de " +"ligne\n" +" -n nombre\tCopie au maximum NOMBRE lignes. Si NOMBRE est 0, toutes " +"les lignes sont copiées.\n" +" -O origine\tCommence l'affectation au TABLEAU à l'indice ORIGINE. " +"L'indice par défaut est 0.\n" +" -s nombre\tSaute les NOMBRE premières lignes lues.\n" +" -t\tRetire les retours à la ligne de chaque ligne lue.\n" +" -u fd\tLit les lignes depuis le descripteur de fichier FD au lieu de " +"l'entrée standard.\n" +" -C callback\tÉvalue CALLBACK à chaque fois que QUANTUM lignes sont " +"lues.\n" +" -c quantum\tIndique le nombre de lignes lues entre chaque appel au " +"CALLBACK.\n" +" \n" +" Arguments :\n" +" TABLEAU\tNom de la variable tableau à utiliser pour les données.\n" +" \n" +" Si l'option « -C » est fournie sans option « -c », le quantum par défaut " +"est 5000.\n" +" Lorsque CALLBACK est évalué, l'indice du prochain élément de tableau qui " +"sera affecté\n" +" lui est transmis comme argument additionnel.\n" +" \n" +" Si la commande « mapfile » n'est pas appelée avec une origine explicite, " +"le tableau est\n" +" vidé avant affectation.\n" +" \n" +" code de retour :\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"donnée ou que\n" +" le TABLEAU soit en lecture seule ou ne soit pas un tableau indexé." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Lit des lignes depuis un fichier vers une variable tableau.\n" +" \n" +" Synonyme de « mapfile »." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Renvoie le contexte de l'appel de sous-routine actuel.\n" +#~ " \n" +#~ " Sans EXPR, renvoie" + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process : processus %5ld (%s) dans le_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "N° de signal inconnu" + +#~ msgid "Copyright (C) 2018 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2018 Free Software Foundation, Inc." + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licence GPLv2+ : GNU GPL version 2 ou ultérieure \n" + +#~ msgid "" +#~ ". With EXPR, returns\n" +#~ " " +#~ msgstr "" +#~ ". Avec EXPR, renvoie\n" +#~ " " + +#~ msgid "" +#~ "; this extra information can be used to\n" +#~ " 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." +#~ msgstr "" +#~ "; ces informations supplémentaires peuvent être utilisées pour\n" +#~ " fournir une trace d'appels\n" +#~ " \n" +#~ " La valeur de EXPR indique le nombre de cadres d'appels duquel il faut " +#~ "revenir en arrière\n" +#~ " avant le cadre actuel ; le cadre supérieur est le cadre 0." + +#~ msgid " " +#~ msgstr " " + +#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +#~ msgstr "Sans « EXPR », renvoie « $ligne $nomfichier ». Avec « EXPR »," + +#~ msgid "returns \"$line $subroutine $filename\"; this extra information" +#~ msgstr "" +#~ "renvoie « $ligne $sousroutine $nomfichier » ; cette information " +#~ "supplémentaire" + +#~ msgid "can be used used to provide a stack trace." +#~ msgstr "peut être utilisée pour fournir une trace de la pile" + +#~ msgid "" +#~ "The value of EXPR indicates how many call frames to go back before the" +#~ msgstr "" +#~ "La valeur de « EXPR » indique le nombre de cadres d'appel dont il faut " +#~ "reculer" + +#~ msgid "current one; the top frame is frame 0." +#~ msgstr "par rapport à l'actuel ; le cadre supérieur est le cadre 0." + +#~ msgid "%s: invalid number" +#~ msgstr "%s : nombre non valable" + +#~ msgid "Shell commands matching keywords `" +#~ msgstr "Commandes du shell correspondant aux mots-clés « " + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "" +#~ "Affiche la liste des répertoires actuellement mémorisés. Les répertoires" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "sont insérés dans la pile avec la commande « pushd » ; vous pouvez" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "" +#~ "remonter dans la pile en enlevant des éléments avec la commande « popd »." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "" +#~ "L'option « -l » demande à « dirs » de ne pas afficher sous forme abrégée" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "" +#~ "les répertoires relatifs à votre répertoire personnel. Cela signifie que" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "" +#~ "le répertoire « ~/bin » pourra être affiché « /homes/bfox/bin ». L'option " +#~ "« -v »" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "demande à « dirs » d'afficher un répertoire de la pile par ligne," + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "" +#~ "en le précédant de sa position dans la pile. L'option « -p » fait la " +#~ "même chose" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "sans afficher le numéro d'emplacement dans la pile." + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "" +#~ "L'option « -c » vide la pile des répertoires en retirant tous ses " +#~ "éléments." + +#~ msgid "" +#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgstr "" +#~ "+N affiche la Nième entrée à partir de la gauche de la liste fournie par" + +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr "" +#~ " « dirs » lorsqu'elle est appelée sans option, la première entrée " +#~ "étant zéro." + +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "" +#~ "+N affiche la Nième entrée à partir de la droite de la liste fournie par" + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "" +#~ "Ajoute un répertoire au dessus de la pile des répertoires ou effectue une" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "" +#~ "rotation de la pile en plaçant le répertoire supérieur comme répertoire " +#~ "courant." + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "" +#~ "Sans paramètre, les deux répertoires supérieurs de la pile sont échangés." + +#~ msgid "+N Rotates the stack so that the Nth directory (counting" +#~ msgstr "" +#~ "+N effectue une rotation de la pile de façon que le Nième répertoire " +#~ "soit" + +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr "" +#~ "placé au dessus (N commençant à zéro et en partant à gauche de la liste" + +#~ msgid " zero) is at the top." +#~ msgstr " fournie par « dirs »)." + +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "" +#~ "+N effectue une rotation de la pile de façon que le Nième répertoire " +#~ "soit" + +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr "" +#~ "placé au dessus (N commençant à zéro et en partant à gauche de la liste" + +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "" +#~ "-n inhibe le changement de répertoire lors d'un ajout de répertoire " + +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr " à la liste. Seule la pile est manipulée." + +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "" +#~ "dir ajoute « DIR » au dessus de la pile des répertoires, en faisant de " +#~ "lui" + +#~ msgid " new current working directory." +#~ msgstr " le nouveau répertoire courant." + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "" +#~ "Vous pouvez voir le contenu de la pile des répertoires avec la commande « " +#~ "dirs »." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Enlève des éléments de la pile des répertoires. Sans paramètre," + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "le répertoire supérieur de la pile est enlevé et un changement de" + +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "+N enlève le Nième élément en commençant à zéro à gauche" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "de la liste affichée par « dirs ». Par exemple, « popd +0 »" + +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr " enlève le premier répertoire, « popd +1 » le second." + +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "+N enlève la Nième entrée en commençant à zéro à droite" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "de la liste affichée par « dirs ». Par exemple, « popd -0 »" + +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr " enlève le dernier répertoire, « popd -1 » l'avant-dernier." + +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "" +#~ "-n inhibe le changement de répertoire lors de l'enlèvement d'un " +#~ "répertoire" + +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr " de la liste. Seule la pile est manipulée." + +#~ msgid "allocated" +#~ msgstr "alloué" + +#~ msgid "freed" +#~ msgstr "libéré" + +#~ msgid "requesting resize" +#~ msgstr "demande de redimensionnement" + +#~ msgid "just resized" +#~ msgstr "redimensionné à l'instant" + +#~ msgid "bug: unknown operation" +#~ msgstr "bogue : opération inconnue" + +#~ msgid "malloc: watch alert: %p %s " +#~ msgstr "malloc : alerte de « watch » : %p %s " + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc : impossible de réallouer %lu octets (%lu octets alloués)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc : impossible d'allouer %lu octets" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc : %s:%d : impossible de réallouer %lu octets (%lu octets alloués)" + +#~ msgid "" +#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "" +#~ "Permet de sortir d'une boucle FOR, WHILE ou UNTIL. Si N est précisé,\n" +#~ " la sortie de boucle se fait sur N niveaux." + +#~ msgid "" +#~ "Run a shell builtin. This is useful when you wish to rename a\n" +#~ " shell builtin to be a function, but need the functionality of the\n" +#~ " builtin within the function itself." +#~ msgstr "" +#~ "Lance une primitive du shell. Ceci est utile lorsque vous souhaitez " +#~ "nommer une fonction comme\n" +#~ " une primitive, mais que vous avez besoin d'utiliser la primitive dans " +#~ "la fonction elle-même." + +#~ msgid "" +#~ "Print the current working directory. With the -P option, pwd prints\n" +#~ " the physical directory, without any symbolic links; the -L option\n" +#~ " makes pwd follow symbolic links." +#~ msgstr "" +#~ "Affiche le répertoire de travail actuel. Avec l'option « -P », « pwd » " +#~ "affiche\n" +#~ " le répertoire physique, sans lien symbolique ; l'option « -L »\n" +#~ " demande à « pwd » de suivre les liens symboliques." + +#~ msgid "Return a successful result." +#~ msgstr "Renvoie un résultat de succès" + +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell\n" +#~ " function called `ls', and you wish to call the command `ls', you can\n" +#~ " say \"command ls\". If the -p option is given, a default value is " +#~ "used\n" +#~ " for PATH that is guaranteed to find all of the standard utilities. " +#~ "If\n" +#~ " the -V or -v option is given, a string is printed describing " +#~ "COMMAND.\n" +#~ " The -V option produces a more verbose description." +#~ msgstr "" +#~ "Lance la commande COMMAND avec les ARGS en ignorant les fonctions du " +#~ "shell. Si vous\n" +#~ " avez défini une fonction de shell appelée « ls » et que vous voulez " +#~ "appeler\n" +#~ " la commande « ls », vous pouvez faire « command ls ». Si l'option « -" +#~ "p » est\n" +#~ " donnée, une valeur par défaut est utilisée pour le PATH garantissant " +#~ "que tous\n" +#~ " les utilitaires standards seront trouvés. Si l'option « -V » ou « -v " +#~ "» est\n" +#~ " donnée, une description de la commande s'affiche. L'option « -V » " +#~ "fournit plus\n" +#~ " d'informations." + +#~ msgid "" +#~ "Declare variables and/or give them attributes. If no NAMEs are\n" +#~ " given, then display the values of variables instead. The -p option\n" +#~ " will display the attributes and values of each NAME.\n" +#~ " \n" +#~ " The flags are:\n" +#~ " \n" +#~ " -a\tto make NAMEs arrays (if supported)\n" +#~ " -f\tto select from among function names only\n" +#~ " -F\tto display function names (and line number and source file name " +#~ "if\n" +#~ " \tdebugging) without definitions\n" +#~ " -i\tto make NAMEs have the `integer' attribute\n" +#~ " -r\tto make NAMEs readonly\n" +#~ " -t\tto make NAMEs have the `trace' attribute\n" +#~ " -x\tto make NAMEs export\n" +#~ " \n" +#~ " Variables with the integer attribute have arithmetic evaluation (see\n" +#~ " `let') done when the variable is assigned to.\n" +#~ " \n" +#~ " When displaying values of variables, -f displays a function's name\n" +#~ " and definition. The -F option restricts the display to function\n" +#~ " name only.\n" +#~ " \n" +#~ " Using `+' instead of `-' turns off the given attribute instead. " +#~ "When\n" +#~ " used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "" +#~ "Déclare des variables ou ajoute des attributs aux variables. Si aucun " +#~ "nom\n" +#~ " n'est donné, affiche plutôt les valeurs des variables. L'option « -p " +#~ "»\n" +#~ " permet d'afficher les attributs et les valeurs de chaque NAME.\n" +#~ " \n" +#~ " Les options sont :\n" +#~ " \n" +#~ " -a\tpour faire des tableaux de NAME (si pris en charge)\n" +#~ " -f\tpour choisir uniquement parmi les noms de fonctions\n" +#~ " -F\tpour afficher les noms de fonctions (et les numéros de ligne et " +#~ "le\n" +#~ " \tfichier source si le mode de débogage est activé\n" +#~ " -i\tpour que les NAME aient l'attribut « integer »\n" +#~ " -r\tpour que les NAME soient en lecture seule\n" +#~ " -t\tpour que les NAME aient l'attribut « trace »\n" +#~ " -x\tpour faire un export des NAME\n" +#~ " \n" +#~ " L'évaluation arithmétique des variables ayant l'attribut « integer » " +#~ "est\n" +#~ " effectuée au moment de l'affectation (voir « let »).\n" +#~ " \n" +#~ " Lors de l'affichage des valeurs de variables, -f affiche le nom de la " +#~ "fonction\n" +#~ " et sa définition. L'option -F permet de n'afficher que le nom.\n" +#~ " \n" +#~ " Un attribut peut être désactivé en utilisant « + » au lieu de « - ». " +#~ "Dans une\n" +#~ " fonction, ceci a pour effet de rendre les NAME locaux, comme avec la " +#~ "commande «local »." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Obsolète. Consulter « declare »." + +#~ msgid "" +#~ "Create a local variable called NAME, and give it VALUE. LOCAL\n" +#~ " can only be used within a function; it makes the variable NAME\n" +#~ " have a visible scope restricted to that function and its children." +#~ msgstr "" +#~ "Permet de créer une variable locale appelée NAME, et de lui affecter une " +#~ "VALUE.\n" +#~ " LOCAL peut seulement être utilisé à l'intérieur d'une fonction ; il " +#~ "rend le nom de\n" +#~ " variable NAME visible uniquement à l'intérieur de la fonction et de " +#~ "ses filles." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "Affiche les ARGs. L'option « -n » supprime le saut de ligne final." + +#~ msgid "" +#~ "Enable and disable builtin shell commands. This allows\n" +#~ " you to use a disk command which has the same name as a shell\n" +#~ " builtin without specifying a full pathname. If -n is used, the\n" +#~ " NAMEs become disabled; otherwise NAMEs are enabled. For example,\n" +#~ " to use the `test' found in $PATH instead of the shell builtin\n" +#~ " version, type `enable -n test'. On systems supporting dynamic\n" +#~ " loading, the -f option may be used to load new builtins from the\n" +#~ " shared object FILENAME. The -d option will delete a builtin\n" +#~ " previously loaded with -f. If no non-option names are given, or\n" +#~ " the -p option is supplied, a list of builtins is printed. The\n" +#~ " -a option means to print every builtin with an indication of whether\n" +#~ " or not it is enabled. The -s option restricts the output to the " +#~ "POSIX.2\n" +#~ " `special' builtins. The -n option displays a list of all disabled " +#~ "builtins." +#~ msgstr "" +#~ "Active et désactive les primitives du shell. Ceci permet\n" +#~ " d'utiliser une commande du disque qui a le même nom qu'une commande " +#~ "intégrée\n" +#~ " sans devoir spécifier un chemin complet. Si « -n » est utilisé, les\n" +#~ " noms NAME sont désactivés ; sinon, les noms NAME sont activés. Par " +#~ "exemple,\n" +#~ " pour utiliser « test » trouvé dans $PATH au lieu de la primitive du\n" +#~ " même nom, tapez « enable -n test ». Sur les systèmes permettant le " +#~ "chargement\n" +#~ " dynamique, l'option « -f » peut être utilisée pour charger de " +#~ "nouvelles primitives\n" +#~ " depuis l'objet partagé FILENAME. L'option « -d » efface une " +#~ "primitive précédemment\n" +#~ " chargée avec « -f ». Si aucun nom (n'étant pas une option) n'est " +#~ "donné, ou si l'option\n" +#~ " « -p » est spécifiée, une liste de primitive est affichée. L'option " +#~ "« -a » permet d'afficher\n" +#~ " toutes les primitives en précisant si elles sont activées ou non. " +#~ "L'option « -s » restreint\n" +#~ " la sortie aux primitives « special » POSIX.2. L'option « -n » affiche " +#~ "une liste de toutes les\n" +#~ " primitives désactivées." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Lit les ARGs comme une entrée du shell et exécute les commandes " +#~ "résultantes." + +#~ msgid "" +#~ "Exec FILE, replacing this shell with the specified program.\n" +#~ " If FILE is not specified, the redirections take effect in this\n" +#~ " shell. If the first argument is `-l', then place a dash in the\n" +#~ " zeroth arg passed to FILE, as login does. If the `-c' option\n" +#~ " is supplied, FILE is executed with a null environment. The `-a'\n" +#~ " option means to make set argv[0] of the executed process to NAME.\n" +#~ " If the file cannot be executed and the shell is not interactive,\n" +#~ " then the shell exits, unless the shell option `execfail' is set." +#~ msgstr "" +#~ "Exécute le fichier FILE en remplaçant ce shell par le programme " +#~ "spécifié.\n" +#~ " Si FILE n'est pas spécifié, les redirections prennent effet dans\n" +#~ " ce shell. Si le premier argument est « -l », un tiret est placé dans\n" +#~ " l'argument n°0 transmis à FILE, comme le fait « login ». Si l'option\n" +#~ " « -c » est fournie, FILE est exécuté avec un environnement vide.\n" +#~ " L'option « -a » indique de définir « argv[0] » du processus exécuté\n" +#~ " à NAME. Si le fichier ne peut pas être exécuté et que le shell n'est\n" +#~ " pas interactif, alors le shell se termine, à moins que l'option « " +#~ "execfail »\n" +#~ " ne soit définie." + +#~ msgid "Logout of a login shell." +#~ msgstr "Fermer un shell de connexion" + +#~ msgid "" +#~ "For each NAME, the full pathname of the command is determined and\n" +#~ " remembered. If the -p option is supplied, PATHNAME is used as the\n" +#~ " full pathname of NAME, and no path search is performed. The -r\n" +#~ " option causes the shell to forget all remembered locations. The -d\n" +#~ " option causes the shell to forget the remembered location of each " +#~ "NAME.\n" +#~ " If the -t option is supplied the full pathname to which each NAME\n" +#~ " corresponds is printed. If multiple NAME arguments are supplied " +#~ "with\n" +#~ " -t, the NAME is printed before the hashed full pathname. The -l " +#~ "option\n" +#~ " causes output to be displayed in a format that may be reused as " +#~ "input.\n" +#~ " If no arguments are given, information about remembered commands is " +#~ "displayed." +#~ msgstr "" +#~ "Pour chaque NAME, le chemin complet de la commande est déterminé puis " +#~ "mémorisé.\n" +#~ " Si l'option « -p » est fournie, le CHEMIN est utilisé comme chemin " +#~ "complet\n" +#~ " pour NAME, et aucune recherche n'est effectuée. L'option « -r » " +#~ "demande au shell\n" +#~ " d'oublier tous les chemins mémorisés. L'option « -d » demande au " +#~ "shell d'oublier\n" +#~ " les chemins mémorisés pour le NAME. Si l'option « -t » est fournie, " +#~ "le chemin\n" +#~ " complet auquel correspond chaque NAME est affiché. Si plusieurs NAME " +#~ "sont fournis\n" +#~ " à l'option « -t », le NAME est affiché avant chemin complet haché. " +#~ "L'option\n" +#~ " « -l » permet d'utiliser un format de sortie qui peut être réutilisé " +#~ "comme entrée.\n" +#~ " Si aucun argument n'est donné, des informations sur les commandes " +#~ "mémorisées sont\n" +#~ " affichées." + +#~ msgid "" +#~ "Display helpful information about builtin commands. If PATTERN is\n" +#~ " specified, gives detailed help on all commands matching PATTERN,\n" +#~ " otherwise a list of the builtins is printed. The -s option\n" +#~ " restricts the output for each builtin command matching PATTERN to\n" +#~ " a short usage synopsis." +#~ msgstr "" +#~ "Affiche des informations utiles sur les commandes intégrées. Si MOTIF\n" +#~ " est précisé, une aide détaillée sur toutes les commandes " +#~ "correspondant\n" +#~ " au MOTIF sont affichées, sinon une liste des commandes intégrées est\n" +#~ " fournie. L'option « -s » restreint l'affichage de chaque commande\n" +#~ " correspondant au MOTIF à une courte description sur l'utilisation." + +#~ msgid "" +#~ "By default, removes each JOBSPEC argument from the table of active jobs.\n" +#~ " If the -h option is given, the job is not removed from the table, but " +#~ "is\n" +#~ " marked so that SIGHUP is not sent to the job if the shell receives a\n" +#~ " SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove " +#~ "all\n" +#~ " jobs from the job table; the -r option means to remove only running " +#~ "jobs." +#~ msgstr "" +#~ "Par défaut, enlève tous les arguments JOBSPEC de la table des tâches " +#~ "actives.\n" +#~ " Si l'option « -h » est fournie, la tâche n'est pas retirée de la " +#~ "table mais\n" +#~ " est marquée de telle sorte que le signal SIGHUP ne lui soit pas " +#~ "envoyé quand\n" +#~ " le shell reçoit un SIGHUP. Lorsque JOBSPEC n'est pas fournie, " +#~ "l'option « -a »,\n" +#~ " permet d'enlever toutes les tâches de la table des tâches. L'option « " +#~ "-r »\n" +#~ " indique de ne retirer que les tâches en cours de fonctionnement." + +#~ msgid "" +#~ "One line is read from the standard input, or from file descriptor FD if " +#~ "the\n" +#~ " -u option is supplied, and the first word is assigned to the first " +#~ "NAME,\n" +#~ " the second word to the second NAME, and so on, with leftover words " +#~ "assigned\n" +#~ " to the last NAME. Only the characters found in $IFS are recognized " +#~ "as word\n" +#~ " delimiters. If no NAMEs are supplied, the line read is stored in the " +#~ "REPLY\n" +#~ " variable. If the -r option is given, this signifies `raw' input, " +#~ "and\n" +#~ " backslash escaping is disabled. The -d option causes read to " +#~ "continue\n" +#~ " until the first character of DELIM is read, rather than newline. If " +#~ "the -p\n" +#~ " option is supplied, the string PROMPT is output without a trailing " +#~ "newline\n" +#~ " before attempting to read. If -a is supplied, the words read are " +#~ "assigned\n" +#~ " to sequential indices of ARRAY, starting at zero. If -e is supplied " +#~ "and\n" +#~ " the shell is interactive, readline is used to obtain the line. If -n " +#~ "is\n" +#~ " supplied with a non-zero NCHARS argument, read returns after NCHARS\n" +#~ " characters have been read. The -s option causes input coming from a\n" +#~ " terminal to not be echoed.\n" +#~ " \n" +#~ " The -t option causes read to time out and return failure if a " +#~ "complete line\n" +#~ " of input is not read within TIMEOUT seconds. If the TMOUT variable " +#~ "is set,\n" +#~ " its value is the default timeout. The return code is zero, unless " +#~ "end-of-file\n" +#~ " is encountered, read times out, or an invalid file descriptor is " +#~ "supplied as\n" +#~ " the argument to -u." +#~ msgstr "" +#~ "Une ligne est lue depuis l'entrée standard ou depuis le descripteur de " +#~ "fichier\n" +#~ " FD si l'option « -u » est fournie. Le premier mot est affecté au " +#~ "premier NAME,\n" +#~ " le second mot au second NAME, et ainsi de suite, les mots restants " +#~ "étant affectés\n" +#~ " au dernier NAME. Seuls les caractères situés dans « $IFS » sont " +#~ "reconnus comme\n" +#~ " étant des délimiteurs de mots. Si aucun NAME n'est fourni, la ligne " +#~ "est conservée\n" +#~ " dans la variable REPLY. L'option « -r » signifie « entrée brute » et " +#~ "la neutralisation \n" +#~ " par barre oblique inverse est désactivée. L'option « -d » indique de " +#~ "continuer\" la lecture jusqu'à ce que le premier caractère de DELIM " +#~ "soit lu plutôt que\n" +#~ " le retour à la ligne. Si « -p » est fourni, la chaîne PROMPT est " +#~ "affichée\n" +#~ " sans retour à la ligne final avant la tentative de lecture. Si « -a » " +#~ "est fourni,\n" +#~ " les mots lus sont affectés en séquence aux indices du TABLEAU, en " +#~ "commençant\n" +#~ " à zéro. Si « -e » est fourni et que le shell est interactif, « " +#~ "readline » est\n" +#~ " utilisé pour obtenir la ligne. Si « -n » est fourni avec un argument " +#~ "NCHARS non nul,\n" +#~ " « read » se termine après que NCHARS caractères ont été lus. L'option " +#~ "« -s »\n" +#~ " permet aux données venant d'un terminal de ne pas être répétées.\n" +#~ " \n" +#~ " L'option « -t » permet à « read » de se terminer avec une erreur si " +#~ "une ligne\n" +#~ " entière de données ne lui a pas été fournie avant le DÉLAI " +#~ "d'expiration. Si la\n" +#~ " variable TMOUT est définie, sa valeur est le délai d'expiration par " +#~ "défaut. Le code\n" +#~ " de retour est zéro à moins qu'une fin de fichier ne soit rencontrée, " +#~ "que « read »\n" +#~ " atteigne le délai d'expiration ou qu'un descripteur de fichier " +#~ "incorrect ne soit\n" +#~ " fourni pour l'argument « -u »." + +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N\n" +#~ " is omitted, the return status is that of the last command." +#~ msgstr "" +#~ "Permet à une fonction de se terminer avec le code de retour spécifié par " +#~ "N.\n" +#~ " Si N est omis, le code de retour est celui de la dernière commande." + +#~ msgid "" +#~ "For each NAME, remove the corresponding variable or function. Given\n" +#~ " the `-v', unset will only act on variables. Given the `-f' flag,\n" +#~ " unset will only act on functions. With neither flag, unset first\n" +#~ " tries to unset a variable, and if that fails, then tries to unset a\n" +#~ " function. Some variables cannot be unset; also see readonly." +#~ msgstr "" +#~ "Pour chaque NAME, supprime la variable ou la fonction correspondante.\n" +#~ " En spécifiant « -v », « unset » agira seulement sur les variables.\n" +#~ " Avec l'option « -f », « unset » n'agit que sur les fonctions. Sans " +#~ "option,\n" +#~ " « unset » essaye d'abord de supprimer une variable et, s'il échoue, " +#~ "essaye\n" +#~ " de supprimer une fonction. Certaines variables ne peuvent pas être " +#~ "supprimées.\n" +#~ " Consultez aussi « readonly ». " + +#~ msgid "" +#~ "NAMEs are marked for automatic export to the environment of\n" +#~ " subsequently executed commands. If the -f option is given,\n" +#~ " the NAMEs refer to functions. If no NAMEs are given, or if `-p'\n" +#~ " is given, a list of all names that are exported in this shell is\n" +#~ " printed. An argument of `-n' says to remove the export property\n" +#~ " from subsequent NAMEs. An argument of `--' disables further option\n" +#~ " processing." +#~ msgstr "" +#~ "Les NAME sont marqués pour export automatique vers l'environnement des\n" +#~ " prochaines commandes exécutées. si l'option « -f » est donnée, les " +#~ "NAME\n" +#~ " se rapportent à des fonctions. Si aucun NAME n'est donné ou si « -p " +#~ "»\n" +#~ " est fourni, la liste de tous les NAME exportés dans ce shell " +#~ "s'affiche.\n" +#~ " L'argument « -n » permet de supprimer la propriété d'export des NAME " +#~ "qui\n" +#~ " suivent. L'argument « -- » désactive le traitement des options " +#~ "suivantes." + +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may\n" +#~ " not be changed by subsequent assignment. If the -f option is given,\n" +#~ " then functions corresponding to the NAMEs are so marked. If no\n" +#~ " arguments are given, or if `-p' is given, a list of all readonly " +#~ "names\n" +#~ " is printed. The `-a' option means to treat each NAME as\n" +#~ " an array variable. An argument of `--' disables further option\n" +#~ " processing." +#~ msgstr "" +#~ "Les NAME donnés sont marqués pour lecture seule et les valeurs de ces " +#~ "NAME\n" +#~ " ne peuvent plus être changés par affection. Si l'option « -f » est " +#~ "donnée,\n" +#~ " les fonctions correspondant aux NAME sont marquées de la sorte. Si " +#~ "aucun\n" +#~ " argument n'est donné ou si « -p » est fourni, la liste de tous les " +#~ "noms\n" +#~ " en lecture seule est affichée. L'option « -a » indique de traiter " +#~ "tous les\n" +#~ " NAME comme des variables tableaux. L'argument « -- » désactive le " +#~ "traitement\n" +#~ " des option suivantes." + +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" +#~ " not given, it is assumed to be 1." +#~ msgstr "" +#~ "Les paramètres de position depuis $N+1 ... sont renommés en $1 ...\n" +#~ " Si N n'est pas fourni, il est supposé égal à 1." + +#~ msgid "" +#~ "Suspend the execution of this shell until it receives a SIGCONT\n" +#~ " signal. The `-f' if specified says not to complain about this\n" +#~ " being a login shell if it is; just suspend anyway." +#~ msgstr "" +#~ "Suspend l'exécution de ce shell jusqu'à ce qu'il reçoive le signal " +#~ "SIGCONT.\n" +#~ " Si « -f » est spécifié, il indique de ne pas se plaindre s'il s'agit " +#~ "d'un \n" +#~ " shell de connexion, mais de suspendre quand-même." + +#~ msgid "" +#~ "Print the accumulated user and system times for processes run from\n" +#~ " the shell." +#~ msgstr "" +#~ "Affiche les temps utilisateur et système accumulés pour les processus\n" +#~ " lancés depuis le shell." + +#~ msgid "" +#~ "For each NAME, indicate how it would be interpreted if used as a\n" +#~ " command name.\n" +#~ " \n" +#~ " If the -t option is used, `type' outputs a single word which is one " +#~ "of\n" +#~ " `alias', `keyword', `function', `builtin', `file' or `', if NAME is " +#~ "an\n" +#~ " alias, shell reserved word, shell function, shell builtin, disk " +#~ "file,\n" +#~ " or unfound, respectively.\n" +#~ " \n" +#~ " If the -p flag is used, `type' either returns the name of the disk\n" +#~ " file that would be executed, or nothing if `type -t NAME' would not\n" +#~ " return `file'.\n" +#~ " \n" +#~ " If the -a flag is used, `type' displays all of the places that " +#~ "contain\n" +#~ " an executable named `file'. This includes aliases, builtins, and\n" +#~ " functions, if and only if the -p flag is not also used.\n" +#~ " \n" +#~ " The -f flag suppresses shell function lookup.\n" +#~ " \n" +#~ " The -P flag forces a PATH search for each NAME, even if it is an " +#~ "alias,\n" +#~ " builtin, or function, and returns the name of the disk file that " +#~ "would\n" +#~ " be executed." +#~ msgstr "" +#~ "Indique comment chaque NAME serait interprété s'il était utilisé comme " +#~ "un\n" +#~ " nom de commande.\n" +#~ " \n" +#~ " Si l'option « -t » est utilisée, « type » affiche un simple mot " +#~ "parmi\n" +#~ " « alias », « keyword », « function », « builtin », « file » ou « », " +#~ "si\n" +#~ " NAME est respectivement un alias, un mot réservé du shell, une " +#~ "fonction\n" +#~ " du shell, une primitive, un fichier du disque, ou s'il est inconnu.\n" +#~ " \n" +#~ " Si l'indicateur « -p » est utilisé, « type » renvoie soit le nom du " +#~ "fichier\n" +#~ " du disque qui serait exécuté, soit rien si « type -t NAME » ne " +#~ "retourne pas\n" +#~ " « file ».\n" +#~ " \n" +#~ " Si « -a » est utilisé, « type » affiche tous les emplacements qui " +#~ "contiennent\n" +#~ " un exécutable nommé « file ». Ceci inclut les alias, les primitives " +#~ "et les\n" +#~ " fonctions si, et seulement si « -p » n'est pas également utilisé.\n" +#~ " \n" +#~ " L'indicateur « -P » force une recherche dans PATH pour chaque NAME " +#~ "même\n" +#~ " si c'est un alias, une primitive ou une fonction et renvoie le nom " +#~ "du\n" +#~ " fichier du disque qui serait exécuté." + +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if\n" +#~ " `-S' is supplied, the current value of the mask is printed. The `-" +#~ "S'\n" +#~ " option makes the output symbolic; otherwise an octal number is " +#~ "output.\n" +#~ " If `-p' is supplied, and MODE is omitted, the output is in a form\n" +#~ " that may be used as input. If MODE begins with a digit, it is\n" +#~ " interpreted as an octal number, otherwise it is a symbolic mode " +#~ "string\n" +#~ " like that accepted by chmod(1)." +#~ msgstr "" +#~ "Le masque de création des fichiers utilisateurs est réglé à MODE. Si " +#~ "MODE\n" +#~ " est omis ou si « -S » est fourni, la valeur actuelle du masque est " +#~ "affichée\n" +#~ " L'option « -S » rend la sortie symbolique, sinon une valeur octale " +#~ "est\n" +#~ " est utilisée. Si « -p » est fourni et que MODE est omis, la sortie se " +#~ "fait\n" +#~ " dans un format qui peut être réutilisé comme entrée. Si MODE commence " +#~ "par\n" +#~ " un chiffre, il est interprété comme un nombre octal, sinon comme une " +#~ "chaîne\n" +#~ " symbolique de mode comme celle utilisée par « chmod(1) »." + +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If\n" +#~ " N is not given, all currently active child processes are waited for,\n" +#~ " and the return code is zero. N is a process ID; if it is not given,\n" +#~ " all child processes of the shell are waited for." +#~ msgstr "" +#~ "Attend le processus spécifié et donne son code de retour. Si N n'est\n" +#~ " pas donné, tous les processus fils actuellement actifs sont attendus\n" +#~ " et le code de retour est zéro. N est un n° de processus. S'il n'est\n" +#~ " pas fourni, tous les processus du shell sont attendus." + +#~ msgid "" +#~ "Create a simple command invoked by NAME which runs COMMANDS.\n" +#~ " Arguments on the command line along with NAME are passed to the\n" +#~ " function as $0 .. $n." +#~ msgstr "" +#~ "Crée une simple commande invoquée avec NAME, et qui lance les\n" +#~ " commandes COMMANDS. Les arguments fournis avec NAME sur la\n" +#~ " ligne de commande sont transmis à la fonction en tant que $0 .. $n." + +#~ msgid "" +#~ "Toggle the values of variables controlling optional behavior.\n" +#~ " The -s flag means to enable (set) each OPTNAME; the -u flag\n" +#~ " unsets each OPTNAME. The -q flag suppresses output; the exit\n" +#~ " status indicates whether each OPTNAME is set or unset. The -o\n" +#~ " option restricts the OPTNAMEs to those defined for use with\n" +#~ " `set -o'. With no options, or with the -p option, a list of all\n" +#~ " settable options is displayed, with an indication of whether or\n" +#~ " not each is set." +#~ msgstr "" +#~ "Commute la valeur des variables qui contrôlent les comportements " +#~ "optionnels.\n" +#~ " L'option « -s » indique d'activer chaque option nommée OPTNAME. " +#~ "L'option\n" +#~ " « -u » désactive l'option OPTNAME. L'option « -q » rend la sortie " +#~ "silencieuse.\n" +#~ " Le code de retour indique si chaque OPTNAME est activée ou " +#~ "désactivée.\n" +#~ " L'option « -o » restreint les options OPTNAME à celles qui peuvent " +#~ "être utilisées avec\n" +#~ " « set -o ». Sans option ou avec l'option « -p », une liste de toutes " +#~ "les\n" +#~ " options modifiables est affichée, avec une indication sur l'état de " +#~ "chacune." + +#~ msgid "" +#~ "For each NAME, specify how arguments are to be completed.\n" +#~ " If the -p option is supplied, or if no options are supplied, " +#~ "existing\n" +#~ " completion specifications are printed in a way that allows them to " +#~ "be\n" +#~ " reused as input. The -r option removes a completion specification " +#~ "for\n" +#~ " each NAME, or, if no NAMEs are supplied, all completion " +#~ "specifications." +#~ msgstr "" +#~ "Pour chaque NAME, spécifie comment les arguments doivent être complétés.\n" +#~ " Si l'option « -p » est fournie ou si aucune option n'est fournie, les " +#~ "spécifications\n" +#~ " de complètement actuelles sont affichées de manière à pouvoir être " +#~ "réutilisées\n" +#~ " comme entrée. L'option « -r » enlève la spécification de complètement " +#~ "pour chaque\n" +#~ " NAME ou, si aucun NAME n'est fourni, toutes les spécifications de " +#~ "complètement." diff --git a/bash-5.1/po/ga.gmo b/bash-5.1/po/ga.gmo new file mode 100644 index 0000000000000000000000000000000000000000..70423c34e373e15dc2efd2d003ed50476bd6f71c GIT binary patch literal 117387 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

FLCPE`&nl>ugQImbW{&M3W>`;J3l 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 tD1>$17G{{j}Uw-EpU literal 0 HcmV?d00001 diff --git a/bash-5.1/po/ga.po b/bash-5.1/po/ga.po new file mode 100644 index 0000000..36f1b27 --- /dev/null +++ b/bash-5.1/po/ga.po @@ -0,0 +1,5393 @@ +# translation of bash.po to Irish +# Copyright (C) 2017 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# +# Séamus Ó Ciardhuáin , 2009, 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-01-16 21:05+0000\n" +"Last-Translator: Séamus Ó Ciardhuáin \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :" +"(n>6 && n<11) ? 3 : 4;\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "droch-fhoscript eagair" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: aitreabúid nameref (tagairt athróga) á baint" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" +"%s: ní féidir eagar innéacsaithe a thiontú go heagar comhthiomsaitheach" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: eochair neamhbhailí eagair chomhthiomsaithigh" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: ní féidir sannadh go hinnéacs neamhuimhriúil." + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" +"%s: %s: caithfear foscript a úsáid le sannadh chuig eagar comhthiomsaitheach" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: ní féidir cruthú: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: ní féidir mapa eochrach an ordaithe a aimsiú" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: ní \" an chéad charachtar nach spás bán é." + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "Níl '%c' dúnta i %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: deighilteoir idirstaid ar iarraidh" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "'%s': ní féidir dícheangail" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "fairsingiú lúibíní: ní féidir cuimhne a leithdháileadh le haghaidh %s" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" +"fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh %u eilimint" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh '%s'" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "'%s': ainm neamhbhailí ar mhapa eochrach" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "níl eagarthóireacht líne cumasaithe" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "'%s': ainm neamhbhailí ar mhapa eochrach " + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: ní féidir léamh: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "'%s': ainm feidhme neamhaithnid" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "Níl %s ceangailte le heochair ar bith.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "Is féidir %s a ghlaoigh trí " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "'%s': ní féidir dícheangail" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "comhaireamh lúibe" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "Gan chiall ach i lúb 'for', 'while' nó 'until'" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Aischuir comhthéacs an ghlaoigh reatha fhoghnáthaimh.\n" +" \n" +" Gan SLONN, aischuirtear '$líne $ainm_comhaid'. Le SLONN, aischuirtear\n" +" '$líne $foghnáthamh $ainm_comhaid'; is féidir lorg cruaiche a sholáthar " +"leis an\n" +" fhaisnéis bhreise seo.\n" +" \n" +" Taispeánann an luach atá ag SLONN líon na bhfrámaí glaoigh le dul siar\n" +" roimh an ceann reatha; fráma 0 an ceann atá ar barr.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear 0 ach sa chás nach bhfuil an bhlaosc ag rith feidhme " +"blaoisce, nó\n" +" sa chás go bhfuil SLONN neamhbhailí." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "Níl HOME socruithe" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "An iomarca argóintí" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "comhadlann neamhnitheach" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "Níl OLDPWD socruithe" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "líne %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "rabhadh: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: úsáid: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: tá argóint riachtanach don rogha" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: argóint uimhriúil de dhíth" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: gan aimsiú" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: rogha neamhbhailí" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: ainm neamhbhailí rogha" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "'%s': ní aitheantóir bailí é" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "uimhir ochtnártha neamhbhailí" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "uimhir heicsidheachúlach neamhbhailí" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "uimhir neamhbhailí" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: sonrú neamhbhailí comhartha" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "'%s': ní aitheantas próisis nó sonrú taisc bailí é" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: athróg inléite amháin" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s as raon" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argóint" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s as raon" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: níl a léithéid de tasc ann." + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: gan rialú tascanna." + +#: builtins/common.c:294 +msgid "no job control" +msgstr "Gan rialú tascanna." + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: srianta" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "srianta" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: ní ordú ionsuite blaoisce é." + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "earráid scríofa: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "earráid agus airíonna teirminéil á socrú: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "earráid agus airíonna teirminéil á fáil: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: earráid ag fáil na comhadlainne reatha: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: sonrú taisc athbhríoch" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "Níl cabhair ar fáil sa leagan seo." + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: ní féidir díshocrú: %s inléite amháin" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: ní féidir díshocrú" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: ainm neamhbhailí gnímh" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: níl sonrú iomlánaithe ann." + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "" +"Rabhadh: b'fhéidir nach n-oibríonn an rogha -F mar a bheifeá ag súil leis." + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "" +"Rabhadh: b'fhéidir nach n-oibríonn an rogha -C mar a bheifeá ag súil leis." + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "níl an fheidhm chomhlánaithe á rith faoi láthair" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "Inúsáidte i bhfeidhmeanna amháin. " + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: ní féidir le athróg thagartha bheith ina h-eagar" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" +"%s: ní cheadaítear tagairtí don athróg féin i nameref (tagairt athróga)" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: tagairt ainm ciorclach" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "Ní féidir '-f' a úsáid chun feidhmeanna a dhéanamh" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: feidhm inléite amháin" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: cáintear sannadh na gcomheagar athfhriotail" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: ní féidir athróga eagair a scrios mar seo." + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" +"%s: ní féidir eagar comhthiomsaitheach a thiontú go heagar innéacsaithe" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "Níl luchtú dinimiciúil ar fáil" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "Ní féidir an réad comhroinnte %s a oscailt: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "Ní féidir %s a aimsiú sa réad comhroinnte %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: níl sé luchtaithe go dinimiciúil" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" +"Theip ar an ngníomh luchtála le haghaidh %s (aiscuireadh %d): níor " +"luchtáladh é" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: níl sé luchtaithe go dinimiciúil" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: ní féidir scrios: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: is comhadlann é" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: ní gnáthchomhad é" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: tá an comhad ró-mhór" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: ní féidir comhad dénártha a rith" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: ní féidir rith: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "logout\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "Ní blaosc logála isteach é seo: úsáid 'exit'" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Tá tascanna stoptha ann.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Tá tascanna ag rith.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "Níor aimsíodh ordú" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "Sonrú staire" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: ní féidir comhad sealadach a oscailt: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "reatha" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "Tosaíodh tasc %d gan rialú tascanna." + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: rogha neamhdhleathach -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: tá argóint riachtanach don rogha -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "Tá haiseáil díchumasaithe." + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tá an tábla haiseála folamh.\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "amais\tordú\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Ordaithe blaoisce a mheaitseálann an lorgfhocal '" +msgstr[1] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" +msgstr[2] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" +msgstr[3] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" +msgstr[4] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"Ní mheaitseálann ábhar cabhrach ar bith \"%s\". Bain triail as \"help help\" " +"nó \"man -k %s\" nó \"info %s\"." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: ní féidir oscailt: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Tá na horduithe blaoisce seo sainmhínithe go hinmheánach.\n" +"Usáid \"help\" leis an liosta seo a thaispeáint.\n" +"Úsáid \"help ainm\" chun tuilleadh eolais a fháil faoin bhfeidhm \"ainm\".\n" +"Úsáid \"info bash\" chun tuilleadh eolais a fháil faoin mblaosc féin.\n" +"Úsáid \"man -k\" nó \"info\" chun tuilleadh eolais a fháil faoi ordaithe " +"nach bhfuil sa liosta seo.\n" +"Ciallaíonn réalt (*) ar ainm go bhfuil an t-ordú díchumasaithe.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "Ní féidir níos mó ná ceann amháin as -anrw a úsáid." + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "suíomh staire" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: stampa ama neamhbhailí" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: theip ar fhairsingiú staire." + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: theip ar inlib" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "Níl roghanna eile ceadaithe le '-x'" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: is gá le argóintí bheith ina aitheantais phróisis nó taisc" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Earráid neamhaithnid" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "Ag súil le slonn" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: ní eagar innéacsaithe é" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: sonrú neamhbhailí tuairisceora comhaid" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: comhaireamh neamhbhailí línte" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: bunphointe neamhbhailí eagair" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: candam neamhbhailí aisghlaoigh" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "ainm folamh athróga eagair" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "tacaíocht le hathróga eagair de dhíth" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "'%s': carachtar formáide ar iarraidh." + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "'%c': sonrú neamhbhailí formáide ama" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "'%c': carachtar formáide neamhbhailí." + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "rabhadh: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "fadhb i bpársáil formáide: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "digit Unicode ar iarraidh le haghaidh \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "Níl comhadlann eile ann" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: argóint neamhbhailí" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "cruach chomhadlainne fholamh" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "innéacs chruach na gcomhadlann" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Taispeáin liosta na gcomhadlann a bhfuil cuimhne orthu faoi láthair.\n" +" Cuirtear comhadlanna ar an liosta leis an ordú \"pushd\". Is féidir dul\n" +" siar trín liosta leis an ordú \"popd\".\n" +" \n" +" Roghanna:\n" +" -c\tglantar cruach na gcomhadlann trí gach mhír a bhaint de\n" +" -l\tná priontáiltear na comhadlanna i gcoibhneas le do chomhadlann " +"bhaile\n" +" \tagus le tilde rompu\n" +" -p\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne\n" +" -v\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne agus\n" +" \ta háit sa chruach roimpi\n" +" \n" +" Argóintí:\n" +" +N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó thaobh " +"clé\n" +" \tan liosta a thaispeántar le \"dirs\" rite gan argóintí, ag tosú ó " +"náid. -N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó " +"thaobh deas\n" +" \tan liosta a thaispeántar le \"dirs\" rite gan argóintí, ag tosú ó " +"náid." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Cuireann \"pushd\" comhadlann ar bharr na cruaiche comhadlanna, nó " +"rothlaíonn\n" +" sé an chruach, ag cur barr nua na cruaiche mar an chomhadlann oibrithe\n" +" reatha. Gan argóintí, malartaítear an dá chomhadlann ar bharr.\n" +" \n" +" Roghanna:\n" +" -n\tNá déantar an gnáthathrú comhadlainne agus comhadlanna á gcur\n" +" \tleis an gcruach; ní athraítear ach an chruach.\n" +" \n" +" Argóintí:\n" +" +N\tRothlaítear an chruach sa chaoi go mbeidh an Nú chomhadlann (ag\n" +" \tcomhaireamh ó thaobh clé an liosta a thaispeánann \"dirs\" agus ag " +"tosú\n" +" \tó náid) ar bharr.\n" +" \n" +" -N\tRothlaítear an chruach sa chaoi go mbeidh an Nú chomhadlann (ag\n" +" \tcomhaireamh ó thaobh deas an liosta a thaispeánann 'dirs' agus ag " +"tosú\n" +" \tó náid) ar bharr.\n" +" \n" +" COMHADLANN\tCuirtear COMHADLANN ar bharr na cruaiche, agus socraítear\n" +" \tí mar an chomhadlann oibrithe reatha.\n" +" \n" +" Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Baineann \"popd\" comhadlanna ón gcruach comhadlanna. Gan argóintí, baintear " +"an\n" +" chomhadlann ó bharr na cruaiche, agus téann sé go dtí an chomhadlann\n" +" atá ar bharr.\n" +" \n" +" Roghanna:\n" +" -n\tNá déantar an gnáthathrú comhadlainne agus comhadlanna á gcur\n" +" \tleis an gcruach; ní athraítear ach an chruach.\n" +" \n" +" Argóintí:\n" +" +N\tBaintear an Nú chomhadlann ag comhaireamh ó thaobh clé an liosta\n" +" \ta thaispeánann \"dirs\" agus ag tosú ó náid. Mar shampla, baineann\n" +" \t\"popd +0\" an chéad chomhadlann, agus \"popd +1\" an dara cheann.\n" +" \n" +" -N\tBaintear an Nú chomhadlann ag comhaireamh ó thaobh deas an liosta\n" +" \ta thaispeánann 'dirs' agus ag tosú ó náid. Mar shampla, baineann\n" +" \t\"popd -0\" an chomhadlann dheireanach, agus \"popd -1\" an ceann\n" +" \tleathdheireanach.\n" +" \n" +" Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: sonrú neamhbhailí teorann ama" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "Earráid léite: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"Ní féidir \"return\" a dhéanamh ach ó fheidhm nó ó script rite le \"source\"" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "Ní féidir feidhm agus athróg a dhíshocrú ag an am céanna." + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: ní athróg eagair é" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: ní feidhm é." + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: ní féidir easpórtáil" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "comhaireamh iomlaoide" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "Ní féidir roghanna blaoisce a shocrú agus a dhíshocrú ag an am céanna." + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: ainm neamhbhailí ar rogha blaoisce" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "Is gá don argóint bheith ina ainm comhaid." + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: níor aimsíodh an comhad" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "Ní féidir cur ar fionraí." + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "Ní féidir blaosc logála isteach a chur ar fionraí." + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "Tá %s ailiasáilte go '%s'.\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "Is eochairfhocal blaoisce é %s.\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "Is feidhm é %s.\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "Is ordú ionsuite blaoisce speisialta é %s\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "Is ordú ionsuite blaoisce é %s\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "Tá %s %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "Tá %s haiseáilte (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: argóint teorann neamhbhailí" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "'%c': droch-ordú" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: ní féidir teorainn a fháil: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "teorainn" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: ní féidir teorainn a athrú: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "uimhir ochtnártha" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "'%c': oibreoir neamhbhailí móid shiombalaigh" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "'%c': carachtar neamhbhailí móid shiombalaigh" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " líne " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "Ordú deireanach: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Ag tobscor..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "EOLAS: " + +#: error.c:462 +msgid "unknown command error" +msgstr "earráid ordaithe neamhaithnid" + +#: error.c:463 +msgid "bad command type" +msgstr "droch-chineál ordaithe" + +#: error.c:464 +msgid "bad connector" +msgstr "drochnascóir" + +#: error.c:465 +msgid "bad jump" +msgstr "drochléim" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: athróg neamhcheangailte" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aImithe thar am ag feitheamh le hionchur: logáil amach uathoibríoch\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "Ní féidir an ionchur caighdeánach a atreorú ó /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "FORMÃID_AMA: '%c': carachtar formáide neamhbhaií." + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: tá an comhphróiseas [%d:%s] fós ann" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "earráid phíopa" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: imithe thar uasleibhéal neadaithe eval (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: imithe thar uasleibhéal neadaithe foinse (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: imithe thar uasleibhéal neadaithe feidhme (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: srianta: ní féidir \"/\" a shonrú in ainmneacha ordaithe" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: níor aimsíodh an t-ordú" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: drochléirmhínitheoir" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: ní féidir comhad dénártha a rith: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "Is ordú ionsuite speisialta é '%s'" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "" +"Ní féidir an tuairisceoir comhaid %d a dhúbailt mar thuairisceoir comhaid %d." + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "Imithe thar leibhéal athchursála sloinn" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "Gannsreabhadh na cruaiche athchúrsála" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "Earráid chomhréire sa slonn." + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "Deineadh iarracht sannadh go rud nach athróg é." + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "Earráid chomhréire i sannadh athróige." + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "Roinnt ar 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "Fabht: droch-chomhartha expassign" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "Bhíothas ag súil le \":\" le haghaidh sloinn choinníollaigh." + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "Easpónant níos lú ná 0." + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "Ag súil le aitheantóir tar éis réamhincriminte nó réamhdeicriminte" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "\")\" ar iarraidh" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "Earráid chomhréire: bhíothas ag súil le hoibreann." + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "Earráid chomhréire: oibreoir neamhbhailí uimhríochta" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (comhartha earráide '%s')" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "Bonnuimhir uimhríochtúil neamhbhailí." + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: comhaireamh neamhbhailí línte" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "Tá an luach rómhór don bhonnuimhir." + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: earráid sloinn\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: ní féidir na máthairchomhadlanna a rochtain." + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "" +"Ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid " +"%d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"Ní féidir tuairisceoir comhaid nua a leithdháileadh le haghaidh ionchur bash " +"ón tuairisceoir comhaid %d." + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" +"save_bash_input: tá an maolán ann cheana le haghaidh an tuairisceoir comhaid " +"nua %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp píopa" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "Tá aitheantas an phróisis ghabhlaithe %d sa tasc %d atá ag rith" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "Tá an tasc stoptha %d leis an ngrúpa próisis %ld á scrios." + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: próiseas %5ld (%s) marcáilte mar fós beo" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: níl an aitheantóir próisis sin ann." + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Comhartha %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Déanta" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Stoptha" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Stoptha(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Ag Rith" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Déanta(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Scoir %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Stádas neamhaithnid" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(cuimhne dumpáilte)" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (comhadlann oibre: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid macphróisis (%ld go %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: níl an próiseas %ld ina mhacphróiseas den bhlaosc seo." + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: níl taifead den phróiseas %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: tá an tasc %d stoptha." + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: níl a léithéid de tasc ann." + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: tá an tasc críochnaithe." + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: tá an tasc %d sa chúlra cheana." + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: ag cumasú WNOHANG chun stad éiginnte a sheachaint" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: líne %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (cuimhne dumpáilte)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(comhadlann oibre anois: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: theip ar getpgrp" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: níl rialú jabanna ar fáil sa chúlra" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: araíonacht líne" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "ní féidir an grúpa próisis teirminéil a athrú (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "Níl rialú tascanna sa bhlaosc seo." + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: dearbhú teipthe: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: dearbhú ina phraiseach\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "neamhaithnid" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: bloc ar an liosta saor scriosta" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: glaoite le argóint bhloic á saoradh cheana" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: glaoite le argóint bhloic nár leithdháileadh" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: gannsreabhadh; tá mh_nbytes as raon" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: gannsreabhadh; tá mh_nbytes as raon" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: ní ionann méid na smután túis agus deiridh" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: glaoite le argóint bhloic nár leithdháileadh" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: ní ionann méideanna na smután túis agus deiridh" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: an bhfuil an tábla leithdháilte lán le FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" +"register_alloc: an bhfuil %p sa tábla mar atá sé leithdháilte cheana?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: an bhfuil %p sa tábla cheana mar ceann saor?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "Bonn neamhbhailí" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: óstríomhaire neamhaithnid" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: seirbhís neamhbhailí" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: drochshonrú conaire líonra" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "Ní thacaítear le oibríochtaí líonra." + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Tá ríomhphost agat i $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Tá ríomhphost nua agat i $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Tá an ríomhphost i %s léite\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "Earráid chomhréire: tá slonn uimhríochtúil de dhith." + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "Earráid chomhréire: ';' gan súil leis." + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "Earráid chomhréire: '((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: drochchineál ordaithe %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"Cáipéis leabaithe ag líne %d teormharcáilte le deireadh comhaid (\"%s\" á " +"lorg)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: ordú atreoraithe \"%d\" as raon." + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: tá méid an líne ionchuir blaoisce (%zu) níos mó ná SIZE_MAX " +"(%lu): líne giorraithe" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "Imithe thar uasfhad na cáipéise-anseo" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "Deireadh comhaid gan súil leis agus \"%c\" a mheaitseálann á lorg." + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "Deireadh comhaid gan súil leis agus \"]]\" á lorg." + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" +"Earráid chomhréire i slonn coinníollach: comhartha \"%s\" gan suil leis." + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "Earráid chomhréire i slonn coinníollach." + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "Comhartha '%s' gan súil leis; ag súil le ')'." + +#: parse.y:4787 +msgid "expected `)'" +msgstr "Ag súil le \")\"" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "Argóint \"%s\" gan súil lei go hoibreoir aonártha coinníollach." + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "Argóint gan súil lei go hoibreoir coinníollach aonártha ." + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" +"Comhartha \"%s\" gan súil leis. Bhíothas ag súil le hoibreoir coinníollach " +"dénártha." + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "Bhíothas ag súil le hoibreoir coinníollach dénártha." + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "Argóint '%s' gan súil lei go hoibreoir dénártha coinníollach." + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "Argóint gan súil lei go hoibreoir dénártha coinníollach." + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "Comhartha '%c' gan súil leis in ordú coinníollach." + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "Comhartha \"%s\" gan súil leis in ordú coinníollach." + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "Comhartha %d gan súil leis in ordú coinníollach." + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "Earráid chomhréire in aice comhartha '%s' nach rabhthas ag súil leis." + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "Earráid chomhréire in aice '%s'" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "Earráid chomhréire: deireadh comhaid gan súil leis." + +#: parse.y:6365 +msgid "syntax error" +msgstr "Earráid chomhréire" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Úsáid '%s' le scoir den mblaosc.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "Deireadh comhaid gan súil leis agus ')' á lorg le meaitseáil." + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "Iomlánú: níor aimsíodh an fheidhm '%s'." + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "críochnú in-ríomhchláraithe: %s: d'fhéadfadh lúb atriail a bheith ann" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: tá COMPSPEC neamhnitheach" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: drochnascóir '%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: tuairisceoir comhaid neamhbhailí" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: pointeoir folamh comhaid" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: '%c': carachtar formáide neamhbhailí" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "tuairisceoir comhaid as raon" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: atreorú athbhríoch" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: ní féidir comhad atá ann cheana a fhorscríobh." + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: srianta: ní féidir aschur a atreorú." + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "ní féidir cáipéis shealadach a chruthú don cháipéis leabaithe: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: ní féidir tuairisceoir comhaid a shannadh go hathróg." + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "Ní thacaítear le /dev/(tcp|udp)/óstríomhaire/port gan líonrú." + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "Earráid atreoraithe: ní féidir an tuairisceoir comhaid a dhúbailt." + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "Níorbh fhéidir /tmp a aimsiú. Cruthaigh é le do thoil!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "Caithfidh /tmp bheith ina ainm comhadlainne bailí." + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" +"Tabharfar neamhaird ar an mód deaphriontála i mblaoscanna idirghníomhacha." + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: rogha neamhbhailí" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" +"Ní féidir an t-aitheantóir úsáideora (uid) a athrú go %d: aitheantóir " +"éifeachtach %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" +"Ní féidir an t-aitheantóir grúpa (gid) a athrú go %d: aitheantóir " +"éifeachtach %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" +"Ní féidir an dífhabhtóir a thosú; tá an mód dífhabhtaithe díchumasaithe." + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: is comhadlann é" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Níl ainm orm!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, leagan %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Úsáid:\t%s [rogha fada GNU] [rogha] ...\n" +"\t%s [rogha fada GNU] [rogha] comhad_scripte ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Roghanna fada GNU:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Roghanna blaoisce:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD nó -c ordú nó -O rogha_shopt\t\t(glaoch amháin)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s nó -o rogha\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Úsáid %s -c 'help set' le haghaidh tuilleadh eolais faoi roghanna blaoisce.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Úsáid '%s -c help' le haghaidh tuilleadh eolais faoi orduithe ionsuite " +"blaoisce.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Úsáid an t-ordú 'bashbug' le tuarascáil a sheoladh faoi fhabht.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "leathanach baile bash: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Cabhair ghinearálta le bogearraí GNU: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: oibríocht neamhbhailí" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Droch-chomhartha" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Crochadh" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Idirbhriseadh" + +#: siglist.c:58 +msgid "Quit" +msgstr "Scoir" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Treoir mídhleathach" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "Rianú/gaistiú brisphointe" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Treoir ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "Treoir EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Eisceacht snámhphointe" + +#: siglist.c:86 +msgid "Killed" +msgstr "Maraithe" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Earráid bhus" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Fabht deighilte" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Droch-ghlaoch córais" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Píopa briste" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Clog aláraim" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Críochnaithe" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Staid phráinneach I/A" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Stoptha (comhartha)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Lean ar aghaidh" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Bás macphróisis nó stopadh" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Stoptha (ionchur teirminéil)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Stoptha (aschur teirminéil)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/A ullamh" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Teorainn LAP" + +#: siglist.c:154 +msgid "File limit" +msgstr "Teorainn chomhad" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Aláram (fíorúil)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Aláram (próifíl)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Fuinneog athraithe" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Glas taifid" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Comhartha úsáideora 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Comhartha úsáideora 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "sonraí ionchuir HFT ar feitheamh" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "teip chumhachta ar tí tarlú" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "cliseadh córais ar tí tarlú" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "bog próiseas go LAP eile" + +#: siglist.c:198 +msgid "programming error" +msgstr "earráid ríomhchláraithe" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "mód monatóireachta HFT ceadaithe" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "mód monatóireachta HFT cealaithe" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "seicheamh fuaime HFT críochnaithe" + +#: siglist.c:214 +msgid "Information request" +msgstr "Iarratas faisnéise" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Comhartha neamhaithnid #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "Drochionadú: níl '%s' dúnta i %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: ní féidir liosta a shannadh go ball eagair." + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadaíocht próisis." + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadaíocht próisis." + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh léamh." + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh scríofa." + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" +"Ní féidir an píopa ainmnithe %s a dhúbailt mar thuairisceoir comhaid %d." + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "ionadú orduithe: tugadh neamhaird ar ghiotán neamhnitheach san ionchur" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadú ordaithe." + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadú ordaithe." + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" +"command_substitute: ní feidir an píopa a dhúbailt mar thuairisceoir comhaid " +"1." + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: fairsingiú neamhbhailí indíreach" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: ainm neamhbhailí athróige" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: paraiméadar gan socrú." + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: paraiméadar neamhnitheach nó gan socrú." + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: slonn fotheaghráin < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: drochionadú" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: ní féidir sannadh mar seo." + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"i leaganacha den bhlaosc amach anseo, beidh luachálú mar ionadú uimhríochta " +"éigeantach" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "drochionadú: níl '`' dúnta i %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "gan meaitseáil: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "Bhíothas ag súil le hargóint." + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: ag súil le slonn slánuimhreach." + +#: test.c:265 +msgid "`)' expected" +msgstr "Ag súil le ')'" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "Ag súil le ')', ach fuarthas %s." + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: ag súil le hoibreoir dénártha." + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: ag súil le hoibreoir aonártha." + +#: test.c:881 +msgid "missing `]'" +msgstr "']' ar iarraidh" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "Earráid chomhréire: ';' gan súil leis." + +#: trap.c:220 +msgid "invalid signal number" +msgstr "Uimhir chomhartha neamhbhailí" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: imithe thar uasleibhéal na láimhseálaithe gaistí (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: drochluach sa liosta_gaistí[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: is SIG_DFL an láimhseálaí comharthaí; %d (%s) á " +"athsheoladh chugam féin." + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: droch-chomhartha %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "Earráid agus sainmhíniú na feidhme '%s' á iompórtáil." + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "Tá an leibhéal blaoisce (%d) ró-ard; á athshocrú go 1." + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: níl comhthéacs feidhme sa scóip reatha." + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: ní féidir luach a shannadh ar an athróg" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: slánuimhir a sannadh go tagairt ainm" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: níl comhthéacs feidhme sa scóip reatha" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "Tá teaghrán easpórtála neamhnitheach ag %s" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "Carachtar neamhbhailí %d sa teaghrán easpórtála le haghaidh %s." + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "Níl '=' sa teaghrán easpórtála le haghaidh %s." + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: ní comhthéacs feidhme é ceann shell_variables" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: níl comhthéacs global_variables ann" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: ní scóip shealadach thimpeallachta é ceann shell_variables" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: ní féidir a oscailt mar CHOMHAD" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: luach neamhbhailí le haghaidh tuairisceoir comhaid rianaithe" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: luach comhoiriúnachta as raon" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Cóipcheart © 2012 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Ceadúnas GPLv3+: GNU GPL leagan 3 nó níos déanaí \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, leagan %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Is saorbhogearra é seo; tá cead agat é a athrú agus é a athdháileadh." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "" +"Ní ghabhann baránta ar bith leis, sa mhéid is atá sin ceadaithe de réir dlí." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: ní féidir %lu beart a leithdháileadh" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" +"%s: %s:%d: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: ní féidir %lu beart a leithdháileadh" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [ainm[=luach] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] ainm [ainm ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m MAPA_EOCHRACH] [-f AINM_CHOMHAID] [-q AINM] [-u AINM] [-" +"r SRAITH_EOCHRACHA] [-x SRAITH_EOCHRACHA:ORDÚ_BLAOISCE] [SRAITH_EOCHRACHA:" +"GNÃOMH_readline nó ORDÚ_readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [N]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [N]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [ORDÚ-IONSUITE-BLAOISCE [ARGÓINT ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [SLONN]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [comhadlann]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] ORDÚ [ARGÓINT ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [AINM[=LUACH] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] AINM[=LUACH] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [ROGHA] AINM[=LUACH] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [ARGÓINT ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [ARGÓINT ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f comhadainm] [ainm ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [argóint ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts teaghrán_roghanna ainm [argóint]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a AINM] [ORDÚ [ARGÓINTà ...]] [ATREORÚ ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [N]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e AINM_E] [-lnr] [CÉAD] [DEIREANACH] nó fc -s [PATRÚN=IONADAÃ] [ORDÚ]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [SONRÚ_TAISC]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [SONRÚ_TAISC ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p CONAIR] [-dt] [AINM ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [PATRÚN ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d SEACH_CHUR] [n] nó history -anrw [COMHADAINM] nó history -" +"ps ARGÓINT [ARGÓINT...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [SONRÚ_TAISC ...] nó jobs -x ORDÚ [ARGÓINTÃ]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [SONRÚ_TAISC ... | AITHEANTAS_PRÓISIS ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s SONRÚ_COMHARTHA | -n UIMHIR_CHOMHARTHA | -SONRÚ_COMHARTHA] " +"AITHEANTAS_PRÓISIS | SONRÚ_TAISC ... nó kill -l [SONRÚ_COMHARTHA]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let argóint [argóint ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a eagar] [-d teormharcóir] [-i téacs] [-n líon_carachtar] [-N " +"líon_carachtar] [-p leid] [-t teorainn_ama] [-u tuairisceoir_comhaid] " +"[ainm ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o AINM-ROGHA] [--] [ARGÓINT ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [AINM ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [AINM[=LUACH] ...] nó export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [ainm[=luach] ...] nó readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source AINM_COMHAID [ARGÓINTÃ]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". comhadainm [argóintí]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [slonn]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ argóint... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[argóint] sonrú_comhartha ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] ainm [ainm ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [teorainn]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [MÓD]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [AITHEANTAS ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [AITHEANTAS_PRÓISIS ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for AINM [in FOCAIL ... ] ; do ORDUITHE; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( slonn1; slonn2; slonn3 )); do ORDUITHE; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select AINM [in FOCAIL ... ;] do ORDUITHE; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] PÃBLÃNE" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case FOCAL in [PATRÚN [| PATRÚN]...) ORDUITHE ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if ORDUITHE; then ORDUITHE; [ elif ORDUITHE; then ORDUITHE; ]... [ else " +"ORDUITHE; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while ORDUITHE1; do ORDUITHE2; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until ORDUITHE; do ORDUITHE; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [AINM] ORDÚ [ATREORUITHE]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function AINM { ORDUITHE ; } nó AINM () { ORDUITHE ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ ORDUITHE ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "SONRÚ_TAISC [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( slonn ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ slonn ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "athróga - ainmneacha agus mínithe ar athróga áirithe blaoisce" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | comhadlann]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [AINM_ROGHA ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v athróg] formáid [argóintí]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o ROGHA] [-A GNÃOMH] [-G PATRÚN] [-W " +"LIOSTA_FOCAL] [-F FEIDHM] [-C ORDÚ] [-X PATRÚN_SCAGAIRE] [-P RÉIMÃR] [-S " +"IARMHÃR] [AINM ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o rogha] [-A gníomh] [-G patrún] [-W " +"liosta_focal] [-F feidhm] [-C ordú] [-X patrún_scagaire] [-P réimír] [-S " +"iarmhír] [focal]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o ROGHA] [-DEI] [AINM ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d TEORMHARCÓIR] [-n COMHAIREAMH] [-O BUNÚS] [-s COMHAIREAMH] [-t] " +"[-u TC] [-C AISGHLAOCH] [-c CANDAM] [EAGAR]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d TEORMHARCÓIR] [-n COMHAIREAMH] [-O BUNÚS] [-s COMHAIREAMH] [-" +"t] [-u TUAIRISCEOIR_COMHAID] [-C AISGHLAOCH] [-c CANDAM] [EAGAR]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Sainigh nó taispeáin ailiasanna.\n" +" \n" +" Gan argóintí, priontáiltear an liosta ailiasanna san fhoirm\n" +" ath-inúsáidte 'alias AINM=LUACH' ar an ngnáth-aschur.\n" +" \n" +" I ngach cás eile, sainítear ailias do gach AINM a thugtar LUACH dó.\n" +" Má tá spás chun deiridh LUACH, déantar an chéad fhocal eile a sheiceáil\n" +" le haghaidh ionadú ailias nuair a fhairsingítear an ailias.\n" +" \n" +" Roghanna:\n" +" -p\tPriontáiltear gach ailias sainithe i bhfoirm ath-inúsáidte.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear fíor mura dtugtar AINM nach bhfuil ailias sainithe dó." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Bain gach AINM de liosta na n-ailiasanna sainithe.\n" +" \n" +" Roghanna:\n" +" -a\tbaintear gach sainiú ailias.\n" +" \n" +" Aischuirtear rath ach sa chás nach bhfuil AINM ann." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Scoir de lúba for, while nó until.\n" +" \n" +" Scoir de lúb 'for', 'while' nó 'until'. Má shonraítear N, scoir\n" +" de N lúb mhórthimpeall.\n" +" \n" +" Stádas Scortha:\n" +" Is é 0 an stádas scortha mura bhfuil N níos lú ná 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Lean ar aghaidh le lúba for, while nó until.\n" +" \n" +" Tosaigh an chéad atriall eile den lúb mhórthimpeall 'for', 'while' nó " +"'until'.\n" +" Má shonraítear N, tosaigh an Nú lúb mhórthimpeall.\n" +" \n" +" Stádas Scortha:\n" +" Is é 0 an stádas scortha mura bhfuil N níos lú ná 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Rith orduithe ionsuite na blaoisce.\n" +" \n" +" Ritear ORDÚ-IONSUITE-BLAOISCE leis na hargóintí ARGÓINTà gan cuardach\n" +" ordaithe a dhéanamh. Tá sé seo úsáideach más mian ordú blaoisce a\n" +" athshainiú mar fheidhm bhlaoisce agus gur ghá an t-ordú ionsuite a rith\n" +" laistigh den fheidhm.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas scortha ORDÚ-IONSUITE-BLAOISCE, nó falsa sa chás " +"nach\n" +" bhfuil ORDÚ-IONSUITE-BLAOISCE ina ordú ionsuite blaoisce." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Aischuir comhthéacs an ghlaoigh reatha fhoghnáthaimh.\n" +" \n" +" Gan SLONN, aischuirtear '$líne $ainm_comhaid'. Le SLONN, aischuirtear\n" +" '$líne $foghnáthamh $ainm_comhaid'; is féidir lorg cruaiche a sholáthar " +"leis an\n" +" fhaisnéis bhreise seo.\n" +" \n" +" Taispeánann an luach atá ag SLONN líon na bhfrámaí glaoigh le dul siar\n" +" roimh an ceann reatha; fráma 0 an ceann atá ar barr.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear 0 ach sa chás nach bhfuil an bhlaosc ag rith feidhme " +"blaoisce, nó\n" +" sa chás go bhfuil SLONN neamhbhailí." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Athraigh comhadlann oibre na blaoisce.\n" +" \n" +" Athraíonn \"cd\" an chomhadlann reatha go COMHADLANN. Is é luach na " +"hathróige\n" +" blaoisce HOME an réamhshocrú le haghaidh COMHADLANN.\n" +" \n" +" Sainmhíníonn an athróg CDPATH an chonair chuardaigh don chomhadlann ina\n" +" bhfuil COMHADLANN. Cuirtear idirstad (:) idir ainmneacha malartacha\n" +" comhadlainne i CDPATH.\n" +" Is ionann ainm comhadlainne folamh agus an chomhadlann reatha. Má " +"thosaíonn\n" +" COMHADLANN le slaiste (/), ní usáidtear CDPATH.\n" +" \n" +" Mura aimsítear an chomhadlann, agus má ta an athróg bhlaoisce " +"\"cdable_vars\"\n" +" socruithe, glactar leis an bhfocal mar ainm athróige. Má tá luach ag an " +"athróg\n" +" sin, úsáidtear a luach i gcomhair COMHADLANN.\n" +" \n" +" Roghanna:\n" +" -L\tLean naisc shiombalaigh. Taifigh naisc shiombalaigh i COMHADLANN\n" +" \t\ttar éis gach \"..\" a phróiseáil. -P\tÚsáid an chomhadlann " +"fhisiciúil gan naisc shiombalaigh a leanúint.\n" +" \t\tTaifigh naisc shiombalaigh i COMHADLANN roimh \"..\" a " +"phróiseáil.\n" +" -e\tMá tá an rogha -P ann, agus mura féidir an chomhadlann oibre " +"reatha\n" +" \t\ta dhéanamh amach i gceart, scoir le stádas nach náid é.\n" +" -@\tMá thacaíonn an córas leis, taispeáin comhad le haitreabúidí " +"bhreisithe\n" +" \t\tmar chomhadlann ina bhfuil na haitreabúidí bhreisithe.\n" +" \n" +" Leantar naisc shiombalaigh ar bhonn réamhshocraithe, mar a bheadh -L " +"ann.\n" +" Chun \"..\" a phróiseáil, baintear páirt na conaire díreach roimhe siar " +"go\n" +" slaiste (/) nó go tús COMHADLANN.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear 0 má athraíodh an chomhadlann, agus má d'éirigh le socrú " +"$PWD\n" +" nuair a úsáidtear -P; i gcásanna eile aischuirtear luach nach náid é." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Priontáil ainm na comhadlainne oibre reatha.\n" +" \n" +" Roghanna:\n" +" -L\tpriontáil luach $PWD má thugann sé ainm na comhadlainne\n" +" \toibre reatha.\n" +" -P\tpriontáil an chomhadlann fhisiciúil, gan naisc shiombalacha\n" +" \n" +" Mar réamhshocrú, oibríonn 'pwd' faoi mar a bheadh '-L' sonraithe.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear luach de 0 ach sa chás go dtugtar rogha neamhbhailí nó nach " +"féidir\n" +" an chomhadlann reatha a léamh." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Ordú neamhnitheach.\n" +" \n" +" Gan éifeacht; ní dhéanann an t-ordú faic.\n" +" \n" +" Stadas Scortha:\n" +" Éiríonn leis i gcónaí." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Aischuir toradh rathúil.\n" +" \n" +" Stádas Scortha:\n" +" Éiríonn leis i gcónaí." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Aischuir toradh neamhrathúil.\n" +" \n" +" Stádas Scortha:\n" +" Teipeann air i gcónaí." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Ritheann \"command\" ordú simplí nó taispeánann eolas maidir le horduithe.\n" +" \n" +" Ritear ORDÚ le hARGÓINTà gan cuardach feidhme blaoisce, nó taispeántar\n" +" eolas maidir leis na horduithe sonraithe. Is féidir é seo a úsáid chun " +"orduithe ar\n" +" diosca a rith má tá feidhm leis an ainm céanna ann.\n" +" \n" +" Roghanna:\n" +" -p\túsáidtear luach réamhshocraithe le haghaidh CONAIR a aimseoidh go " +"cinnte\n" +" \tgach ceann de na gnáthríomhchláir áirge.\n" +" -v\ttaispeántar cur síos ar ORDÚ cosúil leis an ordú ionsuite 'type'\n" +" -V\ttaispeántar cur síos níos faide ar gach ORDÚ\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear an stádas scortha ó ORDÚ, nó teip sa chás nach n-aimsítear " +"ORDÚ." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Socraíonn \"declare\" luachanna agus airíonna athróige.\n" +" \n" +" Fograíonn \"declare\" athróga agus tugann sé aitreabúidí dóibh. Gan\n" +" AINMneacha, taispeántar a luach agus a haitreabúidí le haghaidh gach " +"athróg.\n" +" \n" +" Roghanna:\n" +" -f\tGníomh nó taispeáint srianta le hainmneacha feidhmeanna agus " +"sainithe.\n" +" -F\tGníomh le hainmneacha feidhmeanna amháin (móide uimhir líne agus\n" +" \t\tcomhad foinse le linn dífhabhtaithe).\n" +" -g\tCruthaítear athróga comhchoiteanna nuair a úsáidtear é laistigh " +"de\n" +" \t\tfheidhm bhlaoisce; déantar neamhaird de i gcásanna eile.\n" +" -p\tTaispeántar a luach agus a haitreabúidí le haghaidh gach AINM.\n" +" \n" +" Roghanna a shocraíonn aitreabúidí:\n" +" -a\tAINMneacha mar eagair innéacsaithe (má thacaítear leo)\n" +" -A\tAINMneacha mar eagair chomhthiomsaitheacha (má thacaítear leo)\n" +" -i\tCuirtear an aitreabúid \"integer\" (.i. slonnuimhir) le " +"hAINMneacha.\n" +" -l\tTiontaítear luach gach AINM go cás íochtair agus é á shannadh.\n" +" -n\tBíodh AINM ina thagairt don athróg ainmnithe ag a luach.\n" +" -r\tBíodh AINMneacha inléite amháin.\n" +" -t\tCuirtear an aitreabúid \"trace\" (.i. lorg) le hAINMneacha.\n" +" -u\tTiontaítear luach gach AINM go cás uachtair agus é á shannadh.\n" +" -x\tEaspórtálfar na hAINMneacha as seo amach.\n" +" \n" +" Le \"+\" in áit \"-\", múchtar an aitreabúid shonraithe.\n" +" \n" +" Má tá an aitreabúid \"integer\" ag athróg, déantar luacháil " +"uimhríochtuil\n" +" (feic an t-ordú \"let\") nuair a shanntar leis an athróg.\n" +" \n" +" Nuair a úsáidtear \"declare\" laistigh de fheidhm, beidh na hAINMneacha\n" +" logánta, mar a bheadh leis an t-ordú \"local\". Stopann an rogha \"-g\" " +"é seo.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó go\n" +" dtarlaíonn earráid shannta." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Socraíonn \"typeset\" luachanna agus airíonna athróige.\n" +" \n" +" Comhchiallach le \"declare\". Feic \"help declare\"." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Sainíonn \"local\" athróga logánta.\n" +" \n" +" Cruthaítear athróg logánta darbh ainm AINM, agus cuirtear LUACH leis.\n" +" Is féidir ceann ar bith de na roghanna a ghlacann \"declare\" leo a " +"úsáid\n" +" mar ROGHA.\n" +" \n" +" Ní féidir athróga logánta a úsáid ach laistigh de fheidhm. Tá siad " +"infheicthe\n" +" san fheidhm ina shainítear iad agus a mic amháin.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó go " +"dtarlaíonn earráid,\n" +" nó go bhfuil an bhlaosc ag rith feidhme." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Scríobhann \"echo\" na hargóintí ar an ngnáthaschur.\n" +" \n" +" Taispeántar na hARGÓINTà ar an ngnáthaschur le carachtair spáis eatarthu " +"agus\n" +" líne nua ina ndiadh.\n" +" \n" +" Roghanna:\n" +" -n\tní hiarcheanglaítear líne nua\n" +" -e\tcumasaítear na héaluithe cúlslaise thíos\n" +" -E\tdíchumasaítear na héaluithe cúlslaise\n" +" Tuigeann 'echo' na carachtair éalaithe le cúlslais seo a leanas:\n" +" \\a\tairdeall (clog)\n" +" \\b\tcúlspás\n" +" \\c\tcur deireadh le aschur\n" +" \\e\tcaractar éalaithe\n" +" \\E\tcaractar éalaithe\n" +" \\f\tfotha foirme\n" +" \\n\tlíne nua\n" +" \\r\taisfhilleadh carráiste\n" +" \\t\ttáib chothrománach\n" +" \\v\ttáib ingearach\n" +" \\\\\tcúlslais\n" +" \\0nnn\tan carachtar leis an gcód ASCII NNN (ochtnártha). Is féidir le " +"NNN\n" +" \t\tbheith 0 go 3 digit ochtnártha ar fhad\n" +" \\xHH\tan carachtar ocht ngiotán leis an luach HH (heicsidheachúlach). " +"Is\n" +" \t\tféidir le HH bheith 1 nó 2 digit heicsidheachúlach ar fhad.\n" +" \\uHHHH\tan carachtar Unicode leis an luach heicsidheachúlach HHHH.\n" +" \t\tIs féidir le HHHH bheith ó 1 go 8 digit heicsidheachúlach ar fhad.\n" +" \\UHHHHHHHHan carachtar Unicode leis an luach heicsidheachúlach " +"HHHHHHHH.\n" +" \t\tIs féidir le HHHHHHHH bheith ó 1 go 8 digit heicsidheachúlach ar " +"fhad.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach i gcás earráide scríofa." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Scríobh na hargóintí ar an ngnáthaschur.\n" +" \n" +" Taispeáin na hARGÓINTà ar an ngnáthaschur agus líne nua ina ndiaidh.\n" +" \n" +" Roghanna:\n" +" -n\tná hiarcheangail líne nua\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach i gcás earráide scríofa." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Rith argóintí mar ordú blaoisce.\n" +" \n" +" Cuir ARGÓINTà i dteaghrán amháin, úsáid an toradh mar ionchur go dtí\n" +" an bhlaosc, agus rith na horduithe toraidh.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas scortha an ordaithe, nó rath más ordú neamhnitheach " +"é." + +#: builtins.c:652 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Cuir an t-ordú sonraithe in áit na blaoisce.\n" +" \n" +" Ritear ORDÚ, agus an ríomhchlár sonraithe curtha in áit na blaoisce " +"seo.\n" +" Úsáidtear na hARGÓINTà mar argóintí don ORDÚ. Gan ÓRDÚ, cuirtear\n" +" atreoruithe i bhfeidhm sa bhlaosc reatha.\n" +" \n" +" Roghanna:\n" +" -a AINM\túsáidtear AINM mar argóint uimhir a náid don ORDÚ.\n" +" -c\tritear ORDÚ le timpeallacht fholamh\n" +" -l\tcuirtear fleiscín mar argóint uimhir a náid don ORDÚ.\n" +" \n" +" Sa chás nach féidir an t-ordú a rith, scoirfidh blaosc " +"neamhidirghníomhach,\n" +" mura bhfuil an rogha blaoisce 'execfail' socruithe.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás nach bhfaightear ORDÚ nó go dtarlaíonn\n" +" earráid atreoraithe." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Scoir den bhlaosc.\n" +" \n" +" Scoireann den bhlaosc le stádas N. Má fhágtar N ar lár, is é stádas\n" +" an chéad ordaithe deireanaigh an stádas scortha." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Scoir de bhlaosc logála isteach.\n" +" \n" +" Scoireann de bhlaosc logála isteach le stádas scortha N. Aischuirtear\n" +" earráid má ritear é i mblaosc nach blaosc logála isteach í." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Taispeáin nó rith orduithe ón liosta staire.\n" +" \n" +" Úsáidtear fc chun orduithe ón liosta staire a liostú, a chur in eagar, " +"nó a ath-rith.\n" +" Más uimhreacha iad CÉAD agus DEIREANACH, sonraíonn siad an raon, nó is\n" +" féidir le CÉAD bheith ina theaghrán, rud a chiallaíonn an t-ordú is " +"deireanaí a\n" +" thosaíonn leis an teaghrán sin.\n" +" \n" +" Roghanna:\n" +" -e AINM_E\troghnaigh an clár eagarthóra atá le húsáid. FCEDIT an " +"réamhshocrú,\n" +" \tansin EDITOR, agus ansin vi.\n" +" -n\tfág uimhreacha na línte ar lár agus liosta á thaispeáint\n" +" -r\taisiompaigh ord na línte (.i. liostaigh an ceann is nuaí ar dtús)\n" +" \n" +" San fhormáid 'fc -s [PATRÚN=IONADAà ...] [ORDÚ]', ath-ritear ORDÚ\n" +" tar éis an t-ionadú SEAN=NUA a dhéanamh.\n" +" \n" +" Ailias úsáideach is ea r='fc -s', sa chaoi go ritheann 'r cc' an t-ordú " +"is deireanaí\n" +" a thosaíonn le 'cc', agus ath-ritheann 'r' an t-ordú is deireanaí.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath nó stádas an ordaithe rite; neamh-nialas má tharlaíonn " +"earráid." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Bog tasc go dtí an tulra.\n" +" \n" +" Cuirtear an tasc a shonraítear le SONRÚ_TASC sa tulra agus é mar an tasc " +"reatha.\n" +" Mura bhfuil SONRÚ_TASC ann, úsáidtear cibé tasc atá reatha de réir na " +"blaoisce.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe a cuireadh sa tulra, nó teip má " +"tharlaíonn earráid." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Bog tascanna go dtí an cúlra.\n" +" \n" +" Cuirtear an tasc a shonraítear le SONRÚ_TASC sa chúlra cosúil le é a " +"thosú le '&'.\n" +" Mura bhfuil SONRÚ_TASC ann, úsáidtear cibé tasc atá reatha de réir na " +"blaoisce.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtarlaíonn earráid nó nach bhfuil\n" +" rialú tascanna cumasaithe." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Cuimhnigh ar nó taispeáin suíomhanna ríomhchláracha.\n" +" \n" +" Faigh agus cuimhnigh ar an gconair iomlán le haghaidh gach AINM.\n" +" Gan argóintí, taispeántar eolas maidir le orduithe a bhfuil cuimhne " +"orthu.\n" +" \n" +" Roghanna:\n" +" -d\tDéantar dearmad ar shuíomh gach AINM.\n" +" -l\tTaispeáintear i bhformáid atá inúsáidte mar ionchur.\n" +" -p CONAIR\tÚsáidtear CONAIR mar an gconair iomlán le haghaidh AINM.\n" +" -r\tDéantar dearmad ar gach shuíomh atá coinnithe i gcuimhne.\n" +" -t\tPriontáiltear an suíomh atá i gcuimhne le haghaidh gach AINM, " +"agus\n" +" \t\tcuirtear AINM roimh a shuíomh má thugtar níos mó ná AINM amháin. " +"Argóintí:\n" +" AINM\tLorgaítear gach AINM i $PATH agus cuirtear le liosta na n-" +"orduithe\n" +" \t\tatá coinnithe i gcuimhne é.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás nach n-aimsítear AINM, nó go bhfuil\n" +" rogha neamhbhailí ann." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Taispeáin eolas maidir le horduithe ionsuite.\n" +" \n" +" Taispeántar achoimrí na n-orduithe ionsuite. Má shonraítear PATRÚN,\n" +" taispeántar cabhair chuimsitheach faoi gach ordú a mheaitseálann " +"PATRÚN;\n" +" i gcásanna eile taispeántar liosta na n-ábhar cabhrach.\n" +" \n" +" Roghanna:\n" +" -d\ttaispeántar cur síos gairid ar gach ábhar\n" +" -m\ttaispeántar úsáid i bhformáid cosúil leis an lámhleabhar man(1)\n" +" -s\tní thaispeántar ach achoimre gairid úsáide le haghaidh gach ábhair " +"a\n" +" \tmheatseálann PATRÚN\n" +" \n" +" Argóintí:\n" +" PATRÚN\tpatrún a shonraíonn ábhar cabhrach\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás nach n-aimsítear PATRÚN nó go dtugtar\n" +" rogha neamhbhailí." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Taispeáin stádas tascanna.\n" +" \n" +" Liostáiltear na tascanna gníomhacha. Le SONRÚ_TAISC, ní thaispeántar ach " +"an tasc sin.\n" +" Gan roghanna, taispeántar stádas gach tasc gníomhach.\n" +" \n" +" Roghanna:\n" +" -l\tliostáiltear aitheantais na bpróiseas chomh maith leis an ngnáth-" +"eolas.\n" +" -n\tní liostáiltear ach na próisis le stádas athruithe ón chéad fógra " +"roimhe seo\n" +" -p\tliostáiltear aitheantais na bpróiseas amháin\n" +" -r\tní liostáiltear ach tascanna atá ag rith\n" +" -s\tní liostáiltear ach tascanna atá stoptha\n" +" \n" +" Le -x, ritear ORDÚ tar éis gach SONRÚ_TAISC atá in ARGÓINTà a athrú go " +"aitheantas\n" +" próisis an phríomh-phróisis i ngrúpa próiseas an taisc sin.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbailí nó go " +"dtarlaíonn earráid.\n" +" Má úsáidtear -x, aischuirtear an stádas scortha ó ORDÚ. " + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Bain tascanna den mblaosc reatha.\n" +" \n" +" Baintear gach SONRÚ_TAISC den tábla de tascanna gníomhacha. Gan\n" +" SONRÚ_TAISC ar bith úsáidtear an tasc atá reatha dar leis an mblaosc.\n" +" \n" +" Roghanna:\n" +" -a\tbaintear gach tasc mura sholáraítear SONRÚ_TAISC\n" +" -h\tmarcáiltear gach SONRÚ_TAISC sa chaoi nach seolfar SIGHUP chuige " +"má\n" +" \tfhaigheann an bhlaosc féin SIGHUP\n" +" -r\tní bhaintear ach tascanna atá ag rith\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó " +"SONRÚ_TAISC neamhbhailí." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Seol comhartha chuig tasc.\n" +" \n" +" Seoltar an comhartha ainmnithe ag SONRÚ_COMHARTHA nó UIMHIR_CHOMHARTHA " +"go dti\n" +" an tasc sonraithe le AITHEANTAS_PRÓISIS nó SONRÚ_TAISC. Mura bhfuil " +"SONRÚ_COMHARTHA\n" +" nó UIMHIR_CHOMHARTHA ann, úsáidtear SIGTERM.\n" +" \n" +" Roghanna:\n" +" -s SONRÚ_COMHARTHA\n" +"Is ainm comhartha é SONRÚ_COMHARTHA\n" +" -n UIMHIR_COMHARTHA\n" +"Is uimhir chomhartha é SONRÚ_COMHARTHA\n" +" -l\tLiostáiltear ainmneacha na gcomharthaí. Má tá argóintí i ndiadh \"-" +"l\",\n" +" \t\tglactar leo mar uimhreacha comharthaí agus taispeántar a n-" +"ainmneacha.\n" +" -L\tMar an gcéanna le \"-l\"\n" +" \n" +" Tá \"kill\" ina ordú ionsuite blaoisce ar dhá chúis: is féidir " +"aitheantais\n" +" tascanna a úsáid in ionad aitheantais próiseas, agus is féidir próisis a " +"stopadh\n" +" fiú má tá uasmhéid na bpróiseas a bhfuil cead agat a chruthú sroichte " +"agat.\n" +" Stádas Scortha:\n" +" Aischuirtear rath muna bhfuil rogha neamhbhailí ann nó muna tharla " +"earráid." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Fill ó fheidhm bhlaoisce.\n" +" \n" +" Filltear ó fheidhm nó ó script léite as comhad leis an luach scortha\n" +" a shonraítear i N. Má fhágtar N ar lár, is é an stádas scortha ná " +"stadas\n" +" an orduithe dheireanaigh a ritheadh laistigh den fheidhm nó script.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear N, nó teip sa chás nach bhfuil an bhlaosc ag rith feidhme " +"nó scripte." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Socraíonn \"export\" an aitreabúid easpórtála le haghaidh athróga blaoisce.\n" +" \n" +" Marcáiltear gach AINM le haghaidh easpórtáil uathoibríoch go dtí " +"timpeallacht\n" +" na n-orduithe a ritear ina dhiaidh sin. Má sonraítear LUACH, sann LUACH\n" +" roimh easpórtáil.\n" +" \n" +" Roghanna:\n" +" -f\tcuirtear an aitreabúid i bhfeidhm ar feidhmeanna blaoisce\n" +" -n\tbaintear an aitreabúid ó gach AINM\n" +" -p\tpriontáiltear liosta de athróga agus feidhmeanna easpórtáilte\n" +" \n" +" Cuireann argóint de '--' deireadh le próiseáil na hargóintí.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go bhfuil " +"AINM neamhbhailí." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Iomlaoidigh paraiméadair ionaid.\n" +" \n" +" Athainmnítear na paraiméadair ionaid $N+1,$N+2 ... mar $1,$2 ...\n" +" Gan N, glactar leis mar 1.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go bhfuil N diúltach, nó níos mó ná $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Rith orduithe ó chomhad sa bhlaosc reatha.\n" +" \n" +" Léitear agus ritear orduithe ó AINM_CHOMHAID sa bhlaosc reatha.\n" +" Úsáidtear na hiontrálacha i $PATH chun an chomhadlann ina bhfuil\n" +" AINM_CHOMHAID a aimsiú. Má shonraítear ARGÓINTÃ, cuirtear iad mar\n" +" paraiméadair ionaid agus AINM_CHOMHAID á rith.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh in " +"AINM_COMHAID.\n" +" Teipeann air sa chás nach féidir AINM_CHOMHAID a léamh." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Cuir rith na blaoisce ar fionraí.\n" +" \n" +" Cuirtear rith na blaoisce seo ar fionraí go dtí go bhfaigheann sí\n" +" comhartha SIGCONT. Gan iallach, ní féidir blaosc logála isteach a\n" +" chur ar fionraí.\n" +" \n" +" Roghanna:\n" +" -f\tcuirtear iallach ar an t-ordú, fiú más blaosc logála isteach atá " +"ann.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás nach bhfuil rialú tascanna cumasaithe,\n" +" nó go dtarlaíonn earráid." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Luacháil slonn coinníollach.\n" +" \n" +" Leasainm é seo ar an ordú blaoisce ionsuite \"test\", ach\n" +" caithfear \"]\" go díreach a bheith ann mar an argóint\n" +" dheireanach, le bheith comhoiriúnach leis an \"[\" ag an tús." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Taispeáin amanna próisis.\n" +" \n" +" \n" +"Taispeántar amanna carntha úsáideora agus córais na blaoisce agus a\n" +" macphróiseas.\n" +" \n" +" Stádas Scortha:\n" +" Éiríonn leis i gcónaí." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" + +#: builtins.c:1431 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Taispeáin nó socraigh masc mhód na gcomhad.\n" +" \n" +" Athraítear masc cruthaithe comhaid an úsáideora go MÓD. Gan MÓD,\n" +" taispeántar luach reatha an mhaisc.\n" +" \n" +" Ma thosaíonn MÓD le digit, glactar leis mar uimhir ochtnártha;\n" +" i gcásanna eile is teaghrán móid shiombalaigh é cosúil leis na cinn\n" +" a ghlacann chmod(1) leo.\n" +" \n" +" Roghanna:\n" +" -p\tgan mód, bíodh an aschur i bhformáid atá inúsáidte mar ionchur\n" +" -S\taschur siombalach; seachas sin aschuirfear uimhir ochtnártha\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go bhfuil MÓD neamhbhailí\n" +" nó go sonraítear rogha neamhbhailí." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Fanann \"wait\" go gcríochnaíonn tasc agus aischuireann a stádas scortha.\n" +" \n" +" Fantar le gach próiseas ata sonraithe le AITHEANTAS, a d'fhéadann a " +"bheith\n" +" ina aitheantas próisis nó sonrú taisc, agus tuairiscítear a stádas " +"críochnaithe.\n" +" Gan AITHEANTAS, fantar le gach macphróiseas gníomhach reatha, agus " +"aischuirtear 0.\n" +" Más sonrú taisc atá in AITHEANTAS, fantar le gach próiseas i bpíblíne an " +"taisc sin.\n" +" \n" +" Má sonraítear an rogha -n, fantar leis an gcéad tasc eile a stopann " +"agus\n" +" aischuirtear a stádas scortha.\n" +" \n" +" Má sonraítear an rogha -f agus má tá rialú jabanna cumasaithe, fantar go " +"dtí\n" +" go stopann an AITHEANTAS sonraithe, in áit fanadh le athrú stádais sa " +"tasc sin.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an AITHEANTAIS dheireanaigh. Teipeann ar an ordú má " +"tá\n" +" AITHEANTAS neamhbhailí nó má sonraítear rogha neamhbhailí." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Fanann \"wait\" go gcríochnaíonn próiseas agus aischuireann an stádas " +"scortha.\n" +" \n" +" Fantar le gach próiseas atá sonraithe le AITHEANTAS_PRÓISIS, agus\n" +" tuairiscítear a stádais chríochnaithe. Gan AITHEANTAS_PRÓISIS, fantar\n" +" le gach macphróiseas gníomhach reatha, agus aischuirtear 0.\n" +" Ní mór d'AITHEANTAS_PRÓISIS bheith ina aitheantas próisis.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an AITHEANTAIS dheireanaigh. Teipeann ar an\n" +" ordú má tá AITHEANTAS_PRÓISIS neamhbhailí nó má shonraítear\n" +" rogha neamhbhailí." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Rith orduithe le haghaidh gach mír i liosta.\n" +" \n" +" Ritheann an lúb 'for' sraith ordaithe le haghaidh gach mír i liosta\n" +" míreanna. Gan 'in WORDS ...;', úsáidtear 'in \"$@\"'.\n" +" Le haghaidh gach eilimint i bhFOCAIL, tugtar an luach sin do AINM agus\n" +" ritear na hORDUITHE.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Lúib for uimhriochtúil.\n" +" \n" +" Mar an gcéanna le\n" +" \t(( SLONN1 ))\n" +" \twhile (( SLONN2 )); do\n" +" \t\tORDUITHE\n" +" \t\t(( SLONN3 ))\n" +" \tdone\n" +" Is sloinn uimhreachtúla iad SLONN1, SLONN2 agus SLONN3.\n" +" Má fhágtar slonn ar bith ar lár, oibríonn an lúib mar a bheadh luach de " +"1 air.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Tuairscíonn \"time\" tréimhse rite píblíne.\n" +" \n" +" Ritear PÃBLÃNE agus taispeántar achoimre den fhíor-am, am LAP\n" +" an úsáideora agus am LAP an chórais a chaitheadh ag rith PÃBLÃNE\n" +" nuair a stopann sí.\n" +" \n" +" Roghanna:\n" +" -p\tTaispeántar an achoimre sa bhformáid iniompartha POSIX.\n" +" \n" +" Úsáidtear luach na hathróige TIMEFORMAT don fhormáid aschuir.\n" +" \n" +" Stádas Scortha:\n" +" Is é stadas aischuir PÃBLÃNE an stádas aischuir ó \"time\"." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Rith orduithe de réir mheaitseála patrún.\n" +" \n" +" Ritear ORDUITHE de réir mar a mheaitseálann FOCAL an PATRÚN.\n" +" Úsáidtear '|' chun na patrúin a dheighilt.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ritheann \"if\" orduithe de réir na sloinn choinníllocha.\n" +" \n" +" Ritear an liosta \"if ORDUITHE\". Má tá stádas scortha de náid aige,\n" +" ritear an liosta \"then ORDUITHE\". Le stádais eile, ritear gach liosta\n" +" \"elif ORDUITHE\" ceann ar cheann, agus má tá stádas scortha de náid ag\n" +" ceann acu ritear an liosta \"then ORDUITHE\" cuí agus ansin tá deireadh\n" +" leis an ordú \"if\".\n" +" I gcásanna eile, ritear an liosta \"else ORDUITHE\", más ann dó.\n" +" Is é stádas an chomhstruchtúir iomláin stádas scortha an ordaithe\n" +" dheireanaigh a ritheadh, nó náid sa chás nach raibh coinníoll\n" +" ar bith fíor.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas scortha an ordaithe dheireanaigh a ritheadh." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Rith orduithe chomh fada agus a éiríonn le tástáil.\n" +" \n" +" Fairsingítear agus ritear ORDUITHE2 chomh fada agus atá stádas scortha\n" +" de náid ag an t-ordú deireanach sna hORDUITHE1 a leanann 'while'.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe deireanach a ritheadh." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Rith orduithe chomh fada agus a theipeann ar tástáil.\n" +" \n" +" Fairsingítear agus ritear ORDUITHE chomh fada agus atá stádas scortha\n" +" nach náid é ag an t-ordú deireanach sna hORDUITHE 'until'.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe deireanach a ritheadh." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Cruthaíonn \"coproc\" comhphróiseas ainmnithe AINM.\n" +" \n" +" Ritear ORDÚ go haisioncronach. Beidh gnáthaschur agus gnáthionchur\n" +" an ordaithe ceangailte trí phíopa le tuairisceoirí comhaid a bheidh\n" +" sannta do innéacsanna 0 agus 1 de eagar athróga ainmnithe AINM sa\n" +" bhlaosc atá ag rith. Is é \"COPROC\" an tAINM réamhshocraithe.\n" +" \n" +" Stádas Scortha:\n" +" Aischuireann an t-ordú \"coproc\" stádas scortha de 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Sainigh feidhm bhlaoisce.\n" +" \n" +" Cruthaíonn feidhm bhlaoisce darbh ainm AINM. Nuair a úsáidtear mar ordú\n" +" simplí é, ritheann AINM na hORDUITHE i gcomhthéacs na blaoisce glaoigh.\n" +" Nuair a ghlaoitear AINM, tugtar na hargóintí don fheidhm mar $0 ... $n, " +"agus\n" +" tá ainm na feidhme i $FUNCNAME.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath mura bhfuil AINM inléite amháin." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Grúpáil orduithe mar aonad.\n" +" \n" +" Rith tacar orduithe i ngrúpa. Seo bealach amháin chun tacar iomlán\n" +" orduithe a atreorú.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Tosaigh tasc arís sa tulra.\n" +"\n" +" Is ionann é seo agus an argóint SONRÚ_TAISC don ordú 'fg'.\n" +" Atosaítear tasc atá stoptha nó sa chúlra. Sonraíonnn SONRÚ_TAISC\n" +" ainm nó uimhir taisc. Má leanann '&' SONRÚ_TAISC, ritear an tasc sa\n" +" chúlra, cosúil leis an tasc a chur mar argóint le 'bg'.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an taisc atosaithe." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Faigh luach sloinn uimhríochtúil.\n" +" \n" +" Faightear luach an tSLOINN de réir na rialacha a bhaineann le\n" +" luacháil uimhríochtúil. Tá an t-ordú seo mar an gcéanna le\n" +" \"let SLONN\".\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear 1 más 0 an luach atá ag SLONN; aischuirtear 0 i gcásanna " +"eile." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Ainmneacha na n-athróg coitianta agus a n-úsáid. \n" +" BASH_VERSION\tEolas maidir le leagan an Bash seo.\n" +" CDPATH\tLiosta deighilte le hidirstaid de chomhadlanna ina dhéanfar\n" +" \t\tcuardach ar chomhadlanna a shonraítear mar argóintí do \"cd\".\n" +" GLOBIGNORE\tLiosta deighilte le hidirstaid de phatrúin a dhéanann cur\n" +" \t\tsíos ar ainmneacha na gcomhad a thabharfar neamhaird orthu.\n" +" HISTFILE\tAinm an chomhaid ina bhfuil stair do chuid orduithe.\n" +" HISTFILESIZE\tUasmhéid na línte don chomhad staire.\n" +" HISTSIZE\tUasmhéid na línte staire atá ar fáil do bhlaosc atá ag rith.\n" +" HOME\tConair iomlán do chomhadlann logála isteach.\n" +" HOSTNAME\tAinm an ríomhaire reatha.\n" +" HOSTTYPE\tCineál an LAP ar a bhfuil an Bash seo ag rith.\n" +" IGNOREEOF\tRialaíonn sé seo cad a dhéanfaidh an bhlaosc nuair\n" +" \t\ta fhaigheann sí carachtar EOF mar an t-aon ionchur.\n" +" \t\tMá tá sé socraithe, glactar leis a luach mar líon na\n" +" \t\tgcarachtar EOF atá ceadaithe i ndiaidh a chéile ar líne folamh\n" +" \t\tsula scoirfidh an bhlaosc (10 mar réamhshocrú). Mura\n" +" \t\tbhfuil sé socruithe, cialaíonn EOF deireadh an ionchuir.\n" +" MACHTYPE\tTeaghrán ina bhfuil cur síos ar an gcóras ar a bhfuil\n" +" \t\tan Bash seo ag rith.\n" +" MAILCHECK\tCé chomh minic, i soicind, a chuardaíonn Bash ríomhphost " +"nua.\n" +" MAILPATH\tLiosta deighilte le hidirstaid de chomhadainmneacha a\n" +" \t\tsheiceálann Bash le haghaidh ríomhphost nua.\n" +" OSTYPE\tLeagan Unix ar a bhfuil an bhlaosc seo ag rith.\n" +" PATH\tLiosta deighilte le hidirstaid de chomhadlanna a chuardaíonn Bash\n" +" \t\tagus orduithe á lorg aige.\n" +" PROMPT_COMMAND\tOrdú atá le rith roimh priontáil gach phríomhleide.\n" +" PS1\t\tTeaghrán na príomhleide.\n" +" PS2\t\tTeaghrán na leide tánaistí.\n" +" PWD\t\tConair iomlán na comhadlainne reatha.\n" +" SHELLOPTS\tLiosta deighilte le hidirstaid de na roghanna blaoisce\n" +" \t\tatá cumasaithe.\n" +" TERM\tCineál an teirminéil reatha.\n" +" TIMEFORMAT\tAn fhormáid aschuir le haghaidh na staitisticí ama a\n" +" \t\tthaispeánann an focal coimeádta \"time\".\n" +" auto_resume\tCialaíonn neamhnialais go gcuardaítear focal ordaithe\n" +" \t\tatá ar líne leis féin sa liosta reatha de tascanna stoptha\n" +" \t\tar dtús. Más ann dó, cuirtear an tasc sin sa tulra.\n" +" \t\tCialaíonn luach de \"exact\" go bhfuil meaitseáil dhíreach le\n" +" \t\thordú sa liosta reatha de tascanna stoptha riachtanach.\n" +" \t\tCialaíonn luach de \"substring\" go bhfuil meaitseáil le\n" +" \t\tfo-theaghrán den tasc riachtanach.\n" +" \t\tCialaíonn luach ar bith eile go gaithfidh an t-ordu bheith\n" +" \t\tina réimír de tasc stoptha.\n" +" histchars\tNa carachtair a rialaíonn fairsingiú staire agus\n" +" \t\tionadú mear. Is é an chéad charactar an ceann le haghaidh\n" +" \t\tfairsingiú staire, \"!\" de ghnáth. Is é an dara charactar an\n" +" \t\tceann le haghaidh ionadú mear, \"^\" de ghnáth. Is é an triú\n" +" \t\tceann an carachtar \"nóta tráchta staire\", \"#\" de ghnáth.\n" +" HISTIGNORE\tLiosta deighilte le hidirstaid de phatrúin a shonraíonn\n" +" \t\tna horduithe a chuirfear leis an liosta staire.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Cuir comhadlanna ar an gcruach.\n" +" \n" +" Cuireann comhadlann ar bharr na cruaiche comhadlanna, nó rothlaíonn\n" +" an chruach, ag cur barr nua na cruaiche mar an chomhadlann oibrithe\n" +" reatha. Gan argóintí, malartaítear an dá chomhadlann ar bharr.\n" +" \n" +" Roghanna:\n" +" -n\tNá déantar an gnáthathrú comhadlainne agus comhadlanna á gcur\n" +" \tleis an gcruach; ní athraítear ach an chruach.\n" +" \n" +" Argóintí:\n" +" +N\tRothlaítear an chruach sa chaoi go mbeidh an Nú chomhadlann (ag\n" +" \tcomhaireamh ó thaobh clé an liosta a thaispeánann \"dirs\" agus ag " +"tosú\n" +" \tó náid) ar bharr.\n" +" \n" +" -N\tRothlaítear an chruach sa chaoi go mbeidh an Nú chomhadlann (ag\n" +" \tcomhaireamh ó thaobh deas an liosta a thaispeánann \"dirs\" agus ag " +"tosú\n" +" \tó náid) ar bharr.\n" +" \n" +" COMHADLANN\tCuirtear COMHADLANN ar bharr na cruaiche, agus socraítear\n" +" \tí mar an chomhadlann oibrithe reatha.\n" +" \n" +" Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann. \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go sonraítear argóint neamhbhailí, nó\n" +" go dteipeann ar an athrú comhadlainne." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Bain comhadlanna ón gcruach.\n" +" \n" +" Baintear comhadlanna ón gcruach comhadlanna. Gan argóintí, baintear an\n" +" chomhadlann ó bharr na cruaiche, agus téann go dtí an chomhadlann\n" +" atá ar bharr.\n" +" \n" +" Roghanna:\n" +" -n\tNá déantar an gnáthathrú comhadlainne agus comhadlanna á gcur\n" +" \tleis an gcruach; ní athraítear ach an chruach.\n" +" \n" +" Argóintí:\n" +" +N\tBaintear an Nú chomhadlann ag comhaireamh ó thaobh clé an liosta\n" +" \ta thaispeánann \"dirs\" agus ag tosú ó náid. Mar shampla, baineann\n" +" \t\"popd +0\" an chéad chomhadlann, agus \"popd +1\" an dara cheann.\n" +" \n" +" -N\tBaintear an Nú chomhadlann ag comhaireamh ó thaobh deas an liosta\n" +" \ta thaispeánann \"dirs\" agus ag tosú ó náid. Mar shampla, baineann\n" +" \t\"popd -0\" an chomhadlann dheireanach, agus \"popd -1\" an ceann\n" +" \tleathdheireanach.\n" +" \n" +" \n" +" COMHADLANN\tCuirtear COMHADLANN ar bharr na cruaiche, agus socraítear\n" +" \tí mar an chomhadlann oibrithe reatha.\n" +" \n" +" Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go sonraítear argóint neamhbhailí, nó\n" +" go dteipeann ar an athrú comhadlainne." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Taispeáin cruach na gcomhadlann.\n" +" \n" +" Taispeáin liosta na gcomhadlann a bhfuil cuimhne orthu faoi láthair.\n" +" Cuirtear comhadlanna ar an liosta leis an ordú 'pushd'. Is féidir dul\n" +" siar trín liosta leis an ordú 'popd'.\n" +" \n" +" Roghanna:\n" +" -c\tglantar cruach na gcomhadlann trí gach mhír a bhaint de\n" +" -l\tná priontáiltear na comhadlanna i gcoibhneas le do chomhadlann " +"bhaile\n" +" \tagus le tilde rompu\n" +" -p\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne\n" +" -v\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne agus\n" +" \ta háit sa chruach roimpi\n" +" \n" +" Argóintí:\n" +" +N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó thaobh " +"clé\n" +" \tan liosta a thaispeántar le 'dirs' rite gan argóintí, ag tosú ó " +"náid.\n" +" -N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó thaobh " +"deas\n" +" \tan liosta a thaispeántar le 'dirs' rite gan argóintí, ag tosú ó " +"náid.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath muna bhfuil rogha neamhbhailí ann nó muna tharla " +"earráid." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Socraigh agus díshocraigh roghanna na blaoisce.\n" +" \n" +" Athraítear socrú gach rogha blaoisce AINM_ROGHA. Gan argóintí roghnacha " +"ar bith,\n" +" liostáiltear gach AINM_ROGHA, nó gach rogha blaoisce mura bhfuil " +"AINM_ROGHA\n" +" ann, lena stádas socruithe nó díshocraithe.\n" +" \n" +" Roghanna:\n" +" -o\tbíodh AINM_ROGHA srianta dóibh siúd atá inúsáidte le 'set -o'\n" +" -p\tpriontáiltear gach rogha blaoisce le comhartha dá stádas\n" +" -q\tcuir cosc ar aschur\n" +" -s\tcumasaigh (socraigh) gach AINM_ROGHA\n" +" -u\tdíchumasaigh (díshocraigh) gach AINM_ROGHA\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath má tá AINM_ROGHA cumasaithe. Teipeann ar shopt má " +"thugtar\n" +" rogha neamhbhailí, nó má tá AINM_ROGHA díchumasaithe." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Taispeáin na hiomlánaithe atá ar fáil de réir na roghanna.\n" +" \n" +" Tá sé seo ceaptha le húsáid i bhfeidmeanna blaoisce a dhéanann " +"iomlánaithe.\n" +" Má thugtar an argóint roghnach FOCAL, cruthaítear iomlánaithe\n" +" atá comhoiriúnach le FOCAL.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go " +"dtarlaíonn earráid." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Athraíonn nó taispeánann \"compopt\" na roghanna iomlánaithe.\n" +" \n" +" Athraítear na roghanna iomlánaithe le haghaidh gach AINM,\n" +" nó gan AINMneacha taispeántar an t-iomlánú atá á dhéanamh faoi láthair.\n" +" Gan ROGHA ar bith, taispeántar na hiomlánaithe le haghaidh gach AINM\n" +" nó an mionsonrú iomlánaithe reatha.\n" +" \n" +" Roghanna:\n" +" \t-o ROGHA\tSocraítear an rogha iomlánaithe ROGHA le haghaidh gach " +"AINM.\n" +" \t-D\t\tAthraítear roghanna don iomlánú ordaithe \"réamhshocraithe\".\n" +" \t-E\t\tAthraítear roghanna don iomlánú ordaithe \"folamh\".\n" +" \t-I\t\tAthraítear roghanna don iomlánú ar an gcéad focal.\n" +" \n" +" Le \"+o+ in áit \"-o\", múchtar an rogha shonraithe.\n" +" \n" +" Argóintí:\n" +" \n" +" Tagraíonn gach AINM do ordú a bhfuil mionsonrú iomlánaithe sainmhínithe\n" +" dó roimh ré leis an ordú ionsuite \"complete\". Gan AINM, ní mór " +"\"compopt\"\n" +" a ghlaoigh ó fheidhm atá ag déanamh iomlánaithe ag an am, agus " +"athraítear\n" +" na roghanna don déantóir iomlánaithe sin atá ag rith.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó nach\n" +" bhfuil sonrú iomlánaithe ann le haghaih AINM." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Léann \"mapfile\" línte ón ngnáthionchur agus cuireann in athróg eagair " +"innéacsaithe iad.\n" +" \n" +" Léann línte ón ngnáthionchur agus cuireann san athróg eagair " +"innéacsaithe\n" +" EAGAR iad, nó léann ón dtuairisceoir comhaid TC má shonraítear -u. Is í " +"an\n" +" athróg MAPFILE an eagar réamhshocraithe.\n" +" \n" +" Roghanna:\n" +" -d TEORMHARCÓIR\tÚsáidtear TEORMHARCÓIR chun deireadh a chur le " +"línte.\n" +" -n COMHAIREAMH\tCóipeáiltear COMHAIREAMH líne ar a mhéid. Más 0 é " +"COMHAIREAMH,\n" +" \t\tcóipeáiltear gach líne.\n" +" -O BUNÚS\tTosaítear ag sannadh go EAGAR ag an innéacs BUNÚS. Is é 0 an " +"BUNÚS\n" +" \t\tréamhshocraithe.\n" +" -s COMHAIREAMH\tDéantar neamhaird de na chéad COMHAIREAMH líne a " +"léitear.\n" +" -t\tBaintear TEORMHARCÓIR ó deireadh gach líne (carachtar líne nua\n" +" réamhshocraithe).\n" +" -u TC\tLéitear línte ón dtuairisceoir comhad TC in áit an " +"ghnáthionchuir.\n" +" -C AISGHLAOCH\tLuacháiltear AISGHLAOCH tar éis gach CANDAM líne a " +"léitear.\n" +" -c CANDAM\tLíon na línte atá le léamh idir glaoanna ar AISGHLAOCH.\n" +" \n" +" Argóintí:\n" +" EAGAR\tAinm an athróige eagair atá le húsáid le haghaidh sonraí " +"comhaid.\n" +" \n" +" Má shonráitear -C gan -c, is é 5000 an CANDAM réamhshocraithe. Agus " +"AISGHLAOCH\n" +" á luacháil, tugtar dó innéacs na céad eiliminte eile atá le sannadh " +"agus\n" +" an líne atá le sannadh don eilimint sin mar argóintí breise.\n" +" \n" +" Gan BUNÚS sonraithe go soiléir, glanfaidh \"mapfile\" EAGAR roimh faic " +"a\n" +" shannadh dó.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go sonraítear rogha neamhbhailí, nó go " +"bhfuil\n" +" EAGAR inléite amháin, nó nach eagar innéacsaithe é EAGAR." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Léann línte ó chomhad agus cuireann in athróg eagair iad.\n" +" \n" +" Comhchiallach le \"mapfile\"." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Aischuir comhthéacs an ghlaoigh reatha fhoghnáthaimh.\n" +#~ " \n" +#~ " Gan SLONN, aischuirtear " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: próiseas %5ld (%s) sa phíblíne" + +#~ msgid "Unknown Signal #" +#~ msgstr "Comhartha neamhaithnid #" + +#~ msgid "Copyright (C) 2018 Free Software Foundation, Inc." +#~ msgstr "Cóipcheart © 2018 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: ní féidir %lu beart a athleithdháileadh (%lu beart leithdháilte)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: ní féidir %lu beart a leithdháileadh" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: %s:%d: ní féidir %lu beart a athleithdháileadh (%lu beart " +#~ "leithdháilte)" diff --git a/bash-5.1/po/gl.gmo b/bash-5.1/po/gl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..36e79c597ef51d20d830d6f010b78b466576405e GIT binary patch literal 55254 zcmcJY37}n7dG9x(Vy>W|ASj}nKu7|)nHa=`02v{g$qa&qn0xL$=iYnBx#wKZkbyx_ zYmurI>pWJRDPlzwts*Mdd8)SB$yw|3RiD<^_El?N?fd<|Z>_!e8Ez8PcVOqghqc#U z!?(U^t@YjSJnF%(O8EWdF-h`x@Rg59lInw!TNRuRY2mA+6-#z9$$7P`ET?%*rT+H=L zLABStpvv)0@HFsWK$ZXDi~M`@LDg?PsB%3cT;Bkm$n~wD%5@v4?|dB8_rDRYA2RIs zPY2bH%Rv55)`j~`Q1yEesQlgmJ{G(uTz?f*KYkxn`yNB#RnEtPXM)Q?y}uKr$&zP- zj|1NTs$Tbi`tFxOz5hK>_4yU3avx7&Q}A3+`8^d>`l)dLCQ$j@2A%+Z7*zXw22{Cz z04n{1mO6c$0_u7msP`@g_1&$Y>NNqX{Lceb&ewy=_k*CyGXq+ELG|k~%l!TVQ0==R z;5FbQxNd?<_dHN^@orG<@hwp0{0~rcbjou26g(F^5xfZ0`&WSa{?kE~w+ucRydFFY z{9w5M_uxrf{{mD#58`829!nnJBe}lnBF70(&kukbj!BXifcnlCp5)K}9z34we*%^6 z-@!THgD!SF9#sE427DNJF1U$&&IfPj`X&l@8Q(pZLG)m*uU+No8lcK?5PUQEBJh{s z{7aMMSl)l)Wl8eCxjyT1XdFCcb&_-wHm8>yLq71iuPC27KcNPk%S4^j`u~@W-I)|FA2Zf1CoU+>Zy<4vRq5 z|Du3T3HP4`K9u{D;1;j}E~5PRf#Y2N^h$5%?Hj#aO5ir`kArIG4}rgezs`Vak9#-K zKivPsX2;{m^fTPw0v^ZxQ+QeRIs>E$lBJ-^*#YN(F9enDW#Eb6Ye1Fz-Jt00UQplt z8n~5wzYW5glHu*%o>zlsa6JZ|20ky~>p`Wz8>DNJV|T)PzzyJ|z?Xoc*FObCS9gN? z?!DmE;8#KAyKt9(?+Q@qn*nbE_1+(Ydhbo(so-6p`uX$ViQv~k(ff};@yTC;^T5YE z-TC+>;C!x2pz^r|R6X7V8vg?I-dDjh!G8udE>F73$K_&Bbnq1LG2m68@~eYO!B>NN z|FfXRp}JFRp4o02~@eS1C`Gk!SlgC168i?fDEzZzrbN|ahwaT z;Bp=KIPke(3cemx{vQRE|Ia|R<4Mo*ez^$L^;%HRCqdQgCE#)32f)SPz2FnTpMs}= zLwg-lQ2lxlsP@|oo&oL#)lY{&rGF{-SnzG&BJg9N+T$nT`os~xUInV2W1#x835tHM z2TulH1nT`afy)02pvwIn@N)1$B`?QXQ0??IQ0-9%)ql5udjCV9>iLhL>UaF8-(Lx; z-6uiO=gYv0z)yhNz+Zw3z$?ds90o;)Zva)l_kfpyp8*-7$wSNjd^f0esDWyy=Yto6 zw}K3rd4I{Q^|`{5PoYoILJ&%(yu-U@1beJ|j@fDhsN!4p0{hCq#vlR=eZ7(5Q#42pm33OE9u$Mrt&$>3|i zmEhOFv%wQ4ogS8hqMvP`_+=yD^`O3UGbp-w3z&lUf$F#Kf~wE2LACRVRoWgr6I8vg z1=Y`oK-KfrpxWha;9T$?Q04o3@O1DY*Lu1$!3(%v45~h3;5x7ls{if=MJN9Xiq6t~ zPUjbZXL9{iQ29>;TsS6>Cir+yCVI}d3&znKfFeXazD!2{rvz;}Qe_umGWgD1DWeXjt|<@yk)a=ty_ z*Fe$zZ@{y_6&)Wh&jMB6aZq$~11NfbGpPJO1S-FugDUr9_xpIe1l03uK=s2bz(;~_ z0#(jC1AY@!zH<)v^YcKp>&k#*pz8l(@Dbqc;Qhy---A!$`uamo-*LR|!=4ZvmHq9|ZOOk3rGdL!amL@nlft+YT-Tr^5X=hwBf4r*i*)f@;^~ z`QAQfftPW4IjH+Lf#Sn&15XD(2de-65j+w64XAQG@&!(JPYQSysCGI4&IR8Ns{K9- zD!=3pJpDXS6_R$8fzD6n*XoRqq#qqOZ4r zPXxaJs{B6zHGUrYhu&^a1kd97(tx9&(*GfNCiqTJboDuK9{3NS>XY2;`JV-<{+mJN z-vJ*Fz8utedoL*da383C{TZnKTJ$2%=c%B|QwK%&H-l=|mxGT2-x{tz2&$bv16~Mz z2NWHge2ahga!}>G20R|DgMaZL#%H*H;Y&Q{z8O3Ne9oJk@4OLIe}4>A|9%@(J0JUI=O3qoD)(Ga@^U$- zepv-R4%`N+efEJ51rLBv2cH9Oq5R(f$GJZHEk15u460q;0qz3t09C$YZo_t=zfJ`o z&wIal8)KLIr@w=K0_)(va{pdX{qnwdIo;m}?%?_x;G@BX?{>X+6{zxT03QKv2A=?4 z1D*k152`+|17AVDZwJLcF8(ure;+8iY=cVwQc&am4zN!8PlH>zzTiEMe*kJ6ejOAY z{uESs{tHw-C*8@n!E?bBycrbzz8h3~em&riLACd)Hr?}cqw=>if-n7*xTZQ1td6;A-&HzwmU=07Wm)2agBe3#y+! z3aVee3oZdq_=wZ}D)2(C*MaKS>p-P{3#fkk6!;kMhoJi5*PzOC{71b#F9c8FdLyX! z_JT{n7l4bv4}cee-w*dsyVv`1Bls}xUkyGIEP?vYvq8Q0BJgzZgP_X&HBjyJ-{6Vh zx{rB3?E+Qb>%eotcY=EVYoNaS8*n9f;e9@CpAG8z?cf#Q_du0*!N<+SPo4pu&-I5u zwZ~7vQ^Auy;qAT<+{yJ?a5wl`Q04wN@bTcoKk0mK0Vq1V0NeoH2+jvT1*&}i3rxYs z-tX_N09CK6K-G5=d?NU2@X_Es;A6orfcnlqf=YMHjQ8^rQ2lrb_zbWKs=vMz@H^mf zT>kjU8N z;HyE6*SCRZf$s-X@NYo1_bxAAwH-{}mK{p7%MI539jVT)zxddwmO3`#$RPPH*Rc^SE9Eo()cd zD(6c<JmRk$ z7lZol7Et4`25Nk~02DpE1yuWf7SwnD3tRpy=h9;N{?r;4<(&a1r{jqSJSP4+p;h9s`c?&x^sU!N-70!9VBt-<<1v zpXOZcs9&3NedC#+bSnKAcGf$j6*ltZ+t-wK}n5Acue z3f{-{E{>;i{f`{mIljX6tsGZzJddNoy{~cT_X4h8$+4WH$@Q5W9X;Up366anqdYr- zL*rgFypnVMH183Ao5D$hdq0UcLAo#bQ|@UlWSV0ehkmDnOZ_zYd+?t*p2=}L$H^g0 zm2>^x#PLv$8@d1IU<*8x<5QeJE~I^Nz_)Pkrf_~e=leNiALv)+csJ*t<9GXDlKMUz@<=!X5Ij70X zIPT_Jc4GW}hm-YOKbzyF9P2nH!oy2AuW{&i3&&mI{JVC?`Rkr={vY6}JiiOPHl!_lLk|aa_Rp{{dgf@kY*9ap?C_j(_EN6W7DK!S7=n=W~5B_#loi zbN)t9{OAmhS8(X}Xzsrmd>feR2EXTUJdEpq0e`6*{LbN+!@Yxc<^L=J{wiEQhiCfT z!SNx^|AJ!^$7-%W$Z;a)e+cS#G3WYymgAke&+$Hv=h^pL7179Qv)|IEH(#;~3_6FV}ww{vCJ&#}7H)#r4a< zuW-cQ|Kj9*91D4--y)8WaDE~94vyb&==VyF9dD0_pamk7RT#3D&hV&IsXIB z&*0b@?wthg=GYppNs|2@!M*2aSIBy*DX%Ts(n$ zE5pq%;YS@Uh|iW#Bl+W>0GWK8=5G4A+x9Tg0)B>lGZI z<|u_{j{rZ;vk8uyIrMvZK%HM#IDe;Z@cSaimpBgSg5Mu;{K(E+XB*-C6pr_E?BZ||!dI?!mAv)i?5sl_MTjdWyQYks`VmuZo70WA@4smh~`PTkU$>W5Nt zYAv>>>XOEI+AP&4DwIqAsb=YdO0!8Xw5b&B)Jo^hYt3Cqf>3Qs)AO$Gtw={pWg4Sh zX-+pQ{2N}$TD~z&ezeVojhohI&tenP_MM7RM!Q)WMv-DG)Ry*yqDru`T>iv-( zn6!M=t)ebExG`2OwX6FpX{p&%|60+Fd?FEurb_KfIQAeLx_#C}v}{bD z8d;JBRHj!;Q=`?1PNUOGuWgK`t?9~G&+TTVTy0jy+J3t^(V42$+pW~<0})L(8)KE0 zk-sw7xXw$YCaqW6^!>hcy40SuoU7wi3eOm@yp%+Z(XO^T`ORv*)I0<&SDGa#R;0+c zD`k6Q*7_a(>0xRgbM&z_Zp5~~)U1|9Ya*?@Nj*WWN+&|Q);;M|Wok4~OLsn`s5k1v zb(*SK9fP#Wm4n6H#v1kgFoUih=N(JOFvvSUWE<1R1S-KmVu|US6*@R0`*62hsX^WS zcNyo6L!nBs?hN}PpUE4daD;7^iWdtX-!XIjeoV-Iz*^L#c(l+X~ zLs^*{Q&S}vl33HYSd(SqOb5o%tXB5xlVhD`lOdA&uxT_8shB#%yjF;!n+zC90(;f( z8ry(pwHuAJR%#k!Tj9*4`*Y*fCNwDWIxtC1Thn4XW0NJA53EaUPw7YI&bN<=v8HWN zb4o+D5BbNCAB?R-DoUwtB^fW#PF|nMh8R_SU%hd_$7!`zt4x$?LB6EJ!|A*+&!<|i zRY%jpyJDgfl%iP2;sB0Jld`J*_0p76Pj+8y4@p{`sD^I`+15wy5(iep`05yZZL~DD zFMW2WRBv~tx*qm06r|81KB{+i!FCE&-f`RDUxXeQnb=iPJ>nxG3a^lmzpU1kcPNgY@(UbvJyxOfRd&d z;F0fI%_U$gm#He$D>`q~=)+cJ8rp-L>{-3R?Wt)PjrzC0P(0T+U}!L%T70F|8JpDo za1CS3)QrNdW@Vzo(6B*KxZS0GtnloCBnerj%5dl?W#Mc_7au^TY z!!PpmNFgwZXLpc~K6XMkhI@2?N>L!C!#ppJE4Ap9G!a+F5Q8d2WKtPhimI4ZExX%Q zVK@zZDHEXiWyXP{c$cD!W*hQ~Z)M56D-We3OXiDi=wxSwl+y*iN%E%XqA>U`NtarN zox=$APTkeKu5x!;r3pk;vS2|myM+srE;X6w2gHsKh`XXWE;iZ_S4nrrc5m%TmXs^| zmn>+HP2bQdPcK{|2Dd~CuD5DuTIYz}1J(AVhEh;ls7kV=jr56{PAPRgJLBsAc4Y$w& z@zaN7kiqJ+GL1JIQu~20V zpQ4`&MWwxdKV?I3PX7K2N44e{!LHl5J@!Z5PEKNZy%y0QMvhf$Rja>s>SOutfqa*YE;8X_$n&7 zEcsfas}t74#~I+#+}aHa zyIkc@*3zP7JQT7J=@Qh^>0~X+LABngB19S8mMX?~IkjOdPLB|au8Sx~(}_x5W~VZZ-?UCEeAhcfW8c3AOS@|8_H`NC z)EIBU`D#`5%v4FP9=c_sBuQYIh2)j^wJxSLYww^UnVH?G*JN#@SVRpl=oE$TswGL_ zhDl?Lao1X$H)gQcr8pKFYa6l~vtBhT@ye9*Q#G10%evTJb9V*FZE{8n9g%3 z47FaFI5uajRzZPP#bVhHxeS;1F#BAz7ur(EFxk!BVnsnr)aI1sTWI5Up}W#Hqo*>A zm>sVkq(Lx$WzE?DjvtT=ZB`JDxRorIIkW?nY^IY9^rV>VQ2fI5oRIZ^LRzcA$x@gk z<|95DhH+qQ6mI_mf0cT8*}Z7?0cc3W50@(=+uRUA(Xll4&mh?zxP_CjM7b9-N^u|g zMpLs1a4!Qbf_GJ}IYyZIM^!5G8@i6uBj8iX_Cl|lFhAGY*9XA>#lt?;#;~wl;uI>fQ*LIdEUPcy9?p!Jgq$BYV)0AVFh|HWcK^5!sLIp1(L*AN)%(7ZYibQ3qL6DC61& z?n?-A_4X^|vLav7k{QB6CQN-|k@;NJ?MTl~O+Gi$Vdz9f##q=QE2sEa^l#;FsA%EC zMSj`G$D$mqNWkWTG`wokE%0z8bi7OR%Hy8bJAO&!#JrYQm@28g(KQ&#W(Yc~EHuM< zIdWjag$hK4q?nN^1zVIF9_%+CURL`NX}h)gY4)NV0TLsH`k(+|sjJYipdPxPwL$dN zyghU^i((P`{xEHjNeL^m{quXNyJ>cZuRBuc|9_1~ZFU5{htHhxQukp32^Kng2SNdh za(@MB7|Av3G|!+jO%|qT*f0|bZ(F@{=lbni5R^M7T@Z}ifGOW{wTOWe961%nEfYDo zaAFybit2y+PL?WODM3~)*TwP0En4kDl__#MLc;l`w8vT-Yr_3fspA5blHf$$GCtLt zrO}EBZc|e#Q$e>L;d^SS9VvGCN^239uay=81Xd+UphR=ezI?78TSoXJaqgFC%?+{m zK~$^!mfxau%j(VR)xtP#oZDa|g;b{eTTW`YtoLLHgf1**&%!@9$T~F#cCrBnX0T(VC*sMe`0Vf%TXx~}ZA~tU$|9b# zFz-6((Xda+>XAvKU}UWrO0Ga1p3aAyiK$M#S{$|8J7!}+{l&p)bRnPfG_{X9hLlQa z>9lC(kSx`$?u0 z4iW`Yf{M=@6gpyCO>$u&f0TPOuKBpJ#NwW^`ai)e(IyFK%Zs%JJw)$Pz_8H_ElgwRG?ltXquN&6^Lag zO+Ug*t@+V}g%A(tWZsVHh_B?RR2NU{UI_cX*}cZBgY?eyliBqfYpSRjgjrOnII>}J z+ga~8@dQ=J)gpV%{^{c$s&hfB5I1~aT8`^{FqGhl9PiYuIJIKS_ImZu)3$Sw{Fr_ai3NsN$RMRWFoOohEmU zSvM*N8J4w#3KC$_3FDB70o4vxtch4j=ZS_*>hmc{EK!PmDmDv>mWv;;UwccW;3rE9 zpYH2PZ}9@vsO{bVO9r|2FI$uP*qXr1v5u~x;#)~b9bDIRW2Y|HPqL#jAvdS%G~*=< z&}4_@kePIu9UB%DrXxp6(aMtKO6v|^PBE{X?4bUvw2YW8@Cl2B`Hgm4DpBZzuv{QWnp|!kBUDFG_Vsd}kAEGxSm%5fEv21m~WW~;no7ZFfZC^c(;G?eY%E+IZj&Dh9hC-ZZN+Y$zG6;90X2WJg zjA;JipgQpMW(A~RTx4^WM(^E zaPC5u8MtIES#5CLu#SxChFRdK+VU!b)w+4{5DjfDM9&P5rE}F#vVria(5K!6MRw`U z;nfKPSbbHU5O>18Hp96o37&F@L?F5KTO zrJj5bnge%D&OtJ-AzkrbZi>pKfhaIA7G*lSy}~ zxKg+$k>)8ySjdf@WoRR;JI|IivG|CV;9cE|rDQcdtV3h3=K-<@%c%Gyu7w*=G3BU1 zgg-%x^P6GykT{_yO8;K$uzpWsm%ej1S@G#F(~5xO5$y^dw3cuR}1Z4 zWeSRsIurpf+^ZGpwY_mU7t12C12dKuwKcjWswAy3`Y?%>Vs?_(vD<33>2+Li^4dgWR+WY~$VZwo8c ztx8ezo;xyEjFLuI`dO2S#Ikg)$-Ti>x)-0>!M&jn8CjZS2-GG97e~|RM7kRS+A9JQ zbJ>%)({p#7v(AL?WPmnsPty*x0XrdhU^_F?-NsCZvrAgs^4OC|g@ilo)?n5ZJ`^po z8gbni1|3`pVe5y886TIlk2JJo_D(V=t&xe-|R`PWJi^0mhy0U zYP!`JNnU4VE+t8-cxb*^QfYO4Z>qyJOXkc)lGe*5JV}M#wRM@A{wy}69D7=s$!ZAv z!RB^V@w)m%DKyt<>-2+y7IXvzp60Jgbyh{UYKLNV^ai?`7B$zhEi2}PhS@Po9%|kF za>zfYWBaI>|uyp!#JSiok=OuVEZ1JC->BrIIV5VRp|l`rkb5VBoNm9fbN zZ`FAxyV@ZVgk+>~S2^&AX#L&p;gSkau1~jw!)l2 zDjRi3X&QySL(VrnRdq@lt9%9-nV50qi+?omMKy^hhI$X5C8|iVI-1lI-9%+6MOo4X zJ`fZHo8YrCw$yH-QBWl{Q?FjLM*>gpkz{yUiD6Q{fhVeAg?kw9EVz?GT*H#q+8V8E z!__bj=?-K4D| zuE^-cqBni}L9Q*SQGHqcvX!dUa{E_HRkfTo;~u)GR}!VRdF0m3f&tN7d!JlN%?l*A>~oMA5(s>wz=A%hQB$HKt9&fdR8t zQ|m$5F(R6dtcBT`1oy|Js7ypQJZ+mWBjuH$w8DT@N)5qit0!igGtQ?p%;QQFQ#ZTR zEiGmbTZ3pnn|M~|u_~or9&U`gO}pTL&6(ObUYNw4XRtIC3uS72oMElv81cvFChs&j z+!@>bY?=l_cNOFELWS*YanWG*mEbuKdrsLd*P0Us(@>HdTN(t`_i1SyZlxuO!__*n z!t4mTRyWF(a3jGp7T0T-C$(O<#2&64?zzchB|;eGne2g&CROH{t5{dpRrX55m*B%$ zwgNv6BD;yN7Jd#BnJt<1106WV${l=Dv!)9g0MFg#ERdO&4rTYdE;378!zq?%L~m$T)>Oz7N=q;Xp` zw0Z7<2OLevX`Kso#D|hb`j4(ma~C?o^f480_?o>KFE1 zi6*4lDccK@=$Mhn&(8Pc=c3dy+e~diQhLq7ED`qjnAUm}9?ly};#PLoP$`7_u(i^k zkw9Tl@J3ddf!{YccocmFa(8I}F=TW%P^9a_+%Ue254t+0O-*baFs>=zGOMl4wQNb; zjq5I5vdX=>x>&57q4{jAbYJT0=9V^RfYREB%mU-W8!(EILwfGFqIo5`dmxNT44H%T zNs_s8vIU8fCe$w20GV!QX$#X8D{OJ@h~_2dCtaMu{15Uflapo|DRs$L05VDKi#2T- z#z|gY*&OR^i+&m8#rYSt|`xAqOgTHVrl0dE_oBWr7}T zycmD?k+RA(SaB)RCw=eJniG(B(K}|{6cU%=N76sf+ad;pnmahX}e$U#k^(2JG|rJi$Xl+vqmt@JQzW|sblnr4>r0Vtcf4MFy(!r7~oGv~3P&V8o% zc$s7qC`Fa#-cYM~)A(;yU)%NV0Rg0EMlJfXp}tq_S%@9LL=K~{=DPZZja%03UA<}3 z*0sgAT&JJqJ9=n|jb%A~-|obFw>VUsPI@CAKPhr70s6;p>=mD+gHVt!?>yp9Y5ypDXiBl93@ zELc;EHLJ@%GYu!I)3Byn>oN)R<$QabA{}Bi!ok4xiWeeCnC*a_ zGhOe@o(!4CGgB zk?Hz+vF?XS>@$2vop{mV+B6>(g-(g3Qj~!>YRsz{W{RnS#qA+uH+EfZ^MysZ!=c~J z=fYN_#CAHEz%v&>^aHbKBi(`-D&JJu)_b58+D6lswvqZejVy7Zh*P?6N#q$>VaAR6P!rR>h)d7MCgo?BQXzE}lk%!9 zTd!Qbp1(E%~NLEEL^Fo4_6d6z z`!^mj%GVI_^*WU7`D;v!@U%p~fWt6a1-()eK79wdIb7XjZb8GAg% zUFl5Yw*=D-R*B;o?QvjkYc@39IlQqv{B(C>iWA~mykPP2q3yQdWO#FnNu}X6EIS$A z*;tVdZQHtYcrDtdto7k_Sm`U$6R@YUb=jE`T6Ox3s#(e@p(&^k!};t@!_4gwp(mjP^)ahG%Pn8>2_iQvBSHOUcwBI z?krZ6Al+5E=VT+l|X<;a0t|7&AXl zjqj~Cw3(G?dBvA4UOKc^)?Jo^u5&K2p!qt*7%)z)AusDfMwTKj3WqbXeNu+^OM6?c_BWyOZ{g2hAIFbYex;SHE} zD2MfFyKJq(o$sfs7SzvNwQS+aq2xH|loshQY;h`T2v0B*TN=eQt4(z3lO^OUpD&jN zhPCW?Sj(~M%-!{YaV;xNdnP-t!~ANwl%Du942%uC3oQcaAb~QZixN#Asv+lWjThh^bQIF)tg_{!P8Jf95t;&+vrt z@ADzru)|wK8`SoHTL=s1!mB?CT_Z(-Y(~%y z?Nu6K<~CYIK_YoUYMk9y8^mW?-^w$VFbe&hD7 zSz08KjIFF+8=BiFr79QB?cScX%3xF$K1QdOE4B=UZe<4=vnMlmYS}bPENPiQR3#ok z_$W)w>UE(}*;5M@d6`8_eZ>y%X0bFMP+~ePkHKjbLq zrl1DXCIvxA#U3PlVqWM9Rk;oR4*_DWZ)F+Qd>%g}1DfX|nUkSSzl z6^G8u@x%zPWaW*o)GC$Pdw>vgIJ2{NiiGWtR0^?neS79^95rL8%sDyn5frRx_yjB$ zA!a$5IDmJmH3^U;UL0fXz@NyVWOY~8k~8o#$q&AO{6yV|(s4zx(X0p<$tKFQuQq&3 zZI>4!Z)M9DS@YPYc6K(NM3W?bv8Tj$ zThLU`Mrv5bEv1HK?In#&g|c*Y3)Dl;jCq08My~XPPd17EQy6Ex&m$wsM`F$hj981A zh487$4&7u5UelLkfV7ZsW@+H8dY4xu3`6A|-3wjHnbj69=#r;aMK_e?7;Ed93{?GW z)M1B`bN_R1B?RIAD%6qZ7rAivdr=qbOE{p~L>bU*c25ZhBs3nO($U3qYi~b#&7f2` zKt8stIoSIuRp8o&yw?Yz5z_)qu%qBnSd5Q)po2`RBemhVjgIAD?P#u2yMzpBUp}NY z;vVz^5p9oDk;zh3nwh5Vq)DpC-P%b=84~)I9#VBH6w1k27_a9Kv#(fHq4=mhcR$G4 zzpObT{KaqDYtEUZadxTK-C2-#ltDFB!bMPDnjo2?jLe=(%)nwMtO@93#f6o^)y0mT zQ`$T7g(CMeMj5?f`d8R?SlfU`kdH0l<0Rt={;X$U+E zFKfn%v~&n3a{8PHWQ?9LvpzTr&s_FinuNs`R*}_;JL|D#5vq+J-1N?5eH}VB!YsZE zV?jTcLW@i_p_o4<_$%b3XtTD$Q2{q-;+nH0)z61n0a2JyU4=4 zz$|Fkp)Luo_y%9I!ORdFt@;;bzUXffy}|m z`zrQko}mJ~B5A0P)o~6DQN4~BpcPyrY8BW0rwA4-*9fEzwemKuS5FUUhsrELa$IYf6Yc~3Q(bv#BE@0B}QfY+V2 zfI~(RLToiU2o@F*UPJFQrpBtQzA2PreHQ1H@#JHDXtwR|J6zaA(Rs zMAlXIH)?pC(2~RRQabYy0)D{)%xe{luyV-*z2X;@cV)>~iHU3U(X~M*#2jd8g#oW+ z9)KOD4P_3CogLP3&D=@X!bg(zvI!U$qwJ^Lc7F*9?WMS?`@35->h(IA7+#b=s@tKNY!r~qfQ8llGV z+J-@FhIg05wE1i?5rl#@d(ezL4p{d6tPk;0vJyuPobfj+fW=wdwtCa*HQQG&N)O@& zz`XFzrif!W-!UNw4I!_e7!xH6sSCwkpY`bu6SUoZ%4?W*ET-by^7Ya_Dmaz1LR}}V z4?Yrg5DApvI}J>ml(>q@9ZP9e+~Pu8n+~hSjono!Sl%Ofs!ppTS)5XWKq)1UD~sQY zj-#V})(G*?;Ffg`Pg)iDe&(?ik)*R#-Fh#Q|T1e zX+H#}ak#Zhyik}Fbdq1m>& zI+%w|ADhDhscG>;lVIJ2X3kG5Nb4qatj$u|D>`ny0WC(XdNwlFmajd>RyDe!Wtjv! zXo@}CIuWY zuQJ{>pu)4g&HxFVy9GNC6QE48#_1u;#<*jsseQ}-=~Wlf6onyBZYd2a0{qM;Lu?cl zF=j#2f^vmg30sFz9tw0}fp#81$)qAwWi^+E ze!D_xU3{N5vpCs6t_}a!w#gM0O#;g%3MQ)_@LtX}b~q6ZcX_Fcfmay175SbJ${5b{ zmlQJN!C^Q>lg{JIvTX~M3P$Sk$=GLe- z##v>6WvU}dD28)JP22Fl@ufm{thFe!6tbm2v(dj^w|83b0+}Xt^kYN`#l`T^4n$8`(~B*$!uU?&r-pzu1j=8@T6zci=tB__k9z#4}_hz5}WIfi?5 z0Tv?yetr17SzX!epj8V7%>1AjNxPycI?trgChINaELF%VVX9GJrNg_i8gz&J#mthq+*DTTH*ziJhCs=5 z7o&Q{AbVA}&%ACyUIAiTBM-p#SpZj ze1-&_Bzr+#Czl$WNywEDdbmqyKwh<|wB)o+s;qrE=C5vv8T2@IvV*u8S7Fo)yguNLvFO0@uRhje`v? zpe64L?dFkdGYcX2f2CWrDi$B4YcpG%*3i1@uy84)R&4txZ*{4dEY+~PTl;Gcb6?t} z{t(2yu%ZqY$=kB-55Mx#8n6)~%kI z1H3_C?Xujzy$N=1ummjPXEKB5P*0H=%Gr@;66O+0G4yR@ZoV4N4Eq{0VaXQWlH`?} zKv8hlFWKStR*Ueq7zrJx1fN(-b|_E~@mN$NO>$ckTZ#}2m-ehQlg$h+KCwwLZ82-J zaJYoRt&?i<7O= zzfCpGKPpdgMNxAbD`8R^XU5NH0<=nGNuF|W@dkJXvcS2qbuvm+y_(6UiuNMf*!fLs3WaNV;ok4a`Ry-{x>|T3w?F`zY~Da~fa=8?WtlnA>c= z)xBVwtM`IWU%5!0yH8zYY3}+$;@m-P*+jnRf&~M#K8M|nnr?^CEEi>Af5VM>74pf9 z-MmP7{9Jh#+$JZaFYEej28y0%Ex!H9Ho8OxP(S`a-q)&dC;(iJMQ+DBnD*1ag1ziE&gXmRelq))mDGPgDp;m&B<5p>HT6GhLJN8xNq`KaqD+Aclboz$8> zOP+tE`%S`^NYyH80L;S%?~`Q_*ZRuS?-plp(%YOX^C2dD;c7jsXsh-h!VGv)2)+w5 zMCsE8?dF)+8$345iNM#)DTP|3KeEO!w$F4Qp3uI#$#18M~hw#69V{#5RTGyT}(Z_+8`3X`BKjF=L4J14=^SML0%WXt&!U|e zTQ3vi7UCD3Q=?Q_*^)Lg(>#SKVX^lpuL{{?gd3IEKZDs{Bu5xS;4NL{%;^!%P-VS< zDY+H~7&?loCR23w2?kK#{8N7@;C$&HS(w@nKgwyh5lmXhWGht2R3e6{8HciIV9<>r z{_X~UY9y?%*55NIbT>=ouSB=ZpGGT*R!-Cg6c#1a2DCR8y*_gr>$Yrjk>(qNWHcuk zd~GKy@X;tOeuI0whOjxDYXx^xF$q;6=&$oBV&{@_YUVa=cG6N&8aErrBbKl~Iv9G~7qtd@=vmbqml6y(RAmSim^ou?C>BOqtY9~iZONHR zY}+jDkD1%}2s*trB5g>lIyo4n*sHk}M~%P_SoS?JgRPX_FkPHKv{F9lTNu8*`9bQ_ zp`j0(lXZ9K)V$vz2WLwZI$HvoDweQKbr+uz(7Y zdK)V&XmBI=K4hhur^5C^8y7Bw7Cvk$^d`PQfXrc|RgW%w{~hyMY{Ri8ELW-rZP~Lu zr%nn#?0v!tK{;3~$grjL@WP~)wWi?^>(9i8PxUVAzqLHMnqZ7@T(?A69JUh*WNfrb z2N^}26KhzvOiE#-7@O0>@N7`LVG~4IykRp6DHAoVloAgqd_*QOAelKqSS2(%b2q+) zZl2=FvkeV&*^yJ{+GZv>BfApw)54Vk-->H};lZ#$%_p11p;dJy+b-ggn6Y4ig?-Vg z?-D99zwYOFm9&CB`@Zc4Dz2$*&|b>WSB1*bi|eW>KqzfUf}ZR$!r~csyu*6y7#9?% zf`P$iuS-Hm#uR-XY!$HWTd^F*A@u36t*U#>6j%KzvX7!47w#d}uxeR1rbwxX^StP9FXMM27dbS~o z&49kNPvm4hh37JRH$ngIUr5fX6-ijUGYNk)FmqnUH9?JpCe~Bq85*CB1j~imh2hF2 z(U{x#@tj2CDE3VhT8nIKK{1vkbl4`Pzn>s!&Wo+l!@rn{wENx@Pn#wBvMS!S!9?T) zzq3{yG>!sEi2)^w&0H-jf{Ab3vJf75cxLfTc19F-*%d~$dZ|E{S>t4}n)L;O(jivs zC1>S%oRIGL%}&}xu$Z|!VgoM=co2>IKiZ!W zYN-|-;~JA^JB-sL5KUMRRmlGbF~wi||3d_Tl}wp}daT2qf}tgMs18e}Q4CE`-HXzHPm z7&93BW*{39@!`fOW)u`}1Csz|=mEaRul*ZT1J0hn!g$ zs;x$MQP`gD*%T`NTNGl@+l8S{I}H4~cK+HHtHS$*X19XWXi=?3?5+I~Uvwgz{nZE3 zUHLo?c9ffzZVC|RIuNie1jnK6d&7E5ix>)P^-=P}6iWNu#gsM^+STBc6ew7{7ZYOjZ_8$WcFUk-liJeC2;v9b-61OYvHme2{I8A(%g~dQ zs}QhT#t?gp_);BhPm9%6S^t*)5*-@~Ed)XqryIkM7d$H1;Mmxl1G%AGxmJlG?4% zB)-y*1hk|(kv&+l|6*p2%?EM6b?{LAvjqepBgKHg;B7?_;MsE0caPVScWIYjh zM#!E3;qy)Hf>mpsJQ`A_GQ(F2epgg74=O0>Z?=k-pmdd=I6h_;GzlUT7Nynjw%VG6 zqkLDBBEbdWCboV7D~stg z#Tv&?2ZO{^V21&QF4W%`tyNiHAx|A7$>`|>e}HMQM%LZBWnphh7H+&(CMoVXUTL@k z-^+G`OP{ayMjlrr3Fv#+qmHWv#$1Y9uroCV_mI4DN*#lb%dO*Y^y&7#B43k9=<$Jl z+7fwNp{DkxqX^wiBy#LVc-eyDfR=SQAR;+snQoS@^G*{xv=P}CnA~>(c0cP4OkP-+ zUfe?7>oZ{>=KITS0%eZI`%n-2>G7MWoDIcSkRDx#SPr{p8A~x_c|$SF!)PR+P(7Z9 zXypT*NXrRf%EQwEG0IzckaEov%8K+@C*Va=H%(MVTCk-yiW#2Kaakt;{FA(j2NhB zmMG{C$WhlH4_%Yewr(w}Wl?FyJB1{4uGJ$0V&wB6-m-m1$TsxHJZ1=9x0p1HK>3P8 zJTC7T3zP0DbMz|EZygB8w%)nh7f~f|YIbq|9eZ&6_$5qt=1$vFRvaTXeu$dhn4Xo8@dL49(t z7f+)j`vAtOWF@TSU%ppd|;X;S)6WTD@27W6HNMtaxpIMzXQXKKdOm0 zC*IIZlwI->ia2OsyEW=9(lhFjq&|~orfybFiV}AQ249x9s5+6($z-p+AcI&+IqqHW z<-$am*J=15U8^P{sS{ser9eSP*Ld}tTU*LDW)fe%d@x-D~N~}OT z2gTQ_b&vX9Nw5{_?L6!|Id^;3jiGp|zR>Ud1*lAMo-O!$jQg$?m>7$){U``rgXM}- zu@gG2$(}+VIRLzyp{4?oV^;+DhVJ4aMrvmf;KS(=1HfmRWGrg%3NlIv-iB~jyz}lT z@ICUxw6`o(R}}aonH)v4fgI>HV#hOre+$bYd;NDe9?%I31_xZtbSE$_D$VWFtb>a( z$){b4ew@trBySTf+80(n3rT~N3h|Z9u5g>G+$hF~56zS%wCliy(5H=I5)tsQ;pJ!h zp2@~6#=J)@@d*#}VGRfw?~A*l4j@s3R6KH|c`el7Ei86|z0{MN-Oczs+ZT5w(np)AG1;+kou z)8gKnn}6nZrdp6iU9s;aAA%es9DXt={JlD7Z(QYJrZWOn${e2wG4OLm%Gx9vM_C|z zH&$~QfCymfq1i43!q29-#Pj)sQ<`7Z(kG~ac=(aULhZ!Guh_NzoHV-kZMZA6Sfc3e zlID~7lJ#yJDtdYLq=orWg7fovIdW_kx3>V@dGtNS|Bq9ZniQOjT}2>kMjDxC6S7D6 zU?Fh6*QZc-kDf1LjAah(LjgjA>5n57B1EAZ=DxwAZQENDWQw-}V=S|PX>7g~ed9e{ zgLc#vR?aiP0vJ%HFn;U>X035#`gUE~C3s9Qr?n_pEfs?} zpaCu3V}4FrG7(EqH(7w4-OiN2v8V{c{RFNN?b-!=rL>b zqfbl|K9IyLEgCSa3bAdw+HO!))N9?j$mT|4%N7r2gWu}g^~5Zr=(mG@ijqApQjb!{ zqiH&UxCWSLR!E`HEQ&vb&%{>IDswZ~V}TPdgv1Ju>#4{$->F)uEqMFs|Vw6t0LY0fMr1%#E brlC1PkfNQsFwm*~S^$3_z^G4i63PDq1r*9y literal 0 HcmV?d00001 diff --git a/bash-5.1/po/gl.po b/bash-5.1/po/gl.po new file mode 100644 index 0000000..ae28418 --- /dev/null +++ b/bash-5.1/po/gl.po @@ -0,0 +1,4805 @@ +# Galician translation for bash package. +# Copyright (C) 2011 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# +# Leandro Regueiro , 2011. +# Francisco Diéguez , 2012. +# Fran Dieguez , 2012. +# +# Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas +# colaborar connosco, podes atopar máis información en +# +msgid "" +msgstr "" +"Project-Id-Version: bash 4.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2012-02-23 14:38+0100\n" +"Last-Translator: Leandro Regueiro \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "subíndice de matriz incorrecto" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: non é posíbel converter a matriz de indizada a asociativa" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: índice de matriz asociativa non válido" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: non é posíbel asignar a un índice que non é numérico" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: se debe usar un subíndice ao asignar a unha matriz asociativa" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: non foi posíbel crear: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: non foi posíbel atopar a combinación de teclas " +"para a orde" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: o primeiro carácter que non é espazo en branco non é `\"'" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "no hai un `%c' que peche en %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: falta un `:' separador" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "%s: non se pode borrar a asignación" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "`%s': nome de alias non válido" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "no se activó a edición de liña" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "`%s': nome de combinación de teclas non válido" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: non se pode leer: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': nome de función descoñecido" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s non está asignado a ningunha tecla.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s pódese invocar a través de " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "%s: non se pode borrar a asignación" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "contía de ciclo" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "só ten significado nun ciclo `for', `while' ou `until'" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Devolve o contexto da chamada a subrutina actual.\n" +" \n" +" Sen EXPR, devolve \"$liña $nomeficheiro\". Con EXPR, devolve\n" +" \"$liña $subrutina $nomeficheiro\"; esta información adicional\n" +" pódese usar para fornecer un volcado de pila.\n" +" \n" +" O valor de EXPR indica cantos marcos de chamada se debe retroceder\n" +" antes do actual; o marco inicial é o marco 0.\n" +" \n" +" Estado de Saída:\n" +" Devolve 0 a menos que o shell non estea executando unha función de " +"shell\n" +" ou EXPR sexa non válida." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME non está definido" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "demasiados argumentos" + +#: builtins/cd.def:342 +#, fuzzy +msgid "null directory" +msgstr "non hai outro directorio" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD non está definido" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "liña %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "aviso: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: uso: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: a opción require un argumento" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: requírese un argumento numérico" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: non se atopou" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: opción non válida" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nome de opción non válido" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': non é un identificador válido" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "número octal non válido" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "número hexadecimal non válido" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "número non válido" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: especificación de sinal non válida" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s': no é un pid ou unha especificación válida de traballo" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: variábel de só lectura" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s fóra de rango" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argumento" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s fóra de rango" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: non existe ese traballo" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: no hai control de traballos" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "no ha control de traballos" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: restrinxido" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "restrinxido" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: no é una orde interna do shell" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "erro de escritura: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "erro ao estabelecer os atributos da terminal: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "erro ao obtener os atributos da terminal: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: erro ao obtener o directorio actual: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: especificación de traballo ambigüa" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: non é posíbel borrar: %s é de só lectura" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: non é posíbel borrar" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nome de acción non válido" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: non hai completado de especificación" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "aviso: é posíbel que a opción -F non funcione como se espera" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "aviso: é posíbel que a opción -C non funcione como se espera" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "non se está executando a función de completado" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "só se pode usar dentro dunha función" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "`%s': nome de alias non válido" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "non se pode use `-f' para facer funcións" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: función de só lectura" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: non é posíbel destruír variábeis de matriz desta forma" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: non é posíbel converter unha matriz asociativa a indizada" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "a carga dinámica non está dispoñíbel" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "non é posíbel abrir o obxecto compartido %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "non é posíbel atopar %s no obxecto compartido %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: non foi cargado dinamicamente" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: non foi cargado dinamicamente" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: non foi posíbel eliminar: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: é un directorio" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: non é un ficheiro regular" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: o ficheiro é demasiado grande" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: non é posíbel executar o ficheiro binario" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: non foi posíbel executar: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "logout\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "non é un shell de entrada: use `exit'" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Hai traballos pendentes.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Hay traballos en execución.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "non foi posíbel atopar a orde" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "especificación de historial" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: non é posíbel abrir o ficheiro temporal: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "actual" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "o traballo %d iniciou sen control de traballo" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opción ilegal -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opción require un argumento -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "asociación desactivada" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: táboa de asociación baleira\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "coinc\torde\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Orde do shell que coincide coa palabra `" +msgstr[1] "Orde do shell que coincide coas palabras `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"non hai temas de axuda que coincidan con «%s». Probe «help help» ou «man -k " +"%s» ou «info %s»" + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: non foi posíbel abrir: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Estas ordes do shell están definidas internamente. Teclee `help' para\n" +"ver esta lista.\n" +"Teclee `help nome' para saber máis sobre a función `nome'.\n" +"Use `info bash' para saber máis sobre o shell en xeral.\n" +"Use `man -k' o `info' para saber máis sobre as órdenes que non están nesta " +"lista.\n" +"\n" +"Un asterisco (*) xunto a un nome significa que a orde está desactivada.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "non foi posíbel usar máis dun de -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "posición no historial" + +#: builtins/history.def:340 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: nome de opción non válido" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: fallou a expansión do historial" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: fallou inlib" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "non se permiten outras opcións con «-x»" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: os argumentos deben ser procesos ou IDs de traballos" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Erro descoñecido" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "agardábase unha expresión" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: non é unha matriz indizada" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: especificación de descritor de ficheiro non válida" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: descritor de ficheiro non válido: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: conta de liñas non válida" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: orixe de matriz non válido" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: quantum de chamada non válido" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "nome de variábel de matriz baleiro" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "requírese a compatibilidade de variábel de matriz" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': falta o carácter de formato" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "`%c': especificación de formato de tempo non válida" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "`%c': carácter de formato non válido" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "aviso: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "falta o díxito hexadecimal para \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "falta o díxito unicode para \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "non hai outro directorio" + +#: builtins/pushd.def:360 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: límite de argumento non válido" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "a pila de directorios está baleira" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "índice da pila de directorios" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Mostra a lista de directorios actualmente gravados. Os directorios\n" +" gárdanse na lista coa orde `pushd'; pode ir saíndo da\n" +" lista coa orde `popd'.\n" +" \n" +" Opcións:\n" +" -c\tlimpa a pila de directorios, eliminando todos os elementos\n" +" -l\tnon mostra as versións con prefixo de til dos directorios\n" +" \trelativos ao seu directorio inicial\n" +" -p\tmostra a pila de directorios cunha entrada por liña\n" +" -v\tmuestra a pila de directorios cunha entrada por liña coa\n" +" \tsúa posición na pila como prefixo\n" +" \n" +" Argumentos:\n" +" +N\tMostra a N-ésima entrada contando desde a esquerda da\n" +" \tlista mostrada por dirs cando se chama sen opcións,\n" +" \tcomezando desde cero.\n" +" \n" +" -N\tMostra a N-ésima entrada contando desde a dereita da\n" +"\tlista mostrada por dirs cando se chama sen opcións,\n" +"\tcomezando desde cero." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Engade un directorio ao tope da rima de directorios, ou rota\n" +" a pila, facendo que o novo tope da rima sexa o\n" +" directorio de trabajo actual. Sen argumentos, intercambia\n" +" os dous directorios do tope.\n" +" \n" +" Argumentos:\n" +" +N\tRota a pila para que o N-ésimo directorio (contando\n" +" \tda izquierda da lista mostrada por `dirs',\n" +" \tcomezando desde cero) estea no tope.\n" +" -N\tRota a pila para que o N-ésimo directorio (contando\n" +" \tda derecha da lista mostrada por `dirs',\n" +" \tcomezando desde cero) estea no tope.\n" +" \n" +" dir\tagrega DIR á rima de directorios no tope,\n" +" \tfacéndoo o novo directorio de traballo actual.\n" +" \n" +" A orde interna `dirs' mostra a rima de directorios." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Borra entradas da pila de directorios. Sen argumentos, borra\n" +" directorio do tope da pila, e cambia ao novo directorio tope.\n" +" \n" +" Opcións:\n" +" -n\tsuprime o cambio normal de directorio cando se borra\n" +" \tdirectorios da pila, así só se manipula a pila.\n" +" \n" +" Argumentos:\n" +" +N\tBorra a N-ésima entrada contando da esquerda da\n" +" \tlista mostrada por `dirs', comenzando desde cero.\n" +" \tPor exemplo: `popd +0' borra o primeiro directorio, `popd +1'\n" +" \to segundo.\n" +" \n" +" -N\tBorra a N-ésima entrada contando da derecha da\n" +" \tlista mostrada por `dirs', comezando desde cero.\n" +" \tPor exemplo: `popd -0' borra o último directorio, `popd -1'\n" +" \to penúltimo.\n" +" \n" +" A orde interna `dirs' mostra a pila de directorios." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: especificación de tempo de expiración non válida" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "erro de lectura: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "só se pode usar «return» nunha función ou guión lido con «source»" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "non é posíbel borrar ao mesmo tempo unha función e unha variábel" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: non é unha variábel de matriz" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: non é unha función" + +#: builtins/setattr.def:194 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: non é posíbel borrar" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "conta de shift" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "non é posíbel activar e desactivar opcións do shell simultaneamente" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: nome de opción do shell non válido" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "requírese un argumento de nome de ficheiro" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: non se atopou o ficheiro" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "non é posíbel suspender" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "non é posíbel suspender un shell de entrada" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s é un alias de `%s'\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s é unha palabra chave do shell\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s é unha función\n" + +#: builtins/type.def:299 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s é unha orde interna do shell\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s é unha orde interna do shell\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s é %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s está asociado (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: límite de argumento non válido" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': orde errónea" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: non é posíbel obter o límite: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "límite" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: non é posíbel modificar o límite: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "número octal" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': operador de modo simbólico non válido" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': carácter de modo simbólico non válido" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " liña " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "última orde: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Abortando…" + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:462 +msgid "unknown command error" +msgstr "erro de orde descoñecido" + +#: error.c:463 +msgid "bad command type" +msgstr "tipo de orde erróneo" + +#: error.c:464 +msgid "bad connector" +msgstr "conector erróneo" + +#: error.c:465 +msgid "bad jump" +msgstr "salto erróneo" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variable sen asignar" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aexpirou mentres agardaba algunha entrada: auto-logout\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "non é posíbel redirixir a saída estándar desde /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': carácter de formato non válido" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "erro de canalización" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restrinxido: non se pode especificar `/' en nomes de ordes" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: non se atopou a orde" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: intérprete erróneo" + +#: execute_cmd.c:5891 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: non é posíbel executar o ficheiro binario" + +#: execute_cmd.c:5977 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s é unha orde interna do shell\n" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "no se pode duplicar o df %d ao df %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "excedeuse o nivel de recursión da expresión" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "desbordamento da base da pila de recursión" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "erro de sintaxe na expresión" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "tentouse asignar a algo que non é unha variábel" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "erro de sintaxe na expresión" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "división entre 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "erro: elemento de asignación de expresión erróneo" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "agardábase `:' para a expresión condicional" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "expoñente menor que 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" +"agardábase un identificador despois do pre-incremento ou pre-decremento" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "falta un `)'" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "erro de sintaxe: agardábase un operando" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "erro de sintaxe: operador aritmético non válido" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (o elemento de erro é \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "base aritmética non válida" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: conta de liñas non válida" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "valor demasiado grande para a base" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: erro de expresión\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: non é posíbel acceder aos directorios pai" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "non é posíbel restabelecer o modo nodelay para o df %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"non é posíbel asignar un novo descritor de ficheiros para a entrada de bash " +"desde o fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" +"save_bash_input: o almacenamento intermedio xa existe para o novo fd %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: tubería de pgrp" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "o pid `forked' %d aparece no traballo en execución %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "borrando o trabajo detido %d con grupo de proceso %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) márcase como vivo aínda" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: non existe tal pid" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Sinal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Feito" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Detido" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Detido(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "En execución" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Feito(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Saída %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Estado descoñecido" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(«core» xerado) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (dir agora: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid fillo (%ld a %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld non é un proceso fillo desta shell" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Non hai un rexistro do proceso %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: o traballo %d está detido" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: non existe ese traballo" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: o traballo rematou" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: o trabajo %d xa está en segundo plano" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: actívase WNOHANG para evitar o bloque indefinido" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: liña %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " («core» generado)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(dir agora: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_jobs_control: fallou getpgrp" + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_jobs_control: disciplina de liña" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_jobs_control: disciplina de liña" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_jobs_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "non é posíbel estabelecer o grupo de procesos de terminal (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "non hai control de trabalos nesta shell" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: fallou a aserción: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: aserción arruinada\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "descoñecido" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: bloque na lista libre sobreescrito" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: chamouse cun argumento de bloque previamente liberado" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: chamouse cun argumento de bloque sen asignar" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: os tamaños dos anacos de inicio e fin son diferentes" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: chamouse cun argumento de bloque sen asignar" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" +"realloc: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "" +"realloc: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: os tamaños dos anacos de inicio e fin son diferentes" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: a táboa alloc está chea con FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p xa está na táboa como asignado?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p xa está na táboa como libre?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "base non válida" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: anfitrión descoñecido" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: servizo non válido" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: especificación de ruta de rede errónea" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "non hai compatibilidade para operacións de rede" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL non se pode cambiar a configuración rexional (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "" +"setlocale: LC_ALL: non se pode cambiar a configuración rexional (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Ten mensaxes en $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Ten unha nova mensaxe en $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "O correo en %s foi lido\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "error de sintaxe: requírese unha expresión aritmética" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "error sintáctico: `;' non esperado" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "erro de sintaxe: `((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tipo de instrución %d erróneo" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"o documento-aquí na liña %d está delimitado por fin-de-fichero (agardábase `" +"%s')" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: a instrucción de redirección `%d' está fóra de rango" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "EOF inesperado mentres se buscaba un `%c' coincidente" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "EOF inesperado mentres se buscaba `]]'" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "error de sintaxe na expresión condicional: elemento inesperado `%s'" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "error sintáctico na expresión condicional" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "elemento inesperado `%s', agardábase `)'" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "agardábase `)'" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argumento inesperado `%s' para o operador unario condicional" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "argumento inesperado para o operador unario condicional" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "elemento inesperado `%s', agardábase un operador binario condicional" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "agardábase un operador binario condicional" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argumento inesperado `%s' para o operador binario condicional" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "argumento inesperado para o operador binario condicional" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "elemento inesperado `%c' na orde condicional" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "elemento inesperado `%s' na orde condicional" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "elemento inesperado %d na orde condicional" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "error de sintaxe perto do elemento inesperado `%s'" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "erro de sintaxe cerca de «%s»" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "error de sintaxe: non se agardaba o final do fichero" + +#: parse.y:6365 +msgid "syntax error" +msgstr "erro de sintaxe" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use «%s» para deixar o shell.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "EOF non agardado mentres se buscaba un «)» coincidente" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: non se atopa a función `%s'" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: COMPSPEC nulo" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: conector erróneo `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: descriptor de fichero non válido" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: punteiro a ficheiro NULL" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != numfich xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: `%c': carácter de formato non válido" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "descritor de ficheiro fóra de rango" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: redireccionamento ambigüo" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: non se pode sobreescribir un fichero existente" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restrinxido: no se pode redirixir a saída" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "non se pode crear un fichero temporal para o documento-aquí: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: non é posíbel asignar o gd á variábel" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "non se admite /dev/(tcp|udp)/anfitrion/porto sen rede" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "erro de redirección: non é posíbel duplicar o fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "non é posíbel atopar /tmp, por favor creeo!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp debe ser un nome de directorio válido" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opción non válida" + +#: shell.c:1319 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "non é posíbel restabelecer o modo nodelay para o df %d" + +#: shell.c:1330 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "non é posíbel restabelecer o modo nodelay para o df %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: é un directorio" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Non teño nome!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versión %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Uso:\t%s [opción GNU longa] [opción] ...\n" +"\t%s [opción GNU longa] [opción] guión-do-shell\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Opcións GNU longas:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Opcións do shell:\n" + +#: shell.c:2043 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD o -c orde ou -O opcion_shopt\t\t(só invocación)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ou -o opción\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Escriba `%s -c \"help set\"' para máis información sobre as opcións do " +"shell.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Escriba `%s -c help' para máis información sobre as ordes internas do " +"shell.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Use a orden `bashbug' para reportar erros.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: operación non válida" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Sinal ambigüa" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Colgar" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Interromper" + +#: siglist.c:58 +msgid "Quit" +msgstr "Saír" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Instrución ilegal" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT rastreo/captura" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "instrución ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "instrución EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Excepción de coma flotante" + +#: siglist.c:86 +msgid "Killed" +msgstr "Matado" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Erro no bus" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Violación de segmento" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Chamada ao sistema errónea" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Tubería rota" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Temporizador" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Rematado" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Condicón de E/s urxente" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Detido (sinal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Continúa" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "O proceso fillo morreu ou está parado" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Detido (entrada pola terminal)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Detido (saída pola terminal)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "E/S listas" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Límite de CPU" + +#: siglist.c:154 +msgid "File limit" +msgstr "Límite de ficheiros" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarma (virtual)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarma (contorno)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Xanela cambiada" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Bloqueo de gravación" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Sinal de usuario 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Sinal de usuario 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "entrada de datos HFT pendente" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "fallo de enerxía inminente" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "caída do sistema inminente" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "migrando o proceso a outra CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "erro de programación" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "o modo monitor HFT foi concedido" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "o modo monitor HTF foi retirado" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "a secuencia de son HFT foi completada" + +#: siglist.c:214 +msgid "Information request" +msgstr "Solicitude de información" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Sinal descoñecido #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "susbtitución errónea: non hai un `%s' que peche en %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: no é posíbel asignar unha lista a un membro da matriz" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "non é posíbel crear a tubería para a sustitución do proceso" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "non é posíbel crear un proceso fillo para a substitución do proceso" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "non é posíbel abrir a tubería chamada %s para lectura" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "non é posíbel abrir a tubería chamada %s para escritura" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "non é posíbel duplicar a tubería chamada %s como df %d" + +#: subst.c:6213 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "substitución errónea: non hai unha \"`\" que peche en %s" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "non é posíble crear a tubería para a substitución da orde" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "non é posíbel crear un proceso fillo para a substitución da orde" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: non é posíbel duplicar a tubería como fd 1" + +#: subst.c:6883 subst.c:9952 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: conta de liñas non válida" + +#: subst.c:7013 subst.c:7177 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "`%s': nome de alias non válido" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parámetro nulo ou non estabelecido" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parámetro nulo ou non estabelecido" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expresión de subcadea < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substitución errónea" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: non é posíbel asignar de esta forma" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"versiones futuras do intérprete obligarán a evaluación como unha " +"substitución aritmética" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "substitución errónea: non hai unha \"`\" que peche en %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "non hai concidencia: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "agardábase un argumento" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: agardábase unha expresión enteira" + +#: test.c:265 +msgid "`)' expected" +msgstr "agardábase `)'" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "`)' agardábase, atopouse %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: agardábase un operador binario" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: agardábase un operador unario" + +#: test.c:881 +msgid "missing `]'" +msgstr "falta un «]»" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "error sintáctico: `;' non esperado" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "número de sinal non válido" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: valor erróneo en trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: o manexador de sinal é SIG_DFL, reenviando %d (%s) a sí " +"mesmo" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: sinal errónea %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "erro ao importar a definición da función para «%s»" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "o nivel de shell (%d) é demasiado alto, restabelécese a 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: non hai contexto de función no ámbito actual" + +#: variables.c:2693 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: non é posíbel asignar o gd á variábel" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: non hai contexto de función no ámbito actual" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s ten exportstr nulo" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "carácter non válido %d en exportsrt para %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "non hai «=» en exportstr para %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context: a cabezak de shell_variables non é un contexto de función" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: non é un contexto global_variables " + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: a cabeza de shell_variables non é un ámbito de ambiente temporal" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: non é posíbel abrir como FICHEIRO" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" + +#: variables.c:6437 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s fóra de rango" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licenza GPLv3+: GPL de GNU versión 3 ou posterior \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versión %s (%s)\n" + +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." +msgstr "Isto é software libre; vostede é libre de cambialo e redistribuilo.\n" + +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Non hai GARANTÃA, á extensión permitida pola ley.\n" + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: non é posíbel asignar %lu bytes (%lu bytes asignados)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: non é posíbel asignar %lu bytes" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: non é posíbel asignar %lu bytes (%lu bytes asignados)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: non é posíbel asignar %lu bytes" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nome[=valor] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] nome [nome ...]" + +#: builtins.c:53 +#, fuzzy +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m comb_teclas] [-f ficheiro] [-q nome] [-u nome] [-r " +"secteclas] [-x secteclas:orde-shell] [keyseq:función-readline ou función-" +"readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [orde-interna-shell [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expresión]" + +#: builtins.c:66 +#, fuzzy +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]]] [directorio]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] orde [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilrtux] [-p] [nome[=valor] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilrtux] [-p] nome[=valor] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [option] nome[=valor] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f nomeficheiro] [nome ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts cadena_opcións nome [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a ome] [orde [argumentos ...]] [redirección ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e nome_e] [-lnr] [primeiro] [último] ou fc -s [pat=rep] [orde]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [id_traballo]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [id_traballo ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p ruta] [-dt] [nome ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [patrón ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d desprazamento] [n] ou history -anrw [ficheiro] ou history -" +"ps arg [arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [idtraballo ...] ou jobs -x orde [args]" + +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [id_traballo ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s id_sinal | -n num_sinal | -id_sinal] pid | id_traballo ... ou kill -" +"l [id_sinal]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a matriz] [-d delim] [-i texto] [-n ncars] [-N ncars] [-p " +"prompt] [-t timeout] [-u fd] [nome ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opción] [--] [arg ...]" + +#: builtins.c:144 +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [nome ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [nome[=valor] ...] ou export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [nome[=valor] ...] ou readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source ficheiro [arguments]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". ficheiro [argumentos]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expresión]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] id_sinal ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] nome [nome ...]" + +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [límite]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [modo]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [id]" + +#: builtins.c:181 +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [pid]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOME [in PALABRAS ... ] ; do ORDES; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do ORDES; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NOME [in PALABRAS ... ;] do ORDES; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PALABRA in [PATRÓN [| PATRÓN]...) ORDES ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "if ORDES; then ORDES; [ elif ORDES; then ORDES; ]...[ else ORDES; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while ORDES; do ORDES; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until ORDES; do ORDES; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NOME] orden [redireccións]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function nome { ORDES ; } ou nome () { ORDES ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ ORDES ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( expresión ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ expresión ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Nomes e significados de algunhas variábeis de shell" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [nome_opción ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] formato [argumentos]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o opción] [-A acción] [-G patglob] [-" +"W listapalabras] [-F función] [-C orde] [-X patfiltro] [-P prefixo] [-S " +"sufixo] [nome ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o opción] [-A acción] [-G patglob] [-W " +"listapalabras] [-F función] [-C orde] [-X patfiltro] [-P prefixo] [-S " +"sufixo] [palabra]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o opción] [-DE] [nome ...]" + +#: builtins.c:242 +#, fuzzy +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-n conta] [-O orixe] [-s conta] [-t] [-u df] [-C chamada] [-c " +"quantum] [matriz]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n conta] [-O orixe] [-s conta] [-t] [-u df] [-C chamada] [-c " +"quantum] [matriz]" + +#: builtins.c:256 +#, fuzzy +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Define ou mostra aliases.\n" +" \n" +" `alias' sen argumentos mostra a lista de aliases na forma\n" +" reutilizábel `alias NOMBRE=VALOR' na saída estándar.\n" +" \n" +" De outra maneira, defínese un alias por cada NOME cuxo VALOR se\n" +" forneza. Un espazo final en VALOR causa que se revise\n" +" a seguinte palabra para substitución de alias cando se expande\n" +" o alias.\n" +" \n" +" Opciones:\n" +" -p\tMuestra todos los aliases definidos en un formato reusable\n" +" \n" +" Estado de salida:\n" +" alias devuelve verdadero a menos que se de un NOMBRE para el cual\n" +" no se haya definido ningún alias." + +#: builtins.c:278 +#, fuzzy +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Borra cada NOME da lista de alias definidos.\n" +" \n" +" Opcións:\n" +" -a\telimina todas as definicións de alias.\n" +" Devovle verdadero a menos que un NOME non sexa un alias existente." + +#: builtins.c:291 +#, fuzzy +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Estabelece secuencias de teclas Readline e variábeis.\n" +"\n" +" Asigna unha secuencia de teclas a unha función Readline ou a unha macro, " +"ou\n" +" estabelece unha variábel Readline. A sintaxe dos argumentos que\n" +" non son opcións é equivalente á que se encontra en ~/.inputrc,\n" +" pero débese pasar como un só argumento:\n" +" p.e., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" opcións:\n" +" \n" +" -m comb_teclas Usa COMB_TECLAS como a combinación de teclas pola\n" +" duración desta orde. Os nomes de combinacións\n" +" de teclas aceptábeis son emacs, emacs-standard,\n" +" emacs-meta, emacs-ctlx, vi, vi-move, vi-command e\n" +" vi-insert.\n" +" -l Enlista os nomes das funcións.\n" +" -P Enlista os nomes das funcións e asignacións.\n" +" -p Enlista as funcións e asignacións nunha forma que\n" +" se pode reusar como entrada.\n" +" -S Enlista as secuencias de teclas que invocan macros\n" +" e os seus valores.\n" +" -s Enlista as secuencias de teclas que invocan macros\n" +" e os seus valores nunha forma que se poden reusar " +"como\n" +" entrada.\n" +" -V Enlista os nomes de variábeis e valores.\n" +" -v Enlista os nomes de variábeis e valores nunha\n" +" forma que se pode reusar como entrada.\n" +" -q nome-funcion Pregunta qué teclas invocan a función nomeada.\n" +" -u nome-función Borra todas as teclas que están ligadas\n" +" á función nomeada.\n" +" -r secteclas Borra a asignación para a SECTECLAS.\n" +" -f fichero Lee as asignacións de teclas do FICHERO.\n" +" -x secteclas:orde-shell\tCausa que se execute a ORDE-SHELL cando\n" +" \t\t\t\tse introduce a SECTECLAS.\n" +" \n" +" Estado de saída:\n" +" bind devolve 0 a menos que se presente unha opción descoñecida ou se\n" +" se produza un erro." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Termina ciclos for, while o until.\n" +" \n" +" Termina un ciclo FOR, WHILE o UNTIL. Se se especifica N, remata\n" +" N ciclos anidados.\n" +" \n" +" Estado de saída:\n" +" O estado de saída é 0 a menos que N non sexa maior ou igual a 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Continúa iteracións for, while o until\n" +" \n" +" Continúa a seguinte iteración do ciclo FOR, WHILE ou UNTIL\n" +" circundante. Se se especifica N, retoma no N-ésimo ciclo circundante.\n" +" \n" +" Estado de Saída:\n" +" O estado de salida é 0 a menos que N non sexa maior ou igual a 1." + +#: builtins.c:354 +#, fuzzy +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Executa ordes internas do shell\n" +" \n" +" Executa a ORDEN-INTERNA-SHELL cos argumentos ARGs sen realizar\n" +" a busca interna de ordes. Isto é útil cando desexa reimplementar\n" +" unha orde interna do shell como unha función de shell, pero necesita\n" +" executar a orde interna dentro da función.\n" +" \n" +" Estado de Saída:\n" +" Devolve o estado de saída da ORDE-INTERNA-SHELL, ou falso se a\n" +" ORDE-INTERNA-SHELL non é unha orde interna de shell." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Devolve o contexto da chamada a subrutina actual.\n" +" \n" +" Sen EXPR, devolve \"$liña $nomeficheiro\". Con EXPR, devolve\n" +" \"$liña $subrutina $nomeficheiro\"; esta información adicional\n" +" pódese usar para fornecer un volcado de pila.\n" +" \n" +" O valor de EXPR indica cantos marcos de chamada se debe retroceder\n" +" antes do actual; o marco inicial é o marco 0.\n" +" \n" +" Estado de Saída:\n" +" Devolve 0 a menos que o shell non estea executando unha función de " +"shell\n" +" ou EXPR sexa non válida." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" + +#: builtins.c:425 +#, fuzzy +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Mostra o nome do directorio de traballo actual.\n" +" \n" +" Opcións:\n" +" -L\tmostra o valor de $PWD se nomea ao directorio de\n" +" \ttraballo actual\n" +" -P\tmostra o directorio físico, sen ligazóns simbólicas\n" +" \n" +" Por defecto, `pwd' comportase como se se especificara `-L'.\n" +" \n" +" Estado de Saída:\n" +" Devolve 0 a menos que se dea unha opción non válida ou non se poida " +"leer\n" +" o directorio actual." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Orde nula.\n" +" \n" +" Sen efecto; a orde non fai nada.\n" +" \n" +" Estado de Saída:\n" +" Sempre con éxito." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Devolve un resultado con éxito.\n" +" \n" +" Estado de salida:\n" +" Sempre con éxito." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Devolve un resultado sen éxito.\n" +" \n" +" Estado de saída:\n" +" Sempre falla." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" + +#: builtins.c:490 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" + +#: builtins.c:532 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Estabelece valores de variábeis e atributos.\n" +" \n" +" Obsoleto. Consulte `help declare'." + +#: builtins.c:540 +#, fuzzy +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Define variábeis locais.\n" +" \n" +" Crea unha variábel local chamada NOME, e dalle un VALOR. OPCIÓN pode\n" +" ser calquera opción aceptada por `declare'.\n" +" \n" +" As variábeis locais só se pueden usar nunha función; son visibles\n" +" só na función onde se definen e os seus fillos.\n" +" \n" +" Estado de Saída:\n" +" Devolve con éxito a menos que se dea unha opción non válida, se produza\n" +" un erro, ou o shell non estea executando unha función." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Executa argumentos como unha orde de shell.\n" +" \n" +" Combina os ARGumentos nunha soa cadena, usa o resultado como entrada\n" +" para o shell, e executa as órdenes resultantes.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado de saida da orde ou éxito se a orde é nula." + +#: builtins.c:652 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Remata a shell.\n" +" \n" +" Termina o shell cun estado de N. Se se omite N, o estado de saída\n" +" é o mismo da última orde executada." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Termina un shell de entrada.\n" +" \n" +" Termina un shell de entrada cun estado de saída de N. Devolve un\n" +" erro se non se executa nunha shell de entrada." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Move o trabañño ao primeiro plano.\n" +" \n" +" Localiza o traballo identificado con IDTRABALLO no primeiro plano, e\n" +" faino o traballo actual. Se IDTRABALLO non está presente, úsase\n" +" a noción do shell do traballo actual.\n" +" \n" +" Estado de Saída:\n" +" O estado da orde localizada en primeiro plano, ou falla se sucede un " +"erro." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspende a execución do shell.\n" +" \n" +" Suspende a execución deste shell até que recibe un sinal SIGCONT.\n" +" Os shells de entrada non se poden suspender, a menos que sexan " +"forzados.\n" +" \n" +" Opcións:\n" +" -f\tforza a suspensión, aínda se o shell é un shell de entrada\n" +" \n" +" Estado de Saída:\n" +" Devolve con éxito a menos que non estea activo o control de traballos o\n" +" se produza un erro." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Evalúa unha expresión condicional.\n" +" \n" +" Este é un sinónimo para a orde interna \"test\", pero o último\n" +" argumento debe ser un `]' literal, que coincida co `[' inicial." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Mostra os tempos de proceso.\n" +" \n" +" Mostra os tempos de usuario e sistema acumulados polo shell e todos\n" +" os seus procesos fillos.\n" +" \n" +" Estado de saída:\n" +" Sempre con éxito." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" + +#: builtins.c:1431 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" + +#: builtins.c:1502 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" + +#: builtins.c:1533 +#, fuzzy +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Agarda a terminación do traballo e devolve o estado de saída.\n" +" \n" +" Espera ao proceso especificado e reporta o seu estado de saída. Se\n" +" non se fornece un PID, agarda a todos os procesos fillo activos,\n" +" e o código de devolución é cero. PID debe ser un ID de proceso.\n" +" \n" +" Estado de Saída:\n" +" Devolve o estado de ID; falla se ID non é válido ou se se fornece unha\n" +" opción non válida." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa ordes por cada membro nunha lista.\n" +" \n" +" O ciclo `for' executa unha secuencia de ordes para cada membro nunha\n" +" lista de elementos. Se `in PALABRAS ...;' non está presente,\n" +" entón asúmese `in \"$@\"'. Para cada elemento en PALABRAS,\n" +" defínese NOME como ese elemento, e execútanse as ÓRDENES.\n" +" \n" +" Estado de Saída:\n" +" Devuelve o estado da última orden executada." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Aritmética para un ciclo.\n" +" \n" +" Equivalente a\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tORDES\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, e EXP3 son expresións aritméticas. Se se omite\n" +" calquera expresión, compórtase como se se evaluara a 1.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado da última orde executada." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa ordes en base á coincidencia de patróns.\n" +" \n" +" Executa ÓRDENES selectivamente baseado en coincidencias da PALABRA\n" +" co PATRÓN. Emprégase `|' para separar patróns múltiples.\n" +" \n" +" Estado de Saída:\n" +" Devolve o estado da última orde executada." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ejecuta ordes mentres unha proba teña éxito.\n" +" \n" +" Expande e executa ORDES mentres a orde final nas ÓRDENES\n" +" `while' teña un estado de saída de cero.\n" +" \n" +" Estado de Saída:\n" +" Devolve o estado da última orde executada." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa ordes mentres unha proba non teña éxito.\n" +" \n" +" Expande e executa ORDES mentres a orde final nas ORDES\n" +" `until' teña un estado de saída que non sexa cero.\n" +" \n" +" Estado de Saída:\n" +" Devolve o estado da última orde executada." + +#: builtins.c:1671 +#, fuzzy +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Crea un coproceso chamado NOME.\n" +" \n" +" Executa a ORDE asíncronamente, coa saída estándar e a entrada\n" +" estándar da orde contectada a través dunha tubería aos descritores\n" +" de ficheiro asignados aos índices 0 e 1 dunha variábel de matriz NOME\n" +" no shell en execución. O nome por omisión é \"COPROC\".\n" +" \n" +" Estado de Saída:\n" +" Devolve o estado de saída da ORDE." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Agrupa ordes como unha unidade.\n" +" \n" +" Executa un conxunto de ordes nun grupo. Esta é unha forma de\n" +" redirixir un conxunto completo de ordes.\n" +" \n" +" Estado de Saída:\n" +" Devolve o estado da última orde executada." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Avalí unha expresión aritmética.\n" +" \n" +" Avalíase a EXPRESIÓN de acordo ás regras de evaluación\n" +" aritmética. Equivalente a \"let EXPRESIÓN\".\n" +" \n" +" Estado de Saída:\n" +" Devolve 1 se a EXPRESIÓN avalía a 0; devovle 0 de outra maneira." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" + +#: builtins.c:1821 +#, fuzzy +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Engade un directorio ao tope da rima de directorios, ou rota\n" +" a pila, facendo que o novo tope da rima sexa o\n" +" directorio de trabajo actual. Sen argumentos, intercambia\n" +" os dous directorios do tope.\n" +" \n" +" Argumentos:\n" +" +N\tRota a pila para que o N-ésimo directorio (contando\n" +" \tda izquierda da lista mostrada por `dirs',\n" +" \tcomezando desde cero) estea no tope.\n" +" -N\tRota a pila para que o N-ésimo directorio (contando\n" +" \tda derecha da lista mostrada por `dirs',\n" +" \tcomezando desde cero) estea no tope.\n" +" \n" +" dir\tagrega DIR á rima de directorios no tope,\n" +" \tfacéndoo o novo directorio de traballo actual.\n" +" \n" +" A orde interna `dirs' mostra a rima de directorios." + +#: builtins.c:1855 +#, fuzzy +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Borra entradas da pila de directorios. Sen argumentos, borra\n" +" directorio do tope da pila, e cambia ao novo directorio tope.\n" +" \n" +" Opcións:\n" +" -n\tsuprime o cambio normal de directorio cando se borra\n" +" \tdirectorios da pila, así só se manipula a pila.\n" +" \n" +" Argumentos:\n" +" +N\tBorra a N-ésima entrada contando da esquerda da\n" +" \tlista mostrada por `dirs', comenzando desde cero.\n" +" \tPor exemplo: `popd +0' borra o primeiro directorio, `popd +1'\n" +" \to segundo.\n" +" \n" +" -N\tBorra a N-ésima entrada contando da derecha da\n" +" \tlista mostrada por `dirs', comezando desde cero.\n" +" \tPor exemplo: `popd -0' borra o último directorio, `popd -1'\n" +" \to penúltimo.\n" +" \n" +" A orde interna `dirs' mostra a pila de directorios." + +#: builtins.c:1885 +#, fuzzy +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Mostra a lista de directorios actualmente gravados. Os directorios\n" +" gárdanse na lista coa orde `pushd'; pode ir saíndo da\n" +" lista coa orde `popd'.\n" +" \n" +" Opcións:\n" +" -c\tlimpa a pila de directorios, eliminando todos os elementos\n" +" -l\tnon mostra as versións con prefixo de til dos directorios\n" +" \trelativos ao seu directorio inicial\n" +" -p\tmostra a pila de directorios cunha entrada por liña\n" +" -v\tmuestra a pila de directorios cunha entrada por liña coa\n" +" \tsúa posición na pila como prefixo\n" +" \n" +" Argumentos:\n" +" +N\tMostra a N-ésima entrada contando desde a esquerda da\n" +" \tlista mostrada por dirs cando se chama sen opcións,\n" +" \tcomezando desde cero.\n" +" \n" +" -N\tMostra a N-ésima entrada contando desde a dereita da\n" +"\tlista mostrada por dirs cando se chama sen opcións,\n" +"\tcomezando desde cero." + +#: builtins.c:1916 +#, fuzzy +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Activa e desactiva opcións de shell.\n" +" \n" +" Cambia a configuración de cada opción de shell NOME_OPCIÓN. Sen\n" +" algunha opción como argumento, mostra todas as opcións de shell cunha\n" +" indicación se está activa ou non.\n" +" \n" +" Opcións:\n" +" -o\trestrinxe NOME_OPCIÓN a aqueles definidos con `set -o'\n" +" -p\tmostra cada opción de shell cun indicador do seu estado\n" +" -q\tsuprime a saída\n" +" -s\tactiva (estabelece) cada NOME_OPCIÓN\n" +" -u\tdesactiva (borra) cada NOME_OPCIÓN\n" +" \n" +" Estado de Saída:\n" +" Devolve con éxito se se activa NOME_OPCIÓN; falla se se fornece\n" +" unha opción non válida ou NOME_OPCIÓN está desactivado." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Mostra os posíbeis completados dependendo das opcións.\n" +" \n" +" Serve para usarse desde unha función de shell que xere completados\n" +" posíbeis. Se se fornece o argumento opcional PALABRA, xéranse\n" +" as coincidencias contra PALABRA.\n" +" \n" +" Estado de Saída:\n" +" Devolve con éxito a menos que se forneza unha opción non válida o\n" +" se produza un erro." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Lee liñas dun fichero nunha variábel de matriz.\n" +" \n" +" Un sinónimo de `mapfile'." + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Devolve o contexto da chamada a subrutina actual.\n" +#~ " \n" +#~ " Sen EXPR, devovle " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: o proceso %5ld (%s) en the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Sinal descoñecido #" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licenza GPLv2+: GPL de GNU versión 2 ou posterior \n" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" diff --git a/bash-5.1/po/hr.gmo b/bash-5.1/po/hr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..513672e76df11008fd80929fade8e2cd3887fc95 GIT binary patch literal 157581 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, 2012, 2013. +# Božidar Putanec , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2020-11-22 13:25-0800\n" +"Last-Translator: Božidar Putanec \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 2.0\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "nevaljani indeks polja" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: uklanja se atribut nameref" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: nije moguće pretvoriti indeksirano u asocijativno polje" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: nevaljani kljuÄ asocijativnoga polja" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: indeks mora biti numeriÄki" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: mora se koristiti indeks pri dodijeli asocijativnoga polja" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nije moguće napraviti: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: nije moguće pronaći keymap za naredbu" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: prvi znak, koji nije bjelina, nije „\"“" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "nema zakljuÄnoga „%c“ u %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: nema razdjelnika dvotoÄke" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "„%s“: nije moguće razvezati" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" +"brace expansion: nije moguće dodijeliti memoriju za %s\n" +"(primjer ekspanzije unutar vitiÄastih zagrada: echo a{d,c}e -> ade, ace)" + +# Brace expansion is a mechanism by which arbitrary strings may be generated +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" +"brace expansion: nije uspjelo dodijeliti memoriju za %u elemenata\n" +"(primjer ekspanzije unutar vitiÄastih zagrada: echo a{d,c}e -> ade, ace)" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" +"brace expansion: nije uspjelo dodijeliti memoriju za „%s“\n" +"(primjer ekspanzije unutar vitiÄastih zagrada: echo a{d,c}e -> ade, ace)" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "„%s“: nevaljano ime aliasa" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "redigiranje retka nije omogućeno" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%s“: nevaljano ime za keymap" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nije moguće proÄitati: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "„%s“: nepoznato ime funkcije" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s nije vezano s nijednom tipkom.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s se može pozvati pomoću " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nije moguće razvezati" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "brojaÄ ponavljanja" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "ima znaÄenje samo u „for“, „while“ ili „until“ petljama" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Vrati kontekst trenutnog poziva potprogramu.\n" +"\n" +" Bez IZRAZA, vrati „$line $filename“. Ako je dȃn IZRAZ, vrati\n" +" „$line $subroutine $filename“; ova dodatna informacija može poslužiti\n" +" za „stack trace“.\n" +"\n" +" Vrijednost IZRAZA pokazuje koliko se treba vratiti unatrag od\n" +" trenutne pozicije, s time da je pozicija 0 trenutna pozicija.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako ljuska ne izvrÅ¡ava ljuskinu funkciju\n" +" ili je IZRAZ nevaljani." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME varijabla nije definirana" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "previÅ¡e argumenata" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "null direktorij" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD nije postavljeni" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "redak %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "upozorenje: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: uporaba: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: opcija zahtijeva argument" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: zahtijeva se numeriÄki argument" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: nije pronaÄ‘eno" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: nevaljana opcija" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nevaljano ime opcije" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "„%s“: nije valjani identifikator" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "nevaljani oktalni broj" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "nevaljani heksadecimalni broj" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "nevaljani broj" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: nevaljana specifikacija signala" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "„%s“: nije PID ili valjani pokazatelj posla" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: varijabla samo za Äitanje" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s je izvan raspona" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s je izvan raspona" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: nema takvoga posla" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: nema kontrole nad poslovima u ovoj ljuski" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "nema kontrole nad poslovima u ovoj ljuski" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: ograniÄeni naÄin" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "ograniÄeni naÄin" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: nije ugraÄ‘ena bash naredba" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "greÅ¡ka pri pisanja: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "greÅ¡ka pri postavljanju svojstava terminala: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "greÅ¡ka pri preuzimanju svojstava terminala: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: nije moguće pronaći trenutni direktorij: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: viÅ¡eznaÄni pokazatelj posla" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "u ovoj inaÄici pomoć nije ugraÄ‘ena" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nije moguće poniÅ¡titi: %s je moguće samo Äitati" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: nije moguće poniÅ¡titi" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nevaljano ime za akciju" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: dovrÅ¡avanje nije specificirano" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "upozorenje: opcija -F možda neće raditi prema oÄekivanju" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "upozorenje: opcija -C možda neće raditi prema oÄekivanju" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "trenutno se ne izvrÅ¡ava funkcija kompletiranja" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "može se koristiti samo u funkciji" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: referentna varijabla ne može biti polje" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: varijabla nameref ukazuje na samu sebe, a to nije dopuÅ¡teno" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: kružna referencija na ime" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "„%s“: nevaljano ime varijable za referenciju na ime" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "„-f“ se ne može koristiti za definiranje funkcije" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkcija samo za Äitanje" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: dodjeljivanje citiranoga složenog polja je zastarjelo" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: nije moguće uniÅ¡titi varijable polja na ovaj naÄin" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: nije moguće pretvoriti asocijativno u indeksirano polje" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dinamiÄko uÄitavanje nije dostupno" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "nije moguće otvoriti dijeljeni objekt %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "nije moguće pronaći %s u dijeljenom objektu %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: nije dinamiÄki uÄitan" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "funkcija uÄitavanja za %s zavrÅ¡ila je s pogreÅ¡kom (%d): nije uÄitano" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: nije dinamiÄki uÄitan" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nije moguće izbrisati: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: to je direktorij" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: nije obiÄna datoteka" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: datoteka je prevelika" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: nije moguće izvrÅ¡iti binarnu datoteku" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nije moguće izvrÅ¡iti: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "odjava\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "nije prijavna ljuska: odjavite se s „exit“" + +# stopped > pauzirano ili zaustavljeno +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Ima zaustavljenih poslova.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Ima pokrenutih poslova.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "naredba nije pronaÄ‘ena" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "prikaz povijesti naredbi" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: nije moguće otvoriti privremenu datoteku: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "trenutno" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "posao %d je pokrenut bez kontrole nad njim" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: nedopuÅ¡tena opcija -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opcija zahtijeva argument -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hash-tablica je onemogućena" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: hash-tablica je prazna\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "pogodci\tnaredba\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Naredba koja odgovara kljuÄnoj rijeÄi „" +msgstr[1] "Naredbe koje odgovaraju kljuÄnim rijeÄima „" +msgstr[2] "Naredbi koje odgovaraju kljuÄnim rijeÄima „" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"nisu pronaÄ‘ene teme pomoći za „%s“. PokuÅ¡ajte s „help help“, „man -k %s“ ili " +"„info %s“." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nije moguće otvoriti: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Ove bash naredbe su interno definirane. UpiÅ¡ite „help“ za prikaz popisa.\n" +"UpiÅ¡ite „help ime“ za viÅ¡e podataka o funkciji „ime“.\n" +"Koristite „info bash“ za viÅ¡e općenitih podataka o ljusci.\n" +"Koristite „man -k“ ili „info“ za viÅ¡e podataka o naredbama izvan ovog " +"popisa.\n" +"\n" +"Zvjezdica (*) pokraj imena oznaÄava onemogućenu naredbu.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "smije se rabiti samo jedna od opcija -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "mjesto u povijesti naredbi" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: nevaljani vremenski žig" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: proÅ¡irenje povijesti nije uspjelo" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib nije uspio" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "nisu dopuÅ¡tene druge opcije uz „-x“" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumenti moraju biti ID-ovi procesa ili posla" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Nepoznata greÅ¡ka" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "oÄekivao se izraz" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: nije indeksirano polje" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: nevaljana specifikacija deskriptora datoteke" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: nevaljani deskriptor datoteke: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: nevaljani koliÄina redaka" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: nevaljani poÄetak polja" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: nevaljana koliÄina od callback" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "prazno ime varijable polja" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "potrebna podrÅ¡ka varijable polja nije podržana u ovoj ljusci" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "„%s“: nedostaje znak za format" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "„%c“: nevaljana specifikacija za format vremena" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%c“: nevaljani znak za format" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "upozorenje: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "greÅ¡ka pri analizi: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "nedostaje heksadecimalna znamenka za \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "nedostaje unicode znamenka za \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "nema drugog direktorija" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: nevaljani argument" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "snop direktorija je prazan" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "indeks snopa direktorija" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Pokaže popis trenutno zapamćenih direktorija. Direktoriji se unose\n" +" na popis pomoću naredbe „pushd“, a s naredbom „popd“ se uklanjaju.\n" +"\n" +" Opcije:\n" +" -c poÄisti snop direktorija brisanjem svih elemenata\n" +" -l ispiÅ¡e apsolutne staze direktorija u odnosu na osobni\n" +" direktorij (ne skraćuje staze upotrebom tilde)\n" +" -p ispiÅ¡e sadržaj snopa po jedan direktorij po retku\n" +" -v kao „-p“, ali s prefiksom koji pokazuje\n" +" poziciju direktorija snopu\n" +"\n" +" Argumenti:\n" +" +N Pokaže N-ti direktorij iz snopa, brojeći od od nule s\n" +" lijeve strane popisa kÈd se „dirs“ pokrene bez opcija.\n" +" -N Pokaže N-ti direktorij iz snopa, brojeći od nule s\n" +" desne strane popisa kÈd se „dirs“ pokrene bez opcija." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Doda direktorij na vrh snopa direktorija ili zarotira snop tako da\n" +" uÄini novi vrh snopa trenutnim radnim direktorijem. Bez argumenata\n" +" razmijeni pozicije dva direktorija na vrhu snopa.\n" +"\n" +" Opcije:\n" +" -n izostavi uobiÄajenu promjenu direktorija kÈd dodaje\n" +" direktorije u snop, odnosno samo manipulira sa snopom\n" +"\n" +" Argumenti:\n" +" +N Zarotira snop tako, da N-ti direktorij u snopu (brojeći od nule " +"s\n" +" lijeve strane popisa prikazanoga s „dirs“) postane novi vrh " +"snopa.\n" +" -N Zarotira snop tako, da N-ti direktorij u snopu (brojeći od nule " +"s\n" +" desne strane popisa prikazanoga s „dirs“) postane novi vrh " +"snopa.\n" +" DIREKTORIJ Doda DIREKTORIJ na vrh snopa direktorija i\n" +" uÄini ga novim trenutnim radnim direktorijem.\n" +"\n" +" Naredba „dirs“ prikaže trenutni sadržaj snopa direktorija." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Ukloni direktorije iz snopa direktorija. Bez argumenata, ukloni\n" +" direktorij na vrhu snopa i premjesti se u novi najviÅ¡i direktorij.\n" +"\n" +" Opcije:\n" +" -n izostavi uobiÄajenu promjenu direktorija kÈd uklanja\n" +" direktorije iz snopa, odnosno samo manipulira sa snopom\n" +"\n" +" Argumenti:\n" +" +N Ukloni da N-ti direktorij iz snopa brojeći od nule s lijeve\n" +" strane popisa prikazanoga s „dirs“. Na primjer: „popd +0“\n" +" ukloni prvi, a „popd +1“ ukloni drugi direktorij.\n" +" +N Ukloni da N-ti direktorij iz snopa brojeći od nule s desne\n" +" strane popisa prikazanoga s „dirs“. Na primjer.: „popd -0“\n" +" ukloni zadnji, a „popd -1“ ukloni predzadnji direktorij.\n" +"\n" +" Naredba „dirs“ prikaže trenutni sadržaj snopa direktorija." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: nevaljana specifikacija za istek vremena" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "greÅ¡ka pri Äitanju: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "„return“ je mogući samo iz funkcije ili iz pokrenute skripte" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "nije moguće istovremeno poniÅ¡titi funkciju i varijablu" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: nije varijabla polja" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: nije funkcija" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: nije moguće eksportirati" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "brojaÄ pomaka" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "nije moguće istovremeno postaviti i poniÅ¡titi opcije ljuske" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: nevaljano ime za opciju ljuske" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "zahtijeva se ime datoteke kao argument" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: datoteka nije pronaÄ‘ena" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "obustava nije moguća" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "nije moguće obustaviti prijavnu ljusku" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s je alias za „%s“\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s je kljuÄna rijeÄ ljuske\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s je funkcija\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s je specijalna ugraÄ‘ena funkcija ljuske\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s je ugraÄ‘ena funkcija ljuske\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s je %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "za %s izraÄunata hash vrijednost (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: nevaljani argument za ograniÄenje" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "„%c“: loÅ¡a naredba" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: nije moguće dobiti ograniÄenje: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "ograniÄenje" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: nije moguće promijeniti ograniÄenje: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "oktalni broj" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%c“: nevaljani operator u simboliÄkom naÄinu" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%c“: nevaljani znak u simboliÄkom naÄinu" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " redak " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "posljednja naredba: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Prekida se..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "informacije: " + +#: error.c:462 +msgid "unknown command error" +msgstr "nepoznata greÅ¡ka naredbe" + +#: error.c:463 +msgid "bad command type" +msgstr "loÅ¡a vrsta naredbe" + +#: error.c:464 +msgid "bad connector" +msgstr "loÅ¡ konektor" + +#: error.c:465 +msgid "bad jump" +msgstr "loÅ¡i skok" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: nepovezana varijabla" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\avrijeme Äekanja na ulaz je isteklo: automatska-odjava\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "nije moguće preusmjeriti standardni ulaz iz /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: „%c“: nevaljani znak za format" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc(): coproc [%d:%s] joÅ¡ uvijek postoji" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "greÅ¡ka cijevi" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: prekoraÄena je dopuÅ¡tena razina eval gniježđenja (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: prekoraÄena je dopuÅ¡tena razina source gniježđenja (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: prekoraÄena je dopuÅ¡tena razina gniježđenja funkcije (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: ograniÄeni naÄin: znak „/“ nije dopuÅ¡ten u imenima naredba" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: naredba nije pronaÄ‘ena" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: loÅ¡i interpreter" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: binarnu datoteku %s nije moguće pokrenuti/izvrÅ¡iti" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "„%s“ je specijalna funkcija ugraÄ‘ena u ljusku" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "nije moguće kopirati deskriptor datoteke %d u deskriptor datoteke %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "izraz ima preveliki broj rekurzija" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "snop rekurzija je prazan" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "sintaktiÄka greÅ¡ka u izrazu" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "vrijednost se može dodijeliti samo varijabli" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "sintaktiÄka greÅ¡ka u zadavanju varijable" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "dijeljenje s 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "**interna greÅ¡ka** : loÅ¡i token u izrazu za dodjelu" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "znak „:“ je nužan u uvjetnom izrazu" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "eksponent je manji od 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "nakon pre-increment ili pre-decrement oÄekuje se identifikator" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "nema „)“" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "sintaktiÄka greÅ¡ka: oÄekivao se operand" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "sintaktiÄka greÅ¡ka: nevaljani aritmetiÄki operator" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (simbol greÅ¡ke je „%s“)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "nevaljana aritmetiÄka baza" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: nevaljani koliÄina redaka" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "vrijednost baze je prevelika" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: greÅ¡ka u izrazu\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd(): nije moguće pristupiti nadreÄ‘enim direktorijima" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "ne može se onemogućiti nodelay naÄin za deskriptor datoteke %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "nije moguće dodijeliti novi datoteÄni deskriptor za bash ulaz iz fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input(): meÄ‘uspremnik već postoji za novi fd %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline(): pgrp pipe (procesna grupa cijevi)" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "potproces PID %d javlja se u pokrenutom poslu %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "uklanja se zaustavljeni posao %d s grupom procesa %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process(): PID %5ld (%s) oznaÄen kao joÅ¡ uvijek aktivan" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid(): %ld: PID ne postoji" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Gotovo" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Zaustavljeno" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Zaustavljeno(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Pokrenuto" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Gotovo(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "ZavrÅ¡i %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Nepoznati status" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(**krah**: stanje (dump) memorije je zapisano!) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "postavljanje procesne grupe %2$ld od potomka %1$ld" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: PID %ld nije potomak ove ljuske" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: nema zapisa o procesu %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: posao %d je zaustavljen" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: nema takvoga posla" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: posao je prekinut" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: posao %d je već u pozadini" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld(): omogući WNOHANG da se izbjegne neodreÄ‘eno blokiranje" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: redak %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (**krah**: stanje (dump) memorije je zapisano!)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(radni direktorij je sada: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: neuspjeÅ¡ni getpgrp()" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: nema kontrole nad pozadinskim poslovima" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid()" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "nije moguće postaviti procesnu grupu (%d) terminala" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "nema kontrole nad poslovima u ovoj ljusci" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc(): neuspjeÅ¡ni kontrolni test: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc(): %s:%d: loÅ¡e provedena proba\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "nepoznato" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc(): prepisani je blok na popisu slobodne memorije" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free(): pozvan s argumentom za već slobodni memorijski blok" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free(): pozvan s argumentom za ne dodijeljeni memorijski blok" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free(): otkriveni je podljev, mh_nbytes ispod granica" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free(): otkriveni je podljev, mh_nbytes ispod granica" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free(): veliÄine segmenta od poÄetka i kraja su razliÄite" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc(): pozvan s argumentom za ne dodijeljeni memorijski blok" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc(): otkriveni je podljev, mh_nbytes ispod granica" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc(): otkriveni je podljev, mh_nbytes ispod granica" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc(): veliÄine segmenta od poÄetka i kraja su razliÄite" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc(): rezervacijska tablica je popunjena s FIND_ALLOC??\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc(): %p je već rezervirani u tablici??\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free(): %p je već slobodan u tablici??\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "nevaljana baza" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: nepoznato raÄunalo" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: nevaljani servis" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: loÅ¡a specifikacija za mrežnu stazu" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "mrežne operacije nisu podržane" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale(): LC_ALL: nije moguće promijeniti jeziÄno podruÄje (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale(): LC_ALL: nije moguće promijeniti jeziÄno podruÄje (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale(): %s: nije moguće promijeniti jeziÄno podruÄje (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale(): %s: nije moguće promijeniti jeziÄno podruÄje (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Imate poÅ¡tu u $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Imate novu poÅ¡tu u $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "PoÅ¡ta u %s je već proÄitana\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "sintaktiÄka greÅ¡ka: zahtijeva se aritmetiÄki izraz" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "sintaktiÄka greÅ¡ka: neoÄekivani „;“ znak" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "sintaktiÄka greÅ¡ka: „((%s))“" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document(): loÅ¡a vrsta instrukcije %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "redak %d od here-document ima za razdjelnik EOF (oÄekuje se „%s“)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"make_redirection(): instrukcija za preusmjeravanje „%d“ je izvan raspona" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc(): shell_input_line_size (%zu) je veća od SIZE_MAX (%lu): " +"skraćuje se" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "maksimalni broj za here-document je prekoraÄeni" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "neoÄekivani EOF pri traženju odgovarajućeg „%c“" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "neoÄekivani EOF pri traženju „]]“" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "sintaktiÄka greÅ¡ka u uvjetnom izrazu: neoÄekivani token „%s“" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "sintaktiÄka greÅ¡ka u uvjetnom izrazu" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "neoÄekivani token „%s“ umjesto oÄekivane „)“" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "oÄekivana je „)“" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "neoÄekivani argument „%s“ uvjetnom unarnom operatoru" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "neoÄekivani argument za uvjetni unarni operator" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "neoÄekivani token „%s“; oÄekivan je uvjetni binarni operator" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "oÄekivan je uvjetni binarni operator" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "neoÄekivani argument „%s“ za uvjetni binarni operator" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "neoÄekivani argument za uvjetni binarni operator" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "neoÄekivani token „%c“ u uvjetnoj naredbi" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "neoÄekivani token „%s“ u uvjetnoj naredbi" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "neoÄekivani token %d u uvjetnoj naredbi" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "sintaktiÄka greÅ¡ka blizu neoÄekivanog tokena „%s“" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "sintaktiÄka greÅ¡ka blizu „%s“" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "sintaktiÄka greÅ¡ka: neoÄekivani kraj datoteke" + +#: parse.y:6365 +msgid "syntax error" +msgstr "sintaktiÄka greÅ¡ka" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Koristite \"%s\" da napustite ljusku.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "neoÄekivani EOF pri traženju odgovarajuće „)“" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion(): funkcija „%s“ nije pronaÄ‘ena" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion(): %s: moguća je beskonaÄna petlja" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert(): %s: prazni COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command(): loÅ¡i konektor „%d“" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set(): %d: nevaljani deskriptor datoteke" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set(): prazni pokazivaÄ na datoteku" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf(): „%c“: nevaljani znak za format" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "deskriptor datoteke je izvan raspona" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: viÅ¡eznaÄno preusmjeravanje" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: nije moguće pisati preko postojeće datoteke" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: ograniÄeno: nije moguće preusmjeriti izlaz" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "nije moguće napraviti privremenu datoteku za here-document: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: nije moguće dodijeliti deskriptor datoteke varijabli" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port nije podržan bez umrežavanja" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "greÅ¡ka preusmjeravanja: nije moguće kopirati deskriptor datoteke" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "nije moguće pronaći /tmp; napravite taj direktorij!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp mora biti valjano ime direktorija" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "u interaktivnoj ljusci pretty-printing se ignorira" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: nevaljana opcija" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "nije moguće postaviti UID na %d: efektivni UID je %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "nije moguće postaviti GID na %d: efektivni GID je %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "nije moguće pokrenuti debugger; debugiranje je onemogućeno" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: to je direktorij" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Nemam ime!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, inaÄica %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Uporaba: %s [GNU dugaÄka opcija] [opcija] ...\n" +" %s [GNU dugaÄka opcija] [opcija] skripta ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU dugaÄke opcije:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Opcije ljuske:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD ili -c NAREDBA ili -O SHOPT-OPCIJA (samo za pokretanje)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ili -o opcija\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"„%s -c \"help set\"“ pokaže vam dodatne informacije o opcijama ljuske.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"„%s -c help set“ pokaže vam viÅ¡e informacija o ugraÄ‘enim funkcijama " +"ljuske.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Koristite naredbu „bashbug“ za prijavljivanje greÅ¡aka.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "bash Web stranica: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Općenita pomoć za koriÅ¡tenje GNU softvera: \n" +"Prijavite primjedbe i greÅ¡ke u prijevoda na lokalizacija@linux.hr/\n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask(): %d: nevaljana operacija" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Lažni signal" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Poklopi" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Prekini" + +#: siglist.c:58 +msgid "Quit" +msgstr "ZavrÅ¡i" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "NedopuÅ¡tena instrukcija" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT trag/zamka instrukcija (Trace/Breakpoint trap)" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ABORT instrukcija" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT instrukcija" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Iznimka (broja) s pomiÄnim zarezom" + +#: siglist.c:86 +msgid "Killed" +msgstr "Ubijen" + +#: siglist.c:90 +msgid "Bus error" +msgstr "GreÅ¡ka sabirnice" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Segmentacijska greÅ¡ka" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "LoÅ¡i sustavski poziv" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Prekinuta cijev" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Budilica" + +#: siglist.c:110 +msgid "Terminated" +msgstr "ZavrÅ¡eno" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Hitno U/I stanje" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Zaustavljeno (signalom)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Nastavljanje" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Potomak-proces ubijen ili zaustavljen" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Zaustavljen (tty ulaz)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Zaustavljen (tty izlaz)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "U/I je spreman" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "OgraniÄenje procesora" + +#: siglist.c:154 +msgid "File limit" +msgstr "OgraniÄenje datoteke" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarm (virtualni)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarm (profil)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Prozor promijenjen" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Zapis zakljuÄan" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "KorisniÄki signal 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "KorisniÄki signal 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT ulazni podaci Äekaju" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "nestanak struje je neizbježan" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "ruÅ¡enje sustava je neizbježno" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "preseli proces na drugi procesor" + +#: siglist.c:198 +msgid "programming error" +msgstr "greÅ¡ka programiranja" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT nadzor dopuÅ¡ten" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT nadzor oduzet" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT sekvencija zvukova je zavrÅ¡ena" + +#: siglist.c:214 +msgid "Information request" +msgstr "Zahtjev za informacijom" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Nepoznati signal #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "loÅ¡a supstitucija: nema zakljuÄnoga „%s“ u %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: nije moguće dodijeliti popis elementu polja" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "nije moguće napraviti cijev za zamjenu procesa" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "nije moguće napraviti potomka za zamjenu procesa" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "nije moguće otvoriti imenovanu cijev %s za Äitanje" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "nije moguće otvoriti imenovanu cijev %s za pisanje" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "nije moguće kopirati imenovanu cijev %s kao deskriptor datoteke %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "nevaljana supstitucija: ignorirani NULL bajt na ulazu" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "nije moguće napraviti cijev za zamjenu naredbi" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "nije moguće napraviti potomka za zamjenu naredbi" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" +"command_substitute(): nije moguće kopirati cijev kao deskriptor datoteke 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: nevaljano ime varijable za naziv referencije" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: nevaljana indirektna ekspanzija" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "„%s“: nevaljano ime varijable" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parametar nije postavljen" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: prazni parametar ili nije postavljen" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: rezultat od izraza dijela stringa < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: loÅ¡a supstitucija" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: nije moguće dodijeliti na ovaj naÄin" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"buduće inaÄice ljuske će prisiliti procjenu kao aritmetiÄku supstituciju" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "loÅ¡a supstitucija: nema zakljuÄnoga znaka „`“ u %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "nema podudaranja: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "oÄekuje se argument" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: oÄekuje se cijelo brojni izraz" + +#: test.c:265 +msgid "`)' expected" +msgstr "oÄekivana je „)“" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "oÄekuje se „)“, naÄ‘en %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: oÄekivan je binarni operator" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: oÄekivan je unarni operator" + +#: test.c:881 +msgid "missing `]'" +msgstr "nedostaje „]“" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "sintaktiÄka greÅ¡ka: neoÄekivani „;“ znak" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "nevaljani broj za signal" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "trap handler: prekoraÄena je dopuÅ¡tena razina gniježđenja (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps(): loÅ¡a vrijednost u trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: signalom manipulira SIG_DFL, opet Å¡alje %d (%s) na samoga " +"sebe" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler(): loÅ¡i signal %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "greÅ¡ka pri importiranju definicije funkcije za „%s“" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "razina ljuske (%d) je previsoka, vraća se na 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable(): u trenutnom podruÄju nema konteksta funkcije" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: varijabli se ne može dodijeliti vrijednost" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: nazivu referencije se pripisuje cijeli broj" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables(): u trenutnom podruÄju nema konteksta funkcije" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "*** %s ima prazni exportstr" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "*** nevaljani znak %d u exportstr za %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "*** nema „=“ u exportstr za %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context(): vrh od „shell_variables“ nije funkcijski kontekst" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context(): nije „global_variables“ kontekst" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope(): vrh od „shell_variables“ nije privremeni kontekst okoline" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: nije moguće otvoriti kao DATOTEKU" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: nevaljana vrijednost za praćenje deskriptora datoteke" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s vrijednost za kompatibilnost je izvan raspona" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licencija:\n" +"GPLv3+: GNU GPL inaÄica 3 ili novija \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, inaÄica %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Ovo je slobodan softver: slobodno ga mijenjajte i dijelite." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "NEMA JAMSTVA do granica dopuÅ¡tenih zakonom." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: nije moguće dodijeliti %lu bajtova (dodijeljeno je %lu bajtova)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: nije moguće dodijeliti %lu bajtova" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "" +"%s: %s:%d: nije moguće dodijeliti %lu bajtova (dodijeljeno je %lu bajtova)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: nije moguće dodijeliti %lu bajtova" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [IME[=VRIJEDNOST]... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] IME..." + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m TIPKOVNICA] [-f DATOTEKA] [-q IME] [-u IME]\n" +" [-r PREÄŒAC] [-x PREÄŒAC:SHELL_NAREDBA]\n" +" [PREÄŒAC:READLINE_FUNKCIJA | READLINE_NAREDBA]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [N]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [N]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [UGRAÄENA_SHELL_FUNKCIJA [ARGUMENT...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [IZRAZ]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [DIREKTORIJ]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] NAREDBA [ARGUMENT...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [IME[=VRIJEDNOST]...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] IME[=VRIJEDNOST]..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [OPCIJA] IME[=VRIJEDNOST]..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [ARGUMENT...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [ARGUMENT...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f DATOTEKA] [IME...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [ARGUMENT...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts OPCIJA_STRING IME [ARGUMENT]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a IME] [NAREDBA [ARGUMENT...]] [PREUSMJERAVANJE...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [N]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [N]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e EDITOR] [-lnr] [PRVA] [ZADNJA] ili: fc -s [UZORAK=ZAMJENA] [NAREDBA]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [JOBSPEC]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [JOBSPEC...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p IME_STAZE] [-dt] [IME...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [UZORAK ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d POZICIJA] [N]\n" +" ili: history -anrw [DATOTEKA]\n" +" ili: history -ps ARGUMENT..." + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [JOBSPEC...] ili: jobs -x NAREDBA [ARGUMENT...]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [JOBSPEC... | PID...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s SIGSPEC | -n SIGNUM | -SIGSPEC] pid | JOBSPEC\n" +" ili: kill -l [SIGSPEC]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let ARGUMENT..." + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a POLJE] [-d MEÄA] [-i TEKST] [-p PROMPT]\n" +" [-n BROJ_ZNAKOVA] [-N BROJ_ZNAKOVA] [-t SEKUNDA]\n" +" [-u FD] [IME...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [N]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o IME_OPCIJE] [--] [ARGUMENT...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [IME...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [IME[=VRIJEDNOST]...] ili: export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [IME[=VRIJEDNOST]...] ili: readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [N]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source DATOTEKA [ARGUMENTI]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". DATOTEKA [ARGUMENTI]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [IZRAZ]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ ARGUMENT... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[ARGUMENT] SIGNAL_SPEC...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] IME..." + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [LIMIT]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [MODE]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [ID...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [PID...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for IME [in RIJEÄŒIMA...]; do NAREDBE; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( IZRAZ_1; IZRAZ_2; IZRAZ_3 )); do NAREDBE; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select IME [in RIJEÄŒIMA...;]; do NAREDBE; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] CJEVOVOD" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case RIJEÄŒ in [UZORAK [| UZORAK]...) NAREDBE;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if NAREDBE; then NAREDBE; [elif NAREDBE; then NAREDBE;]... [else NAREDBE;]\n" +" fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while NAREDBE; do NAREDBE; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until NAREDBE; do NAREDBE; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [IME] NAREDBA [PREUSMJERAVANJA]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function IME {NAREDBE;} ili: IME () {NAREDBE;}" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ NAREDBE; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "JOBSPEC [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( IZRAZ ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "(( IZRAZ ))" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "varijable — imena i znaÄenje nekih varijabla ljuske" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | DIREKTORIJ]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [IME_OPCIJE...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v VARIJABLA] FORMAT [ARGUMENTI]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPCIJA] [-A AKCIJA]\n" +" [-C NAREDBA] [-F FUNCIJA] [-G GLOB_UZORAK] [-P PREFIKS]\n" +" [-S SUFIKS] [-W POPIS_RIJEÄŒI] [-X FILTAR_UZORAKA] [IME...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o OPCIJA] [-A AKCIJA] [-C NAREDBA]\n" +" [-F FUNCIJA] [-G GLOB_UZORAK] [-P PREFIKS] [-S SUFIKS]\n" +" [-W POPIS_RIJEÄŒI] [-X FILTAR_UZORAKA] [RIJEÄŒ]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o OPCIJA] [-DEI] [IME...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d MEÄA] [-n BROJ] [-O POÄŒETAK] [-s BROJ] [-t] [-u FD]\n" +" [-C FUNKCIJA] [-c TOLIKO] [POLJE]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d DELIM] [-n BROJ] [-O POÄŒETAK] [-s BROJ] [-t] [-u FD]\n" +" [-C FUNKCIJA] [-c TOLIKO] [POLJE]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definira ili prikaže aliase.\n" +"\n" +" Bez argumenata, „alias“ ispiÅ¡e popis aliasa na standardni izlaz u\n" +" iskoristivom formatu: alias IME='ZAMJENA'.\n" +" S argumentima, alias je definirani za svako IME za koje je dȃna\n" +" ZAMJENA. Ako ZAMJENA zavrÅ¡i s razmakom (bjelinom), onda pri ekspanziji\n" +" alias provjeri je li je i sljedeća rijeÄ alias.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako nije definirani alias za dȃno IME." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Ukloni svako dȃno IME iz popisa definiranih aliasa.\n" +"\n" +" S opcijom „-a“ izbriÅ¡e sve definirane aliase.\n" +"\n" +" ZavrÅ¡i s uspjehom osim ako IME nije postojeći alias." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Odredi i postavi „readline“ preÄace i varijable.\n" +"\n" +" Poveže sekvencije tipki (preÄace) na „readline“ funkciju, ili makro ili\n" +" „readline“ varijablu. Sintaksa argumenta koji nije opcija je ista kao\n" +" u ~/.inputrc, ali mora biti proslijeÄ‘eni kao pojedinaÄni argument,\n" +" na primjer: '\"\\C-x\\C-r\": re-read-init-file'.\n" +"\n" +" Opcije:\n" +" -f DATOTEKA proÄita preÄace iz ove DATOTEKE\n" +" -l izlista sve poznate funkcije\n" +" -m TIPKOVNICA koristi ovu TIPKOVNICU dok traje ova naredba;\n" +" moguće TIPKOVNICE su emacs, emacs-standard,\n" +" emacs-meta, emacs-ctlx, vi, vi-move, vi-command,\n" +" i vi-insert.\n" +" -P izlista imena funkcija i preÄaca\n" +" -p ispiÅ¡e imena funkcija i preÄaca u formatu\n" +" koji se može iskoristiti kao ulaz\n" +" -r PREÄŒAC ukloni sekvenciju tipki za ovaj preÄac\n" +" -q FUNKCIJA pokaže tipke koje pozivaju ovu FUNKCIJU\n" +" -S pokaže sekvencije tipki poje pozivaju makroe\n" +" s njihovim vrijednostima\n" +" -s ispiÅ¡e sekvencije tipki poje pozivaju makroe s\n" +" njihovim vrijednostima u formatu koji se može\n" +" iskoristiti kao ulaz\n" +" -u FUNKCIJA poniÅ¡ti sve preÄace vezane na ovu FUNKCIJU\n" +" -V izlista imena varijabli s njihovim vrijednostima\n" +" -v ispiÅ¡e imena varijabli s njihovim vrijednostima\n" +" u formatu koji se može iskoristiti kao ulaz\n" +" -x PREÄŒAC:SHELL_NAREDBA uÄini da se izvrÅ¡i ova SHELL_NAREDBA kÈd god\n" +" se unese taj PREÄŒAC (sekvencija tipki)\n" +" -X ispiÅ¡e preÄace (sekvencije tipki) vezane s „-x“ i\n" +" njima pridružene naredbe u formatu koji se može\n" +" iskoristiti kao ulaz\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna neprepoznata opcija\n" +" ili se dogodila greÅ¡ka." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Izlaz iz for, while ili until petlji.\n" +"\n" +" Ako je dȃn N, ukida se N ugnježđenih petlji.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je N manji od 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Nastavlja sljedeću iteraciju ugnježđenih for, while ili until petlji.\n" +" Ako je dȃn N, nastavlja se N-tom ugnježđenom petljom.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je N manji od 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"IzvrÅ¡i ugraÄ‘enu funkciju ljuske (shell builtins).\n" +"\n" +" IzvrÅ¡i dȃnu UGRAÄENU_SHELL_FUNKCIJU (SHELL-BUILTIN) funkciju s dȃnim\n" +" ARGUMENTIMA. To je korisno ako želite redefinirati implementaciju\n" +" ugraÄ‘ene shell funkcije kao vlastitu shell funkciju (skriptu s istim\n" +" imenom kao ugraÄ‘ena shell funkcija), a potrebna vam je funkcionalnost\n" +" te ugraÄ‘ene shell funkcije unutar vaÅ¡e vlastite skripte (shell " +"funkcije).\n" +"\n" +" ZavrÅ¡i s kÈdom UGRAÄENE_SHELL_FUNKCIJE ili s kÈdom 1 ako\n" +" UGRAÄENA_SHELL_FUNKCIJA nije ugraÄ‘ene funkcija ljuske (shell builtin)." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Vrati kontekst trenutnog poziva potprogramu.\n" +"\n" +" Bez IZRAZA, vrati „$line $filename“. Ako je dȃn IZRAZ, vrati\n" +" „$line $subroutine $filename“; ova dodatna informacija može poslužiti\n" +" za „stack trace“.\n" +"\n" +" Vrijednost IZRAZA pokazuje koliko se treba vratiti unatrag od\n" +" trenutne pozicije, s time da je pozicija 0 trenutna pozicija.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako ljuska ne izvrÅ¡ava ljuskinu funkciju\n" +" ili je IZRAZ nevaljani." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Promjeni trenutni direktorij.\n" +"\n" +" Promijeni trenutni direktorij u dȃni DIREKTORIJ. Zadano, DIREKTORIJ\n" +" je vrijednost varijable HOME.\n" +"\n" +" Varijabla CDPATH definira staze (direktorije) po kojima se\n" +" traži dȃni DIREKTORIJ.\n" +"\n" +" Nazivi direktorija (staza) u CDPATH su razdvojeni s dvotoÄkom (:);\n" +" prazni naziv za direktorij je isto kao i trenutni direktorij (.).\n" +" Ako dȃni DIREKTORIJ zapoÄinje s kosom crtom (/), onda se CDPATH\n" +" ne koristi.\n" +"\n" +" Ako se dȃni direktorij ne pronaÄ‘e, a omogućena je opcija „cdable_vars“,\n" +" tada se dȃna rijeÄ uzme kao ime varijable; ako ta varijabla sadrži\n" +" naziv, „cd“ prijeÄ‘e u direktorij s tim nazivom.\n" +"\n" +" Opcije:\n" +" -L slijedi simboliÄke veze; simboliÄke veze u DIREKTORIJu\n" +" razrijeÅ¡i nakon procesiranja „..“ instancije DIREKTORIJa;\n" +" opcija „-L“ je aktivna u zadanom (poÄetnom) stanju\n" +" -P rabi fiziÄku strukturu direktorija umjesto da slijedi\n" +" simboliÄke veze; simboliÄke veze DIREKTORIJa\n" +" razrijeÅ¡i prije procesiranja „..“ instancije DIREKTORIJa\n" +" -e ako je dȃna s opcijom „-P“, i trenutni radni direktorij nije\n" +" moguće uspjeÅ¡no odrediti nakon uspjeÅ¡ne promjene direktorija,\n" +" „cd“ zavrÅ¡i s kÈdom razliÄitim od 0.\n" +" -@ opiÅ¡e proÅ¡irene atribute povezane s datotekom kao direktorij\n" +" koji sadrži atribute datoteke (ako sustav to podržava)\n" +"\n" +" Token „..“ se procesira uklanjanjem komponente staze koja mu neposredno\n" +" prethodi unatrag do kose crte „/“ ili do poÄetka DIREKTORIJA.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 ako je direktorij promijenjen i ako je\n" +" varijabla okoline PWD uspjeÅ¡no postavljena kÈd je dȃna opcija „-P“;\n" +" u suprotnom zavrÅ¡i s kÈdom 1." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"IspiÅ¡e ime trenutnog radnog direktorija.\n" +"\n" +" Opcije:\n" +" -L ispiÅ¡e vrijednost od $PWD ako sadrži trenutni radni direktorij\n" +" -P ispiÅ¡e stvarnu fiziÄku stazu do direktorija bez simboliÄkih veza\n" +"\n" +" U zadanom stanju „pwd“ se ponaÅ¡a kao da je aktivna „-L“ opcija.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako nije dȃna nevaljana opcija\n" +" ili se trenutni radni direktorij ne može proÄitati." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "Naredba nema nikakvog efekta, ne radi niÅ¡ta; uvijek zavrÅ¡i s kÈdom 0." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "Uvijek zavrÅ¡i uspjeÅ¡no s kÈdom 0." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "Uvijek zavrÅ¡i neuspjeÅ¡no s kÈdom 1." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"IzvrÅ¡i jednostavnu naredbu ili pokaže informacije o naredbama.\n" +"\n" +" IzvrÅ¡i dȃnu NAREDBU s dȃnim ARGUMENTIMA ignorirajući pritom bilo\n" +" koju funkciju ljuske s istim imenom (naredba). Može se koristiti da\n" +" pokrenete naredbu na disku i onda kÈd postoji funkcija s istim imenom.\n" +"\n" +" Opcije:\n" +" -p rabi zadanu vrijednost za PATH kao garanciju\n" +" pronalaženja svih standardnih programa\n" +" -v ispiÅ¡e opis NAREDBE, sliÄno kao „type“ builtin\n" +" -V ispiÅ¡e opÅ¡irniji opis svake dȃne NAREDBE\n" +"\n" +" ZavrÅ¡i s izlaznim statusom NAREDBE\n" +" ili s 1 ako NAREDBA nije pronaÄ‘ena." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Postavlja vrijednosti i atribute varijablama.\n" +"\n" +" Deklarira varijable i dodjeljuje im atribute. Ako IMEna nisu dȃna,\n" +" prikaže atribute i vrijednosti svih varijabli.\n" +"\n" +" Opcije:\n" +" -f prikaže samo definirane funkcije (ne pokaže varijable)\n" +" -F prikaže samo imena funkcija bez definicija\n" +" -g kreira globalne varijable samo za upotrebu u funkciji ljuske;\n" +" inaÄe se ignoriraju\n" +" -p prikaže atribute i vrijednost za svako dȃno IME\n" +"\n" +" Atributi:\n" +" -a uÄini od dȃnih IMEna indeksirana polja (ako je to podržano)\n" +" -A uÄini od dȃnih IMEna asocijativna polja (ako je to podržano)\n" +" -i uÄini da dȃna IMEna dobiju „integer“ svojstva\n" +" -l pretvori slova dȃnih IMEna u mala slova prilikom upotrebe\n" +" -n uÄini dȃno IME referencijom na drugu varijablu s imenom\n" +" jednakim „vrijednost od varijable IME“\n" +" -r uÄini dȃna IMEna readonly\n" +" -t uÄini da dȃna IMEna dobiju „trace“ svojstva\n" +" -u pretvori slova dȃnih IMEna u velika slova prilikom upotrebe\n" +" -x oznaÄi dȃna IMEna za ekport\n" +"\n" +" „+“ umjesto „-“ iskljuÄi dȃni atribut.\n" +"\n" +" Varijable s „integer“ atributom obavljaju aritmetiÄke operacije tijekom\n" +" izvoÄ‘enja i upotrebe (pogledajte „let“ naredbu).\n" +"\n" +" Unutar funkcije „declare“ uÄini dȃna IMEna lokalnima, sliÄno kao\n" +" naredba „local“. Opcija „-g“ sprijeÄi takvo ponaÅ¡anje.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greÅ¡ka prilikom zadavanja varijabli." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Postavi vrijednosti i svojstva varijabli.\n" +"\n" +" Sinonim za „declare“. Za detalje upiÅ¡ite „help declare“." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Definira lokalne varijable.\n" +"\n" +" Kreira lokalnu varijablu IME i dodijeli joj vrijednost. OPCIJA\n" +" može biti bilo koja od opcija koju prihvaća naredba „declare“.\n" +"\n" +" Lokalne varijable mogu se koristiti samo unutar neke funkcije a\n" +" vidljive su samo funkciji u kojoj su definirane i njezinim potomcima.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako su dȃne nevaljane opcije,\n" +" dogodila se greÅ¡ka pri dodijeli ili ljuska ne izvrÅ¡i funkciju." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Dȃne argumente ispiÅ¡e na standardni izlaz.\n" +"\n" +" IspiÅ¡e dȃne argumente na standardni izlaz, meÄ‘usobno odvojene s\n" +" jednim razmakom (bjelinom) i na kraju s novim retkom.\n" +"\n" +" Opcije:\n" +" -n ne pripoji novi redak (znak novog retka)\n" +" -e interpretira sljedeće sekvencije maskirane\n" +" s obratnom kosom crtom (backslash escapes)\n" +" -E ne interpretira sekvencije maskirane\n" +" s obratnom kosom crtom (backslash escapes)\n" +"\n" +" „echo“ interpretira ove kontrolne kodove (sekvencije maskirane\n" +" s obratnom kosom crtom — backslash escapes):\n" +" \\a alert (zvuÄni signal)\n" +" \\b backspace\n" +" \\c sprijeÄi daljni izlaz\n" +" \\e znak za escape (ESC)\n" +" \\E znak za escape (ESC)\n" +" \\f nova stranica (znak za FF, form feed)\n" +" \\n novi redak (znak za LF, line feed)\n" +" \\r na poÄetak novoga retka (Enter, znak za CR, carriage return)\n" +" \\t horizontalni tabulator\n" +" \\v vertikalni tabulator\n" +" \\\\ backslash (\\)\n" +" \\0NNN znak s ASCII kÈdom NNN (oktalni, 1 do 3 oktalne znamenke)\n" +" \\xHH osmobitni znak Äija je vrijednost HH (heksadecimalna)\n" +" \\uHHHH unikodni znak Äija je vrijednost HHHH (heksadecimalna)\n" +" HHHH može biti od 1 do 4 heksadecimalne znamenke\n" +" \\UHHHHHHHH unikodni znak Äija je vrijednost HHHH (heksadecimalna)\n" +" HHHHHHHH može biti od 1 do 8 heksadecimalnih znamenki\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako se ne dogodi greÅ¡ka pri pisanju." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"IspiÅ¡e argumente na standardni izlaz.\n" +"\n" +" Prikaže ARGUMENTE na standardnom izlazu (pripoji im znak za novi " +"redak).\n" +" Opcijom „-n“ može se iskljuÄiti pripajanje znaka za novi redak.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 ako se ne dogodi greÅ¡ka pri pisanju." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Omogući ili onemogući ugraÄ‘ene opcije ljuske.\n" +"\n" +" Aktivira i deaktivira ugraÄ‘ene opcije ljuske. Deaktiviranje vam\n" +" omogućava pokrenuti naredbu na disku s istim imenom kao ugraÄ‘ena\n" +" komanda bez potrebe specificiranja kompletne staze.\n" +"\n" +" Opcije:\n" +" -a ispiÅ¡e ugraÄ‘ene naredbe i pokaže jesu ili nisu omogućene\n" +" -n onemogući IMEnovane naredbe ili izlista onemogućene naredbe\n" +" -p generira izlaz koji se može koristi za ulaz (zadano)\n" +" -s ispiÅ¡e samo imena specijalnih POSIX ugraÄ‘enih naredbi\n" +"\n" +" Opcije koje upravljaju dinamiÄko uÄitavanje:\n" +" -f uÄita ugraÄ‘enu naredbu IME iz dijeljenoga objekta DATOTEKA\n" +" -d ukloni ugraÄ‘enu naredbu uÄitanu s „-f“\n" +"\n" +" Bez opcija, omogućena su sva dȃna IMEna. Bez imena prikazane su\n" +" omogućene naredbe (ili s „-n“ onemogućene).\n" +"\n" +" Primjer: da koristite binarnu datoteku „test“ koja se nalazi na putu\n" +" pretraživanja PATH, umjesto ugraÄ‘ene (test) naredbe, upiÅ¡ite\n" +" „enable -n test“.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako IME nije ugraÄ‘ena naredba\n" +" ili se nije dogodila greÅ¡ka." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"IzvrÅ¡i argumente kao naredbu ljuske.\n" +"\n" +" Združi argumente u jedinstveni string, upotrijebi ga kao ulaz za ljusku\n" +" i izvrÅ¡i rezultirajuću naredbu.\n" +"\n" +" ZavrÅ¡i s kÈdom naredbe ili uspjeÅ¡no ako je naredba prazna." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Analiza argumenata opcija.\n" +"\n" +" Procedure ljuske koriste „getopts“ za analizu položajnih parametara\n" +" kao opcije.\n" +" \n" +" OPCIJA_STRING sadrži slova opcije koje treba prepoznati; ako iza\n" +" slova slijedi dvotoÄka, oÄekuje se da opcija ima argument koji treba\n" +" biti bjelinom odvojen od opcije.\n" +"\n" +" Svaki put kÈd se pozove, getopts će smjestiti sljedeću opciju u " +"ljuskinu\n" +" varijablu IME (ako IME ne postoji, getopts ga inicijalizira), a indeks\n" +" sljedećeg argumenta koji treba procesirati u ljuskinu varijablu OPTIND.\n" +" OPTIND je inicijaliziran na 1 pri svakom pozivanju ljuske ili ljuskine\n" +" skripte. Ako opcija zahtijeva argument, getopts smjesti taj argument u\n" +" ljuskinu varijablu OPTARG.\n" +"\n" +" getopts javlja greÅ¡ke na jedan od dva naÄina. Ako je dvotoÄka prvi znak " +"u\n" +" OPCIJA_STRING, getopts tiho prijavi greÅ¡ku (ne ispisuje poruke o " +"greÅ¡kama).\n" +" Ako naiÄ‘e na nevaljanu opciju, getopts smjesti naÄ‘eni znak opcije u " +"OPTARG.\n" +" Ako zahtijevani argument nije pronaÄ‘en, getopts smjesti „:“ u IME i " +"postavi\n" +" OPTARG na pronaÄ‘eni znak opcije. Ako getopts ne radi tiho i naiÄ‘e na\n" +" nevaljanu opciju, getopts smjesti „?“ u IME i poniÅ¡ti OPTARG.\n" +" Ako zahtijevani argument nije pronaÄ‘en, getopts smjesti „?“ u IME, " +"poniÅ¡ti\n" +" OPTARG i ispiÅ¡e poruku o greÅ¡kama.\n" +"\n" +" Ako ljuskina varijabla OPTERR ima vrijednost 0, getopts onemogući ispis\n" +" poruka o greÅ¡kama, Äak i kÈd prvi znak u OPCIJA_STRING nije dvotoÄka.\n" +" Zadano, OPTERR ima vrijednost 1.\n" +"\n" +" ObiÄno getopts analizira položajne parametre ($0 - $9), ali ako je\n" +" dȃno viÅ¡e argumenata, onda analizira te argumente.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 ako pronaÄ‘e opciju; ako naiÄ‘e na kraj opcija\n" +" ili ako se dogodi greÅ¡ka, zavrÅ¡i s neuspjehom." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Zamjeni ljusku s dȃnom naredbom.\n" +"\n" +" IzvrÅ¡i dȃnu NAREDBU, zamijenivÅ¡i ovu ljusku s ovim programom.\n" +" Eventualni ARGUMENTI postanu argumenti NAREDBE. Ako NAREDBA nije\n" +" specificirana, sva preusmjeravanja se dogode u trenutnoj ljusci.\n" +"\n" +" Opcije:\n" +" -a IME dÈde IME kao nulti argument NAREDBI\n" +" -c izvrÅ¡i NAREDBU u praznoj okolini\n" +" -l smjesti spojnicu („-“) kao nulti argument NAREDBI\n" +"\n" +" Ako se naredba ne može izvrÅ¡iti, ne-interaktivna ljuska zavrÅ¡i,\n" +" osim ako je aktivna opcija ljuske „execfail“.\n" +"\n" +" ZavrÅ¡i s kÈdom 0, osim ako NAREDBA nije pronaÄ‘ena,\n" +" ili se dogodila greÅ¡ka preusmjeravanja." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Izlaz iz ljuske.\n" +"\n" +" ZavrÅ¡i s kÈdom N. Bez N zavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Izlaz iz prijavne ljuske.\n" +"\n" +" ZavrÅ¡i s kÈdom N. ZavrÅ¡i s greÅ¡kom ako to nije prijavna ljuska." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Prikaže ili izvrÅ¡i naredbe iz popisa povijesti.\n" +"\n" +" Koristi se za prikazivanje dosadaÅ¡njih, za ureÄ‘ivanje, ili za ponovno\n" +" pokretanje naredbi. PRVA i ZADNJA mogu biti brojevi koji specificiraju\n" +" raspon, ili PRVA može biti string koji pokazuje na posljednju naredbu\n" +" Äije ime zapoÄinje sa stringom.\n" +"\n" +" Opcije:\n" +" -e EDITOR ime EDITORA koji će se koristi; zadano, koristi se FCEDIT,\n" +" zatim EDITOR ili konaÄno „vi“\n" +" -l izlista popis naredbi (umjesto ureÄ‘ivanja)\n" +" -n popis bez brojeva\n" +" -r popis s obrnutim redoslijedom (najnovija prvo)\n" +"\n" +" Prikladni alias s ovom funkcijom je r='fc -s'. Tako uneseni „r“ izvrÅ¡i\n" +" ponovno posljednju naredbu, a uneseni „r cc“ izvrÅ¡i posljednju naredbu\n" +" koja zapoÄinje s „cc“.\n" +"\n" +" ZavrÅ¡i s kÈdom izvrÅ¡ene naredbe; razliÄito od 0 ako se dogodi greÅ¡ka." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Premjesti posao u interaktivni naÄin.\n" +"\n" +" Smjesti posao JOBSPEC u interaktivni naÄin i uÄini ga\n" +" trenutnim poslom. Bez dȃnoga JOBSPEC, ljuska rabi svoj pojam\n" +" o trenutnom poslu.\n" +"\n" +" ZavrÅ¡i s kÈdom naredbe smjeÅ¡tene u interaktivni naÄin\n" +" ili s neuspjehom ako se dogodi greÅ¡ka." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Premjesti poslove u pozadinu.\n" +"\n" +" Smjesti poslove idenificirane sa svakim JOBSPEC u pozadinu, kao da su\n" +" pokrenuti s „&“. Bez dȃnih JOBSPEC, ljuska rabi svoj pojam\n" +" o trenutnom poslu.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako kontrola nad poslovima nije omogućena\n" +" ili se dogodila greÅ¡ka." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Zapamti ili prikaže lokacije programa.\n" +"\n" +" Odredi i zapamti apsolutnu stazu za svaku naredbu IME. Ako nisu\n" +" dȃni argumenti, prikaže informacije o zapamćenim naredbama.\n" +"\n" +" Opcije:\n" +" -d zaboravi zapamćene lokacije za svako IME\n" +" -l generira izlaz koji se može koristi za ulaz\n" +" -p IME_STAZE rabi IME_STAZE kao kao apsolutnu stazu za IME\n" +" -r zaboravi sve zapamćene lokacije\n" +" -t ispiÅ¡e zapamćene lokacije za svako IME\n" +" (s prefiksom IME ako je dȃno viÅ¡e IMEna)\n" +" Svako dȃno IME se traži u $PATH i doda se popisu zapamćenih\n" +" naredbi.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako nije pronaÄ‘eno IME\n" +" ili je dȃna nevaljana opcija." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Prikaže informacije o ugraÄ‘enim (builtin) naredbama.\n" +"\n" +" Prikaže kratke sažetke o ugraÄ‘enim naredbama. Ako je specificirani\n" +" UZORAK, pokaže detaljnu pomoć za sve naredbe koje podudare UZORAK,\n" +" inaÄe ispiÅ¡e popis tema za koje možete potražiti detalje.\n" +"\n" +" Opcije:\n" +" -d ukratko opisano djelovanje naredbe\n" +" -m prikaže uporabu u pseudo manpage formatu\n" +" -s prikaže samo sinopsis uporabe za svaku\n" +" naredbu koja podudara UZORAK\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako UZORAK nije pronaÄ‘en,\n" +" ili je dȃna nevaljana opcija." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Prikaže ili manipulira povijest naredbi.\n" +"\n" +" Prikaže numerirani popis izvrÅ¡enih naredbi (povijest); ispred\n" +" modificiranih stavki stoji prefiks „*“. Ako je dȃn argument N,\n" +" ispiÅ¡e N najmlaÄ‘ih (zadnjih) redaka povijesti.\n" +"\n" +" Opcije:\n" +" -c poÄisti povijest iz memorije; zaboravi sve izvrÅ¡ene naredbe\n" +" -d POZICIJA izbriÅ¡e redak povijesti na POZICIJI\n" +"\n" +" -a pripoji trenutnu povijest „povijesnoj“ datoteci\n" +" -n pripoji sve neproÄitane retke povijesne datoteke\n" +" trenutnom popisu povijesti\n" +" -r proÄita i pripoji povijesnu datoteku\n" +" trenutnom popisu povijesti\n" +" -w trenutnu povijest zapiÅ¡e u povijesnu datoteku\n" +"\n" +" -p proÅ¡iri povijest na svakom ARGUMENTU i prikaže rezultat\n" +" bez spremanja u povijesni popis\n" +" -s Pripoji ARGUMENTe popisu povijesti kao pojedinaÄne stavke \n" +"\n" +" Kao povijesna datoteka koristi se DATOTEKA ako je dȃna; ako nije dȃna,\n" +" koristi se varijabla HISTFILE (ako ima vrijednost), inaÄe se koristi\n" +" ~/.bash_history.\n" +"\n" +" Ako HISTTIMEFORMAT varijabla postoji i nije nula, njezinu vrijednost\n" +" koristi strftime(3) kao format string za ispis vremenskih oznaka\n" +" povijesnih stavki; inaÄe, vremenske oznake se ne ispisuju.\n" +"\n" +" ZavrÅ¡i s statusom 0 osim ako nije dȃna nevaljana opcija\n" +" ili se dogodila greÅ¡ka." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Prikaže status poslova.\n" +"\n" +" Izlista aktivne poslove. JOBSPEC ograniÄi izlaz na taj posao.\n" +" Bez opcija, prikaže status svih aktivnih poslova.\n" +"\n" +" Opcije:\n" +" -l pokaže i ID-ove procesa uz uobiÄajene informacije\n" +" -n pokaže samo procese koji su se promijenili od zadnjeg izvješća\n" +" -p pokaže samo ID-ove procesa\n" +" -r ograniÄi izlaz samo na trenutno pokrenute poslove\n" +" -s ograniÄi izlaz samo na zaustavljene poslove\n" +"\n" +" Ako je dȃna opcija -x, „jobs“ zamijeni svaki JOBSPEC\n" +" pronaÄ‘en u NAREDBI ili u ARGUMENTIMA s odgovarajućim\n" +" ID-om procesne grupe i izvrÅ¡i NAREDBU s ARGUMENTIMA.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija ili se dogodila " +"greÅ¡ka.\n" +" Ako je dȃna opcija -x, zavrÅ¡i sa izlaznim statusom NAREDBE." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Ukloni poslove iz trenutne ljuske.\n" +"\n" +" Ukloni svaki JOBSPEC argument iz tablice aktivnih poslova.\n" +" Bez ikakvih JOBSPEC ljuska rabi svoj pojam o trenutnom\n" +" poslu.\n" +"\n" +" Opcije:\n" +" -a ukloni sve poslove ako nije dȃni JOBSPEC\n" +" -h oznaÄi svaki JOBSPEC tako da se SIGHUP ne Å¡alje\n" +" poslu ako ljuska primi SIGHUP\n" +" -r ukloni samo pokrenute poslove\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n" +" ili nije dȃni JOBSPEC." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"PoÅ¡alje signal poslu.\n" +"\n" +" PoÅ¡alje signal dȃn u SIGSPEC ili SIGNUM procesima koji su\n" +" identificirani s PID-om ili s JOBSPEC. Ako nije\n" +" dȃn nijedan signal (ni SIGSPEC ni SIGNUM), poÅ¡alje se SIGTERM.\n" +"\n" +" Opcije:\n" +" -s IME IME je ime signala koji se Å¡alje\n" +" -n BROJ BROJ je broj signala koji se Å¡alje\n" +" -l izlista imena dostupnih signala; ako su dȃni argumenti iza\n" +" „-l“, to su brojevi signala Äija odgovarajuća imena\n" +" treba ispisati\n" +" -L isto kao -l\n" +"\n" +" „kill“ je ugraÄ‘ena ljuskina naredba iz dva razloga: dopuÅ¡ta vam da se\n" +" koristi ID posla umjesto ID procesa i takoÄ‘er vam dopuÅ¡ta ubiti procese\n" +" iako ste dostigli vaÅ¡e ograniÄenje broja procesa koje možete kreirati;\n" +" tj. ne morate pokrenuti novi proces da ubijete prekobrojne procese.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greÅ¡ka." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Evaluira aritmetiÄke izraze.\n" +"\n" +" Evaluira svaki ARGUMENT kao aritmetiÄki izraz. Evaluacija se\n" +" obavlja za cijele brojeve fiksne Å¡irine bez provjere prelijevanja.\n" +" Ipak, dijeljenje s nulom se detektira i prijavi kao greÅ¡ka.\n" +"\n" +" Popis koji slijedi opisuje operatore s jednakim prioritetom u\n" +" istoj grupi, a grupe su poredane po opadajućemu prioritetu.\n" +"\n" +" var++, var-- post-increment, post-decrement varijable\n" +" ++var, --var pre-increment, pre-decrement varijable\n" +" -, + unarni minus, unarni plus\n" +" !, ~ logiÄka i bitovska negacija\n" +" ** potenciranje\n" +" *, /, % množenje, dijeljenje, ostatak dijeljenja\n" +" +, - zbrajanje, oduzimanje\n" +" <<, >> pomak za bit ulijevo i udesno\n" +" <=, >=, <, > usporedba\n" +" ==, != jednako, nejednako\n" +" & bitovski AND\n" +" ^ bitovski XOR\n" +" | bitovski OR\n" +" && logiÄki AND\n" +" || logiÄki OR\n" +"\n" +" expr ? expr : expr uvjetni izraz\n" +"\n" +" =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= pridruživanje\n" +"\n" +" Varijable ljuske su dopuÅ¡tene kao parametri. Ime varijable se zamijeni\n" +" s njezinom vrijednošću (ako treba, pretvori se u cijeli broj).\n" +" Varijable, za upotrebu u izrazima, ne moraju imati atribut cijelog\n" +" broja.\n" +"\n" +" Operatori se evaluiraju prema pravilima prioriteta. Najprije se\n" +" evaluiraju pod-izrazi u zagradama i tako mogu prevagnuti nad gore\n" +" opisanim pravilima prioriteta.\n" +"\n" +" Ako zadnji ARGUMENT evaluira na 0 (nula), „let“ zavrÅ¡i s kÈdom 1;\n" +" inaÄe zavrÅ¡i s kÈdom 0." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"ProÄita redak iz standardnoga ulaza i razdijeli ga na polja.\n" +"\n" +" ProÄita jedan redak iz standardnoga ulaza (ili dȃnoga deskriptora " +"datoteke\n" +" FD ako je dȃna opcija „-u“) i dodijeli prvu rijeÄ prvom IMEnu, drugu " +"rijeÄ\n" +" drugom IMEnu, i tako dalje; viÅ¡ak rijeÄi dodijeli je zadnjem IMEnu\n" +" Samo znakovi sadržani u varijabli IFS prepoznaju se kao MEÄA\n" +" (razdjelnik rijeÄi). Ako nije dȃno nijedno IME, proÄitani redak se\n" +" spremi u varijablu REPLY.\n" +"\n" +" Opcije:\n" +" -a POLJE proÄitane rijeÄi dodijeli sekvencijalno indeksima POLJA\n" +" poÄevÅ¡i od nule\n" +" -d MEÄA nastavi Äitati sve dok ne proÄita prvu MEÄU (umjesto LF " +"znaka)\n" +" -e rabi „readline“ za dobaviti redak\n" +" -i TEKST rabi TEKST kao poÄetni tekst za „readline“\n" +" -n BROJ zaustavi Äitanje nakon proÄitanih ne viÅ¡e od BROJ znakova\n" +" ili nakon LF znaka (umjesto da uvijek Äeka na LF znak)\n" +" -N BROJ zaustavi Äitanje samo nakon proÄitanih ne viÅ¡e od BROJ\n" +" znakova ili nakon EOF znaka ili nakon isteka „t SEKUNDA\n" +" -p PROMPT ispiÅ¡e string PROMPT kao prompt (bez zavrÅ¡nog znaka novog\n" +" retka) prije poÄetka Äitanja retka\n" +" -r onemogući maskiranje kódova s obratnom kosom crtom\n" +" -s siguran ulaz — ne odjekuje ulaz na terminal\n" +" -t BROJ nakon isteka BROJ SEKUNDI prestane Äekati na ulaz i zavrÅ¡i\n" +" s kÈdom većim od 128; zadano, broj sekundi Äekanja je\n" +" vrijednost varijable TMOUT; BROJ može biti i realni " +"broj;\n" +" Ako je BROJ = 0, „read“ zavrÅ¡i odmah bez da iÅ¡ta Äita, a\n" +" samo ako je ulaz dostupni na specificiranom deskriptoru\n" +" datoteke ZavrÅ¡i s kÈdom 0\n" +"\n" +" -u FD Äita iz deskriptora datoteke FD umjesto iz standardnoga " +"ulaza\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako ne naiÄ‘e na konac datoteke\n" +" (EOF), ili je isteklo vrijeme Äekanja, ili se dogodila greÅ¡ka\n" +" pri dodjeli, ili je specificirani nevaljani deskriptor datoteke\n" +" kao argument opciji „-u“." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Povrat iz funkcije ljuske.\n" +"\n" +" UÄini da funkcija ili pokrenuta skripta zavrÅ¡i sa izlaznom vrijednošću\n" +" specificiranom s N. Ako N nije dȃn, zavrÅ¡i s kÈdom zadnje naredbe\n" +" izvrÅ¡ene unutar funkcije ili skripte.\n" +"\n" +" Vrati vrijednost N ili 1 ako ljuska ne izvrÅ¡i\n" +" funkciju ili skriptu." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Postavi vrijednosti opcija ljuske i položajnih parametara.\n" +"\n" +" Omogući/onemogući svojstva ljuske ili mijenja vrijednosti položajnih\n" +" parametara. Bez opcija ili argumenata „set“ prikaže imena i vrijednosti\n" +" svih definiranih varijabli i funkcija u formatu upotrebljivom kao\n" +" ulaz za postavljanje/poniÅ¡tavanje trenutno postavljenih varijabli.\n" +" Dostupne su sljedeće opcije („+“ umjesto „-“ iskljuÄi dȃnu opciju):\n" +"\n" +" -a automatski eksportira nove ili modificirane varijable i funkcije\n" +" -B izvrÅ¡i brace expansion, npr. echo a{d,c}e -> ade, ace (zadano)\n" +" -b odmah prijavi prekid posla (ne Äeka da zavrÅ¡i trenutna naredba)\n" +" -C onemogući da preusmjereni eksport piÅ¡e preko regularnih datoteka\n" +" -E omogući da bilo koji ERR „trap“ naslijede funkcije ljuske i " +"potomci\n" +" -e zavrÅ¡i odmah ako naredba zavrÅ¡i s kÈdom razliÄitim od nula\n" +" -f onemogući zamjenske znakove za imena datoteka (iskljuÄi " +"„globbing“)\n" +" -H omogući upotrebu znaka „!“ za supstituciju povijesti naredbi\n" +" -h pamti (apslolutne) lokacije izvrÅ¡enih naredbi (zadano)\n" +" -k smjesti sve argumente dodijeljene varijablama u okolinu\n" +" (a ne samo one koje prethode imenu naredbe)\n" +" -m kontrola nad poslovima je omogućena (zadano)\n" +" -n proÄita, ali ne izvrÅ¡i naredbe („testiranje“)\n" +" -o IME_OPCIJE omogući IME_OPCIJU (v. niže za dugaÄka imena opcija)\n" +" -P ne razrijeÅ¡i simboliÄke veze pri izvrÅ¡avanju naredbi poput „cd“\n" +" koje promjene trenutni direktorij\n" +" -p ukljuÄi privilegirani mÈd: datoteke BASH_ENV i ENV se ignoriraju,\n" +" funkcije ljuske se ne importiraju iz okoline, a ignoriraju se i\n" +" sve SHELLOPTS; taj mÈd se automatski aktivira kÈd god se realni\n" +" i efektivni UID i GID ne podudaraju. IskljuÄivanje ove opcije\n" +" uÄini da je efektivni UID i GID isti kao i realni UID i GID.\n" +" -T DEBUG i RETURN „trap“ naslijede funkcije ljuske i potomci\n" +" -t zavrÅ¡i nakon Äitanja i izvrÅ¡enja jedne naredbe\n" +" -u nepostojeće varijable tretira kao greÅ¡ku kÈd supstituira\n" +" -v ispisuju ulaz (odjekuje ih) istovremeno s Äitanjem\n" +" -x ispisuje naredbe s argumentima istovremeno s izvrÅ¡avanjem\n" +" -- argumenti koji slijede su položajni parametri; ako ih nema,\n" +" postojeći položajni argumenti se briÅ¡u (uklanjaju se)\n" +" - iskljuÄi opcije -v i -x; argumenti koji slijede su položajni\n" +" parametri; ali ako ih nema, postojeći položajni argumenti\n" +" se ne briÅ¡u (ostaju)\n" +"\n" +" Opcije se takoÄ‘er mogu koristiti pri pokretanju ljuske. Postojeće\n" +" stanje opcija može se naći u $-. Za eventualne dodatne argumente iz\n" +" „set“ uzima se da su položajni parametri i dodjeljuje se, po redu, na\n" +" $1, $2, ... $N.\n" +"\n" +" DugaÄki nazivi koji se koriste s opcijom -o (ili +o)\n" +" allexport isto kao -a\n" +" braceexpand isto kao -B (brace ekspanzija, npr. echo a{d,c}e -> ade, " +"ace\n" +" emacs za ureÄ‘ivanje redaka koristi suÄelje u „emacs“ stilu\n" +" errexit isto kao -e\n" +" errtrace isto kao -E\n" +" functrace isto kao -T\n" +" hashall isto kao -h\n" +" histexpand isto kao -H\n" +" history omogući naredbu „history“\n" +" ignoreeof ignorira Ctrl-D; ne zavrÅ¡i (ne iziÄ‘e iz) ljusku na EOF\n" +" interactive-comments dopusti komentiranje u interaktivnim naredbama\n" +" keyword isto kao -k\n" +" monitor isto kao -m\n" +" noclobber isto kao -C\n" +" noexec isto kao -n\n" +" noglob isto kao -f\n" +" nolog (prepoznata, ali se ignorira)\n" +" notify isto kao -b\n" +" nounset isto kao -u\n" +" onecmd isto kao -t\n" +" physical isto kao -P\n" +" pipefail cjevovod vrati vrijednost izlaznog statusa zadnje " +"neuspjeÅ¡ne\n" +" naredbe ili 0 ako su svi poslovi uspjeÅ¡no zavrÅ¡eni\n" +" posix striktno poÅ¡tuje POSIX standard\n" +" privileged isto kao -p\n" +" verbose isto kao -v\n" +" vi za ureÄ‘ivanje redaka koristi suÄelje u „vi“ stilu\n" +" xtrace isto kao -x\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Ukloni vrijednosti i atribute varijabli i funkcija ljuske.\n" +"\n" +" Za svako IME ukloni odgovarajuću varijablu ili funkciju\n" +"\n" +" Opcije:\n" +" -f tretira svako IME kao funkciju ljuske\n" +" -v tretira svako IME kao varijablu ljuske\n" +" -n tretira svako IME kao referenciju na neki objekt i ukloni\n" +" samu varijablu IME umjesto referiranog objekta\n" +"\n" +" Bez dȃnih opcija, „unset“ prvo pokuÅ¡a ukloniti varijablu, a ako to\n" +" ne uspije, onda pokuÅ¡a ukloniti funkciju. Neke varijable nije moguće\n" +" ukloniti; pogledajte „readonly.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n" +" ili IME je „samo-za-Äitanje“." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Postavi eksportni atribut na varijable ljuske.\n" +"\n" +" OznaÄi automatski svako dȃno IME za eksport u okolinu za naknadno\n" +" izvrÅ¡avanje naredbi. Ako je dȃna VRIJEDNOST, dodijeli im VRIJEDNOST\n" +" prije eksportiranja.\n" +"\n" +" Opcije:\n" +" -f dȃna IMEna se odnose samo na funkcije\n" +" -n ukloni eksportni atribut iz svakoga IMEna \n" +" -p izlista popis svih eksportiranih varijabli i funkcija\n" +"\n" +" Argument „--“ sprijeÄi daljnje procesiranje opcija.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n" +" ili dȃno IME nije valjano." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"OznaÄi varijable ljuske kao nepromjenjive.\n" +"\n" +" OznaÄi svako IME kao nepromjenjivo (readonly), tako da se vrijednosti\n" +" ovih IMEna ne može promijeniti kasnijim operacijama. Ako je dȃna\n" +" VRIJEDNOST, prvo mu dodijeli VRIJEDNOST, a zatim ga oznaÄi " +"nepromjenjivim.\n" +"\n" +" Opcije:\n" +" -a svako IME se odnosi na varijable indeksiranoga polja\n" +" -A svako IME se odnosi na varijable asocijativnoga polja\n" +" -f svako IME se odnosi na funkcije ljuske\n" +" -p prikaže popis svih nepromjenjivih varijabli ili funkcija\n" +" ovisno o opciji „-f“ (je li ili nije dȃna).\n" +"\n" +" Argument „--“ onemogući daljnje procesiranje opcija.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n" +" ili je IME nevaljano." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Pomakne položajne parametre.\n" +"\n" +" Preimenuje položajne parametre $N+1,$N+2,... u $1,$2,...\n" +" Ako nije dȃni N, uzima se da je N = 1.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je N negativni ili veći od $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"IzvrÅ¡i naredbe iz datoteke u trenutnoj ljusci.\n" +"\n" +" ÄŒita i izvrÅ¡i naredbe iz DATOTEKE u trenutnoj ljusci.\n" +" Direktorij s DATOTEKOM traži se po stazama sadržanima u varijabli\n" +" PATH. Ako su dȃni ikoji ARGUMENTI, oni postaju položajni parametri\n" +" tijekom izvrÅ¡avanja DATOTEKE.\n" +"\n" +" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe iz DATOTEKE,\n" +" ili sa statusom 1 ako se DATOTEKA ne može proÄitati." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Obustavi rad ljuske.\n" +"\n" +" Obustavi rad u ovoj ljusci sve dok ne primi SIGCONT signal.\n" +" Ako nije prisiljena, rad prijavne ljuske se ne može obustaviti.\n" +"\n" +" Opcije:\n" +" -f prisili obustavu, Äak i ako je to prijavna ljuska\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako kontrola nad poslovima nije omogućena\n" +" ili se dogodila greÅ¡ka." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Evaluira uvjetni izraz.\n" +"\n" +" Evaluira dȃni IZRAZ; ovisno o rezultatu evaluacije, zavrÅ¡i sa\n" +" statusom 0 (istina), ili 1 (neistina, laž). Izrazi mogu biti unarni\n" +" ili binarni. Unarni izrazi se Äesto koriste za ispitivanje statusa\n" +" datoteke. TakoÄ‘er postoje operatori za usporedbu stringova i brojeva.\n" +"\n" +" PonaÅ¡anje od „test“ ovisi o broju argumenata. Potražite u „bash“\n" +" uputama detalje za uporabu.\n" +"\n" +" Operatori za datoteke:\n" +" -a DATOTEKA istina ako datoteka postoji\n" +" -b DATOTEKA istina ako je datoteka blok ureÄ‘aj\n" +" -c DATOTEKA istina ako je datoteka znakovni ureÄ‘aj\n" +" -d DATOTEKA istina ako je datoteka direktorij\n" +" -e DATOTEKA istina ako datoteka postoji\n" +" -f DATOTEKA istina ako je datoteka regularna datoteka\n" +" -G DATOTEKA istina ako je datoteka efektivno vlasniÅ¡tvo vaÅ¡e " +"grupe\n" +" -g DATOTEKA istina ako je datoteka SETGUID\n" +" -h DATOTEKA istina ako je datoteka simboliÄka veza\n" +" -k DATOTEKA istina ako datoteka ima postavljeni \"sticky\" " +"bit\n" +" -L DATOTEKA istina ako je datoteka simboliÄka veza\n" +" -N DATOTEKA istina ako se datoteka promijenila od zadnjeg " +"Äitanja\n" +" -O DATOTEKA istina ako je datoteka efektivno vaÅ¡e vlasniÅ¡tvo\n" +" -p DATOTEKA istina ako je datoteka imenovana cijev\n" +" -r DATOTEKA istina ako vi možete Äitati datoteku\n" +" -S DATOTEKA istina ako je datoteka utiÄnica\n" +" -s DATOTEKA istina ako datoteka nije prazna\n" +" -t DESKRIPTOR istina ako je deskriptor datoteke otvoren u " +"terminalu\n" +" -u DATOTEKA istina ako je datoteka SETUID\n" +" -w DATOTEKA istina ako vi možete pisati datoteku\n" +" -x DATOTEKA istina ako vi možete izvrÅ¡iti datoteku\n" +"\n" +" DTEKA1 -nt DTEKA2 istina ako je prva datoteka promijenjena\n" +" kasnije od druge\n" +" DTEKA1 -ot DTEKA2 istina ako je prva datoteka promijenjena\n" +" ranije od druge\n" +" DTEKA1 -ef DTEKA2 istina ako je prva datoteka Ävrsta veza na drugu\n" +"\n" +" Operatori za stringove:\n" +" -z STRING istina ako je string prazni\n" +" -n STRING istina ako string nije prazni\n" +" STRING istina ako string nije prazni\n" +" STRING1 = STRING2 istina ako su stringovi jednaki\n" +" STRING1 != STRING2 istina ako stringovi nisu jednaki\n" +" STRING1 < STRING2 istina ako se leksikografski prvi string\n" +" razvrsta ispred drugoga\n" +" STRING1 > STRING2 istina ako se leksikografski prvi string\n" +" razvrsta iza drugoga\n" +"\n" +" Ostali operatori:\n" +" -o OPCIJA istina ako je ova OPCIJA ljuske omogućena\n" +" -v VARIJABLA istina ako ova VARIJABLA ima vrijednost\n" +" -R VARIJABLA istina ako je ova VARIJABLA referencija " +"(nameref) \n" +" ! IZRAZ istina ako IZRAZ neistiniti\n" +" IZRAZ1 -a IZRAZ2 istina ako su oba izraza istinita\n" +" IZRAZ1 -o IZRAZ2 laž ako su oba izraza neistinita\n" +" ARG1 OP ARG2 istina ako je aritmetika valjana; operator OP je\n" +" jedan od: -eq, -ne, -lt, -le, -gt, ili -ge;\n" +" koji znaÄe: jednako, nejednako, manje od, " +"manje,\n" +" ili jednako, veće od, veće ili jednako.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 ako je IZRAZ istiniti, 1 ako je IZRAZ neistiniti,\n" +" ili 2 ako je dȃn nevaljani argument." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Provjeri uvjetni izraz.\n" +"\n" +" To je sinonim za ugraÄ‘enu funkciju „test“, ali zadnji argument\n" +" mora biti zagrada „]“ kao par zagradi „[“ na poÄetku." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Prikaže potroÅ¡nju vremena procesa.\n" +" \n" +" Prikaže ukupno potroÅ¡eno vrijeme korisnikom i sustavom; prvo, vrijeme\n" +" potroÅ¡eno samom ljuskom, a zatim svim potomcima pokrenutih ljuskom.\n" +"\n" +" ZavrÅ¡i uvijek s kÈdom 0." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Prikupljanje (hvatanje) signala i drugih dogaÄ‘aja.\n" +"\n" +" Definira i aktivira postupke rukovanja koji se pokrenu kÈd ljuska\n" +" primi signal ili se dogodi neki drugi sluÄaj.\n" +"\n" +" ARGUMENT je naredba koja se proÄita i izvrÅ¡i kÈd ljuska primi jedan od\n" +" specificiranih signala (SIGNAL_SPEC). Ako nema ARGUMENTA (i dȃn je samo\n" +" jedan signal), ili ARGUMENT je „-“, specificirani signal zadobije svoju\n" +" originalnu vrijednost (koju je imao na startu ove ljuske). Ako je " +"ARGUMENT\n" +" prazni string, ljuska i njezini potomci ignoriraju svaki SIGNAL_SPEC.\n" +"\n" +" Ako je SIGNAL_SPEC 0 ili EXIT, ARGUMENT se izvrÅ¡i kÈd zatvorite\n" +" (exit) ljusku. Ako je SIGNAL_SPEC DEBUG, ARGUMENT se izvrÅ¡i prije\n" +" svake jednostavne naredbe. Ako je SIGNAL_SPEC RETURN, ARGUMENT se\n" +" izvrÅ¡i svaki put kÈd funkcija ljuske ili skripta izvrÅ¡ena s . ili\n" +" „ugraÄ‘eni source“ zavrÅ¡i izvrÅ¡avanje. SIGNAL_SPEC ERR znaÄi da se\n" +" ARGUMENT izvrÅ¡i nakon neuspjeÅ¡ne naredbe koja bi uzrokovala da ljuska\n" +" zavrÅ¡i (exit) kÈd je opcija „-e“ omogućena.\n" +"\n" +" Bez argumenta, „trap“ izlista popis koji pokaže asocijaciju\n" +" izmeÄ‘u naredbi i signala.\n" +"\n" +" Opcije:\n" +" -l popis imena signala i njihov odgovarajući broj\n" +" -p pokaže koja naredba je povezana na svaki dȃni signal\n" +"\n" +" Svaki je SIGNAL_SPEC ili ime signala iz ili broj signala.\n" +" Signal se može poslati ljusci s „kill -signal $$“.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako SIGNAL_SPEC nije valjani\n" +" ili je dȃna nevaljana opcija." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Informacije o tipu naredbe.\n" +"\n" +" Za svako dȃno IME pokaže kako će se interpretirati\n" +" ako se koristi kao naredba.\n" +"\n" +" Opcije:\n" +" -a pokaže sve lokacije koje sadrže izvrÅ¡nu datoteku IME; ukljuÄuje i\n" +" lokacije s aliasima, ugraÄ‘enim naredbama i funkcijama, ali onda\n" +" i samo onda ako nije dȃna opcija „-p“\n" +" -f ignorira funkcije kao da nisu definirane\n" +" -P traži dȃno IME po stazama definiranim u PATH (takoÄ‘er ako je IME\n" +" alias, ugraÄ‘ena naredba (builtin) ili funkcija)\n" +" i ispiÅ¡e puni naziv datoteke na disku koja bi se izvrÅ¡ila\n" +" -p ispiÅ¡e puni naziv datoteke na disku koja bi se izvrÅ¡ila ili\n" +" niÅ¡ta ako je IME alias, ugraÄ‘ena naredba (builtin) ili funkcija\n" +" -t ispiÅ¡e samo tip navedenih IMEna: „alias“, „builtin“, „file“,\n" +" „function“ ili „keyword“, ovisno o tome je li rijeÄ o aliasu,\n" +" ugraÄ‘enoj funkciji (builtin), datoteci na disku, definiranoj\n" +" funkciji ili kljuÄnoj rijeÄi; ili niÅ¡ta, ako je ime nepoznato\n" +"\n" +" ZavrÅ¡i s kÈdom 0 ako se pronaÄ‘u sva IMEna, inaÄe s 1." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Upravlja i modificira ograniÄenja ljuske.\n" +"\n" +" Omogući upravljanje s resursima koji su dostupni ovoj ljusci i\n" +" procesima koje kreira -- na sustavima koji to dopuÅ¡taju.\n" +"\n" +" Opcije:\n" +" -S rabi „mekano“ (soft) ograniÄenje resursa\n" +" -H rabi „tvrdo“ (hard) ograniÄenje resursa\n" +" -a popis svih trenutnih ograniÄenja\n" +" -b maks. veliÄina meÄ‘uspremnika utiÄnice\n" +" -c maks. veliÄina „core“ datoteka (u kB)\n" +" -d maks. veliÄina segmenta s procesnim podacima (in kB)\n" +" -e maks. prioritet rasporeÄ‘ivanja („nice“ vrijednost)\n" +" -f maks. veliÄina datoteka ljuska i njeni potomci mogu zapisati\n" +" -i maks. broj signala koji može biti na Äekanju\n" +" -l maks. veliÄina koju proces može zakljuÄati u memoriju\n" +" -k maks. broj rezerviranih/dodijeljenih „kqueues“ za taj proces\n" +" -m maks. iznos fiziÄke memorije procesa (in kB)\n" +" -n maks. broj otvorenih deskriptora datoteka\n" +" -p maks. veliÄina meÄ‘uspremnika cijevi\n" +" -q maks. broj bajtova za red POSIX poruka\n" +" -r maks. prioritet rasporeÄ‘ivanja u realnom vremenu\n" +" -s maks. veliÄina snopa (stack) (u kB)\n" +" -t maks. iznos CPU vremena (u sekundama)\n" +" -u maks. broj korisniÄkih procesa\n" +" -v maks. veliÄina virtualne memorije (u kB)\n" +" -x maks. broj datoteÄnih brava (lokota, locks)\n" +" -P maks. broj pseudo terminala\n" +" -T maks. broj dretvi\n" +"\n" +" Nisu sve opisane opcije dostupne na svim platformama.\n" +"\n" +" Ako je specificirani, LIMIT postane nova vrijednost za specificirani\n" +" resurs, inaÄe se prikažu trenutne vrijednosti. Specijalne vrijednosti,\n" +" „soft“, „hard“, i „unlimited“ su trenutni soft limit, trenutni hard\n" +" limit i unlimited. Ako nijedna opcija nije specificirana, podrazumijeva\n" +" se da je aktivna „-f“ opcija.\n" +"\n" +" Vrijednosti su viÅ¡ekratnik od 1024 bajta, osim za „-t“ koji je\n" +" u sekundama, „-p“ koji je viÅ¡ekratnik od 512 bajta i „-u“ je apsolutni\n" +" broj procesa.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greÅ¡ka." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Prikaže ili postavi masku prilikom kreiranje datoteke.\n" +"\n" +" Postavi masku datoteke koju kreira korisnik na MODE.\n" +" Ako MODE nije dȃn, ispiÅ¡e trenutnu vrijednost maske.\n" +"\n" +" Ako MODE poÄinje sa znamenkom, interpretira se kao oktalni broj;\n" +" inaÄe to je simboliÄki mode string kakav prihvaća chmod(1).\n" +"\n" +" Opcije:\n" +" -p ako nije dȃn MODE, generira izlaz u formatu\n" +" koji se može iskoristiti kao ulaz\n" +" -S napravi simboliÄki izlaz; inaÄe izlaz je oktalni broj\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako MODE nije valjan\n" +" ili je dȃna nevaljana opcija." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"ÄŒeka da posao zavrÅ¡i i vrati njegov izlazni status.\n" +"\n" +" ÄŒeka na svaki posao identificirani s ID — to jest indikatorom posla ili\n" +" indikatorom procesa — i izvijesti njegov zavrÅ¡ni status. Ako nije dȃn\n" +" ID, Äeka na sve trenutno aktivne potomke, a zavrÅ¡ni status je nula.\n" +" Ako je ID specifikacija posla, Äeka na sve procese u cjevovodu tog " +"posla.\n" +"\n" +" Ako je dȃna opcija „-n“, Äeka na zavrÅ¡etak sljedećeg posla i vrati\n" +" njegov izlazni status.\n" +"\n" +" Ako je dȃna opcija „-f“ i kontrola nad poslovima je omogućena, Äeka dok\n" +" specificirani ID ne zavrÅ¡i, umjesto da promijeni status.\n" +"\n" +" ZavrÅ¡i s kÈdom zadnjeg ID-a, a s kÈdom 1 ako je ID nevaljani\n" +" ili je dȃna nevaljana opcija." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"ÄŒeka da proces zavrÅ¡i i vrati njegov izlazni status.\n" +"\n" +" ÄŒeka na svaki proces identificirani s PID i izvijesti njegov zavrÅ¡ni\n" +" status. Ako nije dȃn PID, Äeka na sve trenutno aktivne potomke,\n" +" a zavrÅ¡ni status je nula. PID mora biti proces ID.\n" +"\n" +" ZavrÅ¡i s kÈdom zadnjeg PID-a, s kÈdom 1 ako je PID nevaljani,\n" +" ili s 2 ako je dȃna nevaljana opcija." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"IzvrÅ¡i naredbe za svakoga Älana u popisu.\n" +"\n" +" Petlja „for“ izvrÅ¡i sekvenciju naredbi za svakoga Älana u popisu " +"stavki.\n" +" Ako nema operanda „in RIJEÄŒIMA...;“, podrazumijeva se operand\n" +" „in \"$@\"“. Svakom elementu u RIJEÄŒIMA, IME se postavi na taj element\n" +" i izvrÅ¡e se NAREDBE.\n" +"\n" +" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"AritmetiÄka „for“ petlja.\n" +"\n" +" Isto kao:\n" +"\n" +" (( EXP1 )); while (( EXP2 )); do NAREDBE; (( EXP3 )); done\n" +"\n" +" EXP1, EXP2, EXP3 su aritmetiÄki izrazi. Ako bilo koji izraz nije\n" +" dȃn, uzima se da mu je vrijednost jednaka 1.\n" +"\n" +" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Pripremi izbornik i izvrÅ¡i izabrane naredbe.\n" +"\n" +" ProÅ¡irenjem RIJEÄŒI, „select“ generira i prikaže izbornik na standardnom\n" +" izlazu za greÅ¡ke s brojem ispred svake rijeÄi. Ako operand „u RIJEÄŒIMA“\n" +" nije dȃn, podrazumijeva se operand „in \"$@\"“.\n" +" Nakon izbornika prikaže se PS3 prompt i redak se Äita iz standardnoga\n" +" ulaza; ako se redak sastoji od broja koji odgovara jednoj od prikazanih\n" +" rijeÄi, onda varijabla IME dobije vrijednost te rijeÄi; ako je redak\n" +" prazan, RIJEÄŒI i prompt se ponovno prikažu; ako se proÄita EOF „select“\n" +" naredba zavrÅ¡i s poslom. Bilo koja druga vrijednost koja se proÄita " +"uÄini\n" +" da se IME isprazni (nulira). ProÄitani redak spremi se u varijablu " +"REPLY.\n" +" NAREDBE se izvrÅ¡avaju nakon svakog izbora, tako dugo dok „break“ " +"naredba\n" +" ne prekine posao.\n" +"\n" +" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Prikaže vrijeme potroÅ¡eno cjevovodom.\n" +"\n" +" Nakon zavrÅ¡etka izvrÅ¡avanja CJEVOVODA prikaže sažetak statistike\n" +" troÅ¡enja vremena: ukupno potroÅ¡eno vrijeme, CPU vrijeme potroÅ¡eno\n" +" korisnikom i CPU vrijeme potroÅ¡eno sustavom za izvrÅ¡avanje naredbi.\n" +"\n" +" Izlazni format se može prilagoditi s varijablom okoline TIMEFORMAT.\n" +" Opcija „-p“ ignorira TIMEFORMAT i ispiÅ¡e izlaz u prenosivom POSIX\n" +" formatu.\n" +"\n" +" ZavrÅ¡i s izlaznim statusom CJEVOVODA." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"IzvrÅ¡i naredbe ovisno o slaganju s uzorkom.\n" +"\n" +" IzvrÅ¡i onu NAREDBU koja odgovara prvom UZORKU koji se podudara s " +"RIJEÄŒI.\n" +" Znak „|“ rabi se za razdvajanje viÅ¡e uzoraka.\n" +"\n" +" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"IzvrÅ¡avanje uvjetovanih naredbi.\n" +"\n" +" Prvo izvrÅ¡i zadatke iza „if“; ako „if“ zavrÅ¡i s kÈdom nula, izvrÅ¡i\n" +" zadatke iza prvog „then“; inaÄe, izvrÅ¡e se zadatci iza sljedećeg „elif“\n" +" (ako postoji), ili „else“ (ako postoji). Ako „elif“ zavrÅ¡i s kÈdom\n" +" nula, izvrÅ¡e se zadatci iza odgovarajućih „then“. Ako viÅ¡e nema „elif“,\n" +" ili „else“, ili nakon izvrÅ¡enja zadataka iza „then“, „if“ naredba " +"zavrÅ¡i.\n" +"\n" +" „if“ zavrÅ¡i s kÈdom zadnjeg izvrÅ¡enoga zadatka." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"IzvrÅ¡ava naredbe tako dugo dok je test uspjeÅ¡an.\n" +"\n" +" IzvrÅ¡ava sukcesivne NAREDBE tako dugo dok zadnja naredba u\n" +" „while“ NAREDBI ZavrÅ¡i s kÈdom 0.\n" +"\n" +" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"IzvrÅ¡ava naredbe tako dugo dok test ne uspije.\n" +"\n" +" IzvrÅ¡ava sukcesivne NAREDBE tako dugo dok zadnja naredba u\n" +" „until“ NAREDBAMA zavrÅ¡i s kÈdom razliÄitim od nule.\n" +"\n" +" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Kreira coprocess (suproces) s imenom IME.\n" +"\n" +" IzvrÅ¡i NAREDBU asinkrono, sa standardnim izlazom i standardnim ulazom\n" +" naredbe spojene preko cijevi na deskriptore datoteke dodijeljene\n" +" indeksima 0 i 1 varijable polja IME u izvrÅ¡noj ljusci.\n" +" Zadano, IME je \"COPROC\".\n" +"\n" +" Naredba coproc zavrÅ¡i s kÈdom 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Definira funkciju ljuske.\n" +"\n" +" Kreira funkciju ljuske nazvanu IME. KÈd se pokrene kao jednostavna\n" +" naredba, IME izvrÅ¡i NAREDBE unutar konteksta ljuske pozivanja.\n" +" KÈd se IME pozove, argumenti se proslijede funkciji kao $0...$N,\n" +" a ime funkcije je $FUNCNAME.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je IME readonly (samo-za-Äitanje)." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Grupira naredbe u jednu cjelinu.\n" +"\n" +" IzvrÅ¡i skup naredbi kao grupu. To je jedan od naÄina za preusmjeravanje\n" +" Äitavog skupa naredbi\n" +"\n" +" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Nastavi posao u interaktivnom naÄinu.\n" +"\n" +" Nastavi dȃni obustavljeni ili pozadinski posao u interaktivnom mÈdu\n" +" To je ekvivalentno naredbi „fg“. JOBSPEC može specificirati\n" +" ili ime posla ili broj posla. Ako „&“ slijedi iza JOBSPEC\n" +" onda posao prelazi u pozadinu. To je ekvivalentno naredbi „bg“\n" +"\n" +" ZavrÅ¡i s kÈdom nastavljenoga posla." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"IzraÄuna aritmetiÄki izraz.\n" +"\n" +" IZRAZ se izraÄuna po aritmetiÄkim pravilima.\n" +" To je isto kao \"let IZRAZ\".\n" +"\n" +" ZavrÅ¡i s kÈdom 1 ako je rezultat IZRAZA jednaki 0;\n" +" inaÄe zavrÅ¡i s kÈdom 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"IzvrÅ¡i uvjetnu naredbu.\n" +"\n" +" Evaluira dani uvjetni IZRAZ; ovisno o rezultatu evaluacije zavrÅ¡i sa\n" +" statusom 0 (istina) ili 1 (neistina, laž). Izrazi koriste iste osnovne\n" +" komponente koje koristi ugraÄ‘ena naredba (builtin) „test“, i mogu se\n" +" kombinirati sa sljedećim operatorima:\n" +"\n" +" ( IZRAZ ) vrati vrijednost danoga IZRAZa\n" +" ! IZRAZ istina ako je IZRAZ istina, inaÄe laž\n" +" IZRAZ1 && IZRAZ2 istina ako su oba izraza istinita, inaÄe laž\n" +" IZRAZ1 || IZRAZ2 laž ako su oba izraza neistinita, inaÄe istina\n" +"\n" +" Ako se rabe operatori „==“ ili „!=“, onda se string desno od operatora\n" +" smatra za uzorak i provodi se podudaranje uzoraka.\n" +" Ako se rabi operator „=~“, onda se string na desno od operatora " +"podudara\n" +" kao regularni izraz.\n" +"\n" +" Operatori „&&“ i „|| ne evaluiraju IZRAZ2 ako je IZRAZ1 dovoljan za\n" +" odreÄ‘ivanje konaÄnog rezurlata.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 ili 1 ovisno o IZRAZU." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"ZnaÄenje i upotreba standardnih varijabli ljuske.\n" +"\n" +" U nastavku je opis brojnih varijabli od kojih neke sadrže popis\n" +" elemenata. U svakom od tih popisa elementi su razdvojeni dvotoÄkama.\n" +"\n" +" BASH_VERSION inaÄica ovog „bash“ programa\n" +" CDPATH popis direktorija u kojima se traži direktorij\n" +" kÈd argument od „cd“ (direktorij) nije u\n" +" trenutnom radnom direktoriju\n" +" GLOBIGNORE popis uzoraka koji opisuju imena datoteka koje\n" +" se ignoriraju prilikom ekspanzije imena staza\n" +" HISTFILE ime datoteke koja sadrži povijest vaÅ¡ih naredbi\n" +" HISTFILESIZE maksimalni broj redaka datoteke s povijesti naredba\n" +" HISTIGNORE popis uzoraka koji opisuju naredbe koje ne treba zapisati\n" +" u datoteku koja sadrži povijest vaÅ¡ih naredbi\n" +" HISTSIZE maksimalni broj redaka koje trenutna ljuska može " +"dosegnuti\n" +" HOME puni naziv staze do vaÅ¡ega osobnoga direktorija\n" +" HOSTNAME ime raÄunala na kojem se izvrÅ¡ava „bash“\n" +" HOSTTYPE tip CPU-a na kojem se izvrÅ¡ava „bash“\n" +" IGNOREEOF broj ignoriranih Ctrl-D (EOF) prije zatvaranja ljuske\n" +" MACHTYPE tip raÄunala na kojem se izvrÅ¡ava „bash“\n" +" MAILCHECK kako Äesto (u sekundama) „bash“ gleda ima li nove poÅ¡te\n" +" MAILPATH popis datoteka koje „bash“ provjeri za novu poÅ¡tu\n" +" OSTYPE distribucija Unix-a no kojem se izvrÅ¡ava ovaj „bash“\n" +" PATH popis direktorija u kojima se traže naredbe\n" +" PROMPT_COMMAND naredba koja se izvrÅ¡i prije ispisa primarnoga prompta\n" +" PS1 string koji opisuje primarni prompt\n" +" PS2 string koji opisuje sekundarni prompt (zadano, „>“)\n" +" PWD puni naziv staze trenutnog radnoga direktorija\n" +" SHELLOPTS popis svih omogućenih opcija ljuske\n" +" TERM naziv vrste trenutnog terminala\n" +" TIMEFORMAT pravilo za format ispisa „time“ statistika\n" +" auto_resume ako nije prazan, uÄini da se naredbena rijeÄ na " +"naredbenom\n" +" retku prvo potraži na popisu obustavljenih poslova,\n" +" i ako se tamo pronaÄ‘e, taj se posao premjesti u\n" +" interaktivni mÈd; vrijednost „exact“ znaÄi da naredbena\n" +" rijeÄ mora strikno podudariti naredbu iz popisa;\n" +" vrijednost „substring“ znaÄi da naredbena rijeÄ mora\n" +" podudariti podstring naredbe iz popisa; bilo koja druga\n" +" vrijednost znaÄi da naredbena rijeÄ mora biti prefiks\n" +" obustavljene naredbe\n" +" histchars znakovi koje upravljaju s proÅ¡irenjem i brzom " +"supstitucijom\n" +" povijesti; prvi znak je znak za „supstituciju\n" +" povijesti“, obiÄno „!“; drugi znak je „znak brze\n" +" supstitucije“, obiÄno „^“; treći znak je „komentar\n" +" povijesti“, obiÄno „#“.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Doda direktorije na snop.\n" +"\n" +" Doda direktorij na vrh snopa direktorija ili zarotira snop tako da\n" +" uÄini novi vrh snopa trenutnim radnim direktorijem. Bez argumenata\n" +" razmijeni pozicije dva direktorija na vrhu snopa.\n" +"\n" +" Opcije:\n" +" -n izostavi uobiÄajenu promjenu direktorija kÈd dodaje\n" +" direktorije u snop, odnosno samo manipulira sa snopom\n" +"\n" +" Argumenti:\n" +" DIREKTORIJ Doda DIREKTORIJ na vrh snopa direktorija i\n" +" uÄini ga novim aktualnim radnim direktorijem.\n" +" +N Zarotira snop tako, da N-ti direktorij u snopu (brojeći od nule " +"s\n" +" lijeve strane popisa prikazanoga s „dirs“) postane novi vrh " +"snopa.\n" +" -N Zarotira snop tako, da N-ti direktorij u snopu (brojeći od nule " +"s\n" +" desne strane popisa prikazanoga s „dirs“) postane novi vrh " +"snopa.\n" +"\n" +" Naredba „dirs“ prikaže trenutni sadržaj snopa direktorija.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n" +" ili nije uspjela promjena direktorija." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Ukloni direktorije iz snopa.\n" +"\n" +" Ukloni direktorije iz snopa direktorija. Bez argumenata, ukloni\n" +" direktorij na vrhu snopa i premjesti se u novi najviÅ¡i direktorij.\n" +"\n" +" Opcije:\n" +" -n izostavi uobiÄajenu promjenu direktorija kÈd uklanja\n" +" direktorije iz snopa, odnosno samo manipulira sa snopom\n" +"\n" +" Argumenti:\n" +" +N Ukloni da N-ti direktorij iz snopa brojeći od nule s lijeve\n" +" strane popisa prikazanoga s „dirs“. Na primjer: „popd +0“\n" +" ukloni prvi, a „popd +1“ ukloni drugi direktorij.\n" +" +N Ukloni da N-ti direktorij iz snopa brojeći od nule s desne\n" +" strane popisa prikazanoga s „dirs“. Na primjer.: „popd -0“\n" +" ukloni zadnji, a „popd -1“ ukloni predzadnji direktorij.\n" +"\n" +" Naredba „dirs“ prikaže trenutni sadržaj snopa direktorija.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n" +" ili nije uspjela promjena direktorija." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"IspiÅ¡e sadržaj snopa direktorija.\n" +"\n" +" Pokaže popis trenutno zapamćenih direktorija. Direktoriji se unose\n" +" na popis pomoću naredbe „pushd“, a s naredbom „popd“ se uklanjaju.\n" +" \n" +" Opcije:\n" +" -c poÄisti snop direktorija brisanjem svih elemenata\n" +" -l ispiÅ¡e apsolutne staze direktorija u odnosu na osobni\n" +" direktorij (ne skraćuje staze upotrebom tilde)\n" +" -p ispiÅ¡e sadržaj snopa po jedan direktorij po retku\n" +" -v kao „-p“, ali s prefiksom koji pokazuje\n" +" poziciju direktorija snopu\n" +"\n" +" Argumenti:\n" +" +N Pokaže N-ti direktorij iz snopa, brojeći od od nule s\n" +" lijeve strane popisa kÈd se „dirs“ pokrene bez opcija.\n" +" -N Pokaže N-ti direktorij iz snopa, brojeći od nule s\n" +" desne strane popisa kÈd se „dirs“ pokrene bez opcija.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greÅ¡ka." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"UkljuÄi ili iskljuÄi opcije ljuske.\n" +"\n" +" Promjeni postavku svakoj opciji ljuske IME_OPCIJE. Bez ikakvih opcija i\n" +" argumenta, „shopt“ izlista sve opcije ljuske pokazujući je li, ili nije\n" +" ukljuÄena.\n" +"\n" +" Opcije:\n" +" -o ograniÄi IME_OPCIJE na ona koja su definirana\n" +" za upotrebu sa „set -o“\n" +" -p generira izlaz koji se može koristi za ulaz\n" +" -q izostavi izlaz (niÅ¡ta ne ispisuje)\n" +" -s omogući (ukljuÄi) sve dȃne IME_OPCIJE\n" +" -u onemogući (iskljuÄi) sve dȃne IME_OPCIJE\n" +"\n" +" Bez opcija (ili samo s „-q“ opcijom) ZavrÅ¡i s kÈdom 0 ako je IME_OPCIJE\n" +" ukljuÄeno, a s 1 ako je iskljuÄeno. ZavrÅ¡i takoÄ‘er s 1 ako je dȃno\n" +" nevaljano ime opcije, a zavrÅ¡i s 2 ako je dȃna nevaljana opcija." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Oblikuje ispis ARGUMENATA prema pravilima FORMATA.\n" +"\n" +" IspiÅ¡e dane ARGUMENTE u danom FORMATU.\n" +"\n" +" Opcije:\n" +" -v VARIJABLA preusmjeri (dodijeli) izlaz (ispis) u VARIJABLU\n" +" umjesto na standardni izlaz\n" +"\n" +" FORMAT je znakovni string koji sadrži tri vrste objekta:\n" +" obiÄne znakove koji se jednostavno kopiraju na izlaz; kontrolne znakove\n" +" (maskirane sekvencije) koji se pretvore i kopiraju na izlaz; i\n" +" specifikacije formata od kojih svaka uzrokuje ispisivanje sljedećeg\n" +" sukcesivnoga argumenta.\n" +"\n" +" Pored standardnih simbola za format opisanih u printf(1),\n" +" printf dodatno interpretira:\n" +" %b proÅ¡iri maskirane sekvencije s obratnom kosom crtom\n" +" (backslash escape sequences) u relevantim argumentima\n" +" %q citira argument tako, da se može iskoristiti kao ulaz\n" +" %(fmt)T ispis vremena rezultira upotrebom FMT kao\n" +" format stringa za strftime(3)\n" +"\n" +" Dani format se koristi sve dok se ne potroÅ¡e svi argumenti. Ako ima\n" +" manje od oÄekivanoga broja argumenata, suviÅ¡ne format specifikacije\n" +" se ponaÅ¡aju kao da im je vrijednost nula, ili prazni string.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dana nevaljana opcija\n" +" ili se dogodila greÅ¡ka u pisanju ili greÅ¡ka pri dodijeli." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Specificira kako „readline“ treba kompletirati argumente.\n" +"\n" +" Za svako dȃno IME specificira kako se kompletiraju argumenti. Bez\n" +" dȃnih opcija ispiÅ¡e postojeće specifikacije koje se mogu ponovno\n" +" iskoristiti kao ulaz.\n" +"\n" +" Opcije:\n" +" -p ispiÅ¡e postojeće specifikacije kompletiranja u formatu\n" +" upotrebljivom za ulaz\n" +" -r ukloni specifikaciju kompletiranja za svako dȃno IME\n" +" ili ukloni sve specifikacije ako nisu dȃna IMENA\n" +" -D na naredbe koje nemaju vlastitu specifikaciju za kompletiranje\n" +" primjeni „zadano“ ponaÅ¡anje specifikacija i akcija\n" +" -E primjeni zadano ponaÅ¡anje specifikacija i akcija i na „prazne“\n" +" naredbe --; pokuÅ¡a kompletirati prazni redak\n" +" -I primjeni zadano ponaÅ¡anje specifikacija i akcija i na poÄetnu\n" +" (obiÄno naredbu) rijeÄ\n" +"\n" +" Redoslijed akcija pri pokuÅ¡aju kompletiranja slijedi gore dȃni poredak\n" +" opcija pisanih u verzalu. Opcija „-D“ ima veći prioritet od opcije „-" +"E“.\n" +" a obje imaju veći prioritet od opcije „-I“\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greÅ¡ka." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Prikaže moguća kompletiranja ovisno o opcijama.\n" +"\n" +" „compgen“ je namijenjen za upotrebu unutar funkcije koja generira\n" +" moguća kompletiranja. Ako je dȃna neobvezna opcija RIJEÄŒ, generira\n" +" samo moguća kompletiranja podudarna s opcijom RIJEÄŒ.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greÅ¡ka." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Izmjena ili prikaz opcija za kompletiranje.\n" +"\n" +" Izmijenite opcije kompletiranja za svako IME u skladu s opcijama,\n" +" ili za kompletiranje koje se trenutno vrÅ¡i ako nisu dȃna IMEna.\n" +" Ako nema opcija, ispiÅ¡u se opcije kompletiranja za svako IME ili\n" +" za trenutno kompletiranje.\n" +"\n" +" Opcije:\n" +" -o OPCIJA ovu OPCIJU kompletiranja postavi za svako IME\n" +" -D promijeni opcije za kompletiranje „zadanih“ naredba\n" +" -E promijeni opcije za kompletiranje „praznih“ naredba\n" +" -I promijeni opcije za kompletiranje za poÄetnu rijeÄ\n" +"\n" +" „+“ umjesto „-“ iskljuÄi odgovarajuću opciju.\n" +"\n" +" Svako IME ukazuje na naredbu za koju specifikacija kompletiranja mora\n" +" već prije biti definirana pomoću ugraÄ‘ene naredbe „complete“. Ako nije\n" +" dȃno nijedno IME, funkcija koja trenutno generira kompletiranja mora\n" +" pozvati „compopt“; time se onda promjene opcije za taj generator koji\n" +" trenutno izvrÅ¡ava kompletiranja.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako nije dȃna nevaljana opcija\n" +" ili nije definirana specifikacija za kompletiranje IMEna." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Mapira proÄitane retke iz standardnoga ulaza u varijablu tipa polje.\n" +"\n" +" UÄitane retke iz standardnoga ulaza mapira u indeksiranu varijablu " +"POLJE.\n" +" Ako nema argumenta POLJE, koristi se (zadano) varijabla MAPFILE.\n" +"\n" +" Opcije:\n" +" -d MEÄA prvi znak u MEÄI (umjesto LF) je znak za kraj retka\n" +" -n BROJ kopira ne viÅ¡e od BROJ redaka (0 znaÄi sve retke)\n" +" -O POÄŒETAK mapiranje zapoÄinje s indeksom POÄŒETAK (zadano 0)\n" +" -s BROJ preskoÄi (izostavi) prvih BROJ redaka\n" +" -t ukloni zaostalu MEÄU (zadano LF) iz svakog uÄitanoga " +"retka\n" +" -u FD Äita retke iz FD (deskriptora datoteke) umjesto iz stdin\n" +" -C FUNKCIJA evaluira FUNKCIJU nakon svako TOLIKO proÄitanih redaka\n" +" -c TOLIKO nakon svako TOLIKO proÄitanih redaka pozove FUNKCIJU\n" +"\n" +" Argument:\n" +" POLJE ime varijable polja u koju se mapiraju proÄitani redci\n" +"\n" +" Ako je opcija „-C“ dȃna bez opcije „-c“, TOLIKO je 5000 (zadano).\n" +" KÈd FUNKCIJA evaluira — dobiva indeks sljedećeg elementa polja koji se\n" +" mapira i redak koji će biti dodijeljen tom elementu — kao dodatne " +"argumente.\n" +"\n" +" Ako nije dȃni eksplicitni POÄŒETAK, „mapfile“ poÄisti polje\n" +" prije poÄetka mapiranja.\n" +"\n" +" ZavrÅ¡i s kÈdom 0 osim ako je POLJE readonly (samo-za-Äitanje)\n" +" ili nije polje; ili je dȃna nevaljana opcija." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"UÄita retke iz datoteke u varijablu tipa indeksirano polje.\n" +"\n" +" Sinonim za „mapfile“." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Vraća kontekst od trenutnog poziva funkciji.\n" +#~ " \n" +#~ " Bez EXPR, rezultati " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process(): proces %5ld (%s) u cjevovodu" + +#~ msgid "Unknown Signal #" +#~ msgstr "Nepoznati signal #" + +#~ msgid "Copyright (C) 2018 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2018 Free Software Foundation, Inc." + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licenca GPLv2+: GNU GPL inaÄica 2 ili novija \n" + +#~ msgid ":" +#~ msgstr ":" diff --git a/bash-5.1/po/hu.gmo b/bash-5.1/po/hu.gmo new file mode 100644 index 0000000000000000000000000000000000000000..08cb511553cc7d48bde3d1f89111a15e50a579cc GIT binary patch literal 161293 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 LO=5bnOJM#7>a!=8 literal 0 HcmV?d00001 diff --git a/bash-5.1/po/hu.po b/bash-5.1/po/hu.po new file mode 100644 index 0000000..972911d --- /dev/null +++ b/bash-5.1/po/hu.po @@ -0,0 +1,5850 @@ +# Hungarian translation for bash. +# Copyright (C) 2010, 2016, 2017, 2019 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# +# Mate Ory , 2010, 2016. +# Gabor Kelemen , 2016. +# Balázs Úr , 2017, 2019. +msgid "" +msgstr "" +"Project-Id-Version: bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-11-16 17:58+0100\n" +"Last-Translator: Balázs Úr \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 19.04.3\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "hibás tömbindex" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: névhivatkozás attribútum eltávolítása" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: nem lehetséges az indexelt tömb asszociatívvá alakítása" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: érvénytelen asszociatívtömb-index" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: a nem-szám indexnek való értékadás nem lehetséges" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: asszociatív tömbhöz való értékadásnál meg kell adni az indexet" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nem hozható létre: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: nem található billentyűkiosztás a parancshoz" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: az elsÅ‘ nem szóközkarakter nem „\"â€" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "nincs záró „%c†a következÅ‘ben: %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: hiányzó kettÅ‘spont-elválasztó" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "„%sâ€: nem lehetséges a kötés megszüntetése" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "szögleteszárójel-kiegészítés: Nem foglalható memória ehhez: %s" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" +"szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás %u elem számára" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" +"szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás „%s†számára" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "„%sâ€: érvénytelen alias-név" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "nincs engedélyezve a sorszerkesztés" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%sâ€: érvénytelen billentyűkiosztás-név" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nem olvasható a következÅ‘: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "„%sâ€: ismeretlen függvénynév" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s nincs kötve egy billentyűhöz sem.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s a következÅ‘ módon hajtható végre: " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%sâ€: nem lehetséges a kötés megszüntetése" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "ciklusszám" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "csak „forâ€, „while†és „until†ciklusokban értelmezhetÅ‘" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Az aktuális szubrutinhívás környezetének visszaadása.\n" +" \n" +" KIF nélkül \"$sor $fájlnév\" formátumú eredményt ad. A KIF-fel pedig\n" +" \"$sor $szubrutin $fájlnév\" formátumút; ez hasznos lehet stack trace\n" +" kiírásához.\n" +" \n" +" Az EXPR értéke azt adja meg, hogy a jelenlegihez képest milyen mélyre\n" +" lépjen vissza; a verem tetején a 0-s keret van.\n" +" \n" +" Kilépési kód:\n" +" 0-val tér vissza, ha érvényes a KIF és valóban függvényt hajt végre a\n" +" parancsértelmezÅ‘." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "Nincs beállítva HOME" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "túl sok argumentum" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "null könyvtár" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "Nincs beállítva OLDPWD" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "%d. sor: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "figyelmeztetés: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: használat: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: a kapcsolónak kötelezÅ‘ argumentuma van" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: a kötelezÅ‘ argumentum egy szám" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: nem található" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: érvénytelen kapcsoló" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: érvénytelen kapcsolónév" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "„%sâ€: érvénytelen azonosító" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "érvénytelen oktális szám" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "érvénytelen hexadecimális szám" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "érvénytelen szám" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: érvénytelen szignálmegadás" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "„%sâ€: nem pid vagy munkaazonosító" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: csak olvasható változó" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s kívül esik a tartományon" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argumentum" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s kívül esik a tartományon" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: nincs ilyen munka" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: nincs munkakezelés" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "nincs munkakezelés" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: korlátozott" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "korlátozott" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: nem beépített parancs" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "írási hiba: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "hiba a terminálattribútum beállításakor: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "hiba a terminálattribútum lekérdezésekor: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: hiba a munkakönyvtár lekérdezésekor: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: kétértelmű munkamegadás" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "ebben a verzióban nem érhetÅ‘ el súgó" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nem szüntethetÅ‘ meg: csak olvasható %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: nem szüntethetÅ‘ meg" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: érvénytelen műveletnév" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: nincs kiegészítés meghatározva" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "figyelmeztetés: a -F kapcsoló nem a várt módon működhet" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "figyelmeztetés: a -C kapcsoló nem a várt módon működhet" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "jelenleg nincs kiegészítési függvény végrehajtás alatt" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "csak függvényben használható" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: a referenciaváltozó nem lehet tömb" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: a névhivatkozás változó önhivatkozása nem engedélyezett" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: körkörös névhivatkozás" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "„%sâ€: érvénytelen változónév a névhivatkozáshoz" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "nem használható a „-f†függvény létrehozására" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: csak olvasható függvény" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: az idézÅ‘jelezett összetett tömb értékadása elavult" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: ilyen módon nem lehet tömböt megszüntetni" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: nem lehetséges az asszociatív tömb indexeltté alakítása" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "a dinamikus betöltés nem érhetÅ‘ el" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "megosztott objektumfájl megnyitása sikertelen: %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "%s nem található a(z) %s megosztott objektumfájlban: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: nem dinamikusan van betöltve" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "%s betöltési függvénye hibát ad vissza (%d): nincs betöltve" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: nem dinamikusan van betöltve" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nem törölhetÅ‘: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s egy könyvtár" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: nem normál fájl" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: a fájl túl nagy" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: bináris nem hajtható végre" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nem hajtható végre: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "kijelentkezés\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "nem bejelentkezÅ‘ parancsértelmezÅ‘: használja az „exitâ€-et" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Vannak leállított munkák.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Vannak futó munkák.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "nincs ilyen parancs" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "elÅ‘zményválasztás" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: az átmeneti fájl nem nyitható meg: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "aktuális" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "a(z) %d. munka munkakezelés nélkül indult" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: érvénytelen kapcsoló – %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a kapcsolónak kötelezÅ‘ argumentuma van – %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "a hashelés le van tiltva" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: a hashtábla üres\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "t.szám\tparancs\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "A következÅ‘ kifejezésre illeszkedÅ‘ parancsok: „" +msgstr[1] "A következÅ‘ kifejezésekre illeszkedÅ‘ parancsok: „" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"nem illeszkedik egy szócikk sem a következÅ‘re: „%sâ€.\n" +"A „help helpâ€, „man -k '%s'†vagy „info '%s'†parancsok segíthetnek." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nem nyitható meg: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Ezek a parancsok be vannak építve a parancsértelmezÅ‘be. A „help†parancs\n" +"listázza Å‘ket. A „help név†a „név†parancsról tájékoztat. Az „info bashâ€\n" +"paranccsal általános információt kap a parancsértelmezÅ‘rÅ‘l. A listán nem\n" +"található parancsokról a „man -k†vagy az „info†adhat felvilágosítást.\n" +"\n" +"A parancs nevét követÅ‘ csillag (*) azt jelzi, hogy le van tiltva.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "a következÅ‘ kapcsolók kizárják egymást: -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "elÅ‘zménypozíció" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: érvénytelen idÅ‘bélyeg" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: sikertelen elÅ‘zménybÅ‘l való kiegészítés" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: sikertelen inlib" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "a „-x†mellett nem használható más kapcsoló" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: az argumentumok folyamat- vagy munkaazonosítók lehetnek" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Ismeretlen hiba" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "az értelmezÅ‘ kifejezést várt" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: nem egy indexelt tömb" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: érvénytelen fájlleíró-megadás" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: érvénytelen fájlleíró: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: sorok száma érvénytelen" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: érvénytelen tömbkezdet" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: érvénytelen parancshívási távolság" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "üres tömbváltozó-név" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "a tömbök használata nincs támogatva" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "„%sâ€: hiányzó formátumkarakter" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "„%câ€: érvénytelen idÅ‘formátum-megadás" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%câ€: érvénytelen formátumkarakter" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "figyelmeztetés: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "formátumfeldolgozási probléma: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "hiányzó hexadecimális számjegy a következÅ‘höz: \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "hiányzó unicode számjegy a következÅ‘höz: \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "nincs másik könyvtár" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: érvénytelen argumentum" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "a könyvtárverem üres" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "könyvtárveremindex" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Megjeleníti a jelenleg megjegyzett könyvtárakat. A könyvtárakat a\n" +" „pushd†paranccsal lehet a verembe rakni; és a „popd†paranccsal " +"kivenni.\n" +" \n" +" Kapcsolók:\n" +" -c\ta könyvtárverem törlése az összes elem eltávolításával\n" +" -l\ta saját könyvtárat ne rövidítse a listázáskor egy tilde (~)\n" +" -p\ta könyvtárverem kiírása soronként egy elemmel\n" +" -v\ta könyvtárverem kiírása soronként egy elemmel, a vermen\n" +" \tbelüli pozíció jelölésével\n" +" \n" +" Argumentumok:\n" +" +N\tN darab bejegyzést jelenít meg az argumentum nélkül a dirs\n" +" \táltal megjelenített listán balról számolva, nullától kezdve.\n" +" -N\tN darab bejegyzést jelenít meg az argumentum nélkül a dirs\n" +" \táltal megjelenített listán jobbról számolva, nullától kezdve." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Egy könyvtárat tesz a könyvtárverem tetejére, vagy forgatja a vermet,\n" +" az új felsÅ‘ elemmé a jelenlegi munkakönyvtárat téve. Argumentumok\n" +" nélkül hívva a két felsÅ‘ könyvtárat cseréli meg.\n" +" \n" +" Kapcsolók:\n" +" -n\tNe váltson könyvtárat hozzáadáskor, vagyis csak a\n" +" \tvermet változtassa.\n" +" \n" +" Argumentumok:\n" +" +N\tÚgy forgatja a vermet, hogy az N-edik könyvtár (0-tól\n" +" \tkezdve, a „dirs†által kiírt listán balról számolva)\n" +" \tkerüljön a verem tetejére.\n" +" \n" +" -N\tÚgy forgatja a vermet, hogy az N-edik könyvtár (0-tól\n" +" \tkezdve, a „dirs†által kiírt listán jobbról számolva)\n" +" \tkerüljön a verem tetejére.\n" +" \n" +" dir\tA verem tetejére helyezi KTÃR könyvtárat, és ugyanezt\n" +" \tállítja be új munkakönyvtárnak.\n" +" \n" +" A „dirs†beépített parancs listázza a könyvtárvermet." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Elemeket vesz ki a könyvtárverembÅ‘l. Argumentumok nélkül kiveszi a\n" +" legfelsÅ‘ elemet, és a kivett elemre állítja az új munkakönyvtárat.\n" +" \n" +" Kapcsolók:\n" +" -n\tNe váltson könyvtárat eltávolításkor, vagyis csak a vermet\n" +" \tváltoztassa.\n" +" \n" +" Argumentumok:\n" +" +N\tEltávolítja az N-edik elemet a „dirs†által kiírt listán,\n" +" \tnullától, balról számolva. Pl. a „popd +0†az elsÅ‘, míg a\n" +" \t„popd +1†a második könyvtárat távolítja el.\n" +" -N\tEltávolítja az N-edik elemet a „dirs†által kiírt listán,\n" +" \tnullától, jobbról számolva. Pl. a „popd -0†az utolsó,\n" +" \ta „popd -1†az utolsó elÅ‘tti könyvtárat távolítja el.\n" +" \n" +" A „dirs†beépített parancs listázza a könyvtárvermet." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: érvénytelen idÅ‘korlát-megadás" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "olvasási hiba: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"csak függvénybÅ‘l vagy source-olt parancsfájlból lehet „returnâ€-nel " +"visszatérni" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "nem lehet egyszerre függvényt és változót megszüntetni" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: nem egy tömbváltozó" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: nem függvény" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: nem exportálható" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "shift-szám" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "" +"nem lehet egyszerre beállítani és törölni parancsértelmezÅ‘-beállításokat" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: érvénytelen parancsértelmezÅ‘kapcsoló-név" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "fájlnévargumentum szükséges" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: a fájl nem található" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "nem lehet szüneteltetni" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "nem lehet bejelentkezÅ‘ parancsértelmezÅ‘t szüneteltetni" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s egy alias a következÅ‘re: „%sâ€\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s egy parancsértelmezÅ‘-kulcsszó\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s egy függvény\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s egy speciális beépített parancs\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s egy beépített parancs\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s: %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s hashelve van (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: érvénytelen korlátérték" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "„%câ€: érvénytelen parancs" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: nem kérdezhetÅ‘ le a korlát: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "korlát" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: nem módosítható a korlát: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "oktális szám" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%câ€: érvénytelen szimbolikus módoperátor" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%câ€: érvénytelen szimbolikus módkarakter" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " sor: " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "utolsó parancs: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Megszakítás..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:462 +msgid "unknown command error" +msgstr "hiba: érvénytelen parancs" + +#: error.c:463 +msgid "bad command type" +msgstr "hibás parancstípus" + +#: error.c:464 +msgid "bad connector" +msgstr "hibás csatlakozó" + +#: error.c:465 +msgid "bad jump" +msgstr "hibás ugrás" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: kötetlen változó" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aidÅ‘túllépés bemenetre várva: automatikus kijelentkezés\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "szabványos bemenet /dev/null-ra állítása sikertelen: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "IDÅFORMÃTUM: „%câ€: érvénytelen formátumkarakter" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: a coproc [%d:%s] még mindig létezik" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "hibás csÅ‘vezeték" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: a maximális eval beágyazási szint túllépve (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: a maximális source beágyazási szint túllépve (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: a maximális függvénybeágyazási szint túllépve (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: korlátozott: nem adható meg „/†a parancsok nevében" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: parancs nem található" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: rossz parancsértelmezÅ‘" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: a bináris nem hajtható végre: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "„%sâ€: egy speciális beépített parancs" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "nem lehet duplikálni a(z) %d. fájlleírót a(z) %d. helyre" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "a kifejezés rekurziókorlátot" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "alulcsordult a rekurziós verem" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "szintaktikai hiba a kifejezésben" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "nem változóhoz próbált értéket rendelni" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "szintaktikai hiba a változó-értékadásban" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "0-val osztás" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "bug: rossz expassign token" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "„:†egy feltételkifejezés szükséges" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "0-nál kisebb kitevÅ‘" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "prefix növelés vagy csökkentés után azonosító kell következzen" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "hiányzó „)â€" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "szintaktikai hiba: operandus kell következzen" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "szintaktikai hiba: érvénytelen aritmetikai operátor" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (hibás token: „%sâ€)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "érvénytelen számrendszer" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: sorok száma érvénytelen" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "túl nagy érték a számrendszerhez" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: hibás kifejezés\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: nem érhetÅ‘ek el a szülÅ‘könyvtárak" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "nem lehet újraindítani a nodelay módot a(z) %d. fájlleíróhoz" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"nem lehet új fájlleírót foglalni a bash bemenetéhez a(z) %d. fájlleíróból" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: már van puffer a(z) %d. fájlleíróhoz" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp csÅ‘vezeték" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "a(z) %d számú forkolt pid a(z) %d számú munkában jelent meg" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "%d. számú megállított munka törlése a %ld számú folyamatcsoporttal" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: %5ld. folyamat (%s) még élÅ‘ként van jelölve" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: nincs ilyen pid" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "%d. szignál" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Kész" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Megállítva" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Megállítva(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Fut" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Kész(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Kilépett(%d)" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Ismeretlen állapot" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(core készült) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (mk: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "gyermek setpgid (innen: %ld ide: %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: %ld. számú folyamat nem gyermeke ennek a parancsértelmezÅ‘nek" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Nincs bejegyzés %ld. számú folyamatról" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: %d. számú munka le lett állítva" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: nincs ilyen munka" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: a munka be lett fejezve" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: %d. számú munka már a háttérben van" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: WNOHANG bekapcsolása a korlátlan blokk elkerülésére" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: %d. sor: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (core készült)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(mk most: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp sikertelen" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: nincs munkakezelés a háttérben" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "nem állítható be a terminál folyamatcsoportja (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "nincsen munkakezelés ebben a parancsértelmezÅ‘ben" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: nem teljesülÅ‘ feltételezés: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: téves feltételezés\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "ismeretlen" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: a szabadlistán lévÅ‘ blokk felülírva" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: már felszabadított blokkal lett hívva" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: nem lefoglalt blokkal lett hívva" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: kezdÅ‘- és záródarab mérete eltér" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: nem lefoglalt blokkal lett hívva" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: kezdÅ‘- és záródarab mérete eltér" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: foglalótábla tele van FIND_ALLOC-kal?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p már a táblában lefoglaltként?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p már a táblában szabadként?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "érvénytelen számrendszer" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: ismeretlen gépnév" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: érvénytelen szolgáltatás" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: hibás hálózatiútvonal-megadás" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "a hálózati műveletek nincsenek támogatva" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Levél a következÅ‘ben: $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Új levél a következÅ‘ben: $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "A(z) „%s†helyen lévÅ‘ levél el van olvasva\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "szintaktikai hiba: aritmetikai kifejezés szükséges" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "szintaktikai hiba: váratlan „;â€" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "szintaktikai hiba: „((%s))â€" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: hibás utasítástípus: %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "a(z) %d. sorban kezdett heredocot EOF zárja („%s†helyett)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: %d. átirányító utasítás kívül esik a tartományon" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: a shell_input_line_size (%zu) meghaladja a MÉRET_MAXIMUM értékét " +"(%lu): a sor csonkolva" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "a maximális here-document szám túllépve" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "váratlan EOF „%c†helyett" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "váratlan EOF „]]†helyett" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "szintaktikai hiba a feltételben: váratlan token: „%sâ€" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "szintaktikai hiba a feltételben" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "váratlan token (%s) „)†helyett" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "„)†szükséges" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "váratlan argumentum (%s) feltételes egyoperandusú operátorhoz" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "váratlan argumentum feltételes egyoperandusú operátorhoz" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "váratlan token (%s), feltételes kétoperandusú operátor szükséges" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "feltételes kétoperandusú operátor szükséges" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "váratlan argumentum (%s) feltételes kétoperandusú operátorhoz" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "váratlan argumentum feltételes kétoperandusú operátorhoz" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "váratlan token (%c) feltételes parancsban" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "váratlan token (%s) feltételes parancsban" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "váratlan token (%d) feltételes parancsban" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "szintaktikai hiba „%s†váratlan token közelében" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "szintaktikai hiba „%s†közelében" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "szintaktikai hiba: váratlan fájlvége" + +#: parse.y:6365 +msgid "syntax error" +msgstr "szintaktikai hiba" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "„%s†használatával lehet elhagyni a parancsértelmezÅ‘t.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "váratlan EOF „)†helyett" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "kiegészítés: nem található „%s†függvény" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: lehetséges újrapróbálási hurok" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: hibás csatlakozó (%d)" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: érvénytelen fájlleíró" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: NULL fájlmutató" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: „%câ€: érvénytelen formátumkarakter" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "fájlleíró kívül esik a tartományon" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: kétértelmű átirányítás" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: nem lehet felülírni létezÅ‘ fájlt" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: korlátozott: nem lehet átirányítani a kimenetet" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "nem lehet a heredocnak átmeneti fájlt létrehozni: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: nem lehet változóhoz fájlleírót rendelni" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port nincs támogatva hálózat nélkül" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "átirányítási hiba: nem lehet duplikálni a fájlleírót" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "nem található /tmp, hozza létre!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp érvényes könyvtárnév kell legyen" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "a csinos kiírási mód mellÅ‘zve van interaktív az parancsértelmezÅ‘kben" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: érvénytelen kapcsoló" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "az uid nem állítható be %d értékre: a hatásos uid %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "a gid nem állítható be %d értékre: a hatásos gid %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "nem indítható el a hibakeresÅ‘; a hibakeresési mód letiltva" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: ez egy könyvtár" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Nincs nevem!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, %s-(%s) verzió\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Használat:\t%s [GNU hosszú kapcsoló] [kapcsoló] ...\n" +"\t%s [GNU hosszú kapcsoló] [kapcsoló] parancsfájl ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU hosszú kapcsolók:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "ParancsértelmezÅ‘-kapcsolók:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD vagy -c parancs vagy -O shopt_option\t\t(csak hívás)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s vagy -o kapcsoló\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"A „%s -c \"help set\"†további információt ad a parancsértelmezÅ‘-" +"beállításokról.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "A „%s -c help†további információt ad a beépített parancsokról.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "A „bashbug†paranccsal jelenthet hibákat.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "a bash honlapja: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Ãltalános segítség a GNU szoftverek használatához: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: érvénytelen művelet" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Hibás szignál" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Bontás" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Megszakítás" + +#: siglist.c:58 +msgid "Quit" +msgstr "Abbahagyás" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Érvénytelen utasítás" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ABORT utasítás" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT utasítás" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "LebegÅ‘pontos kivétel" + +#: siglist.c:86 +msgid "Killed" +msgstr "KilÅ‘ve" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Buszhiba" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Szegmenshiba" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Rossz rendszerhívás" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Törött csÅ‘vezeték" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Ébresztés" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Befejezve" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "SürgÅ‘s IO körülmény" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Megállítva (szignál)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Folytatás" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Gyermek halála vagy megállítása" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Megállítva (konzolbemenet)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Megállítva (konzolkimenet)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "IO kész" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU-korlátozás" + +#: siglist.c:154 +msgid "File limit" +msgstr "Fájlkorlátozás" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Ébresztés (virtuális)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Ébresztés (profilozás)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Ablak változott" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Elveszett zárolás" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Felhasználói 1." + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Felhasználói 2." + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT bemeneti adat vár" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "táphiba fenyeget" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "rendszerleállás fenyeget" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "folyamat átvitele másik CPU-ra" + +#: siglist.c:198 +msgid "programming error" +msgstr "programozási hiba" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT monitor mód megadva" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT monitor mód visszavonva" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT hangfolyamat befejezve" + +#: siglist.c:214 +msgid "Information request" +msgstr "Információkérés" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "%d. számú ismeretlen szignál" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "hibás helyettesítés: nincs záró „%s†a következÅ‘ben: %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: lista nem adható tömbelemnek értékül" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "nem hozható létre a csÅ‘vezeték a folyamatbehelyettesítéshez" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "nem hozható létre a gyermek a folyamatbehelyettesítéshez" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "nem nyitható meg olvasásra a(z) %s csÅ‘vezeték" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "nem nyitható meg írásra a(z) %s csÅ‘vezeték" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "nem duplikálható a(z) %s csÅ‘vezeték %d. fájlleíróként" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "parancshelyettesítés: figyelmen kívül hagyott null bájt a bemeneten" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "nem hozható létre csÅ‘vezeték a parancsbehelyettesítéshez" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "nem hozható létre gyermek a parancsbehelyettesítéshez" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: nem duplikálható a csÅ‘vezeték 1. fájlleíróként" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: érvénytelen változóérték a névhivatkozáshoz" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: az indirekt kiegészítés érvénytelen" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: érvénytelen változónév" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: a paraméter nincs beállítva" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: a paraméter null vagy nincs beállítva" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: részkarakterlánc-kifejezés < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: rossz helyettesítés" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: nem lehet így értéket adni" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"a parancsértelmezÅ‘ késÅ‘bbi verziói kötelezÅ‘vé teszik majd az aritmetikai " +"kiértékelést" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "hibás helyettesítés: nincs záró „`†a következÅ‘ben: %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "nincs találat: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "argumentum szükséges" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: egész kifejezés szükséges" + +#: test.c:265 +msgid "`)' expected" +msgstr "„)†szükséges" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "„)†szükséges %s helyett" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: kétoperandusú operátor szükséges" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: egyoperandusú operátor szükséges" + +#: test.c:881 +msgid "missing `]'" +msgstr "hiányzó „]â€" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "szintaktikai hiba: váratlan „;â€" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "érvénytelen szignálszám" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "elfogáskezelÅ‘: a legnagyobb elfogáskezelÅ‘-szint túllépve (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: rossz érték a trap_list[%d]-ban: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: szignálkezelÅ‘ a SIG_DFL, %d (%s) újraküldése önmagunknak" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: rossz szignál: %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "hiba a függvénydefiníció betöltésekor: „%sâ€" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "a parancsértelmezÅ‘ szintje (%d) túl magas, visszaállítás 1-re" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: nincs függvénykörnyezet az aktuális látókörben" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: nem lehet a változóhoz értéket rendelni" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: egész szám hozzárendelése a névhivatkozáshoz" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: nincs függvénykörnyezet az aktuális látókörben" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s exportstr-je null" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "érvénytelen karakter (%d) %s exportstr-jében" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "nincs „=†%s exportstr-jében" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: shell_variables feje nem egy függvénykörnyezet" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: nincs global_variables környezet" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: shell_variables feje nem egy átmeneti környezeti látókör" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: nem nyitható meg FILE-ként" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: érvénytelen érték a trace fájlleíróhoz" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: a kompatibilitási érték kívül esik a tartományon" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"A licenc GPLv3+: a GNU GPL 3. vagy újabb változata\n" +"\n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, %s (%s) verzió\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "NINCS GARANCIA, a törvény által engedélyezett mértékig." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: nem lehetséges %lu byte foglalása (%lu byte lett foglalva)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: nem lehetséges %lu byte foglalása" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d nem lehetséges %lu byte foglalása (%lu byte lett foglalva)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d nem lehetséges %lu byte foglalása" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [név[=érték] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] név [név ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m kiosztás] [-f fájlnév] [-q név] [-u név] [-r billkomb] " +"[-x billkomb:shell-parancs] [billkomb:readline-függvény vagy readline-" +"parancs]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [kif]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [ktár]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] parancs [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [név[=érték] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] név[=érték] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [kapcsoló] név[=érték] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f fájlnév] [név ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts opciók név [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a név] [parancs [argumentumok ...]] [átirányítás ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e ename] [-lnr] [elsÅ‘] [utolsó] vagy fc -s [minta=csere] [parancs]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [munkaszám]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [munkaszám ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p útvonal] [-dt] [név ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [minta ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d szám] [n] vagy history -anrw [fájlnév] vagy history -ps arg " +"[arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [munkaszám ...] vagy jobs -x parancs [args]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [munkaszám ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s szignál | -n szignálszám | -szignál] pid | munkaszám ... vagy kill -" +"l [szignál]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a tömb] [-d elválasztó] [-i szöveg] [-n szám] [-N szám] [-p " +"prompt] [-t idÅ‘keret] [-u fd] [név ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o beállításnév] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [név ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [név[=érték] ...] vagy export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [név[=érték] ...] vagy readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source fájlnév [argumentumok]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". fájlnév [argumentumok]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [kifejezés]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] szignál ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] név [név ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [korlát]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mód]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NÉV [in SZAVAK ... ] ; do PARANCSOK; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( kif1; kif2; kif3 )); do PARANCSOK; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NÉV [in SZAVAK ... ;] do PARANCSOK; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] csÅ‘vezeték" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case SZÓ in [MINTA [| MINTA]...) PARANCSOK ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if PARANCSOK; then PARANCSOK; [ elif PARANCSOK; then PARANCSOK; ]... [ else " +"PARANCSOK; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while PARANCSOK; do PARANCSOK; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until PARANCSOK; do PARANCSOK; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NÉV] parancs [átirányítások]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function név { PARANCSOK ; } vagy név () { PARANCSOK ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ PARANCSOK ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "munkaszám [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( kifejezés ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ kifejezés ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Néhány parancsértelmezÅ‘-változó neve és jelentése" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | ktár]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [optnév ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v változó] formátum [argumentumok]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o beállítás] [-A művelet] [-G " +"globminta] [-W szólista] [-F függvény] [-C parancs] [-X szűrÅ‘minta] [-P " +"prefixum] [-S szuffixum] [név ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o beállítás] [-A művelet] [-G globminta] [-W " +"szólista] [-F függvény] [-C parancs] [-X szűrÅ‘minta] [-P prefixum] [-S " +"szuffixum] [szó]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o beállítás] [-DEI] [név ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d elválasztó] [-n szám] [-O kezdet] [-s szám] [-t] [-u fd] [-C " +"parancs] [-c távolság] [tömb]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d elválasztó] [-n szám] [-O kezdet] [-s szám] [-t] [-u fd] [-C " +"parancs] [-c távolság] [tömb]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Aliasok definiálása vagy kiírása.\n" +" \n" +" Argumentumok nélkül az „alias†kiír egy újrahasználható listát a " +"meglévÅ‘\n" +" aliasokról „alias NÉV=ÉRTÉK' formában a szabványos kimenetre.\n" +" \n" +" Különben egy NÉV nevű aliast definiál ÉRTÉK értékkel. Az ÉRTÉK végén a\n" +" záró szóköz lehetÅ‘vé teszi a következÅ‘ szó számára is az\n" +" aliashelyettesítést.\n" +" \n" +" Kapcsolók:\n" +" -p\tkiír minden aliast a fenti formában\n" +" \n" +" Kilépési kód:\n" +" igazzal tér vissza, kivéve ha nincs megadott NÉV nevű alias definiálva." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Minden NÉV eltávolítása a definiált aliasok közül.\n" +" \n" +" Kapcsolók:\n" +" -a\tminden definíció törlése\n" +" \n" +" Sikeresen tér vissza, kivéve ha nincs megadott NÉV nevű alias." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Readline billentyűkötések és változók beállítása.\n" +" \n" +" Egy billentyűsorozat hozzárendelése Readline függvényhez vagy makróhoz,\n" +" vagy Readline változó beállítása. A beállítás nélküli szintaxis " +"megegyezik\n" +" az ~/.inputrc-ben találhatóval, de kell legyen egy argumentuma:\n" +" pl. bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Kapcsolók:\n" +" -m kiosztás A KIOSZTÃS használata kiosztásként a parancs " +"hatásának\n" +" idejére. Elfogadható kiosztásnevek: emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-\n" +" move, vi-command és vi-insert.\n" +" -l Nevek és függvények listázása.\n" +" -P Függvénynevek és kötések listázása.\n" +" -p Függvények és kötések listázása újrahasználható\n" +" formában.\n" +" -S Makrókat végrehajtó billentyűkombinációk és " +"értékeik\n" +" listázása.\n" +" -s Makrókat végrehajtó billentyűkombinációk és " +"értékeik\n" +" listázása újrahasználható formában.\n" +" -V Változónevek és értékek listázása.\n" +" -v Változónevek és értékek listázása újrahasználható\n" +" formában.\n" +" -q függvénynév A függvényhez tartozó billentyűkombináció " +"lekérése.\n" +" -u függvénynév Össze adott függvényhez tartozó " +"billentyűkombináció\n" +" törlése.\n" +" -r billkomb A BILLKOMB-hoz tartozó kötések törlése.\n" +" -f fájlnév Kötések olvasása FÃJLNÉV fájlból.\n" +" -x billkomb:shell-parancs\tSHELL-PARANCS végrehajtása BILLKOMB-ra.\n" +" -X A -x használatával kötött billentyűkombinációk\n" +" és a társított parancsok kiírása, bemenetként\n" +" újrahasználható formában.\n" +" \n" +" Kilépési kód:\n" +" a bind 0-val tér vissza, ha nincs ismeretlen kapcsoló vagy hiba." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Kilépés a for, while vagy until ciklusokból.\n" +" \n" +" Kilépés egy FOR, WHILE vagy UNTIL ciklusból. Ha N meg van adva, akkor N\n" +" egymásba ágyazott ciklusból lép ki.\n" +" \n" +" Kilépési kód:\n" +" A kilépési kód 0, ha N >= 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"A for, while vagy until ciklus újrakezdése.\n" +" \n" +" A következÅ‘ iterációtól folytatja a FOR, WHILE vagy UNTIL ciklust.\n" +" Ha N meg van adva, akkor N egymásba ágyazott ciklusból lép ki.\n" +" \n" +" Kilépési kód:\n" +" A kilépési kód 0, ha N >= 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Beépített parancsok végrehajtása.\n" +" \n" +" Végrehajtja SHELL-BUILTIN-t ARG argumentumokkal parancskeresés nélkül.\n" +" Ez akkor hasznos, ha felül szeretne definiálni egy beépített parancsot\n" +" függvényként, de ebbÅ‘l meg szeretné hívni az eredeti parancsot.\n" +" \n" +" Kilépési kód:\n" +" Továbbadja a SHELL-BUILTIN kilépési kódját vagy hamissal tér vissza,\n" +" ha nincs ilyen parancs." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Az aktuális szubrutinhívás környezetének visszaadása.\n" +" \n" +" KIF nélkül \"$sor $fájlnév\" formátumú eredményt ad. A KIF-fel pedig\n" +" \"$sor $szubrutin $fájlnév\" formátumút; ez hasznos lehet stack trace\n" +" kiírásához.\n" +" \n" +" Az EXPR értéke azt adja meg, hogy a jelenlegihez képest milyen mélyre\n" +" lépjen vissza; a verem tetején a 0-s keret van.\n" +" \n" +" Kilépési kód:\n" +" 0-val tér vissza, ha érvényes a KIF és valóban függvényt hajt végre a\n" +" parancsértelmezÅ‘." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"A parancsértelmezÅ‘ munkakönyvtárának váltása.\n" +" \n" +" A munkakönyvtár átváltása a KTÃR-ra. Elhagyása esetén a HOME környezeti\n" +" változóban lévÅ‘ könyvtárra vált.\n" +" \n" +" A CDPATH környezeti változó adja meg a KTÃR keresési útvonalait. Az\n" +" útvonalakat kettÅ‘spont (:) választja el. Egy üres könyvtárnév az " +"aktuális\n" +" könyvtárat jelenti. Ha a KTÃR „/†jellel kezdÅ‘dik, a CDPATH értéke\n" +" nincs figyelembe véve.\n" +" \n" +" Ha a könyvtár nem létezik, és a „cdable_vars†parancsértelmezÅ‘-" +"beállítás\n" +" aktív, a KTÃR változónévként lesz használva. Ha a változónak van\n" +" értéke, az lesz KTÃR-értékként használva.\n" +" \n" +" Kapcsolók:\n" +" -L\tszimbolikus linkek szigorú követése\n" +" -P\ta fizikai könyvtárfa használata a szimbolikus linkek követése\n" +" helyett: szimbolikus linkek feloldása a KTÃR-ban a „..†\n" +" \t\telÅ‘fordulásainak feldolgozása elÅ‘tt\n" +" -e\tha a -P kapcsoló meg van adva, és az aktuális munkakönyvtár\n" +" \t\tnem határozható meg sikeresen, kilépés nem nulla állapottal\n" +" -@\taz azt támogató rendszereken a kibÅ‘vített attribútumokkal\n" +" \t\trendelkezÅ‘ fájlok megjelenítése a fájlattribútumokat tartalmazó\n" +" \t\tkönyvtárként\n" +" \n" +" Az alapértelmezett a szimbolikus linkek követése, mintha „-L†lenne\n" +" megadva.\n" +" A „..†feldolgozása a közvetlenül elÅ‘tte lévÅ‘ útvonalnév-összetevÅ‘\n" +" eltávolításával történik, visszamenve egy osztásjelig vagy a KTÃR " +"kezdetéig.\n" +" \n" +" Kilépési kód:\n" +" 0-val tér vissza, ha könyvtárat váltott és ha a -P használatakor a $PWD\n" +" sikeresen beállításra kerül; más értéket különben." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Az aktuális munkakönyvtár útvonalának kiírása.\n" +" \n" +" Kapcsolók:\n" +" -L\t$PWD értékének kiírása, ha az a munkakönyvtár érvényes neve\n" +" -P\ta fizikai könyvtár kiírása, szimbolikus linkek nélkül\n" +" \n" +" Az alapértelmezett a szimbolikus linkek követése, mintha „-L†lenne\n" +" megadva.\n" +" \n" +" Kilépési kód:\n" +" 0-val tér vissza, kivéve ha érvénytelen kapcsolót kapott vagy nem lehet\n" +" olvasni a munkakönyvtárat." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Nincs művelet.\n" +" \n" +" Nincs hatása, a parancs nem csinál semmit.\n" +" \n" +" Kilépési kód:\n" +" Mindig sikeres." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Sikeres visszatérés.\n" +" \n" +" Kilépési kód:\n" +" Mindig sikeres." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Sikertelen visszatérés.\n" +" \n" +" Kilépési kód:\n" +" Mindig sikertelen." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Parancs végrehajtása vagy információk megjelenítése róla.\n" +" \n" +" Végrehajtja a PARANCS parancsot ARGUMENTUMOK argumentumokkal a\n" +" függvényfeloldás végrehajtása nélkül; vagy információt jelenít meg a\n" +" parancsról. Használható programok futtatására, ha azonos nevű függvény\n" +" létezik.\n" +" \n" +" Kapcsolók:\n" +" -p alapértelmezett érték használata PATH helyett, amely\n" +" garantáltan megtalál minden szabványos eszközt\n" +" -v egy leírást ad a PARANCS parancsról a „type†beépített\n" +" parancshoz hasonló módon\n" +" -V részletesebb leírást ad minden PARANCSRÓL\n" +" \n" +" Kilépési kód:\n" +" A PARANCS kilépési kódjával tér vissza, vagy hibát jelez, ha nem\n" +" található a PARANCS." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Változóértékek és attribútumok beállítása.\n" +" \n" +" Változók deklarálása és attribútumok megadása. Ha nincs NÉV megadva,\n" +" kiírja az összes változó attribútumait és értékét.\n" +" \n" +" Kapcsolók:\n" +" -f\tművelet és megjelenítés korlátozása függvénynevekre és\n" +" \t\t-definíciókra\n" +" -F\tmegjelenítés korlátozása függvénynevekre (és sor számára,\n" +" \t\tvalamint a forrásfájl nevére hibakereséskor)\n" +" -g\tglobális változók létrehozása parancsértelmezÅ‘-függvényben való\n" +" \t\thasználatkor, egyébként figyelmen kívül marad\n" +" -p\tminden NÉV attribútumainak és értékének kiírása\n" +" \n" +" Attribútumokat állító kapcsolók:\n" +" -a\tNÉV indexelt tömbbé alakítása (ha támogatott)\n" +" -A\tNÉV asszociatív tömbbé alakítása (ha támogatott)\n" +" -i\tminden NÉV kapjon „integer†attribútumot\n" +" -l\tminden NÉV értékének kisbetűssé konvertálása értékadáskor\n" +" -n\ta NÉV hivatkozás legyen az értékében megadott változóra\n" +" -r\tminden NÉV legyen csak olvasható\n" +" -t\tminden NÉV kapjon „trace†attribútumot\n" +" -u\tminden NÉV értékének nagybetűssé konvertálása értékadáskor\n" +" -x\tminden NÉV exportálása\n" +" \n" +" A „-†helyett „+†használata kikapcsolja az adott attribútumot.\n" +" \n" +" Az integer attribútummal rendelkezÅ‘ változókhoz való értékadáskor\n" +" aritmetikai kiértékelés történik (lásd a „let†parancsot).\n" +" \n" +" Függvénytörzsben „declareâ€-t használva minden NÉV helyi lesz, hasonlóan\n" +" a „local†parancshoz. A „-g†kapcsoló elnyomja ezt a viselkedést.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, vagy " +"értékadási\n" +" hiba történik." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Változóértékek és attribútumok beállítása.\n" +" \n" +" A „declare†szinonimája. Lásd: „help declareâ€." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Helyi változók definiálása.\n" +" \n" +" Egy NÉV nevű helyi változót hoz létre, és ÉRTÉK értéket ad neki.\n" +" A KAPCSOLÓ tetszÅ‘leges, a „declare†által elfogadott kapcsoló lehet.\n" +" \n" +" A helyi változók csak a függvényen belül használhatóak, nem láthatóak\n" +" az Å‘ket definiáló függvényen és annak gyermekein kívül.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, értékadási\n" +" hiba történik, vagy nem függvényben lett hívva." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Argumentumok szabványos kimenetre írása.\n" +" \n" +" Argumentumok és egy újsor kiírása a szabványos kimenetre.\n" +" \n" +" Kapcsolók:\n" +" -n\tne fűzzön hozzá újsort\n" +" -e\taz alábbi escape-szekvenciák értelmezése\n" +" -E\tescape-szekvenciák értelmezésének tiltása\n" +" \n" +" Az „echoâ€a következÅ‘ visszaper-escape-karaktereket értelmezi:\n" +" \\a\tterminálcsengÅ‘\n" +" \\b\tvisszatörlés (backspace)\n" +" \\c\ttovábbi kimenet elnyelése\n" +" \\e\tescape-karakter\n" +" \\E\tescape-karakter\n" +" \\f\tlapdobás-karakter\n" +" \\n\tújsor-karakter\n" +" \\r\tkocsivissza-karakter\n" +" \\t\tvízszintes tabulátor\n" +" \\v\tfüggÅ‘leges tabulátor\n" +" \\\\\tvisszaper (\\)\n" +" \\0nnn\taz oktális NNN ASCII-kódú karakter. NNN 0–3\n" +" \t\toktális számjegy lehet\n" +" \\xHH\taz a 8 bites karakter, amelynek értéke HH\n" +" \t\t(hexadecimálisan). HH egy vagy két hexaszámjegy lehet\n" +" \\uHHHH\ta Unicode karakter, amely értéke a HHHH hexadecimális\n" +" \t\térték. A HHHH 1-4 hexaszámjegy lehet.\n" +" \\UHHHHHHHH a Unicode karakter, amely értéke a HHHHHHHH hexadecimális\n" +" \t\térték. A HHHHHHHH 1-8 hexaszámjegy lehet.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve írási hiba esetén." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Argumentumok szabványos kimenetre írása.\n" +" \n" +" Argumentumok és egy újsor kiírása a szabványos kimenetre.\n" +" \n" +" Kapcsolók:\n" +" -n\tne fűzzön hozzá újsort\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve írási hiba esetén." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"ParancsértelmezÅ‘ beépített parancsainak engedélyezése és tiltása.\n" +" \n" +" Beépített parancsokat engedélyez és tilt. Egy parancs letiltásával az\n" +" elérési út beírása nélkül lehet beépített paranccsal megegyezÅ‘ nevű\n" +" programot futtatni.\n" +" \n" +" Kapcsolók:\n" +" -a\ta beépített parancsok és azok állapotának listázása\n" +" -n\tminden NÉV tiltása vagy a tiltott parancsok listázása\n" +" -p\ta beépített parancsokat listázza újrahasználható formában\n" +" -s\tcsak a Posix „special†beépített parancsokat listázza\n" +" \n" +" Dinamikus betöltést szabályozó kapcsolók:\n" +" -f\tNÉV nevű beépített parancs betöltése a FÃJLNÉV megosztott\n" +" \t\tobjektumfájlból\n" +" -d\tegy -f kapcsolóval betöltött parancs eltávolítása\n" +" \n" +" Kapcsolók nélkül minden NÉV engedélyezésre kerül\n" +" \n" +" A beépített parancs helyett a $PATH-ban található „test†használatához\n" +" használja az „enable -n test†parancsot.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha a NÉV nem egy beépített parancs, vagy\n" +" hiba történt." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Argumentumok végrehajtása parancsként.\n" +" \n" +" Az argumentumokat összefűzi, és az eredményt egy parancssorként hajtja\n" +" végre a parancsértelmezÅ‘.\n" +" \n" +" Kilépési kód:\n" +" A parancs kilépési kódjával tér vissza, vagy sikerrel, ha üres a parancs." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Kapcsolók értelmezése.\n" +" \n" +" A getopts parancsot arra használják az eljárások, hogy pozicionális\n" +" paramétereket kapcsolókként értelmezzenek.\n" +" \n" +" A KAPCSOLÓK azokat a betűket tartalmazza, amelyeket fel kell ismerni.\n" +" Ha egy kapcsolót kettÅ‘spont követ, a kapcsoló kötelezÅ‘ paramétert vár.\n" +" Ezt a paramétert szóközzel kell elválasztani a kapcsolótól.\n" +" \n" +" Minden végrehajtáskor a getopts a $név változóba helyezi a következÅ‘\n" +" kapcsolót (szükség esetén inicializálva a változót). A kapcsoló indexe\n" +" az OPTIND változóba kerül. Az OPTIND változót a parancsértelmezÅ‘ " +"induláskor\n" +" 1-re inicializálja. Ha a kapcsolónak paramétere van, ennek értéke\n" +" az OPTARG változóba kerül.\n" +" \n" +" A getopts két módon tud hibát jelezni. Elnémítható a hibajelzés az " +"OPCIÓK\n" +" kettÅ‘sponttal való kezdésével. Ebben a módban nem kerül kiírásra\n" +" hibaüzenet. Ha a getopts érvénytelen opciót talál, ezt az OPTARG\n" +" változóba írja. Ha hiányzik egy kötelezÅ‘ paraméter, a $név változóba " +"egy\n" +" kettÅ‘spont kerül, és a talált karakter az OPTARG-ba kerül.\n" +" Ha a getopts nincs néma módban, és érvénytelen kapcsolót talál, $NÉV-be\n" +" egy kérdÅ‘jel kerül, az OPTARG törlésre kerül, és hibaüzenetet ír ki.\n" +" \n" +" Ha az OPTERR változó 0-ra van állítva, a getopts letiltja a " +"hibaüzenetet,\n" +" akkor is, ha nem kettÅ‘sponttal kezdÅ‘dik az OPCIÓK. Az OPTERR alapértéke " +"1.\n" +" \n" +" A getopts alapvetÅ‘en a pozicionális paramétereket értelmezi ($0–$9), de\n" +" több argumentum esetén mindet kezeli.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, ha kapcsolót talált, sikertelenül, ha elfogytak a\n" +" kapcsolók, vagy hiba történt." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"A parancsértelmezÅ‘ felváltása a megadott paranccsal.\n" +" \n" +" A PARANCS végrehajtása, kicserélve a parancsértelmezÅ‘t a megadott\n" +" programmal. Az ARGUMENTUMOK lesznek a PARANCS argumentumai. Ha nincs\n" +" PARANCS megadva, a futó parancsértelmezÅ‘ben kerülnek érvényesítésre\n" +" az átirányítások.\n" +" \n" +" Kapcsolók:\n" +" -a név\ta NÉV átadása a PARANCSNAK $0-ként\n" +" -c\ta PARANCS végrehajtása üres környezettel\n" +" -l\ta PARANCSNAK egy „-†átadása $0-ként\n" +" \n" +" Ha a parancs nem hajtható végre, a nem interaktív parancsértelmezÅ‘ " +"kilép,\n" +" kivéve, ha az „execfail†parancsértelmezÅ‘-beállítás él.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve, ha a PARANCS nem található vagy sikertelen\n" +" az átirányítás." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Kilépés a parancsértelmezÅ‘bÅ‘l.\n" +" \n" +" Kilép a parancsértelmezÅ‘bÅ‘l N kilépési kóddal. Ha az N hiányzik, az " +"utolsó\n" +" parancs kilépési kódjával lép ki." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Kilépés a bejelentkezÅ‘ parancsértelmezÅ‘bÅ‘l.\n" +" \n" +" Kilép a bejelentkezÅ‘ parancsértelmezÅ‘bÅ‘l az N kilépési kóddal. Hibával\n" +" tér vissza, ha nem bejelentkezÅ‘ parancsértelmezÅ‘bÅ‘l hívják." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Parancsok megjelenítése vagy végrehajtása az elÅ‘zménybÅ‘l.\n" +" \n" +" Az fc segítségével lehet korábbi parancsokat kiírni, módosítani és " +"újból\n" +" végrehajtani.\n" +" Az ELSŠés UTOLSÓ lehetnek egy tartományt meghatározó számok, vagy az " +"ELSÅ\n" +" lehet egy karakterlánc, amely az utolsó így kezdÅ‘dÅ‘ parancsot jelöli.\n" +" \n" +" Kapcsolók:\n" +" -e ENAME\tszerkesztÅ‘ kiválasztása. Az alapértelmezett az FCEDIT,\n" +" \t\tmajd EDITOR, végül a vi\n" +" -l\tszerkesztés helyett a sorok listázása\n" +" -n\tsorok számának elhagyása listázáskor\n" +" -r\tsorrend megcserélése (legújabbakkal kezdi a listázást)\n" +" \n" +" Az „fc -s [minta=csere] [parancs]†formával PARANCS... újból " +"végrehajtásra\n" +" kerül, miután a régi=új behelyettesítés megtörtént.\n" +" \n" +" Hasznos lehet az „alias r='fc -s'†használata, mivel így pl. az „r ccâ€\n" +" parancs végrehajtja az utolsó „ccâ€-vel kezdÅ‘dÅ‘ parancsot, míg „r†meg-\n" +" ismétli az utolsó parancsot.\n" +" \n" +" Kilépési kód:\n" +" Sikert vagy a végrehajtott parancs kilépési kódját adja; nullától " +"eltérÅ‘t\n" +" hiba esetén." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Munka elÅ‘térbe hozása.\n" +" \n" +" A MUNKASZÃM által meghatározott munkát az elÅ‘térbe hozza, az aktuális\n" +" munkává téve azt. Ha nincs MUNKASZÃM, a parancsértelmezÅ‘ által " +"megjegyzett\n" +" aktuális munkára vonatkozik a parancs.\n" +" \n" +" Kilépési kód:\n" +" Az elÅ‘térbe hozott parancs állapota (annak kilépésekor), vagy nem nulla\n" +" hiba esetén." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Munka háttérbe küldése.\n" +" \n" +" A MUNKASZÃM által meghatározott munkákat háttérbe küldi, mintha „&â€\n" +" jellel a parancs végén lettek volna indítva. Ha nincs MUNKASZÃM, a\n" +" parancsértelmezÅ‘ által megjegyzett aktuális munkára vonatkozik a " +"parancs.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha a munkakezelés le van tiltva, vagy\n" +" hiba történt." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Programok helyének megjegyzése vagy megjelenítése.\n" +" \n" +" Meghatározza és megjegyzi minden megadott NÉV parancs teljes útvonalát.\n" +" Ha nincs NÉV megadva, az összes megjegyzett parancsot listázza.\n" +" \n" +" Kapcsolók:\n" +" -d\tminden megjegyzett NÉV helyének elfelejtése\n" +" -l\tbemenetként újrahasználható formátumban listázzon\n" +" -p útvonal\taz ÚTVONAL használata a NÉV teljes útvonalaként\n" +" -r\tminden megjegyzett hely elfelejtése\n" +" -t\tminden megadott NÉV megjegyzett helyének kiírása,\n" +" \t\ttöbb név esetén a helyek elÅ‘tt a NÉV kiírása\n" +" Argumentumok:\n" +" NÉV\tMinden NÉV megkeresése a $PATH-ban, és hozzáadása a\n" +" \t\tmegjegyzettek listájához.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve, ha a NÉV nem található vagy érvénytelen\n" +" kapcsolót kap." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Tájékoztatás megjelenítése beépített parancsokról.\n" +" \n" +" Rövid leírásokat jelenít meg a beépített parancsokról. Ha MINTA meg\n" +" van adva, részletes segítséget ad az összes illeszkedÅ‘ parancsról,\n" +" különben a témákat listázza.\n" +" \n" +" Kapcsolók:\n" +" -d\tminden témáról rövid leírás listázása\n" +" -m\tman-szerű formátum használata\n" +" -s\tcsak rövid használati útmutató kiírása minden, a MINTÃNAK\n" +" \t\tmegfelelÅ‘ témáról\n" +" \n" +" Argumentumok:\n" +" MINTA\tTémakört meghatározó minta\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha nincs találat vagy hibás kapcsolót kap." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Az elÅ‘zmények megjelenítése vagy módosítása.\n" +" \n" +" Megjeleníti az elÅ‘zménylistát sorszámokkal, minden módosított " +"bejegyzést\n" +" az elején „*â€-gal megjelölve. N megadása esetén az utolsó N\n" +" bejegyzést listázza.\n" +" \n" +" Kapcsolók:\n" +" -c\taz elÅ‘zménylista törlése az összes bejegyzésének törlésével\n" +" -d eltolás\taz ELTOLÃS pozícióban lévÅ‘ elÅ‘zménybejegyzés törlése,\n" +" \t\ta negatív eltolások az elÅ‘zménylista végétÅ‘l számolnak vissza\n" +" -a\ta munkamenet elÅ‘zménysorainak hozzáfűzése az elÅ‘zményfájlhoz\n" +" -n\tminden olyan elÅ‘zménysor beolvasása, amelyek még nem lettek\n" +" \t\tbeolvasva az elÅ‘zményfájlból, és azok hozzáfűzése az\n" +" \t\telÅ‘zménylistához\n" +" -r\telÅ‘zményfájl beolvasása, és a tartalom hozzáfűzése az\n" +" \t\telÅ‘zménylistához\n" +" -w\taz aktuális elÅ‘zmények elÅ‘zményfájlba írása\n" +" \n" +" -p\telÅ‘zménykiegészítés végrehajtása minden ARGUMENTUMON, és az\n" +" \t\teredmény megjelenítése elÅ‘zménylistán való tárolás nélkül\n" +" -s\tARGUMENTUMOK hozzáfűzése egyetlen bejegyzésként a listához\n" +" \n" +" Ha FÃJLNÉV is meg van adva, az lesz elÅ‘zményfájlként használva. " +"Különben\n" +" a HISTFILE értéke, vagy ennek híján ~/.bash_history.\n" +" \n" +" Ha a HISTTIMEFORMAT változó be van állítva, és nem üres, akkor értéke\n" +" lesz használva az strftime(3) formátumparamétereként a kijelzett\n" +" bejegyzések idÅ‘bélyegeinek megjelenítéséhez. Különben nem ír ki idÅ‘t.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, vagy hiba\n" +" történik." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Munkák állapotának megjelenítése.\n" +" \n" +" Listáz minden aktív munkát. MUNKASZÃM megadása esetén csak az adott\n" +" munka jelenik meg, különben az összes aktív.\n" +" \n" +" Kapcsolók:\n" +" -l\tfolyamatazonosítók megjelenítése a többi adaton túl\n" +" -n\tcsak azon folyamatok listázása, amelyek állapota változott\n" +" \t\taz utolsó értesítés óta\n" +" -p\tcsak folyamatazonosítók listázása\n" +" -r\tcsak a futó munkák megjelenítése\n" +" -s\tcsak a megállított munkák megjelenítése\n" +" \n" +" Ha -x meg van adva, PARANCS kerül futtatásra úgy, hogy minden " +"argumentum\n" +" a meghatározott munkához tartozó folyamatcsoport vezetÅ‘jének PID-jére\n" +" cserélÅ‘dik.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, és nem történik\n" +" hiba. -x használata esetén a PARANCS kilépési kódjával tér vissza." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Munkák eltávolítása az aktuális parancsértelmezÅ‘bÅ‘l.\n" +" \n" +" Eltávolít minden MUNKASZÃM munkát az aktív munkák táblájából. A " +"MUNKASZÃM\n" +" megadása nélkül a parancsértelmezÅ‘ által megjegyzett aktuális\n" +" munkát távolítja el.\n" +" \n" +" Kapcsolók:\n" +" -a\tminden munka eltávolítása, ha nincs MUNKASZÃM megadva\n" +" -h\tminden MUNKASZÃM megjelölése úgy, hogy nem kell továbbadni\n" +" \t\tnekik a parancsértelmezÅ‘ által kapott SIGHUP-ot\n" +" -r\tcsak futó munkák eltávolítása\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót vagy MUNKASZÃMOT" + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Szignál küldése munkának.\n" +" \n" +" PID vagy MUNKASZÃM által meghatározott folyamatoknak a SZIGNÃL vagy\n" +" SZIGNÃLSZÃM szignál küldése. Ha sem a SZIGNÃL, sem a SZIGNÃLSZÃM nincs\n" +" megadva, akkor a SIGTERM az alapértelmezés.\n" +" \n" +" Kapcsolók:\n" +" -s sig\ta SIG egy szignálnév\n" +" -n sig\ta SIG egy szignálszám\n" +" -l\ta szignálnevek listázása; ha argumentumok követik a -l kapcsolót,\n" +" \t\takkor azok szignálszámoknak lesznek tekintve ahhoz, hogy mely\n" +" \t\tneveket kell listázni\n" +" -L\ta -l szinonimája\n" +" \n" +" A kill két okból beépített parancs: így lehetÅ‘vé teszi munkaazonosítók\n" +" használatát folyamatazonosítók helyett, továbbá lehetségessé válik a\n" +" folyamatok kilövése, ha a folyamatok számának korlátja elérve.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, vagy nem " +"történik\n" +" hiba." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Aritmetikai kifejezés kiértékelése.\n" +" \n" +" Minden ARGUMENTUM kiértékelése aritmetikai kifejezésként. A kiértékelés\n" +" fix szélességű egészek esetén túlcsordulás-ellenÅ‘rzés nélkül történik,\n" +" de a nullával való osztás hibát okoz. Az alábbi operátorok soronként\n" +" azonos precedenciaszinten vannak. A precedencia az alábbi sorrendben\n" +" csökken:\n" +" \n" +" \tid++, id--\tváltozó postfix-növelése, -csökkentése\n" +" \t++id, --id\tváltozó prefix-növelése, -csökkentése\n" +" \t-, +\t\tmínusz, plusz elÅ‘jel\n" +" \t!, ~\t\tlogikai és bitenkénti negált\n" +" \t**\t\thatványozás\n" +" \t*, /, %\t\tszorzás, osztás, maradék\n" +" \t+, -\t\tösszeadás, kivonás\n" +" \t<<, >>\t\tbitenkénti eltolás balra, jobb\n" +" \t<=, >=, <, >\tösszehasonlítás\n" +" \t==, !=\t\tegyenlÅ‘ség, egyenlÅ‘tlenség\n" +" \t&\t\tbitenkénti ÉS\n" +" \t^\t\tbitenkénti kizáró vagy (XOR)\n" +" \t|\t\tbitenkénti VAGY\n" +" \t&&\t\tlogikai ÉS\n" +" \t||\t\tlogikai VAGY\n" +" \tkif ? kif : kif\n" +" \t\t\tfeltételes operátor\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |= értékadás\n" +" \n" +" ParancsértelmezÅ‘-változók is lehetnek operandusok. A változók nevének\n" +" helyére értékük kerül (fix szélességű egészként) a kifejezésben. Nem\n" +" kell a változók „integer†jellemzÅ‘jét beállítani a használathoz.\n" +" \n" +" Az operátorok a fenti precedencia szerint hajtódnak végre. A zárójeles\n" +" kifejezések precedenciája a legmagasabb – ez felülírja a szabályokat.\n" +" \n" +" Kilépési kód:\n" +" Ha az utolsó argumentum 0, a let 1-gyel tér vissza, különben 0-val." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Egy sor beolvasása a szabványos bemenetrÅ‘l, és mezÅ‘kre osztása.\n" +" \n" +" Egy sor beolvasása a szabványos bemenetrÅ‘l, vagy az FD fájlleíróból, ha\n" +" meg van adva a -u kapcsoló. A sor mezÅ‘kre lesz osztva a szódarabolás\n" +" szabályai szerint. Az elsÅ‘ szó az elsÅ‘ NÉV nevű változó értéke lesz, a\n" +" második a másodiké stb. A szóelválasztó karaktereket az $IFS adja meg.\n" +" \n" +" Ha nincs NÉV megadva, a beolvasott sor a REPLY változóba kerül.\n" +" \n" +" Kapcsolók:\n" +" -a tömb\ta beolvasott szavak TÖMB tömb 0-tól kezdve egymást követÅ‘\n" +" \t\tindexű elemeibe kerülnek\n" +" -d elválasztó\taz ELVÃLASZTÓ elsÅ‘ karakteréig olvasson az újsor\n" +" \t\thelyett\n" +" -e\ta Readline használata a sor megszerzéséhez\n" +" -i szöveg\ta SZÖVEG használata kezdeti szövegként (Readline-hoz)\n" +" -n szám\tSZÃM karakter beolvasása után térjen vissza, ne várjon\n" +" \t\tújsorra, de vegye figyelembe az elválasztót, ha kevesebb\n" +" \t\tmint SZÃM karaktert olvasott be az elválasztóig\n" +" -N szám\tpontosan akkor térjen vissza, ha SZÃM karaktert olvasott\n" +" \t\tbe, kivéve az EOF elérését és az idÅ‘túllépést, az\n" +" \t\telválasztókat figyelmen kívül hagyva\n" +" -p prompt\tírja ki a PROMPT értékét olvasás elÅ‘tt a sor elejére,\n" +" \t\tzáró újsor nélkül\n" +" -r\ttiltsa le a „\\†kezdetű escape-ek használatát\n" +" -s\tterminálról érkezÅ‘ bemenet ne visszhangozzon\n" +" -t idÅ‘\tIDÅ leteltével jelezzen hibát, ha nem tudott egy teljes\n" +" \t\tsort beolvasni. A $TMOUT változó értéke az alapértelmezett\n" +" \t\tidÅ‘korlát. Az IDÅ lehet tizedestört is. Ha idÅ‘ 0, csak akkor\n" +" \t\tlesz sikeres a beolvasás, ha az adott fájlleírón már\n" +" \t\tolvasható a bemenet. IdÅ‘túllépés esetén a kilépési kód >128\n" +" -u fd\tfájl beolvasása az FD. fájlleíróból a szabványos bemenet\n" +" \t\thelyett\n" +" \n" +" Kilépési kód:\n" +" A kilépési kód nulla, kivéve ha EOF-ot ér a beolvasás, idÅ‘túllépéskor\n" +" (ekkor > 128) vagy érvénytelen fájlleíró megadásakor a -u kapcsolónak." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Visszatér egy függvénybÅ‘l.\n" +" \n" +" Egy függvény vagy egy „sourceâ€-olt parancsfájl adott N kilépési kóddal\n" +" való visszatérését okozza. Ha N nincs megadva, az utolsó parancs " +"kilépési\n" +" kódjával tér vissza.\n" +" \n" +" Kilépési kód:\n" +" N-nel tér vissza, kivéve ha nem függvénybÅ‘l vagy parancsfájlból akar\n" +" visszatérni – ekkor sikertelenséget jelez." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"ParancsértelmezÅ‘-beállítások és pozicionális paraméterek állítása, törlése.\n" +" \n" +" ParancsértelmezÅ‘-attribútumok és pozicionális paraméterek értékeinek\n" +" módosítása, parancsértelmezÅ‘-változók neveinek és értékeinek kiírása.\n" +" \n" +" Kapcsolók:\n" +" -a A módosított vagy létrehozott változó exportálásra jelölése\n" +" -b Munka befejezésérÅ‘l azonnali értesítés\n" +" -e Azonnali kilépés, ha egy parancs nem nullával lép ki\n" +" -f Fájlnév-generálás (globbing) tiltása\n" +" -h Parancsok helyének megjegyzése használatkor\n" +" -k Minden értékadó argumentum a parancs környezetébe kerül, nem\n" +" csak a parancsot megelÅ‘zÅ‘k\n" +" -m Munkakezelés engedélyezése\n" +" -n Parancsok beolvasása végrehajtás nélkül\n" +" -o kapcsolónév\n" +" Kapcsolónév szerinti változóállítás:\n" +" allexport mint -a\n" +" braceexpand mint -B\n" +" emacs emacs-szerű sorszerkesztés\n" +" errexit mint -e\n" +" errtrace mint -E\n" +" functrace mint -T\n" +" hashall mint -h\n" +" histexpand mint -H\n" +" history elÅ‘zmények tárolásának engedélyezése\n" +" ignoreeof EOF esetén nem lép ki a parancsértelmezÅ‘\n" +" interactive-comments\n" +" interaktív parancsokban is lehetnek megjegyzések\n" +" keyword mint -k\n" +" monitor mint -m\n" +" noclobber mint -C\n" +" noexec mint -n\n" +" noglob mint -f\n" +" nolog jelenleg elfogadott, de mellÅ‘zött\n" +" notify mint -b\n" +" nounset mint -u\n" +" onecmd mint -t\n" +" physical mint -P\n" +" pipefail egy csÅ‘vezeték-parancs kilépési kódja az utolsó\n" +" nem nullával kilépett parancs kilépési kódja,\n" +" vagy 0, ha nem volt ilyen\n" +" posix a bash viselkedésének megváltoztatása, ha az\n" +" alapértelmezett nem felel meg a Posix\n" +" szabványnak\n" +" privileged mint -p\n" +" verbose mint -v\n" +" vi vi-szerű sorszerkesztés\n" +" xtrace mint -x\n" +" -p Mindig be van kapcsolva, ha a valós és effektív felhasználó nem\n" +" egyezik. Letiltja az $ENV fájl értelmezését és a " +"parancsértelmezÅ‘-\n" +" függvények betöltését. A kapcsoló kikapcsolása az effektív\n" +" uid és gid valósra állítását okozza\n" +" -t Egyetlen parancs beolvasása és végrehajtás után kilépés\n" +" -u Nem létezÅ‘ változók behelyettesítése legyen hiba\n" +" -v Beolvasott parancsok kiírása olvasáskor (értelmezés elÅ‘tt).\n" +" -x Parancsok kiírása végrehajtáskor (értelmezés után).\n" +" -B Szögleteszárójel-kiegészítés végrehajtása\n" +" -C LétezÅ‘ normál fájlok felülírásának tiltása kimenetátirányításnál\n" +" -E Az ERR csapdát öröklik a függvények\n" +" -H Felkiáltójeles elÅ‘zményhelyettesítés engedélyezése. Interaktív\n" +" parancsértelmezÅ‘nél alapértelmezés\n" +" -P Parancsok végrehajtásánál szimbolikus linkek követésének tiltása\n" +" (például cd esetében)\n" +" -T A DEBUG és RETURN csapdát öröklik a függvények\n" +" -- A további argumentumok hozzárendelése a pozicionális " +"paraméterekhez.\n" +" Ha nincsenek további argumentumok, akkora a pozicionális " +"paraméterek\n" +" törlésre kerülnek.\n" +" - A további argumentumok pozicionális paraméterekhez rendelése\n" +" A -x és -v kapcsolók ki vannak kapcsolva.\n" +" \n" +" „-†helyett „+†használatával a kapcsolók tilthatóak. A kapcsolók a\n" +" parancsértelmezÅ‘ indításakor is állíthatóak. Az érvényben lévÅ‘ " +"kapcsolók\n" +" a $- változóban vannak. A záró nem értelmezhetÅ‘ argumentumok " +"pozicionális\n" +" paraméterek lesznek (rendre $1, $2 ... $n). Ha nincs ARG, minden\n" +" parancsértelmezÅ‘-változó kiírásra kerül.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"ParancsértelmezÅ‘-változók és -függvények értékeinek és jellemzÅ‘inek " +"törlése.\n" +" \n" +" Minden NÉV nevű függvény vagy változó törlése.\n" +" \n" +" Kapcsolók:\n" +" -f\tminden NÉV függvény\n" +" -v\tminden NÉV változó\n" +" -n\tminden NÉV névhivatkozás, és a változó törlése az általa\n" +" \t\thivatkozott változó helyett\n" +" \n" +" Kapcsolók nélkül az unset elÅ‘ször változót, sikertelenség esetén " +"függvényt\n" +" próbál törölni.\n" +" \n" +" Néhány változót nem lehet törölni, lásd „readonlyâ€.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha hibás kapcsolót kap, vagy egy NÉV csak\n" +" olvasható." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"ParancsértelmezÅ‘-változók exportálás attribútumának beállítása.\n" +" \n" +" Minden NÉV automatikus környezeti változóvá exportálásra jelölése. Ãgy\n" +" minden ezután kiadott parancs környezetében megjelenik. Ha az ÉRTÉK is\n" +" meg van adva, értékadás is történik.\n" +" \n" +" Kapcsolók:\n" +" -f\tparancsértelmezÅ‘-függvényekre vonatkozzon\n" +" -n\texport attribútum eltávolítása minden NÉVRÅL\n" +" -p\tösszes exportált változó és függvény listázása\n" +" \n" +" Egy „--†argumentum letiltja a további kapcsolóértelmezést.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"ParancsértelmezÅ‘-változó változtathatatlannak jelölése.\n" +" \n" +" Minden NÉV csak olvashatóvá állítása. A továbbiakban a NEVEK értéke\n" +" értékadással nem változtatható. Ha ÉRTÉK is van megadva, az írásvédelem\n" +" bekapcsolása elÅ‘tt értékadás is történik.\n" +" \n" +" Kapcsolók:\n" +" -a\tindexelt tömbváltozókra vonatkozik\n" +" -A\tasszociatív tömbváltozókra vonatkozik\n" +" -f\tfüggvényekre vonatkozik\n" +" -p\taz összes csak olvasható változó vagy függvény listázása\n" +" \t\taz -f kapcsoló megadásától függÅ‘en\n" +" \n" +" Egy „--†argumentum letiltja a további kapcsolóértelmezést.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Pozicionális paraméterek eltolása.\n" +" \n" +" Az $N+1, $N+2... pozicionális paraméterek átnevezése $1, $2... névre.\n" +" Ha nincs N megadva, értéke 1 lesz.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha N negatív vagy nagyobb mint $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Parancsok végrehajtása fájlból a futó parancsértelmezÅ‘ben.\n" +" \n" +" A FÃJLNÉV fájlból a parancsok beolvasása és végrehajtása. A fájlnév\n" +" megtalálásához a $PATH által felsorolt könyvtárakban keres. Az " +"ARGUMENTUMOK\n" +" pozicionális paraméterek lesznek a FÃJLNÉV végrehajtásakor.\n" +" \n" +" Kilépési kód:\n" +" A FÃJLNÉV utolsó parancsának kilépési kódjával tér vissza; " +"sikertelenül,\n" +" ha a FÃJLNÉV nem olvasható." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Parancsvégrehajtás felfüggesztése.\n" +" \n" +" A futó parancsértelmezÅ‘ végrehajtásának felfüggesztése SIGCONT szignál\n" +" érkezéséig. Ha nincs erÅ‘ltetve, bejelentkezési parancsértelmezÅ‘ nem\n" +" függeszthetÅ‘ fel.\n" +" \n" +" Kapcsolók:\n" +" -f\tfelfüggesztés erÅ‘ltetése bejelentkezési parancsértelmezÅ‘n is\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha a munkakezelés nem támogatott vagy hiba\n" +" történt." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Feltételes kifejezések kiértékelése.\n" +" \n" +" 0-val (igaz) vagy 1-gyel (hamis) lép ki a KIFEJEZÉS értékétÅ‘l függÅ‘en.\n" +" A kifejezéseknek egy vagy két operandusa lehet. Az egyoperandusú " +"kifejezések\n" +" többnyire fájlok állapotát vizsgálják. Karakterláncokat és\n" +" számokat is lehet összehasonlítani.\n" +" \n" +" Fájloperátorok:\n" +" \n" +" -a FÃJL Igaz, ha a fájl létezik.\n" +" -b FÃJL Igaz, ha a fájl blokkeszköz.\n" +" -c FÃJL Igaz, ha a fájl karakteres eszköz.\n" +" -d FÃJL Igaz, ha a fájl könyvtár.\n" +" -e FÃJL Igaz, ha a fájl létezik.\n" +" -f FÃJL Igaz, ha a fájl létezik és normál fájl.\n" +" -g FÃJL Igaz, ha a fájl SETGID jogosultságú.\n" +" -h FÃJL Igaz, ha a fájl szimbolikus link.\n" +" -L FÃJL Igaz, ha a fájl szimbolikus link.\n" +" -k FÃJL Igaz, ha a fájlnak „sticky†bitje (t-bitje) van.\n" +" -p FÃJL Igaz, ha a fájl egy elnevezett csÅ‘vezeték.\n" +" -r FÃJL Igaz, ha a fájl olvasható a felhasználó számára.\n" +" -s FÃJL Igaz, ha a fájl létezik és nem üres.\n" +" -S FÃJL Igaz, ha a fájl egy foglalat (socket).\n" +" -t FD Igaz, ha a fájlleíró egy terminál.\n" +" -u FÃJL Igaz, ha a fájl SETUID jogosultságú.\n" +" -w FÃJL Igaz, ha a fájl írható a felhasználó számára.\n" +" -x FÃJL Igaz, ha a fájl végrehajtható a felhasználó számára.\n" +" -O FÃJL Igaz, ha a fájl effektíven a felhasználó tulajdona.\n" +" -G FÃJL Igaz, ha a fájl effektíven a csoport tulajdona.\n" +" -N FÃJL Igaz, ha a fájl módosult utolsó olvasása óta.\n" +" \n" +" FÃJL1 -nt FÃJL2 Igaz, ha fájl1 újabb fájl2-nél (a módosítási dátum\n" +" alapján).\n" +" \n" +" FÃJL1 -ot FÃJL2 Igaz, ha fájl1 régebbi fájl2-nél.\n" +" \n" +" FÃJL1 -ef FÃJL2 Igaz, ha fájl1 hard link fájl2-re.\n" +" \n" +" Karakterlánc-operátorok:\n" +" \n" +" -z SZÖVEG Igaz, ha SZÖVEG üres.\n" +" \n" +" -n SZÖVEG Igaz, ha SZÖVEG nem üres.\n" +" \n" +" SZÖVEG1 = SZÖVEG2\n" +" Igaz, ha a két SZÖVEG egyezik.\n" +" SZÖVEG1 != SZÖVEG2\n" +" Igaz, ha a két SZÖVEG nem egyezik.\n" +" SZÖVEG1 < SZÖVEG2\n" +" Igaz, ha SZÖVEG1 SZÖVEG2 elÅ‘tt van a betűrendben.\n" +" SZÖVEG1 > SZÖVEG2\n" +" Igaz, ha SZÖVEG1 SZÖVEG2 után van a betűrendben.\n" +" \n" +" További operátorok:\n" +" \n" +" -o BEÃLLÃTÃS Igaz, ha a parancsértelmezÅ‘-beállítás engedélyezve\n" +" van.\n" +" -v VÃLT Igaz, ha a VÃLT parancsértelmezÅ‘-változó be van " +"állítva.\n" +" -R VÃLT Igaz, ha a VÃLT parancsértelmezÅ‘-változó be van " +"állítva,\n" +" és névhivatkozás.\n" +" ! KIF Igaz, ha KIF hamis.\n" +" KIF1 -a KIF2 Igaz, ha KIF1 ÉS KIF2 is igaz.\n" +" KIF1 -o KIF2 Igaz, ha KIF1 VAGY KIF2 igaz.\n" +" \n" +" arg1 OP arg2 Aritmetikai összehasonlítások. OP lehet: -eq, -ne,\n" +" -lt, -le, -gt vagy -ge.\n" +" \n" +" A kétoperandusú aritmetikai operátorok igazat adnak, ha ARG1 rendre\n" +" egyenlÅ‘, nem egyenlÅ‘, kisebb, kisebb vagy egyenlÅ‘, nagyobb, nagyobb\n" +" vagy egyenlÅ‘, mint ARG2.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, ha a KIF igaz; sikertelenséggel, ha a KIF hamis, " +"vagy\n" +" érvénytelen argumentumokat kap." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Feltételes kifejezések kiértékelése.\n" +" \n" +" Ez a „test†beépített parancs szinonimája, de annyiban eltér tÅ‘le,\n" +" hogy az utolsó argumentuma „]†kell legyen – a nyitó „]â€-lel összhangban." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Végrehajtási idÅ‘k kiírása.\n" +" \n" +" Megjeleníti a kumulált felhasználói- és rendszergépidÅ‘t, amelyet a\n" +" parancsértelmezÅ‘ és gyermekfolyamatai használtak.\n" +" \n" +" Kilépési kód:\n" +" Mindig sikeres." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Szignálok és más események elfogása.\n" +" \n" +" Meghatároz és aktivál eseménykezelÅ‘ket, amelyek szignálok érkezésekor\n" +" vagy más körülmények bekövetkezésekor futnak.\n" +" \n" +" Az ARG az a parancs, amelyet a parancsértelmezÅ‘ beolvas és végrehajt a\n" +" SZIGNÃLOK bekövetkezésekor. Ha az ARG hiányzik (és egy SZIGNÃL van\n" +" megadva) vagy az ARG egy „-â€, akkor minden szignálkezelÅ‘ visszaáll az\n" +" alapértelmezett viselkedésre. Ha az ARG üres, akkor a megadott " +"SZIGNÃLOK\n" +" bekövetkezésekor nem történik semmi a parancsértelmezÅ‘ben és új\n" +" gyermekfolyamataiban.\n" +" \n" +" Ha a SZIGNÃL értéke EXIT (0), az ARG a parancsértelmezÅ‘bÅ‘l való " +"kilépéskor\n" +" fut. Ha értéke DEBUG, az ARG minden parancs elÅ‘tt fut. Ha a SZIGNÃL " +"értéke\n" +" RETURN, az ARG a . vagy source kulcsszó használatával futtatott " +"függvény\n" +" vagy parancsfájl befejezÅ‘désekor fut le. Ha az érték ERR, akkor az ARG " +"a\n" +" parancsok olyan hibáikor fut le, amikor a parancsértelmezÅ‘ kilépne a -e\n" +" kapcsoló használatakor.\n" +" \n" +" Argumentumok nélkül a trap kilistázza az összes szignált és parancsot.\n" +" \n" +" Kapcsolók:\n" +" -l\ta rendszeren érvényes szignálnevek és sorszámaik kilistázása\n" +" -p\tkilistázza a trap által beállított eseménykezelÅ‘ket\n" +" \n" +" A SZIGNÃL értéke a -ban megtalálható szignálnév vagy szám.\n" +" A szignálnevek kis- és nagybetűkre érzéketlenek, a SIG elÅ‘tag " +"elhagyható.\n" +" Szignált a parancsértelmezÅ‘nek a „kill -szignál $$†paranccsal\n" +" lehet küldeni.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha a SZIGNÃL érvénytelen, vagy érvénytelen\n" +" kapcsolót kap." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Tájékoztatás egy parancs típusáról.\n" +" \n" +" Minden NÉV esetén kiírja, hogy hogy lenne értelmezve parancsnévként.\n" +" \n" +" Kapcsolók:\n" +" -a\tminden NÉVRE illeszkedÅ‘ futtatható parancs felsorolása,\n" +" \t\tbeleértve az aliasokat, beépített parancsokat, és a\n" +" \t\tfüggvényeket (ha „-p†nem tiltja)\n" +" -f\tfüggvényeket ne keressen\n" +" -P\tcsak a PATH-ban keresse a NEVET, akkor is, ha van ilyen nevű\n" +" \t\talias, parancs vagy függvény\n" +" -p\ta végrehajtható fájl nevét írja ki, ha amely végrehajtódna\n" +" \t\ta parancs kiadásakor. Ha ez nem fájl lenne, nem ír ki semmit\n" +" -t\tegyetlen szót ír ki, amely NÉV típusát jelzi: „aliasâ€,\n" +" \t\t„keyword†(kulcsszó), „function†(függvény), „builtinâ€\n" +" \t\t(beépített parancs), „file†(fájl) vagy „†(nem található)\n" +" \n" +" Kapcsolók:\n" +" NÉV\tÉrtelmezendÅ‘ parancsnév.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel lép ki, ha minden NÉV megtalálható, sikertelenül, ha nem." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"ParancsértelmezÅ‘ erÅ‘forráskorlátjainak beállítása.\n" +" \n" +" Szabályozási lehetÅ‘séget ad a parancsértelmezÅ‘ által elérhetÅ‘ " +"erÅ‘források\n" +" korlátozásához, ha a rendszer támogatja.\n" +" \n" +" Kapcsolók:\n" +" -S\ta puha (soft) korlátozás használata\n" +" -H\ta kemény (hard) korlátozás használata\n" +" -a\taz összes aktuális korlátozás kilistázása\n" +" -b\tfoglalatok (socket) puffermérete\n" +" -c\tcore fájlok maximális mérete (0 tiltja)\n" +" -d\tfolyamatok maximális adatszegmens-mérete\n" +" -e\ta maximális ütemezési prioritás (nice)\n" +" -f\ta parancsértelmezÅ‘ és gyermekei által írható legnagyobb fájl\n" +" -i\tvárakozó szignálok maximális száma\n" +" -k\ta folyamathoz lefoglalt kqueue-k maximális száma\n" +" -l\tfolyamatonként foglalható memória maximális mérete\n" +" -m\ta maximálisan operatív memóriában tartható terület mérete\n" +" -n\tnyitott fájlleírók maximális száma\n" +" -p\ta csÅ‘vezetékpuffer mérete\n" +" -q\ta POSIX üzenetsorokban tartható byte-ok száma\n" +" -r\ta maximális valós idejű ütemezési prioritás\n" +" -s\tmaximális veremméret\n" +" -t\tmaximális processzoridÅ‘ másodpercekben\n" +" -u\tfelhasználói folyamatok maximális száma\n" +" -v\tvirtuális memória mérete\n" +" -x\tfájlzárolások maximális száma\n" +" -P\tpszeudoterminálok maximális száma\n" +" -T\tszálak maximális száma\n" +" \n" +" Nem minden kapcsoló érhetÅ‘ el minden platformon.\n" +" \n" +" Ha a KORLÃT meg van adva, az lesz az új értéke a megadott erÅ‘forrásnak.\n" +" Speciális KORLÃT-értékek: „hard†(jelenlegi kemény korlát értéke),\n" +" „soft†(jelenlegi puha korlát értéke) és „unlimited†(korlátozás " +"nélkül).\n" +" Ha nincs kapcsoló megadva, -f az alapértelmezett.\n" +" \n" +" Az értékek 1024 byte-os egységekben értendÅ‘ek, kivéve a -t, amely\n" +" másodpercekben, a -p, amely 512 byte-okban, valamint a -u, amely " +"darabban\n" +" értendÅ‘.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy hiba esetében." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"A fájlmódmaszk kiírása vagy beállítása.\n" +" \n" +" Beállítja a fájllétrehozási maszkot a MÓDRA. Ha a MÓD hiányzik, az\n" +" aktuális értékét írja ki.\n" +" Fájlok létrehozásakor az alapértelmezett jogokból ki lesznek maszkolva\n" +" az itt megadott bitek. Ez nem akadályozza meg, hogy a program vagy a\n" +" felhasználó késÅ‘bb megváltoztassa a fájl jogait.\n" +" \n" +" Ha a MÓD számjeggyel kezdÅ‘dik, oktális számként lesz értelmezve; " +"egyébként\n" +" a chmod(1) által használt szimbolikus formátumban.\n" +" \n" +" Kapcsolók:\n" +" -p\tha a MÓD hiányzik, a kimenet újrahasználható formátumban legyen\n" +" -S\ta kimenet használja a szimbolikus formát (különben oktálisat)\n" +" \n" +" Kilépési kód:\n" +" Sikerrel lép ki, kivéve ha a MÓD vagy egy kapcsoló érvénytelen." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Munka befejezésének megvárása, és a kilépési kód visszaadása.\n" +" \n" +" Az ID számú folyamat befejezésére vár, majd jelzi a kilépési kódját.\n" +" Az ID lehet egy PID vagy egy %MUNKASZÃM. Ha az ID nincs megadva, minden\n" +" aktív gyermekfolyamat befejezését bevárja, és nullával tér vissza. Ha " +"az\n" +" ID munkaszám, a csÅ‘vezeték összes folyamatát bevárja.\n" +" \n" +" Ha a -n kapcsoló meg van adva, megvárja a következÅ‘ feladat " +"befejezését,\n" +" és annak kilépési kódját adja vissza.\n" +" \n" +" Ha a -f kapcsoló meg van adva és a munkakezelés engedélyezve van, akkor\n" +" megvárja a megadott azonosító befejezését, ahelyett hogy arra várna az\n" +" az állapot megváltoztatásához.\n" +" \n" +" Kilépési kód:\n" +" ID kilépési kódjával tér vissza; érvénytelen ID vagy kapcsoló esetén\n" +" sikertelenül." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Folyamat befejezésének megvárása, és a kilépési kód visszaadása.\n" +" \n" +" A PID számú folyamat befejezésére vár, majd jelzi a kilépési kódját.\n" +" Ha nincs megadva PID, minden aktív gyermekfolyamatot bevár, és nullával\n" +" tér vissza. A PID egy folyamatazonosító kell legyen.\n" +" \n" +" Kilépési kód:\n" +" Az utolsó PID kilépési kódjával tér vissza; érvénytelen PID vagy " +"kapcsoló\n" +" esetén sikertelenül." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Egy lista minden elemére parancs végrehajtása.\n" +" \n" +" A „for†ciklus végrehajt egy parancssorozatot a megadott listán. Ha az\n" +" „in SZAVAK ...;†rész hiányzik, „in \"$@\"†az alapértelmezés. Minden\n" +" iterációnál a NÉV értéke a SZAVAK lista megfelelÅ‘ elemére lesz állítva,\n" +" és így futnak le a PARANCSOK.\n" +" \n" +" Kilépési kód:\n" +" Az utolsó parancs kilépési kódját adja vissza." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Aritmetikai for-ciklus.\n" +" \n" +" Ekvivalens a következÅ‘vel:\n" +" \t(( KIF1 ))\n" +" \twhile (( KIF2 )); do\n" +" \t\tPARANCSOK\n" +" \t\t(( KIF3 ))\n" +" \tdone\n" +" A KIF1, KIF2 és KIF3 aritmetikai kifejezések. Ha valamelyik el van " +"hagyva,\n" +" akkor úgy működik, mintha értéke 1 lenne.\n" +" \n" +" Kilépési kód:\n" +" Az utolsó parancs kilépési kódját adja." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Szavak kiválasztása egy listából, és egy parancs végrehajtása rá.\n" +" \n" +" A SZAVAK kiértékelésre kerülnek, és egy szólistát képeznek. A szavak a\n" +" szabványos hibakimenetre kerülnek soronként, sorszámozva. Ha az\n" +" „in SZAVAK ...;†rész hiányzik, „in \"$@\"†az alapértelmezés. Ezután\n" +" megjelenik a PS3 prompt, és egy sorszámot vár a szabványos bemeneten.\n" +" Érvényes sorszám megadásakor a PARANCSOKAT végrehajtja úgy, hogy a NÉV\n" +" a megfelelÅ‘ sorszámú elem értékét kapja. Ha a sor üres, újból " +"megjelennek\n" +" a SZAVAK és a prompt, és újból lehet választani. A parancs EOF bemenet\n" +" esetén fejezÅ‘dik be. Bármely más érték beolvasásakor a NÉV null lesz.\n" +" A beolvasott sor a REPLY változóba kerül. A PARANCSOK minden választás\n" +" után végrehajtásra kerülnek egy break parancs végrehajtásáig.\n" +" \n" +" Kilépési kód:\n" +" Az utolsó parancs kilépési kódját adja vissza." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"A csÅ‘vezeték végrehajtási idejének kiírása.\n" +" \n" +" A CSÅVEZETÉK végrehajtása és egy összefoglaló kiírása a végrehajtás " +"közben\n" +" eltelt valós idÅ‘rÅ‘l, a használt felhasználói- és rendszergépidÅ‘krÅ‘l\n" +" a CSÅVEZETÉK befejezÅ‘désekor.\n" +" \n" +" Kapcsolók:\n" +" -p\taz összefoglaló megjelenítése a hordozható POSIX formában\n" +" \n" +" A TIMEFORMAT változó értéke felhasználásra kerül a kimenet formázásakor\n" +" \n" +" Kilépési kód:\n" +" A kilépési kód a CSÅVEZETÉK kilépési kódja lesz." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Parancsok végrehajtása mintaillesztés alapján.\n" +" \n" +" A PARANCSOK végrehajtása azon SZAVAKON, amelyek illeszkednek a MINTÃRA.\n" +" Több mintát „|†jellel lehet elválasztani. A minták a fájlnév-" +"helyettesítés\n" +" formátumát használják.\n" +" \n" +" Kilépési kód:\n" +" Az utolsó parancs kilépési kódját adja vissza." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Parancsok végrehajtása feltételesen.\n" +" \n" +" Az „if PARANCSOK†lista végrehajtásra kerül. Ha kilépési kódja nulla,\n" +" akkor a „then PARANCSOK†lista kerül végrehajtásra. Ha nem, akkor az\n" +" elsÅ‘ nullával kilépÅ‘ „elif PARANCSOK†listához tartozó „then PARANCSOKâ€\n" +" lista kerül végrehajtásra. Ha egyik sem teljesül, az „else\n" +" PARANCSOK†lista kerül végrehajtásra. Az egész szerkezet kilépési kódja\n" +" az utoljára végrehajtott parancs kilépési kódja, vagy nulla, ha nem\n" +" teljesült egyik feltétel sem.\n" +" \n" +" Kilépési kód:\n" +" Az utoljára végrehajtott parancs kilépési kódja." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Parancsok végrehajtása amíg a feltétel teljesül.\n" +" \n" +" A PARANCSOK végrehajtása addig, amíg a „while PARANCSOK†utolsó " +"parancsa\n" +" nullával lép ki.\n" +" \n" +" Kilépési kód:\n" +" Az utolsónak végrehajtott parancs kilépési kódja." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Parancsok végrehajtása amíg a feltétel nem teljesül.\n" +" \n" +" A PARANCSOK értelmezése és végrehajtása addig, amíg az „until " +"PARANCSOKâ€\n" +" utolsó parancsa nem nullával lép ki.\n" +" \n" +" Kilépési kód:\n" +" Az utolsónak végrehajtott parancs kilépési kódja." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Egy NÉV nevű társfolyamat létrehozása.\n" +" \n" +" PARANCS aszinkron végrehajtása, a parancs szabványos ki- és bemenetének\n" +" átirányításával egy-egy csÅ‘vezetékbe, amelyek fájlleírói a NÉV tömb-\n" +" változó 0-s és 1-es elemeibe kerülnek a végrehajtó parancsértelmezÅ‘ben.\n" +" Az alapértelmezett NÉV: „COPROCâ€.\n" +" \n" +" Kilépési kód:\n" +" A coproc parancs 0-s kilépési kóddal tér vissza." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"ParancsértelmezÅ‘-függvény definiálása.\n" +" \n" +" Létrehoz egy NÉV nevű függvényt. Ha a NÉV parancsként végrehajtásra\n" +" kerül, a PARANCSOK futnak a hívó parancsértelmezÅ‘ környezetében. A NÉV\n" +" hívásakor az argumentumok a függvénybÅ‘l $1...$n néven érhetÅ‘ek el, míg " +"a\n" +" függvény neve $FUNCNAME-ként.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha a NÉV csak olvasható." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Parancsok csoportosítása egy egységgé.\n" +" \n" +" Egy csoportként hajt végre egy parancssorozatot. Ez egy módja a ki- és\n" +" bemenetek parancshalmazba való átirányításának.\n" +" \n" +" Kilépési kód:\n" +" Az utolsó parancs kilépési kódját adja vissza." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Egy munka elÅ‘térbe hozása.\n" +" \n" +" Megegyezik az „fg†parancs MUNKASZÃM argumentumával. Egy megszakított\n" +" vagy háttérben futó munkát hoz elÅ‘térbe. A MUNKASZÃM lehet munkanév " +"vagy\n" +" munkaazonosító is. Egy záró „&†megadása a munkát háttérbe küldi, mint\n" +" a „bg†parancs.\n" +" \n" +" Kilépési kód:\n" +" A visszaállított parancs kilépési kódjával lép ki." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Aritmetikai kifejezések kiértékelése.\n" +" \n" +" A KIFEJEZÉS az aritmetikai kiértékelés szabályai szerint kerül\n" +" kiértékelésre. Megegyezik a „let KIFEJEZÉS†paranccsal.\n" +" \n" +" Kilépési kód:\n" +" 1-gyel tér vissza, ha KIFEJEZÉS értéke 0, különben 0-val." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Feltételes parancs végrehajtása.\n" +" \n" +" 0 vagy 1 kilépési kódot ad a KIFEJEZÉS kiértékelésének eredményétÅ‘l\n" +" függÅ‘en. A kifejezések a „test†parancs által használt primitívekbÅ‘l\n" +" épülnek fel, és a következÅ‘ operátorokkal keverhetÅ‘ek.\n" +" \n" +" ( KIFEJEZÉS )\tA KIFEJEZÉS értékét adja vissza\n" +" ! KIFEJEZÉS\tIgaz, ha a KIFEJEZÉS hamis\n" +" KIF1 && KIF2\tIgaz, ha KIF1 és KIF2 is igaz\n" +" KIF1 || KIF2\tIgaz, ha KIF1 vagy KIF2 igaz\n" +" \n" +" Az „==†és „!=†operátorok használatánál a jobbérték mintaként\n" +" értelmezÅ‘dik, és fájlnévillesztés történik. A hasonlóan működÅ‘ „=~â€\n" +" operátor használatakor a jobbérték reguláris kifejezésként kerül\n" +" illesztésre.\n" +" \n" +" Az „&&†és „||†operátorok rövidzár tulajdonságúak, vagyis KIF2-t nem\n" +" értékelik ki, ha KIF1-bÅ‘l is megállapítható a kifejezés értéke.\n" +" \n" +" Kilépési kód:\n" +" 0 vagy 1 a KIFEJEZÉSTÅL függÅ‘en." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Közös parancsértelmezÅ‘-változók és használatuk.\n" +" \n" +" BASH_VERSION\tVerzióadatok errÅ‘l a Bash-rÅ‘l\n" +" CDPATH\tKettÅ‘spontokkal elválasztott könyvtárlista, amelyekben a\n" +" \t\t„cd†keres\n" +" GLOBIGNORE\tKettÅ‘spontokkal elválasztott mintalista, amelyekre\n" +" \t\tilleszkedÅ‘ nevű fájlok nem kerülnek útvonal-kiegészítésre\n" +" HISTFILE\tA parancselÅ‘zményeket tároló fájl neve\n" +" HISTFILESIZE\tAz elÅ‘zményfájl maximális hossza sorokban\n" +" HISTSIZE\tA parancsértelmezÅ‘ által kezelt elÅ‘zménysorok maximális\n" +" \t\tszáma\n" +" HOME\tA saját könyvtár teljes abszolút útvonala\n" +" HOSTNAME\tA parancsértelmezÅ‘t futtató gép neve\n" +" HOSTTYPE\tA Bash-t futtató CPU típusa\n" +" IGNOREEOF\tA parancsértelmezÅ‘ viselkedését állítja, hogy mit tegyen,\n" +" \t\tha egy sor elején EOF karaktert kap bemenetén. Ha ez a változó\n" +" \t\tlétezik, az értékében megadott számú EOF karaktert nem\n" +" \t\tvesz figyelembe (alapértelmezetten 10). Ha nincs beállítva,\n" +" \t\tEOF-ra kilép a parancsértelmezÅ‘\n" +" MACHTYPE\tA Bash-t futtató gépet leíró karakterlánc\n" +" MAILCHECK\tMegadott számú másodpercenként keres a Bash új leveleket\n" +" MAILPATH\tKettÅ‘spontokkal elválasztott fájlnévlista, ahol a Bash\n" +" \t\túj leveleket keres\n" +" OSTYPE\tA Bash-t futtató gépen futó UNIX-változat neve (verziója)\n" +" PATH\tKettÅ‘spontokkal elválasztott könyvtárlista, amelyekben a\n" +" \t\tBash futtatható programokat keres parancsvégrehajtáskor\n" +" PROMPT_COMMAND\tAz elsÅ‘dleges prompt kiírása elÅ‘tt végrehajtandó\n" +" \t\t\tparancs\n" +" PS1\t\tAz elsÅ‘dleges prompt\n" +" PS2\t\tA másodlagos prompt\n" +" PWD\t\tAz aktuális könyvtár teljes útvonala\n" +" SHELLOPTS\tAz engedélyezett parancsértelmezÅ‘-beállítások " +"kettÅ‘spontokkal\n" +" \t\telválasztott listája\n" +" TERM\tAz aktuális termináltípus neve\n" +" TIMEFORMAT\tA „time†parancs által használt idÅ‘formátum\n" +" auto_resume\tNem üres érték esetén egy egy szóból álló parancs elÅ‘ször\n" +" \t\ta megszakított munkák nevei között lesz keresve. Találat\n" +" \t\tesetén a munka elÅ‘térbe kerül. „exact†érték esetén\n" +" \t\tpontosan megegyezÅ‘ nevet keres, „substring†esetén tetszÅ‘leges\n" +" \t\tegyezést, minden más érték esetén a szó elején keres\n" +" histchars\tElÅ‘zménykiegészítést és gyors cserét vezérlÅ‘ karaktereket\n" +" \t\tad meg. Az elsÅ‘ karakter az elÅ‘zménybehelyettesítÅ‘ karakter\n" +" \t\t(általában „!â€), a második a gyorscsere-karakter (általában\n" +" \t\t„^â€), a harmadik pedig az elÅ‘zménymegjegyzés (általában „#â€)\n" +" HISTIGNORE\tKettÅ‘spontokkal elválasztott mintalista, amely mintákra\n" +" \t\tilleszkedÅ‘ parancsok nem kerülnek az elÅ‘zmények közé\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Könyvtárak verembe tétele.\n" +" \n" +" Egy könyvtárat tesz a könyvtárverem tetejére, vagy forgatja a vermet,\n" +" az új felsÅ‘ elemmé a jelenlegi munkakönyvtárat téve. Argumentumok\n" +" nélkül hívva a két felsÅ‘ könyvtárat cseréli meg.\n" +" \n" +" Kapcsolók:\n" +" -n\tNe váltson könyvtárat hozzáadáskor, vagyis csak a\n" +" \t\tvermet változtassa.\n" +" \n" +" Argumentumok:\n" +" +N\tÚgy forgatja a vermet, hogy az N-edik könyvtár (0-tól\n" +" \t\tkezdve, a „dirs†által kiírt listán balról számolva)\n" +" \t\tkerüljön a verem tetejére.\n" +" \n" +" -N\tÚgy forgatja a vermet, hogy az N-edik könyvtár (0-tól\n" +" \t\tkezdve, a „dirs†által kiírt listán jobbról számolva)\n" +" \t\tkerüljön a verem tetejére.\n" +" \n" +" ktár\tA verem tetejére helyezi KTÃR könyvtárat, és ugyanezt\n" +" \t\tállítja be új munkakönyvtárnak.\n" +" \n" +" A „dirs†beépített parancs listázza a könyvtárvermet.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n" +" során történÅ‘ hiba esetén." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Könyvtárak eltávolítása a verembÅ‘l.\n" +" \n" +" Elemeket vesz ki a könyvtárverembÅ‘l. Argumentumok nélkül kiveszi a\n" +" legfelsÅ‘ elemet, és a kivett elemre állítja az új munkakönyvtárat.\n" +" \n" +" Kapcsolók:\n" +" -n\tNe váltson könyvtárat eltávolításkor, vagyis csak a vermet\n" +" \t\tváltoztassa.\n" +" \n" +" Argumentumok:\n" +" +N\tEltávolítja az N-edik elemet a „dirs†által kiírt listán,\n" +" \t\tnullától, balról számolva. Pl. a „popd +0†az elsÅ‘, míg a\n" +" \t\t„popd +1†a második könyvtárat távolítja el.\n" +" -N\tEltávolítja az N-edik elemet a „dirs†által kiírt listán,\n" +" \t\tnullától, jobbról számolva. Pl. a „popd -0†az utolsó,\n" +" \t\ta „popd -1†az utolsó elÅ‘tti könyvtárat távolítja el.\n" +" \n" +" A „dirs†beépített parancs listázza a könyvtárvermet.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n" +" során történÅ‘ hiba esetén." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"A könyvtárverem megjelenítése.\n" +" \n" +" Megjeleníti a jelenleg megjegyzett könyvtárakat. A könyvtárakat a\n" +" „pushd†paranccsal lehet a verembe rakni; és a „popd†paranccsal " +"kivenni.\n" +" \n" +" Kapcsolók:\n" +" -c\ta könyvtárverem törlése az összes elem eltávolításával\n" +" -l\ta saját könyvtárat ne rövidítse a listázáskor egy tilde (~)\n" +" -p\ta könyvtárverem kiírása soronként egy elemmel\n" +" -v\ta könyvtárverem kiírása soronként egy elemmel, a vermen\n" +" \t\tbelüli pozíció jelölésével\n" +" \n" +" Argumentumok:\n" +" +N\tN darab bejegyzést jelenít meg az argumentum nélkül a dirs\n" +" \t\táltal megjelenített listán balról számolva, nullától kezdve.\n" +" -N\tN darab bejegyzést jelenít meg az argumentum nélkül a dirs\n" +" \t\táltal megjelenített listán jobbról számolva, nullától kezdve.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve érvénytelen argumentum vagy hiba esetén." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"ParancsételmezÅ‘-kapcsolók beállítása és törlése.\n" +" \n" +" Minden megadott OPTNÉV kapcsoló beállítása. Argumentumok nélkül hívva\n" +" felsorol minden megadott OPTNEVET – vagy az összes parancsértelmezÅ‘\n" +" kapcsolót, ha nincsenek OPTNEVEK megadva – annak jelzésével, hogy be\n" +" vannak-e állítva vagy sem.\n" +" \n" +" Kapcsolók:\n" +" -o\tOPTNEVEK korlátozása a „set -oâ€-val használtakra\n" +" -p\tminden kapcsoló kilistázása az állapotuk jelzésével\n" +" -q\tkimenet elnyelése\n" +" -s\tminden OPTNÉV engedélyezése\n" +" -u\tminden OPTNÉV tiltása\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, ha az OPTNÉV engedélyezve van; sikertelenül, ha\n" +" hibás kapcsolókat kap vagy az OPTNÉV tiltva van." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"FORMÃTUM alapján az ARGUMENTUMOK kiírása.\n" +" \n" +" Kapcsolók:\n" +" -v változó\ta kimenet VÃLTOZÓ nevű változóba írása a szabványos\n" +" \t\t\tkimenet helyett\n" +" \n" +" A FORMÃTUM egy karakterlánc, amely három fajta primitívbÅ‘l áll:\n" +" egyszerű karakterek, amelyeket a parancs a kimenetre másol; escape-\n" +" karaktersorozatok, amelyeket átalakítva másol a kimenetre; valamint\n" +" formátumjelzÅ‘k, amelyek rendre a következÅ‘ argumentum kiírását\n" +" szabályozzák.\n" +" \n" +" A printf(1) által használt szokásos jelzÅ‘kön túl a\n" +" következÅ‘ket ismeri a printf parancs:\n" +" \n" +" %b\tkarakterlánc kiírása az escape-szekvenciák értelmezése után\n" +" %q\targumentum idézÅ‘jelezése olyan módon, hogy parancsértelmezÅ‘\n" +" \t\tbemeneteként használható legyen\n" +" %(fmt)T\tdátum-idÅ‘ karakterlánc kiírása az FMT mint strftime(3)\n" +" \t\tformátum-karakterlánc használatával\n" +" \n" +" A formátum szükség szerint újrafelhasználásra kerül az összes " +"argumentum\n" +" elfogyasztásához. Ha kevesebb argumentum van a formátumnak " +"szükségesnél,\n" +" az extra formátumjelzÅ‘k úgy viselkednek, mintha nulla érték vagy null\n" +" karakterlánc lett volna megadva.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve ha hibás kapcsolókat kap, vagy az írás/\n" +" értékadás hibával járt." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Megadja, hogy a Readline hogyan egészítse ki az argumentumokat.\n" +" \n" +" Minden NÉVHEZ megadja, hogyan egészítse ki a Readline az " +"argumentumokat.\n" +" Ha nincsenek kapcsolók megadva, a jelenlegi érték kerül kiírásra,\n" +" újrafelhasználható módon.\n" +" \n" +" Kapcsolók:\n" +" -p\tmeglévÅ‘ kiegészítésmegadások listázása újrahasználható módon\n" +" -r\tkiegészítésmegadások törlése minden NÉVTÅL; vagy ha nincs\n" +" \t\tNÉV megadva, az összes törlése\n" +" -D\tkiegészítések és műveletek alkalmazása alapértelmezésben, ha\n" +" \t\taz adott parancshoz nincs kiegészítés megadva\n" +" -E\tkiegészítések és műveletek alkalmazása az „üres†parancsokra,\n" +" \t\tvagyis a sor elején\n" +" -I\tkiegészítések és műveletek alkalmazása a kezdeti (általában a\n" +" \t\tparancs) szóra\n" +" \n" +" Kiegészítéskor a műveletek a nagybetűs kapcsolók felsorolásának\n" +" sorrendjében kísérli meg a Readline. A -D elsÅ‘bbséget élvez a -E-vel\n" +" szemben.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve érvénytelen kapcsoló és hiba esetén." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Lehetséges kiegészítések megjelenítése a kapcsolóktól függÅ‘en.\n" +" \n" +" Függvényben való használatra szolgál a lehetséges kiegészítések " +"generálása\n" +" céljából. Ha az elhagyható SZÓ argumentum is meg van adva, a SZÓRA\n" +" elölrÅ‘l illeszkedÅ‘ találatok jelennek csak meg.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel lép ki, kivéve érvénytelen kapcsoló vagy hiba esetén." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Kiegészítési beállítások módosítása vagy kiírása.\n" +" \n" +" Kiegészítési beállítások listázása minden NÉVHEZ, vagy ha nincs NÉV\n" +" megadva, akkor az éppen zajló kiegészítésre. Ha nincs KAPCSOLÓ megadva,\n" +" kiírja a kiegészítési beállításokat minden NÉVHEZ vagy az aktuális\n" +" kiegészítéshez.\n" +" \n" +" Kapcsolók:\n" +" \t-o kapcsoló\ta KAPCSOLÓ kiegészítési beállítás megadása minden NÉVHEZ\n" +" \t-D\t\tAz alapértelmezett kiegészítés beállításainak módosítása\n" +" \t-E\t\tAz üres kiegészítés beállításainak módosítása\n" +" \t-I\t\tA kezdeti szón történÅ‘ kiegészítés beállításainak módosítása\n" +" \n" +" A „-o†helyett „+o†használatával a beállítás kikapcsolható.\n" +" \n" +" Argumentumok:\n" +" \n" +" Minden NÉV egy parancsra vonatkozik, amelyhez egy kiegészítést elÅ‘zÅ‘leg\n" +" meg kell adni a „complete†paranccsal. Ha nincs NÉV megadva, a compopt-" +"ot\n" +" egy éppen kiegészítéseket generáló függvénybÅ‘l kell hívni, és a zajló\n" +" generálásra fog vonatkozni.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel lép ki, kivéve ha érvénytelen kapcsolókat kap, vagy a NÉV " +"nincs\n" +" még megadva." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Sorok beolvasása a szabványos bemenetrÅ‘l egy indexelt tömbbe.\n" +" \n" +" Sorok beolvasása a szabványos bemenetrÅ‘l – vagy a -u megadása esetén az " +"FD\n" +" fájlleíróból – egy megadott nevű TÖMBBE (elhagyása esetén az ARRAY-be).\n" +" \n" +" Kapcsolók:\n" +" -d elvál\tAz ELVÃL használata sorlezáróként újsor helyett\n" +" -n szám\tLegfeljebb SZÃM sor másolása. Ha a SZÃM 0, minden sor\n" +" \t\tmásolásra kerül\n" +" -O kezdet\tKEZDET számú indextÅ‘l kezdje a TÖMB-be másolást.\n" +" \t\tAlapértelmezés: 0\n" +" -s szám\tAz elsÅ‘ SZÃM sor eldobása olvasáskor\n" +" -t\tA sorok végérÅ‘l a záró ELVÃL (alapesetben: újsor) eltávolítása\n" +" -u fd\tSzabványos bemenet helyett az FD fájlleíróból olvasson\n" +" -C parancs\tA PARANCS végrehajtása minden TÃVOLSÃG sor után\n" +" -c távolság\tA PARANCS végrehajtásai között beolvasott sorok száma\n" +" \n" +" Argumentumok:\n" +" TÖMB\tBeolvasáshoz használt tömb neve\n" +" \n" +" Ha a -C -c nélkül van megadva, az alapértelmezett távolság 5000.\n" +" A PARANCS végrehajtásakor utolsó argumentumként a parancs megkapja a\n" +" következÅ‘ beolvasandó elem indexét.\n" +" \n" +" Ha nincs KEZDET megadva, a mapfile törli a TÖMB tömböt olvasás elÅ‘tt.\n" +" \n" +" Kilépési kód:\n" +" Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy csak olvasható,\n" +" vagy nem indexelt TÖMB megadása esetén." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Sorok olvasása egy tömbváltozóba.\n" +" \n" +" A „mapfile†szinonimája." + +# see $ help caller +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Az aktuális szubrutinhívás helyével tér vissza.\n" +#~ " \n" +#~ " EXPR nélkül a " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: %5ld. folyamat (%s) a the_pipeline-ban" + +#~ msgid "Unknown Signal #" +#~ msgstr "Ismeretlen szignál #" diff --git a/bash-5.1/po/id.gmo b/bash-5.1/po/id.gmo new file mode 100644 index 0000000000000000000000000000000000000000..61f53205e035b064b6f4360f0c7d18e42cc7751f GIT binary patch literal 87778 zcmce<31D1Tb^reyO2QZdAwYn#y*OTDkGzBg@Dh-1ITo=cVaW;L8fzqtq=`l|%8bSf zxGbfGvJ^_8Wob!RTcGS~3lzFg_N^?10xeLW1-j55ZGo1S{y*Py?tSmgNOGJ)|4N>} z^WMAfF6W+m&bjBFci-P!`g6aT@b|-2NpgSib9YOUmtT-1&wh}uCdnmNCJFy1cjuo= z!QJ3)a2Q+*J{w#Oz6HE1_+Icr@MGWu!OwvA1pgnXEHB)gB$t8f!Fz#wz!EqL-W@z1 z?l%KIE#ON*mH&3|0pN!~s+xQYOu>H#Rqkb5lH?xX1HgNO+rj&RgWyK63T_3T1MULf z2dW+a3GM_RRQCEkHsH;mp8HjB4fqyN?fD!idVL2}eJ<=vlB>YAUcm2mCUq_WT>DaxdBD?d=1Ves4Ihf|qc9 z22{Fdf_m;XpvwCINEXSL!ujg$emw<6=W9TkmJEjLr$Dv$*T74_*Mav1-xJP152}Cv z4iw!l+~IV3AgFp@1zrvw0+mk#+yp)g{CV&lpxXIq@KW&aLFMzGp!)Mth^uz22UBoA zsQjuRU6(u^)N^kS_df(Gzi)#VgZ~54)a2p^I~}eCb^cgT^?nwp=YJo(8~DC({z*{z zd>vGMegvxBmt5`bx)N0V_kk+saiHp12bJ$LLGi)s!u7uZ@5TA|0^ac&r^EfgyK;R1 zRQfTHDko0>MXxu3>c5YJ_XNKU-WmLFQ0Yq#@qXC`DxZE(^%( M%I4D5hcfNu)d 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 E2YVCT&Hw-a literal 0 HcmV?d00001 diff --git a/bash-5.1/po/id.po b/bash-5.1/po/id.po new file mode 100644 index 0000000..b0c244e --- /dev/null +++ b/bash-5.1/po/id.po @@ -0,0 +1,6760 @@ +# Pesan Bahasa Indonesia untuk bash +# Copyright (C) 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Arif E. Nugroho , 2008, 2009, 2010, 2011, 2012, 2013, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 4.3-rc2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2014-08-06 12:45+0700\n" +"Last-Translator: Arif E. Nugroho \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "array subscript buruk" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: tidak dapat mengubah index ke array yang berassosiasi" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: kunci array assosiasi tidak valid" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: tidak dapat mengassign ke index tidak-numeric" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: harus menggunakan subscript ketika memberikan assosiasi array" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: tidak dapat membuat: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: tidak dapat menemukan keymap untuk perintah" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: bukan karakter whitespace (spasi) pertama ditemukan `\"'" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "tidak menutup '%c' dalam %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: hilang pemisah colon" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "'%s': tidak dapat melepaskan" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "brace expansion: cannot allocate memory for %s" + +#: braces.c:406 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "brace expansion: failed to allocate memory for %d elements" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "brace expansion: failed to allocate memory for `%s'" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "`%s': nama alias tidak valid" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "pengubahan baris tidak aktif" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "'%s': nama keymap tidak valid" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: tidak dapat membaca: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "'%s': nama fungsi tidak dikenal" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s tidak terikat ke kunci apapun.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s dapat dipanggil melalui " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "'%s': tidak dapat melepaskan" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "jumlah loop" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "hanya berarti dalam sebuah `for', `while', atau `until'loop" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Mengembalikan context dari panggilan subroutine saat ini.\n" +" \n" +" Tanpa EXPR, mengembalikan \"$line $filename\". Dengan EXPR,\n" +" mengembalikan \"$line $subroutine $filename\"; informasi extra ini\n" +" dapat digunakan untuk menyediakan jejak stack.\n" +" \n" +" Nilai dari EXPR mengindikasikan bagaimana banyak panggilan frames " +"kembali sebelum\n" +" yang ada; Top frame adalah frame 0. \n" +" Status Keluar:\n" +" Mengembalikan 0 kecuali shell sedang tidak menjalankan sebuah fungsi " +"shell atau EXPR\n" +" tidak valid." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME tidak diset" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "terlalu banyak argumen" + +#: builtins/cd.def:342 +#, fuzzy +msgid "null directory" +msgstr "top direktori yang baru." + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD tidak diset" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "baris %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "peringatan: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: penggunaan: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: pilihan membutuhkan sebuah argumen" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: argumen numeric dibutuhkan" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: tidak ditemukan" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: pilihan tidak valid" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nama pilihan tidak valid" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': bukan sebuah identifier yang valid" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "nomor oktal tidak valid" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "nomor hexa tidak valid" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "nomor tidak valid" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: spesifikasi sinyal tidak valid" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s': bukan sebuah pid atau spesifikasi pekerjaan yang valid" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: variabel baca-saja" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s diluar jangkauan" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argumen" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s diluar jangkauan" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: tidak ada pekerjaan seperti itu" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: tidak ada pengontrol kerja" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "tidak ada pengontrol kerja" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: terbatas" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "terbatas" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: bukan sebuah builtin shell" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "gagal menulis: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "error menentukan atribut terminal: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "error mendapatkan atribut terminal: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: error mengambil direktori saat ini: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: spesifikasi pekerjaan ambigu" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: tidak dapat unset: baca-saja %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: tidak dapat unset" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nama aksi tidak valid" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: tidak ada spesifikasi completion" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "" +"peringatan: pilihan -F mungkin tidak bekerja seperti yang anda harapkan" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "" +"peringatan: pilihan -C mungkin tidak bekerja seperti yang anda harapkan" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "saat ini sedang tidak menjalankan fungsi completion" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "hanya dapat digunakan dalam sebuah fungsi" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: reference variable cannot be an array" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: nameref variable self references not allowed" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: circular name reference" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "tidak dapat menggunakan `-f' untuk membuat fungsi" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: fungsi baca-saja" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: tidak dapat menghapus variabel array secara ini" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: tidak dapat mengubah assosiasi ke array index" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dynamic loading tidak tersedia" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "tidak dapat membuka object shared %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "tidak dapat menemukan %s dalam shared object %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: bukan dinamically loaded" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: bukan dinamically loaded" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: tidak dapat menghapus: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: bukan sebuah direktori" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: bukan sebuah file umum" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: file terlalu besar" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: tidak dapat menjalankan berkas binary" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: tidak dapat menjalankan: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "logout\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "bukan sebuah login shell: gunakan `exit'" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Ada pekerjaan yang terhenti.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Ada pekerjaan yang sedang berjalan.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "perintah tidak ditemukan" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "spesifikasi sejarah" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: tidak dapat membuka file sementara: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "sekarang" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "pekerjaan %d dimulai tanpa pengontrol pekerjaan" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: pilihan tidak legal -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: pilihan membutuhkan sebuah argumen -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hashing dinonaktifkan" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tabel hash kosong\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "tekan\tperintah\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Perintah shell cocok dengan kata kunci `" +msgstr[1] "Perintah shell cocok dengan kata kunci `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"tidak ada topik bantuan yang cocok dengan `%s'. Coba `help help' atau 'man -" +"k %s' atau `info %s'." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: tidak dapat membuka: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Perintah shell ini didefinisikan secara internal. Ketik `help' untuk melihat " +"daftar ini.\n" +"Ketik `help nama' untuk informasi lebih lanjut mengenai fungsi `nama'.\n" +"Gunakan `info bash' untuk informasi lebih lanjut mengenasi shell secara " +"umum.\n" +"Gunakan `man -k' atau `info' untuk informasi lebih lanjut mengenai perintah " +"yang tidak ada dalam daftar ini.\n" +"\n" +"Sebuah asterisk (*) disebelah dari nama berarti perintah tersebut tidak " +"aktif.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "tidak dapat menggunakan lebih dari satu pilihan dari -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "posisi sejarah" + +#: builtins/history.def:340 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: argumen limit tidak valid" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: expansi sejarah gagal" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib gagal" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "tidak ada pilihan lain yang diperbolehkan dengan `-x'" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumen harus diproses atau ID pekerjaan" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Kesalahan tidak diketahui" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "diduga sebuah ekspresi" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: bukan sebuah indeks array" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: spesifikasi file deskripsi tidak valid" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: file deskriptor %s tidak valid" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: jumlah baris tidak valid" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: asal array tidak valid" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: nama aksi tidak valid" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "nama variabel array kosong" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "bantuan array variabel dibutuhkan" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': hilang karakter format" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "`%c': spesifikasi timeout tidak valid" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "`%c': karakter format tidak valid" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "peringatan: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "format parsing problem: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "hilang digit hexa untuk \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "hilang digit hexa untuk \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "tidak ada direktori lain" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: argumen limit tidak valid" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "direktori stack kosong" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "index direktori stack" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Menampilkan daftar dari direktori yang diingat saat ini. Direktori\n" +" menemukan jalannya kedalam daftar dengan perintah `pushd'; anda dapat " +"memperoleh\n" +" backup melalui daftar dengan perintah `popd'.\n" +" \n" +" Pilihan:\n" +" -c\tmenghapus direktori stact dengan menghapus seluruh elemen\n" +" -l\tjangan menampilkan versi dengan tilde dari direktori relative\n" +" \tke direkori rumah anda\n" +" -p\tmenampilkan direktori stack dengan satu masukan per baris\n" +" -v\tmenampilkan direktori stack dengan satu masukan per baris diawali\n" +" \tdengan posisnya dalam stack\n" +" \n" +" Argumen:\n" +" +N\tMenampilkan masukan ke N dihitung dari kiri dari daftar yang " +"ditampilkan oleh\n" +" \tdirs ketika dipanggil tanpa pilihan, dimulai dari nol.\n" +" \n" +" -N\tMenampilkan masukan ke N dihitung dari kanan dari daftar yang " +"ditampilkan oleh\n" +" \tdirs ketika dipanggil tanpa pilihan, dimulai dari nol." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Menambahkan sebuah direktori ke top dari direktori stack, atau merotasi\n" +" stack, membuah top baru dari stack dari working direktori saat ini.\n" +" Tanpa argumen, menukar top dari dua direktori.\n" +" \n" +" Pilihan:\n" +" -n\tmenekan perubahan normal dari direktori ketika menambahkan " +"direktori\n" +" \tke stack, jadi hanya stack yang dimanipulasi.\n" +" \n" +" Argumen:\n" +" +N\tMerotasi stack sehingga direktori ke N (dihitung\n" +" \tdari kiri dari daftar yang terlihat oleh `dirs', dimulai dengan\n" +" \tnol) adalah di top.\n" +" \n" +" -N\tMerotasi stack sehingga direktori ke N (dihitung\n" +" \tdari kanan dari daftar yang terliha oleh `dirs', dimulai dengan\n" +" \tnol) adalah di top.\n" +" \n" +" dir\tenambahkan DIR ke direktori stack di puncak, membuatnya\n" +" \tcurrent working directory.\n" +" \n" +" Builtin `dirs' menampilkan direktori stack." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Manghapus masukan dalam direktori stack. Tanpa argumen,\n" +" menghapus top direktori dari stack, dan cd's ke top\n" +" direktori baru.\n" +" \n" +" Pilihan:\n" +" -n\tmenekan perubahan normal dari direktori ketika menghapus direktori\n" +" \tdari stack, jadi hanya stack yang dimanipulasi.\n" +" \n" +" Argumen:\n" +" -N\tmenghapus masukan ke N dihitung dari kiri dari daftar\n" +" \tyang ditampilkan oleh `dirs', dimulai dari nol. Sebagai contoh: `popd " +"+0'\n" +" \tmenghapus direktori terakhir, `popd -1' sebelum terakhir.\n" +" \n" +" Builtin `dirs' menampilkan direktori stack." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: spesifikasi timeout tidak valid" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "error baca: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "hanya dapat `return' dari sebuah fungsi atau script yang disource" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "tidak dapat secara simultan unset sebuah fungsi dan sebuah variable" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: bukan sebuah variabel array" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: bukan sebuah fungsi" + +#: builtins/setattr.def:194 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: tidak dapat unset" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "shift terhitung" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "tidak dapat menset dan menunset pilihan shell secara bersamaan" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: nama pilihan shell tidak valid" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "argumen nama file dibutuhkan" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: berkas tidak ditemukan" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "tidak dapat suspend" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "tidak dapat suspend sebuah login shell" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s sudah dialiasi ke `%s'\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s adalah sebuah shell dengan kata kunci\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s adalah sebuah fungsi\n" + +#: builtins/type.def:299 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s adalah sebuah shell builtin\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s adalah sebuah shell builtin\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s adalah %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s memiliki hash (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: argumen limit tidak valid" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': perintah buruk" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: tidak dapat get limit: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "batas" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: tidak dapat memodifikasi batas: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "nomor oktal" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': operator mode symbolic tidak valid" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': mode karakter symbolic tidak valid" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " baris " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "perintah terakhir: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "membatalkan..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:462 +msgid "unknown command error" +msgstr "perintah error tidak diketahui" + +#: error.c:463 +msgid "bad command type" +msgstr "tipe perintah buruk" + +#: error.c:464 +msgid "bad connector" +msgstr "konektor buruk" + +#: error.c:465 +msgid "bad jump" +msgstr "lompat buruk" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variabel tidak terikat" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "kehabisan waktu menunggu masukan: otomatis-keluar\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "tidak dapat menyalurkan masukan standar dari /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': karakter format tidak valid" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "pipe error" + +#: execute_cmd.c:4793 +#, fuzzy, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "%s: maximum function nesting level exceeded (%d)" + +#: execute_cmd.c:4805 +#, fuzzy, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: maximum function nesting level exceeded (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: maximum function nesting level exceeded (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" +"%s: dibatasi: tidak dapat menspesifikasikan '/' dalam nama nama perintah" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: perintah tidak ditemukan" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: interpreter buruk" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: tidak dapat menjalankan berkas binary: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "`%s': adalah sebuah shell builtin" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "tidak dapat menduplikasikan fd %d ke fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "expresi level rekursi terlewati" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "rekursi stack underflow" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "syntax error dalam expresi" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "mencoba menempatkan ke bukan sebuah variabel" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "syntax error dalam expresi" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "dibagi oleh 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "bug: tanda expassign buruk" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "`:' diharapkan untuk sebuah pernyataan kondisional" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "eksponen kurang dari 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "idenfier diharapkan setelah pre-increment atau pre-decrement" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "hilang `)'" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "syntax error: operand diharapkan" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntax error: operator arithmetic tidak valid" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (error token adalah \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "basis arithmetic tidak valid" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: jumlah baris tidak valid" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "nilai terlalu besar untuk basis" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: expresi error\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: tidak dapat mengakses direktori orang tua" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "tidak dapat mereset mode nodelay untuk fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"tidak dapat mengalokasikan berkas deskripsi bari untuk masukan bash dari fd " +"%d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "simpan bash_input: buffer telah ada untuk fd %d baru" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "forked pid %d terlihat dalam pekerjaan yang sedang berjalan %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "menghapus pekerjaan yang terhenti %d dengan proses grup %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) ditandai dengan tetap hidup" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: tidak ada pid seperti itu" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "sinyal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Selesai" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Terhenti" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Terhenti(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Berjalan" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Selesai(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Keluar %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Status tidak diketahui" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(core didump) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "anak setpgid (%ld ke %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld bukan sebuah anak dari shell ini" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Tidak ada catatan untuk proses %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: pekerjaan %d terhenti" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: tidak ada pekerjaan seperti itu" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: pekerjaan telah selesai" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: pekerjaan %d sudah berjalan di belakang (background)" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: mengaktifkan WNOHANG untuk menghindari blok tak terhingga" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: baris %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (core didump)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd sekarang: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp gagal" + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: baris disiplin" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: baris disiplin" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "tidak dapat menset terminal proses grup (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "tidak ada pengontrol pekerjaan dalam shell ini" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: gagal assertion: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: assertion rusak\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "tidak diketahui" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: blok dalam daftar bebas clobbered" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: dipanggil dengan argumen blok yang sudah dibebaskan" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: dipanggil dengan argumen blok yang tidak dialokasikan" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: awal dan akhir dari ukuran potongan berbeda" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: dipanggil dengan argumen blok yang tidak teralokasikan" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: awal dan akhir dari ukuran potongan berbeda" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: tabel alokasi penuh dengan FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" +"register_alloc: %p sudah berada dalam tabel sepertinya sudah dialokasikan?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p sudah berada dalam tabel sebagai bebas?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "basis tidak valid" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: host tidak diketahui" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: layanan tidak valid" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: spesifikasi jalur network buruk" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "operasi jaringan tidak dilayani" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: tidak dapat mengubah lokal (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: tidak dapat mengubah local (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: tidak dapat mengubah lokal (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: tidak dapat mengubah lokal (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Anda memiliki surat dalam $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Anda memiliki surat baru dalam $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Surat dalam %s telah dibaca\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "syntax error: membutuhkan ekspresi arithmetic" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "syntax error: `;' tidak terduga" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntax error: `((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tipe instruksi buruk %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"dokumen-disini di baris %d dibatasi oleh akhir-dari-berkas (diinginkan `%s')" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: instruksi redireksi `%d' diluar dari jangkauan" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "EOF tidak terduga ketika mencari untuk pencocokan `%c'" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "EOF tidak terduga ketika mencari untuk `]]'" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntax error dalam ekspresi kondisional: tanda `%s' tidak terduga" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "syntax error dalam ekspresi kondisional" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "tanda `%s' tidak terduga, diduga `)'" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "diduga `)'" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argumen tidak terduga `%s' ke operator kondisional unary" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "argumen tidak terduga untuk operasi unary kondisional" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "tanda `%s' tidak terduga, operator binary kondisional diduga" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "operator binary kondisional diduga" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argumen `%s' tidak terduga ke operator binary kondisional" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "argumen tidak terduga ke operasi binary kondisional" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "tanda `%c' tidak terduga dalam perintah kondisional" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "tanda `%s' tidak terduga dalam perintah kondisional" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "tanda %d tidak terduga dalam perintah kondisional" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntax error didekat tanda `%s' yang tidak terduga" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntax error didekat `%s'" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "syntax error: tidak terduga diakhir dari berkas" + +#: parse.y:6365 +msgid "syntax error" +msgstr "syntax error" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Gunakan \"%s\" untuk meninggalkan shell.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "EOF tidak terduga ketika mencari untuk pencocokan ')'" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: fungsi `%s' tidak ditemukan" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: konektor buruk `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: berkas pendeskripsi tidak valid" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: berkas penunjuk KOSONG" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: '%c': format karakter tidak valid" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "berkas deskripsi diluar dari jangkauan" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: redirect ambigu" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: tidak dapat menulis berkas yang sudah ada" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricted: tidak dapat meredirect keluaran" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "tidak dapat membuat berkas sementara untuk dokumen disini: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: tidak dapat meng-'assign' fd ke variabel" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port tidak dilayani tanpa jaringan" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "redirection error: tidak dapat menduplikasi fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "tidak dapat menemukan /tmp, tolong buat!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp harus berupa sebuah nama direktori yang valid" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: pilihan tidak valid" + +#: shell.c:1319 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "tidak dapat mereset mode nodelay untuk fd %d" + +#: shell.c:1330 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "tidak dapat mereset mode nodelay untuk fd %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: bukan sebuah direktori" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Aku tidak memiliki nama!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versi %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Penggunaan:\t%s [GNU pilihan panjang] [pilihan] ...\n" +"\t%s [GNU pilihan panjang] [pilihan] berkas-script ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU pilihan panjang:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Pilihan shell:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" +"\t-ilrsD atau -c perintah atau -O shopt_option\t\t(hanya pemanggilan)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s atau pilihan -o\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Ketik `%s -c \"help set\"' untuk informasi lebih lanjut mengenai pilihan " +"shell.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Ketik `%s -c help' untuk informasi lebih lanjut mengenai perintah builting " +"shell.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Gunakan perintah 'bashbug' untuk melaporkan bugs.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: operasi tidak valid" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Sinyal palsu" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Hangup" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Interupsi" + +#: siglist.c:58 +msgid "Quit" +msgstr "Berhenti" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Instruksi ilegal" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Instruksi ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "Instruksi EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Floating point exception" + +#: siglist.c:86 +msgid "Killed" +msgstr "Dibunuh" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Bus error" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Kesalahan segmentasi" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Pemanggilan sistem buruk" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Pipe rusak" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Alarm clock" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Selesai" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Kodisi IO penting" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Terhenti (sinyal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Melanjutkan" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Anak tewas atau berhenti" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Terhenti (tty input)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Terhenti (tty output)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O siap" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Batas CPU" + +#: siglist.c:154 +msgid "File limit" +msgstr "Batas berkas" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarm (virtual)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarm (profile)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Window berubah" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Catatan terkunci" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Sinyal pengguna 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Sinyal pengguna 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT masukan data tertunda" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "Kelihatannya akan terjadi kegagalan power suply" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "Kelihatannya akan terjadi kerusakan sistem" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "pindahkan proses ke CPU lain" + +#: siglist.c:198 +msgid "programming error" +msgstr "error dalam pemrograman" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT mode monitoring diberikan" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT mode monitoring ditarik" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFTP sound sequence telah selesai" + +#: siglist.c:214 +msgid "Information request" +msgstr "Permintaan informasi" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Sinyal tidak diketahui #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "substitusi buruk: tidak ada penutupan `%s' dalam %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: tidak dapat meng-assign daftar kedalam anggoya array" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "tidak dapat membuat pipe untuk proses substitusi" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "tidak dapat membuat anak untuk proses substitusi" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "tidak dapat membuka named pipe %s untuk membaca" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "tidak dapat membukan named pipe %s untuk menulis" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "tidak dapat menduplikasi nama pipe %s sebagai fd %d" + +#: subst.c:6213 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "tidak dapat membuat pipe untuk perintah substitusi" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "tidak dapat membuat anak untuk perintah substitusi" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: tidak dapat menduplikasikan pipe sebagi fd 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: jumlah baris tidak valid" + +#: subst.c:7013 subst.c:7177 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "`%s': nama alias tidak valid" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter kosong atau tidak diset" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter kosong atau tidak diset" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expresi < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substitusi buruk" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: tidak dapat meng-assign dengan cara ini" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"versi selanjutnya dari shell akan memaksa evaluasi dari sebuah penggantian " +"aritmetika" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "tidak cocok: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "argumen diharapkan" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: expresi integer diduga" + +#: test.c:265 +msgid "`)' expected" +msgstr "')' diduga" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "`)' diduga, ditemukan %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: operator binary diduga" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: operator unary diduga" + +#: test.c:881 +msgid "missing `]'" +msgstr "hilang `]'" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "syntax error: `;' tidak terduga" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "nomor sinyal tidak valid" + +#: trap.c:325 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "%s: maximum function nesting level exceeded (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: nilai buruk dalam trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: sinyal handler adalah SIG_DFL, mengirimkan kembali %d " +"(%s) kediri sendiri" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: sinyal buruk %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "error mengimpor definisi fungsi untuk `%s'" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "level shell (%d) terlalu tinggi, mereset ke 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: tidak ada context fungsi di scope ini" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: tidak dapat meng-'assign' fd ke variabel" + +#: variables.c:3475 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: tidak ada context fungsi dalam scope ini" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s memiliki exportstr kosong" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "karakter %d tidak valid dalam exporstr untuk %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "bukan `=' dalam exportstr untuk %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context: kepala dari shell_variables bukan sebuah fungsi cbntext" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: bukan global_variable context" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: kepala dari shell_variables bukan sebuah scope lingkungan " +"sementara" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: tidak dapat membuka sebagai BERKAS" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: nilai dari berkas pendeskripsi penelusur tidak valid" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: diluar jangkauan" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Hak Cipta (C) 2012 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Lisensi GPLv3+: GNU GPL versi 3 atau sesudahnya \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versi %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"Ini adalah perangkat lunak bebas; anda bebas untuk mengubah dan " +"mendistribusikannya." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "TIDAK ADA GARANSI, selama masih diijinkan oleh hukum yang berlaku." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: tidak dapat mengalokasikan %lu bytes (%lu bytes teralokasi)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: tidak dapat mengalokasikan %lu bytes" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: tidak dapat mengalokasikan %lu bytes (%lu bytes teralokasi)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s: %d: tidak dapat teralokasi %lu bytes" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [name[=nilai] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] name [nama ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVSX] [-m keymap] [-f nama berkas] [-q nama] [-u nama] [-r " +"keyseq] [-x keyseq:perintah-shell] [keyseq:readline-function atau readline-" +"command]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "pemanggil [expr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [direktori]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "perintah [-pVv] perintah [argumen ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [name[=nilai] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilrtux] [-p] name[=nilai] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [pilihan] name[=nilai] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f nama berkas] [name ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [argumen ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts nama optstring [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a nama] [perintah [argumen ...]] [redireksi ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e ename] [-lnr] [pertama] [terakhir] atau fc -s [pat=rep] [perintah]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [spesifikasi pekerjaan]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [spesifikasi pekerjaan ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p nama jalur] [-dt] [nama ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "bantuan [-dms] [pola ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"sejarah [-c] [-d ofset] [n] atau history -anrw [nama berkas] atau history -" +"ps arg [arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [spesifikasi pekerjaan ...] atau jobs -x perintah [args]" + +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [spesifikasi pekerjaan ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s spesifikasi sinyal | -n nomor sinyal | -sigspec] pid | jobsepc ... " +"atau kill -l [sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "biarkan arg [argumen ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a array] [-d pembatas] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nama-pilihan] [--] [argumen ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [name ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [name[=nilai] ...] atau export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [name[=nilai] ...] atau readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source nama berkas [argumen]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". nama berkas [argumen]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] spesifikasi sinyal ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] nama [name ...]" + +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [batas]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mode]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-n] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAMA [in WORDS ...] ; do PERINTAH; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do PERINTAH; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAMA [ in WORDS ... ;] do PERINTAH; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case WORD in [POLA [| POLA]...) PERINTAH ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if PERINTAH; then PERINTAH; [ elif PERINTAH; then PERINTAH; ]... [ else " +"PERINTAH; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while PERINTAH; do PERINTAH; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until PERINTAH; do PERINTAH; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAMA] perintah [redireksi]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function name { PERINTAH; } atau name () { PERINTAH ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ PERINTAH ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( expressi ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ expressi ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variabel - Nama dan arti dari beberapa shell variabel" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [optname ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [argumen]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o pilihan] [-A action] [-G globpat] [-" +"W daftar kata] [-F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o pilihan] [-A aksi] [-G globpat] [-W wordlist] [-" +"F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S suffix] [word]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o pilihan] [-DE] [nama ...]" + +#: builtins.c:242 +#, fuzzy +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" + +#: builtins.c:256 +#, fuzzy +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definisikan atau tampilkan aliases.\n" +" \n" +" `alias' dengan tanpa argumen atau dengan pilihan -p menampilkan daftar\n" +" dari aliases dalam bentuk alias NAMA=NILAI di keluaran standar.\n" +" \n" +" Jika tidak, sebuah alias didefinisikan untuk setiap NAMA yang NILAI-nya " +"diberikan.\n" +" sebuah tambahan spasi dalam NILAI menyebabkan kata selanjutnyan untuk " +"diperikasi untuk\n" +" pengganti alias ketika alias diexpand.\n" +" \n" +" Pilihan:\n" +" -p\tTampilkan seluruh alias yang terdefinisi dalam format yang " +"berguna\n" +" \n" +" Status Keluar:\n" +" alias mengembalikan true sampai sebuah NAMA diberikan yang mana belum " +"ada alias yang\n" +" terdefinisi." + +#: builtins.c:278 +#, fuzzy +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Hapus setiap NAMA dari daftar yang mendefinisikan aliases.\n" +" \n" +" Pilihan:\n" +" -a\thapus semua definisi alias.\n" +" \n" +" Mengembalikan sukses kecuali sebuah NAMA bukan alias yang sudah ada." + +#: builtins.c:291 +#, fuzzy +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Set Readline kunci pengikat dan variabel.\n" +" \n" +" Ikat sebuah urutan kunci ke fungsi readline atau sebuah macro, atau set\n" +" sebuah variabel readline. Argumen bukan-pilihan syntax yang equivalent\n" +" yang ditemukan dalam ~/.inputrc, tetapi harus dilewatkan sebagai sebuah " +"argumen tunggal:\n" +" yang terikat '\"\\C-x\\C-r\": membaca kembali berkas inisialisasi.\n" +" \n" +" Pilihan:\n" +" -m keymap Gunakan `keymap' sebagai keymap untuk durasi dari " +"perintah\n" +" ini. Nama keymap yang diterima adalah emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, dan vi-insert.\n" +" -l Daftar dari nama fungsi.\n" +" -p Daftar dari nama fungsi dan bindings.\n" +" -p Daftar dari fungsi dan bindings dalam bentuk yang " +"dapat digunakan sebagai\n" +" masukan.\n" +" -S Daftar urutan kunci yang memanggil macros " +"dannilainya\n" +" -s Daftar urutan kunci yang memanggil macros " +"dannilainya\n" +" dalam sebuah bentuk yang dapat digunakan sebagai " +"sebuah masukan. -V Daftar nama variabel dan nilai\n" +" -v Daftar nama variabel dan nilai dalam bentuk yang " +"dapat digunakan\n" +" sebagai masukan.\n" +" -q nama-fungsi Minta tentang kunci mana yang dipanggil oleh fungsi " +"yang disebut.\n" +" -u nama-fungsi Unbind semua kunci yang terikat dengan nama-" +"fungsi.\n" +" -r keyseq Hapus binding untuk KEYSEQ.\n" +" -f namafile Baca kunci bindings dari NAMAFILE.\n" +" -x keyseq:shell-command\tMenyebabkan SHELL-COMMAND untuk dijalankan " +"ketika\n" +" \t\t\t\tKEYSEQ dimasuki.\n" +" \n" +" Status Keluar:\n" +" bind memberikan kembalian 0 kecuali sebuah pilihan tidak dikenal " +"diberikan atau sebuah error terjadi." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Keluar dari for, while, atau until loops.\n" +" \n" +" Keluar untuk FOR, WHILE atau UNTIL loop. Jika N dispesifikasikan, keluar " +"N yang melingkupi\n" +" loops.\n" +" \n" +" Status Keluar:\n" +" Status keluar adalah 0 kecuali N tidak lebih besar atau sama dengan 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Melanjutkan for, while, atau until loops.\n" +" \n" +" Melanjutkan ke iterasi selanjutnya dari loop yang dilingkupi oleh FOR, " +"WHILE, atau UNTIL.\n" +" Jika N dispesifikasikan, melanjutkan di posisi ke N dari loop yang " +"dilingkupi. \n" +" Status Keluar:\n" +" Status keluar adalah 0 kecuali N tidak lebih besar atau sama dengan 1." + +#: builtins.c:354 +#, fuzzy +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Menjalankan shell builtins.\n" +" \n" +" Menjalankan SHELL-BUILTIN dengan argumen ARGs tanpa menjalankan " +"pencarian\n" +" perintah. Ini berguna ketika anda menginginkan untuk mengimplementasikan " +"sebuah shell builtin\n" +" sebagai sebuah fungsi shell, tetapi butuh untuk menjalankan builtin " +"dalah fungsi.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status keluar dari SHELL-BUILTIN, atau salah jika SHELL-" +"BUILTIN adalah\n" +" bukan sebuah shell builtin.." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Mengembalikan context dari panggilan subroutine saat ini.\n" +" \n" +" Tanpa EXPR, mengembalikan \"$line $filename\". Dengan EXPR,\n" +" mengembalikan \"$line $subroutine $filename\"; informasi extra ini\n" +" dapat digunakan untuk menyediakan jejak stack.\n" +" \n" +" Nilai dari EXPR mengindikasikan bagaimana banyak panggilan frames " +"kembali sebelum\n" +" yang ada; Top frame adalah frame 0. \n" +" Status Keluar:\n" +" Mengembalikan 0 kecuali shell sedang tidak menjalankan sebuah fungsi " +"shell atau EXPR\n" +" tidak valid." + +#: builtins.c:387 +#, fuzzy +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Pindah direktori kerja shell.\n" +" \n" +" Pindah direktori saat ini ke DIR. Variabel $HOME adalah\n" +" default DIR.\n" +" \n" +" Variabel CDPATH mendefinisikan jalur pencarian untuk\n" +" direktori yang berisi DIR. Alternatif nama direktori dalam CDPATH\n" +" dipisahkan oleh sebuah colon (:). Sebuah nama direktori kosong adalah " +"sama dengan\n" +" direktori saat ini. i.e. `.'. Jika DIR dimulai dengan sebuah slash (/),\n" +" maka CDPATH tidak digunakan.\n" +" \n" +" Jika direktori tidak ditemukan, dan\n" +" pilihan shell cdable_vars' diset, maka coba kata sebagai sebuah nama\n" +" variabel. Jika variabel itu memiliki sebuah nilai, maka nilai dari " +"variabel itu yang digunakan\n" +" \n" +" Pilihan:\n" +" -L\tmemaksa link simbolik untuk diikuti\n" +" -P\tgunakan struktur physical direktori tanpa mengikuti link\n" +" symbolik\n" +" \n" +" Default adalah mengikuti link simbolik, seperti dalam `-L' " +"dispesifikasikan.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan 0 jika direktori berubah; bukan nol jika tidak." + +#: builtins.c:425 +#, fuzzy +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Menampilkan nama dari direktori yang digunakan sekarang.\n" +" \n" +" Pilihan:\n" +" -L\tmenampilkan nilai dari $PWD jika ini nama dari direktori\n" +" \tyang digunakan sekarang\n" +" -P\tmenampilkan direktori pisik, tanpa link simbolik apapun\n" +" \n" +" Secara default, `pwd' berlaku seperi jika pilihan `-L' " +"dispesifikasikan.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan 0 kecuali jika sebuah pilihan tidak valid diberikan atau " +"direktori sekarang\n" +" tidak bisa dibaca." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Perintah kosong.\n" +" \n" +" Tidak ada efek; perintah tidak melakukan apa-apa.\n" +" \n" +" Status Keluar:\n" +" Selalu sukses." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Mengembalikan sebuah hasil yang sukses.\n" +" \n" +" Status Keluar:\n" +" Selalu sukses." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Mengembalikan sebuah kembaliah yang tidak sukses.\n" +" \n" +" Status Keluar:\n" +" Selalu gagal." + +#: builtins.c:471 +#, fuzzy +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Menjalankan sebuah perintah sederhana atau menampilkan informasi mengenai " +"perintah.\n" +" \n" +" Menjalankan PERINTAH tanpa ARGS menekan fungsi pencarian shell, atau " +"menampilkan\n" +" informasi mengenasi PERINTAH tertentu. Dapat digunakan untuk memanggil " +"perintah\n" +" dalam disk ketika sebuah fungsi dengan nama yang sama ada.\n" +" \n" +" Pilihan:\n" +" -p\tgunakan sebuah nilai default untuk PATH yang menjamin untuk " +"mencari seluruh\n" +" \tpenggunaan stadar\n" +" -v\tmenampilkan deskripsi dari PERINTAH sama dengan `type' builtin\n" +" -V\tmenampilkan lebih jelas deskripsi dari setiap PERINTAH\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status keluar dari PERINTAH, atau gagal jika PERINTAH " +"tidak ditemukan." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Menset nilai variabel dan atribut.\n" +" \n" +" Variabel deklarasi dan memberikan atribut untuknya. Jika tidak ada NAMA " +"yang diberikan,\n" +" tampilkan atribut dan nilai dari seluruh variabel.\n" +" \n" +" Pilihan:\n" +" -f\tbatasi aksi atau tampilkan nama fungsi dan definisi\n" +" -F\tbatasi tampilan ke nama fungsi saja (tambahkan nomor baris dan\n" +" \tsumber berkas ketika debugging)\n" +" -p\ttampilkan atribut dan nilai dari setiap NAMA\n" +" \n" +" Pilihan yang menset atribut:\n" +" -a\tuntuk membuat NAMA idex array (jika didukung)\n" +" -A\tuntuk membuat NAMA assosiasi array (jika didukung)\n" +" -i\tuntuk membuat NAMA memiliki atribut `integer'\n" +" -l\tuntuk mengubah NAMA ke huruf kecil dalam assignment\n" +" -r\tuntuk membuah NAMA baca-saja\n" +" -u\tuntuk mengubah NAMA ke huruf besar dalam penempatan\n" +" -x\tuntuk membuah NAMA export\n" +" \n" +" Menggunakan `+' daripada `-' menonaktifkan atribut yang diberikan.\n" +" \n" +" Variabel dengan atribut integer memiliki evaluasi aritmetic (lihat\n" +" perintah `let') ditampilkan ketika variabel diberi sebuah nilai.\n" +" \n" +" Ketika digunakan dalam sebuah fungsi, `declare' membuat NAMA lokal, " +"seperti dengan\n" +" perintah `local'.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:532 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Menset nilai variabel dan atribut.\n" +" \n" +" Kadaluarsa. Lihat `help declare'." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Mendefinisikan variabel lokal.\n" +" \n" +" Membuat sebuah variabel locak dipanggil NAMA, dan memberikan kepadanya " +"NILAI. OPSI dapat\n" +" berupa semua pilihan yang diterima oleh `declare'.\n" +" \n" +" Variabel lokal hanya dapat digunakan dalam sebuah fungsi; mereka hanya\n" +" dapat dilihat ke fungsi dimana mereka terdefinisi dan anaknya.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan, " +"sebuah error terjadi.\n" +" atau shell tidak menjalankan sebuah fungsi." + +#: builtins.c:557 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Tulis argumen ke standar keluaran.\n" +" \n" +" Menampilkan ARG ke standar keluaran diikuti oleh baris baru.\n" +" \n" +" Pilihan:\n" +" -n\tjangan menambahkan sebuah baris baru\n" +" -e\taktifkan interpretasi dari karakter backslash\n" +" -E\tsecara eksplisit tekan interpretasi dari karakter backslash\n" +" \n" +" `echo' menginterpretasikan karakter backslash-escaped berikut:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress karakter baris baru yang tersisa\n" +" \\E\tescape karakter\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tkarakter yang memiliki kode ASCII NNN (oktal). NNN dapat " +"berupa\n" +" \t0 sampai 3 oktal digit\n" +" \\xHH\tdelapan-bit karakter yang nilainya adalah HH (hexadesimal). HH\n" +" \tdapat satu dari dua bilangan hex\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah penulisan error terjadi." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Menulis argumen ke standar output.\n" +" \n" +" Menampilkan ARG ke standard keluaran diikuti dengan sebuah baris baru.\n" +" \n" +" Pilihan:\n" +" -n\tjangan menambahkan sebuah baris baru\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah penulisan error terjadi." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Aktifkan dan non-aktifkan shell builtins.\n" +" \n" +" Aktifkan dan non-aktifkan perintah builtin shell. Menonaktifkan " +"membolehkan anda untuk\n" +" menjalankan sebuah perintah disk yang memiliki nama yang sama dengan " +"shell builtin\n" +" tanpa menggunakan sebuah nama jalur yang lengkap.\n" +" \n" +" Pilihan:\n" +" -a\ttampilkan daftar dari builtins memperlihatkan aktif atau tidak " +"setiap diaktifkan\n" +" -n\tmenonaktifkan setiap NAMA atau tampilkan daftar dari builtin yang " +"tidak aktif\n" +" -p\ttampilkan daftar dari builtins dalam format yang berguna\n" +" -s\ttampilkan yang nama dari Posix `special' builtins\n" +" \n" +" Pilihan mengontrol dynamic loading:\n" +" -f\tLoad builtin NAMA dari shared object NAMA BERKAS\n" +" -d\tHapus sebuah builtin diload dengan -f\n" +" \n" +" Tanpa pilihan, untuk setiap NAMA di aktifkan.\n" +" \n" +" Untuk menggunakan `test' ditemukan dalam $PATH daripada dalam shell " +"builtin\n" +" versi, ketik `enable -n test'.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali NAMA bukan sebuah shell builtin atau sebuah " +"error terjadi." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Menjalankan argumen sebagai sebuah perintah shell.\n" +" \n" +" Mengkombinasikan ARG dalam sebuah string tunggal, gunakan hasil sebagai " +"masukan dalam shell,\n" +" dan jalankan hasil dari perintah.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status keluar dari perintah atau sukses jika perintah " +"adalah kosong." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Ambil argumen pilihan.\n" +" \n" +" Getops digunakan oleh shell procedures untuk memparse parameter posisi.\n" +" \n" +" OPTSTRING berisi huruf pilihan yang dikenali; jika sebuah huruf\n" +" diikuti oleh sebuah colon, pilihan diduga akan berupa argumen,\n" +" yang seharusnya dipisahkan dari itu oleh spasi.\n" +" \n" +" Setiap waktu ini dipanggil, getopts akan menempatkan pilihan selanjutnya " +"dalam\n" +" $name shell variabel, menginisialisasi nama jiki ini tidak ada, dan\n" +" index dari argumen selanjutnya untuk diproses kedalam shell\n" +" variabel OPTIND. OPTIND diinisialisasi ke 1 setiap shell atau\n" +" sebuah shell script dipanggil. Ketika sebuah pilihan membutuhkan sebuah " +"argumen,\n" +" getopts menempatkan argumen itu kedalam variabel shell OPTARG.\n" +" \n" +" getopts melaporkan error dalam satu dari dua cara. Jika karakter " +"pertama\n" +" dari OPTSTRING adalah sebuah colon, getopts menggunakan silent error " +"laporan. Dalam\n" +" Mode ini, tidak ada pesan error yang ditampilkan. Jika sebuah pilihan " +"tidak valid terlihat\n" +" getops menempatkan karakter pilihan yang ditemukan ke OPTARG. Jika " +"sebuah\n" +" argumen yang dibutuhkan tidak ditemukan, getopts menempatkan sebuah ':' " +"kedalam NAME dan\n" +" menset OPTARG ke pilihan karakter yang ditemukan. Jika getopts tidak " +"dalam\n" +" mode silent, dan sebuah pilihan tidak valid terlihat getopts menempatkan " +"'?' kedalam\n" +" variabel NAME, OPTARG tidak diset, dan sebuah pesan analisis\n" +" tampilkan.\n" +" \n" +" Jika sebuah variabel shell OPTERR memiliki sebuah nilai 0, getopts " +"mendisable\n" +" pencetakan dari pesan error, bahkan jika karakter pertama dari\n" +" OPTSTRING bukan sebuah colon. OPTERR memiliki nilai 1 secara default.\n" +" \n" +" Getopts secara normal memparse parameter posisi ($0 - $9), tetapi jika\n" +" lebih dari satu argumen diberikan, mereka diparse. \n" +" Status Keluar:\n" +" Mengembalikan sukses jika sebuah pilihan ditemukan; gagal jika akhir " +"dari pilihan\n" +" ditemui atau sebuah error terjadi." + +#: builtins.c:694 +#, fuzzy +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Mengganti shell dengan perintah yang diberikan.\n" +" \n" +" Jalankan PERINTAH, ganti shell ini dengan aplikasi yang " +"dispesifikaskan.\n" +" ARGUMEN menjadi argumen dari PERINTAH. Jika PERINTAH tidak " +"dispesifikasikan,\n" +" setiap redireksi akan memiliki afek dalam shell sekarang.\n" +" \n" +" Pilihan:\n" +" -a nama\tlewatkan NAMA sebagai argumen ke nol ke PERINTAH\n" +" -c\t\tjalankan PERINTAH dengan sebuah environment kosong\n" +" -l\t\ttempatkan sebuah dash dalam argumen ke nol ke PERINTAH\n" +" \n" +" Jika perintah tidak dapat dijalankan, sebuah non-interaktif shell " +"keluar, kecuali\n" +" pilihan shell `execfail' diset.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali PERINTAH tidak ditemukan atau sebuah " +"redireksi error terjadi." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Keluar dari shell.\n" +" \n" +" Keluar dari shell dengan status dari N. Jika N diabaikan, status " +"keluaran\n" +" adalah status dari perintah terakhir yang dijalankan." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Keluar dari sebuah login shell.\n" +" \n" +" Keluar sebuah login shell dengan status keluar N. Mengembalikan sebuah " +"error jika tidak dijalankan\n" +" dalam sebuah login shell." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Tampilkan atau jalankan perintah dari daftar sejarah.\n" +" \n" +" fc biasa digunakan untuk mendaftar atau mengubah dan menjalankan " +"perintah dari daftar sejarah.\n" +" PERTAMA dan TERAKHIR dapat berupa nomor yang menspesifikasikan " +"jangkauan, atau PERTAMA dapat berupa sebuah\n" +" string, yang berarti adalah perintah yang berawal dengan string.\n" +" \n" +" Pilihan:\n" +" -e ENAME\tmemilih editor yang akan digunakan. Default adalah FCEDIT, " +"kemudian EDITOR,\n" +" \t\tkemudian vi.\n" +" -l \tdaftar baris daripada mengubahnya.\n" +" -n \tabaikan nomor baris ketika MENDAFTAR.\n" +" -r \tmembalik urutan dari baris (membuat yang terbaru terdaftar " +"pertama).\n" +" \n" +" Dengan `fc -s [pat=rep ...] [perintah]' format, perintah\n" +" dijalankan setelah substitusi OLD=NEW dilakukan.\n" +" \n" +" Sebuah alias yang berguna yang digunakan dengan ini r='fc -s', jadi " +"mengetikan `r cc'\n" +" menjalankan perintah terakhir yang diawali dengan `cc' dan mengetikan " +"'r' menjalankan kembali\n" +" perintah terakhir.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses atau status dari perintah yang dijalankan; tidak-" +"nol jika sebuah error terjadi." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Pindahkan pekerjaan di foreground.\n" +" \n" +" Tempatkan JOB_SPEC di foreground, dan buat ini pekerjaan saat ini. Jika\n" +" JOB_SPEC tidak ada, shell notion dari pekerjaan saat ini\n" +" yang digunakan.\n" +" \n" +" Status Keluar:\n" +" Status dari perintah yang ditempatkan di foreground, atau gagal jika " +"sebuah error terjadi." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Pindahkan pekerjaan ke background.\n" +" \n" +" Tempatkan setiap JOB_SPEC dalam background, seperti jika ini telah " +"dimulai dengan\n" +" `&'. Jika JOB_SPEC tidak ada, notion shell's dari pekerjaan\n" +" yang saat berjalan digunakan.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau " +"sebuah error terjadi." + +#: builtins.c:793 +#, fuzzy +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Ingat atau tampilkan lokasi aplikasi.\n" +" \n" +" Tentukan dan ingat nama jalur lengkap dari setiap NAMA perintah. Jika\n" +" tidak ada argumen yang diberikan, informasi mengenai perintah yang " +"diingat akan ditampilkan.\n" +" \n" +" Pilihan:\n" +" -d\t\tlupakan lokasi yang diingat untuk setiap NAMA\n" +" -l\t\ttampilkan dalam format yang bisa digunakan sebagai masukan\n" +" -p pathname\tgunakan NAMA JALUR yang nama jalur lengkap dari NAMA\n" +" -r\t\tlupakan semua lokasi yang diingat\n" +" -t\t\ttampilkan lokasi yang diingat untuk setiap NAMA, diawali\n" +" \t\tuntuk setiap lokasi diberikan NAMA yang sesuai jika multiple\n" +" \t\tNAMA diberikan\n" +" Argumen:\n" +" NAMA\t\tSetiap NAMA yang ditemukan dalam $PATH dan ditambahkan dalam " +"daftar\n" +" \t\tdari perintah yang diingat.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali NAMA tidak ditemukan atau sebuah pilihan " +"tidak valid telah diberikan." + +#: builtins.c:818 +#, fuzzy +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Tampilkan informasi mengenai perintah builtin.\n" +" \n" +" Tampilkan ringkasan singkat dari perintah builtin. Jika POLA\n" +" dispesifikasikan, tampilkan bantuan lengkap di seluruh perintah yang " +"cocok dengan POLA,\n" +" jika tidak daftar dari topik bantuan ditampilkan.\n" +" \n" +" Pilihan:\n" +" -d\tkeluarkan deskripsi singkat untuk setiap topik\n" +" -m\ttampilkan penggunaan dalam format pseudo-manpage\n" +" -s\tkeluarkan hanya penggunaan singkat untuk setiap topik yang cocok\n" +" \tdengan POLA\n" +" \n" +" Argumen:\n" +" POLA\tPola menspesifikasikan topik bantuan\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali POLA tidak ditemukan atau pilihan tidak " +"valid diberikan." + +#: builtins.c:842 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Menampilkan atau memanipulasi daftar sejarah.\n" +" \n" +" Menampilkan daftar sejarah dengan nomor baris. Baris yang ditampilkan " +"dengan\n" +" sebuah `*' telah diubah. Argumen dari N mengatakan untuk menampilkan " +"hanya\n" +" N baris terakhir.\n" +" \n" +" Pilihan:\n" +" -c\tmenghapus daftar sejarah dengan cara menghapus seluruh masukan\n" +" -d menghapus masukan sejarah di offset OFFSET.\n" +" \n" +" -a\tmenambahkan ke daftar sejarah dari sesi ini ke berkas sejarah.\n" +" -n\tmembaca seluruh baris sejarah yang belum dibaca dari berkas " +"sejarah\n" +" -r\tmembaca berkas sejarah dan menambahkan isinya ke daftar\n" +" \tsejarah\n" +" -w menulis sejarah sekarang ke berkas sejarah\n" +" \tdan menambahkannya kedalam daftar sejarah\n" +" \n" +" -p\tjalankan expansi sejarah untuk setiap ARG dan tampilkan hasilnya\n" +" \ttanpa menyimpannya kedalam daftar sejarah\n" +" -s\ttambahkan ARG ke daftar sejarah sebagai sebuah masukan tunggal\n" +" \n" +" \n" +" Jika NAMAFILE diberikan, maka itu digunakan sebagai berkas sejarah " +"selain itu\n" +" jika $HISTFILE memiliki nilai, maka itu digunakan, selain itu ~/." +"bash_history.\n" +" \n" +" \n" +" Jika variabel $HISTTIMEFORMAT diset dan tidak kosong, nilai ini yang " +"akan digunakan\n" +" sebagai format untuk string untuk strftime(3) untuk mencetak timestamp " +"yang berhubungan\n" +" dengan setiap masukan sejarah yang ditampilkan. Tidak ada time stamp " +"yang ditampilkan jika tidak.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:879 +#, fuzzy +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Menampilkan status dari pekerjaan.\n" +" \n" +" Tampilkan pekerjaan yang aktif. JOBSPEC membatasi keluaran ke pekerjaan " +"itu.\n" +" Tanpa pilihan, status dari seluruh aktif job ditampilkan.\n" +" \n" +" Pilihan:\n" +" -l menampilkan daftar dari proses id sebagai informasi tambahan.\n" +" -n diberikan, hanya proses yang sudah berubah status saja sejak\n" +" \tnotifikasi terakhir yang ditampilkan.\n" +" -p hanya menampilkan proses id saja.\n" +" -r membatasi keluaran ke pekerjaan yang sedang jalan\n" +" -s membatasi keluaran ke pekerjaan yang berhenti\n" +" \n" +" Jika pilihan -x diberikan, PERINTAH dijalankan setelah semua spesifikasi " +"pekerjaan\n" +" yang tampil di ARGS telah diganti dengan proses ID dari proses " +"pekerjaan\n" +" grup leader.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecualis sebuah pilihan tidak valid diberikan atau " +"sebuah error terjadi.\n" +" Jika -x digunakan, mengembalikan status keluar dari PERINTAH." + +#: builtins.c:906 +#, fuzzy +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Hapus pekerjaan dari shell sekarang.\n" +" \n" +" Hapus setiap JOBSPEC argumen dari tabel dari pekerjaan aktif. Tanpa\n" +" JOBSPEC apapun, shell menggunakan indikasi ini dari pekerjaan sekarang.\n" +" \n" +" Pilihan:\n" +" -a\thapus seluruh pekerjaan jika JOBSPEC tidak diberikan\n" +" -h\ttandai setiap JOBSPEC sehingga SIGHUP tidak dikirim ke pekerjaan " +"jika\n" +" \tshell menerima sebuah SIGHUP\n" +" -r\thapus hanya pekerjaan yang sedang berjalan\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali ada sebuah pilihan tidak valid atau JOBSPEC " +"diberikan." + +#: builtins.c:925 +#, fuzzy +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Mengirim sebuah sinyal ke sebuah pekerjaan.\n" +" \n" +" Mengirim ke sebuah proses yang diidentifikasikan oleh PID atau JOBSPEC " +"dengan sinyal yang diberi name\n" +" oleh SIGSPEC atau SIGNUM. Jika SIGSPEC atau SIGNUM tidak ada, maka\n" +" SIGTERM diasumsikan.\n" +" \n" +" Pilihan:\n" +" -s sig\tSIG adalah sebuah nama sinyal\n" +" -n sig\tSIG adalah sebuah nomor sinyal\n" +" -l\tdaftar dari nama sinyal; jika argumen diikuti dengan `-l' mereka " +"mengasumsikan ke\n" +" \tnomor sinyal yang namanya ditampilkan.\n" +" Kill adalah sebuah shell builtin untuk dua alasan; ini membolehkan " +"sebuah jobs ID untuk digunakan dari pada\n" +" proses IDs, dan memperbolehkan proses untuk dimatikan jika batas\n" +" dari proses yang dibuat tercapai.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Evaluasi ekspresi arithmetic.\n" +" \n" +" Setiap ARG adalah sebuah ekspresi arithmetic yang dievaluasi. Evaluasi\n" +" dilakukan dalam fixed-width integers dengan tidak ada pemeriksaan untuk " +"overflow, walaupun\n" +" pembagian dengan 0 ditangkap dan ditandai sebagai error. Berikut\n" +" daftar dari operator yang dikelompokkan dalam tingkat tingkat dari equal " +"precedence operators.\n" +" Tingkat yang ditampilkan dalam urutan dari decreasing precedence.\n" +" \n" +" \tid++, id--\tvariabel post-increment, post-decrement\n" +" \t++id, --id\tvariabel pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical dan bitwise negasi\n" +" \t**\t\texponential\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+. -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shift\n" +" \t<=. >=, <, >\tperbandingan\n" +" \t==, !=\t\tpersamaan, dan ketidak samaan\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\toperator kondisional\n" +" \t=, *=, /=, %=,\n" +" \t+=. -=. <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Variabel shell dibolehkan sebagai operand. Nama dari variabel\n" +" digantikan oleh nilainya (coerced ke fixed-width integer) dalam\n" +" sebuah expresi. Variabel tidak butuh atribut integer\n" +" dinyalakan untuk digunakan dalam sebuah expresi.\n" +" \n" +" Operator yang dievaluasi dalam urutan precedence. Sub-expresi dalam\n" +" parentheses dievaluasi terlebih dahulu dan boleh dioverride precedence\n" +" aturan diatasnya.\n" +" \n" +" Status Keluar:\n" +" Jika ARG terakhir dievaluasi ke 0, membiarkan kembali ke 1; 0 " +"dikembalikan Jika tidak." + +#: builtins.c:994 +#, fuzzy +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Membaca sebuah baris dari standar masukan dan membaginya dalam bagian " +"bagian.\n" +" \n" +" Satu baris dibaca dari masukan standar, atau dari berkas deskripsi FD " +"jika\n" +" pilihan -u diberikan, dan kata pertama diberikan ke NAMA pertama,\n" +" kata kedua ke NAMA kedua, dan seterusnya. dengan kata yang tersisa " +"ditempatkan\n" +" ke NAMA terakhir. Hanya karakter yang ditemukan dalam $IFS yang dikenal " +"sebagai pembatas\n" +" kata.\n" +" \n" +" Jika tidak ada NAMA yang diberikan, baris yang dibaca disimpan dalam " +"variabel BALASAN\n" +" \n" +" Pilihan:\n" +" -a array\tditempatkan kata dibaca secara berurutan indice dari array\n" +" \t\tvariabel ARRAY, dimulai dari nol\n" +" -d delim\tdilanjutkan sampai karakter pertama dari PEMBATAS dibaca, " +"daripada\n" +" \t\tbaris baru\n" +" -e\t\tgunakan Readline untuk memperoleh baris dalam sebuah shell " +"interaktif\n" +" -i text\tGunakan TEXT sebagai text inisial untuk Readline\n" +" -n nchars\tkembali setelah membaca NCHARS characters daripada " +"menunggu\n" +" \t\tuntuk sebuah baris baru\n" +" -N nchars\thanya kembali setelah membaca tepat NCHARS karakter, " +"kecuali\n" +" \t\tEOF ditemui atau waktu habis dalam pembacaan, abaikan pembatas " +"apapun\n" +" -p prompt\tkeluarkan string PROMPT tanpa tambahan baris baru sebelum\n" +" \t\tmencoba untuk membaca\n" +" -r\t\tjangan ijinkan backslash untuk mengeluarkan karakter apapun\n" +" -s\t\tjangan echo masukan yang datang dari sebuah terminal\n" +" -t menyebabkan pembacaan untuk time out dan kembali gagal jika sebuah " +"baris lengkap\n" +" \t\tdari masukan tidak dibaca dalam TIMEOUT detik. Jika variabel TMOUT " +"terset,\n" +" \t\tnilai ini akan menjadi nilai default timeout. TIMEOUT mungkin " +"sebuah\n" +" \t\tbilangan fraksional. Status keluaran lebih besar dari 128 jika\n" +" \t\ttimeout dilewati\n" +" -u fd\t\tbaca dari berkas deskripsi FD daripada standar masukan\n" +" \n" +" Status Keluar:\n" +" Kode kembali adalah nol, kecuali akhir-dari-berkas ditemui, baca " +"kehabisan waktu,\n" +" atau sebuah berkas deskripsi disupply sebagai sebuah argumen ke pilihan -" +"u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Kembali dari sebuah fungsi shell.\n" +" \n" +" Menyebabkan sebuah fungsi atau sebuah script untuk keluar dengan nilai " +"kembali\n" +" yang dispesifikasikan oleh N. Jika N diabaikan, status kembalian adalah\n" +" perintah terakhir yang dijalankan dalam fungsi atau script.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan N, atau gagal jika shell tidak menjalan sebuah fungsi atau " +"script." + +#: builtins.c:1054 +#, fuzzy +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Set atau unset nilai dari pilihan shell dan parameter posisi.\n" +" \n" +" Ubah nilai dari atribut shell dan parameter posisi, atau\n" +" tampilkan nama dan nilai dari variabel shell.\n" +" \n" +" Pilihan:\n" +" -a Tandai variabel yang telah termodifikasi atau dibuat untuk " +"export.\n" +" -b Notifikasi penyelesaian pekerjaan secara langsung.\n" +" -e Keluar langsung jika sebuah perintah keluar dengan status tidak " +"nol.\n" +" -f Menonaktifkan pembuatan nama berkas (globbing).\n" +" -h Ingat lokasi dari perintah sebagai mereka dicari.\n" +" -k Semua argumen assignment ditempatkan dalam environment untuk " +"sebuah\n" +" perintah, tidak hanya mengawali nama perintah.\n" +" -m Pengendali pekerjaan diaktifkan.\n" +" -n Baca perintah tapi jangan menjalankan perintah tersebut.\n" +" -o nama-pilihan\n" +" Set variabel menurut nama-pilihan:\n" +" allexport sama seperti -a\n" +" braceexpand sama seperti -B\n" +" emacs gunakan gaya emacs dalam line editing interface\n" +" errexit sama seperti -e\n" +" errtrace sama seperti -E\n" +" functrace sama seperti -T\n" +" hashall sama seperti -h\n" +" histexpand sama seperti -H\n" +" history aktifkan sejarah perintah\n" +" ignoreeof shell tidak akan keluar ketika membaca EOF\n" +" interactive-comments\n" +" membolehkan komentar ada dalam perintah " +"interaktif\n" +" keyword sama seperti -k\n" +" monitor sama seperti -m\n" +" noclobber sama seperti -C\n" +" noexec sama seperti -n\n" +" noglob sama seperti -f\n" +" nolog saat ini diterima tetapi diabaikan\n" +" notify sama seperti -b\n" +" nounset sama seperti -u\n" +" onecmd sama seperti -t\n" +" physical sama seperti -P\n" +" pipefail nilai kembalian dari sebuah pipelie adalah status " +"dari\n" +" perintah terakhir yang keluar dengan sebuah status " +"tidak nol,\n" +" atau nol jika tidak ada perintah yang keluar " +"dengan status tidak nol\n" +" posix ubah perilaku dari bash dimana operasi\n" +" default berbeda dari 1003.2 standar ke\n" +" sesuai dengan standar\n" +" privileged sama seperti -p\n" +" verbose sama seperti -v\n" +" vi gunakan sebuah gaya vi dalam line editing " +"interface.\n" +" xtrace sama seperti -x\n" +" -p Aktif ketika real dan efektif id pengguna tidak cocok.\n" +" Menonaktifkan pemrosesan dari berkas $ENV dan mengimpor dari " +"fungsi\n" +" shell. Mengubah pilihan ini off menyebabkan efektif uid dan\n" +" gid untuk diset ke real uid dan gid.\n" +" -t Keluar setelah membaca dan menjalankan satu perintah.\n" +" -u Perlakukan variabel yang tidak diset sebagai error ketika " +"mensubstitusi.\n" +" -v Tampilkan baris masukan shell seperti ketika dibaca.\n" +" -x Tampilkan perintah dan argumennya ketika menjalankan perintah " +"tersebut.\n" +" -B Shell akan melakukan expansi brace\n" +" -C Jika diset, melarang berkas regular yang telah ada untuk " +"ditulis\n" +" oleh keluaran redirection.\n" +" -E Jika diset, trap ERR diturunkan oleh fungsi shell.\n" +" -H Mengaktifkan ! gaya pengubahan sejarah. Tanda ini aktif\n" +" secara default ketika shell interaktif.\n" +" -P Jika diset, jangan ikuti symbolic link ketika menjalankan " +"perintah\n" +" seperti cd ketika mengubah direktori kerja sekarang.\n" +" -T Jika diset, Debug trap diturunkan oleh fungsi shell.\n" +" - Assign argumen yang tersisa ke parameter posisi.\n" +" Pilihan -x dan -v akan dimatikan.\n" +" \n" +" Menggunakan + daripada - akan menyebabkan tanda untuk dimatikan. Tanda\n" +" juga bisa digunakan dalam pemanggilan shell. Tanda yang terset\n" +" saat ini dapat ditemukan dalam $-. ARG n yang tersisa adalah parameter\n" +" posisi dan ditempatkan, dalam urutan, ke $1, $2, ... $n. Jika tidak ada\n" +" ARG yang diberikan, semua shell variabel ditampilkan.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan." + +#: builtins.c:1139 +#, fuzzy +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Unset nilai dan atribut dari variabel shell dan fungsi.\n" +" \n" +" Untuk setiap NAMA, hapus variabel atau fungsi yang berhubungan.\n" +" \n" +" Pilihan:\n" +" -f\tperlakukan setiap NAMA sebagai sebuah fungsi shell\n" +" -v\tperlakukan setiap NAMA sebagai sebuah variabel shell\n" +" \n" +" Tanpa pilihan, unset pertama mencoba untuk menunset sebuah variabel, dan " +"jika itu gagal,\n" +" mencoba untuk menunset sebuah fungsi.\n" +" \n" +" Beberapa variabel tidak dapat diunset; Lihat juga `readonly'.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " +"sebuah NAMA adalah baca-saja." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Set export atribut untuk variabel shell.\n" +" \n" +" Tandai setiap NAMA untuk otomatis export ke environment setelah\n" +" perintah dijalankan. Jika NILAI diberikan, berikan NILAI sebelum " +"export.\n" +" \n" +" Pilihan:\n" +" -f\tmerujuk ke fungsi shell\n" +" -n\thapus properti export dari setiap NAMA\n" +" -p\ttampilkan daftar dari seluruh variabel dan fungsi yang terexport\n" +" \n" +" Sebuah argumen dari `--' menonaktifkan pemrosesan pilihan selanjutnya.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " +"NAMA tidak valid." + +#: builtins.c:1180 +#, fuzzy +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Tandai variabel shell sebagai tidak bisa diubah.\n" +" \n" +" Tandai setiap NAMA sebagai baca-saja; nilai dari NAMA ini tidak boleh\n" +" diubah untuk penggunaan selanjutnya. Jika NILAI diberikan, berikan " +"NILAI\n" +" sebelum menandainya sebagai baca-saja.\n" +" \n" +" Pilihan:\n" +" -a\tmerujuk ke aray index variabel\n" +" -A\tmerujuk ke variabel aray assosiasi\n" +" -f\tmerujuk ke fungsi shell\n" +" -p\tmenampilkan sebuah daftar dari seluruh variabel dan fungsi baca-" +"saja\n" +" \n" +" Sebuah argumen dari `--' menonaktifkan pemrosesan pilihan selanjutnya.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecual sebuah pilihan tidak valid diberikan atau " +"NAMA tidak valid." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Geser parameter posisi.\n" +" \n" +" Ubah nama parameter posisi $N+1,$N+2 ... ke $1,$2 ... Jika N\n" +" tidak diberikan, N diasumsikan 1.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali N adalah negatif atau lebih besar dari $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Jalankan perintah dari sebuah berkas dalam shell sekarang.\n" +" \n" +" Baca dan jalankan perintah dari FILENAME dan kembali. Nama jalur dalam\n" +" $PATH digunakan untuk mencari direktori yang berisi NAMABERKAS. Jika " +"salah satu\n" +" dari ARGUMENTS diberikan, mereka menjadi parameter posisi ketika\n" +" NAMABERKAS dijalankan.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status dari perintah terakhir yang dijalankan dalam NAMA " +"BERKAS; gagal jika\n" +" NAMA BERKAS tidak dapat dibaca." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspend eksekusi shell.\n" +" \n" +" Suspend eksekusi dari shell ini sampai menerima sebuah sinyal SIGCONT.\n" +" Kecuali dipaksa, login shell tidak dapat disuspend.\n" +" \n" +" Pilihan:\n" +" -f\tpaksa untuk suspend, walaupun jika shell adalah sebuah login " +"shell\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau " +"sebuah error terjadi." + +#: builtins.c:1261 +#, fuzzy +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Evaluasi ekspresi kondisi.\n" +" \n" +" Keluar dengan sebuah status dari 0 (benar) atau 1 (salah) tergantung " +"dari\n" +" evaluasi dari EXPR. Expresi dapat berupa unary atau binary. Unary\n" +" expresi sering digunakan untuk memeriksa status dari sebuah berkas.\n" +" Terdapat operator string juga, dan operator pembanding numerik.\n" +" \n" +" Operator berkas:\n" +" \n" +" -a BERKAS Benar jika berkas ada.\n" +" -b BERKAS Benar jika berkas berupa blok spesial.\n" +" -c BERKAS Benar jika berkas adalah karakter spesial.\n" +" -d BERKAS Benar jika berkas adalah sebuah direktori.\n" +" -e BERKAS Benar jika berkas ada.\n" +" -f BERKAS Benar jika berkas ada dan berupa sebuah berkas " +"regular.\n" +" -g BERKAS Benar jika berkas memiliki set-grup-id.\n" +" -h BERKAS Benar jika berkas adalah symbolic link.\n" +" -L BERKAS Benar jika berkas adalah symbolic link.\n" +" -k BERKAS Benar jika berkas memiliki `sticky' bit diset.\n" +" -p BERKAS Benar jika berkas adalah named pipe.\n" +" -r BERKAS Benar jika berkas dapat dibaca oleh anda.\n" +" -s BERKAS Benar jika berkas ada dan tidak kosong.\n" +" -S BERKAS Benar jika berkas adalah socket.\n" +" -t FD Benar jika FD dibuka dalam sebuah terminal.\n" +" -u BERKAS Benar jika berkas memiliki set-user-id.\n" +" -w BERKAS Benar jika berkas dapat ditulis oleh anda.\n" +" -x BERKAS Benar jika berkas dapat dijalankan oleh anda.\n" +" -O BERKAS Benar jika berkas secara efektif dimiliki oleh " +"anda.\n" +" -G BERKAS Benar jika berkas secara efektif dimiliki oleh grup " +"anda.\n" +" -N BERKAS Benar jika berkas telah dimodifikasi sejak terakhir " +"ini dibaca.\n" +" \n" +" FILE1 -nt FILE2 Benar jika file1 lebih baru dari file2 (menurut \n" +" tanggal modifikasi).\n" +" \n" +" FILE1 -ot FILE2 Benar jika file1 lebih lama dari file2.\n" +" \n" +" FILE1 -ef FILE2 Benar jika file1 adalah hard link ke file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING Benar jika string kosong.\n" +" \n" +" -n STRING\n" +" STRING Benar jika string tidak kosong.\n" +" \n" +" STRING1 = STRING2\n" +" Benar jika string sama.\n" +" STRING1 != STRING2\n" +" Benar jika string tidak sama.\n" +" STRING1 < STRING2\n" +" Benar jika STRING1 sorts sebelum STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" Benar jika STRING1 sorts sesudah STRING2 " +"lexicographically.\n" +" \n" +" Operator lain:\n" +" \n" +" -o Pilihan Benar jika pilihan shell OPSI diaktifkan.\n" +" ! EXPR Benar jika expr salah.\n" +" EXPR1 -a EXPR2 Benar jika kedua expr1 dan expr2 adalah benar.\n" +" EXPR1 -o EXPR2 Benar jika salah satu dari expr1 atau expr2 adalah " +"benar.\n" +" \n" +" arg1 OP arg2 Pemeriksaan arithmetik. OP adalah salah satu dari -" +"eq, -ne,\n" +" -lt, -le, -gt, atau -ge.\n" +" \n" +" Arithmetic binary operator mengembalikan benar jika ARG1 adalah " +"equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, atau greater-than-or-" +"equal\n" +" than ARG2.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses jika EKSPR mengevaluasi ke benar; gagal jika " +"EXPR mengevaluasi ke\n" +" salah atau sebuah argumen tidak valid diberikan." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Evaluasi expresi kondisional.\n" +" \n" +" Ini sinonim untuk \"test\" builtin, tetapi argumen terakhir\n" +" harus berupa sebuah literal `]', untuk mencocokan dengan pembukaan `['." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Tampilkan waktu pemrosesan.\n" +" \n" +" Tampilkan akumulasi waktu penggunaan pengguna dan sistem untuk shell dan " +"seluruh proses dari\n" +" anaknya.\n" +" \n" +" Status Keluar:\n" +" Selalu sukses." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Tangkap sinyal dan even lainnya.\n" +" \n" +" Definisikan dan aktivasi handlers yang harus dijalankan ketika shell " +"menerima sinyal\n" +" atau kondisi lain.\n" +" \n" +" ARG perintah dibaca dan dijalankan ketika shell menerima\n" +" sinyal SIGNAL_SPEC. Jika ARG tidak ada (dan sebuah sinyal SIGNAL_SPEC\n" +" diberikan) atau `-', setiap sinyal yang dispesifikasikan akan direset " +"kenilai\n" +" original. Jika ARG adalah string kosong untuk setiap SIGNAL_SPEC " +"diabaikan oleh\n" +" shell dan oleh perintah yang dipanggil.\n" +" \n" +" Jika sebuah SIGNAL_SPEC adalah EXIT(0) perintah ARG dijalankan pada saat " +"keluar dari shell. Jika\n" +" sebuah SIGNAL_SPEC adalah DEBUG, ARG dijalankan setiap perintah " +"sederhana.\n" +" \n" +" Jika tidak ada argumen yang diberikan, trap menampilkan daftar dari " +"perintah yang berasosiasi\n" +" dengan setiap sinyal.\n" +" \n" +" Pilihan:\n" +" -l\tmenampilkan sebuah daftar dari nama sinyal dan nomor yang " +"berhubungan\n" +" -p\tmenampilkan perintah trap yang berasosiasi dengan setiap " +"SIGNAL_SPEC\n" +" \n" +" Setiap SIGNAL_SPEC yang ada di nama sinyal dalam atau nomor " +"sinyal. Nama sinyal\n" +" adalah case insensitive dan SIG prefix adalah opsional. sebuah\n" +" sinyal dapat dikirim ke sebuah shell dengan \"kill -signal $$\".\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah SIGSPEC adalah tidak valid atau " +"sebuah pilihan tidak valid diberikan." + +#: builtins.c:1400 +#, fuzzy +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Tampilkan informasi tentang perintah yang diketik.\n" +" \n" +" Untuk setiap NAMA, indikasikan bagaimana ini akan diinterpretasikan jika " +"digunakan sebagai sebuah\n" +" nama perintah.\n" +" \n" +" Pilihan:\n" +" -a\tmenampilkan seluruh lokasi yang berisi sebuah nama NAMA yang dapat " +"dijalankan;\n" +" \tmeliputi aliases, builtins, dan fungsi, jika dan hanya jika\n" +" \tpilihan `-p' juga sedang tidak digunakan\n" +" -f\tmenekan pencarian fungsi shell\n" +" -P\tmemaksa sebuah JALUR pencarian untuk setiap NAMA, bahkan jika ini " +"adalah sebuah alias,\n" +" \tbuiltin, atau fungsi, dan mengembalikan nama dari berkas disk\n" +" \tyang akan dijalankan\n" +" -p\tmengembalikan baik nama dari berkas disk yang akan dijalankan,\n" +" \tatau tidak sama sekali jika `type -t NAME' akan mengembalikan " +"`berkas'.\n" +" -t\tkeluarkan sebuah kata tunggal yang merupakan salah satu dari " +"`alias', `keyword',\n" +" \t`fungsi', `builtin', `berkas', atau `', jika NAMA adalah sebuah alias, " +"shell\n" +" \treserved word, fungsi shell, builtin shell, berkas disk, atau\n" +" \ttidak ditemukan\n" +" \n" +" Argumen:\n" +" NAMA\tNama perintah yang akan diinterpretasikan.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses jika seluruh dari NAMA ditemukan; gagal jika ada " +"yang tidak ditemukan." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modifikasi batas sumber daya shell.\n" +" \n" +" memberikan kontrol terhadap sarana yang tersedia untuk proses\n" +" yang dimulai oleh shell, dalam sistem yang mengijinkan untuk kontrol " +"tersebut.\n" +" \n" +" Pilihan:\n" +" -S\tgunakan `soft' batas sarana\n" +" -H\tgunakan `hard' batas sarana\n" +" -a\tsemua batas ditampilkan\n" +" -c\tukuram maksimum untuk berkas cores yang dibuat\n" +" -d\tukuran maksimum untuk sebuah proses data segment\n" +" -e\tprioritas antrian maksimum ('nice')\n" +" -f\tukuran maksimum berkas yang ditulis oleh shell dan anaknya\n" +" -l\tjumlah maksimum dari sinyal tertunda\n" +" -m\tukuran maksimum dari resident\n" +" -n\tjumlah maksimum dari berkas deskriptor yang terbuka\n" +" -p\tukuran pipe buffer\n" +" -q\tjumlah maksimum dari bytes dalam POSIX pesan antrian\n" +" -r\tprioritas maksimum dari real-time scheduling\n" +" -s\tukuran maksimum dari stack\n" +" -t\tjumlah maksimum dari waktu cpu dalam detik\n" +" -u\tjumlah maksimum dari proses pengguna\n" +" -v\tukuran dari memori virtual\n" +" -x\tjumlah maksimum dari berkas pengunci\n" +" \n" +" Jika BATAS diberikan, maka nilai baru yang dispesifikasikan untuk " +"sarana;\n" +" nilai spesial LIMIT `soft', `hard', dan `unlimited' berarti untuk\n" +" soft limit saat ini, jika hard limit saat ini dan no limit, " +"respectively.\n" +" Jika tidak, nilai sekarang dari sarana yang dispesifikasikan " +"ditampilkan.\n" +" Jika tidak ada pilihan yang diberikan, maka -f diasumsikan.\n" +" \n" +" Nilai adalah dalam 1024-byte increments, kecuali untuk -t, yang berarti " +"dalam detik\n" +" -p, yang berarti increment dalam 512 bytes, dan -u, yang berarti " +"unscaled dari\n" +" jumlah proses.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Tampilkan atau set mask mode dari berkas.\n" +" \n" +" Set pembuatan berkas pengguna mask dengan MODE. Jika MODE diabaikan, " +"tampilkan\n" +" nilai dari mask sekarang.\n" +" \n" +" Jika MODE diawali dengan sebuah digit, ini diinterpretasikan sebagai " +"sebuah bilangan oktal;\n" +" jika tidak ini adalah sebuah mode simbolik seperti yang diterima oleh " +"chmod(1).\n" +" \n" +" Pilihan:\n" +" -p\tjika MODE diabaikan, keluarkan dalam sebuah format yang bisa " +"digunakan sebagai masukan\n" +" -S\tmembuat keluaran simbolik; jika tidak sebuah bilangan oktal adalah " +"keluarannya\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali MODE tidak valid atau sebuah pilihan tidak " +"valid diberikan." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Tunggu untuk penyelesaian pekerjaan dan kembalikan status keluar.\n" +" \n" +" Tunggu untuk proses yang diidentifikasikan oleh ID, yang mungkin sebuah " +"proses ID atau sebuah\n" +" spesifikasi pekerjaan, dan laporkan status selesainya. Jika ID tidak\n" +" diberikan, tunggu untuk seluruh proses anak yang aktif, dan status " +"kembalian\n" +" adalah nol. Jika ID adalah sebuah spesifikasi pekerjaan, tunggu untuk " +"seluruh proses\n" +" dalam pipeline pekerjaan.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status dari ID; gagal jika ID tidak valid atau sebuah " +"pilihan tidak\n" +" valid diberikan." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Tunggu untuk penyelesaian proses dan kembalikan status keluar.\n" +" \n" +" Tunggu untuk proses yang dispesifikasikan dan laporkan status " +"selesainya. Jika\n" +" PID tidak diberikan, maka semua aktif proses anak ditunggu,\n" +" dan kode kembalian adalah nol. PID dapat berupa proses ID.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status dari ID; gagal jika ID tidak valid atau sebuah " +"pilihan tidak valid\n" +" diberikan." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Jalankan perintah untuk setiap anggota dalam sebuah daftar.\n" +" \n" +" `for' loop menjalankan urutan dari perintah untuk setiap anggota dalam " +"sebuah\n" +" daftar dari items. Jika `in KATA ...;' tidak ada, maka `in \"$@\"' yang\n" +" menjadi asumsi. Untuk setiap elemen dalam KATA, NAMA di set untuk elemen " +"tersebut, dan\n" +" PERINTAH dijalankan.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status dari perintah terakhir yang dijalankan." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Arithmetic untuk loop.\n" +" \n" +" Sama dengan\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tPERINTAH\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, dan EXP3 adalah expresi arithmetic. Jika setiap expresi\n" +" diabaikan, ini berjalan seperti jika dievaluasi ke 1.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status dari perintah terakhir yang dijalankan." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Pilih kata dari sebuah daftar dan jalankan perintah.\n" +" \n" +" WORDS diexpand, menghasilkan daftar dari kata.\n" +" set dari kata yang diexpand ditampilkan dalam standar error, setiap\n" +" keluaran diawali dengan sebuah nomor. Jika `in WORDS' tidak ada, `in \"$@" +"\"'\n" +" diasumsikan. Kemudian PS3 prompt ditampilkan dan sebuah baris dibaca\n" +" dari standar masukan. Jika baris berisi dari nomor yang\n" +" berhubungan dengan salah sata kata yang ditampilkan, maka NAMA diset\n" +" ke WORD tersebut. Jika baris kosong, WORDS dan prompt\n" +" ditampilkan kembali. Jika EOF dibaca, perintah selesai. Baris yang " +"dibaca disimpan\n" +" dalam variabel REPLY. PERINTAH dijalankan setelah setiap seleksi\n" +" sampai perintah break dijalankan.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status dari perintah terakhir yang dijalankan." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Melaporkan waktu yang dihabiskan dalam menjalan eksekusi pipeline.\n" +" \n" +" Jalankan PIPELINE dan tampilkan ringkasan dari real time, user CPU " +"time,\n" +" dan sistem CPU time yang dihabiskan dalam menjalankan PIPELINE ketika " +"ini selesai.\n" +" \n" +" Pilihan:\n" +" -p\tmenampilkan ringkasan waktu dalam format portable Posix\n" +" \n" +" Status Keluar:\n" +" Status kembali adalah status kembali dari PIPELINE." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Menjalankan perintah berdasarkan pencocokan pola.\n" +" \n" +" Secara selektif menjalankan PERINTAH berdasarkan dari KATA yang cocok " +"dengan POLA.\n" +" `|' digunakan untuk memisahkan beberapa pola. \n" +" Status Keluar:\n" +" Mengembalikan setatus dari perintah terakhir yang dijalankan." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Menjalankan perintah berdasarkan kondisi.\n" +" \n" +" Daftar `if PERINTAH' dijalankan. Jika ini memberikan status keluaran " +"nol, maka\n" +" daftar `then PERINTAH' dijalankan. Jika tidak, setiap daftar dari `elif " +"PERINTAH' \n" +" dijalankan satu satu, dan jika ini memberikan status keluaran nol, untuk " +"setiap\n" +" daftar dari `then PERINTAH' yang dijalankan maka perintah `if' selesai. " +"Jika tidak,\n" +" daftar `else PERINTAH' dijalankan, jika ada. Status keluaran dari \n" +" seluruh construct adalah status keluaran dari perintah terakhir yang " +"dijalankan, atau nol\n" +" jika tidak ada kondisi yang diperiksa benar.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status dari perintah terakhir yang dijalankan." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Menjalankan perintah sepanjang pemeriksaan sukses.\n" +" \n" +" Expand dan jalankan PERINTAH sepanjang akhir perintah dari\n" +" PERINTAH `while' telah memberikan status keluaran nol.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status dari perintah terakhir yang dijalankan." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Menjalankan perintah sepanjang pemeriksaan tidak sukses.\n" +" \n" +" Expand dan jalankan PERINTAH sepanjang akhir perintah dari\n" +" PERINTAH `until' telah memberikan status keluaran bukan nol. \n" +" Status Keluar:\n" +" Mengembalikan status dari perintah terakhir yang dijalankan." + +#: builtins.c:1671 +#, fuzzy +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Buat sebuah koproses dengan nama NAMA.\n" +" \n" +" Jalankan PERINTAH secara tidak sinkron, dengan standar keluaran dan\n" +" standar masukan dari perintah terhubung melalui sebuah pipa berkas\n" +" pipa deskripsi yang ditandai dengan 0 dan 1 dari sebuah susunan NAMA\n" +" variabel dalam shell yang dijalankan.\n" +" Nama baku adalah \"COPROC\".\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status keluar dari PERINTAH." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Definisikan fungsi shell.\n" +" \n" +" Buat sebuah fungsi shell dengan nama NAMA. Ketika dipanggil sebagai " +"sebuah perintah sederhana,\n" +" NAMA menjalankan PERINTAH dalam context shell pemanggil. Ketika NAMA " +"dipanggil,\n" +" argumen dilewatkan ke fungsi sebagai $1...$n, dan nama fungsi\n" +" dalam $FUNCNAME.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali NAMA adalah baca-saja." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Grup perintah sebagai sebuah unit.\n" +" \n" +" Jalankan sebuah set dari perintah dalam grup. Ini adalah salah satu cara " +"untuk meredirect\n" +" seluruh set dari perintah.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status dari perintah terakhir yang dieksekusi." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Melanjutkan pekerjaan dalam foreground.\n" +" \n" +" Sama dengan JOB_SPEC argumen untuk perintah `fg'. Melanjutkan sebuah\n" +" pekerjaan yang telah berhenti atau menjadi background. JOB_SPEC dapat " +"dispesifikasikan dengan nama job\n" +" atau nomor job. JOB_SPEC diikuti dengan sebuah `&' menempatkan job " +"dalam\n" +" background, seperti dalam spesifikasi pekerjaan yang telah " +"dispesifikasikan sebagai sebuah\n" +" argumen untuk `bg'.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan status dari pekerjaan yang dilanjutkan." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Evaluasi ekspresi arithmetic.\n" +" \n" +" EXPRESI dievaluasi berdasarkan dalam aturan evaluasi\n" +" arithmetic. Sama dengan \"let EXPRESI\".\n" +" \n" +" Status Keluar:\n" +" Mengembalikan 1 jika EXPRESI dievaluasi ke 0; mengembalikan 0 jika tidak." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Menjalankan perintah kondisional.\n" +" \n" +" Mengembalikan sebuah status dari 0 atau 1 tergantung dari evaluasi dari\n" +" kondisi expresi EXPRESI. Expresi disusun dari primari yang sama dari " +"yang digunakan\n" +" oleh `test' builtin, dan boleh dikombinasikan dengan menggunakan " +"operator berikut\n" +" \n" +" ( EXPRESI )\tMengembalikan nilai dari EXPRESI\n" +" ! EXPRESI\t\tBenar jika kedua EXPR1 dan EXPR2 adalah benar; selain itu " +"salah\n" +" EXPR1 && EXPR2\tBenar jika kedua EXPR1 dan EXPR2 adalah benar; selain " +"itu salah\n" +" EXPR1 || EXPR2\tBenar jika salah satu EXPR1 atau EXPR2 adalah benar; " +"selain itu salah\n" +" \n" +" Ketika operator `==' dan `!=' digunakan, string yang disebelah kanan " +"dari \n" +" operator yang digunakan sebagai sebuah pola dan pencocokan pola " +"dilakukan.\n" +" Ketika operator `=~' digunakan, string yang dikanan dari operator\n" +" dicocokan sebagai sebuah ekspresi regular.\n" +" \n" +" Operator && dan || tidak mengevaluasi EXPR2 jika EXPR1 tidak mencukupi " +"untuk\n" +" menentukan nilai dari expresi.\n" +" \n" +" Status Keluar:\n" +" 0 atau 1 tergantun dari nilai dari EKSPRESI." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Nama variabel shell umum dan penggunaannya.\n" +" \n" +" BASH_VERSION\tInformasi versi dari Bash ini.\n" +" CDPATH\tSebuah daftar yang dipisahkan oleh titik dua dari direktori " +"untuk mencari\n" +" \t\tdirektori yang diberikan sebagai argumen untuk `cd'.\n" +" GLOBIGNORE\tSebuah daftar pola yang dipisahkan dengan titik dua " +"menjelaskan nama berkas yang\n" +" \t\tdiabaikan oleh pathname expansion.\n" +" HISTFILE\tNama dari berkas dimana sejara perintah anda disimpan.\n" +" HISTFILESIZE\tJumlah maksimum dari baris dimana berkas ini berisi.\n" +" HISTSIZE\tJumlah maksimum dari baris sejarah yang sedang berjalan\n" +" \t\tketika shell sedang menaksesnya.\n" +" HOME\tNama jalur lengkap ke direktori login anda.\n" +" HOSTNAME\tNama dari host saat ini.\n" +" HOSTTYPE\tTipe dari CPU dari veri Bash yang sedang berjalan.\n" +" IGNOREEOF\tKendalikan aksi dari shell ketika menerima sebuah EOF\n" +" \t\tkarakter sebagai masukan. Jika diset, maka nilai\n" +" \t\tdari jumlah karakter EOF yang bisa diterima\n" +" \t\tdalam sebuah baris dalam baris kosong sebelum shell keluar\n" +" \t\t(default 10). Ketika diunset, EOF menandakan akhir dari masukan.\n" +" MACHTYPE\tSebuah kata yang menjelaskan system yang berjalan ketika Bash " +"berjalan.\n" +" MAILCHECK\tSeberapa sering, dalam detik, Bash memeriksa pesan baru.\n" +" MAILPATH\tDaftar dari nama berkas yang dipisahkan oleh titik-dua dimana " +"Bash memeriksa\n" +" \t\tpesan baru.\n" +" OSTYPE\tVersi Unix dari Versi Bash yang sedang berjalan.\n" +" PATH\tDaftar direktori yang dipisahkan oleh titik-dua untuk mencari " +"ketika\n" +" \t\tmencari perintah.\n" +" PROMPT_COMMAND\tSebuah perintah yang dijalankan sebelum menampilkan " +"setiap\n" +" \t\tmasukan utama.\n" +" PS1\t\tKata prompt utama.\n" +" PS2\t\tKata prompt kedua.\n" +" PWD\t\tNama jalur lengkat dari direktori sekarang.\n" +" SHELLOPTS\tDaftar dari shell pilihan yang dipisahkan oleh titik-dua.\n" +" TERM\tNama dari tipe terminal sekarang.\n" +" TIMEFORMAT\tFormat keluaran dari statistik waktu yang ditampilkan oleh\n" +" \t\t`time' kata yang direserved.\n" +" auto_resume\tTidak kosong berarti sebuah kata perintah akan munncul di " +"sebuah baris dengan\n" +" \t\tsendirinya adalah pertama dicari dalam daftar dari\n" +" \t\tpekerjaan yang terhenti sekarang. Jika ditemukan disana, maka " +"pekerjaan intu di foregroundkan.\n" +" \t\tNila dari `exact' berarti kata perintah harus\n" +" \t\tcocok secara tepat dalam daftar dari pekerjaan yang terhenti. " +"Sebuah\n" +" \t\tNila dari `substring' berarti bahwa kata perintah harus cocok\n" +" \t\tdengan substring dari pekerjaan. Nilai yang lain berarti\n" +" \t\tperintah harus diawali dari sebuah pekerjaan yang terhenti.\n" +" histchars\tKarakter pengendali history expansion dan pensubstitusi\n" +" \t\tcepat. Karakter pertama adalah karakter\n" +" \t\tpengganti sejarah, biasanya `!'. Karakter kedua\n" +" \t\tdari `quick substitution', biasanya `^'. Karakter\n" +" \t\tketiga adalah karakter `history comment'. biasanya `#',\n" +" HISTIGNORE\tSebuah daftar pola yang dipisahkan oleh titik dua yang " +"digunakan untuk menentukan dimana\n" +" \t\tperintah seharusnya disimpan dalam daftar sejarah.\n" + +#: builtins.c:1821 +#, fuzzy +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Menambahkan direktori ke stack.\n" +" \n" +" Menambahkan sebuah direktori ke top dari direktori stack, atau merotasi\n" +" stack, membuah top baru dari stack dari working direktori saat ini.\n" +" Tanpa argumen, menukar top dari dua direktori.\n" +" \n" +" Pilihan:\n" +" -n\tmenekan perubahan normal dari direktori ketika menambahkan " +"direktori\n" +" \tke stack, jadi hanya stack yang dimanipulasi.\n" +" \n" +" Argumen:\n" +" +N\tMerotasi stack sehingga direktori ke N (dihitung\n" +" \tdari kiri dari daftar yang terlihat oleh `dirs', dimulai dengan\n" +" \tnol) adalah di top.\n" +" \n" +" -N\tMerotasi stack sehingga direktori ke N (dihitung\n" +" \tdari kanan dari daftar yang terliha oleh `dirs', dimulai dengan\n" +" \tnol) adalah di top.\n" +" \n" +" dir\tenambahkan DIR ke direktori stack di puncak, membuatnya\n" +" \tdirektori kerja sekarang.\n" +" \n" +" Builtin `dirs' menampilkan direktori stack.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali ada sebuah argumen tidak valid diberikan " +"atau pemindahan\n" +" direktori gagal." + +#: builtins.c:1855 +#, fuzzy +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Hapus direktori dari stack.\n" +" \n" +" Manghapus masukan dalam direktori stack. Tanpa argumen,\n" +" menghapus top direktori dari stack, dan cd's ke top\n" +" direktori baru.\n" +" \n" +" Pilihan:\n" +" -n\tmenekan perubahan normal dari direktori ketika menghapus " +"direktori\n" +" \tdari stack, jadi hanya stack yang dimanipulasi.\n" +" \n" +" Argumen:\n" +" +N\tmenghapus masukan ke N dihitung dari kiri dari daftar\n" +" \tyang ditampilkan oleh `dirs', dimulai dari nol. Sebagai contoh: `popd " +"+0'\n" +" \tmenghapus direktori terakhir, `popd +1' sebelum terakhir.\n" +" \n" +" -N\tmenghapus masukan ke N dihitung dari kanan dari daftar\n" +" \tyang ditampilkan oleh `dirs', dimulai dari nol. Sebagai contoh: `popd " +"-0'\n" +" \tmenghapus direktori terakhir, `popd -1' sebelum terakhir.\n" +" \n" +" Builtin `dirs' menampilkan direktori stack.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali ada sebuah argumen tidak valid diberikan " +"atau pemindahan\n" +" direktori gagal." + +#: builtins.c:1885 +#, fuzzy +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Menampilkan direktori stack.\n" +" \n" +" Menampilkan daftar dari direktori yang diingat saat ini. Direktori\n" +" menemukan jalannya kedalam daftar dengan perintah `pushd'; anda dapat " +"memperoleh\n" +" backup melalui daftar dengan perintah `popd'.\n" +" \n" +" Pilihan:\n" +" -c\tmenghapus direktori stack dengan menghapus seluruh elemen.\n" +" -l\tjangan menampilkan versi yang diawali tilde dari direktori yang " +"relatif\n" +" \tke direktori rumah anda\n" +" -p\tmenampilkan direktori stack dengan satu masukan setiap baris\n" +" -v\tmenampilkan direktori stack dengan satu masukan setiap baris " +"diawali\n" +" \tdengan posisinya dalam stack\n" +" Argumen:\n" +" +N\tmenampilkan masukan ke N dihitung dari kiri dari daftar yang " +"ditampilkan oleh\n" +" \tdirs ketika dijalankan tanpa pilihan, dimulai dari nol.\n" +" \n" +" -N\tmenampilkan masukan ke N dihitung dari kanan dari daftar yang " +"ditampilkan oleh\n" +" \tdirs ketika dijalankan tanpa pilihan, dimulai dari nol. \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali ada sebuah pilihan tidak valid diberikan " +"atau sebuah error terjadi." + +#: builtins.c:1916 +#, fuzzy +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Set dan unset pilihan shell.\n" +" \n" +" Ubah setting untuk setiap pilihan shell OPTNAME. Tanpa pilihan\n" +" argumen apapun, tampilkan daftar shell pilihan dengan sebuah indikasi\n" +" ya atau tidak setiap pilihan di set.\n" +" \n" +" Pilihan:\n" +" -o\tbatasi OPTNAME ke definisi untuk digunakan dengan `set -o'\n" +" -p\ttampilkan setiap pilihan shell dengan sebuah indikasi dari " +"statusnya\n" +" -q\ttekan keluaran\n" +" -s\taktifkan (set) setiap OPTNAME\n" +" -u\tnonaktifkan (unset) setiap OPTNAME\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses jika OPTNAME diaktifkan; gagal jika sebuah pilihan " +"tidak valid diberikan\n" +" atau OPTNAME dinonaktifkan." + +#: builtins.c:1937 +#, fuzzy +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Format dan tampilkan ARGUMEN dalam kontrol dari FORMAT.\n" +" \n" +" Pilihan:\n" +" -v var\tkeluaran ditempatkan dalam sebuah nilai dari variabel\n" +" shell VAR daripada dikirimkan ke keluaran standar.\n" +" \n" +" FORMAT adalah sebuah karakter string yang berisi dari tiga tipe dari " +"objects: plain\n" +" karakter, yang disalin secara sederhana dari keluaran standar, karakter " +"escape\n" +" sequences yang mengubah dan menyalin keluaran standar, dan\n" +" spesifikasi format, yang selalu menampilkan argumen\n" +" \n" +" Tambahan dari spesifikasi standar printf(1) formats dan\n" +" printf(3), printf menginterprestasikan:\n" +" \n" +" %b berarti untuk menexpand backslash escape sequences dalam argumen " +"yang sesuai\n" +" %q berarti meng-quote argumen dalam sebuah cara yang dapat digunakan " +"sebagai masukan shell.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " +"sebuah penulisan atau penempatan\n" +" error terjadi." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Spesifikasikan bagaimana argumen akan diselesaikan oleh Readline.\n" +" \n" +" Untuk setiap NAMA, spesifikasikan bagaimana argumen akan diselesaikan. " +"Jika tidak ada pilihan\n" +" yang diberikan, spesifikasi penyelesaian yang sudah ada akan ditampilkan " +"dalam cara\n" +" yang diperbolehkan untuk digunakan sebagai masukan.\n" +" \n" +" Pilihan:\n" +" -p\ttampilkan spesifikasi penyelesaian yang telah ada dalam format " +"yang berguna\n" +" -r\thapus sebuah spesifikasi penyelesaian untuk setiap NAMA, atau jika " +"tidak ada\n" +" \tNAMA yang diberikan, seluruh spesifikasi penyelesaian\n" +" -D\taplikasikan pelengkapan dan aksi sebagai perintah baku tanpa " +"pelengkapan\n" +" \tspesifik yang didefinisikan\n" +" -E\taplikasikan pelengkapan dan aksi ke perintah \"empty\" --\n" +" \tpelengkapan dilakukan di baris kosong\n" +" \n" +" Ketika penyelesaian dicoba, aksi yang dilakukan dalam urutan\n" +" huruf besar pilihan yang ditampilkan diatas.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Menampilkan kemungkinan penyelesaian tergantung dari pilihan.\n" +" \n" +" Ditujukan untuk digunakan dari dalam sebuah fungsi shell yang " +"menghasilkan kemungkinan untuk completions.\n" +" Jika argumen WORD opsional yang diberikan, cocok dengan WORD telah\n" +" dihasilkan.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " +"sebuah error terjadi." + +#: builtins.c:2016 +#, fuzzy +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Modifikasi atau tampilkan pilihan penyelesaian.\n" +" \n" +" Modifikasi pilihan penyelesaian untuk setiap NAMA, atau, jika tidaka ada " +"NAMA yang diberikan,\n" +" penyelesaian mulai dijalankan. Jika tidak ada OPSI yang diberikan, " +"tampilkan\n" +" pilihan penyelesaian untuk setiap NAMA atau spesifikasi penyelesaian " +"sekarang.\n" +" \n" +" Pilihan:\n" +" \t-o option\tSet pilihan penyelesaian OPSI untuk setiap NAMA\n" +" \t-D\t\tUbah pilihan untuk perintah pelengkapan \"default\"\n" +" \t-E\t\tUbah pilihan untuk perintah pelengkapan \"empty\"\n" +" \n" +" Gunakan `+o' daripada `-o' matikan pilihan yang dispesifikasikan.\n" +" \n" +" Argumen:\n" +" \n" +" Setiap NAMA yang dirujuk dalam sebuah perintah untuk sebuah spesifikasi " +"penyelesaian harus\n" +" sebelumnya telah didefinisikan dengan menggunakan builtin `complete'. " +"Jika tidak ada NAMA\n" +" yang diberikan, compopt harus dipanggil oleh sebuah fungsi yang dibuat " +"oleh penyelesaian sekarang,\n" +" dan pilihan untuk menjalankan penyelesaian sekarang\n" +" telah dimodifikasi.\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " +"NAMA tidak memiliki\n" +" spesifikasi penyelesaian yang terdefinisi." + +#: builtins.c:2047 +#, fuzzy +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Baca baris dari standar masukan kedalam sebuah susunan variabel.\n" +" \n" +" Baca baris dari standar masukan kedalam variabel array ARRAY, atau dari\n" +" berkas deskripsi FD jika pilihan -u diberikan. Variabel MAPFILE adalah\n" +" ARRAY baku.\n" +" \n" +" Pilihan:\n" +" -n count\tSalin di baris COUNT. Jika COUNT adalah 0, semua baris " +"disalin.\n" +" -O origin\tAwal penempatan ke ARRAY di index ORIGIN. Indeks baku " +"adalah 0.\n" +" -s count \tAbaikan baris COUNT pertama yang dibaca.\n" +" -t\t\tHapus sebuah akhiran baris baru dari setiap baris yang dibaca.\n" +" -u fd\t\tBaca baris dari berkas deskripsi FD daripada dari masukan " +"standar.\n" +" -C callback\tEvaluasi CALLBACK untuk setiap waktu QUANTUM baris adalah " +"baca.\n" +" -c quantum\tSpesifikasikan jumlah dari baris yang dibaca diantara " +"setiap pemanggilan ke CALLBACK.\n" +" \n" +" Argumen:\n" +" ARRAY\t\tNama variabel array yang digunakan untuk berkas data.\n" +" \n" +" Jika -C Diberikan tanpa -c, default quantum adalah 5000. Ketika " +"CALLBACK\n" +" dievaluasi , ini diberikan ke indeks dari element 'array' selanjutnya\n" +" untuk di-'assign' sebagai sebuah argumen tambahan.\n" +" \n" +" Jika tidak diberikan dengan asal secara eksplisit, berkas peta akan " +"menghapus ARRAY sebelum\n" +" ditempatkan kepadanya\n" +" \n" +" Status Keluar:\n" +" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " +"ARRAY adalah baca-saja." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Baca baris dari sebuah berkas kedalam sebuah susunan variabel.\n" +" \n" +" Sebuah sinonim untuk `mapfile'." + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Mengembalikan konteks dari panggilan subroutine saat ini.\n" +#~ " \n" +#~ " Tanpa EXPR, kembali " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: process %5ld (%s) dalam the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Sinyal tidak diketahui #" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "benar" + +#~ msgid "false" +#~ msgstr "salah" + +#~ msgid "times" +#~ msgstr "kali" + +#~ msgid "" +#~ ". With EXPR, returns\n" +#~ " " +#~ msgstr "" +#~ ". Dengan EXPR, kembali\n" +#~ " " + +#~ msgid "" +#~ "; this extra information can be used to\n" +#~ " 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." +#~ msgstr "" +#~ "; informasi tambahan ini dapat digunakan untuk\n" +#~ " menyediakan penelusuran 'stack'.\n" +#~ " \n" +#~ " Nilai dari EXPR mengindikasikan berapa banyak panggilan 'frame' untuk " +#~ "kembali\n" +#~ " sebelum saat ini; 'frame' paling atas adalah 'frame' 0." + +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Hak Cipta (C) 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Lisensi GPLv2+: GNU GPL versi 2 atau sesudahnya \n" + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: tidak dapat menrealokasikan %lu bytes (%lu bytes teralokasikan)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: tidak dapat mengalokasikan %lu bytes" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: %s: %d: tidak dapat melakukan reallokasi %lu bytes (%lu bytes " +#~ "teralokasi)" + +#~ msgid " " +#~ msgstr " " + +#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +#~ msgstr "" +#~ "Tanpa EXPR, mengembalikan kembalian \"$line $filename\". Dengan EXPR," + +#~ msgid "returns \"$line $subroutine $filename\"; this extra information" +#~ msgstr "" +#~ "mengembalikan \"$line $subroutine $filename\"; informasi tambahan ini" + +#~ msgid "can be used used to provide a stack trace." +#~ msgstr "dapat digunakan untuk menyediakan jejak sebuah stack." + +#~ msgid "" +#~ "The value of EXPR indicates how many call frames to go back before the" +#~ msgstr "" +#~ "Nilai dari EXPR mengindikasikan berapa banyak call frames untuk kembali " +#~ "sebelum" + +#~ msgid "current one; the top frame is frame 0." +#~ msgstr "salah satu ini; top frame adalah frame 0." + +#~ msgid "%s: invalid number" +#~ msgstr "%s: nomor invalid" + +#~ msgid "Shell commands matching keywords `" +#~ msgstr "Perintah shell cocok dengan kata kunci `" + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "Tampilkan daftar dari direktori yang diingat sekarang. Direktori" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "" +#~ "menemukan jalannya sendiri kedalam daftar dengan perintah `pushd'; anda " +#~ "dapat memperoleh" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "bantuan melalui daftar dari perintah `popd'." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "" +#~ "Flag -l menspesifikasikan bahwa `dirs' seharusnya tidak menampilkan versi " +#~ "pendek" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "dari direktori yang relatif dari direktori home anda. Ini berarti" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "" +#~ "bahwa `~/bin' mungkin ditampilkan sebagai `/homes/bfox/bin'. Pilihan -v" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "" +#~ "menyebabkan `dirs' ditampilkan di stack direktori dengan satu masukan per " +#~ "baris," + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "mendahului nama direktori dengan posisinya dalam stack. Pilihan -p" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "melakukan hal yang sama, tetapi posisi stack tidak didahului." + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "" +#~ "Pilihan -c menghapus direktori stack dengan cara menghapus seluruh elemen." + +#~ msgid "" +#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgstr "" +#~ "+N menampilkan masukan ke N dihitung dari kiri dari daftar yang " +#~ "ditampilkan oleh" + +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr " dirs ketika dipanggil tanpa pilihan, dimulai dengan nol." + +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "" +#~ "-N menampilkan masukan ke N dihitung dari kanan dari daftar yang " +#~ "ditampilkan dengan" + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "" +#~ "menambahkan sebuah direktori ke ujung atas dari direktori stack, atau " +#~ "memutar" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "stack, membuat sebuah top baru dari stack direktori yang dipakai" + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "saat ini. Tanpa argumen, menukar top dari dua direktori." + +#~ msgid "+N Rotates the stack so that the Nth directory (counting" +#~ msgstr "+N Memutar stack sehingga direktori ke N (dihitung" + +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr "" +#~ " dari kiri dari daftar yang ditampilkan oleh `dirs', dimulai dari" + +#~ msgid " zero) is at the top." +#~ msgstr " nol) ini dilakukan di top." + +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "-N Memutar stact sehingga direktori ke N (dihitung" + +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr "" +#~ " dari kanan dari daftar yang ditampilkan oleh `dirs', dimulai dengan" + +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "" +#~ "-n menekan perubahan normal dari direktori ketika menambahkan direktori" + +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr " ke stack, jadi hanya stack yang dimanipulasi." + +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "dir menambahkan DIR ke direktori stack di top, membuatnya " + +#~ msgid " new current working directory." +#~ msgstr " menjadi direktori baru untuk bekerja." + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "Anda dapat melihat direktori stack dengan perintah `dirs'." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Hapus masukan dari direktori stack. Tanpa argumen," + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "menghapus top direktori dari stack, dan pindah ke" + +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "+N menghapus masukan ke-N dihitung dari kiri dari daftar" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr " yang terlihat oleh `dirs', dimulai dari nol. Contoh: `popd +0'" + +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr " menghapus direktori pertama, `popd +1' kedua." + +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "-N menghapus masukan ke N dihitung dari kanan dari daftar" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr " yang terlihat oleh `dirs', dimulai dari nol. Contoh: `popd -0'" + +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr "" +#~ " menghapus direktori terakhir, `popd -1' selanjutnya ke terakhir." + +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "" +#~ "-n menekan perubahan normal dari direktori ketika menghapus direktori" + +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr " dari stack, sehingga hanya stack yang dimanipulasi." + +#~ msgid "allocated" +#~ msgstr "teralokasi" + +#~ msgid "freed" +#~ msgstr "terbebaskan" + +#~ msgid "requesting resize" +#~ msgstr "meminta resize" + +#~ msgid "just resized" +#~ msgstr "just resized" + +#~ msgid "bug: unknown operation" +#~ msgstr "bug: operasi tidak diketahui" + +#~ msgid "malloc: watch alert: %p %s " +#~ msgstr "malloc: watch alert: %p %s " + +#~ msgid "" +#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "" +#~ "Keluar dari dalam sebuah FOR, WHILE, atau UNTIL loop. jika N " +#~ "dispesifikasikan,\n" +#~ " break N levels." + +#~ msgid "" +#~ "Run a shell builtin. This is useful when you wish to rename a\n" +#~ " shell builtin to be a function, but need the functionality of the\n" +#~ " builtin within the function itself." +#~ msgstr "" +#~ "Jalankan sebuah builtin shell. Ini akan berguna ketika anda mengharapkan " +#~ "untuk mengganti nama sebuah\n" +#~ " shell builting ke sebuah fungsi, tetapi membutuhkan sebuah " +#~ "fungsionalitas dari\n" +#~ " sebuah fungsi builtin itu sendiri." + +#~ msgid "" +#~ "Print the current working directory. With the -P option, pwd prints\n" +#~ " the physical directory, without any symbolic links; the -L option\n" +#~ " makes pwd follow symbolic links." +#~ msgstr "" +#~ "Tampilkan direktori yang sedang digunakan saat ini. Dengan pilihan -P, " +#~ "pwd menampilkan\n" +#~ " direktori physical, tanpa symbolic link yang lain; dengan pilihan -L\n" +#~ " membuat pwd mengikuti symbolic links." + +#~ msgid "Return a successful result." +#~ msgstr "Mengembalikan sebuah kembalian yang sukses." + +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell\n" +#~ " function called `ls', and you wish to call the command `ls', you can\n" +#~ " say \"command ls\". If the -p option is given, a default value is " +#~ "used\n" +#~ " for PATH that is guaranteed to find all of the standard utilities. " +#~ "If\n" +#~ " the -V or -v option is given, a string is printed describing " +#~ "COMMAND.\n" +#~ " The -V option produces a more verbose description." +#~ msgstr "" +#~ "Menjalankan PERINTAH dengan ARGS mengabaikan fungsi shell. Jika anda " +#~ "memiliki sebuah shell\n" +#~ " fungsi yang memanggil `ls', dan anda berharap untuk memanggil " +#~ "perintah `ls', anda dapat\n" +#~ " mengatakan \"command ls\". Jika pilihan -p diberikan, sebuah nilai " +#~ "default digunakan\n" +#~ " untuk PATH yang menjamin untuk mencari semua utilitis standar. Jika\n" +#~ " pilihan -V atau -v diberikan, sebuah string ditampilkan " +#~ "mendeskripsikan PERINTAH.\n" +#~ " Pilihan -V menghasilkan deskripsi yang lebih detail." + +#~ msgid "" +#~ "Declare variables and/or give them attributes. If no NAMEs are\n" +#~ " given, then display the values of variables instead. The -p option\n" +#~ " will display the attributes and values of each NAME.\n" +#~ " \n" +#~ " The flags are:\n" +#~ " \n" +#~ " -a\tto make NAMEs arrays (if supported)\n" +#~ " -f\tto select from among function names only\n" +#~ " -F\tto display function names (and line number and source file name " +#~ "if\n" +#~ " \tdebugging) without definitions\n" +#~ " -i\tto make NAMEs have the `integer' attribute\n" +#~ " -r\tto make NAMEs readonly\n" +#~ " -t\tto make NAMEs have the `trace' attribute\n" +#~ " -x\tto make NAMEs export\n" +#~ " \n" +#~ " Variables with the integer attribute have arithmetic evaluation (see\n" +#~ " `let') done when the variable is assigned to.\n" +#~ " \n" +#~ " When displaying values of variables, -f displays a function's name\n" +#~ " and definition. The -F option restricts the display to function\n" +#~ " name only.\n" +#~ " \n" +#~ " Using `+' instead of `-' turns off the given attribute instead. " +#~ "When\n" +#~ " used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "" +#~ "Declare variabel dan/atau memberikan atribut kepada mereka. Jika tidak " +#~ "ada NAMA yang\n" +#~ " diberikan, maka menampilkan nilai dari variabel. Pilihan -p\n" +#~ " akan menampilkan atribut dan nilai dari setiap NAMA.\n" +#~ " \n" +#~ " Flags adalah:\n" +#~ " \n" +#~ " -a\tuntuk membuat aray NAMA (jika disupport)\n" +#~ " -f\tuntuk memilih dari nama fungsi saja\n" +#~ " -F\tuntuk menampilkan nama fungsi (dan nomor baris dan source nama " +#~ "file jika\n" +#~ " \tdebugging) tanpa definisi\n" +#~ " -i\tuntuk membuat NAMA memiliki atribut `integer'\n" +#~ " -r\tuntuk membuat NAMA baca-saja\n" +#~ " -t\tuntuk membuat NAMA memiliki atribut `trace'\n" +#~ " -x\tuntuk membuat NAME export\n" +#~ " \n" +#~ " Variabel dengan atribut integer memiliki arithmetic evaluasi (lihat\n" +#~ " `let') selesai ketika variabel diberikan ke.\n" +#~ " \n" +#~ " Ketika menampilkan nilai dari variabel, -f menampilkan sebuah nama " +#~ "fungsi\n" +#~ " dan definisi. Pilihan -F menekan untuk menampikan nama\n" +#~ " fungsi saja.\n" +#~ " \n" +#~ " Menggunakan `+' daripada `-' mematikan atribut yang diberikan. " +#~ "Ketika\n" +#~ " sedang digunkan dalam sebuah fungsi, membuat NAMA lokal, seperti " +#~ "dalam perintah 'local'." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Kadaluarsa. Lihat `declare'." + +#~ msgid "" +#~ "Create a local variable called NAME, and give it VALUE. LOCAL\n" +#~ " can only be used within a function; it makes the variable NAME\n" +#~ " have a visible scope restricted to that function and its children." +#~ msgstr "" +#~ "Membuat sebuah variabel lokal yang disebut NAMA, dan menampilkan NILAI-" +#~ "nya. LOKAL\n" +#~ " hanya dapat digunakan dalam sebuah fungsi; ini membuat NAMA variabel\n" +#~ " memiliki scope visibel terbatas untuk fungsi itu dan anaknya." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Keluaran dari ARGs. Jika pilihan -n dispesifikasikan, akhiran baris baru " +#~ "dihapus." + +#~ msgid "" +#~ "Enable and disable builtin shell commands. This allows\n" +#~ " you to use a disk command which has the same name as a shell\n" +#~ " builtin without specifying a full pathname. If -n is used, the\n" +#~ " NAMEs become disabled; otherwise NAMEs are enabled. For example,\n" +#~ " to use the `test' found in $PATH instead of the shell builtin\n" +#~ " version, type `enable -n test'. On systems supporting dynamic\n" +#~ " loading, the -f option may be used to load new builtins from the\n" +#~ " shared object FILENAME. The -d option will delete a builtin\n" +#~ " previously loaded with -f. If no non-option names are given, or\n" +#~ " the -p option is supplied, a list of builtins is printed. The\n" +#~ " -a option means to print every builtin with an indication of whether\n" +#~ " or not it is enabled. The -s option restricts the output to the " +#~ "POSIX.2\n" +#~ " `special' builtins. The -n option displays a list of all disabled " +#~ "builtins." +#~ msgstr "" +#~ "Enable dan disable perintah builtin shell. Ini membolehkan\n" +#~ " anda untuk menggunakan perintah disk yang memiliki nama sama seperti " +#~ "sebuah NAMA\n" +#~ " shell builtin tanpa menspesifikasikan sebuah pathname full. Jika " +#~ "pilihan -n digunakan,\n" +#~ " NAMA menjadi disabled; jika tidak NAMA menjadi enabled. Contoh,\n" +#~ " gunakan `test' ditemukan dalam $PATH daripada dalam builtin versi\n" +#~ " builtin shell, ketik `enable -n test'. Di system mensupport dynamic\n" +#~ " loading, pilihan -f mungkin bisa digunakan untuk menload builtin baru " +#~ "dari\n" +#~ " shared object NAMAFILE. Pilihan -d akan menghapus sebuah builting\n" +#~ " yang sebelumnya diload dengan pilihan -f. Jika tidak ada nama pilihan " +#~ "yang diberikan, atau\n" +#~ " pilihan -p diberikan, daftar dari builtin ditampilkan.\n" +#~ " Pilihan -a berarti menampilkan setiap builtin dengan sebuah indikasi " +#~ "apakah\n" +#~ " atau tidak ini enabled. Pilihan -s membatasi keluaran ke POSIX.2\n" +#~ " `special' builtins. Pilihan -n menampilkan daftar dari semua yang " +#~ "builtins yang disabled." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Baca ARGs sebagai masukan ke shell dan jalankan untuk menghasilkan " +#~ "perintah(s)." + +#~ msgid "" +#~ "Exec FILE, replacing this shell with the specified program.\n" +#~ " If FILE is not specified, the redirections take effect in this\n" +#~ " shell. If the first argument is `-l', then place a dash in the\n" +#~ " zeroth arg passed to FILE, as login does. If the `-c' option\n" +#~ " is supplied, FILE is executed with a null environment. The `-a'\n" +#~ " option means to make set argv[0] of the executed process to NAME.\n" +#~ " If the file cannot be executed and the shell is not interactive,\n" +#~ " then the shell exits, unless the shell option `execfail' is set." +#~ msgstr "" +#~ "Exec FILE, menimpa shell ini dengan aplikasi yang dispesifikasikan.\n" +#~ " Jika FILE tidak dispesifikasikan, redirectiions mengambil efek dalam\n" +#~ " shell ini. Jika argumen pertama adalah `-l', maka tempatkan sebuah " +#~ "dash dalam\n" +#~ " argument ke nol yang dilewatkan ke FILE, seperti yang dilakukan oleh " +#~ "login. Jika pilihan `-c'\n" +#~ " diberikan, FILE dijalankan dengan environmen kosong. Jika pilihan `-" +#~ "a'\n" +#~ " berarti menset argv[0] dari proses yang dijalankan ke NAMA.\n" +#~ " Jika berkas tidak dapat dijalankan dan shell bukan interaktif,\n" +#~ " maka shell keluar, unless pilihan shell `execfail' diset." + +#~ msgid "Logout of a login shell." +#~ msgstr "Logout dari sebuah login shell." + +#~ msgid "" +#~ "For each NAME, the full pathname of the command is determined and\n" +#~ " remembered. If the -p option is supplied, PATHNAME is used as the\n" +#~ " full pathname of NAME, and no path search is performed. The -r\n" +#~ " option causes the shell to forget all remembered locations. The -d\n" +#~ " option causes the shell to forget the remembered location of each " +#~ "NAME.\n" +#~ " If the -t option is supplied the full pathname to which each NAME\n" +#~ " corresponds is printed. If multiple NAME arguments are supplied " +#~ "with\n" +#~ " -t, the NAME is printed before the hashed full pathname. The -l " +#~ "option\n" +#~ " causes output to be displayed in a format that may be reused as " +#~ "input.\n" +#~ " If no arguments are given, information about remembered commands is " +#~ "displayed." +#~ msgstr "" +#~ "Untuk setiap NAMA, full pathname dari perintah ditentukan dan\n" +#~ " diingat. Jika pilihan -p diberikan, PATHNAME digunakan sebagai\n" +#~ " full pathname dari NAME, dan tidak ada jalur pencarian yang " +#~ "dilakukan. Pilihan -r\n" +#~ " menyebabkan shell untuk melupakan semua lokasi yang diingat. Pilihan -" +#~ "d\n" +#~ " menyebabkan shell untuk melupakan lokasi dari setiap NAMA.\n" +#~ " Jika pilihan -t diberikan ful pathname ke setiap NAMA\n" +#~ " yang bersesuaian ditampilkan. Jika beberapa argumen NAMA diberikan " +#~ "dengan\n" +#~ " pilihan -t, NAME ditampilkan sebelum hashed full pathname. Pilihan -" +#~ "l\n" +#~ " menyebabkan keluaran untuk ditampilkan dalam format yang biasa " +#~ "digunakan sebagai masukan.\n" +#~ " Jika tidak ada argumen yang diberikan, informasi mengenai perintah " +#~ "yang diingat akan ditampilkan." + +#~ msgid "" +#~ "Display helpful information about builtin commands. If PATTERN is\n" +#~ " specified, gives detailed help on all commands matching PATTERN,\n" +#~ " otherwise a list of the builtins is printed. The -s option\n" +#~ " restricts the output for each builtin command matching PATTERN to\n" +#~ " a short usage synopsis." +#~ msgstr "" +#~ "Menampilkan informasi yang berharga mengenai perintah builtin. Jika " +#~ "PATTERN\n" +#~ " dispesifikasikan, memberikan bantuan detail mengenail seluruh " +#~ "perintah yang cocok dengan PATTERN,\n" +#~ " jika tidak sebuah daftar dari builtings akan ditampilkan. Pilihan -s\n" +#~ " membatasi keluaran dari setiap perintah builtin yang cocok dengan " +#~ "PATTERN ke\n" +#~ " ringkasan penggunaan singkat." + +#~ msgid "" +#~ "By default, removes each JOBSPEC argument from the table of active jobs.\n" +#~ " If the -h option is given, the job is not removed from the table, but " +#~ "is\n" +#~ " marked so that SIGHUP is not sent to the job if the shell receives a\n" +#~ " SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove " +#~ "all\n" +#~ " jobs from the job table; the -r option means to remove only running " +#~ "jobs." +#~ msgstr "" +#~ "Secara default, menghapus setiap JOBSPEC argumen dari tabel actif jobs.\n" +#~ " Jika pilihan -n diberikan, pekerjaan tidak dihapus dari tabel, tetap " +#~ "ditandai\n" +#~ " sehingga ketika SIGHUP tidak terkirim ke job ketika shell menerima " +#~ "sebuah\n" +#~ " SIGHUP. Pilihan -a, ketika JOBSPEC tidak diberikan, berarti menghapus " +#~ "seluruh\n" +#~ " pekerjaan dari job tabel; Pilihan -r berarti hanya menghapus " +#~ "pekerjaan yang berjalan." + +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N\n" +#~ " is omitted, the return status is that of the last command." +#~ msgstr "" +#~ "Menyebabkan sebuah fungsi untuk keluar dengan nilai kembalian " +#~ "dispesifikasikan oleh N. Jika N\n" +#~ " diabaikan, maka status kembalian adalah status dari perintah terakhir." + +#~ msgid "" +#~ "For each NAME, remove the corresponding variable or function. Given\n" +#~ " the `-v', unset will only act on variables. Given the `-f' flag,\n" +#~ " unset will only act on functions. With neither flag, unset first\n" +#~ " tries to unset a variable, and if that fails, then tries to unset a\n" +#~ " function. Some variables cannot be unset; also see readonly." +#~ msgstr "" +#~ "Untuk setiap NAMA, hapus variabel atau fungsi yang berhubungan. Dengan\n" +#~ " pilihan `-v', unset hanya berlaku di variabel. Dengan pilihan `-f',\n" +#~ " unset hanya berlaku untuk fungsi. Dengan tidak menggunakan dua " +#~ "pilihan itu,\n" +#~ " pertama akan mencoba mengunset variabel, dan jika itu gagal maka " +#~ "akan\n" +#~ " mencoba untuk mengunset sebuah fungsi. Beberapa variabel tidak dapat " +#~ "diunset. Lihat readonly." + +#~ msgid "" +#~ "NAMEs are marked for automatic export to the environment of\n" +#~ " subsequently executed commands. If the -f option is given,\n" +#~ " the NAMEs refer to functions. If no NAMEs are given, or if `-p'\n" +#~ " is given, a list of all names that are exported in this shell is\n" +#~ " printed. An argument of `-n' says to remove the export property\n" +#~ " from subsequent NAMEs. An argument of `--' disables further option\n" +#~ " processing." +#~ msgstr "" +#~ "NAMA ditandai untuk otomatis export ke environment dari\n" +#~ " perintah yang akan dijalankan selanjutnya. Jika pilihan -f " +#~ "diberikan,\n" +#~ " NAMA akan menunjuk ke fungsi. Jika tidak ada NAMA diberikan, atau " +#~ "jika pilihan `-p'\n" +#~ " diberikan, daftar dari seluruh nama yang diexport dalam shell ini\n" +#~ " ditampilkan. Sebuah argumen dari pilihan `-n' mengatakan untuk " +#~ "menghapus expor properti\n" +#~ " dari NAMA selanjutnya. Sebuah argumen dari `--' menonaktifkan " +#~ "pemrosesan\n" +#~ " pilihan selanjutnya." + +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may\n" +#~ " not be changed by subsequent assignment. If the -f option is given,\n" +#~ " then functions corresponding to the NAMEs are so marked. If no\n" +#~ " arguments are given, or if `-p' is given, a list of all readonly " +#~ "names\n" +#~ " is printed. The `-a' option means to treat each NAME as\n" +#~ " an array variable. An argument of `--' disables further option\n" +#~ " processing." +#~ msgstr "" +#~ "NAMA yang diberikan ditandai secara baca-saja dan nilai dari NAMA ini " +#~ "tidak\n" +#~ " boleh diubah oleh assignmen selanjutnya. Jika pilihan -f diberikan,\n" +#~ " maka fungsi yang berhubungan dengan NAMA akan ditandai. Jika tidak\n" +#~ " ada argumen yang diberikan, atau jika pilihan `-p' diberikan, sebuah " +#~ "daftar dari seluruh nama baca-saja\n" +#~ " ditampilkan. Pilihan `-a' berarti memperlakukan setiap NAMA sebagai\n" +#~ " sebuah variabel array. Sebuah argumen dari `--' menonaktifkan " +#~ "pemrosesan\n" +#~ " pilihan selanjutnya." + +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" +#~ " not given, it is assumed to be 1." +#~ msgstr "" +#~ "Parameter posisi dari $N+1 ... diubah namanya menjadi $1 ... Jika N\n" +#~ " tidak diberikan, ini diasumsikan untuk menjadi 1." + +#~ msgid "" +#~ "Suspend the execution of this shell until it receives a SIGCONT\n" +#~ " signal. The `-f' if specified says not to complain about this\n" +#~ " being a login shell if it is; just suspend anyway." +#~ msgstr "" +#~ "Suspend eksekusi dari shell ini sampai ini menerima sebuah sinyal " +#~ "SIGCONT\n" +#~ " Jika pilihan `-f' dispesifikasikan maka tidak komplain tentang ini " +#~ "menjadi\n" +#~ " sebuah login shell jika emang begitu. Hanya lakukan suspend saja." + +#~ msgid "" +#~ "Print the accumulated user and system times for processes run from\n" +#~ " the shell." +#~ msgstr "" +#~ "Tampilkan waktu yang terakumulasi oleh pengguna dan system untuk proses " +#~ "yang berjalan dari\n" +#~ " shell." + +#~ msgid "" +#~ "For each NAME, indicate how it would be interpreted if used as a\n" +#~ " command name.\n" +#~ " \n" +#~ " If the -t option is used, `type' outputs a single word which is one " +#~ "of\n" +#~ " `alias', `keyword', `function', `builtin', `file' or `', if NAME is " +#~ "an\n" +#~ " alias, shell reserved word, shell function, shell builtin, disk " +#~ "file,\n" +#~ " or unfound, respectively.\n" +#~ " \n" +#~ " If the -p flag is used, `type' either returns the name of the disk\n" +#~ " file that would be executed, or nothing if `type -t NAME' would not\n" +#~ " return `file'.\n" +#~ " \n" +#~ " If the -a flag is used, `type' displays all of the places that " +#~ "contain\n" +#~ " an executable named `file'. This includes aliases, builtins, and\n" +#~ " functions, if and only if the -p flag is not also used.\n" +#~ " \n" +#~ " The -f flag suppresses shell function lookup.\n" +#~ " \n" +#~ " The -P flag forces a PATH search for each NAME, even if it is an " +#~ "alias,\n" +#~ " builtin, or function, and returns the name of the disk file that " +#~ "would\n" +#~ " be executed." +#~ msgstr "" +#~ "Untuk setiap NAMA, mengindikasikan bagaimana ini akan diinterpretasikan " +#~ "jika digunakan sebagai sebuah\n" +#~ " nama perintah.\n" +#~ " \n" +#~ " Jika sebuah pilihan -t digunakan, `type' mengeluarkan sebuah kata " +#~ "tunggal yang salah satu dari\n" +#~ " `alias', `keyword', `function', `builtin', `file', atau `', jika NAMA " +#~ "adalah sebuah\n" +#~ " alias, shell kata yang dipesan, shell fungsi, shell builtin, disk " +#~ "file,\n" +#~ " atau tidak ditemukan, respectively.\n" +#~ " \n" +#~ " Jika flag -p digunakan, `type' menampilkan semua dari tempat yang " +#~ "berisi\n" +#~ " nama executable `file'. Ini meliputi aliases, builtings, dan\n" +#~ " fungsi, jika dan hanya jika flag -p juga tidak digunakan.\n" +#~ " \n" +#~ " Flag -f menekan seluruh fungsi shell lookup.\n" +#~ " \n" +#~ " Flag -P memaksa sebuah JALUR pencarian untuk setiap NAMA, bahkan jika " +#~ "ini merupakan sebuah alias,\n" +#~ " builtin, atau fungsi, dan mengembalikan nama ke disk file yang akan\n" +#~ " dijalankan." + +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if\n" +#~ " `-S' is supplied, the current value of the mask is printed. The `-" +#~ "S'\n" +#~ " option makes the output symbolic; otherwise an octal number is " +#~ "output.\n" +#~ " If `-p' is supplied, and MODE is omitted, the output is in a form\n" +#~ " that may be used as input. If MODE begins with a digit, it is\n" +#~ " interpreted as an octal number, otherwise it is a symbolic mode " +#~ "string\n" +#~ " like that accepted by chmod(1)." +#~ msgstr "" +#~ "File-creation mask pengguna diset ke MODE. Jika MODE diabaikan, atau " +#~ "jika\n" +#~ " `-S' diberikan, nilai sekaran dari mask ditampilkan. Pilihan `-S'\n" +#~ " membuah keluaran symbolic; jika tidak sebuah bilangan octal " +#~ "dikeluarkan.\n" +#~ " Jika pilihan `-p' diberikan, dan MODE diabaikan, keluaran adalah " +#~ "dalam format\n" +#~ " yang bisa digunakan sebagai masukan. Jika MODE dimulai dengan sebuah " +#~ "digit, ini\n" +#~ " diinterpretasikan sebagai sebuah bilangan octal, jika tidak ini " +#~ "adalah sebuah symbolic mode string\n" +#~ " yang diterima oleh chmod(1)." + +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If\n" +#~ " N is not given, all currently active child processes are waited for,\n" +#~ " and the return code is zero. N is a process ID; if it is not given,\n" +#~ " all child processes of the shell are waited for." +#~ msgstr "" +#~ "Menunggu sampai proses yang dispesifikasikan dan laporkan status " +#~ "selesainya. Jika\n" +#~ " N tidak diberikan, semua proses anak yang masih aktif ditunggu " +#~ "untuk,\n" +#~ " dan mengembalikan kode kembalian nol. N adalah sebuah proses ID; jika " +#~ "ini tidak diberikan,\n" +#~ " semua proses anak dari shell ditunggu." + +#~ msgid "" +#~ "Create a simple command invoked by NAME which runs COMMANDS.\n" +#~ " Arguments on the command line along with NAME are passed to the\n" +#~ " function as $0 .. $n." +#~ msgstr "" +#~ "Buat sebuah perintah sederhana yang memanggil dengan NAMA yang " +#~ "menjalankan PERINTAH.\n" +#~ " Argumen dalam baris perintah dengan NAMA dilewatkan ke\n" +#~ " fungsi sebagai $0 .. $n." + +#~ msgid "" +#~ "Toggle the values of variables controlling optional behavior.\n" +#~ " The -s flag means to enable (set) each OPTNAME; the -u flag\n" +#~ " unsets each OPTNAME. The -q flag suppresses output; the exit\n" +#~ " status indicates whether each OPTNAME is set or unset. The -o\n" +#~ " option restricts the OPTNAMEs to those defined for use with\n" +#~ " `set -o'. With no options, or with the -p option, a list of all\n" +#~ " settable options is displayed, with an indication of whether or\n" +#~ " not each is set." +#~ msgstr "" +#~ "Ubah nilai dari variabel yang mengontrol perilaku opsional.\n" +#~ " Pilihan -s berarti untuk mengaktifkan (set) setiap OPTNAME; pilihan -" +#~ "u\n" +#~ " mengunset setiap OPTNAME. tanda -q menekan keluaran; status keluaran\n" +#~ " mengindikasikan apakah setiap OPTNAME diset atau diunset. Pilihan -o\n" +#~ " membatasi OPTNAME ke nilai yang didefinisikan untuk digunakan dengan\n" +#~ " `set -o'. Tanpa pilihan, atau dengan pilihan -p, sebuah daftar dari " +#~ "seluruh\n" +#~ " pilihan yang bisa diset ditampilkan, tanpa sebuah indikasi apakah " +#~ "salah satu atau\n" +#~ " bukan setiap dari variabel diset." + +#~ msgid "" +#~ "For each NAME, specify how arguments are to be completed.\n" +#~ " If the -p option is supplied, or if no options are supplied, " +#~ "existing\n" +#~ " completion specifications are printed in a way that allows them to " +#~ "be\n" +#~ " reused as input. The -r option removes a completion specification " +#~ "for\n" +#~ " each NAME, or, if no NAMEs are supplied, all completion " +#~ "specifications." +#~ msgstr "" +#~ "Untuk setiap NAMA, spesifikasikan bagaimana argumen akan diselesaikan.\n" +#~ " Jika pilihan -p diberikan, atau tidak ada pilihan yang diberikan, " +#~ "completion\n" +#~ " spesifikasi yang telah ada ditampilkan dalam sebuah cara yang " +#~ "membolehkan mereka untuk\n" +#~ " digunakan sebagai masukan. Pilihan -r menghapus sebuah spesifikasi " +#~ "completion untuk\n" +#~ " setiap NAMA, atau jika tidak ada NAMA yang diberikan, untuk semua " +#~ "spesifikasi completion." diff --git a/bash-5.1/po/insert-header.sin b/bash-5.1/po/insert-header.sin new file mode 100644 index 0000000..b26de01 --- /dev/null +++ b/bash-5.1/po/insert-header.sin @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/bash-5.1/po/it.gmo b/bash-5.1/po/it.gmo new file mode 100644 index 0000000000000000000000000000000000000000..4bbd10a4e300f3ea4f654c759073cd8a7cca9e1d GIT binary patch literal 85368 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 ZNrt}oDfGrdGi4%T6fk4$Zscef{vS&A{Hy=~ literal 0 HcmV?d00001 diff --git a/bash-5.1/po/it.po b/bash-5.1/po/it.po new file mode 100644 index 0000000..1defc40 --- /dev/null +++ b/bash-5.1/po/it.po @@ -0,0 +1,6136 @@ +# Italian translation for bash +# Copyright (C) 2009 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Sergio Zanchetta , 2010, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: bash-4.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2011-10-17 09:14+0200\n" +"Last-Translator: Sergio Zanchetta \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural= (n != 1)\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "indice dell'array errato" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: impossibile convertire un array indicizzato in uno associativo" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: chiave dell'array associativo non valida" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: impossibile assegnare a un indice non numerico" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" +"%s: %s: deve essere usato un indice nell'assegnazione di un array associativo" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: impossibile creare: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: impossibile trovare una mappatura per il comando" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: il primo carattere non spazio non eÌ€ \"\"\"" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "carattere di chiusura \"%c\" non presente in %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: separatore di tipo due punti mancante" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "\"%s\": impossibile eliminare l'associazione" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "\"%s\": nome alias non valido" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "modifica delle righe non abilitata" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "\"%s\": nome della mappatura non valido" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: impossibile leggere: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "\"%s\" nome della funzione sconosciuto" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s non eÌ€ associato ad alcun tasto.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s puoÌ€ essere invocato tramite " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "\"%s\": impossibile eliminare l'associazione" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "numero di cicli" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "significativo solo in un ciclo \"for\", \"while\" o \"until\"" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Restituisce il contesto della chiamata alla subroutine corrente.\n" +" \n" +" Senza ESPR, restituisce \"$riga $nomefile\". Con ESPR, restituisce\n" +" \"$riga $subroutine $nomefile\"; questa informazione aggiuntiva può " +"essere usata\n" +" per fornire uno stack trace.\n" +" \n" +" Il valore dell'ESPR indica di quanti frame di chiamata tornare indietro " +"rispetto\n" +" a quello attuale; in cima c'è il frame 0.\n" +" \n" +" Stato di uscita:\n" +" Restituisce 0 a meno che non sia in esecuzione una funzione di shell o " +"che l'ESPR\n" +" non sia valida." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME non impostata" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "troppi argomenti" + +#: builtins/cd.def:342 +#, fuzzy +msgid "null directory" +msgstr "nessun'altra directory" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD non impostata" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "riga %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "attenzione: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: uso: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: l'opzione richiede un argomento" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: è necessario un argomento numerico" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: non trovata" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: opzione non valida" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nome dell'opzione non valido" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "\"%s\": non è un identificatore valido" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "numero ottale non valido" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "numero esadecimale non valido" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "numero non valido" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: specifica di segnale non valida" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "\"%s\": non eÌ€ un pid o un numero di job valido" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: variabile in sola lettura" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s fuori dall'intervallo" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argomento" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s fuori dall'intervallo" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: job inesistente" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: nessun controllo dei job" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "nessun controllo dei job" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: limitato" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "limitato" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: non è un comando interno di shell" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "errore in scrittura: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "errore nell'impostazione degli attributi del terminale: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "errore nel recupero degli attributi del terminale: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: errore nel recupero della directory corrente: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: specifica di job ambigua" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: impossibile azzerare: %s in sola lettura" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: impossibile azzerare" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nome azione non valido" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: nessun completamento specificato" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "attenzione: l'opzione -F potrebbe non funzionare come previsto" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "attenzione: l'opzione -C potrebbe non funzionare come previsto" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "funzione di completamento attualmente non in esecuzione" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "puoÌ€ essere usato solo in una funzione" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "\"%s\": nome alias non valido" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "impossibile usare \"-f\" per creare funzioni" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funzione in sola lettura" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: impossibile eliminare variabili array in questo modo" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: impossibile convertire un array associativo in uno indicizzato" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "caricamento dinamico non disponibile" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "impossibile aprire l'oggetto condiviso %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "impossibile trovare %s nell'oggetto condiviso %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: non caricato dinamicamente" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: non caricato dinamicamente" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: impossibile eliminare: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: è una directory" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: non è un file regolare" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: file troppo grande" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: impossibile eseguire il file binario" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: impossibile eseguire: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "logout\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "non eÌ€ una shell di login: utilizzare \"exit\"" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Sono presenti job interrotti.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Ci sono job in esecuzione.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "nessun comando trovato" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "specifica della cronologia" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: impossibile aprire il file temp: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "attuale" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "job %d avviato senza controllo dei job" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opzione illecita -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: l'opzione richiede un argomento -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hashing disabilitato" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s tabella di hash vuota\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "rich.\tcomando\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Comandi di shell corrispondenti alla parola chiave \"" +msgstr[1] "Comandi di shell corrispondenti alle parole chiave \"" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"nessun argomento della guida corrisponde a \"%s\". Provare \"help help\" o " +"\"man -k %s\" o \"info %s\"." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: impossibile aprire: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Questi comandi della shell sono definiti internamente. Digitare \"help\" per " +"consultare questa lista.\n" +"Digitare \"help nome\" per saperne di piuÌ€ sulla funzione \"nome\".\n" +"Usare \"info bash\" per saperne di piuÌ€ sulla shell in generale.\n" +"Usare \"man -k\" o \"info\" per saperne di piuÌ€ su comandi non presenti nella " +"lista.\n" +"\n" +"Un asterisco (*) vicino a un nome significa che il comando eÌ€ disabilitato.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "impossibile usare piuÌ€ di uno tra -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "posizione nella cronologia" + +#: builtins/history.def:340 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: nome dell'opzione non valido" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: espansione della cronologia non riuscita" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib non riuscito" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "nessuna altra opzione permessa con \"-x\"" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: gli argomenti devono essere ID di processo o di job" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Errore sconosciuto" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "attesa espressione" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: non è un array indicizzato" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: specifica di descrittore di file non valida" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: descrittore di file non valido: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: numero di righe non valido" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: origine dell'array non valida" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: quantum di callback non valido" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "nome della variabile array vuoto" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "necessario il supporto alla variabile array" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "\"%s\": manca il carattere di formato" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "\"%c\": specifica di formato dell'orario non valida" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "\"%c\": carattere di formato non valido" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "attenzione: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "cifra esadecimale mancante in \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "cifra unicode mancante in \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "nessun'altra directory" + +#: builtins/pushd.def:360 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: argomento di limite non valido" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "stack delle directory vuoto" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "indice dello stack delle directory" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Visualizza l'elenco delle directory attualmente in memoria. Le directory\n" +" vengono inserite nell'elenco con il comando \"pushd\"; è possibile\n" +" andare a ritroso nell'elenco con il comando \"popd\".\n" +" \n" +" Opzioni:\n" +" -c\tPulisce lo stack delle directory eliminandone tutti gli elementi\n" +" -l\tNon stampa la tilde come prefisso per le directory relative alla\n" +" \tpropria directory home\n" +" -p\tStampa lo stack delle directory una voce per riga\n" +" -v\tStampa lo stack delle directory una voce per riga usando la\n" +" \tposizione nello stack stesso come prefisso\n" +" \n" +" Argomenti:\n" +" +N\tVisualizza l'N-sima voce contando a partire da sinistra " +"dell'elenco\n" +" \tmostrato da dirs quando invocato senza opzioni, iniziando da zero.\n" +" \n" +" -N\tVisualizza l'N-sima voce contando a partire da destra dell'elenco\n" +"\tmostrato da dirs quando invocato senza opzioni, iniziando da zero." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Aggiunge una directory in cima allo stack delle directory o ruota lo\n" +" stack stesso, mettendo come primo elemento l'attuale directory\n" +" di lavoro. Senza argomenti scambia le prime due directory in cima.\n" +" \n" +" Opzioni:\n" +" -n\tEvita il normale cambio di directory quando vengono aggiunte\n" +" \tdirectory allo stack, così da manipolare solo lo stack stesso.\n" +" \n" +" Argomenti:\n" +" +N\tRuota lo stack in modo che l'N-sima directory (contando\n" +" \ta partire da sinistra dell'elenco mostrato da \"dirs\", iniziando da\n" +" \tzero) sia in cima.\n" +" \n" +" -N\tRuota lo stack in modo che l'N-sima directory (contando\n" +" \ta partire da destra dell'elenco mostrato da \"dirs\", iniziando da\n" +" \tzero) sia in cima.\n" +" \n" +" dir\tAggiunge DIR in cima allo stack delle directory, facendone la\n" +" \tdirectory di lavoro corrente.\n" +" \n" +" Il comando interno \"dirs\" visualizza lo stack delle directory." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Rimuove voci dallo stack delle directory. Senza argomenti, rimuove\n" +" la directory in cima allo stack e passa alla nuova prima directory.\n" +" \n" +" Opzioni:\n" +" -n\tEvita il normale cambio di directory quando vengono rimosse\n" +" \tdirectory dallo stack, così da manipolare solo lo stack stesso.\n" +" \n" +" Argomenti:\n" +" +N\tRimuove l'N-sima voce contando a partire da sinistra dell'elenco\n" +" \tmostrato da \"dirs\", iniziando da zero. Per esempio: \"popd +0\"\n" +" \trimuove la prima directory, \"popd +1\" la seconda.\n" +" \n" +" -N\tRimuove l'N-sima voce contando a partire da destra dell'elenco\n" +" \tmostrato da \"dirs\", iniziando da zero. Per esempio: \"popd -0\"\n" +" \trimuove l'ultima directory, \"popd -1\" la penultima.\n" +" \n" +" Il comando interno \"dirs\" visualizza lo stack delle directory." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: specifica di timeout non valida" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "errore in lettura: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"eÌ€ possibile eseguire \"return\" solo da una funzione o da uno script chiamato" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "impossibile azzerare contemporaneamente una funzione e una variabile" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: non è una variabile array" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: non è una funzione" + +#: builtins/setattr.def:194 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: impossibile azzerare" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "numero di scorrimenti" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "impossibile impostare e azzerare opzioni di shell contemporaneamente" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: nome dell'opzione di shell non valido" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "necessario un nome file come argomento" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: file non trovato" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "impossibile sospendere" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "impossibile sospendere una shell di login" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s ha \"%s\" come alias\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s è una parola chiave di shell\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s è una funzione\n" + +#: builtins/type.def:299 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s è un comando interno di shell\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s è un comando interno di shell\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s è %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "hash effettuato su %s (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: argomento di limite non valido" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "\"%c\": comando errato" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: impossibile recuperare il limite: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "limite" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: impossibile modificare il limite: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "numero ottale" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "\"%c\": operatore di modo simbolico non valido" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "\"%c\": carattere di modo simbolico non valido" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " riga " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "ultimo comando: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Interruzione..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:462 +msgid "unknown command error" +msgstr "errore di comando sconosciuto" + +#: error.c:463 +msgid "bad command type" +msgstr "tipo di comando errato" + +#: error.c:464 +msgid "bad connector" +msgstr "connettore errato" + +#: error.c:465 +msgid "bad jump" +msgstr "salto errato" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variabile non assegnata" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\atempo di attesa scaduto per l'input: auto-logout\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "impossibile redirigere lo standard input da /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: \"%c\": carattere di formato non valido" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "errore della pipe" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: limitato: impossibile specificare \"/\" nei nomi dei comandi" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: comando non trovato" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: interprete errato" + +#: execute_cmd.c:5891 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: impossibile eseguire il file binario" + +#: execute_cmd.c:5977 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s è un comando interno di shell\n" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "impossibile duplicare fd %d su fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "superato il livello di ricorsione dell'espressione" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "underflow dello stack di ricorsione" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "errore di sintassi nell'espressione" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "tentata un'assegnazione a una non variabile" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "errore di sintassi nell'espressione" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "divisione per 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "bug: token di expassign errato" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "atteso \":\" per l'espressione condizionale" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "esponente minore di 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "atteso identificatore dopo un pre-incremento o un pre-decremento" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "\")\" mancante" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "errore di sintassi: atteso un operando" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "errore di sintassi: operatore aritmetico non valido" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (il token dell'errore è \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "base aritmetica non valida" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: numero di righe non valido" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "valore troppo grande per la base" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: errore di espressione\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: impossibile accedere alle directory padre" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "impossibile reimpostare il modo nodelay per fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"impossibile allocare un nuovo descrittore di file per l'input della bash da " +"fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: buffer giaÌ€ esistente per il nuovo fd %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pipe pgrp" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "il pid %d del fork appare nel job in esecuzione %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "eliminazione del job %d interrotto con il gruppo di processi %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) segnato come ancora in vita" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: pid inesistente" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Segnale %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Completato" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Fermato" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Fermato(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "In esecuzione" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Eseguito(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Uscita %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Stato sconosciuto" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(core dump creato) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (dir: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid del figlio (%ld a %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: il pid %ld non eÌ€ un figlio di questa shell" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: nessun record del processo %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: il job %d eÌ€ fermo" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: job inesistente" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: il job eÌ€ terminato" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: il job %d è giaÌ€ in background" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: attivato WNOHANG per evitare blocchi indefiniti" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: riga %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (core dump creato)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(dir ora: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp non riuscita" + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: disciplina di linea" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: disciplina di linea" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "impossibile impostare il gruppo di processi del terminale (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "nessun controllo dei job in questa shell" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: asserzione non riuscita: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: asserzione non riuscita\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "sconosciuto" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: blocco eliminato nell'elenco dei disponibili" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: chiamata con un argomento di blocco giaÌ€ liberato" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: chiamata con un argomento di blocco non allocato" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: riscontrato un underflow; mh_nbytes fuori intervallo" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: riscontrato un underflow; mh_nbytes fuori intervallo" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: dimensioni diverse dei blocchi di inizio e di fine" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: chiamata con un argomento di blocco non allocato" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: dimensioni diverse dei blocchi di inizio e di fine" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" +"register_alloc: forse la tavola di allocazione eÌ€ piena con FIND_ALLOC\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: forse %p è giaÌ€ come allocato nella tabella\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_alloc: forse %p è giaÌ€ come libero nella tabella\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "base non valida" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: host sconosciuto" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: servizio non valido" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: specifica del percorso di rete errata" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "operazione di rete non supportata" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "EÌ€ presente della posta in $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "EÌ€ presente della nuova posta in $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "La posta in %s eÌ€ stata letta\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "errore di sintassi: richiesta espressione aritmetica" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "errore di sintassi: \";\" non atteso" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "errore di sintassi: \"((%s))\"" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tipo di istruzione errata %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"here-document alla riga %d è delimitato da un EOF (era richiesto \"%s\")" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"make_redirection: istruzione di reindirizzamento \"%d\" fuori dell'intervallo" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "EOF non atteso durante la ricerca di \"%c\"" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "EOF non atteso durante la ricerca di \"]]\"" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "" +"errore di sintassi nell'espressione condizionale: token non atteso \"%s\"" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "errore di sintassi nell'espressione condizionale" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "token non atteso \"%s\", era atteso \")\"" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "atteso \")\"" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argomento non atteso \"%s\" per l'operatore unario condizionale" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "argomento non atteso per l'operatore unario condizionale" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "token non atteso \"%s\", era atteso un operatore binario condizionale" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "atteso operatore binario condizionale" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argomento non atteso \"%s\" per l'operatore binario condizionale" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "argomento non atteso per l'operatore binario condizionale" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "token non atteso \"%c\" nel comando condizionale" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "token non atteso \"%s\" nel comando condizionale" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "token non atteso %d nel comando condizionale" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "errore di sintassi vicino al token non atteso \"%s\"" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "errore di sintassi vicino a \"%s\"" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "errore di sintassi: EOF non atteso" + +#: parse.y:6365 +msgid "syntax error" +msgstr "errore di sintassi" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Usare \"%s\" per uscire dalla shell.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "EOF non atteso durante la ricerca di \")\"" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: funzione \"%s\" non trovata" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: COMPSPEC NULL" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: connettore errato \"%d\"" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: descrittore di file non valido" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: puntatore a file NULL" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != numfile xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: \"%c\": carattere di formato non valido" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "descrittore di file fuori dell'intervallo" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: redirezione ambigua" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: impossibile sovrascrivere il file esistente" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: limitato: impossibile redirigere l'output" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "impossibile creare un file temporaneo per here-document: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: impossibile assegnare fd a una variabile" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port non supportata senza rete" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "errore di reindirizzamento: impossibile duplicare fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "impossibile trovare /tmp, eÌ€ necessario crearla" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp deve essere un nome di directory valido" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opzione non valida" + +#: shell.c:1319 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "impossibile reimpostare il modo nodelay per fd %d" + +#: shell.c:1330 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "impossibile reimpostare il modo nodelay per fd %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: è una directory" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Manca il nome" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versione %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Uso:\t%s [opzione lunga GNU] [opzione] ...\n" +"\t%s [opzione lunga GNU] [opzione] file-script ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Opzioni lunghe GNU:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Opzioni di shell:\n" + +#: shell.c:2043 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD o -c comando o -O opzione_shopt\t\t(solo invocazione)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\topzione -%s oppure -o\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Digitare «%s -c \"help set\"» per ulteriori informazioni sulle opzioni di " +"shell.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Digitare \"%s -c help\" per ulteriori informazioni sui comandi interni di " +"shell.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Usare il comando \"bashbug\" per segnalare i bug.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: operazione non valida" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Segnale inesistente" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Chiusura" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Interruzione" + +#: siglist.c:58 +msgid "Quit" +msgstr "Uscita (con core dump)" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Istruzione non consentita" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "Rilevato trace/breakpoint" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Istruzione ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "Istruzione EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Eccezione in virgola mobile" + +#: siglist.c:86 +msgid "Killed" +msgstr "Ucciso" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Errore di bus" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Errore di segmentazione" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Chiamata di sistema errata" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Pipe interrotta" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Sveglia" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Terminato" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Condizione di I/O urgente" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Fermato (segnale)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Continuato" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Processo figlio concluso o fermato" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Fermato (input da terminale)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Fermato (output da terminale)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O pronto" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Limite di CPU" + +#: siglist.c:154 +msgid "File limit" +msgstr "Limite di file" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Timer (virtuale)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Timer (profilo)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Finestra modificata" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Blocco del record" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Segnale 1 dell'utente" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Segnale 2 dell'utente" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "Dati di input HTF in sospeso" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "mancanza di alimentazione imminente" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "crash di sistema imminente" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "processo spostato su un'altra CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "errore di programmazione" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "Modalità di monitoraggio HFT concessa" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "Modalità di monitoraggio HFT revocata" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "la sequenza sonora HFT è stata completata" + +#: siglist.c:214 +msgid "Information request" +msgstr "Richiesta di informazioni" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Segnale sconosciuto n° %d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "sostituzione errata: nessuna chiusura di \"%s\" in %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: impossibile assegnare una lista a un membro di un array" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "impossibile creare una pipe per la sostituzione del processo" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "impossibile creare un figlio per la sostituzione del processo" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "impossibile aprire la pipe con nome %s in lettura" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "impossibile aprire la pipe con nome %s in scrittura" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "impossibile duplicare una pipe con nome %s come fd %d" + +#: subst.c:6213 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "sostituzione errata: manca «\"» di chiusura in %s" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "impossibile creare una pipe per la sostituzione del comando" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "impossibile creare un figlio per la sostituzione del comando" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: impossibile duplicare la pipe come fd 1" + +#: subst.c:6883 subst.c:9952 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: valore non valido per il descrittore del file di traccia" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: numero di righe non valido" + +#: subst.c:7013 subst.c:7177 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "\"%s\": nome alias non valido" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametro nullo o non impostato" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametro nullo o non impostato" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expressione di sottostringa < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: sostituzione errata" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: impossibile assegnare in questo modo" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"le versioni future della shell forzeranno la valutazione come fosse una " +"sostituzione aritmetica" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "sostituzione errata: manca «\"» di chiusura in %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "nessuna corrispondenza: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "atteso argomento" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: attesa espressione intera" + +#: test.c:265 +msgid "`)' expected" +msgstr "atteso \")\"" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "atteso \")\", trovato %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: atteso operatore binario" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: atteso operatore unario" + +#: test.c:881 +msgid "missing `]'" +msgstr "\"]\" mancante" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "errore di sintassi: \";\" non atteso" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "numero di segnale non valido" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: valore errato in trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: il gestore dei segnali eÌ€ SIG_DFL, viene inviato " +"nuovamente %d (%s)" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: segnale errato %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "errore nell'importazione della definizione di funzione per \"%s\"" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "livello di shell (%d) troppo alto, reimpostato a 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: nessun contesto di funzione nell'ambito corrente" + +#: variables.c:2693 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: impossibile assegnare fd a una variabile" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: nessun contesto di funzione nell'ambito corrente" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s ha exportstr null" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "carattere non valido %d in exportstr per %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "nessun \"=\" in exportstr per %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context: la prima parte di shell_variables non è un contesto di " +"funzione" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: nessun contesto global_variables" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: la prima parte di shell_variables non è un ambito temporaneo " +"d'ambiente" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: impossibile aprire come FILE" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: valore non valido per il descrittore del file di traccia" + +#: variables.c:6437 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s fuori dall'intervallo" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licenza GPLv3+: GNU GPL versione 3 o successiva \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versione %s (%s)\n" + +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." +msgstr "Questo eÌ€ software libero; eÌ€ possibile modificarlo e ridistribuirlo.\n" + +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Non c'eÌ€ ALCUNA GARANZIA, nei limiti permessi dalla legge.\n" + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: impossibile allocare %lu byte (%lu byte allocati)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: impossibile allocare %lu byte" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: impossibile allocare %lu byte (%lu byte allocati)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: impossibile allocare %lu byte" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nome[=valore] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] nome [nome ...]" + +#: builtins.c:53 +#, fuzzy +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m mappatura] [-f nomefile] [-q nome] [-u nome] [-r " +"seqtasti] [-x seqtasti:comando-shell] [seqtasti:funzione-readline o comando-" +"readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [comandoint-shell [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [espr]" + +#: builtins.c:66 +#, fuzzy +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]]] [dir]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] comando [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilrtux] [-p] [nome[=valore] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilrtux] [-p] nome[=valore] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [opzione] nome[=valore] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f nome_file] [nome ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts stringaopz nome [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a nome] [comando [argomenti ...]] [redirezione ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ename] [-lnr] [primo] [ultimo] oppure fc -s [pat=rep] [comando]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [spec_job]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [spec_job ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p nomepercorso] [-dt] [nome ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [modello ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d posiz] [n] oppure history -anrw [nomefile] oppure history -" +"ps arg [arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [specjob ...] oppure jobs -x comando [argomenti]" + +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [specjob ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s specsegn | -n numsegn | -specsegn] pid | specjob ... oppure kill -l " +"[specsegn]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a array] [-d delim] [-i testo] [-n ncaratt] [-N ncaratt] [-p " +"stringa] [-t secondi] [-u fd] [nome ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opzione] [--] [arg ...]" + +#: builtins.c:144 +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [nome ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [nome[=valore] ...] oppure export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [nome[=valore] ...] oppure readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source nomefile [argomenti]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". nomefile [argomenti]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [espr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] spec_segnale ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] nome [nome ...]" + +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [limite]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [modo]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [id]" + +#: builtins.c:181 +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [pid]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOME [in PAROLE ... ] ; do COMANDI; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( espr1; espr2; espr3 )); do COMANDI; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NOME [in PAROLE ... ;] do COMANDI; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PAROLA in [MODELLO [| MODELLO]...) COMANDI ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMANDI; then COMANDI; [ elif COMANDI; then COMANDI; ]... [ else " +"COMANDI; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMANDI; do COMANDI; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMANDI; do COMANDI; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NOME] comando [redirezioni]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function name { COMANDI ; } oppure name () { COMANDI ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ COMANDI ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "spec_job [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( espressione ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ espressione ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variabili - nomi e significati di alcune variabili di shell" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [nomeopz ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] formato [argomenti]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o opzione] [-A azione] [-G modglob] [-" +"W elencoparole] [-F funzione] [-C comando] [-X modfiltro] [-P prefisso] [-S " +"suffisso] [nome ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o opzione] [-A azione] [-G modglob] [-W " +"elencoparole] [-F funzione] [-C comando] [-X modfiltro] [-P prefisso] [-S " +"suffisso] [parola]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o opzione] [-DE] [nome ...]" + +#: builtins.c:242 +#, fuzzy +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-n numero] [-O origine] [-s numero] [-t] [-u fd] [-C callback] [-c " +"quantità] [array]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n numero] [-O origine] [-s numero] [-t] [-u fd] [-C callback] [-" +"c quantità] [array]" + +#: builtins.c:256 +#, fuzzy +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definisce o visualizza alias.\n" +" \n" +" Senza argomenti, \"alias\" stampa l'elenco degli alias nella forma\n" +" riusabile \"alias NOME=VALORE\" sullo standard output.\n" +" \n" +" Altrimenti, un alias è definito per ogni NOME a cui è fornito un " +"VALORE.\n" +" Uno spazio finale in VALORE determina un controllo della parola " +"successiva\n" +" che andrà a sostituire l'alias quando viene espanso.\n" +" \n" +" Opzioni:\n" +" -p\tStampa tutti gli alias definiti in un formato riusabile\n" +" \n" +" Stato di uscita:\n" +" alias restituisce vero a meno che non venga fornito un NOME per il " +"quale\n" +" non sia stato definito alcun alias." + +#: builtins.c:278 +#, fuzzy +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Rimuove ogni NOME dall'elenco degli alias definiti.\n" +" \n" +" Opzioni:\n" +" -a\tRimuove tutte le definizioni di alias.\n" +" \n" +" Restituisce successo a meno che NOME non sia un alias esistente." + +#: builtins.c:291 +#, fuzzy +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Imposta le associazioni di tasti e le variabili di Readline.\n" +" \n" +" Associa una sequenza di tasti a una funzione o a una macro Readline, " +"oppure imposta una\n" +" variabile di Readline. La sintassi di argomento senza opzione è " +"equivalente a quella\n" +" trovata in ~/.inputrc, ma deve essere passata come singolo argomento:\n" +" es., bind '\"\\C-x\\C-r\": ri-leggi-file-init'.\n" +" \n" +" Opzioni:\n" +" -m mappatura Usa MAPPATURA come la mappatura per la durata di " +"questo\n" +" comando. Nomi accettabili per la mappatura sono " +"emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command e vi-insert.\n" +" -l Elenca i nomi delle funzioni.\n" +" -P Elenca i nomi delle funzioni e le associazioni.\n" +" -p Elenca le funzioni e le associazioni in una forma " +"che\n" +" possa essere riusata come input.\n" +" -S Elenca le sequenze di tasti che invocano le macro e " +"i loro valori.\n" +" -s Elenca le sequenze di tasti che invocano le macro e " +"i loro valori\n" +" in una forma che possa essere riusata come input.\n" +" -V Elenca i nomi e i valori delle variabili.\n" +" -v Elenca i nomi e i valori delle variabili in una " +"forma che possa\n" +" essere riusata come input.\n" +" -q nome-funzione Identifica il tasto che invoca la funzione " +"nominata.\n" +" -u nome-funzione Rimuove l'associazione tra la funzione nominata e " +"tutti i tasti associati.\n" +" -r seqtasti Rimuove l'associazione per la SEQTASTI.\n" +" -f nomefile Legge le associazioni di tasti da NOMEFILE.\n" +" -x seqtasti:comando-shell\tEsegue il COMANDO-SHELL quando viene " +"inserita\n" +" \t\t\t\t\tla SEQTASTI.\n" +" \n" +" Stato di uscita:\n" +" bind restituisce 0 a meno che non sia fornita una opzione non " +"riconosciuta o si riscontri un errore." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Esce da cicli for, while o until.\n" +" \n" +" Esce da un ciclo FOR, WHILE o UNTIL. Se è specificato N, interrompe N " +"cicli\n" +" racchiusi.\n" +" \n" +" Stato di uscita:\n" +" Lo stato di uscita è 0 a meno che N non sia maggiore o uguale a 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Riprende cicli for, while o until.\n" +" \n" +" Riprende l'iterazione successiva del ciclo chiuso FOR, WHILE o UNTIL.\n" +" Se è specificato N, riprende l'N-simo ciclo chiuso.\n" +" \n" +" Stato di uscita:\n" +" Lo stato di uscita è 0 a meno che N non sia maggiore o uguale a 1." + +#: builtins.c:354 +#, fuzzy +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Esegue comandi interni di shell.\n" +" \n" +" Esegue il COMINTERNO-SHELL con ARGOMENTI senza portare a termine una " +"ricerca\n" +" comandi. Ciò è utile quando si desidera reimplementare un comando " +"interno come una\n" +" funzione di shell, ma è necessario eseguire il comando all'interno della " +"funzione.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato di uscita del COMINTERNO-SHELL, o falso se il " +"COMINTERNO-SHELL\n" +" non è un comando interno di shell." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Restituisce il contesto della chiamata alla subroutine corrente.\n" +" \n" +" Senza ESPR, restituisce \"$riga $nomefile\". Con ESPR, restituisce\n" +" \"$riga $subroutine $nomefile\"; questa informazione aggiuntiva può " +"essere usata\n" +" per fornire uno stack trace.\n" +" \n" +" Il valore dell'ESPR indica di quanti frame di chiamata tornare indietro " +"rispetto\n" +" a quello attuale; in cima c'è il frame 0.\n" +" \n" +" Stato di uscita:\n" +" Restituisce 0 a meno che non sia in esecuzione una funzione di shell o " +"che l'ESPR\n" +" non sia valida." + +#: builtins.c:387 +#, fuzzy +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Cambia la directory di lavoro della shell.\n" +" \n" +" Cambia la directory corrente a DIR. La DIR predefinita è il valore della " +"variabile\n" +" HOME della shell.\n" +" \n" +" La variabile CDPATH definisce il percorso di ricerca per la directory " +"che contiene\n" +" DIR. I nomi di directory alternative in CDPATH sono separati da un due " +"punti (:).\n" +" Una nome nullo di directory corrisponde alla directory corrente. Se DIR " +"inizia\n" +" con uno slash (/), CDPATH non viene usato.\n" +" \n" +" Se la directory non viene trovata e l'opzione di shell \"cdable_vars\" è " +"impostata,\n" +" si assume che la parola sia un nome di variabile. Se questa variabile ha " +"un valore,\n" +" viene usato per DIR.\n" +" \n" +" Opzioni:\n" +" -L\tForza a seguire i collegamenti simbolici\n" +" -P\tUsa la struttura fisica della directory senza seguire i " +"collegamenti\n" +" \tsimbolici\n" +" -e\tSe viene fornita l'opzione -P e non può essere determinata con " +"successo\n" +" \tla directory di lavoro corrente, esce con uno stato diverso da zero\n" +" \n" +" Il valore predefinito è seguire i collegamenti simbolici, come se fosse " +"specificato \"-L\".\n" +" \n" +" Stato di uscita:\n" +" Restituisce 0 se viene cambiata la directory o se $PWD è impostata con " +"successo quando\n" +" viene usato -P; altrimenti un valore diverso da zero." + +#: builtins.c:425 +#, fuzzy +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Stampa il nome della directory di lavoro corrente.\n" +" \n" +" Opzioni:\n" +" -L\tStampa il valore di $PWD se contiene il nome della directory\n" +" \tdi lavoro corrente\n" +" -P\tStampa la directory fisica senza alcun collegamento simbolico\n" +" \n" +" In maniera predefinita \"pwd\" si comporta come se fosse specificato \"-L" +"\".\n" +" \n" +" Stato di uscita:\n" +" Restituisce 0 a meno che non venga fornita una opzione non valida o che " +"la\n" +" directory corrente non possa essere letta." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Comando nullo.\n" +" \n" +" Nessun effetto; il comando non esegue nulla.\n" +" \n" +" Stato di uscita:\n" +" ha sempre successo." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Restituisce successo come risultato.\n" +" \n" +" Stato di uscita:\n" +" ha sempre successo." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Restituisce un risultato di insuccesso.\n" +" \n" +" Stato di uscita:\n" +" Sempre un insuccesso." + +#: builtins.c:471 +#, fuzzy +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Esegue un comando semplice o visualizza informazioni sui comandi.\n" +" \n" +" Esegue il COMANDO con gli ARGOMENTI ignorando la ricerca delle funzioni " +"di shell o\n" +" visualizza informazioni sui COMANDI specificati. Può essere usato per " +"invocare comandi\n" +" sul disco quando esiste una funzione con lo stesso nome.\n" +" \n" +" Opzioni:\n" +" -p\tUsa un valore predefinito per il PERCORSO che garantisce che " +"vengano trovate tutte\n" +" \tle utilità standard\n" +" -v\tStampa una descrizione del COMANDO simile al comando interno \"type" +"\"\n" +" -V\tStampa una descrizione più prolissa di ciascun COMANDO\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato di uscita del COMANDO o insuccesso se il COMANDO " +"non viene trovato." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Imposta i valori e gli attributi delle variabili.\n" +" \n" +" Dichiara le variabili e fornisce loro attributi. Se non vengono forniti " +"NOMI,\n" +" visualizza gli attributi e i valori di tutte le variabili.\n" +" \n" +" Opzioni:\n" +" -f\tLimita l'azione o la visualizzazione ai nomi e alle definizioni di " +"funzione\n" +" -F\tLimita la visualizzazione ai soli nomi di funzione (più numero di " +"riga e\n" +" \tfile sorgente durante il debug)\n" +" -g\tCrea variabili globali quando usato in una funzione di shell; " +"altrimenti\n" +" \tè ignorato\n" +" -p\tVisualizza gli attributi e i valori di ciascun NOME\n" +" \n" +" Opzioni che impostano gli attributi:\n" +" -a\tRende i NOMI array indicizzati (se supportata)\n" +" -A\tRende i NOMI array associativi (se supportata)\n" +" -i\tFornisce ai NOMI l'attributo \"integer\"\n" +" -l\tConverte i NOMI in lettere minuscole in fase di assegnazione\n" +" -r\tImposta i NOMI in sola lettura\n" +" -t\tFornisce ai NOMI l'attributo \"trace\"\n" +" -u\tConverte i NOMI in lettere maiuscole in fase di assegnazione\n" +" -x\tImposta i NOMI come esportabili\n" +" \n" +" Usando \"+\" al posto di \"-\" disattiva l'attributo fornito.\n" +" \n" +" Le variabili con attributo intero vengono valutate aritmeticamente " +"(vedere\n" +" il comando \"let\") quando alla variabile è assegnato un valore.\n" +" \n" +" Quando viene usato in una funzione, \"declare\" rende locali i NOMI, " +"come con\n" +" il comando \"local\".\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia fornita una opzione non valida o " +"si riscontri un errore." + +#: builtins.c:532 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Imposta valori e attributi di variabile.\n" +" \n" +" Obsoleto. Vedere \"help declare\"." + +#: builtins.c:540 +#, fuzzy +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Definisce variabili locali.\n" +" \n" +" Crea una variabile locale chiamata NOME fornendogli un VALORE. L'OPZIONE " +"può\n" +" essere una qualsiasi opzione accettata da \"declare\".\n" +" \n" +" Le variabili locali possono essere usate solo all'interno di una " +"funzione; sono\n" +" visibili solo alla funzione nella quale sono definite e ai relativi " +"figli.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non venga fornita un'opzione non valida, " +"non si\n" +" riscontri un errore o la shell non stia eseguendo una funzione." + +#: builtins.c:557 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Scrive argomenti sullo standard output.\n" +" \n" +" Visualizza gli ARG sullo standard output seguiti da un ritorno a capo.\n" +" \n" +" Opzioni:\n" +" -n\tNon accoda un carattere di ritorno a capo\n" +" -e\tAbilita l'interpretazione dei seguenti caratteri backslash di " +"escape\n" +" -E\tDisabilita esplicitamente l'interpretazione dei caratteri " +"backslash di escape\n" +" \n" +" \"echo\" interpreta i seguenti caratteri backslash di escape:\n" +" \\a\tavviso (campanello)\n" +" \\b\tbackspace\n" +" \\c\telimina ulteriore output\n" +" \\e\tcarattere di escape\n" +" \\f\tavanzamento pagina\n" +" \\n\tritorno a capo\n" +" \\r\tritorno carrello\n" +" \\t\ttabulazione orizzontale\n" +" \\v\ttabulazione verticale\n" +" \\\\\tbackslash\n" +" \\0nnn\til carattere il cui codice ASCII è NNN (ottale). NNN può " +"avere\n" +" \tda 0 a 3 cifre ottali\n" +" \\xHH\til carattere otto bit il cui valore è HH (esadecimale). HH " +"può\n" +" \tavere una o due cifre esadecimali\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non venga riscontrato un errore di " +"scrittura." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Scrive argomenti sullo standard output.\n" +" \n" +" Visualizza gli ARG sullo standard output seguiti da un ritorno a capo.\n" +" \n" +" Opzioni:\n" +" -n\tNon accoda un ritorno a capo\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non venga riscontrato un errore di " +"scrittura." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Abilita o disabilita comandi interni di shell.\n" +" \n" +" Abilita o disabilita comandi interni di shell. La disabilitazione " +"permette di\n" +" eseguire un comando su disco che abbia lo stesso nome del comando " +"interno\n" +" di shell senza dover usare un nome di percorso completo.\n" +" \n" +" Opzioni:\n" +" -a\tStampa un elenco di comandi interni mostrando se sono abilitati o " +"meno\n" +" -n\tDisabilita ogni NOME o visualizza un elenco di comandi interni " +"disabilitati\n" +" -p\tStampa l'elenco dei comandi interni in un formato riusabile\n" +" -s\tStampa solo i nomi dei comandi interni \"speciali\" Posix\n" +" \n" +" Opzioni che controllano il caricamento dinamico:\n" +" -f\tCarica il comando interno NOME dall'oggetto condiviso NOMEFILE\n" +" -d\tRimuove un comando interno caricato con -f\n" +" \n" +" Senza opzioni viene abilitato ogni NOME.\n" +" \n" +" Per usare il comando \"test\" trovato in $PATH invece di quello interno " +"della\n" +" shell, digitare \"enable -n test\".\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che NOME non sia un comando interno di shell " +"o si riscontri un errore." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Esegue argomenti come un comando di shell.\n" +" \n" +" Combina gli ARGOMENTI dentro una singola stringa usando il risultato\n" +" come input per la shell ed esegue i comandi risultanti.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato di uscita del comando o successo se il comando è " +"nullo." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Analizza gli argomenti di opzione.\n" +" \n" +" Getopts è usato dalle procedure di shell per analizzare i parametri\n" +" posizionali come opzioni.\n" +" \n" +" STRINGAOPZ contiene le lettere di opzione da riconoscere; se una " +"lettera\n" +" è seguita da un due punti, ci si aspetta che l'opzione abbia un " +"argomento,\n" +" che dovrebbe essere separato da uno spazio.\n" +" \n" +" Ogni volta che viene evocato getopts posiziona l'opzione successiva\n" +" nella variabile di shell $nome inizializzando il nome, se non esiste,\n" +" e l'indice dell'argomento successivo da elaborare nella variabile di\n" +" shell OPTIND. OPTIND è inizializzata a 1 ogni volta che viene invocata\n" +" la shell o uno script di shell. Quando una opzione richiede un " +"argomento,\n" +" getopts posiziona tale argomento nella variabile di shell OPTARG.\n" +" \n" +" getopts riporta gli errori in uno o due modi. Se il primo carattere " +"della\n" +" STRINGAOPZ è un due punti, riporta gli errori in silenzio. In questa\n" +" modalità non vengono stampati messaggi di errore. Se viene riscontrata " +"una\n" +" opzione non valida, getopts posiziona il carattere di opzione trovato " +"in\n" +" ARGOPZ. Se un argomento richiesto non viene trovato, getopts posiziona\n" +" un \":\" nel NOME e imposta ARGOPZ al carattere di opzione trovato. Se " +"getopts\n" +" non è in modalità silenziosa e viene riscontrata una opzione non valida, " +"getopts\n" +" posiziona \"?\" nel NOME e azzera ARGOPZ. Se un argomento richiesto non " +"viene\n" +" trovato, viene posizionato un \"?\" nel NOME, ARGOPZ viene azzerato e " +"viene stampato\n" +" un messaggio diagnostico.\n" +" \n" +" Se il valore della variabile di shell ERROPZ è pari a 0, getopts " +"disabilita\n" +" la stampa dei messaggi di errore anche se il primo carattere della " +"STRINGAOPZ\n" +" non è un due punti. Il valore predefinito di ERROPZ è pari a 1.\n" +" \n" +" Getopts normalmente analizza i parametri posizionali ($0 - $9), ma se\n" +" vengono forniti più argomenti, vengono analizzati questi ultimi.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo se viene trovata una opzione, insuccesso se viene " +"raggiunta\n" +" la fine delle opzioni o viene riscontrato un errore." + +#: builtins.c:694 +#, fuzzy +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Sostituisce la shell con il comando fornito.\n" +" \n" +" Esegue il COMANDO, sostituendo questa shell con il programma " +"specificato.\n" +" Gli ARGOMENTI diventano gli argomenti per il COMANDO. Se il COMANDO non " +"è specificato,\n" +" ogni redirezione avrà effetto nella shell corrente.\n" +" \n" +" Opzioni:\n" +" -a nome\tPassa NOME come l'argomento zero per il COMANDO\n" +" -c\t\tEsegue il COMANDO con un ambiente vuoto\n" +" -l\t\tPosiziona un trattino nell'argomento zero per il COMANDO\n" +" \n" +" Se il comando non può essere eseguito una shell non interattiva esce, a " +"meno che\n" +" non venga impostata l'opzione di shell \"execfail\".\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia trovato il COMANDO o si " +"riscontri un errore di ridirezione." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Esce dalla shell.\n" +" \n" +" Esce dalla shell con uno stato N. Se N è omesso lo stato di uscita\n" +" è quello dell'ultimo comando eseguito." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Esce da una shell di login.\n" +" \n" +" Esce da una shell di login con stato di uscita N. Restituisce un errore " +"se non eseguito\n" +" in una shell di login." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Visualizza o esegue comandi dall'elenco della cronologia.\n" +" \n" +" fc è usato per elencare, modificare e rieseguire comandi dall'elenco " +"della cronologia.\n" +" PRIMO e ULTIMO possono essere numeri che specificano l'intervallo oppure " +"PRIMO può\n" +" essere una stringa, nel qual caso significa il comando più recente che " +"inizia con\n" +" quella stringa.\n" +" \n" +" Opzioni:\n" +" -e EDITOR\tSeleziona l'editor da usare. Il predefinito è FCEDIT, " +"quindi EDITOR,\n" +" \t\tinfine vi\n" +" -l \tElenca le righe invece di modificarle\n" +" -n\tOmette i numeri di riga nell'elencare i comandi\n" +" -r\tInverte l'ordine delle righe (elenca prima le più recenti)\n" +" \n" +" Con il formato \"fc -s [pat=rep ...] [comando]\", il COMANDO è\n" +" rieseguito dopo aver effettuato la sostituzione VECCHIO=NUOVO.\n" +" \n" +" Un alias utile da usare insieme è r=\"fc -s\", in modo che digitando \"r " +"cc\"\n" +" viene eseguito l'ultimo comando che inizia con \"cc\" e digitando \"r\" " +"riesegue\n" +" l'ultimo comando.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo o lo stato del comando eseguito, non zero se si " +"riscontra un errore." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Sposta i job in primo piano.\n" +" \n" +" Mette il job identificato da SPEC_JOB in primo piano, rendendolo il\n" +" job corrente. Se SPEC_JOB non è presente, viene usata la nozione di\n" +" job corrente della shell.\n" +" \n" +" Stato di uscita:\n" +" Stato del comando messo in primo piano, o insuccesso se si riscontra un " +"errore." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Sposta i job sullo sfondo.\n" +" \n" +" Mette il jobs identificato da ogni SPEC_JOB sullo sfondo, come se " +"fossero\n" +" stati avviati con \"&\". Se SPEC_JOB non è presente, viene usata la " +"nozione\n" +" di job corrente della shell.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che il controllo dei job non sia abilitato o " +"si riscontri un errore." + +#: builtins.c:793 +#, fuzzy +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Ricorda o visualizza le posizioni dei programmi.\n" +" \n" +" Determina e ricorda il nome completo di percorso per ogni comando NOME. " +"Se non\n" +" viene fornito alcun argomento, sono visualizzate le informazioni sui " +"comandi memorizzati.\n" +" \n" +" Opzioni:\n" +" -d\t\tDimentica la posizione memorizzata di ogni NOME\n" +" -l\t\tVisualizza in un formato che può essere riusato come input\n" +" -p nomepercorso\tUsa NOMEPERCORSO come il nome completo di percorso " +"per NOME\n" +" -r\t\tDimentica tutte le posizioni memorizzate\n" +" -t\t\tStampa la posizione memorizzata di ogni NOME, facendo\n" +" \t\tprecedere ciascuna posizione con il NOME corrispondente se vengono\n" +" \t\tforniti valori NOME multipli\n" +" Argomenti:\n" +" NOME\t\tOgni NOME è ricercato in $PATH e aggiunto all'elenco\n" +" \t\tdei comandi memorizzati.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia trovato NOME o sia fornita una " +"opzione non valida." + +#: builtins.c:818 +#, fuzzy +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Visualizza informazioni sui comandi interni.\n" +" \n" +" Visualizza un breve sommario dei comandi interni. Se viene specificato " +"il\n" +" MODELLO fornisce un aiuto dettagliato su tutti i comandi corrispondenti " +"al\n" +" MODELLO, altrimenti viene stampato l'elenco degli argomenti di aiuto.\n" +" \n" +" Opzioni:\n" +" -d\tVisualizza una breve descrizione per ciascun argomento\n" +" -m\tVisualizza l'uso in formato pseudo manpage\n" +" -s\tVisualizza solo una breve sintassi sull'uso per ciascun argomento " +"che\n" +" \tcorrisponde al MODELLO\n" +" \n" +" Argomenti:\n" +" MODELLO\tModello che specifica un argomento di aiuto\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non venga trovato il MODELLO o sia " +"fornita una opzione non valida." + +#: builtins.c:842 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Visualizza o manipola l'elenco della cronologia.\n" +" \n" +" Visualizza l'elenco della cronologia con i numeri di riga, aggiungendo a " +"ciascuna voce\n" +" modificata il prefisso \"*\". Un argomento pari a N elenca solo le " +"ultime N voci.\n" +" \n" +" Opzioni:\n" +" -c\tPulisce la cronologia eliminando tutte le voci\n" +" -d posiz\tElimina la voce della cronologia alla posizione POSIZ.\n" +" \n" +" -a\tAccoda righe al file della cronologia relative alla sessione " +"attuale\n" +" -n\tLegge tutte le righe non ancora lette dal file della cronologia\n" +" -r\tLegge il file della cronologia e ne accoda il contenuto all'elenco " +"della\n" +" \t\tcronologia\n" +" -w\tScrive la cronologia corrente nel file della cronologia\n" +" \t\te ne accoda le voci all'elenco della cronologia\n" +" \n" +" -p\tEffettua l'espansione della cronologia su ciascun ARG e visualizza " +"il\n" +" \t\trisultato senza memorizzarlo nell'elenco della cronologia\n" +" -s\tAccoda gli ARG all'elenco della cronologia come una voce singola\n" +" \n" +" Se viene fornito il NOMEFILE, viene usato come file della cronologia. " +"Altrimenti,\n" +" se presente, viene usato il valore di $HISTFILE, in alternativa ~/." +"bash_history.\n" +" \n" +" Se la variabile $HISTTIMEFORMAT è impostata e non è nulla, il suo valore " +"viene usato\n" +" come una stringa di formato per strftime(3) per stampare l'orario " +"associato a ciascuna\n" +" voce di cronologia visualizzata. Altrimenti non viene stampato alcun " +"orario.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia fornita una opzione non valida o " +"si riscontri un errore." + +#: builtins.c:879 +#, fuzzy +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Visualizza lo stato dei job.\n" +" \n" +" Elenca i job attivi. SPECJOB limita l'output a quei job.\n" +" Senza opzioni, è visualizzato lo stato di tutti i job attivi.\n" +" \n" +" Opzioni:\n" +" -l\tElenca gli ID dei processi in aggiunta alle normali informazioni\n" +" -n\tElenca solo i processi che hanno cambiato stato dall'ultima\n" +" \tnotifica\n" +" -p\tElenca solo l'ID dei processi\n" +" -r\tLimita l'output ai job in esecuzione\n" +" -s\tLimita l'output ai processi fermati\n" +" \n" +" Se viene fornito -x, il COMANDO è eseguito dopo che tutte le specifiche " +"dei job che\n" +" appaiono in ARGOMENTI sono state rimpiazzate con l'ID del processo " +"leader nel gruppo di\n" +" quel job.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia fornita una opzione non valida o " +"si riscontri un errore.\n" +" Se viene usato -x, restituisce lo stato di uscita del COMANDO." + +#: builtins.c:906 +#, fuzzy +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Rimuove job dalla shell corrente.\n" +" \n" +" Rimuove ciascun argomento SPECJOB dalla tabella dei job attivi. Senza " +"alcun\n" +" SPECJOB, la shell usa la sua nozione del job corrente.\n" +" \n" +" Opzioni:\n" +" -a\tRimuove tutti i job se non viene fornito uno SPECJOB\n" +" -h\tMarca ciascun SPECJOB in modo che non venga inviato un SIGHUP al " +"job se la\n" +" \tshell lo riceve\n" +" -r\tRimuove solo i job in esecuzione\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non venga fornita una opzione non valida " +"o uno SPECJOB." + +#: builtins.c:925 +#, fuzzy +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Invia un segnale a un job.\n" +" \n" +" Invia il segnale chiamato dallo SPECSEGN o dal NUMSEGN ai processi " +"identificati\n" +" dal PID o dallo SPECJOB. Se non è presente né lo SPECSEGN né il " +"NUMSEGN, viene\n" +" allora considerato SIGTERM.\n" +" \n" +" Opzioni:\n" +" -s segn\tSEGN è il nome di un segnale\n" +" -n segn\tSEGN è il numero di un segnale\n" +" -l\tElenca i nomi dei segnali; Se ci sono argomenti dopo \"-l\"\n" +" \tvengono valutati come numeri di segnale di cui elencare i nomi\n" +" \n" +" Kill è un comando interno di shell per due ragioni: permette di usare " +"gli ID\n" +" dei job invece degli ID dei processi e permette di uccidere quei " +"processi che\n" +" abbiano raggiunto un numero limite prefissato di processi creabili.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia fornita una opzione non valida o " +"si riscontri un errore." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Valuta espressioni aritmetiche.\n" +" \n" +" Valuta ciascun ARG come una espressione aritmetica. La valutazione è " +"effettuata con\n" +" interi a larghezza fissa senza alcun controllo per overflow, sebbene la " +"divisione\n" +" per 0 sia bloccata e contrassegnata come un errore. Il seguente elenco " +"di operatori\n" +" è raggruppato per livelli di operatore di uguale precedenza. I livelli " +"sono elencati\n" +" in ordine di precedenza decrescente.\n" +" \n" +" \tid++, id--\tIncremento e decremento successivo di variabile\n" +" \t++id, --id\tIncremento e decremento precedente di variabile\n" +" \t-, +\t\tMeno e più unari\n" +" \t!, ~\t\tNegazione logica e bit a bit\n" +" \t**\t\tEsponenziazione\n" +" \t*, /, %\t\tMoltiplicazione, divisione, resto\n" +" \t+, -\t\tAddizione, sottrazione\n" +" \t<<, >>\t\tScorrimento bit a bit sinistro e destro\n" +" \t<=, >=, <, >\tComparazione\n" +" \t==, !=\t\tUguaglianza, disuguaglianza\n" +" \t&\t\tAND bit a bit\n" +" \t^\t\tXOR bit a bit\n" +" \t|\t\tOR bit a bit\n" +" \t&&\t\tAND logico\n" +" \t||\t\tOR logico\n" +" \tespr ? espr : espr\n" +" \t\t\tOperatore condizionale\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tAssegnazione\n" +" \n" +" Le variabili di shell sono ammesse come operandi. Il nome della " +"variabile è\n" +" sostituito dal suo valore (forzato a un intero a larghezza fissa) " +"all'interno\n" +" di una espressione. Non è necessario che la variabile abbia il proprio " +"attributo\n" +" intero abilitato per essere usata in una espressione.\n" +" \n" +" Gli operatori sono valutati in ordine di precedenza. Le " +"sottoespressioni tra\n" +" parentesi sono valutate per prime e possono avere la precedenza sulle " +"regole\n" +" sopradescritte.\n" +" \n" +" Stato di uscita:\n" +" Se l'ultimo ARG viene valutato pari a 0 restituisce 1, altrimenti " +"restituisce 0." + +#: builtins.c:994 +#, fuzzy +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Legge una riga dallo standard input e la divide in campi.\n" +" \n" +" Legge una singola riga dallo standard input o, se viene fornita " +"l'opzione -u,\n" +" dal descrittore di file FD. La riga è divisa in campi corrispondenti a\n" +" parole dove la prima parola è assegnata al primo NOME, la seconda " +"parola\n" +" al secondo NOME e così via, con ciascuna parola rimanente assegnata al\n" +" corrispondente ultimo NOME. Sono riconosciuti come delimitatori di " +"parola\n" +" solo quelli presenti in $IFS.\n" +" \n" +" Se non viene fornito alcun NOME, la riga letta è memorizzata nella " +"variabile REPLY.\n" +" \n" +" Opzioni:\n" +" -a array\tAssegna le parole lette agli indici sequenziali della " +"variabile\n" +" \t\tdi ARRAY, iniziando da zero\n" +" -d delim\tContinua fino alla lettura del primo carattere di DELIM, " +"invece\n" +" \t\tdi un ritorno a capo \n" +" -e\t\tUsa Readline per ottenere la riga in una shell interattiva\n" +" -i testo\tUsa TESTO come testo iniziale per Readline\n" +" -n ncarat\tRitorna dopo la lettura di NCARAT caratteri invece di " +"attendere\n" +" \t\tun a capo, ma rispetta un delimitatore se vengono letti meno di\n" +" \t\tNCARAT caratteri prima del delimitatore stesso\n" +" -N ncarat\tRitorna solo dopo la lettura di NCARAT caratteri esatti, a " +"meno che non si\n" +" \t\triscontri un EOF o un time out di lettura, ignorando qualsiasi " +"delimitatore\n" +" -p stringa\tVisualizza la stringa PROMPT senza un a capo finale prima\n" +" \t\tdel tentativo di lettura\n" +" -r\t\tNon ammette backslash per fare l'escape dei caratteri\n" +" -s\t\tNon fa l'echo dell'input proveniente da un terminale\n" +" -t secondi\tVa in timeout e restituisce insuccesso se non viene letta " +"una\n" +" \t\triga di input completa entro i SECONDI forniti. Il valore della\n" +" \t\tvariabile TMOUT è il timeout predefinito. SECONDI può essere\n" +" \t\tuna frazione. Se SECONDI è pari a 0, la lettura restituisce " +"successo\n" +" \t\tsolo se l'input è disponibile sul descrittore di file specificato. " +"Lo\n" +" \t\tstato di uscita è maggiore di 128 se viene superato il timeout\n" +" -u fd\t\tLegge dal descrittore di file FD invece che dallo standard " +"input\n" +" \n" +" Stato di uscita:\n" +" Il codice restituito è zero a meno che non sia riscontrato un EOF, un " +"timeout in lettura\n" +" o venga fornito un descrittore di file non valido come argomento per -u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Ritorna da una funzione di shell.\n" +" \n" +" Causa l'uscita da una funzione o da uno script sorgente con il valore " +"di\n" +" ritorno specificato da N. Se N è omesso, lo stato di ritorno è quello\n" +" dell'ultimo comando eseguito all'interno della funzione o dello script.\n" +" \n" +" Stato di uscita:\n" +" Restituisce N, oppure insuccesso se la shell non sta eseguendo una " +"funzione o uno script." + +#: builtins.c:1054 +#, fuzzy +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Imposta o azzera i valori delle opzioni di shell e dei parametri " +"posizionali.\n" +" \n" +" Cambia il valore degli attributi di shell e dei parametri posizionali, " +"o\n" +" visualizza i nomi e i valori delle variabili di shell.\n" +" \n" +" Opzioni:\n" +" -a Marca le variabili che sono modificate o create per " +"l'esportazione.\n" +" -b Notifica immediatamente della terminazione di un job.\n" +" -e Esce immediatamente se un comando esce con uno stao diverso da " +"zero.\n" +" -f Disabilita la generazione dei nomi file (globbing).\n" +" -h Ricorda la posizione dei comandi quando vengono cercati.\n" +" -k Tutte le assegnazioni degli argomenti sono posizionate " +"nell'ambiente per un\n" +" comando, non solo quelle che precedono il nome del comando " +"stesso.\n" +" -m Abilita il controllo dei job.\n" +" -n Legge i comandi senza eseguirli.\n" +" -o nome-opzione\n" +" Imposta la variabile corrispondente al nome dell'opzione:\n" +" allexport Uguale a -a\n" +" braceexpand Uguale a -B\n" +" emacs Usa una interfaccia di modifica righe di stile " +"emacs\n" +" errexit Uguale a -e\n" +" errtrace Uguale a -E\n" +" functrace Uguale a -T\n" +" hashall Uguale a -h\n" +" histexpand Uguale a -H\n" +" history Abilita la cronologia comandi\n" +" ignoreeof Non esce dalla shell dopo aver raggiunto EOF\n" +" interactive-comments\n" +" Permette ai commenti di comparire nei comandi " +"interattivi\n" +" keyword Uguale a -k\n" +" monitor Uguale a -m\n" +" noclobber Uguale a -C\n" +" noexec Uguale a -n\n" +" noglob Uguale a -f\n" +" nolog Accettato al momento ma ignorato\n" +" notify Uguale a -b\n" +" nounset Uguale a -u\n" +" onecmd Uguale a -t\n" +" physical Uguale a -P\n" +" pipefail Il valore restituito da una pipeline è lo stato\n" +" dell'ultimo comando che esce con uno stato " +"diverso da zero,\n" +" oppure zero se nessun comando esce con uno stato " +"diverso da zero\n" +" posix Modifica il comportamento di bash dove " +"l'operazione\n" +" predefinita è diversa dallo standard Posix per " +"rispettare\n" +" lo standard stesso\n" +" privileged Uguale a -p\n" +" verbose Uguale a -v\n" +" vi Usa un'editor di riga stile vi\n" +" xtrace Uguale a -x\n" +" -p Abilitato ogni qualvolta gli id utente reali non corrispondono a " +"quelli effettivi.\n" +" Disabilita l'analisi del file $ENV e l'importazione delle funzioni " +"di\n" +" shell. Disabilitare questa opzione comporta l'impostazione degli\n" +" uid e gid effettivi a uid e gid reali.\n" +" -t Esce dopo la lettura e l'esecuzione di un comando.\n" +" -u Tratta le variabili non impostate come un errore durante la " +"sostituzione.\n" +" -v Stampa le righe di input della shell mentre vengono lette.\n" +" -x Stampa i comandi e i loro argomenti mentre vengono eseguiti.\n" +" -B La shell effettua l'espansione delle parentesi graffe\n" +" -C Se impostata, non permette la sovrascrittura dei file regolari " +"esistenti\n" +" da parte della redirezione dell'output.\n" +" -E Se impostata, la trap ERR è ereditata dalle funzioni di shell.\n" +" -H Abilita la sostituzione per la cronologia stile !. Questo flag è " +"abilitato\n" +" in modo predefinito quando la shell è interattiva.\n" +" -P Se impostata, non segue i link simbolici quando vengono eseguiti " +"dei comandi\n" +" come cd, il quale cambia la directory corrente.\n" +" -T Se impostata, la trap DEBUG è ereditata dalle funzioni di shell.\n" +" -- Assegna tutti gli argomenti rimasti ai parametri posizionali.\n" +" Se non sono rimasti argomenti, i parametri posizionali\n" +" vengono azzerati.\n" +" - Assegna tutti gli argomenti rimasti ai parametri posizionali.\n" +" Le opzioni -x e -v sono disabilitate.\n" +" \n" +" Usando + al posto di - questi flag vengono disabilitati. I\n" +" flag possono anche essere usati subito dopo l'invocazione della shell. " +"Il set corrente\n" +" dei flag può essere trovato in $-. I restanti n ARG sono parametri\n" +" posizionali e vengono assegnati, in ordine, a $1, $2, .. $n. Se non\n" +" vengono forniti ARG, vengono stampate tutte le variabili di shell.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non venga fornita una opzione non valida." + +#: builtins.c:1139 +#, fuzzy +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Azzera i valori e gli attributi delle variabili e delle funzioni di shell.\n" +" \n" +" Per ciascun NOME, rimuove la corrispondente variabile o funzione.\n" +" \n" +" Opzioni:\n" +" -f\tConsidera ciascun NOME come una funzione di shell\n" +" -v\tConsidera ciascun NOME come una variabile di shell\n" +" \n" +" Senza opzioni, unset prova prima ad azzerare una variabile e, in caso di " +"insuccesso,\n" +" prova ad azzerare una funzione.\n" +" \n" +" Alcune variabili non possono essere azzerate; vedere anche \"readonly" +"\".\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia fornita una opzione non valida o " +"NOME sia in sola lettura." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Imposta l'attributo di esportazione per le variabili di shell.\n" +" \n" +" Marca ciascun NOME per l'esportazione automatica all'ambiente dei " +"comandi\n" +" eseguiti successivi. Se è fornito un VALORE, lo assegna prima " +"dell'esportazione.\n" +" \n" +" Opzioni:\n" +" -f\tRimanda alle funzioni di shell\n" +" -n\tRimuove la proprietà di esportazione da ciascun NOME\n" +" -p\tVisualizza un elenco di tutte le variabili e funzioni esportate\n" +" \n" +" L'argomento \"--\" disabilita l'elaborazione di ulteriori opzioni.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia fornita una opzione non valida o " +"il NOME non sia valido." + +#: builtins.c:1180 +#, fuzzy +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Marca la variabili di shell come non modificabili.\n" +" \n" +" Marca ciascun NOME in sola lettura; i valori di questi NOMI non possono\n" +" essere modificati da un assegnamento successivo. Se viene fornito il\n" +" VALORE, lo assegna prima di marcarlo in sola lettura.\n" +" \n" +" Opzioni:\n" +" -a\tRimanda alle variabili degli array indicizzati\n" +" -A\tRimanda alle variabili degli array associativi\n" +" -f\tRimanda alle funzioni di shell\n" +" -p\tVisualizza un elenco di tutte le variabili e le funzioni in sola " +"lettura\n" +" \n" +" Un argomento pari a \"--\" disabilita ulteriori analisi delle opzioni.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non venga fornita una opzione non valida " +"o NOME non sia valido." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Sposta i parametri posizionali.\n" +" \n" +" Rinomina i parametri posizionali $N+1,$N+2 ... a $1,$2 ... Se N non\n" +" è fornito, viene assunto a 1.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che N non sia negativo o maggiore di $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Esegue comandi da un file nella shell corrente.\n" +" \n" +" Legge ed esegue comandi da NOMEFILE nella shell corrente. Le voci\n" +" in $PATH sono usate per trovare la directory contenente il NOMEFILE.\n" +" Se vengono forniti ARGOMENTI, essi diventano i parametri di posizione\n" +" quando viene eseguito NOMEFILE.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato dell'ultimo comando eseguito in NOMEFILE; " +"insuccesso se\n" +" il NOMEFILE non può essere letto." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Sospende l'esecuzione della shell.\n" +" \n" +" Sospende l'esecuzione di questa shell fino a che non riceve un segnale " +"SIGCONT.\n" +" A meno di forzature, le shell di login non possono essere sospese.\n" +" \n" +" Opzioni:\n" +" -f\tForza la sospensione, anche se in presenza di una shell di login\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia abilitato il controllo job o si " +"riscontri un errore." + +#: builtins.c:1261 +#, fuzzy +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Analizza espressioni condizionali.\n" +" \n" +" Esce con stato 0 (vero) o 1 (falso) in base all'analisi\n" +" dell'ESPR. Le espressioni possono essere unarie o binarie. Le\n" +" espressioni unarie sono spesso usate per esaminare lo stato di un file.\n" +" Esistono anche operatori di stringa e di comparazione numerica.\n" +" \n" +" Il comportamento del test dipende dal numero degli argomenti. Leggere\n" +" la pagina di manuale di bash per le specifiche complete.\n" +" \n" +" Operatori su file:\n" +" \n" +" -a FILE Vero se il file esiste.\n" +" -b FILE Vero se è un file speciale a blocchi.\n" +" -c FILE Vero se è un file speciale a caratteri.\n" +" -d FILE Vero se il file è una directory.\n" +" -e FILE Vero se il file esiste.\n" +" -f FILE Vero se il file esiste ed è un file regolare.\n" +" -g FILE Vero se il file è un set-group-id.\n" +" -h FILE Vero se il file è un link simbolico.\n" +" -L FILE Vero se il file è un link simbolico.\n" +" -k FILE Vero se il file ha il suo bit \"sticky\" impostato.\n" +" -p FILE Vero se il file è una pipe con nome.\n" +" -r FILE Vero se il file è leggibile dall' utente corrente.\n" +" -s FILE Vero se il file esiste e non è vuoto.\n" +" -S FILE Vero se il file è un socket.\n" +" -t FD Vero se il descrittore di file è aperto su un " +"terminale.\n" +" -u FILE Vero se il file è un set-user-id.\n" +" -w FILE Vero se il file è scrivibile dall'utente corrente.\n" +" -x FILE Vero se il file è eseguibile dall'utente corrente.\n" +" -O FILE Vero se l'utente corrente è il reale proprietario del " +"file.\n" +" -G FILE Vero se il gruppo dell'utente corrente è il reale " +"proprietario del file.\n" +" -N FILE Vero se il file è stato modificato dall'ultima volta " +"che è stato letto.\n" +" \n" +" FILE1 -nt FILE2 Vero se il file1 è più recente del file2 (in accordo " +"con la\n" +" data di modifica).\n" +" \n" +" FILE1 -ot FILE2 Vero se il file1 è più vecchio del file2.\n" +" \n" +" FILE1 -ef FILE2 Vero se il file1 è un link hardware al file2.\n" +" \n" +" Operatori di stringa:\n" +" \n" +" -z STRINGA Vero se la stringa e vuota.\n" +" \n" +" -n STRINGA\n" +" STRINGA Vero se la stringa non è vuota.\n" +" \n" +" STRINGA1 = STRINGA2\n" +" Vero se le stringhe sono uguali.\n" +" STRINGA1 != STRINGA2\n" +" Vero se le stringhe non sono uguali.\n" +" STRINGA1 < STRINGA2\n" +" Vero se la STRINGA1 viene ordinata lessicograficamente " +"prima della STRINGA2.\n" +" STRINGA1 > STRINGA2\n" +" Vero se la STRINGA1 viene ordinata lessicograficamente " +"dopo la STRINGA2.\n" +" \n" +" Altri operatori:\n" +" \n" +" -o OPZIONE Vero se l'OPZIONE di shell è abilitata.\n" +" -v VAR\t Vero se la variabile di shell VAR è impostata.\n" +" ! ESPR Vero se l'ESPR è falsa.\n" +" ESPR1 -a ESPR2 Vero se entrambe le espressioni espr1 E espr2 sono " +"vere.\n" +" ESPR1 -o ESPR2 Vero se sono vere le espressioni espr1 O espr2.\n" +" \n" +" arg1 OP arg2 Test aritmetici. OP è uno tra -eq, -ne,\n" +" -lt, -le, -gt oppure -ge.\n" +" \n" +" Gli operatori aritmetici binari restituiscono vero se ARG1 è uguale, non " +"uguale,\n" +" più piccolo di, più piccolo o uguale, più grande di o più grande o " +"uguale\n" +" ad ARG2.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo se l'ESPR viene valutata vera; insuccesso se l'ESPR " +"viene valutata\n" +" falsa o viene fornito un argomento non valido." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Valuta l'espressione condizionale.\n" +" \n" +" Questo è un sinonimo del comando interno \"test\", ma l'ultimo argomento " +"deve\n" +" essere un \"]\" letterale per corrispondere al \"[\" di apertura." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Visualizza le durate dei processi.\n" +" \n" +" Stampa i tempi utente e di sistema accumulati per la shell e per tutti " +"i\n" +" relativi processi figli.\n" +" \n" +" Stato di uscita:\n" +" Sempre successo." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Esegue il trap dei segnali e di altri eventi.\n" +" \n" +" Definisce e attiva i gestori da eseguire quando la shell riceve segnali\n" +" o altre condizioni.\n" +" \n" +" ARG è un comando da leggere ed eseguire quando la shell riceve il o i\n" +" segnali SPEC_SEGNALE. Se ARG o \"-\" non sono presenti (e viene " +"fornito\n" +" un singolo SPEC_SEGNALE), ciascun segnale specificato è riportato\n" +" al suo valore originario. Se ARG è pari a null, ogni SPEC_SEGNALE è\n" +" ignorato dalla shell e dai comandi che invoca.\n" +" \n" +" Se uno SPEC_SEGNALE è EXIT (0) ARG viene eseguito all'uscita dalla " +"shell. Se\n" +" lo SPEC_SEGNALE è DEBUG, ARG viene eseguito prima di ogni comando " +"semplice. Se\n" +" uno SPEC_SEGNALE è RETURN, ARG viene eseguito al termine di ogni " +"esecuzione\n" +" di una funzione di shell o di uno script avviato dai comandi interni . o " +"source.\n" +" Un SPEC_SEGNALE di ERR significa eseguire ARG ogni volta che un errore " +"di comando\n" +" causi l'uscita della shell quando è abilitata l'opzione -e.\n" +" \n" +" Se non vengono forniti argomenti, trap stampa l'elenco di comandi " +"associati\n" +" a ciascun segnale.\n" +" \n" +" Ozioni:\n" +" -l\tStampa un elenco di nomi di segnale e i loro corrispondenti " +"numeri\n" +" -p\tVisualizza i comandi trap associati a ciascun SPEC_SEGNALE\n" +" \n" +" Ciascun SPEC_SEGNALE è un nome di segnale in oppure un numero " +"di segnale.\n" +" I nomi di segnale sono case insensitive e il prefisso SIG è opzionale. " +"Per\n" +" inviare un segnale alla shell usare \"kill -signal $$\".\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che SPEC_SEGNALE non sia valido o si " +"fornisca una opzione non valida." + +#: builtins.c:1400 +#, fuzzy +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Visualizza informazioni sul tipo di comando.\n" +" \n" +" Per ciascun NOME, indica come sarebbe interpretato se fosse usato come\n" +" un nome di comando.\n" +" \n" +" Opzioni:\n" +" -a\tVisualizza tutte le posizioni contenenti un eseguibile chiamato " +"NOME,\n" +" \tincludendo alias, comandi interni e funzioni se e solo se\n" +" \tnon viene usata anche l'opzione \"-p\"\n" +" -f\tNon esegue la ricerca delle funzioni di shell\n" +" -P\tForza una ricerca del PERCORSO per ciascun NOME anche se è un " +"alias,\n" +" \tun comando interno o una funzione, e restituisce il nome del file su " +"disco\n" +" \tche sarebbe eseguito\n" +" -p\tRestituisce o il nome del file su disco che sarebbe eseguito,\n" +" \toppure niente se \"type -t NOME\" non restituisce \"file\".\n" +" -t\tVisualizza una singola parola che è una tra \"alias\", \"keyword" +"\",\n" +" \t\"function\", \"builtin\", \"file\" or \"\", se il NOME è " +"rispettivamente un alias,\n" +" \tuna parola riservata di shell, una funzione di shell, un comando " +"interno di shell,\n" +" \tun file su disco o non trovato\n" +" \n" +" Argomenti:\n" +" NOME\tIl nome del comando da interpretare.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo se tutti i NOMI vengono trovati; insuccesso in caso " +"contrario." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modifica i limiti delle risorse di shell.\n" +" \n" +" Fornisce il controllo sulle risorse disponibili per la shell e per i " +"processi\n" +" che crea, sui sistemi che permettono tale controllo.\n" +" \n" +" Opzioni:\n" +" -S\tUsa il limite di risorse \"leggero\"\n" +" -H\tUsa il limite di risorse \"pesante\"\n" +" -a\tRiporta tutti i limiti correnti\n" +" -b\tLa dimensione del buffer del socket\n" +" -c\tLa dimensione massima dei file di core creati\n" +" -d\tLa dimensione massima di un segmento di dati di processo\n" +" -e\tLa priorità massima di scheduling (\"nice\")\n" +" -f\tLa dimensione massima dei file scritti dalla shell e dai suoi " +"figli\n" +" -i\tIl numero massimo di segnali pendenti\n" +" -l\tLa dimensione massima di memoria che un processo può impegnare\n" +" -m\tIl numero massimo di set residenti\n" +" -n\tIl numero massimo di descrittori di file aperti\n" +" -p\tLa dimensione del buffer della pipe\n" +" -q\tIl numero massimo di byte nelle code messaggi POSIX\n" +" -r\tLa priorità massima di scheduling in tempo reale\n" +" -s\tLa dimensione massima dello stack\n" +" -t\tLa quantità massima di tempo CPU in secondi\n" +" -u\tIl numero massimo di processi utente\n" +" -v\tLa dimensione della memoria virtuale\n" +" -x\tIl numero massimo di lock dei file\n" +" \n" +" Se viene fornito un LIMITE, sarà il nuovo valore della risorsa " +"specificata;\n" +" I valori LIMITE speciali \"soft\", \"hard\" e \"unlimited\" " +"corrispondono\n" +" rispettivamente agli attuali limiti leggero, pesante e senza limite.\n" +" Altrimenti viene stampato il valore attuale della risorsa specificata. " +"Se\n" +" non viene fornita alcuna opzione, viene assunta -f.\n" +" \n" +" I valori sono ad incrementi di 1024-byte, ad eccezione di -t che è in " +"secondi,\n" +" -p che è ad incrementi di 512 byte e -u che è un numero di processi non\n" +" scalato.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non venga fornita una opzione non valida " +"o venga riscontrato un errore." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Visualizza o imposta la maschera del modo file.\n" +" \n" +" Imposta la maschera di creazione file dell'utente su MODO. Se MODO " +"viene omesso, stampa\n" +" il valore corrente della maschera.\n" +" \n" +" Se MODO inizia con una cifra, è interpretato con un numero ottale;\n" +" altrimenti come una stringa di modo simbolico come quella accettata da " +"chmod(1).\n" +" \n" +" Opzioni:\n" +" -p\tSe MODO viene omesso, mostra in una forma che possa essere riusata " +"come input\n" +" -S\tRende simbolico l'output; altrimenti viene mostrato un numero " +"ottale\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che MODO non sia valido o venga fornita una " +"opzione non valida." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Attende il completamento del job restituendo lo stato di uscita.\n" +" \n" +" Attende il processo identificato dall'ID, che può essere un ID di " +"processo o\n" +" una specifica di job, riportando il suo stato di termine. Se non è\n" +" fornito un ID, attende tutti i processi figlio correntemente attivi, " +"restituendo\n" +" zero come stato. Se l'ID è una specifica di job, attende tutti i " +"processi\n" +" presenti nella pipeline del job.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato dell'ID; insuccesso se l'ID non è valido o viene " +"fornita una\n" +" opzione non valida." + +#: builtins.c:1533 +#, fuzzy +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Attende il completamento del processo e restituisce lo stato di uscita.\n" +" \n" +" Attende per il processo specificato e riporta il suo stato di " +"terminazione. Se non\n" +" viene fornito il PID, l'attesa comprende tutti i processi figlio " +"correntemente attivi\n" +" e il codice restituito è zero. Il PID deve essere un ID di processo.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato dell'ID; insuccesso se l'ID non è valido o viene " +"fornita una opzione non\n" +" valida." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Esegue comandi per ciascun membro di un elenco.\n" +" \n" +" Il ciclo \"for\" esegue una sequenza di comandi per ciascun membro di " +"un\n" +" elenco di voci. Se \"in PAROLE ...;\" non è presente, allora viene " +"assunto\n" +" \"in \"$@\"\". Per ciascun elemento in PAROLE, NOME è impostato a " +"quell'elemento e\n" +" i COMANDI vengono eseguiti.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato dell'ultimo comando eseguito." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ciclo \"for\" aritmetico.\n" +" \n" +" Equivalente a\n" +" \t(( ESPR1 ))\n" +" \twhile (( ESPR2 )); do\n" +" \t\tCOMANDI\n" +" \t\t(( ESPR3 ))\n" +" \tdone\n" +" ESPR1, ESPR2 e ESPR3 sono espressioni aritmetiche. Se viene omessa " +"qualche\n" +" espressione, si comporta come se valesse 1.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato dell'ultimo comando eseguito." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Seleziona le parole da un elenco ed esegue i comandi.\n" +" \n" +" Le PAROLE vengono estese, generando un elenco di parole. L'insieme\n" +" di parole estese viene stampato sullo standard error, ognuna delle\n" +" quali preceduta da un numero. Se non è presente \"in PAROLE\", viene\n" +" assunto `in \"$@\". Viene poi visualizzato il prompt PS3 e viene letta\n" +" una riga dallo standard input. Se la riga è composta dal numero che\n" +" corrisponde a una delle parole visualizzate, NOME è impostato a quella\n" +" parola. Se la riga è vuota, Le PAROLE e il prompt vengono " +"rivisualizzati.\n" +" Se viene letto EOF, il comando termina. Se vengono letti altri valori\n" +" NOME viene impostato a null. La riga letta viene salvata nella " +"variabile\n" +" REPLY. I COMANDI vengono eseguiti dopo ogni selezione finché non viene\n" +" eseguito un comando di interruzione.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato di uscita dell'ultimo comando eseguito." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Riporta il tempo speso nell'esecuzione della pipeline.\n" +" \n" +" Esegue la PIPELINE e stampa, quando termina, un sommario del tempo " +"reale, tempo utente della CPU\n" +" e tempo di sistema della CPU dedicato all'esecuzione della PIPELINE.\n" +" \n" +" Opzioni:\n" +" -p\tStampa il riepilogo dei tempi nel formato portabile Posix format\n" +" \n" +" Il valore della variabile TIMEFORMAT è usato come formato di output.\n" +" \n" +" Stato di uscita:\n" +" Viene restituito lo stato della PIPELINE." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Esegue comandi basati sulla corrispondenza di modello.\n" +" \n" +" Esegue in modo selettivo COMANDI basati sulla PAROLA corrispondente al " +"MODELLO. Il\n" +" carattere \"|\" è usato per separare modelli multipli.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato dell'ultimo comando eseguito." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Esegue comandi basati su condizioni.\n" +" \n" +" Viene eseguito l'elenco degli \"if COMANDI\". Se lo stato di uscita è " +"zero\n" +" viene eseguito l'elenco \"then COMANDI\", altrimenti viene eseguito " +"l'elenco\n" +" degli \"elif COMANDI\" e, se il loro stato è zero, viene eseguito " +"l'elenco dei\n" +" \"then COMANDI\" corrispondente e viene completato l'\"if COMANDO\". " +"Altrimenti,\n" +" viene eseguito l'elenco \"else COMANDI\", se presente. Lo stato di " +"uscita\n" +" dell'intero costrutto corrisponde a quello dell'ultimo comando eseguito, " +"o\n" +" zero se nessuna condizione provata è vera.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato dell'ultimo comando eseguito." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Esegue i comandi finché un test ha successo.\n" +" \n" +" Espande ed esegue i COMANDI fino a quando il comando finale nei\n" +" COMANDI \"while\" ha uno stato di uscita pari a zero.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato dell'ultimo comando eseguito." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Esegue i comandi finché un test non ha successo.\n" +" \n" +" Espande ed esegue i COMANDI fino a quando il comando finale nei\n" +" COMANDI \"until\" ha uno stato di uscita diverso da zero.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato dell'ultimo comando eseguito." + +#: builtins.c:1671 +#, fuzzy +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Crea un coprocesso chiamato NOME.\n" +" \n" +" Esegue il COMANDO in modo asincrono, con lo standard output e lo " +"standard\n" +" input del comando connessi attraverso una pipe ai descrittori di file " +"assegnati\n" +" agli indici 0 e 1 di una variabile di array NOME nella shell in " +"esecuzione.\n" +" Il NOME predefinito è \"COPROC\".\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato di uscita del COMANDO." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Definisce una funzione di shell.\n" +" \n" +" Crea una funzione di shell chiamata NOME. Quando invocato come un " +"semplice comando,\n" +" NOME esegue i COMANDI nel contesto delle chiamate di shell. Quando " +"viene invocato NOME,\n" +" gli argomenti sono passati alla funzione come $1...$n e il nome della " +"funzione si trova\n" +" in $FUNCNAME.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che il NOME non sia in sola lettura." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Raggruppa i comandi come un'unità.\n" +" \n" +" Esegue un set di comandi in un gruppo. Questo è un modo per " +"reindirizzare un\n" +" intero set di comandi.\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato dell'ultimo comando eseguito." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Ripristina un job in primo piano.\n" +" \n" +" Equivale all'argomento SPEC_JOB per il comando \"fg\". Ripristina\n" +" un job fermato o sullo sfondo. SPEC_JOB può specificare un nome\n" +" job o un numero di job. SPEC_JOB seguito da \"&\" mette il job\n" +" sullo sfondo, come se la specifica del job fosse stata fornita\n" +" come argomento per \"bg\".\n" +" \n" +" Stato di uscita:\n" +" Restituisce lo stato del job ripristinato." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Valuta espressioni aritmetiche.\n" +" \n" +" L'ESPRESSIONE è valutata seguendo le regole di valutazione\n" +" aritmetica. Equivalente a \"let ESPRESSIONE\".\n" +" \n" +" Stato di uscita:\n" +" Restituisce 1 se ESPRESSIONE è valutata 0, altrimenti restituisce 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Esegue comandi condizionali.\n" +" \n" +" Resituisce uno stato di 0 o 1 a seconda della valutazione " +"dell'espressione\n" +" condizionale ESPRESSIONE. Le espressioni sono composte dalle stesse " +"basilari usate\n" +" dal comando interno \"test\", e possono essere combinate usando i " +"seguenti operatori:\n" +" \n" +" ( ESPRESSIONE )\tRestituisce il valore dell'ESPRESSIONE\n" +" ! ESPRESSIONE\t\tVero se l'ESPRESSIONE è falsa; falso in caso " +"contrario\n" +" ESPR1 && ESPR2\tVero se sia ESPR1 che ESPR2 sono vere; falso in caso " +"contrario\n" +" ESPR1 || ESPR2\tVero se una tra ESPR1 ed ESPR2 è vera; falso in caso " +"contrario\n" +" \n" +" Quando vengono usati gli operatori \"==\" e \"!=\", la stringa a destra " +"dell'operatore\n" +" è usata come un modello e ne viene effettuata la corrispondenza.\n" +" Quando viene usato l'operatore \"=~\", la stringa a destra " +"dell'operatore è valutata\n" +" corrispondente a un'espressione regolare.\n" +" \n" +" Gli operatori && e || non valutano ESPR2 se ESPR1 è sufficiente a\n" +" determinare il valore dell'espressione.\n" +" \n" +" Stato di uscita:\n" +" 0 o 1 a seconda del valore dell'ESPRESSIONE." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Nomi e usi comuni delle variabili di shell.\n" +" \n" +" BASH_VERSION\tInformazioni sulla versione di Bash.\n" +" CDPATH\tUn elenco di directory da cercare separate da un due punti\n" +" \tfornite come argomenti per \"cd\".\n" +" GLOBIGNORE\tUn elenco di modelli separato da un due punti che descrivono " +"i nomi\n" +" \t\tdi file che devono essere ignorati dall'espansione di percorso.\n" +" HISTFILE\tIl nome del file in cui è memorizzata la cronologia dei " +"comandi.\n" +" HISTFILESIZE\tIl numero massimo di righe che può contenere questo file.\n" +" HISTSIZE\tIl numero massimo di righe di cronologia a cui può accedere\n" +" \t\tuna shell in esecuzione.\n" +" HOME\tIl nome completo del percorso della propria directory di login.\n" +" HOSTNAME\tIl nome dell'host corrente.\n" +" HOSTTYPE\tIl tipo di CPU sulla quale è in esecuzione questa versione di " +"bash.\n" +" IGNOREEOF\tControlla il comportamento della shell quando riceve un " +"carattere EOF\n" +" \t\tcome unico input. Se impostato, il suo valore corrisponde al " +"numero\n" +" \t\tdi caratteri EOF che si possono trovare in una fila in una riga " +"vuota\n" +" \t\tprima che la shell esca (predefinito 10). Quando viene azzerato, " +"EOF\n" +" \t\tindica la fine dell'input.\n" +" MACHTYPE\tUna stringa che descrive l'attuale sistema dove è in " +"esecuzione bash.\n" +" MAILCHECK\tQuanto spesso, in secondi, Bash controlla la presenza di " +"nuova posta.\n" +" MAILPATH\tUn elenco di nomi di file separati da un due punti usati da " +"Bash per\n" +" \t\tcontrollare la presenza di nuova posta.\n" +" OSTYPE\tLa versione di Unix sulla quale è in esecuzione questa versione " +"di bash.\n" +" PATH\tUn elenco di directory, separato da un due punti, da analizzare " +"quando\n" +" \t\tsi cercano i comandi.\n" +" PROMPT_COMMAND\tUn comando da eseguire prima della stampa di ciascun " +"prompt\n" +" \t\tprimario.\n" +" PS1\t\tLa stringa del prompt primario.\n" +" PS2\t\tLa stringa del prompt secondario.\n" +" PWD\t\tIl nome completo del percorso della directory corrente.\n" +" SHELLOPTS\tUn elenco di opzioni di shell abilitate, separate da un due " +"punti.\n" +" TERM\tIl nome del tipo di terminale corrente.\n" +" TIMEFORMAT\tIl formato di output per le statistiche temporali " +"visualizzato dalla\n" +" \t\tparola riservata \"time\".\n" +" auto_resume\tNon null significa che una parola di un comando che compare " +"da\n" +" \t\taol in una riga viene prima cercata nell'elenco dei job correnti\n" +" \t\tfermati. Se trovato, questo job viene messo in primo piano.\n" +" \t\tUn valore pari a \"exact\" significa che la parola del comando deve\n" +" \t\tcorrispondere esattamente a un comando nell'elenco dei job fermati. " +"Un\n" +" \t\tvalore pari a \"substring\" significa che la parola del comando " +"deve\n" +" \t\tcorrispondere a una sottostringa del job. Qualsiasi altro valore " +"significa\n" +" \t\tche il comando deve essere un prefisso di un lavoro fermato.\n" +" histchars\tCaratteri che controllano l'espansione della cronologia e la " +"sostituzione\n" +" \t\trapida. Il primo carattere è quello di sostituzione della " +"cronologia,\n" +" \t\tsolitamente \"!\". Il secondo è il carattere di \"sostituzione " +"rapida\",\n" +" \t\tsolitamente \"^\". Il terzo è il carattere di \"commento della " +"cronologia\",\n" +" \t\tsolitamente \"#\".\n" +" HISTIGNORE\tUn elenco di modelli separato da un due punti usato per " +"decidere quale\n" +" \t\tcomando dovrebbe essere salvato nell'elenco della cronologia.\n" + +#: builtins.c:1821 +#, fuzzy +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Aggiunge directory allo stack.\n" +" \n" +" Aggiunge una directory in cima allo stack delle directory o ruota lo\n" +" stack stesso, mettendo come primo elemento la directory di lavoro\n" +" corrente. Senza argomenti scambia le prime due directory in cima.\n" +" \n" +" Opzioni:\n" +" -n\tEvita il normale cambio di directory quando vengono aggiunte\n" +" \tdirectory allo stack, così da manipolare solo lo stack stesso.\n" +" \n" +" Argomenti:\n" +" +N\tRuota lo stack in modo che l'N-sima directory (contando\n" +" \ta partire da sinistra dell'elenco mostrato da \"dirs\", iniziando da\n" +" \tzero) sia in cima.\n" +" \n" +" -N\tRuota lo stack in modo che l'N-sima directory (contando\n" +" \ta partire da destra dell'elenco mostrato da \"dirs\", iniziando da\n" +" \tzero) sia in cima.\n" +" \n" +" dir\tAggiunge DIR in cima allo stack delle directory, facendone la\n" +" \tdirectory di lavoro corrente.\n" +" \n" +" Il comando interno \"dirs\" mostra lo stack delle directory.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia fornito un argomento valido o " +"non abbia\n" +" successo il cambio di directory." + +#: builtins.c:1855 +#, fuzzy +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Rimuove directory dallo stack.\n" +" \n" +" Rimuove voci dallo stack delle directory. Senza argomenti, rimuove\n" +" la directory in cima allo stack e cambia alla nuova prima directory.\n" +" \n" +" Opzioni:\n" +" -n\tEvita il normale cambio di directory quando vengono rimosse\n" +" \tdirectory dallo stack, così da manipolare solo lo stack stesso.\n" +" \n" +" Argomenti:\n" +" +N\tRimuove l'N-sima voce contando a partire da sinistra dell'elenco\n" +" \tmostrato da \"dirs\", iniziando da zero. Per esempio: \"popd +0\"\n" +" \trimuove la prima directory, \"popd +1\" la seconda.\n" +" \n" +" -N\tRimuove l'N-sima voce contando a partire da destra dell'elenco\n" +" \tmostrato da \"dirs\", iniziando da zero. Per esempio: \"popd -0\"\n" +" \trimuove l'ultima directory, \"popd -1\" la penultima.\n" +" \n" +" Il comando interno \"dirs\" mostra lo stack delle directory.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non venga fornito un argomento non " +"valido o non\n" +" abbia successo il cambio di directory." + +#: builtins.c:1885 +#, fuzzy +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Visualizza lo stack delle directory.\n" +" \n" +" Visualizza l'elenco delle directory ricordate attualmente. Le directory\n" +" vengono inserite nell'elenco con il comando \"pushd\"; è possibile\n" +" andare a ritroso nell'elenco con il comando \"popd\".\n" +" \n" +" Opzioni:\n" +" -c\tPulisce lo stack delle directory eliminandone tutti gli elementi\n" +" -l\tNon stampa le directory con prefisso tilde relative alla propria\n" +" \tdirectory home\n" +" -p\tStampa lo stack delle directory una voce per riga\n" +" -v\tStampa lo stack delle directory una voce per riga usando come\n" +" \tprefisso la posizione nello stack\n" +" \n" +" Argomenti:\n" +" +N\tMostra l'N-sima voce contando a partire da sinistra dell'elenco\n" +" \tmostrato da dirs quando invocato senza opzioni, iniziando da zero.\n" +" \n" +" -N\tMostra l'N-sima voce contando a partire da destro dell'elenco\n" +" \tmostrato da dirs quando invocato senza opzioni, iniziando da zero.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia fornita un'opzione non valida o " +"si riscontri un errore." + +#: builtins.c:1916 +#, fuzzy +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Imposta le opzioni della shell.\n" +" \n" +" Cambia le impostazioni di ciascuna opzione di shell NOMEOPZ. Senza " +"argomenti\n" +" per le opzioni, elenca tutte le opzioni di shell indicando se sono o non " +"sono\n" +" impostate.\n" +" \n" +" Opzioni:\n" +" -o\tLimita i NOMEOPZ a quelli definiti per essere usati con \"set -o" +"\"\n" +" -p\tStampa ogni opzione di shell indicando il relativo stato\n" +" -q\tNon stampa l'output\n" +" -s\tAbilita (imposta) ciascun NOMEOPZ\n" +" -u\tDisabilita (elimina) ciascun NOMEOPZ\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo se NOMEOPZ è abilitato; insuccesso se viene " +"fornita\n" +" una opzione non valida o NOMEOPZ è disabilitato." + +#: builtins.c:1937 +#, fuzzy +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formatta e stampa gli ARGOMENTI come indicato dal FORMATO.\n" +" \n" +" Opzioni:\n" +" -v var\tAssegna l'output alla variabile di shell VAR invece\n" +" \t\tdi visualizzarlo sullo standard output\n" +" \n" +" FORMATO è una stringa di caratteri che contiene tre tipi di oggetto: " +"caratteri\n" +" semplici, che sono semplicemente copiati sullo standard output; sequenze " +"di escape\n" +" dei caratteri, che sono convertite e copiate sullo standard output;\n" +" specifiche di formato, ognuna delle quali provoca la stampa del " +"successivo argomento\n" +" consecutivo.\n" +" \n" +" In aggiunta alle specifiche di formato standard descritte in printf(1)\n" +" e printf(3), printf interpreta:\n" +" \n" +" %b\tEspande le sequenze di escape di backslash nell'argomento " +"corrispondente\n" +" %q\tQuota l'argomento in modo che possa essere riusato come input per " +"la shell\n" +" %(fmt)T Visualizza la stringa della data/ora risultante dall'uso di " +"FMT come stringa\n" +" di formato per strftime(3)\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non venga fornita una opzione non valida " +"o si riscontri\n" +" un errore di scrittura o assegnazione." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Specifica come gli argomenti debbano essere completati da Readline.\n" +" \n" +" Per ciascun NOME, specifica come gli argomenti debbano essere " +"completati. Se non\n" +" vengono fornite opzioni, le specifiche di completamento esistenti sono " +"stampate in modo\n" +" che possano essere riusate come input.\n" +" \n" +" Opzioni:\n" +" -p\tStampa le specifiche di completamento esistenti in un formato " +"riusabile\n" +" -r\tRimuove una specifica di completamento per ciascun NOME, oppure " +"tutte\n" +" \tse non viene fornito alcun NOME\n" +" -D\tApplica i completamenti e le azioni come predefiniti per i " +"comandi\n" +" \tsenza alcun completamento definito specifico\n" +" -E\tApplica i completamenti e le azioni ai comandi \"vuoti\" --\n" +" \tcompletamenti tentati su una riga vuota\n" +" \n" +" Quando viene tentato un completamento, le azioni sono applicate " +"nell'ordine\n" +" in cui sono sopra elencate le opzioni a lettera maiuscola.\n" +" L'opzione -D ha precedenza su -E.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia fornita una opzione non valida o " +"si riscontri un errore." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Visualizza i possibili completamenti a seconda delle opzioni.\n" +" \n" +" È pensata per essere usata all'interno di una funzione di shell per " +"generare\n" +" dei possibili completamenti. Se viene fornito l'argomento opzionale " +"PAROLA,\n" +" vengono generate le corrispondenze relative a PAROLA.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non sia fornita una opzione non valida o " +"si riscontri un errore." + +#: builtins.c:2016 +#, fuzzy +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Modifica o visualizza le opzioni di completamento.\n" +" \n" +" Modifica le opzioni di completamento per ciascun NOME, oppure, se non " +"viene fornito alcun NOME,\n" +" il completamento attualmente in esecuzione. Con nessuna OPZIONE " +"fornita, stampa\n" +" le opzioni di completamento per ciascun NOME o le specifiche di " +"completamento correnti.\n" +" \n" +" Opzioni:\n" +" \t-o opzione\tImposta l'OPZIONE di completamento per ciascun NOME\n" +" \t-D\t\tCambia le opzioni per il completamento di comando \"predefinito" +"\"\n" +" \t-E\t\tCambia le opzioni per il completamento di comando \"vuoto\"\n" +" \n" +" Usando \"+o\" al posto di \"-o\" disabilita l'opzione specificata.\n" +" \n" +" Argomenti:\n" +" \n" +" Ciascun NOME si riferisce a un comando per il quale deve essere stata " +"precedentemente\n" +" definita una specifica di completamento con il comando interno \"complete" +"\". Se non viene fornito\n" +" alcun NOME, compopt deve essere richiamato da una funzione che generi " +"attualmente\n" +" completamenti, e le opzioni per questo generatore di completamenti " +"attualmente\n" +" in esecuzione sono modificate\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non venga fornita una opzione non valida " +"o NOME non\n" +" abbia una specifica di completamento definita." + +#: builtins.c:2047 +#, fuzzy +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Legge righe dallo standard input in una variabile di array indicizzato.\n" +" \n" +" Legge righe dallo standard input nella variabile di ARRAY indicizzato, " +"oppure\n" +" dal descrittore di file FD se viene fornita l'opzione -u. La variabile " +"MAPFILE\n" +" è l'ARRAY predefinito.\n" +" \n" +" Opzioni:\n" +" -n numero\t\tCopia al massimo un NUMERO di righe. Se NUMERO è 0, " +"vengono copiate tutte.\n" +" -O origine\tInizia assegnando all'ARRAY all'indice ORIGINE. L'indice " +"predefinito è 0.\n" +" -s numero \tScarta le prime NUMERO righe lette.\n" +" -t\t\tRimuove un ritorno a capo finale da ciascuna riga letta.\n" +" -u fd\t\tLegge le righe da un descrittore di file FD invece che dallo " +"standard input.\n" +" -C callback\tEsamina CALLBACK ogni volta che vengono lette un numero " +"QUANTO di righe.\n" +" -c quantità\tSpecifica il numero di righe lette tra ciascuna chiamata " +"a CALLBACK.\n" +" \n" +" Argomenti:\n" +" ARRAY\t\tNome della variabile di array da usare per i dati dei file.\n" +" \n" +" Se viene fornito -C senza -c, il quanto predefinito è 5000. Quando\n" +" viene analizzata CALLBACK, viene fornito l'indice dell'elemento di\n" +" array successivo da assegnare e la riga da attribuire a quell'elemento\n" +" come argomenti aggiuntivi.\n" +" \n" +" Se non viene fornito con una origine esplicita, il file di mappa " +"azzererà l'ARRAY\n" +" prima della relativa assegnazione.\n" +" \n" +" Stato di uscita:\n" +" Restituisce successo a meno che non venga fornita una opzione non " +"valida, ARRAY sia\n" +" in sola lettura oppure non indicizzato." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Legge le righe da un file in una variabile di array.\n" +" \n" +" Sinonimo per \"mapfile\"." + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Restituisce il contesto della chiamata alla subroutine corrente.\n" +#~ " \n" +#~ " Senza ESPR, restituisce " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: processo %5ld (%s) in the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Numero di segnale sconosciuto" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licenza GPLv2+: GNU GPL versione 2 o successive \n" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "vero" + +#~ msgid "false" +#~ msgstr "falso" + +#~ msgid "times" +#~ msgstr "times" diff --git a/bash-5.1/po/ja.gmo b/bash-5.1/po/ja.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b1c1af95f54a2f86c0613b0b9f3fbf8efab314ff GIT binary patch literal 100113 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, 2000. +# Takeshi Hamasaki , 2011, 2013. +# Yasuaki Taniguchi , 2011, 2014, 2017. +msgid "" +msgstr "" +"Project-Id-Version: GNU bash 4.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2017-07-02 01:46+0100\n" +"Last-Translator: Yasuaki Taniguchi \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.0.2\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "誤ã£ãŸé…åˆ—ã®æ·»å­—" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: インデックスé…列ã‹ã‚‰é€£æƒ³é…列ã«å¤‰æ›ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: 無効ãªé€£æƒ³é…列ã®ã‚­ãƒ¼ã§ã™" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: é…åˆ—ã®æ·»å­—ã«éžæ•°å­—を設定ã§ãã¾ã›ã‚“" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: 連想é…列を設定ã™ã‚‹ã¨ãã«ã¯æ·»å­—ã‚’ã¤ã‘ãªã‘れã°ã„ã‘ã¾ã›ã‚“" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: %s を作æˆã§ãã¾ã›ã‚“" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: コマンドã®ã‚­ãƒ¼ãƒžãƒƒãƒ—ãŒã‚りã¾ã›ã‚“" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: 最åˆã®éžç©ºç™½é¡žæ–‡å­—㌠`\"' ã§ã¯ã‚りã¾ã›ã‚“" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "é–‰ã˜ã‚‹ `%c' ㌠%s ã«ã‚りã¾ã›ã‚“" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: 区切り文字コロン(:)ãŒã‚りã¾ã›ã‚“" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "`%s': 割り当ã¦è§£é™¤ã§ãã¾ã›ã‚“" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "中括弧展開: %s ã¸ãƒ¡ãƒ¢ãƒªã‚’割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“" + +#: braces.c:406 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" +"中括弧展開: failed to allocate memory for %d è¦ç´ ã®ãƒ¡ãƒ¢ãƒªã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾" +"ã—ãŸ" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "中括弧展開: `%s' ã¸ã®ãƒ¡ãƒ¢ãƒªå‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸ" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "`%s': 無効ãªã‚¨ã‚¤ãƒªã‚¢ã‚¹åã§ã™" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "è¡Œç·¨é›†ãŒæœ‰åйã«ãªã£ã¦ã„ã¾ã›ã‚“" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "`%s': 無効ãªã‚­ãƒ¼ãƒžãƒƒãƒ—åã§ã™" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: %s を読ã¿è¾¼ã‚ã¾ã›ã‚“" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': 䏿˜Žãªé–¢æ•°åã§ã™" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s ã¯ã©ã®ã‚­ãƒ¼ã«ã‚‚割り当ã¦ã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s ã¯æ¬¡ã‚’通ã—ã¦èµ·å‹•ã—ã¾ã™ " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': 割り当ã¦è§£é™¤ã§ãã¾ã›ã‚“" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "ループ回数" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "`for'ã€`while' ã¾ãŸã¯ `until' ループã§ã®ã¿æ„味ãŒã‚りã¾ã™" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"ç¾åœ¨ã®ã‚µãƒ–ルーãƒãƒ³å‘¼ã³å‡ºã—ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚’è¿”ã—ã¾ã™ã€‚\n" +" \n" +" EXPR ãŒç„¡ã„å ´åˆ \"$line $filename\" ã‚’è¿”ã—ã¾ã™ã€‚ EXPR ãŒã‚ã‚‹å ´åˆã€\n" +" \"$line $subroutine $filename\" ã‚’è¿”ã—ã¾ã™ã€‚ã“ã®è¿½åŠ ã®æƒ…å ±ã¯ã‚¹ã‚¿ãƒƒã‚¯ãƒˆ" +"レース\n" +" ã‚’æä¾›ã™ã‚‹æ™‚ã«åˆ©ç”¨ã—ã¾ã™ã€‚\n" +" \n" +" EXPR ã®å€¤ã¯ç¾åœ¨ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã«æˆ»ã‚‹ã¾ã§ã«ä½•回フレームãŒå‘¼ã³å‡ºã•れã¦ã„ã‚‹ã‹ã‚’\n" +" æ„味ã—ã¾ã™ã€‚最上ä½ã®ãƒ•レーム㯠0 ã§ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" シェルãŒé–¢æ•°ã‚’実行ã§ããªã„ã‹å¼ EXPR ãŒç„¡åйãªå ´åˆã‚’除ã 0 ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME ãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "引数ãŒå¤šã™ãŽã¾ã™" + +#: builtins/cd.def:342 +#, fuzzy +msgid "null directory" +msgstr "ä»–ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã‚りã¾ã›ã‚“" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD ãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "%d 行: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "警告: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: 使用法: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: オプションã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: æ•°å­—ã®å¼•æ•°ãŒå¿…è¦ã§ã™" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: 見ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: 無効ãªã‚ªãƒ—ションã§ã™" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: 無効ãªã‚ªãƒ—ションåã§ã™" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': 有効ãªè­˜åˆ¥å­ã§ã¯ã‚りã¾ã›ã‚“" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "無効ãªå…«é€²æ•°ã§ã™" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "無効ãªå六進数ã§ã™" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "ç„¡åŠ¹ãªæ•°å­—ã§ã™" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: 無効ãªã‚·ã‚°ãƒŠãƒ«æŒ‡å®šã§ã™" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s': pid ã¾ãŸã¯æœ‰åйãªã‚¸ãƒ§ãƒ–指定ã§ã¯ã‚りã¾ã›ã‚“" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: 読ã¿å–り専用ã®å¤‰æ•°ã§ã™" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s ãŒç¯„囲外ã§ã™" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "引数" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s ãŒç¯„囲外ã§ã™" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: ãã®ã‚ˆã†ãªã‚¸ãƒ§ãƒ–ã¯ã‚りã¾ã›ã‚“" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: ジョブ制御ãŒç„¡åйã«ãªã£ã¦ã„ã¾ã™" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "ジョブ制御ãŒç„¡åйã«ãªã£ã¦ã„ã¾ã™" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: 制é™ã•れã¦ã„ã¾ã™" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "制é™ã•れã¦ã„ã¾ã™" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: シェルã®ãƒ“ルトイン関数ã§ã¯ã‚りã¾ã›ã‚“" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "ターミナル属性ã®è¨­å®šæ™‚ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "ターミナル属性ã®å–得時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: カレントディレクトリã®å–得時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: 曖昧ãªã‚¸ãƒ§ãƒ–指定ã§ã™" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ãƒ˜ãƒ«ãƒ—ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: 消去ã§ãã¾ã›ã‚“: %s ã¯èª­ã¿å–り専用ã§ã™" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: 消去ã§ãã¾ã›ã‚“" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: 無効ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³åã§ã™" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: 補完指定ãŒã‚りã¾ã›ã‚“" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "警告: -F ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¯æœŸå¾…通りã«å‹•作ã—ãªã„ã‹ã‚‚ã—れã¾ã›ã‚“" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "警告: -C ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¯æœŸå¾…通りã«å‹•作ã—ãªã„ã‹ã‚‚ã—れã¾ã›ã‚“" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "補完機能ã¯ç¾åœ¨å®Ÿè¡Œã•れã¦ã„ã¾ã›ã‚“" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "関数ã®ä¸­ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: å‚照変数ã¯é…列ã§ã‚ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: 自身をå‚ç…§ã™ã‚‹åå‰å‚照変数ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: 循環åå‰å‚ç…§ã§ã™" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "`%s': åå‰å‚ç…§ã¨ã—ã¦ç„¡åйãªå¤‰æ•°ã§ã™" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "é–¢æ•°ä½œæˆæ™‚ã« `-f' を使用ã§ãã¾ã›ã‚“" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: 読ã¿å–り専用関数ã§ã™" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: ã“ã®æ–¹æ³•ã§é…列変数を消去ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: 連想é…列ã‹ã‚‰ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹é…列ã«å¤‰æ›ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "動的ロードã¯åˆ©ç”¨ã§ãã¾ã›ã‚“" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "共有オブジェクト %s ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“ : %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "%s ãŒå…±æœ‰ã‚ªãƒ–ジェクト %s ã«å­˜åœ¨ã—ã¾ã›ã‚“: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: å‹•çš„ã«ãƒ­ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã›ã‚“" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "関数 %s ã®ãƒ­ãƒ¼ãƒ‰ãŒå¤±æ•—ã‚’è¿”ã—ã¾ã—ãŸ(%d): ロードã•れã¾ã›ã‚“ã§ã—ãŸ" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: å‹•çš„ã«ãƒ­ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã›ã‚“" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: 削除ã§ãã¾ã›ã‚“: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: ディレクトリã§ã™" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: 通常ファイルã§ã¯ã‚りã¾ã›ã‚“" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: ファイルãŒå¤§ãã™ãŽã¾ã™" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: ãƒã‚¤ãƒŠãƒªãƒ•ァイルを実行ã§ãã¾ã›ã‚“" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: 実行ã§ãã¾ã›ã‚“: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "ログアウト\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "ログインシェルã§ã¯ã‚りã¾ã›ã‚“: `exit' を使用ã—ã¦ãã ã•ã„" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "åœæ­¢ã—ã¦ã„るジョブãŒã‚りã¾ã™ã€‚\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "動作中ã®ã‚¸ãƒ§ãƒ–ãŒã‚りã¾ã™ã€‚\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "ヒストリ指定" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: 一時ファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "カレント" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "ジョブ %d ãŒã‚¸ãƒ§ãƒ–制御ãªã—ã§é–‹å§‹ã•れã¾ã—ãŸ" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: 䏿­£ãªã‚ªãƒ—ションã§ã™ -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: オプションã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™ -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "ãƒãƒƒã‚·ãƒ¥ãŒç„¡åйã«ãªã£ã¦ã„ã¾ã™" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルãŒç©ºã§ã™\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "hits\tcommand\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "キーワードã«ä¸€è‡´ã—ãŸã‚·ã‚§ãƒ«ã‚³ãƒžãƒ³ãƒ‰ `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"`%s' ã«ä¸€è‡´ã™ã‚‹ãƒ˜ãƒ«ãƒ—é …ç›®ãŒã‚りã¾ã›ã‚“。`help help'ã€`man -k %s' ã¾ãŸã¯ `info " +"%s' を試ã—ã¦ãã ã•ã„" + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"ã“れらã®ã‚·ã‚§ãƒ«ã‚³ãƒžãƒ³ãƒ‰ã¯å†…部ã§å®šç¾©ã•れã¦ã„ã¾ã™ã€‚`help' ã¨å…¥åŠ›ã—ã¦ä¸€è¦§ã‚’å‚ç…§ã—" +"ã¦ãã ã•ã„。\n" +"`help åå‰' ã¨å…¥åŠ›ã™ã‚‹ã¨ `åå‰' ã¨ã„ã†é–¢æ•°ã®ã‚ˆã‚Šè©³ã—ã„説明ãŒå¾—られã¾ã™ã€‚\n" +"'info bash' を使用ã™ã‚‹ã¨ã‚·ã‚§ãƒ«å…¨èˆ¬ã®ã‚ˆã‚Šè©³ã—ã„説明ãŒå¾—られã¾ã™ã€‚\n" +"`man -k' ã¾ãŸã¯ info を使用ã™ã‚‹ã¨ä¸€è¦§ã«ãªã„コマンドã®ã‚ˆã‚Šè©³ã—ã„説明ãŒå¾—られã¾" +"ã™ã€‚\n" +"\n" +"åå‰ã®å¾Œã«ã‚¢ã‚¹ã‚¿ãƒªã‚¹ã‚¯ (*) ãŒã‚ã‚‹å ´åˆã¯ãã®ã‚³ãƒžãƒ³ãƒ‰ãŒç„¡åйã«ãªã£ã¦ã„ã‚‹ã“ã¨ã‚’æ„" +"味ã—ã¾ã™ã€‚\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "-anrw ã‚’2ã¤ä»¥ä¸Šä¸€ç·’ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "ヒストリä½ç½®" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: 無効ãªã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã§ã™" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: ヒストリã®å±•é–‹ã«å¤±æ•—ã—ã¾ã—ãŸ" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib ãŒå¤±æ•—ã—ã¾ã—ãŸ" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "`-x' ã¯ä»–ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’åŒæ™‚ã«ä½¿ç”¨ã§ãã¾ã›ã‚“" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: 引数ã¯ãƒ—ロセスIDã‹ã‚¸ãƒ§ãƒ–IDã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "䏿˜Žãªã‚¨ãƒ©ãƒ¼ã§ã™" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "å¼ãŒäºˆæœŸã•れã¾ã™" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: インデックスé…列ã§ã¯ã‚りã¾ã›ã‚“" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: 無効ãªãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­æŒ‡å®šã§ã™" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: 無効ãªãƒ•ァイル記述å­: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: 無効ãªè¡Œæ•°ã§ã™" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: 無効ãªé…列ã®åŽŸç‚¹ã§ã™" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: コールãƒãƒƒã‚¯ã® quantum ãŒç„¡åйã§ã™" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "空ã®é…列変数åã§ã™" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "é…列変数ã®ã‚µãƒãƒ¼ãƒˆãŒå¿…è¦ã§ã™" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': æ›¸å¼æŒ‡å®šæ–‡å­—ãŒã‚りã¾ã›ã‚“" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "`%c': ç„¡åŠ¹ãªæ™‚é–“æ›¸å¼æŒ‡å®šã§ã™" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "`%c': ç„¡åŠ¹ãªæ›¸å¼æŒ‡å®šæ–‡å­—ã§ã™" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "警告: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "書å¼è§£æžå•題ã§ã™: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "\\x 用ã®å六進数字ãŒã‚りã¾ã›ã‚“" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "\\%c 用ã®ãƒ¦ãƒ‹ã‚³ãƒ¼ãƒ‰æ•°å€¤ãŒã‚りã¾ã›ã‚“" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "ä»–ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã‚りã¾ã›ã‚“" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: 無効ãªå¼•æ•°ã§ã™" + +#: builtins/pushd.def:480 +msgid "" +msgstr "<カレントディレクトリãŒã‚りã¾ã›ã‚“>" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "ディレクトリスタックãŒç©ºã§ã™" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "ディレクトリスタックã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"ç¾åœ¨è¨˜æ†¶ã•れã¦ã„るディレクトリスタックを表示ã—ã¾ã™ã€‚ディレクトリ㯠`pushd'\n" +" コマンドã«ã‚ˆã£ã¦ã‚¹ã‚¿ãƒƒã‚¯ã®ä¸€ç•ªä¸Šã«ä¿å­˜ã•れã¾ã™ã€‚`popd'コマンドã«ã‚ˆã£ã¦\n" +" スタックã‹ã‚‰å–り戻ã™ã“ã¨ãŒã§ãã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -c\tディレクトリスタックã‹ã‚‰ã™ã¹ã¦ã®è¦ç´ ã‚’å–り除ã空ã«ã™ã‚‹\n" +" -l\tホームディレクトリã‹ã‚‰ã®ç›¸å¯¾ãƒ‘スを ~ を利用ã—ãŸå½¢å¼ã§\n" +" \t表示ã—ãªã„\n" +" -p\tディレクトリスタックã®è¦ç´ ã‚’1行毎ã«è¡¨ç¤ºã™ã‚‹\n" +" -v\tディレクトリスタックã®è¦ç´ ã‚’1行ã”ã¨ã«ç•ªå·ã‚’ã¤ã‘ã¦\n" +" \t表示ã™ã‚‹\n" +" \n" +" 引数:\n" +" +N\tオプションãªã—ã§èµ·å‹•ã•れãŸå ´åˆã«ãƒªã‚¹ãƒˆã®å…ˆé ­ã‹ã‚‰æ•°ãˆã¦\n" +" \tN番目ã®è¦ç´ ã‚’表示ã—ã¾ã™ã€‚開始番å·ã¯0ã§ã™ã€‚\n" +" \n" +" -N\tオプションãªã—ã§èµ·å‹•ã•れãŸå ´åˆã«ãƒªã‚¹ãƒˆã®æœ«å°¾ã‹ã‚‰æ•°ãˆã¦\n" +"\tN番目ã®è¦ç´ ã‚’表示ã—ã¾ã™ã€‚開始番å·ã¯0ã§ã™ã€‚" + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"ディレクトリスタックã®å…ˆé ­ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’追加ã—ã¾ã™ã€‚ã¾ãŸã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª\n" +" スタックを回転ã—ã¾ã™ã€‚æ–°ã—ã„スタックã®å…ˆé ­ãŒã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãª\n" +" りã¾ã™ã€‚引数ãªã—ã§èµ·å‹•ã•れãŸå ´åˆã€å…ˆé ­ã®2ã¤ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’交æ›ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -n\tスタックã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’追加ã—ãŸæ™‚ã«é€šå¸¸ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¤‰æ›´\n" +" \tを抑止ã—ã¾ã™ã€‚よã£ã¦ã€ã‚¹ã‚¿ãƒƒã‚¯ã®ã¿æ“作ã•れã¾ã™ã€‚\n" +" \n" +" 引数:\n" +" +N\t先頭ãŒN番目ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãªã‚‹ã‚ˆã†ã«å›žè»¢ã—ã¾ã™(`dirs'ã§\n" +" \t表示ã•れるスタックã®å…ˆé ­ã‹ã‚‰æ•°ãˆãŸæ•°ã§ã™ã€‚開始番å·ã¯0ã§ã™)。\n" +" \n" +" -N\t先頭ãŒN番目ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãªã‚‹ã‚ˆã†ã«å›žè»¢ã—ã¾ã™(`dirs'ã§\n" +" \t表示ã•ã‚Œã‚‹ã‚¹ã‚¿ãƒƒã‚¯ã®æœ«å°¾ã‹ã‚‰æ•°ãˆãŸæ•°ã§ã™ã€‚開始番å·ã¯0ã§ã™)。\n" +" \n" +" ディレクトリ\tディレクトリをスタックã®å…ˆé ­ã«åŠ ãˆã€ãã®ãƒ‡ã‚£ãƒ¬ã‚¯\n" +" \tトリを新ã—ã„カレントディレクトリã«ã—ã¾ã™ã€‚\n" +" \n" +" `dirs' ビルトインコマンドã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚¹ã‚¿ãƒƒã‚¯ã‚’表示ã—ã¾ã™ã€‚" + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"ディレクトリスタックã‹ã‚‰è¦ç´ ã‚’削除ã—ã¾ã™ã€‚引数ãŒç„¡ã„å ´åˆã‚¹ã‚¿ãƒƒã‚¯ã®å…ˆé ­ã‹ã‚‰\n" +" 削除ã—ã€æ–°ã—ã„スタックã®å…ˆé ­ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ç§»å‹•ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -n\tスタックã‹ã‚‰ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’削除ã—ãŸæ™‚ã«é€šå¸¸ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¤‰æ›´\n" +" \tを抑止ã—ã¾ã™ã€‚よã£ã¦ã€ã‚¹ã‚¿ãƒƒã‚¯ã®ã¿æ“作ã•れã¾ã™ã€‚\n" +" \n" +" 引数:\n" +" +N\tディレクトリスタック(`dirs' ã§è¡¨ç¤ºã•れる)ã®å…ˆé ­ã‹ã‚‰æ•°ãˆã¦\n" +" \t N 番目ã®è¦ç´ ã‚’削除ã—ã¾ã™ã€‚開始番å·ã¯ 0 ã§ã™ã€‚例: `popd +0'\n" +" \tã¯æœ€åˆã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’削除ã—ã¾ã™ã€‚`popd +1' ã¯2番目ã§ã™ã€‚\n" +" \n" +" -N\tディレクトリスタック(`dirs' ã§è¡¨ç¤ºã•れる)ã®æœ€å¾Œã‹ã‚‰æ•°ãˆã¦\n" +" \t N 番目ã®è¦ç´ ã‚’削除ã—ã¾ã™ã€‚開始番å·ã¯ 0 ã§ã™ã€‚例: `popd +0'\n" +" \tã¯æœ€å¾Œã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’削除ã—ã¾ã™ã€‚`popd +1' ã¯æœ€å¾Œã‹ã‚‰2番目ã§ã™ã€‚\n" +" \n" +" `dirs' ビルトインコマンドã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚¹ã‚¿ãƒƒã‚¯ã‚’表示ã—ã¾ã™ã€‚" + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: 無効ãªã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆæŒ‡å®šã§ã™" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "`return' ã¯é–¢æ•°ã¾ãŸã¯ source ã•れãŸã‚¹ã‚¯ãƒªãƒ—ト内ã®ã¿ã§åˆ©ç”¨ã§ãã¾ã™" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "変数ã¨é–¢æ•°ã‚’åŒæ™‚ã«æ¶ˆåŽ»ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: é…列変数ã§ã¯ã‚りã¾ã›ã‚“" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: 関数ã§ã¯ã‚りã¾ã›ã‚“" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: export ã§ãã¾ã›ã‚“" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "シフト回数" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "ã‚·ã‚§ãƒ«ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’åŒæ™‚ã«æœ‰åйã‹ã¤ç„¡åйã«ã§ãã¾ã›ã‚“" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: 無効ãªã‚·ã‚§ãƒ«ã‚ªãƒ—ションåã§ã™" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "ファイルåãŒå¼•æ•°ã¨ã—ã¦å¿…è¦ã§ã™" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "中断ã§ãã¾ã›ã‚“" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "ログインシェルを中断ã§ãã¾ã›ã‚“" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s 㯠`%s' ã®ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã§ã™\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s ã¯ã‚·ã‚§ãƒ«ã®äºˆç´„語ã§ã™\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s ã¯é–¢æ•°ã§ã™\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s ã¯ç‰¹æ®Šã‚·ã‚§ãƒ«çµ„ã¿è¾¼ã¿é–¢æ•°ã§ã™\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s ã¯ã‚·ã‚§ãƒ«çµ„ã¿è¾¼ã¿é–¢æ•°ã§ã™\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s 㯠%s ã§ã™\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s ã¯ãƒãƒƒã‚·ãƒ¥ã•れã¦ã„ã¾ã™ (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: limit ã®ç„¡åйãªå¼•æ•°ã§ã™" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': 誤ã£ãŸã‚³ãƒžãƒ³ãƒ‰ã§ã™" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: limit ã‚’å–å¾—ã§ãã¾ã›ã‚“: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "limit" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: limit を変更ã§ãã¾ã›ã‚“ : %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "八進数" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': 無効ãªã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒ¢ãƒ¼ãƒ‰æ¼”ç®—å­ã§ã™" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': 無効ãªã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒ¢ãƒ¼ãƒ‰æ–‡å­—ã§ã™" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " 行 " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "最後ã®ã‚³ãƒžãƒ³ãƒ‰: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "中止ã—ã¦ã„ã¾ã™..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "情報: " + +#: error.c:462 +msgid "unknown command error" +msgstr "䏿˜Žãªã‚³ãƒžãƒ³ãƒ‰ã‚¨ãƒ©ãƒ¼ã§ã™" + +#: error.c:463 +msgid "bad command type" +msgstr "誤ã£ãŸã‚³ãƒžãƒ³ãƒ‰ã‚¿ã‚¤ãƒ—ã§ã™" + +#: error.c:464 +msgid "bad connector" +msgstr "誤ã£ãŸæŽ¥ç¶šã§ã™" + +#: error.c:465 +msgid "bad jump" +msgstr "誤ã£ãŸã‚¸ãƒ£ãƒ³ãƒ—ã§ã™" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: 未割り当ã¦ã®å¤‰æ•°ã§ã™" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\a入力待ã¡ãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸ: 自動ログアウト\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "/dev/null ã‹ã‚‰æ¨™æº–入力ã«å¯¾ã—ã¦ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': ç„¡åŠ¹ãªæ›¸å¼æ–‡å­—ã§ã™" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "パイプエラー" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: eval ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’è¶…ãˆã¦ã„ã¾ã™ (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: source ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’è¶…ãˆã¦ã„ã¾ã™ (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: 関数ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’è¶…ãˆã¦ã„ã¾ã™ (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: 制é™ã•れã¦ã„ã¾ã™: `/' をコマンドåã®ä¸­ã«æŒ‡å®šã§ãã¾ã›ã‚“" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: 誤ã£ãŸã‚¤ãƒ³ã‚¿ãƒ—リタã§ã™" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: ãƒã‚¤ãƒŠãƒªãƒ•ァイルを実行ã§ãã¾ã›ã‚“: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "`%s': 特殊シェル組ã¿è¾¼ã¿é–¢æ•°ã§ã™" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "fd %d ã‚’ fd %d ã«è¤‡è£½ã§ãã¾ã›ã‚“" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "å¼ã®å†å¸°å¯èƒ½ãƒ¬ãƒ™ãƒ«ã‚’è¶Šãˆã¾ã—ãŸ" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "å†å¸°ã‚¹ã‚¿ãƒƒã‚¯ãŒã‚¢ãƒ³ãƒ€ãƒ¼ãƒ•ローã—ã¾ã—ãŸ" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "å¼ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã™" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "éžå¤‰æ•°ã«å‰²ã‚Šå½“ã¦ã‚’行ãŠã†ã¨ã—ã¦ã¾ã™" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "å¼ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã™" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "0 ã«ã‚ˆã‚‹é™¤ç®—ã§ã™" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "ãƒã‚°: 誤ã£ãŸå¼ã®ãƒˆãƒ¼ã‚¯ãƒ³ã§ã™" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "æ¡ä»¶å¼ã«ã¯ `:' ãŒäºˆæœŸã•れã¾ã™" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "0よりå°ã•ã„æŒ‡æ•°éƒ¨ã§ã™" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "識別å­ã¯å‰ç½®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã¾ãŸã¯å‰ç½®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆãŒäºˆæœŸã•れã¾ã™" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "`)' ãŒã‚りã¾ã›ã‚“" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "構文エラー: オペランドãŒäºˆæœŸã•れã¾ã™" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "構文エラー: 無効ãªè¨ˆç®—演算å­ã§ã™" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (エラーã®ã‚るトークン㯠\"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "無効ãªåŸºåº•ã®æ•°å€¤ã§ã™" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: 無効ãªè¡Œæ•°ã§ã™" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "基底ã®å€¤ãŒå¤§ãã™ãŽã¾ã™" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: å¼ã®ã‚¨ãƒ©ãƒ¼\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: 親ディレクトリã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "ファイル記述å­(fd) %d ã‚’ç„¡é…延モードã«å†è¨­å®šã§ãã¾ã›ã‚“" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "æ–°è¦ãƒ•ァイル記述å­(fd) %d ã‚’ bash ã®å…¥åŠ›ã¨ã—ã¦å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã›ã‚“" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: æ–°è¦ fd %d ã®ãƒãƒƒãƒ•ã‚¡ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "実行中ã®ã‚¸ãƒ§ãƒ– %2$d ã§ fork ã—㟠pid %1$d ãŒå‡ºç¾ã—ã¾ã—ãŸ" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "プロセスグループ %2$ld ã®ã‚¸ãƒ§ãƒ– %1$d を削除ã—ã¦ã„ã¾ã™" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) ã¯ã¾ã å­˜åœ¨ã—ã¦ã„ã‚‹ã¨ãƒžãƒ¼ã‚¯ã•れã¦ã„ã¾ã™" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: ãã®ã‚ˆã†ãª pid ã¯å­˜åœ¨ã—ã¾ã›ã‚“" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "シグナル %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "終了" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "åœæ­¢" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "åœæ­¢ (%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "実行中" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "終了(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "終了 %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "䏿˜Žãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(コアダンプ) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "å­ãƒ—ロセス setpgid (%ld ã‹ã‚‰ %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld ã¯ã“ã®ã‚·ã‚§ãƒ«ã®å­ãƒ—ロセスã§ã¯ã‚りã¾ã›ã‚“" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: プロセス %ld ã®è¨˜éŒ²ãŒã‚りã¾ã›ã‚“" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: ジョブ %d ã¯åœæ­¢ã—ã¦ã„ã¾ã™" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: ãã®ã‚ˆã†ãªã‚¸ãƒ§ãƒ–ã¯ã‚りã¾ã›ã‚“" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: ジョブã¯çµ‚了ã—ã¾ã—ãŸ" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: ジョブ %d ã¯ã™ã§ã«ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§å‹•作ã—ã¦ã„ã¾ã™" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: ä¸å®šã®ãƒ–ロックをé¿ã‘ã‚‹ãŸã‚ã« WNOHANG をオンã«ã—ã¾ã—ãŸã€‚" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: %d 行: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (コアダンプ)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd now: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp ãŒå¤±æ•—ã—ã¾ã—ãŸ" + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "端末プロセスグループを設定ã§ãã¾ã›ã‚“ (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "ã“ã®ã‚·ã‚§ãƒ«ã§ã¯ã‚¸ãƒ§ãƒ–制御ãŒç„¡åйã«ãªã£ã¦ã„ã¾ã™" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: 失敗ã—ãŸã‚¢ã‚µãƒ¼ã‚·ãƒ§ãƒ³: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: アサーション失敗\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "䏿˜Ž" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: free ブロックリストãŒå£Šã‚Œã¦ã„ã¾ã™" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: 既㫠free ã•れãŸãƒ–ロックを引数ã¨ã—ã¦å‘¼ã³å‡ºã•れã¾ã—ãŸ" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: 未割当ã®ãƒ–ロックを引数ã¨ã—ã¦å‘¼ã³å‡ºã•れã¾ã—ãŸ" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: アンダーフローを検出ã—ã¾ã—ãŸã€‚ mh_nbytes ãŒç¯„囲外ã§ã™" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: アンダーフローを検出ã—ã¾ã—ãŸã€‚ mh_nbytes ãŒç¯„囲外ã§ã™" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: é–‹å§‹ã¨çµ‚了ã®å¡Šã®å¤§ãã•ãŒç•°ãªã£ã¦ã„ã¾ã™" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: 未割当ã®ãƒ–ロックを引数ã¨ã—ã¦å‘¼ã³å‡ºã•れã¾ã—ãŸ" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: アンダーフローを検出ã—ã¾ã—ãŸã€‚ mh_nbytes ãŒç¯„囲外ã§ã™" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: アンダーフローを検出ã—ã¾ã—ãŸã€‚ mh_nbytes ãŒç¯„囲外ã§ã™" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: é–‹å§‹ã¨çµ‚了ã®å¡Šã®å¤§ãã•ãŒç•°ãªã£ã¦ã„ã¾ã™" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: FIND_ALLOC ã§å‰²ã‚Šå½“ã¦ãƒ†ãƒ¼ãƒ–ルãŒã„ã£ã±ã„ã§ã™\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p æ—¢ã«ãƒ†ãƒ¼ãƒ–ル上ã§ã¯å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p テーブル上ã§ã¯æ—¢ã«è§£æ”¾ã•れã¦ã„ã¾ã™\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "無効ãªåŸºåº•" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: 䏿˜Žãªãƒ›ã‚¹ãƒˆã§ã™" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: 無効ãªã‚µãƒ¼ãƒ“スã§ã™" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ‘ス指定ã«èª¤ã‚ŠãŒã‚りã¾ã™" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æ“作ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: ロケールを変更ã§ãã¾ã›ã‚“ (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: ロケールを変更ã§ãã¾ã›ã‚“ (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: ロケールを変更ã§ãã¾ã›ã‚“ (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: ロケールを変更ã§ãã¾ã›ã‚“ (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "メール㌠$_ ã«ã‚りã¾ã™" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "æ–°ã—ã„メール㌠$_ ã«ã‚りã¾ã™" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "%s ã®ãƒ¡ãƒ¼ãƒ«ã¯æ—¢èª­ã§ã™\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "構文エラー: 数値ã®å¼ãŒå¿…è¦ã§ã™" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "構文エラー: 予期ã—ãªã„ `;' ã§ã™" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "構文エラー: `((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: 誤ã£ãŸæŒ‡å®šã®ç¨®é¡ž %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"ヒアドキュメント㮠%d 行目ã§ãƒ•ァイル終了 (EOF) ã«é”ã—ã¾ã—㟠(`%s' ãŒå¿…è¦)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: リダイレクト指定 `%d' ã¯ç¯„囲外ã§ã™" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "対応ã™ã‚‹ `%c' を探索中ã«äºˆæœŸã—ãªã„ファイル終了 (EOF) ã§ã™" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "`]]' を探索中ã«äºˆæœŸã—ãªã„ファイル終了 (EOF) ã§ã™" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "æ¡ä»¶å¼ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼: 予期ã—ãªã„トークン `%s' ã§ã™" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "æ¡ä»¶å¼ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã™" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "予期ã—ãªã„トークン `%s' ã§ã™ã€‚`)' ãŒäºˆæœŸã•れã¾ã™" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "`)' ãŒäºˆæœŸã•れã¾ã™" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "æ¡ä»¶å˜é …演算å­ã«äºˆæœŸã—ãªã„引数 `%s' ã§ã™" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "æ¡ä»¶å˜é …演算å­ã«äºˆæœŸã—ãªã„引数ã§ã™" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "`%s` ã¯äºˆæœŸã—ãªã„トークンã§ã™ã€‚æ¡ä»¶äºŒé …演算å­ãŒäºˆæœŸã•れã¾ã™" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "æ¡ä»¶äºŒé …演算å­ãŒäºˆæœŸã•れã¾ã™" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "æ¡ä»¶äºŒé …演算å­ã«äºˆæœŸã—ãªã„引数 `%s' ã§ã™" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "æ¡ä»¶äºŒé …演算å­ã«äºˆæœŸã—ãªã„引数ã§ã™" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "æ¡ä»¶ã‚³ãƒžãƒ³ãƒ‰ã«äºˆæœŸã—ãªã„トークン `%c' ãŒã‚りã¾ã™" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "æ¡ä»¶ã‚³ãƒžãƒ³ãƒ‰ã«äºˆæœŸã—ãªã„トークン `%s' ãŒã‚りã¾ã™" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "æ¡ä»¶ã‚³ãƒžãƒ³ãƒ‰ã«äºˆæœŸã—ãªã„トークン %d ãŒã‚りã¾ã™" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "予期ã—ãªã„トークン `%s' å‘¨è¾ºã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã™" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "`%s' å‘¨è¾ºã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã™" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "構文エラー: 予期ã—ãªã„ファイル終了 (EOF) ã§ã™" + +#: parse.y:6365 +msgid "syntax error" +msgstr "構文エラー" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "シェルã‹ã‚‰è„±å‡ºã™ã‚‹ã«ã¯ \"%s\" を使用ã—ã¦ãã ã•ã„。\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "対応ã™ã‚‹ `)' を探索中ã«äºˆæœŸã—ãªã„ファイル終了(EOF)ã§ã™" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: 関数 `%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: 誤ã£ãŸæŽ¥ç¶š `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: 無効ãªãƒ•ァイル記述å­ã§ã™" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: NULL ファイルãƒã‚¤ãƒ³ã‚¿ã§ã™" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: `%c': ç„¡åŠ¹ãªæ›¸å¼æ–‡å­—ã§ã™" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "ファイル記述å­ãŒç¯„囲外ã§ã™" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: 曖昧ãªãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ã™" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: 存在ã™ã‚‹ãƒ•ァイルを上書ãã§ãã¾ã›ã‚“" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: 制é™ã•れã¦ã„ã¾ã™: 出力をリダイレクト出æ¥ã¾ã›ã‚“" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "ヒアドキュメント用一時ファイルを作æˆã§ãã¾ã›ã‚“: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: ãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­ (fd) を変数ã«è¨­å®šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãŒç„¡åйãªå ´åˆ /dev/(tcp|udp)/host/port ã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "リダイレクトエラー: ファイル記述å­ã‚’複製ã§ãã¾ã›ã‚“" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "/tmp ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。作æˆã—ã¦ãã ã•ã„!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp ã¯æœ‰åйãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: 無効ãªã‚ªãƒ—ション" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "uidã‚’ %d ã«è¨­å®šã§ãã¾ã›ã‚“: 実効uid %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "gidã‚’ %d ã«è¨­å®šã§ãã¾ã›ã‚“: 実効gid %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "デãƒãƒƒã‚¬ã‚’é–‹å§‹ã§ãã¾ã›ã‚“。デãƒãƒƒã‚¬ãƒ¢ãƒ¼ãƒ‰ãŒç„¡åйã«ãªã£ã¦ã„ã¾ã™" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: ディレクトリã§ã™" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "ç§ã¯åå‰ãŒã‚りã¾ã›ã‚“!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"使用法:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU å½¢å¼ã®é•·ã„オプション:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "シェルオプション:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD, -c command ã¾ãŸã¯ -O shopt_option\t\t(起動時ã®ã¿)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ã¾ãŸã¯ -o option\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"シェルオプションã®è©³ç´°ã«ã¤ã„ã¦ã¯ `%s -c \"help set\"'ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "シェル組ã¿è¾¼ã¿ã‚³ãƒžãƒ³ãƒ‰ã«ã¤ã„ã¦ã¯ `%s -c help' ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "ãƒã‚°å ±å‘Šã‚’ã™ã‚‹å ´åˆã¯ `bashbug' コマンドを使用ã—ã¦ãã ã•ã„。\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "bashホームページ: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"GNUソフトウェアを使用ã™ã‚‹æ™‚ã®ä¸€èˆ¬çš„ãªãƒ˜ãƒ«ãƒ— : \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: ç„¡åŠ¹ãªæ“作ã§ã™" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "悪ã„シグナル" + +#: siglist.c:50 +msgid "Hangup" +msgstr "åœæ­¢" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "割り込ã¿" + +#: siglist.c:58 +msgid "Quit" +msgstr "終了" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "䏿­£ãªæŒ‡å®š" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ABORT 指定" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT 指定" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "æµ®å‹•å°æ•°ç‚¹ä¾‹å¤–" + +#: siglist.c:86 +msgid "Killed" +msgstr "Killed" + +#: siglist.c:90 +msgid "Bus error" +msgstr "ãƒã‚¹ã‚¨ãƒ©ãƒ¼" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "セグメンテーションフォルト" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "誤ã£ãŸã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "パイプãŒåˆ‡ã‚Œã¾ã—ãŸ" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "アラーム時計" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Terminated" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "急ãŽã® IO 状態" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "åœæ­¢ (シグナル)" + +#: siglist.c:126 +msgid "Continue" +msgstr "続行" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "å­ãƒ—ãƒ­ã‚»ã‚¹ã®æ­»äº¡ã¾ãŸã¯åœæ­¢ " + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "åœæ­¢ (tty 入力)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "åœæ­¢ (tty 出力)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O 用æ„ãŒã§ãã¦ã„ã¾ã™" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU limit" + +#: siglist.c:154 +msgid "File limit" +msgstr "ファイル limit" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "警報 (仮想)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "警報 (プロファイル)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "ウィンドウãŒå¤‰æ›´ã•れã¾ã—ãŸ" + +#: siglist.c:170 +msgid "Record lock" +msgstr "記録ã®ãƒ­ãƒƒã‚¯" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "ユーザシグナル 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "ユーザシグナル 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT 未決ã®å…¥åŠ›ãƒ‡ãƒ¼ã‚¿" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "é›»æºæ•…éšœã®å±é™º" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "システムクラッシュã®å±é™º" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "プロセスを別ã®CPUã«ç§»å‹•" + +#: siglist.c:198 +msgid "programming error" +msgstr "プログラミングエラー" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT monitorモードãŒä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT monitorモードãŒå¥ªã‚れã¾ã—ãŸ" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT サウンドシーケンスãŒå®Œäº†ã—ã¾ã—ãŸ" + +#: siglist.c:214 +msgid "Information request" +msgstr "æƒ…å ±è¦æ±‚" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "䏿˜Žãªã‚·ã‚°ãƒŠãƒ«ç•ªå· %d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "誤ã£ãŸä»£å…¥: é–‰ã˜ã‚‹ `%s' ㌠%s ã«å­˜åœ¨ã—ã¾ã›ã‚“" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: リストをé…列è¦ç´ ã«å‰²ã‚Šå½“ã¦ã§ãã¾ã›ã‚“" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "プロセス代入ã§ã¯ãƒ‘イプを作æˆã§ãã¾ã›ã‚“" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "プロセス代入ã§ã¯å­ãƒ—ロセスを作æˆã§ãã¾ã›ã‚“" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "åå‰ä»˜ãパイプ %s を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "åå‰ä»˜ãパイプ %s を書ãè¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "åå‰ä»˜ãパイプ %s をファイル記述å­(fd) %d ã¨ã—ã¦è¤‡è£½ã§ãã¾ã›ã‚“" + +#: subst.c:6213 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "誤ã£ãŸä»£å…¥: %s ã«é–‰ã˜ã‚‹ \"`\" ãŒã‚りã¾ã›ã‚“" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "コマンド代入ã§ã¯ãƒ‘イプを作æˆã§ãã¾ã›ã‚“" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "コマンド代入ã§ã¯å­ãƒ—ロセスを作æˆã§ãã¾ã›ã‚“" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: パイプを fd 1 ã¨ã—ã¦è¤‡è£½ã§ãã¾ã›ã‚“" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: åå‰å‚ç…§ã¨ã—ã¦ç„¡åйãªå¤‰æ•°ã§ã™" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: 無効ãªè¡Œæ•°ã§ã™" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: 無効ãªå¤‰æ•°åã§ã™" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: パラメータ㌠null ã¾ãŸã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: パラメータ㌠null ã¾ãŸã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expression < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: 誤ã£ãŸä»£å…¥ã§ã™" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: ã“ã®æ–¹æ³•ã§å‰²å½“ã¯ã§ãã¾ã›ã‚“" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚·ã‚§ãƒ«ã§ã¯å¼·åˆ¶çš„ã«æ•°å€¤ä»£å…¥ã¨ã—ã¦è©•価ã•れã¾ã™" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "誤ã£ãŸä»£å…¥: %s ã«é–‰ã˜ã‚‹ \"`\" ãŒã‚りã¾ã›ã‚“" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "一致ã—ã¾ã›ã‚“: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "引数ãŒäºˆæœŸã•れã¾ã™" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: æ•´æ•°ã®å¼ãŒäºˆæœŸã•れã¾ã™" + +#: test.c:265 +msgid "`)' expected" +msgstr "`)' ãŒäºˆæœŸã•れã¾ã™" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "`)' ãŒäºˆæœŸã•れã¾ã™ãŒã€è¦‹ã¤ã‹ã£ãŸã®ã¯ %s ã§ã™" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: 二項演算å­ãŒäºˆæœŸã•れã¾ã™" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: å˜é …演算å­ãŒäºˆæœŸã•れã¾ã™" + +#: test.c:881 +msgid "missing `]'" +msgstr "`]'ãŒã‚りã¾ã›ã‚“" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "構文エラー: 予期ã—ãªã„ `;' ã§ã™" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "無効ãªã‚·ã‚°ãƒŠãƒ«ç•ªå·" + +#: trap.c:325 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: eval ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’è¶…ãˆã¦ã„ã¾ã™ (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: trap_list[%d] ã«èª¤ã£ãŸå€¤ãŒã‚りã¾ã™: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: シグナルãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã¯ SIG_DFLã§ã™ã€‚, %d (%s) を自身ã«å†é€ã—" +"ã¾ã™ã€‚" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: 誤ã£ãŸã‚·ã‚°ãƒŠãƒ« %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "`%s' ã®é–¢æ•°å®šç¾©ã‚’インãƒãƒ¼ãƒˆä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "シェルレベル (%d) ã¯é«˜ã™ãŽã¾ã™ã€‚1ã«å†è¨­å®šã•れã¾ã—ãŸ" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: ç¾åœ¨ã®ã‚¹ã‚³ãƒ¼ãƒ—ã¯é–¢æ•°ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã¯ã‚りã¾ã›ã‚“" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: 変数ãŒåˆæœŸåŒ–ã•れã¦ã„ãªã„ã‹ã‚‚ã—れã¾ã›ã‚“" + +#: variables.c:3475 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: åå‰å‚ç…§ã¨ã—ã¦ç„¡åйãªå¤‰æ•°ã§ã™" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: ç¾åœ¨ã®ã‚¹ã‚³ãƒ¼ãƒ—ã¯é–¢æ•°ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã¯ã‚りã¾ã›ã‚“" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s 㯠null ã® exportstr ã‚’æŒã£ã¦ã„ã¾ã™" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "%2$s ã«å¯¾ã™ã‚‹ exportstr ã§ %1$d ã¯ç„¡åŠ¹ãªæ–‡å­—ã§ã™" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "%s ã«å¯¾ã™ã‚‹ exportstr ã« `=' ãŒã‚りã¾ã›ã‚“" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context: shell_variables ã®å…ˆé ­ã§ã™ã€‚関数コンテキストã§ã¯ã‚りã¾ã›ã‚“" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: global_variables コンテキストã§ã¯ã‚りã¾ã›ã‚“" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: shell_variables ã®å…ˆé ­ã§ã™ã€‚一時環境スコープã§ã¯ã‚りã¾ã›ã‚“" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: ファイルã¨ã—ã¦é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: トレースファイル記述å­ã¨ã—ã¦ç„¡åйãªå€¤ã§ã™" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: 値ã®äº’æ›æ€§ãŒç¯„囲外ã§ã™" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2012 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"ライセンス GPLv3+: GNU GPL ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 ã¾ãŸã¯ãã‚Œä»¥é™ \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "This is free software; you are free to change and redistribute it." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "There is NO WARRANTY, to the extent permitted by law." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %lu ãƒã‚¤ãƒˆã‚’割当ã§ãã¾ã›ã‚“ (%lu ãƒã‚¤ãƒˆã‚’割当済ã¿)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: %lu ãƒã‚¤ãƒˆã‚’割当ã§ãã¾ã›ã‚“" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: %lu ãƒã‚¤ãƒˆã‚’割当ã§ãã¾ã›ã‚“ (%lu ãƒã‚¤ãƒˆã‚’割当済ã¿)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: %lu ãƒã‚¤ãƒˆã‚’割当ã§ãã¾ã›ã‚“" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [name[=value] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] name [name ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function ã¾ãŸã¯ readline-command]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [dir]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [option] name[=value] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f filename] [name ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts optstring name [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ename] [-lnr] [first] [last] ã¾ãŸã¯ fc -s [pat=rep] [command]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [job_spec ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p pathname] [-dt] [name ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [pattern ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d offset] [n] ã¾ãŸã¯ history -anrw [filename] ã¾ãŸã¯ history -" +"ps arg [arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobspec ...] ã¾ãŸã¯ jobs -x command [args]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... ã¾ãŸã¯ kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let 引数 [引数 ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [name ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [name[=value] ...] ã¾ãŸã¯ export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [name[=value] ...] ã¾ãŸã¯ readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source filename [arguments]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". filename [arguments]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signal_spec ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] name [name ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mode]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-n] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAME [in WORDS ... ;] do COMMANDS; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMMANDS; do COMMANDS; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMMANDS; do COMMANDS; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAME] command [redirections]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function name { COMMANDS ; } ã¾ãŸã¯ name () { COMMANDS ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ COMMANDS ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( expression ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ expression ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "変数 - 変数ã®åå‰ã¨ãã®æ„味" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [optname ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [arguments]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o option] [-DE] [name ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" + +#: builtins.c:256 +#, fuzzy +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"エイリアスを定義ã¾ãŸã¯è¡¨ç¤ºã—ã¾ã™ã€‚\n" +" \n" +" 引数ãŒãªã„å ´åˆã€`alias` ã¯å†ä½¿ç”¨å¯èƒ½ãªã‚¨ã‚¤ãƒªã‚¢ã‚¹ä¸€è¦§ã‚’ `alias åå‰=値'\n" +" å½¢å¼ã§æ¨™æº–出力ã«è¡¨ç¤ºã—ã¾ã™ã€‚\n" +" \n" +" ãã†ã§ãªã‘れã°ã€ä¸Žãˆã‚‰ã‚ŒãŸåå‰ã¨å€¤ã§ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã‚’定義ã—ã¾ã™ã€‚値ã®å¾Œç¶šã«ç©º" +"白\n" +" ãŒå­˜åœ¨ã™ã‚‹å ´åˆã¯æ¬¡ã®èªžã¯ã‚¨ã‚¤ãƒªã‚¢ã‚¹å±•開時ã«ã‚¨ã‚¤ãƒªã‚¢ã‚¹ä»£å…¥å¯¾è±¡ã¨ã—ã¦ç¢ºèªã•" +"れ\n" +" ã¾ã™ã€‚\n" +"\n" +" オプション:\n" +" -p\tã™ã¹ã¦ã®å®šç¾©ã•れãŸã‚¨ã‚¤ãƒªã‚¢ã‚¹ã‚’å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§è¡¨ç¤ºã—ã¾ã™\n" +" \n" +" 終了ステータス:\n" +" alias ã¯ä¸Žãˆã‚‰ã‚ŒãŸåå‰ã§ã‚¨ã‚¤ãƒªã‚¢ã‚¹ãŒå®šç¾©ã•れãªã‹ã£ãŸå ´åˆã‚’除ã true ã‚’è¿”" +"ã—ã¾ã™ã€‚" + +#: builtins.c:278 +#, fuzzy +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"定義ã•れãŸã‚¨ã‚¤ãƒªã‚¢ã‚¹ä¸€è¦§ã‹ã‚‰å„åå‰ã®ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã‚’削除ã—ã¾ã™ã€‚\n" +" \n" +" Options:\n" +" -a\tã™ã¹ã¦ã®ã‚¨ã‚¤ãƒªã‚¢ã‚¹å®šç¾©ã‚’削除ã—ã¾ã™ã€‚\n" +" \n" +" åå‰ãŒã‚¨ã‚¤ãƒªã‚¢ã‚¹ã«å­˜åœ¨ã—ãªã„å ´åˆã‚’除ã true ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:291 +#, fuzzy +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Readline ã®ã‚­ãƒ¼å‰²ã‚Šå½“ã¦ã¨å¤‰æ•°ã‚’設定ã—ã¾ã™ã€‚\n" +" \n" +" キーシーケンスを Readline 関数ã¾ãŸã¯ãƒžã‚¯ãƒ­ã«å‰²ã‚Šå½“ã¦ã‚’行ã†ã‹ã€Readline\n" +" 変数を設定ã—ã¾ã™ã€‚オプションãŒç„¡ã„å¼•æ•°ã®æ§‹æ–‡ã¯ ~/.inputrc ã®æ§‹æ–‡ã¨\n" +" åŒã˜ã§ã™ã€‚ã—ã‹ã—ã€å˜ä¸€ã®å¼•æ•°ã¨ã—ã¦ä¸Žãˆãªã‘れã°ãªã‚Šã¾ã›ã‚“。\n" +" 例: bind '\"\\C-x\\C-r\": re-read-init-file'\n" +"\n" +" Options:\n" +" オプション:\n" +" -m keymap ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã®é–“ã®ã‚­ãƒ¼ãƒžãƒƒãƒ—ã¨ã—㦠KEYMAP を使用ã™" +"る。\n" +" 利用å¯èƒ½ãªã‚­ãƒ¼ãƒžãƒƒãƒ—å㯠emacs, emacs-standard, " +"emacs-meta,\n" +" emacs-ctlx, vi, vi-move, vi-command, ãŠã‚ˆã³ vi-" +"insertã§ã™ã€‚\n" +" -l 関数å一覧を表示ã™ã‚‹ã€‚\n" +" -P 関数åãŠã‚ˆã³ã‚­ãƒ¼å‰²ã‚Šå½“ã¦ä¸€è¦§ã‚’表示ã™ã‚‹ã€‚\n" +" -p 入力ã¨ã—ã¦å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§ã€é–¢æ•°åã¨ã‚­ãƒ¼å‰²ã‚Šå½“ã¦ã‚’" +"一覧\n" +" 表示ã™ã‚‹\n" +" -S マクロを起動ã™ã‚‹ã‚­ãƒ¼ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã¨ãã®å€¤ã‚’一覧表示ã™" +"ã‚‹\n" +" -s 入力ã¨ã—ã¦å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§ã€ãƒžã‚¯ãƒ­ã‚’èµ·å‹•ã™ã‚‹\n" +" キーシーケンスã¨ãã®å€¤ã‚’一覧表示ã™ã‚‹\n" +" -V 変数åã¨å€¤ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" +" -v 入力ã¨ã—ã¦å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§ã€å¤‰æ•°åã¨å€¤ã‚’一覧\n" +" 表示ã™ã‚‹\n" +" -q function-name 関数åãŒã©ã®ã‚­ãƒ¼ã«ã‚ˆã£ã¦èµ·å‹•ã•ã‚Œã‚‹ã‹æŽ¢ç´¢ã™ã‚‹\n" +" -u function-name 関数åã«ãƒã‚¤ãƒ³ãƒ‰ã•れãŸã™ã¹ã¦ã®ã‚­ãƒ¼ã‚’解除ã™ã‚‹\n" +" -r keyseq KEYSEQ ã«å¯¾ã™ã‚‹å‰²ã‚Šå½“ã¦ã‚’解除ã™ã‚‹\n" +" -f filename FILENAME ã‹ã‚‰ã‚­ãƒ¼ãƒã‚¤ãƒ³ãƒ‰ã‚’読ã¿è¾¼ã‚€\n" +" -x keyseq:shell-command\tKEYSEQ ãŒå…¥åŠ›ã•ã‚ŒãŸæ™‚ã« SHELL-COMMAND \n" +" \t\t\t\tãŒå®Ÿè¡Œã•れるよã†ã«ã™ã‚‹\n" +" -X\t\t 入力ã¨ã—ã¦å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§ -x ã«ã‚ˆã£ã¦å‰²ã‚Šå½“ã¦\n" +" られãŸã‚­ãƒ¼ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã¨ã‚³ãƒžãƒ³ãƒ‰ã‚’一覧表示ã™ã‚‹\n" +" \n" +" 終了ステータス:\n" +" bind ã¯è§£é‡ˆã§ããªã„ã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒæ¸¡ã•れãŸå ´åˆãŠã‚ˆã³ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå ´åˆ\n" +" を除ã 0 ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"for〠whileã€ã¾ãŸã¯ until ループを脱出ã—ã¾ã™ã€‚\n" +" \n" +" FOR〠WHILEã€ã¾ãŸã¯ UNTIL ループを脱出ã—ã¾ã™ ã‚‚ã— N ãŒæŒ‡å®šã•れã¦ã„ã‚‹å ´" +"åˆã€\n" +" N階層ã®ãƒ«ãƒ¼ãƒ—を終了ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" N ãŒ1未満ã®å ´åˆã‚’除ãã€çµ‚了ステータス㯠0 ã§ã™ã€‚" + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"for, while, ã¾ãŸã¯ until ループをå†é–‹ã—ã¾ã™ã€‚\n" +" \n" +" FOR, WHILE ã¾ãŸã¯ UNTIL ãƒ«ãƒ¼ãƒ—ã®æ¬¡ã®ç¹°ã‚Šè¿”ã—ã‚’å†é–‹ã—ã¾ã™ã€‚\n" +" ã‚‚ã— N ãŒæŒ‡å®šã•れãŸå ´åˆã€N 階層ã®ãƒ«ãƒ¼ãƒ—ã‚’å†é–‹ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" N ãŒ1未満ã®å ´åˆã‚’除ãã€çµ‚了ステータス㯠0 ã§ã™ã€‚" + +#: builtins.c:354 +#, fuzzy +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"シェル組ã¿è¾¼ã¿ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚\n" +" \n" +" コマンドを検索ã—ãªã„ã§ã‚·ã‚§ãƒ«çµ„ã¿è¾¼ã¿ã‚³ãƒžãƒ³ãƒ‰ã‚’ ARG ã‚’ã¤ã‘ã¦å®Ÿè¡Œã—\n" +" ã¾ã™ã€‚ã“れã¯ã‚·ã‚§ãƒ«çµ„ã¿è¾¼ã¿ã‚³ãƒžãƒ³ãƒ‰ã‚’シェル関数ã¨ã—ã¦å®Ÿè£…ã™ã‚‹ãŒã€é–¢æ•°\n" +" 内ã§çµ„ã¿è¾¼ã¿ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã™ã‚‹å¿…è¦ãŒã‚ã‚‹å ´åˆã«å½¹ã«ç«‹ã¡ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" シェル組ã¿è¾¼ã¿ã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚シェル組ã¿è¾¼ã¿ã‚³ãƒž\n" +" ンドãŒç„¡ã„å ´åˆã¯ false ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"ç¾åœ¨ã®ã‚µãƒ–ルーãƒãƒ³å‘¼ã³å‡ºã—ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚’è¿”ã—ã¾ã™ã€‚\n" +" \n" +" EXPR ãŒç„¡ã„å ´åˆ \"$line $filename\" ã‚’è¿”ã—ã¾ã™ã€‚ EXPR ãŒã‚ã‚‹å ´åˆã€\n" +" \"$line $subroutine $filename\" ã‚’è¿”ã—ã¾ã™ã€‚ã“ã®è¿½åŠ ã®æƒ…å ±ã¯ã‚¹ã‚¿ãƒƒã‚¯ãƒˆ" +"レース\n" +" ã‚’æä¾›ã™ã‚‹æ™‚ã«åˆ©ç”¨ã—ã¾ã™ã€‚\n" +" \n" +" EXPR ã®å€¤ã¯ç¾åœ¨ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã«æˆ»ã‚‹ã¾ã§ã«ä½•回フレームãŒå‘¼ã³å‡ºã•れã¦ã„ã‚‹ã‹ã‚’\n" +" æ„味ã—ã¾ã™ã€‚最上ä½ã®ãƒ•レーム㯠0 ã§ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" シェルãŒé–¢æ•°ã‚’実行ã§ããªã„ã‹å¼ EXPR ãŒç„¡åйãªå ´åˆã‚’除ã 0 ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:387 +#, fuzzy +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"シェルã®ä½œæ¥­ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’変更ã—ã¾ã™ã€‚\n" +" \n" +" カレントディレクトリを DIR ã¸å¤‰æ›´ã—ã¾ã™ã€‚DIR ã®ãƒ‡ãƒ•ォルト㯠HOME シェル\n" +" 変数ã®å€¤ã§ã™ã€‚\n" +" \n" +" 変数 CDPATH 㯠DIR ã‚’å«ã‚“ã§ã„る検索パスを定義ã—ã¾ã™ã€‚CDPATH ã«ã¯ã‚³ãƒ­ãƒ³" +"(:)\n" +" ã§åŒºåˆ‡ã‚‰ã‚ŒãŸä»£æ›¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåを指定ã—ã¾ã™ã€‚\n" +" 値ãŒãªã„ディレクトリåã¯ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¨åŒç¾©ã§ã™ã€‚ DIR ãŒ\n" +" スラッシュ (/) ã‹ã‚‰å§‹ã¾ã‚‹å ´åˆã¯ CDPATH ã¯ä½¿ç”¨ã•れã¾ã›ã‚“。\n" +" \n" +" ディレクトリãŒè¦‹ã¤ã‹ã‚‰ãªãã€ã‹ã¤ `cdabl_vars' シェルオプションãŒè¨­å®šã•れ" +"ã¦\n" +" ã„ã‚‹å ´åˆã€å¼•æ•°ã¯å¤‰æ•°åã¨ã—ã¦æ‰±ã‚れã¾ã™ã€‚ãã®å¤‰æ•°ã«å€¤ãŒã‚ã‚‹å ´åˆã€ãã®å€¤" +"ãŒ\n" +" DIR ã¨ã—ã¦æ‰±ã‚れã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -L\tシンボリックリンクを強制的ã«ãŸã©ã‚Šã¾ã™: resolve symbolic links " +"in\n" +" DIR after processing instances of `..'\n" +" -P\tシンボリックリンクをãŸã©ã‚‰ãšç‰©ç†æ§‹é€ ã‚’利用ã—ã¾ã™: resolve\n" +" symbolic links in DIR before processing instances\n" +" \tof `..'\n" +" -e\t-P オプションãŒä¸Žãˆã‚‰ã‚Œã€ã‹ã¤ã€ç¾åœ¨ã®ä½œæ¥­ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒæ­£ã—ã\n" +" 決定ã§ããªã„å ´åˆã€çµ‚了ステータス㌠0 以外ã§çµ‚了ã—ã¾ã™\n" +" -@ on systems that support it, present a file with extended " +"attributes\n" +" as a directory containing the file attributes\n" +" \n" +" デフォルトã§ã¯ `-L' ãŒæŒ‡å®šã•れãŸå ´åˆã¨åŒæ§˜ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã‚’ãŸã©ã‚Šã¾" +"ã™ã€‚\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" 終了ステータス:\n" +" ディレクトリを変更ã—ãŸå ´åˆã€ãŠã‚ˆã³ -P ãŒä½¿ç”¨ã•れã¦ã„る時㫠$PWD ãŒæ­£ã—" +"ã\n" +" 設定ã•れãŸå ´åˆã¯ 0ã€ãれ以外㯠0 以外ã®å€¤ã§ã™ã€‚" + +#: builtins.c:425 +#, fuzzy +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"カレントディレクトリã®åå‰ã‚’表示ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -L\t$PWD ãŒã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®åå‰ã‚’指ã—ã¦ã„ã‚‹å ´åˆã¯ $PWD\n" +" \tを表示ã™ã‚‹\n" +" -P\tシンボリックリンクを辿ã£ãŸç‰©ç†çš„ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’表示ã™ã‚‹\n" +" \n" +" デフォルトã§ã¯ `pwd' 㯠`-L' ãŒæŒ‡å®šã•れãŸã‚ˆã†ã«å‹•作ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションã¾ãŸã¯ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’読ã¿è¾¼ã‚ãªã„å ´åˆã‚’除ã\n" +" 0ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"何もã—ãªã„コマンド\n" +" \n" +" 何も効果ãŒã‚りã¾ã›ã‚“。コマンドã¯ä½•も行ã„ã¾ã›ã‚“\n" +" \n" +" 終了ステータス:\n" +" å¸¸ã«æˆåŠŸã§ã™ã€‚" + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"çµæžœã¨ã—ã¦æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" å¸¸ã«æˆåŠŸã§ã™ã€‚" + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"çµæžœã¨ã—ã¦å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 常ã«å¤±æ•—ã§ã™ã€‚" + +#: builtins.c:471 +#, fuzzy +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"å˜ç´”ãªã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã™ã‚‹ã‹ã‚³ãƒžãƒ³ãƒ‰ã«é–¢ã™ã‚‹æƒ…報を表示ã—ã¾ã™ã€‚\n" +" \n" +" ã‚·ã‚§ãƒ«é–¢æ•°ã®æŽ¢ç´¢ã‚’æŠ‘æ­¢ã—㦠COMMAND を引数 ARGS ã§å®Ÿè¡Œã—ã¾ã™ã€‚ã¾ãŸã¯\n" +" 指定ã—㟠COMMANDs ã®æƒ…報を表示ã—ã¾ã™ã€‚シェル関数ã¨åŒã˜åå‰ã®ã‚³ãƒžãƒ³ãƒ‰\n" +" ãŒãƒ‡ã‚£ã‚¹ã‚¯ä¸Šã«å­˜åœ¨ã™ã‚‹æ™‚ã«ä½¿ç”¨ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -p\tå…¨ã¦ã®æ¨™æº–ユーティリティãŒè¦‹ã¤ã‹ã‚‹ã¨ä¿è¨¼ã•れる PATH ã‚’\n" +" \tデフォルトã®å€¤ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹\n" +" -v\t`type'組ã¿è¾¼ã¿é–¢æ•°ã¨åŒæ§˜ã« COMMAND ã®èª¬æ˜Žã‚’表示ã™ã‚‹\n" +" -V\tCOMMAND ã«å¯¾ã—ã¦ã‚ˆã‚Šå†—é•·ãªèª¬æ˜Žã‚’表示ã™ã‚‹\n" +" \n" +" 終了ステータス:\n" +" COMMAND ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚ã¾ãŸã¯ COMMAND ãŒè¦‹ã¤ã‹ã‚‰ãªã„時ã«å¤±æ•—" +"ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"変数ã®å€¤ãŠã‚ˆã³å±žæ€§ã‚’設定ã—ã¾ã™ã€‚\n" +" \n" +" 変数を宣言ã—ã€ãれã«å±žæ€§ã‚’与ãˆã¾ã™ã€‚NAME を指定ã—ãªã„å ´åˆ\n" +" ã™ã¹ã¦ã®å¤‰æ•°ã«é–¢ã™ã‚‹å±žæ€§ã¨å€¤ã‚’表示ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -f\t関数åã¨é–¢æ•°å®šç¾©ã«è¡¨ç¤ºã‚’制é™ã™ã‚‹\n" +" -F\t関数åã®ã¿è¡¨ç¤ºã™ã‚‹ã‚ˆã†ã«åˆ¶é™ã™ã‚‹ (デãƒãƒƒã‚°ä¸­ã¯è¡Œç•ªå·ã¨\n" +" \tソースファイルも追加ã•れる)\n" +" -g\tシェル関数内ã§ä½¿ç”¨ã•ã‚ŒãŸæ™‚ã«å¤§åŸŸå¤‰æ•°ã‚’作æˆã™ã‚‹ã€‚ãれ以\n" +" \t外ã®å ´åˆã¯ç„¡è¦–ã•れる\n" +" -p\tå„ NAME ã®å±žæ€§ã¨å€¤ã‚’表示ã™ã‚‹\n" +" \n" +" 属性を設定ã™ã‚‹ã‚ªãƒ—ション:\n" +" -a\tNAME をインデックス型é…列ã«ã™ã‚‹(サãƒãƒ¼ãƒˆã•れã¦ã„ã‚‹å ´åˆ)\n" +" -A\tNAME を連想é…列ã«ã™ã‚‹(サãƒãƒ¼ãƒˆã•れã¦ã„ã‚‹å ´åˆ)\n" +" -i\tNAME ã«`æ•´æ•°åž‹'ã®å±žæ€§ã‚’設定ã™ã‚‹\n" +" -l\tNAME ã®è¨­å®šæ™‚ã«å€¤ã‚’å°æ–‡å­—ã«å¤‰æ›ã™ã‚‹\n" +" -n\tNAME ã®å€¤ãŒå¤‰æ•°åã®å‚ç…§ã¨ãªã‚‹ã‚ˆã†ã«ã™ã‚‹\n" +" -r\tNAME を読ã¿å–り専用ã«ã™ã‚‹\n" +" -t\tNAME ã« `trace' 属性を設定ã™ã‚‹\n" +" -u\tNAME 設定時ã«å€¤ã‚’大文字ã«è¨­å®šã™ã‚‹\n" +" -x\tNAME をエクスãƒãƒ¼ãƒˆã™ã‚‹\n" +" \n" +" `-' ã®ä»£ã‚り㫠`+' を使用ã™ã‚‹ã¨ä¸Žãˆã‚‰ã‚ŒãŸå±žæ€§ã‚’無効ã«ã—ã¾ã™ã€‚\n" +" \n" +" 整数属性を与ãˆã‚‰ã‚ŒãŸå¤‰æ•°ã¯å€¤ã‚’割り当ã¦ã‚‰ã‚ŒãŸæ™‚ã«ã€æ•°å€¤ã¨ã—ã¦è©•価ã•れ\n" +" ã¾ã™ã€‚(`let' コマンドå‚ç…§ã—ã¦ãã ã•ã„。)\n" +"\n" +" 関数内ã§ä½¿ç”¨ã•れãŸå ´åˆã¯ `local' コマンドを使用ã—ãŸæ™‚ã¨åŒæ§˜ã« " +"`declare' \n" +" 㯠NAME をローカル変数ã«ã—ã¾ã™ã€‚`-g' オプションã¯ã“ã®å‹•作を抑止ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚ŒãŸã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:532 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"変数ã®å€¤ãŠã‚ˆã³å±žæ€§ã‚’設定ã—ã¾ã™ã€‚\n" +" \n" +" æ—§å¼ã§ã™ã€‚`help declare'ã‚’å‚ç…§ã—ã¦ãã ã•ã„。" + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"ローカル変数を定義ã—ã¾ã™ã€‚\n" +" \n" +" NAME ã¨ã„ã†åå‰ã®ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã‚’定義ã—値を VALUE ã«è¨­å®šã—ã¾ã™ã€‚OPTION ã¯\n" +" `declare'ã¨åŒã˜ã™ã¹ã¦ã®ã‚ªãƒ—ションをå—ã‘付ã‘ã¾ã™ã€‚\n" +" \n" +" 局所変数ã¯ã‚·ã‚§ãƒ«é–¢æ•°ã®ä¸­ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™ã€‚宣言ã•れãŸé–¢æ•°ã®ä¸­ãŠã‚ˆã³ã" +"ã®\n" +" å­é–¢æ•°ã®ã¿ã§å‚ç…§ã§ãã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã™ã‚‹ã€ã¾ãŸã¯ã‚·ã‚§ãƒ«ãŒé–¢æ•°ã‚’実行" +"ã§ããªã„\n" +" å ´åˆã‚’é™¤ãæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:557 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"å¼•æ•°ã‚’æ¨™æº–å‡ºåŠ›ã«æ›¸ã出ã—ã¾ã™ã€‚\n" +" \n" +" 引数 ARG ã‚’å˜ä¸€ç©ºç™½æ–‡å­—ã§åŒºåˆ‡ã‚Šã€æœ€å¾Œã«æ”¹è¡Œã‚’加ãˆã¦æ¨™æº–出力ã«è¡¨ç¤ºã—ã¾" +"ã™ã€‚\n" +" \n" +" オプション:\n" +" -n\tæœ€å¾Œã«æ”¹è¡Œã‚’加ãˆãªã„\n" +" -e\t下記ã«ç¤ºã™ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã®è§£é‡ˆã‚’有効ã«ã™ã‚‹\n" +" -E\tãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã®è§£é‡ˆã‚’明示的ã«ç„¡åйã«ã™ã‚‹\n" +" \n" +" `echo' ã§ã¯ä¸‹è¨˜ã®ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—文字を解釈ã—ã¾ã™:\n" +" \\a\tアラート (bell)\n" +" \\b\tãƒãƒƒã‚¯ã‚¹ãƒšãƒ¼ã‚¹\n" +" \\c\t以é™ã®å‡ºåŠ›ã‚’æŠ‘æ­¢\n" +" \\e\tエスケープ文字\n" +" \\E\tエスケープ文字\n" +" \\f\tフォームフィード\n" +" \\n\t改行\n" +" \\r\tキャリッジリターン\n" +" \\t\t水平タブ\n" +" \\v\t垂直タブ\n" +" \\\\\tãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥\n" +" \\0nnn\tASCII コード㌠NNN (8進数) ã®æ–‡å­—。 NNN ã¯0ã‹ã‚‰3個ã®8進数字\n" +" \\xHH\t値㌠HH (16進数) ã®8ビット文字。HH 㯠1 ã¾ãŸã¯2個ã®16進数字\n" +"\n" +" 終了ステータス:\n" +" 書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"å¼•æ•°ã‚’æ¨™æº–å‡ºåŠ›ã«æ›¸ã出ã—ã¾ã™ã€‚\n" +" \n" +" 引数 ARG ã‚’æœ€å¾Œã«æ”¹è¡Œã‚’加ãˆã¦æ¨™æº–出力ã«è¡¨ç¤ºã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -n\tæœ€å¾Œã«æ”¹è¡Œã‚’加ãˆãªã„\n" +" \n" +" 終了ステータス:\n" +" 書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"シェル組ã¿è¾¼ã¿é–¢æ•°ã‚’有効ã¾ãŸã¯ç„¡åйã«ã—ã¾ã™ã€‚\n" +" \n" +" シェル組ã¿è¾¼ã¿é–¢æ•°ã‚’有効ã¾ãŸã¯ç„¡åйã«ã—ã¾ã™ã€‚シェル組ã¿è¾¼ã¿é–¢æ•°ã‚’無効ã«ã™" +"ã‚‹ã¨\n" +" ディスク上ã«å­˜åœ¨ã™ã‚‹ã‚·ã‚§ãƒ«çµ„ã¿è¾¼ã¿é–¢æ•°ã¨åŒã˜åå‰ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’フルパスを指" +"定ã™\n" +" ã‚‹ã“ã¨ãªã実行ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -a\t組ã¿è¾¼ã¿é–¢æ•°ã®ä¸€è¦§ã‚’ãれãžã‚ŒãŒæœ‰åйã‹å¦ã‹ã‚’å«ã‚ã¦è¡¨ç¤ºã—ã¾ã™\n" +" -n\tNAME を無効ã«ã™ã‚‹ã‹ã€ã¾ãŸã¯ç„¡åйãªçµ„ã¿è¾¼ã¿é–¢æ•°ä¸€è¦§ã‚’表示ã—ã¾ã™\n" +" -p\t組ã¿è¾¼ã¿é–¢æ•°ä¸€è¦§ã‚’å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§è¡¨ç¤ºã—ã¾ã™\n" +" -s\tPosix ã§å®šç¾©ã•れã¦ã„る組ã¿è¾¼ã¿é–¢æ•°ã®ã¿è¡¨ç¤ºã—ã¾ã™\n" +" \n" +" 動的ロードを制御ã™ã‚‹ã‚ªãƒ—ション:\n" +" -f\t共有オブジェクト FILENAME ã‹ã‚‰çµ„ã¿è¾¼ã¿é–¢æ•° NAME を読ã¿è¾¼ã¿ã¾ã™\n" +" -d\t-f ã§èª­ã¿è¾¼ã¾ã‚ŒãŸçµ„ã¿è¾¼ã¿é–¢æ•°ã‚’削除ã—ã¾ã™\n" +" \n" +" オプション無ã—ã§èµ·å‹•ã•れãŸå ´åˆã€å„ NAME ã¯æœ‰åйã«ãªã‚Šã¾ã™ã€‚\n" +" \n" +" $PATH 上ã«å­˜åœ¨ã™ã‚‹ `test' をシェル組ã¿è¾¼ã¿é–¢æ•°ã®ä»£ã‚りã«åˆ©ç”¨ã™ã‚‹å ´åˆã¯\n" +" `enable -n test'ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。\n" +" \n" +" 終了ステータス:\n" +" NAME ãŒçµ„ã¿è¾¼ã¿é–¢æ•°ã§ã¯ãªã„ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"引数をシェルコマンドã¨ã—ã¦å®Ÿè¡Œã—ã¾ã™ã€‚\n" +" \n" +" 引数を一ã¤ã®æ–‡å­—列ã«é€£çµã—ã€ãã®çµæžœã‚’シェルã¸ã®å…¥åŠ›ã¨ã—ã¦ä½¿ç”¨ã—ã€\n" +" ãã®çµæžœã‚’コマンドã¨ã—ã¦å®Ÿè¡Œã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" コマンドã®çµ‚了ステータスを返ã—ã¾ã™ã€‚コマンド㌠null ã®å ´åˆã¯æˆåŠŸã‚’\n" +" è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"オプション引数を解æžã—ã¾ã™ã€‚\n" +" \n" +" getopts ã¯ä½ç½®ãƒ‘ラメーターをオプションã¨ã—ã¦è§£æžã™ã‚‹éš›ã«ã‚·ã‚§ãƒ«ã«ã‚ˆã£\n" +" ã¦ä½¿ç”¨ã•れる手続ã§ã™ã€‚\n" +" \n" +" OPTSTRING ã«ã¯èªè­˜ã•ã‚Œã‚‹ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã®æ–‡å­—ãŒå«ã¾ã‚Œã¾ã™ã€‚文字ã®å¾Œã«\n" +" コロン(:)ãŒç¶šãå ´åˆã¯ã€ã‚ªãƒ—ションã¯ç©ºç™½æ–‡å­—ã§ã‚ªãƒ—ションã‹ã‚‰åŒºåˆ‡\n" +" られãŸå¼•æ•°ã‚’æŒã¤ã¨äºˆæœŸã•れã¾ã™ã€‚\n" +" \n" +" getopts ã¯èµ·å‹•ã•れるãŸã³ã«ã€æ¬¡ã®ã‚ªãƒ—ションをシェル変数 $name ã«ä¿å­˜\n" +" ã—ã¾ã™ã€‚name ãŒå­˜åœ¨ã—ãªã„å ´åˆã¯åˆæœŸåŒ–ã•れã¾ã™ã€‚ãã—ã¦å‡¦ç†ã™ã‚‹å¿…è¦ãŒ\n" +" ã‚る次ã®å¼•æ•°ã®ä½ç½®ã‚’シェル変数 OPTIND ã«ä¿å­˜ã—ã¾ã™ã€‚OPTIND ã¯ã‚·ã‚§ãƒ«\n" +" ã¾ãŸã¯ã‚·ã‚§ãƒ«ã‚¹ã‚¯ãƒªãƒ—トãŒèµ·å‹•ã™ã‚‹ãŸã³ã« 1 ã«åˆæœŸåŒ–ã•れã¾ã™ã€‚オプショ\n" +" ンã«å¼•æ•°ãŒè¦æ±‚ã•れる場åˆã€getopt ã¯å¼•数をシェル変数 OPTARG ã«ä¿å­˜ã—\n" +" ã¾ã™ã€‚\n" +" \n" +" getopts ã¯ã‚¨ãƒ©ãƒ¼ã‚’2ã¤ã®æ–¹æ³•ã®ã„ãšã‚Œã‹ã§å ±å‘Šã—ã¾ã™ã€‚OPTSTRINGã®æœ€åˆ\n" +" ã®æ–‡å­—ãŒã‚³ãƒ­ãƒ³ (:) ã®å ´åˆã€getopts ã¯ã‚µã‚¤ãƒ¬ãƒ³ãƒˆã‚¨ãƒ©ãƒ¼å ±å‘Šã‚’使用ã—\n" +" ã¾ã™ã€‚ã“ã®ãƒ¢ãƒ¼ãƒ‰ã§ã¯ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯è¡¨ç¤ºã•れã¾ã›ã‚“。無効ãªã‚ªãƒ—ã‚·\n" +" ョンを見ã¤ã‘ãŸæ™‚〠getopts ã¯ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã®æ–‡å­—ã‚’ OPTARG ã«è¨­å®šã—ã¾\n" +" ã™ã€‚å¿…è¦ãªã‚ªãƒ—ション引数ãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã¯ã€getopts 㯠NAME ã«\n" +" ':' を設定ã—ã€OPTARG ã«ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã®æ–‡å­—を設定ã—ã¾ã™ã€‚getopts ãŒ\n" +" サイレントモードã§ç„¡ã„å ´åˆã€ç„¡åйãªã‚ªãƒ—ションを見ã¤ã‘ãŸæ™‚ã€getopts \n" +" 㯠NAME ã« '?' を設定ã—ã€OPTARG を未定義状態ã«ã—ã¾ã™ã€‚ãã—ã¦\n" +" 診断メッセージを表示ã—ã¾ã™ã€‚\n" +" \n" +" シェル変数 OPTERR ã®å€¤ãŒ 0 ã®å ´åˆã€getopts 㯠OPTSTRING ã®æœ€åˆãŒ\n" +" コロン (:) ã‹å¦ã‹ã«ã‹ã‹ã‚らãšã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®è¡¨ç¤ºã‚’抑止ã—ã¾ã™ã€‚\n" +" OPTERR ã®ãƒ‡ãƒ•ォルト値㯠1 ã§ã™ã€‚\n" +" \n" +" getopts ã§ã¯é€šå¸¸ä½ç½®ãƒ‘ラメーター ($0 - $9) ã‚’è§£æžã—ã¾ã™ã€‚ã—ã‹ã—\n" +" ä»–ã®å¼•æ•°ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã€ãれらãŒè§£æžã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" オプションãŒè¦‹ã¤ã‹ã£ãŸå ´åˆã«æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚オプションã®çµ‚ã‚り\n" +" ã«åˆ°é”ã™ã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸæ™‚ã«å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:694 +#, fuzzy +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"シェルを与ãˆã‚‰ã‚ŒãŸã‚³ãƒžãƒ³ãƒ‰ã§ç½®æ›ã—ã¾ã™ã€‚\n" +" \n" +" 指定ã—ãŸãƒ—ログラムã§ã‚·ã‚§ãƒ«ã‚’ç½®æ›ã—㦠COMMAND を実行ã—ã¾ã™ã€‚ARGUMENTS ã¯\n" +" COMMAND ã®å¼•æ•°ã¨ãªã‚Šã¾ã™ã€‚ã‚‚ã— COMMAND ãŒæŒ‡å®šã•れãªã„å ´åˆã¯ã€ç¾åœ¨ã®ã‚·ã‚§" +"ル\n" +" ã«å¯¾ã™ã‚‹å…¨ã¦ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãŒè¡Œã‚れã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -a name\tNAME ã‚’ COMMAND ã® 0 番目ã®å¼•æ•°ã¨ã—ã¦ä¸Žãˆã¾ã™\n" +" -c\t\tCOMMAND を環境変数ãªã—ã§å®Ÿè¡Œã—ã¾ã™\n" +" -l\t\tdash(-) ã‚’ COMMAND ã® 0 番目ã®å¼•æ•°ã¨ã—ã¾ã™\n" +" \n" +" ã‚‚ã—コマンドãŒå®Ÿè¡Œã§ããªã„å ´åˆã€éžå¯¾è©±çš„ãªã‚·ã‚§ãƒ«ã¯çµ‚了ã—ã€å¯¾è©±çš„ãªã‚·ã‚§ãƒ«" +"ã¯\n" +" オプション `execfail' ãŒè¨­å®šã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" COMMAND ãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾" +"ã™ã€‚" + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"シェルを終了ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス N ã§ã‚·ã‚§ãƒ«ã‚’終了ã—ã¾ã™ã€‚ N を指定ã—ãªã„å ´åˆã¯\n" +" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了ステータスã«ãªã‚Šã¾ã™ã€‚" + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"ログインシェルを終了ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス N ã§ãƒ­ã‚°ã‚¤ãƒ³ã‚·ã‚§ãƒ«ã‚’終了ã—ã¾ã™ã€‚実行ã—ãŸã®ãŒãƒ­ã‚°ã‚¤ãƒ³ã‚·ã‚§" +"ル\n" +" 内ã§ç„¡ã„å ´åˆã¯ã‚¨ãƒ©ãƒ¼ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"ヒストリ一覧ã‹ã‚‰ã‚³ãƒžãƒ³ãƒ‰ã‚’表示ã¾ãŸã¯å®Ÿè¡Œã—ã¾ã™ã€‚\n" +" \n" +" fc ã¯ãƒ’ストリ一覧を表示ã¾ãŸã¯ç·¨é›†ã—ã¦ã‚³ãƒžãƒ³ãƒ‰ã‚’å†å®Ÿè¡Œã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã—ã¾" +"ã™ã€‚\n" +" FIRST ãŠã‚ˆã³ LAST ã¯ç¯„囲を指定ã™ã‚‹æ•°å€¤ã§ã™ã€‚FIRST ã¯æ–‡å­—列を指定ã™ã‚‹ã“ã¨" +"ã‚‚\n" +" ã§ãã¾ã™ã€‚ãã®å ´åˆã¯ãã®æ–‡å­—列ã§å§‹ã¾ã‚‹ç›´è¿‘ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã‚’表ã—ã¾" +"ã™ã€‚\n" +" \n" +" オプション:\n" +" -e ENAME\t使用ã™ã‚‹ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é¸æŠžã—ã¾ã™ã€‚デフォルト㯠FCEDIT ã§ã€æ¬¡ã¯ " +"EDITORã€\n" +" \t\tãã—㦠vi ã®é †ã§ã™ã€‚\n" +" -l \t編集ã§ã¯ãªã行を一覧表示ã—ã¾ã™\n" +" -n\t一覧表示時ã«è¡Œç•ªå·ã‚’表示ã—ã¾ã›ã‚“\n" +" -r\t行を逆順ã«ã—ã¾ã™ (最新ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’最åˆã«ã™ã‚‹)\n" +" \n" +" `fc -s [pat=rep ...] [command]' å½¢å¼ã‚’使用ã™ã‚‹ã¨ã€COMMAND ã¯\n" +" OLD=NEW ã®ç½®æ›ãŒè¡Œã‚れãŸå¾Œã«å†å®Ÿè¡Œã•れã¾ã™ã€‚\n" +" \n" +" ã“れを使ã£ãŸä½¿ã„ã‚„ã™ã„エイリアス㯠r='fc -s' ã§ã™ã€‚ã“れ㧠`r cc' を実行ã™" +"ã‚‹\n" +" ã¨æœ€å¾Œã«å®Ÿè¡Œã—㟠cc ã§å§‹ã¾ã‚‹ã‚³ãƒžãƒ³ãƒ‰ãŒå®Ÿè¡Œã•れã¾ã™ã€‚`r' ã§ç›´å‰ã®ã‚³ãƒžãƒ³ãƒ‰" +"ãŒ\n" +" 実行ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 実行ã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¾ãŸã¯æˆåŠŸãŒå¸°ã‚Šã¾ã™ã€‚エラーãŒç™ºç”Ÿã—ãŸå ´åˆã¯ " +"0 \n" +" 以外ã®å€¤ã«ãªã‚Šã¾ã™ã€‚" + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"ジョブをフォアグランドã«ã—ã¾ã™ã€‚\n" +" \n" +" JOB_SPEC ã§è­˜åˆ¥ã•れãŸã‚¸ãƒ§ãƒ–をフォアグランドã«ã—ã¦ã€ç¾åœ¨ã®ã‚¸ãƒ§ãƒ–ã«ã—ã¾" +"ã™ã€‚\n" +" ã‚‚ã— JOB_SPEC ãŒå­˜åœ¨ã—ãªã„å ´åˆã€ã‚·ã‚§ãƒ«ãŒç¾åœ¨ã®ãƒ¬ãƒ³ãƒˆã‚¸ãƒ§ãƒ–ã¨ã—ã¦è€ƒãˆã¦ã„" +"ã‚‹\n" +" ã‚‚ã®ãŒåˆ©ç”¨ã•れã¾ã™ã€‚\n" +" \n" +" \n" +" 終了ステータス:\n" +" フォアグラウンドã«ãªã£ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚ã¾ãŸã¯ã€ã‚¨ãƒ©ãƒ¼" +"ãŒ\n" +" 発生ã—ãŸæ™‚ã«å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"ジョブをãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã«ã—ã¾ã™ã€‚\n" +" \n" +" JOB_SPEC ã§è­˜åˆ¥ã•れるジョブを `&' ã¨å…±ã«å§‹ã‚ãŸæ™‚ã®ã‚ˆã†ã«ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰" +"ã«\n" +" ã—ã¾ã™ã€‚ã‚‚ã— JOB_SPEC ãŒå­˜åœ¨ã—ãªã„å ´åˆã€ã‚·ã‚§ãƒ«ãŒç¾åœ¨ã®ã‚¸ãƒ§ãƒ–ã¨ã—ã¦è€ƒãˆã¦" +"ã„\n" +" ã‚‹ã‚‚ã®ãŒåˆ©ç”¨ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" ã‚¸ãƒ§ãƒ–åˆ¶å¾¡ãŒæœ‰åйã«ãªã£ã¦ã„ãªã„ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:793 +#, fuzzy +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"プログラムã®ä½ç½®ã‚’記憶ã¾ãŸã¯è¡¨ç¤ºã—ã¾ã™ã€‚\n" +" \n" +" å„コマンド NAME ã®ãƒ•ルパスを決定ã—記憶ã—ã¾ã™ã€‚ã‚‚ã—引数ãŒä¸Žãˆã‚‰ã‚Œãªã‹ã£ãŸ" +"å ´åˆã€\n" +" 記憶ã—ã¦ã„ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã®æƒ…å ±ãŒè¡¨ç¤ºã•れã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -d\t\tå„ NAME ã«å¯¾ã—ã¦è¨˜æ†¶ã—ã¦ã„る情報を消去ã—ã¾ã™\n" +" -l\t\t入力ã¨ã—ã¦å†å¯èƒ½ãªå½¢å¼ã§è¡¨ç¤ºã—ã¾ã™\n" +" -p pathname\tNAME ã®ãƒ•ルパスåã¨ã—㦠PATHNAME を使用ã—ã¾ã™\n" +" -r\t\tå…¨ã¦ã®è¨˜æ†¶ã—ã¦ã„ã‚‹ä½ç½®æƒ…報を消去ã—ã¾ã™\n" +" -t\t\tå„ NAME ã«å¯¾ã—ã¦è¨˜æ†¶ã—ã¦ã„ã‚‹ä½ç½®ã‚’表示ã—ã¾ã™ã€‚複数㮠NAME\n" +" \t\tãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã€ä½ç½®ã‚’表示ã™ã‚‹å‰ã«å¯¾è±¡ã¨ãªã‚‹ NAME を表示ã—ã¾ã™ã€‚\n" +" 引数:\n" +" NAME\t\tå„ NAME 㯠$PATH ã®ä¸­ã‚’探索ã•れã€è¨˜éŒ²ã•れãŸã‚³ãƒžãƒ³ãƒ‰ä¸€è¦§ã«\n" +" \t\t追加ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" NAME ãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ã€ç„¡åйãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:818 +#, fuzzy +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"組ã¿è¾¼ã¿ã‚³ãƒžãƒ³ãƒ‰ã®æƒ…報を表示ã—ã¾ã™ã€‚\n" +" \n" +" 組ã¿è¾¼ã¿ã‚³ãƒžãƒ³ãƒ‰ã«é–¢ã™ã‚‹ç°¡æ½”ãªè¦ç´„を表示ã—ã¾ã™ã€‚ã‚‚ã— PATTERN ãŒ\n" +" 指定ã•れãŸå ´åˆã¯ã€PATTERN ã«ä¸€è‡´ã™ã‚‹å…¨ã¦ã®ã‚³ãƒžãƒ³ãƒ‰ã«å¯¾ã™ã‚‹è©³ç´°ãª\n" +" ヘルプを表示ã—ã¾ã™ã€‚ãれ以外ã¯ãƒ˜ãƒ«ãƒ—トピックを表示ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -d\tå„ヘルプトピックã«å¯¾ã—ã¦çŸ­ã„説明を出力ã—ã¾ã™\n" +" -m\t使用法を擬似的㪠man ページ形å¼ã§è¡¨ç¤ºã—ã¾ã™\n" +" -s\t一致ã—ãŸå„トピックã«å¯¾ã—ã¦ç°¡å˜ãªä½¿ç”¨æ³•ã®ã¿ã‚’表示ã—ã¾ã™\n" +" \tPATTERN\n" +" \n" +" 引数:\n" +" PATTERN\tヘルプトピックを指定ã™ã‚‹ãƒ‘ターン\n" +" \n" +" 終了ステータス:\n" +" PATTERN ãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ç„¡åйãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾" +"ã™ã€‚" + +#: builtins.c:842 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"ヒストリ一覧を表示ã¾ãŸã¯æ“作ã—ã¾ã™ã€‚\n" +" \n" +" 行番å·ã‚’ã¤ã‘ã¦ãƒ’ストリを表示ã—ã¾ã™ã€‚æ“作ã—ãŸå„é …ç›®ã«ã¯å‰ã«`*'ãŒä»˜ãã¾" +"ã™ã€‚\n" +" 引数 N ãŒã‚ã‚‹å ´åˆã¯æœ€å¾Œã® N 個ã®é …ç›®ã®ã¿ã‚’表示ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -c\tヒストリ一覧ã‹ã‚‰å…¨ã¦ã®é …目を削除ã—ã¾ã™ã€‚\n" +" -d offset\tOFFSET 番目ã®ãƒ’ストリ項目を削除ã—ã¾ã™ã€‚\n" +" \n" +" -a\tã“ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‹ã‚‰ãƒ’ストリファイルã«è¡Œã‚’追加ã—ã¾ã™\n" +" -n\tヒストリファイルã‹ã‚‰ã¾ã èª­ã¿è¾¼ã¾ã‚Œã¦ã„ãªã„行を全ã¦èª­ã¿è¾¼ã¿ã¾ã™\n" +" -r\tヒストリファイルを読ã¿è¾¼ã¿ã€å†…容をヒストリ一覧ã«è¿½åŠ ã—ã¾ã™\n" +" -w\tç¾åœ¨ã®ãƒ’ã‚¹ãƒˆãƒªã‚’ãƒ’ã‚¹ãƒˆãƒªãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ãè¾¼ã¿ã¾ã™ã€‚ãã—ã¦ãれらを\n" +" \tヒストリ一覧ã«è¿½åŠ ã—ã¾ã™\n" +" \n" +" -p\tå„ ARG ã«å¯¾ã—ã¦ãƒ’ストリ展開を実行ã—ã€çµæžœã‚’ヒストリ一覧ã«è¿½åŠ ã—\n" +" \tã—ãªã„ã§è¡¨ç¤ºã—ã¾ã™\n" +" -s\tARG ã‚’å˜ä¸€ã®é …ç›®ã¨ã—ã¦ãƒ’ストリ一覧ã«è¿½åŠ ã—ã¾ã™\n" +" \n" +" FILENAME を与ãˆãŸå ´åˆã€FILENAME ãŒãƒ’ストリファイルをã—ã¦ä½¿ç”¨ã•れã¾ã™ã€‚ã" +"れãŒ\n" +" ç„¡ãã€$HISTFILE ã«å€¤ãŒã‚ã‚‹å ´åˆãã®å€¤ãŒä½¿ç”¨ã•れã¾ã™ã€‚ãã†ã§ãªã‘れ㰠\n" +" ~/.bash_history ãŒä½¿ç”¨ã•れã¾ã™ã€‚\n" +"\n" +" ã‚‚ã— $HISTTIMEFORMAT 変数ãŒè¨­å®šã•れã€NULL ã§ç„¡ã‘れã°ã€strftime(3) ã®æ›¸" +"å¼\n" +" 文字列ã¨ã—ã¦å„ãƒ’ã‚¹ãƒˆãƒªé …ç›®ã®æ™‚刻を表示ã™ã‚‹éš›ã«ä½¿ç”¨ã•れã¾ã™ã€‚ãれ以外ã¯\n" +" 時刻ã¯è¡¨ç¤ºã•れã¾ã›ã‚“。\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:879 +#, fuzzy +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"ジョブã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’表示ã—ã¾ã™ã€‚\n" +" \n" +" アクティブãªã‚¸ãƒ§ãƒ–を一覧表示ã—ã¾ã™ã€‚JOBSPEC ã¯ã‚¸ãƒ§ãƒ–ã®å‡ºåŠ›ã‚’åˆ¶é™ã—ã¾" +"ã™ã€‚\n" +" オプションãŒãªã„å ´åˆå…¨ã¦ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªã‚¸ãƒ§ãƒ–ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãŒè¡¨ç¤ºã•れã¾" +"ã™ã€‚\n" +" \n" +" オプション:\n" +" -l\té€šå¸¸ã®æƒ…å ±ã«åŠ ãˆã¦ãƒ—ロセスIDを一覧表示ã™ã‚‹\n" +" -n\t最後ã®é€šçŸ¥ã‹ã‚‰ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãŒå¤‰æ›´ã«ãªã£ãŸãƒ—ロセスã®ã¿ä¸€è¦§è¡¨ç¤º\n" +" \tã™ã‚‹\n" +" -p\tプロセスIDã®ã¿ã‚’一覧表示ã™ã‚‹\n" +" -r\t実行中ã®ã‚¸ãƒ§ãƒ–ã®å‡ºåŠ›ã‚’åˆ¶é™ã™ã‚‹\n" +" -s\tåœæ­¢ä¸­ã®ã‚¸ãƒ§ãƒ–ã®å‡ºåŠ›ã‚’åˆ¶é™ã™ã‚‹\n" +" \n" +" -x ãŒæŒ‡å®šã•れãŸå ´åˆã€ COMMAND 㯠ARGS ã«ç¾ã‚Œã‚‹ã‚¸ãƒ§ãƒ–をプロセスグルー\n" +" プリーダーã®ãƒ—ロセス ID ã«ç½®ãæ›ãˆãŸå…¨ã¦ã®ã‚¸ãƒ§ãƒ–指定ã®å¾Œã«å®Ÿè¡Œã•れã¾" +"ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚\n" +" ã‚‚ã— -x ãŒä½¿ç”¨ã•れãŸå ´åˆã€COMMAND ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚" + +#: builtins.c:906 +#, fuzzy +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"ç¾åœ¨ã®ã‚·ã‚§ãƒ«ã‹ã‚‰ã‚¸ãƒ§ãƒ–を削除ã—ã¾ã™ã€‚\n" +" \n" +" アクティブãªã‚¸ãƒ§ãƒ–ã®ãƒ†ãƒ¼ãƒ–ルã‹ã‚‰å„引数㮠JOBSPEC を削除ã—ã¾ã™ã€‚JOBSPEC ãŒ" +"指定\n" +" ã•れãªã„å ´åˆã€ã‚·ã‚§ãƒ«ãŒç¾åœ¨ã®ã‚¸ãƒ§ãƒ–ã¨è€ƒãˆã¦ã„ã‚‹ã‚‚ã®ãŒä½¿ç”¨ã•れã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -a\tJOBSPEC ãŒä¸Žãˆã‚‰ã‚Œãªã„時ã«å…¨ã¦ã®ã‚¸ãƒ§ãƒ–を削除ã™ã‚‹\n" +" -h\tシェル㌠SIGHUP ã‚’å—ã‘å–ã£ãŸæ™‚ã«å„ JOBSPEC ã®ã‚¸ãƒ§ãƒ–ã«å¯¾ã—㦠" +"SIGHUP \n" +" \tãŒé€ã‚‰ã‚Œãªã„よã†ã«ãƒžãƒ¼ã‚¯ã™ã‚‹\n" +" -r\t実行中ã®ã‚¸ãƒ§ãƒ–ã®ã¿å‰Šé™¤ã™ã‚‹\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ション㋠JOBSPEC ãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:925 +#, fuzzy +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"ジョブã«ã‚·ã‚°ãƒŠãƒ«ã‚’é€ã‚Šã¾ã™ã€‚\n" +" \n" +" PID ã¾ãŸã¯ JOBSPEC ã§è­˜åˆ¥ã•れるプロセス㫠SIGSPEC ã¾ãŸã¯ SIGNUM ã§å付ã‘" +"ら\n" +" れるシグナルをé€ã‚Šã¾ã™ã€‚ã‚‚ã— SIGSPEC ã‚‚ SIGNUM も指定ã•れãªã„å ´åˆã€" +"SIGTERM\n" +" ã¨è¦‹ãªã•れã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -s sig\tSIG をシグナルåã¨ã™ã‚‹\n" +" -n sig\tSIG をシグナル番å·ã¨ã™ã‚‹\n" +" -l\tシグナルåを一覧表示ã™ã‚‹ã€‚-l ã®å¾Œã«å¼•æ•°ãŒç¶šã„ãŸå ´åˆã€\n" +" \tãれらã¯ä¸€è¦§è¡¨ç¤ºã•れるã¹ãシグナル番å·ã§ã‚ã‚‹ã¨è¦‹ãªã•れる\n" +" \n" +" Kill ã¯æ¬¡ã®2ã¤ã®ç†ç”±ã‹ã‚‰ã‚·ã‚§ãƒ«çµ„ã¿è¾¼ã¿é–¢æ•°ã§ã™ã€‚一ã¤ã¯ãƒ—ロセスIDã®ä»£ã‚り" +"ã«\n" +" ジョブIDを使用ã§ãるよã†ã«ã™ã‚‹ãŸã‚ã§ã™ã€‚ã‚‚ã†ä¸€ã¤ã¯ä½œæˆã—ãŸãƒ—ロセスãŒåˆ¶é™" +"ã«\n" +" é”ã—ãŸæ™‚ã«ãƒ—ロセスを kill ã™ã‚‹ã“ã¨ãŒã§ãるよã†ã«ã™ã‚‹ãŸã‚ã§ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"æ•°å¼ã‚’評価ã—ã¾ã™ã€‚\n" +" \n" +" å„ ARG ã‚’æ•°å¼ã¨ã—ã¦è©•価ã—ã¾ã™ã€‚評価ã¯å›ºå®šé•·ã®æ•´æ•°ã¨ã—ã¦è¡Œã‚ã‚Œã€æ¡æº¢ã‚Œã¯\n" +" 検査ã•れã¾ã›ã‚“。ã—ã‹ã—ã€0 ã«ã‚ˆã‚‹é™¤ç®—ã¯æ•æ‰ã•れエラーã¨ã—ã¦ãƒ•ラグãŒ\n" +" ç«‹ã¡ã¾ã™ã€‚æ¬¡ã®æ¼”ç®—å­ä¸€è¦§ã¯åŒä¸€å„ªå…ˆé †ä½ã®æ¼”ç®—å­ã”ã¨ã«ã‚°ãƒ«ãƒ¼ãƒ—化ã•れã¦ã„\n" +" ã¾ã™ã€‚優先順ä½ã¯é™é †ã«ãªã£ã¦ã„ã¾ã™ã€‚\n" +" \n" +" \tid++, id--\t変数ã®å¾Œç½®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã€ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆ\n" +" \t++id, --id\t変数ã®å‰ç½®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã€ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆ\n" +" \t-, +\t\tå˜é …マイナスã€ãƒ—ラス\n" +" \t!, ~\t\tè«–ç†ãŠã‚ˆã³ãƒ“ットå¦å®š\n" +" \t**\t\t指数演算\n" +" \t*, /, %\t\tä¹—ç®—ã€é™¤ç®—ã€å‰°ä½™æ¼”ç®—\n" +" \t+, -\t\tåŠ ç®—ã€æ¸›ç®—\n" +" \t<<, >>\t\tå·¦ãŠã‚ˆã³å³ãƒ“ットシフト\n" +" \t<=, >=, <, >\t比較\n" +" \t==, !=\t\t等価ã€ä¸ç­‰ä¾¡\n" +" \t&\t\tビット論ç†ç©\n" +" \t^\t\tビット排他的論ç†å’Œ\n" +" \t|\t\tビット論ç†å’Œ\n" +" \t&&\t\tè«–ç†ç©\n" +" \t||\t\tè«–ç†å’Œ\n" +" \texpr ? expr : expr\n" +" \t\t\tæ¡ä»¶æ¼”ç®—å­\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\t代入\n" +" \n" +" シェル変数ã¯è¢«æ¼”ç®—å­ã¨ã—ã¦ä½¿ç”¨ã§ãã¾ã™ã€‚変数åã¯æ•°å¼å†…ã§ (強制的ã«å›ºå®š" +"é•·\n" +" æ•´æ•°ã®) 値ã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚å¤‰æ•°ã¯æ•°å¼å†…ã§ä½¿ç”¨ã™ã‚‹æ™‚ã«ã¯å¿…ãšã—ã‚‚\n" +" 整数属性をæŒã£ã¦ã„ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。\n" +"\n" +" 演算å­ã¯å„ªå…ˆé †ä½ã®é †ã«è©•価ã•れã¾ã™ã€‚å°æ‹¬å¼§ã§ããã‚‰ã‚ŒãŸæ•°å¼ã¯å…ˆã«è©•価ã•" +"れã€\n" +" 上記ã®å„ªå…ˆé †ä½ã‚’上書ãã™ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。\n" +" \n" +" 終了ステータス:\n" +" ARG ã®æœ€çµ‚çš„ãªè©•価値㌠0 ã®å ´åˆ let 㯠1 ã‚’è¿”ã—ã¾ã™ã€‚ãれ以外ã®å ´åˆã¯\n" +" let 㯠0 ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:994 +#, fuzzy +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"標準入力ã‹ã‚‰ä¸€è¡Œèª­ã¿è¾¼ã¿ãƒ•ィールド毎ã«åˆ†å‰²ã—ã¾ã™ã€‚\n" +" \n" +" 標準入力ã‹ã‚‰ä¸€è¡Œèª­ã¿è¾¼ã¿ã¾ã™ã€‚ã¾ãŸã¯ -u ãŒæŒ‡å®šã•れã¦ã„ã‚‹å ´åˆã¯ãƒ•ァイル記" +"è¿°å­\n" +" FD ã‹ã‚‰èª­ã¿è¾¼ã¿ã¾ã™ã€‚行ã¯å˜èªžåˆ†å‰²ã«ã‚ˆã£ã¦ãƒ•ィールドã«åˆ†å‰²ã•ã‚Œã€æœ€åˆã®å˜èªž" +"ãŒ\n" +" 最åˆã® NAME ã«ã€2番目ã®å˜èªžãŒ2番目㫠NAME ã«ã¨ã„ã†é †ã§å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚" +"残ã£\n" +" ãŸå˜èªžã¯å…¨ã¦æœ€å¾Œã® NAME ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚変数 $IFS ã«è¨­å®šã•ã‚ŒãŸæ–‡å­—ã®" +"ã¿ãŒ\n" +" å˜èªžã®åŒºåˆ‡ã‚Šã¨ã—ã¦èªè­˜ã•れã¾ã™ã€‚\n" +" \n" +" ã‚‚ã— NAME を指定ã—ãªã‹ã£ãŸå ´åˆã€è¡Œã¯ REPLY 変数ã«ä¿å­˜ã•れã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -a array\t読ã¿è¾¼ã‚“ã å˜èªžã‚’インデックス型é…列 ARRAY ã«é †ç•ªã«å‰²ã‚Šå½“ã¦ã¾" +"ã™ã€‚\n" +" \t\t開始番å·ã¯ 0 ã§ã™ã€‚\n" +" -d delim\t改行ã§ã¯ãªã文字 DELIM ãŒæœ€åˆã«ç¾ã‚Œã‚‹ã¾ã§èª­ã¿è¾¼ã¿ã‚’ç¶šã‘ã¾ã™\n" +" -e\t\t対話的シェルã§è¡Œã‚’å¾—ã‚‹ã®ã« Readline を使用ã—ã¾ã™\n" +" -i text\tReadline ã®åˆæœŸãƒ†ã‚­ã‚¹ãƒˆã¨ã—㦠TEXT を使用ã—ã¾ã™\n" +" -n nchars\t改行ãŒç„¡ãã¦ã‚‚文字数 NCHARS を読ã¿è¾¼ã‚“ã ã‚‰å¾©å¸°ã—ã¾ã™ã€‚" +"NCHARS\n" +" \t\tよりå‰ã«åŒºåˆ‡ã‚Šæ–‡å­— (DELIMITER) ãŒç¾ã‚ŒãŸå ´åˆã¯åŒºåˆ‡ã‚Šæ–‡å­—ãŒ\n" +" \t\t優先ã•れã¾ã™\n" +" -N nchars\tåŽ³å¯†ã«æ–‡å­—æ•° NCHARS を読ã¿è¾¼ã¿å¾©å¸°ã—ã¾ã™ã€‚ãŸã ã—ã€ãƒ•ァイル" +"終\n" +" \t\t了(EOF) ã«ãªã‚‹ã‹èª­ã¿è¾¼ã¿ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆãŒç™ºç”Ÿã—ãŸå ´åˆã¯é™¤ãã¾ã™ã€‚\n" +" \t\t区切り文字 (DELIMITER) ã¯ç„¡è¦–ã•れã¾ã™\n" +" -p prompt\t読ã¿è¾¼ã¿å‰ã«æ–‡å­—列 PROMPT を後ã‚ã«æ”¹è¡Œã‚’付ã‘ãªã„ã§è¡¨ç¤ºã—ã¾" +"ã™\n" +" -r\t\tãƒãƒƒã‚¯ã‚¹ãƒšãƒ¼ã‚¹ã§æ–‡å­—をエスケープã™ã‚‹ã“ã¨ã‚’ç¦æ­¢ã—ã¾ã™\n" +" -s\t\t端末ã‹ã‚‰èª­ã¿è¾¼ã¾ã‚Œã‚‹æ–‡å­—をエコーãƒãƒƒã‚¯ã—ã¾ã›ã‚“\n" +" -t timeout\tTIMEOUT 秒以内ã«å…¥åŠ›è¡ŒãŒå®Œå…¨ã«èª­ã¿è¾¼ã¾ã‚Œãªã‹ã£ãŸå ´åˆ\n" +" \t\tタイムアウトを発生ã•ã›å¤±æ•—ã¨ã—ã¦å¾©å¸°ã—ã¾ã™ã€‚TMOUT 変数ã®å€¤ãŒ\n" +" \t\tデフォルトã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã§ã™ã€‚TIMEOUT ã‚’å°æ•°ã«ã™ã‚‹ã“ã¨ã‚‚ã§ã\n" +" \t\tã¾ã™ã€‚ã‚‚ã— TIMEOUT ㌠0 ã®å ´åˆã€read ã¯ä½•ã®ãƒ‡ãƒ¼ã‚¿ã‚‚読ã¿è¾¼ã¾\n" +" \t\tãšã«ç›´ã¡ã«çµ‚了ã—ã€æŒ‡å®šã—ãŸãƒ•ァイル記述å­ã§å…¥åŠ›ãŒä½¿ç”¨å¯èƒ½ãªå ´\n" +" \t\tåˆã®ã¿æˆåŠŸè¿”ã—ã¾ã™ã€‚タイムアウト発生時ã®çµ‚了ステータスã¯128\n" +" \t\tより大ãããªã‚Šã¾ã™\n" +" -u fd\t\t読ã¿è¾¼ã¿ã«æ¨™æº–入力ã§ã¯ãªããƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­ FD を使用ã—ã¾ã™\n" +" \n" +" 終了ステータス:\n" +" ファイル終了(EOF)ã€èª­ã¿è¾¼ã¿ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆ(ã“ã®å ´åˆã¯128以上)ã€å¤‰æ•°ã¸ã®ä»£å…¥" +"エ\n" +" ラーãŒç™ºç”Ÿã€ -u ã«ç„¡åйãªãƒ•ァイル記述å­ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã‚’除ã0ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"シェル関数ã‹ã‚‰å¾©å¸°ã—ã¾ã™ã€‚\n" +" \n" +" N ã§æŒ‡å®šã—ãŸå€¤ã‚’戻り値ã¨ã—ã¦é–¢æ•°ã¾ãŸã¯ source ã•れãŸã‚¹ã‚¯ãƒªãƒ—トを終了ã—ã¾" +"ã™ã€‚\n" +" N ãŒæŒ‡å®šã•れãªã„å ´åˆã€é–¢æ•°ã¾ãŸã¯ã‚¹ã‚¯ãƒªãƒ—ãƒˆã§æœ€å¾Œã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®æˆ»ã‚Š" +"値\n" +" ãŒä½¿ç”¨ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 戻り値 Nã€ã¾ãŸã¯ã‚·ã‚§ãƒ«ãŒé–¢æ•°ã¾ãŸã¯ã‚¹ã‚¯ãƒªãƒ—トを実行ã—ã¦ã„ãªã„å ´åˆã¯å¤±æ•—" +"ã‚’\n" +" è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1054 +#, fuzzy +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"シェルオプションやä½ç½®ãƒ‘ラメーターã®å€¤ã‚’設定・消去ã—ã¾ã™\n" +" \n" +" シェル属性やä½ç½®ãƒ‘ラメーターã®å€¤ã‚’変更ã€ã¾ãŸã¯ã‚·ã‚§ãƒ«å¤‰æ•°ã®åå‰ã¨å€¤\n" +" を表示ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -a 変数を変更ã¾ãŸã¯å¤‰æ›´ã—ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã™ã‚‹ã‚ˆã†ã«ãƒžãƒ¼ã‚¯ã™ã‚‹\n" +" -b ã‚¸ãƒ§ãƒ–çµ‚äº†ã‚’å³æ™‚通知ã™ã‚‹\n" +" -e コマンドã®çµ‚了ステータス㌠0 以外ã®å ´åˆã¯å³æ™‚終了ã™ã‚‹\n" +" -f ファイルåç”Ÿæˆ (globbing) を無効ã«ã™ã‚‹\n" +" -h 検索ã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ä½ç½®ã‚’記憶ã™ã‚‹\n" +" -k å…¨ã¦ã®å€¤ã‚’設定ã™ã‚‹å¼•æ•°ãŒã‚³ãƒžãƒ³ãƒ‰å®Ÿè¡Œæ™‚ã®ç’°å¢ƒã«é…ç½®ã•れる。コ\n" +" マンドåã®å‰ã«ã‚ã‚‹ã‚‚ã®ã«é™ã‚‰ãªã„\n" +" -m ジョブ制御を有効ã«ã™ã‚‹\n" +" -n コマンドを読ã¿è¾¼ã‚€ãŒå®Ÿè¡Œã—ãªã„\n" +" -o option-name\n" +" option-name ã«å¯¾å¿œã—ãŸå¤‰æ•°ã‚’設定ã™ã‚‹:\n" +" allexport -a ã¨åŒæ§˜\n" +" braceexpand -B ã¨åŒæ§˜\n" +" emacs emacs スタイルã®è¡Œç·¨é›†ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースを使用\n" +" errexit -e ã¨åŒæ§˜\n" +" errtrace -E ã¨åŒæ§˜\n" +" functrace -T ã¨åŒæ§˜\n" +" hashall -h ã¨åŒæ§˜\n" +" histexpand -H ã¨åŒæ§˜\n" +" history コマンドヒストリを有効ã«ã™ã‚‹\n" +" ignoreeof ファイル終了 (EOF) 読ã¿è¾¼ã¿æ™‚ã«ã‚·ã‚§ãƒ«ã‚’終了\n" +" ã—ãªã„\n" +" interactive-comments\n" +" 対話コマンドã§ã‚³ãƒ¡ãƒ³ãƒˆã®ä½¿ç”¨ã‚’許å¯ã™ã‚‹\n" +" keyword -k ã¨åŒæ§˜\n" +" monitor -m ã¨åŒæ§˜\n" +" noclobber -C ã¨åŒæ§˜\n" +" noexec -n ã¨åŒæ§˜\n" +" noglob -f ã¨åŒæ§˜\n" +" nolog å—ã‘付ã‘られるãŒç„¡è¦–ã•れる\n" +" notify -b ã¨åŒæ§˜\n" +" nounset -u ã¨åŒæ§˜\n" +" onecmd -t ã¨åŒæ§˜\n" +" physical -P ã¨åŒæ§˜\n" +" pipefail ãƒ‘ã‚¤ãƒ—ãƒ©ã‚¤ãƒ³ã®æˆ»ã‚Šå€¤ã‚’最後㫠0 以外ã§çµ‚了ã—ãŸã‚³" +"マ\n" +" ンドã®çµ‚了ステータスã«ã™ã‚‹ã€‚0 以外ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã§\n" +" 終了ã—ãŸã‚³ãƒžãƒ³ãƒ‰ãŒç„¡ã„å ´åˆã«ã¯ 0 ã«ã™ã‚‹ã€‚\n" +" posix Posix 標準ã¨ãƒ‡ãƒ•ォルト動作ãŒç•°ãªã‚‹ bash ã®å‹•作を\n" +" Posix ã¨ä¸€è‡´ã™ã‚‹ã‚ˆã†ã«ã™ã‚‹\n" +" privileged -p ã¨åŒæ§˜\n" +" verbose -v ã¨åŒæ§˜\n" +" vi vi スタイルã®è¡Œç·¨é›†ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースを使用ã™ã‚‹\n" +" xtrace -x ã¨åŒæ§˜\n" +" -p 実 uid ã¨å®Ÿåй uid ãŒç•°ãªã‚‹æ™‚ã«å¸¸ã«ã‚ªãƒ³ã«ãªã‚‹ã€‚$ENV ファイルã®å‡¦ç†\n" +" ãŠã‚ˆã³ã‚·ã‚§ãƒ«é–¢æ•°ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆãŒç„¡åйã«ãªã‚‹ã€‚ã“ã®ã‚ªãƒ—ションをオフã«\n" +" ã™ã‚‹ã¨å®Ÿåй uid, gid ãŒå®Ÿ uid, gid ã¨åŒã˜ã«è¨­å®šã•れる\n" +" -t 一ã¤ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’読ã¿è¾¼ã¿ã€å®Ÿè¡Œã—ãŸå¾Œã«çµ‚了ã™ã‚‹\n" +" -u 代入時ã«å¤‰æ•°ã‚’未設定ã«ã™ã‚‹ã¨ã‚¨ãƒ©ãƒ¼ã¨ã—ã¦æ‰±ã†\n" +" -v シェルã®å…¥åŠ›è¡Œã‚’èª­ã¿è¾¼ã‚“ã é€šã‚Šã«è¡¨ç¤ºã™ã‚‹\n" +" -x 実行ã•れるコマンドã¨å¼•æ•°ã‚’ãã®é€šã‚Šã«è¡¨ç¤ºã™ã‚‹\n" +" -B 中括弧ã®å±•開をシェルã§è¡Œã†\n" +" -C 設定ã—ãŸå ´åˆã€ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§æ—¢å­˜ã®é€šå¸¸ãƒ•ァイルを上書ãã™ã‚‹ã“ã¨ã‚’\n" +" ç¦æ­¢ã™ã‚‹\n" +" -E 設定ã—ãŸå ´åˆ ERR トラップãŒã‚·ã‚§ãƒ«é–¢æ•°ã«ç¶™æ‰¿ã•れる\n" +" -H ! スタイルã®ãƒ’ストリ置æ›ã‚’有効ã«ã™ã‚‹ã€‚ã“ã®ãƒ•ラグã¯å¯¾è©±çš„シェルã§\n" +" ã¯ãƒ‡ãƒ•ォルトã§ã‚ªãƒ³ã«ãªã‚‹\n" +" -P 設定ã—ãŸå ´åˆã€ cd ãªã©ã®ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’変更ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã‚’\n" +" 実行ã—ãŸæ™‚ã«ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã‚’辿らãªã„\n" +" -T 設定ã—ãŸå ´åˆã€ DEBUG トラップãŒã‚·ã‚§ãƒ«é–¢æ•°ã«ç¶™æ‰¿ã•れる\n" +" -- ã“れ以é™ã®å¼•æ•°ã‚’ä½ç½®ãƒ‘ラメーターã¨ã—ã¦å‰²ã‚Šå½“ã¦ã‚‹ã€‚ã‚‚ã—ã“れ以é™ã®\n" +" 引数ãŒç„¡ã„å ´åˆã¯ä½ç½®ãƒ‘ラメーターã¯è¨­å®šè§£é™¤ã•れる\n" +" - ã“れ以é™ã®å¼•æ•°ã‚’ä½ç½®ãƒ‘ラメーターã¨ã—ã¦å‰²ã‚Šå½“ã¦ã‚‹ã€‚-x 㨠-v \n" +" オプションã¯ã‚ªãƒ•ã«ãªã‚‹\n" +" \n" +" - ã®ä»£ã‚り㫠+ を使用ã™ã‚‹ã¨ã€ãƒ•ラグãŒã‚ªãƒ•ã«ãªã‚Šã¾ã™ã€‚フラグã¯ã‚·ã‚§ãƒ«ã®èµ·\n" +" 動時ã«ã‚‚使用ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ç¾åœ¨ã®è¨­å®šã•れã¦ã„るフラグã®çµ„㯠$- ã§\n" +" 得られã¾ã™ã€‚残り㮠n 個ã®å¼•æ•° ARG ã¯ä½ç½®ãƒ‘ラメータã¨ã—ã¦$1, $2, .. $n\n" +" ã®é †ã«è¨­å®šã•れã¾ã™ã€‚ã‚‚ã—引数 ARG ãŒä¸Žãˆã‚‰ã‚Œãªã„å ´åˆã€å…¨ã¦ã®ã‚·ã‚§ãƒ«å¤‰æ•°ãŒ\n" +" 表示ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1139 +#, fuzzy +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"シェル変数ãŠã‚ˆã³é–¢æ•°ã®å€¤ãƒ»å±žæ€§ã‚’消去ã—ã¾ã™ã€‚\n" +" \n" +" å„ NAMEã«å¯¾ã—ã¦é–¢é€£ã™ã‚‹å€¤ã¾ãŸã¯é–¢æ•°ã‚’削除ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -f\tå„ NAME をシェル関数ã¨ã—ã¦æ‰±ã†\n" +" -v\tå„ NAME をシェル変数ã¨ã—ã¦æ‰±ã†\n" +" -n\tå„ NAME ã‚’åå‰å‚ç…§ã¨ã—ã¦æ‰±ã„ã€å¤‰æ•°è‡ªèº«ã‚’消去ã™ã‚‹ã€‚å‚ç…§ã¨ã—ã¦\n" +"\t\t評価ã¯ã—ãªã„。 \n" +" \n" +" オプションãŒç„¡ã„å ´åˆã€æœ€åˆã«å¤‰æ•°ã‚’消去ã—よã†ã¨è©¦ã¿ã¾ã™ã€‚失敗ã—ãŸå ´åˆã«" +"ã¯\n" +" 関数を消去ã—よã†ã¨è©¦ã¿ã¾ã™ã€‚\n" +" \n" +" ã„ãã¤ã‹ã®å¤‰æ•°ã¯æ¶ˆåŽ»ã§ãã¾ã›ã‚“。`readonly' ã‚‚å‚ç…§ã—ã¦ãã ã•ã„。\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ NAME ãŒèª­ã¿å–り専用ã®å ´åˆã‚’é™¤ãæˆåŠŸã‚’è¿”ã—" +"ã¾ã™ã€‚" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"シェル変数㫠export 属性を設定ã—ã¾ã™ã€‚\n" +" \n" +" å„ NAME ã«å¯¾ã—ã¦å¾Œã«ç¶šã‘ã¦å®Ÿè¡Œã•れるコマンドã®ç’°å¢ƒå¤‰æ•°ã¨ã—ã¦è‡ªå‹•çš„ã«\n" +" エクスãƒãƒ¼ãƒˆã•れるよã†ã«ãƒžãƒ¼ã‚¯ã—ã¾ã™ã€‚VALUE ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã¯ã‚¨ã‚¯ã‚¹\n" +" ãƒãƒ¼ãƒˆã™ã‚‹å‰ã«å€¤ã‚’設定ã—ã¾ã™ã€‚\n" +"\n" +" オプション:\n" +" -f\tシェル関数をå‚ç…§ã—ã¾ã™\n" +" -n\tå„ NAME ã«å¯¾ã—ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆå±žæ€§ã‚’削除ã—ã¾ã™\n" +" -p\tå…¨ã¦ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã•れãŸå¤‰æ•°ãƒ»é–¢æ•°ä¸€è¦§ã‚’表示ã—ã¾ã™\n" +" \n" +" 引数 `--' 以é™ã¯ã‚ªãƒ—ションã¨ã—ã¦å‡¦ç†ã•れã¾ã›ã‚“。\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€ç„¡åŠ¹ãª NAME ãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸ\n" +" ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1180 +#, fuzzy +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"シェル変数を変更ä¸å¯ã«ã—ã¾ã™ã€‚\n" +" \n" +" å„ NAME を読ã¿å–り専用ã«ã—ã¾ã™ã€‚ã“れら㮠NAME ã®å€¤ã¯ã“れ以é™ã®ä»£å…¥ã§\n" +" 変更ãŒã§ããªããªã‚Šã¾ã™ã€‚VALUE ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã€èª­ã¿å–り専用ã«ã™ã‚‹å‰\n" +" ã«å€¤ãŒè¨­å®šã•れã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -a\tインデックス型é…列変数を示ã—ã¾ã™\n" +" -A\t連想é…列変数を示ã—ã¾ã™\n" +" -f\tシェル関数を示ã—ã¾ã™\n" +" -p\tå…¨ã¦ã®èª­ã¿å–り専用変数・関数ã®ä¸€è¦§ã‚’表示ã—ã¾ã™ã€‚-fオプシ\n" +"\t\t ョンãŒã‚ã‚‹ã‹ãªã„ã‹ã§å‹•作ãŒå¤‰ã‚りã¾ã™ã€‚\n" +" \n" +" 引数 `--' ã¯ä»¥é™ã®ã‚ªãƒ—ション処ç†ã‚’無効ã«ã—ã¾ã™\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€ä¸Žãˆã‚‰ã‚ŒãŸ NAME ãŒç„¡åйãªå ´åˆã‚’é™¤ãæˆåŠŸ\n" +" ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"ä½ç½®ãƒ‘ラメーターをシフトã—ã¾ã™ã€‚\n" +" \n" +" ä½ç½®ãƒ‘ラメーターå $N+1,$N+2 ... ã‚’ $1,$2 ... ã«å¤‰æ›´ã—ã¾ã™ã€‚ \n" +" N ãŒä¸Žãˆã‚‰ã‚Œãªã‹ã£ãŸå ´åˆã€1 ã¨è¦‹ãªã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" NãŒè² ã®å€¤ã¾ãŸã¯ $# より大ãã„å ´åˆã‚’é™¤ãæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"ファイルを読ã¿è¾¼ã¿ç¾åœ¨ã®ã‚·ã‚§ãƒ«ã§ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚\n" +" \n" +" FILENAME を読ã¿è¾¼ã¿ç¾åœ¨ã®ã‚·ã‚§ãƒ«ã§ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚$PATH ã®é …ç›®ãŒ\n" +" FILENAME ãŒå«ã¾ã‚Œã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’見ã¤ã‘ã‚‹ãŸã‚ã«ä½¿ç”¨ã•れã¾ã™ã€‚引数\n" +" ARGUMENTS ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆ FILENAME を実行ã™ã‚‹éš›ã®ä½ç½®ãƒ‘ラメーターã¨\n" +" ã—ã¦ä½¿ç”¨ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" FILENAME ã§æœ€å¾Œã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚FILENAME ãŒ\n" +" 読ã¿è¾¼ã‚ãªã‹ã£ãŸå ´åˆã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"シェルã®å®Ÿè¡Œã‚’ä¸€æ™‚åœæ­¢ã—ã¾ã™ã€‚\n" +" \n" +" SIGCONT シグナルをå—ã‘å–ã‚‹ã¾ã§ã“ã®ã‚·ã‚§ãƒ«ã®å®Ÿè¡Œã‚’ä¸€æ™‚åœæ­¢ã—ã¾ã™ã€‚強制\n" +" オプションãŒç„¡ã„é™ã‚Šãƒ­ã‚°ã‚¤ãƒ³ã‚·ã‚§ãƒ«ã¯ä¸€æ™‚åœæ­¢ã§ãã¾ã›ã‚“。\n" +" \n" +" オプション:\n" +" -f\tシェルãŒãƒ­ã‚°ã‚¤ãƒ³ã‚·ã‚§ãƒ«ã ã¨ã—ã¦ã‚‚強制的ã«ä¸€æ™‚åœæ­¢ã™ã‚‹\n" +" \n" +" 終了ステータス:\n" +" ã‚¸ãƒ§ãƒ–åˆ¶å¾¡ãŒæœ‰åйã§ãªã„ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1261 +#, fuzzy +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"æ¡ä»¶å¼ã‚’評価ã—ã¾ã™ã€‚\n" +" \n" +" å¼ EXPR ã®çµæžœã«å¿œã˜ã¦ 0 (真ã€true) ã¾ãŸã¯ 1 (å½ã€false) ã‚’è¿”ã—ã¾ã™ã€‚\n" +" å¼ã¯å˜é …演算å­ã¾ãŸã¯äºŒé …演算å­ã§ã™ã€‚å˜é …演算å­ã¯ãƒ•ァイルã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹\n" +" を評価ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•れã¾ã™ã€‚文字列演算å­ã¨æ•°å€¤æ¯”較演算å­ã‚‚加ãˆã¦\n" +" 存在ã—ã¾ã™ã€‚\n" +" \n" +" ファイル演算å­:\n" +" \n" +" -a FILE ファイルãŒå­˜åœ¨ã™ã‚‹æ™‚ã«çœŸ(true)\n" +" -b FILE ファイルãŒãƒ–ロック特殊デãƒã‚¤ã‚¹ã®æ™‚ã«çœŸ(true)\n" +" -c FILE ファイルãŒã‚­ãƒ£ãƒ©ã‚¯ã‚¿ç‰¹æ®Šãƒ‡ãƒã‚¤ã‚¹ã®æ™‚ã«çœŸ(true)\n" +" -d FILE ファイルãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®æ™‚ã«çœŸ(true)\n" +" -e FILE ファイルãŒå­˜åœ¨ã™ã‚‹æ™‚ã«çœŸ(true)\n" +" -f FILE ファイルãŒå­˜åœ¨ã—ã€é€šå¸¸ãƒ•ã‚¡ã‚¤ãƒ«ã®æ™‚ã«çœŸ(true)\n" +" -g FILE ファイル㫠setgid ãŒè¨­å®šã•れã¦ã„る時ã«çœŸ(true)\n" +" -h FILE ファイルãŒã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã®æ™‚ã«çœŸ(true)\n" +" -L FILE ファイルãŒã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã®æ™‚ã«çœŸ(true)\n" +" -k FILE ファイル㫠sticky ビットãŒè¨­å®šã•れã¦ã„る時ã«çœŸ(true)\n" +" -p FILE ファイルãŒåå‰ä»˜ããƒ‘ã‚¤ãƒ—ã®æ™‚ã«çœŸ(true)\n" +" -r FILE ファイルãŒãƒ¦ãƒ¼ã‚¶ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¿å¯èƒ½ãªæ™‚ã«çœŸ(true)\n" +" -s FILE ファイルãŒå­˜åœ¨ã—ã€ã‹ã¤ç©ºãƒ•ァイルã§ãªã„å ´åˆã«çœŸ(true)\n" +" -S FILE ファイルãŒã‚½ã‚±ãƒƒãƒˆã®å ´åˆã«çœŸ(true)\n" +" -t FD FD(ファイル識別å­) ãŒç«¯æœ«ã«é–‹ã„ã¦ã„る時ã«çœŸ(true)\n" +" -u FILE ファイル㫠setuid ãŒè¨­å®šã•れã¦ã„る時ã«çœŸ(true)\n" +" -w FILE ファイルãŒãƒ¦ãƒ¼ã‚¶ã«å¯¾ã—ã¦æ›¸ãè¾¼ã¿å¯èƒ½ãªæ™‚ã«çœŸ(true)\n" +" -x FILE ファイルãŒãƒ¦ãƒ¼ã‚¶ã«å¯¾ã—ã¦å®Ÿè¡Œå¯èƒ½ãªæ™‚ã«çœŸ(true)\n" +" -O FILE ファイルをユーザãŒå®ŸåŠ¹çš„ã«æ‰€æœ‰ã•れã¦ã„る時ã«çœŸ(true)\n" +" -G FILE ファイルã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ãƒ¦ãƒ¼ã‚¶ãŒå®ŸåŠ¹çš„ã«æ‰€å±žã—ã¦ã„る時ã«çœŸ" +"(true)\n" +" -N FILE ファイルを最後ã«èª­ã¿è¾¼ã‚“ã ä»¥é™ã«å¤‰æ›´ã•れã¦ã„る時ã«çœŸ" +"(true)\n" +" \n" +" FILE1 -nt FILE2 file1 ㌠file2 より新ã—ã„æ™‚(更新時間ã«åŸºã¥ã)ã«çœŸ" +"(true)\n" +" \n" +" \n" +" FILE1 -ot FILE2 file1 ㌠file2 よりå¤ã„時ã«çœŸ(true)\n" +" \n" +" FILE1 -ef FILE2 file1 ㌠file2 ã«å¯¾ã™ã‚‹ãƒãƒ¼ãƒ‰ãƒªãƒ³ã‚¯ã®æ™‚ã«çœŸ(true)\n" +" \n" +" 文字列演算å­:\n" +" \n" +" -z STRING 文字列ãŒç©ºã®æ™‚ã«çœŸ(true)\n" +" \n" +" -n STRING\n" +" STRING 文字列ãŒç©ºã§ãªã„時ã«çœŸ(true)\n" +" \n" +" STRING1 = STRING2\n" +" 文字列ãŒåŒä¸€ã®æ™‚ã«çœŸ(true)\n" +" STRING1 != STRING2\n" +" 文字列ãŒåŒä¸€ã§ãªã„時ã«çœŸ(true)\n" +" STRING1 < STRING2\n" +" 辞書順㧠STRING1 ㌠STRING2 よりå‰ã®æ™‚ã«çœŸ(true)\n" +" STRING1 > STRING2\n" +" 辞書順㧠STRING1 ㌠STRING2 ã‚ˆã‚Šå¾Œã®æ™‚ã«çœŸ(true)\n" +" \n" +" ãã®ä»–演算å­:\n" +" \n" +" -o OPTION シェルオプション OPTION ãŒæœ‰åŠ¹ãªæ™‚ã«çœŸ(true)\n" +" -v VAR シェル変数 VAR ãŒè¨­å®šã•れã¦ã„る時ã«çœŸ(true)\n" +" -R VAR シェル変数 VAR ãŒè¨­å®šã•れã€åå‰å‚ç…§ã®æ™‚ã«çœŸ(true)\n" +" ! EXPR å¼ expr ãŒå½(fales)ã®æ™‚ã«çœŸ(true)\n" +" EXPR1 -a EXPR2 å¼ expr1 ãŠã‚ˆã³ expr2 ã®ä¸¡æ–¹ã¨ã‚‚真(true)ã®æ™‚ã«çœŸ(true)\n" +" EXPR1 -o EXPR2 å¼ expr1 ã¾ãŸã¯ expr2 ã®ã„ãšã‚Œã‹ãŒçœŸ(true)ã®æ™‚ã«çœŸ" +"(true)\n" +" \n" +" arg1 OP arg2 数値比較演算を行ãªã†ã€‚OP 㯠-eq, -ne, -lt, -le, -gt,\n" +" ã¾ãŸã¯ -ge ã®ã„ãšã‚Œã‹ã¨ãªã‚‹ã€‚\n" +" \n" +" 数値演算二項演算å­ã¯ ARG1 㨠ARG2 ã®é–¢ä¿‚ãŒãれãžã‚Œã€ç­‰ã—ã„(-eq)ã€\n" +" ç­‰ã—ããªã„(-ne)ã€ã‚ˆã‚Šå°ã•ã„(-lt)ã€ä»¥ä¸‹(-le)ã€ã‚ˆã‚Šå¤§ãã„(-gt)ã€ã¾ãŸã¯\n" +" 以上(-ge)ã®æ™‚ã«çœŸ(true)ã‚’è¿”ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" å¼ EXPR ã®è©•価値ãŒçœŸ(true)ã®æ™‚ã«æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚EXPR ã®è©•価値ãŒå½(false) " +"ã¾ãŸã¯\n" +" 引数ãŒç„¡åйãªå ´åˆã«å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"æ¡ä»¶å¼ã‚’評価ã—ã¾ã™ã€‚\n" +" \n" +" ã“れ㯠test 組ã¿è¾¼ã¿é–¢æ•°ã¨åŒç¾©èªžã§ã™ã€‚ãŸã ã—ã€æœ€å¾Œã®å¼•æ•°ã«é–‹å§‹ã®`['ã¨ä¸€" +"致\n" +" ã™ã‚‹ã‚ˆã†ã«æ–‡å­—`]'を与ãˆãªã‘れã°ã„ã‘ã¾ã›ã‚“。" + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"ãƒ—ãƒ­ã‚»ã‚¹ã®æ™‚間を表示ã—ã¾ã™ã€‚\n" +" \n" +" シェルã¨ãã®å­ãƒ—ロセスãŒä½¿ç”¨ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼æ™‚é–“ã¨ã‚·ã‚¹ãƒ†ãƒ æ™‚é–“ãれãžã‚Œã®ç´¯ç©" +"ã‚’\n" +" 表示ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" å¸¸ã«æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"シグナルã¾ãŸã¯ä»–ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’トラップã—ã¾ã™ã€‚\n" +" \n" +" シェルãŒã‚·ã‚°ãƒŠãƒ«ã‚’å—ã‘å–ã‚‹ã‹ä»–ã®æ¡ä»¶ãŒç™ºç”Ÿã—ãŸæ™‚ã«å®Ÿè¡Œã•れるãƒãƒ³ãƒ‰ãƒ©ãƒ¼" +"ã‚’\n" +" 定義ãŠã‚ˆã³æœ‰åŠ¹åŒ–ã—ã¾ã™ã€‚\n" +" \n" +" ARG ã¯ã‚·ã‚°ãƒŠãƒ« SIGNAL_SPEC ã‚’å—ã‘å–ã£ãŸæ™‚ã«èª­ã¿è¾¼ã¾ã‚Œå®Ÿè¡Œã•れるコマンド\n" +" ã§ã™ã€‚ã‚‚ã— ARG ãŒç„¡ã„ (ã‹ã¤ã‚·ã‚°ãƒŠãƒ« SIGNAL_SPEC ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆ) ã¾ãŸ" +"ã¯\n" +" `-' ã®å ´åˆã€å„指定ã—ãŸã‚·ã‚°ãƒŠãƒ«ã¯ã‚ªãƒªã‚¸ãƒŠãƒ«ã®å€¤ã«ãƒªã‚»ãƒƒãƒˆã•れã¾ã™ã€‚\n" +" ARG ㌠NULL 文字列ã®å ´åˆã€å„シグナル SIGNAL_SPEC ã¯ã‚·ã‚§ãƒ«ã«ãŠã‚ˆã³èµ·å‹•ã•\n" +" れãŸã‚³ãƒžãƒ³ãƒ‰ã«ã‚ˆã£ã¦ç„¡è¦–ã•れã¾ã™ã€‚\n" +" \n" +" ã‚‚ã— SIGNAL_SPEC ㌠EXIT (0) ã®å ´åˆã€ARG ãŒã‚·ã‚§ãƒ«ã®çµ‚了時ã«å®Ÿè¡Œã•れã¾" +"ã™ã€‚\n" +" ã‚‚ã— SIGNAL_SPEC ㌠DEBUG ã®å ´åˆ ARG ã¯å˜ã«æ¯Žå›žã‚³ãƒžãƒ³ãƒ‰ã®å‰ã«å®Ÿè¡Œã•れã¾" +"ã™ã€‚\n" +" ã‚‚ã— SIGNAL_SPEC ㌠RETURN ã®å ´åˆ ARG ã¯ã‚·ã‚§ãƒ«é–¢æ•°ã¾ãŸã¯ . ã‹ source ã«\n" +" よã£ã¦å®Ÿè¡Œã•れãŸã‚¹ã‚¯ãƒªãƒ—トãŒçµ‚了ã—ãŸæ™‚ã«å®Ÿè¡Œã•れã¾ã™ã€‚ SIGNAL_SPEC ㌠" +"ERR\n" +" ã®å ´åˆã€-e ã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒæœ‰åйãªå ´åˆã«ã‚·ã‚§ãƒ«ãŒçµ‚了ã™ã‚‹ã‚ˆã†ãªã‚³ãƒžãƒ³ãƒ‰å¤±æ•—ãŒ" +"発\n" +" 生ã™ã‚‹ãŸã³ã«å®Ÿè¡Œã•れã¾ã™ã€‚\n" +" \n" +" ã‚‚ã—引数ãŒä¸Žãˆã‚‰ã‚Œãªã„å ´åˆã€ trap ã¯å„シグナルã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸã‚³ãƒžãƒ³ãƒ‰" +"ã®\n" +" 一覧を表示ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -l\tシグナルåã¨ã‚·ã‚°ãƒŠãƒ«ç•ªå·ã®å¯¾å¿œä¸€è¦§ã‚’表示ã—ã¾ã™\n" +" -p\tå„ SIGNAL_SPEC ã«é–¢é€£ã¥ã‘られ㟠trap コマンドを表示ã—ã¾ã™\n" +" \n" +" å„ SIGNAL_SPEC 㯠ã«ã‚るシグナルåã‹ã‚·ã‚°ãƒŠãƒ«ç•ªå·ã§ã™ã€‚ã‚·ã‚°\n" +" ナルåã¯å¤§æ–‡å­—å°æ–‡å­—を区別ã—ã¾ã›ã‚“。ã¾ãŸ SIG 接頭辞ã¯ã‚ªãƒ—ションã§ã™ã€‚\n" +" シグナルã¯ã‚·ã‚§ãƒ«ã«å¯¾ã—㦠\"kill -signal $$\" ã§é€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" SIGSPEC ãŒç„¡åйã‹ã€ç„¡åйãªã‚ªãƒ—ションを与ãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1400 +#, fuzzy +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"コマンドã®ç¨®é¡žã«é–¢ã™ã‚‹æƒ…報を表示ã—ã¾ã™ã€‚\n" +" \n" +" å„ NAME ã«å¯¾ã—ã¦ã‚³ãƒžãƒ³ãƒ‰åã¨ã—ã¦ä½¿ã‚ã‚ŒãŸæ™‚ã«ã©ã®ã‚ˆã†ã«è§£é‡ˆã•れるã‹ã‚’\n" +" 示ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -a\tNAME ã¨ã„ã†åå‰ã«ãªã£ã¦ã„る実行å¯èƒ½ãªã‚‚ã®ã®å…¨ã¦ã®ä½ç½®ã‚’表示ã—\n" +" \tã¾ã™ã€‚ã“れã«ã¯ `-p' ãŒåŒæ™‚ã«æŒ‡å®šã•れã¦ã„ãªã„å ´åˆã«é™ã£ã¦ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã€\n" +" \t組ã¿è¾¼ã¿é–¢æ•°ã€ã‚·ã‚§ãƒ«é–¢æ•°ã‚‚å«ã¿ã¾ã™\n" +" -f\tã‚·ã‚§ãƒ«é–¢æ•°ã®æ¤œç´¢ã‚’抑止ã—ã¾ã™\n" +" -P\tå„ NAME ã«å¯¾ã—㦠PATH 探索を強制ã—ã¾ã™ã€‚エイリアスã€çµ„ã¿è¾¼ã¿\n" +" \t関数ã€ã‚·ã‚§ãƒ«é–¢æ•°ãŒã‚ã£ãŸã¨ã—ã¦ã‚‚実行ã•れるディスク上ã®ãƒ•ァイルåã‚’\n" +" \tè¿”ã—ã¾ã™\n" +" -p\t実行ã•れるディスク上ã®ãƒ•ァイルåã‚’è¿”ã—ã¾ã™ã€‚`type -t NAME'\n" +" \t㌠`file' ã‚’è¿”ã•ãªã„å ´åˆã€ä½•ã‚‚è¿”ã—ã¾ã›ã‚“。\n" +" -t\t次ã®ã„ãšã‚Œã‹ã®å˜èªžã‚’è¿”ã—ã¾ã™ã€‚`alias', `keyword', `function',\n" +" \t `builtin', `file' or `'。ãれãžã‚Œ NAME ãŒã‚¨ã‚¤ãƒªã‚¢ã‚¹ã€ã‚·ã‚§ãƒ«äºˆç´„語ã€\n" +" \tシェル関数ã€ã‚·ã‚§ãƒ«çµ„ã¿è¾¼ã¿é–¢æ•°ã€ãƒ‡ã‚£ã‚¹ã‚¯ä¸Šã®ãƒ•ァイルã€ä½•も見ã¤ã‹ã‚‰ãª" +"ã„\n" +" \tã«å¯¾å¿œã—ã¾ã™ã€‚\n" +" \n" +" 引数:\n" +" NAME\t解釈ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ã®åå‰ã§ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" å…¨ã¦ã® NAME ãŒè¦‹ã¤ã‹ã£ãŸå ´åˆã«æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚ã©ã‚Œã‹ãŒè¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸå ´" +"åˆ\n" +" ã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"シェルã®è³‡æºåˆ¶é™ã‚’変更ã—ã¾ã™ã€‚\n" +" \n" +" システムãŒã‚·ã‚§ãƒ«ã®è³‡æºåˆ¶å¾¡ã‚’æä¾›ã—ã¦ã„ã‚‹å ´åˆã€ã‚·ã‚§ãƒ«ã€ãŠã‚ˆã³ã‚·ã‚§ãƒ«ãŒç”Ÿ" +"æˆ\n" +" ã™ã‚‹ãƒ—ロセスã«å¯¾ã™ã‚‹è³‡æºã®åˆ¶å¾¡ã‚’行ã„ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -S\tç·©ã„ (soft) 資æºåˆ¶å¾¡ã‚’使用ã™ã‚‹\n" +" -H\t厳ã—ã„ (hard) 資æºåˆ¶å¾¡ã‚’使用ã™ã‚‹\n" +" -a\tç¾åœ¨ã®åˆ¶é™ã‚’表示ã™ã‚‹\n" +" -b\tソケットã®å¤§ãã•\n" +" -c\t作æˆã•ã‚Œã‚‹ã‚³ã‚¢ãƒ•ã‚¡ã‚¤ãƒ«ã®æœ€å¤§ã‚µã‚¤ã‚º\n" +" -d\tプロセスã®ãƒ‡ãƒ¼ã‚¿ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã®æœ€å¤§ã‚µã‚¤ã‚º\n" +" -e\tスケジューリング優先度 (`nice') ã®æœ€å¤§å€¤\n" +" -f\tシェルãŠã‚ˆã³ãã®å­ãƒ—ãƒ­ã‚»ã‚¹ãŒæ›¸ãè¾¼ã‚る最大ファイルサイズ\n" +" -i\tã‚·ã‚°ãƒŠãƒ«æŠ‘åˆ¶ã®æœ€å¤§æ•°\n" +" -l\tメモリ内ã«å›ºå®šã§ãã‚‹ãƒ—ãƒ­ã‚»ã‚¹ã®æœ€å¤§ã‚µã‚¤ã‚º\n" +" -m\tthe maximum resident set size\n" +" -n\té–‹ã‘るファイル記述å­ã®æœ€å¤§æ•°\n" +" -p\tパイプã®ãƒãƒƒãƒ•ァサイズ\n" +" -q\tPOSIX ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚­ãƒ¥ãƒ¼å†…ã®æœ€å¤§ãƒã‚¤ãƒˆæ•°\n" +" -r\tãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒªãƒ³ã‚°å„ªå…ˆåº¦ã®æœ€å¤§å€¤\n" +" -s\t最大スタックサイズ\n" +" -t\tCPU時間é‡ã®æœ€å¤§å€¤ (å˜ä½:ç§’)\n" +" -u\tãƒ¦ãƒ¼ã‚¶ãƒ—ãƒ­ã‚»ã‚¹ã®æœ€å¤§æ•°\n" +" -v\tä»®æƒ³ãƒ¡ãƒ¢ãƒªã®æœ€å¤§ã‚µã‚¤ã‚º\n" +" -x\tãƒ•ã‚¡ã‚¤ãƒ«ãƒ­ãƒƒã‚¯ã®æœ€å¤§æ•°\n" +" -T\tã‚¹ãƒ¬ãƒƒãƒ‰ã®æœ€å¤§æ•°\n" +" \n" +" ã™ã¹ã¦ã®ãƒ—ラットフォームã§ã™ã¹ã¦ã®ã‚ªãƒ—ションãŒåˆ©ç”¨å¯èƒ½ã¨ã¯é™ã‚Šã¾ã›ã‚“。\n" +" \n" +" LIMIT を指定ã—ãŸå ´åˆã€æŒ‡å®šã—ãŸè³‡æºã«æ–°ã—ã„値ãŒè¨­å®šã•れã¾ã™ã€‚`soft', \n" +" `hard' ãŠã‚ˆã³ `unlimited' ã¨ã„ã†ç‰¹åˆ¥ãªå€¤ã¯ç¾åœ¨ã®ç·©ã‚„ã‹ãªåˆ¶é™ã€ç¾åœ¨ã®\n" +" 厳ã—ã„制é™ã€ãŠã‚ˆã³ç„¡åˆ¶é™ã‚’æ„味ã—ã¾ã™ã€‚\n" +" LIMIT を指定ã—ãªã„å ´åˆã€æŒ‡å®šã—ãŸè³‡æºã®ç¾åœ¨ã®å€¤ã‚’表示ã—ã¾ã™ã€‚オプション" +"ã‚’\n" +" 指定ã—ãªã„å ´åˆã€-f ã¨è¦‹ãªã•れã¾ã™ã€‚\n" +" \n" +" -t ã¯ç§’å˜ä½ã€-p 㯠512ãƒã‚¤ãƒˆã”ã¨ã€-u ã¯ãƒ—ロセス数ã§ã‚りã€ãれ以外ã¯\n" +" 1024 ãƒã‚¤ãƒˆå˜ä½ã§ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションを与ãˆã‚‹ã‹ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚Šã€æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"ファイルã®ãƒ¢ãƒ¼ãƒ‰ãƒžã‚¹ã‚¯ã‚’表示ã¾ãŸã¯è¨­å®šã—ã¾ã™ã€‚\n" +" \n" +" ユーザーãŒãƒ•ã‚¡ã‚¤ãƒ«ä½œæˆæ™‚ã®ãƒžã‚¹ã‚¯ã‚’ MODE ã«è¨­å®šã—ã¾ã™ã€‚MODE ãŒæŒ‡å®šã•れãªã„" +"å ´åˆ\n" +" ç¾åœ¨ã®ãƒžã‚¹ã‚¯ã®å€¤ã‚’表示ã—ã¾ã™ã€‚\n" +" \n" +" MODE ãŒæ•°å€¤ã§é–‹å§‹ã—ãŸå ´åˆ8進数ã¨ã—ã¦è§£é‡ˆã•れã¾ã™ã€‚ãれ以外㯠chmod(1) ã§" +"å—ã‘\n" +" å…¥ã‚Œã‚‰ã‚Œã‚‹ã‚·ãƒ³ãƒœãƒ«ãƒ¢ãƒ¼ãƒ‰ã®æ–‡å­—列ã¨ã—ã¦æ‰±ã‚れã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -p\tMODE ãŒæŒ‡å®šã•れãªã„å ´åˆã€å…¥åŠ›ã¨ã—ã¦å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§è¡¨ç¤ºã—ã¾ã™\n" +" -S\tシンボルモードã§å‡ºåŠ›ã—ã¾ã™ã€‚ãれ以外ã¯8進数ã§å‡ºåŠ›ã—ã¾ã™\n" +" \n" +" 終了ステータス:\n" +" MODE ãŒç„¡åйã‹ã€ç„¡åйãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"ジョブã®å®Ÿè¡Œå®Œäº†ã‚’å¾…ã¡ã€çµ‚了ステータスを返ã—ã¾ã™ã€‚\n" +" \n" +" ID ã§è­˜åˆ¥ã•れるå„プロセス (プロセスID ã¾ãŸã¯ ジョブ指定) ã‚’å¾…ã¡ã€ãã®çµ‚" +"了\n" +" ステータスを返ã—ã¾ã™ã€‚ID ãŒä¸Žãˆã‚‰ã‚Œãªã„å ´åˆã€ç¾åœ¨ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªå…¨ã¦ã®å­ãƒ—\n" +" ロセスを待㡠0 ã‚’è¿”ã—ã¾ã™ã€‚ID ãŒã‚¸ãƒ§ãƒ–指定ã®å ´åˆã‚¸ãƒ§ãƒ–ã®ãƒ‘イプラインã«\n" +" ã‚ã‚‹å…¨ã¦ã®ãƒ—ロセスを待ã¡ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 最後㮠ID ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚IDãŒç„¡åйã§ã‚ã‚‹ã‹ã€ç„¡åйãªã‚ªãƒ—\n" +" ションãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã«ã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"プロセスã®å®Ÿè¡Œå®Œäº†ã‚’å¾…ã¡ã€çµ‚了ステータスを返ã—ã¾ã™ã€‚\n" +" \n" +" PIDã§æŒ‡å®šã•れãŸå„プロレスを待ã¡ã€ãã®çµ‚了ステータスを返ã—ã¾ã™ã€‚PID ãŒä¸Žãˆ" +"られ\n" +" ãªã„å ´åˆã€ç¾åœ¨ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªå…¨ã¦ã®å­ãƒ—ロセスを待ã¡ã€0 ã‚’è¿”ã—ã¾ã™ã€‚PID ã¯\n" +" プロセスIDã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“。\n" +" \n" +" 終了ステータス:\n" +" 最後㮠PID ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚PIDãŒç„¡åйã‹ã€ç„¡åйãªã‚ªãƒ—ションãŒä¸Ž" +"ãˆã‚‰ã‚ŒãŸ\n" +" å ´åˆã¯å¤±æ•—ã—ã¾ã™ã€‚" + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"リストã®å„è¦ç´ ã«å¯¾ã—ã¦ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚\n" +" \n" +" `for' ループã§ã¯ãƒªã‚¹ãƒˆã®å„è¦ç´ ã«å¯¾ã—ã¦ä¸€é€£ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚\n" +" `in WORDS ...;' ãŒå­˜åœ¨ã—ãªã„å ´åˆã€`in \"$@\"' ã§ã‚ã‚‹ã¨è¦‹ãªã•れã¾ã™ã€‚\n" +" WORDS ã®è¦ç´ ãŒ NAME ã®å€¤ã¨ã—ã¦ä»£å…¥ã•れ COMMANDS ãŒå®Ÿè¡Œã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"ç®—è¡“ for ループ\n" +" \n" +" 以下ã¨ç­‰ä¾¡ã§ã™ã€‚\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1ã€EXP2ã€ãŠã‚ˆã³ EXP3 ã¯æ•°å¼ã§ã™ã€‚ã„ãšã‚Œã‹ã®æ•°å¼ã‚’çœç•¥ã—ãŸå ´åˆã€\n" +" 値㌠1 ã§ã‚ã‚‹ã¨ã—ã¦è©•価ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"一覧ã‹ã‚‰é …ç›®ã‚’é¸æŠžã—ã€COMMANDS を実行ã—ã¾ã™ã€‚\n" +" \n" +" WORDS ãŒå±•é–‹ã•れã€é …ç›®ã®ä¸€è¦§ãŒç”Ÿæˆã•れã¾ã™ã€‚展開ã•れãŸé …ç›®\n" +" ã®çµ„ã¯æ¨™æº–エラー出力ã«è¡¨ç¤ºã•れã¾ã™ã€‚å„é …ç›®ã®å‰ã«ã¯æ•°å€¤ãŒä»˜ã‘\n" +" られã¾ã™ã€‚`in WORDS' ãŒå­˜åœ¨ã—ãªã„å ´åˆã€`in \"$@\"' ã¨ä»®å®šã•れã¾ã™ã€‚\n" +" 次㫠PS3 プロンプトãŒè¡¨ç¤ºã•ã‚Œã€æ¨™æº–入力ã‹ã‚‰ 1 行読ã¿è¾¼ã¾ã‚Œã¾ã™ã€‚\n" +" 行ãŒè¡¨ç¤ºã—ãŸé …ç›®ã®ä¸€ã¤ã«é–¢é€£ã¥ã‘ã‚‰ã‚ŒãŸæ•°å€¤ã§æ§‹æˆã•れã¦ã„ãŸå ´åˆã€\n" +" NAME ã«é …ç›®ãŒè¨­å®šã•れã¾ã™ã€‚空行ã®å ´åˆã€ãƒ—ロンプトãŒå†åº¦è¡¨ç¤ºã•れ\n" +" ã¾ã™ã€‚ファイル終了(EOF) ãŒèª­ã¿è¾¼ã¾ã‚ŒãŸå ´åˆã€ã‚³ãƒžãƒ³ãƒ‰ãŒçµ‚了ã—ã¾ã™ã€‚\n" +" ãれ以外ã®å ´åˆã¯ NAME ã« null ãŒè¨­å®šã•れã¾ã™ã€‚読ã¿è¾¼ã‚“ã è¡Œã¯å¤‰æ•°\n" +" REPLY ã«ä¿å­˜ã•れã¾ã™ã€‚行ãŒèª­ã¿è¾¼ã¾ã‚Œã‚‹ã”ã¨ã« break コマンドãŒå®Ÿ\n" +" 行ã•れるã¾ã§ COMMANDS ãŒç¹°ã‚Šè¿”ã—実行ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"パイプラインを実行ã™ã‚‹æ™‚ã«æ¶ˆè²»ã•ã‚ŒãŸæ™‚間を報告ã—ã¾ã™ã€‚\n" +" \n" +" PIPELINE を実行ã—ã€çµ‚了時㫠PIPELINE を実行ã™ã‚‹ãŸã‚ã«è²»ã‚„ã•れãŸå®Ÿ\n" +" 時間ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ CPU 時間ã€ãŠã‚ˆã³ã‚·ã‚¹ãƒ†ãƒ  CPU 時間ã®è¦ç´„を表示ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -p\tç§»æ¤æ€§ã®ã‚ã‚‹ Posix å½¢å¼ã§æ™‚é–“ã®è¦ç´„を表示ã—ã¾ã™\n" +" \n" +" 変数 TIMEFORMAT ã®å€¤ãŒå‡ºåŠ›ã®å½¢å¼ã¨ã—ã¦ä½¿ç”¨ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" PIPELINE ã®æˆ»ã‚Šå€¤ãŒçµ‚了ステータスã¨ãªã‚Šã¾ã™ã€‚" + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"パターン一致ã®çµæžœã«åŸºã¥ã„ã¦ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚\n" +" \n" +" WORD ㌠PATTERN ã«ä¸€è‡´ã™ã‚‹ã‹ã©ã†ã‹ã«åŸºã¥ã„ã¦é¸æŠžçš„ã« COMMANDS を実行ã—ã¾" +"ã™ã€‚\n" +" 複数ã®ãƒ‘ターンを区切るãŸã‚ã« `|' ãŒä½¿ç”¨ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"æ¡ä»¶ã«å¾“ã£ã¦ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚\n" +" \n" +" `if COMMANDS' を実行ã—ã¾ã™ã€‚ã“ã®çµ‚了ステータス㌠0 ã®å ´åˆã€`then " +"COMMANDS'\n" +" を実行ã—ã¾ã™ã€‚ãã†ã§ãªã„å ´åˆã¯ã€å„ `elif COMMANDS' を順番ã«å®Ÿè¡Œã—ã€ãã®\n" +" 終了ステータス㌠0 ã®å ´åˆã«ã€é–¢é€£ã—㟠`then COMMANDS' を実行ã—ã€if æ–‡ãŒ\n" +" 完了ã—ã¾ã™ã€‚ãれ以外ã®å ´åˆã€ `else COMMANDS' ãŒå­˜åœ¨ã™ã‚‹å ´åˆã«ã¯å®Ÿè¡Œã•れ\n" +" ã¾ã™ã€‚文全体ã®çµ‚了ステータスã¯ã€æœ€å¾Œã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了ステータス" +"ã‹ã€\n" +" ã¾ãŸã¯ã€ãƒ†ã‚¹ãƒˆã—ãŸæ¡ä»¶ã« true ã¨ãªã‚‹ã‚‚ã®ãŒç„¡ã„å ´åˆã¯ 0 ã§ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚" + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"ãƒ†ã‚¹ãƒˆãŒæˆåŠŸã™ã‚‹é™ã‚Šã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚\n" +" \n" +" `while' COMMANDS ã«ã‚る最後ã®ã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了ステータス㌠0 ã§ã‚ã‚‹é–“ \n" +" COMMANDS を展開ã—ã¦å®Ÿè¡Œã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"テストãŒå¤±æ•—ã™ã‚‹é™ã‚Šã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚\n" +" \n" +" `until' COMMANDS ã«ã‚る最後ã®ã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了ステータス㌠0 ã§ãªã„é–“\n" +" COMMANDS を展開ã—ã¦å®Ÿè¡Œã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1671 +#, fuzzy +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"NAME ã¨ã„ã†åå‰ã®éžåŒæœŸãƒ—ロセスを作æˆã—ã¾ã™ã€‚\n" +" \n" +" COMMAND ã‚’éžåŒæœŸã§å®Ÿè¡Œã—ã¾ã™ã€‚ã‚³ãƒžãƒ³ãƒ‰ã®æ¨™æº–出力ãŠã‚ˆã³æ¨™æº–入力ã¯å®Ÿè¡Œ\n" +" ã—ã¦ã„るシェルã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åž‹é…列変数 NAME ã®è¦ç´ æ·»å­— 0ã€1 ã«è¨­å®š\n" +" ã•れるファイル記述å­ã¸ã®ãƒ‘イプã¨ã—ã¦æŽ¥ç¶šã•れã¾ã™ã€‚\n" +" デフォルト㮠NAME 㯠\"COPROC\" ã§ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" COMMAND ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚" + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"シェル関数を定義ã—ã¾ã™ã€‚\n" +" \n" +" NAME ã¨ã„ã†åå‰ã®ã‚·ã‚§ãƒ«é–¢æ•°ã‚’作æˆã—ã¾ã™ã€‚å˜ã«ã‚³ãƒžãƒ³ãƒ‰ã¨ã—ã¦èµ·å‹•ã•ã‚ŒãŸæ™‚" +"ã¯\n" +" NAME 㯠COMMANDs をシェルã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆå†…ã§å‘¼ã³å‡ºã—ã¾ã™ã€‚NAME ã‚’èµ·å‹•ã—" +"ãŸ\n" +" 時ã«å¼•æ•°ã¯é–¢æ•°ã« $1...$n ã¨ã„ã†ä½ç½®ãƒ‘ラメーターã§ã€é–¢æ•°å㯠$FUNCNAME\n" +" 変数ã¨ã—ã¦æ¸¡ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" NAME ãŒèª­ã¿å–り専用ã§ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"複数ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’一ã¤ã«ã‚°ãƒ«ãƒ¼ãƒ—化ã—ã¾ã™ã€‚\n" +" \n" +" 複数ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’グループã«ã—ã¦1セットã¨ã—ã¦å®Ÿè¡Œã—ã¾ã™ã€‚ã“れã¯ã‚³ãƒžãƒ³ãƒ‰\n" +" ã®ã‚»ãƒƒãƒˆå…¨ä½“をリダイレクトã™ã‚‹ä¸€ã¤ã®æ–¹æ³•ã§ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"ジョブをフォアグラウンドã§å†é–‹ã—ã¾ã™ã€‚\n" +" \n" +" `fg' コマンドã®å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‹ JOB_SPEC ã¨ç­‰ä¾¡ã§ã™ã€‚åœæ­¢ã¾ãŸã¯\n" +" ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã®ã‚¸ãƒ§ãƒ–ã‚’å†é–‹ã—ã¾ã™ã€‚JOB_SPEC ã¯ã‚¸ãƒ§ãƒ–åã¾ãŸã¯\n" +" ジョブ番å·ã§æŒ‡å®šã—ã¾ã™ã€‚JOB_SPEC ã®å¾Œã« `&' ã‚’ç¶šã‘ã‚‹ã¨ã€`bg' ã®\n" +" 引数ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸã‚ˆã†ã«ã‚¸ãƒ§ãƒ–ã‚’ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã«ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" å†é–‹ã•れãŸã‚¸ãƒ§ãƒ–ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚" + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"ç®—è¡“å¼ã‚’評価ã—ã¾ã™ã€‚\n" +" \n" +" ç®—è¡“å¼ã®è¦å®šã«åŸºã¥ã„㦠EXPRESSION を評価ã—ã¾ã™ã€‚\"let EXPRESSION\"\n" +" ã¨ç­‰ä¾¡ã§ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" EXPRESSION ã®è©•価値㌠0 ã®å ´åˆã¯ 1ã€ãれ以外㯠0 ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"æ¡ä»¶å¼ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚\n" +" \n" +" æ¡ä»¶å¼ EXPRESSION ã®è©•ä¾¡çµæžœã«åŸºã¥ã„㦠0 ã¾ãŸã¯ 1 ã‚’è¿”ã—ã¾ã™ã€‚\n" +" æ¡ä»¶å¼ã¯ test 組ã¿è¾¼ã¿é–¢æ•°ã¨åŒã˜å„ªå…ˆé †ä½ã§çµ„ã¿åˆã‚ã•れã¾ã™ã€‚ã¾ãŸã€\n" +" æ¬¡ã®æ¼”ç®—å­ã¨ã‚‚組ã¿åˆã‚ã•れã¾ã™ã€‚\n" +" \n" +" ( EXPRESSION )\tEXPRESSION ã®å€¤ã‚’è¿”ã—ã¾ã™\n" +" ! EXPRESSION\t\tEXPRESSION ㌠true ã®æ™‚ false ã‚’è¿”ã—ã¾ã™ã€‚ãれ\n" +" \t\t以外㯠false ã‚’è¿”ã—ã¾ã™\n" +" EXPR1 && EXPR2\tEXPR1 ãŠã‚ˆã³ EXPR2 ã®ä¸¡æ–¹ãŒ true ã®æ™‚ true ã‚’è¿”ã—ã¾" +"ã™ã€‚\n" +" \tãれ以外㯠false ã‚’è¿”ã—ã¾ã™ã€‚\n" +" EXPR1 || EXPR2\tEXPR1 ãŠã‚ˆã³ EXPR2 ã®ã„ãšã‚Œã‹ãŒ true ã®æ™‚ true ã‚’è¿”ã—\n" +" \tã¾ã™ã€‚ãれ以外㯠false ã‚’è¿”ã—ã¾ã™ã€‚\n" +" \n" +" `==' ãŠã‚ˆã³ `!=' 演算å­ãŒä½¿ç”¨ã•れãŸå ´åˆã€æ¼”ç®—å­ã®å³å´ã®æ–‡å­—列をパターン" +"ã¨\n" +" ã—ãŸå·¦å´ã®æ–‡å­—列ã«å¯¾ã™ã‚‹ãƒ‘ターン一致処ç†ãŒè¡Œã‚れã¾ã™ã€‚\n" +" `=~' 演算å­ãŒä½¿ç”¨ã•れãŸå ´åˆã€æ¼”ç®—å­ã®å³å´ã®æ–‡å­—åˆ—ãŒæ­£è¦è¡¨ç¾ã¨ã—ã¦æ‰±ã‚れ" +"ã¾\n" +" ã™ã€‚\n" +" \n" +" && ãŠã‚ˆã³ || 演算å­ã¯ EXPR1 ã§å¼ã®å€¤ã‚’決定ã™ã‚‹ã®ã«å分ãªå ´åˆã¯ EXPR2 ã‚’\n" +" 評価ã—ã¾ã›ã‚“。\n" +" \n" +" 終了ステータス:\n" +" EXPRESSION ã®å€¤ã«åŸºã¥ã„㦠0 ã¾ãŸã¯ 1 ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"通常ã®å¤‰æ•°åã¨ãã®ä½¿ç”¨æ³•。\n" +" \n" +" BASH_VERSION\tBashã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報。\n" +" CDPATH\t`cd`ã®å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‰ã‚ŒãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’検索ã™ã‚‹éš›ã«\n" +" \t\t使用ã•れるコロン (:) ã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸€è¦§ã€‚\n" +" GLOBIGNORE\tパスåを展開ã™ã‚‹æ™‚ã«ç„¡è¦–ã•れるコロン (:) ã§åŒºåˆ‡ã‚‰ã‚ŒãŸ\n" +" \t\tファイルåパターンã®ä¸€è¦§ã€‚\n" +" HISTFILE\tコマンドヒストリãŒä¿å­˜ã•れるファイルå。\n" +" HISTFILESIZE\tヒストリファイルã«ä¿å­˜ã™ã‚‹ã“ã¨ãŒã§ãる最大行数。\n" +" HISTSIZE\t実行中ã®ã‚·ã‚§ãƒ«ãŒã‚¢ã‚¯ã‚»ã‚¹ã§ãる最大ヒストリ行数。\n" +" HOME\tログインディレクトリã®å®Œå…¨ãƒ‘スå。\n" +" HOSTNAME\tç¾åœ¨ã®ãƒ›ã‚¹ãƒˆå。\n" +" HOSTTYPE\tã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® Bash を実行ã—ã¦ã„ã‚‹ CPU ã®ç¨®é¡žã€‚\n" +" IGNOREEOF\tシェルãŒãƒ•ァイル終了 (EOF) 文字をå˜ä¸€ã®å…¥åŠ›ã¨ã—ã¦å—ã‘\n" +" \t\tå–ã£ãŸæ™‚ã®å‹•作を制御ã—ã¾ã™ã€‚設定ã•れã¦ã„ã‚‹å ´åˆã€ç©ºç™½è¡Œ\n" +" \t\tã§ EOF 文字をãã®æ•°é€£ç¶šã—ã¦å—ã‘å–ã£ãŸæ™‚ã«ã‚·ã‚§ãƒ«ã‚’終了\n" +" \t\tã—ã¾ã™ (デフォルト 10)。設定ãŒè§£é™¤ã•れãŸå ´åˆã€EOF ã§\n" +" \t\t入力ãŒçµ‚了ã™ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚\n" +" MACHTYPE\tBash ãŒå®Ÿè¡Œã•れã¦ã„ã‚‹ç¾åœ¨ã®ã‚·ã‚¹ãƒ†ãƒ ã‚’è¡¨ã™æ–‡å­—列。\n" +" MAILCHECK\tBash ãŒãƒ¡ãƒ¼ãƒ«ã‚’確èªã™ã‚‹é »åº¦ (ç§’å˜ä½)。\n" +" MAILPATH\tBash ãŒæ–°è¦ãƒ¡ãƒ¼ãƒ«ã‚’確èªã™ã‚‹ã‚³ãƒ­ãƒ³ (:) ã§åŒºåˆ‡ã‚‰ã‚ŒãŸ\n" +" \t\tファイルåã®ä¸€è¦§ã€‚\n" +" OSTYPE\tã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® Bash を実行ã—ã¦ã„ã‚‹ OS ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã€‚\n" +" PATH\tコマンドを検索ã™ã‚‹éš›ã«ä½¿ç”¨ã•れるコロン (:) ã§åŒºåˆ‡ã‚‰\n" +" \t\tれãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸€è¦§ã€‚\n" +" PROMPT_COMMAND\tプライマリプロンプトãŒè¡¨ç¤ºã•れるå‰ã«æ¯Žå›žå®Ÿè¡Œ\n" +" \t\tã•れるコマンド。\n" +" PS1\t\tプライマリプロンプト文字列。\n" +" PS2\t\tセカンダリプロンプト文字列。\n" +" PWD\t\tç¾åœ¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®å®Œå…¨ãƒ‘スå。\n" +" SHELLOPTS\tコロン (:) ã§åŒºåˆ‡ã‚‰ã‚ŒãŸæœ‰åйãªã‚·ã‚§ãƒ«ã‚ªãƒ—ション一覧。\n" +" TERM\tç¾åœ¨ã®ç«¯æœ«ç¨®é¡žå。\n" +" TIMEFORMAT\t`time' 予約語ã«ã‚ˆã‚‹æ™‚間統計情報ã®è¡¨ç¤ºæ›¸å¼ã€‚\n" +" auto_resume\tnull ã§ç„¡ã„å ´åˆã€ãã®è¡Œã«ç¾ã‚ŒãŸã‚³ãƒžãƒ³ãƒ‰ã¯ã€ã¾ãšç¾åœ¨åœæ­¢\n" +" \t\tã•れã¦ã„るジョブã‹ã‚‰æ¤œç´¢ã•れã¾ã™ã€‚ãれã§è¦‹ã¤ã‹ã£ãŸå ´åˆã€\n" +" \t\tジョブãŒãƒ•ォアグランドã«ãªã‚Šã¾ã™ã€‚値㌠`exact' ã®å ´åˆã€\n" +" \t\tコマンドãŒåœæ­¢ã—ã¦ã„るジョブã®ä¸€è¦§ã¨å޳坆ã«ä¸€è‡´ã—ã¦ã„ãªã‘\n" +" \t\tれã°ãªã‚Šã¾ã›ã‚“。値㌠`substring' ã®å ´åˆã€ã‚³ãƒžãƒ³ãƒ‰ãŒã‚¸ãƒ§\n" +" \t\tブã®éƒ¨åˆ†æ–‡å­—列ã«ä¸€è‡´ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“。ãã®ä»–ã®å€¤ã®\n" +" \t\tå ´åˆã¯ã‚³ãƒžãƒ³ãƒ‰ãŒåœæ­¢ã—ã¦ã„るジョブã®å…ˆé ­éƒ¨åˆ†ã«ä¸€è‡´ã—ãª\n" +" \t\tã‘れã°ãªã‚Šã¾ã›ã‚“。\n" +" histchars\tヒストリ展開ã¨ã‚¯ã‚¤ãƒƒã‚¯ç½®æ›ã‚’制御ã™ã‚‹æ–‡å­—。最åˆã®æ–‡å­—ãŒ\n" +" \t\tãƒ’ã‚¹ãƒˆãƒªå±•é–‹ã®æ–‡å­—ã§é€šå¸¸ã¯ `!' ã§ã™ã€‚二番目ãŒã‚¯ã‚¤ãƒƒã‚¯\n" +" \t\tç½®æ›ã§é€šå¸¸ã¯ `^' ã§ã™ã€‚三番目ãŒãƒ’ストリã®ã‚³ãƒ¡ãƒ³ãƒˆã§\n" +" \t\t通常㯠`#' ã§ã™ã€‚\n" +" HISTIGNORE\tヒストリ一覧ã«ä¿å­˜ã•れるコマンドを決ã‚る時ã«ä½¿ç”¨ã•れる\n" +" \t\tコロン (:) ã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒ‘ターンã®ä¸€è¦§ã€‚\n" + +#: builtins.c:1821 +#, fuzzy +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"ディレクトリをディレクトリスタックã«åŠ ãˆã¾ã™ã€‚\n" +" \n" +" ディレクトリをディレクトリスタックã®å…ˆé ­ã«åŠ ãˆã‚‹ã€ã¾ãŸã¯ãƒ‡ã‚£ãƒ¬\n" +" クトリを回転ã—ã¦ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒã‚¹ã‚¿ãƒƒã‚¯ã®å…ˆé ­ã«ãªã‚‹ã‚ˆã†\n" +" ã«ã—ã¾ã™ã€‚引数ãŒãªã„å ´åˆã€å…ˆé ­ã®äºŒã¤ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’入れ替ãˆã¾\n" +" ã™ã€‚\n" +" \n" +" オプション:\n" +" -n\tスタックã«åŠ ãˆãŸæ™‚ã€é€šå¸¸ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¤‰æ›´ã‚’抑止ã—\n" +" \tã¾ã™ã€‚よã£ã¦ã‚¹ã‚¿ãƒƒã‚¯ã®ã¿æ“作ã•れã¾ã™ã€‚\n" +" \n" +" 引数:\n" +" +N\tN 番目ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒå…ˆé ­ã«ãªã‚‹ã‚ˆã†ã‚¹ã‚¿ãƒƒã‚¯ã‚’回転\n" +" \tã—ã¾ã™ (`dirs' ã§è¡¨ç¤ºã•れる一覧ã®å·¦ã‹ã‚‰æ•°ãˆã¾ã™ã€‚開始番å·\n" +" \t㯠0 ã§ã™)。\n" +" \n" +" -N\tN 番目ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒå…ˆé ­ã«ãªã‚‹ã‚ˆã†ã‚¹ã‚¿ãƒƒã‚¯ã‚’回転\n" +" \tã—ã¾ã™ (`dirs' ã§è¡¨ç¤ºã•れる一覧ã®å³ã‹ã‚‰æ•°ãˆã¾ã™ã€‚開始番å·\n" +" \t㯠0 ã§ã™)。\n" +" \n" +" dir\tDIR をディレクトリスタックã®å…ˆé ­ã«åŠ ãˆã€ã‚«ãƒ¬ãƒ³ãƒˆ\n" +" \tディレクトリã«ã—ã¾ã™ã€‚\n" +" \n" +" `dirs' 組ã¿è¾¼ã¿é–¢æ•°ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚¹ã‚¿ãƒƒã‚¯ã‚’表示ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¤‰æ›´ãŒå¤±æ•—ã—ãªã„é™ã‚ŠæˆåŠŸã‚’\n" +" è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1855 +#, fuzzy +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"ディレクトリスタックã‹ã‚‰ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’削除ã—ã¾ã™ã€‚\n" +" \n" +" ディレクトリスタックã‹ã‚‰è¦ç´ ã‚’削除ã—ã¾ã™ã€‚引数ãŒãªã„å ´åˆã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª\n" +" スタックã®å…ˆé ­ã‹ã‚‰å‰Šé™¤ã—ã€æ–°ã—ã„スタック先頭ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ç§»å‹•ã—ã¾" +"ã™ã€‚\n" +" \n" +" オプション:\n" +" -n\tスタックã‹ã‚‰ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’削除ã—ãŸæ™‚ã€é€šå¸¸ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¤‰\n" +" \t更を抑止ã—ã¾ã™ã€‚よã£ã¦ã‚¹ã‚¿ãƒƒã‚¯ã®ã¿æ“作ã•れã¾ã™ã€‚\n" +" \n" +" 引数:\n" +" +N\t`dirs' ã§è¡¨ç¤ºã•れる一覧ã®å·¦ã‹ã‚‰æ•°ãˆã¦ N 番目ã®è¦ç´ ã‚’削除ã—\n" +" \tã¾ã™ã€‚開始番å·ã¯ 0 ã§ã™ã€‚例ãˆã°ã€`popd +0' ã¯å…ˆé ­ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’\n" +" \t削除ã—ã¾ã™ã€‚`popd +1' ã¯äºŒç•ªç›®ã§ã™ã€‚\n" +" \n" +" -N\t`dirs' ã§è¡¨ç¤ºã•れる一覧ã®å³ã‹ã‚‰æ•°ãˆã¦ N 番目ã®è¦ç´ ã‚’削除ã—\n" +" \tã¾ã™ã€‚開始番å·ã¯ 0 ã§ã™ã€‚例ãˆã°ã€`popd -0' ã¯æœ€å¾Œã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’\n" +" \t削除ã—ã¾ã™ã€‚`popd -1' ã¯æœ€å¾Œã‹ã‚‰äºŒç•ªç›®ã§ã™ã€‚\n" +" \n" +" `dirs' 組ã¿è¾¼ã¿é–¢æ•°ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚¹ã‚¿ãƒƒã‚¯ã‚’表示ã—ã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¤‰æ›´ãŒå¤±æ•—ã—ãªã„é™ã‚ŠæˆåŠŸã‚’\n" +" è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1885 +#, fuzzy +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"ディレクトリスタックを表示ã—ã¾ã™ã€‚\n" +" \n" +" ç¾åœ¨è¨˜æ†¶ã•れã¦ã„るディレクトリ一覧を表示ã—ã¾ã™ã€‚ディレクトリ㯠`pushd'\n" +" コマンドを使用ã—ã¦ä¸€è¦§ã«è¿½åŠ ã•れã€`popd' コマンドを通ã—ã¦ä¸€è¦§ã‹ã‚‰å–り\n" +" 戻ã•れã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -c\tå…¨ã¦ã®è¦ç´ ã‚’削除ã—ã¦ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚¹ã‚¿ãƒƒã‚¯ã‚’空ã«ã—ã¾ã™\n" +" -l\tホームディレクトリã‹ã‚‰ã®ç›¸å¯¾ãƒ‘スを ~ を先頭ã«ã—ãŸå½¢å¼ã§\n" +" \t表示ã—ã¾ã›ã‚“\n" +" -p\t一行ã«ä¸€ã¤ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚¹ã‚¿ãƒƒã‚¯è¦ç´ ã‚’表示ã—ã¾ã™\n" +" -v\t一行ã«ä¸€ã¤ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚¹ã‚¿ãƒƒã‚¯è¦ç´ ã‚’ä½ç½®ã«é–¢ã™ã‚‹ç•ªå·\n" +" \tã‚’ã¤ã‘ã¦è¡¨ç¤ºã—ã¾ã™\n" +" \n" +" 引数:\n" +" +N\tdirs を引数無ã—ã§å®Ÿè¡Œã—ãŸæ™‚ã®ä¸€è¦§ã§å·¦ã‹ã‚‰æ•°ãˆã¦ N 番目ã®\n" +" \tè¦ç´ ã®ã¿ã‚’表示ã—ã¾ã™ã€‚開始番å·ã¯ 0 ã§ã™ã€‚\n" +" \n" +" -N\tdirs を引数無ã—ã§å®Ÿè¡Œã—ãŸæ™‚ã®ä¸€è¦§ã§å³ã‹ã‚‰æ•°ãˆã¦ N 番目ã®\n" +" \tè¦ç´ ã®ã¿ã‚’表示ã—ã¾ã™ã€‚開始番å·ã¯ 0 ã§ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1916 +#, fuzzy +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"シェルオプションを設定ã€ãŠã‚ˆã³è¨­å®šè§£é™¤ã—ã¾ã™ã€‚\n" +" \n" +" å„シェルオプション OPTNAME ã®è¨­å®šã‚’変更ã—ã¾ã™ã€‚引数ãŒãªã„å ´åˆã€ã‚·ã‚§ãƒ«\n" +" オプション全ã¦ã‚’ã€ãれãžã‚Œè¨­å®šã•れã¦ã„ã‚‹ã‹å¦ã‹ã‚’å«ã‚ã¦è¡¨ç¤ºã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tãれãžã‚Œã®ã‚·ã‚§ãƒ«ã‚ªãƒ—ションをã€çŠ¶æ…‹ã‚’å«ã‚ã¦è¡¨ç¤ºã—ã¾ã™\n" +" -q\t出力を抑止ã—ã¾ã™\n" +" -s\tOPTNAME ã‚’ãれãžã‚Œæœ‰åй (設定) ã«ã—ã¾ã™\n" +" -u\tOPTNAME ã‚’ãれãžã‚Œç„¡åй (éžè¨­å®š) ã«ã—ã¾ã™\n" +" \n" +" 終了ステータス:\n" +" OPTNAME ãŒæœ‰åйãªå ´åˆã¯æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆ\n" +" ã¾ãŸã¯ OPTNAME ãŒç„¡åйãªå ´åˆã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:1937 +#, fuzzy +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"ARGUMENTS ã‚’ FORMAT ã§æ›¸å¼æ•´å½¢ã—ã¦è¡¨ç¤ºã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" -v var\t標準出力ã«è¡¨ç¤ºã™ã‚‹ã®ã§ã¯ãªãã€å‡ºåŠ›ã‚’ã‚·ã‚§ãƒ«å¤‰æ•° VAR ã«ä»£å…¥ã—ã¾" +"ã™\n" +" \n" +" FORMAT ã¯æ¬¡ã®3種類ã®ã‚ªãƒ–ジェクトをå«ã‚€æ–‡å­—列ã§ã™ã€‚一ã¤ç›®ã¯æ™®é€šã®æ–‡å­—ã§å˜" +"ã«\n" +" 標準出力ã«ã‚³ãƒ”ーã•れã¾ã™ã€‚二ã¤ç›®ã¯ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—文字ã§å¤‰æ›ã•れãŸå¾Œæ¨™æº–出力" +"ã«\n" +" コピーã•れã¾ã™ã€‚三ã¤ç›®ã¯æ›¸å¼æŒ‡å®šæ–‡å­—ã§ã€å„文字ã¯å¾Œã«ç¶šã引数を表示ã—ã¾" +"ã™ã€‚\n" +" \n" +" printf(1) ã«è¨˜è¿°ã•ã‚Œã‚‹æ¨™æº–ã®æ›¸å¼æŒ‡å®šã«åŠ ãˆã¦ã€printf ã¯æ¬¡ã®æ–‡å­—を解釈ã—ã¾" +"ã™ã€‚\n" +" \n" +" %b\t対応ã™ã‚‹å¼•æ•°ã®ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—文字を展開ã™ã‚‹\n" +" %q\tシェル入力ã¨ã—ã¦å¼•数をクオートã™ã‚‹\n" +" %(fmt)T FMT ã‚’ strftime(3) ç”¨ã®æ›¸å¼æ–‡å­—列ã¨ã—ã¦æ—¥ä»˜ã¨æ™‚é–“ã®æ–‡å­—列を出" +"力ã™ã‚‹\n" +" \n" +" FORMAT ã¯ã™ã¹ã¦ã® ARGUMENTS を使ã„切る必è¦ãŒã‚りã¾ã™ã€‚FORMATãŒå¿…è¦ã¨ã™" +"ã‚‹\n" +" ARGUMENTS より少ãªã„å ´åˆã€æ®‹ã‚Šã®æ›¸å¼æŒ‡å®šã¯å€¤ãŒ 0 ã¾ãŸã¯ null 文字列ãŒé©" +"切\n" +" ã«ä¸Žãˆã‚‰ã‚Œã¦ã„ã‚‹ã‹ã®ã‚ˆã†ã«å‹•作ã—ã¾ã™ã€‚\n" +"\n" +" 終了ステータス:\n" +" 無効ãªå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€æ›¸ãè¾¼ã¿ã€ä»£å…¥ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—" +"ã¾ã™ã€‚" + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"引数㌠Readline ã«ã‚ˆã£ã¦ã©ã®ã‚ˆã†ã«è£œå®Œã•れるã‹ã‚’指定ã—ã¾ã™ã€‚\n" +" \n" +" å„ NAME ã«å¯¾ã—ã¦ã©ã®ã‚ˆã†ã«å¼•æ•°ãŒè£œå®Œã•れるã‹ã‚’指定ã—ã¾ã™ã€‚オプションãŒä¸Ž" +"ãˆ\n" +" られãªã„å ´åˆã€æ—¢å­˜ã®è£œå®ŒæŒ‡å®šãŒå…¥åŠ›ã¨ã—ã¦å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§è¡¨ç¤ºã•れã¾" +"ã™ã€‚\n" +" \n" +" \n" +" オプション:\n" +" -p\t既存ã®è£œå®ŒæŒ‡å®šã‚’å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§è¡¨ç¤ºã™ã‚‹\n" +" -r\t補完指定 NAME を削除ã—ã¾ã™ã€‚NAME ãŒä¸Žãˆã‚‰ã‚Œãªã„å ´åˆã€å…¨ã¦ã®\n" +" \t補完指定を削除ã™ã‚‹\n" +" -D\t補完指定ãŒå®šç¾©ã•れã¦ã„ãªã„時ã®ã‚³ãƒžãƒ³ãƒ‰ã«å¯¾ã™ã‚‹ãƒ‡ãƒ•ォルトã®\n" +" \t補完ã¨å‹•作をé©ç”¨ã™ã‚‹\n" +" -E\t\"空\" コマンドã«å¯¾ã™ã‚‹è£œå®Œ (空行ã«å¯¾ã™ã‚‹è£œå®Œã®è©¦ã¿) ã¨å‹•作\n" +" \tã‚’é©ç”¨ã™ã‚‹\n" +" \n" +" 補完ãŒè©¦ã¿ã‚‰ã‚ŒãŸæ™‚ã€ä¸Šè¨˜ã‚ªãƒ—ションã®ã†ã¡å¤§æ–‡å­—ã®ã‚ªãƒ—ションã®å‹•作ãŒ\n" +" 行ã‚れã¾ã™ã€‚-D オプション㯠-E オプションより優先ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"オプションã«åŸºã¥ã„ãŸè£œå®Œå€™è£œã‚’表示ã—ã¾ã™ã€‚\n" +" \n" +" シェル関数ã®ä¸­ã§è£œå®Œå€™è£œã‚’生æˆã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã‚ˆã†ã«æ„図ã•れã¦ã„ã¾" +"ã™ã€‚\n" +" オプション引数 WORD ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã€WORD ã«å¯¾ã—ã¦ä¸€è‡´ã—ãŸå€™è£œãŒç”Ÿæˆ\n" +" ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:2016 +#, fuzzy +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"補完オプションを編集ã¾ãŸã¯è¡¨ç¤ºã—ã¾ã™ã€‚\n" +" \n" +" å„ NAME ã«å¯¾ã—ã¦è£œå®Œã‚ªãƒ—ションを変更ã—ã¾ã™ã€‚NAME ãŒä¸Žãˆã‚‰ã‚Œãªã„å ´åˆã€\n" +" 補完ãŒç›´ã¡ã«å®Ÿè¡Œã•れã¾ã™ã€‚ã‚‚ã— OPTION ãŒä¸Žãˆã‚‰ã‚Œãªã„å ´åˆã€å„ NAME \n" +" ã¾ãŸã¯ç¾åœ¨ã®è£œå®Œã«å¯¾ã™ã‚‹è£œå®Œã‚ªãƒ—ションを表示ã—ã¾ã™ã€‚\n" +" \n" +" オプション:\n" +" \t-o option\tå„ NAME ã«å¯¾ã—ã¦è£œå®Œã‚ªãƒ—ション OPTION を設定ã™ã‚‹\n" +" \t-D\t\t\"デフォルト\" コマンド補完オプションを変更ã™ã‚‹\n" +" \t-E\t\t\"空\" コマンド補完オプションを変更ã™ã‚‹\n" +" \n" +" `-o' ã®ä»£ã‚り㫠`+o' を使用ã™ã‚‹ã¨æŒ‡å®šã—ãŸã‚ªãƒ—ションをオフã«ã—ã¾ã™ã€‚\n" +" \n" +" 引数:\n" +" \n" +" å„ NAME 㯠`complete' 組ã¿è¾¼ã¿é–¢æ•°ã‚’使ã£ã¦äº‹å‰ã«å®šç¾©ã•れãŸè£œå®ŒæŒ‡å®šã‚’コ" +"マ\n" +" ンドを指ã—示ã•ãªã‘れã°ãªã‚Šã¾ã›ã‚“。NAME ãŒä¸Žãˆã‚‰ã‚Œãªã„å ´åˆã€compopt ã¯\n" +" 補完をã“れã‹ã‚‰ç”Ÿæˆã™ã‚‹é–¢æ•°ã‹ã‚‰å‘¼ã³å‡ºã•れãªã‘れã°ã„ã‘ã¾ã›ã‚“。ãã—ã¦\n" +" 補完をã“れã‹ã‚‰ç”Ÿæˆã™ã‚‹é–¢æ•°ã«å¯¾ã™ã‚‹ã‚ªãƒ—ションãŒå¤‰æ›´ã•れã¾ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€ NAME ãŒè£œå®ŒæŒ‡å®šã¨ã—ã¦å®šç¾©ã•れã¦ã„ãªã„å ´" +"åˆ\n" +" を除ãã€æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:2047 +#, fuzzy +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"標準入力ã‹ã‚‰è¡Œã‚’読ã¿è¾¼ã¿ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åž‹é…列ã«ä»£å…¥ã—ã¾ã™ã€‚\n" +" \n" +" 標準入力ã€-u オプションãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã¯ãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­ FD ã‹ã‚‰è¡Œã‚’読ã¿è¾¼" +"ã¿ã€\n" +" インデックス型é…列変数 ARRAY ã«ä»£å…¥ã—ã¾ã™ã€‚変数 ARRAY ã®ãƒ‡ãƒ•ォルト㯠" +"MAPFILE\n" +" ã§ã™ã€‚\n" +" \n" +" オプション:\n" +" -n count\t最大 COUNT 行をコピーã™ã‚‹ã€‚COUNT ㌠0 ã®å ´åˆã€å…¨ã¦ã®è¡Œã‚’コ" +"ピーã™ã‚‹\n" +" -O origin\té…列ã®é–‹å§‹ç•ªå·ã‚’ ORIGIN ã«ã™ã‚‹ã€‚デフォルト㯠0\n" +" -s count \t最åˆã® COUNT 行ã®èª­ã¿è¾¼ã¿ã‚’破棄ã™ã‚‹\n" +" -t\t\tå„行を読ã¿è¾¼ã‚“ã æ™‚ã«æœ€å¾Œã®æ”¹è¡Œã‚’削除ã™ã‚‹\n" +" -u fd\t\t標準入力ã§ã¯ãªããƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­ FD ã‹ã‚‰è¡Œã‚’読ã¿è¾¼ã‚€\n" +" -C callback\tQUANTUM 行を読ã¿è¾¼ã‚€æ¯Žã« CALLBACK を評価ã™ã‚‹\n" +" -c quantum\tCALLBACK を何行読ã¿è¾¼ã‚€æ¯Žã«å®Ÿè¡Œã™ã‚‹ã‹ã‚’指定ã™ã‚‹\n" +" \n" +" 引数:\n" +" ARRAY\t\tデータをä¿å­˜ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹é…列変数å\n" +" \n" +" ã‚‚ã— -c ãŒæŒ‡å®šã•れãšã« -C ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã€ãƒ‡ãƒ•ォルト㮠quantum 㯠5000 " +"ã§ã™ã€‚\n" +" CALLBACK ãŒè©•価ã•ã‚ŒãŸæ™‚ã€ä»£å…¥ã•れるé…åˆ—ã®æ¬¡è¦ç´ ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã¨ã€è¦ç´ ã«ä»£" +"å…¥ã•\n" +" れる行ãŒè¿½åŠ ã®å¼•æ•°ã¨ã—ã¦æ¸¡ã•れã¾ã™ã€‚\n" +" \n" +" 明示的ã«é–‹å§‹ç•ªå·ãŒä¸Žãˆã‚‰ã‚Œãªã„å ´åˆã€mapfile ã¯ä»£å…¥å‰ã« ARRAY を空ã«ã—ã¾" +"ã™ã€‚\n" +" \n" +" 終了ステータス:\n" +" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€é…列ãŒèª­ã¿å–り専用ã€ã¾ãŸã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åž‹é…" +"列ã§ç„¡ã„\n" +" å ´åˆã‚’é™¤ãæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"ファイルã‹ã‚‰è¡Œã‚’読ã¿è¾¼ã¿é…列変数ã«ä»£å…¥ã—ã¾ã™ã€‚\n" +" \n" +" `mapfile'ã®åˆ¥åã§ã™ã€‚" + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2016 Free Software Foundation, Inc." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "ç¾åœ¨ã®ã‚µãƒ–ルーãƒãƒ³å‘¼ã³å‡ºã—ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚’è¿”ã—ã¾ã™ã€‚\n" +#~ " \n" +#~ " EXPR ãŒç„¡ã„å ´åˆã€æ¬¡ã‚’è¿”ã—ã¾ã™ " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: プロセス %5ld (%s) ㌠the_pipeline ã«ã‚りã¾ã™" + +#~ msgid "Unknown Signal #" +#~ msgstr "䏿˜Žãªã‚·ã‚°ãƒŠãƒ«ç•ªå·" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" diff --git a/bash-5.1/po/ko.gmo b/bash-5.1/po/ko.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e8dbf4963447029ab9a8c8dceee7c1ff22964daa GIT binary patch literal 52646 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 PtVEz_Lv6*vTk!t@_HTMu literal 0 HcmV?d00001 diff --git a/bash-5.1/po/ko.po b/bash-5.1/po/ko.po new file mode 100644 index 0000000..0131769 --- /dev/null +++ b/bash-5.1/po/ko.po @@ -0,0 +1,4447 @@ +# Korean Translation for bash +# Copyright (C) 2019 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# SooHyun Kim , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: bash-5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-11-23 16:28+0900\n" +"Last-Translator: SooHyun Kim \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "ìž˜ëª»ëœ ë°°ì—´ 첨ìž" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: ì´ë¦„ 참조 ì†ì„±ì„ 지우는 중" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: ì¸ë±ìФ ë°°ì—´ì„ ì—°ê´€ 배열로 변환할 수 ì—†ìŒ" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: 유효하지 ì•Šì€ ì—°ê´€ ë°°ì—´ 키" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: 숫ìžê°€ 아닌 ì¸ë±ìŠ¤ì— í• ë‹¹í•  수 ì—†ìŒ" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: ì—°ê´€ ë°°ì—´ì„ í• ë‹¹í•˜ê¸° 위해서 반드시 첨ìžë¥¼ 사용해야 함" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: ìƒì„±í•  수 ì—†ìŒ: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: 명령어를 위한 keymapì„ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: ê³µë°±ì´ ì•„ë‹Œ 첫 문ìžê°€ '\"' ê°€ 아님" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "%2$sì— ë‹«ëŠ” '%1$c' ì—†ìŒ" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: 콜론(:) êµ¬ë¶„ìž ì—†ìŒ" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "'%s': unbind í•  수 ì—†ìŒ" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "괄호 확장: '%s'를 위해 메모리를 할당할 수 ì—†ìŒ" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "괄호 확장: %uê°œ 요소를 위한 메모리 할당 실패" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "괄호 확장: '%s'를 위한 메모리 할당 실패" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "'%s': 유효하지 ì•Šì€ ë³„ëª…" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "줄 편집 활성화ë˜ì–´ìžˆì§€ 않ìŒ" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "'%s': 유효하지 ì•Šì€ keymap ì´ë¦„" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: %s를 ì½ì„ 수 ì—†ìŒ" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': 알 수 없는 함수 ì´ë¦„" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s 는 ì–´ëŠ í‚¤ì—ë„ bind ë˜ì–´ìžˆì§€ 않ìŒ.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s 는 다ìŒì„ 통해 í˜¸ì¶œë  ìˆ˜ ìžˆìŒ " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "'%s': unbind í•  수 ì—†ìŒ" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "반복 횟수" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "'for', 'while' ë˜ëŠ” 'until' 반복문ì—서만 ì˜ë¯¸ê°€ 있ìŒ" + +#: builtins/caller.def:136 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME 설정ë˜ì§€ 않ìŒ" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "ì¸ìžê°€ 너무 ë§ŽìŒ" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "null 디렉토리" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD 설정ë˜ì§€ 않ìŒ" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "%d 줄: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "경고: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: 사용법: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: ì˜µì…˜ì— ì¸ìžê°€ 필요함" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: 숫ìžë¡œ ëœ ì¸ìžê°€ 필요함" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: 유효하지 ì•Šì€ ì˜µì…˜" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: 유효하지 ì•Šì€ ì˜µì…˜ ì´ë¦„" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': 유효한 ì‹ë³„ìžê°€ 아님" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "유효하지 ì•Šì€ 8진수" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "유효하지 ì•Šì€ 16진수" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "유효하지 ì•Šì€ ìˆ˜" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: 유효하지 ì•Šì€ ì‹ í˜¸ ì •ì˜" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "'%s': pidê°€ 아니거나 유효한 job specì´ ì•„ë‹˜" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: ì½ê¸° ì „ìš© 변수임" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %sê°€ 범위를 벗어남" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "ì¸ìž" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%sê°€ 범위를 벗어남" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: 그러한 jobì´ ì—†ìŒ" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: job controlì´ ì—†ìŒ" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "job controlì´ ì—†ìŒ" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: 제한ë¨" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "제한ë¨" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: 쉘 ë‚´ìž¥ì´ ì•„ë‹˜" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "쓰기 오류: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "í„°ë¯¸ë„ ì†ì„± 설정 오류: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "í„°ë¯¸ë„ ì†ì„± ì½ê¸° 오류: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: 현재 디렉토리를 받아오는 ë° ì˜¤ë¥˜ ë°œìƒ: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: 모호한 job spec" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "ì´ ë²„ì „ì—는 ë„움ë§ì´ ì—†ìŒ" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: unsetí•  수 ì—†ìŒ: %sê°€ ì½ê¸° 전용임" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: unsetí•  수 ì—†ìŒ" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: 유효하지 ì•Šì€ ì•¡ì…˜ ì´ë¦„" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: 완료 사양 ì—†ìŒ" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "경고: -F ì˜µì…˜ì´ ì˜ˆìƒëŒ€ë¡œ ìž‘ë™í•˜ì§€ ì•Šì„ ìˆ˜ 있ìŒ" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "경고: -C ì˜µì…˜ì´ ì˜ˆìƒëŒ€ë¡œ ìž‘ë™í•˜ì§€ ì•Šì„ ìˆ˜ 있ìŒ" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "현재 완료 함수가 ì‹¤í–‰ì¤‘ì´ ì•„ë‹˜" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "함수ì—서만 ì‚¬ìš©ë  ìˆ˜ 있ìŒ" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: 참조 변수로 ë°°ì—´ì´ ì˜¬ 수 ì—†ìŒ" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: ì´ë¦„ 참조 ë³€ìˆ˜ì˜ ìžê°€ 참조는 허용ë˜ì§€ 않ìŒ" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: 순환 ì´ë¦„ 참조" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "'%s': 유효하지 ì•Šì€ ì´ë¦„ 참조 변수 ì´ë¦„" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "함수를 만들기 위해 '-f'를 사용할 수 ì—†ìŒ" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: ì½ê¸° ì „ìš© 함수임" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: 따옴표를 ì´ìš©í•œ 복합 ë°°ì—´ í• ë‹¹ì€ í–¥í›„ ì œê±°ë  ì˜ˆì •ìž„" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: ì´ ë°©ë²•ìœ¼ë¡œ ë°°ì—´ 변수를 파괴할 수 ì—†ìŒ" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: 참조 ë°°ì—´ì„ ì¸ë±ìФ 배열로 변환할 수 ì—†ìŒ" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "ë™ì  ë¡œë”©ì„ ì´ìš©í•  수 ì—†ìŒ" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "공유 오브ì íЏ %s를 ì—´ 수 ì—†ìŒ: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "공유 오브ì íЏ %2$sì—서 %1$s를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %3$s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: ë™ì ìœ¼ë¡œ 로드ë˜ì§€ 않ìŒ" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "%sì— ëŒ€í•œ 함수 로드가 실패 반환 (%d): 로드ë˜ì§€ 않ìŒ" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: ë™ì ìœ¼ë¡œ 로드ë˜ì§€ 않ìŒ" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: 삭제할 수 ì—†ìŒ: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: 디렉터리임" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: ì¼ë°˜ì ì¸ 파ì¼ì´ 아님" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: 파ì¼ì´ 너무 í¼" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: ë°”ì´ë„ˆë¦¬ 파ì¼ì„ 실행할 수 ì—†ìŒ" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: 실행할 수 ì—†ìŒ: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "로그아웃\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "ë¡œê·¸ì¸ ì‰˜ì´ ì•„ë‹˜: 'exit'를 사용하세요" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "ì •ì§€ëœ jobì´ ìžˆìŠµë‹ˆë‹¤.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "ì‹¤í–‰ì¤‘ì¸ jobì´ ìžˆìŠµë‹ˆë‹¤.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "명령어를 ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "히스토리 사양" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: 임시 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "현재" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "job %dê°€ job control ì—†ì´ ì‹œìž‘í•¨" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ìž˜ëª»ëœ ì˜µì…˜ -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: ì˜µì…˜ì´ ì¸ìžë¥¼ 필요로 함 -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "해싱 비활성화ë¨" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: 해시 í…Œì´ë¸”ì´ ë¹„ì–´ìžˆìŒ\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "hits\tcommand\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "ë‹¤ìŒ í‚¤ì›Œë“œì— ì¼ì¹˜í•˜ëŠ” 쉘 명령어 '" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"'%s'ì— í•´ë‹¹í•˜ëŠ” ë„ì›€ë§ ì£¼ì œê°€ 없습니다. 'man -k %s' ë˜ëŠ” 'info %s'를 사용해 " +"보세요." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: ì—´ 수 ì—†ìŒ: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"ì´ ì‰˜ ëª…ë ¹ì–´ë“¤ì€ ë‚´ë¶€ì ìœ¼ë¡œ ì •ì˜ë˜ì–´ 있습니다. 목ë¡ì„ 보려면 `help' 를 ìž…ë ¥" +"하세요.\n" +"`help name' ì„ ìž…ë ¥í•˜ë©´ 함수 `name' ì— ëŒ€í•œ 정보를 ë” í™•ì¸í•  수 있습니다.\n" +"ì‰˜ì— ëŒ€í•œ ì¼ë°˜ì ì¸ 정보를 ë” í™•ì¸í•˜ë ¤ë©´ `info bash' 를 사용하세요.\n" +"ì´ ëª©ë¡ì— 없는 ëª…ë ¹ì–´ì— ëŒ€í•´ ë” ì•Œì•„ë³´ë ¤ë©´ `man -k' ë˜ëŠ” `info' 를 사용하세" +"ìš”.\n" +"\n" +"명령어 ì´ë¦„ 다ìŒì˜ 별 (*) ì€ í•´ë‹¹ 명령어가 비활성화 ë˜ì—ˆìŒì„ ì˜ë¯¸í•©ë‹ˆë‹¤.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "-anrw를 한 ê°œ ì´ìƒ 사용할 수 ì—†ìŒ" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "히스토리 위치" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: 유효하지 ì•Šì€ íƒ€ìž„ìŠ¤íƒ¬í”„" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: 히스토리 확장 실패" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib 실패" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "'-x'와 다른 ì˜µì…˜ë“¤ì€ ê°™ì´ ì‚¬ìš©í•  수 ì—†ìŒ" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: ì¸ìžëŠ” 반드시 프로세스 ë˜ëŠ” job IDì´ì–´ì•¼ 함" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "알 수 없는 오류" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "표현ì‹ì„ 예ìƒí•¨" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: ì¸ë±ìФ ë°°ì—´ì´ ì•„ë‹˜" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: 유효하지 ì•Šì€ íŒŒì¼ ë””ìŠ¤í¬ë¦½í„° 명세" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: 유효하지 ì•Šì€ íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: 유효하지 ì•Šì€ ì¤„ 수" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: 유효하지 ì•Šì€ ë°°ì—´ì˜ ì‹œìž‘" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: 유효하지 ì•Šì€ ì½œë°± ì–‘ìž" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "빈 ë°°ì—´ 변수 ì´ë¦„" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "ë°°ì—´ 변수 ì§€ì›ì´ 필요함" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "'%s': ì„œì‹ ë¬¸ìž ì—†ìŒ" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "'%c': 유효하지 ì•Šì€ ì‹œê°„ í¬ë§· 사양" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "'%c': 유효하지 ì•Šì€ ì„œì‹ ë¬¸ìž" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "경고: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "í˜•ì‹ íŒŒì‹± 문제: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "\\xì— 16진수 ìˆ«ìž ì—†ìŒ" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "\\%cì— í•´ë‹¹í•˜ëŠ” 유니코드 ë¬¸ìž ì—†ìŒ" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "다른 디렉토리 ì—†ìŒ" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: 유효하지 ì•Šì€ ì¸ìž" + +#: builtins/pushd.def:480 +msgid "" +msgstr "<현재 디렉토리 ì—†ìŒ>" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "디렉토리 스íƒì´ 비어있ìŒ" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "디렉토리 ìŠ¤íƒ ì¸ë±ìФ" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"현재 ê¸°ì–µëœ ë””ë ‰í† ë¦¬ì˜ ëª©ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 디렉토리들ì€\n" +" `pushd' ëª…ë ¹ì„ í†µí•´ 목ë¡ì— 경로를 저장할 수 있고; 'popd' \n" +" ëª…ë ¹ì„ í†µí•´ 거슬러 올ë¼ê°ˆ 수 있습니다.\n" +" \n" +" 옵션:\n" +" -c\tì›ì†Œë¥¼ ì „ë¶€ ì‚­ì œí•¨ìœ¼ë¡œì¨ ë””ë ‰í† ë¦¬ 스íƒì„ 초기화합니다\n" +" -l\t홈 디렉토리까지 ~로 ì¶•ì•½ëœ ìƒëŒ€ê²½ë¡œë¥¼ 표시하지 않습니다\n" +" -p\t한 ì¤„ì— í•˜ë‚˜ì”© 디렉토리 스íƒì„ 표시합니다\n" +" -v\t한 ì¤„ì— í•˜ë‚˜ì”© 스íƒì˜ 위치와 함께 디렉토리 스íƒì„ 표시합니다\n" +" \n" +" ì¸ìž:\n" +" +N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 왼쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤ë‹ˆ" +"다.\n" +" \t세는 수는 0부터 시작합니다.\n" +" \n" +" -N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 오른쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤" +"니다.\n" +"\t세는 수는 0부터 시작합니다." + +#: builtins/pushd.def:723 +#, fuzzy +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"디렉토리 스íƒì˜ 최ìƒìœ„ì— ë””ë ‰í† ë¦¬ë¥¼ 추가하거나 스íƒì„ 회전\n" +" 하거나, 현재 ìž‘ì—…ì¤‘ì¸ ë””ë ‰í† ë¦¬ì—서 스íƒì˜ 새 최ìƒìœ„를 \n" +" 만듭니다. ì¸ìžê°€ 없다면 ìƒìœ„ ë‘ ë””ë ‰í† ë¦¬ë¥¼ êµí™˜í•©ë‹ˆë‹¤.\n" +" \n" +" 옵션:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" `dirs' ë‚´ìž¥ì€ ë””ë ‰í† ë¦¬ 스íƒì„ ë³´ì—¬ì¤ë‹ˆë‹¤." + +#: builtins/pushd.def:748 +#, fuzzy +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"디렉토리 스íƒì—서 í•­ëª©ì„ ì œê±°í•©ë‹ˆë‹¤. 주어진 ì¸ìžê°€ ì—†ì„ ê²½ìš°\n" +" 최ìƒìœ„ 디렉토리를 스íƒì—서 제거하고 새 최ìƒìœ„ 디렉토리로 변경합니다.\n" +" \n" +" 옵션:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: 유효하지 ì•Šì€ íƒ€ìž„ì•„ì›ƒ ì •ì˜" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "ì½ê¸° 오류: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "함수 ë˜ëŠ” ì†ŒìŠ¤ëœ ìŠ¤í¬ë¦½íЏì—서만 'return' í•  수 있ìŒ" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "함수와 변수를 ë™ì‹œì— unsetí•  수 ì—†ìŒ" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: ë°°ì—´ 변수가 아님" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: 함수가 아님" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: exportí•  수 ì—†ìŒ" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "시프트 횟수" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "쉘 ì˜µì…˜ì„ ë™ì‹œì— set 하고 unset í•  수 ì—†ìŒ" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: 유효하지 ì•Šì€ ì‰˜ 옵션 ì´ë¦„" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "ì¸ìžë¡œ íŒŒì¼ ì´ë¦„ì´ ë°˜ë“œì‹œ 필요함" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: 파ì¼ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "ì¼ì‹œ 정지할 수 ì—†ìŒ" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "ë¡œê·¸ì¸ ì‰˜ì„ ì¼ì‹œ 정지할 수 ì—†ìŒ" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s는 '%s'ì˜ ë³„ì¹­ìž„\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s 는 쉘 키워드임\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s 는 함수임\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s 는 특수한 쉘 내장임\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s 는 쉘 내장임\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s 는 %s ìž„\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s 는 í•´ì‹œë¨ (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: 유효하지 ì•Šì€ ì œí•œ ì¸ìž" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "'%c': ìž˜ëª»ëœ ëª…ë ¹ì–´" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: ì œí•œì„ ì½ì„ 수 ì—†ìŒ: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "제한" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: ì œí•œì„ ë³€ê²½í•  수 ì—†ìŒ: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "8진수" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "'%c': 유효하지 ì•Šì€ ì‹¬ë³¼ë¦­ 모드 ì—°ì‚°ìž" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "'%c': 유효하지 ì•Šì€ ì‹¬ë³¼ë¦­ 모드 문ìž" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " 줄 " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "마지막 명령: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "취소중..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "ì •ë³´: " + +#: error.c:462 +msgid "unknown command error" +msgstr "알 수 없는 명령어 오류" + +#: error.c:463 +msgid "bad command type" +msgstr "ìž˜ëª»ëœ ëª…ë ¹ì–´ 타입" + +#: error.c:464 +msgid "bad connector" +msgstr "ìž˜ëª»ëœ ì»¤ë„¥í„°" + +#: error.c:465 +msgid "bad jump" +msgstr "ìž˜ëª»ëœ ì í”„" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: í•´ì œëœ ë³€ìˆ˜" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aìž…ë ¥ 대기중 시간 초과: ìžë™ìœ¼ë¡œ 로그아웃\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "표준 ìž…ë ¥ì„ /dev/nullì—서 리다ì´ë ‰íЏ í•  수 ì—†ìŒ: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': 유효하지 ì•Šì€ ì„œì‹ ë¬¸ìž" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] ê°€ 여전히 존재" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "파ì´í”„ 오류" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: 최대 eval 중첩 레벨 초과 (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: 최대 소스 중첩 레벨 초과 (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: 최대 함수 중첩 레벨 초과 (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: 제한ë¨: 명령 ì´ë¦„ì— '/'를 지정할 수 ì—†ìŒ" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: 명령어를 ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: ìž˜ëª»ëœ ì¸í„°í”„리터" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: ì´ì§„ 파ì¼ì„ 실행할 수 ì—†ìŒ: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "'%s': 특수한 내장 명령임" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "fd %d를 fd %d로 복제할 수 ì—†ìŒ" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "í‘œí˜„ì‹ ìž¬ê·€ 레벨 초과ë¨" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "재귀 ìŠ¤íƒ ì–¸ë”플로우" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "í‘œí˜„ì‹ ë¬¸ë²• 오류" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "변수가 아닌 ê²ƒì— í• ë‹¹ì„ ì‹œë„함" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "변수 할당 문법 오류" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "0으로 나눔" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "버그: ìž˜ëª»ëœ í‘œí˜„ì‹ í† í°" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "ì¡°ê±´ë¬¸ì— ':' 예ìƒí•¨" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "지수가 0보다 ìž‘ìŒ" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "전위 ì¦ê°€ ë˜ëŠ” 후위 ê°ì†Œ í›„ì— ì‹ë³„ìžë¥¼ 예ìƒí•¨" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "')' ë¹ ì§" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "문법 오류: í”¼ì—°ì‚°ìž ì˜ˆìƒí•¨" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "문법 오류: 유효하지 ì•Šì€ ì‚°ìˆ  ì—°ì‚°ìž" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (오류 토í°ì€ \"%s\" ìž„)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "유효하지 ì•Šì€ ì§„ë²•" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: 유효하지 ì•Šì€ ì¤„ 수" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "해당 진법ì—서 표현할 수 없는 ê°’" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: í‘œí˜„ì‹ ì˜¤ë¥˜\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: 부모 ë””ë ‰í„°ë¦¬ì— ì ‘ê·¼í•  수 ì—†ìŒ" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "fd %dì— ëŒ€í•´ nodelay 모드를 재설정 í•  수 ì—†ìŒ" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "fd %dì—서 bash ìž…ë ¥ì„ ìœ„í•œ 새 íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°ë¥¼ 할당할 수 ì—†ìŒ" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: 새로운 fd %d를 위한 버í¼ê°€ ì´ë¯¸ 존재함" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "í¬í¬ëœ pid %dê°€ ì‹¤í–‰ì¤‘ì¸ job %dì— ë‚˜íƒ€ë‚¨" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "프로세스 그룹 %2$ldì˜ ì •ì§€ëœ ìž‘ì—… %1$d 를 삭제중" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) ê°€ í˜„ìž¬ë„ ì‚´ì•„ìžˆë‹¤ê³  표시ë¨" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: 그런 pidê°€ ì—†ìŒ" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "신호 %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "완료" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "멈춤" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "멈춤(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "실행중" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "완료(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "ë‚˜ê° %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "알 수 없는 ìƒíƒœ" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(코어 ë¤í”„ë¨) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "child setpgid (%ld ì—서 %ld 로)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld는 ì´ ì‰˜ì˜ ìžì‹ì´ 아님" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: 프로세스 %ldì— ëŒ€í•œ ê¸°ë¡ ì—†ìŒ" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: job %d ì€ ì •ì§€ë¨" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: 그러한 jobì´ ì—†ìŒ" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: ìž‘ì—…ì´ ì¢…ë£Œë¨" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: job %d는 ì´ë¯¸ 백그ë¼ìš´ë“œì— 있ìŒ" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: ì •ì˜ë˜ì§€ ì•Šì€ ë¸”ë¡ì„ 피하기 위해 WNOHANG를 켜는 중" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: 줄 %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (코어 ë¤í”„ë¨)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd now: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp 실패" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: 백그ë¼ìš´ë“œì— job control ì—†ìŒ" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "터미털 프로세스 그룹 (%d)ì„ ì„¤ì •í•  수 ì—†ìŒ" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "ì´ ì‰˜ì— job control ì—†ìŒ" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: assertion 실패: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: assertion ë§ê°€ì§\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "알 수 ì—†ìŒ" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: block on free list clobbered" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: ì´ë¯¸ í•´ì œëœ ë¸”ë¡ ì¸ìžë¥¼ 가지고 호출ë¨" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: 할당ë˜ì§€ ì•Šì€ ë¸”ë¡ ì¸ìžì™€ 호출ë¨" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: ì–¸ë”플로우 ê°ì§€; mh_nbytesê°€ 범위를 벗어남" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: ì–¸ë”플로우 ê°ì§€; mh_nbytesê°€ 범위를 벗어남" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: 시작과 ëì˜ ì²­í¬ ì‚¬ì´ì¦ˆê°€ 다름" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: 할당ë˜ì§€ ì•Šì€ ë¸”ë¡ ì¸ìžë¥¼ 가지고 호출ë¨" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: ì–¸ë”플로우 ê°ì§€; mh_nbytesê°€ 범위를 벗어남" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: ì–¸ë”플로우 ê°ì§€; mh_nbytesê°€ 범위를 벗어남" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: 시작과 ëì˜ ì²­í¬ ì‚¬ì´ì¦ˆê°€ 다름" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: FIND_ALLOCì´ í• ë‹¹ í…Œì´ë¸”ì´ ê°€ë“ ì°¼ë‹¤ê³  함?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %pê°€ í• ë‹¹ëœ í…Œì´ë¸”ì— ìžˆìŒ?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %pê°€ ì´ë¯¸ í•´ì œëœ í…Œì´ë¸”ì— ìžˆìŒ?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "유효하지 ì•Šì€ ì§„ë²•" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: 알 수 없는 호스트" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: 유효하지 ì•Šì€ ì„œë¹„ìŠ¤" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: ìž˜ëª»ëœ ë„¤íŠ¸ì›Œí¬ ê²½ë¡œ 사양" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "ë„¤íŠ¸ì›Œí¬ ìž‘ì—…ì€ ì§€ì›ë˜ì§€ 않ìŒ" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: 로케ì¼ì„ 바꿀 수 ì—†ìŒ (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: 로케ì¼ì„ 바꿀 수 ì—†ìŒ (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: 로케ì¼ì„ 바꿀 수 ì—†ìŒ (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: 로케ì¼ì„ 바꿀 수 ì—†ìŒ (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "$_ì— ë©”ì¼ì´ 있습니다" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "$_ì— ìƒˆë¡œìš´ ë©”ì¼ì´ 있습니다" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "%sì— ìžˆëŠ” ë©”ì¼ì€ ì½ì—ˆìŠµë‹ˆë‹¤\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "문법 오류: 산술 표현ì‹ì´ 필요함" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "문법 오류: ';' 예ìƒë˜ì§€ 않ìŒ" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "문법 오류: `((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: ìž˜ëª»ëœ ëª…ë ¹ì–´ í˜•ì‹ %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "here-documentê°€ 줄 %d ì—서 파ì¼ì˜ ë으로 êµ¬ë¶„ë¨ (`%s'를 예ìƒí•¨)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: 리다ì´ë ‰ì…˜ 명령어 `%d' 범위 벗어남" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu)ê°€ SIZE_MAX (%lu)를 초과함: 줄 잘림" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "최대 here-document 카운트 초과" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "'%c'를 찾는 ë„중 예ìƒí•˜ì§€ 못한 파ì¼ì˜ ë" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "']]'를 ì°¾ë˜ ë„중 예ìƒí•˜ì§€ 못한 파ì¼ì˜ ë" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "ì¡°ê±´ 표현ì‹ì— 문법 오류: 예ìƒí•˜ì§€ 못한 í† í° '%s'" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "ì¡°ê±´ 표현ì‹ì— 문법 오류" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "예ìƒë˜ì§€ ì•Šì€ í† í° '%s', ')' 예ìƒë¨" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "')' 예ìƒë¨" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "ì¡°ê±´ 단항 ì—°ì‚°ìžì— 예기치 ì•Šì€ ì¸ìž '%s'" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "ì¡°ê±´ 단항 ì—°ì‚°ìžì— 예기치 ì•Šì€ ì¸ìž" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "예기치 ì•Šì€ í† í° '%s', ì¡°ê±´ ì´í•­ ì—°ì‚°ìž ì˜ˆìƒë¨" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "ì¡°ê±´ ì´í•­ ì—°ì‚°ìž ì˜ˆìƒë¨" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "ì¡°ê±´ ì´í•­ ì—°ì‚°ìžì— 대해 예기치 ì•Šì€ ì¸ìž '%s'" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "ì¡°ê±´ ì´í•­ ì—°ì‚°ìžì— 대해 예기치 ì•Šì€ ì¸ìž" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "ì¡°ê±´ 명령어ì—서 예기치 ì•Šì€ í† í° '%c'" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "ì¡°ê±´ 명령어ì—서 예기치 ì•Šì€ í† í° '%s'" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "ì¡°ê±´ 명령어ì—서 예기치 ì•Šì€ í† í° %d" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "예기치 ì•Šì€ í† í° '%s' 근처ì—서 문법 오류" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "'%s' 근처ì—서 문법 오류" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "문법 오류: 예기치 ì•Šì€ íŒŒì¼ì˜ ë" + +#: parse.y:6365 +msgid "syntax error" +msgstr "문법 오류" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "ì‰˜ì„ ë‚˜ê°€ë ¤ë©´ \"%s\"를 사용하세요.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "맞는 ')'를 ì°¾ë˜ ë„중 예기치 ì•Šì€ íŒŒì¼ì˜ ë" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: 함수 `%s' 를 ì°¾ì„ ìˆ˜ ì—†ìŒ" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: 가능한 ìž¬ì‹œë„ ë£¨í”„" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: ìž˜ëª»ëœ ì»¤ë„¥í„° `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: 유효하지 ì•Šì€ íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: NULL íŒŒì¼ í¬ì¸í„°" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: `%c': ìž˜ëª»ëœ ì„œì‹ ë¬¸ìž" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "íŒŒì¼ ë””ìŠ¤í¬ë¦½í„° 범위 벗어남" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: 모호한 리다ì´ë ‰íЏ" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: ì´ë¯¸ 있는 파ì¼ì„ ë®ì–´ì“¸ 수 ì—†ìŒ" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: 제한ë¨: ì¶œë ¥ì„ ë¦¬ë‹¤ì´ë ‰íŠ¸í•  수 ì—†ìŒ" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "here-document를 위한 임시 파ì¼ì„ ìƒì„±í•  수 ì—†ìŒ: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: fd를 ë³€ìˆ˜ì— í• ë‹¹í•  수 ì—†ìŒ" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port 는 네트워킹 ì—†ì´ ì§€ì›ë˜ì§€ 않ìŒ" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "리다ì´ë ‰ì…˜ 오류: fd를 복제할 수 ì—†ìŒ" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "/tmp를 ì°¾ì„ ìˆ˜ ì—†ìŒ, 만들어 주세요!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp는 반드시 유효한 디렉토리 ì´ë¦„ì´ì–´ì•¼ 함" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "ìƒí˜¸ì  쉘ì—서는 pretty-printing 모드가 무시ë¨" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: 유효하지 ì•Šì€ ì˜µì…˜" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "uid를 %d로 설정할 수 ì—†ìŒ: effective uid %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "gid를 %d로 설정할 수 ì—†ìŒ: effective gid %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "디버거를 시작할 수 ì—†ìŒ; 디버깅 모드 비활성화ë¨" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: 는 디렉터리임" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "ì´ë¦„ ì—†ìŒ!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, 버전 %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"사용법:\t%s [GNU 긴 옵션] [옵션] ...\n" +"\t%s [GNU 긴 옵션] [옵션] 스í¬ë¦½íЏ-íŒŒì¼ ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU 긴 옵션:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "쉘 옵션:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD ë˜ëŠ” -c 명령 ë˜ëŠ” -O shopt_option\t\t(invocation ì „ìš©)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ë˜ëŠ” -o 옵션\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"`%s -c \"help set\"' 를 사용하면 쉘 ì˜µì…˜ì— ê´€í•´ ë” ë§Žì€ ì •ë³´ë¥¼ 확ì¸í•  수 있습" +"니다.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"`%s -c help' 를 사용하면 쉘 내장 ëª…ë ¹ì–´ì— ê´€í•´ ë” ë§Žì€ ì •ë³´ë¥¼ 확ì¸í•  수 있습" +"니다.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "버그를 보고하려면 'bashbug' ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "bash 홈페ì´ì§€: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"GNU 소프트웨어를 ì‚¬ìš©í•˜ëŠ”ë° ì¼ë°˜ì ì¸ ë„움ë§: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: 유효하지 ì•Šì€ ìž‘ì—…" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Bogus 신호" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Hangup" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "ì¸í„°ëŸ½íЏ" + +#: siglist.c:58 +msgid "Quit" +msgstr "나가기" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Illegal instruction" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ABORT 명령" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT 명령" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "ë¶€ë™ ì†Œìˆ˜ì  ì˜ˆì™¸" + +#: siglist.c:86 +msgid "Killed" +msgstr "Killed" + +#: siglist.c:90 +msgid "Bus error" +msgstr "버스 오류" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "세그멘테ì´ì…˜ 오류" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "ìž˜ëª»ëœ ì‹œìŠ¤í…œ 콜" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "고장난 파ì´í”„" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "알람 시계" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Terminated" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "긴급한 IO ìƒí™©" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "멈춤 (신호)" + +#: siglist.c:126 +msgid "Continue" +msgstr "계ì†" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "ìžì‹ì´ 죽거나 멈춤" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "멈춤 (tty ìž…ë ¥)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "멈춤 (tty 출력)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O 준비" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU 제한" + +#: siglist.c:154 +msgid "File limit" +msgstr "íŒŒì¼ ì œí•œ" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "알람 (ê°€ìƒ)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "알람 (프로파ì¼)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "윈ë„ìš° 변경ë¨" + +#: siglist.c:170 +msgid "Record lock" +msgstr "ê¸°ë¡ ìž ê¸ˆ" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "유저 신호 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "유저 신호 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT ìž…ë ¥ ë°ì´í„° 대기중" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "ì „ì› ë¬¸ì œ 임박" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "시스템 ì¶©ëŒ ìž„ë°•" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "다른 CPU로 프로세스 ì´ì „" + +#: siglist.c:198 +msgid "programming error" +msgstr "í”„ë¡œê·¸ëž˜ë° ì˜¤ë¥˜" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT 모니터 모드 승ì¸ë¨" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT 모니터 모드 철회ë¨" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT 사운드 절차가 완료ë¨" + +#: siglist.c:214 +msgid "Information request" +msgstr "ì •ë³´ 요청" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "알 수 없는 신호 #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "ìž˜ëª»ëœ ëŒ€ì²´: %2$sì— ë‹«ëŠ” '%1$s' ì—†ìŒ" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: 리스트를 ë°°ì—´ ë©¤ë²„ì— í• ë‹¹í•  수 ì—†ìŒ" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "프로세스 대체를 위해 파ì´í”„를 만들 수 ì—†ìŒ" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "프로세스 대체를 위해 ìžì‹ì„ 만들 수 ì—†ìŒ" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "ì½ê¸°ë¥¼ 위해 ëª…ëª…ëœ íŒŒì´í”„ %s를 ì—´ 수 ì—†ìŒ" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "쓰기를 위해 ëª…ëª…ëœ íŒŒì´í”„ %s를 ì—´ 수 ì—†ìŒ" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "ëª…ëª…ëœ íŒŒì´í”„ %s를 fd %d로 복제할 수 ì—†ìŒ" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "command substitution: ìž…ë ¥ì˜ null ë°”ì´íЏ 무시ë¨" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "명령어 대체를 위해 파ì´í”„를 만들 수 ì—†ìŒ" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "명령어 대체를 위해 ìžì‹ì„ 만들 수 ì—†ìŒ" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: 파ì´í”„를 fd 1로 복제할 수 ì—†ìŒ" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: ì´ë¦„ ì°¸ì¡°ì— ëŒ€í•´ 유효하지 ì•Šì€ ë³€ìˆ˜ ì´ë¦„" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: 유효하지 ì•Šì€ ê°„ì ‘ 확장" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: 유효하지 ì•Šì€ ë³€ìˆ˜ ì´ë¦„" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: 파ë¼ë¯¸í„° 설정ë˜ì§€ 않ìŒ" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: 파ë¼ë¯¸í„°ê°€ null ë˜ëŠ” 설정ë˜ì§€ 않ìŒ" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: 부분 문ìžì—´ í‘œí˜„ì‹ < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: ìž˜ëª»ëœ ëŒ€ì²´" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: ì´ ë°©ë²•ìœ¼ë¡œ 할당할 수 ì—†ìŒ" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "향후 ë²„ì „ì˜ ì‰˜ì—서는 산술 대체로 ì—°ì‚°ì´ ê°•ì œë©ë‹ˆë‹¤" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "ìž˜ëª»ëœ ëŒ€ì²´: %sì— ë‹«ëŠ” \"`\" ì—†ìŒ" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "ì¼ì¹˜ ì—†ìŒ: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "ì¸ìž 예ìƒë¨" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: 정수 í‘œí˜„ì‹ ì˜ˆìƒë¨" + +#: test.c:265 +msgid "`)' expected" +msgstr "`)' 예ìƒë¨" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "`)' 예ìƒë˜ì—ˆìœ¼ë‚˜ %s를 발견" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: ì´í•­ ì—°ì‚°ìž ì˜ˆìƒë¨" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: 단항 ì—°ì‚°ìž ì˜ˆìƒë¨" + +#: test.c:881 +msgid "missing `]'" +msgstr "']' ì—†ìŒ" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "문법 오류: ';' 예ìƒë˜ì§€ 않ìŒ" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "유효하지 ì•Šì€ ì‹ í˜¸ 번호" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "trap handler: 최대 trap handler 레벨 초과 (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: trap_list[%d]ì— ìž˜ëª»ëœ ê°’: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: 신호 핸들러는 SIG_DFL ì´ê³ , %d (%s)를 ìžì‹ ì—게 보내는 중" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: ìž˜ëª»ëœ ì‹ í˜¸ %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "'%s'ì— ëŒ€í•´ 함수 ì •ì˜ë¥¼ ë¶ˆëŸ¬ì˜¤ëŠ”ë° ì˜¤ë¥˜ ë°œìƒ" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "쉘 레벨 (%d)ì´ ë„ˆë¬´ 높습니다, 1로 재설정합니다" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: 현재 범위ì—서 함수 컨í…스트 ì—†ìŒ" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: 변수는 í• ë‹¹ëœ ê°’ì´ ë  ìˆ˜ ì—†ìŒ" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: ì´ë¦„ ì°¸ì¡°ì— ì •ìˆ˜ë¥¼ 할당하고 있ìŒ" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: 현재 범위ì—서 함수 컨í…스트 ì—†ìŒ" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%sê°€ null exportstrì„ ê°€ì§" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "%2$s를 위한 exportstrì—서 유효하지 ì•Šì€ ë¬¸ìž %1$d" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "%s를 위한 exportstrì— '=' ì—†ìŒ" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: shell_variablesì˜ ì‹œìž‘ì´ í•¨ìˆ˜ì˜ ì»¨í…스트가 아님" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: 컨í…ìŠ¤íŠ¸ì— global_variables ì—†ìŒ" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: shell_variablesì˜ ì‹œìž‘ì´ ìž„ì‹œ 환경 범위가 아님" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: 파ì¼ë¡œì¨ ì—´ 수 ì—†ìŒ" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: 추척 íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°ì— 유효하지 ì•Šì€ ê°’" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: 호환 ê°’ì´ ë²”ìœ„ë¥¼ 벗어남" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"ë¼ì´ì„ ìФ GPLv3+: GNU GPL version 3 or later \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, 버전 %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "This is free software; you are free to change and redistribute it." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "There is NO WARRANTY, to the extent permitted by law." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %lu bytes를 할당할 수 ì—†ìŒ (%lu bytes 할당ë¨)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: %lu bytes를 할당할 수 ì—†ìŒ" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: %lu bytes를 할당할 수 ì—†ìŒ (%lu bytes 할당ë¨)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: %lu bytes를 할당할 수 ì—†ìŒ" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [name[=value] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] name [name ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function ë˜ëŠ” readline-command]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [dir]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [옵션] name[=value] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [ì¸ìž ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [ì¸ìž ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f 파ì¼ëª…] [ì´ë¦„ ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [ì¸ìž ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts optstring name [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ename] [-lnr] [first] [last] ë˜ëŠ” fc -s [pat=rep] [command]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [job_spec ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p pathname] [-dt] [name ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [패턴 ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d 오프셋] [n] ë˜ëŠ” history -anrw [파ì¼ëª…] ë˜ëŠ” history -ps " +"arg [ì¸ìž...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobspec ...] ë˜ëŠ” jobs -x command [args]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... ë˜ëŠ” kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o 옵션ì´ë¦„] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [name ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [name[=value] ...] ë˜ëŠ” export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [name[=value] ...] ë˜ëŠ” readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source 파ì¼ëª… [ì¸ìžë“¤]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". 파ì¼ëª… [ì¸ìžë“¤]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ ì¸ìž... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signal_spec ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] name [name ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [모드]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAME [in WORDS ... ;] do COMMANDS; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case 단어 in [패턴 [| 패턴]...) 명령어 ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if 명령어; then 명령어; [ elif 명령어; then 명령어; ]... [ else 명령어; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while 명령어; do 명령어; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until 명령어; do 명령어; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAME] command [redirections]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function name { 명령어 ; } ë˜ëŠ” name () { 명령어 ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ 명령어 ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( í‘œí˜„ì‹ ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ í‘œí˜„ì‹ ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [옵션ì´ë¦„...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v 변수] format [ì¸ìž]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o option] [-DEI] [name ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Null 명령.\n" +" \n" +" 효과 ì—†ìŒ; ì•„ë¬´ê²ƒë„ í•˜ì§€ 않습니다.\n" +" \n" +" 종료 ìƒíƒœ:\n" +" í•­ìƒ ì„±ê³µí•©ë‹ˆë‹¤." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"성공ì ì¸ 결과를 반환합니다.\n" +" \n" +" 종료 ìƒíƒœ:\n" +" í•­ìƒ ì„±ê³µí•©ë‹ˆë‹¤." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"실패한 결과를 반환합니다.\n" +" \n" +" 종료 ìƒíƒœ:\n" +" í•­ìƒ ì‹¤íŒ¨í•©ë‹ˆë‹¤." + +#: builtins.c:471 +#, fuzzy +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"간단한 ëª…ë ¹ì„ ì‹¤í–‰í•˜ê±°ë‚˜ ëª…ë ¹ì— ê´€í•œ 정보를 표시합니다..\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" 옵션:\n" +" -p 표준 유틸리티를 ì „ë¶€ ì°¾ì„ ìˆ˜ 있다고 ë³´ìž¥ëœ PATHì˜\n" +" 기본 ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.\n" +" -v `type' 빌트ì¸ê³¼ 유사한 ëª…ë ¹ì˜ ì„¤ëª…ì„ ë³´ì—¬ì¤ë‹ˆë‹¤\n" +" -V ê° ëª…ë ¹ì— ê´€í•´ ë” ìƒì„¸í•œ 정보를 ë³´ì—¬ì¤ë‹ˆë‹¤\n" +" \n" +" 종료 ìƒíƒœ:\n" +" ëª…ë ¹ì˜ ì‹¤í–‰ 결과를 반환하거나 ëª…ë ¹ì´ ì—†ì„ ê²½ìš° 오류를 반환합니다." + +#: builtins.c:490 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"ë³€ìˆ˜ì˜ ê°’ê³¼ ì†ì„±ì„ 설정합니다.\n" +" \n" +" `declare'ì˜ ë™ì˜ì–´ 입니다. `help declare'를 보십시오." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" + +#: builtins.c:652 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"ë¡œê·¸ì¸ ì‰˜ì„ ë‚˜ê°‘ë‹ˆë‹¤.\n" +" \n" +" 종료 ìƒíƒœ N으로 ë¡œê·¸ì¸ ì‰˜ì„ ë‚˜ê°‘ë‹ˆë‹¤. ë¡œê·¸ì¸ ì‰˜ì—서 실행ë˜ì§€ 않는 경우\n" +" ì—러가 ë°œìƒí•©ë‹ˆë‹¤." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"쉘 ì‹¤í–‰ì„ ì¼ì‹œì •지합니다.\n" +" \n" +" SIGCONT 신호를 ë°›ì„ ë•Œ 까지 ì‰˜ì˜ ì‹¤í–‰ì„ ì¼ì‹œ 정지합니다.\n" +" ê°•ì œ ì˜µì…˜ì´ ì—†ëŠ” 경우 ë¡œê·¸ì¸ ì‰˜ì€ ì¼ì‹œ ì •ì§€ë  ìˆ˜ 없습니다.\n" +" \n" +" 옵션:\n" +" -f\të¡œê·¸ì¸ ì‰˜ì˜ ê²½ìš°ì—ë„ ì¼ì‹œ 정지를 강제합니다.\n" +" \n" +" 종료 ìƒíƒœ:\n" +" job controlì´ í™œì„±í™”ë˜ì§€ 않았거나 오류가 ë°œìƒí•˜ì§€ 않으면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆ" +"다." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" + +#: builtins.c:1431 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" + +#: builtins.c:1502 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" + +#: builtins.c:1726 +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"디렉토리 스íƒì„ ë³´ì—¬ì¤ë‹ˆë‹¤.\n" +" \n" +" 현재 ê¸°ì–µëœ ë””ë ‰í† ë¦¬ì˜ ëª©ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 디렉토리들ì€\n" +" `pushd' ëª…ë ¹ì„ í†µí•´ 목ë¡ì— 경로를 저장할 수 있고; 'popd' \n" +" ëª…ë ¹ì„ í†µí•´ 거슬러 올ë¼ê°ˆ 수 있습니다.\n" +" \n" +" 옵션:\n" +" -c\tì›ì†Œë¥¼ ì „ë¶€ ì‚­ì œí•¨ìœ¼ë¡œì¨ ë””ë ‰í† ë¦¬ 스íƒì„ 초기화합니다\n" +" -l\t홈 디렉토리까지 ~로 ì¶•ì•½ëœ ìƒëŒ€ê²½ë¡œë¥¼ 표시하지 않습니다\n" +" -p\t한 ì¤„ì— í•˜ë‚˜ì”© 디렉토리 스íƒì„ 표시합니다\n" +" -v\t한 ì¤„ì— í•˜ë‚˜ì”© 스íƒì˜ 위치와 함께 디렉토리 스íƒì„ 표시합니다\n" +" \n" +" ì¸ìž:\n" +" +N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 왼쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤ë‹ˆ" +"다.\n" +" \t세는 수는 0부터 시작합니다.\n" +" \n" +" -N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 오른쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤" +"니다.\n" +"\t세는 수는 0부터 시작합니다.\n" +" 종료 ìƒíƒœ:\n" +" 유효하지 ì•Šì€ ì˜µì…˜ì´ ì£¼ì–´ì§€ê±°ë‚˜ 오류가 ë°œìƒí•˜ì§€ 않는다면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆ" +"다." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"파ì¼ì—서 ì¤„ì„ ì½ì–´ ë°°ì—´ ë³€ìˆ˜ì— ë„£ìŠµë‹ˆë‹¤.\n" +" \n" +" `mapfile'ì˜ ë™ì˜ì–´." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "현재 서브루틴 ì½œì˜ ì»¨í…스트를 반환합니다.\n" +#~ " \n" +#~ " EXPRì´ ì—†ìœ¼ë©´, 다ìŒì„ 반환 " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: 프로세스 %5ld (%s) 는 the_pipelineì— ìžˆìŒ" + +#~ msgid "Unknown Signal #" +#~ msgstr "알 수 없는 신호 #" diff --git a/bash-5.1/po/lt.gmo b/bash-5.1/po/lt.gmo new file mode 100644 index 0000000000000000000000000000000000000000..31a29ca45d16415baed89fddab49bab81724b063 GIT binary patch literal 28987 zcmbuH3!EKQo#zWgfrcQ8$Wy2Un(ijKo$dq>ItdW+fIwc71kliQSNE;HUAa$g-Rh(P z9mbK7@x{(KPIR1Qz~_pitRlLj0zT3+>$tnR3L-vm*46Q`$~d~pIOAi#zjIF2t$Vxk z(7hi{epRQ=`~3g^^Z)4hI}w399`Y!Iyx0z~_T^ zgQtLR1y2M222}k64!;ie^ZrwC33wKjHIBgQ}0V>!42)cb_PeW2$1 zCa?hB@AAI@YTVxi)!xxQV**bB$?^)I)?o`c0EXb1;60$)djQn;M?j792~gwt0my&e zv5VPDu%CZa{#sD^qoC&fDsU0_7EtqkC#ZfO16BT8p!Vgb?)_*MLG?}r)$cM;<6RGG zT(^K~Zx+-zUJI(dcZ1rOIhX$QW1S_D{=RQ#5dj!;eKLwru zJ_Bmq{teW)PJmc11DAkgc{hW~zY`Qa?gv%xeGVT6MX#R*j{`ps9s@q^-k$P`$#(n=W zsD6J1YF|%=*wkM?sBx_XwSMbCNZq>uWawT3vLxQyLDl~hD0+AtRJmtBNXJ`5XWGZ* zp!RVysP&o#wLb~i2fhJRy^ny$fnNsI?>9j8^9-ndPFZTl)dy;xmx3z45mYv0yX}3fc)qE1OI3}ehF%wPDi*b z0+)l@$2FkVV>c*%s)G#8yUXE+!IOCZ7O3@k22_8~f}*cuhHUvWK((_G6yLl8yb^pB zsQEkwitfJwG8OMxQ2q3>7#ipGpx*xw)Ovjoq=@$fcnSEt6;^Jq0Z-&EsBB?K}h`TD;GJs`n#s8~97`1>mNO zEba!M%X<|ReZ-*X*kg0eV!fe|AaZu~_Mu%?&Ap!55;3n`1P~$y!#L~@9Q2qQ7sBwG%)H;3) z^uf=98vl1d&HGq3LF;m!!y!=PSp$l1i{P2yJHQu%kAUK*$KCs{K&|g7tL=D)K=nTg zY9C(Sm)rHLf?A*ZKt!AOB~a`5YljzJVd?HhP<;7j@L2F;py=o^Q2YD@cslqjsP<33 z(zbUssBt&JbHTTOTIYws=Yx-d8s8Tj{u)$!OV`@(TR_p}D0ueK&^gEyygylI`}=!P z>;I3S+C6r?9p?)`^>;C-dF=vU0^SLVKJEoY|L+5R@Z%1@4r>2?1!`SS+hE%t1hwzG zK+SUkRQtC(d^@P}p8&OiwZCryPXj*zs@#{| z_aA~@fCHOs{cAv#yA@mv-VJI#4}cedUjW5dzi|0WueIaa4vKCf@C@*cpw{QT zU?2FDdq3(ryS^(y^>d}e8$s<;4fMf3aCjf6d4C!d9excIJ^cjKyu8hJe@+Kg?ov?e z`!etZumWm+`#|mEeo*uH7o?eC4C=-?hu4ud`5b)dfA0G{qG0W?>j&r{3!Th@JaAg@EK6!JLX2a?x%w4 z=X_A(x)#*B-35w1?g2H<2SK&_ILMLZeIFG6FS!X_1iTWITzxIL6np^e2fqS}E`JMh zRCsG%ZrAfRQ0+YcYW$Can&C&n0sI_j&Ry^#-Y?v3 z$1w(K-meB#{%xT6>ph_QoddNVPl2nze+E^5>CJXs#zE0}9n`w-1J43q2VMfc2UPuU zg5uMkfrxzX%u%~8w}6sMcYrIwdqK_XOQ7c2bBo=-i^0{rkAhc%f9de+py=-GF}q)z zL7ls!;Avn3ghjl&LAKQUDyV&0K5prICur!x;eMC@X;5_YHSiqp=)kV;Vo-c|HMj%3 z0aQN^fSUhjz+=G2L9ORg;9~HfK+Wg42}^$~!6Du+2eqzs@M7@&pb!2p@LcfdNjtA4 z4p)L&r}d!5wGULe{h$wi3>4jd6|8_i0AB>&P_*MOgW8Wj1+`A^1&6_pgQAlkfue^q zLp!cvP~WSd=;5zH&Ep|Z`}s7u1bpt4{oW6r$@^+h{Ba|w^$9@Ln+2}`-vzD%zvJ@z zOLiZ2fTFKgI{YxG{rw&&Iy-IJuAdJYIs~sFf84#l54?=`r$LST^vI6mT2Sk-6V!Mk zupfK_cs}?rsQvmHsD1n%*a!X+)HoOKvFjazTJP6@>i=Et{VA|lp|te z0lX0WFsOdM32Hrm2%ZQ22K2!tY}!(A9jJAzgR1vBZ~%N5RKMQ>MF%gcLPOv+;2Q9? zpy+50RJnf#HIJd1-QSxW{xNtp`5$rbzXFfv{ldDH(-(n@dEW|(&Klq~;60%D`m3PE z{rrY)e)(MR#Z1YWZjxcogrVk$XtrByA$)e=#qblYWqk zcYw5(bc`zUQ@a{iqG{m=k;JZmbB8`#s+hxJ~ z58(4jUnQMF*%L|k^Zb`2{rg1iGm_-csd^{<7eIXRN|Ju!sU4)F_;xDzUrGHuuOSVRUeEirB>nz{ z^g+^}lfF$_#drOluwdx>`#djk`R6$`r`^G|z7&oj{r)jgn3y|8Kwzq(RbE zq-RKfO1hnN0pEK``d#Yqojl)0TBA&UFC~4zJlTJ41x}#s|IOunoac{_W=ShZHNf&@8T=M$ zwafdYKDb{Gc`xVrU8IxT_jAFwyYF{7JQ3VOdJ$~ota4YFpQu;eDeE|Q2^a9GgkR(}nJZXfK{*LD1S<-t*50aiwIsIM=eg>?N ziljc?CqeysN&nqE;j;mk^X(eZGB_@79RlKz^c-&wBxtH77oEbl(>INsO0_c_q#{Z-)E zr2k2}iKO2~3*N^Z{@UT4;N>Kr^f*bs*N`r!olC(_kggzg|9(ow|8|-01<#}W7rF{P zhrG=$ZyWd_(rZZrnMr2XazS?uzjs}_Is)fFHK1KY=pjNB5R4gjh z=*4eMM=?FmdcBjqG!xZkf=a}AOb4EtOtYq9b z`_k;`fYL?3zc(I8voyJhdQvlGgW9Z5OYxxjswJ*Z`OTnK3K^HiZJxt42q(L;n_)3(hLbIu-7F>5u-1zGY7#S`&~G&BlVNPO zPYrBZueGyX)xs8YE&Gk2HEmjsrlQF}i{8ea*b6`0$B0^C z(bVYN<4VK`Sh%3s3}*dmSeMTZyTD?}NG45tG$^47qzIsPV-aB6L%_&7@DSA3$QS?1ZlpRURz2nz))#PLp;!^Wz~*GQt6j#*JjP{4{SMBAgXt@2 zl{lH4R=#`Z$jQ!tTvjtIC6K1!#$0yC+0f3fbxD-$OK}!DKxkHAtV%s7IH~? zI}U%{njo_+iMri#d91TK%aO(*zURqT3s=>t;nxz5H@H}XNM%9B{poRNW{~BklG5cO zM59co!{6>T6Ljg3qf-oRp{rI_%;N#qvhI zDS5=gB@I1u$nT9>(_#vDS~6O1c?&t79g^VumwRik+IIa;R)aN7 zj3DvWPS6jn4h{}_Yaz+1KZ#yd_SS9RWseeX9RwcLlF(aUui1b4dy50!Mx>l8u@Txc zCq$!;7-RaAp;e=<-nt96jHj3RoF+y%qI+1iWuZ@n_9xh}26xxB~Qwt4;b8`oze*b$bb=GZQ$f~3;&b{MtJa*Ia1 z!%Dl}qPL?}Z#1N?N%agW1MQ4fOM(j$?#i=tJ>c!!v}MD_ZP#yEyK@BnZ?Z2Z?ahSS zXO*|JE#-DjhklhaNJP(aO9oDa9RFgs9*?ih5Ec*pW>Tw(_z_mp6x$y-(9D3_A6Q5$ znj8}$CTO4-PN85sospSUW(R$L=WHYN$61Uy>z3~$5 zQzaBjY1z%vxvzR37XwcurM^spQoI=&QAM^$=SFt0zE{+UiBa@kUQaBCrc`+TSUay4 z?#-x^{M|Zj7>z&b?cSXioTHeqZsGZx~@h# zOQnVdg<{w((_vB3i!Lwi9RsTxG|a}kFR3!Iz_`?yNGb3eGBTS^XiI<4G36StC9FJ; ziU=6=q_F8eIyJJ*7DfdeAL!GnStBU_vdpU0NC0nqq+P}s*{Cc(AujeOJ-f1pcE>?WwuO!>YhX(_imIeqXNROV(i&qrc#Spf=bc9e^!$DH9bmeitsV~%vPy)@Fs?VTJB zDQQh09?Q&o)Ptz4fy&Z2e?bcqzs3h+v-`UZixjd~7DoIB#Yz+7MA@xH)mzOsHqST~ zP13CO`BTk$HK!1Y5aN2$oMhqLf@F2DofDb<2%nq==?K#JJ~+G(KzogLk@HWO9o9Nf zm7~S>IaNei)__D}#iRjSsJhA4Ms<8QON6+g>lkB*LDVPqup!WrG51_E#-=<}flNV}!ol-P_OXh=o{oP{yc=4?aI+NmjH&E(nD`3h1w)n-ANA=1(e2~XCOinFbC zxJqGM=F<<(B;PtT7JHKoRNvOrVKocm>X4q0QwwByNiogbJF>ePes87dSrc?397E8t zwH5w>RgG0dj)$5m5i?n7upGOWZsniC)={!&BBLKp%%Xogv&NV->e-;&;Z&xN^Jdg?F|TKR4^dSIn>x+Z52NN7acNjf zo8yH@#(ektqLx|sR22J&VviSy0ZE7t$fyN1=B7-Pe1@S3bc@+hi3C@q&`{ybzmW?0 zTpoV6#H!Vma3+*2pA178fm4%ofSW?iYs!^c6EN-$uoA>A(-FlA>;?|FH5}-CapXGc zb$b(}lV$!weKhNqo(M+kHWsBMsx^RyS7{zA%)cxBfq_+ivF@+iwq?uOt?PH_1zSR; zx2{FA-wo5#Y1iHlS8;;v#i!3#GnIO>q$0HgQ&k&8Z3sPZ5JxhUzN6Iz3jKn8k(E=~>Na z$Sl|G+5DN{E49-myMMs%{Nmx_o7@ZIq|$!UxKJ^%MNFxo7h%Q9B_&!-)k`n+Mm0DY zjng#E=yYGSl?!c>nS&op$rys(3Q-LiVUBQysElIhGQ4Oio5Lz;i?!S<>RaVd-$%8# zDufVf6T&Fm=%qRpV!Abr8v&(_6D-W~J6_rjI;0SU!wldkELy{!=sRg^)8Rh65ytPE zW_7*RCtL7wSEe=7(p;%%^kZlP!b#0>WlQAB^TYF)*4N*C!Khcp#Rtd5P)^BY-r*NG zM=|}9s?W2_9yN;K9me=lRjm!HZE6>2AT8#JS<`dFIzDkoiOh52$9VL-wr9&c;g>gZ zOu`d(mG$9?{AoNj8bp41C6DjAaWRriN8Olg#j#?2(y&x|L6G?ljK(It!jw%eYxQxh)B}vtn`LK3ULslZ^pwidbXS8m=f{ZQE5ZgBnVn z6gywV9maAsnv}|#j*P~|i(R5rp3LgI%}P}+$;-Wt=+S}p^-+Y=tgR!BNJsU@xgluv zc^%AT^j_J+h^MK<_#y&-oCWS%=8xlTuY^3X+~WyqOQnxS>kWct8e^zx=g;C8nr1Bc%}GV;w1Z#~fEy zC8=d&5H5F$TCEX(>#oh4CAGHi*uG&Mt<)j8Dt={rhq|-y8c96eH5|so+A^rU`mlNX zs3#AMEl;D;j$&omd(8a7c8HTID}UI-Dl7RroL6myg626*v#N}<&Cq7X+3A$GCMZ^d zbHnDCn^kWk@1eJsC)k+TL3~Beyej6KyJx|30`XL=uDNm3*7aj+H*emyE?>)@$p`62 zA5G!ZhfHs>#EgW)|1~BnfK420HG>AbEP^pMui+f>#w3V#_ZCOltcJHh4GDHcDvEzm zmLCJ&vFYlu^&2-Y^U>UF>pDN=*_5GGosGlFlo#V|88gPJyYQY!q+w)>W$xUVJRD+7 zJY&95Q&!jl8q=!L1+*(`K3UCB9$UIc>O>{Hu^L*-oDK|W*h7h!vQpnZVLsGaS&YWa+;zQM4dSw;=k%1#1gB@M+f3m$XO_Jo9`#bI3ssnxS=_1n z95dx#v=gxWLjH;)D~621P3M#xW5^pp+tH&sp^VeDJ3rMzoPFa``aAkF*@tf#^QvEa z&)Ji&PWGz4+`zg%=JcTUu-G+sZ`0XQy6U+~sd?DdtjR{TO_!tVb8a?LfYJA*>3e9k zkb%ZA>WPFni*&{9Zu&j34%AVR{U9+qYLp#Bw$XkJp{U51V-d?_j&0B#Zw?!sFJ(zop;2AmmO+N+r*yRlyp=vN=V8K#$@%&+9`Z(4$=NRR zEn0hch)YVGzgD9(#!Fj&DfnAayLHi8G#3Vt7*^vHjzBI5t<25}dkT#jF{T2Zlr$hA zz&4F|rBY72Q_(TV8(l^I`ANcvR3Z()k#8m~GKR`HV)RDsA*PDG@Zoz?`Wly**^_hm zW$%S`Y3xFks2Zt*CWePIeHO33UCVau!p0*hEp70StLoxVq-YtXsmom6-mJ?#S=dx8 z++eR6C1m31!bO8aJ=dF?io%w-6cr0sabHo`Ss(Fxwr|^6Sf?#Qy)UfCdKmFn46PU{ z3=bDpTI8=_FQ8yNY)X;ANFytTnVDu zDsxl9!M|qL&W(jj+vPN9x+rX@O%g(+{l9b~YW3V?mTSbfE9fJ{&D>*F69avQNGc-Y7O%muUWYYC#Alu z>96$;53N}<>|bz!ug9UqYlesYEBqm!;=EtJW`#bPVneHkhx|M4u;utLG(f>&3a%Jf z)#Dvo36e4k+VT%PID-;f)$L(aI%e{&g;-PYPgD(9xpI{F z6Laq`CU9sJmm{2xo()CB{0yRawu}{Df@EA|MKd61LC)09ud;~i^8S}?bYhe+AMA?W z*jHETq80g?*$fUNQDdB#IK|m!Ksm)8`Fg}tRffWtvdaj#BdC?@F@cTH1T%mh<;9<0 zpc#}=B@rWYk3v4}Cck~>y}j|b@BAzD0q%jAb^FtFICp$2DOj8d_lVMK5v4`sS;2G?K}AfK@7jGS zA$8$xg-9al4KL)z+`zA;dIv2Kw1`#FcQfWXq-A()eoL-k?nAmEh({3MaT#$YbN4p`{*eH%6>Yx84^J^>d>h;hMV1y_w(HL3H6mhi z;A^4^f@Xs&pvYXur<{&-Sb}gcy%8q>)y6*83azk$tZ5~1^&2B2Y#0psNmHkvh836D zcf`19IzF(!EGJCLwK{pshq*_QIg~NY*Wd$fc}*j?acV3}K6-t>49Y4lGc^ zQllHPBq{rZj=CpEu-s}k+SFxp62y@`%FQBB%pJBawzJiodw-c3AWNba{8)zn%t4!! zoq#h(j+&5GkRN{CZKWyT1UjmHakiSTsY9HzSLcV@hU^$k-y1qt%&}`(B+X9`)oigH z$EM#QCJAsWCOHUF(t^+k__TV;fd|V?DVVNKo70<6CV!3KNSPs~HmDtDN*+msnP5sD z@%KE>q|LBHDZ45xj1!PMPpc_$gqgvm%EdyG${Ylm;Q}97JSfJ^Fny6MZwuN$ERQN- zbR4VSnJyP7T?>+;3L<%yOD(ZW&he6wHw147~okb+$eaP@d|k4P4_k{Nbh z5v1&2;O#u{Hl(k&wpEGBY^FmSL~2fUTWp6qk$5cYvZ})J+mpvr)SK)%7e%^9itEBr zq~=pDiZrT}P;yd{A7z20c>>)kk1)!(WMw@ICNq2thWbxkrn}WL1ExF%S%A=&aBg8Z3i9i>Wmz32AL*MYe7Y zQ@zXifS~||w`Tb%N4GPuPq`%tJTp-%7PBx`xR(Ypf>-cP{sno{4tYIH*_dc>q&0d( zTyV;&s@rbU^)=RN$JR4D*=3p~o8D30uBhF82`8ckwKIlY>s5x0y96t@CA(D)5;GHH zdLSBiB5|NZFP)^*i3qE zScBnG4gTOgEL<-$U9nu%rJMpei!5jv3X1%G{;mQ8bfBY9hs3dQn|+-}RlCVd0( zc7)ZS9om~7GX>X3JIbaV-J9)3FzPu?wA4KC;M}8(q2FFGbJ>bfPQe@<1O)rG#ZX!^ z)k;;~9Vu+Gmrac}tap%mt|WCvbQ_dfqx5J;tvCIeE90!0VlsjDWfWx_^vmgJgMPCj zb`d$TC%FA<25dKhtP^{}GLp*r2HK-aog}8Hd?dDDeO^I%tuhrIvQ`|hbv0$~SdF$b z8aPw%)7`-Jn%bhcF>47IC#{4DJHf$mNF(-zF}gh|(^H}k)<>1CF6^X0D>%81<8RNv@ecqiY(|W8oO$ zd4%aHSjGO8qKP3kin*V$Q0fC}^Lr*%4&q(p;*BkGp~PL}VMB?HN6;LbM$KY1j1MUn zRIKigOlj2aptQ*`ohq=_DN7bMedb&(HIoLOUTAUQC}V4l>(48U>EaQuvS6ffP{HwG zScE`hV@}I=En~Vq6XP?)mDStd}~Afd_zvtZ@xwkcM5 zTRvEM``R1UuHUqE)0VY6Ow97!Biq)`J+f)-CKJEu;+DJXnLuQk&fmbup%t{y|6=~k z9Vx|8SWaAgaaU3JH@poyAKBem4h^#iSx7w~OgE4pi)Xcj0@-iEmk0dftjcg-p+f{M zA#$A{z@sL*fn+hqJvSuWD4U}nEzHF?6SLipYj(?vXRJ+|+1j$_xBKb5O>nby1nCGd z;m!GPS$K0MS~!g(jv21r5)DZd$`q_r!S8R}!-i#zh!4EBL%31DEiz8jc2?ex7Z4>V z!Hptbz+Wvdt;itF5)QX(S%Z=UrtW1P5hF`{X zCZ8d8ITP(FdC(6s^b=gOhi$;PDs+je|ItS5$?i`jd{8tBt^8Hi9iSjQ<80My{r3*8 zHnl|$hCK~Q&JVDL_{v-u$z$W>i@gS!A7*WwS?PtY`CkaQml!Em3`$&7>Kv4DJ&zAFNegt+cDI*6PB6u5s-Bt^VQcv3A zG7YYl|MJhVmt_(USN(0B3 z!m@YflznRnL-A_Mm^2 z46M}OU?RYsD{7f~$)dcqL55t(G;SngGZXE-(1nCJn8`bpl&1wt*-SIAGAlRtkao#6 z$bd2@FJYM)N@1VIU~bOL0fIL<)o>}z{8LR8`HYDue|ML13>laj>1-7wt|c}C1K#M8 zH@YV=S9ub@8UbfC#m%~y5Wf7Hm_RILOh#M>E)X|v)@feoIH5Ex)S*`Wh=Rv0zh%~| z|C#$3Rj-)GW4iq59IDHVF(lG3a=53%TMr8yVI;X2B=dJ4Q7pM(0q&!mOO4&^3MfCk z8j(ea|DKveR{#G)naHV!#Elc2aL~5AoJ32_`Amc8FmJsDqR^#qrPs@_2=b$W&~|!N z5a%PxUFf=vLr?4AG^*6(p!N?FhQ3foMx2^X(rYP($gRV{&xn-)Y#^&)Rl$gYHz)8y^`I;~$gUBkRI(DEL6X&aQ8N~OcKtPXQjdRZ##)^V>N2X`py-~PF;U91I zufrjNTgrJEY@DktVnPyWA>}We>G~fMx^`kh+w%eWPWeXxhrZGq`eK5|T+5v=y2ua7AbJKU^rHVR@ z5xg(M6t!NLdiYz=!ucOV7-a~u!Zh0-cQ&7|yzvMs+dsC+?@jkc*)ZFj+8TSEt|RaN E0YL;^IRF3v literal 0 HcmV?d00001 diff --git a/bash-5.1/po/lt.po b/bash-5.1/po/lt.po new file mode 100644 index 0000000..06bdb44 --- /dev/null +++ b/bash-5.1/po/lt.po @@ -0,0 +1,4694 @@ +# translation of bash-4.0.po to Lithuanian +# Copyright (C) 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# +# Gintautas Miliauskas , 2009. +msgid "" +msgstr "" +"Project-Id-Version: bash-4.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2009-03-25 16:49+0200\n" +"Last-Translator: Gintautas Miliauskas \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "blogas masyvo indeksas" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:700 +#, fuzzy, c-format +msgid "%s: invalid associative array key" +msgstr "%s: netaisyklingas veiksmo pavadinimas" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: nepavyko priskirti prie neskaitinio indekso" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nepavyko sukurti: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: nepavyko rasti keymapo komandai" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: pirmas ne tarpo simbolis nÄ—ra „\"“" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "nÄ—ra uždaranÄiojo „%c“ %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: trÅ«ksta dvitaÅ¡kio skirtuko" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "„%s“: nepavyko atjungti (unbind)" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" + +#: builtins/alias.def:131 variables.c:1844 +#, fuzzy, c-format +msgid "`%s': invalid alias name" +msgstr "„%s“: netaisyklingas keymap'o pavadinimas" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "eilutÄ—s redagavimas neįgalintas" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%s“: netaisyklingas keymap'o pavadinimas" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nepavyko perskaityti: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "„%s“: nežinomas funkcijos pavadinimas" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s nÄ—ra priskirtas jokiam klaviÅ¡ui.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s gali bÅ«ti iÅ¡kviestas su " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nepavyko atjungti (unbind)" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "prasminga tik „for“, „while“ arba „until“ cikle" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Grąžina esamos procedÅ«ros kontekstÄ….\n" +" \n" +" Be IÅ RAIÅ KOS, grąžina „$eilutÄ— $failo_vardas“. Su IÅ RAIÅ KA,\n" +" grąžina „$eilutÄ— $procedÅ«ra $failo_vardas“; Å¡i papildoma informacija\n" +" gali bÅ«ti panaudota kuriant steko iÅ¡rašą (stack trace).\n" +" \n" +" IÅ RAIÅ KOS reikÅ¡mÄ— nurodo, per kiek kvietimo freimų grįžti nuo\n" +" esamo; virÅ¡utinis freimas yra 0." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME nenustatytas" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "per daug argumentų" + +#: builtins/cd.def:342 +#, fuzzy +msgid "null directory" +msgstr "steko viršūnÄ—je esanÄiu." + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD nenustatytas" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "eilutÄ— %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "įspÄ—jimas: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: naudojimas: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: parametrui reikia argumento" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: reikia skaitinio argumento" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: nerasta" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: negalimas parametras" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: netaisyklingas parametro vardas" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': netaisyklingas identifikatorius" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "netaisyklingas aÅ¡tuonetainis skaiÄius" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "netaisyklingas Å¡eÅ¡ioliktainis skaiÄius" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "netaisyklingas skaiÄius" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: netaisyklinga signalo specifikacija" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "„%s“: ne pid'as ar taisyklinga darbo specifikacija" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: kintamasis tik skaitymui" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s išėjo už ribų" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argumentas" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s už ribų" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: nÄ—ra tokio darbo" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: nÄ—ra darbų valdymo" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "nÄ—ra darbų valdymo" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: apribota" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "apribota" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: ne vidinÄ— aplinkos komanda" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "raÅ¡ymo klaida: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: klaida skaitant esamÄ… aplankÄ…: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: dviprasmis darbo apraÅ¡ymas" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nepavyko iÅ¡trinti: %s tik skaitymui" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: nepavyko iÅ¡trinti" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: netaisyklingas veiksmo pavadinimas" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: nÄ—ra baigimo specifikacijos" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "įspÄ—jimas: parametras -F gali neveikti taip, kaip tikitÄ—s" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "įspÄ—jimas: parametras -C gali neveikti taip, kaip tikitÄ—s" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "galima naudoti tik funkcijoje" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "negalima naudoti „-f“ funkcijoms kurti" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkcija tik skaitymui" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: negalima tokiu bÅ«du sunaikinti masyvų kintamųjų" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dinaminis įkrovimas negalimas" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "nepavyko atverti bendrojo objekto %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "nepavyko rasti %s bendrajame objekte %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: nedinamiÅ¡kai įkrauta" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: nedinamiÅ¡kai įkrauta" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nepavyko iÅ¡trinti: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: aplankas" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: ne paprastas failas" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: failas per didelis" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: negalima vykdyti dvejetainių failų" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nepavyko paleisti: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "ne prisijungimo aplinka: naudokite „exit“" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Yra sustabdytų darbų.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Yra veikianÄių darbų.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "komandų nerasta" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "istorijos specifikacija" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: nepavyko atverti laikinojo failo: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "darbas %d pradÄ—tas be darbų valdymo" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: neleistinas parametras -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: parametrui reikia argumento -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "maiÅ¡a iÅ¡jungta" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: maiÅ¡os lentelÄ— tuÅ¡Äia\n" + +#: builtins/hash.def:267 +#, fuzzy, c-format +msgid "hits\tcommand\n" +msgstr "paskutinÄ— komanda: %s\n" + +#: builtins/help.def:133 +#, fuzzy +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Aplinkos komandos, atitinkanÄios raktažodį „" +msgstr[1] "Aplinkos komandos, atitinkanÄios raktažodį „" +msgstr[2] "Aplinkos komandos, atitinkanÄios raktažodį „" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"nÄ—ra žinyno temų, atitinkanÄių „%s“. Bandykite „help help“, „man -k %s“ arba " +"„info %s“." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nepavyko atverti: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Å ios aplinkos komandos vidinÄ—s. Jei norite pamatyti šį sÄ…rašą, įveskite " +"„help“.\n" +"Ä®veskite „help fn“, jei norite sužinoti daugiau apie funkcijÄ… „fn“.\n" +"Ä®veskite „info bash“, jei norite daugiau sužinoti apie aplinkÄ… apskritai.\n" +"Naudokite „man -k“ ir „info“, jei norite sužinoti daugiau apie komandas, " +"nesanÄiasÅ¡iame sÄ…raÅ¡e.\n" +"\n" +"ŽvaigždutÄ— (*) prie vardo reiÅ¡kia, kad komanda iÅ¡jungta.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "negalima naudoti daugiau negu vieno parametro iÅ¡ -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "istorijos pozicija" + +#: builtins/history.def:340 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: netaisyklingas parametro vardas" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: istorijos iÅ¡skleidimas nesÄ—kmingas" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s: istorijos iÅ¡skleidimas nesÄ—kmingas" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "su „-x“ neleidžiama naudoti kitų parametrų" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumentai turi bÅ«ti procesų arba darbų ID" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Nežinoma klaida" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "tikÄ—tasi iÅ¡raiÅ¡kos" + +#: builtins/mapfile.def:178 +#, fuzzy, c-format +msgid "%s: not an indexed array" +msgstr "%s: ne masyvo kintamasis" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: netaisyklinga failo deskriptoriaus specifikacija" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: netaisyklingas failo deskriptorius: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, fuzzy, c-format +msgid "%s: invalid line count" +msgstr "%s: nesamas parametras" + +#: builtins/mapfile.def:299 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s: nesamas parametras" + +#: builtins/mapfile.def:316 +#, fuzzy, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: netaisyklingas veiksmo pavadinimas" + +#: builtins/mapfile.def:349 +#, fuzzy +msgid "empty array variable name" +msgstr "%s: ne masyvo kintamasis" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "„%s“: trÅ«ksta formato simbolio" + +#: builtins/printf.def:474 +#, fuzzy, c-format +msgid "`%c': invalid time format specification" +msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%c“: netaisyklingas formato simbolis" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "įspÄ—jimas: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "trÅ«ksta Å¡eÅ¡ioliktainio skaitmens iÅ¡raiÅ¡koje \\x" + +#: builtins/printf.def:900 +#, fuzzy, c-format +msgid "missing unicode digit for \\%c" +msgstr "trÅ«ksta Å¡eÅ¡ioliktainio skaitmens iÅ¡raiÅ¡koje \\x" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "nÄ—ra kito aplanko" + +#: builtins/pushd.def:360 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: netaisyklingas limito argumentas" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:526 +#, fuzzy +msgid "directory stack index" +msgstr "rekursijos steko atvirkÅ¡tinis perpildymas" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "skaitymo klaida: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "galima grįžti (return) tik iÅ¡ funkcijos ar scenarijaus" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "negalima kartu iÅ¡trinti funkcijos ir kintamojo" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: ne masyvo kintamasis" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: ne funkcija" + +#: builtins/setattr.def:194 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: nepavyko iÅ¡trinti" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "postÅ«mių skaiÄius" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "negalima aplinkos nuostatos vienu metu įjungti ir iÅ¡jungti" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: netaisyklingas aplinkos nuostatos pavadinimas" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "reikia failo pavadinimo argumento" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: failas nerastas" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "nepavyko sustabdyti" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "nepavyko sustabdyti prisijungimo aplinkos" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s yra „%s“ sinonimas\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s yra aplinkos raktinis žodis\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s yra funkcija\n" + +#: builtins/type.def:299 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s yra aplinkos vidinÄ— komanda\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s yra aplinkos vidinÄ— komanda\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s yra %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s yra heÅ¡uotas (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: netaisyklingas limito argumentas" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': bloga komanda" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: nepavyko gauti limito: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "riba" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: nepavyko pakeisti limito: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "aÅ¡tuntainis skaiÄius" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%c“: netaisyklingas simbolinÄ—s veiksenos operatorius" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%c“: netaisyklingas simbolinÄ—s veiksenos simbolis" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " eilutÄ— " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "paskutinÄ— komanda: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Nutraukiama..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:462 +msgid "unknown command error" +msgstr "nežinoma komandos klaida" + +#: error.c:463 +msgid "bad command type" +msgstr "blogas komandos tipas" + +#: error.c:464 +msgid "bad connector" +msgstr "blogas jungtukas" + +#: error.c:465 +msgid "bad jump" +msgstr "blogas Å¡uolis" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: nepriskirtas kintamasis" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\alaukiant įvedimo baigÄ—si laikas: automatiÅ¡kai atsijungta\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "nepavyko peradresuoti standartinio įvedimo iÅ¡ /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: „%c“: netaisyklingas formato simbolis" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +#, fuzzy +msgid "pipe error" +msgstr "raÅ¡ymo klaida: %s" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: apribota: negalima naudoti „/“ komandų pavadinimuose" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: komanda nerasta" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: blogas interpretatorius" + +#: execute_cmd.c:5891 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: negalima vykdyti dvejetainių failų" + +#: execute_cmd.c:5977 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s yra aplinkos vidinÄ— komanda\n" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "nepavyko dublikuoti fd %d į fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "virÅ¡ytas iÅ¡raiÅ¡kos rekursijos lygis" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "rekursijos steko atvirkÅ¡tinis perpildymas" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "sintaksÄ—s klaida iÅ¡raiÅ¡koje" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "bandymas priskirti ne kintamajam" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "sintaksÄ—s klaida iÅ¡raiÅ¡koje" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "dalyba iÅ¡ 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "klaida: bloga expassign leksema" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "sÄ…lygos iÅ¡raiÅ¡koje tikÄ—tasi „:“" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "eksponentÄ— mažesnis už 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" +"po prieÅ¡-didinimo ar prieÅ¡-mažinimo operatoriaus tikÄ—tasi identifikatoriaus" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "TrÅ«ksta „)“" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "sintaksÄ—s klaida: tikÄ—tasi operando" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "sintaksÄ—s klaida: netaisyklingas aritmetinis operatorius" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "netaisyklingas aritmetinis pagrindas" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: nesamas parametras" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "per didelÄ— pagrindo reikÅ¡mÄ—" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: iÅ¡raiÅ¡kos klaida\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: nepavyko pasiekti aukÅ¡tesnių aplankų" + +#: input.c:99 subst.c:6069 +#, fuzzy, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "nepavyko dublikuoti fd %d į fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "nepavyko iÅ¡skirti naujo failo deskriptoriaus bash įvedimui iÅ¡ fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: naujam fd %d buferis jau egzistuoja" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "trinamas sustabdytas darbas %d procesų grupÄ—je %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: tokio pid nÄ—ra" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signalas %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Atlikta" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "" + +#: jobs.c:1892 +msgid "Running" +msgstr "" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Atlikta(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Nežinoma bÅ«sena" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr "" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld nÄ—ra Å¡ios aplinkos dukterinis procesas" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: nÄ—ra proceso %ld įraÅ¡o" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: darbas %d yra sustabdytas" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: nÄ—ra tokio darbo" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: darbas užsibaigÄ—" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: darbas %d jau fone" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: %d eilutÄ—: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr "" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "Å¡ioje aplinkoje nÄ—ra darbų valdymo" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: pažeista prielaida: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: prielaida pažeista\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "nežinoma" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: blokas iÅ¡ laisvų blokų sÄ…raÅ¡o sugadintas" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: iÅ¡kviestas su jau atlaisvintu bloku" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: iÅ¡kviestas su nerezervuotu bloku" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: atvirkÅ¡tinis perpildymas (underflow); mh_nbytes už ribos" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: atvirkÅ¡tinis perpildymas (underflow); mh_nbytes už ribos" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: iÅ¡kviestas su nerezervuotu bloku" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: atvirkÅ¡tinis perpildymas (underflow); mh_nbytes už ribos" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: atvirkÅ¡tinis perpildymas (underflow); mh_nbytes už ribos" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: alloc lentelÄ— pilna su FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p jau lentelÄ—je kaip rezervuotas?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p jau lentelÄ—je kaip laisvas?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "netaisyklingas pagrindas" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: adresas nežinomas" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: netaisyklinga tarnyba" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: netaisyklingas tinklo kelias" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "tinklo operacijos nepalaikomos" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "" + +#: locale.c:292 +#, fuzzy, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "xrealloc: %s:%d: nepavyko iÅ¡skirti %lu baitų" + +#: locale.c:294 +#, fuzzy, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "xrealloc: %s:%d: nepavyko iÅ¡skirti %lu baitų" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Turite laiÅ¡kų $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Turite naujų laiÅ¡kų $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "PaÅ¡tas %s perskaitytas\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "sintaksÄ—s klaida: reikia aritmetinÄ—s iÅ¡raiÅ¡kos" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "sintaksÄ—s klaida: netikÄ—tas „;“" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "sintaksÄ—s klaida: „((%s))“" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: blogas instrukcijos tipas %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: nukreipimo instrukcija „%d“ už ribų" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "netikÄ—ta failo pabaiga ieÅ¡kant atitinkamo „%c“" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "netikÄ—ta failo pabaiga ieÅ¡kant „]]“" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "sintaksÄ—s klaida sÄ…lygos iÅ¡raiÅ¡koje: netikÄ—ta leksema „%s“" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "sintaksÄ—s klaida sÄ…lygos iÅ¡raiÅ¡koje" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "netikÄ—ta leksema „%s“, tikÄ—tasi „)“" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "tikÄ—tasi „)“" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "netikÄ—tas argumentas „%s“ sÄ…lygos unariniam operatoriui" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "netikÄ—tas argumentas sÄ…lygos unariniam operatoriui" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "netikÄ—ta leksema „%s“, tikÄ—tasi sÄ…lyginio binarinio operatoriaus" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "tikÄ—tasi sÄ…lygos binarinio operatoriaus" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "netikÄ—tas argumentas „%s“ sÄ…lygos binariniam operatoriui" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "netikÄ—tas argumentas sÄ…lygos binariniam operatoriui" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "netikÄ—ta leksema „%c“ sÄ…lygos komandoje" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "netikÄ—ta leksema „%s“ sÄ…lygos komandoje" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "netikÄ—ta leksema %d sÄ…lygos komandoje" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "sintaksÄ—s klaida prie netikÄ—tos leksemos: „%s“" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "sintaksÄ—s klaida prie „%s“" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "sintaksÄ—s klaida: netikÄ—ta failo pabaiga" + +#: parse.y:6365 +msgid "syntax error" +msgstr "sintaksÄ—s klaida" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Naudokite „%s“, jei norite iÅ¡eiti iÅ¡ ap.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "netikÄ—ta failo pabaiga ieÅ¡kant atitinkamo „)“" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: funkcija „%s“ nerasta" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: blogas jungtukas  „%d“" + +#: print_cmd.c:375 +#, fuzzy, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "%d: netaisyklingas failo deskriptorius: %s" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: „%c“: netaisyklingas formato simbolis" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "failo deskriptorius už ribų" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: ambiguous redirect" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: negalima perraÅ¡yti egzistuojanÄio failo" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: apribota: negalima peradresuoti iÅ¡vedimo" + +#: redir.c:218 +#, fuzzy, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "nepavyko sukurti laikino failo „here“ dokumentui: %s" + +#: redir.c:222 +#, fuzzy, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: negalima priskirti sÄ…raÅ¡o masyvo elementui" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/serveris/prievadas nepalaikoma be tinklo" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "nukreipimo klaida: nepavyko dublikuoti fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "nepavyko rasti /tmp, sukurkite šį aplankÄ…!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp turi bÅ«ti taisyklingas aplanko pavadinimas" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: netaisyklingas parametras" + +#: shell.c:1319 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "nepavyko dublikuoti fd %d į fd %d" + +#: shell.c:1330 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "nepavyko dublikuoti fd %d į fd %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: aplankas" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Neturiu vardo!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versija %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Naudojimas:\t%s [GNU ilgas parametras] [parametras] ...\n" +"\t%s [GNU ilgas parametras] [parametras] scenarijaus-failas ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU ilgi parametrai:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Aplinkos parametrai:\n" + +#: shell.c:2043 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" +"\t-irsD arba -c komanda arba -O shopt_nustatymas\t\t(tik iÅ¡kvietimui)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s arba -o nustatymas\n" + +#: shell.c:2068 +#, fuzzy, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Bandykite „%s --help“ arba „%s --usage“, jei norite gauti daugiau " +"informacijos.\n" + +#: shell.c:2069 +#, fuzzy, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "Bandykite „ldd --help“, jei norite daugiau informacijos." + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Naudokite komandÄ… „bashbug“ klaidoms praneÅ¡ti.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: netaisyklinga operacija" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "" + +#: siglist.c:50 +msgid "Hangup" +msgstr "" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "" + +#: siglist.c:58 +msgid "Quit" +msgstr "" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ABORT instrukcija" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Slankaus kablelio klaida" + +#: siglist.c:86 +msgid "Killed" +msgstr "" + +#: siglist.c:90 +#, fuzzy +msgid "Bus error" +msgstr "sintaksÄ—s klaida" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Segmentacijos klaida" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Žadintuvas" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Nutraukta" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Sustabdyta (signalas)" + +#: siglist.c:126 +msgid "Continue" +msgstr "TÄ™sti" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Sustabdyta (tty įvedimas)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Sustabdyta (tty iÅ¡vedimas)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU riba" + +#: siglist.c:154 +msgid "File limit" +msgstr "Failų riba" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Langas pakeistas" + +#: siglist.c:170 +msgid "Record lock" +msgstr "" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "proceso migravimas į kitÄ… CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "programavimo klaida" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "" + +#: siglist.c:214 +msgid "Information request" +msgstr "Informacijos užklausa" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Nežinomas signalas #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "blogas keitinys: trÅ«ksta „%s“ %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: negalima priskirti sÄ…raÅ¡o masyvo elementui" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" + +#: subst.c:6213 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "blogas keitinys: trÅ«ksta „%s“ %s" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: nesamas parametras" + +#: subst.c:7013 subst.c:7177 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "%s: netaisyklingas veiksmo pavadinimas" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametras tuÅ¡Äias arba nenustatytas" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametras tuÅ¡Äias arba nenustatytas" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: posekio iÅ¡raiÅ¡ka < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: blogas keitinys" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: negalima tokiu bÅ«du priskirti" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" + +#: subst.c:10367 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "blogas keitinys: trÅ«ksta „%s“ %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "nÄ—ra atitikmenų: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "tikÄ—tasi argumento" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: tikÄ—tasi skaitinÄ—s iÅ¡raiÅ¡kos" + +#: test.c:265 +msgid "`)' expected" +msgstr "tikÄ—tasi „)“" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "tikÄ—tasi „)“, rasta %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: tikÄ—tasi binarinio operatoriaus" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: tikÄ—tasi unarinio operatoriaus" + +#: test.c:881 +msgid "missing `]'" +msgstr "trÅ«ksta „]“" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "sintaksÄ—s klaida: netikÄ—tas „;“" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "netaisyklingas signalo numeris" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: bloga trap_list[%d] reikÅ¡mÄ—: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: signalo doroklÄ— yra SIG_DFL, siunÄiamas %d (%s) sau" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: blogas signalas %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "klaida importuojant funkcijos apibrėžimÄ… „%s“" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "aplinkos lygmuo (%d) per aukÅ¡tas, nustatoma į 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:4771 +#, fuzzy, c-format +msgid "%s has null exportstr" +msgstr "%s: parametras tuÅ¡Äias arba nenustatytas" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "netaisyklingas simbolis %d %s exportstr'e" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "%s exportstr'e trÅ«ksta „=“" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: nÄ—ra global_variables konteksto" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: variables.c:6387 +#, fuzzy, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: nepavyko atverti: %s" + +#: variables.c:6392 +#, fuzzy, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%d: netaisyklingas failo deskriptorius: %s" + +#: variables.c:6437 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s išėjo už ribų" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "AutorinÄ—s teisÄ—s (C) 2009 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licencija GPLv3+: GNU GPL versija 3 arba naujesnÄ— \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versija %s (%s)\n" + +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"Tai yra laisva programinÄ— įranga; jÅ«s esate laisvas keisti ir platinti jÄ….\n" + +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "NÄ—ra JOKIOS GARANTIJOS, kiek tik tÄ… leidžia įstatymas.\n" + +#: xmalloc.c:93 +#, fuzzy, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nepavyko iÅ¡skirti %lu baitų (%lu baitų iÅ¡skirta)" + +#: xmalloc.c:95 +#, fuzzy, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "xmalloc: nepavyko iÅ¡skirti %lu baitų" + +#: xmalloc.c:165 +#, fuzzy, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: %s:%d: nepavyko iÅ¡skirti %lu baitų (iÅ¡skirta %lu baitų)" + +#: xmalloc.c:167 +#, fuzzy, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "xmalloc: %s:%d: nepavyko iÅ¡skirti %lu baitų" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [pavadinimas[=reikÅ¡mÄ—] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] pavadinimas [pavadinimas ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [aplinkos-komanda [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [iÅ¡raiÅ¡ka]" + +#: builtins.c:66 +#, fuzzy +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|-P] [aplankas]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] komanda [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFilrtux] [-p] [pavadinimas[=reikÅ¡mÄ—] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFilrtux] [-p] pavadinimas[=reikÅ¡mÄ—] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [option] pavadinimas[=reikÅ¡mÄ—] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f failopavadinimas] [pavadinimas ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts optsekos pavadinimas [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "" +"exec [-cl] [-a pavadinimas] [komanda [argumentai ...]] [nukreipimas ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e evardas] [-lnr] [pirm] [pask] arba fc -s [pat=rep] [komanda]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "" + +#: builtins.c:119 +#, fuzzy +msgid "help [-dms] [pattern ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | darbospec ... arba kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +#, fuzzy +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o nustatymas] [arg ...]" + +#: builtins.c:144 +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [pavadinimas ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [pavadinimas[=vertÄ—] ...] arba export -p" + +#: builtins.c:148 +#, fuzzy +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-af] [pavadinimas[=vertÄ—] ...] arba readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source failopavadinimas [argumentai]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". failopavadinimas [argumentai]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [iÅ¡rk]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signalo_spec ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] pavadinimas [pavadinimas ...]" + +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [riba]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [režimas]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [id]" + +#: builtins.c:181 +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [pid]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for PAVADINIMAS [in ŽODŽIAI ... ] ; do KOMANDOS; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( iÅ¡rk1; iÅ¡rk2; iÅ¡rk3 )); do KOMANDOS; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select PAVADINIMAS [in ŽODŽIAI ... ;] do KOMANDOS; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if KOMANDOS; then KOMANDOS; [ elif KOMANDOS; then KOMANDOS; ]... [ else " +"KOMANDOS; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while KOMANDOS; do KOMANDOS; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until KOMANDOS; do KOMANDOS; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "funkcijos pavadinimas { KOMANDOS ; } arba name () { KOMANDOS ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ KOMANDOS ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "darbo_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( iÅ¡raiÅ¡ka ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ iÅ¡raiÅ¡ka ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "kintamieji – Kai kurių aplinkos kintamųjų pavadinimai ir reikÅ¡mÄ—s" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [optvardas ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v kint] formatas [argumentai]" + +#: builtins.c:231 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" + +#: builtins.c:235 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "shopt [-pqsu] [-o] [optvardas ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" + +#: builtins.c:256 +#, fuzzy +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"„alias“ be argumentų arba su -p nuostata iÅ¡spausdina alternatyviųjų\n" +" vardų sÄ…rašą formatu VARDAS=REIKÅ MÄ– į standartinį iÅ¡vedimÄ….\n" +" Kitu atveju apraÅ¡omas alternatyvusis vardas kiekvienam VARDUI,\n" +" kurio REIKÅ MÄ– nurodyta.\n" +"Jei REIKÅ MÄ– baigiasi tarpo simboliu, kitame\n" +" žodyje ieÅ¡koma alternatyviųjų vardų keitinių, kai alternatyvusis vardas\n" +" iÅ¡skleidžiamas. „alias“ grąžina „true“, nebent duotas VARDAS, kuriam\n" +" neapraÅ¡ytas joks alternatyvusis vardas." + +#: builtins.c:278 +#, fuzzy +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"PaÅ¡alinti VARDUS iÅ¡ apraÅ¡ytų alternatyviųjų vardų sÄ…raÅ¡o. Jei nurodyta\n" +" nuostata -a, paÅ¡alinti visus alternatyviuosius vardus." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" + +#: builtins.c:342 +#, fuzzy +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"TÄ™sti kitÄ… FOR, WHILE arba UNTIL ciklo iteracijÄ….\n" +" Jei N nurodytas, tÄ™sti ciklÄ…, esantį N lygmenų virÅ¡ esamo." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" + +#: builtins.c:369 +#, fuzzy +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Grąžina esamos procedÅ«ros kontekstÄ….\n" +" \n" +" Be IÅ RAIÅ KOS, grąžina „$eilutÄ— $failo_vardas“. Su IÅ RAIÅ KA,\n" +" grąžina „$eilutÄ— $procedÅ«ra $failo_vardas“; Å¡i papildoma informacija\n" +" gali bÅ«ti panaudota kuriant steko iÅ¡rašą (stack trace).\n" +" \n" +" IÅ RAIÅ KOS reikÅ¡mÄ— nurodo, per kiek kvietimo freimų grįžti nuo\n" +" esamo; virÅ¡utinis freimas yra 0." + +#: builtins.c:387 +#, fuzzy +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Pakeisti esamÄ… aplankÄ… į DIR. Kintamasis $HOME yra\n" +" numatytasis DIR. Kintamasis CDPATH nurodo aplankus, kuriuose bus\n" +" ieÅ¡koma DIR. Aplankų pavadinimai CDPATH skiriami dvitaÅ¡kiu (:).\n" +" TuÅ¡Äias aplanko vardas tapatus esamam aplankui, t.y. „.“.\n" +" Jei DIR prasideda pasviruoju brÅ«kÅ¡niu (/), į CDPATH neatsižvelgiama.\n" +" Jei aplankas nerastas ir aplinkos nuostata „cdable_vars“ įjungta,\n" +" tada žodis bandomas kaip kintamojo pavadinimas. Jei kintamasis\n" +" turi reikÅ¡mÄ™, tada esamas aplankas pakeiÄiamas į kintamojo reikÅ¡mÄ™.\n" +" Parametras -P nurodo, kad turi bÅ«ti naudojama fizinÄ— aplankų struktÅ«ra,\n" +" užuot sekus simbolines nuorodas; parametras -L nurodo, kad turi bÅ«ti\n" +" sekama simbolinÄ—mis nuorodomis." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" + +#: builtins.c:442 +#, fuzzy +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "Jokio efekto; komanda nieko nedaro. Grąžinamas klaidos kodas 0." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:462 +#, fuzzy +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "Grąžinti nesÄ—kmingÄ… rezultatÄ…." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" + +#: builtins.c:490 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" + +#: builtins.c:652 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" + +#: builtins.c:715 +#, fuzzy +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"IÅ¡eiti iÅ¡ aplinkos su klaidos kodu N. Jei N nenurodytas, iÅ¡einant " +"nustatomas\n" +" paskutinÄ—s vykdytos komandos klaidos kodas." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" + +#: builtins.c:1214 builtins.c:1229 +#, fuzzy +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Skaityti ir vykdyti komandas iÅ¡ FAILO ir grįžti. Keliai\n" +" kintamajame $PATH naudojami aplankui, kuriame yra FAILAS, rasti.\n" +" Jei nurodyta ARGUMENTŲ, jie tampa poziciniais parametrais iÅ¡kvietus\n" +" FAILÄ„." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" + +#: builtins.c:1431 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" + +#: builtins.c:1502 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1647 +#, fuzzy +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"IÅ¡skleisti ir vykdyti KOMANDAS tol, kol galutinÄ— komanda iÅ¡\n" +" „while“ komandų grąžina klaidos kodÄ… 0." + +#: builtins.c:1659 +#, fuzzy +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"IÅ¡skleisti ir vykdyti KOMANDAS tol, kol galutinÄ— komanda iÅ¡\n" +" „until“ komandų grąžina klaidos kodÄ…, nelygų 0." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" + +#: builtins.c:1699 +#, fuzzy +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Vykdyti eilÄ™ komandų grupÄ—je. Tai yra vienas iÅ¡ bÅ«dų nukreipti\n" +" visos eilÄ—s komandų įvedimÄ…/iÅ¡vedimÄ…." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" + +#: builtins.c:1726 +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" + +#: builtins.c:1937 +#, fuzzy +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"printf formatuoja ir spausdina ARGUMENTUS nurodytu FORMATU. FORMATAS\n" +" yra simbolių seka, sudaryta iÅ¡ trijų tipų objektų: paprastų\n" +" simbolių, tiesiog nukopijuojamų į standartinį iÅ¡vedimÄ…,\n" +" kaitos sekų, konvertuojamų ir kopijuojamų į standartinį iÅ¡vedimÄ…,\n" +" ir formato specifikacijų, kurių kiekviena iÅ¡spausdina kitÄ… argumentÄ….\n" +" Be įprastų printf(1) formatų, %b reiÅ¡kia iÅ¡plÄ—sti kairinio brÅ«kÅ¡nio\n" +" („\\“) kaitos sekas atitinkamame argumente, o %q reiÅ¡kia iÅ¡vesti\n" +" argumentÄ… kabutÄ—se tokia forma, kad rezultatÄ… bÅ«tų galima\n" +" panaudoti įvedimui.\n" +" Jei pateiktas parametras -v, iÅ¡vedimas įraÅ¡omas į aplinkos kintamÄ…jį\n" +" KINT, užuot spausdinus į standartinį iÅ¡vedimÄ…." + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2001 +#, fuzzy +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Rodyti galimus užbaigimus priklausomai nuo nustatymų. Naudotina\n" +" iÅ¡ aplinkos funkcijos, generuojanÄios galimus užbaigimus.\n" +" Jei pateiktas nebÅ«tinasis ŽODŽIO argumentas, iÅ¡vedami įraÅ¡ai,\n" +" atitinkantys ŽODÄ®." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#, fuzzy +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "Grąžina esamos procedÅ«ros kontekstÄ…." + +#~ msgid "Unknown Signal #" +#~ msgstr "Nežinomas signalas #" + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: nepavyko iÅ¡skirti %lu baitų (iÅ¡skirta %lu baitų)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: nepavyko iÅ¡skirti %lu baitų" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: %s:%d: nepavyko iÅ¡skirti %lu baitų (iÅ¡skirta %lu baitų)" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid " " +#~ msgstr " " + +#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +#~ msgstr "Be EXPR, grąžina „$line $filename“. Su EXPR," + +#~ msgid "returns \"$line $subroutine $filename\"; this extra information" +#~ msgstr "grąžina „$line $subroutine $filename“; Å¡i papildoma informacija" + +#~ msgid "can be used used to provide a stack trace." +#~ msgstr "gali bÅ«ti panaudota generuojant steko iÅ¡rašą (stack trace)." + +#~ msgid "" +#~ "The value of EXPR indicates how many call frames to go back before the" +#~ msgstr "EXPR reikÅ¡mÄ— nurodo, per kiek kvietimo freimų eiti atgal prieÅ¡" + +#~ msgid "current one; the top frame is frame 0." +#~ msgstr "esamÄ…. VirÅ¡utinis freimas yra 0." + +#~ msgid "%s: invalid number" +#~ msgstr "%s: netaisyklingas skaiÄius" + +#~ msgid "Shell commands matching keywords `" +#~ msgstr "Aplinkos komandos, atitinkanÄios raktažodžius „" + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "Rodyti prisimenamų aplankų sÄ…rašą. Aplankai" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "atsiduria sÄ…raÅ¡e su „pushd“ komanda; galite kilti" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "sÄ…raÅ¡u su „popd“ komanda." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "Parametras -l nurodo, kad „dirs“ neturÄ—tų spausdinti sutrumpintų" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "aplankų, santykinių namų aplinkui, pavadinimų. Tai reiÅ¡kia, kad" + +#, fuzzy +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "kad „~/bin“ bus rodomas kaip „/home/bfox/bin“. Su parametru -v" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "„dirs“ iÅ¡veda aplankų stekÄ… po vienÄ… pavadinimÄ… eilutÄ—je," + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "prieÅ¡ pavadinimÄ… priraÅ¡oma aplanko pozicija steke. Parametras -p" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "turi tokį patį efektÄ…, taÄiau pozicija steke neiÅ¡vedama." + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "Parametras -c iÅ¡valo aplankų stekÄ…." + +#~ msgid "" +#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgstr "+N rodo N-tÄ…jį įrašą skaiÄiuojant iÅ¡ kairÄ—s sÄ…raÅ¡e, rodomame" + +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr " „dirs“, iÅ¡kviesto be parametrų (skaiÄiuojama nuo nulio)." + +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "-N rodo N-tajį įrašą skaiÄiuojant iÅ¡ deÅ¡inÄ—s sÄ…raÅ¡e, rodomame" + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "Ä®deda aplankÄ… į aplankų steko viršų, arba pasuka" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "stekÄ…, nustatydamas esamÄ… aplankÄ… į naujÄ…jÄ… steko viršūnÄ—s reikÅ¡mÄ™." + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "Be argumentų, sukeiÄia virÅ¡utinius du aplankus." + +#~ msgid "+N Rotates the stack so that the Nth directory (counting" +#~ msgstr "+N Pasuka stekÄ…, kad N-tasis aplankas (skaiÄiuojant" + +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr " iÅ¡ kairÄ—s sÄ…raÅ¡e, rodomame „dirs“, pradedant nuo nulio)" + +#~ msgid " zero) is at the top." +#~ msgstr " bÅ«tų virÅ¡uje." + +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "-N Pasuka stekÄ…, kad N-tasis aplankas (skaiÄiuojant" + +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr " iÅ¡ deÅ¡inÄ—s sÄ…raÅ¡e, rodomame „dirs“, pradedant nuo nulio)" + +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "-n iÅ¡jungti įprastÄ… aplanko pakeitimÄ… pridedant aplankus" + +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr " į stekÄ…, taigi, pakeiÄiamas tik stekas." + +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "dir prideda DIR į aplankų steko viršų; DIR nustatomas" + +#~ msgid " new current working directory." +#~ msgstr " naujuoju darbiniu aplanku." + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "Galite pamatyti aplankų stekÄ… komanda „dirs“." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Å alina įraÅ¡us iÅ¡ aplankų steko. Jei nenurodyta argumentų," + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "paÅ¡alina virÅ¡utinį aplankÄ… iÅ¡ steko ir pakeiÄia darbinį aplankÄ…" + +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "" +#~ "+N paÅ¡alina N-tÄ…jį įrašą skaiÄiuojant iÅ¡ kairÄ—s sÄ…raÅ¡e, iÅ¡vedamame „dir“" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr " (skaiÄiuojama nuo nulio). Pavyzdžiui: „popd +0“" + +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr " paÅ¡alina pirmÄ…jį aplankÄ…, „popd +1“ – antrÄ…jį." + +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "" +#~ "+N paÅ¡alina N-tÄ…jį įrašą skaiÄiuojant iÅ¡ deÅ¡inÄ—s sÄ…raÅ¡e, iÅ¡vedamame " +#~ "„dir“" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr " (skaiÄiuojama nuo nulio). Pavyzdžiui: „popd -0“" + +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr " paÅ¡alina paskutinį aplankÄ…, „popd -1“ – prieÅ¡paskutinį." + +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr " iÅ¡jungti įprastÄ… darbinio aplanko keitimÄ… Å¡alinant aplankus" + +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr " iÅ¡ steko, taigi, pakeiÄiamas tik stekas." + +#~ msgid "allocated" +#~ msgstr "iÅ¡skirta" + +#~ msgid "freed" +#~ msgstr "atlaisvinta" + +#~ msgid "requesting resize" +#~ msgstr "praÅ¡oma dydžio keitimo" + +#~ msgid "just resized" +#~ msgstr "tik kÄ… pakeistas dydis" + +#~ msgid "bug: unknown operation" +#~ msgstr "klaida: nežinoma operacija" + +#~ msgid "malloc: watch alert: %p %s " +#~ msgstr "malloc: stebinio įspÄ—jimas: %p %s " + +#~ msgid "" +#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "" +#~ "IÅ¡eiti iÅ¡ FOR, WHILE arba UNTIL ciklo. Jei nurodytas N,\n" +#~ " iÅ¡eiti aukÅ¡tyn per N lygmenų." + +#~ msgid "" +#~ "Run a shell builtin. This is useful when you wish to rename a\n" +#~ " shell builtin to be a function, but need the functionality of the\n" +#~ " builtin within the function itself." +#~ msgstr "" +#~ "Vykdyti aplinkos įtaisytÄ… funkcijÄ…. Å i komanda naudinga, kai norite\n" +#~ " vietoje įtaisytos funkcijos naudoti savÄ…jÄ…, taÄiau reikia\n" +#~ " pasinaudoti įtaisytÄ…ja Å¡ios funkcijos viduje." + +#~ msgid "" +#~ "Print the current working directory. With the -P option, pwd prints\n" +#~ " the physical directory, without any symbolic links; the -L option\n" +#~ " makes pwd follow symbolic links." +#~ msgstr "" +#~ "IÅ¡spausdinti esamÄ… aplankÄ…. Su parametru -P „pwd“ spausdina\n" +#~ " fizinį aplankÄ…, be jokių simbolinių nuorodų; su parametru -L\n" +#~ " „pwd“ seka simbolinÄ—mis nuorodomis." + +#~ msgid "Return a successful result." +#~ msgstr "Grąžinti sÄ—kmingÄ… rezultatÄ…." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Pasenusi komanda. Žr. „declare“." + +#~ msgid "" +#~ "Create a local variable called NAME, and give it VALUE. LOCAL\n" +#~ " can only be used within a function; it makes the variable NAME\n" +#~ " have a visible scope restricted to that function and its children." +#~ msgstr "" +#~ "Sukurti vietinį kintamÄ…jį nurodytu PAVADINIMU ir suteikti jam REIKÅ MĘ.\n" +#~ " „local“ gali bÅ«ti naudojamas tik funkcijose; jis sukuria kintamÄ…jį,\n" +#~ " matomÄ… tik paÄioje funkcijoje ir jos dukterinÄ—se funkcijose." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "IÅ¡spausdinti ARGUMENTUS. Jei nurodytas -n, nespausdinamas naujos " +#~ "eilutÄ—s\n" +#~ " simbolis pabaigoje." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "Skaityti ARGUMENTUS kaip aplinkos komandas ir jas vykdyti." + +#~ msgid "Logout of a login shell." +#~ msgstr "Atsijungti nuo prisijungimo aplinkos (login shell)." + +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N\n" +#~ " is omitted, the return status is that of the last command." +#~ msgstr "" +#~ "IÅ¡eina iÅ¡ funkcijos, grąžinama reikÅ¡mÄ— N. Jei N nenurodyta,\n" +#~ " grąžinama paskutinÄ—s vykdytos komandos reikÅ¡mÄ—." + +#~ msgid "" +#~ "For each NAME, remove the corresponding variable or function. Given\n" +#~ " the `-v', unset will only act on variables. Given the `-f' flag,\n" +#~ " unset will only act on functions. With neither flag, unset first\n" +#~ " tries to unset a variable, and if that fails, then tries to unset a\n" +#~ " function. Some variables cannot be unset; also see readonly." +#~ msgstr "" +#~ "Kiekvienam PAVADINIMUi, paÅ¡alinti atitinkamÄ… kintamÄ…jį ar funkcijÄ….\n" +#~ " Jei nurodytas „-v“, unset veiks tik su kintamaisiais. Jei nurodytas\n" +#~ " „-f“, unset veiks tik su funkcijomis. Jei nenurodytas nei vienas iÅ¡\n" +#~ " Å¡ių parametrų, unset pirmiausiai bandys paÅ¡alinti kintamÄ…jį, ir jei\n" +#~ " tai nepasiseks, bandys paÅ¡alinti funkcijÄ…. Kai kurie kintamieji " +#~ "negali\n" +#~ " bÅ«ti paÅ¡alinti; žr. „readonly“." + +#~ msgid "" +#~ "Suspend the execution of this shell until it receives a SIGCONT\n" +#~ " signal. The `-f' if specified says not to complain about this\n" +#~ " being a login shell if it is; just suspend anyway." +#~ msgstr "" +#~ "Sustabdyti Å¡ios aplinkos darbÄ…, kol bus gautas SIGCONT\n" +#~ " signalas. Jei nurodyta „-f“, nesiskųsti, jei Å¡i aplinka yra " +#~ "prisijungimo\n" +#~ " aplinka (login shell) ir sustabdyti jÄ… bet kuriuo atveju." + +#~ msgid "" +#~ "Create a simple command invoked by NAME which runs COMMANDS.\n" +#~ " Arguments on the command line along with NAME are passed to the\n" +#~ " function as $0 .. $n." +#~ msgstr "" +#~ "Sukurti paprastÄ… komandÄ…, iÅ¡kvieÄiamÄ… PAVADINIMU, vykdanÄiÄ… KOMANDAS.\n" +#~ " Argumentai komandų eilutÄ—je kartu su PAVADINIMU perduodami funkcijai\n" +#~ " kaip $0 .. $n." + +#~ msgid "" +#~ "For each NAME, specify how arguments are to be completed.\n" +#~ " If the -p option is supplied, or if no options are supplied, " +#~ "existing\n" +#~ " completion specifications are printed in a way that allows them to " +#~ "be\n" +#~ " reused as input. The -r option removes a completion specification " +#~ "for\n" +#~ " each NAME, or, if no NAMEs are supplied, all completion " +#~ "specifications." +#~ msgstr "" +#~ "Kiekvienam VARDUI nurodyti, kaip argumentai turÄ—tų bÅ«ti užbaigti.\n" +#~ " Jei pateiktas -p nustatymas arba nepateikta jokių nustatymų,\n" +#~ " spausdinamos esamos užbaigimo specifikacijos tokiu formatu, kad\n" +#~ " jas bÅ«tų galima panaudoti kaip įvestį. Nustatymas -r paÅ¡alina\n" +#~ " užbaigimo specifikacijÄ… kiekvienam VARDUI, arba, jei nenurodyta\n" +#~ " VARDO, visas užbaigimo specifikacijas." diff --git a/bash-5.1/po/nb.gmo b/bash-5.1/po/nb.gmo new file mode 100644 index 0000000000000000000000000000000000000000..894af69262b9e18e2562732855c4b1434784c419 GIT binary patch literal 152862 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

6|j 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, 2015-2019. +# +msgid "" +msgstr "" +"Project-Id-Version: bash-5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-01-08 19:40+0100\n" +"Last-Translator: Ã…ka Sikrom \n" +"Language-Team: Norwegian Bokmaal \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.6\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "feil i tabell-underskript" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: fjerner navnref-egenskap" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: indeksert tabell kan ikke konverteres til assosiativ tabell" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: ugyldig nøkkel for assosiativ tabell" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: kan ikke tildeles ikke-numerisk indeks" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: underskript mÃ¥ brukes ved tildeling av assosiative tabeller" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: klarte ikke Ã¥ opprette: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: fant ikke tastaturoppsett for kommando" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: første ikke-blanktegn mÃ¥ være «\"»" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "avsluttende «%c» mangler i %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: kolon-skilletegn mangler" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "«%s»: klarte ikke Ã¥ fjerne tildeling" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "brace-utvidelse: klarte ikke Ã¥ tildele minne for %s" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "brace-utvidelse: klarte ikke Ã¥ tildele minne for %u elementer" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "brace-utvidelse: klarte ikke Ã¥ tildele minne for «%s»" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "«%s»: ugyldig alias" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "linjeredigering er ikke slÃ¥tt pÃ¥" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "«%s»: ugyldig navn pÃ¥ tastaturoppsett" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: klarte ikke Ã¥ lese: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "«%s»: ukjent funksjonsnavn" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s er ikke tilknyttet en knapp.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s kan startes via" + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: klarte ikke Ã¥ fjerne tildeling" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "antall sløyfer" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "gir bare mening i «for»-, «while»- og «until»-sløyfer" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Vis konteksten for gjeldende underrutine-kall.\n" +" \n" +" Hvis UTTRykk ikke er valgt, vises «$line $filename». Med UTTRykk vises\n" +" «$line $subroutine $filename». Denne ekstrainformasjonen kan brukes\n" +" til stabelsporing.\n" +" \n" +" Verdien av UTTRykk viser hvor mange kall-rammer programmet skal bevege " +"seg\n" +" gjennom tilbake fra gjeldende ramme. Øverste ramme er 0.\n" +" \n" +" Avslutningsstatus:\n" +" Status er 0, med mindre skallet ikke kjører en skallfunksjon eller\n" +" valgt UTTRykk er ugyldig." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME har ingen verdi" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "for mange argumenter" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "null-mappe" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD har ingen verdi" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "linje %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "advarsel:" + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: bruk: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: valget krever et argument" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: valget krever et tall-argument" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "fant ikke %s" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: ugyldig valg" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: ugyldig valgnavn" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "«%s»: ugyldig navn" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "ugyldig oktal-tall" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "ugldig heksadesimalt tall" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "ugyldig tall" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: ugyldig signalspesifikasjon" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "«%s» er hverken hverken et PID eller en gyldig jobbspesifikasjon" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: skrivebeskyttet variabel" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s er utenfor rekkevidde" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s er utenfor rekkevidde" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: jobben finnes ikke" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: ingen jobbkontroll" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "ingen jobbkontroll" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: begrenset" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "begrenset" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: ikke innebygd i skall" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "skrivefeil: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "feil under endring av terminal-egenskaper: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "feil under henting av terminal-egenskaper: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: feil under henting av gjeldende mappe: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: flertydig jobbspesifikasjon" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "hjelp er ikke tilgjengelig for denne versjonen" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: klarte ikke Ã¥ fjerne verdi fra skrivebeskyttet %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: klarte ikke Ã¥ fjerne verdi" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: ugyldig handlingsnavn" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: ingen spesifikasjon for fullføring" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "advarsel: valget «-F» virker kanskje ikke slik du forventer" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "advarsel: valget «-C» virker kanskje ikke slik du forventer" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "fullføringsfunksjon kjøres ikke nÃ¥" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "kan bare brukes i funksjoner" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: referansevariabler kan ikke være tabeller (arrays)" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: navnref.-variabler kan ikke referere til seg selv" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: sirkulær navnreferanse" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "«%s»: ugyldig variabelnavn for navnreferanse" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "valget«-f» kan ikke brukes til Ã¥ lage funksjoner" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: skrivebeskyttet funksjon" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: sammensatt tabell-tideling i hermetegn er utgÃ¥tt" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: tabellvariabler kan ikke ødelegges pÃ¥ denne mÃ¥ten" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: assosiative tabeller kan ikke konverteres til indekserte tabeller" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dynamisk innlasting er ikke tilgjengelig" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "klarte ikke Ã¥ Ã¥pne delt objekt %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "fant ikke %s i delt objekt %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: ikke dynamisk innlastet" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "innlastingsfunksjon for %s førte til feilkode (%d). Ikke lastet inn" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: ikke dynamisk innlastet" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: klarte ikke Ã¥ slette: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: er en mappe" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: ikke en vanlig fil" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: fila er for stor" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: klarte ikke Ã¥ kjøre binærfil" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: klarte ikke Ã¥ kjøre: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "logg ut\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "ikke innloggingsskall. Bruk «exit»" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Bakgrunnsjobb(er) venter.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Bakgrunnsjobb(er) kjører.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "fant ingen kommando" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "historikk-spesifikasjon" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: klarte ikke Ã¥ Ã¥pne midlertidig fil: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "gjeldende" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "jobb %d startet uten jobbkontroll" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: -- %c er et ugyldig valg\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: -- %c krever et argument\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "nøkkelsummering er slÃ¥tt av" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: kontrollsum-tabell er tom\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "treff\tkommando\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Skallkommandoer som samsvarer med nøkkelordet `" +msgstr[1] "Skallkommandoer som samsvarer med nøkkelordene `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"ingen hjelpeemner samsvarer med «%s». Prøv «help help», «man -k %s» eller " +"«info %s»." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: klarte ikke Ã¥ Ã¥pne: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Disse skallkommandoene er internt definert. Skriv «help» for Ã¥ se denne " +"lista.\n" +"Skriv «help name» for Ã¥ finne ut mer om funksjonen «name».\n" +"Bruk «info bash» for Ã¥ finne generell info om skallet.\n" +"Bruk «man -k» eller «info» for Ã¥ finne ut mer om kommandoer som ikke er pÃ¥ " +"denne lista.\n" +"\n" +"Stjerne (*) ved siden av et kommandonavn betyr at gjeldende kommando er " +"slÃ¥tt av.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "du kan ikke bruke flere enn ett av valgene -anrw pÃ¥ én gang" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "historikkposisjon" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: ugyldig tidsstempel" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: historikk-utvidelse mislyktes" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib mislyktes" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "valget «-x» kan ikke brukes i kombinasjon med andre valg" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumenter mÃ¥ være prosess- eller jobb-ID-er" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Ukjent feil" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "forventet uttrykk" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: ikke en indeksert tabell" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: ugyldig spesifikasjon av fildeskriptor" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: ugyldig fildeskriptor: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: ugyldig linjeantall" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: ugyldig tabellopphav" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: ugyldig tilbakekallsmengde" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "tomt navn pÃ¥ tabellvariabel" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "støtte for tabellvariabler kreves" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "«%s»: formattegn mangler" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "«%c»: ugyldig spesifikasjon av tidsformat" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "«%c»: ugyldig formattegn" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "advarsel: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "problem med tolkning av format: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "heks-siffer mangler for \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "unicode-siffer mangler for \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "ingen annen mappe" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: ugyldig argument" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "mappestabel er tom" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "mappestabel-indeks" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Vis liste over mapper som blir husket. Mapper\n" +" havner pÃ¥ denne lista med kommandoen «pushd». Du kan gÃ¥\n" +" tilbake i lista med kommandoen «popd».\n" +" \n" +" Valg:\n" +" -c\ttøm mappestabel ved Ã¥ slette alle elementer\n" +" -l\tikke legg til tildeprefiks pÃ¥ stier som er relative\n" +" \ttil gjeldende hjemmemappe\n" +" -p\tskriv ut mappetsabel med ett element per linje\n" +" -v\tskriv ut mappestabel med ett element per linje som har\n" +" \tstabelposisjon som prefiks\n" +" \n" +" Argumenter:\n" +" +N\tVis N-te mappe talt fra null\n" +" \tpÃ¥ venstre side av lista (gjelder nÃ¥r programmet kjøres uten valg).\n" +" \n" +" -N\tVis N-te mappe talt fra null\n" +"\tpÃ¥ høyre side av lista (gjelder nÃ¥r programmet kjøres uten valg)." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Legger til en mappe i toppen av mappestabelen, eller rullerer\n" +" stabelen slik at øverste mappe blir gjeldende arbeidsmappe.\n" +" Hvis ingen argumenter er valgt, bytter de to øverste mappene plass.\n" +" \n" +" Valg:\n" +" -n\tLar være Ã¥ bytte mappe nÃ¥r mapper legges til i stabelen,\n" +" \tslik at kun selve stabelen blir endret.\n" +" \n" +" Argumenter:\n" +" +N\tRullerer stabelen slik at N-te mappe - talt fra\n" +" \tnull til venstre i lista etter «dirs» - havner øverst.\n" +" \n" +" -N\tRullerer stabelen slik at N-te mappe - talt fra\n" +" \tnull til høyre i lista etter «dirs» - havner øverst\n" +" \n" +" dir\tLegger til DIR i toppen av mappestabelen, og tar den\n" +" \ti bruk som gjeldende arbeidsmappe.\n" +" \n" +" Den innebygde funksjonen «dirs» viser mappestabelen." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Fjerner mapper fra mappestabelen. Hvis ingen argumenter brukes,\n" +" fjerner programmet øverste mappe fra stabelen og bytter til det som " +"deretter er øverste mappe.\n" +" \n" +" Valg:\n" +" -n\tLar være Ã¥ bytte mappe nÃ¥r mapper fjernes fra stabelen,\n" +" \tslik at bare stabelen blir endret.\n" +" \n" +" Argumenter:\n" +" +N\tFjerner N-te oppføring - talt fra null til venstre i lista\n" +" \tetter «dirs». For eksempel fjerner «popd +0»\n" +" \tførste mappe, og «popd +1» den andre.\n" +" \n" +" -N\tFjerner N-te oppføring - talt fra null til høyre i lista\n" +" \tetter «dirs». For eksempel fjerner «popd -0»\n" +" \tsiste mappe, og «popd -1» den nest siste.\n" +" \n" +" Den innebygde funksjonen «dirs» viser mappestabelen." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: ugyldig spesifikasjon av tidsavbrudd" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "lesefeil: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "du kan bare «return» fra en funksjon eller kildeskript" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" +"du kan ikke utføre «unset» (tømme bÃ¥de en funksjon og en variabel for " +"verdier) samtidig" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: ikke en tabellvariabel" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: ikke en funksjon" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: klarte ikke Ã¥ eksportere" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "shift-antall" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "du kan ikke bÃ¥de definere og fjerne skallvalg samtidig" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: ugyldig navn pÃ¥ skallvalg" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "filnavn-argument kreves" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: fant ikke fil" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "klarte ikke Ã¥ sette i hvilemodus" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "klarte ikke Ã¥ sette et innloggingsskall i hvilemodus" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s har alias «%s»\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s er et skall-nøkkelord\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s er en funksjon\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s er en innebygd skallkommando\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s er en innebygget skallfunksjon\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s er %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s er nøkkelsummert («hashed») (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: ugyldig grenseargument" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "«%c»: ugyldig kommando" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: klarte ikke Ã¥ hente grense: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "grense" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: klarte ikke Ã¥ endre grense: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "oktalt tall" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "«%c»: ugyldig symbolsk modus-operatør" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "«%c»: ugyldig symbolsk modustegn" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " linje " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "forrige kommando: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Abryter …" + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:462 +msgid "unknown command error" +msgstr "ukjent kommandofeil" + +#: error.c:463 +msgid "bad command type" +msgstr "ugyldig kommandotype" + +#: error.c:464 +msgid "bad connector" +msgstr "ugyldig tilkobling" + +#: error.c:465 +msgid "bad jump" +msgstr "ugyldig hopp" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: utildelt variabel" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\atidsavbrudd for inndata: auto-utlogging\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "klarte ikke Ã¥ videresende standard inndata fra «/dev/null». %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: «%c» er et ugyldig formattegn" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] finnes fremdeles" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "datarør-feil" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: grensa for nivÃ¥er av eval-funksjoner (%d) er overskredet" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: grensa for nivÃ¥er av kilder i kilder (%d) er overskredet" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: grensa for nivÃ¥er av funksjoner i funksjoner (%d) er overskredet" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: ikke tillatt: kommandonavn kan ikke inneholde «/»" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "fant ikke kommando %s" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: ugyldig tolk" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: klarte ikke Ã¥ kjøre binærfil: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "«%s» er en innebygd spesialfunksjon" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "klarte ikke Ã¥ duplisere fd %d til fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "grensa for rekursjonsnivÃ¥er i uttrykk er overskredet" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "rekursjonsstabelen er tom" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "uttrykk inneholder syntaksfeil" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "du forsøkte Ã¥ tilordne en verdi til noe som ikke er en variabel" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "variabeltildeling inneholder syntaksfeil" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "forsøkte Ã¥ dele pÃ¥ 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "programfeil: ugyldig expassign-symbol" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "forventet «:» for betinget uttrykk" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "eksponent er lavere enn 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "forventet identifikator etter pre-økning eller pre-forminskelse" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "mangler «)»" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "syntaksfeil: forventet operand" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntaksfeil: ugyldig aritmetisk operatør" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (feilaktig symbol er «%s»)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "ugyldig aritmetisk grunntall" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: ugyldig linjeantall" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "verdien er for høy for grunntallet" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: feil i uttrykk\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: fikk ikke tilgang til foreldermapper" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "klarte ikke Ã¥ tilbakestille nodelay-modus for fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "klarte ikke Ã¥ knytte ny fildeskriptor til bash-inndata fra fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: mellomlager for ny fd %d finnes allerede" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp-datarør" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "kopiert pid %d finnes i kjørende jobb %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "sletter ventende bakgrunnsjobb %d med prosessgruppe %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: markert PID %5ld (%s) som levende" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: pid-en finnes ikke" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Ferdig" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Venter" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Venter(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Kjører" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Ferdig(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Avsluttet %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Ukjent status" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(kjerne lagret i fil) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "underprosess setpgid (%ld til %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld er ikke en underprosess av dette skallet" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Ingen kjennskap til prosess %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: prosess %d venter" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: jobben finnes ikke" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: jobben er avsluttet" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: jobb %d kjører allerede i bakgrunnen" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: slÃ¥r pÃ¥ WNOHANG for Ã¥ unngÃ¥ kronisk blokkering" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: linje %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (kjerne lagret i fil)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd nÃ¥: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp mislyktes" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: ingen jobbkontroll i bakgrunn" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: linjeregler" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "klarte ikke Ã¥ velge terminal-prosessgruppe (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "ingen jobbkontroll i dette skallet" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: mislykket premiss: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: urimelig premiss\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "ukjent" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: rotete blokk pÃ¥ befrielsesliste" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: ble bedt om Ã¥ behandle blokk som allerede er ledig" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: ble bedt om Ã¥ behandle blokk som ikke er tildelt" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: tomt. mh_nbytes er utenfor rekkevidde" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: tomt. mh_nbytes er utenfor rekkevidde" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: start- og sluttdel er av ulik størrelse" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: ble bedt om Ã¥ behandle blokk som ikke er tildelt" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: start- og sluttdel er av ulik størrelse" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: tildelingstabell er full med FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: finnes %p allerede i tabellen som tildelt?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: finnes %p allerede i tabellen som ledig?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "ugyldig grunntall" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: ukjent vert" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: ugyldig tjeneste" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: ugyldig spesifikasjon av nettverkssti" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "nettverkshandlinger støttes ikke" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: klarte ikke Ã¥ bytte region (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: klarte ikke Ã¥ bytte region (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: klarte ikke Ã¥ bytte region (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: klarte ikke Ã¥ bytte region (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Du har e-post i $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Du har ny e-post i $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Posten i %s er lest\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "syntaksfeil: aritmetisk uttrykk kreves" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "syntaksfeil: uforventet «;»" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntaksfeil: «((%s))»" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: %d er en ugyldig instrukstype" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "here-dokument ved linje %d adskilt av slutt pÃ¥ fil (forventet «%s»)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"make_redirection: videresendinginstruks «%d» er utenfor tillatt rekkevidde" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: «shell_input_line_size» (%zu) overskrider SIZE_MAX (%lu): linja " +"er forkortet" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "grensa for maksimalt antall here-dokumenter er overskredet" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "uforventet slutt pÃ¥ fil (EOF) under søk etter «%c»" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "uforventet slutt pÃ¥ fil (EOF) under søk etter «]]»" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntaksfeil i betinget uttrykk: forventet ikke symbolet «%s»" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "syntaksfeil i betinget uttrykk" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "forventet ikke symbolet «%s», men «)»" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "forventet «)»" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "«%s» er et uforventet argument for betinget unær operatør" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "uforventet argument for betinget unær operatør" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "«%s» er et uforventet symbol. Forventet betinget binær operatør" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "forventet betinget binæroperatør" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "«%s» er et uforventet argument for betinget binæroperatør" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "uforventet argument for betinget binæroperatør" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "«%c» er et uforventet symbol i en betinget kommando" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "«%s» er et uforventet symbol i en betinget kommando" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "«%d» er et uforventet symbol i en betinget kommando" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntaksfeil ved «%s», som er et uforventet symbol" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntaksfeil ved «%s»" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "syntaksfeil: uforventet slutt pÃ¥ fil" + +#: parse.y:6365 +msgid "syntax error" +msgstr "syntaksfeil" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Bruk «%s» for Ã¥ gÃ¥ ut av skallet.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "uforventet slutt pÃ¥ fil (EOF) under søk etter «)»" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "fullføring: fant ikke funksjonen «%s»" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: mulig løkke av nye forsøk" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: «%d» er en ugyldig tilkobling" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: ugyldig fildeskriptor" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: filpeker er NULL" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: «%c»: ugyldig formattegn" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "fildeskriptor er utenfor tillatt rekkevidde" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: flertydig videresending" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: klarte ikke Ã¥ overskrive fil" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: ikke tillatt: klarte ikke Ã¥ videresende utdata" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "klarte ikke Ã¥ lage midlertidig fil for here-dokument: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: klarte ikke Ã¥ knytte fd til variabel" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port støttes ikke uten nettverkstilkobling" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "videresendingsfeil: klarte ikke Ã¥ duplisere fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "fant ikke «/tmp». Opprett denne mappa!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "«/tmp» mÃ¥ være et gyldig mappenavn" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "pen utskriftsmodus blir ignorert i interaktive skall" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: ugyldig valg" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "klarte ikke Ã¥ velge %d som uid. Effektiv uid: %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "klarte ikke Ã¥ velge %d som gid. Effektiv gid: %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "klarte ikke Ã¥ starte feilsøkingsverktøy. Feilsøkingsmodus slÃ¥tt av" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: er en mappe" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Jeg manger navn!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versjon %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Bruk:\t%s [langt GNU-valg] [valg] …\n" +"\t%s [langt GNU-valg] [valg] skriptfil …\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Lange GNU-valg:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Skallvalg:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" +"\t«-ilrsD», «-c kommando» eller «-O kortvalg_valg»\t\t(kun programkall)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t«-%s» eller «-o»\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "Skriv «%s -c \"help set\"» for mer informasjon om skallvalg.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "Skriv «%s -c help» for mer informasjon om innebygde skallkommandoer.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Bruk kommandoen «bashbug» for Ã¥ rapportere programfeil.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "bash-nettside: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Generell hjelp til bruk av GNU-programvare: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: ugyldig handling" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Ugyldig signal" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Legg pÃ¥" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Forstyrr" + +#: siglist.c:58 +msgid "Quit" +msgstr "Avslutt" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Ugyldig instruks" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT-sporing/-fanging" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ABORT-instruks" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT-instruks" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Flyttallsfeil" + +#: siglist.c:86 +msgid "Killed" +msgstr "Drept" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Bussfeil" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Segmenteringsfeil" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Ugyldig systemkall" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Ødelagt datarør" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Alarmklokke" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Avsluttet" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Hastende IO-tilstand" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Stoppet (signal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Fortsett" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Død eller stans av underprosess" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Stoppet (tty-inndata)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Stoppet (tty-utdata)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O klar" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU-grense" + +#: siglist.c:154 +msgid "File limit" +msgstr "Filgrense" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarm (virtuell)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarm (profil)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Vindu endret" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Husk lÃ¥s" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Brukersignal 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Brukersignal 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT-inndata venter" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "strømstans er nærliggende" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "systemkræsj er nærliggende" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "flytt prosess til annen CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "programmeringsfeil" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT-skjermmodus tildelt" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT-skjermmodus tilbaketrukket" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT-lydsekvens er fullført" + +#: siglist.c:214 +msgid "Information request" +msgstr "Informasjonsforespørsel" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "#%d er et ukjent signal" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "ugyldig substitutt: %2$s mangler avsluttende «%1$s»" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: klarte ikke Ã¥ knytte liste til tabellmedlem" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "klarte ikke Ã¥ lage datarør for substitusjon av prosess" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "klarte ikke Ã¥ lage underprosess for substitusjon av prosess" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "klarte ikke Ã¥ Ã¥pne navngitt datarør %s for lesing" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "klarte ikke Ã¥ Ã¥pne navngitt datarør %s for skriving" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "klarte ikke Ã¥ duplisere navngitt datarør %s som fd %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "kommandosubstitusjon: null-byte i inndata ignorert" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "klarte ikke Ã¥ lage datarør for substitusjon av kommando" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "klarte ikke Ã¥ lage underprosess for substitusjon av kommando" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: klarte ikke Ã¥ duplisere datarør som fd 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: ugyldig variabelnavn for navnreferanse" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: ugyldig indirekte utvidelse" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: ugyldig variabelnavn" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter har ingen verdi" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter har null-verdi eller stÃ¥r tomt" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: understreng-uttrykk < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: ugyldig substitusjon" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: du kan ikke tildele pÃ¥ denne mÃ¥ten" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"fremtidige versjoner av skallet skal tvinge evaluering som en aritmetisk " +"substitusjon" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "ugyldig substitusjon. %s mangler avsluttende «`»" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "ingen treff pÃ¥ %s" + +#: test.c:147 +msgid "argument expected" +msgstr "forventet argument" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: forventet heltallsuttrykk" + +#: test.c:265 +msgid "`)' expected" +msgstr "forventet «)»" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "forventet «)», men fant %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: forventet binær operatør" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: forventet unær operatør" + +#: test.c:881 +msgid "missing `]'" +msgstr "«]» mangler" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "syntaksfeil: uforventet «;»" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "ugyldig signalnummer" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" +"fellehÃ¥ndtering: øvre grense for fellehÃ¥ndteringsnivÃ¥ (%d) er overskredet" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: ugyldig verdi i «trap_list[%d]»: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: SIG_DFL er signalbehandler. Sender %d (%s) til meg selv " +"pÃ¥ nytt" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: %d er et ugyldig signal" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "feil under importering av definisjonen av funksjonen «%s»" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "skallnivÃ¥et (%d) er for høyt. Tilbakestiller til 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: ingen funksjonskontekst i gjeldende virkefelt" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: variabel kan ikke tilknyttes verdi" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: knytter heltall til navnreferanse" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: ingen funksjonskontekst i gjeldende virkefelt" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s har exportstr som er null" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "%d er et ugyldig tegn i exportstr for %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "exportstr for %s mangler «=»" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context: toppen av «shell_variables» er ikke en funksjonskontekst" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: kontekst for «global_variables» mangler" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: toppen av «shell_variables» er ikke et midlertidig miljøfelt" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: klarte ikke Ã¥ Ã¥pne som FIL" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: ugyldig verdi for sporing av fildeskriptor" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: samspill-verdi er utenfor tillatt rekkevidde" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Opphavsrett (C) 2012 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Lisens GPLv3+: GNU GPL versjon 3 eller nyere \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versjon %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"Dette er fri programvare. Du stÃ¥r fritt til Ã¥ endre og dele den videre." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "" +"Det stilles INGEN GARANTI, i den grad dette tillates av gjeldende lovverk." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: klarte ikke Ã¥ tildele %lu byte (%lu byte tildelt)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: klarte ikke Ã¥ tildele %lu byte" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: klarte ikke Ã¥ tildele %lu byte (%lu byte tildelt)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: klarte ikke Ã¥ tildele %lu byte" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [navn[=verdi] … ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] navn [navn …]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m tastaturoppsett] [-f filnavn] [-q navn] [-u navn] [-r " +"knappesekv] [-x knappesekv:skallkommando] [knappesekv:readline-funksjon " +"eller readline-kommando]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [innebygd-skallfunksjon [arg …]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [uttr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [mappe]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg …]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [navn[=verdi] …]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] navn[=verdi] …" + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [valg] navn[=verdi] …" + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg …]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg …]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f filnavn] [navn …]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg …]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts valgstreng navn [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a navn] [kommando [argumenter …]] [videresending …]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e enavn] [-lnr] [første] [siste] eller fc -s [pat=rep] [kommando]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [jobbspes]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [jobbspes …]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p stinavn] [-dt] [navn …]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [mønster …]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d posisjon] [n] eller history -anrw [filnavn] eller history -" +"ps arg [arg …]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobbspes …] eller jobs -x kommando [arg]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobbspes … | pid …]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspes | -n signum | -sigspes] pid | jobbspes … eller kill -l " +"[sigspes]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg …]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a tabell] [-d adskill] [-i tekst] [-n ntegn] [-N ntegn] [-p " +"ledetekst] [-t tidsavbrudd] [-u fd] [navn …]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o valgnavn] [--] [arg …]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [navn …]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [navn[=verdi] …] eller export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [navn[=verdi] …] eller readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source filnavn [argumenter]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". filnavn [argumenter]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [uttr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg … ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signalspes …]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] navn [navn …]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [grense]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [modus]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [id …]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid …]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAVN [in ORD … ] ; do KOMMANDOER; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( uttr1; uttr2; uttr3 )); do KOMMANDOER; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAVN [in ORD … ;] do KOMMANDOER; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] kommandokø" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case ORD in [MØNSTER [| MØNSTER] …) KOMMANDOER ;;] … esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if KOMMANDOER; then KOMMANDOER; [ elif KOMMANDOER; then KOMMANDOER; ] … " +"[ else KOMMANDOER; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while KOMMANDOER; do KOMMANDOER; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until KOMMANDOER; do KOMMANDOER; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAVN] kommando [videresendinger]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function navn { KOMAMNDOER ; } eller navn () { KOMMANDOER ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ KOMMANDOER ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( uttrykk ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ uttrykk ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variabler - Navn og betydninger av enkelte skallvariabler" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | mappe]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [valgnavn …]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [argumenter]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o valg] [-A handling] [-G globpat] [-" +"W ordliste] [-F funksjon] [-C kommando] [-X filterpat] [-P prefiks] [-S " +"suffiks] [navn …]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o valg] [-A handling] [-G globpat] [-W ordliste] " +"[-F funksjon] [-C kommando] [-X filtersti] [-P prefiks] [-S suffiks] [ord]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o valg] [-DEI] [navn …]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d skilletegn] [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C " +"tilbakekall] [-c mengde] [tabell]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d skilletegn] [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-" +"C tilbakekall] [-c mengde] [tabell]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definer eller vis alias.\n" +" \n" +" Hvis ingen argumenter er gitt, skriver programmet ut en liste over\n" +" gjeldende alias i form av «alias NAVN=verdi» til standardutdata.\n" +" \n" +" Ellers defineres et alias per NAVN med en VERDI.\n" +" Avsluttende mellomrom i VERDI fører til at neste ord kontrolleres for\n" +" alias-substitusjon nÃ¥r aliaset utvides.\n" +" \n" +" Valg:\n" +" -p\tSkriv ut alle definerte alias i brukbart format\n" +" \n" +" Avslutningsstatus:\n" +" alias avslutter med positiv verdi («true»), med mindre bruker skriver " +"inn et NAVN\n" +" som mangler definert alias." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Fjern hvert NAVN fra lista over definerte alias.\n" +" \n" +" Valg:\n" +" -a\tfjern alle alias-definisjoner.\n" +" \n" +" Programmet avslutter som vellykket med mindre bruker velger et aliasNAVN " +"som ikke finnes." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Velg hurtigtaster og variabler for Readline.\n" +" \n" +" Knytt en knappekombinasjon til en Readline-funksjon eller makro, eller " +"gi\n" +" verdi til en Readline-variabel. Argumentsyntaksen tilsvarer det som " +"finnes\n" +" i «~/.inputrc», men mÃ¥ oppgis som ett argument.\n" +" F.eks.: bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Valg:\n" +" -m OPPSETT Bruk valgt tastaturOPPSETT under kjøring av denne " +"kommandoen.\n" +" Gyldige oppsettsnavn er «emacs», «emacs-standard»,\n" +" «emacs-meta», «emacs-ctlx», «vi», «vi-move»,\n" +" «vi-command» og «vi-insert».\n" +" -l Vis funksjonsnavn.\n" +" -P Vis funksjonsnavn og tildelinger.\n" +" -p Vis funksjoner og tildelinger i et format som kan " +"gjenbrukes\n" +" som inndata.\n" +" -S Vis knappekombinasjoner som kaller makroer og " +"tilhørende verdier\n" +" -s Tilsvarer «-S», men i et format som kan gjenbrukes " +"i inndata.\n" +" -V Vis variabelnavn og verdier\n" +" -v Tilsvarer «-V», men i et format som kan gjenbrukes " +"i inndata.\n" +" -q function-name Spør hvilke knapper som kaller aktuell funksjon.\n" +" -u function-name Fjern alle knappekombinasjoner som er tilknyttet " +"aktuell funksjon.\n" +" -r KOMB Fjern tildeling av valgt knappeKOMBinasjon.\n" +" -f FILNAVN Les knappekombinasjoner fra FILNAVN.\n" +" -x KOMB:KOMMANDO\tGjør slik at valgt skallKOMMANDO kjøres nÃ¥r\n" +" \t\t\t\tvalgt knappeKOMBinasjon trykkes.\n" +" -X Vis knappekombinasjoner som er tildelt med «-x», og " +"aktuelle kommandoer \n" +" i et format som kan gjenbrukes i inndata.\n" +" \n" +" Avslutningsstatus:\n" +" bind avslutter med 0, med mindre bruker tar et ukjent valg eller det " +"oppstÃ¥r feil." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"GÃ¥ ut av en «FOR»-, «WHILE»- eller «UNTIL»-løkke.\n" +" \n" +" Hvis N er valgt, brytes N antall underløkker.\n" +" \n" +" Avslutningsstatus:\n" +" Statuskoden er 0, med mindre N er mindre enn 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Fortsett neste runde av gjeldende FOR-, WHILE- eller WHILE-løkke..\n" +" \n" +" Hvis N er valgt, fortsetter N-te løkke.\n" +" \n" +" Avslutningsstatus:\n" +" Statuskoden er 0, med mindre N er mindre enn 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Kjør innebygde skallfunksjoner.\n" +" \n" +" Kjør SKALLFUNKSJON med valgte ARGumenter uten Ã¥ slÃ¥ opp\n" +" kommandonavn. Dette er nyttig nÃ¥r du vil re-implementere en innebygd\n" +" skallkommando som en funksjon, samtidig som du kjører den innenfor en " +"skallfunksjon.\n" +" \n" +" Avslutningsstatus:\n" +" Statuskoden er den samme som aktuell SKALLFUNKSJON gir, eller\n" +" negativ («false») hvis SKALLFUNKSJON ikke er en innebygd skallkommando." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Vis konteksten for gjeldende underrutine-kall.\n" +" \n" +" Hvis UTTRykk ikke er valgt, vises «$line $filename». Med UTTRykk vises\n" +" «$line $subroutine $filename». Denne ekstrainformasjonen kan brukes\n" +" til stabelsporing.\n" +" \n" +" Verdien av UTTRykk viser hvor mange kall-rammer programmet skal bevege " +"seg\n" +" gjennom tilbake fra gjeldende ramme. Øverste ramme er 0.\n" +" \n" +" Avslutningsstatus:\n" +" Status er 0, med mindre skallet ikke kjører en skallfunksjon eller\n" +" valgt UTTRykk er ugyldig." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Bytt arbeidsmappe for skallet.\n" +" \n" +" Bytt gjeldende mappe til MAP. Standard MAPpe er verdien av\n" +" skallvariabelen HOME.\n" +" \n" +" Variabelen CDPATH bestemmer søkestien for mapper som inneholder\n" +" MAP. Alternative mappenavn i CDPATH er adskilt med «:».\n" +" Et null-mappenavn er det samme som gjeldende mappe. Hvis MAP begynner\n" +" med skrÃ¥strek (/), brukes ikke CDPATH.\n" +" \n" +" Hvis valgt mappe ikke finnes, og skallvalget «cdable_vars» har en " +"verdi,\n" +" antas ordet Ã¥ være et variabelnavn. Hvis den variabelen har en verdi,\n" +" brukes denne verdien som MAP.\n" +" \n" +" Valg:\n" +" -L\ttving følging av symbolske lenker. Følg symbolske lenker i\n" +" \tMAP etter Ã¥ ha behandlet forekomster av «..»\n" +" -P\tbruk fysisk mappestruktur uten Ã¥ følge symbolske\n" +" \tlenker. Følg lenker i MAP før forekomster av «..» behandles.\n" +" -e\thvis «-P» er valgt, og det er uklart hva som er gjeldende\n" +" \tarbeidsmappe, avslutt med en annen status enn 0\n" +" -@ hvis systemet støtter det, vis en fil med utvidede attributter\n" +" som en mappe med attributtene som innhold\n" +" \n" +" Standard for symbolske lenker er at de følges, som om «-L» er valgt.\n" +" «..» behandles ved at den nÃ¥ tidligere stinavn-komponenten fjernes\n" +" én skrÃ¥strek tilbake eller til begynnelsen av MAP.\n" +" \n" +" Avslutningsstatus:\n" +" Status er 0 hvis skallet har byttet mappe, og hvis $PWD er valgt uten " +"problemer\n" +" ved bruk av «-P». Ellers er status noe annet enn 0." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Skriv ut navn pÃ¥ gjeldende arbeidsmappe.\n" +" \n" +" Valg:\n" +" -L\tskriv ut verdien av $PWD hvis dette er navnet pÃ¥\n" +" \tgjeldende arbeidsmappe\n" +" -P\tskriv ut fysisk mappe, uten symbolske lenker\n" +" \n" +" «pwd» kjører med valget «-L» som standard.\n" +" \n" +" Avslutningsstatus:\n" +" Status er 0, med mindre bruker tar et ugyldig valg eller\n" +" programmet ikke klarer Ã¥ lese gjeldende mappe." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Null-kommando.\n" +" \n" +" Dette har ingen effekt. Kommandoen gjør ingenting.\n" +" \n" +" Avslutningsstatus:\n" +" Alltid vellykket." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Gi et vellykket resultat.\n" +" \n" +" Avslutningsstatus:\n" +" Alltid vellykket." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Gi et mislykket resultat.\n" +" \n" +" Avslutningsstatus:\n" +" Alltid mislykket." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Kjør en enkel kommando, eller vis informasjon om kommandoer.\n" +" \n" +" Kjører valgt KOMMANDO med ARG uten oppslag av skallfunksjoner, eller " +"viser\n" +" informasjon om valgte KOMMANDOer. Dette kan brukes til Ã¥ kalle " +"kommandoer\n" +" pÃ¥ disk nÃ¥r det finens en funksjon med samme navn.\n" +" \n" +" Valg:\n" +" -p\tbruk en standardverdi for STI som garantert finner alle\n" +" \tstandardverktøyene\n" +" -v\tskriv ut en beskrivelse av KOMMANDO i «type»-stil\n" +" -V\tskriv ut en mer detaljert beskrivelse av hver KOMMANDO\n" +" \n" +" Avslutningsstatus:\n" +" Samme som statuskoden fra KOMMANDO, eller mislykket hvis KOMMANDO ikke " +"finnes." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Gi verdier og attributter til variabler.\n" +" \n" +" Lag variabler og gi dem attributter. Hvis ingen NAVN er valgt,\n" +" vises attributter og verdier av alle variabler.\n" +" \n" +" Valg:\n" +" -f\tbegrens handling eller visning til funksjonsnavn og definisjoner\n" +" -F\tbegrens visning til funksjonsnavn (linjenummer og\n" +" \tkildefil kommer i tillegg ved feilsøking)\n" +" -g\tlag globale variabler ved bruk innenfor en skallfunksjon\n" +" \t(ignoreres ved annen bruk)\n" +" -p\tvis attributter og verdi av hvert valgt NAVN\n" +" \n" +" Valg som justerer attributter:\n" +" -a\tgjør valgte NAVN til indekserte tabeller (hvis det støttes)\n" +" -A\tgjør valgte NAVN til assosiative tabeller (hvis det støttes)\n" +" -i\tgi valgte NAVN attributten «integer» (heltall)\n" +" -l\tkonverter valgte NAVN til smÃ¥ bokstaver\n" +" -n\tgjør valgt NAVN til en referanse til variabelen med egen verdi som " +"navn\n" +" -r\tskrivebeskytt valgte NAVN\n" +" -t\tgi valgte NAVN attirbutten «trace»\n" +" -u\tkonverter valgte NAVN til store bokstaver\n" +" -x\tgjør valgte NAVN eksporterbare\n" +" \n" +" Bruk «+» i stedet for «-» for Ã¥ slÃ¥ av aktuell attributt.\n" +" \n" +" Variabler med heltallsattributt blir evaluert aritmetisk (se\n" +" kommandoen «let») nÃ¥r de fÃ¥r en verdi.\n" +" \n" +" Ved bruk innenfor funksjoner gjør «declare» valgte NAVN lokale, som med\n" +" kommandoen «local». Valget «-g» slÃ¥r av denne oppførselen.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller\n" +" det oppstÃ¥r en variabel-tildelingsfeil." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Gi verdier og attributter til variabler.\n" +" \n" +" Dette er synonymt med «declare» (se «help declare»)." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Definer lokale variabler.\n" +" \n" +" Lag en lokal variabel med valgt NAVN og VERDI. Du kan foreta\n" +" VALG i henhold til kommandoen «declare».\n" +" \n" +" Lokale variabler kan bare brukes innenfor en funksjon. De er kun " +"synlige\n" +" for funksjonen de lages innenfor, samt underfunksjoner.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg, det oppstÃ¥r\n" +" en feil under variabeltildeling eller skallet ikke kjører en funksjon." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Skriv argumenter til standardutdata.\n" +" \n" +" Vis ARGumenter, adskilt med enkelt mellomromtegn og\n" +" etterfulgt av linjeskift, pÃ¥ standardutdata. \n" +" \n" +" Valg:\n" +" -n\tikke legg til linjeskift\n" +" -e\tslÃ¥ pÃ¥ tolkning av skrÃ¥strek-skiftetegn\n" +" -E\tslÃ¥ uttrykkelig av tolkning av skÃ¥strek-skiftetegn\n" +" \n" +" «echo» tolker følgende skiftetegn:\n" +" \a\tsystemvarsel\n" +" \\b\trettetast\n" +" \\c\tignorer videre utdata\n" +" \\e\tskiftetegn\n" +" \\E\tskiftetegn\n" +" \\f\tsideskift\n" +" \\n\tny linje\n" +" \\r\tlinjeskift-tegn\n" +" \\t\thorisontal tabulator\n" +" \\v\tvertikal tabulator\n" +" \\\\\tomvendt skrÃ¥strek\n" +" \\0nnn\ttegn med ASCII-kode NNN (oktal). NNN kan bestÃ¥ av\n" +" \t0 til 3 oktale sifre\n" +" \\xHH\t8-bit-tegn med verdi HH (heksadesimal). HH\n" +" \tkan bestÃ¥ av ett eller to hex-sifre\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre det oppstÃ¥r en skrivefeil." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Skriv ut argumenter til standardutdata.\n" +" \n" +" Vis ARGumenter pÃ¥ standardutdata, etterfulgt av linjeskift.\n" +" \n" +" Valg:\n" +" -n\tikke ta med linjeskift\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre det oppstÃ¥r en skrivefeil." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"SlÃ¥ pÃ¥ og av innebygde skallfunksjoner.\n" +" \n" +" SlÃ¥r av og pÃ¥ innebygde skallkommandoer. Ved Ã¥ slÃ¥ av kan du\n" +" kjøre en kommando pÃ¥ disk med samme navnet som en skallkommando\n" +" uten Ã¥ mÃ¥tte bruke fullstendig filsti.\n" +" \n" +" Valg:\n" +" -a\tskriv ut en liste som viser hvilke kommandoer som er slÃ¥tt pÃ¥\n" +" -n\tslÃ¥ av hvert valgt NAVN, eller vis en liste over kommandoer som er " +"slÃ¥tt av\n" +" -p\tskriv ut liste over kommandoer i et gjenbrukbart format\n" +" -s\tbare skriv ut navn pÃ¥ innebygde Posix-spesialkommandoer\n" +" \n" +" Valg for dynamisk innlasting:\n" +" -f\tHent NAVN fra delt objekt-FILNAVN\n" +" -d\tFjern en kommando som er lastet inn med -f\n" +" \n" +" Hvis du ikke tar noen valg, blir hvert NAVN slÃ¥tt pÃ¥.\n" +" \n" +" Bruk «enable -n test» for Ã¥ bruke «test» i $PATH i stedet for\n" +" versjonen som er innebygd i skallet.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre valgt NAVN ikke er innebygd eller det oppstÃ¥r feil." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Kjør argumenter som en skallkommando.\n" +" \n" +" Kombiner ARGumenter i én streng, bruk resultatet som inndata i skallet,\n" +" og kjør dette som kommando(er).\n" +" \n" +" Avslutningsstatus:\n" +" Samme som valgt kommando, eller vellykket hvis kommando er null." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Tolk valg-argumenter.\n" +" \n" +" Getopts brukes av skallprosedyrer til Ã¥ tolke posisjonsparametre\n" +" som valg.\n" +" \n" +" VALGSTRENG inneholder bokstaver som skal behandles som valg.\n" +" Hvis en bokstav etterfølges av kolon, forventer valget et argument.\n" +" Argumentet holdes adskilt fra valget med blanktegn.\n" +" \n" +" getopts plasserer neste valg i skallvariabelen $name hver gang det\n" +" kalles, laster inn navnet hvis det ikke finnes, og\n" +" indeks for neste argument som skal behandles i skallvariabelen OPTIND.\n" +" OPTIND lastes inn til 1 hver gang skallet eller et skallskript kjøres.\n" +" NÃ¥r et valg krever et argument plasseres argumentet i skallvariabelen " +"OPTARG.\n" +" \n" +" getopts rapporterer feil pÃ¥ én av to mÃ¥ter. Hvis første tegn i " +"VALGSTRENG\n" +" er kolon, rapporteres feil uten direkte feilmeldinger til bruker.\n" +" Hvis getopts ser et ugyldig valg, plasseres aktuelt valgtegn i OPTARG.\n" +" Hvis et obligatorisk argument ikke er gitt, legger getopts et «:» i NAVN " +"og\n" +" bruker oppdaget valgtegn som OPTARG. Hvis getopts ikke er i " +"stillemodus,\n" +" og ser et ugyldig valg, brukes «?» som NAVN, og OPTARG tømmes.\n" +" Hvis et obligatorisk argument ikke er gitt, legger getopts et «?»\n" +" i NAVN, tømmer OPTARG og skriver ut en feilmelding.\n" +" \n" +" Hvis skallvariabelen OPTERR har verdien 0, slÃ¥r getopts av utskrift\n" +" av feilmeldinger, selv hvis første tegn i VALGSTRENG ikke er kolon.\n" +" OPTERR har verdien 1 som standard.\n" +" \n" +" Getopts tolker vanligvis posisjonsparametre ($0 - $9), men hvis\n" +" flere argumenter er gitt, blir disse tolket i stedet.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket hvis et valg finnes, og mislykket hvis et valg ikke finnes\n" +" eller det oppstÃ¥r en annen feil." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Erstatt skallet med valgt kommando.\n" +" \n" +" Kjør KOMMANDO, og erstatt dette skallet med valgt program.\n" +" ARGUMENTER sendes videre til valgt KOMMANDO. Hvis KOMMANDO ikke er " +"valgt,\n" +" blir videresendinger brukt i gjeldende skall.\n" +" \n" +" Valg:\n" +" -a name\tsend NAVN som argument nummer null for KOMMANDO\n" +" -c\t\tkjør valgt KOMMANDO med et tomt miljø\n" +" -l\t\tbruk bindestrek som argument nummer null for COMMAND\n" +" \n" +" Hvis kommandoen ikke kan kjøres, avsluttes ikke-interaktivt skall, med " +"mindre\n" +" skallvalget «execfail» er brukt.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre valgt KOMMANDO ikke finnes eller det oppstÃ¥r en " +"videresendingsfeil." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Avslutt skallet.\n" +" \n" +" Avslutt skallet med status N. Hvis N utelates, er statuskoden\n" +" den samme som forrige kjørte kommando." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Avslutt et innloggingsskall.\n" +" \n" +" Avslutter et innloggingsskall med status N. Dette gir feilmelding hvis " +"det\n" +" ikke kjøres i et innloggingsskall." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Vis eller kjør kommandoer fra historikklista.\n" +" \n" +" fc brukes til Ã¥ vise list eller redigere og kjøre kommandoer pÃ¥ nytt fra " +"historikklista.\n" +" FØRSTE og SISTE kan være tall som angir rekkevidde. FØRSTE kan ogsÃ¥ være " +"en\n" +" streng, som betyr nyeste kommando som begynner med denne strengen.\n" +" \n" +" Valg:\n" +" -e ENAME\tvelg hvilket redigeringsprogram som skal brukes. Standard er " +"FCEDIT, evt. EDITOR\n" +" \t\teller vi\n" +" -l \tvis linjer i stedet for Ã¥ redigere\n" +" -n\tikke vis linjenumre\n" +" -r\tvis linjer i omvendt rekkefølge (nyeste linjer øverst)\n" +" \n" +" I formatet «fc -s [pat=rep …] [kommando]» kjøres KOMMANDO\n" +" pÃ¥ nytt etter at GAMMEL=NY er utført.\n" +" \n" +" Et nyttig alias for dette er r='fc -s'. Slik blir «r cc» ensbetydende\n" +" med Ã¥ kjøre forrige kommando med navn som begynner pÃ¥ «cc», og «r»\n" +" betyr Ã¥ kjøre forrige kommando.\n" +" \n" +" Avslutningsstatus:\n" +" Enten vellykket, samme som kjørt kommando eller noe annet enn null hvis " +"det oppstÃ¥r feil." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Flytt jobb til forgrunnen.\n" +" \n" +" Plasser jobb med id-en JOB_SPEC i forgrunnen, slik at den blir\n" +" gjeldende jobb. Hvis JOB_SPEC ikke er oppgitt, brukes jobben som\n" +" allerede oppfattes som gjeldende i skallet.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som kommandoen som legges i forgrunnen, eller mislykket hvis det " +"oppstÃ¥r feil." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Flytt jobber til bakgrunnen.\n" +" \n" +" Plasser jobber med id-er JOB_SPEC i bakgrunnen, som om de\n" +" ble startet med «&». Hvis JOB_SPEC ikke er oppgitt, brukes jobben som " +"allerede\n" +" som gjeldende i skallet.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre jobbkontroll er slÃ¥tt av eller det oppstÃ¥r feil." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Husk eller vis programplasseringer.\n" +" \n" +" Finn ut og husk fullstendige stinavn pÃ¥ hvert kommandoNAVN. Hvis\n" +" ingen argumenter er gitt, viser programmet lagrede programplasseringer.\n" +" \n" +" Valg:\n" +" -d\t\tglem lagret plassering av valgt(e) NAVN\n" +" -l\t\tskriv ut i gjenbrukbart format\n" +" -p stinavn\tbruk valgt STINAVN som fullstendig stinavn pÃ¥ valgt NAVN\n" +" -r\t\tglem alle lagrede plasseringer\n" +" -t\t\tskriv ut lagret plassering av valgt(e) NAVN, med\n" +" \t\tNAVN foran aktuell plassering hvis flere NAVN er valgt\n" +" Argumenter:\n" +" NAVN\t\tProgrammet søker etter hvert NAVN i $PATH og legger det til i " +"lista\n" +" \t\tover lagrede kommandoer.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre NAVN ikke finnes eller bruker tar et ugyldig valg." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Vis informasjon om innebygde kommandoer.\n" +" \n" +" Vis kort sammendrag om innebygde kommandoer. Hvis MØNSTER er\n" +" valgt, vises detaljert hjelp til bruk av alle kommandoer som samsvarer\n" +" med MØNSTER. Ellers vises en liste over hjelpeemner.\n" +" \n" +" Valg:\n" +" -d\tskriv ut en kort beskrivelse av hvert emne\n" +" -m\tetterlikn «manpage»-format i bruksdata\n" +" -s\tbare vis et kort brukssammendrag per emne som samsvarer\n" +" \t\tmed MØNSTER\n" +" \n" +" Argumenter:\n" +" MØNSTER\tVelger hjelpeemne\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre et MØNSTER ikke finnes eller bruker tar et ugyldig " +"valg." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Vis eller gjør endringer i kommandohistorikk.\n" +" \n" +" Vis historikk som en liste med linjenumre, og legg til «*» foran\n" +" endrede oppføringer. Argumentet N viser siste N antall oppføringer.\n" +" \n" +" Valg:\n" +" -c\ttøm historikk ved Ã¥ slette alle oppføringer\n" +" -d posisjon\tslett historikkoppføring ved valgt posisjon.\n" +"\t\tNegativ posisjon teller fra slutten.\n" +" \n" +" -a\tlegg til linjer fra gjeldende økt i historikkfil\n" +" -n\tles alle historikklinjer som ikke allerede er lest inn fra " +"historikkfil\n" +" -r\tles historikkfil og legg til innhold i historikkliste\n" +" -w\tlagre gjeldende historikk i historikkfil\n" +" \n" +" -p\tutfør historikkutvidelse per ARGument og vis resultatet\n" +" \tuten Ã¥ lagre det i historikkliste\n" +" -s\tlegg til ARGumenter i historikkliste som én enkelt oppføring\n" +" \n" +" Hvis FILNAVN er valgt, brukes dette som historikkfil. Ellers brukes\n" +" $HISTFILE hvis den har en verdi. Ellers brukes «~/.bash_history».\n" +" \n" +" Hvis $HISTTIMEFORMAT har en verdi som ikke er null, brukes denne\n" +" verdien som formatstreng for strftime(3) for Ã¥ skriv ut tidsstempelet i\n" +" hver historikkoppføring. Ellers skrives ingen tidsstempler ut.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r feil." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Vis status for bakgrunnsjobber.\n" +" \n" +" Vis aktive bakgrunnsjobber. JOBBSPES begrenser utskrift til valgt jobb.\n" +" Hvis ingenting er valgt, vises status for alle aktive jobber.\n" +" \n" +" Valg:\n" +" -l\tvis prosess-ID-er i tillegg til vanlig informasjon\n" +" -n\tbare vis prosesser som har endret stattus siden forrige\n" +" \tvarsling\n" +" -p\tbare vis prosess-ID-er\n" +" -r\tbare skriv ut kjørende jobber\n" +" -s\tbare skriv ut ventende jobber\n" +" \n" +" Hvis «-x» er valgt, kjøres KOMMANDO straks alle ARGumenterte\n" +" jobber er erstattet med prosess-ID-en til gjeldende prosessgruppeleder.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r " +"feil.\n" +" Hvis «-x» er valgt, hentes statuskode fra aktuell KOMMANDO." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Fjern jobber fra gjeldende skall.\n" +" \n" +" Fjerner hvert JOBBSPES-argument fra tabellen med aktive jobber.\n" +" Hvis ingen JOBBSPES er valgt, brukes jobben som regnes som gjeldende.\n" +" \n" +" Valg:\n" +" -a\tfjern alle jobber hvis JOBBSPES ikke er angitt\n" +" -h\tmarker hver JOBBSPES slik at SIGHUP ikke sendes til jobben hvis " +"skallet\n" +" \tmottar et SIGHUP\n" +" -r\tbare fjern kjørende jobber\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar ugyldig(e) valg eller JOBBSPES." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Send signal til en jobb.\n" +" \n" +" Gi prosesser (valgt med PID eller JOBBSPES) et signal\n" +" (valgt med SIGSPES eller SIGNUM). Hvis hverken SIGSPES eller SIGNUM er " +"valgt,\n" +" brukes SIGTERM.\n" +" \n" +" Valg:\n" +" -s sig\tSIG er et signalnavn\n" +" -n sig\tSIG er et signalnummer\n" +" -l\tvis signalnavn. Hvis «-l» etterfølges av argumenter,\n" +" \tantas disse Ã¥ være signalnumre som det skal vises navn pÃ¥\n" +" -L\ttilsvarer «-l»\n" +" \n" +" Kill er en innebygget skallkommando av to grunner: den tillater bruk av " +"jobb-ID\n" +" i stedet for prosess-ID, og lar bruker drepe prosesser hvis grensa for\n" +" antall tillatte prosesser er nÃ¥dd.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r feil." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Kontroller aritmetiske uttrykk.\n" +" \n" +" Kontroller hvert ARGument som et aritmetisk uttrykk. Kontroll utføres i\n" +" breddefaste heltall uten overflodssjekk, men deling pÃ¥ 0 fanges opp\n" +" og markeres som en feil. Følgende liste over operatører er\n" +" sortert gruppevis pÃ¥ presedensnivÃ¥, som vises i synkende rekkefølge.\n" +" \n" +" \tid++, id--\tvariabel post-inkrement, post-dekrement\n" +" \t++id, --id\tvariabel pre-inkrement, pre-dekrement\n" +" \t-, +\t\tunær minus, pluss\n" +" \t!, ~\t\tlogisk og bitvis negasjon\n" +" \t**\t\teksponentiasjon\n" +" \t*, /, %\t\tmultiplikasjon, divisjon, rest\n" +" \t+, -\t\taddisjon, subtraksjon\n" +" \t<<, >>\t\tvenstre og høyre bitvis bytte\n" +" \t<=, >=, <, >\tsammenlikning\n" +" \t==, !=\t\tlikhet, ulikhet\n" +" \t&\t\tbitvis AND\n" +" \t^\t\tbitvis XOR\n" +" \t|\t\tbitvis OR\n" +" \t&&\t\tlogisk AND\n" +" \t||\t\tlogisk OR\n" +" \texpr ? expr : expr\n" +" \t\t\tbetinget operatør\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\toppgave\n" +" \n" +" Skallvariabler tillates som operand. Variabelens navn erstattes med\n" +" verdien (tvunget til et breddefast heltall) i et uttrykk.\n" +" Variabelen behøver ikke heltallsattributt for Ã¥ kunne brukes i et " +"uttrykk.\n" +" \n" +" Operatører regnes ut etter presedens. Underuttrykk i parentes\n" +" regnes ut først, og kan overstyre overnevnte presedensregler.\n" +" \n" +" Avslutningsstatus:\n" +" Hvis siste ARGument blir 0, er status 1. Ellers er statuskoden 0." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Les en linje fra standard inndata og del den opp i felt.\n" +" \n" +" Leser en enkeltlinje fra standard inndata, eller fra fildeskriptor FD\n" +" hvis «-u» er valgt. Linja deles opp i felt pÃ¥ samme mÃ¥te som orddeling.\n" +" Første ord tildeles første NAVN, ord nummer to til NAVN nummer to,\n" +" og sÃ¥ videre. Eventuelle restrerende ord tildeles siste NAVN.\n" +" Bare tegn som finnes i $IFS regnes som ord-skilletegn.\n" +" \n" +" Hvis ingen NAVN er oppgitt, legges lest linje i variabelen REPLY.\n" +" \n" +" Valg:\n" +" -a tabell\tknytt leste ord til sekvens-indekser i \n" +" \t\ttabellvariabelen TABELL, talt fra null\n" +" -d skill\tfortsett frem til første SKILLetegn, i stedet for frem til " +"linjeskift\n" +" -e\t\tbruk Readline til Ã¥ hente linje\n" +" -i tekst\tBruk valgt TEKST med Readline\n" +" -n n\tgÃ¥ tilbake etter Ã¥ ha lest N antall tegn i stedet for Ã¥ vente pÃ¥ " +"ny linje,\n" +" \t\tmen bruk skilletegn hvis linja er kortere enn N\n" +" \t\tles tegn før skilletegn\n" +" -N N\tgÃ¥ tilbake etter Ã¥ ha lest nøyaktig N antall tegn, med mindre\n" +" \t\tEOF eller tidsavbrudd oppstÃ¥r (skilletegn ignoreres)\n" +" -p ledet\tskriv ut valgt LEDETekst uten Ã¥ legge til linjeskift før " +"lesing\n" +" -r\t\tikke tillat bruk av skrÃ¥strek som skiftetegn\n" +" -s\t\tikke skriv ut inndata som kommer fra en terminal\n" +" -t tidsav\tavbryt og avslutt med feil hvis en hel linje med inndata\n" +" \t\tikke blir lest ferdig innen valgt TIDSAVbrudd (i sekunder).\n" +" \t\tStandard avbruddstid hentes fra variabelen TMOUT. TIDSAVbrudd kan " +"være\n" +" \t\tet brøktall. Hvis TIDSAV er 0, gÃ¥r read tilbake umiddelbart,\n" +" \t\tog prøver ikke Ã¥ lese data. I sistnevnte tilfelle avslutter read " +"bare\n" +" \t\tvellykket hvis inndata er tilgjengelig pÃ¥ valgt fildeskriptor.\n" +" \t\tAvslutningsstatus er større enn 128 ved tidsavbrudd\n" +" -u fd\t\tles fra fildeskriptor FD i stedet for standard inndata\n" +" \n" +" Avslutningsstatus:\n" +" Null (vellykket), med mindre programmet møter EOF, fÃ¥r tidsavbrudd\n" +" (i sÃ¥ fall er verdien høyere enn 128), det oppstÃ¥r en variabel-" +"tidelingsfeil,\n" +" eller valget «-u» argumenteres med en ugyldig fildeskriptor." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"GÃ¥ ut av en skallfunksjon.\n" +" \n" +" Avslutter en funksjon eller kildeskript med status N.\n" +" Hvis N er utelatt, brukes statuskoden fra forrige kommando\n" +" i funksjonen eller skriptet.\n" +" \n" +" Avslutningsstatus:\n" +" N, eller mislykket hvis skallet ikke kjører en funksjon eller et skript." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Legg til eller fjern verdier for skallvalg og posisjonsparametre.\n" +" \n" +" Endre verdier av skall-attributter og posisjonsparametre, eller\n" +" vis navn og verdier av skallvariabler.\n" +" \n" +" Valg:\n" +" -a Marker variabler som er endret eller laget for eksportering.\n" +" -b Varsle jobbavbrudd umiddelbart.\n" +" -e Avslutt hvis en kommando avslutter med annen status enn null.\n" +" -f SlÃ¥ av generering av filnavn («globbing»).\n" +" -h Husk plassering av kommandoer ved oppslag.\n" +" -k Legg alle tildelingsargumenter for en kommando i miljøet,\n" +" og ikke bare de som kommer før kommandonavnet.\n" +" -m SlÃ¥ pÃ¥ jobbkontroll.\n" +" -n Les kommandoer, men ikke kjør dem.\n" +" -o valgnavn\n" +" Gi verdi til variabelen som samsvarer med valgnavn:\n" +" allexport tilsvarer «-a»\n" +" braceexpand tilsvarer «-B»\n" +" emacs rediger linjer med et emacs-aktig grensesnitt\n" +" errexit tilsvarer «-e»\n" +" errtrace tilsvarer «-E»\n" +" functrace tilsvarer «-T»\n" +" hashall tilsvarer «-h»\n" +" histexpand tilsvarer «-H»\n" +" history slÃ¥ pÃ¥ kommandohistorikk\n" +" ignoreeof ikke avslutt skall ved lesing av EOF\n" +" interactive-comments\n" +" tillat kommentarer i interaktive kommandoer\n" +" keyword tilsvarer «-k»\n" +" monitor tilsvarer «-m»\n" +" noclobber tilsvarer «-C»\n" +" noexec tilsvarer «-n»\n" +" noglob tilsvarer «-f»\n" +" nolog godtas, men ignoreres\n" +" notify tilsvarer «-b»\n" +" nounset tilsvarer «-u»\n" +" onecmd tilsvarer «-t»\n" +" physical tilsvarer «-P»\n" +" pipefail returverdi av en kommandokø er statusen for\n" +" siste kommando som avslutter med en annen status " +"enn null,\n" +" eller null hvis alle kommandoer avsluttet med " +"null\n" +" posix endre bash-oppførsel hvor standardoppførselen er\n" +" annerledes enn Posix-standarden, slik at bash\n" +" samsvarer med Posix\n" +" privileged tilsvarer «-p»\n" +" verbose tilsvarer «-v»\n" +" vi rediger linjer med et vi-aktig grensesnitt\n" +" xtrace tilsvarer «-x»\n" +" -p SlÃ¥tt pÃ¥ nÃ¥r virkelig og effektiv bruker-ID ikke er like.\n" +" Dette slÃ¥r av behandling av fila $ENV og importering av\n" +" skallfunksjoner. Hvis du slÃ¥r av dette valget, blir effektiv uid " +"og\n" +" gid det samme som virkelig uid og gid.\n" +" -t Avslutt nÃ¥r én kommando er lest og kjørt.\n" +" -u Behandle udefinerte variabler som en feil.\n" +" -v Skriv ut skall-inndatalinjer nÃ¥r de leses.\n" +" -x Skriv ut kommandoer og argumenter nÃ¥r de kjøres.\n" +" -B utfør «brace»-utvidelse\n" +" -C Ikke tillat overskriving av vanlige filer ved\n" +" videresending av utdata.\n" +" -E Gi ERR-felle videre til skallfunksjoner.\n" +" -H SlÃ¥ pÃ¥ historikk-subsidiering i «!»-stil. Dette er slÃ¥tt pÃ¥\n" +" som standard i interaktive skall.\n" +" -P Ikke følg symbolske lenker ved kjøring av kommandoer\n" +" som «cd».\n" +" -T Gi DEBUG-felle videre til skallfunksjoner.\n" +" -- Tildel gjenstÃ¥ende argumenter til posisjonsparametre.\n" +" Hvis ingen argumenter gjenstÃ¥r, tømmes posisjonsparametrene.\n" +" - Knytt gjenstÃ¥ende argumenter til posisjonsparametre.\n" +" Valgene «-x» og «-v» er slÃ¥tt av.\n" +" \n" +" Bruk «+» i stedet for «-» for Ã¥ slÃ¥ av disse valgene.\n" +" De kan ogsÃ¥ brukes nÃ¥r skallet kalles. Gjeldende valgsett finnes\n" +" i «$-». GjenstÃ¥ende antall ARGumenter er posisjonsparametre,\n" +" og tildeles i rekkefølge til $1, $2, … $n. Hvis ingen\n" +" ARGumenter er brukt, skrives alle skallvariabler ut.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Fjern verdier og attributter fra skallvariabler og funksjoner.\n" +" \n" +" Fjern variabel og funksjon per oppgitt NAVN.\n" +" \n" +" Valg:\n" +" -f\tbehandle hvert NAVN som en skallfunksjon\n" +" -v\tbehandle hvert NAVN som en skallvariabel\n" +" -n\tbehandle hvert NAVN som en navnreferanse, og tilbakestill selve " +"variabelen\n" +" \ti stedet for variabelen den refererer til\n" +" \n" +" Hvis ingen valg er tatt, prøver programmet først Ã¥ tømme en variabel.\n" +" Hvis dette mislykkes, prøver programmet Ã¥ tømme en funksjon.\n" +" \n" +" Enkelte variabler kan ikke tømmes. Se ogsÃ¥ «readonly».\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller et NAVN er " +"skrivebeskyttet." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Gi skallvariabler eksport-attributt.\n" +" \n" +" Markerer hvert valgt NAVN for automatisk eksportering til miljøet ved " +"etterfølgende\n" +" kjørte kommandoer. Hvis VERDI er oppgitt, tildeles VERDI før " +"eksportering.\n" +" \n" +" Valg:\n" +" -f\thenvis til skallfunksjoner\n" +" -n\tfjern eksport-attributt fra valgt(e) NAVN\n" +" -p\tvis en liste over alle eksporterte variabler og funksjoner\n" +" \n" +" Bruk argumentet«--» for Ã¥ slÃ¥ av videre behandling av valg.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg, eller et NAVN er " +"ugyldig." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Marker skallvariabler som skrivebeskyttet.\n" +" \n" +" Marker hvert valgt NAVN som skrivebeskyttet. Verdier av NAVN kan ikke " +"endres\n" +" av etterfølgende tildeling. Hvis VERDI er oppgitt, tildeles denne før\n" +" variabelen markeres som skrivebeskyttet.\n" +" \n" +" Valg:\n" +" -a\thenvis til indekserte tabellvariabler\n" +" -A\thenvis til assosiative tabellvariabler\n" +" -f\thenvis til skallfunksjoner\n" +" -p\tvis en liste over alle skrivebeskyttede variabler eller " +"funksjoner,\n" +" avhengig av hvorvidt «-f» er valgt\n" +" \n" +" Bruk argumentet «--» for Ã¥ slÃ¥ av videre behandling av valg.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller NAVN." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Flytt posisjonsparametre.\n" +" \n" +" Gi parametrene $N+1,$N+2 osv. nye navn som $1,$2 osv. Hvis N er\n" +" utelatt, brukes verdien 1.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre N er negativ eller større enn $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Kjør kommandoer fra en fil i gjeldende skall.\n" +" \n" +" Les og kjør kommandoer fra valgt FILNAVN i gjeldende kall.\n" +" Elementene i $PATH brukes til Ã¥ finne mappa med valgt FILNAVN.\n" +" Hvis ARGUMENTER brukes, bruke disse som posisjonsparametre\n" +" nÃ¥r valgt FILNAVN kjøres.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som siste kommando som ble kjørt via FILNAVN, eller\n" +" mislykket hvis FILNAVN ikke kan leses." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Sett skallkjøring pÃ¥ pause.\n" +" \n" +" Sett kjøring av dette skallet pÃ¥ pause inntil det mottar et SIGCONT-" +"signal.\n" +" Innloggingsskall kan ikke settes pÃ¥ pause med mindre du tvinger det " +"fram.\n" +" \n" +" Valg:\n" +" -f\ttving skallpause, selv hvis skallet er et innloggingsskall\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre jobbkontroll er slÃ¥tt av eller det oppstÃ¥r feil." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Kontroller betinget uttrykk.\n" +" \n" +" Avslutter med status 0 (positiv, «true») eller 1 (negativ, «false»)\n" +" i henhold til resultatet av valgt UTTRykk. Uttrykk kan være unære eller " +"binære.\n" +" Unære uttrykk brukes ofte for Ã¥ undersøke status for en fil.\n" +" Streng- og tallkontroll-valg kan ogsÃ¥ brukes.\n" +" \n" +" Test endrer oppførsel i henhold til antall argumenter.\n" +" Se bash-bruksanvisninga for en fullstendig spesifikasjon.\n" +" \n" +" Filvalg:\n" +" \n" +" -a FIL Positiv hvis FIL finnes.\n" +" -b FIL Positiv hvis FIL er blokk-spesialfil.\n" +" -c FIL Positiv hvis FIL er tegn-spesialfil.\n" +" -d FIL Positiv hvis FIL er en mappe.\n" +" -e FIL Positiv hvis FIL finnes.\n" +" -f FIL Positiv hvis FIL finnes og er en vanlig fil.\n" +" -g FIL Positiv hvis FIL er «set-group-id».\n" +" -h FIL Positiv hvis FIL er en symbolsk lenke.\n" +" -L FIL Positiv hvis FIL er en symbolsk lenke.\n" +" -k FIL Positiv hvis FIL er «sticky».\n" +" -p FIL Positiv hvis FIL er et navngitt datarør.\n" +" -r FIL Positiv hvis FIL kan leses av deg.\n" +" -s FIL Positiv hvis FIL finnes og ikke er tom.\n" +" -S FIL Positiv hvis FIL er en sokkel.\n" +" -t FD Positiv hvis FD er Ã¥pen i en terminal.\n" +" -u FIL Positiv hvis FIL er «set-user-id».\n" +" -w FIL Positiv hvis FIL kan overskrives av deg.\n" +" -x FIL Positiv hvis FIL kan kjøres av deg.\n" +" -O FIL Positiv hvis FIL har deg som effektiv eier.\n" +" -G FIL Positiv hvis FIL har din gruppe som effektiv " +"gruppetilhørighet.\n" +" -N FIL Positiv hvis FIL er blitt endret siden den ble lest " +"sist.\n" +" \n" +" FIL1 -nt FIL2 Positiv hvis FIL1 er nyere enn FIL2 (i følge\n" +" endringsdato).\n" +" \n" +" FIL1 -ot FIL2 Positiv hvis FIL1 er eldre enn FIL2.\n" +" \n" +" FIL1 -ef FIL2 Positiv hvis FIL1 er en hard lenke til FIL2.\n" +" \n" +" Strengvalg:\n" +" \n" +" -z STRENG Positiv hvis STRENG er tom.\n" +" \n" +" -n STRENG\n" +" STRENG Positiv hvis STRENG ikke er tom.\n" +" \n" +" STRENG1 = STRENG2\n" +" Positiv hvis STRENGene er like.\n" +" STRENG1 != STRENG2\n" +" Positiv hvis STRENGene ikke er like.\n" +" STRENG1 < STRENG2\n" +" Positiv hvis STRENG1 havner over STRENG2 nÃ¥r de " +"sorteres leksikografisk.\n" +" STRENG1 > STRENG2\n" +" Positiv hvis STRENG1 havner under STRENG2 nÃ¥r de " +"sorteres leksikografisk.\n" +" \n" +" Andre valg:\n" +" \n" +" -o VALG Positiv hvis skallvalget OPTION er slÃ¥tt pÃ¥.\n" +" -v VAR\t Positiv hvis skallvariabelen VAR har en verdi\n" +" -R VAR\t Positiv hvis skallvariabelen VAR har en verdi, og er en " +"navnreferanse.\n" +" ! UTTR Positiv hvis UTTR er usant.\n" +" UTTR1 -a UTTR2 Positiv hvis bÃ¥de UTTR1 og UTTR2 er sanne.\n" +" UTTR1 -o UTTR2 Positiv hvis enten UTTR1 eller UTTR2 er sanne.\n" +" \n" +" arg1 OP arg2 Aritmetiske tester. OP mÃ¥ være enten «-eq», «-ne»,\n" +" «-lt», «-le», «-gt» eller «-ge».\n" +" \n" +" Aritmetiske binærvalg gir positiv verdi hvis ARG1 er lik, ulik, mindre " +"enn,\n" +" lik-eller-mindre-enn, større enn eller større-enn-eller-lik ARG2.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket hvis UTTR gir positiv verdi, og mislykket hvis det gir negativ " +"verdi eller\n" +" bruker skriver inn et ugyldig argument." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Kontroller betinget uttrykk.\n" +" \n" +" Dette er synonymt med den innebygde kommandoen «test», men\n" +" siste argument mÃ¥ være «]» for Ã¥ samsvare med «[»." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Vis prosesstider.\n" +" \n" +" Skriver ut oppsamlet bruker- og systemtid for skallet og alle " +"underprosesser.\n" +" \n" +" Avslutningsstatus:\n" +" Alltid vellykket." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Fang signaler og andre hendelser.\n" +" \n" +" Definerer og slÃ¥r pÃ¥ brytere som skal kjøres nÃ¥r skallet mottar " +"signaler\n" +" eller havner i andre tilstander.\n" +" \n" +" ARG er en kommando som skal leses og kjøres nÃ¥r skallet mottar signalet/-" +"ene\n" +" i henhold til SIGNALSPES. Hvis ARG er enten utelatt eller «-»,\n" +" og én SIGNALSPES er brukt, tilbakestilles valgt(e) signal(er) til\n" +" opprinnelig verdi. Hvis ARG er null, ignoreres SIGNALSPES av skallet\n" +" og kommandoene det kjører.\n" +" \n" +" Hvis en SIGNALSPES er EXIT (0), kjøres ARG nÃ¥r skallet avslutter.\n" +" Hvis en SIGNALSPES er DEBUG, kjøres ARG før hver kommando.\n" +" Hvis en SIGNALSPES er RETURN, kjøres ARG hver gang en skallfunksjon, " +"skript\n" +" eller innebygd kommando har kjørt ferdig. Hvis en SIGNALSPES\n" +" er ERR, kjøres ARG hver gang en feilkjørt kommando ville ført til at " +"skallet\n" +" avsluttes nÃ¥r «-e» er valgt.\n" +" \n" +" Hvis ingen argumenter er brukt, skriver trap ut en liste over " +"kommandoer\n" +" som er tilknyttet hvert signal.\n" +" \n" +" Valg:\n" +" -l\tskriv ut en liste over signalnavn og tilknyttede numre\n" +" -p\tvis trap-kommandoer som er tilknyttet hver SIGNALSPESifikasjon\n" +" \n" +" Hver SIGNALSPES er enten et signalnavn fra eller et " +"signalnummer.\n" +" Signalnavn skiller mellom smÃ¥ og store bokstaver. Prefikset «SIG» er " +"valgfritt.\n" +" Du kan sende et signal til skallet med «kill -signal $$».\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre en SIGNALSPES eller et valg er ugyldig." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Vis informasjon om kommandotype.\n" +" \n" +" Vis hvordan hvert NAVN ville blitt tolket hvis det ble brukt som\n" +" et kommandonavn.\n" +" \n" +" Valg:\n" +" -a\tvis alle plasseringer som inneholder en kjørbar fil med oppgitt " +"NAVN.\n" +" \tHer inngÃ¥r alle alias, innebygde kommandoer og funksjoner, med mindre\n" +" \t«-p» er valgt i tillegg\n" +" -f\tikke slÃ¥ opp skallfunksjoner\n" +" -P\ttving et søk i STI etter NAVN, selv hvis det er et alias,\n" +" \tinnebygd kommando eller en funksjon, og vis navn pÃ¥ fila\n" +" \tsom ville blitt kjørt\n" +" -p\tvis enten navn pÃ¥ fila som ville blitt kjørt, eller ingenting " +"hvis\n" +" \t«type -t NAVN» ikke fører til «file».\n" +" -t\tbeskriv NAVN som enten «alias», «keyword» (nøkkelord),\n" +" \t«function» (funksjon), «builtin» (innebygd kommando), «file» (fil) " +"eller \n" +" \t«'» (ikke funnet), if NAME is an alias, shell\n" +" \n" +" Argumenter:\n" +" NAVN\tKommandonavn som skal tolkes.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket hvis alle NAVN finnes, og mislykket hvis ett eller flere ikke " +"finnes." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Endre grenser for skallressurser.\n" +" \n" +" Lar deg kontrollere mengden ressurser som skal være tilgjengelig for " +"skall og\n" +" prosessene det lager pÃ¥ systemer som tillater det.\n" +" \n" +" Valg:\n" +" -S\tbruk myk («soft») ressursgrense\n" +" -H\tbruk «hard» ressursgrense\n" +" -a\tvis alle gjeldende grenser\n" +" -b\tstørrelse pÃ¥ sokkel-mellomlager\n" +" -c\tmaksimal størrelse pÃ¥ opprettede kjernefiler\n" +" -d\tmaksimal størrelse pÃ¥ datasegment av en prosess\n" +" -e\tmaksimal prioritet («nice»-verdi)\n" +" -f\tmaksimal størrelse pÃ¥ filer som skrives av skallet og " +"underprosesser\n" +" -i\tmaksimalt antall ventende signaler\n" +" -l\tmaksimal minnemengde en prosess kan lÃ¥se\n" +" -m\tmaksimal «resident set»-størrelse\n" +" -n\tmaksimalt antall Ã¥pne fildeskriptorer\n" +" -p\tstørrelse pÃ¥ mellomlager for datarør\n" +" -q\tmaksimalt antall byte i POSIX-meldingskøer\n" +" -r\tmaksimal sanntidsprioritet\n" +" -s\tmaksimal stabelstørrelse\n" +" -t\tmaksimal cpu-tid (i sekunder)\n" +" -u\tmaksimalt antall brukerprosesser\n" +" -v\tstørrelsen pÃ¥ virtuelt minne\n" +" -x\tmaksimalt antall fillÃ¥ser\n" +" -T maksimalt antall trÃ¥der\n" +" \n" +" Det er ikke alle valg som støttes pÃ¥ alle plattformer.\n" +" \n" +" Hvis GRENSE er oppgitt, brukes denne som ny verdi for valgt ressurs.\n" +" Du kan ogsÃ¥ bruke spesialverdiene «soft» (myk), «hard», og " +"«unlimited» (ubegrenset).\n" +" Ellers skriver programmet ut gjeldende verdi av valgt ressurs. Hvis " +"ingenting\n" +" er valgt, brukes «-f».\n" +" \n" +" Verdier oppgis i 1024-byte-enheter, bortsett fra «-t» som oppgis i " +"sekunder,\n" +" «-p» som oppgis i 512-byte-enheter og «-u» som er et uskalert antall " +"prosesser.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r feil." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Vis eller endre filmodus-maske.\n" +" \n" +" Endrer brukers standardmaske for nye filer til valgt MODUS. Hvis ingen\n" +" MODUS er valgt, skrives gjeldende maskeverdi ut.\n" +" \n" +" Hvis MODUS begynner med et siffer, tolkes den som et oktalt tall,\n" +" og ellers som en symbolsk modusstreng av typen som brukes av chmod(1).\n" +" \n" +" Valg:\n" +" -p\tskriv ut i et format som kan gjenbrukes som inndata hvis ingen " +"MODUS er valgt\n" +" -S\tgjør utdata symbolsk (ikke skriv ut oktaltall)\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre MODUS er ugyldig eller bruker tar et ugyldig valg." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Vent pÃ¥ fullføring av jobb, og skriv ut avslutningsstatus.\n" +" \n" +" Vent pÃ¥ valgt(e) prosess(er) (valgt med ID, som kan være prosess-ID " +"eller\n" +" jobbspesifikasjon), og skriv ut statuskode. Hvis ID ikke er valgt,\n" +" venter programmet pÃ¥ alle aktive underprosesser, og avslutter\n" +" med kode null. Hvis ID er en jobbspesifikasjon, venter programmet pÃ¥ " +"alle\n" +" prosesser i kommandokøen for valgt jobb.\n" +" \n" +" Hvis «-n» er valgt, skriver programmet ut avslutningsstatus for neste " +"jobb.\n" +" \n" +" Hvis «f» er valgt og jobbkontroll er slÃ¥tt pÃ¥, venter programmet pÃ¥ at\n" +" valgt ID skal avslutte i stedet for Ã¥ vente pÃ¥ statusendring.\n" +" Avslutningsstatus:\n" +" Samme som siste ID, eller mislykket hvis enten ID er ugyldig eller\n" +" bruker tar et ugyldig valg." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Vent pÃ¥ ferdigstillelse av prosess, og rapporter avslutningsstatus.\n" +" \n" +" Venter pÃ¥ hver prosess som er valgt med PID, og rapporterer avsluttende " +"statuskode.\n" +" Hvis PID ikke er valgt, venter kommandoen pÃ¥ alle aktive " +"underprosesser,\n" +" og avslutter med null-status. PID mÃ¥ være en prosess-ID.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som siste PID. Mislykket hvis PID er ugyldig, eller hvis\n" +" bruker tar et ugyldig valg." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Kjør kommandoer for hvert medlem i en liste.\n" +" \n" +" Løkka «for» kjører en rekke kommandoer per medlem i en liste\n" +" over elementer. Hvis «in ORD …;» ikke er angitt, brukes«in \"$@\"».\n" +" NAVN gis til hvert element i ORD, og KOMMANDOER kjøres.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørte kommando." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Aritmetisk «for»-løkke.\n" +" \n" +" Tilsvarer\n" +" \t(( UTTR1 ))\n" +" \twhile (( UTTR2 )); do\n" +" \t\tKOMMANDOER\n" +" \t\t(( UTTR3 ))\n" +" \tdone\n" +" UTTR1, UTTR2 og UTTR3 er aritmetiske uttrykk. Hvis et uttrykk\n" +" utelates, oppfører programmet seg som om uttrykket er lik 1.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørte kommando." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Velg ord fra en liste og kjør kommandoer.\n" +" \n" +" Utvid og lag en liste av valgt(e) ORD.\n" +" Utvidede ord skrive ut pÃ¥ standard feilkanal, anledet av et tall.\n" +" Hvis «in ORD» ikke er valgt, brukes «in \"$@\"». Deretter vises\n" +" PS3-ledetekst, og en linje leses fra standard inndata. Hvis linja\n" +" bestÃ¥r av et tall som tilsvarer antall ord, endres NAVN slik at det\n" +" tilsvarer dette tallet. Hvis linja er tom, vises ORD og ledetekst pÃ¥\n" +" nytt. Hvis programmet møter EOF, avslutter kommandoen. Andre\n" +" verdier fører til at NAVN endres til null. Lest linje lagres i " +"variabelen\n" +" REPLY. KOMMANDOER kjøres etter hvert utvalg frem til programmet\n" +" støter pÃ¥ en bruddkommando.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørt kommando." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Rapporter medgÃ¥tt tid i kommandokø-kjøring.\n" +" \n" +" Kjør valgt DATARØR og skriv ut en oppsummering av reell tid, bruker-CPU-" +"tid\n" +" og system-CPU-tid som er medgÃ¥tt ved kjøring av DATARØR idet det " +"avsluttes.\n" +" \n" +" Valg:\n" +" -p\tkjør tidsoppsummering i gjenbrukbart Posix-format.\n" +" \n" +" Verdien av variabelen «TIMEFORMAT» brukes som utdata-format.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som statuskoden fra valgt DATARØR." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Kjør kommandoer basert pÃ¥ mønster-søk.\n" +" \n" +" Kjør KOMMANDOER som samsvarer med ORD og MØNSTER.\n" +" Tegnet «|» brukes til Ã¥ holde mønstre adskilt.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørte kommando." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Kjør kommandoer pÃ¥ gitte betingelser.\n" +" \n" +" Kjør lista «if KOMMANDOER». Hvis avslutningsstatus er null, kjøres\n" +" «then KOMMANDOER». Ellers kjøres hver «elif KOMMANDOER»-liste\n" +" etter tur. Hvis status er null ved sistnevnte, kjøres tilhørende «then " +"KOMMANDOER»\n" +" og if-kommandoen avslutter. Ellers kjøres evt. lista «else KOMMANDOER».\n" +" Avslutningsstatus for hele betingelsesuttrykket er statuskoden fra sist " +"kjørt kommando,\n" +" eller null hvis ingen tilstand er sann.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørt kommando." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Kjør kommandoer sÃ¥ lenge en test lykkes.\n" +" \n" +" Utvid og kjør KOMMANDOER sÃ¥ lenge siste kommando i\n" +" «while» avslutter med null-status.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørte kommando." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Kjør kommandoer sÃ¥ lenge en test mislykkes.\n" +" \n" +" Utvid og kjør KOMMANDOER sÃ¥ lenge siste kommando i\n" +" «until» avslutter med en annen statuskode enn null.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørte kommando." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Lag medprosess med valgt NAVN.\n" +" \n" +" Kjør valgt KOMMANDO synkront, med standard inn- og utdata for " +"kommandoen\n" +" som er tilkoblet via et datarør til fildeskriptorer med indeks 0 og 1 i " +"en tabellvariabel \n" +" med oppgitt NAVN i kjørende skall.\n" +"\v StandardNAVN er «COPROC».\n" +" \n" +" coproc avslutter med kode 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Definer en skallfunksjon.\n" +" \n" +" Lag en skallfunksjon med valgt NAVN. NAVN kjører KOMMANDOer i gjeldende " +"skallkontekst\n" +" nÃ¥r det kjøres som en enkel kommando, og argumenter videresendes til " +"funksjonen som\n" +" $1…$n. Funksjonens navn ligger i $FUNCNAME.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre valgt NAVN er skrivebeskyttet." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Organiser kommandoer i grupper.\n" +" \n" +" Kjør en rekke kommandoer som en gruppe. Slik kan du videresende\n" +" et helt kommandosett.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørt kommando." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Gjenoppta jobb i forgrunnen.\n" +" \n" +" Tilsvarer argumentet «JOBBSPES» for kommandoen «fg». Gjenoppta\n" +" en jobb som venter eller kjører i bakgrunnen. «JOBBSPES» kan\n" +" enten være et jobbnavn eller -nummer. Bruk «&» etter JOBBSPES for Ã¥\n" +" legge jobben i bakgrunnen, som om jobbspesifikasjonen var et argument " +"for «bg».\n" +" \n" +" Avslutningsstatus:\n" +" Samme som statuskoden for gjenopptatt jobb." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"GÃ¥ gjennom aritmetisk uttrykk.\n" +" \n" +" Valgt UTTRYKK prøves i henhold til regler for aritmetisk utregning.\n" +" Tilsvarer «let UTTRYKK».\n" +" \n" +" Avslutningsstatus:\n" +" 1 hvis UTTRYKK blir 0, og ellers 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Kjør betinget kommando.\n" +" \n" +" Gir statuskode 0 eller 1, avhengig av utfallet av betinget UTTRYKK.\n" +" Uttrykk bygges opp pÃ¥ samme mÃ¥te som i den innebygde kommandoen «test»,\n" +" og kan kombineres som følger:\n" +" \n" +" ( UTTRYKK )\tViser verdien av UTTRYKK\n" +" ! UTTRYKK\t\tPositiv hvis UTTRYKK er usant, ellers negativ\n" +" UTTR1 && UTTR2\tPositiv hvis bÃ¥de UTTR1 og UTTR2 er sant, ellers " +"negativ\n" +" UTTR1 || UTTR2\tPositiv hvis enten UTTR1 eller UTTR2 er sant, ellers " +"negativ\n" +" \n" +" Ved bruk av «==» og «!=» brukes etterfølgende streng som\n" +" et mønster, og programmet utfører mønsterutlikning.\n" +" Ved bruk av «=~» utliknes etterfølgende streng som\n" +" et regulært uttrykk.\n" +" \n" +" Valgene «&&» og «||» kontrollerer ikke UTTR2 hvis UTTR1 allerede\n" +" har gitt svar pÃ¥ uttrykkets verdi.\n" +" \n" +" Avslutningsstatus:\n" +" 0 eller 1, avhengig av UTTRYKKets verdi." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Vanlige skallvariabel-navn og bruk.\n" +" \n" +" BASH_VERSION\tInformasjon om Bash-versjon.\n" +" CDPATH\tEn kolondelt liste over mapper som skal gjennomsøkes\n" +" \t\tfor mapper som er brukt som argumenter for «cd».\n" +" GLOBIGNORE\tEn kolondelt liste over mønstre som beskriver filnavn\n" +" \t\tsom skal ignoreres av stinavn-utvidelse.\n" +" HISTFILE\tNavn pÃ¥ fil hvor kommandohistorikk for gjeldende bruker er " +"lagret.\n" +" HISTFILESIZE\tMaksimalt antall linjer denne fila kan inneholde.\n" +" HISTSIZE\tMaksimalt antall historikklinjer et kjørende skall har tilgang " +"til.\n" +" HOME\tFullstendig sti til gjeldende brukers hjemmemappe.\n" +" HOSTNAME\tNavn pÃ¥ gjeldende vert.\n" +" HOSTTYPE\tType prosessor denne versjonen av Bash kjører pÃ¥.\n" +" IGNOREEOF\tKontrollerer skallets handling ved mottak av\n" +" \t\tEOF-tegn som eneste inndata. Hvis denne har en verdi, er verdien\n" +" \t\tgjeldende antall EOF-tegn som kan dukke opp pÃ¥ rad pÃ¥ en tom linje\n" +" \t\tfør skallet avslutter (standard: 10). Hvis denne ikke har en verdi,\n" +" \t\ttolkes EOF som slutt pÃ¥ inndata.\n" +" MACHTYPE\tEn streng som beskriver systemet Bash kjører pÃ¥ nÃ¥.\n" +" MAILCHECK\tHvor ofte (i sekunder) Bash skal se etter ny e-post.\n" +" MAILPATH\tEn kolondelt liste over filnavn som Bash skal gjennomsøke\n" +" \t\tfor ny e-post.\n" +" OSTYPE\tVersjonen av Unix som denne versjonen av Bash kjører pÃ¥.\n" +" PATH\tEn kolondelt liste over mapper som skal gjennomsøkes\n" +" \t\tved søk etter kommandoer.\n" +" PROMPT_COMMAND\tEn kommando som skal kjøres før utskrift av\n" +" \t\tprimær ledetekst.\n" +" PS1\t\tPrimær ledetekst-streng.\n" +" PS2\t\tSekundær ledetekst-streng.\n" +" PWD\t\tFullstendig sti til gjeldende mappe.\n" +" SHELLOPTS\tEn kolondelt liste over skallvalg som er i bruk.\n" +" TERM\tNavn pÃ¥ gjeldende terminaltype.\n" +" TIMEFORMAT\tUtdata-format for tidsstatistikk som vises av\n" +" \t\tdet reserverte ordet «time».\n" +" auto_resume\tEt kommandoord som dukker opp alene pÃ¥ en linje\n" +" \t\tblir kontrollert mot lista over ventende jobber. Hvis kommandoen " +"finnes\n" +" \t\ti lista, flyttes den til forgrunnen.\n" +" \t\tVerdien «exact» betyr at kommandoen mÃ¥ være helt lik\n" +" \t\tet kommandonavn i lista over ventende jobber.\n" +" \t\t«substring» betyr at kommandoen mÃ¥ samsvare med en del\n" +" \t\tav navnet. Andre verdier betyr at kommandoen mÃ¥\n" +" \t\tvære et prefiks av en ventende jobb.\n" +" histchars\tTegn som styrer historikkutvidelse og hurtig-subsidiering.\n" +" \t\tFørste tegn er historikk-subsidieringstegnet (vanligvis «!»),\n" +" \t\tdet andre er hurtig-subsidieringstegnet (vanligvis «^»), og\n" +" \t\tdet tredje er historikk-kommentar-tegnet (vanligvis «#»).\n" +" HISTIGNORE\tEn kolondelt liste over mønstre som bestemmer\n" +" \t\thvilke kommandoer som skal lagres i historikklista.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Legg til mapper i stabel.\n" +" \n" +" Legg til en mappe i toppen av mappestabelen, eller roter\n" +" stabelen og gjør toppen av stabelen til gjeldende arbeidsmappe.\n" +" Hvis ingen argumenter er gitt, bytter de to øverste mappene plass..\n" +" \n" +" Valg:\n" +" -n\tIkke bytt mappe nÃ¥r mapper legges til i stabelen\n" +" \t(bare endre stabelen).\n" +" \n" +" Argumenter:\n" +" +N\tRoter stabelen og legg N-te mappe (talt fra\n" +" \tnull til venstre, etter «dirs») i toppen.\n" +" \n" +" -N\tRoter stabelen og legg N-te mappe (talt fra\n" +" \tnull til høyre, etter «dirs») i toppen.\n" +" \n" +" dir\tLegg til MAP i toppen av mappestabelen, og ta den i bruk\n" +" \tsom arbeidsmappe.\n" +" \n" +" Bruk kommandoen «dirs» for Ã¥ vise mappestabelen.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre et ugyldig argument er brukt eller\n" +" mappebytte mislykkes." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Fjern mapper fra stabelen.\n" +" \n" +" Fjern oppføringer fra mappestabelen. Hvis ingen argumenter er gitt,\n" +" fjernes øverste mappe fra stabelen, og tar i bruk ny toppmappe som " +"arbeidsmappe.\n" +" \n" +" Valg:\n" +" -n\tIkke bytt mappe nÃ¥r mapper fjernes fra stabelen\n" +" \t(bare endre stabelen).\n" +" \n" +" Argumenter:\n" +" +N\tFjern N-te mappe (talt fra null til venstre, etter «dirs»).\n" +" F.eks.: «popd +0» fjerner første mappe, og «popd +1» mappe nr. 2.\n" +" \n" +" -N\tFjern N-te mappe (talt fra null til høyre, etter «dirs»).\n" +" F.eks.: «popd -0» fjerner siste mappe, og «popd -1» nest siste " +"mappe.\n" +" \n" +" Bruk kommandoen «dirs» for Ã¥ vise mappestabelen.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre et ugyldig argument er brukt eller\n" +" mappebytte mislykkes." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Vis mappestabel.\n" +" \n" +" Vis liste over hurtiglagrede mapper som er hurtiglagret med\n" +" kommandoen «pushd». Du kan gÃ¥ opp igjen med kommandoen «popd». \n" +" Valg:\n" +" -c\ttøm mappestabel ved Ã¥ slette alle elementer\n" +" -l\tikke skriv ut undermapper av brukers hjemmemappe som\n" +" \trelative stier med tilde-prefiks\n" +" -p\tskriv ut mappestabel med én oppføring per linje\n" +" -v\ttilsvarer «-p», men med stabelposisjon som prefiks\n" +" \n" +" Argumenter:\n" +" +N\tVis N-te oppføring (talt fra null til venstre, etter «dirs»).\n" +" -N\tVis N-te oppføring (talt fra null til høyre, etter «dirs»).\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r feil." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Juster og tilbakestill skallvalg.\n" +" \n" +" Endre innstilling for hvert VALGNAVN. Hvis ingen valg/argumenter er " +"brukt,\n" +" skriver programmet ut alle oppgitte VALGNAVN og viser hvorvidt de har en " +"verdi.\n" +" Hvis ingen VALGNAVN er oppgitt, skriver programmet ut alle skallvalg.\n" +" \n" +" Valg:\n" +" -o\tbegrense VALGNAVN til det som er definert med «set -o»\n" +" -p\tskriv ut hvert skallvalg og vis status\n" +" -q\tikke skriv ut noe\n" +" -s\tslÃ¥ pÃ¥ (gi verdi til) hvert VALGNAVN\n" +" -u\tslÃ¥ av (tilbakestill) hvert VALGNAVN\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket hvis VALGNAVN er slÃ¥tt pÃ¥, og mislykket hvis enten bruker \n" +" tar et ugyldig valg eller VALGNAVN er slÃ¥tt av." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formaterer og skriver ut ARGUMENTER pÃ¥ FORMATets premisser.\n" +" \n" +" Valg:\n" +" -v var\tlegg utdata i valgt VARiabel i stedet for Ã¥\n" +" \t\tvise den pÃ¥ standardutdata\n" +" \n" +" FORMAT er en tegnstreng som inneholder tre typer objekter:\n" +" - rene tegn (som kopieres til standardutdata),\n" +" - skiftetegn (som konverteres og kopieres til standardutdata), og\n" +" - formatspesifikasjoner (som skriver ut pÃ¥følgende argument).\n" +" \n" +" Printf tolker følgende standard-formatspes. i tillegg til de som " +"stÃ¥r beskrevet i printf(1):\n" +" \n" +" %b\tutvid omvendt skrÃ¥strek-skiftesekvenser i gjeldende argument\n" +" %q\tgi argumentet anførselstegn slik at det kan brukes som skall-" +"inndata\n" +" %(fmt)T skriv ut «date-time»-streng etter bruk av FMT som " +"formatstreng\n" +" med strftime(3)\n" +" \n" +" Formatet gjenbrukes etter nødvendighet for Ã¥ bruke opp alle " +"argumentene.\n" +" Hvis det finnes færre argumenter enn formatet krever, oppfører " +"overflødige\n" +" formatstrenger seg som om de var 0-verdier eller null-strenger.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r en\n" +" skrive- eller tidelingsfeil." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Velg hvordan argumenter skal fullføres av Readline.\n" +" \n" +" Velg hvordan argumenter skal fullføres per NAVN.\n" +" Hvis brukeren ikke tar noen valg, blir gjeldende " +"fullføringsspesifikasjoner\n" +" skrevet ut i et format som egner seg til gjenbruk.\n" +" \n" +" Valg:\n" +" -p\tskriv ut gjeldende fullføringsoppsett i et gjenbrukbart format " +"(standard)\n" +" -r\tfjern en fullføringsspesifikasjon per NAVN\n" +" \t(eller fra alle spesifikasjoner hvis ingen NAVN er valgt)\n" +" -D\tbruk fullføringer og handlinger som standard for kommandoer uten\n" +" \tspesifikke definisjoner av fullføring\n" +" -E\tbruk fullføringer og handlinger pÃ¥ «tomme» kommandoer\n" +" -I\tbruk fullføringer og handlinger pÃ¥ første (kommando-) ord\n" +" \n" +" Handlinger tas i bruk i samme rekkefølge som valgene med\n" +" store bokstaver ovenfor. Valget «-D» har høyere prioritet\n" +" enn «-E», og begge har høyere prioritet enn «-I».\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r feil." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Vis mulige fullføringer basert pÃ¥ valgene.\n" +" \n" +" Dette er ment for Ã¥ brukes i en skallfunksjon som genererer mulige\n" +" fullføringer. Hvis argumentet ORD brukes, genererer programmet\n" +" søketreff pÃ¥ ORD.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r feil." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Endre eller vis fullføringsvalg.\n" +" \n" +" Endre fullføringsvalg per NAVN, eller kjørende fullføringsprosess hvis " +"ingen\n" +" NAVN er valgt. Hvis ingen VALG er brukt, skriv enten ut fullføringsvalg " +"per NAVN,\n" +" eller gjeldende fullføringsoppsett.\n" +" \n" +" Valg:\n" +" \t-o option\tEndre fullføringsVALG per NAVN\n" +" \t-D\t\tEndre valg for kommandofullføringa «default»\n" +" \t-E\t\tEndre valg for kommandofullføringa «empty»\n" +" \t-I\t\tEndre valg for fullføring av første ord\n" +" \n" +" Bruk «+o» i stedet for «-o» for Ã¥ slÃ¥ av valg.\n" +" \n" +" Argumenter:\n" +" \n" +" Hvert NAVN henviser til en kommando som mÃ¥ ha en " +"fullføringsspesifikasjon\n" +" definert med den innebyde kommandoen «complete». Hvis ingen NAVN\n" +" er valgt, mÃ¥ compopt brukes av en funksjon som genererer fullføringer.\n" +" Valgene for den aktuelle fullføringsgeneratoren blir i sÃ¥ fall endret.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller NAVN\n" +" mangler fullføringsoppsett." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Legg linjer fra standard inndata i en indeksert tabellvariabel.\n" +" \n" +" Legg linjer fra standard inndata i indeksert tabellvariabel TABELL, " +"eller\n" +" fra fildeskriptor FD ved bruk av «-u». Variabelen MAPFILE er\n" +" standard TABELL.\n" +" \n" +" Valg:\n" +" -d skill\tBruk SKILLetegn til Ã¥ avslutte linjer (i stedet for " +"linjeskift)\n" +" -n antall\tIkke kopier flere enn valgt ANTALL linjer. Hvis ANTALL er " +"0, kopieres alle linjer.\n" +" -O oppr\tTildel til TABELL ved indeks-OPPRinnelse. Standard indeks er " +"0.\n" +" -s antall \tForkast valgt ANTALL linjer i starten.\n" +" -t\t\tFjern etterfølgende linjeskift fra hver lest linje.\n" +" -u fd\t\tLes linjer fra fildeskriptor FD i stedet for standard " +"inndata.\n" +" -C tilbakekall\tVurder TILBAKEKALL hver gang valgt ANTALL linjer er " +"lest.\n" +" -c antall\tVelg antall linjer som skal leses mellom hvert " +"TILBAKEKALL.\n" +" \n" +" Argumenter:\n" +" ARRAY\t\tTabellvariabel-navn som skal brukes i fildata.\n" +" \n" +" Hvis «-C» er valgt men ikke «-c», brukes standardantallet 5000. NÃ¥r\n" +" TILBAKEKALL vurderes, argumenteres det i tillegg med indeks av neste " +"tabellelement\n" +" samt linjenummeret som skal tildeles aktuelt element.\n" +" \n" +" Hvis ingen eksplisitt opprinnelse er gitt, tømmes TABELL før den fÃ¥r " +"tildelt noe.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller TABELL enten er\n" +" skrivebeskyttet eller en ikke-indeksert tabell." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Legg linjer fra en fil inn i en tabellvariabel.\n" +" \n" +" Dette er synonymt med «mapfile»." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Viser kontekst for kall av gjeldende underrutine.\n" +#~ " \n" +#~ " Hvis EXPR mangler, vises" + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: prosess %5ld (%s) i _kommandokø" + +#~ msgid "Unknown Signal #" +#~ msgstr "Ukjent signal #" + +#~ msgid "Copyright (C) 2018 Free Software Foundation, Inc." +#~ msgstr "Opphavsrett (C) 2018 Free Software Foundation, Inc." + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Opphavsrett (C) 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" diff --git a/bash-5.1/po/nl.gmo b/bash-5.1/po/nl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6131322859472ed5e82e4f36a3b9d03a6747c6ee GIT binary patch literal 160297 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 F_#b+pOX2_k literal 0 HcmV?d00001 diff --git a/bash-5.1/po/nl.po b/bash-5.1/po/nl.po new file mode 100644 index 0000000..60b9d48 --- /dev/null +++ b/bash-5.1/po/nl.po @@ -0,0 +1,5919 @@ +# Dutch translations for GNU bash. +# Copyright (C) 2019 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# +# «Lernfähiger Software! Ich lach mich kaputt!» +# +# De vertaling van de ruim 70 laatste hulpteksten (65%) in dit bestand +# volgt niet helemaal het normale stramien van "onbepaalde wijs voor +# elke functieomschrijvende tekst". De hoofddocstring gebruikt wel +# de onbepaalde wijs, maar het begin van de gedetailleerde omschrijving +# stapt over op de derde persoon, om daarna een passieve vorm te +# gebruiken voor de rest van de preciseringen en uitzonderingen. +# +# Opmerking over vocabulair: +# 'Stopped' wordt consequent vertaald met "Gepauzeerd", omdat "Gestopt" +# te veel zou doen denken aan "Beëindigd", terwijl het alleen maar gaat +# om stilstaan en niet om finale opgave. Een alternatieve vertaling +# zou dus "Stilstand" kunnen zijn. +# +# Benno Schulenberg , 2006, 2008, 2010, 2011, 2013, 2014. +# Benno Schulenberg , 2015, 2016, 2019. +# Erwin Poeze , 2009. +# Julie Vermeersch , 2004. +# Erick Branderhorst , 1996. +msgid "" +msgstr "" +"Project-Id-Version: bash-5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-05-30 14:14+0200\n" +"Last-Translator: Benno Schulenberg \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "ongeldige array-index" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: 'nameref'-eigenschap wordt verwijderd" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: kan geïndexeerd array niet omzetten naar associatief array" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: ongeldige sleutel voor associatief array" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: niet-numerieke index is niet mogelijk" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: een index is nodig bij toekenning aan associatief array" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "Kan %s niet aanmaken: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command(): kan voor opdracht geen toetsenkaart vinden" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: eerste teken dat geen witruimte is is niet '\"'" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "geen sluit-'%c' in %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: ontbrekend scheidingsteken (dubbele punt)" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "Kan %s niet losmaken" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %s" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %u elementen" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor '%s'" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "'%s': ongeldige naam voor alias" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "regelbewerking is niet ingeschakeld" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "'%s': ongeldige naam voor toetsenkaart" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "Kan %s niet lezen: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "'%s': onbekende functienaam" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s is aan geen enkele toets gebonden\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s kan worden aangeroepen via " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "Kan %s niet losmaken" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "herhalingsaantal" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "heeft alleen betekenis in een 'for'-, 'while'- of 'until'-lus" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"De context van de aanroep van de huidige functie tonen.\n" +"\n" +" Zonder argument produceert het \"$regelnummer $bestandsnaam\"; met\n" +" argument \"$regelnummer $functienaam $bestandsnaam\". Deze tweede\n" +" vorm kan gebruikt worden om een 'stack trace' te produceren. De\n" +" waarde van het argument geeft aan hoeveel frames er teruggegaan\n" +" moet worden; het huidige frame heeft nummer 0.\n" +"\n" +" De afsluitwaarde is 0, tenzij de shell momenteel geen functie uitvoert\n" +" of EXPRESSIE ongeldig is." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME is niet gedefinieerd" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "te veel argumenten" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "null-map" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD is niet gedefinieerd" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "regel %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "waarschuwing: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: Gebruik: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: optie vereist een argument" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: vereist een numeriek argument" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: niet gevonden" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: ongeldige optie" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: ongeldige optienaam" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "'%s': is geen geldige naam" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "ongeldig octaal getal" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "ongeldig hexadecimaal getal" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "ongeldig getal" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: ongeldige signaalaanduiding" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "'%s': is geen PID en geen geldige taakaanduiding" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: is een alleen-lezen variabele" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s valt buiten bereik" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s valt buiten bereik" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: taak bestaat niet" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: geen taakbesturing" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "geen taakbesturing" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: beperkte modus" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "beperkte modus" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: is geen ingebouwde opdracht van de shell" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "schrijffout: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "fout tijdens instellen van terminaleigenschappen: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "fout tijdens verkrijgen van terminaleigenschappen: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: fout tijdens bepalen van huidige map: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: taakaanduiding is niet eenduidig" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "hulp is niet beschikbaar in deze versie" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "Kan '%s' niet verwijderen: %s is alleen-lezen" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "Kan '%s' niet verwijderen" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: ongeldige actienaam" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: is geen completerings-aanduiding" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "waarschuwing: optie -F functioneert mogelijk niet zoals verwacht" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "waarschuwing: optie -C functioneert mogelijk niet zoals verwacht" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "er wordt momenteel geen completeringsfunctie uitgevoerd" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "kan alleen worden gebruikt binnen een functie" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: verwijzingsvariabele mag geen array zijn" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: zelfverwijzing door naamsverwijzingsvariabele is niet toegestaan" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: circulaire naamsverwijzing" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "'%s': ongeldige variabelenaam voor naamsverwijzing" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "'-f' kan niet gebruikt worden om een functie te definiëren" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: is een alleen-lezen functie" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: aangehaalde samengesteld-array-toekenning is verouderd" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: kan array-variabelen niet op deze manier verwijderen" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: kan associatief array niet omzetten naar geïndexeerd array" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dynamisch-laden is niet beschikbaar" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "kan gedeeld object %s niet openen: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "kan %s niet vinden in gedeeld object %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: is niet dynamisch geladen" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "laadfunctie voor %s geeft foutcode (%d): is niet geladen" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: is niet dynamisch geladen" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "Kan %s niet verwijderen: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: is een map" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: is geen normaal bestand" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: bestand is te groot" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: kan binair bestand niet uitvoeren" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "Kan %s niet uitvoeren: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "uitgelogd\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "geen login-shell; gebruik 'exit'" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Er zijn nog gepauzeerde taken.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Er zijn nog draaiende taken.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "geen opdracht gevonden" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "geschiedenisaanduiding" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "Kan tijdelijk bestand '%s' niet openen: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "huidige" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "taak %d is gestart zonder taakbesturing" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ongeldige optie -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: optie vereist een argument -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hashen is uitgeschakeld" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: de hash-tabel is leeg\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "treffers commando\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Shell-opdrachten die overeenkomen met '" +msgstr[1] "Shell-opdrachten die overeenkomen met '" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"Er is geen hulptekst voor '%s'.\n" +"Probeer 'help help' of 'man -k %s' of 'info %s'." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "Kan %s niet openen: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Hieronder staan alle interne shell-opdrachten opgesomd. Typ 'help' om dit\n" +"overzicht opnieuw te zien. Typ 'help naam' voor meer informatie over de\n" +"opdracht met die naam. Typ 'info bash' voor gedetailleerde informatie over\n" +"de gehele shell. En gebruik 'man -k ...' of 'info ...' voor meer " +"informatie\n" +"over andere opdrachten.\n" +"\n" +"(Een sterretje (*) naast een naam betekent dat de functie uitgeschakeld " +"is.)\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "slechts één van '-a', '-n', '-r' of '-w' is mogelijk" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "geschiedenispositie" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: ongeldig tijdsstempel" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: geschiedenisexpansie is mislukt" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: 'inlib' is mislukt" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "bij '-x' zijn geen andere opties toegestaan" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumenten moeten proces-IDs of taak-IDs zijn" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Onbekende fout" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "uitdrukking werd verwacht" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: is geen geïndexeerd array" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: ongeldige aanduiding van bestandsdescriptor" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: ongeldige bestandsdescriptor: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: ongeldig regelaantal" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: ongeldig array-begin" + +# Quantum is een hoeveelheid regels, een getal. +# Callback is de aan te roepen functie, maar onnodig in de vertaling. +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: ongeldige hoeveelheid" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "lege naam van array-variabele" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "ondersteuning van arrayvariabelen is vereist" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "'%s': ontbrekend opmaakteken" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "'%c': ongeldige aanduiding van tijdsopmaak" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "'%c': ongeldig opmaakteken" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "waarschuwing: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "probleem bij ontleden van opmaak: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "ontbrekend hexadecimaal cijfer bij \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "ontbrekend Unicode-cijfer bij \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "geen andere map" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: ongeldig argument" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "mappenstapel is leeg" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "mappenstapelindex" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Toont de huidige lijst van onthouden mappen. Mappen worden aan deze\n" +" lijst toegevoegd met de opdracht 'pushd', en verwijderd met 'popd'.\n" +"\n" +" Opties:\n" +" -c de mappenstapel wissen door alle elementen te verwijderen\n" +" -l paden niet afkorten (relatief ten opzichte van uw thuismap)\n" +" maar volledig weergegeven\n" +" -p de mappenstapel tonen met één item per regel\n" +" -v als '-p' maar met elk item voorafgegaan wordt door diens positie\n" +" in de stapel\n" +"\n" +" Argumenten:\n" +" +N Toont het N-de item, tellend vanaf links, van de lijst getoond\n" +" door 'dirs' wanneer opgeroepen zonder opties, beginnend bij nul.\n" +" -N Toont het N-de item, tellend vanaf rechts, van de lijst getoond\n" +" door 'dirs' wanneer opgeroepen zonder opties, beginnend bij nul." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Voegt een map toe aan de top van de mappenstapel, of roteert de stapel\n" +" en maakt de huidige werkmap gelijk aan de nieuwe top van de stapel.\n" +" Zonder argumenten worden de bovenste twee mappen verwisseld.\n" +"\n" +" Optie:\n" +" -n de verandering van map onderdukken bij het toevoegen van mappen\n" +" aan de stapel, zodat alleen de stapel wordt gemanipuleerd\n" +"\n" +" Argumenten:\n" +" +N Roteert de stapel zodat de N-de map (tellend vanaf links, van\n" +" de lijst getoond door 'dirs', beginned bij nul) bovenaan komt.\n" +" -N Roteert de stapel zodat de N-de map (tellend vanaf rechts, van\n" +" de lijst getoond door 'dirs', beginned bij nul) bovenaan komt.\n" +" MAP Voegt deze map toe aan de top van de mappenstapel, en maakt het\n" +" de nieuwe werkmap.\n" +"\n" +" De opdracht 'dirs' toont de huidige mappenstapel." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Verwijdert items van de mappenstapel. Zonder argumenten verwijdert\n" +" het de bovenste map van de stapel, en maakt de huidige werkmap\n" +" gelijk aan de nieuwe bovenste map.\n" +"\n" +" Optie:\n" +" -n de verandering van map onderdukken bij het toevoegen van mappen\n" +" aan de stapel, zodat alleen de stapel wordt gemanipuleerd\n" +"\n" +" Argumenten:\n" +" +N Verwijdert het N-de item tellend vanaf links (van de lijst\n" +" getoond door 'dirs', beginnend met nul). Bijvoorbeeld:\n" +" 'popd +0' verwijdert de eerste map, 'popd +' de tweede.\n" +" -N Verwijdert het N-de item tellend vanaf rechts (van de lijst\n" +" getoond door 'dirs', beginnend met nul). Bijvoorbeeld:\n" +" 'popd -0' verwijdert de laatste map, 'popd -1' de voorlaatste.\n" +"\n" +" De opdracht 'dirs' toont de huidige mappenstapel." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: ongeldige aanduiding van tijdslimiet" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "leesfout: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"kan alleen een 'return' doen uit een functie of een uit script aangeroepen " +"met 'source'" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "kan niet tegelijk een functie en een variabele verwijderen" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: is geen array-variabele" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: is geen functie" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "Kan '%s' niet exporteren" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "shift-aantal" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "kan shell-opties niet tegelijk inschakelen en uitschakelen" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: ongeldige shell-optienaam" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "vereist een bestandsnaam als argument" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: bestand niet gevonden" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "kan niet pauzeren" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "kan een inlog-shell niet pauzeren" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s is een alias voor '%s'\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s is een shell-sleutelwoord\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s is een functie\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s is een speciale ingebouwde shell-functie\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s is een ingebouwde shell-functie\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s is %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s is gehasht (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: ongeldige limietwaarde" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "'%c': ongeldige opdracht" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: kan de limiet niet bepalen: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "limiet" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: kan de limiet niet wijzigen: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "octaal getal" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "'%c': ongeldige operator in symbolische modus" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "'%c': ongeldig teken in symbolische modus" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " regel " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "laatste opdracht: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Afbreken..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "informatie: " + +#: error.c:462 +msgid "unknown command error" +msgstr "onbekende opdrachtfout" + +#: error.c:463 +msgid "bad command type" +msgstr "ongeldig opdrachttype" + +#: error.c:464 +msgid "bad connector" +msgstr "ongeldige verbinder" + +#: error.c:465 +msgid "bad jump" +msgstr "ongeldige sprong" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: ongebonden variabele" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\awachten op invoer duurde te lang -- automatisch afgemeld\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "kan standaardinvoer niet omleiden vanaf /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: '%c': ongeldig opmaakteken" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc(): coproc [%d:%s] bestaat nog steeds" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "pijpfout" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: maximum 'eval'-nestingsniveau is overschreden (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: maximum 'source'-nestingsniveau is overschreden (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: maximum functie-nestingsniveau is overschreden (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: beperkte modus: '/' in opdrachtnamen is niet toegestaan" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: opdracht niet gevonden" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: ongeldige interpreter" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: kan binair bestand %s niet uitvoeren" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "'%s' is een speciale ingebouwde shell-functie" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "kan bestandsdescriptor %d niet dupliceren naar bestandsdescriptor %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "recursieniveau van expressies is overschreden" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "recursiestapel-onderloop" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "syntaxfout in expressie" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "poging tot toewijzing aan een niet-variabele" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "syntaxfout in toewijzing aan variabele" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "deling door nul" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "**interne fout**: onjuist symbool in toewijzingsexpressie" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "':' werd verwacht voor een voorwaardelijke expressie" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "exponent is kleiner dan 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "naam verwacht na pre-increment of pre-decrement" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "ontbrekend ')'" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "syntaxfout: operator verwacht" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntaxfout: ongeldige rekenkundige operator" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (het onjuiste symbool is \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "ongeldige rekenkundige basis" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: ongeldig regelaantal" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "waarde is te groot voor basis" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: expressiefout\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getwd(): kan geen geen toegang verkrijgen tot bovenliggende mappen" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "kan 'nodelay'-modus niet uitschakelen voor bestandsdescriptor %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"kan geen nieuwe bestandsdescriptor reserveren voor bash-invoer vanuit " +"bestandsdescriptor %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" +"check_bash_input(): buffer bestaat al voor nieuwe bestandsdescriptor %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline(): procesgroep van pijp" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "afgesplitst PID %d hoort bij draaiende taak %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "verwijderen van gepauzeerde taak %d met procesgroep %ld..." + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process(): PID %5ld (%s) staat gemarkeerd als nog actief" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid(): PID %ld bestaat niet" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signaal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Klaar" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Gepauzeerd" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Gepauzeerd(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Wordt uitgevoerd" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Klaar(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Exit %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Onbekende afsluitwaarde" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(geheugendump gemaakt) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (werkmap: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "instellen van procesgroep %2$ld van dochter %1$ld" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait(): PID %ld is geen dochterproces van deze shell" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for(): proces %ld is nergens geregistreerd" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job(): taak %d is gepauzeerd" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: taak bestaat niet" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: taak is afgesloten" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: taak %d draait al op de achtergrond" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" +"waitchld(): WNOHANG wordt ingeschakeld om een onbegrensde blokkering te " +"vermijden" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: regel %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (geheugendump gemaakt)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(werkmap is nu: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp() is mislukt" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: geen taakbesturing in de achtergrond" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: lijnprotocol" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid()" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "kan procesgroep (%d) van terminal niet instellen" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "er is geen taakbesturing in deze shell" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc(): controletest is mislukt: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc(): %s:%d: controletest is mislukt\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "onbekend" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc(): een pointer op de lijst van vrije blokken is overschreven" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free(): aangeroepen met als argument een blok dat al vrijgegeven is" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free(): aangeroepen met als argument een ongebruikt blok" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free(): onderloop: 'mh_nbytes' valt buiten bereik" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free(): onderloop: 'mh_nbytes' valt buiten bereik" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free(): blokgroottes van begin en eind zijn verschillend" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc(): aangeroepen met als argument een ongebruikt blok" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc(): onderloop: 'mh_nbytes' valt buiten bereik" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc(): onderloop: 'mh_nbytes' valt buiten bereik" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc(): blokgroottes van begin en eind zijn verschillend" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc(): reserveringstabel is vol??\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc(): %p staat al als gereserveerd in tabel??\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free(): %p staat al als vrij in tabel??\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "ongeldige basis" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: onbekende host" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: ongeldige service" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: ongeldige aanduiding van netwerkpad" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "netwerkoperaties worden niet ondersteund" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "U hebt post in $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "U hebt nieuwe post in $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "De post in %s is gelezen.\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "syntaxfout: een rekenkundige uitdrukking is vereist" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "syntaxfout: onverwachte ';'" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntaxfout: '((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document(): ongeldig instructietype %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"regel %d van \"hier\"-document eindigt met einde van bestand (verwachtte " +"'%s')" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection(): omleidingsinstructie '%d' valt buiten bereik" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc(): lengte van invoerregel (%zu) overschrijdt SIZE_MAX (%lu): " +"regel is afgekapt" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "maximum aantal \"hier\"-documenten is overschreden" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende '%c'" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "onverwacht bestandseinde tijdens zoeken naar ']]'" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntaxfout in conditionele expressie: onverwacht symbool '%s'" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "syntaxfout in conditionele expressie" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "onverwacht symbool '%s'; ')' werd verwacht" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "')' werd verwacht" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "onverwacht argument '%s' bij eenzijdige conditionele operator" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "onverwacht argument bij eenzijdige conditionele operator" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "" +"onverwacht symbool '%s'; tweezijdige conditionele operator werd verwacht" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "tweezijdige conditionele operator werd verwacht" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "onverwacht argument '%s' bij tweezijdige conditionele operator" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "onverwacht argument bij tweezijdige conditionele operator" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "onverwacht symbool '%c' in conditionele opdracht" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "onverwacht symbool '%s' in conditionele opdracht" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "onverwacht symbool %d in conditionele opdracht" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntaxfout nabij onverwacht symbool '%s'" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntaxfout nabij '%s'" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "syntaxfout: onverwacht bestandseinde" + +#: parse.y:6365 +msgid "syntax error" +msgstr "syntaxfout" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Gebruik \"%s\" om de shell te verlaten.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende ')'" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion(): functie '%s' niet gevonden" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion(): %s: mogelijke herprobeerlus" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert(): %s: lege COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command(): ongeldige verbinder '%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set(): %d: ongeldige bestandsdescriptor" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set(): bestandspointer is NIL" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "" +"xtrace-bestandsdescriptor (%d) != bestandsnummer van xtrace-bestandspointer " +"(%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf(): '%c': ongeldig opmaakteken" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "bestandsdescriptor valt buiten bereik" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: omleiding is niet eenduidig" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: kan bestaand bestand niet overschrijven" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: beperkte modus: omleiden van uitvoer is niet toegestaan" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "kan geen tijdelijk bestand maken voor \"hier\"-document: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: kan bestandsdescriptor niet toewijzen aan variabele" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port is niet mogelijk zonder netwerk" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "omleidingsfout: kan bestandsdescriptor niet dupliceren" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "Kan /tmp niet vinden; maak deze aan!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp dient een geldige mapnaam te zijn" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "pretty-printing-modus wordt genegeerd in interactieve shells" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: ongeldige optie" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "kan UID niet op %d instellen; effectieve UID is %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "kan GID niet op %d instellen; effectieve GID is %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "kan debugger niet starten; debugging-modus is uitgeschakeld" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: is een map" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Ik heb geen naam!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versie %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Gebruik: %s [opties]\n" +" %s [opties] scriptbestand...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Lange opties:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Korte opties:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD, of -c OPDRACHT, of -O SHOPT-OPTIE (enkel bij aanroep)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s, of -o optie (veranderbaar via 'set')\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "Typ '%s -c \"help set\"' voor meer informatie over shell-opties.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Typ '%s -c help' voor meer informatie over ingebouwde shell-functies.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Gebruik de opdracht 'bashbug' om fouten in bash te rapporteren.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "Webpagina van 'bash': \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Algemene hulp bij gebruik van GNU-software: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask(): %d: ongeldige operatie" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Niet-bestaand signaal" + +# Vroeger ging dit over het afsluiten van een modemverbinding, +# tegenwoordig over het afsluiten van een pseudoterminal. +#: siglist.c:50 +msgid "Hangup" +msgstr "Opgehangen" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Onderbroken" + +# Verleden tijd, "Afgesloten", net als de andere actiesignaalnamen. +#: siglist.c:58 +msgid "Quit" +msgstr "Afgesloten" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Ongeldige instructie" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "Traceer/breekpunt-instructie" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ABORT-instructie" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT-instructie" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Drijvendekomma-berekeningsfout" + +#: siglist.c:86 +msgid "Killed" +msgstr "Geëlimineerd" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Busfout" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Segmentatiefout" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Onjuiste systeemaanroep" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Gebroken pijp" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Wekker" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Beëindigd" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Urgente in-/uitvoertoestand" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Gepauzeerd (signaal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Doorgaan" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Dochter is geëlimineerd of gestopt" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Gepauzeerd (terminalinvoer)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Gepauzeerd (terminaluitvoer)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O is mogelijk" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU-limiet" + +#: siglist.c:154 +msgid "File limit" +msgstr "Bestandslimiet" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarm (virtueel)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarm (profiel)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Venster is veranderd" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Recordvergrendeling" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Gebruikerssignaal 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Gebruikerssignaal 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT-invoergegevens staan te wachten" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "stroomstoring dreigt" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "systeemcrash dreigt" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "proces naar andere processor verplaatsen" + +#: siglist.c:198 +msgid "programming error" +msgstr "programmeerfout" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT-monitormodus is gegeven" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT-monitormodus is herroepen" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT-geluidssequentie is afgespeeld" + +#: siglist.c:214 +msgid "Information request" +msgstr "Verzoek om informatie" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Onbekend signaal #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "ongeldige vervanging: geen sluit-'%s' in %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: kan geen lijst toewijzen aan een array-element" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "kan geen pijp maken voor procesvervanging" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "kan geen dochterproces maken voor procesvervanging" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "kan pijp genaamd %s niet openen om te lezen" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "kan pijp genaamd %s niet openen om te schrijven" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "kan pijp genaamd %s niet dupliceren als bestandsdescriptor %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "opdrachtsubstitutie: null-byte in invoer is genegeerd" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "kan geen pijp maken voor opdrachtvervanging" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "kan geen dochterproces maken voor opdrachtvervanging" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" +"command_substitute(): kan pijp niet dupliceren als bestandsdescriptor 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: ongeldige variabelenaam voor naamsverwijzing" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: ongeldige indirecte expansie" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: ongeldige variabelenaam" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter is niet ingesteld" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: lege parameter, of niet ingesteld" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: resultaat van deeltekenreeks is kleiner dan nul" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: ongeldige vervanging" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: kan niet op deze manier toewijzen" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"toekomstige versies van de shell zullen dit als een rekenkundige vervanging " +"evalueren" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "ongeldige vervanging: geen afsluitende '`' in %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "geen overeenkomst: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "argument werd verwacht" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: een geheel-getaluitdrukking werd verwacht" + +#: test.c:265 +msgid "`)' expected" +msgstr "')' werd verwacht" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "')' werd verwacht; %s gevonden" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "tweezijdige operator werd verwacht, %s gevonden" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "eenzijdige operator werd verwacht, %s gevonden" + +#: test.c:881 +msgid "missing `]'" +msgstr "ontbrekende ']'" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "syntaxfout: onverwachte ';'" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "ongeldig signaalnummer" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "trap handler: maximum 'trap-handler'-niveau is overschreden (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps(): ongeldige waarde in trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: signaalverwerker is SIG_DFL, herzenden van %d (%s) aan " +"mezelf..." + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler(): ongeldig signaal %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "fout tijdens importeren van functiedefinitie voor '%s'" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "shell-niveau is te hoog (%d); teruggezet op 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "" +"make_local_variable(): er is geen functiecontext in huidige geldigheidsbereik" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: aan variabele mag geen waarde toegewezen worden" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: toekenning van geheel getal aan naamsverwijzing" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "" +"all_local_variables(): er is geen functiecontext in huidige geldigheidsbereik" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "*** %s heeft lege export-tekenreeks" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "*** ongeldig teken '%d' in export-tekenreeks voor %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "*** geen '=' in export-tekenreeks voor %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context(): top van 'shell_variables' is geen functiecontext" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context(): er is geen 'global_variables'-context" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope(): top van 'shell_variables' is geen tijdelijk geldigheidsbereik" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: Kan %s niet openen als BESTAND" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: ongeldige waarde %s voor 'trace'-bestandsdescriptor" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: compatibiliteitswaarde valt buiten bereik" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"De licentie is GPLv3+: GNU GPL versie 3 of later.\n" +"Zie http://gnu.org/licenses/gpl.html voor de volledige tekst.\n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versie %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"Dit is vrije software; u mag het vrijelijk wijzigen en verder verspreiden." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Er is GEEN GARANTIE, voor zover de wet dit toestaat." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: kan geen %lu bytes reserveren (%lu bytes gereserveerd)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: kan geen %lu bytes reserveren" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: kan geen %lu bytes reserveren (%lu bytes gereserveerd)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: kan geen %lu bytes reserveren" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [NAAM[=WAARDE] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] NAAM [NAAM...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPSVX] [-m TOETSENKAART] [-f BESTANDSNAAM] [-q NAAM] [-u NAAM]\n" +" [-r TOETSENREEKS] [-x TOETSENREEKS:SHELL-OPDRACHT]\n" +" [TOETSENREEKS:READLINE-FUNCTIE | TOETSENREEKS:READLINE-OPDRACHT]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [N]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [N]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [INGEBOUWDE_SHELLFUNCTIE [ARGUMENT...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [EXPRESSIE]" + +# XXX FIXME is this right? +# can -@ only combine with -P, not with -L? +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|(-P [-e])] [-@] [MAP]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] OPDRACHT [ARGUMENT...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [NAAM[=WAARDE] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] NAAM[=WAARDE]..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [OPTIE] NAAM[=WAARDE]..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [ARGUMENT...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [ARGUMENT...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f BESTANDSNAAM] [NAAM...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [ARGUMENT...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts OPTIETEKENREEKS NAAM [ARGUMENT]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a NAAM] [OPDRACHT [ARGUMENT...]] [OMLEIDING...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [N]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [N]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e EDITORNAAM] [-lnr] [EERSTE] [LAATSTE] of: fc -s " +"[PATROON=VERVANGING] [OPDRACHT]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [TAAKAANDUIDING]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [TAAKAANDUIDING...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p PADNAAM] [-dt] [NAAM...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [PATROON...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d POSITIE] [N] of: history -anrw [BESTANDSNAAM] of: " +"history -ps ARGUMENT..." + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" +"jobs [-lnprs] [TAAKAANDUIDING...] of: jobs -x OPDRACHT [ARGUMENT...]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [TAAKAANDUIDING... | PID...] " + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s SIGNAALNAAM | -n SIGNAALNUMMER | -SIGNAAL] PID | TAAKAANDUIDING\n" +" of: kill -l [SIGNAAL]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let ARGUMENT..." + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a ARRAY] [-d SCHEIDINGSTEKEN] [-i TEKST] [-p PROMPT]\n" +" [-n AANTAL_TEKENS] [-N AANTAL_TEKENS] [-t TIJDSLIMIET]\n" +" [-u BESTANDSDESCRIPTOR] [NAAM...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [N]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o OPTIENAAM] [--] [ARGUMENT...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [NAAM...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [NAAM[=WAARDE] ...] of: export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [NAAM[=WAARDE] ...] of: readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [N]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source BESTANDSNAAM [ARGUMENTEN]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". BESTANDSNAAM [ARGUMENTEN]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [EXPRESSIE]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ EXPRESSIE... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[ARGUMENT] SIGNAALAANDUIDING...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] NAAM..." + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [GRENSWAARDE]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [MODUS]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [ID ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [-n] [PID ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAAM [in WOORDEN...] ; do OPDRACHTEN; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( EXPR1; EXPR2; EXPR3 )); do OPDRACHTEN; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAAM [in WOORDEN... ;] do OPDRACHTEN; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] PIJPLIJN" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case WOORD in [PATROON [| PATROON]...) OPDRACHTEN ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if OPDRACHTEN; then OPDRACHTEN; [elif OPDRACHTEN; then OPDRACHTEN;]... [else " +"OPDRACHTEN;] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while OPDRACHTEN; do OPDRACHTEN; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until OPDRACHTEN; do OPDRACHTEN; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAAM] OPDRACHT [OMLEIDINGEN]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function NAAM { OPDRACHTEN ; } of: NAAM () { OPDRACHTEN ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ OPDRACHTEN ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "TAAKAANDUIDING [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( EXPRESSIE ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ EXPRESSIE ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "var - namen en betekenissen van enkele shell-variabelen" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | MAP]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [OPTIENAAM...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v VARIABELE] OPMAAK [ARGUMENTEN]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPTIE] [-A ACTIE] [-C OPDRACHT]\n" +" [-F FUNCTIE] [-G PATROON] [-P PREFIX] [-S SUFFIX]\n" +" [-W WOORDENLIJST] [-X FILTERPATROON] [NAAM...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o OPTIE] [-A ACTIE] [-C OPDRACHT] [-F FUNCTIE]\n" +" [-G PATROON] [-P PREFIX] [-S SUFFIX]\n" +" [-W WOORDENLIJST] [-X FILTERPATROON] [WOORD]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o OPTIE] [-DEI] [NAAM...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d SCHEIDINGSTEKEN] [-n AANTAL] [-O BEGIN] [-s AANTAL] [-t]\n" +" [-u BESTANDSDESCRIPTOR] [-C FUNCTIE] [-c HOEVEELHEID] " +"[ARRAY]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d SCHEIDINGSTEKEN] [-n AANTAL] [-O BEGIN] [-s AANTAL] [-t]\n" +" [-u BESTANDSDESCRIPTOR] [-C FUNCTIE] [-c HOEVEELHEID] " +"[ARRAY]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Aliassen definiëren of tonen.\n" +"\n" +" Zonder argumenten, of met optie '-p', toont 'alias' op standaarduitvoer\n" +" de huidige lijst van aliassen in de vorm: alias NAAM='VERVANGING'.\n" +" Met argumenten, wordt er een alias gedefinieerd voor elke NAAM waarvoor\n" +" een VERVANGING gegeven is. Als de VERVANGING eindigt op een spatie, " +"dan\n" +" wordt bij aliasexpansie ook van het nakomende woord gecontroleerd of " +"het\n" +" een alias is.\n" +"\n" +" De afsluitwaarde is 0, tenzij er een NAAM gegeven is waarvoor geen " +"alias\n" +" gedefinieerd is." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Elke gegeven NAAM verwijderen uit de lijst van gedefinieerde aliassen.\n" +"\n" +" Met optie '-a' worden alle gedefinieerde aliassen verwijderd.\n" +"\n" +" De afsluitwaarde is 0, tenzij NAAM geen bestaande alias is." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Toetsbindingen en variabelen van 'readline' instellen.\n" +"\n" +" Verbindt een toetsenreeks aan een 'readline'-functie of aan een macro,\n" +" of stelt een 'readline'-variabele in. De syntax van argumenten die " +"geen\n" +" opties zijn is gelijkaardig aan die voor ~/.inputrc, maar zij dienen " +"één\n" +" geheel te zijn, bijvoorbeeld: bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +"\n" +" Opties:\n" +" -f BESTANDSNAAM de toetsbindingen uit dit bestand lezen\n" +" -l alle bekende functienamen opsommen\n" +" -m TOETSENKAART deze toetsenkaart gebruiken voor de duur van deze\n" +" opdracht; mogelijke toetsenkaarten zijn 'emacs',\n" +" 'emacs-standard', 'emacs-meta', 'emacs-ctlx',\n" +" 'vi', 'vi-move', 'vi-insert' en 'vi-command'\n" +" -P functienamen en hun bindingen tonen\n" +" -p functienamen en hun bindingen tonen, in een vorm " +"die\n" +" hergebruikt kan worden als invoer\n" +" -r TOETSENREEKS de binding voor deze toetsenreeks verwijderen\n" +" -q FUNCTIENAAM tonen welke toetsen deze functie aanroepen\n" +" -S toetsenreeksen tonen die macro's aanroepen\n" +" -s toetsenreeksen tonen die macro's aanroepen, in een\n" +" vorm die hergebruikt kan worden als invoer\n" +" -u FUNCTIENAAM verwijdert alle toetsbindingen aan deze functie\n" +" -V variabelenamen en hun waarden tonen\n" +" -v variabelenamen en hun waarden tonen, in een vorm " +"die\n" +" hergebruikt kan worden als invoer\n" +" -x TOETSENREEKS:SHELL-OPDRACHT deze shell-opdracht uitvoeren als " +"deze\n" +" toetsenreeks ingevoerd wordt\n" +" -X met '-x' gebonden toetsenreeksen en opdrachten " +"tonen\n" +" in een vorm die hergebruikt kan worden als " +"invoer\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" fout optrad." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Een 'for'-, 'while'- of 'until'-lus beëindigen.\n" +"\n" +" Als N gegeven is, dan worden N niveaus van lussen beëindigd.\n" +"\n" +" De afsluitwaarde is 0, tenzij N kleiner dan 1 is." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"De volgende herhaling van huidige 'for'-, 'while'- of 'until'-lus beginnen.\n" +" Als N gegeven is, dan wordt N niveaus hoger doorgegaan.\n" +"\n" +" De afsluitwaarde is 0, tenzij N kleiner dan 1 is." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Een ingebouwde shell-functie uitvoeren.\n" +"\n" +" Voert de gegeven ingebouwde shell-functie met de gegeven argumenten " +"uit.\n" +" Dit is handig als u de naam van een ingebouwde functie voor een eigen\n" +" functie wilt gebruiken, maar toch de functionaliteit van de ingebouwde\n" +" functie nodig hebt.\n" +"\n" +" De afsluitwaarde is die van de uitgevoerde shell-functie, of 1\n" +" of 1 als INGEBOUWDE_SHELLFUNCTIE geen ingebouwde shell-functie is." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"De context van de aanroep van de huidige functie tonen.\n" +"\n" +" Zonder argument produceert het \"$regelnummer $bestandsnaam\"; met\n" +" argument \"$regelnummer $functienaam $bestandsnaam\". Deze tweede\n" +" vorm kan gebruikt worden om een 'stack trace' te produceren. De\n" +" waarde van het argument geeft aan hoeveel frames er teruggegaan\n" +" moet worden; het huidige frame heeft nummer 0.\n" +"\n" +" De afsluitwaarde is 0, tenzij de shell momenteel geen functie uitvoert\n" +" of EXPRESSIE ongeldig is." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"De huidige map wijzigen.\n" +"\n" +" Wijzigt de huidige map naar de gegeven MAP. Als geen MAP gegeven is,\n" +" dan wordt de waarde van de variabele HOME gebruikt.\n" +"\n" +" De variabele CDPATH definieert de mappen waarin naar MAP gezocht wordt.\n" +" De mapnamen in CDPATH worden gescheiden door dubbele punten (:); een\n" +" lege mapnaam is hetzelfde als de huidige map (.). Als MAP begint met\n" +" een slash (/), dan wordt CDPATH niet gebruikt.\n" +"\n" +" Als de gegeven map niet wordt gevonden, en shell-optie 'cdable_vars'\n" +" is ingeschakeld, dan wordt het gegeven woord als een variabelenaam\n" +" begrepen, en als die variabele een naam bevat, dan gaat 'cd' naar de\n" +" map met die naam.\n" +"\n" +" Opties:\n" +" -L symbolische koppelingen volgen; symbolische koppelingen in MAP\n" +" worden herleid ná verwerking van instantiaties van '..'\n" +" -P de fysieke mappenstructuur gebruiken zonder symbolische " +"koppelingen\n" +" te volgen; symbolische koppelingen in MAP worden herleid vóór\n" +" verwerking van instantiaties van '..'\n" +" -e als optie '-P' gegeven is en de huidige map kan niet bepaald " +"worden,\n" +" dan afsluiten met een niet-nul waarde\n" +" -@ een bestand met uitgebreide kenmerken presenteren als een map " +"die\n" +" deze bestandskenmerken bevat (op systemen die het " +"ondersteunen)\n" +"\n" +" Standaard worden symbolische koppelingen gevolgd, alsof '-L' gegeven " +"is.\n" +" Een '..' wordt verwerkt door het verwijderen van de direct voorafgaande\n" +" padcomponent terug tot een slash of tot het begin van MAP.\n" +"\n" +" De afsluitwaarde is 0 als de gewenste map ingesteld kon worden, en als " +"ook\n" +" omgevingsvariabele PWD ingesteld kon worden als '-P' gegeven is, anders " +"1." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"De naam van de huidige werkmap tonen.\n" +"\n" +" Opties:\n" +" -L de waarde van $PWD tonen (als het de huidige werkmap aangeeft)\n" +" -P het werkelijke, fysieke pad tonen, zonder symbolische " +"koppelingen\n" +"\n" +" Zonder opties wordt optie '-L' aangenomen.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of de\n" +" huidige map niet bepaald kon worden." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "Doet niets; de opdracht heeft geen effect; de afsluitwaarde is 0." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "Geeft afsluitwaarde 0, horend bij \"gelukt\"." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "Geeft afsluitwaarde 1, horend bij \"mislukt\"." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Een opdracht uitvoeren of informatie over een opdracht tonen.\n" +"\n" +" Voert de gegeven opdracht uit met de gegeven argumenten, waarbij een\n" +" eventueel gelijknamige shell-functie genegeerd wordt. Dit kan gebruikt\n" +" worden om een programma op schijf uit te voeren wanneer er een functie\n" +" met dezelfde naam bestaat.\n" +"\n" +" Opties:\n" +" -p een standaardwaarde voor PATH gebruiken, zodat alle\n" +" standaardprogramma's gegarandeerd gevonden worden\n" +" -v tonen welke opdracht er uitgevoerd zou worden\n" +" -V als '-v' maar gedetailleerder\n" +"\n" +" De afsluitwaarde is die van de uitgevoerde OPDRACHT,\n" +" of 1 als de OPDRACHT niet gevonden is." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Waarden en eigenschappen van variabelen instellen.\n" +"\n" +" Declareert de gegeven variabelen en/of kent hen eigenschappen toe.\n" +" Als er geen namen van variabelen gegeven zijn, dan worden de\n" +" bestaande variabelen en hun waarden getoond.\n" +"\n" +" Opties:\n" +" -f alleen de gedefinieerde functies tonen (geen variabelen)\n" +" -F alleen de namen van de functies tonen, zonder de definities\n" +" -g globale variabelen aanmaken wanneer gebruikt in een shell-" +"functie;\n" +" elders genegeerd\n" +" -p van elke gegeven variabele de eigenschappen en waarde tonen\n" +"\n" +" Eigenschappen:\n" +" -a van gegeven variabelen arrays maken (indien mogelijk)\n" +" -A van gegeven variabelen associatieve arrays maken (indien " +"mogelijk)\n" +" -i aan gegeven variabelen de 'geheel getal'-eigenschap toekennen\n" +" -l waarde van variabelen bij toekenning omzetten naar kleine " +"letters\n" +" -n de gegeven variabele een verwijzing maken naar de variabele die\n" +" gegeven is als waarde\n" +" -r de gegeven variabelen alleen-lezen maken\n" +" -t aan gegeven variabelen de 'trace'-eigenschap toekennen\n" +" -u waarde van variabelen bij toekenning omzetten naar hoofdletters\n" +" -x de gegeven variabelen exporteren\n" +"\n" +" Een '+' in plaats van een '-' voor de letter schakelt de betreffende\n" +" eigenschap uit.\n" +"\n" +" Bij variabelen met de 'geheel getal'-eigenschap wordt bij toewijzingen\n" +" een rekenkundige evaluatie gedaan (zie 'let').\n" +"\n" +" Als 'declare' wordt gebruikt in een functie, dan maakt het elke gegeven\n" +" naam lokaal, net zoals de opdracht 'local'. Optie '-g' onderdrukt dit.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" toekenningsfout optrad." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Waarden en eigenschappen van variabelen instellen.\n" +"\n" +" Een synoniem van 'declare'. Zie 'help declare'." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Lokale variabelen definiëren.\n" +"\n" +" Maakt een lokale variabele NAAM aan, en kent deze de waarde WAARDE toe.\n" +" OPTIE kan elke optie zijn die ook door 'declare' geaccepteerd wordt.\n" +"\n" +" 'local' kan alleen binnen een functie gebruikt worden, en zorgt ervoor\n" +" dat het geldigheidsbereik van de variabele NAAM beperkt wordt tot de\n" +" betreffende functie en diens dochters.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd, er een\n" +" toekenningsfout optrad, of de shell geen functie aan het uitvoeren is." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"De gegeven argumenten naar standaarduitvoer schrijven.\n" +"\n" +" Schrijft de gegeven argumenten naar standaarduitvoer, elke twee " +"gescheiden\n" +" door een spatie en aan het eind gevolgd door een nieuwe regel.\n" +"\n" +" Opties:\n" +" -n de afsluitende nieuwe regel onderdrukken\n" +" -e onderstaande backslash-stuurcodes interpreteren\n" +" -E onderstaande backslash-stuurcodes niet interpreteren\n" +"\n" +" 'echo' kent de volgende stuurcodes:\n" +" \\a geluidssignaal\n" +" \\b backspace\n" +" \\c geen verdere uitvoer produceren\n" +" \\e escapecode\n" +" \\E escapecode\n" +" \\f nieuwe pagina (FF-teken)\n" +" \\n nieuwe regel (LF-teken)\n" +" \\r naar begin van huidige regel (CR-teken)\n" +" \\t horizontale tab\n" +" \\v verticale tab\n" +" \\\\ een backslash (\\)\n" +" \\0NNN het teken met ASCII-code NNN (octaal, 1 tot 3 cijfers)\n" +" \\xHH het teken met code HH (hexadecimaal, 1 of 2 cijfers)\n" +" \\uHHHH het Unicode-teken met code HHHH\n" +" (hexadecimaal, 1 tot 4 cijfers)\n" +" \\UHHHHHHHH het Unicode-teken met code HHHHHHHH\n" +" (hexadecimaal, 1 tot 8 cijfers)\n" +"\n" +" De afsluitwaarde is 0, tenzij een schrijffout optrad." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"De gegeven argumenten naar standaarduitvoer schrijven.\n" +"\n" +" Schrijft de gegeven argumenten naar standaarduitvoer, gevolgd door een\n" +" nieuwe regel. Optie '-n' onderdrukt deze afsluitende nieuwe regel.\n" +"\n" +" De afsluitwaarde is 0, tenzij een schrijffout optrad." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Ingebouwde shell-opdrachten in- of uitschakelen.\n" +"\n" +" Schakelt ingebouwde opdrachten in of uit. Dit laatste maakt het " +"mogelijk\n" +" om een bestand op schijf uit te voeren dat dezelfde naam heeft als een\n" +" ingebouwde opdracht, zonder het volledige pad op te moeten geven.\n" +"\n" +" Opties:\n" +" -a de ingebouwde opdrachten tonen en of ze in- of uitgeschakeld " +"zijn\n" +" -n genoemde opdrachten uitschakelen of uitgeschakelde opdrachten " +"tonen\n" +" -p uitvoer produceren die hergebruikt kan worden als invoer " +"(standaard)\n" +" -s alleen de speciale POSIX ingebouwde opdrachten tonen\n" +"\n" +" Opties die het dynamisch laden besturen:\n" +" -f ingebouwde opdracht NAAM laden uit gedeeld object BESTANDSNAAM\n" +" -d opdracht die geladen is met '-f' verwijderen.\n" +"\n" +" Zonder opties wordt elke gegeven NAAM ingeschakeld. Zonder namen " +"worden\n" +" de ingeschakelde opdrachten getoond (of met '-n' de uitgeschakelde).\n" +"\n" +" Voorbeeld: om in plaats van de ingebouwde 'test' het bestand 'test' te\n" +" gebruiken dat zich in uw zoekpad PATH bevindt, typt u 'enable -n test'.\n" +"\n" +" De afsluitwaarde is 0, tenzij NAAM geen ingebouwde shell-opdracht is of\n" +"  er een fout optreedt." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Argumenten uitvoeren als een shell-opdracht.\n" +"\n" +" Combineert de gegeven argumenten tot een enkele tekenreeks, gebruikt " +"deze\n" +" als invoer voor de shell, en voert de resulterende opdrachten uit.\n" +"\n" +" De afsluitwaarde is die van de uitgevoerde opdracht, of 0 als de " +"opdracht\n" +" leeg is." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Opties ontleden.\n" +"\n" +" 'getopts' kan door shell-scripts gebruikt worden om positionele " +"parameters\n" +" als opties te ontleden.\n" +"\n" +" De OPTIETEKENREEKS bevat de te herkennen optieletters; als een letter\n" +" gevolgd wordt door een dubbele punt, dan hoort de optie een argument\n" +" te hebben, ervan gescheiden door witruimte.\n" +"\n" +" Elke keer dat 'getopts' wordt aangeroepen, plaatst het de volgende\n" +" gevonden optie in de gegeven shell-variabele NAAM, en het nummer van\n" +" het daarna te behandelen argument in de variabele OPTIND. Deze OPTIND\n" +" wordt geïnitialiseerd op 1 elke keer als de shell of een shell-script\n" +" wordt aangeroepen. Als een optie een argument heeft, dan wordt dat\n" +" argument in de shell-variabele OPTARG geplaatst.\n" +"\n" +" 'getopts' kan fouten op twee manieren rapporteren: in stille modus of\n" +" in normale modus. Stille modus wordt gebruikt als het eerste teken\n" +" van de optietekenreeks een dubbele punt is. In deze modus worden er\n" +" geen foutmeldingen geprint. In stille modus geldt: als 'getopts' een\n" +" ongeldige optie vindt, wordt dat teken in OPTARG geplaatst; als een\n" +" vereist argument bij een optie ontbreekt, dan wordt een ':' in NAAM\n" +" geplaatst en de optieletter in OPTARG. In normale modus geldt: als\n" +" 'getopts' een ongeldige optie vindt, wordt een '?' in NAME geplaatst,\n" +" en OPTARG leeggemaakt; als een vereist argument ontbreekt, dan wordt\n" +" een ':' in NAAM geplaatst en de gevonden optieletter in OPTARG; in\n" +" beide gevallen wordt er ook een foutmelding geprint.\n" +"\n" +" Als de shell-variabele OPTERR de waarde 0 heeft, wordt het printen\n" +" van foutmeldingen uitgeschakeld, zelfs als het eerste teken van de\n" +" optiereeks geen dubbele punt is. De standaardwaarde van OPTERR is 1.\n" +"\n" +" Normaliter ontleedt 'getopts' de positionele parameters: $0...$9.\n" +" Maar als er argumenten gegeven worden, dan worden deze ontleed." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"De shell vervangen door de gegeven opdracht.\n" +"\n" +" Voert de gegeven OPDRACHT uit, daarbij deze shell vervangend door dat\n" +" programma. Eventuele ARGUMENTen worden de argumenten van OPDRACHT.\n" +" Als er geen OPDRACHT gegeven is, dan worden eventuele omleidingen van\n" +" kracht voor deze shell zelf.\n" +"\n" +" Opties:\n" +" -a NAAM deze naam als nulde argument aan OPDRACHT meegeven\n" +" -c de opdracht uitvoeren met een lege omgeving\n" +" -l een koppelteken als nulde argument aan OPDRACHT meegeven\n" +"\n" +" Als de opdracht niet kan worden uitgevoerd, dan sluit een niet-" +"interactieve\n" +" shell af, tenzij de shell-optie 'execfail' aan staat.\n" +"\n" +" De afsluitwaarde is 0, tenzij OPDRACHT niet gevonden wordt of er een\n" +" omleidingsfout optreedt." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"De shell beëindigen.\n" +"\n" +" Beëindigt de shell met een afsluitwaarde van N. Zonder N is de\n" +" afsluitwaarde die van de laatst uitgevoerde opdracht." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Een login-shell beëindigen.\n" +"\n" +" Beëindigt een login-shell met een afsluitwaarde van N. Geeft een\n" +" foutmelding als de huidige shell geen login-shell is." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Opdrachten uit de geschiedenis tonen of uitvoeren.\n" +"\n" +" Kan gebruikt worden om oude opdrachten te tonen, of om deze te bewerken\n" +" en opnieuw uit te voeren. EERSTE en LAATSTE kunnen getallen zijn die " +"een\n" +" bereik opgeven, of EERSTE kan een tekenreeksje zijn waarmee de " +"recentste\n" +" opdracht wordt bedoeld die met die letters begint.\n" +"\n" +" Opties:\n" +" -e EDITORNAAM de te gebruiken editor; standaard wordt de waarde van\n" +" FCEDIT gebruikt, anders die van EDITOR, anders 'vi'\n" +" -l een lijst met opdrachten tonen (in plaats van ze te bewerken)\n" +" -n de lijst zonder nummers weergeven\n" +" -r de volgorde van de lijst omdraaien (nieuwste eerst)\n" +"\n" +" In de vorm 'fc -s [PATROON=VERVANGING]... [OPDRACHT]', wordt OPDRACHT\n" +" opnieuw uitgevoerd nadat de aangegeven vervangingen zijn gedaan.\n" +"\n" +" Een handige alias bij deze functie is r='fc -s', zodat het typen van\n" +" 'r' de laatste opdracht opnieuw uitvoert, en het typen van 'r cc' de\n" +" laatste opdracht die met 'cc' begon opnieuw uitvoert.\n" +"\n" +" De afsluitwaarde die van de uitgevoerde opdracht, of 0, of niet-nul als\n" +" er een fout optreedt." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"De gegeven taak in de voorgrond plaatsen.\n" +"\n" +" Plaatst de gegeven taak in de voorgrond, en maakt deze tot de huidige " +"taak.\n" +" Als er geen taak gegeven is, dan wordt dat wat volgens de shell de " +"huidige\n" +" taak is gebruikt.\n" +"\n" +" De afsluitwaarde is die van de in voorgrond geplaatste taak, of 1 als " +"er\n" +" een fout optreedt." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"De gegeven taken in de achtergrond plaatsen.\n" +"\n" +" Plaatst gegeven taken in de achtergrond, alsof deze gestart waren met " +"'&'.\n" +" Als er geen taak gegeven is, dan wordt dat wat volgens de shell de " +"huidige\n" +" taak is gebruikt.\n" +"\n" +" De afsluitwaarde is 0, tenzij taakbeheer uitgeschakeld is of er een " +"fout\n" +" optreedt." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Programmalocaties onthouden of tonen.\n" +"\n" +" Bepaalt en onthoudt voor elke gegeven opdracht-NAAM het volledige pad.\n" +" Als er geen argumenten gegeven zijn, dan wordt informatie over de\n" +" onthouden paden getoond.\n" +"\n" +" Opties:\n" +" -d het pad van elke gegeven NAAM vergeten\n" +" -l uitvoer produceren die herbruikbaar is als invoer\n" +" -p PADNAAM te gebruiken PADNAAM van de opdracht NAAM\n" +" -r alle paden vergeten\n" +" -t voor elke gegeven naam het onthouden pad tonen\n" +"\n" +" Elke gegeven NAAM wordt opgezocht in $PATH en wordt toegevoegd aan de\n" +" lijst met onthouden opdrachten.\n" +"\n" +" De afsluitwaarde is 0, tenzij NAAM niet gevonden wordt of een ongeldige\n" +" optie gegeven werd." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Informatie tonen over ingebouwde opdrachten.\n" +"\n" +" Toont korte hulpteksten voor ingebouwde opdrachten van de shell.\n" +" Als een PATROON gegeven is, dan worden hulpteksten getoond voor alle\n" +" opdrachten die aan dit PATROON voldoen, anders wordt een lijst met\n" +" onderwerpen waarvoor hulp beschikbaar is getoond.\n" +"\n" +" Opties:\n" +" -d een korte omschrijving tonen voor elk onderwerp\n" +" -m gebruiksbericht tonen in pseudo-opmaak van een man-pagina\n" +" -s de uitvoer beperken tot een beknopt gebruiksbericht\n" +"\n" +" De afsluitwaarde is 0, tenzij niets aan PATROON voldoet of een " +"ongeldige\n" +" optie gegeven werd." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"De opdrachtengeschiedenis tonen of bewerken.\n" +"\n" +" Geeft de lijst met uitgevoerde opdrachten weer (de \"geschiedenis\"),\n" +" inclusief regelnummers; voor bewerkte items staat een '*'. Met een\n" +" argument van N worden alleen de laatste N opdrachten getoond.\n" +"\n" +" Opties:\n" +" -c huidige geschiedenis wissen: alle uitgevoerde opdrachten " +"vergeten\n" +" -d POSITIE het geschiedenisitem op deze positie verwijderen; een\n" +" negatieve POSITIE telt terug vanaf het einde van de " +"lijst\n" +"\n" +" -a huidige geschiedenis aan eind van geschiedenisbestand toevoegen\n" +" -n alle nog niet gelezen regels uit het geschiedenisbestand lezen\n" +" en toevoegen aan het einde van huidige geschiedenis\n" +" -r het geschiedenisbestand lezen en toevoegen aan het einde van\n" +" huidige geschiedenis\n" +" -w huidige geschiedenis naar het geschiedenisbestand schrijven\n" +"\n" +" -p geschiedenisopzoeking uitvoeren voor elk ARGUMENT en het " +"resultaat\n" +" tonen zonder dit in de geschiedenis op te slaan\n" +" -s de ARGUMENTen als één enkel item aan de geschiedenis toevoegen\n" +"\n" +" Als een BESTANDSNAAM gegeven is, dan wordt dat gebruikt als het\n" +" geschiedenisbestand, anders wordt de waarde van HISTFILE gebruikt, en\n" +" als die variabele leeg is, dan ~/.bash_history.\n" +"\n" +" Als de variabele HISTTIMEFORMAT ingesteld en niet leeg is, dan wordt de\n" +" waarde ervan gebruikt als een opmaaktekenreeks for strftime(3), om een\n" +" tijdsstempel bij elk geschiedenisitem weer te geven. Anders worden " +"geen\n" +" tijdsstempels getoond.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" fout optrad." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"De status van taken tonen.\n" +"\n" +" Toont de actieve taken. Een TAAKAANDUIDING beperkt de uitvoer tot " +"alleen\n" +" die taak. Zonder opties wordt de status van alle actieve taken " +"getoond.\n" +"\n" +" Opties:\n" +" -l ook de proces-ID's tonen, naast de gewone informatie\n" +" -n alleen processen tonen die sinds de vorige melding zijn " +"veranderd\n" +" -p alleen de proces-ID's tonen\n" +" -r uitvoer beperken tot draaiende taken\n" +" -s uitvoer beperken tot gepauzeerde taken\n" +"\n" +" Als optie '-x' gegeven is, wordt de gegeven OPDRACHT uitgevoerd nadat\n" +" alle gegeven taken (in ARGUMENTen) afgesloten zijn (dat wil zeggen: hun\n" +" proces-ID is vervangen door dat van hun moederproces).\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" fout optrad. Met optie '-x' is de afsluitwaarde die van OPDRACHT." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Taken uit de huidige shell verwijderen.\n" +"\n" +" Verwijdert elke gegeven taak uit de tabel met actieve taken. Zonder\n" +" een TAAKAANDUIDING wordt dat wat volgens de shell de huidige taak is\n" +" verwijderd.\n" +"\n" +" Opties:\n" +" -a alle taken verwijderen (als geen TAAKAANDUIDING gegeven is)\n" +" -h taken niet verwijderen maar zodanig markeren dat deze geen " +"SIGHUP\n" +" krijgen wanneer de shell een SIGHUP krijgt\n" +" -r alleen draaiende taken verwijderen\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie of TAAKAANDUIDING\n" +" gegeven werd." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Een signaal naar een taak sturen.\n" +"\n" +" Stuurt de via PID of TAAKAANDUIDING aangeduide processen het gegeven\n" +" signaal. Als er geen signaal gegeven is, dan wordt SIGTERM gestuurd.\n" +"\n" +" Opties:\n" +" -n NAAM het signaal met deze naam sturen\n" +" -s NUMMER het signaal met dit nummer sturen\n" +" -l lijst met beschikbare signalen tonen; als na '-l' " +"argumenten\n" +" volgen, dan wordt voor elk nummer de bijbehorende naam\n" +" getoond, en voor elke naam het bijbehorende nummer\n" +" -L synoniem van '-l'\n" +"\n" +" 'kill' is om twee redenen een ingebouwde shell-opdracht: het " +"accepteert\n" +" ook taakaanduidingen in plaats van alleen proces-ID's, en als het " +"maximum\n" +" aantal processen bereikt is hoeft u geen nieuw proces te starten om een\n" +" ander proces te elimineren.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" fout optrad." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Rekenkundige uitdrukkingen evalueren.\n" +"\n" +" Evalueert elk ARGUMENT als een rekenkundige uitdrukking.\n" +" De evaluatie gebeurt in gehele getallen zonder controle op overloop;\n" +" maar deling door nul wordt gedetecteerd en wordt getoond als een fout.\n" +"\n" +" Onderstaande lijst toont de beschikbare operatoren in groepjes van " +"gelijke\n" +" voorrang; de groepjes zijn gerangschikt volgens afnemende voorrang.\n" +"\n" +" var++, var-- post-increment, post-decrement van variabele\n" +" ++var, --var pre-increment, pre-decrement van variabele\n" +" -, + eenzijdig minteken, eenzijdig plusteken\n" +" !, ~ logisch tegengestelde, bitsgewijs tegengestelde\n" +" ** machtsverheffing\n" +" *, /, % vermenigvuldiging, deling, rest\n" +" +, - optelling, aftrekking\n" +" <<, >> bitsgewijze verschuiving naar links, naar rechts\n" +" <=, >=, <, > vergelijkingen\n" +" ==, != gelijkheid, ongelijkheid\n" +" & bitsgewijze AND\n" +" ^ bitsgewijze XOR\n" +" | bitsgewijze OR\n" +" && logische AND\n" +" || logische OR\n" +"\n" +" expr ? expr : expr voorwaardelijke uitdrukking\n" +"\n" +" =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |= toewijzingen\n" +"\n" +" Shell-variabelen zijn toegestaan als parameters. De naam van een " +"variabele\n" +" wordt vervangen door zijn waarde (zonodig omgezet naar een geheel " +"getal).\n" +" Variabelen hoeven geen 'geheel getal'-eigenschap te hebben om gebruikt " +"te\n" +" kunnen worden in een expressie.\n" +"\n" +" Operatoren worden geëvalueerd in volgorde van voorrang. Subexpressies\n" +" tussen haakjes worden altijd eerst geëvalueerd en overstijgen zodoende\n" +" bovengenoemde voorrangsregels.\n" +"\n" +" Als het laatste ARGUMENT evalueert tot 0, dan is de afsluitwaarde van\n" +" 'let' 1; anders 0." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Een regel van standaardinvoer lezen en in velden opsplitsen.\n" +"\n" +" Leest één regel van standaardinvoer (of van de gegeven " +"bestandsdescriptor\n" +" als optie '-u' gegeven is) en wijst het eerste woord aan de eerste NAAM " +"toe,\n" +" het tweede woord aan de tweede NAAM, en zo verder; de resterende " +"woorden\n" +" worden toegewezen aan de laatste NAAM. Alleen de tekens in de " +"variabele\n" +" IFS worden herkend als woordscheidingstekens. Als er geen namen " +"gegeven\n" +" zijn, dan wordt de gelezen regel opgeslagen in de variabele REPLY.\n" +"\n" +" Opties:\n" +" -a ARRAY de gelezen woorden toekennen aan de opeenvolgende posities\n" +" van het genoemde array, beginnend bij index nul\n" +" -d TEKEN doorgaan met lezen tot TEKEN gelezen wordt (i.p.v. LF-" +"teken)\n" +" -e 'readline' gebruiken om de regel in te lezen\n" +" -i TEKST door 'readline' te gebruiken begintekst\n" +" -n AANTAL stoppen na maximaal dit aantal tekens gelezen te hebben, " +"of\n" +" na een LF-teken (i.p.v. altijd te wachten op een LF-" +"teken)\n" +" -N AANTAL alleen stoppen na dit aantal tekens gelezen te hebben, of " +"na\n" +" EOF of tijdsoverschrijding, elk scheidingsteken negerend\n" +" -p PROMPT deze tekenreeks tonen als prompt (zonder afsluitende " +"nieuwe\n" +" regel) alvorens te beginnen met lezen\n" +" -r backslash-codes niet omzetten naar hun betekenis\n" +" -s invoer die van een terminal komt niet echoën\n" +" -t AANTAL na dit aantal seconden stoppen met wachten op invoer en\n" +" afsluiten met een code groter dan 128; de waarde van de\n" +" variabele TMOUT is de standaardwaarde voor het aantal te\n" +" wachten seconden; het aantal mag drijvendepuntgetal " +"zijn;\n" +" als AANTAl 0 is, dan keert 'read' onmiddellijk terug " +"zonder\n" +" enige data te lezen, maar is alleen succesvol als er op " +"de\n" +" betreffende bestandsdescriptor invoer beschikbaar is\n" +" -u BS.DS. van deze bestandsdescriptor lezen i.p.v. van " +"standaardinvoer\n" +"\n" +" De afsluitwaarde is 0, tenzij einde-van-bestand (EOF) bereikt werd,\n" +" de tijdslimiet overschreden werd, er een toekenningsfout optrad, of een\n" +" ongeldige bestandsdescriptor als argument van '-u' gegeven werd." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Terugkeren uit een shell-functie.\n" +"\n" +" Doet een functie of gesourced script afsluiten met afsluitwaarde N.\n" +" Zonder N is de afsluitwaarde die van de laatst uitgevoerde opdracht\n" +" in functie of script.\n" +"\n" +" De afsluitwaarde is N, of 1 als de shell geen functie of script aan het\n" +" uitvoeren is." + +# Voor de duidelijkheid is de tekstvolgorde veranderd. +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Waarden van shell-opties of positionele parameters instellen.\n" +"\n" +" Schakelt shell-eigenschappen in/uit, of verandert waarden van " +"positionele\n" +" parameters. Zonder opties of argumenten toont 'set' de namen en " +"waarden\n" +" van alle gedefinieerde variabelen en functies, in een vorm die als " +"invoer\n" +" hergebruikt kan worden. De volgende opties zijn beschikbaar (een '+' " +"in\n" +" plaats van een '-' schakelt de betreffende eigenschap _uit_ i.p.v. in):\n" +"\n" +" -a nieuwe of gewijzigde variabelen en functies automatisch " +"exporteren\n" +" -B accoladevervanging uitvoeren (is standaard, b.v. a{b,c} -> ab ac)\n" +" -b beëindiging van een taak direct melden (i.p.v. na huidige " +"opdracht)\n" +" -C omleiding van uitvoer mag gewone bestanden niet overschrijven\n" +" -E een 'trap' op ERR door laten werken in functies en " +"dochterprocessen\n" +" -e de shell afsluiten zodra afsluitwaarde van een opdracht niet nul " +"is\n" +" -f jokertekens voor bestandsnamen uitschakelen (geen 'globbing')\n" +" -H geschiedenisopdracht '!' beschikbaar stellen (standaard)\n" +" -h het volledige pad van opdrachten onthouden na eerste keer " +"opzoeken\n" +" -k ook nakomende toewijzingen aan variabelen in de omgeving plaatsen\n" +" -m taakbesturing beschikbaar stellen (standaard)\n" +" -n opdrachten wel lezen maar niet uitvoeren (\"droogzwemmen\")\n" +" -o OPTIENAAM deze optie inschakelen (zie verderop voor de lange " +"namen)\n" +" -P geen symbolische koppelingen herleiden bij opdrachten als 'cd' " +"die\n" +" de huidige map wijzigen\n" +" -p geprivilegeerde modus: de bestanden aangeduid door ENV en " +"BASH_ENV\n" +" worden genegeerd, functies worden niet uit de omgeving " +"geïmporteerd,\n" +" en ook eventuele SHELLOPTS worden genegeerd; modus wordt " +"automatisch\n" +" ingeschakeld als effectieve en echte UID of GID niet " +"overeenkomen;\n" +" uitschakelen maakt dan effectieve UID en GID gelijk aan de echte\n" +" -T een 'trap' op DEBUG of RETURN door laten werken in functies en\n" +" dochterprocessen\n" +" -t afsluiten na het lezen en uitvoeren van één opdracht\n" +" -u het gebruik van niet-bestaande variabelen behandelen als een fout\n" +" -v invoerregel weergeven (\"echoën\") zodra deze gelezen is\n" +" -x elke opdracht met argumenten weergeven voordat deze wordt " +"uitgevoerd\n" +" -- nakomende argumenten zijn positionele parameters; als er geen " +"verdere\n" +" argumenten zijn, worden de bestaande positionele parameters " +"gewist\n" +" - opties -v en -x uitschakelen; nakomende argumenten zijn " +"positionele\n" +" parameters; maar zonder argumenten worden de bestaande niet " +"gewist\n" +"\n" +" De opties kunnen ook gebruikt worden bij het starten van de shell.\n" +" De huidige toestand van de eigenschappen is te vinden in $-. Eventuele\n" +" extra argumenten van 'set' worden begrepen als positionele parameters\n" +" en worden toegewezen aan $1, $2, ... $N.\n" +"\n" +" De lange namen voor gebruik met optie -o (of +o) zijn:\n" +" allexport == -a (automatisch exporteren van nieuwen/gewijzigden)\n" +" braceexpand == -B (accoladevervanging uitvoeren)\n" +" emacs regelbewerkingsinterface in stijl van 'emacs' gebruiken\n" +" errexit == -e (shell afsluiten bij eerste fout)\n" +" errtrace == -E ('trap' op ERR overal laten gelden)\n" +" functrace == -T ('trap' op DEBUG overal laten gelden)\n" +" hashall == -h (gevonden pad van opdrachten onthouden)\n" +" histexpand == -H ('!'-opdracht beschikbaar stellen)\n" +" history opdrachtengeschiedenis beschikbaar stellen\n" +" ignoreeof Ctrl-D negeren; de shell niet afsluiten bij lezen van " +"EOF\n" +" interactive-comments commentaar in interactieve opdrachten toestaan\n" +" keyword == -k (nakomende toewijzingen ook meenemen)\n" +" monitor == -m (taakbesturing beschikbaar stellen)\n" +" noclobber == -C (omleidingen geen bestanden laten overschrijven)\n" +" noexec == -n (opdrachten lezen maar niet uitvoeren)\n" +" noglob == -f (jokertekens uitschakelen)\n" +" nolog (herkend maar genegeerd)\n" +" notify == -b (beëindiging van een taak direct melden)\n" +" nounset == -u (niet-bestaande variabelen als een fout " +"beschouwen)\n" +" onecmd == -t (afsluiten na uitvoeren van één opdracht)\n" +" physical == -P (fysieke paden volgen i.p.v. symbolische)\n" +" pipefail de afsluitwaarde van een pijplijn gelijkmaken aan die " +"van\n" +" de laatste niet-succesvolle opdracht in de reeks, of " +"aan\n" +" 0 als alle opdrachten succesvol waren\n" +" posix de voorschriften van de POSIX-standaard strict volgen\n" +" privileged == -p (geprivilegeerde modus)\n" +" verbose == -v (elke invoerregel echoën)\n" +" vi regelbewerkingsinterface in stijl van 'vi' gebruiken\n" +" xtrace == -x (elke opdracht echoën)\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Shell-variabelen en -functies verwijderen.\n" +"\n" +" Verwijdert voor elke NAAM de bijbehorende variabele of functie.\n" +"\n" +" Opties:\n" +" -f elke NAAM als een shell-functie begrijpen\n" +" -v elke NAAM als een shell-variabele begrijpen\n" +" -n elke NAAM als een naamsverwijzing begrijpen en de variabele zelf\n" +" verwijderen in plaats de variabele waar naar verwezen wordt\n" +"\n" +" Zonder opties zal 'unset' eerst een variabele proberen te verwijderen,\n" +" en als dat niet lukt, dan een functie. Sommige variabelen kunnen niet\n" +" verwijderd worden; zie ook 'readonly'.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of een\n" +" NAAM alleen-lezen is." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"De export-eigenschap van shell-variabelen instellen.\n" +"\n" +" Markeert elke gegeven naam voor automatische export naar de omgeving\n" +" van latere opdrachten. Als een WAARDE gegeven is, dan wordt deze " +"WAARDE\n" +" toegekend alvorens te exporteren.\n" +"\n" +" Opties:\n" +" -f gegeven namen verwijzen alleen naar functies\n" +" -n voor de gegeven namen de exportmarkering juist verwijderen\n" +" -p een lijst van alle geëxporteerde namen tonen\n" +"\n" +" Het argument '--' schakelt verdere optieverwerking uit.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Shell-variabelen als onveranderbaar markeren.\n" +"\n" +" Markeert elke gegeven NAAM als alleen-lezen, zodat de waarde van deze\n" +" NAAM niet meer veranderd kan worden door een latere toewijzing. Als " +"een\n" +" WAARDE gegeven is, dan deze WAARDE toekennen alvorens deze te fixeren.\n" +"\n" +" Opties:\n" +" -a elke naam als een array begrijpen\n" +" -A elke naam als een associatief array begrijpen\n" +" -f gegeven namen verwijzen alleen naar functies\n" +" -p een lijst tonen van alle onveranderbare variabelen of functies,\n" +" al naar gelang optie '-f' gegeven is\n" +"\n" +" Het argument '--' schakelt verdere optieverwerking uit.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Positionele parameters opschuiven.\n" +"\n" +" Hernoemt positionele parameters $N+1,$N+2,... naar $1,$2,...\n" +" Als N niet gegeven is, wordt de waarde 1 aangenomen.\n" +"\n" +" De afsluitwaarde is 0 tenzij N negatief is of groter dan $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Opdrachten uit bestand in de huidige shell uitvoeren.\n" +"\n" +" Leest opdrachten uit het gegeven bestand en voert deze uit in de " +"huidige\n" +" shell. De mappen in PATH worden nagezocht om het genoemde bestand te\n" +" vinden. Als er verder nog argumenten gegeven zijn, dan worden dit de\n" +" positionele parameters tijdens de uitvoering van het genoemde bestand.\n" +"\n" +" De afsluitwaarde is die van de laatst uitgevoerde opdracht in het " +"gegeven\n" +" bestand, of 1 als dit bestand niet gelezen kan worden." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Uitvoering van de shell pauzeren.\n" +"\n" +" Pauzeert de uitvoering van deze shell totdat een SIGCONT-signaal\n" +" ontvangen wordt. Een login-shell kan niet gepauzeerd worden, tenzij\n" +" optie '-f' gegeven is.\n" +"\n" +" Optie:\n" +" -f pauzering afdwingen, ook als dit een login-shell is\n" +"\n" +" De afsluitwaarde is 0, tenzij taakbeheer uitgeschakeld is of er een " +"fout\n" +" optreedt." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Een conditionele expressie evalueren.\n" +"\n" +" Evalueert de gegeven EXPRESSIE; afhankelijk van het resultaat is de\n" +" afsluitwaarde 0 (\"waar\") of 1 (\"onwaar\"). De expressies kunnen\n" +" eenzijdig of tweezijdig zijn; eenzijdige expressies worden vaak\n" +" gebruikt om de toestand van een bestand te inspecteren. Er zijn ook\n" +" operatoren voor tekenreeksen en voor getalsmatige vergelijkingen.\n" +"\n" +" Het gedrag van 'test' is afhankelijk van het aantal argumenten.\n" +" Lees de handleiding van 'bash' voor een complete beschrijving.\n" +"\n" +" Bestandsoperatoren:\n" +" -a BESTAND waar als bestand bestaat\n" +" -b BESTAND waar als bestand een blok-apparaat is\n" +" -c BESTAND waar als bestand een byte-apparaat is\n" +" -d BESTAND waar als bestand een map is\n" +" -e BESTAND waar als bestand bestaat\n" +" -f BESTAND waar als bestand een gewoon bestand is\n" +" -G BESTAND waar als uw groep het bestand effectief bezit\n" +" -g BESTAND waar als bestand SETGUID is\n" +" -h BESTAND waar als bestand een symbolische koppeling is\n" +" -k BESTAND waar als bestand \"sticky\"-bit aan heeft staan\n" +" -L BESTAND waar als bestand een symbolische koppeling is\n" +" -N BESTAND waar als bestand gewijzigd is sinds laatste lezing\n" +" -O BESTAND waar als u het bestand effectief bezit\n" +" -p BESTAND waar als bestand een benoemde pijp is\n" +" -r BESTAND waar als bestand voor u leesbaar is\n" +" -S BESTAND waar als bestand een socket is\n" +" -s BESTAND waar als bestand niet leeg is\n" +" -t DESCRIPTOR waar als bestandsdescriptor geopend is op een " +"terminal\n" +" -u BESTAND waar als bestand SETUID is\n" +" -w BESTAND waar als bestand voor u schrijfbaar is\n" +" -x BESTAND waar als bestand door u uitvoerbaar is\n" +"\n" +" BEST1 -nt BEST2 waar als eerste bestand later gewijzigd is dan " +"tweede\n" +" BEST1 -ot BEST2 waar als eerste bestand eerder gewijzigd is dan " +"tweede\n" +" BEST1 -ef BEST2 waar als eerste bestand harde koppeling is naar " +"tweede\n" +"\n" +" Tekenreeksoperatoren:\n" +" -z REEKS waar als tekenreeks leeg is\n" +" -n REEKS waar als tekenreeks niet leeg is\n" +" REEKS waar als tekenreeks niet leeg is\n" +" RKS1 = RKS2 waar als de tekenreeksen gelijk zijn\n" +" RKS1 != RKS2 waar als de tekenreeksen niet gelijk zijn\n" +" RKS1 < RKS2 waar als eerste reeks lexicografisch voor de tweede " +"komt\n" +" RKS1 > RKS2 waar als eerste reeks lexicografisch na de tweede " +"komt\n" +"\n" +" Andere operatoren:\n" +" -o OPTIE waar als deze shell-optie ingeschakeld is\n" +" -v VARIABELE waar als deze variabele een waarde heeft\n" +" -R VARIABELE waar als deze variabele een naamsverwijzing is\n" +" ! EXPRESSIE waar als EXPRESSIE onwaar is\n" +" EXPR1 -a EXPR2 waar als beide expressies waar zijn\n" +" EXPR1 -o EXPR2 onwaar als beide expressies onwaar zijn\n" +" ARG1 VGL ARG2 waar als rekenkundige vergelijking klopt; VGL is één\n" +" van de volgende: -eq, -ne, -lt, -le, -gt, -ge;\n" +" ze betekenen: gelijk, ongelijk, kleiner dan,\n" +" kleiner of gelijk, groter dan, groter of gelijk\n" +"\n" +" De afsluitwaarde is 0 als EXPRESSIE waar is, 1 als EXPRESSIE onwaar is,\n" +" en 2 als een ongeldig argument gegeven werd." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Een conditionele expressie evalueren.\n" +"\n" +" Dit is een synoniem voor de ingebouwde functie 'test', behalve dat\n" +" het laatste argument een ']' moet zijn, horend bij de begin-'['." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Procestijden tonen.\n" +"\n" +" Geeft de totaal verbruikte gebruikers- en systeemtijd weer; eerst de\n" +" tijden verbruikt door de shell zelf, en daaronder de tijden verbruikt\n" +" door de processen uitgevoerd door de shell.\n" +"\n" +" De afsluitwaarde is altijd 0." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Signalen en andere gebeurtenissen opvangen.\n" +"\n" +" Definieert en activeert afhandelingsprocedures die uitgevoerd moeten\n" +" worden wanneer de shell een signaal of andere gebeurtenissen ontvangt.\n" +"\n" +" ARGUMENT is een opdracht die gelezen en uitgevoerd wordt wanneer de " +"shell\n" +" een van de opgegeven signalen ontvangt. Als ARGUMENT ontbreekt en er " +"één\n" +" signaal gegeven is, of wanneer ARGUMENT '-' is, dan worden de opgegeven\n" +" signalen teruggezet op de waarde die ze hadden bij het starten van deze\n" +" shell. Als ARGUMENT de lege tekenreeks is, dan worden de opgegeven\n" +" signalen genegeerd door zowel deze shell als door alle " +"dochterprocessen.\n" +"\n" +" Als EXIT (0) als signaal opgegeven wordt, dan wordt ARGUMENT uitgevoerd\n" +" bij het afsluiten van de shell. Als DEBUG als signaal opgegeven wordt,\n" +" dan wordt ARGUMENT uitgevoerd vóór elke enkelvoudige opdracht. Als " +"RETURN\n" +" als signaal opgegeven wordt, dan wordt ARGUMENT uitgevoerd elke keer " +"als\n" +" een functie (of een met 'source' aangeroepen script) terugkeert. Als " +"ERR\n" +" als signaal opgegeven wordt, dan wordt ARGUMENT uitgevoerd elke keer " +"als\n" +" de mislukking van een opdracht de shell zou beëindigen als optie '-e'\n" +" gegeven was.\n" +"\n" +" Als er geen enkel argument gegeven is, dan toont 'trap' welke " +"opdrachten\n" +" er met welke signalen verbonden zijn.\n" +"\n" +" Opties:\n" +" -l een overzicht tonen van signaalnummers en hun namen\n" +" -p voor elk gegeven signaal tonen welke opdracht ermee verbonden is\n" +"\n" +" Signalen kunnen als naam of als nummer opgegeven worden, in hoofd- of " +"in\n" +" kleine letters, en het voorvoegsel 'SIG' is optioneel. Merk op dat met\n" +" 'kill -signaal $$' een signaal naar de huidige shell gestuurd kan " +"worden.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie of SIGNAALAANDUIDING\n" +" gegeven werd." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Informatie tonen over een opdracht.\n" +"\n" +" Toont voor elke gegeven NAAM hoe deze zou worden geïnterpreteerd als\n" +" deze als opdracht gebruikt zou worden.\n" +"\n" +" Opties:\n" +" -a alle plaatsen tonen met een uitvoerbaar bestand genaamd NAAM;\n" +" dit omvat aliassen, ingebouwde shell-opdrachten, functies,\n" +" sleutelwoorden, en bestanden op schijf (alleen zonder '-p')\n" +" -f functies negeren, alsof ze niet gedefinieerd zijn\n" +" -P naar elke gegeven naam zoeken in het huidige zoekpad (PATH), ook\n" +" als het een alias, ingebouwde shell-opdracht of functie is\n" +" -p voor elke gegeven naam het volledige pad tonen van het bestand " +"dat\n" +" uitgevoerd zou worden, of niets als er een alias, functie,\n" +" ingebouwde shell-opdracht of sleutelwoord met die naam is\n" +" -t alleen het type van de opgegeven namen tonen: 'alias', 'builtin',\n" +" 'file', 'function' of 'keyword', al naar gelang het een alias,\n" +" een ingebouwde shell-opdracht, een bestand op schijf, een\n" +" gedefinieerde functie of een sleutelwoord betreft; of niets\n" +" als de naam onbekend is\n" +"\n" +" De afsluitwaarde is 0 als elke NAAM gevonden werd, anders 1." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Grenzen van hulpbronnen aanpassen.\n" +"\n" +" Begrenst de beschikbare hulpbronnen voor processen gestart door deze " +"shell\n" +" -- op systemen die zulke begrenzing toestaan.\n" +"\n" +" Opties:\n" +" -S een \"zachte\" hulpbrongrens gebruiken\n" +" -H een \"harde\" hulpbrongrens gebruiken\n" +" -a alle huidige begrenzingen tonen\n" +" -b de maximum grootte van een socketbuffer\n" +" -c de maximum grootte van een core-bestand (in kB)\n" +" -d de maximum hoeveelheid gegevensgeheugen van een proces (in kB)\n" +" -e de maximum procespriotiteit (de 'nice'-waarde)\n" +" -f de maximum grootte van bestanden geschreven door shell of " +"dochters\n" +" -i het maximum aantal nog wachtende signalen\n" +" -l de maximum hoeveelheid geheugen die een proces mag vastpinnen " +"(kB)\n" +" -k het maximum aantal gereserveerde kqueues voor dit proces\n" +" -m de maximum hoeveelheid fysiek geheugen van een proces (in kB)\n" +" -n het maximum aantal open bestandsdescriptors\n" +" -p de maximum grootte van een pijpbuffer\n" +" -q het maximum aantal bytes in POSIX berichtwachtrijen\n" +" -r de maximum realtime-procesprioriteit\n" +" -s de maximum stapelgrootte (in kB)\n" +" -t de maximum hoeveelheid CPU-tijd (in seconden)\n" +" -u het maximum aantal gebruikersprocessen\n" +" -v de maximum hoeveelheid virtueel geheugen van een proces (in kB)\n" +" -x het maximum aantal bestandsvergrendelingen\n" +" -P het maximum aantal pseudoterminals\n" +" -T het maximum aantal threads\n" +"\n" +" Niet alle opties zijn beschikbaar op alle platformen.\n" +"\n" +" Als een GRENSWAARDE opgegeven is, dan wordt dit de nieuwe waarde van de\n" +" aangegeven hulpbron, anders wordt de huidige waarde ervan getoond.\n" +" De speciale grenswaarden 'soft', 'hard' en 'unlimited' staan voor de\n" +" huidige zachte grens, de huidige harde grens, en onbegrensd.\n" +" Als geen optie gegeven is, dan wordt optie '-f' aangenomen.\n" +"\n" +" De waardes gaan in stappen van 1024 bytes, behalve voor '-t', die in\n" +" seconden is, voor '-p', die in stappen van 512 bytes gaat, en voor '-" +"u',\n" +" dat een ongeschaald aantal is.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" fout optrad." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Het bestandsaanmaakmasker tonen of instellen.\n" +"\n" +" Stelt het bestandsaanmaakmasker van de gebruiker in op de gegeven " +"MODUS.\n" +" Als MODUS ontbreekt, dan wordt de huidige waarde van het masker " +"getoond.\n" +"\n" +" Als MODUS begint met een cijfer, wordt het begrepen als een octaal " +"getal,\n" +" anders als een symbolische modus-tekenreeks zoals chmod (1) die kent.\n" +"\n" +" Opties:\n" +" -p als invoer herbruikbare uitvoer produceren (indien MODUS " +"ontbreekt)\n" +" -S symbolische uitvoer produceren; anders octale getallen\n" +"\n" +" De afsluitwaarde is 0, tenzij MODUS ongeldig is of een ongeldige optie\n" +" gegeven werd." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Op taakafsluiting wachten en de afsluitwaarde rapporteren.\n" +"\n" +" Wacht op elk proces aangeduid door een ID -- dat een taakaanduiding of\n" +" een proces-ID mag zijn -- en rapporteert diens afsluitwaarde. Als geen " +"ID\n" +" gegeven is, dan wordt er gewacht op alle actieve dochterprocessen, en " +"is\n" +" de afsluitwaarde van 'wait' automatisch 0. Als ID een taakaanduiding " +"is,\n" +" dan wordt er gewacht op alle processen in de pijplijn van die taak.\n" +"\n" +" Als optie '-n' gegeven is, dan wordt gewacht op de eerstvolgende " +"voltooiing\n" +" van een taak en wordt diens afsluitwaarde geretourneerd.\n" +" \n" +" Als optie '-f' gegeven is, en taakbesturing is ingeschakeld, dan wordt\n" +" gewacht tot de taak met de gegeven ID beëindigd is, in plaats van te\n" +" wachten op een toestandswijziging.\n" +"\n" +" De afsluitwaarde is die van de laatste ID, 1 als ID ongeldig is,\n" +" of 2 als een ongeldige optie gegeven werd." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Op procesafsluiting wachten en de afsluitwaarde rapporteren.\n" +"\n" +" Wacht op elk proces aangeduid door een PID en rapporteert diens\n" +" afsluitwaarde. Als geen PID gegeven is, dan wordt er gewacht op alle\n" +" momenteel actieve dochterprocessen, en is de afsluitwaarde van 'wait'\n" +" automatisch 0. PID moet een proces-ID zijn.\n" +"\n" +" De afsluitwaarde is die van de laatste PID, 1 als PID ongeldig is,\n" +" of 2 als een ongeldige optie gegeven werd." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Opdrachten uitvoeren voor elk element in een lijst.\n" +"\n" +" De 'for'-lus voert een reeks opdrachten uit voor elk element in een\n" +" lijst van items. Als 'in WOORDEN...;' afwezig is, wordt 'in \"$@\";'\n" +" aangenomen. Voor elk element in WOORDEN wordt NAAM gelijkgemaakt aan\n" +" dat element en worden de OPDRACHTEN uitgevoerd.\n" +"\n" +" De afsluitwaarde is die van de laatst uitgevoerde opdracht." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Een rekenkundige 'for'-lus.\n" +"\n" +" Dit is het equivalent van:\n" +"\n" +" (( EXP1 )); while (( EXP2 )); do OPDRACHTEN; (( EXP3 )); done\n" +"\n" +" EXP1, EXP2, and EXP3 zijn rekenkundige expressies. Als een expressie\n" +" weggelaten wordt, wordt de waarde 1 ervoor in de plaats genomen.\n" +"\n" +" De afsluitwaarde is die van de laatst uitgevoerde opdracht." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Een keuzelijst aanbieden en opdrachten uitvoeren.\n" +"\n" +" Toont een menu op standaardfoutuitvoer: een genummerde lijst met de\n" +" gegeven woorden nadat alle shell-vervangingen erop zijn toegepast.\n" +" Als het 'in'-gedeelte afwezig is, wordt 'in \"$@\";' aangenomen.\n" +"\n" +" Na het menu wordt de PS3-prompt getoond, en wordt een regel van\n" +" standaardinvoer gelezen. Als de gelezen regel één van de getoonde\n" +" nummers is, dan wordt NAAM gelijkgemaakt aan het bijbehorende woord;\n" +" als de regel leeg is, worden het menu en de prompt opnieuw getoond;\n" +" als einde-van-bestand (Ctrl-D) wordt gelezen, dan wordt de opdracht\n" +" beëindigd. Elke andere waarde zorgt ervoor dat de variabele NAAM\n" +" wordt leeggemaakt. De gelezen regel wordt altijd opgeslagen in de\n" +" variabele REPLY. Na elke keuze worden de bijbehorende opdrachten\n" +" uitgevoerd. Dit gaat door totdat een 'break' de opdracht beëindigt.\n" +"\n" +" De afsluitwaarde is die van de laatst uitgevoerde opdracht." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"De door een pijplijn verbruikte tijd tonen.\n" +"\n" +" Voert de in de PIJPLIJN gegeven opdrachten uit en toont daarna een\n" +" tijdssamenvatting: de totale verlopen tijd, de in gebruikersprocessen\n" +" verbruikte processortijd , en de in systeemprocessen verbruikte\n" +" processortijd.\n" +"\n" +" De uitvoer kan via de omgevingsvariabele TIMEFORMAT aangepast worden.\n" +" Optie '-p' negeert deze omgevingsvariabele en toont de tijden in een\n" +" overdraagbare standaardopmaak.\n" +" De afsluitwaarde is die van de PIJPLIJN." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Opdrachten uitvoeren afhankelijk van patroonovereenkomsten.\n" +"\n" +" Voert één van de gegeven sets met opdrachten uit, afhankelijk van met\n" +" welk PATROON het WOORD overeenkomt. Met '|' kunnen meerdere patronen\n" +" gegroepeerd worden.\n" +"\n" +" De afsluitwaarde is die van de laatst uitgevoerde opdracht." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Opdrachten uitvoeren afhankelijk van voorwaarden.\n" +"\n" +" Voert eerst de opdrachten na 'if' uit; als de afsluitwaarde daarvan\n" +" nul is, dan worden de opdrachten na de eerste 'then' uitgevoerd; anders\n" +" de opdrachten na de eerstvolgende 'elif' (indien aanwezig) of de 'else'\n" +" (indien aanwezig). Als de afsluitwaarde van de opdrachten na een " +"'elif'\n" +" nul is, dan worden de opdrachten na de bijbehorende 'then' uitgevoerd.\n" +" Als er geen verdere 'elif' of 'else' meer is, of zodra de opdrachten na\n" +" een 'then' zijn uitgevoerd, is de 'if'-opdracht voltooid.\n" +"\n" +" De afsluitwaarde van de gehele opdracht is die van de laatst " +"uitgevoerde\n" +" deelopdracht, of nul als geen enkele 'if' of 'elif' nul opleverde." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Opdrachten uitvoeren zolang een test slaagt.\n" +"\n" +" Voert de gegeven opdrachten uit zolang de laatste opdracht achter\n" +" 'while' een afsluitwaarde van 0 heeft.\n" +"\n" +" De afsluitwaarde is die van de laatst uitgevoerde opdracht." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Opdrachten uitvoeren zolang een test niet slaagt.\n" +"\n" +" Voert de gegeven opdrachten uit zolang de laatste opdracht achter\n" +" 'until' een afsluitwaarde ongelijk aan 0 heeft.\n" +"\n" +" De afsluitwaarde is die van de laatst uitgevoerde opdracht." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Een co-proces aanmaken genaamd NAAM.\n" +"\n" +" Voert OPDRACHT asynchroon uit, met standaardinvoer en -uitvoer via\n" +" een pijp verbonden met bestandsdescriptors die toegewezen zijn aan\n" +" indices 0 en 1 van array-variabele NAAM in de uitvoerende shell.\n" +" De standaard-NAAM is \"COPROC\".\n" +"\n" +" De afsluitwaarde van coproc is 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Een shell-functie definiëren.\n" +"\n" +" Maakt een shell-functie aan die met NAAM aangeroepen kan worden en die\n" +" de gegeven OPDRACHTEN uitvoert in de context van de aanroepende shell.\n" +" Wanneer NAAM aangeroepen wordt, worden de argumenten aan de functie\n" +" doorgegeven als $0...$N, en de functienaam in $FUNCNAME.\n" +"\n" +" De afsluitwaarde is 0, tenzij NAAM onveranderbaar is." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Opdrachten als een eenheid groeperen.\n" +"\n" +" Voert een set opdrachten als een eenheid uit. Dit is een manier om\n" +" de in- en uitvoer van een hele set opdrachten om te kunnen leiden.\n" +"\n" +" De afsluitwaarde is die van de laatst uitgevoerde opdracht." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Een taak hervatten in de voorgrond.\n" +"\n" +" Hervat de gegeven achtergrondtaak of gepauzeerde taak in de voorgrond.\n" +" Dit is equivalent aan de opdracht 'fg'. De taak kan met een nummer of\n" +" met een naam aangeduid worden.\n" +"\n" +" Als na de taakaanduiding een '&' volgt, dan wordt de taak in de\n" +" achtergrond geplaatst. Dit is equivalent aan de opdracht 'bg'.\n" +"\n" +" De afsluitwaarde is die van de hervatte taak." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Een rekenkundige uitdrukking evalueren.\n" +"\n" +" Evalueert de gegeven expressie als een rekenkundige uitdrukking.\n" +" Dit is equivalent aan 'let EXPRESSIE'.\n" +"\n" +" De afsluitwaarde is 1 als de EXPRESSIE tot 0 evalueert; anders 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Een voorwaardelijke opdracht uitvoeren.\n" +"\n" +" Evalueert de gegeven conditionele expressie; afhankelijk van het " +"resultaat\n" +" is de afsluitwaarde 0 (\"waar\") of 1 (\"onwaar\"). De expressies " +"bestaan uit\n" +" dezelfde basiscomponenten als die van ingebouwde opdracht 'test', en " +"kunnen\n" +" worden gecombineerd met de volgende operatoren:\n" +"\n" +" ( EXPRESSIE ) de waarde van de gegeven expressie\n" +" ! EXPRESSIE waar als EXPRESSIE onwaar is, anders onwaar\n" +" EXPR1 && EXPR2 waar als beide expressies waar zijn, anders " +"onwaar\n" +" EXPR1 || EXPR2 onwaar als beide expressies onwaar zijn, anders " +"waar\n" +"\n" +" Als '==' of '!=' als operator gebruikt wordt, dan wordt de rechter\n" +" tekenreeks als patroon begrepen en wordt patroonherkenning uitgevoerd.\n" +" Als '=~' als operator gebruikt wordt, dan wordt de rechter tekenreeks\n" +" als een reguliere expressie begrepen.\n" +"\n" +" De operatoren '&&' en '||' evalueren de tweede expressie níét als de " +"waarde\n" +" van de eerste voldoende is om het eindresulaat te bepalen.\n" +"\n" +" De afsluitwaarde is 0 of 1, afhankelijk van EXPRESSIE." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"De betekenis van enkele algemene shell-variabelen.\n" +"\n" +" Hieronder volgt de beschrijving van een aantal variabelen. (In elke\n" +" lijst worden de elementen van elkaar gescheiden door dubbele punten.)\n" +"\n" +" BASH_VERSION versie-informatie van deze 'bash'\n" +" CDPATH lijst van mappen om te doorzoeken wanneer het argument " +"van\n" +" 'cd' niet in de huidige map voorkomt\n" +" GLOBIGNORE lijst van patronen die de bestandsnamen beschrijven die " +"bij\n" +" bestandsnaamjokertekenexpansie genegeerd moeten worden\n" +" HISTFILE naam van het bestand dat uw opdrachtengeschiedenis bevat\n" +" HISTFILESIZE maximum aantal regels dat geschiedenisbestand mag " +"bevatten\n" +" HISTIGNORE lijst van patronen die niet in geschiedenis moeten komen\n" +" HISTSIZE maximum aantal geschiedenisregels dat huidige shell " +"gebruikt\n" +" HOME het volledige pad naar uw thuismap\n" +" HOSTNAME de naam van de computer waarop deze 'bash' wordt " +"uitgevoerd\n" +" HOSTTYPE de soort CPU waarop deze 'bash' wordt uitgevoerd\n" +" IGNOREEOF het aantal te negeren Ctrl-D's alvorens de shell afsluit\n" +" MACHTYPE de soort machine waarop deze 'bash' wordt uitgevoerd\n" +" MAILCHECK hoe vaak (in seconden) 'bash' controleert op nieuwe mail\n" +" MAILPATH lijst van bestandsnamen die 'bash' controleert op nieuwe " +"mail\n" +" OSTYPE de soort Unix waarop deze 'bash' wordt uitgevoerd\n" +" PATH lijst van mappen waar opdrachten in gezocht moeten worden\n" +" PROMPT_COMMAND uit te voeren opdracht vóór het tonen van primaire " +"prompt\n" +" PS1 tekenreeks die primaire prompt beschrijft\n" +" PS2 tekenreeks die secundaire prompt beschrijft (standaard '> " +"')\n" +" PWD het volledige pad van de huidige map\n" +" SHELLOPTS lijst van ingeschakelde shell-opties\n" +" TERM soortnaam van de huidige terminal\n" +" TIMEFORMAT opmaakvoorschrift voor de uitvoer van 'time'\n" +" auto_resume niet-leeg betekent dat één opdrachtwoord op de " +"opdrachtregel\n" +" eerst opgezocht wordt in de lijst van gepauzeerde " +"taken,\n" +" en indien daar gevonden, dan wordt die taak in de " +"voorgrond\n" +" geplaatst; de waarde 'exact' betekent dat het gegeven " +"woord\n" +" exact moet overeenkomen met een opdracht in de lijst " +"van\n" +" gepauzeerde taken; de waarde 'substring' betekent dat " +"een\n" +" overeenkomst met een deeltekenreeks voldoende is; elke\n" +" andere waarde betekent dat het gegeven woord aan het " +"begin\n" +" moet staan van de opdracht van een gepauzeerde taak\n" +" histchars tekens die geschiedenisexpansie en -vervanging besturen;\n" +" het eerste teken is het geschiedenisvervangingsteken,\n" +" gewoonlijk '!'; het tweede teken is het snelle\n" +" vervangingsteken, gewoonlijk '^'; het derde teken is " +"het\n" +" geschiedeniscommentaarteken, gewoonlijk '#'\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Mappen aan de mappenstapel toevoegen.\n" +"\n" +" Voegt een map toe aan de top van de mappenstapel, of roteert de stapel\n" +" en maakt de huidige werkmap gelijk aan de nieuwe top van de stapel.\n" +" Zonder argumenten worden de bovenste twee mappen verwisseld.\n" +"\n" +" Optie:\n" +" -n onderdrukt de verandering van map bij het toevoegen van mappen\n" +" aan de stapel, zodat enkel de stapel wordt gemanipuleerd\n" +"\n" +" Argumenten:\n" +" MAP Voegt deze map toe aan de top van de mappenstapel, het de nieuwe\n" +" werkmap makend.\n" +" +N Roteert de stapel zodat de N-de map (tellend vanaf links, van\n" +" de lijst getoond door 'dirs', beginned bij nul) bovenaan komt.\n" +" -N Roteert de stapel zodat de N-de map (tellend vanaf rechts, van\n" +" de lijst getoond door 'dirs', beginned bij nul) bovenaan komt.\n" +"\n" +" De opdracht 'dirs' toont de huidige mappenstapel.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" +" mapwijziging mislukte." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Mappen van de mappenstapel verwijderen.\n" +"\n" +" Verwijdert items van de mappenstapel. Zonder argumenten verwijdert\n" +" het de bovenste map van de stapel, en maakt de huidige werkmap\n" +" gelijk aan de nieuwe bovenste map.\n" +"\n" +" Optie:\n" +" -n onderdrukt de verandering van map bij het toevoegen van mappen\n" +" aan de stapel, zodat enkel de stapel wordt gemanipuleerd\n" +"\n" +" Argumenten:\n" +" +N Verwijdert het N-de item tellend vanaf links (van de lijst\n" +" getoond door 'dirs', beginnend met nul). Bijvoorbeeld:\n" +" 'popd +0' verwijdert de eerste map, 'popd +' de tweede.\n" +" -N Verwijdert het N-de item tellend vanaf rechts (van de lijst\n" +" getoond door 'dirs', beginnend met nul). Bijvoorbeeld:\n" +" 'popd -0' verwijdert de laatste map, 'popd -1' de voorlaatste.\n" +"\n" +" De opdracht 'dirs' toont de huidige mappenstapel.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" +" mapwijziging mislukte." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"De mappenstapel tonen.\n" +"\n" +" Toont de huidige lijst van onthouden mappen. Mappen worden aan deze\n" +" lijst toegevoegd met de opdracht 'pushd', en verwijderd met 'popd'.\n" +"\n" +" Opties:\n" +" -c de mappenstapel wissen door alle elementen te verwijderen\n" +" -l paden volledig tonen, niet afgekort ten opzichte van uw thuismap\n" +" -p de mappenstapel tonen met één item per regel\n" +" -v als '-p', maar met elk item voorafgegeaan wordt door zijn " +"positie\n" +" in de stapel\n" +"\n" +" Argumenten:\n" +" +N Het N-de item tonen, tellend vanaf links, van de lijst getoond\n" +" door 'dirs' wanneer opgeroepen zonder opties, beginnend bij nul.\n" +" -N Het N-de item tonen, tellend vanaf rechts, van de lijst getoond\n" +" door 'dirs' wanneer opgeroepen zonder opties, beginnend bij nul.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" fout optrad." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Shell-opties in- of uitschakelen.\n" +"\n" +" Stelt de waarde in van elke gegeven OPTIENAAM -- van een shell-optie\n" +" die bepaald shell-gedrag beïnvloedt. Zonder opties wordt elke gegeven\n" +" OPTIENAAM getoond, of alle shell-opties als geen OPTIENAAM gegeven is,\n" +" met bij elke optie de vermelding of deze al dan niet ingeschakeld is.\n" +"\n" +" Opties:\n" +" -o de verzameling mogelijke OPTIENAMEN naar diegene die " +"gedefinieerd\n" +" zijn voor gebruik met 'set -o'\n" +" -p uitvoer produceren die herbruikbaar is als invoer\n" +" -q uitvoer onderdrukken\n" +" -s elke gegeven OPTIENAAM inschakelen\n" +" -u elke gegeven OPTIENAAM uitschakelen\n" +"\n" +" Zonder opties (of met alleen '-q') is de afsluitwaarde 0 indien " +"OPTIENAAM\n" +" ingeschakeld is, 1 indien uitgeschakeld. De afsluitwaarde is ook 1 als\n" +" een ongeldige optienaam gegeven werd, en de afsluitwaarde is 2 als een\n" +" ongeldige optie gegeven werd." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Argumenten volgens een opmaakvoorschrift opmaken en printen.\n" +"\n" +" Print de gegeven ARGUMENTEN, opgemaakt volgens de gegeven OPMAAK.\n" +"\n" +" Optie:\n" +" -v VAR de uitvoer in de variabele VAR plaatsen in plaats van deze\n" +" naar standaarduitvoer te sturen\n" +"\n" +" De OPMAAK-tekenreeks bestaat uit drie soorten tekens: gewone tekens,\n" +" die simpelweg naar standaarduitvoer gekopieerd worden; stuurtekens,\n" +" die omgezet worden en dan naar standaarduitvoer gekopieerd worden;\n" +" en opmaaksymbolen, die elk steeds het volgende argument doen printen.\n" +"\n" +" Naast de standaard %-opmaaksymbolen van printf(1), \"diouxXfeEgGcs\",\n" +" betekent %b dat de backslash-stuurtekens in het betreffende argument\n" +" omgezet moeten worden, en betekent %q dat het argument op zo'n manier\n" +" aangehaald moet worden dat het als invoer voor de shell hergebruikt\n" +" kan worden. Verder betekent %(OPMAAK)T dat datum-plus-tijd getoond\n" +" moet worden door deze opmaak aan strftime(3) mee te geven.\n" +"\n" +" De gegeven opmaak wordt zo vaak hergebruikt als nodig is om alle " +"argumenten\n" +" te consumeren. Als er minder argumenten zijn dan de opmaak verwacht, " +"dan\n" +" gedragen de overtollige opmaakspecificaties zich alsof (al naar gelang) " +"de\n" +" waarde nul of een lege tekenreeks gegeven werd.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" schrijf- of toekenningsfout optrad." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Aangeven hoe argumenten door 'readline' gecompleteerd moeten worden.\n" +"\n" +" Geeft voor elke gegeven NAAM aan hoe de argumenten gecompleteerd dienen\n" +" te worden. Zonder opties worden de bestaande " +"completeringsvoorschriften\n" +" getoond (in een vorm die als invoer hergebruikt kan worden).\n" +"\n" +" Opties:\n" +" -p bestaande completeringsvoorschriften in herbruikbare vorm tonen\n" +" -r elk genoemd voorschrift verwijderen, of alle voorschriften als\n" +" geen NAAM gegeven is\n" +" -D de gegeven completeringen en acties als standaard nemen voor\n" +" opdrachten die geen specifieke eigen completering hebben\n" +" -E de gegeven completeringen en acties als standaard nemen voor\n" +" lege opdrachten -- de completering van een lege regel\n" +" -I de gegeven completeringen en acties als standaard nemen voor\n" +" een initieel woord (gewoonlijk een opdracht)\n" +"\n" +" Als completering geprobeerd wordt, dan worden de acties toegepast in\n" +" de volgorde van de bovenstaande hoofdletteropties. Optie '-D' gaat\n" +" voor optie '-E', en beide gaan voor '-I'\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" fout optrad." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"De mogelijke completeringen tonen, afhankelijk van de gegeven opties.\n" +"\n" +" Bedoeld voor gebruik binnen een functie die mogelijke completeringen\n" +" genereert. Als het optionele argument WOORD aanwezig is, worden alleen\n" +" de daarbij passende completeringen gegenereerd.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er " +"een\n" +" fout optrad." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Completeringsopties wijzigen of tonen.\n" +"\n" +" Wijzigt de completeringsopties van elke gegeven NAAM, of als geen NAAM\n" +" gegeven is, die van de huidige completering. Als geen OPTIE gegeven " +"is,\n" +" dan worden de completeringsopties van elke gegeven NAAM getoond, of die\n" +" van de huidige completering.\n" +"\n" +" Opties:\n" +" -o OPTIE deze completeringsoptie inschakelen voor elke gegeven NAAM\n" +" -D opties wijzigen voor de standaardcompletering\n" +" -E opties wijzigen voor de completering van een lege opdracht\n" +" -I opties wijzigen voor de completering van initieel woord\n" +"\n" +" Het gebruik van '+o' i.p.v. '-o' schakelt de betreffende optie _uit_.\n" +"\n" +" Elke NAAM dient te refereren aan een opdracht waarvoor reeds een\n" +" completeringsvoorschrift gedefinieerd is via de opdracht 'complete'.\n" +" Als geen NAAM gegeven is, dan dient 'compopt' aangeroepen te worden " +"door\n" +" een functie die momenteel completeringen genereert; dan worden de " +"opties\n" +" voor die draaiende completeringsgenerator gewijzigd.\n" +"\n" +" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of voor\n" +" NAAM geen completeringsvoorschrift gedefinieerd is." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Regels inlezen in een geïndexeerde array-variabele.\n" +"\n" +" Leest regels van standaardinvoer in in de array-variabele ARRAY.\n" +" De variabele MAPFILE wordt gebruikt als geen ARRAY gegeven is.\n" +"\n" +" Opties:\n" +" -d TEKEN dit teken (i.p.v. LF) gebruiken als einde van regel\n" +" -n AANTAL maximaal dit aantal regels kopiëren (0 = alles)\n" +" -O BEGIN met toekennen beginnen bij deze index (standaard 0)\n" +" -s AANTAL dit aantal regels overslaan\n" +" -t nieuweregelteken aan eind van elke gelezen regel " +"verwijderen\n" +" -u BES.DES. uit deze bestandsdescriptor lezen i.p.v. uit " +"standaardinvoer\n" +" -C FUNCTIE deze functie evalueren na elke HOEVEELHEID regels\n" +" -c HOEVEELHEID het aantal te lezen regels voor elke aanroep van " +"FUNCTIE\n" +"\n" +" Argument:\n" +" ARRAY naam van array-variabele waarin regels ingelezen moeten " +"worden\n" +"\n" +" Als '-C' gegeven is zonder '-c', is de standaard-HOEVEELHEID 5000.\n" +" Wanneer FUNCTIE aangeroepen wordt, dan wordt hieraan de index van het\n" +" volgende array-element en de daaraan toe te kennen regel als extra\n" +" argumenten meegegeven.\n" +"\n" +" Als geen expliciet BEGIN gegeven is, wordt het array gewist alvorens\n" +" met toekennen te beginnen.\n" +"\n" +" De afsluitwaarde is 0, tenzij ARRAY alleen-lezen is of geen array is, " +"of\n" +" een ongeldige optie gegeven werd." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Regels inlezen vanuit een bestand in een array-variabele.\n" +"\n" +" Een synoniem voor 'mapfile'." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "De context geven van de huidige functie-aanroep.\n" +#~ "\n" +#~ " Zonder EXPR, resulteert " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process(): proces %5ld (%s) in de pijplijn" + +#~ msgid "Unknown Signal #" +#~ msgstr "Onbekend signaalnummer" + +# Dit is een commandonaam. +#~ msgid "true" +#~ msgstr "true" + +# Dit is een commandonaam. +#~ msgid "false" +#~ msgstr "false" + +# Dit is een commandonaam. +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "De licentie is GPLv2+: GNU GPL versie 2 of later.\n" +#~ "Zie http://gnu.org/licenses/gpl.html voor de volledige tekst.\n" diff --git a/bash-5.1/po/pl.gmo b/bash-5.1/po/pl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..be60e28c334907fc053c934e47d8a507b467a4b5 GIT binary patch literal 163418 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 LFp0JtfW`j+5+iKW literal 0 HcmV?d00001 diff --git a/bash-5.1/po/pl.po b/bash-5.1/po/pl.po new file mode 100644 index 0000000..af6bfbd --- /dev/null +++ b/bash-5.1/po/pl.po @@ -0,0 +1,5989 @@ +# Polish translation of bash +# Copyright (C) 2007, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Andrzej M. Krzysztofowicz 2006,2007. +# Jakub Bogusz 2010-2019. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-01-08 21:45+0100\n" +"Last-Translator: Jakub Bogusz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "nieprawidÅ‚owy indeks tablicy" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: usuwanie atrybutu nameref" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: nie można przeksztaÅ‚cić tablicy indeksowanej na asocjacyjnÄ…" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: błędny klucz tablicy asocjacyjnej" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: nie można przypisać do nienumerycznego indeksu" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: przy przypisaniu do tablicy asocjacyjnej należy użyć nawiasów" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nie można utworzyć: %s" + +# ??? +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: nie można znaleźć mapy klawiszy dla polecenia" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: pierwszym drukowalnym znakiem nie jest `\"'" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "brak zamykajÄ…cego `%c' w %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: brak separujÄ…cego dwukropka" + +# ??? +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "`%s': nie można usunąć dowiÄ…zania" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "rozwijanie nawiasów: nie można przydzielić pamiÄ™ci dla %s" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" +"rozwijanie nawiasów: nie udaÅ‚o siÄ™ przydzielić pamiÄ™ci dla elementów w " +"liczbie %u" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "rozwijanie nawiasów: nie udaÅ‚o siÄ™ przydzielić pamiÄ™ci dla `%s'" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "`%s': błędna nazwa aliasu" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "edycja wiersza nie zostaÅ‚a włączona" + +# ??? +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "`%s': nieprawidÅ‚owa nazwa mapy klawiszy" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nie można odczytać: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': nie znana nazwa funkcji" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s nie jest przypisany do żadnego klawisza.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s może być wywoÅ‚any przez " + +# ??? +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': nie można usunąć dowiÄ…zania" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "licznik pÄ™tli" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "ma sens tylko w pÄ™tli `for', `while' lub `until'" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Zwrócenie kontekstu wywoÅ‚ania bieżącej procedury.\n" +" \n" +" Bez WYRAÅ»ENIA zwracane jest \"$linia $plik\". Z WYRAÅ»ENIEM zwracane " +"jest\n" +" \"$linia $procedura $plik\"; dodatkowe informacje sÅ‚użą do " +"udostÄ™pnienia\n" +" Å›ladu stosu.\n" +" \n" +" Wartość WYRAÅ»ENIA okreÅ›la o ile ramek wywoÅ‚aÅ„ wzglÄ™dem bieżącej ramki\n" +" należy siÄ™ cofnąć; numer najwyższej ramki to 0.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Polecenie zwraca 0, chyba że powÅ‚oka nie wykonuje funkcji lub WYRAÅ»ENIE\n" +" jest nieprawidÅ‚owe." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "Nie ustawiono HOME" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "za dużo argumentów" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "zerowy katalog" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "Nie ustawiono OLDPWD" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "linia %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "uwaga: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: skÅ‚adnia: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: opcja wymaga argumentu" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: wymagany argument numeryczny" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: nie znaleziono" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: nieprawidÅ‚owa opcja" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nieprawidÅ‚owa nazwa opcji" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': nieprawidÅ‚owy identyfikator" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "błędna liczba ósemkowa" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "błędna liczba szesnastkowa" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "nieprawidÅ‚owa liczba" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: nieprawidÅ‚owo okreÅ›lony sygnaÅ‚" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s': nie jest to nr PID ani prawidÅ‚owe okreÅ›lenie zadania" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: zmienna tylko do odczytu" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s poza zakresem" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s poza zakresem" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: brak takiego zadania" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: brak kontroli zadaÅ„" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "brak kontroli zadaÅ„" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: ograniczony" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "ograniczony" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: nie jest to polecenie powÅ‚oki" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "błąd zapisu: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "błąd podczas ustawiania atrybutów terminala: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "błąd podczas pobierania atrybutów terminala: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: błąd przy okreÅ›laniu katalogu bieżącego: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: niejednoznaczne okreÅ›lenie zadania" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "pomoc nie jest dostÄ™pna w tej wersji" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nie można anulować definicji: %s jest tylko do odczytu" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: nie można anulować definicji" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nieprawidÅ‚owa nazwa akcji" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: brak definicji dla uzupeÅ‚nienia" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "uwaga: opcja -F może dziaÅ‚ać inaczej niż oczekiwano" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "uwaga: opcja -C może dziaÅ‚ać inaczej niż oczekiwano" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "aktualnie nie jest wykonywana funkcja dopeÅ‚niania" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "można używać tylko w funkcji" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: zmienna referencyjna nie może być tablicÄ…" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: zmienna referencyjna nie może wskazywać na siebie" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: cykliczne odwoÅ‚anie do nazwy" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "`%s': błędna nazwa zmiennej przy odwoÅ‚aniu do nazwy" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "nie można używać `-f' do tworzenia funkcji" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkcja tylko do odczytu" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: przypisanie zÅ‚ożonej tablicy z cytowaniem jest przestarzaÅ‚e" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: nie można w ten sposób unicestwić zmiennej tablicowej" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: nie można przeksztaÅ‚cić tablicy asocjacyjnej na indeksowanÄ…" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "Å‚adowanie dynamiczne nie jest dostÄ™pne" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "nie można otworzyć obiektu współdzielonego %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "nie można znaleźć %s w obiekcie współdzielonym %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: nie jest Å‚adowany dynamicznie" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "funkcja Å‚adujÄ…ca dla %s zwraca niepowodzenie (%d): nie zaÅ‚adowano" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: nie jest Å‚adowany dynamicznie" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nie można usunąć: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: jest katalogiem" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: nie jest zwykÅ‚ym plikiem" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: plik jest za duży" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: nie można uruchomić pliku binarnego" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nie można uruchomić: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "wylogowanie\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "to nie jest powÅ‚oka logowania: użyj `exit'" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "IstniejÄ… zatrzymane zadania.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "IstniejÄ… dziaÅ‚ajÄ…ce zadania.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "nie znaleziono polecenia" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "specyfikacja historii" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: nie udaÅ‚o siÄ™ otworzyć pliku tymczasowego: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "bieżące" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "zadanie %d uruchomiono bez kontroli zadaÅ„" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: niedozwolona opcja -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opcja wymaga argumentu -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "zapamiÄ™tywanie Å›cieżek poleceÅ„ w tablicy asocjacyjnej wyłączone" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tablica asocjacyjna pusta\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "trafienia\tpolecenie\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Polecenia powÅ‚oki pasujÄ…ce do sÅ‚owa kluczowego `" +msgstr[1] "Polecenia powÅ‚oki pasujÄ…ce do słów kluczowych `" +msgstr[2] "Polecenia powÅ‚oki pasujÄ…ce do słów kluczowych `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"żaden temat pomocy nie pasuje do `%s'. Spróbuj `help help', `man -k %s'\n" +"lub `info %s'." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nie można otworzyć: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Te polecenia powÅ‚oki sÄ… poleceniami wewnÄ™trznymi. Napisz `help', aby\n" +"zobaczyć listÄ™.\n" +"Napisz `help nazwa', aby otrzymać wiÄ™cej informacji o funkcji `nazwa'.\n" +"Użyj `info bash', aby otrzymać wiÄ™cej informacji ogólnych o powÅ‚oce.\n" +"Użyj `man -k' lub `info', aby otrzymać wiÄ™cej informacji o poleceniach z " +"tej\n" +"listy.\n" +"\n" +"Gwiazdka (*) po nazwie oznacza, że dane polecenie jest wyłączone.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "nie można używać wiÄ™cej niż jednego spoÅ›ród -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "pozycja historii" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: nieprawidÅ‚owy znacznik czasu" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: rozwiniÄ™cie wg historii nie powiodÅ‚o siÄ™" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib nie powiodÅ‚o siÄ™" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "nie można używać innych opcji przy `-x'" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumentami muszÄ… być numery procesów lub zadaÅ„" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Nieznany błąd" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "spodziewano siÄ™ wyrażenia" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: nie jest tablicÄ… indeksowanÄ…" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: nieprawidÅ‚owo okreÅ›lony deskryptor pliku" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: nieprawidÅ‚owy deskryptor pliku: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: błędna liczba linii" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: błędny poczÄ…tek tablicy" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: błędna liczba linii miÄ™dzy wywoÅ‚aniami" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "pusta nazwa zmiennej tablicowej" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "wymagana obsÅ‚uga zmiennych tablicowych" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': brak znaku formatujÄ…cego" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "`%c': błędne okreÅ›lenie formatu czasu" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "`%c': nieprawidÅ‚owy znak formatujÄ…cy" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "uwaga: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "problem z analizÄ… formatu: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "brak cyfry szesnastkowej dla \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "brak cyfry unikodowej dla \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "brak innego katalogu" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: nieprawidÅ‚owy argument" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "pusty stos katalogów" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "indeks stosu katalogów" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Wypisanie listy aktualnie pamiÄ™tanych katalogów. Katalogi umieszczane sÄ…\n" +" na liÅ›cie za pomocÄ… polecenia `pushd'; można cofać siÄ™ w obrÄ™bie listy\n" +" za pomocÄ… polecenia `popd'.\n" +" \n" +" Opcje:\n" +" -c\twyczyszczenie stosu katalogów poprzez usuniÄ™cie wszystkich " +"elementów\n" +" -l\tniewypisywanie katalogów wzglÄ™dem kat. domowego użytkownika\n" +" \tw postaci skróconej z tyldÄ…\n" +" -p\twypisanie stosu katalogów po jednym wpisie w linii\n" +" -v\twypisanie stosu katalogów po jednym wpisie w linii, poprzedzonych\n" +" \tpozycjÄ… na stosie\n" +" \n" +" Argumenty:\n" +" +N\tWypisanie N-tej pozycji liczÄ…c od lewej strony listy wypisywanej\n" +" \tprzez dirs wywoÅ‚ane bez opcji, poczÄ…wszy od zera.\n" +" \n" +" -N\tWypisanie N-tej pozycji liczÄ…c od prawej strony listy wypisywanej\n" +"\tprzez dirs wywoÅ‚ane bez opcji, poczÄ…wszy od zera." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Dodanie katalogu na wierzchoÅ‚ku stosu katalogów lub rotacja stosu czyniÄ…ca\n" +" jego nowym wierzchoÅ‚kiem bieżący katalog roboczy. WywoÅ‚ane bez\n" +" argumentów zamienia na stosie dwa najwyższe katalogi.\n" +" \n" +" Opcje:\n" +" -n\tPominiÄ™cie zmiany katalogu podczas umieszczania katalogów na\n" +" \tstosie tak, że zmieniany jest tylko stos.\n" +" \n" +" Argumenty:\n" +" +N\tRotacja stosu czyniÄ…ca jego wierzchoÅ‚kiem N-ty katalog (liczÄ…c\n" +" \tod lewej strony listy wypisywanej przez `dirs', poczÄ…wszy od zera).\n" +" \n" +" -N\tRotacja stosu czyniÄ…ca jego wierzchoÅ‚kiem N-ty katalog (liczÄ…c\n" +" \tod prawej strony listy wypisywanej przez `dirs', poczÄ…wszy od zera).\n" +" \n" +" katalog\tUmieszczenie KATALOGU na wierzchoÅ‚ku stosu i uczynienie go\n" +" \tnowym bieżącym katalogiem roboczym.\n" +" \n" +" Zawartość stosu katalogów można zobaczyć za pomocÄ… polecenia `dirs'." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"UsuniÄ™cie pozycji ze stosu katalogów. WywoÅ‚ane bez argumentów usuwa\n" +" katalog z wierzchoÅ‚ka stosu i zmienia katalog bieżący na katalog\n" +" bÄ™dÄ…cy nowym wierzchoÅ‚kiem stosu.\n" +" \n" +" Opcje:\n" +" -n\tPominiÄ™cie zmiany katalogu podczas usuwania katalogów ze stosu\n" +" \ttak, że zmieniany jest tylko stos.\n" +" \n" +" Argumenty:\n" +" +N\tUsuniÄ™cie ze stosu N-tej pozycji liczÄ…c od lewej strony listy\n" +" \twypisywanej przez `dirs', poczÄ…wszy od zera. Na przykÅ‚ad: `popd +0'\n" +" \tusuwa pierwszy katalog, `popd +1' usuwa drugi.\n" +" \n" +" -N\tUsuniÄ™cie ze stosu N-tej pozycji liczÄ…c od prawej strony listy\n" +" \twypisywanej przez `dirs', poczÄ…wszy od zera. Na przykÅ‚ad: `popd -0'\n" +" \tusuwa ostatni katalog, `popd -1' usuwa poprzedni.\n" +" \n" +" Zawartość stosu katalogów można zobaczyć za pomocÄ… polecenia `dirs'." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: nieprawidÅ‚owo okreÅ›lony limit czasu" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "błąd odczytu: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "wyjÅ›cie przez `return' możliwe tylko z funkcji lub skryptu" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "nie można jednoczeÅ›nie anulować definicji funkcji i zmiennej" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: nie jest zmiennÄ… tablicowÄ…" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: nie jest funkcjÄ…" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: nie można wyeksportować" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "licznik przesuniÄ™cia" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "nie można opcji powÅ‚oki jednoczeÅ›nie ustawić i unieważnić" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: nieprawidÅ‚owa nazwa opcji powÅ‚oki" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "wymagany argument w postaci nazwy pliku" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: nie znaleziono pliku" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "nie można wstrzymać" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "nie można wstrzymać powÅ‚oki logowania" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s jest aliasem do %s'\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s jest sÅ‚owem kluczowym powÅ‚oki\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s jest funkcjÄ…\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s jest specjalnym wewnÄ™trznym poleceniem powÅ‚oki\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s jest wewnÄ™trznym poleceniem powÅ‚oki\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s jest %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "Å›cieżka do %s jest zapamiÄ™tana (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: nieprawidÅ‚owy argument stanowiÄ…cy ograniczenie" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': zÅ‚e polecenie" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: nie można odczytać ograniczenia: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "ograniczenie" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: nie można zmienić ograniczenia: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "liczba ósemkowa" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': nieprawidÅ‚owy operator trybu symbolicznego" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': nieprawidÅ‚owy znak trybu symbolicznego" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " linia " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "ostatnie polecenie: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Przerywanie..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:462 +msgid "unknown command error" +msgstr "nieznany błąd polecenia" + +#: error.c:463 +msgid "bad command type" +msgstr "zÅ‚y rodzaj polecenia" + +#: error.c:464 +msgid "bad connector" +msgstr "zÅ‚y łącznik" + +#: error.c:465 +msgid "bad jump" +msgstr "zÅ‚y skok" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: nieustawiona zmienna" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aprzekroczony czas oczekiwania na dane wejÅ›ciowe: auto-wylogowanie\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "nie można przekierować standardowego wejÅ›cia z /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': nieprawidÅ‚owy znak formatujÄ…cy" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: koproces [%d:%s] nadal istnieje" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "błąd potoku" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: przekroczono maksymalny poziom zagnieżdżenia polecenia eval (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia polecenia source (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia funkcji (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: ograniczony: nie można podawać `/' w nazwach poleceÅ„" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: nie znaleziono polecenia" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: zÅ‚y interpreter" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: nie można uruchomić pliku binarnego: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "`%s' jest specjalnym poleceniem wewnÄ™trznym" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "nie można skopiować deskryptora pliku %d do %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "przekroczone ograniczenie poziomu rekursji dla wyrażenia" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "niedomiar stosu rekursji" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "błąd skÅ‚adniowy w wyrażeniu" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "próba przypisania do nie-zmiennej" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "błąd skÅ‚adniowy w przypisaniu zmiennej" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "dzielenie przez 0" + +# ??? +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "błąd: zÅ‚y prefiks operatora przypisujÄ…cego" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "spodziewano siÄ™ `:' w wyrażeniu warunkowym" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "wykÅ‚adnik mniejszy niż 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" +"spodziewany identyfikator po operatorze preinkrementacji lub predekrementacji" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "brakujÄ…cy `)'" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "błąd skÅ‚adni: spodziewany argument" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "błąd skÅ‚adni: nieprawidÅ‚owy operator arytmetyczny" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (błędny znacznik to \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "nieprawidÅ‚owa podstawa arytmetyczna" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: błędna liczba linii" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "wartość za duża na podstawÄ™" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: błąd w wyrażeniu\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: niemożliwy dostÄ™p do katalogów nadrzÄ™dnych" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "nie można wyłączyć trybu nieblokujÄ…cego dla deskryptora %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "nie można przydzielić nowego deskryptora pliku dla wejÅ›cia basha z %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: bufor dla nowego deskryptora %d już istnieje" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +# ??? +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "proces o PID %d wystÄ™puje w dziaÅ‚ajÄ…cym zadaniu %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "usuwanie zatrzymanego zadania %d z grupÄ… procesów %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) oznaczony jako nadal żywy" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: brak takiego PID-u" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "SygnaÅ‚ %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "ZakoÅ„czono" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Zatrzymano" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Zatrzymano(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "DziaÅ‚a" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "ZakoÅ„czono(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Kod wyjÅ›cia %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Stan nieznany" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(zrzut pamiÄ™ci) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (katalog: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid potomka (%ld na %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: PID %ld nie jest potomkiem tej powÅ‚oki" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Brak rekordu dla procesu %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: zadanie %d jest zatrzymane" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: brak takiego zadania" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: zadanie zostaÅ‚o przerwane" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: zadanie %d już pracuje w tle" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" +"waitchld: wyłączanie WNOHANG w celu unikniÄ™cia nieskoÅ„czonego oczekiwania" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: linia %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (zrzut pamiÄ™ci)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(katalog: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp nie powiodÅ‚o siÄ™" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: brak kontroli zadaÅ„ w tle" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: dyscyplina linii" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "nie można ustawić grupy procesów terminala (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "w tej powÅ‚oce nie ma kontroli zadaÅ„" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: zaÅ‚ożenie, że %s nie jest speÅ‚nione\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: spartaczone zaÅ‚ożenie\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "nieznany" + +# ??? +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: nieprawidÅ‚owy blok na liÅ›cie wolnych bloków" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: wywoÅ‚ane dla bloku, który już zostaÅ‚ zwolniony" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: wywoÅ‚ane dla bloku, który nie zostaÅ‚ przydzielony" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: wykryto niedomiar; mh_nbytes poza zakresem" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: wykryto niedomiar; mh_nbytes poza zakresem" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: rozmiar poczÄ…tkowy i koÅ„cowy fragmentu sÄ… różne" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: wywoÅ‚ane dla bloku, który nie zostaÅ‚ przydzielony" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: wykryto niedomiar; mh_nbytes poza zakresem" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: wykryto niedomiar; mh_nbytes poza zakresem" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: rozmiar poczÄ…tkowy i koÅ„cowy fragmentu sÄ… różne" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: tablica alokacji jest peÅ‚na podczas FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p już znajduje siÄ™ w tablicy jako przydzielony?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p już znajduje siÄ™ w tablicy jako wolny?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "nieprawidÅ‚owa podstawa" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: nieznany host" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: nieznana usÅ‚uga" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: źle okreÅ›lona Å›cieżka sieciowa" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "operacje sieciowe nie sÄ… wspierane" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: nie można zmienić lokalizacji (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: nie można zmienić lokalizacji (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Masz pocztÄ™ w $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Masz nowÄ… pocztÄ™ w $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Poczta w %s jest przeczytana\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "błąd skÅ‚adni: oczekiwano wyrażenia arytmetycznego" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "błąd skÅ‚adni: oczekiwany `;'" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "błąd skÅ‚adni: `((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: zÅ‚y rodzaj instrukcji %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"dokument miejscowy w linii %d ograniczony koÅ„cem pliku (oczekiwano `%s')" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: instrukcja przekierowania `%d' poza zakresem" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) przekracza SIZE_MAX (%lu): linia " +"skrócona" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "przekroczono maksymalnÄ… liczbÄ™ dokumentów w miejscu" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "nieoczekiwany EOF podczas poszukiwania pasujÄ…cego `%c'" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "nieoczekiwany EOF podczas poszukiwania `]]'" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "błąd skÅ‚adni w wyrażeniu warunkowym: nieoczekiwany znacznik `%s'" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "błąd skÅ‚adni w wyrażeniu warunkowym" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "nieoczekiwany znacznik `%s', oczekiwano `)'" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "oczekiwano `)'" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "nieoczekiwany argument `%s' jednoargumentowego operatora warunkowego" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "nieoczekiwany argument jednoargumentowego operatora warunkowego" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "nieoczekiwany argument `%s', oczekiwano dwuarg. operatora warunkowego" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "oczekiwano dwuargumentowego operatora warunkowego" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "nieoczekiwany argument `%s' dwuargumentowego operatora warunkowego" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "nieoczekiwany argument dwuargumentowego operatora warunkowego" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "nieoczekiwany znacznik `%c' w poleceniu warunkowym" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "nieoczekiwany znacznik `%s' w poleceniu warunkowym" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "nieoczekiwany znacznik %d w poleceniu warunkowym" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "błąd skÅ‚adni przy nieoczekiwanym znaczniku `%s'" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "błąd skÅ‚adni przy `%s'" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "błąd skÅ‚adni: nieoczekiwany koniec pliku" + +#: parse.y:6365 +msgid "syntax error" +msgstr "błąd skÅ‚adni" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Użyj \"%s\", aby opuÅ›cić tÄ™ powÅ‚okÄ™.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "nieoczekiwany EOF podczas poszukiwania pasujÄ…cego `)'" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "uzupeÅ‚nienie: nie znaleziono funkcji `%s'" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: możliwe zapÄ™tlenie wznowieÅ„" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: zÅ‚y łącznik `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: nieprawidÅ‚owy deskryptor pliku" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: pusty wskaźnik pliku" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: `%c': nieprawidÅ‚owy znak formatujÄ…cy" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "deskryptor pliku poza zakresem" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: niejednoznaczne przekierowanie" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: nie można nadpisać istniejÄ…cego pliku" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: ograniczony: nie można przekierować wyjÅ›cia" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "nie można utworzyć pliku tymczasowego dla dokumentu miejscowego: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: nie można przypisać deskryptora pliku do zmiennej" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port nie sÄ… wspierane bez sieci" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "błąd przekierowania: nie można powielić deskryptora pliku" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "nie można znaleźć /tmp, proszÄ™ o utworzenie!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp musi być prawidÅ‚owÄ… nazwÄ… katalogu" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "tryb Å‚adnego wypisywania jest ignorowany w powÅ‚okach interaktywnych" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: nieprawidÅ‚owa opcja" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "nie można ustawić uid-a na %d: efektywny uid %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "nie można ustawić gid-a na %d: efektywny gid %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "nie można uruchomić debuggera; tryb diagnostyczny wyłączony" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: jest katalogiem" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Nie mam nazwy!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, wersja %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Użycie:\t%s [dÅ‚uga opcja GNU] [opcja] ...\n" +"\t%s [dÅ‚uga opcja GNU] [opcja] plik-skryptu ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "DÅ‚ugie opcje GNU:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Opcje powÅ‚oki:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD lub -c polecenie lub -O shopt_option\t\t(tylko wywoÅ‚anie)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s lub -o opcja\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Aby uzyskać wiÄ™cej informacji o opcjach powÅ‚oki, napisz `%s -c \"help set" +"\"'.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Aby uzyskać wiÄ™cej informacji o poleceniach wewnÄ™trznych powÅ‚oki,\n" +"napisz `%s -c help'.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Do zgÅ‚aszania błędów należy używać polecenia `bashbug'.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "strona domowa basha: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Ogólna pomoc przy użytkowaniu oprogramowania GNU: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: nieprawidÅ‚owa operacja" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Błędny sygnaÅ‚" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Rozłączenie" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Przerwanie" + +#: siglist.c:58 +msgid "Quit" +msgstr "WyjÅ›cie" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Niedozwolona instrukcja" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "PuÅ‚apka debuggera/breakpoint" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Instrukcja ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "PuÅ‚apka EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Błąd w obliczeniach zmiennoprzecinkowych" + +#: siglist.c:86 +msgid "Killed" +msgstr "Unicestwiony" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Błąd szyny" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Naruszenie ochrony pamiÄ™ci" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Błędne wywoÅ‚anie systemowe" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Przerwany potok" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Budzik" + +#: siglist.c:110 +msgid "Terminated" +msgstr "ZakoÅ„czony" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "NagÅ‚e żądanie we/wy" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Zatrzymany (sygnaÅ‚)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Kontynuacja" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Åšmierć lub zatrzymanie potomka" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Zatrzymany (wejÅ›cie z tty)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Zatrzymany (wyjÅ›cie na tty)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "We/wy gotowe" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Przekroczony limit procesora" + +#: siglist.c:154 +msgid "File limit" +msgstr "Przekroczony limit pliku" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarm (wirtualny)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarm (profiler)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Okno zmienione" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Zasoby utracone" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "SygnaÅ‚ użytkownika 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "SygnaÅ‚ użytkownika 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "Dane wejÅ›ciowe HFT" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "Bliska awaria zasilania" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "Bliska awaria systemu" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "Przeniesienie procesu na inny procesor" + +#: siglist.c:198 +msgid "programming error" +msgstr "Błąd programowania" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "Nadany tryb monitora HFT" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "Wycofany tryb monitora HFT" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "Sekwencja dźwiÄ™kowa HFT zakoÅ„czona" + +#: siglist.c:214 +msgid "Information request" +msgstr "Żądanie informacji" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Nieznany sygnaÅ‚ #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "zÅ‚e podstawienie: brak zamykajÄ…cego `%s' w %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: nie można przypisać listy do elementu tablicy" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "nie można utworzyć potoku dla podstawienia procesu" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "nie można utworzyć procesu potomnego dla podstawienia procesu" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "nie można otworzyć nazwanego potoku %s do odczytu" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "nie można otworzyć nazwanego potoku %s do zapisu" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "nie można powielić nazwanego potoku %s jako deskryptor %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "podstawienie polecenia: zignorowano zerowy bajt na wejÅ›ciu" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "nie można utworzyć potoku dla podstawienia polecenia" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "nie można utworzyć procesu potomnego dla podstawienia polecenia" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: nie można powielić potoku jako deskryptora 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: nieprawidÅ‚owa nazwa zmiennej przy odwoÅ‚aniu do nazwy" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: błędne rozwiniÄ™cie niebezpoÅ›rednie" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "`%s': błędna nazwa zmiennej" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parametr nieustawiony" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametr pusty lub nieustawiony" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: wyrażenie dla podÅ‚aÅ„cucha < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: zÅ‚e podstawienie" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: nie można przypisywać w ten sposób" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"przyszÅ‚e wersje powÅ‚oki bÄ™dÄ… wymuszać obliczenie jako podstawienie " +"arytmetyczne" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "zÅ‚e podstawienie: brak zamykajÄ…cego \"`\" w %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "brak pasujÄ…cego: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "oczekiwano argumentu" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: oczekiwano wyrażenia caÅ‚kowitego" + +#: test.c:265 +msgid "`)' expected" +msgstr "oczekiwano `)'" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "oczekiwano `)', znaleziono %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: oczekiwano operatora dwuargumentowego" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: oczekiwano operatora jednoargumentowego" + +#: test.c:881 +msgid "missing `]'" +msgstr "brakujÄ…cy `]'" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "błąd skÅ‚adni: oczekiwany `;'" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "nieprawidÅ‚owy numer sygnaÅ‚u" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "obsÅ‚uga puÅ‚apki: przekroczono maksymalny poziom obsÅ‚ugi puÅ‚apek (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: zÅ‚a wartość trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: obsÅ‚uga sygnaÅ‚u jest ustawiona na SIG_DFL, wysyÅ‚ajÄ…c %d " +"(%s) do siebie" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: zÅ‚y sygnaÅ‚ %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "błąd importu definicji funkcji dla `%s'" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "poziom powÅ‚oki (%d) jest za duży, ustawiono na 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: brak kontekstu funkcji w bieżącym zakresie" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: nie można przypisać wartoÅ›ci do zmiennej" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: przypisanie wartoÅ›ci caÅ‚kowitej przy odwoÅ‚aniu do nazwy" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: brak kontekstu funkcji w bieżącym zakresie" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s ma pusty exportstr" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "nieprawidÅ‚owy znak %d w exportstr dla %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "brak `=' w exportstr dla %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: nagłówek shell_variables poza kontekstem funkcji" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: brak kontekstu global_variables" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: nagłówek shell_variables poza zakresem tymczasowego Å›rodowiska" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: nie można otworzyć jako PLIK" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: nieprawidÅ‚owa wartość dla deskryptora pliku do Å›ledzenia" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: wartość zgodnoÅ›ci poza zakresem" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licencja GPLv3+: GNU GPL wersja 3 lub późniejsza \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, wersja %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"To oprogramowanie jest wolnodostÄ™pne; można je swobodnie zmieniać i " +"rozpowszechniać." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Nie ma Å»ADNEJ GWARANCJI w granicach dopuszczanych przez prawo." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: nie można przydzielić %lu bajtów (przydzielono %lu)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: nie można przydzielić %lu bajtów" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: nie można przydzielić %lu bajtów (przydzielono %lu)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: nie można przydzielić %lu bajtów" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nazwa[=wartość] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] nazwa [nazwa ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVSX] [-m mapa] [-f plik] [-q nazwa] [-u nazwa] [-r sekwencja] [-" +"x sekwencja:polecenie-powÅ‚oki] [sekwencja:funkcja-readline lub polecenie-" +"readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [polecenie-wbudowane [arg ... ]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [wyrażenie]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [katalog]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] polecenie [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [nazwa[=wartość] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nazwa[=wartość] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [opcja] nazwa[=wartość] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f plik] [nazwa ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts Å‚aÅ„cuch-opcji nazwa [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a nazwa] [polecenie [argumenty ...]] [przekierowanie ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e nazwa-ed] [-lnr] [pierwszy] [ostatni] lub fc -s [wz=zam] [polecenie]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [zadanie]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [zadanie ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p Å›cieżka] [-dt] [nazwa ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [wzorzec ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d offset] [n] lub history -anrw [plik] lub history -ps arg " +"[arg ...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [zadanie ...] lub jobs -x polecenie [argumenty]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [zadanie ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sygnaÅ‚ | -n numer-sygnaÅ‚u | -sygnaÅ‚] pid | zadanie ... lub kill -l " +"[sygnaÅ‚]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a tablica] [-d separator] [-i tekst] [-n liczba] [-N liczba] [-" +"p zachÄ™ta] [-t czas] [-u fd] [nazwa ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nazwa-opcji] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [nazwa ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [nazwa[=wartość] ...] lub export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [aAf] [nazwa[=wartość] ...] lub readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source plik [argumenty]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". plik [argumenty]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [wyrażenie]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] sygnaÅ‚ ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] nazwa [nazwa ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ograniczenie]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [uprawnienia]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAZWA [in SÅOWA ... ] ; do POLECENIA; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( wyr1; wyr2; wyr3 )); do POLECENIA; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAZWA [in SÅOWA ... ;] do POLECENIA; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] potok" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case SÅOWO in [WZORZEC [| WZORZEC]...) POLECENIA ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if POLECENIA; then POLECENIA; [ elif POLECENIA; then POLECENIA; ]... [ else " +"POLECENIA; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while POLECENIA; do POLECENIA; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until POLECENIA; do POLECENIA; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAZWA] polecenie [przekierowania]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function nazwa { POLECENIA ; } lub nazwa () { POLECENIA ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ POLECENIA ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "zadanie [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( wyrażenie ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ wyrażenie ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "zmienne - nazwy i znaczenie niektórych zmiennych powÅ‚oki" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | katalog]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [nazwa-opcji ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [argumenty]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opcja] [-A akcja] [-G wzorzec-" +"glob] [-W lista-słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P " +"przedrostek] [-S przyrostek] [nazwa ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o opcja] [-A akcja] [-G wzorzec-glob] [-W lista-" +"słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P przedrostek ] [-S " +"przyrostek] [sÅ‚owo]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o opcja] [-DEI] [nazwa ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d separator] [-n liczba] [-O poczÄ…tek] [-s liczba] [-t] [-u fd] [-" +"C wywoÅ‚anie] [-c co-ile] [tablica]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d ogranicznik] [-n liczba] [-O poczÄ…tek] [-s liczba] [-t] [-u " +"fd] [-C wywoÅ‚anie] [-c krok] [tablica]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definiowanie i wyÅ›wietlanie aliasów.\n" +" \n" +" Bez argumentów `alias' wypisuje na standardowym wyjÅ›ciu listÄ™ aliasów\n" +" w postaci alias NAZWA=WARTOŚĆ.\n" +" \n" +" W przeciwnym przypadku definiowany jest alias dla każdej NAZWY, dla " +"której\n" +" podano WARTOŚĆ. Spacja na koÅ„cu WARTOÅšCI powoduje, że podczas " +"rozwijania\n" +" tego aliasu podstawienie aliasów bÄ™dzie przeprowadzone także dla\n" +" nastÄ™pnego sÅ‚owa.\n" +" \n" +" Opcje:\n" +" -p\twypisanie wszystkich zdefiniowanych aliasów w formacie do\n" +" \tponownego użycia\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Polecenie alias zwraca prawdÄ™, chyba że poda siÄ™ NAZWĘ, dla której nie\n" +" zdefiniowano aliasu." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Usuwa wszystkich NAZW z listy zdefiniowanych aliasów.\n" +" \n" +" Opcje:\n" +" -a\tusuniÄ™cie wszystkich definicji aliasów\n" +" \n" +" Zwracana jest prawda, chyba że NAZWA nie jest istniejÄ…cym aliasem." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Ustawianie przypisaÅ„ klawiszy i zmiennych Readline.\n" +" \n" +" Przypisanie sekwencji klawiszy do funkcji Readline lub makra albo\n" +" ustawienie zmiennej Readline. SkÅ‚adnia pozbawiona opcji jest równoważna\n" +" stosowanej w ~/.inputrc, ale musi być przekazana jako jeden argument, " +"np.:\n" +" bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Opcje:\n" +" -m MAPA Użycie MAPY jako mapy klawiatury na czas tego\n" +" polecenia. Dozwolone nazwy map klawiatury to " +"emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command i vi-insert.\n" +" -l Wypisanie nazw funkcji.\n" +" -P Wypisanie nazw funkcji i dowiÄ…zaÅ„.\n" +" -p Wypisanie funkcji i dowiÄ…zaÅ„ w postaci nadajÄ…cej " +"siÄ™\n" +" do użycia jako dane wejÅ›ciowe.\n" +" -S Wypisanie sekwencji klawiszy wywoÅ‚ujÄ…cych makra " +"oraz\n" +" ich wartoÅ›ci.\n" +" -s Wypisanie sekwencji klawiszy wywoÅ‚ujÄ…cych makra " +"oraz\n" +" ich wartoÅ›ci w postaci nadajÄ…cej siÄ™ do użycia " +"jako\n" +" dane wejÅ›ciowe.\n" +" -V Wypisanie nazw zmiennych i ich wartoÅ›ci.\n" +" -v Wypisanie nazw zmiennych i ich wartoÅ›ci w postaci\n" +" nadajÄ…cej siÄ™ do użycia jako dane wejÅ›ciowe.\n" +" -q nazwa-funkcji OkreÅ›lenie, które klawisze wywoÅ‚ujÄ… zadanÄ… " +"funkcjÄ™.\n" +" -u nazwa-funkcji Anulowanie wszystkich dowiÄ…zaÅ„ dla klawiszy\n" +" przypisanych do funkcji o podanej nazwie.\n" +" -r sekwencja UsuniÄ™cie dowiÄ…zania dla SEKWENCJI klawiszy.\n" +" -f plik Odczyt dowiÄ…zaÅ„ dla klawiszy z podanego PLIKU.\n" +" -x sekwencja:polecenie-powÅ‚oki\tPowoduje uruchomienie POLECENIA-" +"POWÅOKI\n" +" \t\t\t\tgdy wprowadzona zostanie podana SEKWENCJA klawiszy.\n" +" -X Lista sekwencji klawiszy przypisanych przez -x " +"oraz\n" +" powiÄ…zane polecenia w postaci nadajÄ…cej siÄ™ do " +"użycia\n" +" jako dane wejÅ›ciowe.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" bind zwraca 0, chyba że podano nieznanÄ… opcjÄ™ lub wystÄ…pi błąd." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"WyjÅ›cie z pÄ™tli for, while lub until.\n" +" \n" +" WyjÅ›cie z pÄ™tli FOR, WHILE lub UNTIL. JeÅ›li podano N, sterowanie " +"wychodzi\n" +" za N-tÄ… zagnieżdżonÄ… pÄ™tlÄ™.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Instrukcja zwraca prawdÄ™, chyba że N jest mniejsze niż 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Wznowienie pÄ™tli for, while lub until.\n" +" \n" +" Wznowienie nastÄ™pnej iteracji otaczajÄ…cej pÄ™tli FOR, WHILE lub UNTIL.\n" +" JeÅ›li podano N, to wznawiana jest N-ta otaczajÄ…ca pÄ™tla.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Instrukcja zwraca 0, chyba że N jest mniejsze niż 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"WywoÅ‚anie polecenia wbudowanego powÅ‚oki.\n" +" \n" +" WywoÅ‚anie POLECENIA-WBUDOWANEGO z argumentami ARG bez wykonywania\n" +" wyszukiwania polecenia. Jest to przydatne w przypadku ponownego\n" +" implementowania polecenia wbudowanego jako funkcji powÅ‚oki i " +"wywoÅ‚ywania\n" +" polecenia wbudowanego z wewnÄ…trz tej funkcji.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Instrukcja zwraca stan wyjÅ›ciowy POLECENIA-WBUDOWANEGO lub faÅ‚sz, jeÅ›li\n" +" POLECENIE-WBUDOWANE nie jest poleceniem wbudowanym powÅ‚oki." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Zwrócenie kontekstu wywoÅ‚ania bieżącej procedury.\n" +" \n" +" Bez WYRAÅ»ENIA zwracane jest \"$linia $plik\". Z WYRAÅ»ENIEM zwracane " +"jest\n" +" \"$linia $procedura $plik\"; dodatkowe informacje sÅ‚użą do " +"udostÄ™pnienia\n" +" Å›ladu stosu.\n" +" \n" +" Wartość WYRAÅ»ENIA okreÅ›la o ile ramek wywoÅ‚aÅ„ wzglÄ™dem bieżącej ramki\n" +" należy siÄ™ cofnąć; numer najwyższej ramki to 0.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Polecenie zwraca 0, chyba że powÅ‚oka nie wykonuje funkcji lub WYRAÅ»ENIE\n" +" jest nieprawidÅ‚owe." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Zmiana bieżącego katalogu powÅ‚oki.\n" +" \n" +" Zmiana bieżącego katalogu na KATALOG. DomyÅ›lnym KATALOGIEM jest wartość\n" +" zmiennej powÅ‚oki HOME.\n" +" \n" +" Zmienna CDPATH okreÅ›la Å›cieżkÄ™ przeszukiwania w poszukiwaniu katalogu\n" +" zawierajÄ…cego KATALOG. Alternatywne nazwy katalogów sÄ… w CDPATH " +"rozdzielone\n" +" dwukropkami (:). Pusta nazwa katalogu oznacza to samo, co katalog\n" +" bieżący. JeÅ›li KATALOG zaczyna siÄ™ od ukoÅ›nika (/), to CDPATH nie\n" +" nie jest używane.\n" +" \n" +" Gdy katalog nie zostanie znaleziony, a ustawiona jest zmienna powÅ‚oki\n" +" `cdable_vars', to nastÄ™puje próba użycia podanej nazwy jako nazwy " +"zmiennej.\n" +" JeÅ›li zmienna ta ma wartość, to jako KATALOG jest używana jej wartość.\n" +" \n" +" Opcje:\n" +" -L\twymuszenie Å›ledzenia dowiÄ…zaÅ„ symbolicznych: rozwiÄ…zanie\n" +" \t\tdowiÄ…zaÅ„ w KATALOGU po przetworzeniu wszystkich `..'\n" +" -P\tkorzystanie z fizycznej struktury katalogów zamiast Å›ledzenia\n" +" \t\tdowiÄ…zaÅ„ symbolicznych: rozwiÄ…zanie dowiÄ…zaÅ„ w KATALOGU przed\n" +" \t\tprzetworzeniem wszystkich `..'\n" +" -e\tjeÅ›li podano opcjÄ™ -P, a nie można okreÅ›lić bieżącego katalogu,\n" +" \t\tpolecenie koÅ„czy siÄ™ stanem niezerowym\n" +" -@ na systemach obsÅ‚ugujÄ…cych je, zaprezentowanie pliku majÄ…cego\n" +" \t\trozszerzone atrybuty jako katalogu zawierajÄ…cego atrybuty pliku\n" +" \n" +" DomyÅ›lne jest Å›ledzenie dowiÄ…zaÅ„ symbolicznych, jak z opcjÄ… `-L'.\n" +" `..' jest przetwarzane przez usuniÄ™cie bezpoÅ›redniego poprzedniego\n" +" elementu Å›cieżki przed ukoÅ›nikiem lub poczÄ…tkiem KATALOGU.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Polecenie zwraca 0 jeÅ›li katalog zostaÅ‚ zmieniony oraz $PWD zostaÅ‚o\n" +" zmienione pomyÅ›lnie w przypadku użycia -P; w przeciwnym razie zwraca\n" +" wartość niezerowÄ…." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Wypisanie nazwy bieżącego katalogu roboczego.\n" +" \n" +" Opcje:\n" +" -L\twypisanie wartoÅ›ci $PWD jeÅ›li okreÅ›la bieżący katalog roboczy\n" +" -P\twypisanie katalogu fizycznego, bez dowiÄ…zaÅ„ symbolicznych\n" +" \n" +" DomyÅ›lnie `pwd' zachowuje siÄ™ tak, jak z opcjÄ… `-L'.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Polecenie zwraca 0, chyba że podano nieprawidÅ‚owÄ… opcjÄ™ lub katalog\n" +" bieżący nie może być odczytany." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Polecenie puste.\n" +" \n" +" Å»adnego efektu; polecenie nic nie robi.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zawsze zwracana jest prawda." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Zwrócenie wyniku pozytywnego.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zawsze zwracana jest prawda." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Zwrócenie wyniku negatywnego.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zawsze zwracany jest faÅ‚sz." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"WywoÅ‚anie prostego polecenia lub wyÅ›wietlenie informacji o poleceniach.\n" +" \n" +" Uruchomienie POLECENIA z ARGUMENTAMI z pominiÄ™ciem wyszukiwania funkcji\n" +" powÅ‚oki lub wyÅ›wietlenie informacji o podanych POLECENIACH. Może być " +"użyte\n" +" do wywoÅ‚ania poleceÅ„ z dysku jeÅ›li już istnieje funkcja o danej nazwie.\n" +" \n" +" Opcje:\n" +" -p\tużycie domyÅ›lnej wartoÅ›ci PATH, pod którÄ… powinny być wszystkie\n" +" \t\tstandardowe narzÄ™dzia\n" +" -v\twypisanie opisu POLECENIA w sposób podobny do polecenia `type'\n" +" -V\twypisanie szczegółowego opisu każdego POLECENIA\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Polecenie zwraca stan POLECENIA lub faÅ‚sz, jeÅ›li POLECENIE nie zostaÅ‚o\n" +" znalezione." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Ustawienie wartoÅ›ci i atrybutów zmiennej.\n" +" \n" +" Deklaracja zmiennych i nadanie im wartoÅ›ci. JeÅ›li nie podano NAZW,\n" +" wyÅ›wietlane sÄ… atrybuty i wartoÅ›ci wszystkich zmiennych.\n" +" \n" +" Opcje:\n" +" -f\tograniczenie akcji lub wyÅ›wietlania do nazw i definicji funkcji\n" +" -F\tograniczenie wyÅ›wietlania tylko do nazw funkcji (oraz numeru\n" +" \t\tlinii i pliku źródÅ‚owego w przypadku diagnostyki)\n" +" -g\ttworzenie zmiennych globalnych w przypadku użycia w funkcji\n" +" \t\tpowÅ‚oki; w przeciwnym wypadku ignorowane\n" +" -p\twyÅ›wietlenie atrybutów i wartoÅ›ci dla każdej NAZWY\n" +" \n" +" Opcje ustawiajÄ…ce atrybuty:\n" +" -a\tczyni NAZWĘ tablicÄ… indeksowanÄ… (jeÅ›li sÄ… one obsÅ‚ugiwane)\n" +" -A\tczyni NAZWĘ tablicÄ… asocjacyjnÄ… (jeÅ›li sÄ… one obsÅ‚ugiwane)\n" +" -i\tnadaje NAZWIE atrybut `integer' (zmiennej caÅ‚kowitej)\n" +" -l\tprzeksztaÅ‚ca wartość każdej NAZWY na maÅ‚e litery przy przypisaniu\n" +" -n\tczyni NAZWĘ odwoÅ‚aniem do zmiennej o nazwie wskazanej przez " +"wartość\n" +" -r\tczyni NAZWĘ tylko do odczytu\n" +" -t\tnadaje NAZWIE atrybut `trace'\n" +" -u\tprzeksztaÅ‚ca wartość każdej NAZWY na wielkie litery przy " +"przypisaniu\n" +" -x\teksportuje NAZWĘ\n" +" \n" +" Użycie `+' zamiast `-' wyłącza podany atrybut.\n" +" \n" +" Zmienne z atrybutem `integer' majÄ… obliczanÄ… wartość arytmetycznÄ…\n" +" (jak w poleceniu `let') podczas przypisywania wartoÅ›ci.\n" +" \n" +" W przypadku użycia w funkcji `declare' czyni NAZWĘ lokalnÄ…, podobnie\n" +" jak polecenie `local'. Opcja `-g' zmienia to zachowanie.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Polecenie zwraca prawdÄ™, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Ustawienie wartoÅ›ci i atrybutów zmiennej.\n" +" \n" +" Synonim `declare' - p. `help declare'." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Definiowanie zmiennych lokalnych.\n" +" \n" +" Utworzenie zmiennej lokalnej o podanej NAZWIE i nadanie jej WARTOÅšCI.\n" +" OPCJA może być dowolnÄ… opcjÄ… przyjmowanÄ… przez `declare'.\n" +" \n" +" Zmienne lokalne mogÄ… być używane tylko w funkcji; sÄ… widoczne wyłącznie\n" +" w funkcji, w której zostaÅ‚y zdefiniowanej, oraz jej potomkach.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™, wystÄ…pi błąd przy\n" +" przypisaniu zmiennej lub powÅ‚oka nie wykonuje żadnej funkcji." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Wypisanie argumentów na standardowym wyjÅ›ciu.\n" +" \n" +" Wypisanie na standardowym wyjÅ›ciu argumentów ARG oddzielonych " +"pojedynczymi\n" +" spacjami oraz znaku koÅ„ca linii.\n" +" \n" +" Opcje:\n" +" -n\tniedołączanie znaku koÅ„ca linii\n" +" -e\twłączenie interpretowania poniższych znaków poprzedzonych\n" +" \todwrotnym ukoÅ›nikiem\n" +" -E\twyłączenie interpretowania poniższych znaków poprzedzonych\n" +" \todwrotnym ukoÅ›nikiem\n" +" \n" +" `echo' interpretuje nastÄ™pujÄ…ce znaki poprzedzone odwrotnym ukoÅ›nikiem:\n" +" \\a\talarm (dzwonek)\n" +" \\b\tcofniÄ™cie\n" +" \\c\tpominiÄ™cie dalszego wyjÅ›cia (w tym znaku nowego wiersza)\n" +" \\e\tznak ESCAPE\n" +" \\E\tznak ESCAPE\n" +" \\f\twysuw strony\n" +" \\n\tnowy wiersz\n" +" \\r\tpowrót karetki\n" +" \\t\ttabulacja pozioma\n" +" \\v\ttabulacja pionowa\n" +" \\\\\todwrotny ukoÅ›nik\n" +" \\0nnn\tznak o kodzie ASCII NNN (ósemkowo). NNN może stanowić od\n" +" \t\t0 do 3 cyfr ósemkowych\n" +" \\xHH\tznak oÅ›miobitowy o wartoÅ›ci HH (szesnastkowo). HH może być\n" +" \t\tjednÄ… lub dwiema cyframi szesnastkowymi\n" +" \\uHHHH\tznak Unicode o wartoÅ›ci HHHH (szesnastkowo). HHHH może mieć\n" +" \t\tod jednej do czterech cyfr szesnastkowych.\n" +" \\UHHHHHHHH znak Unicode o wartoÅ›ci HHHHHHHH (szesnastkowo). HHHHHHHH\n" +" \t\tmoże mieć od jednej do oÅ›miu cyfr szesnastkowych.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że wystÄ…pi błąd zapisu." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Wypisanie argumentów na standardowym wyjÅ›ciu.\n" +" \n" +" Wypisanie na standardowym wyjÅ›ciu argumentów ARG i znaku koÅ„ca linii.\n" +" \n" +" Opcje:\n" +" -n\tniedołączanie znaku koÅ„ca linii\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że wystÄ…pi błąd zapisu." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Włączanie i wyłączanie poleceÅ„ wbudowanych powÅ‚oki.\n" +" \n" +" Włączanie i wyłączanie poleceÅ„ wbudowanych powÅ‚oki. Wyłączenie pozwala\n" +" na wykonanie polecenia z dysku, majÄ…cego tÄ™ samÄ… nazwÄ™, co polecenie\n" +" wbudowane bez używania peÅ‚nej Å›cieżki.\n" +" \n" +" Opcje:\n" +" -a\twypisanie listy poleceÅ„ wbudowanych z informacjÄ…, które sÄ… " +"włączone\n" +" -n\twyłączenie każdej NAZWY lub wypisanie listy wyłączonych poleceÅ„\n" +" -p\twypisanie listy poleceÅ„ w formacie do ponownego użycia\n" +" -s\twypisanie tylko nazw posiksowych \"specjalnych\" poleceÅ„ " +"wbudowanych\n" +" \n" +" Opcje sterujÄ…ce dynamicznym Å‚adowaniem:\n" +" -f\tWczytanie polecenia wbudowanego NAZWA z obiektu współdzielonego " +"PLIK\n" +" -d\tUsuniÄ™cie polecenia wczytanego przez -f\n" +" \n" +" Bez opcji włączana jest każda NAZWA.\n" +" \n" +" Aby użyć polecenia `test' z $PATH zamiast wersji wbudowanej, należy\n" +" wykonać `enable -n test'.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że NAZWA nie jest poleceniem wbudowanym lub\n" +" wystÄ…pi błąd." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Wykonanie argumentów jako polecenia powÅ‚oki.\n" +" \n" +" Połączenie argumentów ARG w pojedynczy Å‚aÅ„cuch, użycie rezultatu jako\n" +" wejÅ›cia dla powÅ‚oki i wykonanie wynikowych poleceÅ„.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest stan wyjÅ›ciowy polecenia lub prawdÄ™, jeÅ›li polecenie jest\n" +" puste." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Analiza opcji z argumentów.\n" +" \n" +" Polecenie getopts jest używane przez procedury powÅ‚oki przy " +"analizowaniu\n" +" parametrów pozycyjnych jako opcji.\n" +" \n" +" ÅAŃCUCH-OPCJI zawiera litery opcji, które majÄ… być rozpoznane; jeÅ›li po\n" +" literze nastÄ™puje dwukropek, opcja wymaga argumentu, który powinien być\n" +" oddzielony od opcji spacjÄ….\n" +" \n" +" Przy każdym wywoÅ‚aniu getopts umieszcza nastÄ™pnÄ… opcjÄ™ w zmiennej " +"powÅ‚oki\n" +" $nazwa, inicjujÄ…c jÄ…, jeÅ›li nie istnieje; natomiast indeks nastÄ™pnego\n" +" argumentu do przetworzenia jest umieszczany w zmiennej powÅ‚oki OPTIND\n" +" OPTIND jest inicjowany wartoÅ›ciÄ… 1 przy każdym wywoÅ‚aniu powÅ‚oki lub\n" +" skryptu powÅ‚oki. JeÅ›li opcja wymaga argumentu, getopts umieszcza ten\n" +" argument w zmiennej powÅ‚oki OPTARG.\n" +" \n" +" getopts zgÅ‚asza błędy na jeden z dwóch sposobów. JeÅ›li pierwszy znak\n" +" ÅAŃCUCHA-OPCJI jest dwukropkiem, getopts wykorzystuje ciche zgÅ‚aszanie\n" +" błędów. W tym trybie komunikaty błędów nie sÄ… wypisywane. JeÅ›li " +"napotkana\n" +" zostanie błędna opcja, getopts umieszcza znak opcji w OPTARG. JeÅ›li\n" +" nie znaleziono wymaganego argumentu, getopts umieszcza znak ':' w " +"NAZWIE\n" +" i ustawia OPTARG na napotkany znak opcji. JeÅ›li getopts nie jest w " +"trybie\n" +" cichym i napotkana zostanie błędna opcja, getopts umieszcza znak '?'\n" +" w NAZWIE i anuluje OPTARG. JeÅ›li nie znaleziono wymaganego argumentu,\n" +" w NAZWIE umieszczany jest znak '?', OPTARG jest anulowany i wypisywany\n" +" jest komunikat diagnostyczny.\n" +" \n" +" JeÅ›li zmienna powÅ‚oki OPTERR ma wartość 0, getopts wyłącza wypisywanie\n" +" komunikatów błędów, nawet jeÅ›li pierwszym znakiem ÅAŃCUCHA-OPCJI nie " +"jest\n" +" dwukropek. OPTERR domyÅ›lnie ma wartość 1.\n" +" \n" +" Polecenie getopts normalnie przetwarza parametry pozycyjne ($0 - $9), " +"ale\n" +" jeÅ›li podano wiÄ™cej argumentów, sÄ… one przetwarzane zamiast nich.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, jeÅ›li napotkano opcjÄ™; faÅ‚sz, jeÅ›li wystÄ…pi " +"koniec\n" +" opcji lub błąd." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"ZastÄ…pienie powÅ‚oki podanym poleceniem.\n" +" \n" +" WywoÅ‚ywane jest POLECENIE, zastÄ™pujÄ…c tÄ™ powÅ‚okÄ™ podanym programem.\n" +" ARGUMENTY stajÄ… siÄ™ argumentami POLECENIA. JeÅ›li nie podano POLECENIA,\n" +" wszystkie podane przekierowania odnoszÄ… skutek dla bieżącej powÅ‚oki.\n" +" \n" +" Opcje:\n" +" -a nazwa\tprzekazanie NAZWY jako zerowego argumentu POLECENIA\n" +" -c\twywoÅ‚anie POLECENIA z pustym Å›rodowiskiem\n" +" -l\tumieszczenie kreski w zerowym argumencie POLECENIA\n" +" \n" +" JeÅ›li polecenia nie można wywoÅ‚ać, powÅ‚oka nieinteraktywna koÅ„czy siÄ™,\n" +" chyba że ustawiona jest opcja powÅ‚oki `execfail'.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że nie uda siÄ™ znaleźć POLECENIA lub " +"wystÄ…pi\n" +" błąd przekierowania." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Opuszczenie powÅ‚oki.\n" +" \n" +" Opuszczenie powÅ‚oki z kodem zakoÅ„czenia N. JeÅ›li N pominiÄ™to, kodem\n" +" zakoÅ„czenia bÄ™dzie kod zakoÅ„czenia ostatniego wykonanego polecenia." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Opuszczenie powÅ‚oki logowania.\n" +" \n" +" Opuszczenie powÅ‚oki logowania z kodem zakoÅ„czenia N. Zwraca błąd, jeÅ›li\n" +" powÅ‚oka nie jest powÅ‚okÄ… logowania." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"WyÅ›wietlanie lub wykonywanie poleceÅ„ z listy historii.\n" +" \n" +" fc sÅ‚uży do wypisywania, edycji i ponownego uruchamiania poleceÅ„ z " +"listy\n" +" historii. PIERWSZY i OSTATNI jako liczby okreÅ›lajÄ… zakres lub PIERWSZY\n" +" jako napis oznacza najpóźniej wykonywane polecenie zaczynajÄ…ce siÄ™ od " +"tego\n" +" napisu.\n" +" \n" +" Opcje:\n" +" -e NAZWA-ED\tokreÅ›la edytor, który ma być używany. DomyÅ›lnymi\n" +" \twartoÅ›ciami sÄ…: najpierw FCEDIT, potem EDITOR, a na koÅ„cu vi\n" +" -l\twypisywanie wierszy zamiast ich edycji\n" +" -n\tniewypisywanie numerów wierszy\n" +" -r\todwrócenie kolejnoÅ›ci wierszy (czyniÄ…c najnowsze wypisane\n" +" \tpolecenie pierwszym)\n" +" \n" +" Przy wywoÅ‚aniu polecenia w postaci `fc -s [wz=zam ...] [polecenie]',\n" +" jest ono wywoÅ‚ywane ponownie po wykonaniu podstawienia WZ=ZAM.\n" +" \n" +" Przydatnym aliasem korzystajÄ…cym z tego jest r='fc -s' tak, że " +"napisanie\n" +" `r cc' uruchamia ostatnie polecenie zaczynajÄ…ce siÄ™ od `cc', a " +"napisanie\n" +" `r' uruchamia ponownie ostatnie polecenie.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda lub stan wykonanego polecenia; wartość niezerowa\n" +" w przypadku błędu." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Przeniesienie zadania na pierwszy plan.\n" +" \n" +" Umieszczenie ZADANIA na pierwszym planie oraz uczynienie go bieżącym\n" +" zadaniem. JeÅ›li nie okreÅ›lono ZADANIA, użyte zostanie zadanie bieżące\n" +" w rozumieniu powÅ‚oki.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Stan zadania umieszczonego na pierwszym planie lub faÅ‚sz, jeÅ›li wystÄ…pi\n" +" błąd." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Przeniesienie zadaÅ„ w tÅ‚o.\n" +" \n" +" Umieszczenie wszystkich ZADAŃ w tle tak, jakby zostaÅ‚y uruchomione\n" +" z `&'. JeÅ›li nie okreÅ›lono ZADAŃ, użyte zostanie zadanie bieżące\n" +" w rozumieniu powÅ‚oki.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że sterowanie zadaniami nie jest włączone\n" +" lub wystÄ…pi błąd." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"ZapamiÄ™tanie lub wypisanie poÅ‚ożenia programów.\n" +" \n" +" OkreÅ›lenie i zapamiÄ™tanie peÅ‚nej Å›cieżki każdego polecenia NAZWA. JeÅ›li\n" +" nie podano argumentów, wyÅ›wietlane sÄ… informacje o zapamiÄ™tanych\n" +" poleceniach.\n" +" \n" +" Opcje:\n" +" -d\tzapomnienie poÅ‚ożenia każdej NAZWY\n" +" -l\twypisanie w formacie do wykorzystania jako wejÅ›cie\n" +" -p Å›cieżka\tużycie ÅšCIEÅ»KI jako peÅ‚nej Å›cieżki NAZWY\n" +" -r\tzapomnienie wszystkich pamiÄ™tanych poÅ‚ożeÅ„\n" +" -t\twypisanie pamiÄ™tanych poÅ‚ożeÅ„ każdej NAZWY poprzedzajÄ…c\n" +" \t\tkażde poÅ‚ożenie odpowiedniÄ… NAZWÄ„, jeÅ›li podano wiele NAZW\n" +" Argumenty:\n" +" NAZWA\tKażda nazwa jest wyszukiwana w $PATH i dodawana do listy\n" +" \t\tpamiÄ™tanych poleceÅ„.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że nie znaleziono NAZWY lub podano błędnÄ…\n" +" opcjÄ™." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"WyÅ›wietlenie informacji o poleceniach wbudowanych.\n" +" \n" +" WyÅ›wietlenie krótkiego przeglÄ…du poleceÅ„ wbudowanych. JeÅ›li podano\n" +" WZORZEC, wypisywany jest szczegółowy opis wszystkich poleceÅ„ pasujÄ…cych " +"do\n" +" WZORCA, w przeciwnym wypadku - lista tematów.\n" +" \n" +" Opcje:\n" +" -d\twypisanie krótkiego opisu każdego tematu\n" +" -m\twyÅ›wietlenie sposobu użycia w formacie zbliżonym do stron man\n" +" -s\twypisanie tylko krótkiej informacji o skÅ‚adni dla każdego\n" +" \t\ttematu pasujÄ…cego do WZORCA\n" +" \n" +" Argumenty:\n" +" WZORZEC\tWzorzec okreÅ›lajÄ…cy temat pomocy\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że WZORCA nie znaleziono lub podano błędnÄ…\n" +" opcjÄ™." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"WyÅ›wietlanie i modyfikowanie listy historii.\n" +" \n" +" WyÅ›wietlanie listy historii z numerami linii z oznaczeniem każdej\n" +" zmodyfikowanej linii przedrostkiem `*'. Podanie argumentu N wypisuje\n" +" tylko ostatnich N wpisów.\n" +" \n" +" Opcje:\n" +" -c\twyczyszczenie listy historii poprzez usuniÄ™cie wszystkich wpisów\n" +" -d offset\tusuniÄ™cie wpisu historii o podanym OFFSECIE. Ujemne " +"offsety\n" +" \t\tliczÄ… siÄ™ wstecz od koÅ„ca listy historii\n" +" \n" +" -a\tdołączenie linii historii z tej sesji do pliku historii\n" +" -n\todczyt wszystkich jeszcze nie przeczytanych linii z pliku\n" +" \t\thistorii i dołączenie ich do listy historii\n" +" -r\todczyt pliku historii i dołączenie zawartoÅ›ci do listy historii\n" +" -w\tzapis bieżącej historii do pliku historii\n" +" \n" +" -p\trozwiniÄ™cie wg historii każdego ARG i wypisanie wyniku bez\n" +" \t\tzapisywania go na liÅ›cie historii\n" +" -s\tdołączenie wszystkich ARG do listy historii jako pojedynczych\n" +" \t\twpisów\n" +" \n" +" JeÅ›li podano PLIK, jest używany jako plik historii. W przeciwnym " +"wypadku\n" +" używany jest $HISTFILE, a jeÅ›li ta zmienna nie jest ustawiona -\n" +" ~/.bash_history.\n" +" \n" +" JeÅ›li zmienna $HISTTIMEFORMAT jest ustawiona i niepusta, jej wartość " +"jest\n" +" używana jako Å‚aÅ„cuch formatujÄ…cy dla strftime(3) do wypisywania momentu\n" +" czasu powiÄ…zanego z każdym wypisywanym wpisem. W przeciwnym wypadku " +"czas\n" +" nie jest wypisywany.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"WyÅ›wietlenie stanu zadaÅ„.\n" +" \n" +" Wypisanie aktywnych zadaÅ„. ZADANIE ogranicza wyjÅ›cie tylko do tego " +"zadania.\n" +" Bez opcji wypisywany jest stan wszystkich aktywnych zadaÅ„.\n" +" \n" +" Opcje:\n" +" -l\twypisanie dodatkowo numerów PID procesów\n" +" -n\twypisanie tylko procesów, które zmieniÅ‚y stan od ostatniego\n" +" \t\tpowiadomienia\n" +" -p\twypisanie tylko numerów PID procesów\n" +" -r\tograniczenie wyjÅ›cia do zadaÅ„ dziaÅ‚ajÄ…cych\n" +" -s\tograniczenie wyjÅ›cia do zadaÅ„ zatrzymanych\n" +" \n" +" Przy podaniu -x, uruchamiane jest podane POLECENIE po zastÄ…pieniu\n" +" każdej z wystÄ™pujÄ…cych w argumentach ARG specyfikacji zadaÅ„ numerem PID\n" +" procesu wiodÄ…cego danego zadania.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd.\n" +" JeÅ›li użyto -x, zwracany jest stan wyjÅ›ciowy POLECENIA." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"UsuniÄ™cie poleceÅ„ z bieżącej powÅ‚oki.\n" +" \n" +" UsuniÄ™cie każdego podanego ZADANIA z tablicy aktywnych zadaÅ„. Bez\n" +" podania ZADANIA powÅ‚oka używa pojÄ™cia bieżącego zadania.\n" +" \n" +" Opcje:\n" +" -a\tusuniÄ™cie wszystkich zadaÅ„, jeÅ›li nie podano ZADANIA\n" +" -h\toznaczenie każdego zadania tak, że SIGHUP nie jest wysyÅ‚any do\n" +" \t\tzadania, jeÅ›li powÅ‚oka otrzyma SIGHUP\n" +" -r\tusuniÄ™cie tylko dziaÅ‚ajÄ…cych zadaÅ„\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub ZADANIE." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"WysÅ‚anie sygnaÅ‚u do zadania.\n" +" \n" +" WysÅ‚anie do procesów okreÅ›lonych przez PID lub ZADANIE sygnaÅ‚u o nazwie\n" +" SYGNAÅ lub NUMERZE-SYGNAÅU. JeÅ›li nie podano SYGNAÅU ani NUMERU-" +"SYGNAÅU,\n" +" przyjmowany jest SIGTERM.\n" +" \n" +" Opcje:\n" +" -s SYG\tSYG jest nazwÄ… sygnaÅ‚u\n" +" -n SYG\tSYG jest numerem sygnaÅ‚u\n" +" -l\tlista nazw sygnałów; jeÅ›li `-l' wystÄ™puje z argumentami, sÄ… one\n" +" \t\ttraktowane jako numery sygnałów, dla których majÄ… być wypisane " +"nazwy\n" +" -L\tsynonim -l\n" +" \n" +" Kill jest poleceniem wewnÄ™trznym z dwóch powodów: umożliwia korzystanie\n" +" z identyfikatorów zadaÅ„ zamiast numerów PID oraz, w przypadku " +"osiÄ…gniÄ™cia\n" +" ograniczenia na liczbÄ™ procesów, nie powoduje potrzeby uruchamiania\n" +" dodatkowego procesu, aby jakiÅ› zabić.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest sukces, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Obliczanie wyrażeÅ„ arytmetycznych.\n" +" \n" +" Obliczenie każdego argumentu ARG jako wyrażenia arytmetycznego. " +"Obliczenia\n" +" sÄ… wykonywane dla liczb caÅ‚kowitych o staÅ‚ej dÅ‚ugoÅ›ci bez sprawdzania\n" +" przepeÅ‚nienia, jednakże dzielenie przez 0 jest przechwytywane i " +"oznaczane\n" +" jako błąd. Poniższa lista operatorów jest pogrupowana na poziomy\n" +" operatorów o jednakowym priorytecie. Poziomy sÄ… wypisane w kolejnoÅ›ci\n" +" malejÄ…cego priorytetu.\n" +" \n" +" \tid++, id--\tpost-inkrementacja, post-dekrementacja zmiennej\n" +" \t++id, --id\tpre-inkrementacja, pre-dekrementacja zmiennej\n" +" \t-, +\t\tjednoargumentowy minus, plus\n" +" \t!, ~\t\tlogiczna i bitowa negacja\n" +" \t**\t\tpotÄ™gowanie\n" +" \t*, /, %\t\tmnożenie, dzielenie, reszta z dzielenia\n" +" \t+, -\t\tdodawanie, odejmowanie\n" +" \t<<, >>\t\tprzesuniÄ™cie bitowe w lewo i w prawo\n" +" \t<=, >=, <, >\tporównanie\n" +" \t==, !=\t\trówność, nierówność\n" +" \t&\t\tbitowe AND\n" +" \t^\t\tbitowe XOR\n" +" \t|\t\tbitowe OR\n" +" \t&&\t\tlogiczne AND\n" +" \t||\t\tlogiczne OR\n" +" \texpr ? expr : expr\n" +" \t\t\toperator warunkowy\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tprzypisanie\n" +" \n" +" Jako operandy mogÄ… wystÄ™pować zmienne powÅ‚oki. Nazwa zmiennej jest\n" +" zastÄ™powana w w wyrażeniu jej wartoÅ›ciÄ… (po konwersji do liczby\n" +" caÅ‚kowitej o staÅ‚ej dÅ‚ugoÅ›ci). Zmienna, aby mogÅ‚a być użyta\n" +" w wyrażeniu, nie musi mieć ustawionego atrybutu integer.\n" +" \n" +" Operacje sÄ… wykonywane wg. priorytetów operatorów. Najpierw sÄ…\n" +" wykonywane podwyrażenia w nawiasach i majÄ… one pierwszeÅ„stwo przed\n" +" powyższymi priorytetami operatorów.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" JeÅ›li wartoÅ›ciÄ… ostatniego argumentu jest 0, let zwraca 1;\n" +" w pozostaÅ‚ych przypadkach zwracane jest 0." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Odczyt wiersza ze standardowego wejÅ›cia i podziaÅ‚ go na pola.\n" +" \n" +" Odczytanie wiersza ze standardowego wejÅ›cia lub deskryptora FD (jeÅ›li\n" +" podano opcjÄ™ -u). Wiersz jest dzielony na pola wg reguÅ‚ podziaÅ‚u na " +"sÅ‚owa,\n" +" pierwsze sÅ‚owo jest przypisywane pierwszej NAZWIE, drugie - drugiej " +"NAZWIE\n" +" itd.; wszystkie pozostaÅ‚e sÅ‚owa sÄ… przypisywane ostatniej NAZWIE. Jako\n" +" ograniczniki słów sÄ… rozpoznawane tylko znaki ze zmiennej $IFS.\n" +" \n" +" JeÅ›li nie podano NAZW, odczytany wiersz jest zapisywany w zmiennej " +"REPLY.\n" +" \n" +" Opcje:\n" +" -a tablica\tprzypisanie odczytanych słów do indeksów sekwencyjnych\n" +" \t\tzmiennej tablicowej TABLICA, poczÄ…wszy od zera\n" +" -d ogr\tkontynuacja do odczytu pierwszego znaku OGR zamiast znaku " +"nowej\n" +" \t\tlinii\n" +" -e\tużycie Readline'a do odczytania wiersza\n" +" -o tekst\tużycie TEKSTU jako poczÄ…tkowego tekstu dla Readline'a\n" +" -n liczba\tpowrót po odczycie LICZBY znaków zamiast oczekiwania na\n" +" \t\tznak nowej linii; ogranicznik jest honorowany, jeÅ›li odczytano " +"mniej\n" +" \t\tniż podana LICZBA znaków przed ogranicznikiem\n" +" -N liczba\tpowrót tylko po odczycie dokÅ‚adnie podanej LICZBY znaków,\n" +" \t\tchyba że zostanie napotkany EOF lub opÅ‚ynie czas; ograniczniki sÄ…\n" +" \t\tignorowane\n" +" -p zachÄ™ta\twypisanie Å‚aÅ„cucha ZACHĘTY bez koÅ„cowego znaku nowej " +"linii\n" +" \t\tprzed próbÄ… odczytu\n" +" -r\twyłączenie interpretowania odwrotnych ukoÅ›ników jako przedrostka\n" +" \t\tznaków specjalnych\n" +" -s\tbez wypisywania wejÅ›cia pochodzÄ…cego z terminala\n" +" -t czas\tzakoÅ„czenie i zwrócenie niepowodzenia, jeÅ›li nie zostanie\n" +" \t\todczytany caÅ‚y wiersz przed upÅ‚yniÄ™ciem podanego CZASU (w " +"sekundach).\n" +" \t\tWartość zmiennej TMOUT jest domyÅ›lnym limitem czasu. CZAS może być\n" +" \t\tuÅ‚amkowy. Przy wartoÅ›ci 0 odczyt powiedzie siÄ™ tylko wtedy, gdy\n" +" \t\twejÅ›cie jest dostÄ™pne na podanym deskryptorze. Kod (stan) wyjÅ›ciowy\n" +" \t\tw przypadku osiÄ…gniÄ™cia limitu czasu jest wiÄ™kszy niż 128\n" +" -u fd\todczyt z deskryptora pliku FD zamiast ze standardowego wejÅ›cia\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest wartość 0, chyba że zostanie napotkany koniec pliku,\n" +" osiÄ…gniÄ™ty limit czasu (w tym przypadku jest wiÄ™kszy niż 128), wystÄ…pi\n" +" błąd przypisania zmiennej albo podano nieprawidÅ‚owy deskryptor dla\n" +" argumentu -u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Powrót z funkcji powÅ‚oki.\n" +" \n" +" Polecenie powoduje, że funkcja lub włączony skrypt koÅ„czy siÄ™ zwracajÄ…c\n" +" wartość podanÄ… jako N. JeÅ›li pominiÄ™to N, stanem wyjÅ›ciowym bÄ™dzie stan\n" +" ostatniego polecenia wykonanego w funkcji lub skrypcie.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracane jest N lub niepowodzenie, jeÅ›li powÅ‚oka nie wykonuje żadnej\n" +" funkcji ani skryptu." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Ustawianie lub anulowanie opcji powÅ‚oki i parametrów pozycyjnych.\n" +" \n" +" Zmiana wartoÅ›ci atrybutów powÅ‚oki i parametrów pozycyjnych lub\n" +" wyÅ›wietlenie nazw i wartoÅ›ci zmiennych powÅ‚oki.\n" +" \n" +" Opcje:\n" +" -a Oznaczenie zmiennych, które zostaÅ‚y zmodyfikowane lub utworzone\n" +" jako eksportowane.\n" +" -b Natychmiastowe powiadomienie o zakoÅ„czeniu zadania.\n" +" -e Natychmiastowe zakoÅ„czenie, gdy polecenie zakoÅ„czy siÄ™ z\n" +" niezerowym stanem (kodem powrotu).\n" +" -f Wyłączenie generowania nazw plików (globbing).\n" +" -h PamiÄ™tanie poÅ‚ożenia znalezionych poleceÅ„.\n" +" -k Umieszczanie w Å›rodowisku polecenia wszystkich argumentów\n" +" o postaci przypisania, nie tylko tych, które poprzedzajÄ… nazwÄ™\n" +" polecenia.\n" +" -m Włączenie kontroli zadaÅ„.\n" +" -n Czytanie poleceÅ„ bez wykonywania ich.\n" +" -o nazwa-opcji\n" +" Ustawienie zmiennej odpowiadajÄ…cej nazwa-opcji:\n" +" allexport to samo, co -a\n" +" braceexpand to samo, co -B\n" +" emacs korzystanie z interfejsu edycji wiersza w stylu\n" +" emacsa\n" +" errexit to samo, co -e\n" +" errtrace to samo, co -E\n" +" functrace to samo, co -T\n" +" hashall to samo, co -h\n" +" histexpand to samo, co -H\n" +" history włączenie historii poleceÅ„\n" +" ignoreeof niekoÅ„czenie powÅ‚oki po odczytaniu EOF\n" +" interactive-comments\n" +" zezwolenie na wystÄ…pienie komentarzy\n" +" w poleceniach interaktywnych\n" +" keyword to samo, co -k\n" +" monitor to samo, co -m\n" +" noclobber to samo, co -C\n" +" noexec to samo, co -n\n" +" noglob to samo, co -f\n" +" nolog aktualnie akceptowane ale ignorowane\n" +" notify to samo, co -b\n" +" nounset to samo, co -u\n" +" onecmd to samo, co -t\n" +" physical to samo, co -P\n" +" pipefail kodem powrotu potoku jest kod powrotu ostatniego\n" +" polecenia koÅ„czÄ…cego siÄ™ z niezerowym kodem lub\n" +" zero, gdy żadne polecenie nie zakoÅ„czyÅ‚o siÄ™ z\n" +" niezerowym kodem powrotu\n" +" posix zmiana zachowania basha, gdy standardowe\n" +" zachowanie operacji różni siÄ™ od standardu\n" +" POSIX na zgodne ze standardem\n" +" privileged to samo, co -p\n" +" verbose to samo, co -v\n" +" vi korzystanie z interfejsu edycji wiersza w stylu " +"vi\n" +" xtrace to samo, co -x\n" +" -p Włączone, gdy nie zgadzajÄ… siÄ™ rzeczywisty i efektywny ID\n" +" użytkownika. Wyłącza przetwarzanie pliku $ENV oraz import " +"funkcji\n" +" powÅ‚oki. Wyłączenie tej opcji powoduje, że efektywne UID i GID\n" +" zostanÄ… ustawione na rzeczywiste UID i GID.\n" +" -t ZakoÅ„czenie po przeczytaniu i uruchomieniu jednego polecenia.\n" +" -u Traktowanie podczas podstawienia nieustawionych zmiennych jako\n" +" błędów.\n" +" -v Wypisywanie wejÅ›cia powÅ‚oki tak, jak zostaÅ‚o przeczytane.\n" +" -x Wypisywanie poleceÅ„ i ich argumentów tak, jak sÄ… uruchamiane.\n" +" -B Przeprowadzanie przez powÅ‚okÄ™ rozwijania nawiasów.\n" +" -C Gdy ustawione, niepozwalanie na nadpisywanie istniejÄ…cych\n" +" zwykÅ‚ych plików przez przekierowanie wyjÅ›cia.\n" +" -E Gdy ustawione, dziedziczenie puÅ‚apki ERR przez funkcje powÅ‚oki.\n" +" -H Włączenie podstawienia historii w stylu `!'. Znacznik ten jest\n" +" domyÅ›lnie włączony dla powÅ‚oki interaktywnej.\n" +" -P Gdy ustawione, nierozwiÄ…zywanie dowiÄ…zaÅ„ symbolicznych podczas\n" +" uruchamiania poleceÅ„ takich, jak cd, które zmieniajÄ… katalog\n" +" bieżący.\n" +" -T Gdy ustawione, dziedziczenie puÅ‚apek DEBUG i RETURN przez " +"funkcje.\n" +" -- Przypisanie pozostaÅ‚ych argumentów do parametrów pozycyjnych.\n" +" JeÅ›li nie ma wiÄ™cej argumentów, parametry pozycyjne sÄ… anulowane.\n" +" - Przypisanie pozostaÅ‚ych argumentów do argumentów pozycyjnych.\n" +" Wyłączenie opcji -x i -v.\n" +" \n" +" Użycie + zamiast - powoduje wyłączenie powyższych znaczników. Można z " +"nich\n" +" także korzystać przy uruchomieniu powÅ‚oki. Aktualny zestaw opcji można\n" +" znaleźć w $-. PozostaÅ‚e n argumentów staje siÄ™ parametrami pozycyjnymi\n" +" i sÄ… one przypisane, kolejno, do $1, $2, .. $n. Gdy nie zostanÄ… podane\n" +" żadne argumenty, wypisywane sÄ… wszystkie zmienne powÅ‚oki.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano nieprawidÅ‚owÄ… opcjÄ™." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Anulowanie wartoÅ›ci i atrybutów zmiennych i funkcji powÅ‚oki.\n" +" \n" +" UsuniÄ™cie zmiennych i funkcji o podanych NAZWACH.\n" +" \n" +" Opcje:\n" +" -f\tpotraktowanie wszystkich NAZW jako funkcji powÅ‚oki\n" +" -v\tpotraktowanie wszystkich NAZW jako zmiennych powÅ‚oki\n" +" -n\tpotraktowanie wszystkich NAZW jako referencji do nazw\n" +" \t\ti anulowanie samej zmiennej zamiast tej, do której siÄ™ odnosi\n" +" \n" +" Bez opcji unset próbuje najpierw anulować definicjÄ™ zmiennej, a jeÅ›li " +"to\n" +" siÄ™ nie powiedzie, próbuje anulować definicjÄ™ funkcji.\n" +" \n" +" Niektórych zmiennych nie można usunąć - p. `readonly'.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub NAZWA jest tylko " +"do\n" +" odczytu." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Ustawienie atrybutu eksportowania dla zmiennych powÅ‚oki.\n" +" \n" +" Zaznaczenie każdej NAZWY do automatycznego eksportowania do Å›rodowiska\n" +" później wywoÅ‚ywanych poleceÅ„. JeÅ›li podano WARTOŚĆ, jest ona " +"przypisywana\n" +" przed eksportowaniem.\n" +" \n" +" Opcje:\n" +" -f\tdziaÅ‚anie na funkcjach powÅ‚oki\n" +" -n\tusuniÄ™cie atrybutu eksportowania z każdej NAZWY\n" +" -p\twyÅ›wietlenie listy wszystkich eksportowanych zmiennych i funkcji\n" +" \n" +" Argument `--' koÅ„czy dalsze przetwarzanie opcji.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano nieprawidÅ‚owÄ… opcjÄ™ lub NAZWĘ." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Oznaczenie zmiennych powÅ‚oki jako niezmiennych.\n" +" \n" +" Oznaczenie każdej NAZWY jako tylko do odczytu; wartoÅ›ci tych NAZW nie " +"mogÄ…\n" +" być zmieniane przez późniejsze podstawienia. JeÅ›li podano WARTOŚĆ, jest\n" +" ona przypisywana przed oznaczeniem jako tylko do odczytu.\n" +" \n" +" Opcje:\n" +" -a\tdziaÅ‚anie na zmiennych tablicowych indeksowanych\n" +" -A\tdziaÅ‚anie na zmiennych tablicowych asocjacyjnych\n" +" -f\tdziaÅ‚anie na funkcjach powÅ‚oki\n" +" -p\twyÅ›wietlenie listy wszystkich zmiennych lub funkcji tylko do " +"odczytu,\n" +" \t\tw zależnoÅ›ci od tego, czy podano opcjÄ™ -f\n" +" \n" +" Argument `--' wyłącza dalsze przetwarzanie opcji.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano nieprawidÅ‚owÄ… opcjÄ™ lub NAZWĘ." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"PrzesuniÄ™cie argumentów pozycyjnych.\n" +" \n" +" Zmiana nazw argumentów pozycyjnych $N+1,$N+2 ... na $1,$2 ...\n" +" JeÅ›li nie podano N, przyjmuje siÄ™ 1.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że N jest ujemne lub wiÄ™ksze niż $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Wykonanie poleceÅ„ z pliku w bieżącej powÅ‚oce.\n" +" \n" +" Odczytanie i uruchomienie poleceÅ„ z PLIKU w bieżącej powÅ‚oce. Do\n" +" znalezienia katalogu zawierajÄ…cego PLIK używane sÄ… Å›cieżki zawarte\n" +" w $PATH. JeÅ›li podane zostanÄ… jakiekolwiek ARGUMENTY, stajÄ… siÄ™\n" +" parametrami pozycyjnymi podczas uruchomienia PLIKU.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest stan ostatnio wykonanego polecenia z PLIKU lub błąd, " +"jeÅ›li\n" +" PLIKU nie udaÅ‚o siÄ™ odczytać." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Wstrzymanie wykonywania powÅ‚oki.\n" +" \n" +" Wstrzymanie wykonywania danego skryptu do czasu otrzymania sygnaÅ‚u\n" +" SIGCONT. JeÅ›li nie podano opcji wymuszenia, powÅ‚oki logowania nie można\n" +" wstrzymać.\n" +" \n" +" Opcje:\n" +" -f\twymuszenie wstrzymania, nawet jeÅ›li powÅ‚oka jest powÅ‚okÄ… " +"logowania\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że kontrola zadaÅ„ jest wyłączona lub " +"wystÄ…pi\n" +" błąd." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Obliczenie wyrażenia warunkowego.\n" +" \n" +" Polecenie zwracajÄ…ce kod 0 (prawda) lub 1 (faÅ‚sz) w zależnoÅ›ci od " +"wyniku\n" +" obliczenia WYRAÅ»ENIA. Wyrażenia mogÄ… mieć postać jedno- lub " +"dwuargumentowÄ….\n" +" Jednoargumentowe wyrażenia sÅ‚użą zwykle do badania stanu pliku. " +"IstniejÄ…\n" +" również operatory dziaÅ‚ajÄ…ce na Å‚aÅ„cuchach tekstowych, jak też " +"operatory\n" +" numerycznego porównania.\n" +" \n" +" Zachowanie polecenia test zależy od liczby argumentów. PeÅ‚nÄ… " +"specyfikacjÄ™\n" +" można znaleźć w podrÄ™czniku man do basha.\n" +" \n" +" Operatory plikowe:\n" +" \n" +" -a PLIK Prawda, gdy PLIK istnieje.\n" +" -b PLIK Prawda, gdy PLIK jest plikiem specjalnym urzÄ…dzenia\n" +" blokowego.\n" +" -c PLIK Prawda, gdy PLIK jest plikiem specjalnym urzÄ…dzenia\n" +" znakowego.\n" +" -d PLIK Prawda, gdy PLIK jest katalogiem.\n" +" -e PLIK Prawda, gdy PLIK istnieje.\n" +" -f PLIK Prawda, gdy PLIK istnieje i jest zwykÅ‚ym plikiem.\n" +" -g PLIK Prawda, gdy PLIK ma ustawiony bit SGID.\n" +" -h PLIK Prawda, gdy PLIK jest dowiÄ…zaniem symbolicznym.\n" +" -L PLIK Prawda, gdy PLIK jest dowiÄ…zaniem symbolicznym.\n" +" -k PLIK Prawda, gdy PLIK ma ustawiony bit `sticky'.\n" +" -p PLIK Prawda, gdy PLIK jest nazwanym potokiem.\n" +" -r PLIK Prawda, gdy PLIK jest odczytywalny przez użytkownika.\n" +" -s PLIK Prawda, gdy PLIK istnieje i jest niepusty.\n" +" -S PLIK Prawda, gdy PLIK jest gniazdem.\n" +" -t FD Prawda, gdy deskryptor FD jest otwarty na terminalu.\n" +" -u FILE Prawda, gdy PLIK ma ustawiony bit SUID.\n" +" -w FILE Prawda, gdy PLIK jest zapisywalny przez użytkownika.\n" +" -x FILE Prawda, gdy PLIK jest uruchamialny przez użytkownika.\n" +" -O FILE Prawda, gdy użytkownik jest efektywnym wÅ‚aÅ›cicielem " +"PLIKU.\n" +" -G FILE Prawda, grupa użytkownika jest efektywnym wÅ‚aÅ›cicielem\n" +" PLIKU.\n" +" -N FILE Prawda, gdy PLIK zostaÅ‚ zmodyfikowany po ostatnim\n" +" odczycie.\n" +" \n" +" PLIK1 -nt PLIK2 Prawda, gdy PLIK1 jest nowszy niż PLIK2 (porównujÄ…c\n" +" czas ostatniej modyfikacji).\n" +" \n" +" PLIK1 -ot PLIK2 Prawda, gdy PLIK1 jest starszy niż PLIK2.\n" +" \n" +" PLIK1 -ef PLIK2 Prawda, gdy PLIK1 jest twardym dowiÄ…zaniem do PLIK2.\n" +" \n" +" Operatory Å‚aÅ„cuchowe:\n" +" \n" +" -z ÅAŃCUCH Prawda, gdy ÅAŃCUCH jest pusty.\n" +" \n" +" -n ÅAŃCUCH\n" +" ÅAŃCUCH Prawda, gdy ÅAŃCUCH nie jest pusty.\n" +" \n" +" ÅAŃCUCH1 = ÅAŃCUCH2\n" +" Prawda, gdy ÅAŃCUCH1 i ÅAŃCUCH2 sÄ… równe.\n" +" ÅAŃCUCH1 != ÅAŃCUCH2\n" +" Prawda, gdy ÅAŃCUCH1 i ÅAŃCUCH2 nie sÄ… równe.\n" +" ÅAŃCUCH1 < ÅAŃCUCH2\n" +" Prawda, gdy ÅAŃCUCH1 znajduje siÄ™ w porzÄ…dku\n" +" leksykograficznym przed ÅAŃCUCHEM2.\n" +" ÅAŃCUCH1 > ÅAŃCUCH2\n" +" Prawda, gdy ÅAŃCUCH1 znajduje siÄ™ w porzÄ…dku\n" +" leksykograficznym po ÅAŃCUCHU2.\n" +" \n" +" Inne operatory:\n" +" \n" +" -o OPCJA Prawda, gdy podana OPCJA powÅ‚oki jest włączona.\n" +" -v ZMIENNA Prawda, gdy ZMIENNA powÅ‚oki jest ustawiona\n" +" -R ZMIENNA Prawda, gdy zmienna powÅ‚oki jest ustawiona i jest\n" +" referencjÄ… do nazwy\n" +" ! WYRAÅ»ENIE Prawda, gdy WYRAÅ»ENIE jest faÅ‚szywe.\n" +" WYR1 -a WYR2 Prawda, gdy zarówno WYR1, jak i WYR2 sÄ… prawdziwe.\n" +" WYR1 -o WYR2 Prawda, gdy WYR1 lub WYR2 jest prawdziwe.\n" +" \n" +" arg1 OP arg2 Testy arytmetyczne. OP jest jednym z operatorów:\n" +" -eq, -ne, -lt, -le, -gt lub -ge.\n" +" \n" +" Dwuargumentowe operatory arytmetyczne zwracajÄ… prawdÄ™, gdy ARG1 jest\n" +" równy, nierówny, mniejszy niż, mniejszy lub równy, wiÄ™kszy niż lub\n" +" wiÄ™kszy lub równy ARG2.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, jeÅ›li wartoÅ›ciÄ… WYRAÅ»ENIA jest prawda; faÅ‚sz, gdy\n" +" wartoÅ›ciÄ… WYRAÅ»ENIA jest faÅ‚sz lub podano błędny argument." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Obliczenie wyrażenia warunkowego.\n" +" \n" +" Jest to synonim dla wbudowanego polecenia \"test\", ale wymagajÄ…cy, by\n" +" ostatnim argumentem byÅ‚ `]' pasujÄ…cy do poczÄ…tkowego `['." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"WyÅ›wietlenie czasów procesu.\n" +" \n" +" Wypisanie łącznych czasów w przestrzeni użytkownika i systemu dla " +"powÅ‚oki\n" +" i wszystkich procesów potomnych.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zawsze prawda." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Przechwytywanie sygnałów i innych zdarzeÅ„.\n" +" \n" +" Polecenie definiujÄ…ce i włączajÄ…ce danÄ… akcjÄ™ w przypadku, kiedy " +"powÅ‚oka\n" +" otrzyma sygnaÅ‚ lub pod innymi warunkami.\n" +" \n" +" Gdy powÅ‚oka otrzyma podany SYGNAÅ (lub sygnaÅ‚y), odczytywane i " +"uruchamiane\n" +" jest polecenie podane jako argument ARG. W razie braku argumentu (i " +"podaniu\n" +" pojedynczego SYGNAÅU) lub gdy argumentem jest `-', każdemu z podanych\n" +" sygnałów jest przywracane pierwotne zachowanie. JeÅ›li ARG jest pustym\n" +" Å‚aÅ„cuchem, każdy SYGNAÅ jest ignorowany przez powÅ‚okÄ™ i wywoÅ‚ane przez " +"niÄ…\n" +" polecenia.\n" +" \n" +" Jeżeli jako SYGNAÅ podano EXIT (0), polecenie ARG jest uruchamiane przy\n" +" opuszczaniu powÅ‚oki. JeÅ›li jako SYGNAÅ podano DEBUG, ARG jest " +"uruchamiane\n" +" po każdym poleceniu prostym. JeÅ›li jako SYGNAÅ podano RETURN, ARG jest\n" +" uruchamiane przy każdym zakoÅ„czeniu funkcji powÅ‚oki lub skryptu\n" +" uruchamianego przez polecenia wbudowane . lub source. JeÅ›li jako SYGNAÅ\n" +" podano ERR, ARG jest uruchamiane za każdym razem, kiedy niepowodzenie\n" +" polecenia spowodowaÅ‚oby zakoÅ„czenie powÅ‚oki w przypadku włączenia opcji -" +"e.\n" +" \n" +" JeÅ›li nie podano argumentów, trap wypisuje listÄ™ poleceÅ„ przypisanych " +"do\n" +" każdego sygnaÅ‚u.\n" +" \n" +" Opcje:\n" +" -l\twypisanie listy nazw sygnałów i ich numerów\n" +" -p\twypisanie poleceÅ„ trap powiÄ…zanych z każdym SYGNAÅEM\n" +" \n" +" Każdy podawany SYGNAÅ może być nazwÄ… sygnaÅ‚u wg. lub numerem\n" +" sygnaÅ‚u. Nazwy sygnałów sÄ… niewrażliwe na wielkość liter, a prefiks SIG\n" +" jest opcjonalny. SygnaÅ‚ do powÅ‚oki można wysÅ‚ać poleceniem\n" +" \"kill -sygnaÅ‚ $$\".\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędny SYGNAÅ lub błędnÄ… opcjÄ™." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"WyÅ›wietlenie informacji o rodzaju polecenia.\n" +" \n" +" OkreÅ›lenie, w jaki sposób byÅ‚aby interpretowana każda NAZWA w przypadku\n" +" użycia jako polecenie.\n" +" \n" +" Opcje:\n" +" -a\twyÅ›wietlenie wszystkich poÅ‚ożeÅ„ zawierajÄ…cych program wykonywalny\n" +" \t\to podanej NAZWIE; obejmuje aliasy, polecenia wbudowane i funkcje\n" +" \t\ttylko jeÅ›li nie podano dodatkowo opcji `-p'\n" +" -f\tpominiÄ™cie wyszukiwania funkcji powÅ‚oki\n" +" -P\twymuszenie wyszukiwania w PATH każdej nazwy, nawet jeÅ›li jest\n" +" \t\taliasem, poleceniem wbudowanym lub funkcjÄ… i zwrócenie nazwy pliku\n" +" \t\tna dysku\n" +" -p\tzwrócenie nazwy pliku na dysku lub niczego, jeÅ›li `type -t NAZWA'\n" +" \t\tnie zwróciÅ‚oby `file'.\n" +" -t\tzwrócenie pojedynczego sÅ‚owa: `alias', `keyword', `function',\n" +" \t\t`builtin', `file' lub `', jeÅ›li nazwa jest odpowiednio: aliasem,\n" +" \t\tzarezerwowanym sÅ‚owem kluczowym powÅ‚oki, funkcjÄ… powÅ‚oki, " +"poleceniem\n" +" \t\twbudowanym powÅ‚oki, plikiem na dysku lub nie zostanie znaleziona\n" +" \n" +" Argumenty:\n" +" NAZWA\tNazwa polecenia do zinterpretowania.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, jeÅ›li każda NAZWA zostanie znaleziona; faÅ‚sz, " +"jeÅ›li\n" +" którakolwiek nie zostanie znaleziona." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modyfikowanie limitów zasobów powÅ‚oki.\n" +" \n" +" Ulimit zapewnia kontrolÄ™ iloÅ›ci zasobów udostÄ™pnionych powÅ‚oce i " +"procesom\n" +" w systemach, które takÄ… kontrolÄ™ umożliwiajÄ….\n" +" \n" +" Opcje:\n" +" -S\tkorzystanie z \"miÄ™kkiego\" limitu zasobów\n" +" -H\tkorzystanie ze \"sztywnego\" limitu zasobów\n" +" -a\twypisanie wszystkich aktualnych limitów\n" +" -b\trozmiar bufora dla gniazd\n" +" -c\tmaksymalny rozmiar tworzonych plików core\n" +" -d\tmaksymalny rozmiar segmentu danych procesu\n" +" -e\tmaksymalny priorytet szeregowania procesów (`nice')\n" +" -f\tmaksymalny rozmiar plików zapisywanych przez powÅ‚okÄ™ i jej " +"potomków\n" +" -i\tmaksymalna liczba oczekujÄ…cych sygnałów\n" +" -k\tmaksymalna liczba kolejek jÄ…dra (kqueue) przydzielonych dla " +"procesu\n" +" -l\tmaksymalny rozmiar pamiÄ™ci, którÄ… proces może zablokować\n" +" -m\tmaksymalny rozmiar obszaru rezydentnego procesu\n" +" -n\tmaksymalna liczba otwartych deskryptorów plików\n" +" -p\trozmiar bufora potoku\n" +" -q\tmaksymalna liczba bajtów w POSIX-owych kolejkach komunikatów\n" +" -r\tmaksymalny priorytet szeregowania dla procesów czasu " +"rzeczywistego\n" +" -s\tmaksymalny rozmiar stosu\n" +" -t\tmaksymalna ilość czasu procesora w sekundach\n" +" -u\tmaksymalna liczba procesów użytkownika\n" +" -v\trozmiar pamiÄ™ci wirtualnej\n" +" -x\tmaksymalna liczba blokad plików\n" +" -P\tmaksymalna liczba pseudoterminali\n" +" -T\tmaksymalna liczba wÄ…tków\n" +" \n" +" Nie wszystkie opcje sÄ… dostÄ™pne na wszystkich platformach.\n" +" \n" +" Gdy podano wartość LIMITU, stanowi ona nowÄ… wartość ograniczenia dla\n" +" danego zasobu; specjalne wartoÅ›ci LIMITU: `soft', `hard' i `unlimited'\n" +" oznaczajÄ…, odpowiednio, aktualne ograniczenie miÄ™kkie, sztywne i brak\n" +" ograniczenia. W przeciwnym przypadku wypisywana jest aktualna wartość\n" +" podanego ograniczenia. Gdy nie podano opcji, przyjmuje siÄ™, że podano -" +"f.\n" +" \n" +" WartoÅ›ci sÄ… podawane w jednostkach 1024-bajtowych, za wyjÄ…tkiem -t, " +"które\n" +" jest w sekundach, -p, które jest w jednostkach 512-bajtowych oraz -u, " +"które\n" +" jest bezwymiarowÄ… liczbÄ… procesów.\n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"WyÅ›wietlanie i ustawianie maski uprawnieÅ„ plików.\n" +" \n" +" Ustawienie maski uprawnieÅ„ tworzonych plików na UPRAWNIENIA. JeÅ›li\n" +" pominiÄ™to UPRAWNIENIA, wypisywana jest aktualna wartość maski.\n" +" \n" +" JeÅ›li UPRAWNIENIA zaczynajÄ… siÄ™ od cyfry, sÄ… interpretowane jako liczba\n" +" ósemkowa; w przeciwnym wypadku jako Å‚aÅ„cuch symbolicznych uprawnieÅ„,\n" +" jak w poleceniu chmod(1).\n" +" \n" +" Opcje:\n" +" -p\tjeÅ›li pominiÄ™to UPRAWNIENIA, wypisywanie w formie nadajÄ…cej siÄ™\n" +" \tdo ponownego użycia jako wejÅ›cie\n" +" -S\twyjÅ›cie w postaci symbolicznej; bez tej opcji jest ósemkowe\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędne uprawnienia lub błędnÄ… " +"opcjÄ™." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Oczekiwanie na zakoÅ„czenie zadania i zwrócenie stanu (kodu) wyjÅ›cia.\n" +" \n" +" Oczekiwanie na każdy proces o podanym identyfikatorze ID, który może " +"być\n" +" numerem PID lub okreÅ›leniem zadania i zgÅ‚oszenie jego stanu (kodu)\n" +" zakoÅ„czenia. JeÅ›li nie podano ID, polecenie oczekuje na wszystkie " +"aktualnie\n" +" aktywne procesy potomne i zwraca prawdÄ™. JeÅ›li ID jest okreÅ›leniem " +"zadania,\n" +" oczekuje na wszystkie procesy w potoku przetwarzania danego zadania.\n" +" \n" +" JeÅ›li podano opcjÄ™ -n, oczekiwanie na zakoÅ„czenie nastÄ™pnego zadania\n" +" i zwrócenie jego kodu zakoÅ„czenia.\n" +" \n" +" JeÅ›li podano opcjÄ™ -f, a kontrola zadaÅ„ jest włączona, oczekiwanie na\n" +" zakoÅ„czenie podanego ID zamiast czekania na zmianÄ™ jego stanu.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest stan zakoÅ„czenia ID; niepowodzenie, jeÅ›li ID jest\n" +" nieprawidÅ‚owe lub podano błędnÄ… opcjÄ™." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Oczekiwanie na zakoÅ„czenie procesu i zwrócenie stanu (kodu) wyjÅ›cia.\n" +" \n" +" Oczekiwanie na każdy z procesów podany przez PID i zgÅ‚oszenie jego " +"statusu\n" +" zakoÅ„czenia. Gdy nie zostanie podany PID, oczekiwanie dotyczy " +"wszystkich\n" +" aktualnie aktywnych procesów potomnych, a kodem powrotu jest zero. PID " +"musi\n" +" być identyfikatorem procesu.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest status ID lub niepowodzenie, jeÅ›li ID jest błędny lub " +"podano\n" +" nieprawidÅ‚owÄ… opcjÄ™." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Wykonanie poleceÅ„ dla każdego elementu z listy.\n" +" \n" +" PÄ™tla `for' uruchamia ciÄ…g poleceÅ„ dla każdego elementu podanej listy. " +"Gdy\n" +" nie zostanie podane `in SÅOWA ...;', zakÅ‚ada siÄ™, że podano `in \"$@" +"\"'.\n" +" Dla każdego elementu SÅÓW, NAZWA jest ustawiana na ten element\n" +" i uruchamiane sÄ… POLECENIA. \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Arytmetyczna pÄ™tla for.\n" +" \n" +" Równoważne\n" +" \t(( WYR1 ))\n" +" \twhile (( WYR2 )); do\n" +" \t\tPOLECENIA\n" +" \t\t(( WYR3 ))\n" +" \tdone\n" +" WYR1, WYR2 i WYR3 sÄ… wyrażeniami arytmetycznymi. JeÅ›li któreÅ› z wyrażeÅ„\n" +" zostanie pominiÄ™te, zachowanie jest takie, jakby miaÅ‚o ono wartość " +"1. \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Wybór słów z listy i wykonanie poleceÅ„.\n" +" SÅOWA sÄ… rozwijane, co tworzy listÄ™ słów. Zbiór rozwiniÄ™tych słów\n" +" wypisywany jest na standardowym wyjÅ›ciu diagnostycznym, a każde sÅ‚owo " +"jest\n" +" poprzedzone przez liczbÄ™. Gdy nie zostanie podane `in SÅOWA', zakÅ‚ada\n" +" siÄ™, że podano `in \"$@\"'. WyÅ›wietlany jest wówczas tekst zachÄ™ty PS3\n" +" i odczytywany jest wiersz ze standardowego wejÅ›cia. Gdy wiersz ten " +"skÅ‚ada\n" +" siÄ™ z liczby przypisanej do jednego z wypisanych słów, to NAZWA jest\n" +" ustawiana na to sÅ‚owo. Gdy wiersz jest pusty, SÅOWA i tekst zachÄ™ty sÄ…\n" +" wyÅ›wietlane ponownie. Gdy odczytany zostanie EOF, polecenie siÄ™ koÅ„czy.\n" +" Każda inna wartość powoduje przypisanie NAZWIE wartoÅ›ci pustej. " +"Odczytany\n" +" wiersz jest zachowywany w zmiennej REPLY. Po każdym wyborze uruchamiane\n" +" sÄ… POLECENIA aż do polecenia break. \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"ZgÅ‚oszenie czasu zajÄ™tego przez wykonanie potoku poleceÅ„.\n" +" \n" +" Uruchomienie POTOKU poleceÅ„ i wypisanie podsumowania zawierajÄ…cego czas\n" +" rzeczywisty, czas procesora w trybie użytkownika oraz czas procesora\n" +" w trybie systemu, jakie spÄ™dziÅ‚ POTOK poleceÅ„ do chwili zakoÅ„czenia.\n" +" \n" +" Opcje:\n" +" -p\twypisanie podsumowania czasów w przenoÅ›nym formacie POSIX\n" +" \n" +" Jako format danych wyjÅ›ciowych używana jest wartość zmiennej " +"TIMEFORMAT.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Polecenie zwraca status zakoÅ„czenia POTOKU poleceÅ„." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Wykonanie poleceÅ„ w oparciu o dopasowanie do wzorców.\n" +" \n" +" Wybiórcze uruchamianie POLECEŃ w zależnoÅ›ci od tego, czy SÅOWO pasuje\n" +" do WZORCA. Znak `|' sÅ‚uży do rozdzielania wielu wzorców.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Wykonanie poleceÅ„ w zależnoÅ›ci od speÅ‚nienia warunku.\n" +" \n" +" Uruchamiana jest lista `if POLECENIA'. Gdy jej kod powrotu jest zerem,\n" +" uruchamiana jest lista `then POLECENIA'. W przeciwnym przypadku\n" +" uruchamiane sÄ… poszczególne listy `elif POLECENIA' i, jeÅ›li kod powrotu\n" +" takiej listy jest zerem, uruchamiana jest odpowiednia lista\n" +" `then POLECENIA', po czym polecenie if siÄ™ koÅ„czy. W przeciwnym " +"przypadku\n" +" uruchamiana jest lista `else POLECENIA', jeÅ›li taka istnieje. Kodem\n" +" zakoÅ„czenia caÅ‚ej konstrukcji jest kod zakoÅ„czenia ostatniego\n" +" uruchomionego polecenia lub zero, gdy żaden ze sprawdzanych warunków\n" +" nie byÅ‚ prawdziwy.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Wykonywanie poleceÅ„ dopóki test koÅ„czy siÄ™ powodzeniem.\n" +" \n" +" Rozwijanie i uruchamianie POLECEŃ dopóki ostatnie polecenie\n" +" w POLECENIACH `while' koÅ„czy siÄ™ z kodem zero.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Wykonywanie poleceÅ„ dopóki test nie koÅ„czy siÄ™ powodzeniem.\n" +" \n" +" Rozwijanie i uruchamianie POLECEŃ dopóki ostatnie polecenie\n" +" w POLECENIACH `until' koÅ„czy siÄ™ z kodem niezerowym.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Utworzenie koprocesu o podanej NAZWIE.\n" +" \n" +" Asynchroniczne wykonanie POLECENIA ze standardowym wyjÅ›ciem i " +"standardowym\n" +" wejÅ›ciem polecenia połączonych potokiem z deskryptorami plików\n" +" przypisanymi do indeksów 0 i 1 zmiennej tablicowej NAZWA w powÅ‚oce.\n" +" DomyÅ›lnÄ… NAZWÄ„ jest \"COPROC\".\n" +" Stan wyjÅ›ciowy:\n" +" Polecenie coproc zwraca status wyjÅ›cia 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Zdefiniowanie funkcji powÅ‚oki.\n" +" \n" +" Utworzenie funkcji powÅ‚oki o podanej NAZWIE. Przy wywoÅ‚aniu jako " +"zwykÅ‚ego\n" +" polecenia NAZWA uruchamia POLECENIA w kontekÅ›cie powÅ‚oki wywoÅ‚ujÄ…cej.\n" +" Przy wywoÅ‚ywaniu NAZWY, argumenty sÄ… przekazywane do funkcji jako $1..." +"$n,\n" +" a nazwa funkcji w $FUNCNAME.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest sukces, chyba że NAZWA jest tylko do odczytu." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Grupowanie poleceÅ„ jako jednostki.\n" +" \n" +" Uruchomienie zbioru poleceÅ„ jako grupy. W ten sposób można przekierować\n" +" caÅ‚y zbiór poleceÅ„.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Wznowienie zadania jako pierwszoplanowego.\n" +" \n" +" Równoważne argumentowi ZADANIE polecenia `fg'. Wznowienie zatrzymanego " +"lub\n" +" dziaÅ‚ajÄ…cego w tle zadania. ZADANIE może okreÅ›lać nazwÄ™ zadania albo " +"jego\n" +" numer. Umieszczenie `&' po ZADANIU umieszcza zadanie w tle tak, jak to " +"siÄ™\n" +" dzieje po podaniu specyfikacji zadania jako argumentu dla `bg'.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracany jest stan wznowionego zadania." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Obliczenie wyrażenia arytmetycznego.\n" +" \n" +" Obliczenie WYRAÅ»ENIA zgodnie z zasadami obliczania wyrażeÅ„ " +"arytmetycznych.\n" +" Równoważne \"let WYRAÅ»ENIE\".\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracane jest 1, jeÅ›li wartoÅ›ciÄ… WYRAÅ»ENIA jest 0; 0 w przeciwnym " +"wypadku." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Wykonanie polecenia warunkowego.\n" +" \n" +" Zwracany jest status wynoszÄ…cy 0 lub 1 w zależnoÅ›ci od wyniku WYRAÅ»ENIA\n" +" warunkowego. Wyrażenia sÄ… tworzone na tych samych zasadach, co w " +"poleceniu\n" +" `test' i mogÄ… być łączone za pomocÄ… nastÄ™pujÄ…cych operatorów:\n" +" \n" +" ( WYRAÅ»ENIE )\tzwraca wartość WYRAÅ»ENIA\n" +" ! WYRAÅ»ENIE\tprawdziwe, gdy WYRAÅ»ENIE jest faÅ‚szywe; faÅ‚szywe\n" +" \t\t\tw innym przypadku\n" +" WYR1 && WYR2\tPrawdziwe, gdy zarówno WYR1 jak i WYR2 sÄ… prawdziwe;\n" +" \t\t\tfaÅ‚szywe w innym przypadku\n" +" WYR1 || WYR2\tPrawdziwe, gdy WYR1 lub WYR2 jest prawdziwe;\n" +" \t\t\tfaÅ‚szywe w innym przypadku\n" +" \n" +" W przypadku użycia operatorów `==' lub `!=' napis po prawej stronie\n" +" operatora jest traktowany jak wzorzec i wykonywane jest dopasowywanie " +"do\n" +" wzorca. W przypadku użycia operatora `=~' Å‚aÅ„cuch po prawej stronie\n" +" operatora jest dopasowywany jako wyrażenie regularne.\n" +" \n" +" Operatory && i || nie obliczajÄ… WYR2, jeÅ›li obliczenie WYR1 wystarcza " +"do\n" +" okreÅ›lenia wartoÅ›ci wyrażenia.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" 0 lub 1 w zależnoÅ›ci od wartoÅ›ci WYRAÅ»ENIA." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Popularne zmienne powÅ‚oki i ich zastosowanie.\n" +" \n" +" BASH_VERSION\tInformacja o wersji tego Basha.\n" +" CDPATH\tRozdzielona dwukropkami lista katalogów do wyszukiwania\n" +" \t\tkatalogów podanych jako argumenty `cd'.\n" +" GLOBIGNORE\tRozdzielona dwukropkami lista wzorców nazw plików\n" +" \t\tdo ignorowania przy rozwijaniu Å›cieżek.\n" +" HISTFILE\tNazwa pliku, w którym zapisywana jest historia poleceÅ„.\n" +" HISTFILESIZE\tMaksymalna liczba linii w tym pliku.\n" +" HISTSIZE\tMaksymalna liczba linii historii, do której ma dostÄ™p\n" +" \t\tdziaÅ‚ajÄ…ca powÅ‚oka.\n" +" HOME\tPeÅ‚na Å›cieżka do katalogu logowania.\n" +" HOSTNAME\tNazwa bieżącego hosta.\n" +" HOSTTYPE\tRodzaj procesora, na jakim dziaÅ‚a ta wersja Basha.\n" +" IGNOREEOF\tSterowanie akcjÄ… powÅ‚oki w przypadku odebrania znaku\n" +" \t\tEOF jako jedynego wejÅ›cia. JeÅ›li zmienna jest ustawiona,\n" +" \t\tjej wartoÅ›ciÄ… jest liczba znaków EOF, które mogÄ… wystÄ…pić\n" +" \t\tw pustym wierszu przed zakoÅ„czeniem powÅ‚oki (domyÅ›lnie 10).\n" +" \t\tJeÅ›li nie jest ustawiona, EOF oznacza koniec wejÅ›cia.\n" +" MACHTYPE\tÅaÅ„cuch opisujÄ…cy bieżący system, na jakim dziaÅ‚a Bash.\n" +" MAILCHECK\tOkreÅ›lenie jak czÄ™sto (w sekundach) Bash ma sprawdzać\n" +" \t\tobecność nowej poczty.\n" +" MAILPATH\tRozdzielona dwukropkami lista nazw plików, w których\n" +" \t\tBash ma sprawdzać obecność nowej poczty.\n" +" OSTYPE\tWersja Uniksa, na której dziaÅ‚a ta wersja Basha.\n" +" PATH\tRozdzielona dwukropkami lista katalogów do przeszukiwania\n" +" \t\tprzy wyszukiwaniu poleceÅ„.\n" +" PROMPT_COMMAND\tPolecenie do wykonania przed wypisaniem każdego\n" +" \t\tgłównego napisu zachÄ™ty.\n" +" PS1\t\tGłówny napis zachÄ™ty.\n" +" PS2\t\tDrugorzÄ™dny napis zachÄ™ty.\n" +" PWD\t\tPeÅ‚na Å›cieżka do bieżącego katalogu.\n" +" SHELLOPTS\tRozdzielona dwukropkami lista włączonych opcji powÅ‚oki.\n" +" TERM\tNazwa typu bieżącego terminala.\n" +" TIMEFORMAT\tFormat wyjÅ›ciowy do statystyk czasu wyÅ›wietlanych przez\n" +" \t\tpolecenie wbudowane `time'.\n" +" auto_resume\tWartość niepusta oznacza, że sÅ‚owo polecenia wystÄ™pujÄ…ce\n" +" \t\tw linii jako jedyne jest najpierw wyszukiwane na liÅ›cie aktualnie\n" +" \t\tzatrzymanych zadaÅ„. JeÅ›li tam zostanie znalezione, to zadanie\n" +" \t\tjest wznawiane jako pierwszoplanowe. Wartość `exact' oznacza, że\n" +" \t\tsÅ‚owo polecenia musi dokÅ‚adnie pasować do polecenia na liÅ›cie\n" +" \t\tzadaÅ„ zatrzymanych. Wartość `substring' oznacza, że sÅ‚owo\n" +" \t\tpolecenia musi pasować do podciÄ…gu zadania. Każda inna wartość\n" +" \t\toznacza, że polecenie musi być przedrostkiem zatrzymanego\n" +" \t\tzadania.\n" +" histchars\tZnaki sterujÄ…ce rozwijaniem wg historii i szybkim\n" +" \t\tpodstawianiem. Pierwszy znak jest znakiem podstawiania\n" +" \t\thistorii, zwykle `!'. Drugi jest znakiem \"szybkiego podstawienia" +"\",\n" +" \t\tzwykle `^'. Trzeci znak jest znakiem \"komentarza historii\",\n" +" \t\tzwykle `#'.\n" +" HISTIGNORE\tRozdzielona dwukropkami lista wzorców używanych przy\n" +" \t\tdecydowaniu, które polecenia powinny być zapisywane na liÅ›cie\n" +" \t\thistorii.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Dodanie katalogów do stosu.\n" +" \n" +" Dodanie katalogu na wierzchoÅ‚ku stosu katalogów lub rotacja stosu\n" +" czyniÄ…ca jego nowym wierzchoÅ‚kiem bieżący katalog roboczy. WywoÅ‚ane bez\n" +" argumentów zamienia na stosie dwa najwyższe katalogi.\n" +" \n" +" Opcje:\n" +" -n\tPominiÄ™cie zmiany katalogu podczas umieszczania katalogów na\n" +" \t\tstosie tak, że zmieniany jest tylko stos.\n" +" \n" +" Argumenty:\n" +" +N\tRotacja stosu czyniÄ…ca jego wierzchoÅ‚kiem N-ty katalog (liczÄ…c\n" +" \t\tod lewej strony listy wypisywanej przez `dirs', poczÄ…wszy od zera).\n" +" \n" +" -N\tRotacja stosu czyniÄ…ca jego wierzchoÅ‚kiem N-ty katalog (liczÄ…c\n" +" \t\tod prawej strony listy wypisywanej przez `dirs', poczÄ…wszy od " +"zera).\n" +" \n" +" KATALOG\tUmieszczenie KATALOGU na wierzchoÅ‚ku stosu i uczynienie go\n" +" \t\tnowym bieżącym katalogiem roboczym.\n" +" \n" +" Zawartość stosu katalogów można zobaczyć za pomocÄ… polecenia `dirs'.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędny argument lub zmiana " +"katalogu\n" +" siÄ™ nie powiedzie." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"UsuniÄ™cie katalogów ze stosu.\n" +" \n" +" UsuniÄ™cie pozycji ze stosu katalogów. WywoÅ‚ane bez argumentów usuwa\n" +" katalog z wierzchoÅ‚ka stosu i zmienia katalog bieżący na katalog\n" +" bÄ™dÄ…cy nowym wierzchoÅ‚kiem stosu.\n" +" \n" +" Opcje:\n" +" -n\tPominiÄ™cie zmiany katalogu podczas usuwania katalogów ze stosu\n" +" \t\ttak, że zmieniany jest tylko stos.\n" +" \n" +" Argumenty:\n" +" +N\tUsuniÄ™cie ze stosu N-tej pozycji liczÄ…c od lewej strony listy\n" +" \t\twypisywanej przez `dirs', poczÄ…wszy od zera. Na przykÅ‚ad: `popd +0'\n" +" \t\tusuwa pierwszy katalog, `popd +1' usuwa drugi.\n" +" \n" +" -N\tUsuniÄ™cie ze stosu N-tej pozycji liczÄ…c od prawej strony listy\n" +" \t\twypisywanej przez `dirs', poczÄ…wszy od zera. Na przykÅ‚ad: `popd -0'\n" +" \t\tusuwa pierwszy katalog, `popd -1' usuwa drugi.\n" +" \n" +" Zawartość stosu katalogów można zobaczyć za pomocÄ… polecenia `dirs'.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędny argument lub zmiana " +"katalogu\n" +" siÄ™ nie powiedzie." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Wypisanie stosu katalogów.\n" +" \n" +" Wypisanie listy aktualnie pamiÄ™tanych katalogów. Katalogi umieszczane " +"sÄ…\n" +" na liÅ›cie za pomocÄ… polecenia `pushd'; można cofać siÄ™ w obrÄ™bie listy\n" +" za pomocÄ… polecenia `popd'.\n" +" \n" +" Opcje:\n" +" -c\twyczyszczenie stosu katalogów poprzez usuniÄ™cie wszystkich jego\n" +" \t\telementów\n" +" -l\tnieużywanie wersji skróconej wersji z tyldÄ… przy wypisywaniu\n" +" \t\tkatalogów wzglÄ™dem katalogu domowego\n" +" -p\twypisanie katalogów ze stosu w osobnych wierszach\n" +" -v\twypisanie katalogów ze stosu w osobnych wierszach, poprzedzajÄ…c\n" +" \t\tkażdy jego pozycjÄ… na stosie\n" +" \n" +" Argumenty:\n" +" +N\tWypisanie N-tej pozycji liczÄ…c od lewej strony listy wypisywanej\n" +" \t\tprzez dirs wywoÅ‚ane bez opcji, poczÄ…wszy od zera.\n" +" \n" +" -N\tWypisanie N-tej pozycji liczÄ…c od prawej strony listy wypisywanej\n" +" \t\tprzez dirs wywoÅ‚ane bez opcji, poczÄ…wszy od zera.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Ustawianie i anulowanie opcji powÅ‚oki.\n" +" \n" +" Zmiana ustawienia każdej z NAZWY-OPCJI. Bez argumentów bÄ™dÄ…cych " +"opcjami,\n" +" wypisywane sÄ… wszystkie podane NAZWY-OPCJI, lub wszystkie opcje " +"powÅ‚oki,\n" +" jeÅ›li nie podano NAZW-OPCJI, wraz z zaznaczeniem włączonych.\n" +" \n" +" Opcje:\n" +" -o\tograniczenie NAZW-OPCJI do używanych z `set -o'\n" +" -p\twypisanie opcji powÅ‚oki z okreÅ›leniem stanu\n" +" -q\tpominiÄ™cie wyjÅ›cia\n" +" -s\twłączenie (ustawienie) każdej NAZWY-OPCJI\n" +" -u\twyłączenie (anulowanie) każdej NAZWY-OPCJI\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda jeÅ›li NAZWA-OPCJI jest włączona; niepowodzenie, " +"jeÅ›li\n" +" podano błędnÄ… opcjÄ™ lub NAZWA-OPCJI jest wyłączona." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formatowanie i wypisanie ARGUMENTÓW zgodnie z FORMATEM.\n" +" \n" +" Opcje:\n" +" -v ZMIENNA\tprzypisanie wyjÅ›cia do podanej ZMIENNEJ powÅ‚oki zamiast\n" +" \t\twypisywania na standardowym wyjÅ›ciu\n" +" \n" +" FORMAT jest Å‚aÅ„cuchem znakowym zawierajÄ…cym trzy rodzaje obiektów:\n" +" zwykÅ‚e znaki, które sÄ… kopiowane na standardowe wyjÅ›cie; znaki " +"sekwencji\n" +" sterujÄ…cych, które sÄ… przeksztaÅ‚cane i kopiowane na standardowe " +"wyjÅ›cie;\n" +" oraz sekwencje formatujÄ…ce, z których każda powoduje wypisanie " +"kolejnego\n" +" argumentu.\n" +" \n" +" Poza standardowymi sekwencjami formatujÄ…cymi opisanymi w printf(1) oraz\n" +" printf(3), printf interpretuje:\n" +" \n" +" %b\trozwiniÄ™cie sekwencji z odwrotnym ukoÅ›nikiem w odpowiadajÄ…cym\n" +" \t\targumencie\n" +" %q\tcytowanie argumentu w sposób umożliwiajÄ…cy użycie na wejÅ›ciu\n" +" \t\tpowÅ‚oki\n" +" %(fmt)T\twypisanie Å‚aÅ„cucha daty-czasu otrzymanego z użycia FMT jako\n" +" \t Å‚aÅ„cucha formatujÄ…cego dla strftime(3)\n" +" \n" +" Format jest używany ponownie w razie potrzeby w celu pochÅ‚oniÄ™cia\n" +" wszystkich argumentów. JeÅ›li argumentów jest mniej, niż wymaga format,\n" +" nadmiarowe sekwencje zachowujÄ… siÄ™ tak, jakby podano wartość zerowÄ… lub\n" +" Å‚aÅ„cuch pusty.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub zapis albo\n" +" przypisanie zakoÅ„czy siÄ™ niepowodzeniem." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"OkreÅ›lenie sposobu dopeÅ‚niania argumentów przez Readline.\n" +" \n" +" OkreÅ›lenie dla każdej NAZWY sposobu dopeÅ‚niania argumentów. JeÅ›li nie\n" +" podano opcji, wypisywane sÄ… istniejÄ…ce specyfikacje dopeÅ‚niania w " +"sposób\n" +" pozwalajÄ…cy na ich ponowne użycie jako wejÅ›cie.\n" +" \n" +" Opcje:\n" +" -p\twypisanie istniejÄ…cych dopeÅ‚nieÅ„ w formacie do ponownego użycia\n" +" -r\tusuniÄ™cie specyfikacji dopeÅ‚niania dla każdej NAZWY lub, jeÅ›li\n" +" \t\tnie podano NAZW, wszystkich specyfikacji dopeÅ‚niania\n" +" -D\tstosowanie dopeÅ‚niania i akcji domyÅ›lnie dla poleceÅ„ bez\n" +" \t\tokreÅ›lonych żadnych konkretnych reguÅ‚ dopeÅ‚niania\n" +" -E\tstosowanie dopeÅ‚niania i akcji dla \"pustych\" poleceÅ„ -\n" +" \t\tpróby dopeÅ‚nienia w pustej linii\n" +" -I\tstosowanie dopeÅ‚niania i akcji do poczÄ…tkowego sÅ‚owa (zwykle\n" +" \t\tpolecenia)\n" +" \n" +" Przy próbie dopeÅ‚nienia akcje sÄ… wykonywane w kolejnoÅ›ci takiej, jak\n" +" wielkie litery wymienione powyżej. JeÅ›li podano wiele opcji, opcja -D\n" +" ma priorytet nad -E, a obie majÄ… priorytet nad -I.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Wypisanie możliwych uzupeÅ‚nieÅ„ w zależnoÅ›ci od opcji.\n" +" \n" +" Przeznaczone do wykorzystania w funkcjach powÅ‚oki generujÄ…cych możliwe\n" +" uzupeÅ‚nienia. Gdy podany jest opcjonalny argument SÅOWO, generowane sÄ…\n" +" uzupeÅ‚nienia pasujÄ…ce do SÅOWA.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Zmiana lub wyÅ›wietlenie opcji dopeÅ‚niania.\n" +" \n" +" Zmiana opcji dopeÅ‚niania dla każdej NAZWY lub, jeÅ›li nie podano NAZW,\n" +" aktualnie wykonywanego dopeÅ‚niania. JeÅ›li nie podano OPCJI, wypisanie\n" +" opcji dopeÅ‚niania dla każdej NAZWY lub bieżącej specyfikacji " +"dopeÅ‚niania.\n" +" \n" +" Opcje:\n" +" \t-o opcja\tUstawienie podanej OPCJI dopeÅ‚niania dla każdej NAZWY\n" +" \t-D\t\tZmiana opcji dla \"domyÅ›lnego\" dopeÅ‚niania polecenia\n" +" \t-E\t\tZmiana opcji dla dopeÅ‚niania \"pustego\" polecenia\n" +" \t-I\t\tZmiana opcji dla dopeÅ‚niania dla poczÄ…tkowego sÅ‚owa\n" +" \n" +" Użycie `+o' zamiast `-o' wyłącza podanÄ… opcjÄ™.\n" +" \n" +" Argumenty:\n" +" \n" +" Każda NAZWA odnosi siÄ™ do polecenia, dla którego specyfikacja " +"dopeÅ‚niania\n" +" musi być wczeÅ›niej zdefiniowana przy użyciu polecenia wbudowanego\n" +" `complete'. JeÅ›li nie podano NAZW, compopt musi być wywoÅ‚ane z funkcji\n" +" aktualnie generujÄ…cej dopeÅ‚nienia, wtedy zmieniane sÄ… opcje dla " +"aktualnie\n" +" wykonywanego generatora dopeÅ‚nieÅ„.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub NAZWA nie ma\n" +" zdefiniowanej specyfikacji dopeÅ‚niania." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Odczyt linii ze standardowego wejÅ›cia do zmiennej tablicowej indeksowanej.\n" +" \n" +" Odczyt linii ze standardowego wejÅ›cia (lub deskryptora FD, jeÅ›li podano\n" +" opcjÄ™ -u) do zmiennej tablicowej indeksowanej TABLICA. Zmienna MAPFILE\n" +" jest domyÅ›lnÄ… TABLICÄ„.\n" +" \n" +" Opcje:\n" +" -d ogr\tUżycie OGRanicznika do koÅ„czenia linii zamiast znaku nowej " +"linii\n" +" -n liczba\tSkopiowanie maksymalnie podanej LICZBY linii. JeÅ›li LICZBA\n" +" \t\t\twynosi 0, kopiowane sÄ… wszystkie linie.\n" +" -O poczÄ…tek\tRozpoczÄ™cie wpisywania do TABLICY od indeksu POCZÄ„TKU.\n" +" \t\t\tDomyÅ›lny indeks wynosi 0.\n" +" -s liczba\tPominiÄ™cie pierwszych LICZBA odczytanych linii.\n" +" -t\tUsuniÄ™cie koÅ„cowego znaku koÅ„ca linii z każdej wczytanej linii.\n" +" -u fd\tOdczyt linii z deskryptora FD zamiast standardowego wejÅ›cia.\n" +" -C wywoÅ‚anie\tObliczenie WYWOÅANIA po odczycie każdego CO-ILE linii.\n" +" -c co-ile\tLiczba linii do wczytania miÄ™dzy każdym WYWOÅANIEM.\n" +" \n" +" Argumenty:\n" +" TABLICA\tNazwa zmiennej tablicowej do użycia na dane z pliku.\n" +" \n" +" JeÅ›li podano -C bez -c, domyÅ›lnym krokiem jest 5000. Podczas obliczania\n" +" WYWOÅANIA jest przekazywany indeks do nastÄ™pnego elementu tablicy, " +"który\n" +" ma być przypisany oraz - jako kolejne argumenty - linia do przypisania.\n" +" \n" +" JeÅ›li nie podano jawnie poczÄ…tku, mapfile czyÅ›ci TABLICĘ przed\n" +" przypisywaniem.\n" +" \n" +" Stan wyjÅ›ciowy:\n" +" Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub TABLICA jest " +"tylko\n" +" do odczytu, lub nie jest tablicÄ… indeksowanÄ…." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Odczyt linii z pliku do zmiennej tablicowej.\n" +" \n" +" Synonim polecenia `mapfile'." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Zwraca kontekst wywoÅ‚ania bieżącego podprogramu.\n" +#~ " \n" +#~ " Bez WYRAÅ»ENIA zwraca " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: proces %5ld (%s) w potoku" + +#~ msgid "Unknown Signal #" +#~ msgstr "Nieznany sygnaÅ‚ #" diff --git a/bash-5.1/po/pt.gmo b/bash-5.1/po/pt.gmo new file mode 100644 index 0000000000000000000000000000000000000000..a66d7c7c51fdfffc942dd4819f28fe4e9c27edaa GIT binary patch literal 159207 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, 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: bash-5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-01-09 07:09+0000\n" +"Last-Translator: Pedro Albuquerque \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=n !=1;\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "subscrito de matriz inválido" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: a remover atributo nameref" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: impossível converter matriz indexada para associativa" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: chave de matriz associativa inválida" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: impossível atribuir a índice não numérico" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: tem de usar subscrito ao atribuir a matriz associativa" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: impossível criar: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: impossível encontrar mapa de teclado para o " +"comando" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: o 1º carácter não-espaço não é \"\"\"" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "sem \"%c\" de fecho em %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: separador dois pontos em falta" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "\"%s\": impossível desassociar" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "expansão: impossível alocar memória para %s" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "expansão: falha ao alocar memória para %u elementos" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "expansão: falha ao alocar memória para \"%s\"" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "\"%s\": aliás inválido" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "Edição de linha não activada" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "\"%s\": mapa de teclado inválido" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: impossível ler: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "\"%s\": nome de função desconhecido" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s: não tem associação a qualquer tecla.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s pode ser chamado via " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "\"%s\": impossível desassociar" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "total de ciclos" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "só tem significado num ciclo \"for\", \"while\" ou \"until\"" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Devolver o contexto da actual chamada a sub-rotina.\n" +" \n" +" Sem EXPR, devolve \"$linha $nomefich\". Com EXPR, devolve\n" +" \"$linha $sub-rotina $nomefich\"; esta informação extra pode ser usada\n" +" para obter um rasto da pilha.\n" +" \n" +" O valor de EXPR indica quantas chamadas deve recuar antes da\n" +" actual; a chamada superior é a chamada 0.\n" +" \n" +" Estado de saída:\n" +" Devolve 0 a não ser que a consola não esteja a executar uma função ou " +"EXPR\n" +" seja inválida." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME não definida" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "demasiados argumentos" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "pasta nula" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD não definida" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "linha %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "aviso: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: uso: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: a opção requer um argumento" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: requer um argumento numérico" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: não encontrado" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: opção inválida" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nome de opção inválido" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "\"%s\": identificador inválido" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "número octal inválido" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "número hexadecimal inválido" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "número inválido" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: especificação de sinal inválida" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "\"%s\": especificação de pid ou tarefa inválida" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: variável só de leitura" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s fora do intervalo" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argumento" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s fora do intervalo" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: tarefa inexistente" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: sem controlo da tarefa" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "sem controlo da tarefa" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: restrita" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "restrita" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: não é interno da consola" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "erro de escrita: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "erro ao definir atributos do terminal: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "erro ao obter atributos do terminal: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: erro ao obter a pasta actual: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: especificação de tarefa ambígua" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "ajuda indisponível nesta versão" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: impossível desactivar: %s só de leitura" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: impossível desactivar" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nome de acção inválido" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: sem especificação de conclusão" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "aviso: a opção -F pode não resultar como esperado" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "aviso: a opção -C pode não resultar como esperado" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "a função de conclusão não está em execução" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "só pode ser usado numa função" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: variável de referência não pode ser uma matriz" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: não são permitidas auto-referências de nameref" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: referência circular de nome" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "\"%s\": nome de variável inválido para referência de nome" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "impossível usar \"-f\" para fazer funções" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: função só de leitura" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: atribuição de matriz composta citada obsoleta" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: impossível destruir variáveis de matriz assim" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: impossível converter matriz associativa em indexada" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "carregamento dinâmico indisponível" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "impossível abrir objecto partilhado %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "impossível encontrar %s no objecto partilhado %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: não carregada dinamicamente" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "carregamento da função %s devolve falha (%d): não carregada" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: não carregada dinamicamente" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: impossível eliminar: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: é uma pasta" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: não é um ficheiro normal" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: ficheiro muito grande" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: impossível executar o binário" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: impossível executar: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "logout\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "não é consola de sessão: use \"exit\"" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Há tarefas interrompidas.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Há tarefas em curso.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "sem comando encontrado" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "especificação de histórico" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: impossível abrir ficheiro temporário: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "actual" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "tarefa %d começou sem controlo de tarefa" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opção ilegal -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opção requer um argumento -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hashing desactivado" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tabela de hash vazia\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "sucessos\tcomando\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Comandos de consola correspondentes à palavra-chave \"" +msgstr[1] "Comandos de consola correspondentes a palavras-chave \"" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"nenhum tópico de ajuda para \"%s\". Tente \"help help\", \"man -k %s\" ou " +"\"info %s\"." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: impossível abrir: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Estes comandos de consola são definidos internamente. Insira \"help\" para " +"ver a lista.\n" +"Insira \"help nome\" para saber mais sobre a função \"nome\".\n" +"Use \"info bash\" para saber mais sobre a consola em geral.\n" +"Use \"man -k ou \"info\" para saber mais sobre comandos não listados.\n" +"\n" +"Um asterisco (*) junto a um nome significa que o comando está inactivo.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "impossível usar mais de um -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "posição do histórico" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: datação inválida" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: falha na expansão do histórico" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: falha inlib" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "não são permitidas mais opções com \"-x\"" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: os argumentos têm de ser IDs de processos ou tarefas" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Erro desconhecido" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "esperada expressão" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: não é uma matriz indexada" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: especificação de descritor de ficheiro inválida" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: descritor de ficheiro inválido: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: total de linhas inválido" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: origem de matriz inválida" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: callback inválida" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "nome de variável de matriz vazio" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "requerido suporte a variáveis de matriz" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "%s: carácter de formato em falta" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "\"%c\": especificação de formato de hora inválida" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "\"%c\": carácter de formato inválido" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "aviso: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "problema de análise de formato: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "dígito hex em falta para \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "dígito unicode em falta para \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "nenhuma outra pasta" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: argumento inválido" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "pilha de pastas vazia" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "índice da pilha de pastas" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Mostrar a lista de pastas actualmente lembradas. As pastas\n" +" entram na lista com o comando \"pushd\"; pode recuar\n" +" na lista com o comando \"popd\".\n" +" \n" +" Opções:\n" +" -c\tlimpar a pilha de pastas eliminando todos os elementos\n" +" -l\tnão imprimir versões com prefixo til de pastas relativas\n" +" \tà sua pasta home\n" +" -p\timprimir a pilha de pastas com uma entrada por linha\n" +" -v\timprimir a pilha de pastas com uma entrada por linha com a sua\n" +" \tposição na pilha como prefixo\n" +" \n" +" Argumentos:\n" +" +N\tmostra a N entrada a contar da esquerda da lista mostrada por\n" +" \tpastas quando chamada sem opções, começando com zero.\n" +" \n" +" -N\tmostra a N entrada a contar da direita da lista mostrada por\n" +" \tpastas quando chamada sem opções, começando com zero." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Adiciona uma pasta ao cimo da pilha de pastas ou roda a pilha\n" +" tornando a pasta actual o novo cimo da pilha.\n" +" Sem argumentos, troca as duas pastas superiores.\n" +" \n" +" Opções:\n" +" -n\tSuprime a troca normal de pastas ao adicionar\n" +" \tpastas à pilha, só a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRoda a pilha de forma a que a N pasta (contando\n" +" \tda esquerda da lista mostrada por pastas, começando com\n" +" \tzero) fique no topo.\n" +" \n" +" -N\tRoda a pilha de forma a que a N pasta (contando\n" +" \tda direita da lista mostrada por pastas, começando com\n" +" \tzero) fique no topo.\n" +" \n" +" PST\tAdiciona PST ao cimo da pilha de pastas, tornando-a a\n" +" \tnova pasta de trabalho actual.\n" +" \n" +" O \"dirs\" interno mostra a pilha de pastas." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Remove entradas da pilha de pastas. Sem argumentos, remove\n" +" a pasta superior da pilha e muda para a nova pasta de topo.\n" +" \n" +" Opções:\n" +" -n\tSuprime a troca normal de pastas ao remover\n" +" \tpastas da pilha, só a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRemove a N pasta contando da esquerda da lista\n" +" \tmostrada por pastas, começando com zero Por exemplo: \"popd +0\"\n" +" \tremove a primeira pasta, \"popd +1\" a segunda.\n" +" \n" +" -N\tRemove a N pasta contando da direita da lista\n" +" \tmostrada por pastas, começando com zero Por exemplo: \"popd +0\"\n" +" \tremove a última pasta, \"popd +1\" a penúltima.\n" +" \n" +" O \"dirs\" interno mostra a pilha de pastas." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: especificação de inacção inválida" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "erro de leitura: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "só pode usar \"return\" a partir de uma função ou script baseado" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "impossível desactivar simultaneamente uma função e uma variável" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: não é variável de matriz" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: não é função" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: impossível exportar" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "total de trocas" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "impossível definir e desactivar opções da consola em simultâneo" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: nome de opção da consola inválido" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "requerido argumento de nome de ficheiro" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: ficheiro não encontrado" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "impossível suspender" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "impossível suspender uma consola de sessão" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s usa o aliás \"%s\"\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s é palavra-chave da consola\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s é uma função\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s é opção interna especial da consola\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s é opção interna da consola\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s é %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s tem hash (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: argumento de limite inválido" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "\"%c\": comando errado" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: impossível obter limite: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "limite" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: impossível modificar limite: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "número octal" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "\"%c\": operador de modo simbólico inválido" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "\"%c\": carácter de modo simbólico inválido" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " linha " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "último comando: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "A abortar..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORM.: " + +#: error.c:462 +msgid "unknown command error" +msgstr "erro de comando desconhecido" + +#: error.c:463 +msgid "bad command type" +msgstr "tipo de comando errado" + +#: error.c:464 +msgid "bad connector" +msgstr "conector errado" + +#: error.c:465 +msgid "bad jump" +msgstr "salto errado" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variável desassociada" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aDemasiada inacção à espera de entrada: sessão terminada\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "impossível redireccionar entrada padrão de /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "FORMATOHORA: \"%c\": carácter de formato inválido" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] ainda existe" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "erro de pipe" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: nível máximo de aninhamento de eval excedido (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: nível máximo de aninhamento de fonte excedido (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: nível máximo de aninhamento de função excedido (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restrito: impossível especificar \"/\" em nomes de comando" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: comando não encontrado" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: interpretador errado" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: impossível executar binário: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "%s: é uma opção interna especial" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "impossível duplicar fd %d para fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "nível de recursão da expressão excedido" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "sub-fluxo da pilha de recursividade" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "erro de sintaxe na expressão" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "tentativa de atribuição a não-variável" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "erro de sintaxe na atribuição de variável" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "divisão por 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "problema: símbolo expassign errado" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "\":\" esperados para expressão condicional" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "expoente menor que 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "identificador esperado após pré-incremento ou pré-decremento" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "\")\" em falta" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "erro de sintaxe: operando esperado" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "erro de sintaxe: operador aritmético inválido" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (símbolo de erro é \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "base aritmética inválida" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: total de linhas inválido" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "valor muito grande para a base" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: erro de expressão\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: impossível aceder a pastas-mãe" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "impossível repor modo nodelay para fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"impossível alocar novo descritor de ficheiro para entrada bash de fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: buffer já existe para o novo fd %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pipe pgrp" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "pid %d aparece em tarefa em execução %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "a eliminar tarefa interrompida %d com grupo de processo %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) marcado como ainda activo" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: pid não existente" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Sinal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Feito" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Interrompido" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Interrompido(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Em execução" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Feito(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Sair de %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Estado desconhecido" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(núcleo despejado) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid filho (%ld para %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld não é um filho desta consola" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: sem registo do processo %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_tarefa: tarefa %d está interrompida" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: tarefa inexistente" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: tarefa terminada" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: tarefa %d já em 2º plano" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: a ligar WNOHANG para evitar bloquieo indefinido" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: linha %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (núcleo despejado)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd agora: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp falhou" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: sem controlo de tarefa em 2º plano" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: disciplina de linha" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "impossível definir grupo de processo do terminal (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "não há controlo de tarefa nesta consola" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: asserção falhada: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: asserção frustrada\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "desconhecido" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: bloqueio na lista livre clobbered" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: chamado com argumento de bloco já liberto" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: chamado com argumento de bloco não alocado" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: sub-fluxo detectado; mh_nbytes fora do intervalo" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: sub-fluxo detectado; mh_nbytes fora do intervalo" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: tamanho dos pontos inicial e final difere" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: chamado com argumento de bloco não alocado" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: sub-fluxo detectado; mh_nbytes fora do intervalo" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: sub-fluxo detectado; mh_nbytes fora do intervalo" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: tamanho dos pontos inicial e final difere" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: tabela de alocação cheia com FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p já na tabela como alocado?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p já na tabela como livre?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "base inválida" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: anfitrião desconhecido" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: serviço inválido" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: especificação de caminho de rede errada" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "operações de rede não suportadas" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: não pode alterar o idioma (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: não pode alterar o idioma (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Tem correio em $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Tem novo correio em $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "O correio em %s já foi lido\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "erro de sintaxe: requerida expressão aritmética" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "erro de sintaxe: \";\" inesperado" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "erro de sintaxe: \"((%s))\"" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tipo de instrução %d errado" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"here-document na linha %d delimitado por fim-de-ficheiro (desejado \"%s\")" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"make_redirection: instrução de redireccionamento \"%d\" fora do intervalo" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"consola_getc: consola_input_line_size (%zu) excede SIZE_MAX (%lu): linha " +"truncada" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "total here-document máximo excedido" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "EOF inesperado ao procurar \"%c\" correspondentes" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "EOF inesperado ao procurar \"]]\"" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "erro de sintaxe em expressão condicional: símbolo inesperado \"%s\"" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "erro de sintaxe em expressão condicional" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "símbolo inesperado \"%s\", esperado \")\"" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "esperado \")\"" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argumento \"%s\" inesperado para operador unário condicional" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "argumento inesperado para operador unário condicional" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "símbolo \"%s\" inesperado, esperado operador binário condicional" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "esperado operador binário condicional" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argumento \"%s\" inesperado para operador binário condicional" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "argumento inesperado para operador binário condicional" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "símbolo \"%c\" inesperado em comando condicional" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "símbolo \"%s\" inesperado em comando condicional" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "símbolo %d inesperado em comando condicional" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "erro de sintaxe junto a símbolo \"%s\" inesperado" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "erro de sintaxe junto a \"%s\"" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "erro de sintaxe: fim de ficheiro inesperado" + +#: parse.y:6365 +msgid "syntax error" +msgstr "erro de sintaxe" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use \"%s\" para sair da consola.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "EOF inesperado ao procurar o \")\" correspondente" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: função \"%s\" não encontrada" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: possível ciclo de repetição" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: conector \"%d\" errado" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: descritor de ficheiro inválido" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: ponteiro de ficheiro NULL" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: \"%c\": carácter de formato inválido" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "descritor de ficheiro fora de alcance" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: redireccionamento ambíguo" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: impossível sobrescrever ficheiro existente" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricto: impossível redireccionar saída" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "impossível criar ficheiro temporário para here-document: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: impossível atribuir fd a variável" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port não suportado em trabalho de rede" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "erro de redireccionamento: impossível duplicar fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "impossível encontrar /tmp, por favor crie-a!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp tem de ser um nome de pasta válido" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "modo pretty-printing ignorado em consolas interactivas" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opção inválida" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "impossível definir uid como %d: uid efectiva %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "impossível definir gid como %d: gid efectiva %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "impossível iniciar o depurador; modo de depuração desactivado" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: é uma pasta" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Não tenho nome!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versão %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Uso:\t%s [opção longa GNU] [opção] ...\n" +"\t%s [opção longa GNU] [opção] script-file ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Opções longas GNU:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Opções da consola:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\tcomando -ilrsD ou -c ou -O shopt_option\t\t(só chamada)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\topção -%s ou -o\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Insira \"%s -c \"help set\"\" para mais informação sobre opções da consola.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Insira \"%s -c help\" para mais informação sobre comandos internos da " +"consola.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Use o comando \"bashbug\" para reportar erros.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "Página inicial do bash: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Ajuda geral para usar programas GNU: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: operação inválida" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Sinal falso" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Desligar" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Interromper" + +#: siglist.c:58 +msgid "Quit" +msgstr "Sair" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Instrução ilegal" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Instrução ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "Instrução EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Excepção de vírgula flutuante" + +#: siglist.c:86 +msgid "Killed" +msgstr "Morto" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Erro de bus" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Falha de segmentação" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Chamada de sistema errada" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Pipe quebrado" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Alarme" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Terminado" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Condição IO urgente" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Parado (sinal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Continuar" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Morte ou paragem do filho" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Parado (entrada tty)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Parado (saída tty)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O pronto" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Limite do CPU" + +#: siglist.c:154 +msgid "File limit" +msgstr "Limite do ficheiro" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarme (virtual)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarme (perfil)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Janela alterada" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Bloqueio de registo" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Sinal de utilizador 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Sinal de utilizador 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "entrada de dados HTF pendente" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "falha de energia iminente" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "acidente do sistema iminente" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "migrar processo para outro CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "erro de programação" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "concedido modo de monitor HTF" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "retirado modo de monitor HTF" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "sequência de som HTF terminou" + +#: siglist.c:214 +msgid "Information request" +msgstr "Pedido de informação" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Sinal desconhecido #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "má substituição: sem \"%s\" de fecho em %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: impossível atribuir lista a membro de matriz" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "impossível fazer pipe para substituição de processo" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "impossível fazer filho para substituição de processo" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "impossível abrir pipe chamado %s para leitura" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "impossível abrir pipe chamado %s para escrita" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "imossível duplicar pipe chamado %s como fd %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "substituição de comando: byte nulo ignorado na entrada" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "impossível fazer pipe para substituição de comando" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "impossível fazer filho para substituição de comando" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: impossível duplicar pipe como fd 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: nome de variável inválido para referência de nome" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: expansão indirecta inválida" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: nome de variável inválido" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parâmetro não definido" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parâmetro nulo ou não definido" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expressão de sub-cadeia < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: má substituição" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: impossível atribuir desta forma" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"futuras versões da consola vão forçar a avaliação como uma substituição " +"aritmética" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "má substituição: sem \"\"\" de fecho em %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "sem par:%s" + +#: test.c:147 +msgid "argument expected" +msgstr "argumento esperado" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: expressão inteira esperada" + +#: test.c:265 +msgid "`)' expected" +msgstr "\")\" esperado" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "\")\" esperado, encontrado %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: operador bináro esperado" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: operador unáro esperado" + +#: test.c:881 +msgid "missing `]'" +msgstr "\"]\" em falta" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "erro de sintaxe: \";\" inesperado" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "número de sinal inválido" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "gestor de trap: nível máximo de gestor de captura excedido (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: valor errado em trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: gestor de sinal é SIG_DFL, a reenviar %d (%s) para mim " +"próprio" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: sinal errado %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "erro ao importar definição de função para \"%s\"" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "nível da consola (%d) muito alto, a repor para 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variável: sem contexto de função no âmbito actual" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: não pode atribuir um valor à variável" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: a atribuir inteiro à referência de nome" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: sem contexto de função no âmbito actual" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s tem exportstr nulo" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "carácter %d inválido em exportstr para %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "sem \"=\" em exportstr para %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: cabeça de consola_variables não é contexto de função" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: sem contexto de global_variables" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: cabeça de consola_variables não é âmbito de ambiente temporário" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: impossível abrir como FICHEIRO" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: valor inválido para descritor de ficheiro trace" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: valor de compatibilidade fora do intervalo" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licença GPLv3+: GNU GPL versão 3 ou posterior \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versão %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Este é um programa gratuito; pode alterá-lo e distribuí-lo à vontade." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Não há QUALQUER GARANTIA, até aos limites previstos pela Lei." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: impossível alocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: impossível alocar %lu bytes" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: impossível alocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: impossível alocar %lu bytes" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nome[=valor] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] nome [nome ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m mapa de teclado] [-f ficheiro] [-q nome] [-u nome] [-r " +"seqtecl] [-x seqtecl:comando-consola] [seqtecl:função-readline ou comando-" +"readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [consola-interno [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [pst]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "comando [-pVv] comando [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [nome[=valor] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nome[=valor] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [opção] nome[=valor] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f ficheiro] [nome ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts optstring name [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "" +"exec [-cl] [-a nome] [comando [argumentos ...]] [redireccionamento ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ename] [-lnr] [primeiro] [último] ou fc -s [pat=rep] [comando]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [job_spec ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p caminho] [-dt] [nome ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [padrão ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d desvio] [n], history -anrw [ficheiro] ou history -ps arg " +"[arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "tarefas [-lnprs] [tarefaspec ...] ou tarefas -x comando [args]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [tarefaspec ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | tarefaspec ... ou kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a matriz] [-d delim] [-i texto] [-n ncars] [-N ncars] [-p " +"prompt] [-t inacção] [-u fd] [nome ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opção] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [nome ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [nome[=valor] ...] ou export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [nome[=valor] ...] ou readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source ficheiro [argumentos]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". ficheiro [argumentos]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signal_spec ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] nome [nome ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [modo]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOME [in PALAVRAS ... ] ; do COMANDOS; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do COMANDOS; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NOME [in PALAVRAS ... ;] do COMANDOS; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else " +"COMANDOS; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMANDOS; do COMANDOS; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMANDOS; do COMANDOS; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NOME] comando [redireccionamentos]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "nome de função { COMANDOS ; } ou nome () { COMANDOS ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ COMANDOS ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( expressão ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ expressão ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variáveis - nomes e significados de algumas variáveis da consola" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | pasta]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [nomeopção ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] formato [argumentos]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opção] [-A acção] [-G " +"padrãoglobal] [-W listapalavras] [-F função] [-C comando] [-X filterpat] [-" +"P prefixo] [-S sufixo] [nome ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o opção] [-A acção] [-G padrglob] [-W listpal] [-" +"F função] [-C comando] [-X padrfiltro] [-P prefixo] [-S sufixo] [palavra]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o opção] [-DEI] [nome ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C " +"callback] [-c quantia] [matriz]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C " +"callback] [-c quantum] [matriz]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definir ou mostrar aliás.\n" +" \n" +" Sem argumentos, \"alias imprime a lista de aliás na forma\n" +" reutilizável \"alias NOME=VALOR\" na saída padrão.\n" +" \n" +" Com argumetos, é definido um aliás para cada NOME cujo VALOR é dado.\n" +" Um espaço final em VALOR causa uma verificação à palavra seguinte para\n" +" substituição do aliás quando o aliás for expandido.\n" +" \n" +" Opções:\n" +" -p\timprimir todos os aliás definidos em formato reutilizável\n" +" \n" +" Estado de saída:\n" +" alias devolve verdadeiro a não ser que seja fornecido um NOME para o " +"qual\n" +"ainda não haja um aliás." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Remover cada NOME da lista de aliás definidos.\n" +" \n" +" Opções:\n" +" -a\tremove todas as definições de aliás\n" +" \n" +" Devolve sucesso a não ser que NOME seja um aliás inexistente." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Definir associações de teclas e variáveis para Readline.\n" +" \n" +" Associar uma sequência de teclas a uma função ou macro Readline, ou\n" +" defina uma variável Readline. A sintaxe de argumento não-opção é " +"equivalente\n" +" à encontrada em ~/.inputrc, mas tem de ser passada como argumento " +"único:\n" +" e.g., bind \"\"\\C-x\\C-r\": re-read-init-file\".\n" +" \n" +" Opções:\n" +" -m maptecl Use MAPTECL como mapa de teclado para a " +"duração deste\n" +" comando. Nomes de mapas aceitáveis são " +"emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, " +"vi-move,\n" +" vi-command, e vi-insert.\n" +" -l Listar nomes de funções.\n" +" -P Listar nomes de funções e associações.\n" +" -p Listar funções funçãos e associações de " +"forma a que possam\n" +" ser reutilizados como entrada.\n" +" -S Listar sequências de teclas que chamem " +"macros e seus valores\n" +" -s Listar sequências de teclas que chamem " +"macros e seus valores\n" +" de forma a que possam ser reutilizados como " +"entrada.\n" +" -V Listar nomes de variáveis e seus valores\n" +" -v Listar nomes de variáveis e seus valores de " +"forma a que possam\n" +" ser reutilizados como entrada.\n" +" -q nome-função Consultar que teclas chamaram a função em " +"causa.\n" +" -u nome-função Unbind all keys which are bound to the named " +"função.\n" +" -r seqtecl Remover associação de SEQTECL.\n" +" -f nomefich Ler associações de teclas a partir de " +"NOMEFICH.\n" +" -x seqtecl:comando-consola\tCausa a execuçaõ de COMANDO-SHELL " +"quando\n" +" \t\t\t\tSEQTECL for inserido.\n" +" -X Listarsequências de teclas associadas a -x e " +"comandos ligados\n" +" de forma a que possam ser reutilizados como " +"entrada.\n" +" \n" +" Estado de saída:\n" +" bind devolve 0 a não ser que seja dada uma opção desconhecida ou ocorra " +"um erro." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Sair de ciclos for, while, ou until.\n" +" \n" +" Sai de um ciclo FOR, WHILE ou UNTIL. Se N for especificado, quebrar N " +"ciclos\n" +" envolventes.\n" +" \n" +" Estado de saída:\n" +" O estado de saída é 0 a não ser que N não seja maior ou igual que 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Retomar ciclos for, while, ou until.\n" +" \n" +" Retoma a iteração seguinte do ciclo FOR, WHILE ou UNTIL envolvente.\n" +" Se N for especificado, retoma o N-ésimo ciclo envolvente.\n" +" \n" +" Estado de saída:\n" +" O estado de saída é 0 a não ser que N não seja maior ou igual que 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Executa comandos internos da consola.\n" +" \n" +" Executa SHELL-INTERNO com argumentos ARGs sem realizar procura do " +"comando.\n" +" Útil quando deseja re-implementar um comando interno da consola como\n" +" função da consola, mas tem de executar o comando interno dentro da " +"função.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado de saída de SHELL-INTERNO ou falso se SHELL-INTERNO " +"não\n" +" for um comando interno da consola." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Devolver o contexto da actual chamada a sub-rotina.\n" +" \n" +" Sem EXPR, devolve \"$linha $nomefich\". Com EXPR, devolve\n" +" \"$linha $sub-rotina $nomefich\"; esta informação extra pode ser usada\n" +" para obter um rasto da pilha.\n" +" \n" +" O valor de EXPR indica quantas chamadas deve recuar antes da\n" +" actual; a chamada superior é a chamada 0.\n" +" \n" +" Estado de saída:\n" +" Devolve 0 a não ser que a consola não esteja a executar uma função ou " +"EXPR\n" +" seja inválida." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Alterar a pasta de trabalho da consola.\n" +" \n" +" Altera a pasta actual para PASTA. A PASTA predefinida é o valor da " +"variável\n" +" HOME.\n" +" \n" +" A variável CDPATH define o caminho de procura para a pasta que contém\n" +" PASTA. Nomes de pasta alternativos em CDPATH são separados por \":" +"\" (:).\n" +" Um nome de pasta nulo é equivalente à pasta actual. Se PASTA começar " +"com\n" +" uma barra (/), CDPATH não é usada.\n" +" \n" +" Se a pasta não for encontrada e a opção de consola \"cdable_vars\" " +"estiver definida,\n" +" a palavra é assumida como nome de variável. Se essa variável tiver um " +"valor,\n" +" será usado como PASTA.\n" +" \n" +" Opções:\n" +" -L\tforçar seguimento de ligações simbólicas: resolve ligações\n" +" \t\tsimbólicas em PASTA após processar instâncias de \"..\"\n" +" -P\tusa a estrutura física de pastas sem seguir ligações\n" +" \t\tsimbólicas: resolve ligações simbólicas em PASTA antes de\n" +" \t\tprocessar instâncias de \"..\"\n" +" -e\tse a opção -P for usada e a pasta de trabalho actual não puder\n" +" \t\tser determinada com sucesso, sair com\n" +" \t\testado não-zero\n" +" -@\tem sistemas que o suportam, apresentar um ficheiro com " +"atributos\n" +" \t\testendidos como uma pasta contendo os atributos do ficheiro.\n" +" \n" +" A predefinição é seguir ligações simbólicas, como se \"-L\" fosse " +"especificada.\n" +" \"..\" é processado colocando o componente de caminho imediatamente " +"anterior\n" +" como barra ou o começo de PASTA.\n" +" \n" +" Estado de saída:\n" +" Devolve 0 se a pasta for alterada e se $PWD for definida com sucesso " +"quando\n" +" -P é usada; caso contrário, não-zero." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Imprimir o nome da actual pasta de trabalho.\n" +" \n" +" Opções:\n" +" -L\tImprimir o valor de $PWD se nomear a actual pasta de\n" +" \t\ttrabalho\n" +" -P\timprimir a pasta física, sem quaisquer ligações simbólicas\n" +" \n" +" Por predefinição, \"pwd\" comporta-se como se \"-L\" fosse " +"especificada.\n" +" \n" +" Estado de saída:\n" +" Devolve 0 a não ser que seja indicada uma opçãoinválida ou a pasta " +"actual\n" +" não possa ser lida." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Comando nulo.\n" +" \n" +" Sem efeito; o comando não faz nada.\n" +" \n" +" Estado de saída:\n" +" Sempre com sucesso." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Devolve um resultado com sucesso.\n" +" \n" +" Estado de saída:\n" +" Sempre com sucesso." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Devolve um resultado sem sucesso.\n" +" \n" +" Estado de saída:\n" +" Falha sempre." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Executar um comando simples ou mostrar informação sobre comandos.\n" +" \n" +" Executa COMANDO com ARGS suprimindo procura de funções da consola ou " +"mostra\n" +" informação acerca dos COMANDOs especificados. Pode ser usado para " +"chamar comandos\n" +" em disco quando existe uma função com o mesmo nome.\n" +" \n" +" Opções:\n" +" -p usar valor predefinido para CAMINHO que garanta que se " +"encontram\n" +" todos os utilitários padrão\n" +" -v imprimir uma descrição de COMANDO similar ao interno \"type" +"\"\n" +" -V imprimir uma descrição mais detalhada de COMANDO\n" +" \n" +" Estado de saída:\n" +" Devolve o estado de saída de COMANDO ou falha se COMANDO não for " +"encontrado." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Define valores e atributos de variáveis.\n" +" \n" +" Declara variáveis e dá-lhes atributos. Se não indicar NOMEs,\n" +" mostrar os atributos e valores de todas as variáveis.\n" +" \n" +" Opções:\n" +" -f\trestringe acção ou exibição a nomes e definições de função\n" +" -F\trestringe exibição só a nomes de função (mais nº de linha e\n" +" \t\tficheiro fonte ao depurar)\n" +" -g\tcria variáveis globais quando usadas numa função da consola; " +"senão\n" +" \t\té ignorada\n" +" -p\tmostra atributos e valores de cada NOME\n" +" \n" +" Opções que definem atributos:\n" +" -a\tpara tornar NOMEs matrizes indexadas (se suportado)\n" +" -A\tpara tornar NOMEs matrizes associativas (se suportado)\n" +" -i\tpara dar a NOMEs o atributo \"integer\"\n" +" -l\tpara converter NOMEs em minúsculas ao atribuir\n" +" -n\ttornar NOME uma referência à variável chamada pelo seu valor\n" +" -r\tpara tornar NOMEs só de leitura\n" +" -t\tpara dar a NOMEs o atributo \"trace\"\n" +" -u\tpara converter NOMEs em maiúsculas ao atribuir\n" +" -x\tpara tornar NOMEs exportáveis\n" +" \n" +" Usar \"+\" em vez de \"-\" desliga o atributo indicado.\n" +" \n" +" Variáveis com o atributo integer têm avaliação aritmética (veja o\n" +" comando \"let\") realizada quando lhe é atribuído um valor.\n" +" \n" +" Quando usado numa função, \"declare\" torna NOMEs locais, como o " +"comando\n" +" \"local\". A opção \"-g\" suprime este comportamento.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que seja indicada uma opção inválida ou " +"ocorra um\n" +" erro de atribuição da variável." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Define variáveis e atributos.\n" +" \n" +" Um sinónimo para \"declare\". Veja \"help declare\"." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Define variáveis locais.\n" +" \n" +" Cria uma variável local chamada NOME e dá-lhe VALOR. OPÇÃO pode\n" +" ser qualquer opção aceite por \"declare\".\n" +" \n" +" Variáveis locais só podem ser usadas dentro de uma função; só são " +"visíveis\n" +" para a função onde foram definidas e para os seus filhos.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que uma opção inválida seja fornecida, " +"ocorra \n" +" um erro de atribuição ou a consola não esteja a executar uma função." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Escreve argumentos para a saída padrão.\n" +" \n" +" Mostrar ARGs, separados por espaço único e seguidos de nova linha (LF)\n" +" na saída padrão.\n" +" \n" +" Opções:\n" +" -n\tnaõ acrescentar nova linha\n" +" -e\tpermitir interpretação dos escapes seguintes com barra esquerda\n" +" -E\tsuprimir explicitamente interpretação de escapes com barra " +"esquerda\n" +" \n" +" \"echo\" interpreta os seguintes caracteres de escapes com barra " +"esquerda:\n" +" \\a\talerta (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuprimir mais saídas\n" +" \\e\tcarácter de escape\n" +" \\E\tcarácter de escape\n" +" \\f\tform feed\n" +" \\n\tnova linha (LF)\n" +" \\r\tcarriage return (CR)\n" +" \\t\ttabulação horizontal\n" +" \\v\ttabulação vertical\n" +" \\\\\tbarra esquerda (\"\\\")\n" +" \\0nnn\to carácter cujo código ASCII é NNN (octal). NNN pode ter\n" +" \t\tde 0 a 3 dígitos octais\n" +" \\xHH\to carácter de 8-bit cujo valor é HH (hexadecimal). HH\n" +" \t\tpode ter um ou dois dígitos hexadecimais\n" +" \\uHHHH\to carácter Unicode cujo valor é o valor hexadecimal HHHH.\n" +" \t\tHHHH pode ser de um a quatro dígitos hexadecimais.\n" +" \\UHHHHHHHH o carácter Unicode cujo valor é o valor hexadecimal\n" +" \t\tHHHHHHHH. HHHHHHHH pode ser de um a oito dígitos hexadecimais.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que ocorra um erro de escrita." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Escreve argumentos para a saída padrão.\n" +" \n" +" Mostrar ARGs na saída padrão seguidos de nova linha (LF).\n" +" \n" +" Opções:\n" +" -n\tnão acrescentar nova linha\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que ocorra um erro de escrita." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Activar e desactivar internos da consola.\n" +" \n" +" Activa e desactiva comandos internos da consola. Desativar permite\n" +" executar um comando de disco com o mesmo nome que comando interno\n" +" sem ter de usar um caminho completo.\n" +" \n" +" Opções:\n" +" -a\timprimir lista de internos mostrando se estão ou não activos\n" +" -n\tdesactivar cada NOME ou mostrar uma lista de internos " +"desactivados\n" +" -p\timprimir a lista de internos em formato reutilizável\n" +" -s\timprimir só os nomes de internos \"especiais\" Posix\n" +" \n" +" Opções que controlam o carregamento dinâmico:\n" +" -f\tCarregar interno NOME de objecto partilhado NOMEFICH\n" +" -d\tRemover um interno carregado com -f\n" +" \n" +" Sem opções, cada NOME é activado.\n" +" \n" +" Para usar o \"test\" encontado em $PATH em vez do interno da consola\n" +" insira \"enable -n test\".\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que NOME não seja um interno da consola ou " +"ocorra um erro." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Executa argumentos como comando da consola.\n" +" \n" +" Combina ARGs numa única cadeia, usa o resultado como entrada da " +"consola,\n" +" e executa os comandos resultantes.\n" +" \n" +" Estado de saída:\n" +" Devolve estado de saída do comando ou sucesso se o comando for nulo." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Analisa argumentos da opção.\n" +" \n" +" Getopts é usado pelos procedimentos da consola para analisar parâmetros " +"posicionais\n" +" como opções.\n" +" \n" +" CADEIAOPÇÕES contém as letras de opção a reconhecer; se uma letra\n" +" for seguida de \":\", espera-se que a opção tenha um argumento,\n" +" separado da opção por um espaço.\n" +" \n" +" Sempre que é chamado, getopts coloca a opção seguinte na variável\n" +" da consola $name, inicializa name se não existir e o índice do\n" +" argumento seguinte a processar na variável da consola OPTIND.\n" +" OPTIND é inicializado em 1 sempre que a consola ou um script da\n" +" shellé chamado. Quando uma opção requer um argumento, o\n" +" getopts coloca esse argumento na variável da consola OPTARG.\n" +" \n" +" O getopts reporta erros de duas formas. Se o primeiro carácter\n" +" de OPTCADEIA é \":\", o getopts usa um relatório de erro\n" +" silencioso. Neste modo não verá mensagens de erro. Se for vista uma\n" +" opção inválida is seen, o getopts põe o carácter de opção em OPTARG.\n" +" Se não houver um argumento requerido, o getopts põe um \":\" no NOME e\n" +" define OPTARG como o carácter de opção encontrado. Se o getopts não\n" +" estiver em modo silêncio e for vista uma opção inválida, o getopts\n" +" põe \"?\" no NOME e limpa OPTARG. Se não houver um argumento " +"requeriso,\n" +" é posto \"?\" no NOME, OPTARG é limpoe é imprimida uma mensagem de\n" +" diagnóstico.\n" +" \n" +" Se a variável da consola OPTERR tiver valor 0, o getopts desactiva a\n" +" impressão de mensagens de erro, mesmo que o 1º carácter de\n" +" CADEIAOPÇÕES não seja \":\". OPTERR tem o valor 1 predefinido.\n" +" \n" +" O getopts normalmente analisa os parâmetros posicionais ($0 - $9), mas " +"se\n" +" receber mais argumentos, são eles que são analisados.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso se encontrar uma opção; falha se o fim da opção for\n" +" encontrado ou se ocorrer um erro." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Substitui a consola com o comando indicado.\n" +" \n" +" Executar COMANDO, substituindo esta consola pelo programa " +"especificado.\n" +" ARGUMENTOS tornam-se os argumentos de COMANDO. Se COMANDO não for " +"especificado,\n" +" quaisquer redireccionamentos têm efeito na consola actual.\n" +" \n" +" Opções:\n" +" -a nome\tpassa NOME como argumento 0 a COMANDO\n" +" -c\texecuta COMANDO com um ambiente vazio\n" +" -l\tpõe uma barra no argumento 0 de COMANDO\n" +" \n" +" Se o comando não puder ser executado, uma consola não interactiva sai, " +"a não ser que\n" +" a opção de consola \"execfail\" esteja definida.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que COMANDO não seja encontrado ou ocorra um " +"erro de redireccionamento." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Sai da consola.\n" +" \n" +" Sai da consola com estado N. Se N for omitido, o estado de saída\n" +" é o do último comando executado." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Sai de uma consola com sessão.\n" +" \n" +" Sai de uma consola com sessão com estado de saída N. Devolve um erro " +"se não for\n" +" executado numa consola com sessão." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Mostra ou executa comandos da lista do histórico.\n" +" \n" +" fc é usado para listar ou editar e re-executar comandos da lsiat do " +"histórico.\n" +" PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou " +"PRIMEIRO pode ser\n" +" cadeia, que significa o comando mais recente começado por essa\n" +" cadeia.\n" +" \n" +" Opções:\n" +" -e NOMEED\tseleciona o editor a usar. A predefinição é FCEDIT, " +"depois EDITOR,\n" +" \t\tdepois vi\n" +" -l \tlistar linhas em vez de editar\n" +" -n\tomitir nºs de linha ao ouvir\n" +" -r\treverter a ordem das linhas (mais recentes primeiro)\n" +" \n" +" Com o formato \"fc -s [pat=rep ...] [comando]\", COMANDO é\n" +" re-executado após a substituição VELHO=NOVO ser realizada.\n" +" \n" +" Um aliás útil a usar aqui é r=\"fc -s\", para que inserir \"r cc\"\n" +" executa o último comando começado por \"cc\" e inserir \"r\" re-" +"executa\n" +" o último comando.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso ou estado do comando executado; não-zero se ocorrer um " +"erro." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Move a tarefa para 1º plano.\n" +" \n" +" Coloca a tarefa identificada com JOB_SPEC em 1º plano, tornando-a a\n" +" tarefa actual. Se JOB_SPEC não existir, é usada a noção da consola de\n" +" tarefa actual.\n" +" \n" +" Estado de saída:\n" +" Estado do comando colocado em 1º plano ou falha se ocorrer um erro." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Move a tarefa para 2º plano.\n" +" \n" +" Coloca a tarefa identificada com cada JOB_SPEC em 2º plano, como se " +"tivessem\n" +" sido iniciados com \"&\". Se JOB_SPEC não existir, é usada a noção da " +"consola de\n" +" tarefa actual.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que o controlo de tarefas esteja inactivo ou " +"ocorra um erro." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Recorda ou mostra localizações de programas.\n" +" \n" +" Determina e recorda o caminho completo de cada comando NOME. Se\n" +" não tiver argumentos, é mostrada informação sobre comando recordados.\n" +" \n" +" Opções:\n" +" -d\tesquecer a localização recordada de cada NOME\n" +" -l\tmostrar num formato que possa ser usado como entrada\n" +" -p caminho\tuse CAMINHO como caminho completo para NOME\n" +" -r\tesquecer todas as localizações recordadas\n" +" -t\timprimir a localização recordada de cada NOME, precedendo-a\n" +" \t\tdo correspondente NOME se forem\n" +" \t\tindicados múltiplos NOMEs\n" +" Argumentos:\n" +" NOME\tCada NOME é procurado no $PATH e adicionado à lista\n" +" \t\tde comandos lembrados.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que NOME não seja encontrado ou indique uma " +"opção inválida." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Mostra informação sobre comandos internos.\n" +" \n" +" Mostra breves resumos de comandos internos. Se PADRÃO for\n" +" especificado, dá ajuda detalhada em todos os comandos que cumpram " +"PADRÃO,\n" +" senão imprime a lista de tópicos de ajuda.\n" +" \n" +" Opções:\n" +" -d\tmostra uma descrição breve de cada tópico\n" +" -m\tmostra uso em formato pseudo-manpage\n" +" -s\tmostra só uma sinopse curta para cada tópico que cumpre\n" +" \t\tPADRÃO\n" +" \n" +" Argumentos:\n" +" PADRÃO\tPadrão que especifica um tópico de ajuda\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que PADRÃO não seja encontrado ou indique uma " +"opção inválida." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Mostra ou manipula a lista do histórico.\n" +" \n" +" Mostra a lista do histórico com nºs de linha, prefixando cada entrada\n" +" modificada com um \"*\". Um argumento de N lista só as últimas N " +"entradas.\n" +" \n" +" Opções:\n" +" -c\tlimpa a lista eliminado todas as entradas\n" +" -d desvio\telimina a entrada do histórico na posição DESVIO.\n" +" \t\tDesvios negativos contam-se do final da lista do histórico\n" +" \n" +" -a\tacrescenta linhas de histórico desta sessão ao ficheiro de " +"histórico\n" +" -n\tlê todas as linhas de histórico ainda não lidas do ficheiro de " +"histórico\n" +" \t\te acrescenta-as à lista de histórico\n" +" -r\tlê o ficheiro de histórico e acrescenta o conteúdo à lista de\n" +" \t\thistórico\n" +" -w\tescreve o histórico actual no ficheiro de histórico\n" +" \n" +" -p\trealiza expansão do histórico em cada ARG e mostra o resultado\n" +" \t\tsem gravar na lista de histórico\n" +" -s\tacrescenta ARGs à lista de histórico como entrada única\n" +" \n" +" Se NOMEFICH for dado, é usado como ficheiro de histórico. Senão,\n" +" se FICHHIST tiver um valor, será usado, caso contrário ~/." +"bash_history.\n" +" \n" +" Se a variável HISTTIMEFORMAT estiver definida e não for nula, o valor é " +"usado\n" +" como cadeia de formato para strftime(3) para imprimir o carimbo " +"associado\n" +" a cada entrada de histórico mostrada. Senão, não são imprimidos " +"quaisquer carimbos.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Mostra o estado das tarefas.\n" +" \n" +" Lista as tarefas activas. JOBSPEC rea cadeiae a saída a essa tarefa.\n" +" Sem opções, é mostrado o estado de todas as tarefas activas.\n" +" \n" +" Opções:\n" +" -l\tlista IDs de processo além da informação normal\n" +" -n\tlista só processos com estado alterado desde a última\n" +" \t\tnotificação\n" +" -p\tlista só IDs de processo\n" +" -r\trea cadeiae saída a tarefas em execução\n" +" -s\trea cadeiae saída a tarefas paradas\n" +" \n" +" Se -x for usado, COMANDO é executado após todas as especificações de " +"tarefas\n" +" que aparecem em ARGS terem sido substituídas pela ID de processo do " +"líder de\n" +" grupo do processo dessat tarefa.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro.\n" +" Se -x for usado, devolve o estado de saída de COMANDO." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Remove tarefas da consola actual.\n" +" \n" +" Remove cada argumento JOBSPEC da tabela de tarefas activas. Sem\n" +" JOBSPECs, a consola usa a sua noção de tarefa actual.\n" +" \n" +" Opções:\n" +" -a\tremove todas as tarefas se JOBSPEC não for indicado\n" +" -h\tmarcar cada JOBSPEC para que SIGHUP não seja enviado para a " +"tarefa\n" +" \t\tse a consola receber um SIGHUP\n" +" -r\tremove só tarefas em execução\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que uma opção inválida ou JOBSPEC seja " +"indicada." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Envia um sinal a uma tarefa.\n" +" \n" +" Envia aos processos identificados por PID ou JOBSPEC o sinal chamado\n" +" SIGSPEC ou SIGNUM. Se nem SIGSPEC nem SIGNUM estiverem presentes,\n" +" SIGTERM é presumido.\n" +" \n" +" Opções:\n" +" -s sig\tSIG é um nome de sinal\n" +" -n sig\tSIG é um número de sinal\n" +" -l\tlista nomes de sinais; se se seguirem argumentos, são\n" +" \t\tassumidos como nºs de sinal para listar os nomes\n" +" -L\tsinónimo de -l\n" +" \n" +" Mata um interno da consola por dois motivos: permite usar as IDs de " +"tarefa\n" +" em vez de IDs de processo e permite matar processos se o limite de\n" +" processos que pode criar for atingido.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Avalia as expressões aritméticas.\n" +" \n" +" Avalia cada ARG como uma expressão aritmética. A avaliação é feita em\n" +" inteiros de largura fixa sem verificação de transporte, embora a " +"divisão\n" +" por 0 seja sinalizada como erro. A seguinte lista de operadores é " +"agrupada\n" +" em níveis de igual prioridade. Os níveis estão listados\n" +" por ordem de precedência decrescente.\n" +" \n" +" \tid++, id--\tvariável pós-incremento, pós-decremento\n" +" \t++id, --id\tvariável pré-incremento, pré-decremento\n" +" \t-, +\t\tmenos, mais unário\n" +" \t!, ~\t\tnegação lógica e bitwise\n" +" \t**\t\texponenciação\n" +" \t*, /, %\t\tmultiplicação, divisão, resto\n" +" \t+, -\t\tadição, subtracção\n" +" \t<<, >>\t\tdeslocação esquerda e direita bitwise\n" +" \t<=, >=, <, >\tcomparação\n" +" \t==, !=\t\tigualdade, não igualdade\n" +" \t&\t\tE bitwise\n" +" \t^\t\tOUEX bitwise\n" +" \t|\t\tOU bitwise\n" +" \t&&\t\tE lógico\n" +" \t||\t\tOU lógico\n" +" \texpr ? expr : expr\n" +" \t\t\toperador condicional\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tatribuição\n" +" \n" +" As variáveis de consola são permitidas como operandos. O nome da " +"variável\n" +" é substituído pelo seu valor (convertido em inteiro de largura fixa) " +"dentro\n" +" de uma expressão. A variável não tem de ter o seu atributo inteiro\n" +" activado para ser usado numa expressão.\n" +" \n" +" Os operadores são avaliados por ordem de precedência. Sub-expressões\n" +" entre parênteses são avaliadas primeiro e ignoram as regras de\n" +" precedência acima.\n" +" \n" +" Estado de saída:\n" +" Se o último ARG for avaliado como 0, let devolve 1; senão let devolve 0." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Lê uma linha da entrada padrão e divide-a em campos.\n" +" \n" +" Lê uma linha da entrada padrão ou do descritor de ficheiro FD\n" +" se a opção -u for usada. A linha é dividida em campos como na divisão\n" +" de palavras e a primeira palavra é atribuída ao primeiro NOME, a " +"segunda\n" +" ao segundo NOME, e assim por diante, com quaisquer palavras que " +"sobrem \n" +" atribuídas ao último NOME. Só caracteres encontrados em $IFS são " +"reconhecidos\n" +" como delimitadores de palavras.\n" +" \n" +" Se não indicar NOMEs, a linha é armazenada na variável RESPONDER.\n" +" \n" +" Opções:\n" +" -a matriz\tatribui as palavras lidas a índices sequenciais da " +"MATRIZ\n" +" \t\tcomeçando em zero\n" +" -d delim\tcontinua até que o primeiro carácter de DELIM seja lido, " +"em vez de\n" +" \t\tnewline\n" +" -e\tusa Readline para obter a linha numa consola interactiva\n" +" -i texto\tusa TEXTO como texto inicial para Readline\n" +" -n ncars\tvolta após ler NCARS caracteres em vez de esperar\n" +" \t\tpor newline, mas respeita um delimitador se estiver\n" +" \t\tantes de NCARS caracteres\n" +" -N ncars\tvolta após ler exactamente NCARS caracteres, a não ser " +"que\n" +" \t\tEOF seja encontrado ou a leitura esteja inactiva, ignorando\n" +" \t\tqualquer delimitador\n" +" -p prompt\timprime PROMPT na saída sem newline final antes de\n" +" \t\ttentar ler\n" +" -r\tnão permite que barras esquerdas escapem qualquer carácter\n" +" -s\tnão ecoa entradas vindas de um terminal\n" +" -t inacção\tesgota o tempo e devolve falha se uma linha completa\n" +" \t\tde entrada não for lida em INACÇÃO segundos. O valor da\n" +" \t\tvariável TMOUT é o predefinido de inacção. INACÇÃO pode ser\n" +" \t\tuma fracção. Se INACÇÃO for 0, read volta\n" +" \t\timediatamente, sem tentar ler quaisquer dados, devolvendo\n" +" \t\tsucesso só se a entrada estiver disponível no descritor de\n" +" \t\tficheiro especificado. O estado de saída é maior que 128\n" +" \t\tse a inacção for excedida\n" +" -u fd\tlê do descritor de ficheiro FD em vez da entrada padrão\n" +" \n" +" Estado de saída:\n" +" O código devolvido é zero, a não ser que end-of-file seja encontrado, " +"haja\n" +" inacção (caso em que é maior que 128), ocorra um erro de atribuição de " +"variável,\n" +" ou seja indicado um descritor de ficheiro inválido como argumento de -u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Volta de uma função de consola.\n" +" \n" +" Força a saída de uma função ou script baseado com o valor especificado\n" +" por N. Se N for omitido, o estado de saída é o do último comando\n" +" executado dentro da função ou script.\n" +" \n" +" Estado de saída:\n" +" Devolve N, ou falha se a consola não estiver a executar uma função ou " +"script." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Define ou limpa valores de opções ou parâmetros posicionais da consola.\n" +" \n" +" Altera o valor de atributos ou parâmetros posicionais da consola, ou\n" +" mostra os nomes e valores de variáveis da consola.\n" +" \n" +" Opções:\n" +" -a Marca variáveis modificadas ou criadas para exportação.\n" +" -b Notifica o fim da tarefa imediatamente.\n" +" -e Sai imediatamente se um comando sair com estado diferente de " +"zero.\n" +" -f Desactiva geração de nome de ficheiro (globbing).\n" +" -h Recordar localização de comandos à medida que são procurados.\n" +" -k Todos os argumentos de atribuição são colocados no ambiente para " +"um\n" +" comando, não só os que precedem o nome do comando.\n" +" -m Activa o controlo de tarefas.\n" +" -n Lê comandos, mas não os executa.\n" +" -option-name\n" +" Define a variável correspondente a option-name:\n" +" allexport igual a -a\n" +" braceexpand igual a -B\n" +" emacs usa estilo emacs de edição de linhas\n" +" errexit igual a -e\n" +" errtrace igual a -E\n" +" functrace igual a -T\n" +" hashall igual a -h\n" +" histexpand igual a -H\n" +" history activa histórico de comandos\n" +" ignoreeof a consola não sai após ler EOF\n" +" interactive-comments\n" +" permite que comentários apareçam em " +"comandos interactivos\n" +" keyword igual a -k\n" +" monitor igual a -m\n" +" noclobber igual a -C\n" +" noexec igual a -n\n" +" noglob igual a -f\n" +" nolog actualmente aceite mas ignorado\n" +" notify igual a -b\n" +" nounset igual a -u\n" +" onecmd igual a -t\n" +" physical igual a -P\n" +" pipefail o valor devolvido de um pipeline é o estado " +"do\n" +" último comando a sair com estado não-" +"zero,\n" +" ou zero se nenhum saiu com estado não-" +"zero\n" +" posix altera o comportamento do bash onde a " +"operação\n" +" predefinida diferir da norma Posix para " +"cumprir\n" +" a norma\n" +" privileged igual a -p\n" +" verbose igual a -v\n" +" vi usa estilo vi de edição de linhas\n" +" xtrace igual a -x\n" +" -p Activado sempre que as ID de utilizador reais e efectivas não\n" +" coincidam. Desactiva o processamento do ficheiro $ ENV e a \n" +" importação de funções da consola. Desligar esta opção faz com\n" +" que os uid e gid efectivos sejam definidos para os uid e gid " +"reais.\n" +" -t Sair depois de ler e executar um comando.\n" +" -u Trata as variáveis ​​não definidas como erro ao substituir.\n" +" -v Imprime as linhas de entrada da consola à medida que são lidas.\n" +" -x Imprime comandos e seus argumentos à medida que são executados.\n" +" -B a consola realizará expansão de suporte\n" +" -C Se definido, não permitir que ficheiros normais existentes " +"sejam\n" +" sobrescritos pelo redireccionamento da saída.\n" +" -E se definido, ERR é herdada pelas funções de consola.\n" +" -H Activa estilo ! de substituição do histórico. Esta bandeira\n" +" está activada por predefinição, em consolas interativas.\n" +" -P Se definido, não resolve ligações simbólicas ao executar\n" +" comandos como \"cd\" que altera a pasta actual.\n" +" -T Se definido, DEBUG e RETURN são herdadas por funções de " +"consola.\n" +" -- Atribui quaisquer outros argumentos aos parâmetros posicionais.\n" +" Se não houver mais argumentos, os parâmetros posicionais\n" +" são limpos.\n" +" - Atribui quaisquer outros argumentos aos parâmetros " +"posicionais.\n" +" As opções -x e -v são desactivadas.\n" +" \n" +" Usar + em vez de - faz com que as bandeiras sejam desactivadas. As\n" +" bandeiras também podem ser usadas por chamada da consola. O actual\n" +" conjunto de bandeiras pode ser encontrado em $-. Os n restantes ARGs\n" +" são parâmetros posicionais e são atribuídos, em ordem, a $1, $2 .. $n.\n" +" Se não houver ARGs, todas as variáveis de consola são imprimidas.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Limpa valores e atributos de variáveis e funções da consola.\n" +" \n" +" Para cada NOME, remove a correspondente variável ou função.\n" +" \n" +" Opções:\n" +" -f\ttrata cada NOME como função de consola\n" +" -v\ttrata cada NOME como variável de consola\n" +" -n\ttrata cada NOME como referência de nome e limpa a própria\n" +" \t\tvariável em vez da variável que referencia\n" +" \n" +" Sem opções, unset primeiro tenta limpar uma variável e, se falhar,\n" +" tenta limpar uma função.\n" +" \n" +" Algumas variáveis não podem ser limpas; veja também \"readonly\".\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja " +"só de leitura." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Define o atributo de exportação em variáveis de consola.\n" +" \n" +" Marca cada NOME para exportação automática para o ambiente de futuros\n" +" comandos executados. Se VALOR for fornecido, atribui VALOR antes de " +"exportar.\n" +" \n" +" Opções:\n" +" -f\trefere funções de consola\n" +" -n\tremove a propriedade de exportação de cada NOME\n" +" -p\tmostra uma lista de todas as funções e variáveis exportadas\n" +" \n" +" Um argumento \"--\" desactiva futuro processamento da opção.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja " +"inválido." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Marca as variáveis de consola como imutáveis.\n" +" \n" +" Marca cada NOME como só de leitura; os valores destes NOMEs não podem\n" +" ser alterados por subsequentes atribuições. Se VALOR for fornecido,\n" +" atribui VALOR antes de marcar como só de leitura.\n" +" \n" +" Opções:\n" +" -a\trefere a variáveis de matriz indexadas\n" +" -A\trefere a variáveis de matriz associativas\n" +" -f\trefere a funções de consola\n" +" -p\tmostra uma lista de todas as variáveis ou funções só de " +"leitura,\n" +" \t\tdependendo ou não se a opção -f é indicada\n" +" \n" +" Um argumento \"--\" desactiva futuro processamento da opção.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja " +"inválido." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Deslocar parâmetros posicionais.\n" +" \n" +" Renomear os parâmetros posicionais $N+1,$N+2 ... para $1,$2 ... Se N\n" +" for omitido, presume-se como 1.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que N seja negativo ou maior que $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Executa comandos de um ficheiro na consola actual.\n" +" \n" +" Lê e execute comandos do NOMEFICH na consola actual. As\n" +" entradas em $PATH são usadas para encontrar a pasta contendo NOMEFICH.\n" +" Se nenhum ARGUMENTO for fornecido,tornam-se parâmetros posicionais\n" +" quando NOMEFICH é executado.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado em NOMEFICH; falha se\n" +" NOMEFICH não pode ser lido." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspende a execução da consola.\n" +" \n" +" Suspende a execução desta consola até receber um sinal SIGCONT.\n" +" Se não forem forçadas, as consolas com sessão não podem ser suspensas.\n" +" \n" +" Opções:\n" +" -f\tforçar a suspensão, mesmo que seja uma consola com sessão\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que o controlo de tarefa esteja inactivo ou " +"ocorra um erro." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Avalia a expressão condicional.\n" +" \n" +" Sai com estado 0 (verdadeiro) ou 1 (falso) dependendo da\n" +" avaliação de EXPR. As expressões podem ser unárias ou binárias. " +"Expressões\n" +" uinárias são frequentemente usadas para examinar o estado de um " +"ficheiro. Há\n" +" também operadores de cadeias e operadores de comparação numérica.\n" +" \n" +" O comportamento do teste depende do número de argumentos. Leia a\n" +" página do manual do bash para a especificação completa.\n" +" \n" +" Operadores de ficheiros:\n" +" \n" +" -a FICHEIRO Verdadeiro se o ficheiro existir.\n" +" -b FICHEIRO Verdadeiro se o ficheiro for bloqueio especial.\n" +" -c FICHEIRO Verdadeiro se o ficheiro for especial de " +"caracteres.\n" +" -d FICHEIRO Verdadeiro se o ficheiro for uma pasta.\n" +" -e FICHEIRO Verdadeiro se o ficheiro existir.\n" +" -f FICHEIRO Verdadeiro se o ficheiro existe e é um ficheiro " +"normal.\n" +" -g FICHEIRO Verdadeiro se o ficheiro for set-group-id.\n" +" -h FICHEIRO Verdadeiro se o ficheiro for uma ligação simbólica.\n" +" -L FICHEIRO Verdadeiro se o ficheiro for uma ligação simbólica.\n" +" -k FICHEIRO Verdadeiro se o ficheiro tiver o bit \"sticky\" " +"definido.\n" +" -p FICHEIRO Verdadeiro se o ficheiro for um pipe com nome.\n" +" -r FICHEIRO Verdadeiro se o ficheiro for legível.\n" +" -s FICHEIRO Verdadeiro se o ficheiro existe e não está vazio.\n" +" -S FICHEIRO Verdadeiro se o ficheiro for um socket.\n" +" -t FD Verdadeiro se FD for aberto num terminal.\n" +" -u FICHEIRO Verdadeiro se o ficheiro for set-user-id.\n" +" -w FICHEIRO Verdadeiro se o ficheiro for gravável por si.\n" +" -x FICHEIRO Verdadeiro se o ficheiro for executável por si.\n" +" -O FICHEIRO Verdadeiro se o ficheiro for efectivamente sua " +"propriedade.\n" +" -G FICHEIRO Verdadeiro se o ficheiro for efectivamente " +"propriedade do seu grupo.\n" +" -N FICHEIRO Verdadeiro se o ficheiro foi modificado desde a " +"última vez que foi lido.\n" +" \n" +" FICHEIRO1 -nt FICHEIRO2 Verdadeiro se o ficheiro1 for mais novo " +"que\n" +" o ficheiro2 (de acordo com a data " +"de modificação).\n" +" \n" +" FICHEIRO1 -ot FICHEIRO2 Verdadeiro se ficheiro1 for mais antigo que " +"o ficheiro2.\n" +" \n" +" FICHEIRO1 -ef FICHEIRO2 Verdadeiro se ficheiro1 for uma ligação " +"rígida a file2.\n" +" \n" +" Operadores de cadeias:\n" +" \n" +" -z CADEIA Verdadeiro se a cadeia estiver vazia.\n" +" \n" +" -n CADEIA\n" +" CADEIA Verdadeiro se a cadeia não estiver vazia.\n" +" \n" +" CADEIA1 = CADEIA2\n" +" Verdadeiro se as cadeias são iguais.\n" +" CADEIA1 != CADEIA2\n" +" Verdadeiro se as cadeias não são iguais.\n" +" CADEIA1 < CADEIA2\n" +" Verdadeiro se CADEIA1 ficar antes de CADEIA2 " +"lexicamente.\n" +" CADEIA1 > CADEIA2\n" +" Verdadeiro se CADEIA1 ficar após CADEIA2 " +"lexicamente.\n" +" \n" +" Outros operadores:\n" +" \n" +" -o OPÇÃO Verdadeiro se a opção de consola OPÇÃO está " +"activada.\n" +" -v VAR Verdadeiro se a variável de consola VAR estiver " +"definida.\n" +" -R VAR Verdadeiro se a variável de consola VAR estiver " +"definida e for um nome\n" +" referência.\n" +" ! EXPR Verdadeiro se EXPR for falso.\n" +" EXPR1 -a EXPR2 Verdadeiro se EXPR1 e EXPR2 forem verdadeiros.\n" +" EXPR1 -o EXPR2 Verdadeiro se EXPR1 OU EXPR2 forem verdadeiros.\n" +" \n" +" arg1 OP arg2 Testes aritméticos. OP é um de -eq, -ne,\n" +" -lt, -le, -gt, ou -ge.\n" +" \n" +" Operadores binários aritméticos devolvem verdadeiro se ARG1 for igual, " +"não\n" +" igual, menor que, menor ou igual que, maior que ou maior ou igual que\n" +" ARG2.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso se EXPR for avaliada como verdadeiro; falha se EXPR " +"for\n" +" avaliado como falso ou for indicado um argumento inválido." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Avalia uma expressão condicional.\n" +" \n" +" Este é um sinónimo para o interno \"test\", mas o último argumento tem\n" +" de ser um \"]\" literal, para fechar o \"[\" aberto." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Mostrar tempos de processo.\n" +" \n" +" Imprime os tempos acumulados de utilizador e sistema para a consola e " +"todos\n" +" os seus processos-filho.\n" +" \n" +" Estado de saída:\n" +" Sempre com sucesso." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Capturar sinais e outros eventos.\n" +" \n" +" Define e activa gestores a executar quando a consola recebe sinais ou\n" +" outras condições.\n" +" \n" +" ARG é um comando a ser lido e executado quando a consola recebe o(s)\n" +" sinal(is) SIGNAL_SPEC. Se ARG estiver ausente (e um único SIGNAL_SPEC\n" +" for fornecido) ou \"-\", cada sinal especificado é reposto no seu " +"valor\n" +" original. Se ARG for a cadeia nula, cada SIGNAL_SPEC será ignorado\n" +" pela consola e pelos comandos que chama.\n" +" \n" +" Se um SIGNAL_SPEC for EXIT (0) ARG é executado na saída da consola. Se\n" +" SIGNAL_SPEC é DEBUG, ARG é executado antes de cada comando simples. Se\n" +" SIGNAL_SPEC é RETURN, ARG é executado cada vez que uma função de " +"consola\n" +" ou um script executado pelo . ou os internos terminam a execução. " +"SIGNAL_SPEC\n" +" de ERR significa executar ARG cada vez que uma falha do comando faça " +"com\n" +" que a consola sair quando a opção -e está activa.\n" +" \n" +" Se nenhum argumento for fornecido, trap imprime a lista de comandos \n" +" associados a cada sinal.\n" +" \n" +" Opções:\n" +" -l imprime uma lista de nomes de sinais e seus números " +"correspondentes\n" +" -p mostra os comandos trap associados a cada SIGNAL_SPEC\n" +" \n" +" Cada SIGNAL_SPEC é um nome de sinal em ou um número de " +"sinal.\n" +" Os nomes dos sinais são insensíveis a maiúsculas e o prefixo SIG é " +"opcional.\n" +" Um sinal pode ser enviado para a consola com \"kill -signal $$\".\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que SIGSPEC seja inválido ou indique uma " +"opção inválida." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Mostra informações sobre o tipo de comando.\n" +" \n" +" Para cada NOME, indica como seria interpretado se usado como um\n" +" nome de comando.\n" +" \n" +" Opções:\n" +" -a\tmostra todos os locais contendo um executável chamado NOME;\n" +" \t\tinclui aliás, internos e funções, se e só se a opção \"-p\"\n" +" \t\ttambém não for usada\n" +" -f\tsuprime a procura da função de consola\n" +" -P\tforça uma procura em PATH para cada NOME, mesmo que seja um\n" +" \t\taliás, interno ou função e devolve o nome do ficheiro em disco\n" +" \t\tque seria executado\n" +" -p\tdevolve o nome do ficheiro em disco que seria executado,\n" +" \t\tou nada se \"type -t NOME\" não devolver \"file\"\n" +" -t\tdevolve uma só palavra de entre \"alias\", \"keyword\", " +"\"function\"\n" +" \t\t\"builtin\", \"file\" ou \"\", se NOME for um aliás, palavra " +"reservada\n" +" \t\tda consola, função de consola, interno da consola, ficheiro em\n" +" \t\tdisco, ou não encontrados, respectivamente\n" +" \n" +" Argumentos:\n" +" Nome do comando NOME a interpretar.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso se todos os NOMEs forem encontrados; falha se algum não " +"for." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modifica os limites de recursos da consola.\n" +" \n" +" Fornece controlo sobre os recursos disponíveis para consola e " +"processos\n" +" que cria, em sistemas que permitem esse controlo.\n" +" \n" +" Opções:\n" +" -S\tusa o limite de recursos \"soft\"\n" +" -H\tusa o limite de recursos \"hard\"\n" +" -a\ttodos os limites actuais são reportados\n" +" -b\to tamanho do buffer de socket\n" +" -c\to tamanho máximo dos ficheiros núcleo criados\n" +" -d\to tamanho máximo do segmento de dados de um processo\n" +" -e\ta prioridade máxima de agendamento (\"nice\")\n" +" -f\to tamanho máximo dos ficheiros escritos pela consola e seus " +"filhos\n" +" -i\to número máximo de sinais pendentes\n" +" -k\to número máximo de kqueues alocados para este processo\n" +" -l\to tamanho máximo que um processo pode bloquear na memória\n" +" -m\to tamanho máximo do conjunto residente\n" +" -n\to número máximo de descritores de ficheiros abertos\n" +" -p\to tamanho do buffer do pipe\n" +" -q\to número máximo de bytes nas filas de mensagens POSIX\n" +" -r\ta prioridade máxima de programação em tempo real\n" +" -s\to tamanho máximo da pilha\n" +" -t\ta quantidade máxima de tempo de CPU em segundos\n" +" -u\to número máximo de processos do utilizador\n" +" -v\to tamanho da memória virtual\n" +" -x\to número máximo de bloqueios de ficheiros\n" +" -P\to número máximo de pseudo-terminais\n" +" -T\to número máximo de threads\n" +" \n" +" Nem todas as opções estão disponíveis em todas as plataformas.\n" +" \n" +" Se LIMIT for indicada, é o novo valor do recurso especificado; Os\n" +" valores LIMIT especiais \"soft\", \"hard\" e \"unlimited\" representam\n" +" olimite flexível actual, o limite rígido actual e nenhum limite, " +"respectivamente.\n" +" Caso contrário, é imprimido o valor actual do recurso especificado. Se\n" +" nenhuma opção for indicada, então -f é assumido.\n" +" \n" +" Os valores estão em incrementos de 1024 bytes, exceto para -t, que é em " +"segundos,\n" +" -p, que é em incrementos de 512 bytes e -u, que é um número de " +"processos\n" +" sem escala.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que seja indicada uma opção inválida ou " +"ocorra um erro." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Mostrar ou definir a máscara do modo de ficheiro.\n" +" \n" +" Define a máscara do utilizador de criação de ficheiro para MODO. Se " +"MODO\n" +" for omitido, imprime o valor actual da máscara.\n" +" \n" +" Se MODO começa com um dígito, é interpretado como um número octal;\n" +" caso contrário, é uma cadeia de modo simbólico como a aceite por " +"chmod(1).\n" +" \n" +" Opções:\n" +" -p\tse MODO for omitido, saída de forma a que possa ser reutilizado " +"como entrada\n" +" -S\ttorna a saída simbólica; caso contrário, a saída é um número " +"octal\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que MODO seja inválido ou indique uma opção " +"inválida." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Aguarda a conclusão da tarefa e devolve o estado de saída.\n" +" \n" +" Espera por cada processo identificado por uma ID, que pode ser uma ID " +"de\n" +" processo ou uma especificação de tarefa e reporta o estado final. Se " +"não\n" +" for dada uma ID, aguarda por todos os processos-filho actualmente " +"activos e o\n" +" estado de saída é zero. Se ID for uma especificação de tarefa, espera " +"por\n" +" todos os processos no pipeline da tarefa.\n" +" \n" +" Se a opção -n for fornecida, espera que a próxima tarefa termine e\n" +" devolve seu estado de saída.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado da última ID; falha se a ID for inválida ou for " +"indicada\n" +" uma opção inválida." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Aguarda a conclusão do processo e devolve o estado de saída.\n" +" \n" +" Espera por cada processo especificado por uma PID e reporta o estado " +"final.\n" +" Se PID não for dada, aguarda por todos os processos-filho actualmente " +"activos,\n" +" e o estado devolvido é zero. A PID tem de ser uma ID de processo.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado da última PID; falha se PID for inválido ou for " +"indicada\n" +" uma opção inválida." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos para cada membro numa lista.\n" +" \n" +" O ciclo \"for\" executa uma seqüência de comandos para cada membro " +"numa\n" +" lista de itens. Se \"in PALAVRAS ...;\" não estiver presente, \" in \"$@" +"\" \" é\n" +" assumido. Para cada elemento em PALAVRAS, NOME está definido para " +"esseelemento,\n" +" e os COMANDOS são executados.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ciclo for aritmético.\n" +" \n" +" Equivalente a\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMANDOS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2 e EXP3 são expressões aritméicas. Se alguma delas for " +"omitida\n" +" comporta-se como se fosse avaliada como 1.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Selecciona palavras de uma lista e executa comandos.\n" +" \n" +" As PALAVRAS são expandidas, gerando uma lista de palavras. O\n" +" conjunto de palavras expandidas é imprimido no erro padrão, cada\n" +" um precedido por um número. Se \"in PALAVRAS\" não estiver presente,\n" +" \" in \"$@\" \" é assumido. O prompt PS3 é então exibido e é lida uma\n" +" linha da entrada padrão. Se a linha for constituída pelo número\n" +" correspondente a uma das palavras mostradas, NOME é definido para\n" +" essa palavra. Se a linha estiver vazia, PALAVRAS e o prompt são\n" +" mostrados de novo. Se for lido EOF, o comando é concluído. Qualquer\n" +" outro valor lido faz com que NOME seja definido como nulo. A linha\n" +" lida é gravada na variável RESPOSTA. COMANDOS são executados após cada\n" +" selecção até que um comando de interrupção seja executado.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Reporta o tempo consumido pela execução do pipeline.\n" +" \n" +" Executa PIPELINE e imprime um resumo do tempo real, tempo de CPU do,\n" +" utilizador e tempo de CPU do sistema na execução de PIPELINE quando " +"terminar.\n" +" \n" +" Opções:\n" +" -p\timprime o resumo do tempo no formato portátil Posix\n" +" \n" +" O valor da variável FORMATOTEMPO é usado como formato de saída.\n" +" \n" +" Estado de saída:\n" +" O estado devolvido é o estado de PIPELINE." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executea comandos baseado em comparação de padrões.\n" +" \n" +" Executar selectivamente COMANDOS baseado na comparação entre PALAVRA e\n" +" PADRÃO. \"|\" é usado para separar múltiplos padrões.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos com base em condicional.\n" +" \n" +" A lista \"if COMANDOS\" é executada. Se o estado de saída for zero, é\n" +" executada a lista \"then COMANDOS\". Caso contrário, cada lista \"elif " +"COMANDOS\"\n" +" é executado por sua vez e se o estado de saída for zero, a " +"correspondente\n" +" lista \"then COMANDOS\" é executada e o comando if é concluído. De " +"outra forma,\n" +" a lista \"else COMANDOS\" é executada, se presente. O estado de saída " +"da\n" +" construção inteira é o estado de saída do último comando executado, ou " +"zero\n" +" se nenhuma condição for verdadeira.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos enquanto o teste tiver sucesso.\n" +" \n" +" Expande e executa COMANDOS enquanto o comando final no ciclo\n" +" \"while COMANDOS\" tenha um estado de saída zero.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos enquanto o teste não tiver sucesso.\n" +" \n" +" Expande e executa COMANDOS enquanto o comando final no ciclo\n" +" \"until COMANDOS\" tenha um estado de saída não zero.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Cria um co-processo chamado NOME.\n" +" \n" +" Executa COMANDO assincronamente, com a saída e a entrada padrão " +"ligadas\n" +" via pipe a descritores de ficheiro atribuídos a índices 0 e 1 de uma \n" +" variável de matriz NOME na consola em execução.\n" +" O NOME predefinido é \"COPROC\".\n" +" \n" +" Estado de saída:\n" +" O comando coproc devolve um estado de saída 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Define uma função de consola.\n" +" \n" +" Cria uma função de consola chamada NOME. Quando chamado como comando\n" +" simples, NOME executa COMANDOs no contexto da consola. Quando NOME é\n" +" invoked, os argumentos são passados à função como $1...$n e o nome da\n" +" função está em $FUNCNAME.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que NOME seja só de leitura." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Agrupa comandos como uma unidade.\n" +" \n" +" Executa um conjunto de comandos num grupo. Esta é uma maneira de\n" +" redireccionar um conjunto completo de comandos.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Retoma a tarefa em primeiro plano.\n" +" \n" +" Equivalente ao argumento JOB_SPEC para o comando \"fg\". Retoma uma\n" +" tarefa parada ou em 2º plano. JOB_SPEC pode especificar um nome de\n" +" tarefa ou um número de tarefa. Pôr \"&\" a seguir a JOB_SPEC coloca a\n" +" tarefa em 2º plano, como se a especificação da tarefa tivesse sido\n" +" fornecida como um argumento para \"bg\".\n" +" \n" +" Estado de saída:\n" +" Devolve o estado da tarefa retomada." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Avalia uma expressão aritmética.\n" +" \n" +" A expressão EXPRESSÃO é avaliada de acordo com as regras aritméticas.\n" +" Equivalente a \"let EXPRESSÃO\".\n" +" \n" +" Estado de saída:\n" +" Devolve 1 se EXPRESSÃO avaliar como 0; senão, devolve 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Executa o comando condicional.\n" +" \n" +" Devolve um estado de 0 ou 1, dependendo da avaliação da expressão\n" +" condicional EXPRESSÃO. As expressões são compostas pelas mesmas " +"primárias\n" +" usadas pelo interno \"test\" e pode ser combinado com os seguintes " +"operadores:\n" +" \n" +" ( EXPRESSÃO )\tDevolve o valor de EXPRESSÃO\n" +" ! EXPRESSÃO\t\tVerdadeiro se EXPRESSÃO for falsa; senão falso\n" +" EXPR1 && EXPR2\tVerdadeiro se EXPR1 e EXPR2 forem verdadeiras; senão " +"falso\n" +" EXPR1 || EXPR2\tVerdadeiro se EXPR1 ou EXPR2 forem verdadeiras; " +"senão falso\n" +" \n" +" Quando os operadores \"==\" e \"! =\" são usados, a cadeia à direita do " +"operador\n" +" é usada como padrão e é feita a comparação de padrões. Quando o " +"operador \"= ~\"\n" +" é usado, a cadeia à direita do operador é comparada como expressão " +"regular.\n" +" \n" +" Os operadores && e || não avaliam EXPR2 se EXPR1 for suficiente para\n" +" determinar o valor da expressão." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Nomes e uso comuns de variáveis de consola.\n" +" \n" +" BASH_VERSION\tInformações de versão para esta bash.\n" +" CDPATH\tUma lista de pastas separadas por \":\" para procurar\n" +" \t\tpor pastas dadas como argumentos a \"cd\".\n" +" GLOBIGNORE\tUma lista de padrões separada por \":\" que descreve nomes " +"de\n" +" ficheiro a ignorar pela expansão do nome do caminho.\n" +" HISTFILE\tNome de ficheiro onde o seu histórico de comandos é " +"armazenado.\n" +" HISTFILESIZE\tNúmero máximo de linhas que este ficheiro pode conter.\n" +" HISTSIZE\tNúmero máximo de linhas de histórico a que uma consola em \n" +" \t\texecução pode aceder.\n" +" HOME\tNome completo do caminho para a pasta de início de sessão.\n" +" HOSTNAME\tNome do anfitrião actual.\n" +" HOSTTYPE\tTipo de CPU em que esta versão do Bash está em execução.\n" +" IGNOREEOF\tControla a acção da consola ao receber um carácter EOF\n" +" \t\tcomo única entrada. Se definido, então o seu valor é o\n" +" \t\tnúmero de caracteres EOF que podem ser vistos numa linha\n" +" \t\tvazia antes que a consola saia (predefinição 10).\n" +" \t\tQuando não definido, EOF significa o fim da entrada.\n" +" MACHTYPE\tDescrição do sistema actual em que a bash está em execução.\n" +" MAILCHECK\tFrequência, em segundos, com que a bash procura novo " +"correio.\n" +" MAILPATH\tLista de ficheiros separados por \":\" onde a bash procura\n" +" \t\tnovas mensagens.\n" +" OSTYPE\tVersão Unix em que esta versão da bash está em execução.\n" +" PATH\tLista de pastas separadas por \":\" a procurar quando\n" +" \t\tprocura comandos.\n" +" PROMPT_COMMAND\tComando a executar antes da impressão de cada\n" +" \t\tprompt primário.\n" +" PS1\t\tCadeia do prompt primário.\n" +" PS2\t\tCadeia do prompt secundário\n" +" PWD\t\tCaminho completo da pasta actual.\n" +" SHELLOPTS\tLista separada por \":\" de opções da consola activadas.\n" +" TERM\tNome do tipo de terminal actual.\n" +" TIMEFORMAT\tFormato de saída para estatísticas de tempo mostradas\n" +" pela palavra reservada \"time\".\n" +" auto_resume\tNão-nulo significa que uma palavra de comando numa linha\n" +" \t\tpor si só é procurada primeiro na lista de tarefas actualmente\n" +" \t\tparadas. Se encontrado, a tarefa passa a primeiro plano. Um\n" +" \t\tvalor \"exact\" significa que a palavra de comando deve ser\n" +" \t\texactamente igual a um comando na lista de tarefas paradas.\n" +" \t\t\"substring\" significa que a palavra de comando deve ser igual\n" +" \t\ta uma sub-cadeia da tarefa. Qualquer outro valor significa que\n" +" \t\to comando deve ser um prefixo de uma tarefa interrompida.\n" +" histchars\tCaracteres que controlam a expansão do histórico e " +"substituições\n" +" \t\trápidas. O primeiro carácter é o carácter de subtituição do\n" +" \t\thistórico, normalmente \"!\". O 2º é o de substituição rápida,\n" +" \t\thabitualmente \"^\". O terceiro é o comentário do histórico,\n" +" \t\tnormalmente \"#\".\n" +" HISTIGNORE\tLista de padrões separada por \":\" usados para decidir " +"quais\n" +" \t\tos comandos que devem ser gravados na lista de histórico.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Adiciona pastas à pilha.\n" +" \n" +" Adiciona uma pasta ao topo da pilha de pastas, ou roda a pilha\n" +" tornando o novo topo da pilha a actual pasta de trabalho.\n" +" Sem argumentos, troca as duas pastas de topo.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de pasta ao adicionar\n" +" pastas à pilha, para que só a pilha seja manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRoda a pilha de modo a que a N-ésima pasta (contando\n" +" \t\tda esquerda da lista mostrada por \"dirs\", começando por\n" +" \t\tzero) fique no topo.\n" +" \n" +" -N\tRoda a pilha de modo a que a N-ésima pasta (contando\n" +" \t\tda direita da lista mostrada por \"dirs\", começando por\n" +" \t\tzero) fique no topo.\n" +" \n" +" dir\tAdiciona DIR à pilha de pastas no topo, tornando-a a\n" +" \t\tnova pasta de trabalho actual.\n" +" \n" +" O interno \"dirs\" mostra a pilha de pastas.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique um argumento inválido ou a\n" +" troca de pastas falhe." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Remove pastas da pilha.\n" +" \n" +" Remove entradas da pilha de pastas. Sem argumentos, remove\n" +" a pasta do topo da pilha e muda para a nova pasta superior.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de pasta ao remover\n" +" \t\tpastas da pilha, para que só a pilha seja manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRemove a N-ésima entrada contando da esquerda da lista\n" +" \t\tmostrada por \"dirs\", começando por zero. E.g.: \"popd +0\"\n" +" \t\tremove a primeira pasta, \"popd +1\" a segunda.\n" +" \n" +" -N\tRemove a N-ésima entrada contando da direita da lista\n" +" \t\tmostrada por \"dirs\", começando por zero. E.g.: \"popd -0\"\n" +" \t\tremove a última pasta, \"popd -1\" a penúltima.\n" +" \n" +" O interno \"dirs\" mostra a pilha de pastas.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique um argumento inválido ou a troca\n" +" de pastas falhe." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Mostra a pilha de pastas.\n" +" \n" +" Mostra a lista de pastas actualmente lembradas. As pastas\n" +" entram na lista com o comando \"pushd\"; pode recuar na\n" +" lista com o comando \"popd\".\n" +" \n" +" Opções:\n" +" -c\tlimpa a pilha de pastas eliminando todos os elementos\n" +" -l\tnão imprime versões prefixadas com til de pastas relativas\n" +" \t\tà sua pasta inicial\n" +" -p\timprime a pilha de pastas com uma entrada por linha\n" +" -v\timprime a pilha de pastas com uma entrada por linha prefixada\n" +" \t\tcom a sua posição na pilha\n" +" \n" +" Argumentos:\n" +" +N\tMostra a N-ésima entrada contando da esquerda da lista\n" +" \t\tmostrada por \"dirs\" quando chamado sem opções, começando\n" +" \t\tpor zero.\n" +" \n" +" -N\tMostra a N-ésima entrada contando da direita da lista\n" +" \t\tmostrada por \"dirs\" quando chamado sem opções, começando\n" +" \t\tpor zero.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro" + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Define e cancela opções de consola.\n" +" \n" +" Altera a definição de cada opção de consola OPTNOME. Sem qualquer\n" +" argumento, lista todas as opções de consola com indicação de definição\n" +" ou não de estado.\n" +" \n" +" Opções:\n" +" -o\trestringe OPTNOMEs para os definidos para uso com \"set -o\"\n" +" -p\timprime cada opção de consola com indicação do seu estado\n" +" -q\tsuprime a saída\n" +" -s\tactiva (define) cada OPTNOME\n" +" -u\tdesactiva (limpa) cada OPTNOME\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso se OPTNOME estiver activado; falha se indicar uma opção\n" +" inválida ou OPTNOME esteja desactivada." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formata e imprime ARGUMENTOS sob controlo do FORMATO.\n" +" \n" +" Opções:\n" +" -v var\tatribui a saída à variável de consola VAR em vez de\n" +" \t\tmostrar na saída padrão\n" +" \n" +" FORMATO é uma cadeia de caracteres que contém três tipos de objectos: \n" +" caracteres simples, que são simplesmente copiados para a saída padrão;\n" +" sequências de escape, que são convertidas e copiadas para a saída " +"padrão; e\n" +" especificações de formato, cada uma das quais causa a impressão do " +"argumento\n" +" sucessivo seguinte.\n" +" \n" +" Além das especificações de formato padrão descritas em printf (1),\n" +" printf interpreta:\n" +" \n" +" %b\texpande sequências de escape para o argumento correspondente\n" +" %q\tcita o argumento de forma a ser reutilizado como entrada de " +"consola\n" +" %(fmt)T\timprime a cadeia de data-hora resultante da utilização do " +"FMT\n" +" \t\tcomo formato para strftime(3)\n" +" \n" +" O formato é reutilizado conforme necessário para consumir todos os " +"argumentos.\n" +" E se há menos argumentos do que o formato requer, especificações de " +"formato\n" +" extra comportam-se como um valor zero ou uma cadeia nula, conforme " +"apropriado,\n" +" tenha sido fornecido.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro de\n" +" escrita ou atribuição." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Especifica como os argumentos devem ser concluídos por Readline.\n" +" \n" +" Para cada NOME, especifica como os argumentos devem ser concluídos. Se " +"não \n" +" fornecer opções, as especificações de conclusão existentes são " +"imprimidas\n" +" de forma a permitir que sejam reutilizados como entrada.\n" +" \n" +" Opções:\n" +" -p\timprime especificações de conclusão existentes em formato " +"reutilizável\n" +" -r\tremove uma especificação de conclusão para cada NOME, ou, se não\n" +" \t\tforneceu NOMEs, todas as especificações de conclusão\n" +" -D\taplica as conclusões e acções como predefinição para comandos\n" +" \t\tsem qualquer especificação de conclusão definida\n" +" -E\taplica as conclusões e acções a comandos -- \"vazios\"\n" +" \t\tconclusão tentada numa linha em branco\n" +" -I\taplica as conclusões e acções à palavra inicial (normalmente o\n" +" \t\tcomando)\n" +" \n" +" Quando a conclusão é tentada, as acções são aplicadas na ordem em que \n" +" as opções de letras maiúsculas estão listadas acima. Se forem fornecidas " +"múltiplas\n" +" opções, a opção -D toma precedência sobre -E e ambas têm precedência " +"sobre -I.\n" +" \n" +" Estado da saída: Devolve sucesso a não ser que seja fornecida uma opção\n" +" inválida ou ocorra um erro." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Mostrar possíveis conclusões, dependendo das opções.\n" +" \n" +" Destinado a ser usado de dentro de uma função de consola gerando\n" +" possíveis conclusões. Se o argumento PALAVRA opcional for fornecido,\n" +" são geradas comparações com PALAVRA.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Modifica ou mostra as opções de conclusão.\n" +" \n" +" Modifica as opções de conclusão para cada NOME, ou, se não fornecer " +"NOME,\n" +" a conclusão actualmente em execução. Se nenhuma OPÇÃO for fornecida, " +"imprime\n" +" as opções de conclusão para cada NOME ou a especificação de conclusão " +"actual.\n" +" \n" +" Opções:\n" +" \t-o opção\tDefine opção de conclusão OPÇÃO para cada NOME\n" +" \t-D\t\tAltera opções para a conclusão do comando \"predefinido\"\n" +" \t-E\t\tAltera opções para a conclusão do comando \"vazio\"\n" +" \t-I\t\tAltera opções para a conclusão na palavra inicial\n" +" \n" +" Usar \"+ o\" em vez de \"-o\" desliga a opção especificada.\n" +" \n" +" Argumentos:\n" +" \n" +" Cada NOME refere-se a um comando para o qual uma especificação de " +"conclusão\n" +" deve ter sido anteriormente definida usando o interno \"complete\". Se " +"não\n" +" forneceu NOMEs, compopt tem de ser chamado por uma função actualmente a\n" +" gerar conclusões e as opções para esse gerador de conclusões " +"actualmente\n" +" em execução são modificadas.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME não " +"tenha\n" +" uma especificação de conclusão definida." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Lê linhas da entrada padrão para uma variável de matriz indexada.\n" +" \n" +" Lê linhas da entrada padrão para a variável de matriz indexada MATRIZ, " +"ou\n" +" do descritor de ficheiro FD se a opção -u for fornecida. A variável " +"MAPFILE\n" +" é a MATRIZ predefinida.\n" +" \n" +" Opções:\n" +" -d delim\tUsa DELIM para terminar as linhas, em vez de nova linha\n" +" -n total\tCopia no máximo TOTAL linhas. Se TOTAL for 0, copia todas\n" +" -O origem\tComeça a atribuir a MATRIZ no índice ORIGEM. A predefinição " +"é 0\n" +" -s total\tDescarta as primeiras TOTAL linhas lidas\n" +" -t\tRemove um DELIM inicial de cada linha lida (predefinição é nova " +"linha)\n" +" -u fd\tLê linhas do descritor de ficheiro FD em vez da entrada padrão\n" +" -C retorno\tAvalia RETORNO cada vez que QUANTUM linhas são lidas\n" +" -c quantum\tEspecifica o número de linhas lidas entre cada chamada a\n" +" \t\t\tRETORNO\n" +" \n" +" Argumentos:\n" +" ARRAY\tNome de variável de matriz a usar para dados de ficheiro\n" +" \n" +" Se -C for fornecido sem -c, a quantidade predefinida é 5000. Quando\n" +" RETORNO é avaliado, é fornecido o índice do elemento seguinte da\n" +" matriz a ser atribuído e a linha a ser atribuída a esse elemento\n" +" como argumentos adicionais.\n" +" \n" +" Se não for fornecido com uma origem explícita, mapfile limpa MATRIZ " +"antes\n" +" de lhe fazer atribuições.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida, MATRIZ seja " +"só\n" +" de leitura ou não seja uma matriz indexada." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Lê linhas de um ficheiro para uma variável de matriz.\n" +" \n" +" Um sinónimo para \"mapfile\"." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Devolve o contexto da presente chamada a sub-rotina.\n" +#~ " \n" +#~ " Sem EXPR, devolve " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: processo %5ld (%s) na _pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Sinal desconhecido #" diff --git a/bash-5.1/po/pt_BR.gmo b/bash-5.1/po/pt_BR.gmo new file mode 100644 index 0000000000000000000000000000000000000000..cd1093ad72e47fb9c9a4d1b9bdce78729fcb1e9f GIT binary patch literal 162997 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

=Coh_l*mgmgKUfuK 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 a{i_y-#M(@6^;X2{`__u)iPuAGt$zXS9}W-z literal 0 HcmV?d00001 diff --git a/bash-5.1/po/pt_BR.po b/bash-5.1/po/pt_BR.po new file mode 100644 index 0000000..919784c --- /dev/null +++ b/bash-5.1/po/pt_BR.po @@ -0,0 +1,8636 @@ +# Brazilian Portuguese translation for bash +# Copyright (C) 2019 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Halley Pacheco de Oliveira , 2002. +# Rafael Fontenelle , 2015, 2016, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-01-09 15:13-0200\n" +"Last-Translator: Rafael Fontenelle \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Virtaal 1.0.0-beta1\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "subscrito de array incorreto" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: removendo o atributo nameref" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: impossível converter array indexado para associativo" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: chave de array associativo inválida" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: impossível atribuir a índice não numérico" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: deve usar subscrito ao atribuir um array associativo" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: impossível criar: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: impossível localizar mapa de teclas para comando" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: primeiro caractere não-espaço em branco não é `\"'" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "sem `%c' de fechamento em %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s faltando separador dois-pontos" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "`%s': impossível desassociar (unbind)" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "expansão de chaves: impossível alocar memória para %s" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "expansão de chaves: falha ao alocar memória para %u elementos" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "expansão de chaves: falha ao alocar memória para `%s'" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "`%s': nome de apelido (alias) inválido" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "edição de linha não habilitada" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "`%s': nome de mapa de teclas inválido" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: impossível ler: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': nome de função desconhecida" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s não está associada a qualquer tecla.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s pode ser chamado via " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': impossível desassociar (unbind)" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "número de loops" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "significativo apenas em um loop de `for', `while' ou `until'" + +# help caller +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Retorna o contexto da chamada de sub-rotina atual.\n" +" \n" +" Sem EXPR, retorna \"$linha $arquivo\". Com EXPR, retorna\n" +" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada " +"para\n" +" fornecer um rastro da pilha.\n" +" \n" +" O valor de EXPR indica quantos quadros de chamada deve voltar antes do\n" +" atual; o quadro do topo é o quadro 0.\n" +" \n" +" Status de saída:\n" +" Retorna 0, a menos que o shell não esteja executando uma função de\n" +" shell ou EXPR seja inválida." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME não definida" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "número excessivo de argumentos" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "diretório nulo" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD não definida" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "linha %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "aviso: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: uso: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: a opção requer um argumento" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: requer argumento numérico" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: não encontrado" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: opção inválida" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nome de opção inválido" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': não é um identificador válido" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "número octal inválido" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "número do hexa inválido" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "número inválido" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: especificação de sinal inválida" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" +"`%s': não é um identificador de processo (pid) nem é uma especificação de " +"trabalho válida" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: a variável permite somente leitura" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s fora dos limites" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argumento" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s fora dos limites" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: trabalho não existe" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: nenhum controle de trabalho" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "nenhum controle de trabalho" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: restrição" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "restrição" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: não é um comando interno do shell" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "erro de escrita: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "erro ao definir atributos do terminal: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "erro ao obter atributos do terminal: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: erro ao obter o diretório atual: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: especificação de trabalho ambígua" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "ajuda não disponível nesta versão" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: impossível remover definição: %s somente-leitura" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: impossível remover definição" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nome de ação inválido" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: nenhuma especificação de completação" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "aviso: a opção -F pode não funcionar como esperado" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "aviso: a opção -C pode não funcionar como esperado" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "não se está executando atualmente função de completação" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "somente pode ser usado em uma função" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: variável de referência não pode ser um array" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: referência a si próprio da variável nameref não é permitido" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s referência circular de nome" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "\"%s\": nome de variável inválido para referência de nome" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "impossível usar `-f' para criar funções" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: função somente para leitura" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: atribuição de array composto com aspas está obsoleto" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: impossível destruir variáveis de array desta maneira" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: impossível converter array associativo para indexado" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "carregamento dinâmico não está disponível" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "impossível abrir objeto compartilhado %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "impossível localizar %s no objeto compartilhado %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: não foi carregado dinamicamente" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "função de carregamento para %s retorna falha (%d): não foi carregada" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: não foi carregado dinamicamente" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: impossível excluir: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: é um diretório" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: não é um arquivo irregular" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: arquivo é muito grande" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: impossível executar o arquivo binário" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: impossível executar: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "sair\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "não é um shell de login: use `exit'" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Há trabalhos parados.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Há trabalhos em execução.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "nenhum comando encontrado" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "especificação do histórico" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: impossível abrir arquivo temporário: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "atual" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "o trabalho %d iniciou sem controle de trabalho" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opção ilegal -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opção requer um argumento: -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hashing está desabilitado" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tabela de hash está vazia\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "número\tcomando\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Comandos shell correspondendo à palavra-chave `" +msgstr[1] "Comandos shell correspondendo às palavras-chave `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"nenhum tópico de ajuda corresponde a `%s'. Tente `help help' ou `man -k %s' " +"ou `info %s'." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: impossível abrir: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Esses comandos shell são definidos internamente. Digite `help' para ver " +"essa\n" +"lista. Digite `help NOME' para descobrir mais sobre a função `NOME'.\n" +"Use `info bash' para descobrir mais sobre o shell em geral.\n" +"Use `man -k' ou `info' para descobrir mais sobre comandos que não estão " +"nesta\n" +"lista.\n" +"\n" +"Um asterisco (*) próximo ao nome significa que o comando está desabilitado.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "impossível usar mais de um dentre -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "posição no histórico" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: marca de tempo inválida" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: expansão do histórico falhou" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib falhou" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "nenhuma outra opção permitida com `-x'" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumentos devem ser IDs de trabalhos ou processo" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Erro desconhecido" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "esperava uma expressão" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: não é um array indexado" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: especificação de descritor de arquivo inválida" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: descritor de arquivo inválido: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: número de linhas inválido" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: origem do array inválido" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: quantidade de chamadas inválida" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "nome de variável array vazio" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "requer suporte a variável de array" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': faltando caractere de formato" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "`%c': especificação de formato de tempo inválida" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "`%c': caractere de formato inválido" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "aviso: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "problema ao analisar formato: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "faltando dígito hexa para \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "faltando dígito unicode para \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "nenhum outro diretório" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s argumento inválido" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "pilha de diretórios está vazia" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "índice de pilha de diretórios" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Exibe a lista de diretórios atualmente memorizados. Diretórios são\n" +" inseridos na lista por meio do comando `pushd'; você pode obter\n" +" de volta da lista com o comando `popd'.\n" +" \n" +" Opções:\n" +" -c\tlimpa a pilha de diretórios excluindo todos os elementos\n" +" -l\tnão mostra versões de diretórios prefixadas por til,\n" +" \t\trelativos ao seu diretório HOME\n" +" -p\texibe a pilha de diretório com uma entrada por linha\n" +" -v\texibe a pilha de diretório com uma entrada por linha,\n" +" \t\tprefixada com sua posição na pilha\n" +" \n" +" Argumentos:\n" +" +N\tExibe a n-ésima entrada a partir da esquerda da linha\n" +" \t\tmostrada por `dirs' chamado sem opções, iniciando com zero.\n" +" \n" +" -N\tExibe a n-ésima entrada a partir da esquerda da linha\n" +" \t\tmostrada por `dirs' chamado sem opções, iniciando com zero." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Adiciona um diretório ao topo da pilha de diretórios ou movimenta\n" +" a pilha, fazendo o novo topo da pilha ser o diretório atual de\n" +" trabalho. Com nenhum argumento, efetua troca do topo entre dois\n" +" diretórios.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de diretório ao adicionar\n" +" \t\tdiretórios à pilha, de forma que apenas a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tMovimenta a pilha de forma que o n-ésimo diretório (a contar\n" +" \t\tda esquerda da lista mostrada por `dirs', iniciando com zero)\n" +" \t\testá no topo.\n" +" \n" +" -N\tMovimenta a pilha de forma que o n-ésimo diretório (a contar\n" +" \t\tda direita da lista mostrada por `dirs', iniciando com zero)\n" +" \t\testá no topo.\n" +" \n" +" dir\tAdiciona DIR à pilha de diretórios no topo, fazendo dele o\n" +" \t\tnovo diretório de trabalho atual.\n" +" \n" +" O comando interno `dirs' exibe a pilha de diretórios." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Remove entradas da pilha de diretórios. Com nenhum argumento, remove\n" +" o diretório do topo da pilha e altera o novo diretório do topo.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de diretório ao remover\n" +" \t\tdiretórios da pilha, de forma que apenas a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRemove a n-ésima entrada a contar da esquerda da lista\n" +" \t\tmostrada por `dirs', iniciando com zero. Ex.: `popd +0'\n" +" \t\tremove o primeiro diretório e `popd +1', o segundo.\n" +" \n" +" -N\tRemove a n-ésima entrada a contar da direita da lista\n" +" \t\tmostrada por `dirs', iniciando com zero. Ex.: `popd +0'\n" +" \t\tremove o último diretório e `popd -1', o penúltimo.\n" +" \n" +" O comando interno `dirs' exibe a pilha de diretório." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: especificação de tempo limite inválida" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "erro de leitura: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"possível retornar (`return') apenas de uma função ou script carregado (com " +"`source')" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" +"impossível simultaneamente remover definição de uma função e uma variável" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: não é uma variável array" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: não é uma função" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: impossível exportar" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "número de shift" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "" +"impossível simultaneamente definir e remover definição de opções do shell" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: nome de opção de shell inválido" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "requer argumento arquivo" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: arquivo não encontrado" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "impossível suspender" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "impossível suspender um shell de login." + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s está apelidada para `%s'\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s é uma palavra-chave do shell\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s é uma função\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s é um comando interno especial do shell\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s é um comando interno do shell\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s é %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s está na tabela hash (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: argumento limite inválido" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': comando incorreto" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: impossível obter limite: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "limite" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: impossível modificar limite: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "número octal" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': operador de modo simbólico inválido" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': caractere de modo simbólico inválido" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " linha " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "último comando: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Abortando..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:462 +msgid "unknown command error" +msgstr "erro de comando desconhecido" + +#: error.c:463 +msgid "bad command type" +msgstr "tipo de comando incorreto" + +#: error.c:464 +msgid "bad connector" +msgstr "conector incorreto" + +#: error.c:465 +msgid "bad jump" +msgstr "desvio incorreto" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variável não associada" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "" +"\atempo limite de espera excedido aguardando entrada: fim automático da " +"sessão\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "impossível redirecionar a entrada padrão para /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': caractere de formato inválido" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] ainda existe" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "erro de `pipe'" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: excedido o nível máximo de aninhamento de `eval' (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: excedido o nível máximo de aninhamento de `function' (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: excedido o nível máximo de aninhamento de avaliação (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restrição: não é permitido especificar `/' em nomes de comandos" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: comando não encontrado" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: interpretador incorreto" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: impossível executar o arquivo binário: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "`%s': é um comando interno especial" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "impossível duplicar fd (descritor de arquivo) %d para fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "excedido o nível de recursividade da expressão" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "esvaziamento de pilha de recursão" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "erro de sintaxe na expressão" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "tentativa de atribuição para algo que não é uma variável" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "erro de sintaxe na atribuição de variável" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "divisão por 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "erro de programação: token incorreto passado para expassign()" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "esperava `:' para expressão condicional" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "exponente menor que 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "esperava identificador após pré-acréscimo ou pré-decréscimo" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "faltando `)'" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "erro de sintaxe: esperava operando" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "erro de sintaxe: operador aritmético inválido" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (token de erro é \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "base aritmética inválida" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: número de linhas inválido" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "valor muito grande para esta base de numeração" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: erro de expressão\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: impossível acessar os diretórios pais (anteriores)" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "" +"impossível redefinir modo `nodelay' para o descritor de arquivo (fd) %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"impossível alocar novo descritor de arquivo (fd) para a entrada do `bash' a " +"partir do fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "" +"save_bash_input: buffer já existe para o novo descritor de arquivo (fd) %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: `pipe' de pgrp" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" +"identificador de processo (pid) %d bifurcado (fork) aparece no trabalho em " +"execução %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "excluindo trabalho parado %d com grupo de processo %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) marcado como ainda vivo" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: o identificador do processo (pid) não existe" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Sinal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Concluído" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Parado" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Parado(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Executando" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Concluído(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Fim da execução com status %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Status desconhecido" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(imagem do núcleo gravada)" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "`setpgid' filho (%ld para %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: o pid %ld não é um processo filho deste shell" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Sem registro do processo %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: trabalho %d está parado" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: trabalho não existe" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: o trabalho terminou" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: o trabalho %d já está em plano de fundo" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: ativando WNOHANG para evitar bloqueio indefinido" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s, linha %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (imagem do núcleo gravada)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd agora: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp falhou" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: nenhum controle de trabalho em plano de fundo" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: disciplina da linha" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "impossível definir grupo do processo do terminal (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "nenhum controle de trabalho neste shell" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: asserção falhou: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: asserção remendada\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "desconhecido" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: bloco socado em lista livre" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: chamado com argumento de bloco já liberado" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: chamado com argumento de bloco não alocado" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: esvaziamento de pilha detectado; mh_nbytes fora do limite" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: esvaziamento de pilha detectado; mh_nbytes fora do limite" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: tamanhos de porções do início e do fim são diferentes" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: chamado com argumento de bloco não alocado" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: esvaziamento de pilha detectado; mh_nbytes fora do limite" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: esvaziamento de pilha detectado; mh_nbytes fora do limite" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: tamanhos de porções do início e do fim são diferentes" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: tabela de `alloc' está cheia com FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p já na tabela como alocado?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p já na tabela como livre?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "base inválida" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: máquina desconhecida" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: serviço inválido" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: especificação de caminho de rede inválida" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "sem suporte a operações de rede" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: impossível alterar locale (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: impossível alterar locale (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: impossível alterar locale (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: impossível alterar locale (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Você tem mensagem de correio em $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Você tem mensagem nova de correio em $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "As mensagens de correio em %s foram lidas\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "erro de sintaxe: requer expressão aritmética" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "erro de sintaxe: `;' inesperado" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "erro de sintaxe: `((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tipo da instrução incorreto %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"here-document na linha %d delimitado pelo fim do arquivo (desejava `%s')" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: instrução de redirecionamento `%d' fora do limite" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) excede SIZE_MAX (%lu): linha truncada" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "excedido o número máximo de here-document" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "encontrado EOF inesperado enquanto procurava por `%c' correspondente" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "encontrado EOF inesperado enquanto procurava por `]]'" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "erro de sintaxe na expressão condicional: token inesperado `%s'" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "erro de sintaxe na expressão condicional" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "token inesperado `%s', esperava`)'" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "esperava `)'" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argumento inesperado `%s' para operador unário condicional" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "argumento inesperado para operador unário condicional" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "token inesperado `%s', esperava operador binário condicional" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "esperava operador binário condicional" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argumento inesperado `%s' para operador binário condicional" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "argumento inesperado para operador binário condicional" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "token inesperado `%c' em comando condicional" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "token inesperado `%s' em comando condicional" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "token inesperado %d em comando condicional" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "erro de sintaxe próximo ao token inesperado `%s'" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "erro de sintaxe próximo a `%s'" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "erro de sintaxe: fim prematuro do arquivo" + +#: parse.y:6365 +msgid "syntax error" +msgstr "erro de sintaxe" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use \"%s\" para sair do shell.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "encontrado EOF inesperado enquanto procurava por `)' correspondente" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: função `%s' não encontrada" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: possível loop de nova tentativa" + +# COMPSPEC é variável no código fonte, manter sem tradução para português. +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: COMPSPEC NULO" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: conector incorreto `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: descritor de arquivo inválido" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: ponteiro de arquivo NULO" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: `%c': caractere de formato inválido" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "descritor de arquivo fora dos limites" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: redirecionamento ambíguo" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: impossível sobrescrever arquivo existente" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restrição: impossível redirecionar saída" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "impossível criar arquivo temporário para here-document: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: impossível atribuir fd a variável" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "sem suporte a /dev/(tcp|udp)/máquina/porta sem rede" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "erro de redirecionamento: impossível duplicar fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "impossível localizar /tmp, por favor crie!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp deve ser um nome de diretório válido" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "modo de impressão bonita ignorada em shells interativos" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opção inválida" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "impossível definir uid para %d: uid efetivo %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "impossível definir gid para %d: gid efetivo %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "possível iniciar o depurador; modo de depuração desabilitado" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: É um diretório" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Eu não tenho nome!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versão %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Utilização:\t%s [opção-longa-GNU] [opção] ...\n" +"\t%s [opção-longa-GNU] [opção] arquivo-de-script ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "opções-longas-GNU:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Opções do shell:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD or -c comando ou -O opção-shopt\t\t(somente para chamada)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ou -o opção\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Digite `%s -c \"help set\"' para mais informações sobre as opções do shell.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Digite `%s -c help' para mais informações sobre os comandos internos do " +"shell.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Uso o comando `bashbug' para relatar erros.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "página do bash: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Ajuda geral sobre uso de software GNU: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: operação inválida" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Sinal falso" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Hangup" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Interromper" + +#: siglist.c:58 +msgid "Quit" +msgstr "Sair" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Instrução ilegal" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT Rastreamento/Captura (BPT trace/trap)" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Instrução ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "Instrução EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Exceção de ponto flutuante" + +#: siglist.c:86 +msgid "Killed" +msgstr "Morto (Killed)" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Erro do barramento" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Falha de segmentação" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Chamada incorreta do sistema" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "`Pipe' partido (escrita sem leitura)" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Relógio de alarme" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Terminado" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Condição urgente de Entrada/Saída" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Parado (sinal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Continuar" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Processo filho parado ou terminado" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Parado (entrada tty)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Parado (saída tty)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "Entrada/Saída pronta" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Tempo limite de CPU excedido" + +#: siglist.c:154 +msgid "File limit" +msgstr "Tamanho limite do arquivo excedido" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarme (virtual)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarme (perfil)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Janela mudada" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Registro bloqueado (lock)" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Sinal 1 definido pelo usuário" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Sinal 2 definido pelo usuário" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "entrada de dados HFT pendente" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "falha iminente de energia" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "falha iminente do sistema" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "migrar o processo para outra CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "erro de programação" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "modo monitor HFT autorizado" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "modo monitor HFT rescindido" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "a seqüência de som HFT foi completada" + +#: siglist.c:214 +msgid "Information request" +msgstr "Requisição de informação" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Sinal desconhecido #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "substituição incorreta: sem `%s' de fechamento em %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: impossível atribuir uma lista a um membro de um array" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "impossível criar `pipe' para a substituição do processo" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "impossível criar um processo filho para a substituição do processo" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "impossível abrir `pipe' %s para leitura" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "impossível abrir `pipe' %s para escrita" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "impossível duplicar `pipe' %s como descritor de arquivo (fd) %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "substituição de comando: byte nulo ignorado na entrada" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "impossível criar um `pipe' para substituição do comando" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "impossível criar um processo filho para substituição do comando" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" +"command_substitute: impossível duplicar o `pipe' como descritor de arquivo " +"(fd) 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: nome de variável inválido para referência de nome" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: expansão indireta inválida" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: nome de variável inválido" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parâmetro não inicializado" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parâmetro nulo ou não inicializado" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expressão de substring < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substituição incorreta" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: impossível atribuir desta maneira" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"versões futuras do shell vão forçar avaliação como um substituto aritmético" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "substituição incorreta: sem \"`\" de fechamento em %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "sem correspondência: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "esperava argumento" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: esperava expressão de número inteiro" + +#: test.c:265 +msgid "`)' expected" +msgstr "esperava `)'" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "esperava `)', encontrado %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: esperava operador binário" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: esperava operador unário" + +#: test.c:881 +msgid "missing `]'" +msgstr "faltando `]'" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "erro de sintaxe: `;' inesperado" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "número de sinal inválido" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" +"manipulador de trap: excedido o nível máximo de manipulador de captura (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: valor incorreto em trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: manipulador de sinal é SIG_DFL, enviando novamente %d " +"(%s) para mim mesmo" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: sinal incorreto %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "erro ao importar a definição da função para `%s'" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "nível do shell (%d) muito grande, redefinindo para 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: nenhum contexto de função no atual escopo" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: a variável pode não ter um valor atribuído" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: atribuindo inteiro para referência de nome" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: nenhum contexto de função no escopo atual" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s possui a string de exportação nula" + +# exportstr é uma variável no código fonte do bash (arquivo variiables.c) +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "caractere inválido na %d na exportstr para %s" + +# exportstr é uma variável no código fonte do bash (arquivo variiables.c) +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "Sem `=' na exportstr para %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: cabeça de shell_variables não é um contexto de função" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: nenhum contexto em no global_variables" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: cabeça de shell_variables não é um escopo de ambiente temporário" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: impossível abrir como ARQUIVO" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: valor inválido para rastrear descritor de arquivo" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: valor de compatibilidade fora dos limites" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licença GPLv3+: GNU GPL versão 3 ou posterior .\n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versão %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Este é um software livre; você é livre para alterar e redistribuí-lo." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Há NENHUMA GARANTIA, na extensão permitida pela lei." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: impossível alocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: impossível alocar %lu bytes" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: impossível alocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: impossível alocar %lu bytes" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [NOME[=VALOR] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] NOME [NOME ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m MAPA-TECLAS] [-f ARQUIVO] [-q NOME] [-u NOME] [-r SEQ-" +"TECLAS] [-x SEQ-TECLAS:COMANDO-SHELL] [SEQ-TECLAS:FUNÇÃO-DE-LINHA ou " +"COMANDO-DE-LINHA]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [COMANDO-INTERNO-SHELL [ARG ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [EXPR]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [DIR]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] COMANDO [ARG ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [NOME[=VALOR] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] NOME[=VALOR] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [OPÇÃO] NOME[=VALOR] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [ARG ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [ARG ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-DnPs] [-f ARQUIVO] [NOME ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [ARG ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts OPTSTRING NOME [ARG]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a NOME] [COMANDO [ARGUMENTOS ...]] [REDIRECIONAMENTO ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e EDITOR] [-lnr] [PRIMEIRO] [ÚLTIMO] ou fc -s [ANTIGO=NOVO] [COMANDO]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [ESPEC-JOB]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [ESPEC-JOB ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p CAMINHO] [-dt] [NOME ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [PADRÃO ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d POSIÇÃO] [n] ou history -anrw [ARQUIVO] ou history -ps ARG " +"[ARG...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [ESPEC-JOB ...] ou jobs -x COMANDO [ARGS]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [ESPEC-JOB ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s SIGSPEC | -n SIGNUM | -SIGSPEC] PID | ESPEC-JOB ... ou kill -l " +"[SIGSPEC]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let ARG [ARG ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a ARRAY] [-d DELIM] [-i TEXTO] [-n NCHARS] [-N NCHARS] [-p " +"CONFIRMAR ] [-t TEMPO] [-u FD] [NOME ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o NOME-OPÇÃO] [--] [ARG ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [NOME ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [NOME[=VALOR] ...] ou export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [NOME[=VALOR] ...] ou readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source ARQUIVO [ARGUMENTOS]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". ARQUIVO [ARGUMENTOS]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [EXPR]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ ARG... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[ARG] ESPEC-SINAL ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-apt] NOME [NOME ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [LIMITE]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [MODO]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [ID ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [PID ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOME [in PALAVRAS ...] ; do COMANDOS; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( EXP1; EXP2; EXP3 )); do COMANDOS; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NOME [in PALAVRAS ... ;] do COMANDOS; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] LINHA-COMANDOS" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else " +"COMANDOS; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMANDOS; do COMANDOS; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMANDOS; do COMANDOS; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NOME] COMANDO [REDIRECIONAMENTOS]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function NOME { COMANDOS ; } ou NOME () { COMANDOS ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ COMANDOS ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "ESPEC-JOB [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( EXPRESSÃO ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ EXPRESSÃO ]]" + +# Não traduzir "variables", esta é uma opção "builtin" do "bash" que é exibida ao executar "help" e acessível com "help variables". +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Nomes e significados de algumas variáveis do shell" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | DIR]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [NOME-OPÇÃO ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v VAR] FORMATO [ARGUMENTOS]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPÇÃO] [-A AÇÃO] [-G GLOBAL] [-W " +"LISTA-PALAVRAS] [-F FUNÇÃO] [-C COMANDO] [-X FILTRO] [-P PREFIXO] [-S " +"SUFIXO] [NOME ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o OPÇÃO] [-A AÇÃO] [-G GLOBAL] [-W LISTA-" +"PALAVRAS] [-F FUNÇÃO] [-C COMANDO] [-X FILTRO] [-P PREFIXO] [-S SUFIXO] " +"[PALAVRA]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o OPÇÃO] [-DEI] [NOME ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d DELIM] [-n NÚMERO] [-O ORIGEM] [-s NÚMERO] [-t] [-u FD] [-C " +"CHAMADA] [-c QUANTIDADE] [ARRAY]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d DELIM] [-n NÚMERO] [-O ORIGEM] [-s NÚMERO] [-t] [-u FD] [-C " +"CHAMADA] [-c QUANTIDADE] [ARRAY]" + +# help alias +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Define ou exibe apelidos (aliases).\n" +" \n" +" Sem argumentos, `alias' mostra a lista de apelidos no formato usável\n" +" `alias NOME=VALOR' na saída padrão.\n" +" \n" +" Do contrário, um apelido é definido para cada NOME cujo VALOR é dado.\n" +" Um espaço ao final em VALOR resulta na próxima palavra ser verificada\n" +" por substituição de apelido quando o apelido for expandido.\n" +" \n" +" Opções:\n" +" -p\tmostra todos os apelidos definidos em uma formato usável\n" +" \n" +" Status de saída:\n" +" `alias' retorna verdadeiro, a menos que seja fornecido um NOME para\n" +" o qual não se tenha definido um apelido" + +# help unalias +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Remove cada NOME da lista de apelidos definidos.\n" +" \n" +" Opções:\n" +" -a\tremove todas as definições de apelidos\n" +" \n" +" Retorna sucesso, a menos que NOME não seja um apelido existente." + +# help bind +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Define variáveis e associações de teclas para Readline.\n" +" \n" +" Associa uma sequência de teclas para uma função Readline ou uma macro\n" +" ou define uma variável de Readline. A sintaxe de argumento sem opção é\n" +" equivalente àquela encontrada em ~/.inputrc, mas deve ser passada como\n" +" um argumento singular.\n" +" \n" +" Opções:\n" +" -m MAPA-TECLAS Usa MAPA-TECLAS como mapa de teclas para a duração\n" +" deste comando. Nomes de mapa de teclas aceitáveis\n" +" são emacs, emacs-standard, emacs-meta, emacs-ctlx,\n" +" vi, vi-move, vi-command e vi-insert.\n" +" -l Lista nomes de funções.\n" +" -P Lista nomes e associações de função.\n" +" -p Lista funções e associações em uma forma que pode " +"ser\n" +" usada como entrada.\n" +" -S Lista sequências de teclas que chamam macros e " +"seus\n" +" valores\n" +" -s Lista sequências de teclas que chamam macros e " +"seus\n" +" valores em uma forma que pode ser usada como " +"entrada.\n" +" -V Lista nomes e valores de variáveis\n" +" -v Lista nomes e valores de variáveis em uma forma " +"que\n" +" pode ser usada como entrada.\n" +" -q NOME Consulta sobre quais teclas chamam a função " +"informada.\n" +" -u NOME Desassocia todas teclas que estão associadas à " +"função\n" +" informada.\n" +" -r SEQ-TECLAS Remove a associação para SEQ-TECLAS.\n" +" -f ARQUIVO Lê associações de tecla de ARQUIVO.\n" +" -x SEQ-TECLAS:COMANDO-SHELL\n" +" Faz com que COMANDO-SHELL seja executado ao " +"inserir\n" +" SEQ-TECLAS.\n" +" -X Lista sequência de teclas associadas com -x e " +"comandos\n" +" associados em uma forma que pode ser usada como\n" +" entrada.\n" +" \n" +" Status de saída:\n" +" `bind' retorna 0 a mesmo que uma opção desconhecida seja fornecida ou\n" +" um erro ocorrer." + +# help break +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Sai de loops de for, while ou until.\n" +" \n" +" Sai de um loop de FOR, WHILE ou UNTIL. Se N for especificado, quebra N \n" +" blocos de declaração de loops.\n" +" \n" +" Status de saída:\n" +" O status de saída é 0, a menos que N não seja maior ou igual a 1." + +# help continue +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Resume loops de for, while ou until.\n" +" \n" +" Resume a próxima iteração do bloco de declaração de loop de FOR, WHILE\n" +" ou UNTIL.\n" +" Se N for especificado, resume o N-ésimo bloco de declaração de loop.\n" +" \n" +" Status de saída:\n" +" O status de saída é 0, a menos que N não seja maior ou igual a 1." + +# help builtin +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Executa comandos internos (builtin) do shell.\n" +" \n" +" Executa COMANDO-INTERNO-SHELL com argumentos ARGs sem realizar procura\n" +" por comandos. Isso é útil quando você deseja reimplementar um comando\n" +" interno como uma função shell, mas precisa executar o comando interno\n" +" dentro de uma função.\n" +" \n" +" Status de saída:\n" +" Retorna o status de saída de COMANDO-INTERNO-SHELL ou falso, se\n" +" COMANDO-INTERNO-SHELL não for de fato um comando interno de shell." + +# help caller +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Retorna o contexto da chamada de sub-rotina atual.\n" +" \n" +" Sem EXPR, retorna \"$linha $arquivo\". Com EXPR, retorna\n" +" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada " +"para\n" +" fornecer um rastro da pilha.\n" +" \n" +" O valor de EXPR indica quantos quadros de chamada deve voltar antes do\n" +" atual; o quadro do topo é o quadro 0.\n" +" \n" +" Status de saída:\n" +" Retorna 0, a menos que o shell não esteja executando uma função de\n" +" shell ou EXPR seja inválida." + +# help cd +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Altera o diretório de trabalho do shell.\n" +" \n" +" Altera o diretório atual para DIR, sendo o padrão de DIR o mesmo valor\n" +" da variável HOME.\n" +" \n" +" A variável CDPATH define o caminho de pesquisa para o diretório " +"contendo\n" +" DIR. Nomes de diretórios alternativos em CDPATH são separados por\n" +" dois-pontos (:). Um nome de diretório nulo é o mesmo que o diretório\n" +" atual. Se DIR inicia com uma barra (/), então CDPATH não é usada.\n" +" \n" +" Se o diretório não for encontrado e a opção `cdable_vars` estiver " +"definida\n" +" no shell, a palavra é presumida como sendo o nome de uma variável. Se\n" +" tal variável possuir um valor, este valor é usado para DIR.\n" +" \n" +" Opções:\n" +" -L\tforça links simbólicos a serem seguidos: resolver links " +"simbólicos\n" +" \t\tem DIR após processar instâncias de `..'\n" +" -P\tusa a estrutura do diretório físico sem seguir links\n" +" \t\tsimbólicos: resolve links simbólicos em DIR antes de processar\n" +" \t\tinstâncias de `..'\n" +" -e\tse a opção -P for fornecida e o diretório de trabalho atual não\n" +" \t\tpuder ser determinado com sucesso, sai com um status não-zero\n" +" -@\tem sistemas nos quais haja suporte, apresenta um arquivo com\n" +" \t\tatributos estendidos como um diretório contendo os atributos de\n" +" \t\tarquivo\n" +" \n" +" O padrão é seguir links simbólicos, como se `-L' tivesse sido " +"especificada.\n" +" `..' é processada removendo o componente de caminho imediatamente " +"anterior\n" +" de volta para uma barra ou para o início de DIR.\n" +" \n" +" Status de saída:\n" +" Retorna 0, se o diretório tiver sido alterado e se $PWD está definida " +"com\n" +" sucesso quando a opção -P for usada; do contrário, retorna não-zero." + +# help pwd +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Mostra o nome do diretório de trabalho atual.\n" +" \n" +" Opções:\n" +" -L\tmostra o valor de $PWD se ele tiver o nome do diretório de\n" +" \t\ttrabalho atual\n" +" -P\tmostra o diretório físico, sem quaisquer links simbólicos\n" +" \n" +" Por padrão, `pwd' se comporta como se a opção `-L' foi especificada.\n" +" \n" +" Status de saída:\n" +" Retorna 0, a menos que uma opção inválida seja fornecida ou o diretório\n" +" atual não possa ser lido." + +# help : +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Comando nulo.\n" +" \n" +" Nenhum efeito; o comando não faz nada.\n" +" \n" +" Status de saída:\n" +" Sempre com sucesso." + +# help true +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Retorna um resultado de sucesso.\n" +" \n" +" Status de saída:\n" +" Sempre sucesso." + +# help false +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Retorna um resultado de insucesso.\n" +" \n" +" Status de saída:\n" +" Sempre falha." + +# help command +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Executa um comando simples ou exibe informação sobre comandos.\n" +" \n" +" Executa COMANDO com ARG suprimindo a procura por função do shell ou\n" +" exibe informação sobre os COMANDOs especificados. Pode ser usado para\n" +" chamar comandos no disco quando um função com o mesmo nome existe.\n" +" \n" +" Opções:\n" +" -p\tusa um valor padrão como variável PATH no qual garantidamente\n" +" \t\tse encontram todas os utilitários padrão\n" +" -v\tmostra uma descrição de COMANDO similar ao comando `type'\n" +" -V\tmostra uma descrição detalhada (verboso) para cada COMANDO\n" +" \n" +" Status de saída:\n" +" Retorna status de saída de COMANDO ou falha, se COMANDO não for \n" +" encontrado." + +# help declare +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Define valores e atributos de variável.\n" +" \n" +" Declara variáveis e a elas fornece atributos. Se nenhum NOME for " +"fornecido,\n" +" exibe os atributos e valores de todas as variáveis.\n" +" \n" +" Opções:\n" +" -f\trestringe ação ou exibição dos nomes e definições de funções\n" +" -F\trestringe exibição a nomes de função apenas (mais número de linha\n" +" \t\te arquivo fonte, na depuração)\n" +" -g\tcria variáveis globais quando usado em uma função do shell;\n" +" \t\tdo contrário, ignorado\n" +" -p\texibe os atributos e valores de cada NOME\n" +" \n" +" Opções que definem atributos:\n" +" -a\tpara fazer NOMEs serem arrrays indexados (se houver suporte)\n" +" -A\tpara fazer NOMEs serem arrrays associativos (se houver suporte)\n" +" -i\tpara fazer NOMEs terem o atributo `integer'\n" +" -l\tpara converter o valor de cada NOME para minúsculo em sua " +"atribuição\n" +" -n\tfazer de NOME uma referência à variável chamada por seu valor\n" +" -r\tpara fazer de NOMEs somente-leitura\n" +" -t\tpara fazer NOMEs terem o atributo `trace'\n" +" -u\tpara converter o valor de cada NOME para maiúsculo em sua " +"atribuição\n" +" -x\tpra fazer NOMEs exportar\n" +" \n" +" Usar `+' ao invés de `-' desliga o atributo dado.\n" +" \n" +" Variáveis com o atributo `integer' têm sua avaliação aritmética (veja o\n" +" comando `let') realizada quando é atribuído um valor à variável.\n" +" \n" +" Quando usado em uma função, `declare' torna NOMEs local, da mesma forma\n" +" que o comando `local'. A opção `-g' suprime este comportamento.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida tenha sido fornecida ou\n" +" ocorrer um erro de atribuição de variável." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Define valores e atributos de variável.\n" +" \n" +" Um sinônimo para `declare'. Veja `help declare'." + +# help local +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Define variáveis locais.\n" +" \n" +" Cria uma variável local chamada NOME e lhe dá VALOR. OPÇÃO pode ser\n" +" qualquer opção aceita pelo `declare'.\n" +" \n" +" Variáveis locais podem ser usadas apenas em uma função; elas são " +"visíveis\n" +" apenas para a função na qual elas foram definidas, bem como para seus\n" +" filhos.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida, ocorrer\n" +" um erro de atribuição de uma variável ou o shell não estiver executando\n" +" uma função." + +# help echo +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Escreve argumentos para a saída padrão.\n" +" \n" +" Exibe os ARGs, separados por um único caractere de espaço e seguido\n" +" por uma nova linha, na saída padrão.\n" +" \n" +" Opções:\n" +" -n\tnão anexa uma nova linha\n" +" -e\thabilita interpretação de escapes de contrabarra a seguir\n" +" -E\texplicitação suprime interpretação de escapes de contrabarra\n" +" \n" +" `echo' interpreta os caracteres escapados por contrabarra:\n" +" \\a\talerta (bipe)\n" +" \\b\tbackspace\n" +" \\c\tsuprime futuras saídas\n" +" \\e\tcaractere de escape\n" +" \\E\tcaractere de escape\n" +" \\f\talimentação de formulário (form feed)\n" +" \\n\tnova linha\n" +" \\r\tretorno de carro (carrier return)\n" +" \\t\tTAB horizontal\n" +" \\v\tTAB vertical\n" +" \\\\\tcontrabarra\n" +" \\0nnn\to caractere cujo código ASCII é NNN (octal). NNN pode\n" +" \t\tter 0 a 3 dígitos octais\n" +" \\xHH\to caractere de 8 bits cujo valor é HH (hexadecimal). HH\n" +" \t\tpode ter um ou dois dígitos hexa\n" +" \\uHHHH\to caractere Unicode cujo valor é o valor hexadecimal HHHH.\n" +" \t\tHHHH pode ter um a quatro dígitos hexa.\n" +" \\UHHHHHHHH o caractere Unicode cujo valor é o valor hexadecimal\n" +" \t\tHHHHHHHH. HHHHHHHH pode ter um a oito dígitos hexa.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que ocorra um erro de escrita." + +# help echo +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Escreve argumentos para a saída padrão.\n" +" \n" +" Exibe os ARGs na saída padrão seguido por uma nova linha.\n" +" \n" +" Opções:\n" +" -n\tnão anexa uma nova linha\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que ocorra um erro de escrita." + +# help enable +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Habilita e desabilita comandos internos do shell.\n" +" \n" +" Habilita e desabilita comandos internos do shell. Desabilitar\n" +" permite que você executa um comando do disco que possui o mesmo\n" +" nome que um outro comando interno sem usar um caminho completo.\n" +" \n" +" Opções:\n" +" -a\tmostra uma lista de comandos internos mostrando se cada\n" +" \t\tum está habilitado\n" +" -n\tdesabilita cada NOME ou exibe uma lista de comandos\n" +" \t\tinternos desabilitados\n" +" -p\texibe a lista de comandos internos em um formato usável\n" +" -s\texibe apenas nomes dos comandos internos 'especial' Posix\n" +" \n" +" Opções de controle de carregamento dinâmico:\n" +" -f\tcarrega comando interno NOME do objeto compartilhado ARQUIVO\n" +" -d\tremove um comando interno carregado com -f\n" +" \n" +" Não sendo informado uma opção, cada NOME é habilitado.\n" +" \n" +" Para usar o `test' encontrado em $PATH, ao invés da versão de comando\n" +" interno do shell, digite `enable -n test'.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que NOME não seja um comando interno de shell\n" +" ou ocorrer um erro." + +# help eval +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Executa argumentos como um comando de shell.\n" +" \n" +" Combina ARGs em uma única string, usa o resultado como entrada para o\n" +" shell, e executa os comandos resultantes.\n" +" \n" +" Status de saída:\n" +" Retorna status de saída do comando ou sucesso, se o comando for nulo." + +# help getopts +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Analisa argumentos de opções.\n" +" \n" +" Getopts é usado pelos procedimentos do shell para analisar parâmetros\n" +" posicionais como opções.\n" +" \n" +" OPÇÕES é uma string que contém as letras de opções a ser reconhecidas;\n" +" se uma letra é seguida por dois-pontos, é esperado que a opção tenha\n" +" um argumento, o que deveria ser separado dela por um espaço em branco.\n" +" \n" +" A cada vez que ele é chamado, getopts coloca a próxima opção\n" +" na variável shell $NOME, inicializando NOME se ela não existir,\n" +" e o índice do próximo argumento a ser processado para dentro da\n" +" variável OPTIND. OPTIND é inicializado para 1 a cada vez que o\n" +" shell ou um script shell é chamado. Quando uma opção requer\n" +" um argumento, getopts coloca aquele argumento em uma variável\n" +" shell chamada OPTARG.\n" +" \n" +" getopts relata erros em um de duas formas. Se o primeiro caractere\n" +" de OPÇÕES for caractere dois-pontos, getopts usa sistema silencioso de\n" +" relatório de erro. Neste modo, nenhuma mensagem de erro é mostrada.\n" +" Se uma opção inválida é vista, getopts coloca o caractere de opção\n" +" encontrada dentro do OPTARG. Se um argumento obrigatório não for\n" +" encontrado, getopts coloca um ':' em NOME e define OPTARG para o\n" +" caractere de opção encontrada. Se getopts não estiver no modo\n" +" silencioso, uma opção inválida é vista, getopts coloca um '?' em\n" +" NOME e remove definição de OPTARG. Se um argumento obrigatório não for\n" +" encontrado, um '?' é colocado em NOME, OPTARG tem sua definição " +"removida\n" +" e uma mensagem de diagnóstico é mostrada.\n" +" \n" +" Se a variável shell OPTERR possuir o valor 0, getopts desabilita a\n" +" exibição de mensagens de erro, mesmo se o primeiro caractere de\n" +" OPÇÕES não for dois-pontos. OPTERR tem o valor por padrão.\n" +" \n" +" Getopts normalmente analisa os parâmetros posicionais ($0 - $9), mas se\n" +" mais argumentos forem fornecidos, eles serão analisados.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, se uma opção for encontrada; falha se o fim das opções\n" +" for encontrado ou ocorrer um erro." + +# help exec +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Substitui o shell com o comando fornecido.\n" +" \n" +" Executa COMANDO, substituindo o shell com o programa especificado.\n" +" ARGUMENTOS se tornam os argumentos para COMANDO. Se COMANDO não for\n" +" especificado, quaisquer redirecionamentos surtem efeito no shell\n" +" atual.\n" +" \n" +" Opções:\n" +" -a NOME\tpassa NOME como argumento zero para COMANDO\n" +" -c\texecuta COMANDO com um ambiente vazio\n" +" -l\tcoloca um traço no argumento zero para COMANDO\n" +" \n" +" Se o comando não puder ser executado, um shell não-interativo sai,\n" +" a menos que a opção `execfail' esteja definida.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que COMANDO não seja encontrado ou ocorrer um\n" +" erro no redirecionamento." + +# help exit +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Sai do shell.\n" +" \n" +" Sai do shell com status igual a N. Se N for omitido, o status\n" +" de saída é o mesmo do último comando executado." + +# help exit +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Sai de um shell de login.\n" +" \n" +" Sai de um shell de login com o status de saída N. Retorna um erro\n" +" se não for executada em um shell de login." + +# help fc +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Exibe ou executa comandos da lista do histórico.\n" +" \n" +" fc é usado para listar ou editar e re-executar comandos da lista de\n" +" histórico. PRIMEIRO e ÚLTIMO podem ser números especificando o " +"intervalo\n" +" ou PRIMEIRO pode ser uma string, o que significa o comando mais recente\n" +" iniciando com aquela string.\n" +" \n" +" Opções:\n" +" -e EDITOR\tseleciona qual editor usar. O padrão é FCEDIT,\n" +" \t\t\tentão EDITOR, então vi\n" +" -l\t\tlista linhas ao invés de editar\n" +" -n\t\tomite números de linhas ao listar\n" +" -r\t\tordem reversa de linhas (mais novos listados primeiro)\n" +" \n" +" Com o formato `fc -s [ANTIGO=NOVO ...] [COMANDO]', COMANDO é\n" +" re-executado após a substituição ANTIGO=NOVO ser realizada.\n" +" \n" +" Um apelido útil para usar isso é r='fc -s', de forma que digitar `r cc'\n" +" executa o último comando iniciando com `cc' e digitar `r' re-executa\n" +" o último comando.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso ou status do comando executado; ocorrendo um erro,\n" +" retorna não-zero." + +# help fg +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Move um trabalho para o primeiro plano.\n" +" \n" +" Coloca o trabalho identificado por ESPEC-JOB em primeiro plano,\n" +" tornando o trabalho atual. Se ESPEC-JOB não estiver presente,\n" +" a noção do shell de trabalho atual é usada.\n" +" \n" +" Status de saída:\n" +" Status do comando colocado em primeiro plano ou falha, se ocorrer um " +"erro." + +# help bg +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Move trabalhos para o plano de fundo.\n" +"\n" +" Coloca os trabalhos identificados por ESPEC-JOB em plano de fundo,\n" +" como se eles tivessem sido iniciado com `&'. Se ESPEC-JOB não\n" +" estiver presente, a noção do shell de trabalho atual é usada.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que controle de trabalho não esteja\n" +" habilitado ou ocorra um erro." + +# help hash +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Memoriza ou exibe localizações de programas.\n" +" \n" +" Determina e memoriza do caminho completo de cada comando NOME. Se " +"nenhum\n" +" argumento for fornecido, exibe informação sobre comandos memorizados.\n" +" \n" +" Opções:\n" +" -d\t\tesquece a localização memorizada de cada NOME\n" +" -l\t\texibe em um formato que pode ser usado como entrada\n" +" -p CAMINHO\tusa CAMINHO como o caminho completo de NOME\n" +" -r\t\tesquece de todas as localizações memorizadas\n" +" -t\t\tmostra a localização memorizada de cada NOME, iniciando\n" +" \t\t\tcada localização com o NOME correspondente, se múltiplos\n" +" \t\t\tNOMEs forem fornecidos\n" +" Argumentos:\n" +" NOME\t\tCada NOME é pesquisado em $PATH e adicionado à lista de\n" +" \t\t\tcomandos memorizados.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que NOME não seja encontrado ou uma opção\n" +" inválida seja fornecida." + +# help help +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Exibe informação sobre comandos internos (builtin).\n" +" \n" +" Exibe resumos de comandos internos. Se PADRÃO for especificado,\n" +" fornece ajuda detalhada sobre todos os comandos correspondendo\n" +" a PADRÃO; do contrário, a lista de tópicos de ajuda é mostrada.\n" +" \n" +" Opções:\n" +" -d\texibe uma descrição breve para cada tópico\n" +" -m\texibe o uso em formato pseudo-manpage\n" +" -s\texibe apenas uma breve sinopse de uso para cada tópico\n" +" \t\tcorrespondendo a PADRÃO\n" +" \n" +" Argumentos:\n" +" PADRÃO\tPadrão especificando um tópico de ajuda\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que PADRÃO não seja encontrado ou uma opção\n" +" inválida seja fornecida." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Exibe ou manipula a lista de histórico.\n" +" \n" +" Exibe a lista de histórico com números de linhas, prefixando cada\n" +" entrada modificada com um `*'. Um argumento de N lista apenas as\n" +" últimas N entradas.\n" +" \n" +" Opções:\n" +" -c\t\tlimpa a lista de histórico ao excluir todas as entradas\n" +" -d POSIÇÃO\texclui a entrada de histórico na posição POSIÇÃO. " +"Posições\n" +"\t\t\tnegativas contam a partir do fim da lista de histórico\n" +" \n" +" -a\t\tanexa linhas de histórico desta sessão no arquivo de\n" +" \t\t\thistórico\n" +" -n\t\tlê todas as linhas de histórico ainda não lidas do\n" +" \t\t\tarquivo de histórico e anexa-os à lista de histórico\n" +" -r\t\tlê o histórico e anexa os conteúdos à lista de histórico\n" +" -w\t\tescreve o histórico atual para o arquivo de histórico\n" +" \n" +" -p\t\texecuta expansão de histórico em cada ARG e exibe o\n" +" \t\t\tresultado sem armazená-lo na lista de histórico\n" +" -s\t\tanexa os ARGs à lista de histórico como uma única entrada\n" +" \n" +" Se ARQUIVO for fornecido, ele é usado como o arquivo de histórico.\n" +" Do contrário, se a variável HISTFILE tiver um valor, este será usado;\n" +" senão, usa de ~/.bash_history.\n" +" \n" +" Se a variável HISTTIMEFORMAT for definida e não for nula, seu valor é\n" +" usado como uma string de formato para strftime(3) para mostrar a marca\n" +" de tempo associada com cada entrada de histórico exibida. Do contrário,\n" +" nenhuma marca de tempo é mostrada.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro." + +# help jobs +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Exibe status de trabalhos.\n" +" \n" +" Lista os trabalhos ativos. ESPEC-JOB restringe a saída àquele trabalho.\n" +" Não sendo informado qualquer opção, o status de todos os trabalhos\n" +" ativos é exibido.\n" +" \n" +" Opções:\n" +" -l\tlista IDs de processo junto com a informação normal\n" +" -n\tlista apenas processos que tiverem seu status alterado desde\n" +" \t\ta última notificação\n" +" -p\tlista apenas IDs de processo\n" +" -r\trestringe a saída apenas a trabalhos em execução\n" +" -s\trestringe a saída apenas a trabalhos parados\n" +" \n" +" Se -x for fornecido, COMANDO é executado após as demais especificações\n" +" de trabalho que aparecerem em ARGs terem sido substituídas com o ID de\n" +" processo daquele líder de grupo de processos do trabalhos.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro. Se -x for usado, retorna o status de saída do COMANDO." + +# help disown +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Remove trabalhos do shell atual.\n" +" \n" +" Remove cada argumento ESPEC-JOB da tabela de trabalhos ativos. Sem\n" +" qualquer ESPEC-JOB, o shell usa sua noção de trabalho atual.\n" +" \n" +" Opções:\n" +" -a\tremove todos os trabalhos se ESPEC-JOB não for fornecido\n" +" -h\tmarca cada ESPEC-JOB, de forma que SIGHUP não seja fornecido\n" +" \t\tao trabalho, caso o shell receba um SIGHUP\n" +" -r\tremove apenas trabalhos em execução\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida ou ESPEC-JOB inválido\n" +" sejam fornecidos." + +# help kill +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Envia um sinal para um trabalho.\n" +"\n" +" Envia aos processos identificados pelo PID ou pelo ESPEC-JOB o sinal\n" +" informado por SIGSPEC ou SIGNUM. Se SIGSPEC e SIGNUM\n" +" não estiverem presentes, então, SIGTERM é presumido.\n" +" \n" +" Opções:\n" +" -s SIGSPEC\tSIGSPEC especifica o nome do sinal\n" +" -n SIGNUM\t\tSIGNUM representa um número de sinal\n" +" -l\t\t\tlista os nomes dos sinais; se `-l' for acompanhado por\n" +" \t\t\t\toutros argumentos, presume-se estes sejam números de\n" +" \t\t\t\tsinais para os quais nomes deveriam ser listados\n" +" -L\t\t\tsinônimo de -l\n" +" \n" +" `Kill' é um comando interno do shell por duas razões: ele permite\n" +" IDs de trabalho serem usados ao invés de IDs de processo e permite\n" +" que processos sejam matados caso o limite de processos que você pode\n" +" criar seja atingido.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro." + +# help let +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Avalia expressões aritméticas.\n" +" \n" +" Avalia cada ARG como uma expressão aritmética. A avaliação é feita\n" +" em inteiros com largura fixa com nenhuma verificação de estouro de\n" +" pilha. A lista de operadores a seguir está agrupada em níveis de\n" +" operadores de igual precedência. Os níveis estão listados em ordem\n" +" de precedência decrescente.\n" +" \n" +" \tid++, id-- pós-acréscimo, pós-decréscimo de variável\n" +" \t++id, --id pré-acréscimo, pré-decréscimo de variável\n" +" \t-, + menos, mais unário\n" +" \t!, ~ negação lógica e bit-a-bit\n" +" \t** exponenciação\n" +" \t*, /, % multiplicação, divisão, resto de divisão\n" +" \t+, - adição, subtração\n" +" \t<<, >> deslocamento bit-a-bit para esquerda, direita\n" +" \t<=, >=, <, > comparação\n" +" \t==, != igualdade, desigualdade\n" +" \t& E (AND) bit-a-bit\n" +" \t^ OU eXclusivo (XOR) bit-a-bit\n" +" \t| OU (OR) bit-a-bit\n" +" \t&& E lógico\n" +" \t|| OU lógico\n" +" \texpr ? expr : expr operador condicional\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |= atribuição\n" +" \n" +" As variáveis de shell são permitidas como operandos. O nome da\n" +" variável é substituída pelo seu valor (coagida a um inteiro com\n" +" largura fixa) dentro de uma expressão. A variável não precisa ter\n" +" seu atributo de `inteiro' ligado para ser usada em uma expressão.\n" +" \n" +" Operadores são avaliados em ordem de precedência. Sub-expressões em\n" +" parênteses são avaliados primeiro e podem sobrescrever as regras de\n" +" precedência acima.\n" +" \n" +" Status de saída:\n" +" Se o último ARG for avaliado como 0, let retorna 1; do contrário,\n" +" let retorna 0." + +# help read +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Lê uma linha da entrada padrão e separa em campos.\n" +"\n" +" Lê uma linha da entrada padrão ou do descritor de arquivo FD, caso a\n" +" opção -u seja fornecida. A linha é separada em campos, na mesma forma " +"de\n" +" separação de palavras, e a primeira palavra é atribuída ao primeiro " +"NOME,\n" +" o segundo ao segundo NOME e por aí vai, com qualquer palavras restantes\n" +" atribuídas para o último NOME. Apenas os caracteres encontrados em $IFS\n" +" são reconhecidos como delimitadores de palavras.\n" +" \n" +" Se nenhum NOME for fornecido, a linha lida é armazenada na variável\n" +" REPLY (resposta).\n" +" \n" +" Opções:\n" +" -a ARRAY atribui as palavras lidas a índices sequenciais da\n" +" variável array ARRAY, iniciando em zero\n" +" -d DELIM continua até o primeiro caractere de DELIM ser lido, ao\n" +" invés de nova linha\n" +" -e usa Readline para obter a linha\n" +" -i TEXTO usa TEXTO como o texto inicial para Readline\n" +" -n NCHARS retorna após ler NCHARS caracteres, ao invés de esperar\n" +" por uma nova linha, mas respeita um delimitador se " +"número\n" +" de caracteres menor que NCHARS sejam lidos antes do\n" +" delimitador\n" +" -N NCHARS retorna apenas após ler exatamente NCHARS caracteres, a\n" +" menos que EOF (fim do arquivo) seja encontrado ou " +"`read'\n" +" esgote o tempo limite, ignorando qualquer delimitador\n" +" -p CONFIRMAR mostra a string PROMPT sem remover nova linha antes de\n" +" tentar ler\n" +" -r não mostra barra invertida para escapar quaisquer\n" +" caracteres\n" +" -s não ecoa entrada vindo de um terminal\n" +" -t TEMPO esgota-se o tempo limite e retorna falha, caso uma toda\n" +" uma linha não seja lida em TEMPO segundos. O valor da\n" +" variável TMOUT é o tempo limite padrão. TEMPO pode ser " +"um\n" +" número fracionado. SE TEMPO for 0, `read' retorna " +"sucesso\n" +" apenas se a entrada estiver disponível no descritor de\n" +" arquivo especificado. O status de saída é maior que " +"128,\n" +" se o tempo limite for excedido\n" +" -u FD lê do descritor de arquivo FD, ao invés da entrada " +"padrão\n" +" \n" +" Status de saída:\n" +" O código de retorno é zero, a menos que o EOF (fim do arquivo) seja\n" +" encontrado, `read' esgote o tempo limite (caso em que o código de " +"retorno\n" +" será 128), ocorra erro de atribuição de uma variável ou um descritor de\n" +" arquivo inválido seja fornecido como argumento para -u." + +# help return +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Retorna de uma função de shell.\n" +" \n" +" Causa uma função ou script carregado (source) a sair retornando o valor\n" +" especificado por N. Se N for omitido, o status de retorno é do último\n" +" comando executado dentro da função ou script.\n" +" \n" +" Status de saída:\n" +" Retorna N ou falha se o shell não estiver executando uma função ou\n" +" script." + +# help set +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Define ou remove definição de valores das opções e dos parâmetros " +"posicionais\n" +"do shell:\n" +" \n" +" Altera o valor de opções e de parâmetros posicionais do shell ou mostra\n" +" os nomes ou valores de variáveis shell.\n" +" \n" +" Opções:\n" +" -a Marca variáveis, que foram modificadas ou criadas, para " +"exportação.\n" +" -b Notifica sobre terminação de trabalho imediatamente.\n" +" -e Sai imediatamente se um comando sai com um status não-zero.\n" +" -f Desabilita a geração de nome de arquivo (\"globbing\").\n" +" -h Memoriza a localização de comandos à medida em que são " +"procurados.\n" +" -k Todos argumentos de atribuição são colocados no ambiente para um\n" +" comando, e não apenas aqueles que precedem o nome do comando.\n" +" -m Controle de trabalho está habilitado.\n" +" -n Lê comandos, mas não os executa.\n" +" -o NOME-OPÇÃO\n" +" Define a variável correspondendo a NOME-OPÇÃO:\n" +" allexport mesmo que -a\n" +" braceexpand mesmo que -B\n" +" emacs usa interface de edição de linha estilo Emacs\n" +" errexit mesmo que -e\n" +" errtrace mesmo que -E\n" +" functrace mesmo que -T\n" +" hashall mesmo que -h\n" +" histexpand mesmo que -H\n" +" history habilita histórico de comandos\n" +" ignoreeof shell não vai sair após leitura de EOF\n" +" interactive-comments\n" +" permite mostrar comentários em comandos " +"interativos\n" +" keyword mesmo que -k\n" +" monitor mesmo que -m\n" +" noclobber mesmo que -C\n" +" noexec mesmo que -n\n" +" noglob mesmo que -f\n" +" nolog atualmente aceito, mas ignorado\n" +" notify mesmo que -b\n" +" nounset mesmo que -u\n" +" onecmd mesmo que -t\n" +" physical mesmo que -P\n" +" pipefail o valor de retorno de uma linha de comandos é o\n" +" status do último comando a sair com status não-" +"zero,\n" +" ou zero se nenhum comando saiu com status não " +"zero\n" +" posix altera o comportamento do bash, onde a operação\n" +" padrão diverge dos padrões do Posix para\n" +" corresponder a estes padrões\n" +" privileged mesmo que -p\n" +" verbose mesmo que -v\n" +" vi usa interface de edição de linha estilo vi\n" +" xtrace mesmo que -x\n" +" -p Ligado sempre que IDs de usuário real e efetivo não " +"corresponderem.\n" +" Desabilita processamento do arquivo $ENV e importação de funções " +"da\n" +" shell. Ao desligar essa opção, causa o uid e o gid efetivo serem\n" +" os uid e gid reais.\n" +" -t Sai após a leitura e execução de um comando.\n" +" -u Trata limpeza (unset) de variáveis como um erro quando " +"substituindo.\n" +" -v Mostra linhas de entrada do shell na medida em que forem lidas.\n" +" -x Mostra comandos e seus argumentos na medida em que forme " +"executados.\n" +" -B o shell vai realizar expansão de chaves\n" +" -C Se definido, não permite arquivos normais existentes serem\n" +" sobrescritos por redirecionamento da saída.\n" +" -E Se definido, a armadilha ERR é herdada por funções do shell.\n" +" -H Habilita substituição de histórico estilo \"!\". Essa sinalização " +"está\n" +" habilitada por padrão quando shell é interativa.\n" +" -P Se definida, não resolve links simbólicos ao sair de comandos, " +"tais\n" +" como `cd' (que altera o diretório atual).\n" +" -T Se definido, a armadilha DEBUG e RETURN são herdadas por funções " +"do shell.\n" +" -- Atribui quaisquer argumentos restantes aos parâmetros " +"posicionais.\n" +" Se não houver argumentos restantes, os parâmetros posicionais são\n" +" limpos (unset).\n" +" - Atribui quaisquer argumentos restantes aos parâmetros " +"posicionais.\n" +" As opções -x e -v são desligadas.\n" +" \n" +" Usar +, ao invés de -, causa essas sinalizações serem desligadas. As\n" +" sinalizações também podem ser usadas por meio de chamada do shell. As\n" +" sinalizações atualmente definidas podem ser encontradas em $-. Os n " +"ARGs\n" +" restantes são parâmetros posicionais e são atribuídos, em ordem, a $1, " +"$2,\n" +" .. $n. Se nenhuma ARG for fornecido, todas as variáveis shell são\n" +" mostradas.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida." + +# help unset +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Remove valores e atributos de variáveis e funções do shell.\n" +" \n" +" Para cada NOME, remove a variável ou função correspondente.\n" +" \n" +" Opções:\n" +" -f trata cada NOME como uma função de shell\n" +" -v trata cada NOME como uma variável de shell\n" +" -n trata cada NOME como um nome referência e remove o valor em si\n" +" ao invés da variável a qual ele se refere\n" +" \n" +" Se opções, `unset' primeiro tenta remover uma variável e, se falhar,\n" +" tenta remover uma função.\n" +" \n" +" Algumas variáveis não podem ser removida; veja também `readonly'.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" um NOME seja somente-leitura." + +# help export +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Define atributo de exportação para variáveis shell.\n" +" \n" +" Marca cada NOME para exportação automática para o ambiente dos comandos\n" +" executados subsequentemente. Se VALOR for fornecido, atribui VALOR " +"antes\n" +" de exportar.\n" +" \n" +" Opções:\n" +" -f\tfaz referência a funções do shell\n" +" -n\tremove a propriedade de exportação para cada NOME\n" +" -p\texibe uma lista de todas as variáveis e funções exportadas\n" +" \n" +" Um argumento de `--' desabilita processamento de opções posteriores.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" NOME seja inválido." + +# help readonly +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Marca variáveis shell como inalteráveis.\n" +" \n" +" Marca cada NOME como somente-leitura; os valores desses NOMEs pode não\n" +" ser alterados por atribuídos subsequentes. Se VALOR for fornecido,\n" +" atribui VALOR antes de marcar como somente-leitura.\n" +" \n" +" Opções:\n" +" -a\tfaz referência a variáveis array indexados\n" +" -A\tfaz referência a variáveis array associativos\n" +" -f\tfaz referência a funções de shell\n" +" -p\texibe uma lista de todas as variáveis ou funções somente-leitura,\n" +" \t\tdependendo da opção -f ser informada ou não\n" +" \n" +" Um argumento de `--' desabilita processamento de opções posteriores.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" NOME seja inválido." + +# help shift +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Desloca parâmetros posicionais.\n" +" \n" +" Renomeia os parâmetros posicionais $N+1,$N+2 ... até $1,$2 ... Se N " +"não\n" +" for fornecido, presume-se que ele seja 1.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que N seja negativo ou maior que $#." + +# help source +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Executa comandos de um arquivo no shell atual.\n" +" \n" +" Lê e executa comandos de ARQUIVO no shell atual. As entradas em\n" +" $PATH são usadas para localizar o diretório contendo ARQUIVO. Se\n" +" quaisquer ARGUMENTOS forem fornecidos, eles se tornam parâmetros\n" +" posicionais quando ARQUIVO é executado.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado em ARQUIVO; falha se\n" +" ARQUIVO não puder ser lido." + +# help suspend +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspende execução do shell.\n" +" \n" +" Suspende a execução deste shell até que receba um sinal SIGCONT.\n" +" A menos que seja forçado, `shells` de login não podem ser suspensas.\n" +" \n" +" Opções:\n" +" -f\tforça a suspensão, ainda que o shell seja um de login\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que controle de trabalho não esteja habilitado\n" +" ou ocorra um erro." + +# help test +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Avalia expressão condicional.\n" +" \n" +" Sai com um status de 0 (verdadeiro) ou 1 (falso) dependendo da " +"avaliação\n" +" de EXPR. As expressões podem ser unárias ou binárias. Expressões " +"unárias\n" +" são normalmente usadas para examinar o status de um arquivo. Há\n" +" operadores de strings e também há operadores de comparação numérica.\n" +" \n" +" O comportamento do teste depende do número de argumentos. Leia a página\n" +" de manual do `bash' para a especificação completa.\n" +" \n" +" Operadores de arquivos:\n" +" \n" +" -a ARQUIVO Verdadeiro, se arquivo existir.\n" +" -b ARQUIVO Verdadeiro, se arquivo for um bloco especial.\n" +" -c ARQUIVO Verdadeiro, se arquivo for um caractere especial.\n" +" -d ARQUIVO Verdadeiro, se arquivo for um diretório.\n" +" -e ARQUIVO Verdadeiro, se arquivo existir.\n" +" -f ARQUIVO Verdadeiro, se arquivo existir e for um arquivo " +"normal.\n" +" -g ARQUIVO Verdadeiro, se arquivo for set-group-id.\n" +" -h ARQUIVO Verdadeiro, se arquivo for um link simbólico.\n" +" -L ARQUIVO Verdadeiro, se arquivo for um link simbólico.\n" +" -k ARQUIVO Verdadeiro, se arquivo tiver o bit `sticky' definido.\n" +" -p ARQUIVO Verdadeiro, se arquivo for um `pipe' dado.\n" +" -r ARQUIVO Verdadeiro, se arquivo for um legível por você.\n" +" -s ARQUIVO Verdadeiro, se arquivo existir e não estiver vazio.\n" +" -S ARQUIVO Verdadeiro, se arquivo for um socket.\n" +" -t FD Verdadeiro, se FD estiver aberto em um terminal.\n" +" -u ARQUIVO Verdadeiro, se arquivo estiver com set-user-id.\n" +" -w ARQUIVO Verdadeiro, se arquivo puder ser escrito por você.\n" +" -x ARQUIVO Verdadeiro, se arquivo puder ser executado por você.\n" +" -O ARQUIVO Verdadeiro, se arquivo efetivamente for seu (owned).\n" +" -G ARQUIVO Verdadeiro, se arquivo efetivamente for do seu grupo.\n" +" -N ARQUIVO Verdadeiro, se arquivo foi modificado desde a última\n" +" leitura.\n" +" \n" +" ARQ1 -nt ARQ2 Verdadeiro se ARQ1 for mais novo que ARQ2, conforme\n" +" última data de modificação.\n" +" \n" +" ARQ1 -ot ARQ2 Verdadeiro, se ARQ1 for mais velho que ARQ2.\n" +" \n" +" ARQ1 -ef ARQ2 Verdadeiro, se ARQ1 for um link rígido para ARQ2.\n" +" \n" +" Operadores de string:\n" +" \n" +" -z STRING Verdadeiro, se string estiver vazia.\n" +" \n" +" -n STRING\n" +" STRING Verdadeiro, se string não estiver vazia.\n" +" \n" +" STRING1 = STRING2\n" +" Verdadeiro, se strings forem iguais.\n" +" STRING1 != STRING2\n" +" Verdadeiro, se strings não forem iguais.\n" +" STRING1 < STRING2\n" +" Verdadeiro, se STRING1 estiver antes de STRING2, de\n" +" acordo com a ordem alfabética.\n" +" STRING1 > STRING2\n" +" Verdadeiro, se STRING1 estiver depois de STRING2, de\n" +" acordo com a ordem alfabética.\n" +" \n" +" Outros operadores:\n" +" \n" +" -o OPÇÃO Verdadeiro, se a opção shell OPÇÃO estiver habilitada.\n" +" -v VAR Verdadeiro, se a variável shell VAR estiver definida.\n" +" -R VAR Verdadeiro, se a variável shell VAR estiver definida\n" +" e for uma referência de nome.\n" +" ! EXPR Verdadeiro, se a expressão EXPR for falsa.\n" +" EXPR1 -a EXPR2 Verdadeiro, se ambas EXPR1 e EXPR2 forem verdadeiras.\n" +" EXPR1 -o EXPR2 Verdadeiro, se ao menos uma das expressões for " +"verdadeira.\n" +" \n" +" arg1 OP arg2 Testes aritméticos. OP é um dentre -eq, -ne, -lt, -" +"le,\n" +" -gt, or -ge.\n" +" \n" +" Operadores binários de aritmética retornam verdadeiro se ARG1 for " +"igual,\n" +" não-igual, menor-que, menor-ou-igual-a ou maior-ou-igual-a ARG2.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, se EXPR for avaliada como verdadeira; falha, se EXPR " +"for\n" +" avaliada como falsa ou um argumento inválido for informado." + +# help [ +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Avalia expressões condicionais.\n" +" \n" +" Esse é um sinônimo para o comando interno `test', mas o último\n" +" argumento deve ser um `]' literal, para corresponder ao `[' que abriu." + +# help times +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Exibe tempos de processos.\n" +" \n" +" Imprime os tempos de sistema e de usuário acumulados pelo shell e\n" +" todos seus processo filhos.\n" +" \n" +" Status de saída:\n" +" Sempre com sucesso." + +# help trap +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Tratamento de sinais e outros eventos.\n" +" \n" +" Define e ativa manipuladores a serem executados quando o shell recebe\n" +" sinais ou outras condições.\n" +" \n" +" ARG é um comando a ser lido e executado quando o shell recebe o\n" +" ESPEC-SINAL do(s) sinal(is). Se ARG for vazio (e um único ESPEC-SINAL\n" +" for informado) ou `-', cada sinal especificado é redefinido para seu\n" +" valor original. Se ARG for uma string nula, cada ESPEC-SINAL é ignorado\n" +" pela seu shell e pelos comados chamados por ela.\n" +" \n" +" Se um ESPEC-SINAL for EXIT (0), ARG é executado na saída do shell.\n" +" Se ESPEC-SINAL for DEBUG, ARG é executado antes de todo comando.\n" +" Se ESPEC-SINAL for RETURN, ARG é executado toda vez que uma função ou\n" +" um script shell executados pelos comandos internos `.' ou `source'\n" +" finalizarem suas execuções. Um ESPEC-SINAL sendo ERR significa executar\n" +" ARG toda vez que uma falha do comando poderia causar o shell sair,\n" +" quando a opção -e está habilitada.\n" +" \n" +" Se nenhum argumento for fornecido, `trap' imprime a lista de comandos\n" +" associados a cada sinal.\n" +" \n" +" Opções:\n" +" -l\timprime uma lista de nomes de sinais e seus números\n" +" \t\tcorrespondentes\n" +" -p\texibe os comandos associados ao tratamento com cada\n" +" \t\tESPEC-SINAL\n" +" \n" +" Cada ESPEC-SINAL é um nome de sinal em ou um número\n" +" de sinal. Nomes de sinais são sensíveis a caracteres maiúsculo e\n" +" minúsculo e o prefixo SIG (sinal) é opcional. Um SINAL pode ser enviado\n" +" para o shell com \"kill -SINAL $$\".\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que um ESPEC-SINAL seja inválido ou\n" +" uma opção inválida seja fornecida." + +# help type +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Exibe informação sobre o tipo de comando.\n" +" \n" +" Para cada NOME, indica como ele seria interpretado se fosse usado como\n" +" um nome de comando.\n" +" \n" +" Opções:\n" +" -a\texibe todas as localizações contendo um executável chamado NOME;\n" +" \t\tinclui apelidos (alias), comandos internos e funções,\n" +" \t\tse, e somente se, a opção `-p' não for usada em conjunto\n" +" -f\tsuprime a procura por função do shell\n" +" -P\tforça uma pesquisa em PATH por cada NOME, mesmo se ele for\n" +" \t\tum apelido, um comando interno ou uma função, e retorna o nome\n" +" \t\tdo arquivo de disco que seria executado\n" +" -p\tretorna o nome do arquivo de disco que seria executado ou nada,\n" +" \t\tse `type -t NOME' não retornasse `file'\n" +" -t\tmostra uma única palavra que é uma dentre `alias', `keyword',\n" +" \t\t`function', `builtin', `file' ou `', se NOME for um apelido,\n" +" \t\tpalavra reservada da shell, comando interno do shell,\n" +" \t\tarquivo de disco ou não encontrado, respectivamente\n" +" \n" +" Argumentos:\n" +" NOME\tNome de comando a ser interpretado.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, se todos os NOMEs forem encontrados; falha, se algum\n" +" deles não for encontrado." + +# help ulimit +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modifica limites de recursos do shell.\n" +" \n" +" Fornece controle sobre os recursos disponíveis para o shell e\n" +" seus processos, em sistemas que permitem tal controle.\n" +" \n" +" Opções:\n" +" -S\tusa um limite `soft' de recursos\n" +" -H\tusa um limite `hard' de recursos\n" +" -a\ttodos os limites atuais são relatados\n" +" -b\to tamanho do buffer do socket\n" +" -c\to tamanho máximo dos arquivos centrais criados\n" +" -d\to tamanho máximo de um segmento de dados do processo\n" +" -e\ta prioridade máxima de agendamento (`nice')\n" +" -f\to tamanho máximo de arquivos escritos pelo shell e seus filhos\n" +" -i\to número máximo de sinais pendentes\n" +" -k\to número máximo de kqueues alocadas para este processo\n" +" -l\to tamanho máximo que um processo pode alocar da memória\n" +" -m\to tamanho máximo de conjunto residente\n" +" -n\to número máximo de descritores de arquivo abertos\n" +" -p\to tamanho de buffer de `pipe'\n" +" -q\to número máximo de bytes em files de mensagem POSIX\n" +" -r\to tempo real máximo de prioridade de agendamento\n" +" -s\to tamanho máximo de pilha\n" +" -t\ta quantidade máxima de tempo de CPU em segundos\n" +" -u\to número máximo de processos de usuário\n" +" -v\to tamanho de memória virtual\n" +" -x\to número máximo de travas de arquivos\n" +" -P\to número máximo de pseudo-terminais\n" +" -T\to número máximo de fluxos (threads)\n" +" \n" +" Nem todas as opções estão disponíveis em todas as plataformas.\n" +" \n" +" Se LIMITE for fornecido, ele é o novo valor do recurso especificado;\n" +" os valores especiais de LIMITE `soft', `hard' e `unlimited' referem-se\n" +" ao atual limite suave, o atual limite rígido e nenhum limite,\n" +" respectivamente. Do contrário, o valor atual do recurso especificado\n" +" é impresso. Se nenhuma opção for fornecida, então -f é presumida.\n" +" \n" +" Valores estão em acréscimos de 1024 bytes, exceto para -t, que está\n" +" em segundos; -p, que é em 512 bytes; e -u, que é um número sem\n" +" escala de processos.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro." + +# help umask +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Exibe ou define máscara de modo de arquivo.\n" +" \n" +" Define a máscara de criação de arquivos do usuário para MODO. Se MODO\n" +" for omitido, imprime o valor atual da máscara.\n" +" \n" +" Se MODO inicia com um dígito, ele é interpretado como um número octal;\n" +" do contrário, ele é uma string de modo simbólico como a que é aceita\n" +" pelo chmod(1).\n" +" \n" +" Opções:\n" +" -p\tse MODO for omitido, exibe em um formulário que pode ser usado\n" +" \t\tcomo entrada\n" +" -S\ttorna a saída simbólica; do contrário, um número octal é mostrado\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que MODO seja inválido ou uma opção\n" +" inválida seja fornecida." + +# help wait +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Espera por conclusão de trabalho e retorna o status de saída.\n" +" \n" +" Espera por cada processo identificado por um ID, o que pode ser um ID\n" +" de processo ou uma especificação de trabalho, e relata seu status de\n" +" término. Se ID não for fornecido, espera por todos os processos filhos\n" +" ativos e o status de retorno é zero. Se ID é uma especificação de\n" +" trabalho, espera por todos os processos naquela sequência de comandos\n" +" dos trabalhos.\n" +" \n" +" Se a opção -n for fornecida, espera pelo próximo trabalho terminar e\n" +" retorna seu status de trabalho.\n" +" \n" +" Se a opção -f for fornecida, e o controle de trabalho estiver ativado,\n" +" espera o ID especificado terminar, em vez de esperar ele alterar o\n" +" status.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último ID; falha, se ID for inválido ou uma opção\n" +" inválida for fornecida." + +# help wait +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Espera por conclusão de processo e retorna o status de saída.\n" +" \n" +" Espera por cada processo especificado por um PID e relata seu status\n" +" de término. SE PID não for fornecido, espera por todos os processos\n" +" filhos atualmente ativos e o status de retorno é zero. PID deve ser\n" +" um ID de processo.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último ID; falha, se ID for inválido ou uma opção\n" +" inválida for fornecida." + +# help for +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos para cada membro em uma lista.\n" +" \n" +" O loop `for' executa uma sequência de comandos para cada membro em\n" +" uma lista de itens. Se `in PALAVRAS ...;' não estiver presente, então\n" +" `in \"$@\"' é presumido. Para cada elemento em PALAVRAS, NOME é " +"definido\n" +" com aquele elemento e os COMANDOS são executados.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." + +# help for (( (?) +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Loop `for' aritmético.\n" +" \n" +" Equivalente a\n" +" \t(( EXPR1 ))\n" +" \twhile (( EXPR2 )); do\n" +" \t\tCOMANDOS\n" +" \t\t(( EXPR3 ))\n" +" \tdone\n" +" EXPR1, EXPR2 e EXPR3 são expressões aritméticas. Se alguma expressão\n" +" for omitida, ele se comporta como se a avaliação resultasse em 1.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." + +# help select +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Seleciona palavras de uma lista e executa comandos.\n" +" \n" +" As PALAVRAS são expandidas, gerando uma lista de palavras.\n" +" O conjunto de palavras expandidas é exibido no erro padrão,\n" +" cada um precedido por um número. Se `in PALAVRAS' não estiver\n" +" presente, `in \"$@\"' é presumido. Então, o prompt PS3 é exibido\n" +" e uma linha é lida da entrada padrão. Se a linha consiste\n" +" do número correspondendo àquele nas palavras exibidas, então\n" +" NOME é definido para aquela palavra. Se a linha estiver vazia,\n" +" PALAVRAS e o prompt são exibidos novamente. Se EOF (fim do\n" +" arquivo) for lido, o comando conclui. Qualquer outro valor\n" +" lido causa NOME ser definido como nulo. A linha lida é salva\n" +" na variável REPLY. COMANDOS são executados após cada seleção\n" +" até um comando `break' ser executado.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." + +# help time +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Relata o tempo consumido pela execução da linha de comandos.\n" +" \n" +" Executa LINHA-COMANDOS e imprime um resumo do tempo real,\n" +" tempo de CPU do usuário e do sistema, gastos executando\n" +" LINHA-COMANDOS, quando este terminar.\n" +" \n" +" Opções:\n" +" -p\timprime o resumo do tempo no formato portátil do Posix\n" +" \n" +" O valor da variável TIMEFORMAT é usada como formato de saída.\n" +" \n" +" Status de saída:\n" +" O status de retorno é o status retornado por LINHA-COMANDOS." + +# help case +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos baseados em correspondência de padrão.\n" +" \n" +" Seletivamente executa COMANDOS baseados na PALAVRA correspondendo\n" +" a PADRÃO. O `|' é usado para separar múltiplos padrões.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." + +# help if +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos baseados em condicional.\n" +" \n" +" A lista `if COMANDOS' é executada. Se seu status de saída for zero,\n" +" então a lista `then COMANDOS' é executada. Do contrário, cada lista\n" +" `elif COMANDOS' é executada em turnos e, se seu status de saída for\n" +" zero, a lista `then COMANDOS' correspondente é executada e o comando\n" +" `if' conclui. Do contrário, a lista `else COMANDOS' é executada, se\n" +" presente. O status de saída de toda construção é o status de saída do\n" +" último comando executado, ou zero, se nenhuma condição testada\n" +" resultou em verdadeiro.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." + +# help while +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos desde que se obtenha sucesso nos testes.\n" +" \n" +" Expande e executa COMANDOS desde que o último comando nos\n" +" COMANDOS de `while' tenham status de saída zero.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." + +# help until +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos desde que não se obtenha sucesso nos testes.\n" +" \n" +" Expande e executa COMANDOS desde que o último comando nos\n" +" COMANDOS de `until' tenham status de saída zero que seja\n" +" não-zero.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Cria um coprocesso chamado NOME.\n" +" \n" +" Executa COMANDO assincronamente, com a saída padrão e entrada padrão\n" +" do comando conectados via um `pipe' (redirecionamento) para descritores\n" +" de arquivo atribuídos para índices 0 e 1 de uma variável array NOME\n" +" no shell em execução. O NOME padrão é \"COPROC\".\n" +" \n" +" Status de saída:\n" +" O comando coproc retorna um status de saída de 0." + +# help function +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Define uma função de shell.\n" +" \n" +" Cria uma função de shell chamada NOME. Quando chamado como um comando\n" +" simples, NOME executa COMANDOs no contexto de chamada shell. Quando\n" +" NOME é chamado, os argumentos são passados para a função como $1..$n\n" +" e o nome da função está em $FUNCNAME.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que NOME seja somente-leitura." + +# help -m { +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Agrupa comandos como uma unidade.\n" +" \n" +" Executa um conjunto de comandos em um grupo. Essa é uma\n" +" forma de redirecionar um todo um conjunto de comandos.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Resume trabalho em primeiro plano.\n" +" \n" +" Equivalente ao argumento ESPEC-JOB para comando `fg'. Resume um\n" +" trabalho parado ou enviado para plano de fundo. ESPEC-JOB pode\n" +" especificar tanto um nome de trabalho quanto um número de trabalho.\n" +" ESPEC-JOB seguido de um `&' coloca o trabalho em plano de fundo,\n" +" como se a especificação do trabalho tivesse sido fornecida como um\n" +" argumento para `bg'.\n" +" \n" +" Status de saída:\n" +" Retorna o status de um trabalho resumido." + +# help '((' +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Avalia expressões aritméticas.\n" +" \n" +" A EXPRESSÃO é avaliada de acordo com as regras de avaliação aritmética.\n" +" Equivalente a \"let EXPRESSÃO\".\n" +" \n" +" Status de saída:\n" +" Retorna 1, se EXPRESSÃO for avaliada como 0; do contrário, retorna 0." + +# help '[' +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Executa comando condicional.\n" +" \n" +" Retorna um status de 0 ou 1 dependendo da avaliação da expressão\n" +" condicional EXPRESSÃO. Expressões são compostas dos mesmos primários\n" +" usados pelo comando interno `test' e pode ser combinado usando os\n" +" seguintes operadores:\n" +" \n" +" ( EXPRESSÃO )\tRetorna o valor de EXPRESSÃO\n" +" ! EXPRESSÃO\tVerdadeiro, se EXPRESSÃO for falsa; senão, falso\n" +" EXPR1 && EXPR2\tVerdadeiro, se ambas EXPR1 e EXPR2 forem verdadeiras;\n" +" \t\t\tsenão, falso\n" +" EXPR1 || EXPR2\tVerdadeiro, se EXPR1 ou EXPR2 for verdadeira;\n" +" \t\t\tsenão, falso\n" +" \n" +" Quando os operadores `==' e `!=' forem usados, a string à direita do\n" +" operador é usado como um padrão e uma correspondência de padrão é\n" +" realizada. Quando o operador `=~' é usado, a string à direita do\n" +" operador é correspondida como uma expressão regular.\n" +" \n" +" Os operadores && e || não avaliam EXPR2, se EXPR1 for suficiente para\n" +" determinar o valor da expressão.\n" +" \n" +" Status de saída:\n" +" 0 ou 1 dependendo do valor de EXPRESSÃO." + +# help variables +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Nomes e uso de variáveis comuns do shell.\n" +" \n" +" BASH_VERSION\tInformação da versão deste Bash.\n" +" CDPATH\t\tUma lista separada por dois-pontos de diretórios para\n" +" \t\t\tpesquisar por diretórios fornecidos como argumentos a `cd'.\n" +" GLOBIGNORE\t\tUma lista separada por dois-pontos de padrões descrevendo\n" +" \t\t\tarquivos a serem ignorados pela expansão de caminho.\n" +" HISTFILE\t\tO nome do arquivo no qual o histórico de comandos é\n" +" \t\t\tarmazenado.\n" +" HISTFILESIZE\tO número máximo de linhas que esse arquivo pode conter.\n" +" HISTSIZE\t\tO número máximo de linhas de histórico que um shell\n" +" \t\t\tpode acessar.\n" +" HOME\t\t\tO caminho completo para seu diretório de login.\n" +" HOSTNAME\t\tO nome da sua máquina.\n" +" HOSTTYPE\t\tO tipo de CPU sob a qual esta versão do Bash está\n" +" \t\t\tfuncionando.\n" +" IGNOREEOF\t\tControla a ação do shell na recepção de um caractere\n" +" \t\t\tde fim de arquivo (EOF) como uma entrada única. Se\n" +" \t\t\tdefinida, então seu valor é o número de caracteres de EOF\n" +" \t\t\tque podem ser vistos numa leva em uma linha vazia antes\n" +" \t\t\tdo shell sair (padrão 10). Do contrário, EOF significa\n" +" \t\t\to fim da entrada.\n" +" MACHTYPE\t\tUma string descrevendo o sistema no qual Bash está sendo\n" +" \t\t\texecutado.\n" +" MAILCHECK\t\tCom qual frequência, em segundos, Bash verifica por novo\n" +" \t\t\tcorreio.\n" +" MAILPATH\t\tUma lista separada por dois-pontos de arquivos que Bash\n" +" \t\t\tverifica por novo correio.\n" +" OSTYPE\t\t\tA versão do Unix no qual Bash está sendo executado.\n" +" PATH\t\t\tUma lista separada por dois-pontos de diretórios para\n" +" \t\t\tpesquisar ao se procurar por comandos.\n" +" PROMPT_COMMAND\tUm comando a ser executado antes de imprimir cada " +"prompt\n" +" \t\t\tprimário.\n" +" PS1\t\t\t\tA string de prompt primário.\n" +" PS2\t\t\t\tA string de prompt secundária.\n" +" PWD\t\t\t\tO caminho completo do diretório atual.\n" +" SHELLOPTS\t\tUma lista separada por dois-pontos de opções shell\n" +" \t\t\t\thabilitadas.\n" +" TERM\t\t\tO nome do tipo de terminal atual.\n" +" TIMEFORMAT\t\tO formato de saída para estatísticas de tempo exibidas\n" +" \t\t\t\tpela palavra reservada `time'.\n" +" auto_resume\t\tNão-nulo significa que uma palavra de comando aparecendo\n" +" \t\t\t\tem uma linha, por si só, é procurada primeiro na lista de\n" +" \t\t\t\ttrabalhos atualmente parados. Se encontrado lá, aquele\n" +" \t\t\t\ttrabalho é levado para primeiro plano. Um valor de `exact'\n" +" \t\t\t\tsignifica que a palavra de comando deve corresponder\n" +" \t\t\t\texatamente um comando na lista de trabalhos parados. Um\n" +" \t\t\t\tvalor de `substring' significa que a palavra de comando\n" +" \t\t\t\tdeve corresponder a uma substring do trabalho. Qualquer\n" +" \t\t\t\toutro valor significa que o comando deve ser um prefixo\n" +" \t\t\t\tde um trabalho parado.\n" +" histchars\t\tCaracteres controlando expansão de histórico e\n" +" \t\t\t\tsubstituição rápida. O primeiro caractere é o de\n" +" \t\t\t\tsubstituição de histórico, normalmente `!'. O segundo\n" +" \t\t\t\té o caractere `quick substitution', normalmente `^'.\n" +" \t\t\t\tO terceiro é o caractere `quick sbustitution',\n" +" \t\t\t\tnormalmente `#'\n" +" HISTIGNORE\t\tUma lista separada por dois-pontos de padrões usados para\n" +" \t\t\t\tdecidir quais comandos deveriam ser salvos na lista de\n" +" \t\t\t\thistórico.\n" + +# help pushd +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Adiciona diretórios a uma pilha.\n" +" \n" +" Adiciona um diretório ao topo da pilha de diretórios ou movimenta\n" +" a pilha, fazendo o novo topo da pilha ser o diretório atual de\n" +" trabalho. Com nenhum argumento, efetua troca do topo entre dois\n" +" diretórios.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de diretório ao adicionar\n" +" \t\tdiretórios à pilha, de forma que apenas a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tMovimenta a pilha de forma que o n-ésimo diretório (a contar\n" +" \t\tda esquerda da lista mostrada por `dirs', iniciando com zero)\n" +" \t\testá no topo.\n" +" \n" +" -N\tMovimenta a pilha de forma que o n-ésimo diretório (a contar\n" +" \t\tda direita da lista mostrada por `dirs', iniciando com zero)\n" +" \t\testá no topo.\n" +" \n" +" dir\tAdiciona DIR à pilha de diretórios no topo, fazendo dele o\n" +" \t\tnovo diretório de trabalho atual.\n" +" \n" +" O comando interno `dirs' exibe a pilha de diretórios.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que um argumento inválido seja fornecido ou\n" +" a alteração de diretório falhar." + +# help popd +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Remove diretórios de uma pilha.\n" +"\n" +" Remove entradas da pilha de diretórios. Com nenhum argumento, remove\n" +" o diretório do topo da pilha e altera o novo diretório do topo.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de diretório ao remover\n" +" \t\tdiretórios da pilha, de forma que apenas a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRemove a n-ésima entrada a contar da esquerda da lista\n" +" \t\tmostrada por `dirs', iniciando com zero. Ex.: `popd +0'\n" +" \t\tremove o primeiro diretório e `popd +1', o segundo.\n" +" \n" +" -N\tRemove a n-ésima entrada a contar da direita da lista\n" +" \t\tmostrada por `dirs', iniciando com zero. Ex.: `popd +0'\n" +" \t\tremove o último diretório e `popd -1', o penúltimo.\n" +" \n" +" O comando interno `dirs' exibe a pilha de diretório.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que um argumento inválido seja fornecido ou\n" +" a alteração de diretório falhar." + +# help dirs +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Exibe pilha de diretórios.\n" +" \n" +" Exibe a lista de diretórios atualmente memorizados. Diretórios são\n" +" inseridos na lista por meio do comando `pushd'; você pode obter\n" +" de volta da lista com o comando `popd'.\n" +" \n" +" Opções:\n" +" -c\tlimpa a pilha de diretórios excluindo todos os elementos\n" +" -l\tnão mostra versões de diretórios prefixadas por til,\n" +" \t\trelativos ao seu diretório HOME\n" +" -p\texibe a pilha de diretório com uma entrada por linha\n" +" -v\texibe a pilha de diretório com uma entrada por linha,\n" +" \t\tprefixada com sua posição na pilha\n" +" \n" +" Argumentos:\n" +" +N\tExibe a n-ésima entrada a partir da esquerda da linha\n" +" \t\tmostrada por `dirs' chamado sem opções, iniciando com zero.\n" +" \n" +" -N\tExibe a n-ésima entrada a partir da esquerda da linha\n" +" \t\tmostrada por `dirs' chamado sem opções, iniciando com zero.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorrer um erro." + +# help shopt +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Define e remove definições de opções de shell.\n" +" \n" +" Altera a configuração de cada opção shell NOME-OPÇÃO. Sem qualquer\n" +" argumento de opção, lista cada OPTNAME fornecido com uma indicação\n" +" de se cada uma está definida ou não.\n" +" \n" +" Opções:\n" +" -o\trestringe NOME-OPÇÃO àqueles definidos para usar com `set -o'\n" +" -p\timprime cada opção shell com uma indicação de seu status\n" +" -q\tsuprime a saída\n" +" -s\thabilita (set) com NOME-OPÇÃO\n" +" -u\tdesabilita (unset) com NOME-OPÇÃO\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, se NOME-OPÇÃO estiver habilitado; falha, se uma\n" +" opção inválida for fornecida ou NOME-OPÇÃO estiver desabilitado." + +# help printf +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formata e imprime ARGUMENTOS sob controle de FORMATO.\n" +" \n" +" Options:\n" +" -v var\tatribui a saída à variável shell VAR, ao invés de exibi-la\n" +" \t\t\tna saída padrão\n" +" \n" +" FORMATO é uma string de caractere que contém três tipos de objetos;\n" +" caracteres planos, que são simplesmente copiados para a saída padrão;\n" +" sequências de escape de caracteres, que são convertidas e copiadas\n" +" para a saída padrão; e especificações de formatos, cada um que causa\n" +" impressão do próximo argumento sucessivo.\n" +" \n" +" Além das especificações de formato padrão descritas em printf(1),\n" +" printf interpreta:\n" +" \n" +" %b\texpande sequências de escape com contrabarras no argumento\n" +" \t\tcorrespondente\n" +" %q\tcita o argumento de uma forma que pode ser usado como entrada\n" +" \t\tno shell\n" +" %(fmt)T\texibe a string de data-hora resultante do uso de FMT como\n" +" \t\t\tuma string de formato para strftime(3)\n" +" \n" +" O formato é usado como necessário para consumir todos os argumentos.\n" +" Se houver menos argumentos que o formato requer, especificações de\n" +" formato extras se comportam como se uma string com valor zero ou nula,\n" +" como apropriado, tivesse sido fornecida.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro de escrita ou atribuição." + +# help complete +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Especifica como argumentos são completados por Readline.\n" +" \n" +" Para cada NOME, especifica como argumentos são completados. Se nenhuma\n" +" opção for fornecida, especificações existente para completar são\n" +" impressas em uma forma que permite-as serem usadas como entrada.\n" +" \n" +" Opções:\n" +" -p\timprime especificações existentes de completar em um formato " +"usável\n" +" -r\tremove uma especificação de completar para cada NOME ou, se " +"nenhum\n" +" \t\tNOME for fornecido, todas as especificações de completar\n" +" -D\taplica as completações e ações como sendo o padrão para comandos\n" +" \t\tsem qualquer especificação definida\n" +" -E\taplica as completações e ações para tentativa de completar\n" +" \t\tcomandos -- \"vazios\" em uma linha vazia\n" +" -I\taplica completações e ações para a palavra inicial (geralmente o\n" +" \t\tcomando)\n" +" \n" +" Ao tentar completar, as ações são fornecidas na ordem em que as opções\n" +" de letras de caixa alta são listadas acima. Se várias opções forem " +"fornecidas,\n" +" a opção -D tem precedência sobre -E, e ambos têm precedência sobre -I.\n" +" sobre -E.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro." + +# help compgen +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Exibe possibilidades de completação dependendo das opções.\n" +" \n" +" Tem a intenção de ser usado de dentro de uma função shell gerando\n" +" completações possíveis. Se o argumento opcional PALAVRA for fornecido,\n" +" comparações entre PALAVRA é gerada.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro." + +# help compopt +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Modifica ou exibe opções de completação.\n" +" \n" +" Modifica as opções de completação para cada NOME ou, se nenhum NOME for\n" +" fornecido, a completação sendo executada atualmente. Se nenhuma OPÇÃO\n" +" for fornecida, imprime as opções de completação para cada NOME ou a\n" +" especificação de completação atual.\n" +" \n" +" Opções:\n" +" \t-o OPÇÃO\tDefine a opção de completação OPÇÃO para cada NOME\n" +" \t-D\t\tAltera opções para a completação de comando \"padrão\"\n" +" \t-E\t\tAltera opções para a completação de comando \"vazio\"\n" +" \t-I\t\tAltera as opções para completação na palavra inicial\n" +" \n" +" Ao usar `+o', ao invés de `-o', desliga a opção especificada.\n" +" \n" +" Argumentos:\n" +" \n" +" Cada NOME se refere a um comando para o qual uma especificação de\n" +" completação deve ter sido definida anteriormente usando o comando\n" +" interno `complete'. Se nenhum NOME for fornecido, `compopt` deve\n" +" ser chamado por uma função atualmente gerando completações e as\n" +" opções para aquele gerador de completações atualmente em execução\n" +" são modificados.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválido seja fornecido ou\n" +" NOME não tem uma especificação de completação definida." + +# help mapfile +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Lê linhas da entrada padrão para uma variável array indexado.\n" +" \n" +" Lê linhas da entrada padrão para a variável array indexado ARRAY ou\n" +" do descritor de arquivo FD, se a opção -u for fornecida. A variável\n" +" MAPFILE é o ARRAY padrão.\n" +" \n" +" Opções:\n" +" -d DELIM Usa DELIM para terminar linhas, ao invés de nova linha\n" +" -n NÚMERO Copia no máximo NÚMERO linhas. Se NÚMERO for 0, todas " +"as\n" +" linhas são copiadas\n" +" -O ORIGEM Inicia atribuição de ARRAY no índice ORIGEM. O índice\n" +" padrão é 0\n" +" -s NÚMERO Descarta as primeiras NÚMERO linhas lidas\n" +" -t Remove uma DELIM ao final para cada linha lida\n" +" (padrão: nova linha)\n" +" -u FD Lê linhas do descritor de arquivos FD, ao invés da " +"entrada\n" +" padrão\n" +" -C CHAMADA Avalia CHAMADA a cada vez que QUANTIDADE linhas foram " +"lidas\n" +" -c QUANTIDADE Especifica o número de linhas lidas entre cada chamada " +"para\n" +" CHAMADA\n" +" \n" +" Argumentos:\n" +" ARRAY Nome da variável array para usar para arquivos de dados\n" +" \n" +" Se -C for fornecido sem -c, a quantidade padrão é 5000. Quando CHAMADA " +"é\n" +" avaliada, é fornecido o índice para o próximo elemento da array ser\n" +" atribuído e a linha para ser atribuída àquele elemento como argumentos\n" +" adicionais\n" +" \n" +" Se não for fornecido com uma origem explícita, mapfile vai limpar ARRAY\n" +" antes de lhe atribuir.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja dada ou ARRAY for\n" +" somente leitura ou não for um array indexado." + +# help readarray +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Lê linhas de um arquivo para uma variável array.\n" +" \n" +" Um sinônimo para `mapfile'." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Retorna o contexto da chamada de sub-rotina atual.\n" +#~ " \n" +#~ " Sem EXPR, retorna " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: processo %5ld (%s) em the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Sinal desconhecido #" + +#~ msgid "Copyright (C) 2015 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2015 Free Software Foundation, Inc." + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +# Não traduzir "true", esta é uma opção "builtin" do "bash" que é exibida ao executar "help" e acessível com "help true". +#~ msgid "true" +#~ msgstr "true" + +# Não traduzir "false", esta é uma opção "builtin" do "bash" que é exibida ao executar "help" e acessível com "help false". +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "disown [-h] [-ar] [jobspec ...]" +#~ msgstr "disown [-h] [-ar] [ESPEC-JOB ...]" + +# não traduzir, este é um comando +#~ msgid "times" +#~ msgstr "times" + +# help typeset +#~ msgid "" +#~ "Set variable values and attributes.\n" +#~ " \n" +#~ " Obsolete. See `help declare'." +#~ msgstr "" +#~ "Define valores e atributos de variável.\n" +#~ " \n" +#~ " Obsoleto. Veja `help declare'." + +# help history +#~ msgid "" +#~ "Display or manipulate the history list.\n" +#~ " \n" +#~ " Display the history list with line numbers, prefixing each modified\n" +#~ " entry with a `*'. An argument of N lists only the last N entries.\n" +#~ " \n" +#~ " Options:\n" +#~ " -c\tclear the history list by deleting all of the entries\n" +#~ " -d offset\tdelete the history entry at offset OFFSET.\n" +#~ " \n" +#~ " -a\tappend history lines from this session to the history file\n" +#~ " -n\tread all history lines not already read from the history file\n" +#~ " -r\tread the history file and append the contents to the history\n" +#~ " \t\tlist\n" +#~ " -w\twrite the current history to the history file\n" +#~ " \t\tand append them to the history list\n" +#~ " \n" +#~ " -p\tperform history expansion on each ARG and display the result\n" +#~ " \t\twithout storing it in the history list\n" +#~ " -s\tappend the ARGs to the history list as a single entry\n" +#~ " \n" +#~ " If FILENAME is given, it is used as the history file. Otherwise,\n" +#~ " if HISTFILE has a value, that is used, else ~/.bash_history.\n" +#~ " \n" +#~ " If the HISTTIMEFORMAT variable is set and not null, its value is " +#~ "used\n" +#~ " as a format string for strftime(3) to print the time stamp " +#~ "associated\n" +#~ " with each displayed history entry. No time stamps are printed " +#~ "otherwise.\n" +#~ " \n" +#~ " Exit Status:\n" +#~ " Returns success unless an invalid option is given or an error occurs." +#~ msgstr "" +#~ "Exibe ou manipula a lista de histórico.\n" +#~ " \n" +#~ " Exibe a lista de histórico com números de linhas, prefixando cada\n" +#~ " entrada modificada com um `*'. Um argumento de N lista apenas as\n" +#~ " últimas N entradas.\n" +#~ " \n" +#~ " Opções:\n" +#~ " -c\t\t\tlimpa a lista de histórico ao excluir todas as entradas\n" +#~ " -d POSIÇÃO\texclui a entrada de histórico na posição POSIÇÃO.\n" +#~ " -a\t\t\tanexa linhas de histórico desta sessão no arquivo de\n" +#~ " \t\t\t\thistórico\n" +#~ " -n\t\t\tlê todas as linhas de histórico ainda não lidas do\n" +#~ " \t\t\t\tarquivo de histórico\n" +#~ " -r\t\t\tlê o histórico e anexa os conteúdos à lista de histórico\n" +#~ " -w\t\t\tescreve o histórico atual para o arquivo de histórico e\n" +#~ " \t\t\t\tanexa-os à lista de histórico \n" +#~ " -p\t\t\texecuta expansão de histórico em cada ARG e exibe o\n" +#~ " \t\t\t\tresultado sem armazená-lo na lista de histórico\n" +#~ " -s\t\t\tanexa os ARGs à lista de histórico como uma única entrada\n" +#~ " \n" +#~ " Se ARQUIVO for fornecido, ele é usado como o arquivo de histórico.\n" +#~ " Do contrário, se a variável HISTFILE tiver um valor, este será " +#~ "usado;\n" +#~ " senão, usa de ~/.bash_history.\n" +#~ " \n" +#~ " Se a variável HISTTIMEFORMAT for definida e não for nula, seu valor " +#~ "é\n" +#~ " usado como uma string de formato para strftime(3) para mostrar a " +#~ "marca\n" +#~ " de tempo associada com cada entrada de histórico exibida. Do " +#~ "contrário,\n" +#~ " nenhuma marca de tempo é mostrada.\n" +#~ " \n" +#~ " Status de saída:\n" +#~ " Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +#~ " ocorra um erro." + +# help kill +#~ msgid "" +#~ "Send a signal to a job.\n" +#~ " \n" +#~ " Send the processes identified by PID or JOBSPEC the signal named by\n" +#~ " SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +#~ " SIGTERM is assumed.\n" +#~ " \n" +#~ " Options:\n" +#~ " -s sig\tSIG is a signal name\n" +#~ " -n sig\tSIG is a signal number\n" +#~ " -l\tlist the signal names; if arguments follow `-l' they are\n" +#~ " \t\tassumed to be signal numbers for which names should be listed\n" +#~ " \n" +#~ " Kill is a shell builtin for two reasons: it allows job IDs to be " +#~ "used\n" +#~ " instead of process IDs, and allows processes to be killed if the " +#~ "limit\n" +#~ " on processes that you can create is reached.\n" +#~ " \n" +#~ " Exit Status:\n" +#~ " Returns success unless an invalid option is given or an error occurs." +#~ msgstr "" +#~ "Envia um sinal para um trabalho.\n" +#~ "\n" +#~ " Envia aos processos identificados pelo PID ou pelo ESPEC-JOB o sinal\n" +#~ " informado por SIGSPEC ou SIGNUM. Se SIGSPEC e SIGNUM\n" +#~ " não estiverem presentes, então, SIGTERM é presumido.\n" +#~ " \n" +#~ " Opções:\n" +#~ " -s SIGSPEC\tSIGSPEC especifica o nome do sinal\n" +#~ " -n SIGNUM\t\tSIGNUM representa um número de sinal\n" +#~ " -l\t\t\tlista os nomes dos sinais; se `-l' for acompanhado por\n" +#~ " \t\t\t\toutros argumentos, presume-se estes sejam números de\n" +#~ " \t\t\t\tsinais para os quais nomes deveriam ser listados\n" +#~ " \n" +#~ " `Kill' é um comando interno do shell por duas razões: ele permite\n" +#~ " IDs de trabalho serem usados ao invés de IDs de processo e permite\n" +#~ " que processos sejam matados caso o limite de processos que você pode\n" +#~ " criar seja atingido.\n" +#~ " \n" +#~ " Status de saída:\n" +#~ " Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +#~ " ocorra um erro." + +# help set +#~ msgid "" +#~ "Set or unset values of shell options and positional parameters.\n" +#~ " \n" +#~ " Change the value of shell attributes and positional parameters, or\n" +#~ " display the names and values of shell variables.\n" +#~ " \n" +#~ " Options:\n" +#~ " -a Mark variables which are modified or created for export.\n" +#~ " -b Notify of job termination immediately.\n" +#~ " -e Exit immediately if a command exits with a non-zero status.\n" +#~ " -f Disable file name generation (globbing).\n" +#~ " -h Remember the location of commands as they are looked up.\n" +#~ " -k All assignment arguments are placed in the environment for a\n" +#~ " command, not just those that precede the command name.\n" +#~ " -m Job control is enabled.\n" +#~ " -n Read commands but do not execute them.\n" +#~ " -o option-name\n" +#~ " Set the variable corresponding to option-name:\n" +#~ " allexport same as -a\n" +#~ " braceexpand same as -B\n" +#~ " emacs use an emacs-style line editing interface\n" +#~ " errexit same as -e\n" +#~ " errtrace same as -E\n" +#~ " functrace same as -T\n" +#~ " hashall same as -h\n" +#~ " histexpand same as -H\n" +#~ " history enable command history\n" +#~ " ignoreeof the shell will not exit upon reading EOF\n" +#~ " interactive-comments\n" +#~ " allow comments to appear in interactive " +#~ "commands\n" +#~ " keyword same as -k\n" +#~ " monitor same as -m\n" +#~ " noclobber same as -C\n" +#~ " noexec same as -n\n" +#~ " noglob same as -f\n" +#~ " nolog currently accepted but ignored\n" +#~ " notify same as -b\n" +#~ " nounset same as -u\n" +#~ " onecmd same as -t\n" +#~ " physical same as -P\n" +#~ " pipefail the return value of a pipeline is the status " +#~ "of\n" +#~ " the last command to exit with a non-zero " +#~ "status,\n" +#~ " or zero if no command exited with a non-zero " +#~ "status\n" +#~ " posix change the behavior of bash where the default\n" +#~ " operation differs from the Posix standard to\n" +#~ " match the standard\n" +#~ " privileged same as -p\n" +#~ " verbose same as -v\n" +#~ " vi use a vi-style line editing interface\n" +#~ " xtrace same as -x\n" +#~ " -p Turned on whenever the real and effective user ids do not " +#~ "match.\n" +#~ " Disables processing of the $ENV file and importing of shell\n" +#~ " functions. Turning this option off causes the effective uid " +#~ "and\n" +#~ " gid to be set to the real uid and gid.\n" +#~ " -t Exit after reading and executing one command.\n" +#~ " -u Treat unset variables as an error when substituting.\n" +#~ " -v Print shell input lines as they are read.\n" +#~ " -x Print commands and their arguments as they are executed.\n" +#~ " -B the shell will perform brace expansion\n" +#~ " -C If set, disallow existing regular files to be overwritten\n" +#~ " by redirection of output.\n" +#~ " -E If set, the ERR trap is inherited by shell functions.\n" +#~ " -H Enable ! style history substitution. This flag is on\n" +#~ " by default when the shell is interactive.\n" +#~ " -P If set, do not resolve symbolic links when executing commands\n" +#~ " such as cd which change the current directory.\n" +#~ " -T If set, the DEBUG trap is inherited by shell functions.\n" +#~ " -- Assign any remaining arguments to the positional parameters.\n" +#~ " If there are no remaining arguments, the positional parameters\n" +#~ " are unset.\n" +#~ " - Assign any remaining arguments to the positional parameters.\n" +#~ " The -x and -v options are turned off.\n" +#~ " \n" +#~ " Using + rather than - causes these flags to be turned off. The\n" +#~ " flags can also be used upon invocation of the shell. The current\n" +#~ " set of flags may be found in $-. The remaining n ARGs are " +#~ "positional\n" +#~ " parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +#~ " ARGs are given, all shell variables are printed.\n" +#~ " \n" +#~ " Exit Status:\n" +#~ " Returns success unless an invalid option is given." +#~ msgstr "" +#~ "Define ou remove definição de valores das opções e dos parâmetros " +#~ "posicionais\n" +#~ "do shell:\n" +#~ " \n" +#~ " Altera o valor de opções e de parâmetros posicionais do shell ou " +#~ "mostra\n" +#~ " os nomes ou valores de variáveis shell.\n" +#~ " \n" +#~ " Opções:\n" +#~ " -a Marca variáveis, que foram modificadas ou criadas, para " +#~ "exportação.\n" +#~ " -b Notifica sobre terminação de trabalho imediatamente.\n" +#~ " -e Sai imediatamente se um comando sai com um status não-zero.\n" +#~ " -f Desabilita a geração de nome de arquivo (\"globbing\").\n" +#~ " -h Memoriza a localização de comandos à medida em que são " +#~ "procurados.\n" +#~ " -k Todos argumentos de atribuição são colocados no ambiente para " +#~ "um\n" +#~ " comando, e não apenas aqueles que precedem o nome do comando.\n" +#~ " -m Controle de trabalho está habilitado.\n" +#~ " -n Lê comandos, mas não os executa.\n" +#~ " -o NOME-OPÇÃO\n" +#~ " Define a variável correspondendo a NOME-OPÇÃO:\n" +#~ " allexport mesmo que -a\n" +#~ " braceexpand mesmo que -B\n" +#~ " emacs usa interface de edição de linha estilo Emacs\n" +#~ " errexit mesmo que -e\n" +#~ " errtrace mesmo que -E\n" +#~ " functrace mesmo que -T\n" +#~ " hashall mesmo que -h\n" +#~ " histexpand mesmo que -H\n" +#~ " history habilita histórico de comandos\n" +#~ " ignoreeof shell não vai sair após leitura de EOF\n" +#~ " interactive-comments\n" +#~ " permite mostrar comentários em comandos " +#~ "interativos\n" +#~ " keyword mesmo que -k\n" +#~ " monitor mesmo que -m\n" +#~ " noclobber mesmo que -C\n" +#~ " noexec mesmo que -n\n" +#~ " noglob mesmo que -f\n" +#~ " nolog atualmente aceito, mas ignorado\n" +#~ " notify mesmo que -b\n" +#~ " nounset mesmo que -u\n" +#~ " onecmd mesmo que -t\n" +#~ " physical mesmo que -P\n" +#~ " pipefail o valor de retorno de uma linha de comandos é " +#~ "o\n" +#~ " status do último comando a sair com status não-" +#~ "zero,\n" +#~ " ou zero se nenhum comando saiu com status não " +#~ "zero\n" +#~ " posix altera o comportamento do bash, onde a " +#~ "operação\n" +#~ " padrão diverge dos padrões do Posix para\n" +#~ " corresponder a estes padrões\n" +#~ " privileged mesmo que -p\n" +#~ " verbose mesmo que -v\n" +#~ " vi usa interface de edição de linha estilo vi\n" +#~ " xtrace mesmo que -x\n" +#~ " -p Ligado sempre que IDs de usuário real e efetivo não " +#~ "corresponderem.\n" +#~ " Desabilita processamento do arquivo $ENV e importação de " +#~ "funções da\n" +#~ " shell. Ao desligar essa opção, causa o uid e o gid efetivo " +#~ "serem\n" +#~ " os uid e gid reais.\n" +#~ " -t Sai após a leitura e execução de um comando.\n" +#~ " -u Trata limpeza (unset) de variáveis como um erro quando " +#~ "substituindo.\n" +#~ " -v Mostra linhas de entrada do shell na medida em que forem " +#~ "lidas.\n" +#~ " -x Mostra comandos e seus argumentos na medida em que forme " +#~ "executados.\n" +#~ " -B o shell vai realizar expansão de chaves\n" +#~ " -C Se definido, não permite arquivos normais existentes serem\n" +#~ " sobrescritos por redirecionamento da saída.\n" +#~ " -E Se definido, a armadilha ERR é herdada por funções do shell.\n" +#~ " -H Habilita substituição de histórico estilo \"!\". Essa " +#~ "sinalização está\n" +#~ " habilitada por padrão quando shell é interativa.\n" +#~ " -P Se definida, não resolve links simbólicos ao sair de comandos, " +#~ "tais\n" +#~ " como `cd' (que altera o diretório atual).\n" +#~ " -T Se definido, a armadilha DEBUG é herdada por funções do shell.\n" +#~ " -- Atribui quaisquer argumentos restantes aos parâmetros " +#~ "posicionais.\n" +#~ " Se não houver argumentos restantes, os parâmetros posicionais " +#~ "são\n" +#~ " limpos (unset).\n" +#~ " - Atribui quaisquer argumentos restantes aos parâmetros " +#~ "posicionais.\n" +#~ " As opções -x e -v são desligadas.\n" +#~ " \n" +#~ " Usar +, ao invés de -, causa essas sinalizações serem desligadas. As\n" +#~ " sinalizações também podem ser usadas por meio de chamada do shell. " +#~ "As\n" +#~ " sinalizações atualmente definidas podem ser encontradas em $-. Os n " +#~ "ARGs\n" +#~ " restantes são parâmetros posicionais e são atribuídos, em ordem, a " +#~ "$1, $2,\n" +#~ " .. $n. Se nenhuma ARG for fornecido, todas as variáveis shell são\n" +#~ " mostradas.\n" +#~ " \n" +#~ " Status de saída:\n" +#~ " Retorna sucesso, a menos que uma opção inválida seja fornecida." + +# help coproc +#~ msgid "" +#~ "Create a coprocess named NAME.\n" +#~ " \n" +#~ " Execute COMMAND asynchronously, with the standard output and " +#~ "standard\n" +#~ " input of the command connected via a pipe to file descriptors " +#~ "assigned\n" +#~ " to indices 0 and 1 of an array variable NAME in the executing shell.\n" +#~ " The default NAME is \"COPROC\".\n" +#~ " \n" +#~ " Exit Status:\n" +#~ " Returns the exit status of COMMAND." +#~ msgstr "" +#~ "Cria um coprocesso chamado NOME.\n" +#~ " \n" +#~ " Executa COMANDO assincronamente, com a saída padrão e entrada padrão\n" +#~ " do comando conectados via um `pipe' (redirecionamento) para " +#~ "descritores\n" +#~ " de arquivo atribuídos para índices 0 e 1 de uma variável array NOME\n" +#~ " no shell em execução. O NOME padrão é \"COPROC\".\n" +#~ " \n" +#~ " Status de saída:\n" +#~ " Retorna o status de saída de COMANDO." + +#~ msgid "Missing `}'" +#~ msgstr "Faltando `}'" + +#~ msgid "brace_expand> " +#~ msgstr "brace_expand> " + +#~ msgid "Attempt to free unknown command type `%d'.\n" +#~ msgstr "Tentativa de liberar um tipo de comando desconhecido `%d'.\n" + +#~ msgid "Report this to %s\n" +#~ msgstr "Informar o ocorrido para %s\n" + +#~ msgid "Stopping myself..." +#~ msgstr "Parando-me..." + +#~ msgid "Tell %s to fix this someday.\n" +#~ msgstr "Informar %s para corrigir o ocorrido.\n" + +#~ msgid "execute_command: bad command type `%d'" +#~ msgstr "execute_command: `%d' é um tipo incorreto de comando " + +#~ msgid "real\t" +#~ msgstr "real\t" + +#~ msgid "user\t" +#~ msgstr "usuário\t" + +#~ msgid "sys\t" +#~ msgstr "sistema\t" + +#~ msgid "" +#~ "real\t0m0.00s\n" +#~ "user\t0m0.00s\n" +#~ "sys\t0m0.00s\n" +#~ msgstr "" +#~ "real \t0m0.00s\n" +#~ "usuário\t0m0.00s\n" +#~ "sistema\t0m0.00s\n" + +#~ msgid "cannot duplicate fd %d to fd 1: %s" +#~ msgstr "impossível duplicar fd (descritor de arquivo) %d para fd 1: %s" + +#~ msgid "%s: output redirection restricted" +#~ msgstr "%s: redirecionamento da saída restringido" + +#~ msgid "Out of memory!" +#~ msgstr "Memória esgotada!" + +#~ msgid "You have already added item `%s'\n" +#~ msgstr "Você já adicionou o item `%s'\n" + +#~ msgid "You have entered %d (%d) items. The distribution is:\n" +#~ msgstr "Entrados %d (%d) itens. A distribuição é:\n" + +#~ msgid "slot %3d: " +#~ msgstr "encaixe (slot) %3d: " + +#~ msgid "" +#~ msgstr "" + +#~ msgid "%s: bg background job?" +#~ msgstr "%s: bg trabalho no segundo plano?" + +#~ msgid "" +#~ "Redirection instruction from yyparse () '%d' is\n" +#~ "out of range in make_redirection ()." +#~ msgstr "" +#~ "A instrução de redirecionamento do yyparse () '%d' está\n" +#~ "fora do intervalo em make_redirection ()." + +#~ msgid "clean_simple_command () got a command with type %d." +#~ msgstr "clean_simple_command () recebeu um comando do tipo %d." + +#~ msgid "got errno %d while waiting for %d" +#~ msgstr "recebido erro número %d enquanto aguardava por %d" + +#~ msgid "syntax error near unexpected token `%c'" +#~ msgstr "erro de sintaxe próximo do `token' não esperado `%c'" + +#~ msgid "print_command: bad command type `%d'" +#~ msgstr "print_command: tipo de comando incorreto `%d'" + +#~ msgid "cprintf: bad `%%' argument (%c)" +#~ msgstr "cprintf: argumento `%%' incorreto (%c)" + +#~ msgid "option `%s' requires an argument" +#~ msgstr "a opção `%s' requer um argumento" + +#~ msgid "%s: unrecognized option" +#~ msgstr "%s: a opção não é reconhecida" + +#~ msgid "`-c' requires an argument" +#~ msgstr "A opção `-c' requer um argumento" + +#~ msgid "%s: cannot execute directories" +#~ msgstr "%s: impossível executar diretórios" + +#~ msgid "Bad code in sig.c: sigprocmask" +#~ msgstr "Código incorreto em sig.c: sigprocmask" + +#~ msgid "can't make pipes for process substitution: %s" +#~ msgstr "impossível criar `pipes' para a substituição do processo: %s" + +#~ msgid "reading" +#~ msgstr "lendo" + +#~ msgid "writing" +#~ msgstr "escrevendo" + +#~ msgid "process substitution" +#~ msgstr "substituição de processo" + +#~ msgid "command substitution" +#~ msgstr "substituição de comando" + +#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" +#~ msgstr "" +#~ "Impossível reabrir o `pipe' para substituição de comando (fd %d): %s" + +#~ msgid "$%c: unbound variable" +#~ msgstr "$%c: variável não associada" + +#~ msgid "%s: bad arithmetic substitution" +#~ msgstr "%s: substituição aritmética incorreta" + +#~ msgid "-%s: binary operator expected" +#~ msgstr "-%s: esperado operador binário" + +#~ msgid "%s[%s: bad subscript" +#~ msgstr "%s[%s: índice incorreto" + +#~ msgid "[%s: bad subscript" +#~ msgstr "[%s: índice incorreto" + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" + +#~ msgid "digits occur in two different argv-elements.\n" +#~ msgstr "os dígitos aparecem em dois elementos argv diferentes.\n" + +#~ msgid "option %c\n" +#~ msgstr "opção %c\n" + +#~ msgid "option a\n" +#~ msgstr "opção a\n" + +#~ msgid "option b\n" +#~ msgstr "opção b\n" + +#~ msgid "option c with value `%s'\n" +#~ msgstr "opção c com o valor `%s'\n" + +#~ msgid "?? sh_getopt returned character code 0%o ??\n" +#~ msgstr "?? sh_getopt retornou o código de caracter 0%o ??\n" + +#~ msgid "non-option ARGV-elements: " +#~ msgstr "elementos de ARGV que não são opção:" + +#~ msgid "%s: Unknown flag %s.\n" +#~ msgstr "%s: Opção %s desconhecida.\n" + +#~ msgid "Unknown directive `%s'" +#~ msgstr "Diretiva desconhecida `%s'" + +#~ msgid "%s must be inside of a $BUILTIN block" +#~ msgstr "%s deve estar dentro de um bloco $BUILTIN" + +#~ msgid "%s found before $END" +#~ msgstr "%s encontrado antes de $END" + +#~ msgid "%s already has a function (%s)" +#~ msgstr "%s já possui uma função (%s)" + +#~ msgid "%s already had a docname (%s)" +#~ msgstr "%s já possui um nome de documento (%s)" + +#~ msgid "%s already has short documentation (%s)" +#~ msgstr "%s já possui uma documentação curta (%s)" + +#~ msgid "%s already has a %s definition" +#~ msgstr "%s já possui a definição %s" + +#~ msgid "mkbuiltins: Out of virtual memory!\n" +#~ msgstr "mkbuiltins: Memória virtual esgotada!\n" + +#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" +#~ msgstr "read [-r] [-p MENSAGEM] [-a ARRAY] [-e] [NOME ...]" + +#~ msgid "%[DIGITS | WORD] [&]" +#~ msgstr "%[DÃGITOS | PALAVRA] [&]" + +#~ msgid "variables - Some variable names and meanings" +#~ msgstr "variáveis - Alguns nomes de variáveis e suas descrições" + +#~ msgid "`alias' with no arguments or with the -p option prints the list" +#~ msgstr "`alias' sem nenhum argumento, ou com a opção -p, exibe a lista" + +#~ msgid "of aliases in the form alias NAME=VALUE on standard output." +#~ msgstr "de aliases na forma `alias NOME=VALOR' na saída padrão." + +#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." +#~ msgstr "" +#~ "Ou então, um alias é definido para cada NOME cujo VALOR for fornecido." + +#~ msgid "A trailing space in VALUE causes the next word to be checked for" +#~ msgstr "Um espaço após VALOR faz a próxima palavra ser verificada para" + +#~ msgid "alias substitution when the alias is expanded. Alias returns" +#~ msgstr "substituição do alias quando o alias é expandido. Alias retorna" + +#~ msgid "true unless a NAME is given for which no alias has been defined." +#~ msgstr "" +#~ "verdadeiro, a não ser que seja fornecido um NOME sem alias definido." + +#~ msgid "" +#~ "Remove NAMEs from the list of defined aliases. If the -a option is given," +#~ msgstr "" +#~ "Remove NOMEs da lista de aliases definidos. Se a opção -a for fornecida," + +#~ msgid "then remove all alias definitions." +#~ msgstr "então todas as definições de alias são removidas." + +#~ msgid "Bind a key sequence to a Readline function, or to a macro. The" +#~ msgstr "" +#~ "Víncula uma seqüência de teclas a uma função de leitura de linha, ou a uma" + +#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" +#~ msgstr "" +#~ "macro. A sintaxe é equivalente à encontrada em ~/.inputrc, mas deve ser" + +#~ msgid "" +#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgstr "" +#~ "passada como um único argumento: bind '\"\\C-x\\C-r\": re-read-init-file'." + +#~ msgid "Arguments we accept:" +#~ msgstr "Argumentos permitidos:" + +#~ msgid "" +#~ " -m keymap Use `keymap' as the keymap for the duration of this" +#~ msgstr "" +#~ " -m MAPA-TECLAS Usar `MAPA-TECLAS' como mapa das teclas pela duração" + +#~ msgid " command. Acceptable keymap names are emacs," +#~ msgstr " deste comando. Os nomes aceitos são emacs," + +#~ msgid "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgstr "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," + +#~ msgid " vi-command, and vi-insert." +#~ msgstr " vi-command, and vi-insert." + +#~ msgid " -l List names of functions." +#~ msgstr " -l Listar os nomes das funções." + +#~ msgid " -P List function names and bindings." +#~ msgstr " -P Listar nomes e associações das funções." + +#~ msgid "" +#~ " -p List functions and bindings in a form that can be" +#~ msgstr "" +#~ " -p Listar nomes e associações das funções de uma forma" + +#~ msgid " reused as input." +#~ msgstr " que pode ser reutilizada como entrada." + +#~ msgid " -r keyseq Remove the binding for KEYSEQ." +#~ msgstr " -r SEQ-TECLAS Remove o vínculo para SEQ-TECLAS." + +#~ msgid " -f filename Read key bindings from FILENAME." +#~ msgstr " -f ARQUIVO Ler os vínculos das teclas em ARQUIVO." + +#~ msgid "" +#~ " -q function-name Query about which keys invoke the named function." +#~ msgstr " -q NOME-FUNÇÃO Consultar quais teclas chamam esta função." + +#~ msgid " -V List variable names and values" +#~ msgstr " -V Listar os nomes e os valores das variáveis." + +#~ msgid "" +#~ " -v List variable names and values in a form that can" +#~ msgstr "" +#~ " -v Listar os nomes e os valores das variáveis de uma" + +#~ msgid " be reused as input." +#~ msgstr " forma que pode ser reutilizada como entrada." + +#~ msgid "" +#~ " -S List key sequences that invoke macros and their " +#~ "values" +#~ msgstr "" +#~ " -S Listar as seqüências de teclas que chamam macros\n" +#~ " e seus valores." + +#~ msgid "" +#~ " -s List key sequences that invoke macros and their " +#~ "values in" +#~ msgstr " -s Listar seqüências de teclas que chamam macros" + +#~ msgid " a form that can be reused as input." +#~ msgstr "" +#~ " e seus valores de uma forma que pode ser\n" +#~ " reutilizada como entrada." + +#~ msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," +#~ msgstr "Sair de um laço FOR, WHILE ou UNTIL." + +#~ msgid "break N levels." +#~ msgstr "Se N for especificado, sai de N níveis." + +#~ msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." +#~ msgstr "Prossegue no próximo ciclo do laço FOR, WHILE ou UNTIL envolvente." + +#~ msgid "If N is specified, resume at the N-th enclosing loop." +#~ msgstr "Se N for especificado, prossegue no N-ésimo laço envolvente." + +#~ msgid "Run a shell builtin. This is useful when you wish to rename a" +#~ msgstr "" +#~ "Executa um comando interno do shell. Útil quando desejamos substituir" + +#~ msgid "shell builtin to be a function, but need the functionality of the" +#~ msgstr "um comando interno do shell por uma função, mas necessitamos da" + +#~ msgid "builtin within the function itself." +#~ msgstr "funcionalidade do comando interno dentro da própria função." + +#~ msgid "Change the current directory to DIR. The variable $HOME is the" +#~ msgstr "Troca o diretório atual para DIR. A variável $HOME é o padrão" + +#~ msgid "default DIR. The variable $CDPATH defines the search path for" +#~ msgstr "para DIR. A variável $CDPATH define o caminho de procura para" + +#~ msgid "the directory containing DIR. Alternative directory names in CDPATH" +#~ msgstr "" +#~ "o diretório que contém DIR. Nomes de diretórios alternativos em CDPATH" + +#~ msgid "are separated by a colon (:). A null directory name is the same as" +#~ msgstr "" +#~ "são separados por dois pontos (:). Um nome de diretório nulo é o mesmo" + +#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," +#~ msgstr "que o diretório atual, i.e. `.'. Se DIR inicia com uma barra (/)," + +#~ msgid "then $CDPATH is not used. If the directory is not found, and the" +#~ msgstr "então $CDPATH não é usado. Se o diretório não for encontrado, e a" + +#~ msgid "shell option `cdable_vars' is set, then try the word as a variable" +#~ msgstr "" +#~ "opção `cdable_vars' estiver definida, tentar usar DIR como um nome de" + +#~ msgid "name. If that variable has a value, then cd to the value of that" +#~ msgstr "" +#~ "variável. Se esta variável tiver valor, então `cd' para o valor desta" + +#~ msgid "" +#~ "variable. The -P option says to use the physical directory structure" +#~ msgstr "" +#~ "variável. A opção -P indica para usar a estrutura física do diretório" + +#~ msgid "" +#~ "instead of following symbolic links; the -L option forces symbolic links" +#~ msgstr "em vez de seguir os vínculos simbólicos; a opção -L força seguir os" + +#~ msgid "to be followed." +#~ msgstr "vínculos simbólicos." + +#~ msgid "Print the current working directory. With the -P option, pwd prints" +#~ msgstr "Exibe o diretório atual de trabalho. Com a opção -P, `pwd' exibe" + +#~ msgid "the physical directory, without any symbolic links; the -L option" +#~ msgstr "o diretório físico, sem nenhum vínculo simbólico; a opção -L faz" + +#~ msgid "makes pwd follow symbolic links." +#~ msgstr "com que `pwd' siga os vínculos simbólicos." + +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +#~ msgstr "" +#~ "Executa COMANDO com ARGs ignorando as funções da shell. Ex: Havendo" + +#~ msgid "function called `ls', and you wish to call the command `ls', you can" +#~ msgstr "" +#~ "uma função `ls', e se for necessário executar o comando `ls', executa-se" + +#~ msgid "" +#~ "say \"command ls\". If the -p option is given, a default value is used" +#~ msgstr "" +#~ "\"command ls\". Se a opção -p for fornecida, o valor padrão é utilizado" + +#~ msgid "" +#~ "for PATH that is guaranteed to find all of the standard utilities. If" +#~ msgstr "" +#~ "para PATH, garantindo-se o encontro de todos os utilitários padrão. Se" + +#~ msgid "" +#~ "the -V or -v option is given, a string is printed describing COMMAND." +#~ msgstr "a opção -V ou -v for fornecida, é exibida a descrição do COMANDO." + +#~ msgid "The -V option produces a more verbose description." +#~ msgstr "A opção -V produz uma descrição mais extensa." + +#~ msgid "Declare variables and/or give them attributes. If no NAMEs are" +#~ msgstr "Declara variáveis e/ou dá-lhes atributos. Se nenhum nome for" + +#~ msgid "given, then display the values of variables instead. The -p option" +#~ msgstr "fornecido, então são exibidos os valores das variáveis. A opção -p" + +#~ msgid "will display the attributes and values of each NAME." +#~ msgstr "exibe os atributos e valores para cada NOME." + +#~ msgid "The flags are:" +#~ msgstr "As opções são:" + +#~ msgid " -a\tto make NAMEs arrays (if supported)" +#~ msgstr " -a\tpara tornar NOMEs arrays, se houver suporte" + +#~ msgid " -f\tto select from among function names only" +#~ msgstr " -f\tpara selecionar somente entre nomes de funções" + +#~ msgid " -F\tto display function names without definitions" +#~ msgstr " -F\tpara exibir os nomes das funções omitindo suas definições" + +#~ msgid " -r\tto make NAMEs readonly" +#~ msgstr " -r\tpara tornar NOMEs somente para leitura" + +#~ msgid " -x\tto make NAMEs export" +#~ msgstr " -x\tpara fazer a exportação de NOMEs" + +#~ msgid " -i\tto make NAMEs have the `integer' attribute set" +#~ msgstr " -i\tpara ativar o atributo `inteiro' em NOMEs " + +#~ msgid "Variables with the integer attribute have arithmetic evaluation (see" +#~ msgstr "Variáveis com atributo inteiro são avaliadas aritmeticamente (veja" + +#~ msgid "`let') done when the variable is assigned to." +#~ msgstr "`let') quando é feita uma atribuição de valor." + +#~ msgid "When displaying values of variables, -f displays a function's name" +#~ msgstr "Ao exibir os valores das variáveis, -f exibe o nome da função e" + +#~ msgid "and definition. The -F option restricts the display to function" +#~ msgstr "sua definição. A opção -F restringe a exibição ao nome da função" + +#~ msgid "name only." +#~ msgstr "somente." + +#~ msgid "" +#~ "Using `+' instead of `-' turns off the given attribute instead. When" +#~ msgstr "Usando `+' em vez de `-' faz o atributo ser desabilitado. Quando" + +#~ msgid "used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "usado em uma função, torna NOMEs local, como no comando `local'." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Obsoleta. Veja `declare'." + +#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" +#~ msgstr "Cria uma variável local chamada NOME, e atribui VALOR. LOCAL" + +#~ msgid "have a visible scope restricted to that function and its children." +#~ msgstr "da variável NOME fique restrito à própria função e às suas filhas." + +#~ msgid "Output the ARGs. If -n is specified, the trailing newline is" +#~ msgstr "Exibe ARGs. Se -n for fornecido, o caracter final de nova linha é" + +#~ msgid "suppressed. If the -e option is given, interpretation of the" +#~ msgstr "" +#~ "suprimido. Se a opção -e for fornecida, a interpretação dos seguintes" + +#~ msgid "following backslash-escaped characters is turned on:" +#~ msgstr "caracteres após a contrabarra é ativada:" + +#~ msgid "\t\\a\talert (bell)" +#~ msgstr "\t\\a\talerta (bell)" + +#~ msgid "\t\\b\tbackspace" +#~ msgstr "\t\\b\tbackspace" + +#~ msgid "\t\\c\tsuppress trailing newline" +#~ msgstr "\t\\c\tsuprimir o caracter final de nova linha" + +#~ msgid "\t\\E\tescape character" +#~ msgstr "\t\\E\to caracter de escape" + +#~ msgid "\t\\f\tform feed" +#~ msgstr "\t\\f\talimentação de formulário (form feed)" + +#~ msgid "\t\\n\tnew line" +#~ msgstr "\t\\n\tnova linha" + +#~ msgid "\t\\r\tcarriage return" +#~ msgstr "\t\\r\tretorno de carro (cr)" + +#~ msgid "\t\\t\thorizontal tab" +#~ msgstr "\t\\t\ttabulação horizontal (ht)" + +#~ msgid "\t\\v\tvertical tab" +#~ msgstr "\t\\v\ttabulação vertical (vt)" + +#~ msgid "\t\\\\\tbackslash" +#~ msgstr "\t\\\\\tcontrabarra" + +#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." +#~ msgstr "\t\\num\to caracter com código ASCII igual a NUM (octal)." + +#~ msgid "" +#~ "You can explicitly turn off the interpretation of the above characters" +#~ msgstr "" +#~ "Pode-se explicitamente desabilitar a interpretação dos caracteres acima" + +#~ msgid "with the -E option." +#~ msgstr "através da opção -E." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Exibe ARGS. Se -n for fornecido, o caracter final de nova linha é " +#~ "suprimido." + +#~ msgid "Enable and disable builtin shell commands. This allows" +#~ msgstr "" +#~ "Habilita e desabilita os comandos internos do shell, permitindo usar" + +#~ msgid "you to use a disk command which has the same name as a shell" +#~ msgstr "" +#~ "um comando de disco que tenha o mesmo nome do comando interno do shell." + +#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" +#~ msgstr "" +#~ "Se -n for especificado, os NOMEs são desabilitados, senão os nomes são" + +#~ msgid "NAMEs are enabled. For example, to use the `test' found on your" +#~ msgstr "" +#~ "habilitados. Por exemplo, para usar `test' encontrado pelo PATH em vez" + +#~ msgid "path instead of the shell builtin version, type `enable -n test'." +#~ msgstr "" +#~ "da versão interna do comando, digite `enable -n test'. Em sistemas que" + +#~ msgid "On systems supporting dynamic loading, the -f option may be used" +#~ msgstr "" +#~ "suportam carregamento dinâmico, pode-se usar a opção -f para carregar" + +#~ msgid "to load new builtins from the shared object FILENAME. The -d" +#~ msgstr "" +#~ "novos comandos internos do objeto compartilhado ARQUIVO. A opção -d" + +#~ msgid "option will delete a builtin previously loaded with -f. If no" +#~ msgstr "" +#~ "elimina os comandos internos previamente carregados com -f. Se nenhum" + +#~ msgid "non-option names are given, or the -p option is supplied, a list" +#~ msgstr "" +#~ "nome for fornecido, ou se a opção -p for fornecida, uma lista de comandos" + +#~ msgid "of builtins is printed. The -a option means to print every builtin" +#~ msgstr "" +#~ "internos é exibida. A opção -a faz com que todos os comandos internos" + +#~ msgid "with an indication of whether or not it is enabled. The -s option" +#~ msgstr "sejam exibidos indicando se estão habilitados ou não. A opção -s" + +#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" +#~ msgstr "" +#~ "restringe a saída aos comandos internos `especiais' Posix.2. A opção" + +#~ msgid "option displays a list of all disabled builtins." +#~ msgstr "-n exibe a lista de todos os comandos internos desabilitados." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Ler ARGs como entrada do shell e executar o(s) comando(s) resultante(s)." + +#~ msgid "Getopts is used by shell procedures to parse positional parameters." +#~ msgstr "" +#~ "Getopts é utilizado pelos procedimentos do shell para fazer a leitura\n" +#~ " (parse) dos parâmetros posicionais." + +#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" +#~ msgstr "OPÇÕES contém as letras das opções a serem reconhecidas; Se uma" + +#~ msgid "is followed by a colon, the option is expected to have an argument," +#~ msgstr "letra é seguida por dois pontos, a opção espera a presença de um" + +#~ msgid "which should be separated from it by white space." +#~ msgstr "argumento que deve ser separado dela por espaço em branco." + +#~ msgid "Each time it is invoked, getopts will place the next option in the" +#~ msgstr "Cada vez que for chamada, `getopts' irá colocar a próxima opção na" + +#~ msgid "shell variable $name, initializing name if it does not exist, and" +#~ msgstr "variável do shell $NOME, inicializando NOME caso não exista, e o" + +#~ msgid "the index of the next argument to be processed into the shell" +#~ msgstr "índice do próximo argumento a ser processado dentro da variável da" + +#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" +#~ msgstr "shell OPTIND. OPTIND é inicializado com 1 cada vez que o script" + +#~ msgid "a shell script is invoked. When an option requires an argument," +#~ msgstr "" +#~ "do shell é chamado. Quando uma opção requer um argumento, `getopts'" + +#~ msgid "getopts places that argument into the shell variable OPTARG." +#~ msgstr "coloca este argumento dentro da variável do shell OPTARG." + +#~ msgid "getopts reports errors in one of two ways. If the first character" +#~ msgstr "" +#~ "`getopts' informa os erros de duas maneiras. Se o primeiro caracter de" + +#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" +#~ msgstr "OPÇÕES for dois pontos, `getopts' usa o modo silencioso. Neste" + +#~ msgid "this mode, no error messages are printed. If an illegal option is" +#~ msgstr "modo, nenhuma mensagem de erro é exibida. Se uma opção ilegal for" + +#~ msgid "seen, getopts places the option character found into OPTARG. If a" +#~ msgstr "encontrada, `getopts' coloca o caracter da opção em OPTARG. Se um" + +#~ msgid "required argument is not found, getopts places a ':' into NAME and" +#~ msgstr "" +#~ "argumento requerido não for encontrado, `getopts' coloca ':' em NOME e" + +#~ msgid "sets OPTARG to the option character found. If getopts is not in" +#~ msgstr "" +#~ "atribui a OPTARG o caracter de opção encontrado. Se `getopts' não está em" + +#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" +#~ msgstr "" +#~ "modo silencioso, e uma opção ilegal é encontrada, `getopts' coloca '?' em" + +#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" +#~ msgstr "" +#~ "NOME e desativa OPTARG. Se uma opção requerida não é encontrada, uma '?'" + +#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" +#~ msgstr "" +#~ "é colocada em NOME, OPTARG é desativado, e uma mensagem de diagnóstico é" + +#~ msgid "printed." +#~ msgstr "exibida." + +#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" +#~ msgstr "Se a variável do shell OPTERR tem o valor 0, `getopts' desabilita a" + +#~ msgid "printing of error messages, even if the first character of" +#~ msgstr "exibição de mensagens de erro, mesmo que o primeiro caracter de" + +#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." +#~ msgstr "OPTSTRING não seja dois pontos. OPTERR tem o valor 1 por padrão." + +#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" +#~ msgstr "" +#~ "`getopts' normalmente faz a leitura dos parãmetros posicionais ($0 - $9)," + +#~ msgid "more arguments are given, they are parsed instead." +#~ msgstr "mas, se mais argumentos forem fornecidos, então estes são lidos." + +#~ msgid "Exec FILE, replacing this shell with the specified program." +#~ msgstr "" +#~ "Executa ARQUIVO, substituindo esta shell pelo programa especificado." + +#~ msgid "If FILE is not specified, the redirections take effect in this" +#~ msgstr "" +#~ "Se ARQUIVO não for especificado, os redirecionamentos são efetivados" + +#~ msgid "shell. If the first argument is `-l', then place a dash in the" +#~ msgstr "neste shell. Se o primeiro argumento for `-l', coloca um hífen no" + +#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" +#~ msgstr "argumento `0' passado para ARQUIVO, como no login. Se a opção `-c'" + +#~ msgid "is supplied, FILE is executed with a null environment. The `-a'" +#~ msgstr "for fornecida, ARQUIVO é executado com um ambiente nulo. A opção" + +#~ msgid "option means to make set argv[0] of the executed process to NAME." +#~ msgstr "`-a' significa atribuir NOME para argv[0] do processo executado." + +#~ msgid "If the file cannot be executed and the shell is not interactive," +#~ msgstr "Se o arquivo não puder ser executado e o shell não for interativa," + +#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" +#~ msgstr "" +#~ "então o shell termina, a menos que a variável \"no_exit_on_failed_exec\"" + +#~ msgid "is set." +#~ msgstr "esteja inicializada." + +#~ msgid "is that of the last command executed." +#~ msgstr "de saída é igual ao do último comando executado." + +#~ msgid "" +#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +#~ msgstr "PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou" + +#~ msgid "string, which means the most recent command beginning with that" +#~ msgstr "PRIMEIRO pode ser uma cadeia de caracteres, representando o comando" + +#~ msgid "string." +#~ msgstr "mais recente começado por estes caracteres." + +#~ msgid "" +#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +#~ msgstr "" +#~ " -e EDITOR seleciona qual editor usar. O padrão é FCEDIT, depois " +#~ "EDITOR," + +#~ msgid "" +#~ " then the editor which corresponds to the current readline editing" +#~ msgstr "" +#~ " depois o editor correspondente ao modo de edição atual da leitura" + +#~ msgid " mode, then vi." +#~ msgstr " de linha, e depois o vi." + +#~ msgid " -l means list lines instead of editing." +#~ msgstr " -l indica para listar as linha em vez de editá-las." + +#~ msgid " -n means no line numbers listed." +#~ msgstr " -n indica para não listar os números das linhas." + +#~ msgid "" +#~ " -r means reverse the order of the lines (making it newest listed " +#~ "first)." +#~ msgstr "" +#~ " -r faz reverter a ordem das linhas (a última torna-se a primeira)." + +#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" +#~ msgstr "" +#~ "No formato `fc -s [ANTIGO=NOVO ...] [COMANDO]', o comando é executado" + +#~ msgid "re-executed after the substitution OLD=NEW is performed." +#~ msgstr "novamente após a substituição de ANTIGO por NOVO ser realizada." + +#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" +#~ msgstr "" +#~ "Um alias útil a ser usado é r='fc -s' para que, ao se digitar `r cc'," + +#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" +#~ msgstr "seja executado o último comando começado por `cc' e, ao se digitar" + +#~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If" +#~ msgstr "" +#~ "Colocar JOB-ESPECIFICADO no primeiro plano, e torná-lo o trabalho atual." + +#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" +#~ msgstr "" +#~ "Se JOB-ESPECIFICADO não estiver presente, a noção do shell do trabalho" + +#~ msgid "used." +#~ msgstr "atual é utilizada." + +#~ msgid "Place JOB_SPEC in the background, as if it had been started with" +#~ msgstr "" +#~ "Colocar JOB-ESPECIFICADO no segundo plano, como se tivesse sido ativado" + +#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" +#~ msgstr "com `&'. Se JOB-ESPECIFICADO não estiver presente, a noção do shell" + +#~ msgid "job is used." +#~ msgstr "do trabalho atual é utilizada." + +#~ msgid "For each NAME, the full pathname of the command is determined and" +#~ msgstr "" +#~ "Para cada NOME, o caminho completo do comando é determinado e lembrado." + +#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" +#~ msgstr "" +#~ "Se a opção -p for fornecida, CAMINHO é utilizado como o caminho completo" + +#~ msgid "full pathname of NAME, and no path search is performed. The -r" +#~ msgstr "para NOME, e nenhuma procura de caminho é realizada. A opção -r" + +#~ msgid "option causes the shell to forget all remembered locations. If no" +#~ msgstr "" +#~ "faz com que a shell esqueça todas as localizações lembradas. Sem nenhum" + +#~ msgid "" +#~ "arguments are given, information about remembered commands is displayed." +#~ msgstr "argumento, as informações sobre os comandos lembrados são exibidas." + +#~ msgid "Display helpful information about builtin commands. If PATTERN is" +#~ msgstr "Exibe informações úteis sobre os comandos internos. Se PADRÃO for" + +#~ msgid "specified, gives detailed help on all commands matching PATTERN," +#~ msgstr "especificado, fornece ajuda detalhada para todos os comandos que" + +#~ msgid "otherwise a list of the builtins is printed." +#~ msgstr "" +#~ "correspondem ao PADRÃO, senão a lista dos comandos internos é exibida." + +#~ msgid "Display the history list with line numbers. Lines listed with" +#~ msgstr "" +#~ "Exibe a lista histórica com os números das linhas. Linhas contendo um" + +#~ msgid "with a `*' have been modified. Argument of N says to list only" +#~ msgstr "`*' foram modificadas. O argumento N faz listar somente as últimas" + +#~ msgid "the last N lines. The -c option causes the history list to be" +#~ msgstr "N linhas. A opção -c faz com que a lista histórica seja apagada" + +#~ msgid "" +#~ "cleared by deleting all of the entries. The `-w' option writes out the" +#~ msgstr "" +#~ "removendo todas as entradas. A opção `-w' escreve o histórico atual no" + +#~ msgid "" +#~ "current history to the history file; `-r' means to read the file and" +#~ msgstr "" +#~ "arquivo de histórico; A opção `-r' significa ler o arquivo e apensar seu" + +#~ msgid "append the contents to the history list instead. `-a' means" +#~ msgstr "" +#~ "conteúdo à lista histórica. A opção `-a' significa apensar as linhas de" + +#~ msgid "to append history lines from this session to the history file." +#~ msgstr "histórico desta sessão ao arquivo de histórico." + +#~ msgid "Argument `-n' means to read all history lines not already read" +#~ msgstr "A opção `-n' faz ler todas as linhas de histórico ainda não lidas" + +#~ msgid "from the history file and append them to the history list. If" +#~ msgstr "" +#~ "do arquivo histórico, e apensá-las à lista de histórico. Se ARQUIVO" + +#~ msgid "FILENAME is given, then that is used as the history file else" +#~ msgstr "for fornecido, então este é usado como arquivo de histórico, senão" + +#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." +#~ msgstr "" +#~ "se $HISTFILE possui valor, este é usado, senão ~/.bash_history. Se a" + +#~ msgid "If the -s option is supplied, the non-option ARGs are appended to" +#~ msgstr "" +#~ "opção -s for fornecida, os ARGs, que não forem opções, são apensados à" + +#~ msgid "the history list as a single entry. The -p option means to perform" +#~ msgstr "" +#~ "lista histórica como uma única entrada. A opção -p significa realizar a" + +#~ msgid "" +#~ "history expansion on each ARG and display the result, without storing" +#~ msgstr "" +#~ "expansão da história em cada ARG e exibir o resultado, sem armazenar" + +#~ msgid "anything in the history list." +#~ msgstr "nada na lista de histórico." + +#~ msgid "Lists the active jobs. The -l option lists process id's in addition" +#~ msgstr "" +#~ "Lista os trabalhos ativos. A opção -l lista os ID's dos processos além" + +#~ msgid "to the normal information; the -p option lists process id's only." +#~ msgstr "" +#~ "das informações usuais; a opção -p lista somente os ID's dos processos." + +#~ msgid "" +#~ "If -n is given, only processes that have changed status since the last" +#~ msgstr "" +#~ "Se -n for fornecido, somente os processos que mudaram de status desde a" + +#~ msgid "" +#~ "notification are printed. JOBSPEC restricts output to that job. The" +#~ msgstr "" +#~ "última notificação são exibidos. JOB-ESPECIFICADO restringe a saída a " +#~ "este" + +#~ msgid "-r and -s options restrict output to running and stopped jobs only," +#~ msgstr "" +#~ "trabalho. As opções -r e -s restringem a saída apenas aos trabalhos" + +#~ msgid "respectively. Without options, the status of all active jobs is" +#~ msgstr "" +#~ "executando e parados, respectivamente. Sem opções, o status de todos os" + +#~ msgid "" +#~ "printed. If -x is given, COMMAND is run after all job specifications" +#~ msgstr "" +#~ "trabalhos ativos são exibidos. Se -x for fornecido, COMANDO é executado" + +#~ msgid "" +#~ "that appear in ARGS have been replaced with the process ID of that job's" +#~ msgstr "" +#~ "após todas as especificações de trabalho que aparecem em ARGS terem sido" + +#~ msgid "process group leader." +#~ msgstr "substituídas pelo ID do processo líder deste grupo de processos." + +#~ msgid "Removes each JOBSPEC argument from the table of active jobs." +#~ msgstr "" +#~ "Remove cada argumento JOB-ESPECIFICADO da tabela de trabalhos ativos." + +#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +#~ msgstr "" +#~ "Envia ao processo identificado pelo PID (ou JOB) o sinal SIGSPEC. Se" + +#~ msgid "" +#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +#~ msgstr "" +#~ "SIGSPEC não estiver presente, então SIGTERM é assumido. A opção `-l'" + +#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" +#~ msgstr "" +#~ "lista os nomes dos sinais; havendo argumentos após `-l', são assumidos" + +#~ msgid "be signal numbers for which names should be listed. Kill is a shell" +#~ msgstr "" +#~ "como sendo os números dos sinais cujos nomes devem ser exibidos. Kill" + +#~ msgid "builtin for two reasons: it allows job IDs to be used instead of" +#~ msgstr "" +#~ "é um comando interno por duas razões: permite o uso do ID do trabalho em" + +#~ msgid "process IDs, and, if you have reached the limit on processes that" +#~ msgstr "" +#~ "vez do ID do processo e, caso tenha sido atingido o limite de processos " +#~ "que" + +#~ msgid "" +#~ "you can create, you don't have to start a process to kill another one." +#~ msgstr "" +#~ "podem ser criados, não é necessário um novo processo para remover outro." + +#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" +#~ msgstr "Cada ARG é uma expressão aritmética a ser avaliada. A avaliação é" + +#~ msgid "is done in long integers with no check for overflow, though division" +#~ msgstr "" +#~ "feita usando inteiros longos sem verificar estouro, embora a divisão" + +#~ msgid "by 0 is trapped and flagged as an error. The following list of" +#~ msgstr "por 0 seja capturada e indicada como erro. A lista abaixo está" + +#~ msgid "operators is grouped into levels of equal-precedence operators." +#~ msgstr "grupada em níveis de igual de precedência dos operadores." + +#~ msgid "The levels are listed in order of decreasing precedence." +#~ msgstr "Os níveis estão listados em ordem decrescente de precedência." + +#~ msgid "\t-, +\t\tunary minus, plus" +#~ msgstr "\t-, +\t\tmenos, mais unários" + +#~ msgid "\t!, ~\t\tlogical and bitwise negation" +#~ msgstr "\t!, ~\t\tnegação lógica e bit a bit" + +#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" +#~ msgstr "\t*, /, %\t\tmultiplicação, divisão, resto" + +#~ msgid "\t+, -\t\taddition, subtraction" +#~ msgstr "\t+, -\t\tadição, subtração" + +#~ msgid "\t<<, >>\t\tleft and right bitwise shifts" +#~ msgstr "\t<<, >>\t\tdeslocamento à esquerda e à direita bit a bit" + +#~ msgid "\t<=, >=, <, >\tcomparison" +#~ msgstr "\t<=, >=, <, >\tcomparação" + +#~ msgid "\t==, !=\t\tequality, inequality" +#~ msgstr "\t==, !=\t\tigualdade, desigualdade" + +#~ msgid "\t&\t\tbitwise AND" +#~ msgstr "\t&\t\tE bit a bit" + +#~ msgid "\t^\t\tbitwise XOR" +#~ msgstr "\t^\t\tOU Exclusivo (XOR) bit a bit" + +#~ msgid "\t|\t\tbitwise OR" +#~ msgstr "\t|\t\tOU Inclusivo (OR) bit a bit" + +#~ msgid "\t&&\t\tlogical AND" +#~ msgstr "\t&&\t\tE lógico" + +#~ msgid "\t||\t\tlogical OR" +#~ msgstr "\t||\t\tOU lógico" + +#~ msgid "\texpr ? expr : expr" +#~ msgstr "\texpr ? expr : expr" + +#~ msgid "\t\t\tconditional expression" +#~ msgstr "\t\t\texpressão condicional" + +#~ msgid "\t=, *=, /=, %=," +#~ msgstr "\t=, *=, /=, %=," + +#~ msgid "\t+=, -=, <<=, >>=," +#~ msgstr "\t+=, -=, <<=, >>=," + +#~ msgid "\t&=, ^=, |=\tassignment" +#~ msgstr "\t&=, ^=, |=\tatribuição" + +#~ msgid "is replaced by its value (coerced to a long integer) within" +#~ msgstr "substituído pelo seu valor (convertido em inteiro longo) dentro" + +#~ msgid "an expression. The variable need not have its integer attribute" +#~ msgstr "da expressão. A variável não precisa ter seu atributo inteiro" + +#~ msgid "turned on to be used in an expression." +#~ msgstr "ativo para ser usada em uma expressão." + +#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" +#~ msgstr "" +#~ "Os operadores são avaliados em ordem de precedência. Sub-expressões" + +#~ msgid "parentheses are evaluated first and may override the precedence" +#~ msgstr "entre parênteses são avaliadas primeiro e podem prevalecer sobre as" + +#~ msgid "rules above." +#~ msgstr "regras de precedência anteriores." + +#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" +#~ msgstr "Se o último argumento for avaliado como 0, `let' retorna 1, caso" + +#~ msgid "otherwise." +#~ msgstr "contrário, retorna 0." + +#~ msgid "One line is read from the standard input, and the first word is" +#~ msgstr "Uma linha é lida a partir da entrada padrão, e a primeira palavra é" + +#~ msgid "" +#~ "assigned to the first NAME, the second word to the second NAME, and so" +#~ msgstr "" +#~ "atribuída ao primeiro NOME, a segunda ao segundo NOME, e assim por diante," + +#~ msgid "" +#~ "on, with leftover words assigned to the last NAME. Only the characters" +#~ msgstr "" +#~ "com as palavras restantes atribuídas ao último NOME. Somente os " +#~ "caracteres" + +#~ msgid "found in $IFS are recognized as word delimiters. The return code is" +#~ msgstr "" +#~ "encontrados em $IFS são reconhecidos como delimitadores. O código de " +#~ "retorno" + +#~ msgid "" +#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" +#~ msgstr "" +#~ "é zero, a menos que EOF seja encontrado. Se nenhum NOME for fornecido," + +#~ msgid "" +#~ "line read is stored in the REPLY variable. If the -r option is given," +#~ msgstr "" +#~ "a linha lida é armazenada na variável REPLY. Se a opção -r for fornecida," + +#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" +#~ msgstr "" +#~ "significa entrada `textual', desabilitando a interpretação da contrabarra." + +#~ msgid "the `-p' option is supplied, the string supplied as an argument is" +#~ msgstr "" +#~ "Se a opção `-p' for fornecida a MENSAGEM fornecida como argumento é " +#~ "exibida," + +#~ msgid "" +#~ "output without a trailing newline before attempting to read. If -a is" +#~ msgstr "" +#~ "sem o caracter de nova linha, antes de efetuar a leitura. Se a opção -a" + +#~ msgid "" +#~ "supplied, the words read are assigned to sequential indices of ARRAY," +#~ msgstr "" +#~ "for fornecida, as palavras lidas são atribuídas aos índices seqüenciais" + +#~ msgid "starting at zero. If -e is supplied and the shell is interactive," +#~ msgstr "" +#~ "do ARRAY, começando por zero. Se a opção -e for fornecida, e a shell for" + +#~ msgid "readline is used to obtain the line." +#~ msgstr "interativa, `readline' é utilizado para ler a linha." + +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N" +#~ msgstr "Faz a função terminar com o valor de retorno especificado por N." + +#~ msgid "is omitted, the return status is that of the last command." +#~ msgstr "Se N for omitido, retorna o status do último comando executado." + +#~ msgid " -a Mark variables which are modified or created for export." +#~ msgstr "" +#~ " -a Marcar para exportação as variáveis que são criadas ou " +#~ "modificadas." + +#~ msgid " -b Notify of job termination immediately." +#~ msgstr " -b Notificar imediatamente o término do trabalho." + +#~ msgid " -e Exit immediately if a command exits with a non-zero status." +#~ msgstr "" +#~ " -e Terminar imediatamente se um comando terminar com status != 0." + +#~ msgid " -f Disable file name generation (globbing)." +#~ msgstr " -f Desabilitar a geração de nome de arquivo (metacaracteres)." + +#~ msgid " -h Remember the location of commands as they are looked up." +#~ msgstr " -h Lembrar da localização dos comandos ao procurá-los." + +#~ msgid "" +#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" +#~ msgstr " -i Forçar a shell ser do tipo \"interativa\". `Shells'" + +#~ msgid " always read `~/.bashrc' on startup." +#~ msgstr " interativas sempre lêem `~/.bashrc' ao iniciar." + +#~ msgid " -k All assignment arguments are placed in the environment for a" +#~ msgstr "" +#~ " -k Todos os argumentos de atribuição são colocados no ambiente," + +#~ msgid " command, not just those that precede the command name." +#~ msgstr " e não somente os que precedem o nome do comando." + +#~ msgid " -m Job control is enabled." +#~ msgstr " -m O controle de trabalho está habilitado." + +#~ msgid " -n Read commands but do not execute them." +#~ msgstr " -n Ler os comandos, mas não executá-los." + +#~ msgid " -o option-name" +#~ msgstr " -o NOME-DA-OPÇÃO" + +#~ msgid " Set the variable corresponding to option-name:" +#~ msgstr " Inicializar a variável correspondente ao nome da opção:" + +#~ msgid " allexport same as -a" +#~ msgstr " allexport o mesmo que -a" + +#~ msgid " braceexpand same as -B" +#~ msgstr " braceexpand o mesmo que -B" + +#~ msgid " emacs use an emacs-style line editing interface" +#~ msgstr "" +#~ " emacs usar interface de edição de linha estilo emacs" + +#~ msgid " errexit same as -e" +#~ msgstr " errexit o mesmo que -e" + +#~ msgid " hashall same as -h" +#~ msgstr " hashall o mesmo que -h" + +#~ msgid " histexpand same as -H" +#~ msgstr " histexpand o mesmo que -H" + +#~ msgid " ignoreeof the shell will not exit upon reading EOF" +#~ msgstr " ignoreeof a shell não termina após ler EOF" + +#~ msgid " interactive-comments" +#~ msgstr " interactive-comments" + +#~ msgid "" +#~ " allow comments to appear in interactive commands" +#~ msgstr "" +#~ " permite comentários em comandos interativos" + +#~ msgid " keyword same as -k" +#~ msgstr " keyword o mesmo que -k" + +#~ msgid " monitor same as -m" +#~ msgstr " monitor o mesmo que -m" + +#~ msgid " noclobber same as -C" +#~ msgstr " noclobber o mesmo que -C" + +#~ msgid " noexec same as -n" +#~ msgstr " noexec o mesmo que -n" + +#~ msgid " noglob same as -f" +#~ msgstr " noglob o mesmo que -f" + +#~ msgid " notify save as -b" +#~ msgstr " notify o mesmo que -b" + +#~ msgid " nounset same as -u" +#~ msgstr " nounset o mesmo que -u" + +#~ msgid " onecmd same as -t" +#~ msgstr " onecmd o mesmo que -t" + +#~ msgid " physical same as -P" +#~ msgstr " physical o mesmo que -P" + +#~ msgid "" +#~ " posix change the behavior of bash where the default" +#~ msgstr "" +#~ " posix mudar o comportamento do `bash' onde o padrão" + +#~ msgid "" +#~ " operation differs from the 1003.2 standard to" +#~ msgstr "" +#~ " for diferente do padrão 1003.2, para tornar" + +#~ msgid " match the standard" +#~ msgstr " igual ao padrão" + +#~ msgid " privileged same as -p" +#~ msgstr " privileged o mesmo que -p" + +#~ msgid " verbose same as -v" +#~ msgstr " verbose o mesmo que -v" + +#~ msgid " vi use a vi-style line editing interface" +#~ msgstr "" +#~ " vi usar interface de edição de linha estilo vi" + +#~ msgid " xtrace same as -x" +#~ msgstr " xtrace o mesmo que -x" + +#~ msgid "" +#~ " -p Turned on whenever the real and effective user ids do not match." +#~ msgstr "" +#~ " -p Habilitado sempre que o usuário real e efetivo forem diferentes." + +#~ msgid " Disables processing of the $ENV file and importing of shell" +#~ msgstr "" +#~ " Desabilita o processamento do arquivo $ENV e importação das " +#~ "funções" + +#~ msgid "" +#~ " functions. Turning this option off causes the effective uid and" +#~ msgstr "" +#~ " da shell. Desabilitando esta opção faz com que o `uid' e `gid'" + +#~ msgid " gid to be set to the real uid and gid." +#~ msgstr " efetivos sejam feitos o mesmo que o `uid' e `gid' reais." + +#~ msgid " -t Exit after reading and executing one command." +#~ msgstr " -t Sair após ler e executar um comando." + +#~ msgid " -u Treat unset variables as an error when substituting." +#~ msgstr "" +#~ " -u Tratar como erro as variáveis não inicializadas na substituição." + +#~ msgid " -v Print shell input lines as they are read." +#~ msgstr " -v Exibir as linhas de entrada da shell ao lê-las." + +#~ msgid " -x Print commands and their arguments as they are executed." +#~ msgstr " -x Exibir os comandos e seus argumentos ao executá-los." + +#~ msgid " -B the shell will perform brace expansion" +#~ msgstr " -B a shell irá realizar a expansão das chaves {}" + +#~ msgid " -H Enable ! style history substitution. This flag is on" +#~ msgstr " -H Habilitar o estilo ! para substituição do histórico." + +#~ msgid " by default." +#~ msgstr " Esta opção está ativa por padrão." + +#~ msgid " -C If set, disallow existing regular files to be overwritten" +#~ msgstr " -C Não permite que arquivos regulares existentes sejam" + +#~ msgid " by redirection of output." +#~ msgstr " sobrescritos pelo redirecionamento da saída." + +#~ msgid " -P If set, do not follow symbolic links when executing commands" +#~ msgstr " -P Não seguir os vínculos simbólicos ao executar comandos," + +#~ msgid " such as cd which change the current directory." +#~ msgstr " tais como `cd', que troca o diretório atual." + +#~ msgid "Using + rather than - causes these flags to be turned off. The" +#~ msgstr "Usando + em vez de - faz com que as opções sejam desabilitadas. As" + +#~ msgid "flags can also be used upon invocation of the shell. The current" +#~ msgstr "" +#~ "opções também podem ser usadas na chamada da shell. O conjunto atual" + +#~ msgid "" +#~ "set of flags may be found in $-. The remaining n ARGs are positional" +#~ msgstr "" +#~ "de opções pode ser encontrado em $-. Os n ARGs restantes são parâmetros" + +#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" +#~ msgstr "posicionais e são atribuídos, em ordem, a $1, $2, .. $n. Se nenhum" + +#~ msgid "ARGs are given, all shell variables are printed." +#~ msgstr "ARG for fornecido, todas as variáveis da shell são exibidas." + +#~ msgid "For each NAME, remove the corresponding variable or function. Given" +#~ msgstr "" +#~ "Para cada NOME, remove a variável ou a função correspondente. Usando-se a" + +#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," +#~ msgstr "" +#~ "opção `-v', `unset' atua somente nas variáveis. Usando-se a opção `-f'" + +#~ msgid "unset will only act on functions. With neither flag, unset first" +#~ msgstr "`unset' atua somente nas funções. Sem nenhuma opção, inicialmente" + +#~ msgid "tries to unset a variable, and if that fails, then tries to unset a" +#~ msgstr "`unset' tenta remover uma variável e, se falhar, tenta remover uma" + +#~ msgid "" +#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" +#~ msgstr "" +#~ "função. Algumas variáveis (como PATH e IFS) não podem ser removidas." + +#~ msgid "see readonly." +#~ msgstr "Veja também o comando `readonly'." + +#~ msgid "NAMEs are marked for automatic export to the environment of" +#~ msgstr "" +#~ "NOMEs são marcados para serem automaticamente exportados para o ambiente" + +#~ msgid "subsequently executed commands. If the -f option is given," +#~ msgstr "dos comando executados a seguir. Se a opção -f for fornecida," + +#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" +#~ msgstr "" +#~ "os NOMEs se referem a funções. Se nenhum nome for fornecido, ou se `-p'" + +#~ msgid "is given, a list of all names that are exported in this shell is" +#~ msgstr "" +#~ "for usado, uma lista com todos os nomes que são exportados nesta shell é" + +#~ msgid "printed. An argument of `-n' says to remove the export property" +#~ msgstr "" +#~ "exibida. O argumento `-n' faz remover a propriedade de exportação dos" + +#~ msgid "from subsequent NAMEs. An argument of `--' disables further option" +#~ msgstr "NOMEs subseqüentes. O argumento `--' desabilita o processamento de" + +#~ msgid "processing." +#~ msgstr "opções posteriores." + +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may" +#~ msgstr "" +#~ "Os NOMEs são marcados como somente para leitura, e os valores destes" + +#~ msgid "not be changed by subsequent assignment. If the -f option is given," +#~ msgstr "" +#~ "NOMEs não poderão ser alterados por novas atribuições. Se a opção -f for" + +#~ msgid "then functions corresponding to the NAMEs are so marked. If no" +#~ msgstr "" +#~ "fornecida, as funções correspondentes a NOMEs também são marcadas. Sem" + +#~ msgid "" +#~ "arguments are given, or if `-p' is given, a list of all readonly names" +#~ msgstr "" +#~ "nenhum argumento, ou se `-p' for usado, uma lista com todos os nomes" + +#~ msgid "" +#~ "is printed. An argument of `-n' says to remove the readonly property" +#~ msgstr "" +#~ "somente para leitura é exibida. O argumento `-n' remove a propriedade" + +#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" +#~ msgstr "somente para leitura. A opção `-a' faz tratar cada NOME como uma" + +#~ msgid "an array variable. An argument of `--' disables further option" +#~ msgstr "" +#~ "variável tipo array. Um argumento `--' desabilita o processamento de" + +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +#~ msgstr "" +#~ "Os parâmetros posicionais a partir de $N+1 ... são deslocados para $1 ..." + +#~ msgid "not given, it is assumed to be 1." +#~ msgstr "Se N não for especificado, o valor 1 é assumido ($2 vira $1 ...)." + +#~ msgid "Read and execute commands from FILENAME and return. The pathnames" +#~ msgstr "Ler e executar os comandos em ARQUIVO e retornar. Os caminhos em" + +#~ msgid "in $PATH are used to find the directory containing FILENAME." +#~ msgstr "$PATH são usados para encontrar o diretório contendo o ARQUIVO." + +#~ msgid "Suspend the execution of this shell until it receives a SIGCONT" +#~ msgstr "" +#~ "Suspender a execução desta shell até que o sinal SIGCONT seja recebido." + +#~ msgid "signal. The `-f' if specified says not to complain about this" +#~ msgstr "Se a opção `-f' for especificada indica para não reclamar sobre ser" + +#~ msgid "being a login shell if it is; just suspend anyway." +#~ msgstr "" +#~ "uma `shell de login', caso seja; simplesmente suspender de qualquer forma." + +#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" +#~ msgstr "" +#~ "Termina com status 0 (verdadeiro) ou 1 (falso) conforme EXPR for avaliada." + +#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" +#~ msgstr "" +#~ "As expressões podem ser unárias ou binárias. As expressões unárias são" + +#~ msgid "expressions are often used to examine the status of a file. There" +#~ msgstr "" +#~ "muito usadas para examinar o status de um arquivo. Existem, também," + +#~ msgid "are string operators as well, and numeric comparison operators." +#~ msgstr "" +#~ "operadores para cadeias de caracteres (strings) e comparações numéricas." + +#~ msgid "File operators:" +#~ msgstr "Operadores para arquivos:" + +#~ msgid " -b FILE True if file is block special." +#~ msgstr " -b ARQUIVO Verdade se o arquivo for do tipo especial de bloco." + +#~ msgid " -c FILE True if file is character special." +#~ msgstr "" +#~ " -c ARQUIVO Verdade se o arquivo for do tipo especial de caracter." + +#~ msgid " -d FILE True if file is a directory." +#~ msgstr " -d ARQUIVO Verdade se o arquivo for um diretório." + +#~ msgid " -e FILE True if file exists." +#~ msgstr " -e ARQUIVO Verdade se o arquivo existir." + +#~ msgid " -f FILE True if file exists and is a regular file." +#~ msgstr " -f ARQUIVO Verdade se o arquivo existir e for do tipo regular." + +#~ msgid " -g FILE True if file is set-group-id." +#~ msgstr "" +#~ " -g ARQUIVO Verdade se o arquivo tiver o bit \"set-group-id\" ativo." + +#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." +#~ msgstr "" +#~ " -h ARQUIVO Verdade se arquivo for um vínculo simbólico. Usar \"-L\"." + +#~ msgid " -L FILE True if file is a symbolic link." +#~ msgstr " -L ARQUIVO Verdade se o arquivo for um vínculo simbólico." + +#~ msgid " -k FILE True if file has its \"sticky\" bit set." +#~ msgstr " -k ARQUIVO Verdade se o arquivo tiver o bit \"sticky\" ativo." + +#~ msgid " -p FILE True if file is a named pipe." +#~ msgstr " -p ARQUIVO Verdade se o arquivo for um `named pipe'." + +#~ msgid " -r FILE True if file is readable by you." +#~ msgstr "" +#~ " -r ARQUIVO Verdade se você tiver autorização para ler o arquivo." + +#~ msgid " -s FILE True if file exists and is not empty." +#~ msgstr " -s ARQUIVO Verdade se o arquivo existir e não estiver vazio." + +#~ msgid " -S FILE True if file is a socket." +#~ msgstr " -S ARQUIVO Verdade se o arquivo for um soquete." + +#~ msgid " -t FD True if FD is opened on a terminal." +#~ msgstr "" +#~ " -t FD Verdade se o descritor de arquivo (FD) estiver aberto\n" +#~ " em um terminal." + +#~ msgid " -u FILE True if the file is set-user-id." +#~ msgstr "" +#~ " -u ARQUIVO Verdade se o arquivo tiver o bit \"set-user-id\" ativo." + +#~ msgid " -w FILE True if the file is writable by you." +#~ msgstr "" +#~ " -w ARQUIVO Verdade se você tiver autorização para escrever no " +#~ "arquivo." + +#~ msgid " -x FILE True if the file is executable by you." +#~ msgstr "" +#~ " -x ARQUIVO Verdade se você tiver autorização para executar o arquivo." + +#~ msgid " -O FILE True if the file is effectively owned by you." +#~ msgstr "" +#~ " -O ARQUIVO Verdade se o arquivo pertencer ao seu usuário efetivo." + +#~ msgid "" +#~ " -G FILE True if the file is effectively owned by your group." +#~ msgstr "" +#~ " -G ARQUIVO Verdade se o arquivo pertencer ao seu grupo efetivo." + +#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" +#~ msgstr " ARQ1 -nt ARQ2 Verdade se ARQ1 for mais novo (conforme a data" + +#~ msgid " modification date) file2." +#~ msgstr " de modificação) do que ARQ2." + +#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." +#~ msgstr " ARQ1 -ot ARQ2 Verdade se ARQ1 for mais antigo que ARQ2." + +#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." +#~ msgstr "" +#~ " ARQ1 -ef ARQ2 Verdade se ARQ1 for um vínculo direto para ARQ2.\n" +#~ " (mesma unidade e mesmo número do inode)" + +#~ msgid "String operators:" +#~ msgstr "Operadores para cadeias de caracteres (strings):" + +#~ msgid " -z STRING True if string is empty." +#~ msgstr " -z STRING Verdade se STRING estiver vazia." + +#~ msgid " -n STRING" +#~ msgstr " -n STRING" + +#~ msgid " STRING True if string is not empty." +#~ msgstr " STRING Verdade se STRING não estiver vazia." + +#~ msgid " STRING1 = STRING2" +#~ msgstr " STRING1 = STRING2" + +#~ msgid " True if the strings are equal." +#~ msgstr " Verdade se STRING1 for idêntica à STRING2." + +#~ msgid " STRING1 != STRING2" +#~ msgstr " STRING1 != STRING2" + +#~ msgid " True if the strings are not equal." +#~ msgstr " Verdade se STRING1 não for idêntica à STRING2." + +#~ msgid " STRING1 < STRING2" +#~ msgstr " STRING1 < STRING2" + +#~ msgid "" +#~ " True if STRING1 sorts before STRING2 lexicographically" +#~ msgstr "" +#~ " Verdade se STRING1 tiver ordenação anterior à STRING2." + +#~ msgid " STRING1 > STRING2" +#~ msgstr " STRING1 > STRING2" + +#~ msgid "" +#~ " True if STRING1 sorts after STRING2 lexicographically" +#~ msgstr "" +#~ " Verdade se STRING1 tiver ordenação posterior à STRING2." + +#~ msgid "Other operators:" +#~ msgstr "Outros operadores:" + +#~ msgid " ! EXPR True if expr is false." +#~ msgstr " ! EXPR Verdade se a expressão EXPR for falsa." + +#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." +#~ msgstr " EXPR1 -a EXPR2 Verdade se EXPR1 `E' EXPR2 forem verdadeiras." + +#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." +#~ msgstr " EXPR1 -o EXPR2 Verdade se EXPR1 `OU' EXPR2 for verdadeira." + +#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," +#~ msgstr " arg1 OP arg2 Testes aritméticos. OP pode ser -eq, -ne," + +#~ msgid " -lt, -le, -gt, or -ge." +#~ msgstr " -lt, -le, -gt, ou -ge." + +#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," +#~ msgstr "" +#~ "Operadores aritméticos binários retornam verdadeiro se ARG1 for igual," + +#~ msgid "" +#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgstr "diferente, menor, menor ou igual, maior, ou maior ou igual do que" + +#~ msgid "than ARG2." +#~ msgstr "ARG2, respectivamente." + +#~ msgid "This is a synonym for the \"test\" builtin, but the last" +#~ msgstr "É um sinônimo para o comando interno \"test\", mas o último" + +#~ msgid "argument must be a literal `]', to match the opening `['." +#~ msgstr "argumento deve ser o literal `]', para fechar o `[' de abertura." + +#~ msgid "Print the accumulated user and system times for processes run from" +#~ msgstr "" +#~ "Exibe os tempos acumulados do usuário e do sistema para os processos" + +#~ msgid "the shell." +#~ msgstr "executados por esta shell." + +#~ msgid "The command ARG is to be read and executed when the shell receives" +#~ msgstr "" +#~ "O comando em ARG é para ser lido e executado quando a shell receber o(s)" + +#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +#~ msgstr "" +#~ "sinal(is) SINAL-ESPEC. Se ARG for omitido, todos os sinais especificados" + +#~ msgid "reset to their original values. If ARG is the null string each" +#~ msgstr "" +#~ "retornam aos seus valores originais. Se ARG for uma string nula, cada" + +#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +#~ msgstr "" +#~ "SINAL-ESPEC é ignorado pela shell e pelos comandos chamados por ela." + +#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +#~ msgstr "" +#~ "Se SINAL-ESPEC for EXIT (0) o comando em ARG é executado na saída da" + +#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" +#~ msgstr "" +#~ "shell. Se SINAL-ESPEC for DEBUG, o comando em ARG é executado após cada" + +#~ msgid "command. If ARG is `-p' then the trap commands associated with" +#~ msgstr "" +#~ "comando. Se ARG for `-p' então os comandos de captura associados com cada" + +#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +#~ msgstr "SINAL-ESPEC são exibidos. Se nenhum argumento for fornecido, ou se" + +#~ msgid "only `-p' is given, trap prints the list of commands associated with" +#~ msgstr "" +#~ "somente `-p' for fornecido, é exibida a lista dos comandos associados" + +#~ msgid "" +#~ "each signal number. SIGNAL_SPEC is either a signal name in " +#~ msgstr "" +#~ "com cada número de sinal. SINAL-ESPEC é um nome de sinal em ou" + +#~ msgid "" +#~ "or a signal number. `trap -l' prints a list of signal names and their" +#~ msgstr "" +#~ "um número de sinal. `trap -l' exibe a lista de nomes de sinais com seus" + +#~ msgid "corresponding numbers. Note that a signal can be sent to the shell" +#~ msgstr "" +#~ "números correspondentes. Note que o sinal pode ser enviado para a shell" + +#~ msgid "with \"kill -signal $$\"." +#~ msgstr "através do comando \"kill -SINAL $$\"." + +#~ msgid "For each NAME, indicate how it would be interpreted if used as a" +#~ msgstr "Para cada NOME, indica como este deve ser interpretado caso seja" + +#~ msgid "If the -t option is used, returns a single word which is one of" +#~ msgstr "" +#~ "Se a opção -t for fornecida, `type' retorna uma única palavra dentre" + +#~ msgid "" +#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +#~ msgstr "" +#~ "`alias', `keyword', `function', `builtin', `file' ou `', se NOME for um" + +#~ msgid "" +#~ "alias, shell reserved word, shell function, shell builtin, disk file," +#~ msgstr "" +#~ "alias, uma palavra reservada, função ou comando interno da shell, um " +#~ "arquivo" + +#~ msgid "or unfound, respectively." +#~ msgstr "em disco, ou não for encontrado, respectivamente." + +#~ msgid "If the -p flag is used, either returns the name of the disk file" +#~ msgstr "Se a opção -p for fornecida, retorna o nome do arquivo em disco que" + +#~ msgid "that would be executed, or nothing if -t would not return `file'." +#~ msgstr "deve ser executado, ou nada, caso -t não retorne `file'." + +#~ msgid "If the -a flag is used, displays all of the places that contain an" +#~ msgstr "Se a opção -a for fornecida, exibe todos os locais que contém um" + +#~ msgid "" +#~ "executable named `file'. This includes aliases and functions, if and" +#~ msgstr "" +#~ "arquivo executável chamado `ARQUIVO', incluindo os aliases e funções," + +#~ msgid "only if the -p flag is not also used." +#~ msgstr "mas somente se a opção -p não for fornecida conjuntamente." + +#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," +#~ msgstr "O comando `type' aceita -all, -path, e -type no lugar de" + +#~ msgid "respectively." +#~ msgstr "-a, -p, and -t, respectivamente." + +#~ msgid "Ulimit provides control over the resources available to processes" +#~ msgstr "" +#~ "Ulimit estabelece controle sobre os recursos disponíveis para os processos" + +#~ msgid "started by the shell, on systems that allow such control. If an" +#~ msgstr "" +#~ "iniciados por esta shell, em sistemas que permitem estes controles. Se uma" + +#~ msgid "option is given, it is interpreted as follows:" +#~ msgstr "opção for fornecida, é interpretada como mostrado a seguir:" + +#~ msgid " -S\tuse the `soft' resource limit" +#~ msgstr " -S\tutilizar os limites correntes (`soft') dos recursos" + +#~ msgid " -H\tuse the `hard' resource limit" +#~ msgstr " -H\tutilizar os limites absolutos (`hard') dos recursos" + +#~ msgid " -a\tall current limits are reported" +#~ msgstr " -a\ttodos os limites correntes são informados" + +#~ msgid " -c\tthe maximum size of core files created" +#~ msgstr "" +#~ " -c\to tamanho máximo para os arquivos de imagem do núcleo criados" + +#~ msgid " -d\tthe maximum size of a process's data segment" +#~ msgstr " -d\to tamanho máximo do segmento de dados de um processo" + +#~ msgid " -m\tthe maximum resident set size" +#~ msgstr "" +#~ " -m\to tamanho máximo do conjunto de processos residentes em memória" + +#~ msgid " -s\tthe maximum stack size" +#~ msgstr " -s\to tamanho máximo da pilha" + +#~ msgid " -t\tthe maximum amount of cpu time in seconds" +#~ msgstr " -t\ta quantidade máxima de tempo de CPU em segundos" + +#~ msgid " -f\tthe maximum size of files created by the shell" +#~ msgstr " -f\to tamanho máximo dos arquivos criados pela shell" + +#~ msgid " -p\tthe pipe buffer size" +#~ msgstr " -p\to tamanho da área intermediária (buffer) do `pipe'" + +#~ msgid " -n\tthe maximum number of open file descriptors" +#~ msgstr " -n\to número máximo de descritores de arquivos abertos" + +#~ msgid " -u\tthe maximum number of user processes" +#~ msgstr " -u\to número máximo de processos do usuário" + +#~ msgid " -v\tthe size of virtual memory" +#~ msgstr " -v\to tamanho da memória virtual" + +#~ msgid "If LIMIT is given, it is the new value of the specified resource." +#~ msgstr "" +#~ "Se LIMITE for fornecido, torna-se o novo valor do recurso especificado." + +#~ msgid "Otherwise, the current value of the specified resource is printed." +#~ msgstr "Senão, o valor atual do recurso especificado é exibido." + +#~ msgid "If no option is given, then -f is assumed. Values are in 1k" +#~ msgstr "" +#~ "Se nenhuma opção for fornecida, então -f é assumido. Os valores são em" + +#~ msgid "increments, except for -t, which is in seconds, -p, which is in" +#~ msgstr "incrementos de 1k, exceto para -t, que é em segundos, -p, que é em" + +#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" +#~ msgstr "incrementos de 512 bytes, e -u, que é o número cardinal de" + +#~ msgid "processes." +#~ msgstr "processos." + +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" +#~ msgstr "" +#~ "MODO é atribuído à máscara de criação de arquivos do usuário. Se omitido," + +#~ msgid "" +#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" +#~ msgstr "" +#~ "ou se `-S' for especificado, a máscara em uso é exibida. A opção `-S'" + +#~ msgid "" +#~ "option makes the output symbolic; otherwise an octal number is output." +#~ msgstr "exibe símbolos na saída; sem esta opção um número octal é exibido." + +#~ msgid "If MODE begins with a digit, it is interpreted as an octal number," +#~ msgstr "" +#~ "Se MODO começar por um dígito, é interpretado como sendo um número octal," + +#~ msgid "" +#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." +#~ msgstr "" +#~ "senão devem ser caracteres simbólicos, como os aceitos por chmod(1)." + +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If" +#~ msgstr "" +#~ "Aguardar pelo processo especificado e informar seu status de término. Se N" + +#~ msgid "N is not given, all currently active child processes are waited for," +#~ msgstr "" +#~ "não for especificado, todos os processos filhos ativos são aguardados," + +#~ msgid "and the return code is zero. N may be a process ID or a job" +#~ msgstr "e o código de retorno é zero. N pode ser o ID de um processo ou a" + +#~ msgid "specification; if a job spec is given, all processes in the job's" +#~ msgstr "" +#~ "especificação de um trabalho; Se for a especificação de um trabalho, todos" + +#~ msgid "pipeline are waited for." +#~ msgstr "os processos presentes no `pipeline' do trabalho são aguardados." + +#~ msgid "and the return code is zero. N is a process ID; if it is not given," +#~ msgstr "" +#~ "e o código de retorno é zero. N é o ID de um processo; se N não for" + +#~ msgid "all child processes of the shell are waited for." +#~ msgstr "especificado, todos os processos filhos da shell são aguardados." + +#~ msgid "The `for' loop executes a sequence of commands for each member in a" +#~ msgstr "" +#~ "O laço `for' executa a seqüência de comandos para cada membro na lista de" + +#~ msgid "" +#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +#~ msgstr "" +#~ "items. Se `in PALAVRAS ...;' não estiver presente, então `in \"$@\"'" + +#~ msgid "" +#~ "assumed. For each element in WORDS, NAME is set to that element, and" +#~ msgstr "" +#~ "(parâmetros posicionais) é assumido. Para cada elemento em PALAVRAS, NOME" + +#~ msgid "the COMMANDS are executed." +#~ msgstr "assume seu valor, e os COMANDOS são executados." + +#~ msgid "The WORDS are expanded, generating a list of words. The" +#~ msgstr "" +#~ "As palavras são expandidas, gerando uma lista de palavras. O conjunto" + +#~ msgid "set of expanded words is printed on the standard error, each" +#~ msgstr "" +#~ "de palavras expandidas é enviado para a saída de erro padrão, cada uma" + +#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" +#~ msgstr "" +#~ "precedida por um número. Se `in PALAVRAS' for omitido, `in \"$@\"' é" + +#~ msgid "is assumed. The PS3 prompt is then displayed and a line read" +#~ msgstr "assumido. Em seguida o prompt PS3 é exibido, e uma linha é lida da" + +#~ msgid "from the standard input. If the line consists of the number" +#~ msgstr "" +#~ "entrada padrão. Se a linha consistir do número correspondente ao número" + +#~ msgid "corresponding to one of the displayed words, then NAME is set" +#~ msgstr "de uma das palavras exibidas, então NOME é atribuído para esta" + +#~ msgid "to that word. If the line is empty, WORDS and the prompt are" +#~ msgstr "" +#~ "PALAVRA. Se a linha estiver vazia, PALAVRAS e o prompt são exibidos" + +#~ msgid "redisplayed. If EOF is read, the command completes. Any other" +#~ msgstr "" +#~ "novamente. Se EOF for lido, o comando termina. Qualquer outro valor" + +#~ msgid "value read causes NAME to be set to null. The line read is saved" +#~ msgstr "lido faz com que NOME seja tornado nulo. A linha lida é salva" + +#~ msgid "in the variable REPLY. COMMANDS are executed after each selection" +#~ msgstr "na variável REPLY. COMANDOS são executados após cada seleção" + +#~ msgid "until a break or return command is executed." +#~ msgstr "até que o comando `break' ou `return' seja executado." + +#~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" +#~ msgstr "" +#~ "Executar seletivamente COMANDOS tomando por base a correspondência entre" + +#~ msgid "`|' is used to separate multiple patterns." +#~ msgstr "" +#~ "PALAVRA e PADRÃO. O caracter `|' é usado para separar múltiplos padrões." + +#~ msgid "" +#~ "The if COMMANDS are executed. If the exit status is zero, then the then" +#~ msgstr "" +#~ "Os COMANDOS `if' são executados. Se os status de saída for zero, então os" + +#~ msgid "" +#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +#~ msgstr "" +#~ "COMANDOS `then' são executados, senão, os COMANDOS `elif' são executados " +#~ "em" + +#~ msgid "" +#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" +#~ msgstr "" +#~ "seqüência e, se o status de saída for zero, os COMANDOS `then' associados" + +#~ msgid "" +#~ "are executed and the if command completes. Otherwise, the else COMMANDS" +#~ msgstr "" +#~ "são executados e o `if' termina. Senão, os COMANDOS da cláusula `else'" + +#~ msgid "" +#~ "are executed, if present. The exit status is the exit status of the last" +#~ msgstr "" +#~ "são executados, se houver. O status de saída é o status de saída do" + +#~ msgid "command executed, or zero if no condition tested true." +#~ msgstr "" +#~ "último comando executado, ou zero, se nenhuma condição for verdadeira." + +#~ msgid "Expand and execute COMMANDS as long as the final command in the" +#~ msgstr "Expande e executa COMANDOS enquanto o comando final nos" + +#~ msgid "`while' COMMANDS has an exit status of zero." +#~ msgstr "COMANDOS `while' tiver um status de saída igual a zero." + +#~ msgid "`until' COMMANDS has an exit status which is not zero." +#~ msgstr "COMANDOS `until' tiver um status de saída diferente de zero." + +#~ msgid "Create a simple command invoked by NAME which runs COMMANDS." +#~ msgstr "Cria um comando chamado NOME o qual executa COMANDOS." + +#~ msgid "Arguments on the command line along with NAME are passed to the" +#~ msgstr "Os argumentos na linha de comando juntamente com NOME são passados" + +#~ msgid "function as $0 .. $n." +#~ msgstr "para a função como $0 .. $n." + +#~ msgid "Run a set of commands in a group. This is one way to redirect an" +#~ msgstr "Executa um conjunto de comandos agrupando-os. Esta é uma forma de" + +#~ msgid "entire set of commands." +#~ msgstr "redirecionar todo um conjunto de comandos." + +#~ msgid "This is similar to the `fg' command. Resume a stopped or background" +#~ msgstr "" +#~ "Semelhante ao comando `fg'. Prossegue a execução de um trabalho parado ou" + +#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +#~ msgstr "" +#~ "em segundo plano. Se DÃGITOS for especificado, então este trabalho é " +#~ "usado." + +#~ msgid "" +#~ "WORD, then the job whose name begins with WORD is used. Following the" +#~ msgstr "" +#~ "Se for especificado PALAVRA, o trabalho começado por PALAVRA é usado." + +#~ msgid "job specification with a `&' places the job in the background." +#~ msgstr "" +#~ "Seguindo-se a especificação por um `&' põe o trabalho em segundo plano." + +#~ msgid "BASH_VERSION The version numbers of this Bash." +#~ msgstr "BASH_VERSION Os números da versão desta `bash'." + +#~ msgid "CDPATH A colon separated list of directories to search" +#~ msgstr "CDPATH Uma lista, separada por dois pontos, de diretórios" + +#~ msgid "\t\twhen the argument to `cd' is not found in the current" +#~ msgstr "\t\ta serem pesquisados quando o argumento para `cd' não for" + +#~ msgid "\t\tdirectory." +#~ msgstr "\t\tencontrado no diretório atual." + +#~ msgid "" +#~ "HISTFILE The name of the file where your command history is stored." +#~ msgstr "" +#~ "HISTFILE O nome do arquivo onde o histórico de comandos é " +#~ "armazenado." + +#~ msgid "HISTFILESIZE The maximum number of lines this file can contain." +#~ msgstr "" +#~ "HISTFILESIZE O número máximo de linhas que este arquivo pode conter." + +#~ msgid "HISTSIZE The maximum number of history lines that a running" +#~ msgstr "HISTSIZE O número máximo de linhas do histórico que uma" + +#~ msgid "\t\tshell can access." +#~ msgstr "\t\tshell em execução pode acessar." + +#~ msgid "HOME The complete pathname to your login directory." +#~ msgstr "" +#~ "HOME O nome completo do caminho do seu diretório de login." + +#~ msgid "" +#~ "HOSTTYPE The type of CPU this version of Bash is running under." +#~ msgstr "" +#~ "HOSTTYPE O tipo de CPU sob a qual esta `bash' está executando." + +#~ msgid "" +#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" +#~ msgstr "IGNOREEOF Controla a ação da shell ao receber um caracter" + +#~ msgid "\t\tcharacter as the sole input. If set, then the value" +#~ msgstr "\t\tEOF como única entrada. Se estiver ativa, então o valor da" + +#~ msgid "\t\tof it is the number of EOF characters that can be seen" +#~ msgstr "\t\tvariável é o número de caracteres EOF que podem ser recebidos," + +#~ msgid "\t\tin a row on an empty line before the shell will exit" +#~ msgstr "\t\tde forma seguida em uma linha vazia, antes da shell terminar" + +#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." +#~ msgstr "" +#~ "\t\t(padrão 10). Caso contrário, EOF significa o fim da entrada de dados." + +#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." +#~ msgstr "" +#~ "MAILCHECK\tFreqüência, em segundos, para a `bash' verificar novo e-mail." + +#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" +#~ msgstr "" +#~ "MAILPATH\tUma lista, separada por dois pontos, de nomes de arquivos," + +#~ msgid "\t\tfor new mail." +#~ msgstr "\t\tnos quais a `bash' vai verificar se existe novo e-mail." + +#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." +#~ msgstr "OSTYPE\t\tA versão do Unix sob a qual a `bash' está executando." + +#~ msgid "PATH A colon-separated list of directories to search when" +#~ msgstr "" +#~ "PATH Uma lista, separada por dois pontos, de diretórios a" + +#~ msgid "\t\tlooking for commands." +#~ msgstr "\t\tserem pesquisados quando os comandos forem procurados." + +#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" +#~ msgstr "PROMPT_COMMAND O comando a ser executado antes da exibição de cada" + +#~ msgid "\t\tprimary prompt." +#~ msgstr "\t\tmensagem de prompt primária." + +#~ msgid "PS1 The primary prompt string." +#~ msgstr "PS1 A mensagem primária de prompt exibida." + +#~ msgid "PS2 The secondary prompt string." +#~ msgstr "PS2 A mensagem secundária de prompt exibida." + +#~ msgid "TERM The name of the current terminal type." +#~ msgstr "TERM O nome do tipo de terminal em uso no momento." + +#~ msgid "auto_resume Non-null means a command word appearing on a line by" +#~ msgstr "" +#~ "auto_resume Não nulo significa que um comando aparecendo sozinho em" + +#~ msgid "\t\titself is first looked for in the list of currently" +#~ msgstr "" +#~ "\t\tlinha deve ser procurado primeiro na lista de trabalhos parados." + +#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." +#~ msgstr "" +#~ "\t\tSe for encontrado na lista, o trabalho vai para o primeiro plano." + +#~ msgid "\t\tA value of `exact' means that the command word must" +#~ msgstr "" +#~ "\t\tO valor `exact' significa que a palavra do comando deve corresponder" + +#~ msgid "\t\texactly match a command in the list of stopped jobs. A" +#~ msgstr "\t\texatamente a um comando da lista de trabalhos parados." + +#~ msgid "\t\tvalue of `substring' means that the command word must" +#~ msgstr "\t\tO valor `substring' significa que a palavra do comando deve" + +#~ msgid "\t\tmatch a substring of the job. Any other value means that" +#~ msgstr "\t\tcorresponder a uma parte do trabalho. Qualquer outro valor" + +#~ msgid "\t\tthe command must be a prefix of a stopped job." +#~ msgstr "" +#~ "\t\tsignifica que o comando deve ser um prefixo de um trabalho parado." + +#~ msgid "command_oriented_history" +#~ msgstr "command_oriented_history" + +#~ msgid "" +#~ " Non-null means to save multiple-line commands together on" +#~ msgstr "" +#~ " Se não for nulo significa salvar comandos com múltiplas" + +#~ msgid " a single history line." +#~ msgstr " linhas, juntas em uma única linha do histórico." + +#~ msgid "histchars Characters controlling history expansion and quick" +#~ msgstr "" +#~ "histchars Caracteres que controlam a expansão do histórico e a" + +#~ msgid "\t\tsubstitution. The first character is the history" +#~ msgstr "\t\tsubstituição rápida. O primeiro caracter é o de substituição" + +#~ msgid "\t\tsubstitution character, usually `!'. The second is" +#~ msgstr "\t\tdo histórico, geralmente o `!'. O segundo caracter é o" + +#~ msgid "\t\tthe `quick substitution' character, usually `^'. The" +#~ msgstr "\t\tde substituição rápida, geralmente o `^'. O terceiro caracter" + +#~ msgid "\t\tthird is the `history comment' character, usually `#'." +#~ msgstr "\t\té o de comentário do histórico, geralmente o `#'." + +#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" +#~ msgstr "" +#~ "HISTCONTROL\tCom valor igual a `ignorespace', significa não introduzir" + +#~ msgid "\t\tlines which begin with a space or tab on the history" +#~ msgstr "" +#~ "\t\tlinhas que iniciam por espaço ou tabulação na lista de histórico." + +#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" +#~ msgstr "\t\tCom valor igual a `ignoredups', significa não introduzir linhas" + +#~ msgid "\t\tenter lines which match the last entered line. Set to" +#~ msgstr "\t\tque correspondam à última linha introduzida. Com valor igual a" + +#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," +#~ msgstr "\t\t`ignoreboth' significa combinar as duas opções. Remover," + +#~ msgid "\t\tor set to any other value than those above means to save" +#~ msgstr "" +#~ "\t\tou atribuir algum outro valor que não os acima, significa salvar" + +#~ msgid "\t\tall lines on the history list." +#~ msgstr "\t\ttodas as linhas na lista de histórico." + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "Adiciona o diretório no topo da pilha de diretórios, ou rotaciona a" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "" +#~ "pilha, fazendo o diretório atual de trabalho ficar no topo da pilha." + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "Sem nenhum argumento, troca os dois diretórios do topo." + +#~ msgid "+N\tRotates the stack so that the Nth directory (counting" +#~ msgstr "" +#~ "+N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" + +#~ msgid "\tfrom the left of the list shown by `dirs') is at the top." +#~ msgstr "\tpartir da esquerda da lista exibida por `dirs') fique no topo." + +#~ msgid "-N\tRotates the stack so that the Nth directory (counting" +#~ msgstr "" +#~ "-N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" + +#~ msgid "\tfrom the right) is at the top." +#~ msgstr "\tpartir da direita) fique no topo." + +#~ msgid "-n\tsuppress the normal change of directory when adding directories" +#~ msgstr "-n\tsuprime a troca normal de diretório ao se adicionar diretórios" + +#~ msgid "\tto the stack, so only the stack is manipulated." +#~ msgstr "\tà pilha, fazendo com que somente a pilha seja manipulada." + +#~ msgid "dir\tadds DIR to the directory stack at the top, making it the" +#~ msgstr "dir\tadiciona DIR à pilha de diretórios, no topo, tornando-o o" + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "Você pode exibir a pilha de diretórios através do comando `dirs'." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Remove entradas da pilha de diretórios. Sem nenhum argumento," + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "remove o diretório que está no topo da pilha, e executa `cd' para" + +#~ msgid "+N\tremoves the Nth entry counting from the left of the list" +#~ msgstr "+N\tremove a n-ésima entrada contada a partir da esquerda da lista" + +#~ msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "\texibida por `dirs', começando por zero. Por exemplo: `popd +0'" + +#~ msgid "\tremoves the first directory, `popd +1' the second." +#~ msgstr "\tremove o primeiro diretório, `popd +1' o segundo." + +#~ msgid "-N\tremoves the Nth entry counting from the right of the list" +#~ msgstr "-N\tremove a n-ésima entrada contada a partir da direita da lista" + +#~ msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "\texibida por `dirs', começando por zero. Por exemplo: `popd -0'" + +#~ msgid "\tremoves the last directory, `popd -1' the next to last." +#~ msgstr "\tremove o último diretório, `popd -1' o penúltimo." + +#~ msgid "" +#~ "-n\tsuppress the normal change of directory when removing directories" +#~ msgstr "-n\tsuprime a troca normal de diretório ao remover-se diretórios" + +#~ msgid "\tfrom the stack, so only the stack is manipulated." +#~ msgstr "\tda pilha, fazendo com que somente a pilha seja manipulada." + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "Exibe a lista atual de diretórios memorizados. Os diretórios são" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "introduzidos na lista através do comando `pushd'; os diretórios são" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "removidos da lista através do comando `popd'." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "A opção -l especifica que `dirs' não deve exibir a versão resumida" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "" +#~ "dos diretórios relativos ao seu diretório `home'. Isto significa que" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "" +#~ "`~/bin' deve ser exibido como `/home/você/bin'. A opção -v faz com que" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "`dirs' exiba a pilha de diretórios com uma entrada por linha," + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "antecedendo o nome do diretório com a sua posição na pilha. A opção" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "-p faz a mesma coisa, mas a posição na pilha não é exibida. A opção" + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "-c limpa a pilha de diretórios apagando todos os seus elementos." + +#~ msgid "" +#~ "+N\tdisplays the Nth entry counting from the left of the list shown by" +#~ msgstr "" +#~ "+N\texibe a n-ésima entrada contada a partir da esquerda da lista exibida" + +#~ msgid "\tdirs when invoked without options, starting with zero." +#~ msgstr "\tpor `dirs', quando este é chamado sem opções, começando por zero." + +#~ msgid "" +#~ "-N\tdisplays the Nth entry counting from the right of the list shown by" +#~ msgstr "" +#~ "-N\texibe a n-ésima entrada contada a partir da direita da lista exibida" + +#~ msgid "Toggle the values of variables controlling optional behavior." +#~ msgstr "" +#~ "Alterna os valores das variáveis controladoras de comportamentos " +#~ "opcionais." + +#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" +#~ msgstr "A opção -s ativa (set) cada NOME-OPÇÃO; a opção -u desativa cada" + +#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" +#~ msgstr "" +#~ "NOME-OPÇÃO. A opção -q suprime a saída; o status de término indica se" + +#~ msgid "status indicates whether each OPTNAME is set or unset. The -o" +#~ msgstr "cada NOME-OPÇÃO foi ativado ou desativado A opção -o restringe" + +#~ msgid "option restricts the OPTNAMEs to those defined for use with" +#~ msgstr "NOME-OPÇÃO para aqueles definidos para uso através de `set -o'." + +#~ msgid "`set -o'. With no options, or with the -p option, a list of all" +#~ msgstr "Sem nenhuma opção, ou com a opção -p, uma lista com todas as" + +#~ msgid "settable options is displayed, with an indication of whether or" +#~ msgstr "" +#~ "opções que podem ser ativadas é exibida, com indicação sobre se cada uma" + +#~ msgid "not each is set." +#~ msgstr "das opções está ativa ou não." diff --git a/bash-5.1/po/quot.sed b/bash-5.1/po/quot.sed new file mode 100644 index 0000000..0122c46 --- /dev/null +++ b/bash-5.1/po/quot.sed @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1â€/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“â€/""/g diff --git a/bash-5.1/po/remove-potcdate.sin b/bash-5.1/po/remove-potcdate.sin new file mode 100644 index 0000000..2436c49 --- /dev/null +++ b/bash-5.1/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/bash-5.1/po/ro.gmo b/bash-5.1/po/ro.gmo new file mode 100644 index 0000000000000000000000000000000000000000..3a69a47a6886390bdef097f5959f6420b3e57842 GIT binary patch literal 13361 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 cW=b}gbX}o)PBZ+L%g, 2003. +# Daniel Șerbănescu , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-08-25 10:11+0200\n" +"Last-Translator: Daniel Șerbănescu \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n" +"%100<=19) ? 1 : 2);\n" +"X-Generator: Poedit 2.2.3\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "incluziune greÈ™ită în interval" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: nu se poate atribui către index ne-numeric" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: lipseÈ™te separatorul două puncte" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "%s: comandă negăsită" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "„%sâ€: nume alias nevalid" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "sfârÈ™itul de linie nu este activat" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "" + +#: builtins/bind.def:252 +#, fuzzy, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, fuzzy, c-format +msgid "`%s': unknown function name" +msgstr "%s: funcÈ›ie doar în citire (readonly)" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s nu este asociat niciunei taste.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s poate fi invocat prin " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, fuzzy, c-format +msgid "`%s': cannot unbind" +msgstr "%s: comandă negăsită" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "contor buclă" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "are sens numai într-o buclă „forâ€, „while†sau „untilâ€" + +#: builtins/caller.def:136 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME nu este stabilit" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "prea mulÈ›i parametri" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "director null" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD nu este stabilit" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "linia %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "avertizare: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: utilizare: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: opÈ›iunea necesită un parametru" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: argument numeric necesar" + +#: builtins/common.c:207 +#, fuzzy, c-format +msgid "%s: not found" +msgstr "%s: comandă negăsită" + +#: builtins/common.c:216 shell.c:857 +#, fuzzy, c-format +msgid "%s: invalid option" +msgstr "%c%c: opÈ›iune invalidă" + +#: builtins/common.c:223 +#, fuzzy, c-format +msgid "%s: invalid option name" +msgstr "%c%c: opÈ›iune invalidă" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, fuzzy, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s' nu este un identificator valid" + +#: builtins/common.c:240 +#, fuzzy +msgid "invalid octal number" +msgstr "număr de semnal invalid" + +#: builtins/common.c:242 +#, fuzzy +msgid "invalid hex number" +msgstr "număr de semnal invalid" + +#: builtins/common.c:244 expr.c:1569 +#, fuzzy +msgid "invalid number" +msgstr "număr de semnal invalid" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: variabilă doar în citire" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "" + +#: builtins/common.c:274 builtins/common.c:276 +#, fuzzy +msgid "argument" +msgstr "se aÈ™teaptă parametru" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:292 +#, fuzzy, c-format +msgid "%s: no job control" +msgstr "nici un control de job în acest shell" + +#: builtins/common.c:294 +#, fuzzy +msgid "no job control" +msgstr "nici un control de job în acest shell" + +#: builtins/common.c:304 +#, fuzzy, c-format +msgid "%s: restricted" +msgstr "%s: jobul a fost terminat" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "" + +#: builtins/common.c:323 +#, fuzzy, c-format +msgid "write error: %s" +msgstr "eroare de legătură (pipe): %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "" + +#: builtins/common.c:701 builtins/common.c:703 +#, fuzzy, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: Redirectare ambiguă" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, fuzzy, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, fuzzy, c-format +msgid "%s: cannot unset" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "" + +#: builtins/declare.def:134 +#, fuzzy +msgid "can only be used in a function" +msgstr "poate fi folosit doar într-o funcÈ›ie, È™i face ca variabila NUME" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funcÈ›ie doar în citire (readonly)" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, fuzzy, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "$%s: nu se poate asigna în acest mod" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "" + +#: builtins/enable.def:343 +#, fuzzy, c-format +msgid "cannot open shared object %s: %s" +msgstr "nu pot deschide legătura numită %s pentru %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "" + +#: builtins/enable.def:388 +#, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "" + +#: builtins/enable.def:543 +#, fuzzy, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: este director" + +#: builtins/evalfile.c:144 +#, fuzzy, c-format +msgid "%s: not a regular file" +msgstr "%s: nu se poate executa fiÈ™ierul binar" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: nu se poate executa fiÈ™ierul binar" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, fuzzy, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "deautentificare\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +#, fuzzy +msgid "no command found" +msgstr "%s: comandă negăsită" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "" + +#: builtins/fc.def:444 +#, fuzzy, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opÈ›iune ilegală -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opÈ›iunea necesită un parametru: -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "potriviri\tcomandă\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" + +#: builtins/help.def:224 +#, fuzzy, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "" + +#: builtins/history.def:451 +#, fuzzy, c-format +msgid "%s: history expansion failed" +msgstr "%s: se aÈ™teaptă expresie întreagă (integer)" + +#: builtins/inlib.def:71 +#, fuzzy, c-format +msgid "%s: inlib failed" +msgstr "%s: variabilă fără limită" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "" + +#: builtins/kill.def:274 +#, fuzzy +msgid "Unknown error" +msgstr "Eroare necunoscută %d" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "se aÈ™teaptă expresie" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "" + +#: builtins/mapfile.def:299 +#, fuzzy, c-format +msgid "%s: invalid array origin" +msgstr "%s:subscriere interval invalid" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "niciun alt director" + +#: builtins/pushd.def:360 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s necesită un parametru" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "" + +#: builtins/read.def:755 +#, fuzzy, c-format +msgid "read error: %d: %s" +msgstr "eroare de legătură (pipe): %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" + +#: builtins/set.def:869 +#, fuzzy +msgid "cannot simultaneously unset a function and a variable" +msgstr "poate fi folosit doar într-o funcÈ›ie, È™i face ca variabila NUME" + +#: builtins/set.def:966 +#, fuzzy, c-format +msgid "%s: not an array variable" +msgstr "%s: variabilă fără limită" + +#: builtins/setattr.def:189 +#, fuzzy, c-format +msgid "%s: not a function" +msgstr "%s: funcÈ›ie doar în citire (readonly)" + +#: builtins/setattr.def:194 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/shift.def:72 builtins/shift.def:79 +#, fuzzy +msgid "shift count" +msgstr "shift [n]" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "" + +#: builtins/source.def:154 +#, fuzzy, c-format +msgid "%s: file not found" +msgstr "%s: comandă negăsită" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "nu se poate suspenda un shell de autentificare" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s este o funcÈ›ie\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "" + +#: builtins/ulimit.def:426 +#, fuzzy, c-format +msgid "`%c': bad command" +msgstr "%c%c: opÈ›iune invalidă" + +#: builtins/ulimit.def:455 +#, fuzzy, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/ulimit.def:481 +#, fuzzy +msgid "limit" +msgstr "limită CPU" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, fuzzy, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/umask.def:115 +#, fuzzy +msgid "octal number" +msgstr "număr de semnal invalid" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr "" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "ultima comandă: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "" + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:462 +msgid "unknown command error" +msgstr "eroare de comandă necunoscută" + +#: error.c:463 +msgid "bad command type" +msgstr "tip rău de comandă" + +#: error.c:464 +#, fuzzy +msgid "bad connector" +msgstr "conector greÈ™it `%d'" + +#: error.c:465 +msgid "bad jump" +msgstr "salt rău" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variabilă fără limită" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aa expirat aÈ™teptând introducerea datelor: auto-logout\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +#, fuzzy +msgid "pipe error" +msgstr "eroare de legătură (pipe): %s" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: comandă negăsită" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "" + +#: execute_cmd.c:5854 +#, fuzzy, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: este director" + +#: execute_cmd.c:5891 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: nu se poate executa fiÈ™ierul binar" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "" + +#: execute_cmd.c:6029 +#, fuzzy, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "nu se poate duplica fd %d în fd 0: %s" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "nivel de recursivitate al expresiei depășit" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "stivă recursivă prea puÈ›in folosită (underflow)" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "eroare de sintaxă în expresie" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "s-a încercat asignare către non-variabilă" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "eroare de sintaxă în atribuirea variabilei" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "împărÈ›ire la 0" + +#: expr.c:592 +#, fuzzy +msgid "bug: bad expassign token" +msgstr "bug: identificator(token) expassign greÈ™it %d" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "`:' aÈ™teptat după expresie condiÈ›ională" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "`)' lipsă" + +#: expr.c:1107 expr.c:1487 +#, fuzzy +msgid "syntax error: operand expected" +msgstr "eroare de sintaxă: sfârÈ™it de fiÈ™ier neaÈ™teptat" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (identificatorul erorii este „%sâ€)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "" + +#: expr.c:1582 +msgid "invalid integer constant" +msgstr "" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "valoare prea mare pentru bază" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: eroare în expresie\n" + +#: general.c:70 +#, fuzzy +msgid "getcwd: cannot access parent directories" +msgstr "getwd: nu s-au putut accesa directoarele părinte" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "" + +#: input.c:266 +#, fuzzy, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"nu se poate aloca descriptor de fiÈ™ier nou pentru inputul bash din fd %d: %s" + +#: input.c:274 +#, fuzzy, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "check_bash_input: buffer deja existent pentru fd nou %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: nu există un asemenea pid" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Semnal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Finalizat" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Stopat" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Oprit(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "ÃŽn rulare" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Finalizat(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "IeÈ™ire %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Stare necunoscută" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(core dumped) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid copil (de la%ld la %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, fuzzy, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "aÈ™teptaÈ›i: pid-ul %d nu este rezultat(child) al acestui shell" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: nu s-a putut crea: %s" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: jobul a fost terminat" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "" + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (core dumped)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd actual: %s)\n" + +#: jobs.c:4391 +#, fuzzy +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_jobs: getpgrp eÈ™uat: %s" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4463 +#, fuzzy +msgid "initialize_job_control: line discipline" +msgstr "initialize_jobs: disciplină linie: %s" + +#: jobs.c:4473 +#, fuzzy +msgid "initialize_job_control: setpgid" +msgstr "initialize_jobs: getpgrp eÈ™uat: %s" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "nici un control de job în acest shell" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "necunoscut" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1001 +msgid "free: underflow detected; magic8 corrupted" +msgstr "" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" + +#: lib/malloc/malloc.c:1141 +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "" + +#: lib/sh/netopen.c:168 +#, fuzzy, c-format +msgid "%s: host unknown" +msgstr "necunoscut" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "AveÈ›i mail în $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "AveÈ›i mail nou în $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Mailul din %s a fost citit\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "eroare de sintaxă: expresie aritmetică necesară" + +#: make_cmd.c:319 +#, fuzzy +msgid "syntax error: `;' unexpected" +msgstr "eroare de sintaxă: sfârÈ™it de fiÈ™ier neaÈ™teptat" + +#: make_cmd.c:320 +#, fuzzy, c-format +msgid "syntax error: `((%s))'" +msgstr "eroare de sintaxă" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tip de instrucÈ›iune greÈ™it %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "EOF neaÈ™teptat în căutare după potrivirea „%câ€" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "EOF neaÈ™teptat în căutare după „]]â€" + +#: parse.y:4701 +#, fuzzy, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "eroare de sintaxă neaÈ™teptată lângă `%s'" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "eroare de sintaxă în expresia condiÈ›ională" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "se aÈ™tepta „)â€" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "" + +#: parse.y:4865 +#, fuzzy, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "%s: se aÈ™teaptă operator binar" + +#: parse.y:4869 +#, fuzzy +msgid "conditional binary operator expected" +msgstr "%s: se aÈ™teaptă operator binar" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "" + +#: parse.y:4906 +#, fuzzy, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "`:' aÈ™teptat după expresie condiÈ›ională" + +#: parse.y:4909 +#, fuzzy, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "`:' aÈ™teptat după expresie condiÈ›ională" + +#: parse.y:4913 +#, fuzzy, c-format +msgid "unexpected token %d in conditional command" +msgstr "`:' aÈ™teptat după expresie condiÈ›ională" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "eroare de sintaxă neaÈ™teptată lângă `%s'" + +#: parse.y:6355 +#, fuzzy, c-format +msgid "syntax error near `%s'" +msgstr "eroare de sintaxă neaÈ™teptată lângă `%s'" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "eroare de sintaxă: sfârÈ™it de fiÈ™ier neaÈ™teptat" + +#: parse.y:6365 +msgid "syntax error" +msgstr "eroare de sintaxă" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "FolosiÈ›i \"%s\" pentru a părăsi shellul.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "EOF neaÈ™teptat în căutare după perechea lui „)â€" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: conector greÈ™itr `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "" + +#: redir.c:204 +#, fuzzy, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: Redirectare ambiguă" + +#: redir.c:208 +#, fuzzy, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: nu se poate accesa(clobber) fiÈ™ierul existent" + +#: redir.c:213 +#, fuzzy, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" + +#: redir.c:218 +#, fuzzy, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "nu pot face legătură (pipe) pentru substituÈ›ia procesului: %s" + +#: redir.c:222 +#, fuzzy, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: nu pot asigna listă membrului intervalului" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +#, fuzzy +msgid "redirection error: cannot duplicate fd" +msgstr "eroare de redirectare" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, fuzzy, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opÈ›iune invalidă" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: este director" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Nu am nici un nume!" + +#: shell.c:2035 +#, fuzzy, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU %s, versiunea %s\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Folosire:\t%s [GNU opÈ›iune lungă] [opÈ›iune] ...\n" +"\t%s [GNU opÈ›iune lungă] [opÈ›iune] fiÈ™ier script ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "OpÈ›iuni lungi GNU:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "OpÈ›iuni ale shell-ului:\n" + +#: shell.c:2043 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD sau -c comandă\t\t(doar invocaÈ›ie)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s sau -o opÈ›iune\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"ApăsaÈ›i `%s -c \"set-ajutor\"' pentru mai multe informaÈ›ii despre opÈ›iunile " +"shell-ului.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"ApăsaÈ›i `%s -c ajutor' pentru mai multe informaÈ›ii despre comenzile interne " +"ale shell-ului.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Semnal fals" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Deconectare" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "ÃŽntrerupere" + +#: siglist.c:58 +msgid "Quit" +msgstr "Părăsire" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "InstrucÈ›iune ilegală" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "InstrucÈ›iune ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "InstrucÈ›iune EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "ExcepÈ›ie virgulă mobilă" + +#: siglist.c:86 +msgid "Killed" +msgstr "Terminat(killed)" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Eroare de bus" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Eroare de segmentare (Segmentation fault)" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Apelare sistem invalidă" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Legătură(pipe) întreruptă" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Ceas alarmă" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Terminat" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "CondiÈ›ie IO urgentă" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Oprit (semnal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Continuare" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Succesor mort sau oprit" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Oprit (tty input)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Oprit (tty output)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O pregătit" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Limită CPU" + +#: siglist.c:154 +msgid "File limit" +msgstr "Limită fiÈ™ier" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarmă (virtual)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarmă (profil)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Fereastră schimbată" + +#: siglist.c:170 +msgid "Record lock" +msgstr "ReÈ›inere (lock) înregistrare" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Semnal utilizator 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Semnal utilizator 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "Date de intrare HFT în curs de rezolvare(pending)" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "probleme electrice iminente" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "crash de sistem iminent" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "migrare proces spre alt CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "eroare de programare" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "Mod monitor HFT acordat" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "Mod monitor HFT retras" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "Secvență de sunet HFT completată" + +#: siglist.c:214 +msgid "Information request" +msgstr "" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Semnal Necunoscut #%d" + +#: subst.c:1476 subst.c:1666 +#, fuzzy, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "substituÈ›ie invalidă: nu există '%s' în %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: nu pot asigna listă membrului intervalului" + +#: subst.c:5910 subst.c:5926 +#, fuzzy +msgid "cannot make pipe for process substitution" +msgstr "nu pot face legătură (pipe) pentru substituÈ›ia procesului: %s" + +#: subst.c:5985 +#, fuzzy +msgid "cannot make child for process substitution" +msgstr "nu pot crea un proces copil pentru substituirea procesului: %s" + +#: subst.c:6059 +#, fuzzy, c-format +msgid "cannot open named pipe %s for reading" +msgstr "nu pot deschide legătura numită %s pentru %s: %s" + +#: subst.c:6061 +#, fuzzy, c-format +msgid "cannot open named pipe %s for writing" +msgstr "nu pot deschide legătura numită %s pentru %s: %s" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "nu se poate duplica È›eava numită %s ca fd %d" + +#: subst.c:6213 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "substituÈ›ie invalidă: nu există ')' de final în %s" + +#: subst.c:6353 +#, fuzzy +msgid "cannot make pipe for command substitution" +msgstr "nu pot face legături(pipes) pentru substituÈ›ia de comenzi: %s" + +#: subst.c:6397 +#, fuzzy +msgid "cannot make child for command substitution" +msgstr "nu pot crea un copil pentru substituÈ›ia de comenzi: %s" + +#: subst.c:6423 +#, fuzzy +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: nu se poate duplica legătura (pipe) ca fd 1: %s" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "" + +#: subst.c:7013 subst.c:7177 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "%s: variabilă fără limită" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametru null sau nesetat" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametru null sau nesetat" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expresie subÈ™ir < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substituÈ›ie invalidă" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: nu se poate asigna în acest mod" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" + +#: subst.c:10367 +#, fuzzy, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "substituÈ›ie invalidă: nu există ')' de final în %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "" + +#: test.c:147 +msgid "argument expected" +msgstr "se aÈ™teaptă parametru" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: se aÈ™teaptă expresie întreagă (integer)" + +#: test.c:265 +msgid "`)' expected" +msgstr "se aÈ™teaptă `)'" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "se aÈ™teaptă `)', s-a primit %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: se aÈ™teaptă operator binar" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: se aÈ™teaptă operator unar" + +#: test.c:881 +msgid "missing `]'" +msgstr "lipseÈ™te ']'" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "eroare de sintaxă: sfârÈ™it de fiÈ™ier neaÈ™teptat" + +#: trap.c:220 +#, fuzzy +msgid "invalid signal number" +msgstr "număr de semnal invalid" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" + +#: trap.c:487 +#, fuzzy, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: Semnal invalid %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "eroare în importarea definiÈ›iei funcÈ›iei pentru '%s'" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "" + +#: variables.c:4771 +#, fuzzy, c-format +msgid "%s has null exportstr" +msgstr "%s: parametru null sau nesetat" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" + +#: version.c:86 version2.c:86 +#, fuzzy, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU %s, versiunea %s\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "" + +#: xmalloc.c:93 +#, fuzzy, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nu pot aloca %lu octeÈ›i (%lu octeÈ›i alocaÈ›i)" + +#: xmalloc.c:95 +#, fuzzy, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: nu s-a putut crea: %s" + +#: xmalloc.c:165 +#, fuzzy, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "xmalloc: nu pot aloca %lu octeÈ›i (%lu octeÈ›i alocaÈ›i)" + +#: xmalloc.c:167 +#, fuzzy, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nume[=valoare] ... ]" + +#: builtins.c:49 +#, fuzzy +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] [nume ...]" + +#: builtins.c:53 +#, fuzzy +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m keymap] [-f nume_fiÈ™ier] [-q nume] [-r keyseq] [keyseq:" +"funcÈ›ie readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:63 +#, fuzzy +msgid "caller [expr]" +msgstr "test [expr]" + +#: builtins.c:66 +#, fuzzy +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-PL] [dir]" + +#: builtins.c:68 +#, fuzzy +msgid "pwd [-LP]" +msgstr "pwd [-PL]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] comandă [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-afFrxi] [-p] nume[=valoare] ..." + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-afFrxi] [-p] nume[=valoare] ..." + +#: builtins.c:82 +#, fuzzy +msgid "local [option] name[=value] ..." +msgstr "local nume[=valoare] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +#, fuzzy +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-pnds] [-a] [-f nume_fiÈ™ier] [nume ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts optstring nume [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a nume] fiÈ™ier [redirectare ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +#, fuzzy +msgid "logout [n]" +msgstr "logout" + +#: builtins.c:105 +#, fuzzy +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e enume] [-nlr] [prim] [u8ltim] sau fc -s [pat=rep] [cmd]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:113 +#, fuzzy +msgid "bg [job_spec ...]" +msgstr "bg [job_spec]" + +#: builtins.c:116 +#, fuzzy +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-r] [-p nume_cale] [nume ...]" + +#: builtins.c:119 +#, fuzzy +msgid "help [-dms] [pattern ...]" +msgstr "help [tipar ...]" + +#: builtins.c:123 +#, fuzzy +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [n] sau history -awrn [nume_fiÈ™ier] sau history -ps arg [arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobspec ...] sau jobs -x comandă [args]" + +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [jobspec ...]" + +#: builtins.c:134 +#, fuzzy +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] [pid | job]... sau kill -l [sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +#, fuzzy +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o opÈ›iune] [arg ...]" + +#: builtins.c:144 +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [nume ...]" + +#: builtins.c:146 +#, fuzzy +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-nf] [nume ...] sau export -p" + +#: builtins.c:148 +#, fuzzy +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-anf] [nume ...] sau readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +#, fuzzy +msgid "source filename [arguments]" +msgstr "nume fiÈ™ier sursă" + +#: builtins.c:154 +#, fuzzy +msgid ". filename [arguments]" +msgstr ". nume fiÈ™ier" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +#, fuzzy +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [arg] [signal_spec] sau trap -l" + +#: builtins.c:168 +#, fuzzy +msgid "type [-afptP] name [name ...]" +msgstr "type [-apt] nume [nume ...]" + +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHacdfmstpnuv] [limită]" + +#: builtins.c:174 +#, fuzzy +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-S] [mod]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:181 +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [n]" + +#: builtins.c:184 +#, fuzzy +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NUME [în EXPRESIE ... ;] execută COMENZI; done" + +#: builtins.c:186 +#, fuzzy +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for NUME [în EXPRESIE ... ;] execută COMENZI; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NUME [în EXPRESIE ... ;] execută COMENZI; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case EXPRESIE în [TIPAR[[TIPAR]..) COMENZI ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMENZI; then COMENZI; [elif COMENZI; then COMENZI; ]... [ else " +"COMENZI; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMENZI; do COMENZI; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMENZI; do COMENZI; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "" + +#: builtins.c:202 +#, fuzzy +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function NUME { COMENZI ; } sau NUME () { COMENZI ; }" + +#: builtins.c:204 +#, fuzzy +msgid "{ COMMANDS ; }" +msgstr "{ COMENZI }" + +#: builtins.c:206 +#, fuzzy +msgid "job_spec [&]" +msgstr "fg [job_spec]" + +#: builtins.c:208 +#, fuzzy +msgid "(( expression ))" +msgstr "se aÈ™teaptă expresie" + +#: builtins.c:210 +#, fuzzy +msgid "[[ expression ]]" +msgstr "se aÈ™teaptă expresie" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variabile - Numele È™i înÈ›elesurile unor variabile din shell" + +#: builtins.c:215 +#, fuzzy +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [dir | +N | -N] [-n]" + +#: builtins.c:219 +#, fuzzy +msgid "popd [-n] [+N | -N]" +msgstr "popd [+N | -N] [-n]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +#, fuzzy +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o opÈ›iune lungă] nume_opt [nume_opt...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "" + +#: builtins.c:231 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" + +#: builtins.c:235 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "unset [-f] [-v] [nume ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" + +#: builtins.c:442 +#, fuzzy +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Nici un efect, comanda nu face nimic. Un cod de ieÈ™ire zero este returnat." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" + +#: builtins.c:490 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" + +#: builtins.c:652 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Ieste din shell.\n" +" \n" +" Iese din shell cu starea lui N. Dacă N este omis, starea de ieÈ™ire\n" +" este starea ultimei comenzi executate." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" + +#: builtins.c:1431 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" + +#: builtins.c:1502 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" + +#: builtins.c:1726 +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Returnează contextul apelului subrutină curent.\n" +#~ " \n" +#~ " Fără EXPR, returnează " + +#~ msgid "Unknown Signal #" +#~ msgstr "Semnal Necunoscut #" + +#~ msgid "Missing `}'" +#~ msgstr "`}' lipsă" + +#~ msgid "brace_expand> " +#~ msgstr "brace_expand> " + +#~ msgid "Attempt to free unknown command type `%d'.\n" +#~ msgstr "ÃŽncercare de eliberare(free) tip comandă necunoscută `%d'.\n" + +#~ msgid "Report this to %s\n" +#~ msgstr "RaportaÅ£i asta la %s\n" + +#~ msgid "Stopping myself..." +#~ msgstr "Mă opresc..." + +#~ msgid "Tell %s to fix this someday.\n" +#~ msgstr "SpuneÅ£i lui %s să repare asta într-o bun zi.\n" + +#~ msgid "execute_command: bad command type `%d'" +#~ msgstr "execute_command: tip de comandă greÅŸită `%d'" + +#~ msgid "real\t" +#~ msgstr "real\t" + +#~ msgid "user\t" +#~ msgstr "user\t" + +#~ msgid "sys\t" +#~ msgstr "sis\t" + +#~ msgid "" +#~ "real\t0m0.00s\n" +#~ "user\t0m0.00s\n" +#~ "sys\t0m0.00s\n" +#~ msgstr "" +#~ "real\t0m0.00s\n" +#~ "user\t0m0.00s\n" +#~ "sis\t0m0.00s\n" + +#~ msgid "cannot duplicate fd %d to fd 1: %s" +#~ msgstr "nu se poate duplica fd %d în fd 1: %s" + +#~ msgid "%s: output redirection restricted" +#~ msgstr "%s redirectare spre output limitată" + +#~ msgid "Out of memory!" +#~ msgstr "Memorie plină!" + +#~ msgid "You have already added item `%s'\n" +#~ msgstr "AÅ£i adăugat deja elementul `%s'\n" + +#~ msgid "You have entered %d (%d) items. The distribution is:\n" +#~ msgstr "AÅ£i introdus %d (%d) elemente. DistribuÅ£ia este:\n" + +#~ msgid "slot %3d: " +#~ msgstr "slot %3d: " + +#~ msgid "" +#~ msgstr "" + +#~ msgid "%s: bg background job?" +#~ msgstr "%s: bg job din fundal?" + +#~ msgid "" +#~ "Redirection instruction from yyparse () '%d' is\n" +#~ "out of range in make_redirection ()." +#~ msgstr "" +#~ "Redirectare instrucÅ£iune din yyparse () '%d' is\n" +#~ "în afara intervalului în make_redirection ()." + +#~ msgid "clean_simple_command () got a command with type %d." +#~ msgstr "clean_simple_command () a primit o comandă de tipul %d." + +#~ msgid "got errno %d while waiting for %d" +#~ msgstr "s-a primit errno %d în aÅŸteptarea lui %d" + +#~ msgid "syntax error near unexpected token `%c'" +#~ msgstr "eroare de sintaxă neaÅŸteptată lângă `%c'" + +#~ msgid "print_command: bad command type `%d'" +#~ msgstr "print_command: tip comandă greÅŸit `%d'" + +#~ msgid "cprintf: bad `%%' argument (%c)" +#~ msgstr "cprintf: parametru `%%' invalid (%c)" + +#~ msgid "option `%s' requires an argument" +#~ msgstr "opÅ£iunea `%s' necesită un parametru" + +#~ msgid "%s: unrecognized option" +#~ msgstr "%s: opÅ£iune necunoscută" + +#~ msgid "`-c' requires an argument" +#~ msgstr "`-c' necesită un parametru" + +#~ msgid "%s: cannot execute directories" +#~ msgstr "%s: directoarele nu se pot executa" + +#~ msgid "Bad code in sig.c: sigprocmask" +#~ msgstr "Cod invalid în sig.c: sigprocmask" + +#~ msgid "can't make pipes for process substitution: %s" +#~ msgstr "nu pot face legături (pipes) pentru substituÅ£ia procesului: %s" + +#~ msgid "reading" +#~ msgstr "în citire" + +#~ msgid "writing" +#~ msgstr "în scriere" + +#~ msgid "process substitution" +#~ msgstr "substituire de proces" + +#~ msgid "command substitution" +#~ msgstr "substituire de comenzi" + +#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" +#~ msgstr "" +#~ "Nu se poate redeschide legătura (pipe) către substituÅ£ia de comenzi (fd " +#~ "%d): %s" + +#~ msgid "$%c: unbound variable" +#~ msgstr "$%c: variabilă fără limită" + +#~ msgid "%s: bad arithmetic substitution" +#~ msgstr "%s: substituÅ£ie aritmetică greÅŸită" + +#~ msgid "-%s: binary operator expected" +#~ msgstr "-%s: se aÅŸteaptă operator binar" + +#~ msgid "%s[%s: bad subscript" +#~ msgstr "%s[%s: subsctipÅ£ie invalidă" + +#~ msgid "[%s: bad subscript" +#~ msgstr "[%s: subscripÅ£ie invalidă" + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: nu pot realoca %lu octeÅ£i (%lu octeÅ£i alocaÅ£i)" + +#~ msgid "digits occur in two different argv-elements.\n" +#~ msgstr "se regăsesc digiÅ£i în două elemente argv diferite.\n" + +#~ msgid "option %c\n" +#~ msgstr "opÅ£iunea %c\n" + +#~ msgid "option a\n" +#~ msgstr "opÅ£iunea a\n" + +#~ msgid "option b\n" +#~ msgstr "opÅ£iunea b\n" + +#~ msgid "option c with value `%s'\n" +#~ msgstr "opÅ£iunea c cu valoarea '%s'\n" + +#~ msgid "?? sh_getopt returned character code 0%o ??\n" +#~ msgstr "?? sh_getopt a returnat codul de caracter 0%o ??\n" + +#~ msgid "non-option ARGV-elements: " +#~ msgstr "elemente ARGV fără opÅ£iuni: " + +#~ msgid "%s: Unknown flag %s.\n" +#~ msgstr "%s: Marcaj (flag) necunoscut %s.\n" + +#~ msgid "Unknown directive `%s'" +#~ msgstr "Directivă necunoscută '%s'" + +#~ msgid "%s must be inside of a $BUILTIN block" +#~ msgstr "%s trebuie sa fie înăuntrul unui bloc $BUILTIN" + +#~ msgid "%s found before $END" +#~ msgstr "s-a găsit %s înainte de $END" + +#~ msgid "%s already has a function (%s)" +#~ msgstr "%s avea deja o funcÅ£ie (%s)" + +#~ msgid "%s already had a docname (%s)" +#~ msgstr "%s avea deja un docname (%s)" + +#~ msgid "%s already has short documentation (%s)" +#~ msgstr "%s are deja documentaÅ£ie scurtă (%s)" + +#~ msgid "%s already has a %s definition" +#~ msgstr "%s are deja o definiÅ£ie %s" + +#~ msgid "mkbuiltins: Out of virtual memory!\n" +#~ msgstr "mkbuiltins: Memorie virtuală plină!\n" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" +#~ msgstr "read [-r] [-p prompt] [-a interval] [-e] [nume ...]" + +#~ msgid "times" +#~ msgstr "ori" + +#~ msgid "%[DIGITS | WORD] [&]" +#~ msgstr "%[DIGIÅ¢I | CUVÂNT] [&]" + +#~ msgid "variables - Some variable names and meanings" +#~ msgstr "variabile - Câteva nume de variabile ÅŸi ce înseamnă" + +#~ msgid "`alias' with no arguments or with the -p option prints the list" +#~ msgstr "`alias' fără parametri sau cu opÅ£iunea -p printează lista" + +#~ msgid "of aliases in the form alias NAME=VALUE on standard output." +#~ msgstr "aliasurilor în forma alias NUME=VALOARE la ieÅŸirea standard" + +#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." +#~ msgstr "" +#~ "ÃŽn caz contrar, aliasul este definit pentru fiecare NUME a cărui VALOARE " +#~ "este dată." + +#~ msgid "A trailing space in VALUE causes the next word to be checked for" +#~ msgstr "" +#~ "Un spaÅ£iu la sfârÅŸit în VALOARE va face ca următorul cuvânt sa fie " +#~ "interogat de" + +#~ msgid "alias substitution when the alias is expanded. Alias returns" +#~ msgstr "substituÅ£ii de alias când aliasul este extins. Aliasul returnează" + +#~ msgid "true unless a NAME is given for which no alias has been defined." +#~ msgstr "" +#~ "adevărat în afară de cazul în care NUME nu este dat ÅŸi pentru care nu a " +#~ "fost definit nici un alias." + +#~ msgid "" +#~ "Remove NAMEs from the list of defined aliases. If the -a option is given," +#~ msgstr "" +#~ "Elimină NUME din lista de aliasuri definite. Dacă este dată opÅ£iunea -a," + +#~ msgid "then remove all alias definitions." +#~ msgstr "atunci ÅŸterge toate definiÅ£iile aliasurilor." + +#~ msgid "Bind a key sequence to a Readline function, or to a macro. The" +#~ msgstr "" +#~ "Leagă (bind) o secvenţă de taste de o funcÅ£ie Readline, sau de un macro. " + +#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" +#~ msgstr "" +#~ "Sintaxa este echivalentă cu cea întâlnită în ~/.inputrc, dar trebuie" + +#~ msgid "" +#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgstr "" +#~ "trimisă parametru singular: bind '\"\\C-x\\C-r\": re-read-init-file'." + +#~ msgid "Arguments we accept:" +#~ msgstr "Parametri acceptaÅ£i:" + +#~ msgid "" +#~ " -m keymap Use `keymap' as the keymap for the duration of this" +#~ msgstr "" +#~ " -m keymap FoloseÅŸte `keymap' ca ÅŸi mapare de taste pentru " +#~ "durata" + +#~ msgid " command. Acceptable keymap names are emacs," +#~ msgstr "" +#~ " acestei comenzi. Nume acceptate de keymaps sunt " +#~ "emacs," + +#~ msgid "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgstr "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," + +#~ msgid " vi-command, and vi-insert." +#~ msgstr " vi-command, ÅŸi vi-insert." + +#~ msgid " -l List names of functions." +#~ msgstr " -l Listează numele funcÅ£iilor." + +#~ msgid " -P List function names and bindings." +#~ msgstr "" +#~ " -P Listează numele funcÅ£iilor ÅŸi legăturile (bindings)." + +#~ msgid "" +#~ " -p List functions and bindings in a form that can be" +#~ msgstr "" +#~ " -p Listează funcÅ£iile ÅŸi legăturile (bindings) într-o " +#~ "formă care" + +#~ msgid " reused as input." +#~ msgstr " poate fi refolosită ca intrare(input)." + +#~ msgid " -r keyseq Remove the binding for KEYSEQ." +#~ msgstr " -r keyseq Elimină legăturile(bindings) pentru KEYSEQ." + +#~ msgid " -f filename Read key bindings from FILENAME." +#~ msgstr "" +#~ " -f nume_fiÅŸier CiteÅŸte legăturile (bindings) din NUME_FIÅžIER" + +#~ msgid "" +#~ " -q function-name Query about which keys invoke the named function." +#~ msgstr " -q nume_funcÅ£ie Verifică tastele care invocă funcÅ£ia numită." + +#~ msgid " -V List variable names and values" +#~ msgstr " -V Listează numele variabilelor ÅŸi valorile" + +#~ msgid "" +#~ " -v List variable names and values in a form that can" +#~ msgstr "" +#~ " -v Listează numele variabilelor ÅŸi valorile într-o " +#~ "formă care poate" + +#~ msgid " be reused as input." +#~ msgstr " fi reutilizată ca date de intrare." + +#~ msgid "" +#~ " -S List key sequences that invoke macros and their " +#~ "values" +#~ msgstr "" +#~ " -S Listează secvenÅ£ele de taste care invocă macrourile " +#~ "ÅŸi valorile lor" + +#~ msgid "" +#~ " -s List key sequences that invoke macros and their " +#~ "values in" +#~ msgstr "" +#~ " -s Listează secvenÅ£ele de taste care invocă macrourile " +#~ "ÅŸi valorile lorîntr-o" + +#~ msgid " a form that can be reused as input." +#~ msgstr "" +#~ " formă care poate fi reutilizată ca date de intrare." + +#~ msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," +#~ msgstr "" +#~ "IeÅŸire dintr-un ciclu FOR, WHILE sau UNTIL. Daca N este specificat," + +#~ msgid "break N levels." +#~ msgstr "întrerupe N nivele" + +#~ msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." +#~ msgstr "" +#~ "Continuă urmatoarea iteraÅ£ie din ciclul închis FOR, WHILE sau UNTIL." + +#~ msgid "If N is specified, resume at the N-th enclosing loop." +#~ msgstr "Dacă N este specificat, continuă al N-ulea ciclu închis." + +#~ msgid "Run a shell builtin. This is useful when you wish to rename a" +#~ msgstr "" +#~ "Rulează un shell intern. Aceasta este folositoare când doriÅ£i sa " +#~ "redenumiÅ£i " + +#~ msgid "shell builtin to be a function, but need the functionality of the" +#~ msgstr "un shell intern drept funcÅ£ie, dar aveÅ£i nevoie de funcÅ£ionalitatea" + +#~ msgid "builtin within the function itself." +#~ msgstr "funcÅ£iei interne de asemenea." + +#~ msgid "Change the current directory to DIR. The variable $HOME is the" +#~ msgstr "Schimbă directorul curent cu DIR. Variabila $HOME este" + +#~ msgid "default DIR. The variable $CDPATH defines the search path for" +#~ msgstr "DIR implicit. Variabila $CDPATH defineÅŸte calea de căutare pentru" + +#~ msgid "the directory containing DIR. Alternative directory names in CDPATH" +#~ msgstr "" +#~ "directorul care conÅ£ine DIR. Numele de directoare alternative în CDPATH" + +#~ msgid "are separated by a colon (:). A null directory name is the same as" +#~ msgstr "" +#~ "sunt separate de două puncte (:). Un nume de director nul reprezintă " +#~ "referire la" + +#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," +#~ msgstr "directorul curent, i.e. `.'. Dacă DIR începe cu un slash (/)," + +#~ msgid "then $CDPATH is not used. If the directory is not found, and the" +#~ msgstr "atunci $CDPATH nu este folosită. Dacă directorul nu este găsit, ÅŸi" + +#~ msgid "shell option `cdable_vars' is set, then try the word as a variable" +#~ msgstr "" +#~ "opÅ£iunea de shell `cdable_vars' este setată, atunci cuvântul este un nume" + +#~ msgid "name. If that variable has a value, then cd to the value of that" +#~ msgstr "" +#~ "de variabilă. Dacă variabila are o valoare, se va face cd pe valoarea " +#~ "acelei" + +#~ msgid "" +#~ "variable. The -P option says to use the physical directory structure" +#~ msgstr "" +#~ "variabile. OpÅ£iunea -P trimite la folosirea structurii fizice de " +#~ "directoare" + +#~ msgid "" +#~ "instead of following symbolic links; the -L option forces symbolic links" +#~ msgstr "" +#~ "în loc de urmarea legăturilor simbolice; opÅ£iunea -L forÅ£ează urmarea" + +#~ msgid "to be followed." +#~ msgstr "legăturilor simbolice." + +#~ msgid "Print the current working directory. With the -P option, pwd prints" +#~ msgstr "AfiÅŸează directorul de lucru curent. Cu opÅ£iunea -P, pwd afiÅŸează" + +#~ msgid "the physical directory, without any symbolic links; the -L option" +#~ msgstr "directoarele simbolice, fără nici o legătură simbolică; opÅ£iunea -L" + +#~ msgid "makes pwd follow symbolic links." +#~ msgstr "face ca pwd să urmeze legăturile simbolice." + +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +#~ msgstr "" +#~ "Rulează COMANDA cu PARAMETRI ignorând funcÅ£iile shellului. Dacă aveÅ£i" + +#~ msgid "function called `ls', and you wish to call the command `ls', you can" +#~ msgstr "" +#~ "o funcÅ£ie a shellului care se cheamă `ls', ÅŸi doriÅ£i sa numiÅ£i comanda " +#~ "`ls', puteÅ£i" + +#~ msgid "" +#~ "say \"command ls\". If the -p option is given, a default value is used" +#~ msgstr "" +#~ "spune \"command ls\". Daca este dată opÅ£iunea -p este folosită o valoare " +#~ "implicită" + +#~ msgid "" +#~ "for PATH that is guaranteed to find all of the standard utilities. If" +#~ msgstr "" +#~ "pentru CALE care e garantată să găsească toate utilitarele standard. Dacă" + +#~ msgid "" +#~ "the -V or -v option is given, a string is printed describing COMMAND." +#~ msgstr "" +#~ "sunt date opÅ£iunile -V sau -v, este tipărit un ÅŸir care descrie COMANDA." + +#~ msgid "The -V option produces a more verbose description." +#~ msgstr "OpÅ£iunea -V produce o descriere mult mai detaliată." + +#~ msgid "Declare variables and/or give them attributes. If no NAMEs are" +#~ msgstr "" +#~ "Declară variabile ÅŸi/sau le dă atribute. Dacă nu e dat nici un NUME," + +#~ msgid "given, then display the values of variables instead. The -p option" +#~ msgstr "va afiÅŸa în loc valorile variabilelor. OpÅ£iunea -p" + +#~ msgid "will display the attributes and values of each NAME." +#~ msgstr "va afiÅŸa atributele ÅŸi valorile fiecărui NUME." + +#~ msgid "The flags are:" +#~ msgstr "Marcajele(flags) sunt:" + +#~ msgid " -a\tto make NAMEs arrays (if supported)" +#~ msgstr " -a\tpentru a crea intervale de NUME (dacă este suportat)" + +#~ msgid " -f\tto select from among function names only" +#~ msgstr " -f\tpentru a selecta doar prin numele funcÅ£iilor" + +#~ msgid " -F\tto display function names without definitions" +#~ msgstr " -F\tpentru a afiÅŸa numele funcÅ£iilor fără definiÅ£ii" + +#~ msgid " -r\tto make NAMEs readonly" +#~ msgstr " -r\tpentru a face NUME doar în citire (readonly)" + +#~ msgid " -x\tto make NAMEs export" +#~ msgstr " -x\tpentru a exporta NUME" + +#~ msgid " -i\tto make NAMEs have the `integer' attribute set" +#~ msgstr " -i\tpentru ca NUME să aibe setat atributul de `integer'" + +#~ msgid "Variables with the integer attribute have arithmetic evaluation (see" +#~ msgstr "Variabilele cu atributul integer au evaluarea aritmetică (vezi" + +#~ msgid "`let') done when the variable is assigned to." +#~ msgstr "`let') efectuată când îi este atribuită variabila." + +#~ msgid "When displaying values of variables, -f displays a function's name" +#~ msgstr "La afiÅŸarea valorilor variabilelor, -f afiÅŸează numele funcÅ£iei" + +#~ msgid "and definition. The -F option restricts the display to function" +#~ msgstr "ÅŸi definiÅ£ia. OpÅ£iunea -F restrânge afiÅŸarea doar la" + +#~ msgid "name only." +#~ msgstr "numele funcÅ£iei." + +#~ msgid "" +#~ "Using `+' instead of `-' turns off the given attribute instead. When" +#~ msgstr "Folosirea `+' în locul `-' dezactivează atributul dat. Când" + +#~ msgid "used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "" +#~ "este folosit într-o funcÅ£ie, se consideră NUME locale, ca ÅŸi în comanda " +#~ "`local'." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "ÃŽnvechit. Vezi `declare'." + +#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" +#~ msgstr "" +#~ "Creează o variabilă locală denumită NUME, ÅŸi îi atribuie VALOARE. LOCAL" + +#~ msgid "have a visible scope restricted to that function and its children." +#~ msgstr "" +#~ "să aibă un domeniu vizibil restrâns la acea funcÅ£ie ÅŸi copilul (children) " +#~ "ei." + +#~ msgid "Output the ARGs. If -n is specified, the trailing newline is" +#~ msgstr "" +#~ "AfiÅŸează (output) ARGumenetele. Dacă -n este specificat,sfârÅŸitul de " +#~ "linie este" + +#~ msgid "suppressed. If the -e option is given, interpretation of the" +#~ msgstr "suprimat. Dacă este dată opÅ£iunea -e, interpretarea" + +#~ msgid "following backslash-escaped characters is turned on:" +#~ msgstr "" +#~ "următorului caracterelor speciale (backslash-escaped) este activată:" + +#~ msgid "\t\\a\talert (bell)" +#~ msgstr "\t\\a\talertă (clopoÅ£el (bell))" + +#~ msgid "\t\\b\tbackspace" +#~ msgstr "\t\\b\tbackspace" + +#~ msgid "\t\\c\tsuppress trailing newline" +#~ msgstr "\t\\c\tsuprimă sfârÅŸitul de linie" + +#~ msgid "\t\\E\tescape character" +#~ msgstr "\t\\E\tcaracterul escape" + +#~ msgid "\t\\f\tform feed" +#~ msgstr "\t\\f\ttrecere la început de linie (form feed)" + +#~ msgid "\t\\n\tnew line" +#~ msgstr "\t\\n\tlinie nouă" + +#~ msgid "\t\\r\tcarriage return" +#~ msgstr "\t\\r\tretur de car (carriage return)" + +#~ msgid "\t\\t\thorizontal tab" +#~ msgstr "\t\\t\ttab orizontal" + +#~ msgid "\t\\v\tvertical tab" +#~ msgstr "\t\\v\ttab vertical" + +#~ msgid "\t\\\\\tbackslash" +#~ msgstr "\t\\\\\tbackslash" + +#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." +#~ msgstr "\t\\num\tcaracterul al cărui cod ASCII este NUM (octal)." + +#~ msgid "" +#~ "You can explicitly turn off the interpretation of the above characters" +#~ msgstr "PuteÅ£i dezactiva explicit interpretarea caracterelor de mai sus" + +#~ msgid "with the -E option." +#~ msgstr "cu ajutorul opÅ£iunii -E." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "AfiÅŸează (output) ARGumentele. Dacă este specificat -n, sfârÅŸitul de " +#~ "linie este suprimat." + +#~ msgid "Enable and disable builtin shell commands. This allows" +#~ msgstr "" +#~ "Activează ÅŸi dezactivează comenzile interne ale shell-ului. Aceasta vă" + +#~ msgid "you to use a disk command which has the same name as a shell" +#~ msgstr "" +#~ "permite utilizarea unei comenzi disk care să aibă acelaÅŸi nume ca ÅŸi cea " + +#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" +#~ msgstr "" +#~ "internă a shell-ului. Dacă este folosit -n, NUME devine dezactivat; în " +#~ "caz contrar" + +#~ msgid "NAMEs are enabled. For example, to use the `test' found on your" +#~ msgstr "" +#~ "NUME este activat. De exemplu, pentru a folosi funcÅ£ia `test; aflată în" + +#~ msgid "path instead of the shell builtin version, type `enable -n test'." +#~ msgstr "" +#~ "calea(path) dumneavoastră în loc de versiunea internă, tastaÅ£i `enable -n " +#~ "test'." + +#~ msgid "On systems supporting dynamic loading, the -f option may be used" +#~ msgstr "" +#~ "Pe sistemele care suportă încărcarea dinamică, opÅ£iunea -f poate fi " +#~ "folosită" + +#~ msgid "to load new builtins from the shared object FILENAME. The -d" +#~ msgstr "" +#~ "pentru a încărca noile elemente (builtins) din obiectul distribuit " +#~ "(shared object) NUME_FIÅžIER. OpÅ£iunea -d" + +#~ msgid "option will delete a builtin previously loaded with -f. If no" +#~ msgstr "va ÅŸterge un element (builtin) deja încărcat cu -f. Dacă nu" + +#~ msgid "non-option names are given, or the -p option is supplied, a list" +#~ msgstr "" +#~ "este dat nici un nume non-opÅ£iune, sau este prezentă opÅ£iunea -p, o listă" + +#~ msgid "of builtins is printed. The -a option means to print every builtin" +#~ msgstr "" +#~ "de elemente(builtins) este tipărită. OpÅ£iunea -a înseamnă tipărirea " +#~ "fiecărui " + +#~ msgid "with an indication of whether or not it is enabled. The -s option" +#~ msgstr "" +#~ "element(builtin) cu o indicaÅ£ie dacă este sau nu activ. OpÅ£iunea -s" + +#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" +#~ msgstr "" +#~ "restricÅ£ionează output-ul la elementele(builtins) `speciale' Posix 2. " +#~ "OpÅ£iunea" + +#~ msgid "option displays a list of all disabled builtins." +#~ msgstr "-n afiÅŸează o listă a tuturor elementelor(builtins) inactive." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "CiteÅŸte ARGumente ca input al shell-ului ÅŸi execută comanda(comenzile) " +#~ "rezultată(e)." + +#~ msgid "Getopts is used by shell procedures to parse positional parameters." +#~ msgstr "" +#~ "Getopts este folosit de procedurile de shell pentru a analiza(parse) " +#~ "parametrii poziÅ£ionali." + +#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" +#~ msgstr "" +#~ "OPTSTRING conÅ£ine literele optiunilor care vor fi recunoscute; dacă o " +#~ "literă" + +#~ msgid "is followed by a colon, the option is expected to have an argument," +#~ msgstr "e urmată de două puncte, opÅ£iunea va trebui să aibă un parametru," + +#~ msgid "which should be separated from it by white space." +#~ msgstr "care va fi separat de aceasta printr-un spaÅ£iu." + +#~ msgid "Each time it is invoked, getopts will place the next option in the" +#~ msgstr "" +#~ "De fiecare dată când este invocat, getopts va pune următoarea opÅ£iune în" + +#~ msgid "shell variable $name, initializing name if it does not exist, and" +#~ msgstr "variabile de shell $name, iniÅ£ializând name dacă nu există, ÅŸi" + +#~ msgid "the index of the next argument to be processed into the shell" +#~ msgstr "indexul următorilor parametri care vor fi procesaÅ£i în variabila" + +#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" +#~ msgstr "" +#~ "de shell OPTIND. OPTIND este iniÅ£ializată cu 1 de fiecare dată când " +#~ "shellul sau" + +#~ msgid "a shell script is invoked. When an option requires an argument," +#~ msgstr "" +#~ "un script al shellului este invocat. Când opÅ£iunea necesită un parametru," + +#~ msgid "getopts places that argument into the shell variable OPTARG." +#~ msgstr "getopts plasează acest parametru în variabila de shell OPTARG." + +#~ msgid "getopts reports errors in one of two ways. If the first character" +#~ msgstr "getopts raportează erori în două feluri. Dacă primul caracter" + +#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" +#~ msgstr "" +#~ "al OPTSTRING este 'două puncte', getopts va folosi raportarea " +#~ "silenÅ£ioasă. ÃŽn" + +#~ msgid "this mode, no error messages are printed. If an illegal option is" +#~ msgstr "" +#~ "acest mod, nici un mesaj de eroare nu este tipărit. Dacă o opÅ£iune " +#~ "ilegală este" + +#~ msgid "seen, getopts places the option character found into OPTARG. If a" +#~ msgstr "întâlnită, getopts plasează caracterul opÅ£iunii în OPTARG. Dacă un" + +#~ msgid "required argument is not found, getopts places a ':' into NAME and" +#~ msgstr "parametru necesar nu este întâlnit, getopts pune ':' la NUME ÅŸi" + +#~ msgid "sets OPTARG to the option character found. If getopts is not in" +#~ msgstr "" +#~ "setează OPTARG la caracterul întâlnit al opÅ£iunii. Dacă getopts nu este " +#~ "în" + +#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" +#~ msgstr "" +#~ "modul silenÅ£ios, ÅŸi se întâlneÅŸte o opÅ£iune ilegală, getopts pune '?' în" + +#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" +#~ msgstr "" +#~ "NUME ÅŸi desetează OPTARG. Dacă o opÅ£iune necesară nu este întâlnită, un " +#~ "'?'" + +#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" +#~ msgstr "" +#~ "va fi pus în NUME, OPTARG va fi desetat, ÅŸi un mesaj de diagnosticare va " +#~ "fi" + +#~ msgid "printed." +#~ msgstr "afiÅŸat." + +#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" +#~ msgstr "Dacă variabila de shell OPTERR are valoarea 0, getopts dezactivează" + +#~ msgid "printing of error messages, even if the first character of" +#~ msgstr "afiÅŸarea mesajelor de eroare, chiar daca primul caracter al" + +#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." +#~ msgstr "OPTSTRING nu este 'două puncte'. OPTERR are implicit valoarea 1." + +#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" +#~ msgstr "" +#~ "Getopts analizează(parses) normal parametrii poziÅ£ionali ($0 - $9), dar " +#~ "dacă" + +#~ msgid "more arguments are given, they are parsed instead." +#~ msgstr "sunt daÅ£i mai mulÅ£i parametri, aceÅŸtia sunt analizaÅ£i în loc." + +#~ msgid "Exec FILE, replacing this shell with the specified program." +#~ msgstr "Exec FIÅžIER, înlocuind acest shell cu un program specificat." + +#~ msgid "If FILE is not specified, the redirections take effect in this" +#~ msgstr "Dacă FIÅžIER nu este specificat, redirectările au efect în acest" + +#~ msgid "shell. If the first argument is `-l', then place a dash in the" +#~ msgstr "" +#~ "shell. Dacă primul parametru este `-l', atunci se va plasa o liniuţă în" + +#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" +#~ msgstr "" +#~ "al zero-ulea arg pasat FIÅžIERului, cum face login-ul. Dacă opÅ£iunea `-c'" + +#~ msgid "is supplied, FILE is executed with a null environment. The `-a'" +#~ msgstr "este furnizată, FIÅžIER este executat cu un mediu null. OpÅ£iunea" + +#~ msgid "option means to make set argv[0] of the executed process to NAME." +#~ msgstr "'-a' înseamnă setarea argv[0] a procesului executat la NUME." + +#~ msgid "If the file cannot be executed and the shell is not interactive," +#~ msgstr "Dacă fiÅŸierul nu poate fi executat ÅŸi shell-ul nu este interactiv," + +#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" +#~ msgstr "atunci shell-ul iese, dacă variabila \"no_exit_on_failed_exec\"" + +#~ msgid "is set." +#~ msgstr "nu este setată." + +#~ msgid "is that of the last command executed." +#~ msgstr "este aceea a ultimei comenzi executate." + +#~ msgid "" +#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +#~ msgstr "" +#~ "PRIMUL ÅŸi ULTIMUL pot fi numere care specifică intervalul, sau PRIMUL " +#~ "poate fi" + +#~ msgid "string, which means the most recent command beginning with that" +#~ msgstr "" +#~ "un ÅŸir care reprezintă cea mai recentă comandă care începea cu acest" + +#~ msgid "string." +#~ msgstr "ÅŸir." + +#~ msgid "" +#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +#~ msgstr "" +#~ " -e ENUME selectează editorul de folosit. implicit este FCEDIT, apoi " +#~ "EDITOR," + +#~ msgid "" +#~ " then the editor which corresponds to the current readline editing" +#~ msgstr "" +#~ " apoi editorul care corespunde cu modul de editare al " +#~ "liniei(readline)" + +#~ msgid " mode, then vi." +#~ msgstr " curente, ÅŸi apoi vi." + +#~ msgid " -l means list lines instead of editing." +#~ msgstr " -l reprezintă afiÅŸarea liniilor în locul editării acestora." + +#~ msgid " -n means no line numbers listed." +#~ msgstr " -n înseamnă că nu vor fi afiÅŸate numerele liniilor." + +#~ msgid "" +#~ " -r means reverse the order of the lines (making it newest listed " +#~ "first)." +#~ msgstr "" +#~ " -r reprezintă inversarea ordinii liniilor (cele mai noi fiind listate " +#~ "primele)." + +#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" +#~ msgstr "Cu `fc -s [pat=rep ...] [comandă]' format, comanda este" + +#~ msgid "re-executed after the substitution OLD=NEW is performed." +#~ msgstr "reexecutată după ce s-a produs substituÅ£ia VECHI=NOU." + +#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" +#~ msgstr "Un alias folositor este r='fc -s', aÅŸa că tastând `r cc'" + +#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" +#~ msgstr "" +#~ "se rulează ultima comandă care începe cu `cc' ÅŸi tastând `r' se reexecută" + +#~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If" +#~ msgstr "" +#~ "Aduce JOB_SPEC în prim plan(foreground), ?ÅŸi îl face jobul curent. Dacă" + +#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" +#~ msgstr "" +#~ "JOB_SPEC nu este prezent, este folosită noÅ£iunea shell-ului despre jobul" + +#~ msgid "used." +#~ msgstr "curent." + +#~ msgid "Place JOB_SPEC in the background, as if it had been started with" +#~ msgstr "Pune JOB_SPEC în fundal(background), ca ÅŸi cum ar fi fost pornit cu" + +#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" +#~ msgstr "" +#~ "`&'. Dacă JOB_SPEC nu este prezent, va fi folosită noÅ£iunea shell-ului " +#~ "despre" + +#~ msgid "job is used." +#~ msgstr "jobul curent." + +#~ msgid "For each NAME, the full pathname of the command is determined and" +#~ msgstr "Pentru fiecare NUME, calea întreagă a comenzii este determinată ÅŸi" + +#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" +#~ msgstr "" +#~ "reÅ£inută. Daca este furnizată ÅŸi opÅ£iunea -p, CALE este folosită ca ÅŸi" + +#~ msgid "full pathname of NAME, and no path search is performed. The -r" +#~ msgstr "" +#~ "cale de căutare întreagă a NUMElui, ÅŸi nu se mai face căutare în calea " +#~ "curentă. " + +#~ msgid "option causes the shell to forget all remembered locations. If no" +#~ msgstr "" +#~ "OpÅ£iunea -r face ca shell-ul să uite toate locaÅ£iile reÅ£inute. Dacă nu" + +#~ msgid "" +#~ "arguments are given, information about remembered commands is displayed." +#~ msgstr "" +#~ "este furnizat nici un parametru sunt afiÅŸate informaÅ£ii despre comenzile " +#~ "reÅ£inute." + +#~ msgid "Display helpful information about builtin commands. If PATTERN is" +#~ msgstr "" +#~ "Se afiÅŸează informaÅ£ii folositoare despre comenzile interne. Dacă TIPAR " +#~ "este" + +#~ msgid "specified, gives detailed help on all commands matching PATTERN," +#~ msgstr "" +#~ "specificat, se dă ajutor detaliat pentru toate comenzile potrivite " +#~ "TIPARului," + +#~ msgid "otherwise a list of the builtins is printed." +#~ msgstr "în caz contrar se va tipări o listă a comenzilor interne." + +#~ msgid "Display the history list with line numbers. Lines listed with" +#~ msgstr "AfiÅŸează istoricul cu numerele liniilor. Liniile listate cu" + +#~ msgid "with a `*' have been modified. Argument of N says to list only" +#~ msgstr "un `*' au fost modificate. Parametrul N va aduce afiÅŸarea doar " + +#~ msgid "the last N lines. The -c option causes the history list to be" +#~ msgstr "a ultimelor N linii. OpÅ£iunea -c face ca lista istoricului să fie" + +#~ msgid "" +#~ "cleared by deleting all of the entries. The `-w' option writes out the" +#~ msgstr "ÅŸtearsă prin ÅŸtergerea tuturor intrărilor. OpÅ£iunea `-w' scrie" + +#~ msgid "" +#~ "current history to the history file; `-r' means to read the file and" +#~ msgstr "" +#~ "istoricul curent în fiÅŸierul de istoric; `-r' înseamnă citirea " +#~ "fiÅŸierului ÅŸi" + +#~ msgid "append the contents to the history list instead. `-a' means" +#~ msgstr "adăugare a conÅ£inutului listei istoricului în loc. `-a' înseamnă" + +#~ msgid "to append history lines from this session to the history file." +#~ msgstr "" +#~ "adăugare a liniilor istoricului din această sesiune la fiÅŸierul de " +#~ "istoric." + +#~ msgid "Argument `-n' means to read all history lines not already read" +#~ msgstr "" +#~ "Parametrul `-n' înseamnă citirea tuturor liniilor istoricului care nu " +#~ "sunt deja citite" + +#~ msgid "from the history file and append them to the history list. If" +#~ msgstr "" +#~ "din fiÅŸierul de istoric ÅŸi adăugarea lor la lista istoricului. Dacă" + +#~ msgid "FILENAME is given, then that is used as the history file else" +#~ msgstr "" +#~ "este dat NUME_FIÅžIER, acesta va fi utilizat ca fiÅŸier de istoric, în caz " +#~ "contrar" + +#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." +#~ msgstr "" +#~ "dacă $HISTFILE are valoare, aceasta este utilizată, altfel ~/." +#~ "bash_history." + +#~ msgid "If the -s option is supplied, the non-option ARGs are appended to" +#~ msgstr "" +#~ "Dacă este furnizată opÅ£iunea -s ARGumentele non-opÅ£iuni sunt adăugate la" + +#~ msgid "the history list as a single entry. The -p option means to perform" +#~ msgstr "lista istoricului ca intrări singure. OpÅ£iunea -p înseamnă" + +#~ msgid "" +#~ "history expansion on each ARG and display the result, without storing" +#~ msgstr "" +#~ "expandarea istoricului la fiecare ARGument ÅŸi afiÅŸarea rezultatului, fără " +#~ "a stoca" + +#~ msgid "anything in the history list." +#~ msgstr "nimic în lista istoricului." + +#~ msgid "Lists the active jobs. The -l option lists process id's in addition" +#~ msgstr "" +#~ "Listează joburile active. OpÅ£iunea -l listează id-urile proceselor în " +#~ "plus faţă de" + +#~ msgid "to the normal information; the -p option lists process id's only." +#~ msgstr "" +#~ "informaÅ£iile normale; optiunea -p listează doar id-urile proceselor." + +#~ msgid "" +#~ "If -n is given, only processes that have changed status since the last" +#~ msgstr "" +#~ "Dacă este dat -n,sunt afiÅŸate doar procesele care ÅŸi-au schimbat starea" + +#~ msgid "" +#~ "notification are printed. JOBSPEC restricts output to that job. The" +#~ msgstr "" +#~ "de la ultima notificare. JOBSPEC restricÅ£ionează output-ul spre acel " +#~ "job. " + +#~ msgid "-r and -s options restrict output to running and stopped jobs only," +#~ msgstr "" +#~ "OpÅ£iunile -r ÅŸi -s restricÅ£ionează output-ul doar spre joburile care " +#~ "rulează ÅŸi respectiv," + +#~ msgid "respectively. Without options, the status of all active jobs is" +#~ msgstr "care sunt stopate. Fără opÅ£iuni, este afiÅŸată starea joburilor" + +#~ msgid "" +#~ "printed. If -x is given, COMMAND is run after all job specifications" +#~ msgstr "" +#~ "active. Dacă este furnizat -x, COMANDÄ‚ este rulată după ce toate " +#~ "specificaÅ£iile" + +#~ msgid "" +#~ "that appear in ARGS have been replaced with the process ID of that job's" +#~ msgstr "" +#~ "joburilor care aparîn ARGS au fost înlocuite cu ID-urile proceselor a" + +#~ msgid "process group leader." +#~ msgstr "liderului de grup al proceselor acelui job(process group-leader)." + +#~ msgid "Removes each JOBSPEC argument from the table of active jobs." +#~ msgstr "Åžterge fiecare parametru JOBSPEC din tabela de joburi active." + +#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +#~ msgstr "Trimite proceselor numite de PID (sau JOB) semnalul SIGSPEC. Dacă" + +#~ msgid "" +#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +#~ msgstr "SIGSPEC nu este prezent, atunci se asumă SIGTERM. Parametrul `-l'" + +#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" +#~ msgstr "" +#~ "listează numele semnalelor; dacă urmează parametri după `-l' se asumă că" + +#~ msgid "be signal numbers for which names should be listed. Kill is a shell" +#~ msgstr "" +#~ "sunt numere de semnale pentru care numele ar trebui listate. Kill este " +#~ "comandă" + +#~ msgid "builtin for two reasons: it allows job IDs to be used instead of" +#~ msgstr "" +#~ "internă a sehll-ului din două motive: permite utilizarea ID-urilor de " +#~ "joburi în locul" + +#~ msgid "process IDs, and, if you have reached the limit on processes that" +#~ msgstr "ID-urilor de procese, ÅŸi, daca s-a ajuns la limita de procese care " + +#~ msgid "" +#~ "you can create, you don't have to start a process to kill another one." +#~ msgstr "" +#~ "se pot crea, nu mai e nevoie să se pornească un proces pentru a omorî " +#~ "altul." + +#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" +#~ msgstr "" +#~ "Fiecare ARGument este o expresie aritmetică ce va fi evaluată. Evaluarea" + +#~ msgid "is done in long integers with no check for overflow, though division" +#~ msgstr "" +#~ "se face în întregi lungi (long integers) fără verificări de overflow, " +#~ "totuÅŸi împărÅ£irea" + +#~ msgid "by 0 is trapped and flagged as an error. The following list of" +#~ msgstr "la 0 este reÅ£inută ÅŸi marcată ca eroare. Următoarea listă de" + +#~ msgid "operators is grouped into levels of equal-precedence operators." +#~ msgstr "operatori este grupată în nivele de operatori 'equal-precedence'." + +#~ msgid "The levels are listed in order of decreasing precedence." +#~ msgstr "Nivelele sunt listate în ordinea inversă a întâietăţii." + +#~ msgid "\t-, +\t\tunary minus, plus" +#~ msgstr "\t-, +\t\tplus, minus unar" + +#~ msgid "\t!, ~\t\tlogical and bitwise negation" +#~ msgstr "\t!, ~\t\tnegare logică" + +#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" +#~ msgstr "\t*, /, %\t\tînmulÅ£ire, împărÅ£ire, rest" + +#~ msgid "\t+, -\t\taddition, subtraction" +#~ msgstr "\t+, -\t\tadăugare, scădere" + +#~ msgid "\t<<, >>\t\tleft and right bitwise shifts" +#~ msgstr "\t<<, >>\t\toperaÅ£ii pe un bit la stânga ÅŸi la dreapta" + +#~ msgid "\t<=, >=, <, >\tcomparison" +#~ msgstr "\t<=, >=, <, >\tcomparare" + +#~ msgid "\t==, !=\t\tequality, inequality" +#~ msgstr "\t==, !=\t\tegalitate, inegalitate" + +#~ msgid "\t&\t\tbitwise AND" +#~ msgstr "\t&\t\tÅžI pe un bit" + +#~ msgid "\t^\t\tbitwise XOR" +#~ msgstr "\t^\t\tSAU exclusiv(XOR) pe un bit" + +#~ msgid "\t|\t\tbitwise OR" +#~ msgstr "\t|\t\tSAU pe un bit" + +#~ msgid "\t&&\t\tlogical AND" +#~ msgstr "\t&&\t\tÅžI logic" + +#~ msgid "\t||\t\tlogical OR" +#~ msgstr "\t||\t\tSAU logic" + +#~ msgid "\texpr ? expr : expr" +#~ msgstr "\texpr ? expr : expr" + +#~ msgid "\t\t\tconditional expression" +#~ msgstr "\t\t\texpresie condiÅ£ională" + +#~ msgid "\t=, *=, /=, %=," +#~ msgstr "\t=, *=, /=, %=," + +#~ msgid "\t+=, -=, <<=, >>=," +#~ msgstr "\t+=, -=, <<=, >>=," + +#~ msgid "\t&=, ^=, |=\tassignment" +#~ msgstr "\t&=, ^=, |=\tatribuire" + +#~ msgid "is replaced by its value (coerced to a long integer) within" +#~ msgstr "este înlocuit de valoarea sa (trunchiată la un întreg lung) într-o" + +#~ msgid "an expression. The variable need not have its integer attribute" +#~ msgstr "expresie. Variabila nu trebuie să aibă atributul său întreg" + +#~ msgid "turned on to be used in an expression." +#~ msgstr "activat pentru a fi folosită într-o expresie." + +#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" +#~ msgstr "Operatorii sunt evaluaÅ£i în ordinea întâietăţii. Subexpresiile din" + +#~ msgid "parentheses are evaluated first and may override the precedence" +#~ msgstr "paranteze sunt evaluate primele ÅŸi pot suprascrie regulile de" + +#~ msgid "rules above." +#~ msgstr "întâietate de mai sus." + +#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" +#~ msgstr "" +#~ "Dacă ultimul ARGument este evaluat la 0 let returnează 1; 0 este returnat" + +#~ msgid "otherwise." +#~ msgstr "în caz contrar." + +#~ msgid "One line is read from the standard input, and the first word is" +#~ msgstr "" +#~ "Linia este citită de la intrarea(input) standard, ÅŸi primul cuvânt este" + +#~ msgid "" +#~ "assigned to the first NAME, the second word to the second NAME, and so" +#~ msgstr "" +#~ "atribuit primului NUME, al doilea cuvânt celui de-al doilea NUME, ÅŸi aÅŸa" + +#~ msgid "" +#~ "on, with leftover words assigned to the last NAME. Only the characters" +#~ msgstr "" +#~ "mai departe, cu cele rămase atribuite ultimelor NUME. Doar caracterele" + +#~ msgid "found in $IFS are recognized as word delimiters. The return code is" +#~ msgstr "" +#~ "găsite în $IFS sunt recunoscute ca delimitatoare de cuvinte. Codul " +#~ "returnat este" + +#~ msgid "" +#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" +#~ msgstr "" +#~ "zero, cu excepÅ£ia cazului în care este întâlnit sfârÅŸit de fiÅŸier. Dacă " +#~ "nici un NUME" + +#~ msgid "" +#~ "line read is stored in the REPLY variable. If the -r option is given," +#~ msgstr "" +#~ "nu este furnizat, linia citită este stocată în variabila RÄ‚SPUNS. Dacă e " +#~ "dată " + +#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" +#~ msgstr "" +#~ "opÅ£iunea -r, aceasta înseamnă intrare `brută' ÅŸi caractere speciale " +#~ "dezactivate." + +#~ msgid "the `-p' option is supplied, the string supplied as an argument is" +#~ msgstr "Dacă este dată opÅ£iunea `-p', ÅŸirul furnizat ca argument este" + +#~ msgid "" +#~ "output without a trailing newline before attempting to read. If -a is" +#~ msgstr "trimis la output cu linie nouă înainte de citire. Dacă -a este" + +#~ msgid "" +#~ "supplied, the words read are assigned to sequential indices of ARRAY," +#~ msgstr "" +#~ "furnizată, cuvintele citite sunt atribuite indicilor secvenÅ£iali de " +#~ "INTERVAL," + +#~ msgid "starting at zero. If -e is supplied and the shell is interactive," +#~ msgstr "" +#~ "începând de la zero. Dacă -e este furnizat ÅŸi shell-ul este interactiv," + +#~ msgid "readline is used to obtain the line." +#~ msgstr "se va citi linia pentru obÅ£inerea acesteia." + +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N" +#~ msgstr "" +#~ "Cauzează terminarea unei funcÅ£ii cu valoarea specificată de N. Dacă N" + +#~ msgid "is omitted, the return status is that of the last command." +#~ msgstr "este omis, starea returnată va fi aceea a ultimei comenzi." + +#~ msgid " -a Mark variables which are modified or created for export." +#~ msgstr "" +#~ " -a Marchează variabilele de modificat sau create pentru export." + +#~ msgid " -b Notify of job termination immediately." +#~ msgstr " -b Notificare de terminare de job imediată." + +#~ msgid " -e Exit immediately if a command exits with a non-zero status." +#~ msgstr "" +#~ " -e Iese imediat dacă există o comandă cu stare diferită de zero." + +#~ msgid " -f Disable file name generation (globbing)." +#~ msgstr " -f Inhibă generarea de nume de fiÅŸiere (globalizare)." + +#~ msgid " -h Remember the location of commands as they are looked up." +#~ msgstr " -h ReÅ£ine locaÅ£iile comenzilor pe măsura verificării lor." + +#~ msgid "" +#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" +#~ msgstr "" +#~ " -i ForÅ£ează shell-ul să fie unul \"interactiv\". Shell-urile " +#~ "interactive" + +#~ msgid " always read `~/.bashrc' on startup." +#~ msgstr " citesc întotdeauna `~/.bashrc' la rulare." + +#~ msgid " -k All assignment arguments are placed in the environment for a" +#~ msgstr " -k ToÅ£i parametrii atribuirii sunt plasaÅ£i în mediu pentru o" + +#~ msgid " command, not just those that precede the command name." +#~ msgstr " comandă, nu doar cele care preced numele comenzii." + +#~ msgid " -m Job control is enabled." +#~ msgstr " -m Controlul job-urilor este activat." + +#~ msgid " -n Read commands but do not execute them." +#~ msgstr " -n CiteÅŸte comenzile, dar nu le execută." + +#~ msgid " -o option-name" +#~ msgstr " -o nume-opÅ£iune" + +#~ msgid " Set the variable corresponding to option-name:" +#~ msgstr " Setează variabila corespunzătoare numelui opÅ£iunii:" + +#~ msgid " allexport same as -a" +#~ msgstr " allexport la fel ca -a" + +#~ msgid " braceexpand same as -B" +#~ msgstr " braceexpand la fel ca -B" + +#~ msgid " emacs use an emacs-style line editing interface" +#~ msgstr "" +#~ " emacs foloseÅŸte o interfaţă de editare de linii stil " +#~ "emacs" + +#~ msgid " errexit same as -e" +#~ msgstr " errexit la fel ca -e" + +#~ msgid " hashall same as -h" +#~ msgstr " hashall la fel ca -h" + +#~ msgid " histexpand same as -H" +#~ msgstr " histexpand la fel ca -H" + +#~ msgid " ignoreeof the shell will not exit upon reading EOF" +#~ msgstr " ignoreeof shellul nu va ieÅŸi după citirea EOF" + +#~ msgid " interactive-comments" +#~ msgstr " interactive-comments" + +#~ msgid "" +#~ " allow comments to appear in interactive commands" +#~ msgstr "" +#~ " permite comentariilor să apară în comenzi " +#~ "interactive." + +#~ msgid " keyword same as -k" +#~ msgstr " keyword la fel ca -k" + +#~ msgid " monitor same as -m" +#~ msgstr " monitor sla fel ca -m" + +#~ msgid " noclobber same as -C" +#~ msgstr " noclobber la fel ca -C" + +#~ msgid " noexec same as -n" +#~ msgstr " noexec la fel ca -n" + +#~ msgid " noglob same as -f" +#~ msgstr " noglob la fel ca -f" + +#~ msgid " notify save as -b" +#~ msgstr " notify la fel ca -b" + +#~ msgid " nounset same as -u" +#~ msgstr " nounset la fel ca -u" + +#~ msgid " onecmd same as -t" +#~ msgstr " onecmd la fel ca -t" + +#~ msgid " physical same as -P" +#~ msgstr " physical la fel ca -P" + +#~ msgid "" +#~ " posix change the behavior of bash where the default" +#~ msgstr "" +#~ " posix schimbă comportamentul bash în care implicit" + +#~ msgid "" +#~ " operation differs from the 1003.2 standard to" +#~ msgstr "" +#~ " operaÅ£iile diferă de standardul 1003.2 pentru" + +#~ msgid " match the standard" +#~ msgstr " a se potrivi standardului" + +#~ msgid " privileged same as -p" +#~ msgstr " privileged la fel ca -p" + +#~ msgid " verbose same as -v" +#~ msgstr " verbose la fel ca -v" + +#~ msgid " vi use a vi-style line editing interface" +#~ msgstr "" +#~ " vi foloseÅŸte o interfaţă de editare de linii stil vi" + +#~ msgid " xtrace same as -x" +#~ msgstr " xtrace la fel ca -x" + +#~ msgid "" +#~ " -p Turned on whenever the real and effective user ids do not match." +#~ msgstr "" +#~ " -p Activat de fiecare dată când id-urile de user real ÅŸi efectiv nu " +#~ "se potrivesc." + +#~ msgid " Disables processing of the $ENV file and importing of shell" +#~ msgstr " Inhibă procesarea fiÅŸierului $ENV ÅŸi importarea funcÅ£iilor" + +#~ msgid "" +#~ " functions. Turning this option off causes the effective uid and" +#~ msgstr "" +#~ " shell-ului. Dezactivarea acestei opÅ£iuni face ca uid-ul ÅŸi gid-ul" + +#~ msgid " gid to be set to the real uid and gid." +#~ msgstr " efectiv să fie setate drept uid-ul ÅŸi gid-ul real." + +#~ msgid " -t Exit after reading and executing one command." +#~ msgstr " -t Iese după citirea ÅŸi executarea unei comenzi." + +#~ msgid " -u Treat unset variables as an error when substituting." +#~ msgstr " -u Tratează variabilele nesetate drept erori în substituÅ£ie." + +#~ msgid " -v Print shell input lines as they are read." +#~ msgstr "" +#~ " -v TipăreÅŸte liniile de intrare(input) ale shell-ului pe măsură ce " +#~ "sunt citite." + +#~ msgid " -x Print commands and their arguments as they are executed." +#~ msgstr "" +#~ " -x TipăreÅŸte comenzile ÅŸi parametrii acestora pe măsura executării." + +#~ msgid " -B the shell will perform brace expansion" +#~ msgstr " -B shell-ul va executa expansiune de legături(brace)" + +#~ msgid " -H Enable ! style history substitution. This flag is on" +#~ msgstr "" +#~ " -H Activează substituÅ£ia istoricului stil ! . Acest marcaj(flag) " +#~ "este activat" + +#~ msgid " by default." +#~ msgstr " în mod implicit." + +#~ msgid " -C If set, disallow existing regular files to be overwritten" +#~ msgstr "" +#~ " -C Dacă este setat, nu va permite suprascrierea fiÅŸierelor existente" + +#~ msgid " by redirection of output." +#~ msgstr " prin redirectarea output-ului." + +#~ msgid " -P If set, do not follow symbolic links when executing commands" +#~ msgstr "" +#~ " -P Dacă este setat, nu va urma legăturile simbolice în executarea " +#~ "comenzilor" + +#~ msgid " such as cd which change the current directory." +#~ msgstr " precum cd care schimbă directorul curent." + +#~ msgid "Using + rather than - causes these flags to be turned off. The" +#~ msgstr "" +#~ "Folosind + în locul lui - provoacă dezactivarea acestor marcaje(flags)." + +#~ msgid "flags can also be used upon invocation of the shell. The current" +#~ msgstr "" +#~ " Marcajele pot fi folosite de asemenea pentru invocarea shell-ului. " +#~ "Setul" + +#~ msgid "" +#~ "set of flags may be found in $-. The remaining n ARGs are positional" +#~ msgstr "" +#~ "curent de marcaje(flags) poate fi găsit în $-. ARGumentele n rămase sunt" + +#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" +#~ msgstr "" +#~ "parametri poziÅ£ionali ÅŸi sunt atribuiÅ£i, în ordine, lui $1, $2, .. $n. " +#~ "Dacă nu" + +#~ msgid "ARGs are given, all shell variables are printed." +#~ msgstr "" +#~ "este dat nici un ARGument, sunt tipărite toate variabilele shell-ului." + +#~ msgid "For each NAME, remove the corresponding variable or function. Given" +#~ msgstr "" +#~ "Pentru fiecare NUME, ÅŸterge variabila sau funcÅ£ia corespunzătoare. Dacă " +#~ "se" + +#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," +#~ msgstr "" +#~ "dă `-v', desetarea(unset) va acÅ£iona numai pe variabile. Dacă se dă `-f'," + +#~ msgid "unset will only act on functions. With neither flag, unset first" +#~ msgstr "" +#~ "desetarea(unset) va acÅ£iona numai pe funcÅ£ii. Fără nici un marcaj(flag), " + +#~ msgid "tries to unset a variable, and if that fails, then tries to unset a" +#~ msgstr "" +#~ "desetarea(unset) va încerca întâi pe variabile, ÅŸi dacă eÅŸueazăm va " +#~ "încerca" + +#~ msgid "" +#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" +#~ msgstr "" +#~ "pe o funcÅ£ie. Anumite variabile ( precum PATH ÅŸi IFS) nu pot fi " +#~ "desetate(unset);" + +#~ msgid "see readonly." +#~ msgstr "de asemenea, vedeÅ£i readonly." + +#~ msgid "NAMEs are marked for automatic export to the environment of" +#~ msgstr "NUMEle sunt marcate pentru exportul automat către mediul" + +#~ msgid "subsequently executed commands. If the -f option is given," +#~ msgstr "comenzilor executate ulterior. Dacă este dată opÅ£iunea -f," + +#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" +#~ msgstr "" +#~ "NUMEle se referă la funcÅ£ii. Dacă nu este dat nici un NUME, sau este dat " +#~ "`-p'`," + +#~ msgid "is given, a list of all names that are exported in this shell is" +#~ msgstr "" +#~ "va fi tipărită o listă a tuturor numelor care sunt exportate în acest" + +#~ msgid "printed. An argument of `-n' says to remove the export property" +#~ msgstr "shell. Parametrul `-n' va elimina proprietatea de export " + +#~ msgid "from subsequent NAMEs. An argument of `--' disables further option" +#~ msgstr "" +#~ "din NUMEle ulterioare. Parametrul `--' dezactivează procesarea opÅ£iunilor" + +#~ msgid "processing." +#~ msgstr "viitoare." + +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may" +#~ msgstr "NUMEle date sunt marcate readonly ÅŸi valorile acestor NUME nu poate" + +#~ msgid "not be changed by subsequent assignment. If the -f option is given," +#~ msgstr "fi schimbat de atribuiri ulterioare. Dacă este dată opÅ£iunea -f," + +#~ msgid "then functions corresponding to the NAMEs are so marked. If no" +#~ msgstr "atunci funcÅ£iile corespunzătoare NUMElor sunt marcate. Dacă nu" + +#~ msgid "" +#~ "arguments are given, or if `-p' is given, a list of all readonly names" +#~ msgstr "" +#~ "sunt furnizaÅ£idaÅ£ paramet, sau este dat parametrul `-p'` o listă de nume " +#~ "readonlyri " + +#~ msgid "" +#~ "is printed. An argument of `-n' says to remove the readonly property" +#~ msgstr "" +#~ "va fi tipărită. Parametrul `-n' va elimina proprietatea de readonly" + +#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" +#~ msgstr "" +#~ "pentru NUMEle ulterioare. OpÅ£iunea `-a' reprezintă tratarea fiecărui " +#~ "NUME ca" + +#~ msgid "an array variable. An argument of `--' disables further option" +#~ msgstr "o variabilă interval. Parametrul `--' dezactivează alte opÅ£iuni" + +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +#~ msgstr "" +#~ "Parametrii poziÅ£ionali de la $N+1 ... sunt redenumiÅ£i în $1 ... Dacă N " +#~ "nu este" + +#~ msgid "not given, it is assumed to be 1." +#~ msgstr "furnizat, se presupune că e 1." + +#~ msgid "Read and execute commands from FILENAME and return. The pathnames" +#~ msgstr "CiteÅŸte ÅŸi execută comenzi din NUME_FIÅžIER ÅŸi returnare. Căile" + +#~ msgid "in $PATH are used to find the directory containing FILENAME." +#~ msgstr "" +#~ "din $PATH sunt folosite pentru a găsi directorul care conÅ£ine NUME_FIÅžIER." + +#~ msgid "Suspend the execution of this shell until it receives a SIGCONT" +#~ msgstr "" +#~ "Suspendă execuÅ£ia acestui shell până se va primi un semnal de SIGCONT." + +#~ msgid "signal. The `-f' if specified says not to complain about this" +#~ msgstr " Dacă este specificat `-f' va elimina avertismentele despre acest " + +#~ msgid "being a login shell if it is; just suspend anyway." +#~ msgstr "login shell; va suspenda oricum." + +#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" +#~ msgstr "Iese cu o stare de 0 (adevăr) sau 1 (falsitate) depinzând de" + +#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" +#~ msgstr "evaluarea EXPR. Expresiile pot fi unare sau binare. Expresiile" + +#~ msgid "expressions are often used to examine the status of a file. There" +#~ msgstr "" +#~ "unare sunt des folosite pentru a examina starea unui fiÅŸier. Mai există" + +#~ msgid "are string operators as well, and numeric comparison operators." +#~ msgstr "operatori de ÅŸir de asemenea, ÅŸi operator de comparare numerică." + +#~ msgid "File operators:" +#~ msgstr "Operatori de fiÅŸier:" + +#~ msgid " -b FILE True if file is block special." +#~ msgstr " -b FIÅžIER Adevărat dacă fiÅŸierul este bloc special." + +#~ msgid " -c FILE True if file is character special." +#~ msgstr " -c FIÅžIER Adevărat dacă fiÅŸierul este caracter special." + +#~ msgid " -d FILE True if file is a directory." +#~ msgstr " -b FIÅžIER Adevărat dacă fiÅŸierul este director." + +#~ msgid " -e FILE True if file exists." +#~ msgstr " -e FIÅžIER Adevărat dacă fiÅŸierul există." + +#~ msgid " -f FILE True if file exists and is a regular file." +#~ msgstr "" +#~ " -b FIÅžIER Adevărat dacă fiÅŸierul există ÅŸi este fiÅŸier " +#~ "obiÅŸnuit (regular)." + +#~ msgid " -g FILE True if file is set-group-id." +#~ msgstr "" +#~ " -g FIÅžIER Adevărat dacă fiÅŸierul are setat id-ul de grup." + +#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." +#~ msgstr "" +#~ " -h FIÅžIER Adevărat dacă fiÅŸierul este legătură simbolică. " +#~ "FolosiÅ£i \"-L\"." + +#~ msgid " -L FILE True if file is a symbolic link." +#~ msgstr "" +#~ " -L FIÅžIER Adevărat dacă fiÅŸierul este legătură simbolică." + +#~ msgid " -k FILE True if file has its \"sticky\" bit set." +#~ msgstr "" +#~ " -k FIÅžIER Adevărat dacă fiÅŸierul are setat \"sticky\" bit." + +#~ msgid " -p FILE True if file is a named pipe." +#~ msgstr "" +#~ " -p FIÅžIER Adevărat dacă fiÅŸierul este o legătură(pipe) numită." + +#~ msgid " -r FILE True if file is readable by you." +#~ msgstr " -r FIÅžIER Adevărat dacă fiÅŸierul poate fi citit de tine." + +#~ msgid " -s FILE True if file exists and is not empty." +#~ msgstr " -s FIÅžIER Adevărat dacă fiÅŸierul există ÅŸi nu este vid." + +#~ msgid " -S FILE True if file is a socket." +#~ msgstr " -S FIÅžIER Adevărat dacă fiÅŸierul este un socket." + +#~ msgid " -t FD True if FD is opened on a terminal." +#~ msgstr " -t FD Adevărat dacă FD este deschis într-un terminal." + +#~ msgid " -u FILE True if the file is set-user-id." +#~ msgstr " -u FIÅžIER Adevărat dacă fiÅŸierul are setat user id-ul." + +#~ msgid " -w FILE True if the file is writable by you." +#~ msgstr " -w FIÅžIER Adevărat dacă fiÅŸierul poate fi scris de tine." + +#~ msgid " -x FILE True if the file is executable by you." +#~ msgstr "" +#~ " -x FIÅžIER Adevărat dacă fiÅŸierul poate fi executat de către " +#~ "tine." + +#~ msgid " -O FILE True if the file is effectively owned by you." +#~ msgstr "" +#~ " -O FIÅžIER Adevărat dacă fiÅŸierul este efectiv propriu(owned) " +#~ "Å£ie." + +#~ msgid "" +#~ " -G FILE True if the file is effectively owned by your group." +#~ msgstr "" +#~ " -O FIÅžIER Adevărat dacă fiÅŸierul este efectiv propriu(owned) " +#~ "grupului tău." + +#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" +#~ msgstr "" +#~ " FIÅžIER1 -nt FIÅžIER2 Adevărat dacă fiÅŸier1 este mai nou decât (potrivit " + +#~ msgid " modification date) file2." +#~ msgstr " datei modificării) fiÅŸier2." + +#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." +#~ msgstr "" +#~ " FIÅžIER1 -ot FIÅžIER2 Adevărat dacă fiÅŸier1 este mai vechi decât fiÅŸier2." + +#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." +#~ msgstr "" +#~ " FIÅžIER1 -ef FIÅžIER2 Adevărat dacă fiÅŸier1 este hard link către fiÅŸier2." + +#~ msgid "String operators:" +#~ msgstr "Operatori de ÅŸiruri:" + +#~ msgid " -z STRING True if string is empty." +#~ msgstr " -z ÅžIR Adevărat dacă ÅŸirul este vid." + +#~ msgid " -n STRING" +#~ msgstr " -n ÅžIR" + +#~ msgid " STRING True if string is not empty." +#~ msgstr " ÅžIR Adevărat dacă ÅŸirul nu este vid." + +#~ msgid " STRING1 = STRING2" +#~ msgstr " ÅžIR1 = ÅžIR2" + +#~ msgid " True if the strings are equal." +#~ msgstr " Adevărat dacă ÅŸirurile sunt egale." + +#~ msgid " STRING1 != STRING2" +#~ msgstr " ÅžIR1 != ÅžIR2" + +#~ msgid " True if the strings are not equal." +#~ msgstr " Adevărat dacă ÅŸirurile nu sunt egale." + +#~ msgid " STRING1 < STRING2" +#~ msgstr " ÅžIR1 < ÅžIR2" + +#~ msgid "" +#~ " True if STRING1 sorts before STRING2 lexicographically" +#~ msgstr "" +#~ " Adevărat dacă ÅžIR1 se ordonează lexical înaintea lui " +#~ "ÅžIR2" + +#~ msgid " STRING1 > STRING2" +#~ msgstr " ÅžIR1 > ÅžIR2" + +#~ msgid "" +#~ " True if STRING1 sorts after STRING2 lexicographically" +#~ msgstr "" +#~ " Adevărat dacă ÅžIR1 se ordonează lexical după ÅžIR2" + +#~ msgid "Other operators:" +#~ msgstr "AlÅ£i operatori:" + +#~ msgid " ! EXPR True if expr is false." +#~ msgstr " ! EXPR Adevărat dacă expr e falsă." + +#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." +#~ msgstr " EXPR1 -a EXPR2 Adevărat dacă ÅŸi expr1 ÅžI expr2 sunt adevărate." + +#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." +#~ msgstr "" +#~ " EXPR1 -a EXPR2 Adevărat dacă una din expr1 sau expr2 e adevărată." + +#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," +#~ msgstr " arg1 OP arg2 Teste aritmetice. OP este unul din -eq, -ne," + +#~ msgid " -lt, -le, -gt, or -ge." +#~ msgstr " -lt, -le, -gt, or -ge." + +#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," +#~ msgstr "Operatorii aritmetici binari returnează adevărat(true) dacă ARG1 " + +#~ msgid "" +#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgstr "" +#~ "este egal cu, nu este egal cu,mai mic, mai mic sau egal, mai mare, mai " +#~ "mare sau egal" + +#~ msgid "than ARG2." +#~ msgstr "decât ARG2." + +#~ msgid "This is a synonym for the \"test\" builtin, but the last" +#~ msgstr "Acesta este un sinonim pentru comanda internă \"test\", dar ultimul" + +#~ msgid "argument must be a literal `]', to match the opening `['." +#~ msgstr "argument trebuie să fie un `]' literal, pentru a închide un `['." + +#~ msgid "Print the accumulated user and system times for processes run from" +#~ msgstr "" +#~ "AfiÅŸează timpurile acumulate de user ÅŸi sistem pentru procesele rulate din" + +#~ msgid "the shell." +#~ msgstr "shell." + +#~ msgid "The command ARG is to be read and executed when the shell receives" +#~ msgstr "" +#~ "ARGumentele comenzii vor fi citite ÅŸi executate când shell-ul primeÅŸte" + +#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +#~ msgstr "" +#~ "semnal(e). SIGNAL_SPEC. Dacă ARGumentul este absent toate semnalele" + +#~ msgid "reset to their original values. If ARG is the null string each" +#~ msgstr "" +#~ "specifice sunt resetate la valorile lor originale. Dacă ARGumentul este " +#~ "un ÅŸir vid" + +#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +#~ msgstr "" +#~ "fiecare SIGNAL_SPEC este ignorat de shell ÅŸi de comanda invocată de " +#~ "acesta." + +#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +#~ msgstr "" +#~ "Dacă SIGNAL_SPEC este EXIT (0) ARGumentele comenzii sunt executate la " + +#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" +#~ msgstr "" +#~ "ieÅŸirea din shell. Dacă SIGNAL_SPEC este DEBUG, ARGument este executat" + +#~ msgid "command. If ARG is `-p' then the trap commands associated with" +#~ msgstr "" +#~ "după fiecare comandă. Dacă ARGument este `-' atunci vor fi afiÅŸate " +#~ "comenzile" + +#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +#~ msgstr "trap asociate cu fiecare SIGNAL_SPEC. Dacă nu sunt furnizaÅ£i " + +#~ msgid "only `-p' is given, trap prints the list of commands associated with" +#~ msgstr "" +#~ "parametri sau este dat doar `-p', trap afiÅŸează lista de comenzi asociate " +#~ "cu " + +#~ msgid "" +#~ "each signal number. SIGNAL_SPEC is either a signal name in " +#~ msgstr "" +#~ "fiecare număr de semnal. SIGNAL_SPEC este ori un nume de semnal din " +#~ "" + +#~ msgid "" +#~ "or a signal number. `trap -l' prints a list of signal names and their" +#~ msgstr "" +#~ "sau un număr de semnal. `trap -l' tipăreÅŸte o listă de numere de semnale " +#~ "ÅŸi " + +#~ msgid "corresponding numbers. Note that a signal can be sent to the shell" +#~ msgstr "" +#~ "numerele corespunzătoare. NotaÅ£i că un semnal poate fi trimis shell-ului" + +#~ msgid "with \"kill -signal $$\"." +#~ msgstr "cu \"kill -signal $$\"." + +#~ msgid "For each NAME, indicate how it would be interpreted if used as a" +#~ msgstr "" +#~ "Pentru fiecare NUME, indică în ce mod va fi interpretat dacă este " +#~ "utilizat ca" + +#~ msgid "If the -t option is used, returns a single word which is one of" +#~ msgstr "" +#~ "Dacă este folosită opÅ£iunea -t, returnează un singur cuvânt care este " +#~ "unul din" + +#~ msgid "" +#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +#~ msgstr "" +#~ "`alias', `keyword', `function', `builtin', `file' or `', dacă NUME este un" + +#~ msgid "" +#~ "alias, shell reserved word, shell function, shell builtin, disk file," +#~ msgstr "" +#~ "alias, cuvânt rezervat de shell, funcÅ£ie de shell, comandă internă, " +#~ "fiÅŸier de pe disk," + +#~ msgid "or unfound, respectively." +#~ msgstr "sau negăsit, respectiv." + +#~ msgid "If the -p flag is used, either returns the name of the disk file" +#~ msgstr "" +#~ "Dacă este utilizat marcajul(flag) -p se returnează fie numele fiÅŸierului " +#~ "de disk" + +#~ msgid "that would be executed, or nothing if -t would not return `file'." +#~ msgstr "" +#~ "care urmează să fie executat, sau nimic dacă -t nu va returna `fiÅŸier'." + +#~ msgid "If the -a flag is used, displays all of the places that contain an" +#~ msgstr "Dacă este folosit -a, se vor afiÅŸa toate locurile care conÅ£in" + +#~ msgid "" +#~ "executable named `file'. This includes aliases and functions, if and" +#~ msgstr "" +#~ "un executabil numit `fiÅŸier'. Aceasta include aliasuri ÅŸi funcÅ£ii, ÅŸi " +#~ "numai" + +#~ msgid "only if the -p flag is not also used." +#~ msgstr "marcajul(flag) -p nu este folosit de asemenea." + +#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," +#~ msgstr "Type acceptă -all, -path ÅŸi -type în loc de -a, -p ÅŸi -t," + +#~ msgid "respectively." +#~ msgstr "respectiv" + +#~ msgid "Ulimit provides control over the resources available to processes" +#~ msgstr "Ulimit oferă control al resurselor disponibile pentru procesele" + +#~ msgid "started by the shell, on systems that allow such control. If an" +#~ msgstr "" +#~ "rulate de shell, în sisteme care permit acest tip de control. Dacă este" + +#~ msgid "option is given, it is interpreted as follows:" +#~ msgstr "dată o opÅ£iune, este interpretată precum urmează:" + +#~ msgid " -S\tuse the `soft' resource limit" +#~ msgstr " -S\tfoloseÅŸte limita `soft' a resursei" + +#~ msgid " -H\tuse the `hard' resource limit" +#~ msgstr " -H\tfoloseÅŸte limita `hard' a resursei" + +#~ msgid " -a\tall current limits are reported" +#~ msgstr " -a\tsunt raportate toate limitele curente" + +#~ msgid " -c\tthe maximum size of core files created" +#~ msgstr " -c\tmărimea maximă de fiÅŸiere core creată" + +#~ msgid " -d\tthe maximum size of a process's data segment" +#~ msgstr " -d\ttmărimea maximă a unui segment de date al procesului" + +#~ msgid " -m\tthe maximum resident set size" +#~ msgstr " -m\tmărimea maximă de rezidenţă" + +#~ msgid " -s\tthe maximum stack size" +#~ msgstr " -s\tmărimea maximă a stivei(stack)" + +#~ msgid " -t\tthe maximum amount of cpu time in seconds" +#~ msgstr " -t\tsuma maximă a timpului cpu în secunde" + +#~ msgid " -f\tthe maximum size of files created by the shell" +#~ msgstr " -f\ttmărimea maximă a fiÅŸierelor create de shell" + +#~ msgid " -p\tthe pipe buffer size" +#~ msgstr " -p\tmărimea tamponului de legătură (pipe buffer)" + +#~ msgid " -n\tthe maximum number of open file descriptors" +#~ msgstr " -n\tnumărul maxim de fiÅŸiere deschise" + +#~ msgid " -u\tthe maximum number of user processes" +#~ msgstr " -u\tnumărul maxim de procese utilizator" + +#~ msgid " -v\tthe size of virtual memory" +#~ msgstr " -v\tmărimea memoriei virtuale" + +#~ msgid "If LIMIT is given, it is the new value of the specified resource." +#~ msgstr "Dacă este dată LIMITÄ‚, va fi noua valoare a resursei specificate." + +#~ msgid "Otherwise, the current value of the specified resource is printed." +#~ msgstr "" +#~ "ÃŽn caz contrar, este tipărită valoarea curentă a resursei specificate." + +#~ msgid "If no option is given, then -f is assumed. Values are in 1k" +#~ msgstr "" +#~ "Dacă nu este dată nici o opÅ£iune se presupune -f. Valorile sunt exprimate" + +#~ msgid "increments, except for -t, which is in seconds, -p, which is in" +#~ msgstr "" +#~ "în incrementări de 1k, exceptând -t, care este în secunde, -p, care este " +#~ "în" + +#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" +#~ msgstr "incrementări de 512 octeÅ£i, ÅŸi -u, care este un număr nescalat de" + +#~ msgid "processes." +#~ msgstr "procese." + +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" +#~ msgstr "" +#~ "Masca de crearecreation mask) a fiÅŸierului utilizatorului e setată la " +#~ "MOD. Dacă" + +#~ msgid "" +#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" +#~ msgstr "" +#~ "MOD este omis sau este dat `-S', este tipărită valoarea curentă a " +#~ "măştii. OpÅ£iunea" + +#~ msgid "" +#~ "option makes the output symbolic; otherwise an octal number is output." +#~ msgstr "" +#~ "`-S' returnează output simbolic; în caz contrar outputul este un număr " +#~ "octal." + +#~ msgid "If MODE begins with a digit, it is interpreted as an octal number," +#~ msgstr "Dacă MOD începe cu un digit, este interpretat ca număr octal," + +#~ msgid "" +#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." +#~ msgstr "în caz contrar este un ÅŸir mod simbolic premis de chmod(1)." + +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If" +#~ msgstr "" +#~ "AÅŸteaptă după procesul specificat ÅŸi raportează starea de terminare. Dacă" + +#~ msgid "N is not given, all currently active child processes are waited for," +#~ msgstr "" +#~ "N nu este dat,se aÅŸteaptă după toate procesele copil(child) curente," + +#~ msgid "and the return code is zero. N may be a process ID or a job" +#~ msgstr "" +#~ "ÅŸi codul returnat este zero. N poate fi un ID de proces sau o " +#~ "specificaÅ£ie" + +#~ msgid "specification; if a job spec is given, all processes in the job's" +#~ msgstr "de job; Dacă este dată o specificaÅ£ie de job,se aÅŸteaptă după" + +#~ msgid "pipeline are waited for." +#~ msgstr " toate procesele din legătură(pipeline)." + +#~ msgid "and the return code is zero. N is a process ID; if it is not given," +#~ msgstr "" +#~ "ÅŸi codul returnat este zero. N este un ID de proces; dacă nu este dat," + +#~ msgid "all child processes of the shell are waited for." +#~ msgstr "se va aÅŸtepta după doate procesele copil(child) din shell." + +#~ msgid "The `for' loop executes a sequence of commands for each member in a" +#~ msgstr "" +#~ "Ciclul `for' execută o secvenţă de comenzi pentru fiecare membru dintr-o" + +#~ msgid "" +#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +#~ msgstr "" +#~ "listă de elemente. Dacă `in CUVINTE...;' nu este prezent, atunci `in \"$@" +#~ "\"'" + +#~ msgid "" +#~ "assumed. For each element in WORDS, NAME is set to that element, and" +#~ msgstr "" +#~ "este presupus. Pentru fiecare element din CUVINTE, NUME este setat ca " +#~ "acel" + +#~ msgid "the COMMANDS are executed." +#~ msgstr "element ÅŸi COMENZI sunt executate." + +#~ msgid "The WORDS are expanded, generating a list of words. The" +#~ msgstr "CUVINTEle sunt expandate, generând o listă de cuvinte. Setul de" + +#~ msgid "set of expanded words is printed on the standard error, each" +#~ msgstr "" +#~ "de cuvinte expandate este tipărit la dispozitivul de eroare standard, " +#~ "fiecare" + +#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" +#~ msgstr "" +#~ "fiind precedat de un număr. Dacă `in CUVINTE' nu este prezent, `in \"$@" +#~ "\"'" + +#~ msgid "is assumed. The PS3 prompt is then displayed and a line read" +#~ msgstr "" +#~ "este presupus. Promptul PS3 este apoi afiÅŸat ÅŸi o linie va fi citită de" + +#~ msgid "from the standard input. If the line consists of the number" +#~ msgstr "" +#~ "la intrare(input) standard. Dacă linia e alcătuită dintr-unul din " +#~ "numerele" + +#~ msgid "corresponding to one of the displayed words, then NAME is set" +#~ msgstr "corespunzătoare unuia din cuvintele afiÅŸate, atunci NUME este setat" + +#~ msgid "to that word. If the line is empty, WORDS and the prompt are" +#~ msgstr "" +#~ "drept cuvântul respectiv. Dacă linia este vidă, CUVINTEle ÅŸi promptul " +#~ "sunt" + +#~ msgid "redisplayed. If EOF is read, the command completes. Any other" +#~ msgstr "" +#~ "reafiÅŸate. Dacă se citeÅŸte EOF, comanda ajunge la sfârÅŸit. Orice altă" + +#~ msgid "value read causes NAME to be set to null. The line read is saved" +#~ msgstr "" +#~ "valoare citită va face ca NUMEle setat să fie setat null. Linia citită " +#~ "este salvată" + +#~ msgid "in the variable REPLY. COMMANDS are executed after each selection" +#~ msgstr "" +#~ "în variabila RÄ‚SPUNS. COMENZIle sunt executate după fiecare selecÅ£ie" + +#~ msgid "until a break or return command is executed." +#~ msgstr "până când se execută o comandă break sau return." + +#~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" +#~ msgstr "" +#~ "Execută selectiv COMENZI bazându-se pe potrivirea CUVÂNTului în TIPAR." + +#~ msgid "`|' is used to separate multiple patterns." +#~ msgstr " `|' este folosit pentru a separa mai multe tipare." + +#~ msgid "" +#~ "The if COMMANDS are executed. If the exit status is zero, then the then" +#~ msgstr "" +#~ "COMENZIle if sunt executate. Dacă starea de ieÅŸire este zero, atunc" + +#~ msgid "" +#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +#~ msgstr "" +#~ "COMENZIle then sunt executate. ÃŽn caz contrar, fiecare din COMENZIle " +#~ "elif sunt executate" + +#~ msgid "" +#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" +#~ msgstr "" +#~ "pe rând, ÅŸi dacă starea de ieÅŸire este zero, atunci COMENZIle then " +#~ "corespunzătoare" + +#~ msgid "" +#~ "are executed and the if command completes. Otherwise, the else COMMANDS" +#~ msgstr "" +#~ "sunt executate ÅŸi comanda if se termină. ÃŽn caz contrar, COMENZIle else" + +#~ msgid "" +#~ "are executed, if present. The exit status is the exit status of the last" +#~ msgstr "" +#~ "sunt executate, în cazul în care sunt prezente. Starea de ieÅŸire este " +#~ "starea de ieÅŸire" + +#~ msgid "command executed, or zero if no condition tested true." +#~ msgstr "" +#~ "a ultimei comenzi executate, sau zero dacă nici o condiÅ£ie nu s-a dovedit " +#~ "adevărată." + +#~ msgid "Expand and execute COMMANDS as long as the final command in the" +#~ msgstr "Expandează ÅŸi execută COMENZI atâta timp cât comanda finală din" + +#~ msgid "`while' COMMANDS has an exit status of zero." +#~ msgstr "COMENZIle `while' au o stare de ieÅŸire de zero." + +#~ msgid "`until' COMMANDS has an exit status which is not zero." +#~ msgstr "COMENZIle `until' au o stare de ieÅŸire diferită de zero." + +#~ msgid "Create a simple command invoked by NAME which runs COMMANDS." +#~ msgstr "Crează o comandă simplă invocată de NUME care rulează COMENZI." + +#~ msgid "Arguments on the command line along with NAME are passed to the" +#~ msgstr "Parametrii din linia de comandă împreună cu NUMEle sunt pasaÅ£i" + +#~ msgid "function as $0 .. $n." +#~ msgstr "funcÅ£iei drept $0 .. $n." + +#~ msgid "Run a set of commands in a group. This is one way to redirect an" +#~ msgstr "" +#~ "Rulează un set de comenzi dintr-un grup. Aceasta este o cale de a " +#~ "redirecta un" + +#~ msgid "entire set of commands." +#~ msgstr "întreg set de comenzi." + +#~ msgid "This is similar to the `fg' command. Resume a stopped or background" +#~ msgstr "" +#~ "Aceasta este similară comenzii `fg'. Continuă(resume) un job stopat sau " +#~ "din" + +#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +#~ msgstr "" +#~ "fundal(background). Dacă se specifică DIGIÅ¢I, atunci este folosit acel " +#~ "job. Dacă" + +#~ msgid "" +#~ "WORD, then the job whose name begins with WORD is used. Following the" +#~ msgstr "" +#~ "se specifică CUVÂNT, atunci e folosit jobul al cărui nume începe cu " +#~ "CUVÂNT." + +#~ msgid "job specification with a `&' places the job in the background." +#~ msgstr "" +#~ "Specificând jobului un `&' după, va plasa jobul în fundal(background)." + +#~ msgid "BASH_VERSION The version numbers of this Bash." +#~ msgstr "BASH_VERSION Numărul de versiune a acestui Bash." + +#~ msgid "CDPATH A colon separated list of directories to search" +#~ msgstr "" +#~ "CDPATH O listă de directoare separată prin două-puncte pentru a " +#~ "se" + +#~ msgid "\t\twhen the argument to `cd' is not found in the current" +#~ msgstr "" +#~ "\t\tcăuta atunci când parametrii specificaÅ£i comenzii `cd' nu sunt găsiÅ£i " +#~ "în" + +#~ msgid "\t\tdirectory." +#~ msgstr "\t\tdirectorul curent." + +#~ msgid "" +#~ "HISTFILE The name of the file where your command history is stored." +#~ msgstr "" +#~ "HISTFILE Numele fiÅŸierului unde istoricul comenzilor voastre este " +#~ "stocat." + +#~ msgid "HISTFILESIZE The maximum number of lines this file can contain." +#~ msgstr "" +#~ "HISTFILESIZE Numărul maxim de linii pe care acest fiÅŸier poate să le " +#~ "conÅ£ină." + +#~ msgid "HISTSIZE The maximum number of history lines that a running" +#~ msgstr "" +#~ "HISTSIZE Numărul maxim de linii de istoric care pot fi accesate" + +#~ msgid "\t\tshell can access." +#~ msgstr "\t\tde un shell activ." + +#~ msgid "HOME The complete pathname to your login directory." +#~ msgstr "HOME Calea completă către directorul vostru de login." + +#~ msgid "" +#~ "HOSTTYPE The type of CPU this version of Bash is running under." +#~ msgstr "" +#~ "HOSTTYPE Tipul de CPU pe care rulează această versiune de Bash." + +#~ msgid "" +#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" +#~ msgstr "" +#~ "IGNOREEOF Controlează acÅ£iunea shell-ului la întâlnirea unui " +#~ "caracter" + +#~ msgid "\t\tcharacter as the sole input. If set, then the value" +#~ msgstr "" +#~ "\t\tEOF ca singură intrare(input). Dacă este setat, atunci valoarea" + +#~ msgid "\t\tof it is the number of EOF characters that can be seen" +#~ msgstr "\t\tacestuia este numărul de caractere EOF care pot fi întâlnite" + +#~ msgid "\t\tin a row on an empty line before the shell will exit" +#~ msgstr "\t\tpe rând într-o linie vidă înainte de ieÅŸirea shell-ului." + +#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." +#~ msgstr "" +#~ "\t\t(implicit 10). Când este desetat(unset), EOF semnifică sfârÅŸitul " +#~ "intrării(input)." + +#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." +#~ msgstr "" +#~ "MAILCHECK\tCât de des, în secunde, Bash-ul să verifice dacă există mail " +#~ "nou." + +#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" +#~ msgstr "" +#~ "MAILPATH\tO listă de fiÅŸiere separate prin două-puncte pe care Bash o " +#~ "verifică" + +#~ msgid "\t\tfor new mail." +#~ msgstr "\t\tpentru mail nou." + +#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." +#~ msgstr "" +#~ "OSTYPE\t\tVersiunea de Unix pe care această versiune de Bash rulează." + +#~ msgid "PATH A colon-separated list of directories to search when" +#~ msgstr "" +#~ "PATH O listă de directoare separată prin două-puncte care se va" + +#~ msgid "\t\tlooking for commands." +#~ msgstr "\t\tindexa în căutarea comenzilor." + +#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" +#~ msgstr "" +#~ "PROMPT_COMMAND O comandă care va fi executată înainte de tipărirea " +#~ "fiecărui" + +#~ msgid "\t\tprimary prompt." +#~ msgstr "\t\tprompt primar." + +#~ msgid "PS1 The primary prompt string." +#~ msgstr "PS1 Åžirul promptului primar." + +#~ msgid "PS2 The secondary prompt string." +#~ msgstr "PS2 Åžirul promptului secundar." + +#~ msgid "TERM The name of the current terminal type." +#~ msgstr "TERM Numele tipului de terminal curent." + +#~ msgid "auto_resume Non-null means a command word appearing on a line by" +#~ msgstr "" +#~ "auto_resume Dacă nu e vid rezultă că un cuvânt comandă ce apare pe o " +#~ "linie" + +#~ msgid "\t\titself is first looked for in the list of currently" +#~ msgstr "\t\tsingur este prima dată căutat în lista " + +#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." +#~ msgstr "" +#~ "\t\tjoburilor.curente stopate. Dacă este găsit acolo, acel job este adus " +#~ "în prim-plan(foreground)." + +#~ msgid "\t\tA value of `exact' means that the command word must" +#~ msgstr "\t\tO valoare de `exact' înseamnă că acel cuvânt comandă trebuie" + +#~ msgid "\t\texactly match a command in the list of stopped jobs. A" +#~ msgstr "" +#~ "\t\tsă se potrivească perfect unei comenzi din lista de joburi stopate. O" + +#~ msgid "\t\tvalue of `substring' means that the command word must" +#~ msgstr "\t\tvaloare de `substring' înseamnă că acel cuvânt comandă trebuie" + +#~ msgid "\t\tmatch a substring of the job. Any other value means that" +#~ msgstr "" +#~ "\t\tsă se potrivească unui subÅŸir al jobului. Orice altă valoare " +#~ "înseamnă că" + +#~ msgid "\t\tthe command must be a prefix of a stopped job." +#~ msgstr "\t\tacea comandă trebuie să fie prefixul unui job stopat." + +#~ msgid "command_oriented_history" +#~ msgstr "command_oriented_history" + +#~ msgid "" +#~ " Non-null means to save multiple-line commands together on" +#~ msgstr "" +#~ " Nevid reprezintă salvarea mai multor linii de comandă " +#~ "împreună într-o" + +#~ msgid " a single history line." +#~ msgstr " singură linie de istoric." + +#~ msgid "histchars Characters controlling history expansion and quick" +#~ msgstr "" +#~ "histchars Caractere care controlează expansiunea istoricului ÅŸi" + +#~ msgid "\t\tsubstitution. The first character is the history" +#~ msgstr "" +#~ "\t\tsubstituÅ£ii rapide. Primul caracter este caracterul de substituÅ£ie al" + +#~ msgid "\t\tsubstitution character, usually `!'. The second is" +#~ msgstr "\t\tistoricului, de obicei `!'. Al doilea este" + +#~ msgid "\t\tthe `quick substitution' character, usually `^'. The" +#~ msgstr "\t\tcaracterul de `quick substitution', de obicei `^'. Al treilea" + +#~ msgid "\t\tthird is the `history comment' character, usually `#'." +#~ msgstr "\t\teste caracterul de `history comment', de obicei `#'." + +#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" +#~ msgstr "" +#~ "HISTCONTROL\tSetează o valoare de `ignorespace', care înseamnă să nu" + +#~ msgid "\t\tlines which begin with a space or tab on the history" +#~ msgstr "\t\tintroduci în lista de istoric linii care încep cu un" + +#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" +#~ msgstr "" +#~ "\t\tspaÅ£iu sau un tab. Setează o valoare de `ignoredups', care înseamnă" + +#~ msgid "\t\tenter lines which match the last entered line. Set to" +#~ msgstr "" +#~ "\t\ta nu se introduce linii care sunt asemănătoare ultimei linii " +#~ "introduse." + +#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," +#~ msgstr "" +#~ "\t\tSetează o valaore de `ignoreboth' însemnând combinarea celor două " +#~ "opÅ£iuni." + +#~ msgid "\t\tor set to any other value than those above means to save" +#~ msgstr "" +#~ "\t\t Desetat(unset) sau setat la orice altă valoare decât acelea de mai " +#~ "sus" + +#~ msgid "\t\tall lines on the history list." +#~ msgstr "\t\taînseamnă salvarea tuturor liniilor în lista istoricului." + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "" +#~ "Adaugă un director în partea superioară a stivei de directoare, sau " +#~ "roteÅŸte" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "stiva, făcând noul element superior al listei directorul curent" + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "" +#~ "de lucru. Fără parametri, interchimbă cele două directoare superioare." + +#~ msgid "+N\tRotates the stack so that the Nth directory (counting" +#~ msgstr "+N\tRoteÅŸte stiva astfel încât al N-ulea director (numărând" + +#~ msgid "\tfrom the left of the list shown by `dirs') is at the top." +#~ msgstr "\tde la stânga listei afiÅŸată de `dirs') va fi în vârf(top)." + +#~ msgid "-N\tRotates the stack so that the Nth directory (counting" +#~ msgstr "-N\tRoteÅŸte stiva astfel încât al N-ulea director (numărând" + +#~ msgid "\tfrom the right) is at the top." +#~ msgstr "\tde la dreapta) va fi în vârf." + +#~ msgid "-n\tsuppress the normal change of directory when adding directories" +#~ msgstr "" +#~ "-n\tinhibă schimbarea normală de directoare la adăugarea directoarelor" + +#~ msgid "\tto the stack, so only the stack is manipulated." +#~ msgstr "\tîn stivă, astfel încât doar stiva să fie manipulată." + +#~ msgid "dir\tadds DIR to the directory stack at the top, making it the" +#~ msgstr "dir\tadaugă DIR în vârful stivei de directoare, făcându-l" + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "PuteÅ£i vedea stiva de directoare cu ajutorul comenzii `dirs'." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Åžterge intrările din stiva de directoare. Fără parametri, " + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "ÅŸterge directorul superior din stivă, ÅŸi face cd la noul" + +#~ msgid "+N\tremoves the Nth entry counting from the left of the list" +#~ msgstr "+N\tÅŸterge al N-ulea element numărând din stânga listei" + +#~ msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "\tafiÅŸate de `dirs', începând cu zero. De exemplu: `popd +0'" + +#~ msgid "\tremoves the first directory, `popd +1' the second." +#~ msgstr "\tÅŸterge primul director, `popd +1' al doilea." + +#~ msgid "-N\tremoves the Nth entry counting from the right of the list" +#~ msgstr "-N\tÅŸterge al N-ulea element numărând din dreapta listei" + +#~ msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "\tafiÅŸate de `dirs', începând cu zero. De exemplu: `popd -0'" + +#~ msgid "\tremoves the last directory, `popd -1' the next to last." +#~ msgstr "\tÅŸterge ultimul director, `popd -1' penultimul." + +#~ msgid "" +#~ "-n\tsuppress the normal change of directory when removing directories" +#~ msgstr "" +#~ "-n\tinhibă schimbarea normală de directoare când se ÅŸterg diurectoare" + +#~ msgid "\tfrom the stack, so only the stack is manipulated." +#~ msgstr "\tdin stivă, astfel încât numai stiva să fie manipulată." + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "AfiÅŸează lista curentă de directoare reÅ£inute. Directoarele" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "" +#~ "îşi gasesc locul în listă cu ajutorul comenzii `pushd'; puteÅ£i merge" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "prin listă cu ajutorul comenzii `popd'." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "" +#~ "Parametrul(flag) -l specifică faptul că `dirs' nu ar trebui să " +#~ "tipărească " + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "" +#~ "versiuni prescurtate ale directoarelor care au legătură(relative) cu home-" +#~ "directory-ul." + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "" +#~ " Aceasta înseamnă că `~/bin' poate fi afiÅŸat ca `/homes/bfox/bin' " +#~ "Parametrul" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "" +#~ "-v face ca `dirs' să afiÅŸeze stiva de directoare doar câte o intrare pe " +#~ "linie," + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "prefixând numele directorului cu poziÅ£ia în stivă. Parametrul -p" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "face acelaÅŸi lucru, dar poziÅ£ia în stivă nu este prefix." + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "" +#~ "Parametrul(flag) -c ÅŸterge stiva de directoare prin ÅŸtergerea tuturor " +#~ "elementelor." + +#~ msgid "" +#~ "+N\tdisplays the Nth entry counting from the left of the list shown by" +#~ msgstr "+N\tafiÅŸează a N-a intrare numărând de la stânga listei afiÅŸate de" + +#~ msgid "\tdirs when invoked without options, starting with zero." +#~ msgstr "\tdirs atunci când e invocată fără opÅ£iuni, începând cu zero." + +#~ msgid "" +#~ "-N\tdisplays the Nth entry counting from the right of the list shown by" +#~ msgstr "-N\tafiÅŸează a N-a intrare numărând de la dreapta listei afiÅŸate de" + +#~ msgid "Toggle the values of variables controlling optional behavior." +#~ msgstr "" +#~ "Schimbă(toggle) valorile variabilelor, controlând comportamentul opÅ£ional." + +#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" +#~ msgstr "" +#~ "Parametrul -s înseamnă activarea(setarea) fiecărei NUME_OPT; parametrul -u" + +#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" +#~ msgstr "desetează(unset) fiecare NUME_OPT. Parametrul -q inhibă output-ul;" + +#~ msgid "status indicates whether each OPTNAME is set or unset. The -o" +#~ msgstr "" +#~ "starea de ieÅŸire indică dacă fiecare NUME_OPT este setat sau desetat." + +#~ msgid "option restricts the OPTNAMEs to those defined for use with" +#~ msgstr "" +#~ " Parametrul -o restricÅ£ionează NUME_OPT la acelea definite pentru a fi " + +#~ msgid "`set -o'. With no options, or with the -p option, a list of all" +#~ msgstr "" +#~ "folosite cu `set -o'. Fără nici o opÅ£iune, sau cu opÅ£iunea -p, este " +#~ "afiÅŸată" + +#~ msgid "settable options is displayed, with an indication of whether or" +#~ msgstr "" +#~ "o listă a tuturor opÅ£iunilor setabile, ceea ce indică dacă fiecare este" + +#~ msgid "not each is set." +#~ msgstr "setată sau nu." diff --git a/bash-5.1/po/ru.gmo b/bash-5.1/po/ru.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f16a5378f2d985cae59d638c189a4e835af5bccc GIT binary patch literal 125446 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 NaPmjZ#_1HE{C|X%XbAuS literal 0 HcmV?d00001 diff --git a/bash-5.1/po/ru.po b/bash-5.1/po/ru.po new file mode 100644 index 0000000..99302fc --- /dev/null +++ b/bash-5.1/po/ru.po @@ -0,0 +1,8206 @@ +# GNU Bourne Again SHell. +# Copyright (C) 2002 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Ruslan Batdalov , 2002. +# Pavel Maryanov , 2014, 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 4.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2018-04-17 14:09+0300\n" +"Last-Translator: Pavel Maryanov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 2.0.6\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "неправильный Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: удалÑетÑÑ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ nameref" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: не удаётÑÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ð´ÐµÐºÑ Ð² аÑÑоциативный маÑÑив" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: недопуÑтимый ключ аÑÑоциативного маÑÑива" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¸Ñвоить значение нечиÑловому индекÑу" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "" +"%s: %s: необходимо иÑпользовать Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸ назначении аÑÑоциативному маÑÑиву" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: не удаётÑÑ Ñоздать файл: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: не удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ keymap Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: первый непробельный Ñимвол не ÑвлÑетÑÑ Â«\"»" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "нет закрывающего «%c» в %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: отÑутÑтвует разделитель-двоеточие" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "«%s»: не удаётÑÑ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ привÑзку" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "раÑширение Ñкобки: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ памÑть Ð´Ð»Ñ %s" + +#: braces.c:406 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "раÑширение Ñкобки: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ памÑть Ð´Ð»Ñ %d Ñлементов" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "раÑширение Ñкобки: не удалоÑÑŒ выделить памÑть Ð´Ð»Ñ Â«%s»" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "«%s»: недопуÑтимый пÑевдоним" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "редактирование Ñтроки не включено" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "«%s»: недопуÑтимое название keymap" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ файл: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "«%s»: неизвеÑтное название функции" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s не привÑзан ни к какой клавише.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s можно вызвать через " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: не удаётÑÑ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ привÑзку" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "Ñчётчик циклов" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "имеет значение только Ð´Ð»Ñ Ñ†Ð¸ÐºÐ»Ð¾Ð² «for», «while» или «until»" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Возвращает контекÑÑ‚ вызова текущей подпрограммы.\n" +" \n" +" ЕÑли выражение не указано, возвращает «$line $filename». ЕÑли выражение " +"указано, возвращает\n" +" «$line $subroutine $filename». Эти дополнительные данные можно\n" +" иÑпользовать Ð´Ð»Ñ Ñ‚Ñ€Ð°ÑÑировки Ñтека.\n" +" \n" +" Значение Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ количеÑтво кадров, которое нужно вызвать\n" +" Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° к текущему кадру. Первый кадр имеет номер 0.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 0, еÑли командный процеÑÑор не выполнÑет функцию, или " +"выражение\n" +" ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "Ðе задана Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ HOME" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "Ñлишком много аргументов" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "нулевой каталог" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "Ðе задана Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OLDPWD" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "Ñтрока %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "предупреждение: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: иÑпользование: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: требуетÑÑ Ñ‡Ð¸Ñловой аргумент" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: не найден" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: недопуÑтимый параметр" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: недопуÑтимое название параметра" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "«%s»: Ñто недопуÑтимый идентификатор" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "недопуÑтимое воÑьмеричное чиÑло" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "недопуÑтимое шеÑтнадцатеричное чиÑло" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "недопуÑтимое чиÑло" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: недопуÑтимое указание Ñигнала" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "«%s»: Ñто не идентификатор процеÑÑа и не допуÑтимый указатель заданиÑ" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s за пределами диапазона" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "аргумент" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s за пределами диапазона" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: нет такого заданиÑ" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: нет ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñми" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "нет ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñми" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: ограниченный режим" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "ограниченный режим" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: Ñто не не вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° bash" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "ошибка запиÑи: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "ошибка Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² терминала: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² терминала: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: ошибка Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ каталога: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: неоднозначный указатель заданиÑ" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "Ñправка отÑутÑтвует в Ñтой верÑии" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ: %s доÑтупен только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: недопуÑтимое название дейÑтвиÑ" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: нет Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "предупреждение: параметр -F может работать не так, как ожидаетÑÑ" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "предупреждение: параметр -C может работать не так, как ожидаетÑÑ" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ðµ выполнÑет функцию завершениÑ" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "можно иÑпользовать только внутри функции" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: ÑÑÑ‹Ð»Ð¾Ñ‡Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ может быть маÑÑивом" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: переменные nameref, ÑÑылающиеÑÑ Ñами на ÑебÑ, не допуÑкаютÑÑ" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: ÐºÑ€ÑƒÐ³Ð¾Ð²Ð°Ñ ÑÑылка на имÑ" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "«%s»: недопуÑтимое название переменной Ð´Ð»Ñ ÑÑылки на имÑ" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "«-f» Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: значение функции можно только Ñчитать" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: приÑвоение ÑоÑтавного маÑÑива в кавычках уÑтарело" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: переменные маÑÑива Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ½Ð¸Ñ‡Ñ‚Ð¾Ð¶Ð¸Ñ‚ÑŒ таким образом" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: не удаётÑÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ аÑÑоциативный маÑÑив в индекÑированный" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "динамичеÑÐºÐ°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° недоÑтупна" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ общий объект %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "не удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ %s в общем объекте %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: не загружаетÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑки" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "загрузка функции %s завершилаÑÑŒ ошибкой (%d): не загружена" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: не загружаетÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑки" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: не удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: Ñто каталог" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: Ñто не обычный файл" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: файл Ñлишком велик" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить бинарный файл" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "выход\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "не командный процеÑÑор login: иÑпользуйте «exit»" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "ЕÑть оÑтановленные заданиÑ.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "ЕÑть выполнÑемые заданиÑ.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "команда не найдена" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "указание журнала команд" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ временный файл: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "текущий" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "задание %d запущено без возможноÑти управлениÑ" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: недопуÑтимый параметр — %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Â â€” %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "Ñ…Ñширование отключено" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: таблица Ñ…Ñшей пуÑтаÑ\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "вызовы\tкоманда\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Команды, ÑоответÑтвующие ключевому Ñлову «" +msgstr[1] "Команды, ÑоответÑтвующие ключевым Ñловам «" +msgstr[2] "Команды, ÑоответÑтвующие ключевым Ñловам «" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"нет разделов Ñправки, ÑоответÑтвующих «%s». Попробуйте ввеÑти «help help» " +"или «man -k %s» или «info %s»." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файл: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Показанные ниже команды определены внутри командного процеÑÑора. Чтобы " +"вывеÑти полный ÑпиÑок, введите «help».\n" +"Чтобы вывеÑти Ñправку по функции «name», введите «help name».\n" +"Чтобы вывеÑти Ñправку по командному процеÑÑору, введите «info bash».\n" +"Чтобы вывеÑти Ñправку по командам, которые отÑутÑтвуют в Ñтом ÑпиÑке, " +"введите «man -k» или «info».\n" +"\n" +"Звёздочка (*) Ñ€Ñдом Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ команды означает, что Ñта команда " +"отключена.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать больше одного параметра -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "положение журнала команд" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¼ÐµÑ‚ÐºÐ° времени" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: не удалоÑÑŒ раÑширить журнал команд" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: ошибка inlib" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ «-x» Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ другие параметры" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: аргументами должны быть идентификаторы процеÑÑов или заданий" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "ожидаетÑÑ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: Ñто не индекÑированный маÑÑив" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: недопуÑтимое указание деÑкриптора файла" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: invalid недопуÑтимый деÑкриптор файла: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: недопуÑтимое чиÑло Ñтрок" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: недопуÑтимое начало маÑÑива" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: недопуÑтимый квант обратного вызова" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "пуÑтое Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ маÑÑива" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "требуетÑÑ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° переменных маÑÑива" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "«%s»: отÑутÑтвует Ñимвол форматированиÑ" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "«%c»: недопуÑтимое указание формата времени" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "«%c»: недопуÑтимый Ñимвол форматированиÑ" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "предупреждение: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "ошибка анализа формата: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "отÑутÑтвует шеÑÑ‚Ð½Ð°Ð´Ñ†Ð°Ñ‚ÐµÑ€Ð¸Ñ‡Ð½Ð°Ñ Ñ†Ð¸Ñ„Ñ€Ð° Ð´Ð»Ñ \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "отÑутÑтвует цифра Юникода Ð´Ð»Ñ \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "отÑутÑтвует другой каталог" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: недопуÑтимый аргумент" + +#: builtins/pushd.def:480 +msgid "" +msgstr "<отÑутÑтвует текущий каталог>" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "Ñтек каталогов пуÑÑ‚" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ñтека каталогов" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Выводит ÑпиÑок запомненных на данный момент каталогов. Каталоги\n" +" помещаютÑÑ Ð² ÑпиÑок командой «pushd». Ð”Ð»Ñ Ð¾Ñ‡Ð¸Ñтки\n" +" ÑпиÑка иÑпользуетÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° «popd».\n" +" \n" +" Параметры:\n" +" -c\tочиÑтить Ñтек каталогов, удалив из него вÑе Ñлементы\n" +" -l\tне выводить каталоги, начинающиеÑÑ Ñ Ñ‚Ð¸Ð»ÑŒÐ´Ñ‹ (~),\n" +" \tÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ домашний каталог\n" +" -p\tпоказать Ñтек по одному каталогу в Ñтроке\n" +" -v\tпоказать Ñтек по одному каталогу в Ñтроке\n" +" \tи Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ в Ñтеке\n" +" \n" +" Ðргументы:\n" +" +N\tпоказать N-ÑŽ запиÑÑŒ Ñлева в ÑпиÑке каталогов,\n" +" \tпоказанного при вызове без параметров, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ.\n" +" \n" +" -N\tпоказать N-ÑŽ запиÑÑŒ Ñправа в ÑпиÑке каталогов,\n" +"\tпоказанного при вызове без параметров, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"ДобавлÑет каталог в начало Ñтека каталогов или выполнÑет\n" +" ротацию Ñтека, Ð¿Ð¾Ð¼ÐµÑ‰Ð°Ñ Ð² начало Ñтека текущий рабочий\n" +" каталог. ЕÑли аргументы не указаны, менÑет меÑтами два первых " +"каталога.\n" +" \n" +" Параметры:\n" +" -n\tпредотвращает обычное изменение каталога при добавлении\n" +" \tкаталогов в Ñтек, чтобы дейÑÑ‚Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑлиÑÑŒ только над Ñтеком.\n" +" \n" +" Ðргументы:\n" +" +N\tвыполнÑет ротацию Ñтека, чтобы N-й каталог (Ñлева\n" +" \tв ÑпиÑке, показанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ)\n" +" \tÑтал первым в Ñтеке.\n" +" \n" +" -N\tвыполнÑет ротацию Ñтека, чтобы N-й каталог (Ñправа\n" +" \tв ÑпиÑке, показанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ)\n" +" \tÑтал первым в Ñтеке.\n" +" \n" +" каталог\tдобавлÑет каталог в начало Ñтека каталогов, Ð´ÐµÐ»Ð°Ñ ÐµÐ³Ð¾\n" +" \tновым текущим каталогом.\n" +" \n" +" Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° dirs показывает Ñтек каталогов." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"УдалÑет запиÑи из Ñтека каталогов. ЕÑли аргументы не указаны,\n" +" удалÑет первый каталог из Ñтека и назначает новый первый каталог.\n" +" \n" +" Параметры:\n" +" -n\tпредотвращает обычное изменение каталога при удалении\n" +" \tкаталогов из Ñтека, чтобы дейÑÑ‚Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑлиÑÑŒ только над Ñтеком.\n" +" \n" +" Ðргументы:\n" +" +N\tудалÑет N-ÑŽ Ñлева запиÑÑŒ в ÑпиÑке каталогов,\n" +" \tпоказанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ. Ðапример, «popd +0»\n" +" \tудалÑет первый каталог, а «popd +1» — второй каталог.\n" +" \n" +" -N\tудалÑет N-ÑŽ Ñправа запиÑÑŒ в ÑпиÑке каталогов,\n" +" \tпоказанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ. Ðапример, «popd -0»\n" +" \tудалÑет поÑледний каталог, а «popd -1» — предпоÑледний каталог.\n" +" \n" +" Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° dirs показывает Ñтек каталогов." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: недопуÑтимое указание тайм-аута" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "ошибка чтениÑ: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "возврат можно выполнить только из функции или иÑходного Ñкрипта" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ ÑброÑить функцию и переменную" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: Ñто не Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¼Ð°ÑÑива" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: Ñто не функциÑ" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: не удаётÑÑ ÑкÑпортировать" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "Ñчётчик Ñмещений" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ задать и ÑброÑить параметры командного процеÑÑора" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: недопуÑтимое название параметра командного процеÑÑора" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ файла" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: файл не найден" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "не удаётÑÑ Ð¿Ñ€Ð¸Ð¾Ñтановить" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "не удаётÑÑ Ð¿Ñ€Ð¸Ð¾Ñтановить командный процеÑÑор login" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s — Ñто пÑевдонимом Ð´Ð»Ñ Â«%s»\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s — Ñто ключевое Ñлово командного процеÑÑора\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s — Ñто функциÑ\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s — Ñто ÑÐ¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð²ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° bash\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s — Ñто вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° bash\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s ÑвлÑетÑÑ %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "Ð´Ð»Ñ %s вычиÑлен Ñ…Ñш (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: недопуÑтимый аргумент ограничениÑ" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "«%c»: недопуÑÑ‚Ð¸Ð¼Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: не удаётÑÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ ограничение: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "ограничение" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ ограничение: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "воÑьмеричное чиÑло" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "«%c»: недопуÑтимый оператор Ñимвольного режима" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "«%c»: недопуÑтимый знак Ñимвольного режима" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " Ñтрока " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Прерывание..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "ИÐФО: " + +#: error.c:462 +msgid "unknown command error" +msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° команды" + +#: error.c:463 +msgid "bad command type" +msgstr "неверный тип команды" + +#: error.c:464 +msgid "bad connector" +msgstr "неверный Ñоединитель" + +#: error.c:465 +msgid "bad jump" +msgstr "ошибка перехода" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: не заданы границы переменной" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aпревышено Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°: auto-logout\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "не удаётÑÑ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ Ñтандартный ввод из /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: «%c»: недопуÑтимый Ñимвол форматированиÑ" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] вÑÑ‘ ещё ÑущеÑтвует" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "ошибка конвейера" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: доÑтигнут макÑимальный уровень вложенноÑти eval (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: доÑтигнут макÑимальный уровень вложенноÑти source (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: доÑтигнут макÑимальный уровень вложенноÑти функций (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "" +"%s: ограниченный режим: в названиÑÑ… команд Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать коÑую черту " +"«/»" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: команда не найдена" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: неверный интерпретатор" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить бинарный файл: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "«%s»: Ñто ÑÐ¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð²ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "не удаётÑÑ Ñкопировать файловый деÑкриптор %d в %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "Ñлишком много вложенных выражений" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "отрицательное переполнение Ñтека вложенных выражений" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в выражении" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "значение можно приÑвоить только переменной" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в выражении" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "деление на 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "ошибка: недопуÑтимый маркер приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "в уÑловном выражении должен быть Ñимвол «:»" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "ÑкÑпонента меньше нулÑ" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "" +"поÑле предварительного инкремента или декремента ожидаетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ " + +#: expr.c:1056 +msgid "missing `)'" +msgstr "отÑутÑтвует Ñимвол «)»" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ожидаетÑÑ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "ошибка ÑинтакÑиÑа: недопуÑтимый математичеÑкий оператор" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (неверный маркер «%s»)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "недопуÑтимое математичеÑкое оÑнование" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: недопуÑтимое чиÑло Ñтрок" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "Ñлишком большое значение Ð´Ð»Ñ Ð¾ÑнованиÑ" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: ошибка выражениÑ\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: нет доÑтупа к родительÑким каталогам" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "не удаётÑÑ ÑброÑить режим nodelay Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ð³Ð¾ деÑкриптора %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ новый деÑкриптор Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… данных bash из файлового " +"деÑкриптора %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: у нового файлового деÑкриптора %d уже еÑть буфер" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "идентификатор дочернего процеÑÑа %d принадлежит запущенному заданию %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "удаление оÑтановленного Ð·Ð°Ð´Ð°Ð½Ð¸Ñ %d Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð¹ процеÑÑа %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" +"add_process: процеÑÑ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ %5ld (%s) помечен как вÑÑ‘ ещё активный" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: нет процеÑÑа Ñ Ñ‚Ð°ÐºÐ¸Ð¼ идентификатором" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Сигнал %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Завершён" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "ОÑтановлен" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "ОÑтановлен (%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Запущен" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Завершён (%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Выход %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "СоÑтоÑние неизвеÑтно" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(Ñтек памÑти Ñброшен на диÑк) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (рабочий каталог: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "дочерний setpgid (%ld к %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "" +"wait: процеÑÑ %ld не ÑвлÑетÑÑ Ð´Ð¾Ñ‡ÐµÑ€Ð½Ð¸Ð¼ процеÑÑом Ñтого командного процеÑÑора" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: нет запиÑей процеÑÑа %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: задание %d оÑтановлено" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: нет такого заданиÑ" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: выполнение Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð½Ð¾" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: задание %d уже выполнÑетÑÑ Ð² фоновом режиме" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "" +"waitchld: включаетÑÑ WNOHANG, чтобы предотвратить поÑвление неопределённого " +"блока" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: Ñтрока %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (Ñтек памÑти Ñброшен на диÑк)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(рабочий каталог: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: ошибка вызова getpgrp " + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: диÑциплина Ñтроки" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: диÑциплина Ñтроки" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "не удаётÑÑ Ð·Ð°Ð´Ð°Ñ‚ÑŒ группу процеÑÑа терминала (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "Ñтот командный процеÑÑор не может управлÑть заданиÑми" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: ошибка утверждениÑ: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\\r\n" +"malloc: %s:%d: утверждение не удалоÑÑŒ\\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "неизвеÑтно" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: блок в ÑпиÑке Ñвободных затёрт" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: вызван Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ уже оÑвобождённого блока" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: вызван Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ невыделенного блока" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" +"free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " +"диапазона" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "" +"free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " +"диапазона" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: размеры начального и конечного блока отличаютÑÑ" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: вызван Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ невыделенного блока" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" +"realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " +"диапазона" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "" +"realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " +"диапазона" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: размеры начального и конечного блока отличаютÑÑ" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: таблица Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð° запиÑÑми FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p уже еÑть в таблице как выделенный?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p уже еÑть в таблице как Ñвободный?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "недопуÑтимое оÑнование" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: узел неизвеÑтен" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ñлужба" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: недопуÑтимое указание Ñетевого пути" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "Ñетевые операции не поддерживаютÑÑ" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Ð”Ð»Ñ Ð²Ð°Ñ ÐµÑть почта в $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Ð”Ð»Ñ Ð²Ð°Ñ ÐµÑть почта в $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² %s были прочитаны\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: требуетÑÑ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкое выражение" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ожидаетÑÑ Â«;»" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: «((%s))»" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: недопуÑтимый тип инÑтрукции %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"блок here-document в Ñтроке %d разделён знаком конца файла (ожидалÑÑ Â«%s»)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"make_redirection: инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Â«%d» вышла за пределы диапазона" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) превыÑил SIZE_MAX (%lu): Ñтрока " +"обрезана" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "доÑтигнуто макÑимальное чиÑло переменных here-document" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "неожиданный конец файла во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка «%c»" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "неожиданный конец файла во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка «]]»" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в уÑловном выражении: неожиданный маркер «%s»" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в уÑловном выражении" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "неожиданный маркер «%s», ожидалÑÑ Â«)»" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "ожидаетÑÑ Ñимвол «)»" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "неожиданный аргумент «%s» Ð´Ð»Ñ ÑƒÑловного унарного оператора" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "неожиданный аргумент Ð´Ð»Ñ ÑƒÑловного унарного оператора" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "неожиданный маркер «%s», ожидаетÑÑ ÑƒÑловный бинарный оператор" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "ожидаетÑÑ ÑƒÑловный бинарный оператор" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "неожиданный аргумент «%s» Ð´Ð»Ñ ÑƒÑловного бинарного оператора" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "неожиданный аргумент Ð´Ð»Ñ ÑƒÑловного бинарного оператора" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "неожиданный маркер «%c» в уÑловной команде" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "неожиданный маркер «%s» в уÑловной команде" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "неожиданный маркер %d в уÑловной команде" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€Ñдом Ñ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¼ маркером «%s»" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€Ñдом Ñ Â«%s»" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неожиданный конец файла" + +#: parse.y:6365 +msgid "syntax error" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Ð”Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð° из командного процеÑÑора иÑпользуйте «%s».\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "неожиданный конец файла во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка «)»" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Â«%s» не найдена" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: возможен беÑконечный цикл повторов" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: неверный Ñоединитель «%d»" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: недопуÑтимый идентификатор файла" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: пуÑтой указатель на файл" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: «%c»: недопуÑтимый Ñимвол форматированиÑ" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "файловый деÑкриптор за пределами диапазона" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: неоднозначное перенаправление" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: не удаётÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñать ÑущеÑтвующий файл" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: ограниченный режим: не удаётÑÑ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ вывод" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "не удаётÑÑ Ñоздать временный файл Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÐ° here-document: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¸Ñвоить файловый деÑкриптор переменной" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port не поддерживаетÑÑ Ð±ÐµÐ· Ñети" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "ошибка перенаправлениÑ: не удаётÑÑ Ñоздать копию файлового деÑкриптора" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "не удалоÑÑŒ найти /tmp; Ñоздайте Ñтот каталог" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp должен быть допуÑтимым названием каталога" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: недопуÑтимый параметр" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "не удаётÑÑ ÑƒÑтановить UID %d: Ñффективный UID %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "не удаётÑÑ ÑƒÑтановить GID %d: Ñффективный GID %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить отладчик: режим отладки отключён" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: Ñто каталог" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Ðе удаётÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ название" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, верÑÐ¸Ñ %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"ИÑпользование:\t%s [длинные параметры GNU] [параметры] ...\n" +"\t\t%s [длинные параметры GNU] [параметры] файл_Ñкрипта ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Длинные параметры GNU:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Параметры командного процеÑÑора:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" +"\t-irsD или -c команда или -O короткие_параметры\t\t(только при запуÑке)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s или -o параметр\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñведений о параметрах командного процеÑÑора " +"введите «%s -c \"help set\"».\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñведений о вÑтроенных командах введите «%s -c " +"help».\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Ð”Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ Ñообщений об ошибках иÑпользуйте команду «bashbug».\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "ДомашнÑÑ Ñтраница bash: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"ÐžÐ±Ñ‰Ð°Ñ Ñправка по иÑпользованию программ GNU: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Фиктивный Ñигнал" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Отбой" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Прерывание" + +#: siglist.c:58 +msgid "Quit" +msgstr "Выход" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½ÑтрукциÑ" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "ТраÑÑа/ловушка BPT" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "ИÑключение при обработке чиÑел Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой" + +#: siglist.c:86 +msgid "Killed" +msgstr "Убит" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Ошибка шины" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Ошибка Ñегментации" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Ðеверный ÑиÑтемный вызов" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Конвейер не работает" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Сигнал чаÑов" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Прерван" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Срочное Ñобытие ввода/вывода" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "ОÑтановлен (Ñигналом)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Продолжение" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Смерть или оÑтановка дочернего процеÑÑа" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "ОÑтановлен (ввод Ñ tty)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "ОÑтановлен (вывод на tty)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "Готов к вводу/выводу" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Ограничение ЦП" + +#: siglist.c:154 +msgid "File limit" +msgstr "Ограничение величины файла" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Сигнал чаÑов (виртуальный)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Сигнал чаÑов (профиль)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Окно изменено" + +#: siglist.c:170 +msgid "Record lock" +msgstr "ЗапиÑÑŒ блокирована" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Сигнал Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Сигнал Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "Ожидание входных данных HFT" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "неизбежна ошибка питаниÑ" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "неизбежно падение ÑиÑтемы" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "процеÑÑ Ð¿ÐµÑ€ÐµÐ½Ð¾ÑитÑÑ Ð½Ð° другой ЦП" + +#: siglist.c:198 +msgid "programming error" +msgstr "Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "УÑтановлен режим монитора HFT" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "Выход из режима монитора HFT" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "ПоÑледовательноÑть звуков HFT завершена" + +#: siglist.c:214 +msgid "Information request" +msgstr "Информационный запроÑ" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "ÐеизвеÑтный номер Ñигнала %d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтановка: нет закрывающей «%s» в %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¸Ñвоить ÑпиÑок Ñлементу маÑÑива" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "не удаётÑÑ Ñоздать конвейер Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки процеÑÑа" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "не удаётÑÑ Ñоздать дочерний процеÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ именованный конвейер %s Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ именованный конвейер %s Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "" +"не удаётÑÑ Ñкопировать именованный конвейер %s в файловый деÑкриптор %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "подÑтановка команды: во входных данных проигнорирован нулевой байт" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "не удаётÑÑ Ñоздать конвейер Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки команды" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "не удаётÑÑ Ñоздать дочерний процеÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки команды" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" +"command_substitute: не удаётÑÑ Ñкопировать конвейер в файловый деÑкриптор 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: недопуÑтимое название переменной Ð´Ð»Ñ ÑÑылки на имÑ" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: недопуÑтимое непрÑмое раÑкрытие" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: недопуÑтимое Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: параметр не задан или пуÑтой" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: параметр не задан или пуÑтой" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: заданное подÑтрокой выражение меньше нулÑ" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¿Ð¾Ð´Ñтановка" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: такое приÑвоение невозможно" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"в будущих верÑиÑÑ… командный процеÑÑор оценка будет выполнÑтьÑÑ ÐºÐ°Ðº " +"математичеÑÐºÐ°Ñ Ð¿Ð¾Ð´Ñтановка" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтановка: нет закрывающей «`» в %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "нет Ñовпадений: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "ожидаетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: ожидаетÑÑ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленное выражение" + +#: test.c:265 +msgid "`)' expected" +msgstr "ожидаетÑÑ Ñимвол «)»" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "ожидаетÑÑ Ñимвол «)», обнаружено %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: ожидаетÑÑ Ð±Ð¸Ð½Ð°Ñ€Ð½Ñ‹Ð¹ оператор" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: ожидаетÑÑ ÑƒÐ½Ð°Ñ€Ð½Ñ‹Ð¹ оператор" + +#: test.c:881 +msgid "missing `]'" +msgstr "отÑутÑтвует Ñимвол «]»" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ожидаетÑÑ Â«;»" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "недопуÑтимый номер Ñигнала" + +#: trap.c:325 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: доÑтигнут макÑимальный уровень вложенноÑти eval (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: неверное значение в trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: обработчик Ñигнала — SIG_DFL; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ° %d (%s) " +"Ñамому Ñебе" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: неверный Ñигнал %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "ошибка импорта Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ð´Ð»Ñ Â«%s»" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "Ñлишком выÑокий уровень командного процеÑÑора (%d); ÑбраÑываетÑÑ Ð´Ð¾ 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: в текущей облаÑти отÑутÑтвует контекÑÑ‚ функции" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: переменной не может быть приÑвоено значение" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: целое чиÑле приÑваиваетÑÑ ÑÑылке на имÑ" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: в текущей облаÑти отÑутÑтвует контекÑÑ‚ функции" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s имеет пуÑтую exportstr" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "недопуÑтимый Ñимвол %d в exportstr Ð´Ð»Ñ %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "отÑутÑтвует «=» в exportstr Ð´Ð»Ñ %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context: заголовок shell_variables не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñ‚ÐµÐºÑтом функции" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: отÑутÑтвует контекÑÑ‚ global_variables" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: заголовок shell_variables не ÑвлÑетÑÑ Ð¾Ð±Ð»Ð°Ñтью временного " +"окружениÑ" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ как ФÐЙЛ" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: недопуÑтимое значение Ð´Ð»Ñ Ð´ÐµÑкриптора файла траÑÑировки" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: значение ÑовмеÑтимоÑти за пределами диапазона" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "© Free Software Foundation, Inc, 2012." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ GPLv3+: GNU GPL верÑии 3 или более поздней \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, верÑÐ¸Ñ %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"Это Ñвободное программное обеÑпечение. Ð’Ñ‹ можете изменÑть и раÑпроÑтранÑть " +"его." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "ÐИКÐКÐЯ ГÐРÐÐТИЯ не предоÑтавлÑетÑÑ Ð² пределах, допуÑкаемых законом." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ %lu байт (выделено %lu байт)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ %lu байт" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ %lu байт (выделено %lu байт)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ %lu байт" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [имÑ[=значение] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] Ð¸Ð¼Ñ [Ð¸Ð¼Ñ ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPSVX] [-m раÑкладка] [-f файл] [-q имÑ] [-u name] [-r " +"поÑлед_клавиш] [-x поÑлед_клавиш:команда_shell] [поÑлед_клавиш:фнкц_readline " +"или команда_readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [вÑтр_команда [аргумент ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [выражение]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [каталог]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] команда [аргумент ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [имÑ[=значение] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] имÑ[=значение] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [параметр] имÑ[=значение] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [аргумент ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [аргумент ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f файл] [Ð¸Ð¼Ñ ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [аргумент ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts Ñтрока_параметров Ð¸Ð¼Ñ [аргумент]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a имÑ] [команда] [аргументы ...]] [перенаправление ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e редактор] [-lnr] [перваÑ] [поÑледнÑÑ] или fc -s [шаблон=замена] " +"[команда]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [задание]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [задание ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p путь] [-dt] [Ð¸Ð¼Ñ ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [шаблон ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d Ñмещение] [n] или history -anrw [файл] или history -ps " +"аргумент [аргумент...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [задание ...] или jobs -x команда [аргументы]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [задание ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s назв_Ñигнала | -n номер_Ñигнала | -назв_Ñигнала] ид_процеÑÑа | " +"назв_заданиÑ] ... или kill -l [назв_Ñигнала]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let аргумент [аргумент ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a маÑÑив] [-d разделитель] [-i текÑÑ‚] [-n чиÑло_Ñимволов] [-N " +"чиÑло_Ñимволов] [-p приглашение] [-t тайм-аут] [-u fd] [Ð¸Ð¼Ñ ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o параметр] [--] [аргумент ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [Ð¸Ð¼Ñ ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [имÑ[=значение ...] или export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [имÑ[=значение] ...] или readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source файл [аргументы]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". файл [аргументы]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [выражение]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ аргумент... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[аргумент] Ñигнал ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] Ð¸Ð¼Ñ [Ð¸Ð¼Ñ ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ограничение]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [режим]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-n] [идентификатор ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [идентификатор ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for ИМЯ [in СЛОВÐ... ;] do КОМÐÐДЫ; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( выраж1; выраж2; выраж3 )); do КОМÐÐДЫ; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select ИМЯ [in СЛОВР... ;] do КОМÐÐДЫ; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] конвейер" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case СЛОВО in [ШÐБЛОР[| ШÐБЛОÐ]...) КОМÐÐДЫ ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if КОМÐÐДЫ; then КОМÐÐДЫ; [ elif КОМÐÐДЫ; then КОМÐÐДЫ; ]... [ else " +"КОМÐÐДЫ; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while КОМÐÐДЫ; do КОМÐÐДЫ; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until КОМÐÐДЫ; do КОМÐÐДЫ; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [ИМЯ] команда [перенаправлениÑ]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function ИМЯ { КОМÐÐДЫ ; } или ИМЯ () { КОМÐÐДЫ ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ КОМÐÐДЫ ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "задание [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( выражение ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ выражение ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "" +"переменные — имена и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… переменных командного процеÑÑора" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | каталог]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [параметр ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v переменнаÑ] формат [аргументы]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o параметр] [-A дейÑтвие] [-G " +"глоб_шаблон] [-W ÑпиÑок_Ñлов] [-F функциÑ] [-C команда] [-X фильтр_шабл] [-" +"P префикÑ] [-S ÑуффикÑ] [Ð¸Ð¼Ñ ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o параметр] [-A дейÑтвие] [-G глоб_шабл] [-W " +"ÑпиÑок_Ñлов] [-F функциÑ] [-C команда] [-X фильтр_шабл] [-P префикÑ] [-S " +"ÑуффикÑ] [Ñлово]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o параметр] [-DE] [Ð¸Ð¼Ñ ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d разделитель] [-n чиÑло] [-O начало] [-s чиÑло] [-t] [-u fd] [-C " +"callback] [-c quantum] [маÑÑив]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n чиÑло] [-O начало] [-s чиÑло] [-t] [-u fd] [-C callback] [-c " +"quantum] [маÑÑив]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Определение или отображение пÑевдонимов.\n" +" \n" +" ЕÑли не указать аргументы, alias выводит ÑпиÑок пÑевдонимов\n" +" в виде «alias имÑ=значение» на Ñтандартный вывод.\n" +" \n" +" Ð’ противном Ñлучае каждому имени, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ указано значение,\n" +" назначаетÑÑ Ð¿Ñевдоним. ЕÑли значение в конце Ñодержит пробел,\n" +" Ñледующее Ñлово будет проверÑтьÑÑ Ð½Ð° замену пÑевдонима при его\n" +" развёртывании.\n" +" \n" +" Параметры:\n" +" -p\tвыводит вÑе определённые пÑевдонимы\n" +" \n" +" СоÑтоÑние выхода:\n" +" alias возвращает иÑтину, еÑли Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ имени был задан\n" +" пÑевдоним." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"УдалÑет вÑе имена из ÑпиÑка определённых пÑевдонимов.\n" +" \n" +" Параметры:\n" +" -a\tудалÑет вÑе пÑевдонимы\n" +" \n" +" Возвращает уÑпех, еÑли Ð¸Ð¼Ñ ÑвÑзано Ñ ÑущеÑтвующим пÑевдонимом." + +#: builtins.c:291 +#, fuzzy +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Определение привÑзок клавиш и переменных readline.\n" +" \n" +" ПривÑзывает поÑледовательноÑть клавиш функции readline или макроÑу\n" +" или задаёт переменную readline. СинтакÑÐ¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð² без параметров " +"аналогичен\n" +" ÑинтакÑиÑу файла ~/.inputrc, но вÑÑ‘ должно передаватьÑÑ Ð² одном " +"аргументе,\n" +" например bind '\"\\C-x\\C-r\": перечитать-init-файл'.\n" +" \n" +" Параметры:\n" +" -m раÑкладка иÑпользовать указанную раÑкладку во Ð²Ñ€ÐµÐ¼Ñ " +"выполнениÑ\n" +" данной команды. ДопуÑтимые раÑкладки: emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command и vi-insert.\n" +" -l вывеÑти Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹\n" +" -P вывеÑти Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ и их привÑзки\n" +" -p вывеÑти функции и их привÑзки в формате\n" +" Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n" +" -S вывеÑти ÑпиÑок поÑледовательноÑтей клавиш, которые\n" +" вызывают макроÑÑ‹, и их значениÑ\n" +" -s вывеÑти ÑпиÑок поÑледовательноÑтей клавиш, которые\n" +" вызывают макроÑÑ‹, и их значениÑ\n" +" в формате Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n" +" -V вывеÑти Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… и их значениÑ\n" +" -v вывеÑти имена переменных и их значениÑ\n" +" в формате Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n" +" -q имÑ_функции\t вывеÑти клавиши, вызывающие указанную функцию\n" +" -u имÑ_функции отвÑзать вÑе клавиши, привÑзанные к указанной " +"функции\n" +" -r поÑл-клавиш удалить привÑзку Ð´Ð»Ñ Ð¿Ð¾ÑледовательноÑти клавиш\n" +" -f файл прочитать привÑзки из файла\n" +" -x поÑл-клавиш:кмнд-shell выполнить команду bash, еÑли введена\n" +" \t\t\t\tпоÑледовательноÑть клавиш\n" +" -X\t\t вывеÑти поÑледовательноÑти клавиш, привÑзанные Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ -" +"x, и ÑвÑзанные команды\n" +" в формате Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n" +" \n" +" СоÑтоÑние выхода:\n" +" bind возвращает 0, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Прерывание цикла for, while или until.\n" +" \n" +" Прерывает цикл for, while или until. ЕÑли указано N, прерывает N " +"вложенных\n" +" циклов.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 0, еÑли N не больше или равно 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Возобновление цикла for, while или until.\n" +" \n" +" ВозобновлÑет Ñледующую итерацию вложенного цикла for, while или until.\n" +" ЕÑли указано N, возобновлÑет N-й вложенный цикл.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 0, еÑли N не больше или равно 1." + +#: builtins.c:354 +#, fuzzy +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Выполнение вÑтроенных команд.\n" +" \n" +" ВыполнÑет вÑтроенную команду bash Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸\n" +" без поиÑка команды. Это полезно, еÑли нужно переопределить вÑтроенную " +"команду\n" +" как функцию командного процеÑÑора, в Ñтой функции нужно выполнить " +"вÑтроенную команду.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние выхода вÑтроенной команды или ложь, еÑли ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ " +"команда bash\n" +" не ÑвлÑетÑÑ Ð²Ñтроенной." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Возвращает контекÑÑ‚ вызова текущей подпрограммы.\n" +" \n" +" ЕÑли выражение не указано, возвращает «$line $filename». ЕÑли выражение " +"указано, возвращает\n" +" «$line $subroutine $filename». Эти дополнительные данные можно\n" +" иÑпользовать Ð´Ð»Ñ Ñ‚Ñ€Ð°ÑÑировки Ñтека.\n" +" \n" +" Значение Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ количеÑтво кадров, которое нужно вызвать\n" +" Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° к текущему кадру. Первый кадр имеет номер 0.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 0, еÑли командный процеÑÑор не выполнÑет функцию, или " +"выражение\n" +" ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым." + +#: builtins.c:387 +#, fuzzy +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Смена рабочего каталога командного процеÑÑора.\n" +" \n" +" ИзменÑет текущий каталог на указанный каталог. Каталог по умолчанию " +"хранитÑÑ Ð²\n" +" переменной $HOME командного процеÑÑора.\n" +" \n" +" ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $CDPATH определÑет путь поиÑка каталога, Ñодержащего\n" +" указанный каталог. Ðльтернативные каталоги в $CDPATH разделÑÑŽÑ‚ÑÑ " +"двоеточием (:).\n" +" ПуÑтое название каталога ÑоответÑтвует текущему каталогу. ЕÑли каталог " +"начинаетÑÑ\n" +" Ñ ÐºÐ¾Ñой черты (/), Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $CDPATH не иÑпользуетÑÑ.\n" +" \n" +" ЕÑли каталог не найден и задан параметр «cdable_vars»,\n" +" Ñлово ÑчитаетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ переменной. ЕÑли Ñта Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ñодержит " +"значение,\n" +" оно иÑпользуетÑÑ Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°.\n" +" \n" +" Параметры:\n" +" -L\tпереходить по Ñимвольным ÑÑылкам: ÑÑылки раÑкрываютÑÑ \n" +" \tв каталоге поÑле обработки ÑкземплÑров «..»\n" +" -P\tиÑпользовать физичеÑкую Ñтруктуру каталогов без перехода\n" +" \tпо Ñимвольным ÑÑылкам: ÑÑылки раÑкрываютÑÑ Ð² каталоге до\n" +" \tобработки «..»\n" +" -e\tеÑли указан параметр -P, и не удаётÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ текущий\n" +" \tрабочий каталог, команда завершаетÑÑ Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÑоÑтоÑнием\n" +" -@ на ÑиÑтемах, которые Ñто поддерживают, предÑтавлÑет файл Ñ " +"раÑширенными\n" +" атрибутами как каталог, Ñодержащий атрибуты файла\n" +" \n" +" По умолчанию выполнÑетÑÑ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ по Ñимвольным ÑÑылкам (как при указании " +"параметра «-L»).\n" +" «..» обрабатываетÑÑ Ð¿ÑƒÑ‚Ñ‘Ð¼ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ компонента пути до коÑой " +"черты\n" +" или из начала каталога.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 0, еÑли каталог был изменён, и еÑли $PWD был уÑпешно " +"уÑтановлен\n" +" при иÑпользовании параметра -P. Ð’ противном Ñлучае возвращаетÑÑ " +"ненулевое ÑоÑтоÑние." + +#: builtins.c:425 +#, fuzzy +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Вывод Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ рабочего каталога.\n" +" \n" +" Параметры:\n" +" -L\tпоказать значение $PWD, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ на\n" +" \tтекущий рабочий каталог\n" +" -P\tпоказать название физичеÑкого каталога без Ñимвольных ÑÑылок\n" +" \n" +" По умолчанию pwd работает, как еÑли бы «-L» не был указан.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 0, еÑли был указан допуÑтимый параметр или можно прочитать\n" +" текущий каталог." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"ПуÑÑ‚Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°.\n" +" \n" +" Команда не выполнÑет никаких дейÑтвий и ни на что не влиÑет.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Ð’Ñегда возвращает уÑпех." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Возвращает результат уÑпешного выполнениÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Ð’Ñегда возвращает уÑпех." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Возвращает результат неудачного выполнениÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Ð’Ñегда возвращает ошибку." + +#: builtins.c:471 +#, fuzzy +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Выполнение проÑтой команды или вывод информации о командах.\n" +" \n" +" ВыполнÑет команду Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ без поиÑка функции командного " +"процеÑÑора\n" +" или выводит информацию об указанных командах. Можно иÑпользовать Ð´Ð»Ñ " +"вызова команд\n" +" Ñ Ð´Ð¸Ñка, когда Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует.\n" +" \n" +" Параметры:\n" +" -p\tиÑпользовать значение по умолчанию Ð´Ð»Ñ $PATH, чтобы " +"гарантированно\n" +" \tнайти вÑе Ñтандартные команды\n" +" -v\tвывеÑти опиÑание команды аналогично вÑтроенной команде «type»\n" +" -V\tвывеÑти более подробное опиÑание каждой команды\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние выхода КОМÐÐДЫ или ошибку, еÑли КОМÐÐДРне найдена." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Указание значений переменных и атрибутов.\n" +" \n" +" ОбъÑвление переменных и назначение им атрибутов. ЕÑли имена не " +"указаны,\n" +" выводит атрибуты и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñех переменных.\n" +" \n" +" Параметры:\n" +" -f\tограничить дейÑтвие или вывеÑти имена функций и их определениÑ\n" +" -F\tвывеÑти только имена функций (а также номер Ñтроки\n" +" \tв иÑходном файле при отладке)\n" +" -g\tÑоздать глобальные переменные при иÑпользовании в функции " +"командного процеÑÑора; в противном Ñлучае\n" +" \tигнорируетÑÑ\n" +" -p\tвывеÑти атрибуты и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени\n" +" \n" +" Параметры, задающие атрибуты:\n" +" -a\tÑделать имена индекÑированными маÑÑивами (еÑли поддерживаетÑÑ)\n" +" -A\tÑделать имена аÑÑоциативными маÑÑивами (еÑли поддерживаетÑÑ)\n" +" -i\tназначить именам атрибут «integer»\n" +" -l\tперевеÑти имена в нижний региÑтр при назначении\n" +" -n\tÑделать Ð¸Ð¼Ñ ÑÑылкой на переменную Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼, ÑоответÑтвующим её " +"значению\n" +" -r\tотключить запиÑÑŒ в имена\n" +" -t\tназначить именам атрибут «trace»\n" +" -l\tперевеÑти имена в верхний региÑтр при назначении\n" +" -x\tÑкÑпортировать имена\n" +" \n" +" Знак «+» вмеÑто «-» отключает указанный атрибут.\n" +" \n" +" Переменные Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ «integer» Ñодержат математичеÑкое выражение (Ñм.\n" +" команду «let»), которое раÑÑчитываетÑÑ Ð¿Ñ€Ð¸ назначении Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ " +"переменной.\n" +" \n" +" При иÑпользовании в функции «declare» делает имена локальными как при " +"иÑпользовании\n" +" данной команды. Параметр «-g» отключает Ñто поведение.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла\n" +" ошибка приÑвоениÑ." + +#: builtins.c:532 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Указание значений переменных и атрибутов.\n" +" \n" +" УÑтарел. См. «help declare»." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Определение локальных переменных.\n" +" \n" +" Создаёт локальную переменную Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем и приÑваивает ей " +"указанное значение. Параметром может быть\n" +" любой параметр, принимаемый командой «declare».\n" +" \n" +" Локальные переменные можно иÑпользовать только внутри функции. Они " +"видны\n" +" только той функции, в которой они определены, и её дочерним функциÑм.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр, не возникла\n" +" ошибка приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ или командный процеÑÑор не выполнÑет " +"функцию." + +#: builtins.c:557 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Вывод аргументов на Ñтандартный вывод.\n" +" \n" +" Выводит аргументы, разделённые пробелом, добавлÑÑ Ð² конце Ñимвол новой " +"Ñтроки,\n" +" на Ñтандартный вывод.\n" +" \n" +" Параметры:\n" +" -n\tне добавлÑть Ñимвол новой Ñтроки\n" +" -e\tвключить интерпретацию Ñимволов, Ñкранированных обратной коÑой " +"чертой\n" +" -E\tÑвно отключить интерпретацию Ñимволов, Ñкранированных обратной " +"коÑой чертой\n" +" \n" +" echo интерпретирует Ñледующие Ñимволы, Ñкранированные обратной коÑой " +"чертой:\n" +" \\a\tоповещение (звуковой Ñигнал)\n" +" \\b\tbackspace\n" +" \\c\tотключение дальнейшего вывода\n" +" \\e\tÑимвол escape\n" +" \\E\tÑимвол escape\n" +" \\f\tпрогон Ñтраницы\n" +" \\n\tÐ½Ð¾Ð²Ð°Ñ Ñтрока\n" +" \\r\tвозврат каретки\n" +" \\t\tÐ³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑциÑ\n" +" \\v\tÐ²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑциÑ\n" +" \\\\\tÐ¾Ð±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÐºÐ¾ÑÐ°Ñ Ñ‡ÐµÑ€Ñ‚Ð°\n" +" \\0nnn\tÑимвол Ñ ASCII-кодом NNN (воÑьмеричным) NNN может быть " +"длиной\n" +" \tот 0 до 3 воÑьмеричных цифр\n" +" \\xHH\tвоÑьмиразрÑдный Ñимвол, значение которого — HH " +"(шеÑтнадцатеричное) HH\n" +" \tможет быть одной или Ð´Ð²ÑƒÐ¼Ñ ÑˆÐµÑтнадцатеричными цифрами\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли не произошла ошибка запиÑи." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Вывод аргументов на Ñтандартный вывод.\n" +" \n" +" Выводит аргументы на Ñтандартный вывод, добавлÑÑ Ð² конце Ñимвол новой " +"Ñтроки.\n" +" \n" +" Параметры:\n" +" -n\tне добавлÑть Ñимвол новой Ñтроки\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли не произошла ошибка запиÑи." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Включение и отключение вÑтроенных команд командного процеÑÑора.\n" +" \n" +" Включает и отключает команды, вÑтроенные в командный процеÑÑор. " +"Отключение позволит\n" +" выполнить команду Ñ Ð´Ð¸Ñка, название которой Ñовпадает Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ " +"вÑтроенной команды,\n" +" без ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ пути к ней.\n" +" \n" +" Параметры:\n" +" -a\tпоказать ÑпиÑок вÑтроенных команд и их ÑоÑтоÑние\n" +" -n\tотключить вÑе указанные имена или вывеÑти ÑпиÑок отключённых " +"команд\n" +" -p\tпоказать ÑпиÑок вÑтроенных команд\n" +" -s\tпоказать только Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð²Ñтроенных команд «special» Posix\n" +" \n" +" Параметры, управлÑющие динамичеÑкой загрузкой:\n" +" -f\tзагрузить вÑтроенную указанную команду из указанного файла\n" +" -d\tудалить вÑтроенную функцию, загруженную Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -f\n" +" \n" +" Без ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð² включаютÑÑ Ð²Ñе указанные команды.\n" +" \n" +" Чтобы иÑпользовать команду «test», найденную в переменной $PATH,\n" +" а не вÑтроенную в командный процеÑÑор, введите «enable -n test».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли указанное Ð¸Ð¼Ñ Ð½Ðµ ÑвлÑетÑÑ Ð²Ñтроенной командой или " +"не произошла ошибка." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Выполнение аргументов как команды командного процеÑÑора.\n" +" \n" +" ОбъединÑет аргументы в одну Ñтроку, результат передаётÑÑ\n" +" в командный процеÑÑор Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ полученных команд.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние выхода команды или уÑпех, еÑли команда пуÑтаÑ." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Ðнализ аргументов параметра.\n" +" \n" +" getopts иÑпользуетÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°Ð¼Ð¸ командного процеÑÑора Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°\n" +" позиционных параметров.\n" +" \n" +" «Ñтрока_параметров» Ñодержит буквы раÑпознаваемых параметров. ЕÑли " +"поÑле\n" +" буквы идёт двоеточие, ÑчитаетÑÑ, что у параметра еÑть аргумент,\n" +" который должен быть отделён пробелом.\n" +" \n" +" При каждом Ñвоём вызове getopts помеÑтит Ñледующий параметр в " +"переменную\n" +" $имÑ, проинициализировав Ñто имÑ, еÑли оно не ÑущеÑтвует,\n" +" и проиндекÑирует Ñледующий обрабатываемый аргумент в переменной\n" +" $OPTIND. ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $OPTIND инициализируетÑÑ Ð¿Ñ€Ð¸ каждом вызове\n" +" командного процеÑÑора или Ñкрипта. Когда Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° нужен аргумент,\n" +" getopts помещает Ñтот аргумент в переменную $OPTARG.\n" +" \n" +" getopts Ñообщает об ошибках Ð´Ð²ÑƒÐ¼Ñ ÑпоÑобами. ЕÑли первый Ñимвол\n" +" в «Ñтроке_параметров» ÑвлÑетÑÑ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸ÐµÐ¼, getopts включает режим " +"молчаниÑ. Ð’ Ñтом\n" +" режиме ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках не выводÑÑ‚ÑÑ. ЕÑли указан неверный\n" +" параметр, getopts помещает Ñимвол параметра в переменную $OPTARG. ЕÑли\n" +" обÑзательный аргумент не найден, getopts помещает «:» в «имÑ»\n" +" и задаёт Ð´Ð»Ñ $OPTARG Ñимвол найденного параметра. ЕÑли getopts не в " +"режиме\n" +" молчаниÑ, и был указан неверный параметр, getopts помещает «?»\n" +" в ÐÐЗВÐÐИЕ и удалÑет переменную OPTARG. ЕÑли обÑзательный аргумент не " +"найден, в ÐÐЗВÐÐИЕ\n" +" помещаетÑÑ Â«?», Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OPTARG удалÑетÑÑ Ð¸ выводитÑÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑтичеÑкое\n" +" Ñообщение.\n" +" \n" +" ЕÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OPTERR имеет значение 0, getopts отключает\n" +" вывод Ñообщений об ошибках, даже еÑли первый Ñимвол переменной\n" +" OPTSTRING не ÑвлÑетÑÑ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸ÐµÐ¼. По умолчанию Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OPTERR имеет " +"значение 1.\n" +" \n" +" Getopts обычно анализирует позиционные параметры ($0–$9), но еÑли\n" +" задано больше аргументов, анализируютÑÑ Ð¿Ð¾Ñледние.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли найден параметр. Возвращает ошибку, еÑли " +"доÑтигнут\n" +" конец параметров или возникла ошибка." + +#: builtins.c:694 +#, fuzzy +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Замена командного процеÑÑора указанной командой.\n" +" \n" +" ВыполнÑет команду, заменÑÑ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ командный процеÑÑор указанной " +"программой.\n" +" Указанные аргументы ÑтановÑÑ‚ÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹. ЕÑли команда не " +"указана,\n" +" вÑе Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ выполнÑтьÑÑ Ð² текущем командном процеÑÑоре.\n" +" \n" +" Параметры:\n" +" -a имÑ\t\tпередать Ð¸Ð¼Ñ ÐºÐ°Ðº нулевой аргумент в команду\n" +" -c\t\tвыполнить команду Ñ Ð¿ÑƒÑтым окружением\n" +" -l\t\tпомеÑтить тире в нулевой аргумент Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹\n" +" \n" +" ЕÑли команду не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ, неинтерактивный командный процеÑÑор\n" +" закроетÑÑ (еÑли только на задан «execfail»).\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли команда не была найдена или не возникла ошибка " +"перенаправлениÑ." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Выход из командного процеÑÑора.\n" +" \n" +" Закрывает командный процеÑÑор Ñ ÑоÑтоÑнием N. ЕÑли N не указан,\n" +" ÑоÑтоÑнием выхода будет ÑоÑтоÑние поÑледней выполненной команды." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Выход из командного процеÑÑора login.\n" +" \n" +" Закрывает командный процеÑÑор login Ñ ÑоÑтоÑнием выхода N. Возвращает\n" +" ошибку, еÑли выполнÑетÑÑ Ð½Ðµ в командном процеÑÑоре login." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Отображение или выполнение команд из журнала.\n" +" \n" +" fc выводит ÑпиÑок команд из журнала или позволÑет изменить и повторно " +"выполнить их.\n" +" Ðргументы «перваÑ» и «поÑледнÑÑ» могут быть чиÑлами, определÑющими " +"диапазон.\n" +" Ðргумент «перваÑ» также может быть Ñтрокой, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚\n" +" поÑледнюю команду, начинающуюÑÑ Ñ Ñтой Ñтроки.\n" +" \n" +" Параметры:\n" +" -e редактор\tуказать редактор По умолчанию иÑпользуетÑÑ $FCEDIT, \n" +" \t\tзатем Ñледует $EDITOR, а затем — vi\n" +" -l \tпоказать Ñтроки вмеÑто редактированиÑ\n" +" -n\tне показывать номера Ñтрок в ÑпиÑке\n" +" -r\tинвертировать порÑдок Ñтрок (новые в начале)\n" +" \n" +" При запуÑке в формате «fc -s [шаблон=замена ...] [команда]» команда\n" +" выполнÑетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ поÑле замены ÑтараÑ=новаÑ.\n" +" \n" +" Полезный пÑевдоним Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹Â â€” r='fc -s'. Так еÑли ввеÑти «r cc»,\n" +" будет выполнена поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, начинающаÑÑÑ Ñ Â«cc», а еÑли ввеÑти " +"«r»,\n" +" будет выполнена поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех или ÑоÑтоÑние выполненной команды. Ð’ Ñлучае ошибки " +"возвращает ненулевое ÑоÑтоÑние." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Перевод Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð² интерактивный режим.\n" +" \n" +" Переводит указанное задание в интерактивный режим, делаÑ\n" +" его текущим заданием. ЕÑли задание не указано, иÑпользуетÑÑ\n" +" текущее задание.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние команды, переведённой в интерактивный режим, или " +"ошибку, еÑли возникла ошибка." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Перевод заданий в фоновый режим.\n" +" \n" +" Переводит указанные Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð² фоновый режим, как еÑли бы\n" +" они были запущены Ñ Â«&». ЕÑли задание не указано, иÑпользуютÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ\n" +" текущего заданиÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли не включено управление заданиÑми или не произошла " +"ошибка." + +#: builtins.c:793 +#, fuzzy +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Запоминание или отображение меÑтоположений программ.\n" +" \n" +" ОпределÑет и запоминает полный путь Ð´Ð»Ñ Ð²Ñех указанных команд. ЕÑли\n" +" аргументы не указаны, выводит информацию о запомненных командах.\n" +" \n" +" Параметры:\n" +" -d\t\tзабыть запомненные меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð²Ñех указанных команд\n" +" -l\t\tотобразить данные в формате Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n" +" -p путь\t\tиÑпользовать указанный путь как полный путь к команде\n" +" -r\t\tзабыть вÑе запомненные меÑтоположениÑ\n" +" -t\t\tвывеÑти запомненные меÑтоположение вÑех команд,\n" +" \t\tуказав перед каждым из них ÑоответÑтвующее Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹,\n" +" \t\tеÑли указано неÑколько команд.\n" +" Ðргументы:\n" +" ИМЯ\t\tвÑе команды ищутÑÑ Ð² $PATH и добавлÑÑŽÑ‚ÑÑ Ð² ÑпиÑок\n" +" \t\tзапомненных команд.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли команда была найдена или был указан допуÑтимый " +"параметр." + +#: builtins.c:818 +#, fuzzy +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Вывод информации о вÑтроенных командах.\n" +" \n" +" Показывает краткую Ñправку о вÑтроенных командах. ЕÑли указан\n" +" шаблон, выводит подробную Ñправку по вÑем командам, удовлетворÑющим " +"шаблону.\n" +" Ð’ противном Ñлучае выводитÑÑ ÑпиÑок разделов Ñправки.\n" +" \n" +" Параметры:\n" +" -d\tпоказать краткое опиÑание каждого раздела\n" +" -m\tпоказать Ñправку по иÑпользованию в формате man\n" +" -s\tпоказать только краткую Ñправку по иÑпользованию Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾\n" +" \tраздела, ÑоответÑтвующего шаблону\n" +" \n" +" Ðргументы:\n" +" ШÐБЛОÐ\tшаблон, определÑющий раздел Ñправки\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был найден шаблон или был указан допуÑтимый " +"параметр." + +#: builtins.c:842 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Отображение или изменение журнала команд.\n" +" \n" +" Выводит журнал команд Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñтрок и звёздочками (*) перед вÑеми\n" +" изменёнными запиÑÑми. С аргументом N показываютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ поÑледние N " +"запиÑей.\n" +" \n" +" Параметры:\n" +" -c\tочиÑтить журнал, удалив из него вÑе запиÑи\n" +" -d Ñмещение\tудалить запиÑÑŒ журнала по указанному Ñмещению\n" +" \n" +" -a\tдобавить журнал текущего ÑеанÑа в файл журнала\n" +" -n\tпрочитать вÑе запиÑи, которые ещё не были прочитаны из файла " +"журнала\n" +" -r\tпрочитать файл журнала и добавить его Ñодержимое\n" +" \tв журнал\n" +" -w\tзапиÑать текущий журнал в файл журнала\n" +" \tи добавить запиÑи в журнал\n" +" \n" +" -p\tдобавить в журнал указанные аргументы и показать результат,\n" +" \tне ÑохранÑÑ ÐµÐ³Ð¾ в журнал\n" +" -s\tдобавить аргументы в журнал как одну запиÑÑŒ\n" +" \n" +" ЕÑли указан файл, он иÑпользуетÑÑ ÐºÐ°Ðº файл журнала. Ð’ противном Ñлучае\n" +" еÑли $HISTFILE Ñодержит значение, иÑпользуетÑÑ Ñтот файл, иначе — файл " +"~/.bash_history.\n" +" \n" +" ЕÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $HISTTIMEFORMAT задана и не ÑвлÑетÑÑ Ð¿ÑƒÑтой, её " +"значение\n" +" иÑпользуетÑÑ ÐºÐ°Ðº Ñтрока Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ strftime(3) Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° метки\n" +" времени Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ показанной запиÑи журнала. Ð’ противном Ñлучае метки " +"времени не будут показаны.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." + +#: builtins.c:879 +#, fuzzy +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Отображение ÑоÑтоÑÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹.\n" +" \n" +" Выводит ÑпиÑок активных заданий. ЕÑли указан номер заданиÑ, выводитÑÑ " +"только Ñто задание.\n" +" ЕÑли не указать параметры, будет показано ÑоÑтоÑние вÑех активных " +"заданий.\n" +" \n" +" Параметры:\n" +" -l\tпоказать идентификаторы процеÑÑов в дополнение к обычной " +"информации\n" +" -n\tпоказать только те процеÑÑÑ‹, у которых изменилоÑÑŒ ÑоÑтоÑние\n" +" \tÑ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° поÑле поÑледнего уведомлениÑ\n" +" -p\tпоказать только идентификаторы процеÑÑов\n" +" -r\tпоказать только запущенные заданиÑ\n" +" -s\tпоказать только оÑтановленные заданиÑ\n" +" \n" +" ЕÑли указан параметр -x, команда выполнÑетÑÑ Ð¿Ð¾Ñле замены вÑех номеров\n" +" заданий, указанных в аргументах, на идентификатор процеÑÑа\n" +" лидера группы процеÑÑов заданиÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка.\n" +" ЕÑли указан параметр -x, возвращает ÑоÑтоÑние выхода команды." + +#: builtins.c:906 +#, fuzzy +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Удаление заданий в текущем командном процеÑÑоре.\n" +" \n" +" УдалÑет вÑе указанные Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¸Ð· ÑпиÑка активных заданий. ЕÑли\n" +" задание не указано, удалÑетÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ задание.\n" +" \n" +" Параметры:\n" +" -a\tудалить вÑе заданиÑ, еÑли не указано конкретное задание\n" +" -h\tпометить вÑе заданиÑ, чтобы им не отправлÑлÑÑ Ñигнал SIGHUP,\n" +" \tеÑли командный процеÑÑор получает Ñигнал SIGHUP\n" +" -r\tудалить только активные заданиÑ\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или задание." + +#: builtins.c:925 +#, fuzzy +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Отправка Ñигнала заданию.\n" +" \n" +" ОтправлÑет процеÑÑам или заданиÑм Ñигнал Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ названием\n" +" или номером. ЕÑли номер или название Ñигнала\n" +" не указаны, отправлÑетÑÑ Ñигнал SIGTERM.\n" +" \n" +" Параметры:\n" +" -s Ñигнал\tназвание Ñигнала\n" +" -n Ñигнал\tномер Ñигнала\n" +" -l\t\tпоказывает Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов; еÑли поÑле аргументов указано «-" +"l»,\n" +" \tони ÑчитаютÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñигналов, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… необходимо показать " +"названиÑ\n" +" \n" +" kill — Ñто вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, Ð¿Ñ€ÐµÐ´Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ð°Ñ Ð´Ð»Ñ Ð´Ð²ÑƒÑ… задач: " +"иÑпользовать\n" +" номера заданий вмеÑто номеров процеÑÑов и убивать процеÑÑÑ‹\n" +" при доÑтижении предельного чиÑла процеÑÑов.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"РаÑчёт математичеÑких выражений.\n" +" \n" +" ВыполнÑет раÑчёт вÑех аргументов в математичеÑком выражении. РаÑчёт " +"выполнÑетÑÑ\n" +" Ð´Ð»Ñ Ñ†ÐµÐ»Ñ‹Ñ… чиÑел фикÑированной ширины Ñ Ð±ÐµÐ· проверки на переполнение.\n" +" Однако деление на 0 перехватываетÑÑ Ð¸ выдаётÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°. Указанные ниже " +"операторы объединены\n" +" в группы Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¼ приоритетом. Группы перечиÑлены\n" +" в порÑдке ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð°.\n" +" \n" +" \tid++, id--\tпоÑледующее увеличение и уменьшение переменной\n" +" \t++id, --id\tпредварительное увеличение и уменьшение переменной\n" +" \t-, +\t\tунарный Ð¼Ð¸Ð½ÑƒÑ Ð¸ плюÑ\n" +" \t!, ~\t\tлогичеÑкое и побитовое отрицание\n" +" \t**\t\tвозведение в Ñтепень\n" +" \t*, /, %\t\tумножение, деление, оÑтаток\n" +" \t+, -\t\tÑложение, вычитание\n" +" \t<<, >>\t\tбитовые Ñдвиги влево или вправо\n" +" \t<=, >=, <, >\tÑравнение\n" +" \t==, !=\t\tравенÑтво, неравенÑтво\n" +" \t&\t\tпобитовое И\n" +" \t^\t\tпобитовое иÑключающее ИЛИ\n" +" \t|\t\tпобитовое ИЛИ\n" +" \t&&\t\tлогичеÑкое И\n" +" \t||\t\tлогичеÑкие ИЛИ\n" +" \tвыражение ? выражение : выражение\n" +" \t\t\tуÑловный оператор\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tприÑвоение\n" +" \n" +" в качеÑтве операндов можно иÑпользовать переменные командного " +"процеÑÑора. Ðазвание переменной\n" +" заменÑетÑÑ ÐµÑ‘ значением (приводитÑÑ Ðº целому чиÑлу фикÑированной " +"ширины)\n" +" в выражении. У переменной не должен быть включён атрибут integer,\n" +" чтобы её можно было иÑпользовать в выражении.\n" +" \n" +" Операторы вычиÑлÑÑŽÑ‚ÑÑ Ð² порÑдке ÑтаршинÑтва. Вложенные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð²\n" +" Ñкобках вычиÑлÑÑŽÑ‚ÑÑ Ð¿ÐµÑ€Ð²Ñ‹Ð¼Ð¸ и могут переопределить указанные\n" +" выше правила ÑтаршинÑтва.\n" +" \n" +" СоÑтоÑние выхода:\n" +" ЕÑли поÑледний ÐРГУМЕÐТ имеет значение 0, let возвращает 1. Ð’ противном " +"Ñлучае let возвращает 0." + +#: builtins.c:994 +#, fuzzy +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Чтение Ñтроки Ñо Ñтандартного ввода и разделение её на полÑ.\n" +" \n" +" Читает одну Ñтроку Ñо Ñтандартного ввода или из файлового деÑкриптора,\n" +" еÑли указан параметр -u. Строка разделÑетÑÑ Ð½Ð° Ð¿Ð¾Ð»Ñ Ð¿Ð¾ Ñловам.\n" +" Первое Ñлово приÑваиваетÑÑ Ð¿ÐµÑ€Ð²Ð¾Ð¼Ñƒ указанному имени, второе Ñлово — " +"второму\n" +" имени и так далее.\n" +" ОÑтавшиеÑÑ Ñлова приÑваиваютÑÑ Ð¿Ð¾Ñледнему указанному имени. Ð’ качеÑтве " +"разделителей Ñлов иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñимволы\n" +" из переменной $IFS.\n" +" \n" +" ЕÑли имена не указаны, Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока ÑохранÑетÑÑ Ð² переменной " +"$REPLY.\n" +" \n" +" Параметры:\n" +" -a маÑÑив\tпоÑледовательно приÑвоить прочитанные Ñлова указателÑм\n" +" \t\tмаÑÑива, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ\n" +" -d разделитель\tпродолжить до первого разделителÑ,\n" +" \t\tа не до Ñимвола новой Ñтроки\n" +" -e\t\tÑ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ readline получить Ñтроку в интерактивном командном " +"процеÑÑоре\n" +" -i текÑÑ‚\t\tиÑпользовать текÑÑ‚ в качеÑтве иÑходного Ð´Ð»Ñ readline\n" +" -n чиÑло_знаков\tвыполнить возврат поÑле Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ‡Ð¸Ñла знаков, а не " +"ждать\n" +" \t\tÑимвола новой Ñтроки; учитывать разделитель, еÑли до него было " +"прочитано\n" +" \t\tменьше указанного чиÑла знаков\n" +" -N чиÑло_знаков\tвыполнить возврат только поÑле Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ " +"чиÑла знаков,\n" +" \t\tеÑли только не был получен конец Ñтроки или не иÑтекло Ð²Ñ€ÐµÐ¼Ñ " +"ожиданиÑ, Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÑ Ð²Ñе разделители\n" +" -p приглашение\tпоказать приглашение без Ñимвола новой Ñтроки в конце\n" +" \t\tперед тем как читать\n" +" -r\t\tне выполнÑть Ñкранирование Ñимволами коÑой черты\n" +" -s\t\tне показывать данные, полученные из терминала\n" +" -t тайм-аут\tпрекратить ожидание и вывеÑти ошибку, еÑли Ð¿Ð¾Ð»Ð½Ð°Ñ " +"входнаÑ\n" +" \t\tÑтрока не была прочитана за указанное чиÑло Ñекунд Ð’ переменной " +"$TMOUT хранитÑÑ\n" +" \t\tзначение тайм-аута по умолчанию. Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\n" +" \t\tможет быть дробным чиÑлом. ЕÑли тайм-аут равен 0, read немедленно " +"выполнÑет возврат,\n" +" \t\tне пытаÑÑÑŒ прочитать никакие данные. УÑпех возвращаетÑÑ,\n" +" \t\tтолько еÑли входные данные доÑтупны по указанному файловому " +"деÑкриптору. \n" +" \t\tСоÑтоÑние выхода больше 128, еÑли Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð±Ñ‹Ð»Ð¾ превышено.\n" +" -u fd\t\tчитать из файлового деÑкриптора, а не Ñо Ñтандартного входа\n" +" \n" +" СоÑтоÑние выхода:\n" +" СоÑтоÑние выхода будет нулевым, еÑли не был вÑтречен конец файла, не " +"иÑтекло Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\n" +" (в Ñтом Ñлучае ÑоÑтоÑние выхода будет больше 128), не возникла ошибка " +"приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹\n" +" или не был указан недопуÑтимый файловый деÑкриптор как аргумент Ð´Ð»Ñ -u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Возврат из функции командного процеÑÑора.\n" +" \n" +" ВыполнÑет выход из функции или иÑходного Ñкрипта Ñо значением возврата,\n" +" указанным как N. ЕÑли N не указан, иÑпользуетÑÑ ÑоÑтоÑние возврата\n" +" поÑледней команды, выполненной в функции или Ñкрипте.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает N или ошибку, еÑли командный процеÑÑор не выполнÑет функцию " +"или Ñкрипт." + +#: builtins.c:1054 +#, fuzzy +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"ПриÑвоение или удаление значений параметров командного процеÑÑора и " +"позиционных параметров.\n" +" \n" +" ИзменÑет значение атрибутов командного процеÑÑора и позиционных " +"параметров или\n" +" выводит Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… командного процеÑÑора.\n" +" \n" +" Параметры:\n" +" -a пометить переменные, которые были изменены или Ñозданы Ð´Ð»Ñ " +"ÑкÑпорта\n" +" -b немедленно уведомить о завершении заданиÑ\n" +" -e немедленно выйти, еÑли команда выполнÑет выход Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ " +"ÑоÑтоÑнием\n" +" -f отключить генерацию имён файлов (подÑтановка)\n" +" -h запомнить раÑположение команд, как они выглÑдели ранее\n" +" -k помеÑтить в окружение Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ вÑе аргументы приÑвоениÑ,\n" +" а не только те, что были указаны перед командой\n" +" -m включено управление заданиÑми\n" +" -n прочитать команды, но не выполнÑть их\n" +" -o название-параметра\n" +" Задаёт переменную, ÑоответÑтвующую названию параметра:\n" +" allexport Ñквивалент -a\n" +" braceexpand Ñквивалент -B\n" +" emacs иÑпользовать Ñтиль emacs Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ " +"Ñтрок\n" +" errexit Ñквивалент -e\n" +" errtrace Ñквивалент -E\n" +" functrace Ñквивалент -T\n" +" hashall Ñквивалент -h\n" +" histexpand Ñквивалент -H\n" +" history включить журнал команд\n" +" ignoreeof не закрывать командный процеÑÑор поÑле Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ " +"конца файла\n" +" interactive-comments\n" +" разрешить показ комментариев в интерактивных " +"командах\n" +" keyword Ñквивалент -k\n" +" monitor Ñквивалент -m\n" +" noclobber Ñквивалент -C\n" +" noexec Ñквивалент -n\n" +" noglob Ñквивалент -f\n" +" nolog допуÑкаетÑÑ, но игнорируетÑÑ\n" +" notify Ñквивалент -b\n" +" nounset Ñквивалент -u\n" +" onecmd Ñквивалент -t\n" +" physical Ñквивалент -P\n" +" pipefail возвращаемое значение конвейера ÑвлÑетÑÑ " +"ÑоÑтоÑнием\n" +" поÑледней команды, завершившейÑÑ Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ " +"ÑоÑтоÑнием,\n" +" или нулём, еÑли не было команды, завершившейÑÑ Ñ " +"ненулевым ÑоÑтоÑнием\n" +" posix изменить поведение bash там, где операции\n" +" по умолчанию отличаютÑÑ Ð¾Ñ‚ Ñтандарта Posix, " +"чтобы\n" +" ÑоответÑтвовать Ñтому Ñтандарту\n" +" privileged Ñквивалент -p\n" +" verbose Ñквивалент -v\n" +" vi иÑпользовать Ñтиль vi Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтрок\n" +" xtrace Ñквивалент -x\n" +" -p Включён, когда реальный и Ñффективный идентификаторы Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ " +"не Ñовпадают.\n" +" Отключает обработку файла $ENV и импорт функций командного\n" +" процеÑÑора. ЕÑли отключить Ñтот параметр, Ñффективные UID и GID\n" +" будут назначены реальным UID и GID.\n" +" -t Выйти поÑле Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ команды.\n" +" -u Считать незаданные переменные ошибкой при замене.\n" +" -v Выводить входные Ñтроки на Ñкран поÑле их чтениÑ.\n" +" -x Выводить команды и их аргументы во Ð²Ñ€ÐµÐ¼Ñ Ð¸Ñ… выполнениÑ.\n" +" -B Командный процеÑÑор развернёт Ñкобки.\n" +" -C ЕÑли задано, запретить перезапиÑÑŒ ÑущеÑтвующих обычных файлов\n" +" вÑледÑтвие Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð°.\n" +" -E ЕÑли задано, ловушка ERR наÑледуетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñми командного " +"процеÑÑора.\n" +" -H Включить замену журнала Ñ Ð¸Ñпользованием !. По умолчанию Ñтот " +"флаг\n" +" уÑтановлен, еÑли командный процеÑÑор интерактивный.\n" +" -P ЕÑли задано, не разрешать Ñимвольные ÑÑылки при выполнении " +"команд,\n" +" таких как cd, которые изменÑÑŽÑ‚ текущий каталог.\n" +" -T ЕÑли задано, ловушка DEBUG наÑледуетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñми командного " +"процеÑÑора.\n" +" -- Ðазначить вÑе оÑтавшиеÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ позиционным параметрам.\n" +" ЕÑли аргументов не оÑталоÑÑŒ, позиционные параметры\n" +" удалÑÑŽÑ‚ÑÑ.\n" +" - Ðазначить вÑе оÑтавшиеÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ позиционным параметрам.\n" +" Параметры -x и -v выключены.\n" +" \n" +" ЕÑли вмеÑто - указать +, флаги будут выключены. \n" +" Флаги также можно иÑпользовать до вызова командного процеÑÑора. " +"Текущий\n" +" набор флагов можно проÑмотреть в $-. ОÑтавшиеÑÑ n аргументов ÑвлÑÑŽÑ‚ÑÑ " +"позиционными\n" +" параметрами и назначаютÑÑ Ð² порÑдке $1, $2, .. $n. ЕÑли\n" +" аргументы не указаны, выводÑÑ‚ÑÑ Ð²Ñе переменные командного процеÑÑора.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр." + +#: builtins.c:1139 +#, fuzzy +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Удаление значений и атрибутов переменных и функций командного процеÑÑора.\n" +" \n" +" Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ ÑƒÐ´Ð°Ð»Ñет ÑоответÑтвующую переменную или функцию.\n" +" \n" +" Параметры:\n" +" -f\tÑчитать каждое указанное Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ командного процеÑÑора\n" +" -v\tÑчитать каждое указанное Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ командного процеÑÑора\n" +" -n\tÑчитать каждое указанное Ð¸Ð¼Ñ ÑÑылкой на название и удалить Ñаму " +"переменную,\n" +" \tа не переменную, на которую указывает ÑÑылка\n" +" \n" +" ЕÑли параметры не указаны, unset Ñначала пытаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ переменную. " +"ЕÑли Ñто не удаётÑÑ,\n" +" пытаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ функцию.\n" +" \n" +" Ðекоторые переменные Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ. См. также «readonly».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или указанное Ð¸Ð¼Ñ " +"доÑтупно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"УÑтановка атрибута ÑкÑпорта Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… командного процеÑÑора.\n" +" \n" +" Помечает вÑе имена Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого ÑкÑпорта в Ñреду длÑ\n" +" поÑледующих выполнÑемых команд. ЕÑли указано значение, оно " +"приÑваиваетÑÑ Ð¿ÐµÑ€ÐµÐ´ ÑкÑпортом.\n" +" \n" +" Параметры:\n" +" -f\tиÑпользовать функции командного процеÑÑора\n" +" -n\tудалить ÑвойÑтво ÑкÑпорта изо вÑех имён\n" +" -p\tвывеÑти ÑпиÑок вÑех ÑкÑпортированных переменных и функций\n" +" \n" +" Ðргумент «--» отключает дальнейшую обработку параметров.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или имÑ." + +#: builtins.c:1180 +#, fuzzy +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Запрет Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… командного процеÑÑора.\n" +" \n" +" Делает каждое Ð¸Ð¼Ñ Ð´Ð¾Ñтупным только чтениÑ. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñтих имён нельзÑ\n" +" будет изменить в будущем. ЕÑли указано значение, приÑваивает Ñто " +"значение\n" +" перед тем, как Ñделать его доÑтупным только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ.\n" +" \n" +" Параметры:\n" +" -a\tÑÑылатьÑÑ Ð½Ð° переменные индекÑированного маÑÑива\n" +" -A\tÑÑылатьÑÑ Ð½Ð° переменные аÑÑоциативного маÑÑива\n" +" -f\tиÑпользовать функции командного процеÑÑора\n" +" -p\tвывеÑти ÑпиÑок вÑех переменных или функций, доÑтупных только Ð´Ð»Ñ " +"чтениÑ,\n" +" в завиÑимоÑти от того, указан ли параметр -f\n" +" \n" +" Ðргумент «--» отключает дальнейшую обработку параметров.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или имÑ." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Сдвиг позиционных параметров.\n" +" \n" +" Переименовывает позиционные параметры $N+1,$N+2,.. в $1,$2,..\n" +" ЕÑли N не указан, ÑчитаетÑÑ, что указано 1.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли N положительный или меньше $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Выполнение команд из файла в текущем командном процеÑÑоре.\n" +" \n" +" Читает и выполнÑет команды из указанного файла в текущем командном " +"процеÑÑоре. \n" +" Файла ищетÑÑ Ð² каталогах, указанных в переменной $PATH.\n" +" ЕÑли указаны аргументы, они ÑтановÑÑ‚ÑÑ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¼Ð¸ параметрами\n" +" при выполнении файла.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды из файла. Возвращает " +"ошибку,\n" +" еÑли файл не удаётÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"ПриоÑтановка работы командного процеÑÑора.\n" +" \n" +" ПриоÑтанавливает работу текущего командного процеÑÑора до Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ " +"Ñигнала SIGCONT.\n" +" Работу командных процеÑÑоров login можно приоÑтановить только в " +"принудительном режиме.\n" +" \n" +" Параметры:\n" +" -f\tпринудительно приоÑтановить работу, даже еÑли командный " +"процеÑÑор — login\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли не включено управление заданиÑми или не произошла " +"ошибка." + +#: builtins.c:1261 +#, fuzzy +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"РаÑчёт уÑловного выражениÑ.\n" +" \n" +" Возвращает ÑоÑтоÑние 0 (иÑтина) или 1 (ложь) поÑле\n" +" раÑчёта выражениÑ. Ð’Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть унарными или бинарными. " +"Унарные\n" +" Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ‡Ð°Ñто иÑпользуютÑÑ Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°. Также\n" +" доÑтупны Ñтоковые операторы и операторы ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ‡Ð¸Ñел.\n" +" \n" +" Поведение команды test завиÑит от количеÑтва аргументов. Полное\n" +" опиÑание Ñм. в Ñтранице руководÑтва bash.\n" +" \n" +" Операторы работы Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸:\n" +" \n" +" -a ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует.\n" +" -b ФÐЙЛ ИÑтина, еÑли файл предÑтавлÑет блочное уÑтройÑтво.\n" +" -c ФÐЙЛ ИÑтина, еÑли файл предÑтавлÑет Ñимвольное уÑтройÑтво.\n" +" -d ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼.\n" +" -e ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует.\n" +" -f ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ " +"файлом.\n" +" -g ФÐЙЛ ИÑтина, еÑли Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° уÑтановлен бит SGID.\n" +" -h ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ Ñимвольной ÑÑылкой.\n" +" -L ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ Ñимвольной ÑÑылкой.\n" +" -k ФÐЙЛ ИÑтина, еÑли Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° уÑтановлен sticky-бит.\n" +" -p ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ конвейером.\n" +" -r ФÐЙЛ ИÑтина, еÑли вы можете прочитать файл.\n" +" -s ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и не ÑвлÑетÑÑ Ð¿ÑƒÑтым.\n" +" -S ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ Ñокетом.\n" +" -t ФД ИÑтина, еÑли файловый деÑкриптор ФД открыт в " +"терминале.\n" +" -u ФÐЙЛ ИÑтина, еÑли Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° уÑтановлен бит SUID.\n" +" -w ФÐЙЛ ИÑтина, еÑли вы можете выполнить запиÑÑŒ в файл.\n" +" -x ФÐЙЛ ИÑтина, еÑли вы можете выполнить файл.\n" +" -O ФÐЙЛ ИÑтина, еÑли вы ÑвлÑетеÑÑŒ Ñффективным владельцем " +"файла.\n" +" -G ФÐЙЛ ИÑтина, еÑли ваша группа ÑвлÑетÑÑ Ñффективным " +"владельцем файла.\n" +" -N ФÐЙЛ ИÑтина, еÑли файл был изменён поÑле поÑледнего чтениÑ.\n" +" \n" +" ФÐЙЛ1 -nt ФÐЙЛ2 ИÑтина, еÑли файл1 новее файла2 (ÑоглаÑно\n" +" дате изменениÑ).\n" +" \n" +" ФÐЙЛ1 -ot ФÐЙЛ2 ИÑтина, еÑли файл1 Ñтарее файла2.\n" +" \n" +" ФÐЙЛ1 -ef ФÐЙЛ2 ИÑтина, еÑли файл1 ÑвлÑетÑÑ Ð¶Ñ‘Ñткой ÑÑылкой на " +"файл2.\n" +" \n" +" Строковые операторы:\n" +" \n" +" -z СТРОКРИÑтина, еÑли Ñтрока ÑвлÑетÑÑ Ð¿ÑƒÑтой.\n" +" \n" +" -n СТРОКÐ\n" +" СТРОКРИÑтина, еÑли Ñтрока не ÑвлÑетÑÑ Ð¿ÑƒÑтой.\n" +" \n" +" СТРОКÐ1 = СТРОКÐ2\n" +" ИÑтина, еÑли Ñтроки Ñовпадают.\n" +" СТРОКÐ1 != СТРОКÐ2\n" +" ИÑтина, еÑли Ñтроки не Ñовпадают.\n" +" СТРОКÐ1 < СТРОКÐ2\n" +" ИÑтина, еÑли СТРОКÐ1 ÑортируетÑÑ Ð´Ð¾ СТРОКИ2 " +"лекÑикографичеÑки.\n" +" СТРОКÐ1 > СТРОКÐ2\n" +" ИÑтина, еÑли СТРОКÐ1 ÑортируетÑÑ Ð¿Ð¾Ñле СТРОКИ2 " +"лекÑикографичеÑки.\n" +" \n" +" ОÑтальные операторы:\n" +" \n" +" -o ПÐРÐМЕТР ИÑтина, еÑли параметр командного процеÑÑора включён.\n" +" -v ПЕР\t ИÑтина, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ процеÑÑора задана\n" +" -R ПЕР\t ИÑтина, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ процеÑÑора задана и " +"ÑвлÑетÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¹ ÑÑылкой.\n" +" ! ВЫРÐЖ ИÑтина, еÑли выражение возвращает ложь.\n" +" ВЫРÐЖ1 -a ВЫРÐЖ2 ИÑтина, еÑли оба Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‚ иÑтину.\n" +" ВЫРÐЖ1 -o ВЫРÐЖ2 ИÑтина, еÑли Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно из выражений возвращает " +"иÑтину.\n" +" \n" +" арг1 ОП арг2 МатематичеÑкие проверки. ОП может быть одним из " +"Ñледующих: -eq, -ne,\n" +" -lt, -le, -gt или -ge.\n" +" \n" +" МатематичеÑкие бинарные операторы возвращают иÑтину, еÑли ÐРГУМЕÐТ1 " +"равен, не равен,\n" +" меньше, меньше или равен либо больше или равен\n" +" ÐРГУМЕÐТУ2.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли выражение иÑтинно, или ошибку, еÑли выражение " +"ложно\n" +" или указан недопуÑтимый аргумент." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"РаÑчёт уÑловного выражениÑ.\n" +" \n" +" Это Ñиноним вÑтроенной команды test, но поÑледним аргументом должна\n" +" быть Ñкобка «]», ÑоответÑÑ‚Ð²ÑƒÑŽÑ‰Ð°Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰ÐµÐ¹ «[»." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Отображение времени процеÑÑа.\n" +" \n" +" Показывает объединённые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ ÑиÑтемы Ð´Ð»Ñ " +"командного\n" +" процеÑÑора и вÑех его дочерних процеÑÑов.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Ð’Ñегда возвращает уÑпех." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Захват Ñигналов и других Ñобытий.\n" +" \n" +" ОпределÑет и активирует обработчики, которые будут выполнÑтьÑÑ, когда\n" +" командный процеÑÑор получает Ñигналы или при других уÑловиÑÑ….\n" +" \n" +" Ðргумент — Ñто команда, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑчитываетÑÑ Ð¸ выполнÑетÑÑ, когда\n" +" командный процеÑÑор получает указанные Ñигнал(Ñ‹). ЕÑли аргумент " +"отÑутÑтвует (и указан один Ñигнал)\n" +" или указано «-», Ð´Ð»Ñ Ð²Ñех указанных Ñигналов воÑÑтанавливаютÑÑ\n" +" иÑходные значениÑ. ЕÑли аргумент — пуÑÑ‚Ð°Ñ Ñтрока, вÑе указанные Ñигналы " +"игнорируютÑÑ\n" +" командным процеÑÑором и вызываемыми им командами.\n" +" \n" +" ЕÑли Ñигнал — EXIT (0), аргумент выполнÑетÑÑ Ð¿Ñ€Ð¸ выходе из командного " +"процеÑÑора. ЕÑли\n" +" Ñигнал — DEBUG, аргумент выполнÑетÑÑ Ð¿ÐµÑ€ÐµÐ´ каждой проÑтой командой. " +"ЕÑли\n" +" Ñигнал — RETURN, аргумент выполнÑетÑÑ ÐºÐ°Ð¶Ð´Ñ‹Ð¹ раз, когда функциÑ\n" +" или Ñкрипт выполнÑетÑÑ Ð² . или иÑходные вÑтроенные команды завершают " +"Ñвою работу. Сигнал\n" +" ERR означает выполнение аргумента каждый раз, когда ошибка команды " +"приведёт\n" +" к выходу из командного процеÑÑора, когда включён параметр -e.\n" +" \n" +" ЕÑли аргументы не указаны, trap выводит ÑпиÑок команд, ÑвÑзанных\n" +" Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¼ Ñигналом.\n" +" \n" +" Параметры:\n" +" -l\tпоказать Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов и их номера\n" +" -p\tпоказать команды trap, ÑвÑзанные Ñ ÐºÐ°Ð¶Ð´Ñ‹Ð¼ Ñигналом\n" +" \n" +" Идентификатор Ñигнала — Ñто название Ñигнала в или номер " +"Ñигнала.\n" +" ÐÐ°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов не завиÑÑÑ‚ от региÑтра, а Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ SIG не ÑвлÑетÑÑ " +"обÑзательным. \n" +" Сигнал можно отправить в командный процеÑÑор командой «kill -signal $" +"$».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый Ñигнал или параметр." + +#: builtins.c:1400 +#, fuzzy +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Вывод информации о типе команды.\n" +" \n" +" Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ указанного имени показывает, как оно будет интерпретировано " +"при\n" +" иÑпользовании в качеÑтве Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹.\n" +" \n" +" Параметры:\n" +" -a\tпоказать вÑе меÑтоположениÑ, где еÑть иÑполнÑемый файл Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ " +"именем,\n" +" \tÐ²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ñевдонимы, вÑтроенные команды и функции, а также при уÑловии\n" +" \tчто не иÑпользуетÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ «-p»\n" +" -f\tне иÑкать функции командного процеÑÑора\n" +" -P\tпринудительно иÑкать в $PATH вÑе указанные имена, даже еÑли Ñто " +"пÑевдоним,\n" +" \tвÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° или функциÑ, и возвращать название файла на диÑке,\n" +" \tкоторый будет запущен\n" +" -p\tвозвращает название файла на диÑке, который будет запущен,\n" +" \tили ничего, еÑли «type -t имÑ» не возвращает «file».\n" +" -t\tвывеÑти одно из Ñлов «alias», «keyword»,\n" +" \t«function», «builtin», «file» или «», еÑли указанное Ð¸Ð¼Ñ ÑвлÑетÑÑ, " +"ÑоответÑтвенно,\n" +" \tпÑевдонимом, зарезервированным Ñловом, функцией, вÑтроенной командой\n" +" \tкомандного процеÑÑора, файлом на диÑке или Ð¸Ð¼Ñ Ð½Ðµ было найдено\n" +" \n" +" Ðргументы:\n" +" ИМЯ\tназвание интерпретируемой команды\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли вÑе указанные имена были найдены, или ошибку в " +"противном Ñлучае." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Изменение ограничений реÑурÑов командного процеÑÑора.\n" +" \n" +" ПозволÑет контролировать реÑурÑÑ‹, доÑтупные командному процеÑÑору и " +"Ñоздаваемым\n" +" им процеÑÑам, в ÑиÑтемах, где возможен такой контроль.\n" +" \n" +" Параметры:\n" +" -S\tиÑпользовать «мÑгкое» ограничение реÑурÑов\n" +" -H\tиÑпользовать «жёÑткое» ограничение реÑурÑов\n" +" -a\tпоказать вÑе текущие ограничениÑ\n" +" -b\tразмер буфера Ñокета\n" +" -c\tмакÑимальный размер Ñоздаваемых core-файлов\n" +" -d\tмакÑимальный размер Ñегмента данных процеÑÑа\n" +" -e\tмакÑимальный приоритет Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ («nice»)\n" +" -f\tмакÑимальный размер файлов, запиÑываемых командным процеÑÑором и " +"его дочерними процеÑÑами\n" +" -i\tмакÑимальное чиÑло ожидающих Ñигналов\n" +" -l\tмакÑимальный объём, который процеÑÑ Ð¼Ð¾Ð¶ÐµÑ‚ заблокировать в памÑти\n" +" -m\tмакÑимальный объём резидентной памÑти\n" +" -n\tмакÑимальное чиÑло открытых файловых деÑкрипторов\n" +" -p\tразмер буфера конвейера\n" +" -q\tмакÑимальное чиÑло байт в очередÑÑ… Ñообщений POSIX\n" +" -r\tмакÑимальный приоритет Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² реальном времени\n" +" -s\tмакÑимальный размер Ñтека\n" +" -t\tмакÑимальный объём процеÑÑорного времени в Ñекундах\n" +" -u\tмакÑимальное количеÑтво пользовательÑких процеÑÑов\n" +" -v\tобъём виртуальной памÑти\n" +" -x\tмакÑимальное чиÑло блокировок файлов\n" +" -T макÑимальное количеÑтво потоков\n" +" \n" +" Ðе вÑе параметры доÑтупны на вÑех платформах.\n" +" \n" +" ЕÑли указано ограничение, оно ÑвлÑетÑÑ Ð½Ð¾Ð²Ñ‹Ð¼ значением Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ " +"реÑурÑа.\n" +" Специальные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Â«soft», «hard» и «unlimited» означают,\n" +" ÑоответÑтвенно, текущее мÑгкое ограничение, текущее жёÑткое ограничение " +"и отÑутÑтвие ограничениÑ.\n" +" Ð’ противном Ñлучае выводитÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ значение указанного реÑурÑа. ЕÑли\n" +" параметр не указан, подразумеваетÑÑ Ð¸Ñпользование параметра -f.\n" +" \n" +" Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°ÑŽÑ‚ÑÑ Ñ ÑˆÐ°Ð³Ð¾Ð¼ 1024 байт, кроме параметра -t Ñ ÑˆÐ°Ð³Ð¾Ð¼ в " +"Ñекундах,\n" +" параметра -p Ñ ÑˆÐ°Ð³Ð¾Ð¼ 512 байт и параметра -u, предÑтавлÑющего\n" +" количеÑтво процеÑÑов.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Отображение или указание маÑки режима Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð².\n" +" \n" +" Задаёт маÑку РЕЖИМ Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñоздаваемых пользователем. ЕÑли РЕЖИМ не " +"указан,\n" +" выводит текущее значение маÑки.\n" +" \n" +" ЕÑли РЕЖИМ начинаетÑÑ Ñ Ñ†Ð¸Ñ„Ñ€Ñ‹, он интерпретируетÑÑ ÐºÐ°Ðº воÑьмеричное " +"чиÑло.\n" +" Ð’ противном Ñлучае он ÑчитаетÑÑ Ñимвольной Ñтрокой как Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ " +"chmod(1).\n" +" \n" +" Параметры:\n" +" -p\tеÑли РЕЖИМ не указан, вывеÑти маÑку, пригодную Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ " +"иÑпользованиÑ\n" +" -S\tвывеÑти маÑку в Ñимвольном виде, в противном Ñлучае выводитÑÑ " +"воÑьмеричное чиÑло\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый РЕЖИМ или параметр." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¸ возврат ÑоÑтоÑÐ½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð°.\n" +" \n" +" Ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех процеÑÑов, заданных идентификаторами\n" +" (идентификатор процеÑÑа или номер заданиÑ), и возвращает их ÑоÑтоÑние " +"выхода. ЕÑли идентификатор\n" +" не указан, ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех активных дочерних процеÑÑов\n" +" и возвращает нулевое ÑоÑтоÑние выхода. ЕÑли идентификатор не ÑвлÑетÑÑ " +"номером заданиÑ, ожидает завершениÑ\n" +" вÑех процеÑÑов в конвейере данного заданиÑ.\n" +" \n" +" ЕÑли указан параметр -n, ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñледующего заданиÑ\n" +" возвращает его ÑоÑтоÑние выхода.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледнего идентификатора. Возвращает ошибку, еÑли\n" +" указан недопуÑтимый идентификатор или параметр." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа и возврат ÑоÑтоÑÐ½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð°.\n" +" \n" +" Ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех процеÑÑов, заданных идентификаторами (PID), и " +"возвращает их ÑоÑтоÑние выхода.\n" +" ЕÑли идентификатор процеÑÑа не указан, ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех активных\n" +" дочерних процеÑÑов и возвращает нулевое ÑоÑтоÑние выхода. PID должен " +"быть идентификатором процеÑÑа.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледнего идентификатора. Возвращает ошибку, еÑли\n" +" указан недопуÑтимый идентификатор или параметр." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Выполнение команд Ð´Ð»Ñ Ð²Ñех Ñлементов ÑпиÑка.\n" +" \n" +" Цикл «for» выполнÑет поÑледовательноÑть команд Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñлемента\n" +" ÑпиÑка. ЕÑли операнд «in СЛОВР...;» отÑутÑтвует, подразумеваетÑÑ\n" +" операнд «in \"$@\"». Каждому Ñлементу в ÑпиÑке СЛОВРприÑваиваетÑÑ Ð˜ÐœÐ¯ " +"и Ð´Ð»Ñ Ð½ÐµÐ³Ð¾\n" +" выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"МатематичеÑкие операции в циклах.\n" +" \n" +" Эквивалентно\n" +" \t(( ВЫРÐЖ1))\n" +" \twhile (( ВЫРÐЖ2 )); do\n" +" \t\tКОМÐÐДЫ\n" +" \t\t(( ВЫРÐЖ3 ))\n" +" \tdone\n" +" ВЫРÐЖ1, ВЫРÐЖ2 и ВЫРÐЖ3 — Ñто математичеÑкие выражениÑ. ЕÑли любое из " +"выражений\n" +" не указано, ÑчитаетÑÑ, что оно возвращает 1.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Выбор Ñлов из ÑпиÑка и выполнение команд.\n" +" \n" +" СЛОВРразворачиваютÑÑ, Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€ÑƒÑ ÑпиÑок Ñлов. \n" +" Ðабор развёрнутых Ñлов выводитÑÑ Ð² поток ошибок Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸\n" +" в начале Ñтрок. ЕÑли операнд «in СЛОВР...;» отÑутÑтвует, " +"подразумеваетÑÑ\n" +" операнд «in \"$@\"». Затем выводитÑÑ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ðµ $PS3 и Ñо Ñтандартного " +"ввода\n" +" ÑчитываетÑÑ Ñтрока. ЕÑли Ñтрока ÑоÑтоит из номера,\n" +" ÑоответÑтвующего одному из показанных Ñлов, Ñтому Ñлову\n" +" приÑваиваетÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ðµ имÑ. ЕÑли Ñтрока пуÑтаÑ, будут повторно " +"показаны указанные Ñлова\n" +" и приглашение. ЕÑли прочитан Ñимвол конца файла, команда завершает Ñвою " +"работу. ЕÑли прочитаны\n" +" любые другие значениÑ, указанному имени приÑваиваетÑÑ Ð¿ÑƒÑтое значение. " +"ÐŸÑ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока\n" +" ÑохранÑетÑÑ Ð² переменную $REPLY. Команды выполнÑÑŽÑ‚ÑÑ Ð¿Ð¾Ñле каждой " +"выборки,\n" +" пока не будет выполнена команда прерываниÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Вывод времени, потраченного на выполнение конвейера.\n" +" \n" +" ВыполнÑет конвейер и выводит Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ времени, " +"пользовательÑкого времени\n" +" и ÑиÑтемного времени ЦП, потраченного на Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ð²ÐµÐ¹ÐµÑ€Ð°.\n" +" \n" +" Параметры:\n" +" -p\tпоказать Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ в формате Posix\n" +" \n" +" Ð”Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ñ… данных иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ переменной " +"$TIMEFORMAT.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращаемое ÑоÑтоÑние ÑоответÑтвует ÑоÑтоÑнию выхода конвейера." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Выполнение команд ÑоглаÑно шаблону.\n" +" \n" +" ВыполнÑет команды, когда Ñлово ÑоответÑтвует шаблону. \n" +" Ð”Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð² иÑпользуетÑÑ Ð·Ð½Ð°Ðº «|».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Выполнение команд в завиÑимоÑти от уÑловий.\n" +" \n" +" Сначала выполнÑетÑÑ ÑпиÑок «if КОМÐÐДЫ». ЕÑли ÑоÑтоÑние выхода " +"нулевое,\n" +" выполнÑетÑÑ ÑпиÑок «then КОМÐÐДЫ». Ð’ противном Ñлучае выполнÑетÑÑ Ð¿Ð¾ " +"очереди\n" +" вÑе ÑпиÑки «elif КОМÐÐДЫ», и еÑли их ÑоÑтоÑние выхода будет нулевым,\n" +" выполнитÑÑ ÑпиÑок «then КОМÐÐДЫ», и команда if завершитÑÑ. Ð’ противном " +"Ñлучае\n" +" выполнитÑÑ ÑпиÑок «else КОМÐÐДЫ», еÑли он указан. СоÑтоÑние выхода " +"вÑей\n" +" конÑтрукции ÑоответÑтвует ÑоÑтоÑнию выхода поÑледней выполненной команды " +"или будет нулевым,\n" +" еÑли ни одна проверка уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ðµ возвратила иÑтину.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Выполнение команд до тех пор, пока проверка уÑÐ»Ð¾Ð²Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ иÑтину.\n" +" \n" +" Разворачивает и выполнÑет команды до тех пор, пока поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° в\n" +" командах «while» завершаетÑÑ Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÑоÑтоÑнием.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Выполнение команд до тех пор, пока проверка уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ðµ возвращает иÑтину.\n" +" \n" +" Разворачивает и выполнÑет команды до тех пор, пока поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° в\n" +" командах «until» завершаетÑÑ Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÑоÑтоÑнием.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." + +#: builtins.c:1671 +#, fuzzy +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Создание дополнительного процеÑÑа Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем.\n" +" \n" +" ВыполнÑет команду аÑинхронно, когда Ñтандартный вывод и Ñтандартный\n" +" вход команды подключены через конвейер к деÑкрипторам файлов, которые " +"назначены\n" +" указателÑм 0 и 1 маÑÑива переменных ИМЯ в активном командном " +"процеÑÑоре.\n" +" Ð˜Ð¼Ñ Ð¿Ð¾ умолчанию — «COPROC».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние выхода команды." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Определение функции командного процеÑÑора.\n" +" \n" +" Создаёт функцию командного процеÑÑора Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем. При запуÑке в " +"качеÑтве проÑтой команды\n" +" ИМЯ выполнÑет КОМÐÐДЫ в контекÑте вызывающего их командного процеÑÑора. " +"При вызове ИМЕÐИ\n" +" аргументы передаютÑÑ Ð² функцию как $1...$n, а Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð°ÐµÑ‚\n" +" название $FUNCNAME.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð˜ÐœÐ¯ доÑтупно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Группировка команд.\n" +" \n" +" ВыполнÑет набор команд, объединённых в группу. Это единÑтвенный ÑпоÑоб " +"перенаправлениÑ\n" +" вÑего набора команд.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Возобновление работы Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð² интерактивном режиме.\n" +" \n" +" Ðналогично аргументу JOB_SPEC Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ «fg». ВозобновлÑет\n" +" работу оÑтановленного или фонового заданиÑ. Через JOB_SPEC можно задать " +"название\n" +" или номер заданиÑ. ЕÑли поÑле номера Ð·Ð°Ð´Ð°Ð½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ «&», задание будет " +"переведено\n" +" в фоновый режим, как еÑли бы идентификатор Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð±Ñ‹Ð» указан как\n" +" аргумент Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ «bg».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние возобновлённого заданиÑ." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"РаÑчёт арифметичеÑкого выражениÑ.\n" +" \n" +" Выражение раÑÑчитываетÑÑ Ð¿Ð¾ правилам Ð´Ð»Ñ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸Ñ‡ÐµÑких\n" +" выражений. Ðналогично «let выражение».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 1, еÑли выражение равно 0, в противном Ñлучае возвращает 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Выполнение уÑловной команды.\n" +" \n" +" Возвращает ÑоÑтоÑние 0 или 1 в завиÑимоÑти от результата раÑчёта\n" +" уÑловного выражениÑ. Ð’Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÑоÑтавлÑÑŽÑ‚ÑÑ Ð¸Ð· тех же примитивов, " +"которые иÑпользуютÑÑ\n" +" во вÑтроенной команде «test». Их можно объединить Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñледующих " +"операторов:\n" +" \n" +" ( выражение )\tВозвращает значение выражениÑ\n" +" ! выражение\tВозвращает иÑтину, еÑли выражение ложно, в противном " +"Ñлучае возвращает ложь\n" +" ВЫРÐЖ1 && ВЫРÐЖ2\tВозвращает иÑтину, еÑли оба Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ñтинны, в " +"противном Ñлучае возвращает ложь\n" +" ВЫРÐЖ1 || ВЫРÐЖ2\tВозвращает иÑтину, еÑли Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно из выражений " +"иÑтинно, в противном Ñлучае возвращает ложь\n" +" \n" +" ЕÑли иÑпользуютÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ñ‹ «==» и «!=», Ñтрока Ñправа от\n" +" оператора иÑпользуетÑÑ ÐºÐ°Ðº шаблон, и выполнÑетÑÑ ÑопоÑтавление по " +"шаблону.\n" +" ЕÑли иÑпользуетÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ «=~», Ñтрока Ñправа от оператора\n" +" оцениваетÑÑ ÐºÐ°Ðº регулÑрное выражение.\n" +" \n" +" Операторы && и || не раÑÑчитывают ВЫРÐЖ2, еÑли ВЫРÐЖ1 доÑтаточно длÑ\n" +" Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" 0 или 1 в завиÑимоÑти от Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Стандартные имена переменных командного процеÑÑора и их иÑпользование.\n" +" \n" +" BASH_VERSION\tÐомер верÑии bash.\n" +" CDPATH\t\tСпиÑок каталогов, разделённых двоеточиÑми, Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка\n" +" \t\tв них каталогов, указанных как аргументы Ð´Ð»Ñ Â«cd».\n" +" GLOBIGNORE\tСпиÑок шаблонов, разделённых двоеточиÑми и опиÑывающих имена " +"файлов,\n" +" \t\tкоторые будут игнорироватьÑÑ Ð¿Ñ€Ð¸ развёртывании пути.\n" +" HISTFILE\t\tÐ˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°, в котором хранитÑÑ Ð¶ÑƒÑ€Ð½Ð°Ð» команд.\n" +" HISTFILESIZE\tЧиÑло Ñтрок в файле журнала.\n" +" HISTSIZE\t\tЧиÑло Ñтрок журнала, к которым может\n" +" \t\tполучить доÑтуп командный процеÑÑор.\n" +" HOME\t\tПолный путь к вашему домашнему каталогу.\n" +" HOSTNAME\t\tÐ˜Ð¼Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑиÑтемы.\n" +" HOSTTYPE\t\tТип процеÑÑора, на котором работает Ð´Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ bash.\n" +" IGNOREEOF\tУправлÑет дейÑтвием командного процеÑÑора при получении " +"Ñимвола\n" +" \t\tÑимвола конца файла в качеÑтве единÑтвенных входных данных. ЕÑли " +"задано, тогда значение\n" +" \t\tÑвлÑетÑÑ Ñ‡Ð¸Ñлом Ñимволов EOF, которые могут быть\n" +" \t\tпрочитаны подрÑд в пуÑтой Ñтроке, поÑле чего командный процеÑÑор " +"будет закрыт\n" +" \t\t(по умолчанию — 10). ЕÑли не задано, EOF означает конец входных " +"данных.\n" +" MACHTYPE\t\tСтрока Ñ Ð¾Ð¿Ð¸Ñанием текущей ÑиÑтемы, в которой запущен bash.\n" +" MAILCHECK\tКак чаÑто (в Ñекундах) bash проверÑет наличие новой почты.\n" +" MAILPATH\t\tСпиÑок имён файлов, разделённых двоеточиÑми, в которых bash\n" +" \t\tищет почту.\n" +" OSTYPE\t\tВерÑÐ¸Ñ Unix, в которой запущена Ð´Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ bash.\n" +" PATH\t\tСпиÑок каталогов, разделённых двоеточиÑми, Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка\n" +" \t\tвыполнÑемых команд.\n" +" PROMPT_COMMAND\tКоманда, выполнÑÐµÐ¼Ð°Ñ Ð¿ÐµÑ€ÐµÐ´ выводом каждого\n" +" \t\tоÑновного приглашениÑ.\n" +" PS1\t\tОÑÐ½Ð¾Ð²Ð½Ð°Ñ Ñтрока приглашениÑ.\n" +" PS2\t\tÐ”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñтрока приглашениÑ.\n" +" PWD\t\tПолный путь до текущего каталога.\n" +" SHELLOPTS\tСпиÑок включённых параметров командного процеÑÑора, " +"разделённых двоеточиÑми.\n" +" TERM\t\tÐазвание текущего типа терминала.\n" +" TIMEFORMAT\tФормат вывода данных о времени, показываемых\n" +" \t\tкомандой time.\n" +" auto_resume\tÐепуÑтое значение означает Ñлово в Ñтроке запуÑка команды,\n" +" \t\tкоторое Ñначала ищетÑÑ Ð² ÑпиÑке\n" +" \t\tоÑтановленных заданий. ЕÑли команда найдена, задание переводитÑÑ Ð² " +"интерактивный режим.\n" +" \t\tЗначение «exact» означает, что Ñлово команды должно\n" +" \t\tточно Ñовпадать Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ в ÑпиÑке оÑтановленных заданий. \n" +" \t\tЗначение «substring» означает, что Ñлово команды\n" +" \t\tдолжно быть чаÑтью Ñтроки заданиÑ. Ð’Ñе другие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÑŽÑ‚,\n" +" \t\tчто команда должна быть префикÑом оÑтановленного заданиÑ.\n" +" histchars\tСимволы, управлÑющие раÑширением журнала\n" +" \t\tи быÑтрой подÑтановкой. Первый Ñимвол означает\n" +" \t\tподÑтановку журнала. Обычно Ñто «!». Второй Ñимвол\n" +" \t\tозначает «быÑтрую подÑтановку». Обычно Ñто «^». \n" +" \t\tТретий Ñимвол означает примечание журнала. Обычно Ñто «#».\n" +" HISTIGNORE\tСпиÑок шаблонов, разделённых двоеточиÑми и опиÑывающих " +"команды,\n" +" \t\tкоторые должны быть Ñохранены в журнале.\n" + +#: builtins.c:1821 +#, fuzzy +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Добавление каталогов в Ñтек.\n" +" \n" +" ДобавлÑет каталог в начало Ñтека каталогов или выполнÑет\n" +" ротацию Ñтека, Ð¿Ð¾Ð¼ÐµÑ‰Ð°Ñ Ð² начало Ñтека текущий рабочий\n" +" каталог. ЕÑли аргументы не указаны, менÑет меÑтами два первых " +"каталога.\n" +" \n" +" Параметры:\n" +" -n\tпредотвращает обычное изменение каталога при добавлении\n" +" \tкаталогов в Ñтек, чтобы дейÑÑ‚Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑлиÑÑŒ только над Ñтеком.\n" +" \n" +" Ðргументы:\n" +" +N\tвыполнÑет ротацию Ñтека, чтобы N-й каталог (Ñлева\n" +" \tв ÑпиÑке, показанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ)\n" +" \tÑтал первым в Ñтеке.\n" +" \n" +" -N\tвыполнÑет ротацию Ñтека, чтобы N-й каталог (Ñправа\n" +" \tв ÑпиÑке, показанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ)\n" +" \tÑтал первым в Ñтеке.\n" +" \n" +" каталог\tдобавлÑет каталог в начало Ñтека каталогов, Ð´ÐµÐ»Ð°Ñ ÐµÐ³Ð¾\n" +" \tновым текущим каталогом.\n" +" \n" +" Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° dirs показывает Ñтек каталогов.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или удалоÑÑŒ\n" +" перейти в каталог." + +#: builtins.c:1855 +#, fuzzy +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Удаление каталогов из Ñтека.\n" +" \n" +" УдалÑет запиÑи из Ñтека каталогов. ЕÑли аргументы не указаны,\n" +" удалÑет первый каталог из Ñтека и назначает новый первый каталог.\n" +" \n" +" Параметры:\n" +" -n\tпредотвращает обычное изменение каталога при удалении\n" +" \tкаталогов из Ñтека, чтобы дейÑÑ‚Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑлиÑÑŒ только над Ñтеком.\n" +" \n" +" Ðргументы:\n" +" +N\tудалÑет N-ÑŽ Ñлева запиÑÑŒ в ÑпиÑке каталогов,\n" +" \tпоказанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ. Ðапример, «popd +0»\n" +" \tудалÑет первый каталог, а «popd +1» — второй каталог.\n" +" \n" +" -N\tудалÑет N-ÑŽ Ñправа запиÑÑŒ в ÑпиÑке каталогов,\n" +" \tпоказанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ. Ðапример, «popd -0»\n" +" \tудалÑет поÑледний каталог, а «popd -1» — предпоÑледний каталог.\n" +" \n" +" Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° dirs показывает Ñтек каталогов.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или удалоÑÑŒ\n" +" перейти в каталог." + +#: builtins.c:1885 +#, fuzzy +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Отображение Ñтека каталогов.\n" +" \n" +" Выводит ÑпиÑок запомненных на данный момент каталогов. Каталоги\n" +" помещаютÑÑ Ð² ÑпиÑок командой «pushd». Ð”Ð»Ñ Ð¾Ñ‡Ð¸Ñтки\n" +" ÑпиÑка иÑпользуетÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° «popd».\n" +" \n" +" Параметры:\n" +" -c\tочиÑтить Ñтек каталогов, удалив из него вÑе Ñлементы\n" +" -l\tне выводить каталоги, начинающиеÑÑ Ñ Ñ‚Ð¸Ð»ÑŒÐ´Ñ‹ (~),\n" +" \tÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ домашний каталог\n" +" -p\tпоказать Ñтек по одному каталогу в Ñтроке\n" +" -v\tпоказать Ñтек по одному каталогу в Ñтроке\n" +" \tи Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ в Ñтеке\n" +" \n" +" Ðргументы:\n" +" +N\tпоказать N-ÑŽ запиÑÑŒ Ñлева в ÑпиÑке каталогов,\n" +" \tпоказанного при вызове без параметров, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ.\n" +" \n" +" -N\tпоказать N-ÑŽ Ñправа в ÑпиÑке каталогов запиÑÑŒ,\n" +" \tпоказанного при вызове без параметров, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." + +#: builtins.c:1916 +#, fuzzy +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"УÑтановка и удаление параметров командного процеÑÑора.\n" +" \n" +" ИзменÑет наÑтройки указанных параметров командного процеÑÑора. ЕÑли не " +"указать\n" +" аргумент Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼, выводит вÑе параметры командного процеÑÑора, " +"показываÑ\n" +" какой из них уÑтановлен, а какой нет.\n" +" \n" +" Параметры:\n" +" -o\tограничитьÑÑ Ð´Ð¾ параметров, которые заданы Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «set -o»\n" +" -p\tпоказать вÑе параметры командного процеÑÑора и их ÑоÑтоÑние\n" +" -q\tничего не выводить\n" +" -s\tвключить (set) вÑе указанные параметры\n" +" -u\tотключить (unset) вÑе указанные параметры\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли указанный параметр включён. Возвращает ошибку,\n" +" еÑли был указан недопуÑтимый параметр или параметр отключён." + +#: builtins.c:1937 +#, fuzzy +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Форматирует и выводит аргументы ÑоглаÑно указанному формату.\n" +" \n" +" Параметры:\n" +" -v перем\tвыводить в указанную переменную bash, а не\n" +" \t\tна Ñтандартный вывод\n" +" \n" +" ФОРМÐТ — Ñто ÑÐ¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ð°Ñ Ñтрока, ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‰Ð°Ñ Ñ‚Ñ€Ð¸ типа объектов: проÑтые\n" +" Ñимволы, которые копируютÑÑ Ð½Ð° Ñтандартный вывод, Ñкранирующие\n" +" поÑледовательноÑти, которые преобразовываютÑÑ Ð¸ копируютÑÑ Ð½Ð° " +"Ñтандартный\n" +" вывод, и Ñпецификации, которые активируют вывод Ñледующего уÑпешного\n" +" аргумента.\n" +" \n" +" Ð’ дополнение к Ñтандартным ÑпецификациÑм формата, опиÑанным в " +"printf(1),\n" +" printf интерпретирует:\n" +" \n" +" %b\tразвёртывание Ñкранирующих поÑледовательноÑтей Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ коÑой " +"чертой в ÑоответÑтвующий аргумент;\n" +" %q\tзаключение аргумента в кавычки, чтобы его можно было повторно " +"иÑпользовать в качеÑтве входных данных Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ процеÑÑора;\n" +" %(fmt)T вывод Ñтроки дата-времÑ, полученной поÑле иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ FMT в " +"качеÑтве\n" +" Ñтроки Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ strftime(3)\n" +" \n" +" ЕÑли необходимо задейÑтвовать вÑе аргументы, формат иÑпользуетÑÑ " +"повторно. ЕÑли\n" +" аргументов меньше, чем требуетÑÑ Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ, дополнительные\n" +" Ñпецификации Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð¿Ñ€ÐµÑ‚Ð¸Ñ€ÑƒÑŽÑ‚ÑÑ ÐºÐ°Ðº Ñодержащие нулевое\n" +" или пуÑтое значение.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка\n" +" запиÑи или приÑвоениÑ." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Определение количеÑтва аргументов, завершаемых функцией readline.\n" +" \n" +" Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени нужно указать количеÑтво завершаемых аргументов. ЕÑли " +"параметры\n" +" не указаны, выводÑÑ‚ÑÑ ÑущеÑтвующие Ñпецификации Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ\n" +" Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ.\n" +" \n" +" Параметры:\n" +" -p\tвывеÑти ÑущеÑтвующие Ñпецификации Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð² формате Ð´Ð»Ñ " +"повторного иÑпользованиÑ\n" +" -r\tудалить Ñпецификации Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени или,\n" +" \tеÑли имена не указаны, вÑе Ñпецификации\n" +" -D\tприменить Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¸ дейÑÑ‚Ð²Ð¸Ñ ÐºÐ°Ðº Ñтандартные Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´,\n" +" \tÐ´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… не определены завершениÑ\n" +" -E\tприменить Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¸ дейÑÑ‚Ð²Ð¸Ñ Ðº «пуÑтым» командам —\n" +" \tзавершение применÑетÑÑ Ðº пуÑтой Ñтроке\n" +" \n" +" Когда применÑетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ðµ, дейÑÑ‚Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑÑŽÑ‚ÑÑ Ð² алфавитном порÑдке\n" +" перечиÑленных выше параметров. Параметр -D имеет более\n" +" выÑокий приоритет, чем -E.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Вывод возможных завершений в завиÑимоÑти от параметров.\n" +" \n" +" compgen предназначен Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² функциÑÑ… bash, генерирующих\n" +" возможные завершениÑ. ЕÑли указан необÑзательный аргумент Ñлово, " +"выполнÑет\n" +" ÑопоÑтавление Ñо Ñгенерированным Ñловом.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." + +#: builtins.c:2016 +#, fuzzy +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Изменение или вывод параметров завершениÑ.\n" +" \n" +" ИзменÑет параметры Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени или, еÑли имена\n" +" не указаны, Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ завершениÑ. ЕÑли параметры не указаны, " +"выводит\n" +" параметры Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени или текущую Ñпецификацию " +"завершениÑ.\n" +" \n" +" Параметры:\n" +" \t-o параметр\tзадать параметр Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени\n" +" \t-D\t\tизменить параметры Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ «по умолчанию»\n" +" \t-E\t\tизменить параметры Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Â«Ð¿ÑƒÑтой» команды\n" +" \n" +" ИÑпользование «+o» вмеÑто «-o» отключает указанный параметр.\n" +" \n" +" Ðргументы:\n" +" \n" +" Каждое Ð¸Ð¼Ñ ÑÑылаетÑÑ Ð½Ð° команду, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ уже должна быть определена\n" +" ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ вÑтроенной команды «complete». ЕÑли " +"имена\n" +" не указаны, функциÑ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑÐµÐ¹Ñ‡Ð°Ñ Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€ÑƒÐµÑ‚ завершениÑ, должна " +"вызвать\n" +" compopt, и должны изменитьÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾\n" +" генератора завершениÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸\n" +" определена ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ." + +#: builtins.c:2047 +#, fuzzy +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Чтение Ñтрок Ñо Ñтандартного ввода в переменную индекÑированного маÑÑива.\n" +" \n" +" Читает Ñтроки Ñо Ñтандартного ввода в переменную указанного " +"индекÑированного маÑÑива\n" +" или из указанного файлового деÑкриптора, еÑли указан параметр -u. " +"ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $MAPFILE\n" +" ÑвлÑетÑÑ Ð¼Ð°ÑÑивом по умолчанию.\n" +" \n" +" Параметры:\n" +" -n чиÑло\tкопировать указанное чиÑло Ñтрок ЕÑли чиÑло равно 0, " +"копируютÑÑ Ð²Ñе Ñтроки.\n" +" -O начало\tначать приÑвоение маÑÑиву, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ " +"По умолчанию указатель равен 0.\n" +" -s чиÑло \tотброÑить указанное чиÑло первых Ñтрок\n" +" -t\t\tудалить завершающие переводы Ñтроки изо вÑех прочитанных Ñтрок\n" +" -u fd\t\tчитать Ñтроки из файлового деÑкриптора, а не Ñо Ñтандартного " +"входа\n" +" -C callback\tоценивать callback при чтении каждой Ñтроки quantum\n" +" -c quantum\tчиÑло Ñтрок, читаемых от каждого вызова до callback\n" +" \n" +" Ðргументы:\n" +" МÐССИВ\t\tназвание переменной маÑÑива, иÑпользуемой Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… файла.\n" +" \n" +" ЕÑли параметр -C указан без -c, quantum по умолчанию равен 5000. Когда\n" +" оцениваетÑÑ callback, он предоÑтавлÑет указатель на Ñледующий " +"приÑваиваемый\n" +" Ñлемента маÑÑива и на Ñтроку, приÑваиваемую Ñтому Ñлементу,\n" +" в качеÑтве дополнительных аргументов.\n" +" \n" +" ЕÑли Ñвно не указано начало, mapfile очиÑтит маÑÑив до\n" +" операции приÑвоениÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или маÑÑив " +"доÑтупен Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи\n" +" и ÑвлÑетÑÑ Ð¸Ð½Ð´ÐµÐºÑированным." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Чтение Ñтрок из файла в переменную маÑÑива.\n" +" \n" +" Синоним команды «mapfile»." + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "© Free Software Foundation, Inc, 2016." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Возвращает контекÑÑ‚ вызова текущей подпрограммы.\n" +#~ " \n" +#~ " Без EXPR выполнÑет возврат " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: процеÑÑ %5ld (%s) в the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "ÐеизвеÑтный номер Ñигнала" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Missing `}'" +#~ msgstr "Пропущен Ñимвол `}'" + +#~ msgid "brace_expand> " +#~ msgstr "brace_expand> " + +#~ msgid "Attempt to free unknown command type `%d'.\n" +#~ msgstr "" +#~ "Попытка оÑвободить памÑть Ñтруктуры команды неизвеÑтного типа `%d'.\n" + +#~ msgid "Report this to %s\n" +#~ msgstr "Сообщите об Ñтом по адреÑу %s\n" + +#~ msgid "Stopping myself..." +#~ msgstr "Прекращение работы..." + +#~ msgid "Tell %s to fix this someday.\n" +#~ msgstr "Скажите %s, чтобы он иÑправил Ñто.\n" + +#~ msgid "execute_command: bad command type `%d'" +#~ msgstr "execute_command: неверный тип команды '%d'" + +#~ msgid "real\t" +#~ msgstr "реальное\t" + +#~ msgid "user\t" +#~ msgstr "пользователÑ\t" + +#~ msgid "sys\t" +#~ msgstr "ÑиÑтемное\t" + +#~ msgid "" +#~ "real\t0m0.00s\n" +#~ "user\t0m0.00s\n" +#~ "sys\t0m0.00s\n" +#~ msgstr "" +#~ "реальное\t0m0.00s\n" +#~ "пользователÑ\t0m0.00s\n" +#~ "ÑиÑтемное\t0m0.00s\n" + +#~ msgid "cannot duplicate fd %d to fd 1: %s" +#~ msgstr "невозможно Ñкопировать файловый деÑкриптор %d в 1: %s" + +#~ msgid "%s: output redirection restricted" +#~ msgstr "%s: перенаправление вывода запрещено (ограниченный режим)" + +#~ msgid "Out of memory!" +#~ msgstr "ÐедоÑтаточно памÑти!" + +#~ msgid "You have already added item `%s'\n" +#~ msgstr "Элемент `%s' уже добавлен\n" + +#~ msgid "You have entered %d (%d) items. The distribution is:\n" +#~ msgstr "Создано %d (%d) Ñлементов. РаÑпределение:\n" + +#~ msgid "slot %3d: " +#~ msgstr "Ñлот %3d: " + +#~ msgid "" +#~ msgstr "<неизв>" + +#~ msgid "%s: bg background job?" +#~ msgstr "%s: задача уже фоноваÑ" + +#~ msgid "" +#~ "Redirection instruction from yyparse () '%d' is\n" +#~ "out of range in make_redirection ()." +#~ msgstr "" +#~ "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ yyparse () `%d'\n" +#~ "не может быть обработана make_redirection ()." + +#~ msgid "clean_simple_command () got a command with type %d." +#~ msgstr "функции clean_simple_command () передана команда типа %d." + +#~ msgid "got errno %d while waiting for %d" +#~ msgstr "ошибка %d при ожидании %d" + +#~ msgid "syntax error near unexpected token `%c'" +#~ msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° около неожиданной лекÑемы `%c'" + +#~ msgid "print_command: bad command type `%d'" +#~ msgstr "print_command: неверный тип команды `%d'" + +#~ msgid "cprintf: bad `%%' argument (%c)" +#~ msgstr "cprintf: неверный Ñпецификатор поÑле `%%' (%c)" + +#~ msgid "option `%s' requires an argument" +#~ msgstr "параметр `%s' должен иÑпользоватьÑÑ Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼" + +#~ msgid "%s: unrecognized option" +#~ msgstr "%s: неизвеÑтный параметр" + +#~ msgid "`-c' requires an argument" +#~ msgstr "`-c' должен иÑпользоватьÑÑ Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼" + +#~ msgid "%s: cannot execute directories" +#~ msgstr "%s: каталоги не могут запуÑкатьÑÑ ÐºÐ°Ðº иÑполнÑемые файлы" + +#~ msgid "Bad code in sig.c: sigprocmask" +#~ msgstr "Ðеверный код в sig.c: sigprocmask" + +#~ msgid "can't make pipes for process substitution: %s" +#~ msgstr "невозможно Ñоздать каналы Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки: %s" + +#~ msgid "reading" +#~ msgstr "чтениÑ" + +#~ msgid "writing" +#~ msgstr "запиÑи" + +#~ msgid "process substitution" +#~ msgstr "подÑтановка процеÑÑов" + +#~ msgid "command substitution" +#~ msgstr "подÑтановка команд" + +#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" +#~ msgstr "" +#~ "Ðевозможно вновь открыть канал Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки команд (файловый " +#~ "декÑриптор %d): %s" + +#~ msgid "$%c: unbound variable" +#~ msgstr "$%c: не заданы границы" + +#~ msgid "%s: bad arithmetic substitution" +#~ msgstr "%s: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð°Ñ€Ð¸Ñ„Ð¼ÐµÑ‚Ð¸Ñ‡ÐµÑÐºÐ°Ñ Ð¿Ð¾Ð´Ñтановка" + +#~ msgid "-%s: binary operator expected" +#~ msgstr "-%s: ожидаетÑÑ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ" + +#~ msgid "%s[%s: bad subscript" +#~ msgstr "%s[%s: неверный индекÑ" + +#~ msgid "[%s: bad subscript" +#~ msgstr "[%s: неверный индекÑ" + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xmalloc: невозможно заново выделить %lu байтов (выделено %lu байтов)" + +#~ msgid "digits occur in two different argv-elements.\n" +#~ msgstr "цифры вÑтречаютÑÑ Ð² двух разных Ñлементах argv.\n" + +#~ msgid "option %c\n" +#~ msgstr "параметр %c\n" + +#~ msgid "option a\n" +#~ msgstr "параметр a\n" + +#~ msgid "option b\n" +#~ msgstr "параметр b\n" + +#~ msgid "option c with value `%s'\n" +#~ msgstr "параметр c Ñо значением `%s'\n" + +#~ msgid "?? sh_getopt returned character code 0%o ??\n" +#~ msgstr "?? sh_getopt вернула код Ñимвола 0%o ??\n" + +#~ msgid "non-option ARGV-elements: " +#~ msgstr "Ñлементы ARGV, не ÑвлÑющиеÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸: " + +#~ msgid "%s: Unknown flag %s.\n" +#~ msgstr "%s: ÐеизвеÑтный флаг %s.\n" + +#~ msgid "Unknown directive `%s'" +#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° `%s'" + +#~ msgid "%s must be inside of a $BUILTIN block" +#~ msgstr "%s должно быть внутри блока $BUILTIN" + +#~ msgid "%s found before $END" +#~ msgstr "%s обнаружено раньше $END" + +#~ msgid "%s already has a function (%s)" +#~ msgstr "Ð’ %s уже еÑть Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ (%s)" + +#~ msgid "%s already had a docname (%s)" +#~ msgstr "Ð’ %s уже еÑть название документации (%s)" + +#~ msgid "%s already has short documentation (%s)" +#~ msgstr "Ð’ %s уже еÑть ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ°Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ (%s)" + +#~ msgid "%s already has a %s definition" +#~ msgstr "Ð’ %s уже еÑть определение %s" + +#~ msgid "mkbuiltins: Out of virtual memory!\n" +#~ msgstr "mkbuiltins: Ðе хватает виртуальной памÑти!\n" + +#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" +#~ msgstr "read [-r] [-p приглашение] [-a маÑÑив] [-e] [Ð¸Ð¼Ñ ...]" + +#~ msgid "%[DIGITS | WORD] [&]" +#~ msgstr "%[ЦИФРЫ | СЛОВО] [&]" + +#~ msgid "variables - Some variable names and meanings" +#~ msgstr "variables -- Имена и ÑмыÑл некоторых переменных" + +#~ msgid "`alias' with no arguments or with the -p option prints the list" +#~ msgstr "`alias' без аргументов или Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -p выводит на Ñтандартный" + +#~ msgid "of aliases in the form alias NAME=VALUE on standard output." +#~ msgstr "вывод ÑпиÑок пÑевдокоманд в виде ИМЯ=ЗÐÐЧЕÐИЕ. Ð’ противном" + +#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." +#~ msgstr "Ñлучае, Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ИМЕÐИ определÑетÑÑ Ð¿Ñевдокоманда Ñо ЗÐÐЧЕÐИЕМ." + +#~ msgid "A trailing space in VALUE causes the next word to be checked for" +#~ msgstr "" +#~ "ЕÑли на конце ЗÐÐЧЕÐИЯ еÑть пробелы, при разворачивании пÑевдокоманды" + +#~ msgid "alias substitution when the alias is expanded. Alias returns" +#~ msgstr "Ñледующее Ñлово проверÑетÑÑ Ð½Ð° подÑтановку пÑевдокоманд. Alias" + +#~ msgid "true unless a NAME is given for which no alias has been defined." +#~ msgstr "" +#~ "возвращает true, еÑли только не задано ИМЯ, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ нет пÑевдокоманд." + +#~ msgid "" +#~ "Remove NAMEs from the list of defined aliases. If the -a option is given," +#~ msgstr "" +#~ "УдалÑет ИМЕÐРиз ÑпиÑка определённых пÑевдокоманд. ЕÑли задан параметр -a," + +#~ msgid "then remove all alias definitions." +#~ msgstr "удалÑет вÑе Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ñевдокоманд." + +#~ msgid "Bind a key sequence to a Readline function, or to a macro. The" +#~ msgstr "" +#~ "СвÑзывает поÑледовательноÑть клавиш Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ Readline или Ñ Ð¼Ð°ÐºÑ€Ð¾Ñом." + +#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" +#~ msgstr "СинтакÑÐ¸Ñ Ñ‚Ð¾Ñ‚ же, что и в ~/.inputrc, но должен передаватьÑÑ" + +#~ msgid "" +#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgstr "одним аргументом: bind '\"\\C-x\\C-r\": re-read-init-file'." + +#~ msgid "Arguments we accept:" +#~ msgstr "Принимаемые аргументы:" + +#~ msgid "" +#~ " -m keymap Use `keymap' as the keymap for the duration of this" +#~ msgstr "" +#~ " -m раÑкладка ИÑпользовать во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ программы указанную" + +#~ msgid " command. Acceptable keymap names are emacs," +#~ msgstr " раÑкладку. ДопуÑтимые имена раÑкладок: emacs," + +#~ msgid "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgstr "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," + +#~ msgid " vi-command, and vi-insert." +#~ msgstr " vi-command и vi-insert." + +#~ msgid " -l List names of functions." +#~ msgstr " -l ВывеÑти ÑпиÑок имён функций." + +#~ msgid " -P List function names and bindings." +#~ msgstr " -P ВывеÑти ÑпиÑок имён функций и ÑвÑзей." + +#~ msgid "" +#~ " -p List functions and bindings in a form that can be" +#~ msgstr " -p ВывеÑти ÑпиÑок имён функций и ÑвÑзей в виде," + +#~ msgid " reused as input." +#~ msgstr " который можно иÑпользовать на входе." + +#~ msgid " -r keyseq Remove the binding for KEYSEQ." +#~ msgstr " -r поÑлед_клавиш Удалить ÑвÑзь Ð´Ð»Ñ `поÑлед_клавиш'." + +#~ msgid " -f filename Read key bindings from FILENAME." +#~ msgstr " -f имÑ_файла ПрочеÑть ÑвÑзи из файла." + +#~ msgid "" +#~ " -q function-name Query about which keys invoke the named function." +#~ msgstr "" +#~ " -q имÑ_функции ЗапроÑ, какие клавиши вызовут указанную функцию." + +#~ msgid " -V List variable names and values" +#~ msgstr " -V ВывеÑти ÑпиÑок имён и значений переменных." + +#~ msgid "" +#~ " -v List variable names and values in a form that can" +#~ msgstr "" +#~ " -v ВывеÑти ÑпиÑок имён и значений переменных в виде," + +#~ msgid " be reused as input." +#~ msgstr " который можно иÑпользовать на входе" + +#~ msgid "" +#~ " -S List key sequences that invoke macros and their " +#~ "values" +#~ msgstr "" +#~ " -S ВывеÑти ÑпиÑок поÑледовательноÑтей клавиш, " +#~ "вызывающих макроÑÑ‹ и их значений." + +#~ msgid "" +#~ " -s List key sequences that invoke macros and their " +#~ "values in" +#~ msgstr "" +#~ " -s ВывеÑти ÑпиÑок поÑледовательноÑтей клавиш, вызывающих " +#~ "макроÑÑ‹" + +#~ msgid " a form that can be reused as input." +#~ msgstr "" +#~ " и их значений в виде, который можно иÑпользовать на " +#~ "входе" + +#~ msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," +#~ msgstr "Выйти из цикла FOR, WHILE или UNTIL. ЕÑли указано N," + +#~ msgid "break N levels." +#~ msgstr "выйти из N вложенных уровней." + +#~ msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." +#~ msgstr "Перейти к Ñледующей итерации цикла FOR, WHILE или UNTIL." + +#~ msgid "If N is specified, resume at the N-th enclosing loop." +#~ msgstr "ЕÑли задано N, перейти к N-му обрамлÑющему циклу." + +#~ msgid "Run a shell builtin. This is useful when you wish to rename a" +#~ msgstr "Выполнить вÑтроенную команду оболочки. Это полезно, еÑли вы хотите" + +#~ msgid "shell builtin to be a function, but need the functionality of the" +#~ msgstr "Ñоздать функцию Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ вÑтроенной команды, но хотите Ñохранить" + +#~ msgid "builtin within the function itself." +#~ msgstr "возможноÑть иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ из Ñамой функции" + +#~ msgid "Change the current directory to DIR. The variable $HOME is the" +#~ msgstr "Изменить текущий каталог на заданный. ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $HOME Ñодержит" + +#~ msgid "default DIR. The variable $CDPATH defines the search path for" +#~ msgstr "" +#~ "каталог по умолчанию. ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $CDPATH определÑет путь, в котором" + +#~ msgid "the directory containing DIR. Alternative directory names in CDPATH" +#~ msgstr "" +#~ "ищетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³, Ñодержащий КÐТÐЛОГ. Ðльтернативные каталоги в CDPATH" + +#~ msgid "are separated by a colon (:). A null directory name is the same as" +#~ msgstr "" +#~ "разделÑÑŽÑ‚ÑÑ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ñ Ð·Ð°Ð¿Ñтой (:). ПуÑтое Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° -- то же Ñамое," + +#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," +#~ msgstr "" +#~ "что текущий каталог, Ñ‚.е. `.'. ЕÑли КÐТÐЛОГ начинаетÑÑ Ñ Ð´Ñ€Ð¾Ð±Ð¸ (/)," + +#~ msgid "then $CDPATH is not used. If the directory is not found, and the" +#~ msgstr "" +#~ "$CDPATh не иÑпользуетÑÑ. ЕÑли каталог не найден, и уÑтановлен параметр" + +#~ msgid "shell option `cdable_vars' is set, then try the word as a variable" +#~ msgstr "" +#~ "оболочки `cdable_vars', делаетÑÑ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° интерпретировать Ñто Ñлово как " +#~ "имÑ" + +#~ msgid "name. If that variable has a value, then cd to the value of that" +#~ msgstr "" +#~ "переменной. ЕÑли Ñта Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð¼ÐµÐµÑ‚ значение, каталог менÑетÑÑ Ð½Ð° Ñто" + +#~ msgid "" +#~ "variable. The -P option says to use the physical directory structure" +#~ msgstr "" +#~ "значение. Параметр -P указывает иÑпользовать физичеÑкую Ñтруктуру " +#~ "каталогов," + +#~ msgid "" +#~ "instead of following symbolic links; the -L option forces symbolic links" +#~ msgstr "" +#~ "а не Ñледовать ÑимволчиеÑким ÑÑылкам, параметр -L заÑтавлÑет Ñледовать" + +#~ msgid "to be followed." +#~ msgstr "ÑимволичеÑким ÑÑылкам." + +#~ msgid "Print the current working directory. With the -P option, pwd prints" +#~ msgstr "" +#~ "ВывеÑти Ð¸Ð¼Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ рабочего каталога. С параметром -P pwd выводит" + +#~ msgid "the physical directory, without any symbolic links; the -L option" +#~ msgstr "" +#~ "физичеÑкий каталог, без ÑимволичеÑких ÑÑылок, параметр -L заÑтавлÑет" + +#~ msgid "makes pwd follow symbolic links." +#~ msgstr "pwd Ñледовать ÑимволичеÑким ÑÑылкам." + +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +#~ msgstr "" +#~ "ВыполнÑет КОМÐÐДУ Ñ ÐРГУМЕÐТÐМИ, Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ оболочки. ЕÑли у Ð²Ð°Ñ " +#~ "еÑть" + +#~ msgid "function called `ls', and you wish to call the command `ls', you can" +#~ msgstr "" +#~ "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ¸ `ls', а вы хотите вызвать команду `ls', можно " +#~ "иÑпользовать" + +#~ msgid "" +#~ "say \"command ls\". If the -p option is given, a default value is used" +#~ msgstr "" +#~ "\"command ls\". ЕÑли задан параметр -p, иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ $PATH" + +#~ msgid "" +#~ "for PATH that is guaranteed to find all of the standard utilities. If" +#~ msgstr "по умолчанию, что гарантирует отыÑкание Ñтандартных утилит. ЕÑли" + +#~ msgid "" +#~ "the -V or -v option is given, a string is printed describing COMMAND." +#~ msgstr "задан параметр -V или -v, выводитÑÑ Ñтрока, опиÑÑ‹Ð²Ð°ÑŽÑ‰Ð°Ñ ÐšÐžÐœÐÐДУ." + +#~ msgid "The -V option produces a more verbose description." +#~ msgstr "Параметр -V Ñоздаёт более подробное опиÑание." + +#~ msgid "Declare variables and/or give them attributes. If no NAMEs are" +#~ msgstr "" +#~ "ОбъÑвлÑет переменные и/или придаёт им атрибуты. ЕÑли не заданы ИМЕÐÐ," + +#~ msgid "given, then display the values of variables instead. The -p option" +#~ msgstr "выводит вмеÑто Ñтого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ…. Параметр -p выведет" + +#~ msgid "will display the attributes and values of each NAME." +#~ msgstr "атрибуты и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ИМЕÐИ." + +#~ msgid "The flags are:" +#~ msgstr "Флаги:" + +#~ msgid " -a\tto make NAMEs arrays (if supported)" +#~ msgstr " -a\tÑчитать ИМЕÐРмаÑÑивами (еÑли поддерживаютÑÑ)" + +#~ msgid " -f\tto select from among function names only" +#~ msgstr " -f\tиÑкать только Ñреди имён функций" + +#~ msgid " -F\tto display function names without definitions" +#~ msgstr " -F\tпоказать имена функций без определений" + +#~ msgid " -r\tto make NAMEs readonly" +#~ msgstr " -r\tÑделать ИМЕÐРпеременными только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" + +#~ msgid " -x\tto make NAMEs export" +#~ msgstr " -x\tпозволить ÑкÑпорт ИМÐÐ" + +#~ msgid " -i\tto make NAMEs have the `integer' attribute set" +#~ msgstr " -i\tпридать ИМЕÐÐМ набор атрибутов `integer' (целочиÑленный)" + +#~ msgid "Variables with the integer attribute have arithmetic evaluation (see" +#~ msgstr "Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ `integer' арифметичеÑкие вычиÑÐ»ÐµÐ½Ð¸Ñ (Ñм." + +#~ msgid "`let') done when the variable is assigned to." +#~ msgstr "`let') выполнÑÑŽÑ‚ÑÑ Ð¿Ñ€Ð¸ приÑвоении переменной значениÑ." + +#~ msgid "When displaying values of variables, -f displays a function's name" +#~ msgstr "При выводе значений переменных -f выводит Ð¸Ð¼Ñ Ð¸ определение" + +#~ msgid "and definition. The -F option restricts the display to function" +#~ msgstr "функции. Параметр -F ограничивает вывод именем" + +#~ msgid "name only." +#~ msgstr "функции." + +#~ msgid "" +#~ "Using `+' instead of `-' turns off the given attribute instead. When" +#~ msgstr "ИÑпользование `+' вмеÑто `-' выключает заданный атрибут. При" + +#~ msgid "used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "" +#~ "иÑпользовании в функции делает ИМЕÐа локальными, как команда `local'." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "УÑтарела. См. `declare'." + +#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" +#~ msgstr "Создать локальную переменную ИМЯ и придать ей ЗÐÐЧЕÐИЕ. LOCAL" + +#~ msgid "have a visible scope restricted to that function and its children." +#~ msgstr "облаÑть видимоÑти ИМЕÐИ Ñтой функцией и её потомками." + +#~ msgid "Output the ARGs. If -n is specified, the trailing newline is" +#~ msgstr "Выводит ÐРГУМЕÐТЫ. ЕÑли задано -n, подавлÑетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°ÑŽÑ‰Ð¸Ð¹ переход" + +#~ msgid "suppressed. If the -e option is given, interpretation of the" +#~ msgstr "" +#~ "на новую Ñтроку. ЕÑли задан параметр -e, интерпретируютÑÑ Ñледующие" + +#~ msgid "following backslash-escaped characters is turned on:" +#~ msgstr "Ñкранированные Ñимволы:" + +#~ msgid "\t\\a\talert (bell)" +#~ msgstr "\t\\a\tпредупреждение (звонок)" + +#~ msgid "\t\\b\tbackspace" +#~ msgstr "\t\\b\tзабой (откат)" + +#~ msgid "\t\\c\tsuppress trailing newline" +#~ msgstr "\t\\c\tподавить завершающий переход на новую Ñтроку" + +#~ msgid "\t\\E\tescape character" +#~ msgstr "\t\\E\tÑкранировать Ñимвол" + +#~ msgid "\t\\f\tform feed" +#~ msgstr "\t\\f\tÑдвиг на Ñледующую Ñтроку" + +#~ msgid "\t\\n\tnew line" +#~ msgstr "\t\\n\tÐ½Ð¾Ð²Ð°Ñ Ñтрока" + +#~ msgid "\t\\r\tcarriage return" +#~ msgstr "\t\\r\tвозврат каретки" + +#~ msgid "\t\\t\thorizontal tab" +#~ msgstr "\t\\t\tÐ³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑциÑ" + +#~ msgid "\t\\v\tvertical tab" +#~ msgstr "\t\\v\tÐ²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑциÑ" + +#~ msgid "\t\\\\\tbackslash" +#~ msgstr "\t\\\\\tÐ¾Ð±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÐºÐ¾ÑÐ°Ñ Ñ‡ÐµÑ€Ñ‚Ð°" + +#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." +#~ msgstr "\t\\чиÑло\tÑимвол, воÑьмеричный ASCII-код которого равен ЧИСЛУ" + +#~ msgid "" +#~ "You can explicitly turn off the interpretation of the above characters" +#~ msgstr "Ð’Ñ‹ можете Ñвно выключить интерпретацию вышеприведённых Ñимволов" + +#~ msgid "with the -E option." +#~ msgstr "параметром -E." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Выводит ÐРГУМЕÐТЫ. ЕÑли задано -n, подавлÑетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°ÑŽÑ‰Ð¸Ð¹ переход на " +#~ "новую Ñтроку." + +#~ msgid "Enable and disable builtin shell commands. This allows" +#~ msgstr "Включает и блокирует вÑтроенные команды оболочки. Это позволÑет" + +#~ msgid "you to use a disk command which has the same name as a shell" +#~ msgstr "иÑпользовать внешние команды Ñ Ñ‚ÐµÐ¼Ð¸ же именами, что команды" + +#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" +#~ msgstr "" +#~ "оболочки. При иÑпользовании -n ИМЕÐРблокируютÑÑ, в противном Ñлучае" + +#~ msgid "NAMEs are enabled. For example, to use the `test' found on your" +#~ msgstr "" +#~ "включаютÑÑ. Ðапример, чтобы иÑпользовать файл `test', а не вÑтроенную" + +#~ msgid "path instead of the shell builtin version, type `enable -n test'." +#~ msgstr "в оболочку верÑию, введите enable -n test'. Ðа ÑиÑтемах," + +#~ msgid "On systems supporting dynamic loading, the -f option may be used" +#~ msgstr "поддерживающих динамичеÑкую загрузку можно иÑпользовать параметр -f" + +#~ msgid "to load new builtins from the shared object FILENAME. The -d" +#~ msgstr "" +#~ "чтобы загрузить новые вÑтроенные команды из разделÑемого объекта ФÐЙЛ." + +#~ msgid "option will delete a builtin previously loaded with -f. If no" +#~ msgstr "Параметр -d удалÑет команды, загруженные -f. ЕÑли имена, кроме" + +#~ msgid "non-option names are given, or the -p option is supplied, a list" +#~ msgstr "как в параметрах, не заданы, или еÑли задан параметр -p, выводитÑÑ" + +#~ msgid "of builtins is printed. The -a option means to print every builtin" +#~ msgstr "" +#~ "ÑпиÑок вÑтроенных команд. Параметр -a требует вывеÑти вÑе вÑтроенные" + +#~ msgid "with an indication of whether or not it is enabled. The -s option" +#~ msgstr "команды Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸ÐµÐ¹, блокированы ли они. Параметр -s выводит" + +#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" +#~ msgstr "только `Ñпециальные' команды Posix.2. Параметр -n выводит ÑпиÑок" + +#~ msgid "option displays a list of all disabled builtins." +#~ msgstr "вÑех блокированных вÑтроенных команд." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Читает ÐРГУМЕÐТЫ как входной текÑÑ‚ оболочки и выполнÑет полученные " +#~ "команды." + +#~ msgid "Getopts is used by shell procedures to parse positional parameters." +#~ msgstr "" +#~ "Getopts иÑпользуетÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°Ð¼Ð¸ оболочки Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° параметров командной" + +#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" +#~ msgstr "Ñтроки. СТРОКÐ_ПÐРÐМЕТРОВ Ñодержит буквы параметров, которые нужно" + +#~ msgid "is followed by a colon, the option is expected to have an argument," +#~ msgstr "" +#~ "раÑпознать. ЕÑли за буквой Ñледует двоеточие, параметр должен иметь" + +#~ msgid "which should be separated from it by white space." +#~ msgstr "аргумент, отделённый от него промежутком." + +#~ msgid "Each time it is invoked, getopts will place the next option in the" +#~ msgstr "При каждом вызове getopts помещает Ñледующий параметр в переменную" + +#~ msgid "shell variable $name, initializing name if it does not exist, and" +#~ msgstr "оболочки $имÑ, Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€ÑƒÑ Ð¸Ð¼Ñ, еÑли оно не ÑущеÑтвует, а индекÑ" + +#~ msgid "the index of the next argument to be processed into the shell" +#~ msgstr "Ñледующего аргумента в переменную оболочки OPTIND. OPTIND" + +#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" +#~ msgstr "" +#~ "принимает значение 1 при каждом вызове оболочки или Ñкрипта оболочки." + +#~ msgid "a shell script is invoked. When an option requires an argument," +#~ msgstr "ЕÑли параметр требует аргумента, getopts помещает Ñтот аргумент" + +#~ msgid "getopts places that argument into the shell variable OPTARG." +#~ msgstr "в переменную оболочки OPTARG." + +#~ msgid "getopts reports errors in one of two ways. If the first character" +#~ msgstr "" +#~ "getopts Ñообщает об ошибках одним из двух ÑпоÑобов. ЕÑли первый Ñимвол" + +#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" +#~ msgstr "" +#~ "OPTSTRING -- двоеточие, getopts иÑпользует беÑшумный ÑпоÑоб. Ð’ Ñтом" + +#~ msgid "this mode, no error messages are printed. If an illegal option is" +#~ msgstr "Ñлучае ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках не выводÑÑ‚ÑÑ. ЕÑли найден недопуÑтимый" + +#~ msgid "seen, getopts places the option character found into OPTARG. If a" +#~ msgstr "" +#~ "параметр, getopts помещает найденный Ñимвол в OPTARG. ЕÑли не найден" + +#~ msgid "required argument is not found, getopts places a ':' into NAME and" +#~ msgstr "требуемый аргумент, getopts помещает в ИМЯ ':', а в OPTARG --" + +#~ msgid "sets OPTARG to the option character found. If getopts is not in" +#~ msgstr "найденный Ñимвол. ЕÑли getopts работает не в беÑшумном режиме" + +#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" +#~ msgstr "и обнаружен недопуÑтимый параметр, getopts помещает в ИМЯ '?', и" + +#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" +#~ msgstr "ÑбраÑывает OPTARG. ЕÑли не найден требуемый параметр, в ИМЯ" + +#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" +#~ msgstr "помещаетÑÑ '?', OPTARG ÑбраÑываетÑÑ, и выводитÑÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑтичеÑкое" + +#~ msgid "printed." +#~ msgstr "Ñообщение." + +#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" +#~ msgstr "ЕÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ¸ OPTERR имеет значение 0, getopts блокирует" + +#~ msgid "printing of error messages, even if the first character of" +#~ msgstr "вывод Ñообщений об ошибках, даже еÑли первый Ñимвол OPTSTRING" + +#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." +#~ msgstr "не двоеточие. По умолчанию OPTERR имеет значение 1." + +#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" +#~ msgstr "Getopts обычно разбирает позиционные параметры ($0 - $9), но еÑли" + +#~ msgid "more arguments are given, they are parsed instead." +#~ msgstr "заданы дополнительные аргументы, вмеÑто Ñтого разбираютÑÑ Ð¾Ð½Ð¸" + +#~ msgid "Exec FILE, replacing this shell with the specified program." +#~ msgstr "ЗапуÑтить ФÐЙЛ, Ð·Ð°Ð¼ÐµÑ‰Ð°Ñ Ñту копию оболочки указанной программой." + +#~ msgid "If FILE is not specified, the redirections take effect in this" +#~ msgstr "ЕÑли ФÐЙЛ не задан, могут быть переназначены файловые деÑкрипторы." + +#~ msgid "shell. If the first argument is `-l', then place a dash in the" +#~ msgstr "ЕÑли первый аргумент `-l', в начало нулевого аргумента, переданного" + +#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" +#~ msgstr "ФÐЙЛУ, добавлÑетÑÑ `-', как при работе login. ЕÑли задан параметр" + +#~ msgid "is supplied, FILE is executed with a null environment. The `-a'" +#~ msgstr "`-c', ФÐЙЛ выполнÑетÑÑ Ð² пуÑтой Ñреде. Параметр `-a' уÑтанавливает" + +#~ msgid "option means to make set argv[0] of the executed process to NAME." +#~ msgstr "argv[0] запущенного процеÑÑа в ИМЯ." + +#~ msgid "If the file cannot be executed and the shell is not interactive," +#~ msgstr "ЕÑли файл не может быть запущен, а оболочка не интерактивна," + +#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" +#~ msgstr "" +#~ "производитÑÑ Ð²Ñ‹Ñ…Ð¾Ð´ из оболочки, еÑли только не уÑтановлена переменнаÑ" + +#~ msgid "is set." +#~ msgstr "\"no_exit_on_failed_exec\"" + +#~ msgid "is that of the last command executed." +#~ msgstr "Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ таким же, как у поÑледней выполненной команды." + +#~ msgid "" +#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +#~ msgstr "" +#~ "ПЕРВÐЯ и ПОСЛЕДÐЯЯ могут быть чиÑлами, ограничивающими диапазон, или" + +#~ msgid "string, which means the most recent command beginning with that" +#~ msgstr "же ПЕРВÐЯ может быть Ñтрокой, означающей Ñамую недавнюю команду," + +#~ msgid "string." +#~ msgstr "начинающуюÑÑ Ñ Ñтой Ñтроки." + +#~ msgid "" +#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +#~ msgstr "" +#~ " -e ИМЯ_РЕДÐКТОРРвыбирает иÑпользуемый редактор. По умолчанию FCEDIT," + +#~ msgid "" +#~ " then the editor which corresponds to the current readline editing" +#~ msgstr " затем EDITOR, затем редактор, ÑоответÑтвуюший текущему режиму" + +#~ msgid " mode, then vi." +#~ msgstr " Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ readline, затем vi." + +#~ msgid " -l means list lines instead of editing." +#~ msgstr " -l вывеÑти, а не редактировать Ñтроки." + +#~ msgid " -n means no line numbers listed." +#~ msgstr " -n не выводить номера Ñтрок." + +#~ msgid "" +#~ " -r means reverse the order of the lines (making it newest listed " +#~ "first)." +#~ msgstr " -r вывеÑти Ñтроки в обратном порÑдке (в начале Ñамые новые)." + +#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" +#~ msgstr "" +#~ "Ð’ формате `fc -s [шаблон=замена] [команда] команда выполнÑетÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾" + +#~ msgid "re-executed after the substitution OLD=NEW is performed." +#~ msgstr "поÑле того, как произведена подÑтановка." + +#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" +#~ msgstr "ÐŸÐ¾Ð»ÐµÐ·Ð½Ð°Ñ Ð¿Ñевдокоманда -- r='fc -s', так `r cc' выполнÑет поÑледнюю" + +#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" +#~ msgstr "команду, начинающуюÑÑ Ñ `cc', а `r' заново выполнÑет поÑледнюю" + +#~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If" +#~ msgstr "" +#~ "Возвращает задачу Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ номером из фонового режима и делает её" + +#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" +#~ msgstr "текущей задачей. ЕÑли номер не задан, иÑпользуетÑÑ Ð¿Ñ€ÐµÐ´Ñтавление" + +#~ msgid "used." +#~ msgstr "оболочки о текущей задаче." + +#~ msgid "Place JOB_SPEC in the background, as if it had been started with" +#~ msgstr "" +#~ "Переводит задачу Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ номером в фоновый режим, как еÑли бы она" + +#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" +#~ msgstr "" +#~ "была запущена Ñ `&'. ЕÑли номер не задан, иÑпользуетÑÑ Ð¿Ñ€ÐµÐ´Ñтавление" + +#~ msgid "job is used." +#~ msgstr "оболочки о текущей задаче." + +#~ msgid "For each NAME, the full pathname of the command is determined and" +#~ msgstr "Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ИМЕÐИ определÑÑŽÑ‚ÑÑ Ð¸ запоминаютÑÑ Ð¿Ð¾Ð»Ð½Ñ‹Ðµ пути команды." + +#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" +#~ msgstr "ЕÑли задан параметр -p, в качеÑтве пути иÑпользуетÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹, а" + +#~ msgid "full pathname of NAME, and no path search is performed. The -r" +#~ msgstr "поиÑк не выполнÑетÑÑ. Параметр -r заÑтавлÑет оболочку очиÑтить" + +#~ msgid "option causes the shell to forget all remembered locations. If no" +#~ msgstr "ÑпиÑок положений в памÑти. ЕÑли аргументы не заданы, выводитÑÑ" + +#~ msgid "" +#~ "arguments are given, information about remembered commands is displayed." +#~ msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ запомненных командах." + +#~ msgid "Display helpful information about builtin commands. If PATTERN is" +#~ msgstr "" +#~ "ВывеÑти полезную информацию о вÑтроенных командах. ЕÑли задан ШÐБЛОÐ," + +#~ msgid "specified, gives detailed help on all commands matching PATTERN," +#~ msgstr "" +#~ "вывеÑти подробную Ñправку по вÑем командам, ÑоответÑтвующим ШÐБЛОÐУ," + +#~ msgid "otherwise a list of the builtins is printed." +#~ msgstr "в противном Ñлучае вывеÑти ÑпиÑок вÑтроенных команд." + +#~ msgid "Display the history list with line numbers. Lines listed with" +#~ msgstr "ВывеÑти иÑторию команд в виде ÑпиÑка Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñтрок. Изменённые" + +#~ msgid "with a `*' have been modified. Argument of N says to list only" +#~ msgstr "" +#~ "Ñтроки помечаютÑÑ Ñимволом `*'. Ðргумент N указывает выводить только" + +#~ msgid "the last N lines. The -c option causes the history list to be" +#~ msgstr "поÑледние N Ñтрок. Параметр -c очищает иÑторию команд, удалÑÑ" + +#~ msgid "" +#~ "cleared by deleting all of the entries. The `-w' option writes out the" +#~ msgstr "вÑе Ñтроки. Параметр `-w' запиÑывает текущую иÑторию в указанный" + +#~ msgid "" +#~ "current history to the history file; `-r' means to read the file and" +#~ msgstr "файл; `-r' читает такой файл и дополнÑет его Ñодержимым иÑторию" + +#~ msgid "append the contents to the history list instead. `-a' means" +#~ msgstr "команд. `-a' добавлÑет иÑторию Ñтой ÑеÑÑии к файлу иÑтории" + +#~ msgid "to append history lines from this session to the history file." +#~ msgstr "команд. Ðргумент `-n' читает из файла иÑтории вÑе Ñтроки, не" + +#~ msgid "Argument `-n' means to read all history lines not already read" +#~ msgstr "прочитанные ранее, и добавлÑет их к иÑтории. ЕÑли задан ФÐЙЛ," + +#~ msgid "from the history file and append them to the history list. If" +#~ msgstr "в качеÑтве файла иÑтории команд иÑпользуетÑÑ Ð¾Ð½, иначе, еÑли" + +#~ msgid "FILENAME is given, then that is used as the history file else" +#~ msgstr "переменной $HISTFILE приÑвоено значение, иÑпользуетÑÑ Ð¾Ð½Ð¾, иначе" + +#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." +#~ msgstr "иÑпользуетÑÑ ~/.bash_history. ЕÑли задан параметр -s, ÐРГУМЕÐТЫ," + +#~ msgid "If the -s option is supplied, the non-option ARGs are appended to" +#~ msgstr "ÑвлÑющиеÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸, добавлÑÑŽÑ‚ÑÑ Ðº иÑтории как один Ñлемент." + +#~ msgid "the history list as a single entry. The -p option means to perform" +#~ msgstr "Параметр -p выполнÑет развёртывание каждого ÐРГУМЕÐТРи выводит" + +#~ msgid "" +#~ "history expansion on each ARG and display the result, without storing" +#~ msgstr "результат, не ÑохранÑÑ Ð½Ð¸Ñ‡ÐµÐ³Ð¾ в ÑпиÑке иÑтории команд." + +#~ msgid "anything in the history list." +#~ msgstr " " + +#~ msgid "Lists the active jobs. The -l option lists process id's in addition" +#~ msgstr "Выводит ÑпиÑок активных задач. Параметр -l выводит, кроме того," + +#~ msgid "to the normal information; the -p option lists process id's only." +#~ msgstr "идентификаторы процеÑÑов: параметр -p выодит только идентификаторы." + +#~ msgid "" +#~ "If -n is given, only processes that have changed status since the last" +#~ msgstr "ЕÑли задано -n, выводÑÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ процеÑÑÑ‹, ÑÑ‚Ð°Ñ‚ÑƒÑ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… изменилÑÑ" + +#~ msgid "" +#~ "notification are printed. JOBSPEC restricts output to that job. The" +#~ msgstr "" +#~ "Ñо времени поÑледнего уведомлениÑ. ЕÑли задан номер задачи, выводитÑÑ" + +#~ msgid "-r and -s options restrict output to running and stopped jobs only," +#~ msgstr "только она. Параметры -r и -s выводит только работающие или только" + +#~ msgid "respectively. Without options, the status of all active jobs is" +#~ msgstr "" +#~ "оÑтановленные задачи ÑоответÑтвенно. Без параметров выодитÑÑ ÑтатуÑ" + +#~ msgid "" +#~ "printed. If -x is given, COMMAND is run after all job specifications" +#~ msgstr "" +#~ "вÑех активных задач. ЕÑли задано -x, в КОМÐÐДЕ вмеÑто вÑех ÐРГУМЕÐТОВ" + +#~ msgid "" +#~ "that appear in ARGS have been replaced with the process ID of that job's" +#~ msgstr "(номеров задач) подÑтавлÑетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ лидера ÑоответÑтвующей" + +#~ msgid "process group leader." +#~ msgstr "группы процеÑÑов, и КОМÐÐДРвыполнÑетÑÑ." + +#~ msgid "Removes each JOBSPEC argument from the table of active jobs." +#~ msgstr "" +#~ "УдалÑет вÑе задачи, заданные ÑпецификациÑми в аргументе, из таблицы задач." + +#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +#~ msgstr "" +#~ "ПоÑылает указанным процеÑÑам (заданным PID или Ñпецификацией) Ñигнал" + +#~ msgid "" +#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +#~ msgstr "SIGSPEC. ЕÑли отÑутÑтвует SIGSPEC, поÑылаетÑÑ SIGTERM. Ðргументом" + +#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" +#~ msgstr "" +#~ "параметра `-l' Ñлужит ÑпиÑок Ñигналов. ЕÑли он приÑутÑтвует, выводÑÑ‚ÑÑ" + +#~ msgid "be signal numbers for which names should be listed. Kill is a shell" +#~ msgstr "" +#~ "Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов Ñ Ñтими номерами. Kill ÑвлÑетÑÑ Ð²Ñтроенной командой" + +#~ msgid "builtin for two reasons: it allows job IDs to be used instead of" +#~ msgstr "оболочки по двум причинам: она позволÑет иÑпользовать номера задач," + +#~ msgid "process IDs, and, if you have reached the limit on processes that" +#~ msgstr "а не процеÑÑов, и еÑли вы иÑчерпаете лимит Ñозданных процеÑÑов," + +#~ msgid "" +#~ "you can create, you don't have to start a process to kill another one." +#~ msgstr "вы не Ñможете запуÑтить новый процеÑÑ, уничтожающий один из Ñтарых." + +#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" +#~ msgstr "Каждый аргумент раÑÑматриваетÑÑ ÐºÐ°Ðº арифметичеÑкое выражение." + +#~ msgid "is done in long integers with no check for overflow, though division" +#~ msgstr "" +#~ "ВычиÑление производитÑÑ Ð½Ð°Ð´ длинными целыми без ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ," + +#~ msgid "by 0 is trapped and flagged as an error. The following list of" +#~ msgstr "Ñ…Ð¾Ñ‚Ñ Ð´ÐµÐ»ÐµÐ½Ð¸Ðµ на ноль отÑлеживаетÑÑ Ð¸ ÑчитаетÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹. Операции в" + +#~ msgid "operators is grouped into levels of equal-precedence operators." +#~ msgstr "Ñледующем ÑпиÑке Ñгруппированы по уровнÑм равного приоритета." + +#~ msgid "The levels are listed in order of decreasing precedence." +#~ msgstr "Уровни перечиÑлены в порÑдке ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð°." + +#~ msgid "\t-, +\t\tunary minus, plus" +#~ msgstr "\t-, +\t\tунарный минуÑ, унарный плюÑ" + +#~ msgid "\t!, ~\t\tlogical and bitwise negation" +#~ msgstr "\t!, ~\t\tлогичеÑкое и побитовое отрицание" + +#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" +#~ msgstr "\t*, /, %\t\tумножение, деление, взÑтие оÑтатка" + +#~ msgid "\t+, -\t\taddition, subtraction" +#~ msgstr "\t+, -\t\tÑложение, вычитание" + +#~ msgid "\t<<, >>\t\tleft and right bitwise shifts" +#~ msgstr "\t<<, >>\t\tлевый и правый побитовый Ñдвиг" + +#~ msgid "\t<=, >=, <, >\tcomparison" +#~ msgstr "\t<=, >=, <, >\tÑравнение" + +#~ msgid "\t==, !=\t\tequality, inequality" +#~ msgstr "\t==, !=\t\tравенÑтво, неравенÑтво" + +#~ msgid "\t&\t\tbitwise AND" +#~ msgstr "\t&\t\tпобитовое И" + +#~ msgid "\t^\t\tbitwise XOR" +#~ msgstr "\t^\t\tпобитовое ИСКЛЮЧÐЮЩЕЕ ИЛИ" + +#~ msgid "\t|\t\tbitwise OR" +#~ msgstr "\t|\t\tпобитовое ИЛИ" + +#~ msgid "\t&&\t\tlogical AND" +#~ msgstr "\t&&\t\tлогичеÑкое И" + +#~ msgid "\t||\t\tlogical OR" +#~ msgstr "\t||\t\tлогичеÑкое ИЛИ" + +#~ msgid "\texpr ? expr : expr" +#~ msgstr "\texpt ? expr : expr" + +#~ msgid "\t\t\tconditional expression" +#~ msgstr "\t\t\tуÑловное выражение" + +#~ msgid "\t=, *=, /=, %=," +#~ msgstr "\t=, *=, /=, %=," + +#~ msgid "\t+=, -=, <<=, >>=," +#~ msgstr "\t+=, -=, <<=, >>=," + +#~ msgid "\t&=, ^=, |=\tassignment" +#~ msgstr "\t&=, ^=, |=\tприÑваивание" + +#~ msgid "is replaced by its value (coerced to a long integer) within" +#~ msgstr "переменной заменÑетÑÑ ÐµÑ‘ значение (преобразованным в длинное" + +#~ msgid "an expression. The variable need not have its integer attribute" +#~ msgstr "целое). Ð”Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² выражении Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ обÑзана иметь" + +#~ msgid "turned on to be used in an expression." +#~ msgstr "уÑтановленный целочиÑленный атрибут." + +#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" +#~ msgstr "Операции обрабатываютÑÑ Ð² порÑдке приоритета. ÐŸÐ¾Ð´Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð²" + +#~ msgid "parentheses are evaluated first and may override the precedence" +#~ msgstr "Ñкобках вычиÑлÑÑŽÑ‚ÑÑ Ð²Ð½Ð°Ñ‡Ð°Ð»Ðµ, что может не ÑоответÑтвовать правилам" + +#~ msgid "rules above." +#~ msgstr "приоритета." + +#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" +#~ msgstr "ЕÑли вычиÑление поÑледнего аргумента дало 0, let возвращает 1," + +#~ msgid "otherwise." +#~ msgstr "иначе 0." + +#~ msgid "One line is read from the standard input, and the first word is" +#~ msgstr "Со Ñтандартного ввода ÑчитываетÑÑ Ð¾Ð´Ð½Ð° Ñтрока, первое её Ñлово" + +#~ msgid "" +#~ "assigned to the first NAME, the second word to the second NAME, and so" +#~ msgstr "ÑтановитÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸ÐµÐ¼ первого ИМЕÐИ, второе -- второго ИМЕÐИ и Ñ‚.д." + +#~ msgid "" +#~ "on, with leftover words assigned to the last NAME. Only the characters" +#~ msgstr "" +#~ "ПоÑледнему ИМЕÐИ приÑваиваетÑÑ Ð²ÐµÑÑŒ оÑтаток Ñтроки. РазделителÑми Ñлов" + +#~ msgid "found in $IFS are recognized as word delimiters. The return code is" +#~ msgstr "ÑчитаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñимволы, входÑщие в $IFS. Код возврата равен нулю," + +#~ msgid "" +#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" +#~ msgstr "за иÑключением ÑлучаÑ, еÑли вÑтретилÑÑ ÐºÐ¾Ð½ÐµÑ† файла. ЕÑли ИМЕÐРне" + +#~ msgid "" +#~ "line read is stored in the REPLY variable. If the -r option is given," +#~ msgstr "" +#~ "заданы, Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока помещаетÑÑ Ð² переменную REPLY. ЕÑли задан" + +#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" +#~ msgstr "" +#~ "параметр -r, Ñто означает `Ñырой' ввод, Ñ‚.е. Ñимвол \\ не Ñкранирует" + +#~ msgid "the `-p' option is supplied, the string supplied as an argument is" +#~ msgstr "" +#~ "Ñимволы. ЕÑли задано `-p', перед чтением на вывод в качеÑтве аргумента" + +#~ msgid "" +#~ "output without a trailing newline before attempting to read. If -a is" +#~ msgstr "" +#~ "подаётÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ñтрока (без завершающего Ñимвола перевода Ñтроки)." + +#~ msgid "" +#~ "supplied, the words read are assigned to sequential indices of ARRAY," +#~ msgstr "ЕÑли задано -a, прочитанные Ñлова ÑтановÑÑ‚ÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñми Ñлементов" + +#~ msgid "starting at zero. If -e is supplied and the shell is interactive," +#~ msgstr "" +#~ "МÐССИВÐ, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð³Ð¾. ЕÑли задано -c и оболочка интерактивна," + +#~ msgid "readline is used to obtain the line." +#~ msgstr "чтобы получить Ñтроку иÑпользуетÑÑ readline." + +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N" +#~ msgstr "ЗаÑтавлÑет функцию завершить работу Ñ ÐºÐ¾Ð´Ð¾Ð¼ возврата, заданным N." + +#~ msgid "is omitted, the return status is that of the last command." +#~ msgstr "ЕÑли N опущено, им ÑтановитÑÑ ÐºÐ¾Ð´ возврата поÑледней команды." + +#~ msgid " -a Mark variables which are modified or created for export." +#~ msgstr "" +#~ " -a ЭкÑпортировать переменные, которые изменÑлиÑÑŒ или ÑоздавалиÑÑŒ." + +#~ msgid " -b Notify of job termination immediately." +#~ msgstr " -b Ðемедленно выводить ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ завершении задач." + +#~ msgid " -e Exit immediately if a command exits with a non-zero status." +#~ msgstr " -e Завершить работу, еÑли команд возврата команды не равен 0." + +#~ msgid " -f Disable file name generation (globbing)." +#~ msgstr " -f Прекратить раÑширение имён файлов (globbing)." + +#~ msgid " -h Remember the location of commands as they are looked up." +#~ msgstr " -h Запоминать раÑположение обработанных команд." + +#~ msgid "" +#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" +#~ msgstr " -i Сделать оболочку \"интерактивной\". Интерактивные оболочки" + +#~ msgid " always read `~/.bashrc' on startup." +#~ msgstr " читают `~/.bashrc' при каждом запуÑке." + +#~ msgid " -k All assignment arguments are placed in the environment for a" +#~ msgstr " -k Ð’ Ñреду команды помещаютÑÑ Ð²Ñе аргументы приÑваиваниÑ," + +#~ msgid " command, not just those that precede the command name." +#~ msgstr " а не только предшеÑтвующие её имени." + +#~ msgid " -m Job control is enabled." +#~ msgstr " -m Включить управление задачами." + +#~ msgid " -n Read commands but do not execute them." +#~ msgstr " -n Считывать команды, но не выполнÑть их." + +#~ msgid " -o option-name" +#~ msgstr " -o имÑ_параметра" + +#~ msgid " Set the variable corresponding to option-name:" +#~ msgstr " УÑтановить режим в ÑоответÑтвии Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ именем:" + +#~ msgid " allexport same as -a" +#~ msgstr " allexport то же, что -a" + +#~ msgid " braceexpand same as -B" +#~ msgstr " braceexpand то же, что -B" + +#~ msgid " emacs use an emacs-style line editing interface" +#~ msgstr "" +#~ " emacs иÑпользовать Ñтиль Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтрок emacs" + +#~ msgid " errexit same as -e" +#~ msgstr " errexit то же, что -e" + +#~ msgid " hashall same as -h" +#~ msgstr " hashall то же, что -h" + +#~ msgid " histexpand same as -H" +#~ msgstr " histexpand то же, что -H" + +#~ msgid " ignoreeof the shell will not exit upon reading EOF" +#~ msgstr " ignoreeof при чтении EOF оболочка не завершит работу" + +#~ msgid " interactive-comments" +#~ msgstr " interactive-comments" + +#~ msgid "" +#~ " allow comments to appear in interactive commands" +#~ msgstr "" +#~ " допуÑкает комментарии в интерактивных командах" + +#~ msgid " keyword same as -k" +#~ msgstr " keyword то же, что -k" + +#~ msgid " monitor same as -m" +#~ msgstr " monitor то же, что -m" + +#~ msgid " noclobber same as -C" +#~ msgstr " noclobber то же, что -C" + +#~ msgid " noexec same as -n" +#~ msgstr " noexec то же, что -n" + +#~ msgid " noglob same as -f" +#~ msgstr " noglob то же, что -f" + +#~ msgid " notify save as -b" +#~ msgstr " notify то же, что -b" + +#~ msgid " nounset same as -u" +#~ msgstr " nounset то же, что -u" + +#~ msgid " onecmd same as -t" +#~ msgstr " onecmd то же, что -t" + +#~ msgid " physical same as -P" +#~ msgstr " physical то же, что -P" + +#~ msgid "" +#~ " posix change the behavior of bash where the default" +#~ msgstr " posix привеÑти поведение bash, по умолчанию не" + +#~ msgid "" +#~ " operation differs from the 1003.2 standard to" +#~ msgstr " ÑоответÑтвующее Ñтандарту 1003.2, в" + +#~ msgid " match the standard" +#~ msgstr " ÑоответÑтвие Ñ Ð½Ð¸Ð¼" + +#~ msgid " privileged same as -p" +#~ msgstr " privileged то же, что -p" + +#~ msgid " verbose same as -v" +#~ msgstr " verbose то же, что -v" + +#~ msgid " vi use a vi-style line editing interface" +#~ msgstr " vi иÑпользовать Ñтиль Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтрок vi" + +#~ msgid " xtrace same as -x" +#~ msgstr " xtrace то же, что -x" + +#~ msgid "" +#~ " -p Turned on whenever the real and effective user ids do not match." +#~ msgstr "" +#~ " -p ЕÑли реальный и Ñффективный uid не Ñовпадают, включаетÑÑ Ð²Ñегда." + +#~ msgid " Disables processing of the $ENV file and importing of shell" +#~ msgstr " Отключает обработку файла $ENV и импорт функций оболочки." + +#~ msgid "" +#~ " functions. Turning this option off causes the effective uid and" +#~ msgstr "" +#~ " При выключении Ñтого параметра Ñффективные uid и gid ÑтановÑÑ‚ÑÑ" + +#~ msgid " gid to be set to the real uid and gid." +#~ msgstr " равными реальным." + +#~ msgid " -t Exit after reading and executing one command." +#~ msgstr " -t Завершить работу поÑле Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ команды." + +#~ msgid " -u Treat unset variables as an error when substituting." +#~ msgstr "" +#~ " -u При подÑтановке Ñчитать не уÑтановленные переменные ошибками." + +#~ msgid " -v Print shell input lines as they are read." +#~ msgstr " -v Выводить прочитанные Ñтроки входного текÑта оболочки." + +#~ msgid " -x Print commands and their arguments as they are executed." +#~ msgstr " -x Выводить по мере иÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ и их аргументы." + +#~ msgid " -B the shell will perform brace expansion" +#~ msgstr " -B оболочка будет производить подÑтановку Ñкобок" + +#~ msgid " -H Enable ! style history substitution. This flag is on" +#~ msgstr " -H Включить !-Ñтиль подÑтановки иÑтории. Включено" + +#~ msgid " by default." +#~ msgstr " по умолчанию." + +#~ msgid " -C If set, disallow existing regular files to be overwritten" +#~ msgstr " -C ЕÑли уÑтановлен, запретить перезапиÑÑŒ ÑущеÑтвующих" + +#~ msgid " by redirection of output." +#~ msgstr " обычных файлов при перенаправлении вывода." + +#~ msgid " -P If set, do not follow symbolic links when executing commands" +#~ msgstr "" +#~ " -P Ðе Ñледовать ÑимволичеÑким ÑÑылкам при выполнении таких команд," + +#~ msgid " such as cd which change the current directory." +#~ msgstr " как cd, Ñ‚.е. изменÑющих текущий каталог." + +#~ msgid "Using + rather than - causes these flags to be turned off. The" +#~ msgstr "ИÑпользование + вмеÑто - отключает флаг. Эти флаги могут также" + +#~ msgid "flags can also be used upon invocation of the shell. The current" +#~ msgstr "" +#~ "иÑпользоватьÑÑ Ð¿Ñ€Ð¸ запуÑке оболочки. Текущий набор флагов ÑодержитÑÑ" + +#~ msgid "" +#~ "set of flags may be found in $-. The remaining n ARGs are positional" +#~ msgstr "в $-. ОÑтальные n аргументов -- позиционные параметры, и им, по" + +#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" +#~ msgstr "порÑдку, приÑваиваютÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ $1, $2, ..., $n. ЕÑли аргументы" + +#~ msgid "ARGs are given, all shell variables are printed." +#~ msgstr "не заданы, выводÑÑ‚ÑÑ Ð²Ñе переменные оболочки." + +#~ msgid "For each NAME, remove the corresponding variable or function. Given" +#~ msgstr "Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ИМЕÐИ удалÑет ÑоответÑтвующую переменную или функцию." + +#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," +#~ msgstr "" +#~ "ЕÑли задано -v, unset влиÑет только на переменные, еÑли -f -- только" + +#~ msgid "unset will only act on functions. With neither flag, unset first" +#~ msgstr "на функции. Без флагов unset в первую очередь пытаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ" + +#~ msgid "tries to unset a variable, and if that fails, then tries to unset a" +#~ msgstr "переменную, еÑли Ñто не удаётÑÑ -- функцию. Ðекоторые переменные" + +#~ msgid "" +#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" +#~ msgstr "(такие как PATH и IFS) не могут быть удалены. См." + +#~ msgid "see readonly." +#~ msgstr "также readonly." + +#~ msgid "NAMEs are marked for automatic export to the environment of" +#~ msgstr "ИМЕÐРавтоматичеÑки ÑкÑпортируютÑÑ Ð² Ñреду выполнÑемых" + +#~ msgid "subsequently executed commands. If the -f option is given," +#~ msgstr "впоÑледÑтвии команд. ЕÑли задан параметр -f, ИМЕÐÐ" + +#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" +#~ msgstr "обозначают функции. ЕÑли ИМЕÐа не заданы, или еÑли задано -p," + +#~ msgid "is given, a list of all names that are exported in this shell is" +#~ msgstr "выводитÑÑ ÑпиÑок вÑех имён, ÑкÑпортированных в Ñту оболочку." + +#~ msgid "printed. An argument of `-n' says to remove the export property" +#~ msgstr "Ðргумент -n указывает убрать заданные имена из ÑпиÑка" + +#~ msgid "from subsequent NAMEs. An argument of `--' disables further option" +#~ msgstr "ÑкÑпортируемых. Ðргумент -- отключает дальнейшую обработку" + +#~ msgid "processing." +#~ msgstr "параметров." + +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may" +#~ msgstr "" +#~ "Заданные ИМЕÐРпомечаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ, и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñтих ИМÐРне" + +#~ msgid "not be changed by subsequent assignment. If the -f option is given," +#~ msgstr "" +#~ "могут изменÑтьÑÑ Ð² поÑледующих приÑваиваниÑÑ…. ЕÑли задан параметр -f," + +#~ msgid "then functions corresponding to the NAMEs are so marked. If no" +#~ msgstr "так помечаютÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ñ ÑоответÑтвующими ИМЕÐÐМИ. ЕÑли аргументы" + +#~ msgid "" +#~ "arguments are given, or if `-p' is given, a list of all readonly names" +#~ msgstr "не заданы, или еÑли задано `-p', выводитÑÑ ÑпиÑок имён только длÑ" + +#~ msgid "" +#~ "is printed. An argument of `-n' says to remove the readonly property" +#~ msgstr "чтениÑ. Ðргумент `-n' указывает ÑнÑть ÑвойÑтво `только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ'" + +#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" +#~ msgstr "Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ñ… ИМÐÐ. Параметр `-a' заÑтавлÑет раÑÑматривать каждое ИМЯ" + +#~ msgid "an array variable. An argument of `--' disables further option" +#~ msgstr "как маÑÑив. Ðргумент `--' прекращает дальнейшую обработку" + +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +#~ msgstr "" +#~ "Позиционные параметры Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ $N+1 переобозначаютÑÑ ÐºÐ°Ðº $1,... ЕÑли" + +#~ msgid "not given, it is assumed to be 1." +#~ msgstr "N не задано, оно предполагаетÑÑ Ñ€Ð°Ð²Ð½Ñ‹Ð¼ 1." + +#~ msgid "Read and execute commands from FILENAME and return. The pathnames" +#~ msgstr "Читает и выполнÑет команды из файла Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ именем и завершает" + +#~ msgid "in $PATH are used to find the directory containing FILENAME." +#~ msgstr "работу. Файл ищетÑÑ Ð² каталогах, перечиÑленных в $PATH." + +#~ msgid "Suspend the execution of this shell until it receives a SIGCONT" +#~ msgstr "ПриоÑтанавливает работу оболочки до Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñигнала" + +#~ msgid "signal. The `-f' if specified says not to complain about this" +#~ msgstr "SIGCONT. `-f', еÑли задан, указывает приоÑтановить работу, даже" + +#~ msgid "being a login shell if it is; just suspend anyway." +#~ msgstr "еÑли Ñто оболочка ÑеÑÑии" + +#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" +#~ msgstr "Завершает работу Ñо ÑтатуÑом 0 (иÑтина) или 1 (ложь) в завиÑимоÑти" + +#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" +#~ msgstr "от Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð’Ð«Ð ÐЖЕÐИЯ. Ð’Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть унарными или бинарными." + +#~ msgid "expressions are often used to examine the status of a file. There" +#~ msgstr "Унарные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ‡Ð°Ñто иÑпользуютÑÑ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ ÑоÑтоÑÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°." + +#~ msgid "are string operators as well, and numeric comparison operators." +#~ msgstr "ДопуÑтимы операции как Ñтрокового, так и чиÑленного ÑравнениÑ." + +#~ msgid "File operators:" +#~ msgstr "Файловые операции:" + +#~ msgid " -b FILE True if file is block special." +#~ msgstr " -b ФÐЙЛ ИÑтина, еÑли файл -- Ñпециальный блочный файл." + +#~ msgid " -c FILE True if file is character special." +#~ msgstr "" +#~ " -c ФÐЙл ИÑтина, еÑли файл -- Ñпециальный Ñимвольный файл." + +#~ msgid " -d FILE True if file is a directory." +#~ msgstr " -d ФÐЙЛ ИÑтина, еÑли файл -- каталог." + +#~ msgid " -e FILE True if file exists." +#~ msgstr " -e ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует." + +#~ msgid " -f FILE True if file exists and is a regular file." +#~ msgstr "" +#~ " -f ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ файлом." + +#~ msgid " -g FILE True if file is set-group-id." +#~ msgstr " -g ФÐЙЛ ИÑтина, еÑли у файла уÑтановлен атрибут SGID." + +#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." +#~ msgstr "" +#~ " -h ФÐЙЛ ИÑтина, еÑли файл -- ÑимволичеÑÐºÐ°Ñ ÑÑылка. ИÑпользуйте " +#~ "\"-L\"." + +#~ msgid " -L FILE True if file is a symbolic link." +#~ msgstr " -L ФÐЙЛ ИÑтина, еÑли файл -- ÑимволичеÑÐºÐ°Ñ ÑÑылка." + +#~ msgid " -k FILE True if file has its \"sticky\" bit set." +#~ msgstr "" +#~ " -k ФÐЙЛ ИÑтина, еÑли у файла уÑтанолвен \"бит привÑзчивоÑти\"." + +#~ msgid " -p FILE True if file is a named pipe." +#~ msgstr " -p ФÐЙЛ ИÑтина, еÑли файл -- именованный канал." + +#~ msgid " -r FILE True if file is readable by you." +#~ msgstr " -r ФÐЙЛ ИÑтина, еÑли файл доÑтупен вам Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ." + +#~ msgid " -s FILE True if file exists and is not empty." +#~ msgstr " -s ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и не пуÑÑ‚." + +#~ msgid " -S FILE True if file is a socket." +#~ msgstr " -S ФÐЙЛ ИÑтина, еÑли файл -- Ñокет." + +#~ msgid " -t FD True if FD is opened on a terminal." +#~ msgstr "" +#~ " -t FD ИÑтина, еÑли файл Ñ Ð´ÐµÑкриптором FD ÑвÑзан Ñ " +#~ "терминалом." + +#~ msgid " -u FILE True if the file is set-user-id." +#~ msgstr " -u ФÐЙЛ ИÑтина, еÑли у файла уÑтановлен атрибут SUID." + +#~ msgid " -w FILE True if the file is writable by you." +#~ msgstr " -w ФÐЙЛ ИÑтина, еÑли файл доÑтупен вам Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи" + +#~ msgid " -x FILE True if the file is executable by you." +#~ msgstr " -x ФÐЙЛ ИÑтина, еÑли файл доÑтупен вам Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ." + +#~ msgid " -O FILE True if the file is effectively owned by you." +#~ msgstr " -O ФÐЙЛ ИÑтина, еÑли вы -- Ñффективный владелец файла." + +#~ msgid "" +#~ " -G FILE True if the file is effectively owned by your group." +#~ msgstr "" +#~ " -G ФÐЙЛ ИÑтина, еÑли ваша группа -- ÑÑ„Ñ„ÐµÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° файла." + +#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" +#~ msgstr "" +#~ " ФÐЙЛ1 -nt ФÐЙЛ2 ИÑтина, еÑли файл1 более новый (по дате поÑледнего" + +#~ msgid " modification date) file2." +#~ msgstr " изменениÑ), чем файл2." + +#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." +#~ msgstr " ФÐЙЛ1 -ot ФÐЙЛ2 ИÑтина, еÑли файл1 более Ñтарый, чем файл2." + +#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." +#~ msgstr " ФÐЙЛ1 -ef ФÐЙЛ2 ИÑтина, еÑли файл1 -- жёÑÑ‚ÐºÐ°Ñ ÑÑылка на файл2." + +#~ msgid "String operators:" +#~ msgstr "Строковые операции:" + +#~ msgid " -z STRING True if string is empty." +#~ msgstr " -z СТРОКРИÑтина, еÑли Ñтрока пуÑта." + +#~ msgid " -n STRING" +#~ msgstr " -n СТРОКÐ" + +#~ msgid " STRING True if string is not empty." +#~ msgstr " СТРОКРИÑтина, еÑли Ñтркоа не пуÑта." + +#~ msgid " STRING1 = STRING2" +#~ msgstr " СТРОКÐ1 = СТРОКÐ2" + +#~ msgid " True if the strings are equal." +#~ msgstr " ИÑтина, еÑли Ñтроки равны." + +#~ msgid " STRING1 != STRING2" +#~ msgstr " СТРОКÐ1 != СТРОКÐ2" + +#~ msgid " True if the strings are not equal." +#~ msgstr " ИÑтина, еÑли Ñтроки не равны." + +#~ msgid " STRING1 < STRING2" +#~ msgstr " СТРОКÐ1 < СТРОКÐ2" + +#~ msgid "" +#~ " True if STRING1 sorts before STRING2 lexicographically" +#~ msgstr "" +#~ " ИÑтина, еÑли СТРОКÐ1 лекÑикографичеÑки Ñтоит раньше " +#~ "СТРОКИ2" + +#~ msgid " STRING1 > STRING2" +#~ msgstr " СТРОКÐ1 > СТРОКÐ2" + +#~ msgid "" +#~ " True if STRING1 sorts after STRING2 lexicographically" +#~ msgstr "" +#~ " ИÑтина, еÑли СТРОКÐ1 лекÑикографичеÑки Ñтоит позже " +#~ "СТРОКИ2" + +#~ msgid "Other operators:" +#~ msgstr "Прочие операции:" + +#~ msgid " ! EXPR True if expr is false." +#~ msgstr " ! ВЫРÐЖЕÐИЕ ИÑтина, еÑли выражение ложно." + +#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." +#~ msgstr " ВЫР1 -a ВЫР2 ИÑтина, еÑли иÑтинны оба выражениÑ." + +#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." +#~ msgstr " ВЫР1 -o ВЫР2 ИÑтина, еÑли иÑтинно Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно из выражений." + +#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," +#~ msgstr " арг1 ОП арг2 ÐрифметичеÑÐºÐ°Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ°. ОП -- один из -eq, -ne," + +#~ msgid " -lt, -le, -gt, or -ge." +#~ msgstr " -lt, -le, -gt или -ge." + +#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," +#~ msgstr "" +#~ "Бинарные арифметичеÑкие операции возвращают иÑтину, еÑли ÐРГ1 равен," + +#~ msgid "" +#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgstr "не равен, меньше, меньше или равен, больше или больше или равен" + +#~ msgid "than ARG2." +#~ msgstr "ÐРГ2." + +#~ msgid "This is a synonym for the \"test\" builtin, but the last" +#~ msgstr "Это Ñиноним вÑтроенной команды \"test\", но поÑледним аргументом" + +#~ msgid "argument must be a literal `]', to match the opening `['." +#~ msgstr "должен быть литерал ']'. ÑоответÑтвующий открывающей `['." + +#~ msgid "Print the accumulated user and system times for processes run from" +#~ msgstr "ВывеÑти пользовательÑкое и ÑиÑтемное Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ процеÑÑов," + +#~ msgid "the shell." +#~ msgstr "запущенных из оболочки." + +#~ msgid "The command ARG is to be read and executed when the shell receives" +#~ msgstr "" +#~ "Команда ÐРГ должна быть прочитана и выполнена при получении оболочкой" + +#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +#~ msgstr "" +#~ "указанного(ых) Ñигнала(ов). ЕÑли ÐРГ не задан, вÑе указанные Ñигналы" + +#~ msgid "reset to their original values. If ARG is the null string each" +#~ msgstr "" +#~ "обрабатываютÑÑ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ°Ð¼Ð¸ по умолчанию. ЕÑли ÐРГ -- пуÑÑ‚Ð°Ñ Ñтрока," + +#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +#~ msgstr "" +#~ "вÑе указанные Ñигналы будут игнорироватьÑÑ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ¾Ð¹ и вызываемыми ей" + +#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +#~ msgstr "командами. ЕÑли задан Ñигнал EXIT (0), команда ÐРГ выполнÑетÑÑ Ð¿Ñ€Ð¸" + +#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" +#~ msgstr "" +#~ "выходе из оболочки, еÑли DEBUG, ÐРГ выполнÑетÑÑ Ð¿Ñ€Ð¸ выполнении каждой" + +#~ msgid "command. If ARG is `-p' then the trap commands associated with" +#~ msgstr "команды. ЕÑли ÐРГ -- `-p', выводÑÑ‚ÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹, ÑвÑзанные Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸" + +#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +#~ msgstr "Ñигналами. ЕÑли аргументы не заданы или еÑли задано только `-p'," + +#~ msgid "only `-p' is given, trap prints the list of commands associated with" +#~ msgstr "trap выводит ÑпиÑок команд, ÑвÑзанных Ñо вÑеми Ñигналами. Сигнал" + +#~ msgid "" +#~ "each signal number. SIGNAL_SPEC is either a signal name in " +#~ msgstr "задаётÑÑ Ð»Ð¸Ð±Ð¾ Ñвоим именем в , либо номером. `trap -l'" + +#~ msgid "" +#~ "or a signal number. `trap -l' prints a list of signal names and their" +#~ msgstr "выводит ÑпиÑок имён Ñигналов и ÑоответÑтвующих им номеров." + +#~ msgid "corresponding numbers. Note that a signal can be sent to the shell" +#~ msgstr "Заметьте, что оболочке можно поÑлать Ñигнал командой" + +#~ msgid "with \"kill -signal $$\"." +#~ msgstr "\"kill -signal $$\"." + +#~ msgid "For each NAME, indicate how it would be interpreted if used as a" +#~ msgstr "Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ИМЕÐИ определÑет, как оно будет обрабатыватьÑÑ" + +#~ msgid "If the -t option is used, returns a single word which is one of" +#~ msgstr "ЕÑли задан параметр -t, возвращает Ñлово -- `alias', `keyword'," + +#~ msgid "" +#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +#~ msgstr "`function', `builtin', `file' или `' -- еÑли, ÑоответÑтвенно, ИМЯ" + +#~ msgid "" +#~ "alias, shell reserved word, shell function, shell builtin, disk file," +#~ msgstr "ÑвлÑетÑÑ Ð¿Ñевдокомандой, зарезервированным Ñловом, функцией, или" + +#~ msgid "or unfound, respectively." +#~ msgstr "вÑтроенной командой оболочки, диÑковым файлом или не найдено." + +#~ msgid "If the -p flag is used, either returns the name of the disk file" +#~ msgstr "" +#~ "При иÑпользовании флага -p либо возвращаетÑÑ Ð¸Ð¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñемого диÑкового " +#~ "файла," + +#~ msgid "that would be executed, or nothing if -t would not return `file'." +#~ msgstr "либо ничего, еÑли -t вернуло бы значение, отличное от `file'" + +#~ msgid "If the -a flag is used, displays all of the places that contain an" +#~ msgstr "" +#~ "При иÑпользовании флага -a выводитÑÑ Ñ€Ð°Ñположение вÑех иÑполнÑемых файлов" + +#~ msgid "" +#~ "executable named `file'. This includes aliases and functions, if and" +#~ msgstr "" +#~ "Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем. ЕÑли одновременно не иÑпользуетÑÑ Ñ„Ð»Ð°Ð³ -p и только" + +#~ msgid "only if the -p flag is not also used." +#~ msgstr "тогда, выводÑÑ‚ÑÑ Ñ‚Ð°ÐºÐ¶Ðµ пÑевдокоманды и функции." + +#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," +#~ msgstr "ВмеÑто -a, -p и -t можно иÑпользовать, ÑоответÑтвенно, -all," + +#~ msgid "respectively." +#~ msgstr "-path и -type." + +#~ msgid "Ulimit provides control over the resources available to processes" +#~ msgstr "ulimit позволÑет управлÑть реÑурÑами, доÑтупными запущенным" + +#~ msgid "started by the shell, on systems that allow such control. If an" +#~ msgstr "оболочкой процеÑÑам (на ÑиÑтемах, допуÑкающих такое управление)." + +#~ msgid "option is given, it is interpreted as follows:" +#~ msgstr "Параметры интерпретируютÑÑ Ñледующим образом:" + +#~ msgid " -S\tuse the `soft' resource limit" +#~ msgstr " -S\tиÑпользовать `мÑгкое' ограничение реÑурÑов" + +#~ msgid " -H\tuse the `hard' resource limit" +#~ msgstr " -H\tиÑпользовать `жёÑткое' ограничение реÑурÑов" + +#~ msgid " -a\tall current limits are reported" +#~ msgstr " -a\tвывеÑти информацию о вÑех текущих ограничениÑÑ…" + +#~ msgid " -c\tthe maximum size of core files created" +#~ msgstr " -c\tмакÑимальный размер Ñоздаваемых файлов Ñлепков памÑти" + +#~ msgid " -d\tthe maximum size of a process's data segment" +#~ msgstr " -d\tмакÑимальный размер Ñегмента данных процеÑÑа" + +#~ msgid " -m\tthe maximum resident set size" +#~ msgstr " -m\tмакÑимальный размер резидентной чаÑти процеÑÑа" + +#~ msgid " -s\tthe maximum stack size" +#~ msgstr " -s\tмакÑимальный размер Ñтека" + +#~ msgid " -t\tthe maximum amount of cpu time in seconds" +#~ msgstr " -t\tмакÑимальное процеÑÑорное Ð²Ñ€ÐµÐ¼Ñ (в Ñекундах)" + +#~ msgid " -f\tthe maximum size of files created by the shell" +#~ msgstr " -f\tмакÑимальный размер Ñоздаваемых оболочкой файлов" + +#~ msgid " -p\tthe pipe buffer size" +#~ msgstr " -p\tразмер буфера конвейера" + +#~ msgid " -n\tthe maximum number of open file descriptors" +#~ msgstr " -n\tмакÑимальное количеÑтво открытых файловых декÑрипторов" + +#~ msgid " -u\tthe maximum number of user processes" +#~ msgstr " -u\tмакÑимальное чиÑло процеÑÑов одного пользователÑ" + +#~ msgid " -v\tthe size of virtual memory" +#~ msgstr " -v\tразмер виртуальной памÑти" + +#~ msgid "If LIMIT is given, it is the new value of the specified resource." +#~ msgstr "" +#~ "ЕÑли задано ОГРÐÐИЧЕÐИЕ, оно задёт новое значение Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ реÑурÑа." + +#~ msgid "Otherwise, the current value of the specified resource is printed." +#~ msgstr "" +#~ "Ð’ противном Ñлучае выводитÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ значение Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ реÑурÑа." + +#~ msgid "If no option is given, then -f is assumed. Values are in 1k" +#~ msgstr "ЕÑли параметры не заданы, предполагаетÑÑ, что задано -f. ЗначениÑ" + +#~ msgid "increments, except for -t, which is in seconds, -p, which is in" +#~ msgstr "" +#~ "измерÑÑŽÑ‚ÑÑ Ð² КБ, кроме -t, измерÑемого в Ñекундах, -p, единица измерениÑ" + +#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" +#~ msgstr "которого -- 512 байтов, и -u, задающего безразмерное чиÑло" + +#~ msgid "processes." +#~ msgstr "процеÑÑов." + +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" +#~ msgstr "" +#~ "УÑтанавливает маÑку ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¼ файлов в РЕЖИМ. ЕÑли опущен" + +#~ msgid "" +#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" +#~ msgstr "" +#~ "РЕЖИМ или задан параметр -S выводитÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ значение маÑки. Параметр" + +#~ msgid "" +#~ "option makes the output symbolic; otherwise an octal number is output." +#~ msgstr "-S делает вывод ÑимволичеÑким, в противном Ñлучае иÑпользуетÑÑ" + +#~ msgid "If MODE begins with a digit, it is interpreted as an octal number," +#~ msgstr "" +#~ "воÑьмеричое чиÑло. ЕÑли РЕЖИм начинаетÑÑ Ñ Ñ†Ð¸Ñ„Ñ€Ñ‹, он интерпретируетÑÑ" + +#~ msgid "" +#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." +#~ msgstr "" +#~ "как воÑьмеричное чиÑло, в противном Ñлучае как Ñтрока, Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÐµÐ¼Ð°Ñ " +#~ "chmod(1)." + +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If" +#~ msgstr "" +#~ "Подождать Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ процеÑÑа и Ñообщить код завершениÑ. ЕÑли" + +#~ msgid "N is not given, all currently active child processes are waited for," +#~ msgstr "" +#~ "N не задано, ожидаетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ðµ работы вÑех активных дочерних процеÑÑов" + +#~ msgid "and the return code is zero. N may be a process ID or a job" +#~ msgstr "и код возврата равен 0. N может быть идентификатором процеÑÑа" + +#~ msgid "specification; if a job spec is given, all processes in the job's" +#~ msgstr "" +#~ "или Ñпецификацией задачи, еÑли задана ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸, ожидаетÑÑ" + +#~ msgid "pipeline are waited for." +#~ msgstr "завершение работы вÑех процеÑÑов конвейера задачи." + +#~ msgid "and the return code is zero. N is a process ID; if it is not given," +#~ msgstr "" +#~ "и код возврата равен 0. N -- идентификатор процеÑÑа, еÑли он не задан," + +#~ msgid "all child processes of the shell are waited for." +#~ msgstr "ожидаетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ðµ работы вÑех дочерних процеÑÑов оболочки." + +#~ msgid "The `for' loop executes a sequence of commands for each member in a" +#~ msgstr "Цикл `for' выполнÑет поÑледовательноÑть команд Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ члена" + +#~ msgid "" +#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +#~ msgstr "" +#~ "ÑпиÑка. ЕÑли отÑутÑтвует `in СЛОВР...;', предполагаетÑÑ, что задано" + +#~ msgid "" +#~ "assumed. For each element in WORDS, NAME is set to that element, and" +#~ msgstr "`in \"$@\"'. Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ из СЛОВ ИМЕÐИ приÑваиваетÑÑ ÐµÐ³Ð¾ значение" + +#~ msgid "the COMMANDS are executed." +#~ msgstr "и затем выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ." + +#~ msgid "The WORDS are expanded, generating a list of words. The" +#~ msgstr "СЛОВРразворачиваютÑÑ Ð¸ образуют ÑпиÑок Ñлов. Полученный ÑпиÑок" + +#~ msgid "set of expanded words is printed on the standard error, each" +#~ msgstr "" +#~ "выводитÑÑ Ð½Ð° Ñтандартный поток ошибок, каждому припиÑываетÑÑ Ñпереди" + +#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" +#~ msgstr "чиÑло. ЕÑли `in СЛОВÐ' отÑутÑтвует, предполагаетÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼" + +#~ msgid "is assumed. The PS3 prompt is then displayed and a line read" +#~ msgstr "" +#~ "`in \"$@\"'. Затем выводитÑÑ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ðµ PS3 и Ñо Ñтандартного ввода" + +#~ msgid "from the standard input. If the line consists of the number" +#~ msgstr "ÑчитываетÑÑ Ñтрока. ЕÑли Ñтрока ÑоÑтоит из чиÑла, ÑоответÑтвующего" + +#~ msgid "corresponding to one of the displayed words, then NAME is set" +#~ msgstr "одному из выведенных Ñлов, ИМЯ уÑтанавливаетÑÑ Ñ€Ð°Ð²Ð½Ñ‹Ð¼ Ñтому" + +#~ msgid "to that word. If the line is empty, WORDS and the prompt are" +#~ msgstr "Ñлову. ЕÑли Ñтрока пуÑта, Ñлова и приглашение выводÑÑ‚ÑÑ ÐµÑ‰Ñ‘ раз." + +#~ msgid "redisplayed. If EOF is read, the command completes. Any other" +#~ msgstr "ЕÑли прочитан Ñимвол конца файла, выполнение команды завершаетÑÑ." + +#~ msgid "value read causes NAME to be set to null. The line read is saved" +#~ msgstr "любое другое значение уÑтанавливает ИМЯ в NULL. ÐŸÑ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока" + +#~ msgid "in the variable REPLY. COMMANDS are executed after each selection" +#~ msgstr "ÑохранÑетÑÑ Ð² переменной REPLY. ПоÑле каждого выбора выполнÑÑŽÑ‚ÑÑ" + +#~ msgid "until a break or return command is executed." +#~ msgstr "" +#~ "КОМÐÐДЫ до тех пор, пока не будет выполнена команда break или return." + +#~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" +#~ msgstr "" +#~ "ВыполнÑет КОМÐÐДЫ в завиÑимоÑти от того, какому ШÐБЛОÐУ ÑоответÑтвует" + +#~ msgid "`|' is used to separate multiple patterns." +#~ msgstr "" +#~ "СЛОВО. Ð”Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½ÐµÑкольких допуÑтимых шаблонов иÑпользуетÑÑ `|'." + +#~ msgid "" +#~ "The if COMMANDS are executed. If the exit status is zero, then the then" +#~ msgstr "" +#~ "ВыполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ, заданные в if. ЕÑли код возврата нулевой, выполнÑÑŽÑ‚ÑÑ" + +#~ msgid "" +#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +#~ msgstr "КОМÐÐДЫ then, иначе по очереди выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ elif, и еÑли код" + +#~ msgid "" +#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" +#~ msgstr "" +#~ "возврата нулевой, выполнÑÑŽÑ‚ÑÑ ÑоответÑтвующие КОМÐÐДЫ then и выполнение" + +#~ msgid "" +#~ "are executed and the if command completes. Otherwise, the else COMMANDS" +#~ msgstr "" +#~ "команды if завершаетÑÑ. Ð’ противном Ñлучае выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ else," + +#~ msgid "" +#~ "are executed, if present. The exit status is the exit status of the last" +#~ msgstr "еÑли они приÑутÑтвуют. Код возврата равен коду возврата поÑледней" + +#~ msgid "command executed, or zero if no condition tested true." +#~ msgstr "" +#~ "выполненной команды, либо нулю, еÑли ни одно уÑловие не было иÑтинным." + +#~ msgid "Expand and execute COMMANDS as long as the final command in the" +#~ msgstr "" +#~ "Разворачивает и выполнÑет КОМÐÐДЫ до тех пор, пока поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°" + +#~ msgid "`while' COMMANDS has an exit status of zero." +#~ msgstr "Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ `while' не завершит работу Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ кодом возврата." + +#~ msgid "`until' COMMANDS has an exit status which is not zero." +#~ msgstr "Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ `until' не завершит работу Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ кодом возврата." + +#~ msgid "Create a simple command invoked by NAME which runs COMMANDS." +#~ msgstr "Создаёт проÑтую команду, вызываемую по ИМЕÐИ и выполнÑющую КОМÐÐДЫ." + +#~ msgid "Arguments on the command line along with NAME are passed to the" +#~ msgstr "Ðргументы командной Ñтроки, переданные ИМЕÐИ, передаютÑÑ Ð² функцию" + +#~ msgid "function as $0 .. $n." +#~ msgstr "как $0 .. $n." + +#~ msgid "Run a set of commands in a group. This is one way to redirect an" +#~ msgstr "ВыполнÑет набор команд. Это один из ÑпоÑобов оÑущеÑтвить" + +#~ msgid "entire set of commands." +#~ msgstr "перенаправление Ð´Ð»Ñ Ñ†ÐµÐ»Ð¾Ð³Ð¾ набора команд." + +#~ msgid "This is similar to the `fg' command. Resume a stopped or background" +#~ msgstr "" +#~ "Похоже на команду `fg'. Продолжает выполнение оÑтановленной или фоновой" + +#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +#~ msgstr "" +#~ "задачи. ЕÑли заданы ЦИФРЫ, иÑпользÑетÑÑ Ð·Ð°Ð´Ð°Ñ‡Ð° Ñ Ñтим номером, а еÑли" + +#~ msgid "" +#~ "WORD, then the job whose name begins with WORD is used. Following the" +#~ msgstr "СЛОВО -- задача, Ð¸Ð¼Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ начинаетÑÑ Ñ Ñтого Ñлова. Завершение" + +#~ msgid "job specification with a `&' places the job in the background." +#~ msgstr "Ñпецификации задачи Ñимволом & переводит задачу в фоновый режим." + +#~ msgid "BASH_VERSION The version numbers of this Bash." +#~ msgstr "BASH_VERSION Ðомер верÑии Bash." + +#~ msgid "CDPATH A colon separated list of directories to search" +#~ msgstr "CDPATH Разделённый запÑтыми ÑпиÑок каталогов, где ищетÑÑ" + +#~ msgid "\t\twhen the argument to `cd' is not found in the current" +#~ msgstr "\t\tаргумент команды `cd', еÑли он не найден в текущем" + +#~ msgid "" +#~ "HISTFILE The name of the file where your command history is stored." +#~ msgstr "HISTFILE Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°, где ÑохранÑетÑÑ Ð¸ÑÑ‚Ð¾Ñ€Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´." + +#~ msgid "HISTFILESIZE The maximum number of lines this file can contain." +#~ msgstr "HISTFILESIZE МакÑимальное чиÑло Ñтрок в Ñтом файле." + +#~ msgid "HISTSIZE The maximum number of history lines that a running" +#~ msgstr "HISTSIZE МакÑимальное чиÑло Ñтрок иÑтории команд, к которым" + +#~ msgid "\t\tshell can access." +#~ msgstr "\t\tимеет доÑтуп оболочка." + +#~ msgid "HOME The complete pathname to your login directory." +#~ msgstr "HOME Полный путь к домашнему каталогу." + +#~ msgid "" +#~ "HOSTTYPE The type of CPU this version of Bash is running under." +#~ msgstr "" +#~ "HOSTTYPE Тип процеÑÑора, на котором работает Ñта верÑÐ¸Ñ Bash." + +#~ msgid "" +#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" +#~ msgstr "" +#~ "IGNOREEOF УправлÑет дейÑтвиÑми, Ñовершаемыми оболочкой при вводе" + +#~ msgid "\t\tcharacter as the sole input. If set, then the value" +#~ msgstr "\t\tÑимвола конца файла. ЕÑли уÑтановлена, её значение -- чиÑло" + +#~ msgid "\t\tof it is the number of EOF characters that can be seen" +#~ msgstr "\t\tÑимволов конца файла, которые могут быть вÑтречены подрÑд," + +#~ msgid "\t\tin a row on an empty line before the shell will exit" +#~ msgstr "\t\tв пуÑтой Ñтроке, поÑле чего оболочка завершит работу" + +#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." +#~ msgstr "" +#~ "\t\t(по умолчанию 10). ЕÑли не уÑтановлена, EOF обозначает конец ввода." + +#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." +#~ msgstr "" +#~ "MAILCHECK\tКак чаÑто, в Ñекундах, Bash проверÑет наличие новой почты." + +#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" +#~ msgstr "MAILPATH\tРазделённый запÑтыми ÑпиÑок имён файлов, где Bash" + +#~ msgid "\t\tfor new mail." +#~ msgstr "\t\tпроверÑет наличие новой почты." + +#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." +#~ msgstr "OSTYPE\t\tВерÑÐ¸Ñ Unix, под которой работает Ñта верÑÐ¸Ñ Bash." + +#~ msgid "PATH A colon-separated list of directories to search when" +#~ msgstr "PATH Разделённый запÑтыми ÑпиÑок каталогов, где ищутÑÑ" + +#~ msgid "\t\tlooking for commands." +#~ msgstr "\t\tкоманды." + +#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" +#~ msgstr "PROMPT_COMMAND Команда, выполнÑÐµÐ¼Ð°Ñ Ð¿ÐµÑ€ÐµÐ´ выводом каждого" + +#~ msgid "\t\tprimary prompt." +#~ msgstr "\t\tпервичного приглашениÑ." + +#~ msgid "PS1 The primary prompt string." +#~ msgstr "PS1 Строка первичного приглашениÑ." + +#~ msgid "PS2 The secondary prompt string." +#~ msgstr "PS2 Строка вторичного приглашениÑ." + +#~ msgid "TERM The name of the current terminal type." +#~ msgstr "TERM Ð˜Ð¼Ñ Ñ‚Ð¸Ð¿Ð° текущего терминала." + +#~ msgid "auto_resume Non-null means a command word appearing on a line by" +#~ msgstr "" +#~ "auto_resume Ðенулевые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñлов команд, вÑтречающиеÑÑ Ð² Ñтроке" + +#~ msgid "\t\titself is first looked for in the list of currently" +#~ msgstr "\t\tотдельно, Ñначала ищутÑÑ Ð² ÑпиÑке оÑтановленных" + +#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." +#~ msgstr "\t\tв данный момент задач. ЕÑли найдено, задача активируетÑÑ." + +#~ msgid "\t\tA value of `exact' means that the command word must" +#~ msgstr "\t\t`exact' значит, что команда должна в точноÑти" + +#~ msgid "\t\texactly match a command in the list of stopped jobs. A" +#~ msgstr "\t\tÑоответÑтвовать команде в ÑпиÑке оÑтановленных задач." + +#~ msgid "\t\tvalue of `substring' means that the command word must" +#~ msgstr "\t\t`substring' значит, что команда должна быть подÑтрокой" + +#~ msgid "\t\tmatch a substring of the job. Any other value means that" +#~ msgstr "\t\tзадачи. Любые другие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÑŽÑ‚, что" + +#~ msgid "\t\tthe command must be a prefix of a stopped job." +#~ msgstr "\t\tкоманда должна быть префикÑом оÑтановленной задачи." + +#~ msgid "command_oriented_history" +#~ msgstr "command_oriented_history" + +#~ msgid "" +#~ " Non-null means to save multiple-line commands together on" +#~ msgstr "" +#~ " Ðенулевое значение означает, что многоÑтрочные команды" + +#~ msgid " a single history line." +#~ msgstr " будут ÑохранÑтьÑÑ Ð² одной Ñтроке иÑтории." + +#~ msgid "histchars Characters controlling history expansion and quick" +#~ msgstr "histchars УправлÑющие Ñимволы раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð¸Ñтории и быÑтрой" + +#~ msgid "\t\tsubstitution. The first character is the history" +#~ msgstr "\t\tподÑтановки. Первый Ñимвол -- Ñимвол подÑтановки" + +#~ msgid "\t\tsubstitution character, usually `!'. The second is" +#~ msgstr "\t\tиÑтории, обычно `!'. Второй -- Ñимвол `быÑтрой" + +#~ msgid "\t\tthe `quick substitution' character, usually `^'. The" +#~ msgstr "\t\tподÑтановки', обычно `^'. Третий -- Ñимвол `комментариÑ" + +#~ msgid "\t\tthird is the `history comment' character, usually `#'." +#~ msgstr "\t\tиÑтории', обычно `#'." + +#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" +#~ msgstr "HISTCONTROL\tЕÑли равен `ignorespace', Ñто означает, что Ñтроки," + +#~ msgid "\t\tlines which begin with a space or tab on the history" +#~ msgstr "\t\tначинающиеÑÑ Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð° или знака табулÑции, не попадают" + +#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" +#~ msgstr "\t\tв иÑторию. `ignoredups' означает, что Ñтроки, Ñопадающие" + +#~ msgid "\t\tenter lines which match the last entered line. Set to" +#~ msgstr "\t\tÑ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹, не попадают в иÑторию. `ignoreboth' --" + +#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," +#~ msgstr "\t\tодновременное дейÑтвие обоих параметров. ЕÑли не" + +#~ msgid "\t\tor set to any other value than those above means to save" +#~ msgstr "\t\tуÑтановлено, или равно другому значению, то в иÑторию" + +#~ msgid "\t\tall lines on the history list." +#~ msgstr "\t\tкоманд попадают вÑе Ñтроки." + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "Помещает каталог на вершину Ñтека каталогов или вращает" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "Ñтек так, чтобы на вершине находилÑÑ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ каталог. Без" + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "аргументов менÑет меÑтами два верхних каталога." + +#~ msgid "+N\tRotates the stack so that the Nth directory (counting" +#~ msgstr "+N\tВращает Ñтек так, чтобы N-й каталог (ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð»ÐµÐ²Ð¾Ð¹ Ñтороны " + +#~ msgid "\tfrom the left of the list shown by `dirs') is at the top." +#~ msgstr "\tÑпиÑка, выводимого `dirs') оказалÑÑ Ð½Ð° вершине Ñтека." + +#~ msgid "-N\tRotates the stack so that the Nth directory (counting" +#~ msgstr "-N\tВращает Ñтек так, чтобы N-й каталог (ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹" + +#~ msgid "\tfrom the right) is at the top." +#~ msgstr "\tÑтороны) оказалÑÑ Ð½Ð° вершине Ñтека." + +#~ msgid "-n\tsuppress the normal change of directory when adding directories" +#~ msgstr "-n\tподавлÑет обычную Ñмену каталога при добавлении каталога" + +#~ msgid "\tto the stack, so only the stack is manipulated." +#~ msgstr "\tв Ñтек, так что менÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñодержимое Ñтека." + +#~ msgid "dir\tadds DIR to the directory stack at the top, making it the" +#~ msgstr "dir\tпомещает DIR на вершину Ñтека и делает его новым" + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "ПроÑматривать Ñтек каталогов можно командой `dirs'." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "УдалÑет Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸Ð· Ñтека каталогов. Без аргументов" + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "удалÑет из Ñтека каталог на вершине и делает рабочим каталог," + +#~ msgid "+N\tremoves the Nth entry counting from the left of the list" +#~ msgstr "+N\tудалÑет N-й каталог, ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð»ÐµÐ²Ð¾Ð¹ Ñтороны ÑпиÑка," + +#~ msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "\tвыводимого `dirs', Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ. Ðапример, `popd +0'" + +#~ msgid "\tremoves the first directory, `popd +1' the second." +#~ msgstr "\tудалÑет первый каталог, `popd +1' -- второй." + +#~ msgid "-N\tremoves the Nth entry counting from the right of the list" +#~ msgstr "-N\tудалÑет N-й каталог, ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹ Ñтороны ÑпиÑка," + +#~ msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "\tвыводимого `dirs', Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ. Ðапример, `popd -0'" + +#~ msgid "\tremoves the last directory, `popd -1' the next to last." +#~ msgstr "\tудалÑет поÑледний каталог, `popd -1' -- предпоÑледний." + +#~ msgid "" +#~ "-n\tsuppress the normal change of directory when removing directories" +#~ msgstr "-n\tподавлÑет обычную Ñмену каталога при удалении каталогов из" + +#~ msgid "\tfrom the stack, so only the stack is manipulated." +#~ msgstr "\tÑтека, так что менÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñодержимое Ñтека." + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "Выводит ÑпиÑок запомненных на данный момент каталогов. Каталоги" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "" +#~ "попадают в ÑпиÑок при иÑпользовании команды `pushd', вы можете забрать" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "их из ÑпиÑка командой `popd'." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "" +#~ "Флаг -l указывает, что `dirs' не должна выводит Ñокращённые варианты" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "каталогов, заданных отноÑительно домашнего. Это означает, что" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "`~/bin' будет отображатьÑÑ ÐºÐ°Ðº `/homes/bfox/bin'. Флаг -v" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "заÑтавлÑет `dirs' выводить каталоги по одному в Ñтроке, предварÑÑ" + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "" +#~ "Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° номером его позиции в Ñтеке. Флаг -p делает то же Ñамое," + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "но не добавлÑÑŽÑ‚ÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð° позиций. Флаг -c очищает Ñтек каталогов," + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "удалÑÑ Ð²Ñе его Ñлементы." + +#~ msgid "" +#~ "+N\tdisplays the Nth entry counting from the left of the list shown by" +#~ msgstr "+N\tвыводит N-й каталог, ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð»ÐµÐ²Ð¾Ð¹ Ñтороны ÑпиÑка, выводимого" + +#~ msgid "\tdirs when invoked without options, starting with zero." +#~ msgstr "\tdirs при вызове без параметров, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ." + +#~ msgid "" +#~ "-N\tdisplays the Nth entry counting from the right of the list shown by" +#~ msgstr "-N\tвыводит N-й каталог, ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹ Ñтороны ÑпиÑка, выводимого" + +#~ msgid "Toggle the values of variables controlling optional behavior." +#~ msgstr "МенÑет значение переменных, управлÑющих поведением оболочки." + +#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" +#~ msgstr "Флаг -s означает включить (уÑтановить) каждое ИМЯ_ПÐРÐМЕТРÐ," + +#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" +#~ msgstr "флаг -u ÑбраÑывает. Флаг -q подавлÑет вывод, уÑтановлен или" + +#~ msgid "status indicates whether each OPTNAME is set or unset. The -o" +#~ msgstr "Ñброшен параметр определÑетÑÑ Ð¿Ð¾ коду возврата. Параметр -o" + +#~ msgid "option restricts the OPTNAMEs to those defined for use with" +#~ msgstr "ограничивает работу параметрами, определёнными Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ" + +#~ msgid "`set -o'. With no options, or with the -p option, a list of all" +#~ msgstr "`set -o'. Без параметров или при заданном параметре -p, выводитÑÑ" + +#~ msgid "settable options is displayed, with an indication of whether or" +#~ msgstr "ÑпиÑок вÑех уÑтановленных параметров и информациÑ, уÑтановлены" + +#~ msgid "not each is set." +#~ msgstr "они или нет." diff --git a/bash-5.1/po/sk.gmo b/bash-5.1/po/sk.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c6c89c52bf64cd40fba6651e2a096e722872b2fc GIT binary patch literal 84939 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�U29r1-_sox22Sn#sCee;Dz^cY^%m}0B-(4?q}+}pKP%Hh?slG0@GgjtVBVc!N0Fqhbs)TzN!mfvu3^Z8Neek1;bpbyaB@2-npqOB zJri9#!fMHE6GPX0WsaE-61O?q)MmP}f8C}Y{@JVbXx{bCLQrC-TSY=_d zFvv+g!hk-fSN<%ZqRj^QVpKwv5Uwj^zw%-RlE03SS&%{BogOh=<1hSK+quw!u}su1 zxaPiBc2UvsWU!5mCKuB>CfGY&u53)9F`wOcF)aCH&$&>68d_2eX=FGK?!9W~f&QWJ zJ|gdkLq0RXkY+t4Yy3JhIreH~QC1?+>(sSXYw@_VOk53mdi0;(2IP^&P%&!QHIHK* zX#bomga3*Fz>W({_+{1T>dvbvsV^d|v->_7>b&Z42-@n+Cv=;pG!%5VfT-!xguB=f zvLo1#Y7_fZ3Xz$+k$Yu9xIy^b`z9M~%78b+prgY(msvPhokfET**bkXa+=@|a;&U4 zIFwW5X8rQcT?_DA5?gklO*&J06HSrV2%^MjLzG16u*MqB(;=!cEb|jmRS>)6XPVboUXZaElY4cFoanoanN}^gf$>! zBHa+gC2#tG&@9Lgj0{6DTx{Q|@mnjeyZqe)o_# zjgMv59kkes!9?;!)cK;cX4benRykxYD?>HRRG-C!mMDr#HW0kXHO;jevHjck*-VGq zITWMb51V-{(_Hb&FZX7ytX(FVROhg!B4ZFqZF{vto}SpoCbJ?1lxyD;_YS3N zHm=ojT%Bh$#r`fUNYgQKRhZSF(drBz8*MYb?L{MIo0Y@lOHQxTarxN> zlarAXvCuVg&293KQC!KEF$2om-u)id-&ice+14~}uAqe~sJdvMn-3)uEG`3R85?4| z{h09T1#5AattURW>Ml{Yu#`bdR&$(hdDuUF3+@=V`Z5`fSbLSR$vXt&<$k_?;tKVA z=eCF6EW5$Z6Ep-7Kg#k*1`TpRJ4LnejB%w3Qya*uU8O40`>Cjr;IH}#MTezJCPwIA zJ?IQ-=$F@#Y^VdXJ_tnC5L!R zIRbg_0Wt}yAvt94?JZE1!wVKX@Xigd@DUld%Wo%%$M$+{fuoX>aoN7-AnnD5YWhCw zzHnFP!_w~~?M}2<$=Oe%m;G{Cv?3z}jdRwfuCvX_wM3MNB>A*oDY@2OB_BN)Q=C?4 zjCZ&tn`4t*VNa-1A$;J(1rZW|g02l4gU|_B0OjLywsZL`9OG<3^;J>YkZ0;IJd+!G z3n$`ZcyWP^UrfUb^1I&9@gz3D+h(9>{;fQkWY;w9nY(^iKAn7%Bgx^z2+6p@Fg@k;-uHqzA^*vYA!QWOz#_jY*Phh~k)b`Yd5{;L+fDZ?Sr= zdL%Eol21mLH}v{9oB-a-gJh(NGv&l-bGUb!@vPb$-e#tf4Qe<7TmGoNP*Odb1qVch zP7A1q1*qkNgryP9QTi~6!z}yJX=C@I0W=+;9u^)OWeyPNo6z9?|8oo$|K15d$XG|ux%hEL` zjs_#;C=0$$91WGo*wQ?kz-`h4aWsvLr-xynqhcV5(Ibfm&<@x5)gJdR+0eZqj$~iL z;f8&gCp~Oxqc=N+;+DseL{W33;$bm{&RCzPmuwIFbO74KBhGm{u6q)u^9+u2TS0v& z(wVH#ZDaKK^%{v3lkJ^v6B(CEeDkQ5ky)91kOeIip0;-ZA@}KPe^``}Q`%dq^YRip z-M$ABQkUAkMHY8ZnTQ{{a_ig|8?#oHsdPF~{N9z$x`OL8sCzfOf72sYPOsHLap-Nv zxen`MhchG%!|%*Vt!C$xX_oSAc{14i%Nw0GD|0#d7}&9rXGkUGu`t!y$dau@#Ae7v z-@SM3z5Md2^8MyMS&i32>Fo-(W>D4Z>JxcwGX3mzvcZN6){y)cW=x7TzKYST&c^1L zpXZSdHWGwS7TF3)gdK0p2u#!caLB*I$5yC50}wtC6rb|QPnJmtW_5*p;!OqzanLb~ z9~jTXLDkHsFuTte%KBtOZ?V=mP70pZM1i>R@PO|LN)Mlm+k=iE64rJ?@msg*LRxMX zM-yjF$S^&Qrr~o?HX;Dp?h8;;g!(lzN208;FDST-2?>s7vW-POi$lDg3Q6j3$^rn-7AJ*;?cuAY&{m|Ngu54`(@ zwplS~_EcYR&@O!562SO`$y+QA9W_^M>~>>gK|>|kTY7QC+a*^kiw$UzPQP3ojX`x+nMAn<0BT4VH5+kJSbr~_|{57Iz zy!B3#-1hzo9@IOoFx7a|-(jK%HUS{=Rcj5vmcW6Uy0U`0UsuSTF#L`rV>#{5nU<>O z^rxbqL_++lcyZ#M-VF0EnYAQo>Yr6%Lpu%FZ2#(01^S#pCOvdgD7p;K2{=>Q74ll$kBvQ zC$D>{!lOrJ;Y;zc+Ix%S==694ix+v05IIva>jye;RBwi1+@2|2umHI4K4*^2FuwJi zU++4}JaG+c`wsJBSPHlFC-rhD z)r8Mm@H<>SV$$rSJdII0;|VF&iOcIMDDaQ)~P#H zVJi`D(2nL8{#_BPk7jG>auNeGQu*2MBc0#kRC~{>vG9{mWQp*{NA+&n+|5;^N&J+l zN1LdGZvs(-pOHXiG4O`j%DL3w;8u(kDBPtq3>jSw9O?Ej7fkLlv97NGFiWd9Lty<7 z#vWo~X4vj}coz;F_9;oS>dZ>&WW92R=d-cWeX7!JTGcd=(po|0fpOvljA~?7_x)0I zucUYNN+UCUhkH+~CP@~`$zEw7Z9?mU50Ke*mNqxtzD2PDz4O1)TAg%B28%yvR+OBy zQk7b>?iN+abl$MPR>YP~4u{vPi2Dy*Y14b68 zoR9n}9uG+=6YOA<#mv{3zQ)L7&qhUqNAEmX;|oF zOWJ>E-##g(0nK4p5|&chn*2aky*RbImQ)pXAwRyvcer=oz>!3e1b$-iNW~YCfqc|c zKZBK^pA`syLTVqGTa$XRwEel?nlIBbKcyj>$4&$!h)&wX0zk93O#NGVRzJ8{4p-Bv zU@S!W+s8uce5le43O#74FzWd&i&Az~$0|LGnVF@(T}v}d`70Qk9Up@1F@>{7sb@#V zhBhy9#m7n{8^_TEh!^}F}> z?>f4jkEra-Kjk+48OqU3ORULri(7kW(KHv%!BI_XFw~D~<`Mr;ENyXR6IWb2su|P6 zt4c@cUOH>>6H?rGe{9&&A_vU^GADR+*Y15<)Xa>Zy)_!E!b02Vim6!^B#tFo*mzV? zM}`4WM@nXMInPI8A)2%*R9=w9EG-`COBt7Pi?$wF!iB=*f^Cb;vQJD-)uvnRnG-v9 z?imm-BVBDyxmVn*3%&d!o52{H2Te2ME9E{#?Xy#?T7pyg7@d|+oohlH8@a^$cB&sU zU*haJ-)>^h9R*blp06Tn#9h&Ae3sDrAvo}C`cCZag2n*;%WW6-m$9@Lhvliwwo!oQG^{ohD(u7iEtfNq9F~ zt9Zg!GjW`{LonbRlcDoi{1Y4w|5W|3LLB)LRmhn#uIX*ki=VK|x1Td1 zuQg&BtfG8@T;}CDoyQm4%sC02YB8?Z!6QShJEzzmxre-K_(X7bO1q4E9?7xbcBeXW zD5b*Hqa;GG@vXsz%@stQXzy|h6Bsu4XH!(MpA&H*29u&&K?5eX$N{%OGg%sQN6h#~ zH)r01B{>>IiVLM6W>%FFd#x7=&!Q*10A9^@YdvX3NEDEbxz&n@vx zhcC3e+pHXhdFLx#!$&Y+b5vP6mDzJLz+`OxD#_uAT;`Eb#%r2A$#eaJcF7k2ZE|+h-vd$vGE9Nsppnu|Bm{!*+XY1{i}_eUobXV>;6@jfo)wfzV7Z12BHtXrI^YkHlCx>l6oG@9SZW0n|4 zJo^F6cbnyZc;H+ec*2))~1K8m3dVdx{VtQ(&f1 zS8VgRdp(UertL=Jr$%~0QP<1Ad-s-lukj$J zBq5>2N37qx-1jB-?r$=w)VqTPHoZgjE$Q-s14F$#u{Pzc_wK?=-;!?LxOrpmrcJ$@ zACqp{yycObdN)3D<3KPwE>3Mp2dniNHkw@C zob0V^dQ9y~nUl@+#9!Jcx{_~6o0H4;^Uc0aV>hkexO}HPx*Anrp%qMq>#~8@T2yLV zwN{946t%XsTVuVC>7-Ltu_Jr?Y6KHt$Svt(c>nS8CmNBqq;WrYXpsUYHd3=SMqSlU zS*0N(WBu|0UYNlQl+8(N(y0HN8~1 zRhvH*s+*{S@gfx@=+cBmZo58h&fmm`+S@krXl7S|Gxe$pEKb(bgnLtDXKR8H1RfC8 zRi04z&wmjVm>jJ@9Y2M%%*;7S=5L%V&OrfRp0U*4yF3TRJe=R?VJv!mUt(A|JY4KbQHdWQyjoYp_uAjfD zTA!G;!WO2HcQVC`QDKQn*-}Kqj>Q$cyN@k+vs8KSE(oIySoN7Ouq{t}z5js#sG2bLoI?NPG3Bo`p+|C%3@D~HdeD#z!>_5vp=0nm_3}&ajBrC0kC(d*qVocB9*p&3J zkW>4Z#!kp|smAiaZP(A=*g6a4=Nj$Pr)bMkkH>pk2-Rpc82VqCscQ+JiUp?|uAgAi z`BTTxuJgCpbq#SuE|L^_N&uiykfW2W_WY@8O;WcgV}cGRqogiEN!mj}LrR1Z2W?XvFaBV>B8cWnHPh5gW!2|SpPIjsNp&*N zr1boIc|&SCSDl?e+;~2GHUwYdwp*#)9JQK?0ywHCw~P3QNV;m&Nl>X(D$I}MI+hA0%}GczhFqR^Zq1<=_+kk5Qcm~;yXTfP7!+M1gx*@5^oDej zPHiy_iV^izY^EDXCd;Q5gn2A+kxJ-DPt=2(Q44Axm5&d?AndX#QkUxqmdfa(_qrbK z*liMz*%N^pM(Tz1Z&uOVBS8i){Y0?2x=PCFRYiN?>h5YTYBk1R1?HhY(lue8!u2&= z6~}^=U@Emp&@!cB;<*{9KUXXT(HCwvk$CiD)hiwhU>OjW$LPfTEsVcX2Wqd_=zW(H=DB(@rPO>1=eWV5_2Nk__aY9<%7W3t?02y3OOOlq{DnbfWZZV5$ZlAxGe9=xthX%dwVD)Wk@ zQi~Q+G2M>aGsJ6Qq={fs=7f>~zIP+vFQgZr%rscwSxx8g&g*zAIF;G$%$P@j*ITAq zVES`RT zusz)5u9U+^?&s=xTCn%BI7xFg$dwnh()j97E4S@xdzc#tHCoqSI1q@|NuJR!?eA?t zyGV(2jg*(*<88rEK#<{YyLQ5qTXI> z0>eAFovS9Fn*49qt4SyRy6Ocf3V}bj?>cz9tl48WCq{-AVd%?n#&EWytzdi!n+2=# z?96A6T$izb)+I3F)cpJCdjh^ra~bxT77|07iObuRIvue-+0jNJV^HD`6Bk{Zo%4#yE^-IKy;NTijzenks(?U!ZQV>xeTO^Z%1lLBT;W)&n}W~Mi< zTG-B7SlCM8Gh~T#zo%Wo^U3gCf(kK6(k$xO})?^`5 zPVq)Ai_Q4hzD7=dMUpVwzbV{T#HGoy#$aPwK+k`NzG>4R14D}HjFva>?{u=$;zz{9 zm|scMIQee;2jekJ#De#$1KfG4%;X#17)@&P+RZvD;%$VFzX&a-zc4ydpt6S%L7D z$rOt|L}^r?;pOC^XQ=|cHUd}Qa9c5*WIUfbeM&*gMrDH4r{n>lIFG#=bjF?ogF{-upV5hR#m9<0 z8oVMp(hv5SViK>`G7p{`_zfBWMKOW;RLH~}Q;S@c z(EU?TfOd;~KKd+ly~A`L2cT&)+*~Y4LS8AQsfRq4}fZ`$y859L`p^# zc6eG-LpScSlq|- zqol$iHq5rwJK|ot+KmUxCEv_*s$Lu_i{xdf=9J8_G?SM>aLhU(2M)4Oa_DH7$;I?B zsglVFjVeZKZkDQCN+*k_Z!N((kqomI^}{NaH6p>o7dMYdQ=?KsDTA8|d@D!pl=}Qk zi8kjF#jaeO*R{I}g@G<15>2cn1jpc>J{I{63=Q6{pr0#F*V>E-cn4KnDYL^}%fJG& z@ZqxkQTSxVF_u|D)0TV2`ceg1yt$n>R~0nNi9iuGH00Y%Kxp)t z_e~wMI-~7`%?dJty-1m$(_! zoSaoi1Xc_s@--!#MrIk2sV*we!n4LbWDGyd1cyL#n3=o{56?wWASzniB^qiJ(PCyH z6U#j@EJKc19kntJDD(*VAQiMmw75Rq6Q;*#cliYGfs*SkD?!GPxqyK#p@nVJ1M**E zPS6JVHHRr@`ic3%kd*dynzBU2Lk77D*o07niSTo-M84cup)9UI1&l;y%+8+*#w!yc z-5uCzYRtjMXqTIAQ`0phe{2W?Fl25|Df(-({DtcXD$iQaqMt?b>Dz8P{d^0WcS6K` z%v}Sa8Wm5iIDr;HnibK4#nDTIe0jqeu76mESC)Zh6LoT*^ zPC3PAig7lb%lDQ(S8o+zziYn#rP*1TqRBA2KAVhI+(I5zT~iW@LdEqTN)*LXFz6SR zGjI@>n1=@r4DRdO)z5DW3@}Ttxo?|ssq*P1tRLe)#V);_={I#uPPz%3Zuicx?M4CYin14 zibKdXRA~QF+2$H}4${JwgCQ#v{)MCpC|I<_27h}ig2YX%PVC18%*?C|sSwGs=*(hS z;(n62MC+>CEE9#`xVpjT&sWsUD0<5iM!$nPX&Hk$81pJqHk!VLVGub7`%d4ocYiRs zjP!nm2YDM1{;*6rXh|#y!RUcN-kD`4R@({-1Hzsq!WJHnLq63ET^(yRTlW-Zo}^Ri zth>7HdZs+#Y?ns$t(Fh3#h4VMFzVu4uWT_Mqckl2iIiZvPNSl73|FE^Qjpiq(r)ui#JMg@|qJF*(gS796b3-vl*u+v%eC;arFjxK@TgZB-2s8`yDiN$yd= zMG#xHWsU~QiCgu%Gov`T@4z(&5FT1BM-+m_!I4C1>#5xdvoq&T$Zirru?1@xL_{C2 z5R&2+4OfK|6btpGWSwrjCXO8jJ3X56)ivO}$7 zSWlL*=`aROj`U~d7Tj)3F^@xUjNME(gk@Vfe+&lk^{1jc<#l2NNQW@*<)RY;V1b4? z9)2R8-GImp64OPbuq`*zQ8oLQlcqSCNQKi3j%GL zwcH9amXC#TCjBh`8C4SEbgugtG&SXpqzO^UH28L5<}2nHM5K~>kS~|w@J1L`#+n?*{Pjgqn&n`PAks8f z&>0(IX}ni*p`TfKLt3|sFz}I#AL^5x&~>cPAFje!G3T2?ceNv#r44X+n2d8%xju5N zjAfbndiO}hQo)ux%%8Glsf#nq%7>@S8X=O^J7!PYKU$jMa>BZQVQ1$A1?I-+#HeP= zGde>vZLEY;nfZs(%Oa5&bz1w)hoTg1=em1{R&J;%ax(@Ze28d@!nlIR$UeMT3?DKS zl&jF0wRzCv3Q+`}RTuyckMzj~X9)TrCYH2Zu9(g30~S}D?%{2 zEGxaNYEu3K@ep$bsFUj9<{10*&hHd^5%mxK4w{A=|DD{I7g@C?4O9*3)0E_cd`=P{a%I^{zfd{dlka@|{~ zl-8}oAu9Fu;y_?f*R+J!rXjUBm!~)(gd+XcY?aFSyGDk>x^)%4-_hIaSv1OL$pMYN zLAFI}SEC`SQ6udp#j%dV3s}*UKBG|38%r4Lr(mIR&C^TiWIqWJutI>faQ?)l zmy+L9eH3pu%=i~B?MXNEq^k-AbOuYbbfYKstHov6v7;rsel3RIp-gX~(9DDjuRAGa zCtlX&m-nPsTu~75c#(cd8x9C)5VfCP&zZ0ESx~*pxA6#vp5!^xa9KsSabv}{LP1wG zJ*)Z6_}fdoq)^zdn&w;lltST&2M#X0dXkj;`gR;xc>NNxfZdOUZBgbuo+NRxD)no| zr1QA^MwUsjYc2fP5`K71)anxA20FvP8E^Vc+Honz298zRLI7+XC%qh(8wsF6Xc3p5 z!f|q&-lK05M){Q*17TGMb4V7iHD;HEpkRz_Vhy``8Cus$OhzEF6nf2AHx5`VWh@Vd zv$sViq(VsymoQn4mDJXfBfcHOK;bu*jbud@4+yS&zl%8(F@?L4p&fJ!7LFHr%f`t3 zO?-_gj-jafZwUcqjFV%8KQTu$?=utnnB88@{8GIGQGVpt03q9a?0Z}25m+!c+?ntg zY>)JMZvK^R^PuIgY8R2MOksvhQ54Th$yff2iUgG>`IN=eB+x^BG&4dcY~=euECLChBX3OH=s^of^Pq*+Cs8$c z7_-Bc-te5r8={}3rg#rRoo#n4v7c!cZAV~EPv(^_rdX$X*7$6FPHw5GLIYH$Dut@( zW~Qv$EaJfCWg>?SC_*hxY%AGeIg?aekviGl*$jjCfCcRqPnZl6yJ07ePpd#Id#i>f zV`)@eq7mZR5|SO3VhR_P6x=lxfue5nr2`*Sviw6uu+kw>u)*^owKMkN*%p_%DbKut z1t)Dv1L{W$AJp=W*+2(5@5W|fx&oh-S$UT-EUNWj$o!4D?mSp$i!0k!+;^b`A&a3j?-VtzAh&y8U~tXXzE&s87#On4q(uSL@DiuOg~0(>#h4p3Q7luS#S%dtGI&LJV4-Kj#{G z+gJvV+A`Tvv5Y&-U06X0h2UR93E%1h|D>_nv9?gkUXq!sTF_ipJLSPl531jE?jo|G z4-u#kEiR@v=U@o}TXm!Sw|!1a%v}WWAvP0rpf2HE_DxH`dAGaCA`c_D6QtB_6jLd0 z^8OkJ>RDJ*Hk`&WUIk$~8GY7l`)3eJO~w$OvzbZ3NO(1aV3%{bM>Z5pu<$Z$?Oh+D z>DOF$;9#2jJA{amzg+VjGMU(;jEaH(NI2EoSs%eQUgB9DRex$NOnS z;rVB2=5i~g#Ti?X6f?-*r9gW;?L{lE)b>Wta{%KgI;faZxE3=ZGq<;*!yG5d=ox2P zMI|jf$$k{$4Qrt-G@#hX5dSw_)y2&OO2R}RO^K6lOd^@}ke|ZNMO|_xMG!cwKVVwK z-X%a__e}ZpGjM&sEBz89-SDnf`{6YuI9DlWn3z^HNK@m)N9&KZ22Q|S>P6ipA$#3;>f8hDr$Z|1OudO~I&z0-e%QG1p_;+d8M&#+DA5Y|pu6TsW) z{7jxn?sdDllKnp8D|eg7UuGe};a&ni`iW(_tE>1T&QzB`u=Q>})bp8Dx@u&5qcoY< z6JBfQgWuepMYU3`!)B`8TB~&J9(H*IadD`BXz#vgHAlhP-;?^%dp+52G_N7L^-3Tc zokX+Z$`9pxZZpP9m}-&>=0pDf&7I3~TUU05&(wN~WSMO(4fy@Ju3-Ci6-)|MrMGKxJ{TzETER=^e$PSgp7_3C7H!AOC=Byl3LLrDw>Fac&$&y%Cm zhvn_Lv4EDSSe(=qr^CHJud+tGb~6Ay$jofp=@t@60xzGVTMg@bUp%blDc;LrKMav{ zb|kB^AF-ehj?G0E_^9^Jfny=DfL`$QF;@nYkm5cFK^Jq<3+@qU1jRF;j2|iP&=o#f zazn{*O^6+ai8B%ajwkO{k3M*$Ga_oNtCr*MuCS3M&1+Eo_yT3ggyRX{yGLKiD-cvY zHjlr*R+t?<+$Sc_2J`FP`;UM5-d3%1!`}&e@XMr&888rXKATOqKKOv7{hO2XqYpqA zQ5$r4@xjsbbn|$2b_yt12!Hn~8>*Xwi+w49PnPS@Ger9h_iJ3LCB$ zR?{qj&K)O?Q$uQedd}(3f>aNDEHfrnKXozi9@vpZX!6_BDsR`JWtwR4MCRUiaS-G3>BXtyj5Zl95pfXpG#3;y=VbuGTr^{ofUV{8HiuT#>*Ta-9lB;VaVox@FssPZDbF!0s2InLRCxU zfYjDhUvs}v8j%u(1)f(sinf>gnG+o9A#dU573l^xYpqB!CZhyr-?eSG=L2Y|+3k)} zh<;MMWHv~DC!@CYBofI86gn*1LIfD))2TE`S;0FL?|IhLbRbaj zWGnNI$8*Ewu9sy10~+EqMhoniTRIES#)JC34>=3oUo$3;U1|0sH~xsm^?}8t6sryJ zsCjk?|Fmj83kam2a6X-t^T~dntyl|NZ4xP%fOZawWP&6?TB;Ebxs1VxEGyH24z& zk)zbbEcCv}Oksa2{+*7Bxcbz{ela2-Hebq;j7$UgmttwkJGKDwOT*CXST6IEVl|U4 zo^gJ=LhKaXVULO5a5{-*qeXc%AS58O)FcTv1h0uBEIV7au)EZ@f;3Cmhr}$ImVLgh zSR-a4y@CwAD-|3&#`aGHC`m~qhfagiVB_3_Co$V~r8Sz5b%U@$58(iPR-^u456qEI zbp6902d4mLmwTO{Ph_BnP#S7=odqhn=ry#TYdb`n{1~OpYu?Be!Bfp=d1%ptJ9~;p zCdtmwAs0(wdm$ov3?EKzkEdrfIB=eBYqRO!@2oAW(rM}yVH>j)#G zJewx%ao-x@C3eyPO_Fa?gr;@NISnZdG>=5jl~U3|zAk@Lm=0xwb1fxt)+B1!vg~PD z-e41(Q=NT@*f&{Jz!W+3v5Fmk`J8n4KVBi-+s$j7xHh*H_a@Y!QltTI{R$Z>X-vaa zue#Q>%6EnF3IQs{hB>eeKr6a@;A$X;$?XRw6sFd$(F1=TQL+PS>cCr3zhndSIupLh z4Xr>QE=?z|P~&q;rJS{HnytCY_NBysO1f*Ka6g(%wzDD0W@DO`Uctv?L%$XdBKBZA zu1;h5bt8qu;_z-~5Tm?6zBpKZ%{;`_p^;bjF495Tx}jcTn6S72BDq?uOcJAvYS;|i z%7j>P(<-CgluU{YYI12^Kk#NYx22{87@t!h2z9?MAEN>vIG9rJbi6k7Gg)|@$8nK!AM9filkgw5tn7|o1vIMv^ZyR^tNBZMmY}k?~vhsI{jyCw# zsW3-S&l2G;zki}P9~NhI{Z;c-GsD#S?Q#VZ{(kp&yX0na_0%B^+-#NyAb<&Kal`X<#9)o0u7; z<={`QIjukC3BPSZ_Tf2BFF}@NdYo)ewAPd!ePz8dm2E1N6}_?lF%!mW8Gjg5OY_~i zv%B-??hpUP(93jMG;iFSFmpRM2%?-QRUfQ@(AS3D(NZSzm)LH-M{$Fb;;g^!ayE3m zVY#oP>u@l0(MlxAfId$&ucIz(tN=<&mLoI@+n{t6Yyo#3v2A5W{}-wsqU?sYSR6hs z4@BA}N5WiOwqiq`BP9N1;O8uMR#(+!P`AKe)%SMpZ0|h$EbgH9EO|ZhnixFL54sJU zE%ztBD%Nm8aX5TO#K1i&i6#47ts{$GAQYa>60MF?vba#G=`=!M8iG@dQ8y?rD1TeM zchc(y64(0pEM>)lAapuXcTK%wO{KF!@=Z5sRxcp;#q?fxM4W!>uwlAij30 zfsDH@9&o7~W7no8DH|{pR0Kt&!DLAZYAQ?c`p0zicuK}#*5s|9^IeZYV){q_3u`Tc za=5}H-toK?Wp?c#IS_G0%lhW_dmp{eKOYN0q4?RGeDn`GyGe(!%?&@2pWY0u;Now8 z`X=e^*6yH03GSL{IHpe&ZX<+-n?KvE9(bloW$VzAb?Fy=lhcJ&cCAUYC5v_<%}dneH7$|qj7pO4Kn_sZO=BjM-}`)L`(b9h zY(el|99qa^vLt}51zJzlT^-T%bCS#0)kOb_YqUfqyf;lGJz!G&z|=hs^AtB=WV^Aq z!261q+Wy-=Z+kzp^;mqUuqr#-P-we5Ts$_TYU~nbY`dk<{xYF;Hg*7y4*r^5yPSw! zCE4Qrbj>)ilJ=W)*YY=CUu{J5>%$iQHW3dw>aBQ^5%p)d zafH^#vxe=^GIfa1Lk3vksfc5WMkB_@({s6)w|Qel`%ty*F;eXympMQTsoLrONIkki>lL_u3sDDu3{@V@QSLT(~EFiQpth4MmIh2_;x|B^P4%3Ux8#qC+ zYF}DrjJQ(3vRHUFYkmNOuvsX4!cMPcyYYx1d`qLp`ZF9a+-lHEr}N{>{2)WO%rDX|8|W?aPh2cv~hH>P$Iy z$klt>067WoFDY1qDWBSiU1QR0oY=EV!wCkLpH0MxVVcE*8wQ0$>U@k^#}>LE>i#@B zV-U6+?2t*x=2ul7HfH3B+{#e|8KXbvp>aTD%0(Y!8LTf$W6AauG!1@KEP>9!-QWG@ zVSW3<4Y4HS$7yjBl0}~RWV2urCE0e#tnBd4-Cuq6>-U$sXoOxV78B((Do{~*Cm2rI z*_U@8e)T0L$Jp&Wpr$vMtEC;RklXw;<(vu{dstYKpRlyBu$!B$OX(&TzFIfDyI*2R zSUs-0*ZM;?@X`wCQ*lz=I{FU62Mt z<+KB8M*F1j=|aa5y!6pG<0B@j8C`KitQY&|pH^HFR|!GmEnp*FKP8>g`e%s2@nv}7(?|3Yx@A~onLHlI z{G-n`KomqHbDa@}{SL$I3OFKI(N)}6YOvb;D7=bBaN~7t+?dfx#7U3vR?twy{h5@P zkA=O}7>^ZVi*}KbS46?s80RM%CW_AS5mah#?&fqzzV;njN=w5{wL~Z+9~y2}|7=-AJcn%|KHu!eFB*z~2`rN= z>c0KhlKWLx1YAmFuj+PXA5v6muUD~uA-#)bNFs@yEq-aPaF*+>Sd?bJvY9PQPL$*e z>bb5~HlHNOYLi^)HP0+nuZe*P#D_oF-lBp8sRl?UgQ;Q^EAZ#1pg?cW$5utKd?FJp zu^qUMjK1wY7h6QxL3~f&67M;^EP4y+Z_UEB#;7{87+}CBs>I_9&U&s?2Rbg4o1*Jb zL{sw-dfUtk+tIvimk3kLC*+xmGk1EtY zh3=;=;yM-NNDod=`<6pNsbrXq|l&usKhKXo391BW9>ga`mJ&NyMgD1>7r>2)7=OM2pj2T^poD^eODPoFi%8~nRk~|d11O$K-;q!_-NAWo$T$gbVp~%y zAQC6>;i@hR6>d=-RVj_Ea?MDZbsWJQMXTsp(?-Afpa1yNnm*zgQ3st-dSt&v==;Mb z!~OYe*q@WYx*r9am#&$PiGrQ;#egbtF(i;?O|jZLs=Ic^`{5^sJoPFwO4r?S&qhY| zwKQXFor4Q86YO9o!*LZAM`4J;qb*y8AfUn2R1V#8CejrLWOz$vS`w{)wNia;MT`7VoP<0CUb69V#c3J(()=Squx%!o<)*>fh#e%XE zVJHK3yfDw#J}E=)Xlc9iV`(!ueZCoM_JX_IfX&;2nVrt3wH2cx;PkZF%G!(LV*lZ3 zg5=|$R|! z&0F(}{Nl=Q9Q6F<^Tnqw=DKb4lgi=DC;81Q{7d>YuzO{o2plnUvXP#22GuyXKnOym5wQ3X#B!+!L*SLct38m9*RxIi$ICH_$o6u&n?K|ZR& z=pqV(k`yap(u;Gd1p5y`<*MQ2V&q9&@g%po9BY<985}~?cs_Iv1i*f>Uw7Rf-D3yb zj71LKbo7ZvhMgc$D1OGu0;__Wg59-MsHj5PoKMI{fA(&*k3=w@9lpk9-pJMoV1HSi zVS|8ZW?T1j7Y8A(2g+6Cry3+qI@at&MQF=D8B~US#4Rr1DgUS*B0Pmn95=-fIpZr} zps+5cYX-y0#gwL9180WHT1LNaXa97{Zg=0?=AX`XkGF$*L2tB_PgN>t$h}XNRolQi z4zSF(Ubc}mwG(<6(@j1x>AT_G@>`b$(-FLPbPmz+|bots0hX|L9HKUA^lVkMr8W_C2QgiY=n&hlp+afd zPsiu{XW(o7pWw*p-I3~Ap^l$Urh^k}Yqzae9WDrpy=sM2)GE{764R6L9{Zl;s0y8| z&V?AsiQ{AcIQ^jtWuFLGkPsL8Fdo`tmeRc2if^xb^{UpU>Kuf{%GB!!z2)r|8s{3n zS^Bb@EAWd5K?l|0`4BSqlt@v)SX^F&sj$Q%EMbfRLCaxh-%VxSLwscQU-is*7&7Ma z6Jcv4DR3&nYf;=>NV93+n=78FZxf<0KEVPus7dV({TsxKEg_R-ceCUDOjI`#!V!>t zcHAHDT@t43N>M0g6<1|{Hkypn?Mzqa-}3sizW*L4)sIy_wYj}fx0|6H0MOf)_0*1K zXap$%`*<#_12T4Gx=6?eU6?_WKaY6!`5qoBz;`4}t&WDX{qG>6i#)d|enlqC^NAd0 zo-CGBn<>leS#^xCu6v+s(3x7Kz0;)`U-*PfTcIJT)SNmdw`^tRPiWYgNSMU~8?kE1 z@Dk6>Ze?7dsH%pUhO;80RBmv4fqsOd_ot0Yr6^Pn6pF5a5}bSpEPE2GTP?UDp7x~pdBry}VnkMkq~{keXbxM_XsFG=l?3K6IN5KlLjjCiyAR$$=^PjQqZASVq<(!`BQY1$^}wu(2I@)g>r5(0^SDYJN+ zr<`H-ne1=X;)(lI6ke=;kbwvWEc#*cIp*@>r9^z8c3AiwmwVd3*yjjs)wuT_ zJG#f#tudab;gXFNe~QFT7t>f06g30cT0dCZjm436{2IM28rwCJRu6G9Q@f+n35fe< zRC?tB)Lwebd)p$==$WQRfloks2P9|re9Ea*-~vY$b-OWAC!&>%>Ge0a4u0W{4(XPF zhXKM_xN3|7yAKh9cs@D8kTLC#h|51WYw4DOxNGVr?#j;{ORR?H6ws6S#`{$>p*>(m z%~_*Iin@0@_jh|0AZ-0PGzQj@iQ;q^k{5+>sqFF?eyA^~wZuB>FN9>d*j%v!1loK6 zmtmlHwVGj8J^zs+xtu+H#%y%J|IP_q)NGX3uqM9zp1UDy!G(=$GCq|gIQZ-^KiFm= zNhZ`JtTD^j2y}p{hu9%F*FT!_E6#7=V^kg3^3-c))@j zA=D1f`>`&!rlz<-pdecVa3p^{Q8)p*ha3O7Z~t&(=_&mP2H4so9mzgpH83ygFMhLq zr~esMEafm&F2nCLz>(f>f~`Ru?4X=$q4N zG@j16b$jzeyf{*NA(t48v<7e`_msHR7!rxJP)7vGf{Ol0Z-qXO{H!CsH#|H(IU5rt z_xQ=LKEJoC8w1%k`$b=iwRg!^63tAF;VF}GprZ0r1bI(h978dnUwRXplFX-X_JrNS z;;H+eYm<4Go6w11!q6i#_?ov|r@g%+n{h%-mLc5E7t*p|NT|sd0Hi@cy3vYt2gpSU zJKl{D^ig$jJUUF0qmp<}_+~QIvQGc?Vs0y$=|`+(tm5cM7RxirVKEZv)}eA-<%~Up z%H3&cD;(1>Z;@vlfaf#JoKw`cF*{-!mbe`cyD6Tb9EL|xX^UrrC&ReO@rkQg*oIM; zLshtLGYviK)MA+Cq|5@-;>&<3nJaR!`|(iG7eim>j#(t%DD_vvz)d=yI;wHLvh&?SO(?s0m)A6o@# zK#Dt{5aQ&P`)sW;tXw6g<4|N_K%lBCq`#C0U|uOLUgQ5&1znxap1CL`D5R6FLKafM zjPs-X7}gO5lcrtW{@$XRXw<;y;4#C+%be(BgM7k@hn}Pt4i2X?C`+*57Av0X68M<9 zod>+longId4w4W6ik@EmWa}Wjke#Pk5>B;5xSTQ0B>kRgC2#m#Tf*nO>4ZvUsD6Tu z>`*TBlXf9rg{3m^PDji* zQ#@W0sD%kPgeUa5H+?JsA8+#*ofdYvWfOj&hs5I~c7;LAdT@RR6<`vO1rJbsR(FsntQHT-Is!I;XG)2Z zkP}m>M-)U$Lp!6|p3bZ91|vikv;X5A4FLh11Hc?e^>I>GysugZ7RLUNe=bnE3Dtr z;fIzoLK-`1CPD(m+&w1}iEu9|+*@_~Q(!Y%ElflLPcFo-C-p}eK0, 2007, 2008, 2009, 2010, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 4.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2011-03-16 21:22+0100\n" +"Last-Translator: Ivan Masár \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "chybný index poľa" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: nie je možné previesÅ¥ indexované pole na asociatívne" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: neplatný kÄ¾ÃºÄ asociatívneho poľa" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: nie je možné priradiÅ¥ nenumerickému indexu" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: pri priraÄovaní asociatívnemu poľu je potrebné použiÅ¥ index" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: nie je možné vytvoriÅ¥: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: nie je možné nájsÅ¥ klávesovú mapu pre príkaz" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: prvý znak (okrem bielych znakov) nie je „\"“" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "chýba zatvárajúca „%c“ v %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: chýba oddeľovaÄ dvojbodka" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "„%s“: nie je možné zruÅ¡iÅ¥ väzbu (unbind)" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "„%s“: neplatný názov aliasu" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "úpravy riadka nie sú zapnuté" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%s“: neplatný názov klávesovej mapy" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: nie je možné preÄítaÅ¥: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "„%s“: neznámy názov funkcie" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s nie je zviazaný (bind) s žiadnymi klávesmi.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s je možné vyvolaÅ¥ ako " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nie je možné zruÅ¡iÅ¥ väzbu (unbind)" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "poÄet cyklov" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "dáva zmysel iba v cykle „for“, „while“ alebo „until“" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"VrátiÅ¥ kontext aktuálneho volania podprocedúry.\n" +" \n" +" Bez VÃR, vráti „$line $filename“. S VÃR,\n" +" vráti „$line $subroutine $filename“; túto informáciu\n" +" je možné využiÅ¥ pre trasovanie zásobníka.\n" +" \n" +" Hodnota VÃR urÄuje o koľko rámcov volania sa vrátiÅ¥\n" +" pred aktuálny; najvyšší rámec má Äíslo 0.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak shell nevykonáva funkciu shellu a EXPR nie je neplatný." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME nebola nastavená" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "príliÅ¡ veľa argumentov" + +#: builtins/cd.def:342 +#, fuzzy +msgid "null directory" +msgstr "na nový vrchol zásobníka." + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD nebola nastavená" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "riadok %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "upozornenie: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: použitie " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: voľba vyžaduje argument" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: vyžaduje sa numerický argument" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: nenájdené" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: neplatná voľba" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: neplatný názov voľby" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "„%s“: nie je platný identifikátor" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "neplatné osmiÄkové Äíslo" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "neplatné Å¡estnástkové Äíslo" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "neplatné Äíslo" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: neplatné urÄenie signálu" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "„%s“: nie je pid ani platný Å¡pecifikátor úlohy" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: premenná len na Äítanie" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s je mimo rozsahu" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s mimo rozsahu" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: taká úloha neexistuje" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: riadenie úloh nedostupné" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "riadenie úloh nedostupné" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: obmedzené" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "obmedzené" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: nie je vstavaný príkaz (builtin) shellu" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "chyba zapisovania: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "chyba pri nastavovaní atribútov terminálu: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "chyba pri zisÅ¥ovaní atribútov terminálu: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: chyba pri zisÅ¥ovaní aktuálneho adresára: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: nejednoznaÄné urÄenie úlohy" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: nie je možné zruÅ¡iÅ¥: len na Äítanie %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: nie je možné zruÅ¡iÅ¥" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: neplatný názov akcie" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: chýba Å¡pecifikácia dokonÄovania" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "upozornenie: voľba -F nemusí fungovaÅ¥ tak ako oÄakávate" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "upozornenie: voľba -C nemusí fungovaÅ¥ tak ako oÄakávate" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "momentálne sa nevykonáva funkcia doplňovania" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "je možné použiÅ¥ iba vo funkcii" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "„%s“: neplatný názov aliasu" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "nie je možné použiÅ¥ „-f“ pre tvorbu funkcií" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkcia iba na Äítanie" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: nie je možné takto robiÅ¥ deÅ¡trukciu premenných polí" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: nie je možné previesÅ¥ asociatívne pole na indexované" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dynamické naÄítavanie nie je dostupné" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "nie je možné otvoriÅ¥ zdieľaný objekt %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "nemožem nájsÅ¥ %s v zdieľanom objekte %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: nie je dynamicky naÄítané" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: nie je dynamicky naÄítané" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: nie je možné zmazaÅ¥: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: je adresár" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: nie je obyÄajný súbor" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: súbor je príliÅ¡ veľký" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: nie je možné vykonaÅ¥ binárny súbor" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: nie je možné spustiÅ¥: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "odhlásenie\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "toto nie je login shell: použite „exit“" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Existujú zastavené úlohy.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Existujú bežiace úlohy.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "prákaz nenájdený" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "Å¡pecifikácia histórie" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: nie je možné otvoriÅ¥ odkladací súbor: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "aktuálny" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "úloha %d zaÄala bez riadenia úloh" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: neplatná voľba -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: voľba vyžaduje argument -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "haÅ¡ovanie vypnuté" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: haÅ¡ovacia tabuľka je prázdna\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "použití\tpríkaz\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Príkazy shellu zodpovedajúce kľúÄovému slovu „" +msgstr[1] "Príkazy shellu zodpovedajúce kľúÄovým slovám „" +msgstr[2] "Príkazy shellu zodpovedajúce kľúÄovým slovám „" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"pre „%s“ neboli nájdené zodpovedajúce témy pomocníka.\n" +"Skúste „help help“ alebo „man -k %s“ alebo „info %s“." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: nie je možné otvoriÅ¥: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Tieto príkazy shellu sú definované interne. Napísaním „help“ zobrazíte tento " +"zoznam.\n" +"Napísaním „help názov“ zistíte viac o funkcii „názov“.\n" +"Napísaním „info bash“ zistíte viac o shelli vo vÅ¡eobecnosti.\n" +"Napísaním „man -k“ alebo „info“ zistíte viac príkazoch, ktoré nie sú v " +"zozname.\n" +"\n" +"HviezdiÄka (*) vedľa názvu znamená, že príkaz je vypnutý.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "nie je možné použiÅ¥ viac ako jednu z volieb -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "poloha histórie" + +#: builtins/history.def:340 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: neplatný názov voľby" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: rozšírenie histórie zlyhalo" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib zlyhalo" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "iné voľby prípustné s „-x“" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumenty musia byÅ¥ ID procesov alebo úloh" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Neznáma chyba" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "oÄakával sa výraz" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: nie je indexované pole" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: neplatná Å¡pecifikácia popisovaÄa súboru" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: neplatný popisovaÄ súboru: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: neplatný poÄet riadkov" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: neplatný zaÄiatok poľa" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: neplatné kvantum spätného volania" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "názov prázdnej premennej poľa" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "vyžaduje sa podpora premennej poľa" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "„%s“: chýba formátovací znak" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "„%c“: neplatná Å¡pecifikácia formátu Äasu" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%c“: neplatný formátovací znak" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "upozornenie: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "chýba hexadecimálna Äíslica v \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "chýba Äíslica Unicode pre \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "žiadny iný adresár" + +#: builtins/pushd.def:360 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: neplatný argument limitu" + +#: builtins/pushd.def:480 +msgid "" +msgstr "<žiadny aktuálny adresár>" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "zásobník adresárov je prázdny" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "index zásobníka adresárov" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Zobrazí zoznam momentálne zapamätaných adresárov. Adresáre\n" +" sa do zoznamu dostávajú príkazom „pushd“; zo zoznamu ich môžete\n" +" vyberaÅ¥ postupne príkazom „popd“.\n" +" \n" +" Voľby:\n" +" -c\tvyprázdni zásobník adresárov zmazaním vÅ¡etkých položiek\n" +" -l\tnevypisovaÅ¥ skrátené verzie adresárov relatívne vzhľadom\n" +" \tna váš domovský adresár\n" +" -p\tvypíše zásobník adresárov vo formáte jedna položka na riadok\n" +" -v\tvypíše zásobník adresárov vo formáte jedna položka na riadok\n" +" \ta pred ňu vypíše jej pozíciu na zásobníku\n" +" \n" +" Argumenty:\n" +" +N\tzobrazuje N-tú položku poÄítajúc zľava zoznamu, ktorý zobrazuje\n" +" \tdirs vyvolaný bez volieb, poÄínajúc nulou.\n" +" \n" +" -N\tzobrazuje N-tú položku poÄítajúc sprava zoznamu, ktorý zobrazuje\n" +" \tdirs vyvolaný bez volieb, poÄínajúc nulou." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Pridá adresár na vrchol zásobníka adresárov alebo ho otoÄí tak, že\n" +" nový vrchol zásobníka sa stane aktuálnym pracovným adresárom.\n" +" Bez argumentov vymení vrchné dva adresáre.\n" +" \n" +" Voľby:\n" +" -n\tPotlaÄí normálnu zmenu adresára pri odstraňovaní položiek\n" +" \tzo zásobníka, takže sa zmení iba zásobník.\n" +" \n" +" Argumenty:\n" +" +N\tOtoÄí zásobník tak, že N-tý adresár (poÄítajúc zľava zoznamu,\n" +" \tktorý zobrazuje „dirs“, poÄínajúc nulou) je na vrchu.\n" +" \n" +" -N\tOtoÄí zásobník tak, že N-tý adresár (poÄítajúc sprava zoznamu,\n" +" \tktorý zobrazuje „dirs“, poÄínajúc nulou) je na vrchu.\n" +" \n" +" adr\tPridá ADR na vrchol zásobníka adresárov, Äím sa tento stane\n" +" \tnovým aktuálnym pracovným adresárom.\n" +" \n" +" Zásobník adresárov môžete zobraziÅ¥ vstavaným príkazom „dirs“." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Odstráni položky zo zásobníka adresárov. Bez argumentov odstráni\n" +" vrchnú položku zo zásobníka a zmení adresár na adresár, ktorý\n" +" sa následne nachádza na vrchu zásobníka.\n" +" \n" +" Voľby:\n" +" -n\tpotlaÄí normálnu zmenu adresára pri odstraňovaní položiek\n" +" \tzo zásobníka, takže sa zmení iba zásobník.\n" +" \n" +" Argumenty:\n" +" +N\todstráni N-tú položku položku poÄítajúc zľava zoznamu,\n" +" \tktorý zobrazuje „dirs“, poÄínajúc nulou. Napríklad: „popd +0“\n" +" \todstráni prvý adresár, „popd +1“ druhý.\n" +" \n" +" -N\todstráni N-tú položku položku poÄítajúc sprava zoznamu,\n" +" \tktorý zobrazuje „dirs“, poÄínajúc nulou. Napríklad: „popd -0“\n" +" \todstráni posledný adresár, „popd -1“ predposledný.\n" +" \n" +" Zásobník adresárov môžete zobraziÅ¥ vstavaným príkazom „dirs“." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: neplatná Å¡pecifikácia expirácie (timeout)" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "chyba pri Äítaní: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"návrat („return“) je možné vykonaÅ¥ iba z funkcie alebo skriptu vyvolaného " +"pomocou „source“" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "nie je možné zároveň zruÅ¡iÅ¥ funkciu a premennú" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: nie je premenná poľa" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: nie je funkcia" + +#: builtins/setattr.def:194 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: nie je možné zruÅ¡iÅ¥" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "posun o" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "nie je možné zároveň nastaviÅ¥ aj zruÅ¡iÅ¥ voľby shellu" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: neplatný názov voľby shellu" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "vyžaduje sa argument názov súboru" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: súbor sa nepodarilo nájsÅ¥" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "nie je možné suspendovaÅ¥" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "nie je možné suspendovaÅ¥ login shell" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s má alias „%s“\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s je kľúÄové slovo shellu\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s je funkcia\n" + +#: builtins/type.def:299 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s je vstavaný príkaz (builtin) shellu\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s je vstavaný príkaz (builtin) shellu\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s je %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s je haÅ¡ovaný (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: neplatný argument limitu" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "„%c“: chybný príkaz" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: nie je možné zistiÅ¥ limit: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "obmedzenie" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: nie je možné zmeniÅ¥ limit: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "osmiÄkové Äíslo" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%c“: neplatný operátor symbolického režimu" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%c“: neplatný znak symbolického režimu" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " riadok " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "posledný príkaz: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Ruší sa..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:462 +msgid "unknown command error" +msgstr "chyba neznámeho príkazu" + +#: error.c:463 +msgid "bad command type" +msgstr "chybný typ príkazu" + +#: error.c:464 +msgid "bad connector" +msgstr "chybný konektor" + +#: error.c:465 +msgid "bad jump" +msgstr "chybný skok" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: neviazaná premenná" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aÄas vyprÅ¡al pri Äakaní na vstup: automatické odhlásenie\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "nie je možné presmerovaÅ¥ Å¡tandardný vstup z /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: „%c“: neplatný formátovácí znak" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "chyba rúry" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: obmedzené: nie jemožné uviesÅ¥ „/“ v názvoch príkazov" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: príkaz nenájdený" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: chybný interpreter" + +#: execute_cmd.c:5891 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: nie je možné vykonaÅ¥ binárny súbor" + +#: execute_cmd.c:5977 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s je vstavaný príkaz (builtin) shellu\n" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "nie je možné duplikovaÅ¥ fd %d na fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "bola prekroÄená úroveň rekurzie výrazu" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "podteÄenie zásobníka rekurzie" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "chyba syntaxe vo výraze" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "pokus o priradenie mimo premennej" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "chyba syntaxe vo výraze" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "delenie nulou" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "chyba: chybný expassign token" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "pre podmienený výraz sa oÄakáva „:“" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "exponent menší ako 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "po pre-inkrementácii alebo pre-dekrementácii sa oÄakáva identifikátor" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "chýba „)“" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "chyba syntaxe: oÄakáva sa operand" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "chyba syntaxe: neplatný aritmetický operátor" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (chybný token je „%sâ€)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "neplatný aritmetický základ" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: neplatný poÄet riadkov" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "hodnota je ako základ príliÅ¡ veľká" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: chyba výrazu\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: nie je možné pristupovaÅ¥ k rodiÄovským adresárom" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "nie je možné alokovaÅ¥ nový popisovaÄ súboru pre vstup bashu z fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: bufer už existuje pre nový fd %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp rúra" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "pid %d získaný pomocou fork sa vyskytuje v bežiacej úlohe %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "mažem zastavenú úlohu %d so skupinou procesu %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) je stále oznaÄený ako živý" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: taký pid neexistuje" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signál %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Hotovo" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Zastavené" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Zastavené(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Beží" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Hotovo(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "UkonÄenie %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Neznámy stav" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(bol uložený výpis pamäte) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid detského procesu (%ld to %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld nie je dieÅ¥a tohto shellu" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Neexistuje záznam o procese %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: úloha %d je zastavená" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: taká úloha neexistuje" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: úloha skonÄila" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: úloha %d už je v pozadí" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: zapína sa WNOHANG aby sme sa vyhli neurÄitému blokovaniu" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: riadok %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (bol uložený výpis pamäte)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd teraz: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: funkcia getpgrp zlyhala" + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: riadkový systém" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: riadkový systém" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "nie je možné nastaviÅ¥ skupinu procesu terminálu (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "v tomto shelli nie je riadenie úloh" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: zlyhal predpoklad: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: zbabraný predpoklad\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "neznámy" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: blok na zozname voľných zaprataný" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: zavolaný s argumentom už uvoľneného bloku" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: zavolaný s argumentom nealokovaného bloku" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: bolo detekované podteÄenie; mh_nbytes mimo rozsahu" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: bolo detekované podteÄenie; mh_nbytes mimo rozsahu" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: veľkosti zaÄiatoÄného a koneÄného bloku (chunk) sa líšia" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: zavolaný s argumentom nealokovaného bloku" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: bolo detekované podteÄenie; mh_nbytes mimo rozsahu" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: bolo detekované podteÄenie; mh_nbytes mimo rozsahu" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: veľkosti zaÄiatoÄného a koneÄného bloku (chunk) sa líšia" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: alok. tabuľla je plná s FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p už je v tabuľke ako alokovaný?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p už je v tabuľke ako voľný?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "neplatný základ" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: hostiteľ neznámy" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: neplatná služba" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: chybná Å¡pecifikácia sieÅ¥ovej cesty" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "sieÅ¥ové operácie nie sú podporované" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: nemožno zmeniÅ¥ locale (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: nemožno zmeniÅ¥ locale (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: nie je možné zmeniÅ¥ locale (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: nie je možné zmeniÅ¥ locale (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Máte poÅ¡tu v súbore $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Máte novú poÅ¡tu v súbore $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "PoÅ¡ta v súbore %s bola preÄítaná\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "chyba syntaxe: vyžaduje sa aritmetický výraz" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "chyba syntaxe: neoÄakávaná „;“" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "chyba syntaxe: „((%s))“" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: chybný typ inÅ¡trukcie %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"here-document na riadku %d oddelený znakom konca riadku (oÄakávalo sa „%sâ€)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: inÅ¡trukcia presmerovania „%d“ mimo rozsahu" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "neoÄakávaný koniec súboru poÄas hľadania zodpovedajúceho „%c“" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "neoÄakávaný koniec súboru poÄas hľadania „]]“" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "chyba syntaxe v podmieneÄnom príkaze: neoÄakávaný token „%s“" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "chyba syntaxe v podmieneÄnom príkaze" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "neoÄakávaný token „%s“, oÄakávalo sa `)'" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "oÄakávalo sa `)'" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "neoÄakávaný argument „%s“ podmieneÄného unárneho operátora" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "neoÄakávaný argument podmieneÄného unárneho operátora" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "neoÄakávaný token „%s“, oÄakáva sa podmieneÄný binárny operátor" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "oÄakáva sa podmieneÄný binárny operátor" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "neoÄakávaný argument „%s“ v podmieneÄnom binárnom operátore" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "neoÄakávaný argument v podmieneÄnom binárnom operátore" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "neoÄakávaný token „%c“ v podmieneÄnom príkaze" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "neoÄakávaný token „%s“ v podmieneÄnom príkaze" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "neoÄakávaný token %d v podmieneÄnom príkaze" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "chyba syntaxe neÄaleko neoÄakávaného tokenu „%s“" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "chyba syntaxe neÄaleko „%s“" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "chyba syntaxe: neoÄakávaný koniec súboru" + +#: parse.y:6365 +msgid "syntax error" +msgstr "chyba syntaxe" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Na opustenie shellu použite „%s“.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "neoÄakávaný koniec súboru poÄas hľadania zodpovedajúceho „)“" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "dokonÄovanie: funkcia „%s“ nebola nájdená" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: chybný konektor `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: neplatný popisovaÄ súboru" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: ukazovateľ súboru je NULL" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: „%c“: neplatný formátovací znak" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "popisovaÄ súboru mimo rozsahu" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: nejednoznaÄné presmerovanie" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: nie je možné prepísaÅ¥ existujúci súbor" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: ombedzené: nie je možné presmerovaÅ¥ výstup" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "nie je možné vytvoriÅ¥ odkladací súbor pre here-document: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: nie je možné priradiÅ¥ popisovaÄ súboru premennej" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port nie je podporovaný bez podpory sietí" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "chyba presmerovania: nie je možné duplikovaÅ¥ fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "nenaÅ¡iel sa /tmp, vytvorte ho prosím!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp musí byÅ¥ platný názov adresára" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: neplatná voľba" + +#: shell.c:1319 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" + +#: shell.c:1330 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: je adresár" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Nemám meno!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, verzia %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Použitie:\t%s [GNU dlhá voľba] [voľba] ...\n" +"\t%s [GNU dlhá voľba] [voľba] súbor-skriptu ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU dlhé voľby:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Voľby shellu:\n" + +#: shell.c:2043 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD alebo -c príkaz alebo -O krátka_voľba\t\t(iba vyvolanie)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s alebo -o voľba\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Napísaním „%s -c \"help set\"“ získate viac informácií o voľbách shellu.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Napísaním „%s -c help“ získate viac informácií o vstavaných príkazoch " +"(builtins) shellu.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Na ohlasovanie chýb použite príkaz „bashbug“.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: neplatná operácia" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Neplatný signál" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Zavesenie" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "PreruÅ¡enie" + +#: siglist.c:58 +msgid "Quit" +msgstr "UkonÄenie" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Neplatná inÅ¡trukcia" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "inÅ¡trukcia ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "inÅ¡trukcia EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Výnimka pri operácii s plávajúcou desatinnou Äiarkou" + +#: siglist.c:86 +msgid "Killed" +msgstr "Zabitý" + +#: siglist.c:90 +msgid "Bus error" +msgstr "chyba zbernice" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Chyba segmentácie" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Chybné systémové volanie" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "PreruÅ¡ená rúra" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Budík" + +#: siglist.c:110 +msgid "Terminated" +msgstr "UkonÄené" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Naliehavý stav V/V" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Zastavené (signál)" + +#: siglist.c:126 +msgid "Continue" +msgstr "PokraÄovaÅ¥" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Zastavenie alebo zabitie detského procesu" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Zastavené (vstup z tty)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Zastavené (výstup na tty)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "V/V pripravený" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "obmedzenie CPU" + +#: siglist.c:154 +msgid "File limit" +msgstr "obmedzenie súborov" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Budík (virtuálny)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Budík (profil)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Okno sa zmenilo" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Zámok záznamu" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Používateľský signál 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Používateľský signál 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "Äaká sa na vstupné údaje HFT" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "nastane výpadok napájania" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "nastane havária systému" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "presunúť proces na iný CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "chyba programovania" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "udelený režim monitoru HFT" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "stiahnutý režim monitoru HFT" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "dokonÄila sa zvuková sekvencia HFT" + +#: siglist.c:214 +msgid "Information request" +msgstr "ŽiadosÅ¥ o informácie" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Neznámy signál #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "chybná substitúcia: chýba „%s“ v %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: nie je možné priradiÅ¥ zoznam položke poľa" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "nie je možné vytvoriÅ¥ rúru pre substitúciu procesov" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "nie je možné vytvoriÅ¥ potomka pre substitúciu procesov" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "nie je možné otvoriÅ¥ pomenovanú rúru %s na Äítanie" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "nie je možné otvoriÅ¥ pomenovanú rúru %s na zápis" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "nie je možné duplikovaÅ¥ pomenovanú rúru %s ako fd %d" + +#: subst.c:6213 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`â€" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "nie je možné vytvoriÅ¥ rúru pre substitúciu príkazov" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "nie je možné vytvoriÅ¥ potomka pre substitúciu príkazov" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: nie je možné duplikovaÅ¥ rúru ako fd 1" + +#: subst.c:6883 subst.c:9952 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: neplatná hodnota popisovaÄa trasovacieho súboru" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: neplatný poÄet riadkov" + +#: subst.c:7013 subst.c:7177 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "„%s“: neplatný názov aliasu" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter je null alebo nenastavený" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter je null alebo nenastavený" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: výraz podreÅ¥azca < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: chybná substitúcia" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: nie je možné vykonaÅ¥ priradenie takýmto spôsobom" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"budúce verzie shellu budú vynucovaÅ¥ vyhodnocovanie ako aritmetickú " +"substitúciu" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`â€" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "bez zhody: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "oÄakával sa argument" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: oÄakával sa celoÄíselný výraz" + +#: test.c:265 +msgid "`)' expected" +msgstr "oÄakávala sa „)“" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "oÄakávala sa „)“, bolo nájdené %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: oÄakával sa binárny operátor" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: oÄakával sa unárny operátor" + +#: test.c:881 +msgid "missing `]'" +msgstr "chýba „]“" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "chyba syntaxe: neoÄakávaná „;“" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "neplatné Äíslo signálu" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: chybná hodnota v trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: obsluha signálu je SIG_DFL, znovu posielam %d (%s) sebe" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: chybný signál %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "chyba pri importe definície funkcie „%s“" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "úroveň shellu (%d) je príliÅ¡ vysoká, nastavujem späť na 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: v aktuálnom rozsahu sa nenachádza kontext funkcie" + +#: variables.c:2693 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: nie je možné priradiÅ¥ popisovaÄ súboru premennej" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: v aktuálnom rozsahu sa nenachádza kontext funkcie" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s má null exportstr" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "neplatný znak %d v exportstr %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "žiadne „=“ v exportstr %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: hlaviÄka shell_variables nie je kontext funkcie" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: chýba kontext global_variables" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: hlaviÄka shell_variables nie je doÄasný rozsah prostredia" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: nemožno otvoriÅ¥ ako SÚBOR" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: neplatná hodnota popisovaÄa trasovacieho súboru" + +#: variables.c:6437 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s je mimo rozsahu" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licencia GPLv3+: GNU GPL verzie 3 alebo novÅ¡ia http://gnu.org/licenses/gpl." +"html\n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, verzia %s (%s)\n" + +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." +msgstr "Toto je slobodný softvér; môžete ho slobodne meniÅ¥ a šíriÅ¥.\n" + +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "" +"Nie sú poskytované ŽIADNE ZÃRUKY v rozsahu aký povoľuje\n" +"aplikovateľné právo.\n" + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: nie je možné alokovaÅ¥ %lu bajtov (%lu bajtov alokovaných)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: nie je možné alokovaÅ¥ %lu bajtov" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: nie je možné alokovaÅ¥ %lu bajtov (%lu bajtov alokovaných)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: nie je možné alokovaÅ¥ %lu bajtov" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [názov[=hodnota] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] názov [názov ...]" + +#: builtins.c:53 +#, fuzzy +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m kláv_mapa] [-f názov_súboru] [-q názov] [-u názov] [-r " +"postup_kláv] [-x postup_kláv:príkaz_shellu] [postup_kláv:funkcia_readline " +"alebo príkaz-readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [vstavaná funcia shellu [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [výraz]" + +#: builtins.c:66 +#, fuzzy +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]]] [adresár]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilrtux] [-p] [názov[=hodnota] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [voľba] názov[=hodnota] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f názov_súboru] [názov ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts názov_reÅ¥azca_volieb [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a názov] [príkaz [argumenty ...]] [presmerovanie ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e enázov] [-lnr] [prvý] [posledný] alebo fc -s [vzor=opak] [príkaz]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [Å¡pec_úlohy]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [Å¡pec_úlohy ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p cesta] [-dt] [názov ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [vzor ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d ofset] [n] alebo history -anrw [názov_súboru] alebo history " +"-ps arg [arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [Å¡pec_úlohy ...] alebo jobs -x príkaz [argumenty]" + +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [Å¡pec_úlohy ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s Å¡pec_signálu | -n Äíslo_signálu | -Å¡pec_signálu] pid | " +"Å¡pec_úlohy ... alebo kill -l [Å¡pec_signálu]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a pole] [-d oddeľovaÄ] [-i text] [-n nznakov] [-N nznakov] [-p " +"výzva] [-t zdržadnie] [-u fd] [názov ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o názov_voľby] [arg ...]" + +#: builtins.c:144 +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [názov ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [názov[=hodnota] ...] alebo export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [názov[=hodnota] ...] alebo readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source názov_súboru [argumenty]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". názov_súboru [argumenty]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [výraz]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] Å¡pec_signálu ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] názov [názov ...]" + +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [obmedzenie]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [režim]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [id]" + +#: builtins.c:181 +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [pid]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAME [in SLOVà ... ] ; do PRÃKAZY; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( výraz1; výraz2; výraz3 )); do PRÃKAZY; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NÃZOV [in SLOVà ... ;] do PRÃKAZY; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] rúra" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case SLOVO in [VZOR [| VZOR]...) PRÃKAZY ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if PRÃKAZY; then PRÃKAZY; [ elif PRÃKAZY; then PRÃKAZY; ]... [ else " +"PRÃKAZY; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while PRÃKAZY; do PRÃKAZY; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until PRÃKAZY; do PRÃKAZY; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NÃZOV] príkaz [presmerovania]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "" +"function názov_funkcie { PRÃKAZY ; } alebo názov_funkcie () { PRÃKAZY ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ PRÃKAZY ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "Å¡pec_úlohy [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( výraz ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ výraz ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "premenné - Názvy a významy niektorých premenných shellu" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | adr]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [názov_voľby ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] formát [argumenty]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o voľba] [-A operácia] [-G glob_vzor] " +"[-W zoznam_slov] [-F funkcia] [-C príkaz] [-X vzor_filtra] [-P predpona] [-S " +"prípona] [názov ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o voľba] [-A operácia] [-G glob_vzor] [-W " +"zoznam_slov] [-F funkcia] [-C príkaz] [-X vzor_filtra] [-P predpona] [-S " +"prípona] [slovo]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o voľba] [-DE] [názov ...]" + +#: builtins.c:242 +#, fuzzy +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-n poÄet] [-O zaÄiatok] [-s poÄet] [-t] [-u fd] [-C spätné_volanie] " +"[-c kvantum] [pole]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n poÄet] [-O zaÄiatok] [-s poÄet] [-t] [-u fd] [-C " +"spätné_volanie] [-c kvantum] [pole]" + +#: builtins.c:256 +#, fuzzy +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"DefinovaÅ¥ alebo zobraziÅ¥ aliasy.\n" +" \n" +" Bez argumentov vypíše vÅ¡etky definované aliasy vo formáte, ktorý je\n" +" možné znova použiÅ¥ v tvare NÃZOV=HODNOTA na Å¡tandardný výstup.\n" +" \n" +" Inak definuje alias pre každý NÃZOV, ktorého HODNOTA je zadaná.\n" +" Medzera na konci HODNOTY spôsobí, že sa v ÄalÅ¡om slove\n" +" skontroluje substitúcia aliasu pri expanzii aliasu.\n" +" \n" +" Voľby:\n" +" -p\tVypíše vÅ¡etky definované aliasy vo formáte, ktorý je možné\n" +" \tznova použiÅ¥\n" +" \n" +" Návratová hodnota:\n" +" Vráti vždy pravdu ak nebol zadaný NÃZOV, pre ktorý nie je definovaný " +"alias." + +#: builtins.c:278 +#, fuzzy +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"OdstrániÅ¥ NÃZVY zo zoznamu definovaných aliasov.\n" +" \n" +" Voľby:\n" +" -a\todstráni vÅ¡etky definície aliasov.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebol zadaný NÃZOV, pre ktorý nie je definovaný alias." + +#: builtins.c:291 +#, fuzzy +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"NastaviÅ¥ klávesové väzby a premenné Readline.\n" +" \n" +" Naviaže sekvenciu klávesov na funkciu alebo makro Readline alebo\n" +" nastaviÅ¥ premennú Readline. Syntax argumentu je rovnaká ako tá\n" +" v ~/.inputrc, ale musí sa podaÅ¥ ako jediný argument:\n" +" bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Voľby:\n" +" -m klávmap Použije „klávmap“ ako mapu klávesov poÄas trvania\n" +" tohto príkazu. Prijateľné názvy klávesových máp sú\n" +" emacs emacs-standard, emacs-meta, emacs-ctlx, vi,\n" +" vi-move, vi-command a vi-insert.\n" +" -l Vypíše názvy funkcií.\n" +" -P Vypíše názvy funkcií a väzby.\n" +" -p Vypíše názvy funkcií a väzby v tvare, ktorý je\n" +" možné znova použiÅ¥ ako vstup.\n" +" -S Vypíše klávesové sekvencie, ktoré vyvolávajú makrá " +"a\n" +" ich hodnoty\n" +" -s Vypíše klávesové sekvencie, ktoré vyvolávajú makrá " +"a\n" +" ich hodnoty\n" +" v tvare, ktorý je možné znova použiÅ¥ ako vstup.\n" +" -V Vypíše názvy premenných a hodnoty\n" +" -v Vypíše názvy premenných a hodnoty v tvare, ktorý " +"je\n" +" -q názov-funkcie Zistí, ktoré klávesy vyvolávajú túto funkciu.\n" +" -u názov-funkcie Zruší väzby vÅ¡etkých kláves naviazaných na túto " +"funkciu\n" +" možné znova použiÅ¥ ako vstup.\n" +" -r kláv_sek Odstráni väzbu pre kláv_sek.\n" +" -f súboru NaÄíta klávesové väzby z SÚBORU.\n" +" -x kláv_sek:príkaz_shellu\tSpôsobí vykonanie PRÃKAZU_SHELLU po\n" +" \t\t\t\tzadaní KLÃV_SEK.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"UkonÄenie cyklu for, while alebo until.\n" +" \n" +" UkonÄiÅ¥ cyklus FOR, WHILE alebo UNTIL. Ak je zadané N, ukonÄiÅ¥ N\n" +" nadradených vnorených cyklov.\n" +" \n" +" Návratová hodnota:\n" +" Návratová hodnota je 0 ak N nie je väÄÅ¡ie alebo rovné 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"PokraÄovaÅ¥ v cykle for, while alebo until\n" +" \n" +" PokraÄuje v nasledujúcej iterácii cyklu FOR, WHILE alebo UNTIL.\n" +" Ak je uvedené N, pokraÄovaÅ¥ v ÄalÅ¡ej iterácii cyklu o N úrovní vyššej.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak N nie je väÄÅ¡ie alebo rovné 1." + +#: builtins.c:354 +#, fuzzy +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"VykonaÅ¥ vstavenú funkciu shellu.\n" +" \n" +" Vykoná vstavenú funkciu shellu s argumentami ARG bez vykonania\n" +" vyhľadania príkazu. To sa hodí, keÄ chcete reimplementovaÅ¥ vstavanú\n" +" funkciu shellu ako funkciu shellu, ale potrebujete vstavanú funkciu " +"volaÅ¥\n" +" v rámci vaÅ¡ej funkcie.\n" +" \n" +" Návratová hodnota:\n" +" Vracia návratový kód vstavanej funkcie shellu alebo 0 ak argument nie " +"je\n" +" vstavaná funkcia shellu." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"VrátiÅ¥ kontext aktuálneho volania podprocedúry.\n" +" \n" +" Bez VÃR, vráti „$line $filename“. S VÃR,\n" +" vráti „$line $subroutine $filename“; túto informáciu\n" +" je možné využiÅ¥ pre trasovanie zásobníka.\n" +" \n" +" Hodnota VÃR urÄuje o koľko rámcov volania sa vrátiÅ¥\n" +" pred aktuálny; najvyšší rámec má Äíslo 0.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak shell nevykonáva funkciu shellu a EXPR nie je neplatný." + +#: builtins.c:387 +#, fuzzy +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"ZmeniÅ¥ aktuálny adresár shellu.\n" +" \n" +" Zmení aktuálny adresár na ADR. Predvolený aktuálny adresár je hodnota\n" +" premennej shellu HOME.\n" +" \n" +" Premenná CDPATH definuje cesty, v ktorých sa hľadá adresár obsahujúci " +"ADR.\n" +" Alternatívne názvy adresárov v CDPATH sú oddelené dvojbodkou (:).\n" +" Prázdny (null) názov adresára zodpovedá aktuálnemu adresáru, t.j. „.“.\n" +" Ak ADR zaÄína lomkou (/), CDPATH sa nepoužije.\n" +" \n" +" Ak adresár nebol nájdený a je nastavená voľba shellu „cdable_vars“,\n" +" predpokladá sa, že toto slovo je názov premennej.\n" +" Ak táto premenná má hodnotu, vykoná cd na hodnotu premennej.\n" +" \n" +" Voľby:\n" +" -L\tvynúti nasledovanie symbolických odkazov\n" +" -P\tpoužije sa fyzická Å¡truktúra adresárov a nie nasledovaÅ¥\n" +" \t\tsymbolické odkazy.\n" +" -e\tak je zadaná voľba -P a aktuálny adresár nie je možné\n" +" \túspeÅ¡ne urÄiÅ¥, ukonÄiÅ¥ s nenulovou návratovou hodnotou\n" +" \n" +" Å tandardne sa budú nasledovaÅ¥ symbolické odkazy ako keby bola\n" +" zadaná voľba „-L“.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak bol aktuálny adresár zmenený a ak sa pri použití voľby -P\n" +" úspeÅ¡ne nastaví $PWD, inak nenulovú hodnotu." + +#: builtins.c:425 +#, fuzzy +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"VypísaÅ¥ názov aktuálneho pracovného adresára.\n" +" \n" +" Voľby:\n" +" -L\tvypísaÅ¥ hodnotu $PWD ak pomenúva aktuálny pracovný\n" +" \tadresár\n" +" -P\tvypísaÅ¥ fyzický adresár bez symbolických odkazov\n" +" \n" +" Å tandardne sa „pwd“ správa ako keby bolo uvedené „-L“.\n" +" \n" +" Návratová hodnota:\n" +" Vracia 0 ak nie je zadaná neplatná voľba alebo nie je možné\n" +" preÄítaÅ¥ aktuálny adresár." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Prázdny príkaz.\n" +" \n" +" Bez úÄinku; príkaz niÄ nerobí.\n" +" \n" +" Návratová hodnota:\n" +" Vždy vráti pravda." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Vráti úspeÅ¡ný výsledok\n" +" \n" +" Návratová hodnota:\n" +" Vždy vráti 0." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Prázdny príkaz.\n" +" \n" +" Vráti neúspeÅ¡ný výsledok.\n" +" \n" +" Návratová hodnota:\n" +" Vždy vráti nepravda." + +#: builtins.c:471 +#, fuzzy +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"VykonaÅ¥ jednoduchý príkaz alebo zobraziÅ¥ informácie o príkazoch.\n" +" \n" +" Spustí PRÃKAZ s ARG potlaÄiac vyhľadanie funkcie shellu alebo\n" +" zobrazí informácie o uvedených PRÃKAZoch. Možno použiÅ¥ na\n" +" vyvolanie externých príkazov ak existuje funkcia s rovnakým názvom.\n" +" \n" +" Voľby:\n" +" -p\tpoužiÅ¥ Å¡tandardnú hodnotu PATH, ktorá zaruÄene nájde vÅ¡etky\n" +" \t\tÅ¡tandardné nástroje\n" +" -v\tvypísaÅ¥ popis PRÃKAZu podobný zabudovanému príkazu „type“\n" +" -v\tvypísaÅ¥ podrobnejší popis každého PRÃKAZu\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu PRÃKAZu alebo zlyhá ak nenájde PRÃKAZ." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"NastaviÅ¥ hodnoty a atribúty premennných.\n" +" \n" +" Deklaruje premenné a dáva im atribúty. Ak nie sú zadané NÃZVY,\n" +" zobrazí atribúty a hodnoty vÅ¡etkých premenných.\n" +" \n" +" Voľby:\n" +" -f\tobmedzí operáciu alebo výpis na názvy funkcií a definície\n" +" -F\tobmedzí výpis iba na názvy funkcií (plus Äíslo riadka a\n" +" \t\tzdrojový súbor pri ladení)\n" +" -g\tvytvorí globálne premenné pri použití vo funkcii shellu; inak\n" +" \tsa ignoruje\n" +" -p\tzobrazí atribúty a hodnotu každého NÃZVU\n" +" \n" +" Voľby, ktoré nastavujú atribúty:\n" +" -a\turobí z NÃZVU indexované polia (ak sú podporované)\n" +" -A\turobí z NÃZVOV asociatívne polia (ak sú podporované)\n" +" -i\tdá NÃZVU atribút „celé Äíslo“\n" +" -l\tprevedie NÃZVY pri priradení na malé písmená\n" +" -r\tnastaví NÃZVY iba na Äítanie\n" +" -t\tdá NÃZVU atribút „trace“\n" +" -u\tprevedie NÃZVY pri priradení na veľké písmená\n" +" -x\tprevedie NÃZVY na export\n" +" \n" +" Pomocou „+“ namiesto „-“ vypnete uvedený atribút.\n" +" \n" +" Premenné s atribútom „celé Äíslo“ vykonávajú aritmetické vyhodnocovanie\n" +" (pozri príkaz „let“), keÄ je im priradená hodnota.\n" +" \n" +" KeÄ sa „declare“ použije vo funkcii, NÃZVY budú lokálne ako pri príkaze\n" +" „local“.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." + +#: builtins.c:532 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"NastaviÅ¥ hodnoty a atribúty premenných.\n" +" \n" +" Zastaralé. Pozri „help declare“." + +#: builtins.c:540 +#, fuzzy +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"DefinovaÅ¥ lokálne premenné.\n" +" \n" +" Vytvorí lokálnu premennú s názvom NÃZOV a priradí jej HODNOTU.\n" +" VOĽBA je ľubovoľná voľba, ktorú prijme „declare“\n" +" \n" +" Lokálne premenné možno použiÅ¥ iba v rámci funkcie; sú viditeľné\n" +" iba v rámci funkcie, kde sú definované a v jej potomkoch.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba, nevyskytla sa chyba a\n" +" shell práve nevykonáva funkciu." + +#: builtins.c:557 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"VypísaÅ¥ argumenty na Å¡tandardný výstup.\n" +" \n" +" Vypíše ARGumenty na Å¡tandardný výstup ukonÄené znakom\n" +" nového riadka.\n" +" Voľby:\n" +" -n\tpotlaÄí znak nového riadka na konci.\n" +" -e\tzapne interpretáciu nasledovných únikových klauzúl\n" +" -E\tvypne interpretáciu nasledovných únikových klauzúl\n" +" \n" +" „echo“ interpretuje nasledovné únikové klauzuly:\n" +" \t\\a\tvýstraha (zvonÄek)\n" +" \t\\b\tbackspace\n" +" \t\\c\tptlaÄiÅ¥ posledný znak nového riadka\n" +" \t\\e\tescape znaku\n" +" \t\\f\tform feed\n" +" \t\\n\tnový riadok\n" +" \t\\r\tnávrat vozíka\n" +" \t\\t\thorizontálny tabulátor\n" +" \t\\v\tvertikálny tabulátor\n" +" \t\\\\\tspätná lomka\n" +" \t\\0nnn\tznak s ASCII kódom NNN (osmiÄkový). NNN môže maÅ¥\n" +" \t\t0 až 3 osmiÄkové Äíslice\n" +" \\xHH\tosembitový znak, ktorého hodnota je HH (hexadecimálne).\n" +" \tHH môže maÅ¥ jednu alebo dve hexadecimálne Äíslice.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nevyskytla sa chyba pri zápise." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"VypísaÅ¥ argumenty na Å¡tandardný výstup.\n" +" \n" +" Vypíše ARGumenty na Å¡tandardný výstup ukonÄené znakom\n" +" nového riadka.\n" +" Voľby:\n" +" -n\tpotlaÄí znak nového riadka na konci.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nevyskytla sa chyba pri zápise." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Zapnúť a vypnúť vstavané funkcie shellu.\n" +" \n" +" Zapína a vypína vstavané funkcie shellu. Vypnutie vám umožní\n" +" vykonaÅ¥ externý príkaz s rovnakým názvom ako vstavaná funkcia\n" +" shellu bez toho, aby ste museli použiÅ¥ úplnú cestu k nemu.\n" +" \n" +" Voľby:\n" +" -a\tvypíše zoznam vstavaných funkcií a zobrazí pi každej\n" +" \tÄi je zapnutá\n" +" -n\tvypne každý NÃZOV alebo zobrazí zoznam vypnutých\n" +" \tvstavaných funkcií\n" +" -p\tvypíše zoznam vstavaných funkcií v tvare, ktorý je\n" +" \tmožné znova použiÅ¥ ako vstup\n" +" -s\tvypísaÅ¥ iba názvy Posixových „špeciálnych“\n" +" \tvstavaných funkcií\n" +" \n" +" Voľby riadiace dynamické naÄítanie:\n" +" -f\tNaÄítaÅ¥ vstavanú funkciu NÃZOV zo zdieľaného objektu SÚBOR\n" +" -d\todstrániÅ¥ vstavanú funkciu naÄítanú voľbou -f\n" +" \n" +" Bez volieb zapne každý NÃZOV.\n" +" \n" +" Ak chcete použiÅ¥ „test“, ktorý sa nachádza v ceste $PATH namiesto\n" +" vstavanej funkcie shellu, napíšte „enable -n test“.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak NÃZOV nie je vstavaná funkcia shellu a nevyskytla sa chyba." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"VykonaÅ¥ argumenty ako príkaz shellu.\n" +" \n" +" SkombinovaÅ¥ ARGumenty do jediného reÅ¥azca a použiÅ¥ výsledok\n" +" ako vstup shellu a vykonaÅ¥ tieto príkazy.\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu príkazu alebo 0 ak je príkaz prázdny." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Syntaktická analýza volieb.\n" +" \n" +" Getopts používajú procedúry shellu na analýzu poziÄných parametrov.\n" +" \n" +" OPTSTRING obsahuje písmená volieb, ktoré pozná; ak po písmene\n" +" nasleduje dvojbodka, po voľbe sa oÄakáva argument, ktorý by mal\n" +" od nej byÅ¥ oddelený netlaÄiteľným znakom (medzera).\n" +" \n" +" Po každom zavolaní getopts dá nasledujúcu voľbu do premennej\n" +" shellu $name, ak name neexeistuje, tak ho inicializuje a index\n" +" ÄalÅ¡ieho argumentu, ktorý sa má spracovaÅ¥, dá do premennej\n" +" shellu OPTIND. OPTIND je inicializovaný na 1 po každom vyvolaní\n" +" shellu alebo shell skriptu. KeÄ voľba vyžaduje argument, getopts\n" +" dá tento argument do premennej shellu OPTARG.\n" +" \n" +" getopts oznamuje chyby jedným z dvoch spôsobov. Ak je prvý znak\n" +" OPTSTRING dvojbodka, getopts použije tiché oznamovanie chýb. V\n" +" Tomto režime sa nevypíšu žiadne chybové správy. Ak getopts vidí\n" +" neplatnú voľbu, dá znak nájdenej voľby do OPTARG. Ak nenájde\n" +" požadovaný argument, getopts dá do NAME „:“ a nastaví OPTARG\n" +" na znak nájdenej voľby. Ak getopts nie je v tichom režime a vidí\n" +" neplatnú voľbu, dá do NAME „?“ a zruší (unset) OPTARG. Ak nenájde\n" +" požadovaný argument, getopts dá do NAME „?“, zruší (unset) OPTARG\n" +" a vypíše diagnostickú správu.\n" +" \n" +" Ak premenná shellu OPTERR má hodnotu 0, getopts vypne vypisovanie\n" +" chybových správ, aj ak prvý znak OPTSTRING nie je dvojbodka.\n" +" OPTERR má Å¡tandardne hodnotu 1.\n" +" \n" +" Getopts normálne spracúva poziÄné parametre ($0 - $9), ale ak je\n" +" zadaných viac argumentov, spracuje tieto.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak je voľba nájdená; zlyhá po dosiahnutí konca reÅ¥azca volieb\n" +" alebo ak sa vyskytne chyba." + +#: builtins.c:694 +#, fuzzy +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"NahradiÅ¥ shell zadaným príkazom.\n" +" \n" +" VykonaÅ¥ PRÃKAZ, priÄom sa nahradí tento shell urÄeným programom.\n" +" ARGUMENTy dostane PRÃKAZ ako argumenty. Ak nie je zadaný PRÃKAZ,\n" +" vÅ¡etky presmerovania sa uskutoÄnia v aktuálnom shelli.\n" +" \n" +" Voľby:\n" +" -a názov\tpoÅ¡le NÃZOV ako nultý argument PRÃKAZU\n" +" -c\tvykoná PRÃKAZ s prázdnym prostredím\n" +" -l\tdá pomlÄku na nultý argument PRÃKAZu\n" +" \n" +" Ak príkaz nemožno vykonaÅ¥, neinteraktívny shell sa ukonÄí ak nie je\n" +" nastavená voľba shellu „execfail“.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nestane, že PRÃKAZ nebol nájdený a nevyskytne sa chyba\n" +" presmerovania." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"UkonÄiÅ¥ shell\n" +" \n" +" UkonÄí shell s návratovou hodnotou N. Ak sa N vynechá, návratová\n" +" hodnota sa nastaví podľa stavu posledného vykonaného príkazu." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"UkonÄiÅ¥ login shell.\n" +" \n" +" UkonÄí login shell s návratovou hodnotou N. Vráti chybu ak nie je\n" +" spustený v login shelli." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"ZobraziÅ¥ alebo vykonaÅ¥ príkazy z histórie.\n" +" \n" +" fc sa používa na vypísanie alebo úpravu a opätovné vykonanie príkazov.\n" +" z histórie.\n" +" PRVà a POSLEDNà môžu byÅ¥ Äísla udávajúce rozsah alebo PRVà môže byÅ¥\n" +" reÅ¥azec, ktorý znamená najnedávnejší príkaz zaÄínajúci týmto reÅ¥azcom.\n" +" \n" +" -e ENAME zvolí editor, ktorý sa má použiÅ¥. Å tandardne je to FCEDIT,\n" +" \t\tpotom EDITOR, potom vi.\n" +" \n" +" -l znamená vypísaÅ¥ riadky namiesto úpravy.\n" +" -n znamená nevypisovaÅ¥ Äísla riadkov.\n" +" -r znamená obrátiÅ¥ poradie riadkov (najnovÅ¡ie budú vypísané prvé).\n" +" \n" +" S formátom „fc -s [pat=rep ...] [príkaz]“ sa znova vykoná uvedený\n" +" príkaz po vykonaní náhrady OLD=NEW.\n" +" \n" +" UžitoÄný alias, ktorý sa dá s týmto použiÅ¥, je r='fc -s', takže " +"napísaním\n" +" „r cc“ spustíte posledný príkaz zaÄínajúci „cc“ a napísaním „r“ " +"opätovne\n" +" vykonáte posledný príkaz.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 alebo stav vykonaného príkazu; nenulovú hodnotu ak sa vyskytne\n" +" chyba." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Presunúť úlohu do popredia.\n" +" \n" +" Umiestni JOB_SPEC do popredia a urobí ju aktuálnou úlohou. Ak JOB_SPEC\n" +" nie je prítomná, použije sa aktuálna úloha shellu.\n" +" \n" +" Návratová hodnota:\n" +" Stav príkazu umiestneného do popredia; nenulovú hodnotu ak sa vyskytne\n" +" chyba." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Presunúť úlohu do popredia.\n" +" \n" +" Umiestni každú JOB_SPEC do pozadia, ako keby bola spustená s „&“. Ak\n" +" JOB_SPEC nie je prítomná, použije sa aktuálna úloha shellu.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nie je riadenie úloh vypnuté a nevyskytne sa chyba." + +#: builtins.c:793 +#, fuzzy +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"VyvolaÅ¥ alebo zobraziÅ¥ umiestnenia programu.\n" +" \n" +" UrÄiÅ¥ a zapamätaÅ¥ si úplnú cestu ku každému PRÃKAZu. Ak nie sú\n" +" uvedené žiadne argumenty, zobrazia sa informácie o zapamätaných\n" +" príkazoch.\n" +" \n" +" Voľby:\n" +" -d\tzabudnúť zapamätanné umiestnenia každého NÃZVU\n" +" -l\tzobraziÅ¥ vo formáte, ktoré je možné znova použiÅ¥ ako \t" +"\tvstup\n" +" -p cesta\tpoužiÅ¥ CESTU ako plnú cestu k NÃZVU\n" +" -r\tzabudnúť vÅ¡etky zapamätané umiestnenia\n" +" -t\tvypísaÅ¥ zapamätané umiestnenia každého NÃZVU, pred\n" +" \tne vypísaÅ¥ zodpovedajúci NÃZOV ak sú zadané viaceré\n" +" \tNÃZVY\n" +" \n" +" Argumenty:\n" +" NÃZOV\tKaždý NÃZOV sa vyhľadá v $PATH a pridá\n" +" \t\tsa do zoznnamu zapamätaných príkazov.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nestalo, že NÃZOV nebol nájdený a nebola zadaná\n" +" neplatná voľba." + +#: builtins.c:818 +#, fuzzy +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"ZobraziÅ¥ informácie o vstavaných príkazoch.\n" +" \n" +" Zobrazí struÄné zhrnutia vstavaných príkazov. Ak je zadaný VZOR,\n" +" uvedie podrobnosti o vÅ¡etkých príkazoch zodpovedajúcich VZORu,\n" +" inak vypíše zoznam tém pomocníka.\n" +" \n" +" Voľby:\n" +" -d\tvypíše krátky popis každej z tém\n" +" -m\tvypíše použitie vo formáte podobnom manuálovej stránke\n" +" -s\tvypíše iba krátku syntax použitia každej z tém zodpovedajúcich\n" +" \tVZORu\n" +" \n" +" Argumenty:\n" +" VZOR\tVzor urÄujúci tému pomocníka\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nestalo, že VZOR nebol nájdený a nebola zadaná\n" +" neplatná voľba." + +#: builtins.c:842 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"ZobraziÅ¥ alebo zmeniÅ¥ históriu.\n" +" \n" +" Zobrazí históriu s Äíslami riadkov. Riadky s „*“ boli zmenené.\n" +" Argument N znamená zobraziÅ¥ iba posledných N riadkov.\n" +" \n" +" Voľby:\n" +" -c\tvyÄistenie histórie vymazaním vÅ¡etkých jej položiek.\n" +" -d\tzmaže položku histórie na pozícii OFSET\n" +" \n" +" -a\tpridaÅ¥ riadky histórie z aktuálnej relácie do súbory s históriou.\n" +" -n\tpreÄítaÅ¥ vÅ¡etky zatiaľ nepreÄítané riadky\n" +" -r\tpreÄítaÅ¥ súbor a pridaÅ¥ jeho obsah do zoznamu histórie\n" +" \tzo súboru histórie a pridaÅ¥ ich do zoznamu histórie.\n" +" -w\tvypíše aktuálnu históriu do súboru histórie.\n" +" \n" +" -p\tvykoná expanziu histórie každého ARG a zobrazí výsledok\n" +" \tbez toho aby ukladal Äokoľvek do histórie.\n" +" -s\tpridá ARG, ktoré nie sú voľbami do histórie ako jednu položku.\n" +" \n" +" Ak je uvedený SÚBOR, použije sa ako súbor histórie, inak sa použije\n" +" $HISTFILE ak má nastavenú hodnotu, inak ~/.bash_history.\n" +" \n" +" Ak je premenná $HISTTIMEFORMAT nastavená a neprázdna, jej hodnota\n" +" sa použije ako formátovací reÅ¥azec strftime(3) na tlaÄ prísluÅ¡ných\n" +" Äasových známok zobrazených pri každej položke histórie.\n" +" V opaÄnom prípade sa nebudú tlaÄiÅ¥ Äasové známky.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." + +#: builtins.c:879 +#, fuzzy +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"ZobraziÅ¥ stav úloh.\n" +" \n" +" Vypíše aktívne úlohy. JOBSPEC vypíše iba úlohu s daným JOBSPEC.\n" +" Bez volieb sa vypíše stav vÅ¡etkých aktívnych úloh.\n" +" \n" +" Voľby:\n" +" -l\tvypíše okrem bežných informácií aj ID procesov\n" +" -n\tvypíše iba procesy, ktorých stav sa zmenil od poslednej kontroly.\n" +" -p\tvypíše iba ID procesov\n" +" -r\tobmedzí výstup iba na bežiace úlohy\n" +" -s\tobmedzí výstup iba na zastavené úlohy\n" +" \n" +" Ak je zadaná voľba „-x“ PRÃKAZ sa spustí po tom, ako každá\n" +" zo Å¡pecifikácií úloh, ktoré sú uvedené v ARGS, boli nahradené\n" +" ID procesu lídra skupiny procesov danej úlohy.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba.\n" +" Ak je použitá voľba -x, vráti sa návratová hodnota PRÃKAZu." + +#: builtins.c:906 +#, fuzzy +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"OdstrániÅ¥ úlohy z aktuálneho shellu.\n" +" \n" +" Odstráni každý argument JOBSPEC z tabuľky aktívnych úloh. Bez uvedenia\n" +" akýchkoľvek JOBSPEC, shell použije svoj pojem aktuálnej úlohy.\n" +" \n" +" Voľby:\n" +" -a\todstráni vÅ¡etky úlohy ak nie sú uvedené JOBSPEC\n" +" -h\toznaÄí každú JOBSPEC tak, že sa jej nepoÅ¡le SIGHUP ak shell\n" +" \t\tdostane SIGHUP\n" +" -r\todstráni iba bežiace úlohy\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná JOBSPEC." + +#: builtins.c:925 +#, fuzzy +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"PoslaÅ¥ úlohe signál.\n" +" \n" +" PoÅ¡le procesom s uvedeným PID (alebo JOBSPEC) signál SIGSPEC. Ak\n" +" nie je SIGSPEC uvedená, predpokladá sa SIGTERM.\n" +" \n" +" Voľby:\n" +" -s sig\tSIG je názov signálu\n" +" -n sig\tSIG je Äíslo signálu\n" +" -l\tvypíše názvy signálov; ak sú argumenty uvedené po „-l“,\n" +" \tpredpokladá sa, že sú to Äísla signálov ktorých názvy sa majú\n" +" \tzobraziÅ¥.\n" +" \n" +" Kill je vstavaný (builtin) príkaz shellu z dvoch dôvodov: umožňuje\n" +" použitie ID úlohy okrem ID procesu a ak dosiahnete limit procesov, \n" +" ktoré môžete vytvoriÅ¥, nemusíte spúšťaÅ¥ proces na ukonÄenie iného.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"VyhodnotiÅ¥ aritmetické výrazy.\n" +" \n" +" Vyhodnotí každý ARG ako aritmetický výraz. Vyhodnocuje\n" +" sa v celých Äíslach bez kontroly preteÄenia, hoci delenie nulou sa\n" +" detekuje a oznaÄí ako chyba. Nasledujúci zoznam operátorov je\n" +" zoskupený do úrovní s rovnakou precedenciou operátorov.\n" +" Úrovne sú v poradí so zvyÅ¡ujúcou sa precedenciou.\n" +" \n" +" \tid++, id--\tpostinkrementácia premennej, postdekrementácia\n" +" \t++id, --id--\tpreinkrementácia premennej, predekrementácia\n" +" \t-, +\t\tunárne mínus, plus\n" +" \t!, ~\t\tlogická negácia a negácia po bitoch\n" +" \t**\t\tumocnenie\n" +" \t*, /, %\t\tnásobenie, delenie, zvyÅ¡ok po delení\n" +" \t+, -\t\tsÄítanie, odÄítanie\n" +" \t<<, >>\t\tposun doľava resp. doprava po bitoch\n" +" \t<=, >=, <, >\tporovnanie\n" +" \t==, !=\t\trovnosÅ¥, nerovnosÅ¥\n" +" \t&\t\tA po bitoch\n" +" \t^\t\tXOR po bitoch\n" +" \t|\t\tALEBO po bitoch\n" +" \t&&\t\tkonjunkcia\n" +" \t||\t\talternatíva\n" +" \tvýraz ? výraz : výraz\n" +" \t\t\tpodmienený operátor\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tpriradenie\n" +" \n" +" Premenné shellu sú prípustné ako oeprandy. Názov premennej sa\n" +" v rámci výrazu nahradí jej hodotou (prevedenou na celé Äíslo).\n" +" Nie je nutné, aby bol celoÄíselný atribút premennej zapnutý,\n" +" aby ju bolo možné použiÅ¥ vo výraze.\n" +" \n" +" Operátory sa vyhodnocujú v pradí podľa precedencie. Sub-výrazy\n" +" v zátvorkách sa vyhodnocujú ako prvé a majú prednosÅ¥ pred\n" +" hore uvedenými pravidlami precedencie.\n" +" \n" +" Návratová hodnota:\n" +" Ak sa posledný ARG vyhodnotí na 0, let vráti 1; 0 inak sa vráti 0." + +#: builtins.c:994 +#, fuzzy +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"NaÄítaÅ¥ riadok zo Å¡tandardného vstupu a rozdeliÅ¥ ho do polí.\n" +" \n" +" Zo Å¡tandardného vstupu (alebo z popisovaÄa FD ak je uvedená voľba -u)\n" +" sa naÄíta jeden riadok. Riadok sa rozdelí do polí ako pri delení \n" +" na slová a prvé slovo sa priradí prvému NÃZVU, druhé\n" +" slovo druhému NÃZVU atÄ. až zvyÅ¡né slová sa priradia poslednému\n" +" NÃZVU. Iba znaky, ktoré sa nachádzajú v $IFS sa považujú za\n" +" oddeľovaÄe slov.\n" +" \n" +" Ak nie sú uvedené žiadne NÃZVY, naÄítaný riadok sa uloží do premennej\n" +" REPLY.\n" +" \n" +" Voľby:\n" +" -a pole\tvÅ¡etky naÄítané slová sa priradia postupne indexom poľa POLE,\n" +" \t\tpoÄínajúc nulou.\n" +" -d\tpokraÄovanie Äítania až kým sa nevyskytne prvý znak znak DELIM\n" +" \t\tnamiesto znaku nového riadka.\n" +" -e\t\tna naÄítanie riadka sa použije Readline ak je shell " +"interaktívny.\n" +" -i text\tpoužije TEXT ako prvotný text pre Readline\n" +" -n nznakov\tÄítanie vstupu skonÄí po naÄítaní NZNAKOV znakov bez " +"Äakania\n" +" \t\tna nový riadok, ale reÅ¡pektovaÅ¥ oddeľovaÄ v prípade menej ako " +"NZNAKOV\n" +" -N nchars\tÄítanie vstupu skonÄí presne po naÄítaní ZNAKOV znakov,\n" +" \t\tiba ak by sa skôr vyskytol koniec súboru alebo Äasový interval na\n" +" \t\tÄítanie vyprÅ¡al, ignorujúc oddeľovaÄe\n" +" -p\tvýzva\tpred pokusom o Äítanie vypíše reÅ¥azec VÃZVA bez koncového\n" +" \t\tznaku nového riadka.\n" +" -r\tzápis únikových klauzúl pomocou spätnej lomky je vypnutý.\n" +" -s\tvstup naÄítaný z terminálu nebude vypisovaÅ¥ (echo).\n" +" -t interval\tukonÄenie Äítania po vyprÅ¡aní Äasového INTERVALu a ak\n" +" \tsa do intervalu nenaÄíta úplný riadok vstupu, vráti chybu. Ak je\n" +" \tnastavená premenná TIMEOUT, jej hodnota je Å¡tandardný interval\n" +" \texpirácie. TIMEOUT môže byÅ¥ zlomok. Ak je TIMEOUT 0, read sa ukonÄí\n" +" \túspeÅ¡ne iba ak je na požadovanom popisovaÄi k dispozícii vsup.\n" +" \tNávratová hodnota je väÄÅ¡ia ako 128 aj sa prekroÄí INTERVAL.\n" +" -u fd\tnamiesto Å¡tandardného vstupu ÄítaÅ¥ z popisovaÄa súboru FD.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nenarazí pri Äítaní nakoniec súboru, nevyprší Äas na\n" +" Äítanie a ako argument -u nebol je zadaný neplatný popisovaÄ." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Návrat z funkcie shellu.\n" +" \n" +" Spôsobí ukonÄenie funkcie alebo skriptu vyvolaného pomocou source\n" +" s návratovou hodnotou N. Ak sa N vynechá, návratovou hodnotu je\n" +" návratová hodnota posledného vykonaného príkazu v tejto funkcii Äi\n" +" skripte.\n" +" \n" +" Návratová hodnota:\n" +" Vráti N alebo zlyhá ak shell nevykonáva funkciu Äi skript." + +#: builtins.c:1054 +#, fuzzy +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"NastaviÅ¥ alebo zruÅ¡iÅ¥ nastavenie volieb shellu a poziÄných parametrov.\n" +" \n" +" Zmení hodnotu atribútov shellu a poziÄných parametrov alebo zobrazí\n" +" názvy a hodnoty premenných shellu.\n" +" \n" +" Voľby:\n" +" -a OznaÄí premenné, ktoré sú zmenené alebo vytvorené na export.\n" +" -b Okamžite oznámi ukonÄenie úlohy.\n" +" -e Okamžite sa ukonÄí, keÄ sa príkaz ukonÄí s nenulovou návratovou\n" +" hodnotou.\n" +" -f Vypnúť tvorbu názvov súborov (globbing).\n" +" -h PamätaÅ¥ si, kde sú umiestnené príkazy po ich vyhľadaní.\n" +" -k VÅ¡etky argumenty priradenia sa odovzdávajú do prostredia\n" +" príkazu, nie len tie, ktoré predchádzajú názvy príkazu.\n" +" -m Riadenie úloh je zapnuté.\n" +" -n NaÄítaÅ¥ príkazy, ale nevykonávaÅ¥ ich.\n" +" -o názov-voľby\n" +" Nastaví premennú zodpovedajúcu názvu-voľby:\n" +" allexport rovnaké ako -a\n" +" braceexpand rovnaké ako -B\n" +" emacs použiÅ¥ rozhranie na úpravu príkazového riadka\n" +" v Å¡týle emacs\n" +" errexit rovnaké ako -e\n" +" errtrace rovnaké ako -E\n" +" functrace rovnaké ako -T\n" +" hashall rovnaké ako -h\n" +" histexpand rovnaké ako -H\n" +" history zapnúť históriu príkazov\n" +" ignoreeof shell sa neukonÄí po naÄítaní znaku EOF\n" +" interactive-comments\n" +" umožní výskyt komentárov v interaktívnych " +"príkazoch\n" +" keyword rovnaké ako -k\n" +" monitor rovnaké ako -m\n" +" noclobber rovnaké ako -C\n" +" noexec rovnaké ako -n\n" +" noglob rovnaké ako -f\n" +" nolog momentálne sa prijme, ale ignoruje sa\n" +" notify rovnaké ako -b\n" +" nounset rovnaké ako -u\n" +" onecmd rovnaké ako -t\n" +" physical rovnaké ako -P\n" +" pipefail návratová hodnota postupnosti rúr je hodnota\n" +" posledného príkazu, ktorý skonÄil s nenulovou\n" +" hodnotou, alebo nula ak žiadny príkaz nevrátil\n" +" nenulovú hodnotu\n" +" posix zmeniÅ¥ správanie bash, kde sa Å¡tandardné " +"správanie\n" +" líši od Å¡tandardu 1003.2 tak, aby mu zodpovedalo\n" +" privileged rovnaké ako -p\n" +" verbose rovnaké ako -v\n" +" vi použiÅ¥ rozhranie na úpravu príkazového riadka\n" +" v Å¡týle vi\n" +" xtrace rovnaké ako -x\n" +" -p Zapnuté vždy, keÄ sa skutoÄné a úÄinné ID používateľa nezhoduje.\n" +" Vypína spracúvanie súboru $ENV a importovanie funkcií shellu.\n" +" Vypnutie tejto voľby spôsobí, že úÄinný UID a GID sa nastavia\n" +" na skutoÄný UID a GID.\n" +" -t UkonÄiÅ¥ po naÄítaní a vykonaní jedného príkazu.\n" +" -u PovažovaÅ¥ nenastavené premenné za chybu pri substitúcii.\n" +" -v VypisovaÅ¥ vstupné riadky shellu postupne ako sa naÄítavajú.\n" +" -x VypisovaÅ¥ príkazy a ich argumenty postupne ako sa naÄítavajú.\n" +" -B Shell bude vykonávaÅ¥ expanziu zložených zátvoriek\n" +" -C Ak je voľba nastavená, zamedzí prepísaniu existujúcich súborov\n" +" persmerovaním výstupu.\n" +" -E Ak je voľba nastavená, zachytenie ERR zdedia funkcie shellu.\n" +" -H Zapne substitúciu príkazov z histórie pomocou znaku !. Tento\n" +" prepínaÄ je Å¡tandardne zapnutý, keÄ je shell interaktívny.\n" +" -P Ak je voľba nastavená, nenasledovaÅ¥ symbolické odkazy pri\n" +" vykonávaní príkazov ako cd, ktoré menia aktuálny adresár.\n" +" -T Ak je voľba nastavená, zachytenie DEBUG zdedia funkcie shellu.\n" +" -- OdovzdaÅ¥ vÅ¡etky zostávajúce argumenty poziÄným parametrom.\n" +" Ak nezostávajú žiadne argumenty, zruší sa nastavenie poziÄných\n" +" parametrov.\n" +" - OdovzdaÅ¥ vÅ¡etky zostávajúce argumenty poziÄným parametrom.\n" +" Voľby -x a -v sú vypnuté.\n" +" \n" +" Použitie + namiesto - spôsobí vypnutie voľby. Voľby je tiež možné\n" +" použiÅ¥ pri vyvolaní shellu. Momentálne nastavené voľby možno nájsÅ¥ v\n" +" $-. Zostávajúcich n ARGumentov je poziÄných a priradia sa postupne\n" +" premenným $1, $2, .. $n. Ak nie sú zadané žiadne ARGumenty, vÅ¡etky\n" +" premenné shellu sa vypíšu.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba." + +#: builtins.c:1139 +#, fuzzy +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"ZruÅ¡iÅ¥ nastavenie hodnôt a atribútov premenných shellu a funkcií.\n" +" \n" +" Pre každý NÃZOV odstráni zodpovedajúcu premennú alebo funkciu.\n" +" \n" +" Voľby:\n" +" -f\tpovažovaÅ¥ každý NÃZOV za funkciu shellu\n" +" -v\tpovažovaÅ¥ každý NÃZOV za premennú shellu\n" +" \n" +" Bez uvedenia volieb sa unset najskôr pokúša zruÅ¡iÅ¥ nastavenie\n" +" premennej a ak sa mu to nepodarí, pokúsi sa zruÅ¡iÅ¥ nastavenie\n" +" funkcie.\n" +" \n" +" Nastavenie niektorých premenných nemožno zruÅ¡iÅ¥; pozri aj „readonly“.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nestalo, že je NÃZOV iba na Äítanie a nebola zadaná\n" +" neplatná voľba." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"NastaviÅ¥ atribút export premenným shellu.\n" +" \n" +" OznaÄí každý NÃZOV na automatický export do prostredia Äalších\n" +" spúšťaných príkazov. Ak je zadaná HODNOTA, pred exportovaním priradí\n" +" premenej HODNOTU.\n" +" \n" +" Voľby:\n" +" -f\toznaÄuje funkcie shellu\n" +" -n\todoberie z NÃZVU atribút export\n" +" -p\tzobrazí zoznam exportovaných premenných a funkcií\n" +" \n" +" Argument „--“ vypína spracovanie Äalších volieb.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nestalo, že je NÃZOV neplatný a nebola zadaná\n" +" neplatná voľba." + +#: builtins.c:1180 +#, fuzzy +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"OznaÄiÅ¥ premenné shellu ako nemeniteľné.\n" +" \n" +" OznaÄí každý NÃZOV ako len na Äítanie (atribút readonly); hodnoty " +"týchto\n" +" NÃZVOV nie je možné Äalej meniÅ¥ priradením. Ak je zadaná HODNOTA,\n" +" pred oznaÄením ako readonly priradiÅ¥ premenej HODNOTU.\n" +" \n" +" Voľby:\n" +" -a\todkazuje na premenné indexovaných polí\n" +" -A\todkazuje na premenné asociatívnych polí\n" +" -f\todkazuje na funkcie shellu\n" +" -p\tzobrazí zoznam premenných a funkcií len na Äítanie\n" +" \n" +" Argument „--“ vypína spracovanie Äalších volieb.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nestalo, že je NÃZOV neplatný a nebola zadaná\n" +" neplatná voľba." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Posunúť poziÄné parametre.\n" +" \n" +" PremenovaÅ¥ poziÄné parametre $N+1,$N+2 ... to $1,$2 ... Ak N nie je\n" +" zadané, predpokladá sa N=1.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nestalo, že je N záporné alebo väÄÅ¡ie ako $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"VykonaÅ¥ príkazy zo súboru v aktuálnom shelli.\n" +" \n" +" NaÄítaÅ¥ a vykonaÅ¥ príkazy zo SÚBORu v aktuálnom shelli.\n" +" Na nájdenie adresára obsahujúceho SÚBOR sa použijú cesty z $PATH.\n" +" Ak sú zadané nejaké ARGUMENTY, použijú sa ako poziÄné argumenty\n" +" pri vykonaní SÚBORu.\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu posledného príkazu v SÚBORe; zlyhá ak nie je\n" +" možné SÚBOR naÄítaÅ¥." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"PozastaviÅ¥ vykonávanie shellu.\n" +" \n" +" PozastaviÅ¥ vykonávanie shellu pokým nedostane signál SIGCONT.\n" +" Ak to nie je vynútené, login shell nie je možné pozastaviÅ¥.\n" +" \n" +" Voľby:\n" +" -f\tvynútiÅ¥ pozastavenie aj v prípade, že shell je login shell\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nestalo, že je vypnuté riadenie úloh a nevyskytla sa chyba." + +#: builtins.c:1261 +#, fuzzy +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"VyhodnotiÅ¥ podmienený výraz.\n" +" \n" +" SkonÄí s návratovou hodnotou 0 (pravda) alebo 1 (nepravda)\n" +" v závislosti na vyhodnotení VÃR. Výrazy môžu byÅ¥ unárne alebo\n" +" binárne. Unárne výrazy sa Äasto používajú na vyhodnotenie stavu\n" +" súboru. Existujú aj operátory pracujúce s reÅ¥azcami a na\n" +" porovnávanie.\n" +" \n" +" Správanie príkazu test závisí na poÄte argumentov. Úplnú\n" +" Å¡pecifikáciu si môžete preÄítaÅ¥ na manuálovej stránke bash.\n" +" \n" +" Operátory súborov:\n" +" \n" +" -a SÚBOR Pravda ak súbor existuje.\n" +" -b SÚBOR Pravda ak je súbor Å¡peciálne blokové zariadenie.\n" +" -c SÚBOR Pravda ak je súbor Å¡peciálne znakové zariadenie.\n" +" -d SÚBOR Pravda ak je súbor adresárom.\n" +" -e SÚBOR Pravda ak súbor existuje.\n" +" -f SÚBOR Pravda ak súbor existuje a je to obyÄajný súbor.\n" +" -g SÚBOR Pravda ak je súbor set-group-id.\n" +" -h SÚBOR Pravda ak je súbor symbolický odkaz.\n" +" -L SÚBOR Pravda ak je súbor symbolický odkaz.\n" +" -k SÚBOR Pravda ak má súbor nastavený „sticky“ bit.\n" +" -p SÚBOR Pravda ak je súbor pomenovaná rúra.\n" +" -r SÚBOR Pravda ak je pre vás súbor Äitateľný.\n" +" -s SÚBOR Pravda ak súbor existuje a nie je prázdny.\n" +" -S SÚBOR Pravda ak súbor socket.\n" +" -t FD Pravda ak je deskriptor FD otvorený v termináli.\n" +" -u SÚBOR Pravda ak je súbor set-user-id.\n" +" -w SÚBOR Pravda ak je pre vás súbor zapisovateľný.\n" +" -x SÚBOR Pravda ak je pre vás súbor vykonateľný.\n" +" -O SÚBOR Pravda ak ste úÄinným vlastníkom súboru.\n" +" -G SÚBOR Pravda ak je vaÅ¡a skupina úÄinným vlastníkom súboru.\n" +" -N SÚBOR Pravda ak bol súbor od posledného Äítania zmenený.\n" +" \n" +" SÚBOR1 -nt SÚBOR2 Pravda ak je SÚBOR1 novší ako SÚBOR2 (podľa\n" +" dátumu poslednej zmeny).\n" +" \n" +" SÚBOR1 -ot SÚBOR2 Pravda ak je SÚBOR1 starší ako SÚBOR2.\n" +" \n" +" SÚBOR1 -ef SÚBOR2 Pravda ak je SÚBOR1 pevným odkazom na SÚBOR2.\n" +" \n" +" Operátory reÅ¥azcov:\n" +" \n" +" -z REŤAZEC Pravda ak je reÅ¥azec prázdny.\n" +" \n" +" -n REŤAZEC\n" +" REŤAZEC Pravda ak je reÅ¥azec neprázdny\n" +" \n" +" REŤAZEC1 = REŤAZEC2\n" +" Pravda ak sa reÅ¥azce rovnajú.\n" +" REŤAZEC1 != REŤAZEC2\n" +" Pravda ak sa reÅ¥azce nerovnajú.\n" +" REŤAZEC1 < REŤAZEC2\n" +" Pravda ak je REŤAZEC1 pre REŤAZCOM2 v lexikografickom " +"poradí.\n" +" REŤAZEC1 > REŤAZEC2\n" +" Pravda ak je REŤAZEC1 po REŤAZCI2 v lexikografickom " +"poradí.\n" +" \n" +" Iné operátory:\n" +" \n" +" -o VOĽBA Pravda ak je VOĽBA shellu zapnutá.\n" +" -v PREM\t Pravda ak je premenná PREM shellu nastavená.\n" +" ! VÃR Pravda ak je VÃR nepravdivý.\n" +" VÃR1 -a VÃR2 Pavda ak sú oba VÃR1 aj VÃR2 pravdivé.\n" +" VÃR1 -o VÃR2 Pavda ak je aspoň jeden z VÃR1 a VÃR2 pravdivý.\n" +" \n" +" arg1 OP arg2 Aritmetické testy. OP je jeden z -eq, -ne,\n" +" -lt, -le, -gt alebo -ge.\n" +" \n" +" Aritmetické binárne operátory vracajú pravdu, keÄ sa ARG1 rovná,\n" +" nerovná, je menší, menší alebo rovný, väÄší, väÄší alebo rovný ako\n" +" ARG2.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak VÃR vyhodnotí ako pravdivý; zlyhá ako sa VÃR vyhodnotí\n" +" ako nepravdivý alebo je zadaný neplatný argument." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"VyhodnotiÅ¥ podmienený výraz.\n" +" \n" +" Toto je synonymum vsatavanej funkcie „test“, ale posledný\n" +" argument musí byÅ¥ literál „]“, ktorý uzatvára otvárajúcu „[“." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"ZobraziÅ¥ Äasy procesov\n" +" \n" +" Vypíše súhrnné používateľské a systmové Äasy shellu a vÅ¡etkých jeho\n" +" potomkov.\n" +" \n" +" Návratová hodnota:\n" +" Vždy vráti 0." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"ZachytiÅ¥ signály a iné udalosti.\n" +" \n" +" Definuje a aktivuje spustenie obsluhy udalosti, keÄ shell dostane " +"signál\n" +" SIGNAL_SPEC alebo iných podmienok.\n" +" \n" +" Príkaz ARG sa naÄíta a vykoná, keÄ shell dostane signál(y) SIGNAL_SPEC.\n" +" Ak ARG chýba (a je uvedený jediný SIGNAL_SPEC) alebo je „-“,\n" +" každý uvedený signál sa obnoví na pôvodnú hodnotu. Ak je ARG\n" +" prázdny režazec, každý SIGNAL_SPEC shell a príkaz, ktorý vyvolá,\n" +" ignoruje.\n" +" \n" +" Ak SIGNAL_SPEC je EXIT (0), príkaz ARG sa vykoná pri ukonÄení shellu.\n" +" Ak je SIGNAL_SPEC DEBUG, ARG sa vykoná po každom jednoduchom príkaze.\n" +" Ak je SIGNAL_SPEC RETURN, ARG sa vykoná po každom vykonaní funkcie " +"shellu\n" +" alebo dokonÄení skriptu spusteného pomocou „.“ alebo „source“.\n" +" Ak je SIGNAL_SPEC ERR, ARG sa vykoná po každom ukonÄení shellu " +"spôsobenom\n" +" chybou príkazu, keÄ je zapnutá voľba -e.\n" +" \n" +" Ak nie sú uvedené žiadne argumenty, trap vypíše zoznam príkazov\n" +" asociovaných s každým signálom.\n" +" \n" +" Voľby:\n" +" -l\tvypíše zoznam názvov signálov a ich zodpovedajúce Äísla\n" +" -p\tzobrazia sa príkazy trap asociované s každým SIGNAL_SPEC\n" +" \n" +" Každý SIGNAL_SPEC je buÄ názov signálu ako v alebo Äíslo\n" +" signálu. V názvoch signálov sa nerozliÅ¡uje veľkosÅ¥ písmen a predpona\n" +" SIG je nepovinná. Signál je možné shellu poslaÅ¥ príkazom „kill -signal $" +"$“.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nestalo, že je SIGSPEC neplatný a nebola zadaná\n" +" neplatná voľba." + +#: builtins.c:1400 +#, fuzzy +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"ZobraziÅ¥ informácie o type príkazu.\n" +" \n" +" Pre každý NÃZOV vypíše ako by sa interpretoval keby bol použitý\n" +" ako názov príkazu.\n" +" \n" +" Voľby:\n" +" -a\tzobrazí vÅ¡etky umiestnenia, ktoré obsahujú spustiteľný súbor\n" +" \ts názvom NÃZOV; vrátane aliasov, vstavaných funkcií a funkcií\n" +" \tak a iba ak nebola použitá voľba „-p“\n" +" -f\tpotlaÄiÅ¥ hľadanie vo funkciách shellu\n" +" -P\tvynútiÅ¥ pri každom NÃZVE vyhľadanie v CESTE, aj ak je to alias,\n" +" \tvstavaná funkcia alebo funkcia a vráti názov súboru na disku,\n" +" \tktorý by sa spustil\n" +" -p\tvráti buÄ názov súboru na disku, ktorý by sa spustil, alebo niÄ\n" +" \tak by „type -t NAME“ nevrátilo „file“.\n" +" -t\tvypísaÅ¥ jediné slovo, jedno zo slov „alias“, „keyword“,\n" +" \t„function“, „builtin“, „file“ alebo „“, ak je názov alias,\n" +" \tvyhradené slovo shellu, funkcia shellu, vstavaná funkcia shellu,\n" +" \tsúbor na disku alebo NÃZOV nebol nájdený\n" +" \n" +" Argumenty:\n" +" NÃZOV\tNázov príkazu, ktorý sa má interpretovaÅ¥.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak boli nájdené vÅ¡etky NÃZVY; zlyhá ak nie." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"ZmeniÅ¥ obmedzenia prostriedkov shellu.\n" +" \n" +" Poskytuje kontrolu nad prostriedkami dostupnými procesu,\n" +" ktorý spustil shell na systémoch, ktoré takúto kontrolu umožňujú.\n" +" Ak sú zadané voľby, vyhodnocujú sa nasledovne:\n" +" \n" +" -S\tpoužiÅ¥ „mäkký“ limit prostriedkov\n" +" -H\tpoužiÅ¥ „tvrdý“ limit prostriedkov\n" +" -a\toznámi vÅ¡etky aktuálne limity\n" +" -c\tmaximálna veľkosÅ¥ vytvorených core súborov\n" +" -d\tmaximálna veľkosÅ¥ dátového segmentu procesu\n" +" -e\tmaximálna priorita plánovania („nice“)\n" +" -f\tmaximálna veľkosÅ¥ súborov, ktoré zapíše shell a jeho potomkovia\n" +" -i\tmaximálny poÄet Äakajúcich signálov\n" +" -l\tmaximálna veľkosÅ¥ pamäte, ktorú môže proces uzamknúť\n" +" -m\tmaximálna veľkosÅ¥ pracovnej množiny\n" +" -n\tmaximálny poÄet otvorených popisovaÄov súborov\n" +" -p\tveľkosÅ¥ bufera rúry\n" +" -q\tmaximálny poÄet bajtov v POSIX frontoch správ\n" +" -r\tmaximálna priorita plánovania v reálnom Äase\n" +" -s\tmaximálna veľkosÅ¥ zásobníka\n" +" -t\tmaximálne množstvo Äasu CPU v sekundách\n" +" -u\tmaximálny poÄet používateľských procesov\n" +" -v\tveľkosÅ¥ virtuálnej pamäte\n" +" -x\tmaximálny poÄet zámkov súborov\n" +" \n" +" Ak je zadaný LIMIT, je to nová hodnota zadaného prostriedku;\n" +" Å¡peciálne hodnoty LIMIT sú „soft“, „hard“ a „unlimited“, ktoré\n" +" znamenajú aktuálny mäkký limit, aktuálny tvrdý limit resp. žiadny " +"limit.\n" +" Inak sa vypíše aktuálna hodnota zadaného prostriedku.\n" +" Ak nie je zadaná žiada voľba, predpokladá sa -f.\n" +" \n" +" Hodnoty sú v násobkoch 1024 bajtov okrem -t, ktorý je v sekundách,\n" +" -p, ktorý je v násobkoch 512 bajtov a -u, Äo znamená neobmedzený\n" +" poÄet procesov.\n" +" \n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"ZobraziÅ¥ alebo nastaviÅ¥ masku režimu súboru.\n" +" \n" +" Nastaví masku súborov vytvorených používateľom na REŽIM. Ak sa\n" +" REŽIM vynechá, vypíše aktuálnu hodnotu masky.\n" +" \n" +" Ak REŽIM zaÄína bodkou, interpretuje sa ako osmiÄkové Äíslo;\n" +" inak je to symbolické oznaÄenie režimu aké prijíma chmod(1).\n" +" \n" +" Voľby:\n" +" -p\tak sa REŽIM vynechá, vypíše výstup v tvare, ktorý je možné\n" +" \tpoužiÅ¥ ako vstup\n" +" -S\tvýpis v symbolickom tvare; inak osmiÄkové Äíslo\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nestalo, že je REŽIM neplatný a nebola zadaná\n" +" neplatná voľba." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"ÄŒakaÅ¥ na dokonÄenie úlohy a vrátiÅ¥ návratovú hodnotu.\n" +" \n" +" PoÄká na proces s identifikátorom ID, Äo môže byÅ¥ PID alebo " +"Å¡pecifikácia\n" +" úlohy a oznámi stav jeho ukonÄenia. Ak nie je ID zadaný, poÄká na " +"vÅ¡etky\n" +" momentálne aktívne detské procesy vo fronte úloh.\n" +" \n" +" Návratová hodnota:\n" +" Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná\n" +" neplatná voľba." + +#: builtins.c:1533 +#, fuzzy +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"ÄŒakaÅ¥ na ukonÄenie zadaného procesu a vypísaÅ¥ jeho návratovú hodnotu.\n" +" \n" +" ÄŒaká na ukonÄenie zadaného procesu a oznámi jeho návratovú\n" +" hodnotu. Ak nie je PID zadané, Äaká sa na vÅ¡etky momentálne\n" +" aktívne procesy potomkov a návratová hodnota je nula.\n" +" PID musí byÅ¥ ID procesu.\n" +" \n" +" Návratová hodnota:\n" +" Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná neplatná\n" +" voľba." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Vykoná množinu príkazov pre každú položku zoznamu.\n" +" \n" +" Cyklus „for“ vykonáva postupnosÅ¥ príkazov pre každú položku v zozname.\n" +" Ak nie je prítomné „in SLOVà ...;“, potom sa predpokladá „in \"$@\"“.\n" +" Pre každý prvok v SLOVÃch sa NÃZOV nastaví na hodnotu položky a\n" +" vykonajú sa PRÃKAZY.\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu posledného vykonaného príkazu." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Aritmetický cyklus for.\n" +" \n" +" Ekvivalent\n" +" \t(( VÃR1 ))\n" +" \twhile (( VÃR2 )); do\n" +" \t\tPRÃKAZY\n" +" \t\t(( VÃR3 ))\n" +" \tdone\n" +" VÃR1, VÃR2 a VÃR3 sú aritmetické výrazy. Ak sa vykoná ktorýkoľvek\n" +" výraz, chovanie je ako by sa vyhodnotil na 1.\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu posledného vykonaného príkazu." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"VybraÅ¥ slová zo zoznamu a vykonaÅ¥ príkazy.\n" +" \n" +" SLOVà sa rozbalia, Äím sa vytvorí zoznam slov. Zoznam slov sa\n" +" vypíše na Å¡tandardný chybový výstup, pred každým z nich Äíslo.\n" +" Ak nie je prítomné „in SLOVÓ, použije sa „in \"$@\"“. Zobrazí sa\n" +" výzva PS3 a naÄíta sa riadok zo Å¡tandardného vstupu. Ak riadok\n" +" pozostáva z Äísla zodpovedajúcemu jednému zo zobrazených slov,\n" +" NÃZOV sa nastaví na dané slovo. Ak je riadok prázdny, SLOVà a\n" +" výzva sa znova zobrazia. Po naÄítaní znaku konca súboru príkaz\n" +" konÄí. NaÄítanie akejkoľvek inej hodnoty spôsobí nastavenie NÃZVU\n" +" na NULL. NaÄítaný riadok sa uloží do premennej ODPOVEÄŽ. PRÃKAZY\n" +" sa vykonajú po každom výbere až kým sa nevykoná príkaz break.\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu posledného vykonaného príkazu." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"OznámiÅ¥ Äas využitý vykonávaním rúry.\n" +" \n" +" VykonaÅ¥ RÚRU a po jej skonÄení vypísaÅ¥ zhrnutie skutoÄného Äasu,\n" +" Äasu CPU a systémového Äasu CPU stráveného vykonaním RÚRY.\n" +" \n" +" Voľby:\n" +" -p\tvypíše zhrnutie Äasov v prenosnom formáte Posix.\n" +" \n" +" Na formátovanie výstupu sa použije hodnota premennej TIMEFORMAT.\n" +" \n" +" Návratová hodnota:\n" +" Návratová hodnota je návratová hodnota RÚRY." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"VykonaÅ¥ príkazy na základe porovnávania vzorov\n" +" \n" +" Selektívne vykonávaÅ¥ PRÃKAZY na základe toho, Äi SLOVO zodpovedá\n" +" VZORu.. „|“ sa použije na oddelenie viacerých vzorov.\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu posledného vykonaného príkazu." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"VykonaÅ¥ príkazy na základe podmienky.\n" +" \n" +" Vykoná sa zoznam „if PRÃKAZY“. Ak je jeho návratová hodnota nula, " +"vykoná\n" +" sa zoznam „then PRÃKAZY“. Inak sa postupne vykoná každý zoznam\n" +" „elif PRÃKAZY“ a ak je jeho návratová hodnota nula, vykoná sa " +"zodpovedajúci\n" +" zoznam „then PRÃKAZY“ a príkaz if skonÄí. Inak sa vykoná „else " +"PRÃKAZY“,\n" +" ak je prítomný. Návratová hodnota celej konÅ¡trukcie je návratová " +"hodnota\n" +" posledného vykonaného príkazu alebo nula ak sa žiadna podmienka\n" +" nevyhodnotila na pravdu.\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu posledného vykonaného príkazu." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"VykonávaÅ¥ príkazy kým podmienka platí.\n" +" \n" +" RozbaliÅ¥ a vykonávaÅ¥ PRÃKAZY pokým posledný príkaz medzi PRÃKAZMI\n" +" „while“ nemá návratovú hodnotu nula.\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu posledného vykonaného príkazu." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"VykonávaÅ¥ príkazy kým podmienka neplatí.\n" +" \n" +" RozbaliÅ¥ a vykonávaÅ¥ PRÃKAZY pokým posledný príkaz medzi PRÃKAZMI\n" +" „until“ nemá nenulovú návratovú hodnotu.\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu posledného vykonaného príkazu." + +#: builtins.c:1671 +#, fuzzy +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"VytvoriÅ¥ koproces s názvom NÃZOV.\n" +" \n" +" Vykoná PRÃKAZ asynchrónne, priÄom Å¡tandardný výstup a vstup príkazu\n" +" spojí rúrou s popsiovaÄmi súborov priradeným indexom poľa 0 a 1\n" +" premennej poľa NÃZOV v spúštajúcom shelli.\n" +" Å tandardný NÃZOV je „COPROC“.\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu PRÃKAZu." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"DefinovaÅ¥ funkciu shellu.\n" +" \n" +" Vytvorí funkciu shellu NÃZOV. KeÄ sa spustí ako jednoduchý príkaz, " +"NÃZOV\n" +" spustí PRÃKAZy v kontexte vulajúceho shellu. KeÄ sa spustí v tvare " +"NÃZOV,\n" +" argumenty sa odovzdajú funkcii ako $1...$n a názov funkcie je " +"$FUNCNAME.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak sa nestalo, že je NÃZOV iba na Äítanie." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"ZoskupiÅ¥ príkazy do jednotky.\n" +" \n" +" SpustiÅ¥ množinu príkazov v skupine. Toto je jeden zo spôsobov ako\n" +" presmerovaÅ¥ celú možinu príkazov.\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu posledného vykonaného príkazu." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"VyhodnotiÅ¥ podmienený výraz.\n" +" \n" +" Ekvivalentné argumentu JOB_SPEC príkazu „fg“ Obnoví beh\n" +" zastavenej úlohy alebo úlohyu bežiacej v pozadí. JOB_SPEC môže\n" +" urÄiÅ¥ buÄ názov alebo Äíslo úlohy. Ak po JOB_SPEC nasleduje „&“, úloha\n" +" sa umiestni do pozadia, ako keby bola Å¡pecifikácia úlohy zadaná ako\n" +" argument príkazu „bg“.\n" +" \n" +" Návratová hodnota:\n" +" Vráti návratovú hodnotu obnovenej úlohy." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"VyhodnotiÅ¥ aritmetický výraz.\n" +" \n" +" VÃRAZ sa vyhodnotí podľa pravidiel aritmetického vyhodnocovania.\n" +" Ekvivalentné s „let VÃRAZ“.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 1 ak sa VÃRAZ vyhodnotí na 0; inak vráti 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"VykonaÅ¥ podmienený výraz.\n" +" \n" +" Vráti 0 alebo 1 v závislosti na vyhodnotení výrazu podmienky VÃRAZ.\n" +" Výrazy sa skladajú z rovnakých zložiek ako pri vstavanom príkaze\n" +" „test“ a je možné ich kombinovaÅ¥ pomocou nasledovných operátorov\n" +" \n" +" \t( VÃRAZ )\tVracia hodnoru výrazu VÃRAZ\n" +" \t! VÃRAZ\tPravdivý, ak je VÃRAZ nepravdivý; inak pravdivý\n" +" \tVÃR1 && VÃR2\tPravdivý ak je VÃR1 a zároveň VÃR2 pravdivý; inak " +"nepravdivý\n" +" \tVÃR1 || VÃR2\tPravdivý ak je VÃR1 alebo VÃR2 pravdivý; inak " +"nepravdivý\n" +" \n" +" Ak sú použité operátory „==“ a „!=“, reÅ¥azec napravo od operátora\n" +" sa použije ako vzor a vykoná sa hľadanie zhody reÅ¥azcov. Operátory\n" +" && a || nevyhodnocujú VÃR2 ak hodnota VÃR1 postaÄuje na urÄenie\n" +" hodnoty výrazu.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 alebo 1 v závislosti na hodnote VÃRAZu." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Bežné názvy premenných shellu a ich použitie\n" +" \n" +" BASH_VERSION\tInformácie o verzii tohto Bash.\n" +" CDPATH\tBodkoÄiarkami oddelený zoznam adresárov, v ktorých sa budú\n" +" \t\thľadaÅ¥ adresáre dané ako argument príkazu „cd“.\n" +" GLOBIGNORE\tBodkoÄiarkami oddelený zoznam vzorov popisujúcich názvy\n" +" \t\tsúborov, ktoré má expanzia názvov ciest ignorovaÅ¥.\n" +" HISTFILE\tNázov súboru, kde je uložená vaÅ¡a história príkazov.\n" +" HISTFILESIZE\tMaximálny poÄet riadkov, ktorý môže obsahovaÅ¥.\n" +" HISTSIZE\tMaximálny poÄet riadkov, su ktorým môže pristupovaÅ¥\n" +" \t\tbežiaci shell.\n" +" HOME\tÚplná cesta k vášmu prihlasovaciemu adresáru.\n" +" HOSTNAME\tNázov stroja, na ktorom sa momentálne nachádzate.\n" +" HOSTTYPE\tTyp procesora, na ktorom beží táto verzia Bash.\n" +" IGNOREEOF\tRiadi ÄinnosÅ¥ shellu po prijatí znaku EOF ako\n" +" \t\tjediného na vstupe. Ak je voľba nastavená, jej hodnota je\n" +" \t\tpoÄet znakov EOF, ktoré budú za sebou prijaté na prázdnom\n" +" \t\triadku predtým, než sa shell ukonÄí (Å¡tandardne 10). Ak voľba\n" +" \t\tNie je nastavená, EOF znaÄí koniec vstupu.\n" +" MACHTYPE\tReÅ¥azec popisujúci systém, na ktorom Bash práve beží.\n" +" MAILCHECK\tAko Äasto v sekundách Bash kontroluje novú poÅ¡tu.\n" +" MAILPATH\tBodkoÄiarkami oddelený zoznam názvov súborov,\n" +" \t\tv ktorých Bash kontroluje novú poÅ¡tu.\n" +" OSTYPE\tVerzia Unixu na ktorej tento Bash beží.\n" +" PATH\tBodkoÄiarkami oddelený zoznam adresárov, v ktorých sa\n" +" \t\tmajú hľadaÅ¥ príkazy.\n" +" PROMPT_COMMAND\tPríkaz, ktorý sa má vykonaÅ¥ pred každým\n" +" \t\tvypísaním primárnej výzvy.\n" +" PS1\t\tReÅ¥azec primárnej výzvy.\n" +" PS2\t\tReÅ¥azec sekundárnej výzvy.\n" +" PWD\t\tPlná cesta k aktuálnemu adresáru.\n" +" SHELLOPTS\tBodkoÄiarkami oddelený zoznam zapnutých volieb shellu.\n" +" TERM\tNázov aktuálneho typu terminálu.\n" +" TIMEFORMAT\tFormát výstupu Å¡tatistiky doby behu, ktorú zobrazuje\n" +" \t\tvyhradené slovo „time“.\n" +" auto_resume\tNenulová hodnota znaÄí príkaz, ktorý keÄ sa vyskytuje na\n" +" \t\tsamostatnom riadku, vyhľadá sa v zozname momentálne\n" +" \t\tzastavených úloh. Ak sa je tam nachádza, úloha sa prenesie do\n" +" \t\tpopredia. Hodnota „exact“ znamená, že slovo príkazu sa musí\n" +" \t\tpresne zhodovaÅ¥ s príkazom v zozname zastavených úloh.\n" +" \t\tHodnota „substring“ znamená, že slovo príkazu sa musí zhodovaÅ¥ s\n" +" \t\tpodreÅ¥azcom úlohy. Akákoľvek iná hodnota znamená, že\n" +" \t\tpríkaz musí byÅ¥ predponou zastavenej úlohy.\n" +" histchars\tZnaky riadiace dopĺňanie histórie a rýchle\n" +" \t\tnahrádzanie. prvý znak je znak nahrádzania z\n" +" \t\thistórie, zvyÄajne „!“. Druhý je znak „rýchleho\n" +" \t\tnahrádzania“, zvyÄajne „^“. Tretí je znak\n" +" \t\t„komentára histórie“, zvyÄajne „#“.\n" +" HISTIGNORE\tBodkoÄiarkami oddelený zoznam vzoriek, ktoré\n" +" \t\tsa používajú na rozhodovanie, Äi sa príkaz uloží do histórie.\n" + +#: builtins.c:1821 +#, fuzzy +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"PridaÅ¥ adresár na zásobník.\n" +" \n" +" Pridá adresár na vrchol zásobníka adresárov alebo ho otoÄí tak, že\n" +" nový vrchol zásobníka sa stane aktuálnym pracovným adresárom.\n" +" Bez argumentov vymení vrchné dva adresáre.\n" +" \n" +" Voľby:\n" +" -n\tpotlaÄí normálnu zmenu adresára pri odstraňovaní položiek\n" +" \tzo zásobníka, takže sa zmení iba zásobník.\n" +" \n" +" Argumenty:\n" +" +N\tOtoÄí zásobník tak, že N-tý adresár (poÄítajúc zľava zoznamu,\n" +" \tktorý zobrazuje „dirs“, poÄínajúc nulou) je na vrchu.\n" +" \n" +" -N\tOtoÄí zásobník tak, že N-tý adresár (poÄítajúc sprava zoznamu,\n" +" \tktorý zobrazuje „dirs“, poÄínajúc nulou) je na vrchu.\n" +" \n" +" adr\tpridá ADR na vrchol zásobníka adresárov, Äím sa tento stane\n" +" \tnovým aktuálnym pracovným adresárom.\n" +" \n" +" Zásobník adresárov môžete zobraziÅ¥ vstavaným príkazom „dirs“.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n" +" chyba pri zmene adresára." + +#: builtins.c:1855 +#, fuzzy +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"OdstrániÅ¥ položky zo zásobníka adresárov.\n" +" \n" +" Odstráni položky zo zásobníka adresárov. Bez argumentov odstráni\n" +" vrchnú položku zo zásobníka a zmení adresár na adresár, ktorý\n" +" sa následne nachádza na vrchu zásobníka.\n" +" \n" +" Voľby:\n" +" -n\tpotlaÄí normálnu zmenu adresára pri odstraňovaní položiek\n" +" \tzo zásobníka, takže sa zmení iba zásobník.\n" +" \n" +" +N\todstráni N-tú položku položku poÄítajúc zľava zoznamu,\n" +" \tktorý zobrazuje „dirs“, poÄínajúc nulou. Napríklad: „popd +0“\n" +" \todstráni prvý adresár, „popd +1“ druhý.\n" +" \n" +" -N\todstráni N-tú položku položku poÄítajúc sprava zoznamu,\n" +" \tktorý zobrazuje „dirs“, poÄínajúc nulou. Napríklad: „popd -0“\n" +" \todstráni posledný adresár, „popd -1“ predposledný.\n" +" \n" +" Zásobník adresárov môžete zobraziÅ¥ príkazom „dirs“.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n" +" chyba pri zmene adresára." + +#: builtins.c:1885 +#, fuzzy +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"ZobraziÅ¥ zoznam momentálne zapamätaných adresárov.\n" +" \n" +" Zobrazí zoznam momentálne zapamätaných adresárov. Adresáre\n" +" sa do zoznamu dostávajú príkazom „pushd“; zo zoznamu ich môžete\n" +" vyberaÅ¥ postupne príkazom „popd“.\n" +" \n" +" Voľby:\n" +" -c\tvyprázdniÅ¥ zásobník adresárov zmazaním vÅ¡etkých položiek.\n" +" -l\tnevypisovaÅ¥ skrátené verzie adresárov vzhľadom na domovský\n" +" \t\trelatívne k vášmu domovskému adresáru\n" +" -p\tvypisovaÅ¥ zásobník adresárov vo formáte jedna položka na riadok\n" +" -v\tvypisovaÅ¥ zásobník adresárov vo formáte jedna položka na\n" +" \t\triadok a pred adresár vypísaÅ¥ jeho pozíciu v zásobníku.\n" +" \n" +" +N\tzobrazuje N-tú položku poÄítajúc zľava zoznamu, ktorý zobrazuje\n" +" \t\tdirs vyvolaný bez volieb, poÄínajúc nulou.\n" +" \n" +" -N\tzobrazuje N-tú položku poÄítajúc sprava zoznamu, ktorý zobrazuje\n" +" \t\tdirs vyvolaný bez volieb, poÄínajúc nulou.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa chyba." + +#: builtins.c:1916 +#, fuzzy +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"NastaviÅ¥ a zruÅ¡iÅ¥ nastavenie volieb shellu.\n" +" \n" +" Zmení nastavenie každej z volieb shellu OPTNAME. Bez akýchkoľvek\n" +" argumentov volieb vypíše vÅ¡etky voľby shellu s oznaÄením, Äi je každá\n" +" z nich nastavená alebo nie.\n" +" \n" +" Voľby:\n" +" -o\tobmedzí OPTNAME na tie, ktoré sú definované na použitie\n" +" \tso „set -o“\n" +" -p\tvypíše každú voľbu shellu s oznaÄením jej stavu\n" +" -q\tpotlaÄí výstup\n" +" -s\tzapnúť (nastaviÅ¥) každú OPTNAME\n" +" -u\tvypnúť (zruÅ¡iÅ¥ nastavenie) každú OPTNAME\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak je OPTNAME zapnuté; zlyhá ak bola zadaná\n" +" neplatná voľba alebo OPTNAME je vypnuté." + +#: builtins.c:1937 +#, fuzzy +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formátuje a vypisuje ARGUMENTY podľa FORMÃTu.\n" +" \n" +" Voľby:\n" +" -v PREM\tpriradiÅ¥ výstup premennej shellu PREM namiesto\n" +" \t\tzobrazenia na Å¡tandarný výstup\n" +" \n" +" FORMÃT je reÅ¥azec znakov, ktorý obsahuje tri typy objektov: Äisté " +"znaky,\n" +" ktoré sa jednoducho skopírujú na Å¡tandardný výstup, únikové klauzuly,\n" +" ktoré sa nahradia zodpovedajúcim výstupom a skopírujú na Å¡tandardný\n" +" výstup a Å¡pecifikácie formátu, z ktorých každá spôsobí vypísanie\n" +" nasledovného argumentu.\n" +" \n" +" Okrem Å¡tandardných formátov popísaných v printf(1) a printf(3)\n" +" printf rozoznáva:\n" +" \n" +" %b\trozšíriÅ¥ únikové klauzuly backspace v zodpovedajúcom argumente\n" +" %q\tdaÅ¥ argument do zátvoriek tak, aby ho bolo možné použiÅ¥ ako\n" +" \tvstup shellu.\n" +" %(fmt)T vyspísaÅ¥ reÅ¥acez dátumu a Äasu, ktorý vznikne použitím FMT\n" +" ako formátovacieho reÅ¥azca pre strftime(3)\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba pri\n" +" zápise Äi priradení." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Definuje ako má Readline dopĺňaÅ¥ argumenty.\n" +" \n" +" Pre každý NÃZOV uviesÅ¥ ako sa majú dopĺňaÅ¥ argumenty. Ak nie sú zadané\n" +" žiadne argumenty, vypíšu sa existujúce dopĺňania v takom tvare, ktorý\n" +" je možné znova použiÅ¥ ako vstup.\n" +" \n" +" Voľby:\n" +" -p\tvypísaÅ¥ existujúce Å¡pecifikácie dopĺňania v znovapoužiteľnom\n" +" \ttvare\n" +" -r\todstrániÅ¥ Å¡pecifikáciu dopĺňania každého NÃZVU alebo ak nie je\n" +" \tzadaný žiadny NÃZOV, vÅ¡etky Å¡pecifikácie dopĺňania\n" +" -D\tpoužiÅ¥ dopĺňanie a operácie ako predvolené pre príkazy\n" +" \tbez definovaného konkrétneho dopĺňania\n" +" -E\tpoužiÅ¥ dopĺňanie a operácie pre príkazy „empty“ --\n" +" \tpokus o dopĺňanie na prázdnom príkazovom riadku\n" +" \n" +" Pri pokuse o doplnenie sa operácie použijú v poradí hore uvedených\n" +" volieb veľkými písmenami.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"ZobraziÅ¥ možné dokonÄenie v závislosti na voľbách.\n" +" \n" +" Slúži na použitie z shell funkcií tvoriacich možné dokonÄenia\n" +" Ak je daný voliteľný parameter SLOVO, tvoria sa zhody so SLOVOm.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." + +#: builtins.c:2016 +#, fuzzy +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"ZmeniÅ¥ alebo zobraziÅ¥ voľby dopĺňania.\n" +" \n" +" Zmení voľby dopĺňania pre každý NÃZOV alebo ak nie je zadaný žiadny\n" +" NÃZOV pre momentálne vykonávané dopĺňanie. Ak nie sú zadané žiadne\n" +" voľby, vypíše Å¡pecifikácie dopĺňania pre každý NÃZOV alebo pre\n" +" momentálne vykonávané dopĺňanie.\n" +" \n" +" Voľby:\n" +" \t-o voľba\tNastaví voľbu dopĺňania VOĽBA pre každý NÃZOV\n" +" \t-D\t\tZmení voľby dopĺňania príkazov „default“\n" +" \t-E\t\tZmení voľby dopĺňania príkazov „empty“\n" +" \n" +" Použitím „+o“ namiesto „-o“ vypnete urÄenú voľbu.\n" +" \n" +" Argumenty:\n" +" \n" +" Každý NÃZOV odkazuje na príkaz, pre ktorý musela byÅ¥ vopred definovaná\n" +" Å¡pecifikácia dopĺňania pomocou vstavaného príkazu „complete“. Ak nie sú\n" +" zadané žiadne NÃZVY, compopt musí byÅ¥ volaný priamo funkciou, ktorá\n" +" práve tvorí dopĺňanie a voľby generátora momentálne vykonávaného\n" +" dopĺňania sa zmenia.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba a NÃZOV nemá definovanú\n" +" Å¡pecifikáciu dopĺňania." + +#: builtins.c:2047 +#, fuzzy +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"NaÄítaÅ¥ riadky zo Å¡tandardného vstupu do premennej indexovaného poľa.\n" +" \n" +" NaÄíta riadky zo Å¡tandardného vstupu do premennej poľa POLE alebo z\n" +" popisovaÄa súboru FD ak je zadaná voľba -u. Å tandardné POLE je premenná\n" +" MAPFILE.\n" +" \n" +" Voľby:\n" +" -n poÄet\tSkopírovaÅ¥ najviac POÄŒET riadkov. Ak je POÄŒET 0, vÅ¡etky " +"riadky.\n" +" -O zaÄiatok\tZaÄaÅ¥ priraÄovanie položiek POĽA na indexe ZAÄŒIATOK.\n" +" \t\tPredvolený index je 0.\n" +" -s poÄet\tIgnorovaÅ¥ prvých preÄítaných POÄŒET riadkov.\n" +" -t\t\tOdstrániÅ¥ znak nového riadka z konca každého naÄítaného riadka.\n" +" -u fd\t\tNaÄítaÅ¥ riadky z popisovaÄa FD namiesto Å¡tandardného vstupu.\n" +" -C callback\tVyhodnotiÅ¥ CALLBACK po preÄítaní každých QUANTUM " +"riadkov.\n" +" -c quantum\tUrÄuje poÄet riadkov, ktoré sa majú preÄítaÅ¥ pred každým\n" +" \t\tvolaním CALLBACK.\n" +" \n" +" Argumenty:\n" +" ARRAY\t\tNázov premennej poľa, kam sa majú uložiÅ¥ údaje.\n" +" \n" +" Ak uvediete -C bez -c, predvolená hodnota quantum je 5000.\n" +" Pri vyhodnotení CALLBACK sa dodá index ÄalÅ¡ieho prvku poľa,\n" +" ktorý sa má priradiÅ¥ ako Äalší argument.\n" +" \n" +" Ak nie je zadaný ZAÄŒIATOK explicitne, mapfile POLE vyÄistí predtým,\n" +" než ho zaÄne plniÅ¥.\n" +" \n" +" Návratová hodnota:\n" +" Vráti 0 ak nebola zadaná neplatná voľba a POLE nie je len na Äítanie a\n" +" nie je to indexované pole." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"NaÄítaÅ¥ riadky zo súboru do premennej poľa.\n" +" \n" +" Synonymum k „mapfile“." + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Vracia kontext aktuálneho volania podprocedúry.\n" +#~ " \n" +#~ " Bez EXPR, vracia " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: proces %5ld (%s) v the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Neznáme Äíslo signálu" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licencia GPLv2+: GNU GPL verzie 2 alebo novÅ¡ia http://gnu.org/licenses/" +#~ "gpl.html\n" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "pravda" + +#~ msgid "false" +#~ msgstr "nepravda" + +#~ msgid "times" +#~ msgstr "-krát" + +#~ msgid "" +#~ ". With EXPR, returns\n" +#~ " " +#~ msgstr "" +#~ ". S VÃR vracia\n" +#~ " " + +#~ msgid "" +#~ "; this extra information can be used to\n" +#~ " 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." +#~ msgstr "" +#~ "; tieto informácie naviac možno použiÅ¥ na\n" +#~ " trasovania zásobníka.\n" +#~ " \n" +#~ " Hodnota VÃR znaÄí o koľko rámcov sa vrátiÅ¥ pred súÄasný\n" +#~ " Vrchný rámec je rámec 0." + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: nie je možné realokovaÅ¥ %lu bajtov (%lu bajtov alokovaných)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: nie je možné alokovaÅ¥ %lu bajtov" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: %s:%d: nie je možné realokovaÅ¥ %lu bajtov (%lu bajtov " +#~ "alokovaných)" + +#~ msgid " " +#~ msgstr " " + +#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +#~ msgstr "Bez VÃR, vráti „$line $filename“. S VÃR," + +#~ msgid "returns \"$line $subroutine $filename\"; this extra information" +#~ msgstr "vráti „$line $subroutine $filename“; túto informáciu" + +#~ msgid "can be used used to provide a stack trace." +#~ msgstr "je možné využiÅ¥ pre trasovanie zásobníka." + +#~ msgid "" +#~ "The value of EXPR indicates how many call frames to go back before the" +#~ msgstr "Hodnota VÃR urÄuje o koľko rámcov volania sa vrátiÅ¥" + +#~ msgid "current one; the top frame is frame 0." +#~ msgstr "pred aktuálny; najvyšší rámec má Äíslo 0." + +#~ msgid "%s: invalid number" +#~ msgstr "%s: neplatné Äíslo" + +#~ msgid "Shell commands matching keywords `" +#~ msgstr "Príkazy shellu zodpovedajúce kľúÄovým slovám „" + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "ZobraziÅ¥ zoznam momentálne zapamätaných adresárov. Adresáre" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "sa do zoznamu dostanú príkazom „pushd“; späť hore v zozname" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "sa môžete dostaÅ¥ príkazom „popd“." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "Voľba -l hovorí, že „dirs“ by nemal vypísovaÅ¥ skrátené verzie" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "" +#~ "adresárov, ktoré sa vzÅ¥ahujú k vášmu domovskému adresáru. To znamená," + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "že „~/bin“ sa može zobraziÅ¥ ako „/homes/bfox/bin“. Voľba -v" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "" +#~ "hovorí, aby „dirs“ vypísal zásobník adresárov s jednou položkou na riadok," + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "a pred názov adresára vypísal jeho polohu v zásobníku. Voľba -p" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "robí presne to isté, len sa nepridáva poloha v zásobníku." + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "Voľba -c Äistí zásobník adresárov odstránením vÅ¡etkých prvkov." + +#~ msgid "" +#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgstr "+N zobrazí N-tú položku zľava zoznamu zobrazenú pomocou" + +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr " dirs vyvolaného bez volieb, poÄínajúc nulou." + +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "+N zobrazí N-tú položku sprava zoznamu zobrazenú pomocou" + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "Pridá adresár na vrch zásobníka adresárov alebo otoÄí" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "zásobník, Äím aktuálny pracovný adresár bude na vrchu" + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "zásobníka. Bez argumentov vymení vrchné dva adresáre." + +#~ msgid "+N Rotates the stack so that the Nth directory (counting" +#~ msgstr "+N OtoÄí zásobník tak, že N-tý adresár (poÄítajúc" + +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr " zľava zoznamu, ktorý vráti „dirs“, poÄínajúc nulou)" + +#~ msgid " zero) is at the top." +#~ msgstr " je na vrchu." + +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "-N OtoÄí zásobník tak, že N-tý adresár (poÄítajúc" + +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr " sprava zoznamu, ktorý vráti „dirs“, poÄínajúc nulou)" + +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "-n potlaÄiÅ¥ normálnu zmenu adresára pri pridávaní adresárov" + +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr " na zásobník, takže sa zmení iba zásobník." + +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "dir pridá DIR na vrch zásobníka adreárov, Äím ho uÄiní" + +#~ msgid " new current working directory." +#~ msgstr " novým aktuálnym adresárom." + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "Zásobník adresárov môžete zobraziÅ¥ príkazom „dirs“." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Odstráni položky zo zásobníka adresárov. Bez argumentov" + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "odstráni vrchný adresár zo zásobníka a zmení aktuálny adresár" + +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "+N Odstráni N-túä položku (poÄítajúc zľava zoznamu," + +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr " ktorý vráti „dirs“, poÄínajúc nulou). Napríklad: „popd +0“" + +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr " odstráni prvý adresár, „popd +1“ druhý." + +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "-N Odstráni N-túä položku (poÄítajúc sprava zoznamu," + +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr " ktorý vráti „dirs“, poÄínajúc nulou). Napríklad: „popd -0“" + +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr " odstráni posledný adresár, „popd -1“ predposledný." + +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "-n potlaÄiÅ¥ normálnu zmenu adresára pri odoberaní adresárov" + +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr " zo zásobníka, takže sa zmení iba zásobník." + +#~ msgid "allocated" +#~ msgstr "alokované" + +#~ msgid "freed" +#~ msgstr "uvoľnené" + +#~ msgid "requesting resize" +#~ msgstr "žiadam o zmenu veľkosti" + +#~ msgid "just resized" +#~ msgstr "veľkosÅ¥ bola práve zmenená" + +#~ msgid "bug: unknown operation" +#~ msgstr "chyba: neznáma operácia" + +#~ msgid "malloc: watch alert: %p %s " +#~ msgstr "malloc: upozornenie sledovania: %p %s " + +#~ msgid "" +#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "" +#~ "VyskoÄí zvnútra cyklu FOR, WHILE alebo UNTIL. Ak je uvedené N,\n" +#~ " vyskoÄí o N úrovní." + +#~ msgid "" +#~ "Run a shell builtin. This is useful when you wish to rename a\n" +#~ " shell builtin to be a function, but need the functionality of the\n" +#~ " builtin within the function itself." +#~ msgstr "" +#~ "Spustí vstavaný príkaz (builtin) shellu. Toto je užitoÄné, keÄ\n" +#~ " chcete premenovaÅ¥ vstavaný príkaz shellu na funkciu, ale\n" +#~ " potrebujete funkcionalitu samotného vstavaného príkazu\n" +#~ " vnútri funkcie." + +#~ msgid "" +#~ "Print the current working directory. With the -P option, pwd prints\n" +#~ " the physical directory, without any symbolic links; the -L option\n" +#~ " makes pwd follow symbolic links." +#~ msgstr "" +#~ "Vypíše aktuálny pracovný adresár. S voľbou -P pwd vypíše\n" +#~ " fyzický adresár bez symbolických odkazov; s voľbou -L\n" +#~ " bude pwd nasledovaÅ¥ symbolické odkazy." + +#~ msgid "Return a successful result." +#~ msgstr "Vráti úspeÅ¡ný výsledok." + +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell\n" +#~ " function called `ls', and you wish to call the command `ls', you can\n" +#~ " say \"command ls\". If the -p option is given, a default value is " +#~ "used\n" +#~ " for PATH that is guaranteed to find all of the standard utilities. " +#~ "If\n" +#~ " the -V or -v option is given, a string is printed describing " +#~ "COMMAND.\n" +#~ " The -V option produces a more verbose description." +#~ msgstr "" +#~ "Spustí PRÃKAZ s ARG ignorujúc funkcie shellu. Ak máte funkciu shellu\n" +#~ " zvanú „ls“ a chcete zavolaÅ¥ príkaz „ls“, môžete napísaÅ¥\n" +#~ " „command ls“. Ak je zadaná voľba -p, použije sa Å¡tandardná hodnota\n" +#~ " PATH, ktorá zaruÄene nájde vÅ¡etky Å¡tandardné nástroje. Ak je zadaná\n" +#~ " voľba -V alebo -v, vypíše sa popis PRÃKAZU.\n" +#~ " Voľba -V poskytuje podrobnejší výstup." + +#~ msgid "" +#~ "Declare variables and/or give them attributes. If no NAMEs are\n" +#~ " given, then display the values of variables instead. The -p option\n" +#~ " will display the attributes and values of each NAME.\n" +#~ " \n" +#~ " The flags are:\n" +#~ " \n" +#~ " -a\tto make NAMEs arrays (if supported)\n" +#~ " -f\tto select from among function names only\n" +#~ " -F\tto display function names (and line number and source file name " +#~ "if\n" +#~ " \tdebugging) without definitions\n" +#~ " -i\tto make NAMEs have the `integer' attribute\n" +#~ " -r\tto make NAMEs readonly\n" +#~ " -t\tto make NAMEs have the `trace' attribute\n" +#~ " -x\tto make NAMEs export\n" +#~ " \n" +#~ " Variables with the integer attribute have arithmetic evaluation (see\n" +#~ " `let') done when the variable is assigned to.\n" +#~ " \n" +#~ " When displaying values of variables, -f displays a function's name\n" +#~ " and definition. The -F option restricts the display to function\n" +#~ " name only.\n" +#~ " \n" +#~ " Using `+' instead of `-' turns off the given attribute instead. " +#~ "When\n" +#~ " used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "" +#~ "Deklaruje premenné a/alebo im dodá argumenty. Ak nie sú zadané\n" +#~ " NÃZVY, zobraziÅ¥ hodnoty premenných. Voľba -p zobrazí atribúty\n" +#~ " a hotnoty každého NÃZVU.\n" +#~ " \n" +#~ " Príznaky sú:\n" +#~ " \n" +#~ " -a\tna vytvorenie polí NÃZVOV (ak sú podporované)\n" +#~ " -f\tna výber iba spomedzi názvov funkcií\n" +#~ " -F\tna zobrazenie názvov funkcií (a Äísla riadku a zdrojového " +#~ "súboru\n" +#~ " \tpre ladenie) bez definícií\n" +#~ " -i\taby mali NÃZVY atribút „integer“\n" +#~ " -r\taby boli NÃZVY len na Äítanie\n" +#~ " -t\taby mali NÃZVY atribút „trace“\n" +#~ " -x\taby sa NÃZVY exportovali\n" +#~ " \n" +#~ " Premenné s atribútom integer vykonávajú aritmetické vyhodnocovanie " +#~ "(pozri\n" +#~ " „let“) po priradení výrazu premennej.\n" +#~ " \n" +#~ " Pri zobrazovaní hodnôt premenných, -f zobrazí názov a definíciu\n" +#~ " funkcie. Voľba -F obmedzí zobrazovanie iba na názov funkcie.\n" +#~ " \n" +#~ " Pomocou „+“ namiesto „-“ sa vypína daný atribút. KeÄ sa použije vo\n" +#~ " funkcii, spôsobí lokálnosÅ¥ NÃZVOV ako pri príkaze „local“ command." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Zastaralé. Pozri „declare“." + +#~ msgid "" +#~ "Create a local variable called NAME, and give it VALUE. LOCAL\n" +#~ " can only be used within a function; it makes the variable NAME\n" +#~ " have a visible scope restricted to that function and its children." +#~ msgstr "" +#~ "Vytvorí lokálnu premennú s NÃZVOM a priradí jej HODNOTU. LOCAL\n" +#~ " je možné použiÅ¥ iba v rámci funkcie; spôsobí obmedzenie viditeľnosti\n" +#~ " premennej NÃZOV iba na túto funkciu a jej potomkov." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Vypíše ARGumenty. S voľbou -n bude posledný znak nového riadka potlaÄený." + +#~ msgid "" +#~ "Enable and disable builtin shell commands. This allows\n" +#~ " you to use a disk command which has the same name as a shell\n" +#~ " builtin without specifying a full pathname. If -n is used, the\n" +#~ " NAMEs become disabled; otherwise NAMEs are enabled. For example,\n" +#~ " to use the `test' found in $PATH instead of the shell builtin\n" +#~ " version, type `enable -n test'. On systems supporting dynamic\n" +#~ " loading, the -f option may be used to load new builtins from the\n" +#~ " shared object FILENAME. The -d option will delete a builtin\n" +#~ " previously loaded with -f. If no non-option names are given, or\n" +#~ " the -p option is supplied, a list of builtins is printed. The\n" +#~ " -a option means to print every builtin with an indication of whether\n" +#~ " or not it is enabled. The -s option restricts the output to the " +#~ "POSIX.2\n" +#~ " `special' builtins. The -n option displays a list of all disabled " +#~ "builtins." +#~ msgstr "" +#~ "Zapína a vypína vstavené (builtin) príkazy shellu. Toto vám umožní\n" +#~ " použiÅ¥ príkaz s rovnakým názvom ako má vstavaný príkaz shellu\n" +#~ " bez toho, aby ste uvádzali plnú cestu. S voľbou -n budú NÃZVY\n" +#~ " vypnuté; inak budú NÃZVY zapnuté. Napríklad ak chcete použiÅ¥\n" +#~ " „test“, ktorý sa nachádza v $PATH namiesto vstavaného príkazu,\n" +#~ " napíšte „enable -n test“. Na systémoch, ktoré podporujú dynamické\n" +#~ " nahrávanie je možné použiÅ¥ voľbu -f na naÄítanie nových vstavaných\n" +#~ " príkazov zo zdieľaného objektu NÃZOVSÚBORU. Voľba -d zmaže\n" +#~ " vstavaný príkaz, ktorý bol predtým naÄítaný pomocou -f. Ak nie sú\n" +#~ " zadané žiadne názvy okrem volieb alebo je zadaná voľba -p , vypíše\n" +#~ " sa zoznam vstavaných príkazov. Voľba -a znamená, že sa má vypísaÅ¥\n" +#~ " každý vstavaný príkaz a Äi je zapnutý alebo vypnutý. Voľba -s " +#~ "obmedzí\n" +#~ " výstup na POSIX.2 „special“ vstavané príkazy. Voľba -n zobrazí " +#~ "zoznam\n" +#~ " vÅ¡etkých vypnutých vstavaných príkazov." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "PreÄíta ARGumenty ako vstup do shellu a vykoná výsledné príkazy." + +#~ msgid "" +#~ "Exec FILE, replacing this shell with the specified program.\n" +#~ " If FILE is not specified, the redirections take effect in this\n" +#~ " shell. If the first argument is `-l', then place a dash in the\n" +#~ " zeroth arg passed to FILE, as login does. If the `-c' option\n" +#~ " is supplied, FILE is executed with a null environment. The `-a'\n" +#~ " option means to make set argv[0] of the executed process to NAME.\n" +#~ " If the file cannot be executed and the shell is not interactive,\n" +#~ " then the shell exits, unless the shell option `execfail' is set." +#~ msgstr "" +#~ "Vykoná SÚBOR, priÄom nahradí tento shell uvedeným programom.\n" +#~ " Ak SÚBOR nie je zadaný, presmerovania sa uskutoÄnia v tomto\n" +#~ " shelli. Ak je prvý argument „-l“, potom dá znak spojovník do\n" +#~ " nultého arg, ktorý sa dáva SÚBORU, tak ako to robí login. Ak sa\n" +#~ " zadá voľba „-c“, SÚBOR sa vykoná s null prostredím. Voľba „-a“\n" +#~ " znamená nastaviľ argv[0] vykonávaného procesu na NÃZOV.\n" +#~ " Ak súbor nie je možné vykonaÅ¥ a shell nie je interaktívny, potom,\n" +#~ " shell skonÄí, ak nie je nastavená voľba „execfail“." + +#~ msgid "Logout of a login shell." +#~ msgstr "OdhlásiÅ¥ sa z login shelu." + +#~ msgid "" +#~ "For each NAME, the full pathname of the command is determined and\n" +#~ " remembered. If the -p option is supplied, PATHNAME is used as the\n" +#~ " full pathname of NAME, and no path search is performed. The -r\n" +#~ " option causes the shell to forget all remembered locations. The -d\n" +#~ " option causes the shell to forget the remembered location of each " +#~ "NAME.\n" +#~ " If the -t option is supplied the full pathname to which each NAME\n" +#~ " corresponds is printed. If multiple NAME arguments are supplied " +#~ "with\n" +#~ " -t, the NAME is printed before the hashed full pathname. The -l " +#~ "option\n" +#~ " causes output to be displayed in a format that may be reused as " +#~ "input.\n" +#~ " If no arguments are given, information about remembered commands is " +#~ "displayed." +#~ msgstr "" +#~ "Pre každý NÃZOV sa urÄí a zapamätá plná cesta k príkazu. Ak je daná voľba " +#~ "-p\n" +#~ " CESTA sa použije ako plná cesta k NÃZOV a nevykoná sa hľadanie " +#~ "cesty.\n" +#~ " Voľba -r spôsobí, že shell zabudne vÅ¡etky zapamätané miesta.\n" +#~ " Voľba -d spôsobí, že shell zabudne zapamätané miesto každého NÃZVU.\n" +#~ " Ak je zadaná voľba -t, vypíše sa plná cesta zodpovedajúca každému\n" +#~ " NÃZVU. Ak sú s voľbou -t uvedené viaceré argumenty NÃZOV, pred\n" +#~ " plnou cestou sa vypíše NÃZOV. Voľba -l vypíše výstup vo forme, ktorú\n" +#~ " je možné znova použiÅ¥ ako vstup. Ak nie sú zadané žiadne argumenty,\n" +#~ " zobrazia sa informácie o zapamätaných príkazoch." + +#~ msgid "" +#~ "Display helpful information about builtin commands. If PATTERN is\n" +#~ " specified, gives detailed help on all commands matching PATTERN,\n" +#~ " otherwise a list of the builtins is printed. The -s option\n" +#~ " restricts the output for each builtin command matching PATTERN to\n" +#~ " a short usage synopsis." +#~ msgstr "" +#~ "Zobrazí užitoÄné informácie o vstavaných (builtin) príkazoch. Ak je\n" +#~ " uvedený VZOR, poskytne podrobné informácie o vÅ¡etkých príkazoch\n" +#~ " zodpovedajúcich VZORU. Inak sa vypíše zoznam vstavaných príkazov.\n" +#~ " Voľba -s obmedzí výstup pre každý príkaz zodpovedajúci VZORU na\n" +#~ " krátke zhrnutie použitia." + +#~ msgid "" +#~ "By default, removes each JOBSPEC argument from the table of active jobs.\n" +#~ " If the -h option is given, the job is not removed from the table, but " +#~ "is\n" +#~ " marked so that SIGHUP is not sent to the job if the shell receives a\n" +#~ " SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove " +#~ "all\n" +#~ " jobs from the job table; the -r option means to remove only running " +#~ "jobs." +#~ msgstr "" +#~ "Å tandardne odstráni argument JOBSPEC z tabuľky aktívnych úloh.\n" +#~ " Ak je uvedená voľba „-h“, úloha sa neodstráni z tabuľky, ale oznaÄí " +#~ "sa\n" +#~ " tak, že SIGHUP sa nepoÅ¡le úlohe, ak shell dostane SIGHUP. Voľba „-a“\n" +#~ " bez uvedenej JOBSPEC znamená odstránenie vÅ¡etkých úloh z tabuľky\n" +#~ " úloh; voľba „-r“ znamená odstrániÅ¥ iba bežiace úlohy." + +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N\n" +#~ " is omitted, the return status is that of the last command." +#~ msgstr "" +#~ "Spôsobí, že sa funkcia ukonÄí s návratovou hodnotou N. Ak N\n" +#~ " vynecháte, vráti sa návratová hodnota posledného vykonaného\n" +#~ " príkazu." + +#~ msgid "" +#~ "For each NAME, remove the corresponding variable or function. Given\n" +#~ " the `-v', unset will only act on variables. Given the `-f' flag,\n" +#~ " unset will only act on functions. With neither flag, unset first\n" +#~ " tries to unset a variable, and if that fails, then tries to unset a\n" +#~ " function. Some variables cannot be unset; also see readonly." +#~ msgstr "" +#~ "Pre každý NÃZOV odstráni zodpovedajúcu premennú alebo funkciu.\n" +#~ " Ak je zadaný prepínaÄ â€ž-v“, unset bude úÄinkovaÅ¥ iba na premenné.\n" +#~ " Ak je zadaný prepínaÄ â€ž-t“, unset bude úÄinkovaÅ¥ iba na funkcie.\n" +#~ " Bez prepínaÄov sa unset pokúsi najprv zruÅ¡iÅ¥ nastavenie premennej\n" +#~ " a ak to zlyhá, pokúsi sa zruÅ¡iÅ¥ nastavenie funkcie.\n" +#~ " Niektoré premenné nemožno zruÅ¡iÅ¥; pozri aj readonly." + +#~ msgid "" +#~ "NAMEs are marked for automatic export to the environment of\n" +#~ " subsequently executed commands. If the -f option is given,\n" +#~ " the NAMEs refer to functions. If no NAMEs are given, or if `-p'\n" +#~ " is given, a list of all names that are exported in this shell is\n" +#~ " printed. An argument of `-n' says to remove the export property\n" +#~ " from subsequent NAMEs. An argument of `--' disables further option\n" +#~ " processing." +#~ msgstr "" +#~ "NÃZVY sa oznaÄia na automatický export do prostredia následne\n" +#~ " vykonaných príkazov. Ak je zadaná voľba -f, NÃZVY odkazujú na\n" +#~ " funkcie. Ak nezadáte žiadne NÃZVY alebo zadáte voľbu „-p“,\n" +#~ " vypíše sa zoznam vÅ¡etkých názvov, ktoré sú exportované v tomto\n" +#~ " shelli. Argument „-n“ hovorí, že sa má odstrániÅ¥ vlastnosÅ¥ export z\n" +#~ " nasledujúcich NÃZVOV. Argument „--“ vypína spracovanie Äalších\n" +#~ " volieb." + +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may\n" +#~ " not be changed by subsequent assignment. If the -f option is given,\n" +#~ " then functions corresponding to the NAMEs are so marked. If no\n" +#~ " arguments are given, or if `-p' is given, a list of all readonly " +#~ "names\n" +#~ " is printed. The `-a' option means to treat each NAME as\n" +#~ " an array variable. An argument of `--' disables further option\n" +#~ " processing." +#~ msgstr "" +#~ "Zadané NÃZVY sa oznaÄia iba na Äítanie a hodnoty týchto NÃZVOV nebude\n" +#~ " možné zmeniÅ¥ Äalším priradením. Ak je zadaná voľba -f, oznaÄia sa " +#~ "takto\n" +#~ " funkcie zodpovedajúce NÃZVU. Ak nie sú zadané žiadne argumenty alebo\n" +#~ " je zadané „-p“, vypíše sa zoznam vÅ¡etkých názvov len na Äítanie. " +#~ "Voľba „-a“\n" +#~ " znamená, že sa každá premenná NÃZOV bude považovaÅ¥ za pole. Argument\n" +#~ " „--“ vypína spracovanie Äalších volieb." + +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" +#~ " not given, it is assumed to be 1." +#~ msgstr "" +#~ "PoziÄné parametre od $N+1 ... sa premenujú na $1 ... Ak\n" +#~ " neuvediete N, predpokladá sa 1." + +#~ msgid "" +#~ "Suspend the execution of this shell until it receives a SIGCONT\n" +#~ " signal. The `-f' if specified says not to complain about this\n" +#~ " being a login shell if it is; just suspend anyway." +#~ msgstr "" +#~ "OdstaviÅ¥ vykonávanie tohto shellu, kým nedostane signál\n" +#~ " SIGCONT. Zadanie voľby „-f“ hovorí, že sa shell nemá sÅ¥ažovaÅ¥,\n" +#~ " ak je prihlasovací a napriek tomu sa má odhlásiÅ¥." + +#~ msgid "" +#~ "Print the accumulated user and system times for processes run from\n" +#~ " the shell." +#~ msgstr "" +#~ "VypísaÅ¥ kumulatívne používateľské a systémové Äasy procesov\n" +#~ " spustených zo shellu." + +#~ msgid "" +#~ "For each NAME, indicate how it would be interpreted if used as a\n" +#~ " command name.\n" +#~ " \n" +#~ " If the -t option is used, `type' outputs a single word which is one " +#~ "of\n" +#~ " `alias', `keyword', `function', `builtin', `file' or `', if NAME is " +#~ "an\n" +#~ " alias, shell reserved word, shell function, shell builtin, disk " +#~ "file,\n" +#~ " or unfound, respectively.\n" +#~ " \n" +#~ " If the -p flag is used, `type' either returns the name of the disk\n" +#~ " file that would be executed, or nothing if `type -t NAME' would not\n" +#~ " return `file'.\n" +#~ " \n" +#~ " If the -a flag is used, `type' displays all of the places that " +#~ "contain\n" +#~ " an executable named `file'. This includes aliases, builtins, and\n" +#~ " functions, if and only if the -p flag is not also used.\n" +#~ " \n" +#~ " The -f flag suppresses shell function lookup.\n" +#~ " \n" +#~ " The -P flag forces a PATH search for each NAME, even if it is an " +#~ "alias,\n" +#~ " builtin, or function, and returns the name of the disk file that " +#~ "would\n" +#~ " be executed." +#~ msgstr "" +#~ "Pre každý NÃZOV urÄí ako by sa interpretoval, keby sa použil ako\n" +#~ " názov príkazu.\n" +#~ " \n" +#~ " Ak je použitá voľba -t, „type“ vypíše jediné slovo, ktoré je jedno z\n" +#~ " „alias“, „keyword“, „function“, „builtin“, „file“ alebo „“, ak NÃZOV\n" +#~ " je alias, vyhradené slovo shellu, funkcia shellu, vstavaný príkaz " +#~ "shellu,\n" +#~ " súbor na disku resp. nezistený typ.\n" +#~ " \n" +#~ " Ak je použitá voľba -p, „type“ vypíše buÄ názov súboru na disku,\n" +#~ " ktorý by sa vykonal alebo niÄ ak by „type -t NÃZOV“ nevrátilo\n" +#~ " „file“.\n" +#~ " \n" +#~ " Ak je použitá voľba -a, „type“ vypíše vÅ¡etky miesta, ktoré obsahujú\n" +#~ " spustiteľný súbor s názvom Ak je použitá voľba -t, „file“. Sem " +#~ "patria\n" +#~ " aliasy, vstavané premenné a funkcie ak a iba ak nie je zároveň " +#~ "zadaný\n" +#~ " prepínaÄ -p.\n" +#~ " \n" +#~ " Voľba -f potlaÄí vyhľadávanie funkcií shellu.\n" +#~ " \n" +#~ " Voľba -P vynúti vyhľadanie každého NÃZVU v ceste (premenná PATH),\n" +#~ " aj ak je to alias, vstavaný príkaz shellu alebo funkcia a vráti " +#~ "názov\n" +#~ " súboru na disku, ktorý by sa vykonal." + +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if\n" +#~ " `-S' is supplied, the current value of the mask is printed. The `-" +#~ "S'\n" +#~ " option makes the output symbolic; otherwise an octal number is " +#~ "output.\n" +#~ " If `-p' is supplied, and MODE is omitted, the output is in a form\n" +#~ " that may be used as input. If MODE begins with a digit, it is\n" +#~ " interpreted as an octal number, otherwise it is a symbolic mode " +#~ "string\n" +#~ " like that accepted by chmod(1)." +#~ msgstr "" +#~ "Používateľská maska pre tvorbu súborov sa nastaví na REŽIM. Ak\n" +#~ " vynecháte REŽIM alebo zadáte „-S“, vypíše sa aktuálna hodnota masky.\n" +#~ " Voľba „-S“ vypisuje symbolický výstup; inak sa vypisuje Äíslo v " +#~ "osmiÄkovej\n" +#~ " sústave. Ak je zadaná voľba „-p“ a REŽIM sa vynechá, výstup je v " +#~ "tvare,\n" +#~ " ktorý je možné použiÅ¥ ako vstup. Ak REŽIM zaÄína Äíslicou, " +#~ "interpretuje sa\n" +#~ " ako Äíslo v osmiÄkovej sústave, inak je to symbolický reÅ¥azec " +#~ "režimu,\n" +#~ " v tvare, aký prijíma chmod(1)." + +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If\n" +#~ " N is not given, all currently active child processes are waited for,\n" +#~ " and the return code is zero. N is a process ID; if it is not given,\n" +#~ " all child processes of the shell are waited for." +#~ msgstr "" +#~ "ÄŒakaÅ¥ na ukonÄenie zadaného procesu a vypísaÅ¥ jeho návratovú\n" +#~ " hodnotu. Ak nie je N zadané, Äaká sa na vÅ¡etky momentálne\n" +#~ " aktívne procesy potomkov a návratová hodnota je nula. N je\n" +#~ " ID procesu; ak nie je zadaný, Äaká sa na ukonÄenie vÅ¡etkých\n" +#~ " procesov potomkov shellu." + +#~ msgid "" +#~ "Create a simple command invoked by NAME which runs COMMANDS.\n" +#~ " Arguments on the command line along with NAME are passed to the\n" +#~ " function as $0 .. $n." +#~ msgstr "" +#~ "VytvoriÅ¥ jednoduchý príkaz, ktorý sa vyvolá pomocou NÃZVU a spustí\n" +#~ " PRÃKAZY. Argumenty príkazového riadka sa spolu s NÃZVOM dodajú\n" +#~ " funkcii v premenných $0 až $n." + +#~ msgid "" +#~ "Toggle the values of variables controlling optional behavior.\n" +#~ " The -s flag means to enable (set) each OPTNAME; the -u flag\n" +#~ " unsets each OPTNAME. The -q flag suppresses output; the exit\n" +#~ " status indicates whether each OPTNAME is set or unset. The -o\n" +#~ " option restricts the OPTNAMEs to those defined for use with\n" +#~ " `set -o'. With no options, or with the -p option, a list of all\n" +#~ " settable options is displayed, with an indication of whether or\n" +#~ " not each is set." +#~ msgstr "" +#~ "Obráti hodnoty premenných riadiacich voliteľné správanie.\n" +#~ " Voľba -s znamená zapnúť (nastaviÅ¥) naždého NÃZVU_VOĽBY;\n" +#~ " voľba -u ruší nastavenie každého NÃZVU_VOĽBY. Voľba -q\n" +#~ " potlaÄí výpis; stav ukonÄenia indikuje, Äi je každý NÃZOV_VOĽBY\n" +#~ " nastavený alebo nenastavený. Voľba -o obmedzuje NÃZOV_VOĽBY\n" +#~ " na tie, ktoré sú definované pre použitie so „set -o“. Bez volieb\n" +#~ " alebo s voľbou -p sa vypíše zoznam nastaviteľných volieb\n" +#~ " s oznaÄením, Äi je každá nastavená alebo nenastavená." + +#~ msgid "" +#~ "For each NAME, specify how arguments are to be completed.\n" +#~ " If the -p option is supplied, or if no options are supplied, " +#~ "existing\n" +#~ " completion specifications are printed in a way that allows them to " +#~ "be\n" +#~ " reused as input. The -r option removes a completion specification " +#~ "for\n" +#~ " each NAME, or, if no NAMEs are supplied, all completion " +#~ "specifications." +#~ msgstr "" +#~ "Pre každý NÃZOV urÄí, koľko argumentov sa má doplniÅ¥.\n" +#~ " Ak je daná voľba -p alebo žiadne voľby, vypíšu sa existujúce " +#~ "Å¡pecifikácie doplnení v takom formáte, že je ich možné použiÅ¥ na\n" +#~ " vstupe. Voľba -r odstráni Å¡pecifikáciu doplnenia pre každý NÃZOV,\n" +#~ " alebo, ak nebol uvedený žiadny NÃZOV, pre vÅ¡etky Å¡pecifikácie." diff --git a/bash-5.1/po/sl.gmo b/bash-5.1/po/sl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..db02245a7115b718b8160e82b45c4900d3a15926 GIT binary patch literal 82089 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 sc?9vyi%M%yYe>%arN5G%pMblI=v~a8LQy!R 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, 2014—2020. +msgid "" +msgstr "" +"Project-Id-Version: bash-5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2020-03-31 15:52+0200\n" +"Last-Translator: МироÑлав Ðиколић \n" +"Language-Team: Serbian <(nothing)>\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "лош Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð°" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: уклањам атрибут упуте назива" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: не могу да претворим попиÑани низ у придружив" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: неиÑправан кључ придруживог низа" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: не могу да доделим у не-бројевни попиÑ" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: мора кориÑтити Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ додељивања придруживог низа" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: не могу да направим: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "баш_изврши_јуникÑ_наредбу: не могу да нађем мапу кључа за наредбу" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: први не-празан знак није \"" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "нема затварајућег „%c“ у %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: недоÑтаје раздвојник двотачке" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "„%s“: не могу да развежем" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "ширење заграде: не могу да доделим меморију за „%s“" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "ширење заграде: ниÑам уÑпео да доделим меморију за %u елемента" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "ширење заграде: ниÑам уÑпео да доделим меморију за „%s“" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "„%s“: неиÑправан назив алијаÑа" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "уређивање реда није укључено" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%s“: неиÑправан назив мапе кључа" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: не могу да читам: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "„%s“: непознат назив функције" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "„%s“ није привезано ни за један кључ.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "„%s“ не може бити призвано путем" + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: не могу да развежем" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "број петљи" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "једино има ÑмиÑла у петљи „for“, „while“, или „until“" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Даје Ñадржај текућег позива подрутине.\n" +" \n" +" Без ИЗРÐЗÐ, даје „$ред $назив_датотеке“. Са ИЗРÐЗОМ, даје\n" +" „$ред $подрутина $назив_датотеке“; овај додатни податак може бити\n" +" коришћен за обезбеђивање праћења Ñпремника.\n" +" \n" +" ВредноÑÑ‚ ИЗРÐЗРпоказује колико кадрова позива да Ñе иде уназад пре\n" +" текућег; први кадар је кадар 0.\n" +" \n" +" Излазно Ñтање:\n" +" Даје 0 оÑим ако шкољка не извршава функцију шкољке или ИЗРÐЗ\n" +" није иÑправан." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "„HOME“ није подешено" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "превише аргумената" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "ништаван директоријум" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "„OLDPWD“ није подешено" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "%d. ред:" + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "упозорење:" + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: употреба:" + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: опција захтева аргумент" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: потребан је бројевни аргумент" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: не поÑтоји" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: неиÑправна опција" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: неиÑправан назив опције" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "„%s“: није иÑправан одредник" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "неиÑправан октални број" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "неиÑправан хекÑадецимални број" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "неиÑправан број" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: неиÑправна одредба Ñигнала" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "„%s“: није пиб или иÑправна одредба поÑла" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: променљива Ñамо за читање" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: „%s“ је ван опÑега" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "аргумент" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "„%s“ је ван опÑега" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: нема таквог поÑла" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: нема управљања поÑлом" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "нема управљања поÑлом" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: ограничено" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "ограничено" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: није уграђеноÑÑ‚ шкољке" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "грешка пиÑања: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "грешка подешавања оÑобина терминала: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "грешка добављања оÑобина терминала: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: грешка довлачења текућег директоријума: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: нејаÑна одредба поÑла" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "помоћ није доÑтупна у овом издању" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: не могу да раÑподеÑим: „%s“ је Ñамо за читање" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: не могу да раÑподеÑим" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: неиÑправан назив радње" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: нема одредбе довршавања" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "упозорење: опција „-F“ можда неће радити како Ñте очекивали" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "упозорење: опција „-C“ можда неће радити како Ñте очекивали" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "тренутно не обавља функцију довршавања" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "може бити коришћено једино у функцији" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: променљива упуте не може бити низ" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: Ñамоупућивање променљиве упуте назива није дозвољено" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: кружна упута назива" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: неиÑправан назив променљиве за упуту назива" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "не можете кориÑтити „-f“ да направите функције" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: функција Ñамо за читање" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: додела низа цитираног Ñпоја је заÑтарела" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: не могу да уништим променљиве низа на овај начин" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: не могу да претворим придруживи низ у попиÑани" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "променљиво учитавање није доÑтупно" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "не могу да отворим дељени предмет „%s“: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "не могу да нађем „%s“ у дељеном предмету „%s“: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: није динамички учитано" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "функција учитавања за „%s“ није уÑпела (%d): није учитано" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: није динамички учитано" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: не могу да обришем: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: је директоријум" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: није обична датотека" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: датотека је превелика" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: не могу да извршим бинарну датотеку" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: не могу да извршим: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "одјави\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "није шкољка пријављивања: кориÑтите „exit“" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Има зауÑтављених поÑлова.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Има покренутих поÑлова.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "нема такве наредбе" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "одредба иÑторијата" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: не могу да отворим привремену датотеку: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "текуће" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "поÑао „%d“ је започет без управљања поÑлом" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: неиÑправна опција -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: опција захтева аргумент -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "хеширање је иÑкључено" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: хеш табела је празна\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "покреће\tнаредбу\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Ðаредбе шкољке које одговарају кључној речи `" +msgstr[1] "Ðаредбе шкољке које одговарају кључним речима `" +msgstr[2] "Ðаредбе шкољке које одговарају кључним речима `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"нема тема помоћи које одговарају „%s“. Покушајте „help help“ или „man -k " +"%s“ или „info %s“." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: не могу да отворим: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Ове наредбе шкољке Ñу одређене изнутра. Укуцајте „help“ за овај ÑпиÑак.\n" +"Укуцајте „help name“ да Ñазнате више о функцији „name“.\n" +"КориÑтите „info bash“ да Ñазнате више о шкољци уопште.\n" +"КориÑтите „man -k“ или „info“ да Ñазнате више о наредбама ван ÑпиÑка.\n" +"\n" +"Звездица (*) поред назива значи да је наредба иÑкључена.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "не могу кориÑтити више од једног „-anrw“" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "положај иÑторијата" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: неиÑправна ознака времена" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: није уÑпело ширење иÑторијата" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: није уÑпело „inlib“" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "ниÑу допуштене друге опције уз „-x“" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: аргументи морају бити процеÑи или ИБ-ови поÑла" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Ðепозната грешка" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "очекиван је израз" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: није попиÑани низ" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: неиÑправна одредба опиÑника датотеке" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: неиÑправан опиÑник датотеке: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: неиÑправан број реда" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: неиÑправно порекло низа" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: неиÑправна количина опозива" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "празан назив променљиве низа" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "потребна је подршка променљиве низа" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "„%s“: недоÑтаје знак запиÑа" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "„%c“: неиÑправна одредба запиÑа времена" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%c“: неиÑправан знак запиÑа" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "упозорење: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "проблем обраде запиÑа: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "недоÑтаје хекÑадецимална цифра за \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "недоÑтаје цифра уникода за \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "нема другог директоријума" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: неиÑправан аргумент" + +#: builtins/pushd.def:480 +msgid "" +msgstr "<нема текућег директоријума>" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "празан Ñпремник директоријума" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "Ð¿Ð¾Ð¿Ð¸Ñ Ñпремника директоријума" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Приказује ÑпиÑак тренутно запамћених директоријума. Директоријуми\n" +" налазе Ñвој пут на ÑпиÑку наредбом „pushd“; можете да Ñе\n" +" вратите назад на ÑпиÑак наредбом „popd“.\n" +" \n" +" Опције:\n" +" -c\tчиÑти Ñпремник директоријума бриÑањем Ñвих елемената\n" +" -l\tне иÑпиÑује тилдом префикÑована издања директоријума\n" +" \t који Ñе одноÑе на ваш лични директоријум\n" +" -p\tиÑпиÑује Ñпремник директоријума Ñа једним уноÑом у реду\n" +" -v\tиÑпиÑује Ñпремник директоријума Ñа једним уноÑом у реду\n" +" \t Ñа префикÑом његовог положаја у Ñпремнику\n" +" \n" +" Ðргументи:\n" +" +N\tПриказује н-ти ÑƒÐ½Ð¾Ñ Ð±Ñ€Ð¾Ñ˜ÐµÑ›Ð¸ Ñ Ð»ÐµÐ²Ð° на ÑпиÑку приказаном\n" +" \t директоријумима када Ñе призову опцијама, почевши од нуле.\n" +" \n" +" -N\tПриказује н-ти ÑƒÐ½Ð¾Ñ Ð¿Ð¾Ñ‡ÐµÐ²ÑˆÐ¸ Ñ Ð´ÐµÑна на ÑпиÑку приказаном\n" +"\t директоријумима када Ñе призову без опција, почевши од нуле." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Додаје директоријум на врх Ñпремника директоријума, или заокреће\n" +" Ñпремник, чинећи нови први Ñпремника текућим радним директоријумом.\n" +" Без аргумената, замењује прва два директоријума.\n" +" \n" +" Опције:\n" +" -n\tПотиÑкује нормалну замену директоријума приликом додавања\n" +" \t директоријума у Ñпремник, тако да Ñе ради Ñамо Ñа Ñпремником.\n" +" \n" +" Ðргументи:\n" +" +N\tЗаокреће Ñпремник тако да н-ти директоријум (бројећи\n" +" \t Ñ Ð»ÐµÐ²Ð° на ÑпиÑку кога приказује „dirs“, почевши нулом)\n" +" \t буде на врху.\n" +" \n" +" -N\tЗаокреће Ñпремник тако да н-ти директоријум (бројећи\n" +" \t Ñ Ð´ÐµÑна на ÑпиÑку кога приказује „dirs“, почевши нулом)\n" +" \t буде на врху.\n" +" \n" +" dir\tДодаје ДИРЕКТОРИЈУМ у Ñпремник директоријума на врху,\n" +" начинивши га новим текућим радним директоријумом.\n" +" \n" +" Уграђено „dirs“ приказује Ñпремник директоријума." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Уклања уноÑе из Ñпремника директоријума. Без аргумената, уклања први\n" +" директоријум из Ñпремника, и пребацује на нови први директоријум.\n" +" \n" +" Опције:\n" +" -n\tПотиÑкује нормалну замену директоријума приликом уклањања\n" +" \t директоријума из Ñпремника, тако да Ñе ради Ñамо Ñа " +"Ñпремником.\n" +" \n" +" Ðргументи:\n" +" +N\tУклања н-ти ÑƒÐ½Ð¾Ñ Ð±Ñ€Ð¾Ñ˜ÐµÑ›Ð¸ Ñ Ð»ÐµÐ²Ð° на ÑпиÑку кога приказује\n" +" \t „dirs“, почевши од нуле. Ðа пример: „popd +0“ уклања\n" +" \t први директоријум, „popd +1“ други.\n" +" \n" +" -N\tУклања н-ти ÑƒÐ½Ð¾Ñ Ð±Ñ€Ð¾Ñ˜ÐµÑ›Ð¸ Ñ Ð´ÐµÑна на ÑпиÑку кога приказује\n" +" \t „dirs“, почевши од нуле. Ðа пример: „popd -0“ уклања\n" +" \t поÑледњи директоријум, „popd -1“ претпоÑледњи.\n" +" \n" +" Уграђено „dirs“ приказује Ñпремник директоријума." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: неиÑправна одредба временÑког иÑтека" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "грешка читања: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "могу једино да „иÑпишем“ из функције или изворног ÑпиÑа" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "не могу иÑтовремено да раÑподеÑим функцију и променљиву" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: није променљива низа" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: није функција" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: не могу да извезем" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "број помака" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "не могу иÑтовремено да подеÑим и да раÑподеÑим опције шкољке" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: неиÑправан назив опције шкољке" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "потребан је аргумент назива датотеке" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: ниÑам пронашао датотеку" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "не могу да обуÑтавим" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "не могу да обуÑтавим шкољку пријављивања" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s је измењен у пÑеудоним „%s“\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "„%s“ је кључна реч шкољке\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s: је функција\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s: је нарочита уграђеноÑÑ‚ шкољке\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s: јеÑте уграђеноÑÑ‚ шкољке\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "„%s“ јеÑте „%s“\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "„%s“ је хеширано (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: неиÑправан аргумент ограничења" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "„%c“: лоша наредба" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: не могу да добавим ограничење: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "ограничење" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: не могу да изменим ограничење: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "октални број" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%c“: неиÑправан оператер Ñимболичког режима" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%c“: неиÑправан знак Ñимболичког режима" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " ред " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "поÑледња наредба: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Прекидам..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "ПОДÐЦИ: " + +#: error.c:462 +msgid "unknown command error" +msgstr "непозната грешка наредбе" + +#: error.c:463 +msgid "bad command type" +msgstr "лоша врÑта наредбе" + +#: error.c:464 +msgid "bad connector" +msgstr "лош Ñпајач" + +#: error.c:465 +msgid "bad jump" +msgstr "лош Ñкок" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: неÑвезана променљива" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aиÑтекло је време чекајући на улаз: Ñам Ñе одјављујем\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "не могу да преуÑмерим Ñтандардни улаз из „/dev/null:“: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "ЗÐПИСВРЕМЕÐÐ: „%c“: неиÑправан знак запиÑа" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "изврши_копроц: ÐºÐ¾Ð¿Ñ€Ð¾Ñ†ÐµÑ [%d:%s] још увек поÑтоји" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "грешка Ñпојке" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "процена: премашен је највећи ниво угнежђивања процене (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: премашен је највећи ниво угнежђивања извора (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: премашен је највећи ниво угнежђивања функције (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: ограничено: не могу да наведем / у називима наредби" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: нема такве наредбе" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: лош тумач" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: не могу да извршим бинарну датотеку: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "„%s“: јеÑте поÑебна уграђеноÑÑ‚" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "не могу да удвоÑтручим „fd %d“ у „fd %d“" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "премашен је ниво дубачења израза" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "недоток Ñпремника дубачења" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "Ñадржајна грешка у изразу" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "покушано је додељивање у не-променљиву" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "Ñадржајна грешка у додели променљиве" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "дељење 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "грешка: лош Ñимбол доделе израза" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "„:“ је очекивано за уÑловни израз" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "изложилац је мањи од 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "одредник је очекиван након пре-увећања или пре-умањења" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "недоÑтаје )" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "Ñадржајна грешка: очекиван је операнд" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "Ñадржајна грешка: неиÑправан аритметички оператор" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (Ñимбол грешке је „%s“)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "неиÑправна аритметичка оÑнова" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: неиÑправан број реда" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "вредноÑÑ‚ је превише велика за оÑнову" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: грешка израза\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: не могу да приÑтупим родитељÑком директоријуму" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "не могу да поништим режим без-кашњења за фд „%d“" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "не могу да доделим нови опиÑник датотеке за улаз баша из фд „%d“" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: већ поÑтоји међумеморија за нови фд „%d“" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: „pgrp“ Ñпојка" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "иÑцепљени пиб „%d“ Ñе јавља у покренутом поÑлу „%d“" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "бришем зауÑтављени поÑао „%d“ Ñа групом процеÑа %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: пиб %5ld (%s) је означен да је још жив" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: нема таквог пиб-а" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Сигнал %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Урађен" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "ЗауÑтављен" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "ЗауÑтављен(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Покренут" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Урађен(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Изађи из „%d“" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Ðепознато Ñтање" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(језгрени избачај)" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "Ñетпгиб порода (%ld у %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: пиб %ld није пород ове шкољке" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Ðема запиÑа о процеÑу %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: поÑао „%d“ је зауÑтављен" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: нема таквог поÑла" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: поÑао је завршио" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: поÑао „%dд је већ у позадини" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: укључујем „WNOHANG“ да избегнем неодређени блок" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: ред %d:" + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (језгрени избачај)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(„wd“ Ñада: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: није уÑпело „getpgrp“" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: нема контроле поÑла у позадини" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: диÑциплина реда" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "не могу да подеÑим групу процеÑа терминала (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "нема управљања поÑлом у овој шкољци" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: тврдња није уÑпела: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: тврдња је лоше изведена\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "непознато" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: блок на Ñлободном ÑпиÑку је препиÑан" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: позвана Ñа већ оÑлобођеним аргументом блока" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: позвана Ñа недодељеним аргументом блока" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: откривена је недовољноÑÑ‚ тока; mh_n-бајтова је ван опÑега" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: откривена је недовољноÑÑ‚ тока; mh_n-бајтова је ван опÑега" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: почетна и крајња величина дела Ñе разликују" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: позвана Ñа недодељеним аргументом блока" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: откривена је недовољноÑÑ‚ тока; mh_n-бајтова је ван опÑега" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: откривена је недовољноÑÑ‚ тока; mh_n-бајтова је ван опÑега" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: почетна и крајња величина дела Ñе разликују" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: табела доделе је пуна Ñа „FIND_ALLOC“?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: „%p“ је већ у табели као додељено?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: „%p“ је већ у табели као Ñлободно?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "неиÑправна оÑнова" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: непознат домаћин" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: неиÑправна уÑлуга" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: лоша одредба путање мреже" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "радње мреже ниÑу подржане" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: не могу да изменим језик (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: не могу да изменим језик (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: не могу да изменим језик (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: не могу да изменим језик (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Имате пошту у $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Имате нову пошту у $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Пошта у „%s“ је прочитана\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "Ñадржајна грешка: потребан је аритметички израз" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "Ñадржајна грешка: није очекивано „;“" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "Ñадржајна грешка: „((%s))“" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: лоша врÑта упутÑтва „%d“" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "овде-документ у %d. реду је ограничен крајем-датотеке (тражи Ñе „%s“)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: упутÑво преуÑмерења „%d“ је ван опÑега" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: величина_реда_улаза_шкољке (%zu) је премашила ÐÐЈВЕЋУ_ВЕЛИЧИÐУ " +"(%lu): ред је Ñкраћен" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "премашен је највећи број „овде-документ“" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "неочекивани крај датотеке приликом тражења поклапања „%c“" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "неочекивани крај датотеке приликом тражења „]]“" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "Ñадржајна грешка у уÑловном изразу: неочекивани Ñимбол „%s“" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "Ñадржајна грешка у уÑловном изразу" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "неочекивани Ñимбол „%s“, очекивана је )" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "очекивана је )" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "неочекивани аргумент „%s“ уÑловном једночланом оператору" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "неочекивани аргумент уÑловном једночланом оператору" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "неочекивани Ñимбол „%s“, очекиван је уÑловни двочлани оператор" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "очекиван је уÑловни двочлани оператор" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "неочекивани аргумент „%s“ уÑловном двочланом оператору" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "неочекивани аргумент уÑловном двочланом оператору" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "неочекивани Ñимбол „%c“ у уÑловној наредби" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "неочекивани Ñимбол „%s“ у уÑловној наредби" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "неочекивани Ñимбол „%d“ у уÑловној наредби" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "Ñадржајна грешка близу неочекиваног Ñимбола „%s“" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "Ñадржајна грешка близу „%s“" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "Ñадржајна грешка: неочекивани крај датотеке" + +#: parse.y:6365 +msgid "syntax error" +msgstr "Ñадржајна грешка" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "КориÑтите „%s“ да напуÑтите шкољку.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "неочекивани крај датотеке приликом тражења поклапајуће )" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "довршавање: ниÑам нашао функцију „%s“" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: могуће понављање покушаја" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: ÐИШТÐÐ’ÐРОДРЕДБÐ_ДОВРШÐÐ’ÐЊÐ" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: лош Ñпајач „%d“" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: неиÑправан опиÑник датотеке" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: ÐИШТÐÐ’ÐРуказивач датотеке" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: „%c“: неиÑправан знак запиÑа" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "опиÑник датотеке је ван опÑега" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: нејаÑно преуÑмерење" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: не могу да препишем поÑтојећу датотеку" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: ограничено: не могу да преуÑмерим излаз" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "не могу да направим привремену датотеку за документ-овде: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: не могу да доделим фд променљивој" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "„/dev/(tcp|udp)/домаћин/прикључник“ није подржано без умрежавања" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "грешка преуÑмерења: не могу да удвоÑтручим фд" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "не могу да нађем „/tmp“, направите га!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "„/tmp“ мора бити иÑправан назив директоријума" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "режим уредног иÑпиÑа је занемарен у међудејÑтвеним шкољкама" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: неиÑправна опција" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "не могу да подеÑим јиб на %d: Ñтварни јиб %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "не могу да подеÑим гиб на %d: Ñтварни гиб %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "не могу да покренем прочишћавача; режим прочишћавања је иÑкључен" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: је директоријум" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Ðемам назив!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "Гну баш, издање %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Употреба:\t%s [Гнуова дуга опција] [опција] ...\n" +" \t%s [Гнуова дуга опција] [опција] датотека-ÑпиÑа ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Гнуове дуге опције:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Опције шкољке:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t„-ilrsD“ или наредба „-c“ или -O шопц_опција\t\t(призивање Ñамо)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t„-%s“ или опција „-o“\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "Укуцајте „%s -c \"help set\"“ за више података о опцијама шкољке.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "Укуцајте „%s -c help“ за више података о уграђеним наредбама шкољке.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "КориÑтите наредбу „bashbug“ да извеÑтите о грешкама.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "Матична Ñтраница баша: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Општа помоћ коришћења Гну Ñофтвера: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: неиÑправна операција" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Ðетачан Ñигнал" + +#: siglist.c:50 +msgid "Hangup" +msgstr "ОбуÑтави" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Прекини" + +#: siglist.c:58 +msgid "Quit" +msgstr "Изађи" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "ÐеиÑправна инÑтрукција" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "Прати/ухвати БПТ" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ИнÑтрукција „ABORT“" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "ИнÑтрукција „EMT“" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Изузетак покретног зареза" + +#: siglist.c:86 +msgid "Killed" +msgstr "Убијен" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Грешка Ñабирнице" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "ÐеуÑпех Ñегментације" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Лош ÑиÑтемÑки позив" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Сломљена Ñпојка" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Ðларм" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Окончано" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Хитан УИ уÑлов" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "ЗауÑтављен (Ñигнал)" + +#: siglist.c:126 +msgid "Continue" +msgstr "ÐаÑтави" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Пород је преминуо или зауÑтављен" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "ЗауÑтављен (улаз конзоле)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "ЗауÑтављен (излаз конзоле)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "Спреман на У/И" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Ограничење процеÑора" + +#: siglist.c:154 +msgid "File limit" +msgstr "Ограничење датотеке" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Ðларм (виртуелни)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Ðларм (профил)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Промењени прозор" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Закључавање Ñнимка" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "КориÑнички Ñигнал 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "КориÑнички Ñигнал 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "Улазни ХФТ подаци на чекању" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "неизбежан пад напајања" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "неизбежан пад ÑиÑтема" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "пребацује Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° други процеÑор" + +#: siglist.c:198 +msgid "programming error" +msgstr "грешка програмирања" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "ОÑигуран је режим ХФТ праћења" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "Понови је иÑпраћен режим ХФТ праћења" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "Ðиз ХФТ звука је завршен" + +#: siglist.c:214 +msgid "Information request" +msgstr "Захтев за подацима" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Ðепознат Ñигнал #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "лоша замена: нема затварајуће „%s“ у „%s“" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: не могу да доделим ÑпиÑак члану низа" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "не могу да начиним Ñпојку за замену процеÑа" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "не могу да начиним пород за замену процеÑа" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "не могу да отворим именовану Ñпојку „%s“ за читање" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "не могу да отворим именовану Ñпојку „%s“ за пиÑање" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "не могу да удвоÑтручим именовану Ñпојку „%s“ као фд %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "замена наредбе: занемарих ништавни бајт у улазу" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "не могу да начиним Ñпојку за замену наредбе" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "не могу да начиним пород за замену наредбе" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: не могу да удвоÑтручим Ñпојку као фд 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: неиÑправан назив променљиве за упуту назива" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: неиÑправно поÑредно ширење" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: неиÑправан назив променљиве" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: параметар није подешен" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: параметар је ништаван или није подешен" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: израз подниÑке < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: лоша замена" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: не могу дадоделим на овај начин" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "будућа издања шкољке ће приморати процену као аритметичку замену" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "лоша замена: нема затварајућег „`“ у „%s“" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "нема поклапања: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "очекиван је аргумент" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: очекиван је израз целог броја" + +#: test.c:265 +msgid "`)' expected" +msgstr "очекивана је )" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "очекивана је ), а пронађена %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: очекиван је двочлани оператор" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: очекиван је једночлани оператор" + +#: test.c:881 +msgid "missing `]'" +msgstr "недоÑтаје ]" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "Ñадржајна грешка: није очекивано „;“" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "неиÑправан Ñигнални број" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "руковалац изузетком: премашен је највећи ниво руковаоца изузецима (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: лоша вредноÑÑ‚ у „trap_list[%d]“: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: руковалац Ñигналом је „SIG_DFL“, поново шаљем %d (%s) " +"мени Ñамом" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: лош Ñигнал %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "грешка увоза одреднице функције за „%s“" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "ниво шкољке (%d) је превиÑок, поново поÑтављам на 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: нема Ñадржаја функције на текућем доÑегу" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: вредноÑти не може бити додељена вредноÑÑ‚" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: додељујем цео број упути назива" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variable: нема Ñадржаја функције на текућем доÑегу" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s има ништавну ниÑку извоза" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "неиÑправан знак %d у ниÑци извоза за „%s“" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "нема = у ниÑци извоза за „%s“" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: глава променљивих шкољке није ÑадржајноÑÑ‚ функције" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: нема Ñадржаја општих променљивих" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: глава променљивих шкољке није привремени доÑег окружења" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: не могу да отворим као ДÐТОТЕКУ" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: неиÑправна вредноÑÑ‚ за опиÑник праћења датотеке" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: вреднÑот ÑаглаÑноÑти је ван опÑега" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "ÐуторÑка права (C) 2012 Задужбина Ñлободног Ñофтвера, Доо." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Дозвола ОЈЛи3+: Гнуова ОЈЛ издање 3 или каÑније \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "Гну баш, издање %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"Ово је Ñлободан Ñофтвер; Ñлободни Ñте да га мењате и да га раÑподељујете." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Ðема ÐИКÐКВЕ ГÐРÐÐЦИЈЕ у оквирима дозвољеним законом." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: не могу да доделим %lu бајта (%lu бајта је додељено)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: не могу да доделим %lu бајта" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: не могу да доделим %lu бајта (%lu бајта је додељено)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: не могу да доделим %lu бајта" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [назив[=вредноÑÑ‚] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] назив [назив ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m мапа кључа] [-f датотека] [-q назив] [-u назив] [-r низ " +"кључа] [-x низ кључа:наредба-шкољке] [низ кључа:функција-читањареда или " +"наредба-читањареда]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [уграђеноÑÑ‚-шкољке [аргумент ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [израз]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [дир]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [арг ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [назив[=вредноÑÑ‚] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] назив[=вредноÑÑ‚] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [опција] назив[=вредноÑÑ‚] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [арг ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [арг ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f датотека] [назив ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [арг ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts ниÑка_опција назив [арг]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a назив] [наредба [аргументи ...]] [преуÑмерење ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e е-назив] [-lnr] [прво] [поÑледње] или fc -s [пут=реп] [наредба]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [одредба_поÑла ...]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [одредба_поÑла ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p путања] [-dt] [назив ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [шаблон ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d померај] [n] или history -anrw [датотека] или history -ps " +"arg [аргумент...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [одредба_поÑла ...] или jobs -x наредба [аргументи]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [одредба_поÑла ... | пид ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s одредба-Ñигнала | -n бр.Ñигнала | -sigspec] пиб | одредба_поÑла ... " +"или kill -l [одредба_поÑла]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [аргумент ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a низ] [-d ограничи] [-i текÑÑ‚] [-n н-знак] [-N н-знак] [-p " +"упит] [-t временÑки рок] [-u фд] [назив ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o назив-опције] [--] [арг ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [назив ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [назив[=вредноÑÑ‚] ...] или export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [назив[=вредноÑÑ‚] ...] или readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source датотека [аргументи]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". датотека [аргументи]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [израз]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ арг... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[арг] одредба_Ñигнала ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] назив [назив ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ограничење]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [режим]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [иб ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [пиб ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for ÐÐЗИВ [у РЕЧИМР... ] ; do ÐÐРЕДБЕ; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( израз1; израз2; израз3 )); do ÐÐРЕДБЕ; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select ÐÐЗИВ [у РЕЧИМР... ;] do ÐÐРЕДБЕ; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] Ñпојни_ред" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case РЕЧ у [ШÐБЛОР[| ШÐБЛОÐ]...) ÐÐРЕДБЕ ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if ÐÐРЕДБЕ; then ÐÐРЕДБЕ; [ elif ÐÐРЕДБЕ; then ÐÐРЕДБЕ; ]... [ else " +"ÐÐРЕДБЕ; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while ÐÐРЕДБЕ; do ÐÐРЕДБЕ; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until ÐÐРЕДБЕ; do ÐÐРЕДБЕ; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [ÐÐЗИВ] наредба [преуÑмерења]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function name { ÐÐРЕДБЕ ; } или name () { ÐÐРЕДБЕ ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ ÐÐРЕДБЕ ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( израз ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ израз ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables — Ðазиви и значења неких променљивих шкољке" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | дир]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [називопције ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v променљива] format [аргументи]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o опција] [-A радња] [-G " +"општапутања] [-W ÑпиÑакречи] [-F функција] [-C наредба] [-X путањауÑлова] [-" +"P префикÑ] [-S ÑуфикÑ] [назив ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o опција] [-A радња] [-G општапутања] [-W " +"ÑпиÑакречи] [-F функција] [-C наредба] [-X путањауÑлова] [-P префикÑ] [-S " +"ÑуфикÑ] [реч]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o опција] [-DEI] [назив ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d раздвој] [-n број] [-O порекло] [-s број] [-t] [-u фд] [-C " +"опозив] [-c количина] [низ]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d гранич] [-n број] [-O порекло] [-s број] [-t] [-u фд] [-C " +"опозив] [-c количина] [низ]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Одређује или приказује пÑеудониме.\n" +" \n" +" Без аргумената, „alias“ иÑпиÑује ÑпиÑак пÑеудонима у поново\n" +" употрбљивом облику „alias ÐÐЗИВ=ВРЕДÐОСТ“ на Ñтандардном излазу.\n" +" \n" +" У Ñупротном, пÑеудоним Ñе одређује за Ñваки ÐÐЗИВ чија ВРЕДÐОСТ је " +"дата.\n" +" Претходећи размак у ВРЕДÐОСТИ доводи до тога да Ñледећа реч бива\n" +" проверена за заменом пÑеудонима када је пÑеудоним раширен.\n" +" \n" +" Опције:\n" +" -p\tиÑпиÑује Ñве одређене пÑеудониме у поново употребљивом облику\n" +" \n" +" Излазно Ñтање:\n" +" „alias“ даје тачноÑÑ‚ оÑим ако је доÑтављен ÐÐЗИВ за који ниједан\n" +" пÑеудоним није одређен." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Уклања Ñваки ÐÐЗИВ Ñа ÑпиÑка одређених пÑеудонима.\n" +" \n" +" Опције:\n" +" -a\tуклања Ñве одреднице пÑеудонима\n" +" \n" +" Резултат је уÑпешан оÑим ако ÐÐЗИВ није поÑтојећи пÑеудоним." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Подешава Ñвезе таÑтера читања реда и променљиве.\n" +" \n" +" Повезује низ таÑтера ка функцији читања реда или макроу, или подешава\n" +" променљиву читања реда. СинтакÑа не-опционог аргумента је иÑта као и\n" +" она која Ñе налази у „~/.inputrc“, али мора бити проÑлеђена као један\n" +" аргумент: нпр., bind „\"\\C-x\\C-r\": re-read-init-file“.\n" +" \n" +" Опције:\n" +" -m мапа таÑтера КориÑти МÐПУ_ТÐСТЕРРкао мапу таÑтера " +"за трајање ове\n" +" наредбе. Прихватљиви називи мапе " +"таÑтера Ñу: „emacs,\n" +" emacs-standard, emacs-meta, emacs-" +"ctlx, vi, vi-move,\n" +" vi-command, и vi-insert“.\n" +" -l ИÑпиÑује називе функција.\n" +" -P ИÑпиÑује називе функција и Ñвезе.\n" +" -p ИÑпÑиује функције и Ñвезе у облику " +"који може бити поново\n" +" коришћен као улаз.\n" +" -S ИÑпиÑује низове таÑтера који призивају " +"макрое и њихове вредноÑти\n" +" -s ИÑпиÑује низове таÑтера који призивају " +"макрое и њихове вредноÑти\n" +" у облику који може бити поново " +"коришћен као улаз.\n" +" -V ИÑпиÑује називе и вредноÑти " +"променљивих\n" +" -v ИÑпиÑује називе и вредноÑти " +"променљивих у облику који може бити\n" +" поново коришћен као улаз.\n" +" -q назив-функције Пропитује о томе који таÑтери " +"призивају именовану функцију.\n" +" -u назив-функције Развезује Ñве таÑтере који Ñу " +"привезани за именовану функцију.\n" +" -r низ таÑтера Укалања Ñвезу за ÐИЗ_ТÐСТЕРÐ.\n" +" -f назив датотеке Чита Ñвезе таÑтера из " +"ÐÐЗИВÐ_ДÐТОТЕКЕ.\n" +" -x низ_таÑтера:наредба-шкољке Доводи до извршавања ÐÐРЕДБЕ-ШКОЉКЕ " +"приликом уноÑа\n" +" \t\t\t ÐИЗÐ_ТÐСТЕРÐ.\n" +" -X ИÑпиÑује Ñвезе низова таÑтера Ñа -x и " +"придружене наредбе у облику\n" +" који може бити поново коришћен као " +"улаз.\n" +" \n" +" Излазно Ñтање:\n" +" „bind“ даје 0 оÑим ако није дата непозната опција или ако не дође до " +"грешке." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Излазне петље „for“, „while“, или „until“.\n" +" \n" +" Излази из петље FOR, WHILE или UNTIL. Ðко је наведено N, Ñлама N " +"затварајућих\n" +" петљи.\n" +" \n" +" Излазно Ñтање:\n" +" Излазно Ñтање је 0 оÑим ако N није веће или једнако 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"ÐаÑтавља петље „for“, „while“, или „until“.\n" +" \n" +" ÐаÑтавља Ñледеће понављање затварајуће петље FOR, WHILE или UNTIL.\n" +" Ðко је наведено N, наÑтавља од N-те затварајуће петље.\n" +" \n" +" Излазно Ñтање:\n" +" Излазно Ñтање је 0 оÑим ако N није веће или једнако 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Извршава уграђеноÑти шкољке.\n" +" \n" +" Извршава УГРÐЂЕÐОСТ-ШКОЉКЕ Ñа аргументима ÐРГ-и без обављања тражења\n" +" наредбе. Ово је кориÑно када желите поново да примените уграђеноÑÑ‚\n" +" шкољке као функцију шкољке, али морате да извршите уграђеноÑÑ‚ у " +"функцији.\n" +" \n" +" Излазно Ñтање:\n" +" Даје излазно Ñтање УГРÐЂЕÐОСТИ-ШКОЉКЕ, или нетачноÑÑ‚ ако УГРÐЂЕÐОСТ-" +"ШКОЉКЕ\n" +" није уграђеноÑÑ‚ шкољке." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Даје Ñадржај текућег позива подрутине.\n" +" \n" +" Без ИЗРÐЗÐ, даје „$ред $назив_датотеке“. Са ИЗРÐЗОМ, даје\n" +" „$ред $подрутина $назив_датотеке“; овај додатни податак може бити\n" +" коришћен за обезбеђивање праћења Ñпремника.\n" +" \n" +" ВредноÑÑ‚ ИЗРÐЗРпоказује колико кадрова позива да Ñе иде уназад пре\n" +" текућег; први кадар је кадар 0.\n" +" \n" +" Излазно Ñтање:\n" +" Даје 0 оÑим ако шкољка не извршава функцију шкољке или ИЗРÐЗ\n" +" није иÑправан." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Мења радни директоријум шкољке.\n" +" \n" +" Мења текући директоријум у ДИР. ОÑновни ДИР је вредноÑÑ‚ променљиве\n" +" шкољке „ЛИЧÐО“.\n" +" \n" +" Променљива „ЦДПУТÐЊÐ“ одређује путању претраге за директоријум који " +"Ñадржи\n" +" ДИР. ЗаменÑки називи директоријума у ЦДПУТÐЊИ Ñу раздвојени двотачком " +"(:).\n" +" Ðазив ништавног директоријума је иÑти као текући директоријум. Ðко ДИР " +"почиње\n" +" коÑом цртом (/), тада Ñе ЦДПУТÐЊРне кориÑти.\n" +" \n" +" Ðко Ñе не нађе директоријум, а опција шкољке „cdable_vars“ је подешена,\n" +" Ñматра Ñе да је реч назив променљиве. Ðко та променљива има вредноÑÑ‚,\n" +" њена вредноÑÑ‚ Ñе кориÑти за ДИР.\n" +" \n" +" Опције:\n" +" -L\tприморава праћење Ñимболичких веза: решава Ñимболичке везе у\n" +" ДИР-у након обраде примерака „..“\n" +" -P\tкориÑти физичку Ñтруктуру директоријума без праћења Ñимболичких\n" +" веза: решава Ñимболичке везе у ДИР-у пре обраде3 примерака " +"„..“\n" +" -e\tако је доÑтављена опција „-P“, а текући радни директоријум не\n" +" може бити уÑпешно одређен, излази Ñа не-нултим Ñтањем\n" +" -@ на ÑиÑтемима који подржавају, предÑтавља датотеку Ñа " +"проширеним\n" +" оÑобинама као директоријум који Ñадржи оÑобине датотеке\n" +" \n" +" ОÑновно је да прати Ñимболичке везе, као да је наведено „-L“.\n" +" „..“ Ñе обрађује уклањањем претходног ÑаÑтојка назива путање назад на\n" +" коÑу цтрицу или на почетак ДИР-а.\n" +" \n" +" Излазно Ñтање:\n" +" Даје 0 ако је директоријум измењен, и ако је $PWD уÑпешно подешено када " +"је\n" +" коришћено „-P“; у Ñупротном вредноÑÑ‚ различиту од нуле." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"ИÑпиÑује назив текућег радног директоријума.\n" +" \n" +" Опције:\n" +" -L\tиÑпиÑује вредноÑÑ‚ наредбе $PWD ако именује текући радни\n" +" директоријум\n" +" -P\tиÑпиÑује физички директоријум, без Ñимболичких веза\n" +" \n" +" По оÑнови, „pwd“ Ñе понаша као да је наведено „-L“.\n" +" \n" +" Излазно Ñтање:\n" +" Даје 0 оÑим ако није дата неиÑправна опција или текући директоријум\n" +" не може бити прочитан." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Ðиштавна наредба.\n" +" \n" +" Ðема дејÑтва; наредба не ради ништа.\n" +" \n" +" Излазно Ñтање:\n" +" Увек уÑпешна." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Даје уÑпешан резултат.\n" +" \n" +" Излазно Ñтање:\n" +" Увек уÑпешно." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Даје неуÑпешан резултат.\n" +" \n" +" Излазно Ñтање:\n" +" Увек неуÑпешно." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Извршава једноÑтавну наредбу или приказује податке о наредбама.\n" +" \n" +" Покреће ÐÐРЕДБУ Ñа ÐРГУМЕÐТИМРпотиÑкујући тражење функције шкољке, или\n" +" приказује податке о наведеним ÐÐРЕДБÐМÐ. Може да Ñе кориÑти за " +"позивање\n" +" наредби на диÑку када поÑтоји функција Ñа иÑтим називом.\n" +" \n" +" Опције:\n" +" -p кориÑти оÑновну вредноÑÑ‚ за ПУТÐЊУ којом Ñе оÑигурава налажење\n" +" Ñвих Ñтандардних помагала\n" +" -v иÑпиÑује Ð¾Ð¿Ð¸Ñ ÐÐРЕДБЕ Ñлично уграђеноÑти „type“\n" +" -V иÑпиÑује опширнији Ð¾Ð¿Ð¸Ñ Ñваке ÐÐРЕДБЕ\n" +" \n" +" Излазно Ñтање:\n" +" Даје излазно Ñтање ÐÐРЕДБЕ, или неуÑпех ако Ñе ÐÐРЕДБРне пронађе." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Подешава вредноÑти и оÑобине променљиве.\n" +" \n" +" Објављује променљиве и даје им оÑобине. Ðко ниÑу дати ÐÐЗИВИ,\n" +" приказује оÑобине и вредноÑти Ñвих променљивих.\n" +" \n" +" Опције:\n" +" -f\tограничава радњу или приказ називима и одредницама функције\n" +" -F\tограничава приказ Ñамо називима функција (Ð¿Ð»ÑƒÑ Ð±Ñ€Ð¾Ñ˜ реда и\n" +" изворну датотеку приликом прочишћавања)\n" +" -g\tÑтвара опште променљиве када Ñе кориÑти у функцији шкољке;\n" +" у Ñупротном Ñе занемарује\n" +" -p\tприказује оÑобине и вредноÑÑ‚ Ñваког ÐÐЗИВÐ\n" +" \n" +" Опције које подешавају оÑобине:\n" +" -a\tда учини ÐÐЗИВЕ попиÑаним низовима (ако је подржано)\n" +" -A\tда учини ÐÐЗИВЕ придруживим низовима (ако је подржано)\n" +" -i\tда учини да ÐÐЗИВИ имају оÑобину „integer“ (целог броја)\n" +" -l\tда претвори ÐÐЗИВЕ у мала Ñлова при додели\n" +" -n\tчини ÐÐЗИВ упутом ка променљивој именованој Ñвојом вредношћу\n" +" -r\tда учини ÐÐЗИВЕ Ñамо за читање\n" +" -t\tда учини да ÐÐЗИВИ имају оÑобину „trace“ (прати)\n" +" -u\tда претвори ÐÐЗИВЕ у велика Ñлова при додели\n" +" -x\tда уради извоз ÐÐЗИВÐ\n" +" \n" +" Употреба + умеÑто - иÑкључује дату оÑобину.\n" +" \n" +" Променљиве Ñа оÑобином целог броја имају аритметичку процену (видите\n" +" наредбу „let“) обављену када Ñе променљивој додели вредноÑÑ‚.\n" +" \n" +" Када Ñе кориÑти у функцији, „declare“ чини ÐÐЗИВЕ меÑним, као наредбом\n" +" „local“. Опција „-g“ потиÑкује ово понашање.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или " +"ако\n" +" не дође до грешке доделе променљиве." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Подешава вредноÑти и атрибуте променљиве.\n" +" \n" +" Синоним за „declare“. Погледајте „help declare“." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Одређује меÑне променљиве.\n" +" \n" +" Ствара меÑну променљиву звану ÐÐЗИВ, и даје јој ВРЕДÐОСТ. ОПЦИЈРможе\n" +" бити Ñвака опција коју прихвати „declare“.\n" +" \n" +" МеÑне променљиве могу бити коришћене једино у функцији; виде их једино\n" +" функције у којима Ñу одређене и уњиховим породима.\n" +" \n" +" Излазно Ñтање:\n" +" Резултат је позитиван оÑим ако Ñе не доÑтави неиÑправна опција, ако не " +"дође\n" +" до грешке додељивања променљиве, или ако шкољка не извршава функцију." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Пише аргументе на Ñтандардни излаз.\n" +" \n" +" Приказује ÐРГ-те, раздвојене једним знаком размака и праћене\n" +" новим редом, на Ñтандардном излазу.\n" +" \n" +" Опције:\n" +" -n\tне прикачиње нови ред\n" +" -e\tукључује тумачење пратећих контра коÑих црта новог реда\n" +" -E\tизричито потиÑкује тумачење контра коÑих црта новог реда\n" +" \n" +" „echo“ тумачи пратеће знаке контра коÑе црте новог реда:\n" +" \\a\tупозорење (звонце)\n" +" \\b\tповратница\n" +" \\c\tпотиÑкује будући излаз\n" +" \\e\tзнак новог реда\n" +" \\E\tзнак новог реда\n" +" \\f\tдовод обраÑца\n" +" \\n\tнови ред\n" +" \\r\tповратак ноÑача\n" +" \\t\tводоравни табулатор\n" +" \\v\tуÑправни табулатор\n" +" \\\\\tконтра коÑа црта\n" +" \\0nnn\tзнак чији ÐСКРИ код јеÑте „NNN“ (октално). „NNN“ може бити " +"од\n" +" \t 0 до 3 окталне цифре\n" +" \\xHH\tоÑмобитни знак чија вредноÑÑ‚ јеÑте „HH“ (хекÑадецимално). " +"„HH“\n" +" може бити једна или две хекÑадецималне цифре\n" +" \\uHHHH\tзнак Јуникода чија вредноÑÑ‚ јеÑте хекÑадецимална вредноÑÑ‚ " +"„HHHH“.\n" +" \t\t„HHHH“ може имати једну до четири хекÑадецималне цифре.\n" +" \\UHHHHHHHH знак Јуникода чија вредноÑÑ‚ јеÑте хекÑадецимална вредноÑÑ‚\n" +" \t\t„HHHHHHHH“. „HHHHHHHH“ може бити једна од оÑам хекÑадецималних " +"цифара.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако не дође до грешке пиÑања." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"ЗапиÑује аргументе на Ñтандардни излаз.\n" +" \n" +" Приказује ÐРГ-те на Ñтандардном излазу за којима Ñледи нови ред.\n" +" \n" +" Опције:\n" +" -n\tне придодаје нови ред\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако не дође до грешке пиÑања." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Укључује и иÑкључује уграђеноÑти шкољке.\n" +" \n" +" Укључује и иÑкључује уграђене наредбе шкољке. ИÑкључивање вам " +"омогућава\n" +" да извршите наредбу диÑка која ноÑи иÑти назив као уграђеноÑÑ‚ шкољке\n" +" без коришћења пуне путање.\n" +" \n" +" Опције:\n" +" -a\tиÑпиÑује ÑпиÑак уграђеноÑти приказујући да ли је Ñвака укључена\n" +" -n\tиÑкључује Ñваки ÐÐЗИВ или приказује ÑпиÑак иÑкључених уграђеноÑти\n" +" -p\tиÑпиÑује ÑпиÑак уграђеноÑти у поново кориÑтивом облику\n" +" -s\tиÑпиÑује Ñамо називе ПоÑикÑових „поÑебних“ уграђеноÑти\n" +" \n" +" Опције које управљају динамичним учитавањем:\n" +" -f\tУчитава уграђеноÑÑ‚ ÐÐЗИВРиз дељеног објекта ÐÐЗИВ_ДÐТОТЕКЕ\n" +" -d\tУклања уграђеноÑÑ‚ учитану помоћу „-f“\n" +" \n" +" Без опција, Ñваки ÐÐЗИВ је укључен.\n" +" \n" +" Да кориÑтите „test“ пронађен у $ПУТÐЊИ умеÑто издања уграђеноÑти\n" +" шкољке, укуцајте „enable -n test“.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако ÐÐЗИВ није уграђеноÑÑ‚ шкољке или ако не " +"дође до грешке." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Извршава аргументе као наредбе шкољке.\n" +" \n" +" Обједињује ÐРГ-те у једну ниÑку, кориÑти резултат као улаз шкољке,\n" +" и извршава резултирајуће наредбе.\n" +" \n" +" Излазно Ñтање:\n" +" Даје излазно Ñтање наредбе или уÑпех ако је наредба ништавна." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Обрађује аргументе опције.\n" +" \n" +" „Getopts“ Ñе кориÑти поÑтупцима шкољке за обраду положајних параметара\n" +" као опција.\n" +" \n" +" „OPTSTRING“ Ñдаржи Ñлова опције зарад препознавања; ако након Ñлова\n" +" долази двотачка, очекује Ñе да опција има аргумент, који од њега треба\n" +" да буде раздвојен празнином.\n" +" \n" +" Ðакон Ñваког призивања, „добави_опцију“ ће поÑтавити Ñледећу опцију у\n" +" $називу променљиве шкољке, покрећући назив ако не поÑтоји, и индекÑ\n" +" Ñледећег аргумента зарад обраде у променљиве шкољке ОПЦИÐД. ОПЦИÐД\n" +" Ñе покреће на 1 Ñваки пут када Ñе призове шкољка или ÑÐ¿Ð¸Ñ ÑˆÐºÐ¾Ñ™ÐºÐµ.\n" +" Када опција захтева аргумент, „добави_опцију“ поÑтавља тај аргумент\n" +" у променљиву шкољке ОПЦÐРГ.\n" +" \n" +" „добави_опцију“ извештава о грешкама на један од два начина. Ðко је\n" +" први знак ОПЦÐИСКЕ двотачка, „добави_опцију кориÑти нечујно извештавање\n" +" о грешци. У овом режиму, поруке о грешкама Ñе не иÑпиÑују. Ðко је\n" +" виђена неиÑправна опција, поÑтавља знак опцијепронађен у ОПЦÐРГ-у. Ðко\n" +" захтевани аргумент није нађен, поÑтавља двотачку „:“ у ÐÐЗИВ и подешава\n" +" ОПЦÐРГ на нађени знак опције. Ðко „добави_опцију“ није у нечујном " +"режиму,\n" +" а виђена је неиÑправна опција, онда поÑтавља знак питања „?“ у ÐÐЗИВ и\n" +" раÑподешава ОПЦÐРГ. Ðко није пронађен захтевани аргумент, питање „?“ " +"Ñе\n" +" поÑтавља у ÐÐЗИВУ, ОПЦÐРГ Ñе раÑподешава, а иÑпиÑује Ñе порука о " +"дијагнози.\n" +" \n" +" Ðко променљива шкољке ОПЦГРЕШКРима вредноÑÑ‚ 0, „добави_опцију“ " +"иÑкључује\n" +" иÑпиÑивање порука о грешкама, чак и ако први знак ОПЦÐИСКЕ није " +"двотачка.\n" +" ОПЦГРЕШКРима вредноÑÑ‚ 1 по оÑнови.\n" +" \n" +" „Добави_опцију“ обично обрађује положајне параметре ($0 - $9), али ако " +"је\n" +" дато више аргумената, онда Ñе они обрађују.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат ако је пронађена опција; неуÑпех ако Ñе наиђе " +"на\n" +" крај опције или ако не дође до грешке." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Замењује шкољку датом наредбом.\n" +" \n" +" Извршава ÐÐРЕДБУ, замењујући ову шкољку наведеним програмом. ÐРГУМЕÐТИ\n" +" поÑтају аргументи ÐÐРЕДБЕ. Ðко није наведена ÐÐРЕДБÐ, Ñвако " +"преуÑмеравање\n" +" има дејÑтва у текућој шкољци.\n" +" \n" +" Опције:\n" +" -a назив проÑлеђује ÐÐЗИВ као нулти аргумент ÐÐРЕДБЕ\n" +" -c\t\tизвршава ÐÐРЕДБУ Ñа празним окружењем\n" +" -l\t\tпоÑтавља цртицу у нултом аргументу ÐÐРЕДБЕ\n" +" \n" +" Ðко наредба не може бити извршена, поÑтоји не-међудејÑтвена шкољка, " +"оÑим\n" +" ако није подешена опција шкољке „execfail“.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако ÐÐРЕДБРније нађена или ако не дође до " +"грешке преуÑмеравања." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Ðапушта шкољку.\n" +" \n" +" Ðапушта шкољку Ñа Ñтањем N. Ðко је N изоÑтављено, излазно Ñтање\n" +" је оно поÑледње извршене наредбе." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Ðапушта шкољку пријављивања.\n" +" \n" +" Ðапушта шкољку пријављивања Ñа излазним Ñтањем N. Даје грешку ако није " +"извршено\n" +" у шкољци пријављивања." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Приказује или извршава наредбе Ñа ÑпиÑка иÑторијата.\n" +" \n" +" „fc“ Ñе кориÑти за иÑпиÑивање или уређивање и за поновно извршавање " +"наредби\n" +" Ñа ÑпиÑка иÑторијата. ПРВИ и ПОСЛЕДЊИ могу бити бројеви који наводе " +"опÑег,\n" +" или ПРВИ може бити ниÑка, што значи да најÑвежија наредба почиње том " +"ниÑком.\n" +" \n" +" Опције:\n" +" -e ЕÐÐЗИВ\t бира уређивача за коришћење. ОÑновно је „FCEDIT“, затим " +"„EDITOR“,\n" +" \t\t затим „vi“\n" +" -l \t прави ÑпиÑак редова умеÑто да уређује\n" +" -n\t изоÑтавља бројеве редова приликом Ñтварања ÑпиÑка\n" +" -r\t преокреће редоÑлед редова (новије поÑтавља као прве)\n" +" \n" +" Са запиÑом „fc -s [пат=реп ...] [наредба]“, ÐÐРЕДБРÑе поново\n" +" извршава након обављене замене СТÐРО=ÐОВО.\n" +" \n" +" КориÑтан пÑеудоним за коришћење Ñ Ð¾Ð²Ð¸Ð¼ је „r='fc -s'“, тако да „r cc“\n" +" покреће поÑледњу наредбу која почиње Ñа „cc“ а „r“ поново извршава\n" +" поÑледњу наредбу.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат или Ñтање извршене наредбе; не-нулу ако дође до " +"грешке." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Премешта поÑао у први план.\n" +" \n" +" ПоÑтавља поÑао одређен Ñа „JOB_SPEC“ у први план, учинивши га текућим\n" +" поÑлом. Ðко „JOB_SPEC“ није приÑутно, кориÑти Ñе шкољкино поимање\n" +" текућег поÑла.\n" +" \n" +" Излазно Ñтање:\n" +" Стање наредбе поÑтављене у први план, или неуÑпех ако дође до грешке." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Премешта поÑао у позадину.\n" +" \n" +" ПоÑтавља поÑао одређен Ñваком „JOB_SPEC“ у позадину, као да Ñу " +"покренути\n" +" Ñа &. Ðко „JOB_SPEC“ није приÑутно, кориÑти Ñе шкољкино поимање\n" +" текућег поÑла.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није укључено управљање поÑлом или ако " +"не дође до грешке." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Памти или приказује меÑта програма.\n" +" \n" +" Одређује и памти пуну путању Ñваког ÐÐЗИВРнаредбе. Ðко ниÑу\n" +" дати аргументи, приказује Ñе податак о упамћеним наредбама.\n" +" \n" +" Опције:\n" +" -d\tзаборавља запамћено меÑто Ñваког ÐÐЗИВÐ\n" +" -l\tприказује у облику који може бити поново коришћен као улаз\n" +" -p путања кориÑти ПУТÐЊУ као пуну путању ÐÐЗИВÐ\n" +" -r\tзаборавља Ñва запамћена меÑта\n" +" -t\tиÑпиÑује запамћено меÑто Ñваког ÐÐЗИВÐ, поÑтављајући\n" +" \t\tодговарајући ÐÐЗИВ иÑпред Ñваког меÑта ако је дато\n" +" \t\tвише ÐÐЗИВÐ\n" +" Ðргументи:\n" +" ÐÐЗИВ\tСваки ÐÐЗИВ Ñе тражи у $ПУТÐЊИ и додаје на ÑпиÑак\n" +" \t\tзапамћених наредби.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако Ñе ÐÐЗИВ не нађе или ако је дата " +"неиÑправна опција." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Приказује податке о уграђеним наредбама.\n" +" \n" +" Приказује кратке Ñажетке уграђених наредби. Ðко је наведен\n" +" ШÐБЛОÐ, даје опширну помоћ Ñвих наредби које одговарају ШÐБЛОÐУ,\n" +" у Ñупротном иÑпиÑује Ñе ÑпиÑак тема помоћи.\n" +" \n" +" Опције:\n" +" -d\tиÑпиÑује кратак Ð¾Ð¿Ð¸Ñ Ð·Ð° Ñваку тему\n" +" -m\tприказује коришћење у запиÑу квази Ñтранице упутÑтва\n" +" -s\tиÑпиÑује Ñамо кртак Ñиже употребе за Ñваку тему која\n" +" \t одговара ШÐБЛОÐУ\n" +" \n" +" Ðргументи:\n" +" ШÐБЛОÐ\tШаблон који наводи тему помоћи\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако ШÐБЛОРније пронађен или ако је дата " +"неиÑправна опција." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Приказује или управља ÑпиÑком иÑторијата.\n" +" \n" +" Приказује ÑпиÑак иÑторијата Ñа бројевима редова, поÑтављајући ипред\n" +" Ñваког измењеног уноÑа *. Ðргумент N иÑпиÑује Ñамо поÑледња N уноÑа.\n" +" \n" +" Опције:\n" +" -c\t чиÑти ÑпиÑак иÑторијата бришући Ñве уноÑе\n" +" -d померај брише ÑƒÐ½Ð¾Ñ Ð¸Ñторијата на померају ПОМЕРÐЈ.\n" +" \n" +" -a\t додаје редове иÑторијата из ове ÑеÑије у датотеку иÑторијата\n" +" -n\t чита Ñве редове иÑторијата који ниÑу прочитани из датотеке " +"иÑторијата\n" +" \t\tи додаје их на ÑпиÑак иÑторијата\n" +" -r\t чита датотеку иÑторијата и додаје Ñадржај на ÑпиÑак иÑторијата\n" +" -w\t пише текући иÑторијат у датотеку иÑторијата\n" +" \n" +" -p\t обавља ширење иÑторијата на Ñваком ÐРГ-у и приказује резултат\n" +" \t без Ñмештања на ÑпиÑак иÑторијата\n" +" -s\t додаје ÐРГ-те на ÑпиÑак иÑторијата као један уноÑ\n" +" \n" +" Ðко је дата ДÐТОТЕКÐ, кориÑти Ñе као датотека иÑторијата. У Ñупротном,\n" +" ако ДÐТОТЕКÐ_ИСТОРИЈÐТРима вредноÑÑ‚, она Ñе кориÑти, другачије „~/." +"bash_history“.\n" +" \n" +" Ðко је променљива ЗÐПИСВРЕМЕÐÐИСТОРИЈÐТРподешена и није ништавна, " +"кориÑти Ñе\n" +" њена вредноÑÑ‚ као ниÑка запиÑа за „strftime(3)“ да иÑпиÑше временÑку " +"ознаку придружену\n" +" Ñваком приказаном уноÑу иÑторијата. У Ñупротном временÑке ознаке Ñе не " +"иÑпиÑују.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако не " +"дође до грешке." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Приказује Ñтање поÑла.\n" +" \n" +" ИÑпиÑује радне поÑлове. ОДРЕДБÐПОСЛРограничава излаз на тај поÑао.\n" +" Без опција, Ñтање Ñвих радних поÑлова је приказано.\n" +" \n" +" Опције:\n" +" -l\tиÑпиÑује ИБ-ове процеÑа као додатак обичним подацима\n" +" -n\tиÑпиÑује Ñамо процеÑе који Ñу променили Ñтање од поÑледњег\n" +" \t обавештавања\n" +" -p\tиÑпиÑује Ñамо ИБ-ове процеÑа\n" +" -r\tограничава излаз на покренуте поÑлове\n" +" -s\tограничава излаз на зауÑтављене поÑлове\n" +" \n" +" Ðко је доÑтављено „-x“, ÐÐРЕДБРÑе покреће након што Ñе Ñве одредбе " +"поÑла које\n" +" Ñе јављају у ÐРГУМЕÐТИМРзамене ИБ-ом процеÑа тог вође групе процеÑа " +"поÑла.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако не " +"дође до грешке.\n" +" Ðко Ñе кориÑти „-x“, даје излазно Ñтање ÐÐРЕДБЕ." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Уклања поÑлове из текуће шкољке.\n" +" \n" +" Уклања Ñваки аргумент ОДРЕДБЕПОСЛРиз табеле радних поÑлова. Без\n" +" ОДРЕДБИПОСЛÐ, шкољка кориÑти Ñвоје тумачење текућег поÑла.\n" +" \n" +" Опције:\n" +" -a\tуклања Ñве поÑлове ако није доÑтављена ОДРЕДБÐПОСЛÐ\n" +" -h\tозначава Ñваку ОДРЕДБУПОСЛРтако да СИГÐÐЛГОРЕ није поÑлат поÑлу " +"ако\n" +" \t шкољка прими СИГÐÐЛГОРЕ\n" +" -r\tуклања Ñамо покренуте поÑлове\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није дата неиÑправна опција или " +"ОДРЕДБÐПОСЛÐ." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Шаље Ñигнал поÑлу.\n" +" \n" +" Шаље процеÑима препознатих ПИБ-ом или ОДРЕДБОМПОСЛРÑигнал именован\n" +" ОДРЕДБОМСИГÐÐЛРили БРОЈЕМСИГÐÐЛÐ. Ðко није приÑутно ни " +"ОДРЕДБÐ_СИГÐÐЛÐ\n" +" ни БРОЈ_СИГÐÐЛÐ, подразумева Ñе ТЕРМ_СИГÐÐЛÐ.\n" +" \n" +" Опције:\n" +" -s Ñиг\tСИГ је назив Ñигнала\n" +" -n Ñиг\tСИГ је број Ñигнала\n" +" -l\tиÑпиÑује називе Ñигнала; ако аргументи прате „-l“ подразумева\n" +" \t Ñе да Ñу бројеви Ñигнала за које називи требају бити иÑпиÑани\n" +" -L\tÑиноним за „-l“\n" +" \n" +" „Kill“ је уграђеноÑÑ‚ шкољке из два разлога: омогућава да ИБ-ови поÑлова " +"буду\n" +" коришћени умеÑто ИБ-ова процеÑа, и омогућава убијање процеÑа ако је " +"доÑтигнуто\n" +" ограничење процеÑа које можете да направите.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако не " +"дође до грешке." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Процењује аритметичке изразе.\n" +" \n" +" Процењује Ñваки ÐРГ као аритметички израз. Процењивање Ñе ради у\n" +" целим бројевима Ñталне ширине без провере за прекорачењем, тако да Ñе\n" +" дељење нулом хвата и означава као грешка. Следећи ÑпиÑак оператора је\n" +" групиÑан у нивое оператора једнаког првенÑтва. Ðивои Ñу иÑпиÑани према\n" +" поретку раÑтућег првенÑтва.\n" +" \n" +" \tid++, id--\tпроменљива поÑÑ‚-увећања, поÑÑ‚-умањења\n" +" \t++id, --id\tпроменљива пре-увећања, пре-умањења\n" +" \t-, +\t\tједночлани минуÑ, плуÑ\n" +" \t!, ~\t\tлогичка и битÑка негација\n" +" \t**\t\tÑтепеновање\n" +" \t*, /, %\t\tмножење, дељење, оÑтатак\n" +" \t+, -\t\tÑабирање, одузимање\n" +" \t<<, >>\t\tлеви и деÑни битÑки помаци\n" +" \t<=, >=, <, >\tпоређење\n" +" \t==, !=\t\tједнакоÑÑ‚, неједнакоÑÑ‚\n" +" \t&\t\tбитÑко И\n" +" \t^\t\tбитÑко ИСКЉУЧИВО ИЛИ\n" +" \t|\t\tбитÑко ИЛИ\n" +" \t&&\t\tлогичко И\n" +" \t||\t\tлогичко ИЛИ\n" +" \texpr ? expr : expr\n" +" \t\t\tуÑловни оператор\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tдодела\n" +" \n" +" Променљиве шкољке Ñу дозвољене као операнди. Ðазив променљиве\n" +" Ñе замењује њеном вредношћу (приÑиљеном на цео број Ñталне ширине)\n" +" у изразу. Променљива не мора да има укључен атрибут целог броја\n" +" да би била коришћена у изразу.\n" +" \n" +" Оператори Ñе процењују према првенÑтву. Под-изрази у заградама\n" +" Ñе први процењују и могу да препишу горња правила првенÑтва.\n" +" \n" +" Излазно Ñтање:\n" +" Ðко Ñе поÑледњи ÐРГ процени на 0, иÑпиÑује 1; у Ñупротном даје 0." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Чита ред Ñа Ñтандардног улаза и дели га на поља.\n" +" \n" +" Чита један ред Ñа Ñтандардног улаза, или из опиÑника датотеке ФД\n" +" ако је доÑтављена опција „-u“. Ред је подељен на поља као при дељењу\n" +" речи, а прва реч Ñе додељује првом ÐÐЗИВУ, друга реч другом ÐÐЗИВУ,\n" +" и тако редом, Ñа Ñваком наредном речју додељеном поÑледњем ÐÐЗИВУ.\n" +" Само знаци пронађени у „$IFS“ Ñе признају за граничнике речи.\n" +" \n" +" Ðко ниÑу доÑтављени ÐÐЗИВИ, читани ред је Ñмештен у променљивој " +"ОДГОВОР.\n" +" \n" +" Опције:\n" +" -a низ\t додељује читање речи Ñеквенцијалним индекÑима променљиве\n" +" \t\t низа ÐИЗ, почевши од нуле\n" +" -d гран\t наÑтавља Ñве док Ñе не прочита први знак ГРÐÐИЧÐИКÐ,\n" +" \t\t радије него нови ред\n" +" -e\t кориÑти читање реда да добије ред у међудејÑтвеној шкољци\n" +" -i текÑÑ‚\t кориÑти ТЕКСТ као почетни текÑÑ‚ за читање реда\n" +" -n n-знака даје резултат након читања знакова N-ЗÐÐКОВРрадије него " +"да\n" +" \t\t чека на нови ред, али поштује граничника ако је прочитано\n" +" \t\t мање знакова од N-ЗÐÐКОВРпре граничника\n" +" -N n-знака даје резултат Ñамо након читања тачно знакова N-ЗÐÐКОВÐ, " +"оÑим\n" +" \t\t ако не наиђе на крај датотеке или ако не иÑтекне време читања,\n" +" занемарујући Ñве граничнике\n" +" -p упит\t иÑпиÑује ниÑку УПИТ без пратећег новог реда пре покушаја " +"читања\n" +" -r\t не дозвољава контра коÑим цртама да преломе ниједан од знакова\n" +" -s\t не оглашава улаз који долази Ñа терминала\n" +" -t иÑтек\t неуÑпех временÑког рока и давања резултата ако читав ред " +"улаза\n" +" \t\t није прочитан за време од ВРЕМЕ_РОК Ñекунде. ВредноÑÑ‚ променљиве\n" +" \t\t ВИСТЕКРје оÑновни временÑки рок. ВРЕМЕÐСКИ_РОК може бити " +"разломак.\n" +" \t\t Ðко је ВРЕМЕÐСКИ_РОК 0, читање даје резултат одмах, без покушаја\n" +" \t\t читања некох података, дајући позитиван резултат Ñамо ако је улаз\n" +" \t\t доÑтупан на наведеном опиÑнику датотеке. Излазно Ñтање је веће\n" +" \t\t од 128 ако је временÑки рок прекорачен\n" +" -u фд\t чита из опиÑника датотеке ФД умеÑто Ñа Ñтандардног улаза\n" +" \n" +" Излазно Ñтање:\n" +" Резултат је нула, оÑим ако Ñе не наиђе на крај датотеке, не иÑтекне " +"време\n" +" читања (у том Ñлучају је већи од 128), ако не дође до грешке доделе " +"променљиве,\n" +" или ако Ñе не доÑтави неиÑправан опиÑник датотеке као аргумент опције „-" +"u“." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Враћа из функције шкољке.\n" +" \n" +" Доводи до тога да функција или изворни ÑÐ¿Ð¸Ñ Ð¸Ð·Ð°Ñ’Ñƒ Ñа вредношћу\n" +" коју наводи N. Ðко је N изоÑтављено, Ñтање резултата је оно\n" +" поÑледње извршене наредбе унутар функције или ÑпиÑа.\n" +" \n" +" Излазно Ñтање:\n" +" Даје N, или неуÑпех ако шкољка не извршава функцију или ÑпиÑ." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Подешава или раÑподешава вредноÑти опција шкољке и положајних параметара.\n" +" \n" +" Мења вредноÑÑ‚ оÑобина шкољке и положајних параметара, или\n" +" приказује називе и вредноÑти променљивих шкољке.\n" +" \n" +" Опције:\n" +" -a Означава променљиве које Ñу измењене или направљене за извоз.\n" +" -b Одмах обавештава о окнчавању поÑла.\n" +" -e Одмах излази ако наредба поÑтоји Ñа не-нултим Ñтањем.\n" +" -f ИÑкључује Ñтварање назива датотеке (уопштавање).\n" +" -h Памти меÑто наредби као што Ñу тражене.\n" +" -k Сви аргументи додељивања Ñе поÑтављају у окружењу за\n" +" наредбу, не Ñамо они који претходе називу наредбе.\n" +" -m Управљање поÑлом је укључено.\n" +" -n Чита наредбе али их не извршава.\n" +" -o назив-опције\n" +" Подешава променљиву према називу-опције:\n" +" allexport иÑто као -a\n" +" braceexpand иÑто као -B\n" +" emacs кориÑти Ñучеље уређивања реда у Ñтилу емакÑа\n" +" errexit иÑто као -e\n" +" errtrace иÑто као -E\n" +" functrace иÑто као -T\n" +" hashall иÑто као -h\n" +" histexpand иÑто као -H\n" +" history укључује иÑторијат наредбе\n" +" ignoreeof шкољка неће изаћи док читање међудејÑтвених\n" +" напомена краја датотеке допушта напоменама\n" +" да Ñе појављују у међудејÑтвеним наредбама\n" +" keyword иÑто као -k\n" +" monitor иÑто као -m\n" +" noclobber иÑто као -C\n" +" noexec иÑто као -n\n" +" noglob иÑто као -f\n" +" nolog тренутно прихваћено али занемарено\n" +" notify иÑто као -b\n" +" nounset иÑто као -u\n" +" onecmd иÑто као -t\n" +" physical иÑто као -P\n" +" pipefail вредноÑÑ‚ резултата Ñпојнице јеÑте Ñтање поÑледње " +"наредбе\n" +" за прекид Ñа не-нултим Ñтањем, или Ñа нулом ако " +"ниједна\n" +" наредба није завршила Ñа не-нултим Ñтањем\n" +" posix мења понашање баша где Ñе оÑновна радња " +"разликује\n" +" од Ñтандарда ПоÑикÑа да би одговарала Ñтандарду\n" +" privileged иÑто као -p\n" +" verbose иÑто као -v\n" +" vi кориÑти Ñучеље уређивања реда у Ñтилу вија\n" +" xtrace иÑто као -x\n" +" -p Укључено кад год Ñе ибови Ñтварног и ефективног кориÑника не " +"подударају.\n" +" ИÑкључује обраду датотеке „$ENV“ и увоз функција шкољке. " +"ИÑкључивање ове\n" +" опције доводи до тога да ефективни јиб и гиб буду подешени на " +"Ñтварни\n" +" јиб и гиб.\n" +" -t Излази након читања и извршавања једне наредбе.\n" +" -u Сматра променљиве раÑподешавања за грешку приликом замењивања.\n" +" -v ИÑпиÑује редове улаза шкољке како бивају читани.\n" +" -x ИÑпиÑује наредбе и њихове аргументе како бивају извршени.\n" +" -B шкољка ће обавити ширење заграде\n" +" -C Ðко је подешено, онемогућава препиÑивање поÑтојећих редовних\n" +" датотека преуÑмеравањем излаза.\n" +" -E Ðко је подешено, хватање ГРЕШКЕ Ñе наÑлеђује функцијама шкољке.\n" +" -H Укључује замену иÑторијата у Ñтилу !. Ова опција је укључена\n" +" по оÑнови када је шкољка међудејÑтвена.\n" +" -P Ðко је подешено, не решава Ñимболичке везе приликом извршавања\n" +" наредби као што је „cd“ која мења текући директоријум.\n" +" -T Ðко је подешено, хватања ПРОЧИШЋÐÐ’ÐЊРи РЕЗУЛТÐТРÑе наÑлеђују " +"функцијама шкољке.\n" +" -- Додељује Ñве преоÑтале аргументе положајним параметрима.\n" +" Ðко нема преоÑталих аргумената, положајни параметри Ñе\n" +" раÑподешавају.\n" +" - Додељује Ñве преоÑтале аргументе положајним параметрима.\n" +" Опције „-x“ и „-v“ Ñу иÑкључене.\n" +" \n" +" Коришћење + радије него - доводи до иÑкључивања ових опција. Опције\n" +" могу такође бити коришћене над призивањем шкољке. Текући Ñкуп опција\n" +" може бити пронађен у $-. ПреоÑталих n ÐРГ-та јеÑу положајни параметри\n" +" и додељени Ñу, по реду, $1, $2, .. $n. Ðко ниÑу дати ÐРГументи, Ñве\n" +" променљиве шкољке Ñе иÑпиÑују.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није дата неиÑправна опција." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"РаÑподешава вредноÑти и оÑобине променљивих и функција шкољке.\n" +" \n" +" За Ñваки ÐÐЗИВ, уклања одговарајућу променљиву или функцију.\n" +" \n" +" Опције:\n" +" -f\tÑматра Ñваки ÐÐЗИВ као функцију шкољке\n" +" -v\tÑматра Ñваки ÐÐЗИВ као променљиву шкољке\n" +" -n\tÑматра Ñваки ÐÐЗИВ као упуту назива и раÑподешава\n" +" \t Ñаму променљиву радије него упуте променљиве\n" +" \n" +" Без опција, „unset“ прво покушава да раÑподеÑи променљиву, а ако то не " +"уÑпе,\n" +" покушава да раÑподеÑи функцију.\n" +" \n" +" Ðеке променљиве не могу бити раÑподешене; видите такође „readonly“.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако је " +"ÐÐЗИВ Ñамо за читање." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Подешава оÑобину извоза за променљиве шкољке.\n" +" \n" +" Означава Ñваки ÐÐЗИВ за ÑамоÑталан извоз у окружење накнадно извршених\n" +" наредби. Ðко је доÑтављена ВРЕДÐОСТ, додељује ВРЕДÐОСТ пре извоза.\n" +" \n" +" Опције:\n" +" -f\tупућује на функције шкољке\n" +" -n\tуклања ÑвојÑтво извоза из Ñваког ÐÐЗИВÐ\n" +" -p\tприказује ÑпиÑак Ñвих извезених променљивих и функција\n" +" \n" +" Ðргумент „--“ иÑкључује даљу обраду опције.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако је дата неиÑправна опција или је ÐÐЗИВ " +"неиÑправан." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Означава променљиве шкољке непроменљивим.\n" +" \n" +" Означава Ñваки ÐÐЗИВ као Ñамо за читање; вредноÑти тих ÐÐЗИВРне могу " +"бити\n" +" измењене подÑеквенционалним додељивањем. Ðко је доÑтављена ВРЕДÐОСТ, " +"додељује\n" +" ВРЕДÐОСТ пре него ли јеозначи Ñамо за читање.\n" +" \n" +" Опције:\n" +" -a\tупућује на променљиве попиÑивог низа\n" +" -A\tупућује на променљиве придруживог низа\n" +" -f\tупућује на функције шкољке\n" +" -p\tприказује ÑпиÑак Ñвих променљивих и функција Ñамо за читање, " +"завиÑно\n" +" од тога да ли је опција „-f“ дата или није\n" +" \n" +" Ðргумент „--“ иÑкључује даље обрађивање опције.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако је " +"ÐÐЗИВ неиÑправан." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Помера параметре положаја.\n" +" \n" +" Преименује параметре положаја $N+1,$N+2 ... у $1,$2 ... Ðко N није\n" +" дато, подразумева Ñе да је 1.\n" +" \n" +" Излазно Ñтање:\n" +" Резултати Ñу уÑпешни оÑим ако N није негативно иливеће од $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Извршава наредбе из датотеке у текућој шкољци.\n" +" \n" +" Чита и извршава наредбе из ДÐТОТЕКЕ у текућој шкољци. УноÑи у\n" +" $ПУТÐЊИ Ñе кориÑте за налажење директоријума који Ñадржи ДÐТОТЕКУ.\n" +" Ðко је доÑтављен неки од ÐРГУМЕÐТÐТÐ, поÑтају параметри положаја\n" +" приликом извршавања ДÐТОТЕКЕ.\n" +" \n" +" Излазно Ñтање:\n" +" Даје Ñтање поÑледње извршене наредбе у ДÐТОТЕЦИ; не уÑпева\n" +" ако назив ДÐТОТЕКЕ не може бити прочитан." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"ОбуÑтавља извршавање шкољке.\n" +" \n" +" ОбуÑтавља извршавање ове шкољке Ñве док не прими Ñигнал БРОЈ_СИГÐÐЛÐ.\n" +" ОÑим ако ниÑу приÑиљене, шкољке пријављивања не могу бити обуÑтављене.\n" +" \n" +" Опције:\n" +" -f\tприморава обуÑтављање, чак и ако је шкољка пријављивања\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није укључено управљање поÑлом или ако " +"не дође до грешке." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Процењује уÑловни израз.\n" +" \n" +" Излази Ñа Ñтањем 0 (тачно) или 1 (нетачно) у завиÑноÑти од\n" +" процене ИЗРÐЗÐ. Изрази могу бити једночлани или двочлани. Једночлани\n" +" изрази Ñе чеÑто кориÑте за иÑпитивање Ñтања датотеке. Ту Ñу такође и\n" +" оператори ниÑке и оператори поређења бројева.\n" +" \n" +" Понашање пробе завиÑи од броја аргумената. Прочитајте\n" +" Ñтраницу упутÑтва баша потпуну одредбу.\n" +" \n" +" Оператори датотеке:\n" +" \n" +" -a ДÐТОТЕКРТачно ако датотека поÑтоји.\n" +" -b ДÐТОТЕКРТачно ако је датотека поÑебног блока.\n" +" -c ДÐТОТЕКРТачно ако је датотека поÑебног знака.\n" +" -d ДÐТОТЕКРТачно ако је датотека директоријум.\n" +" -e ДÐТОТЕКРТачно ако датотека поÑтоји.\n" +" -f ДÐТОТЕКРТачно ако датотека поÑтоји и ако је обична " +"датотека.\n" +" -g ДÐТОТЕКРТачно ако је датотека подеÑи-иб-групе.\n" +" -h ДÐТОТЕКРТачно ако је датотека Ñимболичка веза.\n" +" -L ДÐТОТЕКРТачно ако је датотека Ñимболичка веза.\n" +" -k ДÐТОТЕКРТачно ако датотека има Ñвој „лепљиви“ Ñкуп бита.\n" +" -p ДÐТОТЕКРТачно ако је датотека именована Ñпојка.\n" +" -r ДÐТОТЕКРТачно ако датотеку Ñамо ви можете да читате.\n" +" -s ДÐТОТЕКРТачно ако датотека поÑтоји и није празна.\n" +" -S ДÐТОТЕКРТачно ако је датотека прикључница.\n" +" -t ФД Тачно ако је ФД отворен на терминалу.\n" +" -u ДÐТОТЕКРТачно ако је датотека подеÑи-иб-кориÑника.\n" +" -w ДÐТОТЕКРТачно ако у датотеку можете ви да пишете.\n" +" -x ДÐТОТЕКРТачно ако датотеку можете ви да извршите.\n" +" -O ДÐТОТЕКРТачно ако је датотека заправо у вашем влаÑништву.\n" +" -G ДÐТОТЕКРТачно ако је датотека заправо у влаÑништву ваше " +"групе.\n" +" -N ДÐТОТЕКРТачно ако је датотека измењена након поÑледњег " +"читања.\n" +" \n" +" ДÐТОТЕКÐ1 -nt ДÐТОТЕКÐ2 Тачно ако је датотека1 новија од датотеке2 " +"(према датуму измене).\n" +" \n" +" ДÐТОТЕКÐ1 -ot ДÐТОТЕКÐ2 Тачно ако је датотека1 Ñтарија од датотеке2.\n" +" \n" +" ДÐТОТЕКÐ1 -ef ДÐТОТЕКÐ2 Тачно ако је датотека1 чврÑта веза до " +"датотеке2.\n" +" \n" +" Оператори ниÑке:\n" +" \n" +" -z ÐИСКРТачно ако је ниÑка празна.\n" +" \n" +" -n ÐИСКÐ\n" +" ÐИСКРТачно ако ниÑка није празна.\n" +" \n" +" ÐИСКÐ1 = ÐИСКÐ2 Тачно ако Ñу ниÑке једнаке.\n" +" ÐИСКÐ1 != ÐИСКÐ2 Тачно ако ниÑке ниÑу једнаке.\n" +" ÐИСКÐ1 < ÐИСКÐ2 Тачно ако ÐИСКÐ1 долази пре ÐИСКЕ2 " +"лекÑикографÑки.\n" +" ÐИСКÐ1 > ÐИСКÐ2 Тачно ако ÐИСКÐ1 долази поÑле ÐИСКЕ2 " +"лекÑикографÑки.\n" +" \n" +" ОÑтали оператори:\n" +" \n" +" -o ОПЦИЈРТачно ако је опција шкољке ОПЦИЈРукључена.\n" +" -v ПРОМ Тачно ако је променљива шкољке ПРОМ подешена\n" +" -R ПРОМ Тачно ако је променљива шкољке ПРОМ подешена и ако " +"је упута назива.\n" +" ! ИЗРÐЗ Тачно ако је израз нетачан.\n" +" ИЗРÐЗ1 -a ИЗРÐЗ2 Тачно ако је тачан и израз1 И израз2.\n" +" ИЗРÐЗ1 -o ИЗРÐЗ2 Тачно ако је тачан или израз1 ИЛИ израз2.\n" +" \n" +" арг1 ОП арг2 Ðритметичка проба. ОП је једно од Ñледећег: -eq, -" +"ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Ðритметички двочлани оператори дају тачно ако је ÐРГ1 једнак, није-" +"једнак,\n" +" мањи-од, мањи-од-или-једнак, већи-од, или већи-од-или-једнак Ñа ÐРГ2.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат ако Ñе ИЗРÐЗ процени на тачно; неуÑпех ако Ñе " +"ИЗРÐЗ процени\n" +" на нетачно или ако је дат неиÑправан аргумент." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Процењује уÑловни израз.\n" +" \n" +" Ово је Ñиноним за уграђеноÑÑ‚ „test“, али поÑледњи аргумент мора\n" +" бити доÑловна ], да поклопи отворену [." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Приказује времена процеÑа.\n" +" \n" +" ИÑпиÑује нагомилана времена кориÑника и ÑиÑтема за шкољку и за Ñве\n" +" њене проиÑтекле процеÑе.\n" +" \n" +" Излазно Ñтање:\n" +" Увек уÑпешно." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Хвата Ñигнале и друге догађаје.\n" +" \n" +" Одређује и покреће руковаоце који ће бити покренути када шкољка прими\n" +" Ñигнале или друге уÑлове.\n" +" \n" +" ÐРГ је наредба за читање и извршавање када шкољка прими ОДРЕДБУ_СИГÐÐЛÐ\n" +" Ñигнала. Ðко ÐРГ недоÑтаје (а доÑтављена је једна ОДРЕДБÐ_СИГÐÐЛÐ) или\n" +" „-“, Ñваки наведени Ñигнал Ñе враћа на првобитну вредноÑÑ‚. Ðко је ÐРГ\n" +" ништавна ниÑка Ñвака ОДРЕДБÐ_СИГÐÐЛРÑе занемарује од Ñтране шкољке и " +"од\n" +" наредби које призива.\n" +" \n" +" Ðко је ОДРЕДБÐ_СИГÐÐЛРИЗÐЂИ (0) ÐРГ Ñе извршава при излаÑку из шкољке.\n" +" Ðко је ОДРЕДБÐ_СИГÐÐЛРПРОЧИСТИ, ÐРГ Ñе извршава пре Ñваке једноÑтавне\n" +" наредбе. Ðко је ОДРЕДБÐ_СИГÐÐЛРВРÐТИ, ÐРГ Ñе извршава Ñваки пут када " +"Ñе\n" +" заврши извршавање функције шкољке или ÑпиÑа покренутих . или " +"уграђеноÑти\n" +" извора. ОДРЕДБÐ_СИГÐÐЛРили ГРЕШКРзначи извршавање ÐРГ-а Ñваки пут " +"када\n" +" би неуÑпех наредбе довео до излаÑка шкољке када је укључена опција „-" +"e“.\n" +" \n" +" Ðко ниÑу доÑтављени аргументи, „trap“ иÑпиÑује ÑпиÑак наредби " +"придружених\n" +" Ñваком Ñигналу.\n" +" \n" +" Опције:\n" +" -l\tиÑпиÑује ÑпиÑак назива Ñигнала и њихових одговарајућих бројева\n" +" -p\tприказује наредбе хватања придружене Ñвакој ОДРЕДБИ_СИГÐÐЛÐ\n" +" \n" +" Свака ОДРЕДБÐ_СИГÐÐЛРје или назив Ñигнала у или број " +"Ñигнала.\n" +" Ðазиви Ñигнала ниÑу оÑетљиви на величину Ñлова а Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð¡Ð˜Ð“ је опција.\n" +" Сигнал може бити поÑлат шкољци помоћу „kill -signal $$“.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим за неиÑправну ОДРЕДБÐ_СИГÐÐЛРили за " +"неиÑправну опцију." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Приказује податке о врÑти наредбе.\n" +" \n" +" За Ñваки ÐÐЗИВ, показује како би био тумачен ако би Ñе кориÑтио као\n" +" назив наредбе.\n" +" \n" +" Опције:\n" +" -a\tприказује Ñва меÑта која Ñадрже извршну под називом ÐÐЗИВ;\n" +" \t укључује пÑеудониме, уграђеноÑти, и функције, ако и Ñамо ако\n" +" \t опција „-p“ није такође коришћена\n" +" -f\tпотиÑкује тражење функције шкољке\n" +" -P\tприморава претрагу ПУТÐЊЕ за Ñваким ÐÐЗИВОМ, чак и ако је " +"пÑеудоним,\n" +" \t уграђеноÑÑ‚, или функција, и враћа назив датотеке диÑка која ће " +"бити\n" +" \t извршена\n" +" -p\tдаје или назив датотеке диÑка која ће бити извршена, или ништа\n" +" \t ако „type -t ÐÐЗИВ“ неће дати „датотеку“.\n" +" -t\tиÑпиÑује једну реч која је једна од Ñледећих: „alias“, „keyword“,\n" +" \t „function“, „builtin“, „file“ или „“, ако је ÐÐЗИВ пÑеудоним, " +"реч\n" +" \t резервиÑана шкољком, функција шкољке, уграђеноÑÑ‚ шкољке, " +"датотека диÑка,\n" +" или ако није пронађена\n" +" \n" +" Ðргументи:\n" +" ÐÐЗИВ\tÐазив наредбе за тумачење.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат ако Ñу пронађени Ñви ÐÐЗИВИ; неуÑпех ако ниједан " +"није пронађен." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Мења ограничења изворишта шкољке.\n" +" \n" +" Обезбеђује управљање над извориштима доÑтупним шкољци и обрађује\n" +" његово Ñтварање, на ÑиÑтемима који омогућавају такво управљање.\n" +" \n" +" Опције:\n" +" -S\tкориÑти „меко“ ограничење изворишта\n" +" -H\tкориÑти „јако“ ограничење изворишта\n" +" -a\tизвештено је о Ñвим текућим ограничењима\n" +" -b\tвеличина међумеморије прикључнице\n" +" -c\tнајвећа величина Ñтворених кључних датотека\n" +" -d\tнајвећа величина подеока податка процеÑа\n" +" -e\tнајвећа хитноÑÑ‚ заказивања („фино“)\n" +" -f\tнајвећа величина датотеке коју запише шкољка и њен пород\n" +" -i\tнајвећи број Ñигнала на чекању\n" +" -k\tнајвећи број к-чекања додељених овом процеÑу\n" +" -l\tнајвећа величина коју Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¼Ð¾Ð¶Ðµ да закључа у меморији\n" +" -m\tнајвећа величина боравишног Ñкупа\n" +" -n\tнајвећи број отворених опиÑника датотеке\n" +" -p\tвеличина међумеморије Ñпојке\n" +" -q\tнајвећи број бајтова у редовима поруке ПОСИКС-а\n" +" -r\tнајвећа хитноÑÑ‚ заказивања у Ñтварном времену\n" +" -s\tнајвећа величина Ñпремника\n" +" -t\tнајвећи Ð¸Ð·Ð½Ð¾Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð° процеÑора у Ñекундама\n" +" -u\tнајвећи број кориÑничких процеÑа\n" +" -v\tвеличина виртуелне меморије\n" +" -x\tнајвећи број закључавања датотеке\n" +" -P\tнајвећи број пÑеудотерминала\n" +" -T\tнајвећи број нити\n" +" \n" +" ÐиÑу Ñве опције доÑтупне на Ñвим платформама.\n" +" \n" +" Ðко је дато ОГРÐÐИЧЕЊЕ, то је нова вредноÑÑ‚ наведеног изворишта;\n" +" поÑебне вредноÑти ОГРÐÐИЧЕЊР„soft“, „hard“, и „unlimited“ Ñтоје\n" +" за текуће меко ограничење, текуће јако ограничење, и без ограничења.\n" +" У Ñупротном, тренутна вредноÑÑ‚ наведеног изворишта Ñе иÑпиÑује. Ðко\n" +" није дата ниједна опција, онда Ñе подразумева „-f“.\n" +" \n" +" ВредноÑти Ñу у 1024-битном повећавању, изузев за „-t“ која је у " +"Ñекундама,\n" +" „-p“ која Ñе повећава за 512 бајта, и „-u“ која је произвољан број\n" +" процеÑа.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако " +"не дође до грешке." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Приказује или подешава маÑку режима датотеке.\n" +" \n" +" Подешава кориÑничку маÑку Ñтварања датотеке на РЕЖИМ. Ðко је РЕЖИМ\n" +" изоÑтављен, иÑпиÑује текућу вредноÑÑ‚ маÑке.\n" +" \n" +" Ðко РЕЖИМ почиње цифром, тумачи Ñе као октални број; у Ñупротном то је\n" +" Ñимболичка ниÑка режима као она коју прихвата „chmod(1)“.\n" +" \n" +" Опције:\n" +" -p\tако је РЕЖИМ изоÑтављен, иÑпиÑује у облику који може бити поново " +"коришћен као улаз\n" +" -S\tчини излаз Ñимболичким; у Ñупротном излаз је октални број\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако је РЕЖИМ неиÑправан или ако је дата " +"неиÑправна опција." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Чека на довршавање поÑла и даје излазно Ñтање.\n" +" \n" +" Чека на Ñваки Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¾Ð´Ñ€ÐµÑ’ÐµÐ½ ИБ-ом, који може бити ИБ процеÑа или\n" +" одредба поÑла, и извештава о његовом Ñтању окончавања. Ðко ИБ није\n" +" дат, чека на Ñве тренутно радне потпроцеÑе, а излазно Ñтање је нула.\n" +" Ðко је ИБ одредба поÑла, чека на Ñве процеÑе у тој Ñпојници поÑла.\n" +" \n" +" Ðко је доÑтављена опција „-n“, чека на Ñледећи поÑао да заврши и\n" +" иÑпиÑује његово излазно Ñтање.\n" +" \n" +" Ðко је доÑтављена опција „-f“, а контрола поÑла је укључена, чека на\n" +" наведени ИБ да оконча, умеÑто да чека на њега да промени ÑтатуÑ.\n" +" \n" +" Излазно Ñтање:\n" +" ИÑпиÑује Ñтање поÑледњег ИБ-а; неуÑпех ако је ИБ неиÑправан или ако је\n" +" дата неиÑправна опција." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Чека на довршавање процеÑа и даје излазно Ñтање.\n" +" \n" +" Чека на Ñваки Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð°Ð²ÐµÐ´ÐµÐ½ ПИБ-ом и извештава о његовом излазном " +"Ñтању.\n" +" Ðко ПИБ ниије дат, чека на Ñве тренутно радне потпроцеÑе, а враћено " +"Ñтање\n" +" је нула. ПИБ мора бити ИБ процеÑа.\n" +" \n" +" Излазно Ñтање:\n" +" ИÑпиÑује Ñтање поÑледњег ПИБ-а; неуÑпех ако је ПИБ неиÑправан или ако је " +"дата\n" +" неиÑправна опција." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Извршава наредбе за Ñваког члана на ÑпиÑку.\n" +" \n" +" Петља `„for“ извршава низ наредбиза Ñваког члана на ÑпиÑку Ñтавки.\n" +" Ðко „in WORDS ...;“ није приÑутно, тада Ñе подразумева „in \"$@\"“.\n" +" За Ñваки елемент у РЕЧИМÐ, ÐÐЗИВ Ñе подешава на тај елемент, и\n" +" ÐÐРЕДБЕ Ñе извршавају.\n" +" \n" +" Излазно Ñтање:\n" +" ИÑпиÑује Ñтање поÑледње извршене наредбе." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ðритметика за петљу.\n" +" \n" +" ИÑто што и\n" +" \t(( ИЗРÐЗ1 ))\n" +" \twhile (( ИЗРÐЗ2 )); do\n" +" \t\tÐÐРЕДБЕ\n" +" \t\t(( ИЗРÐЗ3 ))\n" +" \tdone\n" +" ИЗРÐЗ1, ИЗРÐЗ2, и ИЗРÐЗ3 јеÑу аритметички изрази. Ðко је изоÑтављен " +"неки израз,\n" +" понаша Ñе као да Ñе процењује на 1.\n" +" \n" +" Излазно Ñтање:\n" +" ИÑпиÑује Ñтање поÑледње извршене наредбе." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Бира речи Ñа ÑпиÑка и извршава наредбе.\n" +" \n" +" РЕЧИ Ñу раширене, Ñтварајући ÑпиÑак речи. Скуп раширених\n" +" речи Ñе иÑпиÑује на Ñтандардној грешци, где Ñвакој претходи\n" +" број. Ðко „in WORDS“ није приÑутно, подразумева Ñе „in \"$@\"“.\n" +" ПС3 упит Ñе тада приказује а ред Ñе чита Ñа Ñтандардног улаза.\n" +" Ðко Ñе ред ÑаÑтоји од броја који одговара једној од приказаних\n" +" речи, тада Ñе ÐÐЗИВ подешава на ту реч. Ðко је ред празан,\n" +" РЕЧИ и упит Ñе поново приказују. Ðко је прочитан крај датотеке, \n" +" наредба Ñе довршава. Свака друга прочитана вредноÑÑ‚ доводи\n" +" до тога да ÐÐЗИВ бива подешен на ништа. Читање реда Ñе чува\n" +" у променљивој ОДГОВОРИ. ÐÐРЕДБЕ Ñе извршавају након Ñваког\n" +" избора Ñве док Ñе не изврши наредба за прекид.\n" +" \n" +" Излазно Ñтање:\n" +" ИÑпиÑује Ñтање поÑледње извршене наредбе." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Извештава о утрошеном времену извршавањем Ñпојног реда.\n" +" \n" +" Извршава СПОЈÐИРЕД и иÑпиÑује Ñажетак Ñтварног времена, кориÑничког\n" +" времена процеÑора, и времена ÑиÑтемÑког процеÑора утрошеног на\n" +" извршавање СПОЈÐОГРЕДРкада Ñе оконча.\n" +" \n" +" Опције:\n" +" -p\tиÑпиÑује Ñажетак времена у преноÑном запиÑу ПоÑикÑа\n" +" \n" +" ВредноÑÑ‚ променљиве ЗÐПИСÐВРЕМЕÐÐ Ñе кориÑти као излазни запиÑ.\n" +" \n" +" Излазно Ñтање:\n" +" Стање резултата јеÑте Ñтање резултата СПОЈÐОГРЕДÐ." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Извршава наредбе на оÑнову поклапања шаблона.\n" +" \n" +" Изборно извршава ÐÐРЕДБЕ на оÑнову РЕЧИ која поклапа ШÐБЛОÐ.\n" +" | Ñе кориÑти за раздвајање више шаблона.\n" +" \n" +" Излазно Ñтање:\n" +" ИÑпиÑује Ñтање поÑледње извршене наредбе." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Извршава наредбе на оÑнову уÑловноÑти.\n" +" \n" +" Извршава Ñе ÑпиÑак „if ÐÐРЕДБЕ“. Ðко је његово излазно Ñтање нула, тада " +"Ñе\n" +" извршава ÑпиÑак „then ÐÐРЕДБЕ“. У Ñупротном, Ñваки ÑпиÑак „elif " +"ÐÐРЕДБЕ“\n" +" Ñе извршава на Ñмену, и ако је његово излазно Ñтање нула, одговарајући " +"ÑпиÑак\n" +" „then ÐÐРЕДБЕ“ Ñе извршава и наредба „if“ Ñе завршава. У Ñупротном, " +"извршава\n" +" Ñе ÑпиÑак „else ÐÐРЕДБЕ“, ако поÑтоји. Излазно Ñтање читаве " +"конÑтрукције је\n" +" излазно Ñтање поÑледње извршене наредбе, или нула ако нема иÑпробаног " +"уÑлова.\n" +" \n" +" Излазно Ñтање:\n" +" ИÑпиÑује Ñтање поÑледње извршене наредбе." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Извршава наредбе након што Ñе проба уÑпешно обави.\n" +" \n" +" Шири и извршава ÐÐРЕДБЕ након што завршна наредба у „while“ ÐÐРЕДБÐМÐ\n" +" има излазно Ñтање нуле.\n" +" \n" +" Излазно Ñтање:\n" +" ИÑпиÑује Ñтање поÑледње извршене наредбе." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Извршава наредбе након што Ñе проба уÑпешно обави.\n" +" \n" +" Шири и извршава ÐÐРЕДБЕ након што завршна наредба у „until“ ÐÐРЕДБÐМÐ\n" +" има излазно Ñтање које није нула.\n" +" \n" +" Излазно Ñтање:\n" +" ИÑпиÑује Ñтање поÑледње извршене наредбе." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Ствара ÐºÐ¾Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¿Ð¾Ð´ називом ÐÐЗИВ.\n" +" \n" +" Извршава наредбу неÑаглаÑно, Ñа Ñтандардним излазом и Ñтандардним\n" +" улазом наредбе повезане путем Ñпојке Ñа опиÑницима датотека додељених\n" +" да назначе 0 и 1 ÐÐЗИВРпроменљиве низа у шкољци извршавања.\n" +" ОÑновни ÐÐЗИВ је „COPROC“.\n" +" \n" +" Излазно Ñтање:\n" +" Ðаредба копроцеÑа даје излазно Ñтање 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Одређује функцију шкољке.\n" +" \n" +" Ствара функцију шкољке под називом ÐÐЗИВ. Када Ñе призове као једна " +"наредба,\n" +" ÐÐЗИВ покреће ÐÐРЕДБЕ у контекÑту шкољке позивања. Када Ñе призове " +"ÐÐЗИВ,\n" +" аргументи Ñе проÑлеђују функцији као $1...$n, а назив функције Ñе налази " +"у\n" +" $ÐÐЗИВУ_ФУÐКЦИЈЕ.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако је ÐÐЗИВ Ñамо за читање." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Групише наредбе као јединицу.\n" +" \n" +" Покреће Ñкуп наредби у групи. Ово је један од начина за преуÑмеравање\n" +" читавог Ñкупа наредби.\n" +" \n" +" Излазно Ñтање:\n" +" ИÑпиÑује Ñтање поÑледње извршене наредбе." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"ÐаÑтавља поÑао у првом плану.\n" +" \n" +" ИÑто као и аргумент ОДРЕДБÐ_ПОСЛРу наредби „fg“. ÐаÑтавља зауÑтављени\n" +" или поÑао у позадини. ОДРЕДБÐ_ПОСЛРможе да наведе назив поÑла или " +"број\n" +" поÑла. Пропративши ОДРЕДБУ_ПОСЛРÑа & поÑтавља поÑао у позадину, као\n" +" да је одредба поÑла доÑтављена као аргумент уз „bg“.\n" +" \n" +" Излазно Ñтање:\n" +" Даје Ñтање наÑтављеног поÑла." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Процењује аритметички израз.\n" +" \n" +" ИЗРÐЗ Ñе процењује у Ñкладу Ñа правилима за аритметичко процењивање.\n" +" ИÑто што и „let ИЗРÐЗ“.\n" +" \n" +" Излазно Ñтање:\n" +" Даје 1 ако Ñе ИЗРÐЗ процени на 0; у Ñупротном даје 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Извршава уÑловну наредбу.\n" +" \n" +" Даје Ñтање 0 или 1 у завиÑноÑти од процене уÑловног израз ИЗРÐЗ.\n" +" Изрази Ñу ÑаÑтављени од иÑтих примарних које кориÑти уграђеноÑÑ‚\n" +" „test“, и може бити комбиновано употребом Ñледећих оператора:\n" +" \n" +" ( ИЗРÐЗ )\t Даје вредноÑÑ‚ ИЗРÐЗÐ\n" +" ! ИЗРÐЗ\t\tТачно ако је ИЗРÐЗ нетачан; у Ñупротном нетачно\n" +" ИЗРÐЗ1 && ИЗРÐЗ2\tТачно ако Ñу и ИЗРÐЗ1 и ИЗРÐЗ2 тачни; у Ñупротном " +"нетачно\n" +" ИЗРÐЗ1 || ИЗРÐЗ2\tТачно ако је или ИЗРÐЗ1 или ИЗРÐЗ2 тачан; у " +"Ñупротном нетачно\n" +" \n" +" КÐда Ñе кориÑте оператори „==“ и „!=“, ниÑка Ñа деÑне Ñтране оператора\n" +" Ñе кориÑти као шаблон а поређење Ñа шаблоном Ñе обавља. Када Ñе " +"кориÑти\n" +" оператор „=~“, ниÑка Ñа деÑне Ñтране оператора Ñе поклапа као регуларни\n" +" израз.\n" +" \n" +" Оператори && и || не процењују ИЗРÐЗ2 ако је ИЗРÐЗ1 довољан за " +"одређивање\n" +" вредноÑти израза.\n" +" \n" +" Излазно Ñтање:\n" +" 0 или 1 у завиÑноÑти од вредноÑÑ‚ ИЗРÐЗÐ." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Општи називи променљивих шкољке и употреба.\n" +" \n" +" ИЗДÐЊЕ_БÐШРПодаци о издању за овај Баш.\n" +" ЦДПУТÐЊРСпиÑак директоријума раздвојен двотачком за тражење\n" +" директоријума који Ñу дати као аргументи за „cd“.\n" +" ОПШТЕЗÐÐЕМÐРИ СпиÑак шаблона раздвојен двотачком који опиÑује " +"називе\n" +" датотека који ће бити занемарени ширењем назива " +"путање.\n" +" ИСТОРИОТЕКРÐазив датотеке у којој је Ñмештен иÑторијат " +"наредби.\n" +" ВЕЛИЧИÐÐИСТОРИОТЕКЕ Ðајвећи број редова које може да Ñадржи ова " +"датотека.\n" +" ВЕЛИЧИÐÐИСТОРИЈÐТРÐајвећи број редова иÑторијата којима покренута\n" +" шкољка може да приÑтупи.\n" +" ЛИЧÐО Потпуна путања до вашег директоријума пријављивања.\n" +" ÐÐЗИВДОМÐЋИÐÐ Ðазив текућег домаћина.\n" +" ВРСТÐДОМÐЋИÐÐ Ð’Ñ€Ñта процеÑора под којим ради ово издање Баша.\n" +" ЗÐÐЕМÐРИКРД Управља радњом шкољке при пријему знака за крај " +"датотеке\n" +" Ñамо као улаза. Ðко је подешено, онда је његова " +"вредноÑÑ‚\n" +" број знакова КРД-а који могу бити виђени у реду " +"празног\n" +" реда пре него ли шкољка изађе (оÑновно је 10). " +"Када\n" +" није подешено, КРД значи крај улаза.\n" +" ВРСТÐМÐШИÐЕ ÐиÑка која опиÑује текући ÑиÑтем на коме је Баш " +"покренут.\n" +" ПРОВЕРÐПОШТЕ Колико чеÑто, у Ñекундама, Баш првоерава нову " +"пошту.\n" +" ПУТÐЊÐПОШТЕ СпиÑак датотека раздвојен двотачком које Баш " +"проверава\n" +" за новом поштом.\n" +" ВРСТÐОСРИздање ЈуникÑа на коме је покренуто ово издање " +"Баша.\n" +" ПУТÐЊРСпиÑак директоријума раздвојен двотачком за " +"претрагу\n" +" приликом тражења наредби.\n" +" ÐÐРЕДБÐ_УПИТРÐаредба која ће бити извршена пре иÑпиÑивања Ñваког\n" +" главног упита.\n" +" ÐГУ1 ÐиÑка главног упита.\n" +" ÐСУ2 ÐиÑка Ñпоредног упита.\n" +" ШРД Пуна путања текућег директоријума.\n" +" ОПЦИЈЕШКОЉКЕ СпиÑак раздвојен двотачком укључених опција шкољке.\n" +" ТЕРМИÐÐЛ Ðазив врÑте текућег терминала.\n" +" ЗÐПИСВРЕМЕÐРИзлазни Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° ÑтатиÑтике времена које приказује\n" +" резервиÑана реч „time“.\n" +" Ñам_наÑтави Ðе-ништа значи да је реч наредбе која Ñе појављује " +"на реду\n" +" Ñама по Ñеби прва тражена на ÑпиÑку тренутно " +"зауÑтављених\n" +" поÑлова. Ðко Ñе ту пронађе, тај поÑао Ñе поÑтавља у " +"први\n" +" план. ВредноÑÑ‚ „exact“ значи да реч наредбе мора " +"тачно да\n" +" одговара наредби на ÑпиÑку зауÑтављених поÑлова. " +"ВредноÑÑ‚\n" +" „substring“ значи да реч наредбе мора да одговара " +"подниÑци\n" +" поÑла. Свака друга вредноÑÑ‚ значи да наредба мора " +"бити\n" +" Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð·Ð°ÑƒÑтављеног поÑла.\n" +" знакиÑторијата Знаци који управљају ширењем иÑторијата и брзом " +"заменом.\n" +" Први знак јеÑте знак замене иÑторијата, обично је то " +"„!“.\n" +" Други јеÑте знак „брзе замене“, обично је то „^“. " +"Трећи\n" +" јеÑте знак „напомене иÑторијата“, обично је то „#“.\n" +" ЗÐÐЕМÐРИИСТОРИЈÐТ СпиÑак шаблона раздвојен двотачком коришћених за " +"одлучивање\n" +" о наредбама које требају бити Ñачуване на ÑпиÑку " +"иÑторијата.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Додаје директоријуме у Ñпремник.\n" +" \n" +" Додаје директоријум на врх Ñпремника директоријума, или окреће\n" +" Ñпремник, чинећи нови први у Ñпремнику текућим радним директоријумом.\n" +" Без аргумената, замењује два прва директоријума.\n" +" \n" +" Опције:\n" +" -n\tПотиÑкује нормалну замену директоријума приликом додавања\n" +" \t директоријума у Ñпремник, тако да Ñе ради Ñамо Ñа Ñпремником.\n" +" \n" +" Ðргументи:\n" +" +N\tОкреће Ñпремник тако да је N-ти директоријум на врху (бројећи\n" +" Ñа леве Ñтране ÑпиÑка кога приказује „dirs“, почевши од " +"нуле).\n" +" \n" +" -N\tОкреће Ñпремник тако да је N-ти директоријум на врху (бројећи\n" +" Ñа деÑне Ñтране ÑпиÑка кога приказује „dirs“, почевши од " +"нуле).\n" +" \n" +" dir\tДодајеs ДИР у Ñпремник директоријума на врху, учинивши га новим\n" +" \t текућим радним директоријумом.\n" +" \n" +" УграђеноÑÑ‚ „dirs“ приказује Ñпремник директоријума.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није доÑтављен неиÑправан аргумент или " +"замена\n" +" директоријума не уÑпе." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Уклања директоријуме из Ñпремника.\n" +" \n" +" Уклања уноÑе из Ñпремника директоријума. Без аргумената, уклања први\n" +" директоријум из Ñпремника, и пребацује на нови први директоријум.\n" +" \n" +" Опције:\n" +" -n\tПотиÑкује уобичајену замену директоријума приликом уклањања\n" +" \t директоријума из Ñпремника, тако да Ñе ради Ñамо Ñа " +"Ñпремником.\n" +" \n" +" Ðргументи:\n" +" +N\tУклања N-ти ÑƒÐ½Ð¾Ñ Ð¿Ð¾Ñ‡ÐµÐ²ÑˆÐ¸ Ñа леве Ñтране ÑпиÑка кога приказује\n" +" \t „dirs“, почевши од нуле. Ðа пример: „popd +0“ уклања први\n" +" \t директоријум, „popd +1“ други.\n" +" \n" +" -N\tУклања N-ти ÑƒÐ½Ð¾Ñ Ð¿Ð¾Ñ‡ÐµÐ²ÑˆÐ¸ Ñа деÑне Ñтране ÑпиÑка кога приказује\n" +" \t „dirs“, почевши од нуле. Ðа пример: „popd -0“ уклања " +"поÑледњи\n" +" \t директоријум, „popd -1“ претпоÑледњи.\n" +" \n" +" УграђеноÑÑ‚ „dirs“ приказује Ñпремник директоријума.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није доÑтављен неиÑправан аргумент или " +"измена\n" +" директоријума не уÑпе." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Приказује Ñпремник директоријума.\n" +" \n" +" Приказује ÑпиÑак тренутно запамћених директоријума. Директоријуми\n" +" налазе Ñвој пут до ÑпиÑка помоћу наредбе „pushd“; можете да Ñе вратите\n" +" назад на ÑпиÑак помоћу наредбе „popd“.\n" +" \n" +" Опције:\n" +" -c\tчиÑти Ñпремник директоријума бриÑањем Ñвих елемената\n" +" -l\tне иÑпиÑује издања директоријума Ñа предметком тилде\n" +" \t одноÑне на ваш лични директоријум\n" +" -p\tиÑпиÑује Ñпремник директоријума Ñа једним уноÑом у реду\n" +" -v\tиÑпиÑује Ñпремник директоријума Ñа једним уноÑом у реду\n" +" Ñа предметком Ñвог положаја у Ñпремнику\n" +" \n" +" Ðргументи:\n" +" +N\tПриказујеs N-ти ÑƒÐ½Ð¾Ñ Ð±Ñ€Ð¾Ñ˜ÐµÑ›Ð¸ Ñа леве Ñтране на ÑпиÑку кога\n" +" приказује „dirs“ када Ñе призове без опција, почевши од " +"нуле.\n" +" \n" +" -N\tПриказујеs N-ти ÑƒÐ½Ð¾Ñ Ð±Ñ€Ð¾Ñ˜ÐµÑ›Ð¸ Ñа деÑне Ñтране на ÑпиÑку кога\n" +" приказује „dirs“ када Ñе призове без опција, почевши од " +"нуле.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако " +"не дође до грешке." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Подешава и раÑподешава опције шкољке.\n" +" \n" +" Мења подешавање Ñваке оције шкољке ÐÐЗИВ_ОПЦИЈЕ. Без аргумената " +"опција,\n" +" иÑпиÑује Ñваки доÑтављени ÐÐЗИВ_ОПЦИЈЕ, или Ñве опције шкољке ако није\n" +" дат ниједан ÐÐЗИВ_ОПЦИЈЕ, Ñа назнаком да ли је Ñвака подешена или није.\n" +" \n" +" Опције:\n" +" -o\tограничава ÐÐЗИВЕ_ОПЦИЈРна оне одређене за коришћење Ñа „set -o“\n" +" -p\tиÑпиÑује Ñваку опцију љуÑке Ñа назнаком њеног Ñтања\n" +" -q\tпотиÑкује излаз\n" +" -s\tукључује (подешава) Ñваки ÐÐЗИВ_ОПЦИЈЕ\n" +" -u\tиÑкључује (раÑподешава) Ñваки ÐÐЗИВ_ОПЦИЈЕ\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат ако је ÐÐЗИВ_ОПЦИЈЕ укључен; неуÑпех ако је " +"дата\n" +" неиÑправна опција или ако је ÐÐЗИВ_ОПЦИЈЕ иÑкључен." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Обликује и иÑпиÑује ÐРГУМЕÐТЕ под управом ЗÐПИСÐ.\n" +" \n" +" Опције:\n" +" -v пром\tдодељује излаз променљивој шкољке ПРОМ умеÑто да га\n" +" \t\tприкаже на Ñтандардном излазу\n" +" \n" +" ЗÐПИС јеÑте ниÑка знака која Ñадржи три врÑте објекта: обични знаци,\n" +" који Ñе једноÑтавно умножавају на Ñтандардни излаз; низови прекида\n" +" знака, који Ñе претварају и умножавају на Ñтандардни излаз; и одредбе\n" +" запиÑа, од којих Ñвака доводи до иÑпиÑивања Ñледећег наредног " +"аргумента.\n" +" \n" +" Као додатак одредбама Ñтандардног запиÑа опиÑаних у „printf(1)“,\n" +" „printf“ тумачи:\n" +" \n" +" %b\tшири низове прекида контра коÑе црте у одговарајући аргумент\n" +" %q\tцитира аргумент на начин како би био коришћен као улаз шкољке\n" +" %(fmt)T иÑпиÑује ниÑку датум-време резултирајући коришћењем ФМТ-а " +"као\n" +" ниÑке запиÑа за „strftime(3)“\n" +" \n" +" Ð—Ð°Ð¿Ð¸Ñ Ñе поново кориÑти јер је потребно утрошити Ñве аргументе. Ðко\n" +" има више аргумената него што то захтева запиÑ, излишне одредбе запиÑа\n" +" Ñе понашају као да је доÑтављена вредноÑÑ‚ нуле или ништавна ниÑка.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако не\n" +" дође до грешке пиÑања или доделе." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Ðаводи како ће аргументе да доврши Читај ред.\n" +" \n" +" За Ñваки ÐÐЗИВ, наводи како ће аргументи бити довршени. Ðко опције\n" +" ниÑу доÑтављене, поÑтојеће одредбе довршавања Ñе иÑпиÑују на начин\n" +" који омогућава да буду поново коришћене као улаз.\n" +" \n" +" Опције:\n" +" -p\tиÑпиÑује поÑтојеће одредбе довршавања у поново употребљивом " +"запиÑу\n" +" -r\tуклања одредбу довршавања за Ñваки ÐÐЗИВ, или, ако ÐÐЗИВИ ниÑу\n" +" \t доÑтављени, Ñве одредбе довршавања\n" +" -D\tпримењује довршавања и радње као оÑновне за радње\n" +" \t без одређеног поÑебног довршавања\n" +" -E\tпримењује довршавања и радње на „празне“ наредбе --\n" +" \t довршавање покушано на празном реду\n" +" -I\tпримењује довршавања и радње на почетну (обично наредбу) реч\n" +" \n" +" Када Ñе покуша Ñа довршавањем, радње Ñе примењују по редоÑледу опција\n" +" великих Ñлова наведених горе. Опција „-D“ има првенÑтво над „-E“, и обе " +"имају предноÑÑ‚ у одноÑу на „-I“.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако " +"не дође до грешке." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Приказује могућа довршавања у завиÑноÑти од опција.\n" +" \n" +" Замишљен за коришћење из функције шкољке Ñтварајући могућа довршавања.\n" +" Ðко је доÑтављен изборни аргумент РЕЧ, Ñтварају Ñе поређења Ñа РЕЧЈУ.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако " +"не дође до грешке." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Мења или приказује опције довршавања.\n" +" \n" +" Мења опције довршавања за Ñваки ÐÐЗИВ, или, ако ÐÐЗИВИ ниÑу доÑтављени,\n" +" довршавања које Ñе тренутно извршава. Ðко ОПЦИЈЕ ниÑу дате, иÑпиÑује\n" +" опције довршавања за Ñваки ÐÐЗИВ или одредбу текућег довршавања.\n" +" \n" +" Опције:\n" +" \t-o опција\tПодешава опцију довршавања ОПЦИЈРза Ñваки ÐÐЗИВ\n" +" \t-D\t\tМења опције за „оÑновно“ довршавање наредбе\n" +" \t-E\t\tМења опције за „празно“ довршавање наредбе\n" +" \t-I\t\tМења опције за довршавање почетне речи\n" +" \n" +" Употреба „+o“ умеÑто „-o“ иÑкључује наведену опцију.\n" +" \n" +" Ðргументи:\n" +" \n" +" Сваки ÐÐЗИВ упућује на наредбу за коју одредба довршавања мора " +"претходно\n" +" бити одређена употребом уграђеноÑти „complete“. Ðко ÐÐЗИВИ ниÑу дати,\n" +" „compopt“ мора бити позвано функцијом која тренутно Ñтвара довршавања,\n" +" а опције Ñтвараоца који тренутно извршава довршавање Ñу измењене.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или " +"ÐÐЗИВ\n" +" нема одређену одредбу довршавања." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Чита редове Ñа Ñтандардног улаза у променљивој индекÑираног низа.\n" +" \n" +" Чита редове Ñа Ñтандардног улаза у променљивој индекÑираног низа ÐИЗ, " +"или\n" +" из опиÑника датотеке ОД ако је доÑтављена опција „-u“. Променљива " +"МÐПОТЕКÐ\n" +" јеÑте оÑновни ÐИЗ.\n" +" \n" +" Опције:\n" +" -d гранич КориÑти ГРÐÐИЧÐИК да оконча редове, умеÑто новог реда\n" +" -n број Умножава највише БРОЈ редова. Ðко је БРОЈ 0, умножавају " +"Ñе Ñви редови\n" +" -O порекло Почиње додељивање ÐИЗУ при индекÑу ПОРЕКЛО. ОÑновни " +"Ð¸Ð½Ð´ÐµÐºÑ Ñ˜Ðµ 0\n" +" -s број Одбацује првих БРОЈ прочитаних редова\n" +" -t Уклања пратећи ГРÐÐИЧÐИК из Ñваког прочитаног реда " +"(оÑновни нови ред)\n" +" -u од Чита редове из опиÑника датотеке ОД умеÑто Ñа Ñтандардног " +"улаза\n" +" -C опозив Процењује ОПОЗИВ Ñваког пута када Ñе прочита КОЛИЧИÐÐ " +"редова\n" +" -c количина Ðаводи број прочитаних редова између Ñваког позива за " +"ОПОЗИВ\n" +" \n" +" Ðргументи:\n" +" ÐИЗ Ðазив променљиве низа за податке датотеке\n" +" \n" +" Ðко је „-C“ доÑтављено без „-c“, оÑновна количина је 5000. Када Ñе\n" +" процени ОПОЗИВ, доÑтављен је Ð¸Ð½Ð´ÐµÐºÑ Ñледећег елемента низа који ће\n" +" бити додељен и ред који ће бити додељен том елементу као додатни\n" +" аргументи.\n" +" \n" +" Ðко није доÑтављено Ñа изричитим пореклом, мапфајл ће очиÑтити ÐИЗ пре\n" +" него што му додели.\n" +" \n" +" Излазно Ñтање:\n" +" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако је " +"ÐИЗ Ñамо\n" +" за читање или није индекÑирани низ." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Чита редове из датотеке у променљиву низа.\n" +" \n" +" Синоним за „mapfile“." + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "ÐуторÑка права © 2018 Задужбина Ñлободног Ñофтвера, Доо." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "%s%cИÑпиÑује контекÑÑ‚ текућег позива подрутине.\n" +#~ "\n" +#~ " Без „EXPR“, иÑпиÑује" + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: Ð¿Ñ€Ð¾Ñ†ÐµÑ %5ld (%s) у Ñпојном_реду" + +#~ msgid "Unknown Signal #" +#~ msgstr "Ðепознат Ñигнал #" + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "ÐуторÑка права (C) 2014 Задужбина Ñлободног Ñофтвера, Доо." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" diff --git a/bash-5.1/po/sv.gmo b/bash-5.1/po/sv.gmo new file mode 100644 index 0000000000000000000000000000000000000000..1b825f688ec5fd605856b84e40a114c53c08928d GIT binary patch literal 156712 zcmeFa34B~vdG~*1ATS|eNgxCg;Ks3IJGSH{0fG|;WLu6EY{`-2IAkFjNh4{nG^5On zywCt;DQlt7vW2j(W#1a0l&t~6684=!O9^`eE&JNQ`~5x7IrrWf$%>)y{`>iVUM1JR zx%Zy+InQ~{bDr~@bN}sx+deztZ}YMwITifDU6bV3{C@Z8dYU9JS)U|lf-eP606z|% z2Yww~0iL=cNsa}3!8?Jwz+=G6!25t>;N8H-fcFKT1D*uF9lSgE39tly6C~^8hvEJ2 z1D>?e)9D5kZx^U?jDz@o54?lCxE51Jl|6To&_rYh2Sc%2`&e(1y#@Yf}-Q+K$Y)DApa+KI@`;) z6+DCc@qkYORgSj={01nx-1UBrtH2)aw}7JO45<8`3W^?Y1n&xd2s|155~zCq2vq*Z z-QVeOCa8Glhx;;k7w+dlg?j?1c&`BO4!$2$xxN_gk9mMUKNS>RHi6w>UwGaGRqrQ* zO7~UZJ;8T``_F)C|C_*jfXmKtdff|Dxz~fIfjdE^^Kftt_(V|kehYXn@YCQ);LV`Q zvFw4K-rd0yx$g#5pI$HpuLPCuUxKRF%fNer?*!L@p9Pi9@4*y2fyP(*XMx9q7lN>2 zatWw*crqwDy)!)jJg9oz4kl7MD?#z&IpKaMsPrxaRqqC<{GS4z488)q7x*4f`F$Bw z`M(1y-P_XH#4jsAmH#22-j_kO&!fZhHwF95>spBID`d`CCEp096(xPQqd^l{RC4fsCr9+z@0qrY61Bv)|%UsphT%C-AS>caCg z#-Yz`ljJWdN%97sKd%Z8kp7O@Bw5S*7dMba#JjOYnxud7fh4&N;jRZC1m19%w&VFR zkM#WS2#PQ62DW&=0{j8#UGtYo@-8a&geN4)i+JDrcS&-P^#2|FCHI#+hjhtj&vTRH z$J~!RFG;3&zvG%D`3d)Lyp}%9`)P<(mI>l{yhz4P~3;DdO+1H2J@0(cTQ^ahV# z1r_hHU<$qvJPv#>cno+WC^~!=RQufos(pR{s@;Abu=GZMe{WFnR)GUx5BM1B|48sc z%K7^@(~qg=h1bE0;K8>i$t2;fdx!JSsqdtWJYNf{J>L3{j1^?~4sZ|myRJ`?L$t#S zLGjf|9|57?a_}0khf2Pd=O6iGl6;T7W zrE}d~yOQsN9|T`RL%;EaklsDIOzzHrs?Xy=(cy1E$)}fq_W|Dut^_{=t^j`tt^!Xz z+0)q$s{WUN_XMv3d%&lH;`eufO6LpUY2eR5$=8$a*=6$eEKvPm5LAD;98~&Ea07TP zsQ4cT9|+zIs$Z(dV_G;=L0*1N>)D`FsyN3%tuI zp8j@F^?wxjci=NX)n~=2U8esGg9`t2P<(VfsQP~#RQs4P3+XYXW`%RD1j|;EDI`N>c702yO%~1y2Y6I^4e* zRJu0>ETw+G0TiF^169ALf#R2UgKD1}LDlDb0gpY+>%R`v`zcWE`*<(~Uks|f-VdrA zKL%Bf)0cOdUU&hh_L&3K-p>yAF9Q|s!=UJJGkAOO#M8Z8r+}j0g`mdyYQRT>;+JQG zqR;C=(fx~{`p36G@xihc9`7Vj{J9QX2krnx$7Z;{CfwfuiVi;jMVH@#Yr!*DI{#b@ zs{B`ik`pta(t8Z3{N4zvKG%Z}2EPNUT&vD-y4?>H-G)H%!7Qlw*Mh45N5cCbfy)1m ztNi_DQ0+Jciq205?+?BY+ynjsTn%2Z+UYR|ivOPvs@|^ymxCVyHBNmG906Ca@o zMc=1`D(@@6bHKNP7lSv0%75#bUd}3bHuuj2#m6^*(&N4Ziax&sRh~Ppb@_HSD7sz% zif$K!%5OiYay<4eh{biu~Ul~;Y+Yc(<<3W|@U7+~r zUqH#Xn*#n2RD1pklss9{-DUHfhk@eH=Y!&(_kk1OzlP^qdz=raK#dDe2>7?4@_!Mi zc<%sH@C%^Y`4^z-dDrz$=T+cN?#}^5kH>)OPtO2V|2Kdd58efeE}sBZ-XDRdfTwQo zc;|o$e*vg=7y(t!CxhF;XMt+xuYl{odv0|8+yScJTncUiuL9N2UjZt=8v=eG6rUZp z$?3iYRDA|P(f#3I9c+Or@3+87@Ry+a|HIDeGClkmp!()&BEvWK-1XO)~9x%C|r+Y`RpXXaZ)%%H{`pLUN@$1c?_-@7hJ)PYF9|5X9uLf0~ zFM|W%vIls5E&|oAmw_ob1&SU|0!8=NfhzZhLDBsi0sj+JzxXXE`M&%dr_(4XIq(;t z=>1|){rm0V{@*~g`_Dnu_k;&}xgG>c-c>>IsB*jwRK6brCI7w)ihjqR>+O4fq`JT<$*rs@}f`)&EZ4;^kips$cek;Kd#*B<=y~F4)ufU!9h@R?a`ppe-^0m;H}~L4WQzGH9Y?gsQUi~ zRC}Me&FQuY6rC;x75@MzdOQVGy4QiC@8`f{z+Zx@@9#kINxI$J_5Psx!{wm*$+N+& z;Kx8~?>?6k=Yis<$ABuwvq16r+d#GZCqU6xlTX#N2h{tAfy(y~DEd4f+yY(?DqM1b z>kAt|@zZ`#a_Qv(zXz(G-8-EQyTJ!@KMAToy&6=#KM9I&e+?@9UHU!W4PeUs5UBDs z!~IJ^$&u?ph5r>O{y+J`F0;>V1trHG4T}EH2UXs;ff_Hr32Ges8L0L=?jbIJPXk5Y z-JtsAIH>SX0!5E&K$Y`tUAcf2ZBf7b`)9dmyNIdqMHVJg9nI11kTwf@+^nfJ*1*p!(Gv2E06LLCLdi zpy;*-R6lQkzZZa_%XOgYcReWi@Fh^=%ZbBIzw3j=RxL<=KUD%;6b2?pmxwrQ`cxT=}6;!xu!P|qc1|>h<1m1y; z|1MDF{J>aOauET)2CDo$wXS58bk75C1YcN3ZZ4yJu426A{w2+>8@ugRbIuXq~#55D0U zE(hQHcP^Jd2&x@E3EqwL{uTTk>HXxnAO!vK3%io{^ZrM#?Mhxj`fqt1bR_+Y-$;63 z?M+?DGVsxF?nK}@aL58-$C)|7eDCuW6=8jhg{D%4g3c0_k-#` zyKiv*90kQ!j|}(E1@-74l4uH;3$UkzIRpX*9KbO-VW z_Yv;dU+YS)r5%0<@;G_&O(bx6tn?(1ppey07@=@5>&f>9hBVo4XAcMDP5L4l5#BvCFfpp+A^cZXFzYBZ^eDVB^ z{(Oi|u6)Nq<$DlRzK;bZPoDv<1m6H^y!#xu0lduvmf84uHh4PsW1zx60bB*XJiNaV zJdOKbg9>-bIZl@cfoE{v0;NA(3u@eYSGfN)xR(3>0wq6BdEhb|ul9kx+#dwRkN*gY zF4u#~=PRJ%{T5Vut5}Frf7t@6o@T-t}Ck=Op-A?hk=_ zfBJcz|6cGx+&>o-AAJc_J-z{ITurt(9aC@*w>{u;@X?_7;ANod^+QnO$eQz)nZ9!| z*u(wP!TW>n0nY}17Vg(P$nQtNb9nx2P~+SuL8Wtt2QM>y<$mBc?i=7{@a>@L`D1Vs zxT@E~Uka)oPXrb2!=T!6*;a4o`+^z|_kdO|@I3C{11j8a0^Vbr)BkKxbh;Q+yeENb zj~l?%;7fiXXlTs=xjiRJlq!JpcQF;)g3hrSnWs>AV|MeQpHB_qTxJyPgX? zy$67j6T3mZuZHK(2gToS26uvA0@bh5onEdUQ03SMs=jql<#|zf|1nT<=%=8{b*Fys ze_KJ(qX9k`d}rY?`BZ(k9mm8pR>WsxIYNq1^gT+ zI(-Y&xbz!vJ9zvq4>tsg&)x{CeqRM20503@e7_k~f4mgDBX||4aE}BfA724#TzfC5 zcDWH$eqRUGKYkwGpFH4vy%HSe`IVr;y$w`-J_;TKeic-E+ytiJ&7kOg+@Rm@1yzm% z;IZIiLAArvK*_UfLCKRF!2$62JqX|mBJO>or zKMjhHZUQCuZUJY(+h4rQ^v`)v_kRW65Bw=8d9!Ap_m9g#$)%@(qSI%>^B;lA=d?>) zZd?XR?p*__exD5Z6;S2<7B~c+`cO~54vJ1M10^><9iHF*Qor9E@G4Mp?(aeMyKjO@ z=Y-3=J{3^;)xi{e1SmRO3yOc=8}Q4Z=>HQ?bof1}_A6cP^;iRnU&lc`KMYFmz6Mk~ zycJaczX_E5_zft2JLw8E!L8i?I^3UE_I^48iqD&%=tsd{{Xx*_zUn{@R)JOt)S9>6sUH38K`mQO`z!bB~W~P3#j-fPoS59RsO+rm@s`X zy7DNwH@}|^j)K>Lf6aBuGI*MM^(E0qv|;LCG^v34yJNtI^ZQ@y333KZiQDAeOZcri zFom+eH}mhf|4h0F6aPLJe*7}vD+4|lRInd%ZRW>I!FPqU_?eWsZd16|GyP$bvp=S! z$;0^dEx%1Z74WM(|1!VDAHU}MLU{gjo~!ND&(7rc%^=gHWG`3zTg~r}bKRfoj+AK+ zcoJ9f?+1nZFY;nH*OPe0)FHWo-%L@G4;CZv`;0)3f9KuG@LNG1#QhUM%nbH-S8$SF z-{Cr&a1Zjwwq~00`}RD;mnd=6gJRSTJm;UY^@WcGRgzLWC{|(o-xK8Ez zC$6{fT(V;wzi-bq!}WJun(yfE>mbui`}+hadHe|Q@3}t1@0W3XiR-moU*Oqag8D1- zTYoR+dJNZo-SGEWF7;i_k4_FWcry2ITH32f6PF&t4e9uLkcz`F;a_H@y2i zzyCG-9^|*?oPP)20v_UeE!WlD>rZmvbnc~hoTCTfPj-)Gq_ld;2LrAMT zr19!-zZP6hn6Gd>gx??GI>>MR{Vl&YfZyQy9lzfI?&3P1OY`b)a_R5&0iOV3vPgcy z^>$A)x1$^E;ze;n7(xOQ>>(-7v) zgxSZlA93A@XLsQKpTQ4>_qXs|e;?zT=lUksbGhQ*%lYy2aMK{pE4hZb{+4Ht3TgZT zyopP?^FM^Jf>X)sIG%6fnhMW<3;r9|Nh(Kpb~*1c=_EIW`@`T3+{eEbKW^rJ9dS+p zx9T0&vBL0o0{9ND?{WQz=Z^<30#|`+iC6r)L%4Y(@7M6|eDEGz-{87G_b&+Vf5`n~ z`F$aHr||5N{C*q1cY@b*UCOmFr2k`{Z|434F8w_Qd^y(#_+10%x#sx&dc7?CeKq`^ z<^6wfHMxHp*R%NjOD_E#6VUI_8_4s+JX;0!gRkKFC@4<+=)DY zCcpm?jDPj;dp+;F`2Bufd^)}aTRc0naDOBB-{D%xrN2u8-Ywv_dG?Q7-{bxPToYVR zQNY6AvHX50*JFA2pIp~*ZQ}kJT;2SBK6o;yzZY?Rg6lP0r*Ykja>l>E4?pe>?u`$@ zpKx7C{4HE(68@jKKPJR`U`Y4gJo_TQ@5S|B{Jt;mAIk5G`Taidaa_;h_iefKcP-b~ zc=j7E{oRji6~F%q{5aPGxb7M9SjO`ob8X|9{+`2i2KOJ}>f>6^rN6Ipy^3oi_Xoh+ z5&r^yKbh;_xNZ~D<5lv0?#}>U0{%h|_QGjplZHI-ZW#XJ^Yb5+lrD+MFiTl^(KGT3xLjsE?NwEv?sP4zD>j zIsVw$^2|(qd~>?8xq0OTxiy=WhJ_fbx5lR{6UQH$r0ME|yjs~@lccN1>y1h}F+V$3 znc#M&TC1eV3L>ZDI`XC zn&XY?T&vztRtfba#dNHqQ1$)L=Rmcb>hW~BnbziKX41-`xq743Y&GErLp(4s<|vH9u@6wU+sgnjp=BgNr zfX5iq zJy1!@jfVKd>S$~jnMu4^ZdKBiGxO=#;Z{X_VFeQV95E105W}a&-XsCHDr$c-EvFOJ zMr9mE^DN7=W7Vno`g}8eczrBw((o2Cf83~e1b^I^nxC!ITFum|2!GBs>f@EBbxS4C zzugPz9YHl!qfAxQq-m`@TS*(0$x5SA8&|V?v(+js*l&MITTELCs*_dks96xvu~lu& zi>du#wN`E%raM&{W$L2dK&2`Z_VS3NS^Dh~go`P9_ntI{K2UB{%VRTMkM;mFRoY)X zua-?`E3;#PBinO)x6?2`a%+P}tK1I~j4~Htnx+8gtqK*a)NmmY4#^+((F>fbzlwux>yza~} z1X=i4Vy~FiRHcO^o~<%kv{z)dK2e=Ky!bnl2d&ENob}<(n0mY58BKApQKe3mLo~0A zQysN}oHkMvOE+I@R@#bd4>r>c$`cxfvNBg2x+HNotBW+~sT%(*sy{UmhM;ZL>nYirG~Vojtv$QRY6GSgzaE^1 z3e7nQ!13uaf)IHtS*`G+%U4-u8V%Bxxc5 zU#lPVK3<)fsZ22n`Iwn@cc&}IJ)LT8raG1u;zl7;tYc9kL;+4&ReuR0D`xgQ$hD4# z>b>2SfL&)ukTKA=}jh7B&IzRcXc$ zjv{8`Vk~;`O&q%Nu}w)$9HzSH z1T)CXnR*$TW^rCi=A0Wn6^K>5%8<;jcgCkUmLdRL+eNpnL31+2WnzW0ez3^13 zIr@l79p7FxUx$B;`lbwf?Oj8XGKKPwWR|AqMa_nWsK#4mv!`uj%NjgqgfIf5n^_&B zZrP~J)@_)GoKtQwa*Q!ZhvXUGtC>2eM6bwOI6mu|2G=a*3H=4(EgXd}RUvpj{eVv*yEbQZa-77z_gWrO^tyC+CTW|}r3rIAVjk3}$uy?N20{}lmql)AUXiSys2o_ox-~v`_58%#n)MpE)=Mk# zR-d2KZ*n|XZB0wu1^t#9C+k~i98q;Ht4z!ZGlksc+j;7#okRKgN$=Ldp%ExbyUg1t zmh_I152^O_^d!9#c{*pxr}hahc&P+?lr6<|(NG5yR-Vv*O0lN$o>Pf9~u$YJiuotlw((VatNn}~{r0G5g1kJLJ*jy)>IjuP%H3&sx zZjhCWniVQEXmjc2W=l6syKALkXfGWnM6cBwOz@?okfQ3CWgezu6BDsmrBZwss8^_J z6LW(!wd|3U9qbI%IfNb!T_{p-oFBzPtsN*0IROjNNw76tW`;l&2OvSr`mhWP4B2_1 zCL8rx3pP`kv7PdD!$Kp=-%Pzti1wjlGK@=&Yt>!m zpkwr1vS(wuW{ux7UuGKYPdD-O+;k#@ENvUyy}Nf{`*09e9_FkpCKiH+Ohz*^ z$=3Q5N%#~p+1fDs?_71Rl5FL%*(;K5d-l39C)wsBy5((#?Vw@g!n08HLf|+ML`lJz zUQZcZpqJ$TL}ju(Khx3^NoFN)T4Si0wZzWB-F?9>9@Wi4UP>iCPPc8}(>tlXzl5A_4+mI6t@=Z z4E3acV*)Q~NARRF$cqqy*&NOpTkqSf45Q-{vLamxRhvvGV3A5|osmaDwQQk>X!#gX z%`A(~Pr0&25TU#RrgCM^HMuthe7@qzRWWLNYm=S|ZoOS?V7b{pof_w^5{<}2zIk|d ztUiN)z&@}aD%Lggn5_HkTeiMteTL?X!7Qy($pbS-5^2kmnp6gBIvik{ei<{l^{dgI zo>dkLoo!D^D+{Xq-1On5X2k`H`s`pHZiurFFGl34QYjX~%et^|p$?%~V-;%XGN@EK zn$lHDND>vUdrvgnsnLRxlQ(kYvf|tzSHcfRJ2G^f&~zIk3@s8gs!1lbm#=&Z{(u3%) z&M?(w;bK}EGxp@UWE;!AYGE4+vL5atQW=|#pwNxC_73m7^5VXs;r_va(#4gAS)!{o zIDOXFhg~#Nj;%;HkLYr?)azokJD0UK8!OB$RTd1+EgP$6JltMk(Cx!&f#FMcT`47^dRiAbYdG8GDgTu@Sfw& z{^1d=jh4iy#wo!h;C%w}SJJ~+EvddQu}4!rM3PNE@@GtExc^d5E1Ep9&anulkyJKR zbwgrW;@GQVH_FShMEsa@Oo#4VP8;*JY}`b~87C;=vQ5E4x(wY`KXn4Fapm2DK47)O z(*VI2o9b|kH#{=X8{!se6J?kTKzY!ShwkxgT8HP%>L9(vs>=$Ju^L1WV~Np2xmov^ zs5CqcZ}`5!9i?qdb%r2$6JWXX z;ZWnK64v@%&~rjml0vXjIK9Z*jkNRi9=(L{A~6istW;_tGUTH*>IX5Is6e*(V@*yt z4JDSSm;N9NJSN0L)YVZyZrrejGVW8^Y_$x{m%MH1eA2oXM`q>0FDvOAB$T&m2 zdbVaMvrN$Q=zGxnmgu>8FJ)?gI#@_BkYZu7gTonL71(HRt$GNG(pH6sN2=JZlqzz4 zn*hrNGx|!sZuS)wE{K6(j@vUdxO>mYm0>nxHFqiDnoyhs6j@-77P3WD8nIFyk7GEG zXSJ};_{OrKQ*_Vp#*+2h_LrfRW0*}I##<>*qCM2U?H)=RMBe);LXkfrAwu^b-r2Wn z*WjL!;U!uWp^K7=f?|Tl*AfD4M*4hg^$}Hhq|o8XhsSFj{$+ zh^123z!y$qe6==TNw%@The{%r49dOfVH2rT4{uM)p)YvW1YygB;c#tyx>2v8=WAAE z^B2`00a2SMLysUrqzT7omXeK~kqcw5hdpZMNo5{~s*qM4!urdz2t^d#HOD1*e(^f^u$ii=BGbF>FBV-=05viYn=y1ewI zi+gwN?SrQoDVSDBGcqF6{IbJ^c;eC(eniAx}up+kj4IOP6jcAN)>xnru@Mj?h8w`qLR&Q1G;PvHgN8YTM$fEvuZ;= z^z^ep1xqp;;YR1?o6{4F>#ppbt2w-hOk6@O8MANA&p{(RyQXkRjHN0hQJ>3GC=jXB z)H_}ppFtD0Bx2bQd-WyE&1qI`uAUJTJN#(PSK5k#;dZ7pA&1|VOP{obw5@cz0tZ3D z1kTL8F#}D-8Wo%j7-KAzQVBwsrDD2{#Xg2}wVEtq|5Qb@m!XtaXKa5=om-k=VU3Xq zC6?|$=-PikRM{8NJ~K0^2y>3^00^C3-- zk%TsCEjhAHl!BTJBe5_LHC-`rHd0%9R&v;57LOtG4{`IdSbeTpnV+b4;~F%FQ(AEd zBz!YwV5%8IisfUbX%+!$^|>bHY|kpIabTxVZ@aU97IdT#qO`|t!(sK{unDFDP4X0u zmZkERGYRIib?2motmfKFHd-uXsyNxmtsYjQ9YvK$HaBJzniJvbBn|suoKMNy+xPj{ zqJk;L8m29gn6?JNLWk~@=jE*V#A8zOC9r&~_BB}RB{tbIH+H4xdjGkWPpMR`jnB-( zD6WuH&|d@B^GhRh9J0A(=|fMf>8q0=z9i#l_Z(`ZX<6b^jSl4*{KHfy3kK&*mZV8z zu0bI(%{V4(2ABD{7;aBkjV!B!?8IJaYt0!;X*g%mOe+r*2YQlUR7|}ql}e!krisT~ zyfT@hMxl!~a5}+$v*Tx#!gQ0hRJ8oXBF>d!Iu(R6BampYXmY$+ETLFXI0agnG@vr0 zW@_(lnc~R8nK6oJ>A9t&vbbgosIAx&rPtM_(Cf@f+DhAn4m2CV055_^}A zIO_7jqLB&uY^-m$m1Lf*lkAlWYxES~)l8C^fTz{V8kO!pB*`89L&GB$aaS)t!jgus zd(h)-H-kw~@v3cDwC>^2LTDE~zU+Vr#;p3$f>%jrwX;PFHO!o%c*@sUgDx5-OP)rd z5jq7|CGE3T#PmvohrCpGCrS*Q0jD)7_L^550M26%R@ooQtU#w2Ay46t*`lDeD?J}kQR&y;1g4-sJkVw48&Zl;&9c)6ufnM;}dT#;TDD0#&yjhg5N>*72N=CJrV zAF$KI+$)rI(WsaX?%KX(pl_ep34K`Uv?&R_A}4DFF5v@tqlJw){NLEJ%1TF%&)j+s z&uPFNWtC*yg^tYi7s16nwCA6_2!p!5#b{|>UtJIlBflqF=v%(*_2`mcc$d84^ zc6I6_>4&6|J3d?69HEN_-Ect=C!U%=vW_`mFpE%?%^qUg_Hc-`HuPD5b&+y9dZx_1 zy|OC$&J8i=fU%FHc5u-)|FZ#`KWK7k$=E-gJ*haQD^}x(^Eu{Cae~UQtgbQ1Dr(6$ zOtw|ki_HL*&4dPb>=^DF=}8CJ(pH$xc@k1P@cXt+Ncl`BEODyMi^a<;L?Oy0tKCSOqj8u@7q#I|>e6#^i=?GON006rw%0AX!_hEsF1(|p&=_Zs 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 literal 0 HcmV?d00001 diff --git a/bash-5.1/po/sv.po b/bash-5.1/po/sv.po new file mode 100644 index 0000000..7f5df52 --- /dev/null +++ b/bash-5.1/po/sv.po @@ -0,0 +1,5877 @@ +# Swedish translation of bash +# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# +# Göran Uddeborg , 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019. +# +# $Revision: 1.26 $ +msgid "" +msgstr "" +"Project-Id-Version: bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-02-04 15:33+0100\n" +"Last-Translator: Göran Uddeborg \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "felaktigt vektorindex" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: tar bort attributet namnreferens" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: det gÃ¥r inte att konvertera en indexerad vektor till associativ" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: ogiltig nyckel till associativ vektor" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: det gÃ¥r inte att tilldela till ickenumeriska index" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: mÃ¥ste använda index vid tilldelning av associativ vektor" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: det gÃ¥r inte att skapa: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: det gÃ¥r inte att hitta en tangentbindning för " +"kommandot" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: första ickeblanka tecknet är inte '\"'" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "ingen avslutande â€%c†i %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: kolonseparator saknas" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "â€%sâ€: det gÃ¥r inte att avbinda" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "klammerexpansion: kan inte allokera minne för %s" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "klammerexpansion: misslyckades att allokera minne för %u element" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "klammerexpansion: misslyckades att allokera minne för â€%sâ€" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "â€%sâ€: ogiltigt aliasnamn" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "radredigering är inte aktiverat" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "â€%sâ€: ogiltigt tangentbindningsnamn" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: det gÃ¥r inte att läsa: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "â€%sâ€: okänt funktionsnamn" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s är inte bundet till nÃ¥gra tangenter.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s kan anropas via " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "â€%sâ€: det gÃ¥r inte att avbinda" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "slingräknare" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "endast meningsfullt i en â€forâ€-, â€whileâ€- eller â€untilâ€-slinga" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Returnera kontexten för det aktuella funktionsanropet.\n" +" \n" +" Utan UTTR, returneras â€$rad $filnamnâ€. Med UTTR, returneras\n" +" â€$rad $subrutin $filnamnâ€. Denna extra information kan användas för\n" +" att ge en stackspÃ¥rning.\n" +" \n" +" Värdet pÃ¥ UTTR indikerar hur mÃ¥nga anropsramar att gÃ¥ tillbaka före den\n" +" aktuella, toppramen är ram 0.\n" +" \n" +" Slutstatus:\n" +" Returnerar 0 om inte skalet inte kör en skalfunktion eller UTTR är\n" +" ogiltigt." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME är inte satt" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "för mÃ¥nga argument" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "null-katalog" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD är inte satt" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "rad %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "varning: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: användning: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: flaggan kräver ett argument" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: numeriskt argument krävs" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: finns inte" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: ogiltig flagga" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: ogiltigt flaggnamn" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "â€%sâ€: inte en giltig identifierare" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "ogiltigt oktalt tal" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "ogiltigt hexadecimalt tal" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "ogiltigt tal" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: ogiltig signalspecifikation" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "â€%sâ€: inte en pid eller giltig jobbspecifikation" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: endast läsbar variabel" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s utanför giltigt intervall" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s utanför giltigt intervall" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: inget sÃ¥dant jobb" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: ingen jobbstyrning" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "ingen jobbstyrning" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: begränsat" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "begränsat" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: inte inbyggt i skalet" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "skrivfel: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "fel när terminalattribut ställdes in: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "fel när terminalattribut hämtades: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: fel när aktuell katalog hämtades: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: tvetydig jobbspecifikation" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "hjälp är inte tillgängligt i denna version" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: det gÃ¥r inte att ta bort tilldelning: endast läsbar %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: det gÃ¥r inte att ta bort tilldelning" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: ogiltigt Ã¥tgärdsnamn" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: ingen kompletteringsspecifikation" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "varning: flaggan -F fungerar kanske inte som du väntar dig" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "varning: flaggan -C fungerar kanske inte som du väntar dig" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "kör inte en kompletteringsfunktion" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "kan endast användas i en funktion" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: en referensvariabel kan inte vara en vektor" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: att en namnreferensvariabel självrefererar är inte tillÃ¥tet" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: cirkulär namnreferens" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "â€%sâ€: ogiltigt variabelnamn för referens" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "det gÃ¥r inte att använda â€-f†för att göra funktioner" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: endast läsbar funktion" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: citerad sammansatt tilldelning av vektorer undanbedes" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: det gÃ¥r inte att förstöra vektorvariabler pÃ¥ detta sätt" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: det gÃ¥r inte att konvertera en associativ vektor till indexerad" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dynamisk laddning är inte tillgängligt" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "det gÃ¥r inte att öppna delat objekt %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "kan inte hitta %s i det delade objektet %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: inte dynamiskt laddad" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "inläsningsfunktionen för %s returnerar misslyckande (%d): inte inläst" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: inte dynamiskt laddad" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: kan inte ta bort: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: är en katalog" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: inte en normal fil" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: filen är för stor" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: det gÃ¥r inte att köra binär fil" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: kan inte köra: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "utloggning\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "inte ett inloggningsskal: använd â€exitâ€" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Det finns stoppade jobb.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Det finns körande jobb.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "hittar inget kommando" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "historiespecifikation" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: det gÃ¥r inte att öppna temporärfil: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "aktuell" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "jobb %d startade utan jobbstyrning" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ogiltig flagga -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: flaggan kräver ett argument -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hashning avslaget" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: hashtabellen tom\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "träffar\tkommando\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Skalkommandon som matchar nyckelordet '" +msgstr[1] "Skalkommandon som matchar nyckelorden '" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"inget hjälpämne matchar â€%sâ€. Prova â€help help†eller â€man -k %s†eller " +"â€info %sâ€." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: det gÃ¥r inte att öppna: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Dessa skalkommandon är definierade internt. Skriv â€help†för att se\n" +"denna lista. Skriv â€help namn†för att fÃ¥ reda pÃ¥ mer om funktionen\n" +"â€namnâ€. Använd â€info bash†för att fÃ¥ reda pÃ¥ mer om skalet rent\n" +"allmänt. Använd â€man -k†eller â€info†för att fÃ¥ reda pÃ¥ mer om\n" +"kommandon som inte är i listan.\n" +"\n" +"En stjärna (*) bredvid ett namn betyder att det kommandot är avstängt.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "det gÃ¥r inte att använda mer än en av -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "historieposition" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: ogiltig tidsstämpel" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: historieexpansionen misslyckades" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib misslyckades" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "inga andra flaggor är tillÃ¥tna med â€-xâ€" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argument mÃ¥ste vara processer eller jobb-id:n" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Okänt fel" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "uttryck förväntades" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: inte en indexerad vektor" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: ogiltig filbeskrivarspecifikation" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: ogiltig filbeskrivare: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: ogiltigt radantal" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: ogiltig vektorstart" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: ogiltigt kvantum för Ã¥teranrop" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "tomt vektorvariabelnamn" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "stöd för vektorvariabler krävs" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "â€%sâ€: formateringstecken saknas" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "â€%câ€: ogiltig specifikation av tidsformat" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "â€%câ€: ogiltigt formateringstecken" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "varning: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "formattolkningsproblem: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "hexadecimal siffra saknas för \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "unicode-siffra saknas för \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "ingen annan katalog" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: ogiltigt argument" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "katalogstacken är tom" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "katalogstackindex" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Visa listan av kataloger i minnet just nu. Kataloger hamnar i listan\n" +" med kommandot â€pushdâ€. Du kan komma tillbaka upp genom listan med\n" +" kommandot â€popdâ€.\n" +" \n" +" Flaggor:\n" +" -c\tnollställ katalogstacken genom att bo bort alla elementen\n" +" -l\tskriv inte ut versioner med tildeprefix av kataloger som är\n" +" \trelativa din hemkatalog\n" +" -p\tskriv katalogstacken med en post per rad\n" +" -v\tskriv katalogstacken med en post per rad inledda med dess\n" +" \tposition i stacken\n" +" \n" +" Argument:\n" +" +N\tVisa den N:e posten räknat frÃ¥n vänster i listan som visas\n" +" \tav dirs när det anropas utan flaggor, räknat frÃ¥n noll.\n" +" \n" +" -N\tVisa den N:e posten räknat frÃ¥n höger i listan som visas\n" +"\tav dirs när det anropas utan flaggor, räknat frÃ¥n noll." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Lägger till en katalog till toppen av katalogstacken, eller roterar\n" +" stacken, och gör den nya toppen av stacken till den aktuella\n" +" arbetskatalogen. Utan argument, byt de tvÃ¥ toppkatalogerna.\n" +" \n" +" Flaggor:\n" +" -n\tUndertryck det normala bytet av katalog när kataloger\n" +" \tläggs till pÃ¥ stacken, sÃ¥ att endast stacken ändras.\n" +" \n" +" Argument:\n" +" +N\tRoterar stacken sÃ¥ att den N:e katalogen (räknat frÃ¥n\n" +" \tvänster i listan som visas av â€dirsâ€, med början pÃ¥ noll) hamnar\n" +" \tpÃ¥ toppen.\n" +" \n" +" -N\tRoterar stacken sÃ¥ att den N:e katalogen (räknat frÃ¥n\n" +" \thöger i listan som visas av â€dirsâ€, med början pÃ¥ noll) hamnar\n" +" \tpÃ¥ toppen.\n" +" \n" +" kat\tLägger till KAT till toppen av katalogstacken, och gör den\n" +" \ttill den nya aktuella arbetskatalogen.\n" +" \n" +" Den inbyggda â€dirs†visar katalogstacken." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Tar bort poster frÃ¥n katalogstacken. Utan argument tas den översta\n" +" katalogen bort frÃ¥n stacken, och byte görs till den nya toppkatalogen.\n" +" \n" +" Flaggor:\n" +" -n\tUndertryck det normala bytet av katalog när kataloger\n" +" \tläggs till pÃ¥ stacken, sÃ¥ att endast stacken ändras.\n" +" \n" +" Arguments:\n" +" +N\tTar bort den N:e posten räknat frÃ¥n vänster i listan\n" +" \tsom visas av â€dirsâ€, med början pÃ¥ noll. Till exempel: â€popd +0â€\n" +" \ttar bort den första katalogen, â€popd +1†den andra.\n" +" \n" +" -N\tTar bort den N:e posten räknat frÃ¥n höger i listan\n" +" \tsom visas av â€dirsâ€, med början pÃ¥ noll. Till exempel: â€popd -0â€\n" +" \ttar bort den sista katalogen, â€popd -1†den näst sista.\n" +" \n" +" Den inbyggda â€dirs†visar katalogstacken." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: ogiltig tidsgränsspecifikation" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "läsfel: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"det gÃ¥r bara att göra â€return†frÃ¥n en funktion eller källinläst skript" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "det gÃ¥r inte att samtidigt ta bort en funktion och en variabel" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: inte en vektorvariabel" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: inte en funktion" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: det gÃ¥r inte att exportera" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "skiftantal" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "det gÃ¥r inte att sätta och ta bort skalflaggor samtidigt" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: ogiltigt skalflaggsnamn" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "filnamnsargument krävs" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: filen finns inte" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "det gÃ¥r inte att suspendera" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "det gÃ¥r inte att suspendera ett inloggningsskal" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s är ett alias för â€%sâ€\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s är ett nyckelord i skalet\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s är en funktion\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s är en special inbyggd i skalet\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s är inbyggt i skalet\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s är %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s är hashad (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: ogiltigt gränsargument" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "â€%câ€: felaktigt kommando" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: kan inte avgöra gränsen: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "gräns" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: kan inte ändra gränsen: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "oktalt tal" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "â€%câ€: ogiltig operator för symboliskt läge" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "â€%câ€: ogiltigt tecken för symboliskt läge" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " rad " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "senaste kommando: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Avbryter..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORMATION: " + +#: error.c:462 +msgid "unknown command error" +msgstr "okänt kommandofel" + +#: error.c:463 +msgid "bad command type" +msgstr "felaktig kommandotyp" + +#: error.c:464 +msgid "bad connector" +msgstr "felaktig anslutning" + +#: error.c:465 +msgid "bad jump" +msgstr "felaktigt hopp" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: obunden variabel" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\atiden gick ut i väntan pÃ¥ indata: automatisk utloggning\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "det gÃ¥r inte att omdirigera standard in frÃ¥n /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: â€%câ€: ogiltigt formateringstecken" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] finns fortfarande" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "rörfel" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: maximal nästning av eval överskriden (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: maximal nästning av source överskriden (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: maximal nästning av funktioner överskriden (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: begränsat: det gÃ¥r inte att ange â€/†i kommandonamn" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: kommandot finns inte" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: felaktig tolk" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: det gÃ¥r inte att köra binär fil: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "â€%sâ€: är en speciell inbyggd" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "det gÃ¥r inte att duplicera fb %d till fb %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "rekursionsnivÃ¥ i uttryck överskriden" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "underspill i rekursionsstacken" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "syntaxfel i uttrycket" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "försök att tilldela till en icke-variabel" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "syntaxfel i variabeltilldelning" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "division med 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "fel: felaktig expassign-symbol" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "â€:†förväntades i villkorligt uttryck" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "exponenten är mindre än 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "en identifierare förväntades efter pre-ökning eller pre-minskning" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "â€)†saknas" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "syntaxfel: en operand förväntades" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntaxfel: ogiltig aritmetisk operator" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (felsymbol är â€%sâ€)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "ogiltig aritmetisk bas" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: ogiltigt radantal" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "värdet är för stort för basen" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: uttrycksfel\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: det gÃ¥r inte att komma Ã¥t föräldrakatalogen" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "det gÃ¥r inte att Ã¥terställa fördröjningsfritt läge för fb %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"det gÃ¥r inte att allokera en ny filbeskrivare för bashindata frÃ¥n fb %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: buffert finns redan för ny fb %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp rör" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "avgrenad pid %d finns i körande jobb %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "tar bort stoppat jobb %d med processgrupp %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) markerad som fortfarande vid liv" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: ingen sÃ¥dan pid" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Klart" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Stoppad" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Stoppad(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Kör" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Klart(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Avslut %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Okänd status" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(minnesutskrift skapad) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (ak: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "barns setpgid (%ld till %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld är inte ett barn till detta skal" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Ingen uppgift om process %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: jobb %d är stoppat" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: inget sÃ¥dant jobb" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: jobbet har avslutat" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: jobb %d är redan i bakgrunden" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: slÃ¥r pÃ¥ WNOHANG för att undvika oändlig blockering" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: rad %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (minnesutskrift skapad)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(ak nu: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp misslyckades" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: ingen jobbstyrning i bakgrunden" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: linjedisciplin" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "det gÃ¥r inte att sätta terminalprocessgrupp (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "ingen jobbstyrning i detta skal" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: försäkran misslyckades: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: försäkran gick fel\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "okänd" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: block pÃ¥ frilista överskrivet" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: anropad med redan frigjort block som argument" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: anropad med oallokerat block som argument" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: underspill upptäckt: mh_nbytes utanför giltigt intervall" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: underspill upptäckt: mh_nbytes utanför giltigt intervall" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: start- och slutstyckesstorlekar skiljer" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: anropat med oallokerat block som argument" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: underspill upptäckt: mh_nbytes utanför giltigt intervall" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: underspill upptäckt: mh_nbytes utanför giltigt intervall" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: start- och slutstyckesstorlekar skiljer" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: allokeringstabellen är full med FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p finns redan i tabellen som allokerat?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p finns redan i tabellen som fritt?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "ogiltig bas" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: okänd värd" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: ogiltig tjänst" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: felaktig specifikation av nätverkssökväg" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "nätverksoperationer stöds inte" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: det gÃ¥r inte att ändra lokal (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: det gÃ¥r inte att ändra lokal (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: det gÃ¥r inte att ändra lokal (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: det gÃ¥r inte att ändra lokal (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Du har post i $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Du har ny post i $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Posten i %s har lästs\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "syntaxfel: aritmetiskt uttryck krävs" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "syntaxfel: oväntat â€;â€" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntaxfel: â€((%s))â€" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: felaktig instruktionstyp %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "här-dokument pÃ¥ rad %d avgränsas av filslut (ville ha â€%sâ€)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"make_redirection: omdirigeringsinstruktion â€%d†utanför giltigt intervall" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) överstiger SIZE_MAX (%lu): raden " +"avhuggen" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "maximalt antal av här-dokument överskridet" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "oväntat filslut vid sökning efter matchande â€%câ€" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "oväntat filslut vid sökning efter â€]]â€" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntaxfel i villkorligt uttryck: oväntad symbol â€%sâ€" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "syntaxfel i villkorligt uttryck" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "oväntad symbol â€%sâ€, â€)†förväntades" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "â€)†förväntades" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "oväntat argument â€%s†till villkorlig unär operator" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "oväntat argument till villkorlig unär operator" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "oväntad symbol â€%sâ€, villkorlig binär operator förväntades" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "villkorlig binär operator förväntades" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "oväntat argument â€%s†till villkorlig binär operator" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "oväntat argument till villkorlig binär operator" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "oväntad symbol â€%c†i villkorligt kommando" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "oväntad symbol â€%s†i villkorligt kommando" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "oväntad symbol %d i villkorligt kommando" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntaxfel nära den oväntade symbolen â€%sâ€" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntaxfel nära â€%sâ€" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "syntaxfel: oväntat filslut" + +#: parse.y:6365 +msgid "syntax error" +msgstr "syntaxfel" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Använd â€%s†för att lämna skalet.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "oväntat filslut när matchande â€)†söktes" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "komplettering: funktion â€%s†finns inte" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: möjlig slinga av omförsök" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: felaktig anslutning â€%dâ€" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: ogiltig filbeskrivare" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: NULL-filpekare" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: â€%câ€: ogiltigt formateringstecken" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "filbeskrivare utanför giltigt intervall" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: tvetydig omdirigering" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: det gÃ¥r inte att skriva över en existerande fil" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: begränsat: det gÃ¥r inte att omdirigera utdata" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "det gÃ¥r inte att skapa temporärfil för här-dokument: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: det gÃ¥r inte att tilldela fb till variabel" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port stöds inte utan nätverksfunktion" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "omdirigeringsfel: det gÃ¥r inte att duplicera fb" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "hittade inte /tmp, var god skapa!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp mÃ¥ste vara ett giltigt katalognamn" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "läget för snygg utskrift ignoreras i interaktiva skal" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: ogiltig flagga" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "det gÃ¥r sätta uid till %d: effektiv uid %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "det gÃ¥r inte att sätta gid till %d: effektiv gid %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "kan inte starta felsökaren, felsökningsläge avaktiverat" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: är en katalog" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Jag har inget namn!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, version %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Användning:\t%s [GNU lÃ¥ng flagga] [flagga] ...\n" +"\t\t%s [GNU lÃ¥ng flagga] [flagga] skriptfil ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU lÃ¥nga flaggor:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Skalflaggor:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD eller -c kommando eller -O shopt_flagga\t\t(bara uppstart)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s eller -o flagga\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "Skriv â€%s -c 'help set'†för mer information om skalflaggor.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "Skriv â€%s -c help†för mer information om inbyggda skalkommandon.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" +"Använd kommandot â€bashbug†för att rapportera fel.\n" +"Skicka synpunkter pÃ¥ översättningen till .\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "bash hemsida: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Allmän hjälp i att använda GNU-program: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: ogiltig operation" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Felaktig signal" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Avringd" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Avbruten" + +#: siglist.c:58 +msgid "Quit" +msgstr "Lämnad" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "OtillÃ¥ten instruktion" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "Brytpunkt/spÃ¥rningsfälla" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ABORT-instruktion" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "Emulatorfälla" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Flyttalsfel" + +#: siglist.c:86 +msgid "Killed" +msgstr "Dödad" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Bussfel" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Segmenteringsfel" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Felaktigt systemanrop" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Brutet rör" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Alarmklocka" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Avslutat" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Viktigt I/O-tillstÃ¥nd" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Stoppad (signal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Ã…terupptagen" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Barn dött eller stoppat" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Stoppad (terminalläsning)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Stoppad (terminalskrivning)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O möjligt" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU-gräns" + +#: siglist.c:154 +msgid "File limit" +msgstr "Filgräns" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarm (virtuell tid)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarm (profilering)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Ändrat fönster" + +#: siglist.c:170 +msgid "Record lock" +msgstr "PostlÃ¥s" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Användarsignal 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Användarsignal 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT-indata väntar" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "strömavbrott omedelbart förestÃ¥ende" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "systemkrasch omedelbart förestÃ¥ende" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "migrera process till en annan CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "programmeringsfel" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT-övervakningsläge givet" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT-övervakare borttagen" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT-ljudsekvens har avslutat" + +#: siglist.c:214 +msgid "Information request" +msgstr "Informationsbegäran" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Okänd signal nr %d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "felaktig substitution: ingen avslutande â€%s†i %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: det gÃ¥r inte att tilldela listor till vektormedlemmar" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "det gÃ¥r inte att skapa rör för processubstitution" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "det gÃ¥r inte att skapa barn för processubstitution" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "det gÃ¥r inte att öppna namngivet rör %s för läsning" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "det gÃ¥r inte att öppna namngivet rör %s för skrivning" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "det gÃ¥r inte att duplicera namngivet rör %s som fb %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "kommandoersättning: ignorerade nollbyte i indata" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "det gÃ¥r inte att skapa rör för kommandosubstitution" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "det gÃ¥r inte att skapa barn för kommandosubstitution" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: det gÃ¥r inte att duplicera rör som fb 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: ogiltigt variabelnamn för referens" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: felaktig indirekt expansion" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: felaktigt variabelnamn" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parametern är inte satt" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametern tom eller inte satt" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: delstränguttryck < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: felaktig substitution" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: det gÃ¥r inte att tilldela pÃ¥ detta sätt" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"framtida versioner av skalet kommer att framtvinga evaluering som en " +"aritmetisk substitution" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "felaktig ersättning: ingen avslutande â€`†i %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "ingen matchning: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "argument förväntades" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: heltalsuttryck förväntades" + +#: test.c:265 +msgid "`)' expected" +msgstr "â€)†förväntades" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "â€)†förväntades, fann %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: binär operator förväntades" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: unär operator förväntades" + +#: test.c:881 +msgid "missing `]'" +msgstr "â€]†saknas" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "syntaxfel: oväntat â€;â€" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "ogiltigt signalnummer" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "fällhanterare: maximal nivÃ¥ av fällhanterare överskriden (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: felaktigt värde i trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: signalhanterare är SIG_DFL, skickar om %d (%s) till mig " +"själv" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: felaktig signal %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "fel vid import av funktionsdefinition för â€%sâ€" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "skalnivÃ¥ (%d) för hög, Ã¥terställer till 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: ingen funktionskontext i aktuellt sammanhang" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: variabeln fÃ¥r inte tilldelas ett värde" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: tilldelar ett heltal till en namnreferens" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: ingen funktionskontext i aktuellt sammanhang" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s har tom exportstr" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "ogiltigt tecken %d i exportstr för %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "inget â€=†i exportstr för %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context: huvudet pÃ¥ shell_variables är inte en funktionskontext" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: ingen kontext global_variables" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: huvudet pÃ¥ shell_variables är inte en temporär omgivningsräckvidd" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: gÃ¥r inte att öppna som FILE" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: ogiltigt värde för spÃ¥rningsfilbeskrivare" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: kompatibilitetsvärde utanför giltigt intervall" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright © 2018 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licens GPLv3+: GNU GPL version 3 eller senare \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, version %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"Detta är fri programvara, du fÃ¥r fritt ändra och vidaredistribuera den." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Det finns INGEN GARANTI, sÃ¥ lÃ¥ngt lagen tillÃ¥ter." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: det gÃ¥r inte att allokera %lu byte (%lu byte allokerade)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: det gÃ¥r inte att allokera %lu byte" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: det gÃ¥r inte att allokera %lu byte (%lu byte allokerade)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: det gÃ¥r inte att allokera %lu byte" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [namn[=värde] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] namn [namn ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVSX] [-m tangentkarta] [-f filnamn] [-q namn] [-u namn] [-r " +"tangentsekv] [-x tangentsekv:skalkommando] [tangentsekv:readline-funktion " +"eller readline-kommando]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [skalinbyggd [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [uttr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [kat]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] kommando [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [namn[=värde] …]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] namn[=värde] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [flagga] namn[=värde] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f filnamn] [namn ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts flgsträng namn [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a namn] [kommando [argument ...]] [omdirigering ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e rnamn] [-lnr] [första] [sista] eller fc -s [mnst=ers] [kommando]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [jobbspec]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [jobbspec ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p sökväg] [-dt] [namn ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [mönster ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d avstÃ¥nd] [n] eller history -anrw [filnamn] eller history -" +"ps arg [arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobbspec ...] eller jobs -x kommando [arg]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobbspec … | pid …]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobbspec ... eller kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a vektor] [-d avgr] [-i text] [-n ntkn] [-N ntkn] [-p prompt] " +"[-t tidgräns] [-u fb] [namn ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o flaggnamn] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [namn …]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [namn[=värde] ...] eller export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [namn[=värde] ...] eller readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source filnamn [argument]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". filnamn [argument]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [uttr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signalspec ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] namn [namn ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [gräns]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [rättigheter]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [id …]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid …]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAMN [in ORD ... ] ; do KOMMANDON; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( utr1; utr2; utr3 )); do KOMMANDON; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAMN [in ORD ... ;] do KOMMANDON; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] rör" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case ORD in [MÖNSTER [| MÖNSTER]...) KOMMANDON ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if KOMMANDON; then KOMMANDON; [ elif KOMMANDON; then KOMMANDON; ]... [ else " +"KOMMANDON; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while KOMMANDON; do KOMMANDON; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until KOMMANDON; do KOMMANDON; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAMN] kommando [omdirigeringar]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function namn { KOMMANDON ; } or namn () { KOMMANDON ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ KOMMANDON ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "jobbspec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( uttryck ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ uttryck ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variabler - Namn och betydelse av nÃ¥gra skalvariabler" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | kat]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [flgnamn ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [argument]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o flagga] [-A Ã¥tgärd] [-G globmnst] " +"[-W ordlista] [-F funktion] [-C kommando] [-X filtermnst] [-P prefix] [-S " +"suffix] [namn …]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o flagga] [-A Ã¥tgärd] [-G globmnst] [-W " +"ordlista] [-F funktion] [-C kommando] [-X filtermnst] [-P prefix] [-S " +"suffix] [ord]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o flagga] [-DEI] [namn …]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d avgränsare] [-n antal] [-O start] [-s antal] [-t] [-u fb] [-C " +"Ã¥teranrop] [-c kvanta] [vektor]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d avgränsare] [-n antal] [-O start] [-s antal] [-t] [-u fb] [-C " +"Ã¥teranrop] [-c kvanta] [vektor]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definiera eller visa alias.\n" +" \n" +" Utan argument skriver â€alias†listan pÃ¥ alias pÃ¥ den Ã¥teranvändbara " +"formen\n" +" â€alias NAMN=VÄRDE†pÃ¥ standard ut.\n" +" \n" +" Annars är ett alias definierat för varje NAMN vars VÄRDE är angivet.\n" +" Ett avslutande blanktecken i VÄRDE gör att nästa ord undersöks för\n" +" aliassubstitution när aliaset expanderas.\n" +" \n" +" Flaggor:\n" +" -p\tskriv alla definierade alias pÃ¥ en Ã¥teranvändbar form\n" +" \n" +" Slutstatus:\n" +" alias returnerar sant om inte ett NAMN ges för vilket inget alias har\n" +" definierats." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Ta bort alla NAMN frÃ¥n listan med definierade alias.\n" +" \n" +" Flaggor:\n" +" -a\tta bort alla aliasdefinitioner\n" +" \n" +" Returnerar framgÃ¥ng om inte ett NAMN inte är ett existerande alias." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Sätt Readline-tangentbindningar och -variabler.\n" +" \n" +" Bind en tangentsekvens till en Readline-funktion eller -makro, eller " +"sätt\n" +" en Readline-variabel. Syntaxen för argument vid sidan om flaggor är\n" +" densamma som den i ~/.inputrc, men mÃ¥ste skickas som ett ensamt " +"argument:\n" +" t.ex., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Flaggor:\n" +" -m tangentkarta Använt TANGENTKARTA som tangentkarta under detta\n" +" kommando. Acceptabla tangentkartenamn är emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command och vi-insert.\n" +" -l Lista namnen pÃ¥ funktioner.\n" +" -P Lista funktionsnamn och bindningar.\n" +" -p Lista funktioner och bindningar pÃ¥ ett sätt som " +"kan\n" +" Ã¥teranvändas som indata.\n" +" -S Lista tangentsekvenser som anropar makron och " +"deras\n" +" värden.\n" +" -s Lista tangentsekvenser som anropar makron och " +"deras\n" +" värden pÃ¥ ett sätt som kan Ã¥teranvändas som " +"indata.\n" +" -V Lista variabelnamn och värden\n" +" -v Lista variabelnamn och värden pÃ¥ ett sätt som kan\n" +" Ã¥teranvändas som indata.\n" +" -q funktionsnamn FrÃ¥ga efter vilka tangenter som anropar den " +"namngivna\n" +" funktionen\n" +" -u funktionsnamn Tag bort alla tangenter som är bundna till den\n" +" namngivna funktionen.\n" +" -r tangentsekv Ta bort bindningen för TANGENTSEKV.\n" +" -f filnamn Läs tangentbindningar frÃ¥n FILNAMN.\n" +" -x tangentsekv:skalkommando Gör sÃ¥ att SKALKOMMANDO körs när\n" +" \t\t\t\t TANGENTSEKV skrivs.\n" +" -X Lista tangentsekvenser bundna med -x och " +"tillhörande\n" +" kommandon pÃ¥ ett format som kan Ã¥teranvändas som\n" +" indata.\n" +" \n" +" Slutstatus:\n" +" bind returnerar 0 om inte en okänd flagga ges eller ett fel inträffar." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Avsluta for-, while- eller until-slinga.\n" +" \n" +" Avsluta en FOR-, WHILE eller UNTIL-slinga. Om N anges, avbryt N\n" +" omslutande slingor.\n" +" \n" +" Slutstatus:\n" +" Returvärdet är 0 förutsatt att N är större eller lika med 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Ã…teruppta for-, while eller until-slinga.\n" +" \n" +" Ã…teruppta nästa iteration i den omslutande FOR-, WHILE- eller UNTIL-" +"slingan.\n" +" Om N anges, Ã¥teruppta den N:e omslutande slingan.\n" +" \n" +" Slutstatus:\n" +" Slutstatus är 0 förutsatt att N är större eller lika med 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Exekvera en i skalet inbyggd funktion.\n" +" \n" +" Exekvera SKALINBYGGD med argument ARG utan att utföra " +"kommandouppslagning.\n" +" Detta är användbart när du vill implementera om en inbyggd funktion i\n" +" skalet som en skalfunktion, men behöver köra den inbyggda funktionen i\n" +" skalfunktionen.\n" +" \n" +" Slutstatus:\n" +" Returnerar slutstatus frÃ¥n SKALINBYGGD, eller falskt om SKALINBYGGD " +"inte\n" +" är inbyggd i skalet." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Returnera kontexten för det aktuella funktionsanropet.\n" +" \n" +" Utan UTTR, returneras â€$rad $filnamnâ€. Med UTTR, returneras\n" +" â€$rad $subrutin $filnamnâ€. Denna extra information kan användas för\n" +" att ge en stackspÃ¥rning.\n" +" \n" +" Värdet pÃ¥ UTTR indikerar hur mÃ¥nga anropsramar att gÃ¥ tillbaka före den\n" +" aktuella, toppramen är ram 0.\n" +" \n" +" Slutstatus:\n" +" Returnerar 0 om inte skalet inte kör en skalfunktion eller UTTR är\n" +" ogiltigt." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Ändra skalets arbetskatalog.\n" +" \n" +" Ändra den aktuella katalogen till KAT. Standardvärde pÃ¥ KAT är värdet\n" +" pÃ¥ skalvariabeln HOME.\n" +" \n" +" Variabeln CDPATH definierar sökvägen för katalogen som innehÃ¥ller KAT.\n" +" Alternativa katalognamn i CDPATH separeras av ett kolon (:). Ett tomt\n" +" katalognamn är detsamma som aktuell katalog. Om KAT börjar med ett\n" +" snedstreck (/) används inte CDPATH.\n" +" \n" +" Om katalogen inte kan hittas, och skalvariabeln â€cdable_vars†är satt,\n" +" antas ordet vara ett variabelnamn. Om den variabeln har ett värde\n" +" används dess värde för KAT.\n" +" \n" +" Flaggor:\n" +" -L\tframtvinga att symboliska länkar följs: lös upp symboliska\n" +" \tKAT efter behandling av instanser av â€..â€\n" +" -P\tanvänd den fysiska katalogstrukturen utan att följa\n" +" \tsymboliska länkar: lös upp symboliska länkar i KAT före behandling av\n" +" \tâ€..â€\n" +" -e\tom flaggan -P ges, och det inte gÃ¥r att avgöra den aktuella\n" +" \tkatalogen, returnera dÃ¥ med status skild frÃ¥n noll\n" +" -@ pÃ¥ system som stödjer det, presentera en fil med utökade " +"attribut\n" +" som en katalog som innehÃ¥ller filattributen\n" +" \n" +" Standardvärde är att följa symboliska länkar, som om â€-L†vore angivet.\n" +" â€..†behandlas genom att ta bort den omedelbart föregÃ¥ende\n" +" sökvägskomponenten tillbaka till ett snedstreck eller början av KAT\n" +" \n" +" Slutstatus:\n" +" Returnerar 0 om katalogen är ändrad, och om $PWD satts korrekt om -P\n" +" angetts; skilt frÃ¥n noll annars." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Skriv namnet pÃ¥ den aktuella arbetskatalogen.\n" +" \n" +" Flaggor:\n" +" -L\tskriv värdet pÃ¥ $PWD om det är namnet pÃ¥ den aktuella\n" +" \t\tarbetskatalogen\n" +" -P\tskriv den fysiska katalogen, utan nÃ¥gra symboliska länkar\n" +" \n" +" Som standard beter sig â€pwd†som om â€-L†vore angivet.\n" +" \n" +" Slutstatus:\n" +" Returnerar 0 om inte en ogiltig flagga anges eller den aktuella " +"katalogen\n" +" inte kan läsas." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Tomt kommando.\n" +" \n" +" Ingen effekt. Kommandot gör ingenting.\n" +" \n" +" Slutstatus:\n" +" Lyckas alltid." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Returnerar ett lyckat resultat.\n" +" \n" +" Slutstatus:\n" +" Lyckas alltid." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Returnera ett misslyckat resultat.\n" +" \n" +" Slutstatus:\n" +" Misslyckas alltid." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Exekvera ett enkelt kommando eller visa information om kommandon.\n" +" \n" +" Kör KOMMANDO med ARGument och utelämna uppslagning av skalfunktioner,\n" +" eller visa information om det angivna KOMMANDOt. Kan användas för att\n" +" anropa kommandon pÃ¥ disk när det finns en funktion med samma namn.\n" +" \n" +" Flaggor:\n" +" -p använd ett standardvärde pÃ¥ PATH som är garanterat att hitta\n" +" \t alla standardverktygen\n" +" -v skriv en beskrivning av KOMMANDO liknande den inbyggda â€typeâ€\n" +" -V skriv en mer utförlig beskrivning om varje KOMMANDO\n" +" \n" +" Slutstatus:\n" +" Returnerar slutstatus frÃ¥n KOMMANDO, eller misslyckande om KOMMANDO " +"inte\n" +" finns." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Sätt variabelvärden och -attribut.\n" +" \n" +" Deklarera variabler och ge dem attribut. Om inget NAMN anges, visa\n" +" attributen och värdena pÃ¥ alla variabler.\n" +" \n" +" Flaggor:\n" +" -f\tbegränsa Ã¥tgärden till att visa funktionsnamn och -definitioner\n" +" -F\tbegränsa visandet till endast funktionsnamn (plus radnummer\n" +" \t\toch källkodsfil vid felsökning)\n" +" -g\tskapa globala variabler när använt i en skalfunktion, ignoreras\n" +" \t\ti övrigt\n" +" -p\tvisa attributen och värden pÃ¥ varje NAMN\n" +" \n" +" Flaggor som sätter attribut:\n" +" -a\tför att göra NAMN till indexerade vektorer (om det stöds)\n" +" -A\tför att göra NAMN till associativa vektorer (om det stöds)\n" +" -i\tför att ge NAMN attributet â€heltalâ€\n" +" -l\tför att konvertera värdet av varje NAMN till gemena vid " +"tilldelning\n" +" -n\tgör NAMN till en referens till variabeln som namnges som värde\n" +" -r\tför att göra NAMN endast läsbart\n" +" -t\tför att ge NAMN attributet â€spÃ¥raâ€\n" +" -u\tför att konvertera värdet av varje NAMN till versaler vid " +"tilldelning\n" +" -x\tför att exportera NAMN\n" +" \n" +" Användning av â€+†istället för â€-†slÃ¥r av det angivna attributet.\n" +" \n" +" För variabler med attributet heltal utförs aritmetisk beräkning (se\n" +" kommandot â€letâ€) när variabeln tilldelas ett värde.\n" +" \n" +" Vid användning i en funktion gör â€declare†NAMN lokala, som med " +"kommandot\n" +" â€localâ€. Flaggan â€-g†åsidosätter detta beteende.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel vid\n" +" variabeltilldelning inträffar." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Sätt variabelvärden och -attribut.\n" +" \n" +" En synonym för â€declareâ€. Se â€help declareâ€." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Definiera lokala variabler.\n" +" \n" +" Skapa en lokal variabel kallad NAMN, och ge den VÄRDE. FLAGGA kan\n" +" vara alla flaggor som accepteras av â€declareâ€.\n" +" \n" +" Lokala variabler kan endast användas i en funktion; de är synliga " +"endast\n" +" för funktionen de definieras i och dess barn.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges, ett fel vid\n" +" variabeltilldelning inträffar eller skalet inte exekverar en funktion." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Skriv argument pÃ¥ standard ut.\n" +" \n" +" Visa ARGumenten, separerade av ensamma blanktecken och följda av en\n" +" nyrad, pÃ¥ standard ut.\n" +" \n" +" Flaggor:\n" +" -n\tlägg inte till en nyrad\n" +" -e\taktivera tolkning av nedanstÃ¥ende specialsekvenser\n" +" -E\tundertryck uttryckligen tolkning av specialsekvenser\n" +" \n" +" â€echo†tolkar följande bakstrecksekvenser:\n" +" \\a\talarm (klocka)\n" +" \\b\tbacksteg\n" +" \\c\tundertryck följande utdata\n" +" \\e\tescape-tecknet\n" +" \\E\tescape-tecknet\n" +" \\f\tsidmatning\n" +" \\n\tnyrad\n" +" \\r\tvagnretur\n" +" \\t\thorisontell tabulator\n" +" \\v\tvertikal tabulator\n" +" \\\\\tbakstreck\n" +" \\0nnn\ttecknet vars ASCII-kod är NNN (oktalt). NNN kan vara\n" +" \t\t0 till 3 oktala siffror\n" +" \\xHH\tdet Ã¥ttabitarstecken vars värde är HH (hexadecimalt). HH\n" +" \t\tkan vara en eller tvÃ¥ hexadecimala siffror\n" +" \\uHHHH\tdet Unicode-tecken vars värde är det hexadeimala värdet " +"HHHH.\n" +" \t\tHHHH kan vara en till fyra hexadecimala siffror.\n" +" \\UHHHHHHHH det Unicode-tecken vars värde är det hexadecimala värdet\n" +" \t\tHHHHHHHH. HHHHHHHH kan vara en till Ã¥tta hexadecimala siffror.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte ett skrivfel inträffar." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Skriv argument pÃ¥ standard ut.\n" +" \n" +" Visa ARGumenten pÃ¥ standard ut följt av en nyrad.\n" +" \n" +" Flaggor:\n" +" -n\tlägg inte till en nyrad\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte ett skrivfel inträffar." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Aktivera och avaktivera inbyggda kommandon i skalet.\n" +" \n" +" Aktiverar och avaktiverar inbyggda skalkommandon. Avaktivering lÃ¥ter\n" +" dig exekvera diskkommandon som har samma namn som ett inbyggt\n" +" skalkommando utan att använda en fullständig sökväg.\n" +" \n" +" Flaggor:\n" +" -a\tskriv en lista av inbyggda kommando och visa om de är\n" +" \taktiverade eller ej\n" +" -n\tavaktivera varje NAMN eller visa en lista av avaktiverade\n" +" \tkommandon\n" +" -p\tskriv listan av inbyggda kommandon pÃ¥ en Ã¥teranvändbar\n" +" \tform\n" +" -s\tskriv endast namnen pÃ¥ Posix â€specialâ€-inbyggda\n" +" \n" +" Flaggor som styr dynamisk inläsning:\n" +" -f\tLäs in inbyggt NAMN frÃ¥n en delad objektfil FILNAMN\n" +" -d\tTa bort en inbyggd inläst med -f\n" +" \n" +" Utan flaggor aktiveras varje NAMN.\n" +" \n" +" För att använda den â€test†som finns i sökvägen istället för den i\n" +" skalet inbyggda versionen, skriv â€enable -n testâ€.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte NAMN inte är inbyggd i skalet eller ett fel\n" +" inträffar." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Exekvera argument som ett skalkommando.\n" +" \n" +" Kombinera ARGument till en enda sträng, och använd resultatet som " +"indata\n" +" till skalet och exekvera de resulterande kommandona.\n" +" \n" +" Slutstatus:\n" +" Returnerar slutstatus av kommandot eller framgÃ¥ng om kommandot är tomt." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Tolka flaggargument.\n" +" \n" +" Getopts används av skalprocedurer för att tolka positionsparametrar\n" +" som flaggor.\n" +" \n" +" FLGSTRÄNG innehÃ¥ller de flaggtecken som skall kännas igen. Om ett\n" +" tecken följs av ett kolon förväntas flaggan ha ett argument, som\n" +" skall separeras frÃ¥n den med blanktecken.\n" +" \n" +" Varje gÃ¥ng det anropas kommer getopts placera nästa flagga i skal-\n" +" variabeln $namn, initiera namnet om det inte redan finns, och\n" +" index pÃ¥ nästa argument läggas i skalvariabeln OPTIND. OPTIND\n" +" initieras till 1 varje gÃ¥ng skalet eller ett skalskript startas. När\n" +" en flagga behöver ett argument placerar getopts det argumentet i\n" +" skalvariabeln OPTARG.\n" +" \n" +" getopts rapporterar fel pÃ¥ ett av tvÃ¥ sätt. Om det första tecknet\n" +" i OPTSTRING är ett kolon använder getopts tyst felrapportering. I\n" +" detta läge skrivs inget felmeddelande ut. Om en ogiltig flagga ses\n" +" placerar getopts det funna flaggtecknet i OPTARG. Om ett nödvändigt\n" +" argument inte finns placerar getopts ett â€:†i NAMN och sätter OPTARG\n" +" till det funna flaggtecknet. Om getopts inte är i tyst läge och en\n" +" felaktig flagga upptäcks placerar getopts â€?†i NAMN och tar bort\n" +" OPTARG. Om ett nödvändigt argument inte hittas placeras ett â€?†i\n" +" NAMN, OPTARG tas bort och ett felmeddelande skrivs.\n" +" \n" +" Om skalvariabeln OPTERR har värdet 0 avaktiverar getopts utskriften\n" +" av felmeddelanden, även om det första tecknet i FLGSTRÄNG inte är ett\n" +" kolon. OPTERR har värdet 1 som standard.\n" +" \n" +" Getopts tolkar normalt positionsparametrarna ($0 - $9), men om fler\n" +" argument ges tolkas de istället.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om en flagga hittas, misslyckas om slutet av\n" +" flaggorna nÃ¥s eller ett fel inträffar." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Ersätt skalet med det givna kommandot.\n" +" \n" +" Exekvera KOMMANDO genom att ersätta detta skal med det angivna " +"programmet.\n" +" ARGUMENT blir argument till KOMMANDO. Om KOMMANDO inte anges kommer\n" +" eventuella omdirigeringar att gälla för det aktuella skalet.\n" +" \n" +" Flaggor:\n" +" -a namn\tskicka NAMN som det nollte argumentet till KOMMANDO\n" +" -c\texekvera KOMMANDO med en tom miljö\n" +" -l\tplacera ett streck i det nollte argumentet till KOMMANDO\n" +" \n" +" Om kommandot inte kan exekveras avslutar ett ickeinteraktivt skal, om\n" +" inte skalflaggan â€execfail†är satt.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte KOMMANDO inte finns eller ett fel vid\n" +" omdirigering inträffar." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Avsluta skalet.\n" +" \n" +" Avslutar skalet med statusen N. Om N utelämnas är slutstatusen den\n" +" hos det sist körda kommandot." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Avsluta ett inloggningsskal.\n" +" \n" +" Avslutar ett inloggningsskal med slutstatus N. Returnerar ett fel om\n" +" det inte körs i ett inloggningsskal." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Visa eller kör kommandon frÃ¥n historielistan.\n" +" \n" +" fc används för att lista eller redigera och köra om kommandon frÃ¥n\n" +" historielistan. FÖRSTA och SISTA kan vara tal som anger intervallet,\n" +" eller sÃ¥ kan FÖRSTA vara en sträng, som betyder det senaste kommandot\n" +" som börjar med den strängen.\n" +" \n" +" Flaggor:\n" +" -e RNAMN\tvälj vilken redigerar som skall användas. Standard är\n" +" \t\tFCEDIT, sedan EDITOR, sedan vi\n" +" -l \tlista rader istället för att redigera\n" +" -n\tutelämna radnummer vid listningen\n" +" -r\treversera ordningen pÃ¥ raderna (nyaste listas först)\n" +" \n" +" Med formatet â€fc -s [mnst=ers ...] [kommando]†körs KOMMANDO om efter\n" +" att substitutionen GAMMALT=NYTT har utförts.\n" +" \n" +" Ett användbart alias att använda med detta är r=\"fc -s\", sÃ¥ att " +"skriva\n" +" â€r cc†kör senaste kommandot som börjar med â€cc†och att skriva â€r†kör\n" +" om senaste kommandot.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng eller status pÃ¥ exekverat kommando, skilt frÃ¥n noll\n" +" om ett fel inträffar." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Flytta ett jobb till förgrunden.\n" +" \n" +" Placera jobbet som identifieras av JOBBSPEC i förgrunden, och gör det\n" +" till det aktuella jobbet. Om ingen JOBBSPEC finns används skalets\n" +" begrep om det aktuella jobbet.\n" +" \n" +" Slutstatus:\n" +" Status pÃ¥ kommandot som placerades i förgrunden, eller misslyckande om\n" +" ett fel inträffar." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Flytta jobb till bakgrunden.\n" +" \n" +" Placera jobben som identifieras av varje JOBBSPEC i bakgrunden som om " +"de\n" +" hade startats med â€&â€. Om ingen JOBBSPEC finns används skalets begrepp\n" +" om det aktuella jobbet.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte jobbstyrning inte är aktiverat eller ett " +"fel\n" +" inträffar." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Kom ihÃ¥g eller visa programlägen.\n" +" \n" +" Bestäm och kom ihÃ¥g den fullständiga sökvägen till varje kommando NAMN.\n" +" Om inget argument ges visas information om kommandon som finns i " +"minnet.\n" +" \n" +" Flaggor:\n" +" -d\tglöm platsen i minnet för varje NAMN\n" +" -l\tvisa i ett format som kan Ã¥teranvändas som indata\n" +" -p sökväg använd SÖKVÄG som den fullständiga sökvägen till NAMN\n" +" -r\tglöm alla platser i minnet\n" +" -t\tskriv platsen i minnet för varje NAMN, med NAMN före\n" +" \t\tvarje motsvarande plats om flera NAMN ges\n" +" Argument:\n" +" NAMN\tVarje NAMN söks efter i $PATH och läggs till i listan\n" +" \t\tav kommandon i minnet.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte NAMN inte hittas eller en ogiltig flagga ges." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Visa information om inbyggda kommandon.\n" +" \n" +" Visar korta sammanfattningar om inbyggda kommandon. Om MÖNSTER anges\n" +" ges detaljerad hjälp om alla kommandon som matchar MÖNSTER, annars " +"skrivs\n" +" listan med hjälpämnen.\n" +" \n" +" Flaggor:\n" +" -d\tvisa en kort beskrivning för varje ämne\n" +" -m\tvisa användning i lÃ¥tsas-mansideformat\n" +" -s\tvisa endast ett kort användningsformat för varje ämne som\n" +" \t\tmatchar MÖNSTER\n" +" \n" +" Argument:\n" +" MÖNSTER\tMönster som anger hjälpämnen\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte MÖNSTER inte finns eller en ogiltig flagga " +"ges." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Visa eller hantera historielistan.\n" +" \n" +" Visa historielistan med radnummer, inled varje modifierad post med en\n" +" â€*â€. Ett argument N listar endast de N senaste posterna.\n" +" \n" +" Flaggor:\n" +" -c\tnollställ historielistan genom att ta bort alla poster\n" +" -d avstÃ¥nd\tta bort historieposten pÃ¥ position AVSTÃ…ND. Negativa\n" +" \t\tavstÃ¥nd räknar baklänges frÃ¥n slutet av historielistan \n" +" \n" +" -a\tlägg till historierader frÃ¥n denna session till historiefilen\n" +" -n\tläs alla historierader som inte redan lästs frÃ¥n historiefilen\n" +" \t\toch lägg till dem till historielistan\n" +" -r\tläs historiefilen och lägg till innehÃ¥llet till historielistan\n" +" -w\tskriv den aktuella historien till historiefilen\n" +" \n" +" -p\tutför historieexpansion pÃ¥ varje ARG och visa resultatet utan\n" +" \t\tatt lagra det i historielistan\n" +" -s\tlägg till ARG till historielistan som en ensam post\n" +" \n" +" Om FILNAMN anges används det som historiefil. Annars, om HISTFILE har\n" +" ett värde används det, annars ~/.bash_history.\n" +" \n" +" Om variabeln HISTTIMEFORMAT är satt och inte tom används dess värde som\n" +" en formatsträng till strftime(3) för att skriva tidsstämplar " +"tillhörande\n" +" varje visad historiepost. Inga tidsstämplar skrivs annars.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " +"inträffar." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Visa status pÃ¥ jobb.\n" +" \n" +" Lista de aktiva jobben. JOBBSPEC begränsar utdata till det jobbet.\n" +" Utan flaggor visas status pÃ¥ alla aktiva jobb.\n" +" \n" +" Flaggor:\n" +" -l\tlistar process-id:n utöver den normala informationen\n" +" -n\tlistar endast processer som har ändrat status sedan senaste\n" +" notifiering\n" +" -p\tlistar endast process-id:n\n" +" -r\tbegränsar utdata till körande jobb\n" +" -s\tbegränsar utdata till stoppade jobb\n" +" \n" +" Om -x anges körs KOMMANDO efter alla jobbspecifikationer som förekommer\n" +" i ARG har ersatts med process-id:t för det jobbets processgruppledare.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " +"inträffar.\n" +" Om -x används returneras slutstatus frÃ¥n KOMMANDO." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Ta bort jobb frÃ¥n det aktuella skalet.\n" +" \n" +" Tar bort varje JOBBSPEC-argument frÃ¥n tabellen över aktiva jobb. Utan\n" +" nÃ¥gon JOBBSPEC använder skalet sitt begrepp om det aktuella jobbet.\n" +" \n" +" Flaggor:\n" +" -a\tta bort alla jobb om JOBBSPEC inte anges\n" +" -h\tmärk varje JOBBSPEC sÃ¥ att SIGHUP inte skickas till jobbet om\n" +" \t\tskalet tar emot en SIGHUP\n" +" -r\ttar bara bort körande jobb\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga eller JOBBSPEC ges." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Skicka en signal till ett jobb.\n" +" \n" +" Skicka processerna som identifieras av PID eller JOBBSPEC signalerna " +"som\n" +" namnges av SIGSPEC eller SIGNUM. Om varken SIGSPEC eller SIGNUM är\n" +" angivna antas SIGTERM.\n" +" \n" +" Flaggor:\n" +" -s sig\tSIG är ett signalnamn\n" +" -n sig\tSIG är ett signalnummer\n" +" -l\tlista signalnamnen. Om argument följer â€-l†antas de vara\n" +" \t\tsignalnummer som namn skall listas för\n" +" -L\tsynonym för -l\n" +" \n" +" Kill är inbyggt i skalet av tvÃ¥ skäl: det tillÃ¥ter att jobb-id:n " +"används\n" +" istället för process-id:n, och det tillÃ¥ter processer att dödas om " +"gränsen\n" +" för hur mÃ¥nga processer du fÃ¥r skapa har nÃ¥tts.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga angivits eller ett fel\n" +" inträffar." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Evaluera aritmetiska uttryck.\n" +" \n" +" Evaluera varje ARG som ett aritmetiskt uttryck. Evaluering görs i " +"heltal\n" +" med fix bredd utan kontroll av spill, fast division med 0 fÃ¥ngas och\n" +" flaggas som ett fel. Följande lista över operatorer är grupperad i\n" +" nivÃ¥er av operatorer med samma precedens. NivÃ¥erna är listade i " +"ordning\n" +" med sjunkande precedens.\n" +" \n" +" \tid++, id--\tpostinkrementering av variabel, postdekrementering\n" +" \t++id, --id\tpreinkrementering av variabel, predekrementering\n" +" \t-, +\t\tunärt minus, plus\n" +" \t!, ~\t\tlogisk och bitvis negering\n" +" \t**\t\texponentiering\n" +" \t*, /, %\t\tmultiplikation, division, rest\n" +" \t+, -\t\taddition, subtraktion\n" +" \t<<, >>\t\tvänster och höger bitvisa skift\n" +" \t<=, >=, <, >\tjämförelse\n" +" \t==, !=\t\tlikhet, olikhet\n" +" \t&\t\tbitvis OCH\n" +" \t^\t\tbitvis EXKLUSIVT ELLER\n" +" \t|\t\tbitvis ELLER\n" +" \t&&\t\tlogiskt OCH\n" +" \t||\t\tlogiskt ELLER\n" +" \tuttr ? uttr : uttr\n" +" \t\t\tvillkorlig operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\ttilldelning\n" +" \n" +" Skalvariabler är tillÃ¥tna som operander. namnet pÃ¥ variablerna ersätts\n" +" med deras värde (omformat till ett heltal med fix bredd) inom ett\n" +" uttryck. Variablerna behöver inte ha sina heltalsattribut pÃ¥slagna för\n" +" att användas i ett uttryck.\n" +" \n" +" Operatorer beräknas i precedensordning. Deluttryck i parenteser " +"beräknas\n" +" först och kan Ã¥sidosätta precedensreglerna ovan.\n" +" \n" +" Slutstatus:\n" +" Om det sista ARG beräknas till 0, returnerar let 1; let returnerar 0 " +"annars." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Läs en rad frÃ¥n standard in och dela upp den i fält.\n" +" \n" +" Läser en ensam rad frÃ¥n standard in, eller frÃ¥n filbeskrivare FB om\n" +" flaggan -u ges. Raden delas upp i fält som vid orduppdelning, och " +"första\n" +" ordet tilldelas det första NAMNet, andra ordet till det andra NAMNet, " +"och\n" +" sÃ¥ vidare, med eventuella Ã¥terstÃ¥ende ord tilldelade till det sista\n" +" NAMNet. Endast tecknen som finns i $IFS används som ordavgränsare.\n" +" \n" +" Om inga NAMN anges, lagras den inlästa raden i variabeln REPLY.\n" +" \n" +" Flaggor:\n" +" -a vektor\ttilldela de inlästa orden till sekventiella index i " +"vektor-\n" +" \t\tvariabeln VEKTOR, med start frÃ¥n noll\n" +" -d avgr\tfortsätt tills det första tecknet i AVGR lästs, istället för\n" +" \t\tnyrad\n" +" -e\tanvänd Readline för att fÃ¥ in raden\n" +" -i text\tAnvänd TEXT som starttext för Readline\n" +" -n ntkn\treturnera efter att ha läst NTKN tecken istället för att\n" +" \t\tvänta pÃ¥ en nyrad, men ta hänsyn till en avgränsare om färre\n" +" \t\tän NTKN tecken lästs före avgränsaren\n" +" -N ntkn\treturnera endast efter att ha läst exakt NTKN tecken, om " +"inte\n" +" \t\tfilslut pÃ¥träffades eller tidsgränsen överskreds, ignorera\n" +" \t\talla avgränsare\n" +" -p prompt\tskriv ut strängen PROMPT utan en avslutande nyrad före\n" +" \t\tförsök att läsa\n" +" -r\ttillÃ¥t inte bakstreck att skydda nÃ¥gra tecken\n" +" -s\teka inte indata som kommer frÃ¥n terminalen\n" +" -t tidgräns\tsluta vänta och returnera misslyckande om inte en\n" +" \t\tkomplett rad lästs inom TIDSGRÄNS sekunder. Värdet pÃ¥ variabeln\n" +" \t\tTMOUT är standardvärdet pÃ¥ tidsgränsen. TIDSGRÄNS kan vara ett\n" +" \t\tdecimaltal. Om TIDSGRÄNS är 0 returnerar read direkt, utan\n" +" att försöka läsa nÃ¥gra data, och returnerar lyckad status " +"bara\n" +"\t\tom det finns indata tillgängligt pÃ¥ den angivna filbeskrivaren.\n" +" Slutstatus är större än 128 om tidsgränsen överskrids\n" +" -u fb\tläs frÃ¥n filbeskrivare FB istället för standard in\n" +" \n" +" Slutstatus:\n" +" Returkoden är noll om inte filslut nÃ¥s, läsningens tidsgräns överskrids\n" +" (dÃ¥ den är större än 128), ett fel vid variabeltilldelning inträffar " +"eller\n" +" en ogiltig filbeskrivare ges som argument till -u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Returnera frÃ¥n en skalfunktion.\n" +" \n" +" FÃ¥r en funktion eller ett källinläst skript att avsluta med returvärdet\n" +" som anges av N. Om N utelämnas är returstatus den hos det sista\n" +" kommandot som körts i funktionen eller skriptet.\n" +" \n" +" Slutstatus:\n" +" Returnerar N, eller misslyckande om skalet inte kör en funktion eller\n" +" skript." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Sätt eller ta bort satta värden pÃ¥ skalflaggor och positionsparametrar.\n" +" \n" +" Ändra värdet pÃ¥ skalattribut och positionsparametrar, eller visa namnen\n" +" och värdena pÃ¥ skalvariabler.\n" +" \n" +" Flaggor:\n" +" -a Markera variabler om ändras eller skapas för export.\n" +" -b Rapportera om avslutade jobb omedelbart.\n" +" -e Avsluta omedelbart om ett kommando avslutar med nollskild status.\n" +" -f Avaktivera filnamnsgenerering (globbing).\n" +" -h Kom ihÃ¥g platsen för kommandon när de slÃ¥s upp.\n" +" -k Alla tilldelningsargument placeras i miljön för ett kommando, " +"inte\n" +" bara de som föregÃ¥r kommandonamnet.\n" +" -m Jobbstyrning är aktiverat.\n" +" -n Läs kommandon men exekvera dem inte.\n" +" -o flaggnamn\n" +" Sätt variabeln som motsvarar flaggnamn:\n" +" allexport samma som -a\n" +" braceexpand samma som -B\n" +" emacs använd radredigeringsgränssnitt i emacsstil\n" +" errexit samma som -e\n" +" errtrace samma som -E\n" +" functrace samma som -T\n" +" hashall samma som -h\n" +" histexpand samma som -H\n" +" history aktivera kommandohistoria\n" +" ignoreeof skalet kommer inte avsluta vid läsning av " +"filslut\n" +" interactive-comments\n" +" tillÃ¥t kommentarer att förekomma i interaktiva\n" +" kommandon\n" +" keyword samma som -k\n" +" monitor samma som -m\n" +" noclobber samma som -C\n" +" noexec samma som -n\n" +" noglob samma som -f\n" +" nolog accepteras men ignoreras för närvarande\n" +" notify samma som -b\n" +" nounset samma som -u\n" +" onecmd samma som -t\n" +" physical samma som -P\n" +" pipefail returvärdet av ett rör är status pÃ¥ det sista\n" +" kommandot som avslutas med en status skild frÃ¥n\n" +" noll, eller noll om inget kommando avslutas med\n" +" en status skild frÃ¥n noll\n" +" posix ändra beteendet pÃ¥ bash där standardbeteendet\n" +" skiljer sig frÃ¥n Posixstandarden till att stämma\n" +" med standarden\n" +" privileged samma som -p\n" +" verbose samma som -v\n" +" vi använd radredigeringsgränssnitt i vi-stil\n" +" xtrace samma som -x\n" +" -p SlÃ¥s pÃ¥ när den verkliga och effektiva användar-id:n inte stämmer\n" +" överens. Avaktiverar bearbetning av $ENV-filen och import av\n" +" skalfunktioner. Att slÃ¥ av denna flagga fÃ¥r den effektiva uid " +"och\n" +" gid att sättas till den verkliga uid och gid.\n" +" -t Avsluta efter att ha läst och exekverat ett kommando.\n" +" -u Behandla osatta variabler som fel vid substitution.\n" +" -v Skriv skalindatarader allteftersom de läses.\n" +" -x Skriv kommandon och deras argument allteftersom de körs.\n" +" -B skalet kommer utföra klammerexpansion\n" +" -C Om satt tillÃ¥ts inte existerande normala filer att skrivas över\n" +" av omdirigering av utdata.\n" +" -E Om satt ärvs ERR-fällan av skalfunktioner.\n" +" -H Aktivera historiesubstitution i !-stil. Denna flagga är pÃ¥ som\n" +" standard när skalet är interaktivt.\n" +" -P Om satt löses inte symboliska länkar upp när kommandon sÃ¥som cd\n" +" körs som ändrar aktuell katalog.\n" +" -T Om satt ärvs DEBUG och RETURN-fällorna av skalfunktioner.\n" +" -- Tilldela eventuella Ã¥terstÃ¥ende argument till " +"positionsparametrar.\n" +" Om det inte finns nÃ¥gra Ã¥terstÃ¥ende argument nollställs\n" +" positionsparametrarna.\n" +" - Tilldela eventuella Ã¥terstÃ¥ende argument till " +"positionsparametrar.\n" +" Flaggorna -x och -v slÃ¥s av.\n" +" \n" +" Användning av + istället för - fÃ¥r dessa flaggor att slÃ¥s av. " +"Flaggorna\n" +" kan även användas vid uppstart av skalet. Den aktuella uppsättningen\n" +" flaggor finns i $-. De Ã¥terstÃ¥ende n ARGumenten är positionsparametrar\n" +" och tilldelas, i ordning, till $1, $2, .. $n. Om inga ARGument ges\n" +" skrivs alla skalvariabler ut.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Ta bort värden och attribut pÃ¥ skalvariabler och -funktioner.\n" +" \n" +" Tag för varje NAMN bort motsvarande variabel eller funktion.\n" +" \n" +" Flaggor:\n" +" -f\tbehandla varje NAMN som en skalfunktion\n" +" -v\tbehandla varje NAMN som en skalvariabel\n" +" -n\tbehandla varje NAMN som en namnreferens tar bort värdet pÃ¥\n" +" variabeln själv istället för variabeln den refererar\n" +" \n" +" Utan flaggor försöker unset först att ta bort en variabel, och, om det\n" +" misslyckas, försöker den ta bort en funktion.\n" +" \n" +" NÃ¥gra variabler kan inte tas bort, se även â€readonlyâ€.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN endast är\n" +" läsbart." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Sätt exportattribut pÃ¥ skalvariabler.\n" +" \n" +" Markerar varje NAMN för automatisk export till miljön för senare\n" +" exekverade kommandon. Om VÄRDE anges tilldelas VÄRDE före export.\n" +" \n" +" Flaggor:\n" +" -f\treferera till skalfunktioner\n" +" -n\tta bort exportegenskapen frÃ¥n varje NAMN\n" +" -p\tvisa en lista av alla exporterade variabler och funktioner\n" +" \n" +" Ett argument â€--†avslutar vidare flaggbearbetning.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN är ogiltigt." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Markera skalvariabler som oföränderliga.\n" +" \n" +" Markera varje NAMN som oföränderligt. Värdena pÃ¥ dessa NAMN kan inte\n" +" ändras av senare tilldelningar. Om VÄRDE anges tilldelas VÄRDE före\n" +" variabeln markeras oföränderlig.\n" +" \n" +" Flaggor:\n" +" -a\treferera till indexerade vektorvariabler\n" +" -A\trefererar till associativa vektorvariabler\n" +" -f\treferera till skalfunktioner\n" +" -p\tvisa en lista över alla oföränderliga variabler eller funktioner,\n" +" beroende pÃ¥ huruvida flaggan -f ges\n" +" \n" +" Ett argument â€--†avslutar vidare flaggbearbetning.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN är ogiltigt." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Skifta positionsparametrar.\n" +" \n" +" Byt namn pÃ¥ positionsparametrarna $N+1,$N+2 ... till $1,$2 ... Om N " +"inte\n" +" anges antas det vara 1.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte N är negativt eller större än $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Exekvera kommandon frÃ¥n en fil i det aktuella skalet.\n" +" \n" +" Läs och exekvera kommandon frÃ¥n FILNAMN i det aktuella skalet. " +"Posterna\n" +" i $PATH används för att hitta katalogen som innehÃ¥ller FILNAMN. Om\n" +" nÃ¥got ARGUMENT ges blir de positionsparametrar när FILNAMN körs.\n" +" \n" +" Slutstatus:\n" +" Returnerar status pÃ¥ det sista kommandot som körs i FILNAMN, misslyckas\n" +" om FILNAMN inte kan läsas." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspendera skalexekvering.\n" +" \n" +" Suspendera exekveringen av detta skal tills det fÃ¥r en SIGCONT-signal.\n" +" Om det inte framtvingas kan inloggningsskal inte suspenderas.\n" +" \n" +" Flaggor:\n" +" -f\tframtvinga suspendering, även om skalet är ett inloggningsskal\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte jobbstyrning inte är aktiverat eller ett " +"fel\n" +" inträffar." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Beräkna villkorligt uttryck.\n" +" \n" +" Avslutar med en status pÃ¥ 0 (sant) eller 1 (falskt) beroende pÃ¥\n" +" beräkningen av UTTR. Uttryck kan vara unära eller binära. Unära\n" +" uttryck är ofta till för att undersöka status för en fil. Det finns\n" +" strängoperatorer och numeriska jämförelseoperatorer ocksÃ¥.\n" +" \n" +" Beteendet hos test beror pÃ¥ antalet argument. Läs bash-manualsidan\n" +" för den fullständiga specifikationen.\n" +" \n" +" Filoperatorer:\n" +" \n" +" -a FIL Sant om filen finns.\n" +" -b FIL Sant om filen är en blockspecialfil.\n" +" -c FIL Sant om filen är en teckenspecialfil.\n" +" -d FIL Sant om filen är en katalog.\n" +" -e FIL Sant om filen finns.\n" +" -f FIL Sant om filen finns, och är en normal fil.\n" +" -g FIL Sant om filen är sätt-grupp-id.\n" +" -h FIL Sant om filen är en symbolisk länk.\n" +" -L FIL Sant om filen är en symbolisk länk.\n" +" -k FIL Sant om filen har â€fastbiten†satt.\n" +" -p FIL Sant om filen är ett namngivet rör.\n" +" -r FIL Sant om filen kan läsas av dig.\n" +" -s FIL Sant om filen finns och inte är tom.\n" +" -S FIL Sant om filen är ett uttag (socket).\n" +" -t FB Sant om FB är öppnad mot en terminal.\n" +" -u FIL Sant om filen är sätt-användar-id.\n" +" -w FIL Sant om filen är skrivbar av dig.\n" +" -x FIL Sant om filen är exekverbar av dig.\n" +" -O FIL Sant om filen ägs av din verksamma användare.\n" +" -G FIL Sant om filen ägs av din verksamma grupp.\n" +" -N FIL Sant om filen har ändrats sedan den sist lästes.\n" +" \n" +" FIL1 -nt FIL2 Sant om fil1 är nyare än fil2 (enligt\n" +" modifieringsdatum).\n" +" \n" +" FIL1 -ot FIL2 Sant om fil1 är äldre än fil2.\n" +" \n" +" FIL1 -ef FIL2 Sant om fil1 är en hÃ¥rd länk till fil2.\n" +" \n" +" Strängoperatorer:\n" +" \n" +" -z STRÄNG Sant om strängen är tom.\n" +" \n" +" -n STRÄNG\n" +" STRÄNG Sant om strängen inte är tom.\n" +" \n" +" STRÄNG1 = STRÄNG2\n" +" Sant om strängarna är lika.\n" +" STRÄNG1 != STRÄNG2\n" +" Sant om strängarna inte är lika.\n" +" STRÄNG1 < STRÄNG2\n" +" Sant om STRÄNG1 kommer före STRÄNG2 lexikografiskt.\n" +" STRÄNG1 > STRÄNG2\n" +" Sant om STRÄNG1 kommer efter STRÄNG2 lexikografiskt.\n" +" \n" +" Andra operatorer:\n" +" \n" +" -o FLAGGA Sant om skalflaggan FLAGGA är aktiv.\n" +" -v VAR Sant om skalvariabeln VAR är satt.\n" +" -R VAR Sant om skalvariabeln VAR är satt och är en " +"namnreferens.\n" +" ! UTTR Sant om uttr är falskt.\n" +" UTTR1 -a UTTR2 Sant om bÃ¥de uttr1 OCH uttr2 är sanna.\n" +" UTTR1 -o UTTR2 Sant om antingen uttr1 ELLER uttr2 är sanna.\n" +" \n" +" arg1 OP arg2 Aritmetiska test. OP är en av -eq, -ne,\n" +" -lt, -le, -gt eller -ge.\n" +" \n" +" Aritmetiska binära operatorer returnerar sant om ARG1 är lika-med,\n" +" inte-lika-med, mindre-än, mindre-än-eller-lika-med, större-än eller\n" +" större-än-eller-lika-med ARG2.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om UTTR beräknas till sant. Misslyckas ifall UTTR\n" +" beräknas till falskt eller ett ogiltigt argument ges." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Beräkna villkorligt uttryck.\n" +" \n" +" Detta är en synonym till det inbyggda â€testâ€, men det sista argumentet\n" +" mÃ¥ste vara en bokstavlig â€]â€, för att matcha den inledande â€[â€." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Visa processtider.\n" +" \n" +" Skriver ut den sammanlagda användar- och systemtiden för skalet och " +"alla\n" +" dess barnprocesser.\n" +" \n" +" Slutstatus:\n" +" Lyckas alltid." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"FÃ¥nga signaler och andra händelser.\n" +" \n" +" Definierar och aktiverar hanterare som skall köras när skalet tar emot\n" +" signaler eller andra omständigheter.\n" +" \n" +" ARG är ett kommando som skall läsas och exekveras när skalet tar emot\n" +" signalen SIGNALSPEC. Om ARG inte anges (och en ensam SIGNALSPEC ges)\n" +" eller â€-†återställs varje angiven signal till sitt originalvärde. Om\n" +" ARG är den tomma strängen ignoreras varje SIGNALSPEC av skalet och av\n" +" kommandon det startar.\n" +" \n" +" Om en SIGNALSPEC är EXIT (0) exekveras ARG vid avslut frÃ¥n skalet. Om\n" +" en SIGNALSPEC är DEBUG exekveras ARG före varje enkelt kommando. Om\n" +" en SIGNALSPEC är RETURN exekveras ARG varje gÃ¥ng en skalfunktion eller\n" +" ett skript kört med den inbyggda . eller source avslutar körningen. En\n" +" SIGNALSPEC ERR betyder att köra ARG varje gÃ¥ng ett kommandos felstatus\n" +" skulle fÃ¥tt skalet att avsluta om flaggan -e vore satt.\n" +" \n" +" Om inga argument ges skriver trap listan av kommandon som hör till " +"varje\n" +" signal.\n" +" \n" +" Flaggor:\n" +" -l\tskriv en lista av signalnamn och deras motsvarande nummer\n" +" -p\tvisa trap-kommandona associerade med varje SIGNALSPEC\n" +" \n" +" Varje SIGNALSPEC är antingen ett signalnamn i eller ett\n" +" signalnummer. Signalnamn är skiftlägesokänsliga och SIG-prefixet är\n" +" frivilligt. En signal kan skickas till skalet med â€kill -signal $$â€.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en SIGSPEC är ogiltig eller en ogiltig " +"flagga\n" +" ges." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Visa information om kommandotyper.\n" +" \n" +" Indikera för varje NAMN hur det skulle tolkats om det användes som ett\n" +" kommandonamn.\n" +" \n" +" Flaggor:\n" +" -a\tvisa alla platser som innehÃ¥ller ett körbart program med namnet\n" +" \t\tNAMN, inklusive alias, inbyggda och funktioner, om och endast\n" +" \t\tom flaggan â€-p†inte ocksÃ¥ används\n" +" -f\tutelämna uppslagning av skalfunktioner\n" +" -P\tframtvinga en PATH-sökning för varje NAMN, även om det är ett\n" +" \t\talias, inbyggt eller funktion, och returnera namnet pÃ¥ diskfilen\n" +" \t\tsom skulle blivit exekverad\n" +" -p\treturnerar antingen namnet pÃ¥ diskfilen som skulle exekverats,\n" +" \t\teller ingenting om â€type -t NAMN†inte skulle returnerat â€fileâ€.\n" +" -t\tskriv ut ett ensamt ord som är ett av â€aliasâ€, â€keywordâ€,\n" +" \t\tâ€functionâ€, â€builtinâ€, â€file†eller â€â€, om NAMN är ett alias, ett\n" +" \t\treserverat ord i skalet, en skalfunktion, inbyggt i skalet, en\n" +" \t\tdiskfil respektive inte finns\n" +" \n" +" Argument:\n" +" NAMN\tKommandonamn som skall tolkas.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om alla NAMNen finns, misslyckas om nÃ¥got inte finns." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modifiera skalresursgränser.\n" +" \n" +" Ger kontroll över resurserna som är tillgängliga till skalet och " +"processer\n" +" det skapar, pÃ¥ system som möjliggör sÃ¥dan styrning.\n" +" \n" +" Flaggor:\n" +" -S\tanvänd den â€mjuka†resursgränsen\n" +" -H\tanvänd den â€hÃ¥rda†resursgränsen\n" +" -a\talla aktuella gränser rapporteras\n" +" -b\tstorleken pÃ¥ uttagsbuffertar\n" +" -c\tden maximala storleken pÃ¥ minnesutskrifter som skapas\n" +" -d\tden maximala storleken pÃ¥ en process datasegment\n" +" -e\tden maximala schemaläggningsprioriteten (â€niceâ€)\n" +" -f\tden maximala storleken pÃ¥ filer som skrivs av skalet och dess\n" +" \tbarn\n" +" -i\tdet maximala antalet väntande signaler\n" +" -k\tdet maximala antalet kqueue:r allokerade för denna process\n" +" -l\tden maximala storleken en process kan lÃ¥sa i minnet\n" +" -m\tden maximala residenta mängdstorleken\n" +" -n\tdet maximala antalet öppna filbeskrivare\n" +" -p\trörbuffertstorleken\n" +" -q\tdet maximala antalet byte i POSIX-meddelandeköer\n" +" -r\tden maximala prioriteten för realtidsschemaläggning\n" +" -s\tden maximala stackstorleken\n" +" -t\tden maximala mängden cpu-tid i sekunder\n" +" -u\tdet maximala antalet användarprocesser\n" +" -v\tstorleken pÃ¥ det virtuella minnet\n" +" -x\tdet maximala antalet fillÃ¥s\n" +" -P det maximala antalet pseudoterminaler\n" +" -T det maximala antalet trÃ¥dar\n" +" \n" +" Alla flaggor är inte tillgängliga pÃ¥ alla plattformar.\n" +" \n" +" Om GRÄNS anges är det ett nytt värde för den specificerade resursen; de\n" +" speciella GRÄNS-värdena â€softâ€, â€hard†och â€unlimited†stÃ¥r för den\n" +" aktuella mjuka gränsen, den aktuella hÃ¥rda gränsen respektive ingen " +"gräns.\n" +" Annars skrivs det aktuella värdet pÃ¥ den specificerade resursen. Om\n" +" ingen flagga ges antas -f.\n" +" \n" +" Värden är i 1024-bytesteg, utom för -t som är i sekunder, -p som är i " +"steg\n" +" pÃ¥ 512 byte och -u som är ett antal processer utan nÃ¥gon skalning.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga anges eller ett fel " +"inträffar." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Visa eller sätt filrättighetsmask.\n" +" \n" +" Sätter användarens filskapningsmask till RÄTTIGHETER. Om RÄTTIGHETER\n" +" utelämnas skrivs det aktuella värdet pÃ¥ masken.\n" +" \n" +" Om RÄTTIGHETER börjar med en siffra tolkas det som ett oktalt tal, " +"annars\n" +" är det en symbolisk rättighetssträng som den som tas av chmod(1).\n" +" \n" +" Flaggor:\n" +" -p\tom RÄTTIGHETER utelämnas, skriv ut i en form som kan\n" +" \tÃ¥teranvändas som indata\n" +" -S\tgör utmatningen symbolisk, annars används oktala tal\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte RÄTTIGHETER är ogiltig eller en ogiltig " +"flagga\n" +" ges." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Vänta pÃ¥ att jobb blir färdiga och returnera slutstatus.\n" +" \n" +" Väntar pÃ¥ varje process som identifieras av ett ID, som kan vara en\n" +" process-id eller en jobbspecifikation, och rapportera dess\n" +" avslutningsstatus. Om ID inte ges, vänta pÃ¥ alla nu körande\n" +" barnprocesser, och returstatus är noll. Om ID är en " +"jobbspecifikation, \n" +" vänta pÃ¥ alla processer i det jobbets rör.\n" +" \n" +" Om flaggan -n ges väntar pÃ¥ nästa jobb att avsluta och returnera dess\n" +" slutstatus.\n" +" \n" +" Om flaggan -f anges, och jobbstyrning är aktiverat, väntar pÃ¥ att det\n" +" angivna ID:t avslutas, istället för att vänta pÃ¥ att det ändrar status.\n" +" \n" +" Slutstatus:\n" +" Returnerar status pÃ¥ den sista ID, misslyckas ifall ID är ogiltig\n" +" eller en ogiltig flagga ges." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Vänta pÃ¥ att en process blir färdig och returnerar slutstatus.\n" +" \n" +" Väntar pÃ¥ varje process som identifieras av en PID rapporterar dess\n" +" slutstatus. Om PID inte ges, väntar pÃ¥ alla nu körande barnprocesser,\n" +" och returstatus är noll. PID mÃ¥ste vara en process-id.\n" +" \n" +" Slutstatus:\n" +" Returnerar status pÃ¥ den sista PID, misslyckas ifall PID är ogiltig\n" +" eller en ogiltig flagga ges." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Exekvera kommandon för varje medlem i en lista.\n" +" \n" +" â€forâ€-slingan exekverar en sekvens av kommandon för varje medlem i en\n" +" lista av element. Om â€in ORD ...;†inte är med antas 'in \"$@\"'. För\n" +" varje element i ORD sätts NAMN till det elementet, och KOMMANDON\n" +" exekveras.\n" +" \n" +" Slutstatus:\n" +" Returnerar status för det sist exekverade kommandot." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Aritmetisk for-slinga.\n" +" \n" +" Likvärdigt med\n" +" \t(( UTR1 ))\n" +" \twhile (( UTR2 )); do\n" +" \t\tKOMMANDON\n" +" \t\t(( UTR3 ))\n" +" \tdone\n" +" UTR1, UTR2 och UTR3 är aritmetiska uttryck. Om nÃ¥got uttryck utelämnas\n" +" beter det sig som om det beräknas till 1.\n" +" \n" +" Slutstatus:\n" +" Returnerar statusen frÃ¥n det sist exekverade kommandot." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Välj ord frÃ¥n en lista och exekvera kommandon.\n" +" \n" +" ORD expanderas och genererar en lista med ord. Mängden av\n" +" expanderade ord skrivs pÃ¥ standard fel, vart och ett föregÃ¥nget\n" +" av ett tal. Om `in ORD' inte är med antas 'in \"$@\"'. Prompten\n" +" PS3 skrivs sedan och en rad läses frÃ¥n standard in. OM raden\n" +" bestÃ¥r av numret motsvarande en av de visade orden sätts NAMN\n" +" till det ordet. Om raden är tom visas ORD och prompten igen.\n" +" Om filslut läses avslutar kommandot. Alla andra värden fÃ¥r NAMN\n" +" att bli satt till tomt. Den inlästa raden sparas i variabeln\n" +" REPLY. KOMMANDON exekveras efter varje val tills ett\n" +" break-kommando exekveras.\n" +" \n" +" Slutstatus:\n" +" Returnerar statusen frÃ¥n det sist exekverade kommandot." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Rapportera tiden som används av rörets exekvering.\n" +" \n" +" Exekvera RÖR och skriv en sammanfattning av den verkliga tiden,\n" +" användar-CPU-tiden och system-CPU-tiden som använts för att exekvera\n" +" RÖRet när det avslutar.\n" +" \n" +" Flaggor:\n" +" -p\tskriv tidssammanfattningen i det portabla Posix-formatet\n" +" \n" +" Värdet pÃ¥ variabeln TIMEFORMAT används som utmatningsformat.\n" +" \n" +" Slutstatus:\n" +" Returstatusen är returstatusen frÃ¥n RÖR." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Exekvera kommandon baserat pÃ¥ mönstermatchning.\n" +" \n" +" Välj att exekvera KOMMANDON baserat pÃ¥ om ORD matchar MÖNSTER. Ett\n" +" â€|†används för att separera flera mönster.\n" +" \n" +" Slutstatus:\n" +" Returnerar statusen frÃ¥n det sist exekverade kommandot." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Exekvera kommandon baserat pÃ¥ ett villkor.\n" +" \n" +" Listan â€if KOMMANDON†exekveras. Om dess slutstatus är noll sÃ¥ " +"exekveras\n" +" listan â€then KOMMANDONâ€. Annars exekveras varje lista â€elif KOMMANDONâ€\n" +" i tur och ordning, och om dess slutstatus är noll exekveras motsvarande\n" +" lista â€then KOMMANDON†och if-kommandot avslutar. Annars exekveras " +"listan\n" +" â€else KOMMANDON†om den finns. Slutstatus av hela konstruktionen är\n" +" slutstatusen pÃ¥ det sist exekverade kommandot, eller noll om inget\n" +" villkor returnerade sant.\n" +" \n" +" Slutstatus:\n" +" Returnerar status frÃ¥n det sist exekverade kommandot." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Exekvera kommandon sÃ¥ länge ett test lyckas.\n" +" \n" +" Expandera och exekvera KOMMANDON sÃ¥ länge det sista kommandot i\n" +" â€whileâ€-KOMMANDONa har en slutstatus pÃ¥ noll.\n" +" \n" +" Slutstatus:\n" +" Returnerar statusen frÃ¥n det sist exekverade kommandot." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Exekvera kommandon sÃ¥ länge ett test inte lyckas.\n" +" \n" +" Expandera och exekvera KOMMANDON sÃ¥ länge det sista kommandot i\n" +" â€untilâ€-KOMMANDONa har en slutstatus som inte är noll.\n" +" \n" +" Slutstatus:\n" +" Returnerar statusen frÃ¥n det sist exekverade kommandot." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Skapa en ko-process med namnet NAMN.\n" +" \n" +" Kör KOMMANDO asynkront, med standard ut och standard in för kommandot\n" +" ansluta via ett rör till filbeskrivare tilldelade indexen 0 och 1 i\n" +" en vektorvariabel NAMN i skalet som kör. Standardvärde pÃ¥ NAMN är\n" +" â€COPROCâ€.\n" +" \n" +" Slutstatus:\n" +" Kommandot coproc returnerar slutstatusen 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Definiera en skalfunktion.\n" +" \n" +" Skapa en skalfunktion med namnet NAMN. När den anropas som ett enkelt\n" +" kommando kör NAMN KOMMANDON i det anropande skalets kontext. När NAMN\n" +" anropas skickas argumenten till funktionen som $1...$n och funktionens\n" +" namn finns i $FUNCNAME.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte NAMN endast är läsbart." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Gruppera kommandon som en enhet.\n" +" \n" +" Kör ett antal kommandon i en grupp. Detta är ett sätt att omdirigera\n" +" en hel mängd kommandon.\n" +" \n" +" Slutstatus:\n" +" Returnerar statusen frÃ¥n det sist exekverade kommandot." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Ã…teruppta jobb i förgrunden.\n" +" \n" +" Likvärdigt med JOBBSPEC-argumentet till kommandot â€fgâ€. Ã…teruppta\n" +" ett stoppat eller bakgrundsjobb. JOBBSPEC kan ange antingen ett\n" +" jobbnamn eller ett jobbnummer. Om JOBBSPEC följs av ett â€&†placeras\n" +" jobbet i bakgrunden, som om jobbspecifikationen hade givits som ett\n" +" argument till â€bgâ€.\n" +" \n" +" Slutstatus:\n" +" Returnerar statusen pÃ¥ det Ã¥terupptagna jobbet." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Beräkna aritmetiskt uttryck.\n" +" \n" +" UTTRYCKet beräknas enligt reglerna för aritmetisk beräkning.\n" +" Likvärdigt med â€let UTTRYCKâ€.\n" +" \n" +" Slutstatus:\n" +" Returnerar 1 om UTTRYCK beräknas till 0, returnerar 0 annars." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Kör ett villkorligt kommando.\n" +" \n" +" Returnerar en status av 0 eller 1 beroende pÃ¥ evalueringen av det\n" +" villkorliga uttrycket UTTRYCK. Uttryck är sammansatta av samma " +"primitiver\n" +" som används av det inbyggda â€testâ€, och kan kombineras med följande\n" +" operatorer:\n" +" \n" +" ( UTTRYCK )\tReturnerar värdet pÃ¥ UTTRYCK\n" +" ! UTTRYCK\t\tSant om UTTRYCK är falskt, annars falskt\n" +" UTTR1 && UTTR2\tSant om bÃ¥de UTTR1 och UTTR2 är sanna, annars falskt\n" +" UTTR1 || UTTR2\tSant om antingen UTTR1 eller UTTR2 är sant, annars\n" +" falskt\n" +" \n" +" När operatorerna â€==†och â€!=†används används strängen till höger om\n" +" som ett mönster och mönstermatchning utförs. När operatorn â€=~†" +"används\n" +" matchas strängen till höger om operatorn som ett reguljärt uttryck.\n" +" \n" +" Operatorerna && och || beräknar inte UTTR2 om UTTR1 är tillräckligt för\n" +" att avgöra uttryckets värde.\n" +" \n" +" Slutstatus:\n" +" 0 eller 1 beroende pÃ¥ värdet av UTTRYCK." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Vanliga skalvariablers namn och användning.\n" +" \n" +" BASH_VERSION\tVersionsinformation för denna Bash.\n" +" CDPATH\tEn kolonseparerad lista av kataloger att söka i efter\n" +" \t\tkataloger givna som argument till â€cdâ€.\n" +" GLOBIGNORE\tEn kolonseparerad lista av mönster som beskriver filnamn\n" +" \t\tatt ignorera vid söknamnsexpansion.\n" +" HISTFILE\tNamnet pÃ¥ filen där din kommandohistorik sparas.\n" +" HISTFILESIZE\tDet maximala antalet rader denna fil kan innehÃ¥lla.\n" +" HISTSIZE\tDet maximala antalet historierade ett körande skal kan\n" +" \t\tkomma Ã¥t.\n" +" HOME\tDen fullständiga sökvägen till din inloggningskatalog.\n" +" HOSTNAME\tNamnet pÃ¥ den aktuella värden.\n" +" HOSTTYPE\tTyp av CPU denna version av Bash kör under.\n" +" IGNOREEOF\tStyr skalets Ã¥tgärd när det tar emot ett filslutstecken\n" +" \t\tsom enda indata. Om den är satt är dess värde det antal\n" +" \t\tfilslutstecken som kan ses i rad pÃ¥ en tom rad innan\n" +" \t\tskalet avslutar (10 som standard). När den inte är satt\n" +" \t\tbetyder filslut slut pÃ¥ indata.\n" +" MACHTYPE\tEn sträng som beskriver det aktuella systemet Bash kör pÃ¥.\n" +" MAILCHECK\tHur ofta, i sekunder, Bash tittar efter ny post.\n" +" MAILPATH\tEn kolonseparerad lista av filnamn som Bash tittar efter\n" +" \t\tny post i.\n" +" OSTYPE\tDen version av Unix denna version av Bash kör pÃ¥.\n" +" PATH\tEn kolonseparerad lista av kataloger att söka i när\n" +" \t\tkommandon skall letas upp.\n" +" PROMPT_COMMAND\tEtt kommando att köra före utskriften av varje\n" +" \t\tprimär prompt.\n" +" PS1\t\tDen primära promptsträngen.\n" +" PS2\t\tDen sekundära promptsträngen.\n" +" PWD\t\tDet fullständiga söknamnet till den aktuella katalogen.\n" +" SHELLOPTS\tEn kolonseparerad lista av aktiverade skalflaggor.\n" +" TERM\tNamnet pÃ¥ den aktuella terminaltypen.\n" +" TIMEFORMAT\tUtmatningsformatet för tidsstatistik som visas av det\n" +" \t\treserverade ordet â€timeâ€.\n" +" auto_resume\tOm inte tomt betyder att ett kommandoord som förekommer\n" +" \t\tensamt pÃ¥ en rad först letas efter i listan av för tillfället\n" +" \t\tstoppade jobb. Om det hittas där läggs det jobbet i\n" +" \t\tförgrunden. Ett värde av â€exact†betyder att kommandoordet\n" +" \t\texakt mÃ¥ste stämma med ett kommando i listan över stoppade\n" +" \t\tjobb. Ett värde av â€substring†betyder att kommandoordet\n" +" \t\tmÃ¥ste stämma med en delsträng av jobbet. Alla andra värden\n" +" \t\tbetyder att kommandot mÃ¥ste vara ett prefix av ett stoppat\n" +" \t\tjobb.\n" +" histchars\tTecken som styr historieexpansion och snabbsubstitution.\n" +" \t\tDet första tecknet är tecknet för historiesubstitution,\n" +" \t\tvanligen â€!â€. Det andra tecknet är tecknet för â€snabb\n" +" \t\tsubstitutionâ€, vanligen â€^â€. Det tredje är tecknet för\n" +" \t\tâ€historiekommentarâ€, vanligen â€#â€.\n" +" HISTIGNORE\tEn kolonseparerad lista av mönster som används för att\n" +" \t\tbestämma vilka kommandon som skall sparas i historielistan.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Lägg till kataloger pÃ¥ stacken.\n" +" \n" +" Lägger till en katalog till toppen av katalogstacken, eller roterar\n" +" stacken, och gör den nya toppen av stacken till den aktuella\n" +" arbetskatalogen. Utan argument byts de tvÃ¥ toppkatalogerna.\n" +" \n" +" Flaggor:\n" +" -n\tUndertryck det normala bytet av katalog när kataloger\n" +" \t\tläggs till pÃ¥ stacken, sÃ¥ att endast stacken ändras.\n" +" \n" +" Argument:\n" +" +N\tRotera stacken sÃ¥ att den N:e katalogen (räknat frÃ¥n\n" +" \t\tvänster i listan som visas av â€dirsâ€, med start pÃ¥ noll)\n" +" \t\thamnar pÃ¥ toppen.\n" +" \n" +" -N\tRotera stacken sÃ¥ att den N:e katalogen (räknat frÃ¥n\n" +" \t\thöger i listan som visas av â€dirsâ€, med start pÃ¥ noll)\n" +" \t\thamnar pÃ¥ toppen.\n" +" \n" +" kat\tLägger till KAT till toppen av katalogstacken, och gör\n" +" \t\tden till den nya aktuella arbetskatalogen.\n" +" \n" +" Den inbyggda â€dirs†visar katalogstacken.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte ett ogiltigt argument ges eller bytet av\n" +" katalog misslyckas." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Ta bort kataloger frÃ¥n stacken.\n" +" \n" +" Tar bort poster frÃ¥n katalogstacken. Utan argument tas toppkatalogen\n" +" bort frÃ¥n stacken, och byter till den nya toppkatalogen.\n" +" \n" +" Flaggor:\n" +" -n\tUndertryck det normala bytet av katalog när kataloger\n" +" \t\ttas bort frÃ¥n stacken, sÃ¥ att endast stacken ändras.\n" +" \n" +" Argument:\n" +" +N\tTar bort den N:e katalogen räknat frÃ¥n vänster i listan som\n" +" \t\tvisas av â€dirsâ€, med start pÃ¥ noll. Till exempel: â€popd +0â€\n" +" \t\ttar bort den första katalogen, â€popd +1†den andra.\n" +" \n" +" -N\tTar bort den N:e katalogen räknat frÃ¥n höger i listan som\n" +" \t\tvisas av â€dirsâ€, med start pÃ¥ noll. Till exempel: â€popd -0â€\n" +" \t\ttar bort den sista katalogen, â€popd -1†den näst sista.\n" +" \n" +" Den inbyggda â€dirs†visar katalogstacken.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte ett ogiltigt argument ges eller bytet av\n" +" katalog misslyckas." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Visa katalogstacken.\n" +" \n" +" Visa listan av kataloger i minnet för närvarande. Kataloger kommer\n" +" in pÃ¥ listan med kommandot â€pushdâ€. Du kan komma tillbaka upp genom\n" +" listan med kommandot â€popdâ€.\n" +" \n" +" Flaggor:\n" +" -c\tnollställer katalogstacken genom att ta bort alla element\n" +" -l\tskriv inte ut versioner med tildeprefix av kataloger som\n" +" \t\tär relativa till din hemkatalog\n" +" -p\tskriv katalogstacken med en post per rad\n" +" -v\tskriv katalogstacken med en post per rad föregÃ¥ngna av\n" +" \t\tdess position i stacken\n" +" \n" +" Argument:\n" +" +N\tVisar den N:e posten räknat frÃ¥n vänster i listan som visas\n" +" \t\tav dirs när det anropas utan flaggor, med början frÃ¥n noll.\n" +" \n" +" -N\tVisar den N:e posten räknat frÃ¥n höger i listan som visas\n" +" \t\tav dirs när det anropas utan flaggor, med början frÃ¥n noll.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " +"inträffar." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"SlÃ¥ pÃ¥ och av skalflaggor.\n" +" \n" +" Ändra inställningen av varje flagga FLGNAMN. Utan nÃ¥gra flaggargument\n" +" lista varje angivet FLGNAMN, eller alla skalflaggor med om inga FLGNAMN\n" +" anges, en indikation av huruvida var och en är satt eller inte.\n" +" \n" +" Flaggor:\n" +" -o\tbegränsa FLGNAMN till de som kan användas med â€set -oâ€\n" +" -p\tskriv varje skalflagga med en indikation pÃ¥ dess status\n" +" -q\tutelämna utmatning\n" +" -s\taktivera (slÃ¥ pÃ¥) varje FLGNAMN\n" +" -u\tavaktivera (slÃ¥ av) varje FLGNAMN\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om FLGNAMN är aktiverat, misslyckas om en ogiltig\n" +" flagga ges eller FLGNAMN är avaktiverat." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formatera och skriv ARGUMENT styrda av FORMAT.\n" +" \n" +" Flaggor:\n" +" -v var\ttilldela utdata till skalvariabeln VAR istället för att\n" +" \t\tskriva den pÃ¥ standard ut\n" +" \n" +" FORMAT är en teckensträng som innehÃ¥ller tre sorters objekt: vanliga\n" +" tecken, som helt enkelt kopieras till standard ut, teckenstyrsekvenser\n" +" som konverteras och kopieras till standard ut och " +"formatspecifikationer,\n" +" där var och en medför utskrift av det nästföljande argumentet.\n" +" \n" +" Förutom de standardformatspecifikationer som beskrivs a printf(1),\n" +" tolkar printf:\n" +" \n" +" %b\texpandera bakstrecksstyrsekvenser i motsvarande argument\n" +" %q\tcitera argumentet pÃ¥ ett sätt som kan Ã¥teranvändas som\n" +" \t\tindata till ett skal\n" +" %(fmt)T skriv ut datum-/tidsträngen som blir resultatet av att\n" +" använda FMT som en formatsträng till strftime(3)\n" +" \n" +" Formatet Ã¥teranvänds vid behov för att konsumera alla argument. Om\n" +" det finns färre argument än formatet behöver beter sig överskjutande\n" +" formatspecifikationer som om värdet noll eller den tomma strängen,\n" +" det som passar, hade angivits.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett skriv-\n" +" eller tilldelningsfel inträffar." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Ange hur argument skal kompletteras av Readline.\n" +" \n" +" För varje NAMN, ange hur argument skall kompletteras. Om inga flaggor\n" +" är givna skrivs nuvarande kompletteringsspecifikationer ut pÃ¥ ett sätt\n" +" som gör att de kan användas som indata.\n" +" \n" +" Flaggor:\n" +" -p\tskriv existerande kompletteringsspecifikationer pÃ¥ ett\n" +" Ã¥teranvändbart format\n" +" -r\tta bort en kompletteringsspecifikation för varje NAMN eller\n" +" om inga NAMN är givna, alla kompletteringsinformationer\n" +" -D\tanvänd kompletteringarna och Ã¥tgärderna som standard för\n" +" kommandon utan nÃ¥gon särskild komplettering definierad\n" +" -E\tanvänd kompletteringarna och Ã¥tgärderna för â€tomma†kommandon\n" +" — kompletteringar som försöks pÃ¥ en tom rad\n" +" \n" +" När komplettering försöker göras används Ã¥tgärderna i den ordning de\n" +" versala flaggorna är uppräknade ovan. Om flera flaggor anges har\n" +" flaggan -D företräde framför -E, och bÃ¥da har företräde framför -I.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " +"inträffar." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Visa möjliga kompletteringar beroende pÃ¥ flaggorna.\n" +" \n" +" Avsett att användas inifrÃ¥n en skalfunktion för att generera möjliga\n" +" kompletteringar. Om det valfria argumentet ORD är givet genereras\n" +" matchningar av ORD.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " +"inträffar." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Modifiera eller visa kompletteringsflaggor.\n" +" \n" +" Modifiera kompletteringsflaggorna för varje NAMN, eller, om inga NAMN " +"är\n" +" givna, den komplettering som för närvarande körs. Om ingen FLAGGA är\n" +" given skrivs kompletteringsflaggorna för varje NAMN eller den aktuella\n" +" kompletteringsspecifikationen.\n" +" \n" +" Flaggor:\n" +" \t-o flagga\tSätt kompletteringsflagga FLAGGA för varje NAMN\n" +" \t-D\t\tÄndra flaggorna för â€standard†kommandokomplettering\n" +" \t-E\t\tÄndra flaggorna för den â€tomma†kommandokompletteringen\n" +" \t-I\t\tÄndra flaggorna för komplettering av den första flaggan.\n" +" \n" +" Genom att använda â€+o†istället för â€-o†slÃ¥s den angivna flaggan av.\n" +" \n" +" Argument:\n" +" \n" +" Varje NAMN refererar till ett kommando för vilket en kompletterings-\n" +" specifikation mÃ¥ste ha definierats tidigare med det inbyggda " +"â€completeâ€.\n" +" Om inget NAMN ges mÃ¥ste compopt anropas av en funktion som just nu\n" +" genererar kompletteringar, och flaggorna för den just nu exekverande\n" +" kompletteringsgeneratorn modifieras.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN inte har\n" +" nÃ¥gon kompletteringsspecifikation definierad." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Läs rader frÃ¥n standard in till en indexerad vektorvariabel.\n" +" \n" +" Läs rader frÃ¥n standard in till den indexerade vektorvariabeln VEKTOR,\n" +" eller frÃ¥n filbeskrivaren FB om flaggan -u ges. Variabeln MAPFILE är\n" +" standard för VEKTOR.\n" +" \n" +" Flaggor:\n" +" -d avgr Använd AVGR för att avsluta rader, istället för nyrad\n" +" -n antal\tKopiera högs ANTAL rader. Om ANTAL är 0 kopieras alla " +"rader\n" +" -O start\tBörja tilldela till VEKTOR vid index START. Standardindex " +"är 0\n" +" -s antal \tSläng de första ANTAL inlästa raderna\n" +" -t\tTa bort en avslutande AVGR frÃ¥n varje inläst rad (nyrad som\n" +" standard)\n" +" -u fb\tLäs rader frÃ¥n filbeskrivare FB istället för standard in.\n" +" -C Ã¥teranrop\tBeräkna Ã…TERANROP för varje KVANTA rader som läses.\n" +" -c kvanta Ange antalet rader att läsa mellan varje anrop av\n" +" \t\tÃ…TERANROP.\n" +" \n" +" Argument:\n" +" VEKTOR\tNamn pÃ¥ vektorvariabel att använda för fildata\n" +" \n" +" Om -C ges utan -c är standardkvanta 5000. När Ã…TERANROP evalueras fÃ¥r\n" +" den indexet pÃ¥ nästa vektorelement att tilldelas och raden att " +"tilldelas\n" +" till det elementet som extra argument.\n" +" \n" +" Om det inte ges nÃ¥gon specificerad start kommer mapfile nollställa " +"VEKTOR\n" +" före tilldelning till den.\n" +" \n" +" Slutstatus:\n" +" Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller VEKTOR är\n" +" oföränderlig eller inte en indexerad vektor." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Läs rader frÃ¥n en fil till en vektorvariabel.\n" +" \n" +" En synonym till â€mapfileâ€." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Returnera kontexten för det aktuella subrutinanropet.\n" +#~ " \n" +#~ " Utan UTTR, returnerar " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: process %5ld (%s) i the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Okänd signal nr " diff --git a/bash-5.1/po/tr.gmo b/bash-5.1/po/tr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..49558623c784bb928b20eb9b73652a6863cb5484 GIT binary patch literal 126804 zcmeFa37B0~mG^xjGE@XaKpfEa5C};iHxuHJ5FjIoW-?V_Fox8vs#{f;x^-`Hha`nK zwR78aJ7GIxw|?S;il}WX?a+YQI8U^5JK)^T+K%0RzyDf$pL6c5N&>dNUq8?H7M%R= zIcJY+uf5jVYY*qEC*JeggujQ}BS{_vo_wDq`8R$aJ5NuOWW1ClXMt7lMDT^+dEoWn z8Q`7ZT(ECRk{l173?2oZ4*msr7I-qa8GHzMId}^AMDV`gwO}9kMv$zNcZByJ3iwq} z>HIR>pS;w|aW?p1o}Uli8+;s?f;CY2Ujv>5z7V`0_&V@Z@crOI@XH|oCr2(zl2zcj zpz3oaxDtF3sQP{iRC(_V_&ZSXPh6fP3&2&NNHq+qp3eY9$CrUB-@Cwbz&pScoVy}P z&IHd6xD!-4rUSkn6kWa$@W&ukPmUxJ(cz(>^6Ljxu6^Krz-z$!gV%wo=et1V|5@-P z@Moan9raMZUj&}O{c2F*wt4WQcNcJO5I8=%VlEATY%gok-LE5JqEZwFQHY4CyIi@{UCn?RN0 zc2Mbk1yntM393GQ4|jSm0F~}0@V?*`pvv`Ra54B&Q0aUKOu;XLr+~i$j{{G9M3T_t zNeZeR9s`O_PY%yt4ys-s1C`DX!Fz+rBmMpaQ0bix-Va;}J^A`1?nJ$8!HzP~pZv$%|INCxE{_GD)5Z zs{Q}+(Mj?i1k#JZW4PaWagw}`ba#XIy9af?G)X>x1hjZ;lH33udwG&<;r+YIN%DHa zA3dBTNAUbc@B;81qe*g4p8vAy>HQW|`yO#clC*h$68InF|Ex*UprD-=eTMhTo}486 z$?p^3ueiVHsl*|l3!auFKjnVi)2R#Z&wU1cllxaZi@3ah?z5BRP2f?_K@OAtO@B?9 zc>kQ|Cdt*{3&1K(2KRq7&8U=nK_&}a_{?75a;ECM75xf9=FZdDg zzd^Oz?JxHDUk4TMw_pn1_a#pMhk-|NzYbLW9|iV-j|D~N5m5A>4EU7r{#sD+t^>D$ zuLT!Vzh8o@!FexB5=fj3zTDgWL*O%beg`PJ?}3;*z#;Hn;7#C5pv(KfH*kO1KOo}> zf6rGZ$*-a37hVGogP*?M=~yO^=zjd0lH_^di8sJ!#Cy$~9e)6-{a3stNj?ZZ>8(!h zjc;>$Z3E9IzcP3y>Avb6l%EE9`n#ah2}$y{_dx^F``9OvWIed>lTM#WQ1p2MsP=m% zcmnvhpy>1}Q2p-hpz8In;9213K(%M`DVGEH0`Jf5qJV2bL}juY+)jC)2d?G*>z{T! z<1Q^5JPXfOJUJCvcl)QP=XFdOMP~l$?@bAIDBA>T_ioX)( z`yRL%R66JUo6EI}K$Uwhcmj9@cpvcb;9r2(fb+pOfoFi91{Z+80+r4~KJWEB2Ydkc zTfimYC@6ls7F0TK1y2J%0X_))DR?S){1=>0&jQ8I4+oY0HgFlZ4^;f?!AF801jV<> z7rmT)pychTpvt!jRJjI0)u#=LE>8y)?*-tQ;LAbfa|?J5_ybVsKjcfE?q%Q$xSs%3 zpFe;Kx8%#tA4A~%xvzn$*V94eb3LeV?*LWq?}4kqW4_{gcO$6swn63pLQv(o85AFV zGvM)Gb-nP&fWx5L;hKOqfhqT20GETm1y2VT|GVGs0F~}v27G1)m( zj{_gX{RF7`JS*TEz?Iy86x92pzwYgN2AFbx0jPEw1XYgbfhxx>pxWa*AmTMS_8Wfx z08sDG2UY(e@M!R_K$YkD;9r0r0Hr6t7Vtko@yD^>bh?}lir!nn2ZOu8lfY?E@vZ?M z0KOVr4E{4H`h7p#pKzz&uLh6j`7o&bo8Z~t--F_pkAW)x9pK5}H$kQMYf$;k|CZP1 zk>G{g?*Ub=SAwF~o4^Nx{|c7CJ3+-i@!MYi3qZXe1C{?@f_i@=cqaH&Q1m_WJ4x~| z@L}K%a1vYyz872seg_o4-{-qt?|I-n?#}}+0QZ6e;B}zF{Q?x7jzlP^yr+VX02hH5 zgF~S5|0i$(_%-k$;4$BKxv>xwT`mL{f?Gk!t$m>A`D{@1dNHVcZU9xDTR_G8Hh3=h zb8tJj=m*~KrUO0)Jd)?H0QV6~@I~NU@FU=Q z@D5Pzd+JY|Z+3&?%V&Y=FE0mA18)MA&*uXE8eGQxsXukPZvn-JmxH4BG}r*23aXqx z2bY6K{mkvyM}UjC9|tAxo)4#-eFd7cbz1K$9u9=`$Ajz|2bx7WQv(P0@V zI`@MrcLOv!2YeBzdb}E34c-olKF9pZ>3TY-ez7v#4}ogmX;9^R5vcOq0*ar02#UXs z{k8MSa!}>E2s{z&4>$^{eAA%H_i|AD_AXHA-2t8gCcp9g?g!52_MzYs@UdVCd^Y%S z@E^g4fj3tb^7WdBqRo-_7{3fV=a>DOiu5AI;zox+Zf(JnLyT1X&S8oRI z4}KC=2$;G9Ta_Pp!n});QheYg2#aG1(n{1K-K44 z;OXFhgQD-eIdiN%Hi3#i0^SE~fDZzn0xH}qLDlzG@Ko?S;7Q;S_we-Y2dceSfho8R zJPK@pYS(?B%5e=Sdc6@8-+u&L4gLar6u1K8SoD7aD0*H89tYk5J`lVUd;s_d@Eq^~ z_nc$&+X{*wJD|${LQs79T2S#m0xku=4JzCzM|wHW1x443LGjg71HK1TK0gOl&*P5r z_@{yDKaT;$X9qx~_i9k|{TEPl`w}R6{TdX#Pd$2$@!18S-Xc@mZkS=dGan=NG^fJYufX^$bw$xfxXaF;IN*L{Ry@6jVFD1yp@L1&WV; z0*XGT+{@#i13r@b$AGHOb3m2jC7|f@c2ND~!{E8#=Rx)Nx4?Y6C6cj%`4^;hc1{Lm80lxuWa8LLdY#f1ZyRVn))%SP0zYSDA?+3@{ zAb&uW``ib5z1D+jpS_^u%Ot4upB|pS2s{SDy#^FLZ%F4P?>!d%0!j`&yEG^HJ?TCl z+w@GRm#8axkyzHbwBf`B(|pOd_Z_qSg@C;5BwEANF5$^VEU>I2RjM&5y|N9H8A z^L|qW{^9;4D*qyIX?0Fg=lKV(n3Mbq`JX#E$Mop0r{*LtA>AXdoMYqo>%gaT|LUf< z+oG1Y(<8y#j>M(~#TTbcJ1z%Bzb#-tI0F6xd>5$pyx}UR--kf)!=2&&9*=i=KLnKC zS_XnRcfp5)4|>9!q{Z`rCwh7x z24BJR&w^AVX+C*QvIjf>DxEvPUy<;g;O*Rh`Dv6NdR_l?;a>UfIp+U3>OI~M%AoY|K2Y^|GAOz73{d^=rJ(rr zCQ#u%2}<665fpzPeY4At`-5taC7}A(7H}h22A@H>Uk7gIe(8H1p9F5<{u7|&&x3IK zsl8T!N_TC*esF^O5m55>li)SrZ$QO+=KCFA0p3JDH-RQ^{{=qa{)wQ~=ax_(a4zv~ z0>u~a1@-=RFa^H~Nu>PbKrdLe+I4x@BcxUyL&*yp|`!O&DzX>h_@A)Aw|GA*( zz8RDryc`r?TnS1)Jr$I^y#ag}_+{`s@T3oW{2kz1xE}$RgD3y1%i)cn+Wjg}ba@(> zf^P&R|2_(;oL>S}&w01cvGL|ca4GjM14XxwfGWoi!E?d;ePoW=eOp0=dpxN0-w2Ao zJ`F1T9|A7=sLStua3#;52rAw`ffs<^3-1?w%-d@Kl)S$hl>EOQTmya$RKK71ai{xI zQ2Fix)t*;_(zh=KrI$Yoitm07rr?7<;rXrxrDrEWwfn2U1>iq}O8;Bo{%4@t_ko}E z`dkRAJ+A=I0b8KnUk_UQf|7sV1jWa{1J4Fe{FL*}`Jm{$9TeZTKD{2p^{w#!N1)2_U!drG-_JN-Z2*=3rQmAtYVh9R zyFvAr+d{Bn5z z;4jZfCb{1Nim%@ds+`{h)z6RqisOC2l>1XbmE$~6{IwfYIi^9;=jEW{-3&Is4}zla z!@lbDxd@aT8V2>e0~&on@#zf#zXYn@egE$Cx-TgHIs=s69|E_5SA&lRKLUzh?)NqC z2af_%?k@*buP1@xm)C(R@5eyNiJyS#H_N{6{dPU5@|VGL;Mu`KWLBxMvl3 zF83`^a{cw7`0cx(>T~=zJ^gb7cEHU%e+Q`c`a{6EcX~g#FSwoOJ3!UrRiM)U3@AS7 z`-_cyfc^RnodMbE-@NYoz`Sqa6`5`a`zXz&c&i$d& z`yx=~xfm3EuK`8Bw}X;rp8zFa@AV@Oe=_)R?oSW68&vu)0M%dK0ZN~I2vj|O461!j z`?1I00M5}p*CapA=DL{ca;|6dEdC*0?Qd(qCx9p4!+l2=^84*v-y+1bxc<$9CJ*Gj z{yxQ3;r);8&i#(3a<9Le!3PlzGMgOi56_PW&*4&EReN?6n7@DE*~7U$$|Zh(0r)Yl ztGGn3k8;U=*}y$2EBQLV>q+7H-|*~Ct~r$NjXe7* zztxudJ355bm<{g*>>|3H&7cz+?!o(Uqdl54qs&HZ13 z;uF{+c|Z7Ia1WPwPJfbF`cq$iF3;QG(WH4FeyhKt=I!rzp8b?xpXR#3AKCasKR+JA zye{BxdA5dYE7xUQFAdM%%|@}6gOB98n%@K9KZCF4`X?^^iH~1nzxkZ!Tm7+_zv#t;6uQZxDqbumJ-*0bLsDQ zJbMJ!Te!ykQSvVE4cxziYaQ2K?!UzKM6Ne;e++qjfZvbhcl>)}`0;lESMctaT(@!E zi}1xi$@{Nxt>oQhTurXsT>r>3%qp|1UIYF+mu#MUa_Mh~`*ZwfvYy}X2)~aC>3^I1 zf8@FT{s8_B*9qa?pZdRpJp17+&lmITn_RM|ihob%=Hpz)alJddKpooOF!&;VNjKu2^0z6C$TwTSBi!rX&2&I04#m-u}NH*9+79!DCRxc?#7J45)F@Ov)5F-`67BJe-`XR;667=FJLoC;y| zXn^Z{?tc%CgAV{7$8|1OoBOYau)hc2!n62ycKES|=a1&PiRZ$mo4orBI04?s z)yMB2aGlTZr*W0J=5albXO95yO_~3N-~YkymvKFa-xcr=TqkhdhxZdai+@+}`*B?7 zg$E1y{SW;9WVn9=cof(DxHg7(CGZ>J{pZ57-v)dW_(9%%IJ}<=*23>^@a|-;2Zj4< zz$bA{aeaYnB&4yM-*<3*n)`=?kLB9MwS#K`&z=g7a6OFQCxQ2*PVWQX!}Sraqe42r z0n6bxkIiSgll%GM+0(&y^87Zg=W`tso>%#OB5D4Z`|t7lYh1T*oyPqKxUT27{$9cL zPuzcy>r$>ITz_wG;2H25?mr9O0p5d4f3F8`1+V3LogVP_!tn0xerx}Jg=g1=`?-|m z#PE9;&$Z_6ST6m2p6f+CdnMN?{9X+{6xk96xp#J{WA$dRd%lSRXHO;k$YbV#!c>byomfIxdx-Zu$lt=1S`na*#moIgTttyZOJA%+_5 z;ql7IadVS2UAUiD^IMCObm4HLSxHAalT(!uZfn(gB~8vCayneD*BfmmP#vpN__RG< zZBe1=Wd87cG9dGEtxCzP+=()ak4CFC(yX+Go7Jgyqp7SC>Pd>}P(`5{6VPX0wVdkl zc)69HUr7 zNa68RWw=_d9VAw*T5eIIb|W2}-&zo3Q7{OWE`(6=ktj0M=+Gd9E!U@0GHNZcw`%Uj zXxc2-$0`(C|Ec2X!b-DA>$RyfWNfAL=C|f8B0!*uh3Sc_XDid8@(8qQSDI7J3jc;E zS;I7@NDtC&+`MH&{;n}O1w#x~Yt{C2N&|H&#)pN1dE&9DJc!t{-7F7R(w?Tv5}xd| z+G(d%Nn4#EZ`XAHxD`O`Ar^;G8j!eM-B(G=&8GOo>S$~jnMu4^ZdcOzwN5%T-L8l) ztUzL)g9f4rV))e9nWQOj#j;+WZ0C2r79!#@}Q(S^xH!a zE~e<+d(;?uU%6Q=57oRL-2rM<+Fv}cmQ5!slS6?cyMu`&je4mLNt@MSC^b?!P%Pqb zqrMM$)Ws~sv2b*?oNq$1F?ge?B?@S)F zE0a^!hkIk{?TlwM#r|fMI#mwPyr!pmY6Uq>Qxr?rskbU!#kB`3=?3KysiCaQ)#h-g zR&LJLNupYlJROxhwG3QRBJG;h%03lmxYML#wet?HD(I5LU8ye8q^C;%SyX>&A`C&> zZZuM|H)*`m1zUG^qtzx%Eq>iU4i#Ec5`e?wWdtGeRutt6vmXz2ABZ%Am?C+dy;-p8x8T4f9^sXWsQGioc)n9_hikUqRa;@i~dT*my9jk@{1tmVCQ%SLPMIA=)4wZ)|(knaVdb=~( z^|D86%p&q)vFOMqtaE~OC1hMrk93*b^9s{s7+!JSiwQ>a19s?sG?OG)Li?&gO2@En zE`;`&K}6{`84WTXx+HjvE=y0!`_Lg;?egSQS7oBKnOVrLH)c1^qGMpqUacopH6ICD zQ#YKJ5L0W7HM7p805Y{;?MXyf)GTK4N&8y)Cd&t^lby-T+)C>e7Ywz^zKSfg;Ywx1 zY@(olV}w?t)1>ztHh7ips*c^L!L+T)6rGL!V|lBds8XyJ*FwCmVNXTn>b+6we}Cv+ z^@hyjDP+5Pz|1D#y(*0kLC)7aj|K+J@VK6bdvsA&+rpz}Wz1w(CgvpydW_CIIEI+% z#aQ&>o2a^S-KL~Qrl~GAK@E9XYm}jB7AKd7QH{p_05PuY(0x2?VA}8uj!-EI9p@15 zi;_o8FewAmjc_avl`o3;D?1H1#prBiuh-LUA(>5>`N&||bY7@T2}Fb4s+B$MB2d<} zd6NfSixpxjzjWj@@i%*p%cPwro5xcCu5jVSWm1hnDfwd zI=FO!dQhgNAdnjrX0>R>?>(qVN&_#ewt2~BTVv*yEbP@@z77z{0 zID`CVr6&s)7IR&+DCru!r3s@tV(yoIWWch-RGtZs-H|U^dy=Iim3>PWwuh&#?u<+= zS}GN_RQ89rdS^<%$#H+RJubl(ELm!tENx?3L?gMZGBNtgOmCND=c!NjD(&-=HEXx; z9Dt&5Tr}wDNK930!(SprJs38 zEb?LvnVXF^oY}G@6ehfxEKjHj^`u_eUrfXT*o#;T+3^InB(f})r0FFP2%2SGuC-Xw zaa^N6Y7mOXC?G2rH7itTyN#M#D=pnLE!F$_p}nk`5WU`LGL)A&LW-(mmU$R>jf})% z_4UPffqI3iws0)SCd(eltihvDokG0P(1jwci6fy{sI#~A?Q{YbqLW~Iyv$gDDsF=W zG3#l$5>U>0p+=jHNefo1jM~sxQEVK68)HBEiGD`x)`G=q7vlzFJ0nS7-&K`nW06W5 zGNY*rg@t5)qS9dujsF>nN6q?-Yu9hy8M!s5mGfC%v&FQD@nqE~8%QAL?BT`%BXEwFaN(?IQS`McHv05|4lvkf7XHjy!|&T+aK3`4_7#v zcG5Z!<^ zi5iy~*KWAX!N%Bd>5k>;qD6ks$e01IKV8AoRq03w*|%={)~#!{t?v)Q%EO$K#l#m- zu~$lOu~J>J7&$VcU+17Ud~1Ac(w#)CW{c#+1*-B4A~`pSC_@#T9?nKGZZ(*rwa3$i zOBXFx+=!IR1$FG2`rqcvx2z3=iT3=WUTU$hshwir;rB9-=HBaeb= zfY|)!>pP3oI5k+m1fXA*l9K&(K1I)q{k zRj8rMpuWDlQo2eXl0=0o?T9WqHCixo@Sq4Xkmu&?3R28fB(y zT4MzymZ}-(S%&B8C8?z#ks`$|?2~W9gpF7nlTqc-fUVkI49zPoiEn%ulGDc6l>_Yx ze)o}>avUm~s4TdR3SHJJZ7E~}YwszR#sCzF;stuZA>J+-PdM43kBQ>J(v}73eq1@x zB@_FR7(omln!@{fHnbPrtCMsD=8!6kSg6{*s%CK{aBLVWXAerH-nLSiGm^5zejH3t z>*h8g#h9tP2OQMcT_z2p{JVO$o3AJvDJ=q=vE!2Up%ZsCrWtcqB-keOzg2m2Hb}U+ zzuKxSLG)K^40V~J7?;J2=Xfev#{{oh*i=E*!(BuwWAhOdy7AgI{hRh)ykTem=Iz`1 zF0M4q=UlDB>61Pa?4p@+tVOzcM3=LDYh0|Ba#?GmvBKCgj=oLO2mVodkuG{ahA_8@ z$2br$jzH8c@XRjSvVHC5i?(gwx#18Q(x%c3Er_AnMCMeOBZq^%-q9H8qX*%Er4yT4 z$QU7WwtJ47Hun!`7PL={YMc^W0^TPeeFst1fdz#%d5j zj3q`7>yx})&-`Ka#y{;k_+Sw;5LbC)NSx2`FS6Cq+!ctvg1(u`dg*lj@ z)=@!PH-P8P)uHsL64p#zuyaCGl0vXjIK9Z*jkNQb9leC`A~6iss#NMBGUTH*8vAjX zs6aN&V@*ytsS-=nOTV9~924Rp>cS`>moHmH881=UY+ek@m%MF~eAK!ZDj2bL$ML8d=dT8!R}<3a`n)=B*nx zZr{0e&49&nXS?_e-DK>>e3?YO23?wQ9!3GUqsk>bH3>{KsF}3|vObx#lLg_7{ zwPjFKRtY)WLy;{smJ!6Hm@DQ{2t)`Zx3uGu8UUCue?n8lR%QcJMJsbq1hJ{}aY24n5S&{({)r*L{Oxn#K9b(71+hX}V3CbdTxGf0ewGDOLUENFBv zRiz$rvY@TJOT<#CYq07~I=))(RFd`PCZG>#Ko^bJ;&jJ4W&p8S=!9KC%zZ-gvQXU4 zmUSr&e({Zu@{KR zPz?2vGX20+M}cU&|@Gy1bB%wr+gG|Y}^`;3-tBhPq zL(virWq~hTIp>24HBi^YYz!eri*27NOv>*o1)*IuOt8@C*6V}ckUOgnUPc^XdYS{UdE74=N>BdJrTS zz2+i|8OVHXR+yMY3R)_CeGtM%cjFDboH3l6B4iOcNEOXqhEiIc@s}{%Xv->P1gl|Z zEZx4qe0L+Nd@^Y4%(Y}WNY+g?TC8)Y{{~aUxWqEDe`cFm4vga+P7}#q$~cFdW)nQU zv&Vrh*&H&}W?8z%Tg*_J4X0vBQUz1?;M2>6=C}FeyIiIjlTLr0Lj6hfh17rsv$hJ| zRYTsfB{jpk)=c+jl<(H|*;V zpxj69h%8%qH?58)KDEX5rr11M2wgVv`@nfIyr6Muv_UKBq*h_d)qtc8l|aTf?2TO;0Wxm*oAP-J{+hxZQN_Y z@X0+`BBN)qkg-22rK|;|+_W0jXZT-?9$!IsIC?~J`xXo=q zwC3ssRywUAi3?Mvr^GIUjPr+m-T^;VFiwiIdp#^LNN8h2MzbDYqtD37UL~VlA&ml` z9JZ^%9~$-gRAc5;$TV5z{m0RK(B6ueHJemy9F{%G0%B>m)&fN%J&3(R;Wo2jK{Enj za>q*Zp8Gc?>r%uL&{N?p4UlxWP;+O&`_Y`)pYfSw|vU4Y_r-{bA`Dt($ydikG99?;%BBn1w(sGaFeT){fkmWqi?@^mS5V zMaj`@;@6^?C1q@Fz7xHcEk~zCD>}u@6X1-rY%^P%+yR$^dH9IfrXDv5$kjYLnv(#%CY6M-D zZ(-WJ-fdI&NGPN&D@M)*`efGMn7(cH5#NLs6@GY{C-H1pZ-D zuyMDq*k9}+)zz^LCGut=KjRc}p$U4GQ#m?a%wiIp{KtH_KdkvB~E`d$e0E1~+r zM2T^RDXB=a-0?&V9%|*Se4RmFg`OS+_zR+%E~W zeBPY8>|i8*ARV-EQ@OUFJ4-8hpa*2PZ86qHVK)li*|IFjxB$E~+P8%#F%fqpnc>*N zCy&Bu3|*m7kS5D#Fd8}j#t>R8HALzPA?p#3w$0Lf{YQ@qfc12)DoRX@m5 zKOEye`GQtFV~19(6$Vab%go@L;CEq2rYY`0Z&XYUHb#+LA*;Kp2vu{bcX@hx7Ih>xJdWDF zj9k+QPa8Hg9c-p7ZPpy6yK1~@4z!V~+~7ENaCt4Wl&GlIKxzU^l3=t}9+M&F1v4iD z1sQ-Pv$b1UKZskKF$TR0m<2*)N`xapJIu@*#wMq7O^z~b8f~k_k>h)!C0LYn2r4hV zx=rv$!2;PRm$?mQ985Cg=@i_~+i_^3F`h0&76QCWO^Ha5s6QS?4#px3@K|N;6;Y8G- zYFi72n4BN8H9em7S!eb2;Z(L2P}*l7%;mnb7N<)Wr}O*z7^<|ZtjBlDaWRs}8&8%N zbNpJR5h_6q`ufVj9B1g<8Pe|mJjwIUTb!PMK84cG4VB0pUa?%Q@#<(8-}IfgnxI^Y z(Wmht%-M=XTg{8pR#R-XC?^tVEkgY5MLDytFQ&>`Vt;md{_N82JN?%aU_t-)=P1F9)5S|wv+2(E)!xDqH=!p0c zxc}hO7D^At+If=2R<~F4P@`NpoW`_+eX?ch+1$i(-)(78)tp}Ijjaec68tJmd zh#>hCef+X~RoCq@p9}XTe?cT`=W@H92{jF6l(@zcV41zvhHog4QMA$2r|(m2hNBD!v`bGcoxEsHVp~Ea=ZEnZD-aN0 zVI5RfL|=UB%oNt!s&(9#n)NHvqj}<%)?88)15kesbtw=<(%u&OSE)Xgl8z3QM^*Tw zbiT?fo0_C7JLNs4{jF9*TCv8iH>40IBKzs^I2dyThZcn`Zt*S@V564RM$r)VNLi9t zVP!LXq+azmpgA|ZceXB&;ViBhPlu302MH+)u{11^KpfPnrHN?_YxyfGVU-unHFfZ~Mh^-0kyN`vvO+cw8AW@hZA6B&XNaD~ z@)LiY=Vs-)*ai~hwuCW@+JDFlp(T7+s1k<#`j}6i6VIp+T_UJ}ay(HWXWh=M`A8UB z=Lk(Lk7}`{_a8Qv4l9|BBnJ)~(}$e1#od1RxTB*Ca&WJ*^atMnt=Q8d7yZ#mG*jdE ztbw*2I;A*C&y*JDz-Zs4J3e8>{qUzLE3u8I7sQkXXUiGi_%Lln-jHgGPNJv# zg=ijUdAd5pUXdr4QI;REMCvnMDp$v5JV$nkX`S{*CT1m+W!{_Md3UXFG5;33QM7sl zrCNzGv4{>-hZ|!I6`793-VF;^ z-yVDW&JdZ5^SGfRm~G2x5E33kPNZvc?}p4hjf{9nMENtY0ZWxD8Hd%w*0-#F@kgn~ z(7jY+C2nbqUl@9&v7)J8NIo3pmC1-;(OU^+%3=7MfV5t>SR*6yroZ^WPaES)lA0O~ zgrB8GGXz1hYsq6XgrFG32U$2Hfr(x+Tj3Vtcj)u&Fr_*jxqMu(Kr;O+%Wk_}#>i+Q(I>)X|qNWu>#!7~YWhgs*MNS8L|8e7TFfXr^1-UZ?kzdIts<`!qP_a z^YbFZurv~yMyu*@I590vJ1B2#=B^HTl`bwOG%5AM$bLv`J9|?w|w-+`L^ntcS}x7pUmbhR4+RQ9k?jt21-=Lh@p z!$A|Xrd3!MZbD$NQkyM%OD-0H{*}sg=UWa4u91C_i;AV8q8vim!tb6PxHNc}Vwt%{ z7zvTc$Dr-oG;@Y`zLwpJrH~XGDRA(b;yE9cD^t6@q2K^fiUpQyEYOSqEUs4bAYV9b zOF~^a%na@W##q2e9Fu}-3o9GBYKAB}FRh<&$nl3_)DG?D3)9Sukf=o6v9E2LQ_+e)c(v_Ik6zBWKN`ElCRA*%t;*0f z9WJ5MZ$40;E{*n?Xq~%nb!Wy-FPUc%sM5v8!@g)9r*k zPOl(|jj{M)9lXk~HGchz^Bo9y%}wEBYlKkN2Q4L$Ds}*O?|bEn?uA&*SvMI2@@M%ZRpoY3$Qm94B}Ul;q*2Wu$)F=y3m)wnl+Bm%NAfYuG-Vm z!&#_o24x{-2Ci$KFdst$$wbsy50Xy`oll-;gHx9>mLv!G7s{3{V!4G=KvCVUMF~dSMDGOwo@hpGR6VL%{GF*0LiQ|LFBIvCc}ZfDhbo6vB$mMnMe4q0+Lu;j(%I&X5SR zb-G#DQK}E+Ie)}an?iMRg^hE1l9ysDy!EkfrC{%?XGZSVP{4M%n9&mVI_9fGx{?Zo zK$Y5#5&4T?JR4z{YMr6$neAimMtaF6+}R4cYumu)Ef&<(=QcHTm_`)W4I#oN(rvg7 zIf_jk+sG@eJtOI&8KJf;R**!O#jSjng#=`9CDBCGnX;HyO3b}HR7*TPJ3X^EPRpXq z6fIFHmP>Zhn!*>#6PeT81#Wd7%)Z&EsZ%@9JK4y>vap+gAu#D_-!76g!DfKXX=U{= zUwEHuGdovAwx^D7w%K3G;>QaV*reChu}`~W!%7VAS9avDsACk#HqV+HmR%0=Qi_mP zH67#R>-XT$Fu{ygDQ-%&aQ2UvMeWXJ{J2X!iW(n@2Hhv(|*tVSzJjBW-Xh#4U}{>sM&P%^12pdjqms z&YFF2{|r$R1c&81x^Vd-car!mFEH5=mhJ9Y`}sp!M5X#`v#1{d=X7H_*DYwX%tVu} zksk`h57#!Tr0M)C`|NORPf0|Ztis;A(n_e*YPE2Ou=wy4*KwsRU zLAIJqD`|g8WF;iNMk3JF>`XTkHnNu2w3JiGlIx59xiFK(E2S~2#1@`Y*xWThHi5Em zFALUU0qZQfYqfL)39JUc=$MVTr$r=*743XVF*pM$3z~?b1ked~w|G%i-MNi$b%#D*4BT^vZl| zJ`n{6Cl}e4tXc{KO$9?yp;|1^*$?ekrss{f+fyr-F5SO>|B|tKXGxI*3cvJx z;@fVIY`|ii)2Ua(0tRaW9O00fMGfk{SxDn(pQhFj26o|pO~q)VHcXNotsW$3@IUk< zb5|Nb{6)V%yc=%QMlEBPi&uOhWKZw&!-W~TWx`RK_eb{%!5lFhzA4#$Y5<4#L9FWqhfmg!{kHt7V8bl)7l z^r7X*@yzqh`9>##BWqgiWV57HvoqCB9<7gqj3it5LIodKNiW*5W#2hxuT0g*{La|t z9O-)<-QCPuJhnC~KNYpLbZn}&WV}6DquIA=8Mby6(Ndx>Ju#d}Q)rPL+CF5j6_SN> zxR7jl0b>{TlI^w4Wbi?E0<)c29Y@ZjETNkxeD>qQ?#7q#dOUF0&gm{;0qmM6ow z&m@56+<8Hf_KN zVx!Pl+Zt)bR?yhlDlq_K6AU4eWdCW=r8lE#XY7h()36R=j9qevouDDkEH0gm1PCW| z=FXHt!FmnHErkOSvQdj4`X~=^*khrbdQvya7ta5*d#1s56cU_y+$lz0*uf$nPS-Lv zcgk2YYjxCwP1teV%G7?2uIN7Z_@IYvTI?Crj4hoFDQLww1?;*;-7V8{#mZ*>C`-B5 zQ}dWkwVjxM%r}>Jd)4SpWYqnQltN3a>6$kloGediH4k&VJ8@oVjgOA94qHlMG2~;h zOwbrzCz5zLE!l7{n*~xuV$5)g2OaE^umK{oSZt*{64M(%kvNvB5HU;3GIb}8Z$-^S zh7Q#0id3j)FUQ^Ok3O)D-@b!lO^|b3MhlfV6zzZd;RoBmqhX7G=0VidD8#?;aMw@g z7=-FGzVP7FRKa7+l44ZtO1PVoS<g z)A{&1L?MAg9WWA|L6(&K;(@wxC*bT~sW?O(O0(9%W&vhYp%kiMBPF_tLKP}90QsGS zaSa9B_`mJT4o>L8@k?1ZiL(shKp_SacDPZYg1ud$9NOK+9DX#BMYdfU1-a;gESs>7 zHhVVHAoU;(6+dieNlBoHscfIT^Kca9z0Q)zJW-#U2^8f-&i=j}6|Gy?B_9L}13F_Q zN%ycJpTW5GP#Xj?;=&Zb_d!u}>nGDKvY;%!{c}h%5!8%|kc%X^X~%GGwIx8081KV1 zJ>kt1gT_NM`Zr&+X_qasa=mK)Kr5__0ES?c+tP{W(`s`TBYJs0JZ{WIJLrwZwl{Ic z)_DtdP_=Z}AsBW?EPB*au~Gm3An~L4_+KaR|7cm6$$RIT|L?^8A6$UO(vM)g1ES-X*zQv*z8)nJb};I#ta(3sX7M}(=+6vS?PUK_+(raFx*mn zt!H2J1ccD;GZVlrW^bfqo(i#z@L-e&z%t=15(x_)UK@q66J|{nG>g+^pFX~~k zvi$I}Tdl%DuemWD%E0u2e-OZ&m_fI=?+}gFMvu6{v&58=ziXINowX#?MC;gW4nNzZ za<@cpBtp<7qvj&fsIS;mJ%@_Hj`}Wvc`k$N(Dq7b(~Cw0jP$*Jv~oeWZ3uMVv3bXa zEt|J(Fz2*6apjHba2PX|XBgNrr&6;FY}H&dwd2WgZbnYZj^~Ll^lDNS?jlKA20zdWobX@;t; z&@Eam*(BG&C&`Qqae66}D-u8|h$rr5dYCWsxwV{xGpq(xTiu~h>1c96OUC6^iVw-XU`|@Eq)}6a%}Y^mNm*v0X~M>y z+&>jR^(N18-O?!%U~p*cE}fmAycwYue7xTNcAU1j(zsat-adYy)87=JRvZ+~V1yYy zqL_@G!T(336h2uOlCj|oMKZHJt^qIb$U2|=DlE~ao&1Bi$Rj>)!6y!29%I!^vxcr| zGQp^sbqQ@RJLptwh!#j_-JHoemyVXqtc%Ue)f64LoqG5h1BJB06{<3Wv`zw)X|MCt z8qz2dR74Q%aAFT3JdfD4iYKR{j@S)CJyY(TA$+Y!X+p5(yilx5f~QRDLL@PKwadIS zq*c;0Hyh~~o9LBR{*ehQb0iCM zE$%v%TghU{kn$hP3Rxet?J}Ww$TsU{Z+UoCd@Bjr1t%dr)IU~|^jF4Y3)wjotQ4Y$ z^2pD`#AO$JbH04h6uPsA+TOmdP*k>}nJpBwNkpHW)e4HjDTE;*7)FQUYx0puR<7%Iz=`mKWnQI~S%9cS!`sB+X zRhu3C=g45ja8yYkyKUvbTAU^y%{{9=u&!3QSqhoQ1g`S62L5pnD+lpCxQr_8D~}z= z3u_5@7eqXBLew))2?VqhOuZpX6vpeHxzA9$@pp@ z4l$xU`8idhhMTO#S)qgWJ`t*0xPv;~B$y?@qS%+?gjPqwj<0W#oQ) zZvXTe(6ml?LOEq&3 z+wuIC0%zWIeQPh4!ty|5QDI-sqH<|096y4fT*EptO0k9S(B<3QO0~S!n!^nhG}RbS zzf#Kj7Bqas**L8F!DvMX=v*|}WjY_zIb5p7k}DizMK7~Y@e;~s974?S+;s@OW5Ono zgR{;TURhEIz(P=M^NPo&>x?A6%HUm;Q=sk=KOfddM{?N&l7`P+2T%9Yg?G}st>aE; zeX{gpeN0BBzH`nZ4n7l5)DCNPG<-Q#*ldd4I!BgFG|6mM5)C`7eI!s^;=;}EENILC zjvt_3>eSsZXwHmT+O}P`^E#QL&uxDrr7i05u`mkYiA$H5lx`0D#>V(%6L}vb=c!ZN z>J?M>@mgic*b<_sVhiRyZe8gBS96{|XIP>|MoN4}vt9Bju$;Ggd(>nqnlM)u*Zicr zST^wJ4VP_Q!&X{1`a=L?KPiHa4)ui}%dp<{7j=zW7wF4}Tsp=}pZG4E-2oZ|q-GF;~3G3NhL`pnl zImaJc=(u6xmO4j93G79T9Wh{r79$1>QEjzY;L|L#obEAhS5#-{jJshMU+#o8Ko4}w z(i%6$?!tVm3Z`IvB8B?5{>KD6hp*_0mVLMLmM!Z>yb@0Zp?Fh4%_eze|3*)Jh`bC;P zrc=RPRkqE>u1shgv!D4kflNWG0|)1YXc<3sW+b(%ZX!a11xq7e6iVvI4y52A(rcQ0 zKxAfQ@i{Gv6Zq0p9wMWE!(*~?jOw&NA5evulAb1iGj29>HSXHTVjhS&uC%d4?5%w^ zK2GgZWTog=bafZ)DBI&~4baD*7f5P}0S0RegIa=JFU{%_f6T)EP8=I(bMCTP+bvGE z(ds}gdiCMQ!CU)oFsvmq!|=04i(}Mm?1d)m)ER0t#_H9pC`eE{hgFv7G5d~S=(rNy zMQ5*fZ8oCBW9&F14L*cyMIE}1<;|RWC2q+Er=Ci7u-hRLk}|cb#--7b>pYJ4#Jpg! zvla``tGvo-x>b{rS=hpg=j?DBs_qtweR&6?TRzr|+lJC~n@;#P->|Hx=*X3VD||>c zi$LeJwko{y#ifBK$UxJv#yB%R$D5@>_gEi}%2hY9-kgn8$$8;etuX`(jD_QH;M#FH z1H+y^kxt*hifTCWW6;?CDXH)+y3SOV>ja7zF@Rx#;jD3YHkCmeFqW~22wU!^3<`4< z*2CQh@-CC9P)+n+!N=v`3T>!2r4h!$#wd|05^GsGFghLusSB&ZdQV2FhojfBis{IQ zxDh3I`YB_WNP;>HRc+eB2`RZ%GL5pC8|8oTIG{6KiA zNC&+blJmwr2Zc~;3x!Z9vs&~+f2aXOO0Z;F?P=TMz(_uPqyxPI8;+7}Zz7aku4?5d|axdJ1zgxn?KaQIKFVj*?RawTAO;)B2)vl zW`Ew|QIf{*@b$#-&-PZ3R{W_MUEJ7bQ^k2k4BMP5i&y^Z`1x1QME@2hzf70F_R(<3 z0~LNzTRd!HJcSg8--jodk<~vYnCB7~7~7L9)MQWf>kTF`hV;>3 z{<2W(W`vRg3~6Vf>N7$~r1XaBK93`1D8oLf5GYQUvTr2+L>}GH8^s5hF{omi6!iyL zDTZd0!qt!k%R+T}Lg959o(v?+>+KGvJjZM?q#k8y?dVBM(}r@yTRgE)@O@_*jFsPE zW>L0+FK z;pBh5me5LAJoQo=2xKB5=vDZzAhai;n1-S60hA`>ptw;T_MCYbeSR_y%IGDBO2_sf zM$(#NvL`fN)_tf!9RXcv%Bh}E@zfS8Th`$FdP7wUbudAzQQ_SXvf5MPQn6T=10frZ zXiNvPlWR5otM4OO<&Z%rS4?VOb-=L6tLD0ohkhB*Sc6&5Xo` zZ5NvnZE3QB3%ez}HZfSJcN_+oOPj(en9W86`>-*}Rt$H9s_6^mtKwk@TeO^PV?1%Q zI`~Ny!D`m=u()M%QyNvYK?=#8pHT=K4NOa0c{LN`26L==iDAkBp*eS-v3EPu&X^&x z27|Z9=GOC1J;fE?XnO`~zGB<;fsOvmxorthVz+=)o-9kchsVim3Kf&E3}>Tbr8{~Y zS7b@7ouP!n-d(o=WLxq9;pq3Joa@YiO$~L7cFQ#j-P*pe1yS>}O-;`*Ld18`)RrK= zv{Yzbrt;$cnBaHuN&T!~8}fYATpM=o)RfYc1X{IDk2gU=Do(DPTOvOrE|FwA>`)pf50>=5TxaciAL9jHC7eGW?zhUhzj>d;4 zc5WEhwR4+M5Qacp-X$8AFs{w8CJnWh&PrE#bKas`DWgLSvz(NWg>dAnyio|Vq~#MK zv!+y_i{e`c%ZN?}f1*MTP?In)raQWvacXH=RYTL!QP0*2w95`9IGblAfV%L<`ql zW7>gUifPVnT$0$@-b>?%C1kA)D$$2wxtrYWH&eyOEpd|lF1yw>S(M9OAJdZ?Js=;? z7n*QQ_x=h#PT*fkPSbw&BoETp+2jx(CjHj;V`uea2-F>-eLQ%$5S)@6f&}Jb`(nRO z_^{`{-@o)7F)zq~gGdovTYG*qL<&8nB~q_->=@LIiHDynl(3qw_e=WaL)1ak;z+U*^d;Je9s=pDR&Y zF{{NkaP20SOs^sDm(0!Inn%Kd*ikYNjZKlNkGUjOpr}RCL5=NMwzG?33~J$nZB;#F zTrVwT^T~M@X;@^IHKe5p4!vl4LI+JFtEUEmBvYuuT-cONaOuLc7V#wlmWNPFKkzjB zm?!P23WP+Y$)uc_Fv3_+^YDQGN43*FZjAMh1dFQnm^6cmQE#ys>+od*=HzG+BQh+( z@$2)fUm$ci>_{^xM#bXt5T~e9ByhTTp^${P)?p*ZX~IYxQrT6XsOv*iq2HWN$BB<@ zLM^+4WGtpib~R~`cDi{x#9=~B?xkc`i=*yW_EDSN%<>jD6!ZN~FYq3n^)&Y|L41{v zO-NaA60W54=C|glh4_9PieIf_giz6WtNTF>TZTIMqBsR-xv|!W@)-A^f-+6#qG5U0 z-HPOrGS;a`7w12rjus8bj`FsXs_~JV6QLmS6xkAt@CK-jUZJ zNC{1rTJKUXes zCXo?tHu+nq-9Z(IHA5T&TP`-xCCU86rC5z9C!sK%H{6+ia@J6hteQ)bOPKqTXT`k8 zBgrMQN@rR})TDS!Mxne6m9+N73S?>%+J>SQW6;|2;JAdO=U4V?mbj44_MVUN*5e1Z z<>!&|i*c+PcTd-b{rugt)t5CozSTP_i!=5n*)#3*D?HyViqM`7cR4QWw}52wPD*akCnRkte3%xc@!o@=y2g^H&D_2guWvqN@WD?JI5QHiSO%Jhp5;w6h1^Z9-mF0IK0XN@Ru>b(c=4sLjKhO846i1uP!a26 z780qvDy;lKSgkg<$q&s1sA?er58*aJwp^weUUq_*%~Yb-VbKCLAgBIUMv}q8&0>n7 znYa0^WN>93#>7-6cd0_&`UwY{>|;~{Y> z?=DRtq*a>TtIgqMk{aGZ(CpO<zuPEz3z5YGgH#Z(iC{woeDIGg_g=Q7U^16VlMrR(;yDsIA*5#_*ty zn~*`O-Cfa{oU$Lq0jpIht^=PpIL{5WLkANBXW?*|jqBVyeeGrTvoWH9uvBV_lM)1b zgX3T?Cu1Dg8w#Fv3bUsIuZxvqUmhAucf)jh#dK1TdlH)h++C_owf61kzxYyGvNRc1 zYv{LsBu0&^yDP0v=vOEE)wCJk%9VP0ApGv0RpkvuVS0C^j8+NCQpN(5EqfRWNtw(y zmN`1ITES2ne_;@_Zx6qLY6gGL2rgGF3_z>T7DL1*j@HTTu9I13Y-K8jP<}qPZZrQ~ z=S5W~*`&M8S}0|=FsG4jPol-KSOvS)hjhnij1TnkJ#Sm}iz%j~7JHT$H#+tOtiW_x z9NaP;t;8X}Jc5!mnGowOIc`&V@l0t5AR>q%h^k{oEYDH;?nsOsmQJZ#cx1)UxS=%C z;G@y>x|O10$ZMqIpJl@cRU#r{S8DltF@=97hUgLvUEz!ac}|78zrZ*jA&_S`sSQ+a zd=&V!%Oey^))O?E8^ylZ6;vMgAnx4PefW@vN)x$MH>S_)tP+cR5&ALbgM^a1tvA%6 z$Pztqvg-AhdGNWSg=O$y}6$>c&Ek4>I%De_=&#h?yKYBzIzbEi}K~Z zt5)ejT4|Ms6I_kEOIxnq&DyWsrOF;j*bDV9Zbrn7eXbpnPN{(w&PP>?t~HU{EjNNs zUA%8k6#nV%D7mr##U6n>VvKdPbZM~`BY!Qol(mgii4pc@5ztgK1cr4umjlZcBMgC7 z<_ce;*X$s(O$Zale=?=m*oH`twqUOCWhC$&%8ChVtOK|!-K~|@g^I=Q!bqqEWo#|1 z1g8n1rR_<+e?Vc>5H1W)ONMRD{pevmF~KfL=vIv9V5WjQMdHyW&bm3CCLp*3{7_{t zW)!`&#y=Q7=0fI4lKF|%zu8V#9@!Ohm<}6EkzMpHYQQn8bly4%b439TRu1;zhv&3f=C|-DK zTTOecF*8ZSq&tOD$wul^En$}-p>S?~_#lSEzl^w<49R_iCgVI*K06irADx^gHWz|P zdhu7{f$12BP7+hKSRHOxV&)z|_DtG`N*JK|6pDSq6@Fy>h4x;UK#Rtg^CNvB@Fikx zKGk(2*(PCH3D7p?#Y`|eJ;hGvsec~TKFGol6XRi-Jw%8>EwzBCR5YpgXyBlD1Sw4^ za2&VAl#9<;z}0EmsII#L$teA&q?I?psH@e*Ja%pgs8P6OL@?G|?&dJr)p$a9lbL6u z1tW4#(rb^%i-+r*^UTI7_R<#pHo7r=VA42F z9yp0O9ds6E$7@pc7@fSqF{*=pG>kR_Dw!FaFINVu?I3~a`Lv_dvHStUw`nNk zjY@1?C%!iWKwZn%sCK`bf`*JFBvHNGVKOw%|75vHrgO%fPdxFo-O|U4abx5E&%Ffd zLM~l=njG1{nsd~h4S;EVJ;=WGoK&-K#`N2cz5LS^t5RG-#Sc@=cy9)Z0-;aiHl&&!+Z7_ATk%m~dWy!){ z9d;*C3T%K9Wzyq4CJV2&R6?ps)MB$0VRsCc6c-yw4$e*V_29^--WUCxjktHdl&)l#JP(QcR zxK++6*KZaq#K-oo!;nzV*O_wDW?tP5r+h4~-tJ6tV>aC$ir}_Tx3ILt=sIo;C6iT7 zT4A6NEnvA^U;*OjybE5tM^pw+_IpqMTRm-rlKSk);|^qjaB2(AD?c@>>>@x4{n@*QBzLqy*~<5 zcjng8HgC;e}J~SQEoJh_;z+&^Dv`XI~N<6q-q%a1h>J^Y5;N#`H<7M5}-99!^ya zeW6S1&@>z@E)RFtuoA(KYpMm`@!^t+m9~Z;ycMD=KE&0c)uNZW7+6Dab)>VmNuDzB znqt}ql@Y`jEA&xRb<)+^iQEtC6DYxX3i z_1$9Phn4BJU0b$D&+gDpSPR0oiAfFDlwCH+R#0q*R+Sf$vQSTQF^eGcDYQeUHQrM# z>PDkefc@rj*s&*(u}fJo3MC)P=zwNVQcVJY!O?7Is_VH%6W9Emvq< zL>zyEEYwX9LuQhi`D6K6`KYzV%q=T|@f`WD86{S)E--^i5iJx$B7V#0?l#;HVTotq z4{MBPA@7Dgo{zwMl%GYVoVm6Lb)Ml(866?m7;2%?+#6~&e~O;3`fAZh>Sy@K6psUq z3+B#J%3~m%}Zm=j1f#I2E!wAtW#jNVeehPaf_Y3L|Dxo(VoAZU!2(MlV*!I2+#l%lXT~GPj@LD>GeUCJQFoU3FE{Gg-Olk8 z3=ywvb&TNr!;@Tiz&El$Cd;h}%8&GjrhH~8B!0*ZW0bI8uqbw|_v5Pbv%e6d8mj0v ziEd#$GJBG+-P(m{@kacOqW85d-E*pUEf^}8Wkg~8X0uObb9CjXOb8QPKHabCI5=jB zVUG`=GEUHi;y{eFVsUxQr`7W4JueGmuDn>VM{w_Srxe?x5Gi_kdy=)sa*D)B?e2u~ z;+We+Ybc83r>uVjhuMjzo|SlEZ5~k4N-Dsvn6S= zV}Lv@#Ga%hP8P$9+xz)PQy4tPr^KnW%3+q&a}LsBCT5Sx0+^8Em*^YZgXLYI-|V5x z5LFae$#*9>+*3$AlGM0TqPo~WdVKwNIUe;dOcBf)?T^T*C(6My@s5f5>FMra1W_zc z?883LDAxTDfqhNDT@JkXP&Cc^PoYs_sdUP9>|f@L4r@!OfiL9?g$(whPZvrA!g-p6 zFoQUkzJB&h?g^Udy>%-<{mniHW$b9anYbc@RgCF2M*8wAj@TMXSkPRNEiH|3Ut|_I z(PB2-e$0EBiq&mcvBE4ER)Y^Ce1;4WQ5b3|=w5mQX0=xM*_rKxh~rny-NYdBV6C)4 zoSIxKU+iE!dp|s`DIKlqQ&(XSf62D(o7QZ*NSt2Y*PvjUys^0n4zSZmpJ)~she`G; zOoeCn49b0khgh1nO4x9h9g_%Qcgp zw%T=OBaJVn>_rH-7el05<@U@6bcM5_j0Ko#*oxt##}~b$*|-8PW@+0Ceja z;zn%(fA>Wd);*@@?X$Zv-CQ`PRdq|~F6R@A53aC;r!-J0GlwwHX--rr_<4Ntq||Pf zI?Gp-FO>b;TH>Y%OgL6qf=eTh3P&~PZr!|fLtgpiOP0-Dr)5%giiCC{2t%%=tWm7i z{d-z8!0KHC8%vMK!>Q=lzoiXzoG38p%JdOK)%M&=jc6;=c=&0kA>{CmZu=s%*s-fB z`reg{jwQsu$iD1jG}+RaFh6g)f)eh)l~=BnHZr2c#H~-+ZEH1CI{tI@!nzn~`Jz>G zlcUF~&5>$4RGGlUXPr%YRT(8*zU{hOZ=AgK#+7Ng({7ZaldrFY%Wzt!)@t{4t8&Zr zl;GCus&kXRQnl7>t!LVT*Z8jzcRT zm{xDOzFJ>2H#u%@bhgnQWjoT;W#$A%8iecAC|rxsL(E9tdgF0(6Fz9ExeXcY=|Ym9 zpf;6>bmW$IPTX>HZRD1ldEP1$wwWepsDlr6=)JWXBj`41QJJY*Z>&w0uS(_*&&OyU zQyH0gxhmFfB2ghm8ZGL@dW>6dB&}gekOedg9kL8{>U;(1mYd;22^)Tfsxg(zSMK54 zM4=kDT_@2IT;0@~;L|K<;~kDF#-Vd97#q~8w_S(HUwkrA9_mb_)0Jkea@%!P=sxo$ z#2VL9_|`4&ylVKCn{U1DmYX4hC(0uR5JMz=(1Zr%IkTpqvJ=n;Zi9AKCK`yvhLaQv ziPNH~D6$8&ByYX3Rfe*nYkjf|@7#7B>$C~OE{fW%H_|40bnA^g(tjdbx{&i`I3$hv z4cw`%sx1v)M1Vk33o|pi9^+^tD(TXi&CVo?Y^+&A+?DD2?fsXnNgM1|VO?4Img{L` znwwU(v@!6fiPWieCPv_2nqZbvdN$tj)vK6^WO2F}Aj?dQ=mf}^fhj8`mt{l4-*z2> zC(wPQdKEc|@f6p25Av$p!80he2^<2-1CFF_B7IECoG`TxoIj0EZkjGbg>JpkS;vZc z@DQ|DcT5s?GOvXhRH(XTqoxgwF)5Kiv(OXlRlG^3Z+T~(F&mu6VqQ@b)AE*^5gCvg zuDiKO2l9Te)F!HvHOy)exZ!p3j9A`;x<@D?8gIR^uC6r+`#_XP9SaxR7#X2nOYNOi zCaYbqs}tBNp74a6V0=oqR`vcf97J1Poou9IfqID1MaFJAg;xisA8J`Gu0}=@8t)gA zv-ZB_=III(+H4({_b7x3tY~#+lc-T=8l`4zV1Y8>l<{qWnUt{ho53^GRCm*O=V_W- zZocihHm!j0gJHexiouAKv*cmoL2wf5nA9~+6PpSP_-5JDI`oJ&avFY_O~Zv!{~1cBvbBU9pwKfn0#ghTX~;%Ed={ zjrTdI7GZe(_h>dg&Yj3GqK;cZ*xANRp}i63W|fUpUVt6F<|}(wZO~Km&R%n zmCQnh3qSp34bEanArjmBd)Nip-|v|7K>Uxw4Vwwzo50M*~kZR&>YzGFP`&1c8z-EB)?sM7piGj6h z(M;fPgYG{ESO{*3FIuCGM|_5-r5YggEI#|1yO0Iu)KES!9P?+1=mHD=eT|8Zi2&?v zAEDItn$r`a16shem@>(NZ4wOZAmyw!`hIJB?NnlPxmQr+d;8nKJxY3-5xs>LP}~9} zP?=F}p=aX)whfz!Zo??NVE_d$2-7v1zG|cdNHYc!t^%Af_I6RTdJ!oAUAr@Lek%Q{C38(nR`j3QSME#bE3CO@0rh4UxU5^_Kv4YRe5~5|Wkj z1bwmLf&ptK@|X*d$a+L#k53meUgSXI?LHxc7B=B+57nA5ZG)#^M5>onl1nJMD9zJ4 z0KqG=7c63CL#bW)FL(qZOa^@7UAYM@1a8r7WxkSI zy>&HBS;GpU3mb*WX22Z2m(9wj%|~wR7zg*QAa@a~2 zoLWZtQTAa6REUOwzkYpij=PONo|aOe05|bw;2T>%1@W`Dusrb2iEGCj2S1!_9$df0 zX>x>8R8A|rFMnYhdVqsCi-^>LA{5D5tA;#T0bog9TImhe z5-TCH&U(#%{e=GyUjKph%Zp7Ab1*LjV+@Odlls9&(EzGFrGBJIU(=QWoc#X3AA!Kp zU1eN;lT#r=Ov->VUfqq;<;0zPD5vO84YJBy`Ytv2TnFT{?9ESqA;hr*!m6HYjQr*1 z^M49s?%|Yr3u`8JQj}I26bYs=LQtF}{>vRByNM616soB%DJrt(5K%raZ-y|MZzjka^Mc!Gi*OmajuvNmhQ5n01wXky|)DJ+zUkl!@yHm<`dIjlxD+wxN$ z*@uh6YpeLDL^6nktZhNaO+2gTuYXkX9;WLy0@Gbh2Aa5)LH`TrQ8?PM_ zB@)<^K}}4sxpuu-yh+VS~#a;2Qqk0_!m|(&V8|TEA5w`FgGT$YR z?O=Y-Kq>~N*kKUgR1 zjUD9*25GfJ#7=ZAmQfj8y%q=9$_$#9tMJ>z^w`(v}IzuQXxP6 znLtYeLJc57|>fvK_QTp-Mps6&-z+RY5#&ok;Fxoa8(?=*5lv@%bw|V<&26GXxO~L!3 zCN|ez5`V?cRg>@6pG!D~Sk3bVrxa5DB3zSu)xIo$}T56P3)%A0MX&G1JGmIE1E*rTCl#B%U7eS;d^-_JJi#JNofHpif9lIIGvv8;!T1^}R=llbs zil*FZ;|7zbH!Z{VH6zf=041J<%8 z463>r$Qsdo@l>*@c14w(F=I*D0YUBYXA;i*`!IW`K;oq3tdwCN$BZJf;7l0nn`PY% zTB9VrgQ^r;*k{j;Yl+&|6Jy3$-1HGDm_L5JqpN6hkB#yV8AI=p~mU(25!Yu@B~yR;lzaYb1VA_L4qs8IeNi#>`3$CA&oV3mg>`)Ir4g!U$8=|AG;tm$aJ1wgNm3H7wCuwEH zYC$I(HiYhP*gDkY0gKL7z!H5;0!jAAImF!Q-3O26xQ6S|lZD~DSi$D8llZ6|U?Lx( z`{)$kOfRH+jZl)6wZ9v&tD_U3QYwOB!QVz*^5>Fv&t?tQiNRM&e9?>mJgK@>Nj zyX4j#t!=}TY0_2NOHuuxV}4(S$s)Rk3G+e`+egI?H&}IO;t=#i4xw$t4G8$jHBGWB zlk(;-hzs;b_S?4dFd3lWP0YG=R&!TCdAKn3@#rCwOkp$%LOe!Aj5SgH524$&-OkT1 zJ=Kos;X{-?TU1OB7JrjpK~jpNS5$bk^z`YskD)-~ITESLt(&RI@xnYi3{>&Mtl{`o z(iP#+U9RQU2>gndDcFP>)8SLXNKx~Xm{WzPInxGNAy^geuo)K3(qcQ4MdKQ>_L5?? zaCe(oG)yJm$z)=cWyI5~)|hzBEJoM?X}=grklho48sjSUm)=c7bq-X^Ch4I+B__6Y z{(qT3u(3ET7K>#`P2~6w+uZ5CMRd16x}HHzg#>bDR;3x|grp`P z&VF&Pvu>pvXlk7T2}5s_g>)KZfp@4u^LQW5e)ZssdkbIOFD&3#3pktD0S7;|QX==KXG8AGA#_#)kUOlH-uV_}+kC#3kzIlc8Pxan?>^Jkn zthg#aM*6d>QhYDcqsLE|h6~5E8p4)=QGyz8TRe|nmoX0SX3T%``mZolcwT56tD9Ce zwa4ZTUBjQU&UL|=U5p5vimRPTjkH`?%ofM)ncO*Dmoz)dCCMsczAiMo8RE)hkkme5v6}AtJMBL1TEwq!(F6K6z1`n03zi@_UCy1j5-cfaStwfTbROi0xPjM5-N_z{mKY~3B2rjQ zEWJKCJ%6mj9lY1k4D1v^jeu@6FGwM=G$1N6%>sMj6^VYp+uhOWxQveU@Xkm8p8vo8 zE9EM$|Bjl?w(%wbnaVQR$xwgk^}1Jsfy83gC(MV>(Ae_)BorBOOuk%tQ{+ISjXVlU z{$0_CLpzS!n8Gltlk(OL+k)U;Ba7OWW@ctlQn#xe;#@sttpS3fK%VsEDE>3O2`Y6E z>dh+!bmZ0A+YrG}8C0H@77#w1=#~j;mg|^$l?a-<9SE@4iG8vtW&{E-l{aG&XXA;Q zOkC5Ya(5PK=!K&Hrc#6wpb_#+U|OosoRpv~2{;{Ki_cWSLne620SN@vkiyh-D~r6M z&b5T_7}yRq232!;rxZ;EurpEX5{VvbHkjwo7mhIxb#pqv3Pl5PTl64 zS4(eRJ#+{}c@s$*<-?suyy>%p20&|mxCu&pwbKDeLNFXVMRB$B}K_#i&u-X!LPtD zdw@_xTP5`bN=#D2uLcbS28gC8H=CQONYx+t46CRzs?MyU@+8tm3^2s5U5*^14B9$V zlwDtWq#kC(x2g%(7z1>MKEcFDiD+ihU~+SnTY5sY^{mXEc>)O2#6bL=9QCSqs1Yqo zX;SpiSxe0du>&g+Hd61ok^#wUxmA!`>1Ub`OQeABS-`aD0^KN1`z#pfD%6tQ_TpKH zpnpZ{`Hp*^xK8;u*YjXibz(*0-H;s7$(@#YBk8Hh=+hQcD1a(L_Qje;oNVspr*7RD zKJk)+WiqY~7z!2m*4FYH znNSdkF(ndt4F0R18I{-kjRK#?XE+zD2Rhs!z=u(g)3?g`k`VkP9#dcu0{K4_ zs9aEBS*!t3q*acX=(Nz1v2cKC*0&TJL$PeQY}S!fE(}8nHZ-x-UpsizS<} zZK2H2!s;+Q;WAE#t^?xKBGR9n6em9TNh(IRM8NAp25AcA z$|j6ZY|wY8Dlo~A%u?r6(+%B_YU5Jn^`5unly zl{2x63O`@KiB8<0!XMHU;uDNv>=lrnNXoja6)+wT?(=H1^k|X!nqM})I%6Mg%}+tcT0K@xuF;jZB2W|4_JMrPNQDl2vAkTf&H z#_Gg;Bi39wX)Voq6j;N_kn^wq^t*+{2Mgc6dG*DcS9Y!gXJs;-viU%A(VCZtDwio` zW*-jg`~dvfeEG$~{8vvSm?qY3^y{N1qTI`|cB6&SCcS_vgf?Z(e3DuRFaSc58AG+V zukHCYe)Nt4nMo<(Q1_!FO;{pK5>9`y?Y8DZdrlHEEtj z2s|F%g2l-o5S|UOLe-c!#FvQn%bB7Ip-n+6ZJ+=F7Msjf8Sm2TKmP8E*MGWS063!# z3z@^^ZZs>AHn0PKOWP&4s5GPXPC*zc$U`Qeh(OoB>RrFqYG|^>a$pwa!G?wPy6Wq8 zv5N0f6kV^~c=JkLmW~F{fD8m!4Y^vA9?5-W1f*XK%;cb@O@quP18=tOlDuQLH?<5| zscFwGZ>0i~(v8W7NFbsplUnY2sc;XHIUdL4^YvsZl2acvnLL%mdU8H zr6J6;%|sQ-aZSCmRMJ!@=s=1}3SMGA8cLwhK1Vl@f}nEMkjFj=Zv@^NkiyPI4(5HoxnwLb`>7u zZX=dCHqlzAXE5Rv$*$VX)|>zxF=e;dPBg9C^TU$^c#)KxHCUdwKlYj`=>pV`9po;m zrtrkp&<*B!OPfs@vR;Aum#URaw#-~n7oo}w51A0M1xsi!6`@U-otuLgAMP0{jY+Xa zweOlL!Kd^Uay*~hJ&(cbi8~waUFe16+6E#z2}=x=QS$f`X)3>iPkE}twA_kvbz1rG zXzLe&LPnGtNL?P)C&U}W*FUP(^I!e0YGwsY;AOWHWD22FgKTNj zz_b_2MViEDl=o=4Tor5C1x_GI*gP7oZ5$+Cq!Kp;UEV&t;-aRu>?*%A{3QoBnB%HS zsyOwxw+k*jdXDgsH*P8YZN`nrEK9~9;n1t92TJ$(uq?4)Cc-eHsP~+%BMw*W`s!9 zh(kThq+m!bW36OS`QG6~Ysw61V5yQTvjw76?Dtwkv+|&1phL}Afdxjubx@GfxGjR> zjM0Tkp1_2F?G4*Vs}T4!<)NasEp@(;sSC)R44vs`c`swD2KKh-=fs$fhRL!%_67H= zKDGo`CLMc{V2P5trD~~e!DG3H#@Z&Ehm3p2q|$s$q9pi^lF-%E-6EUjY)S4(#&XOt z_<()yfMxA`tjO&ASGtXY|3~>{bdhPWIplH;>$0?0)3#g8(4O0(3i`a6QtwL%w9TdBVJ?N`Fte06(DomcR~$_O$L|0=jv1=TGQ>=(%{w{OmF`3^ z%4WqdH!N?Uw4}lD7&-pnN1QGG)u2p+?9oC2YW!3k$9tlX%8OEHOHZ?MRL6U=+w88A zwxfziJj67@`=US)GQ|2}_+-(oA!rPh2M1zU9EtG@^ z+dbu1dcQ*}E5q^Thab|(=FH5{;TW_kSMKOUC{XLJs8>GLMsu!>OZ5{Ue#lX9>|-8p z0-~T0i#YLO`MCQc7rlQt97dKRPM6X5>dCv7l}PsZhVM4be-DSKbp}JZ<&GYKp^n(b z?NeYJK0MhyQuZw2q~WiAMPTml9Hx{T`Bl^0YMLv2N|xYY7p4owQ9T`mik_gr3`5$d zMpI8139|<#A)ik_Z9f0JX@+9vx^rUZuCAB8!5RIL{m!`UkT@Fs^s}b|FleX$NyUswBD@4!24Eke$a@SIvhuisAz2 z#QtYDnqTqXE&jXmSxEKpLw=dzzfV8qug^cvAAi7a|H*$pd^RNZ&KB52Gxrnf+KRAB z+pDjv2MP!bhd?1EAE;unhI!g|-JlAah?iT9jdhkmejt21v)vP}m2*7> z8&NfZtlEx1KAj=7K$Z8j!J=r$T&Hfs8Eo2tWG7q>>O)XPqs4RvFl7d)el5T3(#RA>iSW0Et1IB(P}Wy?dBTU z4XFLoUt&9(gE!#{Cv{}wl!;%fPhm<5=Y%Tw(ugKy?}@@qPETyEefiaw zkFNL6?C`>tD9Asx*t%K?Lvl8~P)8TGaB?PrMyzu>$dQgXCajOkmM(0~%f)rU0IunQ z95?ez-#%S@8bX+Vi5kMdX@^ZNes=ku(T{Q5bYmwMjw9v?d(SEY=*%67^9tOC3iAIoD?Qu~kYkSN!64L}#njFvcxcD>#W4@gbLuT`V`cuu?0h+FK10cmO1K`*107H>D7rMBVK z)TFSJDcbY89*VKt)|t@pqh9r3%A3LCeVC(q|I_OAcpugP>jS6*yaVJ__MyyXd~f+F zRMJ=`{ur?L=>wk2!~Xo2@7D2y9%^~0sd}~LnMsz}Z)>OXbi(sXVMj%iOLeuCXph2c zxR^?ntv~%ax6wo+>BF>THnJL$U9N3Oo5$eVCzpR$s4@Y9a>gEJD>qqI=Usf!FFF09 z42K`mC)o{{=1x5v521>lV>sxy^H% zDbu1f`ZkYKB!BqaB0~pl=+UmHy?DDa4+)+s^lgx$(>4@oM=s@bLzetIrl$6#mju0IcIj>TvLmUe!i2jR`z(v1B3F<-0xg_Jt(pLP+G1* zG7=M!3aTlzDPx;D90E1z1lIVa{wjvjwo^UW{VKqyhw8yqj%ur#L;ye1>*X#e?3mWb zdpoogHdgBD!pJw?$brRMAe@~Sr(L3Mr*XE zfhlH71sRvVsJKfJ0wOOuc`Uqjw)x6XvG7q?RztLyW=?eV6+!ft+35WJuj{%3O`0i0 zbjP~ur9u`cW3iIHeW3%}2!N>8w;loW^&m{)QYN_dJr$CQkt^Uf#fID z-vy#G2YRFsQE<53t)rpBH))#*PehQ!-3?E}z0edDp+S45s zYRDA}Ww&qI;TDi3H}Z`dQQjw4H*BpDCGNhXg-S@rulX;_n5!V>U3?b=$gND)NK72m zlSbw;Oqik0##nT`;bAb_p0mdYf{7yKslW}Hi_U^ol2lc;@S;LMqK3hRHXo0DmjU>k z(>9Q9f?aA`vFRu-PmKq)L!Y4piy}az&f%GA2L|ReU?yn6K~}ei2a;Yes<}1bMO>RDj1pdv9#~RAkSMv z6i-DN&w$gkbU;zM-!x|B&oV87NW@`tKu~UgGWB^SOp#cPvOS1Z?#!#|wcmb4LH9pO ziu+=@Sbe2C^Kl0N7@`Iu8vM^DRG)H3w0>IyLwTkCcRkI{ihQ&CPi4W+oqBF@Z36Fh)kyA zdm)*|`2r&-?HRc$6D<%|QiwdGZAOlBb>{>oog2?R1lEm zhEv-&&3*7A5f@jL5J1wflum~2jn;(VT~I@0FFps%7)`mtA?x#r(YhnI?!SJyWhteg zMlbA(k|;UEByVn7{Hk?v;EKsm&K)b@r%~VOP7MiXm*zpP>OGMJ>5TA{XI6bF|@(u}|7jNbXM$XBRbXbH$Aa=mlMR=C1%|xXVzNEkBe)c$nqzc)@}f zlm;qTs)A=+g*ut39c1yE^Rb-MsZdgsAS9YZV0Tofk$VkxHE-;4{p3cCb-owJs zswO-OpGDMzm$R!`GO*`yR`|!|v4~i-x!72X&bF72Qhb)oZ)~!W_DubGOi?T#vVyd^ zY_%>7tE)p>HwyPPyt5tlL#wh%IEi`>+Q%bzqcD-Gvr6$#8~19t(H;Qu#J^x&?jP2+ zlCsPG&O2^M7APNq+FaLf{xdc4G^O%RPv9xufgF*3#y*B2R9Ig3#3^o+zf?{>WLe$C zo41<}K1e?j^U0qv)A;f2v8Xb*{O%7wly|H4E{;S6Syn&$3^mLCu6OyjP9eAC#ZOK3 zz}(*?lgoxb>|FW`)fvsEQz7+u7$7RBgBon)kFV2vY%`lj&%*0}n z%Y4+v{yDFx&Nr-aJ>(ADi&s7PwntkmmkmnjAvcj9f?9xv8|i{!k32lcgdz~?s8XFA ztWe6AkDlCUeshoW`eM#sFFyV1L4`lim3fwFz>6(bfD^QJWf9cIkGiJI!%h9RZ~D^< zmSOQmqmzn3fyBT(0q3M5_>n4^6Q>8oYY*q6s}Vt4_@0+_S*Gu%?O78e&Cr#^APfPb zH7&*>{dyl9DNM)oCf0?uwiZ7J#Ah8mm{)F4$Xl+-o4--*juJ{|@8Wcik9^?OVD8N; ztkkQA2r=B3>PQh%G?lhVO+@Xq)s~MrnQ7{edhN@g<3Wvi%HYe9SA-BrR<^)ZwN50}5udkC;lebbkoa zJl&)iLw<&a#m>XmeX(ebhq3B(S+$WxT{Rz_(K-L^7*)v*~p3v;1 znMTrOY7*2>bEYwcDIzCkXDLfUe;9(8f2oT3JtYEV{-E z9|8zbaG<*gAG#~5P}eDYJv>V1JVPexid8YH9T;Ubf;QM&0?UI*Z9JNLW6&n`vbXaOK+8?(y}f!=vNFEgfNZ?bp|n z#gY9Cx&;%q{eS6AEbZ=}(y6ez&pM340t#}K{?E68DNjrznSWSA{%>6q(8?5;^GcO8 z0wWa}%GNF@QcjI>c$x-dZqK8PQq`7PJxr*SZh5-Ep6GxzN-t1O9q**<|JqsUJOg`& zX+>b1dK3d(;T#x)7f_(oBBG2QKi+vI z#^TqK&KE?ktu=PJ?x=~IaqsqgHPe2j%7MHU)Z1C^yfe@%F=EKgK=Lx`=XM7z5las5 zN|}p0&8IJpj}PwLy7k?6-`(V5>zmwReGBmYVzhH`>+^Rg0xj{zVC|~VSOs!BYn7qQ z(J~Xp<#TC)CTyW0;@n9bc@@5m_G`zcZ@Mu#>sw-rjC!+^Hk7a<4>~LK<%iq#Mo>G4 z4*ZMs82EHRs-)JMG&dZ=G3tw4&CtS|qP=l#2QAFhI&>ZlOzdahI zV<^NYIRxo1A3a=1_Rrb)!9v__G|+iXAl6;Phzg!}2X}A1{sW82PMSkufCqQ^Z()%# zh9`H@Mpg2dH0{lDgE?*6(r@@tgZrbS!RtTjLTlM4{uw+Na}d)}bNBIsm%sk-P9y%| z=faD>4)G&X;;2wzmCPnPTmrerlx{sg*tz-Qcy|YWQ3W>IicOQS2B2G8UGjOyUL;xj z&gOO^5>$bb#bZYG*howIfh%~n6CkLeIY znMsf;8h~t5RDh;{y=j_;uuMH}b5bZ~|8R;}ops2XB|=mJQRfRFy>W?i9Q8~%GH)?# z6{IO7<&vmG?4bSfBJDXxfqH=IN(n4*%mE?*_)`)gzLq}HfoI~M%XoG709jK@h}JbdoFQE#sNYjU6Xe*)D6YL*7uhroxXbT-R4!&Xg!w$6mwn- zbG1PIR(W1@b0`#;0Kw#~h59Mg8O7XXb`3*aY%=>6P$b2rbw6mp5}-wgREKZcMrpN- zHK3 z@+HIdQm0FmWO1cGf}z96X+VC)fAz8PUTn7abo0Q}tB)2?EH{vIz=$r0** zWD+^J$9(=()0klz;DhcoW|#&aQnhg65SJW2X4NyHDIq}US5e(u&J$)-?yc)Saa;J9 zM$VvVZEmJ&R=W7Uh)yrQ@8iRcaW?JqR(N!B`4SaSLN-sszu}X7UT2kS^P#p_XeEBK z@KtJ{Pm0!JkG>m&S3AxVzvNb0zMyqNL8;~&S%Np)1Cm!TAzcsjfI)k8*>sf{w>w=nfyJ~c_#zG~fSu~kFbpV+qG zq2{x4k{|E#Jfa2B62sumF#wQBk^I^ku=SI)?xf{~gc0Q_r{=A@(&$VagziN;;-Cyu zU88n%rirRBi=NVecTD)DukPOa`Z2MCWXlwki}7=ypucnD!yzBydXsa{ogL=03o-i{;tVgJ_FC83M7;CnC5+oIWv{Z9uUJmj z3S*VOxty&sLH$=BNBk0|>R)H6k`nxxh6=AhQ55ZP#QnmGS4=o@P)jy4Q+Dd-nJHVS zOAr1W1NF-d|9`?f`Ft8}Ml)DbG%Z3X6=;){{1qLDg5_(E+e(Xz2y0_oWiVXW;U;0Cjkx%d%W>r6$&zuWw+gm8 zB*;(iq^AKo!TEiys}TY(bsEZXPMdB+9&bO1)IGf zwvP4ispu z;bX%7#LaTka;f4lMiXQ5dmGu5)*q?@Apc0%WJ6tYde?l$@%jB>jHSe(;MdrE4)7q)6;EY-E-tnOVS zT5VU4h#k-N5M*`hx#|^M8wy`fN7QrxQ0xm4C&ReG*+SZl;sUWgMN;O|iH4J=mq80imH!7npmr; z=B_$P??twv`2e-=gErDYSJ$CVCJu|AN#RwSOs~No48-SN_r)OHE^(ILs}OqSVLq{% zjbk8TNu0}=5)l#NsWo!+zgE-c}NQ{SkqHhilJ0nGd+n2WLdlq((#GsCZj z0WwBR=jHJwoYz6(R8GT-aGnv2CMH3FHE4QIvOblVD}OM^S7LC3kB zZB?>I>LvL})X);%3{66k+3iN!H=E_@Jy2;j$=p=eILi?8-%FitBh5ur&Nm3+rD@62 zmxX}3-_8{`=|-KziUjFi|B0%?_Jxo5B)={7`IhKT8eba}u45YsCxsND4%s2r-J;Tl zmaRU}yi-Br0NBQTgE?OUyNCHrxm{(;RXvDbQrJ?O&(>K?5T<~-4SWjk$1BAs znhYY7u?i+g3W(F|r5R$NG?vHOP~1({jVU1%%(K-AJd_H&{h{oS)xJw^<$JpF)D3p( zb)z1IK1H>*M#hnH;?9qkevMhviL;gve~c>AJTeeX%TO!0m@XcVR3`J+)eA)4OATX; zoERd?j9gZX(PPU;6m>Qf%+AZIr}IS965MrzA>EL|u8HXptyxD+}awd(C-AR`Kg?y$Wj)uXq+&ep_*VM2dF%oE!wbGM?#}B^s5Y-5a zW(*76k2!qQVRTtQF|}%A685uNSw9?MWda8j`@w{TVOUL+7|hqRQ>`Noern26PGaDt zpRr3!hB4rQ+zOp_s9zOatE?xdkef=CX|(%>2Ucpw6WA+8eBv_AWk^Z6WdU75`jrR7-}~?Wd>_6 zaD|iQM~vd06_^^uCkA(y_s5bmW*otVef+UaHS!nM*OalLzK}dz#zdW z4YOtf7Rb5f6G9yBAE9Ey;ITZ0qo#i6y|!x{X&8;`5mP)~;iBwQu>e0(y>O=B!GGVn zN$Joc^xplLrm`a%y#Ew`rb!{nMXynu>E#0&)Jsd595NGxs2@ zf{h52ZaK?ptMjIZmf!CDTQIA^%A>fHrL>iG3>ClZ9@{vIY-^{1{ENSzNoZ)3b4T_3 z3|oT;S;Ws9$2;HO;P#>m8hJUM+1-B$mf(kt{avC`n_@418&eW>cpL;nx$NX_%fDC^ zF;JzlvSLhzinkt@r}GazZ_!_#f9SfTAKPYpdO>c%|6ZaQK)-=baLy$bMA`=diI5iz zIyH=?&Jgs=LkUd`+AbGs3Pfqe&YC>StIM|G#q)=fdrVKv9Q~_1tSQvm+j9w#hBM>i z89HN|FBq)mhoq?T#HT6h!yRw~zw)R7G=-39Y4H8DkOsgCLBrJ!~9qwuBU zB(n)gtkT<=R9xNCdHv4)*}1Rp&qM-f*!fBzMvfh;g=7g`B31R{couGU$e-HR%nDwp zp%X!bqQC91i+*`33u!AC;>PVVFrIsKXxN&&7|(E7Yzk{G>T-XD%%-{%zzC;ef}cH= z{@|}ME>-`zo4U z;p@L2UIT6t+$~5UZ%fFaDRyM;wPVy0X9(*3zX6T%@c0ei(xmk^k`OLV zr)_ZWTBi}kp8~~^A_Byh=q_Ku%ffnxYX|#snDaK4E`QJ9bP2d6un}26MFR4fCPHFU zIRZIz{?JFG=AP0gX|!7$66Y;hJ|{aOGRB10p6~3hgPopVZ^j%J9LFA|mtFv$|Imhj zfQZReC&(jTyrsO+TogAH{vtkul9YD5_JYj;>0Ip@?x~zr%{a?(8ryPoi!a43BwKH>R;X*;{s3P1IS3WAk+O5G((*fQIH_&m~Xy(eEIymB1@fMr= z?S26wAZ(AIMJ+bivl9j=WwTQ{lnv_V~sGLS~%yaErM0$u^Dzb^iEa$2vJgxFV1^Petx1yGjs2Pr}hs|qpe_7 zg>_YuC7-LqW8Ha=pHoLV8to&SDrnVhfF<~*#rIY}u{8S@I3Y(GWFy5p3*SYz1avr~ z9qJs9UycmqM|;Od9U|uk{coG%S4l+Tb+l7bz;>47G~l$|>4GCyRh?_bEqFb;+8&*L zM>ZmULF)TgVs{@ivky$s9~`j$r}p+Yq^00>J@v)8PpP^=kMIX6KCdllym+Wd7t~A( z!`}YR{`2%u+B4vyIPQm(lVA;_qiBhkC>h=%_1-?$H7178Ddy*m;{+EgbA6l@KRu59 zz0t;QB4RUhd`?>jFHVofTpHm4<8}4-crZQ~srJK9$&%>EYqT_KTD(l!Akhxfsb`yr%(Zp& zL}wikx>3-+2q@*mFJ zJLf6#2IUVqq<>aXe_u2!tpc;Vz3Py`+3xKn+FCZD0XeFLU5l)k}S2lNP+LP??L-|Mr;h& z#fFzAg|=Xm2#)%y(+kF2CU}`aVn-rKsOEKGj^m&FtPKr)4!+i=NRf zYrs0Ub644QY$A+et@B%jYTk3%jU}g*>`b)h$y|O6=5atY;cV1`!rVgn$x5M0o2Sk; zC$!BDJx=iF#<yPxk_&);8@2A zXQ(A@cHbkqsYq;lXlAQFWTe3*CCj1{H^X5Ie>NbPWr&rIW0}aj`({?>HOX7%-G{n} zwSu}3w1d3$eoYSBx^vr_%j4J>EvS(yC{Tgl?W+*fT-O9itFmILaupEYq>z$Ski_{U3l_@w~jC};gD$g zj!({%GMrF9iUL=PM`GnM02P~ev$D-tFkhrT1qo|G*|xMr@nt$hMEctuLlF>K$HYWv zGbFUsY$@paP3=c;Bi4^;^G;b!NC8`W-$>axhF{#C_`0!4Y=XNCn0=vZfZK^(c=Cv} zl^6w`X8*LM<^00j*LS4{pDaB6`pII4uBIuI>LY9EvX{Iw&0XfldzwRsVF4GDAqtc$ zTz$Nj&zbRCx&8byJPMXO=aenrE$;{WmVlT*Uz#rqwA6ZIJPqd2*`FzNh_1cwkxqKH zWw3cPZCoV=9U9EqI$~Ogdgb?t0-;hp7PnFj#NPCbtYz%)fMUr*{;-uY6r9Uj;4G|B z)wo-$+s~$*J^t-vy>_~YNQ~u*qtIP41#tu)4X4C^wj4VVjcwCLOctW0_@hJMY*l}s zkrQQ8#4r*?4$cR~gPembx{lzxa;0dy>VGUpZkz0V; z*PDMMj6I_AvuiVZcQLB2%#8&swT|ejcpxhDFvm!mFW6+rJ5-;Kg+`c)7Q%`=rHT-_XPAcO73(2^_`fWApIY8y+ws$&$eTk$A0ekVE0 z>@=T_uf)wx6&qN*jLq*ftNqXFbhZA+!;hqF%^^_7jQN+>GK3yUX5JZ&N% z%Q@%-{-D(0$`RL}5WT|7z|gB`X7l77PR)wo8EQ(NwRfZ?M!)%vMr@;OJPWVNC=cGe z%I>uGP@H0_Lq#4Od9N7aly^hloqaO9_%!mAb6-FBdhsE(-S?kzCF>KfP*|(H6yg$} z#+^e@rR?Hn^FVP9PJq`KTMOVtziP8d-RA1-{MBL+5(KZZ9!Mued&-^X5Ml6)-ijtj z(cgS0R<})-#33GbMcn{A4$?18jQ6(oB|IrXC;AV$Ur?$a%w=R4v$E9$yf5+ zc!#afz};<~GlzT2>7HBrd5AaPd1nr#;Xos!Ml(1&&qwm|S!OQQBPDe0SJ$HmBlx_8 zP1E6!o0vjf=|^i~{?~usp!!XzaZNK&2-W8juTL@*49iQ+DFVCcz@X|9U?g(rRBIn1 z^HjZZ#KN?6=%z!FjyO(rR#+@YxV5XC#WJ(eyk{9E;J`_yc~Mh)xy~aMMZs{?4dTP6 zc6-(~npBHbV{;6G)#LP?CJF4nA+gn`0>Sm~jui}MH;72w(M`#YC<(1pD-5n)3d^qvWzO-}8N*Fm)Rt{lBrtR(C|_}1`| zg)@{liG+?*IKN_hvFrND^S02uZN}{T`VSOcV2eeJ(u|DFr<_MJbA0&kzy@DxuOn0>7p$%T|^z43jdZN*SqHa1h;z(-rN{h3<)D2|X<+A=Rkqj&s~@ z*b3A{X|vmpi*|DrrR4=g?27R1eat}>{fUvQWeHw-yLI=aJFuM^T{Xx4^d0J6L-a+I zWgb--^$kxzNZS$L>}$0K};bj2qRI%CDj470h& z%z21X2sjO1?UyIVGA|cGnWBRHHDo?v0&)GlP=ToXqQ^_ zmy--LdqcNvIy>p3BBG!E@)83Vkv+fJPg`kRd&kbewUy1mPW?FN{S~Zj*jj|}Oxk!5 zpLrZM!sUx+!ihqE%Y$dn;)Km+d3g{v-cpDV*@C3cF0lLY5~)iLGXpO=``7~ydLFZp zXVX~WiPTy7J)hKK&{66RcE>z-1Q^Lx0F}vL4Sk4mdZKNKg+<_$VV!*0$-nYo`qmmT z`EW1=ghNYU@lY3cn1g)zI&nC2=_QXPkllMlaIy{==vQBr&Q6*xKh0aqIzh1bEC zVU^f$=(AZ9HCFFTG_kh1xx$9mjnNTgx$?huHXDJ;vIn*V8Ob`WHSA0jYERxfqqKuI z9&p+fLCj|}2iP~Q-m}j%<97M>hMyQ>(c_g1;D zh>7Or@{=FGKmF|LmD}%gOotwq<(6NAjy&Cx$JT$U+|mBl@pr7)Ej`asVftr9iKmm} z(aOo*`1_SqNQclWvzAz<2ynQwEC$RsSbyF;3)f&paYoeC^1y|R&t`TGULHOEX6d&u z19`Dj)f-;Zo&whTd@BOx+MJ_be{Z4JPp~Ttq@T!DML}@!$@S^?4e7a~(eLlrOPKLM zPxvBz8dd@~W_N8Sq$o?J)q8xAUV+biMlU(wd?nGd|dNYO2(wd??l8JKG!pY ze9>@OchWzEPp@6syq*G9x=iY9aB_(z;~7+_F+~V5wm(i{MLo%&Rr81pd`l{u3?3jQ zks*+gEE@$R;YO!7takE4@@z&g1=S>UZdcwxE>d%jnt9XL`r4`Xucn#`$e9~lIXYSA#Bla? zVeT!#XrkL0K6O!FbQnjpMMV1G*j&~2Tl9N5Y(QtP5@fQ46)bHNAgN-eW zX-zuF2sQZm4&oVneP#2`6)0iHByuo3N->^zUye~F7i2|CfCX;MSElm3YYQQ!7D+Vh zcrMEUq|#F}2ZQjWIxbjz1UrN{!v-!PBq&{`G1x*1XUH314MtkJojoxdrw{Tsp{CRg zPqA;}8Husa4oC8&j02VjTOFhg-?|#MLR5qaw7%5fl?|)uAv=)SYYI0Ah09$N&9!Uc z7T*3O{{1-p`|IZVb)vibMd9j~y^-H>#Qq@zpS*plS#J8?!I>gbi1v(&%_mNIP)^$lvL_y&i_*WkJ z4tI#70ba_is^#R|dgyQG8H_fPZHfT^x3_p{@p zKXv+zrm{x0vVx1BG`lZW_SR3i=BIB7T@Z>rutU`RS6LBg{eOcoE%eu}Pkc8B1f)mOf$agul5c#6T2_%k zq~K{0zCL6rOH4-#15Q{A{8`ClEIMjw_^7 z$OxXLB;)RAXf=Sh?ynRoB5sViQt>0&QhN~;xZpDdsc;;3HNiMAd_q$d7WzcjtRTg@ zV3>o;K53qDxm&&;(jQEGZ_K5K1l7u0%N$%hz;GXr2>_jqR{qcaIw6F;V|JD)yaVz& z1X;lKiu$78&(3`~1$U$R`usK%nlrr|ux5!-5jdpWT8LP;sKlQP?A?W98A_b{B3gw5 zEu)c~C^Z_X8rkP~Ai-zpR(Di=H}yMmb_N=l`aCkgB^WrkvUyXgFAn)m1^rI4S+7`s z4XVJ(vk#UB&{Y6tXYb%pQW4)Kl#+~xA5n0`o~an^_1~8V)aYY;u`0N;M+a0G|B!Z+ zGaUU)&_N$BTRs0^6+C*G8V9-LU4*iE6r; zLuNv z9w*ZZl|hw`0LPlAGr6r9lQKQDqQoGtol0XqNcsEhOz?(@*Ch`{%QH@;6JDbRv?yrGOfH*I>B*75%-syOo1I~ll@H+r+h)b(b9ih z*%(9^5tA7yWM-85mA!3wds+jna#@_*yH-tMw{k34@!gI1K7?9N$~+m(lnl2r^I;4r z=Oj(WQxv~M4MU{4Z68wc03xfX9~t*3AkgnO9paH1l{Pw!gUV1CDCasmdp=K#c%_60I|87Gbs3fnEP*c+z^ z&4RlspP&s$5M9-QmLAb~a1=^AYxgRUx~f}T+dHa*hQ5@ozS~tX!h9h800eZ*K(W85 z2%?dpyrfq+aD3$mw*}Z5*vx|~oAcy@i5`+QcvePCAyAiy*U1r9!rD^Jkw>wq9et0E zx@={rZG9xo4cbOTR;Eu_;BHmNaw0+3e7lNsy7F=bW6Z1f|i^JgTYUl+T- zvY`TvZ8douDOa-$sz?tfwc4U>%Q-1gjRPru%!9&tHt@1*#{3E#kMex zv7wYdWn(7Z4}Z0Ee~zKQU?fW7K?%f>K`HrT1cXn$av)c4@A(QlWDbt*=9CfxGb)k8>fymS73^%S5rL?=0%mtNv1gxX=VP)2UkHi6e+7K#0=NWNoIg78q_B% zgAiYiR-BO>?;V_=)SNwv%uQHl%)tTJGaP>vPGFHiOze#1_@v&j#3#!=kqqrzgZtM< zTQ9bE_YRIvUVcCK#l6Q8qWxz7KnQFm2Wn>cRE}H306A-3Ic%qHH9l@Kj(H?)>0+0Z zfufg7KWxdYUU=|@xZ+M~TcOd|ZH^94T?qE}ynxw6*%0e6b-SbD759^Dg?1MZqjIXk zH?Av+i8;K{+-3ol6%2>kS8=Y$@dsXlCw5S|EDtQQH(J4MQD0{#*Ev%EcMB^IXMbz< zSC}Eizp&3dv2${r*X@m~9^_E%3wIv97;gm@kDoHA;|o@T6*>6*k&?SJ`~1ZxT9>pK z4DtP;Ra3XH&O}pK@}@HizPqdnE~iBojgo>hPE-^8to>k0rIQI%UEKM<+N) zY%3;2NTO9yUz9nq%WM+b$h%l!zAJuZi;Ti@6mZE@lS3hnoYN78AJpVBKTU#|G_fO3eV?HD%C^9{*U zKE>aO!W}XTlg+O#FWcEv1B&QpqM1QkqN!pmxlb+r$47nJYXs;+t^Xr$wbC}32Sd{9 z0p>Lb2`aBC5!p$fUG6oVHg}oV2LEtJ?Hl&-@T&4GI^qg1l%_9yP^)q2N6{_0w<)co z9YvUv9i{0eXWz{^UeLru7A7j$RAxPBf21GPQe=G^d2MN1xK-&ogY6d9#=Y2W2y!}8 z5f~*xf{Dda_<+;`Ms83_(3%I7u^mcokl#$s zv9}e;lLK_3k)w#2R(R7kdB?4+;9+7E^)&?5>md(R>*z`|d0J{+k14Qv$No0R$yrr@ zweeyH!{@lL1Bgm`fT$dZ$h956S$uSFcJXd1$q1W%Lc~Bm!65%2mk8$||4M8o`Q<8} zJK2p}6Hm^_d$X@DXK=LBI1>2fy)XZ<_r7}}ta8y>Ix>-Y!(&Vvxxs~oF7JLu2$~7+ tH~EVLe=&$(R{%+q@SsYc)zzY%H+, 2006. +# Volkan Gezer , 2013, 2014, 2017. +msgid "" +msgstr "" +"Project-Id-Version: bash 4.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2017-05-05 11:49+0100\n" +"Last-Translator: Volkan Gezer \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "hatalı dizi indisi" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: removing nameref niteliÄŸi kaldırılıyor" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: indisli dizi, iliÅŸkisel diziye dönüştürülemez" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: geçersiz iliÅŸkisel dizi anahtarı" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: sayısal olmayan indise atama yapılamaz" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: iliÅŸkisel bir dizi ataması yapılırken indis kullanılmalıdır" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: oluÅŸturulamıyor: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: komut için kısayol bulunamıyor" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: boÅŸluk olmayan ilk karakter `\"' deÄŸil" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "%2$s içinde kapatan `%1$c' yok" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: ikinokta imi eksik" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "`%s': kısayol deÄŸiÅŸtirilemiyor" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "destek geniÅŸletme: %s için bellek ayrılamıyor" + +#: braces.c:406 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "destek geniÅŸletme: %d öge için bellek ayrılamıyor" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "destek geniÅŸletme: `%s' için bellek ayrılamıyor" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "`%s': geçersiz takma isim" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "satır düzenleme etkin deÄŸil" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "`%s': kısayol ismi geçersiz" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: okunamıyor: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': iÅŸlev ismi bilinmiyor" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s için bir kısayol atanmamış.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s bunun üzerinden çaÄŸrılabilir: " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': kısayol deÄŸiÅŸtirilemiyor" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "döngü sayısı" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "sadece bir `for', `while' veya `until' döngüsünde anlamlı" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Geçerli alt yordam çaÄŸrısının baÄŸlamını döndürür.\n" +" \n" +" İFADE olmadan, \"$satır $dosyaadı\" döndürür. İFADE ile " +"kullanıldığında\n" +" \"$satır $altyordam $dosyaadı\" döndürür; bu ek bilgi bir yığın izi " +"saÄŸlamak\n" +" için kullanılabilir.\n" +" \n" +" İFADE deÄŸeri, geçerli çerçeveden önce kaç tane çerçeve çaÄŸrılacağını\n" +" belirtir. Üst çerçeve 0. çerçevedir. \n" +" Çıkış Durumu:\n" +" İFADE geçersiz olmadığı ve bir kabuk iÅŸlevi çalıştırmadığı durumda 0 " +"döndürür." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME atanmamış" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "çok fazla argüman" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "boÅŸ dizini" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD boÅŸ" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "satır %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "uyarı: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: kullanım: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: seçenek bir argüman gerektirir" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: sayısal argüman gerekli" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s:yok" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: seçenek geçersiz" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: seçenek ismi geçersiz" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': geçerli bir belirteç deÄŸil" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "geçersiz sekizli sayı" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "geçersiz onaltılık sayı" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "geçersiz sayı" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: sinyal belirtimi geçersiz" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s': geçerli bir iÅŸ belirtimi veya süreç numarası deÄŸil" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: salt okunur deÄŸiÅŸken" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s aralık dışı" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argüman" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s aralık dışı" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: böyle bir iÅŸ yok" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: iÅŸ denetimi yok" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "iÅŸ denetimi yok" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: kısıtlı" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "kısıtlı" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: bir kabuk yerleÅŸiÄŸi deÄŸil" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "yazma hatası: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "uçbirim nitelikleri ayarlanırken hata: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "uçbirim nitelikleri alınırken hata: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: geçerli dizin alınırken hata: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: iÅŸ belirtimi belirsiz" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "bu sürümde yardım kullanılamıyor" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s:unset yapılamaz: %s salt okunur" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: unset yapılamaz" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: eylem adı geçersiz" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: tamamlama belirtimi yok" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "uyarı: -F seçeneÄŸi umduÄŸunuz gibi çalışmayabilir" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "uyarı: -C seçeneÄŸi umduÄŸunuz gibi çalışmayabilir" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "ÅŸuan tamamlama iÅŸlevi çalıştırılmıyor" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "sadece bir iÅŸlevde kullanılabilir" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: referans deÄŸeri bir dizi olamaz" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: nameref deÄŸiÅŸkeninin kendine yaptığı referanslara izin verilmiyor" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: çembersel isim referansı" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "`%s': dosya izleme tanımlayıcısı için geçersiz deÄŸer" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "iÅŸlev yapmak için `-f' kullanılamaz" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: salt okunur iÅŸlev" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: alıntılanmış bileÅŸik dizi ataması artık kullanılmıyor" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: dizi deÄŸiÅŸkenleri bu yolla iptal edilemez" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: iliÅŸkisel dizi, indisli diziye dönüştürülemez" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "özdevimli yükleme mümkün deÄŸil" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "%s paylaşımlı nesnesi açılamıyor: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "%2$s paylaşımlı nesnesinde %1$s bulunamıyor: %3$s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: özdevimli olarak yüklenmemiÅŸ" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "%s için yükleme ifadesi hata döndürdü (%d): yüklenmedi" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: özdevimli olarak yüklenmemiÅŸ" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: silinemiyor: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: bir dizin" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: bir dosya deÄŸil" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: dosya çok büyük" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: ikili dosya çalıştırılamıyor" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: çalıştırılamıyor: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "çıkış\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "oturum açma kabuÄŸu deÄŸil: `exit' kullanın" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "DurmuÅŸ iÅŸler var.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Çalışan görevler mevcut.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "komut yok" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "geçmiÅŸ belirtimi" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: geçici dosya açılamıyor: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "ÅŸimdiki" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "%d. iÅŸ, iÅŸ denetimsiz baÅŸlamış" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: kuraldışı seçenek -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: seçenek bir argüman gerektirir -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "çitleme iptal edildi" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: çitleme tablosu boÅŸ\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "eÅŸleÅŸme\tkomut\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Bu anahtar sözcükle eÅŸleÅŸen komutlar: `" +msgstr[1] "Bu anahtar sözcüklerle eÅŸleÅŸen komutlar: `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"`%s' ile ilgili bir yardım metni yok. `help help' veya `man -k %s' ya da " +"`info %s'.yazmayı deneyebilirsiniz." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: açılamıyor: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Bu kabuk komutları dahili olarak tanımlı. Listeyi görmek için `help'yazın.\n" +"`AD' gibi bir iÅŸlev hakkında bilgi almak için `help AD' yazınız.\n" +"Kabuk hakkında genel bir bilgi edinmek için `info bash'yazınız.\n" +"Bu listede olmayan komutlar hakkında bilgi bulmak isterseniz,\n" +"`man -k' veya `info' yazın.\n" +"\n" +"Bir ismin yanında bir yıldız imi (*) varsa komut iptal edilmiÅŸ demektir.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "tek bir -anrw kullanılabilir" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "geçmiÅŸ konumu" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: geçersiz zaman damgası" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: geçmiÅŸ yorumlaması baÅŸarısız" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib baÅŸarısız" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "`-x' ile baÅŸka seçenek kullanılamaz" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argümanlar süreç veya iÅŸ kimlikleri olmalı" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Bilinmeyen hata" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "ifade bekleniyordu" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: bir sıralı dizi deÄŸil" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: dosya tanıtıcı belirtimi geçersiz" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: dosya tanıtıcı geçersiz: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: geçersiz satır sayısı" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: geçersiz dizi kökeni" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: geçersiz geri çağırım niceliÄŸi" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "boÅŸ bir dizi deÄŸiÅŸken adı" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "dizi deÄŸiÅŸken desteÄŸi gerekli" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': biçim karakteri eksik" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "`%c': geçersiz zaman biçimi belirtimi" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "`%c': biçim karakteri geçersiz" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "uyarı: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "biçim ayıklama sorunu: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "\\x için onaltılık rakam eksik" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "evrensel kod rakamı eksik \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "baÅŸka dizin yok" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: geçersiz argüman" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "dizin yığını boÅŸ" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "dizin yığını indisi" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Geçerli hatırlanan dizinlerin listesini görüntüler. Dizinler\n" +" listeye yollarını `pushd' komutu ile bulurlar; ve liste boyunca\n" +" yedeÄŸi `popd' komutu ile alabilirsiniz.\n" +" \n" +" Seçenekler:\n" +" -c\tögelerin tümünü silerek dizin yığınını temizle\n" +" -l\tev dizininize göreceli dizinlerin yaklaşık iÅŸareti\n" +" \tile baÅŸlayan sürümlerini yazdırma\n" +" -p\tdizin yığınını her satırda bir girdi ile yazdır\n" +" -v\tdizin yığınını, yığındaki konumu ile her satıra\n" +" \tön ek yapılmış bir giriÅŸi yazdır\n" +" \n" +" Argümanlar:\n" +" +N\tDizinler tarafından gösterilen listenin solundan baÅŸlayarak\n" +" \tN'inci girdiyi gösterir. Seçenek kullanılmadığında sıfırdan baÅŸlar.\n" +" \n" +" -N\tDizinler tarafından gösterilen listenin sağından baÅŸlayarak\n" +"\tN'inci girdiyi gösterir. Seçenek kullanılmadığında sıfırdan baÅŸlar." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Dizin yığıtının en üstüne bir dizin ekler, ya da geçerli çalışma\n" +" dizini yığıtın tepesine gelecek ÅŸekilde yığıtı döndürür. Hiç\n" +" argüman verilmemiÅŸse en üstteki iki dizini yer deÄŸiÅŸtirir.\n" +" \n" +" Seçenekler\n" +" -n\tYığıta dizin eklenirken dizinin normal deÄŸiÅŸimini yoksayar\n" +" \tböylece sadece yığıt deÄŸiÅŸtirilir.\n" +" Argümanlar:\n" +" +N\t(`dirs' tarafından gösterilen listenin solundan saymaya\n" +" \tsıfırla baÅŸlandığında) N'inci dizin tepeye gelecek ÅŸekilde\n" +" \tyığıtı döndürür.\n" +" \n" +" -N\t(`dirs' tarafından gösterilen listenin sağından saymaya\n" +" \tsıfırla baÅŸlandığında) N'inci dizin tepeye gelecek ÅŸekilde\n" +" \tyığıtı döndürür.\n" +" \n" +" dizin\tDiZiNi yeni çalışma dizini yaparak dizin yığıtının\n" +" \ttepesine ekler.\n" +" \n" +" Dizin yığıtını `dirs' komutuyla görebilirsiniz." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Dizin yığıtından girdileri siler. Hiç argüman verilmemiÅŸse,\n" +" yığıtın en üstündeki dizini yığıttan kaldırır ve yığıtın\n" +" tepesinde kalan dizine geçer.\n" +" \n" +" Seçenekler:\n" +" -n\tdizinleri yığıttan silerken normal dizin deÄŸiÅŸikliÄŸini\n" +" \tengeller, böylece sadece yığıt deÄŸiÅŸtirilmiÅŸ olur. \n" +" \n" +" Argümanlar:\n" +" +N\t`dirs' tarafından gösterilen listenin solundan saymaya\n" +" \tsıfırla baÅŸlandığında N'inci girdiyi siler. ÖrneÄŸin,\n" +" \t`popd +0' ilk dizini `popd +1' ikincisini siler. \n" +" -N\t`dirs' tarafından gösterilen listenin sağından saymaya\n" +" \tsıfırla baÅŸlandığında N'inci girdiyi siler. ÖrneÄŸin,\n" +" \t`popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n" +" \n" +" Dizin yığıtını `dirs' komutuyla görebilirsiniz." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: zamanaşımı belirtimi geçersiz" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "okuma hatası: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "sadece bir iÅŸlev veya betikten kaynaklı olarak `return' yapılabilir" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "bir iÅŸlev ve bir deÄŸiÅŸken aynı anda unset yapılamaz" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: bir dizi deÄŸiÅŸkeni deÄŸil" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: bir iÅŸlev deÄŸil" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: export yapılamıyor" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "shift sayısı" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "kabuk seçenekleri aynı anda hem atanıp hem de iptal edilemez" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: kabuk seçenek ismi geçersiz" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "dosya ismi argüman gerekir" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: dosya yok" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "engellenemez" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "bir oturum açma kabuÄŸu engellenemez" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s `%s' için takma addır\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s bir kabuk anahtar sözcüğüdür\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s bir iÅŸlevdir\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s özel bir kabuk yerleÅŸiÄŸidir\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s bir kabuk yerleÅŸiÄŸidir\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s %s'dir\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s çitilmiÅŸ (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: sınırlama argümanı geçersiz" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': hatalı komut" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: sınır alınamıyor: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "sınır" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: sınır deÄŸiÅŸtirilemiyor: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "sekizlik sayı" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': simgesel kip iÅŸleci geçersiz" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': simgesel kip karakteri geçersiz" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " satır " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "son komut: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Çıkılıyor..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "BİLGİLENDİR:" + +#: error.c:462 +msgid "unknown command error" +msgstr "bilinmeyen komut hatası" + +#: error.c:463 +msgid "bad command type" +msgstr "hatalı komut türü" + +#: error.c:464 +msgid "bad connector" +msgstr "hatalı baÄŸlantı" + +#: error.c:465 +msgid "bad jump" +msgstr "hatalı sıçrama" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: baÄŸlanmamış deÄŸiÅŸken" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\agirdi beklerken zamanaşımı: auto-logout\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "/dev/null'dan standart girdiye yönlendirme yapılamaz: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': biçim karakteri geçersiz" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] hala mevcut" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "iletiÅŸim tüneli hatası" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: azami eval yuvalama sınırı aşıldı (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: azami kaynak yuvalama sınırı aşıldı (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: kısıtlı: komut adında `/' kullanamazsınız" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: komut yok" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: hatalı yorumlayıcı" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: ikili dosya çalıştırılamıyor: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "%s: bir kabuk yerleÅŸiÄŸidir" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "fd %d, fd %d olarak yinelenemiyor" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "ifade özyineleme düzeyi aşıldı" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "özyineleme yığıtı alttan taÅŸtı" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "ifadede sözdizimi hatası" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "deÄŸiÅŸken olmayana atama yapmaya çalışıldı" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "ifadede sözdizimi hatası" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "sıfırla bölme" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "yazılım hatası: bad expassign token" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "koÅŸullu ifade için `:' bekleniyordu" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "üs sıfırdan küçük" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "belirteç ön-arttırım veya ön-eksiltim sonrası bekleniyordu" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "eksik `)'" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "sözdizimi hatası: terim umuluyordu" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "sözdizimi hatası: geçersiz aritmetik iÅŸleci" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (hata belirtisi \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "geçersiz sayı tabanı" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: geçersiz satır sayısı" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "deÄŸer taban için fazla büyük" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: ifade hatası\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: üst dizinlere eriÅŸilemiyor" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"fd %d tanıtıcısındaki bash girdisi için yeni dosya tanıtıcısı ayrılamıyor" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: yeni fd %d için tampon zaten var" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp iletiÅŸim tüneli" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "çatallanan pid %d, çalışan iÅŸ %d içinde görünüyor" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "durdurulan %2$ld süreç gruplu iÅŸ %1$d siliniyor" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: %5ld (%s) program kimliÄŸi hala canlı olarak iÅŸaretli" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: böyle bir pid yok" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Sinyal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Bitti" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Durdu" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Durdu(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Çalışıyor" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Bitti(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Çıkış %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Bilinmeyen durum" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(çekirdek döküldü)" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "alt setpgid (ÅŸuradan: %ld ÅŸuraya: %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld bu kabuÄŸun bir alt sürecine ait deÄŸil" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: süreç %ld için kayıt yok" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: iÅŸ %d durdu" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: böyle bir iÅŸ yok" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: iÅŸ sonlanmış" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: iÅŸ %d zaten artalanda" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: belirsiz blok önlenmek için WNOHANG açılıyor" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: satır %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (çekirdek döküldü)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd artık: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp baÅŸarısız" + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: satır düzeni" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: satır düzeni" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "uçbirim süreç grunu (%d) ayarlanamaz" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "bu kabukta iÅŸ denetimi yok" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: kanaat doÄŸrulaması baÅŸarısız: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: kanaat doÄŸrulaması battı\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "bilinmeyen" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: serbest bırakılmış liste üstünde blok üste yazdı" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: zaten serbest bırakılmış blok argümanı ile çaÄŸrıldı" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: ayrılmamış blok argümanı ile çaÄŸrıldı" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: alttan taÅŸma saptandı; mh_nbytes aralık dışında" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: alttan taÅŸma saptandı; mh_nbytes aralık dışında" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: baÅŸlangıç ve son tomar boyutları farklı" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: ayrılmamış blok argümanı ile çaÄŸrıldı" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: alttan taÅŸma saptandı; mh_nbytes aralık dışında" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: alttan taÅŸma saptandı; mh_nbytes aralık dışında" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: baÅŸlangıç ve son tomar boyutları farklı" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: alloc tablosu FIND_ALLOC ile dolu olabilir mi?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p zaten ayrılmış olarak tabloda deÄŸil mi?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p zaten serbest bırakılmış olarak tabloda deÄŸil mi?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "geçersiz taban" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: konak bilinmiyor" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: geçersiz hizmet" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: hatalı aÄŸ yolu belirtimi" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "desteklenmeyen aÄŸ iÅŸlemleri" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: (%s) diline deÄŸiÅŸtirilemedi" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: ÅŸu dile (%s) deÄŸiÅŸtirilemedi: %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: yerel (%s) deÄŸiÅŸtirilemiyor" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: yerel (%s) deÄŸiÅŸtirilemiyor: %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "$_'de postanız var" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "$_'de yeni postanız var" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "%s'deki posta okundu\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "sözdizimi hatası: aritmetik ifadesi gerekli" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "sözdizimi hatası: `;' beklenmiyordu" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "sözdizimi hatası: `((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: hatalı yönerge türü %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "bu belgede %d satırında dosya sonu sonlandırılmış (istenen `%s')" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: yönlendirme yönergesi `%d' aralık dışında" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) SIZE_MAX deÄŸerini aşıyor (%lu): " +"satır kırpıldı" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "en fazla buraya belge sayısı aşıldı" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "`%c' için eÅŸleÅŸme aranırken beklenmedik dosya sonu" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "`]]' aranırken beklenmedik dosya sonu" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "koÅŸullu ifadede sözdizimi hatası: beklenmedik dizgecik `%s'" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "koÅŸullu ifadede sözdizimi hatası" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "beklenmedik dizgecik `%s', `)' umuluyordu" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "`)' umuluyordu" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "koÅŸullu tek terimli iÅŸlece beklenmedik argüman `%s'" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "koÅŸullu tek terimli iÅŸlece beklenmedik argüman" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "beklenmedik dizgecik `%s', koÅŸullu iki terimli iÅŸleç umuluyordu" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "koÅŸullu iki terimli iÅŸleç umuluyordu" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "koÅŸullu iki terimli iÅŸlece beklenmedik argüman `%s'" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "koÅŸullu iki terimli iÅŸlece beklenmedik argüman" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "koÅŸullu komutta beklenmeyen dizgecik `%c'" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "koÅŸullu komutta beklenmeyen dizgecik `%s'" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "koÅŸullu komutta beklenmeyen dizgecik %d" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "beklenmeyen dizgecik `%s' yakınında sözdizimi hatası" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "`%s' yakınında sözdizimi hatası" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "sözdizimi hatası: beklenmeyen dosya sonu" + +#: parse.y:6365 +msgid "syntax error" +msgstr "sözdizimi hatası" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "KabuÄŸu bırakmak için \"%s\" kullanın.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "`)' için eÅŸleÅŸme aranırken beklenmedik dosya sonu" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: `%s' iÅŸlevi yok" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: muhtemel yeniden deneme döngüsü" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: hatalı baÄŸlayıcı `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: geçersiz dosya tanımlayıcısı" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: BOÅž dosya iÅŸaretçisi" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: `%c': geçersiz biçim karakteri" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "dosya tanıtıcı aralık dışında" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: belirsiz yönlendirme" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: mevcut dosyanın üzerine yazılamıyor" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: kısıtlı: çıktı yönlendirilemiyor" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "belge için geçici dosya oluÅŸturulamıyor: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: fd deÄŸiÅŸkene atanamıyor" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port aÄŸ olmaksızın desteklenmiyor" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "yönlendirme hatası: fd yinelenemiyor" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "/tmp bulunamadı, lütfen oluÅŸturun!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp geçerli bir dizinin adı olmalıdır" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: geçersiz seçenek" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "uid %d olarak ayarlanamıyor: etkin uid %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "gid %d olarak ayarlanamıyor: etkin gid %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "hata ayıklayıcı baÅŸlatılamadı, hata ayıklama devre dışı" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: Bir dizin" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Hiç ismim yok!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, sürüm %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Kullanım:\t%s [GNU uzun seçeneÄŸi] [seçenek] ...\n" +"\t%s [GNU uzun seçeneÄŸi] [seçenek] betik-dosyası ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU uzun seçenekleri:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Kabuk seçenekleri:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD veya -c KOMUT veya -O shopt_seçeneÄŸi\t\t(sadece çaÄŸrı için)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ya da -o seçeneÄŸi\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' " +"yazın.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Kabuk yerleÅŸik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" +"Yazılım hatalarını raporlamak için `bashbug' komutunu kullanınız.\n" +"Çeviri hatalarını ise adresine bildiriniz.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "bash ana sayfası: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"GNU yazılımı kullanımı hakkında genel yardım: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: geçersiz iÅŸlem" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Bogus sinyali" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Engelle" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Kes" + +#: siglist.c:58 +msgid "Quit" +msgstr "Çık" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Geçersiz talimat" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT izle/tuzak" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Talimatı DURDUR" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT talimatı" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Kayan nokta istisnası" + +#: siglist.c:86 +msgid "Killed" +msgstr "Öldürüldü" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Veriyolu hatası" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Bölünme hatası" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Bozuk sistem çağırımı" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Bozuk iletiÅŸim tüneli" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Çalar saat" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Sonlandırıldı" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Acil GÇ koÅŸulu" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Durduruldu (sinyal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Devam et" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Alt ölümü veya durdurulma" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Durduruldu (tty giriÅŸi)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Durduruldu (tty çıkışı)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "G/Ç hazır" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU sınırı" + +#: siglist.c:154 +msgid "File limit" +msgstr "Dosya sınırı" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarm (sanal)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarm (profil)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Pencere deÄŸiÅŸtirildi" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Kayıt kilidi" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Kullanıcı sinyali 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Kullanıcı sinyali 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT girdi verisi bekliyor" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "yakın güç baÅŸarısızlığı" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "yakın sistem çökmesi" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "süreci baÅŸka bir iÅŸlemciye aktar" + +#: siglist.c:198 +msgid "programming error" +msgstr "programlama hatası" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT izleyici kipine geçildi" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT izleyici kipi kapatıldı" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT ses sırası tamamlandı" + +#: siglist.c:214 +msgid "Information request" +msgstr "Bilgi talebi" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Bilinmeyen Sinyal #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "hatalı ikame: %2$s içinde kapatan `%1$s' yok" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: dizi üyesine liste atanamaz" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "süreç ikamesi için borulama yapılamıyor" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "süreç ikamesi için alt süreç yapılamıyor" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "isimli boru %s okumak için açılamıyor" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "isimli boru %s yazmak için açılamıyor" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "isimli boru %s fd %d olarak yinelenemiyor" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "komut ikamesi: girdideki null bayt yoksayıldı" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "komut ikamesi için boru yapılamıyor" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "komut ikamesi için alt süreç yapılamıyor" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: boru fd 1 olarak yinelenemiyor" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: dosya izleme tanımlayıcısı için geçersiz deÄŸer" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: geçersiz dolaylı yayılım" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: geçersiz deÄŸiÅŸken adı" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametre boÅŸ ya da deÄŸer atanmamış" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametre boÅŸ ya da deÄŸer atanmamış" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: altdizge ifadesi < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: hatalı ikame" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: bu yolla atama yapılmaz" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"kabuk gelecekteki sürümlerinde, bir aritmetik ikame olarak deÄŸerlendirmeye " +"zorlayacak" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "hatalı ikame: %s içinde kapatan \"`\" yok" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "eÅŸleÅŸme yok: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "argüman bekleniyordu" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: tamsayı ifadesi bekleniyordu" + +#: test.c:265 +msgid "`)' expected" +msgstr "`)' bekleniyordu" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "`)' bekleniyordu, %s bulundu" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: iki terimli iÅŸleci bekleniyordu" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: tek terimli iÅŸleci bekleniyordu" + +#: test.c:881 +msgid "missing `]'" +msgstr "eksik `]'" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "sözdizimi hatası: `;' beklenmiyordu" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "geçersiz sinyal numarası" + +#: trap.c:325 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: azami eval yuvalama sınırı aşıldı (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps:trap_list[%d] içinde hatalı deÄŸer: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler:hatalı sinyal %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "`%s'nin iÅŸlev tanımının içeri aktarılmasında hata" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "kabuk düzeyi (%d) çok yüksek, 1 yapılıyor" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: geçerli etki alanında hiç iÅŸlev baÄŸlamı yok" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: deÄŸiÅŸkene deÄŸer atanmamış olabilir" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: isim referansına tamsayı ataması" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: geçerli etki alanında hiç iÅŸlev baÄŸlamı yok" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s boÅŸ exportstr içeriyor" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "%2$s için exportstr içinde geçersiz karakter %1$d" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "%s için exportstr içinde `=' yok" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: kabuk deÄŸiÅŸkenlerinin başı bir iÅŸlev baÄŸlamı deÄŸil" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: genel deÄŸiÅŸkenler baÄŸlamı yok" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: kabuk deÄŸiÅŸkenlerinin başı bir geçici ortam etki alanı deÄŸil" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: DOSYA olarak açılamaz" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: dosya izleme tanımlayıcısı için geçersiz deÄŸer" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: uyumlulukdeÄŸeri aralık dışı" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Åž." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Lisans GPLv3+: GNU GPL sürüm 3 veya sonrası \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, sürüm %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Bu ücretsiz bir yazılımdır; deÄŸiÅŸtirmekte ve dağıtmakta özgürsünüz." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "İzin verilen yasalar kapsamında hiçbir GARANTİSİ BULUNMAMAKTADIR." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: %lu bayt ayrılamıyor" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: %lu bayt ayrılamıyor" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [isim[=deÄŸer] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] isim [isim ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVSX] [-m anahtar eÅŸleniÄŸi] [-f dosyaadı] [-q isim] [-u isim] [-r " +"anahtar sırası] [-x keyseq:kabuk-komutu] [keyseq:satırokuma-iÅŸlevi veya " +"satırokuma-komutu]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [kabuk-dahili [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [ifade]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [dizin]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [isim[=deÄŸer] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] isim[=deÄŸer] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [seçenek] isim[=deÄŸer] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f dosyaadı] [isim ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts optstring isim [arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a isim] [komut [argümanlar ...]] [yönlendirme ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ename] [-lnr] [ilk] [son] veya fc -s [pat=rep] [komut]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [görev_tan]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [görev_tan ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p yoladı] [-dt] [isim ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [desen ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d baÅŸlangıç] [n] veya history -anrw [dosyaadı] veya history -" +"ps arg [arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [görevtan ...] veya jobs -x komut [argü]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [görevtan ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sinspec | -n signum | -sigspec] pid | görevtan ... veya kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a dizi] [-d sonlandırıcı] [-i metin] [-n nkarakter] [-N " +"nkarakter] [-p istem] [-t zamanaşımı] [-u fd] [isim ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [isim ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [isim[=deÄŸer] ...] veya export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [isim[=deÄŸer] ...] veya readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source dosyaadı [argümanlar]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". dosyaadı [argümanlar]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [ifade]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] sinyal_tan ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] isim [isim ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [sınır]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [kip]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-n] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for İSİM [in KELİMELER ... ] ; do KOMUTLAR; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( ifade1; ifade2; ifade3 )); do KOMUTLAR; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select İSİM [in KELİMELER ... ;] do KOMUTLAR; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] zamantüneli" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case KELİME in [DESEN [| DESEN]...) KOMUTLAR ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if KOMUTLAR; then KOMUTLAR; [ elif KOMUTLAR; then KOMUTLAR; ]... [ else " +"KOMUTLAR; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while KOMUTLAR; do KOMUTLAR; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until KOMUTLAR; do KOMUTLAR; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [isim] command [yönlendirmeler]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function isim { KOMUTLAR ; } veya isim () { KOMUTLAR ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ KOMUTLAR ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "görev_tan [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( ifade ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ ifade ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Bazı kabuk deÄŸiÅŸkenlerinin isim ve anlamları" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dizin]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [optname ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] biçim [argümanlar]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o seçenek] [-A iÅŸlem] [-G genelyol] [-" +"W kelimelistesi] [-F iÅŸlev] [-C komut] [-X süzgeçyolu] [-P önek] [-S sonek] " +"[isim ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o seçenek] [-A iÅŸlem] [-G genelyol] [-W " +"kelimelistesi] [-F iÅŸlev] [-C komut] [-X süzgeçyolu] [-P önek] [-S sonek] " +"[kelime]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o seçenek] [-DE] [isim ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d sonlandrc] [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C " +"geriçağırım] [-c parçacık] [dizi]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c " +"parçacık] [dizi]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Rumuz tanımla veya görüntüle.\n" +" \n" +" `alias' argümansız kullanıldığında standart çıktıda kullanılabilecek " +"tüm\n" +" rumuzları `alias İSİM=DEÄžER' biçiminde listeler.\n" +" \n" +" DiÄŸer durumda DEÄžERi verilmiÅŸ her İSİM için bir rumuz tanımlanır.\n" +" DEÄžERdeki boÅŸluk, rumuz geniÅŸletildiÄŸinde sonraki kelimenin rumuz\n" +" ikamesi için denetlenmesine sebep olur.\n" +" \n" +" Seçenekler:\n" +" -p\tTüm rumuzları tekrar kullanılabilir biçimde listele\n" +" \n" +" Çıkış Durumu:\n" +" Hiçbir ÅŸeyin rumuzu olmayan bir İSİM verilmedikçe alias doÄŸru döndürür." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Tanımlı rumuzlar listesinden her İSMİ kaldır.\n" +" \n" +" Seçenekler:\n" +" -a\ttüm rumuz tanımlamalarını kaldır\n" +" \n" +" İSİM mevcut olmayan bir rumuz olmadığı takdirde doÄŸru\n" +" döndür." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Readline tuÅŸ atamalarını ve deÄŸiÅŸkenlerini ayarla.\n" +" \n" +" Bir tuÅŸ dizilimini bir Readline iÅŸlevine veya makrosuna baÄŸlar ya da\n" +" bir Readline deÄŸiÅŸkeni atar. Seçeneksiz argüman sözdizimi ~/.initrc\n" +" içinde bulunana eÅŸdeÄŸerdir, ama tek bir argüman olarak aktarılması\n" +" gerekir: bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Seçenekler:\n" +" -m TUÅžDİZİSİ Bu komut süresince kısayol olarak TUÅžDİZİSİ\n" +" kullanılır. Olası kısayol isimleri: emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi,\n" +" vi-move, vi-command ve vi-insert.\n" +" -l İşlev isimlerini listeler.\n" +" -P İşlev isimlerini ve kısayolları listeler.\n" +" -p İşlev isimlerini ve kısayolları, girdi olarak\n" +" kullanılabilir biçimde listeler.\n" +" -S Makroları çağıran tuÅŸ dizilerini ve deÄŸerlerini\n" +" listeler\n" +" -s Makroları çağıran tuÅŸ dizilerini ve deÄŸerlerini\n" +" girdi olarak kullanılabilir biçimde listeler. " +"-V DeÄŸiÅŸken isimlerini ve deÄŸerlerini listeler.\n" +" -v DeÄŸiÅŸken isimlerini ve deÄŸerlerini girdi olarak\n" +" kullanılabilir biçimde listeler.\n" +" -q İŞLEV İsmi belirtilen İŞLEVi çağıran tuÅŸlar hakkında " +"sorgu.\n" +" -u İŞLEV İsmi belirtilen İŞLEVi çağıran tüm tuÅŸ " +"kısayollarını\n" +" kaldırır.\n" +" -r TUÅžDİZİSİ TUÅžDİZİSİ için mevcut kısayolları kaldırır.\n" +" -x TUÅžDİZİSİ:KABUK-KOMUTU\tTUÅžDİZİSİnin her giriliÅŸinde KABUK-" +"KOMUTUnun\n" +" \t\t\t\tçalıştırılmasını saÄŸlar.\n" +" -X TuÅŸ dizilerini -x ve iliÅŸkili komutlarını tekrar " +"bir girdi olarak kullanılabilecek\n" +" biçimde listeler.\n" +" \n" +" Çıkış Durumu:\n" +" tanınmayan bir seçenek girilmediÄŸi veya bir hata oluÅŸmadığı durumda 0 " +"döndürür." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"for, while veya until döngülerinden çık.\n" +" \n" +" Bir FOR, WHILE veya UNTIL döngüsünden çık. EÄŸer N belirtilmiÅŸse, N " +"iliÅŸkili\n" +" döngüden çık.\n" +" \n" +" Çıkış Durumu:\n" +" N, 1'e eÅŸit veya daha fazla olmadığında çıkış durumu 0'dır." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"for, while veya until döngülerine devam et.\n" +" \n" +" İliÅŸkili FOR, WHILE veya UNTIL döngüsünün sonraki adımına devam eder.\n" +" N tanımlanmışsa, N'inci iliÅŸkili döngüye devam eder.\n" +" \n" +" Çıkış Durumu:\n" +" N, 1 veya daha büyük olmadığında çıkış durumu 0'dır." + +#: builtins.c:354 +#, fuzzy +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Kabuk dahillerini çalıştır.\n" +" \n" +" Komut araması yapmadan KABUK-DAHİLİ, ARGÜMANLAR argümanları ile\n" +" çalıştır. Bu, bir KABUK-DAHİLİ, bir kabuk iÅŸlevi olarak tekrar uygulamak " +"isteyip\n" +" iÅŸlev içerisinde dahili olanı da çalıştırmanız gerektiÄŸinizde " +"kullanışlıdır.\n" +" \n" +" Çıkış Durumu:\n" +" KABUK-DAHİLİnin çıkış durumunu veya eÄŸer KABUK-DAHİLİ deÄŸilse false " +"döndürür." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Geçerli alt yordam çaÄŸrısının baÄŸlamını döndürür.\n" +" \n" +" İFADE olmadan, \"$satır $dosyaadı\" döndürür. İFADE ile " +"kullanıldığında\n" +" \"$satır $altyordam $dosyaadı\" döndürür; bu ek bilgi bir yığın izi " +"saÄŸlamak\n" +" için kullanılabilir.\n" +" \n" +" İFADE deÄŸeri, geçerli çerçeveden önce kaç tane çerçeve çaÄŸrılacağını\n" +" belirtir. Üst çerçeve 0. çerçevedir. \n" +" Çıkış Durumu:\n" +" İFADE geçersiz olmadığı ve bir kabuk iÅŸlevi çalıştırmadığı durumda 0 " +"döndürür." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Kabuk çalışma dizinini deÄŸiÅŸtir.\n" +" \n" +" Geçerli dizini DİZİN olarak deÄŸiÅŸtir. Öntanımlı dizin kabuk deÄŸiÅŸkeninin " +"EV\n" +" dizini deÄŸeridir.\n" +" \n" +" CDPATH deÄŸiÅŸkeni, DİZİN içeren dizinler için arama yolunu tanımlar. " +"CDPATH\n" +" için alternatif dizin isimleri iki nokta (:) ile ayrılır.\n" +" BoÅŸ dizin adı, geçerli dizinle aynıdır. EÄŸer DİZİN bölü (/) ile " +"baÅŸlıyorsa, CDPATH\n" +" kullanılmaz.\n" +" \n" +" EÄŸer dizin bulunamazsa ve kabuk seçeneÄŸi `cdable_vars' ayarlanmışsa, " +"kelime\n" +" bir deÄŸiÅŸken adı olarak varsayılır. EÄŸer deÄŸiÅŸken bir deÄŸere sahipse, " +"deÄŸeri DİZİN\n" +" için kullanılır\n" +" \n" +" Seçenekler:\n" +" -L\tsembolik baÄŸlantıların takip edilmesini zorla: '..' " +"örneklerinin\n" +" \t\tiÅŸlenmesinden sonra DİZİN içindeki sembolik baÄŸlantıları çöz\n" +" -P\tsembolik baÄŸlantıları takip etmeden fiziksel dizini kullan: '..' " +"örneklerinin\n" +" \t\tiÅŸlenmesinden önce DİZİN içindeki sembolik baÄŸlantıları çöz\n" +" -e\teÄŸer -P seçeneÄŸi belirtilmiÅŸse ve geçerli çalışma dizini " +"baÅŸarılı ÅŸekilde\n" +" \tbelirlenemiyorsa, sıfır olmayan bir durumla çık\n" +" -@\tdestekleyen sistemlerde, dosya niteliklerini içeren bir dizin " +"olarak uzatılmış\n" +" niteliklere sahip bir dosya sun \n" +" Öntanımlı olan `-L' tanımlanmış gibi sembolik baÄŸlantıları takip " +"etmektir.\n" +" \n" +" Çıkış Durumu:\n" +" EÄŸer dizin deÄŸiÅŸmiÅŸse ve -P kullanıldığında $PWD baÅŸarılı ayarlanırsa 0; " +"diÄŸer durumda\n" +" sıfır olmayan bir deÄŸer döndürür." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Geçerli çalışma dizininin ismini yazdır.\n" +" \n" +" Seçenekler:\n" +" -L\teÄŸer geçerli çalışma dizinini isimlendirmiÅŸse $PWD deÄŸerini " +"yazdır\n" +" -P\thiçbir sembolik baÄŸlantı kullanmadan fiziksel dizini yazdır\n" +" \n" +" Öntanımlı olarak `pwd', `-L' tanımlanmış ÅŸekilde davranır.\n" +" \n" +" Çıkış Durumu:\n" +" Dizin okunamadığı veya geçersiz seçenek verilmediÄŸi takdirde 0 döndürür." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"BoÅŸ komut.\n" +" \n" +" Etkisizdir; bu komut birÅŸey yapmaz.\n" +" \n" +" Çıkış Durumu:\n" +" Her zaman baÅŸarılıdır." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Bir baÅŸarılı sonuç dönrürür.\n" +" \n" +" Çıkış Durumu:\n" +" Her zaman baÅŸarılıdır." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"BaÅŸarısız bir sonuç döndür.\n" +" \n" +" Çıkış Durumu:\n" +" Her zaman baÅŸarısızdır." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Basit bir komut çalıştır veya komutlar hakkında bilgi görüntüle.\n" +" \n" +" KOMUTU ARGümanları ile kabuk iÅŸlevi aramasını ihmal ederek çalıştırır " +"veya\n" +" belirtilen KOMUTlar hakkında bilgi görüntüler. Aynı isimde bir iÅŸlev " +"varsa\n" +" diskte komutları çalıştırmak için kullanılabilir.\n" +" \n" +" Seçenekler:\n" +" -p YOL için, tüm standart yardımcıları bulabilmek için bir " +"öntanımlı deÄŸer\n" +" \tkullan\n" +" -v `type' dahilisine benzer bir KOMUT açıklaması göster\n" +" -V her KOMUTun fazla açıklamasını göster\n" +" \n" +" Çıkış Durumu:\n" +" KOMUTun çıkış durumunu döndürür. KOMUT bulunamazsa baÅŸarısız olur." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"DeÄŸiÅŸken deÄŸer ve niteliklerini ayarla.\n" +" \n" +" DeÄŸiÅŸkenleri ayarla ve nitelik ver. EÄŸer İSİM verilmemiÅŸse, tüm " +"deÄŸiÅŸkenlerin, niteliklerini ve deÄŸerlerini görüntüle.\n" +" \n" +" Seçenekler:\n" +" -f\teylemi veya iÅŸlev ismi ile tanımları gösterimini kısıtla\n" +" -F\tsadece iÅŸlev isim gösterimlerini kısıtla (ek olarak satır sayısı " +"ve hata ayıklarken\n" +" \t\tkaynak dosyayı)\n" +" -g\tbir kabuk fonksiyonunda kullanıldığında evrensel deÄŸiÅŸken " +"oluÅŸtur,\n" +" \t\taksi takdirde yoksayılır\n" +" -p\ther İSİMin deÄŸeri ve niteliklerini görüntüle\n" +" \n" +" Nitelik ayarlayan seçenekler:\n" +" -a\tİSİMleri indisli diziler yapmak için (destekleniyorsa)\n" +" -A\tİSİMleri iliÅŸkisel dizi yapmak için (destekleniyorsa)\n" +" -i\tİSİMleri `integer' niteliÄŸi sahibi yapmak için\n" +" -l\tİSİMleri atamada küçük harfe dönüştürmek için\n" +" -n\tİSİMi deÄŸeriyle isimlendirilmiÅŸ bir deÄŸiÅŸkene referans yapmak " +"için\n" +" -r\tİSİMleri salt okunur yapmak için\n" +" -t\tİSİMlerin `trace' niteliÄŸi sahibi yapmak için\n" +" -u\tİSİMleri atamada büyük harfe dönüştürmek için\n" +" -x\tİSİMleri dışarı çıkarabilir yapmak için\n" +" \n" +" `-' yerine `+' kullanmak belirtilen niteliÄŸi kapatır.\n" +" \n" +" Tamsayı niteliÄŸine sahip deÄŸiÅŸkenler, bir deÄŸere atandıklarında " +"aritmetik deÄŸerlendirmeye tabi tutulurlar (`let' komutuna bakın).\n" +" \n" +" Bir fonksiyonda kullanıldığında, `declare' İSİMleri, `local' komutu\n" +"gibi yerel\n" +" yapar. `-g' seçeneÄŸi bu davranışı iptal eder.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz bir deÄŸer saÄŸlanmadığı veya deÄŸiÅŸken atama hatası olmadığı " +"sürece\n" +" baÅŸarılı döner." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"DeÄŸiÅŸken isim ve niteliklerini ayarla.\n" +" \n" +" `declare' ile eÅŸ anlamlıdır. Bkz. `help declare'." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Yerel deÄŸiÅŸkenleri tanımla.\n" +" \n" +" İSİM adıyla bir yerel deÄŸiÅŸken oluÅŸtur ve DEÄžER ata. SEÇENEK `declare'\n" +" tarafından kabul edilen herhangi bir seçenek olabilir.\n" +" \n" +" Yerel deÄŸiÅŸkenler sadece bir iÅŸlev içerisinde kullanılabilirler ve " +"tanımlandıkları\n" +" iÅŸleve ve alt iÅŸlevlerine görünebilirler.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz bir seçenek verilmediÄŸinde, bir deÄŸiÅŸken hatası oluÅŸmadığında " +"veya\n" +" kabuk bir iÅŸlev çalıştırmıyorsa baÅŸarılı döner." + +#: builtins.c:557 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Argümanları standart çıktıya yaz.\n" +" \n" +" ARGümanları yeni satırla izlenen standart çıktıda bir boÅŸluk karakteri\n" +" kullandıktan sonra göster.\n" +" \n" +" Seçenekler:\n" +" -n\tyeni satıra baÅŸvurma\n" +" -e\ttakip eden ters bölü kaçışlarının yorumlanmasını etkinleÅŸtir\n" +" -E\tters bölü kaçışlarının yorumlanmasını açıkça gizle\n" +" \n" +" `echo' aÅŸağıdaki ters bölü kaçışlı karakterleri yorumlar:\n" +" \\a\tuyarı (zil)\n" +" \\b\tgerisilme\n" +" \\c\tsonraki çıktıları gizle\n" +" \\e\tkaçış karakteri\n" +" \\E\tkaçış karakteri\n" +" \\f\tform besleme\n" +" \\n\tyeni satır\n" +" \\r\tsatırbaşı\n" +" \\t\tyatay sekme\n" +" \\v\tdikey sekme\n" +" \\\\\tters bölü\n" +" \\0nnn\tASCII kodu NNN (sekizlik) olan karakter. NNN 0-3 arası " +"sekizli\n" +" \t\trakamlardan oluÅŸabilir.\n" +" \\xHH\tdeÄŸeri HH (onaltılık) olan sekiz bit karakter. HH bir veya iki\n" +" \t\tonaltılık rakam olabilir\n" +" \n" +" Çıkış Durumu:\n" +" Yazma hatası oluÅŸmadığı takdirde baÅŸarılı döner." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Argümanları standart çıktıya yaz.\n" +" \n" +" ARGümanları yeni satır ile takip eden standart çıktıda görüntüle.\n" +" \n" +" Seçenekler:\n" +" -n\tyeni bir satıra baÅŸvurma\n" +" \n" +" Çıkış Durumu:\n" +" Bir hata oluÅŸmadığı sürece baÅŸarılı döner." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Kabuk yerleÅŸiklerini etkinleÅŸtir/devre dışı bırak.\n" +" \n" +" Dahili kabuk komutlarını etkinleÅŸtirir ve devre dışı bırakır. Devre " +"dışı\n" +" bırakmak bir kabuk yerleÅŸiÄŸi ile aynı isme sahip bir disk komutunu tam\n" +" bir yol adı kullanmadan çalıştırmanızı saÄŸlar. \n" +" Seçenekler:\n" +" -a\ttüm yerleÅŸikler listesini etkin olup olmadıkları bilgisi ile " +"yazdır\n" +" -n\ther İSİMi devre dışı bırak veya devre dışı olanları listele\n" +" -p\tyerleÅŸik listesini tekrar kullanılabilir biçimde yazdır\n" +" -s\tsadece Posix `özel' yerleÅŸiklerinin isimlerini yazdır\n" +" \n" +" Hareketli yüklemeyi denetleyen seçenekler:\n" +" -f\tİSİM yerleÅŸiÄŸini paylaşılan DOSYAADI nesnesinden yükle\n" +" -d\t-f ile yüklenmiÅŸ bir yerleÅŸiÄŸi kaldır\n" +" \n" +" Seçenek olmazsa her İSİM etkinleÅŸtirilir.\n" +" \n" +" Kabuk yerleÅŸiÄŸi sürümü yerine $PATH içerisinde bulunan `test' kullanmak\n" +" için `enable -n test' yazın.\n" +" \n" +" Çıktı Durumu:\n" +" İSİM bir kabuk yerleÅŸiÄŸi deÄŸilse ve hata oluÅŸmazsa baÅŸarılı döner." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Argümanları kabuk komutu olarak çalıştır.\n" +" \n" +" ARGümanları tek bir dizgeye birleÅŸtir, sonucu kabuÄŸa girdi olarak " +"kullan,\n" +" ve sonuçlanan komutları çalıştır.\n" +" \n" +" Çıkış Durumu:\n" +" Komutun çıkış durumunu döndürür veya komut boÅŸsa baÅŸarılı döner." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Seçenek argümanlarını ayıklar.\n" +" \n" +" Getopts kabuk betikleri tarafından konumsal parametreleri " +"çözümlemekte\n" +" kullanılır.\n" +" \n" +" SÇNDİZGESİ tanınan seçenek karakterlerini içerir; bir karakterden " +"sonra\n" +" bir ikinokta imi (:) geliyorsa seçeneÄŸin ondan bir boÅŸlukla ayrılmış " +"bir\n" +" argümana sahip olacağı umulur.\n" +" \n" +" Her çaÄŸrılışında getopts iÅŸlenecek sonraki argümanın indisini " +"OPTIND\n" +" kabuk deÄŸiÅŸkenine ve AD deÄŸiÅŸkenini de mevcut deÄŸilse " +"ilklendirerek\n" +" sonraki seçeneÄŸi $AD kabuk deÄŸiÅŸkenine yerleÅŸtirir. OPTIND kabuÄŸun ya " +"da\n" +" bir kabuk betiÄŸinin her çaÄŸrılışında 1 ile ilklendirilir. Bir " +"seçenek\n" +" bir argüman gerektirdiÄŸinde getopts argümanı OPTARG " +"deÄŸiÅŸkenine\n" +" yerleÅŸtirir.\n" +" \n" +" getopts hataları iki yolla raporlayabilir. EÄŸer SÇNDİZGESİnin " +"ilk\n" +" karakteri bir ':' ise sessiz hata raporlaması kullanılır. Bu " +"kipte\n" +" hiçbir hata iletisi basılmaz. Bir geçersiz seçenek saptanırsa " +"getopt\n" +" OPTARG'a bulunan seçenek karakterini yerleÅŸtirir. Bir gerekli " +"argüman\n" +" verilmemiÅŸse, getopts AD'a bir ':' yerleÅŸtirir. Getopts sessiz " +"kipte\n" +" deÄŸilse ve geçersiz bir seçenek görüldüğünde, getopts ? karakterini " +"AD'a\n" +" yerleÅŸtirir ve OPTARG deÄŸiÅŸkenini kaldırır. EÄŸer bir gerekli " +"argüman\n" +" bulunamazsa ve getopts sessiz kipte deÄŸilse AD'a ? " +"karakteri\n" +" yerleÅŸtirilir, OPTARG kaldırılır ve bir tanı iletisi basılır.\n" +" \n" +" OPTERR deÄŸiÅŸkeninin deÄŸeri 0 ise SÇNDİZGESİnin ilk karakteri bir " +"':'\n" +" olmasa bile hata iletileri gösterilmez. OPTERR deÄŸiÅŸkeninin " +"öntanımlı\n" +" deÄŸeri 1'dir.\n" +" \n" +" Getopts normalde konumsal parametreleri ($0 - $9) çözümlese de " +"baÅŸka\n" +" argümanlar verilmiÅŸse bunları çözümler.\n" +" \n" +" Çıktı Durumu:\n" +" Bir seçenek bulunduÄŸunda baÅŸarılı, seçenek sonuna gelindiÄŸinde veya " +"bir hata oluÅŸtuÄŸunda baÅŸarısız döner.\n" +" encountered or an error occurs." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"KabuÄŸu verilen komutla deÄŸiÅŸtir.\n" +" \n" +" KOMUTU, belirtilen program ile deÄŸiÅŸtirerek çalıştır.\n" +" ARGÜMANLAR, KOMUTUN argümanları olur. EÄŸer KOMUT belirtilmemiÅŸse, tüm\n" +" yönlendirmeler geçerli kabukta uygulanır.\n" +" \n" +" Seçenekler:\n" +" -a isim\tİSMİ, KOMUTun sıfırıncı argümanına ata\n" +" -c\tKOMUTu boÅŸ bir ortamla çalıştır\n" +" -l\tKOMUTun sıfırıncı argümanına bir çizgi koy\n" +" \n" +" EÄŸer komut çalıştırılamıyorsa, `execfail' ayarlanmadığı sürece " +"etkileÅŸimsiz kabuk\n" +" çıkış yapar.\n" +" \n" +" Çıkış Durumu:\n" +" KOMUT bulunduÄŸu ve bir yönlendirme hatası olmadığı sürece baÅŸarılı döner." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Exit the shell.\n" +" \n" +" N durumu ile dönerek kabuk çıkar. N verilmezse son çalıştırılan komutun\n" +" çıkış durumu döner." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Oturum kabuÄŸundan çık.\n" +" \n" +" N durumuyla bir oturum kabuÄŸundan çıkar. EÄŸer çalıştırılmamışsa oturum\n" +" kabuÄŸunda bir hata döndürür." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"GeçmiÅŸ listesindeki komutları görüntüle veya çalıştır\n" +" \n" +" fc, komut geçmiÅŸi listesindeki komutları listelemek, düzenlemek " +"ve\n" +" yeniden çalıştırmak için kullanılır. İLK ve SON olarak numara " +"vererek\n" +" bir aralık belirtilebileceÄŸi gibi İLK bir dizge de olabilir, bu " +"takdirde\n" +" bu dizge ile baÅŸlayan en son komut anlamına gelir.\n" +" \n" +" Seçenekler:\n" +" -e DÜZENLEYİCİ ile hangi düzenleyicinin kullanılacağı belirtilir.\n" +" \t\tÖntanımlısı FCEDIT ardından EDITOR ve vi'dir.\n" +" -l\tile komutlar stardart çıktıya listelenir.\n" +" -n\tile listede satır numaraları bulunmaz.\n" +" -r\tile komutlar ters sırada (en yeniler listesi olarak) listelenir\n" +" \n" +" `fc -s [ESKİ=YENİ] [KOMUT]' biçiminde, ESKİ=YENİ ikamesi yapıldıktan\n" +" sonra komut yeniden çalıştırılır.\n" +" \n" +" Bununla kullanılacak yararlı bir rümuz r='fc -s' olurdu.\n" +" Böylece `r cc' yazarak `cc' ile baÅŸlayan son komut,\n" +" r' yazarak en son komut çalıştırılabilir.\n" +" \n" +" Çıktı Durumu:\n" +" BaÅŸarılı veya çalıştırılan komut durumu döndürülür; hata oluÅŸtuÄŸunda " +"sıfır harici deÄŸer döner." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"İşi ön plana taşı.\n" +" \n" +" İŞ_BELİRTİMİni önalana yerleÅŸtirir ve onu o an ki iÅŸ yapar.\n" +" EÄŸer İŞ_BELİRTİMİ belirtilmemiÅŸse kabuk iÅŸ belirtimi olarak\n" +" o an ki iÅŸi kullanır.\n" +" \n" +" Çıktı Durumu:\n" +" Ön plana yerleÅŸtirilmiÅŸ komutun durumu veya hata olduÄŸunda baÅŸarısız." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"İşi arkaplana taşı.\n" +" \n" +" `&' ile baÅŸlatılmışçasına İŞ_BELİRTİMİni artalana yerleÅŸtirir.\n" +" İŞ_BELİRTİMİ verilmemiÅŸse, iÅŸ belirtimi olarak o an ki iÅŸ " +"kullanılır. \n" +" Çıktı Durumu:\n" +" İş kontrolü etkin olmadığı veya bir hata oluÅŸmadığı sürece baÅŸarılı " +"döner." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" + +#: builtins.c:818 +#, fuzzy +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Dahili komutlar hakkında bilgi görüntüle.\n" +" \n" +" Dahili komutların özetlerini görüntüler. EÄŸer DESEN belirtilmiÅŸse,\n" +" DESEN ile eÅŸleÅŸen tüm komutlar hakkında ayrıntılı bilgi verir, aksi\n" +" halde, yardım konuları yazdırılır.\n" +" \n" +" Seçenekler:\n" +" -d\ther konu için kısa açıklama yazdır\n" +" -m\tkullanımı pseudo-man sayfası biçiminde yazdır\n" +" -s\tsadece DESEN ile eÅŸleÅŸen konular için kısa kullanım\n" +" \t\tbilgisi yazdır\n" +" \n" +" Argümanlar:\n" +" DESEN\tBir yardım konusunu belirten desen\n" +" \n" +" Çıktı Durumu:\n" +" DESEN bulunmadığı veya geçersiz bir seçenek verilmediÄŸinde baÅŸarılı " +"döner." + +#: builtins.c:842 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"GeçmiÅŸ listesini görüntüle veya düzenle.\n" +" \n" +" Seçeneksiz kullanıldığında komut geçmiÅŸi listesini satır numaraları ile\n" +" gösterir. DeÄŸiÅŸiklik yapılmış satırlarda numaralardan önce bir `*'\n" +" vardır. Argüman olarak N belirtildiÄŸinde sadece son N satır listelenir.\n" +" \n" +" Seçenekler:\n" +" -c\tkomut geçmiÅŸi listesini tüm girdilerini silerek temizler.\n" +" -d\tile konumu KONUM olan geçmiÅŸ girdisi silinir.\n" +" \n" +" -a\tile oturumunun baÅŸlangıcından itibaren girilen geçmiÅŸ satırları\n" +" \tgeçmiÅŸ dosyasına eklenir.\n" +" -n\tile geçmiÅŸ dosyasından henüz okunmamış olan geçmiÅŸ satırları okur\n" +" \t\tve geçmiÅŸ listesine ekler\n" +" -r\tile dosya okunur ve içeriÄŸi geçmiÅŸ listesine eklenir.\n" +" -w\tile geçmiÅŸ listesi çıktısı geçmiÅŸ dosyasına yazılır.\n" +" \n" +" -p\ther ARGümanda geçmiÅŸ açılımı yap ve sonucu geçmiÅŸ listesinde\n" +" \tdepolamadan görüntüle\n" +" -s\tARGümanları geçmiÅŸ listesine tek bir girdi olarak ekle\n" +" \n" +" DOSYAİSMİ verilmezse, HISTFILE deÄŸiÅŸkenindeki deÄŸer, o da yoksa\n" +" ~/.bash_history dosyası kullanılır.\n" +" \n" +" HISTTIMEFORMAT kabuk deÄŸiÅŸkeni tanımlanmış ve anlamlı bir deÄŸere\n" +" sahipse, deÄŸeri, gösterilen her geçmiÅŸ girdisi ile iliÅŸkili zaman\n" +" damgasını basacak olan strftime(3) iÅŸlevine biçim girdisi olur; aksi\n" +" takdirde hiç zaman damgası basılmaz. \n" +" Çıktı Durumu:\n" +" Geçersiz bir seçenek girilmediÄŸi veya bir hata oluÅŸmadığı takdirde " +"baÅŸarılı döner." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Görev durumlarını görüntüle.\n" +" \n" +" Etkin iÅŸleri listeler. İŞ_BELİRTİMİ bu çıktıya çıktıyı kısıtlar.\n" +" Seçenekler olmadan, tüm etkin görev durumları görüntülenir.\n" +" \n" +" Seçenekler:\n" +" -l\tile normal bilgilere ek olarak süreç kimliklerini de (PID) " +"listele\n" +" -n\tile sadece kullanıcının durumları hakkında aldığı son uyarıdan\n" +" \t\tberi durumları deÄŸiÅŸen iÅŸler hakkında bilgi gösterir.\n" +" -p\tile iÅŸlerin sadece süreç kimliklerini listeler\n" +" -r\tile sadece çalışmakta olan,\n" +" -s\tile ise sadece durmuÅŸ olan iÅŸler listelenir.\n" +" \n" +" -x seçeneÄŸi verilmiÅŸse, ARGümanlar ile belirtilen tüm iÅŸ belirtimleri,\n" +" iÅŸlerin süreç grup liderinin süreç grup kimliÄŸine yerleÅŸtirilip KOMUT\n" +" çalıştırılır.\n" +" \n" +" Çıktı Durumu:\n" +" Geçersiz bir seçenek girilmediÄŸi veya bir hata oluÅŸmadığı takdirde " +"baÅŸarılı döner.\n" +" -x kullanılmışsa, KOMUTun çıkış durumu döndürülür." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Görevleri geçerli kabuktan kaldır.\n" +" \n" +" Her İŞTANIMı argümanını etkin görevler tablosundan kaldırır. İŞTANIMı " +"olmadan,\n" +" kabuk geçerli görev kavramını kullanır.\n" +" \n" +" Seçenekler:\n" +" -a\tİŞTANIMı belirtilmemiÅŸse tüm görevleri kaldır\n" +" -h\ther İŞTANIMını iÅŸaretle, böylece kabul bir SIGHUP aldığında göreve " +"SIGHUP\n" +" \t\tgönderme\n" +" -r\tsadece çalışan görevleri kaldırremove \n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz bir seçenek veya İŞTANIMı girilmedikçe baÅŸarılı döner." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Bir göreve sinyal gönder.\n" +" \n" +" PID ile belirtilen süreç kimliÄŸine veya İŞ_BELİRTİMİ ile belirtilen\n" +" iÅŸin sürecine SİNYAL veya SİNYALNUM ile belirtilen sinyali gönderir.\n" +" SİNYAL veya SİNYALNUM verilmezse öntanımlı olarak SIGTERM kullanılır.\n" +" \n" +" Seçenekler:\n" +" -s sig\tSİNYAL bir sinyal\n" +" -n sig\tSİNYAL bir sinyal numarası\n" +" -l\t-l seçeneÄŸi ile sinyal isimleri listelenir.\n" +" \t\tArgümanlı -l seçeneÄŸinde argümanların listelenecek\n" +" sinyal isimlerinin numaraları olduÄŸu varsayılır. \n" +" -L\t, -l anahtarının eÅŸ anlamlısıdır\n" +" Kill iki sebepten dolayı bir kabuk yerleÅŸiÄŸidir: süreç kimlikleri yerine " +"iÅŸ\n" +" kimliklerinin kullanımını mümkün kılar ve eÄŸer oluÅŸturabileceÄŸiniz " +"süreç\n" +" sayısı sınırını aÅŸarsanız baÅŸka bir süreci öldürecek bir süreci " +"baÅŸlatmak\n" +" zorunda kalmazsınız.\n" +" \n" +" Çıktı Durumu:\n" +" Geçersiz bir seçenek belirtilmediÄŸi veya bir hata oluÅŸmadığında baÅŸarılı " +"döner." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Aritmetik ifadeleri deÄŸerlendir.\n" +" \n" +" Her ARG deÄŸerlendirilecek bir aritmetik ifadesidir. DeÄŸerlendirme\n" +" sabit geniÅŸlikli tamsayılarla, taÅŸma denetimi uygulanmaksızın yapılır,\n" +" sıfırla bölme bir hata olarak bayraklanır ve onun için bir sinyal\n" +" kapanı vardır. İşleçler için öncelikler ve çaÄŸrışımsallık ve deÄŸerler\n" +" C dilindeki ile aynıdır. AÅŸağıdaki iÅŸleçler eÅŸit öncelikli iÅŸleç\n" +" düzeylerine göre öbeklenmiÅŸ ve azalan öncelikle listelenmiÅŸlerdir.\n" +" \n" +" \tid++ id--\tsonradan-arttırım ve sonradan-eksiltim\n" +" \t++id --id\tönceden-arttırım ve önceden-eksiltim\n" +" \t- +\t\ttek terimli eksi ve artı imi\n" +" \t! ~\t\tmantıksal ve bitseviyesinde olumsuzlama\n" +" \t**\t\tüs imi\n" +" \t* / %\t\tçarpma, bölme, kalan\n" +" \t+ -\t\ttoplama, çıkarma\n" +" \t<< >> \tbit seviyesinde sola ve saÄŸa ötelemeler\n" +" \t<= >= < >\tkarşılaÅŸtırmalar\n" +" \t== !=\t\teÅŸitlik, eÅŸitsizlik\n" +" \t&\t\tbit seviyesinde VE\n" +" \t^\t\tbit seviyesinde ayrıcalıklı VEYA\n" +" \t|\tbit seviyesinde VEYA\n" +" \t&&\t\tmantıksal VE\n" +" \t||\t\tmantıksal VEYA\n" +" \tifade ? ifade : ifade\n" +" \t\t\tkoÅŸullu üç terimlisi\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tatamalar\n" +" \n" +" Kabuk deÄŸiÅŸkenleri terim olarak kullanılabilir. İfade içinde deÄŸiÅŸken\n" +" ismi deÄŸeriyle deÄŸiÅŸtirilir (sabit geniÅŸlikli tamsayıya zorlanır).\n" +" Bir kabuk deÄŸiÅŸkeni ifade içinde kullanılırken tamsayı niteliÄŸinin\n" +" etkinleÅŸtirilmesini gerektirmez.\n" +" \n" +" İşleçler öncelik sırasına göre deÄŸerlendirilir. Parantez içine alınmış\n" +" alt ifadeler öncelikle deÄŸerlendirilir. Bu nedenle parantez içine alma\n" +" iÅŸleçlerin önceliklerini arttırmak amacıyla kullanılabilir.\n" +" \n" +" Çıktı Durumu:\n" +" Son ifade'nin sonucu 0 ise dönüş durumu 1 dir, aksi takdirde 0 dır." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Bir kabuk fonksiyonundan dön.\n" +" \n" +" Bir fonksiyon veya kaynak betiÄŸinin N ile belirtilen dönüş deÄŸeri ile\n" +" çıkmasına neden olur. N girilmezse, dönüş durumu fonksiyon veya\n" +" betikte çalıştırılmış en son komutun dönüş durumudur.\n" +" \n" +" Çıkış Durumu:\n" +" N veya kabul bir fonksiyon ya da betik çalıştırmıyorsa baÅŸarısız döner." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Kabuk seçenekleri ve konumsal parametrelerin deÄŸerlerini ata veya kaldır\n" +" \n" +" Kabuk nitelikleri veya konumsal parametre deÄŸerlerini deÄŸiÅŸtir veya\n" +" kabuk deÄŸiÅŸkenlerinin isim ve deÄŸerlerini görüntüle.\n" +" \n" +" Seçenekler:\n" +" -a Müteakip komutların ortamına aktarılmak üzere deÄŸiÅŸtirilen veya\n" +" oluÅŸturulan iÅŸlev ve deÄŸiÅŸkenleri imler.\n" +" -b Sonlandırılan artalan iÅŸlerin durumunun anında raporlanmasını " +"saÄŸlar.\n" +" -e Bir komut sıfırdan farklı bir çıkış durumu ile çıkarsa anında " +"çıkar.\n" +" -f Dosya ismi üretimini (globbing) iptal eder.\n" +" -h Çalıştırmak için aranan komutları bulur ve yerlerini hatırlar " +"(hash).\n" +" -k Atama deyimleri ÅŸeklindeki tüm argümanları komut isminden önce\n" +" belirtmek yerine ortama yerleÅŸtirir.\n" +" -m İş denetimi etkinleÅŸtirilir.\n" +" -n Komutları okur ama onları çalıştırmaz.\n" +" -o seçenek-ismi\n" +" seçenek-ismi olarak aÅŸağıdakilerden biri verildiÄŸinde karşılığı\n" +" olan seçenekler kullanılmış olur:\n" +" allexport -a ile aynı\n" +" braceexpand -B ile aynı\n" +" emacs emacs tarzı bir satır düzenleme arayüzü kullanılır\n" +" errexit -e ile aynı\n" +" errtrace -E ile aynı\n" +" functrace -T ile aynı\n" +" hashall -h ile aynı\n" +" histexpand -H ile aynı\n" +" history komut geçmiÅŸini etkinleÅŸtirir\n" +" ignoreeof kabuk dosyasonu karakterine rastlanınca çıkmaz.\n" +" interactive-comments\n" +" etkileÅŸimli komutlarda görünecek açıklamalara\n" +" izin verir.\n" +" keyword -k ile aynı\n" +" monitor -m ile aynı\n" +" noclobber -C ile aynı\n" +" noexec -n ile aynı\n" +" noglob -f ile aynı\n" +" nolog o an kabul edilir ama yoksayılır\n" +" notify -b ile aynı\n" +" nounset -u ile aynı\n" +" onecmd -t ile aynı\n" +" physical -P ile aynı\n" +" pipefail bir boruhattının dönüş deÄŸeri ya sıfırdan farklı " +"bir\n" +" durumla çıkan son (en saÄŸdaki) komutun deÄŸeridir " +"ya\n" +" da boruhattındaki tüm komutlar baÅŸarılıysa " +"sıfırdır\n" +" posix Standart uyumu için POSIX 1003.2 " +"standardındakinden\n" +" farklı öntanımlı iÅŸlemde Bash davranışını " +"deÄŸiÅŸtirir\n" +" privileged -p ile aynı\n" +" verbose -v ile aynı\n" +" vi vi tarzı bir satır düzenleme arayüzü kullanılır\n" +" xtrace -x ile aynı\n" +" -p Ayrıcalıklı kipi etkinleÅŸtirir. Bu kipte, $BASH_ENV ve $ENV " +"dosyaları\n" +" iÅŸlenmez, kabuk iÅŸlevleri ortamdan miras alınmaz. Kabuk, gerçek\n" +" kullanıcı (grup) kimliÄŸi ile aynı olmayan etkin kullanıcı (grup)\n" +" kimliÄŸi ile baÅŸlatılmışsa ve -p seçeneÄŸi verilmemiÅŸse, bu eylemler\n" +" alınır ve etkin kullanıcı (grup) kimliÄŸi, gerçek kullanıcı (grup)\n" +" kimliÄŸine ayarlanır. BaÅŸlatırken -p seçeneÄŸi verilmiÅŸse, etkin\n" +" kullanıcı (grup) kimliÄŸi sıfırlanmaz. Bu seçeneÄŸin kapatılması " +"etkin\n" +" kullanıcı ve grup kimliklerinin gerçek kullanıcı ve grup " +"kimliklerine\n" +" ayarlanmasına sebep olur.\n" +" -t Tek bir komutu okuyup çalıştırdıktan sonra çıkar..\n" +" -u Parametre yorumlaması uygulanırken bir hata sonucu deÄŸiÅŸkenlerin\n" +" kaldırılmasına benzer bir davranış gösterir.\n" +" -v Kabuk girdi satırlarını okunuyormuÅŸ gibi basar.\n" +" -x Komutları ve argümanlarını çalıştırılıyormuÅŸ gibi basar.\n" +" -B Kabuk kaÅŸlı ayraç yorumlaması uygular.\n" +" -C Çıktının > kullanılarak yönlendirilmesini ve <> kullanılarak mevcut\n" +" dosyaların üzerine yazılmasını engeller.\n" +" -E Etkinse ERR üstündeki bir tuzak kabuk iÅŸlevlerince miras alınır.\n" +" -H ! tarzı geçmiÅŸ ikamesini etkinleÅŸtirir. Bu seçenek etkileÅŸimli\n" +" kabuklarda öntanımlı olarak etkindir.\n" +" -P VerildiÄŸinde, örneÄŸin çalışılan dizini deÄŸiÅŸtirmek için cd gibi bir\n" +" komut sembolik baÄŸları izlemez.\n" +" -T Etkinse DEBUG ve RETURN üstündeki tuzaklar kabuk iÅŸlevlerince\n" +" miras alınır.\n" +" -- Geri kalan argümanları konumsal parametrelere ata. EÄŸer kalan\n" +" argüman yoksa, konumsal parametrelerin ataması kaldırılır.\n" +" - Seçeneklerin sonunu belirtir. Kalan tüm argümanlar konumsal\n" +" parametrelere ayarlanır. -x ve -v seçenekleri kapatılır.\n" +"\n" +" Seçeneklerdeki - iÅŸaretleri yerine + kullanıldığında bu seçenekler\n" +" kapatılır. Ayrıca, seçenekler kabuÄŸun çaÄŸrılması sırasında da\n" +" kullanılabilir. Seçeneklerin mevcut listesi $- içinde bulunabilir.\n" +" Kalan N argüman konumsal parametrelerdir ve $1, $2, ... $N ÅŸeklinde\n" +" atanır. Özel parametre # ise N'e ayarlanır. Hiç argüman verilmezse,\n" +" tüm kabuk deÄŸiÅŸkenleri basılır. \n" +" Çıktı Durumu:\n" +" Geçersiz seçenek belirtilmediÄŸi sürece baÅŸarılı döner." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Geçerli kabukta bir dosyadan komut çalıştır.\n" +" \n" +" DOSYAİSMİndeki komutlar okunur ve çalıştırılır. DOSYAİSMİ içermiyorsa\n" +" DOSYAİSMİnin yerini bulmak için $PATH deÄŸiÅŸkeni kullanılır. Bash POSIX\n" +" kipinde deÄŸilse ve $PATH içinde DOSYAİSMİ yoksa bulunulan dizine " +"bakılır.\n" +" VerilmiÅŸ ARGÜMANlar varsa, DOSYAİSMİ çalıştırılırken bunlar konumsal\n" +" parametreler haline gelir. Aksi takdirde, konumsal parametreler\n" +" deÄŸiÅŸtirilmez.\n" +" \n" +" Çıktı Durumu:\n" +" DOSYAİSMİnde çalıştırılan son komutun durumunu döndürür. DOSYAİSMİ\n" +" okunamazsa baÅŸarısız döner." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"KoÅŸullu ifade deÄŸerlendir.\n" +" \n" +" İFADEnin deÄŸerlendirilmesine baÄŸlı olarak 0 (doÄŸru) veya 1 (yanlış)\n" +" durumu ile çıkar. İfadeler tek terimli ya da iki terimli olabilir.\n" +" Tek terimli ifadeler çoÄŸunlukla bir dosyanın durumunu saptamakta\n" +" kullanılır. Dizge iÅŸleçleri ve sayısal karşılaÅŸtırma iÅŸleçleri de\n" +" vardır.\n" +" \n" +" Dosya iÅŸleçleri:\n" +" \n" +" -a DOSYA DOSYA varsa doÄŸrudur.\n" +" -b DOSYA DOSYA varsa ve bloka özelse doÄŸrudur.\n" +" -c DOSYA DOSYA varsa ve karaktere özelse doÄŸrudur.\n" +" -d DOSYA DOSYA varsa ve bir dizinse doÄŸrudur.\n" +" -e DOSYA DOSYA varsa doÄŸrudur.\n" +" -f DOSYA DOSYA varsa ve normal bir dosyaysa doÄŸrudur.\n" +" -g DOSYA DOSYA varsa ve grup kimliÄŸi biti 1 ise doÄŸrudur.\n" +" -h DOSYA DOSYA varsa ve bir sembolik baÄŸ ise doÄŸrudur.\n" +" -L DOSYA DOSYA varsa ve bir sembolik baÄŸ ise doÄŸrudur.\n" +" -k DOSYA DOSYA dosya varsa ve yapışkan biti 1 ise doÄŸrudur.\n" +" -p DOSYA DOSYA varsa ve bir isimli boru (FIFO) ise doÄŸrudur.\n" +" -r DOSYA DOSYA varsa ve okuyabiliyorsanız doÄŸrudur.\n" +" -s DOSYA DOSYA varsa ve uzunluÄŸu sıfırdan büyükse doÄŸrudur.\n" +" -S DOSYA DOSYA varsa ve bir soketse doÄŸrudur.\n" +" -t DSYTNT DSYTNT açık ve bir uçbirime karşılıksa doÄŸrudur.\n" +" -u DOSYA DOSYA varsa ve kullanıcı kimliÄŸi biti 1 ise doÄŸrudur.\n" +" -w DOSYA DOSYA dosya varsa ve yazabiliyorsanız doÄŸrudur.\n" +" -x DOSYA DOSYA dosya varsa ve çalıştırabiliyorsanız doÄŸrudur.\n" +" -O DOSYA DOSYA varsa ve etkin sahibi sizseniz doÄŸrudur.\n" +" -G DOSYA DOSYA varsa ve etkin grubu sizinkiyse doÄŸrudur.\n" +" -N DOSYA DOSYA varsa ve son okunduÄŸundan beri deÄŸiÅŸtirilmiÅŸse\n" +" doÄŸrudur.\n" +" \n" +" DOSYA1 -nt DOSYA2 dosya1, dosya2'den deÄŸiÅŸiklik tarihine göre\n" +" daha yeni ise ya da dosya1 mevcutken dosya2 yoksa\n" +" doÄŸrudur.\n" +" \n" +" DOSYA1 -ot DOSYA2 dosya1, dosya2 den daha eski ise ya da dosya2\n" +" mevcutken dosya1 yoksa doÄŸrudur.\n" +" \n" +" DOSYA1 -ef DOSYA2 dosya1 ile dosya2 aynı aygıt ve aynı dosya " +"düğümünü\n" +" gösteriyorsa (ona sabit baÄŸ ise) doÄŸrudur.\n" +" \n" +" Dizge iÅŸleçleri:\n" +" \n" +" -z DİZGE dizge uzunluÄŸu sıfırsa doÄŸrudur.\n" +" \n" +" -n DİZGE\n" +" DİZGE dizge uzunluÄŸu sıfırdan farklıysa doÄŸrudur.\n" +" \n" +" DİZGE1 = DİZGE2 dizgeler aynıysa doÄŸrudur.\n" +" DİZGE1 != DİZGE2 dizgeler aynı deÄŸilse doÄŸrudur.\n" +" DİZGE1 < DİZGE2 dizge1 yerele göre sıralamada dizge2'den\n" +" önceyse doÄŸrudur.\n" +" DİZGE1 > DİZGE2 dizge1 yerele göre sıralamada dizge2'den\n" +" sonraysa doÄŸrudur.\n" +" \n" +" DiÄŸer iÅŸleçler:\n" +" \n" +" -o SEÇENEK Kabuk seçeneÄŸi SEÇENEK etkinse doÄŸrudur.\n" +" -v DEĞŞ Kabuk DEĞŞ ayarlanmış ise true.\n" +" -R DEĞŞ Kabuk DEĞŞ ayarlanmış ve bir isim referansı ise true\n" +" ! İFADE İFADE yanlışsa doÄŸrudur.\n" +" İFADE1 -a İFADE2 İFADE1 ve İFADE2 her ikisi de doÄŸruysa doÄŸrudur.\n" +" İFADE1 -o İFADE2 İFADE1 veya İFADE2 doÄŸruysa doÄŸrudur.\n" +" \n" +" arg1 İM arg2 Aritmetik sınamalar. İM bunlardan biri " +"olmalıdır:\n" +" -eq, -ne, -lt, -le, -gt veya -ge.\n" +" \n" +" Bir aritmetik ifadede ARG1 ve ARG2 arasında, aranan eÅŸitlik, " +"eÅŸitsizlik,\n" +" küçüklük, büyüklük, küçüklük veya eÅŸitlik, büyüklük veya eÅŸitlik varsa\n" +" ifadenin sonucu doÄŸrudur. \n" +" Çıktı Durumu:\n" +" EÄŸer İFADE true olursa baÅŸarılı, İFADE false ile sonuçlanırsa veya " +"geçersiz\n" +" argümanda baÅŸarısız döner." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Åžartlı ifadeyi deÄŸerlendir.\n" +" \n" +" \"test\" yerleÅŸiÄŸi ile aynıdır, fakat son argüman açan `[' ile eÅŸleÅŸen\n" +" kapatan `]' olmak zorundadır." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"İşleme süresini görüntüle.\n" +" \n" +" Kabuk ve tüm alt süreçleri için kümülatif kullanıcı ve sistem süresini\n" +" yazdırır.\n" +" \n" +" Çıktı Durumu:\n" +" Her zaman baÅŸarılı döner." + +#: builtins.c:1364 +#, fuzzy +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"\rtrap [-lp] [ARG SİNYAL ...]\n" +" ARGüman içindeki komutlar, kabuk SİNYAL sinyalini aldığında okunur ve\n" +" çalıştırılır. ARGüman verilmezse (ve tek bir SİNYAL varsa) ya da `-'\n" +" verilirse, belirtilen tüm sinyallere kabuk baÅŸlatıldığındaki deÄŸerleri\n" +" yerleÅŸtirilir. ARGüman bir boÅŸ dizge ise her SİNYAL sinyali kabuk ve\n" +" onu çağıran komutlar tarafından yoksayılır. EÄŸer SİNYAL 0 ya da EXIT\n" +" ise ARGüman kabuk çıkarken çalıştırılır. EÄŸer SİNYAL olarak DEBUG\n" +" verilmiÅŸse, ARGüman komutu her basit komuttan önce çalıştırılır. -p\n" +" seçeneÄŸi verilmiÅŸse trap, her SİNYAL ile iliÅŸkili trap komutlarını\n" +" gösterir. Hiç ARGüman verilmemiÅŸse veya sadece -p verilmiÅŸse, trap\n" +" her SİNYAL ile iliÅŸkili komutların listesini basar. Her SİNYAL ya\n" +" dosyasındaki bir sinyal ismi ya da bir sinyal numarası\n" +" olarak verilmelidir. Sinyal isimleri harf büyüklüğüne duyarsızdır ve\n" +" SIG öneki isteÄŸe baÄŸlıdır. -l seçeneÄŸi kabuÄŸun sinyal isimlerini\n" +" numaraları ile birlikte listelemesini saÄŸlar. KabuÄŸa bir sinyal\n" +" göndermek isterseniz \"kill -SİGNAL $$\" sözdizimini kullanabilirsiniz." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Kabuk kaynak sınırlarını deÄŸiÅŸtir.\n" +" \n" +" Kabuk ve oluÅŸturduÄŸu süreçlere, izin veren sistemlerde mevcut kaynaklar\n" +" üzerinde denetim saÄŸlar.\n" +" \n" +" Seçenekler:\n" +" -S\tYazılımsal (`soft') sınır kullanılır.\n" +" -H\tDonanımsal (`hard') sınır kullanılır.\n" +" -a\tMevcut tüm sınırlamalar gösterilir.\n" +" -c\tOluÅŸan core dosyalarının azami boyu\n" +" -d\tBir sürecin veri segmanının azami boyu\n" +" -e\tAzami zamanlama önceliÄŸi (`nice')\n" +" -f\tKabuk ve çocukları tarafından oluÅŸturulan dosyaların azami boyu\n" +" -i\tAskıdaki sinyallerin azami sayısı\n" +" -k\tBu süreç için ayrılmış kqueue'lerin azami sayısı\n" +" -l\tBelleÄŸe kilitlenebilen azami boyut\n" +" -m\tAzami bellek boyu\n" +" -n\tAçık dosya tanıtıcılarının azami sayısı\n" +" -p\tİletiÅŸim tüneli tamponunun boyu\n" +" -q\tPOSIX ileti kuyruklarındaki azami bayt miktarı\n" +" -r\tAzami anında çalıştırma zamanlaması önceliÄŸi\n" +" -s\tYığıtın azami boyu\n" +" -t\tİşlemci zamanının saniye cinsinden azami miktarı\n" +" -u\tTek bir kullanıcının kullanabileceÄŸi azami süreç sayısı\n" +" -v\tBir sürecin kullanabileceÄŸi sanal belleÄŸin azami miktarı\n" +" -x\tDosya kilitlerinin azami sayısı\n" +" -T\tAzami iÅŸ parçacık sayısı\n" +" \n" +" Tüm seçenekler tüm platformlarda kullanılabilir olmayabilir.\n" +" \n" +" SINIR verilmiÅŸse, belirtilen özkaynağın yeni deÄŸeridir; özel sınır\n" +" deÄŸerleri mevcut donanımsal sınır için `hard', mevcut yazılımsal sınır\n" +" için `soft' ve sınırsız için `unlimited''dir. Aksi takdirde, belirtilen\n" +" özkaynak için mevcut deÄŸer gösterilir. Hiç seçenek verilmezse -f\n" +" seçeneÄŸi verilmiÅŸ kabul edilir.\n" +" \n" +" DeÄŸerler -t için saniye cinsinden, -p\n" +" için 512 baytlık blok sayısı olarak, -n ve -u için birimsiz, kalan\n" +" seçenekler için 1024 baytlık blok sayısı olarak belirtilmelidir. \n" +" Çıktı Durumu:\n" +" Geçersiz bir seçenek girilmediÄŸi veya bir hata oluÅŸmadığı takdirde " +"baÅŸarılı döner." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Sürecin tamamlanmasını bekle ve çıkış durumunu döndür.\n" +" \n" +" Belirtilen süreci bekler ve sonlandırma durumunu raporlar. EÄŸer ID " +"verilmemiÅŸse\n" +" geçerli tüm alt süreçler beklenir ve dönüş kodu sıfırdır. EÄŸer ID bir " +"görev tanımıysa\n" +" görevin iletiÅŸim tünelindeki tüm süreçler beklenir.\n" +" \n" +" -n seçeneÄŸi verilirse, sonraki görevin sonlanması beklenir ve çıkış " +"durumunı döndürür.\n" +" \n" +" Çıkış Durumu:\n" +" Kimlik durumunu döndürür, kimlik geçersizse veya geçersiz bir seçenek " +"verilmiÅŸse\n" +" baÅŸarısız olur." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Sürecin tamamlanmasını bekle ve çıkış durumunu döndür.\n" +" \n" +" PID tarafından belirtilen her süreci bekler ve sonlandırma durumunu " +"raporlar.\n" +" EÄŸer PID verilmemiÅŸse geçerli tüm alt süreçler beklenir ve dönüş kodu " +"sıfırdır.\n" +" PID bir süreç kimliÄŸi olmalıdır.\n" +" \n" +" Çıkış Durumu:\n" +" Son PID'nin durumunu döndürür, PID geçersizse veya geçersiz bir seçenek " +"verilmiÅŸse\n" +" baÅŸarısız olur." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Bir listedeki her üye için komut çalıştır.\n" +" \n" +" `for' döngüsü bir öge listesindeki her üye için komut sırasını " +"çalıştırır.\n" +" EÄŸer `in KELİMELER ...;' belirtilmemiÅŸse `in \"$@\"' varsayılır. " +"KELİMELER\n" +" içerisindeki her eleman için, İSİM bu elemana atanır ve KOMUTLAR " +"çalıştırılır.\n" +" \n" +" Çıkış Durumu:\n" +" Son çalıştırılan komutun durumunu döndürür." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Döngü için aritmetik.\n" +" \n" +" Åžuna eÅŸdeÄŸerdir:\n" +" \t(( İFADE1 ))\n" +" \twhile (( İFADE2 )); do\n" +" \t\tKOMUTLAR\n" +" \t\t(( İFADE3 ))\n" +" \tdone\n" +" İFADE1, İFADE2 ve İFADE3 aritmetik ifadelerdir. EÄŸer ifadelerden biri " +"yoksa\n" +" 1'e deÄŸerlendirilmiÅŸ ÅŸekilde davranır.\n" +" \n" +" Çıkış Durumu:\n" +" Son çalıştırılan komutun durumunu döndürür." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Listeden kelimeleri seç ve komutları çalıştır.\n" +" \n" +" `SÖZ ...;' listesi yorumlanarak öğe listesi üretilir. Öğe " +"listesindeki\n" +" her öğenin başına bir numara eklenerek standart hataya çıktılanır. " +"EÄŸer\n" +" `in SÖZ ... ;' parçası verilmezse, in \"$@\"' verilmiÅŸ gibi konuma " +"baÄŸlı\n" +" parametreler basılır ve standart girdide PS3 istemi ile girdi " +"beklenir.\n" +" Listede belirtilen numaralardan biri girdi olarak verilirse, o " +"konuma\n" +" baÄŸlı SÖZcük ile AD eÅŸleÅŸtirilir. Girdi satırı boÅŸ verilirse, " +"dosyasonu\n" +" okununcaya kadar komut istemi tekrarlanır. Listede belirtilenler " +"dışında\n" +" verilen her deÄŸer için AD null ile eÅŸleÅŸtirilir. Okunan satır " +"$REPLY\n" +" deÄŸiÅŸkeninde tutulur. Her seçimden sonra bir break komutu ile\n" +" sonlandırılıncaya kadar komutlar çalıştırılır.\n" +" \n" +" Çıktı Durumu:\n" +" Son çalıştırılan komutun durumunu döndürür." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Veriyolu çalıştırması tarafından harcanan zamanı bildir.\n" +" \n" +" VERİYOLUnu çalıştır ve sonlandığında kullanıcı iÅŸlemci zamanı ile " +"sistem\n" +" iÅŸlemci zamanını içeren gerçek zamanın bir özetini yazdır.\n" +" \n" +" Seçenekler:\n" +" -p\ttaşınabilir Posix biçiminde zaman özetini yaz\n" +" \n" +" ZAMANBİÇİMİ deÄŸiÅŸkeninin deÄŸeri çıktı biçimi olarak kullanılır.\n" +" \n" +" Çıktı Durumu:\n" +" VERİYOLU döndürme deÄŸerini döndürür." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Kalıp eÅŸleÅŸtirme tabanlı komutları çalıştır.\n" +" \n" +" SÖZcük ile eÅŸleÅŸen ilk KALIP'a karşı düşen KOMUTLARı çalıştırır.\n" +" `|' çok sayıda kalıbı ayırmak için kullanılır.\n" +" \n" +" Çıkış Durumu:\n" +" Son çalıştırılan komutun durumunu döndürür." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Komutları ÅŸartlara göre çalıştırır.\n" +" \n" +" `if KOMUTlar;' listesi çalıştırılır; çıkış durumu sıfırsa\n" +" `then KOMUTlar;' listesi çalıştırılır, deÄŸilse `elif KOMUTlar;'\n" +" listesi çalıştırılır; bunun çıkış durumu sıfırsa `then KOMUTlar;'\n" +" listesi çalıştırılır ve if komutu tamamlanır, deÄŸilse varsa\n" +" `else KOMUTlar;' listesi çalıştırılır ve if komutu tamamlanır.\n" +" OluÅŸumun tamamının dönüş durumu çalıştırılmış olan son komutun\n" +" çıkış durumudur. Bir komut çalıştırılmamışsa ve hiçbir koÅŸul\n" +" doÄŸru sonuç vermemiÅŸse sıfır döner. Çıkış Durumu:\n" +" Son çalıştırılan komutun durumunu döndürür." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Testler baÅŸarılı olduÄŸu sürece komutları çalıştırır.\n" +" \n" +" KOMUTLARı, `while' KOMUTLARı sıfır çıktı durumuna sahip oluncaya\n" +" kadar geniÅŸlet ve çalıştır.\n" +" \n" +" Çıktı Durumu:\n" +" En son çalıştırılan komutun durumunu döndürür." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Bir sınama baÅŸarısız oluncaya kadar komutları çalıştır.\n" +" \n" +" `until KOMUTlar; listesinin çıkış durumu sıfırdan farklı olduÄŸu sürece\n" +" `do KOMUTlar;' listesi çalıştırılır.\n" +" \n" +" Çıktı Durumu:\n" +" Son çalıştırılan komutun durumunu döndürür." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Komutları bir birim olarak grupla.\n" +" \n" +" KOMUTlar bir grup olarak çalıştırılır. Bu, bir komut kümesini bir\n" +" yönlendirmede kullanmanın tek yoludur.\n" +" \n" +" Çıktı Durumu:\n" +" Son çalıştırılan komutun durumunu döndürür." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Göreve ön planda devam et.\n" +" \n" +" `fg' komutunu İŞ_BELİRTİMİ argümanı ile kullanmaya eÅŸdeÄŸerdir.\n" +" DurmuÅŸ veya artalandaki bir iÅŸin önalanda sürdürülmesini saÄŸlar.\n" +" İŞ_BELİRTİMİ bir iÅŸ ismi veya iÅŸ numarası olarak belirtilebilir.\n" +" İŞ_BELİRTİMİ'nden sonra bir & gelmesi iÅŸin `bg' komutununa argüman\n" +" olarak kullanılmış gibi artalana yerleÅŸtirilmesine sebep olur.\n" +" \n" +" Çıktı Durumu:\n" +" Devam edilen görevin durumunu döndürür." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Aritmetik ifadeyi deÄŸerlendir.\n" +" \n" +" Verilen aritmetik İFADE aritmetik deÄŸerlendirme kurallarına göre\n" +" deÄŸerlendirilir. \"let İFADE\" ile eÅŸdeÄŸerdir.\n" +" \n" +" Çıktı Durumu:\n" +" İFADE 0 olursa 1; aksi takdirde 0 döndürür." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"KoÅŸullu komut çalıştır.\n" +" \n" +" KoÅŸullu İFADEnin deÄŸerine baÄŸlı olarak 0 ya da 1 durumu ile döner.\n" +" İfadeler test yerleÅŸiÄŸi tarafından kullanılan aynı ilkelerle " +"oluÅŸturulur\n" +" ve aÅŸağıdaki iÅŸleçler kullanılarak biraraya getirilebilirler:\n" +"\n" +" ( İFADE ) İFADEnin deÄŸeri döner\n" +" ! İFADE İFADE yanlışsa doÄŸru, doÄŸruysa yanlıştır.\n" +" İFADE1 && İFADE2 İFADE1 ve İFADE2 her ikisi de doÄŸruysa doÄŸrudur\n" +" İFADE1 || İFADE2 İFADE1 veya İFADE2 doÄŸruysa doÄŸrudur\n" +"\n" +" `==' ve `!=' iÅŸleçleri kullanıldığında, iÅŸlecin sağındaki dizge bir " +"kalıp\n" +" olarak ele alınır ve kalıp eÅŸleÅŸtirmesi uygulanır. `=~' kullanıldığında\n" +" iÅŸlecin sağındaki dizge düzenli ifade olarak eÅŸleÅŸtirilir. \n" +" İFADE1, ifadenin deÄŸeri için tek başına yeterli ise && ve || İFADE2'yi\n" +" çalıştırmaz.\n" +" \n" +" Çıkış Durumu:\n" +" İFADE deÄŸerine göre 0 veya 1." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Bazı deÄŸiÅŸkenler ve anlamları:\n" +" \n" +" BASH_VERSION\tBu Bash'in sürüm bilgisi.\n" +" CDPATH\t`cd'ye argüman olarak verilecek dizinlerin aranacağı\n" +" \t\tdizinlerin iki nokta imi ayraçlı listesi.\n" +" GLOBIGNORE\tDosyayolu yorumlaması tarafından yoksayılacak dosya\n" +" \t\tisimlerini belirten kalıpların ikinokta imi ayraçlı\n" +" \t\tlistesi.\n" +" HISTFILE\tKomut geçmiÅŸinizin saklanacağı dosyanın ismi.\n" +" HISTFILESIZE\tBu dosyanın içerebileceÄŸi azami satır sayısı.\n" +" HISTSIZE\tÇalışan bir kabuÄŸun eriÅŸebileceÄŸi geçmiÅŸ satırlarının\n" +" \t\tazami sayısı.\n" +" HOME\tKullanıcının ev dizininin tam yolu.\n" +" HOSTNAME\tMakinenizin aÄŸdaki konak ismi.\n" +" HOSTTYPE\tBash'in bu sürümünün altında çalıştığı iÅŸlemcinin türü\n" +" IGNOREEOF\tTek girdi olarak EOF karakteri alındığında kabuÄŸun\n" +" \t\teylemini kontrol eder. Atandığında deÄŸeri, kabuk\n" +" \t\tçıkmadan önce bir girdi satırındaki ilk karakter\n" +" \t\tolarak okunabilen ardışık EOF karakterlerinin sayısını\n" +" \t\tgösterir (öntanımlı 10). EÄŸer deÄŸiÅŸken mevcut deÄŸilse,\n" +" \t\tEOF girdi sonunu belirtir.\n" +" MACHTYPE\tBash'in üzerinde çalıştığı sistemi açıklayan dizge.\n" +" MAILCHECK\tBash'in yeni postaya kaç saniyede bir bakacağı.\n" +" MAILPATH\tBash'in yeni posta var mı diye bakacağı dosya\n" +" \t\tisimlerinin ikinokta imi ayraçlı listesi.\n" +" OSTYPE\tBash'in üzerinde çalıştığı çekirdeÄŸin türü.\n" +" PATH\tKomutları ararken bakılacak dizinlerin ikinokta imi\n" +" \t\tayraçlı listesi.\n" +" PROMPT_COMMAND\tBirincil komut istemi ($PS1) basılmadan önce\n" +" \t\tçalıştırılacak komut\n" +" PS1\tBirincil komut istemi dizgesi.\n" +" PS2\tİkincil komut istemi dizgesi.\n" +" PWD\tÇalışma dizininizin tam yolu.\n" +" SHELLOPTS\tEtkin kabuk seçeneklerinin ikinokta imi ayraçlı listesi\n" +" TERM\tGeçerli uçbirim türünün ismi.\n" +" TIMEFORMAT\ttime anahtar sözcüğü ile baÅŸlayan zamanlama bilgisinin\n" +" \t\tnasıl belirtileceÄŸini gösteren biçim dizgesi.\n" +" auto_resume\tDeÄŸerin boÅŸ olmaması durmuÅŸ iÅŸin isminin onu\n" +" \t\tbaÅŸlatmakta kullanılan komut satırı olduÄŸudur ve\n" +" \t\toradaysa iÅŸ önalana alınır. `exact' deÄŸeri, komut\n" +" \t\tsözcüğünün durmuÅŸ iÅŸler listesindeki komutla tam\n" +" \t\tolarak eÅŸleÅŸmesi gerektiÄŸi anlamına gelir. `substring'\n" +" \t\tdeÄŸeri, komut sözcüğünün iÅŸin bir altdizgesi ile\n" +" \t\teÅŸleÅŸmesi gerektiÄŸini belirtir. Bunlar dışında bir\n" +" \t\tdeÄŸer komutun durmuÅŸ bir iÅŸe önek olması gerektiÄŸi\n" +" \t\tanlamına gelir.\n" +" histchars\tGeçmiÅŸ yorumlaması, hızlı ikame ve sembolleÅŸtirmeyi\n" +" \t\tdenetleyen en çok üç karakter. İlk karakter geçmiÅŸ\n" +" \t\tyorumlamasının baÅŸlatılmasını saÄŸlayan geçmiÅŸ\n" +" \t\tyorumlama karakteridir ve normalde ! iÅŸaretidir.\n" +" \t\tİkinci karakter, bir satırdaki ilk karakter olduÄŸunda\n" +" \t\t`hızlı ikame'yi imleyen karakterdir ve normalde ^\n" +" \t\timidir. İstemlik olan üçüncü karakter ise, bir\n" +" \t\tsözcüğün ilk karakteri olarak bulunduÄŸunda satırın\n" +" \t\tkalanının açıklama olmasını saÄŸlayan karakterdir ve\n" +" \t\tnormalde # imidir.\n" +" HISTIGNORE\tGeçmiÅŸ listesine hangi satırların kaydedilmesi\n" +" \t\tgerektiÄŸine karar vermek için kullanılan kalıpların\n" +" \t\tikinokta imi ayraçlı listesi.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Dizinleri yığına ekle.\n" +" \n" +" Dizin yığıtının en üstüne bir dizin ekler, ya da geçerli çalışma\n" +" dizini yığıtın tepesine gelecek ÅŸekilde yığıtı döndürür. Hiç\n" +" argüman verilmemiÅŸse en üstteki iki dizini yer deÄŸiÅŸtirir.\n" +" \n" +" Seçenekler:\n" +" -n\tdizinleri yığıta eklerken normal dizin deÄŸiÅŸikliÄŸini engeller,\n" +" \t\tböylece sadece yığıt deÄŸiÅŸtirilmiÅŸ olur.\n" +" \n" +" Argümanlar:\n" +" +N\t(`dirs' tarafından gösterilen listenin solundan saymaya\n" +" \t\tsıfırla baÅŸlandığında) N'inci dizin tepeye gelecek ÅŸekilde\n" +" \t\tyığıtı döndürür.\n" +" \n" +" -N\t(`dirs' tarafından gösterilen listenin sağından saymaya\n" +" \t\tsıfırla baÅŸlandığında) N'inci dizin tepeye gelecek ÅŸekilde\n" +" \t\tyığıtı döndürür.\n" +" \n" +" dizin\tDİZİNi yeni çalışma dizini yaparak dizin yığıtının\n" +" \t\ttepesine ekler.\n" +" \n" +" Dizin yığıtını `dirs' komutuyla görebilirsiniz.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz bir argüman belirtilmediÄŸi veya dizin deÄŸiÅŸikliÄŸi baÅŸarısız\n" +" olmadıkça baÅŸarılı döner." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Dizin yığıtından girdileri sil.\n" +" \n" +" Dizin yığıtından girdileri siler. Hiç argüman verilmemiÅŸse,\n" +" yığıtın en üstündeki dizini yığıttan kaldırır ve yığıtın\n" +" tepesinde kalan dizine geçer. \n" +" \n" +" Seçenekler:\n" +" -n\tdizinleri yığıttan silerken normal dizin deÄŸiÅŸikliÄŸini\n" +" \t\tengeller, böylece sadece yığıt deÄŸiÅŸtirilmiÅŸ olur. \n" +" \n" +" Argümanlar:\n" +" +N\t\t`dirs' tarafından gösterilen listenin solundan saymaya\n" +" \t\tsıfırla baÅŸlandığında N'inci girdiyi siler. ÖrneÄŸin,\n" +" \t\t`popd +0' ilk dizini `popd +1' ikincisini siler. \n" +" \n" +" -N\t\t`dirs' tarafından gösterilen listenin sağından saymaya\n" +" \t\tsıfırla baÅŸlandığında N'inci girdiyi siler. ÖrneÄŸin,\n" +" \t\t`popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n" +" \n" +" Dizin yığıtını `dirs' komutuyla görebilirsiniz. \n" +" Çıkış Durumu:\n" +" Geçersiz bir argüman belirtilmediÄŸi veya dizin deÄŸiÅŸikliÄŸi baÅŸarısız\n" +" olmadıkça baÅŸarılı döner." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Dizin yığıtını görüntüle.\n" +" \n" +" O an anımsanan dizinleri listeler. Dizinler listeye `pushd'\n" +" komutuyla eklenir; listeden tek tek geri almak içinse `popd'\n" +" komutu kullanılır.\n" +" \n" +" Seçenekler:\n" +" -c\ttüm girdileri silerek dizin yığıtını boÅŸaltır.\n" +" -l\t`dirs'in dizinleri ev dizininize göreli kısayollar\n" +" \t\tolarak göstermemesine yol açar.\n" +" -p\tyığıttaki konumu göstermemesi dışında aynı çıktıyı verir.\n" +" -v\t`dirs'in dizin yığıtını dizin adının önüne yığıt konumunu\n" +" \t\tekleyerek her satırda bir girdi göstermesini saÄŸlar.\n" +" \n" +" Argümanlar:\n" +" +N\tdirs seçeneksiz çaÄŸrıldığında gösterdiÄŸi listenin solundan\n" +" \t\tsıfırla baÅŸlayarak sayılan N'inci girdiyi gösterir.\n" +" \n" +" \n" +" -N\tdirs seçeneksiz çaÄŸrıldığında gösterdiÄŸi listenin sağından\n" +" \t\tsıfırla baÅŸlayarak sayılan N'inci girdiyi gösterir.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz seçenek belirtilmediÄŸi veya bir hata oluÅŸmadığı sürece baÅŸarılı " +"döner." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"BİÇİMin denetimi altında ARGümanları standart çıktıya biçimleyerek " +"yazar\n" +" \n" +" Seçenekler:\n" +" -v deÄŸiÅŸken\tseçeneÄŸi çıktının standart çıktıya\n" +" \t\tbasılması yerine DEĞİŞKENe atanmasını saÄŸlar.\n" +" \n" +" BİÇİM üç tür nesne içeren bir dizgedir: salt karakterler\n" +" basitçe standart çıktıya kopyalanır, öncelenmiÅŸ karakterler\n" +" dönüştürülüp standart çıktıya kopyalanır ve biçim belirtimleri;\n" +" belirtimlerin her biri sırayla karşı düşen ARGümanların basılmasını\n" +" saÄŸlar.\n" +" \n" +" Standart printf(1) biçimlerine ek olarak, printf aÅŸağıdakileri de " +"yorumlar:\n" +" \n" +" %b\ttersbölü öncelemeli karakterlerin karşı düşen ARGümanda " +"yorumlanmasını saÄŸlar\n" +" %q\tARGümanın kabuk girdisi olarak kullanılabilecek biçimde " +"kullanılabilmesi\n" +" \t\tiçin alıntılar.\n" +" %(fmt)T\tstrftime(3) için bir biçim dizgesi olarak FMT tarafından " +"kullanılmak üzere\n" +" \t\ttarih zaman dizgesi çıktısısı verir\n" +" \n" +" Biçim argümanların tümünün kullanılabilmesi için gerektiÄŸinde yeniden " +"kullanılır.\n" +" Biçimin gerektirdiÄŸinden daha az argüman varsa, ek biçim tanımlamaları " +"uygun olduÄŸu\n" +" ÅŸekilde sıfır deÄŸeri veya BOÅž (null) dizge deÄŸeri olarak davranırlar.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz bir seçenek belirtilmediÄŸi veya yazılmadığı takdirde ya da bir " +"atama\n" +" hatası oluÅŸmadığı sürece baÅŸarılı döner." + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Seçeneklere baÄŸlı olarak olası tamamlamaları gösterir.\n" +" \n" +" Olası tamamlamaları üretmek üzere bir kabuk iÅŸlevinin içinde kullanmak\n" +" amacıyla tasarlanmıştır. İsteÄŸe baÄŸlı SÖZCÜK argümanı saÄŸlandığı\n" +" takdirde eÅŸleÅŸmelerden sadece SÖZCÜK ile eÅŸleÅŸenler üretilir.\n" +" \n" +" Çıktı Durumu:\n" +" Geçersiz bir seçenek girilmediÄŸi veya bir hata oluÅŸmadığı takdirde " +"baÅŸarılı döner." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Bir dosyadaki satırları bir dizi deÄŸiÅŸkenine oku.\n" +" \n" +" `mapfile' ile eÅŸanlamlıdır." + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "Telif Hakkı (C) 2016 Özgür Yazılım Vakfı A.Åž." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Geçerli altyordam çaÄŸrısının baÄŸlamı döndürür.\n" +#~ " \n" +#~ " İFADE olmadan, ÅŸu döner " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: %5ld (%s) süreci iletiÅŸim_tünelinde" + +#~ msgid "Unknown Signal #" +#~ msgstr "Bilinmeyen Sinyal #" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Telif Hakkı (C) 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Lisans GPLv2+: GNU GPL sürüm 2 veya sonrası \n" + +#~ msgid " " +#~ msgstr " " + +#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," +#~ msgstr "İFADE olmaksızın \"$line $filename\" döner. İFADE ile ise" + +#~ msgid "returns \"$line $subroutine $filename\"; this extra information" +#~ msgstr "\"$line $subroutine $filename\" döner; bu ek bilgi" + +#~ msgid "can be used used to provide a stack trace." +#~ msgstr "bir yığıt izini sürmek için kullanılabilir." + +#~ msgid "" +#~ "The value of EXPR indicates how many call frames to go back before the" +#~ msgstr "" +#~ "İFADE deÄŸeri ÅŸu ankinden önce kaç çaÄŸrı çerçevesinin geri döneceÄŸini" + +#~ msgid "current one; the top frame is frame 0." +#~ msgstr "belirtir; tepe çerçeve 0. çerçevedir." + +#~ msgid "%s: invalid number" +#~ msgstr "%s: sayı geçersiz" + +#~ msgid "Shell commands matching keywords `" +#~ msgstr "Bu anahtar sözcüklere uygun kabuk komutları: `" + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "" +#~ "\rdirs [-clpv] [+N] [-N]\n" +#~ " O an anımsanan dizinleri listeler. Dizinler listeye" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "`pushd' komutuyla eklenir; listeden tek tek geri almak içinse" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "`popd' komutu kullanılır." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "-l seçeneÄŸi `dirs'in dizinleri ev dizininize göreli kısayollar" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "" +#~ "olarak göstermemesine yol açar. Yani `~/bin' yerine `/homes/bfox/bin'" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "gibi bir gösterimle karşılaÅŸabilirsiniz. -v seçeneÄŸi `dirs'in" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "dizin yığıtını dizin adının önüne yığıt konumunu ekleyerek her" + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "satırda bir girdi göstermesini saÄŸlar. -p seçeneÄŸi yığıttaki" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "konumu göstermemesi dışında aynı çıktıyı verir." + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "-c seçeneÄŸi tüm girdileri silerek dizin yığıtını boÅŸaltır." + +#~ msgid "" +#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgstr "+N dirs seçeneksiz çaÄŸrıldığında gösterdiÄŸi listenin solundan" + +#~ msgid " dirs when invoked without options, starting with zero." +#~ msgstr " sıfırla baÅŸlayarak sayılan N'inci girdiyi gösterir." + +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "-N dirs seçeneksiz çaÄŸrıldığında gösterdiÄŸi listenin sağından" + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "Dizin yığıtının en üstüne bir dizin ekler, ya da geçerli çalışma" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "dizini yığıtın tepesine gelecek ÅŸekilde yığıtı döndürür." + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "Hiç argüman verilmemiÅŸse en üstteki iki dizini yer deÄŸiÅŸtirir." + +#~ msgid "+N Rotates the stack so that the Nth directory (counting" +#~ msgstr "+N (`dirs' tarafından gösterilen listenin solundan saymaya" + +#~ msgid " from the left of the list shown by `dirs', starting with" +#~ msgstr " sıfırla baÅŸlandığında) N'inci dizin tepeye gelecek ÅŸekilde" + +#~ msgid " zero) is at the top." +#~ msgstr " yığıtı döndürür." + +#~ msgid "-N Rotates the stack so that the Nth directory (counting" +#~ msgstr "-N (`dirs' tarafından gösterilen listenin sağından saymaya" + +#~ msgid " from the right of the list shown by `dirs', starting with" +#~ msgstr " sıfırla baÅŸlandığında) N'inci dizin tepeye gelecek ÅŸekilde" + +#~ msgid "-n suppress the normal change of directory when adding directories" +#~ msgstr "+n dizinleri yığıta eklerken normal dizin deÄŸiÅŸikliÄŸini engeller," + +#~ msgid " to the stack, so only the stack is manipulated." +#~ msgstr " böylece sadece yığıt deÄŸiÅŸtirilmiÅŸ olur." + +#~ msgid "dir adds DIR to the directory stack at the top, making it the" +#~ msgstr "dir DİZİNi yeni çalışma dizini yaparak dizin yığıtının" + +#~ msgid " new current working directory." +#~ msgstr " tepesine ekler." + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "Dizin yığıtını `dirs' komutuyla görebilirsiniz." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Dizin yığıtından girdileri siler. Hiç argüman verilmemiÅŸse," + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "yığıtın en üstündeki dizini yığıttan kaldırır ve" + +#~ msgid "+N removes the Nth entry counting from the left of the list" +#~ msgstr "+N `dirs' tarafından gösterilen listenin solundan saymaya" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr " sıfırla baÅŸlandığında N'inci girdiyi siler. ÖrneÄŸin," + +#~ msgid " removes the first directory, `popd +1' the second." +#~ msgstr " `popd +0' ilk dizini `popd +1' ikincisini siler." + +#~ msgid "-N removes the Nth entry counting from the right of the list" +#~ msgstr "-N `dirs' tarafından gösterilen listenin sağından saymaya" + +#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr " sıfırla baÅŸlandığında N'inci girdiyi siler. ÖrneÄŸin," + +#~ msgid " removes the last directory, `popd -1' the next to last." +#~ msgstr " `popd -0' son dizini `popd -1' sonuncudan öncekini siler." + +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "" +#~ "-n dizinleri yığıttan silerken normal dizin deÄŸiÅŸikliÄŸini engeller," + +#~ msgid " from the stack, so only the stack is manipulated." +#~ msgstr " böylece sadece yığıt deÄŸiÅŸtirilmiÅŸ olur." + +#~ msgid "allocated" +#~ msgstr "ayrılmış" + +#~ msgid "freed" +#~ msgstr "serbest bırakılmış" + +#~ msgid "requesting resize" +#~ msgstr "yeniden boyutlandırma isteniyor" + +#~ msgid "just resized" +#~ msgstr "yeniden boyutlandırıldı" + +#~ msgid "bug: unknown operation" +#~ msgstr "yazılım hatası: unknown operation" + +#~ msgid "malloc: watch alert: %p %s " +#~ msgstr "malloc: yakalama alarmı: %p %s " + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: %lu bayt yeniden ayrılamıyor (%lu bayt ayrıldı)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: %lu bayt yeniden ayrılamıyor" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: %s:%d: %lu bayt yeniden ayrılamıyor (%lu bayt ayrıldı)" + +#~ msgid "" +#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" +#~ " break N levels." +#~ msgstr "" +#~ "\rbreak [N]\n" +#~ " FOR, WHILE veya UNTIL döngülerinden çıkılmasını saÄŸlar. N " +#~ "verilmiÅŸse,\n" +#~ " dışa doÄŸru N. döngüden çıkılır. N >= 1 olmalıdır." + +#~ msgid "" +#~ "Run a shell builtin. This is useful when you wish to rename a\n" +#~ " shell builtin to be a function, but need the functionality of the\n" +#~ " builtin within the function itself." +#~ msgstr "" +#~ "\rbuiltin [kabuk-yerleÅŸiÄŸi [argümanlar]]\n" +#~ " Bir kabuk yerleÅŸiÄŸini çalıştırır. Bu bir kabuk iÅŸlevinin bir " +#~ "kabul\n" +#~ " yerleÅŸiÄŸi ile aynı isimde atanması durumunda faydalıdır, fakat " +#~ "iÅŸlevin\n" +#~ " içinde yerleÅŸiÄŸin iÅŸlevselliÄŸinin saÄŸlanması gerekir." + +#~ msgid "" +#~ "Print the current working directory. With the -P option, pwd prints\n" +#~ " the physical directory, without any symbolic links; the -L option\n" +#~ " makes pwd follow symbolic links." +#~ msgstr "" +#~ "\rpwd [-LP]\n" +#~ " Geçerli çalışma dizinini basar. -P seçeneÄŸi ile sembolik baÄŸlar\n" +#~ " olmaksızın fiziksel dizini basar; -L seçeneÄŸi ile sembolik baÄŸları " +#~ "izler." + +#~ msgid "Return a successful result." +#~ msgstr "" +#~ "\rtrue\n" +#~ " BaÅŸarılı bir sonuç döndürür." + +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell\n" +#~ " function called `ls', and you wish to call the command `ls', you can\n" +#~ " say \"command ls\". If the -p option is given, a default value is " +#~ "used\n" +#~ " for PATH that is guaranteed to find all of the standard utilities. " +#~ "If\n" +#~ " the -V or -v option is given, a string is printed describing " +#~ "COMMAND.\n" +#~ " The -V option produces a more verbose description." +#~ msgstr "" +#~ "\rcommand [-pVv] KOMUT [ARGümanlar ...]\n" +#~ " KOMUT komutunu KOMUT isimli kabuk iÅŸlevini yoksayarak " +#~ "ARGümanlarla\n" +#~ " çalıştırır. ÖrneÄŸin, `ls' isimli bir kabuk iÅŸlevi varsa ve siz " +#~ "`ls'\n" +#~ " komutunu çalıştırmak istiyorsanız \"command ls\" " +#~ "diyebilirsiniz.\n" +#~ " -p seçeneÄŸi verilmiÅŸse, tüm standart uygulamaların bulunmasını " +#~ "garanti\n" +#~ " eden PATH için bir öntanımlı deÄŸer kullanılır. -V ya da -v " +#~ "seçeneÄŸi\n" +#~ " verilmiÅŸse, KOMUTu açıklayan bir dizge basılır. -V seçeneÄŸi " +#~ "daha\n" +#~ " ayrıntılı açıklama üretilmesini saÄŸlar. " + +#~ msgid "" +#~ "Declare variables and/or give them attributes. If no NAMEs are\n" +#~ " given, then display the values of variables instead. The -p option\n" +#~ " will display the attributes and values of each NAME.\n" +#~ " \n" +#~ " The flags are:\n" +#~ " \n" +#~ " -a\tto make NAMEs arrays (if supported)\n" +#~ " -f\tto select from among function names only\n" +#~ " -F\tto display function names (and line number and source file name " +#~ "if\n" +#~ " \tdebugging) without definitions\n" +#~ " -i\tto make NAMEs have the `integer' attribute\n" +#~ " -r\tto make NAMEs readonly\n" +#~ " -t\tto make NAMEs have the `trace' attribute\n" +#~ " -x\tto make NAMEs export\n" +#~ " \n" +#~ " Variables with the integer attribute have arithmetic evaluation (see\n" +#~ " `let') done when the variable is assigned to.\n" +#~ " \n" +#~ " When displaying values of variables, -f displays a function's name\n" +#~ " and definition. The -F option restricts the display to function\n" +#~ " name only.\n" +#~ " \n" +#~ " Using `+' instead of `-' turns off the given attribute instead. " +#~ "When\n" +#~ " used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "" +#~ "\rdeclare [-afFirtx] [-p] [İSİM[=DEÄžER] ...]\n" +#~ " DeÄŸiÅŸkenlerin özellikleri ile bildirilmesini saÄŸlar. Hiçbir İSİM\n" +#~ " verilmezse deÄŸiÅŸkenleri ve deÄŸerlerini listeler. -p seçeneÄŸi ile her\n" +#~ " İSİM için deÄŸerler ve özellikleri gösterecektir.\n" +#~ "\n" +#~ " Seçenekler:\n" +#~ "\n" +#~ " -a Her İSİM bir dizi deÄŸiÅŸkenidir(destekleniyorsa)\n" +#~ " -f Sadece iÅŸlev isimleri kullanılır.\n" +#~ " -F Tanımları olmaksızın sadece iÅŸlev isimleri (ve hata " +#~ "ayıklaması\n" +#~ " yapılıyorsa kaynak dosya isimleri ve satır sayıları) " +#~ "gösterilir\n" +#~ " -i Her İSİMe `integer' özniteliÄŸi verir.\n" +#~ " -r İSİMleri salt-okunur yapar.\n" +#~ " -t Her İSİMe `trace' özniteliÄŸi verir.\n" +#~ " -x İSİMleri ihraç edilebilir yapar\n" +#~ "\n" +#~ " Tamsayı öznitelikli deÄŸiÅŸkenlere bir DEÄžER atandığında aritmetik\n" +#~ " deÄŸerlendirme uygulanır (bkz, `let').\n" +#~ "\n" +#~ " DeÄŸiÅŸken deÄŸerleri gösterilirken, -f bir iÅŸlevin ismini ve " +#~ "tanımını\n" +#~ " gösterir. -F seçeneÄŸi ile sadece iÅŸlev isminin gösterilmesini " +#~ "saÄŸlar.\n" +#~ "\n" +#~ " `-' yerine `+' kullanarak belirtilen öznitelik kapatılabilir.\n" +#~ " Bir iÅŸlevde kullanıldığında declare her İSİMi `local' komutu " +#~ "kullanılmış\n" +#~ " gibi yerel yapar." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "" +#~ "\rtypeset [-afFirtx] [-p] İSİM[=DEÄžER] ...\n" +#~ " Geçersiz (eski). `declare'ye bakın." + +#~ msgid "" +#~ "Create a local variable called NAME, and give it VALUE. LOCAL\n" +#~ " can only be used within a function; it makes the variable NAME\n" +#~ " have a visible scope restricted to that function and its children." +#~ msgstr "" +#~ "\rlocal [seçenek] İSİM[=DEÄžER] ...\n" +#~ " İSİM isimli bir yerel deÄŸiÅŸken oluÅŸturulup, ona DEÄžER atar.\n" +#~ " local sadece bir iÅŸlev içinde kullanılabilir; İSİM deÄŸiÅŸkeninin\n" +#~ " sadece iÅŸlev ve çocuklarının etki alanında görünür olmasını saÄŸlar." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "\recho [-neE] [ARG ...]\n" +#~ " ARGümanlarını çıktılar. -n belirtilmiÅŸse, satırsonu bastırılır." + +#~ msgid "" +#~ "Enable and disable builtin shell commands. This allows\n" +#~ " you to use a disk command which has the same name as a shell\n" +#~ " builtin without specifying a full pathname. If -n is used, the\n" +#~ " NAMEs become disabled; otherwise NAMEs are enabled. For example,\n" +#~ " to use the `test' found in $PATH instead of the shell builtin\n" +#~ " version, type `enable -n test'. On systems supporting dynamic\n" +#~ " loading, the -f option may be used to load new builtins from the\n" +#~ " shared object FILENAME. The -d option will delete a builtin\n" +#~ " previously loaded with -f. If no non-option names are given, or\n" +#~ " the -p option is supplied, a list of builtins is printed. The\n" +#~ " -a option means to print every builtin with an indication of whether\n" +#~ " or not it is enabled. The -s option restricts the output to the " +#~ "POSIX.2\n" +#~ " `special' builtins. The -n option displays a list of all disabled " +#~ "builtins." +#~ msgstr "" +#~ "\renable [-n] [-p] [-f DOSYAİSMİ] [-ads] [İSİM ...]\n" +#~ " YerleÅŸik kabuk komutlarını etkinleÅŸtirir ve kaldırır. Bir " +#~ "kabuk\n" +#~ " yerleÅŸiÄŸi ile aynı isme sahip bir disk komutunun tam dosya " +#~ "yolu\n" +#~ " belirtmeksizin kullanılabilmesini mümkün kılar. -n " +#~ "seçeneÄŸi\n" +#~ " kullanılmışsa İSİMler kullanımdan kaldırılır; aksi takdirde " +#~ "İSİMler\n" +#~ " etkin kılınır. ÖrneÄŸin `test' yerleÅŸiÄŸi yerine `test' " +#~ "uygulamasının\n" +#~ " yerleÅŸik komut olarak kullanılmasını saÄŸlamak için `enable -n " +#~ "test'\n" +#~ " yazmalısınız. Dinamik yüklemenin desteklendiÄŸi sistemlerde, -" +#~ "f\n" +#~ " seçeneÄŸi ile yeni bir İSİM yerleÅŸik komutunun DOSYAİSMİ ile " +#~ "belirtilen\n" +#~ " paylaşımlı nesneden yüklenmesi saÄŸlanır. -d seçeneÄŸi -f ile " +#~ "yüklenen\n" +#~ " yerleÅŸiÄŸi silmek için kullanılır. Hiç seçenek verilmezse ya da -" +#~ "p\n" +#~ " seçeneÄŸi verilirse kabuk yerleÅŸiklerinin bir listesi gösterilir. -" +#~ "a\n" +#~ " seçeneÄŸi ile her yerleÅŸik etkin olup olmadığı belirtilerek " +#~ "listelenir.\n" +#~ " -s seçeneÄŸi ile sadece POSIX'e özel yerleÅŸikleri içerir. -n " +#~ "seçeneÄŸi\n" +#~ " bir İSİM belirtilmeksizin kullanılırsa kullanımdan " +#~ "kaldırılmış\n" +#~ " yerleÅŸikleri listeler." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "\reval [ARG ...]\n" +#~ " KabuÄŸa girilmiÅŸ biçimleriyle ARG'ları okur ve sonuçlanan komutları " +#~ "çalıştır." + +#~ msgid "" +#~ "Exec FILE, replacing this shell with the specified program.\n" +#~ " If FILE is not specified, the redirections take effect in this\n" +#~ " shell. If the first argument is `-l', then place a dash in the\n" +#~ " zeroth arg passed to FILE, as login does. If the `-c' option\n" +#~ " is supplied, FILE is executed with a null environment. The `-a'\n" +#~ " option means to make set argv[0] of the executed process to NAME.\n" +#~ " If the file cannot be executed and the shell is not interactive,\n" +#~ " then the shell exits, unless the shell option `execfail' is set." +#~ msgstr "" +#~ "\rexec [-cl] [-a AD] DOSYA [YÖNLENDİRMELER]]\n" +#~ " DOSYA'yı yeni bir süreç oluÅŸturmadan kabukla deÄŸiÅŸtirip çalıştırır.\n" +#~ " EÄŸer DOSYA belirtilmemiÅŸse, kabukta YÖNLENDİRMELER etkili olur.\n" +#~ " EÄŸer ilk argüman -l ise, login'in yaptığı gibi DOSYAya aktarılan\n" +#~ " sıfırıncı argümana bir tire yerleÅŸtirilir. -c seçeneÄŸi verilmiÅŸse,\n" +#~ " DOSYA boÅŸ bir ortamda çalıştırılır. -a seçeneÄŸi verilirse kabuk,\n" +#~ " DOSYAya ADı 0. argüman (argv[0]) olarak aktarır. EÄŸer DOSYA\n" +#~ " çalıştırılamazsa ve kabuk etkileÅŸimli deÄŸilse, `execfail' kabuk\n" +#~ " deÄŸiÅŸkeni etkin olmadıkça kabuk çıkar." + +#~ msgid "Logout of a login shell." +#~ msgstr "" +#~ "\rlogout\n" +#~ " Oturum kabuÄŸundan çıkıp oturumu kapatır." + +#~ msgid "" +#~ "For each NAME, the full pathname of the command is determined and\n" +#~ " remembered. If the -p option is supplied, PATHNAME is used as the\n" +#~ " full pathname of NAME, and no path search is performed. The -r\n" +#~ " option causes the shell to forget all remembered locations. The -d\n" +#~ " option causes the shell to forget the remembered location of each " +#~ "NAME.\n" +#~ " If the -t option is supplied the full pathname to which each NAME\n" +#~ " corresponds is printed. If multiple NAME arguments are supplied " +#~ "with\n" +#~ " -t, the NAME is printed before the hashed full pathname. The -l " +#~ "option\n" +#~ " causes output to be displayed in a format that may be reused as " +#~ "input.\n" +#~ " If no arguments are given, information about remembered commands is " +#~ "displayed." +#~ msgstr "" +#~ "\rhash [-lr] [-p DOSYAYOLU] [-dt] [AD]\n" +#~ " AD argümanları olarak belirtilen komutların tam dosya yollarını\n" +#~ " hatırlar, böylece müteakip çaÄŸrılarda aranmalarına gerek kalmaz.\n" +#~ " Komutlar $PATH içinde listelenmiÅŸ dizinler aranarak bulunur. -p\n" +#~ " seçeneÄŸi dosya yolu aramalarını engeller ve ADın konumu olarak\n" +#~ " DOSYAYOLU kullanılır. -r seçeneÄŸi hatırlanan tüm konumları kabuÄŸun\n" +#~ " unutmasına sebep olur. -d seçeneÄŸi her AD için hatırlanan konumun\n" +#~ " kabuk tarafından unutulmasına sebep olur. -t seçeneÄŸi verildiÄŸinde\n" +#~ " her ADa karşılık gelen dosya konumları basılır. -t seçeneÄŸi ile çok\n" +#~ " sayıda AD verilirse, AD hatırlanan tam dosya yolundan önce basılır.\n" +#~ " -l seçeneÄŸi çıktının girdi olarak tekrar kullanılmasını saÄŸlayacak\n" +#~ " biçimde basılmasını saÄŸlar. Hiç argüman belirtilmezse ya da sadece\n" +#~ " -l seçeneÄŸi belirtilirse hatırlanan komutlar hakkında bilgi basılır." + +#~ msgid "" +#~ "Display helpful information about builtin commands. If PATTERN is\n" +#~ " specified, gives detailed help on all commands matching PATTERN,\n" +#~ " otherwise a list of the builtins is printed. The -s option\n" +#~ " restricts the output for each builtin command matching PATTERN to\n" +#~ " a short usage synopsis." +#~ msgstr "" +#~ "\rhelp [-s] [KALIP]\n" +#~ " YerleÅŸik komutlar hakkında yardım bilgisi gösterir. KALIP " +#~ "belirtilmiÅŸse,\n" +#~ " help KALIP ile eÅŸleÅŸen tüm komutlar için yardım bilgisi gösterir, " +#~ "aksi\n" +#~ " takdirde yerleÅŸikler listelenir. -s seçeneÄŸi ile yardım bilgisi " +#~ "yerine\n" +#~ " komutun kullanımını gösteren sözdizimini basar." + +#~ msgid "" +#~ "By default, removes each JOBSPEC argument from the table of active jobs.\n" +#~ " If the -h option is given, the job is not removed from the table, but " +#~ "is\n" +#~ " marked so that SIGHUP is not sent to the job if the shell receives a\n" +#~ " SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove " +#~ "all\n" +#~ " jobs from the job table; the -r option means to remove only running " +#~ "jobs." +#~ msgstr "" +#~ "\rdisown [-h] [-ar] [İŞ_BELİRTİMİ ...]\n" +#~ " Seçeneksiz kullanımda her İŞ_BELİRTİMİ etkin iÅŸler tablosundan\n" +#~ " kaldırılır. -h seçeneÄŸi ile iÅŸ tablodan kaldırılmaz ama imlenir\n" +#~ " böylece kabuk bir SIGHUP alırsa bunu iÅŸe göndermez. İŞ_BELİRTİMİ\n" +#~ " verilmeden -a seçeneÄŸinin kullanılması durumunda iÅŸ tablosundaki\n" +#~ " tüm iÅŸler kaldırılır. İŞ_BELİRTİMİ verilmeden -r seçeneÄŸinin\n" +#~ " kullanılması durumunda ise sadece çalışmakta olan iÅŸler kaldırılır." + +#~ msgid "" +#~ "One line is read from the standard input, or from file descriptor FD if " +#~ "the\n" +#~ " -u option is supplied, and the first word is assigned to the first " +#~ "NAME,\n" +#~ " the second word to the second NAME, and so on, with leftover words " +#~ "assigned\n" +#~ " to the last NAME. Only the characters found in $IFS are recognized " +#~ "as word\n" +#~ " delimiters. If no NAMEs are supplied, the line read is stored in the " +#~ "REPLY\n" +#~ " variable. If the -r option is given, this signifies `raw' input, " +#~ "and\n" +#~ " backslash escaping is disabled. The -d option causes read to " +#~ "continue\n" +#~ " until the first character of DELIM is read, rather than newline. If " +#~ "the -p\n" +#~ " option is supplied, the string PROMPT is output without a trailing " +#~ "newline\n" +#~ " before attempting to read. If -a is supplied, the words read are " +#~ "assigned\n" +#~ " to sequential indices of ARRAY, starting at zero. If -e is supplied " +#~ "and\n" +#~ " the shell is interactive, readline is used to obtain the line. If -n " +#~ "is\n" +#~ " supplied with a non-zero NCHARS argument, read returns after NCHARS\n" +#~ " characters have been read. The -s option causes input coming from a\n" +#~ " terminal to not be echoed.\n" +#~ " \n" +#~ " The -t option causes read to time out and return failure if a " +#~ "complete line\n" +#~ " of input is not read within TIMEOUT seconds. If the TMOUT variable " +#~ "is set,\n" +#~ " its value is the default timeout. The return code is zero, unless " +#~ "end-of-file\n" +#~ " is encountered, read times out, or an invalid file descriptor is " +#~ "supplied as\n" +#~ " the argument to -u." +#~ msgstr "" +#~ "\rread [-ers] [-u DSYTNT] [-t ZMAÅžM] [-p İSTEM] [-a DİZİ]\n" +#~ " [-n KRKSAY] [-d AYRAÇ] [İSİM ...]\n" +#~ " Standart girdiden ya da -u seçeneÄŸi ile saÄŸlanan DoSYaTaNıTıcıdan " +#~ "tek\n" +#~ " satır okur ve ilk sözcük ilk İSİMe, ikinci sözcük ikinci İSİMe ve " +#~ "böyle\n" +#~ " giderek, aradaki sözcükler ve ayraçlar son İSİMe kadar atanır. " +#~ "Satırı\n" +#~ " sözcüklere ayırmakta sadece $IFS deÄŸiÅŸkeninin deÄŸerindeki " +#~ "karakterler\n" +#~ " kullanılır. Tersbölü satırın devam ettirilmesi için ve kendinden " +#~ "sonra\n" +#~ " gelen özel karakterlerin yorumlanması için kullanılabilir. Hiç " +#~ "isim\n" +#~ " verilmemiÅŸse, satırın tamamı okunur ve REPLY deÄŸiÅŸkenine atanır. -" +#~ "r\n" +#~ " verildiÄŸinde tersbölü bir önceleme karakteri olarak ele " +#~ "alınmaz,\n" +#~ " dolayısıyla tersbölü-satırsonu çifti satırın alt satırda devam " +#~ "edeceÄŸini\n" +#~ " belirtmekte kullanılamaz. -d ile satırın satırsonu karakterine " +#~ "kadar\n" +#~ " deÄŸil AYRAÇ karakterine kadar okunması saÄŸlanır. -p ile " +#~ "girdi\n" +#~ " beklendiÄŸini belirtecek İSTEM dizgesi satırsonu karakteri " +#~ "olmaksızın\n" +#~ " görüntülenir. İstem sadece girdi bir uçbirimden gelecekse " +#~ "gösterilir.\n" +#~ " -a ile sözcükler sırayla DİZİ dizisinin elemanlarına atanır; dizinin " +#~ "ilk\n" +#~ " elemanının indisi 0'dır; atama yapılmadan önce DİZİ dizisinin " +#~ "tüm\n" +#~ " elemanları silinir; diÄŸer İSİM argümanları yoksayılır. -e ile " +#~ "kabuk\n" +#~ " etkileÅŸimliyse, satırı saÄŸlamak için readline kullanılır. -n " +#~ "ile\n" +#~ " satırın okunması KRKSAYıncı karakterde sona erer; satırın kalanı " +#~ "yok\n" +#~ " sayılır. -s ile sessiz kipe girilir, girdi bir uçbirimden " +#~ "geliyorsa\n" +#~ " karakterler yansılanmaz. -t ile satır ZMAÅžM saniye sonra " +#~ "hala\n" +#~ " sonlandırılmamışsa read zamanaşımına düşer ve hata döner. " +#~ "$TMOUT\n" +#~ " deÄŸiÅŸkeni bir deÄŸerle atanmışsa deÄŸeri öntanımlı zamanaşımı " +#~ "deÄŸeri\n" +#~ " olarak ele alınır. Bu seçenek, girdi bir uçbirim ya da " +#~ "boruhattından\n" +#~ " okunmuyorsa etkisizdir. Dosyasonu karakteri (Ctrl-D) " +#~ "saptanmadıkça,\n" +#~ " okuma zamanaşımına düşmedikçe ya da -u seçeneÄŸi ile saÄŸlanan\n" +#~ " DoSYaTaNıTıcı geçersiz olmadıkça dönüş durumu sıfırdır." + +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N\n" +#~ " is omitted, the return status is that of the last command." +#~ msgstr "" +#~ "\rreturn [N]\n" +#~ " Bir iÅŸlevin N deÄŸeri ile dönerek çıkmasına sebep olur. N verilmezse\n" +#~ " son komutun dönüş durumu döner." + +#~ msgid "" +#~ "For each NAME, remove the corresponding variable or function. Given\n" +#~ " the `-v', unset will only act on variables. Given the `-f' flag,\n" +#~ " unset will only act on functions. With neither flag, unset first\n" +#~ " tries to unset a variable, and if that fails, then tries to unset a\n" +#~ " function. Some variables cannot be unset; also see readonly." +#~ msgstr "" +#~ "\runset [-f] [-v] [AD ...]\n" +#~ " ADı belirtilen her iÅŸlev ya da deÄŸiÅŸken kaldırılır. -v verilmiÅŸse,\n" +#~ " iÅŸlem sadece kabuk deÄŸiÅŸkenlerine uygulanır. -f verilmiÅŸse, iÅŸlem\n" +#~ " sadece kabuk iÅŸlevlerine uygulanır ve iÅŸlev tanımı kaldırılır.\n" +#~ " Hiçbir seçenek verilmemiÅŸse, unset önce bir deÄŸiÅŸkeni kaldırmayı\n" +#~ " dener, baÅŸarısız olursa bir iÅŸlevi kaldırmayı dener. Salt-okunur\n" +#~ " deÄŸiÅŸkenler ve iÅŸlevler kaldırılamaz." + +#~ msgid "" +#~ "NAMEs are marked for automatic export to the environment of\n" +#~ " subsequently executed commands. If the -f option is given,\n" +#~ " the NAMEs refer to functions. If no NAMEs are given, or if `-p'\n" +#~ " is given, a list of all names that are exported in this shell is\n" +#~ " printed. An argument of `-n' says to remove the export property\n" +#~ " from subsequent NAMEs. An argument of `--' disables further option\n" +#~ " processing." +#~ msgstr "" +#~ "\rexport [-nf] [İSİM[=DEÄžER] ...]\n" +#~ "export -p\n" +#~ " Ortamdaki çocuk sürece aktarılacak her İSİM'i imler. -f " +#~ "verilmiÅŸse\n" +#~ " İSİM'ler kabuk iÅŸlevleridir, aksi takdirde kabuk " +#~ "deÄŸiÅŸkenleridir.\n" +#~ " -n seçeneÄŸi verilirse aktarılacak İSİM'ler artık imlenmez. " +#~ "İSİM\n" +#~ " verilmemiÅŸse veya -p seçeneÄŸi verilmiÅŸse aktarılan İSİM'lerin " +#~ "listesi\n" +#~ " gösterilir. -p seçeneÄŸi çıktının girdi olarak tekrar " +#~ "kullanılabilir\n" +#~ " biçimde gösterilmesini saÄŸlar. Bir deÄŸiÅŸken isminden sonra " +#~ "=DEÄžER\n" +#~ " geliyorsa deÄŸer deÄŸiÅŸkenin deÄŸeri yapılır. `--' ile seçenek " +#~ "iÅŸlemleri\n" +#~ " kapatılır." + +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may\n" +#~ " not be changed by subsequent assignment. If the -f option is given,\n" +#~ " then functions corresponding to the NAMEs are so marked. If no\n" +#~ " arguments are given, or if `-p' is given, a list of all readonly " +#~ "names\n" +#~ " is printed. The `-a' option means to treat each NAME as\n" +#~ " an array variable. An argument of `--' disables further option\n" +#~ " processing." +#~ msgstr "" +#~ "\rreadonly [-af] [İSİM[=DEÄžER] ...]\n" +#~ "readonly -p\n" +#~ " Her İSİM'i salt-okunur olarak imler. Bu İSİM'lerin deÄŸerleri\n" +#~ " müteakip çaÄŸrılarda deÄŸiÅŸtirilemez. -f seçeneÄŸi verilirse, her\n" +#~ " İSİM bir kabuk iÅŸlevi olarak imlenir. -a seçeneÄŸi verilirse, her\n" +#~ " isim bir dizi deÄŸiÅŸkeni olarak ele alınır. Hiç argüman verilmezse\n" +#~ " veya -p seçeneÄŸi verilirse salt-okunur isimlerin hepsi basılır. Bir\n" +#~ " deÄŸiÅŸken isminden sonra bir =DEÄžER geliyorsa DEÄžER deÄŸiÅŸkenin deÄŸeri\n" +#~ " yapılır. `--' ile seçenek iÅŸlemleri kapatılır." + +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" +#~ " not given, it is assumed to be 1." +#~ msgstr "" +#~ "\rshift [N]\n" +#~ " $N+1 ... konumsal parametreleri $1 ... olarak ele alınır.\n" +#~ " N verilmezse 1 kabul edilir." + +#~ msgid "" +#~ "Suspend the execution of this shell until it receives a SIGCONT\n" +#~ " signal. The `-f' if specified says not to complain about this\n" +#~ " being a login shell if it is; just suspend anyway." +#~ msgstr "" +#~ "\rsuspend [-f]\n" +#~ " Bu kabuÄŸun çalışmasını bir SIGCONT sinyali alana kadar askıya alır.\n" +#~ " -f seçeneÄŸi kullanıldığında kabuk bir giriÅŸ kabuÄŸu olsa bile askıya " +#~ "alınır." + +#~ msgid "" +#~ "Print the accumulated user and system times for processes run from\n" +#~ " the shell." +#~ msgstr "" +#~ "\rtimes\n" +#~ " Kabukta çalışan süreçlerden toplanan kullanıcı ve sistem zamanlarını " +#~ "basar." + +#~ msgid "" +#~ "For each NAME, indicate how it would be interpreted if used as a\n" +#~ " command name.\n" +#~ " \n" +#~ " If the -t option is used, `type' outputs a single word which is one " +#~ "of\n" +#~ " `alias', `keyword', `function', `builtin', `file' or `', if NAME is " +#~ "an\n" +#~ " alias, shell reserved word, shell function, shell builtin, disk " +#~ "file,\n" +#~ " or unfound, respectively.\n" +#~ " \n" +#~ " If the -p flag is used, `type' either returns the name of the disk\n" +#~ " file that would be executed, or nothing if `type -t NAME' would not\n" +#~ " return `file'.\n" +#~ " \n" +#~ " If the -a flag is used, `type' displays all of the places that " +#~ "contain\n" +#~ " an executable named `file'. This includes aliases, builtins, and\n" +#~ " functions, if and only if the -p flag is not also used.\n" +#~ " \n" +#~ " The -f flag suppresses shell function lookup.\n" +#~ " \n" +#~ " The -P flag forces a PATH search for each NAME, even if it is an " +#~ "alias,\n" +#~ " builtin, or function, and returns the name of the disk file that " +#~ "would\n" +#~ " be executed." +#~ msgstr "" +#~ "\rtype [-afptP] AD [AD ...]\n" +#~ " Her ADın bir komut ismi olarak kullanılırsa nasıl yorumlanması\n" +#~ " gerektiÄŸini belirtir.\n" +#~ "\n" +#~ " -t seçeneÄŸi verildiÄŸinde, AD bir takma ad ise `alias', bir iÅŸlev ise\n" +#~ " `function', bir yerleÅŸik komut ise `builtin', bir disk dosyası ise \n" +#~ " `file' veya bir anahtar sözcük ise `keyword' sözcüğünü basar.\n" +#~ "\n" +#~ " -p seçeneÄŸi verildiÄŸinde, AD, `type -t AD' çıktısı file sonucunu\n" +#~ " vermiyorsa hiçbir ÅŸey dönmez, aksi takdirde çalıştırılacak disk\n" +#~ " dosyasının ismi basılır.\n" +#~ "\n" +#~ " -a seçeneÄŸi verildiÄŸinde, isim çalıştırılabilir dosyasının\n" +#~ " bulunabileceÄŸi yerleri basar. Bu, sadece ve sadece -p seçeneÄŸi\n" +#~ " kullanılmamışsa takma adları, yerleÅŸik komutları ve iÅŸlevleri\n" +#~ " de içerir.\n" +#~ "\n" +#~ " -f seçeneÄŸi belirtilmiÅŸse type kabuk iÅŸlevlerini bulmaya çalışmaz.\n" +#~ "\n" +#~ " -P seçeneÄŸi her ADiçin, bir takma ad, yerleÅŸik komut veya iÅŸlev " +#~ "olmasa\n" +#~ " bile bir yol araması yapılmasını için zorlar ve çalıştırılabilir " +#~ "disk\n" +#~ " dosyası ismi ile döner." + +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if\n" +#~ " `-S' is supplied, the current value of the mask is printed. The `-" +#~ "S'\n" +#~ " option makes the output symbolic; otherwise an octal number is " +#~ "output.\n" +#~ " If `-p' is supplied, and MODE is omitted, the output is in a form\n" +#~ " that may be used as input. If MODE begins with a digit, it is\n" +#~ " interpreted as an octal number, otherwise it is a symbolic mode " +#~ "string\n" +#~ " like that accepted by chmod(1)." +#~ msgstr "" +#~ "\rumask [-p] [-S] [KİP]\n" +#~ " Kabuk sürecinin dosya oluÅŸturma maskesini KİP olarak ayarlar.\n" +#~ " -S seçeneÄŸi bir KİP olmaksızın verilirse, maske sembolik kipte\n" +#~ " gösterilir. -S seçeneÄŸi çıktının sembolik olmasını saÄŸlar, yoksa\n" +#~ " sekizlik deÄŸer basılır. -p seçeneÄŸi bir KİP olmaksızın verilirse,\n" +#~ " maske, kabuÄŸa girdi olarak verilebilecek biçemde gösterilir. KİP\n" +#~ " bir rakam ile baÅŸlıyorsa sekizlik bir sayı olarak yorumlanır;\n" +#~ " rakamla baÅŸlamıyorsa, chmod(1) komutundaki gibi bir sembolik kip\n" +#~ " maskesi olarak yorumlanır. EÄŸer KİP verilmezse, maskenin mevcut\n" +#~ " deÄŸeri gösterilir." + +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If\n" +#~ " N is not given, all currently active child processes are waited for,\n" +#~ " and the return code is zero. N is a process ID; if it is not given,\n" +#~ " all child processes of the shell are waited for." +#~ msgstr "" +#~ "\rwait [N]\n" +#~ " Belirtilen süreci bekler ve sonlandırma durumunu raporlar. N\n" +#~ " verilmezse, o an etkin olan tüm süreçler için beklenir ve sıfır\n" +#~ " durumu ile dönülür. N bir süreç kimliÄŸidir; verilmezse kabuÄŸun\n" +#~ " tüm alt süreçleri için beklenir." + +#~ msgid "" +#~ "Create a simple command invoked by NAME which runs COMMANDS.\n" +#~ " Arguments on the command line along with NAME are passed to the\n" +#~ " function as $0 .. $n." +#~ msgstr "" +#~ "\rfunction AD { KOMUTlar ; }\n" +#~ "\tveya\n" +#~ "AD () { KOMUTlar ; }\n" +#~ " ADıyla çaÄŸrılarak KOMUTları çalıştıran basit bir komut oluÅŸturur.\n" +#~ " AD ile birlikte verilen komut satırı argümanları iÅŸleve $0 .. $N\n" +#~ " olarak aktarılır." + +#~ msgid "" +#~ "Toggle the values of variables controlling optional behavior.\n" +#~ " The -s flag means to enable (set) each OPTNAME; the -u flag\n" +#~ " unsets each OPTNAME. The -q flag suppresses output; the exit\n" +#~ " status indicates whether each OPTNAME is set or unset. The -o\n" +#~ " option restricts the OPTNAMEs to those defined for use with\n" +#~ " `set -o'. With no options, or with the -p option, a list of all\n" +#~ " settable options is displayed, with an indication of whether or\n" +#~ " not each is set." +#~ msgstr "" +#~ "\rshopt [-pqsu] [-o UZUN-SEÇENEK] SÇNKADI [SÇNKADI...]\n" +#~ " İsteÄŸe baÄŸlı kabuk davranışlarını kontrol eden deÄŸiÅŸken deÄŸerlerini " +#~ "açıp\n" +#~ " kapar. -s ile belirtilen her SÇNKADInı etkinleÅŸtirir. -u ile " +#~ "belirtilen\n" +#~ " her SÇNKADInı iptal eder. -q ile normal çıktıyı engeller; dönüş " +#~ "durumu\n" +#~ " SÇNKADInın etkin olup olmadığını gösterir. -o ile set yerleÅŸiÄŸinin " +#~ "-o\n" +#~ " seçeneÄŸinde kullanılabilecek SÇNKADI deÄŸerlerini sınırlar. Seçeneksiz " +#~ "ya\n" +#~ " da -p seçeneÄŸi ile tüm atanabilir seçenekleri etkin olup " +#~ "olmadıklarını\n" +#~ " belirterek listeler." + +#~ msgid "" +#~ "For each NAME, specify how arguments are to be completed.\n" +#~ " If the -p option is supplied, or if no options are supplied, " +#~ "existing\n" +#~ " completion specifications are printed in a way that allows them to " +#~ "be\n" +#~ " reused as input. The -r option removes a completion specification " +#~ "for\n" +#~ " each NAME, or, if no NAMEs are supplied, all completion " +#~ "specifications." +#~ msgstr "" +#~ "\rcomplete [-abcdefgjksuv] [-pr] [-o SEÇENEK] [-A EYLEM] [-G KALIP]\n" +#~ " [-W SÖZLİST] [-P ÖNEK] [-S SONEK] [-X SÜZGEÇ] [-F İŞLEV]\n" +#~ " [-C KOMUT] [AD ...]\n" +#~ " Her AD için argümanların nasıl tamamlanmaları gerektiÄŸi belirtilir.\n" +#~ " -p seçeneÄŸi verilirse veya hiç seçenek verilmezse, mevcut tamamlama\n" +#~ " belirtimleri girdi olarak yeniden kullanılabilir ÅŸekilde basılır.\n" +#~ " -r seçeneÄŸi her AD için tamamlama belirtimini kaldırır,\n" +#~ " hiç AD belirtilmezse tümü kaldırılır." diff --git a/bash-5.1/po/uk.gmo b/bash-5.1/po/uk.gmo new file mode 100644 index 0000000000000000000000000000000000000000..0e79dd2c71f85bb4bb9d1bb7ebc81c6cd9365fae GIT binary patch literal 209517 zcmeF42Yg&tmH(e*NSG8LB!q+{@Zz|}mRv$ea0-!aIaXp@#**WZY=}nENSauhQD#PV z3?cMTmj!lV>22w~{HYrtbav^zE(@X84J>VG`G0@s-22{}k*pXN{{Q{_KYu09zj^Q7 zdhWUBoO^D0U%%TOo}Tcxu`5YV1%G^8lKdCHZ#qLyljMbKljKbBMd01QkAdfd{|+t% zPhFQJM}fWIox$zk5#W{Jy}%Lh1n?2yy}@UICxUMU?+$((EP>ww$vXK-cz;{K6W4n> z-Js%a2UU(y@HB8gco*;=z!ZE5sQf<&9uIyDya)IV@D%Vj;7ag>4M{>3k_*7|z-dtR zc_p|J`~-M6uymH^duqV5K*hfVTmd%0CE#;F)$`q;==fPs<+~N+|K!g1@$zi~mvcWF z@Cl&G@y3AP1VxwQ&URb@_HcgzD0)tT%I}Gw=+R`5$v%r^A_` z;$0Z-%ivwPp9K}}Mo{ry0^S|G8C1Ex5blpS$Df}HiY^<#Zm=&rZ-T1#<3XkSGVo;Z zZQ=gYpxXZy@E%~-xlXTpf-3h~@N{q+sC2FYSAmZORqr=~_XIx$o(TR3R5`lt=jq)Y zJf8b*Q1$5rQ}Aj~={_7(y7NB23tj@kipk}m+Trn_ z==ApR{Bxk{bw`*;=_~`qkLQN_ZJ^S-5>&k#pz?nLcoO&$@SfniK;`!(Q04zFsC4f@ zXA{3H1y%k_LA@`7YM+ON=dTa=K~Qx2Dk!?$@dEFcOF^Y`7ASta0z4IbGI$F3YVZW` z!{E{2*Fc5;KB)G*%Y~j!3aXrILDlO55Yi<>phU)#!}B+R;>&*lmEKpu?<`J|?}6LE zk8g51ow(I;IjC^=1-C9rl1-rG$>T5f_s;~6;rd(|BtJnJ>}YQHFe?n@=@q>ha`DO zB}rb(^JiA!0n*<(og}My|AGdxhr2l~zARD=V?ms2Tk%T+`rAcx8z&8^II7-LLidRZ#IB38vul zz+=F7gGYcL1x1I?fNH;6K()`0LABd21D0Or?@t32Zw0s$>;WG^{T~WmLOE}H1O1qK zUh)=r5j^nLBpD~%Ti)jUbL!hEBhOcZYL7R)16@IeZv%I6zx{nlavkmPJWzaf;zvN} zw*-6^*h3{>#q*DRB1t|+I?Yd_L&$&Ir{Q(5_j6A7PeD|*(?h?MBu@n&@nvX4yyL&> zcm*hac@g*_@TXt%c6rO!ov!Z!FC@QDf!`+GyWB#(Xt-Z|n>@Kc{l`25pZ-(mONV^v zt@L5izd2cyYynSMw8-c>41SCI8Bp{c>RM#&{~(ZP$v7xF9{|Gc(NSY+~M11SF36|f4P&HW=m#d|xriTgVpu_*aG^t=?*{prUnO8UStQ1bCr z;IZJlz&nE<1s_Viz5=RTm)~Vkayd8!o(6spRC&GyD&C#%>Ub*n1oAx-R61`tZc*|B z@B`p0Y3SG8Eu?pkMJ9KrK-K5bpy=>-pybmF!Fz#k0+)fG2A6`r23LTmp5*Cl0agFY z!IQyj!5;95p!ofrpwjs~cslqCQ1bP}lNXtMJquJn7y#8@{svU~O>iCf98mE;2Hp?+ z5vYE#?4DlE9#Hz=B2eWU21T#OfU3{4K+)$_pyIt9Tn@e$R6gGa&jRmyil@H?RQ+!N z{~mk_sQN5Db&=UWgP_7c85AGA4^;g>2C9DF0hQm8r+K)$gDQVNcmX&Gc7rbiRqoG$ zD#tHCmFv`ddAn{7SOZt_{8<6t52`(W67cwYFG^DG?+302uK>>gpA_!j04m*E0+v$0 zUk8d$_kyb5--613oj-P=l#~Di& znO%4>sP>rw)!t7J_b&z&?!%zy@FVa@@c1*lT&IAd-zA{*d^O<1K=I4dLDAVu zQ2pcEp!lF`smD7J6o0M(*MM6=(XkospB3&u1d0wn21S?OfvdqYmpT7j2CDp5gOU?d zpwfE;sQg|Bsy^=nF9N>{s$46UJKfF(MYr9c_+T1T{O5qG|3||6TS4W2^a_8!5mY-) zfTHu0!TW;m0e6AF0#||;uXK9Mfa3pWgR1wd!6o1aLFuXQgG1oTRUYo4py>N#Q009I zcrN%R@G|g6pz_~zrkAq{-iQ0Ag5u*3fwJSi3yMB}1XZ4+SG#<>4=B1`42o`-fy!?m zsB%35RJ@mf;>$OJ1K{^S^~ZD8IQD~gIt2#O!?bsy)ab3v8kYEbR>G*IRJ z2&nq}GGKDHr+YNm&+`jF)%&ra`pHe8`1MDi_-^TaJ)Io^9}KEKF9%hgFM&J3u5-LT z4*=D!SAr=x0g4`v14Z{&gDUrjLDBu20e=drU;GY~d|z^|(`gu#9C!#QdcOcv|9)$@ z|2n94|0SsU-tB%~uKRU|ri{&&U&UjEgf`eiRDek+6OH;)39&vQZbhtGm%g13OG*RdCRymg?$?E*{S zV?o)=PX#4MUlj0@pwj4+E9o^T738=nrt1`>*#p{qMhNQ8L2) zgTPC`_kwEoV>Ubgoeb)J6jVQ(0o7060A2)s4U~L2ZHvpXy`akba!_*eZJ_w&lc4B* zY@f^HK2YuTY*6Wa0Ne=P3W~p1Z}oN<1CQYT8Q}Tg^FY!6E1>$(i5D+QZUDD~l4BnQ zYv8(VUcMKAdj1Vi<>~A9bglxG&a=T8@C)D|c=08Rl8eFTfa2qCfhyP0mwG+7f>&|> za8PpK>)>v%Z~LO;0pK%1$%`Kbykdv*&%XxzHMo`cOLw|`ybsj<>p=0@FG2O+B?GSS z20_v9C7{~p7Es~3cP&bGfLDOx>sNrw!7qaS;2%M?%eDu&oOmRta=scA-~JI4pDx+$ z{I>~|JgtC|E3X1C0zV5X+zEqD@B4t_=W9U8rAL7(&)Y$@<9EOd!Q+O!e7nHS+&>?@ z6ubr0`<^}C4%49M`zlcU{T)#JfBa=m|4TsCrva+HZvvIh&q0N|aIg2!kZ@^99 z(kopKPJoj8j|4@Rw}O(RKLS{hjU+e8-P0N?w7X(o^;J`eM!Vy$zJySXQUq zy6_i*D#zrtPM;@&%I{|I6!06M(*1pSenMkW@~ESel>FYl-S zj{Zx!-v{?BrX8L}JKiBl9{hCrAJ5tIsIn%hxgatv?%#!;=TT6?7&6nllL!5-c0!SePB^?EARLJtLvkQPr6!1yBmI~CZjt#1Ui*hd$+OAl{`D%Z&cj{FWzh2%5c^2pUs~x(K0rAJujxuY zMfxYfMDHTp53cP>-pl>Val+g{de!}1$#cN(gL`=XXqaza(eo*cCIZ*b>FF?tk-Y@tF~qwGr28bBzSxz}g_6s``_ixO z_vNnSbcMgA%jD|QK*@{OfRbk)0L7P|2hRf+f2+&Ji}weIxPJeDIRnN13i97@!1M2>JpxWb{Uv(vq1fK{>UfucE&gb_7_5Ox% z{~2%>_xJdX({U1%-g^otx%OpHe1GTv>Pj8~J{0T)Zv)kyy}$K#crYlrbu+jb{5ZG= zJnnb?egZ@cC9ef1!J9y}*RtQc9BqIq=LP!5!fGKYG0$2CBZF0@eSP-sbeW2vocmgLeYI1d3n32`&eJ532poNEVwM z83k3ZM}Y^y4}&UK@1n&Bz;_-yZ{> z&i$Lgdx4(^MgL!bE%2&4Ew=vj8Bp?PQE9QsgYBT?=ZiqK^Ls(%`&&@-z1LBTO)gG> zO8?cM_~qlE+M$a{0=3`S;0fR(z&+qI!0W*ugKEF(F^kP!d=jYi-wxgd{2HkK|6}l3 z;PPV^n>@N1#Oz6a2Ob3;iPBd&?*=Nr4WQ)74d5{NE$||6%Uu?m{C^Di0q)-cs-N9( zSI_4wpvrl|agM9Ni@3iKTmwD~RQtUKlsx(=xDs4`x5cI}2EZqA-vY%qi;iDx@~0P+ z9DgFH@NWdw&%Xlh1c7*cE;c#!Oz;ZsPd;t2jr&@l+W$k~YVg#1dHZbx zCAS7a)$gA`$(z&e?fms5P;~kzxEVYnU2J-4BH-&mwfnEZ3b^@nPv@1O>T|{tr)xJT z`s@h!XmBa_{|ufCegl;J`Yot>A9==N8+Uets%Hz7y!Zh)4&HmI-`@zTJ#PZng7;kJ zd~yjW{(2Iqa(y3E|Ju3S>G3R3`t?WPap3Y5&Ufd6%6|vA4s3#t0$&2E{3};_yIl?H z{_&vbc{3>f`Y|Ya-hGwxNd>%``%i!qV9%Leo@ao=-2Wbw9=d9^^XpBZ`u7oQ9EZRr z_b&#wfhTq^HoNv}P)-bvdyWoaX)@ zDEa$6Fa^8Txm-LW;L|~+f8=^^&$GdYa=!=M3Vs&60KDf0r{m?|BJLS>CHLWaBbWNO z{!Zif)4^fzEui}CDP4?BxL03N`POsEzEvNofciT+;5GdIiamiZ!IZd7-o23D;<<-} zaBtxED3|^g5hnh9HvIT?z?TNR2vo42aBbwri@$vX1^&#Fp8DzL=e|Hb~VeZ6-_vZfZxW3JGD%U@Ay^-g;xz_Oe zNUkZazvp6TYk&U^zCHZ@I4HgQVDJ@OpXT?AxxUEtDz4A-?BSsPa0S@k3;6dDT>Jbs z`3xwX{8`?g6lm~x?qA1sHqXS*uLs`_J{;W3r9Sd%@C97oiBmlKL)t(3D2GvUP!LomGb=-{9btXIe!0J_$_(!e188u z_y_Phu2*qM&+AWe>J09;famH#_`}tebdm1)pk&DJx$0ccp9`M-o0D@@OM7f-}3yi;I&+*5$Bnp{)V~s@op*4?#`vZii34HTpr2wTyN#l-+zGz z!*AW6$aQvzcbmd-|3|&xZ#CCO`-M#aO4d#iW}NG9_gTmhv`F%QZrIU~3T2e^odBoA*-FWuO@LTsU z=J%Jm-o@`b^X?m9FZch*brF~Tjtc2~g8Q4ee-zg*xVCfupCQa$2qT;3R<1kq>`vUj z7yMv&{|BDy?_arQxxU5qk6iKZpZM|QaMK{pOSuNQp2o8qLK?pUZ{d>8{$C-i;8gND zhUXi&Cc^XIfnVo3QRN8F{)YFz;JPK;9|S+def(?j<44@DAO!u?0N|1Q@uF8y5|@PvTh;n_R5zR&$RTw`2MP{6|9QT%=&*CToN zQ?9pgZQ%YXT;2SBHh2=Kzvpv(oa>cbr*qwta>l<`gdcYY_r!y}%Jm7Z zuW{+`eOwRadQ1rOJFtiQ8@Nv9dKlL)xgNl!ziF=HxONck_gp*q{ge=wpV{BBl;>VN z@8`)6!qa>4Y$?BA#Pb7OC9bD){T2>F zj!S=cbujunQd)M%d@R|_f&m?*GDC#?q$uCcir{0KGUk!YkE|jYBaal z)6sOaK0RHokr-hH(&i+guJ(|n(#mRWe|@y9XlcDRb#T>D$+1UGm#3!cqZ`v@&5g^( z$gSC|G%UnOy)`;n89VlR7wS3;=xNE8{V&(a`- zE!PgFWYp}jw`%VCc-kn}CMpzL|Ec2X%1Wa_>$RveWNfBOmNl2GB0!*uh3SZ^XB*Rz z@))#gRT?vm3jc;ES;N$4NDtC&?cd&)zpGErzz`$VscP$BN(0SSj1LP1^TcCQc@VK@ zt5F`Uq#aF{B|JUbY^Af!O4^(q@perQOj-fN9%6AAr4ET()%}&U+-QhTtd7Qpk(tDs z`fAItD^Qd({egiZB#~KG|#d;JyM;Rt=tF?0DAl<3bC{q{p z1}aqtogNgY&;LdC;m%&sZPsjH$PCp3xKs8dd64xsK*FJ=IYw$Z49QSi0F-v(i>v zd$5siP#%*S%F0}AjLuG#8}oINsMaJ;$0biK1DBLYyGFILU&R@nZP2k=c?VY&bV=fF zR2ON`Q>Fhbsy{UmhM;ZL>nYirG~Vcftv$Q(Y6GSgzaE%`3e6b_z|qMvf)IHtS*`HH zOIBEB(gtZu-6Ms_t%IH!I#Gg0MJd;;B;#dh==GVbOK8^i)#?Ylk5{LrDidfS*O_T| zce-rU)2Y^`sv~J3ZWJ=bIu<2D6yTIq^_L*BVrI{ST9w=vT5EQ??PZ77m`CKrV$qRJSmy+5OUSsM9_cc<;}xdKD7@ml7ZZ%; z2kg-PXf8>xg!Wg1l#XHDTnOzkhltW`G8$w&v`O$7U6!7d_rf8Xt@89tTVYwWkqbQL~uEC+%zHn=W5hot~Y} z%&oLmaltTE*^JcA=tibBU(;C)f@s0pTJV4AdxqP_4`raAVAN*&)`J6nf;jQVB_d+psq zk}-wxk7Smm=S9s_Lp0;9vf0x%vSkgPGeXe7*k)G8Xj?Wa({)o5k#ou|G{*=^IwX&N zuVy9`nj+k0Dm@y4GLadZb;QboIcFVAhu5x9zshtMWOFmaY`KQ`x*)C3PuE$3vkRDY zvo#+~v=LyoS)RaHvB>d7I*r^`3y210vO#{c-I;zX=DKQC(l(?^6UKVPJRq&fFs8>8 zp^20$BeyiKO4g25_OD&p8lAa*c5G(VS}CrzvP!(wXJ_=A91m1mlM;8qzNN;=+7=c^ zG@Z*T6Jx^6Ab0t8zItk>D!(x4-88U!2#V4!v!=z8-VyR4)t;W7q<1V&r&^IZPm!ae z`+AN_`Lllr(k2KMrZrgsW;7Jj&%7iSd5t)^QE$PSO-n*y!kg*xJ~g49)G7yxiC6%8 z5o;mqp1_twmPJpR?u9_mEbEBPHIkW=8WU23P&CE{S-GfLp+W;TmTqpebknrERvLu% zvT;K6TD`#lUq%Wks*YLaVK_E67K>FX#dm>vg{n4jH^@@U9?96j&rqE~=+V%HBK5}c zQ7qKzou%DQz(RBqY)zIKAyCDgkRWD#P!0xEc3!CQMt$0XO;yHiz^o`Xy1=<{0Ifwo zBX)De8nugYgRz~Fq*QuvrBPp{(uT}v>Ox^5*p{@syVb6Po{ z2#o zt=UGcDcxy9Xg}e$BBFo4s5O`OnZqs`C|L?-Vdoi~Q zN6P(A>cRiL4*b{czggM-yzYB@g`+wCyS?|X)p?U%hPu<~N}N|RSy#pT{nbWmwmcQ@ zNAbVyOL`gfPh#`op^@irs@^6<`>-)l<1*t~b(cBV7=4%TTA!|3<@b!283y~)4Lm(B z9Sb2#n+JC6=-s(xFbFFTb5<4;4?)FVDZMpHb;BCu$e4beh1!(wFe_YcO*PT2{o@3* zk#-#PS6zqK@syyn)}%&5AC8cd$U+h${Gt&tRc0I? z&A#Bp8S6P#is#AEYU zB%62bac54l*)_W5ZI10=VdTQIQ1n9Js0gB@K&RJJlneBd{2!}~muIJ1dLqfJz!h>!3b2I;ykEqQggnAOvDRefQTx=EGUzjMvW^suJZEr`m{lN60w?1k`ouG z%5#Y1+$5rmRB(kj8_BrU5RcZLOjoX5wMKDkvCdFW_BSr@qICpMDucWTA()NfoU!%3 z&C4)6IwmjD)ljv`fC3h&wAL7T6jaj|dWe;e6V=?Z*!+|$YXlL>D_|y9_FRK|Gr(sn zo?I2DwzoFvso>Vz)drTE{nKf2ZZFY@4CI>!r$_2j2nhTG`=DZ7BaiXAkG|#WYu2Y| zz8K8XDwRAiV_=h*F??tW@9WvnUUaWc(-D|isxV@qYWu62 z+mXPrVXRz0D3w~vN@Xre$`bo=FhQ-G+cXtpruH6iNMm=MG>GzV>)md?qHLtJ2(Wb5 z-YuaMw>732b5kM>crB^E zPq9Z=K17mFKk{cxXR!YYPb<1S@y;;`CQT|Is=6UDEphx+u^Z)OSs;GQIi^E*E~kyz zTBbLVamEQsxNJkPkS?m*>ZeYiIj+20&(WV%22^$yf~{h_S@zq1?=Sj8z(*hBtiQz}C`c_r;1>XlI|g2+b07 zWDVUiT4CLQ2upQ|6 z*=!k>FL~S4`M7m2%7u7VoxMVqz>eO{+l=t=-WE5dq?k(#d2r6_zc}-?8YpbM7;)Gnui`m0l1^eB|J3= zOf;#JM9Mcu%Wa+$7!kcYfo|!?BDL?h+(2);@ z3^18B>12Xjlfz;V@)3W~UqsTV97BDlVoa%R)=+6?DGXL^44^oTio_Ci)ohfKMrioN zT+}fo8X_B)4Ogy1GOh@vw}{r3K}}gD_17@e;(HPwqaxE^rp_D_E*B1ih`Xwlekk&l$a;>ojQw;wK^dCNb zMM%y&EG=EA=dcw43o&2yvtr&<9u!i^;#Pe;C}IuA+KHjDc;`>yj9_xfa5;RF%f^QY zw=t%=#~3q6jE6Er$%rhd&tj@dJ>q0RTX~m=rBc^mEu3_GwKiKxHZ#G8Ng|dE#=Y5L zW2sCJZ%@miFRZKy!j=KU!P@9#qh7<#*Qm(GFRDKRqBd5B9zlf25{}O-CDWae3uCW` zJ!-a+%2phfQ~6+QxT3L9zDm)C+}M?2hy*FLRzaiHb;d*MjU^EoZ8N=Amna)tE0`#g z)C|&(f=4qz6_*59vUvanvw2Ay5wK7O3qE%-rV}ocU#yHVH@vJ6jT9v?-AlEuC)r|7 z86=j5&vD35oLtJ9qdkZ@t7uG>%||t|O6G*PaF9CB}F#;DevXXqw0Aq}cN5$hrc(bDxy`7dQu zqMloPxx$sGjZtY(T4d?gJv%om!vYQFG{qr0bu4FGc>;Ca(98$OV*j>91~G(66?;}@ z{J|Z*7M5y7Bb(6%blDPo;M^IvAegLX)rQv4)6W7GEXhp64bRLrC&$q1ZtR_>F}#UP zmV{a|=HHr~fkv$CnqWaUM-qF(N6qc|h5zBtit1n@0i)Pj4>KVbX zV;!xnmA0bbxScAEX~A#HrBB*I+E%*VfP)}m0B7#rn1P03jS7nl&@q-usRSX+Q!!b` zV;{r0SxpwPf2yL{%TP+IGrm8D&Ml3w@W#l65=*x~bnQPOs{D&spP8G~a*!W=rru;H z2htG^RC>lGmXZC_JI^YKz&I|>v?#($8P`Lk*<@wsN{B$0Y&`_kX5)o?2eAjMSkePw zSa#^85{2fswGoG1ra2R+f1N@dZpTI4#FYkfwXu|}Od{K7;fgo!*hMF3nblTI5&D*q z*vE?cH6zamE0D+0E{ys4WgI*wn$1Y!fnYei6J=ur3X2dm87YM)-N^ix#?cr6EJ~8r zWciNwZY{ZCG^0Kil5xSA`G)h}P5-k57!PT9j3hLzwV-AjD+MzdMq*+hTDoH5OjBEW zR&v;5niWH~KE&P2V)dD3Wp=FI&C;M57Nr$cAmN)a12fG~DVC49rkMn&)n}TNvpuV< z#(|wez3tBanbVO%h|(_i4Tsr-gC>{?G|5vqT$ajP&Lo(R)}52)vYJ~jnYNhARB^D8 zdp)c~TZ<-=G$vxHlPv55aXh8f-oDSrCKb#umYTLiV%k!Ig$~^*&&yf!iN|E* zOJKRK_BmMVB{tZyW$a4N?f&yDpHit>8=abkQQRP@V7~^g=a)2dRN34z^`R%$^wseY zUy^aSdj>PotSs@Vv_pA{^iDluS{mBQRt!%oKCRM{P_P6eTi1`-YCO^!G7B@_z^r$8%{22^I)TRCYq}u^GkZ$On~(X$5!A8r^-oQ0P&GK6AUm zL2RAdJ4zguVu)#lI?py}*mR~wzmD90gm%&6(+;>` z%&Q+gc$IWoJ6kkS!^kO$r+khz*rH*urS*Q0jD)7_L^*8X^l8 zriX&TrPzgV4LZB5TA%a5`Rwz5BBN)ql9?0MnOh4YTg|cPYo;u#y@&`C5W_ThcQd_` z$;%5Gm6?>$&sFJ_fs$9Pkk-UDSQE!#Fo(s@`GB1sw!A`F7oCdf!1gT{?CjescETQ3 zI&DTmugJ+O#jxiB|98+Ncf|7$&r_ zA;Qe#%Xc4H*{jrL)nL4YuK&AWl3r ze`Fn7fWat2RW^T!ZQEl(thJ$!0<4Ra)8RAa?(LOV(RXf$Id>ZSNNR^A+P3~|r;Q&p zxU^*KpU$3C9MTo5ameu;l&Lop$#Docno zYV=b&x+HmfDsGMFxY?xX&Tn~s zwEo_K-CJ@Et^S`a{xlDc2Fw!-v4i*y!7DMhHUsRx)$3xu3wFFX*D6_1G!}N{GemIY z?6hz7l1Nk|Woy?hnpn(e?({QF=))oeom0$KEyhKg#eC+}uy+cNw}{46VP%X>Khc!R zjW=60k+a)&B%8CX)`&418CF$XGO%fISKnr7D%;D6JTOLeZ9`Yn$^%PgZ>NV;4VvdC z%b<|7SU!`h1^(*nnp38u<$UuaLO2^lTCvQoJCj>MGlyMz1uv16$qW-I`C!^*#Phza zjSE^5z|KCK*4ET6qj?r%tL(A?EtOIUt&{CWj|tDrQ!?3)@x2Tbr&)nyajBlD8v{1y z3s_i(;Q=i)^0fOpQ-@i1h*S8`lf=UqMZ_kHxbQdnr6j;C9bb_nLSi`#qPU@h=D}!Y zcB_p-4by(2LQZ%Y$|eFyIZP78ms(phlQOrFEkLwv=J4eqCW#P-hY(ovb-Q*-xP1{l zLMm~keWE@PDDMN-w(x}N^Z%!n88`o*o>Y=|-nQ2o!)kBvpEReG zY7;_1GSW&rOF@piq+V!-YtC#^UYb9%B*_+hn)c7iWgJD(w_}J-i+~Fo$@^^eVjSU^ zx7#&Y^k)~U;$czY=s=W!0y7UECW$;&aLo9;u0qIwK&;gdG;M}9EKQF-IvJH1upw4( zXxZ5tQbO98WR6N74w;iQWM^$7_CT$nm@OBa?#R!$%DqtTPUTdND;dmvAbAoiYt&X^ zOd=w0ShMcOIoNmtQ61KLTJEN#0vQUcIf%hSZ63z{lnzt+AsB0aoLZR@DNfqPz%h&| zOtV<6S$uR9vu=huWUdbp3UxW2?qUM=x^&o_m*uGy?O9s%Ko1*abKZxwQ8;FUX@#;Z z$+(A|35e}HiHW#d+YHAh%L-9A^^t4jiq!rA4M}71#!9<&=7iR?h3Z(!QA2h6Jcxy! zV}Ka3{;Lo z;lvk`D`a)JiZB+|oF?rV&Zh~JJ`KKX#ozo}IIWcSPZl!wMX3K_W5fHtF%_2u7K5|D-EyvcCI3bqvR<25+3phFl{RJo6Y+tY|k=mNsjQ(_Q5>wsjL@ zRjn;!V8Kd)X5-;g^LG{9?1JSV|G?7vp|xYbFI%SdrwSv(PGA<(JK>;D(VUi2+zP!$-1Ne?wZxic8WwxeRCVUwAr%965AI`t=Bl zQ16K8b6IQcG&VCrRgjV&0ju!T8`Q8{#sj(Yg)gV%T78e1DvC9Ma}Pln5K znmBY$M8Xf=Z6*QQHH$L2V3dMW8ACSs%^}|QKP%S0L&wsvME!GE8?W{q#IVMzO@Xs= z&Kx?f(L;iL%r;eIQ5p+I(M*|{{z!X<=vgd3%J?waK!V(MVP;VW7t9b^!iR+_Vc2hp z`Q)w5Gb%)v2r8f)k4ns0cXr-)D2MC5~@QX$^(LkUeLE?3b6p1!g+Nc&0d6lUhZ{ z79Laq=F7IuD(GUi^Oc&_rH6`M#!6w2le)cBla;)X#Gub39zt|KI2|0?-M{lA70^N{!P}+YD)$_ib{-$MRZ+tv_8R5ku_1+yJ1glq}uxQ!WeX63bbe9 zt9ks{hC}6H3EGtRp)_|rZq_oIw-MW{^}5f%g&keu2jAu!3Dv!yojAL*2Ai8eW>PDd z%eyS@?ms>d-oKZiMuEGh27XaQ8e`n$%iw_GZ}%=qM?nIP^KJ)zX?d| zb!#*-B5(SO5BzktU$>;DMg!qzcfApUAlbF8vk^j2jN*eVoRPppFPUv{lG-y32ii6| zc22`kKDAo3`We(91x4G!^2<2^ENN?b5e9)Dr*NX_EINl-=f3Ety4|765KAl+QPvnI z@f_q}WKx&xTA~(Q61{+0C+&w{nySk3%(iK3&mSS}rmYR$XDW%~n zS1_^)i$}?{ZI6~J7JaaVsYMO>$UHckixaWC3p=^oCuZ|&ap|=(3|_ss`Zp}UHs%Uh z8DZyUXY$*R#YS7l?P75BW@sO$;;AFez@D?Lbe0;!8xr3qZ!|;eY*BeW%a^;zi)OmT z?R0w2sCQs+kq$fN?5s0i0-}c6CBLan5~}fM*)WcWkm8zFWz2^3X6$9@#!lvXi2dAT2-gsi)mpLTgaWct3zJhmlYG5mU>}iKcWqj z9jTgwG$d`2?Vm&TA?Q`y791j4d+NYVouWneibaJgQk7x-a>jRYFO&H`1BV3mD)i&c zb-uH~kQtsbcZ!|41Wz%nbj7Z%@jjyVg=N|Dlt>zLVY|rD2s+N5h-w}~96AqQA8zeK zRP~#9a4D6KPgQwlR`UK9b5c1uXO0OTb$lO~*O5XZRanDNAVZ%H{&$ygtUw^|U@;+8 ziYxA5?6|r431y0uTIpwXHt>srSIws=|Nsz$Jw||sjZ2JXhkS*UR zvf*E#?o^DO3=7sB|Hxmz#<)@t4alZ~Rw%Udkot1ocLrCu_a80_%|3?k>(?$6J;~dR z04jS}txkh@i}Qn{1;bgH^QM(AZS-ll;mXu}*;{h42y#41(fbA$f-h7WD$3V2n)uzb zGoy!Zr&wmL5k^8J@-b+hCNpPv=NrVWSPDt8kphRVDW3CjxiWQN9TXfQN|AhWjRl%% zb^!TB^B`ZC=aphs4s(P1fH4*@633*V+QQ04u9_i=esb&QQVp5?XQBQIJuBlgrgX6f zYHkJ~>I%#@XgeWn>q}&>jD#$y7NgG6ZoV+Ba}%Lc(TYEOy&bKmRVfm>@rXChYqtp% zJ1$IRC|V7Fg(^!Inid;yj~>glJ&8&@&Zi$4?)}Vz@)(0&mF=^}oK2hKnUeTTL*PyyiT6Y(=N~}`ERkEge3&b~{a#06o zdcY>d<23mE$ylegiqb=Ew=B8&oVC2=k@?~Vcx*o=E^Og4y)T>&Yt9hOH+!LIG;OfL zwAizwZ|4x2l!W5qM{6)Gd!>+JCM0amHYa%anuRx_nV5O;3&Pq8Z2$asNiV9zEb<|W zB^@7Y3zk^Umg?fh%53~h{^W*1TeF1oUa+XLlU`)btPfKKGLXV#LHituHFlJ3fZV4K2)9 zsSyNGyXDiqw70v@fm5rc>lj3F|#9oc%LI4QLt_6Vk?X zv;xGe@i=!G$?A>+^K3L{$N6AW6^R6CEUoO&T`NobX`Q$tv2!Cu2U1U4^%R(hZf+6ra~8AJHv=mv0ihE1B2K(L>TY;o0-3Kw)rjIcIIiPl2ahr6NR@<_+p79 z5MyaI0<$wE%vOx&Hsy93kC@zz%>|0IuZetcfLHFz& z>fdfbDFO;`ry4cP-m0^Y;C9=`Q%s>L^j+AzDr0F*(t{nxh!rbHqU++ZM3#jJ8a#M3 zF?FUa<_r|`tPj~QzTY7?BJ4z3nf&@3m`%D<7C)G>z`UIvru|w* z5*EN%AIP^Hc&}-5iL<%H4*>{=rRe~0Up7gT2UU$SFCJrOB(Q(HENXYo%!}t6MhWi@ zfM7C-V2uja4@>=QX_+rr!ChTW?(Xk~Xqxrnq2d~=*H9@LbuH$Uda^IBS@`8~PI;s`EiDQ|k z>9P^6T~qyaG?RZk!0EYS8F!s+7*#yeMy{r?Awgx9JqSbYHEz$&j(U>auUE3<^Lp4iF9f&Yo<2HXA zX<Hx+HXwHpKP^eHm+TJ;J|^NiP~&W zy)m(tQ^*v4?S;g*O*Yv$(Ku(eRt@V$tO=NZfYcfq)339T#?ihyKqE)kh5t1Jreo2} zUhx4UGR0B}Zl8{14yOUc`}x30cQ!i{N)qiFMq}HyYWD!=h^wn`K&Wp!w8xynZ|6|h z&Q2zM5dvd#Umz9iFj{}bw=fY0vGDYT6RH_>j3$qA@>b!&OQ9rNjZ&@>qBLopRhBZT<1Lt_C?+Lov2tP2yX z7*LE^Cu*{5-OlhMBw?o5Ng0b;5I2kp`E1Bmd?_f$;=0Ln5ide)=E^gJrY?7)Qnkl zms;2!#Vxdq44`qg`9uAodz?X)3@7zLn;kVO*+0E>-ol|2!`_S%uDJ^Ke$4qCp&jtG08)NnzxhTx7AEJDQH@ zd}sz!+}vnX=}0Hvu{TnYK8?O+=Sb4=l@@dn)R_^O1@f{>=SwUI=k`LWT`kk_{meoo z+EiSD@NMi{>gHRIMwQYalDH5(w0u|#(nbj@U8$R++8xn4*( zMD9CuWLt!^K-B(uqZW(qW&j_SV#5GqUep+Sa52=7^>|DHZE)*)Kvn1uMHii*_^DzLRQYG-Cu~(!OPb zIc~;9IP$gNEgKGXW_~P;yfel!2DP->nAGy7WwTGRYKao^3TItmrafodd_%mYmD3nQ zU)54$JEO$L$9B)6hogMN`FTuBD5MKfR6Ji&_t)76ZvtX0Owi`UwU!BI33RkVptD4Y zZ!K3#s-m=EIGDe{3cIug*)phWoj47J4fugH=tmHX^g0S6%@KyVA`s%MgT`Z zyX6^)WqdDcX}lvlu2#&wjary?ZR9dTAg{D{;yfAYYnkUH?rZjQvs+(+rNp+eYk2vJ zKbd^S7s0*oCz3CEgW?i`V9tvfqAP($kVO~P(n(^^q25jnF@mfpG}cbsYqkp4t)UPA z|0X(?By}2KA@rQ4opZ7Rr+?{tRMEcNB~@d*TikvV34qu%D=3?gDP%R^iZt6WxxH|f zZsz&)Z(rHTi%MSuw0w>!q;8ZidzG~euQ@$2NUWHt9`0gczP||LV z(~YCJWe>U^a2X_?eU8X#X;DJ3@Hq|1c~6;B>FO+Tu-wHS+RUe&QDz6UWn*cHDQ)1V z6sXofJXS4tkRb;(WJ4e>?cX|RDvLSF`b4ezV2Z1nMhkFI-UqTjGJatjrJk*fpmXYTbktMZ2x(9|$DRdBR-4XmrI5>(zU}=xR5?|W zJ(=bL4LO=enRWOgf;}Sjihb@;jBKQ#^z{+V183BV0jsRaxUOZPhx#rz_mrp>%|5*} zyDKIY9mI!Ajm1q3FM%KNgCCpGjy|L(s?d=_#5skUVaS62B0FSOZ4exS{+X;? zSTnB~zU&Za7HS)k)`}MrQhv0$s1YmPh$qQou5vbV=1Y}QK}VV+T4gLWTa4O_Q7fa9 z8lcOMgCbQXCTH_~JTV3;k+YGgf62U}T0Seu8@Q!t1Vytp2*R*fR0kz17sxA3Ypp72 z1PklHxPd)G^hf$mw)r*Fn2;`zVrYkg#o@b>5?O;fi{+CL4he=Sbw8FB#thq<>F>Tx z&`qKkn&jBaX$A9Ixz?oM`L{H49n0}?g(fjF%Mqpo)PHyv3LR}AV@udRBSU#V&2GDp z;v7d@8ysSGXrQ27DuuZ~irh90wSL37A#PApq0Nk`nebr?ea1br>G&9(oz7(~-jSJh zdlg24&b~CbmiSr?EFb%4j!iH`qXfPf)ggA2(wFlEGZ0r{cYVCua^zj1w*~TNea+He z35&!T4oz~lFz`ET&4-5zU;E9yTy6Hadw3*>avPHt}`J7k{MBj|JA96 zM9zH{9ePtsQxWByc0I#ro*}*tVctBz#IeV95#SFf8UjGBLT?OdAD^JJlB0zOPzM}+ zSSxMPC$NKY7Q}$nL|GVF(}CUn7x!y6cc@TXf2Dk4is8&x9Sbz7z9rhYxlkyi38fgL zm7k}QDGsNMHIb^o#8V}ghyK`vIjskgA##ph@lhrK>1U*COC@wLD8>E;_4wL$YnFtA9 z?QCV1Z*(8O!>U;HLv)g3!ZCd{tpIk!N|7#G;`hjn<~k+DzHDs$w|MxJ+RxcEI6cFN zs^9m}Fb2w~&acejJ$Ls|%z`!uE)Sap3}tO|XU!3!vdNi;v<_8BC)O(~qsnFtMW5z7 zMR64dl1^PhOAw5Mf?btQspl2}5ixxk8_2m~qmW%}C{nsnowgm#rJReIHeyNDr{^hY zHp$Z}xI*R$*H$AD=>NPJhP z5HU;3GIb}0&uL;nxa%2})*h)qo6as!D-9ySv|3W5BXSGpje3$|m%Plj9MDRab4+}j z(L!m2qM2_c96N81B+2sw@{6wCIgGM;XHe%}s)Y^&yuD9e4O7OZK0pv16eg-=c|-rL zG`S9J!Mnc^zaO7FOINS+&k~dv1z1ZMUEKJH)#Z?;5O_T^L8`Ki(F%m7!ykSX;!;~n zs=(^;oW=A{twZ;`buiD>oGNsODwrmPg%qk#ks)g5*~fV!Si+W}dDCR+d9xQ{9&SG@ z3_D^sXw&&Lkw~0nWTGW7s0P@a0_;65pMLdzsaSCj2NsAeAGgoew4G(#*(EeXZ~a`d z)`H6_H%Ad`jx2Ng$2Bn)07nt?@u8@Qvwa*vw^nq@jcj2{Dk~~J{~$f03*Dye3*_@U zAw?uE<7veifigMZhkejd3uh1q!GZ;5C6%uuB*0Xhv8(Oi$D~77vc!?1=JP^vN-jSD z*%DchOja9oLM$d7UDc1)ktINnnB)*~)_kaz1du$84#YA>Sd8X+RAGcdN zrIIgjknUpP9y%xWxG@)1mi7nWl!J9!Hz>S4khHcRLYX3LH{hwWfOxhP~@P93vanN=aj|jIgdd&n zO@l^jp+^cc1i4BHLULHCNH^OKNtP$JwLhcd!NRtJLkwvn5kiyY7J9L%+8miut~2^R zrFm7t3SnEXqVKe8?2n7o>qjfM70KzotA7{sPdgctG5)Z%RS?0y+{uB7PBDhixK;4^ z+nEH7bn~t~erse^#O6VcTb<5cXvK(aEKnZe@+=oKs3At?w<`{$JNc@34l>y*p;)re z?5eu?&Ha31ADLRI?4Kc+xHx%W(*a?dK<1K!*jfV;2c=jLnw;>Y+6dOshDtp6wz0Ey zNB}8`E!rPK!&rMYmaX6>ai$NnbAN$tE*{pCG(*+SKPg%**)tzZygfA~_NqA(G$hsP(f?>!^;LgMlBdv!aIm;&U>WX#4(Wzcwn+7#e~Ihcn1 zhGqNSg4`BH2cm~3vvTa%5K7Z*;>Ro*ms=^TYkYl>lh!L~si?4dDG)VrvCiC&JFuQv z^PGhR^9mg%M~eg)9+_BCB-^3Z(kt)KTv?Y^`;QqhXc3?1jfTB8!ihnq7L;LgR?oy_ zYRJhjMEH|Z$_6%88ngBhMP|0grMZR5ZuUJcg=KlP6Kluq%v(QNMhs`HnrYV1HBBa1 zt7Kh5OZ*PGzVz_QDmaGN+F@B~hln1_h-O zj-IiGG>QZj5kxzj*g=TVMs=p8&Su0^Jgr91lz-rWOu5gFunG++O$dg6g<|au9&PQq zmBdg=O?LU4M|r87;_4zx!pO^Zk!Hb+DlsUl&SMsNG%eYp629}K=;I8#bWA1(Up{8g zex2J3JIL>(Y4XwHI{6{0m&th*S2Hj6so~LldIBqR zBnw+Ad{LQvQ5H+$-G8hr5b2O@mkGrM+pL|v#T_cXm4xiFRom*&mH1lH}$~Z866P9Kl@+Ga1JGv5VwG0hSBr99k zP7-5tlfz6?=1_pE3iH|2Gnk6T=`yNxYH#c~URWza zyO$Vg6ON)&lV{#|CyqHGYMG}50$K{hF+aKp+>x(32dh2syM<<=21?jhlgRCCDaeR7 z-;^D;LBYey71h!`A5kuW*-zoaPqtN9mSxRn2W?5#T1SiCABrb?6jxCsx}Kv z8Jm1>$S3ZCsLKp1Tb@Owf>k?cp7KmM`m!AJi};sou}`f+zUh}wM36)N6%bM5uW|0j zAWIM=S6Ip87K*9*LI<}1f$s8p$$!+gEO%G`7WLccAyLqfn#7|x+^U7c#@0F$l%G5I z?C|EU1)C$j*6JvKFD5Q7X?E)HZm4g!trv^jZ^_#~odz_mQ=KRgMQLS~%nTbwQ`kQ9 zg)l?MlC%+*iGhxaHP5rXfN`Zi2D2?a8t$Gl_pp86*;3$(0^Uu4&NnuSlLCj-CY>(VeA!AEe$v41eW21BKHJXwIv=WIsU^#=~YQGc~%E0KyOb!U&7PDK+YxZ~E|bPtOJF710D3tQp{ zG6XR8lOmYaCllcZGrYn%3|aKzk07WaQ!fto86Vk()Vy<;s)p80cj6QyXTSNT$7r)V zsx)-2-Sb%(R;2mw(bm*;?0~K6>XzGhfz${QisjvadwL1m)?GwOJY+e?AKU4;<`OcU z85t$87cq9lfEikh7%)T?YeqiJGRx^6kVEOq-M3@#%VTV-Tcd@Hz&1p{))rtW>jnBsRfu>{p>i+ zwp6TsvD+5f!wiM29(JDRpAc`JVja3M=+cKO@3nlmh#j-)RNd+qY5IWK3VY2n!yz!yujnc( z+EJ+8un>v0QY9~t^e6)it#{6HxIC*%{4o#vJ8^8F%~vhW+Ri?~oDDw?-P-f^)cF~} z5}BhYt;k3r0{?cj^l@w;il;ox-5!YCS=%!i4l5NG2)lu`+ZXp~pC$2`xc6iY1 zY%Cm95RFcuvwh5#9gR*Uyuqzd10DO9>dY@{%{s?MW;t0$@H2OPo>>YH0pp8khDAI! zjfN)gj=tQv6f&Nnq1ub7Ia+sF#T2eBX>OHrpjGnkE2B=DrSP$~mE^g~2^dNlg*%7V^etLTY|_7@ZnNqbLGnq&E~buzu??0K@3GvllfJ(P(f6b2y{gK0VP zvrj6SnDF+FlDNo#JD66cuVxF2ME&w?tIpD_>S#BBf|WT*`+UjP;W93QvIu6lYQu%&@{P%jr*Kcbsr`98aZ#zOdpM;=}vva z+2*G-l8ci`l5m9`8d(Gk1nby^cQ$s7dI@%uxN$*b!xK#>2Jw@nf{NY}gorH&Hp?S= z%gA}<#8iC*H8c@Ec!Fe_)PzJ~IcRZ}W$bEU)L`RfO}^}dZ#kJR^7uXm1IT>_H{rC7 zjA32Y+hnNiy|aFk&zG9`@PU}C?aYkV1kE)XHL+kBaczcc@W)vLhk#}>W#wStb4mN2 z-Og`c)WXNLvWn?Y|9I43nB}F6(^-Fg*rGhl&PtEA!#@2$1^NbjF{IW*fbQd`+JJZM~;LV=J zB8`I%FG3FnO?PpEK2?EUjG~X=&+# zCIc;=Sjg>qA4N+Ka>!Iz-5@K>n9L`mJ3dE|XPhO~Hd62Y|kPb0$uO8wv|8G?^D;j!KxuMTBo=*mZDO!c@5~yNSJbzOk_7DR%8e8` z_01<^lyaebRlJ%(pV zNhxG;@NIaUD7dYus2wh~Xt%dVk0Y5ZiA{5qP&g6TZ2*ll%FOSDxhHJ4%{KeTNKzk4 zZn|bcNce*0;@2xp&p>mXouJbPTfv#)ZNj`}VR@bS!w0Qd!TR!i)LebLcWYXEMgpx` zqsOz_$7V;JTsgNyp58_?+SkW8zuS9C(8mSx+tr-@^_A^GTk3rhF{3|wJf&Cd!voer9k4Q_t1UIRj z=^TJ(y(rGX$A!1qH{!a7@&c%^TlzNbx!8DOci+&S-8+qfZWkXG4ZAU}{fs+b4ymtU zi~V!nqFX7W1%_GP+>nKEh-vv>*xbUh)XubgGIrjS3UpC?)3+JX$>1+k$RTPHoO67s z&gG0#OG`T>9mmH#TPu*C1h%^Ee24CWOu`@*Tg84*NWJ=9h~j7AI<03sIn`$=yLS zReapi>0XLED(3Mbd2a41iut%jL~baXd^}&su(y4qIiH{B+gfZi*C30vbGQ@OXcZqO zgXUg{os~H~OaOIUhVB%ytl`i+`qC&JAdSVN4^F6cNU9?fej-CRMgFA(Q&TSIAch{*(wH6$H|U)$=& zrDxD4KBc{EEE#0E&225A_Z1<}CK?`@5DZh?qt{$?7I(ar3oYg{Fme*Rt1bN!F zj5mgmkjmbxub3&}@q9rA)M(#6vUy~rk5$s z4;ax0I^4zM+PfK!eGB24d)$v{P<1=W3#Qg7W@BmDKZn~i^8RRDn@%KGBWZl;pX5|K zX}I1t53ch)eEBas-!DZXHsZ0k@dExx%BgW~QSNcU==^3EX+6AGG!^>B<~^$7`95(E=qs(heF zu@JaUxU7pR+qlik6gG=k_@pWll#|W9f3q4x=Nn10lBK2?dXCE9nv=(Z*av1{Le51{ zeQYXCToo;kbXYx|Xm~=0Oe3qO z8rGHiHJXB(8*!nbCg;pA~ow2-~X5ZoRzbhCPyC{>yL zVPp>i$LaebJy9*T*Dh8{srFsoKa{Rqw@OBa?&Fw4gG)vV>>bF?r&DHDY9q#+l+1oz zGbf#}Bvpe{mfy5}#dLwh+ytJRno--fhp+<7YM*s!$w+T)TP|!o7|7D2*7D`laT6?k z1@o9BVwGuf%F|oq5K9g9qv1^Ghw`!bUK7!)Seno?*`XqDkCr$eu(e+{?CoeVn8IkA z@ojfJS=E}L_#I{|gPCguLtcG4aw5W3J=g3r35tBnY$kB98tnM#urSOVI?lGH>I*%t zQ}<1U;|TJ_v)+|VHn|KSM+UI%UhS|P&dSaxG@sg1@vOM>l+7JYR;~i)TN?IHpJoRO zZ;Vu|>c+tVFSyZSA`{tqzTfvuUZ|GOU;Ca1OKvcaK}8_wXc=9gwxr9ALB1yrvsgkQ>tM;77@>U?(HYdpy+ljvnBDbEmo8mWAo}6j2iD{Kh*^zj zUDvC63mDk098vV$qv;a*3nISK;=^{DU^U%XT&(VT(n}p|UTJvKzMh0qIE=_~(PC_6 zQrT16SF0bWrGe~cU|z;YX4YhPK2OfAq-U6vGpXDP+6rOHu-*E896C5BMoCZ=M%{G*M^27%#QVdz2-u(SN5zGVXx=_b(JUW*h_8<_~O) zoqhe>w4Xb&Rh5{AG)-m7UFw{EQ0AQ+gYZX3DCmGUl^s{%m6P&Z`Xfy@K;3$l7b>60DBQHeonb_=)$z#UvQ`**Pe(FkCH5!F< zD8J{SbTy%Yj8-mjRV_0u*+S?-?GDLD)(mkj#u~*YTu8F8NG4QcUU_V6>a3w6*-*YG z*~{V}&G4Cza4gv??`T1}N97T>aTHyxmLM*B?E|p_VTH&K>KxM^gZ9!)qB~x*gG&qb z9_Se8*5curns0<9vN(T6mkXb;X&Dvos^^U~|jrVJv!5?5{6xD{g|>}oRKh0a}5OUV1AU0THtL&cfk?*Gl++c()& zUFW|2->s(Ve1~nWF%W2w@JUs!FitQphB_crAUnyG6}6BW&_Qa+dcioCo03iZa;jXQ z5E&615QdyMw{q%Q1_9#LRsICKzd}CA{XNeZbFMkp-n-Q;VJGL_YnPhtz1NyA+Sp56>IKm-~>u)#Tfuf!RuJRegemhZ8eOuln) znMYNDlv|#J?Uz&azVqa=`<0m86&D^FcCghqfV4Z=zJpBSsMgv`xs|yt_{Oys&Zy=@ z&vNnlvd%-&X8-cZ$z_fdWW9z0dw6~M;`H(}Gfw^7y?giMmg9%$I!2mzQ@4 znZG*m1!U<@18QZ2&p-5#+h05K^fRYdo&=J|J(=+cEFOAja?3LuZA3+r*R8szhhjs+ zGV@o-)CS6bj=O(p-#+p>T#scKFlPV$rKrn2sYlUb0Wv=+(PE}j*BA2Y zLKK_H8lxOF(qC2Hj5@l=IdgWGaXXePxb76S!>oy(@rLpItc)@aQ4$3meL*c7w!s;OlIaYbZF z^&z*D`Q@2RM+zy;Iox`)6v!zeYloLsn?G)sxf4`wI<>UAYq&;(8yF%}7_`5{@plK3 zZtx~XhIi8+!(LPg$9PU^V;m_13$ZXA8<$_ePCgthM;W5Ir}5$xydqX)F* z?&yIcTOI;qajwolrDN3&Rr$>q1fAlTR~pVuq4k$xj{Tv&jyvL$`7*u3OL<7Q2Pve1~c}7{q36b^s8ngDrb)`IdrwBE#G1GqzWL4(?udRFjKn}b* zg{#SF>!ESK=V$53rziU`x&tygX=(qGH}3CSIeOyMb99;fWx08NOW9_^8^!fa~e-?so7zz(%>{7m>xVTbH0Bfut<|G)Ccavb5u{EI1 z3WL&$rAo|H0@#+!-4gZqa^-Xw09v1W$C+~Q>b7r{-snyb#_n5ZoM)ciHIbq<)L6(q z%?8qSzBr;cR8ICeC0eO}V%L`X{v|yP5AEA0_tRf2ed@&yt3eMaSmb%u`M``Iqd#0> zxQDQMMvJ=iHylEsuMH%3p;d_Avc@dk)xLv5yU1#Ivb0)-2O3MDc zVd1~xg~orl++yHjQRR*+HlUngKIM|0rT@H(BSuA&?ziYZ;e zO(k+pLO8h2I|)u5{eGE_?#P`{Hyz&9Y@pJIgNf;~Ou3KNWY;g)B=Q`-wQWtisj#WO zHGSB$)(xeWek$B(3PUBRHm-9zS;)hmpI$q8cmAeOZef&Vt9p4X!H)i<-Db(Qe2HiB zSi@6ZVzU*Np;WKY6|QT#?3E`NtQ=fF`90d;JDoltSJ=1b-n~3}zI(Fog-QOp9|XU3 zc)tJcyY&IDn>cuAiG4l$Rvvj_9}j!(TUpyLaQ-v>WKR!p z=jmJo^>077zi`0GzJgr!g4TCf$JL8Ca8$1dJ^6ht(5Zw4s+1cJ)EfwLGk{??3LMy} zJF?ERYv2lkUQ;O38ec=1f@vLp;kL3PU9-IZfrt5zshi_lt%ixNaa28FqwvjvREUW9 zO))}s7zj0&$vzd?8VMA?(u$uhI)l`NutuvpPaiwM;l|X$&{&}6mzEBBh2yEKu5~B( zS;GI;yj`(bu*SAym7(BExCXl7asm01YX_iexbsndK(4&8i%*v7?kxcU2d(%pi@{3OPt*p~pwW{*j8WL|l)%hDq)CzYC+M8S98I(qL zc>TmF{kJ14g9$`Qhf}vL+zK|sjva$xTs7<&EshErXx+_^kP8-Nh)Z!X9<+Ir(BXDE z{J9G%{X8IbjAd%R+Wjrp-^Iz2@-4U0qV0fHTeh(#BzNr-OsfMWTUm6n^?USHT z#S4v}Uh|h$cF7usWI+15Zr2gEU3oc1^f3;l}A*t33AoIuap zQBImX3EO=Z^N$DQmS!(MqwOYU#0xIQ^U zJ;QOB2iTNK-aR??%z!~V_SYPUufGmsgiWN-m5TW_+?Luu+g>J(4DW)1jI)?;Sol#ifoV zE5r5SAE0@8L6vtvpqBaqo?E`>_j4OyZe1$7i9uzL6_Gs!-e|;jo$|ezf?O+}Uhls< zfecAGgs6t;a#PurS$pa0E6-5>w#~Hrm$*RR7|G zC6?IA*+V|dYrXlCveVJczBiN6Ma0vgk^My5C4(`ghreDspj1||oBe0I*yIGCIZ2}8 z>~G;^)&n{|bcAdLuV2(0u~g-mY+m|RK{;L-y6~ptRD6#i!>thQ02rt z=m#kSzdY~l1daTv+@;!OY*eTpjsA=Z?&!l@U&~K5Df%%q05ZZId3ZC|C5hEhe&1L2 z>kn~*qw6P5$`ABsDIUn-{WXbyC63q{{K%UJ_5tp6?(1L3!;TmQ#6jB%^znWJ=nHNo zTUDd6^?=w}E?e?4R`wzAykQBhRE;~l(x?9{rJwQEdH+_P50tm&-oz#Gl7U$Y_Q^IQ z^ClI|y)eo?qG+ef*A8=+%JFsGbR0SP{%His!2DnNDZg@honL#jB=Ubipm1PFomD!} znMWtj_%IEZofI>Ct-Gt0vn>|Rd}qT{b-YfXp&+&GYxO2xINCuwC42g$pux{)wc_MG zcs>*%pQ%F#<)SRHQ1#F{g{olENqO@OpcyzP=*kyA>DR|luHM?D-}8M-`cd)yWn@8uNP5m^U8!5N#e_!4lS+o79?Iro0$dT$TOcgFab|SY=Ft?JudmpI5%IF z>Y+;MC<#&OhT>6?@bH174trUT9MVfI^nBPVT$J^ky(BfO{#HL?V`psgq^V(_r~bG@ zE#tEV*G7M;_hIX@zH~>XEBp}xEaCP0`aV926=R|eCZzRSvzgVE=WphcTHK|+6`WR4 zmf4lX{KB+-ZIeUq@#8Omv9_#;dvJ_#wW{eo$7s|PQ8jzkCZ8gY>#w^nzb4sNpU=) zsC~7j%A~CbuJ<6i`w_05KW)qB?Zry)f7M_x=oj~%0jD#;9wkNu+(=Nbv`ui)+ zMQcf;Y={@Xc|>Q;gs_ZH6H%2g?=Fa9NNDfag6e zB_D|Ms$@dDCcD4&$Rmp9d$cLcm+&ycF>MM~cQxzRrEru}NBBa(jKD)@@fs**_H=A5 zUpjH-)H5SVAP($=0esIjkUjgCM5-ApRh|Ehj3Z#32KU@ojj1Uy6FU%r1|Qp z53R6cP|7Sy-t?z8%-rJd@={i{{gy1_*@F-7zW)I4w0rEn_O3|F7WAVpeQ})LLnH{A zVRk^KctG1$u;v5WVv5nr)szCcex}b3DE{ud>F|E62xZOQk>rltUc1?~4A17z1NT4p zh_(*0wbKO{_@0;Xh=Rvhh&lSyl8y~M;B_Qd>FD{462dC1s4F;N960zAd5qii%5ht)Oxp;m+ z3GA-eG6zCZC`HrjYX_8_Gq=A!!x2g5GScV&{=k7p@BIrtK6(a9YFZ0tT-Q>|VVcte zUSgZ^ThL98@pN_c#CK1fvB3GkCj&-dH{wRe4xW0J@dHvN$%yKxa_roGUQ$adsGz&O zpUPvrQob0s6pwtvVQi7D{}1+*Gkl!d15p2e3z4tVY)(^0Rw znGMa{y-CBhq!?>=N@Dxl*Qx2uY1JQJy?5%qx5(?DnC;B@`0ksV!H>RdGR9%(xH89b z0)eB8i_V&xN^yI1r9W03sO%N!ht$kQl_Cg`v`!m-uf(B~UL-7xf}#)xr_t?S@+J-M z04TPwB*TY&s&JcRV96WkwaAPW%FU@>de3LG4(&@4#fBnj`{}60h&!-eVT`P|2|g1L zZ#ukmTHC+@pr=lp26SxtO^`n0bdm3$c5QC& z3pM(cC-|XNAwH)1c7#|$4|7@{j8g|fn}mwPJS*y=jB|BA=|&^=`B#~J>lUR3+qoR0 zYZ@<_urX_`r**y2s>qh_WB$!z%G}$op{LO;i#rLQC$f!@B-5sLJOv&iyK3jY$;Gil zW6KxczL`u1w`-JAMx{3e7PoZSK6m;sgLnWT2bqjFR$zs$Se}+^oCOTP9*>(2HM7|| zcMuG@sh^~^Il3TK0Fh@eCc9Y}PzCm|pCiHqU9>%=jViJFTQ6SHCTI$zl)D_g^=IxM zVu=hw;zDVz)O&j=pSca+c>r%9G0@I%9&j-Bl%!p&Txw01sMfd3nX6Q;eMs@7uf9L@ zj26H20K8m<%Eh1We(a%pcYjlse(<^D3{1;hUd7>j7nL_?))!MHs=wv#g8Da=h)8Qe zv+sKn&hhbh9VHza8}43ta4T0U7j5d9v%1l0KV@(|HfvguC#$d)Z&LB4dkoB^hUJSB zfrIhq0XR+{%||OIOYL<|#(cqv3@93jvL~| zM=Ot>Vhwra8*Jxa*?WA~S3=Gl{XP>K0Ex2!*XhTT*vd)E%K)bg!oPwFrTT}rrc zI~v?+zFax;?4OBYpSmN+4u3hDl_raAv8Lm^$Fzl5F)+r!ir@JP9!fx6d{=%}`H3@O*QL{3@umaZY z;?b;bQhHUb_|hFW?BT(^gGW~$Bmsviub=Rrr|$Xc-K<9In|s!8+PUMNdv;E~@|B5x z-SMS+cJ7?~>14-*tNHuu_uN&!`r1AJS-;-m%f7aA$K-_<;ufyqamzoQ?Bt%i?qS^yI1g^NK^0>BrF?Be*=hlpjAfbK?Qi<>lpDXyw)E zCmTQGzAF=Mx}-~)i$}z4ZoOgYKiyDjpa6!5v#+3c?);5!VbY({EfZH0?|b|n$Y&cb zZk(r!pKbhLWK3@wfE(5v^V_+M!#|HAnd&U;Y-E{lMm+F*0OEuc^g=KA*lvJ1@f$vW{MgUCYT|~?6JRGK5g%eFDX#nrqBqUi$=o2{$ z9b!6o&c>_UsQ=5Na4H!}u>mW+HRUUQjO|wLNc;0m*V?OY4riO|0qE&7EZLxk7XVrI zWQ;HSFODkVqfv|ooInQLcsU$Ljxd@2)AZc*AEv(;?ke-EHvR*w@lyo(1Bpn&l6b5J zJl+EPAhcGXpt_m;?^8kaW!shD`9nmAS9QL$@w1_OxjaCtIWf#1Mn~f@F@+ib#|H-l z0Dx$L=rMA{l&bAVzR)+!ytswV?FNz$+5>Smek6O)SA4)s-j%z2B1y`qFofxc(NBmp zov+NPAepZ1bwP6y%qJ2bx}YR8!K(o=$$0wibvJ;;3OA#V@RD&KVXlTIO@wjSSf=l} zbL1oF)u?OO^>qCKXd-RNYvnvemi!(!&;Jq_jmRSnq6oqZCPFXSN8GDe{GJSt4rJ(9 zsxMaIkOWUb)}ufk7+)s9jSlwqCv+?ms$%wsR~Qi>xp6*cYda8f z5*U21)b5ZcM?kW|7zqYE{!qe@d8>h!1_8*_+VF+Y(qw$EW1lETiPRAeH-3tJy}a?G z#qAJrq#PVm{l;}YQ4+A>@xO^H=pbWf8~F=f@SVBE_U-eU?%c9r&TU7sVu=iek1_`Hu)iP?y3tFv)H9x2Tz!{!rQ+ zcy0O{W2C}OJ2l~V9o+b0E)+?8v9QqYVx}&}TGcBoo-%3#0eAruRqMOj%**DE>e(@Z(s^Kpl~;T7NuR>OGQ zxl)-n$Pr7NF$sRVFlW$nV@}6?v#o<{%;C8Zf|e~4zZ#Q@fruIKp+zD_p|IPtl8qNN zAN>=hALWt|z^n!+1&HJ1g4aBLm2QcLSo z!PWE=gSgVX-~H>2zxyP{+T=5`5agUwRD<%X^EoN~U0}vNN-RHx4Sj40O-M{$bUat8 z#*`ZcL{Dx2R94=lO#7pW5+8x-@co#WWJg^Q#ChvYhvv%q$okPEPeya|c!#aJ20Fza ze3C(N8i%q~exl2+D$q=RJfV3sat_rQP$(&)ETb1Bpr8-wKujEr@W4KF zF@#En{TeWj>9ihPM2I{(u8w1mBf(->pyrP;R5=mO^d35(z6IO2<;tc_oDnfC4Wh()(yK*7=mk)MyDA2a z6_0!J)D=s(ySt?XDhGtE1feZwu&nsdA2m^ChTUEw$9qYoDsuY2Wv1YA%y1_2jSor~ z$bw3!aVU{0*N^*?nbVh8W|9Zs0W;Tp^xI&@7(Aw~tCZc!5R_SF?6gyePhf>vF9c4# zVx1u{vd1s1Cptzx2uG3fQri=skv$T8>WnTkT3}3)L{}i#im&-FiVj(@{kR&9GJ;w- z4&)Q4i$+q>_p)K#1uXolBa!y0P{|mWv{}xmnR=-xM63A?D#hKG zrea$EQ0-e8J{9*;2zSlBBrZ1cYbh=F-PH)k$f@Wztuxtq$t3mOIrqeTA)ppREKxY5 zBPTik720xjgPFAjCFxt=%rZ;mCk%mAkLhPav1U<_ijj{3fx*ss&igJgomZ^yVp|F8 z*Kp&QOLcLpn2h~Ev|QtMEqdV2;~TI;A&9O7WF<8HN-dV#aUZQ~@tZ@#P_skEG4(lR z?_$u%m%9^;GGS0@qrs#w+NxI(7hF*n00P`j!Bh)$mlzJTRzaPag=fVStt*k9!G;D; zmUlF0SI9^8bcG9ncOUWi@aky}4lKV@Q4a@JLtU$uS3nekD`m!c1{^#@wFV~01w?Fc z%Y*W5-Xp|8gCT91`%Ef1Lz8GGGw_+Ooaz{p1zSjOR5g{nUAO{x4T|Ib5`E@1+)UaM zNtkS~c=gVktzdZ`;hOB$$c6rqAYSmy&|5a z=!P9bOVjfhhl;~=(e*Dh#4MXqZTLyQO74nmcOOc9w>cYcVf&uDG##`7nFtg`Ym~9# zk~6JhO2X(7&jCl|qiO}9q9mXLKTA8e(?Q^;1WspK<<&YblWPSk??FClNGY$Ksq0_u zs5~HYAHUIF2#C;H%Muw|Jcf2^(<^sOrhmuGNK(cT(iLnkOR#`}7QA!_%T{t}9T+}j zC?DA`RDva3bi<>4_Zb~ubRSB9yfb5ZrMxI`Wqo=21~!{h%}S#3iGdL1TuPzb>%YJGozucl)_stxEcc=yv7@SYJYXy%Ujy_F0TF$Ejl}HVGw;$R4E2DIUK;Ih7r8E~~ zpIXu~JdjfiV${0qx3LgJfH8{y$-x7)GmwOP`GR7c<{0(DHY`d+L%H^I%pHOtCzHv0 zP(}~CnywTs%#^W4AnM3qkqwP;uUhO@XbXi&d}(Ap6LB^PjaO50uOx|)Ny_d2|Iqb6 zTj-iq<($Z+OhSGpL@(7CW3loN70mvpid{JPA3Ssokqh#gsqfao`41Jj#NPfL0@w8k z2ZGRstNR~*{3`GT6{}X1|9JwM1YRITqbLD?Xu^=@KPu zUk+(5`tq&g>)_Q&8gSaCwA^2{G!>Pk-WgolG&xvcf$}y$zO9J!fykV>cOh~ggb|@y&q#_3mWiuxPXCd+-hg(zmLGOE=uoBjTxTiyx1p=) zYmtMFwt_iFn4Ot(j+%aZBFbHUT|%_C+HU-8MR7Lhu&6A8AtfQ=M&F}2jv%r&9n53I zYJ&lAJCX7?qWy&vA$l?<^h4Q>gg|9(tZ4#cXIWZb%q|BVC?LY)C(6W> zdh>GUl9D$*&pi_sziy$p$cNKUmZld({JB>qUvic5UE3k`LRFZ!XbIaIZ9@@PiDfXI z)!Z1TeAZ!$G3hE!qFsh4H63Eu()*f$a0o2Rbyp839`U_yD}A?>9Uck=3Jsh zV}+Vh>e1i0kjzS73MpL%)yFIsw5qd&EuUo+JuL3J96HmkVqe#)wq)SQGYb5zrK$~O zQonubH?~_#D0auGIJSDn9r@-W$})SFiRHamnf#y`E&aSo11jN_8Y;X-1z@<1ewzkBrX&MOi1MA0A$k?)1W>VpIlRmoLc z&-|pdm)Uv(8cW`nY7Q&|lRI?5$<>b5SujmgDPRNTm6b}2ZN}lmfmFl8em7nW@4-&~ zjIy^Yi35e8E=dOfZxY~|s4yzdYh#RqKjaJ6#@s)LQ4b-#xP%MJq zgmm^UYfJ@r{ZDuC<&|6(6#5aI>=z>$gmw}k)>)t z4Qh^kGmLm!Fhn;5>gO1cJbIUD z#Qtn`Yp4yTDb08+h)RG_Zj-O)qRoI(FUAOkP;-MOB4pXaC>=N^`u9ULZ?dCt%yb&V z>$Iq@J5Oz4{dI1*>>ilYywc%CccyQ!NQmZ+ND9I*x_+wM)ts5Bb%HHZTCJY0aE)&8 z2rx{r`%~n_97n4`c`GfYRzu7d*q8VGInT0=gFB*-O&9;OQdag5WU)ksz~6ES_}fhG zVnx}fLIg3}hHk+2gBSvtHZ}6mhG!tBUdHNQYC3j7{0ZZrcRw-Nx;(9Ns z%a)TIO9esLFqC;Sgcc>yvk5FO_w2hf#OW0Pp>cajG8{#`g1xvC=v+GeHy?TI8@wI( zvBw{{)`?(Na#QD4VM$5(DlX>aQn0y~Y! z%74iJQBi`DdI+UF^zajVAAI-`X7dKaiezBGXXN6TlaEw$8|K!6ocFED4$w9IH&W}H z*Xc{q#YarYyIv&+W1M@{22mq2jl}o*Z$#;Un}Jlxl{17$K;4$`q1%OBUakEEELyJH zVFcf;dvvrdwIV>kKqEz(NeeFJz{oYBzgV;%uT*_5RT6M-b^eq_Am_?a1&gxG%)lRd z?1{ZPTf5a(*ROAsOJ-4^^!mi!y??of+umj(zm=Vwr4Qo>|0SPsLA_|Z z6IM!pP19a-DlsIl>$5i|I6vbN_>B$XrDRjam7Y0+I>iaysVyX&)1Ha}FeUB#5nVEU zk%^{Xo<+WwRg_I4r5uI}Keu10Lc#A$P^e=P=3s;#V0p2}F{*ORx=6UN2|fS5bH~CA zF?sK-Oq$$kzTAtL1=&beBheg#dP#6J4gUXZP)+jKNAJDwp|H8PG;1dIF*>l&yts{P zYsIp)Uimcxazv(XX69<^FcL~^^KEhnF^}H+@FVv<^uT@pWsV(2DNGJZGNpc_66D&k zJS>Lt)6}4dRA96n|D~`uwXcHEHDiB;Er+i}_&zpc<$dJphw5@yx{WoGPhAzLRHXtR z5r7DgJf9dm*kKHK1r>tVGP8{zPIyt@^VjM9*CP?6I}_F;=8UD%25^~QvCPIM!gp}E ziW>-OCMNB9oRd@c9>}wuRFqf!)}dZNC=8T=jQcNI>8wyahQ-*PHhv0DA=(e(BGE&o zcUQ_-Rj&vI*&|8E5&(EYjW1063dE%!?RjD+{$71Z;4-w)Y@rSy*{q$r`gVLu42UDv zsWH{f*jH`o&+n(DO=4IZ2(#T@%Q>|t9(sUdK=R923L%uY*)@R z1F%4tS=0#8n<#owHy4YBV#C}mvaQ+6p6vh)@$72XZZNPq=y{YKxVeZAH57}NF%foZ z)*~~wmSp>RzQV@On!rUPdN?3!jd?|QM#7@#AYq|aZmDK^p~!H)m_lH1uz9R!wnsg-!2KOlfalYE`I!xGT zbST_%1Z<=_meK{y93|y&Q_8D;sRzeR^OA7%*$%K;MJT!sO;#P)#2^)NNe+5jm4!9k zO9hp5{T=$eT-FZRg&5iLY{EN#G@aoR?nb?&^r{8fDuq%OS(>w)0Z{S1v*sKF)q6U8 zjM(z@m!>SPAuHPp9+Hv6_8^$X6W}D>Vu~LbK5Ln_c~qZsm@ejUA>L}1gJu}Et;hv) zMz6)!ivkpLbBKS-y<{xS-*iZ^CMtPRAJm4|mubZzqRV)S4O$e<4p1%CzCT(0l8&~Y zo~PRv0X41B`K+X-Gal64WYoX=1ox7LqArcwO;-OZ(F-_v8|i8FLW@*$8ctOUuv8_1 z0FUyurg`Kh_@SW~`Tv@|C`J8ZQ|>JqK(#?a-yLe)#tUm`crxwF{id4n{ayqm1S2^`vSa)g3(;Y$-TdG;l+ z)Nn4`z|&B?)>!RE=T(!H1$@SKS6R0h0Nz`vlo8XW*6mop5^R$?CGEW92pBGNo;bNO zo+OWAz&gRmYr=#r27P&O6L*xK#qo9CPc45IV6#LX*>I(CicyXl#6AYzooOO@poiqr zjyGIlQMA6?9X3KIpH6mIFtSUIr?>ekoNKRAS1(s5;Qote)A)+T>BP3H`#8Um+tk%9wZDq5S|+ zGjX0J{Fi|J=w)Dg4zeWEVJE%8nI83+2pULKj*)1 zOn+@8JU7+;nSbQ7x2JCj^YwHjMo0u_LP42>bC*Cv)~V@tOFa@%ap&L~@m$JKh))O# zeVKppZl$BV;ws@Kru~ae#FK+7X?}VMjuWY>!v?}{!c*DZ&Mm`^1G$@06M(oJes|$+ zc@E`SwP{`!qZ#fWU5^K)HM*;w3FH z!`vYw>l>?4LD_~pR2M@O?Y+2GSK%~T1idp@4YoP|M5I_AF;rwBqRsN{!z~J;J>09+ z*GqWSc_yO;M7}ciYk=|)I4++t!12L<1~U*z-G|V-bPoKc;a@U15l+t5g*7y{atP#v-(q`&a{(o@>uG`Y!b4mu$cGDd{qSft}i_+2$gOm}p7jM%|f94%rF!gbJdYKlfo31lgQ zKKL%@y`}8Ni;pvIG{myC$;I0@PAnU(YHfq5(iC!$ zX*6(TFQ4NKiW`B{(sFNdn^{*ox^0HeYd|pNk%Y{VX$_|R&RoMPhuL`1d`2VG5Bi|o zV~did7LU4JcYRpC%8f+ng_LkI{ih}X0ZKx5pIa#(8qn8_O5dUrfG+CKv0y&}pv9dP zR)F8-COD?(19!t(a7diWu-WlU_`$gz`3fWKx=xM|##Ah?t9l4fGJdo!?<~^W9c-rIXBr*dpLHWwy1IdWWNrtpBpFDBY=y)OKeN36NJi;;EEM zIknhM-VWo+WR=&Km6hW7eld<7QdNQ$9cmQGV(U@u+8UZs2G%J<&a?hX_LT@+0lrUm z5=hutbTpnCExth4b13ZOZxW!RD-}(&25xxh45RSwaJ_iGREKAKTa~BJvimFprgyDR zI!@17<7AkGm{*vjdrq z$mclG6&DTJz8a>Gnft*!UWfLi-B>qRCrIO_0_>hKUxF9W*k?6hb@=20bAwz#!s zT5NZDS&y7vg=;!X$J{tz)*=_@mE$yl!uYRnSqg+!J)&oy$ihhtjLN*Y0fcSLD{Tz9 z^jPr4&r7}@4*j}pE~4gEvUbelI+G`Xxl5s;72J`q$4G{@nG>q-6zDan;mhR znv02#^cq6XarIknq3@U4j16dHAsuI zC;>|XGIJq51np!hl05VQBV>%)cw89(9(}CwXb15q)HS*kC=DCKxSLtZg?17+gd*N!#@S*^{TaaRCqR z>?^D2XNlT3IYC z3s#Lz$sdM^P!?1@+h{in9G34gZl&^&He+i6=Ims3<%AwJ(cWM=whlI%8>u|wV&R7Z+!3G6~;R!;?)Z1-h|kZ8%AMe6RZ0Gm0$995v05-f-R~bg+@|gNJ5=yiA=+(lFA{7!B97DjBlj342muJq%prfEl56T|Ja& zv*sOsq`e$xr3i7P2yx9+M`6Q)?ALg;`v3FkTabX)rvH%Ly*d5mRA

RqV%n>gs}S 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 literal 0 HcmV?d00001 diff --git a/bash-5.1/po/uk.po b/bash-5.1/po/uk.po new file mode 100644 index 0000000..de3c945 --- /dev/null +++ b/bash-5.1/po/uk.po @@ -0,0 +1,6018 @@ +# Bash Ukrainian messages +# Copyright (C) 2009 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# +# Myhailo Danylenko , 2009. +# Maxim V. Dziumanenko , 2010. +# Yuri Chornoivan , 2011, 2013, 2014, 2015, 2016, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-01-08 20:48+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 2.0\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "неправильний Ñ–Ð½Ð´ÐµÐºÑ Ð¼Ð°Ñиву" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: вилучаємо атрибут nameref" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: неможливо перетворити індекÑований маÑив на аÑоціативний" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: неправильний ключ аÑоціативного маÑиву" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÑ‡Ð¸Ñлових елементів неможливе" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: при означенні аÑоціативних маÑивів Ñлід вказувати ключ" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: не вдалоÑÑ Ñтворити: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ відповідне Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ " +"команди" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: перший непробільний Ñимвол не Ñ” «\"»" + +# c-format +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "нема заключної «%c» у %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: пропущено двокрапку-роздільник" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "«%s»: не вдалоÑÑ Ð·Ð½Ñти призначеннÑ" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ пам’Ñть Ð´Ð»Ñ %s" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ об’єм пам’Ñті Ð´Ð»Ñ %u елементів" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ об’єм пам’Ñті Ð´Ð»Ñ Â«%s»" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "«%s»: некоректна назва замінника" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдку не ввімкнено" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "«%s»: неправильна назва набору призначень клавіш" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "«%s»: невідома назва функції" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s не призначено жодної клавіші.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s можна запуÑтити за допомогою " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: не вдалоÑÑ Ð·Ð½Ñти призначеннÑ" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "кількіÑть циклів" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "має ÑÐµÐ½Ñ Ð»Ð¸ÑˆÐµ уÑередині циклів `for', `while' та `until'" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Повертає контекÑÑ‚ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ— підпрограми.\n" +" \n" +" Якщо ВИРÐЗ не вказано, виводить \"$line $filename\". Інакше виводить\n" +" \"$line $subroutine $filename\"; цю додаткову інформацію можна\n" +" викориÑтовувати Ð´Ð»Ñ Ñ‚Ñ€Ð°ÑÑƒÐ²Ð°Ð½Ð½Ñ Ñтеку.\n" +" \n" +" Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð’Ð˜Ð ÐЗУ визначає на Ñкільки рівнів викликів піднÑтиÑÑ Ð²Ñ–Ð´\n" +" поточного; поточний рівень Ñ” нульовим.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо оболонка зараз не виконує функцію\n" +" або Ñкщо ВИРÐЗ Ñ” неправильним." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "змінну HOME не вÑтановлено" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "забагато аргументів" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "порожній каталог" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "змінну OLDPWD не вÑтановлено" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "Ñ€Ñдок %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "попередженнÑ: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: викориÑтовуйте: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: параметр потребує аргументу" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: потрібен чиÑловий аргумент" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: не знайдено" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: неправильний параметр" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: некоректна назва параметра" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "«%s»: неправильний ідентифікатор" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "неправильне віÑімкове чиÑло" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "неправильне шіÑтнадцÑткове чиÑло" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "неправильне чиÑло" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: Ñигнал вказано з помилками" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "«%s»: не Ñ” ідентифікатором процеÑу чи завданнÑ" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: змінна призначена лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s виходить за вÑтановлені межі" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "аргумент" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s виходить за вÑтановлені межі" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: нема такого завданнÑ" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми не ввімкнене" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми не ввімкнене" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: заборонено обмеженнÑми" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "заборонено обмеженнÑми" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: не Ñ” вбудованою командою оболонки" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "помилка запиÑу: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "помилка вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² термінала: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² термінала: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ каталогу: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ неоднозначно" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "у цій верÑÑ–Ñ— не можна ÑкориÑтатиÑÑ Ð´Ð¾Ð²Ñ–Ð´ÐºÐ¾ÑŽ" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: не вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸: %s лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: не вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: неправильна назва дії" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: не вказано ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "попередженнÑ: можливо параметр -F працює не так, Ñк ви очікуєте" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "попередженнÑ: можливо параметр -C працює не так, Ñк ви очікуєте" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "наразі Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ñдку не виконуєтьÑÑ" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "може викориÑтовуватиÑÑ Ð»Ð¸ÑˆÐµ уÑередині функції" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: еталонна змінна не може бути маÑивом" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: не можна викориÑтовувати циклічне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñƒ змінній поÑиланнÑ" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: циклічне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "«%s»: некоректна назва змінної Ð´Ð»Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "`-f' не викориÑтовуєтьÑÑ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: незмінна функціÑ" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" +"%s: вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Ð´Ð»Ñ Ñкладеного маÑиву у лапках вважаєтьÑÑ Ð·Ð°Ñтарілим" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: неможливо знищити маÑив таким чином" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: неможливо перетворити аÑоціативний маÑив на індекÑований" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "динамічне Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½ÐµÐ´Ð¾Ñтупне" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ колективний об’єкт %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ %s у колективному об’єкті %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: завантажений не динамічно" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" +"функцією Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ %s повернуто Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ помилки (%d): не " +"завантажено" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: завантажений не динамічно" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: не вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: це каталог" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: не Ñ” звичайним файлом" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: файл завеликий" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ бінарний файл" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "вихід\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "це не оболонка ÑеанÑу: викориÑтовуйте `exit'" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "ЗалишилиÑÑ Ð¿Ñ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½ÐµÐ½Ñ– завданнÑ.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Фонові Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²Ñе ще виконуютьÑÑ.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "команду не знайдено" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "параметри журналу" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ тимчаÑовий файл: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "поточне" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d запущене без контролю завдань" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: неправильний параметр — %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: параметр потребує аргументу — %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "ÐºÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ðµ" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: в кеші нічого немає\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "влучень\tкоманда\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Команди оболонки, що відповідають Ñлову `" +msgstr[1] "Команди оболонки, що відповідають Ñловам `" +msgstr[2] "Команди оболонки, що відповідають Ñловам `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"«%s» не відповідає жодний розділ довідки. Спробуйте `help help' чи `man -k " +"%s' або `info %s'." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Ці команди оболонки визначені внутрішньо. Введіть `help', щоб побачити Ñ—Ñ… " +"ÑпиÑок.\n" +"Введіть `help name', щоб дізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ про функцію `name'.\n" +"ВикориÑтовуйте `info bash', щоб отримати більше інформації про оболонку в " +"цілому.\n" +"`man -k' чи `info' можуть Ñтати в пригоді Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð¾Ð²Ñ–Ð´ÐºÐ¸ з команд, " +"Ñких немає\n" +"у цьому ÑпиÑку.\n" +"\n" +"Зірочка (*) порÑд з назвою команди означає, що команда заборонена.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "-anrw можуть зуÑтрічатиÑÑ Ð»Ð¸ÑˆÐµ один раз" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ Ñƒ журналу команд" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: некоректна чаÑова позначка" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: невдалий пошук по журналу команд" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: помилка inlib" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "не можна викориÑтовувати інші параметри разом з `-x'" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: аргументи мають бути ідентифікаторами завдань чи процеÑів" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Ðевідома помилка" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "очікувавÑÑ Ð²Ð¸Ñ€Ð°Ð·" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: не Ñ” індекÑованим маÑивом" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: неправильно вказаний деÑкриптор файла" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: неправильний деÑкриптор файла: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: неправильна кількіÑть Ñ€Ñдків" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: неправильний початковий індекÑ" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: неправильний крок виклику функції" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ Ð½Ð°Ð·Ð²Ð° змінної-маÑиву" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "змінні-маÑиви не підтримуютьÑÑ" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "«%s»: пропущено Ñимвол у шаблоні" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "«%c»: помилкове Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ чаÑу" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "«%c»: помилковий Ñимвол у шаблоні" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "попередженнÑ: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "проблема з обробкою форматуваннÑ: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "пропущено шіÑтнадцÑткову цифру у \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "пропущено цифру Unicode у \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "немає іншого каталогу" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: некоректний аргумент" + +#: builtins/pushd.def:480 +msgid "" +msgstr "<немає поточного каталогу>" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "Ñтек каталогів порожній" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "рівень Ñтеку каталогів" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Показує ÑпиÑок збережених каталогів. Каталоги\n" +" додаютьÑÑ Ð´Ð¾ цього ÑпиÑку командою `pushd'; ви можете повернутиÑÑ\n" +" назад по ÑпиÑку за допомогою команди `popd'.\n" +" \n" +" Параметри:\n" +" -c\tочиÑтити ÑпиÑок каталогів, вилучивши уÑÑ– його елементи\n" +" -l\tне викориÑтовувати ~ Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñ–Ð², що перебувають уÑередині\n" +" \tвашого домашнього каталогу\n" +" -p\tвиводити каталоги по одному на Ñ€Ñдок\n" +" -v\tвиводити каталоги по одному на Ñ€Ñдок з зазначеннÑм позиції у\n" +" \tÑпиÑку\n" +" \n" +" Ðргументи:\n" +" +N\tПоказує N-ний зліва каталог у ÑпиÑку, що виводитьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ\n" +" \tdirs без аргументів, відлік починаєтьÑÑ Ð· нулÑ.\n" +" \n" +" -N\tПоказує N-ний з ÐºÑ–Ð½Ñ†Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ у ÑпиÑку, що виводитьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ\n" +"\tdirs без аргументів, відлік починаєтьÑÑ Ð· нулÑ." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Додає каталог на вершину Ñтеку каталогів, чи циклічно обертає\n" +" Ñтек, вÑтановлюючи поточний робочий каталог відповідно до його нової\n" +" вершини. Без аргументів мінÑÑ” міÑцÑми дві найвищих каталоги.\n" +" \n" +" Параметри:\n" +" -n\tÐе робити звичайного переходу у новий каталог при додаванні\n" +" \tкаталогів до Ñтеку, виконувати операції лише над Ñтеком.\n" +" \n" +" Ðргументи:\n" +" +N\tЦиклічно обертає Ñтек так, щоб N-ний каталог, рахуючи\n" +" \tзліва (починаючи з нулÑ) у ÑпиÑку, що виводитьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ `dirs'\n" +" \tопинитьÑÑ Ð½Ð° вершині Ñтеку.\n" +" \n" +" -N\tЦиклічно обертає Ñтек так, щоб N-ний каталог, рахуючи\n" +" \tз ÐºÑ–Ð½Ñ†Ñ (починаючи з нулÑ) у ÑпиÑку, що виводитьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ `dirs'\n" +" \tопинитьÑÑ Ð½Ð° вершині Ñтеку.\n" +" \n" +" dir\tДодає DIR на вершину Ñтеку, й робить його поточним робочим\n" +" \tкаталогом.\n" +" \n" +" Вбудована команда `dirs' показує Ñтек каталогів." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Вилучає каталоги зі Ñтеку збережених каталогів. Без аргументів, вилучає\n" +" верхній каталог у Ñтеку Ñ– змінює поточний каталог відповідно до нової\n" +" вершини Ñтеку.\n" +" \n" +" Параметри:\n" +" -n\tÐе робити звичайного переходу до нової каталоги при вилученні\n" +" \tкаталогів зі Ñтеку, проводити операції лише над Ñтеком.\n" +" \n" +" Ðргументи:\n" +" +N\tВилучає N-ний зліва каталог у ÑпиÑку, що показуєтьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ " +"`dirs'\n" +" \t(відлік починаєтьÑÑ Ð· нулÑ). Ðаприклад: `popd +0' вилучає перший " +"каталог,\n" +" \t`popd +1' — другий.\n" +" \n" +" -N\tВилучає N-ний з ÐºÑ–Ð½Ñ†Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ у ÑпиÑку, що показуєтьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ\n" +" \t`dirs' (відлік починаєтьÑÑ Ð· нулÑ). Ðаприклад: `popd -0' вилучає\n" +" \tоÑтанній каталог, `popd -1' — передоÑтанній.\n" +" \n" +" Вбудована команда `dirs' показує Ñтек каталогів." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: некоректне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу очікуваннÑ" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "помилка читаннÑ: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"`return' працює лише у функції чи Ñкрипті, запущеному за допомогою `source'" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "не можна одночаÑно знищити Ñ– функцію Ñ– змінну" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: не Ñ” маÑивом" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: не Ñ” функцією" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: не вдалоÑÑ ÐµÐºÑпортувати" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "кількіÑть зÑувів" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "не можна одночаÑно вÑтановлювати й ÑкаÑовувати параметри оболонки" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: неправильна назва параметра оболонки" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "потрібна назва файла" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: файл не знайдено" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "не вдалоÑÑ Ð¿Ñ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½Ð¸Ñ‚Ð¸" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "не можна призупинити оболонку ÑеанÑу" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s Ñ” пÑевдонімом до «%s»\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s — це ключове Ñлово оболонки\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s Ñ” функцією\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s Ñ” Ñпеціальною вбудованою командою оболонки\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s Ñ” вбудованою командою оболонки\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s — це %s\n" + +# I know the difference between hash and cache, but here, +# I think, this is more suitable... +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s знаходитьÑÑ Ð² кеші (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: помилковий аргумент обмеженнÑ" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "«%c»: неправильна команда" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ обмеженнÑ: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "віÑімкове чиÑло" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "«%c»: помилковий оператор у Ñимвольному режимі" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "«%c»: помилковий Ñимвол у Ñимвольному режимі" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " Ñ€Ñдок " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "оÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "ПрипиненнÑ..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "ІÐФОРМÐЦІЯ: " + +#: error.c:462 +msgid "unknown command error" +msgstr "невідома помилка команди" + +#: error.c:463 +msgid "bad command type" +msgstr "неправильний тип команди" + +#: error.c:464 +msgid "bad connector" +msgstr "неправильний з’єднувальний оператор" + +#: error.c:465 +msgid "bad jump" +msgstr "неправильний перехід" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: неозначена змінна" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aÑ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð²Ð¾Ð´Ñƒ вичерпано: автоматичний вихід\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÑпрÑмувати /dev/null на Ñтандартний ввід: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: «%c»: помилковий Ñимвол шаблону" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] вÑе ще Ñ–Ñнує" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "помилка каналу" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: перевищено макÑимальний рівень вкладеноÑті eval (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: перевищено макÑимальний рівень вкладеноÑті джерела (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: перевищено макÑимальний рівень вкладеноÑті функцій (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: обмеженнÑ: не можна вказувати `/' у назві команди" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: команду не знайдено" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: неправильний інтерпретатор" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ бінарний файл: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "%s Ñ” Ñпеціальною вбудованою командою оболонки" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "не вдалоÑÑ Ñтворити копію файлового деÑкриптору %d у %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "рівень Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð°Ð·Ñ–Ð² перевищено" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "неÑтача Ñтеку рекурÑÑ–Ñ—" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "ÑинтакÑична помилка у виразі" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "Ñпроба Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ-змінної" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "ÑинтакÑична помилка при Ñпробі надати змінній значеннÑ" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð½Ð° 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "вада: неправильна лекÑема у виразі" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "очікувалаÑÑ `:' умовного виразу" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "екÑпонента менша за 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "пре-інкремент чи пре-декремент потребують ідентифікатор" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "відÑÑƒÑ‚Ð½Ñ `)'" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "ÑинтакÑична помилка: очікувавÑÑ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "ÑинтакÑична помилка: помилковий арифметичний оператор" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (позначка помилки \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "некоректна арифметична оÑнова" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: неправильна кількіÑть Ñ€Ñдків" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "завелике Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ñнови" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: помилка у виразі\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ доÑтуп до каталогів вищого рівнÑ" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ²Ñтановити режим без затримки файлового деÑкриптору %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ новий файловий деÑкриптор Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ñƒ bash з файлового " +"деÑкриптору %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ файлового деÑкриптору %d вже Ñ–Ñнує буфер" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "" +"ідентифікатор відгалуженого процеÑу %d знайдено у поточному завданні %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð·ÑƒÐ¿Ð¸Ð½ÐµÐ½Ð¾Ð³Ð¾ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d, що має групу процеÑів %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "" +"add_process: ідентифікатор процеÑу %5ld (%s) вказує на його працездатніÑть" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: ідентифікатор процеÑу не Ñ–Ñнує" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Сигнал %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Завершено" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Зупинено" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Зупинено(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Працює" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Зроблено(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Вихід %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Ðевідомий Ñтан" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(збережено знімок оперативної пам’Ñті)" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (РД: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "зміна групи дочірнього процеÑу (%ld на %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: Ð¿Ñ€Ð¾Ñ†ÐµÑ %ld не Ñ” відгалуженим від цієї оболонки" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Ðема запиÑу Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d зупинене" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: нема такого завданнÑ" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ð¾ÑÑ" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d вже працює в фоні" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: увімкнути WNOHANG, щоб уникнути неÑкінченного блокуваннÑ" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: Ñ€Ñдок %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (збережено знімок оперативної пам’Ñті)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(тепер РД: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: помилка getpgrp" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: немає ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми у тлі" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: алгоритм реалізації Ñ€Ñдків" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "не вдалоÑÑ Ð²Ñтановити групу процеÑу Ð´Ð»Ñ Ñ‚ÐµÑ€Ð¼Ñ–Ð½Ð°Ð»Ð° (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "Ñ†Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ° не може керувати завданнÑми" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: умова не виконуєтьÑÑ: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: потрібна умова не виконуєтьÑÑ\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "невідомий" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: зайнÑтий блок у ÑпиÑку вільних" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: аргумент Ñ” вже звільненим блоком" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: блок ще не виділено" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "" +"free: виÑвлено перехід за нижню границю блоку; mh_nbytes не вкладаєтьÑÑ Ñƒ " +"рамки" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "" +"free: виÑвлено перехід за нижню границю блоку; mh_nbytes не вкладаєтьÑÑ Ñƒ " +"рамки" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: розмір у запиÑах на початку та в кінці блоку відрізнÑєтьÑÑ" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: блок ще не виділено" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "" +"realloc: виÑвлено перехід за нижню границю блоку; mh_nbytes не вкладаєтьÑÑ Ñƒ " +"рамки" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "" +"realloc: виÑвлено перехід за нижню границю блоку; mh_nbytes не вкладаєтьÑÑ Ñƒ " +"рамки" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: розмір у запиÑах на початку та в кінці блоку відрізнÑєтьÑÑ" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: таблицю Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð¾ FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p вже позначений Ñк виділений у таблиці?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p вже позначений Ñк вільний у таблиці?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "неправильна оÑнова" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: невідомий хоÑÑ‚" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: неправильна Ñлужба" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: неправильно вказаний мережевий шлÑÑ…" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "мережеві операції не підтримуютьÑÑ" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ локаль (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ локаль (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ локаль (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ локаль (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "ПриÑÑƒÑ‚Ð½Ñ Ð¿Ð¾ÑˆÑ‚Ð° у $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Ðова пошта у $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Пошту у %s прочитано\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "ÑинтакÑична помилка: потрібен арифметичний вираз" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "ÑинтакÑична помилка: неочікувана `;'" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "ÑинтакÑична помилка: `((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: неправильний тип інÑтрукції %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "here-document з Ñ€Ñдка %d закінчено кінцем файла (очікувалоÑÑ Â«%s»)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: інÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ Ð¿ÐµÑ€ÐµÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ `%d' поза межами" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) перевищує Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ SIZE_MAX (%lu): " +"Ñ€Ñдок обрізано" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "перевищено макÑимальну можливу кількіÑть here-document" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "файл ÑкінчивÑÑ Ñ€Ð°Ð½Ñ–ÑˆÐµ, ніж було знайдено відповідний «%c»" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "файл ÑкінчивÑÑ Ñ€Ð°Ð½Ñ–ÑˆÐµ, ніж було знайдено `]]'" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "ÑинтакÑична помилка в умовному виразі: неочікувана лекÑема «%s»" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "ÑинтакÑична помилка в умовному виразі" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "неочікувана лекÑема «%s», очікувалаÑÑ `)'" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "очікувалаÑÑ `)'" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "неочікуваний аргумент унарного умовного оператора «%s»" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "неочікуваний аргумент унарного умовного оператора" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "неочікувана лекÑема «%s», очікувавÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ð¹ умовний оператор" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "очікувавÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ð¹ умовний оператор" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "неочікуваний аргумент бінарного умовного оператора «%s»" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "неочікуваний аргумент бінарного умовного оператора" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "неочікувана лекÑема «%c» в умовній команді" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "неочікувана лекÑема «%s» в умовній команді" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "неочікувана лекÑема %d в умовній команді" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "ÑинтакÑична помилка коло неочікуваної лекÑеми «%s»" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "ÑинтакÑична помилка коло «%s»" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "ÑинтакÑична помилка: раптово ÑкінчивÑÑ Ñ„Ð°Ð¹Ð»" + +#: parse.y:6365 +msgid "syntax error" +msgstr "ÑинтакÑична помилка" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "ВикориÑтовуйте \"%s\", щоб вийти з оболонки.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "файл ÑкінчивÑÑ, перш ніж було знайдено відповідну `)'" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "завершеннÑ: функцію «%s» не знайдено" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: можливий цикл повторних Ñпроб" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: неправильний з’єднувальний оператор `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: некоректний деÑкриптор файла" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: нульовий вказівник на файл" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "" +"деÑкриптор файла xtrace (%d) не дорівнює номеру файла у вказівнику xtrace " +"(%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: «%c»: неправильний Ñимвол шаблону" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "деÑкриптор файла поза можливими межами" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: неоднозначне переÑпрÑмуваннÑ" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: заборонено перезапиÑувати наÑвні файли" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: обмеженнÑ: переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ заборонене" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "не вдалоÑÑ Ñтворити тимчаÑовий файл Ð´Ð»Ñ here-document: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: не вдалоÑÑ Ð½Ð°Ð´Ð°Ñ‚Ð¸ змінній Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´ÐµÑкриптора файла" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port не підтримуєтьÑÑ" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "помилка переÑпрÑмуваннÑ: не вдалоÑÑ Ñтворити копію деÑкриптора файла" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ /tmp, будь лаÑка Ñтворіть його!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp має бути чинною назвою каталогу" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" +"режим форматованого Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… у інтерактивних оболонках буде " +"проігноровано" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: помилковий параметр" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "не вдалоÑÑ Ð²Ñтановити uid %d: ефективним Ñ” uid %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "не вдалоÑÑ Ð²Ñтановити gid %d: ефективним Ñ” gid %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "не вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити заÑіб діагноÑтики: режим діагноÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: це каталог" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "У мене нема назви!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, верÑÑ–Ñ %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"ВикориÑтовуйте:\t%s [довгий параметр GNU] [параметр] ...\n" +"\t%s [довгий параметр GNU] [параметр] файл_Ñценарію ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Довгі параметри GNU:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Параметри оболонки:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD чи -c команда чи -O параметр_shopt\t\t(тільки на початку)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s чи -o параметр\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Введіть `%s -c \"help set\"', щоб отримати більше інформації про параметри " +"оболонки.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Введіть `%s -c help', щоб отримати більше інформації про вбудовані команди " +"оболонки.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" +"Щоб повідомити про помилку в програмі, викориÑтовуйте команду `bashbug'.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка bash: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Загальна довідкова Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ñ‰Ð¾Ð´Ð¾ викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ " +"GNU: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: некоректна операціÑ" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "ÐенаÑвний Ñигнал" + +#: siglist.c:50 +msgid "Hangup" +msgstr "ЗавиÑаннÑ" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "ПерериваннÑ" + +#: siglist.c:58 +msgid "Quit" +msgstr "Вихід" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Помилкова інÑтрукціÑ" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "Точка зупину trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ІнÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "ІнÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Помилка обчиÑлень з рухомою комою" + +#: siglist.c:86 +msgid "Killed" +msgstr "Вбитий" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Помилка шини" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Помилка адреÑуваннÑ" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Помилковий ÑиÑтемний виклик" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Зламаний канал" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Таймер" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Припинено" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Ðевідкладні події Ð’/Ð’" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Зупинено (Ñигнал)" + +#: siglist.c:126 +msgid "Continue" +msgstr "ПродовженнÑ" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Зупинка чи Ð¿Ñ€Ð¸Ð¿Ð¸Ð½ÐµÐ½Ð½Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾ процеÑу" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Зупинено (ввід з термінала)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Зупинено (вивід на термінал)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "Ð’/Ð’ готовий" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу CPU" + +#: siglist.c:154 +msgid "File limit" +msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ файла" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Таймер (віртуальний)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Таймер (профілюваннÑ)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Зміна вікна" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Сигнал кориÑтувача 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Сигнал кориÑтувача 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "Вхідні дані HFT очікують" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "наближаєтьÑÑ Ð²Ñ‚Ñ€Ð°Ñ‚Ð° живленнÑ" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "наближаєтьÑÑ Ð°Ð²Ð°Ñ€Ñ–Ð¹Ð½Ð° ÑитуаціÑ" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "перенеÑÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу на інший CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "помилка програмуваннÑ" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "Режим монітору HFT надано" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "Режим монітору HFT відкликано" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "Завершено звукову поÑлідовніÑть HFT" + +#: siglist.c:214 +msgid "Information request" +msgstr "Інформаційний запит" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Ðевідомий Ñигнал â„–%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "неправильна заміна: немає заключної «%s» у %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: неможливо означити елемент маÑиву ÑпиÑком" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "не вдалоÑÑ Ñтворити канал Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "не вдалоÑÑ Ñтворити дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ іменований канал %s Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ іменований канал %s Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ іменований канал %s Ñк fd %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "заміна команди: проігноровано порожній байт у вхідних даних" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "не вдалоÑÑ Ñтворити канал Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "не вдалоÑÑ Ñтворити дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "" +"command_substitute: не вдалоÑÑ Ñтворити копію каналу із файловим " +"деÑкриптором 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: некоректна назва змінної Ð´Ð»Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: некоректне непрÑме розгортаннÑ" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: некоректна назва змінної" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: параметр не вÑтановлено" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: параметр нульової довжини чи не вказаний" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: підрÑдок коротший за 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: неправильна заміна" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: не можна призначити таким чином" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"у наÑтупних верÑÑ–ÑÑ… оболонки буде виконуватиÑÑ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð¼Ñ–Ð½Ð¸ " +"арифметичних виразів" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "неправильна заміна: немає заключної \"`\" у %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "нема відповідника: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "очікувавÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: очікувавÑÑ Ñ‡Ð¸Ñловий вираз" + +#: test.c:265 +msgid "`)' expected" +msgstr "очікувалаÑÑ `)'" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "очікувалаÑÑ `)', отримано %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: очікувавÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ð¹ оператор" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: очікувавÑÑ ÑƒÐ½Ð°Ñ€Ð½Ð¸Ð¹ оператор" + +#: test.c:881 +msgid "missing `]'" +msgstr "відÑÑƒÑ‚Ð½Ñ `]'" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "ÑинтакÑична помилка: неочікувана `;'" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "неправильний номер Ñигналу" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" +"обробник паÑток: доÑÑгнуто макÑимального Ñ€Ñ–Ð²Ð½Ñ Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° паÑток (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: неправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: обробник Ñигналу Ñ” SIG_DFL, %d (%s) повторно надÑилаєтьÑÑ " +"Ñобі" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: неправильний Ñигнал %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "помилка Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— «%s»" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "рівень оболонки (%d) занадто виÑокий, перевÑтановлено у 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: немає контекÑту функції у поточній облаÑті" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: змінною не може бути значеннÑ, Ñке приймають інші змінні" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: приÑÐ²Ð¾Ñ”Ð½Ð½Ñ Ñ†Ñ–Ð»Ð¾Ð³Ð¾ чиÑла поÑиланню з назвою" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: немає контекÑту функції у поточній облаÑті" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s має нульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ñдка екÑпортуваннÑ" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "Помилковий Ñимвол %d у Ñ€Ñдку екÑпорту Ð´Ð»Ñ %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "немає `=' у Ñ€Ñдку екÑпорту Ð´Ð»Ñ %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context: перший елемент shell_variables не Ñ” контекÑтом функції" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: немає контекÑту global_variables" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: перший елемент shell_variables не Ñ” тимчаÑовим оточеннÑм виконаннÑ" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ ФÐЙЛ" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´ÐµÑкриптора файла траÑуваннÑ" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑуміÑноÑті не належить припуÑтимому діапазону значень" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "© Free Software Foundation, Inc., 2012" + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Ð›Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ GPLv3+: GNU GPL верÑÑ–Ñ 3 чи новіша \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, верÑÑ–Ñ %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"Це вільне програмне забезпеченнÑ; ви можете його змінювати та " +"розповÑюджувати." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Ðе надаєтьÑÑ ÐІЯКИХ ГÐРÐÐТІЙ у межах, передбачених законом." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: не вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %lu байтів (виділено %lu байтів)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: не вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %lu байтів" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: не вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %lu байтів (виділено %lu байтів)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: не вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %lu байтів" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-3] [назва[=значеннÑ] ...]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] назва [назва ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m keymap] [-f файл] [-q назва] [-u назва] [-r " +"поÑлідовніÑть-клавіш] [-x поÑлідовніÑть-клавіш:команда-оболонки] " +"[поÑлідовніÑть-клавіш:функціÑ-readline чи команда-readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [вбудована-команда [аргумент ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [вираз]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [каталог]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] команда [аргумент ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [назва[=значеннÑ] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] назва[=значеннÑ] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [параметр] назва[=значеннÑ] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [аргумент ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [аргумент ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f файл] [назва ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [аргумент ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts Ñ€Ñдок-параметрів назва [аргумент]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a назва] [команда [аргументи ...]] [переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e редактор] [-lnr] [перший] [оÑтанній] чи fc -s [шаблон=заміна] " +"[команда]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [завданнÑ]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p шлÑÑ…] [-dt] [назва ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [шаблон ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d позиціÑ] [n] чи history -anrw [файл] чи history -ps " +"аргумент [аргумент ...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ ...] чи jobs -x команда [аргументи]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s Ñигнал | -n номер-Ñигналу | -Ñигнал] pid | Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ ... чи kill -l " +"[Ñигнал]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let аргумент [аргумент ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a маÑив] [-d роздільник] [-i текÑÑ‚] [-n кількіÑть-Ñимволів] [-" +"N кількіÑть-Ñимволів][-p запрошеннÑ] [-t ліміт-чаÑу] [-u деÑкриптор-файла] " +"[назва ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o назва-параметра] [--] [аргумент ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [назва ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [назва[=значеннÑ] ...] чи export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonli [-af [назва[=значеннÑ] ...] чи readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source файл [аргументи]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". файл [аргументи]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [вираз]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ аргумент... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[аргумент] Ñигнал ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] назва [назва ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [обмеженнÑ]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [режим-доÑтупу]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [ідентифікатор]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [ідентифікатор-процеÑу ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for ÐÐЗВР[in СЛОВР... ] ; do КОМÐÐДИ; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( вираз1; вираз2; вираз3 )); do КОМÐÐДИ; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select ÐÐЗВР[in СЛОВР...;] do КОМÐÐДИ; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] канал" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case СЛОВО in [ШÐБЛОР[| ШÐБЛОÐ]...) КОМÐÐДИ ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if КОМÐÐДИ; then КОМÐÐДИ; [ elif КОМÐÐДИ; then КОМÐÐДИ; ]... [ else " +"КОМÐÐДИ; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while КОМÐÐДИ; do КОМÐÐДИ; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until КОМÐÐДИ; do КОМÐÐДИ; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [ÐÐЗВÐ] команда [переÑпрÑмуваннÑ]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function ÐÐЗВР{ КОМÐÐДИ ; } чи ÐÐЗВР() { КОМÐÐДИ ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ КОМÐÐДИ ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( вираз ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ вираз ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - назви та Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´ÐµÑких змінних оболонки" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | каталог]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [назва-параметра ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v змінна] шаблон-Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ [аргументи]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o параметр] [-A діÑ] [-G шаблон-" +"оболонки] [-W ÑпиÑок-Ñлів] [-F функціÑ] [-C команда] [-X шаблон-" +"фільтруваннÑ] [-P префікÑ] [-S ÑуфікÑ] [назва ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o параметр] [-A діÑ] [-G шаблон-оболонки] [-W " +"ÑпиÑок-Ñлів] [-F функціÑ] [-C команда] [-X шаблон-фільтруваннÑ] [-P " +"префікÑ] [-S ÑуфікÑ] [Ñлово]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o параметр] [-DEI] [назва ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d роздільник] [-n кількіÑть] [-O початок-відліку] [-s кількіÑть] [-" +"t] [-u деÑкриптор] [-C обробник] [-c крок] [маÑив]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d роздільник] [-n кількіÑть] [-O початок-відліку] [-s кількіÑть] " +"[-t] [-u деÑкриптор] [-C обробник] [-c крок] [маÑив]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Додає чи показує пÑевдоніми Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´.\n" +" \n" +" Викликана без аргументів, команда `alias' друкує ÑпиÑок пÑевдонімів у\n" +" придатній до подальшого Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ñ– `alias ÐÐЗВÐ=ЗÐÐЧЕÐÐЯ'.\n" +" \n" +" Інакше вона додає пÑевдоніми Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— вказаної ÐÐЗВИ, Ð´Ð»Ñ Ñкої надане\n" +" ЗÐÐЧЕÐÐЯ. Пробіли в кінці ЗÐÐЧЕÐÐЯ дозволÑють увімкнути подальше " +"розкриттÑ\n" +" пÑевдонімів уÑередині цього пÑевдоніму під Ñ‡Ð°Ñ Ð¹Ð¾Ð³Ð¾ підÑтавлÑннÑ.\n" +" \n" +" Параметри:\n" +" -p\tвивеÑти уÑÑ– визначені пÑевдоніми у придатній до Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ñ–.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо було вказано ÐÐЗВУ, Ð´Ð»Ñ Ñкої немає\n" +" пÑевдоніма." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Вилучає уÑÑ– вказані ÐÐЗВИ зі ÑпиÑку визначених пÑевдонімів.\n" +" \n" +" Параметри:\n" +" -a\tВилучити Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… пÑевдонімів.\n" +" \n" +" Код завершеннÑ:\n" +" ЗавершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо ÐÐЗВРне Ñ” визначеним пÑевдонімом." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Ð’Ñтановлює Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–Ñˆ та змінні readline.\n" +" \n" +" Призначає функції чи макровизначенню readline поÑлідовніÑть клавіш чи\n" +" вÑтановлює змінну readline. Ðргумент, що не відноÑÑтьÑÑ Ð´Ð¾ параметрів\n" +" має ÑинтакÑÐ¸Ñ Ñ‚Ð°ÐºÐ¸Ð¹ же Ñк у ~/.inputrc, але мають бути вказані Ñк один\n" +" аргумент, наприклад, bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Параметри:\n" +" -m набір ВикориÑтовувати ÐÐБІР призначень клавіш на чаÑ\n" +" Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ†Ñ–Ñ”Ñ— команди. Ðазви Ñ–Ñнучих наборів: " +"emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command та vi-insert.\n" +" -l ВивеÑти назви функцій.\n" +" -P ВивеÑти назви функцій та Ñкі поÑлідовноÑті клавіш " +"їм\n" +" призначено.\n" +" -p ВивеÑти функції та Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ формі, придатній " +"длÑ\n" +" подальшого викориÑÑ‚Ð°Ð½Ð½Ñ Ñк ввід.\n" +" -S ВивеÑти поÑлідовноÑті клавіш, Ñкі запуÑкають\n" +" макровизначеннÑ.\n" +" -s ВивеÑти поÑлідовноÑті клавіш, Ñкі запуÑкають\n" +" Ð¼Ð°ÐºÑ€Ð¾Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ формі, придатній Ð´Ð»Ñ Ð¿Ð¾Ð´Ð°Ð»ÑŒÑˆÐ¾Ð³Ð¾\n" +" викориÑÑ‚Ð°Ð½Ð½Ñ Ñк ввід.\n" +" -V ВивеÑти назви та Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ….\n" +" -v ВивеÑти назви та Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ… у формі, що може\n" +" бути надалі викориÑтана Ñк ввід.\n" +" -q Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ ÐŸÐ¾ÐºÐ°Ð·Ð°Ñ‚Ð¸, Ñкі поÑлідовноÑті клавіш запуÑкають цю\n" +" функцію.\n" +" -u Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¡ÐºÐ°Ñувати уÑÑ– призначені цій функції " +"поÑлідовноÑті.\n" +" -r поÑлідовніÑть СкаÑувати Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐŸÐžÐ¡Ð›Ð†Ð”ÐžÐ’ÐОСТІ.\n" +" -f файл Прочитати Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–Ñˆ з ФÐЙЛУ.\n" +" -x поÑлідовніÑть:команда-оболонки\tПри введенні ПОСЛІДОВÐОСТІ буде\n" +" \t\t\t\tзапуÑкатиÑÑ ÐšÐžÐœÐÐДÐ-ОБОЛОÐКИ.\n" +" -X Показати ÑпиÑок поÑлідовноÑтей клавіш, пов’Ñзани з -" +"x та відповідні\n" +" команди у форматі, Ñким можна ÑкориÑтатиÑÑ Ñк " +"вхідними даними\n" +" Ð´Ð»Ñ Ñ–Ð½ÑˆÐ¾Ñ— програми.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні параметри та не\n" +" виникло помилки під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Виходить з циклів for, while чи until.\n" +" \n" +" Перериває цикли FOR, WHILE чи UNTIL. Якщо вказано N, перериває\n" +" N вкладених циклів.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо N менше за 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Переходить до наÑтупної ітерації циклів for, while чи until.\n" +" \n" +" Переходить до наÑтупної ітерації циклу for, while чи until.\n" +" Якщо вказане N, перехід відбуваєтьÑÑ Ñƒ N-ному охоплюючому циклі.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо N менше 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Виконує вбудовану команду оболонки.\n" +" \n" +" ЗапуÑкає ВБУДОВÐÐУ-КОМÐÐДУ з вказаними ÐРГУМЕÐТÐМИ, пошук команди не\n" +" робитьÑÑ. Це може Ñтати в нагоді, Ñкщо ви хочете замінити вбудовану\n" +" команду функцією оболонки, але вам треба запуÑкати вбудовану команду\n" +" зÑередини цієї функції.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð’Ð‘Ð£Ð”ÐžÐ’ÐÐОЇ-КОМÐÐДИ або помилку, Ñкщо\n" +" ВБУДОВÐÐÐ-КОМÐÐДРне Ñ” вбудованою командою оболонки." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Повертає контекÑÑ‚ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ— підпрограми.\n" +" \n" +" Якщо ВИРÐЗ не вказано, виводить \"$line $filename\". Інакше виводить\n" +" \"$line $subroutine $filename\"; цю додаткову інформацію можна\n" +" викориÑтовувати Ð´Ð»Ñ Ñ‚Ñ€Ð°ÑÑƒÐ²Ð°Ð½Ð½Ñ Ñтеку.\n" +" \n" +" Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð’Ð˜Ð ÐЗУ визначає на Ñкільки рівнів викликів піднÑтиÑÑ Ð²Ñ–Ð´\n" +" поточного; поточний рівень Ñ” нульовим.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо оболонка зараз не виконує функцію\n" +" або Ñкщо ВИРÐЗ Ñ” неправильним." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Змінює робочий каталог оболонки.\n" +" \n" +" Змінює поточний каталог на КÐТÐЛОГ. Якщо КÐТÐЛОГ не вказано,\n" +" Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ взÑто зі Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ— Ñередовища HOME.\n" +" \n" +" Змінна CDPATH визначає набір каталогів, в Ñких Ñлід шукати КÐТÐЛОГ.\n" +" Каталоги у цій змінній розділÑютьÑÑ Ð´Ð²Ð¾ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ (:).\n" +" ÐŸÐ¾Ñ€Ð¾Ð¶Ð½Ñ Ð½Ð°Ð·Ð²Ð° каталогу означає поточний каталог. Якщо КÐТÐЛОГ\n" +" починаєтьÑÑ Ð· похилої риÑки (/), CDPATH не викориÑтовуєтьÑÑ.\n" +" \n" +" Якщо каталог не буде знайдено, у разі визначеного параметра оболонки\n" +" `cdable_vars', КÐТÐЛОГ вважатиметьÑÑ Ð½Ð°Ð·Ð²Ð¾ÑŽ змінної. Якщо змінна з\n" +" такою назвою Ñ–Ñнуватиме, Ñ—Ñ— Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ викориÑтане заміÑть КÐТÐЛОГУ.\n" +" \n" +" Параметри:\n" +" -L\tПримуÑово переходити за Ñимволічними поÑиланнÑми: визначати\n" +" \tджерело Ñимволічних поÑилань Ñк КÐТÐЛОГ піÑÐ»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ запиÑів `..'.\n" +" -P\tВикориÑтовувати фізичну Ñтруктуру каталогів, не переходити за\n" +" \tÑимволічними поÑиланнÑми: визначати джерело Ñимволічних поÑилань Ñк\n" +" \tКÐТÐЛОГ до обробки запиÑів `..'.\n" +" -e\tÑкщо вказано параметр -P Ñ– програмі не вдаÑтьÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ " +"поточний\n" +" \tробочий каталог, вийти з ненульовим значеннÑм Ñтану.\n" +" -@ у ÑиÑтемах, де передбачено таку підтримку, показати файл з " +"розширеними\n" +" атрибутами Ñк каталог, що міÑтить атрибути файла\n" +" \n" +" Зазвичай команда переходитиме за Ñимволічними поÑиланнÑми, неначе було\n" +" вказано параметр `-L'.\n" +" `..' оброблÑєтьÑÑ ÑˆÐ»Ñхом Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ñ–Ð² шлÑху до Ñимволу\n" +" похилої риÑки або за початковим компонентом каталогу КÐТÐЛОГ.\n" +" \n" +" Код завершеннÑ:\n" +" Повертає 0, Ñкщо каталог було змінено Ñ– Ñкщо було уÑпішно вÑтановлено " +"значеннÑ\n" +" $PWD у разі викориÑÑ‚Ð°Ð½Ð½Ñ -P. За інших результатів повертає ненульове " +"значеннÑ." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Виводить назву поточного робочого каталогу.\n" +" \n" +" Параметри:\n" +" -L\tВивеÑти Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ $PWD, Ñкщо вона вказує поточний робочий каталог.\n" +" -P\tВивеÑти фізичне Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ, без Ñимволічних поÑилань.\n" +" \n" +" Зазвичай `pwd' працює Ñк ніби вказано `-L'.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи\n" +" не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ доÑтуп до поточного робочого каталогу." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Ðічого не робить.\n" +" \n" +" Ðе має жодного ефекту; Ñ†Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° нічого не робить.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завжди уÑпішна." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"ЗавершуєтьÑÑ ÑƒÑпішно.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завжди уÑпішна." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"ЗавершуєтьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завжди завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"ЗапуÑкає звичайну команду чи показує інформацію про команди.\n" +" \n" +" ЗапуÑкає КОМÐÐДУ з ÐРГУМЕÐТÐМИ, не роблÑчи пошуку Ñеред функцій " +"оболонки,\n" +" чи показує інформацію про вказані КОМÐÐДИ. Може викориÑтовуватиÑÑ Ð´Ð»Ñ\n" +" запуÑку команд з диÑку, коли Ñ–Ñнує Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð· такою ж назвою.\n" +" \n" +" Параметри:\n" +" -p ВикориÑтовувати Ñтандартне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ PATH, Ñке забезпечує\n" +" Ð·Ð½Ð°Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… Ñтандартних утиліт.\n" +" -v ВивеÑти Ð¾Ð¿Ð¸Ñ ÐšÐžÐœÐÐД, подібний до виводу вбудованої команди " +"`type'.\n" +" -V ВивеÑти більш багатоÑлівний Ð¾Ð¿Ð¸Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— з КОМÐÐД.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÐšÐžÐœÐÐДИ або помилку, Ñкщо КОМÐÐДУ не " +"буде\n" +" знайдено." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Ð’Ñтановлює Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð° влаÑтивоÑті змінних.\n" +" \n" +" ОпиÑує змінні та вÑтановлює Ñ—Ñ… влаÑтивоÑті. Якщо ÐÐЗВИ не вказано,\n" +" показує влаÑтивоÑті та Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… змінних.\n" +" \n" +" Параметри:\n" +" -f\tОбмежити поле дії лише назвами та визначеннÑми функцій.\n" +" -F\tОбмежити показ лише назвами функцій (Ð¿Ð»ÑŽÑ Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ñдку та\n" +" \t\tфайл, звідки походить функціÑ, Ñкщо виконуєтьÑÑ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтика).\n" +" -g\tÑтворити загальні змінні, Ñкщо викориÑтано у функції оболонки,\n" +" \t\tÑкщо це не Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ¸, буде проігноровано.\n" +" -p\tПоказати влаÑтивоÑті та Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— з ÐÐЗВ.\n" +" \n" +" Параметри, що вÑтановлюють влаÑтивоÑті:\n" +" -a\tЗробити ÐÐЗВИ індекÑованими маÑивами (Ñкщо підтримуєтьÑÑ).\n" +" -A\tЗробити ÐÐЗВИ аÑоціативними маÑивами (Ñкщо підтримуєтьÑÑ).\n" +" -i\tÐадати ÐÐЗВРвлаÑтивіÑть `ціле чиÑло'.\n" +" -n\tЗробити ÐÐЗВУ поÑиланнÑм на змінну, вказану Ñк значеннÑ\n" +" -l\tПереворити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— ÐÐЗВИ до нижнього регіÑтру, Ñкщо ÐÐЗВИ " +"визначено.\n" +" -r\tЗробити ÐÐЗВИ незмінними (лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ).\n" +" -t\tÐадати ÐÐЗВÐМ влаÑтивіÑть `trace'.\n" +" -u\tПеретворити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— ÐÐЗВИ до верхнього регіÑтру, Ñкщо " +"ÐÐЗВИ визначено.\n" +" -x\tЕкÑпортувати ÐÐЗВИ.\n" +" \n" +" Замінивши `+' на `-' можна вимкнути відповідну влаÑтивіÑть.\n" +" \n" +" При означенні змінні з влаÑтивіÑтю цілого чиÑла виконуєтьÑÑ Ð°Ñ€Ð¸Ñ„Ð¼ÐµÑ‚Ð¸Ñ‡Ð½Ðµ\n" +" обчиÑÐ»ÐµÐ½Ð½Ñ (див. команду `let') значеннÑ.\n" +" \n" +" При викориÑтанні вÑередині функції `declare' робить ÐÐЗВИ локальними\n" +" змінними, Ñк команда `local'. Параметр `-g' вимикає таку поведінку.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні параметри Ñ– не " +"виникло\n" +" помилки під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Ð’Ñтановлює Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð° влаÑтивоÑті змінних.\n" +" \n" +" Синонім `declare'. ДивітьÑÑ `help declare'." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"ОпиÑує локальні змінні.\n" +" \n" +" Створює локальну змінну ÐÐЗВРта призначає їй ЗÐÐЧЕÐÐЯ. ПÐРÐМЕТР може " +"бути\n" +" будь-Ñким параметром, що приймаєтьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ `declare'.\n" +" \n" +" Локальні змінні можуть викориÑтовуватиÑÑ Ð»Ð¸ÑˆÐµ уÑередині функції; Ñ—Ñ… " +"видно\n" +" лише у функції, де Ñ—Ñ… визначено та Ñ—Ñ— нащадках.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано помилкові параметри, " +"ÑтаєтьÑÑ\n" +" помилка під Ñ‡Ð°Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ñ–Ð¹ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ Ñкщо оболонка не виконує " +"функцію." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Друкує аргументи до Ñтандартного виводу.\n" +" \n" +" Виводить ÐРГУМЕÐТИ, відокремлені один від одного одинарним Ñимволом " +"пробілу, із\n" +" завершальним Ñимволом розриву Ñ€Ñдка до Ñтандартного виводу.\n" +" \n" +" Параметри:\n" +" -n\tÐе додавати Ñимвол нового Ñ€Ñдку в кінці.\n" +" -e\tУвімкнути інтерпретацію нижченаведених поÑлідовноÑтей.\n" +" -E\tЯвно заборонити інтерпретацію поÑлідовноÑтей.\n" +" \n" +" `echo' інтерпретує наÑтупні поÑлідовноÑті, що починаютьÑÑ Ð·Ñ– зворотньої\n" +" похилої риÑки:\n" +" \\a\tÑигнал (дзвінок)\n" +" \\b\tÐ¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ ÐºÑƒÑ€Ñору\n" +" \\c\tне виводити вÑе, що далі\n" +" \\e\tÑимвол escape\n" +" \\E\tÑимвол escape\n" +" \\f\tперехід на Ñ€Ñдок нижче\n" +" \\n\tпочаток нового Ñ€Ñдку\n" +" \\r\tÐ¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ð´Ð¾ початку Ñ€Ñдку\n" +" \\t\tгоризонтальна табулÑціÑ\n" +" \\v\tвертикальна табулÑціÑ\n" +" \\\\\tÐ·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ñ Ð¿Ð¾Ñ…Ð¸Ð»Ð° риÑка\n" +" \\0nnn\tÑимвол з віÑімковим ASCII-кодом NNN. NNN може мати від\n" +" \t\tÐ½ÑƒÐ»Ñ Ð´Ð¾ трьох віÑімкових цифр\n" +" \\xHH\tвоÑьмибітовий Ñимвол із шіÑтнадцÑтковим кодом HH. HH\n" +" \t\tможе бути одною чи двома шіÑтнадцÑтковими цифрами\n" +" \\uHHHH\tÑимвол Unicode, чиє Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ” шіÑтнадцÑтковим чиÑлом HHHH.\n" +" \t\tHHHH може ÑкладатиÑÑ Ð· одної, двох, трьох або чотирьох " +"шіÑтнадцÑткових цифр.\n" +" \\UHHHHHHHH Ñимвол Unicode, чиє Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ” шіÑтнадцÑтковим чиÑлом\n" +" \t\tHHHHHHHH. HHHHHHHH може міÑтити від однією до воÑьми шіÑтнадцÑткових " +"цифр.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо виникне помилка запиÑу." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Друкує аргументи до Ñтандартного виводу.\n" +" \n" +" Виводить ÐРГУМЕÐТИ до Ñтандартного виводу з переходом на новий Ñ€Ñдок.\n" +" \n" +" Параметри:\n" +" -n\tÐе додавати Ñимвол нового Ñ€Ñдку в кінці.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° запиÑу." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Вмикає та вимикає вбудовані команди оболонки.\n" +" \n" +" Вмикає та вимикає вбудовані команди оболонки. Ð’Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ " +"дозволÑÑ”\n" +" вам запуÑкати команду з диÑку, що має таку ж назву, Ñк Ñ– вбудована " +"команда\n" +" оболонки, без потреби вказувати повний шлÑÑ… до команди.\n" +" \n" +" Параметри:\n" +" -a\tÐадрукувати ÑпиÑок вбудованих команд, вказуючи чи вони ввімкнені.\n" +" -n\tВимкнути кожну з ÐÐЗВ або надрукувати ÑпиÑок вимкнених команд.\n" +" -p\tÐадрукувати ÑпиÑок вбудованих команд у придатній Ð´Ð»Ñ Ð¿Ð¾Ð´Ð°Ð»ÑŒÑˆÐ¾Ð³Ð¾\n" +" \tÐ²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ñ–.\n" +" -s\tДрукувати лише назви `Ñпеціальних' команд Posix.\n" +" \n" +" Параметри, що контролюють динамічне завантаженнÑ:\n" +" -f\tЗавантажити вбудовану команду ÐÐЗВРз колективного об’єктного " +"ФÐЙЛУ.\n" +" -d\tВилучити вбудовану команду, завантажену за допомогою -f.\n" +" \n" +" Без параметрів вмикає кожну з ÐÐЗВ.\n" +" \n" +" Щоб викориÑтовувати `test', що знаходитьÑÑ Ð´ÐµÑÑŒ у $PATH заміÑть\n" +" вбудованої у оболонку верÑÑ–Ñ—, введіть `enable -n test'.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо ÐÐЗВРне Ñ” вбудованою командою\n" +" оболонки або Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Виконує аргументи Ñк команду оболонки.\n" +" \n" +" Об’єднує ÐРГУМЕÐТИ в один Ñ€Ñдок та виконує результат Ñк команди, " +"введені\n" +" до оболонки.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає результат Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸. Якщо отриманий Ñ€Ñдок " +"команди\n" +" Ñ” порожнім Ñ€Ñдком, команда завершуєтьÑÑ ÑƒÑпішно." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Ðналізує Ñ€Ñдок параметрів.\n" +" \n" +" Getopts викориÑтовуєтьÑÑ Ð¿Ñ–Ð´Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°Ð¼Ð¸ оболонки Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ñ–Ð·Ñƒ позиційних\n" +" аргументів Ñк параметрів командного Ñ€Ñдку.\n" +" \n" +" РЯДОК-ПÐРÐМЕТРІВ міÑтить літери параметрів, Ñкі можуть бути вказані; " +"Ñкщо\n" +" за літерою іде двокрапка, цей параметр очікує аргументу, відокремленого\n" +" від нього пробілом.\n" +" \n" +" ПіÑÐ»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ запуÑку getopts кладе наÑтупний параметр до змінної " +"оболонки\n" +" $name, Ñтворюючи Ñ—Ñ—, Ñкщо треба. Ðомер наÑтупного неопрацьованого\n" +" аргументу кладетьÑÑ Ð´Ð¾ змінної оболонки OPTIND. OPTIND вÑтановлюєтьÑÑ Ñƒ " +"1\n" +" кожного разу, Ñк запуÑкаєтьÑÑ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ° чи Ñкрипт. Якщо параметр очікує\n" +" аргументу, getopts кладе аргумент до змінної оболонки OPTARG.\n" +" \n" +" Getopts може повідомлÑти про помилки двома ÑпоÑобами. Якщо першим " +"Ñимволом\n" +" РЯДКУ-ПÐРÐМЕТРІВ Ñ” двокрапка, getopts викориÑтовує `тихе' Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ " +"про\n" +" помилки. Ð’ такому режимі Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилки не виводÑтьÑÑ. Якщо " +"буде\n" +" знайдено неправильний параметр, getopts покладе його до OPTARG. Якщо не\n" +" буде вказано очікуваний аргумент, getopts покладе ':' до ÐÐЗВÐ, а " +"Ñимвол\n" +" параметра — до OPTARG. У `гучному' режимі, при з помилками у параметрі у " +"NAME\n" +" кладетьÑÑ '?', а OPTARG ÑкидаєтьÑÑ. Якщо потрібний аргумент не вказано, " +"у\n" +" NAME кладетьÑÑ '?', OPTARG ÑкидаєтьÑÑ Ñ– друкуєтьÑÑ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтичне\n" +" повідомленнÑ.\n" +" \n" +" Якщо змінна оболонки OPTERR вÑтановлена у 0, getopts не друкуватиме\n" +" Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилки навіть у `гучному режимі'. Стандартне значеннÑ\n" +" OPTERR — 1.\n" +" \n" +" Зазвичай getopts аналізує позиційні параметри ($0 - $9), але Ñкщо " +"надано\n" +" більше аргументів, заміÑть цього аналізуютьÑÑ Ð²Ð¾Ð½Ð¸.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо знайдено параметр; помилково, Ñкщо\n" +" параметри ÑкінчилиÑÑ Ð°Ð±Ð¾ трапилаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Заміщує оболонку вказаною командою.\n" +" \n" +" ЗапуÑкає КОМÐÐДУ, заміщаючи поточну оболонку вказаною програмою.\n" +" ÐРГУМЕÐТИ передаютьÑÑ ÐšÐžÐœÐÐДІ. Якщо КОМÐÐДУ не вказано, будь-Ñкі\n" +" переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°ÑтоÑовуютьÑÑ Ð´Ð¾ поточної оболонки.\n" +" \n" +" Параметри:\n" +" -a назва\tПередати ÐÐЗВУ Ñк нульовий аргумент КОМÐÐДИ.\n" +" -c\tЗапуÑтити КОМÐÐДУ з порожнім оточеннÑм.\n" +" -l\tПоклаÑти риÑку до нульового аргументу КОМÐÐДИ.\n" +" \n" +" Якщо команду не вдаÑтьÑÑ Ð·Ð°Ð¿ÑƒÑтити, неінтерактивна оболонка " +"завершуєтьÑÑ,\n" +" Ñкщо тільки не вÑтановлено параметр оболонки `execfail'.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо команду не буде знайдено або Ñкщо\n" +" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° переÑпрÑмуваннÑ." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Виходить з оболонки.\n" +" \n" +" Виходить з оболонки, повертаючи ÑÑ‚Ð°Ñ‚ÑƒÑ N. Якщо N не вказано, беретьÑÑ\n" +" ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¾Ñтанньої запущеної команди." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Виходить з оболонки ÑеанÑу.\n" +" \n" +" Виходить з оболонки ÑеанÑу зі ÑтатуÑом N. Повертає помилку, Ñкщо " +"команду\n" +" запущено не у оболонці ÑеанÑу." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Показує чи запуÑкає команди зі ÑпиÑку попередньо запущених.\n" +" \n" +" Fc викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ чи Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° подальшого повторного\n" +" запуÑку команд з журналу. ПЕРШИЙ та ОСТÐÐÐІЙ можуть вказувати діапазон\n" +" або ПЕРШИЙ може бути Ñ€Ñдком, тоді він означатиме оÑтанню команду, що\n" +" починалаÑÑ Ð· цього Ñ€Ñдка.\n" +" \n" +" Параметри:\n" +" -e РЕДÐКТОР\tВказує редактор. Зазвичай це FCEDIT, EDITOR чи vi,\n" +" \t\tщо перше буде знайдене.\n" +" -l\tПоказати Ñ€Ñдки журналу, заміÑть редагуваннÑ.\n" +" -n\tÐе виводити номери Ñ€Ñдків у ÑпиÑку.\n" +" -r\tПоказувати у зворотньому порÑдку (найновіші першими).\n" +" \n" +" У форматі `fc -s [шаблон=заміна ...] [команда]', КОМÐÐДРзапуÑкаєтьÑÑ\n" +" піÑÐ»Ñ Ð·Ð°Ð¼Ñ–Ð½Ð¸ ШÐБЛОÐ=ЗÐМІÐÐ.\n" +" \n" +" При викориÑтанні цієї команди може бути зручним пÑевдонім r='fc -s' — " +"тоді\n" +" `r cc' запуÑтить оÑтанню команду, що починаєтьÑÑ Ð· `cc', а `r' повторно\n" +" виконає оÑтанню команду.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð·Ñ– ÑтатуÑом запущених команд, або помилкою, Ñкщо\n" +" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Переводить Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ñƒ пріоритетний режим.\n" +" \n" +" Переводить ЗÐВДÐÐÐЯ у пріоритетний режим Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ– робить його " +"поточним\n" +" завданнÑм. Якщо ЗÐВДÐÐÐЯ не вказане, беретьÑÑ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ, Ñке оболонка\n" +" вважає поточним.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð·Ñ– ÑтатуÑом Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ, що переведене\n" +" у пріоритетний режим, або помилкою, Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Переводить Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ñƒ фоновий режим.\n" +" \n" +" Переводить кожне з ЗÐВДÐÐЬ у фоновий режим виконаннÑ, Ñк ніби Ñ—Ñ… " +"запущено\n" +" із `&'. Якщо ЗÐВДÐÐÐЯ не вказані, беретьÑÑ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ, що оболонка вважає\n" +" поточним.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо контроль завдань не ввімкнено або " +"Ñкщо\n" +" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Запам’Ñтовує чи показує Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼.\n" +" \n" +" Визначає та запам’Ñтовує повний шлÑÑ… до кожної з вказаних програм. Якщо\n" +" ÐÐЗВИ не вказані, показує інформацію про збережені команди.\n" +" \n" +" Параметри:\n" +" -d\tВилучити з кешу Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ ÐÐЗВ.\n" +" -l\tПоказувати у форматі, що можна потім виконати.\n" +" -p шлÑÑ…\tвикориÑтовувати ШЛЯХ Ñк повний шлÑÑ… до ÐÐЗВИ.\n" +" -r\tСпорожнити кеш.\n" +" -t\tВивеÑти збережені Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ ÐÐЗВ, вказуючи перед розташуваннÑм\n" +" \t\tвідповідну ÐÐЗВУ, Ñкщо вказано декілька ÐÐЗВ.\n" +" Ðргументи:\n" +" ÐÐЗВÐ\tКожна з ÐÐЗВ шукаєтьÑÑ Ñƒ $PATH та додаєтьÑÑ Ð´Ð¾ ÑпиÑку " +"збережених\n" +" \t\tкоманд.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо ÐÐЗВУ не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ або Ñкщо\n" +" вказано помилковий параметр." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Показує інформацію про вбудовані команди.\n" +" \n" +" Показує коротку довідку з вбудованих команд. Якщо вказано ШÐБЛОÐ, надає\n" +" детальну довідку з уÑÑ–Ñ… команд, що відповідають цьому ШÐБЛОÐУ. Якщо " +"його\n" +" не вказано, друкує ÑпиÑок пунктів довідки.\n" +" \n" +" Параметри:\n" +" -d\tВивеÑти короткий Ð¾Ð¿Ð¸Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ з пунктів.\n" +" -m\tПоказати довідку у форматі, подібному до man(1).\n" +" -s\tВивеÑти лише короткий Ð¾Ð¿Ð¸Ñ ÑинтакÑиÑу викориÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— з " +"команд,\n" +" \tщо відповідають ШÐБЛОÐУ\n" +" \n" +" Ðргументи:\n" +" ШÐБЛОÐ\tШаблон, що визначає тему довідки.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾ Ñкщо ШÐБЛОРне знайдено або Ñкщо вказано\n" +" помилковий параметр." + +# WTF??? history list += history + history file ??? +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Показує чи змінює ÑпиÑок попередніх команд.\n" +" \n" +" Показує ÑпиÑок журналу команд з номерами Ñ€Ñдків, вказуючи `*' перед " +"кожним\n" +" зміненим Ñ€Ñдком. Якщо вказано аргумент N, показує лише N оÑтанніх " +"Ñ€Ñдків.\n" +" \n" +" Параметри:\n" +" -c\tВилучити зі ÑпиÑку уÑÑ– збережені команди.\n" +" -d позиціÑ\tВилучити Ñ€Ñдок у ПОЗИЦІЇ (відноÑній). Відлік від'ємних " +"значень\n" +" \t\tпозиції ведетьÑÑ Ð²Ñ–Ð´ ÐºÑ–Ð½Ñ†Ñ ÑпиÑку журналу\n" +" \n" +"\n" +" \n" +" -a\tДодати запиÑи з поточного ÑеанÑу до файла журналу.\n" +" -n\tДодати запиÑи, Ñких ще немає у ÑпиÑку з файла журналу, Ñ–\n" +" \t\tдопиÑати Ñ—Ñ… до файла журналу.\n" +" -r\tПрочитати файл журналу та додати його вміÑÑ‚ до ÐºÑ–Ð½Ñ†Ñ ÑпиÑку.\n" +" -w\tЗапиÑати поточний журнал команд до файла журналу.\n" +" \n" +" -p\tЗробити Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ команд на кожному з ÐРГУМЕÐТІВ та\n" +" \tпоказати результат (без Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñƒ ÑпиÑку журналу команд).\n" +" -s\tДодати ÐРГУМЕÐТИ до ÑпиÑку журналу Ñк один запиÑ.\n" +" \n" +" Якщо вказаний ФÐЙЛ, його буде викориÑтано Ñк файл журналу команд. " +"Інакше,\n" +" Ñкщо визначено $HISTFILE, беретьÑÑ Ñ—Ñ— значеннÑ, Ñкщо ні — ~/." +"bash_history.\n" +" \n" +" Якщо змінна $HISTTIMEFORMAT має значеннÑ, відмінне від порожнього " +"Ñ€Ñдку,\n" +" Ñ—Ñ— буде викориÑтано Ñк шаблон strftime(3) Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ чаÑових позначок.\n" +" Інакше чаÑові позначки не виводÑтьÑÑ.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано вірні параметри та не " +"виникло\n" +" помилки під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Виводить Ñтан завдань.\n" +" \n" +" Показує ÑпиÑок активних завдань. ЗÐВДÐÐÐЯ обмежує вивід цим завданнÑм.\n" +" Без параметрів показує Ñтан уÑÑ–Ñ… активних завдань.\n" +" \n" +" Параметри:\n" +" -l\tДодатково виводити ідентифікатори процеÑів.\n" +" -n\tПоказувати лише процеÑи, Ñтан Ñких змінивÑÑ Ð· чаÑу оÑтаннього\n" +" \tзвідомленнÑ.\n" +" -p\tПоказувати лише ідентифікатори процеÑів.\n" +" -r\tОбмежити вивід поточними завданнÑми.\n" +" -s\tОбмежити вивід зупиненими завданнÑми.\n" +" \n" +" Якщо вказано -x, КОМÐÐДУ буде виконано піÑÐ»Ñ Ð·Ð°Ð¼Ñ–Ð½Ð¸ уÑÑ–Ñ… згадок про\n" +" Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ñƒ ÐРГУМЕÐТÐÐ¥ на ідентифікатори головних процеÑів відповідних\n" +" завдань.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та не\n" +" виникло помилки під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ. При викориÑтанні -x команда\n" +" завершуєтьÑÑ Ð·Ñ– ÑтатуÑом Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÐšÐžÐœÐÐДИ." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Вилучає Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð· поточної оболонки.\n" +" \n" +" Вилучає кожне з ЗÐВДÐÐЬ з таблиці активних завдань. Якщо ЗÐВДÐÐÐЯ не\n" +" вказано, беретьÑÑ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ, Ñке оболонка вважає поточним.\n" +" \n" +" Параметри:\n" +" -a\tВилучити уÑÑ– завданнÑ, Ñкщо ЗÐВДÐÐÐЯ не вказані.\n" +" -h\tПозначити ЗÐВДÐÐÐЯ так, щоб вони не отримали SIGHUP, Ñкщо " +"оболонка\n" +" \t\tотримає SIGHUP.\n" +" -r\tВилучати лише поточні завданнÑ.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи\n" +" ЗÐВДÐÐÐЯ." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"ÐадіÑлати Ñигнал до завданнÑ.\n" +" \n" +" ÐадіÑлати процеÑу, вказаному за ідентифікатором процеÑу чи завданнÑ\n" +" Ñигнал, вказаний за його номером чи назвою. Якщо не вказано ані " +"першого,\n" +" ані другого, буде надіÑлано SIGTERM.\n" +" \n" +" Параметри:\n" +" -s Ñигнал\tСИГÐÐЛ Ñ” назвою Ñигналу.\n" +" -n Ñигнал\tСИГÐÐЛ Ñ” номером Ñигналу.\n" +" -l\tПерелічити назви Ñигналів; Ñкщо за -l ідуть іще аргументи, вони\n" +" \t\tвважаютьÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñигналів, Ñкі треба показати.\n" +" -L\tÑинонім до -l\n" +" \n" +" Kill Ñ” вбудованою командою з двох причин: це дозволÑÑ” вказувати\n" +" ідентифікатори завдань заміÑть ідентифікаторів процеÑів та дозволÑÑ”\n" +" вбивати процеÑи, навіть Ñкщо ви вичерпали ліміт процеÑів.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні аргументи та не\n" +" трапилоÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"ОбчиÑлює арифметичні вирази.\n" +" \n" +" ОбчиÑлює кожен ÐРГУМЕÐТ Ñк арифметичний вираз. ОбчиÑÐ»ÐµÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑÑ Ñƒ\n" +" цілих чиÑлах фікÑованої довжини без перевірки переповненнÑ, але вÑе ж\n" +" Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð½Ð° 0 визначаєтьÑÑ Ñ– вважаєтьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ. Ðижченаведений ÑпиÑок\n" +" операторів згруповано за рівнÑми пріоритету. Їх перелічено у порÑдку\n" +" ÑÐ¿Ð°Ð´Ð°Ð½Ð½Ñ Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ñƒ.\n" +" \n" +" \tid++, id--\tпоÑÑ‚-інкремент та поÑÑ‚-декремент змінної\n" +" \t++id, --id\tпре-інкремент та пре-декремент змінної\n" +" \t-, +\t\tунарний Ð¼Ñ–Ð½ÑƒÑ Ñ‚Ð° плюÑ\n" +" \t!, ~\t\tлогічна та побітова інверÑÑ–Ñ\n" +" \t**\t\tпіднеÑÐµÐ½Ð½Ñ Ð´Ð¾ ÑтепенÑ\n" +" \t*, /, %\t\tмноженнÑ, діленнÑ, залишок\n" +" \t+, -\t\tдодаваннÑ, відніманнÑ\n" +" \t<<, >>\t\tпобітовий зÑув вправо та вліво\n" +" \t<=, >=, <, >\tпорівнÑннÑ\n" +" \t==, !=\t\tрівніÑть, нерівніÑть\n" +" \t&\t\tпобітове AND\n" +" \t^\t\tпобітове XOR\n" +" \t|\t\tпобітове OR\n" +" \t&&\t\tлогічне AND\n" +" \t||\t\tлогічне OR\n" +" \tвираз ? вираз : вираз\n" +" \t\t\tумовний оператор\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tприÑвоєннÑ\n" +" \n" +" Змінні оболонки можуть виÑтупати операндами. Ðазву змінної буде " +"замінено\n" +" Ñ—Ñ— значеннÑм (приведеним до цілого чиÑла фікÑованої довжини) у виразі.\n" +" Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ не потрібно вÑтановлювати влаÑтивіÑть змінної `ціле чиÑло'.\n" +" \n" +" Оператори обчиÑлюютьÑÑ Ð·Ð° пріоритетами. Вкладені вирази у дужках\n" +" обчиÑлюютьÑÑ Ð¿ÐµÑ€ÑˆÐ¸Ð¼Ð¸ та можуть змінювати правила пріоритетів, наведені\n" +" вище.\n" +" \n" +" Код завершеннÑ:\n" +" Якщо результатом обчиÑÐ»ÐµÐ½Ð½Ñ Ð¾Ñтаннього ÐРГУМЕÐТУ Ñ” 0, let повертає 1,\n" +" інакше — 0." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Читає Ñ€Ñдок зі Ñтандартного вводу та розбиває його на полÑ.\n" +" \n" +" Зчитує один Ñ€Ñдок зі Ñтандартного вводу чи з ФÐЙЛОВОГО-ДЕСКРИПТОРÐ, " +"Ñкщо\n" +" вказано параметр -u. РÑдок розбиваєтьÑÑ Ð½Ð° Ð¿Ð¾Ð»Ñ Ð¿Ð¾ Ñловах, перше Ñлово\n" +" призначуєтьÑÑ Ð¿ÐµÑ€ÑˆÑ–Ð¹ ÐÐЗВІ, друге Ñлово — другій ÐÐЗВІ тощо, Ñкщо\n" +" залишатьÑÑ Ð½ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ñ– Ñлова, Ñ—Ñ… буде призначено оÑтанній ÐÐЗВІ. Як\n" +" роздільники полів розпізнаютьÑÑ Ñимволи, вказані у змінній $IFS.\n" +" \n" +" Якщо ÐÐЗВ не вказано, Ñ€Ñдок цілком буде збережено у змінній REPLY.\n" +" \n" +" Параметри:\n" +" -a маÑив\tПризначити прочитані Ñлова поÑлідовним елементам МÐСИВУ,\n" +" \t\tпочинаючи з нульового.\n" +" -d роздільник\tЧитати ввід доки не знайдетьÑÑ Ñимвол РОЗДІЛЬÐИК\n" +" \t\t(заміÑть ÐºÑ–Ð½Ñ†Ñ Ñ€Ñдка, Ñк звичайно).\n" +" -e\t\tВикориÑтовувати Readline Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ€Ñдку.\n" +" -i текÑÑ‚\tВказати початковий ТЕКСТ Ð´Ð»Ñ Readline.\n" +" -n кількіÑть\tПрипинити піÑÐ»Ñ Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐšÐ†Ð›Ð¬ÐšÐžÐ¡Ð¢Ð† Ñимволів, заміÑть\n" +" \t\tтого, щоб чекати на кінець Ñ€Ñдка.\n" +" -N кількіÑть\tПрипинити, лише піÑÐ»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ ÐšÐ†Ð›Ð¬ÐšÐžÐ¡Ð¢Ð† Ñимволів, Ñкщо\n" +" \t\tÑеред них не виÑвитьÑÑ Ñимволі ÐºÑ–Ð½Ñ†Ñ Ñ„Ð°Ð¹Ð»Ð° або не буде перевищено\n" +" \t\tÑ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ, ігнорувати роздільники.\n" +" -p запрошеннÑ\tВивеÑти Ñ€Ñдок ЗÐПРОШЕÐÐЯ (без Ð¿ÐµÑ€ÐµÐ²ÐµÐ´ÐµÐ½Ð½Ñ Ñ€Ñдка в " +"кінці)\n" +" \t\tперед читаннÑм.\n" +" -r\t\tÐе оброблÑти зворотню похилу риÑку Ð´Ð»Ñ ÐµÐºÑ€Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñимволів.\n" +" -s\t\tÐе виводити отриманий ввід на термінал.\n" +" -t ліміт-чаÑу\tПрипинити Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° вийти з помилкою Ñкщо за вказаний\n" +" \t\tпроміжок чаÑу (в Ñекундах) не було прочитано Ñ€Ñдок цілком. ЗначеннÑ\n" +" \t\tзмінної TMOUT Ñ” Ñтандартним значеннÑм Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð° чаÑом. ЛІМІТ-" +"ЧÐСУ\n" +" \t\tможе бути дробовим чиÑлом. Якщо ЛІМІТ-ЧÐСУ 0, read завершуєтьÑÑ\n" +" \t\tуÑпішно, лише Ñкщо ввід вже наÑвний на вказаному файловому\n" +" \t\tдеÑкрипторі. Якщо перевищено термін очікуваннÑ, код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ\n" +" \t\tбільшим за 128.\n" +" -u файловий-деÑкриптор\tЧитати ввід з ФÐЙЛОВОГО-ДЕСКРИПТОРУ заміÑть\n" +" \t\tÑтандартного вводу.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає помилку, Ñкщо знайдено кінець файла, Ñкщо вичерпано " +"чаÑ\n" +" Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ (значеннÑ, більше за 128), Ñкщо ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під чаÑ\n" +" вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—, або Ñкщо із -u вказано неправильний " +"файловий деÑкриптор." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"ПовертаєтьÑÑ Ð· функції оболонки.\n" +" \n" +" Виходить з функції чи Ñценарію, виконаного за допомогою source зі " +"вказаним\n" +" кодом Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ N. Якщо N не вказане, return повертає ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¾Ñтанньої\n" +" виконаної вÑередині Ñценарію чи функції команди.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає N, або помилку, Ñкщо викликана не у функції чи Ñценарії." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Ð’Ñтановлює та Ñкидає параметри оболонки та позиційні параметри.\n" +" \n" +" Змінює Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑтей оболонки та позиційних параметрів чи " +"показує\n" +" назви та Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ… оболонки.\n" +" \n" +" Параметри:\n" +" -a ЕкÑпортувати змінні, Ñкі будуть змінюватиÑÑ Ñ‡Ð¸ ÑтворюватиÑÑ.\n" +" -b Сповіщати про Ð¿Ñ€Ð¸Ð¿Ð¸Ð½ÐµÐ½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½ÑŒ негайно.\n" +" -e Завершити роботу, Ñкщо одна з команд завершитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ.\n" +" -f Вимкнути Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð² назв файлів (globbing).\n" +" -h Запам’Ñтовувати Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ по мірі викориÑтаннÑ.\n" +" -k ПереноÑити уÑÑ– аргументи-приÑÐ²Ð¾Ñ”Ð½Ð½Ñ Ð´Ð¾ Ð¾Ñ‚Ð¾Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸, не лише " +"ті,\n" +" що йдуть перед назвою команди.\n" +" -m Ввімкнути контроль завдань.\n" +" -n Читати команди, але не виконувати Ñ—Ñ….\n" +" -o параметр\n" +" Ð’Ñтановити параметр оболонки:\n" +" allexport те Ñаме, що й -a\n" +" braceexpand те Ñаме, що й -B\n" +" emacs викориÑтовувати подібний до emacs інтерфейÑ\n" +" редагуваннÑ\n" +" errexit те Ñаме, що й -e\n" +" errtrace те Ñаме, що й -E\n" +" functrace те Ñаме, що й -T\n" +" hashall те Ñаме, що й -h\n" +" histexpand те Ñаме, що й -H\n" +" history ввімкнути Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ команд\n" +" ignoreeof не виходити з оболонки піÑÐ»Ñ Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÑ–Ð½Ñ†Ñ " +"файла\n" +" interactive-comments\n" +" дозволити коментарі у інтерактивній оболонці\n" +" keyword те Ñаме, що й -k\n" +" monitor те Ñаме, що й -m\n" +" noclobber те Ñаме, що й -C\n" +" noexec те Ñаме, що й -n\n" +" noglob те Ñаме, що й -f\n" +" nolog наразі приймаєтьÑÑ, але ігноруєтьÑÑ\n" +" notify те Ñаме, що й -b\n" +" nounset те Ñаме, що й -u\n" +" onecmd те Ñаме, що й -t\n" +" physical те Ñаме, що й -P\n" +" pipefail кодом Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð»Ð°Ð½Ñ†ÑŽÐ¶ÐºÐ° команд Ñ” код " +"завершеннÑ\n" +" оÑтанньої команди, що завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, або\n" +" нуль, Ñкщо уÑÑ– команди завершилиÑÑ ÑƒÑпішно\n" +" posix змінити поведінку bash у ÑитуаціÑÑ…, де Ñ—Ñ— " +"поведінка\n" +" зазвичай відхилÑєтьÑÑ Ð²Ñ–Ð´ Ñтандарту Posix так, " +"щоб\n" +" вона відповідала Ñтандарту\n" +" privileged те Ñаме, що й -p\n" +" verbose те Ñаме, що й -v\n" +" vi викориÑтовувати подібний до vi інтерфейÑ\n" +" Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдку\n" +" xtrace те Ñаме, що й -x\n" +" -p Ввімкнений, Ñкщо дійÑний та ефективний ідентифікатори кориÑтувача " +"не\n" +" збігаютьÑÑ. Вимикає обробку файла $ENV та Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹\n" +" оболонки. Ð’Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ параметра вÑтановлює ефективні\n" +" ідентифікатори кориÑтувача та групи у реальні.\n" +" -t Завершити роботу піÑÐ»Ñ Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¾Ð´Ð½Ñ–Ñ”Ñ— команди.\n" +" -u ОброблÑти неозначені змінні Ñк помилку під Ñ‡Ð°Ñ Ñ—Ñ… підÑтавлÑннÑ.\n" +" -v Друкувати Ñ€Ñдки вводу по мірі Ñ—Ñ… читаннÑ.\n" +" -x Друкувати команди та Ñ—Ñ… аргументи при Ñ—Ñ… виконанні.\n" +" -B Виконувати Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº.\n" +" -C Ð’Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° заборонÑÑ” Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ Ð½Ð°Ñвних звичайних файлів\n" +" переÑпрÑмуваннÑм виводу.\n" +" -E Якщо ввімкнений, паÑтка ERR уÑпадковуєтьÑÑ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñми оболонки.\n" +" -H Ввімкнути підÑтавлÑÐ½Ð½Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ за допомогою !. Цей параметр " +"зазвичай\n" +" ввімкнено у інтерактивних оболонках.\n" +" -P Ðе переходити за Ñимволічними поÑиланнÑми при запуÑку команд,\n" +" таких Ñк cd, Ñка змінює поточний каталог.\n" +" -T Якщо ввімкнений, паÑтки DEBUG Ñ– RETURN будуть уÑпадковуватиÑÑ " +"функціÑми\n" +" оболонки.\n" +" -- Призначити вÑÑ– аргументи, Ñкі ще не призначено до позиційних " +"параметрів.\n" +" Якщо вÑÑ– аргументи вже призначено, позиційні параметри " +"вважатимутьÑÑ\n" +" невÑтановленими.\n" +" - Призначити аргументи, що залишилиÑÑ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ð¹Ð½Ð¸Ð¼ параметрам.\n" +" Параметри -x та -v вимикаютьÑÑ.\n" +" \n" +" Вимкнути параметр можна вказавши + заміÑть -. Параметри можна змінювати\n" +" й піÑÐ»Ñ Ð·Ð°Ð¿ÑƒÑку оболонки. Ðаразі ввімкнені параметри можна побачити у\n" +" змінній $-. Залишкові аргументи вважаютьÑÑ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ð¹Ð½Ð¸Ð¼Ð¸ параметрами\n" +" та призначаютьÑÑ Ð¿Ð¾ порÑдку відповідно до $1 $2, .. $n. Якщо ÐРГУМЕÐТИ " +"не\n" +" вказані, виводитьÑÑ ÑпиÑок уÑÑ–Ñ… змінних оболонки.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні параметри." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Скидає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð° параметри змінних та функцій оболонки.\n" +" \n" +" Вилучає змінні чи функції, вказані за ÐÐЗВÐМИ.\n" +" \n" +" Параметри:\n" +" -f\tÐÐЗВИ Ñ” функціÑми оболонки.\n" +" -v\tÐÐЗВИ Ñ” змінними оболонки.\n" +" -n\tÐÐЗВИ Ñ” поÑиланнÑми на назви, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñамих змінних " +"ÑкаÑовуєтьÑÑ.\n" +" \n" +" Без параметрів, unset Ñпочатку намагаєтьÑÑ Ñкинути змінну, Ñкщо це не\n" +" вдаÑтьÑÑ, тоді функцію.\n" +" \n" +" ДеÑкі змінні не можуть бути Ñкинутими; див. `readonly'.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи " +"ÐÐЗВÐ\n" +" доÑтупна лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Вмикає влаÑтивіÑть екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ… оболонки.\n" +" \n" +" Позначає кожну з ÐÐЗВ Ð´Ð»Ñ ÐµÐºÑпорту до Ñередовища запущених надалі " +"команд.\n" +" Якщо вказане ЗÐÐЧЕÐÐЯ, призначає ЗÐÐЧЕÐÐЯ перед тим, Ñк екÑпортувати.\n" +" \n" +" Параметри:\n" +" -f\tПрацювати з функціÑми оболонки.\n" +" -n\tВимкнути влаÑтивіÑть екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ ÑƒÑÑ–Ñ… ÐÐЗВ.\n" +" -p\tВивеÑти ÑпиÑок уÑÑ–Ñ… екÑпортованих змінних та функцій.\n" +" \n" +" Ðргумент `--' вимикає подальший аналіз параметрів.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та ÐÐЗВИ." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Робить змінні оболонки незмінними.\n" +" \n" +" Позначає кожну з ÐÐЗВ Ñк незмінну; піÑÐ»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐÐЗВИ не можуть\n" +" бути змінені призначеннÑм. Якщо вказане ЗÐÐЧЕÐÐЯ, воно призначаєтьÑÑ, " +"перш\n" +" ніж змінну буде позначено незмінною.\n" +" \n" +" Параметри:\n" +" -a\tПрацювати з індекÑованими маÑивами.\n" +" -A\tПрацювати з аÑоціативними маÑивами.\n" +" -f\tПрацювати з функціÑми оболонки.\n" +" -p\tВивеÑти ÑпиÑок вÑÑ–Ñ… незмінних змінних та функцій, залежно від\n" +" того, чи вказано параметр -f.\n" +" \n" +" Ðргумент `--' вимикає подальший аналіз параметрів.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та ÐÐЗВИ." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"ЗÑуває позиційні параметри.\n" +" \n" +" Перейменовує позиційні параметри $N+1,$N+2 ... у $1,$2 ... Якщо N не\n" +" вказане, беретьÑÑ 1.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо N менше за нуль чи більше за $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Виконує команди з файла у поточній оболонці.\n" +" \n" +" Читає та виконує команди з ФÐЙЛУ у поточній оболонці. Елементи $PATH\n" +" викориÑтовуютьÑÑ Ð¿Ñ€Ð¸ пошуку ФÐЙЛУ. Якщо вказані ÐРГУМЕÐТИ, вони Ñтають\n" +" позиційними параметрами при запуÑку ФÐЙЛУ.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої команди, виконаної у ФÐЙЛІ, " +"або\n" +" помилку, Ñкщо ФÐЙЛ не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"ПризупинÑÑ” Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ¸.\n" +" \n" +" ПризупинÑÑ” Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ¸ до Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñигналу SIGCONT. Зазвичай,\n" +" оболонки ÑеанÑу не можуть бути призупинені.\n" +" \n" +" Параметри:\n" +" -f\tПризупинити, навіть Ñкщо це оболонка ÑеанÑу.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо не ввімкнене ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми чи\n" +" Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"ПеревірÑÑ” умовний вираз.\n" +" \n" +" ЗавершуєтьÑÑ Ð· кодом 0 (Ñ–Ñтинний) чи 1 (хибний), залежно від\n" +" результату обчиÑÐ»ÐµÐ½Ð½Ñ Ð’Ð˜Ð ÐЗУ. Вирази можуть бути унарними чи бінарними.\n" +" Унарні вирази чаÑто викориÑтовуютьÑÑ Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑтей " +"файлів.\n" +" Також Ñ” оператори Ð´Ð»Ñ Ñ€Ñдків та Ð´Ð»Ñ Ð¿Ð¾Ñ€Ñ–Ð²Ð½ÑÐ½Ð½Ñ Ñ‡Ð¸Ñел.\n" +" \n" +" Файлові оператори:\n" +" \n" +" -a файл ІÑтинний, Ñкщо файл Ñ–Ñнує.\n" +" -b файл ІÑтинний, Ñкщо файл Ñ” блоковим приÑтроєм.\n" +" -c файл ІÑтинний, Ñкщо файл Ñ” Ñимвольним приÑтроєм.\n" +" -d файл ІÑтинний, Ñкщо файл Ñ” каталогом.\n" +" -e файл ІÑтинний, Ñкщо файл Ñ–Ñнує.\n" +" -f файл ІÑтинний, Ñкщо файл Ñ–Ñнує та Ñ” звичайним файлом.\n" +" -g файл ІÑтинний, Ñкщо файл має вÑтановлений біт `set-group-" +"id'.\n" +" -h файл ІÑтинний, Ñкщо файл Ñ” Ñимволічним поÑиланнÑм.\n" +" -L файл ІÑтинний, Ñкщо файл Ñ” Ñимволічним поÑиланнÑм.\n" +" -k файл ІÑтинний, Ñкщо файл має вÑтановленим біт `sticky'.\n" +" -p файл ІÑтинний, Ñкщо файл Ñ” іменованим каналом.\n" +" -r файл ІÑтинний, Ñкщо ви можете читати файл.\n" +" -s файл ІÑтинний, Ñкщо файл Ñ–Ñнує Ñ– не Ñ” порожнім.\n" +" -S файл ІÑтинний, Ñкщо файл Ñ” Ñокетом.\n" +" -t деÑкриптор ІÑтинний, Ñкщо деÑкриптор відкритий у терміналі.\n" +" -u файл ІÑтинний, Ñкщо файл має вÑтановлений біт `set-user-" +"id'.\n" +" -w файл ІÑтинний, Ñкщо ви можете запиÑувати до файла.\n" +" -x файл ІÑтинний, Ñкщо ви можете виконати файл.\n" +" -O файл ІÑтинний, Ñкщо ви Ñ” влаÑником файла.\n" +" -G файл ІÑтинний, Ñкщо ваша група Ñ” влаÑником файла.\n" +" -N файл ІÑтинний, Ñкщо файл був змінений піÑÐ»Ñ Ð¾Ñтаннього\n" +" читаннÑ\n" +" \n" +" файл1 -nt файл2 ІÑтинний, Ñкщо файл1 новіший за файл2 (за датою " +"зміни).\n" +" \n" +" файл1 -ot файл2 ІÑтинний, Ñкщо файл1 Ñтаріший за файл2.\n" +" \n" +" файл1 -ef файл2 ІÑтинний, Ñкщо файл1 Ñ” жорÑтким поÑиланнÑм на файл2.\n" +" \n" +" Оператори з Ñ€Ñдками:\n" +" \n" +" -z Ñ€Ñдок ІÑтинний, Ñкщо Ñ€Ñдок порожній.\n" +" \n" +" -n Ñ€Ñдок\n" +" Ñ€Ñдок ІÑтинний, Ñкщо Ñ€Ñдок не порожній.\n" +" \n" +" Ñ€Ñдок1 = Ñ€Ñдок2\n" +" ІÑтинний, Ñкщо Ñ€Ñдки однакові.\n" +" Ñ€Ñдок1 != Ñ€Ñдок2\n" +" ІÑтинний, Ñкщо Ñ€Ñдки не однакові.\n" +" Ñ€Ñдок1 < Ñ€Ñдок2\n" +" ІÑтинний, Ñкщо при лекÑикографічному Ñортуванні Ñ€Ñдок1\n" +" буде іти перед Ñ€Ñдком\n" +" Ñ€Ñдок1 > Ñ€Ñдок2\n" +" ІÑтинний, Ñкщо при лекÑикографічному Ñортуванні Ñ€Ñдок1\n" +" ітиме піÑÐ»Ñ Ñ€Ñдка2.\n" +" \n" +" Інші оператори:\n" +" \n" +" -o параметр ІÑтинний, Ñкщо параметр оболонки ввімкнено.\n" +" -v ЗМІÐÐÐ\t ІÑтинний, Ñкщо вÑтановлено змінну Ñередовища ЗМІÐÐÐ\n" +" -R ЗМІÐÐÐ\t ІÑтинний, Ñкщо вÑтановлено змінну Ñередовища ЗМІÐÐÐ Ñ– Ñ†Ñ " +"змінна Ñ” поÑиланнÑм на назву.\n" +" ! вираз ІÑтинний, Ñкщо вираз хибний.\n" +" вираз1 -a вираз2 ІÑтинний, Ñкщо обидва вирази Ñ–Ñтинні.\n" +" вираз1 -o вираз2 ІÑтинний, Ñкщо хоч один з виразів Ñ–Ñтинний.\n" +" \n" +" аргумент1 ОПЕРÐТОР аргумент2\n" +" Ðрифметичне порівнÑннÑ. ОПЕРÐТОР може бути: -eq, -ne,\n" +" -lt, -le, -gt, чи -ge.\n" +" \n" +" Ðрифметичні бінарні оператори Ñ–Ñтинні, Ñкщо аргумент1 рівний, не " +"рівний,\n" +" менший, менший чи рівний, більший, чи більший чи рівний аргументу2.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо ВИРÐЗ Ñ–Ñтинний; невдало, Ñкщо " +"вказано\n" +" помилковий аргумент чи ВИРÐЗ хибний." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"ПеревірÑÑ” умовний вираз.\n" +" \n" +" Це Ñинонім до вбудованої команди \"test\", але на відміну від неї " +"оÑтаннім\n" +" аргументом має бути `]'." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Показує Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу.\n" +" \n" +" Виводить збірний Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ¸ та вÑÑ–Ñ… Ñ—Ñ— нащадків на рівні\n" +" кориÑтувача та на рівні ÑиÑтеми.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завжди уÑпішна." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Перехоплює Ñигнали чи інші події.\n" +" \n" +" Визначає та активує обробники Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¸Ñ… оболонкою Ñигналів чи інших\n" +" подій.\n" +" \n" +" ÐРГУМЕÐТ Ñ” командою, Ñку буде запущено оболонкою при отриманні\n" +" СИГÐÐЛУ(ІВ). Якщо ÐРГУМЕÐТ не вказано (а СИГÐÐЛ вказано) або вказано\n" +" `-' Ñк ÐРГУМЕÐТ, кожен вказаний СИГÐÐЛ вÑтановлюєтьÑÑ Ñƒ його\n" +" початковий Ñтан. Якщо ÐРГУМЕÐТ Ñ” порожнім Ñ€Ñдком, СИГÐÐЛ(И) буде\n" +" ігноруватиÑÑ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ¾ÑŽ та запущеними з неї командами.\n" +" \n" +" Якщо СИГÐÐЛ Ñ” EXIT (0), ÐРГУМЕÐТ буде виконано при виході з оболонки. " +"Якщо\n" +" СИГÐÐЛ Ñ” DEBUG, ÐРГУМЕÐТ буде виконуватиÑÑ Ð¿ÐµÑ€ÐµÐ´ кожною проÑтою " +"командою.\n" +" \n" +" Якщо аргументи взагалі не вказано, trap покаже ÑпиÑок команд,\n" +" призначених до Ñигналів.\n" +" \n" +" Параметри:\n" +" -l\tВивеÑти ÑпиÑок Ñигналів та Ñ—Ñ… номерів.\n" +" -p\tПоказати команди, призначені СИГÐÐЛÐМ.\n" +" \n" +" Кожен з СИГÐÐЛІВ має бути або назвою Ñигналу з або номером\n" +" номером Ñигналу. Ðазви Ñигналів нечутливі до регіÑтру літер, Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ " +"SIG\n" +" необов’Ñзковий. Сигнал можна надіÑлати оболонці за допомогою\n" +" \"kill -signal $$\".\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні параметри та " +"СИГÐÐЛИ." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Показує тип команди.\n" +" \n" +" Ð”Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— ÐÐЗВИ показує, Ñк Ñ—Ñ— буде оброблено Ñк назву команди.\n" +" \n" +" Параметри:\n" +" -a\tПоказати уÑÑ– можливі інтерпретації ÐÐЗВИ; Ñкщо не вказано\n" +" \tпараметр `-p', охоплює також пÑевдоніми, вбудовані команди, функції.\n" +" -f\tÐе шукати Ñеред функцій оболонки.\n" +" -P\tВиводити лише диÑкові команди, знайдені за PATH.\n" +" -p\tВивеÑти лише назву файла на диÑку, або нічого.\n" +" -t\tВивеÑти одне Ñлово, що вказує тип — `alias', `keyword',\n" +" \t`function', `builtin', `file' чи `', Ñкщо ÐÐЗВÐ, відповідно, Ñ”\n" +" \tпÑевдонімом, зарезервованим Ñловом оболонки, функцією оболонки\n" +" \tвбудованою командою оболонки, файлом на диÑку чи не знайдене.\n" +" \n" +" Ðргументи:\n" +" ÐÐЗВÐ\tназва команди Ð´Ð»Ñ Ñ–Ð½Ñ‚ÐµÑ€Ð¿Ñ€ÐµÑ‚Ð°Ñ†Ñ–Ñ—.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо буде знайдено уÑÑ– ÐÐЗВИ; невдало, " +"Ñкщо\n" +" хоч одне з них не вдаÑтьÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Змінює Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€ÐµÑурÑів оболонки.\n" +" \n" +" ДозволÑÑ” керувати доÑтупними оболонці та Ñтвореним нею процеÑам " +"реÑурÑами,\n" +" Ñкщо це підтримуєтьÑÑ ÑиÑтемою.\n" +" \n" +" Параметри:\n" +" -S\tВикориÑтовувати `soft' обмеженнÑ.\n" +" -H\tВикориÑтовувати `hard' обмеженнÑ.\n" +" -a\tÐадати звіт про поточні обмеженнÑ.\n" +" -b\tРозмір буфера Ñокетів.\n" +" -c\tМакÑимальний розмір файла дампу пам’Ñті.\n" +" -d\tМакÑимальний розмір Ñегменту даних процеÑу.\n" +" -e\tМакÑимальний пріоритет Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ (`nice').\n" +" -f\tМакÑимальний розмір файлів, запиÑаних оболонкою та нащадками.\n" +" -i\tМакÑимальна кількіÑть Ñигналів, що очікують обробки.\n" +" -k\tМакÑимальна кількіÑть k-черг, визначених Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ процеÑу\n" +" -l\tМакÑимальний розмір, Ñкий Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¼Ð¾Ð¶Ðµ заблокувати в пам’Ñті.\n" +" -m\tМакÑимальний розмір резидентного набору.\n" +" -n\tМакÑимальна кількіÑть відкритих файлових деÑкрипторів.\n" +" -p\tРозмір буфера каналу.\n" +" -q\tМакÑимальний розмір Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñƒ чергах повідомлень POSIX\n" +" \t(у байтах).\n" +" -r\tМакÑимальний пріоритет Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñƒ реальному чаÑÑ–.\n" +" -s\tМакÑимальний розмір Ñтеку.\n" +" -t\tМакÑимальний Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑору (у Ñекундах).\n" +" -u\tМакÑимальна кількіÑть процеÑів кориÑтувача.\n" +" -v\tРозмір віртуальної пам’Ñті.\n" +" -x\tМакÑимальна кількіÑть блокувань файлів.\n" +" -T макÑимальна кількіÑть потоків обобки\n" +" \n" +" Перелік доÑтупних параметрів залежить від програмної платформи.\n" +" \n" +" Якщо вказане ОБМЕЖЕÐÐЯ, воно вÑтановлюєтьÑÑ Ñк нове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ\n" +" викориÑÑ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ð³Ð¾ реÑурÑу; Ñпеціальні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐžÐ‘ÐœÐ•Ð–Ð•ÐÐЯ `soft',\n" +" `hard', та `unlimited' означають, відповідно, поточне м’Ñке обмеженнÑ,\n" +" поточне жорÑтке Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ‚Ð° відÑутніÑть обмежень. Якщо ОБМЕЖЕÐÐЯ не\n" +" вказане, виводитьÑÑ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ð³Ð¾ реÑурÑу. Якщо не вказано\n" +" жодного параметра, беретьÑÑ -f.\n" +" \n" +" Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ змінюватиÑÑ Ñ–Ð· кроком у 1024 байти, за винÑтком -t,\n" +" що вказуєтьÑÑ Ð² Ñекундах, -p, Ñке має крок 512 байтів та -u, що Ñ”\n" +" кількіÑтю процеÑів без кроку.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи\n" +" трапилаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Ð’Ñтановлює чи показує маÑку дозволів Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð².\n" +" \n" +" Ð’Ñтановлює МÐСКУ дозволів Ð´Ð»Ñ Ñтворених файлів. Якщо МÐСКУ не вказано,\n" +" виводить поточне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°Ñки.\n" +" \n" +" Якщо МÐСКРпочинаєтьÑÑ Ð· цифри, вона вважаєтьÑÑ Ð²Ñ–Ñімковим чиÑлом;\n" +" Ñкщо ні — вона має бути Ñ€Ñдком Ñимвольного режиму, подібним до того, що\n" +" викориÑтовуєтьÑÑ chmod(1).\n" +" \n" +" Параметри:\n" +" -p\tЯкщо МÐСКУ не вказано, вивеÑти Ñ—Ñ— у формі, придатній Ð´Ð»Ñ " +"виконаннÑ.\n" +" -S\tВиводити у Ñимвольному режимі; інакше виводитьÑÑ Ð²Ñ–Ñімкове чиÑло.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильну МÐСКУ та параметри." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Чекає Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ñ‚Ð° повертає його код завершеннÑ.\n" +" \n" +" Очікує Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ процеÑу, вказаного за ІДЕÐТИФІКÐТОРОМ, що може\n" +" бути ідентифікатором процеÑу чи завданнÑ, та повертає його код " +"завершеннÑ.\n" +" Якщо ІДЕÐТИФІКÐТОР не вказано, очікує Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… активних дочірніх\n" +" процеÑів та повертає код 0. Якщо ІДЕÐТИФІКÐТОР Ñ” завданнÑм, очікує на\n" +" Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… процеÑів у ланцюжку завданнÑ.\n" +" \n" +" Якщо вказано параметр -n, очікує на Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð½Ð°Ñтупного завданнÑ\n" +" Ñ– повертає його код завершеннÑ.\n" +" \n" +" Якщо вказано параметр -f Ñ– увімкнено ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми, очікує на\n" +" вказаний ідентифікатор Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ, заміÑть Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° зміну\n" +" його Ñтану.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ð³Ð¾ завданнÑ; помилку, Ñкщо " +"вказано\n" +" неправильні параметри чи ІДЕÐТИФІКÐТОР." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Очікує на Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ процеÑу та повертає його код завершеннÑ.\n" +" \n" +" Очікує, поки завершитьÑÑ Ð²ÐºÐ°Ð·Ð°Ð½Ð¸Ð¹ процеÑ, та доповідає про його " +"уÑпішніÑть.\n" +" Якщо ІДЕÐТИФІКÐТОР-ПРОЦЕСУ не вказаний, очікує Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… дочірніх\n" +" процеÑів й завершуєтьÑÑ Ð· кодом 0. ІДЕÐТИФІКÐТОР має бути " +"ідентифікатором\n" +" процеÑу.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу з оÑтаннім вказаним " +"ідентифікатором.\n" +" Повертає код помилки, Ñкщо вказано неправильний ІДЕÐТИФІКÐТОР чи " +"параметр." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Виконати команди Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ з пунктів ÑпиÑку.\n" +" \n" +" Цикл `for' виконує поÑлідовніÑть команд Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ елементу ÑпиÑку.\n" +" Якщо `in СЛОВР...;' не вказано, тоді беретьÑÑ `in \"$@\"'. ÐÐЗВÐ\n" +" поÑлідовно вÑтановлюєтьÑÑ Ñƒ кожне зі СЛІВ, потім виконуютьÑÑ ÐšÐžÐœÐÐДИ.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ðрифметичний цикл.\n" +" \n" +" Те ж Ñаме, що й\n" +" \t(( ВИРÐЗ1 ))\n" +" \twhile (( ВИРÐЗ2 )); do\n" +" \t\tКОМÐÐДИ\n" +" \t\t(( ВИРÐЗ3 ))\n" +" \tdone\n" +" ВИРÐЗИ мають бути арифметичними виразами. Якщо будь-Ñкий з них не\n" +" вказаний, цикл поводитьÑÑ, Ñк ніби його результатом Ñ” 1.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Пропонує вибрати Ñлово та виконує відповідні команди.\n" +" \n" +" СЛОВРрозгортаютьÑÑ, утворюючи ÑпиÑок Ñлів. Отриманий ÑпиÑок Ñлів\n" +" виводитьÑÑ Ð¿Ñ€Ð¾Ð½ÑƒÐ¼ÐµÑ€Ð¾Ð²Ð°Ð½Ð¸Ð¼ до Ñтандартного виводу помилок. Якщо `in " +"СЛОВÐ'\n" +" не вказано, беретьÑÑ `in \"$@\"'. Тоді виводитьÑÑ Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ PS3 та зі\n" +" Ñтандартного вводу зчитуєтьÑÑ Ñ€Ñдок. Якщо цей Ñ€Ñдок Ñ” чиÑлом, що вказує\n" +" номер одного зі Ñлів, ÐÐЗВРвÑтановлюєтьÑÑ Ñƒ це Ñлово. Якщо Ñ€Ñдок " +"порожній,\n" +" СЛОВРта Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ Ð²Ð¸Ð²Ð¾Ð´ÑтьÑÑ Ð·Ð½Ð¾Ð². Якщо прочитано кінець файла, " +"команда\n" +" завершуєтьÑÑ. Якщо Ñ€Ñдок міÑтить щоÑÑŒ інше, ÐÐЗВІ призначаєтьÑÑ " +"порожній\n" +" Ñ€Ñдок. Прочитаний Ñ€Ñдок зберігаєтьÑÑ Ñƒ змінній REPLY. ПіÑÐ»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾\n" +" Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑŽÑ‚ÑŒÑÑ ÐšÐžÐœÐÐДИ. Команда продовжує Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð´Ð¾ÐºÐ¸ не\n" +" буде викликано команду break.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Доповідає про Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð»Ð°Ð½Ñ†ÑŽÐ¶ÐºÐ° команд.\n" +" \n" +" Виконує ЛÐÐЦЮЖОК та, по його завершенні, друкує звіт про Ñ‡Ð°Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора,\n" +" витрачений кориÑтувачем, ÑиÑтемою та Ñумарно на Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð›ÐÐЦЮЖКÐ.\n" +" \n" +" Параметри:\n" +" -p\tДрукує звіт у форматі, що відповідає Ñтандарту POSIX.\n" +" \n" +" Ð§Ð°Ñ Ð²Ð¸Ð²Ð¾Ð´Ð¸Ñ‚ÑŒÑÑ Ñƒ форматі, вказаному у змінній TIMEFORMAT.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð›ÐÐЦЮЖКÐ-КОМÐÐД." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Вибірково виконує команди відповідно до шаблону.\n" +" \n" +" Вибірково виконує КОМÐÐДИ, залежно від відповідноÑті СЛОВРШÐБЛОÐУ.\n" +" Декілька шаблонів можуть бути вказані через `|'.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Виконує команди відповідно до умови.\n" +" \n" +" КОМÐÐДИ з `if КОМÐÐДИ' виконуютьÑÑ, Ñ– Ñкщо Ñ—Ñ… код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹,\n" +" виконуютьÑÑ ÐšÐžÐœÐÐДИ з `then КОМÐÐДИ'. Інакше в Ñвою чергу виконуютьÑÑ\n" +" команди з `elif КОМÐÐДИ', Ñ– Ñкщо Ñ—Ñ… код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹, " +"виконуютьÑÑ\n" +" КОМÐÐДИ з відповідного `then КОМÐÐДИ'. Інакше виконуютьÑÑ ÐšÐžÐœÐÐДИ з\n" +" `else КОМÐÐДИ'. Блоки elif та else не обов’Ñзкові.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди або нуль,\n" +" Ñкщо жодна з перевірених умов не була Ñ–Ñтинною." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Циклічно виконує команди поки виконуєтьÑÑ ÑƒÐ¼Ð¾Ð²Ð°.\n" +" \n" +" Виконуватиме КОМÐÐДИ, поки оÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° з КОМÐÐД у `while'\n" +" не завершитьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Виконує команди доки умову не буде виконано.\n" +" \n" +" Виконуватиме КОМÐÐДИ, поки оÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° з КОМÐÐД у `until'\n" +" не завершитьÑÑ ÑƒÑпішно.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." + +# WTF? How can it return exit code of _asynchronous_ process... +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Створює ÑÐ¿Ñ–Ð²Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· назвою ÐÐЗВÐ.\n" +" \n" +" Починає аÑинхронне Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐšÐžÐœÐÐДИ, під’єднавши Ñ—Ñ— Ñтандартний ввід " +"та\n" +" вивід через канали до файлових деÑкрипторів, Ñкі приÑвоюютьÑÑ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð°Ð¼ " +"0\n" +" та 1 змінної-маÑиву ÐÐЗВÐ.\n" +" Стандартна назва змінної — \"COPROC\".\n" +" \n" +" Код завершеннÑ:\n" +" Команда coproc повертає Ñтан виходу 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"ОпиÑує функцію оболонки.\n" +" \n" +" Створює функцію оболонки з назвою ÐÐЗВÐ. Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ Ð·Ð°Ð¿ÑƒÑкаєтьÑÑ Ñк " +"звичайна\n" +" команда з назвою ÐÐЗВРта поÑлідовно виконує КОМÐÐДИ. Ðргументи до " +"команди\n" +" призначаютьÑÑ Ð½Ð° Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ð¼ $1...$n, а назва функції — " +"змінній\n" +" $FUNCNAME.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо ÐÐЗВРє незмінною." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Групує команди в один блок.\n" +" \n" +" Виконує згрупований набір команд. Це один з методів Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ " +"виводу\n" +" групи команд.\n" +" \n" +" Код завершеннÑ:\n" +" КонÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ‚Ð°Ñ” код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Продовжує Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð½Ð° передньому плані.\n" +" \n" +" Продовжує на передньому плані Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½ÐµÐ½Ð¾Ð³Ð¾ чи фонового\n" +" завданнÑ, Ñк це робить команда `fg'. ЗÐВДÐÐÐЯ може бути назвою чи " +"номером\n" +" завданнÑ. Якщо піÑÐ»Ñ Ð—ÐВДÐÐÐЯ вказано `&', Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ÑƒÑ” Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ " +"у\n" +" фоні, тобто команда має ефект команди `bg'.\n" +" \n" +" Код завершеннÑ:\n" +" Команда повертає ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð¾Ð³Ð¾ завданнÑ." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"ОбчиÑлює арифметичний вираз.\n" +" \n" +" ОбчиÑлює ВИРÐЗ відповідно до правил арифметичного розкриттÑ. Те ж Ñаме,\n" +" що й \"let ВИРÐЗ\".\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо результат обчиÑÐ»ÐµÐ½Ð½Ñ Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Виконує умовну команду.\n" +" \n" +" Повертає ÑÑ‚Ð°Ñ‚ÑƒÑ 0 чи 1, в залежноÑті від результату обчиÑÐ»ÐµÐ½Ð½Ñ ÑƒÐ¼Ð¾Ð²Ð½Ð¾Ð³Ð¾\n" +" ВИРÐЗУ. Вирази ÑкладаютьÑÑ Ð· тих Ñамих Ñкладових, що викориÑтовуютьÑÑ Ñƒ\n" +" вбудованій команді `test', але можуть також комбінуватиÑÑ Ð·Ð° допомогою:\n" +" \n" +" ( ВИРÐЗ )\t\tПовертає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð’Ð˜Ð ÐЗУ.\n" +" ! ВИРÐЗ\t\tІÑтинний, Ñкщо ВИРÐЗ хибний.\n" +" ВИРÐЗ1 && ВИРÐЗ2\tІÑтинний, Ñкщо обидва ВИРÐЗИ Ñ–Ñтинні.\n" +" ВИРÐЗ1 || ВИРÐЗ2\tІÑтинний, Ñкщо хоч один з ВИРÐЗІВ Ñ–Ñтинний.\n" +" \n" +" Якщо заÑтоÑовуютьÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¸ `==' та `!=', Ñ€Ñдок з правої Ñторони\n" +" вважаєтьÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼, й проводитьÑÑ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ° на відповідніÑть цьому\n" +" шаблону. При заÑтоÑуванні `=~' Ñ€Ñдок зліва вважаєтьÑÑ Ñ€ÐµÐ³ÑƒÐ»Ñрним\n" +" виразом, відноÑно Ñкого перевірÑєтьÑÑ Ð¿Ñ€Ð°Ð²Ð¸Ð¹ Ñ€Ñдок.\n" +" \n" +" Оператори && та || не обчиÑлюють ВИРÐЗ2, Ñкщо ВИРÐЗУ1 доÑтатньо длÑ\n" +" Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñƒ.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо ВИРÐЗ Ñ–Ñтинний." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Загальні назви змінних оболонки та їхнє викориÑтаннÑ.\n" +" \n" +" BASH_VERSION\tÐ†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ñ‰Ð¾Ð´Ð¾ верÑÑ–Ñ— Bash.\n" +" CDPATH\tРозділений двокрапкою ÑпиÑок каталогів, у Ñких оболонка буде\n" +" \t\tшукати каталоги, вказані команді `cd'.\n" +" GLOBIGNORE\tРозділений двокрапкою ÑпиÑок шаблонів назв файлів, Ñкі " +"будуть\n" +" \t\tігноруватиÑÑ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ ÑˆÐ»Ñхів.\n" +" HISTFILE\tÐазва файла, де зберігаєтьÑÑ Ñ–ÑÑ‚Ð¾Ñ€Ñ–Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´.\n" +" HISTFILESIZE\tÐайбільша дозволена кількіÑть запиÑів у файлі журналу.\n" +" HISTSIZE\tÐайбільша кількіÑть запиÑів, Ñкі може викориÑтовувати\n" +" \t\tпоточна оболонка.\n" +" HOME\tПовний шлÑÑ… до вашої домівки.\n" +" HOSTNAME\tÐазва поточної машини.\n" +" HOSTTYPE\tТип процеÑора, на Ñкому виконуєтьÑÑ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ°.\n" +" IGNOREEOF\tВизначає реакцію оболонки на Ñимвол ÐºÑ–Ð½Ñ†Ñ Ñ„Ð°Ð¹Ð»Ð° на вводі.\n" +" \t\tЯкщо змінна визначена, Ñ—Ñ— Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ” кількіÑтю таких Ñимволів,\n" +" \t\tщо можуть бути отримані під Ñ€Ñд й бути проігнорованими. Звичайне\n" +" \t\tÐ·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ â€” 10. Якщо змінна не визначена, Ñимвол ÐºÑ–Ð½Ñ†Ñ Ñ„Ð°Ð¹Ð»Ð°\n" +" \t\tозначатиме кінець вводу.\n" +" MACHTYPE\tРÑдок, що опиÑує поточну ÑиÑтему, на Ñкій виконуєтьÑÑ Bash.\n" +" MAILCHECK\tВизначає чаÑтоту перевірки пошти оболонкою.\n" +" MAILPATH\tРозділений двокрапкою ÑпиÑок файлів, Ñкі оболонка буде\n" +" \t\tперевірÑти на наÑвніÑть нової пошти.\n" +" OSTYPE\tВаріант Unix, на Ñкому виконуєтьÑÑ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ°.\n" +" PATH\tРозділений двокрапкою ÑпиÑок каталогів, де оболонка шукатиме\n" +" \t\tвиконувані файли команд.\n" +" PROMPT_COMMAND\tКоманда, Ñку оболонка буде виконувати перш ніж вивеÑти\n" +" \t\tоÑновне Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ Ð²Ð²Ð¾Ð´Ñƒ.\n" +" PS1\t\tРÑдок оÑновного Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ Ð²Ð²Ð¾Ð´Ñƒ.\n" +" PS2\t\tРÑдок вторинного Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ Ð²Ð²Ð¾Ð´Ñƒ.\n" +" PWD\t\tПовний шлÑÑ… до поточного каталогу.\n" +" SHELLOPTS\tРозділений двокрапкою ÑпиÑок увімкнених параметрів оболонки.\n" +" TERM\tТип поточного термінала.\n" +" TIMEFORMAT\tФормат виводу чаÑу командою `time'.\n" +" auto_resume\tЯкщо вÑтановлена, введені команди, що ÑкладаютьÑÑ Ð·\n" +" \t\tодного Ñлова, Ñпочатку будуть шукатиÑÑ Ñƒ ÑпиÑку поточних\n" +" \t\tпризупинених завдань. Якщо таке Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð±ÑƒÐ´Ðµ знайдене, йому буде\n" +" \t\tнадано пріоритет. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— змінної `exact' означає,\n" +" \t\tщо Ñлово має точно відповідати команді у ÑпиÑку завдань. ЗначеннÑ\n" +" \t\t`substring' означає, що Ñлово має міÑтитиÑÑ Ñƒ команді завданнÑ.\n" +" \t\tБудь-Ñке інше Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°Ñ”, що команда Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð¼Ð°Ñ”\n" +" \t\tпочинатиÑÑ Ð· вказаного Ñлова.\n" +" histchars\tСимволи, що викориÑтовуютьÑÑ Ð´Ð»Ñ Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ та\n" +" \t\tшвидкої заміни. Перший Ñимвол Ñ” Ñимволом підÑтавлÑÐ½Ð½Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ,\n" +" \t\tзазвичай це `!'. Другий — Ñимвол «швидкої заміни», зазичай `^'.\n" +" \t\tТретій — Ñимвол Â«ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»ÑƒÂ», зазвичай це `#'.\n" +" HISTIGNORE\tРозділений двокрапкою ÑпиÑок шаблонів, що викориÑтовуютьÑÑ\n" +" \t\tпри визначенні, чи зберігати команду у ÑпиÑку журналу.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Додає каталоги до ÑпиÑку збережених каталогів.\n" +" \n" +" Додає каталог на вершину Ñтеку каталогів, чи циклічно обертає\n" +" Ñтек, вÑтановлюючи поточний робочий каталог відповідно до його нової\n" +" вершини. Без аргументів мінÑÑ” міÑцÑми дві найвищих каталоги.\n" +" \n" +" Параметри:\n" +" -n\tÐе робити звичайного переходу у новий каталог при додаванні\n" +" \t\tкаталогів до Ñтеку, проводити операції лише над Ñтеком.\n" +" \n" +" Ðргументи:\n" +" +N\tЦиклічно обертає Ñтек так, щоб N-ний каталог, рахуючи\n" +" \t\tзліва (починаючи з нулÑ) у ÑпиÑку, що виводитьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ `dirs'\n" +" \t\tопинилаÑÑ Ð½Ð° вершині Ñтеку.\n" +" \n" +" -N\tЦиклічно обертає Ñтек так, щоб N-ний каталог, рахуючи\n" +" \t\tз ÐºÑ–Ð½Ñ†Ñ (починаючи з нулÑ) у ÑпиÑку, що виводитьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ `dirs'\n" +" \t\tопинивÑÑ Ð½Ð° вершині Ñтеку.\n" +" \n" +" КÐТÐЛОГ\tДодає КÐТÐЛОГ на вершину Ñтеку Ñ– робить його поточним\n" +" \t\t\tробочим каталогом.\n" +" \n" +" Вбудована команда `dirs' показує Ñтек каталогів.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказаний неправильний аргумент чи\n" +" Ñкщо не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ поточну каталог." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Вилучає каталоги зі ÑпиÑку збережених каталогів.\n" +" \n" +" Вилучає каталоги зі Ñтеку збережених каталогів. Якщо аргументи не\n" +" вказані, вилучає верхній каталог Ñтеку Ñ– змінює поточний каталог\n" +" відповідно до нової вершини Ñтеку.\n" +" \n" +" Параметри:\n" +" -n\tÐе виконувати звичайного переходу до нового каталогу при " +"вилученні\n" +" \t\tкаталогів зі Ñтеку, проводити операції лише над Ñтеком.\n" +" \n" +" Ðргументи:\n" +" +N\tВилучає N-ний зліва каталог у ÑпиÑку, що показуєтьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ\n" +" \t\t`dirs' (відлік починаєтьÑÑ Ð· нулÑ). Приклад: `popd +0' вилучає\n" +" \t\tперший каталог, `popd +1' — другий.\n" +" \n" +" -N\tВилучає N-ний з ÐºÑ–Ð½Ñ†Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ у ÑпиÑку, що показуєтьÑÑ\n" +" \t\tкомандою `dirs' (відлік починаєтьÑÑ Ð· нулÑ). Приклад: `popd -0'\n" +" \t\tвилучає оÑтанній каталог, `popd -1' — передоÑтанній.\n" +" \n" +" Вбудована команда `dirs' показує ÑпиÑок збережених каталогів.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано помилковий аргумент чи Ñкщо\n" +" не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ поточний каталог." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Показує ÑпиÑок збережених каталогів.\n" +" \n" +" Показує ÑпиÑок збережених каталогів. Каталоги додаютьÑÑ Ð´Ð¾ цього ÑпиÑку\n" +" командою `pushd'; ви можете повернутиÑÑ Ð½Ð°Ð·Ð°Ð´ по цьому ÑпиÑку за " +"допомогою\n" +" команди `popd'.\n" +" \n" +" Параметри:\n" +" -c\tСпорожнити ÑпиÑок каталогів, вилучивши уÑÑ– його елементи.\n" +" -l\tÐе викориÑтовувати ~ при виводі каталогів, що знаходÑтьÑÑ\n" +" \t\tуÑередині вашої домівки.\n" +" -p\tВиводити каталоги по одній на Ñ€Ñдок.\n" +" -v\tВиводити каталоги по одній на Ñ€Ñдок із вказаннÑм позиції у\n" +" \t\tÑпиÑку.\n" +" \n" +" Ðргументи:\n" +" +N\tПоказує N-ний зліва каталог у ÑпиÑку, що виводитьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ\n" +" \t\tdirs без аргументів, відлік починаєтьÑÑ Ð· нулÑ.\n" +" \n" +" -N\tПоказує N-ний з ÐºÑ–Ð½Ñ†Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ у ÑпиÑку, що виводитьÑÑ\n" +" \t\tкомандою dirs без аргументів, відлік починаєтьÑÑ Ð· нулÑ. \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи " +"Ñкщо\n" +" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Ð’Ñтановлює та Ñкидає параметри оболонки.\n" +" \n" +" Змінює Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐŸÐРÐМЕТРІВ. Якщо аргументи ПÐРÐМЕТРИ не вказані, " +"виводить\n" +" ÑпиÑок уÑÑ–Ñ… вказаних параметрів оболонки. Якщо ж параметрів не вказано,\n" +" виводить ÑпиÑок уÑÑ–Ñ… параметрів, вказуючи, чи параметр ввімкнений, чи " +"ні.\n" +" \n" +" Параметри:\n" +" -o\tПриймати лише ПÐРÐМЕТРИ, з Ñкими працює `set -o'.\n" +" -p\tВивеÑти ÑпиÑок параметрів оболонки та Ñ—Ñ… поточний Ñтан.\n" +" -q\tÐе виводити нічого.\n" +" -s\tВвімкнути (вÑтановити) кожен з ПÐРÐМЕТРІВ.\n" +" -u\tВимкнути (Ñкинути) кожен з ПÐРÐМЕТРІВ.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо ПÐРÐМЕТР ввімкнено; невдало, Ñкщо\n" +" вказано неправильні параметри чи ПÐРÐМЕТР вимкнено." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Форматує та виводить аргументи відповідно до шаблону ФОРМÐТ.\n" +" \n" +" Параметри:\n" +" -v змінна\tПризначити результат змінній оболонки, заміÑть\n" +" \t\tÐ²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¹Ð¾Ð³Ð¾ до Ñтандартного виводу.\n" +" \n" +" ШÐБЛОРÑкладаєтьÑÑ Ð· Ñимволів, Ñкі можуть належати до трьох типів:\n" +" звичайні Ñимволи, Ñкі проÑто копіюютьÑÑ Ñƒ вивід; Ñпеціальні\n" +" поÑлідовноÑті, Ñкі інтерпретуютьÑÑ, а потім копіюютьÑÑ Ñƒ вивід; та\n" +" вказівки форматуваннÑ, заміÑть кожної з Ñких підÑтавлÑєтьÑÑ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ð¹\n" +" аргумент.\n" +" \n" +" Окрім Ñтандартних вказівок форматуваннÑ, опиÑаних у printf(1)б\n" +" printf також розуміє:\n" +" \n" +" %b\tІнтерпретувати Ñпеціальні поÑлідовноÑті (що починаютьÑÑ Ð·Ñ–\n" +" \t\tзворотної похилої риÑки) у відповідному аргументі.\n" +" %q\tВзÑти аргумент в лапки так, щоб його можна було викориÑтати Ñк\n" +" \t\tввід оболонки\n" +" %(формат)T – вивеÑти Ñ€Ñдок дати Ñ– чаÑу з викориÑтаннÑм ФОРМÐТУ\n" +" Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… strftime(3)\n" +" \n" +" Визначене Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑтовуєтьÑÑ Ñ‚Ð°Ðº, щоб було оброблено уÑÑ– " +"аргументи.\n" +" Якщо аргументів виÑвитьÑÑ Ð¼ÐµÐ½ÑˆÐµ за кількіÑть визначених форматів, Ð´Ð»Ñ " +"зайвих\n" +" Ñпецифікаторів форматів буде викориÑтано нульові Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ порожні " +"Ñ€Ñдки, залежно від типу форматуваннÑ.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾ лише Ñкщо вказано неправильний параметр " +"або\n" +" Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° запиÑу чи приÑвоєннÑ." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Вказує, Ñк буде завершувати аргументи readline.\n" +" \n" +" Визначає Ñк завершувати аргументи Ð´Ð»Ñ ÐÐЗВ. Якщо параметри не вказано,\n" +" буде виведено поточні вказівки Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² у формі,\n" +" придатній Ð´Ð»Ñ Ð¿Ð¾Ð´Ð°Ð»ÑŒÑˆÐ¾Ð³Ð¾ виконаннÑ.\n" +" \n" +" Параметри:\n" +" -p\tВивеÑти вказівки Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñƒ формі, придатній до виконаннÑ.\n" +" -r\tВилучити вказівки Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² Ð´Ð»Ñ ÐÐЗВ (або, Ñкщо\n" +" \t\tÐÐЗВ не вказано, уÑÑ– вказівки завершеннÑ).\n" +" -D\tзаÑтоÑувати Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ‚Ð° дії Ñк типові Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´\n" +" \tбез визначених вказівок щодо доповненнÑ.\n" +" -E\tзаÑтоÑувати Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ‚Ð° дії до «порожніх» команд, Ñпроби --\n" +" \tÐ·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð½Ð° порожньому Ñ€Ñдку.\n" +" -I\tзаÑтоÑовувати Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ‚Ð° дій до початкового Ñлова\n" +" \t\t(зазвичай, команди)\n" +" \n" +" Якщо виконуєтьÑÑ Ñпроба доповненнÑ, дії виконуютьÑÑ Ñƒ порÑдку, в Ñкому\n" +" вказані наведені вище параметри у верхньому регіÑтрі. Якщо вказано\n" +" декілька параметрів, параметр -D має пріоритет над параметром -E,\n" +" а обидва ці параметри мають пріоритет над параметром -I.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та не\n" +" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Показати можливі Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ від параметрів.\n" +" \n" +" Команда призначена Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð·Ñередини функції Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ—\n" +" можливих завершень. Якщо вказано необов’Ñзковий аргумент СЛОВО,\n" +" генеруютьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ, що відповідають цьому Ñлову.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри Ñ– не\n" +" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Змінює чи показує параметри Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð².\n" +" \n" +" Змінює параметри Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² Ð´Ð»Ñ ÐÐЗВ (Ñкщо ÐÐЗВИ не вказано,\n" +" Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ, що наразі виконуєтьÑÑ). Якщо ПÐРÐМЕТРИ не вказані,\n" +" виводить параметри Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— з ÐÐЗВ (чи завершеннÑ, що\n" +" наразі виконуєтьÑÑ).\n" +" \n" +" Параметри:\n" +" \t-o параметр\tУвімкнути параметр Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… ÐÐЗВ.\n" +" \t-D\t\tЗмінити параметри Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ \"типових\" команд\n" +" \t-E\t\tЗмінити параметри Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ \"порожніх\" команд\n" +" \t-I\t\tЗмінити параметри Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð·Ð° початковим Ñловом\n" +" \n" +" Параметри можна вимикати, викориÑтовуючи `+o' заміÑть `-o'.\n" +" \n" +" Ðргументи:\n" +" \n" +" Кожна з ÐÐЗВ відповідає команді, Ð´Ð»Ñ Ñкої попередньо має бути вказано,\n" +" Ñк завершувати Ñ—Ñ— аргументи за допомогою вбудованої команди `complete'.\n" +" Якщо ÐÐЗВ не вказано, compopt має виконуватиÑÑ ÑƒÑередині функції, що\n" +" генерує ÑпиÑок завершень, тоді змінюютьÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ– вказівки завершень,\n" +" що відповідає цій функції.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та\n" +" вказівки завершень Ð´Ð»Ñ ÐÐЗВ Ñ–Ñнують." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Читає Ñ€Ñдки зі Ñтандартного вводу й заноÑить Ñ—Ñ… до маÑиву.\n" +" \n" +" Читає Ñ€Ñдки зі Ñтандартного вводу чи з ФÐЙЛОВОГО-ДЕСКРИПТОРÐ, Ñкщо " +"вказано\n" +" параметр -u, Ñ– вÑтавлÑÑ” Ñ—Ñ… до вказаної змінної-маÑиву. Якщо назву " +"змінної\n" +" не вказано, викориÑтовуєтьÑÑ Ð·Ð¼Ñ–Ð½Ð½Ð° MAPFILE.\n" +" \n" +" Параметри:\n" +" -d роздільник\tВикориÑтати Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ–Ð»Ñƒ на Ñ€Ñдки вказаний роздільник, а " +"не\n" +" Ñимвол розриву Ñ€Ñдка\n" +" -n кількіÑть\tПрочитати вказану кількіÑть Ñ€Ñдків. Ðуль означає\n" +" \t\t\t«без обмежень».\n" +" -O початок\tПочати вÑтавлÑти до маÑиву з вказаного\n" +" \t\t\tелемента маÑиву. Зазвичай відлік починаєтьÑÑ Ð· нулÑ.\n" +" -s кількіÑть\tПропуÑтити вказану кількіÑть Ñ€Ñдків на початку\n" +" \t\t\tфайла.\n" +" -t\t\tПрибирати Ñимвол Ð¿ÐµÑ€ÐµÐ²ÐµÐ´ÐµÐ½Ð½Ñ Ñ€Ñдку в кінці прочитаних\n" +" \t\t\tз файла Ñ€Ñдків.\n" +" -u деÑкриптор\tЧитати Ñ€Ñдки з вказаного деÑкриптора заміÑть\n" +" \t\t\tÑтандартного вводу\n" +" -C обробник\tВиконувати вказаний обробник піÑÐ»Ñ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ€Ñдка.\n" +" -c крок\t\tВикликати обробник лише піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾, Ñк буде прочитано\n" +" \t\t\tвказану кількіÑть Ñ€Ñдків.\n" +" \n" +" Ðргументи:\n" +" МÐСИВ\t\tÐазва змінної-маÑиву Ð´Ð»Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… з файла.\n" +" \n" +" Якщо вказано лише -C, без -c, обробник викликатиметьÑÑ Ñ–Ð· кроком 5000.\n" +" Обробник викликаєтьÑÑ Ñ–Ð· параметром, що вказує наÑтупний елемент " +"маÑиву,\n" +" Ñкому буде призначено значеннÑ.\n" +" \n" +" Якщо початковий елемент не вказано, mapfile Ñпорожнить МÐСИВ, перш ніж\n" +" починати приÑвоєннÑ.\n" +" \n" +" Код завершеннÑ:\n" +" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾ лише Ñкщо вказано неправильний параметр " +"або\n" +" Ñкщо МÐСИВ Ñ” незмінним." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Читає Ñ€Ñдки з файла до маÑиву.\n" +" \n" +" Синонім до `mapfile'." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Повертає контекÑÑ‚ поточної підпрограми.\n" +#~ " \n" +#~ " Якщо EXPR не вказано, повертає " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: Ð¿Ñ€Ð¾Ñ†ÐµÑ %5ld (%s) у the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Ðевідомий Ñигнал â„–" + +#~ msgid "Copyright (C) 2018 Free Software Foundation, Inc." +#~ msgstr "© Free Software Foundation, Inc., 2018" + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "© Free Software Foundation, Inc., 2014" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "© Free Software Foundation, Inc., 2009\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Ð›Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ GPLv2+: GNU GPL верÑÑ–Ñ 2 чи новіша \n" + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: не вдаєтьÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ розмір виділеного блоку до %lu байтів " +#~ "(виділено %lu байтів)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: не вдаєтьÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %lu байтів" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: %s:%d: не вдаєтьÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ розмір виділеного блоку до %lu " +#~ "байтів (виділено %lu байтів)" diff --git a/bash-5.1/po/vi.gmo b/bash-5.1/po/vi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..256ec8eef76f2becb3b0613248fa51d17a504df8 GIT binary patch literal 138318 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ʷ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 TKllL5gY-r#*3EOxzv=xi5K#R% literal 0 HcmV?d00001 diff --git a/bash-5.1/po/vi.po b/bash-5.1/po/vi.po new file mode 100644 index 0000000..583c705 --- /dev/null +++ b/bash-5.1/po/vi.po @@ -0,0 +1,5841 @@ +# Vietnamese translation for BASH (Bourne Again SHell). +# Bản dịch tiếng Việt dành cho bash. +# Copyright © 2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Clytie Siddall , 2008, 2009, 2010. +# Nguyá»…n Thái Ngá»c Duy , 2012. +# Trần Ngá»c Quân , 2012-2014, 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: bash 4.4-beta1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2015-10-18 07:47+0700\n" +"Last-Translator: Trần Ngá»c Quân \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "sai chỉ số mảng" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: không thể chuyển đổi mảng kiểu chỉ số sang mảng kết hợp" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: khóa mảng liên kết không hợp lệ" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: không thể gán cho chỉ số không thuá»™c kiểu số" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: phải sá»­ dụng chỉ số phụ khi gán mảng kết hợp" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: không thể tạo: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: không tìm thấy ánh xạ phím (keymap) cho câu lệnh" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: ký tá»± khác khoảng trắng đầu tiên không phải là “\"â€" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "thiếu dấu đóng “%c†trong %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: thiếu dấu hai chấm phân cách" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "“%sâ€: không thể tháo" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "khai triển ngoặc ôm: không thể phân bổ bá»™ nhá»› cho %s" + +#: braces.c:406 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "khai triển ngoặc ôm: gặp lá»—i khi phân bổ bá»™ nhá»› cho “%d†phần tá»­" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "khai triển ngoặc ôm: gặp lá»—i khi phân bổ bá»™ nhá»› cho “%sâ€" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "“%sâ€: tên bí danh không hợp lệ" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "chưa bật sá»­a đổi dòng" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "“%sâ€: tên sÆ¡ đồ phím không hợp lệ" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: không thể Ä‘á»c: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "“%sâ€: không hiểu tên hàm" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s không được ràng buá»™c vá»›i bất kỳ phím nào.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s có thể được gá»i thông qua " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "“%sâ€: không thể tháo" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "đếm vòng" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "chỉ có nghÄ©a trong vòng lặp “forâ€, “while†hay “untilâ€" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Trả vá» ngữ cảnh cá»§a lệnh gá»i hàm hiện thá»i.\n" +"\n" +" Không có BTHỨC thì trả lại \"$line $filename\". Có BTHỨC thì trả\n" +" lại \"$line $subroutine $filename\"; thông tin bổ sung này có thể\n" +" được dùng để cung cấp stack trace.\n" +"\n" +" Giá trị cá»§a BTHỨC thì ngụ ý bao nhiêu lần gá»i cần lùi lại đằng\n" +" trước lệnh gá»i hiện tại; khung gá»i đầu là khung 0.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại 0 trừ khi hệ vá» Ä‘ang chạy hàm hệ vá», BTHỨC cÅ©ng hợp lệ." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "Chưa đặt biến môi trưá»ng HOME" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "quá nhiá»u đối số" + +#: builtins/cd.def:342 +#, fuzzy +msgid "null directory" +msgstr "không có thư mục khác" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "Chưa đặt biến môi trưá»ng OLDPWD" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "dòng %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "cảnh báo: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: cách dùng: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: tùy chá»n cần má»™t đối số" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: cần đối số thuá»™c kiểu số" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: không tìm thấy" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: tùy chá»n không hợp lệ" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: tên tùy chá»n không hợp lệ" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "“%sâ€: không phải là định danh hợp lệ" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "số bát phân không hợp lệ" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "số thập lục không hợp lệ" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "số không hợp lệ" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: sai đặc tả tín hiệu" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "“%sâ€: không phải má»™t pid hoặc đặc tả công việc hợp lệ" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: biến chỉ Ä‘á»c" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s nằm ngoài phạm vi" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "đối số" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s nằm ngoài phạm vi" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: không có công việc như vậy" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: không có Ä‘iá»u khiển công việc" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "không có Ä‘iá»u khiển công việc" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: bị hạn chế" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "bị hạn chế" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: không phải là lệnh tích hợp trong hệ vá»" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "lá»—i ghi: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "lá»—i đặt các thuá»™c tính thiết bị cuối: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "lá»—i lấy các thuá»™c tính thiết bị cuối: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: lá»—i lấy thư mục hiện thá»i: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: đặc tả công việc chưa rõ ràng" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "trợ giúp không sẵn có ở phiên bản này" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: không thể há»§y đặt: %s chỉ Ä‘á»c" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: không thể há»§y đặt" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: tên hành động không hợp lệ" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: không có đặc tả tá»± hoàn thiện" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "cảnh báo: tùy chá»n “-F†có thể không hoạt động như mong đợi" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "cảnh báo: tùy chá»n “-C†có thể không hoạt động như bạn mong đợi" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "hiện thá»i không thá»±c thi chức năng tá»± hoàn thiện" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "chỉ có thể dùng trong má»™t hàm" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: biến tham chiếu không thể là má»™t mảng" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: biến nameref tá»± tham chiếu là không được phép" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: tên tham chiếu quẩn tròn" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: tên biến không hợp lệ cho má»™t tham chiếu tên" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "không thể dùng “-f†để tạo hàm" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: hàm chỉ Ä‘á»c" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: gán mảng phức hợp được trích dẫn đã lạc hậu" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: không thể há»§y biến mảng bằng cách này" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: không thể chuyển đổi mảng kết hợp sang mảng chỉ số" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "không có chức năng nạp động" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "không thể mở đối tượng dùng chung %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "không tìm thấy %s trong đối tượng dùng chung %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s không được tải động" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "tải hàm cho %s trả vá» lá»—i nghiêm trá»ng (%d): nên không được tải" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s không được tải động" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: không thể xóa: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: là thư mục" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: không phải là tập tin thưá»ng" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: tập tin quá lá»›n" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: không thể thá»±c hiện tập tin nhị phân" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: không thể thá»±c thi: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "đăng xuất\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "không phải hệ vỠđăng nhập: hãy dùng lệnh “exitâ€" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Có công việc bị dừng.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Có công việc Ä‘ang chạy.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "không tìm thấy lệnh" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "đặc tả lịch sá»­" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: không thể mở tập tin tạm: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "hiện tại" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "công việc %d đã khởi chạy mà không có Ä‘iá»u khiển công việc" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: tùy chá»n không được phép -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: tùy chá»n cần đối số -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "tắt băm" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: bảng băm rá»—ng\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "gợi ý\tlệnh\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Câu lệnh hệ vá» tương ứng vá»›i từ khóa “" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"không có trợ giúp cho “%sâ€. Hãy chạy lệnh “help help†hoặc “man -k %s†hay " +"“info %sâ€." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: không thể mở: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Những câu lệnh này được định nghÄ©a ná»™i bá»™. Gõ lệnh “help†để xem danh sách " +"này.\n" +"Gõ “help TÊN†để biết chi tiết vá» hàm “TÊNâ€.\n" +"Dùng “info bash†để tìm thông tin chung vá» hệ vá» nói chung.\n" +"Dùng “man -k†hoặc “info†để tìm thông tin vá» lệnh ngoài danh sách này.\n" +"\n" +"Dấu sao (*) bên cạnh tên nghÄ©a là lệnh bị tắt.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "chỉ có thể dùng má»™t cá»§a những tùy chá»n -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "vị trí lịch sá»­" + +#: builtins/history.def:340 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: đối số không hợp lệ" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: gặp lá»—i khi khai triển lịch sá»­" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib bị lá»—i" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "không cho phép dùng tùy chá»n thêm vá»›i “-xâ€" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: đối số phải là ID tiến trình hoặc công việc" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Lá»—i không rõ" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "cần biểu thức" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: không phải là mảng chỉ số" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: đặc tả bá»™ mô tả tập tin không hợp lệ" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: bá»™ mô tả tập tin không hợp lệ: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: sai số lượng dòng" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: gốc mảng không hợp lệ" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: lượng gá»i ngược không hợp lệ" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "tên biến mảng vẫn trống" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "cần há»— trợ biến mảng" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "“%sâ€: thiếu ký tá»± định dạng" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "“%câ€: đặc tả định dạng thá»i gian không đúng" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "“%câ€: ký tá»± định dạng không hợp lệ" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "cảnh báo: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "vấn đỠphân tích cú pháp định dạng: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "thiếu chữ số thập lục phân cho \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "thiếu chữ số unicode cho \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "không có thư mục khác" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: đối số không hợp lệ" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "ngăn xếp thư mục trống" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "chỉ số ngăn xếp thư mục" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Hiển thị danh sách các thư mục được nhá»› hiện thá»i. Lệnh “pushd†thêm\n" +" thư mục vào danh sách này. “popd†lấy thư mục khá»i danh sách.\n" +"\n" +" Tùy chá»n:\n" +" -c\txóa má»i phần tá»­ trong ngăn xếp thư mục\n" +" -l\tkhông in phiên bản thư mục có dấu ngã nằm trước\n" +" \tmà tương ứng vá»›i thư mục chính cá»§a ngưá»i dùng\n" +" -p\tin ngăn xếp thư mục má»—i dòng má»™t mục\n" +" -v\tin ngăn xếp thư mục má»—i dòng má»™t mục kèm vị trí trong ngăn xếp\n" +"\n" +" Äối số:\n" +" +N\thiển thị mục thứ N đếm từ bên trái khi gá»i không tùy chá»n,\n" +" bắt đầu từ số không.\n" +"\n" +" -N\thiển thị mục thứ N đếm từ bên phải khi gá»i không tùy chá»n,\n" +" bắt đầu từ số không." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Thêm thư mục vào trên ngăn xếp thư mục, hoặc xoay ngăn xếp, làm cho thư mục\n" +" hiện thá»i nằm ở trên đầu. Äổi vị trí hai thư mục trên cùng nếu\n" +" không có đối số.\n" +"\n" +" Tùy chá»n:\n" +" -n\tngăn thay đổi thư mục bình thưá»ng khi thêm, chỉ thao tác\n" +" \ttrên ngăn xếp thư mục.\n" +"\n" +" Äối số:\n" +" +N\txoay ngăn xếp để thư mục thứ N (đếm từ bên trái “dirsâ€, bắt\n" +" \tđầu từ số không) nằm ở đầu.\n" +"\n" +" -N\txoay ngăn xếp để thư mục thứ N (đếm từ bên phải “dirsâ€, bắt\n" +" \tđầu từ số không) nằm ở đầu.\n" +"\n" +" THƯ-MỤC\tthêm THƯ-MỤC vào đầu ngăn xếp thư mục và dùng làm thư mục\n" +" \tlàm việc hiện thá»i.\n" +"\n" +" Lệnh “dirs†hiển thị ngăn xếp thư mục." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Gỡ bá» thư mục khá»i ngăn xếp thư mục. Không đưa ra đối số thì bá» thư mục\n" +" đầu khá»i ngăn xếp và chuyển đổi sang thư mục đầu má»›i.\n" +"\n" +" Tùy chá»n:\n" +" -n\tngăn thay đổi thư mục bình thưá»ng khi thêm, chỉ thao tác\n" +"\t\ttrên ngăn xếp thư mục.\n" +"\n" +" Äối số:\n" +" +N\txoay ngăn xếp để thư mục thứ N (đếm từ bên trái “dirsâ€. bắt\n" +" \tđầu từ số không) nằm ở đầu. Ví dụ “popd +0†bá» thư mục\n" +" đầu tiên, “popd +1†bá» thư mục thứ hai.\n" +"\n" +" -N\txoay ngăn xếp để thư mục thứ N (đếm từ bên phải “dirsâ€. bắt\n" +" \tđầu từ số không) nằm ở đầu. Ví dụ “popd -0†bá» thư mục\n" +" cuối cùng, “popd -1†bá» thư mục kế cuối.\n" +"\n" +" Lệnh “dirs†hiển thị ngăn xếp thư mục." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: sai đặc tả thá»i gian chá» tối Ä‘a" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "lá»—i Ä‘á»c: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "chỉ có thể “return†từ má»™t hàm hoặc văn lệnh được “sourceâ€" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "không thể há»§y đặt đồng thá»i má»™t hàm VÀ má»™t biến" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: không phải biến mảng" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: không phải hàm" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: không thể xuất" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "số lượng dịch" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "không thể đồng thá»i đặt và há»§y đặt các tùy chá»n hệ vá»" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: tên tùy chá»n hệ vá» không hợp lệ" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "cần đối số tên tập tin" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: không tìm thấy tập tin" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "không thể ngưng" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "không thể ngưng hệ vỠđăng nhập" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s là bí danh cá»§a “%sâ€\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s là từ khóa cá»§a hệ vá»\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s là má»™t hàm\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s là lệnh tích hợp đặc biệt cá»§a hệ vá»\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s là lệnh tích hợp hệ vá»\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s là %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s được băm (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: đối số giá»›i hạn không hợp lệ" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "“%câ€: câu lệnh sai" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: không thể lấy giá»›i hạn: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "giá»›i hạn" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: không thể sá»­a đổi giá»›i hạn: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "số bát phân" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "“%câ€: toán tá»­ chế độ ký hiệu không hợp lệ" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "“%câ€: ký tá»± chế độ ký hiệu không hợp lệ" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " dòng " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "lệnh cuối: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Há»§y bá»â€¦" + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "THBÃO:" + +#: error.c:462 +msgid "unknown command error" +msgstr "lá»—i lệnh không rõ" + +#: error.c:463 +msgid "bad command type" +msgstr "kiểu lệnh sai" + +#: error.c:464 +msgid "bad connector" +msgstr "bá»™ kết nối sai" + +#: error.c:465 +msgid "bad jump" +msgstr "nhảy sai" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: biến chưa liên kết" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aquá thá»i hạn đợi dữ liệu nhập: tá»± động đăng xuất\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "không thể chuyển hướng đầu vào chuẩn từ /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "ÄỊNH DẠNG THỜI GIAN: “%câ€: ký tá»± định dạng không hợp lệ" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "lá»—i ống dẫn" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: vượt quá mức độ eval lồng nhau tối Ä‘a (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: vượt quá mức độ nguồn lồng nhau tối Ä‘a (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: vượt quá mức độ các hàm lồng nhau tối Ä‘a (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: bị hạn chế: không thể dùng “/†trong tên lệnh" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: không tìm thấy lệnh" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: bá»™ thông dịch sai" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: không thể thá»±c hiện tập tin nhị phân: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "“%sâ€: là lệnh tích hợp đặc biệt" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "không thể nhân đôi fd %d thành fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "vượt quá ngưỡng đệ quy cá»§a biểu thức" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "tràn ngược ngăn xếp đệ quy" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "lá»—i cú pháp trong biểu thức" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "thá»­ gán cho thứ không phải biến" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "lá»—i cú pháp trong biểu thức" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "chia cho không" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "lá»—i: “token expassign†sai" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "cần “:†cho biểu thức Ä‘iá»u kiện" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "số mÅ© nhá» hÆ¡n 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "cần định danh sau tăng/giảm dần trước" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "thiếu “)â€" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "lá»—i cú pháp: cần toán hạng" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "lá»—i cú pháp: toán tá»­ số há»c không hợp lệ" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (thẻ bài lá»—i là \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "cÆ¡ số (toán há»c) không hợp lệ" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: sai số lượng dòng" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "cÆ¡ số có giá trị quá lá»›n" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: lá»—i biểu thức\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: không thể truy cập thư mục cấp trên" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "không thể đặt lại chế độ “nodelay†cho fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "không thể cấp phát bá»™ mô tả tập tin má»›i cho dữ liệu nhập bash từ fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: đã có bá»™ đệm cho fd má»›i %d" + +# NghÄ©a chữ ? +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "pid được tánh nhánh %d có vẻ Ä‘ang chạy trong công việc %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "Ä‘ang xóa công việc bị dừng chạy %d vá»›i nhóm tiến trình %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) được đánh dấu vẫn hoạt động" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: không có pid như vậy" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Tín hiệu %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Xong" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Bị dừng" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Bị dừng(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Äang chạy" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Xong(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Thoát %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Không rõ trạng thái" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(xuất ra core)" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid tiến trình con (%ld thành %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld không phải là tiến trình con cá»§a hệ vá» này" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Không có mục ghi vá» tiến trình %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: công việc %d bị dừng chạy" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: không có công việc như vậy" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: công việc bị chấm dứt" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: công việc %d đã Ä‘ang chạy ná»n" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: Ä‘ang bật WNOHANG để tránh bị chặn vô hạn" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: dòng %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (xuất ra core)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd ngay: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp bị lá»—i" + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: ká»· luật dòng" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: ká»· luật dòng" + +# NghÄ©a chữ : dừng dịch +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "không thể đặt nhóm tiến trình cuối cùng (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "không có Ä‘iá»u khiển công việc trong hệ vá» này" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: khẳng định gặp lá»—i: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: khẳng định bị sai\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "không rõ" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "" +"malloc (cấp phát bá»™ nhá»›): khối bá»™ nhá»› dành riêng trên danh sách các khối còn " +"trống bị ghi vào" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: đã được gá»i vá»›i đối số khối đã được giải phóng" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: đã được gá»i vá»›i đối số khối chưa cấp phát" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: phát hiện sá»± tràn ngược; mh_nbytes ở ngoại phạm vi" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: phát hiện sá»± tràn ngược; mh_nbytes ở ngoại phạm vi" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: kích cỡ Ä‘oạn đầu và cuối không trùng" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: đã được gá»i vá»›i đối số khối chưa cấp phát" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: phát hiện sá»± tràn ngược; mh_nbytes nằm ngoài phạm vi cho phép" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: phát hiện sá»± tràn ngược; mh_nbytes nằm ngoài phạm vi cho phép" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: kích cỡ Ä‘oạn đầu và cuối không trùng" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: bảng cấp phát đầy vá»›i FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p đã có trong bảng như được cấp phát?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p đã có trong bảng như còn trống?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "cÆ¡ số không hợp lệ" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: không rõ máy" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: dịch vụ không hợp lệ" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: đặc tả đưá»ng dẫn mạng sai" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "không há»— trợ thao tác mạng" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: không thể chuyển đổi miá»n địa phương (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: không thể chuyển đổi miá»n địa phương (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: không thể chuyển đổi miá»n địa phương (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: không thể chuyển đổi miá»n địa phương (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Bạn có thư trong $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Bạn có thư má»›i trong $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Äã Ä‘á»c thư trong %s\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "lá»—i cú pháp: cần biểu thức số há»c" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "lá»—i cú pháp: gặp dấu chấm phẩy “;†bất thưá»ng" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "lá»—i cú pháp: “((%s))â€" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: kiểu chỉ lệnh sai %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "tài liệu này ở dòng %d định giá»›i bằng kết thúc tập tin (muốn “%sâ€)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: chỉ dẫn chuyển hướng “%d†nằm ngoài phạm vi" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "vượt quá số lượng tài-liệu-đây tối Ä‘a" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "gặp kết thúc tập tin bất thưá»ng trong khi tìm “%c†tương ứng" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "gặp kết thúc tập tin bất thưá»ng trong khi tìm “]]â€" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "gặp lá»—i cú pháp trong biểu thức Ä‘iá»u kiện: thẻ bài bất thưá»ng “%sâ€" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "gặp lá»—i cú pháp trong biểu thức Ä‘iá»u kiện" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "gặp thẻ bài bất thưá»ng “%sâ€, cần “)â€" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "cần “)â€" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "đối số bất thưá»ng “%s†cho toán tá»­ má»™t ngôi Ä‘iá»u kiện" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "đối số bất thưá»ng cho toán tá»­ má»™t ngôi Ä‘iá»u kiện" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "thẻ bài bất thưá»ng “%sâ€, cần toán tá»­ hai ngôi Ä‘iá»u kiện" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "cần toán tá»­ hai ngôi Ä‘iá»u kiện" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "đối số bất thưá»ng “%s†cho toán tá»­ hai ngôi Ä‘iá»u kiện" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "đối số bất thưá»ng cho toán tá»­ hai ngôi Ä‘iá»u kiện" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "gặp thẻ bài bất thưá»ng “%c†trong câu lệnh Ä‘iá»u kiện" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "gặp thẻ bài bất thưá»ng “%s†trong câu lệnh Ä‘iá»u kiện" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "gặp thẻ bài bất thưá»ng “%d†trong câu lệnh Ä‘iá»u kiện" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "có lá»—i cú pháp ở gần thẻ bài bất thưá»ng “%sâ€" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "lá»—i cú pháp ở gần “%sâ€" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "lá»—i cú pháp: kết thúc tập tin bất thưá»ng" + +#: parse.y:6365 +msgid "syntax error" +msgstr "lá»—i cú pháp" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Dùng \"%s\" để rá»i hệ vá».\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "gặp kết thúc tập tin bất thưá»ng trong khi tìm “)†tương ứng" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "tá»± hoàn thiện: không tìm thấy hàm “%sâ€" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: bá»™ kết nối sai “%dâ€" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: sai bá»™ mô tả tập tin" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: con trá» tập tin NULL" + +# NghÄ©a chữ ? +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: “%câ€: ký tá»± định dạng không hợp lệ" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "bá»™ mô tả tập tin ở ngoại phạm vi" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: chuyển hướng chưa rõ ràng" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: không thể ghi đè lên tập tin đã có" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: bị hạn chế: không thể chuyển hướng kết xuất" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "không thể tạo tập tin tạm thá»i cho tài liệu này: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: không thể gán fd vào biến" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port không được há»— trợ nếu không có mạng" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "lá»—i chuyển hướng: không thể nhân đôi fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "không tìm thấy /tmp, hãy tạo má»›i!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "“/tmp†phải là tên thư mục hợp lệ" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: tùy chá»n không hợp lệ" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "không thể đặt uid thành %d: uid chịu tác động %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "không thể đặt gid thành %d: gid chịu tác động %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: Là má»™t thư mục" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Không có tên!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, phiên bản %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Cách dùng:\t%s [tùy chá»n GNU dài] [tùy chá»n] …\n" +"\t\t%s [tùy chá»n GNU dài] [tùy chá»n] tập-tin-văn-lệnh …\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Tùy chá»n dài:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Tùy chá»n:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD hoặc -c lệnh hay -O tùy-chá»n-ngắn\t\t(chỉ gá»i)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s hoặc -o tùy-chá»n\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "Gõ “%s -c \"help set\"†để xem thông tin vá» các tùy chá»n hệ vá».\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "Gõ “%s -c help†để xem thông tin vá» các lệnh hệ vá» tích hợp.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" +"Dùng lệnh “bashbug†để thông báo lá»—i.\n" +"Báo cáo các lá»—i dịch cho: .\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "Trang chá»§ bash: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Trợ giúp chung vá» cách sá»­ dụng phần má»m GNU : \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: thao tác không hợp lệ" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Tín hiệu giả" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Treo" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Ngắt" + +#: siglist.c:58 +msgid "Quit" +msgstr "Thoát" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Câu lệnh không được phép" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "Theo vết/đặt bẫy BPT" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Câu lệnh HỦY BỎ" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "Câu lệnh EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Lá»—i dấu chấm động" + +#: siglist.c:86 +msgid "Killed" +msgstr "Bị giết" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Lá»—i bus" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Lá»—i phân Ä‘oạn" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Lá»—i lệnh gá»i hệ thống" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "á»ng dẫn há»ng" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Äồng hồ báo thức" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Bị chấm dứt" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Äiá»u kiện IO gấp" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Bị dừng (tín hiệu)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Tiếp tục" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Tiến trình con đã giết hoặc dừng" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Bị dừng (tty nhập)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Bị dừng (tty xuất)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O sẵn sàng" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "Giá»›i hạn CPU" + +#: siglist.c:154 +msgid "File limit" +msgstr "Giá»›i hạn tập tin" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Báo động (ảo)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Báo động (hồ sÆ¡)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Cá»­a sổ bị thay đổi" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Khóa bản ghi" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Tín hiệu ngưá»i dùng 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Tín hiệu ngưá»i dùng 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "Dữ liệu nhập HFT bị hoãn" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "sắp bị mất Ä‘iện đột ngá»™t" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "hệ thống sắp sụp đổ" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "chuyển tiến trình sang CPU khác" + +#: siglist.c:198 +msgid "programming error" +msgstr "lá»—i lập trình" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "Có chế độ màn hình HFT" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "Không có chế độ màn hình HFT" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "Äã hoàn thành chuá»—i âm thanh HFT" + +#: siglist.c:214 +msgid "Information request" +msgstr "yêu cầu thông tin" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Tín hiệu lạ #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "sai chỉ số phụ: không có đóng “%s†trong %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: không thể gán danh sách cho bá»™ phận cá»§a mảng" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "không thể tạo ống dẫn để thay thế tiến trình" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "không thể tạo tiến trình con để thay thế tiến trình" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "không thể mở ống dẫn đặt tên %s để Ä‘á»c" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "không thể mở ống dẫn có tên %s để ghi" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "không thể nhân đôi ống dẫn đặt tên %s thành fd %d" + +#: subst.c:6213 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "sai thay thế: không có \"“\" đóng trong %s" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "không thể tạo ống dẫn để thay thế lệnh" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "không thể tạo tiến trình con để thay thế lệnh" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: không thể nhân đôi ống dẫn thành fd 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: tên biến không hợp lệ cho má»™t tham chiếu tên" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: triển khai gián tiếp không hợp lệ" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "“%sâ€: tên biến không hợp lệ" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: tham số null hoặc chưa được đặt" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: tham số null hoặc chưa được đặt" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: biểu thức chuá»—i con < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: thay thế sai" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: không thể gán bằng cách này" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"phiên bản hệ vá» má»›i sẽ ép buá»™c ước lượng dưới dạng má»™t hàm thay thế số há»c" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "sai thay thế: không có \"“\" đóng trong %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "không khá»›p: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "cần đối số" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: cần biểu thức số nguyên" + +#: test.c:265 +msgid "`)' expected" +msgstr "cần “)â€" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "cần “)†nhưng lại nhận được %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: cần toán tá»­ hai ngôi" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: cần toán tá»­ má»™t ngôi" + +#: test.c:881 +msgid "missing `]'" +msgstr "thiếu “]â€" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "lá»—i cú pháp: gặp dấu chấm phẩy “;†bất thưá»ng" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "số thứ tá»± tín hiệu không hợp lệ" + +#: trap.c:325 +#, fuzzy, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "eval: vượt quá mức độ eval lồng nhau tối Ä‘a (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: giá trị sai trong danh sách trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: bá»™ xá»­ lý tín hiệu là SIG_DFL, Ä‘ang gá»­i lại %d (%s) cho " +"chính mình" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: tín hiệu sai %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "gặp lá»—i khi nhập vào định nghÄ©a hàm cho “%sâ€" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "cấp hệ vá» (%d) quá cao nên đặt lại thành 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: không có ngữ cảnh hàm ở phạm vi hiện thá»i" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: không thể gán giá trị cho biến" + +#: variables.c:3475 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: tên biến không hợp lệ cho má»™t tham chiếu tên" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: không có ngữ cảnh hàm ở phạm vi hiện thá»i" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s có exportstr null" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "sai ký tá»± %d trong exportstr cho %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "không có “=†trong exportstr cho %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context: đầu cá»§a shell_variables (các biến hệ vá») không phải là ngữ " +"cảnh hàm" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "" +"pop_var_context: không có ngữ cảnh global_variables (các biến toàn cục)" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: đầu cá»§a shell_variables (các biến hệ vá») không phải là phạm vi " +"môi trưá»ng tạm thá»i" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: không thể mở như là TẬP-TIN" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: sai đặt giá trị cho bá»™ mô tả tập tin vết" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: giá trị so sánh nằm ngoài phạm vi" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Tác quyá»n (C) năm 2014 cá»§a Tổ chức Quỹ Phần má»m Tá»± do, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Giấy phép GPLv3+: GNU GPL phiên bản 3 hoặc má»›i hÆ¡n \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, phiên bản %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Äây là phần má»m tá»± do; bạn có quyá»n sá»­a đổi và phát hành lại nó." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Ở đây KHÔNG BẢO HÀNH GÃŒ CẢ, vá»›i Ä‘iá»u kiện được pháp luật cho phép." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: không thể cấp phát %lu byte (%lu byte được cấp phát)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: không thể cấp phát %lu byte" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: không thể cấp phát %lu byte (%lu byte được cấp phát)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: không thể cấp phát %lu byte" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [TÊN[=GIÃ-TRỊ] … ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] TÊN [TÊN …]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVSX] [-m SÆ -Äá»’-PHÃM] [-f TẬP-TIN] [-q TÊN] [-u TÊN] [-r DÃY-" +"PHÃM] [-x DÃY-PHÃM:LỆNH] [DÃY-PHÃM:HÀM-READLINE hay LỆNH-READLINE]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [SHELL-BUILTIN [Äá»I-SỠ…]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [BTHỨC]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]]] [-@]] [THƯ-MỤC]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] LỆNH [Ä.SỠ…]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [TÊN[=GIÃ-TRỊ] …]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] TÊN[=GIÃ-TRỊ] …" + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [tùy_chá»n] TÊN[=GIÃ-TRỊ] …" + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [Ä.SỠ…]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [Ä.SỠ…]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f TẬP-TIN] [TÊN …]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [Ä.SỠ…]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts CHUá»–I-TÙY-CHỌN TÊN [Ä.Sá»]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a TÊN] [LỆNH [Äá»I-SỠ…]] [CHUYỂN-HƯỚNG …]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ENAME] [-lnr] [ÄẦU] [CUá»I] hoặc fc -s [MẪU=LẶP_LẠI] [LỆNH]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [ÄTCV]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [ÄTCV …]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p ÄÆ¯á»œNG-DẪN] [-dt] [TÊN …]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [MẪU …]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d OFFSET] [n] hay history -anrw [T.TIN] hay history -ps Ä.Sá» " +"[Ä.Sá»â€¦]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [ÄTCV …] hoặc jobs -x LỆNH [Äá»I-Sá»]" + +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [ÄTCV …]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s ÄTTH | -n số_tín_hiệu | -ÄTTH] pid | ÄTCV … hoặc kill -l [ÄTTH]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let Äá»I-Sá» [Äá»I-SỠ…]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a MẢNG] [-d GIỚI-HẠN] [-i VÄ‚N-BẢN] [-n Sá»-KÃ-Tá»°] [-N Sá»-KÃ-Tá»°] " +"[-p NHẮC] [-t THỜI-HẠN] [-u fd] [TÊN …]" + +# nghÄ©a chữ +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o TÊN-TÙY-CHỌN] [--] [Äá»I-SỠ…]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [TÊN …]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [TÊN[=GIÃ-TRỊ] …] hoặc export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [TÊN[=GIÃ-TRỊ] …] hay readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source TẬP-TIN [Äá»I-SỠ…]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". TẬP-TIN [Äá»I-SỠ…]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [BTHỨC]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ Ä.SỠ… ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[Ä.Sá»] ÄTTH …]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] TÊN [TÊN …]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [GIỚI-HẠN]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [CHẾ-ÄỘ]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-n] [id …]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid …]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for TÊN [in TỪ… ;] do CÃC;CÂU;LỆNH; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( BTHỨC1; BTHỨC2; BTHỨC3 )); do CÃC;CÂU;LỆNH; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select TÊN [in CÃC TỪ … ;] do CÃC;CÂU;LỆNH; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] á»NG-DẪN" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case TỪ in [MẪU [| MẪU]…) CÃC;CÂU;LỆNH;;]… esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if LỆNH; then CÃC;CÂU;LỆNH; [ elif CÃC;CÂU;LỆNH; then CÃC;CÂU;LỆNH; ]… " +"[ else CÃC;CÂU;LỆNH; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while CÃC;CÂU;LỆNH; do CÃC;CÂU;LỆNH; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until CÃC;CÂU;LỆNH; do CÃC;CÂU;LỆNH; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [TÊN] LỆNH [CHUYỂN-HƯỚNG]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function TÊN { CÃC;CÂU;LỆNH; } or TÊN () { CÃC;CÂU;LỆNH; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ CÃC;CÂU;LỆNH ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "ÄTCV [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( BTHỨC ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ BTHỨC ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "biến — tên và nghÄ©a cá»§a má»™t số biến hệ vá»" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | tmục]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [tên-tùy-chá»n …]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v BIẾN] ÄỊNH-DẠNG [CÃC-Äá»I-Sá»]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o TÙY-CHỌN] [-A HÀNH-ÄỘNG] [-G MẪU-" +"GLOB] [-W DANH-SÃCH-TỪ] [-F HÀM] [-C LỆNH] [-X MẪU-LỌC] [-P TIỀN-Tá»] [-S " +"HẬU-Tá»] [TÊN …]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o TÙY-CHỌN] [-A HÀNH-ÄỘNG] [-G MẪU-GLOB] [-W DANH-" +"SÃCH-TỪ] [-F HÀM] [-C LỆNH] [-X MẪU-LỌC] [-P TIỀN-Tá»] [-S HẬU-Tá»] [TỪ]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o TÙY-CHỌN] [-DE] [TÊN …]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n Sá»-LƯỢNG] [-O Gá»C] [-s Sá»-LƯỢNG] [-t] [-u fd] [-C " +"GỌI-NGƯỢC] [-c LƯỢNG] [MẢNG]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n ÄẾM] [-O Gá»C] [-s Sá»-LƯỢNG] [-t] [-u FD] [-C GỌI-NGƯỢC] [-c " +"LƯỢNG] [MẢNG]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Äịnh nghÄ©a hoặc hiển thị bí danh.\n" +"\n" +" Không đưa ra đối số thì “alias†in danh sách các bí danh ở dạng dùng lại " +"được\n" +" “alias TÊN=GIÃ-TRỊ†trên đầu ra chuẩn.\n" +"\n" +" Nếu không thì má»™t bí danh được định nghÄ©a cho má»—i TÊN theo giá trị\n" +" đưa ra. Khoảng trắng ở đâu trong GIÃ-TRỊ làm kiểm tra thay thế bí\n" +" danh cho từ kế tiếp, khi phân giải bí danh.\n" +" \n" +" Tùy chá»n:\n" +" -p\tin tất cả các bí danh được định nghÄ©a theo định dạng\n" +" \tcó thể dùng lại được\n" +" \n" +" Trạng thái thoát:\n" +" alias trả lại thành công trừ khi TÊN đã cho không phải là\n" +" má»™t bí danh đã được định nghÄ©a" + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Gỡ bá» TÊN khá»i danh sách các bí danh.\n" +" \n" +" Tùy chá»n:\n" +" -a\tbá» tất cả các bí danh.\n" +" \n" +" Trả lại thành công trừ khi TÊN không phải là má»™t bí danh." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Äặt các tổ hợp phím và biến Readline.\n" +" \n" +" Gắn tổ hợp phím vá»›i má»™t chức năng hay vÄ© lệnh Readline, hoặc\n" +" đặt biến Readline. Cú pháp đối số không tùy chá»n giống như trong\n" +" ~/.inputrc, nhưng phải được chuyển qua dưới dạng đối số đơn. Ví\n" +" dụ: bind “\"\\C-x\\C-r\": re-read-init-fileâ€.\n" +" \n" +" Tùy chá»n:\n" +" -m SÆ -Äá»’-PHÃM dùng sÆ¡_đồ_phím làm sÆ¡ đồ phím khi lệnh này\n" +" chạy. Giá trị hợp lệ là emacs, emacs-standard,\n" +" emacs-meta, emacs-ctlx, vi, vi-move, vi-command\n" +" và vi-insert.\n" +" -l Liệt kê tên các hàm\n" +" -P Liệt kê tên hàm và tổ hợp phím\n" +" -p Liệt kê tên hàm và tổ hợp phím theo dạng dùng\n" +" lại làm đầu vào được\n" +" -S Liệt kê chuá»—i phím mà gá»i vÄ© lệnh và các giá-trị\n" +" cá»§a chúng\n" +" -s Liệt kê chuá»—i phím mà gá»i vÄ© lệnh và các giá-trị\n" +" cá»§a chúng theo định dạng có thể dùng làm đầu vào\n" +" -V Liệt kê các biến và giá trị cá»§a chúng\n" +" -v Liệt kê các biến và giá trị cá»§a chúng\n" +" theo định dạng có thể tái sá»­ dụng làm đầu vào.\n" +" -q TÊN-HÀM Há»i phím nào gá»i hàm này\n" +" -u TÊN-HÀM Gỡ bá» tất cả phím tắt gắn vá»›i hàm này\n" +" -r DÃY-PHÃM Gỡ bá» tổ hợp phím này\n" +" -f TẬP-TIN Äá»c tổ hợp phím từ tập tin này\n" +" -x DÃY-PHÃM:LỆNH Chạy LỆNH khi nhập DÃY-PHÃM\n" +" -X Liệt kê dãy phím vá»›i tùy-chá»n -x và các lệnh kết " +"hợp\n" +" theo dạng có thể dùng làm đầu vào.\n" +" \n" +" Trạng thái thoát:\n" +" lệnh bind trả vá» 0 trừ khi đưa ra tùy chá»n không nhận ra hay gặp lá»—i." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Thoát khá»i vòng lặp for, while hoặc until.\n" +"\n" +" Thoát khá»i vòng lặp for, while hoặc until. Nếu xác định N thì\n" +" thoát N vòng lặp.\n" +"\n" +" Trạng thái thoát:\n" +" Trạng thái thoát là 0 trừ khi N nhá» hÆ¡n 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Tiếp tục lại chạy vòng lặp for, while hoặc until.\n" +"\n" +" Tiếp tục lại chạy vòng lặp for, while hoặc until. Nếu xác định N\n" +" thì tiếp tục vòng lặp thứ N.\n" +"\n" +" Trạng thái thoát:\n" +" Trạng thái thoát là 0 trừ khi N nhá» hÆ¡n 1." + +#: builtins.c:354 +#, fuzzy +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Chạy lệnh tích hợp hệ vá».\n" +"\n" +" Chạy SHELL-BUILTIN vá»›i Äá»I-Sá» mà không thá»±c hiện tìm lệnh. Hữu ích\n" +" khi bạn muốn cài đặt lại lệnh hệ vá» tích hợp dạng hàm hệ vá», nhưng\n" +" cần chạy lệnh tích hợp trong hàm đó.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái thoát cá»§a SHELL-BUILTIN, hoặc sai nếu\n" +" SHELL-BUILTIN không phải là má»™t lệnh tích hợp hệ vá»." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Trả vá» ngữ cảnh cá»§a lệnh gá»i hàm hiện thá»i.\n" +"\n" +" Không có BTHỨC thì trả lại \"$line $filename\". Có BTHỨC thì trả\n" +" lại \"$line $subroutine $filename\"; thông tin bổ sung này có thể\n" +" được dùng để cung cấp stack trace.\n" +"\n" +" Giá trị cá»§a BTHỨC thì ngụ ý bao nhiêu lần gá»i cần lùi lại đằng\n" +" trước lệnh gá»i hiện tại; khung gá»i đầu là khung 0.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại 0 trừ khi hệ vá» Ä‘ang chạy hàm hệ vá», BTHỨC cÅ©ng hợp lệ." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Äổi thư mục làm việc cá»§a hệ vá».\n" +" \n" +" Chuyển đổi thư mục hiện thá»i sang THƯ-MỤC. Thư mục mặc định là giá\n" +" trị cá»§a biến HOME.\n" +" \n" +" Biến CDPATH định nghÄ©a đưá»ng dẫn tìm kiếm cho thư mục chứa\n" +" THƯ-MỤC. Tên thư mục thay thế trong CDPATH được phân cách bằng dấu hai " +"chấm\n" +" (:). Tên thư mục trống tương đương vá»›i thư mục hiện tại. Nếu\n" +" THƯ-MỤC bắt đầu vá»›i dấu gạch chéo (/) thì không dùng CDPATH.\n" +" \n" +" Nếu không tìm thấy thư mục, và biến “cdable_vars†được đặt,\n" +" thì lệnh sẽ coi là má»™t tên biến. Nếu biến đó có giá trị,\n" +" thì giá trị này được dùng cho THƯ-MỤC.\n" +" \n" +" Tùy chá»n:\n" +" -L buá»™c theo liên kết má»m: phân giải liên kết má»m\n" +" \tTH.MỤC sau khi xá»­ lý “..â€\n" +" -P dùng cấu trúc thư mục vật lý mà không theo liên kết má»m:\n" +" \tphân giải liên kết má»m TH.MỤC sau khi xá»­ lý “..â€\n" +" -e nếu có tùy chá»n -P và không thể xác định thư mục làm việc\n" +" \thiện tại thì thoát vá»›i trạng thái khác không\n" +" -@ trên các hệ thống mà há»— trợ nó, hiện diện má»™t tập tin vá»›i các\n" +" thuá»™c tính mở rá»™ng như là má»™t thư mục chứa các thuá»™c tính tập " +"tin\n" +" \n" +" Mặc định là theo liên kết má»m, như có mặt tùy chá»n “-Lâ€.\n" +" “..†được xá»­ lý bằng cách gỡ bá» phần trước cá»§a đưá»ng dẫn\n" +" cho đến dấu gạch chéo hay Ä‘iểm bắt đầu cá»§a TH.MỤC.\n" +" \n" +" Trạng thái thoát:\n" +" Trả vá» 0 nếu thay đổi thư mục, và nếu $PWD được đặt thành công khi\n" +" -P được sá»­ dụng; không thì khác không." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"In tên thư mục hiện tại.\n" +" \n" +" Tùy chá»n:\n" +" -L in giá trị cá»§a $PWD nếu nó chứa tên cá»§a thư mục hiện tại\n" +" -P in thư mục vật lý, không liên kết má»m\n" +" \n" +" Mặc định “pwd†chạy như có mặt “-Lâ€.\n" +" \n" +" Trạng thái thoát:\n" +" Trả vá» 0 trừ khi đưa ra tùy chá»n sai hoặc không Ä‘á»c được thư mục hiện " +"tại." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Câu lệnh vô giá trị.\n" +" \n" +" Không có tác dụng gì: câu lệnh không làm gì cả.\n" +" \n" +" Trạng thái thoát:\n" +" Lúc nào cÅ©ng thành công." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Trả lại kết quả thành công.\n" +" \n" +" Trạng thái thoát:\n" +" Lúc nào cÅ©ng thành công." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Trả vá» kết quả không thành công.\n" +" \n" +" Trạng thái thoát:\n" +" Lúc nào cÅ©ng không thành công." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Thá»±c thi má»™t lệnh đơn giản, hoặc hiển thị thông tin vá» lệnh.\n" +" \n" +" Chạy LỆNH vá»›i các Äá»I-Sá» mà không thá»±c hiện tra cứu hàm hệ vá»,\n" +" hoặc hiển thị thông tin vá» LỆNH. Có thể được dùng để gá»i lệnh trên\n" +" đĩa khi đã có hàm cùng tên.\n" +" \n" +" Tùy chá»n:\n" +" -p dùng giá trị mặc định cho ÄÆ¯á»œNG_DẪN\n" +" mà chắc chắn sẽ tìm má»i tiện ích chuẩn\n" +" -v in mô tả vá» LỆNH mà tương tá»± như lệnh tích hợp “typeâ€\n" +" -V in mô tả chi tiết hÆ¡n cá»§a má»—i LỆNH\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại trạng thái thoát cá»§a LỆNH, hoặc thất bại nếu không tìm\n" +" thấy LỆNH." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Äặt giá trị và thuá»™c tính biến.\n" +" \n" +" Khai báo biến và gán cho thuá»™c tính cho nó. Nếu không đưa TÊN thì\n" +" hiển thị thuá»™c tính và giá trị cá»§a má»i biến.\n" +" \n" +" Tùy chá»n:\n" +" -f\thạn chế hành động hoặc hiển thị tên hàm và định nghÄ©a\n" +" -F\thạn chế hiển thị chỉ tên hàm mà thôi\n" +" \t(và số thứ tá»± dòng và tập tin nguồn khi gỡ lá»—i)\n" +" -g\ttạo biến toàn cục khi sá»­ dụng trong hàm hệ vá»; nếu không\n" +" \tthì bị bá» qua\n" +" -p\thiển thị thuá»™c tính và giá trị cá»§a má»—i TÊN\n" +" \n" +" Tùy chá»n dùng để đặt thuá»™c tính:\n" +" -a\ttạo mảng chỉ số tên TÊN (nếu há»— trợ)\n" +" -A\ttạo mảng kết hợp tên TÊN (nếu há»— trợ)\n" +" -i\tđặt thuá»™c tính “integer†(số nguyên) cho TÊN\n" +" -l\tchuyển đổi TÊN sang chữ thưá»ng khi gán\n" +" -n\tlàm má»™t TÊN tham chiếu đến biến có tên là giá trị cá»§a nó\n" +" -r\tlàm cho TÊN chỉ Ä‘á»c\n" +" -t\tđặt thuá»™c tính “trace†cho TÊN\n" +" -u\tchuyển đổi TÊN sang chữ hoa khi gán\n" +" -x\txuất khẩu TÊN\n" +" \n" +" Dùng “+†thay cho “-†để tắt thuá»™c tính đưa ra.\n" +" \n" +" Biến có thuá»™c tính số nguyên thì định giá theo số há»c (xem lệnh\n" +" “let†khi biến được gán.\n" +" \n" +" Khi dùng trong hàm, “declare†đặt TÊN là cục bá»™, như khi dùng lệnh\n" +" “local†(cục bá»™). Tùy chá»n -g ngăn hành vi này.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công trừ khi đưa ra tùy chá»n sai hoặc gặp lá»—i khi gán biến." + +#: builtins.c:532 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Äặt giá trị và thuá»™c tính cá»§a biến.\n" +"\n" +" Lệnh này đã lạc hậu. Xem “help declareâ€." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Äịnh nghÄ©a biến cục bá»™.\n" +" \n" +" Tạo biến cục bá»™ tên TÊN và gán GIÃ-TRỊ cho nó. TÙY_CHỌN có thể là\n" +" bất cứ tùy chá»n nào “declare†chấp nhận.\n" +" \n" +" Biến cục bá»™ chỉ dùng được bên trong hàm, chỉ truy cập được từ hàm\n" +" mà biến được định nghÄ©a và các hàm con.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công trừ khi đưa ra tùy chá»n sai hay gặp lá»—i,\n" +" hoặc nếu hệ vá» không chạy hàm." + +#: builtins.c:557 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Ghi đối số vào đầu ra tiêu chuẩn.\n" +" \n" +" Hiển thị các Äá»I-Sá», ngăn cách bằng dấu cách đơn và kèm ký tá»± dòng má»›i\n" +" ra đầu ra tiêu chuẩn .\n" +" \n" +" Tùy chá»n:\n" +" -n\tđừng thêm ký tá»± dòng má»›i\n" +" -e\tbật diá»…n dịch ký tá»± thoát theo sau ký tá»± “\\â€\n" +" -E\tchặn diá»…n dịch ký tá»± thoát\n" +" \n" +" “echo†hiểu những ký tá»± thoát sau:\n" +" \\a\ttiếng chuông\n" +" \\b\txóa lùi\n" +" \\c\tchặn kết xuất tiếp\n" +" \\e\tký tá»± thoát\n" +" \\E\tký tá»± thoát\n" +" \\f\ttải giấy\n" +" \\n\tdòng má»›i\n" +" \\r\txuống dòng\n" +" \\t\ttab đứng\n" +" \\v\ttab ngang\n" +" \\\\\tgạch ngược\n" +" \\0nnn\tký tá»± có mã ASCII NNN (1-3 chữ số bát phân)\n" +" \\xHH\tký tá»± 8-bit có giá trị HH (1-2 chữ số thập lục phân)\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không gặp lá»—i khi ghi." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Ghi đối số vào đầu ra chuẩn.\n" +"\n" +" Hiển thị Äá»I-Sá» trên đầu ra chuẩn, kèm ký tá»± xuống hàng ở cuối.\n" +"\n" +" Tùy chá»n:\n" +" -n\tđừng thêm ký tá»± xuống hàng\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không gặp lá»—i ghi." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Bật và tắt lệnh hệ vá» tích hợp.\n" +"\n" +" Bật và tắt các lệnh hệ vá» tích hợp. Chức năng tắt cho phép bạn\n" +" chạy má»™t lệnh trên đĩa cùng tên vá»›i má»™t lệnh hệ vá» tích hợp mà\n" +" không cần dùng tên đưá»ng dẫn đầy đủ.\n" +"\n" +" Tùy chá»n:\n" +" -a in danh sách các lệnh tích hợp kèm trạng thái bật/tắt\n" +" -n tắt TÊN hoặc hiển thị danh sách lệnh bị tắt\n" +" -p in danh sách lệnh tích hợp theo định dạng dùng lại được\n" +" -s chỉ in tên các lệnh tích hợp Posix “đặc biệtâ€\n" +"\n" +" Tùy chá»n Ä‘iá»u khiển chức năng tải động:\n" +" -f nạp lệnh tích hợp TÊN từ TẬP-TIN\n" +" -d bá» má»™t tích hợp được nạp bằng “-fâ€\n" +"\n" +" Không có tùy chá»n thì coi như bật TÊN.\n" +"\n" +" Äể sá»­ dụng lệnh “test†trên đĩa (nếu tìm thấy trong $PATH) thay\n" +" cho phiên bản hệ vá» tích hợp, gõ “enable -n testâ€.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công trừ khi TÊN không phải lệnh tích hợp hoặc gặp lá»—i." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Dùng các đối số để chạy lệnh hệ vá».\n" +"\n" +" Gá»™p các Äá»I-Sá» thành má»™t chuá»—i đơn, dùng kết quả làm đầu vào cho\n" +" hệ vá» và chạy lệnh đó.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái thoát cá»§a câu lệnh hay thành công nếu lệnh rá»—ng." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Phân tích đối số tùy chá»n.\n" +"\n" +" Getopts được hệ vá» dùng để phân tích tham số thành tùy chá»n.\n" +"\n" +" CHUá»–I-TÙY-CHỌN chứa những chữ tùy chá»n cần nhận ra; má»™t chữ có dấu hai\n" +" chấm theo sau thì tùy chá»n cần đối số, cách tùy chá»n bằng khoảng\n" +" trắng.\n" +"\n" +" Má»—i lần gá»i, getopts sẽ đặt tùy chá»n kế tiếp vào biến hệ vá» $TÊN,\n" +" tạo biến má»›i nếu tên đó chưa tồn tại, và đặt chỉ số cá»§a đối số kế\n" +" tiếp cần xá»­ lý vào biến hệ vá» OPTIND. OPTIND được khởi động bằng 1\n" +" má»—i lần hệ vá» hay má»™t văn lệnh hệ vỠđược gá»i. Khi tùy chá»n cần\n" +" đối số, getopts đặt đối số đó vào biến hệ vá» OPTARG.\n" +"\n" +" getopts thông báo lá»—i bằng má»™t trong hai cách. Nếu ký tá»± đầu tiên\n" +" cá»§a CHUá»–I-TÙY-CHỌN là dấu hai chấm, getopts thông báo lá»—i im\n" +" lặng. Chế độ này không in ra thông báo nào. Nếu gặp tùy chá»n sai\n" +" thì getopts lưu mã ký tá»± tùy chá»n trong biến OPTARG. Không tìm\n" +" thấy đối số cần thiết thì getopts lưu dấu hai chấm trong biến $TÊN\n" +" và đặt lưu mã ký tá»± tùy chá»n trong OPTARG. Nếu getopts không trong\n" +" chế độ im lặng và gặp tùy chá»n sai, getopts lưu dấu há»i “?†vào\n" +" biến $TÊN và xóa OPTARG. Không tìm thấy tùy chá»n cần thiết thì “?â€\n" +" được lưu vào $TÊN, OPTARG bị xlá, và in ra má»™t thông Ä‘iệp chẩn\n" +" Ä‘oán.\n" +"\n" +" Nếu biến hệ vá» OPTERR có giá trị 0, getopts sẽ không in thông báo\n" +" kể cả khi ký tá»± đầu tiên cá»§a CHUá»–I-TÙY-CHỌN không phải dấu hai\n" +" chấm. OPTERR có giá trị mặc định là 1.\n" +"\n" +" Getopts bình thưá»ng phân tích tham số vị trí ($0 - $9). Tuy nhiên,\n" +" các đối số bổ sung cÅ©ng được phân tích.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu tìm thấy má»™t tùy chá»n; không thành công nếu\n" +" gặp kết thúc các tùy chá»n, hoặc nếu gặp lá»—i." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Thay thế hệ vá» bằng câu lệnh đưa ra.\n" +" \n" +" Thá»±c thi LỆNH, thay thế hệ vá» này bằng chương trình được chạy.\n" +" Äá»I-Sá» trở thành đối số cá»§a LỆNH. Không định nghÄ©a LỆNH thì bất cứ " +"chuyển\n" +" hướng nào sẽ xảy ra trong hệ vá» Ä‘ang chạy.\n" +" \n" +" Tùy chá»n:\n" +" -a TÊN\ttruyá»n TÊN cho LỆNH dạng đối số thứ không\n" +" -c\tthá»±c thi LỆNH vá»›i má»™t môi trưá»ng rá»—ng\n" +" -l\tđặt má»™t dấu gạch vào đối số thứ không cá»§a LỆNH\n" +" \n" +" Nếu LỆNH không thể thá»±c thi, hệ vá» không tương tác sẽ thoát, trừ\n" +" khi đặt tùy chá»n hệ vỠ“execfailâ€.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công trừ khi không tìm được LỆNH hoặc gặp lá»—i chuyển hướng." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Thoát hệ vá».\n" +"\n" +" Thoát khá»i hệ vá» vá»›i trạng thái N. Không xác định N thì trạng thái\n" +" thoát là trạng thái cá»§a lệnh cuối cùng được chạy." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Thoát hệ vỠđăng nhập.\n" +"\n" +" Thoát khá»i hệ vỠđăng nhập vá»›i trạng thái N. Trả vá» lá»—i nếu không\n" +" phải hệ vỠđăng nhập." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Hiển thị hoặc thá»±c thi lệnh từ lịch sá»­.\n" +"\n" +" fc được dùng để liệt kê, chỉnh sá»­a và thá»±c thi lại lệnh từ danh\n" +" sách lịch sá»­. ÄẦU và CUá»I có thể là số xác định phạm vi, hoặc ÄẦU\n" +" có thể là chuá»—i chứa phần đầu lệnh chạy gần đây nhất.\n" +"\n" +" Tùy chá»n:\n" +" -e ENAME\tchá»n trình soạn thảo nào cần dùng.\n" +" \tMặc định là FCEDIT, sau đó là EDITOR, rồi đến vi\n" +" -l\tliệt kê thay vì chỉnh sá»­a\n" +" -n\tliệt kê không in số thứ tá»± dòng\n" +" -r\tđảo ngược thứ tá»± các dòng (má»›i nhất trước)\n" +"\n" +" Äịnh dạng “fc -s [mẫu=lần_lập_lại …] [lệnh]†được dùng để chạy\n" +" lại lệnh sau khi thay thế CŨ=MỚI.\n" +"\n" +" Má»™t bí danh hữu ích là r=\".c -s\" để có thể gõ “r cc†để chạy lệnh\n" +" cuối cùng bắt đầu bằng “cc†và gõ “r†để chạy lại lệnh cuối.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công hay trạng thái cá»§a câu lệnh được thá»±c thi; gặp\n" +" lá»—i thì khác số không." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Nâng công việc ná»n lên trước.\n" +"\n" +" Nâng lên trước công việc được định nghÄ©a bởi đặc tả công việc ÄTCV\n" +" làm công việc hiện thá»i. Không có ÄTCV thì dùng công việc hiện\n" +" thá»i cá»§a hệ vá».\n" +"\n" +" Trạng thái thoát:\n" +" Trạng thái cá»§a câu lệnh được nâng lên trước; hoặc thất bại nếu xảy\n" +" ra lá»—i." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Chuyển công việc xuống chạy ná»n.\n" +"\n" +" Chuyển công việc định nghÄ©a theo đặc tả công việc ÄTCV sang chạy\n" +" ná»n, như thể lệnh được chạy vá»›i “&â€. Nếu không có ÄTCV, dùng công\n" +" việc hiện thá»i cá»§a hệ vá».\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu chức năng Ä‘iá»u khiển công việc được bật và\n" +" không gặp lá»—i." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Nhá»› hoặc hiển thị vị trí chương trình.\n" +" \n" +" Xác định và ghi nhá»› tên đưá»ng dẫn đầy đủ cá»§a má»—i TÊN câu lệnh.\n" +" Nếu không đưa ra đối số, hiển thị thông tin vá» các câu lệnh được\n" +" ghi nhá»›.\n" +" \n" +" Tùy chá»n:\n" +" -d\tquên vị trí đã nhá»› cá»§a TÊN\n" +" -l\thiển thị theo định dạng dùng lại làm đầu vào được\n" +" -p\tTÊN_ÄÆ¯á»œNG_DẪN\tdùng TÊN_ÄÆ¯á»œNG_DẪN là tên đưá»ng dẫn đầy đủ cá»§a TÊN\n" +" -r\tquên má»i vị trí đã nhá»›\n" +" -t\tin vị trí đã nhá»› cá»§a TÊN, in tên trước vị\n" +" \t\ttrí nếu TÊN tương ứng vá»›i nhiá»u vị trí\n" +" \n" +" Äối số:\n" +" TÊN\tmá»—i TÊN được tìm trong $PATH và được thêm vào\n" +" \t\tdanh sách các câu lệnh được ghi nhá»›.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu tìm được TÊN và không đưa ra tùy chá»n sai." + +#: builtins.c:818 +#, fuzzy +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Hiển thị thông tin vá» lệnh tích hợp.\n" +" \n" +" Hiển thị bản tóm tắt ngắn vá» các câu lệnh tích hợp. Nếu chỉ định\n" +" MẪU thì in ra trợ giúp chi tiết vá» tất cả các câu lệnh tương\n" +" ứng vá»›i mẫu đó; không thì in ra danh sách các chá»§ đỠtrợ giúp.\n" +" \n" +" Tùy chá»n:\n" +" -d\txuất mô tả ngắn vá» má»—i chá»§ Ä‘á»\n" +" -m\thiện cách dùng theo định dạng trang hướng dẫn (man)\n" +" -s\txuất chỉ má»™t bản tóm tắt cách dùng cho má»—i\n" +" \t\tchá»§ đỠtương ứng vá»›i MẪU\n" +" \n" +" Äối số:\n" +" MẪU\tmẫu xác định má»™t chá»§ đỠtrợ giúp\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu tìm được MẪU và không đưa ra tùy chá»n sai." + +#: builtins.c:842 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Hiển thị hoặc thao tác danh sách lịch sá»­.\n" +" \n" +" Hiển thị danh sách lịch sá»­ kèm số dòng, “*†ở đầu dòng cho các mục\n" +" nhập bị sá»­a đổi. Äối số N thì liệt kê chỉ N mục tin cuối cùng.\n" +" \n" +" Tùy chá»n:\n" +" -c\txóa sạch danh sách lịch sá»­ bằng cách xóa má»i mục tin\n" +" -d offset\txóa mục tin lịch sá»­ ở vị trí tương đối này\n" +" \n" +" -a\tnối Ä‘uôi lịch sá»­ từ phiên làm việc này vào tập tin\n" +" \tlịch sá»­.\n" +" -n\tÄ‘á»c má»i dòng lịch sá»­ chưa Ä‘á»c từ tập tin lịch sá»­\n" +" -r\tÄ‘á»c tập tin lịch sá»­ và nối thêm vào danh sách lịch sá»­\n" +" -w\tghi lịch sá»­ hiện thá»i vào tập tin lịch sá»­,\n" +" \tvào nối Ä‘uôi vào danh sách lịch sá»­\n" +" \n" +" -p\tkhai triển lịch sá»­ vá»›i má»—i Äá»I-Sá» và hiển thị kết quả\n" +" \tmà không lưu vào danh sách lịch sá»­\n" +" -s\tnối Ä‘uôi Äá»I-Sá» vào danh sách lịch sá»­ làm má»™t mục đơn\n" +" \n" +" Nếu có TẬP-TIN thì nó được dùng làm tập tin lịch sá»­. Ngược\n" +" lại, nếu $HISTFILE có giá trị thì dùng; nếu $HISTFILE không có giá\n" +" trị thì dùng “~/.bash_historyâ€.\n" +" \n" +" Nếu biến $HISTTIMEFORMAT đã được đặt và khác rá»—ng, giá trị đó được\n" +" dùng làm chuá»—i định dạng cho strftime(3) để in nhãn thá»i gian\n" +" tương ứng vá»›i má»—i mục tin lịch sá»­ được hiển thị. Ngược lại không\n" +" in nhãn thá»i gian.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không gặp tùy chá»n sai hay gặp lá»—i." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Hiển thị trạng thái cá»§a công việc.\n" +" \n" +" Liệt kê các công việc Ä‘ang chạy. Äặc tả công việc ÄTCV hạn chế chỉ\n" +" hiện công việc đó thôi. Không có tùy chá»n thì hiển thị trạng thái\n" +" cá»§a má»i công việc Ä‘ang chạy.\n" +" \n" +" Tùy chá»n:\n" +" -l\tliệt kê mã số tiến trình ngoài thông tin bình thưá»ng\n" +" -n\tliệt kê chỉ những tiến trình đã thay đổi trạng thái\n" +" \tkể từ lần thông báo cuối cùng\n" +" -s\tchỉ hiện những công việc Ä‘ang dừng chạy\n" +" \n" +" Nếu có “-x†thì chạy LỆNH sau khi thay thế tất cả đặc tả công việc\n" +" trên đối số bằng mã tiến trình cá»§a trình dẫn đầu nhóm tiến trình\n" +" cá»§a công việc đó.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không gặp tùy chá»n sai hay gặp lá»—i.\n" +" ÄÆ°a ra “-x†thì trả lại trạng thái thoát cá»§a LỆNH." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Bá» công việc khá»i hệ vá» Ä‘ang chạy.\n" +" \n" +" Gỡ bá» công việc xác định bởi đặc tả công việc ÄTCV ra khá»i bảng các\n" +" công việc hoạt động. Không có ÄTCV thì dùng công việc hiện thá»i cá»§a hệ " +"vá».\n" +" \n" +" Tùy chá»n:\n" +" -a\tbá» má»i công việc nếu không có ÄTCV\n" +" -h\tđánh dấu ÄTCV để không gá»­i tín hiệu SIGHUP\n" +" \tcho công việc khi hệ vá» nhận được SIGHUP\n" +" -r\tchỉ bá» những công việc Ä‘ang chạy\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không đưa ra tùy chá»n hay ÄTCV sai." + +#: builtins.c:925 +#, fuzzy +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Gá»­i tín hiệu cho công việc.\n" +" \n" +" Gá»­i tín hiệu xác định bởi SIGSPEC hoặc SIGNUM cho những tiến trình\n" +" xác định bởi PID hoặc JOBSPEC. Nếu SIGSPEC và SIGNUM không hiện diện\n" +" thì ngầm định SIGTERM.\n" +" \n" +" Tùy chá»n:\n" +" -s TTH\tTTH là tên tín hiệu\n" +" -n STH\tSTH là mã số tín hiệu\n" +" -l\tliệt kê tên tín hiệu; đối số sau “-l†nếu có được coi\n" +" \tlà mã số tín hiệu cần hiện tên\n" +" \n" +" Kill là lệnh hệ vá» tích hợp vì hai lý do: nó cho phép dùng mã số\n" +" công việc thay cho mã số tiến trình và cho phép giết tiến trình\n" +" đạt giá»›i hạn số các tiến trình được phép tạo.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không đưa ra tùy chá»n sai hay gặp lá»—i." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Äịnh giá biểu thức số há»c.\n" +"\n" +" Äịnh giá má»—i Äá»I-Sá» dạng biểu thức số há»c. Äịnh giá theo số nguyên\n" +" có giá»›i hạn, không kiểm tra tràn số, mặc dù có bẫy chia cho không\n" +" và bật cá» lá»—i. Danh sách toán tá»­ bên dưới được nhóm theo nhóm độ\n" +" ưu tiên ngang hàng. Danh sách theo độ ưu tiên giảm dần.\n" +"\n" +" \tid++, id--\ttiá»n tiá»n/giảm\n" +" \t++id, --id\thậu gia/giảm\n" +" \t-, +\t\ttrừ, cá»™ng (dấu)\n" +" \t!, ~\t\tphá»§ định lôgíc và trên bit\n" +" \t**\t\tsố mÅ©\n" +" \t*, /, %\t\tnhân, chia, số dư\n" +" \t+, -\t\tcá»™ng, trừ\n" +" \t<<, >>\t\tdịch bit trái/phải\n" +" \t<=, >=, <, >\tso sánh\n" +" \t==, !=\t\tbằng, không bằng\n" +" \t&\t\tphép AND trên bit\n" +" \t^\t\tphép XOR trên bit\n" +" \t|\t\tphép OR trên bit\n" +" \t&&\t\tphép AND lôgíc\n" +" \t||\t\tphép OR lôgíc\n" +" \tBTHỨC ? BTHỨC : BTHỨC\n" +" \t\t\ttoán từ Ä‘iá»u kiện\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tphép gán\n" +"\n" +" Biến hệ vá» có thể dùng làm toán hạng. Tên biến được thay thế bằng\n" +" giá trị biến (chuyển thành số nguyên) trong biểu thức. Biến không\n" +" cần có thuá»™c tính số nguyên để dùng làm biểu thức.\n" +"\n" +" Các toán tá»­ được định giá theo thứ tá»± ưu tiên. Các biểu thức con\n" +" nằm trong dấu ngoặc được định giá trước tiên, và có quyá»n cao hÆ¡n\n" +" các quy tắc Ä‘i trước bên trên.\n" +"\n" +" Trạng thái thoát:\n" +" Nếu Äá»I-Sá» cuối cùng được định giá thành 0 thì trả vá» 1; không thì\n" +" trả vá» 0." + +#: builtins.c:994 +#, fuzzy +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Äá»c má»™t dòng từ đầu vào tiêu chuẩn và tách ra nhiá»u trưá»ng.\n" +" \n" +" Äá»c má»™t dòng từ đầu vào tiêu chuẩn, hoặc từ bá»™ mô tả tập tin FD nếu\n" +" dùng tùy chá»n “-uâ€. Dòng được chia ra nhiá»u trưá»ng, trưá»ng đầu\n" +" tiên được gán cho biến TÊN đầu tiên, từ thứ hai cho TÊN thứ hai,\n" +" và cứ như vậy, và từ còn lại nào được gán cho TÊN cuối cùng. Chỉ những " +"ký\n" +" tá»± trong $IFS được coi là ký tá»± phân cách.\n" +" \n" +" Không có TÊN thì dòng được Ä‘á»c sẽ lưu vào biến REPLY.\n" +" \n" +" Tùy chá»n:\n" +" -a MẢNG\tlưu các trưá»ng vào biến mảng chỉ số MẢNG theo thứ tá»±,\n" +" \tbắt đầu từ không.\n" +" -d NGÄ‚N_CÃCH\ttiếp tục đến khi Ä‘á»c ký tá»± đầu tiên cá»§a DELIM thay\n" +" \t\tcho ký tá»± xuống dòng\n" +" -e \tdùng Readline để lấy dòng trong hệ vá» tương tác\n" +" -i CHUá»–I\tdùng CHUá»–I làm văn bản đầu tiên cho Readline\n" +" -n nChữ\ttrả vá» sau khi Ä‘á»c đủ số lượng ký tá»± này thay vì Ä‘á»c hết " +"dòng\n" +" \t\tnhưng nếu gặp chuá»—i phân tách khi ít hÆ¡n Nchữ\n" +" \t\tcác ký tá»± được Ä‘á»c trước chuá»—i phân tách\n" +" -N N\ttrả vá» chỉ sau khi Ä‘á»c chính xác số lượng ký tá»± này,\n" +" \tnếu không gặp kết thúc tập tin (EOF) hay quá hạn Ä‘á»c,\n" +" \tcÅ©ng bá» qua dấu tách nào\n" +" -p NHẮC\txuất chuá»—i NHẮC mà không có ký tá»± dòng má»›i theo sau,\n" +" \ttrước khi Ä‘á»c\n" +" -r\tkhông cho phép gạch chéo ngược để thoát ký tá»±\n" +" -s\tkhông hiện lại dữ liệu nhập đến từ thiết bị cuối\n" +" -t\tTHỜI_GIAN_CHỜ\n" +" \tthá»i gian chá» tối Ä‘a và trả vá»i không thành công nếu chưa Ä‘á»c má»™t\n" +" \tdòng dữ liệu nhập hoàn toàn trong số giây này. Giá trị\n" +" \tcá»§a biến TMOUT là thá»i hạn mặc định. Thá»i hạn này có\n" +" \tthể là má»™t phân số. Nếu THỜI_HẠN là 0 thì việc Ä‘á»c trả\n" +" \tlại thành công chỉ nếu dữ liệu nhập sẵn sàng trên bá»™\n" +" \tmô tả tập tin đưa ra. Trạng thái thoát lá»›n hÆ¡n 128\n" +" \tnếu vượt quá thá»i hạn này.\n" +" -u FD\tÄ‘á»c từ bá»™ mô tả tập tin FD thay cho đầu vào tiêu chuẩn\n" +" \n" +" Trạng thái thoát:\n" +" Mã trả lại là số không, nếu không gặp kết thúc tập tin, hay chá» quá\n" +" lâu, hoặc đưa ra bá»™ mô tả tập tin sai làm đối số cho “-uâ€." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Trở vá» từ hàm hệ vá».\n" +"\n" +" Thoát hàm hệ vá» hoặc văn lệnh được “source†vá»›i mã trả vá» xác định\n" +" bởi N. Nếu không có N, trạng thái thoát là cá»§a lệnh thá»±c hiện cuối\n" +" cùng trong hàm/văn lệnh.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại N, hoặc bị lá»—i nếu hệ vá» không Ä‘ang chạy má»™t hàm hay văn\n" +" lệnh." + +#: builtins.c:1054 +#, fuzzy +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Äặt hay há»§y giá trị cá»§a tùy chá»n hệ vá» và tham số vị trí.\n" +" \n" +" Sá»­a đổi giá trị cá»§a thuá»™c tính hệ vá» và tham số vị trí,\n" +" hoặc hiển thị tên và giá trị cá»§a biến hệ vá».\n" +" \n" +" Tùy chá»n:\n" +" -a Äánh dấu các biến được tạo hay sá»­a đổi để xuất ra\n" +" -b Thông báo ngay vá» công việc bị chấm dứt\n" +" -e Thoát ngay nếu câu lệnh thoát vá»›i trạng thái khác số không\n" +" -f Tắt chức năng tạo tên tập tin (glob)\n" +" -h Nhá»› vị trí cá»§a má»—i câu lệnh khi nó được dò tìm\n" +" -k Má»i đối số gán được đặt vào môi trưá»ng cho má»™t câu lệnh,\n" +" không phải chỉ những đối số nằm trước tên câu lệnh\n" +" -m Bật chức năng Ä‘iá»u khiển công việc\n" +" -n Äá»c câu lệnh mà không thá»±c thi\n" +" -o TÊN_TÙY_CHỌN\n" +" Äặt biến tương ứng vá»›i TÊN_TÙY_CHỌN:\n" +" allexport giống -a\n" +" braceexpand giống -B\n" +" emacs dùng giao diện soạn thảo kiểu emacs\n" +" errexit giống -e\n" +" errtrace giống -E\n" +" functrace giống -T\n" +" hashall giống -h\n" +" histexpand giống -H\n" +" history bật lịch sá»­ câu lệnh\n" +" ignoreeof hệ vá» không thoát khi Ä‘á»c EOF\n" +" interactive-comments\n" +" cho phép ghi chú trong lệnh tương tác\n" +" keyword giống -k\n" +" monitor giống -m\n" +" noclobber giống -C\n" +" noexec giống -n\n" +" noglob giống -f\n" +" nolog hiện thá»i chấp nhận nhưng bá» qua\n" +" notify giống -b\n" +" nounset giống -u\n" +" onecmd giống -t\n" +" physical giống -P\n" +" pipefail giá trị trả lại cá»§a ống dẫn là\n" +" trạng thái cá»§a câu lệnh cuối cùng\n" +" có trạng thái khác không, hoặc số\n" +" không nếu không có câu lệnh thoát\n" +" vá»›i trạng thái khác không\n" +" posix thay đổi những thao tác khác vá»›i\n" +" Posix thành tuân theo Posix\n" +" privileged giống -p\n" +" verbose giống -v\n" +" vi dùng giao diện soạn thảo kiểu vi\n" +" xrace giống -x\n" +" -p Bật khi nào mã số thật và mã số có kết quả\n" +" không tương ứng vá»›i nhau.\n" +" Tắt tính năng xá»­ lý tập tin $ENV\n" +" và nhập các hàm vào hệ vá».\n" +" Việc tắt tùy chá»n này thì gây ra uid và gid có kết quả\n" +" được đặt thành uid và gid thật.\n" +" -t Thoát sau khi Ä‘á»c và thá»±c thi má»™t câu lệnh\n" +" -u Xá»­ lý biến chưa đặt là lá»—i khi thay thế\n" +" -v In ra má»—i dòng nhập vào hệ vá» khi nó được Ä‘á»c\n" +" -x On ra má»—i câu lệnh và đối số tương ứng khi nó được thá»±c thi\n" +" -B hệ vá» sẽ mở rá»™ng các dấu ngoặc móc\n" +" -C Nếu đặt thì không cho phép ghi đè lên tập tin bình thưá»ng\n" +" đã tồn tại bằng cách chuyển hướng kết xuất\n" +" -E Nếu đặt thì bẫy ERR được chức năng hệ vá» kế thừa\n" +" -H Bật! bật chức năng thay thế kiểu. Cá» này được bật\n" +" theo mặc định khi hệ vá» tương tác\n" +" -P Äặt thì không theo liên kết má»m\n" +" khi thá»±c thi câu lệnh như cd mà chuyển đổi thư mục hiện tại\n" +" -T Nếu đặt thì bẫy DEBUG (gỡ lá»—i) được các hàm cá»§a hệ vá» kế " +"thừa\n" +" -- Gán bất cứ đối số còn lại nào cho những tham số thuá»™c vị " +"trí.\n" +" Nếu không còn thừa lại đối số nào, tham số vị trí\n" +" ìm kiếm được đặt.\n" +" - Gán bất cứ đối số còn lại nào cho những tham số thuá»™c vị " +"trí.\n" +" Hai tùy chá»n -x và -v Ä‘á»u bị tắt.\n" +" \n" +" Việc dùng + thay - làm tắt cá». Các cá» cÅ©ng có thể được dùng khi\n" +" gá»i hệ vá». Giá trị các cá» hiện hành có thể tìm thấy trong biến\n" +" $-. Các đối số còn lại là tham số thuá»™c vị trí, và được gán (theo\n" +" thứ tá»±) cho $1, $2, .. $n. Không đưa ra đối số thì in ra má»i biến\n" +" shell.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công trừ phi gặp tùy chá»n sai." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Xóa giá trị và thuá»™c tính cá»§a biến hệ vá» và các hàm.\n" +" \n" +" Äối vá»›i má»—i TÊN, gỡ bá» biến hay hàm tương ứng.\n" +" \n" +" Tùy chá»n:\n" +" -f\tcoi má»—i TÊN là hàm hệ vá»\n" +" -v\tcoi má»—i TÊN là biến hệ vá»\n" +" -n\tcoi TÊN như là tên tham chiếu và bỠđặt biến đó thay vì\n" +" biến mà nó tham chiếu đến\n" +" \n" +" Không có tùy chá»n thì sẽ thá»­ xóa biến, và nếu không thành công,\n" +" sau đó thá»­ xóa hàm.\n" +" \n" +" Má»™t số biến không thể gỡ bá»; nên xem “readonlyâ€.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không đưa ra tùy chá»n sai hay TÊN chỉ-Ä‘á»c." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Äặt thuá»™c tính xuất khẩu cho biến hệ vá».\n" +"\n" +" Äánh dấu TÊN để tá»± động xuất vào môi trưá»ng cá»§a các lệnh được chạy\n" +" sau đó. Có GIÃ-TRỊ thì gán GIÃ-TRỊ trước khi xuất ra.\n" +"\n" +" Tùy chá»n:\n" +" -f\ttham chiếu đến hàm hệ vá»\n" +" -n\tgỡ bá» thuá»™c tính xuất khẩu khá»i TÊN\n" +" -p\thiển thị danh sách các biến và hàm được xuất ra\n" +"\n" +" Äối số “--†ngừng phân tích tùy chá»n cho các tham số còn lại.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không đưa ra tùy chá»n hay TÊN sai," + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Äánh dấu biến hệ vá» là không thể thay đổi.\n" +" \n" +" Äánh dấu TÊN là chỉ Ä‘á»c; giá trị những TÊN này không được thay\n" +" đổi trong các phép gán sau. Nếu có GIÃ-TRỊ thì gán GIÃ-TRỊ trước\n" +" khi đánh dấu là chỉ Ä‘á»c.\n" +" \n" +" Tùy chá»n:\n" +" -a\ttham chiếu đến biến kiểu mảng chỉ số\n" +" -A\ttham chiếu đến biến kiểu mảng kết hợp\n" +" -f\ttham chiếu đến hàm hệ vá»\n" +" -p\thiển thị danh sách biến và hàm chỉ Ä‘á»c, tùy thuá»™c vào\n" +" \t\tcó tùy chá»n -f hay không\n" +" \n" +" Äối số “--†ngừng phân tích tùy chá»n cho các tham số còn lại.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không đưa ra tùy chá»n sai hay TÊN không hợp lệ." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Dịch vị trí đối số.\n" +"\n" +" Thay đổi tên cá»§a đối số vị trí $N+1,$N+2 … thành $1,$2 …\n" +" N là 1 nếu không chỉ định.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công trừ khi N âm hay lá»›n hÆ¡n $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Thá»±c thi lệnh từ tập tin trong hệ vá» hiện tại.\n" +"\n" +" Äá»c và thá»±c thi lệnh từ TẬP-TIN trong hệ vá» Ä‘ang chạy. $PATH được\n" +" dùng để tìm thư mục chứa tập tin này. Nếu có đối số thì má»—i đối số\n" +" trở thành tham số vị trí khi TẬP-TIN được thá»±c thi.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái cá»§a câu lệnh cuối cùng được thá»±c thi trong\n" +" TẬP-TIN; không thành công nếu không thể Ä‘á»c TẬP-TIN." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Ngưng chạy hệ vá».\n" +"\n" +" Ngưng chạy hệ vá» này đến khi nhận tín hiệu SIGCONT. Nếu không ép\n" +" buá»™c thì không thể ngưng chạy hệ vỠđăng nhập.\n" +"\n" +" Tùy chá»n:\n" +" \t-f\tbuá»™c ngưng, thậm chí vá»›i hệ vỠđăng nhập\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công trừ khi chức năng Ä‘iá»u khiển công việc không\n" +" được bật hoặc gặp lá»—i." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Äịnh giá biểu thức Ä‘iá»u kiện.\n" +" \n" +" Thoát vá»›i trạng thái 0 (đúng) hoặc 1 (sai), tùy kết quả định giá\n" +" BTHỨC. Biểu thức có thể kiểu má»™t ngôi hoặc hai ngôi. Biểu thức\n" +" má»™t ngôi thưá»ng dùng để kiểm tra trạng thái tập tin. Ngoài ra còn\n" +" có toán tá»­ chuá»—i và so sánh số.\n" +" \n" +" Hành vi cá»§a lệnh test phụ thuá»™c vào số đối số. Äá»c sổ tay hướng dẫn cá»§a\n" +" bash để có mô tả đầy đủ.\n" +" \n" +" Toán tá»­ tập tin:\n" +" \n" +" -a TẬP-TIN Äúng nếu tập tin tồn tại.\n" +" -b TẬP-TIN Äúng nếu tập tin là biệt khối.\n" +" -c TẬP-TIN Äúng nếu tập tin là đặc biệt ký tá»±.\n" +" -d TẬP-TIN Äúng nếu tập tin là thư mục.\n" +" -e TẬP-TIN Äúng nếu tập tin tồn tại.\n" +" -f TẬP-TIN Äúng nếu tập tin tồn tại và là tập tin thưá»ng\n" +" -g TẬP-TIN Äúng nếu tập tin là set-group-id.\n" +" -h TẬP-TIN Äúng nếu tập tin là liên kết má»m.\n" +" -L TẬP-TIN Äúng nếu tập tin là liên kết má»m.\n" +" -k TẬP-TIN Äúng nếu tập tin có bit “stickyâ€.\n" +" -p TẬP-TIN Äúng nếu tập tin là ống dẫn có tên.\n" +" -r TẬP-TIN Äúng nếu tập tin bạn Ä‘á»c được.\n" +" -s TẬP-TIN Äúng nếu tập tin tồn tại và không rá»—ng.\n" +" -S TẬP-TIN Äúng nếu tập tin là socket.\n" +" -t FD Äúng nếu FD được mở trên thiết bị cuối.\n" +" -u TẬP-TIN Äúng nếu tập tin là set-user-id.\n" +" -w TẬP-TIN Äúng nếu tập tin ghi được (bởi bạn).\n" +" -x TẬP-TIN Äúng nếu tập tin chạy được (bởi bạn).\n" +" -O TẬP-TIN Äúng nếu tập tin thá»±c tế được bạn sở hữu.\n" +" -G TẬP-TIN Äúng nếu tập tin thá»±c tế được nhóm cá»§a bạn sở hữu.\n" +" -N TẬP-TIN Äúng nếu tập tin đã bị sá»­a đổi từ lần Ä‘á»c cuối.\n" +" \n" +" TẬP-TIN1 -nt TẬP-TIN2\n" +" Äúng nếu tập tin 1 má»›i hÆ¡n tập tin 2 (dá»±a theo\n" +" ngày sá»­a đổi)\n" +" \n" +" TẬP-TIN1 -ot TẬP-TIN2\n" +" Äúng nếu tập tin 1 cÅ© hÆ¡n tập tin 2.\n" +" \n" +" TẬP-TIN1 -ef TẬP-TIN2\n" +" Äúng nếu tập tin 1 là liên kết cứng tá»›i tập tin 2.\n" +" \n" +" Toán tá»­ chuá»—i:\n" +" \n" +" -z CHUá»–I Äúng nếu chuá»—i rá»—ng.\n" +" \n" +" -n CHUá»–I\n" +" CHUá»–I Äúng nếu chuá»—i khác rá»—ng.\n" +" \n" +" CHUá»–I1 = CHUá»–I2 Äúng nếu hai chuá»—i bằng nhau.\n" +" CHUá»–I1 != CHUá»–I2 Äúng nếu hai chuá»—i khác nhau.\n" +" CHUá»–I1 < CHUá»–I2 Äúng nếu CHUá»–I1 xếp trước CHUá»–I2 theo thứ tá»± từ " +"Ä‘iển.\n" +" CHUá»–I1 > CHUá»–I2 Äúng nếu CHUá»–I1 xếp sau CHUá»–I2 theo thứ tá»± từ Ä‘iển.\n" +" \n" +" Toán tá»­ khác:\n" +" \n" +" -o TÙY_CHỌN Äúng nếu tùy chá»n hệ vá» này được bật.\n" +" -v BIẾN Äúng nếu BIẾN hệ vá» này được đặt\n" +" -R BIẾN Äúng nếu BIẾN hệ vá» này được đặt là tham chiếu tên.\n" +" ! BTHỨC Äúng nếu biểu thức này không đúng.\n" +" BTHỨC1 -a BTHỨC2 Äúng nếu cả hai biểu thức là đúng.\n" +" BTHỨC1 -o BTHỨC2 Äúng nếu má»™t hoặc hai biểu thức đúng.\n" +" \n" +" Äá»I-Sá»1 OP Äá»I-Sá»2\n" +" Phép thá»­ số há»c. OP (toán tá»­) là má»™t trong -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Phép toán số há»c hai ngôi trả vỠđúng nếu Äá»I-Sá»1 bằng, khác, nhá»\n" +" hÆ¡n, nhá» hÆ¡n hoặc bằng, lá»›n hÆ¡n, lá»›n hÆ¡n hoặc bằng Äá»I-Sá»2.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu BTHỨC định giá là Äúng; không thành công\n" +" nếu BTHỨC định giá thành Sai hay đối số được chỉ ra sai." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Äịnh giá biểu thức Ä‘iá»u kiện.\n" +" \n" +" Lệnh này cùng chức năng lệnh tích hợp \"test\", nhưng đối số cuối\n" +" cùng phải là ký tá»± “]†để khá»›p vá»›i “[†ở đầu." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Hiển thị thá»i lượng chạy tiến trình.\n" +"\n" +" In thá»i lượng chạy ở mức ngưá»i dùng và hệ thống cá»§a hệ vá» và các\n" +" tiến trình con.\n" +"\n" +" Trạng thái thoát:\n" +" Lúc nào cÅ©ng thành công." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Bẫy tín hiệu và sá»± kiện khác.\n" +"\n" +" Äịnh nghÄ©a và kích hoạt các bá»™ xá»­ lý khi hệ vá» nhận được tín hiệu\n" +" hay các Ä‘iá»u kiện khác.\n" +"\n" +" Äá»I-Sá» là má»™t lệnh cần Ä‘á»c và thá»±c thi khi hệ vá» nhận được tín\n" +" hiệu theo đặc tả tín hiệu ÄTTH. Nếu không có Äá»I-Sá» (và chỉ cung\n" +" cấp má»™t ÄTTH), hoặc cung cấp “-â€. má»—i tín hiệu được xác định thì\n" +" được đặt lại vá» giá trị gốc. Nếu Äá»I-Sá» là chuá»—i rá»—ng thì má»—i ÄTTH\n" +" bị hệ vá» và những lệnh bên trong bá» qua.\n" +"\n" +" Nếu ÄTTH là EXIT (0) thì Äá»I-SỠđược thá»±c thi khi thoát\n" +" khá»i hệ vá». Nếu là DEBUG, Äá»I-SỠđược thá»±c thi trước má»—i lệnh đơn\n" +" giản. Nếu là RETURN, Äá»I-SỠđược thá»±c thi má»—i khi hàm hệ vá» hay\n" +" má»™t văn lệnh, được chạy bởi lệnh “.†hoặc “sourceâ€. kết thúc thá»±c\n" +" thi. ÄTTH ERR nghÄ©a là thá»±c thi Äá»I-Sá» má»—i khi lệnh gặp\n" +" lá»—i dẫn đến thoát hệ vá» khi bật tùy chá»n -e.\n" +" \n" +" Nếu không có đối số, “trap†sẽ in danh sách cá»§a các lệnh gắn vá»›i\n" +" các tín hiệu.\n" +" \n" +" Tùy chá»n:\n" +" -l\tin danh sách tên tín hiệu và mã số tương ứng\n" +" -p\thiển thị lệnh bắt tương ứng vá»›i má»—i ÄTTH\n" +"\n" +" Má»—i ÄTTH hoặc là tên tín hiệu trong , hoặc mã\n" +" số tín hiệu. Tên tín hiệu không phân biệt chữ hoa/thưá»ng, và không\n" +" bắt buá»™c phải dùng tiá»n tố SIG. Có thể gá»­i tín hiệu cho hệ vá» bằng\n" +" \"kill -signal $$\".\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công trừ phi đưa ra ÄTTH sai hay tùy chá»n\n" +" sai." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Hiển thị thông tin vá» kiểu câu lệnh.\n" +" \n" +" Äối vá»›i má»—i TÊN, chỉ ra cách thông dịch lệnh khi được thá»±c thi\n" +" theo tên lệnh.\n" +" \n" +" Tùy chá»n:\n" +" -a\thiển thị má»i vị trí chứa tập tin thá»±c thi được có TÊN;\n" +" \tkhông đặt tùy chá»n “-p†thì bao gồm các bí danh, lệnh\n" +" \ttích hợp và hàm.\n" +" -f\tngăn tra cứu hàm hệ vá»\n" +" -P\tbuá»™c tìm kiếm PATH đối vá»›i má»—i TÊN, thậm chí nếu nó là\n" +" \tbí danh, lệnh tích hợp hay hàm, và trả lại tên cá»§a tập\n" +" \ttin trên đĩa mà sẽ được thá»±c thi\n" +" -p\ttrả vá» hoặc tên cá»§a tập tin trên đĩa mà sẽ được thá»±c\n" +" \t\tthi, hoặc gì cả “type -t TÊN†sẽ không trả vỠ“fileâ€\n" +" \t\t(tập tin).\n" +" -t\txuất má»™t trong những từ đơn “aliasâ€, “keywordâ€, “functionâ€,\n" +" \t“builtinâ€, “file†hoặc “â€, nếu TÊN tương ứng là bí danh,\n" +" \ttừ khóa,hàm, lệnh hệ vá» tích hợp, tập tin\n" +" \ttrên đĩa, hoặc không tìm thấy.\n" +" \n" +" Äối số:\n" +" TÊN\ttên câu lệnh cần giải thích.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu tìm thấy tất cả các TÊN; bị lá»—i nếu không tìm " +"thấy." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Sá»­a đổi giá»›i hạn tài nguyên hệ vá».\n" +" \n" +" Äiá»u khiển tài nguyên sẵn có cá»§a hệ vá» và các tiến trình nó tạo ra,\n" +" trên hệ thống há»— trợ Ä‘iểu khiển tài nguyên như vậy.\n" +" \n" +" Tùy chá»n:\n" +" -S\tdùng giá»›i hạn tài nguyên “soft†(má»m)\n" +" -H\tdùng giá»›i hạn tài nguyên “hard†(cứng)\n" +" -a\tthông báo má»i giá»›i hạn hiện thá»i\n" +" -b\tkích cỡ cá»§a vùng đệm socket\n" +" -c\tkích cỡ tối Ä‘a cá»§a tập tin core được tạo\n" +" -d\tkích cỡ tối Ä‘a cá»§a từng Ä‘oạn dữ liệu cá»§a má»™t tiến trình\n" +" -e\tmức ưu tiên lập lịch cao nhất (“niceâ€)\n" +" -f\tkích cỡ tập tin tối Ä‘a được ghi bởi hệ vá» và tiến trình con\n" +" -i\tsố tín hiệu bị hoãn tối Ä‘a\n" +" -k\tsố lượng kqueues được phân bổ tối Ä‘a cho tiến trình này\n" +" -l\tkích cỡ tối Ä‘a mà tiến trình có thể khóa vào bá»™ nhá»›\n" +" -m\tkích cỡ tập ná»™i trú (RSS) tối Ä‘a\n" +" -n\tsố bá»™ mô tả tập tin tối Ä‘a được mở\n" +" -p\tkích thước vùng đệm ống dẫn\n" +" -q\tsố byte tối Ä‘a trong hàng đợi thông Ä‘iệp POSIX\n" +" -r\tmức ưu lập lịch thá»i gian thá»±c cao nhất\n" +" -s\tkích thước ngăn xếp tối Ä‘a\n" +" -t\tlượng thá»i gian cpu tối Ä‘a theo giây\n" +" -u\tsố tiến trình ngưá»i dùng tối Ä‘a\n" +" -v\tkích cỡ cá»§a bá»™ nhá»› ảo\n" +" -x\tsố khóa tập tin tối Ä‘a\n" +" -P\tsố lượng thiết bị cuối ảo tối Ä‘a\n" +" -T\tsố lượng tuyến trình tối Ä‘a\n" +" \n" +" Không phải tất cả các tùy-chá»n này Ä‘á»u sẵn sàng trên má»i ná»n tảng.\n" +" \n" +" Nếu có GIỚI_HẠN thì nó là giá trị má»›i cá»§a tài nguyên được ghi. Ba\n" +" giá trị GIỚI_HẠN đặc biệt “softâ€, “hard†và “unlimited†tương ứng\n" +" là giá»›i hạn má»m hiện tại, giá»›i hạn cứng hiện tại và không giá»›i\n" +" hạn. Không có thì in giá trị hiện thá»i cá»§a tài nguyên được ghi.\n" +" Ngầm định “-f†nếu không chỉ định tùy chá»n.\n" +" \n" +" Giá trị tính theo khối 1024 byte, trừ -t tính theo giây, -p theo\n" +" khối 512 byte và -u theo số tiến trình.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không đưa ra tùy chá»n sai hay có lá»—i phát sinh." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Hiển thị hoặc đặt mặt nạ chế độ tập tin.\n" +"\n" +" Äặt mặt nạ tạo tập tin cá»§a ngưá»i dùng thành CHẾ_ÄỘ. Không tham số\n" +" thì in chế độ hiện thá»i.\n" +"\n" +" Nếu CHẾ_ÄỘ bắt đầu bằng chữ số thì hiểu là số bát phân; không thì\n" +" nó là chuá»—i chế độ ký hiệu được chmod(1) chấp nhận.\n" +"\n" +" Tùy chá»n:\n" +" -p\tkhông có CHẾ_ÄỘ thì xuất theo định dạng dùng lại\n" +" \tlàm dữ liệu đầu vào\n" +" -S\tin kết xuất ký hiệu thay vì bát phân\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không có CHẾ_ÄỘ sai hay tùy chá»n sai." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Chá» công việc chạy xong và trả vá» trạng thái thoát.\n" +"\n" +" Äợi tiến trình xác định bởi ID, có thể là mã số tiến trình hay đặc\n" +" tả công việc, sau đó trả vá» trạng thái kết thúc cá»§a nó. Không có\n" +" ID thì đợi tất cả các tiến trình con Ä‘ang chạy và trạng thái trả\n" +" vá» là không. Nếu ID là đặc tả công việc thì đợi tất cả các tiến\n" +" trình vẫn nằm trong ống dẫn cá»§a công việc đó.\n" +" \n" +" Nếu tùy-chá»n -n được áp dùng thì đợi cho đến khi công việc kế chấm dứt " +"và\n" +" trả vá» trạng thái thoát cá»§a nó.\n" +"\n" +" Trạng thái thoát:\n" +" Trả vá» trạng thái cá»§a ID cuối; không thành công nếu ID sai hoặc đưa\n" +" ra tùy chá»n sai." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Äợi tiến trình chạy xong và trả vá» trạng thái thoát.\n" +"\n" +" Äợi từng tiến trình đã chỉ ra theo PID và báo cáo trạng thái kết thúc\n" +" cá»§a nó. Nếu không chỉ ra PID thì đợi tất cả các tiến trình con Ä‘ang\n" +" chạy, và mã vá» là không. PID phải là mã số tiến trình.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái cá»§a PID; không thành công nếu PID sai, hoặc nếu\n" +" đưa ra tùy chá»n sai." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Thá»±c thi lệnh cho từng phần tá»­ nằm trong danh sách.\n" +"\n" +" Vòng lặp “for†thá»±c thi lệnh cho từng phần tá»­ nằm trong danh sách. " +"Không\n" +" ghi “in TỪ …†thì ngầm định “in \"$@\"â€. Äối vá»›i má»—i phần tá»­ trong\n" +" danh sách, đặt giá trị phần tá»­ đó cho biến TÊN rồi thá»±c thi CÃC;CÂU;" +"LỆNH.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Số há»c cho vòng lặp.\n" +"\n" +" Tương đương vá»›i:\n" +" \t(( BTHỨC1 ))\n" +" \twhile (( BTHỨC2 )); do\n" +" \t\tCÃC;CÂU;LỆNH;\n" +" \t\t(( BTHỨC3 ))\n" +" \tdone\n" +" BTHỨC1, BTHỨC2 và BTHỨC3 là biểu thức số há»c. Ngầm định 1 cho bất\n" +" kì biểu thức bá» trống nào.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Chá»n từ từ má»™t danh sách và thá»±c thi lệnh.\n" +"\n" +" TỪ được triển khai, phát sinh danh sách từ. Tập hợp các từ kết quả được\n" +" in ra đầu ra lá»—i chuẩn vá»›i má»™t con số ở phía trước. Ngầm định “in\n" +" \"$@\"†nếu không có “in TỪâ€. Dấu nhắc PS3 được hiển thị và má»™t dòng\n" +" được Ä‘á»c từ đầu vào tiêu chuẩn. Nếu dòng bao gồm số tương ứng vá»›i từ\n" +" hiển thị thì đặt từ đó vào biến TÊN. Nếu dòng rá»—ng thì hiển thị\n" +" lại TỪ và dấu nhắc. Nếu gặp EOF thì kết thúc. Äặt TÊN là rá»—ng vá»›i\n" +" các giá trị khác. Dòng Ä‘á»c được lưu vào biến REPLY. LỆNH được thá»±c\n" +" thi sau má»—i lần chá»n đến khi gặp lệnh “breakâ€.\n" +"\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Thông báo thá»i gian sá»­ dụng để thá»±c thi ống dẫn.\n" +"\n" +" Thá»±c thi á»NG-DẪN và in tóm tắt thá»i gian thật, thá»i gian CPU ngưá»i\n" +" dùng, và thá»i gian CPU hệ thống được dùng để thá»±c thi ống dẫn đến\n" +" khi chấm dứt.\n" +"\n" +" Tùy chá»n:\n" +" -p\tin bản tóm tắt thá»i gian theo định dạng POSIX\n" +"\n" +" Giá trị biến TIMEFORMAT được dùng làm định dạng kết xuất.\n" +"\n" +" Trạng thái thoát:\n" +" Trạng thái trả vá» là trạng thái trả vá» cá»§a á»NG-DẪN." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Thá»±c thi lệnh chá»n theo mẫu.\n" +"\n" +" Thá»±c thi LỆNH má»™t cách chá»n dá»±a vào TỪ tương ứng vá»›i MẪU. Nhiá»u\n" +" mẫu cách nhau bằng “|â€.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Thá»±c thi câu lệnh có Ä‘iá»u kiện.\n" +"\n" +" Danh sách “if CÃC;CÂU;LỆNH†được thá»±c thi. Nếu trạng thái thoát là " +"không,\n" +" thì thá»±c thi danh sách “then LỆNHâ€. Không thì thá»±c thi lần lượt\n" +" má»—i danh sách “elif LỆNHâ€. và nếu trạng thái thoát là không, thì\n" +" thá»±c thi danh sách “then LỆNH†tương ứng và hoàn tất lệnh\n" +" “ifâ€. Không thì thá»±c thi danh sách “else LỆNH†nếu có. Trạng thái\n" +" thoát cá»§a toàn bá»™ lệnh “if†là trạng thái cá»§a lệnh cuối cùng được\n" +" chạy, hoặc không nếu không có Ä‘iá»u kiện nào trả vá» kết quả là\n" +" đúng.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Thá»±c thi lệnh chừng nào phép thá»­ còn thành công.\n" +"\n" +" Khai triển và thá»±c thi CÃC;CÂU;LỆNH chừng nào lệnh cuối cùng trong " +"“while†LỆNH\n" +" có trạng thái thoát là không.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Thá»±c thi lệnh chừng nào phép thá»­ vẫn không thành công.\n" +"\n" +" Khai triển và thá»±c thi CÃC;CÂU;LỆNH chừng nào lệnh cuối cùng trong " +"“until†LỆNH\n" +" có trạng thái thoát là khác không.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." + +#: builtins.c:1671 +#, fuzzy +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Tạo tiến trình phụ tên TÊN.\n" +"\n" +" Thá»±c hiện LỆNH không đồng bá»™ có đầu vào/ra chuẩn nối đến ống dẫn\n" +" cá»§a bá»™ mô tả tập tin chỉ số 0 và 1 trong biến mảng TÊN trong hệ vá»\n" +" được thá»±c thi. TÊN mặc định là \"COPROC\".\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái thoát cá»§a câu LỆNH." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Äịnh nghÄ©a hàm hệ vá».\n" +"\n" +" Tạo hàm hệ vá» tên TÊN. Khi được gá»i dưới dạng má»™t câu lệnh đơn\n" +" giản, TÊN chạy LỆNH trong ngữ cảnh cá»§a hệ vá» gá»i. Khi TÊN được\n" +" gá»i, các đối số được gá»­i cho hàm dạng $1…$n, và tên hàm nằm\n" +" trong $FUNCNAME.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu TÊN không phải chỉ Ä‘á»c." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Nhóm lệnh làm má»™t đơn vị.\n" +"\n" +" Chạy tập hợp các lệnh trong cùng má»™t nhóm. Äây là má»™t cách để\n" +" chuyển hướng toàn bá»™ má»™t nhóm lệnh.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái cá»§a câu lệnh cuối cùng được chạy." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Tiếp tục lại công việc ở trước.\n" +"\n" +" Tương đương vá»›i đối số đặc tả công việc ÄTCV trong lệnh “fgâ€.\n" +" Tiếp tục lại công việc bị dừng chạy hay chạy ná»n. ÄTCV có thể xác\n" +" định tên công việc hoặc mã số công việc. Äặt “&†sau ÄTCV sẽ chạy\n" +" công việc ở ná»n, như là đối số đặc tả công việc trong “bgâ€.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại trạng thái cá»§a công việc đã tiếp tục lại." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Äịnh giá biểu thức số há»c.\n" +"\n" +" BTHỨC được tính tùy theo các quy tắc vỠđịnh giá số há»c.\n" +" Tương đương vá»›i “let BTHỨCâ€.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại 1 nếu BTHỨC tính là 0; không thì trả lại 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Thá»±c thi câu lệnh có Ä‘iá»u kiện.\n" +"\n" +" Trả vá» trạng thái 0 hoặc 1 tùy vào phép tính biểu thức Ä‘iá»u kiện\n" +" BTHỨC. Biểu thức bao gồm các thành phần dùng trong lệnh tích hợp\n" +" “test†và có thể được tổ hợp bằng các toán tá»­ sau:\n" +" \n" +" ( BTHỨC )\t\tTrả vá» giá trị cá»§a BTHỨC\n" +" ! BTHỨC\t\tÄúng nếu BTHỨC là không đúng. Ngược lại sai\n" +" BTHỨC1 && BTHỨC2\tÄúng nếu cả hai biểu thức Ä‘á»u đúng. Ngược lại sai.\n" +" BTHỨC1 || BTHỨC2\tÄúng nếu má»™t trong hai biểu thức đúng. Ngược lại " +"sai.\n" +" \n" +" Khi dùng toán từ “==†và “!=â€, chuá»—i bên phải toán tá»­ được dùng\n" +" làm mẫu, và thá»±c hiện khá»›p mẫu. Khi dùng toán tá»­ “=~â€, chuá»—i bên\n" +" phải toán tá»­ được dùng làm biểu thức chính quy.\n" +"\n" +" Toán tá»­ “&&†và “||†không tính BTHỨC2 nếu BTHỨC1 đủ để xác định\n" +" giá trị toàn biểu thức.\n" +"\n" +" Trạng thái thoát:\n" +" 0 hay 1 phụ thuá»™c vào giá trị cá»§a BTHỨC." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Tên và cách dùng các biến hệ vá» thưá»ng dùng.\n" +"\n" +" BASH_VERSION\n" +" \tThông tin phiên bản cá»§a Bash Ä‘ang chạy.\n" +" CDPATH\tDanh sách thư mục cách nhau bằng dấu hai chấm để tìm\n" +" \tđối số thư mục trong lệnh “cdâ€.\n" +" GLOBIGNORE\tDanh sách mẫu cách nhau bằng dấu hai chấm diá»…n tả\n" +" \ttên tập tin bị bá» qua không bung đưá»ng dẫn.\n" +" HISTFILE\tTên tập tin chứa lịch sá»­ câu lệnh cá»§a bạn.\n" +" HISTFILESIZE\n" +" \tSố dòng tối Ä‘a tập tin này có thể chứa.\n" +" HISTSIZE\tSố dòng tối Ä‘a mà hệ vá» Ä‘ang chạy có thể truy cập.\n" +" HOME\tTên đưá»ng dẫn đầy đủ cá»§a thư mục đăng nhập cá»§a bạn.\n" +" HOSTNAME\tTên cá»§a máy hiện thá»i cá»§a bạn.\n" +" HOSTTYPE\tLoại CPU phiên bản Bash này Ä‘ang chạy.\n" +" IGNOREEOF\tÄiá»u khiển hành vi hệ vá» khi nhận EOF là dữ liệu nhập\n" +" \tduy nhất. Äặt thì giá trị cá»§a nó là EOF có thể gặp\n" +" \tliên tục trên má»™t dòng rá»—ng trước khi hệ vá» kết thúc\n" +" \t(mặc định là 10). Không đặt thì EOF nghÄ©a là kết thúc\n" +" \tnhập.\n" +" MACHTYPE\tChuá»—i mô tả hệ thống Bash Ä‘ang chạy.\n" +" MAILCHECK\tSố giây giữa hai lần Bash kiểm tra có thư má»›i không.\n" +" MAILPATH\tDanh sách tên tập tin cách nhau bằng dấu hai chấm\n" +" \tđể Bash kiểm tra có thư má»›i không.\n" +" OSTYPE\tPhiên bản UNIX Bash Ä‘ang chạy.\n" +" PATH\tDanh sách thư mục cách nhau bằng dấu hai chấm để tìm lệnh.\n" +" PROMPT_COMMAND\n" +" \tLệnh cần thá»±c hiện trước khi in dấu nhắc chính.\n" +" PS1\t\tChuá»—i dấu nhắc chính.\n" +" PS2\t\tChuá»—i dấu nhắc phụ.\n" +" PWD\t\tTên đưá»ng dẫn đầy đủ cá»§a thư mục hiện tại.\n" +" SHELLOPTS\tDanh sách tùy chá»n hệ vỠđược bật cách nhau bằng\n" +" \tdấu hai chấm.\n" +" TERM\tTên kiểu thiết bị cuối hiện thá»i.\n" +" TIMEFORMAT\tÄịnh dạng kết xuất cho thống kê thá»i gian cá»§a lệnh “timeâ€.\n" +" auto_resume\tGiá trị khác rá»—ng thì trước tiên tìm má»™t từ lệnh xuất\n" +" \thiện má»™t mình trên má»™t dòng, trong danh sách các công\n" +" \tviệc bị dừng chạy. Tìm ra thì đặt công việc đó vào ná»n\n" +" \ttrước. Giá trị “exact†có nghÄ©a là từ lệnh phải tương\n" +" \tứng chính xác vá»›i má»™t câu lệnh trong danh sách các\n" +" \tcông việc bị dừng chạy. Giá trị “substring†có nghÄ©a\n" +" \tlà từ lệnh phải tương ứng vá»›i má»™t chuá»—i phụ cá»§a công\n" +" \tviệc đó.\n" +" histchars\tCác ký tá»± Ä‘iá»u khiển bung và thay thế lịch sá»­. Ký tá»±\n" +" \tđầu tiên thưá»ng là ký tá»± thay thế lịch sá»­, thưá»ng là\n" +" \t“!â€. Ký tá»± thứ hai là ký tá»± thay thế nhanh, thưá»ng là\n" +" \t“^â€. Ký tá»± thứ ba là ký tá»± ghi chú vá» lịch sá»­, thưá»ng\n" +" \tlà “#â€.\n" +" HISTIGNORE\tDanh sách mẫu cách bằng dấu hai chấm dùng để quyết định\n" +" \tnhững câu lệnh nào nên được lưu vào danh sách lịch sá»­.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Thêm thư mục vào ngăn xếp.\n" +" \n" +" Thêm thư mục vào đỉnh cá»§a ngăn xếp thư mục, hoặc xoay ngăn xếp, làm cho\n" +" thư mục má»›i đầu ngăn xếp là thư mục làm việc hiện thá»i. Không có đối\n" +" số thì trao đổi hai thư mục đầu.\n" +" \n" +" -n\tNgăn chuyển đổi bình thưá»ng khi thêm thư mục\n" +" \tvào ngăn xếp, để thao tác chỉ ngăn xếp.\n" +" \n" +" +N\tXoay ngăn xếp để thư mục thứ N (đếm từ trái danh sách\n" +" \t“dirs†(bắt đầu từ số không) dá»i lên đầu.\n" +" \n" +" -N\tXoay ngăn xếp để thư mục thứ N (đếm từ phải danh sách\n" +" \t“dirs†(bắt đầu từ số không) dá»i lên đầu.\n" +" \n" +" dir\tThêm THMỤC vào đầu ngăn xếp thư mục, cho nó làm thư mục\n" +" \tlàm việc hiện thá»i má»›i.\n" +" \n" +" Lệnh tích hợp “dirs†hiển thị ngăn xếp thư mục.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không đưa ra đối số sai, cÅ©ng không sai\n" +" chuyển đổi thư mục." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Gỡ bá» thư mục khá»i ngăn xếp.\n" +" \n" +" Gỡ bá» thư mục khá»i ngăn xếp thư mục. Không có đối số thì gỡ bá» thư\n" +" mục đầu khá»i ngăn xếp và “cd†sang thư mục đầu má»›i.\n" +" \n" +" -n\tNgăn chuyển đổi bình thưá»ng khi gỡ bá» thư mục\n" +" \tkhá»i ngăn xếp, để thao tác chỉ ngăn xếp.\n" +" \n" +" +N\tGỡ bá» thư mục thứ N (đếm từ trái danh sách\n" +" \t“dirs†(bắt đầu từ số không). Ví dụ: “popd +0†bá»\n" +" \tthư mục cuối cùng, “popd +1†bá» thư mục thứ hai.\n" +" \n" +" -N\tGỡ bá» thư mục thứ N (đếm từ phải danh sách\n" +" \t“dirs†(bắt đầu từ số không). Ví dụ: “popd -0†bá»\n" +" \tthư mục cuối cùng, “popd -1†bá» thư mục giáp cuối.\n" +" \n" +" Lệnh tích hợp “dirs†hiển thị ngăn xếp thư mục.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không đưa ra đối số sai, cÅ©ng không sai\n" +" chuyển đổi thư mục." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Hiển thị ngăn xếp thư mục.\n" +" \n" +" Hiển thị danh sách các thư mục được nhá»› hiện thá»i. Các thư mục\n" +" tìm thấy chá»— cá»§a chúng trong danh sách vá»›i lệnh “pushdâ€;\n" +" bạn có thể lấy bản sao dá»± phòng thông qua danh sách vá»›i lệnh “popdâ€.\n" +" \n" +" Tùy chá»n:\n" +" -c\txóa má»i phần tá»­ trong ngăn xếp thư mục\n" +" -l\tđừng in phiên bản thư mục có dấu ngã\n" +" \t(tương đối so vá»›i thư mục chính cá»§a ngưá»i dùng)\n" +" -p\tin ngăn xếp thư mục, má»—i dòng má»™t mục\n" +" -v\tin ngăn xếp thư mục, má»—i dòng má»™t mục kèm vị trí trong ngăn xếp\n" +" \n" +" Äối số:\n" +" +N\thiển thị mục thứ N bắt đầu từ bên trái danh sách\n" +" được hiển thị bằng “dirs†khi được gá»i mà không đưa ra\n" +" tùy chá»n, bắt đầu từ số không.\n" +" \n" +" -N\thiển thị mục thứ N bắt đầu từ bên phải danh sách\n" +" được hiển thị bằng “dirs†khi được gá»i mà không đưa ra\n" +" tùy chá»n, bắt đầu từ số không.\n" +" \n" +" Trạng thái thoát:\n" +" Trả vá» thành công nếu không đưa ra tùy chá»n sai hay gặp lá»—i." + +#: builtins.c:1916 +#, fuzzy +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Äặt và bá» các tùy chá»n hệ vá».\n" +" \n" +" Thay đổi thiết lập cá»§a má»—i tùy chá»n hệ vá» TÊN_TÙY_CHỌN. Không có\n" +" đối số tùy chá»n thì liệt kê tất cả các tùy chá»n hệ vá» kèm chỉ dẫn\n" +" tùy chá»n được đặt hay không.\n" +" \n" +" Tùy chá»n:\n" +" -o\thạn chế TÊN_TÙY_CHỌN những tên được định nghÄ©a\n" +" \tđể sá»­ dụng vá»›i “set -oâ€\n" +" -p\tin má»—i tùy chá»n hệ vá» kèm trạng thái\n" +" -q\tngăn kết xuất\n" +" -u\ttắt TÊN_TÙY_CHỌN\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu TÊN_TÙY_CHỌN được bật; không thành công nếu\n" +" đưa ra tùy chá»n sai hay TÊN_TÙY_CHỌN bị tắt." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Äịnh dạng và in Äá»I-Sá» theo Ä‘iá»u khiển cá»§a ÄỊNH_DẠNG.\n" +" \n" +" Tùy chá»n:\n" +" -v BIẾN\tgán kết xuất cho biến hệ vá» này thay vì\n" +" \thiển thị nó trên đầu ra chuẩn\n" +" \n" +" ÄỊNH_DẠNG là chuá»—i ký tá»± mà chứa ba kiểu đối tượng: ký tá»± bình\n" +" thưá»ng, cái này được chép ra đầu ra chuẩn; dãy ký tá»± thoát, dùng để\n" +" chuyển đổi sau đó sao chép sang đầu ra chuẩn; và các ký hiệu đặc tả định " +"dạng,\n" +" má»—i đặc tả này tác động lên đối số tương ứng.\n" +" \n" +" Ngoài đặc tả định dạng chuẩn được dùng trong printf(1) và printf(3),\n" +" printf được hiểu những đặc tả sau:\n" +" \n" +" %b\tkhai triển dãy thoát gạch chéo ngược trong đối số tương ứng\n" +" %q\ttrích dẫn đối số theo cách dùng lại làm dữ liệu đầu vào hệ vá»\n" +" %(fmt)T\txuất chuá»—i ngày tháng theo định dạng FMT từ strftime(3)\n" +" \n" +" Äịnh dạng được dùng lại để có thể dùng hết đối số. Nếu\n" +" ở đây có ít đối số hÆ¡n yêu cầu cá»§a định dạng, định dạng thừa đó được\n" +" xá»­ lý theo cách là sẽ có giá trị bằng số không hay chuá»—i rá»—ng,\n" +" được áp dụng.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công trừ phi đưa ra tùy chá»n sai hay gặp lá»—i khi ghi\n" +" hay gán." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Chỉ định cách tá»± hoàn thiện đối số bằng Readline.\n" +" \n" +" Äối vá»›i má»—i TÊN, ghi rõ các đối số sẽ được tá»± hoàn thiện như thế nào.\n" +" Không đưa ra tùy chá»n thì in ra các đặc tả tá»± hoàn thiện bằng má»™t cách\n" +" cho phép dùng lại đặc tả làm dữ liệu nhập vào.\n" +" \n" +" Tùy chá»n:\n" +" -p\tin đặc tả tá»± hoàn thiện đã tồn tại theo định dạng dùng lại được\n" +" -r\tgỡ bỠđặc tả tá»± hoàn thiện cho má»—i TÊN,\n" +" \thoặc nếu có TÊN thì gỡ bá» tất cả các đặc tả tá»± hoàn thiện\n" +" -D\táp dụng các sá»± hoàn thành và hành động làm mặc định\n" +" \tcho câu lệnh mà không xác định sá»± hoàn thành riêng\n" +" -E\táp dụng các sá»± hoàn thành và hành động cho câu lệnh “trốngâ€\n" +" \t(empty) -- thá»­ hoàn thành trên dòng trắng\n" +" \n" +" Khi chức năng tá»± hoàn thiện được thá»­, những hành động được làm theo thứ\n" +" tá»± cá»§a những tùy chá»n chữ HOA bên trên. Tùy chá»n -D có quyá»n ưu tiên\n" +" hÆ¡n -E. \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không đưa ra tùy chá»n sai hay gặp lá»—i." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Hiển thị từ gợi ý có thể phụ thuá»™c vào các tùy chá»n.\n" +" \n" +" Dá»± định dùng từ bên trong má»™t chức năng hệ vá» mà tạo các việc\n" +" tá»± hoàn thiện có thể làm. Nếu đưa ra đối số TỪ vẫn tùy chá»n, thì tạo\n" +" các kết quả tương ứng vá»›i TỪ.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công nếu không đưa ra tùy chá»n sai hay gặp lá»—i." + +#: builtins.c:2016 +#, fuzzy +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Sá»­a đổi hoặc hiển thị các tùy chá»n tá»± hoàn thiện.\n" +"\n" +" Sá»­a đổi các tùy chá»n tá»± hoàn thiện đối vá»›i má»—i TÊN, hoặc nếu không đưa\n" +" ra TÊN thì chức năng tá»± hoàn thiện hiện tại sẽ được thi hành, nếu không\n" +" TÙY_CHỌN được chỉ ra, in ra các tùy chá»n tá»± hoàn thiện cho má»—i TÊN hay\n" +" các đặc tính kỹ thuật hiện có\n" +"\n" +" Tùy chá»n:\n" +" -o tùy_chá»n\tđặt TÙY_CHỌN tá»± hoàn thiện này đối vá»›i má»—i TÊN\n" +" -D\t\tSá»­a TÙY_CHỌN vá» tá»± hoàn thiện lệnh “defaultâ€\n" +" -E\t\tSá»­a TÙY_CHỌN vá» tá»± hoàn thiện lệnh “emptyâ€\n" +"\n" +" Dùng “+o†thay cho “-o†thì tắt tùy chá»n đưa ra.\n" +"\n" +" Äối số:\n" +"\n" +" Má»—i TÊN tham chiếu đến má»™t câu lệnh cho đó má»™t đặc tả tá»± hoàn thiện\n" +" phải được xác định trước dùng tích hợp “completeâ€. Nếu không đưa\n" +" ra TÊN để áp dụng, thì “compopt†phải được gá»i bởi má»™t hàm Ä‘ang\n" +" tạo việc tá»± hoàn thiện, và các tùy chá»n vá» hàm tạo việc tá»± hoàn thiện " +"Ä‘ang\n" +" chạy cÅ©ng được sá»­a đổi.\n" +"\n" +" Trạng thái thoát:\n" +" Trả lại thành công trừ phi đưa ra tùy chá»n sai, hoặc TÊN có má»™t\n" +" đặc tả tá»± hoàn thiện được xác định." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Äá»c các dòng từ đầu vào tiêu chuẩn vào má»™t biến mảng chỉ số.\n" +" \n" +" Äá»c các dòng từ đầu vào tiêu chuẩn vào biến mảng MẢNG, hoặc từ bá»™\n" +" mô tả tập tin FD nếu đưa ra tùy chá»n -u. Biến MAPFILE là MẢNG mặc\n" +" định.\n" +" \n" +" Tùy chá»n:\n" +" -d ngăn_cách\tDùng NGÄ‚N_CÃCH chấm dứt dòng, thay cho ký tá»± dòng má»›i\n" +" -n Sá»\tsao chép nhiá»u nhất Sá» dòng. Nếu là 0 thì sao chép má»i dòng.\n" +" -O Gá»C\tbắt đầu gán cho MẢNG ở chỉ số Gá»C. Chỉ số mặc định là 0.\n" +" -s Sá»\tbá» qua Sá» dòng đầu tiên được Ä‘á»c.\n" +" -t\tgỡ bá» má»™t ký tá»± NGÄ‚N_CÃCH theo sau khá»i má»—i dòng được Ä‘á»c\n" +" \t(mặc định là ký tá»± dòng má»›i).\n" +" -u FD\tÄ‘á»c các dòng từ bá»™ mô tả tập tin FD thay vào từ đầu vào tiêu " +"chuẩn.\n" +" -C GỌI_NGƯỢC\tđịnh giá GỌI_NGƯỢC má»—i lần Ä‘á»c LƯỢNG dòng.\n" +" -c LƯỢNG\tghi rõ số các dòng được Ä‘á»c giữa hai lần GỌI_NGƯỢC.\n" +" \n" +" Äối số:\n" +" MẢNG\ttên biến mảng cần dùng cho dữ liệu tập tin.\n" +" \n" +" Nếu đưa ra -C mà không có -c thì lượng mặc định là 5000. Khi ước\n" +" lượng lá»i GỌI_NGƯỢC thì nó nhận chỉ số cá»§a phần tá»­ mảng kế tiếp\n" +" được gán dưới dạng má»™t đối số bổ sung.\n" +" \n" +" Không đưa ra má»™t Gá»C rõ ràng thì mapfile (tập tin sÆ¡ đồ) sẽ xóa\n" +" sạch MẢNG trước khi gán cho nó.\n" +" \n" +" Trạng thái thoát:\n" +" Trả lại thành công trừ phi đưa ra tùy chá»n sai và MẢNG không phải\n" +" chỉ Ä‘á»c hay không là má»™t mảng chỉ số." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Äá»c các dòng từ má»™t tập tin vào má»™t biến mảng.\n" +" \n" +" Giống vá»›i “mapfileâ€." + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "Tác quyá»n (C) năm 2015 cá»§a Tổ chức Quỹ Phần má»m Tá»± do, Inc." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Trả lại ngữ cảnh cá»§a cú gá»i thá»§ tục con hiện thá»i.\n" +#~ "\n" +#~ " Nếu không có BTHỨC thì trả vá» " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: tiến trình %5ld (%s) trong the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Tín hiệu lạ #" + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Tác quyá»n (C) năm 2014 cá»§a Tổ chức Quỹ Phần má»m Tá»± do, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Tác quyá»n (C) năm 2009 cá»§a Tổ chức Phần má»m Tá»± do.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Giấy phép GPLv2+: GNU GPL phiên bản 2 hoặc má»›i hÆ¡n \n" + +#~ msgid "" +#~ ". With EXPR, returns\n" +#~ " " +#~ msgstr "" +#~ ". CÅ©ng dùng BTHỨC thì trả lại\n" +#~ " " + +#~ msgid "" +#~ "; this extra information can be used to\n" +#~ " 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." +#~ msgstr "" +#~ "; thông tin thêm này có thể được sá»­ dụng\n" +#~ "\tđể cung cấp má»™t vết ngăn xếp (stack trace).\n" +#~ "\n" +#~ "\tGiá trị cá»§a BTHỨC ngụ ý bao nhiêu khung gá»i cần lùi lại\n" +#~ "\ttương đối vá»›i cái hiện thá»i; khung trên cùng là khung 0." diff --git a/bash-5.1/po/zh_CN.gmo b/bash-5.1/po/zh_CN.gmo new file mode 100644 index 0000000000000000000000000000000000000000..9712f241e78ff2425ea55e002794ad94cafb70ee GIT binary patch literal 148429 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, 2010. +# Aron Xu , 2011. +# Anthony Fok , 2013. +# Wylmer Wang , 2014. +# Mingcong Bai , 2015. +# liushuyu , 2016. +# Mingye Wang , 2015, 2016. +# Boyuan Yang <073plan@gmail.com>, 2018, 2019. +# +# KNOWN DEFECTS (easy fixes, tedious work; sorted by priority): +# 0. Translation coverage when upstream sends new strings. +# +# 1. Argument lists in `help` are translated, but the `help blah` text still +# refers to the original name like WORDS. +# +# These long helps should be changed to follow their `help` synopsis. Use +# <傿•°> to refer to `傿•°' in the one-line synopsis. +# +# 2. Passive voice. When used inappropriately, they sound even worse in +# Chinese than in English. In fact huge amounts of `被' is what you use to +# spot translated text. (You don't always need `被' for passive voice +# either.) +# +# 3. Typography. +# a. Capitalization. English convensions mangle command names in help text +# if it's the first word of the sentense (e.g. `Getopts blah blah...'). +# Do yourself a favor and change the names back into lowercase. +# b. Quotes. Chinese has no `typewriter quote' convension, and standard +# “curly quotes†should be used. +# c. Colons. We don't use `: ` in Chinese; use `:`. Sometimes `:` is seen +# w/o a space (worse). +# d. Other stuff like parentheses and whitespace. Alignment can be quite +# important for Feeling Good(TM). +# +msgid "" +msgstr "" +"Project-Id-Version: bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-01-08 15:20-0500\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" +"Language-Team: Chinese (simplified) \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.2\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "æ•°ç»„ä¸‹æ ‡ä¸æ­£ç¡®" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s:正在移除å称引用属性" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%sï¼šæ— æ³•å°†ç´¢å¼•æ•°ç»„è½¬åŒ–ä¸ºå…³è”æ•°ç»„" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%sï¼šæ— æ•ˆçš„å…³è”æ•°ç»„é”®" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%sï¼šæ— æ³•ä¸ºéžæ•°å­—的索引赋值" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s:%sï¼šä¸ºå…³è”æ•°ç»„赋值时必须使用下标" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s:无法创建: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: 无法为命令找到键映射" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s:第一个éžç©ºå­—ç¬¦ä¸æ˜¯â€œ\"â€" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "%2$s 中没有闭åˆçš„“%1$câ€" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s:缺少冒å·åˆ†éš”符" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "“%sâ€: 无法解除绑定" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "大括å·å±•开:无法为 %s 分é…内存" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "大括å·å±•开:为 %u 个元素分é…内存失败" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "大括å·å±•开:为“%sâ€åˆ†é…内存失败" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "“%sâ€: 无效的别å" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "未å¯ç”¨è¡Œç¼–辑" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "“%sâ€: 无效的键映射å" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s:无法读å–: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "“%sâ€: 未知函数å" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s 未与任何键绑定。\n" + +# Blame the source string. +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s å¯ä»¥è¢«è°ƒç”¨ï¼Œé€šè¿‡ " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "“%sâ€: 无法解除绑定" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "循环计数" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "仅在 `for', `while', 或者`until' 循环中有æ„义" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"返回当å‰å­è°ƒç”¨çš„上下文。\n" +" \n" +" ä¸å¸¦æœ‰ EXPR 时,返回 \"$line $filename\"。带有 EXPR 时,返回\n" +" \"$line $subroutine $filename\";这个é¢å¤–的信æ¯å¯ä»¥è¢«ç”¨äºŽæä¾›\n" +" 栈追踪。\n" +" \n" +" EXPR 的值 显示了到当å‰è°ƒç”¨å¸§éœ€è¦å›žåŽ»å¤šå°‘ä¸ªè°ƒç”¨å¸§ï¼›é¡¶éƒ¨å¸§\n" +" 是第 0 帧。\n" +" \n" +" 退出状æ€ï¼š\n" +" é™¤éž shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ª shell 函数或者 EXPR 无效,å¦åˆ™è¿”回结\n" +" 果为0。" + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME 未设定" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "傿•°å¤ªå¤š" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "空目录" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD 未设定" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "第 %d 行:" + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "警告:" + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s:用法:" + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s:选项需è¦ä¸€ä¸ªå‚æ•°" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%sï¼šéœ€è¦æ•°å­—傿•°" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s:未找到" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s:无效选项" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s:无效的选项å" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "“%sâ€: 䏿˜¯æœ‰æ•ˆçš„æ ‡è¯†ç¬¦" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "无效的八进制数" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "无效的å六进制数" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "无效数字" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s:无效的信å·å£°æ˜Ž" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "“%sâ€: 䏿˜¯æœ‰æ•ˆçš„è¿›ç¨‹å·æˆ–者任务声明" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s:åªè¯»å˜é‡" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s:%s 越界" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "傿•°" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s 越界" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s:无此任务" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s:无任务控制" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "无任务控制" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s:å—é™çš„" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "å—é™çš„" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%sï¼šä¸æ˜¯ shell 内建" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "写错误: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "设定终端属性时出错: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "获å–终端属性时出错: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s:获å–当å‰ç›®å½•时出错: %s:%s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s:模糊的任务声明" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "此版本内帮助ä¸å¯ç”¨" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%sï¼šæ— æ³•å–æ¶ˆè®¾å®š: åªè¯» %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%sï¼šæ— æ³•å–æ¶ˆè®¾å®š" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s:无效的动作å" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s:没有补全声明" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "警告: -F 选项å¯èƒ½ä¸åƒæ‚¨é¢„期的那样工作" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "警告: -C 选项å¯èƒ½ä¸åƒæ‚¨é¢„期的那样工作" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "当剿œªæ‰§è¡Œè¡¥å…¨åŠŸèƒ½" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "åªèƒ½åœ¨å‡½æ•°ä¸­ä½¿ç”¨" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s:引用å˜é‡ä¸èƒ½ä¸ºæ•°ç»„" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s:ä¸å…许å称引用å˜é‡å¼•用自身" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s:循环å˜é‡å引用" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "“%sâ€: 无效的å称引用å˜é‡å" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "无法用 `-f' 生æˆå‡½æ•°" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s:åªè¯»å‡½æ•°" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s:引å·å†…çš„å¤åˆæ•°ç»„赋值已被弃用" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%sï¼šæ— æ³•ä»¥è¿™ç§æ–¹å¼é”€æ¯æ•°ç»„å˜é‡" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%sï¼šæ— æ³•å°†å…³è”æ•°ç»„转化为索引数组" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "动æ€åŠ è½½ä¸å¯ç”¨" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "无法打开共享对象 %s:%s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "无法在共享对象 %2$s 中找到 %1$s: %3$s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%sï¼šæœªä»¥åŠ¨æ€æ–¹å¼åŠ è½½" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "为 %s 载入函数失败 (%d): 未载入" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%sï¼šæœªä»¥åŠ¨æ€æ–¹å¼åŠ è½½" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s:无法删除: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s:是一个目录" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%sï¼šä¸æ˜¯å¸¸è§„文件" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s:文件太大" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s:无法执行二进制文件" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s:无法执行: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "注销\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "䏿˜¯ç™»å½• shell: 使用 `exit'" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "æœ‰åœæ­¢çš„任务。\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "有è¿è¡Œä¸­çš„任务。\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "未找到命令" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "历å²å£°æ˜Ž" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s:无法打开临时文件: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "当å‰" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "在ä¸å¸¦ä»»åŠ¡æŽ§åˆ¶çš„æƒ…å†µä¸‹å¯åŠ¨äº†ä»»åŠ¡ %d" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%sï¼šéžæ³•选项 -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s:选项需è¦ä¸€ä¸ªå‚æ•° -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "å·²ç¦ç”¨å“ˆå¸Œ" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s:哈希表为空\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "命中\t命令\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Shell 命令匹é…关键字“" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"没有与“%sâ€åŒ¹é…的帮助主题。å°è¯•使用“help helpâ€ã€â€œman -k %sâ€æˆ–“info %sâ€ã€‚" + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s:无法打开: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"这些 shell 命令是内部定义的。请输入 `help' 以获å–一个列表。\n" +"输入 `help åç§°' 以得到有关函数`åç§°'的更多信æ¯ã€‚\n" +"使用 `info bash' æ¥èŽ·å¾—å…³äºŽ shell 的更多一般性信æ¯ã€‚\n" +"使用 `man -k' 或 `info' æ¥èŽ·å–ä¸åœ¨åˆ—表中的命令的更多信æ¯ã€‚\n" +"\n" +"åç§°æ—边的星å·(*)表示该命令被ç¦ç”¨ã€‚\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "最多åªèƒ½ä½¿ç”¨ -anrw 选项中的一个" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "历å²ä½ç½®" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s:无效时间戳" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%sï¼šåŽ†å²æ‰©å±•失败" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s:inlib 失败" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "其他选项ä¸èƒ½ä¸Ž `-x' åŒæ—¶ä½¿ç”¨" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%sï¼šå‚æ•°å¿…须是进程或任务 ID" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "未知错误" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "需è¦è¡¨è¾¾å¼" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%sï¼šä¸æ˜¯ä¸€ä¸ªç´¢å¼•数组" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s:无效的文件æè¿°ç¬¦å£°æ˜Ž" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: 无效的文件æè¿°ç¬¦: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s:无效的行数" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s:无效的数组基数" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s:无效的回调é‡å­" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "空数组å˜é‡å" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "éœ€è¦æ•°ç»„å˜é‡æ”¯æŒ" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "“%sâ€: 缺少格å¼å­—符" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "“%câ€ï¼šæ— æ•ˆçš„æ—¶é—´æ ¼å¼å£°æ˜Ž" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "“%câ€ï¼šæ— æ•ˆæ ¼å¼å­—符" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "警告: %s:%s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "æ ¼å¼è§£æžé—®é¢˜: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "使用了 \\x 但缺少å六进制ä½" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "使用了 \\%c 但缺少 unicode æ•°" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "无其他目录" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%sï¼šæ— æ•ˆå‚æ•°" + +#: builtins/pushd.def:480 +msgid "" +msgstr "<无当å‰ç›®å½•>" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "目录栈为空" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "目录栈索引" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"显示当å‰è®°ä½çš„目录列表。 目录\n" +" 通过 `pushd' 命令加入这个列表;您å¯ä»¥\n" +" 使用 `popd' 命令对列表进行é历。\n" +" \n" +" 选项:\n" +" -c\t删除所有元素以清除目录栈\n" +" -l\t䏿‰“å°ä¸Žå®¶ç›®å½•相关的以波浪å·\n" +" \t为å‰ç¼€çš„目录\n" +" -p\tæ¯è¡Œä¸€ä¸ªæ¡ç›®æ‰“å°ç›®å½•æ ˆ\n" +" -v\t以栈ä½ç½®ä¸ºå‰ç¼€ï¼Œæ¯è¡Œä¸€ä¸ªæ¡ç›®\n" +" \t打å°ç›®å½•æ ˆ\n" +" \n" +" 傿•°:\n" +" +N\t以 dirs ä¸å¸¦é€‰é¡¹è¾“å‡ºçš„é¡ºåºæ˜¾ç¤ºåˆ—表从左起第N个æ¡ç›®ï¼Œ\n" +" \t从 0 开始。\n" +" \n" +" -N\t以 dirs ä¸å¸¦é€‰é¡¹è¾“å‡ºçš„é¡ºåºæ˜¾ç¤ºåˆ—表从å³èµ·ç¬¬N个项目,\n" +"\t从 0 开始。" + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"在目录栈顶部加入一个目录,或者论询\n" +" 目录栈,是当å‰å·¥ä½œç›®å½•æˆä¸ºæ–°çš„æ ˆé¡¶\n" +" ä¸å¸¦å‚æ•°æ—¶ï¼Œäº¤æ¢æ ˆé¡¶çš„两个目录。\n" +" \n" +" 选项:\n" +" -n\t抑制增加栈中目录时通常的改å˜ç›®å½•çš„æ“作,\n" +" \t从而åªè¿›è¡Œæ ˆæ“作。\n" +" \n" +" 傿•°ï¼š\n" +" +N\t轮转栈使得第N个目录(`dirs' çš„\n" +" \t输出列表中左起,从0开始)\n" +" \tå‡è‡³æ ˆé¡¶ã€‚\n" +" \n" +" -N\t轮转栈使得第N个目录(`dirs' çš„\n" +" \t输出列表中å³èµ·ï¼Œä»Ž0开始)\n" +" \tå‡è‡³æ ˆé¡¶\n" +" \n" +" dir\t添加目录至栈顶,并\n" +" \t使其æˆä¸ºæ–°çš„当å‰å·¥ä½œç›®å½•。\n" +" \n" +" `dirs' 内建命令显示目录栈." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"从目录栈中删除æ¡ç›®ã€‚ä¸å¸¦å‚数时,删除\n" +" 栈顶目录并改å˜è‡³æ–°çš„æ ˆé¡¶ç›®å½•。\n" +" \n" +" 选项:\n" +" -n\t抑制从栈中删除目录时通常的改å˜ç›®å½•æ“作,\n" +" \t从而åªè¿›è¡Œæ ˆæ“作。\n" +" \n" +" 傿•°ï¼š\n" +" +N\t从 `dirs' 输出的列表中,\n" +" \t删除左起第N个æ¡ç›®ï¼Œè®¡æ•°ä»Ž0开始。例如:`popd +0'\n" +" \t删除第一个目录,`popd +1' 删除第二个。\n" +" \n" +" -N\t从 `dirs' 输出的列表中,\n" +" \t删除å³èµ·ç¬¬N个æ¡ç›®ï¼Œè®¡æ•°ä»Ž0开始,例如:`popd -0'\n" +" \t删除最åŽä¸€ä¸ªæ¡ç›®ï¼Œ`popd -1' 删除倒数第二个。\n" +" \n" +" `dirs' 内建å˜é‡æ˜¾ç¤ºç›®å½•栈。" + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s:无效的超时声明" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "读错误: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "åªèƒ½ä»Žå‡½æ•°æˆ–者æºè„šæœ¬è¿”å›ž(`return')" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "æ— æ³•åŒæ—¶å–消设定一个函数和一个å˜é‡" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%sï¼šä¸æ˜¯æ•°ç»„å˜é‡" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%sï¼šä¸æ˜¯å‡½æ•°" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s:无法导出" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "ä½ç§»è®¡æ•°" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "æ— æ³•åŒæ—¶è®¾å®šå’Œå–消设定 shell 选项" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s:无效的 shell 选项å" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "éœ€è¦æ–‡ä»¶å傿•°" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s:文件未找到" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "无法挂起" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "无法挂起一个登录 shell" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s 是“%sâ€çš„别å\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s 是 shell 关键字\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s 是函数\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s 是特殊 shell 内建\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s 是 shell 内建\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s 是 %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s 已被录入哈希表 (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s:无效的 limit 傿•°" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "“%câ€ï¼šå‘½ä»¤é”™è¯¯" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%sï¼šæ— æ³•èŽ·å– limit 值: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "limit" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s:无法修改 limit 值: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "八进制数" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "“%câ€ï¼šæ— æ•ˆçš„符å·çжæ€è¿ç®—符" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "“%câ€ï¼šæ— æ•ˆçš„符å·çжæ€å­—符" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr "行" + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "上一个命令: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "中止..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "报告:" + +#: error.c:462 +msgid "unknown command error" +msgstr "未知的命令错误" + +#: error.c:463 +msgid "bad command type" +msgstr "错误的命令类型" + +#: error.c:464 +msgid "bad connector" +msgstr "错误的æ¡ä»¶è¿žæŽ¥ç¬¦" + +#: error.c:465 +msgid "bad jump" +msgstr "错误的跳转" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s:未绑定的å˜é‡" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\a 等待输入超时:自动注销\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "无法从 /dev/null é‡å®šå‘标准输入: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "æ—¶é—´æ ¼å¼: `%c': 无效的格å¼å­—符" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: 副进程 [%d:%s] ä»ç„¶å­˜åœ¨" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "管é“错误" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: 超出最大 eval 嵌套层数 (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s:超出最大 source 嵌套层数 (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s:超出最大函数嵌套层数 (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s:å—é™çš„: 无法在命令å中使用 `/'" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s:未找到命令" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s:%s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s:%s:解释器错误" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s:无法执行二进制文件: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "“%sâ€: 特殊内建" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "无法å¤åˆ¶æ–‡ä»¶æè¿°ç¬¦ %d 到文件æè¿°ç¬¦ %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "表达å¼é€’归层次越界" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "递归栈下溢" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "表达å¼ä¸­æœ‰è¯­æ³•错误" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "å°è¯•ç»™éžå˜é‡èµ‹å€¼" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "å˜é‡èµ‹å€¼ä¸­æœ‰è¯­æ³•错误" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "除以 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "错误:表达å¼èµ‹å€¼ç¬¦å·é”™è¯¯" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "æ¡ä»¶è¡¨è¾¾å¼éœ€è¦ `:'" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "指数å°äºŽ 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "预增符或预å‡ç¬¦åŽåº”跟有标识符" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "缺少“)â€" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "语法错误: éœ€è¦æ“作数" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "语法错误: 无效的算术è¿ç®—符" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s:%s (é”™è¯¯ç¬¦å·æ˜¯ \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "无效的算术进制" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s:无效的行数" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "数值太大ä¸å¯ä¸ºç®—术进制的基" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s:表达å¼é”™è¯¯\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: 无法访问父目录" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "无法为文件æè¿°ç¬¦ %d é‡ç½®nodelay模å¼" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "无法从文件æè¿°ç¬¦ %d 为 bash 的输入获å–一个新的文件æè¿°ç¬¦" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: å·²ç»å­˜åœ¨æ–°çš„æ–‡ä»¶æè¿°ç¬¦ %d 的缓冲区" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: 进程组管é“" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "å‰åˆ† (fork) å‡ºçš„çš„è¿›ç¨‹å· %d 出现在è¿è¡Œä¸­çš„任务 %d 中" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "删除进程组 %2$ld ä¸­å·²åœæ­¢çš„任务 %1$d" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: è¿›ç¨‹å· %5ld(%s) æ ‡æ³¨ä¸ºä»æ´»ç€" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: 无此进程å·" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "ä¿¡å· %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "已完æˆ" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "å·²åœæ­¢" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "å·²åœæ­¢(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "è¿è¡Œä¸­" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "已完æˆ(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "退出 %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "未知状æ€" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(核心已转储)" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (工作目录: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "å­è¿›ç¨‹ setpgid (%ld 到 %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: è¿›ç¨‹å· %ld 䏿˜¯å½“å‰ shell çš„å­è¿›ç¨‹" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wiat_for: 没有进程 %ld 的记录" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: 任务 %d å·²åœæ­¢" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s:无此任务" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s:任务已ç»ç»ˆæ­¢" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s:任务 %d 已在åŽå°" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: 打开 WNOHANG 以é¿å…æ— é™é˜»å¡ž" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s:行 %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (核心已转储)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(当å‰å·¥ä½œç›®å½•:%s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp 失败" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: åŽå°æ— ä»»åŠ¡æŽ§åˆ¶" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: 行规则" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "无法设定终端进程组(%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "æ­¤ shell 中无任务控制" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: 断言失败: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d:断言已修补\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "未知" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: ç©ºé—²é“¾è¡¨ä¸­çš„å—æŸå" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free:调用时用了已ç»é‡Šæ”¾çš„å—ä½œä¸ºå‚æ•°" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: 调用时用了未分é…çš„å—ä½œä¸ºå‚æ•°" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: 检测到下溢;mh_nbytes 越界" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: 检测到下溢;mh_nbytes 越界" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: 其实和末尾å—大å°ä¸ä¸€è‡´" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc:调用时用了未分é…çš„å—ä½œä¸ºå‚æ•°" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: 检测到下溢;mh_nbytes 越界" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: 检测到下溢;mh_nbytes 越界" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: 其实和末尾å—大å°ä¸ä¸€è‡´" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: 分é…表已ç»å……满了 FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p 在表中显示为已分é…?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p 在表中显示为已释放?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "无效的基" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s:未知主机" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s:无效的æœåŠ¡" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s:错误的网络路径声明" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "䏿”¯æŒç½‘络æ“作" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale:LC_ALL:无法改å˜åŒºåŸŸé€‰é¡¹ (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale:LC_ALL:无法改å˜åŒºåŸŸé€‰é¡¹ (%s):%s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale:%s:无法改å˜åŒºåŸŸé€‰é¡¹ (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale:%s:无法改å˜åŒºåŸŸé€‰é¡¹ (%s):%s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "您在 $_ 中有邮件" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "您在 $_ 中有新邮件" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "%s 中的邮件已被读过\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "语法错误:需è¦ç®—术表达å¼" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "è¯­æ³•é”™è¯¯ï¼šéœ€è¦ `;'" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "语法错误:`((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document:错误的指令类型 %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "ç«‹å³æ–‡æ¡£åœ¨ç¬¬ %d 行被文件结æŸç¬¦åˆ†éš” (需è¦â€œ%sâ€)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection:é‡å®šå‘指令“%dâ€è¶Šç•Œ" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "shell_getc:shell_input_line_size (%zu) 超过 SIZE_MAX (%lu):行被截断" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "è¶…å‡ºæœ€å¤§ç«‹å³æ–‡æ¡£æ•°é‡" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "寻找匹é…的“%câ€æ—¶é‡åˆ°äº†æœªé¢„期的文件结æŸç¬¦" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "寻找“]]â€æ—¶é‡åˆ°äº†æœªé¢„期的文件结æŸç¬¦" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­æœ‰è¯­æ³•错误:未预期的符å·â€œ%sâ€" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­æœ‰è¯­æ³•错误" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "未预期的符å·â€œ%s†,需è¦â€œ)â€" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "需è¦â€œ)â€" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "一元æ¡ä»¶è¿ç®—ç¬¦ä½¿ç”¨äº†æœªé¢„æœŸçš„å‚æ•°â€œ%sâ€" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "一元æ¡ä»¶è¿ç®—ç¬¦ä½¿ç”¨äº†æœªé¢„æœŸçš„å‚æ•°" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "未预期的符å·â€œ%sâ€ï¼Œéœ€è¦äºŒå…ƒæ¡ä»¶è¿ç®—符" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "需è¦äºŒå…ƒæ¡ä»¶è¿ç®—符" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "二元æ¡ä»¶è¿ç®—ç¬¦ä½¿ç”¨äº†æœªé¢„æœŸçš„å‚æ•°â€œ%sâ€" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "二元æ¡ä»¶è¿ç®—ç¬¦ä½¿ç”¨äº†æœªé¢„æœŸçš„å‚æ•°" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„期的符å·â€œ%câ€" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„期的符å·â€œ%sâ€" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„æœŸçš„ç¬¦å· %d" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "未预期的符å·â€œ%sâ€é™„近有语法错误" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "“%sâ€é™„近有语法错误" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "语法错误: 未预期的文件结尾" + +#: parse.y:6365 +msgid "syntax error" +msgstr "语法错误" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "使用 \"%s\" 退出 shell 。\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "寻找匹é…的“)â€æ—¶é‡åˆ°äº†æœªé¢„期的文件结æŸç¬¦" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "补全:未找到函数 “%sâ€" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s:疑似é‡è¯•循环" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s:空的补全声明" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: 错误的æ¡ä»¶è¿žæŽ¥ç¬¦ `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: 无效的文件æè¿°ç¬¦" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: 空的文件指针" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: `%c': 无效的格å¼å­—符" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "文件æè¿°ç¬¦è¶…出范围" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s:模糊的é‡å®šå‘" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s:无法覆盖已存在的文件" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s:å—é™çš„: 无法é‡å®šå‘输出" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "æ— æ³•ä¸ºç«‹å³æ–‡æ¡£åˆ›å»ºä¸´æ—¶æ–‡ä»¶: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s:无法将文件æè¿°ç¬¦èµ‹å€¼ç»™å˜é‡" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "æ²¡æœ‰ç½‘ç»œæ—¶ä¸æ”¯æŒ /dev/(tcp|udp)/host/port" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "é‡å®šå‘错误: 无法å¤åˆ¶æ–‡ä»¶æè¿°ç¬¦" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "无法找到 /tmp ,请创建ï¼" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp 必须为有效的目录å" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "åœ¨äº¤äº’å¼ shell 中将忽略美化输出模å¼" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: 无效的选项" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "无法将 uid 设为 %d: 有效 uid %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "无法将 gid 设为 %d: 有效 gid %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "无法å¯åŠ¨è°ƒè¯•å™¨ï¼›è°ƒè¯•æ¨¡å¼å·²ç¦ç”¨" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s:是一个目录" + +# 这个是查看用户的 /etc/passwd ä¿¡æ¯å¾—到的å字。既然是用户的å字,就å«åšæ— åæ°å§ã€‚ï¼ˆæœ‰ç‚¹æƒ³å†™â€œçº¢é¢†å·¾â€æ¥ç€ã€‚) +#: shell.c:1881 +msgid "I have no name!" +msgstr "æ— åæ°ï¼" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash,版本 %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"用法:\t%s [GNU 长选项] [选项] ...\n" +"\t%s [GNU 长选项] [选项] 脚本文件 ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU 长选项:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Shell 选项:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD 或 -c <命令> 或 -O \t\t(仅适åˆè°ƒç”¨)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s 或 -o <选项>\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "请输入`%s -c \"help set\"' 以获得关于 shell 选项的更多信æ¯\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "请输入 `%s -c help' 以获得关于 shell 内建命令的更多信æ¯.\n" + +# 写如何报告程åºé”™è¯¯çš„地方应该æåˆ°å¦‚何报告翻译问题。 +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "" +"请使用“bashbugâ€å‘½ä»¤æ¥æŠ¥å‘Šç¨‹åºé”™è¯¯ã€‚\n" +"请将翻译错误报告到 。\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "bash 首页:\n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "使用 GNU 软件的通用帮助:\n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: 无效的æ“作" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "伪信å·" + +#: siglist.c:50 +msgid "Hangup" +msgstr "挂断" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "中断" + +#: siglist.c:58 +msgid "Quit" +msgstr "退出" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "éžæ³•的指令" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "断点追踪/陷阱" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "放弃指令" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "模拟器陷阱指令" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "浮点数异常" + +#: siglist.c:86 +msgid "Killed" +msgstr "å·²æ€æ­»" + +#: siglist.c:90 +msgid "Bus error" +msgstr "总线错误" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "段错误" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "错误的系统调用" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "管é“破裂" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "闹钟" + +#: siglist.c:110 +msgid "Terminated" +msgstr "已终止" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "紧急 I/O 状况" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "å·²åœæ­¢(ä¿¡å·)" + +#: siglist.c:126 +msgid "Continue" +msgstr "ç»§ç»­" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "å­è¿›ç¨‹å·²æ­»æˆ–è€…åœæ­¢" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "å·²åœæ­¢(tty 输入)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "å·²åœæ­¢(tty 输出)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O 就绪" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU é™åˆ¶" + +#: siglist.c:154 +msgid "File limit" +msgstr "文件é™åˆ¶" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "报警(虚拟)" + +# Personally I treat this as something coming from alarm() by a profiler. +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "报警(分æž)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "窗å£å·²æ”¹å˜" + +#: siglist.c:170 +msgid "Record lock" +msgstr "记录é”" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "用户信å·1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "用户信å·2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT 待输入数æ®" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "å³å°†åœç”µ" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "系统å³å°†å´©æºƒ" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "è¿ç§»è¿›ç¨‹è‡³å¦ä¸€ä¸ª CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "编程错误" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "已授予 HFT 监视模å¼" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "已撤销 HFT 监视模å¼" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "å·²å®Œæˆ HFT 声音åºåˆ—" + +#: siglist.c:214 +msgid "Information request" +msgstr "ä¿¡æ¯è¯·æ±‚" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "æœªçŸ¥ä¿¡å· #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "错误的替æ¢: 在 %2$s 中没有闭åˆçš„ `%1$s'" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s:无法将链表赋值给数组æˆå‘˜" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "无法为进程替æ¢åˆ›å»ºç®¡é“" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "无法为进程替æ¢åˆ›å»ºå­è¿›ç¨‹" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "无法打开命åç®¡é“ %s 以读å–" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "无法打开命åç®¡é“ %s 进行写入" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "无法将命åç®¡é“ %s 作为文件æè¿°ç¬¦ %d å¤åˆ¶" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "命令替æ¢ï¼šå¿½ç•¥è¾“入中的 null 字节" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "无法为命令替æ¢åˆ›å»ºç®¡é“" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "无法为命令替æ¢åˆ›å»ºå­è¿›ç¨‹" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: 无法将管é“å¤åˆ¶ä¸ºæ–‡ä»¶æè¿°ç¬¦ 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s:无效的引用å˜é‡å" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s:无效的间接展开" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s:无效的å˜é‡å" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%sï¼šå‚æ•°æœªè®¾ç½®" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%sï¼šå‚æ•°ä¸ºç©ºæˆ–未设置" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s:å­ä¸²è¡¨è¾¾å¼ < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s:错误的替æ¢" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s:无法这样赋值" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "未æ¥ç‰ˆæœ¬çš„ shell 会强制估值为算术替æ¢" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "错误的替æ¢: 在 %s 中没有闭åˆçš„ \"`\"" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "无匹é…: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "需è¦å‚æ•°" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%sï¼šéœ€è¦æ•´æ•°è¡¨è¾¾å¼" + +#: test.c:265 +msgid "`)' expected" +msgstr "需è¦â€œ)â€" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "需è¦â€œ)â€ï¼Œå´æ‰¾åˆ° %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s:需è¦äºŒå…ƒè¡¨è¾¾å¼" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s:需è¦ä¸€å…ƒè¡¨è¾¾å¼" + +#: test.c:881 +msgid "missing `]'" +msgstr "缺少 `]'" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "è¯­æ³•é”™è¯¯ï¼šéœ€è¦ `;'" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "æ— æ•ˆçš„ä¿¡å·æ•°" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "trap handler: 超出最大的 trap handler 层次 (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: trap_list[%d] 中的错误值: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: ä¿¡å·å¤„ç†å™¨æ˜¯ SIG_DFLï¼Œé‡æ–°å‘é€ %d (%s) 给自己" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: é”™è¯¯çš„ä¿¡å· %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "“%sâ€å‡½æ•°å®šä¹‰å¯¼å…¥é”™è¯¯" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "shell 层次 (%d) 太高,é‡ç½®ä¸º 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: 当å‰ä½œç”¨åŸŸä¸­æ²¡æœ‰å‡½æ•°ä¸Šä¸‹æ–‡" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s:å˜é‡ä¸å¯èµ‹å€¼" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s:将整数赋值给å称引用" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: 当å‰ä½œç”¨åŸŸä¸­æ²¡æœ‰å‡½æ•°ä¸Šä¸‹æ–‡" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s çš„ exportstr 为空" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "%2$s çš„ exportstr 中有无效的字符 %1$d" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "%s çš„ exportstr 中没有“=â€" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: shell_variables çš„å¤´éƒ¨ä¸æ˜¯å‡½æ•°ä¸Šä¸‹æ–‡" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: 没有 global_variables 上下文" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: shell_variables çš„å¤´éƒ¨ä¸æ˜¯ä¸´æ—¶çŽ¯å¢ƒä½œç”¨åŸŸ" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s:%s:无法作为文件打开" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s:%s:追踪文件æè¿°ç¬¦çš„值无效" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s:%s:兼容版本数值越界" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "ç‰ˆæƒæ‰€æœ‰ (C) 2013 自由软件基金会." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"许å¯è¯ GPLv3+: GNU GPL 许å¯è¯ç¬¬ä¸‰ç‰ˆæˆ–者更新版本 \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash,版本 %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "本软件是自由软件,您å¯ä»¥è‡ªç”±åœ°æ›´æ”¹å’Œé‡æ–°å‘布。" + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "在法律许å¯çš„æƒ…å†µä¸‹ç‰¹æ­¤æ˜Žç¤ºï¼Œæœ¬è½¯ä»¶ä¸æä¾›ä»»ä½•æ‹…ä¿ã€‚" + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%sï¼šæ— æ³•åˆ†é… %lu 字节 (å·²åˆ†é… %lu 字节)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%sï¼šæ— æ³•åˆ†é… %lu 字节" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s:%s:%dï¼šæ— æ³•åˆ†é… %lu 字节 (å·²åˆ†é… %lu 字节)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s:%s:%dï¼šæ— æ³•åˆ†é… %lu 字节" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [åç§°[=值] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] åç§° [åç§° ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPSVX] [-m 键映射] [-f 文件å] [-q åç§°] [-u åç§°] [-r é”®åºåˆ—] [-x " +"é”®åºåˆ—:shell-命令] [é”®åºåˆ—:readline-函数 或 readline-命令]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell 内建 [傿•° ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [表达å¼]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [目录]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] 命令 [傿•° ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [åç§°[=值] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] åç§°[=值] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [option] åç§°[=值] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [傿•° ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [傿•° ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f 文件å] [åç§° ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [傿•° ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts 选项字符串 åç§° [傿•°]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a åç§°] [命令 [傿•° ...]] [é‡å®šå‘ ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e 编辑器å] [-lnr] [èµ·å§‹] [终结] 或 fc -s [模å¼=替æ¢ä¸²] [命令]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [任务声明]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [任务声明 ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p 路径å] [-dt] [åç§° ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [æ¨¡å¼ ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d åç§»é‡] [n] 或 history -anrw [文件å] 或 history -ps 傿•° " +"[傿•°...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [任务声明 ...] 或 jobs -x 命令 [傿•°]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [任务声明 ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s ä¿¡å·å£°æ˜Ž | -n ä¿¡å·ç¼–å· | -ä¿¡å·å£°æ˜Ž] è¿›ç¨‹å· | 任务声明 ... 或 kill -" +"l [ä¿¡å·å£°æ˜Ž]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let 傿•° [傿•° ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读å–字符数] [-N 读å–å­—" +"符数] [-p æç¤ºç¬¦] [-t è¶…æ—¶] [-u 文件æè¿°ç¬¦] [åç§° ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o 选项å] [--] [傿•° ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [åç§° ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [åç§°[=值] ...] 或 export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [åç§°[=值] ...] 或 readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source 文件å [傿•°]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". 文件å [傿•°]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [表达å¼]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ 傿•°... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[傿•°] ä¿¡å·å£°æ˜Ž ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] åç§° [åç§° ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [é™åˆ¶]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [模å¼]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [ç¼–å· ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [è¿›ç¨‹å· ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for åç§° [in è¯è¯­ ... ] ; do 命令; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( 表达å¼1; 表达å¼2; 表达å¼3 )); do 命令; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAME [in è¯è¯­ ... ;] do 命令; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] 管é“" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case è¯ in [æ¨¡å¼ [| 模å¼]...) 命令 ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while 命令; do 命令; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until 命令; do 命令; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [åç§°] 命令 [é‡å®šå‘]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function åç§° { 命令 ; } 或 name () { 命令 ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ 命令 ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( è¡¨è¾¾å¼ ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ è¡¨è¾¾å¼ ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - 一些 shell å˜é‡çš„åç§°å’Œå«ä¹‰" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | 目录]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [选项å ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] æ ¼å¼ [傿•°]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o 选项] [-A 动作] [-G 全局模å¼] [-W " +"è¯è¯­åˆ—表] [-F 函数] [-C 命令] [-X 过滤模å¼] [-P å‰ç¼€] [-S åŽç¼€] [åç§° ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o 选项] [-A 动作] [-G 全局模å¼] [-W è¯è¯­åˆ—表] [-" +"F 函数] [-C 命令] [-X 过滤模å¼] [-P å‰ç¼€] [-S åŽç¼€] [è¯è¯­]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o 选项] [-DEI] [åç§° ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d 分隔符] [-n 计数] [-O èµ·å§‹åºå·] [-s 计数] [-t] [-u fd] [-C 回调] " +"[-c é‡å­] [数组]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d 定界符] [-n 计数] [-O èµ·å§‹åºå·] [-s 计数] [-t] [-u fd] [-C 回" +"è°ƒ] [-c é‡å­] [数组]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"定义或显示别å。\n" +" \n" +" ä¸å¸¦å‚数时,`alias' 以å¯é‡ç”¨çš„æ ¼å¼\n" +" `alias åç§°=值'在标准输出设备上打å°åˆ«å列表。\n" +" \n" +" å¦åˆ™ï¼Œå¯¹äºŽæ¯ä¸ªç»™å®šå€¼çš„å称定义一个别å。\n" +" 值末尾的空格会使下一个è¯è¢«æ£€æµ‹ä½œä¸ºåˆ«å替æ¢å±•开。\n" +" \n" +" 选项:\n" +" -p\t以å¯é‡ç”¨çš„æ ¼å¼æ‰“å°æ‰€æœ‰çš„已定义的别å\n" +" \n" +" 退出状æ€ï¼š\n" +" 除éžä¸€ä¸ªæ²¡æœ‰å®šä¹‰çš„åå­—è¢«ä½œä¸ºå‚æ•°æä¾›ï¼Œå¦åˆ™ alias \n" +" 返回值为真。" + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"从别å定义列表中删除æ¯ä¸€ä¸ªâ€œåå­—â€ã€‚\n" +" \n" +" 选项:\n" +" -a\t删除所有的别å定义\n" +" \n" +" 返回æˆåŠŸï¼Œé™¤éžâ€œåå­—â€ä¸æ˜¯ä¸€ä¸ªå·²å­˜åœ¨çš„别å。" + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"设定 Readline 键绑定和å˜é‡ã€‚\n" +" \n" +" 绑定一个键åºåˆ—到一个 Readline 函数或者å®ï¼Œæˆ–者设定一个\n" +" Readline å˜é‡ã€‚éžé€‰é¡¹å‚数的语法和 ~/.inputrc 文件中的等\n" +" åŒï¼Œä½†æ˜¯å¿…é¡»ä½œä¸ºä¸€ä¸ªå‚æ•°è¢«ä¼ é€’,\n" +" 例如,bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" 选项:\n" +" -m 键映射 在此命令执行过程中使用指定的键映射。\n" +" å¯è¢«æŽ¥å—的键映射å字有 emacsã€emacs-standardã€emacs-" +"metaã€\n" +" emacs-ctlxã€viã€vi-moveã€vi-commandã€å’Œ vi-insert。\n" +" -l 列出函数å称。\n" +" -P 列出函数å称和绑定。\n" +" -p 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出函数å称和绑定。\n" +" -S 列出å¯ä»¥å¯åЍå®çš„é”®åºåˆ—以åŠå®ƒä»¬çš„值\n" +" -s 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出å¯ä»¥å¯åЍå®çš„键以åŠå®ƒä»¬çš„" +"值。\n" +" -V 列出å˜é‡åæˆå’Œå®ƒä»¬çš„值\n" +" -v 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出å˜é‡çš„å称和它们的值\n" +" -q å‡½æ•°å æŸ¥è¯¢æŒ‡å®šçš„函数å¯ä»¥ç”±å“ªäº›é”®å¯åŠ¨ã€‚\n" +" -u 函数å å绑定所有绑定至指定函数的键。\n" +" -r é”®åºåˆ— å–æ¶ˆæŒ‡å®šé”®åºåˆ—的绑定。\n" +" -f 文件å 从指定文件中读å–键绑定。\n" +" -x é”®åºåˆ—:shell命令\t当指定的键åºåˆ—被输入时,执行指定的 shell 命令。\n" +" -X 以å¯è¢«é‡ç”¨çš„å½¢å¼åˆ—出用 -x 绑定的键åºåˆ—和命令。\n" +" \n" +" 退出状æ€ï¼š\n" +" 除éžä½¿ç”¨äº†æ— æ³•辨认的选项或者错误å‘生,å¦åˆ™è¿”回0." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"退出 forã€while 或 until 循环\n" +" \n" +" 退出一个 FORã€WHILE 或 UNTIL 循环。如果指定了N,则跳出Né‡\n" +" 循环\n" +" \n" +" 退出状æ€ï¼š\n" +" 退出状æ€ä¸º0é™¤éž N ä¸å¤§äºŽæˆ–等于 1。" + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"ç»§ç»­ forã€while 或 until 循环。\n" +" \n" +" ç»§ç»­å½“å‰ FORã€WHILE 或 UNTIL 循环的下一步。\n" +" 如果指定了 N, 则继续当å‰çš„第 N é‡å¾ªçŽ¯ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 退出状æ€ä¸º 0 é™¤éž N ä¸å¤§äºŽæˆ–等于1。" + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"执行 shell 内建。\n" +" \n" +" 另傿•° ARGs 执行 SHELL-BUILTIN 内建,并且ä¸åšå‘½ä»¤æŸ¥è¯¢\n" +" 在希望以 shell å‡½æ•°çš„å½¢å¼æ¥é‡æ–°å®žçް shell 内建,\n" +" 并且希望在函数之内执行该 shell 内建的情况下有用处。\n" +" \n" +" 退出状æ€ï¼š\n" +" 以 SHELL-BUILTIN 内建的退出状æ€ä¸ºå‡†ï¼Œæˆ–者如果 SHELL-BUILTIN 䏿˜¯ä¸€ä¸ª\n" +" shell 内建时为å‡ã€‚" + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"返回当å‰å­è°ƒç”¨çš„上下文。\n" +" \n" +" ä¸å¸¦æœ‰ EXPR 时,返回 \"$line $filename\"。带有 EXPR 时,返回\n" +" \"$line $subroutine $filename\";这个é¢å¤–的信æ¯å¯ä»¥è¢«ç”¨äºŽæä¾›\n" +" 栈追踪。\n" +" \n" +" EXPR 的值 显示了到当å‰è°ƒç”¨å¸§éœ€è¦å›žåŽ»å¤šå°‘ä¸ªè°ƒç”¨å¸§ï¼›é¡¶éƒ¨å¸§\n" +" 是第 0 帧。\n" +" \n" +" 退出状æ€ï¼š\n" +" é™¤éž shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ª shell 函数或者 EXPR 无效,å¦åˆ™è¿”回结\n" +" 果为0。" + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"æ”¹å˜ shell 工作目录。\n" +" \n" +" 改å˜å½“å‰ç›®å½•至 DIR 目录。默认的 DIR 目录是 shell å˜é‡ HOME\n" +" 的值。\n" +" \n" +" å˜é‡ CDPATH å®šä¹‰äº†å«æœ‰ DIR 的目录的æœç´¢è·¯å¾„,其中ä¸åŒçš„目录åç§°ç”±å†’å· (:)" +"分隔。\n" +" 一个空的目录å称表示当å‰ç›®å½•。如果è¦åˆ‡æ¢åˆ°çš„ DIR ç”±æ–œæ  (/) 开头,则 " +"CDPATH\n" +" ä¸ä¼šç”¨ä¸Šå˜é‡ã€‚\n" +" \n" +" 如果路径找ä¸åˆ°ï¼Œå¹¶ä¸” shell 选项 `cdable_vars' è¢«è®¾å®šï¼Œåˆ™å‚æ•°è¯è¢«å‡å®šä¸ºä¸€" +"个\n" +" å˜é‡å。如果该å˜é‡æœ‰å€¼ï¼Œåˆ™å®ƒçš„值被当作 DIR 目录。\n" +" \n" +" 选项:\n" +" -L\t强制跟éšç¬¦å·é“¾æŽ¥: åœ¨å¤„ç† `..' 之åŽè§£æž DIR 中的符å·é“¾æŽ¥ã€‚\n" +" -P\t使用物ç†ç›®å½•结构而ä¸è·Ÿéšç¬¦å·é“¾æŽ¥: åœ¨å¤„ç† `..' 之å‰è§£æž DIR 中的符" +"å·é“¾æŽ¥ã€‚\n" +" -e\t如果使用了 -P 傿•°ï¼Œä½†ä¸èƒ½æˆåŠŸç¡®å®šå½“å‰å·¥ä½œç›®å½•时,返回éžé›¶çš„返回" +"值。\n" +" -@\tåœ¨æ”¯æŒæ‹“展属性的系统上,将一个有这些属性的文件当作有文件属性的目" +"录。\n" +" \n" +" 默认情况下跟éšç¬¦å·é“¾æŽ¥ï¼Œå¦‚åŒæŒ‡å®š `-L'。\n" +" `..' 使用移除å‘å‰ç›¸é‚»ç›®å½•åæˆå‘˜ç›´åˆ° DIR 开始或一个斜æ çš„æ–¹å¼å¤„ç†ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 如果目录改å˜ï¼Œæˆ–在使用 -P 选项时 $PWD 修改æˆåŠŸæ—¶è¿”å›ž 0,å¦åˆ™éžé›¶ã€‚" + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"打å°å½“å‰å·¥ä½œç›®å½•çš„å字。\n" +" \n" +" 选项:\n" +" -L\tæ‰“å° $PWD å˜é‡çš„值,如果它包å«äº†å½“å‰çš„工作目录\n" +" -P\t打å°å½“å‰çš„物ç†è·¯å¾„,ä¸å¸¦æœ‰ä»»ä½•的符å·é“¾æŽ¥\n" +" \n" +" 默认情况下,`pwd' 的行为和带 `-L' 选项一致\n" +" \n" +" 退出状æ€ï¼š\n" +" 除éžä½¿ç”¨äº†æ— æ•ˆé€‰é¡¹æˆ–者当å‰ç›®å½•ä¸å¯è¯»ï¼Œå¦åˆ™è¿”回状æ€ä¸º0。" + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"空的命令。\n" +" \n" +" 没有效果; 此命令ä¸åšä»»ä½•æ“作。\n" +" \n" +" 退出状æ€ï¼š\n" +" 总是æˆåŠŸã€‚" + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"返回一个æˆåŠŸç»“æžœã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 总是æˆåŠŸã€‚" + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"è¿”å›žä¸€ä¸ªä¸æˆåŠŸçš„ç»“æžœã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 总是失败。" + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"执行一个简å•命令或者显示命令的相关信æ¯ã€‚\n" +" \n" +" 带 ARGS 傿•°è¿è¡Œ COMMAND 命令且抑制 shell 函数查询,或显示\n" +" 指定的 COMMAND 命令的信æ¯ã€‚å¯ä»¥åœ¨å­˜åœ¨ç›¸åŒå称的函数定义的\n" +" 情况下用于å¯åЍç£ç›˜ä¸Šçš„命令。\n" +" \n" +" 选项:\n" +" -p\t使用 PATH å˜é‡çš„ä¸€ä¸ªé»˜è®¤å€¼ä»¥ç¡®ä¿æ‰€æœ‰çš„æ ‡å‡†å·¥å…·éƒ½èƒ½è¢«æ‰¾åˆ°ã€‚\n" +" -v\tæ‰“å° COMMAND 命令的æè¿°ï¼Œå’Œ `type' 内建相似\n" +" -V\tæ‰“å°æ¯ä¸ª COMMAND 命令的详细æè¿°\n" +" \n" +" 退出状æ€\n" +" 返回 COMMAND 命令的返回状æ€ï¼Œæˆ–者当找ä¸åˆ° COMMAND 命令时失败。" + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"设定å˜é‡å€¼å’Œå±žæ€§ã€‚\n" +" \n" +" 声明å˜é‡å¹¶ä¸”赋予它们属性。如果没有给定å称,\n" +" 则显示所有å˜é‡çš„属性和值。\n" +" \n" +" 选项:\n" +" -f\té™åˆ¶åŠ¨ä½œæˆ–æ˜¾ç¤ºä¸ºä»…å‡½æ•°å称和定义\n" +" -F\té™åˆ¶ä»…显示函数åç§° (以åŠè°ƒè¯•时显示行å·å’Œæºæ–‡ä»¶å)\n" +" -g\t当用于 shell 函数内时创建全局å˜é‡; å¦åˆ™å¿½ç•¥\n" +" -p\t显示æ¯ä¸ª NAME å˜é‡çš„属性和值\n" +" \n" +" 设定属性的选项:\n" +" -a\t使 NAME æˆä¸ºä¸‹æ ‡æ•°ç»„ (如果支æŒ)\n" +" -A\t使 NAME æˆä¸ºå…³è”数组 (如果支æŒ)\n" +" -i\t使 NAME 带有 `integer' (æ•´æ•°)属性\n" +" -l\tå°† NAME 在赋值时转为å°å†™\n" +" -n\t使 NAME æˆä¸ºæŒ‡å‘一个以其值为åç§°çš„å˜é‡çš„引用\n" +" -r\tå°† NAME å˜ä¸ºåªè¯»\n" +" -t\t使 NAME 带有 `trace' (追踪)属性\n" +" -u\tå°†æ¯ä¸ª NAME 在赋值时转为大写\n" +" -x\tå°† NAME 导出\n" +" \n" +" 用 `+' 代替 `-' 会关闭指定选项。\n" +" \n" +" 带有整数属性的å˜é‡åœ¨èµ‹å€¼æ—¶å°†ä½¿ç”¨ç®—术估值(è§\n" +" `let' 命令)\n" +" \n" +" 在函数中使用时,`declare' 使 NAME æˆä¸ºæœ¬åœ°å˜é‡ï¼Œå’Œ `local'\n" +" 命令一致。`-g' 选项抑制此行为。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžæä¾›äº†æ— æ•ˆé€‰é¡¹æˆ–è€…å‘生å˜é‡èµ‹å€¼é”™è¯¯ã€‚" + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"设置å˜é‡çš„值和属性。\n" +" \n" +" `declare' 的等价形å¼ã€‚å‚è§ `help declare'。" + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"定义本地å˜é‡ã€‚\n" +" \n" +" 创建一个以 NAME 为åç§°çš„å˜é‡ï¼Œå¹¶ä¸”å°† VALUE 赋值给它。\n" +" OPTION 选项å¯ä»¥æ˜¯ä»»ä½•能被 `declare' 接å—的选项。\n" +" \n" +" 本地å˜é‡åªèƒ½åœ¨å‡½æ•°å†…部被使用,它们åªèƒ½åœ¨å®šä¹‰å®ƒä»¬çš„函数内\n" +" 部以åŠå­å‡½æ•°ä¸­å¯è§ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项ã€å‘生了赋值错误或者 shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ªå‡½" +"数。" + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"将傿•°å†™åˆ°æ ‡å‡†è¾“出。\n" +" \n" +" 在标准输出上,显示用空格分割的 ARG 傿•°åŽè·Ÿä¸€ä¸ªæ¢è¡Œã€‚\n" +" \n" +" 选项:\n" +" -n\tä¸è¦è¿½åŠ æ¢è¡Œ\n" +" -e\tå¯ç”¨ä¸‹åˆ—åæ–œæ è½¬ä¹‰çš„解释\n" +" -E\t显å¼åœ°æŠ‘åˆ¶å¯¹äºŽåæ–œæ è½¬ä¹‰çš„解释\n" +" \n" +" `echo' å¯¹ä¸‹åˆ—åæ–œæ å­—符进行转义:\n" +" \a\t警告(å“铃)\n" +" \\b\t退格\n" +" \\c\t抑制更多的输出\n" +" \\e\t转义字符\n" +" \\f\tæ¢é¡µå­—符\n" +" \\n\tæ¢è¡Œ\n" +" \\r\t回车\n" +" \\t\t横å‘制表符\n" +" \\v\t纵å‘制表符\n" +" \\\\\tåæ–œæ \n" +" \\0nnn\t以 NNN(八进制)为 ASCII ç çš„字符。NNN å¯ä»¥æ˜¯ 0 到 3 个八进制" +"ä½\n" +" \\xHH\t以 HH(å六进制)为值的八比特字符。HH å¯ä»¥æ˜¯ä¸€ä¸ªæˆ–两个å六进制" +"ä½\n" +" \\uHHHH\t以 HHHH(å六进制)为值的 Unicode 字符。HHHH å¯ä»¥æ˜¯ä¸€ä¸ªåˆ°\n" +" \t\t四个å六进制ä½ã€‚\n" +" \\UHHHHHHHH 以 HHHHHHHH(å六进制)为值的 Unicode 字符。\n" +" \t\tHHHHHHHH å¯ä»¥æ˜¯ä¸€åˆ°å…«ä¸ªå六进制ä½ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸé™¤éžæœ‰å†™é”™è¯¯å‘生。" + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"写傿•°è‡³æ ‡å‡†è¾“出设备。\n" +" \n" +" 在标准输出设备上显示 ARGs 傿•°å’Œä¸€ä¸ªæ¢è¡Œã€‚\n" +" \n" +" 选项:\n" +" -n\tä¸é™„加æ¢è¡Œ\n" +" \n" +" 退出状æ€ï¼š\n" +" 除éžå†™é”™è¯¯å‘生,å¦åˆ™è¿”回æˆåŠŸã€‚" + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"å¯ç”¨å’Œç¦ç”¨ shell 内建。\n" +" \n" +" å¯ç”¨å’Œç¦ç”¨ shell 的内建命令。ç¦ç”¨ä½¿æ‚¨èƒ½å¤Ÿæ‰§è¡Œä¸€ä¸ªå’Œå†…建\n" +" 命令åŒåçš„ç£ç›˜ä¸Šçš„命令,而无须使用完整的路径å。\n" +" \n" +" \n" +" 选项:\n" +" -a\t打å°ä¸€ä¸ªå†…建的列表,并显示其中æ¯ä¸€ä¸ªæ˜¯å¦å¯ç”¨\n" +" -n\tç¦ç”¨æ¯ä¸€ä¸ª NAME 内建或者显示一个被ç¦ç”¨çš„内建的列表\n" +" -p\t以å¯é‡ç”¨çš„æ ¼å¼æ‰“å°ä¸€ä¸ªå†…建的列表\n" +" -s\t仅打å°Posix `special' 内建的åç§°\n" +" \n" +" 控制动æ€åŠ è½½çš„é€‰é¡¹ï¼š\n" +" -f\t从共享对象 FILENAME 文件中加载 NAME 内建\n" +" -d\t删除以 -f 选项加载的内建\n" +" \n" +" ä¸å¸¦é€‰é¡¹æ—¶ï¼Œæ¯ä¸€ä¸ª NAME 内建都被å¯ç”¨ã€‚\n" +" \n" +" 如果è¦ä½¿ç”¨ $PATH 中找到的 `test' è€Œä¸æ˜¯ shell 内建的版本,\n" +" 输入 `enable -n test'。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éž NAME 䏿˜¯ä¸€ä¸ª shell 内建或者有错误å‘生。" + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"将傿•°ä½œä¸º shell 命令执行。\n" +" \n" +" å°† ARGs åˆæˆä¸€ä¸ªå­—符串,用结果作为 shell 的输入,\n" +" 并且执行得到的命令。\n" +" \n" +" 退出状æ€ï¼š\n" +" 以命令的状æ€é€€å‡ºï¼Œæˆ–者在命令为空的情况下返回æˆåŠŸã€‚" + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"è§£æžé€‰é¡¹å‚数。\n" +" \n" +" getopts 被 shell 过程用于解æžå¯å®šä½çš„傿•°ä½œä¸ºé€‰é¡¹ã€‚\n" +" \n" +" \n" +" OPTSTRING 字符串包å«å¾…识别的选项字æ¯ï¼›å¦‚果一个字æ¯åŽé¢è·Ÿ\n" +" ç€åˆ†å·ï¼Œåˆ™è¯¥é€‰é¡¹éœ€è¦ä¸€ä¸ªå‚æ•°ï¼Œè€Œè¯¥å‚æ•°åº”用空格与选项分开。\n" +" \n" +" \n" +" æ¯æ¬¡å¯åŠ¨æ—¶ï¼Œgetopts 会将下一个选项放到 shell å˜é‡ $name\n" +" 中,如果 name å˜é‡ä¸å­˜åœ¨åˆ™å…ˆå°†å…¶åˆå§‹åŒ–,而下一个待处\n" +" ç†çš„傿•°åºå·æ”¾å…¥ shell å˜é‡ OPTIND 中。OPTIND å˜é‡åœ¨æ¯\n" +" 次 shell 或者 shell 脚本å¯åŠ¨æ—¶éƒ½è¢«åˆå§‹åŒ–为1。当一个选项è¦\n" +" æ±‚æœ‰ä¸€ä¸ªå‚æ•°æ—¶ï¼Œgetopts 将傿•°æ”¾å…¥ shell å˜é‡ OPTARG\n" +" 中。\n" +" \n" +" getopts æœ‰ä¸¤ç§æŠ¥å‘Šé”™è¯¯çš„æ–¹æ³•ã€‚å¦‚æžœ OPTSTRING å˜é‡çš„第\n" +" 一个字符是冒å·ï¼Œgetopts ä½¿ç”¨æ²‰é»˜é”™è¯¯æŠ¥å‘Šã€‚åœ¨è¿™ç§æ¨¡å¼\n" +" 下,ä¸ä¼šæ‰“å°é”™è¯¯æ¶ˆæ¯ã€‚如果看到了一个无效的选项,\n" +" getopts 将找到的选项字符放至 OPTARG å˜é‡ä¸­ã€‚如果一个必\n" +" 须的选项没有找到,getopts 放一个 ':' 到 NAME å˜é‡ä¸­å¹¶ä¸”设\n" +" ç½® OPTARG å˜é‡ä¸ºæ‰¾åˆ°çš„选项字符。如果 getopts ä¸åœ¨æ²‰é»˜æ¨¡\n" +" å¼ä¸­ï¼Œå¹¶ä¸”é‡åˆ°äº†ä¸€ä¸ªæ— æ•ˆçš„选项,getopts 放置一个 '?' 到 NAME \n" +" å˜é‡ä¸­å¹¶ä¸”å–æ¶ˆè®¾å®š OPTARGå˜é‡ã€‚如果必须的选项没有找到,\n" +" 一个'?'会被放入 NAMEå˜é‡ä¸­ï¼ŒOPTARG å°†è¢«å–æ¶ˆè®¾å®šï¼Œå¹¶ä¸”会\n" +" 打å°ä¸€ä¸ªè¯Šæ–­ä¿¡æ¯ã€‚\n" +" \n" +" 如果 shell å˜é‡ OPTERR 的值为0,getopts ç¦ç”¨\n" +" 错误信æ¯çš„æ‰“å°ï¼Œå³ä½¿ OPTSTRING å˜é‡çš„ç¬¬ä¸€ä¸ªå­—ç¬¦ä¸æ˜¯ä¸€\n" +" 个冒å·ã€‚OPTERR 的默认值为1.\n" +" \n" +" getopts 通常解æžå¯å®šä½çš„傿•°($0 - $9),ä¸è¿‡å¦‚æžœæä¾›äº†\n" +" æ›´å¤šçš„å‚æ•°ï¼Œå®ƒä»¬å而会被解æžã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 如果一个选项被找到则返回æˆåŠŸï¼›å¦‚æžœé‡åˆ°äº†é€‰é¡¹çš„结尾或者\n" +" 有错误å‘生则返回失败。" + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"ä½¿ç”¨æŒ‡å®šå‘½ä»¤æ›¿æ¢ shell。\n" +" \n" +" 执行 COMMAND å‘½ä»¤ï¼Œä»¥æŒ‡å®šçš„ç¨‹åºæ›¿æ¢è¿™ä¸ª shell。\n" +" ARGUMENTS 傿•°æˆä¸º COMMANDå‘½ä»¤çš„å‚æ•°ã€‚如果\n" +" 没有指定COMMAND 命令,则任何的é‡å®šå‘åœ¨å½“å‰ shell 中生效。\n" +" \n" +" 选项:\n" +" -a åç§°\t作为第0ä¸ªå‚æ•°ä¼ é€’ç»™ COMMAND 命令\n" +" -c\t\t在一个空环境中执行 COMMAND 命令\n" +" -l\t\t在COMMAND 命令的第0ä¸ªå‚æ•°ä¸­åŠ ä¸€ä¸ªçŸ­çº¿\n" +" \n" +" 如果命令ä¸èƒ½è¢«æ‰§è¡Œï¼Œåˆ™é€€å‡ºä¸€ä¸ªéžäº¤äº’å¼çš„ shell,除éž\n" +" shell 选项`execfail' å·²ç»è®¾å®šã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸé™¤éž COMMAND 命令没有找到或者出现一个é‡å®šå‘错误。" + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"退出shell。\n" +" \n" +" ä»¥çŠ¶æ€ N 退出 shell。 如果 N 被çœç•¥ï¼Œåˆ™é€€å‡ºçжæ€\n" +" 为最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的退出状æ€ã€‚" + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"退出一个登录 shell.\n" +" \n" +" ä»¥çŠ¶æ€ N 退出一个登录 shell。如果ä¸åœ¨ç™»å½• shell 中执行,则\n" +" 返回一个错误。" + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"从历å²åˆ—表中显示或者执行命令。\n" +" \n" +" fc 被用于从历å²åˆ—è¡¨ä¸­åˆ—å‡ºæˆ–è€…é‡æ–°ç¼–辑并执行命令。\n" +" FIRST å’Œ LAST å˜é‡å¯ä»¥æ˜¯æ•°å­—用于指定范围,或者 FIRST å¯ä»¥æ˜¯\n" +" 字符串,æ„味ç€ä»¥è¿™ä¸ªå­—符串打头的最近的一个命令。\n" +" \n" +" \n" +" 选项:\n" +" -e ENAME\t选择使用哪个编辑器。默认的是 FCEDIT, ç„¶åŽæ˜¯ EDITOR,\n" +" \t\tç„¶åŽæ˜¯ vi\n" +" -l \t列出行而ä¸ç¼–辑\n" +" -n\t列举时çœç•¥è¡Œå·\n" +" -r\tå转行的顺åº(最新行在å‰)\n" +" \n" +" 用 `fc -s [模å¼=æ›¿æ¢ ...] [命令]' 的格å¼ï¼ŒCOMMAND 命令会在 OLD=NEW\n" +" 替æ¢ä¹‹åŽè¢«é‡æ–°æ‰§è¡Œã€‚\n" +" \n" +" r='fc -s' 是一个有用的别å,这样的è¯è¾“å…¥ `r cc'会执行最åŽä¸€ä¸ªä»¥ `cc'\n" +" 开头的命令,输入 `r'ä¼šé‡æ–°æ‰§è¡Œæœ€åŽä¸€ä¸ªå‘½ä»¤ã€‚\n" +" \n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œæˆ–è€…æ‰§è¡Œçš„å‘½ä»¤çš„çŠ¶æ€ï¼›å¦‚果错误å‘生则返回éžé›¶ã€‚" + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"将任务移至å‰å°ã€‚\n" +" \n" +" 将以 JOB_SPEC 标识的任务放至å‰å°ï¼Œä½¿å…¶æˆä¸º\n" +" 当å‰ä»»åŠ¡ã€‚å¦‚æžœ JOB_SPEC ä¸å­˜åœ¨ï¼Œshell 观念中的当å‰ä»»åŠ¡ \n" +" 将被使用。\n" +" \n" +" 退出状æ€ï¼š\n" +" 放至å‰å°çš„命令状æ€ï¼Œæˆ–者当错误å‘生时为失败。" + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"移动任务至åŽå°ã€‚\n" +" \n" +" å°† JOB_SPEC 标识的任务放至åŽå°ï¼Œå°±åƒå®ƒä»¬\n" +" 是带 `&' å¯åŠ¨çš„ä¸€æ ·ã€‚å¦‚æžœ JOB_SPEC ä¸å­˜åœ¨ï¼Œshell 观念中的\n" +" 当å‰ä»»åŠ¡å°†ä¼šè¢«ä½¿ç”¨ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸé™¤éžä»»åŠ¡ç®¡ç†æ²¡æœ‰å¯ç”¨æˆ–者错误å‘生。" + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"è®°ä½æˆ–显示程åºä½ç½®ã€‚\n" +" \n" +" ç¡®å®šå¹¶è®°ä½æ¯ä¸€ä¸ªç»™å®š NAME å称的命令的完整路径。\n" +" å¦‚æžœä¸æä¾›å‚æ•°ï¼Œåˆ™æ˜¾ç¤ºå·²ç»è®°ä½çš„命令的信æ¯ã€‚\n" +" \n" +" 选项:\n" +" -d\t\t忘记æ¯ä¸€ä¸ªå·²ç»è®°ä½çš„ NAME çš„ä½ç½®\n" +" -l\t\t以å¯ä½œä¸ºè¾“å…¥é‡ç”¨çš„æ ¼å¼æ˜¾ç¤º\n" +" -p pathname\t使用 pathname 路径作为 NAME 命令的全路径\n" +" -r\t\t忘记所有记ä½çš„ä½ç½®\n" +" -t\t\t打å°è®°ä½çš„æ¯ä¸€ä¸ª NAME åç§°çš„ä½ç½®ï¼Œå¦‚果指定了多个\n" +" \t\tNAME å称,则æ¯ä¸ªä½ç½®å‰é¢ä¼šåŠ ä¸Šç›¸åº”çš„ NAME åç§°\n" +" \t\t\n" +" 傿•°ï¼š\n" +" NAME\t\tæ¯ä¸ª NAME å称会在 $PATH 路径å˜é‡ä¸­è¢«æœç´¢ï¼Œå¹¶ä¸”添加到记ä½çš„命" +"令\n" +" 列表中。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éž NAME 命令没有找到或者使用了无效的选项。" + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"显示内建命令的相关信æ¯ã€‚\n" +" \n" +" 显示内建命令的简略信æ¯ã€‚如果指定了 PATTERN 模å¼ï¼Œ\n" +" ç»™å‡ºæ‰€æœ‰åŒ¹é… PATTERN 模å¼çš„命令的详细帮助,å¦åˆ™æ‰“\n" +" å°ä¸€ä¸ªå¸®åŠ©ä¸»é¢˜åˆ—è¡¨\n" +" \n" +" 选项:\n" +" -d\t输出æ¯ä¸ªä¸»é¢˜çš„简短æè¿°\n" +" -m\t以伪 man æ‰‹å†Œçš„æ ¼å¼æ˜¾ç¤ºä½¿ç”¨æ–¹æ³•\n" +" -s\t为æ¯ä¸€ä¸ªåŒ¹é… PATTERN 模å¼çš„主题仅显示一个用法\n" +" \t简介\n" +" \n" +" 傿•°ï¼š\n" +" PATTERN\t指定帮助主题的模å¼\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžæœªæ‰¾åˆ° PATTERN æ¨¡å¼æ²¡æœ‰æ‰¾åˆ°æˆ–者使用了无效选项。" + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"显示或æ“纵历å²åˆ—表。\n" +" \n" +" å¸¦è¡Œå·æ˜¾ç¤ºåކå²åˆ—表,将æ¯ä¸ªè¢«ä¿®æ”¹çš„æ¡ç›®åŠ ä¸Š `*' å‰ç¼€ã€‚\n" +" 傿•° N 会仅列出最åŽçš„ N 个æ¡ç›®ã€‚\n" +" \n" +" 选项:\n" +" -c\t删除所有æ¡ç›®ä»Žè€Œæ¸…空历å²åˆ—表。\n" +" -d åç§»é‡\t从指定ä½ç½®åˆ é™¤åކå²åˆ—表。负åç§»é‡å°†ä»Žåކ岿¡ç›®æœ«å°¾\n" +" \t\t开始计数\n" +" \n" +" -a\t将当å‰ä¼šè¯çš„历å²è¡Œè¿½åŠ åˆ°åŽ†å²æ–‡ä»¶ä¸­\n" +" -n\tä»ŽåŽ†å²æ–‡ä»¶ä¸­è¯»å–所有未被读å–的行\n" +" \t\t并且将它们附加到历å²åˆ—表\n" +" -r\t读å–åŽ†å²æ–‡ä»¶å¹¶å°†å†…容追加到历å²åˆ—表中\n" +" -w\t将当å‰åކå²å†™å…¥åˆ°åކ岿–‡ä»¶ä¸­\n" +" \n" +" -p\t对æ¯ä¸€ä¸ª ARG 傿•°å±•开历å²å¹¶æ˜¾ç¤ºç»“果,而ä¸å­˜å‚¨åˆ°åކå²åˆ—表中\n" +" -s\t以啿¡è®°å½•追加 ARG 到历å²åˆ—表中\n" +" \n" +" 如果给定了 FILENAME 文件åï¼Œåˆ™å®ƒå°†è¢«ä½œä¸ºåŽ†å²æ–‡ä»¶ã€‚å¦åˆ™\n" +" 如果 $HISTFILE å˜é‡æœ‰å€¼çš„è¯ä½¿ç”¨ä¹‹ï¼Œä¸ç„¶ä½¿ç”¨ ~/.bash_history 文件。\n" +" \n" +" 如果 $HISTTIMEFORMAT å˜é‡è¢«è®¾å®šå¹¶ä¸”ä¸ä¸ºç©ºï¼Œå®ƒçš„值会被用于\n" +" strftime(3) 的格å¼å­—ç¬¦ä¸²æ¥æ‰“å°ä¸Žæ¯ä¸€ä¸ªæ˜¾ç¤ºçš„åŽ†å²æ¡ç›®æƒ³å…³è”çš„\n" +" 时间戳,å¦åˆ™ä¸æ‰“å°æ—¶é—´æˆ³ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者å‘生错误。" + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"显示任务状æ€ã€‚\n" +" \n" +" 列出活动的任务。JOBSPEC é™åˆ¶ä»…输出指定的任务。\n" +" ä¸å¸¦é€‰é¡¹æ—¶ï¼Œæ‰€æœ‰æ´»åŠ¨ä»»åŠ¡çš„çŠ¶æ€éƒ½ä¼šæ˜¾ç¤ºã€‚\n" +" \n" +" 选项:\n" +" -l\t在正常信æ¯åŸºç¡€ä¸Šåˆ—出进程å·\n" +" -n\tä»…åˆ—å‡ºä¸Šæ¬¡é€šå‘Šä¹‹åŽæ”¹å˜äº†çжæ€çš„进程\n" +" -p\t仅列出进程å·\n" +" -r\té™åˆ¶ä»…输出è¿è¡Œä¸­çš„任务\n" +" -s\té™åˆ¶ä»…è¾“å‡ºåœæ­¢çš„任务\n" +" \n" +" 如果使用了 -x 选项,ARG 傿•°ä¸­çš„æ‰€æœ‰ä»»åŠ¡å£°æ˜Žä¼šè¢«æ›¿æ¢ä¸ºè¯¥ä»»åŠ¡\n" +" 的进程组头领的进程å·ï¼Œç„¶åŽæ‰§è¡Œ COMMAND 命令。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者有错误å‘生。\n" +" 如果使用 -x 选项,则返回 COMMAND 命令的退出状æ€ã€‚" + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"ä»Žå½“å‰ shell 中删除任务。\n" +" \n" +" 从活动任务表中删除æ¯ä¸€ä¸ª JOBSPEC 傿•°ã€‚ä¸å¸¦ä»»ä½•\n" +" JOBSPEC 傿•°æ—¶ï¼Œshell 使用观念中的当å‰ä»»åŠ¡ã€‚\n" +" \n" +" 选项:\n" +" -a\tå¦‚æžœä¸æä¾› JOBSPEC 傿•°ï¼Œåˆ™åˆ é™¤æ‰€æœ‰ä»»åŠ¡\n" +" -h\t标识æ¯ä¸ª JOBSPEC 任务,从而当 shell 接收到 SIGHUP\n" +" \t\tä¿¡å·æ—¶ä¸å‘é€ SIGHUP 给指定任务\n" +" -r\t仅删除è¿è¡Œä¸­çš„任务\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 JOBSPEC 声明。" + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"å‘一个任务å‘é€ä¸€ä¸ªä¿¡å·ã€‚\n" +" \n" +" å‘以 PID è¿›ç¨‹å·æˆ–者 JOBSPEC 任务声明指定的进程å‘é€ä¸€ä¸ªä»¥\n" +" SIGSPEC ä¿¡å·å£°æ˜Žæˆ– SIGNUM ä¿¡å·ç¼–å·å‘½å的信å·ã€‚如果没有指定\n" +" SIGSPEC 或 SIGNUM,那么å‡å®šå‘é€ SIGTERM ä¿¡å·ã€‚\n" +" \n" +" 选项:\n" +" -s sig\tSIG 是信å·åç§°\n" +" -n sig\tSIG 是信å·ç¼–å·\n" +" -l\t列出信å·åç§°ï¼›å¦‚æžœå‚æ•°åŽè·Ÿ `-l'则被å‡è®¾ä¸ºä¿¡å·ç¼–å·ï¼Œ\n" +" \t\t而相应的信å·å称会被列出\n" +" \n" +" Kill æˆä¸º shell 内建有两个ç†ç”±ï¼šå®ƒå…许使用任务编å·è€Œä¸æ˜¯è¿›ç¨‹å·ï¼Œ\n" +" 并且在å¯ä»¥åˆ›å»ºçš„进程数上é™è¾¾åˆ°æ˜¯å…è®¸è¿›ç¨‹è¢«æ€æ­»ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者有错误å‘生。" + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"估值算术表达å¼ã€‚\n" +" \n" +" å°†æ¯ä¸ª ARG å‚èµ›ä½œä¸ºç®—æœ¯è¡¨è¾¾å¼æ¥ä¼°å€¼ã€‚估值的计算以定宽的整\n" +" 数完æˆï¼Œä¸å¸¦æº¢å‡ºæ£€æµ‹ï¼Œä¸è¿‡é™¤ 0 是被置陷阱的并且会报一个错\n" +" 误。下列æ“作符被按照相åŒçš„算术优先级组åˆã€‚åˆ—è¡¨çš„é¡ºåºæŒ‰ç…§\n" +" 优先级从高至低。\n" +" \n" +" \n" +" \tid++, id--\tå˜é‡åŽç½®åŠ ï¼ŒåŽç½®å‡\n" +" \t++id, --id\tå˜é‡å‰ç½®åŠ ï¼Œå‰ç½®å‡\n" +" \t-, +\t\tä¸€å…ƒå‡æ³•,一元加法\n" +" \t!, ~\t\t逻辑和ä½å–å\n" +" \t**\t\t指数\n" +" \t*, /, %\t\t乘法,除法,å–余数\n" +" \t+, -\t\t增加,å‡å°‘\n" +" \t<<, >>\t\tå‘左和å‘峿Œ‰ä½ç§»ä½\n" +" \t<=, >=, <, >\t比较\n" +" \t==, !=\t\t等于,ä¸ç­‰äºŽ\n" +" \t&\t\t按ä½ä¸Ž\n" +" \t^\t\t按ä½å¼‚或\n" +" \t|\t\tæŒ‰ä½æˆ–\n" +" \t&&\t\t逻辑与\n" +" \t||\t\t逻辑或\n" +" \texpr ? expr : expr\n" +" \t\t\tæ¡ä»¶æ“作符\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\t赋值\n" +" \n" +" Shell å˜é‡å…许作为æ“作数。表达å¼ä¸­çš„å˜é‡çš„å称会被å–代以值\n" +" (强制转æ¢ä¸ºå®šå®½çš„æ•´æ•°)。表达å¼ä¸­çš„å˜é‡ä¸éœ€è¦æ‰“开整数属性。\n" +" \n" +" æ“作符按照优先级进行估值。括å·ä¸­çš„å­è¡¨è¾¾å¼å°†è¢«å…ˆä¼°å€¼ï¼Œå¹¶å¯å–代上述表达å¼" +"规则。\n" +" \n" +" 退出状æ€ï¼š\n" +" 如果最åŽä¸€ä¸ª ARG 傿•°ä¼°å€¼ä¸º 0,则 let 返回 1ï¼› å¦åˆ™ let 返回 0。" + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"从标准输入读å–一行并将其分为ä¸åŒçš„域。\n" +" \n" +" 从标准输入读å–å•独的一行,或者如果使用了 -u 选项,从文件æè¿°ç¬¦ FD 中读" +"å–。\n" +" 该行被分割æˆåŸŸï¼Œå¦‚åŒè¯è¯­åˆ†å‰²ä¸€æ ·ï¼Œå¹¶ä¸”第一个è¯è¢«èµ‹å€¼ç»™ç¬¬ä¸€ä¸ª NAME å˜é‡ï¼Œ" +"第二\n" +" 个è¯è¢«èµ‹å€¼ç»™ç¬¬äºŒä¸ª NAME å˜é‡ï¼Œå¦‚此继续,直到剩下所有的è¯è¢«èµ‹å€¼ç»™æœ€åŽä¸€ä¸ª " +"NAME\n" +" å˜é‡ã€‚åªæœ‰ $IFS å˜é‡ä¸­çš„字符被认作是è¯è¯­åˆ†éš”符。\n" +" \n" +" 如果没有æä¾› NAME å˜é‡ï¼Œåˆ™è¯»å–的行被存放在 REPLY å˜é‡ä¸­ã€‚\n" +" \n" +" 选项:\n" +" -a array\tå°†è¯è¯­èµ‹å€¼ç»™ ARRAY 数组å˜é‡çš„åºåˆ—下标æˆå‘˜ï¼Œä»Žé›¶å¼€å§‹\n" +" -d delim\tæŒç»­è¯»å–直到读入 DELIM å˜é‡ä¸­çš„ç¬¬ä¸€ä¸ªå­—ç¬¦ï¼Œè€Œä¸æ˜¯æ¢è¡Œç¬¦\n" +" -e\t使用 Readline 获å–行\n" +" -i text\t使用 TEXT 文本作为 Readline çš„åˆå§‹æ–‡å­—\n" +" -n nchars\tè¯»å– nchars 个字符之åŽè¿”å›žï¼Œè€Œä¸æ˜¯ç­‰åˆ°è¯»å–æ¢è¡Œç¬¦ã€‚\n" +" \t\t但是分隔符ä»ç„¶æœ‰æ•ˆï¼Œå¦‚æžœé‡åˆ°åˆ†éš”符之å‰è¯»å–了ä¸è¶³ nchars 个字符。\n" +" -N nchars\t在准确读å–了 nchars 个字符之åŽè¿”回,除éžé‡åˆ°æ–‡ä»¶ç»“æŸç¬¦æˆ–者读" +"超时,\n" +" \t\t任何的分隔符都被忽略\n" +" -p prompt\t在å°è¯•读å–之å‰è¾“出 PROMPT æç¤ºç¬¦å¹¶ä¸”ä¸å¸¦\n" +" \t\tæ¢è¡Œç¬¦\n" +" -r\tä¸å…è®¸åæ–œæ è½¬ä¹‰ä»»ä½•字符\n" +" -s\tä¸å›žæ˜¾ç»ˆç«¯çš„任何输入\n" +" -t timeout\t如果在 TIMEOUT 秒内没有读å–一个完整的行则超时并且返回失" +"败。\n" +" \t\tTMOUT å˜é‡çš„值是默认的超时时间。TIMEOUT å¯ä»¥æ˜¯å°æ•°ã€‚\n" +" \t\t如果 TIMEOUT 是 0,那么仅当在指定的文件æè¿°ç¬¦ä¸Šè¾“入有效的时候,\n" +" \t\tread æ‰è¿”回æˆåŠŸï¼›å¦åˆ™å®ƒå°†ç«‹åˆ»è¿”回而ä¸å°è¯•读å–任何数æ®ã€‚\n" +" \t\t如果超过了超时时间,则返回状æ€ç å¤§äºŽ 128\n" +" -u fd\t从文件æè¿°ç¬¦ FD 中读å–ï¼Œè€Œä¸æ˜¯æ ‡å‡†è¾“å…¥\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回ç ä¸ºé›¶ï¼Œé™¤éžé‡åˆ°äº†æ–‡ä»¶ç»“æŸç¬¦ã€è¯»è¶…时(且返回ç ä¸å¤§äºŽ128)ã€\n" +" 出现了å˜é‡èµ‹å€¼é”™è¯¯æˆ–者无效的文件æè¿°ç¬¦ä½œä¸ºå‚数传递给了 -u 选项。" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"从一个 shell 函数返回。\n" +" \n" +" 使一个函数或者被引用的脚本以指定的返回值 N 退出。\n" +" 如果 N 被çœç•¥ï¼Œåˆ™è¿”回状æ€å°±æ˜¯\n" +" 函数或脚本中的最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回 N,或者如果 shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ªå‡½æ•°æˆ–引用脚本时,失败。" + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"è®¾å®šæˆ–å–æ¶ˆè®¾å®š shell 选项和ä½ç½®å‚数的值。\n" +" \n" +" æ”¹å˜ shell 选项和ä½ç½®å‚数的值,或者显示 shell å˜é‡çš„\n" +" å称和值。\n" +" \n" +" 选项:\n" +" -a 标记修改的或者创建的å˜é‡ä¸ºå¯¼å‡ºã€‚\n" +" -b ç«‹å³é€šå‘Šä»»åŠ¡ç»ˆç»“ã€‚\n" +" -e 如果一个命令以éžé›¶çжæ€é€€å‡ºï¼Œåˆ™ç«‹å³é€€å‡ºã€‚\n" +" -f ç¦ç”¨æ–‡ä»¶å生æˆ(模å¼åŒ¹é…)。\n" +" -h 当查询命令时记ä½å®ƒä»¬çš„ä½ç½®\n" +" -k æ‰€æœ‰çš„èµ‹å€¼å‚æ•°è¢«æ”¾åœ¨å‘½ä»¤çš„环境中,而ä¸ä»…仅是\n" +" 命令å称之å‰çš„傿•°ã€‚\n" +" -m å¯ç”¨ä»»åŠ¡æŽ§åˆ¶ã€‚\n" +" -n 读å–命令但䏿‰§è¡Œ\n" +" -o 选项å\n" +" 设定与选项å对应的å˜é‡ï¼š\n" +" allexport 与 -a 相åŒ\n" +" braceexpand 与 -B 相åŒ\n" +" emacs 使用 emacs 风格的行编辑界é¢\n" +" errexit 与 -e 相åŒ\n" +" errtrace 与 -E 相åŒ\n" +" functrace 与 -T 相åŒ\n" +" hashall 与 -h 相åŒ\n" +" histexpand 与 -H 相åŒ\n" +" history å¯ç”¨å‘½ä»¤åކå²\n" +" ignoreeof shell è¯»å–æ–‡ä»¶ç»“æŸç¬¦æ—¶ä¸ä¼šé€€å‡º\n" +" interactive-comments\n" +" å…许在交互å¼å‘½ä»¤ä¸­æ˜¾ç¤ºæ³¨é‡Š\n" +" keyword 与 -k 相åŒ\n" +" monitor 与 -m 相åŒ\n" +" noclobber 与 -C 相åŒ\n" +" noexec 与 -n 相åŒ\n" +" noglob 与 -f 相åŒ\n" +" nolog ç›®å‰å¯æŽ¥å—但是被忽略\n" +" notify 与 -b 相åŒ\n" +" nounset 与 -u 相åŒ\n" +" onecmd 与 -t 相åŒ\n" +" physical 与 -P 相åŒ\n" +" pipefail 管é“的返回值是最åŽä¸€ä¸ªéžé›¶è¿”回值的命令的返回结" +"果,\n" +" 或者当所有命令都返回零是也为零。\n" +" posix 改å˜é»˜è®¤æ—¶å’Œ Posix 标准ä¸åŒçš„ bash 行为\n" +" ä»¥åŒ¹é…æ ‡å‡†\n" +" privileged 与 -p 相åŒ\n" +" verbose 与 -v 相åŒ\n" +" vi 使用 vi 风格的行编辑界é¢\n" +" xtrace 与 -x 相åŒ\n" +" -p 无论何时当真实的有效的用户身份ä¸åŒ¹é…时打开。\n" +" ç¦ç”¨å¯¹ $ENV 文件的处ç†ä»¥åŠå¯¼å…¥ shell 函数。\n" +" 关闭此选项会导致有效的用户编å·å’Œç»„ç¼–å·è®¾å®š\n" +" 为真实的用户编å·å’Œç»„ç¼–å·\n" +" -t 读å–并执行一个命令之åŽé€€å‡ºã€‚\n" +" -u æ›¿æ¢æ—¶å°†ä¸ºè®¾å®šçš„å˜é‡å½“作错误对待。\n" +" -v è¯»å– shell 输入行时将它们打å°ã€‚\n" +" -x 执行命令时打å°å®ƒä»¬ä»¥åŠå‚数。\n" +" -B shell å°†æ‰§è¡ŒèŠ±æ‹¬å·æ‰©å±•。\n" +" -C 设定之åŽç¦æ­¢ä»¥é‡å®šå‘输出的方å¼è¦†ç›–常\n" +" 规文件。\n" +" -E è®¾å®šä¹‹åŽ ERR 陷阱会被 shell 函数继承。\n" +" -H å¯ç”¨ ! é£Žæ ¼çš„åŽ†å²æ›¿æ¢ã€‚当 shell 是交互å¼çš„\n" +" 时候这个标识ä½é»˜è®¤æ‰“开。\n" +" -P 设定之åŽç±»ä¼¼ cd 的会改å˜å½“å‰ç›®å½•的命令ä¸\n" +" 追踪符å·é“¾æŽ¥ã€‚\n" +" -T è®¾å®šä¹‹åŽ DEBUG 陷阱会被 shell 函数继承。\n" +" -- ä»»ä½•å‰©ä½™çš„å‚æ•°ä¼šè¢«èµ‹å€¼ç»™ä½ç½®å‚数。如果没\n" +" æœ‰å‰©ä½™çš„å‚æ•°ï¼Œä½ç½®å‚æ•°ä¸ä¼šè¢«è®¾ç½®ã€‚\n" +" - ä»»ä½•å‰©ä½™çš„å‚æ•°ä¼šè¢«èµ‹å€¼ç»™ä½ç½®å‚数。\n" +" -x å’Œ -v 选项已关闭。\n" +" \n" +" 使用 + è€Œä¸æ˜¯ - 会使标志ä½è¢«å…³é—­ã€‚标志ä½ä¹Ÿå¯ä»¥åœ¨\n" +" shell 被å¯åŠ¨æ—¶ä½¿ç”¨ã€‚å½“å‰çš„æ ‡å¿—ä½è®¾å®šå¯ä»¥åœ¨ $- å˜\n" +" é‡ä¸­æ‰¾åˆ°ã€‚剩余的 ARG 傿•°æ˜¯ä½ç½®å‚数并且是按照\n" +" $1, $2, .. $n 的顺åºè¢«èµ‹å€¼çš„。如果没有给定 ARG\n" +" 傿•°ï¼Œåˆ™æ‰“å°æ‰€æœ‰çš„ shell å˜é‡ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„傿•°ã€‚" + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"å–æ¶ˆè®¾å®š shell å˜é‡å’Œå‡½æ•°çš„值和属性。\n" +" \n" +" 对æ¯ä¸€ä¸ª NAME å称,删除对应的å˜é‡æˆ–函数。\n" +" \n" +" 选项:\n" +" -f\tå°†æ¯ä¸ª NAME 视为函数\n" +" -v\tå°†æ¯ä¸ª NAME 视为å˜é‡\n" +" -n\tå°†æ¯ä¸ª NAME 视为å称引用,åªå–消其本身而éžå…¶æŒ‡å‘çš„å˜é‡\n" +" \n" +" ä¸å¸¦é€‰é¡¹æ—¶ï¼Œunset 首先å°è¯•å–æ¶ˆè®¾å®šä¸€ä¸ªå˜é‡ï¼Œå¦‚果失败,å†å°è¯•å–æ¶ˆè®¾å®šä¸€ä¸ª" +"函数。\n" +" \n" +" æŸäº›å˜é‡ä¸å¯ä»¥è¢«å–消设定;å‚è§ `readonly'。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称为åªè¯»ã€‚" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"为 shell å˜é‡è®¾å®šå¯¼å‡ºå±žæ€§ã€‚\n" +" \n" +" 标记æ¯ä¸ª NAME å称为自动导出到åŽç»­å‘½ä»¤æ‰§è¡Œçš„环境。如果æä¾›äº† VALUE\n" +" 则导出å‰å°† VALUE 作为赋值。\n" +" \n" +" 选项:\n" +" -f\t指 shell 函数\n" +" -n\t删除æ¯ä¸ª NAME å称的导出属性\n" +" -p\t显示所有导出的å˜é‡å’Œå‡½æ•°çš„列表\n" +" \n" +" `--' çš„å‚æ•°ç¦ç”¨è¿›ä¸€æ­¥çš„选项处ç†ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称。" + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"标记 shell å˜é‡ä¸ºä¸å¯æ”¹å˜ã€‚\n" +" \n" +" 标记æ¯ä¸€ä¸ª NAME å称为åªè¯»ï¼›è¿™äº› NAME å˜é‡çš„值将ä¸å¯ä»¥è¢«åŽç»­çš„赋值\n" +" æ“作所改å˜ã€‚如果æä¾›äº† VALUE,则在标记为åªè¯»ä¹‹å‰å°† VALUE 值赋给å˜é‡ã€‚\n" +" \n" +" 选项:\n" +" -a\t指下标数组å˜é‡\n" +" -A\tæŒ‡å…³è”æ•°ç»„æ ‡é‡\n" +" -f\t指 shell 函数\n" +" -p\t显示åªè¯»å˜é‡æˆ–函数列表,å–å†³äºŽæ˜¯å¦æä¾›äº† -f 选项\n" +" \n" +" `--' çš„å‚æ•°ç¦ç”¨è¿›ä¸€æ­¥çš„选项处ç†ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称。" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"ç§»ä½ä½ç½®å‚数。\n" +" \n" +" é‡å‘½åä½ç½®å‚æ•° $N+1ã€$N+2 ... 到 $1ã€$2 ... 如果没有给定 N,\n" +" 则å‡è®¾ä¸º1.\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éž N 为负或者大于 $#。" + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"åœ¨å½“å‰ shell 中执行一个文件中的命令。\n" +" \n" +" åœ¨å½“å‰ shell 中读å–并执行 FILENAME 文件中的命令。$PATH å˜é‡ä¸­çš„\n" +" æ¡ç›®è¢«ç”¨äºŽå¯»æ‰¾åŒ…å« FILENAME 文件的目录。如果æä¾›äº†ä»»ä½•çš„ ARGUMENTS\n" +" 傿•°ï¼Œåˆ™å®ƒä»¬å°†æˆä¸º FILENAME 文件执行时的ä½ç½®å‚数。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回 FILENAME 文件中最åŽä¸€ä¸ªå‘½ä»¤çš„状æ€ï¼›å¦‚æžœ FILENAME 文件ä¸å¯è¯»åˆ™å¤±è´¥ã€‚" + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"挂起 shell 执行。\n" +" \n" +" 挂起 shell 的执行直到收到 SIGCONT ä¿¡å·ã€‚\n" +" 登录 shell ä¸å¯ä»¥è¢«æŒ‚起,除éžå¼ºåˆ¶æ‰§è¡Œã€‚\n" +" \n" +" 选项:\n" +" -f\t强制挂起,å³ä½¿æ˜¯ç™»å½• shell。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžæ²¡æœ‰å¯ç”¨ä»»åŠ¡æŽ§åˆ¶æˆ–è€…æœ‰é”™è¯¯å‘生。" + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"对æ¡ä»¶è¡¨è¾¾å¼è¿›è¡Œä¼°å€¼ã€‚\n" +" \n" +" æ ¹æ® EXPR 表达å¼çš„ä¼°å€¼ä»¥çŠ¶æ€ 0 (真) 或 1 (伪) 退出。\n" +" 表达å¼å¯ä»¥æ˜¯ä¸€å…ƒæˆ–者二元的。一元表达å¼é€šå¸¸ç”¨äºŽæ£€æµ‹\n" +" 文件状æ€ã€‚åŒæ—¶è¿˜æœ‰å­—符串æ“作符和数字比较æ“作符。\n" +" \n" +" 文件æ“作符:\n" +" \n" +" -a 文件 如果文件存在则为真。\n" +" -b 文件 如果文件为å—特殊文件则为真。\n" +" -c 文件 如果文件为字符特殊文件则为真。\n" +" -d 文件 如果文件为目录则为真。\n" +" -e 文件 如果文件存在则为真。\n" +" -f 文件 如果文件存在且为常规文件则为真。\n" +" -g 文件 如果文件的组属性设置打开则为真。\n" +" -h 文件 如果文件为符å·é“¾æŽ¥åˆ™ä¸ºçœŸã€‚\n" +" -L 文件 如果文件为符å·é“¾æŽ¥åˆ™ä¸ºçœŸã€‚\n" +" -k 文件 如果文件的粘滞 (sticky) ä½è®¾å®šåˆ™ä¸ºçœŸã€‚\n" +" -p 文件 如果文件为命å管é“则为真。\n" +" -r 文件 如果文件对于您是å¯è¯»çš„则为真。\n" +" -s 文件 如果文件存在且ä¸ä¸ºç©ºåˆ™ä¸ºçœŸã€‚\n" +" -S 文件 如果文件是套接字则为真。\n" +" -t 文件æè¿°ç¬¦ 如果文件æè¿°ç¬¦åœ¨ä¸€ä¸ªç»ˆç«¯ä¸Šæ‰“开则为真。\n" +" -u 文件 如果文件的用户数行设置打开则为真。\n" +" -w 文件 如果文件对您是å¯å†™çš„则为真\n" +" -x 文件 å¦‚æžœæ–‡ä»¶å¯¹æ‚¨æ˜¯å¯æ‰§è¡Œçš„则为真。\n" +" -O 文件 如果文件是被您所有的则为真。\n" +" -G 文件 如果文件被您的组所有则为真。\n" +" -N 文件 如果文件上次被读å–之åŽä¿®æ”¹è¿‡åˆ™ä¸ºçœŸã€‚\n" +" \n" +" FILE1 -nt FILE2 如果 file1 文件新于 file2 文件则为真(æ ¹æ®\n" +" 修改日期)。\n" +" \n" +" FILE1 -ot FILE2 如果 file1 文件旧于 file2 文件则为真。\n" +" \n" +" FILE1 -ef FILE2 如果 file1 文件是 file2 文件的硬链接则为真。\n" +" \n" +" 字符串æ“作符\n" +" \n" +" -z 字符串 如果字符串为空则为真。\n" +" \n" +" -n 字符串\n" +" 字符串 如果字符串ä¸ä¸ºç©ºåˆ™ä¸ºçœŸã€‚\n" +" \n" +" STRING1 = STRING2\n" +" 如果 string1 å’Œ string2 字符串相åŒåˆ™ä¸ºçœŸã€‚\n" +" STRING1 != STRING2\n" +" 如果 string1 å’Œ string2 字符串ä¸ç›¸åŒåˆ™ä¸ºçœŸã€‚\n" +" STRING1 < STRING2\n" +" å¦‚æžœæŒ‰å­—å…¸æŽ’åº string1 在 string2 串之å‰åˆ™ä¸ºçœŸã€‚\n" +" STRING1 > STRING2\n" +" å¦‚æžœæŒ‰å­—å…¸æŽ’åº string1 在 string2 串之å‰åˆ™ä¸ºçœŸã€‚\n" +" \n" +" å…¶ä»–æ“作符:\n" +" \n" +" -o 选项 如果指定 shell 选项å¯ç”¨åˆ™ä¸ºçœŸã€‚\n" +" -v VAR 如果指定 Shell å˜é‡ VAR 已赋值则为真。\n" +" -R VAR 如果指定 Shell å˜é‡ VAR 已赋值且为å称引用则为真。\n" +" ! EXPR å¦‚æžœè¡¨è¾¾å¼ expr 为å‡åˆ™ä¸ºçœŸã€‚\n" +" EXPR1 -a EXPR2 如果 expr1 å’Œ expr2 都为真则为真。\n" +" EXPR1 -o EXPR2 如果 expr1 å’Œ expr2 有一个为真则为真。\n" +" \n" +" arg1 OP arg2 算术测试。OPæ“作符å¯ä»¥æ˜¯ -eqã€-neã€\n" +" -ltã€-leã€-gtã€æˆ– -ge 中的一个。\n" +" \n" +" 二元算术æ“作返回真,如果 ARG1 傿•°ç­‰äºŽã€ä¸ç­‰äºŽã€\n" +" å°äºŽã€å°äºŽç­‰äºŽã€å¤§äºŽã€æˆ–者大于等于 ARG2 傿•°ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 如果 EXPR 表达å¼ä¼°å€¼ä¸ºçœŸåˆ™è¿”回æˆåŠŸï¼›å¦‚æžœ EXPR 表达å¼ä¼°å€¼\n" +" ä¸ºå‡æˆ–è€…ä½¿ç”¨äº†æ— æ•ˆçš„å‚æ•°åˆ™è¿”回失败。" + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"估值æ¡ä»¶è¡¨è¾¾å¼ã€‚\n" +" \n" +" 是内建命令 \"test\" çš„åŒä¹‰è¯ï¼Œä½†æ˜¯æœ€åŽä¸€ä¸ªå‚数必须是\n" +" 字符 `]',以匹é…èµ·å§‹çš„ `['。" + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"显示进程时间\n" +" \n" +" æ‰“å° shell åŠå…¶æ‰€æœ‰å­è¿›ç¨‹çš„累计用户空间和\n" +" 系统空间执行时间。\n" +" \n" +" 退出状æ€\n" +" 总是æˆåŠŸã€‚" + +# EXIT and DEBUG should be as-is. Use before you translate, please. +# The -signal is only an example; Read carefully. +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"对信å·å’Œå…¶ä»–事件设陷阱。\n" +" \n" +" 定义一个处ç†å™¨ï¼Œåœ¨ shell 接收到信å·å’Œå…¶ä»–æ¡ä»¶ä¸‹æ‰§è¡Œã€‚\n" +" \n" +" ARG 傿•°æ˜¯å½“ shell 接收到 SIGNAL_SPEC ä¿¡å·æ—¶è¯»å–和执行的命令。\n" +" 如果没有指定 ARG 傿•° (并且åªç»™å‡ºä¸€ä¸ª SIGNAL_SPEC ä¿¡å·) 或者\n" +" ARG 傿•°ä¸º\n" +" `-',æ¯ä¸€ä¸ªæŒ‡å®šçš„傿•°ä¼šè¢«é‡ç½®ä¸ºåŽŸå§‹å€¼ã€‚å¦‚æžœ ARG 傿•°æ˜¯ä¸€ä¸ªç©ºä¸²ï¼Œåˆ™æ¯ä¸€" +"个\n" +" SIGNAL_SPEC ä¿¡å·ä¼šè¢« shell 和它å¯åŠ¨çš„å‘½ä»¤å¿½ç•¥ã€‚\n" +" \n" +" 如果一个 SIGNAL_SPEC ä¿¡å·æ˜¯ EXIT (0) ,则 ARG 命令会在 shell 退出时被\n" +" 执行。如果一个 SIGNAL_SPEC ä¿¡å·æ˜¯ DEBUG,则 ARG命令会在æ¯ä¸€ä¸ªç®€å•命\n" +" 令之剿‰§è¡Œã€‚\n" +" \n" +" å¦‚æžœä¸æä¾›å‚æ•°ï¼Œtrap 打å°åˆ—表显示æ¯ä¸€ä¸ªä¸Žæ¯ä¸€ä¸ªä¿¡å·ç›¸å…³è”的命令。\n" +" \n" +" 选项:\n" +" -l\t打å°ä¸€ä¸ªä¿¡å·å称和它们对应的编å·çš„列表\n" +" -p\t打å°ä¸Žæ¯ä¸ª SIGNAL_SPEC ä¿¡å·ç›¸å…³è”的陷阱命令\n" +" \n" +" æ¯ä¸€ä¸ª SIGNAL_SPEC ä¿¡å·å¯ä»¥æ˜¯ 中的信å·å称或者信å·ç¼–å·ã€‚\n" +" ä¿¡å·å称大å°å†™æ•感且å¯ä»¥ä½¿ç”¨ SIG å‰ç¼€ã€‚ä¿¡å·å¯ç”¨ \"kill -ä¿¡å· $$\"\n" +" å‘é€ç»™ shell。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 SIGSPEC。" + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"显示命令类型的信æ¯ã€‚\n" +" \n" +" 对于æ¯ä¸€ä¸ª NAME å称,指示如果作为命令它将如何被解释。\n" +" \n" +" 选项:\n" +" -a\t显示所有包å«å称为 NAME çš„å¯æ‰§è¡Œæ–‡ä»¶çš„ä½ç½®ï¼›\n" +" \t\t包括别åã€å†…建和函数。仅当 `-p' 选项没有使用时\n" +" -f\t抑制 shell 函数查询\n" +" -P\t为æ¯ä¸ª NAME å称惊醒 PATH 路径æœç´¢ï¼Œå³ä½¿å®ƒæ˜¯åˆ«åã€\n" +" \t\t内建或函数,并且返回将被执行的ç£ç›˜ä¸Šæ–‡ä»¶çš„å称。\n" +" -p\t返回将被执行的ç£ç›˜ä¸Šæ–‡ä»¶çš„å称,或者当 `type -t NAME'\n" +" \tä¸è¿”回 `file' 时,ä¸è¿”回任何值。\n" +" -t\t返回下列è¯ä¸­çš„任何一个 `alias'ã€`keyword'ã€\n" +" \t`function'ã€`builtin'ã€`file' 或者 `',相应地如果 NAME 是\n" +" \t一个别åã€shell ä¿ç•™å­—ã€shell 函数ã€shell 内建ã€\n" +" \tç£ç›˜æ–‡ä»¶æˆ–没有找到。\n" +" \n" +" 傿•°ï¼š\n" +" NAME\tå°†è¦è§£æžçš„命令。\n" +" \n" +" 退出状æ€ï¼š\n" +" 如果所有的 NAME 命令都找到则返回æˆåŠŸï¼›ä»»ä½•ä¸€ä¸ªæ‰¾ä¸åˆ°åˆ™å¤±è´¥ã€‚" + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"修改 shell 资æºé™åˆ¶ã€‚\n" +" \n" +" 在å…许此类控制的系统上,æä¾›å¯¹äºŽ shell åŠå…¶åˆ›å»ºçš„进程所å¯ç”¨çš„\n" +" 资æºçš„æŽ§åˆ¶ã€‚\n" +" \n" +" 选项:\n" +" -S\t使用软 (`soft') 资æºé™åˆ¶\n" +" -H\t使用硬 (`hard') 资æºé™åˆ¶\n" +" -a\t所有当å‰é™åˆ¶éƒ½è¢«æŠ¥å‘Š\n" +" -b\t套接字缓存尺寸\n" +" -c\t创建的核文件的最大尺寸\n" +" -d\t一个进程的数æ®åŒºçš„æœ€å¤§å°ºå¯¸\n" +" -e\t最高的调度优先级 (`nice')\n" +" -f\t有 shell åŠå…¶å­è¿›ç¨‹å¯ä»¥å†™çš„æœ€å¤§æ–‡ä»¶å°ºå¯¸\n" +" -i\t最多的å¯ä»¥æŒ‚èµ·çš„ä¿¡å·æ•°\n" +" -k\t分é…给此进程的最大 kqueue æ•°é‡\n" +" -l\t一个进程å¯ä»¥é”定的最大内存尺寸\n" +" -m\t最大的内存进驻尺寸\n" +" -n\t最多的打开的文件æè¿°ç¬¦ä¸ªæ•°\n" +" -p\t管é“缓冲区尺寸\n" +" -q\tPOSIX ä¿¡æ¯é˜Ÿåˆ—的最大字节数\n" +" -r\t实时调度的最大优先级\n" +" -s\t最大栈尺寸\n" +" -t\t最大的CPU时间,以秒为å•ä½\n" +" -u\t最大用户进程数\n" +" -v\t虚拟内存尺寸\n" +" -x\tæœ€å¤§çš„æ–‡ä»¶é”æ•°é‡\n" +" -P\t最大伪终端数é‡\n" +" -T\t最大线程数é‡\n" +" \n" +" å¹¶éžæ‰€æœ‰é€‰é¡¹åœ¨æ‰€æœ‰ç³»ç»Ÿä¸Šå¯ç”¨ã€‚\n" +" \n" +" 如果æä¾›äº† LIMIT å˜é‡ï¼Œåˆ™å®ƒä¸ºæŒ‡å®šèµ„æºçš„æ–°çš„值;特别的 LIMIT 值为\n" +" `soft'ã€`hard'å’Œ`unlimited',分别表示当å‰çš„软é™åˆ¶ï¼Œç¡¬é™åˆ¶å’Œæ— é™åˆ¶ã€‚\n" +" å¦åˆ™æ‰“å°æŒ‡å®šèµ„æºçš„当å‰é™åˆ¶å€¼ï¼Œä¸å¸¦é€‰é¡¹åˆ™å‡å®šä¸º -f\n" +" \n" +" å–值都是 1024 字节为å•ä½ï¼Œé™¤äº† -t 以秒为å•ä½ï¼Œ-p 以 512 字节递增,\n" +" -u 为无范围的进程数é‡ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者错误å‘生。" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"æ˜¾ç¤ºæˆ–è®¾å®šæ–‡ä»¶æ¨¡å¼æŽ©ç ã€‚\n" +" \n" +" 设定用户文件创建掩ç ä¸º MODE 模å¼ã€‚如果çœç•¥äº† MODE,则\n" +" 打å°å½“剿ީç çš„值。\n" +" \n" +" 如果 MODE 模å¼ä»¥æ•°å­—开头,则被当作八进制数解æžï¼›å¦åˆ™æ˜¯ä¸€ä¸ª\n" +" chmod(1) å¯æŽ¥æ”¶çš„ç¬¦å·æ¨¡å¼ä¸²ã€‚\n" +" \n" +" 选项:\n" +" -p\t如果çœç•¥ MODE 模å¼ï¼Œä»¥å¯é‡ç”¨ä¸ºè¾“入的格å¼è¾“å…¥\n" +" -S\t以符å·å½¢å¼è¾“出,å¦åˆ™ä»¥å…«è¿›åˆ¶æ•°æ ¼å¼è¾“出\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„ MODE æ¨¡å¼æˆ–者选项。" + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"等待任务完æˆå¹¶è¿”回退出状æ€ã€‚\n" +" \n" +" 等待以 ID ç¼–å·è¯†åˆ«çš„进程,其中 ID å¯ä»¥æ˜¯è¿›ç¨‹ç¼–å·æˆ–者任务声明,\n" +" 并报告它的终止状æ€ã€‚如果 ID æ²¡æœ‰ç»™å‡ºï¼Œåˆ™ç­‰å¾…æ‰€æœ‰çš„å½“å‰æ´»è·ƒå­\n" +" 进程,并且返回状æ€ä¸ºé›¶ã€‚如果 ID 是任务声明,等待任务管é“中的\n" +" 所有进程。\n" +" \n" +" 若给定了 -n 选项,等待下一个任务完æˆå¹¶è¿”回其状æ€ã€‚\n" +" \n" +" 若给定了 -f 选项,且已å¯ç”¨äº†ä»»åŠ¡æŽ§åˆ¶ï¼Œåˆ™ç­‰å¾…æŒ‡å®šçš„ ID 终止\n" +" 而éžç­‰å¾…它改å˜çжæ€ã€‚\n" +" 退出状æ€ï¼š\n" +" 返回最åŽä¸€ä¸ª ID 进程的状æ€ï¼›å¦‚果使用了无效的 ID 或者选项则失败。" + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"等待进程完æˆå¹¶ä¸”返回退出状æ€ã€‚\n" +" \n" +" 等待指定进程并报告它的终止状æ€ã€‚如果没有æä¾› PIDï¼Œåˆ™å½“å‰æ‰€æœ‰çš„æ´»è·ƒ\n" +" å­è¿›ç¨‹éƒ½ä¼šè¢«ç­‰å¾…,并且返回ç ä¸ºé›¶ã€‚PID 必须为进程å·ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回进程 ID 的状æ€ï¼›å¦‚æžœ PID æ˜¯æ— æ•ˆçš„è¿›ç¨‹å·æˆ–者指定了无效的选项则失败。" + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"为列表中的æ¯ä¸ªæˆå‘˜æ‰§è¡Œå‘½ä»¤ã€‚\n" +" \n" +" “forâ€å¾ªçŽ¯ä¸ºåˆ—è¡¨ä¸­çš„æ¯ä¸ªæˆå‘˜æ‰§è¡Œä¸€ç³»åˆ—的命令。如果没有\n" +" “in <è¯è¯­> ...;â€åˆ™å‡å®šä½¿ç”¨â€œin \"$@\"â€ã€‚对于 <è¯è¯­> 中的æ¯\n" +" 个元素,<åç§°> å˜é‡è¢«è®¾å®šä¸ºè¯¥å…ƒç´ åŽæ‰§è¡Œ <命令>。\n" +" \n" +" 退出状æ€ï¼š\n" +" è¿”å›žæœ€åŽæ‰§è¡Œçš„命令的状æ€ã€‚" + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"算术 for 循环。\n" +" \n" +" 等价于\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\t命令们\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1ã€EXP2 å’Œ EXP3 都是算术表达å¼ã€‚如果çœç•¥ä»»ä½•表达å¼ï¼Œ\n" +" 则等åŒäºŽä½¿ç”¨äº†ä¼°å€¼ä¸º1的表达å¼ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" è¿”å›žæœ€åŽæ‰§è¡Œçš„命令的状æ€ã€‚" + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"从列表中选å–è¯å¹¶ä¸”执行命令。\n" +" \n" +" <è¯è¯­...> 被展开,生æˆä¸€ä¸ªè¯çš„列表。展开的è¯é›†åˆè¢«æ‰“å°\n" +" 在标准错误输出设备上,æ¯ä¸ªä»¥ä¸€ä¸ªæ•°å­—åšå‰ç¼€ã€‚如果没有 `in WORDS'\n" +" 则å‡å®šä½¿ç”¨`in \"$@\"'。PS3æç¤ºç¬¦ä¼šè¢«æ˜¾ç¤ºå¹¶ä¸”从标准输入读入一行\n" +" 如果该行由被显示的è¯å¯¹åº”的数字组æˆï¼Œåˆ™ NAME å˜é‡è¢«è®¾å®šä¸ºç›¸åº”\n" +" çš„è¯ã€‚如果行为空,则 WORDS å˜é‡å’Œæç¤ºç¬¦è¢«é‡æ–°æ˜¾ç¤ºã€‚如果读å–了\n" +" 文件结æŸç¬¦ï¼Œåˆ™å‘½ä»¤å®Œæˆã€‚读入任何其他的值会导致 NAME å˜é‡è¢«è®¾å®š\n" +" 为空。读入的行被存放在å˜é‡ REPLY 中。COMMANDS å‘½ä»¤åœ¨æ¯æ¬¡é€‰æ‹©\n" +" ä¹‹åŽæ‰§è¡Œç›´åˆ°æ‰§è¡Œä¸€ä¸ª break 命令。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"æŠ¥å‘Šç®¡é“æ‰§è¡Œçš„æ¶ˆè€—时间。\n" +" \n" +" 执行 PIPELINE å¹¶ä¸”æ‰“å° PIPELINE 终结时实际时间ã€ç”¨æˆ· CPU 时间和系统\n" +" CPU 时间的总结。\n" +" \n" +" 选项:\n" +" -p\t用å¯è¿ç§»çš„ POSIX æ ¼å¼æ‰“å°ç”¨æ—¶æ€»ç»“。\n" +" \n" +" TIMEFORMAT å˜é‡çš„值被作为输出格å¼ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回状æ€å³PIPELINE 的返回状æ€ã€‚" + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"基于模å¼åŒ¹é…æ¥æ‰§è¡Œå‘½ä»¤ã€‚\n" +" \n" +" 基于 PATTERN 模å¼åŒ¹é…çš„è¯ WORD,有选择的执行 COMMANDS 命令。\n" +" `|' 用于分隔多个模å¼ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚" + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"æ ¹æ®æ¡ä»¶æ‰§è¡Œå‘½ä»¤ã€‚\n" +" \n" +" `if COMMANDS'列表被执行。如果退出状æ€ä¸ºé›¶ï¼Œåˆ™æ‰§è¡Œ`then COMMANDS' \n" +" 列表。å¦åˆ™æŒ‰é¡ºåºæ‰§è¡Œæ¯ä¸ª `elif COMMANDS'列表,并且如果它的退出状æ€ä¸º\n" +" 零,则执行对应的 `then COMMANDS' 列表并且 if 命令终止。å¦åˆ™å¦‚果存在的\n" +" 情况下,执行 `else COMMANDS'åˆ—è¡¨ã€‚æ•´ä¸ªç»“æž„çš„é€€å‡ºçŠ¶æ€æ˜¯æœ€åŽä¸€ä¸ªæ‰§è¡Œ\n" +" 的命令的状æ€ï¼Œæˆ–者如果没有æ¡ä»¶æµ‹è¯•为真的è¯ï¼Œä¸ºé›¶ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚" + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"åªè¦æµ‹è¯•æˆåŠŸå³æ‰§è¡Œå‘½ä»¤ã€‚\n" +" \n" +" åªè¦åœ¨ `while' COMMANDS 中的最终命令返回结果为0,则\n" +" 展开并执行 COMMANDS 命令。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚" + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"当测试ä¸åŒè¿‡æ—¶æ‰§è¡Œå‘½ä»¤ã€‚\n" +" \n" +" `until' COMMANDS 命令的最终命令返回状æ€ä¸ä¸º 0 时,\n" +" 展开并执行 COMMANDS 命令。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚" + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"创建一个以 NAME 为å的副进程。\n" +" \n" +" 异步执行 COMMANDS 命令,在执行 shell 中的数组å˜é‡ NAME\n" +" çš„ 0 å·å’Œ 1 å·å…ƒç´ ä½œä¸ºæ–‡ä»¶æè¿°ç¬¦ï¼Œä»¥ä¸€ä¸ªç®¡é“连接命令\n" +" 分别作为命令的标准输出和输入设备。\n" +" 默认的 NAME 是 \"COPROC\"。\n" +" \n" +" 退出状æ€ï¼š\n" +" å‰¯è¿›ç¨‹ä¼šè¿”å›žé€€å‡ºçŠ¶æ€ 0。" + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"定义 shell 函数。\n" +" \n" +" 创建一个以 NAME 为åçš„ shell 函数。当作为一个简å•的命令å¯ç”¨æ—¶ï¼Œ\n" +" NAME 函数执行调用 shell 的上下文中的 COMMANDs 命令。当 NAME\n" +" 被å¯ç”¨æ—¶ï¼Œå‚数作为 $1...$n 被传递给函数,函数的å字储存在å˜é‡\n" +" $FUNCNAME 中。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸé™¤éž NAME 为åªè¯»ã€‚" + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"将命令组åˆä¸ºä¸€ä¸ªå•元。\n" +" \n" +" è¿è¡Œç»„中的命令集åˆã€‚这是对整个命令集åˆ\n" +" åšé‡å®šå‘的方法之一。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚" + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"在å‰å°ç»§ç»­ä»»åŠ¡\n" +" \n" +" 对于 JOB_SPEC 傿•°æ¥è¯´å’Œ `fg' 命令等åŒã€‚继续一个\n" +" åœæ­¢çš„æˆ–者åŽå°ä»»åŠ¡ã€‚JOB_SPEC å¯ä»¥æŒ‡å®šä¸€ä¸ªä»»åŠ¡\n" +" å字或任务å·ã€‚在 JOB_SPEC åŽåŠ ä¸Šä¸€ä¸ª `&' 将会把\n" +" 任务放至åŽå°ï¼Œå°±åƒä»»åŠ¡å£°æ˜Žè¢«ä½œä¸º `bg' å‘½ä»¤çš„å‚æ•°\n" +" 执行一样。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回被继续的任务的状æ€ã€‚" + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"估值算术表达å¼ã€‚\n" +" \n" +" è¡¨è¾¾å¼æŒ‰ç…§ç®—术法则进行估值。\n" +" 等价于 \"let 表达å¼\".\n" +" \n" +" 退出状æ€\n" +" 如果表达å¼ä¼°å€¼ä¸º0则返回 1ï¼›å¦åˆ™è¿”回0。" + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"执行æ¡ä»¶å‘½ä»¤ã€‚\n" +" \n" +" æ ¹æ®æ¡ä»¶è¡¨è¾¾å¼ EXPRESSION 的估值返回状æ€0或1ã€‚è¡¨è¾¾å¼æŒ‰ç…§\n" +" `test' å†…å»ºçš„ç›¸åŒæ¡ä»¶ç»„æˆï¼Œæˆ–者å¯ä»¥æœ‰ä¸‹åˆ—æ“作符连接而æˆï¼š\n" +" \n" +" ( EXPRESSION )\t返回 EXPRESSION 表达å¼çš„值\n" +" ! EXPRESSION\t\t如果 EXPRESSION表达å¼ä¸ºå‡åˆ™ä¸ºçœŸï¼Œå¦åˆ™ä¸ºå‡\n" +" EXPR1 && EXPR2\t如果 EXPR1 å’Œ EXPR2 表达å¼å‡ä¸ºçœŸåˆ™ä¸ºçœŸï¼Œå¦åˆ™ä¸ºå‡\n" +" EXPR1 || EXPR2\t如果 EXPR1 å’Œ EXPR2 表达å¼ä¸­æœ‰ä¸€ä¸ªä¸ºçœŸåˆ™ä¸ºçœŸï¼Œå¦åˆ™ä¸º" +"å‡\n" +" \n" +" 当使用 `==' å’Œ `!=' æ“作符时,æ“作符å³è¾¹çš„字符串被用作模å¼å¹¶ä¸”执行一个\n" +" 匹é…。当使用 `=~' æ“作符时,æ“作符å³è¾¹çš„å­—ç¬¦ä¸²è¢«å½“ä½œæ­£åˆ™è¡¨è¾¾å¼æ¥è¿›è¡Œ\n" +" 匹é…。\n" +" \n" +" æ“作符 && å’Œ || å°†ä¸å¯¹ EXPR2 表达å¼è¿›è¡Œä¼°å€¼ï¼Œå¦‚æžœ EXPR1 表达å¼è¶³å¤Ÿç¡®å®š\n" +" 整个表达å¼çš„值。\n" +" \n" +" 退出状æ€ï¼š\n" +" æ ¹æ® EXPRESSION 的值为0或1。" + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"常用 shell å˜é‡å称和使用。\n" +" \n" +" BASH_VERSION\tå½“å‰ Bash 的版本信æ¯ã€‚\n" +" CDPATH\t用于 `cd' 命令傿•°æœç´¢çš„分å·åˆ†éš”的目录列表\n" +" GLOBIGNORE\t路径扩展时忽略的文件ååŒ¹é…æ¨¡å¼åˆ—表,\n" +" \t\t以分å·åˆ†éš”。\n" +" HISTFILE\t您的命令历å²å­˜æ”¾çš„æ–‡ä»¶å称。\n" +" HISTFILESIZE\tåŽ†å²æ–‡ä»¶æœ€å¤šå¯ä»¥ä¿å­˜çš„行数。\n" +" HISTSIZE\t一个è¿è¡Œçš„ shell 最多å¯ä»¥è®¿é—®çš„历å²å‘½ä»¤è¡Œæ•°ã€‚\n" +" HOME\t您的登录目录的完整路径。\n" +" HOSTNAME\t当å‰ä¸»æœºçš„主机å。\n" +" HOSTTYPE\t当å‰ç‰ˆæœ¬çš„ BASH 在其之上è¿è¡Œçš„ CPU 类型。\n" +" IGNOREEOF\t控制 shell 收到文件结æŸç¬¦ä½œä¸ºå•一输入åŽçš„\n" +" \t\t动作。如果设定这个å˜é‡ï¼Œåˆ™å®ƒçš„值是 shell 退出之å‰åœ¨\n" +" \t\t一个空行上å¯ä»¥è¿žç»­çœ‹åˆ°çš„æ–‡ä»¶ç»“æŸç¬¦æ•°é‡(默认为10)。\n" +" \t\t未设定时,文件结æŸç¬¦æ ‡å¿—ç€è¾“入的结æŸã€‚\n" +" MACHTYPE\tæè¿°å½“å‰è¿è¡Œ Bash 的系统的字符串。\n" +" MAILCHECK\tBash 检测新邮件的频率,以秒为å•ä½ã€‚\n" +" MAILPATH\tBash 从中检测新邮件的文件列表,以分å·åˆ†éš”。\n" +" OSTYPE\tè¿è¡Œ Bash çš„ Unix 版本。\n" +" PATH\t当寻找命令时æœç´¢çš„目录列表,以冒å·åˆ†éš”。\n" +" PROMPT_COMMAND\tæ‰“å°æ¯ä¸€ä¸ªä¸»æç¤ºç¬¦ä¹‹å‰æ‰§è¡Œçš„命\n" +" \t\t令。\n" +" PS1\t\t主æç¤ºç¬¦å­—符串。\n" +" PS2\t\t从æç¤ºç¬¦å­—符串。\n" +" PWD\t\t当å‰ç›®å½•的完整路径。\n" +" SHELLOPTS\tå·²å¯ç”¨çš„ shell 选项列表,以冒å·åˆ†éš”。\n" +" TERM\t当å‰ç»ˆç«¯ç±»åž‹çš„å称。\n" +" TIMEFORMAT\t以关键则 `time' 显示的时间统计信æ¯çš„输出\n" +" \t\tæ ¼å¼ã€‚\n" +" auto_resume\téžç©ºæ—¶ï¼Œä¸€ä¸ªå•独的命令è¯ä¼šé¦–先被在当å‰\n" +" \t\tåœæ­¢çš„任务列表中æœç´¢ã€‚如果找到则该任务被置于å‰å°ã€‚\n" +" \t\t如果值为 `exact' 则æ„味ç€å‘½ä»¤è¯å¿…须精确匹é…åœæ­¢ä»»åŠ¡\n" +" \t\t列表中的命令。如果值为 `substring' 则æ„味ç€å‘½ä»¤è¯å¿…\n" +" \t\t须匹é…任务的一个å­å­—符串。任何其他的值æ„味ç€å‘½ä»¤è¯\n" +" \t\tå¿…é¡»æ˜¯åœæ­¢ä»»åŠ¡çš„ä¸€ä¸ªå‰ç¼€ã€‚\n" +" histchars\t控制历å²å±•开和快速替æ¢çš„字符。第一个字符是\n" +" \t\tåŽ†å²æ›¿æ¢å­—符,通常是 `!'。第二个字符是快速替æ¢å­—符,\n" +" \t\t通常是 `^'ã€‚ç¬¬ä¸‰ä¸ªæ˜¯åŽ†å²æ³¨é‡Šå­—符,通常是 `#'。\n" +" HISTIGNORE\tç”¨äºŽå†³å®šå“ªäº›å‘½ä»¤è¢«å­˜å…¥åŽ†å²æ–‡ä»¶çš„æ¨¡å¼\n" +" \t\t列表,以冒å·åˆ†éš”。\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"将目录添加到栈中。\n" +" \n" +" å°†ç›®å½•æ·»åŠ åˆ°ç›®å½•æ ˆé¡¶ï¼Œæˆ–ç€æ—‹è½¬æ ˆç›´åˆ°å½“å‰å·¥ä½œç›®å½•æˆä¸º\n" +" 新的栈顶。ä¸å¸¦å‚æ•°æ—¶ï¼Œäº¤æ¢æ ˆé¡¶çš„两个目录。\n" +" \n" +" 选项:\n" +" -n\t抑制添加目录至栈时通常的改å˜ç›®å½•æ“作,从而仅对栈\n" +" \t进行æ“作。\n" +" \n" +" 傿•°ï¼š\n" +" +N\t旋转栈从而第 N 个目录 (`dirs' 显示的列表中左起,从零开始)\n" +" \t将移动到栈顶。\n" +" \n" +" -N\t旋转栈从而第 N 个目录 (`dirs' 显示的列表中å³èµ·ï¼Œä»Žé›¶å¼€å§‹)\n" +" \t将移动到栈顶。\n" +" \n" +" dir\tå°† DIR 目录添加到栈顶,并且使其æˆä¸ºå½“å‰å·¥ä½œç›®å½•。\n" +" \n" +" `dirs' 内建显示目录栈。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„傿•°æˆ–者目录转æ¢å¤±è´¥ã€‚" + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"从栈中删除目录。\n" +" \n" +" 从目录栈中删除æ¡ç›®ã€‚ä¸å¸¦å‚数时,删除栈顶目录,并改å˜è‡³æ–°çš„æ ˆ\n" +" 顶目录。\n" +" \n" +" 选项:\n" +" -n\tæŠ‘åˆ¶ä»Žæ ˆä¸­åˆ é™¤ç›®å½•æ—¶é€šå¸¸çš„ç›®å½•å˜æ¢æ“作,从而仅对栈\n" +" \t进行æ“作。\n" +" \n" +" 傿•°ï¼š\n" +" +N\t删除第 N 个目录 (`dirs' 显示的目录列表中左起,从零开始)。\n" +" \t例如:`popd +0' 删除第一个目录,`popd +1' 删除第二个。\n" +" \n" +" -N\t删除第 N 个目录 (`dirs' 显示的目录列表中å³èµ·ï¼Œä»Žé›¶å¼€å§‹)。\n" +" \t例如:`popd -0' 删除最åŽä¸€ä¸ªç›®å½•,,`popd -1' 删除倒数第二个。\n" +" \n" +" `dirs' 内建显示目录栈。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„傿•°æˆ–è€…ç›®å½•å˜æ¢å¤±è´¥ã€‚" + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"显示目录栈。\n" +" \n" +" 显示当å‰è®°ä½çš„目录列表。通过 `pushd' 命令å¯ä»¥å°†ç›®å½•存入列表\n" +" 中;`popd' 命令å¯ç”¨äºŽé历弹出列表。\n" +" \n" +" 选项:\n" +" -c\t删除所有元素以清空目录栈\n" +" -l\t䏿‰“å°ä¸Žä¸»ç›®å½•相关的波浪å·å‰ç¼€çš„目录\n" +" -p\tæ¯è¡Œä¸€ä¸ªæ¡ç›®æ‰“å°ç›®å½•æ ˆ\n" +" -v\tæ¯è¡Œä¸€ä¸ªæ¡ç›®ï¼Œä»¥æ ˆä¸­ä½ç½®ä¸ºå‰ç¼€æ‰“å°ç›®å½•æ ˆ\n" +" \n" +" 傿•°ï¼š\n" +" +N\t显示 dirs ä¸å¸¦é€‰é¡¹å¯åŠ¨æ—¶æ˜¾ç¤ºçš„ç›®å½•åˆ—è¡¨å·¦èµ·ä¸­ç¬¬\n" +" \tN 个目录,从零开始。\n" +" \n" +" -N\t显示 dirs ä¸å¸¦é€‰é¡¹å¯åŠ¨æ—¶æ˜¾ç¤ºçš„ç›®å½•åˆ—è¡¨å³èµ·ä¸­ç¬¬\n" +" \tN 个目录,从零开始。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者å‘生错误。" + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"è®¾å®šå’Œå–æ¶ˆè®¾å®š shell 选项。\n" +" \n" +" æ”¹å˜æ¯ä¸ª shell 选项 OPTNAME 的设定。ä¸å¸¦å‚数时,\n" +" 列出æ¯ä¸ªæä¾›çš„ OPTNAME,å¦åˆ™åˆ—出所有 shell 选项;\n" +" åŒæ—¶æ ‡æ³¨æ¯ä¸€ä¸ªé€‰é¡¹æ˜¯å¦è¢«è®¾å®šã€‚\n" +" \n" +" 选项:\n" +" -o\té™åˆ¶ OPTNAME 为定义用于`set -o' 的选项\n" +" -p\tæ‰“å°æ¯ä¸ª shell 选项并标注它的状æ€ã€‚\n" +" -q\t抑制输出\n" +" -s\tå¯ç”¨(设定)æ¯ä¸ª OPTNAME 选项\n" +" -u\tç¦ç”¨(å–æ¶ˆè®¾å®š)æ¯ä¸ª OPTNAME 选项\n" +" \n" +" 退出状æ€ï¼š\n" +" 如果 OPTNAME 选项被å¯ç”¨åˆ™è¿”回æˆåŠŸï¼›å¦‚æžœæ˜¯\n" +" 无效的选项或 OPTNAME 被ç¦ç”¨åˆ™å¤±è´¥ã€‚" + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"在 FORMAT 的控制下格å¼åŒ–å¹¶æ‰“å° ARGUMENTS 傿•°ã€‚\n" +" \n" +" 选项:\n" +" -v var\t将输出赋值给 shell å˜é‡ VAR è€Œä¸æ˜¾ç¤ºåœ¨æ ‡å‡†è¾“出上\n" +" \n" +" FORMAT 是包å«ä¸‰ç§å¯¹è±¡çš„字符串:简å•地被拷è´åˆ°æ ‡å‡†è¾“出的普通字符;\n" +" è¢«å˜æ¢ä¹‹åŽæ‹·è´åˆ°æ ‡å‡†è¾“å…¥çš„è½¬ä¹‰å­—ç¬¦ï¼›ä»¥åŠæ¯ä¸ªéƒ½ä¼šå½±å“åˆ°ä¸‹ä¸ªå‚æ•°çš„æ‰“å°çš„æ ¼" +"å¼åŒ–声明。\n" +" \n" +" 在 printf(1) 中æè¿°çš„æ ‡å‡†æŽ§åˆ¶å£°æ˜Žä¹‹å¤–,printf è§£æžï¼š\n" +" \n" +" %b\tæ‰©å±•å¯¹åº”å‚æ•°ä¸­çš„åæ–œæ è½¬ä¹‰åºåˆ—\n" +" %q\t以å¯ä½œä¸º shell 输入的格å¼å¼•ç”¨å‚æ•°\n" +" %(fmt)T\t以 FMT 为供给 strftime(3) 的格å¼è¾“出日期时间字符串\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者写或赋值错误å‘生。" + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"指定 Readline å¦‚ä½•è¡¥å…¨å‚æ•°ã€‚\n" +" \n" +" 声明对于æ¯ä¸€ä¸ª NAME åç§°å¦‚ä½•è¡¥å…¨å‚æ•°ã€‚如果ä¸å¸¦é€‰é¡¹ï¼Œ\n" +" 现有的补全声明会以å¯ä»¥é‡ç”¨ä¸ºè¾“å…¥çš„æ ¼å¼æ‰“å°å‡ºæ¥ã€‚\n" +" \n" +" 选项:\n" +" -p\t以å¯é‡ç”¨çš„æ ¼å¼æ‰“å°çŽ°æœ‰çš„è¡¥å…¨å£°æ˜Žã€‚\n" +" -r\t对于æ¯ä¸ª NAME å称删除补全声明,或者如果没有æä¾› NAME\n" +" \tå称,删除所有的补全声明。\n" +" -D\t对于没有补全声明定义的命令,设定默认的补全动作\n" +" -E\t对于 \"empty\" 命令设定补全动作,—— 对于空行的补全。\n" +" -I\t将补全和动作应用在首å•è¯ï¼ˆé€šå¸¸æ˜¯æ‰€ç»™å‘½ä»¤ï¼‰ä¸Š\n" +" \n" +" å°è¯•补全时,按照上述大写字æ¯é€‰é¡¹çš„顺åºè¿›è¡ŒåŠ¨ä½œã€‚\n" +" 如果给出了多个选项,-D 选项优先级高于 -E 选项,且\n" +" 这两个选项优先级å‡é«˜äºŽ -I。\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者错误å‘生。" + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"便®é€‰é¡¹æ˜¾ç¤ºå¯èƒ½çš„补全。\n" +" \n" +" æ„图在能产生å¯èƒ½çš„补全的 shell 函数内部使用。\n" +" 如果æä¾›äº†å¯é€‰çš„ WORD 傿•°ï¼Œåˆ™äº§ç”ŸæŒ‰ç…§ WORD\n" +" 进行的匹é…。\n" +" \n" +" 退出状æ€ï¼š\n" +" 除éžä½¿ç”¨äº†æ— æ•ˆé€‰é¡¹æˆ–者错误å‘生,å¦åˆ™è¿”回æˆåŠŸã€‚" + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"修改或显示补全选项。\n" +" \n" +" 修改æ¯ä¸ª NAME å称的补全选项,或如果没有æä¾› NAME å称,执行当å‰çš„è¡¥" +"全。\n" +" 如果ä¸å¸¦é€‰é¡¹ï¼Œæ‰“å°æ¯ä¸ª NAME å称的补全选项或当å‰çš„补全声明。\n" +" \n" +" 选项:\n" +" \t-o option\t为æ¯ä¸ª NAME å称设定补全选项 option\n" +" \t-D\t\t为 \"default\" 命令补全改å˜é€‰é¡¹\n" +" \t-E\t\t为 \"empty\" 命令补全改å˜é€‰é¡¹\n" +" \t-I\t\t为首å•è¯çš„补全改å˜é€‰é¡¹\n" +" \n" +" 使用 `+o' è€Œä¸æ˜¯ `-o' å¯ä»¥å…³é—­æŒ‡å®šçš„选项。\n" +" \n" +" 傿•°ï¼š\n" +" \n" +" æ¯ä¸ª NAME å称都对应一个之å‰ä»¥é€šè¿‡ `complete' 内建定义了的补全声明的\n" +" å‘½ä»¤ã€‚å¦‚æžœä¸æä¾› NAME å称,当å‰ç”Ÿæˆè¡¥å…¨çš„函数必须调用 compopt,\n" +" 并䏔当剿‰§è¡Œçš„补全生æˆå™¨é€‰é¡¹ä¼šè¢«ä¿®æ”¹ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称没有定义补全声明。" + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"从标准输入读å–行到下标数组å˜é‡ä¸­ã€‚\n" +" \n" +" 从标准输入读å–行到下标数组å˜é‡ ARRAY 中,或者如果使用了 -u 选项,\n" +" 从文件æè¿°ç¬¦ FD 中读å–。MAPFILE å˜é‡æ˜¯é»˜è®¤çš„ ARRAY å˜é‡ã€‚\n" +" \n" +" 选项:\n" +" -d delim\t使用 DELIM è€Œéžæ¢è¡Œç¬¦æ–­è¡Œ\n" +" -n count\tæœ€å¤šæ‹·è´ COUNT 行,如果 COUNT 为 0ï¼Œåˆ™æ‹·è´æ‰€æœ‰è¡Œã€‚\n" +" -O origin\t从下标 ORIGIN 开始 赋值给 ARRAY å˜é‡ã€‚默认下标是0.\n" +" -s count \t丢弃最先读å–çš„ COUNT 行。\n" +" -t\t\t从读å–çš„æ¯è¡Œæœ«å°¾åˆ é™¤ä¸€ä¸ªæ¢è¡Œç¬¦ã€‚\n" +" -u fd\t\t从文件æè¿°ç¬¦ FD 中读å–è¡Œè€Œä¸æ˜¯æ ‡å‡†è¾“入。\n" +" -C callback\tæ¯ QUANTUM 次读行之åŽå¯¹ CALLBACK 回调进行估值。\n" +" -c quantum\tå®šä¹‰æ¯æ¬¡è°ƒç”¨ CALLBACK 回调之间读å–的行数。\n" +" \n" +" 傿•°ï¼š\n" +" ARRAY\t\t存储数æ®ä½¿ç”¨çš„æ•°ç»„å˜é‡\n" +" \n" +" 如果使用了 -C 而没有 -c,默认的é‡å­æ˜¯5000。当对 CALLBACK 估值时,\n" +" 下一个将被赋值的数组元素的下标作为é¢å¤–傿•°è¢«ä¼ é€’。\n" +" \n" +" å¦‚æžœæ²¡æœ‰æ˜¾å¼æŒ‡å®šèµ·å§‹ä¸‹æ ‡ï¼Œmapfile å°†åœ¨èµ‹å€¼å‰æ¸…空 ARRAY å˜é‡ã€‚\n" +" \n" +" 退出状æ€ï¼š\n" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者 ARRAY å˜é‡åªè¯»æˆ–䏿˜¯ä¸‹æ ‡æ•°ç»„。" + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"从一个文件中读å–行到数组å˜é‡ä¸­ã€‚\n" +" \n" +" 一个 `mapfile'çš„åŒä¹‰è¯ã€‚" + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "返回当å‰å­ä¾‹ç¨‹è°ƒç”¨çš„上下文\n" +#~ " \n" +#~ " ä¸å¸¦ EXPR 时,返回 " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: 进程 %5ld(%s) 进入 the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "æœªçŸ¥ä¿¡å· #" + +# Inc. çš„ . 是个缩写 +#~ msgid "Copyright (C) 2018 Free Software Foundation, Inc." +#~ msgstr "ç‰ˆæƒæ‰€æœ‰ (C) 2018 自由软件基金会" + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "ç‰ˆæƒæ‰€æœ‰ (C) 2014 自由软件基金会." + +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "ç‰ˆæƒæ‰€æœ‰ (C) 2009 自由软件基金会\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "许å¯è¯ GPLv2+: GNU GPL 许å¯è¯ç¬¬äºŒç‰ˆæˆ–者更新版本 \n" + +#~ msgid "" +#~ ". With EXPR, returns\n" +#~ " " +#~ msgstr "" +#~ ". 带有 EXPR 时, 返回\n" +#~ " " + +#~ msgid "" +#~ "; this extra information can be used to\n" +#~ " 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." +#~ msgstr "" +#~ "; 这个é¢å¤–ä¿¡æ¯å¯è¢«ç”¨äºŽ\n" +#~ " æä¾›æ ˆè¿½è¸ª.\n" +#~ " \n" +#~ " EXPR 的值显示了回到当å‰è°ƒç”¨å¸§ä¹‹å‰\n" +#~ " 的调用帧书目; 栈顶帧是第0帧." diff --git a/bash-5.1/po/zh_TW.gmo b/bash-5.1/po/zh_TW.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f566ab31872c22446175e44e409ddc354b8f7c9d GIT binary patch literal 149275 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 jS3gVerO+c!Lzo$o`3O+TKTv{-B6ta~b, 2008. +# Mingye Wang (Arthur2e5) , 2015. +# Wei-Lun Chao , 2015. +# pan93412 , 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2020-01-19 00:50+0800\n" +"Last-Translator: pan93412 \n" +"Language-Team: Chinese (traditional) \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 19.04.3\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "é™£åˆ—ä¸‹æ¨™ä¸æ­£ç¢º" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s:正在移除 nameref 屬性" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: 無法將索引陣列轉化為關è¯é™£åˆ—" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: 無效的關è¯é™£åˆ—éµå€¼" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: ç„¡æ³•æŒ‡æ´¾ç‚ºéžæ•¸å­—的索引" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: 指派為關è¯é™£åˆ—時必須使用下標" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: 無法建立: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: ç„¡æ³•ç‚ºæŒ‡ä»¤æ‰¾åˆ°æŒ‰éµæ˜ å°„" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: 第一個éžç©ºå­—å…ƒä¸æ˜¯ã€Œ\"ã€" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "%2$s 中沒有閉åˆçš„「%1$cã€" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: 缺少冒號分隔符" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "「%sã€: 無法解除ç¶å®š" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "大括號展開:無法為 %s 分é…記憶體" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "大括號展開:為 %u 個元素分é…記憶體失敗" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "大括號展開:為「%sã€åˆ†é…記憶體失敗" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "「%sã€: 無效的別å" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "未啟用列編輯" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "「%sã€: ç„¡æ•ˆçš„æŒ‰éµæ˜ å°„å" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s:ä¸èƒ½è®€å–:%s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "「%sã€ï¼šä¸æ˜Žå‡½æ•¸å稱" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s 未與任何按éµç¶å®šã€‚\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s å¯ä»¥è¢«å‘¼å«ï¼Œè—‰ç”±" + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "「%sã€: 無法解除ç¶å®š" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "迴圈計數" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "僅在「forã€ï¼Œã€Œwhileã€ï¼Œ 或者「untilã€è¿´åœˆä¸­æœ‰æ„義" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"回傳目å‰å­å‘¼å«çš„語境。\n" +" \n" +" ä¸å¸¶æœ‰ EXPR 時,回傳「$line $filenameã€ã€‚帶有 EXPR 時,回傳\n" +" 「$line $subroutine $filenameã€ï¼›é€™å€‹é¡å¤–的資訊å¯ä»¥è¢«ç”¨æ–¼æä¾›\n" +" 堆疊追蹤。\n" +" \n" +" EXPR 的值顯示了到目å‰å‘¼å«æ¡†æ ¼éœ€è¦å›žåŽ»å¤šå°‘å€‹å‘¼å«æ¡†æ ¼ï¼›é ‚部框格\n" +" 是第 0 框格。\n" +" \n" +" 退出狀態:\n" +" é™¤éž shell ä¸åœ¨åŸ·è¡Œä¸€å€‹ shell 函數或者 EXPR 無效,å¦å‰‡å›žå‚³çµ\n" +" 果為 0。" + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "未設定 HOME" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "å¤ªå¤šåƒæ•¸" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "空的目錄" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "未設定 OLDPWD" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "第 %d 列:" + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "警告:" + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s:用法:" + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s:é¸é …需è¦ä¸€å€‹åƒæ•¸" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%sï¼šéœ€è¦æ•¸å­—åƒæ•¸" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s:沒有找到" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s:無效é¸é …" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s:無效é¸é …å稱" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "「%sã€ï¼šä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„識別符" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "ç„¡æ•ˆçš„å…«é€²ä½æ•¸å­—" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "無效的å六進使•¸å­—" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "無效數字" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%sï¼šç„¡æ•ˆçš„è¨Šè™Ÿè¦æ ¼" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "「%sã€ï¼šä¸æ˜¯ä¸€å€‹ pid æˆ–æœ‰æ•ˆçš„å·¥ä½œè¦æ ¼" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s:唯讀的變數" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s:%s 超出範åœ" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "åƒæ•¸" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s 超出範åœ" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s:沒有此類工作" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s:沒有工作控制" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "沒有工作控制" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s:å—é™çš„" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "å—é™çš„" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%sï¼šä¸æ˜¯ä¸€å€‹å…§å»º shell" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "寫入時發生錯誤:%s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "設定終端屬性時發生錯誤: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "å–得終端屬性時發生錯誤: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s:檢索目å‰ç›®éŒ„時發生錯誤:%s:%s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s:模稜兩å¯çš„å·¥ä½œè¦æ ¼" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "這個版本沒有å¯ç”¨çš„說明" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: ç„¡æ³•å–æ¶ˆè¨­å®š: 唯讀 %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: ç„¡æ³•å–æ¶ˆè¨­å®š" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s:無效的功能å稱" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s:沒有完æˆçš„è¦æ ¼" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "警告:-F é¸é …å¯èƒ½ç„¡æ³•æŒ‰é æœŸå·¥ä½œ" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "警告:-C é¸é …å¯èƒ½ç„¡æ³•æŒ‰é æœŸå·¥ä½œ" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "ç›®å‰æœªåŸ·è¡Œè£œå®ŒåŠŸèƒ½" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "åªèƒ½ç”¨åœ¨å‡½æ•¸ä¸­" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: 引用變數ä¸èƒ½ç‚ºé™£åˆ—" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: ä¸å…許å稱引用變數引用自身" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: 迴圈變數å引用" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "「%sã€ï¼šç„¡æ•ˆçš„引用變數å" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "無法用「-fã€ç”¢ç”Ÿå‡½æ•¸" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s:唯讀函數" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s:ä¸å»ºè­°ä½¿ç”¨å¼•用的複åˆé™£åˆ—指定" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: 無法以這種方å¼éŠ·æ¯€é™£åˆ—è®Šæ•¸" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: 無法將關è¯é™£åˆ—轉化為索引陣列" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "動態載入ä¸å¯ç”¨" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "無法開啟共享物件 %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "無法在共享物件 %2$s 中找到 %1$s: %3$s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: 未以動態方å¼è¼‰å…¥" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "為 %s è¼‰å…¥å‡½å¼æ™‚回傳錯誤 (%d):尚未載入" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: 未以動態方å¼è¼‰å…¥" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: 無法刪除: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: 是一個目錄" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: 䏿˜¯ä¸€èˆ¬æª”案" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: 檔案太大" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: ç„¡æ³•åŸ·è¡ŒäºŒé€²ä½æª”案" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: 無法執行: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "登出\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "䏿˜¯ç™»å…¥ shell: 使用「exitã€" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "æœ‰åœæ­¢çš„工作。\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "有執行中的工作。\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "未找到指令" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "æ­·å²è¨˜éŒ„è¦æ ¼" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: 無法開啟暫存檔案: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "ç›®å‰" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "在ä¸å¸¶å·¥ä½œæŽ§åˆ¶çš„æƒ…æ³ä¸‹å•Ÿå‹•了工作 %d" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s:ä¸åˆæ³•çš„é¸é … ─ %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: é¸é …需è¦ä¸€å€‹åƒæ•¸ -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "å·²åœç”¨é›œæ¹Š" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: 雜湊表為空\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "命中\t指令\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Shell 指令,符åˆé—œéµå­— `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"沒有與「%sã€ç¬¦åˆçš„說明主題。嘗試「help helpã€æˆ–「man -k %sã€æˆ–「info %sã€ã€‚" + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: 無法開啟: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"這些 shell 指令是內部定義的。請輸入「helpã€ä»¥å–得一個列表。\n" +"輸入「help å稱ã€ä»¥å¾—到有關函數「å稱ã€çš„æ›´å¤šè³‡è¨Šã€‚\n" +"使用「info bashã€ä¾†ç²å¾—關於 shell 的更多一般性資訊。\n" +"使用「man -kã€æˆ–「infoã€ä¾†å–å¾—ä¸åœ¨åˆ—表中指令的更多資訊。\n" +"\n" +"å稱æ—邊的星號(*)表示該指令被åœç”¨ã€‚\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "最多能使用 -anrw é¸é …之一" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "æ­·å²è¨˜éŒ„ä½ç½®" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s:無效時間戳" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: æ­·å²è¨˜éŒ„擴充套件失敗" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib 失敗" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "å…¶ä»–é¸é …ä¸èƒ½èˆ‡ã€Œ-xã€åŒæ™‚使用" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: åƒæ•¸å¿…須是行程或工作 ID" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "未知錯誤" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "需è¦è¡¨ç¤ºå¼" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: 䏿˜¯ä¸€å€‹ç´¢å¼•陣列" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: 無效的檔案æè¿°ç¬¦è¦æ ¼" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: 無效的檔案æè¿°ç¬¦: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: 無效的列數" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: 無效的陣列原點" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: 無效的回呼定é‡" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "空陣列變數å" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "需è¦é™£åˆ—變數支æ´" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "「%sã€: 缺少格å¼å­—å…ƒ" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "「%cã€: 無效的時間格å¼è¦æ ¼" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "「%cã€: 無效格å¼å­—å…ƒ" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "警告: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "æ ¼å¼è§£æžå•題: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "使用了 \\x 但缺少å六進使•¸å­—" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "使用了 \\%c 但缺少è¬åœ‹ç¢¼æ•¸å­—" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "無其他目錄" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: ç„¡æ•ˆåƒæ•¸" + +#: builtins/pushd.def:480 +msgid "" +msgstr "<ç„¡ç›®å‰ç›®éŒ„>" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "目錄堆疊為空" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "目錄堆疊索引" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"顯示目å‰è¨˜ä½çš„目錄列表。 目錄\n" +" 藉由「pushdã€æŒ‡ä»¤åŠ å…¥é€™å€‹åˆ—è¡¨ï¼›æ‚¨å¯ä»¥\n" +" 使用「popdã€æŒ‡ä»¤å°åˆ—è¡¨é€²è¡Œéæ­·ã€‚\n" +" \n" +" é¸é …:\n" +" -c\t刪除所有元素以清除目錄堆疊\n" +" -l\tä¸å°å‡ºèˆ‡å®¶ç›®éŒ„相關的以波浪號\n" +" \t為字首的目錄\n" +" -p\tæ¯åˆ—一個æ¢ç›®å°å‡ºç›®éŒ„堆疊\n" +" -v\t以堆疊ä½ç½®ç‚ºå­—首,æ¯åˆ—一個æ¢ç›®\n" +" \tå°å‡ºç›®éŒ„堆疊\n" +" \n" +" åƒæ•¸:\n" +" +N\t以 dirs ä¸å¸¶é¸é …輸出的順åºï¼Œå¾žå·¦èµ·ç¬¬ N 個æ¢ç›®é¡¯ç¤ºåˆ—表,\n" +" \t從 0 開始。\n" +" \n" +" -N\t以 dirs ä¸å¸¶é¸é …輸出的順åºï¼Œå¾žå³èµ·ç¬¬ N 個項目顯示列表,\n" +"\t從 0 開始。" + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"在目錄堆疊頂部加入一個目錄,或者論詢\n" +" 目錄堆疊,是目å‰å·¥ä½œç›®éŒ„æˆç‚ºæ–°çš„堆疊頂端\n" +" ä¸å¸¶åƒæ•¸æ™‚,交æ›å †ç–Šé ‚端的兩個目錄。\n" +" \n" +" é¸é …:\n" +" -n\t抑制增加堆疊中目錄時通常變更目錄的æ“作,\n" +" \tå¾žè€Œåªæœ‰å †ç–Šè¢«æ“作。\n" +" \n" +" åƒæ•¸ï¼š\n" +" +N\t輪轉堆疊使得第 N 個目錄(「dirsã€çš„\n" +" \t輸出列表中左起,從 0 é–‹å§‹)\n" +" \tå‡è‡³å †ç–Šé ‚端。\n" +" \n" +" -N\t輪轉堆疊使得第 N 個目錄(「dirsã€çš„\n" +" \t輸出列表中å³èµ·ï¼Œå¾ž 0 é–‹å§‹)\n" +" \tå‡è‡³å †ç–Šé ‚端\n" +" \n" +" dir\t新增目錄至堆疊頂端,並\n" +" \t使其æˆç‚ºæ–°çš„ç›®å‰å·¥ä½œç›®éŒ„。\n" +" \n" +" 「dirsã€å…§å»ºæŒ‡ä»¤é¡¯ç¤ºç›®éŒ„堆疊。" + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"從目錄堆疊中刪除æ¢ç›®ã€‚ä¸å¸¶åƒæ•¸æ™‚,刪除\n" +" 堆疊頂端目錄並變更至新的堆疊頂端目錄。\n" +" \n" +" é¸é …:\n" +" -n\t抑制從堆疊中刪除目錄時通常變更目錄æ“作,\n" +" \tå¾žè€Œåªæœ‰å †ç–Šè¢«æ“作。\n" +" \n" +" åƒæ•¸ï¼š\n" +" +N\t從「dirsã€è¼¸å‡ºçš„列表中,\n" +" \t刪除左起第 N 個æ¢ç›®ï¼Œè¨ˆæ•¸å¾ž 0 開始。例如:「popd +0ã€\n" +" \t刪除第一個目錄,「popd +1ã€åˆªé™¤ç¬¬äºŒå€‹ã€‚\n" +" \n" +" -N\t從「dirsã€è¼¸å‡ºçš„列表中,\n" +" \t刪除å³èµ·ç¬¬ N 個æ¢ç›®ï¼Œè¨ˆæ•¸å¾ž 0 開始,例如:「popd -0ã€\n" +" \t刪除最後一個æ¢ç›®ï¼Œã€Œpopd -1ã€åˆªé™¤å€’數第二個。\n" +" \n" +" 「dirsã€å…§å»ºè®Šæ•¸é¡¯ç¤ºç›®éŒ„堆疊。" + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: ç„¡æ•ˆçš„é€¾æ™‚è¦æ ¼" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "讀å–錯誤: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "åªèƒ½å¾žå‡½æ•¸æˆ–者原始指令稿「returnã€" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "ç„¡æ³•åŒæ™‚å–æ¶ˆè¨­å®šä¸€å€‹å‡½æ•¸å’Œä¸€å€‹è®Šæ•¸" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: 䏿˜¯é™£åˆ—變數" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: 䏿˜¯å‡½æ•¸" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s:無法匯出" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "ä½ç§»è¨ˆæ•¸" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "ç„¡æ³•åŒæ™‚è¨­å®šå’Œå–æ¶ˆè¨­å®š shell é¸é …" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: 無效的 shell é¸é …å稱" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "éœ€è¦æª”ååƒæ•¸" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: 檔案未找到" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "無法暫åœ" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "無法暫åœç™»å…¥ shell" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s 是「%sã€çš„別å\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s 是 shell é—œéµå­—\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s 是一個函數\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s 是特別的 shell 內建物件\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s 是 shell 內建物件\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s 是 %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s 已進行雜湊æ“作 (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: 無效的 limit åƒæ•¸" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "「%cã€ï¼šä¸ç•¶çš„æŒ‡ä»¤" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s:ä¸èƒ½å¾—到 limit: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "limit" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s:ä¸èƒ½ä¿®æ”¹ limit: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "八進使•¸å­—" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "「%cã€: 無效的符號狀態é‹ç®—å­" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "「%cã€: 無效的符號狀態字元" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " 列 " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "最後的指令:%s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "中止…" + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "通知:" + +#: error.c:462 +msgid "unknown command error" +msgstr "䏿˜ŽæŒ‡ä»¤éŒ¯èª¤" + +#: error.c:463 +msgid "bad command type" +msgstr "ä¸ç•¶çš„æŒ‡ä»¤é¡žåž‹" + +#: error.c:464 +msgid "bad connector" +msgstr "ä¸ç•¶çš„連接器" + +#: error.c:465 +msgid "bad jump" +msgstr "錯誤的跳轉" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: 未ç¶å®šçš„變數" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\a 等待輸入逾時:自動登出\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "無法從 /dev/null é‡å®šå‘標準輸入: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "時間格å¼:「%cã€: 無效的格å¼å­—å…ƒ" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc:coproc [%d:%s] ä»ç„¶å­˜åœ¨" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "管é“錯誤" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval:超出最大 eval 巢狀層數 (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: 超出最大來æºå·¢ç‹€å±¤æ•¸ (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: 超出最大函數巢狀層數 (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: å—é™çš„: 無法在指令å稱中使用「/ã€" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s:指令找ä¸åˆ°" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: ä¸ç•¶çš„直譯器" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: ç„¡æ³•åŸ·è¡ŒäºŒé€²ä½æª”案: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "「%sã€: 特殊內建" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "無法複製檔案æè¿°ç¬¦ %d 到檔案æè¿°ç¬¦ %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "表示å¼éžè¿´å±¤æ¬¡è¶…出範åœ" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "éžè¿´å †ç–Šä¸‹é™æº¢ä½" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "表示å¼èªžæ³•錯誤" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "嘗試指派給éžè®Šæ•¸" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "變數定義語法錯誤" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "除 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "錯誤:ä¸ç•¶çš„表示å¼å­—組" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "æ¢ä»¶è¡¨ç¤ºå¼éœ€è¦ã€Œ:ã€" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "æŒ‡æ•¸å°æ–¼ 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "é å¢žç¬¦æˆ–é æ¸›ç¬¦å¾Œæ‡‰è·Ÿæœ‰è­˜åˆ¥ç¬¦" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "缺少「)ã€" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "語法錯誤: 需è¦é‹ç®—å…ƒ" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "語法錯誤: 無效的算術é‹ç®—å­" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (錯誤字組是「%sã€)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "無效的算術進ä½" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: 無效的列數" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "數值太大ä¸å¯ç‚ºç®—術進ä½çš„基底" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: 表示å¼éŒ¯èª¤\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: 無法存å–上層目錄" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "無法為檔案æè¿°ç¬¦ %d é‡è¨­ç„¡å»¶é²æ¨¡å¼" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "無法為來自 fd %d çš„ bash è¼¸å…¥åˆ†é…æ–°çš„æª”案æè¿°ç¬¦" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: 已經存在æä¾›çµ¦æ–° fd %d 的緩è¡å€" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: 行程群組管é“" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "產生的行程識別碼 %d 顯示為執行中的工作 %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "刪除行程群組 %2$ld ä¸­å·²åœæ­¢çš„工作 %1$d" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: 行程識別碼 %5ld(%s) æ¨™è¨»ç‚ºä»æ´»è‘—" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: 無此行程識別碼" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "訊號 %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "已完æˆ" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "åœæ­¢" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "å·²åœæ­¢(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "執行中" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "已完æˆ(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "退出 %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "䏿˜Žç‹€æ…‹" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(核心已傾å°)" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (工作目錄: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "å­è¡Œç¨‹ setpgid (%ld 到 %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: 行程識別碼 %ld 䏿˜¯ç›®å‰ shell çš„å­è¡Œç¨‹" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wiat_for: 沒有行程 %ld 的紀錄" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: 工作 %d å·²åœæ­¢" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s:沒有此類工作" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: 工作已經終止" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: 工作 %d 已在背景執行" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: 開啟 WNOHANG 以é¿å…ç„¡é™é˜»å¡ž" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: 第 %d 列:" + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (核心已傾å°)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(ç›®å‰å·¥ä½œç›®éŒ„:%s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp 失敗" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control:背景中沒有工作控制" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: 列è¦å¾‹" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "無法設定終端行程群組(%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "æ­¤ shell 中無工作控制" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: 主張失敗: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: 主張已修補\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "䏿˜Ž" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: 空閒串列中的å€å¡Šæå£ž" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: 用已經釋放的å€å¡Šåšç‚ºå‘¼å«åƒæ•¸" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: 用未分é…çš„å€å¡Šåšç‚ºå‘¼å«åƒæ•¸" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: æª¢æ¸¬åˆ°ä¸‹é™æº¢ä½ï¼›mh_nbytes 超出範åœ" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: æª¢æ¸¬åˆ°ä¸‹é™æº¢ä½ï¼›mh_nbytes 超出範åœ" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: 啟始和末尾å€å¡Šå¤§å°ä¸ä¸€è‡´" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: 用未分é…çš„å€å¡Šåšç‚ºå‘¼å«åƒæ•¸" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: æª¢æ¸¬åˆ°ä¸‹é™æº¢ä½ï¼›mh_nbytes 超出範åœ" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: æª¢æ¸¬åˆ°ä¸‹é™æº¢ä½ï¼›mh_nbytes 超出範åœ" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: 啟始和末尾å€å¡Šå¤§å°ä¸ä¸€è‡´" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: 分é…表已經充滿了 FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p 在表中顯示為已分é…?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p 在表中顯示為已釋放?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "無效的基底" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%sï¼šä¸æ˜Žçš„主機" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s:無效æœå‹™" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s:ä¸ç•¶çš„ç¶²è·¯è·¯å¾‘è¦æ ¼" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "䏿”¯æ´ç¶²è·¯æ“作" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: 無法變更語å€é¸é … (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: 無法變更語å€é¸é … (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: 無法變更語å€é¸é … (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: 無法變更語å€é¸é … (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "您有郵件在 $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "您有新郵件在 $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "郵件在 %s 已閱讀\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "語法錯誤:需è¦ç®—å¼" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "語法錯誤:「;ã€æ„外" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "語法錯誤:「((%s))ã€" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document:ä¸ç•¶çš„æŒ‡ç¤ºé¡žåž‹ %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "ç«‹å³æª”案在第 %d åˆ—è¢«æª”æ¡ˆçµæŸç¬¦åˆ†éš” (需è¦ã€Œ%sã€)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirectionï¼šé‡æ–°å°Žå‘指示「%dã€è¶…出範åœ" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "shell_getc: shell_input_line_size (%zu) è¶…éŽ SIZE_MAX (%lu):列被截斷" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "è¶…éŽæ­¤è™•æª”æ¡ˆä¸Šé™æœ€å¤§å€¼" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "尋找符åˆçš„「%cã€æ™‚é‡åˆ°äº†æœªé æœŸçš„æª”æ¡ˆçµæŸç¬¦" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "尋找「]]ã€æ™‚é‡åˆ°äº†æœªé æœŸçš„æª”æ¡ˆçµæŸç¬¦" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "æ¢ä»¶è¡¨ç¤ºå¼ä¸­æœ‰èªžæ³•錯誤: æœªé æœŸçš„字組「%sã€" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "語法錯誤,在有æ¢ä»¶çš„表示å¼" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "æœªé æœŸçš„字組「%sã€ï¼Œéœ€è¦ã€Œ)ã€" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "é æœŸã€Œ)ã€" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "一元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„åƒæ•¸ã€Œ%sã€" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "一元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„åƒæ•¸" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "æœªé æœŸçš„字組「%sã€ï¼Œéœ€è¦äºŒå…ƒæ¢ä»¶é‹ç®—å­" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "需è¦äºŒå…ƒæ¢ä»¶é‹ç®—å­" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "二元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„åƒæ•¸ã€Œ%sã€" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "二元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„åƒæ•¸" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "æ¢ä»¶æŒ‡ä»¤ä¸­æœ‰æœªé æœŸçš„字組「%cã€" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "æ¢ä»¶æŒ‡ä»¤ä¸­æœ‰æœªé æœŸçš„字組「%sã€" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "æ¢ä»¶æŒ‡ä»¤ä¸­æœ‰æœªé æœŸçš„字組 %d" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "æœªé æœŸçš„字組「%sã€é™„近有語法錯誤" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "「%sã€é™„近有語法錯誤" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "語法錯誤: æœªé æœŸçš„æª”案çµå°¾" + +#: parse.y:6365 +msgid "syntax error" +msgstr "語法錯誤" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "使用「%sã€é€€å‡º shell。\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "尋找符åˆçš„「)ã€æ™‚é‡åˆ°äº†æœªé æœŸçš„æª”æ¡ˆçµæŸç¬¦" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "補完: 未找到函數「%sã€" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion:%s:å¯èƒ½é‡è©¦è¿´åœˆ" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: ç©ºçš„è£œå®Œè¦æ ¼" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: 錯誤的æ¢ä»¶é€£æŽ¥ç¬¦ã€Œ%dã€" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: 無效的檔案æè¿°ç¬¦" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: 空的檔案指標" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf:「%cã€: 無效的格å¼å­—å…ƒ" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "檔案æè¿°ç¬¦è¶…出範åœ" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: 模稜兩å¯çš„é‡å®šå‘" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: 無法覆寫已存在的檔案" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: å—é™çš„: 無法é‡å®šå‘輸出" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "ç„¡æ³•ç‚ºç«‹å³æª”案建立暫存檔案: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: 無法將檔案æè¿°ç¬¦æŒ‡æ´¾çµ¦è®Šæ•¸" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "æ²’æœ‰ç¶²è·¯æ™‚ä¸æ”¯æ´ /dev/(tcp|udp)/host/port" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "é‡å®šå‘錯誤: 無法複製檔案æè¿°ç¬¦" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "無法找到 /tmp,請建立" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp 必須為有效的目錄å稱" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "å·²åœ¨äº’å‹•å¼ shell 中忽略美化輸出模å¼" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c:無效é¸é …" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "無法設定 UID 至 %d:有效的 UID %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "無法設定 GID 至 %d:有效的 GID %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "無法開啟åµéŒ¯å™¨ï¼›åµéŒ¯æ¨¡å¼å·²åœç”¨" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: 是一個目錄" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "我沒有åå­—ï¼" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash,版本 %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"用法:\t%s [GNU é•·é¸é …] [é¸é …] …\n" +"\t%s [GNU é•·é¸é …] [é¸é …] 指令稿檔案 …\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU é•·é¸é …:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Shell é¸é …:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD 或 -c <指令> 或 -O \t\t(僅é©åˆå‘¼å«)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s or -o é¸é …\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "輸入「%s -c \"help set\"ã€æ›´å¤šé—œæ–¼ shell é¸é …的訊æ¯ã€‚\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "輸入「%s -c helpã€æ›´å¤šé—œæ–¼å…§å»º shell 指令的訊æ¯ã€‚\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "使用「bashbugã€æŒ‡ä»¤é€šå ±ç¨‹å¼éŒ¯èª¤ã€‚\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "bash 官網:\n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "GNU 軟體的常見使用說明:\n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask:%d:無效æ“作" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "å½è¨Šè™Ÿ" + +#: siglist.c:50 +msgid "Hangup" +msgstr "掛斷" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "中止" + +#: siglist.c:58 +msgid "Quit" +msgstr "çµæŸ" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "無效指令" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "斷點追蹤/陷阱" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "放棄指令" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "模擬器陷阱指令" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "期望浮點數" + +#: siglist.c:86 +msgid "Killed" +msgstr "å¼·åˆ¶çµæŸ" + +#: siglist.c:90 +msgid "Bus error" +msgstr "åŒ¯æµæŽ’éŒ¯èª¤" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "程å¼è¨˜æ†¶é«”倿®µéŒ¯èª¤" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "無效系統呼å«" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "管線æå£ž" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "鬧é˜" + +#: siglist.c:110 +msgid "Terminated" +msgstr "終止" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "緊急 I/O ç‹€æ³" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "åœæ­¢ï¼ˆä¿¡è™Ÿï¼‰" + +#: siglist.c:126 +msgid "Continue" +msgstr "繼續" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "å­è¡Œç¨‹å·²æ­»æˆ–è€…åœæ­¢" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "åœæ­¢ï¼ˆtty 輸入)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "åœæ­¢ï¼ˆtty 輸出)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O 就緒" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU é™åˆ¶" + +#: siglist.c:154 +msgid "File limit" +msgstr "檔案é™åˆ¶" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "警報(虛擬)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "警報(å´å¯«)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "已變更視窗" + +#: siglist.c:170 +msgid "Record lock" +msgstr "記錄鎖" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "使用者訊號 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "使用者訊號 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT 待輸入資料" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "å³å°‡åœæ­¢é›»æº" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "系統å³å°‡å´©æ½°" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "é·ç§»è¡Œç¨‹è‡³å¦ä¸€å€‹ CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "程å¼è¨­è¨ˆéŒ¯èª¤" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "已授予 HFT 監視模å¼" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "已復原 HFT 監視模å¼" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "å·²å®Œæˆ HFT è²éŸ³åºåˆ—" + +#: siglist.c:214 +msgid "Information request" +msgstr "資訊請求" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "䏿˜Žè¨Šè™Ÿ #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "錯誤的å–代: 在 %2$s 中沒有閉åˆçš„「%1$sã€" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: 無法將串列指派給陣列æˆå“¡" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "無法為行程å–代建立管é“" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "無法為行程å–代建立å­è¡Œç¨‹" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "無法開啟命åç®¡é“ %s 進 readline-" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "無法開啟命åç®¡é“ %s 進行寫入" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "無法將命åç®¡é“ %s åšç‚ºæª”案æè¿°ç¬¦ %d 複製" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "指令å–代:在輸入中忽略了空ä½å…ƒçµ„" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "無法為指令å–代建立管é“" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "無法為指令å–代建立å­è¡Œç¨‹" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: 無法將管é“複製為檔案æè¿°ç¬¦ 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: 無效的引用變數å" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: 無效的間接擴充" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s:無效的變數å稱" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%sï¼šåƒæ•¸æœªè¨­å®š" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: åƒæ•¸ç‚ºç©ºæˆ–未設定" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: å­ä¸²è¡¨ç¤ºå¼ < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: 錯誤的å–代" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: 無法如此指派" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "未來版本的 shell 會強制以算術å–代求值" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "錯誤的å–代: 在 %s 中沒有閉åˆçš„「`ã€" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "無符åˆ: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "需è¦åƒæ•¸" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: éœ€è¦æ•´æ•¸è¡¨ç¤ºå¼" + +#: test.c:265 +msgid "`)' expected" +msgstr "需è¦ã€Œ)ã€" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "需è¦ã€Œ)ã€ï¼Œå¾—到 %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: 需è¦äºŒå…ƒè¡¨ç¤ºå¼" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: 需è¦ä¸€å…ƒè¡¨ç¤ºå¼" + +#: test.c:881 +msgid "missing `]'" +msgstr "缺少「]ã€" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "語法錯誤:「;ã€æ„外" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "無效訊號數字" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "æ•æ‰è™•ç†å‡½å¼ï¼šé”åˆ°æœ€å¤§æ•æ‰è™•ç†å‡½å¼ç­‰ç´š (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: trap_list[%d] 中的錯誤值: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_trapsï¼šè¨Šè™Ÿè™•ç†æ˜¯ SIG_DFL,resending %d (%s) to myself" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler:ä¸ç•¶çš„訊號 %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "錯誤,輸入的函數定義為「%sã€" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "shell 層次 (%d) 太高,é‡è¨­ç‚º 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: ç›®å‰ä½œç”¨åŸŸä¸­æ²’有函數語境" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: 變數ä¸å¯æŒ‡æ´¾å€¼" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s:指定數字至å稱åƒè€ƒ" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: ç›®å‰ä½œç”¨åŸŸä¸­æ²’有函數語境" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s 有空的 exportstr" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "%2$s çš„ exportstr 中有無效的字元 %1$d" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "%s çš„ exportstr 中沒有「=ã€" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: shell_variables çš„å‰ç«¯ä¸æ˜¯å‡½æ•¸èªžå¢ƒ" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: 沒有 global_variables 語境" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: shell_variables çš„å‰ç«¯ä¸æ˜¯è‡¨æ™‚環境作用域" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: 無法åšç‚ºæª”案開啟" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: 追蹤檔案æè¿°ç¬¦çš„值無效" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: 相容版本數值超出範åœ" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "著作權所有 (C) 2018 自由軟體基金會" + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"æŽˆæ¬Šæ¢æ¬¾ GPLv3+: GNU GPL æŽˆæ¬Šæ¢æ¬¾ç¬¬ä¸‰ç‰ˆæˆ–者更新版本 \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash,版本 %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "本軟體是自由軟體,您å¯ä»¥è‡ªç”±åœ°è®Šæ›´å’Œé‡æ–°ç™¼å¸ƒã€‚" + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "在法律許å¯çš„æƒ…æ³ä¸‹ç‰¹æ­¤æ˜Žç¤ºï¼Œæœ¬è»Ÿé«”ä¸æä¾›ä»»ä½•æ“”ä¿ã€‚" + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: ç„¡æ³•åˆ†é… %lu ä½å…ƒçµ„ (å·²åˆ†é… %lu ä½å…ƒçµ„)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: ç„¡æ³•åˆ†é… %lu ä½å…ƒçµ„" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: ç„¡æ³•åˆ†é… %lu ä½å…ƒçµ„ (å·²åˆ†é… %lu ä½å…ƒçµ„)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: ç„¡æ³•åˆ†é… %lu ä½å…ƒçµ„" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [å稱[=值] … ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] å稱 [å稱 …]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPSVX] [-m æŒ‰éµæ˜ å°„] [-f 檔å] [-q å稱] [-u å稱] [-r 按éµåºåˆ—] [-" +"x 按éµåºåˆ—:shell-指令] [按éµåºåˆ—:readline-函數 或 readline-指令]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell 內建物件 [åƒæ•¸ …]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [表示å¼]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [目錄]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] 指令 [åƒæ•¸ …]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [å稱[=值] …]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] å稱[=值] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [option] å稱[=值] …" + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [åƒæ•¸ …]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [åƒæ•¸ …]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f 檔å] [å稱 …]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [åƒæ•¸ …]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts é¸é …字串 å稱 [åƒæ•¸]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a å稱] [指令 [åƒæ•¸ …]] [é‡å®šå‘ …]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e 編輯器å] [-lnr] [èµ·å§‹] [終止] 或 fc -s [模å¼=å–代串] [指令]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [å·¥ä½œè¦æ ¼]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [å·¥ä½œè¦æ ¼ …]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p 路徑å] [-dt] [å稱 …]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [æ¨¡å¼ â€¦]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d åç§»é‡] [n] 或 history -anrw [檔å] 或 history -ps åƒæ•¸ [åƒ" +"數…]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [å·¥ä½œè¦æ ¼ …] 或 jobs -x 指令 [åƒæ•¸]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s è¨Šè™Ÿè¦æ ¼ | -n 訊號編號 | -è¨Šè™Ÿè¦æ ¼] 行程識別碼 | å·¥ä½œè¦æ ¼ … 或 kill " +"-l [è¨Šè™Ÿè¦æ ¼]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let åƒæ•¸ [åƒæ•¸ …]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a 陣列] [-d 分隔符] [-i ç·©è¡å€æ–‡å­—] [-n 讀å–字元數] [-N 讀å–å­—" +"元數] [-p æç¤ºç¬¦] [-t 逾時] [-u 檔案æè¿°ç¬¦] [å稱 …]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o é¸é …å] [--] [åƒæ•¸ …]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [å稱 …]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [å稱[=值] …] 或 export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [å稱[=值] …] 或 readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source 檔å [åƒæ•¸]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". 檔å [åƒæ•¸]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [表示å¼]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ åƒæ•¸â€¦ ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[åƒæ•¸] è¨Šè™Ÿè¦æ ¼ …]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] å稱 [å稱 …]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [模å¼]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [編號 …]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [行程識別碼 …]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for å稱 [in 字詞 … ] ; do 指令 ; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( 表示å¼1; 表示å¼2; 表示å¼3 )); do 指令 ; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAME [in 字詞 … ;] do 指令 ; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] 管é“" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case 詞 in [æ¨¡å¼ [| 模å¼]…) 指令 ;;]… esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "if 指令 ; then 指令 ; [ elif 指令 ; then 指令 ; ]… [ else 指令 ; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while 指令 ; do 指令 ; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until 指令 ; do 指令 ; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [å稱] 指令 [é‡å®šå‘]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function å稱 { 指令 ; } 或 name () { 指令 ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ 指令 ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( è¡¨ç¤ºå¼ ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ è¡¨ç¤ºå¼ ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - 一些 shell 變數的å稱和å«ç¾©" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | 目錄]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [é¸é …å …]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] æ ¼å¼ [åƒæ•¸]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o é¸é …] [-A 動作] [-G 全域模å¼] [-W " +"詞語列表] [-F 函數] [-C 指令] [-X éŽæ¿¾æ¨¡å¼] [-P 字首] [-S å­—å°¾] [å稱 …]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o é¸é …] [-DEI] [å稱 …]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d 分割符號] [-n 計數] [-O èµ·å§‹åºè™Ÿ] [-s 計數] [-t] [-u fd] [-C 回" +"呼] [-c 定é‡] [陣列]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"定義或顯示別å。\n" +" \n" +" ä¸å¸¶åƒæ•¸æ™‚,「aliasã€ä»¥å¯é‡ç”¨çš„æ ¼å¼\n" +" 「alias å稱=值ã€åœ¨æ¨™æº–輸出è£ç½®ä¸Šå°å‡ºåˆ¥å列表。\n" +" \n" +" å¦å‰‡ï¼Œå°æ–¼æ¯å€‹æŒ‡å®šå€¼çš„å稱定義一個別å。\n" +" 值末尾的空格會使下一個字詞被檢測\n" +" åšç‚ºåˆ¥åå–代展開。\n" +" \n" +" é¸é …:\n" +" -p\t以å¯é‡ç”¨çš„æ ¼å¼å°å‡ºæ‰€æœ‰çš„已定義別å\n" +" \n" +" 退出狀態:\n" +" 除éžä¸€å€‹æ²’有定義的å字被åšç‚ºåƒæ•¸æä¾›ï¼Œå¦å‰‡ alias \n" +" 回傳值為真。" + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"從別å定義列表中刪除æ¯ä¸€å€‹ <å稱>。\n" +" \n" +" é¸é …:\n" +" -a\t刪除所有的別å定義\n" +" \n" +" 回傳æˆåŠŸï¼Œé™¤éž <å稱> 䏿˜¯ä¸€å€‹å·²å­˜åœ¨çš„別å。" + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"設定 Readline 按éµç¶å®šå’Œè®Šæ•¸ã€‚\n" +" \n" +" ç¶å®šä¸€å€‹æŒ‰éµåºåˆ—到一個 Readline 函數或者巨集,或者設定一個\n" +" Readline 變數。éžé¸é …åƒæ•¸çš„語法和 ~/.inputrc 檔案中的等\n" +" åŒï¼Œä½†æ˜¯å¿…é ˆåšç‚ºä¸€å€‹åƒæ•¸è¢«å‚³éžï¼Œ\n" +" 例如,bind '\"\\C-x\\C-r\": re-read-init-file'。\n" +" \n" +" é¸é …:\n" +" -m æŒ‰éµæ˜ å°„ 在此指令執行éŽç¨‹ä¸­ä½¿ç”¨æŒ‡å®šçš„æŒ‰éµæ˜ å°„。\n" +" å¯è¢«æŽ¥å—çš„æŒ‰éµæ˜ å°„å字有 emacsã€emacs-standardã€emacs-" +"metaã€\n" +" emacs-ctlxã€viã€vi-moveã€vi-commandã€å’Œ vi-insert。\n" +" -l 列出函數å稱。\n" +" -P 列出函數å稱和ç¶å®šã€‚\n" +" -p 以å¯ä»¥é‡æ–°ç”¨ä½œè¼¸å…¥çš„æ ¼å¼åˆ—出函數å稱和ç¶å®šã€‚\n" +" -S 列出å¯ä»¥å•Ÿå‹•巨集的按éµåºåˆ—以åŠå®ƒå€‘的值\n" +" -s 以å¯ä»¥é‡æ–°ç”¨ä½œè¼¸å…¥çš„æ ¼å¼åˆ—出å¯ä»¥å•Ÿå‹•巨集的éµä»¥åŠå®ƒå€‘çš„" +"值。\n" +" -V 列出變數å稱和它們的值\n" +" -v 以å¯ä»¥é‡æ–°ç”¨ä½œè¼¸å…¥çš„æ ¼å¼åˆ—出變數的å稱和它們的值\n" +" -q å‡½æ•¸å æŸ¥è©¢æŒ‡å®šçš„函數å¯ä»¥ç”±å“ªäº›éµå•Ÿå‹•。\n" +" -u 函數å åç¶å®šæ‰€æœ‰ç¶å®šè‡³æŒ‡å®šå‡½æ•¸çš„éµã€‚\n" +" -r 按éµåºåˆ— å–æ¶ˆæŒ‡å®šæŒ‰éµåºåˆ—çš„ç¶å®šã€‚\n" +" -f 檔å å¾žæŒ‡å®šæª”æ¡ˆä¸­è®€å–æŒ‰éµç¶å®šã€‚\n" +" -x 按éµåºåˆ—:shell 指令\t當指定的按éµåºåˆ—被輸入時,執行指定的 shell 指" +"令。\n" +" -X 以å¯è¢«é‡ç”¨çš„å½¢å¼åˆ—出用 -x ç¶å®šçš„æŒ‰éµåºåˆ—和指令。\n" +" \n" +" 退出狀態:\n" +" 除éžä½¿ç”¨äº†ç„¡æ³•識別的é¸é …或者錯誤發生,å¦å‰‡å›žå‚³ 0。" + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"退出 forã€while 或 until 迴圈\n" +" \n" +" 退出一個 FORã€WHILE 或 UNTIL 迴圈。如果指定了 N,則跳出 N é‡\n" +" 迴圈\n" +" \n" +" 退出狀態:\n" +" 退出狀態為 0 é™¤éž N ä¸å¤§æ–¼æˆ–等於 1。" + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"繼續 forã€while 或 until 迴圈。\n" +" \n" +" ç¹¼çºŒç›®å‰ FORã€WHILE 或 UNTIL 迴圈的下一步。\n" +" 如果指定了 N, 則繼續目å‰çš„第 N é‡è¿´åœˆã€‚\n" +" \n" +" 退出狀態:\n" +" 退出狀態為 0 é™¤éž N ä¸å¤§æ–¼æˆ–等於 1。" + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"執行 shell 內建物件。\n" +" \n" +" 帶 <åƒæ•¸> 執行 而ä¸åšæŒ‡ä»¤æŸ¥è©¢\n" +" 在希望以 shell 函數的形å¼ä¾†é‡æ–°å¯¦ç¾ shell 內建物件,\n" +" 但需è¦åœ¨å‡½æ•¸ä¹‹å…§åŸ·è¡Œè©² shell 內建物件的情æ³ä¸‹æœ‰ç”¨è™•。\n" +" \n" +" 退出狀態:\n" +" 以 的退出狀態為準,或者如果 䏿˜¯ä¸€å€‹ " +"shell 內建物件時\n" +" 回傳 false。" + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"回傳目å‰å­å‘¼å«çš„語境。\n" +" \n" +" ä¸å¸¶æœ‰ EXPR 時,回傳「$line $filenameã€ã€‚帶有 EXPR 時,回傳\n" +" 「$line $subroutine $filenameã€ï¼›é€™å€‹é¡å¤–的資訊å¯ä»¥è¢«ç”¨æ–¼æä¾›\n" +" 堆疊追蹤。\n" +" \n" +" EXPR 的值顯示了到目å‰å‘¼å«æ¡†æ ¼éœ€è¦å›žåŽ»å¤šå°‘å€‹å‘¼å«æ¡†æ ¼ï¼›é ‚部框格\n" +" 是第 0 框格。\n" +" \n" +" 退出狀態:\n" +" é™¤éž shell ä¸åœ¨åŸ·è¡Œä¸€å€‹ shell 函數或者 EXPR 無效,å¦å‰‡å›žå‚³çµ\n" +" 果為 0。" + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"變更 shell 工作目錄。\n" +" \n" +" 變更目å‰ç›®éŒ„至 <目錄>。é è¨­çš„ <目錄> 是 shell 變數 HOME\n" +" 的值。\n" +" \n" +" 變數 CDPATH å®šç¾©äº†å«æœ‰ <目錄> 的目錄æœå°‹è·¯å¾‘,其中ä¸åŒçš„目錄å稱由冒號 " +"(:)分隔。\n" +" 一個空的目錄å稱表示目å‰ç›®éŒ„。如果è¦åˆ‡æ›åˆ°çš„ <目錄> 由斜線 (/) 開頭,則 " +"CDPATH\n" +" è®Šæ•¸ä¸æœƒè¢«ä½¿ç”¨ã€‚\n" +" \n" +" 如果路徑找ä¸åˆ°ï¼Œä¸¦ä¸” shell é¸é …「cdable_varsã€è¢«è¨­å®šï¼Œå‰‡åƒæ•¸è©žè¢«å‡å®šç‚ºä¸€" +"個\n" +" 變數åã€‚å¦‚æžœè©²è®Šæ•¸æœ‰å€¼ï¼Œå‰‡å®ƒçš„å€¼è¢«ç•¶åš <目錄>。\n" +" \n" +" é¸é …:\n" +" -L\t強制跟隨符號連çµ: 在處ç†ã€Œ..ã€ä¹‹å¾Œè§£æž <目錄> 中的符號連çµã€‚\n" +" -P\tä½¿ç”¨å¯¦é«”ç›®éŒ„çµæ§‹è€Œä¸è·Ÿéš¨ç¬¦è™Ÿé€£çµ: 在處ç†ã€Œ..ã€ä¹‹å‰è§£æž <目錄> 中" +"的符號連çµã€‚\n" +" -e\t如果使用了 -P åƒæ•¸ï¼Œä½†ä¸èƒ½æˆåŠŸç¢ºå®šç›®å‰å·¥ä½œç›®éŒ„時,回傳éžé›¶çš„回傳" +"值。\n" +" -@\tåœ¨æ”¯æ´æ“´å……å±¬æ€§çš„ç³»çµ±ä¸Šï¼Œå°‡ä¸€å€‹æœ‰é€™äº›å±¬æ€§çš„æª”æ¡ˆç•¶åšæœ‰æª”案屬性的目" +"錄。\n" +" \n" +" é è¨­æƒ…æ³ä¸‹è·Ÿéš¨ç¬¦è™Ÿé€£çµï¼Œå¦‚åŒæŒ‡å®šã€Œ-Lã€ã€‚\n" +" 「..ã€ä½¿ç”¨ç§»é™¤å‘å‰ç›¸é„°ç›®éŒ„åæˆå“¡ç›´åˆ° <目錄> 開始或一個斜線的方å¼è™•ç†ã€‚\n" +" \n" +" 退出狀態:\n" +" 如果目錄變更,或在使用 -P é¸é …時 $PWD 修改æˆåŠŸæ™‚å›žå‚³ 0,å¦å‰‡éžé›¶ã€‚" + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"å°å‡ºç›®å‰å·¥ä½œç›®éŒ„çš„å字。\n" +" \n" +" é¸é …:\n" +" -L\tå°å‡º $PWD 變數的值,如果它包å«äº†ç›®å‰çš„工作目錄\n" +" -P\tå°å‡ºç›®å‰çš„實體路徑,ä¸å¸¶æœ‰ä»»ä½•的符號連çµ\n" +" \n" +" é è¨­æƒ…æ³ä¸‹ï¼Œã€Œpwdã€çš„行為和帶「-Lã€é¸é …一致\n" +" \n" +" 退出狀態:\n" +" 除éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …或者目å‰ç›®éŒ„ä¸å¯è®€ï¼Œå¦å‰‡å›žå‚³ç‹€æ…‹ç‚º 0。" + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"空的指令。\n" +" \n" +" 沒有效果;此指令ä¸åšä»»ä½•æ“作。\n" +" \n" +" 退出狀態:\n" +" 一律æˆåŠŸã€‚" + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"回傳一個æˆåŠŸçµæžœã€‚\n" +" \n" +" 退出狀態:\n" +" 一律æˆåŠŸã€‚" + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"å›žå‚³ä¸€å€‹ä¸æˆåŠŸçš„çµæžœã€‚\n" +" \n" +" 退出狀態:\n" +" 一律失敗。" + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"執行一個簡單指令或者顯示指令的相關資訊。\n" +" \n" +" 帶 ARGS åƒæ•¸åŸ·è¡Œ COMMAND 指令且抑制 shell 函數查詢,或顯示\n" +" 指定的 COMMAND 指令的資訊。å¯ä»¥åœ¨å­˜åœ¨ç›¸åŒå稱函數定義的\n" +" 情æ³ä¸‹è¢«ç”¨æ–¼å•Ÿå‹•ç£ç¢Ÿä¸Šçš„æŒ‡ä»¤ã€‚\n" +" \n" +" é¸é …:\n" +" -p\t使用 PATH 變數的一個é è¨­å€¼ä»¥ç¢ºä¿æ‰€æœ‰çš„æ¨™æº–工具都能被找到。\n" +" -v\tå°å‡º COMMAND 指令的æè¿°ï¼Œå’Œã€Œtypeã€å…§å»ºç›¸ä¼¼\n" +" -V\tå°å‡ºæ¯å€‹ COMMAND 指令的詳細æè¿°\n" +" \n" +" 退出狀態:\n" +" 回傳 COMMAND 指令的回傳狀態,或者當找ä¸åˆ° COMMAND 指令時失敗。" + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"設定變數值和屬性。\n" +" \n" +" è¦ç¯„變數並且賦予它們屬性。如果沒用指定å稱,\n" +" 則顯示所有變數的屬性和值。\n" +" \n" +" é¸é …:\n" +" -f\té™åˆ¶å‹•ä½œæˆ–é¡¯ç¤ºç‚ºåªæœ‰å‡½æ•¸å稱和定義\n" +" -F\té™åˆ¶åƒ…顯示函數å稱 (以åŠåˆ—è™Ÿå’ŒåŽŸå§‹æª”åæ–¼åµéŒ¯æ™‚)\n" +" -g\t當用於 shell 函數內時建立全域變數 ; å¦å‰‡å¿½ç•¥\n" +" -p\t顯示æ¯å€‹ <å稱> 變數的屬性和值\n" +" \n" +" 設定屬性的é¸é …:\n" +" -a\t使 <å稱> æˆç‚ºç´¢å¼•陣列 (如果支æ´)\n" +" -A\t使 <å稱> æˆç‚ºé—œè¯é™£åˆ— (如果支æ´)\n" +" -i\t使 <å稱> 帶有「integerã€(整數)屬性\n" +" -l\tå°‡æ¯å€‹ <å稱> 的值在指派時轉為å°å¯«\n" +" -n\t使 <å稱> æˆç‚ºæŒ‡å‘一個以其值為å稱的變數引用\n" +" -r\tå°‡ <å稱> 變為唯讀\n" +" -t\t使 <å稱> 帶有「traceã€(追蹤)屬性\n" +" -u\tå°‡æ¯å€‹ <å稱> 的值在指派時轉為大寫\n" +" -x\tå°‡ <å稱> 匯出\n" +" \n" +" 用「+ã€ä»£æ›¿ã€Œ-ã€æœƒé—œé–‰æŒ‡å®šé¸é …。\n" +" \n" +" 帶有整數屬性的變數在指派時將使用算術求值(見\n" +" 「letã€æŒ‡ä»¤)\n" +" \n" +" 在函數中使用時,「declareã€ä½¿ <å稱> æˆç‚ºæœ¬æ©Ÿè®Šæ•¸ï¼Œå’Œã€Œlocalã€\n" +" 指令一致。「-gã€é¸é …壓制這個行為\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …或者發生錯誤。" + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"設定變數的值和屬性。\n" +" \n" +" åŠŸèƒ½ç›¸åŒæ–¼ã€Œdeclareã€ã€‚åƒè¦‹ã€Œhelp declareã€ã€‚" + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"定義本機變數。\n" +" \n" +" 建立一個以 <å稱> 為å稱的變數,並且將 VALUE 指派給它。\n" +" OPTION é¸é …å¯ä»¥æ˜¯ä»»ä½•能被「declareã€æŽ¥å—çš„é¸é …。\n" +" \n" +" 本機變數åªèƒ½åœ¨å‡½æ•¸å…§éƒ¨è¢«ä½¿ç”¨ï¼Œå®ƒå€‘åªèƒ½åœ¨å®šç¾©å®ƒå€‘的函數內\n" +" 部以åŠå­å‡½æ•¸ä¸­å¯è¦‹ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …ã€ç™¼ç”Ÿäº†æŒ‡æ´¾éŒ¯èª¤æˆ–者 shell ä¸åœ¨åŸ·è¡Œä¸€å€‹å‡½" +"數。" + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"å°‡åƒæ•¸å¯«å…¥æ¨™æº–輸出。\n" +" \n" +" 在標準輸出上,顯示用空格分割的 ARG åƒæ•¸å¾Œè·Ÿä¸€å€‹æ›åˆ—。\n" +" \n" +" é¸é …:\n" +" -n\tä¸è¦è¿½åŠ æ›åˆ—\n" +" -e\tå•Ÿç”¨ä¸‹åˆ—åæ–œç·šé€¸å‡ºçš„解釋\n" +" -E\t顯å¼åœ°æŠ‘åˆ¶å°æ–¼å斜線逸出的解釋\n" +" \n" +" 「echoã€å°ä¸‹åˆ—åæ–œç·šå­—元進行逸出:\n" +" \\a\t警告(響鈴)\n" +" \\b\t退格\n" +" \\c\t抑制更多的輸出\n" +" \\e\t逸出字元\n" +" \\f\tæ›é å­—å…ƒ\n" +" \\n\tæ›åˆ—\n" +" \\r\t輸入éµ\n" +" \\t\tæ©«å‘製表符\n" +" \\v\t縱å‘製表符\n" +" \\\\\tåæ–œç·š\n" +" \\0nnn\t以 NNN (八進ä½)為 ASCII 碼的字元。 NNN å¯ä»¥æ˜¯ 0 到 3 個八進使•¸" +"å­—\n" +" \\xHH\t以 HH (å六進ä½)為值的八進ä½å­—元。HH å¯ä»¥æ˜¯ä¸€å€‹æˆ–兩個å六進使•¸" +"å­—\n" +" \\uHHHH\t以åå…­é€²ä½ HHHH 為值的 Unicode 字元。\n" +" \t\tHHHH å¯ç‚ºä¸€å€‹åˆ°å››å€‹å六進使•¸å­—。\n" +" \\UHHHHHHHH 以åå…­é€²ä½ HHHHHHHH 為值的 Unicode 字元。\n" +" \t\tHHHHHHHH å¯ç‚ºä¸€å€‹åˆ°å…«å€‹å六進使•¸å­—。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éžæœ‰å¯«å…¥éŒ¯èª¤ç™¼ç”Ÿã€‚" + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"å¯«å…¥åƒæ•¸è‡³æ¨™æº–輸出è£ç½®ã€‚\n" +" \n" +" 在標準輸出è£ç½®ä¸Šé¡¯ç¤º <åƒæ•¸> 和一個æ›åˆ—。\n" +" \n" +" é¸é …:\n" +" -n\tä¸é™„加æ›åˆ—\n" +" \n" +" 退出狀態:\n" +" 除éžå¯«éŒ¯èª¤ç™¼ç”Ÿï¼Œå¦å‰‡å›žå‚³æˆåŠŸã€‚" + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"啟用和åœç”¨ shell 內建物件。\n" +" \n" +" 啟用和åœç”¨ shell 的內建指令。åœç”¨ä½¿æ‚¨èƒ½å¤ åŸ·è¡Œä¸€å€‹å’Œå…§å»º\n" +" 指令åŒåç£ç¢Ÿä¸Šçš„æŒ‡ä»¤ï¼Œè€Œç„¡é ˆä½¿ç”¨å®Œæ•´çš„路徑å。\n" +" \n" +" \n" +" é¸é …:\n" +" -a\tå°å‡ºä¸€å€‹å…§å»ºçš„列表,並顯示其中æ¯ä¸€å€‹æ˜¯å¦å•Ÿç”¨\n" +" -n\tåœç”¨æ¯ä¸€å€‹ <å稱> 內建或者顯示一個被åœç”¨çš„內建列表\n" +" -p\t以å¯é‡ç”¨çš„æ ¼å¼å°å‡ºä¸€å€‹å…§å»ºçš„列表\n" +" -s\t僅å°å‡º Posix「special〠內建的å稱\n" +" \n" +" 控制動態載入的é¸é …:\n" +" -f\t從共享物件 <檔å> 檔案中載入 <å稱> 內建\n" +" -d\t刪除以 -f é¸é …載入的內建\n" +" \n" +" ä¸å¸¶é¸é …時,æ¯ä¸€å€‹ <å稱> 內建都被啟用。\n" +" \n" +" 如果è¦ä½¿ç”¨ $PATH 中找到的「testã€è€Œä¸æ˜¯ shell 內建物件的版本,\n" +" 輸入「enable -n testã€ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éž <å稱> 䏿˜¯ä¸€å€‹ shell 內建物件或者有錯誤發生。" + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"å°‡åƒæ•¸åšç‚º shell 指令執行。\n" +" \n" +" å°‡ <åƒæ•¸> åˆæˆä¸€å€‹å­—ä¸²ï¼Œç”¨çµæžœåšç‚º shell 的輸入,\n" +" 並且執行得到的指令。\n" +" \n" +" 退出狀態:\n" +" 以指令的狀態退出,或者在指令為空的情æ³ä¸‹å›žå‚³æˆåŠŸã€‚" + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"è§£æžé¸é …åƒæ•¸ã€‚\n" +" \n" +" Getopts 被 shell éŽç¨‹ç”¨æ–¼è§£æžå¯å®šä½çš„åƒæ•¸åšç‚ºé¸é …。\n" +" \n" +" \n" +" <é¸é …字串> 字串包å«å¾…識別的é¸é …å­—æ¯ï¼›å¦‚果一個字æ¯å¾Œé¢è·Ÿ\n" +" 著分號,則該é¸é …需è¦ä¸€å€‹åƒæ•¸ï¼Œè€Œè©²åƒæ•¸æ‡‰ç”¨ç©ºæ ¼èˆ‡é¸é …分開。\n" +" \n" +" \n" +" æ¯æ¬¡å•Ÿå‹•時,getopts 會將下一個é¸é …放到 shell 變數 $name\n" +" 中,如果 name 變數ä¸å­˜åœ¨å‰‡å…ˆå°‡å…¶åˆå§‹åŒ–,而下一個待處\n" +" ç†çš„åƒæ•¸åºè™Ÿæ”¾å…¥ shell 變數 OPTIND 中。OPTIND 變數在æ¯\n" +" 次 shell 或者 shell 指令稿啟動時都被åˆå§‹åŒ–為 1。當一個é¸é …è¦\n" +" æ±‚æœ‰ä¸€å€‹åƒæ•¸æ™‚,getopts å°‡åƒæ•¸æ”¾å…¥ shell 變數 OPTARG\n" +" 中。\n" +" \n" +" getopts 有兩種通報錯誤的方法。如果 <é¸é …字串> 變數的第\n" +" 一個字元是冒號,getopts 使用沉默錯誤通報。在這種模å¼\n" +" ä¸‹ï¼Œä¸æœƒå°ç™¼ç”ŸéŒ¯èª¤èª¤è¨Šæ¯ã€‚如果看到了一個無效的é¸é …,\n" +" getopts 將找到的é¸é …字元放至 OPTARG 變數中。如果一個必\n" +" 須的é¸é …沒有找到,getopts 放一個「:ã€åˆ° <å稱> 變數中並且設\n" +" ç½® OPTARG 變數為找到的é¸é …字元。如果 getopts ä¸åœ¨æ²‰é»˜æ¨¡\n" +" å¼ä¸­ï¼Œä¸¦ä¸”é‡åˆ°äº†ä¸€å€‹ç„¡æ•ˆçš„é¸é …,getopts 放置一個「?ã€åˆ° <å稱> \n" +" è®Šæ•¸ä¸­ä¸¦ä¸”å–æ¶ˆè¨­å®š OPTARG 變數。如果必須的é¸é …沒有找到,\n" +" 一個「?ã€æœƒè¢«æ”¾å…¥ <å稱> 變數中,OPTARG å°‡è¢«å–æ¶ˆè¨­å®šï¼Œä¸¦ä¸”會\n" +" å°å‡ºä¸€å€‹è¨ºæ–·è³‡è¨Šã€‚\n" +" \n" +" 如果 shell 變數 OPTERR 的值為 0,getopts åœç”¨\n" +" 錯誤資訊的å°å‡ºï¼Œå³ä½¿ <é¸é …字串> è®Šæ•¸çš„ç¬¬ä¸€å€‹å­—å…ƒä¸æ˜¯ä¸€\n" +" 個冒號。OPTERR çš„é è¨­å€¼ç‚º 1。\n" +" \n" +" Getopts 通常解æžå¯å®šä½çš„åƒæ•¸($0 - $9),ä¸éŽå¦‚æžœæä¾›äº†\n" +" æ›´å¤šçš„åƒæ•¸ï¼Œå®ƒå€‘å而會被解æžã€‚\n" +" \n" +" 退出狀態:\n" +" 如果一個é¸é …被找到則回傳æˆåŠŸï¼›å¦‚æžœé‡åˆ°äº†é¸é …çš„çµå°¾æˆ–者\n" +" 有錯誤發生則回傳失敗。" + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"使用指定指令å–代 shell。\n" +" \n" +" 執行 COMMAND 指令,以指定的程å¼å–代這個 shell。\n" +" ARGUMENTS åƒæ•¸æˆç‚º COMMAND æŒ‡ä»¤çš„åƒæ•¸ã€‚如果\n" +" 沒有指定 COMMAND 指令,則任何的é‡å®šå‘åœ¨ç›®å‰ shell 中生效。\n" +" \n" +" é¸é …:\n" +" -a å稱\tåšç‚ºç¬¬ 0 å€‹åƒæ•¸å‚³éžçµ¦ COMMAND 指令\n" +" -c\t\t在空環境中執行 COMMAND 指令\n" +" -l\t\t在 COMMAND 指令的第 0 å€‹åƒæ•¸ä¸­åŠ ä¸€å€‹çŸ­ç·š\n" +" \n" +" 如果指令ä¸èƒ½è¢«åŸ·è¡Œï¼Œå‰‡é€€å‡ºä¸€å€‹éžäº’å‹•å¼çš„ shell,除éž\n" +" shell é¸é …「execfailã€å·²ç¶“設定。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éž COMMAND 指令沒有找到或者出ç¾ä¸€å€‹é‡å®šå‘錯誤。" + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"退出 shell。\n" +" \n" +" 以狀態 N 退出 shell。 如果 N 被çœç•¥ï¼Œå‰‡é€€å‡ºç‹€æ…‹\n" +" 為最後一個執行指令的退出狀態。" + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"退出一個登入 shell。\n" +" \n" +" 以狀態 N 退出一個登入 shell。如果ä¸åœ¨ç™»å…¥ shell 中執行,則\n" +" 回傳一個錯誤。" + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"從歷å²è¨˜éŒ„列表中顯示或者執行指令。\n" +" \n" +" fc 被用於從歷å²è¨˜éŒ„åˆ—è¡¨ä¸­åˆ—å‡ºæˆ–è€…é‡æ–°ç·¨è¼¯ä¸¦åŸ·è¡ŒæŒ‡ä»¤ã€‚\n" +" FIRST å’Œ LAST 變數å¯ä»¥æ˜¯æ•¸å­—用於指定範åœï¼Œæˆ–者 FIRST å¯ä»¥æ˜¯\n" +" 字串,æ„味著以這個字串開頭的最近一個指令。\n" +" \n" +" \n" +" é¸é …:\n" +" -e ENAME\t鏿“‡ä½¿ç”¨å“ªå€‹ç·¨è¼¯å™¨ã€‚é è¨­çš„æ˜¯ FCEDIT,然後是 EDITOR,\n" +" \t\t然後是 vi\n" +" -l \t列出列而ä¸ç·¨è¼¯\n" +" -n\t列舉時çœç•¥åˆ—號\n" +" -r\tå轉列的順åº(最新列在å‰)\n" +" \n" +" 用「fc -s [模å¼=å–代 …] [指令]ã€çš„æ ¼å¼ï¼ŒCOMMAND 指令會在 OLD=NEW\n" +" å–ä»£ä¹‹å¾Œè¢«é‡æ–°åŸ·è¡Œã€‚\n" +" \n" +" r=「fc -sã€æ˜¯ä¸€å€‹æœ‰ç”¨çš„別å,這樣的話輸入「r ccã€æœƒåŸ·è¡Œæœ€å¾Œä¸€å€‹ä»¥ã€Œccã€\n" +" 開頭的指令,輸入「rã€æœƒé‡æ–°åŸ·è¡Œæœ€å¾Œä¸€å€‹æŒ‡ä»¤ã€‚\n" +" \n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œæˆ–è€…åŸ·è¡ŒæŒ‡ä»¤çš„ç‹€æ…‹ï¼›å¦‚æžœéŒ¯èª¤ç™¼ç”Ÿå‰‡å›žå‚³éžé›¶ã€‚" + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"將工作移至å‰è‡ºã€‚\n" +" \n" +" 將以 JOB_SPEC 識別的工作放至å‰è‡ºï¼Œä½¿å…¶æˆç‚º\n" +" ç›®å‰å·¥ä½œã€‚如果 JOB_SPEC ä¸å­˜åœ¨ï¼Œshell 觀念中的目å‰å·¥ä½œ \n" +" 將被使用。\n" +" \n" +" 退出狀態:\n" +" 放至å‰è‡ºçš„æŒ‡ä»¤ç‹€æ…‹ï¼Œæˆ–者當錯誤發生時為失敗。" + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"移動工作至後臺。\n" +" \n" +" å°‡ JOB_SPEC 識別的工作放至後臺,就åƒå®ƒå€‘\n" +" 是帶「&ã€å•Ÿå‹•的一樣。如果 JOB_SPEC ä¸å­˜åœ¨ï¼Œshell 觀念中的\n" +" ç›®å‰å·¥ä½œå°‡æœƒè¢«ä½¿ç”¨ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éžå·¥ä½œç®¡ç†æ²’有啟用或者錯誤發生。" + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"è¨˜ä½æˆ–顯示程å¼ä½ç½®ã€‚\n" +" \n" +" ç¢ºå®šä¸¦è¨˜ä½æ¯ä¸€å€‹æŒ‡å®š <å稱> 指令的完整路徑。\n" +" å¦‚æžœä¸æä¾›åƒæ•¸ï¼Œå‰‡é¡¯ç¤ºå·²ç¶“è¨˜ä½æŒ‡ä»¤çš„資訊。\n" +" \n" +" é¸é …:\n" +" -d\t\t忘記æ¯ä¸€å€‹å·²ç¶“記ä½çš„ <å稱> çš„ä½ç½®\n" +" -l\t\t以å¯åšç‚ºè¼¸å…¥é‡ç”¨çš„æ ¼å¼é¡¯ç¤º\n" +" -p pathname\t使用 pathname 路徑åšç‚º <å稱> 指令的全路徑\n" +" -r\t\t忘記所有記ä½çš„ä½ç½®\n" +" -t\t\tå°å‡ºè¨˜ä½çš„æ¯ä¸€å€‹ <å稱> çš„ä½ç½®ï¼Œå¦‚果指定了多個\n" +" \t\t<å稱>,則æ¯å€‹ä½ç½®å‰é¢æœƒåŠ ä¸Šç›¸æ‡‰çš„ <å稱> \n" +" \t\t\n" +" åƒæ•¸ï¼š\n" +" <å稱>\t\tæ¯å€‹ <å稱> 會在 $PATH 路徑變數中被æœå°‹ï¼Œä¸¦ä¸”新增到記ä½çš„æŒ‡" +"令\n" +" 列表中。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éž <å稱> 指令沒有找到或者使用了無效的é¸é …。" + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"顯示內建指令的相關資訊。\n" +" \n" +" 顯示內建指令的簡略資訊。如果指定了 PATTERN 模å¼ï¼Œ\n" +" çµ¦å‡ºæ‰€æœ‰ç¬¦åˆ PATTERN æ¨¡å¼æŒ‡ä»¤çš„詳細說明,å¦å‰‡å°å‡º\n" +" 一個說明主題列表\n" +" \n" +" é¸é …:\n" +" -d\t輸出æ¯å€‹ä¸»é¡Œçš„簡短æè¿°\n" +" -m\tä»¥å½ man 手冊的格å¼é¡¯ç¤ºä½¿ç”¨æ–¹æ³•\n" +" -s\t為æ¯ä¸€å€‹ç¬¦åˆ PATTERN 模å¼çš„主題僅顯示一個用法\n" +" \t簡介\n" +" \n" +" åƒæ•¸ï¼š\n" +" PATTERN\tPattern æ¨¡å¼æŒ‡å®šä¸€å€‹èªªæ˜Žä¸»é¡Œ\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éž PATTERN æ¨¡å¼æ²’有找到或者使用了無效é¸é …。" + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"顯示或æ“縱歷å²è¨˜éŒ„列表。\n" +" \n" +" 帶列號顯示歷å²è¨˜éŒ„列表,將æ¯å€‹è¢«ä¿®æ”¹çš„æ¢ç›®åŠ ä¸Šå­—é¦–ã€Œ*ã€ã€‚\n" +" åƒæ•¸ N 會僅列出最後的 N 個æ¢ç›®ã€‚\n" +" \n" +" é¸é …:\n" +" -c\t刪除所有æ¢ç›®å¾žè€Œæ¸…空歷å²è¨˜éŒ„列表。\n" +" -d åç§»é‡\t從指定ä½ç½®åˆªé™¤æ­·å²è¨˜éŒ„列表。負數åç§»é‡æœƒå¾žæ­·å²è¨˜éŒ„列表\n" +" \t\t的尾端數回來。\n" +" \n" +" -a\t將目å‰å·¥ä½œéšŽæ®µçš„æ­·å²è¨˜éŒ„列追加到歷å²è¨˜éŒ„檔案中\n" +" -n\t從歷å²è¨˜éŒ„æª”æ¡ˆä¸­è®€å–æ‰€æœ‰æœªè¢«è®€å–的列\n" +"\t\t並且將它們追加到歷å²åˆ—表 -r\tè®€å–æ­·å²è¨˜éŒ„檔案並將內容追加到歷å²è¨˜éŒ„" +"列表中\n" +" -w\tå°‡ç›®å‰æ­·å²è¨˜éŒ„寫入到歷å²è¨˜éŒ„檔案中,並追加到歷å²è¨˜éŒ„列表中\n" +" \n" +" -p\tå°æ¯ä¸€å€‹ <åƒæ•¸> 展開歷å²è¨˜éŒ„ä¸¦é¡¯ç¤ºçµæžœï¼Œè€Œä¸å„²å­˜åˆ°æ­·å²è¨˜éŒ„列表中\n" +" -s\t以單æ¢ç´€éŒ„追加 <åƒæ•¸> 到歷å²è¨˜éŒ„列表中\n" +" \n" +" 如果指定了 <檔å>,則它將被åšç‚ºæ­·å²è¨˜éŒ„檔案。å¦å‰‡\n" +" 如果 $HISTFILE 變數有值的話使用之,ä¸ç„¶ä½¿ç”¨ ~/.bash_history 檔案。\n" +" \n" +" 如果 $HISTTIMEFORMAT 變數被設定並且ä¸ç‚ºç©ºï¼Œå®ƒçš„值會被用於\n" +" strftime(3) 的格å¼å­—串來å°å‡ºèˆ‡æ¯ä¸€å€‹é¡¯ç¤ºçš„æ­·å²è¨˜éŒ„æ¢ç›®æƒ³é—œè¯çš„æ™‚\n" +" 間戳,å¦å‰‡ä¸å°å‡ºæ™‚間戳。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者發生錯誤。" + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"顯示工作狀態。\n" +" \n" +" 列出活動的工作。JOBSPEC é™åˆ¶åƒ…輸出指定的工作。\n" +" ä¸å¸¶é¸é …時,所有活動工作的狀態都會顯示。\n" +" \n" +" é¸é …:\n" +" -l\t在正常資訊基礎上列出行程識別碼\n" +" -n\t僅列出上次通告之後變更了狀態的行程\n" +" -p\t僅列出行程識別碼\n" +" -r\té™åˆ¶åƒ…輸出執行中的工作\n" +" -s\té™åˆ¶åƒ…è¼¸å‡ºåœæ­¢çš„工作\n" +" \n" +" 如果使用了 -x é¸é …,<åƒæ•¸> ä¸­çš„æ‰€æœ‰å·¥ä½œè¦æ ¼æœƒè¢«å–代為該工作\n" +" 的行程群組首領的行程識別碼,然後執行 COMMAND 指令。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者有錯誤發生。\n" +" 如果使用 -x é¸é …,則回傳 COMMAND 指令的退出狀態。" + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"å¾žç›®å‰ shell 中刪除工作。\n" +" \n" +" 從活動工作表中刪除æ¯ä¸€å€‹ JOBSPEC åƒæ•¸ã€‚ä¸å¸¶ä»»ä½•\n" +" JOBSPEC åƒæ•¸æ™‚,shell 使用觀念中的目å‰å·¥ä½œã€‚\n" +" \n" +" é¸é …:\n" +" -a\tå¦‚æžœä¸æä¾› JOBSPEC åƒæ•¸ï¼Œå‰‡åˆªé™¤æ‰€æœ‰å·¥ä½œ\n" +" -h\t識別æ¯å€‹ JOBSPEC 工作,從而當 shell 接收到 SIGHUP\n" +" \t訊號時ä¸å‚³é€ SIGHUP 給指定工作\n" +" -r\t僅刪除執行中的工作\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 JOBSPEC è¦æ ¼ã€‚" + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"å‘一個工作傳é€ä¸€å€‹è¨Šè™Ÿã€‚\n" +" \n" +" å‘以 PID 行程識別碼或者 JOBSPEC å·¥ä½œè¦æ ¼æŒ‡å®šçš„行程傳é€ä¸€å€‹ä»¥\n" +" SIGSPEC è¨Šè™Ÿè¦æ ¼æˆ– SIGNUM 訊號編號命å的訊號。如果沒有指定\n" +" SIGSPEC 或 SIGNUM,那麼å‡å®šå‚³é€ SIGTERM 訊號。\n" +" \n" +" é¸é …:\n" +" -s sig\tSIG 是訊號å稱\n" +" -n sig\tSIG 是訊號編號\n" +" -l\t列出訊號åç¨±ï¼›å¦‚æžœåƒæ•¸å¾Œè·Ÿã€Œ-lã€å‰‡è¢«å‡è¨­ç‚ºè¨Šè™Ÿç·¨è™Ÿï¼Œ\n" +" \t而相應的訊號å稱會被列出\n" +" \n" +" Kill æˆç‚º shell 內建物件有兩個ç†ç”±ï¼šå®ƒå…è¨±ä½¿ç”¨å·¥ä½œç·¨è™Ÿè€Œä¸æ˜¯è¡Œç¨‹è­˜åˆ¥" +"碼,\n" +" 並且在å¯ä»¥å»ºç«‹çš„行程數上é™é”到時å…許行程被ç é™¤ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者有錯誤發生。" + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"求值算術表示å¼ã€‚\n" +" \n" +" å°‡æ¯å€‹ <åƒæ•¸> åšç‚ºç®—術表示å¼ä¾†æ±‚值。求值的計算以定寬的整\n" +" 數完æˆï¼Œä¸å¸¶æº¢ä½æª¢æ¸¬ï¼Œä¸éŽé™¤ 0 是被置陷阱的並且會報一個錯\n" +" 誤。下列é‹ç®—å­è¢«æŒ‰ç…§ç›¸åŒçš„算術優先順åºçµ„åˆã€‚åˆ—è¡¨çš„é †åºæŒ‰ç…§\n" +" 優先順åºå¾žé«˜è‡³ä½Žã€‚\n" +" \n" +" \n" +" \tid++, id--\t變數後置加,後置減\n" +" \t++id, --id\t變數å‰ç½®åŠ ï¼Œå‰ç½®æ¸›\n" +" \t-, +\t\t一元減法,一元加法\n" +" \t!, ~\t\té‚輯和ä½å–å\n" +" \t**\t\t指數\n" +" \t*, /, %\t\t乘法,除法,å–餘數\n" +" \t+, -\t\t增加,減少\n" +" \t<<, >>\t\tå‘左和å‘峿Œ‰ä½ç§»ä½\n" +" \t<=, >=, <, >\t比較\n" +" \t==, !=\t\t等於,ä¸ç­‰æ–¼\n" +" \t&\t\t按ä½èˆ‡\n" +" \t^\t\t按ä½ç•°æˆ–\n" +" \t|\t\tæŒ‰ä½æˆ–\n" +" \t&&\t\té‚輯與\n" +" \t||\t\té‚輯或\n" +" \texpr ? expr : expr\n" +" \t\t\tæ¢ä»¶é‹ç®—å­\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\t指派\n" +" \n" +" Shell 變數å…許åšç‚ºé‹ç®—元。表示å¼ä¸­çš„變數å稱會以值å–代\n" +" (強制轉æ›ç‚ºå®šå¯¬çš„æ•´æ•¸)。表示å¼ä¸­çš„變數ä¸éœ€è¦é–‹å•Ÿæ•´æ•¸å±¬æ€§ã€‚\n" +" \n" +" é‹ç®—å­æŒ‰ç…§å„ªå…ˆé †åºé€²è¡Œæ±‚值。括號中的å­è¡¨ç¤ºå¼å°‡è¢«å…ˆæ±‚值,並å¯å–代上述表示" +"å¼è¦å‰‡ã€‚\n" +" \n" +" 退出狀態:\n" +" 如果最後一個 <åƒæ•¸> 求值為 0,則 let 回傳 1ï¼›å¦å‰‡ let 回傳 0。" + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"從標準輸入讀å–一列並將其分為ä¸åŒçš„å€åŸŸã€‚\n" +" \n" +" 從標準輸入讀å–å–®ç¨çš„一列,或者如果使用了 -u é¸é …,從檔案æè¿°ç¬¦ FD 中讀" +"å–。\n" +" 該列被分割æˆå€åŸŸï¼Œå¦‚åŒå­—詞分割一樣,並且第一個字詞被指派給第一個 <å稱> " +"變數,第二\n" +" 個字詞被指派給第二個 <å稱> 變數,如此繼續,直到剩下所有的字詞被指派給最" +"後一個 <å稱>\n" +" è®Šæ•¸ã€‚åªæœ‰ $IFS 變數中的字元被èªåšæ˜¯å­—è©žåˆ†éš”ç¬¦ã€‚\n" +" \n" +" 如果沒有æä¾› <å稱> 變數,則讀å–的列被存放在 REPLY 變數中。\n" +" \n" +" é¸é …:\n" +" -a array\t將字詞指派給 ARRAY 陣列變數的åºåˆ—索引æˆå“¡ï¼Œå¾žé›¶é–‹å§‹ã€‚\n" +" -d delim\tæŒçºŒè®€å–直到讀入 DELIM è®Šæ•¸ä¸­çš„ç¬¬ä¸€å€‹å­—å…ƒï¼Œè€Œä¸æ˜¯æ›åˆ—符\n" +" -e\t使用 Readline å–得列\n" +" -i text\t使用 TEXT 文字åšç‚º Readline çš„åˆå§‹æ–‡å­—\n" +" -n nchars\tè®€å– nchars å€‹å­—å…ƒä¹‹å¾Œå›žå‚³ï¼Œè€Œä¸æ˜¯ç­‰åˆ°è®€å–æ›åˆ—符。\n" +" \t\t但是分隔符ä»ç„¶æœ‰æ•ˆï¼Œå¦‚æžœé‡åˆ°åˆ†éš”符之å‰è®€å–了ä¸è¶³ nchars 個字元。\n" +" -N nchars\t在準確讀å–了 nchars 個字元之後回傳,除éžé‡åˆ°æª”æ¡ˆçµæŸç¬¦æˆ–者讀" +"å–逾時,\n" +" \t\t任何的分隔符都被忽略\n" +" -p prompt\t在嘗試讀å–之å‰è¼¸å‡º PROMPT æç¤ºç¬¦ä¸¦ä¸”ä¸å¸¶\n" +" \t\tæ›åˆ—符\n" +" -r\tä¸å…è¨±åæ–œç·šé€¸å‡ºä»»ä½•å­—å…ƒ\n" +" -s\tä¸é¡¯ç¤ºçµ‚端的任何輸入\n" +" -t timeout\t如果在 TIMEOUT 秒內沒有讀å–一個完整的列則逾時並且回傳失" +"敗。\n" +" \t\tTMOUT 變數的值是é è¨­é€¾æ™‚時間。\n" +" \t\tTIMEOUT å¯ä»¥æ˜¯å°æ•¸ã€‚如果 TIMEOUT 是 0,那麼僅當在指定的檔案æè¿°ç¬¦ä¸Š\n" +" \t\t輸入有效的時候,read æ‰å›žå‚³æˆåŠŸã€‚\n" +" \t\t如果超éŽäº†é€¾æ™‚時間,則回傳狀態碼大於 128\n" +" -u fd\t從檔案æè¿°ç¬¦ FD 中讀å–ï¼Œè€Œä¸æ˜¯æ¨™æº–輸入\n" +" \n" +" 退出狀態:\n" +" 回傳碼為零,除éžé‡åˆ°äº†æª”æ¡ˆçµæŸç¬¦ï¼Œè®€å–逾時,或者無效的文\n" +" ä»¶æè¿°ç¬¦åšç‚ºåƒæ•¸å‚³éžçµ¦äº† -u é¸é …。" + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"從一個 shell 函數回傳。\n" +" \n" +" 使一個函數或者被引用的指令稿以指定的回傳值 N 退出。\n" +" 如果 N 被çœç•¥ï¼Œå‰‡å›žå‚³ç‹€æ…‹å°±æ˜¯\n" +" 函數或指令稿中的最後一個執行指令的狀態。\n" +" \n" +" 退出狀態:\n" +" 回傳 N,或者如果 shell ä¸åœ¨åŸ·è¡Œä¸€å€‹å‡½æ•¸æˆ–引用指令稿時,失敗。" + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"è¨­å®šæˆ–å–æ¶ˆè¨­å®š shell é¸é …å’Œä½ç½®åƒæ•¸çš„值。\n" +" \n" +" 變更 shell é¸é …å’Œä½ç½®åƒæ•¸çš„值,或者顯示 shell 變數的\n" +" å稱和值。\n" +" \n" +" é¸é …:\n" +" -a 標記修改或者建立的變數為匯出。\n" +" -b ç«‹å³é€šå‘Šå·¥ä½œçµ‚止。\n" +" -e 如果一個指令以éžé›¶ç‹€æ…‹é€€å‡ºï¼Œå‰‡ç«‹å³é€€å‡ºã€‚\n" +" -f åœç”¨æª”å產生(模å¼ç¬¦åˆ)。\n" +" -h 當查詢指令時記ä½å®ƒå€‘çš„ä½ç½®\n" +" -k æ‰€æœ‰çš„æŒ‡æ´¾åƒæ•¸è¢«æ”¾åœ¨æŒ‡ä»¤çš„環境中,而ä¸åƒ…僅是\n" +" 指令å稱之å‰çš„åƒæ•¸ã€‚\n" +" -m 啟用工作控制。\n" +" -n è®€å–æŒ‡ä»¤ä½†ä¸åŸ·è¡Œ\n" +" -o é¸é …å\n" +" 設定與é¸é …åå°æ‡‰çš„變數:\n" +" allexport 與 -a 相åŒ\n" +" braceexpand 與 -B 相åŒ\n" +" emacs 使用 emacs 風格的列編輯介é¢\n" +" errexit 與 -e 相åŒ\n" +" errtrace 與 -E 相åŒ\n" +" functrace 與 -T 相åŒ\n" +" hashall 與 -h 相åŒ\n" +" histexpand 與 -H 相åŒ\n" +" history 啟用指令歷å²è¨˜éŒ„\n" +" ignoreeof shell è®€å–æª”æ¡ˆçµæŸç¬¦æ™‚䏿œƒé€€å‡º\n" +" interactive-comments\n" +" å…è¨±åœ¨äº’å‹•å¼æŒ‡ä»¤ä¸­é¡¯ç¤ºè¨»é‡‹\n" +" keyword 與 -k 相åŒ\n" +" monitor 與 -m 相åŒ\n" +" noclobber 與 -C 相åŒ\n" +" noexec 與 -n 相åŒ\n" +" noglob 與 -f 相åŒ\n" +" nolog ç›®å‰å¯æŽ¥å—但是被忽略\n" +" notify 與 -b 相åŒ\n" +" nounset 與 -u 相åŒ\n" +" onecmd 與 -t 相åŒ\n" +" physical 與 -P 相åŒ\n" +" pipefail 管é“的回傳值是最後一個éžé›¶å›žå‚³å€¼æŒ‡ä»¤çš„å›žå‚³çµæžœï¼Œ\n" +" 或者當所有指令都回傳零時也為零。\n" +" posix 變更é è¨­æ™‚å’Œ Posix 標準ä¸åŒçš„ bash 行為\n" +" ä»¥ç¬¦åˆæ¨™æº–\n" +" privileged 與 -p 相åŒ\n" +" verbose 與 -v 相åŒ\n" +" vi 使用 vi 風格的列編輯介é¢\n" +" xtrace 與 -x 相åŒ\n" +" -p 無論何時當真實的有效使用者身分ä¸ç¬¦åˆæ™‚開啟。\n" +" åœç”¨å° $ENV 檔案的處ç†ä»¥åŠåŒ¯å…¥ shell 函數。\n" +" 關閉此é¸é …會導致有效的使用者編號和群組編號設定\n" +" 為真實的使用者編號和群組編號\n" +" -t 讀å–並執行一個指令之後退出。\n" +" -u å–代時將為設定的變數當åšéŒ¯èª¤å°å¾…。\n" +" -v è®€å– shell 輸入列時將它們å°å‡ºã€‚\n" +" -x 執行指令時å°å‡ºå®ƒå€‘以åŠåƒæ•¸ã€‚\n" +" -B shell 將執行大括號擴充套件。\n" +" -C è¨­å®šä¹‹å¾Œç¦æ­¢ä»¥é‡å®šå‘輸出的方å¼è¦†è“‹å¸¸\n" +" è¦æª”案。\n" +" -E 設定之後 ERR 陷阱會被 shell 函數繼承。\n" +" -H 啟用 ! 風格的歷å²è¨˜éŒ„å–代。當 shell 是互動å¼çš„\n" +" 時候這個識別ä½é è¨­é–‹å•Ÿã€‚\n" +" -P 設定之後類似 cd 的會變更目å‰ç›®éŒ„的指令嗎\n" +" 追蹤符號連çµã€‚\n" +" -T 設定之後 DEBUG å’Œ RETURN 陷阱會被 shell 函數繼承。\n" +" - ä»»ä½•å‰©é¤˜çš„åƒæ•¸æœƒè¢«æŒ‡æ´¾çµ¦ä½ç½®åƒæ•¸ã€‚\n" +" -x å’Œ -v é¸é …已關閉。\n" +" \n" +" 使用 + è€Œä¸æ˜¯ - 會使標誌ä½è¢«é—œé–‰ã€‚標誌ä½ä¹Ÿå¯ä»¥åœ¨\n" +" shell 被啟動時使用。目å‰çš„æ¨™èªŒä½è¨­å®šå¯ä»¥åœ¨ $- 變\n" +" é‡ä¸­æ‰¾åˆ°ã€‚剩餘的 <åƒæ•¸> 是ä½ç½®åƒæ•¸ä¸¦ä¸”是按照\n" +" $1,$2,.。$n 的順åºè¢«æŒ‡æ´¾çš„。如果沒有指定 <åƒæ•¸>\n" +" åƒæ•¸ï¼Œå‰‡å°å‡ºæ‰€æœ‰çš„ shell 變數。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„åƒæ•¸ã€‚" + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"å–æ¶ˆè¨­å®š shell 變數和函數的值和屬性。\n" +" \n" +" å°æ¯ä¸€å€‹ <å稱>ï¼Œåˆªé™¤å°æ‡‰çš„變數或函數。\n" +" \n" +" é¸é …:\n" +" -f\tå°‡æ¯å€‹ <å稱> 視為函數\n" +" -v\tå°‡æ¯å€‹ <å稱> 視為變數\n" +" -n\tå°‡æ¯å€‹ <å稱> 視為å稱引用,åªå–消其本身而éžå…¶æŒ‡å‘的變數\n" +" \n" +" ä¸å¸¶é¸é …時,unset é¦–å…ˆå˜—è©¦å–æ¶ˆè¨­å®šä¸€å€‹è®Šæ•¸ï¼Œå¦‚果失敗,å†å˜—è©¦å–æ¶ˆè¨­å®šä¸€å€‹" +"函數。\n" +" \n" +" æŸäº›è®Šæ•¸ä¸å¯ä»¥è¢«å–消設定;åƒè¦‹ã€Œreadonlyã€ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 NAME å稱為唯讀。" + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"為 shell 變數設定匯出屬性。\n" +" \n" +" 標記æ¯å€‹ <å稱> 為自動匯出到後續指令執行的環境。如果æä¾›äº† VALUE\n" +" 則匯出å‰å°‡ VALUE åšç‚ºæŒ‡æ´¾ã€‚\n" +" \n" +" é¸é …:\n" +" -f\t指 shell 函數\n" +" -n\t刪除æ¯å€‹ <å稱> 的匯出屬性\n" +" -p\t顯示所有匯出的變數和函數的列表\n" +" \n" +" 「--ã€çš„åƒæ•¸åœç”¨é€²ä¸€æ­¥çš„é¸é …處ç†ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 <å稱>。" + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"標記 shell 變數為ä¸å¯è®Šæ›´ã€‚\n" +" \n" +" 標記æ¯ä¸€å€‹ <å稱> 為唯讀;這些 <å稱> 變數的值將ä¸å¯ä»¥è¢«å¾ŒçºŒçš„æŒ‡æ´¾\n" +" æ“作所變更。如果æä¾›äº† VALUE,則在標記為唯讀之å‰å°‡ VALUE 值指派給變數。\n" +" \n" +" é¸é …:\n" +" -a\t指索引陣列變數\n" +" -A\t指關è¯é™£åˆ—變數\n" +" -f\t指 shell 函數\n" +" -p\té¡¯ç¤ºå”¯è®€è®Šæ•¸æˆ–å‡½æ•¸åˆ—è¡¨ï¼Œå–æ±ºæ–¼æ˜¯å¦æä¾›äº† -f é¸é …\n" +" \n" +" 「--ã€çš„åƒæ•¸åœç”¨é€²ä¸€æ­¥çš„é¸é …處ç†ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 <å稱>。" + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"ç§»ä½ä½ç½®åƒæ•¸ã€‚\n" +" \n" +" 釿–°å‘½åä½ç½®åƒæ•¸ $N+1ã€$N+2 … 到 $1ã€$2 … 如果沒有指定 N,\n" +" 則å‡è¨­ç‚º 1。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éž N 為負或者大於 $#。" + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"åœ¨ç›®å‰ shell 中執行一個檔案中的指令。\n" +" \n" +" åœ¨ç›®å‰ shell 中讀å–並執行 <檔å> 檔案中的指令。$PATH 變數中的\n" +" æ¢ç›®è¢«ç”¨æ–¼å°‹æ‰¾åŒ…å« <檔å> 檔案的目錄。如果æä¾›äº†ä»»ä½•çš„ <åƒæ•¸>\n" +" åƒæ•¸ï¼Œå‰‡å®ƒå€‘å°‡æˆç‚º <檔å> 檔案執行時的ä½ç½®åƒæ•¸ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳 <檔å> 檔案中最後一個指令的狀態;如果 <檔å> 檔案ä¸å¯è®€å‰‡å¤±æ•—。" + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"æš«åœ shell 執行。\n" +" \n" +" æš«åœ shell 的執行直到收到 SIGCONT 訊號。\n" +" 登入 shell ä¸å¯ä»¥è¢«æš«åœï¼Œé™¤éžå¼·åˆ¶åŸ·è¡Œã€‚\n" +" \n" +" é¸é …:\n" +" -f\t強制暫åœï¼Œå³ä½¿æ˜¯ç™»å…¥ shell。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžæ²’有啟用工作控制或者有錯誤發生。" + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"å°æ¢ä»¶è¡¨ç¤ºå¼é€²è¡Œæ±‚值。\n" +" \n" +" 根據 EXPR 表示å¼çš„æ±‚值以狀態 0 (真) 或 1 (å½) 退出。\n" +" 表示å¼å¯ä»¥æ˜¯ä¸€å…ƒæˆ–者二元的。一元表示å¼é€šå¸¸ç”¨æ–¼æª¢æ¸¬\n" +" æª”æ¡ˆç‹€æ…‹ã€‚åŒæ™‚還有字串é‹ç®—å­å’Œæ•¸å­—比較é‹ç®—å­ã€‚\n" +" \n" +" 檔案é‹ç®—å­ï¼š\n" +" \n" +" -a 檔案 如果檔案存在則為真。\n" +" -b 檔案 如果檔案為å€å¡Šç‰¹æ®Šæª”案則為真。\n" +" -c 檔案 如果檔案為字元特殊檔案則為真。\n" +" -d 檔案 如果檔案為目錄則為真。\n" +" -e 檔案 如果檔案存在則為真。\n" +" -f 檔案 如果檔案存在且為一般檔案則為真。\n" +" -g 檔案 如果檔案的群組屬性設定開啟則為真。\n" +" -h 檔案 如果檔案為符號連çµå‰‡ç‚ºçœŸã€‚\n" +" -L 檔案 如果檔案為符號連çµå‰‡ç‚ºçœŸã€‚\n" +" -k 檔案 如果檔案的é»è‘—ä½å…ƒå·²è¨­å®šå‰‡ç‚ºçœŸã€‚\n" +" -p 檔案 如果檔案為命å管é“則為真。\n" +" -r 檔案 å¦‚æžœæª”æ¡ˆå°æ–¼æ‚¨æ˜¯å¯è®€çš„則為真。\n" +" -s 檔案 如果檔案存在且ä¸ç‚ºç©ºå‰‡ç‚ºçœŸã€‚\n" +" -S 檔案 如果檔案是通訊端則為真。\n" +" -t 檔案æè¿°ç¬¦ 如果檔案æè¿°ç¬¦åœ¨çµ‚端上開啟則為真。\n" +" -u 檔案 如果檔案的使用者數列設定開啟則為真。\n" +" -w 檔案 å¦‚æžœæª”æ¡ˆå°æ‚¨æ˜¯å¯å¯«çš„則為真\n" +" -x 檔案 å¦‚æžœæª”æ¡ˆå°æ‚¨æ˜¯å¯åŸ·è¡Œçš„則為真。\n" +" -O 檔案 如果檔案是您所有的則為真。\n" +" -G 檔案 如果檔案是您的群組所有則為真。\n" +" -N 檔案 如果檔案上次被讀å–之後修改éŽå‰‡ç‚ºçœŸã€‚\n" +" \n" +" FILE1 -nt FILE2 如果 file1 檔案新於 file2 檔案則為真(根據\n" +" 修改日期)。\n" +" \n" +" FILE1 -ot FILE2 如果 file1 檔案舊於 file2 檔案則為真。\n" +" \n" +" FILE1 -ef FILE2 如果 file1 檔案是 file2 檔案的硬å¼é€£çµå‰‡ç‚ºçœŸã€‚\n" +" \n" +" 字串é‹ç®—å­\n" +" \n" +" -z 字串 如果字串為空則為真。\n" +" \n" +" -n 字串\n" +" 字串 如果字串ä¸ç‚ºç©ºå‰‡ç‚ºçœŸã€‚\n" +" \n" +" STRING1 = STRING2\n" +" 如果 string1 å’Œ string2 字串相åŒå‰‡ç‚ºçœŸã€‚\n" +" STRING1 != STRING2\n" +" 如果 string1 å’Œ string2 字串ä¸ç›¸åŒå‰‡ç‚ºçœŸã€‚\n" +" STRING1 < STRING2\n" +" å¦‚æžœæŒ‰å­—å…¸æŽ’åº string1 在 string2 串之å‰å‰‡ç‚ºçœŸã€‚\n" +" STRING1 > STRING2\n" +" å¦‚æžœæŒ‰å­—å…¸æŽ’åº string1 在 string2 串之å‰å‰‡ç‚ºçœŸã€‚\n" +" \n" +" å…¶ä»–é‹ç®—å­ï¼š\n" +" \n" +" -o é¸é … 如果指定 shell é¸é …啟用則為真。\n" +" -v VAR\t 如果指定 Shell 變數 VAR 已指派則為真。\n" +" -R VAR\t 如果指定 Shell 變數 VAR 已指派且為å稱引用則為真。\n" +" ! EXPR å¦‚æžœè¡¨ç¤ºå¼ expr 為å‡å‰‡ç‚ºçœŸã€‚\n" +" EXPR1 -a EXPR2 如果 expr1 å’Œ expr2 都為真則為真。\n" +" EXPR1 -o EXPR2 如果 expr1 å’Œ expr2 有一個為真則為真。\n" +" \n" +" arg1 OP arg2 算術測試。OP é‹ç®—å­å¯ä»¥æ˜¯ -eqã€-neã€\n" +" -ltã€-leã€-gtã€æˆ– -ge 之一。\n" +" \n" +" 二元算術é‹ç®—回傳真,如果 ARG1 åƒæ•¸ç­‰æ–¼ã€ä¸ç­‰æ–¼ã€\n" +" å°æ–¼ã€å°æ–¼ç­‰æ–¼ã€å¤§æ–¼ã€æˆ–者大於等於 ARG2 åƒæ•¸ã€‚\n" +" \n" +" 退出狀態:\n" +" 如果 EXPR è¡¨ç¤ºå¼æ±‚值為真則回傳æˆåŠŸï¼›å¦‚æžœ EXPR è¡¨ç¤ºå¼æ±‚值\n" +" ç‚ºå‡æˆ–è€…ä½¿ç”¨äº†ç„¡æ•ˆçš„åƒæ•¸å‰‡å›žå‚³å¤±æ•—。" + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"求值æ¢ä»¶è¡¨ç¤ºå¼ã€‚\n" +" \n" +" 是內建指令「testã€çš„åŒç¾©è©žï¼Œä½†æ˜¯æœ€å¾Œä¸€å€‹åƒæ•¸å¿…須是\n" +" 字元「]ã€ï¼Œä»¥ç¬¦åˆèµ·å§‹çš„「[ã€ã€‚" + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"顯示行程時間\n" +" \n" +" å°å‡º shell åŠå…¶æ‰€æœ‰å­è¡Œç¨‹çš„累計使用者空間和\n" +" 系統空間執行時間。\n" +" \n" +" 退出狀態:\n" +" 一律æˆåŠŸã€‚" + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"å°è¨Šè™Ÿå’Œå…¶ä»–事件設陷阱。\n" +" \n" +" 定義一個處ç†å™¨ï¼Œåœ¨ shell 接收到訊號和其他æ¢ä»¶ä¸‹åŸ·è¡Œã€‚\n" +" \n" +" <åƒæ•¸> 是當 shell 接收到 SIGNAL_SPEC 訊號時讀å–和執行的指令。\n" +" 如果沒有指定 <åƒæ•¸> (並且åªçµ¦å‡ºä¸€å€‹ SIGNAL_SPEC 訊號) 或者\n" +" <åƒæ•¸> 為\n" +" 「-ã€ï¼Œæ¯ä¸€å€‹æŒ‡å®šçš„åƒæ•¸æœƒè¢«é‡è¨­ç‚ºåŽŸå§‹å€¼ã€‚å¦‚æžœ <åƒæ•¸> 是一個空串,則æ¯ä¸€" +"個\n" +" SIGNAL_SPEC 訊號會被 shell 和它啟動的指令忽略。\n" +" \n" +" 如果一個 SIGNAL_SPEC 訊號是 EXIT (0),則 <åƒæ•¸> 指令會在 shell 退出時被\n" +" 執行。如果一個 SIGNAL_SPEC 訊號是 DEBUG,則 <åƒæ•¸> 指令會在æ¯ä¸€å€‹ç°¡å–®å‘½\n" +" 令之å‰åŸ·è¡Œã€‚\n" +" \n" +" å¦‚æžœä¸æä¾›åƒæ•¸ï¼Œtrap å°å‡ºåˆ—表顯示æ¯ä¸€å€‹èˆ‡æ¯ä¸€å€‹è¨Šè™Ÿç›¸é—œè¯çš„æŒ‡ä»¤ã€‚\n" +" \n" +" é¸é …:\n" +" -l\tå°å‡ºä¸€å€‹è¨Šè™Ÿåç¨±å’Œå®ƒå€‘å°æ‡‰çš„編號列表\n" +" -p\tå°å‡ºèˆ‡æ¯å€‹ SIGNAL_SPEC 訊號相關è¯çš„陷阱指令\n" +" \n" +" æ¯ä¸€å€‹ SIGNAL_SPEC 訊號å¯ä»¥æ˜¯ 中的訊號å稱或者訊號編號。\n" +" 訊號å稱大å°å¯«ç›¸ç¬¦ä¸”å¯ä»¥ä½¿ç”¨ SIG 字首。訊號å¯ç”¨ã€Œkill - 訊號 $$ã€\n" +" 傳é€çµ¦ shell。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 SIGSPEC。" + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"顯示指令類型的資訊。\n" +" \n" +" å°æ–¼æ¯ä¸€å€‹ <å稱>,指示如果åšç‚ºæŒ‡ä»¤å®ƒå°‡å¦‚何被解釋。\n" +" \n" +" é¸é …:\n" +" -a\t顯示所有包å«å稱為 <å稱> çš„å¯åŸ·è¡Œæª”案的ä½ç½®ï¼›\n" +" \t包括別åã€å…§å»ºå’Œå‡½æ•¸ã€‚僅當「-pã€é¸é …沒有使用時\n" +" -f\t抑制 shell 函數查詢\n" +" -P\t為æ¯å€‹ <å稱> 驚醒 PATH 路徑æœå°‹ï¼Œå³ä½¿å®ƒæ˜¯åˆ¥åã€\n" +" \t內建或函數,並且回傳將被執行的ç£ç¢Ÿä¸Šæª”案的å稱。\n" +" -p\t回傳將被執行的ç£ç¢Ÿä¸Šæª”案的å稱,或者當「type -t <å稱>ã€\n" +" \tä¸å›žå‚³ã€Œfileã€æ™‚,ä¸å›žå‚³ä»»ä½•值。\n" +" -t\t回傳下列詞中的任何一個「aliasã€ã€ã€Œkeywordã€ã€\n" +" \t「functionã€ã€ã€Œbuiltinã€ã€ã€Œfileã€æˆ–者「ã€ï¼Œå¦‚æžœ <å稱> 是相應的\n" +" \t一個別åã€shell ä¿ç•™å­—ã€shell 函數ã€shell 內建物件ã€\n" +" \tç£ç¢Ÿæª”案或沒有找到。\n" +" \n" +" åƒæ•¸ï¼š\n" +" <å稱>\tå°‡è¦è§£æžçš„æŒ‡ä»¤ã€‚\n" +" \n" +" 退出狀態:\n" +" 如果所有的 <å稱> 指令都找到則回傳æˆåŠŸï¼›ä»»ä½•æ‰¾ä¸åˆ°å‰‡å¤±æ•—。" + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"修改 shell 資æºé™åˆ¶ã€‚\n" +" \n" +" 在å…許此類控制的系統上,æä¾›å°æ–¼ shell åŠå…¶å»ºç«‹çš„行程所å¯ç”¨çš„\n" +" 資æºçš„æŽ§åˆ¶ã€‚\n" +" \n" +" é¸é …:\n" +" -S\t使用軟 (「softã€) 資æºé™åˆ¶\n" +" -H\t使用硬 (「hardã€) 資æºé™åˆ¶\n" +" -a\t所有目å‰é™åˆ¶éƒ½è¢«é€šå ±\n" +" -b\t通訊端快å–尺寸\n" +" -c\t建立核心檔案的最大尺寸\n" +" -d\tä¸€å€‹è¡Œç¨‹çš„è³‡æ–™å€æœ€å¤§å°ºå¯¸\n" +" -e\tæœ€é«˜çš„æŽ’ç¨‹å„ªå…ˆé †åº (「niceã€)\n" +" -f\t有 shell åŠå…¶å­è¡Œç¨‹å¯ä»¥å¯«å…¥çš„æœ€å¤§æª”案尺寸\n" +" -i\t最多å¯ä»¥æš«åœçš„訊號數\n" +" -k\t為這個進程所分é…的最大 kqueues 數é‡\n" +" -l\t一個行程å¯ä»¥éŽ–å®šçš„æœ€å¤§è¨˜æ†¶é«”å°ºå¯¸\n" +" -m\t最大的記憶體進é§å°ºå¯¸\n" +" -n\t最多開啟的檔案æè¿°ç¬¦å€‹æ•¸\n" +" -p\t管é“ç·©è¡å€å°ºå¯¸\n" +" -q\tPOSIX 資訊佇列的最大ä½å…ƒçµ„數\n" +" -r\t峿™‚排程的最大優先順åº\n" +" -s\t最大堆疊尺寸\n" +" -P\tå½çµ‚端的最大數é‡\n" +" -t\t最大的 CPU 時間,以秒為單ä½\n" +" -u\t最大使用者行程數\n" +" -v\t虛擬記憶體尺寸\n" +" -x\t最大的檔案鎖數é‡\n" +" -T\t最大執行緒數é‡\n" +" \n" +" ä¸¦éžæ‰€æœ‰é¸é …在所有系統上å¯ç”¨ã€‚\n" +" \n" +" 如果æä¾›äº† LIMIT 變數,則它為指定資æºçš„æ–°å€¼ï¼›ç‰¹åˆ¥çš„ LIMIT 值為\n" +" 「softã€ã€ã€Œhardã€å’Œã€Œunlimitedã€ï¼Œåˆ†åˆ¥è¡¨ç¤ºç›®å‰çš„軟é™åˆ¶ï¼Œç¡¬é™åˆ¶å’Œç„¡é™" +"制。\n" +" å¦å‰‡å°å‡ºæŒ‡å®šè³‡æºçš„ç›®å‰é™åˆ¶å€¼ï¼Œä¸å¸¶é¸é …則å‡å®šç‚º -f\n" +" \n" +" å–值都是 1024 ä½å…ƒçµ„為單ä½ï¼Œé™¤äº† -t 以秒為單ä½ï¼Œ-p 以 512 ä½å…ƒçµ„éžå¢žï¼Œ\n" +" -u 為無尺度的行程數é‡ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者錯誤發生。" + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"顯示或設定檔案模å¼é®ç½©ã€‚\n" +" \n" +" 設定使用者檔案建立é®ç½©ç‚º MODE 模å¼ã€‚如果çœç•¥äº† MODE,則\n" +" å°å‡ºç›®å‰é®ç½©çš„值。\n" +" \n" +" 如果 MODE 模å¼ä»¥æ•¸å­—開頭,則被當åšå…«é€²ä½æ•¸å­—è§£æžï¼›å¦å‰‡æ˜¯ä¸€å€‹\n" +" chmod(1) å¯æŽ¥æ”¶çš„ç¬¦è™Ÿæ¨¡å¼ä¸²ã€‚\n" +" \n" +" é¸é …:\n" +" -p\t如果çœç•¥ MDOE 模å¼ï¼Œä»¥å¯é‡ç”¨ç‚ºè¼¸å…¥çš„æ ¼å¼è¼¸å…¥\n" +" -S\t以符號形å¼è¼¸å‡ºï¼Œå¦å‰‡ä»¥å…«é€²ä½æ•¸å­—æ ¼å¼è¼¸å‡º\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„ MODE æ¨¡å¼æˆ–者é¸é …。" + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"等待工作完æˆä¸¦å›žå‚³é€€å‡ºç‹€æ…‹ã€‚\n" +" \n" +" 等待以 ID 編號識別的行程,其中 ID å¯ä»¥æ˜¯è¡Œç¨‹ç·¨è™Ÿæˆ–è€…å·¥ä½œè¦æ ¼ï¼Œ\n" +" 並通報它的終止狀態。如果 ID æ²’æœ‰çµ¦å‡ºï¼Œå‰‡ç­‰å¾…æ‰€æœ‰çš„ç›®å‰æ´»èºå­\n" +" 行程,並且回傳狀態為零。如果 ID æ˜¯å·¥ä½œè¦æ ¼ï¼Œç­‰å¾…工作管é“中的\n" +" 所有行程。\n" +" \n" +" 若指定了 -n é¸é …,等待下一個工作完æˆä¸¦å›žå‚³å…¶ç‹€æ…‹ã€‚\n" +" \n" +" 如果指定了 -f é¸é …且啟用工作管ç†ï¼Œå‰‡ç­‰å¾…指定 ID 終止,而éž\n" +" 等到其變更狀態。\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個 ID 行程的狀態;如果使用了無效的 ID 或者é¸é …則失敗。" + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"等待行程完æˆä¸¦ä¸”回傳退出狀態。\n" +" \n" +" 等待指定行程並通報它的終止狀態。如果沒有æä¾› PIDï¼Œå‰‡ç›®å‰æ‰€æœ‰çš„æ´»èº\n" +" å­è¡Œç¨‹éƒ½æœƒè¢«ç­‰å¾…,並且回傳碼為零。PID 必須為行程識別碼。\n" +" \n" +" 退出狀態:\n" +" 回傳行程 ID 的狀態;如果 PID 是無效的行程識別碼或者指定了無效的é¸é …則失" +"敗。" + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"為列表中的æ¯å€‹æˆå“¡åŸ·è¡ŒæŒ‡ä»¤ã€‚\n" +" \n" +" 「forã€è¿´åœˆç‚ºåˆ—表中的æ¯å€‹æˆå“¡åŸ·è¡Œä¸€ç³»åˆ—的指令。如果沒有\n" +" 「in WORDS ...;ã€å‰‡å‡å®šä½¿ç”¨ã€Œin \"$@\"ã€ã€‚å°æ–¼ WORDS 中的æ¯\n" +" 個元素,<å稱> 被設定為該元素,並且執行 <指令>。\n" +" \n" +" 退出狀態:\n" +" 回傳最後執行指令的狀態。" + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"ç®—è¡“ for 迴圈。\n" +" \n" +" 等價於\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\t<指令>\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1ã€EXP2 å’Œ EXP3 都是算術表示å¼ã€‚如果çœç•¥ä»»ä½•表示å¼ï¼Œ\n" +" å‰‡ç­‰åŒæ–¼ä½¿ç”¨äº†æ±‚值為 1 的表示å¼ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳最後執行指令的狀態。" + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"從列表中é¸å–詞並且執行指令。\n" +" \n" +" WORDS 變數被展開,產生一個字詞的列表。展開的字詞集åˆè¢«å°å‡º\n" +" 在標準錯誤輸出è£ç½®ä¸Šï¼Œæ¯å€‹ä»¥ä¸€å€‹æ•¸å­—åšå­—首。如果沒有「in WORDSã€\n" +" 則å‡å®šä½¿ç”¨ã€Œin \"$@\"ã€ã€‚PS3 æç¤ºç¬¦æœƒè¢«é¡¯ç¤ºä¸¦ä¸”從標準輸入讀入一列\n" +" å¦‚æžœè©²åˆ—ç”±è¢«é¡¯ç¤ºå­—è©žå°æ‡‰çš„æ•¸å­—組æˆï¼Œå‰‡ <å稱> 變數被設定為相應\n" +" 的字詞。如果列為空,則 WORDS 變數和æç¤ºç¬¦è¢«é‡æ–°é¡¯ç¤ºã€‚如果讀å–了\n" +" æª”æ¡ˆçµæŸç¬¦ï¼Œå‰‡æŒ‡ä»¤å®Œæˆã€‚讀入任何其他的值會導致 <å稱> 變數被設定\n" +" 為空。讀入的列被存放在變數 REPLY 中。<指令> åœ¨æ¯æ¬¡é¸æ“‡\n" +" 之後執行直到執行一個 break 指令。\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個執行指令的狀態。" + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"通報管é“執行的消耗時間。\n" +" \n" +" 執行 PIPELINE 並且å°å‡º PIPELINE 終止時實際時間ã€ä½¿ç”¨è€… CPU 時間和系統\n" +" CPU 時間的總çµã€‚\n" +" \n" +" é¸é …:\n" +" -p\t用å¯ç§»æ¤çš„ POSIX æ ¼å¼å°å‡ºç”¨æ™‚總çµã€‚\n" +" \n" +" TIMEFORMAT 變數的值被åšç‚ºè¼¸å‡ºæ ¼å¼ã€‚\n" +" \n" +" 退出狀態:\n" +" å›žå‚³ç‹€æ…‹å³ PIPELINE 的回傳狀態。" + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"基於模å¼ç¬¦åˆä¾†åŸ·è¡ŒæŒ‡ä»¤ã€‚\n" +" \n" +" 基於 PATTERN 模å¼ç¬¦åˆçš„字詞 WORDï¼Œæœ‰é¸æ“‡çš„執行 <指令>。\n" +" 「|ã€ç”¨æ–¼åˆ†éš”多個模å¼ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個執行指令的狀態。" + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"根據æ¢ä»¶åŸ·è¡ŒæŒ‡ä»¤ã€‚\n" +" \n" +" 「if <指令>ã€åˆ—表被執行。如果退出狀態為零,則執行「then <指令>ã€\n" +" 列表。å¦å‰‡æŒ‰é †åºåŸ·è¡Œæ¯å€‹ã€Œelif <指令>ã€åˆ—表,並且如果它的退出狀態為\n" +" é›¶ï¼Œå‰‡åŸ·è¡Œå°æ‡‰çš„「then <指令>ã€åˆ—表並且 if 指令終止。å¦å‰‡å¦‚果存在的\n" +" 情æ³ä¸‹ï¼ŒåŸ·è¡Œã€Œelse <指令>ã€åˆ—è¡¨ã€‚æ•´å€‹çµæ§‹çš„退出狀態是最後一個執行\n" +" 指令的狀態,或者如果沒有æ¢ä»¶æ¸¬è©¦ç‚ºçœŸçš„話,則為零。\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個執行指令的狀態。" + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"åªè¦æ¸¬è©¦æˆåŠŸå³åŸ·è¡ŒæŒ‡ä»¤ã€‚\n" +" \n" +" åªè¦åœ¨ã€Œwhileã€<指令> ä¸­çš„æœ€çµ‚æŒ‡ä»¤å›žå‚³çµæžœç‚º 0,則\n" +" 展開並執行 <指令>。\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個執行指令的狀態。" + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"當測試ä¸åŒéŽæ™‚執行指令。\n" +" \n" +" 「untilã€<指令> 的最終指令回傳狀態ä¸ç‚º 0 時,\n" +" 展開並執行 <指令>。\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個執行指令的狀態。" + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"建立一個以 <å稱> 為å的副行程。\n" +" \n" +" éžåŒæ­¥åŸ·è¡Œ <指令>,在執行 shell 中的陣列變數 <å稱>\n" +" çš„ 0 號和 1 號元素åšç‚ºæª”案æè¿°ç¬¦ï¼Œä»¥ä¸€å€‹ç®¡é“連接指令\n" +" 分別åšç‚ºæŒ‡ä»¤çš„æ¨™æº–輸出和輸入è£ç½®ã€‚\n" +" é è¨­çš„ <å稱> 是「COPROCã€ã€‚\n" +" \n" +" 退出狀態:\n" +" coprc 指令回傳離開代碼 0。" + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"定義 shell 函數。\n" +" \n" +" 建立一個以 <å稱> 為åçš„ shell 函數。當åšç‚ºä¸€å€‹ç°¡å–®çš„æŒ‡ä»¤å•Ÿç”¨æ™‚,\n" +" <å稱> å‡½æ•¸åŸ·è¡Œå‘¼å« shell 語境中的 COMMANDs 指令。當 <å稱>\n" +" è¢«å•Ÿç”¨æ™‚ï¼Œåƒæ•¸åšç‚º $1…$n 被傳éžçµ¦å‡½æ•¸ï¼Œå‡½æ•¸çš„å字儲存在變數\n" +" $FUNCNAME 中。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éž <å稱> 為唯讀。" + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"將指令組åˆç‚ºä¸€å€‹å–®å…ƒã€‚\n" +" \n" +" 執行群組中的指令集åˆã€‚é€™æ˜¯å°æ•´å€‹æŒ‡ä»¤é›†åˆ\n" +" åšé‡å®šå‘的方法之一。\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個執行指令的狀態。" + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"在å‰è‡ºç¹¼çºŒå·¥ä½œ\n" +" \n" +" å°æ–¼ JOB_SPEC åƒæ•¸ä¾†èªªå’Œã€Œfgã€æŒ‡ä»¤ç­‰åŒã€‚繼續一個\n" +" åœæ­¢çš„æˆ–者後臺工作。JOB_SPEC å¯ä»¥æŒ‡å®šä¸€å€‹å·¥ä½œ\n" +" å字或工作號。在 JOB_SPEC 後加上一個「&ã€å°‡æœƒæŠŠ\n" +" 工作放至後臺,就åƒå·¥ä½œè¦æ ¼è¢«åšç‚ºã€Œbgã€æŒ‡ä»¤çš„åƒæ•¸\n" +" 執行一樣。\n" +" \n" +" 退出狀態:\n" +" 回傳被繼續的工作狀態。" + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"求值算術表示å¼ã€‚\n" +" \n" +" è¡¨ç¤ºå¼æŒ‰ç…§ç®—術法則進行求值。\n" +" 等價於「let 表示å¼ã€ã€‚\n" +" \n" +" 退出狀態:\n" +" å¦‚æžœè¡¨ç¤ºå¼æ±‚值為 0 則回傳 1ï¼›å¦å‰‡å›žå‚³ 0。" + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"執行æ¢ä»¶æŒ‡ä»¤ã€‚\n" +" \n" +" 根據æ¢ä»¶è¡¨ç¤ºå¼ EXPRESSION 的求值回傳狀態 0 或 1ã€‚è¡¨ç¤ºå¼æŒ‰ç…§\n" +" 「testã€å…§å»ºçš„ç›¸åŒæ¢ä»¶çµ„æˆï¼Œæˆ–者å¯ä»¥æœ‰ä¸‹åˆ—é‹ç®—å­é€£æŽ¥è€Œæˆï¼š\n" +" \n" +" ( EXPRESSION )\t回傳 EXPRESSION 表示å¼çš„值\n" +" ! EXPRESSION\t\t如果 EXPRESSION 表示å¼ç‚ºå‡å‰‡ç‚ºçœŸï¼Œå¦å‰‡ç‚ºå‡\n" +" EXPR1 && EXPR2\t如果 EXPR1 å’Œ EXPR2 表示å¼å‡ç‚ºçœŸå‰‡ç‚ºçœŸï¼Œå¦å‰‡ç‚ºå‡\n" +" EXPR1 || EXPR2\t如果 EXPR1 å’Œ EXPR2 表示å¼ä¸­æœ‰ä¸€å€‹ç‚ºçœŸå‰‡ç‚ºçœŸï¼Œå¦å‰‡ç‚º" +"å‡\n" +" \n" +" 當使用「==ã€å’Œã€Œ!=ã€é‹ç®—å­æ™‚,é‹ç®—å­å³é‚Šçš„字串被用作模å¼ä¸¦ä¸”執行一個\n" +" 符åˆã€‚當使用「=~ã€é‹ç®—å­æ™‚,é‹ç®—å­å³é‚Šçš„å­—ä¸²è¢«ç•¶åšæ­£è¦è¡¨ç¤ºå¼ä¾†é€²è¡Œ\n" +" 符åˆã€‚\n" +" \n" +" é‹ç®—å­ && å’Œ || å°‡ä¸å° EXPR2 表示å¼é€²è¡Œæ±‚值,如果 EXPR1 表示å¼è¶³å¤ ç¢ºå®š\n" +" 整個表示å¼çš„值。\n" +" \n" +" 退出狀態:\n" +" 根據 EXPRESSION 的值為 0 或 1。" + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"常用 shell 變數å稱和使用。\n" +" \n" +" BASH_VERSION\tç›®å‰ Bash 的版本資訊。\n" +" CDPATH\t用於「cdã€æŒ‡ä»¤åƒæ•¸æœå°‹åˆ†è™Ÿåˆ†éš”的目錄列表\n" +" GLOBIGNORE\t路徑擴充套件時忽略的檔åç¬¦åˆæ¨¡å¼åˆ—表,\n" +" \t\t以分號分隔。\n" +" HISTFILE\t您的指令歷å²è¨˜éŒ„存放的檔案å稱。\n" +" HISTFILESIZE\tæ­·å²è¨˜éŒ„檔案最多å¯ä»¥å„²å­˜çš„列數。\n" +" HISTSIZE\t一個執行的 shell 最多å¯ä»¥è¨ªå•的歷å²è¨˜éŒ„指令列數。\n" +" HOME\t您登入目錄的完整路徑。\n" +" HOSTNAME\tç›®å‰ä¸»æ©Ÿçš„主機å稱。\n" +" HOSTTYPE\tç›®å‰ç‰ˆæœ¬çš„ BASH 在其之上執行的 CPU 類型。\n" +" IGNOREEOF\t控制 shell æ”¶åˆ°æª”æ¡ˆçµæŸç¬¦åšç‚ºå–®ä¸€è¼¸å…¥å¾Œçš„\n" +" \t\t動作。如果設定這個變數,則它的值是 shell 退出之å‰åœ¨\n" +" \t\t一個空列上å¯ä»¥é€£çºŒçœ‹åˆ°çš„æª”æ¡ˆçµæŸç¬¦æ•¸é‡(é è¨­ç‚º 10)。\n" +" \t\tæœªè¨­å®šæ™‚ï¼Œæª”æ¡ˆçµæŸç¬¦æ¨™èªŒè‘—è¼¸å…¥çš„çµæŸã€‚\n" +" MACHTYPE\tæè¿°ç›®å‰åŸ·è¡Œ Bash 的系統字串。\n" +" MAILCHECK\tBash 檢測新郵件的頻率,以秒為單ä½ã€‚\n" +" MAILPATH\tBash 從中檢測新郵件的檔案列表,以分號分隔。\n" +" OSTYPE\t執行 Bash çš„ Unix 版本。\n" +" PATH\t當尋找指令時æœå°‹çš„目錄列表,以冒號分隔。\n" +" PROMPT_COMMAND\tå°å‡ºæ¯ä¸€å€‹ä¸»æç¤ºç¬¦ä¹‹å‰åŸ·è¡Œçš„命\n" +" \t\t令。\n" +" PS1\t\t主æç¤ºç¬¦å­—串。\n" +" PS2\t\t從æç¤ºç¬¦å­—串。\n" +" PWD\t\tç›®å‰ç›®éŒ„的完整路徑。\n" +" SHELLOPTS\t已啟用的 shell é¸é …列表,以冒號分隔。\n" +" TERM\tç›®å‰çµ‚端類型的å稱。\n" +" TIMEFORMAT\t以關éµå‰‡ã€Œtimeã€é¡¯ç¤ºçš„æ™‚間統計資訊的輸出\n" +" \t\tæ ¼å¼ã€‚\n" +" auto_resume\téžç©ºæ™‚,一個單ç¨çš„æŒ‡ä»¤è©žæœƒé¦–先被在目å‰\n" +" \t\tåœæ­¢çš„工作列表中æœå°‹ã€‚如果找到則該工作被置於å‰è‡ºã€‚\n" +" \t\t如果值為「exactã€å‰‡æ„味著指令詞必須精確符åˆåœæ­¢å·¥ä½œ\n" +" \t\t列表中的指令。如果值為「substringã€å‰‡æ„味著指令詞必\n" +" \t\t須符åˆå·¥ä½œçš„一個å­å­—串。任何其他的值æ„味著指令詞\n" +" \t\tå¿…é ˆæ˜¯åœæ­¢å·¥ä½œçš„一個字首。\n" +" histchars\t控制歷å²è¨˜éŒ„展開和快速å–代的字元。第一個字元是\n" +" \t\tæ­·å²è¨˜éŒ„å–代字元,通常是「!ã€ã€‚第二個字元是快速å–代字元,\n" +" \t\t通常是「^ã€ã€‚第三個是歷å²è¨˜éŒ„註釋字元,通常是「#ã€ã€‚\n" +" HISTIGNORE\t用於決定哪些指令被存入歷å²è¨˜éŒ„檔案的模å¼\n" +" \t\t列表,以冒號分隔。\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"從堆疊中建立目錄。\n" +" \n" +" 從目錄堆疊中建立æ¢ç›®ã€‚ä¸å¸¶åƒæ•¸æ™‚,建立堆疊頂端目錄,並變更至新的堆疊\n" +" 頂端目錄。\n" +" \n" +" é¸é …:\n" +" -n\tæŠ‘åˆ¶å¾žå †ç–Šä¸­åˆªé™¤ç›®éŒ„æ™‚é€šå¸¸çš„ç›®éŒ„è®Šæ›æ“作,從而僅å°å †ç–Š\n" +" \t進行æ“作。\n" +" \n" +" åƒæ•¸ï¼š\n" +" +N\t刪除第 N 個目錄 (「dirsã€é¡¯ç¤ºçš„目錄列表中左起,從零開始)。\n" +" \t例如:「popd +0ã€åˆªé™¤ç¬¬ä¸€å€‹ç›®éŒ„,「popd +1ã€åˆªé™¤ç¬¬äºŒå€‹ã€‚\n" +" \n" +" -N\t刪除第 N 個目錄 (「dirsã€é¡¯ç¤ºçš„目錄列表中å³èµ·ï¼Œå¾žé›¶é–‹å§‹)。\n" +" \t例如:「popd -0ã€åˆªé™¤æœ€å¾Œä¸€å€‹ç›®éŒ„,,「popd -1ã€åˆªé™¤å€’數第二個。\n" +" \n" +" 「dirsã€å…§å»ºé¡¯ç¤ºç›®éŒ„堆疊。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„åƒæ•¸æˆ–者目錄變æ›å¤±æ•—。" + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"從堆疊中刪除目錄。\n" +" \n" +" 從目錄堆疊中刪除æ¢ç›®ã€‚ä¸å¸¶åƒæ•¸æ™‚,刪除堆疊頂端目錄,並變更至新的堆疊\n" +" 頂端目錄。\n" +" \n" +" é¸é …:\n" +" -n\tæŠ‘åˆ¶å¾žå †ç–Šä¸­åˆªé™¤ç›®éŒ„æ™‚é€šå¸¸çš„ç›®éŒ„è®Šæ›æ“作,從而僅å°å †ç–Š\n" +" \t進行æ“作。\n" +" \n" +" åƒæ•¸ï¼š\n" +" +N\t刪除第 N 個目錄 (「dirsã€é¡¯ç¤ºçš„目錄列表中左起,從零開始)。\n" +" \t例如:「popd +0ã€åˆªé™¤ç¬¬ä¸€å€‹ç›®éŒ„,「popd +1ã€åˆªé™¤ç¬¬äºŒå€‹ã€‚\n" +" \n" +" -N\t刪除第 N 個目錄 (「dirsã€é¡¯ç¤ºçš„目錄列表中å³èµ·ï¼Œå¾žé›¶é–‹å§‹)。\n" +" \t例如:「popd -0ã€åˆªé™¤æœ€å¾Œä¸€å€‹ç›®éŒ„,,「popd -1ã€åˆªé™¤å€’數第二個。\n" +" \n" +" 「dirsã€å…§å»ºé¡¯ç¤ºç›®éŒ„堆疊。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„åƒæ•¸æˆ–者目錄變æ›å¤±æ•—。" + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"顯示目錄堆疊。\n" +" \n" +" 顯示目å‰è¨˜ä½çš„目錄列表。藉由「pushdã€æŒ‡ä»¤å¯ä»¥å°‡ç›®éŒ„存入列表\n" +" 中;「popdã€æŒ‡ä»¤å¯ç”¨æ–¼é歷彈出列表。\n" +" \n" +" é¸é …:\n" +" -c\t刪除所有元素以清空目錄堆疊\n" +" -l\tä¸å°å‡ºèˆ‡ä¸»ç›®éŒ„相關的波浪號字首的目錄\n" +" -p\tæ¯åˆ—一個æ¢ç›®å°å‡ºç›®éŒ„堆疊\n" +" -v\tæ¯åˆ—一個æ¢ç›®ï¼Œä»¥å †ç–Šä¸­ä½ç½®ç‚ºå­—首å°å‡ºç›®éŒ„堆疊\n" +" \n" +" åƒæ•¸ï¼š\n" +" +N\t顯示 dirs ä¸å¸¶é¸é …啟動時顯示的目錄列表左起中第\n" +" \tN 個目錄,從零開始。\n" +" \n" +" -N\t顯示 dirs ä¸å¸¶é¸é …啟動時顯示的目錄列表å³èµ·ä¸­ç¬¬\n" +" \tN 個目錄,從零開始。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者發生錯誤。" + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"è¨­å®šå’Œå–æ¶ˆè¨­å®š shell é¸é …。\n" +" \n" +" 變更æ¯å€‹ shell <é¸é …å稱> 的設定。ä¸å¸¶é¸é …åƒæ•¸æ™‚,\n" +" 顯示æ¯å€‹æä¾›çš„ <é¸é …å稱> 或所有 shell é¸é … (如果沒有\n" +" 傳入任何 <é¸é …å稱>) å’Œæ˜¯å¦æ¯å€‹éƒ½æœ‰è¨­å®šåˆ°çš„æŒ‡ç¤ºã€‚\n" +" \n" +" é¸é …:\n" +" -o\té™åˆ¶ <é¸é …å稱> 為定義用於「set -oã€çš„é¸é …\n" +" -p\tå°å‡ºæ¯å€‹ shell é¸é …並標註它的狀態。\n" +" -q\t抑制輸出\n" +" -s\t啟用(設定)æ¯å€‹ <é¸é …å稱> é¸é …\n" +" -u\tåœç”¨(å–æ¶ˆè¨­å®š)æ¯å€‹ <é¸é …å稱> é¸é …\n" +" \n" +" 退出狀態:\n" +" 如果 <é¸é …å稱> é¸é …被啟用則回傳æˆåŠŸï¼›å¦‚æžœæ˜¯\n" +" 無效的é¸é …或 <é¸é …å稱> 被åœç”¨å‰‡å¤±æ•—。" + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"在 <æ ¼å¼> 的控制下格å¼åŒ–並å°å‡º <åƒæ•¸>。\n" +" \n" +" é¸é …:\n" +" -v var\t將輸出指派給 shell 變數 VAR 而ä¸é¡¯ç¤ºåœ¨æ¨™æº–輸出上\n" +" \n" +" <æ ¼å¼> 是包å«ä¸‰ç¨®ç‰©ä»¶çš„字串:簡單地被複製到標準輸出的普通字元;\n" +" 被變æ›ä¹‹å¾Œè¤‡è£½åˆ°æ¨™æº–è¼¸å…¥çš„é€¸å‡ºå­—å…ƒï¼›ä»¥åŠæ¯å€‹éƒ½æœƒå½±éŸ¿åˆ°ä¸‹å€‹åƒæ•¸çš„å°å‡ºæ ¼å¼" +"åŒ–è¦æ ¼ã€‚\n" +" \n" +" 在 printf(1) 中æè¿°çš„æ¨™æº–æŽ§åˆ¶è¦æ ¼ä¹‹å¤–,printf è§£æžï¼š\n" +" \n" +" %b\tæ“´å……å¥—ä»¶å°æ‡‰åƒæ•¸ä¸­çš„åæ–œç·šé€¸å‡ºåºåˆ—\n" +" %q\t以å¯åšç‚º shell 輸入的格å¼å¼•ç”¨åƒæ•¸\n" +" %(fmt)T\t以 FMT 為æä¾› strftime(3) 的格å¼è¼¸å‡ºæ—¥æœŸèˆ‡æ™‚間字串 \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者發生寫入或指派錯誤。" + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"è¦ç¯„ readline 如何完æˆè®€å–åƒæ•¸ã€‚\n" +" \n" +" è¦æ ¼å°æ–¼æ¯ä¸€å€‹<å稱>如何完æˆè®€å–åƒæ•¸ã€‚如果ä¸å¸¶é¸é …,\n" +" ç¾æœ‰çš„è£œå®Œè¦æ ¼æœƒä»¥å¯ä»¥é‡ç”¨ç‚ºè¼¸å…¥çš„æ ¼å¼å°å‡ºã€‚\n" +" \n" +" é¸é …:\n" +" -p\t以å¯é‡ç”¨çš„æ ¼å¼å°å‡ºç¾æœ‰çš„è£œå®Œè¦æ ¼ã€‚\n" +" -r\tå°æ–¼æ¯å€‹<å稱>åˆªé™¤è£œå®Œè¦æ ¼ï¼Œæˆ–者如果沒有æä¾›<å稱>\n" +" \tåç¨±ï¼Œåˆªé™¤æ‰€æœ‰çš„è£œå®Œè¦æ ¼ã€‚\n" +" -D\tå°æ–¼æ²’æœ‰è£œå®Œè¦æ ¼å®šç¾©çš„æŒ‡ä»¤ï¼Œè¨­å®šé è¨­çš„補完動作\n" +" -E\tå°æ–¼ã€Œemptyã€æŒ‡ä»¤è¨­å®šè£œå®Œå‹•作,—— å°æ–¼ç©ºåˆ—的補完。\n" +" -I\t套用補完和動作到首個 (通常是指令) 單詞\n" +" \n" +" 嘗試補完時,按照上述大寫字æ¯é¸é …的順åºé€²è¡Œå‹•作。 如果傳入了多個é¸é …,\n" +" -D é¸é …優先於 -E é¸é …,而兩者優先於 -I é¸é …。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者錯誤發生。" + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"便“šé¸é …顯示å¯èƒ½çš„補完。\n" +" \n" +" æ„圖在能產生å¯èƒ½çš„補完 shell 函數內部使用。\n" +" 如果æä¾›äº†å¯é¸çš„ WORD åƒæ•¸ï¼Œå‰‡ç”¢ç”ŸæŒ‰ç…§ WORD\n" +" 進行的符åˆã€‚\n" +" \n" +" 退出狀態:\n" +" 除éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …或者錯誤發生,å¦å‰‡å›žå‚³æˆåŠŸã€‚" + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"修改或顯示補完é¸é …。\n" +" \n" +" 修改æ¯å€‹ <å稱> 的補完é¸é …,或如果沒有æä¾› <å稱>,執行目å‰çš„補完。\n" +" 如果ä¸å¸¶é¸é …,å°å‡ºæ¯å€‹ <å稱> 的補完é¸é …或目å‰çš„è£œå®Œè¦æ ¼ã€‚\n" +" \n" +" é¸é …:\n" +" \t-o option\t為æ¯å€‹ <å稱> 設定補完é¸é … option\n" +" \t-D\t\t為「defaultã€æŒ‡ä»¤è£œå®Œè®Šæ›´é¸é …\n" +" \t-E\t\t為「emptyã€æŒ‡ä»¤è£œå®Œè®Šæ›´é¸é …\n" +" \t-I\t\t為首單詞上的補完變更é¸é …\n" +" \n" +" 使用「+oã€è€Œä¸æ˜¯ã€Œ-oã€å¯ä»¥é—œé–‰æŒ‡å®šçš„é¸é …。\n" +" \n" +" åƒæ•¸ï¼š\n" +" \n" +" æ¯å€‹ <å稱> éƒ½å°æ‡‰ä¸€å€‹ä¹‹å‰ä»¥è—‰ç”±ã€Œcompleteã€å…§å»ºå®šç¾©äº†è£œå®Œè¦æ ¼çš„\n" +" æŒ‡ä»¤ã€‚å¦‚æžœä¸æä¾› <å稱>,目å‰ç”¢ç”Ÿè£œå®Œçš„å‡½æ•¸å¿…é ˆå‘¼å« compopt,\n" +" 並且目å‰åŸ·è¡Œçš„補完產生器é¸é …會被修改。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 <å稱> æ²’æœ‰å®šç¾©è£œå®Œè¦æ ¼ã€‚" + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"從標準輸入讀å–列到索引陣列變數中。\n" +" \n" +" 從標準輸入讀å–列到索引陣列變數 ARRAY 中,或者如果使用了 -u é¸é …,\n" +" 從檔案æè¿°ç¬¦ FD 中讀å–。MAPFILE 變數是é è¨­çš„ ARRAY 變數。\n" +" \n" +" é¸é …:\n" +" -d delim\t使用 DELIM å–代æ›è¡Œç¬¦è™Ÿä¾†æ–·è¡Œ\n" +" -n count\t最多複製 COUNT 列,如果 COUNT 為 0,則複製所有列。\n" +" -O origin\t從索引 ORIGIN é–‹å§‹ 指派給 ARRAY 變數。é è¨­ç´¢å¼•是 0。\n" +" -s count \t丟棄最先讀å–çš„ COUNT 列。\n" +" -t\t\t從讀å–çš„æ¯åˆ—末尾刪除一個æ›åˆ—符。\n" +" -u fd\t\t從檔案æè¿°ç¬¦ FD 中讀å–åˆ—è€Œä¸æ˜¯æ¨™æº–輸入。\n" +" -C callback\tæ¯ QUANTUM æ¬¡è®€åˆ—ä¹‹å¾Œå° CALLBACK 回呼求值。\n" +" -c quantum\tå®šç¾©æ¯æ¬¡å‘¼å« CALLBACK 回呼之間讀å–的列數。\n" +" \n" +" åƒæ•¸ï¼š\n" +" ARRAY\t\t儲存資料使用的陣列變數\n" +" \n" +" 如果使用了 -C 而沒有 -c,é è¨­çš„å®šé‡æ˜¯ 5000ã€‚ç•¶å° CALLBACK 求值時,\n" +" 下一個將被指派的陣列元素索引åšç‚ºé¡å¤–åƒæ•¸è¢«å‚³éžã€‚\n" +" \n" +" å¦‚æžœæ²’æœ‰é¡¯å¼æŒ‡å®šèµ·å§‹ç´¢å¼•,mapfile å°‡åœ¨æŒ‡æ´¾å‰æ¸…空 ARRAY 變數。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …,或者 ARRAY è®Šæ•¸å”¯è®€æˆ–ä¸æ˜¯ç´¢å¼•陣列。" + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"從一個檔案中讀å–列到陣列變數中\n" +" \n" +" 一個「mapfileã€çš„åŒç¾©è©žã€‚" + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "回傳目å‰å­ä¾‹ç¨‹å‘¼å«çš„語境\n" +#~ " \n" +#~ " ä¸å¸¶ <表示å¼> 時,回傳" + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: 行程 %5ld(%s) 進入 the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "䏿˜Žè¨Šè™Ÿ #" diff --git a/bash-5.1/print_cmd.c b/bash-5.1/print_cmd.c new file mode 100644 index 0000000..3c8c2d8 --- /dev/null +++ b/bash-5.1/print_cmd.c @@ -0,0 +1,1613 @@ +/* print_command -- A way to make readable commands from a command tree. */ + +/* Copyright (C) 1989-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#if defined (PREFER_STDARG) +# include +#else +# include +#endif + +#include "bashansi.h" +#include "bashintl.h" + +#define NEED_XTRACE_SET_DECL + +#include "shell.h" +#include "flags.h" +#include /* use <...> so we pick it up from the build directory */ +#include "input.h" + +#include "shmbutil.h" + +#include "builtins/common.h" + +#if !HAVE_DECL_PRINTF +extern int printf PARAMS((const char *, ...)); /* Yuck. Double yuck. */ +#endif + +static int indentation; +static int indentation_amount = 4; + +#if defined (PREFER_STDARG) +typedef void PFUNC PARAMS((const char *, ...)); + +static void cprintf PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); +static void xprintf PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); +#else +#define PFUNC VFunction +static void cprintf (); +static void xprintf (); +#endif + +static void reset_locals PARAMS((void)); +static void newline PARAMS((char *)); +static void indent PARAMS((int)); +static void semicolon PARAMS((void)); +static void the_printed_command_resize PARAMS((int)); + +static void make_command_string_internal PARAMS((COMMAND *)); +static void _print_word_list PARAMS((WORD_LIST *, char *, PFUNC *)); +static void command_print_word_list PARAMS((WORD_LIST *, char *)); +static void print_case_clauses PARAMS((PATTERN_LIST *)); +static void print_redirection_list PARAMS((REDIRECT *)); +static void print_redirection PARAMS((REDIRECT *)); +static void print_heredoc_header PARAMS((REDIRECT *)); +static void print_heredoc_body PARAMS((REDIRECT *)); +static void print_heredocs PARAMS((REDIRECT *)); +static void print_heredoc_bodies PARAMS((REDIRECT *)); +static void print_deferred_heredocs PARAMS((const char *)); + +static void print_for_command PARAMS((FOR_COM *)); +#if defined (ARITH_FOR_COMMAND) +static void print_arith_for_command PARAMS((ARITH_FOR_COM *)); +#endif +#if defined (SELECT_COMMAND) +static void print_select_command PARAMS((SELECT_COM *)); +#endif +static void print_group_command PARAMS((GROUP_COM *)); +static void print_case_command PARAMS((CASE_COM *)); +static void print_while_command PARAMS((WHILE_COM *)); +static void print_until_command PARAMS((WHILE_COM *)); +static void print_until_or_while PARAMS((WHILE_COM *, char *)); +static void print_if_command PARAMS((IF_COM *)); +#if defined (COND_COMMAND) +static void print_cond_node PARAMS((COND_COM *)); +#endif +static void print_function_def PARAMS((FUNCTION_DEF *)); + +#define PRINTED_COMMAND_INITIAL_SIZE 64 +#define PRINTED_COMMAND_GROW_SIZE 128 + +char *the_printed_command = (char *)NULL; +int the_printed_command_size = 0; +int command_string_index = 0; + +int xtrace_fd = -1; +FILE *xtrace_fp = 0; + +#define CHECK_XTRACE_FP xtrace_fp = (xtrace_fp ? xtrace_fp : stderr) + +/* shell expansion characters: used in print_redirection_list */ +#define EXPCHAR(c) ((c) == '{' || (c) == '~' || (c) == '$' || (c) == '`') + +#define PRINT_DEFERRED_HEREDOCS(x) \ + do { \ + if (deferred_heredocs) \ + print_deferred_heredocs (x); \ + } while (0) + +/* Non-zero means the stuff being printed is inside of a function def. */ +static int inside_function_def; +static int skip_this_indent; +static int was_heredoc; +static int printing_connection; +static REDIRECT *deferred_heredocs; + +/* The depth of the group commands that we are currently printing. This + includes the group command that is a function body. */ +static int group_command_nesting; + +/* A buffer to indicate the indirection level (PS4) when set -x is enabled. */ +static char *indirection_string = 0; +static int indirection_stringsiz = 0; + +/* Print COMMAND (a command tree) on standard output. */ +void +print_command (command) + COMMAND *command; +{ + command_string_index = 0; + printf ("%s", make_command_string (command)); +} + +/* Make a string which is the printed representation of the command + tree in COMMAND. We return this string. However, the string is + not consed, so you have to do that yourself if you want it to + remain around. */ +char * +make_command_string (command) + COMMAND *command; +{ + command_string_index = was_heredoc = 0; + deferred_heredocs = 0; + make_command_string_internal (command); + return (the_printed_command); +} + +/* The internal function. This is the real workhorse. */ +static void +make_command_string_internal (command) + COMMAND *command; +{ + char s[3]; + + if (command == 0) + cprintf (""); + else + { + if (skip_this_indent) + skip_this_indent--; + else + indent (indentation); + + if (command->flags & CMD_TIME_PIPELINE) + { + cprintf ("time "); + if (command->flags & CMD_TIME_POSIX) + cprintf ("-p "); + } + + if (command->flags & CMD_INVERT_RETURN) + cprintf ("! "); + + switch (command->type) + { + case cm_for: + print_for_command (command->value.For); + break; + +#if defined (ARITH_FOR_COMMAND) + case cm_arith_for: + print_arith_for_command (command->value.ArithFor); + break; +#endif + +#if defined (SELECT_COMMAND) + case cm_select: + print_select_command (command->value.Select); + break; +#endif + + case cm_case: + print_case_command (command->value.Case); + break; + + case cm_while: + print_while_command (command->value.While); + break; + + case cm_until: + print_until_command (command->value.While); + break; + + case cm_if: + print_if_command (command->value.If); + break; + +#if defined (DPAREN_ARITHMETIC) + case cm_arith: + print_arith_command (command->value.Arith->exp); + break; +#endif + +#if defined (COND_COMMAND) + case cm_cond: + print_cond_command (command->value.Cond); + break; +#endif + + case cm_simple: + print_simple_command (command->value.Simple); + break; + + case cm_connection: + + skip_this_indent++; + printing_connection++; + make_command_string_internal (command->value.Connection->first); + + switch (command->value.Connection->connector) + { + case '&': + case '|': + { + char c = command->value.Connection->connector; + + s[0] = ' '; + s[1] = c; + s[2] = '\0'; + + print_deferred_heredocs (s); + + if (c != '&' || command->value.Connection->second) + { + cprintf (" "); + skip_this_indent++; + } + } + break; + + case AND_AND: + print_deferred_heredocs (" && "); + if (command->value.Connection->second) + skip_this_indent++; + break; + + case OR_OR: + print_deferred_heredocs (" || "); + if (command->value.Connection->second) + skip_this_indent++; + break; + + case ';': + if (deferred_heredocs == 0) + { + if (was_heredoc == 0) + cprintf (";"); + else + was_heredoc = 0; + } + else + print_deferred_heredocs (inside_function_def ? "" : ";"); + + if (inside_function_def) + cprintf ("\n"); + else + { + cprintf (" "); + if (command->value.Connection->second) + skip_this_indent++; + } + break; + + default: + cprintf (_("print_command: bad connector `%d'"), + command->value.Connection->connector); + break; + } + + make_command_string_internal (command->value.Connection->second); + PRINT_DEFERRED_HEREDOCS (""); + printing_connection--; + break; + + case cm_function_def: + print_function_def (command->value.Function_def); + break; + + case cm_group: + print_group_command (command->value.Group); + break; + + case cm_subshell: + cprintf ("( "); + skip_this_indent++; + make_command_string_internal (command->value.Subshell->command); + PRINT_DEFERRED_HEREDOCS (""); + cprintf (" )"); + break; + + case cm_coproc: + cprintf ("coproc %s ", command->value.Coproc->name); + skip_this_indent++; + make_command_string_internal (command->value.Coproc->command); + break; + + default: + command_error ("print_command", CMDERR_BADTYPE, command->type, 0); + break; + } + + + if (command->redirects) + { + cprintf (" "); + print_redirection_list (command->redirects); + } + } +} + +static void +_print_word_list (list, separator, pfunc) + WORD_LIST *list; + char *separator; + PFUNC *pfunc; +{ + WORD_LIST *w; + + for (w = list; w; w = w->next) + (*pfunc) ("%s%s", w->word->word, w->next ? separator : ""); +} + +void +print_word_list (list, separator) + WORD_LIST *list; + char *separator; +{ + _print_word_list (list, separator, xprintf); +} + +void +xtrace_set (fd, fp) + int fd; + FILE *fp; +{ + if (fd >= 0 && sh_validfd (fd) == 0) + { + internal_error (_("xtrace_set: %d: invalid file descriptor"), fd); + return; + } + if (fp == 0) + { + internal_error (_("xtrace_set: NULL file pointer")); + return; + } + if (fd >= 0 && fileno (fp) != fd) + internal_warning (_("xtrace fd (%d) != fileno xtrace fp (%d)"), fd, fileno (fp)); + + xtrace_fd = fd; + xtrace_fp = fp; +} + +void +xtrace_init () +{ + xtrace_set (-1, stderr); +} + +void +xtrace_reset () +{ + if (xtrace_fd >= 0 && xtrace_fp) + { + fflush (xtrace_fp); + fclose (xtrace_fp); + } + else if (xtrace_fd >= 0) + close (xtrace_fd); + + xtrace_fd = -1; + xtrace_fp = stderr; +} + +void +xtrace_fdchk (fd) + int fd; +{ + if (fd == xtrace_fd) + xtrace_reset (); +} + +/* Return a string denoting what our indirection level is. */ + +char * +indirection_level_string () +{ + register int i, j; + char *ps4; + char ps4_firstc[MB_LEN_MAX+1]; + int ps4_firstc_len, ps4_len, ineed, old; + + ps4 = get_string_value ("PS4"); + if (indirection_string == 0) + indirection_string = xmalloc (indirection_stringsiz = 100); + indirection_string[0] = '\0'; + + if (ps4 == 0 || *ps4 == '\0') + return (indirection_string); + + old = change_flag ('x', FLAG_OFF); + ps4 = decode_prompt_string (ps4); + if (old) + change_flag ('x', FLAG_ON); + + if (ps4 == 0 || *ps4 == '\0') + return (indirection_string); + +#if defined (HANDLE_MULTIBYTE) + ps4_len = strnlen (ps4, MB_CUR_MAX); + ps4_firstc_len = MBLEN (ps4, ps4_len); + if (ps4_firstc_len == 1 || ps4_firstc_len == 0 || ps4_firstc_len < 0) + { + ps4_firstc[0] = ps4[0]; + ps4_firstc[ps4_firstc_len = 1] = '\0'; + } + else + memcpy (ps4_firstc, ps4, ps4_firstc_len); +#else + ps4_firstc[0] = ps4[0]; + ps4_firstc[ps4_firstc_len = 1] = '\0'; +#endif + + /* Dynamically resize indirection_string so we have room for everything + and we don't have to truncate ps4 */ + ineed = (ps4_firstc_len * indirection_level) + strlen (ps4); + if (ineed > indirection_stringsiz - 1) + { + indirection_stringsiz = ineed + 1; + indirection_string = xrealloc (indirection_string, indirection_stringsiz); + } + + for (i = j = 0; ps4_firstc[0] && j < indirection_level && i < indirection_stringsiz - 1; i += ps4_firstc_len, j++) + { + if (ps4_firstc_len == 1) + indirection_string[i] = ps4_firstc[0]; + else + memcpy (indirection_string+i, ps4_firstc, ps4_firstc_len); + } + + for (j = ps4_firstc_len; *ps4 && ps4[j] && i < indirection_stringsiz - 1; i++, j++) + indirection_string[i] = ps4[j]; + + indirection_string[i] = '\0'; + free (ps4); + return (indirection_string); +} + +void +xtrace_print_assignment (name, value, assign_list, xflags) + char *name, *value; + int assign_list, xflags; +{ + char *nval; + + CHECK_XTRACE_FP; + + if (xflags) + fprintf (xtrace_fp, "%s", indirection_level_string ()); + + /* VALUE should not be NULL when this is called. */ + if (*value == '\0' || assign_list) + nval = value; + else if (sh_contains_shell_metas (value)) + nval = sh_single_quote (value); + else if (ansic_shouldquote (value)) + nval = ansic_quote (value, 0, (int *)0); + else + nval = value; + + if (assign_list) + fprintf (xtrace_fp, "%s=(%s)\n", name, nval); + else + fprintf (xtrace_fp, "%s=%s\n", name, nval); + + if (nval != value) + FREE (nval); + + fflush (xtrace_fp); +} + +/* A function to print the words of a simple command when set -x is on. Also used to + print the word list in a for or select command header; in that case, we suppress + quoting the words because they haven't been expanded yet. XTFLAGS&1 means to + print $PS4; XTFLAGS&2 means to suppress quoting the words in LIST. */ +void +xtrace_print_word_list (list, xtflags) + WORD_LIST *list; + int xtflags; +{ + WORD_LIST *w; + char *t, *x; + + CHECK_XTRACE_FP; + + if (xtflags&1) + fprintf (xtrace_fp, "%s", indirection_level_string ()); + + for (w = list; w; w = w->next) + { + t = w->word->word; + if (t == 0 || *t == '\0') + fprintf (xtrace_fp, "''%s", w->next ? " " : ""); + else if (xtflags & 2) + fprintf (xtrace_fp, "%s%s", t, w->next ? " " : ""); + else if (sh_contains_shell_metas (t)) + { + x = sh_single_quote (t); + fprintf (xtrace_fp, "%s%s", x, w->next ? " " : ""); + free (x); + } + else if (ansic_shouldquote (t)) + { + x = ansic_quote (t, 0, (int *)0); + fprintf (xtrace_fp, "%s%s", x, w->next ? " " : ""); + free (x); + } + else + fprintf (xtrace_fp, "%s%s", t, w->next ? " " : ""); + } + fprintf (xtrace_fp, "\n"); + fflush (xtrace_fp); +} + +static void +command_print_word_list (list, separator) + WORD_LIST *list; + char *separator; +{ + _print_word_list (list, separator, cprintf); +} + +void +print_for_command_head (for_command) + FOR_COM *for_command; +{ + cprintf ("for %s in ", for_command->name->word); + command_print_word_list (for_command->map_list, " "); +} + +void +xtrace_print_for_command_head (for_command) + FOR_COM *for_command; +{ + CHECK_XTRACE_FP; + fprintf (xtrace_fp, "%s", indirection_level_string ()); + fprintf (xtrace_fp, "for %s in ", for_command->name->word); + xtrace_print_word_list (for_command->map_list, 2); +} + +static void +print_for_command (for_command) + FOR_COM *for_command; +{ + print_for_command_head (for_command); + cprintf (";"); + newline ("do\n"); + + indentation += indentation_amount; + make_command_string_internal (for_command->action); + PRINT_DEFERRED_HEREDOCS (""); + semicolon (); + indentation -= indentation_amount; + + newline ("done"); +} + +#if defined (ARITH_FOR_COMMAND) +static void +print_arith_for_command (arith_for_command) + ARITH_FOR_COM *arith_for_command; +{ + cprintf ("for (("); + command_print_word_list (arith_for_command->init, " "); + cprintf ("; "); + command_print_word_list (arith_for_command->test, " "); + cprintf ("; "); + command_print_word_list (arith_for_command->step, " "); + cprintf ("))"); + newline ("do\n"); + indentation += indentation_amount; + make_command_string_internal (arith_for_command->action); + PRINT_DEFERRED_HEREDOCS (""); + semicolon (); + indentation -= indentation_amount; + newline ("done"); +} +#endif /* ARITH_FOR_COMMAND */ + +#if defined (SELECT_COMMAND) +void +print_select_command_head (select_command) + SELECT_COM *select_command; +{ + cprintf ("select %s in ", select_command->name->word); + command_print_word_list (select_command->map_list, " "); +} + +void +xtrace_print_select_command_head (select_command) + SELECT_COM *select_command; +{ + CHECK_XTRACE_FP; + fprintf (xtrace_fp, "%s", indirection_level_string ()); + fprintf (xtrace_fp, "select %s in ", select_command->name->word); + xtrace_print_word_list (select_command->map_list, 2); +} + +static void +print_select_command (select_command) + SELECT_COM *select_command; +{ + print_select_command_head (select_command); + + cprintf (";"); + newline ("do\n"); + indentation += indentation_amount; + make_command_string_internal (select_command->action); + PRINT_DEFERRED_HEREDOCS (""); + semicolon (); + indentation -= indentation_amount; + newline ("done"); +} +#endif /* SELECT_COMMAND */ + +static void +print_group_command (group_command) + GROUP_COM *group_command; +{ + group_command_nesting++; + cprintf ("{ "); + + if (inside_function_def == 0) + skip_this_indent++; + else + { + /* This is a group command { ... } inside of a function + definition, and should be printed as a multiline group + command, using the current indentation. */ + cprintf ("\n"); + indentation += indentation_amount; + } + + make_command_string_internal (group_command->command); + PRINT_DEFERRED_HEREDOCS (""); + + if (inside_function_def) + { + cprintf ("\n"); + indentation -= indentation_amount; + indent (indentation); + } + else + { + semicolon (); + cprintf (" "); + } + + cprintf ("}"); + + group_command_nesting--; +} + +void +print_case_command_head (case_command) + CASE_COM *case_command; +{ + cprintf ("case %s in ", case_command->word->word); +} + +void +xtrace_print_case_command_head (case_command) + CASE_COM *case_command; +{ + CHECK_XTRACE_FP; + fprintf (xtrace_fp, "%s", indirection_level_string ()); + fprintf (xtrace_fp, "case %s in\n", case_command->word->word); +} + +static void +print_case_command (case_command) + CASE_COM *case_command; +{ + print_case_command_head (case_command); + + if (case_command->clauses) + print_case_clauses (case_command->clauses); + newline ("esac"); +} + +static void +print_case_clauses (clauses) + PATTERN_LIST *clauses; +{ + indentation += indentation_amount; + while (clauses) + { + newline (""); + command_print_word_list (clauses->patterns, " | "); + cprintf (")\n"); + indentation += indentation_amount; + make_command_string_internal (clauses->action); + indentation -= indentation_amount; + PRINT_DEFERRED_HEREDOCS (""); + if (clauses->flags & CASEPAT_FALLTHROUGH) + newline (";&"); + else if (clauses->flags & CASEPAT_TESTNEXT) + newline (";;&"); + else + newline (";;"); + clauses = clauses->next; + } + indentation -= indentation_amount; +} + +static void +print_while_command (while_command) + WHILE_COM *while_command; +{ + print_until_or_while (while_command, "while"); +} + +static void +print_until_command (while_command) + WHILE_COM *while_command; +{ + print_until_or_while (while_command, "until"); +} + +static void +print_until_or_while (while_command, which) + WHILE_COM *while_command; + char *which; +{ + cprintf ("%s ", which); + skip_this_indent++; + make_command_string_internal (while_command->test); + PRINT_DEFERRED_HEREDOCS (""); + semicolon (); + cprintf (" do\n"); /* was newline ("do\n"); */ + indentation += indentation_amount; + make_command_string_internal (while_command->action); + PRINT_DEFERRED_HEREDOCS (""); + indentation -= indentation_amount; + semicolon (); + newline ("done"); +} + +static void +print_if_command (if_command) + IF_COM *if_command; +{ + cprintf ("if "); + skip_this_indent++; + make_command_string_internal (if_command->test); + semicolon (); + cprintf (" then\n"); + indentation += indentation_amount; + make_command_string_internal (if_command->true_case); + PRINT_DEFERRED_HEREDOCS (""); + indentation -= indentation_amount; + + if (if_command->false_case) + { + semicolon (); + newline ("else\n"); + indentation += indentation_amount; + make_command_string_internal (if_command->false_case); + PRINT_DEFERRED_HEREDOCS (""); + indentation -= indentation_amount; + } + semicolon (); + newline ("fi"); +} + +#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) +void +print_arith_command (arith_cmd_list) + WORD_LIST *arith_cmd_list; +{ + cprintf ("(("); + command_print_word_list (arith_cmd_list, " "); + cprintf ("))"); +} +#endif + +#if defined (COND_COMMAND) +static void +print_cond_node (cond) + COND_COM *cond; +{ + if (cond->flags & CMD_INVERT_RETURN) + cprintf ("! "); + + if (cond->type == COND_EXPR) + { + cprintf ("( "); + print_cond_node (cond->left); + cprintf (" )"); + } + else if (cond->type == COND_AND) + { + print_cond_node (cond->left); + cprintf (" && "); + print_cond_node (cond->right); + } + else if (cond->type == COND_OR) + { + print_cond_node (cond->left); + cprintf (" || "); + print_cond_node (cond->right); + } + else if (cond->type == COND_UNARY) + { + cprintf ("%s", cond->op->word); + cprintf (" "); + print_cond_node (cond->left); + } + else if (cond->type == COND_BINARY) + { + print_cond_node (cond->left); + cprintf (" "); + cprintf ("%s", cond->op->word); + cprintf (" "); + print_cond_node (cond->right); + } + else if (cond->type == COND_TERM) + { + cprintf ("%s", cond->op->word); /* need to add quoting here */ + } +} + +void +print_cond_command (cond) + COND_COM *cond; +{ + cprintf ("[[ "); + print_cond_node (cond); + cprintf (" ]]"); +} + +#ifdef DEBUG +void +debug_print_word_list (s, list, sep) + char *s; + WORD_LIST *list; + char *sep; +{ + WORD_LIST *w; + + if (s) + fprintf (stderr, "%s: ", s); + for (w = list; w; w = w->next) + fprintf (stderr, "%s%s", w->word->word, w->next ? sep : ""); + fprintf (stderr, "\n"); +} + +void +debug_print_cond_command (cond) + COND_COM *cond; +{ + fprintf (stderr, "DEBUG: "); + command_string_index = 0; + print_cond_command (cond); + fprintf (stderr, "%s\n", the_printed_command); +} +#endif + +void +xtrace_print_cond_term (type, invert, op, arg1, arg2) + int type, invert; + WORD_DESC *op; + char *arg1, *arg2; +{ + CHECK_XTRACE_FP; + command_string_index = 0; + fprintf (xtrace_fp, "%s", indirection_level_string ()); + fprintf (xtrace_fp, "[[ "); + if (invert) + fprintf (xtrace_fp, "! "); + + if (type == COND_UNARY) + { + fprintf (xtrace_fp, "%s ", op->word); + fprintf (xtrace_fp, "%s", (arg1 && *arg1) ? arg1 : "''"); + } + else if (type == COND_BINARY) + { + fprintf (xtrace_fp, "%s", (arg1 && *arg1) ? arg1 : "''"); + fprintf (xtrace_fp, " %s ", op->word); + fprintf (xtrace_fp, "%s", (arg2 && *arg2) ? arg2 : "''"); + } + + fprintf (xtrace_fp, " ]]\n"); + + fflush (xtrace_fp); +} +#endif /* COND_COMMAND */ + +#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) +/* A function to print the words of an arithmetic command when set -x is on. */ +void +xtrace_print_arith_cmd (list) + WORD_LIST *list; +{ + WORD_LIST *w; + + CHECK_XTRACE_FP; + fprintf (xtrace_fp, "%s", indirection_level_string ()); + fprintf (xtrace_fp, "(( "); + for (w = list; w; w = w->next) + fprintf (xtrace_fp, "%s%s", w->word->word, w->next ? " " : ""); + fprintf (xtrace_fp, " ))\n"); + + fflush (xtrace_fp); +} +#endif + +void +print_simple_command (simple_command) + SIMPLE_COM *simple_command; +{ + command_print_word_list (simple_command->words, " "); + + if (simple_command->redirects) + { + cprintf (" "); + print_redirection_list (simple_command->redirects); + } +} + +static void +print_heredocs (heredocs) + REDIRECT *heredocs; +{ + REDIRECT *hdtail; + + cprintf (" "); + for (hdtail = heredocs; hdtail; hdtail = hdtail->next) + { + print_redirection (hdtail); + cprintf ("\n"); + } + was_heredoc = 1; +} + +static void +print_heredoc_bodies (heredocs) + REDIRECT *heredocs; +{ + REDIRECT *hdtail; + + cprintf ("\n"); + for (hdtail = heredocs; hdtail; hdtail = hdtail->next) + { + print_heredoc_body (hdtail); + cprintf ("\n"); + } + was_heredoc = 1; +} + +/* Print heredocs that are attached to the command before the connector + represented by CSTRING. The parsing semantics require us to print the + here-doc delimiters, then the connector (CSTRING), then the here-doc + bodies. We print the here-doc delimiters in print_redirection_list + and print the connector and the bodies here. We don't print the connector + if it's a `;', but we use it to note not to print an extra space after the + last heredoc body and newline. */ +static void +print_deferred_heredocs (cstring) + const char *cstring; +{ + /* We now print the heredoc headers in print_redirection_list */ + if (cstring && cstring[0] && (cstring[0] != ';' || cstring[1])) + cprintf ("%s", cstring); + if (deferred_heredocs) + { + print_heredoc_bodies (deferred_heredocs); + if (cstring && cstring[0] && (cstring[0] != ';' || cstring[1])) + cprintf (" "); /* make sure there's at least one space */ + dispose_redirects (deferred_heredocs); + was_heredoc = 1; + } + deferred_heredocs = (REDIRECT *)NULL; +} + +static void +print_redirection_list (redirects) + REDIRECT *redirects; +{ + REDIRECT *heredocs, *hdtail, *newredir; + char *rw; + + heredocs = (REDIRECT *)NULL; + hdtail = heredocs; + + was_heredoc = 0; + while (redirects) + { + /* Defer printing the here document bodiess until we've printed the rest of the + redirections, but print the headers in the order they're given. */ + if (redirects->instruction == r_reading_until || redirects->instruction == r_deblank_reading_until) + { + newredir = copy_redirect (redirects); + newredir->next = (REDIRECT *)NULL; + + print_heredoc_header (newredir); + + if (heredocs) + { + hdtail->next = newredir; + hdtail = newredir; + } + else + hdtail = heredocs = newredir; + } + else if (redirects->instruction == r_duplicating_output_word && (redirects->flags & REDIR_VARASSIGN) == 0 && redirects->redirector.dest == 1) + { + /* Temporarily translate it as the execution code does. */ + rw = redirects->redirectee.filename->word; + if (rw && *rw != '-' && DIGIT (*rw) == 0 && EXPCHAR (*rw) == 0) + redirects->instruction = r_err_and_out; + print_redirection (redirects); + redirects->instruction = r_duplicating_output_word; + } + else + print_redirection (redirects); + + redirects = redirects->next; + if (redirects) + cprintf (" "); + } + + /* Now that we've printed all the other redirections (on one line), + print the here documents. If we're printing a connection, we wait until + we print the connector symbol, then we print the here document bodies */ + if (heredocs && printing_connection) + deferred_heredocs = heredocs; + else if (heredocs) + { + print_heredoc_bodies (heredocs); + dispose_redirects (heredocs); + } +} + +static void +print_heredoc_header (redirect) + REDIRECT *redirect; +{ + int kill_leading; + char *x; + + kill_leading = redirect->instruction == r_deblank_reading_until; + + /* Here doc header */ + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}", redirect->redirector.filename->word); + else if (redirect->redirector.dest != 0) + cprintf ("%d", redirect->redirector.dest); + + /* If the here document delimiter is quoted, single-quote it. */ + if (redirect->redirectee.filename->flags & W_QUOTED) + { + x = sh_single_quote (redirect->here_doc_eof); + cprintf ("<<%s%s", kill_leading ? "-" : "", x); + free (x); + } + else + cprintf ("<<%s%s", kill_leading ? "-" : "", redirect->here_doc_eof); +} + +static void +print_heredoc_body (redirect) + REDIRECT *redirect; +{ + /* Here doc body */ + cprintf ("%s%s", redirect->redirectee.filename->word, redirect->here_doc_eof); +} + +static void +print_redirection (redirect) + REDIRECT *redirect; +{ + int redirector, redir_fd; + WORD_DESC *redirectee, *redir_word; + + redirectee = redirect->redirectee.filename; + redir_fd = redirect->redirectee.dest; + + redir_word = redirect->redirector.filename; + redirector = redirect->redirector.dest; + + switch (redirect->instruction) + { + case r_input_direction: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}", redir_word->word); + else if (redirector != 0) + cprintf ("%d", redirector); + cprintf ("< %s", redirectee->word); + break; + + case r_output_direction: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}", redir_word->word); + else if (redirector != 1) + cprintf ("%d", redirector); + cprintf ("> %s", redirectee->word); + break; + + case r_inputa_direction: /* Redirection created by the shell. */ + cprintf ("&"); + break; + + case r_output_force: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}", redir_word->word); + else if (redirector != 1) + cprintf ("%d", redirector); + cprintf (">| %s", redirectee->word); + break; + + case r_appending_to: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}", redir_word->word); + else if (redirector != 1) + cprintf ("%d", redirector); + cprintf (">> %s", redirectee->word); + break; + + case r_input_output: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}", redir_word->word); + else if (redirector != 1) + cprintf ("%d", redirector); + cprintf ("<> %s", redirectee->word); + break; + + case r_deblank_reading_until: + case r_reading_until: + print_heredoc_header (redirect); + cprintf ("\n"); + print_heredoc_body (redirect); + break; + + case r_reading_string: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}", redir_word->word); + else if (redirector != 0) + cprintf ("%d", redirector); +#if 0 + /* Don't need to check whether or not to requote, since original quotes + are still intact. The only thing that has happened is that $'...' + has been replaced with 'expanded ...'. */ + if (ansic_shouldquote (redirect->redirectee.filename->word)) + { + char *x; + x = ansic_quote (redirect->redirectee.filename->word, 0, (int *)0); + cprintf ("<<< %s", x); + free (x); + } + else +#endif + cprintf ("<<< %s", redirect->redirectee.filename->word); + break; + + case r_duplicating_input: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}<&%d", redir_word->word, redir_fd); + else + cprintf ("%d<&%d", redirector, redir_fd); + break; + + case r_duplicating_output: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}>&%d", redir_word->word, redir_fd); + else + cprintf ("%d>&%d", redirector, redir_fd); + break; + + case r_duplicating_input_word: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}<&%s", redir_word->word, redirectee->word); + else + cprintf ("%d<&%s", redirector, redirectee->word); + break; + + case r_duplicating_output_word: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}>&%s", redir_word->word, redirectee->word); + else + cprintf ("%d>&%s", redirector, redirectee->word); + break; + + case r_move_input: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}<&%d-", redir_word->word, redir_fd); + else + cprintf ("%d<&%d-", redirector, redir_fd); + break; + + case r_move_output: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}>&%d-", redir_word->word, redir_fd); + else + cprintf ("%d>&%d-", redirector, redir_fd); + break; + + case r_move_input_word: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}<&%s-", redir_word->word, redirectee->word); + else + cprintf ("%d<&%s-", redirector, redirectee->word); + break; + + case r_move_output_word: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}>&%s-", redir_word->word, redirectee->word); + else + cprintf ("%d>&%s-", redirector, redirectee->word); + break; + + case r_close_this: + if (redirect->rflags & REDIR_VARASSIGN) + cprintf ("{%s}>&-", redir_word->word); + else + cprintf ("%d>&-", redirector); + break; + + case r_err_and_out: + cprintf ("&> %s", redirectee->word); + break; + + case r_append_err_and_out: + cprintf ("&>> %s", redirectee->word); + break; + } +} + +static void +reset_locals () +{ + inside_function_def = 0; + indentation = 0; + printing_connection = 0; + deferred_heredocs = 0; +} + +static void +print_function_def (func) + FUNCTION_DEF *func; +{ + COMMAND *cmdcopy; + REDIRECT *func_redirects; + + func_redirects = NULL; + /* When in posix mode, print functions as posix specifies them. */ + if (posixly_correct == 0) + cprintf ("function %s () \n", func->name->word); + else + cprintf ("%s () \n", func->name->word); + add_unwind_protect (reset_locals, 0); + + indent (indentation); + cprintf ("{ \n"); + + inside_function_def++; + indentation += indentation_amount; + + cmdcopy = copy_command (func->command); + if (cmdcopy->type == cm_group) + { + func_redirects = cmdcopy->redirects; + cmdcopy->redirects = (REDIRECT *)NULL; + } + make_command_string_internal (cmdcopy->type == cm_group + ? cmdcopy->value.Group->command + : cmdcopy); + PRINT_DEFERRED_HEREDOCS (""); + + remove_unwind_protect (); + indentation -= indentation_amount; + inside_function_def--; + + if (func_redirects) + { /* { */ + newline ("} "); + print_redirection_list (func_redirects); + cmdcopy->redirects = func_redirects; + } + else + newline ("}"); + + dispose_command (cmdcopy); +} + +/* Return the string representation of the named function. + NAME is the name of the function. + COMMAND is the function body. It should be a GROUP_COM. + flags&FUNC_MULTILINE is non-zero to pretty-print, or zero for all on one line. + flags&FUNC_EXTERNAL means convert from internal to external form + */ +char * +named_function_string (name, command, flags) + char *name; + COMMAND *command; + int flags; +{ + char *result; + int old_indent, old_amount; + COMMAND *cmdcopy; + REDIRECT *func_redirects; + + old_indent = indentation; + old_amount = indentation_amount; + command_string_index = was_heredoc = 0; + deferred_heredocs = 0; + + if (name && *name) + { + if (find_reserved_word (name) >= 0) + cprintf ("function "); + cprintf ("%s ", name); + } + + cprintf ("() "); + + if ((flags & FUNC_MULTILINE) == 0) + { + indentation = 1; + indentation_amount = 0; + } + else + { + cprintf ("\n"); + indentation += indentation_amount; + } + + inside_function_def++; + + cprintf ((flags & FUNC_MULTILINE) ? "{ \n" : "{ "); + + cmdcopy = copy_command (command); + /* Take any redirections specified in the function definition (which should + apply to the function as a whole) and save them for printing later. */ + func_redirects = (REDIRECT *)NULL; + if (cmdcopy->type == cm_group) + { + func_redirects = cmdcopy->redirects; + cmdcopy->redirects = (REDIRECT *)NULL; + } + make_command_string_internal (cmdcopy->type == cm_group + ? cmdcopy->value.Group->command + : cmdcopy); + PRINT_DEFERRED_HEREDOCS (""); + + indentation = old_indent; + indentation_amount = old_amount; + inside_function_def--; + + if (func_redirects) + { /* { */ + newline ("} "); + print_redirection_list (func_redirects); + cmdcopy->redirects = func_redirects; + } + else + newline ("}"); + + result = the_printed_command; + + if ((flags & FUNC_MULTILINE) == 0) + { +#if 0 + register int i; + for (i = 0; result[i]; i++) + if (result[i] == '\n') + { + strcpy (result + i, result + i + 1); + --i; + } +#else + if (result[2] == '\n') /* XXX -- experimental */ + memmove (result + 2, result + 3, strlen (result) - 2); +#endif + } + + dispose_command (cmdcopy); + + if (flags & FUNC_EXTERNAL) + result = remove_quoted_escapes (result); + + return (result); +} + +static void +newline (string) + char *string; +{ + cprintf ("\n"); + indent (indentation); + if (string && *string) + cprintf ("%s", string); +} + +static char *indentation_string; +static int indentation_size; + +static void +indent (amount) + int amount; +{ + register int i; + + RESIZE_MALLOCED_BUFFER (indentation_string, 0, amount, indentation_size, 16); + + for (i = 0; amount > 0; amount--) + indentation_string[i++] = ' '; + indentation_string[i] = '\0'; + cprintf ("%s", indentation_string); +} + +static void +semicolon () +{ + if (command_string_index > 0 && + (the_printed_command[command_string_index - 1] == '&' || + the_printed_command[command_string_index - 1] == '\n')) + return; + cprintf (";"); +} + +/* How to make the string. */ +static void +#if defined (PREFER_STDARG) +cprintf (const char *control, ...) +#else +cprintf (control, va_alist) + const char *control; + va_dcl +#endif +{ + register const char *s; + char char_arg[2], *argp, intbuf[INT_STRLEN_BOUND (unsigned int) + 1]; + int digit_arg, arg_len, c; + va_list args; + + SH_VA_START (args, control); + + arg_len = strlen (control); + the_printed_command_resize (arg_len + 1); + + char_arg[1] = '\0'; + s = control; + while (s && *s) + { + c = *s++; + argp = (char *)NULL; + if (c != '%' || !*s) + { + char_arg[0] = c; + argp = char_arg; + arg_len = 1; + } + else + { + c = *s++; + switch (c) + { + case '%': + char_arg[0] = c; + argp = char_arg; + arg_len = 1; + break; + + case 's': + argp = va_arg (args, char *); + arg_len = strlen (argp); + break; + + case 'd': + /* Represent an out-of-range file descriptor with an out-of-range + integer value. We can do this because the only use of `%d' in + the calls to cprintf is to output a file descriptor number for + a redirection. */ + digit_arg = va_arg (args, int); + if (digit_arg < 0) + { + sprintf (intbuf, "%u", (unsigned int)-1); + argp = intbuf; + } + else + argp = inttostr (digit_arg, intbuf, sizeof (intbuf)); + arg_len = strlen (argp); + break; + + case 'c': + char_arg[0] = va_arg (args, int); + argp = char_arg; + arg_len = 1; + break; + + default: + programming_error (_("cprintf: `%c': invalid format character"), c); + /*NOTREACHED*/ + } + } + + if (argp && arg_len) + { + the_printed_command_resize (arg_len + 1); + FASTCOPY (argp, the_printed_command + command_string_index, arg_len); + command_string_index += arg_len; + } + } + + va_end (args); + + the_printed_command[command_string_index] = '\0'; +} + +/* Ensure that there is enough space to stuff LENGTH characters into + THE_PRINTED_COMMAND. */ +static void +the_printed_command_resize (length) + int length; +{ + if (the_printed_command == 0) + { + the_printed_command_size = (length + PRINTED_COMMAND_INITIAL_SIZE - 1) & ~(PRINTED_COMMAND_INITIAL_SIZE - 1); + the_printed_command = (char *)xmalloc (the_printed_command_size); + command_string_index = 0; + } + else if ((command_string_index + length) >= the_printed_command_size) + { + int new; + new = command_string_index + length + 1; + + /* Round up to the next multiple of PRINTED_COMMAND_GROW_SIZE. */ + new = (new + PRINTED_COMMAND_GROW_SIZE - 1) & ~(PRINTED_COMMAND_GROW_SIZE - 1); + the_printed_command_size = new; + + the_printed_command = (char *)xrealloc (the_printed_command, the_printed_command_size); + } +} + +#if defined (HAVE_VPRINTF) +/* ``If vprintf is available, you may assume that vfprintf and vsprintf are + also available.'' */ + +static void +#if defined (PREFER_STDARG) +xprintf (const char *format, ...) +#else +xprintf (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + + SH_VA_START (args, format); + + vfprintf (stdout, format, args); + va_end (args); +} + +#else + +static void +xprintf (format, arg1, arg2, arg3, arg4, arg5) + const char *format; +{ + printf (format, arg1, arg2, arg3, arg4, arg5); +} + +#endif /* !HAVE_VPRINTF */ diff --git a/bash-5.1/quit.h b/bash-5.1/quit.h new file mode 100644 index 0000000..db8a776 --- /dev/null +++ b/bash-5.1/quit.h @@ -0,0 +1,81 @@ +/* quit.h -- How to handle SIGINT gracefully. */ + +/* Copyright (C) 1993-2013 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_QUIT_H_) +#define _QUIT_H_ + +#include "sig.h" /* for sig_atomic_t */ + +/* Non-zero means SIGINT has already occurred. */ +extern volatile sig_atomic_t interrupt_state; +extern volatile sig_atomic_t terminating_signal; + +/* Macro to call a great deal. SIGINT just sets the interrupt_state variable. + When it is safe, put QUIT in the code, and the "interrupt" will take + place. The same scheme is used for terminating signals (e.g., SIGHUP) + and the terminating_signal variable. That calls a function which will + end up exiting the shell. */ +#define QUIT \ + do { \ + if (terminating_signal) termsig_handler (terminating_signal); \ + if (interrupt_state) throw_to_top_level (); \ + } while (0) + +#define CHECK_ALRM \ + do { \ + if (sigalrm_seen) \ + sh_longjmp (alrmbuf, 1); \ + } while (0) + +#define SETINTERRUPT interrupt_state = 1 +#define CLRINTERRUPT interrupt_state = 0 + +#define ADDINTERRUPT interrupt_state++ +#define DELINTERRUPT interrupt_state-- + +#define ISINTERRUPT interrupt_state != 0 + +/* The same sort of thing, this time just for signals that would ordinarily + cause the shell to terminate. */ + +#define CHECK_TERMSIG \ + do { \ + if (terminating_signal) termsig_handler (terminating_signal); \ + } while (0) + +#define LASTSIG() \ + (terminating_signal ? terminating_signal : (interrupt_state ? SIGINT : 0)) + +#define CHECK_WAIT_INTR \ + do { \ + if (wait_intr_flag && wait_signal_received && this_shell_builtin && (this_shell_builtin == wait_builtin)) \ + sh_longjmp (wait_intr_buf, 1); \ + } while (0) + +#define RESET_SIGTERM \ + do { \ + sigterm_received = 0; \ + } while (0) + +#define CHECK_SIGTERM \ + do { \ + if (sigterm_received) termsig_handler (SIGTERM); \ + } while (0) +#endif /* _QUIT_H_ */ diff --git a/bash-5.1/redir.c b/bash-5.1/redir.c new file mode 100644 index 0000000..fa92b4d --- /dev/null +++ b/bash-5.1/redir.c @@ -0,0 +1,1505 @@ +/* redir.c -- Functions to perform input and output redirection. */ + +/* Copyright (C) 1997-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) + #pragma alloca +#endif /* _AIX && RISC6000 && !__GNUC__ */ + +#include +#include "bashtypes.h" +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif +#include "filecntl.h" +#include "posixstat.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#if !defined (errno) +extern int errno; +#endif + +#include "bashansi.h" +#include "bashintl.h" +#include "memalloc.h" + +#define NEED_FPURGE_DECL + +#include "shell.h" +#include "flags.h" +#include "execute_cmd.h" +#include "redir.h" +#include "trap.h" + +#if defined (BUFFERED_INPUT) +# include "input.h" +#endif + +#include "builtins/pipesize.h" + +/* FreeBSD 13 can reliably handle atomic writes at this capacity without + hanging. */ +#if __FreeBSD__ && !defined (HEREDOC_PIPESIZE) +# define HEREDOC_PIPESIZE 4096 +#endif + +/* Normally set by a build process command that computes pipe capacity */ +#ifndef PIPESIZE +# ifdef PIPE_BUF +# define PIPESIZE PIPE_BUF +# else +# define PIPESIZE 4096 +# endif +#endif + +#ifndef HEREDOC_PIPESIZE +# define HEREDOC_PIPESIZE PIPESIZE +#endif + +#if defined (HEREDOC_PIPEMAX) +# if HEREDOC_PIPESIZE > HEREDOC_PIPEMAX +# define HEREDOC_PIPESIZE HEREDOC_PIPEMAX +# endif +#endif + +#define SHELL_FD_BASE 10 + +int expanding_redir; + +extern REDIRECT *redirection_undo_list; +extern REDIRECT *exec_redirection_undo_list; + +/* Static functions defined and used in this file. */ +static void add_exec_redirect PARAMS((REDIRECT *)); +static int add_undo_redirect PARAMS((int, enum r_instruction, int)); +static int add_undo_close_redirect PARAMS((int)); +static int expandable_redirection_filename PARAMS((REDIRECT *)); +static int stdin_redirection PARAMS((enum r_instruction, int)); +static int undoablefd PARAMS((int)); +static int do_redirection_internal PARAMS((REDIRECT *, int, char **)); + +static char *heredoc_expand PARAMS((WORD_DESC *, enum r_instruction, size_t *)); +static int heredoc_write PARAMS((int, char *, size_t)); +static int here_document_to_fd PARAMS((WORD_DESC *, enum r_instruction)); + +static int redir_special_open PARAMS((int, char *, int, int, enum r_instruction)); +static int noclobber_open PARAMS((char *, int, int, enum r_instruction)); +static int redir_open PARAMS((char *, int, int, enum r_instruction)); + +static int redir_varassign PARAMS((REDIRECT *, int)); +static int redir_varvalue PARAMS((REDIRECT *)); + +/* Spare redirector used when translating [N]>&WORD[-] or [N]<&WORD[-] to + a new redirection and when creating the redirection undo list. */ +static REDIRECTEE rd; + +/* Set to errno when a here document cannot be created for some reason. + Used to print a reasonable error message. */ +static int heredoc_errno; + +#define REDIRECTION_ERROR(r, e, fd) \ +do { \ + if ((r) < 0) \ + { \ + if (fd >= 0) \ + close (fd); \ + set_exit_status (EXECUTION_FAILURE);\ + return ((e) == 0 ? EINVAL : (e));\ + } \ +} while (0) + +void +redirection_error (temp, error, fn) + REDIRECT *temp; + int error; + char *fn; /* already-expanded filename */ +{ + char *filename, *allocname; + int oflags; + + allocname = 0; + if ((temp->rflags & REDIR_VARASSIGN) && error < 0) + filename = allocname = savestring (temp->redirector.filename->word); + else if ((temp->rflags & REDIR_VARASSIGN) == 0 && temp->redirector.dest < 0) + /* This can happen when read_token_word encounters overflow, like in + exec 4294967297>x */ + filename = _("file descriptor out of range"); +#ifdef EBADF + /* This error can never involve NOCLOBBER */ + else if (error != NOCLOBBER_REDIRECT && temp->redirector.dest >= 0 && error == EBADF) + { + /* If we're dealing with two file descriptors, we have to guess about + which one is invalid; in the cases of r_{duplicating,move}_input and + r_{duplicating,move}_output we're here because dup2() failed. */ + switch (temp->instruction) + { + case r_duplicating_input: + case r_duplicating_output: + case r_move_input: + case r_move_output: + filename = allocname = itos (temp->redirectee.dest); + break; + case r_duplicating_input_word: + if (temp->redirector.dest == 0) /* Guess */ + filename = temp->redirectee.filename->word; /* XXX */ + else + filename = allocname = itos (temp->redirector.dest); + break; + case r_duplicating_output_word: + if (temp->redirector.dest == 1) /* Guess */ + filename = temp->redirectee.filename->word; /* XXX */ + else + filename = allocname = itos (temp->redirector.dest); + break; + default: + filename = allocname = itos (temp->redirector.dest); + break; + } + } +#endif + else if (fn) + filename = fn; + else if (expandable_redirection_filename (temp)) + { + oflags = temp->redirectee.filename->flags; + if (posixly_correct && interactive_shell == 0) + temp->redirectee.filename->flags |= W_NOGLOB; + temp->redirectee.filename->flags |= W_NOCOMSUB; + filename = allocname = redirection_expand (temp->redirectee.filename); + temp->redirectee.filename->flags = oflags; + if (filename == 0) + filename = temp->redirectee.filename->word; + } + else if (temp->redirectee.dest < 0) + filename = _("file descriptor out of range"); + else + filename = allocname = itos (temp->redirectee.dest); + + switch (error) + { + case AMBIGUOUS_REDIRECT: + internal_error (_("%s: ambiguous redirect"), filename); + break; + + case NOCLOBBER_REDIRECT: + internal_error (_("%s: cannot overwrite existing file"), filename); + break; + +#if defined (RESTRICTED_SHELL) + case RESTRICTED_REDIRECT: + internal_error (_("%s: restricted: cannot redirect output"), filename); + break; +#endif /* RESTRICTED_SHELL */ + + case HEREDOC_REDIRECT: + internal_error (_("cannot create temp file for here-document: %s"), strerror (heredoc_errno)); + break; + + case BADVAR_REDIRECT: + internal_error (_("%s: cannot assign fd to variable"), filename); + break; + + default: + internal_error ("%s: %s", filename, strerror (error)); + break; + } + + FREE (allocname); +} + +/* Perform the redirections on LIST. If flags & RX_ACTIVE, then actually + make input and output file descriptors, otherwise just do whatever is + necessary for side effecting. flags & RX_UNDOABLE says to remember + how to undo the redirections later, if non-zero. If flags & RX_CLEXEC + is non-zero, file descriptors opened in do_redirection () have their + close-on-exec flag set. */ +int +do_redirections (list, flags) + REDIRECT *list; + int flags; +{ + int error; + REDIRECT *temp; + char *fn; + + if (flags & RX_UNDOABLE) + { + if (redirection_undo_list) + { + dispose_redirects (redirection_undo_list); + redirection_undo_list = (REDIRECT *)NULL; + } + if (exec_redirection_undo_list) + dispose_exec_redirects (); + } + + for (temp = list; temp; temp = temp->next) + { + fn = 0; + error = do_redirection_internal (temp, flags, &fn); + if (error) + { + redirection_error (temp, error, fn); + FREE (fn); + return (error); + } + FREE (fn); + } + 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; +{ + 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_append_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: + return 1; + + default: + return 0; + } +} + +/* 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 *tlist1, *tlist2; + WORD_DESC *w; + int old; + + w = copy_word (word); + if (posixly_correct) + w->flags |= W_NOSPLIT; + + tlist1 = make_word_list (w, (WORD_LIST *)NULL); + expanding_redir = 1; + /* Now that we've changed the variable search order to ignore the temp + environment, see if we need to change the cached IFS values. */ + sv_ifs ("IFS"); + tlist2 = expand_words_no_vars (tlist1); + expanding_redir = 0; + /* Now we need to change the variable search order back to include the temp + environment. We force the temp environment search by forcing + executing_builtin to 1. This is what makes `read' get the right values + for the IFS-related cached variables, for example. */ + old = executing_builtin; + executing_builtin = 1; + sv_ifs ("IFS"); + executing_builtin = old; + dispose_words (tlist1); + + if (tlist2 == 0 || 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); /* XXX savestring (tlist2->word->word)? */ + dispose_words (tlist2); + return (result); +} + +/* Expand a here-document or here-string (determined by RI) contained in + REDIRECTEE and return the expanded document. If LENP is non-zero, put + the length of the returned string into *LENP. + + This captures everything about expanding here-documents and here-strings: + the returned document should be written directly to whatever file + descriptor is specified. In particular, it adds a newline to the end of + a here-string to preserve previous semantics. */ +static char * +heredoc_expand (redirectee, ri, lenp) + WORD_DESC *redirectee; + enum r_instruction ri; + size_t *lenp; +{ + char *document; + size_t dlen; + int old; + + if (redirectee->word == 0 || redirectee->word[0] == '\0') + { + if (lenp) + *lenp = 0; + return (redirectee->word); + } + + /* Quoted here documents are not expanded */ + if (ri != r_reading_string && (redirectee->flags & W_QUOTED)) + { + if (lenp) + *lenp = STRLEN (redirectee->word); + return (redirectee->word); + } + + expanding_redir = 1; + /* Now that we've changed the variable search order to ignore the temp + environment, see if we need to change the cached IFS values. */ + sv_ifs ("IFS"); + document = (ri == r_reading_string) ? expand_assignment_string_to_string (redirectee->word, 0) + : expand_string_to_string (redirectee->word, Q_HERE_DOCUMENT); + expanding_redir = 0; + /* Now we need to change the variable search order back to include the temp + environment. We force the temp environment search by forcing + executing_builtin to 1. This is what makes `read' get the right values + for the IFS-related cached variables, for example. */ + old = executing_builtin; + executing_builtin = 1; + sv_ifs ("IFS"); + executing_builtin = old; + + dlen = STRLEN (document); + /* XXX - Add trailing newline to here-string */ + if (ri == r_reading_string) + { + document = xrealloc (document, dlen + 2); + document[dlen++] = '\n'; + document[dlen] = '\0'; + } + if (lenp) + *lenp = dlen; + + return document; +} + +/* Write HEREDOC (of length HDLEN) to FD, returning 0 on success and ERRNO on + error. Don't handle interrupts. */ +static int +heredoc_write (fd, heredoc, herelen) + int fd; + char *heredoc; + size_t herelen; +{ + ssize_t nw; + int e; + + errno = 0; + nw = write (fd, heredoc, herelen); + e = errno; + if (nw != herelen) + { + if (e == 0) + e = ENOSPC; + return e; + } + return 0; +} + +/* Create a temporary file or pipe holding the text of the here document + pointed to by REDIRECTEE, and return a file descriptor open for reading + to it. Return -1 on any error, and make sure errno is set appropriately. */ +static int +here_document_to_fd (redirectee, ri) + WORD_DESC *redirectee; + enum r_instruction ri; +{ + char *filename; + int r, fd, fd2, herepipe[2]; + char *document; + size_t document_len; +#if HEREDOC_PARANOID + struct stat st1, st2; +#endif + + /* Expand the here-document/here-string first and then decide what to do. */ + document = heredoc_expand (redirectee, ri, &document_len); + + /* If we have a zero-length document, don't mess with a temp file */ + if (document_len == 0) + { + fd = open ("/dev/null", O_RDONLY); + r = errno; + if (document != redirectee->word) + FREE (document); + errno = r; + return fd; + } + +#if defined (HEREDOC_PIPESIZE) + /* Try to use a pipe internal to this process if the document is shorter + than the system's pipe capacity (computed at build time). We want to + write the entire document without write blocking. */ + if (document_len <= HEREDOC_PIPESIZE) + { + if (pipe (herepipe) < 0) + { + r = errno; + if (document != redirectee->word) + free (document); + errno = r; + return (-1); + } + +#if defined (F_GETPIPE_SZ) + if (fcntl (herepipe[1], F_GETPIPE_SZ, 0) < document_len) + goto use_tempfile; +#endif + + r = heredoc_write (herepipe[1], document, document_len); + if (document != redirectee->word) + free (document); + close (herepipe[1]); + if (r) /* write error */ + { + close (herepipe[0]); + errno = r; + return (-1); + } + return (herepipe[0]); + } +#endif + +use_tempfile: + + fd = sh_mktmpfd ("sh-thd", MT_USERANDOM|MT_USETMPDIR, &filename); + + /* If we failed for some reason other than the file existing, abort */ + if (fd < 0) + { + r = errno; + FREE (filename); + if (document != redirectee->word) + FREE (document); + errno = r; + return (fd); + } + + fchmod (fd, S_IRUSR | S_IWUSR); + SET_CLOSE_ON_EXEC (fd); + + errno = r = 0; /* XXX */ + r = heredoc_write (fd, document, document_len); + if (document != redirectee->word) + FREE (document); + + if (r) + { + close (fd); + unlink (filename); + free (filename); + errno = r; + return (-1); + } + + /* In an attempt to avoid races, we close the first fd only after opening + the second. */ + /* Make the document really temporary. Also make it the input. */ + fd2 = open (filename, O_RDONLY|O_BINARY, 0600); + + if (fd2 < 0) + { + r = errno; + unlink (filename); + free (filename); + close (fd); + errno = r; + return -1; + } + +#if HEREDOC_PARANOID + /* We can use same_file here to check whether or not fd and fd2 refer to + the same file, but we don't do that unless HEREDOC_PARANOID is defined. */ + if (fstat (fd, &st1) < 0 || S_ISREG (st1.st_mode) == 0 || + fstat (fd2, &st2) < 0 || S_ISREG (st2.st_mode) == 0 || + same_file (filename, filename, &st1, &st2) == 0) + { + unlink (filename); + free (filename); + close (fd); + close (fd2); + errno = EEXIST; + return -1; + } +#endif + + close (fd); + if (unlink (filename) < 0) + { + r = errno; + close (fd2); + free (filename); + errno = r; + return (-1); + } + + free (filename); + + fchmod (fd2, S_IRUSR); + return (fd2); +} + +#define RF_DEVFD 1 +#define RF_DEVSTDERR 2 +#define RF_DEVSTDIN 3 +#define RF_DEVSTDOUT 4 +#define RF_DEVTCP 5 +#define RF_DEVUDP 6 + +/* A list of pattern/value pairs for filenames that the redirection + code handles specially. */ +static STRING_INT_ALIST _redir_special_filenames[] = { +#if !defined (HAVE_DEV_FD) + { "/dev/fd/[0-9]*", RF_DEVFD }, +#endif +#if !defined (HAVE_DEV_STDIN) + { "/dev/stderr", RF_DEVSTDERR }, + { "/dev/stdin", RF_DEVSTDIN }, + { "/dev/stdout", RF_DEVSTDOUT }, +#endif +#if defined (NETWORK_REDIRECTIONS) + { "/dev/tcp/*/*", RF_DEVTCP }, + { "/dev/udp/*/*", RF_DEVUDP }, +#endif + { (char *)NULL, -1 } +}; + +static int +redir_special_open (spec, filename, flags, mode, ri) + int spec; + char *filename; + int flags, mode; + enum r_instruction ri; +{ + int fd; +#if !defined (HAVE_DEV_FD) + intmax_t lfd; +#endif + + fd = -1; + switch (spec) + { +#if !defined (HAVE_DEV_FD) + case RF_DEVFD: + if (all_digits (filename+8) && legal_number (filename+8, &lfd) && lfd == (int)lfd) + { + fd = lfd; + fd = fcntl (fd, F_DUPFD, SHELL_FD_BASE); + } + else + fd = AMBIGUOUS_REDIRECT; + break; +#endif + +#if !defined (HAVE_DEV_STDIN) + case RF_DEVSTDIN: + fd = fcntl (0, F_DUPFD, SHELL_FD_BASE); + break; + case RF_DEVSTDOUT: + fd = fcntl (1, F_DUPFD, SHELL_FD_BASE); + break; + case RF_DEVSTDERR: + fd = fcntl (2, F_DUPFD, SHELL_FD_BASE); + break; +#endif + +#if defined (NETWORK_REDIRECTIONS) + case RF_DEVTCP: + case RF_DEVUDP: +#if defined (RESTRICTED_SHELL) + if (restricted) + return (RESTRICTED_REDIRECT); +#endif +#if defined (HAVE_NETWORK) + fd = netopen (filename); +#else + internal_warning (_("/dev/(tcp|udp)/host/port not supported without networking")); + fd = open (filename, flags, mode); +#endif + break; +#endif /* NETWORK_REDIRECTIONS */ + } + + return fd; +} + +/* Open FILENAME with FLAGS in noclobber mode, hopefully avoiding most + race conditions and avoiding the problem where the file is replaced + between the stat(2) and open(2). */ +static int +noclobber_open (filename, flags, mode, ri) + char *filename; + int flags, mode; + enum r_instruction ri; +{ + int r, fd; + struct stat finfo, finfo2; + + /* If the file exists and is a regular file, return an error + immediately. */ + r = stat (filename, &finfo); + if (r == 0 && (S_ISREG (finfo.st_mode))) + return (NOCLOBBER_REDIRECT); + + /* If the file was not present (r != 0), make sure we open it + exclusively so that if it is created before we open it, our open + will fail. Make sure that we do not truncate an existing file. + Note that we don't turn on O_EXCL unless the stat failed -- if + the file was not a regular file, we leave O_EXCL off. */ + flags &= ~O_TRUNC; + if (r != 0) + { + fd = open (filename, flags|O_EXCL, mode); + return ((fd < 0 && errno == EEXIST) ? NOCLOBBER_REDIRECT : fd); + } + fd = open (filename, flags, mode); + + /* If the open failed, return the file descriptor right away. */ + if (fd < 0) + return (errno == EEXIST ? NOCLOBBER_REDIRECT : fd); + + /* OK, the open succeeded, but the file may have been changed from a + non-regular file to a regular file between the stat and the open. + We are assuming that the O_EXCL open handles the case where FILENAME + did not exist and is symlinked to an existing file between the stat + and open. */ + + /* If we can open it and fstat the file descriptor, and neither check + revealed that it was a regular file, and the file has not been replaced, + return the file descriptor. */ + if ((fstat (fd, &finfo2) == 0) && (S_ISREG (finfo2.st_mode) == 0) && + r == 0 && (S_ISREG (finfo.st_mode) == 0) && + same_file (filename, filename, &finfo, &finfo2)) + return fd; + + /* The file has been replaced. badness. */ + close (fd); + errno = EEXIST; + return (NOCLOBBER_REDIRECT); +} + +static int +redir_open (filename, flags, mode, ri) + char *filename; + int flags, mode; + enum r_instruction ri; +{ + int fd, r, e; + + r = find_string_in_alist (filename, _redir_special_filenames, 1); + if (r >= 0) + return (redir_special_open (r, filename, flags, mode, ri)); + + /* If we are in noclobber mode, you are not allowed to overwrite + existing files. Check before opening. */ + if (noclobber && CLOBBERING_REDIRECT (ri)) + { + fd = noclobber_open (filename, flags, mode, ri); + if (fd == NOCLOBBER_REDIRECT) + return (NOCLOBBER_REDIRECT); + } + else + { + do + { + fd = open (filename, flags, mode); + e = errno; + if (fd < 0 && e == EINTR) + { + QUIT; + run_pending_traps (); + } + errno = e; + } + while (fd < 0 && errno == EINTR); + +#if defined (AFS) + if ((fd < 0) && (errno == EACCES)) + { + fd = open (filename, flags & ~O_CREAT, mode); + errno = EACCES; /* restore errno */ + } +#endif /* AFS */ + } + + return fd; +} + +static int +undoablefd (fd) + int fd; +{ + int clexec; + + clexec = fcntl (fd, F_GETFD, 0); + if (clexec == -1 || (fd >= SHELL_FD_BASE && clexec == 1)) + return 0; + return 1; +} + +/* Do the specific redirection requested. Returns errno or one of the + special redirection errors (*_REDIRECT) in case of error, 0 on success. + If flags & RX_ACTIVE is zero, then just do whatever is necessary to + produce the appropriate side effects. flags & RX_UNDOABLE, if non-zero, + says to remember how to undo each redirection. If flags & RX_CLEXEC is + non-zero, then we set all file descriptors > 2 that we open to be + close-on-exec. FNP, if non-null is a pointer to a location where the + expanded filename is stored. The caller will free it. */ +static int +do_redirection_internal (redirect, flags, fnp) + REDIRECT *redirect; + int flags; + char **fnp; +{ + WORD_DESC *redirectee; + int redir_fd, fd, redirector, r, oflags; + intmax_t lfd; + char *redirectee_word; + enum r_instruction ri; + REDIRECT *new_redirect; + REDIRECTEE sd; + + redirectee = redirect->redirectee.filename; + redir_fd = redirect->redirectee.dest; + redirector = redirect->redirector.dest; + ri = redirect->instruction; + + if (redirect->flags & RX_INTERNAL) + flags |= RX_INTERNAL; + + if (TRANSLATE_REDIRECT (ri)) + { + /* We have [N]>&WORD[-] or [N]<&WORD[-] (or {V}>&WORD[-] or {V}<&WORD-). + and WORD, then translate the redirection into a new one and + continue. */ + redirectee_word = redirection_expand (redirectee); + + /* XXX - what to do with [N]<&$w- where w is unset or null? ksh93 + closes N. */ + if (redirectee_word == 0) + return (AMBIGUOUS_REDIRECT); + else if (redirectee_word[0] == '-' && redirectee_word[1] == '\0') + { + sd = redirect->redirector; + rd.dest = 0; + new_redirect = make_redirection (sd, r_close_this, rd, 0); + } + else if (all_digits (redirectee_word)) + { + sd = redirect->redirector; + if (legal_number (redirectee_word, &lfd) && (int)lfd == lfd) + rd.dest = lfd; + else + rd.dest = -1; /* XXX */ + switch (ri) + { + case r_duplicating_input_word: + new_redirect = make_redirection (sd, r_duplicating_input, rd, 0); + break; + case r_duplicating_output_word: + new_redirect = make_redirection (sd, r_duplicating_output, rd, 0); + break; + case r_move_input_word: + new_redirect = make_redirection (sd, r_move_input, rd, 0); + break; + case r_move_output_word: + new_redirect = make_redirection (sd, r_move_output, rd, 0); + break; + default: + break; /* shut up gcc */ + } + } + else if (ri == r_duplicating_output_word && (redirect->rflags & REDIR_VARASSIGN) == 0 && redirector == 1) + { + sd = redirect->redirector; + rd.filename = make_bare_word (redirectee_word); + new_redirect = make_redirection (sd, r_err_and_out, rd, 0); + } + 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)); + xbcopy ((char *)new_redirect->redirectee.filename, + (char *)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; + + redir_fd = new_redirect->redirectee.dest; + redirector = new_redirect->redirector.dest; + 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_append_err_and_out: /* command &>> filename */ + case r_input_output: + case r_output_force: + if (posixly_correct && interactive_shell == 0) + { + oflags = redirectee->flags; + redirectee->flags |= W_NOGLOB; + } + redirectee_word = redirection_expand (redirectee); + if (posixly_correct && interactive_shell == 0) + redirectee->flags = oflags; + + if (redirectee_word == 0) + return (AMBIGUOUS_REDIRECT); + +#if defined (RESTRICTED_SHELL) + if (restricted && (WRITE_REDIRECT (ri))) + { + free (redirectee_word); + return (RESTRICTED_REDIRECT); + } +#endif /* RESTRICTED_SHELL */ + + fd = redir_open (redirectee_word, redirect->flags, 0666, ri); + if (fnp) + *fnp = redirectee_word; + else + free (redirectee_word); + + if (fd == NOCLOBBER_REDIRECT || fd == RESTRICTED_REDIRECT) + return (fd); + + if (fd < 0) + return (errno); + + if (flags & RX_ACTIVE) + { + if (redirect->rflags & REDIR_VARASSIGN) + { + redirector = fcntl (fd, F_DUPFD, SHELL_FD_BASE); /* XXX try this for now */ + r = errno; + if (redirector < 0) + sys_error (_("redirection error: cannot duplicate fd")); + REDIRECTION_ERROR (redirector, r, fd); + } + + if ((flags & RX_UNDOABLE) && (redirect->rflags & REDIR_VARASSIGN) == 0) + { + /* Only setup to undo it if the thing to undo is active. */ + if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) + r = add_undo_redirect (redirector, ri, -1); + else + r = add_undo_close_redirect (redirector); + REDIRECTION_ERROR (r, errno, fd); + } + +#if defined (BUFFERED_INPUT) + /* inhibit call to sync_buffered_stream() for async processes */ + if (redirector != 0 || (subshell_environment & SUBSHELL_ASYNC) == 0) + check_bash_input (redirector); +#endif + + /* Make sure there is no pending output before we change the state + of the underlying file descriptor, since the builtins use stdio + for output. */ + if (redirector == 1 && fileno (stdout) == redirector) + { + fflush (stdout); + fpurge (stdout); + } + else if (redirector == 2 && fileno (stderr) == redirector) + { + fflush (stderr); + fpurge (stderr); + } + + if (redirect->rflags & REDIR_VARASSIGN) + { + if ((r = redir_varassign (redirect, redirector)) < 0) + { + close (redirector); + close (fd); + return (r); /* XXX */ + } + } + else if ((fd != redirector) && (dup2 (fd, redirector) < 0)) + { + close (fd); /* dup2 failed? must be fd limit issue */ + return (errno); + } + +#if defined (BUFFERED_INPUT) + /* Do not change the buffered stream for an implicit redirection + of /dev/null to fd 0 for asynchronous commands without job + control (r_inputa_direction). */ + if (ri == r_input_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 ((flags & RX_CLEXEC) && (redirector > 2)) + SET_CLOSE_ON_EXEC (redirector); + } + + if (fd != redirector) + { +#if defined (BUFFERED_INPUT) + if (INPUT_REDIRECT (ri)) + 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. XXX - handle {var} here? */ + if (ri == r_err_and_out || ri == r_append_err_and_out) + { + if (flags & RX_ACTIVE) + { + if (flags & RX_UNDOABLE) + add_undo_redirect (2, ri, -1); + if (dup2 (1, 2) < 0) + return (errno); + } + } + break; + + case r_reading_until: + case r_deblank_reading_until: + case r_reading_string: + /* REDIRECTEE is a pointer to a WORD_DESC containing the text of + the new input. Place it in a temporary file. */ + if (redirectee) + { + fd = here_document_to_fd (redirectee, ri); + + if (fd < 0) + { + heredoc_errno = errno; + return (HEREDOC_REDIRECT); + } + + if (redirect->rflags & REDIR_VARASSIGN) + { + redirector = fcntl (fd, F_DUPFD, SHELL_FD_BASE); /* XXX try this for now */ + r = errno; + if (redirector < 0) + sys_error (_("redirection error: cannot duplicate fd")); + REDIRECTION_ERROR (redirector, r, fd); + } + + if (flags & RX_ACTIVE) + { + if ((flags & RX_UNDOABLE) && (redirect->rflags & REDIR_VARASSIGN) == 0) + { + /* Only setup to undo it if the thing to undo is active. */ + if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1)) + r = add_undo_redirect (redirector, ri, -1); + else + r = add_undo_close_redirect (redirector); + REDIRECTION_ERROR (r, errno, fd); + } + +#if defined (BUFFERED_INPUT) + check_bash_input (redirector); +#endif + if (redirect->rflags & REDIR_VARASSIGN) + { + if ((r = redir_varassign (redirect, redirector)) < 0) + { + close (redirector); + close (fd); + return (r); /* XXX */ + } + } + else if (fd != redirector && dup2 (fd, redirector) < 0) + { + r = errno; + close (fd); + return (r); + } + +#if defined (BUFFERED_INPUT) + duplicate_buffered_stream (fd, redirector); +#endif + + if ((flags & RX_CLEXEC) && (redirector > 2)) + SET_CLOSE_ON_EXEC (redirector); + } + + if (fd != redirector) +#if defined (BUFFERED_INPUT) + close_buffered_fd (fd); +#else + close (fd); +#endif + } + break; + + case r_duplicating_input: + case r_duplicating_output: + case r_move_input: + case r_move_output: + if ((flags & RX_ACTIVE) && (redirect->rflags & REDIR_VARASSIGN)) + { + redirector = fcntl (redir_fd, F_DUPFD, SHELL_FD_BASE); /* XXX try this for now */ + r = errno; + if (redirector < 0) + sys_error (_("redirection error: cannot duplicate fd")); + REDIRECTION_ERROR (redirector, r, -1); + } + + if ((flags & RX_ACTIVE) && (redir_fd != redirector)) + { + if ((flags & RX_UNDOABLE) && (redirect->rflags & REDIR_VARASSIGN) == 0) + { + /* Only setup to undo it if the thing to undo is active. */ + if (fcntl (redirector, F_GETFD, 0) != -1) + r = add_undo_redirect (redirector, ri, redir_fd); + else + r = add_undo_close_redirect (redirector); + REDIRECTION_ERROR (r, errno, -1); + } + if ((flags & RX_UNDOABLE) && (ri == r_move_input || ri == r_move_output)) + { + /* r_move_input and r_move_output add an additional close() + that needs to be undone */ + if (fcntl (redirector, F_GETFD, 0) != -1) + { + r = add_undo_redirect (redir_fd, r_close_this, -1); + REDIRECTION_ERROR (r, errno, -1); + } + } +#if defined (BUFFERED_INPUT) + /* inhibit call to sync_buffered_stream() for async processes */ + if (redirector != 0 || (subshell_environment & SUBSHELL_ASYNC) == 0) + check_bash_input (redirector); +#endif + if (redirect->rflags & REDIR_VARASSIGN) + { + if ((r = redir_varassign (redirect, redirector)) < 0) + { + close (redirector); + return (r); /* XXX */ + } + } + /* This is correct. 2>&1 means dup2 (1, 2); */ + else if (dup2 (redir_fd, redirector) < 0) + return (errno); + +#if defined (BUFFERED_INPUT) + if (ri == r_duplicating_input || ri == r_move_input) + duplicate_buffered_stream (redir_fd, 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<&-'. It should always + be safe to set fds > 2 to close-on-exec if they're being used to + save file descriptors < 2, since we don't need to preserve the + state of the close-on-exec flag for those fds -- they should + always be open. */ + /* if ((already_set || set_unconditionally) && (ok_to_set)) + set_it () */ +#if 0 + if (((fcntl (redir_fd, F_GETFD, 0) == 1) || redir_fd < 2 || (flags & RX_CLEXEC)) && + (redirector > 2)) +#else + if (((fcntl (redir_fd, F_GETFD, 0) == 1) || (redir_fd < 2 && (flags & RX_INTERNAL)) || (flags & RX_CLEXEC)) && + (redirector > 2)) +#endif + SET_CLOSE_ON_EXEC (redirector); + + /* When undoing saving of non-standard file descriptors (>=3) using + file descriptors >= SHELL_FD_BASE, we set the saving fd to be + close-on-exec and use a flag to decide how to set close-on-exec + when the fd is restored. */ + if ((redirect->flags & RX_INTERNAL) && (redirect->flags & RX_SAVCLEXEC) && redirector >= 3 && (redir_fd >= SHELL_FD_BASE || (redirect->flags & RX_SAVEFD))) + SET_OPEN_ON_EXEC (redirector); + + /* dup-and-close redirection */ + if (ri == r_move_input || ri == r_move_output) + { + xtrace_fdchk (redir_fd); + + close (redir_fd); +#if defined (COPROCESS_SUPPORT) + coproc_fdchk (redir_fd); /* XXX - loses coproc fds */ +#endif + } + } + break; + + case r_close_this: + if (flags & RX_ACTIVE) + { + if (redirect->rflags & REDIR_VARASSIGN) + { + redirector = redir_varvalue (redirect); + if (redirector < 0) + return AMBIGUOUS_REDIRECT; + } + + r = 0; + /* XXX - only if REDIR_VARASSIGN not set? */ + if (flags & RX_UNDOABLE) + { + if (fcntl (redirector, F_GETFD, 0) != -1) + r = add_undo_redirect (redirector, ri, -1); + else + r = add_undo_close_redirect (redirector); + REDIRECTION_ERROR (r, errno, redirector); + } + +#if defined (COPROCESS_SUPPORT) + coproc_fdchk (redirector); +#endif + xtrace_fdchk (redirector); + +#if defined (BUFFERED_INPUT) + /* inhibit call to sync_buffered_stream() for async processes */ + if (redirector != 0 || (subshell_environment & SUBSHELL_ASYNC) == 0) + check_bash_input (redirector); + r = close_buffered_fd (redirector); +#else /* !BUFFERED_INPUT */ + r = close (redirector); +#endif /* !BUFFERED_INPUT */ + + if (r < 0 && (flags & RX_INTERNAL) && (errno == EIO || errno == ENOSPC)) + REDIRECTION_ERROR (r, errno, -1); + } + break; + + case r_duplicating_input_word: + case r_duplicating_output_word: + case r_move_input_word: + case r_move_output_word: + break; + } + return (0); +} + +/* Remember the file descriptor associated with the slot FD, + on REDIRECTION_UNDO_LIST. Note that the list will be reversed + before it is executed. Any redirections that need to be undone + even if REDIRECTION_UNDO_LIST is discarded by the exec builtin + are also saved on EXEC_REDIRECTION_UNDO_LIST. FDBASE says where to + start the duplicating. If it's less than SHELL_FD_BASE, we're ok, + and can use SHELL_FD_BASE (-1 == don't care). If it's >= SHELL_FD_BASE, + we have to make sure we don't use fdbase to save a file descriptor, + since we're going to use it later (e.g., make sure we don't save fd 0 + to fd 10 if we have a redirection like 0<&10). If the value of fdbase + puts the process over its fd limit, causing fcntl to fail, we try + again with SHELL_FD_BASE. Return 0 on success, -1 on error. */ +static int +add_undo_redirect (fd, ri, fdbase) + int fd; + enum r_instruction ri; + int fdbase; +{ + int new_fd, clexec_flag, savefd_flag; + REDIRECT *new_redirect, *closer, *dummy_redirect; + REDIRECTEE sd; + + savefd_flag = 0; + new_fd = fcntl (fd, F_DUPFD, (fdbase < SHELL_FD_BASE) ? SHELL_FD_BASE : fdbase+1); + if (new_fd < 0) + new_fd = fcntl (fd, F_DUPFD, SHELL_FD_BASE); + if (new_fd < 0) + { + new_fd = fcntl (fd, F_DUPFD, 0); + savefd_flag = 1; + } + + if (new_fd < 0) + { + sys_error (_("redirection error: cannot duplicate fd")); + return (-1); + } + + clexec_flag = fcntl (fd, F_GETFD, 0); + + sd.dest = new_fd; + rd.dest = 0; + closer = make_redirection (sd, r_close_this, rd, 0); + closer->flags |= RX_INTERNAL; + dummy_redirect = copy_redirects (closer); + + sd.dest = fd; + rd.dest = new_fd; + if (fd == 0) + new_redirect = make_redirection (sd, r_duplicating_input, rd, 0); + else + new_redirect = make_redirection (sd, r_duplicating_output, rd, 0); + new_redirect->flags |= RX_INTERNAL; + if (savefd_flag) + new_redirect->flags |= RX_SAVEFD; + if (clexec_flag == 0 && fd >= 3 && (new_fd >= SHELL_FD_BASE || savefd_flag)) + new_redirect->flags |= RX_SAVCLEXEC; + new_redirect->next = closer; + + closer->next = redirection_undo_list; + redirection_undo_list = new_redirect; + + /* Save redirections that need to be undone even if the undo list + is thrown away by the `exec' builtin. */ + add_exec_redirect (dummy_redirect); + + /* experimental: if we're saving a redirection to undo for a file descriptor + above SHELL_FD_BASE, add a redirection to be undone if the exec builtin + causes redirections to be discarded. There needs to be a difference + between fds that are used to save other fds and then are the target of + user redirections and fds that are just the target of user redirections. + We use the close-on-exec flag to tell the difference; fds > SHELL_FD_BASE + that have the close-on-exec flag set are assumed to be fds used internally + to save others. */ + if (fd >= SHELL_FD_BASE && ri != r_close_this && clexec_flag) + { + sd.dest = fd; + rd.dest = new_fd; + new_redirect = make_redirection (sd, r_duplicating_output, rd, 0); + new_redirect->flags |= RX_INTERNAL; + + add_exec_redirect (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); + else if (redirection_undo_list->flags & RX_SAVCLEXEC) + SET_CLOSE_ON_EXEC (new_fd); + + return (0); +} + +/* Set up to close FD when we are finished with the current command + and its redirections. Return 0 on success, -1 on error. */ +static int +add_undo_close_redirect (fd) + int fd; +{ + REDIRECT *closer; + REDIRECTEE sd; + + sd.dest = fd; + rd.dest = 0; + closer = make_redirection (sd, r_close_this, rd, 0); + closer->flags |= RX_INTERNAL; + closer->next = redirection_undo_list; + redirection_undo_list = closer; + + return 0; +} + +static void +add_exec_redirect (dummy_redirect) + REDIRECT *dummy_redirect; +{ + dummy_redirect->next = exec_redirection_undo_list; + exec_redirection_undo_list = dummy_redirect; +} + +/* Return 1 if the redirection specified by RI and REDIRECTOR alters the + standard input. */ +static int +stdin_redirection (ri, redirector) + enum r_instruction ri; + int redirector; +{ + switch (ri) + { + case r_input_direction: + case r_inputa_direction: + case r_input_output: + case r_reading_until: + case r_deblank_reading_until: + case r_reading_string: + return (1); + case r_duplicating_input: + case r_duplicating_input_word: + case r_close_this: + return (redirector == 0); + case r_output_direction: + case r_appending_to: + case r_duplicating_output: + case r_err_and_out: + case r_append_err_and_out: + case r_output_force: + case r_duplicating_output_word: + case r_move_input: + case r_move_output: + case r_move_input_word: + case r_move_output_word: + return (0); + } + return (0); +} + +/* Return non-zero if any of the redirections in REDIRS alter the standard + input. */ +int +stdin_redirects (redirs) + REDIRECT *redirs; +{ + REDIRECT *rp; + int n; + + for (n = 0, rp = redirs; rp; rp = rp->next) + if ((rp->rflags & REDIR_VARASSIGN) == 0) + n += stdin_redirection (rp->instruction, rp->redirector.dest); + return n; +} +/* bind_var_to_int handles array references */ +static int +redir_varassign (redir, fd) + REDIRECT *redir; + int fd; +{ + WORD_DESC *w; + SHELL_VAR *v; + + w = redir->redirector.filename; + v = bind_var_to_int (w->word, fd); + if (v == 0 || readonly_p (v) || noassign_p (v)) + return BADVAR_REDIRECT; + + stupidly_hack_special_variables (w->word); + return 0; +} + +/* Handles {array[ind]} for redirection words */ +static int +redir_varvalue (redir) + REDIRECT *redir; +{ + SHELL_VAR *v; + char *val, *w; + intmax_t vmax; + int i; +#if defined (ARRAY_VARS) + char *sub; + int len, vr; +#endif + + w = redir->redirector.filename->word; /* shorthand */ + /* XXX - handle set -u here? */ +#if defined (ARRAY_VARS) + if (vr = valid_array_reference (w, 0)) + { + v = array_variable_part (w, 0, &sub, &len); + } + else +#endif + { + v = find_variable (w); +#if defined (ARRAY_VARS) + if (v == 0) + { + v = find_variable_last_nameref (w, 0); + if (v && nameref_p (v)) + { + w = nameref_cell (v); + if (vr = valid_array_reference (w, 0)) + v = array_variable_part (w, 0, &sub, &len); + else + v = find_variable (w); + } + } +#endif + } + + if (v == 0 || invisible_p (v)) + return -1; + +#if defined (ARRAY_VARS) + /* get_variable_value handles references to array variables without + subscripts */ + if (vr && (array_p (v) || assoc_p (v))) + val = get_array_value (w, 0, (int *)NULL, (arrayind_t *)0); + else +#endif + val = get_variable_value (v); + if (val == 0 || *val == 0) + return -1; + + if (legal_number (val, &vmax) < 0) + return -1; + + i = vmax; /* integer truncation */ + return i; +} diff --git a/bash-5.1/redir.h b/bash-5.1/redir.h new file mode 100644 index 0000000..64a3d26 --- /dev/null +++ b/bash-5.1/redir.h @@ -0,0 +1,40 @@ +/* redir.h - functions from redir.c. */ + +/* Copyright (C) 1997, 2001, 2005, 2008, 2009-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_REDIR_H_) +#define _REDIR_H_ + +#include "stdc.h" + +/* Values for flags argument to do_redirections */ +#define RX_ACTIVE 0x01 /* do it; don't just go through the motions */ +#define RX_UNDOABLE 0x02 /* make a list to undo these redirections */ +#define RX_CLEXEC 0x04 /* set close-on-exec for opened fds > 2 */ +#define RX_INTERNAL 0x08 +#define RX_USER 0x10 +#define RX_SAVCLEXEC 0x20 /* set close-on-exec off in restored fd even though saved on has it on */ +#define RX_SAVEFD 0x40 /* fd used to save another even if < SHELL_FD_BASE */ + +extern void redirection_error PARAMS((REDIRECT *, int, char *)); +extern int do_redirections PARAMS((REDIRECT *, int)); +extern char *redirection_expand PARAMS((WORD_DESC *)); +extern int stdin_redirects PARAMS((REDIRECT *)); + +#endif /* _REDIR_H_ */ diff --git a/bash-5.1/shell.c b/bash-5.1/shell.c new file mode 100644 index 0000000..7dcd000 --- /dev/null +++ b/bash-5.1/shell.c @@ -0,0 +1,2113 @@ +/* shell.c -- GNU's idea of the POSIX shell specification. */ + +/* Copyright (C) 1987-2019 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* + Birthdate: + Sunday, January 10th, 1988. + Initial author: Brian Fox +*/ +#define INSTALL_DEBUG_MODE + +#include "config.h" + +#include "bashtypes.h" +#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H) +# include +#endif +#include "posixstat.h" +#include "posixtime.h" +#include "bashansi.h" +#include +#include +#include +#include "filecntl.h" +#if defined (HAVE_PWD_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashintl.h" + +#define NEED_SH_SETLINEBUF_DECL /* used in externs.h */ + +#include "shell.h" +#include "parser.h" +#include "flags.h" +#include "trap.h" +#include "mailcheck.h" +#include "builtins.h" +#include "builtins/common.h" + +#if defined (JOB_CONTROL) +#include "jobs.h" +#else +extern int running_in_background; +extern int initialize_job_control PARAMS((int)); +extern int get_tty_state PARAMS((void)); +#endif /* JOB_CONTROL */ + +#include "input.h" +#include "execute_cmd.h" +#include "findcmd.h" + +#if defined (USING_BASH_MALLOC) && defined (DEBUG) && !defined (DISABLE_MALLOC_WRAPPERS) +# include +#endif + +#if defined (HISTORY) +# include "bashhist.h" +# include +#endif + +#if defined (READLINE) +# include +# include "bashline.h" +#endif + +#include +#include + +#if defined (__OPENNT) +# include +#endif + +#if !defined (HAVE_GETPW_DECLS) +extern struct passwd *getpwuid (); +#endif /* !HAVE_GETPW_DECLS */ + +#if !defined (errno) +extern int errno; +#endif + +#if defined (NO_MAIN_ENV_ARG) +extern char **environ; /* used if no third argument to main() */ +#endif + +extern int gnu_error_format; + +/* Non-zero means that this shell has already been run; i.e. you should + call shell_reinitialize () if you need to start afresh. */ +int shell_initialized = 0; +int bash_argv_initialized = 0; + +COMMAND *global_command = (COMMAND *)NULL; + +/* Information about the current user. */ +struct user_info current_user = +{ + (uid_t)-1, (uid_t)-1, (gid_t)-1, (gid_t)-1, + (char *)NULL, (char *)NULL, (char *)NULL +}; + +/* The current host's name. */ +char *current_host_name = (char *)NULL; + +/* Non-zero means that this shell is a login shell. + Specifically: + 0 = not login shell. + 1 = login shell from getty (or equivalent fake out) + -1 = login shell from "--login" (or -l) flag. + -2 = both from getty, and from flag. + */ +int login_shell = 0; + +/* Non-zero means that at this moment, the shell is interactive. In + general, this means that the shell is at this moment reading input + from the keyboard. */ +int interactive = 0; + +/* Non-zero means that the shell was started as an interactive shell. */ +int interactive_shell = 0; + +/* Non-zero means to send a SIGHUP to all jobs when an interactive login + shell exits. */ +int hup_on_exit = 0; + +/* Non-zero means to list status of running and stopped jobs at shell exit */ +int check_jobs_at_exit = 0; + +/* Non-zero means to change to a directory name supplied as a command name */ +int autocd = 0; + +/* Tells what state the shell was in when it started: + 0 = non-interactive shell script + 1 = interactive + 2 = -c command + 3 = wordexp evaluation + This is a superset of the information provided by interactive_shell. +*/ +int startup_state = 0; +int reading_shell_script = 0; + +/* Special debugging helper. */ +int debugging_login_shell = 0; + +/* The environment that the shell passes to other commands. */ +char **shell_environment; + +/* Non-zero when we are executing a top-level command. */ +int executing = 0; + +/* The number of commands executed so far. */ +int current_command_number = 1; + +/* Non-zero is the recursion depth for commands. */ +int indirection_level = 0; + +/* The name of this shell, as taken from argv[0]. */ +char *shell_name = (char *)NULL; + +/* time in seconds when the shell was started */ +time_t shell_start_time; +struct timeval shellstart; + +/* Are we running in an emacs shell window? */ +int running_under_emacs; + +/* Do we have /dev/fd? */ +#ifdef HAVE_DEV_FD +int have_devfd = HAVE_DEV_FD; +#else +int have_devfd = 0; +#endif + +/* The name of the .(shell)rc file. */ +static char *bashrc_file = DEFAULT_BASHRC; + +/* Non-zero if we are finding the scripts requirements. */ +int rpm_requires; + +/* Non-zero means to act more like the Bourne shell on startup. */ +static int act_like_sh; + +/* Non-zero if this shell is being run by `su'. */ +static int su_shell; + +/* Non-zero if we have already expanded and sourced $ENV. */ +static int sourced_env; + +/* Is this shell running setuid? */ +static int running_setuid; + +/* Values for the long-winded argument names. */ +static int debugging; /* Do debugging things. */ +static int no_rc; /* Don't execute ~/.bashrc */ +static int no_profile; /* Don't execute .profile */ +static int do_version; /* Display interesting version info. */ +static int make_login_shell; /* Make this shell be a `-bash' shell. */ +static int want_initial_help; /* --help option */ + +int debugging_mode = 0; /* In debugging mode with --debugger */ +#if defined (READLINE) +int no_line_editing = 0; /* non-zero -> don't do fancy line editing. */ +#else +int no_line_editing = 1; /* can't have line editing without readline */ +#endif +int dump_translatable_strings; /* Dump strings in $"...", don't execute. */ +int dump_po_strings; /* Dump strings in $"..." in po format */ +int wordexp_only = 0; /* Do word expansion only */ +int protected_mode = 0; /* No command substitution with --wordexp */ + +int pretty_print_mode = 0; /* pretty-print a shell script */ + +#if defined (STRICT_POSIX) +int posixly_correct = 1; /* Non-zero means posix.2 superset. */ +#else +int posixly_correct = 0; /* Non-zero means posix.2 superset. */ +#endif + +/* Some long-winded argument names. These are obviously new. */ +#define Int 1 +#define Charp 2 +static const struct { + const char *name; + int type; + int *int_value; + char **char_value; +} long_args[] = { + { "debug", Int, &debugging, (char **)0x0 }, +#if defined (DEBUGGER) + { "debugger", Int, &debugging_mode, (char **)0x0 }, +#endif + { "dump-po-strings", Int, &dump_po_strings, (char **)0x0 }, + { "dump-strings", Int, &dump_translatable_strings, (char **)0x0 }, + { "help", Int, &want_initial_help, (char **)0x0 }, + { "init-file", Charp, (int *)0x0, &bashrc_file }, + { "login", Int, &make_login_shell, (char **)0x0 }, + { "noediting", Int, &no_line_editing, (char **)0x0 }, + { "noprofile", Int, &no_profile, (char **)0x0 }, + { "norc", Int, &no_rc, (char **)0x0 }, + { "posix", Int, &posixly_correct, (char **)0x0 }, + { "pretty-print", Int, &pretty_print_mode, (char **)0x0 }, +#if defined (WORDEXP_OPTION) + { "protected", Int, &protected_mode, (char **)0x0 }, +#endif + { "rcfile", Charp, (int *)0x0, &bashrc_file }, + { "rpm-requires", Int, &rpm_requires, (char **)0x0 }, +#if defined (RESTRICTED_SHELL) + { "restricted", Int, &restricted, (char **)0x0 }, +#endif + { "verbose", Int, &verbose_flag, (char **)0x0 }, + { "version", Int, &do_version, (char **)0x0 }, +#if defined (WORDEXP_OPTION) + { "wordexp", Int, &wordexp_only, (char **)0x0 }, +#endif + { (char *)0x0, Int, (int *)0x0, (char **)0x0 } +}; + +/* These are extern so execute_simple_command can set them, and then + longjmp back to main to execute a shell script, instead of calling + main () again and resulting in indefinite, possibly fatal, stack + growth. */ +procenv_t subshell_top_level; +int subshell_argc; +char **subshell_argv; +char **subshell_envp; + +char *exec_argv0; + +#if defined (BUFFERED_INPUT) +/* The file descriptor from which the shell is reading input. */ +int default_buffered_input = -1; +#endif + +/* The following two variables are not static so they can show up in $-. */ +int read_from_stdin; /* -s flag supplied */ +int want_pending_command; /* -c flag supplied */ + +/* This variable is not static so it can be bound to $BASH_EXECUTION_STRING */ +char *command_execution_string; /* argument to -c option */ +char *shell_script_filename; /* shell script */ + +int malloc_trace_at_exit = 0; + +static int shell_reinitialized = 0; + +static FILE *default_input; + +static STRING_INT_ALIST *shopt_alist; +static int shopt_ind = 0, shopt_len = 0; + +static int parse_long_options PARAMS((char **, int, int)); +static int parse_shell_options PARAMS((char **, int, int)); +static int bind_args PARAMS((char **, int, int, int)); + +static void start_debugger PARAMS((void)); + +static void add_shopt_to_alist PARAMS((char *, int)); +static void run_shopt_alist PARAMS((void)); + +static void execute_env_file PARAMS((char *)); +static void run_startup_files PARAMS((void)); +static int open_shell_script PARAMS((char *)); +static void set_bash_input PARAMS((void)); +static int run_one_command PARAMS((char *)); +#if defined (WORDEXP_OPTION) +static int run_wordexp PARAMS((char *)); +#endif + +static int uidget PARAMS((void)); + +static void set_option_defaults PARAMS((void)); +static void reset_option_defaults PARAMS((void)); + +static void init_interactive PARAMS((void)); +static void init_noninteractive PARAMS((void)); +static void init_interactive_script PARAMS((void)); + +static void set_shell_name PARAMS((char *)); +static void shell_initialize PARAMS((void)); +static void shell_reinitialize PARAMS((void)); + +static void show_shell_usage PARAMS((FILE *, int)); + +#ifdef __CYGWIN__ +static void +_cygwin32_check_tmp () +{ + struct stat sb; + + if (stat ("/tmp", &sb) < 0) + internal_warning (_("could not find /tmp, please create!")); + else + { + if (S_ISDIR (sb.st_mode) == 0) + internal_warning (_("/tmp must be a valid directory name")); + } +} +#endif /* __CYGWIN__ */ + +#if defined (NO_MAIN_ENV_ARG) +/* systems without third argument to main() */ +int +main (argc, argv) + int argc; + char **argv; +#else /* !NO_MAIN_ENV_ARG */ +int +main (argc, argv, env) + int argc; + char **argv, **env; +#endif /* !NO_MAIN_ENV_ARG */ +{ + register int i; + int code, old_errexit_flag; +#if defined (RESTRICTED_SHELL) + int saverst; +#endif + volatile int locally_skip_execution; + volatile int arg_index, top_level_arg_index; +#ifdef __OPENNT + char **env; + + env = environ; +#endif /* __OPENNT */ + + USE_VAR(argc); + USE_VAR(argv); + USE_VAR(env); + USE_VAR(code); + USE_VAR(old_errexit_flag); +#if defined (RESTRICTED_SHELL) + USE_VAR(saverst); +#endif + + /* Catch early SIGINTs. */ + code = setjmp_nosigs (top_level); + if (code) + exit (2); + + xtrace_init (); + +#if defined (USING_BASH_MALLOC) && defined (DEBUG) && !defined (DISABLE_MALLOC_WRAPPERS) + malloc_set_register (1); /* XXX - change to 1 for malloc debugging */ +#endif + + check_dev_tty (); + +#ifdef __CYGWIN__ + _cygwin32_check_tmp (); +#endif /* __CYGWIN__ */ + + /* Wait forever if we are debugging a login shell. */ + while (debugging_login_shell) sleep (3); + + set_default_locale (); + + running_setuid = uidget (); + + if (getenv ("POSIXLY_CORRECT") || getenv ("POSIX_PEDANTIC")) + posixly_correct = 1; + +#if defined (USE_GNU_MALLOC_LIBRARY) + mcheck (programming_error, (void (*) ())0); +#endif /* USE_GNU_MALLOC_LIBRARY */ + + if (setjmp_sigs (subshell_top_level)) + { + argc = subshell_argc; + argv = subshell_argv; + env = subshell_envp; + sourced_env = 0; + } + + shell_reinitialized = 0; + + /* Initialize `local' variables for all `invocations' of main (). */ + arg_index = 1; + if (arg_index > argc) + arg_index = argc; + command_execution_string = shell_script_filename = (char *)NULL; + want_pending_command = locally_skip_execution = read_from_stdin = 0; + default_input = stdin; +#if defined (BUFFERED_INPUT) + default_buffered_input = -1; +#endif + + /* Fix for the `infinite process creation' bug when running shell scripts + from startup files on System V. */ + login_shell = make_login_shell = 0; + + /* If this shell has already been run, then reinitialize it to a + vanilla state. */ + if (shell_initialized || shell_name) + { + /* Make sure that we do not infinitely recurse as a login shell. */ + if (*shell_name == '-') + shell_name++; + + shell_reinitialize (); + if (setjmp_nosigs (top_level)) + exit (2); + } + + shell_environment = env; + set_shell_name (argv[0]); + + gettimeofday (&shellstart, 0); + shell_start_time = shellstart.tv_sec; + + /* Parse argument flags from the input line. */ + + /* Find full word arguments first. */ + arg_index = parse_long_options (argv, arg_index, argc); + + if (want_initial_help) + { + show_shell_usage (stdout, 1); + exit (EXECUTION_SUCCESS); + } + + if (do_version) + { + show_shell_version (1); + exit (EXECUTION_SUCCESS); + } + + echo_input_at_read = verbose_flag; /* --verbose given */ + + /* All done with full word options; do standard shell option parsing.*/ + this_command_name = shell_name; /* for error reporting */ + arg_index = parse_shell_options (argv, arg_index, argc); + + /* If user supplied the "--login" (or -l) flag, then set and invert + LOGIN_SHELL. */ + if (make_login_shell) + { + login_shell++; + login_shell = -login_shell; + } + + set_login_shell ("login_shell", login_shell != 0); + + if (dump_po_strings) + dump_translatable_strings = 1; + + if (dump_translatable_strings) + read_but_dont_execute = 1; + + if (rpm_requires) + { + read_but_dont_execute = 1; + initialize_shell_builtins (); + } + + if (running_setuid && privileged_mode == 0) + disable_priv_mode (); + + /* Need to get the argument to a -c option processed in the + above loop. The next arg is a command to execute, and the + following args are $0...$n respectively. */ + if (want_pending_command) + { + command_execution_string = argv[arg_index]; + if (command_execution_string == 0) + { + report_error (_("%s: option requires an argument"), "-c"); + exit (EX_BADUSAGE); + } + arg_index++; + } + this_command_name = (char *)NULL; + + /* First, let the outside world know about our interactive status. + A shell is interactive if the `-i' flag was given, or if all of + the following conditions are met: + no -c command + no arguments remaining or the -s flag given + standard input is a terminal + standard error is a terminal + Refer to Posix.2, the description of the `sh' utility. */ + + if (forced_interactive || /* -i flag */ + (!command_execution_string && /* No -c command and ... */ + wordexp_only == 0 && /* No --wordexp and ... */ + ((arg_index == argc) || /* no remaining args or... */ + read_from_stdin) && /* -s flag with args, and */ + isatty (fileno (stdin)) && /* Input is a terminal and */ + isatty (fileno (stderr)))) /* error output is a terminal. */ + init_interactive (); + else + init_noninteractive (); + + /* + * Some systems have the bad habit of starting login shells with lots of open + * file descriptors. For instance, most systems that have picked up the + * pre-4.0 Sun YP code leave a file descriptor open each time you call one + * of the getpw* functions, and it's set to be open across execs. That + * means one for login, one for xterm, one for shelltool, etc. There are + * also systems that open persistent FDs to other agents or files as part + * of process startup; these need to be set to be close-on-exec. + */ + if (login_shell && interactive_shell) + { + for (i = 3; i < 20; i++) + SET_CLOSE_ON_EXEC (i); + } + + /* If we're in a strict Posix.2 mode, turn on interactive comments, + alias expansion in non-interactive shells, and other Posix.2 things. */ + if (posixly_correct) + { + bind_variable ("POSIXLY_CORRECT", "y", 0); + sv_strict_posix ("POSIXLY_CORRECT"); + } + + /* Now we run the shopt_alist and process the options. */ + if (shopt_alist) + run_shopt_alist (); + + /* From here on in, the shell must be a normal functioning shell. + Variables from the environment are expected to be set, etc. */ + shell_initialize (); + + set_default_lang (); + set_default_locale_vars (); + + /* + * M-x term -> TERM=eterm-color INSIDE_EMACS='251,term:0.96' (eterm) + * M-x shell -> TERM='dumb' INSIDE_EMACS='25.1,comint' (no line editing) + * + * Older versions of Emacs may set EMACS to 't' or to something like + * '22.1 (term:0.96)' instead of (or in addition to) setting INSIDE_EMACS. + * They may set TERM to 'eterm' instead of 'eterm-color'. They may have + * a now-obsolete command that sets neither EMACS nor INSIDE_EMACS: + * M-x terminal -> TERM='emacs-em7955' (line editing) + */ + if (interactive_shell) + { + char *term, *emacs, *inside_emacs; + int emacs_term, in_emacs; + + term = get_string_value ("TERM"); + emacs = get_string_value ("EMACS"); + inside_emacs = get_string_value ("INSIDE_EMACS"); + + if (inside_emacs) + { + emacs_term = strstr (inside_emacs, ",term:") != 0; + in_emacs = 1; + } + else if (emacs) + { + /* Infer whether we are in an older Emacs. */ + emacs_term = strstr (emacs, " (term:") != 0; + in_emacs = emacs_term || STREQ (emacs, "t"); + } + else + in_emacs = emacs_term = 0; + + /* Not sure any emacs terminal emulator sets TERM=emacs any more */ + no_line_editing |= STREQ (term, "emacs"); + no_line_editing |= in_emacs && STREQ (term, "dumb"); + + /* running_under_emacs == 2 for `eterm' */ + running_under_emacs = in_emacs || STREQN (term, "emacs", 5); + running_under_emacs += emacs_term && STREQN (term, "eterm", 5); + + if (running_under_emacs) + gnu_error_format = 1; + } + + top_level_arg_index = arg_index; + old_errexit_flag = exit_immediately_on_error; + + /* Give this shell a place to longjmp to before executing the + startup files. This allows users to press C-c to abort the + lengthy startup. */ + code = setjmp_sigs (top_level); + if (code) + { + if (code == EXITPROG || code == ERREXIT) + exit_shell (last_command_exit_value); + else + { +#if defined (JOB_CONTROL) + /* Reset job control, since run_startup_files turned it off. */ + set_job_control (interactive_shell); +#endif + /* Reset value of `set -e', since it's turned off before running + the startup files. */ + exit_immediately_on_error += old_errexit_flag; + locally_skip_execution++; + } + } + + arg_index = top_level_arg_index; + + /* Execute the start-up scripts. */ + + if (interactive_shell == 0) + { + unbind_variable ("PS1"); + unbind_variable ("PS2"); + interactive = 0; +#if 0 + /* This has already been done by init_noninteractive */ + expand_aliases = posixly_correct; +#endif + } + else + { + change_flag ('i', FLAG_ON); + interactive = 1; + } + +#if defined (RESTRICTED_SHELL) + /* Set restricted_shell based on whether the basename of $0 indicates that + the shell should be restricted or if the `-r' option was supplied at + startup. */ + restricted_shell = shell_is_restricted (shell_name); + + /* If the `-r' option is supplied at invocation, make sure that the shell + is not in restricted mode when running the startup files. */ + saverst = restricted; + restricted = 0; +#endif + + /* Set positional parameters before running startup files. top_level_arg_index + holds the index of the current argument before setting the positional + parameters, so any changes performed in the startup files won't affect + later option processing. */ + if (wordexp_only) + ; /* nothing yet */ + else if (command_execution_string) + arg_index = bind_args (argv, arg_index, argc, 0); /* $0 ... $n */ + else if (arg_index != argc && read_from_stdin == 0) + { + shell_script_filename = argv[arg_index++]; + arg_index = bind_args (argv, arg_index, argc, 1); /* $1 ... $n */ + } + else + arg_index = bind_args (argv, arg_index, argc, 1); /* $1 ... $n */ + + /* The startup files are run with `set -e' temporarily disabled. */ + if (locally_skip_execution == 0 && running_setuid == 0) + { + old_errexit_flag = exit_immediately_on_error; + exit_immediately_on_error = 0; + + run_startup_files (); + exit_immediately_on_error += old_errexit_flag; + } + + /* If we are invoked as `sh', turn on Posix mode. */ + if (act_like_sh) + { + bind_variable ("POSIXLY_CORRECT", "y", 0); + sv_strict_posix ("POSIXLY_CORRECT"); + } + +#if defined (RESTRICTED_SHELL) + /* Turn on the restrictions after executing the startup files. This + means that `bash -r' or `set -r' invoked from a startup file will + turn on the restrictions after the startup files are executed. */ + restricted = saverst || restricted; + if (shell_reinitialized == 0) + maybe_make_restricted (shell_name); +#endif /* RESTRICTED_SHELL */ + +#if defined (WORDEXP_OPTION) + if (wordexp_only) + { + startup_state = 3; + last_command_exit_value = run_wordexp (argv[top_level_arg_index]); + exit_shell (last_command_exit_value); + } +#endif + + cmd_init (); /* initialize the command object caches */ + uwp_init (); + + if (command_execution_string) + { + startup_state = 2; + + if (debugging_mode) + start_debugger (); + +#if defined (ONESHOT) + executing = 1; + run_one_command (command_execution_string); + exit_shell (last_command_exit_value); +#else /* ONESHOT */ + with_input_from_string (command_execution_string, "-c"); + goto read_and_execute; +#endif /* !ONESHOT */ + } + + /* Get possible input filename and set up default_buffered_input or + default_input as appropriate. */ + if (shell_script_filename) + open_shell_script (shell_script_filename); + else if (interactive == 0) + { + /* In this mode, bash is reading a script from stdin, which is a + pipe or redirected file. */ +#if defined (BUFFERED_INPUT) + default_buffered_input = fileno (stdin); /* == 0 */ +#else + setbuf (default_input, (char *)NULL); +#endif /* !BUFFERED_INPUT */ + read_from_stdin = 1; + } + else if (top_level_arg_index == argc) /* arg index before startup files */ + /* "If there are no operands and the -c option is not specified, the -s + option shall be assumed." */ + read_from_stdin = 1; + + set_bash_input (); + + if (debugging_mode && locally_skip_execution == 0 && running_setuid == 0 && (reading_shell_script || interactive_shell == 0)) + start_debugger (); + + /* Do the things that should be done only for interactive shells. */ + if (interactive_shell) + { + /* Set up for checking for presence of mail. */ + reset_mail_timer (); + init_mail_dates (); + +#if defined (HISTORY) + /* Initialize the interactive history stuff. */ + bash_initialize_history (); + /* Don't load the history from the history file if we've already + saved some lines in this session (e.g., by putting `history -s xx' + into one of the startup files). */ + if (shell_initialized == 0 && history_lines_this_session == 0) + load_history (); +#endif /* HISTORY */ + + /* Initialize terminal state for interactive shells after the + .bash_profile and .bashrc are interpreted. */ + get_tty_state (); + } + +#if !defined (ONESHOT) + read_and_execute: +#endif /* !ONESHOT */ + + shell_initialized = 1; + + if (pretty_print_mode && interactive_shell) + { + internal_warning (_("pretty-printing mode ignored in interactive shells")); + pretty_print_mode = 0; + } + if (pretty_print_mode) + exit_shell (pretty_print_loop ()); + + /* Read commands until exit condition. */ + reader_loop (); + exit_shell (last_command_exit_value); +} + +static int +parse_long_options (argv, arg_start, arg_end) + char **argv; + int arg_start, arg_end; +{ + int arg_index, longarg, i; + char *arg_string; + + arg_index = arg_start; + while ((arg_index != arg_end) && (arg_string = argv[arg_index]) && + (*arg_string == '-')) + { + longarg = 0; + + /* Make --login equivalent to -login. */ + if (arg_string[1] == '-' && arg_string[2]) + { + longarg = 1; + arg_string++; + } + + for (i = 0; long_args[i].name; i++) + { + if (STREQ (arg_string + 1, long_args[i].name)) + { + if (long_args[i].type == Int) + *long_args[i].int_value = 1; + else if (argv[++arg_index] == 0) + { + report_error (_("%s: option requires an argument"), long_args[i].name); + exit (EX_BADUSAGE); + } + else + *long_args[i].char_value = argv[arg_index]; + + break; + } + } + if (long_args[i].name == 0) + { + if (longarg) + { + report_error (_("%s: invalid option"), argv[arg_index]); + show_shell_usage (stderr, 0); + exit (EX_BADUSAGE); + } + break; /* No such argument. Maybe flag arg. */ + } + + arg_index++; + } + + return (arg_index); +} + +static int +parse_shell_options (argv, arg_start, arg_end) + char **argv; + int arg_start, arg_end; +{ + int arg_index; + int arg_character, on_or_off, next_arg, i; + char *o_option, *arg_string; + + arg_index = arg_start; + while (arg_index != arg_end && (arg_string = argv[arg_index]) && + (*arg_string == '-' || *arg_string == '+')) + { + /* There are flag arguments, so parse them. */ + next_arg = arg_index + 1; + + /* A single `-' signals the end of options. From the 4.3 BSD sh. + An option `--' means the same thing; this is the standard + getopt(3) meaning. */ + if (arg_string[0] == '-' && + (arg_string[1] == '\0' || + (arg_string[1] == '-' && arg_string[2] == '\0'))) + return (next_arg); + + i = 1; + on_or_off = arg_string[0]; + while (arg_character = arg_string[i++]) + { + switch (arg_character) + { + case 'c': + want_pending_command = 1; + break; + + case 'l': + make_login_shell = 1; + break; + + case 's': + read_from_stdin = 1; + break; + + case 'o': + o_option = argv[next_arg]; + if (o_option == 0) + { + set_option_defaults (); + list_minus_o_opts (-1, (on_or_off == '-') ? 0 : 1); + reset_option_defaults (); + break; + } + if (set_minus_o_option (on_or_off, o_option) != EXECUTION_SUCCESS) + exit (EX_BADUSAGE); + next_arg++; + break; + + case 'O': + /* Since some of these can be overridden by the normal + interactive/non-interactive shell initialization or + initializing posix mode, we save the options and process + them after initialization. */ + o_option = argv[next_arg]; + if (o_option == 0) + { + shopt_listopt (o_option, (on_or_off == '-') ? 0 : 1); + break; + } + add_shopt_to_alist (o_option, on_or_off); + next_arg++; + break; + + case 'D': + dump_translatable_strings = 1; + break; + + default: + if (change_flag (arg_character, on_or_off) == FLAG_ERROR) + { + report_error (_("%c%c: invalid option"), on_or_off, arg_character); + show_shell_usage (stderr, 0); + exit (EX_BADUSAGE); + } + } + } + /* Can't do just a simple increment anymore -- what about + "bash -abouo emacs ignoreeof -hP"? */ + arg_index = next_arg; + } + + return (arg_index); +} + +/* Exit the shell with status S. */ +void +exit_shell (s) + int s; +{ + fflush (stdout); /* XXX */ + fflush (stderr); + + /* Clean up the terminal if we are in a state where it's been modified. */ +#if defined (READLINE) + if (RL_ISSTATE (RL_STATE_TERMPREPPED) && rl_deprep_term_function) + (*rl_deprep_term_function) (); +#endif + if (read_tty_modified ()) + read_tty_cleanup (); + + /* Do trap[0] if defined. Allow it to override the exit status + passed to us. */ + if (signal_is_trapped (0)) + s = run_exit_trap (); + +#if defined (PROCESS_SUBSTITUTION) + unlink_all_fifos (); +#endif /* PROCESS_SUBSTITUTION */ + +#if defined (HISTORY) + if (remember_on_history) + maybe_save_shell_history (); +#endif /* HISTORY */ + +#if defined (COPROCESS_SUPPORT) + coproc_flush (); +#endif + +#if defined (JOB_CONTROL) + /* If the user has run `shopt -s huponexit', hangup all jobs when we exit + an interactive login shell. ksh does this unconditionally. */ + if (interactive_shell && login_shell && hup_on_exit) + hangup_all_jobs (); + + /* If this shell is interactive, or job control is active, terminate all + stopped jobs and restore the original terminal process group. Don't do + this if we're in a subshell and calling exit_shell after, for example, + a failed word expansion. We want to do this even if the shell is not + interactive because we set the terminal's process group when job control + is enabled regardless of the interactive status. */ + if (subshell_environment == 0) + end_job_control (); +#endif /* JOB_CONTROL */ + + /* Always return the exit status of the last command to our parent. */ + sh_exit (s); +} + +/* A wrapper for exit that (optionally) can do other things, like malloc + statistics tracing. */ +void +sh_exit (s) + int s; +{ +#if defined (MALLOC_DEBUG) && defined (USING_BASH_MALLOC) + if (malloc_trace_at_exit && (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0) + trace_malloc_stats (get_name_for_error (), (char *)NULL); + /* mlocation_write_table (); */ +#endif + + exit (s); +} + +/* Exit a subshell, which includes calling the exit trap. We don't want to + do any more cleanup, since a subshell is created as an exact copy of its + parent. */ +void +subshell_exit (s) + int s; +{ + fflush (stdout); + fflush (stderr); + + /* Do trap[0] if defined. Allow it to override the exit status + passed to us. */ + if (signal_is_trapped (0)) + s = run_exit_trap (); + + sh_exit (s); +} + +void +set_exit_status (s) + int s; +{ + set_pipestatus_from_exit (last_command_exit_value = s); +} + +/* Source the bash startup files. If POSIXLY_CORRECT is non-zero, we obey + the Posix.2 startup file rules: $ENV is expanded, and if the file it + names exists, that file is sourced. The Posix.2 rules are in effect + for interactive shells only. (section 4.56.5.3) */ + +/* Execute ~/.bashrc for most shells. Never execute it if + ACT_LIKE_SH is set, or if NO_RC is set. + + If the executable file "/usr/gnu/src/bash/foo" contains: + + #!/usr/gnu/bin/bash + echo hello + + then: + + COMMAND EXECUTE BASHRC + -------------------------------- + bash -c foo NO + bash foo NO + foo NO + rsh machine ls YES (for rsh, which calls `bash -c') + rsh machine foo YES (for shell started by rsh) NO (for foo!) + echo ls | bash NO + login NO + bash YES +*/ + +static void +execute_env_file (env_file) + char *env_file; +{ + char *fn; + + if (env_file && *env_file) + { + fn = expand_string_unsplit_to_string (env_file, Q_DOUBLE_QUOTES); + if (fn && *fn) + maybe_execute_file (fn, 1); + FREE (fn); + } +} + +static void +run_startup_files () +{ +#if defined (JOB_CONTROL) + int old_job_control; +#endif + int sourced_login, run_by_ssh; + + /* get the rshd/sshd case out of the way first. */ + if (interactive_shell == 0 && no_rc == 0 && login_shell == 0 && + act_like_sh == 0 && command_execution_string) + { +#ifdef SSH_SOURCE_BASHRC + run_by_ssh = (find_variable ("SSH_CLIENT") != (SHELL_VAR *)0) || + (find_variable ("SSH2_CLIENT") != (SHELL_VAR *)0); +#else + run_by_ssh = 0; +#endif + + /* If we were run by sshd or we think we were run by rshd, execute + ~/.bashrc if we are a top-level shell. */ + if ((run_by_ssh || isnetconn (fileno (stdin))) && shell_level < 2) + { +#ifdef SYS_BASHRC +# if defined (__OPENNT) + maybe_execute_file (_prefixInstallPath(SYS_BASHRC, NULL, 0), 1); +# else + maybe_execute_file (SYS_BASHRC, 1); +# endif +#endif + maybe_execute_file (bashrc_file, 1); + return; + } + } + +#if defined (JOB_CONTROL) + /* Startup files should be run without job control enabled. */ + old_job_control = interactive_shell ? set_job_control (0) : 0; +#endif + + sourced_login = 0; + + /* A shell begun with the --login (or -l) flag that is not in posix mode + runs the login shell startup files, no matter whether or not it is + interactive. If NON_INTERACTIVE_LOGIN_SHELLS is defined, run the + startup files if argv[0][0] == '-' as well. */ +#if defined (NON_INTERACTIVE_LOGIN_SHELLS) + if (login_shell && posixly_correct == 0) +#else + if (login_shell < 0 && posixly_correct == 0) +#endif + { + /* We don't execute .bashrc for login shells. */ + no_rc++; + + /* Execute /etc/profile and one of the personal login shell + initialization files. */ + if (no_profile == 0) + { + maybe_execute_file (SYS_PROFILE, 1); + + if (act_like_sh) /* sh */ + maybe_execute_file ("~/.profile", 1); + else if ((maybe_execute_file ("~/.bash_profile", 1) == 0) && + (maybe_execute_file ("~/.bash_login", 1) == 0)) /* bash */ + maybe_execute_file ("~/.profile", 1); + } + + sourced_login = 1; + } + + /* A non-interactive shell not named `sh' and not in posix mode reads and + executes commands from $BASH_ENV. If `su' starts a shell with `-c cmd' + and `-su' as the name of the shell, we want to read the startup files. + No other non-interactive shells read any startup files. */ + if (interactive_shell == 0 && !(su_shell && login_shell)) + { + if (posixly_correct == 0 && act_like_sh == 0 && privileged_mode == 0 && + sourced_env++ == 0) + execute_env_file (get_string_value ("BASH_ENV")); + return; + } + + /* Interactive shell or `-su' shell. */ + if (posixly_correct == 0) /* bash, sh */ + { + if (login_shell && sourced_login++ == 0) + { + /* We don't execute .bashrc for login shells. */ + no_rc++; + + /* Execute /etc/profile and one of the personal login shell + initialization files. */ + if (no_profile == 0) + { + maybe_execute_file (SYS_PROFILE, 1); + + if (act_like_sh) /* sh */ + maybe_execute_file ("~/.profile", 1); + else if ((maybe_execute_file ("~/.bash_profile", 1) == 0) && + (maybe_execute_file ("~/.bash_login", 1) == 0)) /* bash */ + maybe_execute_file ("~/.profile", 1); + } + } + + /* bash */ + if (act_like_sh == 0 && no_rc == 0) + { +#ifdef SYS_BASHRC +# if defined (__OPENNT) + maybe_execute_file (_prefixInstallPath(SYS_BASHRC, NULL, 0), 1); +# else + maybe_execute_file (SYS_BASHRC, 1); +# endif +#endif + maybe_execute_file (bashrc_file, 1); + } + /* sh */ + else if (act_like_sh && privileged_mode == 0 && sourced_env++ == 0) + execute_env_file (get_string_value ("ENV")); + } + else /* bash --posix, sh --posix */ + { + /* bash and sh */ + if (interactive_shell && privileged_mode == 0 && sourced_env++ == 0) + execute_env_file (get_string_value ("ENV")); + } + +#if defined (JOB_CONTROL) + set_job_control (old_job_control); +#endif +} + +#if defined (RESTRICTED_SHELL) +/* Return 1 if the shell should be a restricted one based on NAME or the + value of `restricted'. Don't actually do anything, just return a + boolean value. */ +int +shell_is_restricted (name) + char *name; +{ + char *temp; + + if (restricted) + return 1; + temp = base_pathname (name); + if (*temp == '-') + temp++; + return (STREQ (temp, RESTRICTED_SHELL_NAME)); +} + +/* Perhaps make this shell a `restricted' one, based on NAME. If the + basename of NAME is "rbash", then this shell is restricted. The + name of the restricted shell is a configurable option, see config.h. + In a restricted shell, PATH, SHELL, ENV, and BASH_ENV are read-only + and non-unsettable. + Do this also if `restricted' is already set to 1; maybe the shell was + started with -r. */ +int +maybe_make_restricted (name) + char *name; +{ + char *temp; + + temp = base_pathname (name); + if (*temp == '-') + temp++; + if (restricted || (STREQ (temp, RESTRICTED_SHELL_NAME))) + { +#if defined (RBASH_STATIC_PATH_VALUE) + bind_variable ("PATH", RBASH_STATIC_PATH_VALUE, 0); + stupidly_hack_special_variables ("PATH"); /* clear hash table */ +#endif + set_var_read_only ("PATH"); + set_var_read_only ("SHELL"); + set_var_read_only ("ENV"); + set_var_read_only ("BASH_ENV"); + set_var_read_only ("HISTFILE"); + restricted = 1; + } + return (restricted); +} +#endif /* RESTRICTED_SHELL */ + +/* Fetch the current set of uids and gids and return 1 if we're running + setuid or setgid. */ +static int +uidget () +{ + uid_t u; + + u = getuid (); + if (current_user.uid != u) + { + FREE (current_user.user_name); + FREE (current_user.shell); + FREE (current_user.home_dir); + current_user.user_name = current_user.shell = current_user.home_dir = (char *)NULL; + } + current_user.uid = u; + current_user.gid = getgid (); + current_user.euid = geteuid (); + current_user.egid = getegid (); + + /* See whether or not we are running setuid or setgid. */ + return (current_user.uid != current_user.euid) || + (current_user.gid != current_user.egid); +} + +void +disable_priv_mode () +{ + int e; + +#if HAVE_SETRESUID + if (setresuid (current_user.uid, current_user.uid, current_user.uid) < 0) +#else + if (setuid (current_user.uid) < 0) +#endif + { + e = errno; + sys_error (_("cannot set uid to %d: effective uid %d"), current_user.uid, current_user.euid); +#if defined (EXIT_ON_SETUID_FAILURE) + if (e == EAGAIN) + exit (e); +#endif + } +#if HAVE_SETRESGID + if (setresgid (current_user.gid, current_user.gid, current_user.gid) < 0) +#else + if (setgid (current_user.gid) < 0) +#endif + sys_error (_("cannot set gid to %d: effective gid %d"), current_user.gid, current_user.egid); + + current_user.euid = current_user.uid; + current_user.egid = current_user.gid; +} + +#if defined (WORDEXP_OPTION) +static int +run_wordexp (words) + char *words; +{ + int code, nw, nb; + WORD_LIST *wl, *tl, *result; + + code = setjmp_nosigs (top_level); + + if (code != NOT_JUMPED) + { + switch (code) + { + /* Some kind of throw to top_level has occurred. */ + case FORCE_EOF: + return last_command_exit_value = 127; + case ERREXIT: + case EXITPROG: + return last_command_exit_value; + case DISCARD: + return last_command_exit_value = 1; + default: + command_error ("run_wordexp", CMDERR_BADJUMP, code, 0); + } + } + + /* Run it through the parser to get a list of words and expand them */ + if (words && *words) + { + with_input_from_string (words, "--wordexp"); + if (parse_command () != 0) + return (126); + if (global_command == 0) + { + printf ("0\n0\n"); + return (0); + } + if (global_command->type != cm_simple) + return (126); + wl = global_command->value.Simple->words; + if (protected_mode) + for (tl = wl; tl; tl = tl->next) + tl->word->flags |= W_NOCOMSUB|W_NOPROCSUB; + result = wl ? expand_words_no_vars (wl) : (WORD_LIST *)0; + } + else + result = (WORD_LIST *)0; + + last_command_exit_value = 0; + + if (result == 0) + { + printf ("0\n0\n"); + return (0); + } + + /* Count up the number of words and bytes, and print them. Don't count + the trailing NUL byte. */ + for (nw = nb = 0, wl = result; wl; wl = wl->next) + { + nw++; + nb += strlen (wl->word->word); + } + printf ("%u\n%u\n", nw, nb); + /* Print each word on a separate line. This will have to be changed when + the interface to glibc is completed. */ + for (wl = result; wl; wl = wl->next) + printf ("%s\n", wl->word->word); + + return (0); +} +#endif + +#if defined (ONESHOT) +/* Run one command, given as the argument to the -c option. Tell + parse_and_execute not to fork for a simple command. */ +static int +run_one_command (command) + char *command; +{ + int code; + + code = setjmp_nosigs (top_level); + + if (code != NOT_JUMPED) + { +#if defined (PROCESS_SUBSTITUTION) + unlink_fifo_list (); +#endif /* PROCESS_SUBSTITUTION */ + switch (code) + { + /* Some kind of throw to top_level has occurred. */ + case FORCE_EOF: + return last_command_exit_value = 127; + case ERREXIT: + case EXITPROG: + return last_command_exit_value; + case DISCARD: + return last_command_exit_value = 1; + default: + command_error ("run_one_command", CMDERR_BADJUMP, code, 0); + } + } + return (parse_and_execute (savestring (command), "-c", SEVAL_NOHIST|SEVAL_RESETLINE)); +} +#endif /* ONESHOT */ + +static int +bind_args (argv, arg_start, arg_end, start_index) + char **argv; + int arg_start, arg_end, start_index; +{ + register int i; + WORD_LIST *args, *tl; + + for (i = arg_start, args = tl = (WORD_LIST *)NULL; i < arg_end; i++) + { + if (args == 0) + args = tl = make_word_list (make_word (argv[i]), args); + else + { + tl->next = make_word_list (make_word (argv[i]), (WORD_LIST *)NULL); + tl = tl->next; + } + } + + if (args) + { + if (start_index == 0) /* bind to $0...$n for sh -c command */ + { + /* Posix.2 4.56.3 says that the first argument after sh -c command + becomes $0, and the rest of the arguments become $1...$n */ + shell_name = savestring (args->word->word); + FREE (dollar_vars[0]); + dollar_vars[0] = savestring (args->word->word); + remember_args (args->next, 1); + if (debugging_mode) + { + push_args (args->next); /* BASH_ARGV and BASH_ARGC */ + bash_argv_initialized = 1; + } + } + else /* bind to $1...$n for shell script */ + { + remember_args (args, 1); + /* We do this unconditionally so something like -O extdebug doesn't + do it first. We're setting the definitive positional params + here. */ + if (debugging_mode) + { + push_args (args); /* BASH_ARGV and BASH_ARGC */ + bash_argv_initialized = 1; + } + } + + dispose_words (args); + } + + return (i); +} + +void +unbind_args () +{ + remember_args ((WORD_LIST *)NULL, 1); + pop_args (); /* Reset BASH_ARGV and BASH_ARGC */ +} + +static void +start_debugger () +{ +#if defined (DEBUGGER) && defined (DEBUGGER_START_FILE) + int old_errexit; + int r; + + old_errexit = exit_immediately_on_error; + exit_immediately_on_error = 0; + + r = force_execute_file (DEBUGGER_START_FILE, 1); + if (r < 0) + { + internal_warning (_("cannot start debugger; debugging mode disabled")); + debugging_mode = 0; + } + error_trace_mode = function_trace_mode = debugging_mode; + + set_shellopts (); + set_bashopts (); + + exit_immediately_on_error += old_errexit; +#endif +} + +static int +open_shell_script (script_name) + char *script_name; +{ + int fd, e, fd_is_tty; + char *filename, *path_filename, *t; + char sample[80]; + int sample_len; + struct stat sb; +#if defined (ARRAY_VARS) + SHELL_VAR *funcname_v, *bash_source_v, *bash_lineno_v; + ARRAY *funcname_a, *bash_source_a, *bash_lineno_a; +#endif + + filename = savestring (script_name); + + fd = open (filename, O_RDONLY); + if ((fd < 0) && (errno == ENOENT) && (absolute_program (filename) == 0)) + { + e = errno; + /* If it's not in the current directory, try looking through PATH + for it. */ + path_filename = find_path_file (script_name); + if (path_filename) + { + free (filename); + filename = path_filename; + fd = open (filename, O_RDONLY); + } + else + errno = e; + } + + if (fd < 0) + { + e = errno; + file_error (filename); +#if defined (JOB_CONTROL) + end_job_control (); /* just in case we were run as bash -i script */ +#endif + sh_exit ((e == ENOENT) ? EX_NOTFOUND : EX_NOINPUT); + } + + free (dollar_vars[0]); + dollar_vars[0] = exec_argv0 ? savestring (exec_argv0) : savestring (script_name); + if (exec_argv0) + { + free (exec_argv0); + exec_argv0 = (char *)NULL; + } + + if (file_isdir (filename)) + { +#if defined (EISDIR) + errno = EISDIR; +#else + errno = EINVAL; +#endif + file_error (filename); +#if defined (JOB_CONTROL) + end_job_control (); /* just in case we were run as bash -i script */ +#endif + sh_exit (EX_NOINPUT); + } + +#if defined (ARRAY_VARS) + GET_ARRAY_FROM_VAR ("FUNCNAME", funcname_v, funcname_a); + GET_ARRAY_FROM_VAR ("BASH_SOURCE", bash_source_v, bash_source_a); + GET_ARRAY_FROM_VAR ("BASH_LINENO", bash_lineno_v, bash_lineno_a); + + array_push (bash_source_a, filename); + if (bash_lineno_a) + { + t = itos (executing_line_number ()); + array_push (bash_lineno_a, t); + free (t); + } + array_push (funcname_a, "main"); +#endif + +#ifdef HAVE_DEV_FD + fd_is_tty = isatty (fd); +#else + fd_is_tty = 0; +#endif + + /* Only do this with non-tty file descriptors we can seek on. */ + if (fd_is_tty == 0 && (lseek (fd, 0L, 1) != -1)) + { + /* Check to see if the `file' in `bash file' is a binary file + according to the same tests done by execute_simple_command (), + and report an error and exit if it is. */ + sample_len = read (fd, sample, sizeof (sample)); + if (sample_len < 0) + { + e = errno; + if ((fstat (fd, &sb) == 0) && S_ISDIR (sb.st_mode)) + { +#if defined (EISDIR) + errno = EISDIR; + file_error (filename); +#else + internal_error (_("%s: Is a directory"), filename); +#endif + } + else + { + errno = e; + file_error (filename); + } +#if defined (JOB_CONTROL) + end_job_control (); /* just in case we were run as bash -i script */ +#endif + exit (EX_NOEXEC); + } + else if (sample_len > 0 && (check_binary_file (sample, sample_len))) + { + internal_error (_("%s: cannot execute binary file"), filename); +#if defined (JOB_CONTROL) + end_job_control (); /* just in case we were run as bash -i script */ +#endif + exit (EX_BINARY_FILE); + } + /* Now rewind the file back to the beginning. */ + lseek (fd, 0L, 0); + } + + /* Open the script. But try to move the file descriptor to a randomly + large one, in the hopes that any descriptors used by the script will + not match with ours. */ + fd = move_to_high_fd (fd, 1, -1); + +#if defined (BUFFERED_INPUT) + default_buffered_input = fd; + SET_CLOSE_ON_EXEC (default_buffered_input); +#else /* !BUFFERED_INPUT */ + default_input = fdopen (fd, "r"); + + if (default_input == 0) + { + file_error (filename); + exit (EX_NOTFOUND); + } + + SET_CLOSE_ON_EXEC (fd); + if (fileno (default_input) != fd) + SET_CLOSE_ON_EXEC (fileno (default_input)); +#endif /* !BUFFERED_INPUT */ + + /* Just about the only way for this code to be executed is if something + like `bash -i /dev/stdin' is executed. */ + if (interactive_shell && fd_is_tty) + { + dup2 (fd, 0); + close (fd); + fd = 0; +#if defined (BUFFERED_INPUT) + default_buffered_input = 0; +#else + fclose (default_input); + default_input = stdin; +#endif + } + else if (forced_interactive && fd_is_tty == 0) + /* But if a script is called with something like `bash -i scriptname', + we need to do a non-interactive setup here, since we didn't do it + before. */ + init_interactive_script (); + + free (filename); + + reading_shell_script = 1; + return (fd); +} + +/* Initialize the input routines for the parser. */ +static void +set_bash_input () +{ + /* Make sure the fd from which we are reading input is not in + no-delay mode. */ +#if defined (BUFFERED_INPUT) + if (interactive == 0) + sh_unset_nodelay_mode (default_buffered_input); + else +#endif /* !BUFFERED_INPUT */ + sh_unset_nodelay_mode (fileno (stdin)); + + /* with_input_from_stdin really means `with_input_from_readline' */ + if (interactive && no_line_editing == 0) + with_input_from_stdin (); +#if defined (BUFFERED_INPUT) + else if (interactive == 0) + with_input_from_buffered_stream (default_buffered_input, dollar_vars[0]); +#endif /* BUFFERED_INPUT */ + else + with_input_from_stream (default_input, dollar_vars[0]); +} + +/* Close the current shell script input source and forget about it. This is + extern so execute_cmd.c:initialize_subshell() can call it. If CHECK_ZERO + is non-zero, we close default_buffered_input even if it's the standard + input (fd 0). */ +void +unset_bash_input (check_zero) + int check_zero; +{ +#if defined (BUFFERED_INPUT) + if ((check_zero && default_buffered_input >= 0) || + (check_zero == 0 && default_buffered_input > 0)) + { + close_buffered_fd (default_buffered_input); + default_buffered_input = bash_input.location.buffered_fd = -1; + bash_input.type = st_none; /* XXX */ + } +#else /* !BUFFERED_INPUT */ + if (default_input) + { + fclose (default_input); + default_input = (FILE *)NULL; + } +#endif /* !BUFFERED_INPUT */ +} + + +#if !defined (PROGRAM) +# define PROGRAM "bash" +#endif + +static void +set_shell_name (argv0) + char *argv0; +{ + /* Here's a hack. If the name of this shell is "sh", then don't do + any startup files; just try to be more like /bin/sh. */ + shell_name = argv0 ? base_pathname (argv0) : PROGRAM; + + if (argv0 && *argv0 == '-') + { + if (*shell_name == '-') + shell_name++; + login_shell = 1; + } + + if (shell_name[0] == 's' && shell_name[1] == 'h' && shell_name[2] == '\0') + act_like_sh++; + if (shell_name[0] == 's' && shell_name[1] == 'u' && shell_name[2] == '\0') + su_shell++; + + shell_name = argv0 ? argv0 : PROGRAM; + FREE (dollar_vars[0]); + dollar_vars[0] = savestring (shell_name); + + /* A program may start an interactive shell with + "execl ("/bin/bash", "-", NULL)". + If so, default the name of this shell to our name. */ + if (!shell_name || !*shell_name || (shell_name[0] == '-' && !shell_name[1])) + shell_name = PROGRAM; +} + +/* Some options are initialized to -1 so we have a way to determine whether + they were set on the command line. This is an issue when listing the option + values at invocation (`bash -o'), so we set the defaults here and reset + them after the call to list_minus_o_options (). */ +/* XXX - could also do this for histexp_flag, jobs_m_flag */ +static void +set_option_defaults () +{ +#if defined (HISTORY) + enable_history_list = 0; +#endif +} + +static void +reset_option_defaults () +{ +#if defined (HISTORY) + enable_history_list = -1; +#endif +} + +static void +init_interactive () +{ + expand_aliases = interactive_shell = startup_state = 1; + interactive = 1; +#if defined (HISTORY) + if (enable_history_list == -1) + enable_history_list = 1; /* set default */ + remember_on_history = enable_history_list; +# if defined (BANG_HISTORY) + histexp_flag = history_expansion; /* XXX */ +# endif +#endif +} + +static void +init_noninteractive () +{ +#if defined (HISTORY) + if (enable_history_list == -1) /* set default */ + enable_history_list = 0; + bash_history_reinit (0); +#endif /* HISTORY */ + interactive_shell = startup_state = interactive = 0; + expand_aliases = posixly_correct; /* XXX - was 0 not posixly_correct */ + no_line_editing = 1; +#if defined (JOB_CONTROL) + /* Even if the shell is not interactive, enable job control if the -i or + -m option is supplied at startup. */ + set_job_control (forced_interactive||jobs_m_flag); +#endif /* JOB_CONTROL */ +} + +static void +init_interactive_script () +{ +#if defined (HISTORY) + if (enable_history_list == -1) + enable_history_list = 1; +#endif + init_noninteractive (); + expand_aliases = interactive_shell = startup_state = 1; +#if defined (HISTORY) + remember_on_history = enable_history_list; /* XXX */ +#endif +} + +void +get_current_user_info () +{ + struct passwd *entry; + + /* Don't fetch this more than once. */ + if (current_user.user_name == 0) + { +#if defined (__TANDEM) + entry = getpwnam (getlogin ()); +#else + entry = getpwuid (current_user.uid); +#endif + if (entry) + { + current_user.user_name = savestring (entry->pw_name); + current_user.shell = (entry->pw_shell && entry->pw_shell[0]) + ? savestring (entry->pw_shell) + : savestring ("/bin/sh"); + current_user.home_dir = savestring (entry->pw_dir); + } + else + { + current_user.user_name = _("I have no name!"); + current_user.user_name = savestring (current_user.user_name); + current_user.shell = savestring ("/bin/sh"); + current_user.home_dir = savestring ("/"); + } +#if defined (HAVE_GETPWENT) + endpwent (); +#endif + } +} + +/* Do whatever is necessary to initialize the shell. + Put new initializations in here. */ +static void +shell_initialize () +{ + char hostname[256]; + int should_be_restricted; + + /* Line buffer output for stderr and stdout. */ + if (shell_initialized == 0) + { + sh_setlinebuf (stderr); + sh_setlinebuf (stdout); + } + + /* Sort the array of shell builtins so that the binary search in + find_shell_builtin () works correctly. */ + initialize_shell_builtins (); + + /* Initialize the trap signal handlers before installing our own + signal handlers. traps.c:restore_original_signals () is responsible + for restoring the original default signal handlers. That function + is called when we make a new child. */ + initialize_traps (); + initialize_signals (0); + + /* It's highly unlikely that this will change. */ + if (current_host_name == 0) + { + /* Initialize current_host_name. */ + if (gethostname (hostname, 255) < 0) + current_host_name = "??host??"; + else + current_host_name = savestring (hostname); + } + + /* Initialize the stuff in current_user that comes from the password + file. We don't need to do this right away if the shell is not + interactive. */ + if (interactive_shell) + get_current_user_info (); + + /* Initialize our interface to the tilde expander. */ + tilde_initialize (); + +#if defined (RESTRICTED_SHELL) + should_be_restricted = shell_is_restricted (shell_name); +#endif + + /* Initialize internal and environment variables. Don't import shell + functions from the environment if we are running in privileged or + restricted mode or if the shell is running setuid. */ +#if defined (RESTRICTED_SHELL) + initialize_shell_variables (shell_environment, privileged_mode||restricted||should_be_restricted||running_setuid); +#else + initialize_shell_variables (shell_environment, privileged_mode||running_setuid); +#endif + + /* Initialize the data structures for storing and running jobs. */ + initialize_job_control (jobs_m_flag); + + /* Initialize input streams to null. */ + initialize_bash_input (); + + initialize_flags (); + + /* Initialize the shell options. Don't import the shell options + from the environment variables $SHELLOPTS or $BASHOPTS if we are + running in privileged or restricted mode or if the shell is running + setuid. */ +#if defined (RESTRICTED_SHELL) + initialize_shell_options (privileged_mode||restricted||should_be_restricted||running_setuid); + initialize_bashopts (privileged_mode||restricted||should_be_restricted||running_setuid); +#else + initialize_shell_options (privileged_mode||running_setuid); + initialize_bashopts (privileged_mode||running_setuid); +#endif +} + +/* Function called by main () when it appears that the shell has already + had some initialization performed. This is supposed to reset the world + back to a pristine state, as if we had been exec'ed. */ +static void +shell_reinitialize () +{ + /* The default shell prompts. */ + primary_prompt = PPROMPT; + secondary_prompt = SPROMPT; + + /* Things that get 1. */ + current_command_number = 1; + + /* We have decided that the ~/.bashrc file should not be executed + for the invocation of each shell script. If the variable $ENV + (or $BASH_ENV) is set, its value is used as the name of a file + to source. */ + no_rc = no_profile = 1; + + /* Things that get 0. */ + login_shell = make_login_shell = interactive = executing = 0; + debugging = do_version = line_number = last_command_exit_value = 0; + forced_interactive = interactive_shell = 0; + subshell_environment = running_in_background = 0; + expand_aliases = 0; + bash_argv_initialized = 0; + + /* XXX - should we set jobs_m_flag to 0 here? */ + +#if defined (HISTORY) + bash_history_reinit (enable_history_list = 0); +#endif /* HISTORY */ + +#if defined (RESTRICTED_SHELL) + restricted = 0; +#endif /* RESTRICTED_SHELL */ + + /* Ensure that the default startup file is used. (Except that we don't + execute this file for reinitialized shells). */ + bashrc_file = DEFAULT_BASHRC; + + /* Delete all variables and functions. They will be reinitialized when + the environment is parsed. */ + delete_all_contexts (shell_variables); + delete_all_variables (shell_functions); + + reinit_special_variables (); + +#if defined (READLINE) + bashline_reinitialize (); +#endif + + shell_reinitialized = 1; +} + +static void +show_shell_usage (fp, extra) + FILE *fp; + int extra; +{ + int i; + char *set_opts, *s, *t; + + if (extra) + fprintf (fp, _("GNU bash, version %s-(%s)\n"), shell_version_string (), MACHTYPE); + fprintf (fp, _("Usage:\t%s [GNU long option] [option] ...\n\t%s [GNU long option] [option] script-file ...\n"), + shell_name, shell_name); + fputs (_("GNU long options:\n"), fp); + for (i = 0; long_args[i].name; i++) + fprintf (fp, "\t--%s\n", long_args[i].name); + + fputs (_("Shell options:\n"), fp); + fputs (_("\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"), fp); + + for (i = 0, set_opts = 0; shell_builtins[i].name; i++) + if (STREQ (shell_builtins[i].name, "set")) + { + set_opts = savestring (shell_builtins[i].short_doc); + break; + } + + if (set_opts) + { + s = strchr (set_opts, '['); + if (s == 0) + s = set_opts; + while (*++s == '-') + ; + t = strchr (s, ']'); + if (t) + *t = '\0'; + fprintf (fp, _("\t-%s or -o option\n"), s); + free (set_opts); + } + + if (extra) + { + fprintf (fp, _("Type `%s -c \"help set\"' for more information about shell options.\n"), shell_name); + fprintf (fp, _("Type `%s -c help' for more information about shell builtin commands.\n"), shell_name); + fprintf (fp, _("Use the `bashbug' command to report bugs.\n")); + fprintf (fp, "\n"); + fprintf (fp, _("bash home page: \n")); + fprintf (fp, _("General help using GNU software: \n")); + } +} + +static void +add_shopt_to_alist (opt, on_or_off) + char *opt; + int on_or_off; +{ + if (shopt_ind >= shopt_len) + { + shopt_len += 8; + shopt_alist = (STRING_INT_ALIST *)xrealloc (shopt_alist, shopt_len * sizeof (shopt_alist[0])); + } + shopt_alist[shopt_ind].word = opt; + shopt_alist[shopt_ind].token = on_or_off; + shopt_ind++; +} + +static void +run_shopt_alist () +{ + register int i; + + for (i = 0; i < shopt_ind; i++) + if (shopt_setopt (shopt_alist[i].word, (shopt_alist[i].token == '-')) != EXECUTION_SUCCESS) + exit (EX_BADUSAGE); + free (shopt_alist); + shopt_alist = 0; + shopt_ind = shopt_len = 0; +} diff --git a/bash-5.1/shell.h b/bash-5.1/shell.h new file mode 100644 index 0000000..29b0efb --- /dev/null +++ b/bash-5.1/shell.h @@ -0,0 +1,230 @@ +/* shell.h -- The data structures used by the shell */ + +/* Copyright (C) 1993-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "bashjmp.h" + +#include "command.h" +#include "syntax.h" +#include "general.h" +#include "error.h" +#include "variables.h" +#include "arrayfunc.h" +#include "quit.h" +#include "maxpath.h" +#include "unwind_prot.h" +#include "dispose_cmd.h" +#include "make_cmd.h" +#include "ocache.h" +#include "subst.h" +#include "sig.h" +#include "pathnames.h" +#include "externs.h" + +extern int EOF_Reached; + +#define NO_PIPE -1 +#define REDIRECT_BOTH -2 + +#define NO_VARIABLE -1 + +/* Values that can be returned by execute_command (). */ +#define EXECUTION_FAILURE 1 +#define EXECUTION_SUCCESS 0 + +/* Usage messages by builtins result in a return status of 2. */ +#define EX_BADUSAGE 2 + +#define EX_MISCERROR 2 + +/* Special exit statuses used by the shell, internally and externally. */ +#define EX_RETRYFAIL 124 +#define EX_WEXPCOMSUB 125 +#define EX_BINARY_FILE 126 +#define EX_NOEXEC 126 +#define EX_NOINPUT 126 +#define EX_NOTFOUND 127 + +#define EX_SHERRBASE 256 /* all special error values are > this. */ + +#define EX_BADSYNTAX 257 /* shell syntax error */ +#define EX_USAGE 258 /* syntax error in usage */ +#define EX_REDIRFAIL 259 /* redirection failed */ +#define EX_BADASSIGN 260 /* variable assignment error */ +#define EX_EXPFAIL 261 /* word expansion failed */ +#define EX_DISKFALLBACK 262 /* fall back to disk command from builtin */ + +/* Flag values that control parameter pattern substitution. */ +#define MATCH_ANY 0x000 +#define MATCH_BEG 0x001 +#define MATCH_END 0x002 + +#define MATCH_TYPEMASK 0x003 + +#define MATCH_GLOBREP 0x010 +#define MATCH_QUOTED 0x020 +#define MATCH_ASSIGNRHS 0x040 +#define MATCH_STARSUB 0x080 + +/* Some needed external declarations. */ +extern char **shell_environment; +extern WORD_LIST *rest_of_args; + +/* Generalized global variables. */ +extern char *command_execution_string; + +extern int debugging_mode; +extern int executing, login_shell; +extern int interactive, interactive_shell; +extern int startup_state; +extern int reading_shell_script; +extern int shell_initialized; +extern int rpm_requires; +extern int bash_argv_initialized; +extern int subshell_environment; +extern int current_command_number; +extern int indirection_level; +extern int shell_compatibility_level; +extern int running_under_emacs; + +extern int posixly_correct; +extern int no_line_editing; + +extern char *shell_name; +extern char *current_host_name; + +extern int subshell_argc; +extern char **subshell_argv; +extern char **subshell_envp; + +/* variables managed using shopt */ +extern int hup_on_exit; +extern int check_jobs_at_exit; +extern int autocd; +extern int check_window_size; + +/* from version.c */ +extern int build_version, patch_level; +extern char *dist_version, *release_status; + +extern int locale_mb_cur_max; +extern int locale_utf8locale; + +/* 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 { + int size; + char *bitmap; +}; + +#define FD_BITMAP_SIZE 32 + +#define CTLESC '\001' +#define CTLNUL '\177' + +/* Information about the current user. */ +struct user_info { + uid_t uid, euid; + gid_t gid, egid; + char *user_name; + char *shell; /* shell from the password file */ + char *home_dir; +}; + +extern struct user_info current_user; + +/* Force gcc to not clobber X on a longjmp(). Old versions of gcc mangle + this badly. */ +#if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ > 8) +# define USE_VAR(x) ((void) &(x)) +#else +# define USE_VAR(x) +#endif + +#define HEREDOC_MAX 16 + +/* Structure in which to save partial parsing state when doing things like + PROMPT_COMMAND and bash_execute_unix_command execution. */ + +typedef struct _sh_parser_state_t { + + /* parsing state */ + int parser_state; + int *token_state; + + char *token; + int token_buffer_size; + + /* input line state -- line number saved elsewhere */ + int input_line_terminator; + int eof_encountered; + +#if defined (HANDLE_MULTIBYTE) + /* Nothing right now for multibyte state, but might want something later. */ +#endif + + char **prompt_string_pointer; + + /* history state affecting or modified by the parser */ + int current_command_line_count; +#if defined (HISTORY) + int remember_on_history; + int history_expansion_inhibited; +#endif + + /* execution state possibly modified by the parser */ + int last_command_exit_value; +#if defined (ARRAY_VARS) + ARRAY *pipestatus; +#endif + sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; + + /* flags state affecting the parser */ + int expand_aliases; + int echo_input_at_read; + int need_here_doc; + int here_doc_first_line; + + /* structures affecting the parser */ + REDIRECT *redir_stack[HEREDOC_MAX]; +} sh_parser_state_t; + +typedef struct _sh_input_line_state_t { + char *input_line; + size_t input_line_index; + size_t input_line_size; + size_t input_line_len; +#if defined (HANDLE_MULTIBYTE) + char *input_property; + size_t input_propsize; +#endif +} sh_input_line_state_t; + +/* Let's try declaring these here. */ +extern char *parser_remaining_input PARAMS((void)); + +extern sh_parser_state_t *save_parser_state PARAMS((sh_parser_state_t *)); +extern void restore_parser_state PARAMS((sh_parser_state_t *)); + +extern sh_input_line_state_t *save_input_line_state PARAMS((sh_input_line_state_t *)); +extern void restore_input_line_state PARAMS((sh_input_line_state_t *)); diff --git a/bash-5.1/sig.c b/bash-5.1/sig.c new file mode 100644 index 0000000..6964d86 --- /dev/null +++ b/bash-5.1/sig.c @@ -0,0 +1,809 @@ +/* sig.c - interface for shell signal handlers and signal initialization. */ + +/* Copyright (C) 1994-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#include +#include + +#include "bashintl.h" + +#include "shell.h" +#include "execute_cmd.h" +#if defined (JOB_CONTROL) +#include "jobs.h" +#endif /* JOB_CONTROL */ +#include "siglist.h" +#include "sig.h" +#include "trap.h" + +#include "builtins/common.h" +#include "builtins/builtext.h" + +#if defined (READLINE) +# include "bashline.h" +# include +#endif + +#if defined (HISTORY) +# include "bashhist.h" +#endif + +extern void initialize_siglist (); + +#if !defined (JOB_CONTROL) +extern void initialize_job_signals PARAMS((void)); +#endif + +/* Non-zero after SIGINT. */ +volatile sig_atomic_t interrupt_state = 0; + +/* Non-zero after SIGWINCH */ +volatile sig_atomic_t sigwinch_received = 0; + +/* Non-zero after SIGTERM */ +volatile sig_atomic_t sigterm_received = 0; + +/* Set to the value of any terminating signal received. */ +volatile sig_atomic_t terminating_signal = 0; + +/* The environment at the top-level R-E loop. We use this in + the case of error return. */ +procenv_t top_level; + +#if defined (JOB_CONTROL) || defined (HAVE_POSIX_SIGNALS) +/* The signal masks that this shell runs with. */ +sigset_t top_level_mask; +#endif /* JOB_CONTROL */ + +/* When non-zero, we throw_to_top_level (). */ +int interrupt_immediately = 0; + +/* When non-zero, we call the terminating signal handler immediately. */ +int terminate_immediately = 0; + +#if defined (SIGWINCH) +static SigHandler *old_winch = (SigHandler *)SIG_DFL; +#endif + +static void initialize_shell_signals PARAMS((void)); + +void +initialize_signals (reinit) + int reinit; +{ + initialize_shell_signals (); + initialize_job_signals (); +#if !defined (HAVE_SYS_SIGLIST) && !defined (HAVE_UNDER_SYS_SIGLIST) && !defined (HAVE_STRSIGNAL) + if (reinit == 0) + initialize_siglist (); +#endif /* !HAVE_SYS_SIGLIST && !HAVE_UNDER_SYS_SIGLIST && !HAVE_STRSIGNAL */ +} + +/* A structure describing a signal that terminates the shell if not + caught. The orig_handler member is present so children can reset + these signals back to their original handlers. */ +struct termsig { + int signum; + SigHandler *orig_handler; + int orig_flags; + int core_dump; +}; + +#define NULL_HANDLER (SigHandler *)SIG_DFL + +/* The list of signals that would terminate the shell if not caught. + We catch them, but just so that we can write the history file, + and so forth. */ +static struct termsig terminating_signals[] = { +#ifdef SIGHUP +{ SIGHUP, NULL_HANDLER, 0 }, +#endif + +#ifdef SIGINT +{ SIGINT, NULL_HANDLER, 0 }, +#endif + +#ifdef SIGILL +{ SIGILL, NULL_HANDLER, 0, 1}, +#endif + +#ifdef SIGTRAP +{ SIGTRAP, NULL_HANDLER, 0, 1 }, +#endif + +#ifdef SIGIOT +{ SIGIOT, NULL_HANDLER, 0, 1 }, +#endif + +#ifdef SIGDANGER +{ SIGDANGER, NULL_HANDLER, 0 }, +#endif + +#ifdef SIGEMT +{ SIGEMT, NULL_HANDLER, 0 }, +#endif + +#ifdef SIGFPE +{ SIGFPE, NULL_HANDLER, 0, 1 }, +#endif + +#ifdef SIGBUS +{ SIGBUS, NULL_HANDLER, 0, 1 }, +#endif + +#ifdef SIGSEGV +{ SIGSEGV, NULL_HANDLER, 0, 1 }, +#endif + +#ifdef SIGSYS +{ SIGSYS, NULL_HANDLER, 0, 1 }, +#endif + +#ifdef SIGPIPE +{ SIGPIPE, NULL_HANDLER, 0 }, +#endif + +#ifdef SIGALRM +{ SIGALRM, NULL_HANDLER, 0 }, +#endif + +#ifdef SIGTERM +{ SIGTERM, NULL_HANDLER, 0 }, +#endif + +/* These don't generate core dumps on anything but Linux, but we're doing + this just for Linux anyway. */ +#ifdef SIGXCPU +{ SIGXCPU, NULL_HANDLER, 0, 1 }, +#endif + +#ifdef SIGXFSZ +{ SIGXFSZ, NULL_HANDLER, 0, 1 }, +#endif + +#ifdef SIGVTALRM +{ SIGVTALRM, NULL_HANDLER, 0 }, +#endif + +#if 0 +#ifdef SIGPROF +{ SIGPROF, NULL_HANDLER, 0 }, +#endif +#endif + +#ifdef SIGLOST +{ SIGLOST, NULL_HANDLER, 0 }, +#endif + +#ifdef SIGUSR1 +{ SIGUSR1, NULL_HANDLER, 0 }, +#endif + +#ifdef SIGUSR2 +{ SIGUSR2, NULL_HANDLER, 0 }, +#endif +}; + +#define TERMSIGS_LENGTH (sizeof (terminating_signals) / sizeof (struct termsig)) + +#define XSIG(x) (terminating_signals[x].signum) +#define XHANDLER(x) (terminating_signals[x].orig_handler) +#define XSAFLAGS(x) (terminating_signals[x].orig_flags) +#define XCOREDUMP(x) (terminating_signals[x].core_dump) + +static int termsigs_initialized = 0; + +/* Initialize signals that will terminate the shell to do some + unwind protection. For non-interactive shells, we only call + this when a trap is defined for EXIT (0) or when trap is run + to display signal dispositions. */ +void +initialize_terminating_signals () +{ + register int i; +#if defined (HAVE_POSIX_SIGNALS) + struct sigaction act, oact; +#endif + + if (termsigs_initialized) + return; + + /* The following code is to avoid an expensive call to + set_signal_handler () for each terminating_signals. Fortunately, + this is possible in Posix. Unfortunately, we have to call signal () + on non-Posix systems for each signal in terminating_signals. */ +#if defined (HAVE_POSIX_SIGNALS) + act.sa_handler = termsig_sighandler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigemptyset (&oact.sa_mask); + for (i = 0; i < TERMSIGS_LENGTH; i++) + sigaddset (&act.sa_mask, XSIG (i)); + for (i = 0; i < TERMSIGS_LENGTH; i++) + { + /* If we've already trapped it, don't do anything. */ + if (signal_is_trapped (XSIG (i))) + continue; + + sigaction (XSIG (i), &act, &oact); + XHANDLER(i) = oact.sa_handler; + XSAFLAGS(i) = oact.sa_flags; + /* Don't do anything with signals that are ignored at shell entry + if the shell is not interactive. */ + /* XXX - should we do this for interactive shells, too? */ + if (interactive_shell == 0 && XHANDLER (i) == SIG_IGN) + { + sigaction (XSIG (i), &oact, &act); + set_signal_hard_ignored (XSIG (i)); + } +#if defined (SIGPROF) && !defined (_MINIX) + if (XSIG (i) == SIGPROF && XHANDLER (i) != SIG_DFL && XHANDLER (i) != SIG_IGN) + sigaction (XSIG (i), &oact, (struct sigaction *)NULL); +#endif /* SIGPROF && !_MINIX */ + } +#else /* !HAVE_POSIX_SIGNALS */ + + for (i = 0; i < TERMSIGS_LENGTH; i++) + { + /* If we've already trapped it, don't do anything. */ + if (signal_is_trapped (XSIG (i))) + continue; + + XHANDLER(i) = signal (XSIG (i), termsig_sighandler); + XSAFLAGS(i) = 0; + /* Don't do anything with signals that are ignored at shell entry + if the shell is not interactive. */ + /* XXX - should we do this for interactive shells, too? */ + if (interactive_shell == 0 && XHANDLER (i) == SIG_IGN) + { + signal (XSIG (i), SIG_IGN); + set_signal_hard_ignored (XSIG (i)); + } +#ifdef SIGPROF + if (XSIG (i) == SIGPROF && XHANDLER (i) != SIG_DFL && XHANDLER (i) != SIG_IGN) + signal (XSIG (i), XHANDLER (i)); +#endif + } + +#endif /* !HAVE_POSIX_SIGNALS */ + + termsigs_initialized = 1; +} + +static void +initialize_shell_signals () +{ + if (interactive) + initialize_terminating_signals (); + +#if defined (JOB_CONTROL) || defined (HAVE_POSIX_SIGNALS) + /* All shells use the signal mask they inherit, and pass it along + to child processes. Children will never block SIGCHLD, though. */ + sigemptyset (&top_level_mask); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &top_level_mask); +# if defined (SIGCHLD) + if (sigismember (&top_level_mask, SIGCHLD)) + { + sigdelset (&top_level_mask, SIGCHLD); + sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL); + } +# endif +#endif /* JOB_CONTROL || HAVE_POSIX_SIGNALS */ + + /* And, some signals that are specifically ignored by the shell. */ + set_signal_handler (SIGQUIT, SIG_IGN); + + if (interactive) + { + set_signal_handler (SIGINT, sigint_sighandler); + get_original_signal (SIGTERM); + set_signal_handler (SIGTERM, SIG_IGN); + set_sigwinch_handler (); + } +} + +void +reset_terminating_signals () +{ + register int i; +#if defined (HAVE_POSIX_SIGNALS) + struct sigaction act; +#endif + + if (termsigs_initialized == 0) + return; + +#if defined (HAVE_POSIX_SIGNALS) + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + for (i = 0; i < TERMSIGS_LENGTH; i++) + { + /* Skip a signal if it's trapped or handled specially, because the + trap code will restore the correct value. */ + if (signal_is_trapped (XSIG (i)) || signal_is_special (XSIG (i))) + continue; + + act.sa_handler = XHANDLER (i); + act.sa_flags = XSAFLAGS (i); + sigaction (XSIG (i), &act, (struct sigaction *) NULL); + } +#else /* !HAVE_POSIX_SIGNALS */ + for (i = 0; i < TERMSIGS_LENGTH; i++) + { + if (signal_is_trapped (XSIG (i)) || signal_is_special (XSIG (i))) + continue; + + signal (XSIG (i), XHANDLER (i)); + } +#endif /* !HAVE_POSIX_SIGNALS */ + + termsigs_initialized = 0; +} +#undef XHANDLER + +/* Run some of the cleanups that should be performed when we run + jump_to_top_level from a builtin command context. XXX - might want to + also call reset_parser here. */ +void +top_level_cleanup () +{ + /* Clean up string parser environment. */ + while (parse_and_execute_level) + parse_and_execute_cleanup (-1); + +#if defined (PROCESS_SUBSTITUTION) + unlink_fifo_list (); +#endif /* PROCESS_SUBSTITUTION */ + + run_unwind_protects (); + loop_level = continuing = breaking = funcnest = 0; + executing_list = comsub_ignore_return = return_catch_flag = wait_intr_flag = 0; +} + +/* What to do when we've been interrupted, and it is safe to handle it. */ +void +throw_to_top_level () +{ + int print_newline = 0; + + if (interrupt_state) + { + if (last_command_exit_value < 128) + last_command_exit_value = 128 + SIGINT; + set_pipestatus_from_exit (last_command_exit_value); + print_newline = 1; + DELINTERRUPT; + } + + if (interrupt_state) + return; + + last_command_exit_signal = (last_command_exit_value > 128) ? + (last_command_exit_value - 128) : 0; + last_command_exit_value |= 128; + set_pipestatus_from_exit (last_command_exit_value); + + /* Run any traps set on SIGINT, mostly for interactive shells */ + if (signal_is_trapped (SIGINT) && signal_is_pending (SIGINT)) + run_interrupt_trap (1); + + /* Clean up string parser environment. */ + while (parse_and_execute_level) + parse_and_execute_cleanup (-1); + + if (running_trap > 0) + { + run_trap_cleanup (running_trap - 1); + running_trap = 0; + } + +#if defined (JOB_CONTROL) + give_terminal_to (shell_pgrp, 0); +#endif /* JOB_CONTROL */ + + /* This needs to stay because jobs.c:make_child() uses it without resetting + the signal mask. */ + restore_sigmask (); + + reset_parser (); + +#if defined (READLINE) + if (interactive) + bashline_reset (); +#endif /* READLINE */ + +#if defined (PROCESS_SUBSTITUTION) + unlink_fifo_list (); +#endif /* PROCESS_SUBSTITUTION */ + + run_unwind_protects (); + loop_level = continuing = breaking = funcnest = 0; + executing_list = comsub_ignore_return = return_catch_flag = wait_intr_flag = 0; + + if (interactive && print_newline) + { + fflush (stdout); + fprintf (stderr, "\n"); + fflush (stderr); + } + + /* An interrupted `wait' command in a script does not exit the script. */ + if (interactive || (interactive_shell && !shell_initialized) || + (print_newline && signal_is_trapped (SIGINT))) + jump_to_top_level (DISCARD); + else + jump_to_top_level (EXITPROG); +} + +/* This is just here to isolate the longjmp calls. */ +void +jump_to_top_level (value) + int value; +{ + sh_longjmp (top_level, value); +} + +void +restore_sigmask () +{ +#if defined (JOB_CONTROL) || defined (HAVE_POSIX_SIGNALS) + sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL); +#endif +} + +sighandler +termsig_sighandler (sig) + int sig; +{ + /* If we get called twice with the same signal before handling it, + terminate right away. */ + if ( +#ifdef SIGHUP + sig != SIGHUP && +#endif +#ifdef SIGINT + sig != SIGINT && +#endif +#ifdef SIGDANGER + sig != SIGDANGER && +#endif +#ifdef SIGPIPE + sig != SIGPIPE && +#endif +#ifdef SIGALRM + sig != SIGALRM && +#endif +#ifdef SIGTERM + sig != SIGTERM && +#endif +#ifdef SIGXCPU + sig != SIGXCPU && +#endif +#ifdef SIGXFSZ + sig != SIGXFSZ && +#endif +#ifdef SIGVTALRM + sig != SIGVTALRM && +#endif +#ifdef SIGLOST + sig != SIGLOST && +#endif +#ifdef SIGUSR1 + sig != SIGUSR1 && +#endif +#ifdef SIGUSR2 + sig != SIGUSR2 && +#endif + sig == terminating_signal) + terminate_immediately = 1; + + terminating_signal = sig; + + if (terminate_immediately) + { +#if defined (HISTORY) + /* XXX - will inhibit history file being written */ +# if defined (READLINE) + if (interactive_shell == 0 || interactive == 0 || (sig != SIGHUP && sig != SIGTERM) || no_line_editing || (RL_ISSTATE (RL_STATE_READCMD) == 0)) +# endif + history_lines_this_session = 0; +#endif + terminate_immediately = 0; + termsig_handler (sig); + } + +#if defined (READLINE) + /* Set the event hook so readline will call it after the signal handlers + finish executing, so if this interrupted character input we can get + quick response. If readline is active or has modified the terminal we + need to set this no matter what the signal is, though the check for + RL_STATE_TERMPREPPED is possibly redundant. */ + if (RL_ISSTATE (RL_STATE_SIGHANDLER) || RL_ISSTATE (RL_STATE_TERMPREPPED)) + bashline_set_event_hook (); +#endif + + SIGRETURN (0); +} + +void +termsig_handler (sig) + int sig; +{ + static int handling_termsig = 0; + int i, core; + sigset_t mask; + + /* Simple semaphore to keep this function from being executed multiple + times. Since we no longer are running as a signal handler, we don't + block multiple occurrences of the terminating signals while running. */ + if (handling_termsig) + return; + handling_termsig = 1; + terminating_signal = 0; /* keep macro from re-testing true. */ + + /* I don't believe this condition ever tests true. */ + if (sig == SIGINT && signal_is_trapped (SIGINT)) + run_interrupt_trap (0); + +#if defined (HISTORY) + /* If we don't do something like this, the history will not be saved when + an interactive shell is running in a terminal window that gets closed + with the `close' button. We can't test for RL_STATE_READCMD because + readline no longer handles SIGTERM synchronously. */ + if (interactive_shell && interactive && (sig == SIGHUP || sig == SIGTERM) && remember_on_history) + maybe_save_shell_history (); +#endif /* HISTORY */ + + if (this_shell_builtin == read_builtin) + read_tty_cleanup (); + +#if defined (JOB_CONTROL) + if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)))) + hangup_all_jobs (); + + if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0) + end_job_control (); +#endif /* JOB_CONTROL */ + +#if defined (PROCESS_SUBSTITUTION) + unlink_all_fifos (); +# if defined (JOB_CONTROL) + procsub_clear (); +# endif +#endif /* PROCESS_SUBSTITUTION */ + + /* Reset execution context */ + loop_level = continuing = breaking = funcnest = 0; + executing_list = comsub_ignore_return = return_catch_flag = wait_intr_flag = 0; + + run_exit_trap (); /* XXX - run exit trap possibly in signal context? */ + + /* We don't change the set of blocked signals. If a user starts the shell + with a terminating signal blocked, we won't get here (and if by some + magic chance we do, we'll exit below). What we do is to restore the + top-level signal mask, in case this is called from a terminating signal + handler context, in which case the signal is blocked. */ + restore_sigmask (); + + set_signal_handler (sig, SIG_DFL); + + kill (getpid (), sig); + + if (dollar_dollar_pid != 1) + exit (128+sig); /* just in case the kill fails? */ + + /* We get here only under extraordinary circumstances. */ + + /* We are PID 1, and the kill above failed to kill the process. We assume + this means that we are running as an init process in a pid namespace + on Linux. In this case, we can't send ourselves a fatal signal, so we + determine whether or not we should have generated a core dump with the + kill call and attempt to trick the kernel into generating one if + necessary. */ + sigprocmask (SIG_SETMASK, (sigset_t *)NULL, &mask); + for (i = core = 0; i < TERMSIGS_LENGTH; i++) + { + set_signal_handler (XSIG (i), SIG_DFL); + sigdelset (&mask, XSIG (i)); + if (sig == XSIG (i)) + core = XCOREDUMP (i); + } + sigprocmask (SIG_SETMASK, &mask, (sigset_t *)NULL); + + if (core) + *((volatile unsigned long *) NULL) = 0xdead0000 + sig; /* SIGSEGV */ + + exit (128+sig); +} +#undef XSIG + +/* What we really do when SIGINT occurs. */ +sighandler +sigint_sighandler (sig) + int sig; +{ +#if defined (MUST_REINSTALL_SIGHANDLERS) + signal (sig, sigint_sighandler); +#endif + + /* interrupt_state needs to be set for the stack of interrupts to work + right. Should it be set unconditionally? */ + if (interrupt_state == 0) + ADDINTERRUPT; + + /* We will get here in interactive shells with job control active; allow + an interactive wait to be interrupted. wait_intr_flag is only set during + the execution of the wait builtin and when wait_intr_buf is valid. */ + if (wait_intr_flag) + { + last_command_exit_value = 128 + sig; + set_pipestatus_from_exit (last_command_exit_value); + wait_signal_received = sig; + SIGRETURN (0); + } + + /* In interactive shells, we will get here instead of trap_handler() so + note that we have a trap pending. */ + if (signal_is_trapped (sig)) + set_trap_state (sig); + + /* This is no longer used, but this code block remains as a reminder. */ + if (interrupt_immediately) + { + interrupt_immediately = 0; + set_exit_status (128 + sig); + throw_to_top_level (); + } +#if defined (READLINE) + /* Set the event hook so readline will call it after the signal handlers + finish executing, so if this interrupted character input we can get + quick response. */ + else if (RL_ISSTATE (RL_STATE_SIGHANDLER)) + bashline_set_event_hook (); +#endif + + SIGRETURN (0); +} + +#if defined (SIGWINCH) +sighandler +sigwinch_sighandler (sig) + int sig; +{ +#if defined (MUST_REINSTALL_SIGHANDLERS) + set_signal_handler (SIGWINCH, sigwinch_sighandler); +#endif /* MUST_REINSTALL_SIGHANDLERS */ + sigwinch_received = 1; + SIGRETURN (0); +} +#endif /* SIGWINCH */ + +void +set_sigwinch_handler () +{ +#if defined (SIGWINCH) + old_winch = set_signal_handler (SIGWINCH, sigwinch_sighandler); +#endif +} + +void +unset_sigwinch_handler () +{ +#if defined (SIGWINCH) + set_signal_handler (SIGWINCH, old_winch); +#endif +} + +sighandler +sigterm_sighandler (sig) + int sig; +{ + sigterm_received = 1; /* XXX - counter? */ + SIGRETURN (0); +} + +/* Signal functions used by the rest of the code. */ +#if !defined (HAVE_POSIX_SIGNALS) + +/* Perform OPERATION on NEWSET, perhaps leaving information in OLDSET. */ +sigprocmask (operation, newset, oldset) + int operation, *newset, *oldset; +{ + int old, new; + + if (newset) + new = *newset; + else + new = 0; + + switch (operation) + { + case SIG_BLOCK: + old = sigblock (new); + break; + + case SIG_SETMASK: + old = sigsetmask (new); + break; + + default: + internal_error (_("sigprocmask: %d: invalid operation"), operation); + } + + if (oldset) + *oldset = old; +} + +#else + +#if !defined (SA_INTERRUPT) +# define SA_INTERRUPT 0 +#endif + +#if !defined (SA_RESTART) +# define SA_RESTART 0 +#endif + +SigHandler * +set_signal_handler (sig, handler) + int sig; + SigHandler *handler; +{ + struct sigaction act, oact; + + act.sa_handler = handler; + act.sa_flags = 0; + + /* XXX - bash-4.2 */ + /* We don't want a child death to interrupt interruptible system calls, even + if we take the time to reap children */ +#if defined (SIGCHLD) + if (sig == SIGCHLD) + act.sa_flags |= SA_RESTART; /* XXX */ +#endif + /* Let's see if we can keep SIGWINCH from interrupting interruptible system + calls, like open(2)/read(2)/write(2) */ +#if defined (SIGWINCH) + if (sig == SIGWINCH) + act.sa_flags |= SA_RESTART; /* XXX */ +#endif + /* If we're installing a SIGTERM handler for interactive shells, we want + it to be as close to SIG_IGN as possible. */ + if (sig == SIGTERM && handler == sigterm_sighandler) + act.sa_flags |= SA_RESTART; /* XXX */ + + sigemptyset (&act.sa_mask); + sigemptyset (&oact.sa_mask); + if (sigaction (sig, &act, &oact) == 0) + return (oact.sa_handler); + else + return (SIG_DFL); +} +#endif /* HAVE_POSIX_SIGNALS */ diff --git a/bash-5.1/sig.h b/bash-5.1/sig.h new file mode 100644 index 0000000..a564e3c --- /dev/null +++ b/bash-5.1/sig.h @@ -0,0 +1,140 @@ +/* sig.h -- header file for signal handler definitions. */ + +/* Copyright (C) 1994-2013 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* Make sure that this is included *after* config.h! */ + +#if !defined (_SIG_H_) +# define _SIG_H_ + +#include "stdc.h" + +#include /* for sig_atomic_t */ + +#if !defined (SIGABRT) && defined (SIGIOT) +# define SIGABRT SIGIOT +#endif + +#define sighandler RETSIGTYPE +typedef RETSIGTYPE SigHandler PARAMS((int)); + +#if defined (VOID_SIGHANDLER) +# define SIGRETURN(n) return +#else +# define SIGRETURN(n) return(n) +#endif /* !VOID_SIGHANDLER */ + +/* Here is a definition for set_signal_handler () which simply expands to + a call to signal () for non-Posix systems. The code for set_signal_handler + in the Posix case resides in general.c. */ +#if !defined (HAVE_POSIX_SIGNALS) +# define set_signal_handler(sig, handler) (SigHandler *)signal (sig, handler) +#else +extern SigHandler *set_signal_handler PARAMS((int, SigHandler *)); /* in sig.c */ +#endif /* _POSIX_VERSION */ + +#if !defined (SIGCHLD) && defined (SIGCLD) +# define SIGCHLD SIGCLD +#endif + +#if !defined (HAVE_POSIX_SIGNALS) && !defined (sigmask) +# define sigmask(x) (1 << ((x)-1)) +#endif /* !HAVE_POSIX_SIGNALS && !sigmask */ + +#if !defined (HAVE_POSIX_SIGNALS) +# if !defined (SIG_BLOCK) +# define SIG_BLOCK 2 +# define SIG_SETMASK 3 +# endif /* SIG_BLOCK */ + +/* sigset_t defined in config.h */ + +/* Make sure there is nothing inside the signal set. */ +# define sigemptyset(set) (*(set) = 0) + +/* Initialize the signal set to hold all signals. */ +# define sigfillset(set) (*set) = sigmask (NSIG) - 1 + +/* Add SIG to the contents of SET. */ +# define sigaddset(set, sig) *(set) |= sigmask (sig) + +/* Delete SIG from signal set SET. */ +# define sigdelset(set, sig) *(set) &= ~sigmask (sig) + +/* Is SIG a member of the signal set SET? */ +# define sigismember(set, sig) ((*(set) & sigmask (sig)) != 0) + +/* Suspend the process until the reception of one of the signals + not present in SET. */ +# define sigsuspend(set) sigpause (*(set)) +#endif /* !HAVE_POSIX_SIGNALS */ + +/* These definitions are used both in POSIX and non-POSIX implementations. */ + +#define BLOCK_SIGNAL(sig, nvar, ovar) \ +do { \ + sigemptyset (&nvar); \ + sigaddset (&nvar, sig); \ + sigemptyset (&ovar); \ + sigprocmask (SIG_BLOCK, &nvar, &ovar); \ +} while (0) + +#define UNBLOCK_SIGNAL(ovar) sigprocmask (SIG_SETMASK, &ovar, (sigset_t *) NULL) + +#if defined (HAVE_POSIX_SIGNALS) +# define BLOCK_CHILD(nvar, ovar) BLOCK_SIGNAL (SIGCHLD, nvar, ovar) +# define UNBLOCK_CHILD(ovar) UNBLOCK_SIGNAL(ovar) +#else /* !HAVE_POSIX_SIGNALS */ +# define BLOCK_CHILD(nvar, ovar) ovar = sigblock (sigmask (SIGCHLD)) +# define UNBLOCK_CHILD(ovar) sigsetmask (ovar) +#endif /* !HAVE_POSIX_SIGNALS */ + +/* Extern variables */ +extern volatile sig_atomic_t sigwinch_received; +extern volatile sig_atomic_t sigterm_received; + +extern int interrupt_immediately; /* no longer used */ +extern int terminate_immediately; + +/* Functions from sig.c. */ +extern sighandler termsig_sighandler PARAMS((int)); +extern void termsig_handler PARAMS((int)); +extern sighandler sigint_sighandler PARAMS((int)); +extern void initialize_signals PARAMS((int)); +extern void initialize_terminating_signals PARAMS((void)); +extern void reset_terminating_signals PARAMS((void)); +extern void top_level_cleanup PARAMS((void)); +extern void throw_to_top_level PARAMS((void)); +extern void jump_to_top_level PARAMS((int)) __attribute__((__noreturn__)); +extern void restore_sigmask PARAMS((void)); + +extern sighandler sigwinch_sighandler PARAMS((int)); +extern void set_sigwinch_handler PARAMS((void)); +extern void unset_sigwinch_handler PARAMS((void)); + +extern sighandler sigterm_sighandler PARAMS((int)); + +/* Functions defined in trap.c. */ +extern SigHandler *set_sigint_handler PARAMS((void)); +extern SigHandler *trap_to_sighandler PARAMS((int)); +extern sighandler trap_handler PARAMS((int)); + +extern int block_trapped_signals PARAMS((sigset_t *, sigset_t *)); +extern int unblock_trapped_signals PARAMS((sigset_t *)); +#endif /* _SIG_H_ */ diff --git a/bash-5.1/siglist.c b/bash-5.1/siglist.c new file mode 100644 index 0000000..d8361dd --- /dev/null +++ b/bash-5.1/siglist.c @@ -0,0 +1,228 @@ +/* siglist.c -- signal list for those machines that don't have one. */ + +/* Copyright (C) 1989-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#if !defined (HAVE_SYS_SIGLIST) && !defined (HAVE_UNDER_SYS_SIGLIST) && !defined (HAVE_STRSIGNAL) + +#include +#include "general.h" +#include + +#include "siglist.h" + +#if !defined (NSIG) +# include "trap.h" +#endif + +#include "bashintl.h" + +char *sys_siglist[NSIG]; + +void +initialize_siglist () +{ + register int i; + + for (i = 0; i < NSIG; i++) + sys_siglist[i] = (char *)0x0; + + sys_siglist[0] = _("Bogus signal"); + +#if defined (SIGHUP) + sys_siglist[SIGHUP] = _("Hangup"); +#endif + +#if defined (SIGINT) + sys_siglist[SIGINT] = _("Interrupt"); +#endif + +#if defined (SIGQUIT) + sys_siglist[SIGQUIT] = _("Quit"); +#endif + +#if defined (SIGILL) + sys_siglist[SIGILL] = _("Illegal instruction"); +#endif + +#if defined (SIGTRAP) + sys_siglist[SIGTRAP] = _("BPT trace/trap"); +#endif + +#if defined (SIGIOT) && !defined (SIGABRT) +#define SIGABRT SIGIOT +#endif + +#if defined (SIGABRT) + sys_siglist[SIGABRT] = _("ABORT instruction"); +#endif + +#if defined (SIGEMT) + sys_siglist[SIGEMT] = _("EMT instruction"); +#endif + +#if defined (SIGFPE) + sys_siglist[SIGFPE] = _("Floating point exception"); +#endif + +#if defined (SIGKILL) + sys_siglist[SIGKILL] = _("Killed"); +#endif + +#if defined (SIGBUS) + sys_siglist[SIGBUS] = _("Bus error"); +#endif + +#if defined (SIGSEGV) + sys_siglist[SIGSEGV] = _("Segmentation fault"); +#endif + +#if defined (SIGSYS) + sys_siglist[SIGSYS] = _("Bad system call"); +#endif + +#if defined (SIGPIPE) + sys_siglist[SIGPIPE] = _("Broken pipe"); +#endif + +#if defined (SIGALRM) + sys_siglist[SIGALRM] = _("Alarm clock"); +#endif + +#if defined (SIGTERM) + sys_siglist[SIGTERM] = _("Terminated"); +#endif + +#if defined (SIGURG) + sys_siglist[SIGURG] = _("Urgent IO condition"); +#endif + +#if defined (SIGSTOP) + sys_siglist[SIGSTOP] = _("Stopped (signal)"); +#endif + +#if defined (SIGTSTP) + sys_siglist[SIGTSTP] = _("Stopped"); +#endif + +#if defined (SIGCONT) + sys_siglist[SIGCONT] = _("Continue"); +#endif + +#if !defined (SIGCHLD) && defined (SIGCLD) +#define SIGCHLD SIGCLD +#endif + +#if defined (SIGCHLD) + sys_siglist[SIGCHLD] = _("Child death or stop"); +#endif + +#if defined (SIGTTIN) + sys_siglist[SIGTTIN] = _("Stopped (tty input)"); +#endif + +#if defined (SIGTTOU) + sys_siglist[SIGTTOU] = _("Stopped (tty output)"); +#endif + +#if defined (SIGIO) + sys_siglist[SIGIO] = _("I/O ready"); +#endif + +#if defined (SIGXCPU) + sys_siglist[SIGXCPU] = _("CPU limit"); +#endif + +#if defined (SIGXFSZ) + sys_siglist[SIGXFSZ] = _("File limit"); +#endif + +#if defined (SIGVTALRM) + sys_siglist[SIGVTALRM] = _("Alarm (virtual)"); +#endif + +#if defined (SIGPROF) + sys_siglist[SIGPROF] = _("Alarm (profile)"); +#endif + +#if defined (SIGWINCH) + sys_siglist[SIGWINCH] = _("Window changed"); +#endif + +#if defined (SIGLOST) + sys_siglist[SIGLOST] = _("Record lock"); +#endif + +#if defined (SIGUSR1) + sys_siglist[SIGUSR1] = _("User signal 1"); +#endif + +#if defined (SIGUSR2) + sys_siglist[SIGUSR2] = _("User signal 2"); +#endif + +#if defined (SIGMSG) + sys_siglist[SIGMSG] = _("HFT input data pending"); +#endif + +#if defined (SIGPWR) + sys_siglist[SIGPWR] = _("power failure imminent"); +#endif + +#if defined (SIGDANGER) + sys_siglist[SIGDANGER] = _("system crash imminent"); +#endif + +#if defined (SIGMIGRATE) + sys_siglist[SIGMIGRATE] = _("migrate process to another CPU"); +#endif + +#if defined (SIGPRE) + sys_siglist[SIGPRE] = _("programming error"); +#endif + +#if defined (SIGGRANT) + sys_siglist[SIGGRANT] = _("HFT monitor mode granted"); +#endif + +#if defined (SIGRETRACT) + sys_siglist[SIGRETRACT] = _("HFT monitor mode retracted"); +#endif + +#if defined (SIGSOUND) + sys_siglist[SIGSOUND] = _("HFT sound sequence has completed"); +#endif + +#if defined (SIGINFO) + sys_siglist[SIGINFO] = _("Information request"); +#endif + + for (i = 0; i < NSIG; i++) + { + if (!sys_siglist[i]) + { + sys_siglist[i] = + (char *)xmalloc (INT_STRLEN_BOUND (int) + 1 + strlen (_("Unknown Signal #%d"))); + + sprintf (sys_siglist[i], _("Unknown Signal #%d"), i); + } + } +} +#endif /* !HAVE_SYS_SIGLIST && !HAVE_UNDER_SYS_SIGLIST && !HAVE_STRSIGNAL */ diff --git a/bash-5.1/siglist.h b/bash-5.1/siglist.h new file mode 100644 index 0000000..321c20c --- /dev/null +++ b/bash-5.1/siglist.h @@ -0,0 +1,44 @@ +/* siglist.h -- encapsulate various definitions for sys_siglist */ + +/* Copyright (C) 1993, 2001, 2005, 2008-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_SIGLIST_H_) +#define _SIGLIST_H_ + +#if !defined (SYS_SIGLIST_DECLARED) && !defined (HAVE_STRSIGNAL) + +#if defined (HAVE_UNDER_SYS_SIGLIST) && !defined (HAVE_SYS_SIGLIST) && !defined (sys_siglist) +# define sys_siglist _sys_siglist +#endif /* HAVE_UNDER_SYS_SIGLIST && !HAVE_SYS_SIGLIST && !sys_siglist */ + +#if !defined (sys_siglist) +extern char *sys_siglist[]; +#endif /* !sys_siglist */ + +#endif /* !SYS_SIGLIST_DECLARED && !HAVE_STRSIGNAL */ + +#if !defined (strsignal) && !defined (HAVE_STRSIGNAL) +# define strsignal(sig) (char *)sys_siglist[sig] +#endif /* !strsignal && !HAVE_STRSIGNAL */ + +#if !defined (strsignal) && !HAVE_DECL_STRSIGNAL +extern char *strsignal PARAMS((int)); +#endif + +#endif /* _SIGLIST_H */ diff --git a/bash-5.1/stringlib.c b/bash-5.1/stringlib.c new file mode 100644 index 0000000..745e536 --- /dev/null +++ b/bash-5.1/stringlib.c @@ -0,0 +1,287 @@ +/* stringlib.c - Miscellaneous string functions. */ + +/* Copyright (C) 1996-2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" +#include +#include "chartypes.h" + +#include "shell.h" +#include "pathexp.h" + +#include + +#if defined (EXTENDED_GLOB) +# include +#endif + +/* **************************************************************** */ +/* */ +/* Functions to manage arrays of strings */ +/* */ +/* **************************************************************** */ + +/* Find STRING in ALIST, a list of string key/int value pairs. If FLAGS + is 1, STRING is treated as a pattern and matched using strmatch. */ +int +find_string_in_alist (string, alist, flags) + char *string; + STRING_INT_ALIST *alist; + int flags; +{ + register int i; + int r; + + for (i = r = 0; alist[i].word; i++) + { +#if defined (EXTENDED_GLOB) + if (flags) + r = strmatch (alist[i].word, string, FNM_EXTMATCH) != FNM_NOMATCH; + else +#endif + r = STREQ (string, alist[i].word); + + if (r) + return (alist[i].token); + } + return -1; +} + +/* Find TOKEN in ALIST, a list of string/int value pairs. Return the + corresponding string. Allocates memory for the returned + string. FLAGS is currently ignored, but reserved. */ +char * +find_token_in_alist (token, alist, flags) + int token; + STRING_INT_ALIST *alist; + int flags; +{ + register int i; + + for (i = 0; alist[i].word; i++) + { + if (alist[i].token == token) + return (savestring (alist[i].word)); + } + return ((char *)NULL); +} + +int +find_index_in_alist (string, alist, flags) + char *string; + STRING_INT_ALIST *alist; + int flags; +{ + register int i; + int r; + + for (i = r = 0; alist[i].word; i++) + { +#if defined (EXTENDED_GLOB) + if (flags) + r = strmatch (alist[i].word, string, FNM_EXTMATCH) != FNM_NOMATCH; + else +#endif + r = STREQ (string, alist[i].word); + + if (r) + return (i); + } + + return -1; +} + +/* **************************************************************** */ +/* */ +/* String Management Functions */ +/* */ +/* **************************************************************** */ + +/* Cons a new string from STRING starting at START and ending at END, + not including END. */ +char * +substring (string, start, end) + const char *string; + int start, end; +{ + register int len; + register char *result; + + len = end - start; + result = (char *)xmalloc (len + 1); + memcpy (result, string + start, len); + result[len] = '\0'; + return (result); +} + +/* Replace occurrences of PAT with REP in STRING. If GLOBAL is non-zero, + replace all occurrences, otherwise replace only the first. + This returns a new string; the caller should free it. */ +char * +strsub (string, pat, rep, global) + char *string, *pat, *rep; + int global; +{ + int patlen, replen, templen, tempsize, repl, i; + char *temp, *r; + + patlen = strlen (pat); + replen = strlen (rep); + for (temp = (char *)NULL, i = templen = tempsize = 0, repl = 1; string[i]; ) + { + if (repl && STREQN (string + i, pat, patlen)) + { + if (replen) + RESIZE_MALLOCED_BUFFER (temp, templen, replen, tempsize, (replen * 2)); + + for (r = rep; *r; ) /* can rep == "" */ + temp[templen++] = *r++; + + i += patlen ? patlen : 1; /* avoid infinite recursion */ + repl = global != 0; + } + else + { + RESIZE_MALLOCED_BUFFER (temp, templen, 1, tempsize, 16); + temp[templen++] = string[i++]; + } + } + if (temp) + temp[templen] = 0; + else + temp = savestring (string); + return (temp); +} + +/* Replace all instances of C in STRING with TEXT. TEXT may be empty or + NULL. If DO_GLOB is non-zero, we quote the replacement text for + globbing. Backslash may be used to quote C. */ +char * +strcreplace (string, c, text, do_glob) + char *string; + int c; + const char *text; + int do_glob; +{ + char *ret, *p, *r, *t; + int len, rlen, ind, tlen; + + len = STRLEN (text); + rlen = len + strlen (string) + 2; + ret = (char *)xmalloc (rlen); + + for (p = string, r = ret; p && *p; ) + { + if (*p == c) + { + if (len) + { + ind = r - ret; + if (do_glob && (glob_pattern_p (text) || strchr (text, '\\'))) + { + t = quote_globbing_chars (text); + tlen = strlen (t); + RESIZE_MALLOCED_BUFFER (ret, ind, tlen, rlen, rlen); + r = ret + ind; /* in case reallocated */ + strcpy (r, t); + r += tlen; + free (t); + } + else + { + RESIZE_MALLOCED_BUFFER (ret, ind, len, rlen, rlen); + r = ret + ind; /* in case reallocated */ + strcpy (r, text); + r += len; + } + } + p++; + continue; + } + + if (*p == '\\' && p[1] == c) + p++; + + ind = r - ret; + RESIZE_MALLOCED_BUFFER (ret, ind, 2, rlen, rlen); + r = ret + ind; /* in case reallocated */ + *r++ = *p++; + } + *r = '\0'; + + return ret; +} + +#ifdef INCLUDE_UNUSED +/* Remove all leading whitespace from STRING. This includes + newlines. STRING should be terminated with a zero. */ +void +strip_leading (string) + char *string; +{ + char *start = string; + + while (*string && (whitespace (*string) || *string == '\n')) + string++; + + if (string != start) + { + int len = strlen (string); + FASTCOPY (string, start, len); + start[len] = '\0'; + } +} +#endif + +/* Remove all trailing whitespace from STRING. This includes + newlines. If NEWLINES_ONLY is non-zero, only trailing newlines + are removed. STRING should be terminated with a zero. */ +void +strip_trailing (string, len, newlines_only) + char *string; + int len; + int newlines_only; +{ + while (len >= 0) + { + if ((newlines_only && string[len] == '\n') || + (!newlines_only && whitespace (string[len]))) + len--; + else + break; + } + string[len + 1] = '\0'; +} + +/* A wrapper for bcopy that can be prototyped in general.h */ +void +xbcopy (s, d, n) + char *s, *d; + int n; +{ + FASTCOPY (s, d, n); +} diff --git a/bash-5.1/subst.c b/bash-5.1/subst.c new file mode 100644 index 0000000..bac3c75 --- /dev/null +++ b/bash-5.1/subst.c @@ -0,0 +1,12072 @@ +/* subst.c -- The part of the shell that does parameter, command, arithmetic, + and globbing substitutions. */ + +/* ``Have a little faith, there's magic in the night. You ain't a + beauty, but, hey, you're alright.'' */ + +/* Copyright (C) 1987-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "bashtypes.h" +#include +#include "chartypes.h" +#if defined (HAVE_PWD_H) +# include +#endif +#include +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#define NEED_FPURGE_DECL + +#include "bashansi.h" +#include "posixstat.h" +#include "bashintl.h" + +#include "shell.h" +#include "parser.h" +#include "flags.h" +#include "jobs.h" +#include "execute_cmd.h" +#include "filecntl.h" +#include "trap.h" +#include "pathexp.h" +#include "mailcheck.h" + +#include "shmbutil.h" +#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) +# include /* mbschr */ +#endif +#include "typemax.h" + +#include "builtins/getopt.h" +#include "builtins/common.h" + +#include "builtins/builtext.h" + +#include +#include + +#if !defined (errno) +extern int errno; +#endif /* !errno */ + +/* The size that strings change by. */ +#define DEFAULT_INITIAL_ARRAY_SIZE 112 +#define DEFAULT_ARRAY_SIZE 128 + +/* Variable types. */ +#define VT_VARIABLE 0 +#define VT_POSPARMS 1 +#define VT_ARRAYVAR 2 +#define VT_ARRAYMEMBER 3 +#define VT_ASSOCVAR 4 + +#define VT_STARSUB 128 /* $* or ${array[*]} -- used to split */ + +/* Flags for quoted_strchr */ +#define ST_BACKSL 0x01 +#define ST_CTLESC 0x02 +#define ST_SQUOTE 0x04 /* unused yet */ +#define ST_DQUOTE 0x08 /* unused yet */ + +/* These defs make it easier to use the editor. */ +#define LBRACE '{' +#define RBRACE '}' +#define LPAREN '(' +#define RPAREN ')' +#define LBRACK '[' +#define RBRACK ']' + +#if defined (HANDLE_MULTIBYTE) +#define WLPAREN L'(' +#define WRPAREN L')' +#endif + +#define DOLLAR_AT_STAR(c) ((c) == '@' || (c) == '*') +#define STR_DOLLAR_AT_STAR(s) (DOLLAR_AT_STAR ((s)[0]) && (s)[1] == '\0') + +/* Evaluates to 1 if C is one of the shell's special parameters whose length + can be taken, but is also one of the special expansion characters. */ +#define VALID_SPECIAL_LENGTH_PARAM(c) \ + ((c) == '-' || (c) == '?' || (c) == '#' || (c) == '@') + +/* Evaluates to 1 if C is one of the shell's special parameters for which an + indirect variable reference may be made. */ +#define VALID_INDIR_PARAM(c) \ + ((posixly_correct == 0 && (c) == '#') || (posixly_correct == 0 && (c) == '?') || (c) == '@' || (c) == '*') + +/* Evaluates to 1 if C is one of the OP characters that follows the parameter + in ${parameter[:]OPword}. */ +#define VALID_PARAM_EXPAND_CHAR(c) (sh_syntaxtab[(unsigned char)c] & CSUBSTOP) + +/* Evaluates to 1 if this is one of the shell's special variables. */ +#define SPECIAL_VAR(name, wi) \ + (*name && ((DIGIT (*name) && all_digits (name)) || \ + (name[1] == '\0' && (sh_syntaxtab[(unsigned char)*name] & CSPECVAR)) || \ + (wi && name[2] == '\0' && VALID_INDIR_PARAM (name[1])))) + +/* This can be used by all of the *_extract_* functions that have a similar + structure. It can't just be wrapped in a do...while(0) loop because of + the embedded `break'. The dangling else accommodates a trailing semicolon; + we could also put in a do ; while (0) */ + +#define CHECK_STRING_OVERRUN(oind, ind, len, ch) \ + if (ind >= len) \ + { \ + oind = len; \ + ch = 0; \ + break; \ + } \ + else \ + +/* An expansion function that takes a string and a quoted flag and returns + a WORD_LIST *. Used as the type of the third argument to + expand_string_if_necessary(). */ +typedef WORD_LIST *EXPFUNC PARAMS((char *, int)); + +/* Process ID of the last command executed within command substitution. */ +pid_t last_command_subst_pid = NO_PID; +pid_t current_command_subst_pid = NO_PID; + +/* Variables used to keep track of the characters in IFS. */ +SHELL_VAR *ifs_var; +char *ifs_value; +unsigned char ifs_cmap[UCHAR_MAX + 1]; +int ifs_is_set, ifs_is_null; + +#if defined (HANDLE_MULTIBYTE) +unsigned char ifs_firstc[MB_LEN_MAX]; +size_t ifs_firstc_len; +#else +unsigned char ifs_firstc; +#endif + +/* If non-zero, command substitution inherits the value of errexit option */ +int inherit_errexit = 0; + +/* Sentinel to tell when we are performing variable assignments preceding a + command name and putting them into the environment. Used to make sure + we use the temporary environment when looking up variable values. */ +int assigning_in_environment; + +/* Used to hold a list of variable assignments preceding a command. Global + so the SIGCHLD handler in jobs.c can unwind-protect it when it runs a + SIGCHLD trap and so it can be saved and restored by the trap handlers. */ +WORD_LIST *subst_assign_varlist = (WORD_LIST *)NULL; + +/* Tell the expansion functions to not longjmp back to top_level on fatal + errors. Enabled when doing completion and prompt string expansion. */ +int no_longjmp_on_fatal_error = 0; + +/* Non-zero means to allow unmatched globbed filenames to expand to + a null file. */ +int allow_null_glob_expansion; + +/* Non-zero means to throw an error when globbing fails to match anything. */ +int fail_glob_expansion; + +/* Extern functions and variables from different files. */ +extern struct fd_bitmap *current_fds_to_close; +extern int wordexp_only; + +#if defined (JOB_CONTROL) && defined (PROCESS_SUBSTITUTION) +extern PROCESS *last_procsub_child; +#endif + +#if !defined (HAVE_WCSDUP) && defined (HANDLE_MULTIBYTE) +extern wchar_t *wcsdup PARAMS((const wchar_t *)); +#endif + +#if 0 +/* Variables to keep track of which words in an expanded word list (the + output of expand_word_list_internal) are the result of globbing + expansions. GLOB_ARGV_FLAGS is used by execute_cmd.c. + (CURRENTLY UNUSED). */ +char *glob_argv_flags; +static int glob_argv_flags_size; +#endif + +static WORD_LIST *cached_quoted_dollar_at = 0; + +/* Distinguished error values to return from expansion functions */ +static WORD_LIST expand_word_error, expand_word_fatal; +static WORD_DESC expand_wdesc_error, expand_wdesc_fatal; +static char expand_param_error, expand_param_fatal, expand_param_unset; +static char extract_string_error, extract_string_fatal; + +/* Set by expand_word_unsplit and several of the expand_string_XXX functions; + used to inhibit splitting and re-joining $* on $IFS, primarily when doing + assignment statements. The idea is that if we're in a context where this + is set, we're not going to be performing word splitting, so we use the same + rules to expand $* as we would if it appeared within double quotes. */ +static int expand_no_split_dollar_star = 0; + +/* A WORD_LIST of words to be expanded by expand_word_list_internal, + without any leading variable assignments. */ +static WORD_LIST *garglist = (WORD_LIST *)NULL; + +static char *quoted_substring PARAMS((char *, int, int)); +static int quoted_strlen PARAMS((char *)); +static char *quoted_strchr PARAMS((char *, int, int)); + +static char *expand_string_if_necessary PARAMS((char *, int, EXPFUNC *)); +static inline char *expand_string_to_string_internal PARAMS((char *, int, EXPFUNC *)); +static WORD_LIST *call_expand_word_internal PARAMS((WORD_DESC *, int, int, int *, int *)); +static WORD_LIST *expand_string_internal PARAMS((char *, int)); +static WORD_LIST *expand_string_leave_quoted PARAMS((char *, int)); +static WORD_LIST *expand_string_for_rhs PARAMS((char *, int, int, int, int *, int *)); +static WORD_LIST *expand_string_for_pat PARAMS((char *, int, int *, int *)); + +static char *quote_escapes_internal PARAMS((const char *, int)); + +static WORD_LIST *list_quote_escapes PARAMS((WORD_LIST *)); +static WORD_LIST *list_dequote_escapes PARAMS((WORD_LIST *)); + +static char *make_quoted_char PARAMS((int)); +static WORD_LIST *quote_list PARAMS((WORD_LIST *)); + +static int unquoted_substring PARAMS((char *, char *)); +static int unquoted_member PARAMS((int, char *)); + +#if defined (ARRAY_VARS) +static SHELL_VAR *do_compound_assignment PARAMS((char *, char *, int)); +#endif +static int do_assignment_internal PARAMS((const WORD_DESC *, int)); + +static char *string_extract_verbatim PARAMS((char *, size_t, int *, char *, int)); +static char *string_extract PARAMS((char *, int *, char *, int)); +static char *string_extract_double_quoted PARAMS((char *, int *, int)); +static inline char *string_extract_single_quoted PARAMS((char *, int *)); +static inline int skip_single_quoted PARAMS((const char *, size_t, int, int)); +static int skip_double_quoted PARAMS((char *, size_t, int, int)); +static char *extract_delimited_string PARAMS((char *, int *, char *, char *, char *, int)); +static char *extract_dollar_brace_string PARAMS((char *, int *, int, int)); +static int skip_matched_pair PARAMS((const char *, int, int, int, int)); + +static char *pos_params PARAMS((char *, int, int, int, int)); + +static unsigned char *mb_getcharlens PARAMS((char *, int)); + +static char *remove_upattern PARAMS((char *, char *, int)); +#if defined (HANDLE_MULTIBYTE) +static wchar_t *remove_wpattern PARAMS((wchar_t *, size_t, wchar_t *, int)); +#endif +static char *remove_pattern PARAMS((char *, char *, int)); + +static int match_upattern PARAMS((char *, char *, int, char **, char **)); +#if defined (HANDLE_MULTIBYTE) +static int match_wpattern PARAMS((wchar_t *, char **, size_t, wchar_t *, int, char **, char **)); +#endif +static int match_pattern PARAMS((char *, char *, int, char **, char **)); +static int getpatspec PARAMS((int, char *)); +static char *getpattern PARAMS((char *, int, int)); +static char *variable_remove_pattern PARAMS((char *, char *, int, int)); +static char *list_remove_pattern PARAMS((WORD_LIST *, char *, int, int, int)); +static char *parameter_list_remove_pattern PARAMS((int, char *, int, int)); +#ifdef ARRAY_VARS +static char *array_remove_pattern PARAMS((SHELL_VAR *, char *, int, int, int)); +#endif +static char *parameter_brace_remove_pattern PARAMS((char *, char *, int, char *, int, int, int)); + +static char *string_var_assignment PARAMS((SHELL_VAR *, char *)); +#if defined (ARRAY_VARS) +static char *array_var_assignment PARAMS((SHELL_VAR *, int, int, int)); +#endif +static char *pos_params_assignment PARAMS((WORD_LIST *, int, int)); +static char *string_transform PARAMS((int, SHELL_VAR *, char *)); +static char *list_transform PARAMS((int, SHELL_VAR *, WORD_LIST *, int, int)); +static char *parameter_list_transform PARAMS((int, int, int)); +#if defined ARRAY_VARS +static char *array_transform PARAMS((int, SHELL_VAR *, int, int)); +#endif +static char *parameter_brace_transform PARAMS((char *, char *, int, char *, int, int, int, int)); +static int valid_parameter_transform PARAMS((char *)); + +static char *process_substitute PARAMS((char *, int)); + +static char *read_comsub PARAMS((int, int, int, int *)); + +#ifdef ARRAY_VARS +static arrayind_t array_length_reference PARAMS((char *)); +#endif + +static int valid_brace_expansion_word PARAMS((char *, int)); +static int chk_atstar PARAMS((char *, int, int, int *, int *)); +static int chk_arithsub PARAMS((const char *, int)); + +static WORD_DESC *parameter_brace_expand_word PARAMS((char *, int, int, int, arrayind_t *)); +static char *parameter_brace_find_indir PARAMS((char *, int, int, int)); +static WORD_DESC *parameter_brace_expand_indir PARAMS((char *, int, int, int, int *, int *)); +static WORD_DESC *parameter_brace_expand_rhs PARAMS((char *, char *, int, int, int, int *, int *)); +static void parameter_brace_expand_error PARAMS((char *, char *, int)); + +static int valid_length_expression PARAMS((char *)); +static intmax_t parameter_brace_expand_length PARAMS((char *)); + +static char *skiparith PARAMS((char *, int)); +static int verify_substring_values PARAMS((SHELL_VAR *, char *, char *, int, intmax_t *, intmax_t *)); +static int get_var_and_type PARAMS((char *, char *, arrayind_t, int, int, SHELL_VAR **, char **)); +static char *mb_substring PARAMS((char *, int, int)); +static char *parameter_brace_substring PARAMS((char *, char *, int, char *, int, int, int)); + +static int shouldexp_replacement PARAMS((char *)); + +static char *pos_params_pat_subst PARAMS((char *, char *, char *, int)); + +static char *parameter_brace_patsub PARAMS((char *, char *, int, char *, int, int, int)); + +static char *pos_params_casemod PARAMS((char *, char *, int, int)); +static char *parameter_brace_casemod PARAMS((char *, char *, int, int, char *, int, int, int)); + +static WORD_DESC *parameter_brace_expand PARAMS((char *, int *, int, int, int *, int *)); +static WORD_DESC *param_expand PARAMS((char *, int *, int, int *, int *, int *, int *, int)); + +static WORD_LIST *expand_word_internal PARAMS((WORD_DESC *, int, int, int *, int *)); + +static WORD_LIST *word_list_split PARAMS((WORD_LIST *)); + +static void exp_jump_to_top_level PARAMS((int)); + +static WORD_LIST *separate_out_assignments PARAMS((WORD_LIST *)); +static WORD_LIST *glob_expand_word_list PARAMS((WORD_LIST *, int)); +#ifdef BRACE_EXPANSION +static WORD_LIST *brace_expand_word_list PARAMS((WORD_LIST *, int)); +#endif +#if defined (ARRAY_VARS) +static int make_internal_declare PARAMS((char *, char *, char *)); +static void expand_compound_assignment_word PARAMS((WORD_LIST *, int)); +static WORD_LIST *expand_declaration_argument PARAMS((WORD_LIST *, WORD_LIST *)); +#endif +static WORD_LIST *shell_expand_word_list PARAMS((WORD_LIST *, int)); +static WORD_LIST *expand_word_list_internal PARAMS((WORD_LIST *, int)); + +/* **************************************************************** */ +/* */ +/* Utility Functions */ +/* */ +/* **************************************************************** */ + +#if defined (DEBUG) +void +dump_word_flags (flags) + int flags; +{ + int f; + + f = flags; + fprintf (stderr, "%d -> ", f); + if (f & W_ARRAYIND) + { + f &= ~W_ARRAYIND; + fprintf (stderr, "W_ARRAYIND%s", f ? "|" : ""); + } + if (f & W_ASSIGNASSOC) + { + f &= ~W_ASSIGNASSOC; + fprintf (stderr, "W_ASSIGNASSOC%s", f ? "|" : ""); + } + if (f & W_ASSIGNARRAY) + { + f &= ~W_ASSIGNARRAY; + fprintf (stderr, "W_ASSIGNARRAY%s", f ? "|" : ""); + } + if (f & W_SAWQUOTEDNULL) + { + f &= ~W_SAWQUOTEDNULL; + fprintf (stderr, "W_SAWQUOTEDNULL%s", f ? "|" : ""); + } + if (f & W_NOPROCSUB) + { + f &= ~W_NOPROCSUB; + fprintf (stderr, "W_NOPROCSUB%s", f ? "|" : ""); + } + if (f & W_DQUOTE) + { + f &= ~W_DQUOTE; + fprintf (stderr, "W_DQUOTE%s", f ? "|" : ""); + } + if (f & W_HASQUOTEDNULL) + { + f &= ~W_HASQUOTEDNULL; + fprintf (stderr, "W_HASQUOTEDNULL%s", f ? "|" : ""); + } + if (f & W_ASSIGNARG) + { + f &= ~W_ASSIGNARG; + fprintf (stderr, "W_ASSIGNARG%s", f ? "|" : ""); + } + if (f & W_ASSNBLTIN) + { + f &= ~W_ASSNBLTIN; + fprintf (stderr, "W_ASSNBLTIN%s", f ? "|" : ""); + } + if (f & W_ASSNGLOBAL) + { + f &= ~W_ASSNGLOBAL; + fprintf (stderr, "W_ASSNGLOBAL%s", f ? "|" : ""); + } + if (f & W_COMPASSIGN) + { + f &= ~W_COMPASSIGN; + fprintf (stderr, "W_COMPASSIGN%s", f ? "|" : ""); + } + if (f & W_EXPANDRHS) + { + f &= ~W_EXPANDRHS; + fprintf (stderr, "W_EXPANDRHS%s", f ? "|" : ""); + } + if (f & W_ITILDE) + { + f &= ~W_ITILDE; + fprintf (stderr, "W_ITILDE%s", f ? "|" : ""); + } + if (f & W_NOTILDE) + { + f &= ~W_NOTILDE; + fprintf (stderr, "W_NOTILDE%s", f ? "|" : ""); + } + if (f & W_ASSIGNRHS) + { + f &= ~W_ASSIGNRHS; + fprintf (stderr, "W_ASSIGNRHS%s", f ? "|" : ""); + } + if (f & W_NOASSNTILDE) + { + f &= ~W_NOASSNTILDE; + fprintf (stderr, "W_NOASSNTILDE%s", f ? "|" : ""); + } + if (f & W_NOCOMSUB) + { + f &= ~W_NOCOMSUB; + fprintf (stderr, "W_NOCOMSUB%s", f ? "|" : ""); + } + if (f & W_DOLLARSTAR) + { + f &= ~W_DOLLARSTAR; + fprintf (stderr, "W_DOLLARSTAR%s", f ? "|" : ""); + } + if (f & W_DOLLARAT) + { + f &= ~W_DOLLARAT; + fprintf (stderr, "W_DOLLARAT%s", f ? "|" : ""); + } + if (f & W_TILDEEXP) + { + f &= ~W_TILDEEXP; + fprintf (stderr, "W_TILDEEXP%s", f ? "|" : ""); + } + if (f & W_NOSPLIT2) + { + f &= ~W_NOSPLIT2; + fprintf (stderr, "W_NOSPLIT2%s", f ? "|" : ""); + } + if (f & W_NOSPLIT) + { + f &= ~W_NOSPLIT; + fprintf (stderr, "W_NOSPLIT%s", f ? "|" : ""); + } + if (f & W_NOBRACE) + { + f &= ~W_NOBRACE; + fprintf (stderr, "W_NOBRACE%s", f ? "|" : ""); + } + if (f & W_NOGLOB) + { + f &= ~W_NOGLOB; + fprintf (stderr, "W_NOGLOB%s", f ? "|" : ""); + } + if (f & W_SPLITSPACE) + { + f &= ~W_SPLITSPACE; + fprintf (stderr, "W_SPLITSPACE%s", f ? "|" : ""); + } + if (f & W_ASSIGNMENT) + { + f &= ~W_ASSIGNMENT; + fprintf (stderr, "W_ASSIGNMENT%s", f ? "|" : ""); + } + if (f & W_QUOTED) + { + f &= ~W_QUOTED; + fprintf (stderr, "W_QUOTED%s", f ? "|" : ""); + } + if (f & W_HASDOLLAR) + { + f &= ~W_HASDOLLAR; + fprintf (stderr, "W_HASDOLLAR%s", f ? "|" : ""); + } + if (f & W_COMPLETE) + { + f &= ~W_COMPLETE; + fprintf (stderr, "W_COMPLETE%s", f ? "|" : ""); + } + if (f & W_CHKLOCAL) + { + f &= ~W_CHKLOCAL; + fprintf (stderr, "W_CHKLOCAL%s", f ? "|" : ""); + } + if (f & W_FORCELOCAL) + { + f &= ~W_FORCELOCAL; + fprintf (stderr, "W_FORCELOCAL%s", f ? "|" : ""); + } + + fprintf (stderr, "\n"); + fflush (stderr); +} +#endif + +#ifdef INCLUDE_UNUSED +static char * +quoted_substring (string, start, end) + char *string; + int start, end; +{ + register int len, l; + register char *result, *s, *r; + + len = end - start; + + /* Move to string[start], skipping quoted characters. */ + for (s = string, l = 0; *s && l < start; ) + { + if (*s == CTLESC) + { + s++; + continue; + } + l++; + if (*s == 0) + break; + } + + r = result = (char *)xmalloc (2*len + 1); /* save room for quotes */ + + /* Copy LEN characters, including quote characters. */ + s = string + l; + for (l = 0; l < len; s++) + { + if (*s == CTLESC) + *r++ = *s++; + *r++ = *s; + l++; + if (*s == 0) + break; + } + *r = '\0'; + return result; +} +#endif + +#ifdef INCLUDE_UNUSED +/* Return the length of S, skipping over quoted characters */ +static int +quoted_strlen (s) + char *s; +{ + register char *p; + int i; + + i = 0; + for (p = s; *p; p++) + { + if (*p == CTLESC) + { + p++; + if (*p == 0) + return (i + 1); + } + i++; + } + + return i; +} +#endif + +#ifdef INCLUDE_UNUSED +/* Find the first occurrence of character C in string S, obeying shell + quoting rules. If (FLAGS & ST_BACKSL) is non-zero, backslash-escaped + characters are skipped. If (FLAGS & ST_CTLESC) is non-zero, characters + escaped with CTLESC are skipped. */ +static char * +quoted_strchr (s, c, flags) + char *s; + int c, flags; +{ + register char *p; + + for (p = s; *p; p++) + { + if (((flags & ST_BACKSL) && *p == '\\') + || ((flags & ST_CTLESC) && *p == CTLESC)) + { + p++; + if (*p == '\0') + return ((char *)NULL); + continue; + } + else if (*p == c) + return p; + } + return ((char *)NULL); +} + +/* Return 1 if CHARACTER appears in an unquoted portion of + STRING. Return 0 otherwise. CHARACTER must be a single-byte character. */ +static int +unquoted_member (character, string) + int character; + char *string; +{ + size_t slen; + int sindex, c; + DECLARE_MBSTATE; + + slen = strlen (string); + sindex = 0; + while (c = string[sindex]) + { + if (c == character) + return (1); + + switch (c) + { + default: + ADVANCE_CHAR (string, slen, sindex); + break; + + case '\\': + sindex++; + if (string[sindex]) + ADVANCE_CHAR (string, slen, sindex); + break; + + case '\'': + sindex = skip_single_quoted (string, slen, ++sindex, 0); + break; + + case '"': + sindex = skip_double_quoted (string, slen, ++sindex, 0); + break; + } + } + return (0); +} + +/* Return 1 if SUBSTR appears in an unquoted portion of STRING. */ +static int +unquoted_substring (substr, string) + char *substr, *string; +{ + size_t slen; + int sindex, c, sublen; + DECLARE_MBSTATE; + + if (substr == 0 || *substr == '\0') + return (0); + + slen = strlen (string); + sublen = strlen (substr); + for (sindex = 0; c = string[sindex]; ) + { + if (STREQN (string + sindex, substr, sublen)) + return (1); + + switch (c) + { + case '\\': + sindex++; + if (string[sindex]) + ADVANCE_CHAR (string, slen, sindex); + break; + + case '\'': + sindex = skip_single_quoted (string, slen, ++sindex, 0); + break; + + case '"': + sindex = skip_double_quoted (string, slen, ++sindex, 0); + break; + + default: + ADVANCE_CHAR (string, slen, sindex); + break; + } + } + return (0); +} +#endif + +/* 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_t *size; +{ + if (source) + { + int n; + size_t srclen; + + srclen = STRLEN (source); + if (srclen >= (int)(*size - *indx)) + { + n = srclen + *indx; + n = (n + DEFAULT_ARRAY_SIZE) - (n % DEFAULT_ARRAY_SIZE); + target = (char *)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) + intmax_t number; + char *target; + int *indx; + size_t *size; +{ + char *temp; + + temp = itos (number); + return (sub_append_string (temp, target, indx, size)); +} +#endif + +/* 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 (flags & SX_VARNAME) + is non-zero, and array variables have been compiled into the shell, + everything between a `[' and a corresponding `]' is skipped over. + If (flags & SX_NOALLOC) is non-zero, don't return the substring, just + update SINDEX. If (flags & SX_REQMATCH) is non-zero, the string must + contain a closing character from CHARLIST. */ +static char * +string_extract (string, sindex, charlist, flags) + char *string; + int *sindex; + char *charlist; + int flags; +{ + register int c, i; + int found; + size_t slen; + char *temp; + DECLARE_MBSTATE; + + slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 0; + i = *sindex; + found = 0; + while (c = string[i]) + { + if (c == '\\') + { + if (string[i + 1]) + i++; + else + break; + } +#if defined (ARRAY_VARS) + else if ((flags & SX_VARNAME) && c == LBRACK) + { + int ni; + /* If this is an array subscript, skip over it and continue. */ + ni = skipsubscript (string, i, 0); + if (string[ni] == RBRACK) + i = ni; + } +#endif + else if (MEMBER (c, charlist)) + { + found = 1; + break; + } + + ADVANCE_CHAR (string, slen, i); + } + + /* If we had to have a matching delimiter and didn't find one, return an + error and let the caller deal with it. */ + if ((flags & SX_REQMATCH) && found == 0) + { + *sindex = i; + return (&extract_string_error); + } + + temp = (flags & SX_NOALLOC) ? (char *)NULL : substring (string, *sindex, i); + *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 char * +string_extract_double_quoted (string, sindex, flags) + char *string; + int *sindex, flags; +{ + size_t slen; + char *send; + int j, i, t; + unsigned char c; + char *temp, *ret; /* The new string we return. */ + int pass_next, backquote, si; /* State variables for the machine. */ + int dquote; + int stripdq; + DECLARE_MBSTATE; + + slen = strlen (string + *sindex) + *sindex; + send = string + slen; + + stripdq = (flags & SX_STRIPDQ); + + pass_next = backquote = dquote = 0; + temp = (char *)xmalloc (1 + slen - *sindex); + + j = 0; + i = *sindex; + while (c = string[i]) + { + /* Process a character that was quoted by a backslash. */ + if (pass_next) + { + /* XXX - take another look at this in light of Interp 221 */ + /* 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 && (sh_syntaxtab[c] & CBSDQUOTE)) || dquote == 0))) + temp[j++] = '\\'; + pass_next = 0; + +add_one_character: + COPY_CHAR_I (temp, j, string, send, i); + 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++; + i++; + 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; /* COPY_CHAR_I? */ + i++; + continue; + } + + if (c == '`') + { + temp[j++] = c; + backquote++; + i++; + continue; + } + + /* Pass everything between `$(' and the matching `)' or a quoted + ${ ... } pair through according to the Posix.2 specification. */ + if (c == '$' && ((string[i + 1] == LPAREN) || (string[i + 1] == LBRACE))) + { + int free_ret = 1; + + si = i + 2; + if (string[i + 1] == LPAREN) + ret = extract_command_subst (string, &si, (flags & SX_COMPLETE)); + else + ret = extract_dollar_brace_string (string, &si, Q_DOUBLE_QUOTES, 0); + + temp[j++] = '$'; + temp[j++] = string[i + 1]; + + /* Just paranoia; ret will not be 0 unless no_longjmp_on_fatal_error + is set. */ + if (ret == 0 && no_longjmp_on_fatal_error) + { + free_ret = 0; + ret = string + i + 2; + } + + /* XXX - CHECK_STRING_OVERRUN here? */ + for (t = 0; ret[t]; t++, j++) + temp[j] = ret[t]; + temp[j] = string[si]; + + if (si < i + 2) /* we went back? */ + i += 2; + else if (string[si]) + { + j++; + i = si + 1; + } + else + i = si; + + if (free_ret) + free (ret); + continue; + } + + /* Add any character but a double quote to the quoted string we're + accumulating. */ + if (c != '"') + goto add_one_character; + + /* c == '"' */ + if (stripdq) + { + dquote ^= 1; + i++; + 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 int +skip_double_quoted (string, slen, sind, flags) + char *string; + size_t slen; + int sind; + int flags; +{ + int c, i; + char *ret; + int pass_next, backquote, si; + DECLARE_MBSTATE; + + pass_next = backquote = 0; + i = sind; + while (c = string[i]) + { + if (pass_next) + { + pass_next = 0; + ADVANCE_CHAR (string, slen, i); + continue; + } + else if (c == '\\') + { + pass_next++; + i++; + continue; + } + else if (backquote) + { + if (c == '`') + backquote = 0; + ADVANCE_CHAR (string, slen, i); + continue; + } + else if (c == '`') + { + backquote++; + i++; + continue; + } + else if (c == '$' && ((string[i + 1] == LPAREN) || (string[i + 1] == LBRACE))) + { + si = i + 2; + if (string[i + 1] == LPAREN) + ret = extract_command_subst (string, &si, SX_NOALLOC|(flags&SX_COMPLETE)); + else + ret = extract_dollar_brace_string (string, &si, Q_DOUBLE_QUOTES, SX_NOALLOC); + + /* These can consume the entire string if they are unterminated */ + CHECK_STRING_OVERRUN (i, si, slen, c); + + i = si + 1; + continue; + } + else if (c != '"') + { + ADVANCE_CHAR (string, slen, i); + 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; + size_t slen; + char *t; + DECLARE_MBSTATE; + + /* Don't need slen for ADVANCE_CHAR unless multibyte chars possible. */ + slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 0; + i = *sindex; + while (string[i] && string[i] != '\'') + ADVANCE_CHAR (string, slen, i); + + t = substring (string, *sindex, i); + + if (string[i]) + i++; + *sindex = i; + + return (t); +} + +/* Skip over a single-quoted string. We overload the SX_COMPLETE flag to mean + that we are splitting out words for completion and have encountered a $'...' + string, which allows backslash-escaped single quotes. */ +static inline int +skip_single_quoted (string, slen, sind, flags) + const char *string; + size_t slen; + int sind; + int flags; +{ + register int c; + DECLARE_MBSTATE; + + c = sind; + while (string[c] && string[c] != '\'') + { + if ((flags & SX_COMPLETE) && string[c] == '\\' && string[c+1] == '\'' && string[c+2]) + ADVANCE_CHAR (string, slen, c); + ADVANCE_CHAR (string, slen, c); + } + + if (string[c]) + c++; + return c; +} + +/* Just like string_extract, but doesn't hack backslashes or any of + that other stuff. Obeys CTLESC quoting. Used to do splitting on $IFS. */ +static char * +string_extract_verbatim (string, slen, sindex, charlist, flags) + char *string; + size_t slen; + int *sindex; + char *charlist; + int flags; +{ + register int i; +#if defined (HANDLE_MULTIBYTE) + wchar_t *wcharlist; +#endif + int c; + char *temp; + DECLARE_MBSTATE; + + if ((flags & SX_NOCTLESC) && charlist[0] == '\'' && charlist[1] == '\0') + { + temp = string_extract_single_quoted (string, sindex); + --*sindex; /* leave *sindex at separator character */ + return temp; + } + + /* This can never be called with charlist == NULL. If *charlist == NULL, + we can skip the loop and just return a copy of the string, updating + *sindex */ + if (*charlist == 0) + { + temp = string + *sindex; + c = (*sindex == 0) ? slen : STRLEN (temp); + temp = savestring (temp); + *sindex += c; + return temp; + } + + i = *sindex; +#if defined (HANDLE_MULTIBYTE) + wcharlist = 0; +#endif + while (c = string[i]) + { +#if defined (HANDLE_MULTIBYTE) + size_t mblength; +#endif + if ((flags & SX_NOCTLESC) == 0 && c == CTLESC) + { + i += 2; + CHECK_STRING_OVERRUN (i, i, slen, c); + continue; + } + /* Even if flags contains SX_NOCTLESC, we let CTLESC quoting CTLNUL + through, to protect the CTLNULs from later calls to + remove_quoted_nulls. */ + else if ((flags & SX_NOESCCTLNUL) == 0 && c == CTLESC && string[i+1] == CTLNUL) + { + i += 2; + CHECK_STRING_OVERRUN (i, i, slen, c); + continue; + } + +#if defined (HANDLE_MULTIBYTE) + if (locale_utf8locale && slen > i && UTF8_SINGLEBYTE (string[i])) + mblength = (string[i] != 0) ? 1 : 0; + else + mblength = MBLEN (string + i, slen - i); + if (mblength > 1) + { + wchar_t wc; + mblength = mbtowc (&wc, string + i, slen - i); + if (MB_INVALIDCH (mblength)) + { + if (MEMBER (c, charlist)) + break; + } + else + { + if (wcharlist == 0) + { + size_t len; + len = mbstowcs (wcharlist, charlist, 0); + if (len == -1) + len = 0; + wcharlist = (wchar_t *)xmalloc (sizeof (wchar_t) * (len + 1)); + mbstowcs (wcharlist, charlist, len + 1); + } + + if (wcschr (wcharlist, wc)) + break; + } + } + else +#endif + if (MEMBER (c, charlist)) + break; + + ADVANCE_CHAR (string, slen, i); + } + +#if defined (HANDLE_MULTIBYTE) + FREE (wcharlist); +#endif + + temp = substring (string, *sindex, i); + *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 of the matching ")". ) + XFLAGS is additional flags to pass to other extraction functions. */ +char * +extract_command_subst (string, sindex, xflags) + char *string; + int *sindex; + int xflags; +{ + char *ret; + + if (string[*sindex] == LPAREN || (xflags & SX_COMPLETE)) + return (extract_delimited_string (string, sindex, "$(", "(", ")", xflags|SX_COMMAND)); /*)*/ + else + { + xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); + ret = xparse_dolparen (string, string+*sindex, sindex, xflags); + return ret; + } +} + +/* 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 of the matching "]". */ +char * +extract_arithmetic_subst (string, sindex) + char *string; + int *sindex; +{ + return (extract_delimited_string (string, sindex, "$[", "[", "]", 0)); /*]*/ +} + +#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 of the matching ")". */ /*))*/ +char * +extract_process_subst (string, starter, sindex, xflags) + char *string; + char *starter; + int *sindex; + int xflags; +{ +#if 0 + /* XXX - check xflags&SX_COMPLETE here? */ + return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); +#else + xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); + return (xparse_dolparen (string, string+*sindex, sindex, xflags)); +#endif +} +#endif /* PROCESS_SUBSTITUTION */ + +#if defined (ARRAY_VARS) +/* This can be fooled by unquoted right parens in the passed string. If + each caller verifies that the last character in STRING is a right paren, + we don't even need to call extract_delimited_string. */ +char * +extract_array_assignment_list (string, sindex) + char *string; + int *sindex; +{ + int slen; + char *ret; + + slen = strlen (string); + if (string[slen - 1] == RPAREN) + { + ret = substring (string, *sindex, slen - 1); + *sindex = slen - 1; + return ret; + } + return 0; +} +#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 of the last character of 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. */ +static char * +extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) + char *string; + int *sindex; + char *opener, *alt_opener, *closer; + int flags; +{ + int i, c, si; + size_t slen; + char *t, *result; + int pass_character, nesting_level, in_comment; + int len_closer, len_opener, len_alt_opener; + DECLARE_MBSTATE; + + slen = strlen (string + *sindex) + *sindex; + len_opener = STRLEN (opener); + len_alt_opener = STRLEN (alt_opener); + len_closer = STRLEN (closer); + + pass_character = in_comment = 0; + + nesting_level = 1; + i = *sindex; + + while (nesting_level) + { + c = string[i]; + + /* If a recursive call or a call to ADVANCE_CHAR leaves the index beyond + the end of the string, catch it and cut the loop. */ + if (i > slen) + { + i = slen; + c = string[i = slen]; + break; + } + + if (c == 0) + break; + + if (in_comment) + { + if (c == '\n') + in_comment = 0; + ADVANCE_CHAR (string, slen, i); + continue; + } + + if (pass_character) /* previous char was backslash */ + { + pass_character = 0; + ADVANCE_CHAR (string, slen, i); + continue; + } + + /* Not exactly right yet; should handle shell metacharacters and + multibyte characters, too. See COMMENT_BEGIN define in parse.y */ + if ((flags & SX_COMMAND) && c == '#' && (i == 0 || string[i - 1] == '\n' || shellblank (string[i - 1]))) + { + in_comment = 1; + ADVANCE_CHAR (string, slen, i); + continue; + } + + if (c == CTLESC || c == '\\') + { + pass_character++; + i++; + continue; + } + + /* Process a nested command substitution, but only if we're parsing an + arithmetic substitution. */ + if ((flags & SX_COMMAND) && string[i] == '$' && string[i+1] == LPAREN) + { + si = i + 2; + t = extract_command_subst (string, &si, flags|SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); + i = si + 1; + continue; + } + + /* Process a nested OPENER. */ + if (STREQN (string + i, opener, len_opener)) + { + si = i + len_opener; + t = extract_delimited_string (string, &si, opener, alt_opener, closer, flags|SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); + i = si + 1; + continue; + } + + /* Process a nested ALT_OPENER */ + if (len_alt_opener && STREQN (string + i, alt_opener, len_alt_opener)) + { + si = i + len_alt_opener; + t = extract_delimited_string (string, &si, alt_opener, alt_opener, closer, flags|SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); + i = si + 1; + continue; + } + + /* If the current substring terminates the delimited string, decrement + the nesting level. */ + if (STREQN (string + i, closer, len_closer)) + { + i += len_closer - 1; /* move to last byte of the closer */ + nesting_level--; + if (nesting_level == 0) + break; + } + + /* Pass old-style command substitution through verbatim. */ + if (c == '`') + { + si = i + 1; + t = string_extract (string, &si, "`", flags|SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); + i = si + 1; + continue; + } + + /* Pass single-quoted and double-quoted strings through verbatim. */ + if (c == '\'' || c == '"') + { + si = i + 1; + i = (c == '\'') ? skip_single_quoted (string, slen, si, 0) + : skip_double_quoted (string, slen, si, 0); + continue; + } + + /* move past this character, which was not special. */ + ADVANCE_CHAR (string, slen, i); + } + + if (c == 0 && nesting_level) + { + if (no_longjmp_on_fatal_error == 0) + { + last_command_exit_value = EXECUTION_FAILURE; + report_error (_("bad substitution: no closing `%s' in %s"), closer, string); + exp_jump_to_top_level (DISCARD); + } + else + { + *sindex = i; + return (char *)NULL; + } + } + + si = i - *sindex - len_closer + 1; + if (flags & SX_NOALLOC) + result = (char *)NULL; + else + { + result = (char *)xmalloc (1 + si); + strncpy (result, string + *sindex, si); + result[si] = '\0'; + } + *sindex = i; + + 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 of 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, flags) + char *string; + int *sindex, quoted, flags; +{ + register int i, c; + size_t slen; + int pass_character, nesting_level, si, dolbrace_state; + char *result, *t; + DECLARE_MBSTATE; + + pass_character = 0; + nesting_level = 1; + slen = strlen (string + *sindex) + *sindex; + + /* The handling of dolbrace_state needs to agree with the code in parse.y: + parse_matched_pair(). The different initial value is to handle the + case where this function is called to parse the word in + ${param op word} (SX_WORD). */ + dolbrace_state = (flags & SX_WORD) ? DOLBRACE_WORD : DOLBRACE_PARAM; + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && (flags & SX_POSIXEXP)) + dolbrace_state = DOLBRACE_QUOTE; + + i = *sindex; + while (c = string[i]) + { + if (pass_character) + { + pass_character = 0; + ADVANCE_CHAR (string, slen, i); + continue; + } + + /* CTLESCs and backslashes quote the next character. */ + if (c == CTLESC || c == '\\') + { + pass_character++; + i++; + continue; + } + + if (string[i] == '$' && string[i+1] == LBRACE) + { + nesting_level++; + i += 2; + continue; + } + + if (c == RBRACE) + { + nesting_level--; + if (nesting_level == 0) + break; + i++; + continue; + } + + /* Pass the contents of old-style command substitutions through + verbatim. */ + if (c == '`') + { + si = i + 1; + t = string_extract (string, &si, "`", flags|SX_NOALLOC); + + CHECK_STRING_OVERRUN (i, si, slen, c); + + i = si + 1; + continue; + } + + /* Pass the contents of new-style command substitutions and + arithmetic substitutions through verbatim. */ + if (string[i] == '$' && string[i+1] == LPAREN) + { + si = i + 2; + t = extract_command_subst (string, &si, flags|SX_NOALLOC); + + CHECK_STRING_OVERRUN (i, si, slen, c); + + i = si + 1; + continue; + } + +#if defined (PROCESS_SUBSTITUTION) + /* Technically this should only work at the start of a word */ + if ((string[i] == '<' || string[i] == '>') && string[i+1] == LPAREN) + { + si = i + 2; + t = extract_process_subst (string, (string[i] == '<' ? "<(" : ">)"), &si, flags|SX_NOALLOC); + + CHECK_STRING_OVERRUN (i, si, slen, c); + + i = si + 1; + continue; + } +#endif + + /* Pass the contents of double-quoted strings through verbatim. */ + if (c == '"') + { + si = i + 1; + i = skip_double_quoted (string, slen, si, 0); + /* skip_XXX_quoted leaves index one past close quote */ + continue; + } + + if (c == '\'') + { +/*itrace("extract_dollar_brace_string: c == single quote flags = %d quoted = %d dolbrace_state = %d", flags, quoted, dolbrace_state);*/ + if (posixly_correct && shell_compatibility_level > 42 && dolbrace_state != DOLBRACE_QUOTE && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + ADVANCE_CHAR (string, slen, i); + else + { + si = i + 1; + i = skip_single_quoted (string, slen, si, 0); + } + + continue; + } + +#if defined (ARRAY_VARS) + if (c == LBRACK && dolbrace_state == DOLBRACE_PARAM) + { + si = skipsubscript (string, i, 0); + CHECK_STRING_OVERRUN (i, si, slen, c); + if (string[si] == RBRACK) + c = string[i = si]; + } +#endif + + /* move past this character, which was not special. */ + ADVANCE_CHAR (string, slen, i); + + /* This logic must agree with parse.y:parse_matched_pair, since they + share the same defines. */ + if (dolbrace_state == DOLBRACE_PARAM && c == '%' && (i - *sindex) > 1) + dolbrace_state = DOLBRACE_QUOTE; + else if (dolbrace_state == DOLBRACE_PARAM && c == '#' && (i - *sindex) > 1) + dolbrace_state = DOLBRACE_QUOTE; + else if (dolbrace_state == DOLBRACE_PARAM && c == '/' && (i - *sindex) > 1) + dolbrace_state = DOLBRACE_QUOTE2; /* XXX */ + else if (dolbrace_state == DOLBRACE_PARAM && c == '^' && (i - *sindex) > 1) + dolbrace_state = DOLBRACE_QUOTE; + else if (dolbrace_state == DOLBRACE_PARAM && c == ',' && (i - *sindex) > 1) + dolbrace_state = DOLBRACE_QUOTE; + /* This is intended to handle all of the [:]op expansions and the substring/ + length/pattern removal/pattern substitution expansions. */ + else if (dolbrace_state == DOLBRACE_PARAM && strchr ("#%^,~:-=?+/", c) != 0) + dolbrace_state = DOLBRACE_OP; + else if (dolbrace_state == DOLBRACE_OP && strchr ("#%^,~:-=?+/", c) == 0) + dolbrace_state = DOLBRACE_WORD; + } + + if (c == 0 && nesting_level) + { + if (no_longjmp_on_fatal_error == 0) + { /* { */ + last_command_exit_value = EXECUTION_FAILURE; + report_error (_("bad substitution: no closing `%s' in %s"), "}", string); + exp_jump_to_top_level (DISCARD); + } + else + { + *sindex = i; + return ((char *)NULL); + } + } + + result = (flags & SX_NOALLOC) ? (char *)NULL : substring (string, *sindex, i); + *sindex = i; + + 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 size_t slen; + register int i, j, prev_i; + DECLARE_MBSTATE; + + slen = strlen (string); + i = j = 0; + + /* Loop copying string[i] to string[j], i >= j. */ + while (i < slen) + { + if (string[i] == '\\' && (string[i + 1] == '`' || string[i + 1] == '\\' || + string[i + 1] == '$')) + i++; + prev_i = i; + ADVANCE_CHAR (string, slen, i); + if (j < prev_i) + do string[j++] = string[prev_i++]; while (prev_i < i); + else + j = i; + } + string[j] = '\0'; + + return (string); +} + +#if 0 +/*UNUSED*/ +/* Replace instances of \! in a string with !. */ +void +unquote_bang (string) + char *string; +{ + register int i, j; + register char *temp; + + temp = (char *)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 + +#define CQ_RETURN(x) do { no_longjmp_on_fatal_error = oldjmp; return (x); } while (0) + +/* This function assumes s[i] == open; returns with s[ret] == close; used to + parse array subscripts. FLAGS & 1 means to not attempt to skip over + matched pairs of quotes or backquotes, or skip word expansions; it is + intended to be used after expansion has been performed and during final + assignment parsing (see arrayfunc.c:assign_compound_array_list()) or + during execution by a builtin which has already undergone word expansion. */ +static int +skip_matched_pair (string, start, open, close, flags) + const char *string; + int start, open, close, flags; +{ + int i, pass_next, backq, si, c, count, oldjmp; + size_t slen; + char *temp, *ss; + DECLARE_MBSTATE; + + slen = strlen (string + start) + start; + oldjmp = no_longjmp_on_fatal_error; + no_longjmp_on_fatal_error = 1; + + i = start + 1; /* skip over leading bracket */ + count = 1; + pass_next = backq = 0; + ss = (char *)string; + while (c = string[i]) + { + if (pass_next) + { + pass_next = 0; + if (c == 0) + CQ_RETURN(i); + ADVANCE_CHAR (string, slen, i); + continue; + } + else if ((flags & 1) == 0 && c == '\\') + { + pass_next = 1; + i++; + continue; + } + else if (backq) + { + if (c == '`') + backq = 0; + ADVANCE_CHAR (string, slen, i); + continue; + } + else if ((flags & 1) == 0 && c == '`') + { + backq = 1; + i++; + continue; + } + else if ((flags & 1) == 0 && c == open) + { + count++; + i++; + continue; + } + else if (c == close) + { + count--; + if (count == 0) + break; + i++; + continue; + } + else if ((flags & 1) == 0 && (c == '\'' || c == '"')) + { + i = (c == '\'') ? skip_single_quoted (ss, slen, ++i, 0) + : skip_double_quoted (ss, slen, ++i, 0); + /* no increment, the skip functions increment past the closing quote. */ + } + else if ((flags&1) == 0 && c == '$' && (string[i+1] == LPAREN || string[i+1] == LBRACE)) + { + si = i + 2; + if (string[si] == '\0') + CQ_RETURN(si); + + /* XXX - extract_command_subst here? */ + if (string[i+1] == LPAREN) + temp = extract_delimited_string (ss, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */ + else + temp = extract_dollar_brace_string (ss, &si, 0, SX_NOALLOC); + + CHECK_STRING_OVERRUN (i, si, slen, c); + + i = si; + if (string[i] == '\0') /* don't increment i past EOS in loop */ + break; + i++; + continue; + } + else + ADVANCE_CHAR (string, slen, i); + } + + CQ_RETURN(i); +} + +#if defined (ARRAY_VARS) +/* Flags has 1 as a reserved value, since skip_matched_pair uses it for + skipping over quoted strings and taking the first instance of the + closing character. */ +int +skipsubscript (string, start, flags) + const char *string; + int start, flags; +{ + return (skip_matched_pair (string, start, '[', ']', flags)); +} +#endif + +/* Skip characters in STRING until we find a character in DELIMS, and return + the index of that character. START is the index into string at which we + begin. This is similar in spirit to strpbrk, but it returns an index into + STRING and takes a starting index. This little piece of code knows quite + a lot of shell syntax. It's very similar to skip_double_quoted and other + functions of that ilk. */ +int +skip_to_delim (string, start, delims, flags) + char *string; + int start; + char *delims; + int flags; +{ + int i, pass_next, backq, dquote, si, c, oldjmp; + int invert, skipquote, skipcmd, noprocsub, completeflag; + int arithexp, skipcol; + size_t slen; + char *temp, open[3]; + DECLARE_MBSTATE; + + slen = strlen (string + start) + start; + oldjmp = no_longjmp_on_fatal_error; + if (flags & SD_NOJMP) + no_longjmp_on_fatal_error = 1; + invert = (flags & SD_INVERT); + skipcmd = (flags & SD_NOSKIPCMD) == 0; + noprocsub = (flags & SD_NOPROCSUB); + completeflag = (flags & SD_COMPLETE) ? SX_COMPLETE : 0; + + arithexp = (flags & SD_ARITHEXP); + skipcol = 0; + + i = start; + pass_next = backq = dquote = 0; + while (c = string[i]) + { + /* If this is non-zero, we should not let quote characters be delimiters + and the current character is a single or double quote. We should not + test whether or not it's a delimiter until after we skip single- or + double-quoted strings. */ + skipquote = ((flags & SD_NOQUOTEDELIM) && (c == '\'' || c =='"')); + if (pass_next) + { + pass_next = 0; + if (c == 0) + CQ_RETURN(i); + ADVANCE_CHAR (string, slen, i); + continue; + } + else if (c == '\\') + { + pass_next = 1; + i++; + continue; + } + else if (backq) + { + if (c == '`') + backq = 0; + ADVANCE_CHAR (string, slen, i); + continue; + } + else if (c == '`') + { + backq = 1; + i++; + continue; + } + else if (arithexp && skipcol && c == ':') + { + skipcol--; + i++; + continue; + } + else if (arithexp && c == '?') + { + skipcol++; + i++; + continue; + } + else if (skipquote == 0 && invert == 0 && member (c, delims)) + break; + /* the usual case is to use skip_xxx_quoted, but we don't skip over double + quoted strings when looking for the history expansion character as a + delimiter. */ + /* special case for programmable completion which takes place before + parser converts backslash-escaped single quotes between $'...' to + `regular' single-quoted strings. */ + else if (completeflag && i > 0 && string[i-1] == '$' && c == '\'') + i = skip_single_quoted (string, slen, ++i, SX_COMPLETE); + else if (c == '\'') + i = skip_single_quoted (string, slen, ++i, 0); + else if (c == '"') + i = skip_double_quoted (string, slen, ++i, completeflag); + else if (c == LPAREN && arithexp) + { + si = i + 1; + if (string[si] == '\0') + CQ_RETURN(si); + + temp = extract_delimited_string (string, &si, "(", "(", ")", SX_NOALLOC); /* ) */ + i = si; + if (string[i] == '\0') /* don't increment i past EOS in loop */ + break; + i++; + continue; + } + else if (c == '$' && ((skipcmd && string[i+1] == LPAREN) || string[i+1] == LBRACE)) + { + si = i + 2; + if (string[si] == '\0') + CQ_RETURN(si); + + if (string[i+1] == LPAREN) + temp = extract_delimited_string (string, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */ + else + temp = extract_dollar_brace_string (string, &si, 0, SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); + i = si; + if (string[i] == '\0') /* don't increment i past EOS in loop */ + break; + i++; + continue; + } +#if defined (PROCESS_SUBSTITUTION) + else if (skipcmd && noprocsub == 0 && (c == '<' || c == '>') && string[i+1] == LPAREN) + { + si = i + 2; + if (string[si] == '\0') + CQ_RETURN(si); + + temp = extract_delimited_string (string, &si, (c == '<') ? "<(" : ">(", "(", ")", SX_COMMAND|SX_NOALLOC); /* )) */ + CHECK_STRING_OVERRUN (i, si, slen, c); + i = si; + if (string[i] == '\0') + break; + i++; + continue; + } +#endif /* PROCESS_SUBSTITUTION */ +#if defined (EXTENDED_GLOB) + else if ((flags & SD_EXTGLOB) && extended_glob && string[i+1] == LPAREN && member (c, "?*+!@")) + { + si = i + 2; + if (string[si] == '\0') + CQ_RETURN(si); + + open[0] = c; + open[1] = LPAREN; + open[2] = '\0'; + temp = extract_delimited_string (string, &si, open, "(", ")", SX_NOALLOC); /* ) */ + + CHECK_STRING_OVERRUN (i, si, slen, c); + i = si; + if (string[i] == '\0') /* don't increment i past EOS in loop */ + break; + i++; + continue; + } +#endif + else if ((flags & SD_GLOB) && c == LBRACK) + { + si = i + 1; + if (string[si] == '\0') + CQ_RETURN(si); + + temp = extract_delimited_string (string, &si, "[", "[", "]", SX_NOALLOC); /* ] */ + + i = si; + if (string[i] == '\0') /* don't increment i past EOS in loop */ + break; + i++; + continue; + } + else if ((skipquote || invert) && (member (c, delims) == 0)) + break; + else + ADVANCE_CHAR (string, slen, i); + } + + CQ_RETURN(i); +} + +#if defined (BANG_HISTORY) +/* Skip to the history expansion character (delims[0]), paying attention to + quoted strings and command and process substitution. This is a stripped- + down version of skip_to_delims. The essential difference is that this + resets the quoting state when starting a command substitution */ +int +skip_to_histexp (string, start, delims, flags) + char *string; + int start; + char *delims; + int flags; +{ + int i, pass_next, backq, dquote, c, oldjmp; + int histexp_comsub, histexp_backq, old_dquote; + size_t slen; + DECLARE_MBSTATE; + + slen = strlen (string + start) + start; + oldjmp = no_longjmp_on_fatal_error; + if (flags & SD_NOJMP) + no_longjmp_on_fatal_error = 1; + + histexp_comsub = histexp_backq = old_dquote = 0; + + i = start; + pass_next = backq = dquote = 0; + while (c = string[i]) + { + if (pass_next) + { + pass_next = 0; + if (c == 0) + CQ_RETURN(i); + ADVANCE_CHAR (string, slen, i); + continue; + } + else if (c == '\\') + { + pass_next = 1; + i++; + continue; + } + else if (backq && c == '`') + { + backq = 0; + histexp_backq--; + dquote = old_dquote; + i++; + continue; + } + else if (c == '`') + { + backq = 1; + histexp_backq++; + old_dquote = dquote; /* simple - one level for now */ + dquote = 0; + i++; + continue; + } + /* When in double quotes, act as if the double quote is a member of + history_no_expand_chars, like the history library does */ + else if (dquote && c == delims[0] && string[i+1] == '"') + { + i++; + continue; + } + else if (c == delims[0]) + break; + /* the usual case is to use skip_xxx_quoted, but we don't skip over double + quoted strings when looking for the history expansion character as a + delimiter. */ + else if (dquote && c == '\'') + { + i++; + continue; + } + else if (c == '\'') + i = skip_single_quoted (string, slen, ++i, 0); + /* The posixly_correct test makes posix-mode shells allow double quotes + to quote the history expansion character */ + else if (posixly_correct == 0 && c == '"') + { + dquote = 1 - dquote; + i++; + continue; + } + else if (c == '"') + i = skip_double_quoted (string, slen, ++i, 0); +#if defined (PROCESS_SUBSTITUTION) + else if ((c == '$' || c == '<' || c == '>') && string[i+1] == LPAREN && string[i+2] != LPAREN) +#else + else if (c == '$' && string[i+1] == LPAREN && string[i+2] != LPAREN) +#endif + { + if (string[i+2] == '\0') + CQ_RETURN(i+2); + i += 2; + histexp_comsub++; + old_dquote = dquote; + dquote = 0; + } + else if (histexp_comsub && c == RPAREN) + { + histexp_comsub--; + dquote = old_dquote; + i++; + continue; + } + else if (backq) /* placeholder */ + { + ADVANCE_CHAR (string, slen, i); + continue; + } + else + ADVANCE_CHAR (string, slen, i); + } + + CQ_RETURN(i); +} +#endif /* BANG_HISTORY */ + +#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. NO_LONGJMP_ON_FATAL_ERROR is used to flag that the various + single and double-quoted string parsing functions should not return an + error if there are unclosed quotes or braces. The characters that this + recognizes need to be the same as the contents of + rl_completer_quote_characters. */ + +int +char_is_quoted (string, eindex) + char *string; + int eindex; +{ + int i, pass_next, c, oldjmp; + size_t slen; + DECLARE_MBSTATE; + + slen = strlen (string); + oldjmp = no_longjmp_on_fatal_error; + no_longjmp_on_fatal_error = 1; + i = pass_next = 0; + while (i <= eindex) + { + c = string[i]; + + if (pass_next) + { + pass_next = 0; + if (i >= eindex) /* XXX was if (i >= eindex - 1) */ + CQ_RETURN(1); + ADVANCE_CHAR (string, slen, i); + continue; + } + else if (c == '\\') + { + pass_next = 1; + i++; + continue; + } + else if (c == '$' && string[i+1] == '\'' && string[i+2]) + { + i += 2; + i = skip_single_quoted (string, slen, i, SX_COMPLETE); + if (i > eindex) + CQ_RETURN (i); + } + else if (c == '\'' || c == '"') + { + i = (c == '\'') ? skip_single_quoted (string, slen, ++i, 0) + : skip_double_quoted (string, slen, ++i, SX_COMPLETE); + if (i > eindex) + CQ_RETURN(1); + /* no increment, the skip_xxx functions go one past end */ + } + else + ADVANCE_CHAR (string, slen, i); + } + + CQ_RETURN(0); +} + +int +unclosed_pair (string, eindex, openstr) + char *string; + int eindex; + char *openstr; +{ + int i, pass_next, openc, olen; + size_t slen; + DECLARE_MBSTATE; + + slen = strlen (string); + olen = strlen (openstr); + i = pass_next = openc = 0; + while (i <= eindex) + { + if (pass_next) + { + pass_next = 0; + if (i >= eindex) /* XXX was if (i >= eindex - 1) */ + return 0; + ADVANCE_CHAR (string, slen, i); + continue; + } + else if (string[i] == '\\') + { + pass_next = 1; + i++; + continue; + } + else if (STREQN (string + i, openstr, olen)) + { + openc = 1 - openc; + i += olen; + } + /* XXX - may want to handle $'...' specially here */ + else if (string[i] == '\'' || string[i] == '"') + { + i = (string[i] == '\'') ? skip_single_quoted (string, slen, i, 0) + : skip_double_quoted (string, slen, i, SX_COMPLETE); + if (i > eindex) + return 0; + } + else + ADVANCE_CHAR (string, slen, i); + } + return (openc); +} + +/* Split STRING (length SLEN) at DELIMS, and return a WORD_LIST with the + individual words. If DELIMS is NULL, the current value of $IFS is used + to split the string, and the function follows the shell field splitting + rules. SENTINEL is an index to look for. NWP, if non-NULL, + gets the number of words in the returned list. CWP, if non-NULL, gets + the index of the word containing SENTINEL. Non-whitespace chars in + DELIMS delimit separate fields. This is used by programmable completion. */ +WORD_LIST * +split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp) + char *string; + int slen; + char *delims; + int sentinel, flags; + int *nwp, *cwp; +{ + int ts, te, i, nw, cw, ifs_split, dflags; + char *token, *d, *d2; + WORD_LIST *ret, *tl; + + if (string == 0 || *string == '\0') + { + if (nwp) + *nwp = 0; + if (cwp) + *cwp = 0; + return ((WORD_LIST *)NULL); + } + + d = (delims == 0) ? ifs_value : delims; + ifs_split = delims == 0; + + /* Make d2 the non-whitespace characters in delims */ + d2 = 0; + if (delims) + { + size_t slength; +#if defined (HANDLE_MULTIBYTE) + size_t mblength = 1; +#endif + DECLARE_MBSTATE; + + slength = strlen (delims); + d2 = (char *)xmalloc (slength + 1); + i = ts = 0; + while (delims[i]) + { +#if defined (HANDLE_MULTIBYTE) + mbstate_t state_bak; + state_bak = state; + mblength = MBRLEN (delims + i, slength, &state); + if (MB_INVALIDCH (mblength)) + state = state_bak; + else if (mblength > 1) + { + memcpy (d2 + ts, delims + i, mblength); + ts += mblength; + i += mblength; + slength -= mblength; + continue; + } +#endif + if (whitespace (delims[i]) == 0) + d2[ts++] = delims[i]; + + i++; + slength--; + } + d2[ts] = '\0'; + } + + ret = (WORD_LIST *)NULL; + + /* Remove sequences of whitespace characters at the start of the string, as + long as those characters are delimiters. */ + for (i = 0; member (string[i], d) && spctabnl (string[i]); i++) + ; + if (string[i] == '\0') + { + FREE (d2); + return (ret); + } + + ts = i; + nw = 0; + cw = -1; + dflags = flags|SD_NOJMP; + while (1) + { + te = skip_to_delim (string, ts, d, dflags); + + /* If we have a non-whitespace delimiter character, use it to make a + separate field. This is just about what $IFS splitting does and + is closer to the behavior of the shell parser. */ + if (ts == te && d2 && member (string[ts], d2)) + { + te = ts + 1; + /* If we're using IFS splitting, the non-whitespace delimiter char + and any additional IFS whitespace delimits a field. */ + if (ifs_split) + while (member (string[te], d) && spctabnl (string[te]) && ((flags&SD_NOQUOTEDELIM) == 0 || (string[te] != '\'' && string[te] != '"'))) + te++; + else + while (member (string[te], d2) && ((flags&SD_NOQUOTEDELIM) == 0 || (string[te] != '\'' && string[te] != '"'))) + te++; + } + + token = substring (string, ts, te); + + ret = add_string_to_list (token, ret); /* XXX */ + free (token); + nw++; + + if (sentinel >= ts && sentinel <= te) + cw = nw; + + /* If the cursor is at whitespace just before word start, set the + sentinel word to the current word. */ + if (cwp && cw == -1 && sentinel == ts-1) + cw = nw; + + /* If the cursor is at whitespace between two words, make a new, empty + word, add it before (well, after, since the list is in reverse order) + the word we just added, and set the current word to that one. */ + if (cwp && cw == -1 && sentinel < ts) + { + tl = make_word_list (make_word (""), ret->next); + ret->next = tl; + cw = nw; + nw++; + } + + if (string[te] == 0) + break; + + i = te; + /* XXX - honor SD_NOQUOTEDELIM here */ + while (member (string[i], d) && (ifs_split || spctabnl(string[i])) && ((flags&SD_NOQUOTEDELIM) == 0 || (string[te] != '\'' && string[te] != '"'))) + i++; + + if (string[i]) + ts = i; + else + break; + } + + /* Special case for SENTINEL at the end of STRING. If we haven't found + the word containing SENTINEL yet, and the index we're looking for is at + the end of STRING (or past the end of the previously-found token, + possible if the end of the line is composed solely of IFS whitespace) + add an additional null argument and set the current word pointer to that. */ + if (cwp && cw == -1 && (sentinel >= slen || sentinel >= te)) + { + if (whitespace (string[sentinel - 1])) + { + token = ""; + ret = add_string_to_list (token, ret); + nw++; + } + cw = nw; + } + + if (nwp) + *nwp = nw; + if (cwp) + *cwp = cw; + + FREE (d2); + + return (REVERSE_LIST (ret, WORD_LIST *)); +} +#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, 0); + if (offset == 0) + return (char *)NULL; + temp = substring (string, 0, offset); + return (temp); +} +#endif + +/* **************************************************************** */ +/* */ +/* Functions to convert strings to WORD_LISTs and vice versa */ +/* */ +/* **************************************************************** */ + +/* 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. */ +char * +string_list_internal (list, sep) + WORD_LIST *list; + char *sep; +{ + register WORD_LIST *t; + char *result, *r; + size_t word_len, sep_len, result_size; + + if (list == 0) + return ((char *)NULL); + + /* Short-circuit quickly if we don't need to separate anything. */ + if (list->next == 0) + return (savestring (list->word->word)); + + /* 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 = (char *)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, " ")); +} + +/* An external interface that can be used by the rest of the shell to + obtain a string containing the first character in $IFS. Handles all + the multibyte complications. If LENP is non-null, it is set to the + length of the returned string. */ +char * +ifs_firstchar (lenp) + int *lenp; +{ + char *ret; + int len; + + ret = xmalloc (MB_LEN_MAX + 1); +#if defined (HANDLE_MULTIBYTE) + if (ifs_firstc_len == 1) + { + ret[0] = ifs_firstc[0]; + ret[1] = '\0'; + len = ret[0] ? 1 : 0; + } + else + { + memcpy (ret, ifs_firstc, ifs_firstc_len); + ret[len = ifs_firstc_len] = '\0'; + } +#else + ret[0] = ifs_firstc; + ret[1] = '\0'; + len = ret[0] ? 0 : 1; +#endif + + if (lenp) + *lenp = len; + + return ret; +} + +/* 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." */ +/* Posix interpretation 888 changes this when IFS is null by specifying + that when unquoted, this expands to separate arguments */ +char * +string_list_dollar_star (list, quoted, flags) + WORD_LIST *list; + int quoted, flags; +{ + char *ret; +#if defined (HANDLE_MULTIBYTE) +# if defined (__GNUC__) + char sep[MB_CUR_MAX + 1]; +# else + char *sep = 0; +# endif +#else + char sep[2]; +#endif + +#if defined (HANDLE_MULTIBYTE) +# if !defined (__GNUC__) + sep = (char *)xmalloc (MB_CUR_MAX + 1); +# endif /* !__GNUC__ */ + if (ifs_firstc_len == 1) + { + sep[0] = ifs_firstc[0]; + sep[1] = '\0'; + } + else + { + memcpy (sep, ifs_firstc, ifs_firstc_len); + sep[ifs_firstc_len] = '\0'; + } +#else + sep[0] = ifs_firstc; + sep[1] = '\0'; +#endif + + ret = string_list_internal (list, sep); +#if defined (HANDLE_MULTIBYTE) && !defined (__GNUC__) + free (sep); +#endif + return ret; +} + +/* Turn $@ into a string. If (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + is non-zero, the $@ appears within double quotes, and we should quote + the list before converting it into a string. If IFS is unset, and the + word is not quoted, we just need to quote CTLESC and CTLNUL characters + in the words in the list, because the default value of $IFS is + , IFS characters in the words in the list should + also be split. If IFS is null, and the word is not quoted, we need + to quote the words in the list to preserve the positional parameters + exactly. + Valid values for the FLAGS argument are the PF_ flags in command.h, + the only one we care about is PF_ASSIGNRHS. $@ is supposed to expand + to the positional parameters separated by spaces no matter what IFS is + set to if in a context where word splitting is not performed. The only + one that we didn't handle before is assignment statement arguments to + declaration builtins like `declare'. */ +char * +string_list_dollar_at (list, quoted, flags) + WORD_LIST *list; + int quoted; + int flags; +{ + char *ifs, *ret; +#if defined (HANDLE_MULTIBYTE) +# if defined (__GNUC__) + char sep[MB_CUR_MAX + 1]; +# else + char *sep = 0; +# endif /* !__GNUC__ */ +#else + char sep[2]; +#endif + WORD_LIST *tlist; + + /* XXX this could just be ifs = ifs_value; */ + ifs = ifs_var ? value_cell (ifs_var) : (char *)0; + +#if defined (HANDLE_MULTIBYTE) +# if !defined (__GNUC__) + sep = (char *)xmalloc (MB_CUR_MAX + 1); +# endif /* !__GNUC__ */ + /* XXX - testing PF_ASSIGNRHS to make sure positional parameters are + separated with a space even when word splitting will not occur. */ + if (flags & PF_ASSIGNRHS) + { + sep[0] = ' '; + sep[1] = '\0'; + } + else if (ifs && *ifs) + { + if (ifs_firstc_len == 1) + { + sep[0] = ifs_firstc[0]; + sep[1] = '\0'; + } + else + { + memcpy (sep, ifs_firstc, ifs_firstc_len); + sep[ifs_firstc_len] = '\0'; + } + } + else + { + sep[0] = ' '; + sep[1] = '\0'; + } +#else /* !HANDLE_MULTIBYTE */ + /* XXX - PF_ASSIGNRHS means no word splitting, so we want positional + parameters separated by a space. */ + sep[0] = ((flags & PF_ASSIGNRHS) || ifs == 0 || *ifs == 0) ? ' ' : *ifs; + sep[1] = '\0'; +#endif /* !HANDLE_MULTIBYTE */ + + /* XXX -- why call quote_list if ifs == 0? we can get away without doing + it now that quote_escapes quotes spaces */ + tlist = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES|Q_PATQUOTE)) + ? quote_list (list) + : list_quote_escapes (list); + + ret = string_list_internal (tlist, sep); +#if defined (HANDLE_MULTIBYTE) && !defined (__GNUC__) + free (sep); +#endif + return ret; +} + +/* Turn the positional parameters into a string, understanding quoting and + the various subtleties of using the first character of $IFS as the + separator. Calls string_list_dollar_at, string_list_dollar_star, and + string_list as appropriate. */ +/* This needs to fully understand the additional contexts where word + splitting does not occur (W_ASSIGNRHS, etc.) */ +char * +string_list_pos_params (pchar, list, quoted, pflags) + int pchar; + WORD_LIST *list; + int quoted, pflags; +{ + char *ret; + WORD_LIST *tlist; + + if (pchar == '*' && (quoted & Q_DOUBLE_QUOTES)) + { + tlist = quote_list (list); + word_list_remove_quoted_nulls (tlist); + ret = string_list_dollar_star (tlist, 0, 0); + } + else if (pchar == '*' && (quoted & Q_HERE_DOCUMENT)) + { + tlist = quote_list (list); + word_list_remove_quoted_nulls (tlist); + ret = string_list (tlist); + } + else if (pchar == '*' && quoted == 0 && ifs_is_null) /* XXX */ + ret = expand_no_split_dollar_star ? string_list_dollar_star (list, quoted, 0) : string_list_dollar_at (list, quoted, 0); /* Posix interp 888 */ + else if (pchar == '*' && quoted == 0 && (pflags & PF_ASSIGNRHS)) /* XXX */ + ret = expand_no_split_dollar_star ? string_list_dollar_star (list, quoted, 0) : string_list_dollar_at (list, quoted, 0); /* Posix interp 888 */ + else if (pchar == '*') + { + /* Even when unquoted, string_list_dollar_star does the right thing + making sure that the first character of $IFS is used as the + separator. */ + ret = string_list_dollar_star (list, quoted, 0); + } + else if (pchar == '@' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + /* We use string_list_dollar_at, but only if the string is quoted, since + that quotes the escapes if it's not, which we don't want. We could + use string_list (the old code did), but that doesn't do the right + thing if the first character of $IFS is not a space. We use + string_list_dollar_star if the string is unquoted so we make sure that + the elements of $@ are separated by the first character of $IFS for + later splitting. */ + ret = string_list_dollar_at (list, quoted, 0); + else if (pchar == '@' && quoted == 0 && ifs_is_null) /* XXX */ + ret = string_list_dollar_at (list, quoted, 0); /* Posix interp 888 */ + else if (pchar == '@' && quoted == 0 && (pflags & PF_ASSIGNRHS)) + ret = string_list_dollar_at (list, quoted, pflags); /* Posix interp 888 */ + else if (pchar == '@') + ret = string_list_dollar_star (list, quoted, 0); + else + ret = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (list) : list); + + return ret; +} + +/* 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! */ + +/* This performs word splitting and quoted null character removal on + STRING. */ +#define issep(c) \ + (((separators)[0]) ? ((separators)[1] ? isifs(c) \ + : (c) == (separators)[0]) \ + : 0) + +/* member of the space character class in the current locale */ +#define ifs_whitespace(c) ISSPACE(c) + +/* "adjacent IFS white space" */ +#define ifs_whitesep(c) ((sh_style_split || separators == 0) ? spctabnl (c) \ + : ifs_whitespace (c)) + +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, whitesep, xflags, free_word; + size_t slen; + + if (!string || !*string) + return ((WORD_LIST *)NULL); + + sh_style_split = separators && separators[0] == ' ' && + separators[1] == '\t' && + separators[2] == '\n' && + separators[3] == '\0'; + for (xflags = 0, s = ifs_value; s && *s; s++) + { + if (*s == CTLESC) xflags |= SX_NOCTLESC; + else if (*s == CTLNUL) xflags |= SX_NOESCCTLNUL; + } + + slen = 0; + /* 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. We use the + Posix definition of whitespace as a member of the space character + class in the current locale. */ +#if 0 + if (!quoted || !separators || !*separators) +#else + /* issep() requires that separators be non-null, and always returns 0 if + separator is the empty string, so don't bother if we get an empty string + for separators. We already returned NULL above if STRING is empty. */ + if (!quoted && separators && *separators) +#endif + { + for (s = string; *s && issep (*s) && ifs_whitespace (*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 whitespace characters as long as they are separators + This obeys the field splitting rules in Posix.2. */ + slen = STRLEN (string); + for (result = (WORD_LIST *)NULL, sindex = 0; string[sindex]; ) + { + /* Don't need string length in ADVANCE_CHAR unless multibyte chars are + possible, but need it in string_extract_verbatim for bounds checking */ + current_word = string_extract_verbatim (string, slen, &sindex, separators, xflags); + if (current_word == 0) + break; + + free_word = 1; /* If non-zero, we free current_word */ + + /* 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 (QUOTED_NULL (current_word)) + { + t = alloc_word_desc (); + t->word = make_quoted_char ('\0'); + t->flags |= W_QUOTED|W_HASQUOTEDNULL; + result = make_word_list (t, result); + } + else if (current_word[0] != '\0') + { + /* If we have something, then add it regardless. However, + perform quoted null character removal on the current word. */ + remove_quoted_nulls (current_word); + + /* We don't want to set the word flags based on the string contents + here -- that's mostly for the parser -- so we just allocate a + WORD_DESC *, assign current_word (noting that we don't want to + free it), and skip all of make_word. */ + t = alloc_word_desc (); + t->word = current_word; + result = make_word_list (t, result); + free_word = 0; + result->word->flags &= ~W_HASQUOTEDNULL; /* just to be sure */ + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + result->word->flags |= W_QUOTED; + /* If removing quoted null characters leaves an empty word, note + that we saw this for the caller to act on. */ + if (current_word == 0 || current_word[0] == '\0') + result->word->flags |= W_SAWQUOTEDNULL; + } + + /* 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 && !ifs_whitespace (string[sindex])) + { + t = alloc_word_desc (); + t->word = make_quoted_char ('\0'); + t->flags |= W_QUOTED|W_HASQUOTEDNULL; + result = make_word_list (t, result); + } + + if (free_word) + free (current_word); + + /* Note whether or not the separator is IFS whitespace, used later. */ + whitesep = string[sindex] && ifs_whitesep (string[sindex]); + + /* Move past the current separator character. */ + if (string[sindex]) + { + DECLARE_MBSTATE; + ADVANCE_CHAR (string, slen, sindex); + } + + /* Now skip sequences of whitespace characters if they are + in the list of separators. */ + while (string[sindex] && ifs_whitesep (string[sindex]) && issep (string[sindex])) + sindex++; + + /* If the first separator was IFS whitespace and the current character + is a non-whitespace IFS character, it should be part of the current + field delimiter, not a separate delimiter that would result in an + empty field. Look at POSIX.2, 3.6.5, (3)(b). */ + if (string[sindex] && whitesep && issep (string[sindex]) && !ifs_whitesep (string[sindex])) + { + sindex++; + /* An IFS character that is not IFS white space, along with any + adjacent IFS white space, shall delimit a field. (SUSv3) */ + while (string[sindex] && ifs_whitesep (string[sindex]) && isifs (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. + + This is never called with SEPARATORS != $IFS, and takes advantage of that. + + XXX - this function is very similar to list_string; they should be + combined - XXX */ + +/* character is in $IFS */ +#define islocalsep(c) (local_cmap[(unsigned char)(c)] != 0) + +char * +get_word_from_string (stringp, separators, endptr) + char **stringp, *separators, **endptr; +{ + register char *s; + char *current_word; + int sindex, sh_style_split, whitesep, xflags; + unsigned char local_cmap[UCHAR_MAX+1]; /* really only need single-byte chars here */ + size_t slen; + + if (!stringp || !*stringp || !**stringp) + return ((char *)NULL); + + sh_style_split = separators && separators[0] == ' ' && + separators[1] == '\t' && + separators[2] == '\n' && + separators[3] == '\0'; + memset (local_cmap, '\0', sizeof (local_cmap)); + for (xflags = 0, s = separators; s && *s; s++) + { + if (*s == CTLESC) xflags |= SX_NOCTLESC; + if (*s == CTLNUL) xflags |= SX_NOESCCTLNUL; + local_cmap[(unsigned char)*s] = 1; /* local charmap of separators */ + } + + s = *stringp; + slen = 0; + + /* Remove sequences of whitespace at the beginning of STRING, as + long as those characters appear in SEPARATORS. This happens if + SEPARATORS == $' \t\n' or if IFS is unset. */ + if (sh_style_split || separators == 0) + for (; *s && spctabnl (*s) && islocalsep (*s); s++); + else + for (; *s && ifs_whitespace (*s) && islocalsep (*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; + /* Don't need string length in ADVANCE_CHAR unless multibyte chars are + possible, but need it in string_extract_verbatim for bounds checking */ + slen = STRLEN (s); + current_word = string_extract_verbatim (s, slen, &sindex, separators, xflags); + + /* Set ENDPTR to the first character after the end of the word. */ + if (endptr) + *endptr = s + sindex; + + /* Note whether or not the separator is IFS whitespace, used later. */ + whitesep = s[sindex] && ifs_whitesep (s[sindex]); + + /* Move past the current separator character. */ + if (s[sindex]) + { + DECLARE_MBSTATE; + ADVANCE_CHAR (s, slen, sindex); + } + + /* Now skip sequences of space, tab, or newline characters if they are + in the list of separators. */ + while (s[sindex] && spctabnl (s[sindex]) && islocalsep (s[sindex])) + sindex++; + + /* If the first separator was IFS whitespace and the current character is + a non-whitespace IFS character, it should be part of the current field + delimiter, not a separate delimiter that would result in an empty field. + Look at POSIX.2, 3.6.5, (3)(b). */ + if (s[sindex] && whitesep && islocalsep (s[sindex]) && !ifs_whitesep (s[sindex])) + { + sindex++; + /* An IFS character that is not IFS white space, along with any adjacent + IFS white space, shall delimit a field. */ + while (s[sindex] && ifs_whitesep (s[sindex]) && islocalsep(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) && isifs (*s)) || + (saw_escape && *s == CTLESC && spctabnl (s[1])))) + s--; + *++s = '\0'; + return string; +} + +#if 0 +/* UNUSED */ +/* Split STRING into words at whitespace. Obeys shell-style quoting with + backslashes, single and double quotes. */ +WORD_LIST * +list_string_with_quotes (string) + char *string; +{ + WORD_LIST *list; + char *token, *s; + size_t s_len; + int c, i, tokstart, len; + + for (s = string; s && *s && spctabnl (*s); s++) + ; + if (s == 0 || *s == 0) + return ((WORD_LIST *)NULL); + + s_len = strlen (s); + 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, s_len, ++i, 0); + else if (c == '"') + i = skip_double_quoted (s, s_len, ++i, 0); + 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. */ + token = substring (s, tokstart, i); + list = add_string_to_list (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 + +/********************************************************/ +/* */ +/* Functions to perform assignment statements */ +/* */ +/********************************************************/ + +#if defined (ARRAY_VARS) +static SHELL_VAR * +do_compound_assignment (name, value, flags) + char *name, *value; + int flags; +{ + SHELL_VAR *v; + int mklocal, mkassoc, mkglobal, chklocal; + WORD_LIST *list; + char *newname; /* used for local nameref references */ + + mklocal = flags & ASS_MKLOCAL; + mkassoc = flags & ASS_MKASSOC; + mkglobal = flags & ASS_MKGLOBAL; + chklocal = flags & ASS_CHKLOCAL; + + if (mklocal && variable_context) + { + v = find_variable (name); /* follows namerefs */ + newname = (v == 0) ? nameref_transform_name (name, flags) : v->name; + if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) + { + if (readonly_p (v)) + err_readonly (name); + return (v); /* XXX */ + } + list = expand_compound_array_assignment (v, value, flags); + if (mkassoc) + v = make_local_assoc_variable (newname, 0); + else if (v == 0 || (array_p (v) == 0 && assoc_p (v) == 0) || v->context != variable_context) + v = make_local_array_variable (newname, 0); + if (v) + assign_compound_array_list (v, list, flags); + if (list) + dispose_words (list); + } + /* In a function but forcing assignment in global context. CHKLOCAL means to + check for an existing local variable first. */ + else if (mkglobal && variable_context) + { + v = chklocal ? find_variable (name) : 0; + if (v && (local_p (v) == 0 || v->context != variable_context)) + v = 0; + if (v == 0) + v = find_global_variable (name); + if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) + { + if (readonly_p (v)) + err_readonly (name); + return (v); /* XXX */ + } + /* sanity check */ + newname = (v == 0) ? nameref_transform_name (name, flags) : name; + list = expand_compound_array_assignment (v, value, flags); + if (v == 0 && mkassoc) + v = make_new_assoc_variable (newname); + else if (v && mkassoc && assoc_p (v) == 0) + v = convert_var_to_assoc (v); + else if (v == 0) + v = make_new_array_variable (newname); + else if (v && mkassoc == 0 && array_p (v) == 0) + v = convert_var_to_array (v); + if (v) + assign_compound_array_list (v, list, flags); + if (list) + dispose_words (list); + } + else + { + v = assign_array_from_string (name, value, flags); + if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) + { + if (readonly_p (v)) + err_readonly (name); + return (v); /* XXX */ + } + } + + return (v); +} +#endif + +/* 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 (word, expand) + const WORD_DESC *word; + int expand; +{ + int offset, appendop, assign_list, aflags, retval; + char *name, *value, *temp; + SHELL_VAR *entry; +#if defined (ARRAY_VARS) + char *t; + int ni; +#endif + const char *string; + + if (word == 0 || word->word == 0) + return 0; + + appendop = assign_list = aflags = 0; + string = word->word; + offset = assignment (string, 0); + name = savestring (string); + value = (char *)NULL; + + if (name[offset] == '=') + { + if (name[offset - 1] == '+') + { + appendop = 1; + name[offset - 1] = '\0'; + } + + name[offset] = 0; /* might need this set later */ + temp = name + offset + 1; + +#if defined (ARRAY_VARS) + if (expand && (word->flags & W_COMPASSIGN)) + { + assign_list = ni = 1; + value = extract_array_assignment_list (temp, &ni); + } + else +#endif + if (expand && temp[0]) + value = expand_string_if_necessary (temp, 0, expand_string_assignment); + else + value = savestring (temp); + } + + if (value == 0) + { + value = (char *)xmalloc (1); + value[0] = '\0'; + } + + if (echo_command_at_execute) + { + if (appendop) + name[offset - 1] = '+'; + xtrace_print_assignment (name, value, assign_list, 1); + if (appendop) + name[offset - 1] = '\0'; + } + +#define ASSIGN_RETURN(r) do { FREE (value); free (name); return (r); } while (0) + + if (appendop) + aflags |= ASS_APPEND; + +#if defined (ARRAY_VARS) + if (t = mbschr (name, LBRACK)) + { + if (assign_list) + { + report_error (_("%s: cannot assign list to array member"), name); + ASSIGN_RETURN (0); + } + entry = assign_array_element (name, value, aflags); + if (entry == 0) + ASSIGN_RETURN (0); + } + else if (assign_list) + { + if ((word->flags & W_ASSIGNARG) && (word->flags & W_CHKLOCAL)) + aflags |= ASS_CHKLOCAL; + if ((word->flags & W_ASSIGNARG) && (word->flags & W_ASSNGLOBAL) == 0) + aflags |= ASS_MKLOCAL; + if ((word->flags & W_ASSIGNARG) && (word->flags & W_ASSNGLOBAL)) + aflags |= ASS_MKGLOBAL; + if (word->flags & W_ASSIGNASSOC) + aflags |= ASS_MKASSOC; + entry = do_compound_assignment (name, value, aflags); + } + else +#endif /* ARRAY_VARS */ + entry = bind_variable (name, value, aflags); + + if (entry) + stupidly_hack_special_variables (entry->name); /* might be a nameref */ + else + stupidly_hack_special_variables (name); + + /* Return 1 if the assignment seems to have been performed correctly. */ + if (entry == 0 || readonly_p (entry)) + retval = 0; /* assignment failure */ + else if (noassign_p (entry)) + { + set_exit_status (EXECUTION_FAILURE); + retval = 1; /* error status, but not assignment failure */ + } + else + retval = 1; + + if (entry && retval != 0 && noassign_p (entry) == 0) + VUNSETATTR (entry, att_invisible); + + ASSIGN_RETURN (retval); +} + +/* Perform the assignment statement in STRING, and expand the + right side by doing tilde, command and parameter expansion. */ +int +do_assignment (string) + char *string; +{ + WORD_DESC td; + + td.flags = W_ASSIGNMENT; + td.word = string; + + return do_assignment_internal (&td, 1); +} + +int +do_word_assignment (word, flags) + WORD_DESC *word; + int flags; +{ + return do_assignment_internal (word, 1); +} + +/* Given STRING, an assignment string, get the value of the right side + of the `=', and bind it to the left side. Do not perform any word + expansions on the right hand side. */ +int +do_assignment_no_expand (string) + char *string; +{ + WORD_DESC td; + + td.flags = W_ASSIGNMENT; + td.word = string; + + return (do_assignment_internal (&td, 0)); +} + +/*************************************************** + * * + * Functions to manage the positional parameters * + * * + ***************************************************/ + +/* 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 *)); +} + +/* Return the value of a positional parameter. This handles values > 10. */ +char * +get_dollar_var_value (ind) + intmax_t 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); +} + +/* 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, 0, 0) : string_list (list); + dispose_words (list); + return (string); +} + +/* Return a string containing the positional parameters from START to + END, inclusive. If STRING[0] == '*', we obey the rules for $*, + which only makes a difference if QUOTED is non-zero. If QUOTED includes + Q_HERE_DOCUMENT or Q_DOUBLE_QUOTES, this returns a quoted list, otherwise + no quoting chars are added. */ +static char * +pos_params (string, start, end, quoted, pflags) + char *string; + int start, end, quoted, pflags; +{ + WORD_LIST *save, *params, *h, *t; + char *ret; + int i; + + /* see if we can short-circuit. if start == end, we want 0 parameters. */ + if (start == end) + return ((char *)NULL); + + save = params = list_rest_of_args (); + if (save == 0 && start > 0) + return ((char *)NULL); + + if (start == 0) /* handle ${@:0[:x]} specially */ + { + t = make_word_list (make_word (dollar_vars[0]), params); + save = params = t; + } + + for (i = start ? 1 : 0; params && i < start; i++) + params = params->next; + if (params == 0) + { + dispose_words (save); + return ((char *)NULL); + } + for (h = t = params; params && i < end; i++) + { + t = params; + params = params->next; + } + t->next = (WORD_LIST *)NULL; + + ret = string_list_pos_params (string[0], h, quoted, pflags); + + if (t != params) + t->next = params; + + dispose_words (save); + return (ret); +} + +/******************************************************************/ +/* */ +/* Functions to expand strings to strings or WORD_LISTs */ +/* */ +/******************************************************************/ + +#if defined (PROCESS_SUBSTITUTION) +#define EXP_CHAR(s) (s == '$' || s == '`' || s == '<' || s == '>' || s == CTLESC || s == '~') +#else +#define EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC || s == '~') +#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 * +expand_string_if_necessary (string, quoted, func) + char *string; + int quoted; + EXPFUNC *func; +{ + WORD_LIST *list; + size_t slen; + int i, saw_quote; + char *ret; + DECLARE_MBSTATE; + + /* Don't need string length for ADVANCE_CHAR unless multibyte chars possible. */ + slen = (MB_CUR_MAX > 1) ? strlen (string) : 0; + i = saw_quote = 0; + while (string[i]) + { + if (EXP_CHAR (string[i])) + break; + else if (string[i] == '\'' || string[i] == '\\' || string[i] == '"') + saw_quote = 1; + ADVANCE_CHAR (string, slen, i); + } + + 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; +} + +static inline char * +expand_string_to_string_internal (string, quoted, func) + char *string; + int quoted; + EXPFUNC *func; +{ + WORD_LIST *list; + char *ret; + + if (string == 0 || *string == '\0') + return ((char *)NULL); + + list = (*func) (string, quoted); + if (list) + { + ret = string_list (list); + dispose_words (list); + } + else + ret = (char *)NULL; + + return (ret); +} + +char * +expand_string_to_string (string, quoted) + char *string; + int quoted; +{ + return (expand_string_to_string_internal (string, quoted, expand_string)); +} + +char * +expand_string_unsplit_to_string (string, quoted) + char *string; + int quoted; +{ + return (expand_string_to_string_internal (string, quoted, expand_string_unsplit)); +} + +char * +expand_assignment_string_to_string (string, quoted) + char *string; + int quoted; +{ + return (expand_string_to_string_internal (string, quoted, expand_string_assignment)); +} + +char * +expand_arith_string (string, quoted) + char *string; + int quoted; +{ + WORD_DESC td; + WORD_LIST *list, *tlist; + size_t slen; + int i, saw_quote; + char *ret; + DECLARE_MBSTATE; + + /* Don't need string length for ADVANCE_CHAR unless multibyte chars possible. */ + slen = (MB_CUR_MAX > 1) ? strlen (string) : 0; + i = saw_quote = 0; + while (string[i]) + { + if (EXP_CHAR (string[i])) + break; + else if (string[i] == '\'' || string[i] == '\\' || string[i] == '"') + saw_quote = 1; + ADVANCE_CHAR (string, slen, i); + } + + if (string[i]) + { + /* This is expanded version of expand_string_internal as it's called by + expand_string_leave_quoted */ + td.flags = W_NOPROCSUB|W_NOTILDE; /* don't want process substitution or tilde expansion */ +#if 0 /* TAG: bash-5.2 */ + if (quoted & Q_ARRAYSUB) + td.flags |= W_NOCOMSUB; +#endif + td.word = savestring (string); + list = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL); + /* This takes care of the calls from expand_string_leave_quoted and + expand_string */ + if (list) + { + tlist = word_list_split (list); + dispose_words (list); + list = tlist; + if (list) + dequote_list (list); + } + /* This comes from expand_string_if_necessary */ + if (list) + { + ret = string_list (list); + dispose_words (list); + } + else + ret = (char *)NULL; + FREE (td.word); + } + else if (saw_quote && (quoted & Q_ARITH)) + ret = string_quote_removal (string, quoted); + 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 (COND_COMMAND) +/* Just remove backslashes in STRING. Returns a new string. */ +char * +remove_backslashes (string) + char *string; +{ + char *r, *ret, *s; + + r = ret = (char *)xmalloc (strlen (string) + 1); + for (s = string; s && *s; ) + { + if (*s == '\\') + s++; + if (*s == 0) + break; + *r++ = *s++; + } + *r = '\0'; + return ret; +} + +/* This needs better error handling. */ +/* Expand W for use as an argument to a unary or binary operator in a + [[...]] expression. If SPECIAL is 1, this is the rhs argument + to the != or == operator, and should be treated as a pattern. In + this case, we quote the string specially for the globbing code. If + SPECIAL is 2, this is an rhs argument for the =~ operator, and should + be quoted appropriately for regcomp/regexec. The caller is responsible + for removing the backslashes if the unquoted word is needed later. In + any case, since we don't perform word splitting, we need to do quoted + null character removal. */ +char * +cond_expand_word (w, special) + WORD_DESC *w; + int special; +{ + char *r, *p; + WORD_LIST *l; + int qflags; + + if (w->word == 0 || w->word[0] == '\0') + return ((char *)NULL); + + expand_no_split_dollar_star = 1; + w->flags |= W_NOSPLIT2; + l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0); + expand_no_split_dollar_star = 0; + if (l) + { + if (special == 0) /* LHS */ + { + if (l->word) + word_list_remove_quoted_nulls (l); + dequote_list (l); + r = string_list (l); + } + else + { + /* Need to figure out whether or not we should call dequote_escapes + or a new dequote_ctlnul function here, and under what + circumstances. */ + qflags = QGLOB_CVTNULL|QGLOB_CTLESC; + if (special == 2) + qflags |= QGLOB_REGEXP; + word_list_remove_quoted_nulls (l); + p = string_list (l); + r = quote_string_for_globbing (p, qflags); + free (p); + } + dispose_words (l); + } + else + r = (char *)NULL; + + return r; +} +#endif + +/* 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, i, c, e) + WORD_DESC *w; + int q, i, *c, *e; +{ + WORD_LIST *result; + + result = expand_word_internal (w, q, i, c, e); + if (result == &expand_word_error || result == &expand_word_fatal) + { + /* By convention, each time this error is returned, w->word has + already been freed (it sometimes may not be in the fatal case, + but that doesn't result in a memory leak because we're going + to exit in most cases). */ + w->word = (char *)NULL; + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level ((result == &expand_word_error) ? DISCARD : FORCE_EOF); + /* NOTREACHED */ + return (NULL); + } + else + return (result); +} + +/* Perform parameter expansion, command substitution, and arithmetic + expansion on STRING, as if it were a word. Leave the result quoted. + Since this does not perform word splitting, it leaves quoted nulls + in the result. */ +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); + + td.flags = 0; + td.word = savestring (string); + + tresult = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL); + + FREE (td.word); + 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 == 0 || *string == '\0') + return ((WORD_LIST *)NULL); + + expand_no_split_dollar_star = 1; + value = expand_string_internal (string, quoted); + expand_no_split_dollar_star = 0; + + if (value) + { + if (value->word) + { + remove_quoted_nulls (value->word->word); /* XXX */ + value->word->flags &= ~W_HASQUOTEDNULL; + } + dequote_list (value); + } + return (value); +} + +/* Expand the rhs of an assignment statement */ +WORD_LIST * +expand_string_assignment (string, quoted) + char *string; + int quoted; +{ + WORD_DESC td; + WORD_LIST *value; + + if (string == 0 || *string == '\0') + return ((WORD_LIST *)NULL); + + expand_no_split_dollar_star = 1; + +#if 0 + /* Other shells (ksh93) do it this way, which affects how $@ is expanded + in constructs like bar=${@#0} (preserves the spaces resulting from the + expansion of $@ in a context where you don't do word splitting); Posix + interp 888 makes the expansion of $@ in contexts where word splitting + is not performed unspecified. */ + td.flags = W_ASSIGNRHS|W_NOSPLIT2; /* Posix interp 888 */ +#else + td.flags = W_ASSIGNRHS; +#endif + td.word = savestring (string); + value = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL); + FREE (td.word); + + expand_no_split_dollar_star = 0; + + if (value) + { + if (value->word) + { + remove_quoted_nulls (value->word->word); /* XXX */ + value->word->flags &= ~W_HASQUOTEDNULL; + } + dequote_list (value); + } + return (value); +} + + +/* Expand one of the PS? prompt strings. This is a sort of combination of + expand_string_unsplit and expand_string_internal, but returns the + passed string when an error occurs. Might want to trap other calls + to jump_to_top_level here so we don't endlessly loop. */ +WORD_LIST * +expand_prompt_string (string, quoted, wflags) + char *string; + int quoted; + int wflags; +{ + WORD_LIST *value; + WORD_DESC td; + + if (string == 0 || *string == 0) + return ((WORD_LIST *)NULL); + + td.flags = wflags; + td.word = savestring (string); + + no_longjmp_on_fatal_error = 1; + value = expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL); + no_longjmp_on_fatal_error = 0; + + if (value == &expand_word_error || value == &expand_word_fatal) + { + value = make_word_list (make_bare_word (string), (WORD_LIST *)NULL); + return value; + } + FREE (td.word); + if (value) + { + if (value->word) + { + remove_quoted_nulls (value->word->word); /* XXX */ + value->word->flags &= ~W_HASQUOTEDNULL; + } + 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 + substitution, 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, op, pflags, dollar_at_p, expanded_p) + char *string; + int quoted, op, pflags; + int *dollar_at_p, *expanded_p; +{ + WORD_DESC td; + WORD_LIST *tresult; + int old_nosplit; + + if (string == 0 || *string == '\0') + return (WORD_LIST *)NULL; + + /* We want field splitting to be determined by what is going to be done with + the entire ${parameterOPword} expansion, so we don't want to split the RHS + we expand here. However, the expansion of $* is determined by whether we + are going to eventually perform word splitting, so we want to set this + depending on whether or not are are going to be splitting: if the expansion + is quoted, if the OP is `=', or if IFS is set to the empty string, we + are not going to be splitting, so we set expand_no_split_dollar_star to + note this to callees. + We pass through PF_ASSIGNRHS as W_ASSIGNRHS if this is on the RHS of an + assignment statement. */ + /* The updated treatment of $* is the result of Posix interp 888 */ + /* This was further clarified on the austin-group list in March, 2017 and + in Posix bug 1129 */ + old_nosplit = expand_no_split_dollar_star; + expand_no_split_dollar_star = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || op == '=' || ifs_is_null == 0; /* XXX - was 1 */ + td.flags = W_EXPANDRHS; /* expanding RHS of ${paramOPword} */ + td.flags |= W_NOSPLIT2; /* no splitting, remove "" and '' */ + if (pflags & PF_ASSIGNRHS) /* pass through */ + td.flags |= W_ASSIGNRHS; + if (op == '=') +#if 0 + td.flags |= W_ASSIGNRHS; /* expand b in ${a=b} like assignment */ +#else + td.flags |= W_ASSIGNRHS|W_NOASSNTILDE; /* expand b in ${a=b} like assignment */ +#endif + td.word = string; + tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p); + expand_no_split_dollar_star = old_nosplit; + + return (tresult); +} + +/* This does not perform word splitting or dequote the WORD_LIST + it returns and it treats $* as if it were quoted. */ +static WORD_LIST * +expand_string_for_pat (string, quoted, dollar_at_p, expanded_p) + char *string; + int quoted, *dollar_at_p, *expanded_p; +{ + WORD_DESC td; + WORD_LIST *tresult; + int oexp; + + if (string == 0 || *string == '\0') + return (WORD_LIST *)NULL; + + oexp = expand_no_split_dollar_star; + expand_no_split_dollar_star = 1; + td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */ + td.word = string; + tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p); + expand_no_split_dollar_star = oexp; + + 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 == 0 || *string == '\0') + return ((WORD_LIST *)NULL); + + result = expand_string_leave_quoted (string, quoted); + return (result ? dequote_list (result) : result); +} + +/******************************************* + * * + * 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, 0, (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_unsplit (word, quoted) + WORD_DESC *word; + int quoted; +{ + WORD_LIST *result; + + result = expand_word_leave_quoted (word, quoted); + return (result ? dequote_list (result) : result); +} + +/* Perform shell expansions on WORD, but do not perform word splitting or + quote removal on the result. Virtually identical to expand_word_unsplit; + could be combined if implementations don't diverge. */ +WORD_LIST * +expand_word_leave_quoted (word, quoted) + WORD_DESC *word; + int quoted; +{ + WORD_LIST *result; + + expand_no_split_dollar_star = 1; + if (ifs_is_null) + word->flags |= W_NOSPLIT; + word->flags |= W_NOSPLIT2; + result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL); + expand_no_split_dollar_star = 0; + + return result; +} + +/*************************************************** + * * + * Functions to handle quoting chars * + * * + ***************************************************/ + +/* Conventions: + + A string with s[0] == CTLNUL && s[1] == 0 is a quoted null string. + The parser passes CTLNUL as CTLESC CTLNUL. */ + +/* 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 (word splitting + and filename generation). If IFS is null, we quote spaces as well, just + in case we split on spaces later (in the case of unquoted $@, we will + eventually attempt to split the entire word on spaces). Corresponding + code exists in dequote_escapes. Even if we don't end up splitting on + spaces, quoting spaces is not a problem. This should never be called on + a string that is quoted with single or double quotes or part of a here + document (effectively double-quoted). + FLAGS says whether or not we are going to split the result. If we are not, + and there is a CTLESC or CTLNUL in IFS, we need to quote CTLESC and CTLNUL, + respectively, to prevent them from being removed as part of dequoting. */ +static char * +quote_escapes_internal (string, flags) + const char *string; + int flags; +{ + const char *s, *send; + char *t, *result; + size_t slen; + int quote_spaces, skip_ctlesc, skip_ctlnul, nosplit; + DECLARE_MBSTATE; + + slen = strlen (string); + send = string + slen; + + quote_spaces = (ifs_value && *ifs_value == 0); + nosplit = (flags & PF_NOSPLIT2); + + for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++) + { + skip_ctlesc |= (nosplit == 0 && *s == CTLESC); + skip_ctlnul |= (nosplit == 0 && *s == CTLNUL); + } + + t = result = (char *)xmalloc ((slen * 2) + 1); + s = string; + + while (*s) + { + if ((skip_ctlesc == 0 && *s == CTLESC) || (skip_ctlnul == 0 && *s == CTLNUL) || (quote_spaces && *s == ' ')) + *t++ = CTLESC; + COPY_CHAR_P (t, s, send); + } + *t = '\0'; + + return (result); +} + +char * +quote_escapes (string) + const char *string; +{ + return (quote_escapes_internal (string, 0)); +} + +char * +quote_rhs (string) + const char *string; +{ + return (quote_escapes_internal (string, PF_NOSPLIT2)); +} + +static WORD_LIST * +list_quote_escapes (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_escapes (t); + free (t); + } + return list; +} + +/* Inverse of quote_escapes; remove CTLESC protecting CTLESC or 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. + + We need to remove doubled CTLESC characters inside quoted strings before + quoting the entire string, so we do not double the number of CTLESC + characters. + + Also used by parts of the pattern substitution code. */ +char * +dequote_escapes (string) + const char *string; +{ + const char *s, *send; + char *t, *result; + size_t slen; + int quote_spaces; + DECLARE_MBSTATE; + + if (string == 0) + return (char *)0; + + slen = strlen (string); + send = string + slen; + + t = result = (char *)xmalloc (slen + 1); + + if (strchr (string, CTLESC) == 0) + return (strcpy (result, string)); + + quote_spaces = (ifs_value && *ifs_value == 0); + + s = string; + while (*s) + { + if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL || (quote_spaces && s[1] == ' '))) + { + s++; + if (*s == '\0') + break; + } + COPY_CHAR_P (t, s, send); + } + *t = '\0'; + + return result; +} + +#if defined (INCLUDE_UNUSED) +static WORD_LIST * +list_dequote_escapes (list) + WORD_LIST *list; +{ + register WORD_LIST *w; + char *t; + + for (w = list; w; w = w->next) + { + t = w->word->word; + w->word->word = dequote_escapes (t); + free (t); + } + return list; +} +#endif + +/* Return a new string with the quoted representation of character C. + This turns "" into QUOTED_NULL, so the W_HASQUOTEDNULL flag needs to be + set in any resultant WORD_DESC where this value is the word. */ +static char * +make_quoted_char (c) + int c; +{ + char *temp; + + temp = (char *)xmalloc (3); + if (c == 0) + { + temp[0] = CTLNUL; + temp[1] = '\0'; + } + else + { + temp[0] = CTLESC; + temp[1] = c; + temp[2] = '\0'; + } + return (temp); +} + +/* Quote STRING, returning a new string. This turns "" into QUOTED_NULL, so + the W_HASQUOTEDNULL flag needs to be set in any resultant WORD_DESC where + this value is the word. */ +char * +quote_string (string) + char *string; +{ + register char *t; + size_t slen; + char *result, *send; + + if (*string == 0) + { + result = (char *)xmalloc (2); + result[0] = CTLNUL; + result[1] = '\0'; + } + else + { + DECLARE_MBSTATE; + + slen = strlen (string); + send = string + slen; + + result = (char *)xmalloc ((slen * 2) + 1); + + for (t = result; string < send; ) + { + *t++ = CTLESC; + COPY_CHAR_P (t, string, send); + } + *t = '\0'; + } + return (result); +} + +/* De-quote quoted characters in STRING. */ +char * +dequote_string (string) + char *string; +{ + register char *s, *t; + size_t slen; + char *result, *send; + DECLARE_MBSTATE; + +#if defined (DEBUG) + if (string[0] == CTLESC && string[1] == 0) + internal_inform ("dequote_string: string with bare CTLESC"); +#endif + + slen = STRLEN (string); + + t = result = (char *)xmalloc (slen + 1); + + if (QUOTED_NULL (string)) + { + result[0] = '\0'; + return (result); + } + + /* A string consisting of only a single CTLESC should pass through unchanged */ + if (string[0] == CTLESC && string[1] == 0) + { + result[0] = CTLESC; + result[1] = '\0'; + return (result); + } + + /* 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) + return (strcpy (result, string)); + + send = string + slen; + s = string; + while (*s) + { + if (*s == CTLESC) + { + s++; + if (*s == '\0') + break; + } + COPY_CHAR_P (t, s, send); + } + + *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); + if (*t == 0) + w->word->flags |= W_HASQUOTEDNULL; /* XXX - turn on W_HASQUOTEDNULL here? */ + w->word->flags |= W_QUOTED; + free (t); + } + return list; +} + +WORD_DESC * +dequote_word (word) + WORD_DESC *word; +{ + register char *s; + + s = dequote_string (word->word); + if (QUOTED_NULL (word->word)) + word->flags &= ~W_HASQUOTEDNULL; + free (word->word); + word->word = s; + + return word; +} + +/* De-quote quoted characters in each word in LIST. */ +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); + if (QUOTED_NULL (tlist->word->word)) + tlist->word->flags &= ~W_HASQUOTEDNULL; + free (tlist->word->word); + tlist->word->word = s; + } + return list; +} + +/* Remove CTLESC protecting a CTLESC or CTLNUL in place. Return the passed + string. */ +char * +remove_quoted_escapes (string) + char *string; +{ + char *t; + + if (string) + { + t = dequote_escapes (string); + strcpy (string, t); + free (t); + } + + return (string); +} + +/* Remove quoted $IFS characters from STRING. Quoted IFS characters are + added to protect them from word splitting, but we need to remove them + if no word splitting takes place. This returns newly-allocated memory, + so callers can use it to replace savestring(). */ +char * +remove_quoted_ifs (string) + char *string; +{ + register size_t slen; + register int i, j; + char *ret, *send; + DECLARE_MBSTATE; + + slen = strlen (string); + send = string + slen; + + i = j = 0; + ret = (char *)xmalloc (slen + 1); + + while (i < slen) + { + if (string[i] == CTLESC) + { + i++; + if (string[i] == 0 || isifs (string[i]) == 0) + ret[j++] = CTLESC; + if (i == slen) + break; + } + + COPY_CHAR_I (ret, j, string, send, i); + } + ret[j] = '\0'; + + return (ret); +} + +char * +remove_quoted_nulls (string) + char *string; +{ + register size_t slen; + register int i, j, prev_i; + DECLARE_MBSTATE; + + if (strchr (string, CTLNUL) == 0) /* XXX */ + return string; /* XXX */ + + slen = strlen (string); + i = j = 0; + + while (i < slen) + { + if (string[i] == CTLESC) + { + /* Old code had j++, but we cannot assume that i == j at this + point -- what if a CTLNUL has already been removed from the + string? We don't want to drop the CTLESC or recopy characters + that we've already copied down. */ + i++; + string[j++] = CTLESC; + if (i == slen) + break; + } + else if (string[i] == CTLNUL) + { + i++; + continue; + } + + prev_i = i; + ADVANCE_CHAR (string, slen, i); /* COPY_CHAR_I? */ + if (j < prev_i) + { + do string[j++] = string[prev_i++]; while (prev_i < i); + } + else + j = i; + } + string[j] = '\0'; + + return (string); +} + +/* 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); + t->word->flags &= ~W_HASQUOTEDNULL; + } +} + +/* **************************************************************** */ +/* */ +/* Functions for Matching and Removing Patterns */ +/* */ +/* **************************************************************** */ + +#if defined (HANDLE_MULTIBYTE) +# ifdef INCLUDE_UNUSED +static unsigned char * +mb_getcharlens (string, len) + char *string; + int len; +{ + int i, offset, last; + unsigned char *ret; + char *p; + DECLARE_MBSTATE; + + i = offset = 0; + last = 0; + ret = (unsigned char *)xmalloc (len); + memset (ret, 0, len); + while (string[last]) + { + ADVANCE_CHAR (string, len, offset); + ret[last] = offset - last; + last = offset; + } + return ret; +} +# endif +#endif + +/* 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 + +/* Returns its first argument if nothing matched; new memory otherwise */ +static char * +remove_upattern (param, pattern, op) + char *param, *pattern; + int op; +{ + register size_t len; + register char *end; + register char *p, *ret, c; + + 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 (strmatch (pattern, param, FNMATCH_EXTFLAG) != 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 (strmatch (pattern, param, FNMATCH_EXTFLAG) != 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 (strmatch (pattern, p, FNMATCH_EXTFLAG) != 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 (strmatch (pattern, p, FNMATCH_EXTFLAG) != FNM_NOMATCH) + { + c = *p; *p = '\0'; + ret = savestring (param); + *p = c; + return (ret); + } + } + break; + } + + return (param); /* no match, return original string */ +} + +#if defined (HANDLE_MULTIBYTE) +/* Returns its first argument if nothing matched; new memory otherwise */ +static wchar_t * +remove_wpattern (wparam, wstrlen, wpattern, op) + wchar_t *wparam; + size_t wstrlen; + wchar_t *wpattern; + int op; +{ + wchar_t wc, *ret; + int n; + + switch (op) + { + case RP_LONG_LEFT: /* remove longest match at start */ + for (n = wstrlen; n >= 0; n--) + { + wc = wparam[n]; wparam[n] = L'\0'; + if (wcsmatch (wpattern, wparam, FNMATCH_EXTFLAG) != FNM_NOMATCH) + { + wparam[n] = wc; + return (wcsdup (wparam + n)); + } + wparam[n] = wc; + } + break; + + case RP_SHORT_LEFT: /* remove shortest match at start */ + for (n = 0; n <= wstrlen; n++) + { + wc = wparam[n]; wparam[n] = L'\0'; + if (wcsmatch (wpattern, wparam, FNMATCH_EXTFLAG) != FNM_NOMATCH) + { + wparam[n] = wc; + return (wcsdup (wparam + n)); + } + wparam[n] = wc; + } + break; + + case RP_LONG_RIGHT: /* remove longest match at end */ + for (n = 0; n <= wstrlen; n++) + { + if (wcsmatch (wpattern, wparam + n, FNMATCH_EXTFLAG) != FNM_NOMATCH) + { + wc = wparam[n]; wparam[n] = L'\0'; + ret = wcsdup (wparam); + wparam[n] = wc; + return (ret); + } + } + break; + + case RP_SHORT_RIGHT: /* remove shortest match at end */ + for (n = wstrlen; n >= 0; n--) + { + if (wcsmatch (wpattern, wparam + n, FNMATCH_EXTFLAG) != FNM_NOMATCH) + { + wc = wparam[n]; wparam[n] = L'\0'; + ret = wcsdup (wparam); + wparam[n] = wc; + return (ret); + } + } + break; + } + + return (wparam); /* no match, return original string */ +} +#endif /* HANDLE_MULTIBYTE */ + +static char * +remove_pattern (param, pattern, op) + char *param, *pattern; + int op; +{ + char *xret; + + if (param == NULL) + return (param); + if (*param == '\0' || pattern == NULL || *pattern == '\0') /* minor optimization */ + return (savestring (param)); + +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1) + { + wchar_t *ret, *oret; + size_t n; + wchar_t *wparam, *wpattern; + mbstate_t ps; + + /* XXX - could optimize here by checking param and pattern for multibyte + chars with mbsmbchar and calling remove_upattern. */ + + n = xdupmbstowcs (&wpattern, NULL, pattern); + if (n == (size_t)-1) + { + xret = remove_upattern (param, pattern, op); + return ((xret == param) ? savestring (param) : xret); + } + n = xdupmbstowcs (&wparam, NULL, param); + + if (n == (size_t)-1) + { + free (wpattern); + xret = remove_upattern (param, pattern, op); + return ((xret == param) ? savestring (param) : xret); + } + oret = ret = remove_wpattern (wparam, n, wpattern, op); + /* Don't bother to convert wparam back to multibyte string if nothing + matched; just return copy of original string */ + if (ret == wparam) + { + free (wparam); + free (wpattern); + return (savestring (param)); + } + + free (wparam); + free (wpattern); + + n = strlen (param); + xret = (char *)xmalloc (n + 1); + memset (&ps, '\0', sizeof (mbstate_t)); + n = wcsrtombs (xret, (const wchar_t **)&ret, n, &ps); + xret[n] = '\0'; /* just to make sure */ + free (oret); + return xret; + } + else +#endif + { + xret = remove_upattern (param, pattern, op); + return ((xret == param) ? savestring (param) : xret); + } +} + +/* 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_upattern (string, pat, mtype, sp, ep) + char *string, *pat; + int mtype; + char **sp, **ep; +{ + int c, mlen; + size_t len; + register char *p, *p1, *npat; + char *end; + + /* If the pattern doesn't match anywhere in the string, go ahead and + short-circuit right away. A minor optimization, saves a bunch of + unnecessary calls to strmatch (up to N calls for a string of N + characters) if the match is unsuccessful. To preserve the semantics + of the substring matches below, we make sure that the pattern has + `*' as first and last character, making a new pattern if necessary. */ + /* XXX - check this later if I ever implement `**' with special meaning, + since this will potentially result in `**' at the beginning or end */ + len = STRLEN (pat); + if (pat[0] != '*' || (pat[0] == '*' && pat[1] == LPAREN && extended_glob) || pat[len - 1] != '*') + { + int unescaped_backslash; + char *pp; + + p = npat = (char *)xmalloc (len + 3); + p1 = pat; + if ((mtype != MATCH_BEG) && (*p1 != '*' || (*p1 == '*' && p1[1] == LPAREN && extended_glob))) + *p++ = '*'; + while (*p1) + *p++ = *p1++; +#if 1 + /* Need to also handle a pattern that ends with an unescaped backslash. + For right now, we ignore it because the pattern matching code will + fail the match anyway */ + /* If the pattern ends with a `*' we leave it alone if it's preceded by + an even number of backslashes, but if it's escaped by a backslash + we need to add another `*'. */ + if ((mtype != MATCH_END) && (p1[-1] == '*' && (unescaped_backslash = p1[-2] == '\\'))) + { + pp = p1 - 3; + while (pp >= pat && *pp-- == '\\') + unescaped_backslash = 1 - unescaped_backslash; + if (unescaped_backslash) + *p++ = '*'; + } + else if (mtype != MATCH_END && p1[-1] != '*') + *p++ = '*'; +#else + if (p1[-1] != '*' || p1[-2] == '\\') + *p++ = '*'; +#endif + *p = '\0'; + } + else + npat = pat; + c = strmatch (npat, string, FNMATCH_EXTFLAG | FNMATCH_IGNCASE); + if (npat != pat) + free (npat); + if (c == FNM_NOMATCH) + return (0); + + len = STRLEN (string); + end = string + len; + + mlen = umatchlen (pat, len); + if (mlen > (int)len) + return (0); + + switch (mtype) + { + case MATCH_ANY: + for (p = string; p <= end; p++) + { + if (match_pattern_char (pat, p, FNMATCH_IGNCASE)) + { + p1 = (mlen == -1) ? end : p + mlen; + /* p1 - p = length of portion of string to be considered + p = current position in string + mlen = number of characters consumed by match (-1 for entire string) + end = end of string + we want to break immediately if the potential match len + is greater than the number of characters remaining in the + string + */ + if (p1 > end) + break; + for ( ; p1 >= p; p1--) + { + c = *p1; *p1 = '\0'; + if (strmatch (pat, p, FNMATCH_EXTFLAG | FNMATCH_IGNCASE) == 0) + { + *p1 = c; + *sp = p; + *ep = p1; + return 1; + } + *p1 = c; +#if 1 + /* If MLEN != -1, we have a fixed length pattern. */ + if (mlen != -1) + break; +#endif + } + } + } + + return (0); + + case MATCH_BEG: + if (match_pattern_char (pat, string, FNMATCH_IGNCASE) == 0) + return (0); + + for (p = (mlen == -1) ? end : string + mlen; p >= string; p--) + { + c = *p; *p = '\0'; + if (strmatch (pat, string, FNMATCH_EXTFLAG | FNMATCH_IGNCASE) == 0) + { + *p = c; + *sp = string; + *ep = p; + return 1; + } + *p = c; + /* If MLEN != -1, we have a fixed length pattern. */ + if (mlen != -1) + break; + } + + return (0); + + case MATCH_END: + for (p = end - ((mlen == -1) ? len : mlen); p <= end; p++) + { + if (strmatch (pat, p, FNMATCH_EXTFLAG | FNMATCH_IGNCASE) == 0) + { + *sp = p; + *ep = end; + return 1; + } + /* If MLEN != -1, we have a fixed length pattern. */ + if (mlen != -1) + break; + } + + return (0); + } + + return (0); +} + +#if defined (HANDLE_MULTIBYTE) + +#define WFOLD(c) (match_ignore_case && iswupper (c) ? towlower (c) : (c)) + +/* Match WPAT anywhere in WSTRING and return the match boundaries. + This returns 1 in case of a successful match, 0 otherwise. Wide + character version. */ +static int +match_wpattern (wstring, indices, wstrlen, wpat, mtype, sp, ep) + wchar_t *wstring; + char **indices; + size_t wstrlen; + wchar_t *wpat; + int mtype; + char **sp, **ep; +{ + wchar_t wc, *wp, *nwpat, *wp1; + size_t len; + int mlen; + int n, n1, n2, simple; + + simple = (wpat[0] != L'\\' && wpat[0] != L'*' && wpat[0] != L'?' && wpat[0] != L'['); +#if defined (EXTENDED_GLOB) + if (extended_glob) + simple &= (wpat[1] != L'(' || (wpat[0] != L'*' && wpat[0] != L'?' && wpat[0] != L'+' && wpat[0] != L'!' && wpat[0] != L'@')); /*)*/ +#endif + + /* If the pattern doesn't match anywhere in the string, go ahead and + short-circuit right away. A minor optimization, saves a bunch of + unnecessary calls to strmatch (up to N calls for a string of N + characters) if the match is unsuccessful. To preserve the semantics + of the substring matches below, we make sure that the pattern has + `*' as first and last character, making a new pattern if necessary. */ + len = wcslen (wpat); + if (wpat[0] != L'*' || (wpat[0] == L'*' && wpat[1] == WLPAREN && extended_glob) || wpat[len - 1] != L'*') + { + int unescaped_backslash; + wchar_t *wpp; + + wp = nwpat = (wchar_t *)xmalloc ((len + 3) * sizeof (wchar_t)); + wp1 = wpat; + if (*wp1 != L'*' || (*wp1 == '*' && wp1[1] == WLPAREN && extended_glob)) + *wp++ = L'*'; + while (*wp1 != L'\0') + *wp++ = *wp1++; +#if 1 + /* See comments above in match_upattern. */ + if (wp1[-1] == L'*' && (unescaped_backslash = wp1[-2] == L'\\')) + { + wpp = wp1 - 3; + while (wpp >= wpat && *wpp-- == L'\\') + unescaped_backslash = 1 - unescaped_backslash; + if (unescaped_backslash) + *wp++ = L'*'; + } + else if (wp1[-1] != L'*') + *wp++ = L'*'; +#else + if (wp1[-1] != L'*' || wp1[-2] == L'\\') + *wp++ = L'*'; +#endif + *wp = '\0'; + } + else + nwpat = wpat; + len = wcsmatch (nwpat, wstring, FNMATCH_EXTFLAG | FNMATCH_IGNCASE); + if (nwpat != wpat) + free (nwpat); + if (len == FNM_NOMATCH) + return (0); + + mlen = wmatchlen (wpat, wstrlen); + if (mlen > (int)wstrlen) + return (0); + +/* itrace("wmatchlen (%ls) -> %d", wpat, mlen); */ + switch (mtype) + { + case MATCH_ANY: + for (n = 0; n <= wstrlen; n++) + { + n2 = simple ? (WFOLD(*wpat) == WFOLD(wstring[n])) : match_pattern_wchar (wpat, wstring + n, FNMATCH_IGNCASE); + if (n2) + { + n1 = (mlen == -1) ? wstrlen : n + mlen; + if (n1 > wstrlen) + break; + + for ( ; n1 >= n; n1--) + { + wc = wstring[n1]; wstring[n1] = L'\0'; + if (wcsmatch (wpat, wstring + n, FNMATCH_EXTFLAG | FNMATCH_IGNCASE) == 0) + { + wstring[n1] = wc; + *sp = indices[n]; + *ep = indices[n1]; + return 1; + } + wstring[n1] = wc; + /* If MLEN != -1, we have a fixed length pattern. */ + if (mlen != -1) + break; + } + } + } + + return (0); + + case MATCH_BEG: + if (match_pattern_wchar (wpat, wstring, FNMATCH_IGNCASE) == 0) + return (0); + + for (n = (mlen == -1) ? wstrlen : mlen; n >= 0; n--) + { + wc = wstring[n]; wstring[n] = L'\0'; + if (wcsmatch (wpat, wstring, FNMATCH_EXTFLAG | FNMATCH_IGNCASE) == 0) + { + wstring[n] = wc; + *sp = indices[0]; + *ep = indices[n]; + return 1; + } + wstring[n] = wc; + /* If MLEN != -1, we have a fixed length pattern. */ + if (mlen != -1) + break; + } + + return (0); + + case MATCH_END: + for (n = wstrlen - ((mlen == -1) ? wstrlen : mlen); n <= wstrlen; n++) + { + if (wcsmatch (wpat, wstring + n, FNMATCH_EXTFLAG | FNMATCH_IGNCASE) == 0) + { + *sp = indices[n]; + *ep = indices[wstrlen]; + return 1; + } + /* If MLEN != -1, we have a fixed length pattern. */ + if (mlen != -1) + break; + } + + return (0); + } + + return (0); +} +#undef WFOLD +#endif /* HANDLE_MULTIBYTE */ + +static int +match_pattern (string, pat, mtype, sp, ep) + char *string, *pat; + int mtype; + char **sp, **ep; +{ +#if defined (HANDLE_MULTIBYTE) + int ret; + size_t n; + wchar_t *wstring, *wpat; + char **indices; +#endif + + if (string == 0 || pat == 0 || *pat == 0) + return (0); + +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1) + { + if (mbsmbchar (string) == 0 && mbsmbchar (pat) == 0) + return (match_upattern (string, pat, mtype, sp, ep)); + + n = xdupmbstowcs (&wpat, NULL, pat); + if (n == (size_t)-1) + return (match_upattern (string, pat, mtype, sp, ep)); + n = xdupmbstowcs (&wstring, &indices, string); + if (n == (size_t)-1) + { + free (wpat); + return (match_upattern (string, pat, mtype, sp, ep)); + } + ret = match_wpattern (wstring, indices, n, wpat, mtype, sp, ep); + + free (wpat); + free (wstring); + free (indices); + + return (ret); + } + else +#endif + return (match_upattern (string, pat, mtype, sp, ep)); +} + +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 strmatch (). 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; +#if 0 + int i; +#endif + /* There is a problem here: how to handle single or double quotes in the + pattern string when the whole expression is between double quotes? + POSIX.2 says that enclosing double quotes do not cause the pattern to + be quoted, but does that leave us a problem with @ and array[@] and their + expansions inside a pattern? */ +#if 0 + if (expandpat && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *tword) + { + i = 0; + pat = string_extract_double_quoted (tword, &i, SX_STRIPDQ); + free (tword); + tword = pat; + } +#endif + + /* expand_string_for_pat () leaves WORD quoted and does not perform + word splitting. */ + l = *value ? expand_string_for_pat (value, + (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? Q_PATQUOTE : quoted, + (int *)NULL, (int *)NULL) + : (WORD_LIST *)0; + if (l) + word_list_remove_quoted_nulls (l); + pat = string_list (l); + dispose_words (l); + if (pat) + { + tword = quote_string_for_globbing (pat, QGLOB_CVTNULL); + free (pat); + pat = tword; + } + return (pat); +} + +#if 0 +/* Handle removing a pattern from a string as a result of ${name%[%]value} + or ${name#[#]value}. */ +static char * +variable_remove_pattern (value, pattern, patspec, quoted) + char *value, *pattern; + int patspec, quoted; +{ + char *tword; + + tword = remove_pattern (value, pattern, patspec); + + return (tword); +} +#endif + +static char * +list_remove_pattern (list, pattern, patspec, itype, quoted) + WORD_LIST *list; + char *pattern; + int patspec, itype, 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 = alloc_word_desc (); + w->word = tword ? tword : savestring (""); + new = make_word_list (w, new); + } + + l = REVERSE_LIST (new, WORD_LIST *); + tword = string_list_pos_params (itype, l, quoted, 0); + dispose_words (l); + + return (tword); +} + +static char * +parameter_list_remove_pattern (itype, pattern, patspec, quoted) + int itype; + char *pattern; + int patspec, quoted; +{ + char *ret; + WORD_LIST *list; + + list = list_rest_of_args (); + if (list == 0) + return ((char *)NULL); + ret = list_remove_pattern (list, pattern, patspec, itype, quoted); + dispose_words (list); + return (ret); +} + +#if defined (ARRAY_VARS) +static char * +array_remove_pattern (var, pattern, patspec, starsub, quoted) + SHELL_VAR *var; + char *pattern; + int patspec; + int starsub; /* so we can figure out how it's indexed */ + int quoted; +{ + ARRAY *a; + HASH_TABLE *h; + int itype; + char *ret; + WORD_LIST *list; + SHELL_VAR *v; + + v = var; /* XXX - for now */ + + itype = starsub ? '*' : '@'; + + a = (v && array_p (v)) ? array_cell (v) : 0; + h = (v && assoc_p (v)) ? assoc_cell (v) : 0; + + list = a ? array_to_word_list (a) : (h ? assoc_to_word_list (h) : 0); + if (list == 0) + return ((char *)NULL); + ret = list_remove_pattern (list, pattern, patspec, itype, quoted); + dispose_words (list); + + return ret; +} +#endif /* ARRAY_VARS */ + +static char * +parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flags) + char *varname, *value; + int ind; + char *patstr; + int rtype, quoted, flags; +{ + int vtype, patspec, starsub; + char *temp1, *val, *pattern, *oname; + SHELL_VAR *v; + + if (value == 0) + return ((char *)NULL); + + oname = this_command_name; + this_command_name = varname; + + vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + if (vtype == -1) + { + this_command_name = oname; + return ((char *)NULL); + } + + starsub = vtype & VT_STARSUB; + vtype &= ~VT_STARSUB; + + patspec = getpatspec (rtype, patstr); + if (patspec == RP_LONG_LEFT || patspec == RP_LONG_RIGHT) + patstr++; + + /* Need to pass getpattern newly-allocated memory in case of expansion -- + the expansion code will free the passed string on an error. */ + temp1 = savestring (patstr); + pattern = getpattern (temp1, quoted, 1); + free (temp1); + + temp1 = (char *)NULL; /* shut up gcc */ + switch (vtype) + { + case VT_VARIABLE: + case VT_ARRAYMEMBER: + temp1 = remove_pattern (val, pattern, patspec); + if (vtype == VT_VARIABLE) + FREE (val); + if (temp1) + { + val = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + ? quote_string (temp1) + : quote_escapes (temp1); + free (temp1); + temp1 = val; + } + break; +#if defined (ARRAY_VARS) + case VT_ARRAYVAR: + temp1 = array_remove_pattern (v, pattern, patspec, starsub, quoted); + if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) + { + val = quote_escapes (temp1); + free (temp1); + temp1 = val; + } + break; +#endif + case VT_POSPARMS: + temp1 = parameter_list_remove_pattern (varname[0], pattern, patspec, quoted); + if (temp1 && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) + { + val = quote_escapes (temp1); + free (temp1); + temp1 = val; + } + break; + } + + this_command_name = oname; + + FREE (pattern); + return temp1; +} + +#if defined (PROCESS_SUBSTITUTION) + +static void reap_some_procsubs PARAMS((int)); + +/*****************************************************************/ +/* */ +/* 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 the ones that don't have a living process on the other end. + unlink_all_fifos will walk the list and unconditionally unlink them, trying + to open and close the FIFO first to release any child processes sleeping on + the FIFO. 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 + +/* PROC value of -1 means the process has been reaped and the FIFO needs to + be removed. PROC value of 0 means the slot is unused. */ +struct temp_fifo { + char *file; + pid_t proc; +}; + +static struct temp_fifo *fifo_list = (struct temp_fifo *)NULL; +static int nfifo; +static int fifo_list_size; + +void +clear_fifo_list () +{ + int i; + + for (i = 0; i < fifo_list_size; i++) + { + if (fifo_list[i].file) + free (fifo_list[i].file); + fifo_list[i].file = NULL; + fifo_list[i].proc = 0; + } + nfifo = 0; +} + +void * +copy_fifo_list (sizep) + int *sizep; +{ + if (sizep) + *sizep = 0; + return (void *)NULL; +} + +static void +add_fifo_list (pathname) + char *pathname; +{ + int osize, i; + + if (nfifo >= fifo_list_size - 1) + { + osize = fifo_list_size; + fifo_list_size += FIFO_INCR; + fifo_list = (struct temp_fifo *)xrealloc (fifo_list, + fifo_list_size * sizeof (struct temp_fifo)); + for (i = osize; i < fifo_list_size; i++) + { + fifo_list[i].file = (char *)NULL; + fifo_list[i].proc = 0; /* unused */ + } + } + + fifo_list[nfifo].file = savestring (pathname); + nfifo++; +} + +void +unlink_fifo (i) + int i; +{ + if ((fifo_list[i].proc == (pid_t)-1) || (fifo_list[i].proc > 0 && (kill(fifo_list[i].proc, 0) == -1))) + { + unlink (fifo_list[i].file); + free (fifo_list[i].file); + fifo_list[i].file = (char *)NULL; + fifo_list[i].proc = 0; + } +} + +void +unlink_fifo_list () +{ + int saved, i, j; + + if (nfifo == 0) + return; + + for (i = saved = 0; i < nfifo; i++) + { + if ((fifo_list[i].proc == (pid_t)-1) || (fifo_list[i].proc > 0 && (kill(fifo_list[i].proc, 0) == -1))) + { + unlink (fifo_list[i].file); + free (fifo_list[i].file); + fifo_list[i].file = (char *)NULL; + fifo_list[i].proc = 0; + } + else + saved++; + } + + /* If we didn't remove some of the FIFOs, compact the list. */ + if (saved) + { + for (i = j = 0; i < nfifo; i++) + if (fifo_list[i].file) + { + if (i != j) + { + fifo_list[j].file = fifo_list[i].file; + fifo_list[j].proc = fifo_list[i].proc; + fifo_list[i].file = (char *)NULL; + fifo_list[i].proc = 0; + } + j++; + } + nfifo = j; + } + else + nfifo = 0; +} + +void +unlink_all_fifos () +{ + int i, fd; + + if (nfifo == 0) + return; + + for (i = 0; i < nfifo; i++) + { + fifo_list[i].proc = (pid_t)-1; + fd = open (fifo_list[i].file, O_RDWR|O_NONBLOCK); + unlink_fifo (i); + if (fd >= 0) + close (fd); + } + + nfifo = 0; +} + +/* Take LIST, which is a bitmap denoting active FIFOs in fifo_list + from some point in the past, and close all open FIFOs in fifo_list + that are not marked as active in LIST. If LIST is NULL, close + everything in fifo_list. LSIZE is the number of elements in LIST, in + case it's larger than fifo_list_size (size of fifo_list). */ +void +close_new_fifos (list, lsize) + void *list; + int lsize; +{ + int i; + char *plist; + + if (list == 0) + { + unlink_fifo_list (); + return; + } + + for (plist = (char *)list, i = 0; i < lsize; i++) + if (plist[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1) + unlink_fifo (i); + + for (i = lsize; i < fifo_list_size; i++) + unlink_fifo (i); +} + +int +find_procsub_child (pid) + pid_t pid; +{ + int i; + + for (i = 0; i < nfifo; i++) + if (fifo_list[i].proc == pid) + return i; + return -1; +} + +void +set_procsub_status (ind, pid, status) + int ind; + pid_t pid; + int status; +{ + if (ind >= 0 && ind < nfifo) + fifo_list[ind].proc = (pid_t)-1; /* sentinel */ +} + +/* If we've marked the process for this procsub as dead, close the + associated file descriptor and delete the FIFO. */ +static void +reap_some_procsubs (max) + int max; +{ + int i; + + for (i = 0; i < max; i++) + if (fifo_list[i].proc == (pid_t)-1) /* reaped */ + unlink_fifo (i); +} + +void +reap_procsubs () +{ + reap_some_procsubs (nfifo); +} + +#if 0 +/* UNUSED */ +void +wait_procsubs () +{ + int i, r; + + for (i = 0; i < nfifo; i++) + { + if (fifo_list[i].proc != (pid_t)-1 && fifo_list[i].proc > 0) + { + r = wait_for (fifo_list[i].proc, 0); + save_proc_status (fifo_list[i].proc, r); + fifo_list[i].proc = (pid_t)-1; + } + } +} +#endif + +int +fifos_pending () +{ + return nfifo; +} + +int +num_fifos () +{ + return nfifo; +} + +static char * +make_named_pipe () +{ + char *tname; + + tname = sh_mktmpname ("sh-np", MT_USERANDOM|MT_USETMPDIR); + if (mkfifo (tname, 0600) < 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. */ +/* dev_fd_list[I] value of -1 means the process has been reaped and file + descriptor I needs to be closed. Value of 0 means the slot is unused. */ + +static pid_t *dev_fd_list = (pid_t *)NULL; +static int nfds; +static int totfds; /* The highest possible number of open files. */ + +void +clear_fifo (i) + int i; +{ + if (dev_fd_list[i]) + { + dev_fd_list[i] = 0; + nfds--; + } +} + +void +clear_fifo_list () +{ + register int i; + + if (nfds == 0) + return; + + for (i = 0; nfds && i < totfds; i++) + clear_fifo (i); + + nfds = 0; +} + +void * +copy_fifo_list (sizep) + int *sizep; +{ + void *ret; + + if (nfds == 0 || totfds == 0) + { + if (sizep) + *sizep = 0; + return (void *)NULL; + } + + if (sizep) + *sizep = totfds; + ret = xmalloc (totfds * sizeof (pid_t)); + return (memcpy (ret, dev_fd_list, totfds * sizeof (pid_t))); +} + +static void +add_fifo_list (fd) + int fd; +{ + if (dev_fd_list == 0 || fd >= totfds) + { + int ofds; + + ofds = totfds; + totfds = getdtablesize (); + if (totfds < 0 || totfds > 256) + totfds = 256; + if (fd >= totfds) + totfds = fd + 2; + + dev_fd_list = (pid_t *)xrealloc (dev_fd_list, totfds * sizeof (dev_fd_list[0])); + /* XXX - might need a loop for this */ + memset (dev_fd_list + ofds, '\0', (totfds - ofds) * sizeof (pid_t)); + } + + dev_fd_list[fd] = 1; /* marker; updated later */ + nfds++; +} + +int +fifos_pending () +{ + return 0; /* used for cleanup; not needed with /dev/fd */ +} + +int +num_fifos () +{ + return nfds; +} + +void +unlink_fifo (fd) + int fd; +{ + if (dev_fd_list[fd]) + { + close (fd); + dev_fd_list[fd] = 0; + nfds--; + } +} + +void +unlink_fifo_list () +{ + register int i; + + if (nfds == 0) + return; + + for (i = totfds-1; nfds && i >= 0; i--) + unlink_fifo (i); + + nfds = 0; +} + +void +unlink_all_fifos () +{ + unlink_fifo_list (); +} + +/* Take LIST, which is a snapshot copy of dev_fd_list from some point in + the past, and close all open fds in dev_fd_list that are not marked + as open in LIST. If LIST is NULL, close everything in dev_fd_list. + LSIZE is the number of elements in LIST, in case it's larger than + totfds (size of dev_fd_list). */ +void +close_new_fifos (list, lsize) + void *list; + int lsize; +{ + int i; + pid_t *plist; + + if (list == 0) + { + unlink_fifo_list (); + return; + } + + for (plist = (pid_t *)list, i = 0; i < lsize; i++) + if (plist[i] == 0 && i < totfds && dev_fd_list[i]) + unlink_fifo (i); + + for (i = lsize; i < totfds; i++) + unlink_fifo (i); +} + +int +find_procsub_child (pid) + pid_t pid; +{ + int i; + + if (nfds == 0) + return -1; + + for (i = 0; i < totfds; i++) + if (dev_fd_list[i] == pid) + return i; + + return -1; +} + +void +set_procsub_status (ind, pid, status) + int ind; + pid_t pid; + int status; +{ + if (ind >= 0 && ind < totfds) + dev_fd_list[ind] = (pid_t)-1; /* sentinel */ +} + +/* If we've marked the process for this procsub as dead, close the + associated file descriptor. */ +static void +reap_some_procsubs (max) + int max; +{ + int i; + + for (i = 0; nfds > 0 && i < max; i++) + if (dev_fd_list[i] == (pid_t)-1) + unlink_fifo (i); +} + +void +reap_procsubs () +{ + reap_some_procsubs (totfds); +} + +#if 0 +/* UNUSED */ +void +wait_procsubs () +{ + int i, r; + + for (i = 0; nfds > 0 && i < totfds; i++) + { + if (dev_fd_list[i] != (pid_t)-1 && dev_fd_list[i] > 0) + { + r = wait_for (dev_fd_list[i], 0); + save_proc_status (dev_fd_list[i], r); + dev_fd_list[i] = (pid_t)-1; + } + } +} +#endif + +#if defined (NOTDEF) +print_dev_fd_list () +{ + register int i; + + fprintf (stderr, "pid %ld: dev_fd_list:", (long)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, intbuf[INT_STRLEN_BOUND (int) + 1], *p; + + ret = (char *)xmalloc (sizeof (DEV_FD_PREFIX) + 8); + + strcpy (ret, DEV_FD_PREFIX); + p = inttostr (fd, intbuf, sizeof (intbuf)); + strcpy (ret + sizeof (DEV_FD_PREFIX) - 1, p); + + 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, rc, function_value; + 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 || wordexp_only) + return ((char *)NULL); + +#if !defined (HAVE_DEV_FD) + pathname = make_named_pipe (); +#else /* HAVE_DEV_FD */ + if (pipe (fildes) < 0) + { + sys_error ("%s", _("cannot make pipe for process substitution")); + 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]; + /* Move the parent end of the pipe to some high file descriptor, to + avoid clashes with FDs used by the script. */ + parent_pipe_fd = move_to_high_fd (parent_pipe_fd, 1, 64); + + pathname = make_dev_fd_filename (parent_pipe_fd); +#endif /* HAVE_DEV_FD */ + + if (pathname == 0) + { + sys_error ("%s", _("cannot make pipe for process substitution")); + return ((char *)NULL); + } + + old_pid = last_made_pid; + +#if defined (JOB_CONTROL) + old_pipeline_pgrp = pipeline_pgrp; + if (pipeline_pgrp == 0 || (subshell_environment & (SUBSHELL_PIPE|SUBSHELL_FORK|SUBSHELL_ASYNC)) == 0) + pipeline_pgrp = shell_pgrp; + save_pipeline (1); +#endif /* JOB_CONTROL */ + + pid = make_child ((char *)NULL, FORK_ASYNC); + if (pid == 0) + { +#if 0 + int old_interactive; + + old_interactive = interactive; +#endif + /* The currently-executing shell is not interactive */ + interactive = 0; + + reset_terminating_signals (); /* XXX */ + free_pushed_string_input (); + /* Cancel traps, in trap.c. */ + restore_original_signals (); /* XXX - what about special builtins? bash-4.2 */ + QUIT; /* catch any interrupts we got post-fork */ + setup_async_signals (); +#if 0 + if (open_for_read_in_child == 0 && old_interactive && (bash_input.type == st_stdin || bash_input.type == st_stream)) + async_redirect_stdin (); +#endif + + subshell_environment |= SUBSHELL_COMSUB|SUBSHELL_PROCSUB|SUBSHELL_ASYNC; + + /* We don't inherit the verbose option for command substitutions now, so + let's try it for process substitutions. */ + change_flag ('v', FLAG_OFF); + + /* if we're expanding a redirection, we shouldn't have access to the + temporary environment, but commands in the subshell should have + access to their own temporary environment. */ + if (expanding_redir) + flush_temporary_env (); + } + +#if defined (JOB_CONTROL) + set_sigchld_handler (); + stop_making_children (); + /* XXX - should we only do this in the parent? (as in command subst) */ + pipeline_pgrp = old_pipeline_pgrp; +#else + stop_making_children (); +#endif /* JOB_CONTROL */ + + if (pid < 0) + { + sys_error ("%s", _("cannot make child for process substitution")); + free (pathname); +#if defined (HAVE_DEV_FD) + close (parent_pipe_fd); + close (child_pipe_fd); +#endif /* HAVE_DEV_FD */ +#if defined (JOB_CONTROL) + restore_pipeline (1); +#endif + return ((char *)NULL); + } + + if (pid > 0) + { +#if defined (JOB_CONTROL) + last_procsub_child = restore_pipeline (0); + /* We assume that last_procsub_child->next == last_procsub_child because + of how jobs.c:add_process() works. */ + last_procsub_child->next = 0; + procsub_add (last_procsub_child); +#endif + +#if defined (HAVE_DEV_FD) + dev_fd_list[parent_pipe_fd] = pid; +#else + fifo_list[nfifo-1].proc = pid; +#endif + + 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) + /* make sure we don't have any job control */ + set_job_control (0); + + /* Clear out any existing list of process substitutions */ + procsub_clear (); + + /* The idea is that we want all the jobs we start from an async process + substitution to be in the same process group, but not the same pgrp + as our parent shell, since we don't want to affect our parent shell's + jobs if we get a SIGHUP and end up calling hangup_all_jobs, for example. + If pipeline_pgrp != shell_pgrp, we assume that there is a job control + shell somewhere in our parent process chain (since make_child initializes + pipeline_pgrp to shell_pgrp if job_control == 0). What we do in this + case is to set pipeline_pgrp to our PID, so all jobs started by this + process have that same pgrp and we are basically the process group leader. + This should not have negative effects on child processes surviving + after we exit, since we wait for the children we create, but that is + something to watch for. */ + + if (pipeline_pgrp != shell_pgrp) + pipeline_pgrp = getpid (); +#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) + { + /* Two separate strings for ease of translation. */ + if (open_for_read_in_child) + sys_error (_("cannot open named pipe %s for reading"), pathname); + else + sys_error (_("cannot open named pipe %s for writing"), pathname); + + exit (127); + } + if (open_for_read_in_child) + { + if (sh_unset_nodelay_mode (fd) < 0) + { + sys_error (_("cannot reset nodelay mode for fd %d"), fd); + exit (127); + } + } +#else /* HAVE_DEV_FD */ + fd = child_pipe_fd; +#endif /* HAVE_DEV_FD */ + + /* Discard buffered stdio output before replacing the underlying file + descriptor. */ + if (open_for_read_in_child == 0) + fpurge (stdout); + + if (dup2 (fd, open_for_read_in_child ? 0 : 1) < 0) + { + sys_error (_("cannot duplicate named pipe %s as fd %d"), pathname, + open_for_read_in_child ? 0 : 1); + exit (127); + } + + if (fd != (open_for_read_in_child ? 0 : 1)) + 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 */ + + /* subshells shouldn't have this flag, which controls using the temporary + environment for variable lookups. We have already flushed the temporary + environment above in the case we're expanding a redirection, so processes + executed by this command need to be able to set it independently of their + parent. */ + expanding_redir = 0; + + remove_quoted_escapes (string); + +#if 0 /* TAG: bash-5.2 */ + startup_state = 2; /* see if we can avoid a fork */ + parse_and_execute_level = 0; +#endif + + /* Give process substitution a place to jump back to on failure, + so we don't go back up to main (). */ + result = setjmp_nosigs (top_level); + + /* If we're running a process substitution inside a shell function, + trap `return' so we don't return from the function in the subshell + and go off to never-never land. */ + if (result == 0 && return_catch_flag) + function_value = setjmp_nosigs (return_catch); + else + function_value = 0; + + if (result == ERREXIT) + rc = last_command_exit_value; + else if (result == EXITPROG) + rc = last_command_exit_value; + else if (result) + rc = EXECUTION_FAILURE; + else if (function_value) + rc = return_catch_value; + else + { + subshell_level++; + rc = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST)); + /* leave subshell level intact for any exit trap */ + } + +#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 */ + + last_command_exit_value = rc; + rc = run_exit_trap (); + exit (rc); + /*NOTREACHED*/ +} +#endif /* PROCESS_SUBSTITUTION */ + +/***********************************/ +/* */ +/* Command Substitution */ +/* */ +/***********************************/ + +static char * +read_comsub (fd, quoted, flags, rflag) + int fd, quoted, flags; + int *rflag; +{ + char *istring, buf[512], *bufp; + int istring_index, c, tflag, skip_ctlesc, skip_ctlnul; + int mb_cur_max; + size_t istring_size; + ssize_t bufn; + int nullbyte; +#if defined (HANDLE_MULTIBYTE) + mbstate_t ps; + wchar_t wc; + size_t mblen; + int i; +#endif + + istring = (char *)NULL; + istring_index = istring_size = bufn = tflag = 0; + + skip_ctlesc = ifs_cmap[CTLESC]; + skip_ctlnul = ifs_cmap[CTLNUL]; + + mb_cur_max = MB_CUR_MAX; + nullbyte = 0; + + /* Read the output of the command through the pipe. */ + while (1) + { + if (fd < 0) + break; + if (--bufn <= 0) + { + bufn = zread (fd, buf, sizeof (buf)); + if (bufn <= 0) + break; + bufp = buf; + } + c = *bufp++; + + if (c == 0) + { +#if 1 + if (nullbyte == 0) + { + internal_warning ("%s", _("command substitution: ignored null byte in input")); + nullbyte = 1; + } +#endif + continue; + } + + /* Add the character to ISTRING, possibly after resizing it. */ + RESIZE_MALLOCED_BUFFER (istring, istring_index, mb_cur_max+1, istring_size, 512); + + /* This is essentially quote_string inline */ + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) /* || c == CTLESC || c == CTLNUL */) + istring[istring_index++] = CTLESC; + else if ((flags & PF_ASSIGNRHS) && skip_ctlesc && c == CTLESC) + istring[istring_index++] = CTLESC; + /* Escape CTLESC and CTLNUL in the output to protect those characters + from the rest of the word expansions (word splitting and globbing.) + This is essentially quote_escapes inline. */ + else if (skip_ctlesc == 0 && c == CTLESC) + istring[istring_index++] = CTLESC; + else if ((skip_ctlnul == 0 && c == CTLNUL) || (c == ' ' && (ifs_value && *ifs_value == 0))) + istring[istring_index++] = CTLESC; + +#if defined (HANDLE_MULTIBYTE) + if ((locale_utf8locale && (c & 0x80)) || + (locale_utf8locale == 0 && mb_cur_max > 1 && (unsigned char)c > 127)) + { + /* read a multibyte character from buf */ + /* punt on the hard case for now */ + memset (&ps, '\0', sizeof (mbstate_t)); + mblen = mbrtowc (&wc, bufp-1, bufn+1, &ps); + if (MB_INVALIDCH (mblen) || mblen == 0 || mblen == 1) + istring[istring_index++] = c; + else + { + istring[istring_index++] = c; + for (i = 0; i < mblen-1; i++) + istring[istring_index++] = *bufp++; + bufn -= mblen - 1; + } + continue; + } +#endif + + istring[istring_index++] = c; + } + + if (istring) + istring[istring_index] = '\0'; + + /* If we read no output, just return now and save ourselves some + trouble. */ + if (istring_index == 0) + { + FREE (istring); + if (rflag) + *rflag = tflag; + return (char *)NULL; + } + + /* 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, istring_index - 1, 1); + + if (rflag) + *rflag = tflag; + return istring; +} + +/* Perform command substitution on STRING. This returns a WORD_DESC * with the + contained string possibly quoted. */ +WORD_DESC * +command_substitute (string, quoted, flags) + char *string; + int quoted; + int flags; +{ + pid_t pid, old_pid, old_pipeline_pgrp, old_async_pid; + char *istring, *s; + int result, fildes[2], function_value, pflags, rc, tflag, fork_flags; + WORD_DESC *ret; + sigset_t set, oset; + + istring = (char *)NULL; + + /* Don't fork () if there is no need to. In the case of no command to + run, just return NULL. */ +#if 1 + for (s = string; s && *s && (shellblank (*s) || *s == '\n'); s++) + ; + if (s == 0 || *s == 0) + return ((WORD_DESC *)NULL); +#else + if (!string || !*string || (string[0] == '\n' && !string[1])) + return ((WORD_DESC *)NULL); +#endif + + if (wordexp_only && read_but_dont_execute) + { + last_command_exit_value = EX_WEXPCOMSUB; + jump_to_top_level (EXITPROG); + } + + /* We're making the assumption here that the command substitution will + eventually run a command from the file system. Since we'll run + maybe_make_export_env in this subshell before executing that command, + the parent shell and any other shells it starts will have to remake + the environment. If we make it before we fork, other shells won't + have to. Don't bother if we have any temporary variable assignments, + though, because the export environment will be remade after this + command completes anyway, but do it if all the words to be expanded + are variable assignments. */ + if (subst_assign_varlist == 0 || garglist == 0) + maybe_make_export_env (); /* XXX */ + + /* Flags to pass to parse_and_execute() */ + pflags = (interactive && sourcelevel == 0) ? SEVAL_RESETLINE : 0; + + old_pid = last_made_pid; + + /* Pipe the output of executing STRING into the current shell. */ + if (pipe (fildes) < 0) + { + sys_error ("%s", _("cannot make pipe for command substitution")); + goto error_exit; + } + +#if defined (JOB_CONTROL) + old_pipeline_pgrp = pipeline_pgrp; + /* Don't reset the pipeline pgrp if we're already a subshell in a pipeline or + we've already forked to run a disk command (and are expanding redirections, + for example). */ + if ((subshell_environment & (SUBSHELL_FORK|SUBSHELL_PIPE)) == 0) + pipeline_pgrp = shell_pgrp; + cleanup_the_pipeline (); +#endif /* JOB_CONTROL */ + + old_async_pid = last_asynchronous_pid; + fork_flags = (subshell_environment&SUBSHELL_ASYNC) ? FORK_ASYNC : 0; + pid = make_child ((char *)NULL, fork_flags|FORK_NOTERM); + last_asynchronous_pid = old_async_pid; + + if (pid == 0) + { + /* Reset the signal handlers in the child, but don't free the + trap strings. Set a flag noting that we have to free the + trap strings if we run trap to change a signal disposition. */ + reset_signal_handlers (); + if (ISINTERRUPT) + { + kill (getpid (), SIGINT); + CLRINTERRUPT; /* if we're ignoring SIGINT somehow */ + } + QUIT; /* catch any interrupts we got post-fork */ + subshell_environment |= SUBSHELL_RESETTRAP; + } + +#if defined (JOB_CONTROL) + /* XXX DO THIS ONLY IN PARENT ? XXX */ + set_sigchld_handler (); + stop_making_children (); + if (pid != 0) + pipeline_pgrp = old_pipeline_pgrp; +#else + stop_making_children (); +#endif /* JOB_CONTROL */ + + if (pid < 0) + { + sys_error (_("cannot make child for command substitution")); + error_exit: + + last_made_pid = old_pid; + + FREE (istring); + close (fildes[0]); + close (fildes[1]); + return ((WORD_DESC *)NULL); + } + + if (pid == 0) + { + /* The currently executing shell is not interactive. */ + interactive = 0; + + set_sigint_handler (); /* XXX */ + + free_pushed_string_input (); + + /* Discard buffered stdio output before replacing the underlying file + descriptor. */ + fpurge (stdout); + + if (dup2 (fildes[1], 1) < 0) + { + sys_error ("%s", _("command_substitute: cannot duplicate pipe as fd 1")); + 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]); + +#ifdef __CYGWIN__ + /* Let stdio know the fd may have changed from text to binary mode, and + make sure to preserve stdout line buffering. */ + freopen (NULL, "w", stdout); + sh_setlinebuf (stdout); +#endif /* __CYGWIN__ */ + + /* This is a subshell environment. */ + subshell_environment |= SUBSHELL_COMSUB; + + /* Many shells do not appear to inherit the -v option for command + substitutions. */ + change_flag ('v', FLAG_OFF); + + /* When inherit_errexit option is not enabled, command substitution does + not inherit the -e flag. It is enabled when Posix mode is enabled */ + if (inherit_errexit == 0) + { + builtin_ignoring_errexit = 0; + change_flag ('e', FLAG_OFF); + } + set_shellopts (); + + /* If we are expanding a redirection, we can dispose of any temporary + environment we received, since redirections are not supposed to have + access to the temporary environment. We will have to see whether this + affects temporary environments supplied to `eval', but the temporary + environment gets copied to builtin_env at some point. */ + if (expanding_redir) + { + flush_temporary_env (); + expanding_redir = 0; + } + + remove_quoted_escapes (string); + + startup_state = 2; /* see if we can avoid a fork */ + parse_and_execute_level = 0; + + /* Give command substitution a place to jump back to on failure, + so we don't go back up to main (). */ + result = setjmp_nosigs (top_level); + + /* If we're running a command substitution inside a shell function, + trap `return' so we don't return from the function in the subshell + and go off to never-never land. */ + if (result == 0 && return_catch_flag) + function_value = setjmp_nosigs (return_catch); + else + function_value = 0; + + if (result == ERREXIT) + rc = last_command_exit_value; + else if (result == EXITPROG) + rc = last_command_exit_value; + else if (result) + rc = EXECUTION_FAILURE; + else if (function_value) + rc = return_catch_value; + else + { + subshell_level++; + rc = parse_and_execute (string, "command substitution", pflags|SEVAL_NOHIST); + /* leave subshell level intact for any exit trap */ + } + + last_command_exit_value = rc; + rc = run_exit_trap (); +#if defined (PROCESS_SUBSTITUTION) + unlink_fifo_list (); +#endif + exit (rc); + } + else + { + int dummyfd; + +#if defined (JOB_CONTROL) && defined (PGRP_PIPE) + close_pgrp_pipe (); +#endif /* JOB_CONTROL && PGRP_PIPE */ + + close (fildes[1]); + + begin_unwind_frame ("read-comsub"); + dummyfd = fildes[0]; + add_unwind_protect (close, dummyfd); + + /* Block SIGINT while we're reading from the pipe. If the child + process gets a SIGINT, it will either handle it or die, and the + read will return. */ + BLOCK_SIGNAL (SIGINT, set, oset); + tflag = 0; + istring = read_comsub (fildes[0], quoted, flags, &tflag); + + close (fildes[0]); + discard_unwind_frame ("read-comsub"); + UNBLOCK_SIGNAL (oset); + + current_command_subst_pid = pid; + last_command_exit_value = wait_for (pid, JWAIT_NOTERM); + 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) && last_command_exit_signal == SIGINT) + kill (getpid (), SIGINT); +#endif /* JOB_CONTROL */ + + ret = alloc_word_desc (); + ret->word = istring; + ret->flags = tflag; + + return ret; + } +} + +/******************************************************** + * * + * Utility functions for parameter expansion * + * * + ********************************************************/ + +#if defined (ARRAY_VARS) + +static arrayind_t +array_length_reference (s) + char *s; +{ + int len; + arrayind_t ind; + char *akey; + char *t, c; + ARRAY *array; + HASH_TABLE *h; + SHELL_VAR *var; + + var = array_variable_part (s, 0, &t, &len); + + /* If unbound variables should generate an error, report one and return + failure. */ + if ((var == 0 || invisible_p (var) || (assoc_p (var) == 0 && array_p (var) == 0)) && unbound_vars_is_error) + { + c = *--t; + *t = '\0'; + set_exit_status (EXECUTION_FAILURE); + err_unboundvar (s); + *t = c; + return (-1); + } + else if (var == 0 || invisible_p (var)) + return 0; + + /* We support a couple of expansions for variables that are not arrays. + We'll return the length of the value for v[0], and 1 for v[@] or + v[*]. Return 0 for everything else. */ + + array = array_p (var) ? array_cell (var) : (ARRAY *)NULL; + h = assoc_p (var) ? assoc_cell (var) : (HASH_TABLE *)NULL; + + if (ALL_ELEMENT_SUB (t[0]) && t[1] == RBRACK) + { + if (assoc_p (var)) + return (h ? assoc_num_elements (h) : 0); + else if (array_p (var)) + return (array ? array_num_elements (array) : 0); + else + return (var_isset (var) ? 1 : 0); + } + + if (assoc_p (var)) + { + t[len - 1] = '\0'; + akey = expand_assignment_string_to_string (t, 0); /* [ */ + t[len - 1] = RBRACK; + if (akey == 0 || *akey == 0) + { + err_badarraysub (t); + FREE (akey); + return (-1); + } + t = assoc_reference (assoc_cell (var), akey); + free (akey); + } + else + { + ind = array_expand_index (var, t, len, 0); + /* negative subscripts to indexed arrays count back from end */ + if (var && array_p (var) && ind < 0) + ind = array_max_index (array_cell (var)) + 1 + ind; + if (ind < 0) + { + err_badarraysub (t); + return (-1); + } + if (array_p (var)) + t = array_reference (array, ind); + else + t = (ind == 0) ? value_cell (var) : (char *)NULL; + } + + len = MB_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, 0)) + return 1; +#endif /* ARRAY_VARS */ + else if (legal_identifier (name)) + return 1; + else + return 0; +} + +static int +chk_atstar (name, quoted, pflags, quoted_dollar_atp, contains_dollar_at) + char *name; + int quoted, pflags; + int *quoted_dollar_atp, *contains_dollar_at; +{ + char *temp1; + + if (name == 0) + { + if (quoted_dollar_atp) + *quoted_dollar_atp = 0; + if (contains_dollar_at) + *contains_dollar_at = 0; + return 0; + } + + /* check for $@ and $* */ + 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; + return 1; + } + else if (name[0] == '*' && name[1] == '\0' && quoted == 0) + { + /* Need more checks here that parallel what string_list_pos_params and + param_expand do. Check expand_no_split_dollar_star and ??? */ + if (contains_dollar_at && expand_no_split_dollar_star == 0) + *contains_dollar_at = 1; + return 1; + } + + /* Now check for ${array[@]} and ${array[*]} */ +#if defined (ARRAY_VARS) + else if (valid_array_reference (name, 0)) + { + temp1 = mbschr (name, LBRACK); + if (temp1 && temp1[1] == '@' && temp1[2] == RBRACK) + { + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp) + *quoted_dollar_atp = 1; + if (contains_dollar_at) + *contains_dollar_at = 1; + return 1; + } + /* ${array[*]}, when unquoted, should be treated like ${array[@]}, + which should result in separate words even when IFS is unset. */ + if (temp1 && temp1[1] == '*' && temp1[2] == RBRACK && quoted == 0) + { + if (contains_dollar_at) + *contains_dollar_at = 1; + return 1; + } + } +#endif + return 0; +} + +/* Parameter expand NAME, and return a new string which is the expansion, + or NULL if there was no expansion. NAME is as given in ${NAMEcWORD}. + 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 WORD_DESC * +parameter_brace_expand_word (name, var_is_special, quoted, pflags, indp) + char *name; + int var_is_special, quoted, pflags; + arrayind_t *indp; +{ + WORD_DESC *ret; + char *temp, *tt; + intmax_t arg_index; + SHELL_VAR *var; + int atype, rflags; + arrayind_t ind; + + ret = 0; + temp = 0; + rflags = 0; + + if (indp) + *indp = INTMAX_MIN; + + /* Handle multiple digit arguments, as in ${11}. */ + if (legal_number (name, &arg_index)) + { + tt = get_dollar_var_value (arg_index); + if (tt) + temp = (*tt && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + ? quote_string (tt) + : quote_escapes (tt); + else + temp = (char *)NULL; + FREE (tt); + } + else if (var_is_special) /* ${@} */ + { + int sindex; + tt = (char *)xmalloc (2 + strlen (name)); + tt[sindex = 0] = '$'; + strcpy (tt + 1, name); + + ret = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL, + (int *)NULL, (int *)NULL, pflags); + free (tt); + } +#if defined (ARRAY_VARS) + else if (valid_array_reference (name, 0)) + { +expand_arrayref: + var = array_variable_part (name, 0, &tt, (int *)0); + /* These are the cases where word splitting will not be performed */ + if (pflags & PF_ASSIGNRHS) + { + if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == RBRACK) + { + /* Only treat as double quoted if array variable */ + if (var && (array_p (var) || assoc_p (var))) + temp = array_value (name, quoted|Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &atype, &ind); + else + temp = array_value (name, quoted, 0, &atype, &ind); + } + else + temp = array_value (name, quoted, 0, &atype, &ind); + } + /* Posix interp 888 */ + else if (pflags & PF_NOSPLIT2) + { + /* Special cases, then general case, for each of A[@], A[*], A[n] */ +#if defined (HANDLE_MULTIBYTE) + if (tt[0] == '@' && tt[1] == RBRACK && var && quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc[0] != ' ') +#else + if (tt[0] == '@' && tt[1] == RBRACK && var && quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc != ' ') +#endif + temp = array_value (name, Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &atype, &ind); + else if (tt[0] == '@' && tt[1] == RBRACK) + temp = array_value (name, quoted, 0, &atype, &ind); + else if (tt[0] == '*' && tt[1] == RBRACK && expand_no_split_dollar_star && ifs_is_null) + temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &atype, &ind); + else if (tt[0] == '*' && tt[1] == RBRACK) + temp = array_value (name, quoted, 0, &atype, &ind); + else + temp = array_value (name, quoted, 0, &atype, &ind); + } + else if (tt[0] == '*' && tt[1] == RBRACK && expand_no_split_dollar_star && ifs_is_null) + temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &atype, &ind); + else + temp = array_value (name, quoted, 0, &atype, &ind); + if (atype == 0 && temp) + { + temp = (*temp && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + ? quote_string (temp) + : quote_escapes (temp); + rflags |= W_ARRAYIND; + if (indp) + *indp = ind; + } + else if (atype == 1 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + rflags |= W_HASQUOTEDNULL; + } +#endif + else if (var = find_variable (name)) + { + if (var_isset (var) && invisible_p (var) == 0) + { +#if defined (ARRAY_VARS) + /* We avoid a memory leak by saving TT as the memory allocated by + assoc_to_string or array_to_string and leaving it 0 otherwise, + then freeing TT after quoting temp. */ + tt = (char *)NULL; + if ((pflags & PF_ALLINDS) && assoc_p (var)) + tt = temp = assoc_empty (assoc_cell (var)) ? (char *)NULL : assoc_to_string (assoc_cell (var), " ", quoted); + else if ((pflags & PF_ALLINDS) && array_p (var)) + tt = temp = array_empty (array_cell (var)) ? (char *)NULL : array_to_string (array_cell (var), " ", quoted); + else if (assoc_p (var)) + temp = assoc_reference (assoc_cell (var), "0"); + else if (array_p (var)) + temp = array_reference (array_cell (var), 0); + else + temp = value_cell (var); +#else + temp = value_cell (var); +#endif + + if (temp) + temp = (*temp && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + ? quote_string (temp) + : ((pflags & PF_ASSIGNRHS) ? quote_rhs (temp) + : quote_escapes (temp)); + FREE (tt); + } + else + temp = (char *)NULL; + } + else if (var = find_variable_last_nameref (name, 0)) + { + temp = nameref_cell (var); +#if defined (ARRAY_VARS) + /* Handle expanding nameref whose value is x[n] */ + if (temp && *temp && valid_array_reference (temp, 0)) + { + name = temp; + goto expand_arrayref; + } + else +#endif + /* y=2 ; typeset -n x=y; echo ${x} is not the same as echo ${2} in ksh */ + if (temp && *temp && legal_identifier (temp) == 0) + { + set_exit_status (EXECUTION_FAILURE); + report_error (_("%s: invalid variable name for name reference"), temp); + temp = &expand_param_error; + } + else + temp = (char *)NULL; + } + else + temp = (char *)NULL; + + if (ret == 0) + { + ret = alloc_word_desc (); + ret->word = temp; + ret->flags |= rflags; + } + return ret; +} + +static char * +parameter_brace_find_indir (name, var_is_special, quoted, find_nameref) + char *name; + int var_is_special, quoted, find_nameref; +{ + char *temp, *t; + WORD_DESC *w; + SHELL_VAR *v; + int pflags, oldex; + + if (find_nameref && var_is_special == 0 && (v = find_variable_last_nameref (name, 0)) && + nameref_p (v) && (t = nameref_cell (v)) && *t) + return (savestring (t)); + + /* If var_is_special == 0, and name is not an array reference, this does + more expansion than necessary. It should really look up the variable's + value and not try to expand it. */ + pflags = PF_IGNUNBOUND; + /* Note that we're not going to be doing word splitting here */ + if (var_is_special) + { + pflags |= PF_ASSIGNRHS; /* suppresses word splitting */ + oldex = expand_no_split_dollar_star; + expand_no_split_dollar_star = 1; + } + w = parameter_brace_expand_word (name, var_is_special, quoted, pflags, 0); + if (var_is_special) + expand_no_split_dollar_star = oldex; + + t = w->word; + /* Have to dequote here if necessary */ + if (t) + { + temp = ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || var_is_special) + ? dequote_string (t) + : dequote_escapes (t); + free (t); + t = temp; + } + dispose_word_desc (w); + + return t; +} + +/* Expand an indirect reference to a variable: ${!NAME} expands to the + value of the variable whose name is the value of NAME. */ +static WORD_DESC * +parameter_brace_expand_indir (name, var_is_special, quoted, pflags, quoted_dollar_atp, contains_dollar_at) + char *name; + int var_is_special, quoted, pflags; + int *quoted_dollar_atp, *contains_dollar_at; +{ + char *t; + WORD_DESC *w; + SHELL_VAR *v; + + /* See if it's a nameref first, behave in ksh93-compatible fashion. + There is at least one incompatibility: given ${!foo[0]} where foo=bar, + bash performs an indirect lookup on foo[0] and expands the result; + ksh93 expands bar[0]. We could do that here -- there are enough usable + primitives to do that -- but do not at this point. */ + if (var_is_special == 0 && (v = find_variable_last_nameref (name, 0))) + { + if (nameref_p (v) && (t = nameref_cell (v)) && *t) + { + w = alloc_word_desc (); + w->word = savestring (t); + w->flags = 0; + return w; + } + } + + /* An indirect reference to a positional parameter or a special parameter + is ok. Indirect references to array references, as explained above, are + ok (currently). Only references to unset variables are errors at this + point. */ + if (legal_identifier (name) && v == 0) + { + report_error (_("%s: invalid indirect expansion"), name); + w = alloc_word_desc (); + w->word = &expand_param_error; + w->flags = 0; + return (w); + } + + t = parameter_brace_find_indir (name, var_is_special, quoted, 0); + + chk_atstar (t, quoted, pflags, quoted_dollar_atp, contains_dollar_at); + +#if defined (ARRAY_VARS) + /* Array references to unset variables are also an error */ + if (t == 0 && valid_array_reference (name, 0)) + { + v = array_variable_part (name, 0, (char **)0, (int *)0); + if (v == 0) + { + report_error (_("%s: invalid indirect expansion"), name); + w = alloc_word_desc (); + w->word = &expand_param_error; + w->flags = 0; + return (w); + } + else + return (WORD_DESC *)NULL; + } +#endif + + if (t == 0) + return (WORD_DESC *)NULL; + + if (valid_brace_expansion_word (t, SPECIAL_VAR (t, 0)) == 0) + { + report_error (_("%s: invalid variable name"), t); + free (t); + w = alloc_word_desc (); + w->word = &expand_param_error; + w->flags = 0; + return (w); + } + + w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted, pflags, 0); + free (t); + + return w; +} + +/* 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 WORD_DESC * +parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdollarat) + char *name, *value; + int op, quoted, pflags, *qdollaratp, *hasdollarat; +{ + WORD_DESC *w; + WORD_LIST *l, *tl; + char *t, *t1, *temp, *vname; + int l_hasdollat, sindex; + SHELL_VAR *v; + +/*itrace("parameter_brace_expand_rhs: %s:%s pflags = %d", name, value, pflags);*/ + /* 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 (for sh backwards compatibility). */ + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *value) + { + sindex = 0; + temp = string_extract_double_quoted (value, &sindex, SX_STRIPDQ); + } + else + temp = value; + + w = alloc_word_desc (); + l_hasdollat = 0; + l = *temp ? expand_string_for_rhs (temp, quoted, op, pflags, &l_hasdollat, (int *)NULL) + : (WORD_LIST *)0; + if (hasdollarat) + *hasdollarat = l_hasdollat || (l && l->next); + if (temp != value) + free (temp); + + /* list_string takes multiple CTLNULs and turns them into an empty word + with W_SAWQUOTEDNULL set. Turn it back into a single CTLNUL for the + rest of this function and the caller. */ + for (tl = l; tl; tl = tl->next) + { + if (tl->word && (tl->word->word == 0 || tl->word->word[0] == 0) && + (tl->word->flags | W_SAWQUOTEDNULL)) + { + t = make_quoted_char ('\0'); + FREE (tl->word->word); + tl->word->word = t; + tl->word->flags |= W_QUOTED|W_HASQUOTEDNULL; + tl->word->flags &= ~W_SAWQUOTEDNULL; + } + } + + if (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 (qdollaratp && ((l_hasdollat && quoted) || l->next)) + { +/*itrace("parameter_brace_expand_rhs: %s:%s: l != NULL, set *qdollaratp", name, value);*/ + *qdollaratp = 1; + } + + /* The expansion of TEMP returned something. We need to treat things + slightly differently if L_HASDOLLAT is non-zero. If we have "$@", + the individual words have already been quoted. We need to turn them + into a string with the words separated by the first character of + $IFS without any additional quoting, so string_list_dollar_at won't + do the right thing. If IFS is null, we want "$@" to split into + separate arguments, not be concatenated, so we use string_list_internal + and mark the word to be split on spaces later. We use + string_list_dollar_star for "$@" otherwise. */ + if (l->next && ifs_is_null) + { + temp = string_list_internal (l, " "); + w->flags |= W_SPLITSPACE; + } + else if (l_hasdollat || l->next) + temp = string_list_dollar_star (l, quoted, 0); + else + { + temp = string_list (l); + if (temp && (QUOTED_NULL (temp) == 0) && (l->word->flags & W_SAWQUOTEDNULL)) + w->flags |= W_SAWQUOTEDNULL; /* XXX */ + } + + /* If we have a quoted null result (QUOTED_NULL(temp)) and the word is + a quoted null (l->next == 0 && QUOTED_NULL(l->word->word)), the + flags indicate it (l->word->flags & W_HASQUOTEDNULL), and the + expansion is quoted (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + (which is more paranoia than anything else), we need to return the + quoted null string and set the flags to indicate it. */ + if (l->next == 0 && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && QUOTED_NULL (temp) && QUOTED_NULL (l->word->word) && (l->word->flags & W_HASQUOTEDNULL)) + { + w->flags |= W_HASQUOTEDNULL; +/*itrace("parameter_brace_expand_rhs (%s:%s): returning quoted null, turning off qdollaratp", name, value);*/ + /* If we return a quoted null with L_HASDOLLARAT, we either have a + construct like "${@-$@}" or "${@-${@-$@}}" with no positional + parameters or a quoted expansion of "$@" with $1 == ''. In either + case, we don't want to enable special handling of $@. */ + if (qdollaratp && l_hasdollat) + *qdollaratp = 0; + } + dispose_words (l); + } + else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && l_hasdollat) + { + /* Posix interp 221 changed the rules on this. The idea is that + something like "$xxx$@" should expand the same as "${foo-$xxx$@}" + when foo and xxx are unset. The problem is that it's not in any + way backwards compatible and few other shells do it. We're eventually + going to try and split the difference (heh) a little bit here. */ + /* l_hasdollat == 1 means we saw a quoted dollar at. */ + + /* 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. Posix interp 888 */ + temp = make_quoted_char ('\0'); + w->flags |= W_HASQUOTEDNULL; +/*itrace("parameter_brace_expand_rhs (%s:%s): returning quoted null", name, value);*/ + } + else + temp = (char *)NULL; + + if (op == '-' || op == '+') + { + w->word = temp; + return w; + } + + /* op == '=' */ + t1 = temp ? dequote_string (temp) : savestring (""); + free (temp); + + /* bash-4.4/5.0 */ + vname = name; + if (*name == '!' && + (legal_variable_starter ((unsigned char)name[1]) || DIGIT (name[1]) || VALID_INDIR_PARAM (name[1]))) + { + vname = parameter_brace_find_indir (name + 1, SPECIAL_VAR (name, 1), quoted, 1); + if (vname == 0 || *vname == 0) + { + report_error (_("%s: invalid indirect expansion"), name); + free (vname); + free (t1); + dispose_word (w); + return &expand_wdesc_error; + } + if (legal_identifier (vname) == 0) + { + report_error (_("%s: invalid variable name"), vname); + free (vname); + free (t1); + dispose_word (w); + return &expand_wdesc_error; + } + } + +#if defined (ARRAY_VARS) + if (valid_array_reference (vname, 0)) + v = assign_array_element (vname, t1, 0); + else +#endif /* ARRAY_VARS */ + v = bind_variable (vname, t1, 0); + + if (v == 0 || readonly_p (v) || noassign_p (v)) /* expansion error */ + { + if ((v == 0 || readonly_p (v)) && interactive_shell == 0 && posixly_correct) + { + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level (FORCE_EOF); + } + else + { + if (vname != name) + free (vname); + last_command_exit_value = EX_BADUSAGE; + exp_jump_to_top_level (DISCARD); + } + } + + stupidly_hack_special_variables (vname); + + if (vname != name) + free (vname); + + /* From Posix group discussion Feb-March 2010. Issue 7 0000221 */ + + /* If we are double-quoted or if we are not going to be performing word + splitting, we want to quote the value we return appropriately, like + the other expansions this function handles. */ + w->word = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (t1) : quote_escapes (t1); + /* If we have something that's non-null, that's not a quoted null string, + and we're not going to be performing word splitting (we know we're not + because the operator is `='), we can forget we saw a quoted null. */ + if (w->word && w->word[0] && QUOTED_NULL (w->word) == 0) + w->flags &= ~W_SAWQUOTEDNULL; + free (t1); + + /* If we convert a null string into a quoted null, make sure the caller + knows it. */ + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && QUOTED_NULL (w->word)) + w->flags |= W_HASQUOTEDNULL; + + return w; +} + +/* 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, check_null) + char *name, *value; + int check_null; +{ + WORD_LIST *l; + char *temp; + + set_exit_status (EXECUTION_FAILURE); /* ensure it's non-zero */ + if (value && *value) + { + l = expand_string (value, 0); + temp = string_list (l); + report_error ("%s: %s", name, temp ? temp : ""); /* XXX was value not "" */ + FREE (temp); + dispose_words (l); + } + else if (check_null == 0) + report_error (_("%s: parameter not set"), name); + 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] == '\0' || /* ${#} */ + ((sh_syntaxtab[(unsigned char) name[1]] & CSPECVAR) && name[2] == '\0') || /* special param */ + (DIGIT (name[1]) && all_digits (name + 1)) || /* ${#11} */ +#if defined (ARRAY_VARS) + valid_array_reference (name + 1, 0) || /* ${#a[7]} */ +#endif + legal_identifier (name + 1)); /* ${#PS1} */ +} + +/* Handle the parameter brace expansion that requires us to return the + length of a parameter. */ +static intmax_t +parameter_brace_expand_length (name) + char *name; +{ + char *t, *newname; + intmax_t number, arg_index; + WORD_LIST *list; + SHELL_VAR *var; + + var = (SHELL_VAR *)NULL; + + if (name[1] == '\0') /* ${#} */ + number = number_of_args (); + else if (DOLLAR_AT_STAR (name[1]) && name[2] == '\0') /* ${#@}, ${#*} */ + number = number_of_args (); + else if ((sh_syntaxtab[(unsigned char) name[1]] & CSPECVAR) && name[2] == '\0') + { + /* Take the lengths of some of the shell's special parameters. */ + switch (name[1]) + { + case '-': + t = which_set_flags (); + break; + case '?': + t = itos (last_command_exit_value); + break; + case '$': + t = itos (dollar_dollar_pid); + break; + case '!': + if (last_asynchronous_pid == NO_PID) + t = (char *)NULL; /* XXX - error if set -u set? */ + else + t = itos (last_asynchronous_pid); + break; + case '#': + t = itos (number_of_args ()); + break; + } + number = STRLEN (t); + FREE (t); + } +#if defined (ARRAY_VARS) + else if (valid_array_reference (name + 1, 0)) + number = array_length_reference (name + 1); +#endif /* ARRAY_VARS */ + else + { + number = 0; + + if (legal_number (name + 1, &arg_index)) /* ${#1} */ + { + t = get_dollar_var_value (arg_index); + if (t == 0 && unbound_vars_is_error) + return INTMAX_MIN; + number = MB_STRLEN (t); + FREE (t); + } +#if defined (ARRAY_VARS) + else if ((var = find_variable (name + 1)) && (invisible_p (var) == 0) && (array_p (var) || assoc_p (var))) + { + if (assoc_p (var)) + t = assoc_reference (assoc_cell (var), "0"); + else + t = array_reference (array_cell (var), 0); + if (t == 0 && unbound_vars_is_error) + return INTMAX_MIN; + number = MB_STRLEN (t); + } +#endif + /* Fast path for the common case of taking the length of a non-dynamic + scalar variable value. */ + else if ((var || (var = find_variable (name + 1))) && + invisible_p (var) == 0 && + array_p (var) == 0 && assoc_p (var) == 0 && + var->dynamic_value == 0) + number = value_cell (var) ? MB_STRLEN (value_cell (var)) : 0; + else if (var == 0 && unbound_vars_is_error == 0) + number = 0; + else /* ${#PS1} */ + { + newname = savestring (name); + newname[0] = '$'; + list = expand_string (newname, Q_DOUBLE_QUOTES); + t = list ? string_list (list) : (char *)NULL; + free (newname); + if (list) + dispose_words (list); + + number = t ? MB_STRLEN (t) : 0; + FREE (t); + } + } + + return (number); +} + +/* Skip characters in SUBSTR until DELIM. SUBSTR is an arithmetic expression, + so we do some ad-hoc parsing of an arithmetic expression to find + the first DELIM, instead of using strchr(3). Two rules: + 1. If the substring contains a `(', read until closing `)'. + 2. If the substring contains a `?', read past one `:' for each `?'. + The SD_ARITHEXP flag to skip_to_delim takes care of doing this. +*/ + +static char * +skiparith (substr, delim) + char *substr; + int delim; +{ + int i; + char delims[2]; + + delims[0] = delim; + delims[1] = '\0'; + + i = skip_to_delim (substr, 0, delims, SD_ARITHEXP); + return (substr + i); +} + +/* 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 parameters are being used; if it is 2, then + VALUE is really a pointer to an array variable that should be used. + Return value is 1 if both values were OK, 0 if there was a problem + with an invalid expression, or -1 if the values were out of range. */ +static int +verify_substring_values (v, value, substr, vtype, e1p, e2p) + SHELL_VAR *v; + char *value, *substr; + int vtype; + intmax_t *e1p, *e2p; +{ + char *t, *temp1, *temp2; + arrayind_t len; + int expok; +#if defined (ARRAY_VARS) + ARRAY *a; + HASH_TABLE *h; +#endif + + /* duplicate behavior of strchr(3) */ + t = skiparith (substr, ':'); + if (*t && *t == ':') + *t = '\0'; + else + t = (char *)0; + + temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES); + *e1p = evalexp (temp1, 0, &expok); /* XXX - EXP_EXPANDED? */ + free (temp1); + if (expok == 0) + return (0); + + len = -1; /* paranoia */ + switch (vtype) + { + case VT_VARIABLE: + case VT_ARRAYMEMBER: + len = MB_STRLEN (value); + break; + case VT_POSPARMS: + len = number_of_args () + 1; + if (*e1p == 0) + len++; /* add one arg if counting from $0 */ + break; +#if defined (ARRAY_VARS) + case VT_ARRAYVAR: + /* For arrays, the first value deals with array indices. Negative + offsets count from one past the array's maximum index. Associative + arrays treat the number of elements as the maximum index. */ + if (assoc_p (v)) + { + h = assoc_cell (v); + len = assoc_num_elements (h) + (*e1p < 0); + } + else + { + a = (ARRAY *)value; + len = array_max_index (a) + (*e1p < 0); /* arrays index from 0 to n - 1 */ + } + break; +#endif + } + + if (len == -1) /* paranoia */ + return -1; + + if (*e1p < 0) /* negative offsets count from end */ + *e1p += len; + + if (*e1p > len || *e1p < 0) + return (-1); + +#if defined (ARRAY_VARS) + /* For arrays, the second offset deals with the number of elements. */ + if (vtype == VT_ARRAYVAR) + len = assoc_p (v) ? assoc_num_elements (h) : array_num_elements (a); +#endif + + if (t) + { + t++; + temp2 = savestring (t); + temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); + free (temp2); + t[-1] = ':'; + *e2p = evalexp (temp1, 0, &expok); /* XXX - EXP_EXPANDED? */ + free (temp1); + if (expok == 0) + return (0); + + /* Should we allow positional parameter length < 0 to count backwards + from end of positional parameters? */ +#if 1 + if ((vtype == VT_ARRAYVAR || vtype == VT_POSPARMS) && *e2p < 0) +#else /* TAG: bash-5.2 */ + if (vtype == VT_ARRAYVAR && *e2p < 0) +#endif + { + internal_error (_("%s: substring expression < 0"), t); + return (0); + } +#if defined (ARRAY_VARS) + /* In order to deal with sparse arrays, push the intelligence about how + to deal with the number of elements desired down to the array- + specific functions. */ + if (vtype != VT_ARRAYVAR) +#endif + { + if (*e2p < 0) + { + *e2p += len; + if (*e2p < 0 || *e2p < *e1p) + { + internal_error (_("%s: substring expression < 0"), t); + return (0); + } + } + else + *e2p += *e1p; /* want E2 chars starting at E1 */ + if (*e2p > len) + *e2p = len; + } + } + else + *e2p = len; + + return (1); +} + +/* 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). + QUOTED is the standard description of quoting state, using Q_* defines. + FLAGS is currently a set of flags to pass to array_value. If IND is + non-null and not INTMAX_MIN, and FLAGS includes AV_USEIND, IND is + passed to array_value so the array index is not computed again. + If this returns VT_VARIABLE, the caller assumes that CTLESC and CTLNUL + characters in the value are quoted with CTLESC and takes appropriate + steps. For convenience, *VALP is set to the dequoted VALUE. */ +static int +get_var_and_type (varname, value, ind, quoted, flags, varp, valp) + char *varname, *value; + arrayind_t ind; + int quoted, flags; + SHELL_VAR **varp; + char **valp; +{ + int vtype, want_indir; + char *temp, *vname; + SHELL_VAR *v; + arrayind_t lind; + + want_indir = *varname == '!' && + (legal_variable_starter ((unsigned char)varname[1]) || DIGIT (varname[1]) + || VALID_INDIR_PARAM (varname[1])); + if (want_indir) + vname = parameter_brace_find_indir (varname+1, SPECIAL_VAR (varname, 1), quoted, 1); + /* XXX - what if vname == 0 || *vname == 0 ? */ + else + vname = varname; + + if (vname == 0) + { + vtype = VT_VARIABLE; + *varp = (SHELL_VAR *)NULL; + *valp = (char *)NULL; + return (vtype); + } + + /* This sets vtype to VT_VARIABLE or VT_POSPARMS */ + vtype = STR_DOLLAR_AT_STAR (vname); + if (vtype == VT_POSPARMS && vname[0] == '*') + vtype |= VT_STARSUB; + *varp = (SHELL_VAR *)NULL; + +#if defined (ARRAY_VARS) + if (valid_array_reference (vname, 0)) + { + v = array_variable_part (vname, 0, &temp, (int *)0); + /* If we want to signal array_value to use an already-computed index, + set LIND to that index */ + lind = (ind != INTMAX_MIN && (flags & AV_USEIND)) ? ind : 0; + if (v && invisible_p (v)) + { + vtype = VT_ARRAYMEMBER; + *varp = (SHELL_VAR *)NULL; + *valp = (char *)NULL; + } + if (v && (array_p (v) || assoc_p (v))) + { + if (ALL_ELEMENT_SUB (temp[0]) && temp[1] == RBRACK) + { + /* Callers have to differentiate between indexed and associative */ + vtype = VT_ARRAYVAR; + if (temp[0] == '*') + vtype |= VT_STARSUB; + *valp = array_p (v) ? (char *)array_cell (v) : (char *)assoc_cell (v); + } + else + { + vtype = VT_ARRAYMEMBER; + *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind); + } + *varp = v; + } + else if (v && (ALL_ELEMENT_SUB (temp[0]) && temp[1] == RBRACK)) + { + vtype = VT_VARIABLE; + *varp = v; + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + *valp = value ? dequote_string (value) : (char *)NULL; + else + *valp = value ? dequote_escapes (value) : (char *)NULL; + } + else + { + vtype = VT_ARRAYMEMBER; + *varp = v; + *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind); + } + } + else if ((v = find_variable (vname)) && (invisible_p (v) == 0) && (assoc_p (v) || array_p (v))) + { + vtype = VT_ARRAYMEMBER; + *varp = v; + *valp = assoc_p (v) ? assoc_reference (assoc_cell (v), "0") : array_reference (array_cell (v), 0); + } + else +#endif + { + if (value && vtype == VT_VARIABLE) + { + *varp = find_variable (vname); + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + *valp = dequote_string (value); + else + *valp = dequote_escapes (value); + } + else + *valp = value; + } + + if (want_indir) + free (vname); + + return vtype; +} + +/***********************************************************/ +/* */ +/* Functions to perform transformations on variable values */ +/* */ +/***********************************************************/ + +static char * +string_var_assignment (v, s) + SHELL_VAR *v; + char *s; +{ + char flags[MAX_ATTRIBUTES], *ret, *val; + int i; + + val = (v && (invisible_p (v) || var_isset (v) == 0)) ? (char *)NULL : sh_quote_reusable (s, 0); + i = var_attribute_string (v, 0, flags); + if (i == 0 && val == 0) + return (char *)NULL; + + ret = (char *)xmalloc (i + STRLEN (val) + strlen (v->name) + 16 + MAX_ATTRIBUTES); + if (i > 0 && val == 0) + sprintf (ret, "declare -%s %s", flags, v->name); + else if (i > 0) + sprintf (ret, "declare -%s %s=%s", flags, v->name, val); + else + sprintf (ret, "%s=%s", v->name, val); + free (val); + return ret; +} + +#if defined (ARRAY_VARS) +static char * +array_var_assignment (v, itype, quoted, atype) + SHELL_VAR *v; + int itype, quoted, atype; +{ + char *ret, *val, flags[MAX_ATTRIBUTES]; + int i; + + if (v == 0) + return (char *)NULL; + if (atype == 2) + val = array_p (v) ? array_to_kvpair (array_cell (v), 0) + : assoc_to_kvpair (assoc_cell (v), 0); + else + val = array_p (v) ? array_to_assign (array_cell (v), 0) + : assoc_to_assign (assoc_cell (v), 0); + + if (val == 0 && (invisible_p (v) || var_isset (v) == 0)) + ; /* placeholder */ + else if (val == 0) + { + val = (char *)xmalloc (3); + val[0] = LPAREN; + val[1] = RPAREN; + val[2] = 0; + } + else + { + ret = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (val) : quote_escapes (val); + free (val); + val = ret; + } + + if (atype == 2) + return val; + + i = var_attribute_string (v, 0, flags); + ret = (char *)xmalloc (i + STRLEN (val) + strlen (v->name) + 16); + if (val) + sprintf (ret, "declare -%s %s=%s", flags, v->name, val); + else + sprintf (ret, "declare -%s %s", flags, v->name); + free (val); + return ret; +} +#endif + +static char * +pos_params_assignment (list, itype, quoted) + WORD_LIST *list; + int itype; + int quoted; +{ + char *temp, *ret; + + /* first, we transform the list to quote each word. */ + temp = list_transform ('Q', (SHELL_VAR *)0, list, itype, quoted); + ret = (char *)xmalloc (strlen (temp) + 8); + strcpy (ret, "set -- "); + strcpy (ret + 7, temp); + free (temp); + return ret; +} + +static char * +string_transform (xc, v, s) + int xc; + SHELL_VAR *v; + char *s; +{ + char *ret, flags[MAX_ATTRIBUTES], *t; + int i; + + if (((xc == 'A' || xc == 'a') && v == 0)) + return (char *)NULL; + else if (xc != 'a' && xc != 'A' && s == 0) + return (char *)NULL; + + switch (xc) + { + /* Transformations that interrogate the variable */ + case 'a': + i = var_attribute_string (v, 0, flags); + ret = (i > 0) ? savestring (flags) : (char *)NULL; + break; + case 'A': + ret = string_var_assignment (v, s); + break; + case 'K': + ret = sh_quote_reusable (s, 0); + break; + /* Transformations that modify the variable's value */ + case 'E': + t = ansiexpand (s, 0, strlen (s), (int *)0); + ret = dequote_escapes (t); + free (t); + break; + case 'P': + ret = decode_prompt_string (s); + break; + case 'Q': + ret = sh_quote_reusable (s, 0); + break; + case 'U': + ret = sh_modcase (s, 0, CASE_UPPER); + break; + case 'u': + ret = sh_modcase (s, 0, CASE_UPFIRST); /* capitalize */ + break; + case 'L': + ret = sh_modcase (s, 0, CASE_LOWER); + break; + default: + ret = (char *)NULL; + break; + } + return ret; +} + +static char * +list_transform (xc, v, list, itype, quoted) + int xc; + SHELL_VAR *v; + WORD_LIST *list; + int itype, quoted; +{ + WORD_LIST *new, *l; + WORD_DESC *w; + char *tword; + int qflags; + + for (new = (WORD_LIST *)NULL, l = list; l; l = l->next) + { + tword = string_transform (xc, v, l->word->word); + w = alloc_word_desc (); + w->word = tword ? tword : savestring (""); /* XXX */ + new = make_word_list (w, new); + } + l = REVERSE_LIST (new, WORD_LIST *); + + qflags = quoted; + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how $* will be expanded. */ + if (itype == '*' && expand_no_split_dollar_star && ifs_is_null) + qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */ + + tword = string_list_pos_params (itype, l, qflags, 0); + dispose_words (l); + + return (tword); +} + +static char * +parameter_list_transform (xc, itype, quoted) + int xc; + int itype; + int quoted; +{ + char *ret; + WORD_LIST *list; + + list = list_rest_of_args (); + if (list == 0) + return ((char *)NULL); + if (xc == 'A') + ret = pos_params_assignment (list, itype, quoted); + else + ret = list_transform (xc, (SHELL_VAR *)0, list, itype, quoted); + dispose_words (list); + return (ret); +} + +#if defined (ARRAY_VARS) +static char * +array_transform (xc, var, starsub, quoted) + int xc; + SHELL_VAR *var; + int starsub; /* so we can figure out how it's indexed */ + int quoted; +{ + ARRAY *a; + HASH_TABLE *h; + int itype; + char *ret; + WORD_LIST *list; + SHELL_VAR *v; + + v = var; /* XXX - for now */ + + itype = starsub ? '*' : '@'; + + if (xc == 'A') + return (array_var_assignment (v, itype, quoted, 1)); + else if (xc == 'K') + return (array_var_assignment (v, itype, quoted, 2)); + + /* special case for unset arrays and attributes */ + if (xc == 'a' && (invisible_p (v) || var_isset (v) == 0)) + { + char flags[MAX_ATTRIBUTES]; + int i; + + i = var_attribute_string (v, 0, flags); + return ((i > 0) ? savestring (flags) : (char *)NULL); + } + + a = (v && array_p (v)) ? array_cell (v) : 0; + h = (v && assoc_p (v)) ? assoc_cell (v) : 0; + + list = a ? array_to_word_list (a) : (h ? assoc_to_word_list (h) : 0); + if (list == 0) + return ((char *)NULL); + ret = list_transform (xc, v, list, itype, quoted); + dispose_words (list); + + return ret; +} +#endif /* ARRAY_VARS */ + +static int +valid_parameter_transform (xform) + char *xform; +{ + if (xform[1]) + return 0; + + /* check for valid values of xform[0] */ + switch (xform[0]) + { + case 'a': /* expand to a string with just attributes */ + case 'A': /* expand as an assignment statement with attributes */ + case 'K': /* expand assoc array to list of key/value pairs */ + case 'E': /* expand like $'...' */ + case 'P': /* expand like prompt string */ + case 'Q': /* quote reusably */ + case 'U': /* transform to uppercase */ + case 'u': /* tranform by capitalizing */ + case 'L': /* transform to lowercase */ + return 1; + default: + return 0; + } +} + +static char * +parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, flags) + char *varname, *value; + int ind; + char *xform; + int rtype, quoted, pflags, flags; +{ + int vtype, xc, starsub; + char *temp1, *val, *oname; + SHELL_VAR *v; + + xc = xform[0]; + if (value == 0 && xc != 'A' && xc != 'a') + return ((char *)NULL); + + oname = this_command_name; + this_command_name = varname; + + vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + if (vtype == -1) + { + this_command_name = oname; + return ((char *)NULL); + } + + if (valid_parameter_transform (xform) == 0) + { + this_command_name = oname; +#if 0 /* TAG: bash-5.2 Martin Schulte 10/2020 */ + return (interactive_shell ? &expand_param_error : &expand_param_fatal); +#else + return &expand_param_error; +#endif + } + + starsub = vtype & VT_STARSUB; + vtype &= ~VT_STARSUB; + + /* If we are asked to display the attributes of an unset variable, V will + be NULL after the call to get_var_and_type. Double-check here. */ + if ((xc == 'a' || xc == 'A') && vtype == VT_VARIABLE && varname && v == 0) + v = find_variable (varname); + + temp1 = (char *)NULL; /* shut up gcc */ + switch (vtype) + { + case VT_VARIABLE: + case VT_ARRAYMEMBER: + temp1 = string_transform (xc, v, val); + if (vtype == VT_VARIABLE) + FREE (val); + if (temp1) + { + val = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + ? quote_string (temp1) + : quote_escapes (temp1); + free (temp1); + temp1 = val; + } + break; +#if defined (ARRAY_VARS) + case VT_ARRAYVAR: + temp1 = array_transform (xc, v, starsub, quoted); + if (temp1 && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) + { + val = quote_escapes (temp1); + free (temp1); + temp1 = val; + } + break; +#endif + case VT_POSPARMS: + temp1 = parameter_list_transform (xc, varname[0], quoted); + if (temp1 && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) + { + val = quote_escapes (temp1); + free (temp1); + temp1 = val; + } + break; + } + + this_command_name = oname; + return temp1; +} + +/******************************************************/ +/* */ +/* Functions to extract substrings of variable values */ +/* */ +/******************************************************/ + +#if defined (HANDLE_MULTIBYTE) +/* Character-oriented rather than strictly byte-oriented substrings. S and + E, rather being strict indices into STRING, indicate character (possibly + multibyte character) positions that require calculation. + Used by the ${param:offset[:length]} expansion. */ +static char * +mb_substring (string, s, e) + char *string; + int s, e; +{ + char *tt; + int start, stop, i; + size_t slen; + DECLARE_MBSTATE; + + start = 0; + /* Don't need string length in ADVANCE_CHAR unless multibyte chars possible. */ + slen = (MB_CUR_MAX > 1) ? STRLEN (string) : 0; + + i = s; + while (string[start] && i--) + ADVANCE_CHAR (string, slen, start); + stop = start; + i = e - s; + while (string[stop] && i--) + ADVANCE_CHAR (string, slen, stop); + tt = substring (string, start, stop); + return tt; +} +#endif + +/* 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, ind, substr, quoted, pflags, flags) + char *varname, *value; + int ind; + char *substr; + int quoted, pflags, flags; +{ + intmax_t e1, e2; + int vtype, r, starsub; + char *temp, *val, *tt, *oname; + SHELL_VAR *v; + + if (value == 0 && ((varname[0] != '@' && varname[0] != '*') || varname[1])) + return ((char *)NULL); + + oname = this_command_name; + this_command_name = varname; + + vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + if (vtype == -1) + { + this_command_name = oname; + return ((char *)NULL); + } + + starsub = vtype & VT_STARSUB; + vtype &= ~VT_STARSUB; + + r = verify_substring_values (v, val, substr, vtype, &e1, &e2); + this_command_name = oname; + if (r <= 0) + { + if (vtype == VT_VARIABLE) + FREE (val); + return ((r == 0) ? &expand_param_error : (char *)NULL); + } + + switch (vtype) + { + case VT_VARIABLE: + case VT_ARRAYMEMBER: +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1) + tt = mb_substring (val, e1, e2); + else +#endif + tt = substring (val, e1, e2); + + if (vtype == VT_VARIABLE) + FREE (val); + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + temp = quote_string (tt); + else + temp = tt ? quote_escapes (tt) : (char *)NULL; + FREE (tt); + break; + case VT_POSPARMS: + case VT_ARRAYVAR: + if (vtype == VT_POSPARMS) + tt = pos_params (varname, e1, e2, quoted, pflags); +#if defined (ARRAY_VARS) + /* assoc_subrange and array_subrange both call string_list_pos_params, + so we can treat this case just like VT_POSPARAMS. */ + else if (assoc_p (v)) + /* we convert to list and take first e2 elements starting at e1th + element -- officially undefined for now */ + tt = assoc_subrange (assoc_cell (v), e1, e2, starsub, quoted, pflags); + else + /* We want E2 to be the number of elements desired (arrays can be + sparse, so verify_substring_values just returns the numbers + specified and we rely on array_subrange to understand how to + deal with them). */ + tt = array_subrange (array_cell (v), e1, e2, starsub, quoted, pflags); +#endif + /* We want to leave this alone in every case where pos_params/ + string_list_pos_params quotes the list members */ + if (tt && quoted == 0 && ifs_is_null) + { + temp = tt; /* Posix interp 888 */ + } + else if (tt && quoted == 0 && (pflags & PF_ASSIGNRHS)) + { + temp = tt; /* Posix interp 888 */ + } + else if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) + { + temp = tt ? quote_escapes (tt) : (char *)NULL; + FREE (tt); + } + else + temp = tt; + break; + + default: + temp = (char *)NULL; + } + + return temp; +} + +/****************************************************************/ +/* */ +/* Functions to perform pattern substitution on variable values */ +/* */ +/****************************************************************/ + +#ifdef INCLUDE_UNUSED +static int +shouldexp_replacement (s) + char *s; +{ + register char *p; + + for (p = s; p && *p; p++) + { + if (*p == '\\') + p++; + else if (*p == '&') + return 1; + } + return 0; +} +#endif + +char * +pat_subst (string, pat, rep, mflags) + char *string, *pat, *rep; + int mflags; +{ + char *ret, *s, *e, *str, *rstr, *mstr, *send; + int rptr, mtype, rxpand, mlen; + size_t rsize, l, replen, rslen; + DECLARE_MBSTATE; + + if (string == 0) + return (savestring ("")); + + mtype = mflags & MATCH_TYPEMASK; + +#if 0 /* TAG: bash-5.2? */ + rxpand = (rep && *rep) ? shouldexp_replacement (rep) : 0; +#else + rxpand = 0; +#endif + + /* Special cases: + * 1. A null pattern with mtype == MATCH_BEG means to prefix STRING + * with REP and return the result. + * 2. A null pattern with mtype == MATCH_END means to append REP to + * STRING and return the result. + * 3. A null STRING with a matching pattern means to append REP to + * STRING and return the result. + * These don't understand or process `&' in the replacement string. + */ + if ((pat == 0 || *pat == 0) && (mtype == MATCH_BEG || mtype == MATCH_END)) + { + replen = STRLEN (rep); + l = STRLEN (string); + ret = (char *)xmalloc (replen + l + 2); + if (replen == 0) + strcpy (ret, string); + else if (mtype == MATCH_BEG) + { + strcpy (ret, rep); + strcpy (ret + replen, string); + } + else + { + strcpy (ret, string); + strcpy (ret + l, rep); + } + return (ret); + } + else if (*string == 0 && (match_pattern (string, pat, mtype, &s, &e) != 0)) + { + replen = STRLEN (rep); + ret = (char *)xmalloc (replen + 1); + if (replen == 0) + ret[0] = '\0'; + else + strcpy (ret, rep); + return (ret); + } + + ret = (char *)xmalloc (rsize = 64); + ret[0] = '\0'; + send = string + strlen (string); + + for (replen = STRLEN (rep), rptr = 0, str = string; *str;) + { + if (match_pattern (str, pat, mtype, &s, &e) == 0) + break; + l = s - str; + + if (rep && rxpand) + { + int x; + mlen = e - s; + mstr = xmalloc (mlen + 1); + for (x = 0; x < mlen; x++) + mstr[x] = s[x]; + mstr[mlen] = '\0'; + rstr = strcreplace (rep, '&', mstr, 0); + free (mstr); + rslen = strlen (rstr); + } + else + { + rstr = rep; + rslen = replen; + } + + RESIZE_MALLOCED_BUFFER (ret, rptr, (l + rslen), rsize, 64); + + /* 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, rstr, rslen); + rptr += rslen; + } + str = e; /* e == end of match */ + + if (rstr != rep) + free (rstr); + + if (((mflags & MATCH_GLOBREP) == 0) || mtype != MATCH_ANY) + break; + + if (s == e) + { + /* On a zero-length match, make sure we copy one character, since + we increment one character to avoid infinite recursion. */ + char *p, *origp, *origs; + size_t clen; + + RESIZE_MALLOCED_BUFFER (ret, rptr, locale_mb_cur_max, rsize, 64); +#if defined (HANDLE_MULTIBYTE) + p = origp = ret + rptr; + origs = str; + COPY_CHAR_P (p, str, send); + rptr += p - origp; + e += str - origs; +#else + ret[rptr++] = *str++; + e++; /* avoid infinite recursion on zero-length match */ +#endif + } + } + + /* Now copy the unmatched portion of the input string */ + if (str && *str) + { + RESIZE_MALLOCED_BUFFER (ret, rptr, STRLEN(str) + 1, rsize, 64); + 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; + int pchar, qflags, pflags; + + 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 = alloc_word_desc (); + w->word = ret ? ret : savestring (""); + dispose_word (params->word); + params->word = w; + } + + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + pflags = (mflags & MATCH_ASSIGNRHS) == MATCH_ASSIGNRHS ? PF_ASSIGNRHS : 0; + + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how $* will be expanded. */ + if (pchar == '*' && (mflags & MATCH_ASSIGNRHS) && expand_no_split_dollar_star && ifs_is_null) + qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */ + + ret = string_list_pos_params (pchar, save, qflags, pflags); + dispose_words (save); + + return (ret); +} + +/* Perform pattern substitution on VALUE, which is the expansion of + VARNAME. PATSUB is an expression supplying the pattern to match + and the string to substitute. QUOTED is a flags word containing + the type of quoting currently in effect. */ +static char * +parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) + char *varname, *value; + int ind; + char *patsub; + int quoted, pflags, flags; +{ + int vtype, mflags, starsub, delim; + char *val, *temp, *pat, *rep, *p, *lpatsub, *tt, *oname; + SHELL_VAR *v; + + if (value == 0) + return ((char *)NULL); + + oname = this_command_name; + this_command_name = varname; /* error messages */ + + vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + if (vtype == -1) + { + this_command_name = oname; + return ((char *)NULL); + } + + starsub = vtype & VT_STARSUB; + vtype &= ~VT_STARSUB; + + mflags = 0; + /* PATSUB is never NULL when this is called. */ + if (*patsub == '/') + { + mflags |= MATCH_GLOBREP; + patsub++; + } + + /* Malloc this because expand_string_if_necessary or one of the expansion + functions in its call chain may free it on a substitution error. */ + lpatsub = savestring (patsub); + + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + mflags |= MATCH_QUOTED; + + if (starsub) + mflags |= MATCH_STARSUB; + + if (pflags & PF_ASSIGNRHS) + mflags |= MATCH_ASSIGNRHS; + + /* If the pattern starts with a `/', make sure we skip over it when looking + for the replacement delimiter. */ + delim = skip_to_delim (lpatsub, ((*patsub == '/') ? 1 : 0), "/", 0); + if (lpatsub[delim] == '/') + { + lpatsub[delim] = 0; + rep = lpatsub + delim + 1; + } + else + rep = (char *)NULL; + + if (rep && *rep == '\0') + rep = (char *)NULL; + + /* Perform the same expansions on the pattern as performed by the + pattern removal expansions. */ + pat = getpattern (lpatsub, quoted, 1); + + if (rep) + { + /* We want to perform quote removal on the expanded replacement even if + the entire expansion is double-quoted because the parser and string + extraction functions treated quotes in the replacement string as + special. THIS IS NOT BACKWARDS COMPATIBLE WITH BASH-4.2. */ + if (shell_compatibility_level > 42) + rep = expand_string_if_necessary (rep, quoted & ~(Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT), expand_string_unsplit); + /* This is the bash-4.2 code. */ + else if ((mflags & MATCH_QUOTED) == 0) + rep = expand_string_if_necessary (rep, quoted, expand_string_unsplit); + else + rep = expand_string_to_string_internal (rep, quoted, expand_string_unsplit); + } + + /* ksh93 doesn't allow the match specifier to be a part of the expanded + pattern. This is an extension. Make sure we don't anchor the pattern + at the beginning or end of the string if we're doing global replacement, + though. */ + p = pat; + if (mflags & MATCH_GLOBREP) + mflags |= MATCH_ANY; + else if (pat && pat[0] == '#') + { + mflags |= MATCH_BEG; + p++; + } + else if (pat && pat[0] == '%') + { + mflags |= MATCH_END; + p++; + } + else + mflags |= MATCH_ANY; + + /* OK, we now want to substitute REP for PAT in VAL. If + flags & MATCH_GLOBREP is non-zero, the substitution is done + everywhere, otherwise only the first occurrence of PAT is + replaced. The pattern matching code doesn't understand + CTLESC quoting CTLESC and CTLNUL so we use the dequoted variable + values passed in (VT_VARIABLE) so the pattern substitution + code works right. We need to requote special chars after + we're done for VT_VARIABLE and VT_ARRAYMEMBER, and for the + other cases if QUOTED == 0, since the posparams and arrays + indexed by * or @ do special things when QUOTED != 0. */ + + switch (vtype) + { + case VT_VARIABLE: + case VT_ARRAYMEMBER: + temp = pat_subst (val, p, rep, mflags); + if (vtype == VT_VARIABLE) + FREE (val); + if (temp) + { + tt = (mflags & MATCH_QUOTED) ? quote_string (temp) : quote_escapes (temp); + free (temp); + temp = tt; + } + break; + case VT_POSPARMS: + /* This does the right thing for the case where we are not performing + word splitting. MATCH_STARSUB restricts it to ${* /foo/bar}, and + pos_params_pat_subst/string_list_pos_params will do the right thing + in turn for the case where ifs_is_null. Posix interp 888 */ + if ((pflags & PF_NOSPLIT2) && (mflags & MATCH_STARSUB)) + mflags |= MATCH_ASSIGNRHS; + temp = pos_params_pat_subst (val, p, rep, mflags); + if (temp && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp && quoted == 0 && (pflags & PF_ASSIGNRHS)) + { + /* Posix interp 888 */ + } + else if (temp && (mflags & MATCH_QUOTED) == 0) + { + tt = quote_escapes (temp); + free (temp); + temp = tt; + } + break; +#if defined (ARRAY_VARS) + case VT_ARRAYVAR: + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how ${A[*]} will be + expanded to make it identical to $*. */ + if ((mflags & MATCH_STARSUB) && (mflags & MATCH_ASSIGNRHS) && ifs_is_null) + mflags |= MATCH_QUOTED; /* Posix interp 888 */ + + /* these eventually call string_list_pos_params */ + if (assoc_p (v)) + temp = assoc_patsub (assoc_cell (v), p, rep, mflags); + else + temp = array_patsub (array_cell (v), p, rep, mflags); + + if (temp && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp && (mflags & MATCH_QUOTED) == 0) + { + tt = quote_escapes (temp); + free (temp); + temp = tt; + } + break; +#endif + } + + FREE (pat); + FREE (rep); + free (lpatsub); + + this_command_name = oname; + + return temp; +} + +/****************************************************************/ +/* */ +/* Functions to perform case modification on variable values */ +/* */ +/****************************************************************/ + +/* Do case modification on the positional parameters. */ + +static char * +pos_params_modcase (string, pat, modop, mflags) + char *string, *pat; + int modop; + int mflags; +{ + WORD_LIST *save, *params; + WORD_DESC *w; + char *ret; + int pchar, qflags, pflags; + + save = params = list_rest_of_args (); + if (save == 0) + return ((char *)NULL); + + for ( ; params; params = params->next) + { + ret = sh_modcase (params->word->word, pat, modop); + w = alloc_word_desc (); + w->word = ret ? ret : savestring (""); + dispose_word (params->word); + params->word = w; + } + + pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; + qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + pflags = (mflags & MATCH_ASSIGNRHS) == MATCH_ASSIGNRHS ? PF_ASSIGNRHS : 0; + + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how $* will be expanded. */ + if (pchar == '*' && (mflags & MATCH_ASSIGNRHS) && ifs_is_null) + qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */ + + ret = string_list_pos_params (pchar, save, qflags, pflags); + dispose_words (save); + + return (ret); +} + +/* Perform case modification on VALUE, which is the expansion of + VARNAME. MODSPEC is an expression supplying the type of modification + to perform. QUOTED is a flags word containing the type of quoting + currently in effect. */ +static char * +parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, pflags, flags) + char *varname, *value; + int ind, modspec; + char *patspec; + int quoted, pflags, flags; +{ + int vtype, starsub, modop, mflags, x; + char *val, *temp, *pat, *p, *lpat, *tt, *oname; + SHELL_VAR *v; + + if (value == 0) + return ((char *)NULL); + + oname = this_command_name; + this_command_name = varname; + + vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + if (vtype == -1) + { + this_command_name = oname; + return ((char *)NULL); + } + + starsub = vtype & VT_STARSUB; + vtype &= ~VT_STARSUB; + + modop = 0; + mflags = 0; + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + mflags |= MATCH_QUOTED; + if (starsub) + mflags |= MATCH_STARSUB; + if (pflags & PF_ASSIGNRHS) + mflags |= MATCH_ASSIGNRHS; + + p = patspec; + if (modspec == '^') + { + x = p && p[0] == modspec; + modop = x ? CASE_UPPER : CASE_UPFIRST; + p += x; + } + else if (modspec == ',') + { + x = p && p[0] == modspec; + modop = x ? CASE_LOWER : CASE_LOWFIRST; + p += x; + } + else if (modspec == '~') + { + x = p && p[0] == modspec; + modop = x ? CASE_TOGGLEALL : CASE_TOGGLE; + p += x; + } + + lpat = p ? savestring (p) : 0; + /* Perform the same expansions on the pattern as performed by the + pattern removal expansions. */ + pat = lpat ? getpattern (lpat, quoted, 1) : 0; + + /* OK, now we do the case modification. */ + switch (vtype) + { + case VT_VARIABLE: + case VT_ARRAYMEMBER: + temp = sh_modcase (val, pat, modop); + if (vtype == VT_VARIABLE) + FREE (val); + if (temp) + { + tt = (mflags & MATCH_QUOTED) ? quote_string (temp) : quote_escapes (temp); + free (temp); + temp = tt; + } + break; + + case VT_POSPARMS: + temp = pos_params_modcase (val, pat, modop, mflags); + if (temp && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp && (mflags & MATCH_QUOTED) == 0) + { + tt = quote_escapes (temp); + free (temp); + temp = tt; + } + break; + +#if defined (ARRAY_VARS) + case VT_ARRAYVAR: + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how ${A[*]} will be + expanded to make it identical to $*. */ + if ((mflags & MATCH_STARSUB) && (mflags & MATCH_ASSIGNRHS) && ifs_is_null) + mflags |= MATCH_QUOTED; /* Posix interp 888 */ + + temp = assoc_p (v) ? assoc_modcase (assoc_cell (v), pat, modop, mflags) + : array_modcase (array_cell (v), pat, modop, mflags); + + if (temp && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp && (mflags & MATCH_QUOTED) == 0) + { + tt = quote_escapes (temp); + free (temp); + temp = tt; + } + + break; +#endif + } + + FREE (pat); + free (lpat); + + this_command_name = oname; + + return temp; +} + +/* Check for unbalanced parens in S, which is the contents of $(( ... )). If + any occur, this must be a nested command substitution, so return 0. + Otherwise, return 1. A valid arithmetic expression must always have a + ( before a matching ), so any cases where there are more right parens + means that this must not be an arithmetic expression, though the parser + will not accept it without a balanced total number of parens. */ +static int +chk_arithsub (s, len) + const char *s; + int len; +{ + int i, count; + DECLARE_MBSTATE; + + i = count = 0; + while (i < len) + { + if (s[i] == LPAREN) + count++; + else if (s[i] == RPAREN) + { + count--; + if (count < 0) + return 0; + } + + switch (s[i]) + { + default: + ADVANCE_CHAR (s, len, i); + break; + + case '\\': + i++; + if (s[i]) + ADVANCE_CHAR (s, len, i); + break; + + case '\'': + i = skip_single_quoted (s, len, ++i, 0); + break; + + case '"': + i = skip_double_quoted ((char *)s, len, ++i, 0); + break; + } + } + + return (count == 0); +} + +/****************************************************************/ +/* */ +/* Functions to perform parameter expansion on a string */ +/* */ +/****************************************************************/ + +/* ${[#][!]name[[:][^[^]][,[,]]#[#]%[%]-=?+[word][:e1[:e2]]]} */ +static WORD_DESC * +parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, contains_dollar_at) + char *string; + int *indexp, quoted, pflags, *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, want_casemod, want_attributes; + char *name, *value, *temp, *temp1; + WORD_DESC *tdesc, *ret; + int t_index, sindex, c, tflag, modspec, local_pflags, all_element_arrayref; + intmax_t number; + arrayind_t ind; + + temp = temp1 = value = (char *)NULL; + var_is_set = var_is_null = var_is_special = check_nullness = 0; + want_substring = want_indir = want_patsub = want_casemod = want_attributes = 0; + + local_pflags = 0; + all_element_arrayref = 0; + + sindex = *indexp; + t_index = ++sindex; + /* ${#var} doesn't have any of the other parameter expansions on it. */ + if (string[t_index] == '#' && legal_variable_starter (string[t_index+1])) /* {{ */ + name = string_extract (string, &t_index, "}", SX_VARNAME); + else +#if defined (CASEMOD_EXPANSIONS) + /* To enable case-toggling expansions using the `~' operator character + define CASEMOD_TOGGLECASE in config-top.h */ +# if defined (CASEMOD_TOGGLECASE) + name = string_extract (string, &t_index, "#%^,~:-=?+/@}", SX_VARNAME); +# else + name = string_extract (string, &t_index, "#%^,:-=?+/@}", SX_VARNAME); +# endif /* CASEMOD_TOGGLECASE */ +#else + name = string_extract (string, &t_index, "#%:-=?+/@}", SX_VARNAME); +#endif /* CASEMOD_EXPANSIONS */ + + /* Handle ${@[stuff]} now that @ is a word expansion operator. Not exactly + the cleanest code ever. */ + if (*name == 0 && sindex == t_index && string[sindex] == '@') + { + name = (char *)xrealloc (name, 2); + name[0] = '@'; + name[1] = '\0'; + t_index++; + } + else if (*name == '!' && t_index > sindex && string[t_index] == '@' && string[t_index+1] == RBRACE) + { + name = (char *)xrealloc (name, t_index - sindex + 2); + name[t_index - sindex] = '@'; + name[t_index - sindex + 1] = '\0'; + t_index++; + } + + ret = 0; + tflag = 0; + + ind = INTMAX_MIN; + + /* If the name really consists of a special variable, then make sure + that we have the entire name. We don't allow indirect references + to special variables except `#', `?', `@' and `*'. This clause is + designed to handle ${#SPECIAL} and ${!SPECIAL}, not anything more + general. */ + if ((sindex == t_index && VALID_SPECIAL_LENGTH_PARAM (string[t_index])) || + (sindex == t_index && string[sindex] == '#' && VALID_SPECIAL_LENGTH_PARAM (string[sindex + 1])) || + (sindex == t_index - 1 && string[sindex] == '!' && VALID_INDIR_PARAM (string[t_index]))) + { + t_index++; + temp1 = string_extract (string, &t_index, "#%:-=?+/@}", 0); + name = (char *)xrealloc (name, 3 + (strlen (temp1))); + *name = string[sindex]; + if (string[sindex] == '!') + { + /* indirect reference of $#, $?, $@, or $* */ + 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 == ':' && VALID_PARAM_EXPAND_CHAR (string[sindex])) + { + check_nullness++; + if (c = string[sindex]) + sindex++; + } + else if (c == ':' && string[sindex] != RBRACE) + want_substring = 1; + else if (c == '/' /* && string[sindex] != RBRACE */) /* XXX */ + want_patsub = 1; +#if defined (CASEMOD_EXPANSIONS) + else if (c == '^' || c == ',' || c == '~') + { + modspec = c; + want_casemod = 1; + } +#endif + else if (c == '@' && (string[sindex] == 'a' || string[sindex] == 'A') && string[sindex+1] == RBRACE) + { + /* special case because we do not want to shortcut foo as foo[0] here */ + want_attributes = 1; + local_pflags |= PF_ALLINDS; + } + + /* Catch the valid and invalid brace expressions that made it through the + tests above. */ + /* ${#-} is a valid expansion and means to take the length of $-. + Similarly for ${#?} and ${##}... */ + if (name[0] == '#' && name[1] == '\0' && check_nullness == 0 && + VALID_SPECIAL_LENGTH_PARAM (c) && string[sindex] == RBRACE) + { + name = (char *)xrealloc (name, 3); + name[1] = c; + name[2] = '\0'; + c = string[sindex++]; + } + + /* ...but ${#%}, ${#:}, ${#=}, ${#+}, and ${#/} are errors. */ + if (name[0] == '#' && name[1] == '\0' && check_nullness == 0 && + member (c, "%:=+/") && string[sindex] == RBRACE) + { + temp = (char *)NULL; + goto bad_substitution; /* XXX - substitution error */ + } + + /* Indirect expansion begins with a `!'. A valid indirect expansion is + either a variable name, one of the positional parameters or a special + variable that expands to one of the positional parameters. */ + want_indir = *name == '!' && + (legal_variable_starter ((unsigned char)name[1]) || DIGIT (name[1]) + || VALID_INDIR_PARAM (name[1])); + + /* Determine the value of this variable whose name is NAME. */ + + /* Check for special variables, directly referenced. */ + if (SPECIAL_VAR (name, want_indir)) + var_is_special++; + + /* Check for special expansion things, like the length of a parameter */ + if (*name == '#' && name[1]) + { + /* 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. Also check NAME for validity before trying + to go on. */ + if (string[sindex - 1] != RBRACE || (valid_length_expression (name) == 0)) + { + temp = (char *)NULL; + goto bad_substitution; /* substitution error */ + } + + number = parameter_brace_expand_length (name); + if (number == INTMAX_MIN && unbound_vars_is_error) + { + set_exit_status (EXECUTION_FAILURE); + err_unboundvar (name+1); + free (name); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); + } + free (name); + + *indexp = sindex; + if (number < 0) + return (&expand_wdesc_error); + else + { + ret = alloc_word_desc (); + ret->word = itos (number); + return ret; + } + } + + /* ${@} 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; + + tflag |= W_DOLLARAT; + } + + /* Process ${!PREFIX*} expansion. */ + if (want_indir && string[sindex - 1] == RBRACE && + (string[sindex - 2] == '*' || string[sindex - 2] == '@') && + legal_variable_starter ((unsigned char) name[1])) + { + char **x; + WORD_LIST *xlist; + + temp1 = savestring (name + 1); + number = strlen (temp1); + temp1[number - 1] = '\0'; + x = all_variables_matching_prefix (temp1); + xlist = strvec_to_word_list (x, 0, 0); + if (string[sindex - 2] == '*') + temp = string_list_dollar_star (xlist, quoted, 0); + else + { + temp = string_list_dollar_at (xlist, quoted, 0); + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp) + *quoted_dollar_atp = 1; + if (contains_dollar_at) + *contains_dollar_at = 1; + + tflag |= W_DOLLARAT; + } + free (x); + dispose_words (xlist); + free (temp1); + *indexp = sindex; + + free (name); + + ret = alloc_word_desc (); + ret->word = temp; + ret->flags = tflag; /* XXX */ + return ret; + } + +#if defined (ARRAY_VARS) + /* Process ${!ARRAY[@]} and ${!ARRAY[*]} expansion. */ + if (want_indir && string[sindex - 1] == RBRACE && + string[sindex - 2] == RBRACK && valid_array_reference (name+1, 0)) + { + char *x, *x1; + + temp1 = savestring (name + 1); + x = array_variable_name (temp1, 0, &x1, (int *)0); + FREE (x); + if (ALL_ELEMENT_SUB (x1[0]) && x1[1] == RBRACK) + { + temp = array_keys (temp1, quoted, pflags); /* handles assoc vars too */ + if (x1[0] == '@') + { + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp) + *quoted_dollar_atp = 1; + if (contains_dollar_at) + *contains_dollar_at = 1; + + tflag |= W_DOLLARAT; + } + + free (name); + free (temp1); + *indexp = sindex; + + ret = alloc_word_desc (); + ret->word = temp; + ret->flags = tflag; /* XXX */ + return ret; + } + + free (temp1); + } +#endif /* ARRAY_VARS */ + + /* 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; /* substitution error */ + } + + if (want_indir) + { + tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, pflags|local_pflags, quoted_dollar_atp, contains_dollar_at); + if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal) + { + temp = (char *)NULL; + goto bad_substitution; + } + + /* Turn off the W_ARRAYIND flag because there is no way for this function + to return the index we're supposed to be using. */ + if (tdesc && tdesc->flags) + tdesc->flags &= ~W_ARRAYIND; + } + else + { + local_pflags |= PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)); + tdesc = parameter_brace_expand_word (name, var_is_special, quoted, local_pflags, &ind); + } + + if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal) + { + tflag = 0; + tdesc = 0; + } + + if (tdesc) + { + temp = tdesc->word; + tflag = tdesc->flags; + dispose_word_desc (tdesc); + } + else + temp = (char *)0; + + if (temp == &expand_param_error || temp == &expand_param_fatal) + { + FREE (name); + FREE (value); + return (temp == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); + } + +#if defined (ARRAY_VARS) + if (valid_array_reference (name, 0)) + { + int qflags; + char *t; + + qflags = quoted; + /* If in a context where word splitting will not take place, treat as + if double-quoted. Has effects with $* and ${array[*]} */ + + if (pflags & PF_ASSIGNRHS) + qflags |= Q_DOUBLE_QUOTES; + /* We duplicate a little code here */ + t = mbschr (name, LBRACK); + if (t && ALL_ELEMENT_SUB (t[1]) && t[2] == RBRACK) + { + all_element_arrayref = 1; + if (expand_no_split_dollar_star && t[1] == '*') /* XXX */ + qflags |= Q_DOUBLE_QUOTES; + } + chk_atstar (name, qflags, pflags, quoted_dollar_atp, contains_dollar_at); + } +#endif + + var_is_set = temp != (char *)0; + var_is_null = check_nullness && (var_is_set == 0 || *temp == 0); + /* XXX - this may not need to be restricted to special variables */ + if (check_nullness) + var_is_null |= var_is_set && var_is_special && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && QUOTED_NULL (temp); +#if defined (ARRAY_VARS) + if (check_nullness) + var_is_null |= var_is_set && + (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && + QUOTED_NULL (temp) && + valid_array_reference (name, 0) && + chk_atstar (name, 0, 0, (int *)0, (int *)0); +#endif + + /* Get the rest of the stuff inside the braces. */ + if (c && c != RBRACE) + { + /* Extract the contents of the ${ ... } expansion + according to the Posix.2 rules. */ + value = extract_dollar_brace_string (string, &sindex, quoted, (c == '%' || c == '#' || c =='/' || c == '^' || c == ',' || c ==':') ? SX_POSIXEXP|SX_WORD : SX_WORD); + if (string[sindex] == RBRACE) + sindex++; + else + goto bad_substitution; /* substitution error */ + } + else + value = (char *)NULL; + + *indexp = sindex; + + /* All the cases where an expansion can possibly generate an unbound + variable error. */ + if (want_substring || want_patsub || want_casemod || c == '@' || c == '#' || c == '%' || c == RBRACE) + { + if (var_is_set == 0 && unbound_vars_is_error && ((name[0] != '@' && name[0] != '*') || name[1]) && all_element_arrayref == 0) + { + set_exit_status (EXECUTION_FAILURE); + err_unboundvar (name); + FREE (value); + FREE (temp); + free (name); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); + } + } + + /* If this is a substring spec, process it and add the result. */ + if (want_substring) + { + temp1 = parameter_brace_substring (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + FREE (value); + FREE (temp); + + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) + { + FREE (name); + return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); + } + + ret = alloc_word_desc (); + ret->word = temp1; + /* We test quoted_dollar_atp because we want variants with double-quoted + "$@" to take a different code path. In fact, we make sure at the end + of expand_word_internal that we're only looking at these flags if + quoted_dollar_at == 0. */ + if (temp1 && + (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) && + QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && + (pflags & PF_ASSIGNRHS)) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + FREE (name); + return ret; + } + else if (want_patsub) + { + temp1 = parameter_brace_patsub (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + FREE (value); + FREE (temp); + + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) + { + FREE (name); + return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); + } + + ret = alloc_word_desc (); + ret->word = temp1; + if (temp1 && + (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) && + QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + FREE (name); + return ret; + } +#if defined (CASEMOD_EXPANSIONS) + else if (want_casemod) + { + temp1 = parameter_brace_casemod (name, temp, ind, modspec, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + FREE (value); + FREE (temp); + + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) + { + FREE (name); + return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); + } + + ret = alloc_word_desc (); + ret->word = temp1; + if (temp1 && + (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) && + QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + FREE (name); + return ret; + } +#endif + + /* Do the right thing based on which character ended the variable name. */ + switch (c) + { + default: + case '\0': +bad_substitution: + set_exit_status (EXECUTION_FAILURE); + report_error (_("%s: bad substitution"), string ? string : "??"); + FREE (value); + FREE (temp); + free (name); + if (shell_compatibility_level <= 43) + return &expand_wdesc_error; + else + return ((posixly_correct && interactive_shell == 0) ? &expand_wdesc_fatal : &expand_wdesc_error); + + case RBRACE: + break; + + case '@': + temp1 = parameter_brace_transform (name, temp, ind, value, c, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + free (temp); + free (value); + + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) + { + free (name); + set_exit_status (EXECUTION_FAILURE); + report_error (_("%s: bad substitution"), string ? string : "??"); + return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); + } + + ret = alloc_word_desc (); + ret->word = temp1; + if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + free (name); + return ret; + + case '#': /* ${param#[#]pattern} */ + case '%': /* ${param%[%]pattern} */ + if (value == 0 || *value == '\0' || temp == 0 || *temp == '\0') + { + FREE (value); + break; + } + temp1 = parameter_brace_remove_pattern (name, temp, ind, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + free (temp); + free (value); + + ret = alloc_word_desc (); + ret->word = temp1; + if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + free (name); + return ret; + + case '-': + case '=': + case '?': + case '+': + if (var_is_set && var_is_null == 0) + { + /* If the operator is `+', we don't want the value of the named + variable for anything, just the value of the right hand side. */ + if (c == '+') + { + /* XXX -- if we're double-quoted and the named variable is "$@", + we want to turn off any special handling of "$@" -- + we're not using it, so whatever is on the rhs applies. */ + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp) + *quoted_dollar_atp = 0; + if (contains_dollar_at) + *contains_dollar_at = 0; + + FREE (temp); + if (value) + { + /* From Posix discussion on austin-group list. Issue 221 + requires that backslashes escaping `}' inside + double-quoted ${...} be removed. */ + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + quoted |= Q_DOLBRACE; + ret = parameter_brace_expand_rhs (name, value, c, + quoted, + pflags, + quoted_dollar_atp, + contains_dollar_at); + /* XXX - fix up later, esp. noting presence of + W_HASQUOTEDNULL in ret->flags */ + 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) + { + set_exit_status (EXECUTION_FAILURE); + report_error (_("$%s: cannot assign in this way"), name); + free (name); + free (value); + return &expand_wdesc_error; + } + else if (c == '?') + { + parameter_brace_expand_error (name, value, check_nullness); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); + } + else if (c != '+') + { + /* XXX -- if we're double-quoted and the named variable is "$@", + we want to turn off any special handling of "$@" -- + we're not using it, so whatever is on the rhs applies. */ + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp) + *quoted_dollar_atp = 0; + if (contains_dollar_at) + *contains_dollar_at = 0; + + /* From Posix discussion on austin-group list. Issue 221 requires + that backslashes escaping `}' inside double-quoted ${...} be + removed. */ + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + quoted |= Q_DOLBRACE; + ret = parameter_brace_expand_rhs (name, value, c, quoted, pflags, + quoted_dollar_atp, + contains_dollar_at); + /* XXX - fix up later, esp. noting presence of + W_HASQUOTEDNULL in tdesc->flags */ + } + free (value); + } + + break; + } + free (name); + + if (ret == 0) + { + ret = alloc_word_desc (); + ret->flags = tflag; + ret->word = temp; + } + return (ret); +} + +/* Expand a single ${xxx} expansion. The braces are optional. When + the braces are used, parameter_brace_expand() does the work, + possibly calling param_expand recursively. */ +static WORD_DESC * +param_expand (string, sindex, quoted, expanded_something, + contains_dollar_at, quoted_dollar_at_p, had_quoted_null_p, + pflags) + char *string; + int *sindex, quoted, *expanded_something, *contains_dollar_at; + int *quoted_dollar_at_p, *had_quoted_null_p, pflags; +{ + char *temp, *temp1, uerror[3], *savecmd; + int zindex, t_index, expok; + unsigned char c; + intmax_t number; + SHELL_VAR *var; + WORD_LIST *list, *l; + WORD_DESC *tdesc, *ret; + int tflag, nullarg; + int old_echo_input; + +/*itrace("param_expand: `%s' pflags = %d", string+*sindex, pflags);*/ + zindex = *sindex; + c = string[++zindex]; + + temp = (char *)NULL; + ret = tdesc = (WORD_DESC *)NULL; + tflag = 0; + + /* 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[TODIGIT (c)]; + /* This doesn't get called when (pflags&PF_IGNUNBOUND) != 0 */ + if (unbound_vars_is_error && temp1 == (char *)NULL) + { + uerror[0] = '$'; + uerror[1] = c; + uerror[2] = '\0'; + set_exit_status (EXECUTION_FAILURE); + err_unboundvar (uerror); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); + } + if (temp1) + temp = (*temp1 && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + ? quote_string (temp1) + : quote_escapes (temp1); + else + temp = (char *)NULL; + + break; + + /* $$ -- pid of the invoking shell. */ + case '$': + temp = itos (dollar_dollar_pid); + break; + + /* $# -- number of positional parameters. */ + case '#': + temp = itos (number_of_args ()); + break; + + /* $? -- return value of the last synchronous command. */ + case '?': + temp = itos (last_command_exit_value); + break; + + /* $- -- flags supplied to the shell on invocation or by `set'. */ + case '-': + temp = which_set_flags (); + break; + + /* $! -- Pid of the last asynchronous command. */ + case '!': + /* If no asynchronous pids have been created, expand to nothing. + If `set -u' has been executed, and no async processes have + been created, this is an expansion error. */ + if (last_asynchronous_pid == NO_PID) + { + if (expanded_something) + *expanded_something = 0; + temp = (char *)NULL; + if (unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0) + { + uerror[0] = '$'; + uerror[1] = c; + uerror[2] = '\0'; + set_exit_status (EXECUTION_FAILURE); + err_unboundvar (uerror); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); + } + } + else + temp = itos (last_asynchronous_pid); + break; + + /* The only difference between this and $@ is when the arg is quoted. */ + case '*': /* `$*' */ + list = list_rest_of_args (); + +#if 0 + /* According to austin-group posix proposal by Geoff Clare in + <20090505091501.GA10097@squonk.masqnet> of 5 May 2009: + + "The shell shall write a message to standard error and + immediately exit when it tries to expand an unset parameter + other than the '@' and '*' special parameters." + */ + + if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0) + { + uerror[0] = '$'; + uerror[1] = '*'; + uerror[2] = '\0'; + set_exit_status (EXECUTION_FAILURE); + err_unboundvar (uerror); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); + } +#endif + + /* 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)) && list == 0) + temp = (char *)NULL; + else if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES|Q_PATQUOTE)) + { + /* If we have "$*" we want to make a string of the positional + parameters, separated by the first character of $IFS, and + quote the whole string, including the separators. If IFS + is unset, the parameters are separated by ' '; if $IFS is + null, the parameters are concatenated. */ + temp = (quoted & (Q_DOUBLE_QUOTES|Q_PATQUOTE)) ? string_list_dollar_star (list, quoted, 0) : string_list (list); + if (temp) + { + temp1 = (quoted & Q_DOUBLE_QUOTES) ? quote_string (temp) : temp; + if (*temp == 0) + tflag |= W_HASQUOTEDNULL; + if (temp != temp1) + free (temp); + temp = temp1; + } + } + else + { + /* We check whether or not we're eventually going to split $* here, + for example when IFS is empty and we are processing the rhs of + an assignment statement. In that case, we don't separate the + arguments at all. Otherwise, if the $* is not quoted it is + identical to $@ */ + if (expand_no_split_dollar_star && quoted == 0 && ifs_is_set == 0 && (pflags & PF_ASSIGNRHS)) + { + /* Posix interp 888: RHS of assignment, IFS unset: no splitting, + separate with space */ + temp1 = string_list_dollar_star (list, quoted, pflags); + temp = temp1 ? quote_string (temp1) : temp1; + /* XXX - tentative - note that we saw a quoted null here */ + if (temp1 && *temp1 == 0 && QUOTED_NULL (temp)) + tflag |= W_SAWQUOTEDNULL; + FREE (temp1); + } + else if (expand_no_split_dollar_star && quoted == 0 && ifs_is_null && (pflags & PF_ASSIGNRHS)) + { + /* Posix interp 888: RHS of assignment, IFS set to '' */ + temp1 = string_list_dollar_star (list, quoted, pflags); + temp = temp1 ? quote_escapes (temp1) : temp1; + FREE (temp1); + } + else if (expand_no_split_dollar_star && quoted == 0 && ifs_is_set && ifs_is_null == 0 && (pflags & PF_ASSIGNRHS)) + { + /* Posix interp 888: RHS of assignment, IFS set to non-null value */ + temp1 = string_list_dollar_star (list, quoted, pflags); + temp = temp1 ? quote_string (temp1) : temp1; + + /* XXX - tentative - note that we saw a quoted null here */ + if (temp1 && *temp1 == 0 && QUOTED_NULL (temp)) + tflag |= W_SAWQUOTEDNULL; + FREE (temp1); + } + /* XXX - should we check ifs_is_set here as well? */ +# if defined (HANDLE_MULTIBYTE) + else if (expand_no_split_dollar_star && ifs_firstc[0] == 0) +# else + else if (expand_no_split_dollar_star && ifs_firstc == 0) +# endif + /* Posix interp 888: not RHS, no splitting, IFS set to '' */ + temp = string_list_dollar_star (list, quoted, 0); + else + { + temp = string_list_dollar_at (list, quoted, 0); + /* Set W_SPLITSPACE to make sure the individual positional + parameters are split into separate arguments */ +#if 0 + if (quoted == 0 && (ifs_is_set == 0 || ifs_is_null)) +#else /* change with bash-5.0 */ + if (quoted == 0 && ifs_is_null) +#endif + tflag |= W_SPLITSPACE; + /* If we're not quoted but we still don't want word splitting, make + we quote the IFS characters to protect them from splitting (e.g., + when $@ is in the string as well). */ + else if (temp && quoted == 0 && ifs_is_set && (pflags & PF_ASSIGNRHS)) + { + temp1 = quote_string (temp); + free (temp); + temp = temp1; + } + } + + if (expand_no_split_dollar_star == 0 && contains_dollar_at) + *contains_dollar_at = 1; + } + + dispose_words (list); + break; + + /* 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 (); + +#if 0 + /* According to austin-group posix proposal by Geoff Clare in + <20090505091501.GA10097@squonk.masqnet> of 5 May 2009: + + "The shell shall write a message to standard error and + immediately exit when it tries to expand an unset parameter + other than the '@' and '*' special parameters." + */ + + if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0) + { + uerror[0] = '$'; + uerror[1] = '@'; + uerror[2] = '\0'; + set_exit_status (EXECUTION_FAILURE); + err_unboundvar (uerror); + return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); + } +#endif + + for (nullarg = 0, l = list; l; l = l->next) + { + if (l->word && (l->word->word == 0 || l->word->word[0] == 0)) + nullarg = 1; + } + + /* 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. */ + /* XXX - should this test include Q_PATQUOTE? */ + if (quoted_dollar_at_p && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + *quoted_dollar_at_p = 1; + if (contains_dollar_at) + *contains_dollar_at = 1; + + /* We want to separate the positional parameters with the first + character of $IFS in case $IFS is something other than a space. + We also want to make sure that splitting is done no matter what -- + according to POSIX.2, this expands to a list of the positional + parameters no matter what IFS is set to. */ + /* XXX - what to do when in a context where word splitting is not + performed? Even when IFS is not the default, posix seems to imply + that we have to expand $@ to all the positional parameters and + separate them with spaces, which are preserved because word splitting + doesn't take place. See below for how we use PF_NOSPLIT2 here. */ + + /* These are the cases where word splitting will not be performed. */ + if (pflags & PF_ASSIGNRHS) + { + temp = string_list_dollar_at (list, (quoted|Q_DOUBLE_QUOTES), pflags); + if (nullarg) + tflag |= W_HASQUOTEDNULL; /* we know quoting produces quoted nulls */ + } + + /* This needs to match what expand_word_internal does with non-quoted $@ + does with separating with spaces. Passing Q_DOUBLE_QUOTES means that + the characters in LIST will be quoted, and PF_ASSIGNRHS ensures that + they will separated by spaces. After doing this, we need the special + handling for PF_NOSPLIT2 in expand_word_internal to remove the CTLESC + quotes. */ + else if (pflags & PF_NOSPLIT2) + { +#if defined (HANDLE_MULTIBYTE) + if (quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc[0] != ' ') +#else + if (quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc != ' ') +#endif + /* Posix interp 888 */ + temp = string_list_dollar_at (list, Q_DOUBLE_QUOTES, pflags); + else + temp = string_list_dollar_at (list, quoted, pflags); + } + else + temp = string_list_dollar_at (list, quoted, pflags); + + tflag |= W_DOLLARAT; + dispose_words (list); + break; + + case LBRACE: + tdesc = parameter_brace_expand (string, &zindex, quoted, pflags, + quoted_dollar_at_p, + contains_dollar_at); + + if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal) + return (tdesc); + temp = tdesc ? tdesc->word : (char *)0; + + /* XXX */ + /* Quoted nulls should be removed if there is anything else + in the string. */ + /* Note that we saw the quoted null so we can add one back at + the end of this function if there are no other characters + in the string, discard TEMP, and go on. The exception to + this is when we have "${@}" and $1 is '', since $@ needs + special handling. */ + if (tdesc && tdesc->word && (tdesc->flags & W_HASQUOTEDNULL) && QUOTED_NULL (temp)) + { + if (had_quoted_null_p) + *had_quoted_null_p = 1; + if (*quoted_dollar_at_p == 0) + { + free (temp); + tdesc->word = temp = (char *)NULL; + } + + } + + ret = tdesc; + goto return0; + + /* Do command or arithmetic substitution. */ + case LPAREN: + /* We have to extract the contents of this paren substitution. */ + t_index = zindex + 1; + /* XXX - might want to check for string[t_index+2] == LPAREN and parse + as arithmetic substitution immediately. */ + temp = extract_command_subst (string, &t_index, (pflags&PF_COMPLETE) ? SX_COMPLETE : 0); + zindex = t_index; + + /* For Posix.2-style `$(( ))' arithmetic substitution, + extract the expression and pass it to the evaluator. */ + if (temp && *temp == LPAREN) + { + char *temp2; + temp1 = temp + 1; + temp2 = savestring (temp1); + t_index = strlen (temp2) - 1; + + if (temp2[t_index] != RPAREN) + { + free (temp2); + goto comsub; + } + + /* Cut off ending `)' */ + temp2[t_index] = '\0'; + + if (chk_arithsub (temp2, t_index) == 0) + { + free (temp2); +#if 0 + internal_warning (_("future versions of the shell will force evaluation as an arithmetic substitution")); +#endif + goto comsub; + } + + /* Expand variables found inside the expression. */ + temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES|Q_ARITH); + free (temp2); + +arithsub: + /* No error messages. */ + savecmd = this_command_name; + this_command_name = (char *)NULL; + number = evalexp (temp1, EXP_EXPANDED, &expok); + this_command_name = savecmd; + free (temp); + free (temp1); + if (expok == 0) + { + if (interactive_shell == 0 && posixly_correct) + { + set_exit_status (EXECUTION_FAILURE); + return (&expand_wdesc_fatal); + } + else + return (&expand_wdesc_error); + } + temp = itos (number); + break; + } + +comsub: + old_echo_input = echo_input_at_read; + /* avoid echoing every substitution again */ + echo_input_at_read = 0; + if (pflags & PF_NOCOMSUB) + /* we need zindex+1 because string[zindex] == RPAREN */ + temp1 = substring (string, *sindex, zindex+1); + else + { + tdesc = command_substitute (temp, quoted, pflags&PF_ASSIGNRHS); + temp1 = tdesc ? tdesc->word : (char *)NULL; + if (tdesc) + dispose_word_desc (tdesc); + } + FREE (temp); + temp = temp1; + echo_input_at_read = old_echo_input; + break; + + /* Do POSIX.2d9-style arithmetic substitution. This will probably go + away in a future bash release. */ + case '[': /*]*/ + /* Extract the contents of this arithmetic substitution. */ + t_index = zindex + 1; + temp = extract_arithmetic_subst (string, &t_index); + zindex = t_index; + if (temp == 0) + { + temp = savestring (string); + if (expanded_something) + *expanded_something = 0; + goto return0; + } + + /* Do initial variable expansion. */ + temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES|Q_ARITH); + + goto arithsub; + + default: + /* Find the variable in VARIABLE_LIST. */ + temp = (char *)NULL; + + for (t_index = zindex; (c = string[zindex]) && legal_variable_char (c); zindex++) + ; + temp1 = (zindex > t_index) ? substring (string, t_index, zindex) : (char *)NULL; + + /* If this isn't a variable name, then just output the `$'. */ + if (temp1 == 0 || *temp1 == '\0') + { + FREE (temp1); + temp = (char *)xmalloc (2); + temp[0] = '$'; + temp[1] = '\0'; + if (expanded_something) + *expanded_something = 0; + goto return0; + } + + /* If the variable exists, return its value cell. */ + var = find_variable (temp1); + + if (var && invisible_p (var) == 0 && var_isset (var)) + { +#if defined (ARRAY_VARS) + if (assoc_p (var) || array_p (var)) + { + temp = array_p (var) ? array_reference (array_cell (var), 0) + : assoc_reference (assoc_cell (var), "0"); + if (temp) + temp = (*temp && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + ? quote_string (temp) + : quote_escapes (temp); + else if (unbound_vars_is_error) + goto unbound_variable; + } + else +#endif + { + temp = value_cell (var); + + temp = (*temp && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + ? quote_string (temp) + : ((pflags & PF_ASSIGNRHS) ? quote_rhs (temp) + : quote_escapes (temp)); + } + + free (temp1); + + goto return0; + } + else if (var && (invisible_p (var) || var_isset (var) == 0)) + temp = (char *)NULL; + else if ((var = find_variable_last_nameref (temp1, 0)) && var_isset (var) && invisible_p (var) == 0) + { + temp = nameref_cell (var); +#if defined (ARRAY_VARS) + if (temp && *temp && valid_array_reference (temp, 0)) + { + tdesc = parameter_brace_expand_word (temp, SPECIAL_VAR (temp, 0), quoted, pflags, (arrayind_t *)NULL); + if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal) + return (tdesc); + ret = tdesc; + goto return0; + } + else +#endif + /* y=2 ; typeset -n x=y; echo $x is not the same as echo $2 in ksh */ + if (temp && *temp && legal_identifier (temp) == 0) + { + set_exit_status (EXECUTION_FAILURE); + report_error (_("%s: invalid variable name for name reference"), temp); + return (&expand_wdesc_error); /* XXX */ + } + else + temp = (char *)NULL; + } + + temp = (char *)NULL; + +unbound_variable: + if (unbound_vars_is_error) + { + set_exit_status (EXECUTION_FAILURE); + err_unboundvar (temp1); + } + else + { + free (temp1); + goto return0; + } + + free (temp1); + set_exit_status (EXECUTION_FAILURE); + return ((unbound_vars_is_error && interactive_shell == 0) + ? &expand_wdesc_fatal + : &expand_wdesc_error); + } + + if (string[zindex]) + zindex++; + +return0: + *sindex = zindex; + + if (ret == 0) + { + ret = alloc_word_desc (); + ret->flags = tflag; /* XXX */ + ret->word = temp; + } + return ret; +} + +void +invalidate_cached_quoted_dollar_at () +{ + dispose_words (cached_quoted_dollar_at); + cached_quoted_dollar_at = 0; +} + +/* Make a word list which is the result of parameter and variable + expansion, command substitution, arithmetic substitution, and + quote removal 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. + + ISEXP is used to tell expand_word_internal that the word should be + treated as the result of an expansion. This has implications for + how IFS characters in the word are treated. + + 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, isexp, contains_dollar_at, expanded_something) + WORD_DESC *word; + int quoted, isexp; + int *contains_dollar_at; + int *expanded_something; +{ + WORD_LIST *list; + WORD_DESC *tword; + + /* The intermediate string that we build while expanding. */ + char *istring; + + /* The current size of the above object. */ + size_t istring_size; + + /* Index into ISTRING. */ + int istring_index; + + /* Temporary string storage. */ + char *temp, *temp1; + + /* The text of WORD. */ + register char *string; + + /* The size of STRING. */ + size_t string_size; + + /* 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; + + /* State flags */ + int had_quoted_null; + int has_quoted_ifs; /* did we add a quoted $IFS character here? */ + int has_dollar_at, temp_has_dollar_at; + int split_on_spaces; + int local_expanded; + int tflag; + int pflags; /* flags passed to param_expand */ + int mb_cur_max; + + int assignoff; /* If assignment, offset of `=' */ + + register unsigned char c; /* Current character. */ + int t_index; /* For calls to string_extract_xxx. */ + + char twochars[2]; + + DECLARE_MBSTATE; + + /* OK, let's see if we can optimize a common idiom: "$@" */ + if (STREQ (word->word, "\"$@\"") && + (word->flags == (W_HASDOLLAR|W_QUOTED)) && + dollar_vars[1]) /* XXX - check IFS here as well? */ + { + if (contains_dollar_at) + *contains_dollar_at = 1; + if (expanded_something) + *expanded_something = 1; + if (cached_quoted_dollar_at) + return (copy_word_list (cached_quoted_dollar_at)); + list = list_rest_of_args (); + list = quote_list (list); + cached_quoted_dollar_at = copy_word_list (list); + return (list); + } + + istring = (char *)xmalloc (istring_size = DEFAULT_INITIAL_ARRAY_SIZE); + istring[istring_index = 0] = '\0'; + quoted_dollar_at = had_quoted_null = has_dollar_at = 0; + has_quoted_ifs = 0; + split_on_spaces = 0; + quoted_state = UNQUOTED; + + string = word->word; + if (string == 0) + goto finished_with_string; + mb_cur_max = MB_CUR_MAX; + + /* Don't need the string length for the SADD... and COPY_ macros unless + multibyte characters are possible, but do need it for bounds checking. */ + string_size = (mb_cur_max > 1) ? strlen (string) : 1; + + if (contains_dollar_at) + *contains_dollar_at = 0; + + assignoff = -1; + + /* Begin the expansion. */ + + for (sindex = 0; ;) + { + c = string[sindex]; + + /* Case on top-level character. */ + switch (c) + { + case '\0': + goto finished_with_string; + + case CTLESC: + sindex++; +#if HANDLE_MULTIBYTE + if (mb_cur_max > 1 && string[sindex]) + { + SADD_MBQCHAR_BODY(temp, string, sindex, string_size); + } + else +#endif + { + temp = (char *)xmalloc (3); + temp[0] = CTLESC; + temp[1] = c = string[sindex]; + temp[2] = '\0'; + } + +dollar_add_string: + if (string[sindex]) + sindex++; + +add_string: + if (temp) + { + istring = sub_append_string (temp, istring, &istring_index, &istring_size); + temp = (char *)0; + } + + break; + +#if defined (PROCESS_SUBSTITUTION) + /* Process substitution. */ + case '<': + case '>': + { + /* XXX - technically this should only be expanded at the start + of a word */ + if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (word->flags & (W_DQUOTE|W_NOPROCSUB))) + { + sindex--; /* add_character: label increments sindex */ + goto add_character; + } + else + t_index = sindex + 1; /* skip past both '<' and LPAREN */ + + temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/ + 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 */ + + case '=': + /* Posix.2 section 3.6.1 says that tildes following `=' in words + which are not assignment statements are not expanded. If the + shell isn't in posix mode, though, we perform tilde expansion + on `likely candidate' unquoted assignment statements (flags + include W_ASSIGNMENT but not W_QUOTED). A likely candidate + contains an unquoted :~ or =~. Something to think about: we + now have a flag that says to perform tilde expansion on arguments + to `assignment builtins' like declare and export that look like + assignment statements. We now do tilde expansion on such words + even in POSIX mode. */ + if (word->flags & (W_ASSIGNRHS|W_NOTILDE)) + { + if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c)) + goto add_ifs_character; + else + goto add_character; + } + /* If we're not in posix mode or forcing assignment-statement tilde + expansion, note where the first `=' appears in the word and prepare + to do tilde expansion following the first `='. We have to keep + track of the first `=' (using assignoff) to avoid being confused + by an `=' in the rhs of the assignment statement. */ + if ((word->flags & W_ASSIGNMENT) && + (posixly_correct == 0 || (word->flags & W_TILDEEXP)) && + assignoff == -1 && sindex > 0) + assignoff = sindex; + if (sindex == assignoff && string[sindex+1] == '~') /* XXX */ + word->flags |= W_ITILDE; + + if (word->flags & W_ASSIGNARG) + word->flags |= W_ASSIGNRHS; /* affects $@ */ + + if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c)) + { + has_quoted_ifs++; + goto add_ifs_character; + } + else + goto add_character; + + case ':': + if (word->flags & (W_NOTILDE|W_NOASSNTILDE)) + { + if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c)) + goto add_ifs_character; + else + goto add_character; + } + + if ((word->flags & (W_ASSIGNMENT|W_ASSIGNRHS)) && + (posixly_correct == 0 || (word->flags & W_TILDEEXP)) && + string[sindex+1] == '~') + word->flags |= W_ITILDE; + + if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c)) + goto add_ifs_character; + else + goto add_character; + + case '~': + /* If the word isn't supposed to be tilde expanded, or we're not + at the start of a word or after an unquoted : or = in an + assignment statement, we don't do tilde expansion. We don't + do tilde expansion if quoted or in an arithmetic context. */ + + if ((word->flags & (W_NOTILDE|W_DQUOTE)) || + (sindex > 0 && ((word->flags & W_ITILDE) == 0)) || + (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + { + word->flags &= ~W_ITILDE; + if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) + goto add_ifs_character; + else + goto add_character; + } + + if (word->flags & W_ASSIGNRHS) + tflag = 2; + else if (word->flags & (W_ASSIGNMENT|W_TILDEEXP)) + tflag = 1; + else + tflag = 0; + + temp = bash_tilde_find_word (string + sindex, tflag, &t_index); + + word->flags &= ~W_ITILDE; + + if (temp && *temp && t_index > 0) + { + temp1 = bash_tilde_expand (temp, tflag); + if (temp1 && *temp1 == '~' && STREQ (temp, temp1)) + { + FREE (temp); + FREE (temp1); + goto add_character; /* tilde expansion failed */ + } + free (temp); + temp = temp1; + sindex += t_index; + goto add_quoted_string; /* XXX was add_string */ + } + else + { + FREE (temp); + goto add_character; + } + + case '$': + if (expanded_something) + *expanded_something = 1; + local_expanded = 1; + + temp_has_dollar_at = 0; + pflags = (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0; + if (word->flags & W_NOSPLIT2) + pflags |= PF_NOSPLIT2; + if (word->flags & W_ASSIGNRHS) + pflags |= PF_ASSIGNRHS; + if (word->flags & W_COMPLETE) + pflags |= PF_COMPLETE; + + tword = param_expand (string, &sindex, quoted, expanded_something, + &temp_has_dollar_at, "ed_dollar_at, + &had_quoted_null, pflags); + has_dollar_at += temp_has_dollar_at; + split_on_spaces += (tword->flags & W_SPLITSPACE); + + if (tword == &expand_wdesc_error || tword == &expand_wdesc_fatal) + { + free (string); + free (istring); + return ((tword == &expand_wdesc_error) ? &expand_word_error + : &expand_word_fatal); + } + if (contains_dollar_at && has_dollar_at) + *contains_dollar_at = 1; + + if (tword && (tword->flags & W_HASQUOTEDNULL)) + had_quoted_null = 1; /* note for later */ + if (tword && (tword->flags & W_SAWQUOTEDNULL)) + had_quoted_null = 1; /* XXX */ + + temp = tword ? tword->word : (char *)NULL; + dispose_word_desc (tword); + + /* Kill quoted nulls; we will add them back at the end of + expand_word_internal if nothing else in the string */ + if (had_quoted_null && temp && QUOTED_NULL (temp)) + { + FREE (temp); + temp = (char *)NULL; + } + + goto add_string; + break; + + case '`': /* Backquoted command substitution. */ + { + t_index = sindex++; + + temp = string_extract (string, &sindex, "`", SX_REQMATCH); + /* The test of sindex against t_index is to allow bare instances of + ` to pass through, for backwards compatibility. */ + if (temp == &extract_string_error || temp == &extract_string_fatal) + { + if (sindex - 1 == t_index) + { + sindex = t_index; + goto add_character; + } + set_exit_status (EXECUTION_FAILURE); + report_error (_("bad substitution: no closing \"`\" in %s") , string+t_index); + free (string); + free (istring); + return ((temp == &extract_string_error) ? &expand_word_error + : &expand_word_fatal); + } + + if (expanded_something) + *expanded_something = 1; + local_expanded = 1; + + if (word->flags & W_NOCOMSUB) + /* sindex + 1 because string[sindex] == '`' */ + temp1 = substring (string, t_index, sindex + 1); + else + { + de_backslash (temp); + tword = command_substitute (temp, quoted, 0); + temp1 = tword ? tword->word : (char *)NULL; + if (tword) + dispose_word_desc (tword); + } + FREE (temp); + temp = temp1; + goto dollar_add_string; + } + + case '\\': + if (string[sindex + 1] == '\n') + { + sindex += 2; + continue; + } + + c = string[++sindex]; + + /* "However, the double-quote character ( '"' ) shall not be treated + specially within a here-document, except when the double-quote + appears within "$()", "``", or "${}"." */ + if ((quoted & Q_HERE_DOCUMENT) && (quoted & Q_DOLBRACE) && c == '"') + tflag = CBSDQUOTE; /* special case */ + else if (quoted & Q_HERE_DOCUMENT) + tflag = CBSHDOC; + else if (quoted & Q_DOUBLE_QUOTES) + tflag = CBSDQUOTE; + else + tflag = 0; + + /* From Posix discussion on austin-group list: Backslash escaping + a } in ${...} is removed. Issue 0000221 */ + if ((quoted & Q_DOLBRACE) && c == RBRACE) + { + SCOPY_CHAR_I (twochars, CTLESC, c, string, sindex, string_size); + } + /* This is the fix for " $@\ " */ + else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && ((sh_syntaxtab[c] & tflag) == 0) && isexp == 0 && isifs (c)) + { + RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, + DEFAULT_ARRAY_SIZE); + istring[istring_index++] = CTLESC; + istring[istring_index++] = '\\'; + istring[istring_index] = '\0'; + + SCOPY_CHAR_I (twochars, CTLESC, c, string, sindex, string_size); + } + else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && c == 0) + { + RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, + DEFAULT_ARRAY_SIZE); + istring[istring_index++] = CTLESC; + istring[istring_index++] = '\\'; + istring[istring_index] = '\0'; + break; + } + else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && ((sh_syntaxtab[c] & tflag) == 0)) + { + SCOPY_CHAR_I (twochars, '\\', c, string, sindex, string_size); + } + else if (c == 0) + { + c = CTLNUL; + sindex--; /* add_character: label increments sindex */ + goto add_character; + } + else + { + SCOPY_CHAR_I (twochars, CTLESC, c, string, sindex, string_size); + } + + sindex++; +add_twochars: + /* BEFORE jumping here, we need to increment sindex if appropriate */ + RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, + DEFAULT_ARRAY_SIZE); + istring[istring_index++] = twochars[0]; + istring[istring_index++] = twochars[1]; + istring[istring_index] = '\0'; + + break; + + case '"': + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && ((quoted & Q_ARITH) == 0)) + goto add_character; + + t_index = ++sindex; + temp = string_extract_double_quoted (string, &sindex, (word->flags & W_COMPLETE) ? SX_COMPLETE : 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) + { + tword = alloc_word_desc (); + tword->word = temp; + + if (word->flags & W_ASSIGNARG) + tword->flags |= word->flags & (W_ASSIGNARG|W_ASSIGNRHS); /* affects $@ */ + if (word->flags & W_COMPLETE) + tword->flags |= W_COMPLETE; /* for command substitutions */ + if (word->flags & W_NOCOMSUB) + tword->flags |= W_NOCOMSUB; + if (word->flags & W_NOPROCSUB) + tword->flags |= W_NOPROCSUB; + + if (word->flags & W_ASSIGNRHS) + tword->flags |= W_ASSIGNRHS; + + temp = (char *)NULL; + + temp_has_dollar_at = 0; /* does this quoted (sub)string include $@? */ + /* Need to get W_HASQUOTEDNULL flag through this function. */ + list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &temp_has_dollar_at, (int *)NULL); + has_dollar_at += temp_has_dollar_at; + + 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. Posix interp 888 says that other parts of the + word that expand to quoted nulls result in quoted nulls, so + we can't just throw the entire word away if we have "$@" + anywhere in it. We use had_quoted_null to keep track */ + if (list == 0 && temp_has_dollar_at) /* XXX - was has_dollar_at */ + { + quoted_dollar_at++; + break; + } + + /* If this list comes back with a quoted null from expansion, + we have either "$x" or "$@" with $1 == ''. In either case, + we need to make sure we add a quoted null argument and + disable the special handling that "$@" gets. */ + if (list && list->word && list->next == 0 && (list->word->flags & W_HASQUOTEDNULL)) + { + if (had_quoted_null && temp_has_dollar_at) + quoted_dollar_at++; + had_quoted_null = 1; /* XXX */ + } + + /* 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 + multiple words. */ + if (list) + dequote_list (list); + + if (temp_has_dollar_at) /* XXX - was has_dollar_at */ + { + quoted_dollar_at++; + if (contains_dollar_at) + *contains_dollar_at = 1; + if (expanded_something) + *expanded_something = 1; + local_expanded = 1; + } + } + else + { + /* What we have is "". This is a minor optimization. */ + FREE (temp); + list = (WORD_LIST *)NULL; + had_quoted_null = 1; /* note for later */ + } + + /* 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) + { + /* Testing quoted_dollar_at makes sure that "$@" is + split correctly when $IFS does not contain a space. */ + temp = quoted_dollar_at + ? string_list_dollar_at (list, Q_DOUBLE_QUOTES, 0) + : string_list (quote_list (list)); + dispose_words (list); + goto add_string; + } + else + { + temp = savestring (list->word->word); + tflag = list->word->flags; + dispose_words (list); + + /* If the string is not a quoted null string, we want + to remove any embedded unquoted CTLNUL characters. + We do not want to turn quoted null strings back into + the empty string, though. We do this because we + want to remove any quoted nulls from expansions that + contain other characters. For example, if we have + x"$*"y or "x$*y" and there are no positional parameters, + the $* should expand into nothing. */ + /* We use the W_HASQUOTEDNULL flag to differentiate the + cases: a quoted null character as above and when + CTLNUL is contained in the (non-null) expansion + of some variable. We use the had_quoted_null flag to + pass the value through this function to its caller. */ + if ((tflag & W_HASQUOTEDNULL) && QUOTED_NULL (temp) == 0) + remove_quoted_nulls (temp); /* XXX */ + } + } + else + temp = (char *)NULL; + + if (temp == 0 && quoted_state == PARTIALLY_QUOTED) + had_quoted_null = 1; /* note for later */ + + /* We do not want to add quoted nulls to strings that are only + partially quoted; we can throw them away. The exception to + this is when we are going to be performing word splitting, + since we have to preserve a null argument if the next character + will cause word splitting. */ + if (temp == 0 && quoted_state == PARTIALLY_QUOTED && quoted == 0 && (word->flags & (W_NOSPLIT|W_EXPANDRHS|W_ASSIGNRHS)) == W_EXPANDRHS) + { + c = CTLNUL; + sindex--; + had_quoted_null = 1; + goto add_character; + } + if (temp == 0 && quoted_state == PARTIALLY_QUOTED && (word->flags & (W_NOSPLIT|W_NOSPLIT2))) + continue; + + add_quoted_string: + + if (temp) + { + temp1 = temp; + temp = quote_string (temp); + free (temp1); + goto add_string; + } + else + { + /* Add NULL arg. */ + c = CTLNUL; + sindex--; /* add_character: label increments sindex */ + had_quoted_null = 1; /* note for later */ + goto add_character; + } + + /* break; */ + + case '\'': + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + 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; + } + else + remove_quoted_escapes (temp); /* ??? */ + + if (temp == 0 && quoted_state == PARTIALLY_QUOTED) + had_quoted_null = 1; /* note for later */ + + /* We do not want to add quoted nulls to strings that are only + partially quoted; such nulls are discarded. See above for the + exception, which is when the string is going to be split. + Posix interp 888/1129 */ + if (temp == 0 && quoted_state == PARTIALLY_QUOTED && quoted == 0 && (word->flags & (W_NOSPLIT|W_EXPANDRHS|W_ASSIGNRHS)) == W_EXPANDRHS) + { + c = CTLNUL; + sindex--; + goto add_character; + } + + if (temp == 0 && (quoted_state == PARTIALLY_QUOTED) && (word->flags & (W_NOSPLIT|W_NOSPLIT2))) + continue; + + /* If we have a quoted null expansion, add a quoted NULL to istring. */ + if (temp == 0) + { + c = CTLNUL; + sindex--; /* add_character: label increments sindex */ + goto add_character; + } + else + goto add_quoted_string; + + /* break; */ + + case ' ': + /* If we are in a context where the word is not going to be split, but + we need to account for $@ and $* producing one word for each + positional parameter, add quoted spaces so the spaces in the + expansion of "$@", if any, behave correctly. We still may need to + split if we are expanding the rhs of a word expansion. */ + if (ifs_is_null || split_on_spaces || ((word->flags & (W_NOSPLIT|W_NOSPLIT2|W_ASSIGNRHS)) && (word->flags & W_EXPANDRHS) == 0)) + { + if (string[sindex]) + sindex++; + twochars[0] = CTLESC; + twochars[1] = c; + goto add_twochars; + } + /* FALLTHROUGH */ + + default: + /* This is the fix for " $@ " */ +add_ifs_character: + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (isexp == 0 && isifs (c) && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0)) + { + if ((quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0) + has_quoted_ifs++; +add_quoted_character: + if (string[sindex]) /* from old goto dollar_add_string */ + sindex++; + if (c == 0) + { + c = CTLNUL; + goto add_character; + } + else + { +#if HANDLE_MULTIBYTE + /* XXX - should make sure that c is actually multibyte, + otherwise we can use the twochars branch */ + if (mb_cur_max > 1) + sindex--; + + if (mb_cur_max > 1) + { + SADD_MBQCHAR_BODY(temp, string, sindex, string_size); + } + else +#endif + { + twochars[0] = CTLESC; + twochars[1] = c; + goto add_twochars; + } + } + } + + SADD_MBCHAR (temp, string, sindex, string_size); + +add_character: + RESIZE_MALLOCED_BUFFER (istring, istring_index, 1, istring_size, + DEFAULT_ARRAY_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. We also look to see whether we + saw a quoted null from a ${} expansion and add one back if we + need to. */ + + /* 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_dollar_at == 0 && (had_quoted_null || quoted_state == PARTIALLY_QUOTED)) + { + istring[0] = CTLNUL; + istring[1] = '\0'; + tword = alloc_word_desc (); + tword->word = istring; + istring = 0; /* avoid later free() */ + tword->flags |= W_HASQUOTEDNULL; /* XXX */ + list = make_word_list (tword, (WORD_LIST *)NULL); + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + 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. */ + /* XXX - exception appears to be that quoted null strings result in + null arguments */ + else if (quoted_state == UNQUOTED || quoted_dollar_at) + list = (WORD_LIST *)NULL; + else + list = (WORD_LIST *)NULL; + } + else if (word->flags & W_NOSPLIT) + { + tword = alloc_word_desc (); + tword->word = istring; + if (had_quoted_null && QUOTED_NULL (istring)) + tword->flags |= W_HASQUOTEDNULL; + istring = 0; /* avoid later free() */ + if (word->flags & W_ASSIGNMENT) + tword->flags |= W_ASSIGNMENT; /* XXX */ + if (word->flags & W_COMPASSIGN) + tword->flags |= W_COMPASSIGN; /* XXX */ + if (word->flags & W_NOGLOB) + tword->flags |= W_NOGLOB; /* XXX */ + if (word->flags & W_NOBRACE) + tword->flags |= W_NOBRACE; /* XXX */ + if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + tword->flags |= W_QUOTED; + list = make_word_list (tword, (WORD_LIST *)NULL); + } + else if (word->flags & W_ASSIGNRHS) + { + list = list_string (istring, "", quoted); + tword = list->word; + if (had_quoted_null && QUOTED_NULL (istring)) + tword->flags |= W_HASQUOTEDNULL; + free (list); + free (istring); + istring = 0; /* avoid later free() */ + goto set_word_flags; + } + else + { + char *ifs_chars; + + ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL; + + /* If we have $@, we need to split the results no matter what. If + IFS is unset or NULL, string_list_dollar_at has separated the + positional parameters with a space, so we split on space (we have + set ifs_chars to " \t\n" above if ifs is unset). If IFS is set, + string_list_dollar_at has separated the positional parameters + with the first character of $IFS, so we split on $IFS. If + SPLIT_ON_SPACES is set, we expanded $* (unquoted) with IFS either + unset or null, and we want to make sure that we split on spaces + regardless of what else has happened to IFS since the expansion, + or we expanded "$@" with IFS null and we need to split the positional + parameters into separate words. */ + if (split_on_spaces) + { + /* If IFS is not set, and the word is not quoted, we want to split + the individual words on $' \t\n'. We rely on previous steps to + quote the portions of the word that should not be split */ + if (ifs_is_set == 0) + list = list_string (istring, " \t\n", 1); /* XXX quoted == 1? */ + else + list = list_string (istring, " ", 1); /* XXX quoted == 1? */ + } + + /* If we have $@ (has_dollar_at != 0) and we are in a context where we + don't want to split the result (W_NOSPLIT2), and we are not quoted, + we have already separated the arguments with the first character of + $IFS. In this case, we want to return a list with a single word + with the separator possibly replaced with a space (it's what other + shells seem to do). + quoted_dollar_at is internal to this function and is set if we are + passed an argument that is unquoted (quoted == 0) but we encounter a + double-quoted $@ while expanding it. */ + else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2)) + { + tword = alloc_word_desc (); + /* Only split and rejoin if we have to */ + if (*ifs_chars && *ifs_chars != ' ') + { + /* list_string dequotes CTLESCs in the string it's passed, so we + need it to get the space separation right if space isn't the + first character in IFS (but is present) and to remove the + quoting we added back in param_expand(). */ + list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); + /* This isn't exactly right in the case where we're expanding + the RHS of an expansion like ${var-$@} where IFS=: (for + example). The W_NOSPLIT2 means we do the separation with :; + the list_string removes the quotes and breaks the string into + a list, and the string_list rejoins it on spaces. When we + return, we expect to be able to split the results, but the + space separation means the right split doesn't happen. */ + tword->word = string_list (list); + } + else + tword->word = istring; + if (had_quoted_null && QUOTED_NULL (istring)) + tword->flags |= W_HASQUOTEDNULL; /* XXX */ + if (tword->word != istring) + free (istring); + istring = 0; /* avoid later free() */ + goto set_word_flags; + } + else if (has_dollar_at && ifs_chars) + list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); + else + { + tword = alloc_word_desc (); + if (expanded_something && *expanded_something == 0 && has_quoted_ifs) + tword->word = remove_quoted_ifs (istring); + else + tword->word = istring; + if (had_quoted_null && QUOTED_NULL (istring)) /* should check for more than one */ + tword->flags |= W_HASQUOTEDNULL; /* XXX */ + else if (had_quoted_null) + tword->flags |= W_SAWQUOTEDNULL; /* XXX */ + if (tword->word != istring) + free (istring); + istring = 0; /* avoid later free() */ +set_word_flags: + 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; + if (word->flags & W_COMPASSIGN) + tword->flags |= W_COMPASSIGN; + if (word->flags & W_NOGLOB) + tword->flags |= W_NOGLOB; + if (word->flags & W_NOBRACE) + tword->flags |= W_NOBRACE; + list = make_word_list (tword, (WORD_LIST *)NULL); + } + } + + 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 or a here document. */ +char * +string_quote_removal (string, quoted) + char *string; + int quoted; +{ + size_t slen; + char *r, *result_string, *temp, *send; + int sindex, tindex, dquote; + unsigned char c; + DECLARE_MBSTATE; + + /* The result can be no longer than the original string. */ + slen = strlen (string); + send = string + slen; + + r = result_string = (char *)xmalloc (slen + 1); + + for (dquote = sindex = 0; c = string[sindex];) + { + switch (c) + { + case '\\': + c = string[++sindex]; + if (c == 0) + { + *r++ = '\\'; + break; + } + if (((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || dquote) && (sh_syntaxtab[c] & CBSDQUOTE) == 0) + *r++ = '\\'; + /* FALLTHROUGH */ + + default: + SCOPY_CHAR_M (r, string, send, 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 = alloc_word_desc (); + w->word = t ? t : savestring (""); + 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, *e; + + for (t = list, result = (WORD_LIST *)NULL; t; t = t->next) + { + tresult = make_word_list (word_quote_removal (t->word, quoted), (WORD_LIST *)NULL); +#if 0 + result = (WORD_LIST *) list_append (result, tresult); +#else + if (result == 0) + result = e = tresult; + else + { + e->next = tresult; + while (e->next) + e = e->next; + } +#endif + } + return (result); +} +#endif + +/******************************************* + * * + * Functions to perform word splitting * + * * + *******************************************/ + +void +setifs (v) + SHELL_VAR *v; +{ + char *t; + unsigned char uc; + + ifs_var = v; + ifs_value = (v && value_cell (v)) ? value_cell (v) : " \t\n"; + + ifs_is_set = ifs_var != 0; + ifs_is_null = ifs_is_set && (*ifs_value == 0); + + /* Should really merge ifs_cmap with sh_syntaxtab. XXX - doesn't yet + handle multibyte chars in IFS */ + memset (ifs_cmap, '\0', sizeof (ifs_cmap)); + for (t = ifs_value ; t && *t; t++) + { + uc = *t; + ifs_cmap[uc] = 1; + } + +#if defined (HANDLE_MULTIBYTE) + if (ifs_value == 0) + { + ifs_firstc[0] = '\0'; /* XXX - ? */ + ifs_firstc_len = 1; + } + else + { + if (locale_utf8locale && UTF8_SINGLEBYTE (*ifs_value)) + ifs_firstc_len = (*ifs_value != 0) ? 1 : 0; + else + { + size_t ifs_len; + ifs_len = strnlen (ifs_value, MB_CUR_MAX); + ifs_firstc_len = MBLEN (ifs_value, ifs_len); + } + if (ifs_firstc_len == 1 || ifs_firstc_len == 0 || MB_INVALIDCH (ifs_firstc_len)) + { + ifs_firstc[0] = ifs_value[0]; + ifs_firstc[1] = '\0'; + ifs_firstc_len = 1; + } + else + memcpy (ifs_firstc, ifs_value, ifs_firstc_len); + } +#else + ifs_firstc = ifs_value ? *ifs_value : 0; +#endif +} + +char * +getifs () +{ + return ifs_value; +} + +/* 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, ifs_chars) + WORD_DESC *w; + char *ifs_chars; +{ + WORD_LIST *result; + + if (w) + { + char *xifs; + + xifs = ((w->flags & W_QUOTED) || ifs_chars == 0) ? "" : ifs_chars; + result = list_string (w->word, xifs, w->flags & W_QUOTED); + } + 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, *e; + WORD_DESC *w; + + for (t = list, result = (WORD_LIST *)NULL; t; t = t->next) + { + tresult = word_split (t->word, ifs_value); + /* POSIX 2.6: "If the complete expansion appropriate for a word results + in an empty field, that empty field shall be deleted from the list + of fields that form the completely expanded command, unless the + original word contained single-quote or double-quote characters." + This is where we handle these words that contain quoted null strings + and other characters that expand to nothing after word splitting. */ + if (tresult == 0 && t->word && (t->word->flags & W_SAWQUOTEDNULL)) /* XXX */ + { + w = alloc_word_desc (); + w->word = (char *)xmalloc (1); + w->word[0] = '\0'; + tresult = make_word_list (w, (WORD_LIST *)NULL); + } + if (result == 0) + result = e = tresult; + else + { + e->next = tresult; + while (e->next) + e = e->next; + } + } + return (result); +} + +/************************************************** + * * + * Functions to expand an entire WORD_LIST * + * * + **************************************************/ + +/* Do any word-expansion-specific cleanup and jump to top_level */ +static void +exp_jump_to_top_level (v) + int v; +{ + set_pipestatus_from_exit (last_command_exit_value); + + /* Cleanup code goes here. */ + expand_no_split_dollar_star = 0; /* XXX */ + if (expanding_redir) + undo_partial_redirects (); + expanding_redir = 0; + assigning_in_environment = 0; + + if (parse_and_execute_level == 0) + top_level_cleanup (); /* from sig.c */ + + jump_to_top_level (v); +} + +/* Put NLIST (which is a WORD_LIST * of only one element) at the front of + ELIST, and set ELIST to the new list. */ +#define PREPEND_LIST(nlist, elist) \ + do { nlist->next = elist; elist = nlist; } while (0) + +/* 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 SUBST_ASSIGN_VARLIST. */ +static WORD_LIST * +separate_out_assignments (tlist) + WORD_LIST *tlist; +{ + register WORD_LIST *vp, *lp; + + if (tlist == 0) + return ((WORD_LIST *)NULL); + + if (subst_assign_varlist) + dispose_words (subst_assign_varlist); /* Clean up after previous error */ + + subst_assign_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 SUBST_ASSIGN_VARLIST point to the list of assignment + words and TLIST point to the remaining words. */ + if (lp != tlist) + { + subst_assign_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 + SUBST_ASSIGN_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 + subst_assign_varlist (vp). */ + if (!subst_assign_varlist) + subst_assign_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); +} + +#define WEXP_VARASSIGN 0x001 +#define WEXP_BRACEEXP 0x002 +#define WEXP_TILDEEXP 0x004 +#define WEXP_PARAMEXP 0x008 +#define WEXP_PATHEXP 0x010 + +/* All of the expansions, including variable assignments at the start of + the list. */ +#define WEXP_ALL (WEXP_VARASSIGN|WEXP_BRACEEXP|WEXP_TILDEEXP|WEXP_PARAMEXP|WEXP_PATHEXP) + +/* All of the expansions except variable assignments at the start of + the list. */ +#define WEXP_NOVARS (WEXP_BRACEEXP|WEXP_TILDEEXP|WEXP_PARAMEXP|WEXP_PATHEXP) + +/* All of the `shell expansions': brace expansion, tilde expansion, parameter + expansion, command substitution, arithmetic expansion, word splitting, and + quote removal. */ +#define WEXP_SHELLEXP (WEXP_BRACEEXP|WEXP_TILDEEXP|WEXP_PARAMEXP) + +/* 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, WEXP_ALL)); +} + +/* 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, WEXP_NOVARS)); +} + +WORD_LIST * +expand_words_shellexp (list) + WORD_LIST *list; +{ + return (expand_word_list_internal (list, WEXP_SHELLEXP)); +} + +static WORD_LIST * +glob_expand_word_list (tlist, eflags) + WORD_LIST *tlist; + int eflags; +{ + char **glob_array, *temp_string; + register int glob_index; + WORD_LIST *glob_list, *output_list, *disposables, *next; + WORD_DESC *tword; + int x; + + output_list = disposables = (WORD_LIST *)NULL; + 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 an assignment and contains an unquoted + pattern matching character, then glob it. */ + if ((tlist->word->flags & W_NOGLOB) == 0 && + unquoted_glob_pattern_p (tlist->word->word)) + { + glob_array = shell_glob_filename (tlist->word->word, QGLOB_CTLESC); /* XXX */ + + /* 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_array == 0 || 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) + { + output_list = (WORD_LIST *)list_append (glob_list, output_list); + PREPEND_LIST (tlist, disposables); + } + else if (fail_glob_expansion != 0) + { + last_command_exit_value = EXECUTION_FAILURE; + report_error (_("no match: %s"), tlist->word->word); + exp_jump_to_top_level (DISCARD); + } + else if (allow_null_glob_expansion == 0) + { + /* Failed glob expressions are left unchanged. */ + PREPEND_LIST (tlist, output_list); + } + else + { + /* Failed glob expressions are removed. */ + PREPEND_LIST (tlist, disposables); + } + } + else + { + /* Dequote the string. */ + temp_string = dequote_string (tlist->word->word); + free (tlist->word->word); + tlist->word->word = temp_string; + PREPEND_LIST (tlist, output_list); + } + + strvec_dispose (glob_array); + glob_array = (char **)NULL; + + tlist = next; + } + + if (disposables) + dispose_words (disposables); + + if (output_list) + output_list = REVERSE_LIST (output_list, WORD_LIST *); + + return (output_list); +} + +#if defined (BRACE_EXPANSION) +static WORD_LIST * +brace_expand_word_list (tlist, eflags) + WORD_LIST *tlist; + int eflags; +{ + register char **expansions; + char *temp_string; + WORD_LIST *disposables, *output_list, *next; + WORD_DESC *w; + int eindex; + + for (disposables = output_list = (WORD_LIST *)NULL; tlist; tlist = next) + { + next = tlist->next; + + if (tlist->word->flags & W_NOBRACE) + { +/*itrace("brace_expand_word_list: %s: W_NOBRACE", tlist->word->word);*/ + PREPEND_LIST (tlist, output_list); + continue; + } + + if ((tlist->word->flags & (W_COMPASSIGN|W_ASSIGNARG)) == (W_COMPASSIGN|W_ASSIGNARG)) + { +/*itrace("brace_expand_word_list: %s: W_COMPASSIGN|W_ASSIGNARG", tlist->word->word);*/ + PREPEND_LIST (tlist, output_list); + continue; + } + + /* 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 `mbschr', 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 (mbschr (tlist->word->word, LBRACE)) + { + expansions = brace_expand (tlist->word->word); + + for (eindex = 0; temp_string = expansions[eindex]; eindex++) + { + w = alloc_word_desc (); + w->word = temp_string; + + /* If brace expansion didn't change the word, preserve + the flags. We may want to preserve the flags + unconditionally someday -- XXX */ + if (STREQ (temp_string, tlist->word->word)) + w->flags = tlist->word->flags; + else + w = make_word_flags (w, temp_string); + + output_list = make_word_list (w, output_list); + } + free (expansions); + + /* Add TLIST to the list of words to be freed after brace + expansion has been performed. */ + PREPEND_LIST (tlist, disposables); + } + else + PREPEND_LIST (tlist, output_list); + } + + if (disposables) + dispose_words (disposables); + + if (output_list) + output_list = REVERSE_LIST (output_list, WORD_LIST *); + + return (output_list); +} +#endif + +#if defined (ARRAY_VARS) +/* Take WORD, a compound array assignment, and internally run (for example), + 'declare -A w', where W is the variable name portion of WORD. OPTION is + the list of options to supply to `declare'. CMD is the declaration command + we are expanding right now; it's unused currently. */ +static int +make_internal_declare (word, option, cmd) + char *word; + char *option; + char *cmd; +{ + int t, r; + WORD_LIST *wl; + WORD_DESC *w; + + w = make_word (word); + + t = assignment (w->word, 0); + if (w->word[t] == '=') + { + w->word[t] = '\0'; + if (w->word[t - 1] == '+') /* cut off any append op */ + w->word[t - 1] = '\0'; + } + + wl = make_word_list (w, (WORD_LIST *)NULL); + wl = make_word_list (make_word (option), wl); + + r = declare_builtin (wl); + + dispose_words (wl); + return r; +} + +/* Expand VALUE in NAME[+]=( VALUE ) to a list of words. FLAGS is 1 if NAME + is an associative array. + + If we are processing an indexed array, expand_compound_array_assignment + will expand all the individual words and quote_compound_array_list will + single-quote them. If we are processing an associative array, we use + parse_string_to_word_list to split VALUE into a list of words instead of + faking up a shell variable and calling expand_compound_array_assignment. + expand_and_quote_assoc_word expands and single-quotes each word in VALUE + together so we don't have problems finding the end of the subscript when + quoting it. + + Words in VALUE can be individual words, which are expanded and single-quoted, + or words of the form [IND]=VALUE, which end up as explained below, as + ['expanded-ind']='expanded-value'. */ + +static WORD_LIST * +expand_oneword (value, flags) + char *value; + int flags; +{ + WORD_LIST *l, *nl; + char *t; + int kvpair; + + if (flags == 0) + { + /* Indexed array */ + l = expand_compound_array_assignment ((SHELL_VAR *)NULL, value, flags); + /* Now we quote the results of the expansion above to prevent double + expansion. */ + quote_compound_array_list (l, flags); + return l; + } + else + { + /* Associative array */ + l = parse_string_to_word_list (value, 1, "array assign"); +#if ASSOC_KVPAIR_ASSIGNMENT + kvpair = kvpair_assignment_p (l); +#endif + + /* For associative arrays, with their arbitrary subscripts, we have to + expand and quote in one step so we don't have to search for the + closing right bracket more than once. */ + for (nl = l; nl; nl = nl->next) + { +#if ASSOC_KVPAIR_ASSIGNMENT + if (kvpair) + /* keys and values undergo the same set of expansions */ + t = expand_and_quote_kvpair_word (nl->word->word); + else +#endif + if ((nl->word->flags & W_ASSIGNMENT) == 0) + t = sh_single_quote (nl->word->word ? nl->word->word : ""); + else + t = expand_and_quote_assoc_word (nl->word->word, flags); + free (nl->word->word); + nl->word->word = t; + } + return l; + } +} + +/* Expand a single compound assignment argument to a declaration builtin. + This word takes the form NAME[+]=( VALUE ). The NAME[+]= is passed through + unchanged. The VALUE is expanded and each word in the result is single- + quoted. Words of the form [key]=value end up as + ['expanded-key']='expanded-value'. Associative arrays have special + handling, see expand_oneword() above. The return value is + NAME[+]=( expanded-and-quoted-VALUE ). */ +static void +expand_compound_assignment_word (tlist, flags) + WORD_LIST *tlist; + int flags; +{ + WORD_LIST *l; + int wlen, oind, t; + char *value, *temp; + +/*itrace("expand_compound_assignment_word: original word = -%s-", tlist->word->word);*/ + t = assignment (tlist->word->word, 0); + + /* value doesn't have the open and close parens */ + oind = 1; + value = extract_array_assignment_list (tlist->word->word + t + 1, &oind); + /* This performs one round of expansion on the index/key and value and + single-quotes each word in the result. */ + l = expand_oneword (value, flags); + free (value); + + value = string_list (l); + wlen = STRLEN (value); + + /* Now, let's rebuild the string */ + temp = xmalloc (t + 3 + wlen + 1); /* name[+]=(value) */ + memcpy (temp, tlist->word->word, ++t); + temp[t++] = '('; + if (value) + memcpy (temp + t, value, wlen); + t += wlen; + temp[t++] = ')'; + temp[t] = '\0'; +/*itrace("expand_compound_assignment_word: reconstructed word = -%s-", temp);*/ + + free (tlist->word->word); + tlist->word->word = temp; + + free (value); +} + +/* Expand and process an argument to a declaration command. We have already + set flags in TLIST->word->flags depending on the declaration command + (declare, local, etc.) and the options supplied to it (-a, -A, etc.). + TLIST->word->word is of the form NAME[+]=( VALUE ). + + This does several things, all using pieces of other functions to get the + evaluation sequence right. It's called for compound array assignments with + the W_ASSIGNMENT flag set (basically, valid identifier names on the lhs). + It parses out which flags need to be set for declare to create the variable + correctly, then calls declare internally (make_internal_declare) to make + sure the variable exists with the correct attributes. Before the variable + is created, it calls expand_compound_assignment_word to expand VALUE to a + list of words, appropriately quoted for further evaluation. This preserves + the semantics of word-expansion-before-calling-builtins. Finally, it calls + do_word_assignment to perform the expansion and assignment with the same + expansion semantics as a standalone assignment statement (no word splitting, + etc.) even though the word is single-quoted so all that needs to happen is + quote removal. */ +static WORD_LIST * +expand_declaration_argument (tlist, wcmd) + WORD_LIST *tlist, *wcmd; +{ + char opts[16], omap[128]; + int t, opti, oind, skip, inheriting; + WORD_LIST *l; + + inheriting = localvar_inherit; + opti = 0; + if (tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL|W_CHKLOCAL|W_ASSIGNARRAY)) + opts[opti++] = '-'; + + if ((tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL)) == (W_ASSIGNASSOC|W_ASSNGLOBAL)) + { + opts[opti++] = 'g'; + opts[opti++] = 'A'; + } + else if (tlist->word->flags & W_ASSIGNASSOC) + { + opts[opti++] = 'A'; + } + else if ((tlist->word->flags & (W_ASSIGNARRAY|W_ASSNGLOBAL)) == (W_ASSIGNARRAY|W_ASSNGLOBAL)) + { + opts[opti++] = 'g'; + opts[opti++] = 'a'; + } + else if (tlist->word->flags & W_ASSIGNARRAY) + { + opts[opti++] = 'a'; + } + else if (tlist->word->flags & W_ASSNGLOBAL) + opts[opti++] = 'g'; + + if (tlist->word->flags & W_CHKLOCAL) + opts[opti++] = 'G'; + + /* If we have special handling note the integer attribute and others + that transform the value upon assignment. What we do is take all + of the option arguments and scan through them looking for options + that cause such transformations, and add them to the `opts' array. */ + + memset (omap, '\0', sizeof (omap)); + for (l = wcmd->next; l != tlist; l = l->next) + { + if (l->word->word[0] != '-') + break; /* non-option argument */ + if (l->word->word[0] == '-' && l->word->word[1] == '-' && l->word->word[2] == 0) + break; /* -- signals end of options */ + for (oind = 1; l->word->word[oind]; oind++) + switch (l->word->word[oind]) + { + case 'I': + inheriting = 1; + case 'i': + case 'l': + case 'u': + case 'c': + omap[l->word->word[oind]] = 1; + if (opti == 0) + opts[opti++] = '-'; + break; + default: + break; + } + } + + for (oind = 0; oind < sizeof (omap); oind++) + if (omap[oind]) + opts[opti++] = oind; + + /* If there are no -a/-A options, but we have a compound assignment, + we have a choice: we can set opts[0]='-', opts[1]='a', since the + default is to create an indexed array, and call + make_internal_declare with that, or we can just skip the -a and let + declare_builtin deal with it. Once we're here, we're better set + up for the latter, since we don't want to deal with looking up + any existing variable here -- better to let declare_builtin do it. + We need the variable created, though, especially if it's local, so + we get the scoping right before we call do_word_assignment. + To ensure that make_local_declare gets called, we add `--' if there + aren't any options. */ + if ((tlist->word->flags & (W_ASSIGNASSOC|W_ASSIGNARRAY)) == 0) + { + if (opti == 0) + { + opts[opti++] = '-'; + opts[opti++] = '-'; + } + } + opts[opti] = '\0'; + + /* This isn't perfect, but it's a start. Improvements later. We expand + tlist->word->word and single-quote the results to avoid multiple + expansions by, say, do_assignment_internal(). We have to weigh the + cost of reconstructing the compound assignment string with its single + quoting and letting the declare builtin handle it. The single quotes + will prevent any unwanted additional expansion or word splitting. */ + expand_compound_assignment_word (tlist, (tlist->word->flags & W_ASSIGNASSOC) ? 1 : 0); + + skip = 0; + if (opti > 0) + { + t = make_internal_declare (tlist->word->word, opts, wcmd ? wcmd->word->word : (char *)0); + if (t != EXECUTION_SUCCESS) + { + last_command_exit_value = t; + if (tlist->word->flags & W_FORCELOCAL) /* non-fatal error */ + skip = 1; + else + exp_jump_to_top_level (DISCARD); + } + } + + if (skip == 0) + { + t = do_word_assignment (tlist->word, 0); + if (t == 0) + { + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level (DISCARD); + } + } + + /* Now transform the word as ksh93 appears to do and go on */ + t = assignment (tlist->word->word, 0); + tlist->word->word[t] = '\0'; + if (tlist->word->word[t - 1] == '+') + tlist->word->word[t - 1] = '\0'; /* cut off append op */ + tlist->word->flags &= ~(W_ASSIGNMENT|W_NOSPLIT|W_COMPASSIGN|W_ASSIGNARG|W_ASSIGNASSOC|W_ASSIGNARRAY); + + return (tlist); +} +#endif /* ARRAY_VARS */ + +static WORD_LIST * +shell_expand_word_list (tlist, eflags) + WORD_LIST *tlist; + int eflags; +{ + WORD_LIST *expanded, *orig_list, *new_list, *next, *temp_list, *wcmd; + int expanded_something, has_dollar_at; + + /* We do tilde expansion all the time. This is what 1003.2 says. */ + wcmd = new_list = (WORD_LIST *)NULL; + + for (orig_list = tlist; tlist; tlist = next) + { + if (wcmd == 0 && (tlist->word->flags & W_ASSNBLTIN)) + wcmd = tlist; + + next = tlist->next; + +#if defined (ARRAY_VARS) + /* If this is a compound array assignment to a builtin that accepts + such assignments (e.g., `declare'), take the assignment and perform + it separately, handling the semantics of declarations inside shell + functions. This avoids the double-evaluation of such arguments, + because `declare' does some evaluation of compound assignments on + its own. */ + if ((tlist->word->flags & (W_COMPASSIGN|W_ASSIGNARG)) == (W_COMPASSIGN|W_ASSIGNARG)) + expand_declaration_argument (tlist, wcmd); +#endif + + expanded_something = 0; + expanded = expand_word_internal + (tlist->word, 0, 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); + + last_command_exit_value = EXECUTION_FAILURE; + if (expanded == &expand_word_error) + exp_jump_to_top_level (DISCARD); + else + exp_jump_to_top_level (FORCE_EOF); + } + + /* Don't split words marked W_NOSPLIT. */ + if (expanded_something && (tlist->word->flags & W_NOSPLIT) == 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. */ + word_list_remove_quoted_nulls (expanded); + temp_list = expanded; + } + + expanded = REVERSE_LIST (temp_list, WORD_LIST *); + new_list = (WORD_LIST *)list_append (expanded, new_list); + } + + if (orig_list) + dispose_words (orig_list); + + if (new_list) + new_list = REVERSE_LIST (new_list, WORD_LIST *); + + return (new_list); +} + +/* The workhorse for expand_words () and expand_words_no_vars (). + First arg is LIST, a WORD_LIST of words. + Second arg EFLAGS is a flags word controlling which expansions are + performed. + + This does all of the substitutions: brace expansion, tilde expansion, + parameter expansion, command substitution, arithmetic expansion, + process substitution, word splitting, and pathname expansion, according + to the bits set in EFLAGS. Words with the W_QUOTED or W_NOSPLIT bits + set, or for which no expansion is done, do not undergo word splitting. + Words with the W_NOGLOB bit set do not undergo pathname expansion; words + with W_NOBRACE set do not undergo brace expansion (see + brace_expand_word_list above). */ +static WORD_LIST * +expand_word_list_internal (list, eflags) + WORD_LIST *list; + int eflags; +{ + WORD_LIST *new_list, *temp_list; + int tint; + char *savecmd; + + tempenv_assign_error = 0; + if (list == 0) + return ((WORD_LIST *)NULL); + + garglist = new_list = copy_word_list (list); + if (eflags & WEXP_VARASSIGN) + { + garglist = new_list = separate_out_assignments (new_list); + if (new_list == 0) + { + if (subst_assign_varlist) + { + /* All the words were variable assignments, so they are placed + into the shell's environment. */ + for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next) + { + savecmd = this_command_name; + this_command_name = (char *)NULL; /* no arithmetic errors */ + tint = do_word_assignment (temp_list->word, 0); + this_command_name = savecmd; + /* Variable assignment errors in non-interactive shells + running in Posix.2 mode cause the shell to exit, unless + they are being run by the `command' builtin. */ + if (tint == 0) + { + last_command_exit_value = EXECUTION_FAILURE; + if (interactive_shell == 0 && posixly_correct && executing_command_builtin == 0) + exp_jump_to_top_level (FORCE_EOF); + else + exp_jump_to_top_level (DISCARD); + } + } + dispose_words (subst_assign_varlist); + subst_assign_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 ((eflags & WEXP_BRACEEXP) && brace_expansion && new_list) + new_list = brace_expand_word_list (new_list, eflags); +#endif /* BRACE_EXPANSION */ + + /* Perform the `normal' shell expansions: tilde expansion, parameter and + variable substitution, command substitution, arithmetic expansion, + and word splitting. */ + new_list = shell_expand_word_list (new_list, eflags); + + /* Okay, we're almost done. Now let's just do some filename + globbing. */ + if (new_list) + { + if ((eflags & WEXP_PATHEXP) && disallow_filename_globbing == 0) + /* Glob expand the word list unless globbing has been disabled. */ + new_list = glob_expand_word_list (new_list, eflags); + else + /* Dequote the words, because we're not performing globbing. */ + new_list = dequote_list (new_list); + } + + if ((eflags & WEXP_VARASSIGN) && subst_assign_varlist) + { + sh_wassign_func_t *assign_func; + int is_special_builtin, is_builtin_or_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_word_assignment; + tempenv_assign_error = 0; + + is_builtin_or_func = (new_list && new_list->word && (find_shell_builtin (new_list->word->word) || find_function (new_list->word->word))); + /* Posix says that special builtins exit if a variable assignment error + occurs in an assignment preceding it. */ + is_special_builtin = (posixly_correct && new_list && new_list->word && find_special_builtin (new_list->word->word)); + + for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next) + { + savecmd = this_command_name; + this_command_name = (char *)NULL; + assigning_in_environment = (assign_func == assign_in_env); + tint = (*assign_func) (temp_list->word, is_builtin_or_func); + assigning_in_environment = 0; + this_command_name = savecmd; + /* Variable assignment errors in non-interactive shells running + in Posix.2 mode cause the shell to exit. */ + if (tint == 0) + { + if (assign_func == do_word_assignment) + { + last_command_exit_value = EXECUTION_FAILURE; + if (interactive_shell == 0 && posixly_correct) + exp_jump_to_top_level (FORCE_EOF); + else + exp_jump_to_top_level (DISCARD); + } + else if (interactive_shell == 0 && is_special_builtin) + { + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level (FORCE_EOF); + } + else + tempenv_assign_error++; + } + } + + dispose_words (subst_assign_varlist); + subst_assign_varlist = (WORD_LIST *)NULL; + } + + return (new_list); +} diff --git a/bash-5.1/subst.h b/bash-5.1/subst.h new file mode 100644 index 0000000..1347651 --- /dev/null +++ b/bash-5.1/subst.h @@ -0,0 +1,354 @@ +/* subst.h -- Names of externally visible functions in subst.c. */ + +/* Copyright (C) 1993-2017 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if !defined (_SUBST_H_) +#define _SUBST_H_ + +#include "stdc.h" + +/* 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. Q_PATQUOTE means that we're + expanding a pattern ${var%#[#%]pattern} in an expansion surrounded + by double quotes. Q_DOLBRACE means we are expanding a ${...} word, so + backslashes should also escape { and } and be removed. */ +#define Q_DOUBLE_QUOTES 0x001 +#define Q_HERE_DOCUMENT 0x002 +#define Q_KEEP_BACKSLASH 0x004 +#define Q_PATQUOTE 0x008 +#define Q_QUOTED 0x010 +#define Q_ADDEDQUOTES 0x020 +#define Q_QUOTEDNULL 0x040 +#define Q_DOLBRACE 0x080 +#define Q_ARITH 0x100 /* expanding string for arithmetic evaluation */ +#define Q_ARRAYSUB 0x200 /* expanding indexed array subscript */ + +/* Flag values controlling how assignment statements are treated. */ +#define ASS_APPEND 0x0001 +#define ASS_MKLOCAL 0x0002 +#define ASS_MKASSOC 0x0004 +#define ASS_MKGLOBAL 0x0008 /* force global assignment */ +#define ASS_NAMEREF 0x0010 /* assigning to nameref variable */ +#define ASS_FORCE 0x0020 /* force assignment even to readonly variable */ +#define ASS_CHKLOCAL 0x0040 /* check local variable before assignment */ +#define ASS_NOEXPAND 0x0080 /* don't expand associative array subscripts */ +#define ASS_NOEVAL 0x0100 /* don't evaluate value as expression */ +#define ASS_NOLONGJMP 0x0200 /* don't longjmp on fatal assignment error */ +#define ASS_NOINVIS 0x0400 /* don't resolve local invisible variables */ + +/* Flags for the string extraction functions. */ +#define SX_NOALLOC 0x0001 /* just skip; don't return substring */ +#define SX_VARNAME 0x0002 /* variable name; for string_extract () */ +#define SX_REQMATCH 0x0004 /* closing/matching delimiter required */ +#define SX_COMMAND 0x0008 /* extracting a shell script/command */ +#define SX_NOCTLESC 0x0010 /* don't honor CTLESC quoting */ +#define SX_NOESCCTLNUL 0x0020 /* don't let CTLESC quote CTLNUL */ +#define SX_NOLONGJMP 0x0040 /* don't longjmp on fatal error */ +#define SX_ARITHSUB 0x0080 /* extracting $(( ... )) (currently unused) */ +#define SX_POSIXEXP 0x0100 /* extracting new Posix pattern removal expansions in extract_dollar_brace_string */ +#define SX_WORD 0x0200 /* extracting word in ${param op word} */ +#define SX_COMPLETE 0x0400 /* extracting word for completion */ +#define SX_STRIPDQ 0x0800 /* strip double quotes when extracting double-quoted string */ + +/* Remove backslashes which are quoting backquotes from STRING. Modifies + STRING, and returns a pointer to it. */ +extern char * de_backslash PARAMS((char *)); + +/* Replace instances of \! in a string with !. */ +extern void unquote_bang PARAMS((char *)); + +/* 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 ")". + XFLAGS is additional flags to pass to other extraction functions, */ +extern char *extract_command_subst PARAMS((char *, int *, int)); + +/* 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 "]". */ +extern char *extract_arithmetic_subst PARAMS((char *, int *)); + +#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 ")". */ +extern char *extract_process_subst PARAMS((char *, char *, int *, int)); +#endif /* PROCESS_SUBSTITUTION */ + +/* Extract the name of the variable to bind to from the assignment string. */ +extern char *assignment_name PARAMS((char *)); + +/* Return a single string of all the words present in LIST, separating + each word with SEP. */ +extern char *string_list_internal PARAMS((WORD_LIST *, char *)); + +/* Return a single string of all the words present in LIST, separating + each word with a space. */ +extern char *string_list PARAMS((WORD_LIST *)); + +/* Turn $* into a single string, obeying POSIX rules. */ +extern char *string_list_dollar_star PARAMS((WORD_LIST *, int, int)); + +/* Expand $@ into a single string, obeying POSIX rules. */ +extern char *string_list_dollar_at PARAMS((WORD_LIST *, int, int)); + +/* Turn the positional parameters into a string, understanding quoting and + the various subtleties of using the first character of $IFS as the + separator. Calls string_list_dollar_at, string_list_dollar_star, and + string_list as appropriate. */ +extern char *string_list_pos_params PARAMS((int, WORD_LIST *, int, int)); + +/* Perform quoted null character removal on each element of LIST. + This modifies LIST. */ +extern void word_list_remove_quoted_nulls PARAMS((WORD_LIST *)); + +/* This performs word splitting and quoted null character removal on + STRING. */ +extern WORD_LIST *list_string PARAMS((char *, char *, int)); + +extern char *ifs_firstchar PARAMS((int *)); +extern char *get_word_from_string PARAMS((char **, char *, char **)); +extern char *strip_trailing_ifs_whitespace PARAMS((char *, char *, int)); + +/* 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 tilde expansion, parameter expansion, command substitution, + and arithmetic expansion on the right-hand side. Do not perform word + splitting on the result of expansion. */ +extern int do_assignment PARAMS((char *)); +extern int do_assignment_no_expand PARAMS((char *)); +extern int do_word_assignment PARAMS((WORD_DESC *, int)); + +/* 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 free ()ing it. + Returns TARGET in case the location has changed. */ +extern char *sub_append_string PARAMS((char *, char *, int *, size_t *)); + +/* Append the textual representation of NUMBER to TARGET. + INDEX and SIZE are as in SUB_APPEND_STRING. */ +extern char *sub_append_number PARAMS((intmax_t, char *, int *, int *)); + +/* Return the word list that corresponds to `$*'. */ +extern WORD_LIST *list_rest_of_args PARAMS((void)); + +/* 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. */ +extern char *string_rest_of_args PARAMS((int)); + +/* 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 made here because word splitting normally + takes care of quote removal. */ +extern WORD_LIST *expand_string_unsplit PARAMS((char *, int)); + +/* Expand the rhs of an assignment statement. */ +extern WORD_LIST *expand_string_assignment PARAMS((char *, int)); + +/* Expand a prompt string. */ +extern WORD_LIST *expand_prompt_string PARAMS((char *, int, int)); + +/* 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. */ +extern WORD_LIST *expand_string PARAMS((char *, int)); + +/* Convenience functions that expand strings to strings, taking care of + converting the WORD_LIST * returned by the expand_string* functions + to a string and deallocating the WORD_LIST *. */ +extern char *expand_string_to_string PARAMS((char *, int)); +extern char *expand_string_unsplit_to_string PARAMS((char *, int)); +extern char *expand_assignment_string_to_string PARAMS((char *, int)); + +/* Expand an arithmetic expression string */ +extern char *expand_arith_string PARAMS((char *, int)); + +/* De-quote quoted characters in STRING. */ +extern char *dequote_string PARAMS((char *)); + +/* De-quote CTLESC-escaped CTLESC or CTLNUL characters in STRING. */ +extern char *dequote_escapes PARAMS((const char *)); + +extern WORD_DESC *dequote_word PARAMS((WORD_DESC *)); + +/* De-quote quoted characters in each word in LIST. */ +extern WORD_LIST *dequote_list PARAMS((WORD_LIST *)); + +/* Expand WORD, performing word splitting on the result. This does + parameter expansion, command substitution, arithmetic expansion, + word splitting, and quote removal. */ +extern WORD_LIST *expand_word PARAMS((WORD_DESC *, int)); + +/* Expand WORD, but do not perform word splitting on the result. This + does parameter expansion, command substitution, arithmetic expansion, + and quote removal. */ +extern WORD_LIST *expand_word_unsplit PARAMS((WORD_DESC *, int)); +extern WORD_LIST *expand_word_leave_quoted PARAMS((WORD_DESC *, int)); + +/* Return the value of a positional parameter. This handles values > 10. */ +extern char *get_dollar_var_value PARAMS((intmax_t)); + +/* Quote a string to protect it from word splitting. */ +extern char *quote_string PARAMS((char *)); + +/* Quote escape characters (characters special to internals of expansion) + in a string. */ +extern char *quote_escapes PARAMS((const char *)); + +/* And remove such quoted special characters. */ +extern char *remove_quoted_escapes PARAMS((char *)); + +/* Remove CTLNUL characters from STRING unless they are quoted with CTLESC. */ +extern char *remove_quoted_nulls PARAMS((char *)); + +/* Perform quote removal on STRING. If QUOTED > 0, assume we are obeying the + backslash quoting rules for within double quotes. */ +extern char *string_quote_removal PARAMS((char *, int)); + +/* Perform quote removal on word WORD. This allocates and returns a new + WORD_DESC *. */ +extern WORD_DESC *word_quote_removal PARAMS((WORD_DESC *, int)); + +/* 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. */ +extern WORD_LIST *word_list_quote_removal PARAMS((WORD_LIST *, int)); + +/* Called when IFS is changed to maintain some private variables. */ +extern void setifs PARAMS((SHELL_VAR *)); + +/* Return the value of $IFS, or " \t\n" if IFS is unset. */ +extern char *getifs PARAMS((void)); + +/* 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. */ +extern WORD_LIST *word_split PARAMS((WORD_DESC *, char *)); + +/* 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. */ +extern WORD_LIST *expand_words PARAMS((WORD_LIST *)); + +/* Same as expand_words (), but doesn't hack variable or environment + variables. */ +extern WORD_LIST *expand_words_no_vars PARAMS((WORD_LIST *)); + +/* Perform the `normal shell expansions' on a WORD_LIST. These are + brace expansion, tilde expansion, parameter and variable substitution, + command substitution, arithmetic expansion, and word splitting. */ +extern WORD_LIST *expand_words_shellexp PARAMS((WORD_LIST *)); + +extern WORD_DESC *command_substitute PARAMS((char *, int, int)); +extern char *pat_subst PARAMS((char *, char *, char *, int)); + +#if defined (PROCESS_SUBSTITUTION) +extern int fifos_pending PARAMS((void)); +extern int num_fifos PARAMS((void)); +extern void unlink_fifo_list PARAMS((void)); +extern void unlink_all_fifos PARAMS((void)); +extern void unlink_fifo PARAMS((int)); + +extern void *copy_fifo_list PARAMS((int *)); +extern void close_new_fifos PARAMS((void *, int)); + +extern void clear_fifo_list PARAMS((void)); + +extern int find_procsub_child PARAMS((pid_t)); +extern void set_procsub_status PARAMS((int, pid_t, int)); + +extern void wait_procsubs PARAMS((void)); +extern void reap_procsubs PARAMS((void)); +#endif + +extern WORD_LIST *list_string_with_quotes PARAMS((char *)); + +#if defined (ARRAY_VARS) +extern char *extract_array_assignment_list PARAMS((char *, int *)); +#endif + +#if defined (COND_COMMAND) +extern char *remove_backslashes PARAMS((char *)); +extern char *cond_expand_word PARAMS((WORD_DESC *, int)); +#endif + +/* Flags for skip_to_delim */ +#define SD_NOJMP 0x001 /* don't longjmp on fatal error. */ +#define SD_INVERT 0x002 /* look for chars NOT in passed set */ +#define SD_NOQUOTEDELIM 0x004 /* don't let single or double quotes act as delimiters */ +#define SD_NOSKIPCMD 0x008 /* don't skip over $(, <(, or >( command/process substitution; parse them as commands */ +#define SD_EXTGLOB 0x010 /* skip over extended globbing patterns if appropriate */ +#define SD_IGNOREQUOTE 0x020 /* single and double quotes are not special */ +#define SD_GLOB 0x040 /* skip over glob patterns like bracket expressions */ +#define SD_NOPROCSUB 0x080 /* don't parse process substitutions as commands */ +#define SD_COMPLETE 0x100 /* skip_to_delim during completion */ +#define SD_HISTEXP 0x200 /* skip_to_delim during history expansion */ +#define SD_ARITHEXP 0x400 /* skip_to_delim during arithmetic expansion */ + +extern int skip_to_delim PARAMS((char *, int, char *, int)); + +#if defined (BANG_HISTORY) +extern int skip_to_histexp PARAMS((char *, int, char *, int)); +#endif + +#if defined (READLINE) +extern int char_is_quoted PARAMS((char *, int)); +extern int unclosed_pair PARAMS((char *, int, char *)); +extern WORD_LIST *split_at_delims PARAMS((char *, int, char *, int, int, int *, int *)); +#endif + +/* Variables used to keep track of the characters in IFS. */ +extern SHELL_VAR *ifs_var; +extern char *ifs_value; +extern unsigned char ifs_cmap[]; +extern int ifs_is_set, ifs_is_null; + +#if defined (HANDLE_MULTIBYTE) +extern unsigned char ifs_firstc[]; +extern size_t ifs_firstc_len; +#else +extern unsigned char ifs_firstc; +#endif + +extern int assigning_in_environment; +extern int expanding_redir; +extern int inherit_errexit; + +extern pid_t last_command_subst_pid; + +/* Evaluates to 1 if C is a character in $IFS. */ +#define isifs(c) (ifs_cmap[(unsigned char)(c)] != 0) + +/* How to determine the quoted state of the character C. */ +#define QUOTED_CHAR(c) ((c) == CTLESC) + +/* Is the first character of STRING a quoted NULL character? */ +#define QUOTED_NULL(string) ((string)[0] == CTLNUL && (string)[1] == '\0') + +extern void invalidate_cached_quoted_dollar_at PARAMS((void)); + +#endif /* !_SUBST_H_ */ diff --git a/bash-5.1/support/Makefile.in b/bash-5.1/support/Makefile.in new file mode 100644 index 0000000..0289e0a --- /dev/null +++ b/bash-5.1/support/Makefile.in @@ -0,0 +1,88 @@ +# +# Simple Makefile for the support programs. +# +# documentation support: man2html +# testing support: printenv recho zecho xcase +# +# bashbug.sh lives here (created by configure), but bashbug is created by +# the top-level makefile +# +# Currently only man2html is built +# +# Copyright (C) 1998-2018 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# Boilerplate +# +topdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ +BUILD_DIR = @BUILD_DIR@ + +RM = rm -f +SHELL = @MAKE_SHELL@ +CC = @CC@ +CC_FOR_BUILD = @CC_FOR_BUILD@ + +EXEEXT = @EXEEXT@ + +# +# Compiler options: +# +PROFILE_FLAGS = @PROFILE_FLAGS@ + +CFLAGS = @CFLAGS@ +CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ +CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +LIBS = @LIBS@ +LIBS_FOR_BUILD = ${LIBS} # XXX + +LOCAL_LDFLAGS = @LOCAL_LDFLAGS@ +LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS) +LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD) + +INCLUDES = -I${BUILD_DIR} -I${topdir} + +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) + +SRC1 = man2html.c +OBJ1 = man2html.o + +.c.o: + $(RM) $@ + $(CC_FOR_BUILD) -c $(CCFLAGS_FOR_BUILD) $< + +all: man2html$(EXEEXT) + +man2html$(EXEEXT): $(OBJ1) + $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) $(OBJ1) -o $@ ${LIBS_FOR_BUILD} + +clean: + $(RM) man2html$(EXEEXT) $(OBJ1) + +distclean maintainer-clean mostlyclean: clean + $(RM) bash.pc bashbug.sh + +man2html.o: man2html.c diff --git a/bash-5.1/support/SYMLINKS b/bash-5.1/support/SYMLINKS new file mode 100644 index 0000000..06bbed7 --- /dev/null +++ b/bash-5.1/support/SYMLINKS @@ -0,0 +1,18 @@ +# +# symlink map for bash source tree +# +# link name link target +# +lib/readline/tilde.c ../tilde/tilde.c +lib/readline/tilde.h ../tilde/tilde.h +# +lib/readline/ansi_stdlib.h ../../include/ansi_stdlib.h +lib/readline/posixdir.h ../../include/posixdir.h +lib/readline/posixjmp.h ../../include/posixjmp.h +lib/readline/posixselect.h ../../include/posixselect.h +lib/readline/posixstat.h ../../include/posixstat.h +#lib/readline/rlstdc.h ../../include/stdc.h +#lib/readline/xmalloc.c ../malloc/xmalloc.c +# +#lib/tilde/memalloc.h ../../include/memalloc.h +# diff --git a/bash-5.1/support/bash.pc.in b/bash-5.1/support/bash.pc.in new file mode 100644 index 0000000..6009659 --- /dev/null +++ b/bash-5.1/support/bash.pc.in @@ -0,0 +1,28 @@ +# bash.pc.in + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +includedir=@includedir@ +libdir=@libdir@ + +loadablesdir=@loadablesdir@ +headersdir=${includedir}/@PACKAGE_NAME@ + +LOCAL_CFLAGS = @LOCAL_CFLAGS@ +LOCAL_DEFS = @LOCAL_DEFS@ +CCFLAGS = ${LOCAL_DEFS} ${LOCAL_CFLAGS} + +CC = @CC@ +SHOBJ_CC = @SHOBJ_CC@ +SHOBJ_CFLAGS = @SHOBJ_CFLAGS@ +SHOBJ_LD = @SHOBJ_LD@ +SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@ +SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@ +SHOBJ_LIBS = @SHOBJ_LIBS@ + +Name: @PACKAGE_NAME@ +Description: Bash headers for bash loadable builtins +Version: @PACKAGE_VERSION@ +Url: @PACKAGE_URL@ +Libs: ${SHOBJ_LIBS} +Cflags: ${SHOBJ_CFLAGS} ${CCFLAGS} -I${headersdir} -I${headersdir}/builtins -I${headersdir}/include diff --git a/bash-5.1/support/bash.xbm b/bash-5.1/support/bash.xbm new file mode 100644 index 0000000..14bbe6a --- /dev/null +++ b/bash-5.1/support/bash.xbm @@ -0,0 +1,60 @@ +From: Simon Marshall +Date: Wed, 8 May 91 17:15:58 +0100 +To: bug-bash@ai.mit.edu +Subject: X bitmap for bash + + Since other GNU software comes with its very own X bitmap, I + thought it was about time bash had one too & here it is! To use, + stick the stuff after my signature in a file /bash.xbm. If + using a twm window manager, insert the lines: + +IconDirectory "" +Icons { + "" "bash.xbm" +} + in your ~/.twmrc file. The can be a prefix, so if + you have titles "bash@machine", the prefix "bash" will do. I'm not + familiar enough with other window managers, but they should be + similar. + + If you like it, you're welcome to it... + + Simon. + +Copyright (C) 1992 Simon Marshall +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#define bash_width 64 +#define bash_height 48 +static char bash_bits[] = { + 0x00, 0x60, 0x06, 0x30, 0x04, 0x00, 0x00, 0x00, 0x60, 0x98, 0x01, 0x40, + 0x03, 0x00, 0x00, 0x00, 0x19, 0x00, 0xa0, 0x80, 0x80, 0xff, 0x00, 0x00, + 0x06, 0x00, 0x1c, 0x03, 0xe1, 0x5f, 0x03, 0x00, 0x02, 0x00, 0x22, 0x0c, + 0x5d, 0xf4, 0x0e, 0x00, 0xe1, 0x02, 0x09, 0x19, 0x17, 0x91, 0x3d, 0x00, + 0xf8, 0x87, 0x40, 0x90, 0x88, 0x88, 0x6e, 0x00, 0x8e, 0x9b, 0x04, 0x62, + 0x22, 0x22, 0xd6, 0x00, 0x02, 0xee, 0x4c, 0x68, 0x44, 0x44, 0x6c, 0x01, + 0x02, 0xf8, 0xa1, 0x4a, 0x11, 0x11, 0xb1, 0x02, 0x05, 0xa0, 0x22, 0xe0, + 0x88, 0x88, 0x68, 0x03, 0x42, 0x50, 0x5d, 0x40, 0x22, 0x22, 0xa2, 0x05, + 0x11, 0x81, 0x00, 0x44, 0x44, 0x44, 0x44, 0x07, 0x02, 0x20, 0x84, 0x60, + 0x11, 0x11, 0xd1, 0x0d, 0x02, 0x0a, 0x02, 0xc0, 0x88, 0x88, 0x48, 0x0b, + 0x44, 0x40, 0x00, 0x42, 0x22, 0x22, 0xa2, 0x1d, 0x24, 0x08, 0x02, 0x64, + 0x44, 0x44, 0xc4, 0x1a, 0x08, 0x00, 0x20, 0x20, 0x11, 0x11, 0x91, 0x15, + 0x88, 0x00, 0x00, 0xe1, 0xff, 0xff, 0xff, 0x1a, 0x10, 0x08, 0x22, 0x10, + 0x00, 0x00, 0xc0, 0x15, 0x31, 0x40, 0x00, 0xf2, 0x03, 0xc0, 0xc1, 0x1a, + 0x41, 0x24, 0x48, 0x6c, 0x06, 0x80, 0xc1, 0x15, 0x82, 0x01, 0x00, 0x66, + 0x06, 0x80, 0xc1, 0x1a, 0x04, 0x22, 0x12, 0x67, 0x06, 0x80, 0xc1, 0x15, + 0x0a, 0x04, 0xe0, 0x66, 0xe6, 0xb8, 0xc7, 0x1a, 0x09, 0xf0, 0x17, 0xee, + 0xb3, 0xa5, 0xcf, 0x15, 0x30, 0x00, 0x00, 0x6e, 0x86, 0x8d, 0xcd, 0x1a, + 0x00, 0x01, 0x80, 0x67, 0xe6, 0xbd, 0xcd, 0x15, 0x00, 0x46, 0x40, 0x66, + 0xb6, 0xb1, 0xcd, 0x1a, 0x00, 0x38, 0x3c, 0x66, 0xb6, 0xa5, 0xcd, 0x15, + 0x00, 0x00, 0x02, 0xf6, 0xe3, 0x9d, 0xdd, 0x1a, 0x00, 0x04, 0x60, 0x06, + 0x00, 0x00, 0xc0, 0x15, 0x00, 0x04, 0x40, 0xfe, 0xff, 0xff, 0xff, 0x1a, + 0x00, 0x02, 0x80, 0x12, 0x11, 0x11, 0x91, 0x15, 0x00, 0x00, 0x00, 0x8a, + 0x88, 0x88, 0x88, 0x1a, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0xa2, 0x15, + 0x00, 0x00, 0x00, 0x46, 0x44, 0x44, 0xc4, 0x9a, 0x00, 0x00, 0x00, 0x12, + 0x11, 0x11, 0x91, 0xb5, 0x00, 0x00, 0x10, 0x8a, 0x88, 0x88, 0x88, 0xba, + 0x00, 0x00, 0x10, 0x22, 0x22, 0x22, 0xa2, 0xd5, 0x00, 0x00, 0x30, 0xc6, + 0x44, 0x44, 0xcc, 0xdf, 0x00, 0x20, 0x39, 0x96, 0x15, 0x51, 0x99, 0xf5, + 0x80, 0xf2, 0x56, 0x8b, 0x9a, 0xea, 0x9b, 0xff, 0xc1, 0xad, 0x5e, 0xaf, + 0xbb, 0xfa, 0xba, 0xdf, 0x22, 0x9b, 0xae, 0xd7, 0x54, 0x5d, 0xd7, 0xbf, + 0x3b, 0x32, 0xce, 0xff, 0xff, 0xff, 0xff, 0xab, 0xae, 0x2b, 0x59, 0xaf, + 0xd4, 0xae, 0x2e, 0xc3, 0xdd, 0x43, 0xa9, 0xd1, 0xba, 0xae, 0x2c, 0xcd}; diff --git a/bash-5.1/support/bashbug.sh b/bash-5.1/support/bashbug.sh new file mode 100644 index 0000000..01e9f01 --- /dev/null +++ b/bash-5.1/support/bashbug.sh @@ -0,0 +1,274 @@ +#!/bin/sh - +# +# bashbug - create a bug report and mail it to the bug address +# +# The bug address depends on the release status of the shell. Versions +# with status `devel', `alpha', `beta', or `rc' mail bug reports to +# chet@cwru.edu and, optionally, to bash-testers@cwru.edu. +# Other versions send mail to bug-bash@gnu.org. +# +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# configuration section: +# these variables are filled in by the make target in Makefile +# +MACHINE="!MACHINE!" +OS="!OS!" +CC="!CC!" +CFLAGS="!CFLAGS!" +RELEASE="!RELEASE!" +PATCHLEVEL="!PATCHLEVEL!" +RELSTATUS="!RELSTATUS!" +MACHTYPE="!MACHTYPE!" + +PATH=/bin:/usr/bin:/usr/local/bin:$PATH +export PATH + +# Check if TMPDIR is set, default to /tmp +: ${TMPDIR:=/tmp} + +#Securely create a temporary directory for the temporary files +TEMPDIR=$TMPDIR/bbug.$$ +(umask 077 && mkdir "$TEMPDIR") || { + echo "$0: could not create temporary directory" >&2 + exit 1 +} + +TEMPFILE1=$TEMPDIR/bbug1 +TEMPFILE2=$TEMPDIR/bbug2 + +USAGE="Usage: $0 [--help] [--version] [bug-report-email-address]" +VERSTR="GNU bashbug, version ${RELEASE}.${PATCHLEVEL}-${RELSTATUS}" + +do_help= do_version= + +while [ $# -gt 0 ]; do + case "$1" in + --help) shift ; do_help=y ;; + --version) shift ; do_version=y ;; + --) shift ; break ;; + -*) echo "bashbug: ${1}: invalid option" >&2 + echo "$USAGE" >&2 + exit 2 ;; + *) break ;; + esac +done + +if [ -n "$do_version" ]; then + echo "${VERSTR}" + exit 0 +fi + +if [ -n "$do_help" ]; then + echo "${VERSTR}" + echo "${USAGE}" + echo + cat << HERE_EOF +Bashbug is used to send mail to the Bash maintainers +for when Bash doesn't behave like you'd like, or expect. + +Bashbug will start up your editor (as defined by the shell's +EDITOR environment variable) with a preformatted bug report +template for you to fill in. The report will be mailed to the +bug-bash mailing list by default. See the manual for details. + +If you invoke bashbug by accident, just quit your editor without +saving any changes to the template, and no bug report will be sent. +HERE_EOF + exit 0 +fi + +# Figure out how to echo a string without a trailing newline +N=`echo 'hi there\c'` +case "$N" in +*c) n=-n c= ;; +*) n= c='\c' ;; +esac + +BASHTESTERS="bash-testers@cwru.edu" + +case "$RELSTATUS" in +alpha*|beta*|devel*|rc*) BUGBASH=chet@cwru.edu ;; +*) BUGBASH=bug-bash@gnu.org ;; +esac + +case "$RELSTATUS" in +alpha*|beta*|devel*|rc*) + echo "$0: This is a testing release. Would you like your bug report" + echo "$0: to be sent to the bash-testers mailing list?" + echo $n "$0: Send to bash-testers? $c" + read ans + case "$ans" in + y*|Y*) BUGBASH="${BUGBASH},${BASHTESTERS}" ;; + esac ;; +esac + +BUGADDR="${1-$BUGBASH}" + +if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then + if [ -x /usr/bin/editor ]; then + DEFEDITOR=editor + elif [ -x /usr/local/bin/ce ]; then + DEFEDITOR=ce + elif [ -x /usr/local/bin/emacs ]; then + DEFEDITOR=emacs + elif [ -x /usr/contrib/bin/emacs ]; then + DEFEDITOR=emacs + elif [ -x /usr/bin/emacs ]; then + DEFEDITOR=emacs + elif [ -x /usr/bin/xemacs ]; then + DEFEDITOR=xemacs + elif [ -x /usr/bin/nano ]; then + DEFEDITOR=nano + elif [ -x /usr/contrib/bin/jove ]; then + DEFEDITOR=jove + elif [ -x /usr/local/bin/jove ]; then + DEFEDITOR=jove + elif [ -x /usr/bin/vi ]; then + DEFEDITOR=vi + else + echo "$0: No default editor found: attempting to use vi" >&2 + DEFEDITOR=vi + fi +fi + + +: ${EDITOR=$DEFEDITOR} + +: ${USER=${LOGNAME-`whoami`}} + +trap 'rm -rf "$TEMPDIR"; exit 1' 1 2 3 13 15 +trap 'rm -rf "$TEMPDIR"' 0 + +UN= +if (uname) >/dev/null 2>&1; then + UN=`uname -a` +fi + +if [ -f /usr/lib/sendmail ] ; then + RMAIL="/usr/lib/sendmail" + SMARGS="-i -t" +elif [ -f /usr/sbin/sendmail ] ; then + RMAIL="/usr/sbin/sendmail" + SMARGS="-i -t" +else + RMAIL=rmail + SMARGS="$BUGADDR" +fi + +INITIAL_SUBJECT='[50 character or so descriptive subject here (for reference)]' + +cat > "$TEMPFILE1" <> $HOME/dead.bashbug + echo "$0: mail to ${BUGADDR} failed: report saved in $HOME/dead.bashbug" >&2 + echo "$0: please send it manually to ${BUGADDR}" >&2 +} + +exit 0 diff --git a/bash-5.1/support/bashbug.sh.in b/bash-5.1/support/bashbug.sh.in new file mode 100644 index 0000000..d4b48c9 --- /dev/null +++ b/bash-5.1/support/bashbug.sh.in @@ -0,0 +1,274 @@ +#!/bin/sh - +# +# bashbug - create a bug report and mail it to the bug address +# +# The bug address depends on the release status of the shell. Versions +# with status `devel', `alpha', `beta', or `rc' mail bug reports to +# chet@cwru.edu and, optionally, to bash-testers@cwru.edu. +# Other versions send mail to bug-bash@gnu.org. +# +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# configuration section: +# these variables are filled in by the make target in Makefile +# +MACHINE="@host_cpu@" +OS="@host_os@" +CC="@CC@" +CFLAGS="@CFLAGS@" +RELEASE="@BASHVERS@" +PATCHLEVEL="!PATCHLEVEL!" +RELSTATUS="@RELSTATUS@" +MACHTYPE="@host@" + +PATH=/bin:/usr/bin:/usr/local/bin:$PATH +export PATH + +# Check if TMPDIR is set, default to /tmp +: ${TMPDIR:=/tmp} + +#Securely create a temporary directory for the temporary files +TEMPDIR=$TMPDIR/bbug.$$ +(umask 077 && mkdir "$TEMPDIR") || { + echo "$0: could not create temporary directory" >&2 + exit 1 +} + +TEMPFILE1=$TEMPDIR/bbug1 +TEMPFILE2=$TEMPDIR/bbug2 + +USAGE="Usage: $0 [--help] [--version] [bug-report-email-address]" +VERSTR="GNU bashbug, version ${RELEASE}.${PATCHLEVEL}-${RELSTATUS}" + +do_help= do_version= + +while [ $# -gt 0 ]; do + case "$1" in + --help) shift ; do_help=y ;; + --version) shift ; do_version=y ;; + --) shift ; break ;; + -*) echo "bashbug: ${1}: invalid option" >&2 + echo "$USAGE" >&2 + exit 2 ;; + *) break ;; + esac +done + +if [ -n "$do_version" ]; then + echo "${VERSTR}" + exit 0 +fi + +if [ -n "$do_help" ]; then + echo "${VERSTR}" + echo "${USAGE}" + echo + cat << HERE_EOF +Bashbug is used to send mail to the Bash maintainers +for when Bash doesn't behave like you'd like, or expect. + +Bashbug will start up your editor (as defined by the shell's +EDITOR environment variable) with a preformatted bug report +template for you to fill in. The report will be mailed to the +bug-bash mailing list by default. See the manual for details. + +If you invoke bashbug by accident, just quit your editor without +saving any changes to the template, and no bug report will be sent. +HERE_EOF + exit 0 +fi + +# Figure out how to echo a string without a trailing newline +N=`echo 'hi there\c'` +case "$N" in +*c) n=-n c= ;; +*) n= c='\c' ;; +esac + +BASHTESTERS="bash-testers@cwru.edu" + +case "$RELSTATUS" in +alpha*|beta*|devel*|rc*) BUGBASH=chet@cwru.edu ;; +*) BUGBASH=bug-bash@gnu.org ;; +esac + +case "$RELSTATUS" in +alpha*|beta*|devel*|rc*) + echo "$0: This is a testing release. Would you like your bug report" + echo "$0: to be sent to the bash-testers mailing list?" + echo $n "$0: Send to bash-testers? $c" + read ans + case "$ans" in + y*|Y*) BUGBASH="${BUGBASH},${BASHTESTERS}" ;; + esac ;; +esac + +BUGADDR="${1-$BUGBASH}" + +if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then + if [ -x /usr/bin/editor ]; then + DEFEDITOR=editor + elif [ -x /usr/local/bin/ce ]; then + DEFEDITOR=ce + elif [ -x /usr/local/bin/emacs ]; then + DEFEDITOR=emacs + elif [ -x /usr/contrib/bin/emacs ]; then + DEFEDITOR=emacs + elif [ -x /usr/bin/emacs ]; then + DEFEDITOR=emacs + elif [ -x /usr/bin/xemacs ]; then + DEFEDITOR=xemacs + elif [ -x /usr/bin/nano ]; then + DEFEDITOR=nano + elif [ -x /usr/contrib/bin/jove ]; then + DEFEDITOR=jove + elif [ -x /usr/local/bin/jove ]; then + DEFEDITOR=jove + elif [ -x /usr/bin/vi ]; then + DEFEDITOR=vi + else + echo "$0: No default editor found: attempting to use vi" >&2 + DEFEDITOR=vi + fi +fi + + +: ${EDITOR=$DEFEDITOR} + +: ${USER=${LOGNAME-`whoami`}} + +trap 'rm -rf "$TEMPDIR"; exit 1' 1 2 3 13 15 +trap 'rm -rf "$TEMPDIR"' 0 + +UN= +if (uname) >/dev/null 2>&1; then + UN=`uname -a` +fi + +if [ -f /usr/lib/sendmail ] ; then + RMAIL="/usr/lib/sendmail" + SMARGS="-i -t" +elif [ -f /usr/sbin/sendmail ] ; then + RMAIL="/usr/sbin/sendmail" + SMARGS="-i -t" +else + RMAIL=rmail + SMARGS="$BUGADDR" +fi + +INITIAL_SUBJECT='[50 character or so descriptive subject here (for reference)]' + +cat > "$TEMPFILE1" <> $HOME/dead.bashbug + echo "$0: mail to ${BUGADDR} failed: report saved in $HOME/dead.bashbug" >&2 + echo "$0: please send it manually to ${BUGADDR}" >&2 +} + +exit 0 diff --git a/bash-5.1/support/bashversion.c b/bash-5.1/support/bashversion.c new file mode 100644 index 0000000..4f86b13 --- /dev/null +++ b/bash-5.1/support/bashversion.c @@ -0,0 +1,148 @@ +/* bashversion.c -- Display bash version information. */ + +/* Copyright (C) 2001-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include "stdc.h" + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include "bashansi.h" + +#include "version.h" +#include "conftypes.h" + +#define RFLAG 0x0001 +#define VFLAG 0x0002 +#define MFLAG 0x0004 +#define PFLAG 0x0008 +#define SFLAG 0x0010 +#define LFLAG 0x0020 +#define XFLAG 0x0040 + +extern int optind; +extern char *optarg; + +extern char *dist_version; +extern int patch_level; + +extern char *shell_version_string PARAMS((void)); +extern void show_shell_version PARAMS((int)); + +char *shell_name = "bash"; +char *progname; + +static void +usage() +{ + fprintf(stderr, "%s: usage: %s [-hrvpmlsx]\n", progname, progname); +} + +int +main (argc, argv) + int argc; + char **argv; +{ + int opt, oflags; + char dv[128], *rv; + + if (progname = strrchr (argv[0], '/')) + progname++; + else + progname = argv[0]; + + oflags = 0; + while ((opt = getopt(argc, argv, "hrvmpslx")) != EOF) + { + switch (opt) + { + case 'h': + usage (); + exit (0); + case 'r': + oflags |= RFLAG; /* release */ + break; + case 'v': + oflags |= VFLAG; /* version */ + break; + case 'm': + oflags |= MFLAG; /* machtype */ + break; + case 'p': + oflags |= PFLAG; /* patchlevel */ + break; + case 's': /* short version string */ + oflags |= SFLAG; + break; + case 'l': /* long version string */ + oflags |= LFLAG; + break; + case 'x': /* extended version information */ + oflags |= XFLAG; + break; + default: + usage (); + exit (2); + } + } + + argc -= optind; + argv += optind; + + if (argc > 0) + { + usage (); + exit (2); + } + + /* default behavior */ + if (oflags == 0) + oflags = SFLAG; + + if (oflags & (RFLAG|VFLAG)) + { + strcpy (dv, dist_version); + rv = strchr (dv, '.'); + if (rv) + *rv++ = '\0'; + else + rv = "00"; + } + if (oflags & RFLAG) + printf ("%s\n", dv); + else if (oflags & VFLAG) + printf ("%s\n", rv); + else if (oflags & MFLAG) + printf ("%s\n", MACHTYPE); + else if (oflags & PFLAG) + printf ("%d\n", patch_level); + else if (oflags & SFLAG) + printf ("%s\n", shell_version_string ()); + else if (oflags & LFLAG) + show_shell_version (0); + else if (oflags & XFLAG) + show_shell_version (1); + + exit (0); +} diff --git a/bash-5.1/support/checkbashisms b/bash-5.1/support/checkbashisms new file mode 100755 index 0000000..ea6cc14 --- /dev/null +++ b/bash-5.1/support/checkbashisms @@ -0,0 +1,170 @@ +#! /usr/bin/perl -w + +# This script is essentially copied from /usr/share/lintian/checks/scripts, +# which is: +# Copyright (C) 1998 Richard Braakman +# Copyright (C) 2002 Josip Rodin +# This version is +# Copyright (C) 2003 Julian Gilbey +# +# 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 . +# + +use strict; + +(my $progname = $0) =~ s|.*/||; + +my $usage = <<"EOF"; +Usage: $progname [-n] script ... + or: $progname --help + or: $progname --version +This script performs basic checks for the presence of bashisms +in /bin/sh scripts. +EOF + +my $version = <<"EOF"; +This is $progname, from the Debian devscripts package, version 2.10.7ubuntu5 +This code is copyright 2003 by Julian Gilbey , +based on original code which is copyright 1998 by Richard Braakman +and copyright 2002 by Josip Rodin. +This program comes with ABSOLUTELY NO WARRANTY. +You are free to redistribute this code under the terms of the +GNU General Public License, version 3, or (at your option) any later version. +EOF + +my $opt_echo = 0; + +## +## handle command-line options +## +if (int(@ARGV) == 0 or $ARGV[0] =~ /^(--help|-h)$/) { print $usage; exit 0; } +if (@ARGV and $ARGV[0] =~ /^(--version|-v)$/) { print $version; exit 0; } +if (@ARGV and $ARGV[0] =~ /^(--newline|-n)$/) { $opt_echo = 1; } + + +my $status = 0; + +foreach my $filename (@ARGV) { + if ($filename eq '-n' or $filename eq '--newline') { + next; + } + unless (open C, "$filename") { + warn "cannot open script $filename for reading: $!\n"; + $status |= 2; + next; + } + + my $cat_string = ""; + + while () { + if ($. == 1) { # This should be an interpreter line + if (m,^\#!\s*(\S+),) { + my $interpreter = $1; + if ($interpreter =~ m,/bash$,) { + warn "script $filename is already a bash script; skipping\n"; + $status |= 2; + last; # end this file + } + elsif ($interpreter !~ m,/(sh|ash|dash)$,) { + warn "script $filename does not appear to be a /bin/sh script; skipping\n"; + $status |= 2; + last; + } + } else { + warn "script $filename does not appear to have a \#! interpreter line;\nyou may get strange results\n"; + } + } + + next if m,^\s*\#,; # skip comment lines + chomp; + my $orig_line = $_; + + s/(? q<'function' is useless>, + '(?:^|\s+)select\s+\w+' => q<'select' is not POSIX>, + '(?:^|\s+)source\s+(?:\.\/|\/|\$)[^\s]+' => + q, + '(\[|test|-o|-a)\s*[^\s]+\s+==\s' => + q, + '\s\|\&' => q, + '\$\[\w+\]' => q, + '\$\{\w+\:\d+(?::\d+)?\}' => q<${foo:3[:1]}>, + '\$\{!\w+[@*]\}' => q<${!prefix[*|@]>, + '\$\{!\w+\}' => q<${!name}>, + '\$\{\w+(/.+?){1,2}\}' => q<${parm/?/pat[/str]}>, + '[^\\\]\{([^\s]+?,)+[^\\\}\s]+\}' => + q, + '(?:^|\s+)\w+\[\d+\]=' => q, + '\$\{\#?\w+\[[0-9\*\@]+\]\}' => q, + '(?:^|\s+)(read\s*(?:;|$))' => q, + '\$\(\([A-Za-z]' => q, + 'echo\s+-[e]' => q, + 'exec\s+-[acl]' => q, + '\blet\s' => q, + '\$RANDOM\b' => q<$RANDOM>, + '(? q<'((' should be '$(('>, + ); + + if ($opt_echo) { + $bashisms{'echo\s+-[n]'} = 'q'; + } + + while (my ($re,$expl) = each %bashisms) { + if (m/($re)/) { + $found = 1; + $match = $1; + $explanation = $expl; + last; + } + } + # since this test is ugly, I have to do it by itself + # detect source (.) trying to pass args to the command it runs + if (not $found and m/^\s*(\.\s+[^\s]+\s+([^\s]+))/) { + if ($2 eq '&&' || $2 eq '||') { + # everything is ok + ; + } else { + $found = 1; + $match = $1; + } + } + unless ($found == 0) { + warn "possible bashism in $filename line $. ($explanation):\n$orig_line\n"; + $status |= 1; + } + } + } + + close C; +} + +exit $status; diff --git a/bash-5.1/support/config.guess b/bash-5.1/support/config.guess new file mode 100755 index 0000000..0fc11ed --- /dev/null +++ b/bash-5.1/support/config.guess @@ -0,0 +1,1686 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2020 Free Software Foundation, Inc. + +timestamp='2020-11-07' + +# 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 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 . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + + +me=$(echo "$0" | sed -e 's,.*/,,') + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2020 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039 + { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$driver" + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +fi + +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 + +case "$UNAME_SYSTEM" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + #include + #ifdef __DEFINED_va_list + LIBC=musl + #else + LIBC=gnu + #endif + #endif + EOF + eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')" + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ + echo unknown)) + case "$UNAME_MACHINE_ARCH" in + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,') + endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p') + machine="${arch}${endian}"-unknown + ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "$UNAME_MACHINE_ARCH" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "$UNAME_MACHINE_ARCH" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr") + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "$UNAME_VERSION" in + Debian*) + release='-gnu' + ;; + *) + release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2) + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "$machine-${os}${release}${abi-}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//') + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//') + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//') + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" + exit ;; + *:ekkoBSD:*:*) + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" + exit ;; + *:SolidBSD:*:*) + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" + exit ;; + *:OS108:*:*) + echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:MirBSD:*:*) + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:Sortix:*:*) + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Twizzler:*:*) + echo "$UNAME_MACHINE"-unknown-twizzler + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox + exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}') + ;; + *5.*) + UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}') + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1) + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)" + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix"$UNAME_RELEASE" + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "$( (/bin/universe) 2>/dev/null)" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case $(/usr/bin/uname -p) in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')" + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')" + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux"$UNAME_RELEASE" + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" + exit ;; + 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 ;; + sun4*:SunOS:*:*) + case "$(/usr/bin/arch -k)" in + Series*|S4*) + UNAME_RELEASE=$(uname -v) + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')" + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos"$UNAME_RELEASE" + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null) + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case "$(/bin/arch)" in + sun3) + echo m68k-sun-sunos"$UNAME_RELEASE" + ;; + sun4) + echo sparc-sun-sunos"$UNAME_RELEASE" + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos"$UNAME_RELEASE" + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint"$UNAME_RELEASE" + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint"$UNAME_RELEASE" + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint"$UNAME_RELEASE" + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten"$UNAME_RELEASE" + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten"$UNAME_RELEASE" + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix"$UNAME_RELEASE" + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix"$UNAME_RELEASE" + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix"$UNAME_RELEASE" + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') && + SYSTEM_NAME=$("$dummy" "$dummyarg") && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos"$UNAME_RELEASE" + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=$(/usr/bin/uname -p) + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + echo m88k-dg-dgux"$UNAME_RELEASE" + else + echo m88k-dg-dguxbcs"$UNAME_RELEASE" + fi + else + echo i586-dg-dgux"$UNAME_RELEASE" + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')" + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'$(uname -s)'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=$(/usr/bin/oslevel) + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }') + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if test -x /usr/bin/lslpp ; then + IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/) + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//') + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if test -x /usr/bin/getconf; then + sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null) + sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null) + case "$sc_cpu_version" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "$sc_kernel_bits" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy") + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//') + echo ia64-hp-hpux"$HPUX_REV" + exit ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + 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 if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + echo "$UNAME_MACHINE"-unknown-osf1mk + else + echo "$UNAME_MACHINE"-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz) + FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///') + FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/') + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///') + FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/') + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:BSD/OS:*:*) + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + exit ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=$(uname -p) + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi + else + echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf + fi + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=$(/usr/bin/uname -p) + case "$UNAME_PROCESSOR" in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')" + exit ;; + i*:CYGWIN*:*) + echo "$UNAME_MACHINE"-pc-cygwin + exit ;; + *:MINGW64*:*) + echo "$UNAME_MACHINE"-pc-mingw64 + exit ;; + *:MINGW*:*) + echo "$UNAME_MACHINE"-pc-mingw32 + exit ;; + *:MSYS*:*) + echo "$UNAME_MACHINE"-pc-msys + exit ;; + i*:PW*:*) + echo "$UNAME_MACHINE"-pc-pw32 + exit ;; + *:Interix*:*) + case "$UNAME_MACHINE" in + x86) + echo i586-pc-interix"$UNAME_RELEASE" + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix"$UNAME_RELEASE" + exit ;; + IA64) + echo ia64-unknown-interix"$UNAME_RELEASE" + exit ;; + esac ;; + i*:UWIN*:*) + echo "$UNAME_MACHINE"-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-pc-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" + exit ;; + *:GNU:*:*) + # the GNU system + echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')" + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC" + exit ;; + *:Minix:*:*) + echo "$UNAME_MACHINE"-unknown-minix + exit ;; + aarch64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + alpha:Linux:*:*) + case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + else + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + cris:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + crisv32:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + e2k:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + frv:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + hexagon:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:Linux:*:*) + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + exit ;; + ia64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + k1om:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m32r*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m68*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-"$LIBC" + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-"$LIBC" + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-"$LIBC" + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-"$LIBC" + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-"$LIBC" + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-"$LIBC" + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-"$LIBC" + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" + exit ;; + sh64*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sh*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + tile*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + vax:Linux:*:*) + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" + exit ;; + x86_64:Linux:*:*) + set_cc_for_build + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_X32 >/dev/null + then + LIBCABI="$LIBC"x32 + fi + fi + echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" + exit ;; + xtensa*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo "$UNAME_MACHINE"-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo "$UNAME_MACHINE"-unknown-stop + exit ;; + i*86:atheos:*:*) + echo "$UNAME_MACHINE"-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo "$UNAME_MACHINE"-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos"$UNAME_RELEASE" + exit ;; + i*86:*DOS:*:*) + echo "$UNAME_MACHINE"-pc-msdosdjgpp + exit ;; + i*86:*:4.*:*) + UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//') + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case $(/bin/uname -X | grep "^Machine") in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=$(sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //')) + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos"$UNAME_RELEASE" + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos"$UNAME_RELEASE" + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv"$UNAME_RELEASE" + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=$( (uname -p) 2>/dev/null) + echo "$UNAME_MACHINE"-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo "$UNAME_MACHINE"-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux"$UNAME_RELEASE" + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + echo mips-nec-sysv"$UNAME_RELEASE" + else + echo mips-unknown-sysv"$UNAME_RELEASE" + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux"$UNAME_RELEASE" + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux"$UNAME_RELEASE" + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux"$UNAME_RELEASE" + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux"$UNAME_RELEASE" + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux"$UNAME_RELEASE" + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Rhapsody:*:*) + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" + exit ;; + arm64:Darwin:*:*) + echo aarch64-apple-darwin"$UNAME_RELEASE" + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=$(uname -p) + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=$(uname -p) + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk"$UNAME_RELEASE" + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + # shellcheck disable=SC2154 + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo "$UNAME_MACHINE"-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux"$UNAME_RELEASE" + exit ;; + *:DragonFly:*:*) + echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')" + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=$( (uname -p) 2>/dev/null) + case "$UNAME_MACHINE" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')" + exit ;; + i*86:rdos:*:*) + echo "$UNAME_MACHINE"-pc-rdos + exit ;; + i*86:AROS:*:*) + echo "$UNAME_MACHINE"-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo "$UNAME_MACHINE"-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; + *:Unleashed:*:*) + echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" + exit ;; +esac + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null); + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&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) +/bin/uname -X = $( (/bin/uname -X) 2>/dev/null) + +hostinfo = $( (hostinfo) 2>/dev/null) +/bin/universe = $( (/bin/universe) 2>/dev/null) +/usr/bin/arch -k = $( (/usr/bin/arch -k) 2>/dev/null) +/bin/arch = $( (/bin/arch) 2>/dev/null) +/usr/bin/oslevel = $( (/usr/bin/oslevel) 2>/dev/null) +/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null) + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/bash-5.1/support/config.rpath b/bash-5.1/support/config.rpath new file mode 100755 index 0000000..fc5913d --- /dev/null +++ b/bash-5.1/support/config.rpath @@ -0,0 +1,684 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2018 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's _LT_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + ecc*) + wl='-Wl,' + ;; + icc* | ifort*) + wl='-Wl,' + ;; + lf95*) + wl='-Wl,' + ;; + nagfor*) + wl='-Wl,-Wl,,' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + xl* | bgxl* | bgf* | mpixl*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + wl= + ;; + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + newsos6) + ;; + *nto* | *qnx*) + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + wl='-Qoption ld ' + ;; + *) + wl='-Wl,' + ;; + esac + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's _LT_LINKER_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32* | cegcc*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + haiku*) + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then + : + else + ld_shlibs=no + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd2.[01]*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + *nto* | *qnx*) + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix[4-9]*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + case "$host_cpu" in + powerpc*) + library_names_spec='$libname$shrext' ;; + m68k) + library_names_spec='$libname.a' ;; + esac + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32* | cegcc*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd[23].*) + library_names_spec='$libname$shrext$versuffix' + ;; + freebsd* | dragonfly*) + library_names_spec='$libname$shrext' + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + haiku*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + *nto* | *qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + tpf*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=$(echo "$0" | sed -e 's,.*/,,') + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2020 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +# shellcheck disable=SC2162 +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova*) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + basic_os= + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + basic_os=bsd + ;; + convex-c2) + basic_machine=c2-convex + basic_os=bsd + ;; + convex-c32) + basic_machine=c32-convex + basic_os=bsd + ;; + convex-c34) + basic_machine=c34-convex + basic_os=bsd + ;; + convex-c38) + basic_machine=c38-convex + basic_os=bsd + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + cpu=m68k + vendor=motorola + ;; + dpx2*) + cpu=m68k + vendor=bull + basic_os=sysv3 + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=$(echo "$1" | sed -e 's/86.*/86/') + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=$(echo "$1" | sed -e 's/86.*/86/') + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=$(echo "$1" | sed -e 's/86.*/86/') + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=$(echo "$1" | sed -e 's/86.*/86/') + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $basic_os in + openstep*) + ;; + nextstep*) + ;; + ns2*) + basic_os=nextstep2 + ;; + *) + basic_os=nextstep3 + ;; + esac + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=$(echo "$basic_machine" | sed 's/-.*//') + ;; + + *-*) + # shellcheck disable=SC2162 + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x$basic_os != x +then + +# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just +# set os. +case $basic_os in + gnu/linux*) + kernel=linux + os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|') + ;; + os2-emx) + kernel=os2 + os=$(echo $basic_os | sed -e 's|os2-emx|emx|') + ;; + nto-qnx*) + kernel=nto + os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|') + ;; + *-*) + # shellcheck disable=SC2162 + IFS="-" read kernel os <&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os in + linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) + ;; + uclinux-uclibc* ) + ;; + -dietlibc* | -newlib* | -musl* | -uclibc* ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; + nto-qnx*) + ;; + os2-emx) + ;; + *-eabi* | *-gnueabi*) + ;; + -*) + # Blank kernel with real OS is always fine. + ;; + *-*) + echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + exit 1 + ;; +esac + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor-${kernel:+$kernel-}$os" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/bash-5.1/support/fixlinks b/bash-5.1/support/fixlinks new file mode 100755 index 0000000..73b0fa3 --- /dev/null +++ b/bash-5.1/support/fixlinks @@ -0,0 +1,89 @@ +#! /bin/sh +# +# fixlinks - make symlinks in the bash source tree so that there is +# exactly one version of any given source file. +# +# 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 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 . +# + +SRCDIR=. +while [ $# -gt 0 ]; do + case "$1" in + -s) shift; SRCDIR=$1 ;; + -u) unfix=yes ;; + -h) hardlinks=yes ;; + -*) echo "$0: $1: bad option" 1>&2 + echo "$0: usage: $0 [-hu] [-s srcdir] [linkmap]" 1>&2 + exit 1;; + *) break ;; + esac + shift +done + +if [ ! -d $SRCDIR/builtins ]; then + echo "$0: must be run with valid -s argument or from source directory" 1>&2 + exit 1 +fi + +if [ $# -eq 0 ]; then + linkfile=$SRCDIR/support/SYMLINKS +else + linkfile=$1 +fi + +if [ ! -f "$linkfile" ]; then + echo "$0: symlink map file \`$linkfile' does not exist" + exit 1 +fi + +rm_ltmp=false +LINKTEMP=`mktemp -t linktmp.XXXXXXXX 2>/dev/null` +if [ -z "$LINKTEMP" ]; then + : ${TMPDIR:=/tmp} + LINKTEMP=${TMPDIR}/linktmp.$$ + rm_ltmp=true +fi + +$rm_ltmp && rm -f ${LINKTEMP} +# if the user specified hard links, then do that. otherwise, try to use +# symlinks if they're present +if [ -n "$hardlinks" ]; then + LN=ln +elif (ln -s /dev/null ${LINKTEMP}) >/dev/null 2>&1; then + LN="ln -s" +else + LN=ln +fi +rm -f ${LINKTEMP} + +while read name target +do + case "$name" in + \#*) continue;; + esac + + rm -f $name + case "$unfix" in + yes) dirname=`expr "$name" ':' '^\(.*\)/[^/]*'` + [ -z "$dirname" ] && dirname=. + cp $dirname/$target $name + echo $target copied to $name ;; + *) $LN $target $name ; echo "$name -> $target" ;; + esac + +done < $linkfile + +exit 0 diff --git a/bash-5.1/support/install.sh b/bash-5.1/support/install.sh new file mode 100755 index 0000000..0cac004 --- /dev/null +++ b/bash-5.1/support/install.sh @@ -0,0 +1,247 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5. +# +# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $ +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# This script is compatible with the BSD install script, but was written +# from scratch. +# + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +tranformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/bash-5.1/support/man2html.c b/bash-5.1/support/man2html.c new file mode 100644 index 0000000..e6f441b --- /dev/null +++ b/bash-5.1/support/man2html.c @@ -0,0 +1,4088 @@ +/* + * This program was written by Richard Verhoeven (NL:5482ZX35) + * at the Eindhoven University of Technology. Email: rcb5@win.tue.nl + * + * Permission is granted to distribute, modify and use this program as long + * as this comment is not removed or changed. + * + * THIS IS A MODIFIED VERSION. IT WAS MODIFIED BY chet@po.cwru.edu FOR + * USE BY BASH. + */ + +/* + * man2html will add links to the converted manpages. The function add_links + * is used for that. At the moment it will add links as follows, where + * indicates what should match to start with: + * ^^^ + * Recognition Item Link + * ---------------------------------------------------------- + * name(*) Manpage ../man?/name.* + * ^ + * name@hostname Email address mailto:name@hostname + * ^ + * method://string URL method://string + * ^^^ + * www.host.name WWW server http://www.host.name + * ^^^^ + * ftp.host.name FTP server ftp://ftp.host.name + * ^^^^ + * Include file file:/usr/include/file.h + * ^^^ + * + * Since man2html does not check if manpages, hosts or email addresses exist, + * some links might not work. For manpages, some extra checks are performed + * to make sure not every () pair creates a link. Also out of date pages + * might point to incorrect places. + * + * The program will not allow users to get system specific files, such as + * /etc/passwd. It will check that "man" is part of the specified file and + * that "/../" isn't. Even if someone manages to get such file, man2html will + * handle it like a manpage and will usually not produce any output (or crash). + * + * If you find any bugs when normal manpages are converted, please report + * them to me (rcb5@win.tue.nl) after you have checked that man(1) can handle + * the manpage correct. + * + * Known bugs and missing features: + * + * * Equations are not converted at all. + * * Tables are converted but some features are not possible in html. + * * The tabbing environment is converted by counting characters and adding + * spaces. This might go wrong (outside

)
+ *  * Some pages look better if man2html works in troff mode, especially pages
+ *    with tables. You can decide at compile time which made you want to use.
+ *
+ *    -DNROFF=0     troff mode
+ *    -DNROFF=1     nroff mode   (default)
+ *
+ *    if you install both modes, you should compile with the correct CGIBASE.
+ *  * Some manpages rely on the fact that troff/nroff is used to convert
+ *    them and use features which are not descripted in the man manpages.
+ *    (definitions, calculations, conditionals, requests). I can't guarantee
+ *    that all these features work on all manpages. (I didn't have the
+ *    time to look through all the available manpages.)
+ */
+#ifdef HAVE_CONFIG_H
+#include 
+#endif
+
+#define NROFF 0
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#define NULL_TERMINATED(n) ((n) + 1)
+
+#define HUGE_STR_MAX  10000
+#define LARGE_STR_MAX 2000
+#define MED_STR_MAX   500
+#define SMALL_STR_MAX 100
+#define TINY_STR_MAX  10
+
+#define MAX_MAN_PATHS 100	/* Max number of directories */
+#define MAX_ZCATS     10	/* Max number of zcat style programs */
+#define MAX_WORDLIST  100
+
+#ifndef EXIT_SUCCESS
+#define EXIT_SUCCESS 0
+#endif
+#ifndef EXIT_FAILURE
+#define EXIT_FAILURE 1
+#endif
+#ifndef EXIT_USAGE
+#define EXIT_USAGE 2
+#endif
+
+static char location_base[NULL_TERMINATED(MED_STR_MAX)] = "";
+
+static char th_page_and_sec[128] = { '\0' };
+static char th_datestr[128] = { '\0' };
+static char th_version[128] = { '\0' };
+
+char   *signature = "
\nThis document was created by man2html from %s.
\nTime: %s\n"; + +/* timeformat for signature */ +#define TIMEFORMAT "%d %B %Y %T %Z" + +char *manpage; + +/* BSD mandoc Bl/El lists to HTML list types */ +#define BL_DESC_LIST 1 +#define BL_BULLET_LIST 2 +#define BL_ENUM_LIST 4 + +/* BSD mandoc Bd/Ed example(?) blocks */ +#define BD_LITERAL 1 +#define BD_INDENT 2 + +#ifndef HAVE_STRERROR +static char * +strerror(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 */ + +static char * +strgrow(char *old, int len) +{ + char *new = realloc(old, (strlen(old) + len + 1) * sizeof(char)); + + if (!new) { + fprintf(stderr, "man2html: out of memory"); + exit(EXIT_FAILURE); + } + return new; +} + +static char * +stralloc(int len) +{ + /* allocate enough for len + NULL */ + char *new = malloc((len + 1) * sizeof(char)); + + if (!new) { + fprintf(stderr, "man2html: out of memory"); + exit(EXIT_FAILURE); + } + return new; +} + +void * +xmalloc (size_t size) +{ + void *ret; + + ret = malloc (size); + if (ret == 0) { + fprintf(stderr, "man2html: out of memory"); + exit(EXIT_FAILURE); + } + return ret; +} + +/* + * Some systems don't have strdup so lets use our own - which can also + * check for out of memory. + */ +static char * +strduplicate(char *from) +{ + char *new = stralloc(strlen(from)); + + strcpy(new, from); + return new; +} + +/* Assumes space for n plus a null */ +static char * +strmaxcpy(char *to, char *from, int n) +{ + int len = strlen(from); + + strncpy(to, from, n); + to[(len <= n) ? len : n] = '\0'; + return to; +} + +static char * +strmaxcat(char *to, char *from, int n) +{ + int to_len = strlen(to); + + if (to_len < n) { + int from_len = strlen(from); + int cp = (to_len + from_len <= n) ? from_len : n - to_len; + + strncpy(to + to_len, from, cp); + to[to_len + cp] = '\0'; + } + return to; +} + +/* Assumes space for limit plus a null */ +static char * +strlimitcpy(char *to, char *from, int n, int limit) +{ + int len = n > limit ? limit : n; + + strmaxcpy(to, from, len); + to[len] = '\0'; + return to; +} + +/* + * takes string and escapes all metacharacters. should be used before + * including string in system() or similar call. + */ +static char * +escape_input(char *str) +{ + int i, j = 0; + static char new[NULL_TERMINATED(MED_STR_MAX)]; + + if (strlen(str) * 2 + 1 > MED_STR_MAX) { + fprintf(stderr, + "man2html: escape_input - str too long:\n%-80s...\n", + str); + exit(EXIT_FAILURE); + } + for (i = 0; i < strlen(str); i++) { + if (!(((str[i] >= 'A') && (str[i] <= 'Z')) || + ((str[i] >= 'a') && (str[i] <= 'z')) || + ((str[i] >= '0') && (str[i] <= '9')))) { + new[j] = '\\'; + j++; + } + new[j] = str[i]; + j++; + } + new[j] = '\0'; + return new; +} + +static void +usage(void) +{ + fprintf(stderr, "man2html: usage: man2html filename\n"); +} + + + +/* + * below this you should not change anything unless you know a lot + * about this program or about troff. + */ + +typedef struct STRDEF STRDEF; +struct STRDEF { + int nr, slen; + char *st; + STRDEF *next; +}; + +typedef struct INTDEF INTDEF; +struct INTDEF { + int nr; + int val; + int incr; + INTDEF *next; +}; + +static char NEWLINE[2] = "\n"; +static char idxlabel[6] = "ixAAA"; + +#define INDEXFILE "/tmp/manindex.list" + +static char *fname; +static FILE *idxfile; + +static STRDEF *chardef, *strdef, *defdef; +static INTDEF *intdef; + +#define V(A,B) ((A)*256+(B)) + +static INTDEF standardint[] = { + {V('n', ' '), NROFF, 0, NULL}, + {V('t', ' '), 1 - NROFF, 0, NULL}, + {V('o', ' '), 1, 0, NULL}, + {V('e', ' '), 0, 0, NULL}, + {V('.', 'l'), 70, 0, NULL}, + {V('.', '$'), 0, 0, NULL}, + {V('.', 'A'), NROFF, 0, NULL}, + {V('.', 'T'), 1 - NROFF, 0, NULL}, + {V('.', 'V'), 1, 0, NULL}, /* the me package tests for this */ +{0, 0, 0, NULL}}; + +static STRDEF standardstring[] = { + {V('R', ' '), 1, "®", NULL}, + {V('l', 'q'), 2, "``", NULL}, + {V('r', 'q'), 2, "''", NULL}, + {0, 0, NULL, NULL} +}; + + +static STRDEF standardchar[] = { + {V('*', '*'), 1, "*", NULL}, + {V('*', 'A'), 1, "A", NULL}, + {V('*', 'B'), 1, "B", NULL}, + {V('*', 'C'), 2, "Xi", NULL}, + {V('*', 'D'), 5, "Delta", NULL}, + {V('*', 'E'), 1, "E", NULL}, + {V('*', 'F'), 3, "Phi", NULL}, + {V('*', 'G'), 5, "Gamma", NULL}, + {V('*', 'H'), 5, "Theta", NULL}, + {V('*', 'I'), 1, "I", NULL}, + {V('*', 'K'), 1, "K", NULL}, + {V('*', 'L'), 6, "Lambda", NULL}, + {V('*', 'M'), 1, "M", NULL}, + {V('*', 'N'), 1, "N", NULL}, + {V('*', 'O'), 1, "O", NULL}, + {V('*', 'P'), 2, "Pi", NULL}, + {V('*', 'Q'), 3, "Psi", NULL}, + {V('*', 'R'), 1, "P", NULL}, + {V('*', 'S'), 5, "Sigma", NULL}, + {V('*', 'T'), 1, "T", NULL}, + {V('*', 'U'), 1, "Y", NULL}, + {V('*', 'W'), 5, "Omega", NULL}, + {V('*', 'X'), 1, "X", NULL}, + {V('*', 'Y'), 1, "H", NULL}, + {V('*', 'Z'), 1, "Z", NULL}, + {V('*', 'a'), 5, "alpha", NULL}, + {V('*', 'b'), 4, "beta", NULL}, + {V('*', 'c'), 2, "xi", NULL}, + {V('*', 'd'), 5, "delta", NULL}, + {V('*', 'e'), 7, "epsilon", NULL}, + {V('*', 'f'), 3, "phi", NULL}, + {V('*', 'g'), 5, "gamma", NULL}, + {V('*', 'h'), 5, "theta", NULL}, + {V('*', 'i'), 4, "iota", NULL}, + {V('*', 'k'), 5, "kappa", NULL}, + {V('*', 'l'), 6, "lambda", NULL}, + {V('*', 'm'), 1, "µ", NULL}, + {V('*', 'n'), 2, "nu", NULL}, + {V('*', 'o'), 1, "o", NULL}, + {V('*', 'p'), 2, "pi", NULL}, + {V('*', 'q'), 3, "psi", NULL}, + {V('*', 'r'), 3, "rho", NULL}, + {V('*', 's'), 5, "sigma", NULL}, + {V('*', 't'), 3, "tau", NULL}, + {V('*', 'u'), 7, "upsilon", NULL}, + {V('*', 'w'), 5, "omega", NULL}, + {V('*', 'x'), 3, "chi", NULL}, + {V('*', 'y'), 3, "eta", NULL}, + {V('*', 'z'), 4, "zeta", NULL}, + {V('t', 's'), 5, "sigma", NULL}, + {V('+', '-'), 1, "±", NULL}, + {V('1', '2'), 1, "½", NULL}, + {V('1', '4'), 1, "¼", NULL}, + {V('3', '4'), 1, "¾", NULL}, + {V('F', 'i'), 3, "ffi", NULL}, + {V('F', 'l'), 3, "ffl", NULL}, + {V('a', 'a'), 1, "´", NULL}, + {V('a', 'p'), 1, "~", NULL}, + {V('b', 'r'), 1, "|", NULL}, + {V('b', 'u'), 1, "*", NULL}, + {V('b', 'v'), 1, "|", NULL}, + {V('c', 'i'), 1, "o", NULL}, + {V('c', 'o'), 1, "©", NULL}, + {V('c', 't'), 1, "¢", NULL}, + {V('d', 'e'), 1, "°", NULL}, + {V('d', 'g'), 1, "+", NULL}, + {V('d', 'i'), 1, "÷", NULL}, + {V('e', 'm'), 1, "-", NULL}, + {V('e', 'm'), 3, "---", NULL}, + {V('e', 'q'), 1, "=", NULL}, + {V('e', 's'), 1, "Ø", NULL}, + {V('f', 'f'), 2, "ff", NULL}, + {V('f', 'i'), 2, "fi", NULL}, + {V('f', 'l'), 2, "fl", NULL}, + {V('f', 'm'), 1, "´", NULL}, + {V('g', 'a'), 1, "`", NULL}, + {V('h', 'y'), 1, "-", NULL}, + {V('l', 'c'), 2, "|¯", NULL}, + {V('l', 'f'), 2, "|_", NULL}, + {V('l', 'k'), 1, "{", NULL}, + {V('m', 'i'), 1, "-", NULL}, + {V('m', 'u'), 1, "×", NULL}, + {V('n', 'o'), 1, "¬", NULL}, + {V('o', 'r'), 1, "|", NULL}, + {V('p', 'l'), 1, "+", NULL}, + {V('r', 'c'), 2, "¯|", NULL}, + {V('r', 'f'), 2, "_|", NULL}, + {V('r', 'g'), 1, "®", NULL}, + {V('r', 'k'), 1, "}", NULL}, + {V('r', 'n'), 1, "¯", NULL}, + {V('r', 'u'), 1, "_", NULL}, + {V('s', 'c'), 1, "§", NULL}, + {V('s', 'l'), 1, "/", NULL}, + {V('s', 'q'), 2, "[]", NULL}, + {V('u', 'l'), 1, "_", NULL}, + {0, 0, NULL, NULL} +}; + +/* default: print code */ + + +static char eqndelimopen = 0, eqndelimclose = 0; +static char escapesym = '\\', nobreaksym = '\'', controlsym = '.', fieldsym = 0, padsym = 0; + +static char *buffer = NULL; +static int buffpos = 0, buffmax = 0; +static int scaninbuff = 0; +static int itemdepth = 0; +static int dl_set[20] = {0}; +static int still_dd = 0; +static int tabstops[20] = {8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96}; +static int maxtstop = 12; +static int curpos = 0; + +static char *scan_troff(char *c, int san, char **result); +static char *scan_troff_mandoc(char *c, int san, char **result); + +static char **argument = NULL; + +static char charb[TINY_STR_MAX]; + +static void +print_sig(void) +{ + char datbuf[NULL_TERMINATED(MED_STR_MAX)]; + struct tm *timetm; + time_t clock; + + datbuf[0] = '\0'; + clock = time(NULL); + timetm = localtime(&clock); + strftime(datbuf, MED_STR_MAX, TIMEFORMAT, timetm); + printf(signature, manpage, datbuf); +} + +static char * +expand_char(int nr) +{ + STRDEF *h; + + h = chardef; + if (!nr) + return NULL; + while (h) + if (h->nr == nr) { + curpos += h->slen; + return h->st; + } else + h = h->next; + charb[0] = nr / 256; + charb[1] = nr % 256; + charb[2] = '\0'; + if (charb[0] == '<') { /* Fix up <= */ + charb[4] = charb[1]; + strncpy(charb, "<", 4); + charb[5] = '\0'; + } + curpos += 2; + return charb; +} + +static char * +expand_string(int nr) +{ + STRDEF *h = strdef; + + if (!nr) + return NULL; + while (h) + if (h->nr == nr) { + curpos += h->slen; + return h->st; + } else + h = h->next; + return NULL; +} + +static char * +read_man_page(char *filename) +{ + char *man_buf = NULL; + int i; + FILE *man_stream = NULL; + struct stat stbuf; + int buf_size; + + if (stat(filename, &stbuf) == -1) + return NULL; + + buf_size = stbuf.st_size; + man_buf = stralloc(buf_size + 5); + man_stream = fopen(filename, "r"); + if (man_stream) { + man_buf[0] = '\n'; + if (fread(man_buf + 1, 1, buf_size, man_stream) == buf_size) { + man_buf[buf_size] = '\n'; + man_buf[buf_size + 1] = man_buf[buf_size + 2] = '\0'; + } else { + free(man_buf); + man_buf = NULL; + } + fclose(man_stream); + } + return man_buf; +} + + +static char outbuffer[NULL_TERMINATED(HUGE_STR_MAX)]; +static int obp = 0; +static int no_newline_output = 0; +static int newline_for_fun = 0; +static int output_possible = 0; +static int out_length = 0; + +/* + * Add the links to the output. At the moment the following are + * recognized: + * +#if 0 + * name(*) -> ../man?/name.* +#endif + * method://string -> method://string + * www.host.name -> http://www.host.name + * ftp.host.name -> ftp://ftp.host.name + * name@host -> mailto:name@host + * -> file:/usr/include/name.h (guess) + * + * Other possible links to add in the future: + * + * /dir/dir/file -> file:/dir/dir/file + */ +static void +add_links(char *c) +{ + int i, j, nr; + char *f, *g, *h; + char *idtest[6]; /* url, mailto, www, ftp, manpage */ + + out_length += strlen(c); + /* search for (section) */ + nr = 0; + idtest[0] = strstr(c + 1, "://"); + idtest[1] = strchr(c + 1, '@'); + idtest[2] = strstr(c, "www."); + idtest[3] = strstr(c, "ftp."); +#if 0 + idtest[4] = strchr(c + 1, '('); +#else + idtest[4] = 0; +#endif + idtest[5] = strstr(c + 1, ".h>"); + for (i = 0; i < 6; i++) + nr += (idtest[i] != NULL); + while (nr) { + j = -1; + for (i = 0; i < 6; i++) + if (idtest[i] && (j < 0 || idtest[i] < idtest[j])) + j = i; + switch (j) { + case 5: /* */ + f = idtest[5]; + h = f + 2; + g = f; + while (g > c && g[-1] != ';') + g--; + if (g != c) { + char t; + + t = *g; + *g = '\0'; + fputs(c, stdout); + *g = t; + *h = '\0'; + printf("
%s>", g, g); + c = f + 6; + } else { + f[5] = '\0'; + fputs(c, stdout); + f[5] = ';'; + c = f + 5; + } + break; + case 4: /* manpage */ +#if 0 + f = idtest[j]; + /* check section */ + g = strchr(f, ')'); + if (g && f - g < 6 && (isalnum(f[-1]) || f[-1] == '>') && + ((isdigit(f[1]) && f[1] != '0' && + (f[2] == ')' || (isalpha(f[2]) && f[3] == ')') || f[2] == 'X')) || + (f[2] == ')' && (f[1] == 'n' || f[1] == 'l')))) { + /* this might be a link */ + h = f - 1; + /* skip html makeup */ + while (h > c && *h == '>') { + while (h != c && *h != '<') + h--; + if (h != c) + h--; + } + if (isalnum(*h)) { + char t, sec, subsec, *e; + + e = h + 1; + sec = f[1]; + subsec = f[2]; + if ((subsec == 'X' && f[3] != ')') || subsec == ')') + subsec = '\0'; + while (h > c && (isalnum(h[-1]) || h[-1] == '_' || + h[-1] == '-' || h[-1] == '.')) + h--; + t = *h; + *h = '\0'; + fputs(c, stdout); + *h = t; + t = *e; + *e = '\0'; + if (subsec) + printf("%s", + sec, h, sec, tolower(subsec), h); + else + printf("%s", + sec, h, sec, h); + *e = t; + c = e; + } + } + *f = '\0'; + fputs(c, stdout); + *f = '('; + idtest[4] = f - 1; + c = f; +#endif + break; /* manpage */ + case 3: /* ftp */ + case 2: /* www */ + g = f = idtest[j]; + while (*g && (isalnum(*g) || *g == '_' || *g == '-' || *g == '+' || + *g == '.')) + g++; + if (g[-1] == '.') + g--; + if (g - f > 4) { + char t; + + t = *f; + *f = '\0'; + fputs(c, stdout); + *f = t; + t = *g; + *g = '\0'; + printf("%s", (j == 3 ? "ftp" : "http"), + f, f); + *g = t; + c = g; + } else { + f[3] = '\0'; + fputs(c, stdout); + c = f + 3; + f[3] = '.'; + } + break; + case 1: /* mailto */ + g = f = idtest[1]; + while (g > c && (isalnum(g[-1]) || g[-1] == '_' || g[-1] == '-' || + g[-1] == '+' || g[-1] == '.' || g[-1] == '%')) + g--; + h = f + 1; + while (*h && (isalnum(*h) || *h == '_' || *h == '-' || *h == '+' || + *h == '.')) + h++; + if (*h == '.') + h--; + if (h - f > 4 && f - g > 1) { + char t; + + t = *g; + *g = '\0'; + fputs(c, stdout); + *g = t; + t = *h; + *h = '\0'; + printf("%s", g, g); + *h = t; + c = h; + } else { + *f = '\0'; + fputs(c, stdout); + *f = '@'; + idtest[1] = c; + c = f; + } + break; + case 0: /* url */ + g = f = idtest[0]; + while (g > c && isalpha(g[-1]) && islower(g[-1])) + g--; + h = f + 3; + while (*h && !isspace(*h) && *h != '<' && *h != '>' && *h != '"' && + *h != '&') + h++; + if (f - g > 2 && f - g < 7 && h - f > 3) { + char t; + + t = *g; + *g = '\0'; + fputs(c, stdout); + *g = t; + t = *h; + *h = '\0'; + printf("%s", g, g); + *h = t; + c = h; + } else { + f[1] = '\0'; + fputs(c, stdout); + f[1] = '/'; + c = f + 1; + } + break; + default: + break; + } + nr = 0; + if (idtest[0] && idtest[0] < c) + idtest[0] = strstr(c + 1, "://"); + if (idtest[1] && idtest[1] < c) + idtest[1] = strchr(c + 1, '@'); + if (idtest[2] && idtest[2] < c) + idtest[2] = strstr(c, "www."); + if (idtest[3] && idtest[3] < c) + idtest[3] = strstr(c, "ftp."); + if (idtest[4] && idtest[4] < c) + idtest[4] = strchr(c + 1, '('); + if (idtest[5] && idtest[5] < c) + idtest[5] = strstr(c + 1, ".h>"); + for (i = 0; i < 6; i++) + nr += (idtest[i] != NULL); + } + fputs(c, stdout); +} + +static int current_font = 0; +static int current_size = 0; +static int fillout = 1; + +static void +out_html(char *c) +{ + if (!c) + return; + if (no_newline_output) { + int i = 0; + + no_newline_output = 1; + while (c[i]) { + if (!no_newline_output) + c[i - 1] = c[i]; + if (c[i] == '\n') + no_newline_output = 1; + i++; + } + if (!no_newline_output) + c[i - 1] = 0; + } + if (scaninbuff) { + while (*c) { + if (buffpos >= buffmax) { + char *h; + + h = realloc(buffer, buffmax * 2); + if (!h) + return; + buffer = h; + buffmax *= 2; + } + buffer[buffpos++] = *c++; + } + } else if (output_possible) { + while (*c) { + outbuffer[obp++] = *c; + if (*c == '\n' || obp > HUGE_STR_MAX) { + outbuffer[obp] = '\0'; + add_links(outbuffer); + obp = 0; + } + c++; + } + } +} + +#define FO0 "" +#define FC0 "" +#define FO1 "" +#define FC1 "" +#define FO2 "" +#define FC2 "" +#define FO3 "" +#define FC3 "" + +static char *switchfont[16] = { + "", FC0 FO1, FC0 FO2, FC0 FO3, + FC1 FO0, "", FC1 FO2, FC1 FO3, + FC2 FO0, FC2 FO1, "", FC2 FO3, + FC3 FO0, FC3 FO1, FC3 FO2, "" +}; + +static char * +change_to_font(int nr) +{ + int i; + + switch (nr) { + case '0': + nr++; + case '1': + case '2': + case '3': + case '4': + nr = nr - '1'; + break; + case V('C', 'W'): + nr = 3; + break; + case 'L': + nr = 3; + break; + case 'B': + nr = 2; + break; + case 'I': + nr = 1; + break; + case 'P': + case 'R': + nr = 0; + break; + case 0: + case 1: + case 2: + case 3: + break; + default: + nr = 0; + break; + } + i = current_font * 4 + nr % 4; + current_font = nr % 4; + return switchfont[i]; +} + +static char sizebuf[200]; + +static char * +change_to_size(int nr) +{ + int i; + + switch (nr) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + nr = nr - '0'; + break; + case '\0': + break; + default: + nr = current_size + nr; + if (nr > 9) + nr = 9; + if (nr < -9) + nr = -9; + break; + } + if (nr == current_size) + return ""; + i = current_font; + sizebuf[0] = '\0'; + strcat(sizebuf, change_to_font(0)); + if (current_size) + strcat(sizebuf, ""); + current_size = nr; + if (nr) { + int l; + + strcat(sizebuf, "nr != i) + intd = intd->next; + if (intd) { + intd->val = intd->val + j * intd->incr; + intresult = intd->val; + } else { + switch (i) { + case V('.', 's'): + intresult = current_size; + break; + case V('.', 'f'): + intresult = current_font; + break; + default: + intresult = 0; + break; + } + } + h = ""; + break; + case 'w': + c++; + i = *c; + c++; + exoutputp = output_possible; + exskipescape = skip_escape; + output_possible = 0; + skip_escape = 1; + j = 0; + while (*c != i) { + j++; + if (*c == escapesym) + c = scan_escape(c + 1); + else + c++; + } + output_possible = exoutputp; + skip_escape = exskipescape; + intresult = j; + break; + case 'l': + h = "
"; + curpos = 0; + case 'b': + case 'v': + case 'x': + case 'o': + case 'L': + case 'h': + c++; + i = *c; + c++; + exoutputp = output_possible; + exskipescape = skip_escape; + output_possible = 0; + skip_escape = 1; + while (*c != i) + if (*c == escapesym) + c = scan_escape(c + 1); + else + c++; + output_possible = exoutputp; + skip_escape = exskipescape; + break; + case 'c': + no_newline_output = 1; + break; + case '{': + newline_for_fun++; + h = ""; + break; + case '}': + if (newline_for_fun) + newline_for_fun--; + h = ""; + break; + case 'p': + h = "
\n"; + curpos = 0; + break; + case 't': + h = "\t"; + curpos = (curpos + 8) & 0xfff8; + break; + case '<': + h = "<"; + curpos++; + break; + case '>': + h = ">"; + curpos++; + break; + case '\\': + if (single_escape) { + c--; + break; + } + default: + b[0] = *c; + b[1] = 0; + h = b; + curpos++; + break; + } + c++; + if (!skip_escape) + out_html(h); + return c; +} + +typedef struct TABLEITEM TABLEITEM; + +struct TABLEITEM { + char *contents; + int size, align, valign, colspan, rowspan, font, vleft, vright, space, + width; + TABLEITEM *next; +}; + +static TABLEITEM emptyfield = {NULL, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, NULL}; + +typedef struct TABLEROW TABLEROW; + +struct TABLEROW { + TABLEITEM *first; + TABLEROW *prev, *next; +}; + +static char *tableopt[] = { + "center", "expand", "box", "allbox", "doublebox", + "tab", "linesize", "delim", NULL +}; +static int tableoptl[] = {6, 6, 3, 6, 9, 3, 8, 5, 0}; + +static void +clear_table(TABLEROW * table) +{ + TABLEROW *tr1, *tr2; + TABLEITEM *ti1, *ti2; + + tr1 = table; + while (tr1->prev) + tr1 = tr1->prev; + while (tr1) { + ti1 = tr1->first; + while (ti1) { + ti2 = ti1->next; + if (ti1->contents) + free(ti1->contents); + free(ti1); + ti1 = ti2; + } + tr2 = tr1; + tr1 = tr1->next; + free(tr2); + } +} + +static char *scan_expression(char *c, int *result); + +static char * +scan_format(char *c, TABLEROW ** result, int *maxcol) +{ + TABLEROW *layout, *currow; + TABLEITEM *curfield; + int i, j; + + if (*result) { + clear_table(*result); + } + layout = currow = (TABLEROW *) xmalloc(sizeof(TABLEROW)); + currow->next = currow->prev = NULL; + currow->first = curfield = (TABLEITEM *) xmalloc(sizeof(TABLEITEM)); + *curfield = emptyfield; + while (*c && *c != '.') { + switch (*c) { + case 'C': + case 'c': + case 'N': + case 'n': + case 'R': + case 'r': + case 'A': + case 'a': + case 'L': + case 'l': + case 'S': + case 's': + case '^': + case '_': + if (curfield->align) { + curfield->next = (TABLEITEM *) xmalloc(sizeof(TABLEITEM)); + curfield = curfield->next; + *curfield = emptyfield; + } + curfield->align = toupper(*c); + c++; + break; + case 'i': + case 'I': + case 'B': + case 'b': + curfield->font = toupper(*c); + c++; + break; + case 'f': + case 'F': + c++; + curfield->font = toupper(*c); + c++; + if (!isspace(*c)) + c++; + break; + case 't': + case 'T': + curfield->valign = 't'; + c++; + break; + case 'p': + case 'P': + c++; + i = j = 0; + if (*c == '+') { + j = 1; + c++; + } + if (*c == '-') { + j = -1; + c++; + } + while (isdigit(*c)) + i = i * 10 + (*c++) - '0'; + if (j) + curfield->size = i * j; + else + curfield->size = j - 10; + break; + case 'v': + case 'V': + case 'w': + case 'W': + c = scan_expression(c + 2, &curfield->width); + break; + case '|': + if (curfield->align) + curfield->vleft++; + else + curfield->vright++; + c++; + break; + case 'e': + case 'E': + c++; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + i = 0; + while (isdigit(*c)) + i = i * 10 + (*c++) - '0'; + curfield->space = i; + break; + case ',': + case '\n': + currow->next = (TABLEROW *) xmalloc(sizeof(TABLEROW)); + currow->next->prev = currow; + currow = currow->next; + currow->next = NULL; + curfield = currow->first = (TABLEITEM *) xmalloc(sizeof(TABLEITEM)); + *curfield = emptyfield; + c++; + break; + default: + c++; + break; + } + } + if (*c == '.') + while (*c++ != '\n'); + *maxcol = 0; + currow = layout; + while (currow) { + curfield = layout->first; + i = 0; + while (curfield) { + i++; + curfield = curfield->next; + } + if (i > *maxcol) + *maxcol = i; + currow = currow->next; + } + *result = layout; + return c; +} + +static TABLEROW * +next_row(TABLEROW * tr) +{ + if (tr->next) { + tr = tr->next; + if (!tr->next) + next_row(tr); + return tr; + } else { + TABLEITEM *ti, *ti2; + + tr->next = (TABLEROW *) xmalloc(sizeof(TABLEROW)); + tr->next->prev = tr; + ti = tr->first; + tr = tr->next; + tr->next = NULL; + if (ti) + tr->first = ti2 = (TABLEITEM *) xmalloc(sizeof(TABLEITEM)); + else + tr->first = ti2 = NULL; + while (ti != ti2) { + *ti2 = *ti; + ti2->contents = NULL; + if ((ti = ti->next)) { + ti2->next = (TABLEITEM *) xmalloc(sizeof(TABLEITEM)); + } + ti2 = ti2->next; + } + return tr; + } +} + +static char itemreset[20] = "\\fR\\s0"; + +static char * +scan_table(char *c) +{ + char *t, *h, *g; + int center = 0, expand = 0, box = 0, border = 0, linesize = 1; + int i, j, maxcol = 0, finished = 0; + int oldfont, oldsize, oldfillout; + char itemsep = '\t'; + TABLEROW *layout = NULL, *currow, *ftable; + TABLEITEM *curfield; + + while (*c++ != '\n'); + h = c; + if (*h == '.') + return c - 1; + oldfont = current_font; + oldsize = current_size; + oldfillout = fillout; + out_html(change_to_font(0)); + out_html(change_to_size(0)); + if (!fillout) { + fillout = 1; + out_html("
"); + } + while (*h && *h != '\n') + h++; + if (h[-1] == ';') { + /* scan table options */ + while (c < h) { + while (isspace(*c)) + c++; + for (i = 0; tableopt[i] && strncmp(tableopt[i], c, tableoptl[i]); i++); + c = c + tableoptl[i]; + switch (i) { + case 0: + center = 1; + break; + case 1: + expand = 1; + break; + case 2: + box = 1; + break; + case 3: + border = 1; + break; + case 4: + box = 2; + break; + case 5: + while (*c++ != '('); + itemsep = *c++; + break; + case 6: + while (*c++ != '('); + linesize = 0; + while (isdigit(*c)) + linesize = linesize * 10 + (*c++) - '0'; + break; + case 7: + while (*c != ')') + c++; + default: + break; + } + c++; + } + c = h + 1; + } + /* scan layout */ + c = scan_format(c, &layout, &maxcol); + currow = layout; + next_row(currow); + curfield = layout->first; + i = 0; + while (!finished) { + /* search item */ + h = c; + if ((*c == '_' || *c == '=') && (c[1] == itemsep || c[1] == '\n')) { + if (c[-1] == '\n' && c[1] == '\n') { + if (currow->prev) { + currow->prev->next = (TABLEROW *) xmalloc(sizeof(TABLEROW)); + currow->prev->next->next = currow; + currow->prev->next->prev = currow->prev; + currow->prev = currow->prev->next; + } else { + currow->prev = layout = (TABLEROW *) xmalloc(sizeof(TABLEROW)); + currow->prev->prev = NULL; + currow->prev->next = currow; + } + curfield = currow->prev->first = + (TABLEITEM *) xmalloc(sizeof(TABLEITEM)); + *curfield = emptyfield; + curfield->align = *c; + curfield->colspan = maxcol; + curfield = currow->first; + c = c + 2; + } else { + if (curfield) { + curfield->align = *c; + do { + curfield = curfield->next; + } while (curfield && curfield->align == 'S'); + } + if (c[1] == '\n') { + currow = next_row(currow); + curfield = currow->first; + } + c = c + 2; + } + } else if (*c == 'T' && c[1] == '{') { + h = c + 2; + c = strstr(h, "\nT}"); + c++; + *c = '\0'; + g = NULL; + scan_troff(h, 0, &g); + scan_troff(itemreset, 0, &g); + *c = 'T'; + c += 3; + if (curfield) { + curfield->contents = g; + do { + curfield = curfield->next; + } while (curfield && curfield->align == 'S'); + } else if (g) + free(g); + if (c[-1] == '\n') { + currow = next_row(currow); + curfield = currow->first; + } + } else if (*c == '.' && c[1] == 'T' && c[2] == '&' && c[-1] == '\n') { + TABLEROW *hr; + + while (*c++ != '\n'); + hr = currow; + currow = currow->prev; + hr->prev = NULL; + c = scan_format(c, &hr, &i); + hr->prev = currow; + currow->next = hr; + currow = hr; + next_row(currow); + curfield = currow->first; + } else if (*c == '.' && c[1] == 'T' && c[2] == 'E' && c[-1] == '\n') { + finished = 1; + while (*c++ != '\n'); + if (currow->prev) + currow->prev->next = NULL; + currow->prev = NULL; + clear_table(currow); + } else if (*c == '.' && c[-1] == '\n' && !isdigit(c[1])) { + /* + * skip troff request inside table (usually only .sp + * ) + */ + while (*c++ != '\n'); + } else { + h = c; + while (*c && (*c != itemsep || c[-1] == '\\') && + (*c != '\n' || c[-1] == '\\')) + c++; + i = 0; + if (*c == itemsep) { + i = 1; + *c = '\n'; + } + if (h[0] == '\\' && h[2] == '\n' && + (h[1] == '_' || h[1] == '^')) { + if (curfield) { + curfield->align = h[1]; + do { + curfield = curfield->next; + } while (curfield && curfield->align == 'S'); + } + h = h + 3; + } else { + g = NULL; + h = scan_troff(h, 1, &g); + scan_troff(itemreset, 0, &g); + if (curfield) { + curfield->contents = g; + do { + curfield = curfield->next; + } while (curfield && curfield->align == 'S'); + } else if (g) + free(g); + } + if (i) + *c = itemsep; + c = h; + if (c[-1] == '\n') { + currow = next_row(currow); + curfield = currow->first; + } + } + } + /* calculate colspan and rowspan */ + currow = layout; + while (currow->next) + currow = currow->next; + while (currow) { + TABLEITEM *ti, *ti1 = NULL, *ti2 = NULL; + + ti = currow->first; + if (currow->prev) + ti1 = currow->prev->first; + while (ti) { + switch (ti->align) { + case 'S': + if (ti2) { + ti2->colspan++; + if (ti2->rowspan < ti->rowspan) + ti2->rowspan = ti->rowspan; + } + break; + case '^': + if (ti1) + ti1->rowspan++; + default: + if (!ti2) + ti2 = ti; + else { + do { + ti2 = ti2->next; + } while (ti2 && curfield->align == 'S'); + } + break; + } + ti = ti->next; + if (ti1) + ti1 = ti1->next; + } + currow = currow->prev; + } + /* produce html output */ + if (center) + out_html("
"); + if (box == 2) + out_html(""); + curfield = currow->first; + while (curfield) { + if (curfield->align != 'S' && curfield->align != '^') { + out_html("align) { + case 'N': + curfield->space += 4; + case 'R': + out_html(" ALIGN=right"); + break; + case 'C': + out_html(" ALIGN=center"); + default: + break; + } + if (!curfield->valign && curfield->rowspan > 1) + out_html(" VALIGN=center"); + if (curfield->colspan > 1) { + char buf[5]; + + out_html(" COLSPAN="); + sprintf(buf, "%i", curfield->colspan); + out_html(buf); + } + if (curfield->rowspan > 1) { + char buf[5]; + + out_html(" ROWSPAN="); + sprintf(buf, "%i", curfield->rowspan); + out_html(buf); + } + j = j + curfield->colspan; + out_html(">"); + if (curfield->size) + out_html(change_to_size(curfield->size)); + if (curfield->font) + out_html(change_to_font(curfield->font)); + switch (curfield->align) { + case '=': + out_html("

"); + break; + case '_': + out_html("
"); + break; + default: + if (curfield->contents) + out_html(curfield->contents); + break; + } + if (curfield->space) + for (i = 0; i < curfield->space; i++) + out_html(" "); + if (curfield->font) + out_html(change_to_font(0)); + if (curfield->size) + out_html(change_to_size(0)); + if (j >= maxcol && curfield->align > '@' && curfield->align != '_') + out_html("
"); + out_html(""); + } + curfield = curfield->next; + } + out_html("
\n"); + currow = currow->next; + } + if (box && !border) + out_html("
"); + out_html("
\n"); + currow = layout; + while (currow) { + j = 0; + out_html("
"); + out_html(""); + if (box == 2) + out_html(""); + if (center) + out_html("
\n"); + else + out_html("\n"); + if (!oldfillout) + out_html("
");
+	fillout = oldfillout;
+	out_html(change_to_size(oldsize));
+	out_html(change_to_font(oldfont));
+	return c;
+}
+
+static char *
+scan_expression(char *c, int *result)
+{
+	int     value = 0, value2, j = 0, sign = 1, opex = 0;
+	char    oper = 'c';
+
+	if (*c == '!') {
+		c = scan_expression(c + 1, &value);
+		value = (!value);
+	} else if (*c == 'n') {
+		c++;
+		value = NROFF;
+	} else if (*c == 't') {
+		c++;
+		value = 1 - NROFF;
+	} else if (*c == '\'' || *c == '"' || *c < ' ' || (*c == '\\' && c[1] == '(')) {
+		/*
+		 * ?string1?string2? test if string1 equals string2.
+		 */
+		char   *st1 = NULL, *st2 = NULL, *h;
+		char   *tcmp = NULL;
+		char    sep;
+
+		sep = *c;
+		if (sep == '\\') {
+			tcmp = c;
+			c = c + 3;
+		}
+		c++;
+		h = c;
+		while (*c != sep && (!tcmp || strncmp(c, tcmp, 4)))
+			c++;
+		*c = '\n';
+		scan_troff(h, 1, &st1);
+		*c = sep;
+		if (tcmp)
+			c = c + 3;
+		c++;
+		h = c;
+		while (*c != sep && (!tcmp || strncmp(c, tcmp, 4)))
+			c++;
+		*c = '\n';
+		scan_troff(h, 1, &st2);
+		*c = sep;
+		if (!st1 && !st2)
+			value = 1;
+		else if (!st1 || !st2)
+			value = 0;
+		else
+			value = (!strcmp(st1, st2));
+		if (st1)
+			free(st1);
+		if (st2)
+			free(st2);
+		if (tcmp)
+			c = c + 3;
+		c++;
+	} else {
+		while (*c && !isspace(*c) && *c != ')') {
+			opex = 0;
+			switch (*c) {
+			case '(':
+				c = scan_expression(c + 1, &value2);
+				value2 = sign * value2;
+				opex = 1;
+				break;
+			case '.':
+			case '0':
+			case '1':
+			case '2':
+			case '3':
+			case '4':
+			case '5':
+			case '6':
+			case '7':
+			case '8':
+			case '9':{
+					int     num = 0, denum = 1;
+
+					value2 = 0;
+					while (isdigit(*c))
+						value2 = value2 * 10 + ((*c++) - '0');
+					if (*c == '.') {
+						c++;
+						while (isdigit(*c)) {
+							num = num * 10 + ((*c++) - '0');
+							denum = denum * 10;
+						}
+					}
+					if (isalpha(*c)) {
+						/* scale indicator */
+						switch (*c) {
+						case 'i':	/* inch -> 10pt */
+							value2 = value2 * 10 + (num * 10 + denum / 2) / denum;
+							num = 0;
+							break;
+						default:
+							break;
+						}
+						c++;
+					}
+					value2 = value2 + (num + denum / 2) / denum;
+					value2 = sign * value2;
+					opex = 1;
+					break;
+				}
+			case '\\':
+				c = scan_escape(c + 1);
+				value2 = intresult * sign;
+				if (isalpha(*c))
+					c++;	/* scale indicator */
+				opex = 1;
+				break;
+			case '-':
+				if (oper) {
+					sign = -1;
+					c++;
+					break;
+				}
+			case '>':
+			case '<':
+			case '+':
+			case '/':
+			case '*':
+			case '%':
+			case '&':
+			case '=':
+			case ':':
+				if (c[1] == '=')
+					oper = (*c++) + 16;
+				else
+					oper = *c;
+				c++;
+				break;
+			default:
+				c++;
+				break;
+			}
+			if (opex) {
+				sign = 1;
+				switch (oper) {
+				case 'c':
+					value = value2;
+					break;
+				case '-':
+					value = value - value2;
+					break;
+				case '+':
+					value = value + value2;
+					break;
+				case '*':
+					value = value * value2;
+					break;
+				case '/':
+					if (value2)
+						value = value / value2;
+					break;
+				case '%':
+					if (value2)
+						value = value % value2;
+					break;
+				case '<':
+					value = (value < value2);
+					break;
+				case '>':
+					value = (value > value2);
+					break;
+				case '>' + 16:
+					value = (value >= value2);
+					break;
+				case '<' + 16:
+					value = (value <= value2);
+					break;
+				case '=':
+				case '=' + 16:
+					value = (value == value2);
+					break;
+				case '&':
+					value = (value && value2);
+					break;
+				case ':':
+					value = (value || value2);
+					break;
+				default:
+					fprintf(stderr, "man2html: unknown operator %c.\n", oper);
+				}
+				oper = 0;
+			}
+		}
+		if (*c == ')')
+			c++;
+	}
+	*result = value;
+	return c;
+}
+
+static void
+trans_char(char *c, char s, char t)
+{
+	char   *sl = c;
+	int     slash = 0;
+
+	while (*sl != '\n' || slash) {
+		if (!slash) {
+			if (*sl == escapesym)
+				slash = 1;
+			else if (*sl == s)
+				*sl = t;
+		} else
+			slash = 0;
+		sl++;
+	}
+}
+
+/* Remove \a from C in place.  Return modified C. */
+static char *
+unescape (char *c)
+{
+	int	i, l;
+
+	l = strlen (c);
+	i = 0;
+	while (i < l && c[i]) {
+		if (c[i] == '\a') {
+			if (c[i+1])
+				memmove (c + i, c + i + 1, l - i);
+			else {
+				c[i] = '\0';
+				break;
+			}
+		}
+		i++;
+	}
+	return c;
+}
+	
+static char *
+fill_words(char *c, char *words[], int *n)
+{
+	char   *sl = c;
+	int     slash = 0;
+	int     skipspace = 0;
+
+	*n = 0;
+	words[*n] = sl;
+	while (*sl && (*sl != '\n' || slash)) {
+		if (!slash) {
+			if (*sl == '"') {
+				*sl = '\a';
+				skipspace = !skipspace;
+			} else if (*sl == '\a') {
+				/* handle already-translated " */
+				skipspace = !skipspace;
+			} else if (*sl == escapesym)
+				slash = 1;
+			else if ((*sl == ' ' || *sl == '\t') && !skipspace) {
+				*sl = '\n';
+				if (words[*n] != sl)
+					(*n)++;
+				words[*n] = sl + 1;
+			}
+		} else {
+			if (*sl == '"') {
+				sl--;
+				*sl = '\n';
+				if (words[*n] != sl)
+					(*n)++;
+				sl++;
+				while (*sl && *sl != '\n')
+					sl++;
+				words[*n] = sl;
+				sl--;
+			}
+			slash = 0;
+		}
+		sl++;
+	}
+	if (sl != words[*n])
+		(*n)++;
+	return sl;
+}
+
+static char *abbrev_list[] = {
+	"GSBG", "Getting Started ",
+	"SUBG", "Customizing SunOS",
+	"SHBG", "Basic Troubleshooting",
+	"SVBG", "SunView User's Guide",
+	"MMBG", "Mail and Messages",
+	"DMBG", "Doing More with SunOS",
+	"UNBG", "Using the Network",
+	"GDBG", "Games, Demos & Other Pursuits",
+	"CHANGE", "SunOS 4.1 Release Manual",
+	"INSTALL", "Installing SunOS 4.1",
+	"ADMIN", "System and Network Administration",
+	"SECUR", "Security Features Guide",
+	"PROM", "PROM User's Manual",
+	"DIAG", "Sun System Diagnostics",
+	"SUNDIAG", "Sundiag User's Guide",
+	"MANPAGES", "SunOS Reference Manual",
+	"REFMAN", "SunOS Reference Manual",
+	"SSI", "Sun System Introduction",
+	"SSO", "System Services Overview",
+	"TEXT", "Editing Text Files",
+	"DOCS", "Formatting Documents",
+	"TROFF", "Using nroff and troff",
+	"INDEX", "Global Index",
+	"CPG", "C Programmer's Guide",
+	"CREF", "C Reference Manual",
+	"ASSY", "Assembly Language Reference",
+	"PUL", "Programming Utilities and Libraries",
+	"DEBUG", "Debugging Tools",
+	"NETP", "Network Programming",
+	"DRIVER", "Writing Device Drivers",
+	"STREAMS", "STREAMS Programming",
+	"SBDK", "SBus Developer's Kit",
+	"WDDS", "Writing Device Drivers for the SBus",
+	"FPOINT", "Floating-Point Programmer's Guide",
+	"SVPG", "SunView 1 Programmer's Guide",
+	"SVSPG", "SunView 1 System Programmer's Guide",
+	"PIXRCT", "Pixrect Reference Manual",
+	"CGI", "SunCGI Reference Manual",
+	"CORE", "SunCore Reference Manual",
+	"4ASSY", "Sun-4 Assembly Language Reference",
+	"SARCH", "SPARC Architecture Manual",
+	"KR", "The C Programming Language",
+NULL, NULL};
+
+static char *
+lookup_abbrev(char *c)
+{
+	int     i = 0;
+
+	if (!c)
+		return "";
+	while (abbrev_list[i] && strcmp(c, abbrev_list[i]))
+		i = i + 2;
+	if (abbrev_list[i])
+		return abbrev_list[i + 1];
+	else
+		return c;
+}
+
+static char manidx[NULL_TERMINATED(HUGE_STR_MAX)];
+static int subs = 0;
+static int mip = 0;
+static char label[5] = "lbAA";
+
+static void
+add_to_index(int level, char *item)
+{
+	char   *c = NULL;
+
+	label[3]++;
+	if (label[3] > 'Z') {
+		label[3] = 'A';
+		label[2]++;
+	}
+	if (level != subs) {
+		if (subs) {
+			strmaxcpy(manidx + mip, "\n", HUGE_STR_MAX - mip);
+			mip += 6;
+		} else {
+			strmaxcpy(manidx + mip, "
\n", HUGE_STR_MAX - mip); + mip += 5; + } + } + subs = level; + scan_troff(item, 1, &c); + sprintf(manidx + mip, "
%s
\n", label, c); + if (c) + free(c); + while (manidx[mip]) + mip++; +} + +static char * +skip_till_newline(char *c) +{ + int lvl = 0; + + while (*c && *c != '\n' || lvl > 0) { + if (*c == '\\') { + c++; + if (*c == '}') + lvl--; + else if (*c == '{') + lvl++; + } + c++; + } + c++; + if (lvl < 0 && newline_for_fun) { + newline_for_fun = newline_for_fun + lvl; + if (newline_for_fun < 0) + newline_for_fun = 0; + } + return c; +} + +static void +outputPageHeader(char *l, char *c, char *r) +{ + out_html("\n\n"); + out_html("\n
"); + out_html(l); + out_html(""); + out_html(c); + out_html(""); + out_html(r); + out_html("\n
\n"); +} + +static void +outputPageFooter(char *l, char *c, char *r) +{ + out_html("
\n"); + outputPageHeader(l, c, r); +} + +static int ifelseval = 0; + +static char * +scan_request(char *c) +{ + /* BSD Mandoc stuff */ + static int mandoc_synopsis = 0; /* True if we are in the synopsis + * section */ + static int mandoc_command = 0; /* True if this is mandoc page */ + static int mandoc_bd_options; /* Only copes with non-nested Bd's */ + + int i, j, mode = 0; + char *h; + char *wordlist[MAX_WORDLIST]; + int words; + char *sl; + STRDEF *owndef; + + while (*c == ' ' || *c == '\t') + c++; + if (c[0] == '\n') + return c + 1; + if (c[1] == '\n') + j = 1; + else + j = 2; + while (c[j] == ' ' || c[j] == '\t') + j++; + if (c[0] == escapesym) { + /* some pages use .\" .\$1 .\} */ + /* .\$1 is too difficult/stupid */ + if (c[1] == '$') + c = skip_till_newline(c); + else + c = scan_escape(c + 1); + } else { + i = V(c[0], c[1]); + switch (i) { + case V('a', 'b'): + h = c + j; + while (*h && *h != '\n') + h++; + *h = '\0'; + if (scaninbuff && buffpos) { + buffer[buffpos] = '\0'; + puts(buffer); + } + /* fprintf(stderr, "%s\n", c+2); */ + exit(0); + break; + case V('d', 'i'): + { + STRDEF *de; + int oldcurpos = curpos; + + c = c + j; + i = V(c[0], c[1]); + if (*c == '\n') { + c++; + break; + } + while (*c && *c != '\n') + c++; + c++; + h = c; + while (*c && strncmp(c, ".di", 3)) + while (*c && *c++ != '\n'); + *c = '\0'; + de = strdef; + while (de && de->nr != i) + de = de->next; + if (!de) { + de = (STRDEF *) xmalloc(sizeof(STRDEF)); + de->nr = i; + de->slen = 0; + de->next = strdef; + de->st = NULL; + strdef = de; + } else { + if (de->st) + free(de->st); + de->slen = 0; + de->st = NULL; + } + scan_troff(h, 0, &de->st); + *c = '.'; + while (*c && *c++ != '\n'); + break; + } + case V('d', 's'): + mode = 1; + case V('a', 's'): + { + STRDEF *de; + int oldcurpos = curpos; + + c = c + j; + i = V(c[0], c[1]); + j = 0; + while (c[j] && c[j] != '\n') + j++; + if (j < 3) { + c = c + j; + break; + } + if (c[1] == ' ') + c = c + 1; + else + c = c + 2; + while (isspace(*c)) + c++; + if (*c == '"') + c++; + de = strdef; + while (de && de->nr != i) + de = de->next; + single_escape = 1; + curpos = 0; + if (!de) { + char *h; + + de = (STRDEF *) xmalloc(sizeof(STRDEF)); + de->nr = i; + de->slen = 0; + de->next = strdef; + de->st = NULL; + strdef = de; + h = NULL; + c = scan_troff(c, 1, &h); + de->st = h; + de->slen = curpos; + } else { + if (mode) { + char *h = NULL; + + c = scan_troff(c, 1, &h); + free(de->st); + de->slen = 0; + de->st = h; + } else + c = scan_troff(c, 1, &de->st); + de->slen += curpos; + } + single_escape = 0; + curpos = oldcurpos; + } + break; + case V('b', 'r'): + if (still_dd) + out_html("
"); + else + out_html("
\n"); + curpos = 0; + c = c + j; + if (c[0] == escapesym) { + c = scan_escape(c + 1); + } + c = skip_till_newline(c); + break; + case V('c', '2'): + c = c + j; + if (*c != '\n') { + nobreaksym = *c; + } else + nobreaksym = '\''; + c = skip_till_newline(c); + break; + case V('c', 'c'): + c = c + j; + if (*c != '\n') { + controlsym = *c; + } else + controlsym = '.'; + c = skip_till_newline(c); + break; + case V('c', 'e'): + c = c + j; + if (*c == '\n') { + i = 1; + } else { + i = 0; + while ('0' <= *c && *c <= '9') { + i = i * 10 + *c - '0'; + c++; + } + } + c = skip_till_newline(c); + /* center next i lines */ + if (i > 0) { + out_html("
\n"); + while (i && *c) { + char *line = NULL; + + c = scan_troff(c, 1, &line); + if (line && strncmp(line, "
", 4)) { + out_html(line); + out_html("
\n"); + i--; + } + } + out_html("
\n"); + curpos = 0; + } + break; + case V('e', 'c'): + c = c + j; + if (*c != '\n') { + escapesym = *c; + } else + escapesym = '\\'; + break; + c = skip_till_newline(c); + case V('e', 'o'): + escapesym = '\0'; + c = skip_till_newline(c); + break; + case V('e', 'x'): + exit(0); + break; + case V('f', 'c'): + c = c + j; + if (*c == '\n') { + fieldsym = padsym = '\0'; + } else { + fieldsym = c[0]; + padsym = c[1]; + } + c = skip_till_newline(c); + break; + case V('f', 'i'): + if (!fillout) { + out_html(change_to_font(0)); + out_html(change_to_size('0')); + out_html("
\n"); + } + curpos = 0; + fillout = 1; + c = skip_till_newline(c); + break; + case V('f', 't'): + c = c + j; + if (*c == '\n') { + out_html(change_to_font(0)); + } else { + if (*c == escapesym) { + int fn; + + c = scan_expression(c, &fn); + c--; + out_html(change_to_font(fn)); + } else { + out_html(change_to_font(*c)); + c++; + } + } + c = skip_till_newline(c); + break; + case V('e', 'l'): + /* .el anything : else part of if else */ + if (ifelseval) { + c = c + j; + c[-1] = '\n'; + c = scan_troff(c, 1, NULL); + } else + c = skip_till_newline(c + j); + break; + case V('i', 'e'): + /* .ie c anything : then part of if else */ + case V('i', 'f'): + /* + * .if c anything .if !c anything .if N anything .if + * !N anything .if 'string1'string2' anything .if + * !'string1'string2' anything + */ + c = c + j; + c = scan_expression(c, &i); + ifelseval = !i; + if (i) { + *c = '\n'; + c++; + c = scan_troff(c, 1, NULL); + } else + c = skip_till_newline(c); + break; + case V('i', 'g'): + { + char *endwith = "..\n"; + + i = 3; + c = c + j; + if (*c != '\n') { + endwith = c - 1; + i = 1; + c[-1] = '.'; + while (*c && *c != '\n') + c++, i++; + } + c++; + while (*c && strncmp(c, endwith, i)) + while (*c++ != '\n'); + while (*c++ != '\n'); + break; + } + case V('n', 'f'): + if (fillout) { + out_html(change_to_font(0)); + out_html(change_to_size('0')); + out_html("
\n");
+			}
+			curpos = 0;
+			fillout = 0;
+			c = skip_till_newline(c);
+			break;
+		case V('p', 's'):
+			c = c + j;
+			if (*c == '\n') {
+				out_html(change_to_size('0'));
+			} else {
+				j = 0;
+				i = 0;
+				if (*c == '-') {
+					j = -1;
+					c++;
+				} else if (*c == '+') {
+					j = 1;
+					c++;
+				}
+				c = scan_expression(c, &i);
+				if (!j) {
+					j = 1;
+					if (i > 5)
+						i = i - 10;
+				}
+				out_html(change_to_size(i * j));
+			}
+			c = skip_till_newline(c);
+			break;
+		case V('s', 'p'):
+			c = c + j;
+			if (fillout)
+				out_html("

"); + else { + out_html(NEWLINE); + NEWLINE[0] = '\n'; + } + curpos = 0; + c = skip_till_newline(c); + break; + case V('s', 'o'): + { + FILE *f; + struct stat stbuf; + int l = 0; + char *buf; + char *name = NULL; + + curpos = 0; + c = c + j; + if (*c == '/') { + h = c; + } else { + h = c - 3; + h[0] = '.'; + h[1] = '.'; + h[2] = '/'; + } + while (*c != '\n') + c++; + *c = '\0'; + scan_troff(h, 1, &name); + if (name[3] == '/') + h = name + 3; + else + h = name; + if (stat(h, &stbuf) != -1) + l = stbuf.st_size; +#if NOCGI + if (!out_length) { + char *t, *s; + + t = strrchr(fname, '/'); + if (!t) + t = fname; + fprintf(stderr, "ln -s %s.html %s.html\n", h, t); + s = strrchr(t, '.'); + if (!s) + s = t; + printf(" Manpage of %s\n" + "\n" + "See the manpage for %s.\n" + "\n", + s, h, h); + } else +#endif + { + /* + * this works alright, except for + * section 3 + */ + buf = read_man_page(h); + if (!buf) { + + fprintf(stderr, "man2html: unable to open or read file %s.\n", + h); + out_html("

" + "man2html: unable to open or read file.\n"); + out_html(h); + out_html("
\n"); + } else { + buf[0] = buf[l] = '\n'; + buf[l + 1] = buf[l + 2] = '\0'; + scan_troff(buf + 1, 0, NULL); + } + if (buf) + free(buf); + } + *c++ = '\n'; + break; + } + case V('t', 'a'): + c = c + j; + j = 0; + while (*c != '\n') { + sl = scan_expression(c, &tabstops[j]); + if (*c == '-' || *c == '+') + tabstops[j] += tabstops[j - 1]; + c = sl; + while (*c == ' ' || *c == '\t') + c++; + j++; + } + maxtstop = j; + curpos = 0; + break; + case V('t', 'i'): + /* + * while (itemdepth || dl_set[itemdepth]) { + * out_html("\n"); if (dl_set[itemdepth]) + * dl_set[itemdepth]=0; else itemdepth--; } + */ + out_html("
\n"); + c = c + j; + c = scan_expression(c, &j); + for (i = 0; i < j; i++) + out_html(" "); + curpos = j; + c = skip_till_newline(c); + break; + case V('t', 'm'): + c = c + j; + h = c; + while (*c != '\n') + c++; + *c = '\0'; + /* fprintf(stderr,"%s\n", h); */ + *c = '\n'; + break; + case V('B', ' '): + case V('B', '\n'): + case V('I', ' '): + case V('I', '\n'): + /* parse one line in a certain font */ + out_html(change_to_font(*c)); + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + c = scan_troff(c, 1, NULL); + out_html(change_to_font('R')); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('O', 'P'): /* groff manpages use this + * construction */ + /* .OP a b : [ a b ] */ + mode = 1; + c[0] = 'B'; + c[1] = 'I'; + out_html(change_to_font('R')); + out_html("["); + curpos++; + case V('B', 'R'): + case V('B', 'I'): + case V('I', 'B'): + case V('I', 'R'): + case V('R', 'B'): + case V('R', 'I'): + { + char font[2]; + + font[0] = c[0]; + font[1] = c[1]; + c = c + j; + if (*c == '\n') + c++; + sl = fill_words(c, wordlist, &words); + c = sl + 1; + /* + * .BR name (section) indicates a link. It + * will be added in the output routine. + */ + for (i = 0; i < words; i++) { + if (mode) { + out_html(" "); + curpos++; + } + wordlist[i][-1] = ' '; + out_html(change_to_font(font[i & 1])); + scan_troff(wordlist[i], 1, NULL); + } + out_html(change_to_font('R')); + if (mode) { + out_html(" ]"); + curpos++; + } + out_html(NEWLINE); + if (!fillout) + curpos = 0; + else + curpos++; + } + break; + case V('D', 'T'): + for (j = 0; j < 20; j++) + tabstops[j] = (j + 1) * 8; + maxtstop = 20; + c = skip_till_newline(c); + break; + case V('I', 'P'): + sl = fill_words(c + j, wordlist, &words); + c = sl + 1; + if (!dl_set[itemdepth]) { + out_html("
\n"); + dl_set[itemdepth] = 1; + } + out_html("
"); + if (words) { + scan_troff(wordlist[0], 1, NULL); + } + out_html("
"); + curpos = 0; + break; + case V('T', 'P'): + if (!dl_set[itemdepth]) { + out_html("
\n"); + dl_set[itemdepth] = 1; + } + out_html("
"); + c = skip_till_newline(c); + /* somewhere a definition ends with '.TP' */ + if (!*c) + still_dd = 1; + else { + c = scan_troff(c, 1, NULL); + out_html("
"); + } + curpos = 0; + break; + case V('I', 'X'): + /* general index */ + sl = fill_words(c + j, wordlist, &words); + c = sl + 1; + j = 4; + while (idxlabel[j] == 'Z') + idxlabel[j--] = 'A'; + idxlabel[j]++; +#ifdef MAKEINDEX + fprintf(idxfile, "%s@%s@", fname, idxlabel); + for (j = 0; j < words; j++) { + h = NULL; + scan_troff(wordlist[j], 1, &h); + fprintf(idxfile, "_\b@%s", h); + free(h); + } + fprintf(idxfile, "\n"); +#endif + out_html("' and '<' solves it, but + * creates some space. A normal space does not work. + */ + out_html("\">"); + break; + case V('L', 'P'): + case V('P', 'P'): + if (dl_set[itemdepth]) { + out_html("
\n"); + dl_set[itemdepth] = 0; + } + if (fillout) + out_html("

\n"); + else { + out_html(NEWLINE); + NEWLINE[0] = '\n'; + } + curpos = 0; + c = skip_till_newline(c); + break; + case V('H', 'P'): + if (!dl_set[itemdepth]) { + out_html("

"); + dl_set[itemdepth] = 1; + } + out_html("
\n"); + still_dd = 1; + c = skip_till_newline(c); + curpos = 0; + break; + case V('P', 'D'): + c = skip_till_newline(c); + break; + case V('R', 's'): /* BSD mandoc */ + case V('R', 'S'): + sl = fill_words(c + j, wordlist, &words); + j = 1; + if (words > 0) + scan_expression(wordlist[0], &j); + if (j >= 0) { + itemdepth++; + dl_set[itemdepth] = 0; + out_html("
"); + c = skip_till_newline(c); + curpos = 0; + break; + } + case V('R', 'e'): /* BSD mandoc */ + case V('R', 'E'): + if (itemdepth > 0) { + if (dl_set[itemdepth]) + out_html("
"); + out_html("
\n"); + itemdepth--; + } + c = skip_till_newline(c); + curpos = 0; + break; + case V('S', 'B'): + out_html(change_to_size(-1)); + out_html(change_to_font('B')); + c = scan_troff(c + j, 1, NULL); + out_html(change_to_font('R')); + out_html(change_to_size('0')); + break; + case V('S', 'M'): + c = c + j; + if (*c == '\n') + c++; + out_html(change_to_size(-1)); + trans_char(c, '"', '\a'); + c = scan_troff(c, 1, NULL); + out_html(change_to_size('0')); + break; + case V('S', 's'): /* BSD mandoc */ + mandoc_command = 1; + case V('S', 'S'): + mode = 1; + case V('S', 'h'): /* BSD mandoc */ + /* hack for fallthru from above */ + mandoc_command = !mode || mandoc_command; + case V('S', 'H'): + c = c + j; + if (*c == '\n') + c++; + while (itemdepth || dl_set[itemdepth]) { + out_html("
\n"); + if (dl_set[itemdepth]) + dl_set[itemdepth] = 0; + else if (itemdepth > 0) + itemdepth--; + } + out_html(change_to_font(0)); + out_html(change_to_size(0)); + if (!fillout) { + fillout = 1; + out_html("
"); + } + trans_char(c, '"', '\a'); + add_to_index(mode, c); + out_html(" \n

"); + else + out_html("\"> \n

"); + mandoc_synopsis = strncmp(c, "SYNOPSIS", 8) == 0; + c = mandoc_command ? scan_troff_mandoc(c, 1, NULL) : scan_troff(c, 1, NULL); + if (mode) + out_html("

\n"); + else + out_html("

}pqoku=DqOo4VzGYK5k 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 GH~$YKg9!=% literal 0 HcmV?d00001 diff --git a/bash-5.1/po/sl.po b/bash-5.1/po/sl.po new file mode 100644 index 0000000..d1ad413 --- /dev/null +++ b/bash-5.1/po/sl.po @@ -0,0 +1,5876 @@ +# Slovenian translation of bash. +# Copyright (C) 2012 - 2013 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# +# Damir JerovÅ¡ek , 2012 - 2013. +# Klemen KoÅ¡ir , 2012 - 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: bash-4.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2013-03-09 20:21+0100\n" +"Last-Translator: Klemen KoÅ¡ir \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "slab podpis polja" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: ni mogoÄe pretvoriti zabeleženega polja v povezano polje" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: neveljaven kljuÄ povezanega polja" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: ni mogoÄe dodeliti v ne-Å¡tevilÄno kazalo" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: treba je uporabiti podpis pri dodeljevanju povezanega polja" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: ni mogoÄe ustvariti: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: ni mogoÄe najti tipkovne razvrstitve za ukaz" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: prvi znak brez presledka ni `\"'" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "brez zakljuÄka `%c' v %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: manjka loÄilnik dvopiÄja" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "`%s': ni mogoÄe odvezati" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "`%s': neveljaven vzdevek" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "urejanje vrstic ni omogoÄeno" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "`%s': neveljavno ime tipkovne razvrstitve" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: ni mogoÄe brati: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': neznano ime funkcije" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s ni vezan na nobeno tipko.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s se lahko pokliÄe s pomoÄjo " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': ni mogoÄe odvezati" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "Å¡tevec zanke" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "smiselno samo v `for', `while', ali `until' zanki" + +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Vrne vsebino trenutnega klica podprograma.\n" +" \n" +" Brez IZRAZA vrne \"$line $filename\". Z IZRAZOM vrne\n" +" \"$line $subroutine $filename\"; ta dodaten podatek se lahko uporabi\n" +" za zagotovitev sledenja sklada.\n" +" \n" +" Vrednost IZRAZA nakazuje, koliko okvirjev klicev mora nazaj\n" +" pred trenutnega; zgornji okvir je okvir 0.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne 0, razen Äe lupina ne izvrÅ¡uje funkcije lupine ali pa IZRAZ\n" +" ni veljaven." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME ni nastavljen" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "preveÄ argumentov" + +#: builtins/cd.def:342 +#, fuzzy +msgid "null directory" +msgstr "ni druge mape" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD ni nastavljen" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "vrstica %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "opozorilo: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: uporaba: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: možnost zahteva argument" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: zahtevan je Å¡tevni argument" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: ni mogoÄe najti" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: neveljavna možnost" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: neveljavno ime možnosti" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "`%s': neveljavno doloÄilo" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "neveljavno osmiÅ¡ko Å¡tevilo" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "neveljavno Å¡estnajstiÅ¡ko Å¡tevilo" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "neveljavno Å¡tevilo" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: neveljavno doloÄilo signala" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "`%s': ni doloÄilo opravila ali neveljavno doloÄilo posla" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: spremenljivka le za branje" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s izven dosega" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s izven dosega" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: ni takÅ¡nega posla" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: ni nadzora posla" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "ni nadzora posla" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: omejeno" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "omejeno" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: ni vgrajena lupina" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "napaka med pisanjem: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "napaka med nastavljanjem atributov terminala: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "napaka med pridobivanjem atributov terminala: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: napaka med pridobivanjem trenutne mape: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: dvoumno doloÄilo posla" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: ni mogoÄe ponastaviti: samo za branje %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: ni mogoÄe ponastaviti" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: neveljavno ime dejanja" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: ni doloÄila dopolnjevanja" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "Opozorilo: možnost -F morda ne bo delovala po priÄakovanjih" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "Opozorilo: možnost -C morda ne bo delovala po priÄakovanjih" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "trenutno se ne izvaja funkcija dopolnjevanja" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "se lahko uporabi samo v funkciji" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "`%s': neveljaven vzdevek" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "ni mogoÄe uporabiti `-f' za ustvarjanje funkcij" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: funkcija samo za branje" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: na ta naÄin ni mogoÄe uniÄiti spremenljivk polja" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: ni mogoÄe pretvoriti povezanega polja v zabeleženo polje" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dinamiÄno nalaganje ni na voljo" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "ni mogoÄe odpreti predmeta v souporabi %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "ni mogoÄe najti %s v predmetu v souporabi %s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: ni dinamiÄno naloženo" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: ni dinamiÄno naloženo" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: ni mogoÄe izbrisati: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: je mapa" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: ni obiÄajna datoteka" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: datoteka je prevelika" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: ni mogoÄe izvesti binarne datoteke" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: ni mogoÄe izvesti: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "odjava\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "ni prijavna lupina: uporabite `exit'" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Obstajajo ustavljeni posli.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Obstajajo posli, ki se izvajajo.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "najdenega ni nobenega ukaza" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "doloÄilo zgodovine" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: ni mogoÄe odpreti zaÄasne datoteke: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "trenutno" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "posel %d se je priÄel brez nadzora" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: neveljavna možnost -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: možnost zahteva argument -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "razprÅ¡itev je onemogoÄena" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: razprÅ¡itvena razpredelnica je prazna\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "zadetki\tukaz\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "KljuÄnih besed, ki se ujemajo z ukazi lupine `" +msgstr[1] "KljuÄna beseda, ki se ujema z ukazi lupine `" +msgstr[2] "KljuÄni besedi, ki se ujemata z ukazi lupine `" +msgstr[3] "KljuÄne besede, ki se ujemajo z ukazi lupine `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"nobena tema pomoÄi se ne ujema s `%s'. Poskusite `help help' ali `man -k " +"%s' ali `info %s'." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: ni mogoÄe odpreti: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Ti ukazi lupine so doloÄeni znotraj lupine. VpiÅ¡ite `help' za prikaz tega " +"seznama.\n" +"VpiÅ¡ite `help ime', Äe želite izvedeti veÄ o `imenu' funkcije.\n" +"Uporabite `info bash', Äe želite izvedeti veÄ o lupini na sploÅ¡no.\n" +"Uporabite `man -k' ali `info', Äe želite izvedeti veÄ o ukazih, ki niso na " +"tem seznamu.\n" +"\n" +"Zvezdica (*) poleg imena pomeni, da je ukaz onemogoÄen.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "ni mogoÄe uporabiti veÄ kot eno od -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "položaj zgodovine" + +#: builtins/history.def:340 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: neveljavno ime možnosti" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: razÅ¡iritev zgodovine je spodletela" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib je spodletel" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "druge možnosti niso dovoljene z `-x'" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumenti morajo biti doloÄila opravila ali posla" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Neznana napaka" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "izraz je bil priÄakovan" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: ni zabeleženo polje" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: neveljavno doloÄilo opisnika datoteke" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: neveljaven opisnik datoteke: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: neveljavno Å¡tetje vrstic" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: neveljaven izvor polja" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: neveljaven del povratnega klica" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "prazno ime spremenljivke polja" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "potrebna podpora spremenljivke polja" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "`%s': manjka znak oblike" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "`%c': neveljavno doloÄilo vrste Äasa" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "`%c': neveljaven znak oblike" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "opozorilo: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "manjka Å¡estnajstiÅ¡ka Å¡tevka za \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "manjka Å¡tevka s podporo unicode za \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "ni druge mape" + +#: builtins/pushd.def:360 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: neveljaven argument omejitve" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "sklad mape je prazen" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "kazalo sklada mape" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Prikaže seznam trenutno pomnjenih map. Mape\n" +" so prikazane na seznamu z ukazom `pushd'; na vrh\n" +" seznama se lahko vrnete z ukazom `popd'.\n" +" \n" +" Možnosti:\n" +" -c\tizbriÅ¡i sklad mape z brisanjem vseh elementov\n" +" -l\tne izpiÅ¡i sorodnih map s predpono `~' v mojo domaÄo mapo\n" +" -p\tizpiÅ¡i sklad mape z enim vnosom v vrstici\n" +" -v\tizpiÅ¡i sklad mape z enim vnosom v vrstici z doloÄenim\n" +" \tpoložajem v skladu\n" +" \n" +" Argumenti:\n" +" +N\tPrikaže Nti vnos s Å¡tetjem z leve strani seznama, prikazan s\n" +" \tpomoÄjo map, ko kliÄemo brez možnosti, zaÄenÅ¡i z niÄ.\n" +" \n" +" -N\tPrikaže Nti vnos s Å¡tetjem z desne strani seznama, prikazan s\n" +"\tpomoÄjo map, ko kliÄemo brez možnosti, zaÄenÅ¡i z niÄ." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Doda mapo na vrh sklada mape ali zavrti\n" +" sklad, kar spremeni nov vrh sklada v trenutno delovno\n" +" mapo. ÄŒe je brez argumentov, se izmenjata najviÅ¡ji mapi.\n" +" \n" +" Možnosti:\n" +" -n\tPrepreÄuje obiÄajno spremembo mape pri dodajanju\n" +" \tmap na sklad, tako se obdeluje le sklad.\n" +" \n" +" Argumenti:\n" +" +N\tZavrti sklad tako, da je N-ta mapa (Å¡tetje\n" +" \tz leve strani seznama, prikazano z `dirs', zaÄenÅ¡i z\n" +" \tniÄ) na vrhu.\n" +" \n" +" -N\tZavrti sklad tako, da je N-ta mapa (Å¡tetje\n" +" \tz desne strani seznama, prikazano z `dirs', zaÄenÅ¡i z\n" +" \tniÄ) na vrhu.\n" +" \n" +" dir\tDoda DIR skladu mape na vrhu, kar jo spremeni v\n" +" \tnovo trenutno delovno mapo.\n" +" \n" +" Ukaz lupine `dirs' prikaže sklad map." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Odstrani vnose iz sklada map. ÄŒe je brez argumentov, odstrani\n" +" najviÅ¡jo mapo iz sklada in spremeni v novo mapo na vrhu.\n" +" \n" +" Možnosti:\n" +" -n\tPrepreÄuje obiÄajno spremembo mape pri dodajanju\n" +" \tmap iz sklada, tako se obdeluje le sklad.\n" +" \n" +" Argumenti:\n" +" +N\tOdstrani N-ti vnos s Å¡tetjem z leve strani seznama,\n" +" \tprikazano z `dirs', zaÄenÅ¡i z niÄ. Na primer: `popd +0'\n" +" \todstrani prvo mapo, `popd +1' odstrani drugo.\n" +" \n" +" -N\tOdstrani N-ti vnos s Å¡tetjem z desne strani seznama,\n" +" \tprikazano z `dirs', zaÄenÅ¡i z niÄ. Na primer: `popd +0'\n" +" \todstrani zadnjo mapo, `popd -1' odstrani predzadnjo.\n" +" \n" +" Ukaz lupine `dirs' prikaže sklad map." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: neveljavno doloÄilo Äasovne omejitve" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "napaka med branjem: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "`return' lahko vrne samo iz funkcije ali skripte z izvorno kodo" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "ni mogoÄe ponastaviti funkcije in spremenljivke hkrati" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: ni spremenljivka polja" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: ni funkcija" + +#: builtins/setattr.def:194 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: ni mogoÄe ponastaviti" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "Å¡tetje premika" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "ni mogoÄe nastaviti in ponastaviti možnosti lupine hkrati" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: neveljavno ime možnosti lupine" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "zahtevan je argument imena datoteke" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: datoteke ni mogoÄe najti" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "ni mogoÄe dati v pripravljenost" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "prijavne lupine ni mogoÄe dati v pripravljenost" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s je drugo ime za `%s'\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s je kljuÄna beseda lupine\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s je funkcija\n" + +#: builtins/type.def:299 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s je vgrajena lupina\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s je vgrajena lupina\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s je %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s je razprÅ¡eno (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: neveljaven argument omejitve" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "`%c': slab ukaz" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: ni mogoÄe dobiti omejitve: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "omejitev" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: ni mogoÄe spremeniti omejitve: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "osmiÅ¡ko Å¡tevilo" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "`%c': neveljaven operator simbolnega naÄina" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "`%c': neveljaven znak simbolnega naÄina" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " vrstica " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "zadnji ukaz: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Prekinjanje ..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:462 +msgid "unknown command error" +msgstr "neznana napaka ukaza" + +#: error.c:463 +msgid "bad command type" +msgstr "slaba vrsta ukaza" + +#: error.c:464 +msgid "bad connector" +msgstr "slab povezovalnik" + +#: error.c:465 +msgid "bad jump" +msgstr "slab skok" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: nedoloÄena spremenljivka" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\apotekla je Äasovna omejitev med Äakanjem na vnos: samodejna odjava\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "ni mogoÄe preusmeriti obiÄajnega vnosa iz /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': neveljaven znak oblike" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "napaka cevi" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: omejeno: ni mogoÄe doloÄiti `/' v imenih ukaza" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: ukaza ni mogoÄe najti" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: slab tolmaÄ" + +#: execute_cmd.c:5891 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: ni mogoÄe izvesti binarne datoteke" + +#: execute_cmd.c:5977 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s je vgrajena lupina\n" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "ni mogoÄe podvajati fd %d v fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "stopnja rekurzivnosti izraza presežena" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "prekoraÄitev spodnje meje sklada rekurzivnosti" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "skladenjska napaka v izrazu" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "poskus dodelitve ne-spremenljivki" + +#: expr.c:530 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "skladenjska napaka v izrazu" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "delitev z 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "hroÅ¡Ä: slab žeton expassign" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "`:' priÄakovano za pogojni izraz" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "eksponent je manjÅ¡i kot 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "po predhodnem veÄanju ali manjÅ¡anju je priÄakovano doloÄilo" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "manjka `)'" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "skladenjska napaka: priÄakovan operand" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "skladenjska napaka: neveljaven aritmetiÄni operand" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (žeton napake je \"%s\")" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "neveljavna aritmetiÄna zbirka" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: neveljavno Å¡tetje vrstic" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "vrednost je prevelika za zbirko" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: napaka izraza\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: ni mogoÄe dostopati do nadrejenih map" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "ni mogoÄe ponastaviti naÄina brez zakasnitve za fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "ni mogoÄe dodeliti opisnika novih map za vnos bash iz fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: medpomnilnik že obstaja za nov fd %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: cev pgrp" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "razvejen id opravila %d se pojavi v izvajajoÄem se poslu %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "brisanje ustavljenega posla %d s skupino opravila %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: id opravila %5ld (%s) je oznaÄen kot Å¡e živ" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: ni takÅ¡nega doloÄila opravila" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "KonÄano" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Zaustavljeno" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Zaustavljeno(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Se izvaja" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "KonÄano(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "KonÄaj %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Neznano stanje" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(izpis jedra) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "podrejeno opravilo setpgid (%ld v %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: opravilo z id %ld ni podrejeno opravilo te lupine" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: ni zapisov o opravilu %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: posel %d je zaustavljen" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: ni takÅ¡nega posla" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: posel je uniÄen" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: posel %d se že izvaja v ozadju" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: vklop WNOHANG za prepreÄitev nedoloÄenosti bloka" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: vrstica %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (izpis jedra)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd zdaj: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp je spodletel" + +#: jobs.c:4447 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: vrstiÄna disciplina" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: vrstiÄna disciplina" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "ni mogoÄe nastaviti skupine opravil terminala (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "brez nadzora posla v tej lupini" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: spodletela trditev: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: trditev je bila slabo izpeljana\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "neznano" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: vsebina bloka na prostem seznamu je bila prepisana" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: poklican z že sproÅ¡Äenim argumentom bloka" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: klic z nedodeljenim argumentom bloka" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: zaznana prekoraÄitev spodnje meje; mh_nbytes je izven dosega" + +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: zaznana prekoraÄitev spodnje meje; mh_nbytes je izven dosega" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "" +"free: velikosti zaÄetnih in konÄnih podatkovnih kosov \"chunk\" se " +"razlikujejo" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: klic z nedodeljenim argumentom bloka" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: zaznana prekoraÄitev spodnje meje; mh_nbytes je izven dosega" + +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: zaznana prekoraÄitev spodnje meje; mh_nbytes je izven dosega" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "" +"realloc: velikosti zaÄetnih in konÄnih podatkovnih kosov \"chunk\" se " +"razlikujejo" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: je dodelitvena razpredelnica polna z FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: je %p že v razpredelnici kot dodeljen?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: je %p že v razpredelnici kot prost?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "neveljavna zbirka" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: gostitelj je neznan" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: neveljavna storitev" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: slabo doloÄilo omrežne poti" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "omrežno opravilo ni podprto" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: ni mogoÄe spremeniti jezikovne oznake (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: ni mogoÄe spremeniti jezikovne oznake (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: ni mogoÄe spremeniti jezikovne oznake (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: ni mogoÄe spremeniti jezikovne oznake (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Imate poÅ¡to v $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Imate novo poÅ¡to v $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "PoÅ¡ta v %s je bila prebrana\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "skladenjska napaka: potreben je aritmetiÄni izraz" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "skladenjska napaka: `;' nepriÄakovano" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "skladenjska napaka: `((%s))'" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: slaba vrsta navodila %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "here-document v vrstici %d razmejen z end-of-file (želeno `%s')" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: navodilo preusmeritve `%d' je izven dosega" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "nepriÄakovan konec datoteke med iskanjem ujemanja z `%c'" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "nepriÄakovan konec datoteke med iskanjem ujemanja z `]]'" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "skladenjska napaka v pogojnem izrazu: nepriÄakovan žeton `%s'" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "skladenjska napaka v pogojnem izrazu" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "nepriÄakovan žeton `%s', priÄakovan je bil `)'" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "priÄakovan `)'" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "nepriÄakovan argument `%s' do pogojnega enoslovnega operatorja" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "nepriÄakovan argument do pogojnega enoslovnega operatorja" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "nepriÄakovan žeton `%s', priÄakovan je binarni pogojni operator" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "priÄakovan je binarni pogojni operator" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "nepriÄakovan argument `%s' do pogojnega binarnega operatorja" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "nepriÄakovan argument do pogojnega binarnega operatorja" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "nepriÄakovan žeton `%c' v pogojnem ukazu" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "nepriÄakovan žeton `%s' v pogojnem ukazu" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "nepriÄakovan žeton %d v pogojnem ukazu" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "skladenjska napaka blizu nepriÄakovanega žetona `%s'" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "skladenjska napaka blizu `%s'" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "skladenjska napaka: nepriÄakovan konec datoteke" + +#: parse.y:6365 +msgid "syntax error" +msgstr "skladenjska napaka" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Uporabite \"%s\", Äe želite zapustiti lupino.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "nepriÄakovan konec datoteke med iskanjem ujemanja z `)'" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "konÄano: funkcije `%s' ni mogoÄe najti" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: slab povezovalnik `%d'" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: neveljaven opisnik datoteke" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: prazen kazalec datoteke NULL" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: `%c': neveljaven znak oblike" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "opisnik datoteke je izven dosega" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: dvoumna preusmeritev" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: ni mogoÄe prepisati obstojeÄe datoteke" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: omejitev: ni mogoÄe preusmeriti izhoda" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "ni mogoÄe ustvariti zaÄasne datoteke za here-document: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: ni mogoÄe dodeliti fd spremenljivki" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port ni podprt brez omrežja" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "napaka preusmeritve: ni mogoÄe podvajati fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "ni mogoÄe najti /tmp, ustvarite ga!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp mora biti veljavno ime mape" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: neveljavna možnost" + +#: shell.c:1319 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "ni mogoÄe ponastaviti naÄina brez zakasnitve za fd %d" + +#: shell.c:1330 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "ni mogoÄe ponastaviti naÄina brez zakasnitve za fd %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1632 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: je mapa" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "Ni imena!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, razliÄica %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Uporaba:\t%s [dolga možnost GNU] [možnost] ...\n" +"\t%s [dolga možnost GNU] [možnost] skriptni dokument ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "Dolge možnosti GNU:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Možnosti lupine:\n" + +#: shell.c:2043 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-irsD ali ukaz -c ali -O shopt_option\t\t(samo sklicevanje)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s ali možnost -o\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "VpiÅ¡ite `%s -c \"help set\"' za veÄ podrobnosti o možnostih lupine.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "VpiÅ¡ite `%s -c help' za veÄ podrobnosti o možnostih ukazov lupine.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Uporabite ukaz `bashbug' za poroÄanje hroÅ¡Äev.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: neveljavno opravilo" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Lažen signal" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Odloži" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Prekini" + +#: siglist.c:58 +msgid "Quit" +msgstr "KonÄaj" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Neveljaven ukaz" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ukaz ABORT" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "ukaz EMT" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Izjema s plavajoÄo vejico" + +#: siglist.c:86 +msgid "Killed" +msgstr "UniÄen" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Napaka vodila" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Napaka segmentacije" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Slab sistemski klic" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Prekinjena cev" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Budilka" + +#: siglist.c:110 +msgid "Terminated" +msgstr "ZakljuÄen" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Nujen pogoj IO" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Ustavljen (signal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Nadaljuj" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Podrejeno opravilo je uniÄeno ali zaustavljeno" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Ustavljen (vhod TTY)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Ustavljen (izhod TTY)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O je pripravljen" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "omejitev CPE" + +#: siglist.c:154 +msgid "File limit" +msgstr "omejitev datoteke" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Budilka (navidezna)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Budilka (profil)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Okno se je spremenilo" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Zaklep zapisa" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "Signal uporabnika 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Signal uporabnika 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "vnos podatkov HFT je na Äakanju" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "izpad elektriÄnega toka je neizbežen" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "sesutje sistema je neizbežno" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "preseli opravilo na drug CPE" + +#: siglist.c:198 +msgid "programming error" +msgstr "napaka programiranja" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "naÄin nadzora HFT je odobren" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "naÄin nadzora HFT je umaknjen" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "zaporedje zvoka HFT je konÄano" + +#: siglist.c:214 +msgid "Information request" +msgstr "zahteva po podatkih" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Neznan signal #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "slaba zamenjava: ni zakljuÄka `%s' v %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: ni mogoÄe dodeliti seznama Älanu polja" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "ni mogoÄe ustvariti cevi za zamenjavo opravila" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "ni mogoÄe ustvariti podrejenega opravila za zamenjavo opravila" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "ni mogoÄe odpreti imenovane cevi %s za branje" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "ni mogoÄe odpreti imenovane cevi %s za pisanje" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "ni mogoÄe podvajati imenovane cevi %s kot fd %d" + +#: subst.c:6213 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "slaba zamenjava: ni zakljuÄka \"`\" v %s" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "ni mogoÄe ustvariti cevi za zamenjavo ukaza" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "ni mogoÄe ustvariti podrejenega opravila za zamenjavo ukaza" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: ni mogoÄe podvajati cevi kot fd 1" + +#: subst.c:6883 subst.c:9952 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: neveljavno Å¡tetje vrstic" + +#: subst.c:7013 subst.c:7177 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "`%s': neveljaven vzdevek" + +#: subst.c:7256 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter je prazen ali pa ni doloÄen" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter je prazen ali pa ni doloÄen" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: izraz podniza < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: slaba zamenjava" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: ni mogoÄe dodeliti na tak naÄin" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"prihodnje razliÄice lupine bodo prisilile ocenitev kot aritmetiÄno zamenjavo" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "slaba zamenjava: ni zakljuÄka \"`\" v %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "ni ujemanja: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "priÄakovan je argument" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: priÄakovan je izraz celega Å¡tevila" + +#: test.c:265 +msgid "`)' expected" +msgstr "priÄakovan je `)'" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "priÄakovan je `)', najden je %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: priÄakuje se binarni operator" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: priÄakuje se enosnoven operator" + +#: test.c:881 +msgid "missing `]'" +msgstr "manjka `]'" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "skladenjska napaka: `;' nepriÄakovano" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "neveljavna Å¡tevka signala" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: slaba vrednost v trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: roÄnik signala je SIG_DFL, ponovno poÅ¡iljanje %d (%s) sebi" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: slab signal %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "napaka med uvozom doloÄila funkcije `%s'" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "raven lupine (%d) je previsoka, ponastavljanje na 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: v trenutnem dosegu ni vsebine funkcije" + +#: variables.c:2693 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: ni mogoÄe dodeliti fd spremenljivki" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: v trenutnem dosegu ni vsebine funkcije" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s ima prazen exportstr" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "neveljaven znak %d v exportstr za %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "ni `=' v exportstr za %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: glava shell_variables ni vsebina funkcije" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: ni vsebine global_variables" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: glava shell_variables ni trenuten obseg okolja" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: ni mogoÄe odpreti kot DATOTEKO" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" + +#: variables.c:6437 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s izven dosega" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n" + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Dovoljenje GPLv3+: GNU GPL razliÄica 3 ali poznejÅ¡e \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, razliÄica %s (%s)\n" + +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." +msgstr "To je prosta programska oprema; lahko jo spreminjate in razÅ¡irjate.\n" + +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Je BREZ KAKRÅ NEKOLI GARANCIJE, v obsegu, ki ga dovoljuje zakonodaja.\n" + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: ni mogoÄe dodeliti %lu bajtov (%lu bajtov je dodeljenih)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: ni mogoÄe dodeliti %lu bajtov" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: ni mogoÄe dodeliti %lu bajtov (%lu bajtov dodeljenih)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: ni mogoÄe dodeliti %lu bajtov" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [ime[=vrednost] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] ime [ime ...]" + +#: builtins.c:53 +#, fuzzy +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m tipk_razvrstitev] [-f ime_dat] [-q ime] [-u ime] [-r " +"tipk_zaporedje] [-x tipk_zaporedje:ukaz_lupine] [tipk_zaporedje:" +"funkcija_brane_vrstice ali ukaz_brane_vrstice]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [vgrajena_lupina [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [izraz]" + +#: builtins.c:66 +#, fuzzy +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]]] [mapa]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "ukaz [-pVv] ukaz [arg ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilrtux] [-p] [ime[=vrednost] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilrtux] [-p] ime[=vrednost] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [možnost] ime[=vrednost] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f ime_datoteke] [ime ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts niz_možnosti ime[arg]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a ime] [ukaz [argumenti ...]] [preusmeritev ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e ime_urejevalnika] [-lnr] [prvi] [zadnji] ali fc -s [vzorec=zamenjava] " +"[ukaz]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [doloÄilo_posla]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [doloÄilo_posla ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p ime_poti] [-dt] [ime ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [vzorec ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d odmik] [n] ali history -anrw [ime_datoteke] ali history -ps " +"arg [arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [doloÄilo_posla ...] ali jobs -x ukaz [argumenti]" + +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [doloÄilo_posla ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s doloÄilo_signala | -n Å¡t_signala | -doloÄilo_signala] pid | " +"doloÄilo_posla ... ali kill -l [doloÄilo_signala]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a polje] [-d razmejilnik] [-i besedilo] [-n n-znakov] [-N n-" +"znakov] [-p poziv] [-t Äasovna_omejitev] [-u fd] [ime ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o ime_možnosti] [--] [arg ...]" + +#: builtins.c:144 +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [ime ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [ime[=vrednost] ...] ali export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [ime[=vrednost] ...] ali readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source ime_datoteke [argumenti]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". ime_datoteke [argumenti]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [izraz]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] doloÄilo_signala ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] ime [ime ...]" + +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [meja]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [naÄin]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [id]" + +#: builtins.c:181 +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id_opravila]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for IME [in IMENA ... ] ; do UKAZI; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( izraz1; izraz2; izraz3 )); do UKAZI; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select IME [in IMENA ... ;] do UKAZI; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] cevovod" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case IME in [VZOREC [| VZOREC]...) UKAZI ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if UKAZI; then UKAZI; [ elif UKAZI; then UKAZI; ]... [ else UKAZI; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while UKAZI; do UKAZI; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until UKAZI; do UKAZI; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [IME] ukaz [preusmeritve]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function ime { UKAZI ; } ali ime () { UKAZI ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ UKAZI ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "doloÄilo_posla [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( izraz ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ izraz ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "spremenljivke - Imena in pomeni nekaterih spremenljivk lupine" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | mapa]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [ime_možnosti ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v spremenljivka] oblika [argumenti]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o možnost] [-A dejanje] [-G " +"krajevni_vzorec] [-W seznam_besed] [-F funkcija] [-C ukaz] [-X " +"filtrirni_vzorec] [-P predpona] [-S pripona] [ime ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o možnost] [-A dejanje] [-G krajevni_vzorec] [-W " +"seznam_besed] [-F funkcija] [-C ukaz] [-X filtrirni_vzorec] [-P predpona] [-" +"S pripona] [beseda]" + +#: builtins.c:239 +#, fuzzy +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o možnost] [-DE] [ime ...]" + +#: builtins.c:242 +#, fuzzy +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-n Å¡tevec] [-O izvor] [-s Å¡tevec] [-t] [-u fd] [-C povratni_klic] [-" +"c del] [polje]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n Å¡tevec] [-O izvor] [-s Å¡tevec] [-t] [-u fd] [-C povratni_klic] " +"[-c del] [polje]" + +#: builtins.c:256 +#, fuzzy +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"DoloÄi ali prikaže vzdevke.\n" +" \n" +" ÄŒe je `alias' brez argumentov, izpiÅ¡e seznam vzdevkov v obliki za\n" +" veÄkratno uporabo `alias IME=VREDNOST' na standardnem izpisu.\n" +" \n" +" V nasprotnem primeru je za vsako IME doloÄen vzdevek, Äigar\n" +" VREDNOST je podana.\n" +" Vmesni presledni znak v VREDNOSTI povzroÄi, da naslednjo\n" +" besedo preveri za zamenjavo vzdevka, ko je ta razÅ¡irjen.\n" +" \n" +" Možnosti:\n" +" -p\tIzpiÅ¡i vse doloÄene vzdevke v obliki za veÄkratno uporabo\n" +" \n" +" Status konÄanja:\n" +" vzdevek vrne pravilno, razen Äe je predloženo IME, za katero ni\n" +" bil doloÄen noben vzdevek." + +#: builtins.c:278 +#, fuzzy +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Odstrani vsako IME s seznama doloÄenih vzdevkov.\n" +" \n" +" Možnosti:\n" +" -a\todstrani vsa doloÄila vzdevkov.\n" +" \n" +" Vrne pravilno, razen Äe IME ni obstojeÄ vzdevek." + +#: builtins.c:291 +#, fuzzy +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Nastavi tipkovne bližnjice in spremenljivke funkcije Readline.\n" +" \n" +" Veže zaporedje tipk na funkcijo Readline ali makro ali nastavi\n" +" spremenljivko Readline. Skladnja argumenta brez možnosti\n" +" je enakovredna najdbi v ~/.inputrc, vendar mora biti podana\n" +" kot en argument:\n" +" na primer, bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Možnosti:\n" +" -m tipk_razvr Uporabi TIPK_RAZVR kot tipkovno razvrstitev za Äas " +"trajanja\n" +" tega ukaza. Sprejemljiva imena tipkovnih " +"razvrstitev so emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command in vi-insert.\n" +" -l Prikaži imena funkcij.\n" +" -P Prikaži imena funkcij in tipkovne bližnjice.\n" +" -p Prikaži imena funkcij in tipkovne bližnjice v obliki, ki se lahko\n" +" ponovno uporabi kot vnos.\n" +" -S Prikaži tipkovna zaporedja, ki se sklicujejo na makre in njihove " +"vrednosti.\n" +" -s Prikaži tipkovna zaporedja, ki se sklicujejo na makre in njihove " +"vrednosti\n" +" v obliki, ki se lahko ponovno uporabi kot vnos.\n" +" -V Prikaži imena spremenljivk in vrednosti\n" +" -v Prikaži imena spremenljivk in vrednosti v obliki, ki se lahko\n" +" ponovno uporabi kot vnos.\n" +" -q ime_funkcije Poizvedi, katere tipke se sklicujejo na imenovano " +"funkcijo.\n" +" -u ime_funkcije Odveži vse tipke, ki se vežejo na imenovano funkcijo.\n" +" -r zaporedje_tipk Odstrani vez za ZAPOREDJE_TIPK.\n" +" -f ime_datoteke Beri tipkovne bližnjice iz IME_DATOTEKE.\n" +" -x zaporedje_tipk:ukaz_lupine\tPovzroÄi, da se UKAZ_LUPINE izvrÅ¡i,\n" +" \t\t\t\tko je vneÅ¡eno ZAPOREDJE_TIPK.\n" +" \n" +" Status konÄanja:\n" +" bind vrne 0, razen, Äe je dana neprepoznana možnost ali se pojavi napaka." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"KonÄa zanko for, while ali until.\n" +" \n" +" KonÄaj zanko FOR, WHILE ali UNTIL. ÄŒe je N podan, prekini N obdanih\n" +" zank.\n" +" \n" +" Stanje konÄanja:\n" +" Stanje konÄanja je 0, razen Äe N ni veÄji kot ali enak 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Nadaljuje zanko for, while ali until.\n" +" \n" +" Nadaljuje naslednjo ponovitev obdane zanke FOR, WHILE ali UNTIL.\n" +" ÄŒe je N podan, nadaljuje N-to obdano zanko.\n" +" \n" +" Stanje konÄanja:\n" +" Stanje konÄanja je 0, razen Äe N ni veÄji kot ali enak 1." + +#: builtins.c:354 +#, fuzzy +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Izvede vgrajeno lupino.\n" +" \n" +" Izvede VGRAJENO_LUPINO z argumenti ARG brez opravljanja iskanja\n" +" ukaza. To je uporabno, ko želite ponovno izvesti vgrajeno lupino\n" +" kot funkcijo lupine, vendar bi radi izvedli vgrajeno lupino znotraj " +"funkcije.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje konÄanja VGRAJENE_LUPINE ali napak, Äe VGRAJENA_LUPINA\n" +" ni vgrajena lupina .." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Vrne vsebino trenutnega klica podprograma.\n" +" \n" +" Brez IZRAZA vrne \"$line $filename\". Z IZRAZOM vrne\n" +" \"$line $subroutine $filename\"; ta dodaten podatek se lahko uporabi\n" +" za zagotovitev sledenja sklada.\n" +" \n" +" Vrednost IZRAZA nakazuje, koliko okvirjev klicev mora nazaj\n" +" pred trenutnega; zgornji okvir je okvir 0.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne 0, razen Äe lupina ne izvrÅ¡uje funkcije lupine ali pa IZRAZ\n" +" ni veljaven." + +#: builtins.c:387 +#, fuzzy +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Spremeni delovno mapo lupine.\n" +" \n" +" Spremeni trenutno mapo v DIR. Privzet DIR je vrednost spremenljivke\n" +" lupine HOME.\n" +" \n" +" Spremenljivka CDPATH doloÄa iskalno pot za mapo, ki vsebuje DIR.\n" +" Nadomestna imena map v CDPATH so loÄena z dvopiÄjem (:).\n" +" Prazno ime mape se enaÄi s trenutno mapo. ÄŒe se DIR zaÄne\n" +" s poÅ¡evnico (/), potem se CDPATH ne uporabi.\n" +" \n" +" ÄŒe mapa ni najdena in je možnost lupine `cdable_vars' doloÄena,\n" +" se predvideva, da je beseda ime spremenljivke. ÄŒe spremenljivka\n" +" ima vrednost, se le-ta uporabi za DIR.\n" +" \n" +" Možnosti:\n" +" -L\tprisili sledenje simbolnim povezavam\n" +" -P\tuporabi fiziÄno strukturo map brez sledenja simbolnim\n" +" \tpovezavam\n" +" -e\tÄe je možnost -P predložena in trenutne delovne mape\n" +" \tni mogoÄe uspeÅ¡no doloÄiti, konÄaj z ne-niÄelnim stanjem\n" +" \n" +" Sledenje simbolnim povezavam je privzeto, kot Äe bi možnost `-L'\n" +" bila predložena\n" +" \n" +" Stanje konÄanja:\n" +" Vrne 0, Äe je mapa spremenjena in Äe je $PWD uspeÅ¡no nastavljen, kadar\n" +" je uporabljena možnost -P; drugaÄe je ne-niÄelna vrednost" + +#: builtins.c:425 +#, fuzzy +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"IzpiÅ¡e ime trenutne delovne mape.\n" +" \n" +" Možnosti:\n" +" -L\tprikaže vrednost $PWD, Äe imenuje trenutno delovno\n" +" \tmapo\n" +" -P\tprikaže fiziÄno mapo brez vsakrÅ¡nih simbolnih povezav\n" +" \n" +" Privzeto se `pwd\" obnaÅ¡a, kot Äe bi možnost `-L ' bila doloÄena.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne 0, razen Äe je dana neveljavna možnost ali pa trenutne mape\n" +" ni mogoÄe prebrati." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Prazen ukaz.\n" +" \n" +" Brez uÄinka; ukaz ne naredi niÄesar.\n" +" \n" +" Stanje konÄanja:\n" +" Vedno uspeÅ¡no." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Vrne uspeÅ¡en rezultat.\n" +" \n" +" Stanje konÄanja:\n" +" Vedno uspeÅ¡no." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Vrne neuspeÅ¡en rezultat.\n" +" \n" +" Stanje konÄanja:\n" +" Vedno neuspeÅ¡no." + +#: builtins.c:471 +#, fuzzy +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Izvede preprost ukaz ali prikaže podrobnosti o ukazih.\n" +" \n" +" Zažene UKAZ z ARGUMENTI in zavira iskanje funkcije lupine ali prikaže\n" +" podrobnosti o doloÄenih UKAZIH. Lahko se uporabi za klic ukazov\n" +" na disku, kadar obstaja funkcija z enakim imenom.\n" +" \n" +" Možnosti:\n" +" -p\tuporabi privzeto vrednost za POT, ki bo zagotovo naÅ¡la vse\n" +" \tstandardne pripomoÄke\n" +" -v\tprikaži opis UKAZA, podobno kot vgrajena lupina `type'\n" +" -V\tprikaži bolj podrobni izpis vsakega UKAZA\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje konÄanja UKAZA ali neuspeÅ¡no, Äe UKAZA ni mogoÄe najti." + +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Nastavi vrednosti spremenljivk in atributov.\n" +" \n" +" Deklarira spremenljivke in jim da atribute. ÄŒe ni podanih IMEN,\n" +" prikaže atribute in vrednosti vseh spremenljivk.\n" +" \n" +" Možnosti:\n" +" -f\tomeji ukrep ali prikaži imena funkcij in doloÄilom\n" +" -F\tomeji prikaz samo imen funkcij (ter Å¡tevilo vrstice in\n" +" \tizvorno datoteko, kadar je dejavno razhroÅ¡Äevanje)\n" +" -g\tustvari sploÅ¡ne spremenljivke, kadar so uporabljene v funkciji\n" +" \tlupine; v nasprotnem primeru je prezrto\n" +" -p\tprikaži atribute in vrednost vsakega IMENA\n" +" \n" +" Možnosti, ki doloÄajo atribute\n" +" -a\tda so IMENA zabeležena polja (Äe je podprto)\n" +" -A\tda so IMENA povezana polja (Äe je podprto)\n" +" -i\tda imajo IMENA atribute celih Å¡tevil `integer'\n" +" -l\tda se IMENA pretvorijo v male Ärke pri dodelitvi\n" +" -r\tda so IMENA samo za branje\n" +" -t\tda imajo IMENA atribut sledenja `trace'\n" +" -u\tda se IMENA pretvorijo v velike Ärke pri dodelitvi\n" +" -x\tda se IMENA izvozijo\n" +" \n" +" Uporaba `+' namesto `-' izklopi dan atribut.\n" +" \n" +" Spremenljivkam z atributom celega Å¡tevila se izvede aritmetiÄno\n" +" vrednotenje (poglejte ukaz `let'), kadar je spremenljivki\n" +" dodeljena vrednost.\n" +" \n" +" Ko se uporabi v funkciji, `declare' naredi IMENA krajevna kot\n" +" pri ukazu `local'. Možnost `-g' zavira to obnaÅ¡anje.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali pride\n" +" do napake." + +#: builtins.c:532 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Nastavi vrednosti spremenljivk in atributov.\n" +" \n" +" Zastarelo. Oglejte si `help declare'." + +#: builtins.c:540 +#, fuzzy +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"DoloÄi krajevne spremenljivke.\n" +" \n" +" Ustvari krajevno spremenljivko z imenom IME in ji dodeli VREDNOST.\n" +" MOŽNOST je lahko katera koli, sprejeta z `declare'.\n" +" \n" +" Krajevne spremenljivke se lahko uporabijo samo znotraj funkcije;\n" +" vidne so samo funkciji, kjer so doloÄene in njenim podprogramom.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost, pride\n" +" do napake ali pa lupina ne izvaja funkcije." + +#: builtins.c:557 +#, fuzzy +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"PiÅ¡e argumente na standardni izhod.\n" +" \n" +" Prikaže ARGUMENTE na standardnem izhodu, ki mu sledi nova vrstica.\n" +" \n" +" Možnosti:\n" +" -n\tne pripni nove vrstice\n" +" -e\tomogoÄi tolmaÄenje naslednjih ubežnih levih poÅ¡evnic\n" +" -E\tizrecno zatri tolmaÄenje ubežnih levih poÅ¡evnic\n" +" \n" +" `echo' tolmaÄi naslednje znake ubežnih levih poÅ¡evnic:\n" +" \\a\talarm (zvonec)\n" +" \\b\tvraÄalka\n" +" \\c\tzatre nadaljni izpis\n" +" \\e\tubežni znak\n" +" \\f\tnova stran\n" +" \\n\tnova vrstica\n" +" \\r\tpomik na zaÄetek vrstice\n" +" \\t\tvodoravni tabulator\n" +" \\v\tnavpiÄni tabulator\n" +" \\[tab]leva poÅ¡evnica\n" +" \\0nnn\tznak, katerega vrednost ASCII je NNN (osmiÅ¡ka). NNN je lahko\n" +" \tod 0 do 3 osmiÅ¡ka Å¡tevila\n" +" \\xHH\t8-bitni znak, katerega vrednost je HH (Å¡estnajstiÅ¡ka). HH\n" +" \tje lahko ena ali dve Å¡estnajstiÅ¡ki Å¡tevili\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe pride do napake pri pisanju." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"PiÅ¡e argumente na standardni izhod.\n" +" \n" +" Prikaže ARGUMENTE na standardni izhod, temu sledi nova vrstica.\n" +" \n" +" Možnosti:\n" +" -n\tne pripni nove vrstice\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe pride do napake pri pisanju." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"OmogoÄi in onemogoÄi vgrajene lupine.\n" +" \n" +" OmogoÄi in onemogoÄi ukaze vgrajene lupine. OnemogoÄenje dovoli\n" +" izvedbo ukaza diska, ki ima enako ime kot vgrajena lupina, brez\n" +" uporabe polnega imena poti.\n" +" \n" +" Možnosti:\n" +" -a\tprikaži seznam vgrajenih lupin, ki kaže, katera je omogoÄena\n" +" -n\tonemogoÄi vsako IME ali pa prikaži seznam onemogoÄenih\n" +" \tvgrajenih lupin\n" +" -p\tprikaži seznam vgrajenih lupin v obliki za veÄkratno uporabo\n" +" -s\tprikaži samo imena posebnih vgrajenih lupin `special'\n" +" \tpo POSIX standardu\n" +" \n" +" Možnosti, ki nadzorujejo dinamiÄno nalaganje:\n" +" -f\tnaloži IME iz predmeta IME_DATOTEKE v souporabi\n" +" -d\todstrani vgrajeno lupino, naloženo z -f\n" +" \n" +" Brez podanih možnosti je vsako IME omogoÄeno.\n" +" \n" +" Za uporabo preizkusa 'test', najdenega v $PATH, in ne razliÄice\n" +" vgrajene lupine, vpiÅ¡ite `enable -n test'.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe IME ni vgrajena lupina ali Äe pride do napake." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Zažene argumente kot ukaze lupine.\n" +" \n" +" Združi ARGUMENTA v en niz, uporabi rezultat kot vnos v lupino\n" +" in zaženi konÄne ukaze.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje konÄanja ali uspeÅ¡no, Äe je ukaz prazen." + +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"RazÄleni argumente možnosti.\n" +" \n" +" Getopts je uporabljen s strani postopkov lupine za razÄlenitev\n" +" položajnih parametrov kot možnosti.\n" +" \n" +" NIZ_MOŽNOSTI vsebuje Ärke možnosti za prepoznavo; Äe dvopiÄju\n" +" sledi Ärka, se za možnost priÄakuje dodeljen argument, ki mora\n" +" biti loÄen s preslednim znakom.\n" +" \n" +" VsakiÄ, ko je klican, bo getopts postavil naslednjo možnost v\n" +" spremenljivko lupine $name, nastavil ime, Äe Å¡e ne obstaja, in\n" +" kazalo naslednjega argumenta bo obdelano v spremenljivko\n" +" lupine OPTIND. OPTIND je nastavljen na 1 vsakiÄ, ko je lupina ali\n" +" skripta lupine poklicana. Ko možnost zahteva argument, ga\n" +" getopts premakne v spremenljivko lupine OPTARG. \n" +" \n" +" getopts poroÄa napake na eden izmed dveh naÄinov. ÄŒe je prvi\n" +" znak OPTSTRING dvopiÄje, getopts uporabi tiho poroÄanje napak.\n" +" V tem naÄinu ni izpisanih sporoÄil o napakah. ÄŒe je videna neveljavna\n" +" možnost, getopts postavi najden znak možnosti v OPTARG. ÄŒe\n" +" zahtevan argument ni najden, getopts postavi ':' v IME in dodeli\n" +" OPTARG nadenemu znaku možnosti. ÄŒe getopts ni v tihem naÄinu\n" +" in je videnaneveljavna možnost, getopts postavi '?' v IME in\n" +" ponastavi OPTARG. ÄŒe zahtevan argument ni najden, je '?'\n" +" postavljen v IME, OPTARG je ponastavljen in prikazano je\n" +" diagnostiÄno sporoÄilo.\n" +" \n" +" ÄŒe ima spremenljivka lupine OPTERR vrednost 0, getopts\n" +" onemogoÄi prikaz sporoÄil o napakah, tudi Äe prvi znak OPTSTRING\n" +" ni dvopiÄje. OPTERR ima privzeto vrednost 1.\n" +" \n" +" Getopts obiÄajno razÄleni položajne parametre ($0 - $9), toda Äe je\n" +" danih veÄ argumentov, se jih razÄleni.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, Äe je možnost najdena; neuspeÅ¡no, Äe pride\n" +" do konca možnosti ali do napake." + +#: builtins.c:694 +#, fuzzy +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Zamenja lupino z danim ukazom.\n" +" \n" +" Izvede UKAZ, ki zamenja to lupino z doloÄenim programom.\n" +" ARGUMENTI postanejo argumenti UKAZU. ÄŒe UKAZ ni doloÄen,\n" +" se vsaka preusmeritev uveljavi v trenutni lupini.\n" +" \n" +" Možnosti:\n" +" -a ime\tposreduj IME kot niÄni argument UKAZU\n" +" -c\t\tizvedi UKAZ s praznim okoljem\n" +" -l\t\tpostavi pomiÅ¡ljaj v niÄni argument UKAZU\n" +" \n" +" ÄŒe ukaza ni bilo mogoÄe izvesti, se ne-vzajemna lupina konÄa, razen\n" +" Äe je nastavljena možnost lupine `execfail' .\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe UKAZ ni najden ali pride do napake preusmeritve." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"KonÄa lupino.\n" +" \n" +" KonÄa lupino s stanjem N. ÄŒe je N izpuÅ¡Äen, se uporabi stanje\n" +" konÄanja zadnjega izvrÅ¡enega ukaza." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"KonÄa prijavno lupino.\n" +" \n" +" KonÄa prijavno lupino s stanjem konÄanja N. Vrne napako, Äe se\n" +" ne izvede v prijavni lupini." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Prikaže ali izvede ukaze s seznama zgodovine.\n" +" \n" +" fc se uporablja za seznam ali urejanje in ponovno izvajanje ukazov\n" +" s seznama zgodovine. PRVI in ZADNJI sta lahko Å¡tevili, ki doloÄata " +"obseg\n" +" oz. PRVI je lahko niz, kar pomeni, da se nedavni ukaz zaÄne s tem " +"nizom.\n" +" \n" +" Možnosti:\n" +" -e IME_UREJEVALNIKA\tizbere urejevalnik za uporabo. Privzet je\n" +" \t\tFCEDIT, nato EDITOR, nato vi\n" +" -l \tprikaže vrstice namesto urejanja\n" +" -n\tzanemari Å¡tevilke vrstic med navedbo\n" +" -r\tobrni vrstni red vrstic (najnovejÅ¡e so navedene prve)\n" +" \n" +" Z obliko `fc -s [vzorec=zamenjava] [ukaz]' se UKAZ ponovno izvede \n" +" po tem, ko se opravi nadomeÅ¡Äanje OLD=NEW.\n" +" \n" +" Lahko se uporabi uporaben vzdevek r='fc -s' tako, da se z vnosom \n" +" `r cc' zažene zadnji ukaz, ki se zaÄne z `cc' in vnosom `r' se ponovno \n" +" izvede zadnji ukaz.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no ali stanje izvedenega ukaza; ne-niÄelno, Äe pride do napake." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Premakne posel v ospredje.\n" +" \n" +" Premakne posel, doloÄen s strani DOLOÄŒILA_POSLA, v ospredje,\n" +" kar ga spremeni v trenutni posel. ÄŒe DOLOÄŒILO_POSLA ni prisotno,\n" +" se uporabi oznaÄba lupine trenutnega posla.\n" +" \n" +" Stanje konÄanja:\n" +" Stanje ukaza, postavljenega v ospredje, ali neuspeÅ¡no, Äe se\n" +" pojavi napaka." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Premakne posle v ozadje.\n" +" \n" +" Postavi posle, doloÄene s strani JOB_SPEC, v ozadje, kot Äe bi se\n" +" zaÄeli z `&'. ÄŒe JOB_SPEC ni prisoten, se uporabi oznaÄba lupine\n" +" trenutnega posla.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe nadzor posla ni omogoÄen ali Äe pride\n" +" do napake." + +#: builtins.c:793 +#, fuzzy +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Shrani ali prikaži mesta programov.\n" +" \n" +" DoloÄi in shrani polno ime poti vsakega IMENA ukaza. ÄŒe\n" +" ni danih argumentov, se prikažejo podrobnosti o shranjenih ukazih.\n" +" \n" +" Možnosti:\n" +" -d\t\tpozabi shranjeno mesto vsakega IMENA\n" +" -l\t\tprikaži v obliki, ki se lahko ponovno uporabi kot vnos\n" +" -p ime_poti\tuporabi IME_POTI kot polno ime poti IMENA\n" +" -r\t\tpozabi vsa shranjena mesta\n" +" -t\t\tprikaži shranjena mesta vsakega IMENA, temu sledi\n" +" \t\tvsako mesto z ustreznim IMENOM, Äe je danih veÄ IMEN\n" +" ArgumentI:\n" +" IME\t\tVsako IME je iskano v $PATH in dodano na seznam\n" +" \t\tshranjenih ukazov.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe IME ni najdeno ali Äe je dana neveljavna možnost." + +#: builtins.c:818 +#, fuzzy +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Prikaže podrobnosti o ukazih vgrajene lupine.\n" +" \n" +" Prikaže kratke povzetke ukazov vgrajene lupine. ÄŒe je VZOREC\n" +" doloÄen, da podrobno pomoÄ za vse ukaze, ki se ujemajo z VZORCEM,\n" +" v nasprotnem primeru prikaže seznam tem pomoÄi.\n" +" \n" +" Možnosti:\n" +" -d\tizpiÅ¡i kratek opis za vsako temo\n" +" -m\tprikaži uporabo v obliki psevdo-priroÄniÅ¡ke strani\n" +" -s\tprikaži samo kratek povzetek uporabe za vsako temo, ki se\n" +" \tujema z VZORCEM\n" +" \n" +" ArgumentI:\n" +" VZOREC\tVzorec, ki navaja temo pomoÄi\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe VZOREC ni najden ali pa je dana neveljavna\n" +" možnost." + +#: builtins.c:842 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Prikaže ali obdela seznam zgodovine.\n" +" \n" +" Prikaže seznam zgodovine s Å¡tevilkami vrstic, vsak spremenjen vnos\n" +" oznaÄi s predpono `*'. Argument N navede samo N zadnjih vnosov.\n" +" \n" +" Možnosti:\n" +" -c\tpobriÅ¡i seznam zgodovine z brisanjem vseh vnosov\n" +" -d odmik\tpobriÅ¡i vnos zgodovine pri odmiku ODMIK.\n" +" \n" +" -a\tpripni vrstice zgodovine iz te seje v datoteko zgodovine\n" +" -n\tpreberi vse vrstice zgodovine, ki Å¡e niso prebrane iz datoteke\n" +" \tzgodovine\n" +" -r\tpreberi datoteko zgodovine in pripni vsebino seznama\n" +" \tzgodovine\n" +" -w\tpiÅ¡i trenutno zgodovino v datoteko zgodovine\n" +" \tin jo pripni na seznam zgodovine\n" +" \n" +" -p\topravi razÅ¡iritev zgodovine na vsak ARG in prikaži rezultat\n" +" \tbrez shranitve na seznam zgodovine\n" +" -s\tpripni ARGUMENTE na seznam zgodovine kot edini vnos\n" +" \n" +" ÄŒe je IME_DATOTEKE podan, se uporabi kot datoteka zgodovine.\n" +" V nasprotnem primeru, Äe $HISTFILE ima vrednost, ki se uporabi,\n" +" pa ~/.bash_history.\n" +" \n" +" ÄŒe je spremenljivka $HISTTIMEFORMAT doloÄena in ni prazna, se\n" +" njena vrednost uporabi kot niz oblike za strftime(3) za prikaz Äasovnih\n" +" žigov, ki so povezani z vsakim vnosom prikazane zgodovine.\n" +" V nasprotnem primeru Äasovni žigi niso prikazani.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je podana neveljavna možnost ali Äe pride\n" +" do napake." + +#: builtins.c:879 +#, fuzzy +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Prikaže stanje poslov.\n" +" \n" +" Navede dejavne posle. DOLOÄŒILO_POSLA omejuje izpis v ta posel.\n" +" Brez podanih možnosti se prikaže stanje vseh dejavnih poslov.\n" +" \n" +" Možnosti:\n" +" -l\tnavedi ID-je opravil zraven obiÄajnih podatkov\n" +" -n\tnavedi samo opravila, ki imajo od zadnjega obvestila\n" +" \tspremenjena stanja\n" +" -p\tnavedi samo ID-je opravil\n" +" -r\tomeji izhod na posle, ki se izvajajo\n" +" -s\tomeji izhod na ustavljene posle\n" +" \n" +" ÄŒe je -x naveden, se zažene UKAZ, ko se doloÄila poslov, ki se\n" +" pojavijo v ARGUMENTIH, zamenjajo z ID-jem opravila vodje skupine\n" +" opravil tega posla.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do\n" +" napake. ÄŒe se uporabi -x, vrne stanje konÄanja UKAZA." + +#: builtins.c:906 +#, fuzzy +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Odstrani posle iz trenutne lupine.\n" +" \n" +" Odstrani vsak argument DOLOÄŒILA_POSLA s seznama dejavnih poslov.\n" +" Brez danih DOLOÄŒIL_POSLA lupina uporabi svojo oznaÄbo trenutnega\n" +" posla.\n" +" \n" +" Možnosti:\n" +" -a\todstrani vse posle, Äe DOLOÄŒILO_POSLA ni navedeno\n" +" -h\toznaÄi vsako DOLOÄŒILO_POSLA, tako da se SIGHUP ne poÅ¡lje\n" +" \tposlu, Äe lupina prejme SIGHUP \n" +" -r\todstrani samo posle, ki se izvajajo\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je dano\n" +" DOLOÄŒILO_POSLA." + +#: builtins.c:925 +#, fuzzy +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"PoÅ¡lje signal poslu.\n" +" \n" +" PoÅ¡lje opravila, doloÄena s strani ID-ja opravila ali uporabi\n" +" DOLOÄŒILO_POSLA za signal, ki je imenovan s strani SIGSPEC ali SIGNUM.\n" +" ÄŒe SIGSPEC in SIGNUM nista prisotna, se predvideva SIGTERM.\n" +" \n" +" Možnosti:\n" +" -s sig\tSIG je ime signala\n" +" -n sig\tSIG je Å¡tevilka signala\n" +" -l\tnavedi imena signalov; Äe `-l' sledijo argumenti, se predvideva,\n" +" \tda so Å¡tevilke signalov, za katere bi morala biti navedena imena\n" +" \n" +" Kill je vgrajena lupina zaradi dveh razlogov: omogoÄa ID-jem poslov,\n" +" da se jih uporabi namesto ID-jev opravil in omogoÄa uniÄenje opravil,\n" +" Äe se prekoraÄi meja ustvarjenih opravil.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do\n" +" napake." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Ovrednoti aritmetiÄne izraze.\n" +" \n" +" Ovrednoti vsak ARG kot aritmetiÄni izraz. Vrednotenje se opravi\n" +" v celih Å¡tevilih z nespremenjeno Å¡irino brez preverjanja za " +"prekoraÄitev,\n" +" Äeprav je deljenje z 0 ujeto in oznaÄeno kot napaka. Seznam " +"operatorjev,\n" +" ki sledi, je združen v stopnje operatorjev enakih prednosti. Stopnje so\n" +" razvrÅ¡Äene po padajoÄi prednosti.\n" +" \n" +" \tid++, id--\tnaknadno veÄanje spremenljivke, naknadno manjÅ¡anje\n" +" \t++id, --id\tpredhodno veÄanje spremenljivke, predhodno manjÅ¡anje\n" +" \t-, +\t\tenosloven minus, plus\n" +" \t!, ~\t\tlogiÄna in bitna negacija\n" +" \t**\t\tpotenciranje\n" +" \t*, /, %\t\tmnoženje, deljenje, ostanek\n" +" \t+, -\t\tseÅ¡tevanje, odÅ¡tevanje\n" +" \t<<, >>\t\tlevi in desni bitni premiki\n" +" \t<=, >=, <, >\tprimerjava\n" +" \t==, !=\t\tenakost, neenakost\n" +" \t&\t\tbitni AND\n" +" \t^\t\tbitni XOR\n" +" \t|\t\tbitni OR\n" +" \t&&\t\tlogiÄni AND\n" +" \t||\t\tlogiÄni OR\n" +" \tizraz ? izraz : izraz\n" +" \t\t\tpogojni operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tdodeljevanje \n" +" \n" +" Spremenljivke lupine so dovoljene kot operandi. Ime spremenljivke\n" +" se zamenja z njeno vrednostjo (prisiljena na celo Å¡tevilo z\n" +" nespremenljivo Å¡irino) znotraj izraza. Za uporabo spremenljivke v ni\n" +" treba vklopliti atributa celega Å¡tevila.\n" +" \n" +" Operatorji so ovrednoteni v prednostnem vrstnem redu. Podizrazi\n" +" v oklepajih so ovrednoteni prvi in lahko prepiÅ¡ejo prednostna \n" +" pravila, omenjena zgoraj.\n" +" \n" +" Stanje konÄanja\n" +" ÄŒe zadnji ARG ovrednoti na 0, let vrne 1; sicer let vrne 0." + +#: builtins.c:994 +#, fuzzy +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Prebere vrstico iz standardnega vhoda in jo razdeli v polja.\n" +" \n" +" Prebere eno vrstico iz standardnega vhoda ali iz opisnika FD, Äe je\n" +" navedena možnost -u. Vrstica je razdeljena na polja, kot je delitev\n" +" besed in prva beseda je dodeljena prvemu IMENU, druga beseda drugemu\n" +" IMENU itd., ostanek zadnje besede pa se dodeli zadnjemu IMENU.\n" +" Samo znaki, najdeni v $IFS, so prepoznani kot razmejilniki besed.\n" +" \n" +" ÄŒe ni navedenih IMEN, se prebrana vrstica shrani v spremenljivko REPLY.\n" +" \n" +" Možnosti:\n" +" -a polje\tdodeli prebrane besede zaporednim kazalom spremenljivke \n" +" \t\tpolja POLJE, zaÄenÅ¡i z 0\n" +" -d razmejilnik\tnadaljuj, dokler ni prvi znak RAZMEJILNIKA prebran,\n" +" \t\tnamesto v novo vrstico\n" +" -e\t\tuporabi Readline za pridobitev vrstice v vzajemni lupini\n" +" -i besedilo\tuporabi BESEDILO kot prvotno besedilo za Readline\n" +" -n n-znakov\tvrni po branju znakov N-ZNAKOV, namesto Äakanja na\n" +" \t\tnovo vrstico, toda spoÅ¡tuj razmejilnik, Äe je prebranih znakov\n" +" \t\tmanj kot N-ZNAKOV pred razmejilnikom\n" +" -N n-znakov\tvrni samo po branju N-ZNAKOV znakov, razen Äe naleti\n" +" \t\tna konec datoteke ali Äe branju poteÄe Äasovna omejitev, brez\n" +" \t\tupoÅ¡tevanja katerega koli razmejilnika\n" +" -p poziv\tizpiÅ¡i niz POZIV brez vmesne nove vrstice, preden se\n" +" \t\tposkuÅ¡a prebrati\n" +" -r\t\tne dovoli levih poÅ¡evnic za izognitev vsem znakom\n" +" -s\t\tne izpiÅ¡i vnosa, ki prihaja s terminala\n" +" -t Äasovna_omejitev\tpreseži Äasovno omejitev in vrni neuspeÅ¡no, Äe\n" +" \t\tznotraj ÄŒASOVNE_OMEJITVE sekund ni prebrana celotna vrstica\n" +" \t\tvnosa. Vrednost spremenljivke TMOUT je privzeta Äasovna\n" +" \t\tomejitev. ÄŒASOVNA_OMEJITEV je lahko decimalno Å¡tevilo.\n" +" \t\tÄŒe je ÄŒASOVNA_OMEJITEV 0, branje vrne uspeÅ¡no samo, Äe je na\n" +" \t\tdoloÄenem opisniku datoteke na voljo vnos. Stanje konÄanja je\n" +" \t\tveÄje kot 128, Äe je Äasovna omejitev prekoraÄena\n" +" -u fd\t\tberi iz opisnika datotek FD, namesto standardnega vhoda\n" +" \n" +" Stanje konÄanja\n" +" Koda vrnitve je niÄ, razen Äe pride do konca datoteke, Äe je Äasovna \n" +" omejitev prekoraÄena ali Äe je dan neveljaven opisnik datotek kot\n" +" argument v -u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Vrne iz funkcije lupine.\n" +" \n" +" PovzroÄi, da funkcija ali skripta izvorne kode konÄa z vrednostjo\n" +" vrnitve, doloÄene z N. ÄŒe je N izpuÅ¡Äen, se uporabi stanje vrnitve\n" +" zadnjega izvrÅ¡enega ukaza znotraj funkcije ali skripta.\n" +" \n" +" Stanje konÄanja\n" +" Vrne N ali neuspeÅ¡no, Äe lupina ne izvede funkcije ali skripta." + +#: builtins.c:1054 +#, fuzzy +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Nastavi ali ponastavi vrednosti možnosti lupine in položajne parametre.\n" +" \n" +" Spremeni vrednost atributov lupine in položajnih parametrov ali\n" +" prikaže imena in vrednosti spremenljivk lupine.\n" +" \n" +" Možnosti:\n" +" -a OznaÄi vrednosti, ki so spremenjene ali ustvarjene za izvoz.\n" +" -b Takoj obvesti o uniÄenju posla.\n" +" -e Takoj konÄaj, Äe ukaz obstaja z ne-niÄelnim stanjem.\n" +" -f OnemogoÄi ustvarjanje imen datotek (globbing).\n" +" -h Zapomni si mesto ukazov, ko se jih iÅ¡Äe.\n" +" -k Vsi argumenti dodeljevanja so postavljeni v okolje za ukaz, ne\n" +" samo tisti, ki imajo predhodna imena ukazov.\n" +" -m Nadzor poslov je omogoÄen.\n" +" -n Preberi ukaze, toda ne izvedi jih.\n" +" -o ime_možnosti\n" +" Nastavi spremenljivke, ki ustrezajo ime_možnosti:\n" +" allexport enako kot -a\n" +" braceexpand enako kot -B\n" +" emacs uporabi vmesnik urejanja vrstic s slogom emacs\n" +" errexit enako kot -e\n" +" errtrace enako kot -E\n" +" functrace enako kot -T\n" +" hashall enako kot -h\n" +" histexpand enako kot -H\n" +" history omogoÄi zgodovino ukazov\n" +" ignoreeof lupina se ne bo konÄala po koncu branja datoteke\n" +" interactive-comments\n" +" omogoÄi, da se ukazi pojavijo v vzajemnih ukazih\n" +" keyword enako kot -k\n" +" monitor enako kot -m\n" +" noclobber enako kot -C\n" +" noexec enako kot -n\n" +" noglob enako kot -f\n" +" nolog trenutno sprejeto, toda neupoÅ¡tevano\n" +" notify enako kot -b\n" +" nounset enako kot -u\n" +" onecmd enako kot -t\n" +" physical enako kot -P\n" +" pipefail vrnjena vrednost cevovoda je stanje zadnjega\n" +" ukaza, ki je konÄal z ne-niÄelnim stanjem ali " +"niÄ,\n" +" Äe noben ukaz ni konÄal ne-niÄelnim stanjem\n" +" posix spremeni obnaÅ¡anje bash-a, kjer se privzeto\n" +" opravilo razlikuje od standarda POSIX pri\n" +" ujemanju standarda\n" +" privileged enako kot -p\n" +" verbose enako kot -v\n" +" vi uporabi vmesnik urejanja vrstic s slogom vi\n" +" xtrace enako kot -x\n" +" -p Vklopljeno, kadar se pravi in uÄinkoviti uporabniÅ¡ki ID-ji ne\n" +" ujamajo. OnemogoÄi obdelavo datoteke $ENV in uvoz funkcij\n" +" lupine. OnemogoÄenje te možnosti povzroÄi, da sta uÄinkovit\n" +" uporabniÅ¡ki id in id skupine nastavljena na resniÄen\n" +" uporabniÅ¡ki id in id skupine.\n" +" -t KonÄaj po branju in izvedbi enega ukaza.\n" +" -u Obravnavaj ponastavljene spremenljivke kot napako pri\n" +" zamenjavi.\n" +" -v Prikaži vrstice vnosa lupine kot so prebrane.\n" +" -x Prikaži ukaze in njihove argumente kot so izvedeni.\n" +" -B lupina bo izvedla Å¡iritev oklepaja\n" +" -C Äe je nastavljen, ne dovoli obiÄajnim datotekam,\n" +" da bi bile prepisane s preusmeritvijo izhoda.\n" +" -E ÄŒe je nastavljeno, je past ERR dedovana s strani\n" +" funkcij lupine.\n" +" -H OmogoÄi zamenjavo zgodovine s slogom! . Ta zastavica\n" +" je privzeto omogoÄena, kadar je lupina vzajemna.\n" +" -P ÄŒe je nastavljeno, ne sledi simbolnim povezavam, kadar se\n" +" izvajajo ukazi, kot je cd, ki spremeni trenutno mapo.\n" +" -T ÄŒe je nastavljeno, je past DEBUG dedovana s strani\n" +" funkcij lupine.\n" +" -- Dodeli vse preostale argumente v položajne parametre.\n" +" ÄŒe ni preostalih argumentov, so položajni parametri\n" +" ponastavljeni.\n" +" - Dodeli vse preostale argumente v položajne parametre.\n" +" Možnosti -x in -v sta izkljuÄeni.\n" +" \n" +" Uporaba + namesto - povzroÄi, da se te zastave izklopijo.\n" +" Zastave se lahko tudi uporabijo za po klicu lupine. Trenuten\n" +" niz zastavic je mogoÄe najti v $-. Preostali n ARGUMENTI so\n" +" položajni parametri in so dodeljeni vrstnem redu k $1, $2, .. $n.\n" +" ÄŒe ni danih ARGUMENTOV, se izpiÅ¡ejo vse spremenljivke\n" +" lupine.\n" +" \n" +" Stanje konÄanja\n" +" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost." + +#: builtins.c:1139 +#, fuzzy +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Ponastavi vrednosti in atribute spremenljivk in funkcij lupine.\n" +" \n" +" Za vsako IME odstrani ustrezno spremenljivko ali funkcijo.\n" +" \n" +" Možnosti:\n" +" -f\tobravnavaj vsako IME kot funkcijo lupine\n" +" -v\tobravnavaj vsako IME kot spremenljivko lupine\n" +" \n" +" ÄŒe ni danih možnosti, poskuÅ¡a unset ponastaviti spremenljivko in Äe\n" +" to ne uspe, poskuÅ¡a ponastaviti funkcijo.\n" +" \n" +" Nekaterih spremenljivk ni mogoÄe ponastaviti; glejte tudi `readonly'.\n" +" \n" +" Stanje konÄanja\n" +" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je IME samo\n" +" za branje." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Nastavi atribut izvoza za spremenljivke lupine.\n" +" \n" +" OznaÄi vsako IME za samodejni izvoz v okolje naknadno izvedenih\n" +" ukazov. ÄŒe je VREDNOST vnesena, dodeli VREDNOST pred izvozom.\n" +" \n" +" Možnosti:\n" +" -f\tnanaÅ¡aj se na funkcije lupine\n" +" -n\todstrani lastnost izvoza iz vsakega IMENA\n" +" -p\tprikaži seznam vseh izvoženih spremenljivk in funkcij\n" +" \n" +" Argument od `--' onemogoÄi nadaljnjo obdelavo možnosti.\n" +" \n" +" Stanje konÄanja\n" +" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je\n" +" neveljavno IME." + +#: builtins.c:1180 +#, fuzzy +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"OznaÄi spremenljivke lupine kot nespremenljive.\n" +" \n" +" OznaÄi vsako IME kot samo za branje; vrednosti teh IMEN se morda\n" +" ne bodo spremenile s strani naknadne dodelitve. ÄŒe je VREDNOST\n" +" predložena, dodeli VREDNOST pred oznaÄitvijo samo za branje.\n" +" \n" +" Možnosti:\n" +" -a\tnanaÅ¡aj se na spremenljivke zabeleženih polj\n" +" -A\tnanaÅ¡aj se spremenljivke povezanih polj\n" +" -f\tnanaÅ¡aj se na funkcije lupine\n" +" -p\tprikaži seznam vseh spremenljivk in funkcij, ki so samo\n" +" \tza branje\n" +" \n" +" Argument od `--' onemogoÄi nadaljnjo obdelavo možnosti.\n" +" \n" +" Stanje konÄanja\n" +" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je\n" +" neveljavno IME." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Premakne položajne parametre.\n" +" \n" +" Preimenuje položajne parametre $N+1, $N+2 ... v $1,$2 ...\n" +" ÄŒe N ni dan, se predvideva, da je 1.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je N negativen ali veÄji kot $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Izvede ukaze iz datoteke v trenutni lupini.\n" +" \n" +" Prebere in izvede ukaze iz DATOTEKE v trenutni lupini. Vnosi v $PATH\n" +" so uporabljeni za iskanje mape, ki vsebuje IME_DATOTEKE. \n" +" ÄŒe so kakÅ¡ni ARGUMENTI predloženi, postanejo položajni parametri,\n" +" kadar se izvede IME_DATOTEKE.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje zadnjega izvrÅ¡enega ukaza v IMENU_DATOTEKE; vrne\n" +" neuspeÅ¡no, Äe IMENA_DATOTEKE ni mogoÄe brati." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Da izvedbo lupine v pripravljenost.\n" +" \n" +" Da izvedbo te lupine v pripravljenost, dokler ne prejme signala\n" +" SIGCONT. Lupine prijave ni mogoÄe dati v pripravljenost, razen Äe se\n" +" jo prisili.\n" +" \n" +" Možnosti:\n" +" -f\tprisili stanje pripravljenosti, tudi Äe je lupina lupina prijave\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe nadzor posla ni omogoÄen ali Äe pride do\n" +" napake." + +#: builtins.c:1261 +#, fuzzy +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Ovrednoti pogojni izraz.\n" +" \n" +" KonÄa s stanjem 0 (prav) ali 1 (napak), odvisno od ovrednotenja IZRAZA.\n" +" Izrazi so lahko enoslovni ali binarni. Enoslovni izrazi so pogosto\n" +" uporabljeni za preverjanje stanja datoteke. Obstajajo tudi operatorji\n" +" nizov in operatorji Å¡tevilskih primerjav.\n" +" \n" +" ObnaÅ¡anje preizkusa je odvisno od Å¡tevila argumentov. Preberite \n" +" si stran priroÄnika bash za popolno razÄlenitev.\n" +" \n" +" Operatorji datotek:\n" +" \n" +" -a DATOTEKA Prav, Äe datoteka obstaja.\n" +" -b DATOTEKA Prav, Äe je datoteka posebnost bloka.\n" +" -c DATOTEKA Prav, Äe je datoteka posebnost znaka.\n" +" -d DATOTEKA Prav, Äe je datoteka mapa.\n" +" -e DATOTEKA Prav, Äe datoteka obstaja.\n" +" -f DATOTEKA Prav, Äe datoteka obstaja in je obiÄajna.\n" +" -g DATOTEKA Prav, Äe je datoteka set-group-id.\n" +" -h DATOTEKA Prav, Äe je datoteka simbolna povezava.\n" +" -L DATOTEKA Prav, Äe je datoteka simbolna povezava.\n" +" -k DATOTEKA Prav, Äe ima datoteka nastavljeno zastavo `sticky' bit\n" +" -p DATOTEKA Prav, Äe je datoteka imenovana cev.\n" +" -r DATOTEKA Prav, Äe je datoteka berljiva za Vas.\n" +" -s DATOTEKA Prav, Äe datoteka obstaja in ni prazna.\n" +" -S DATOTEKA Prav, Äe datoteka ni vstavek.\n" +" -t FD Prav, Äe je FD odprt v terminalu.\n" +" -u DATOTEKA Prav, Äe je datoteka set-user-id.\n" +" -w DATOTEKA Prav, Äe je datoteka zapisljiva za Vas.\n" +" -x DATOTEKA Prav, Äe je datoteka izvedljiva za Vas.\n" +" -O DATOTEKA Prav, Äe datoteka v vaÅ¡i lasti.\n" +" -G DATOTEKA Prav, Äe je datoteka v lasti vaÅ¡e skupine.\n" +" -N DATOTEKA Prav, Äe je datoteka bila spremenjena, odkar je bila\n" +" nazadnje prebrana.\n" +" \n" +" DATOTEKA1 -nt DATOTEKA Prav, Äe je datoteka1 novejÅ¡a kot\n" +" datoteka2 (glede na datum spremembe).\n" +" \n" +" DATOTEKA1 -ot DATOTEKA2 Prav, Äe je datoteka1 starejÅ¡a kot\n" +" datoteka2.\n" +" \n" +" DATOTEKA1 -ef DATOTEKA2 Prav, Äe je datoteka1 nespremenljivo\n" +" vezana na datoteko2.\n" +" \n" +" Operatorji nizov:\n" +" \n" +" -z NIZ Prav, Äe je niz prazen.\n" +" \n" +" -n NIZ\n" +" NIZ Prav, Äe niz ni prazen.\n" +" \n" +" NIZ1 = NIZ2\n" +" Prav, Äe sta niza enaka.\n" +" NIZ1 != NIZ2\n" +" Prav, Äe niza nista enaka.\n" +" NIZ1 < NIZ2\n" +" Prav, Äe NIZ1 razvrsti po abecedi prej kot NIZ2.\n" +" NIZ1 > NIZ2\n" +" Prav, Äe NIZ1 razvrsti po abecedi kasneje kot NIZ2.\n" +" \n" +" Drugi operatorji:\n" +" \n" +" -o MOŽNOST Prav, Äe je možnost lupine MOŽNOST omogoÄena.\n" +" -v SPR\t Prav, Äe je spremenljivka lupine SPR nastavljena\n" +" ! IZRAZ Prav, Äe je izraz napak.\n" +" IZRAZ1 -a IZRAZ2 Prav, Äe sta izraz1 IN izraz2 prav.\n" +" IZRAZ1 -o IZRAZ2 Prav, Äe je izraz1 ALI izraz2 prav.\n" +" \n" +" arg1 OP arg2 AritmetiÄni preizkusi. OP je eden od -eq, -ne,\n" +" -lt, -le, -gt, ali -ge.\n" +" \n" +" AritmetiÄna binarna operatorja vrneta prav, Äe je ARG1 enak, neenak,\n" +" manjÅ¡i-kot, manjÅ¡i-kot-ali-enak, veÄji-kot ali veÄji-kot-ali-enak\n" +" kot ARG2.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, Äe IZRAZ ovrednoti prav, neuspeÅ¡no vrne, Äe IZRAZ \n" +" ovrednoti napak ali Äe je dan neveljaven argument." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Ovrednoti pogojni izraz.\n" +" \n" +" To je sopomenka za vgrajeno lupino \"test\", toda zadnji argument\n" +" mora biti dobesedni `]' za ujemanje z uklepajem `['." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Prikaže Äase opravila.\n" +" \n" +" Prikaže zbrane Äase uporabnika in sistema za lupino in vsa njena\n" +" podrejena opravila.\n" +" \n" +" Stanje konÄanja:\n" +" Vedno uspeÅ¡no." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Signali trap in ostali dogodki.\n" +" \n" +" DoloÄi in omogoÄi roÄnik, da se jih zažene, kadar lupina sprejme " +"signale\n" +" ali ostale pogoje.\n" +" \n" +" ARG je ukaz, ki se ga prebere in izvrÅ¡i, kadar lupina sprejme signal(e)\n" +" SIGNAL_SPEC. ÄŒe je ARG odsoten (in predložen en SIGNAL_SPEC)\n" +" ali `-', je vsak doloÄen signal ponastavljen na svojo prvotno vrednost.\n" +" ÄŒe je ARG prazen niz, je vsak SIGNAL_SPEC prezrt s strani lupine\n" +" in ukazov, ki jih pokliÄe.\n" +" \n" +" ÄŒe je SIGNAL_SPEC EXIT (0), se ARG izvrÅ¡i ob izhodu iz lupine. ÄŒe je\n" +" SIGNAL_SPEC DEBUG, je ARG izvrÅ¡en pred vsakim ukazom. ÄŒe je\n" +" SIGNAL_SPEC RETURN, se ARG izvrÅ¡i vsakiÄ, ko funkcija lupine ali " +"skript,\n" +" zagnan s strani . ali vgrajenih virov, konÄa z izvajanjem. SIGNAL_SPEC\n" +" od ERR pomeni, da se ARG izvede vsakiÄ, ko bi napaka ukaza povzroÄila, " +"da\n" +" bi se lupina konÄala, kadar je omogoÄena možnost -e.\n" +" \n" +" ÄŒe ni predloženih argumentov, trap prikaže seznam ukazov, povezanih z\n" +" vsakim signalom.\n" +" \n" +" Možnosti:\n" +" -l\tPrikaži seznam imen signalov in njihove ustrezne Å¡tevilke\n" +" -p\tprikaži ukaze trap, povezane z vsakim SIGNAL_SPEC\n" +" \n" +" Vsak SIGNAL_SPEC je bodisi ime signala v bodisi Å¡tevilka " +"signala.\n" +" Imena signalov loÄujejo velikost Ärk in predpona SIG je izbirna.\n" +" Signal je lahko poslan v lupino s \"kill -signal $$\".\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je SIGSPEC neveljaven ali je dana neveljavna " +"možnost." + +#: builtins.c:1400 +#, fuzzy +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Prikaže podrobnosti o vrsti ukaza.\n" +" \n" +" Za vsako IME nakaže, kako bi bilo tolmaÄeno, Äe bi bilo uporabljeno\n" +" v imenu ukaza.\n" +" \n" +" Možnosti:\n" +" -a\tprikaži vsa mesta, ki vsebujejo izvedljivo datoteko z imenom\n" +" \tIME;\n" +" \tvkljuÄuje vzdevke, vgrajene lupine in funkcije, ampak samo,\n" +" \tÄe možnost `-p' NI uporabljena.\n" +" -f\tzatri iskanje funkcij lupine\n" +" -P\tprisili iskanje POTI za vsako IME, tudi Äe je vzdevek,\n" +" \tvgrajena lupina ali funkcija, in vrni ime datoteke diska, ki bi\n" +" \tbil izvrÅ¡en.\n" +" -p\tvrne ime datoteke diska, ki bi bila izvrÅ¡ena ali niÄ,\n" +" \tÄe `type -t NAME' ne bi vrnil datoteke `file'.\n" +" -t\tizpiÅ¡i eno besedo, katera je ena izmed `vzdevkov', \n" +" \t`kljuÄnih_besed', `funkcij', `vgrajenih_lupin', `datotek' ali `', \n" +" \tÄe je IME vzdevek, rezervirana beseda, funkcija lupine, vgrajena \n" +" \tlupina, datoteka diska ali ni najdeno, v tem zaporedju\n" +" \n" +" Argumenti:\n" +" IME\tIme ukaza, ki bo tolmaÄeno.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, Äe so vsa IMENA najdena; vrne neuspeÅ¡no, Äe katero\n" +" ni najdeno." + +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Spremeni omejitve virov lupine.\n" +" \n" +" Zagotavlja nadzor nad sredstvi, ki so na voljo lupini in ustvarjenim\n" +" opravilom, na sistemih, ki omogoÄajo tak nadzor.\n" +" \n" +" Možnosti:\n" +" -S\tuporabi blago omejitev virov `soft'\n" +" -H\tuporabi strogo omejitev virov `hard'\n" +" -a\tvse trenutne omejitve so poroÄane\n" +" -b\tvelikost medpomnilnika vtiÄa\n" +" -c\tnajveÄja velikost ustvarjenih datotek jedra\n" +" -d\tnajveÄja velikost odseka podatkov opravila\n" +" -e\tnajveÄja prednost razporejanja (`nice')\n" +" -f\tnajveÄja velikost datotek, ki so napisane s strani lupine in " +"njenih\n" +" \tpodrejenih opravil\n" +" -i\tnajveÄje Å¡tevilo signalov na Äakanju\n" +" -l\tnajveÄja velikost, ki jo opravilo lahko zaklene v pomnilnik\n" +" -m\tnajveÄja velikost stalnih naborov\n" +" -n\tnajveÄje Å¡tevilo odprtih opisnikov datotek\n" +" -p\tvelikost medpomnilnika cevi\n" +" -q\tnajveÄje Å¡tevilo bajtov v Äakalnih vrstah sporoÄil POSIX\n" +" -r\tnajveÄja prednost razporejanja v realnem Äasu\n" +" -s\tnajveÄja velikost sklada\n" +" -t\tnajveÄja koliÄina Äasa cpe v sekundah\n" +" -u\tnajveÄje Å¡tevilo uporabniÅ¡kih opravil\n" +" -v\tvelikost navideznega pomnilnika\n" +" -x\tnajveÄje Å¡tevilo datoteÄnih kljuÄavnic\n" +" \n" +" ÄŒe je MEJA dana, je le-ta nova vrednost navedenega vira; posebne \n" +" vrednosti MEJE `soft', `hard' in `unlimited' pomenijo trenutno blago \n" +" omejitev, trenutno strogo omejitev in brez omejitev, v tem vrstem redu.\n" +" V nasprotnem primeru se izpiÅ¡e trenutna vrednost navedenega vira.\n" +" ÄŒe ni danih možnosti, se predpostavlja -f.\n" +" \n" +" Vrednosti so v 1024-bajtnem poveÄanju, razen za -t, ki je v sekundah,\n" +" -p, ki je v poveÄanju za 512 bajtov, in -u, ki je nespremenjeno Å¡tevilo\n" +" opravil.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do\n" +" napake." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Prikaži ali nastavi masko naÄina datoteke.\n" +" \n" +" Nastavi uporabniÅ¡ko masko ustvarjanja datoteke v NAÄŒIN. ÄŒe je\n" +" NAÄŒIN izpuÅ¡Äen, prikaže trenutno vrednost maske.\n" +" \n" +" ÄŒe se NAÄŒIN zaÄne z Å¡tevko, se tolmaÄi kot osmiÅ¡ko Å¡tevilo;\n" +" sicer je niz simbolnega naÄina kot je sprejet s strani chmod(1).\n" +" \n" +" Možnosti:\n" +" -p\tÄe je NAÄŒIN izpuÅ¡Äen, izpiÅ¡i v obliki, ki se lahko uporabi kot " +"vnos\n" +" -S\tnaredi simbolni izpis; sicer se izpiÅ¡e osmiÅ¡ko Å¡tevilo\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je NAÄŒIN neveljaven ali Äe je dana neveljavna\n" +" možnost." + +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"ÄŒaka na dokonÄanje posla in vrne stanje konÄanja.\n" +" \n" +" PoÄaka na opravilo, doloÄeno s strani ID-ja, ki je lahko ID opravila " +"ali\n" +" doloÄilo posla in poroÄa svoje stanje uniÄenja. ÄŒe ID ni dan, poÄaka\n" +" vsa trenutno dejavna podrejena opravila in stanje konÄanja je niÄ.\n" +" ÄŒe je ID doloÄilo posla, poÄaka vsa opravila v cevovodu\n" +" posla.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje ID-ja; vrne neuspeÅ¡no, Äe je ID neveljaven ali Äe je dana\n" +" neveljavna možnost." + +#: builtins.c:1533 +#, fuzzy +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"ÄŒaka na konÄanje opravila in vrne stanje konÄanja.\n" +" \n" +" PoÄaka na doloÄeno opravilo in poroÄa svoje stanje uniÄenja. ÄŒe ID\n" +" opravila ni dan, so vsa trenutno dejavna podrejena opravila na\n" +" Äakanju in stanje konÄanja je niÄ.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje ID-ja; neuspeÅ¡no, Äe je ID neveljaven ali Äe je dana\n" +" neveljavna možnost." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Izvede ukaze za vsakega Älana na seznamu.\n" +" \n" +" Zanka `for' izvede zaporedje ukazov za vsakega Älana na seznamu\n" +" predmetov. ÄŒe `in BESEDE ...;' niso prisotna, se predvideva `in \"$@" +"\"'.\n" +" Za vsak element v BESEDAH je IME nastavljeno temu predmetu in\n" +" UKAZI so izvrÅ¡eni.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje zadnjega izvrÅ¡enega ukaza." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"AritmetiÄna zanka for.\n" +" \n" +" Enakovredna je \n" +" \t(( IZRAZ1 ))\n" +" \twhile (( IZRAZ2 )); do\n" +" \t\tUKAZI\n" +" \t\t(( IZRAZ3 ))\n" +" \tdone\n" +" IZRAZ1, IZRAZ2, in IZRAZ3 so aritmetiÄni izrazi. ÄŒe je kateri izraz " +"izpuÅ¡Äen,\n" +" se obnaÅ¡a, kot da so enaki 1.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje zadnjega izvrÅ¡enega ukaza." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Izbere besede s seznama in izvede ukaze.\n" +" \n" +" BESEDE so razÅ¡irjene, kar ustvari seznam besed. Nabor razÅ¡irjenih\n" +" besed se izpiÅ¡e na standardno napako, vsaka s svojo Å¡tevilko.\n" +" ÄŒe `in BESEDE ...;' niso prisotne, se predvideva\n" +" `in \"$@\"'. Potem je prikazan poziv PS3 in vrstica prebrana\n" +" s standardnega vnosa. ÄŒe je vrstica sestavljena iz Å¡tevilke, ki ustreza\n" +" eni od prikazanih besed, potem je IME nastavljeno tej besedi.\n" +" ÄŒe je vrstica prazna, so BESEDE v pozivu prikazane \n" +" ponovno. ÄŒe se prebere konec datoteke, se ukaz zakljuÄi. Vsaka druga \n" +" prebrana vrednost povzroÄi, da se IME nastavi na prazno vrednost.\n" +" Prebrana vrstica je shranjena v spremenljivki ODGOVOR. UKAZI so " +"izvrÅ¡eni \n" +" po vsakem izboru, dokler se ne izvede ukaz break.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje zadnjega izvrÅ¡enega ukaza." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"PoroÄa porabljen Äas s strani izvedbe cevovoda.\n" +" \n" +" Izvede CEVOVOD in prikaže povzetek dejanskega Äasa, Äas \n" +" uporabniÅ¡ke CPE in Äas sistemske CPE, porabljen za izvajanje CEVOVODA,\n" +" ko se konÄa.\n" +" \n" +" Možnosti:\n" +" -p\tprikaži Äasovni povzetek v prenosni obliki POSIX\n" +" \n" +" Vrednost spremenljivke TIMEFORMAT se uporabi kot oblika izpisa.\n" +" \n" +" Stanje konÄanja:\n" +" Stanje konÄanja je stanje konÄanja CEVOVODA." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"IzvrÅ¡i ukaze na podlagi ujemanja vzorcev.\n" +" \n" +" Izbirno izvrÅ¡i UKAZE, ki temeljijo na VZORCU BESEDNEGA ujemanja.\n" +" `|' se uporablja za loÄevanje veÄih vzorcev.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje zadnjega izvrÅ¡enega ukaza." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Izvaja ukaze, ki temeljijo na pogojih.\n" +" \n" +" Izvede se seznam `if UKAZI'. ÄŒe je njegovo stanje niÄ, se izvede seznam\n" +" `then UKAZI'. V nasprotnem primeru se izvede vsak seznam `elif UKAZI' \n" +" in Äe je njegovo stanje niÄ, se izvede ustrezen seznam `then UKAZI' \n" +" in ukaz if se zakljuÄi. V nasprotnem primeru se izvede seznam \n" +" `else UKAZI', Äe je prisoten. Stanje konÄanja celotnega izgrajenja \n" +" je stanje konÄanja zadnjega izvrÅ¡enega ukaza ali niÄ, Äe noben pogoj " +"ni \n" +" dal prav.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje zadnjega izvrÅ¡enega ukaza." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Izvaja ukaze, dokler je preizkus uspeÅ¡en.\n" +" \n" +" RazÅ¡irja in izvaja UKAZE tako dolgo, dokler ima zadnji ukaz v UKAZIH\n" +" `while' stanje konÄanja, ki je niÄ.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje zadnjega izvrÅ¡enega ukaza." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Izvaja ukaze, dokler je preizkus neuspeÅ¡en.\n" +" \n" +" RazÅ¡irja in izvaja UKAZE tako dolgo, dokler ima zadnji ukaz v UKAZIH\n" +" `until' stanje konÄanja, ki ni niÄ.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje zadnjega izvrÅ¡enega ukaza." + +#: builtins.c:1671 +#, fuzzy +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Ustvari soopravilo, imenovano IME.\n" +" \n" +" IzvrÅ¡i UKAZ neusklajeno, s standardnim izhodom in vnosom ukaza, ki sta \n" +" povezana preko cevi z opisniki datotek, ki so dodeljeni kazalom 0 in 1 \n" +" spremenljivke polja IME v izvrÅ¡ilni lupini.\n" +" Privzeto IME je \"COPROC\".\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje konÄanja UKAZA." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"DoloÄi funkcijo lupine.\n" +" \n" +" Ustvari funkcijo lupine, imenovano IME. Kadar je poklicana kot preprost " +"ukaz,\n" +" IME zažene UKAZE v vsebini klicoÄe lupine. Kadar se kliÄe IME, so " +"argumenti\n" +" posredovani v funkcijo kot $1...$n in ime funkcije je v $FUNCNAME.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je IME samo za branje." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Združi ukaze kot enoto.\n" +" \n" +" Zažene nabor ukazov v skupini. To je eden od naÄinov za \n" +" preusmeritev celotnega nabora ukazov.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje zadnjega izvrÅ¡enega ukaza." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Obnovi posel v ospredju.\n" +" \n" +" Je enakovreden argumentu DOLOÄŒILO_POSLA v ukazu `fg'. Obnovi posel,\n" +" ki je ustavljen ali v ozadju. DOLOÄŒILO_POSLA lahko doloÄi bodisi ime\n" +" posla bodisi Å¡tevilko posla. DOLOÄŒILU_POSLA sledi `&', ki postavi posel\n" +" v ozadje, kot Äe bi doloÄilo posla bilo dobavljeno kot argument ukazu " +"`bg'.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne stanje obnovljenega posla." + +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Ovrednoti aritmetiÄni izraz.\n" +" \n" +" IZRAZ je ovrednoten v skladu s pravili za aritmetiÄno ovrednotenje.\n" +" Je enakovreden ukazu \"let IZRAZ\".\n" +" \n" +" Stanje konÄanja:\n" +" Vrne 1, Äe je IZRAZ enakovreden; sicer vrne 0." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"IzvrÅ¡i pogojni ukaz.\n" +" \n" +" Vrne stanje 0 ali 1, odvisno od vrednotenja pogojnega izraza IZRAZ.\n" +" expression EXPRESSION. Izrazi so sestavljeni iz istih osnov, ki so " +"uporabljajo\n" +" s strani vgrajene lupine `test' in se lahko spajajo s pomoÄjo " +"naslednjih\n" +" operatorjev:\n" +" \n" +" ( IZRAZ )\tVrne vrednost IZRAZA\n" +" ! IZRAZ\t\tPrav, Äe je IZRAZ napak; sicer vrne napak\n" +" IZRAZ1 && IZRAZ2\tPrav, Äe sta IZRAZ1 in IZRAZ2 prav; sicer vrne " +"napak\n" +" IZRAZ1 || IZRAZ2\tTPrav, Äe je IZRAZ1 ali IZRAZ2 prav; sicer vrne " +"napak\n" +" \n" +" Kadar se uporabita operatorja `==' in `!=', se niz desno od operatorja \n" +" uporabi kot vzorec in izvrÅ¡i se ujemanje vzorcev. Kadar se uporabi \n" +" operator `=~', se niz desno od operatorja ujema kot logiÄni izraz.\n" +" \n" +" Operatorja && in || ne vrednotita IZRAZ2, Äe IZRAZ1 zadoÅ¡Äa za " +"doloÄitev \n" +" vrednosti izraza.\n" +" \n" +" Stanje konÄanja:\n" +" 0 ali 1, odvisno od vrednosti IZRAZA." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Pogosta imena spremenljivk lupine in uporaba.\n" +" \n" +" BASH_VERSION\tPodatki o razliÄici Bash.\n" +" CDPATH\tZ dvopiÄjem loÄen seznam map za iskanje map,\n" +" \t\tdanih kot argumenti ukazu `cd'.\n" +" GLOBIGNORE\tZ dvopiÄjem loÄen seznam vzorcev z opisom imen datotek,\n" +" \t\tki se jih ne upoÅ¡teva pri razÅ¡iritvi imena poti.\n" +" HISTFILE\tIme datoteke, kjer je shranjena vaÅ¡a zgodovina ukazov.\n" +" HISTFILESIZE\tNajveÄje Å¡tevilo vrstic, ki jih ta datoteka lahko " +"vsebuje.\n" +" HISTSIZE\tNajveÄje Å¡tevilo vrstic zgodovine, do katerih izvajajoÄa\n" +" \t\tlupina lahko dostopa.\n" +" HOME\tCelotno ime poti do vaÅ¡e prijavne mape.\n" +" HOSTNAME\tIme trenutnega gostitelja.\n" +" HOSTTYPE\tVrsta CPE, na katerem se ta razliÄica Bash izvaja.\n" +" IGNOREEOF\tNadzoruje delovanje lupine ob prejemu znaka za konec\n" +" \t\tdatoteke kot edini vnos. ÄŒe je nastavljen, je vrednost Å¡tevilo\n" +" \t\tznakov za konec datoteke, ki jih je mogoÄe videti naenkrat\n" +" \t\tv prazni vrstici, preden se lupina konÄa (privzeto 10).\n" +" \t\tKo je ponastavljen, znak za konec datoteke oznaÄuje konec vnosa.\n" +" MACHTYPE\tNiz, ki opiÅ¡e trenutni sistem, na katerem se izvaja Bash.\n" +" MAILCHECK\tKako pogosto, v sekundah, Bash preveri za novo poÅ¡to.\n" +" MAILPATH\tZ dvopiÄjem loÄen seznam imen datotek, za katere Bash\n" +" \t\tpreveri za novo poÅ¡to.\n" +" OSTYPE\tRazliÄica sistema Unix, na katerem se ta razliÄica Bash izvaja.\n" +" PATH\tZ dvopiÄjem loÄen seznam iskanih map pri iskanju ukazov.\n" +" PROMPT_COMMAND\tUkaz, ki se bo izvrÅ¡il pred izpisom vsakega\n" +" \t\tglavnega poziva.\n" +" PS1\t\tPrvotni niz poziva.\n" +" PS2\t\tDrugotni niz poziva.\n" +" PWD\t\tPolno ime poti trenutne mape.\n" +" SHELLOPTS\tZ dvopiÄjem loÄen seznam omogoÄenih možnosti lupine.\n" +" TERM\tIme trenutne vrste terminala.\n" +" TIMEFORMAT\tOblika izpisa za Äasovno statistiko, ki je prikazana\n" +" \t\ts pridržanim imenom `time'.\n" +" auto_resume\tNe-prazno pomeni, da je beseda ukaza, ki se neodvisno\n" +" \t\tpojavlja na Ärti, iskana prva na seznamu trenutno zaustavljenih\n" +" \t\tposlov. ÄŒe je najdena tam, se ta posel postavi v ospredje.\n" +" \t\tVrednost `exact' pomeni, da se mora beseda ukaza natanÄno\n" +" \t\tujemati z ukazom na seznamu konÄanih poslov.\n" +" \t\tVrednost `substring' pomeni, da se beseda ukaza mora ujemati\n" +" \t\ts podnizom posla. Vsaka druga vrednost pomeni,\n" +" \t\tda mora ukaz biti predpona konÄanega posla.\n" +" histchars\tZnaki, ki nadzorujejo razÅ¡iritev zgodovine in hitro\n" +" \t\tzamenjavo. Prvi znak je znak zamenjave \n" +" \t\tzgodovine, obiÄajno `!'. Drugi znak je znak \n" +" \t\t`hitre zamenjave', obiÄajno `^'.\n" +" \t\tTretji znak je znak `opomba zgodovine', obiÄajno `#'.\n" +" HISTIGNORE\tZ dvopiÄjem loÄen seznam vzorcev, ki so uporabljeni \n" +" \t\tza odloÄanje, kateri ukazi naj se shranijo na seznam zgodovine.\n" + +#: builtins.c:1821 +#, fuzzy +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Doda mape skladu.\n" +" \n" +" Doda mapo na vrh sklada map ali pa zavrti sklad, da spremeni\n" +" nov vrh sklada v trenutno delovno mapo.\n" +" ÄŒe je brez argumentov, izmenja dve vrhnji mapi.\n" +" \n" +" Možnosti:\n" +" -n\tPrepreÄi obiÄajno spremembo mape pri dodajanju map skladu,\n" +" \ttako da se obdela le sklad.\n" +" \n" +" Argumenti:\n" +" +N\tZavrti sklad, tako da je N-ta mapa (Å¡tetje z leve strani\n" +" \tseznama, prikazano z `dirs', zaÄenÅ¡i z niÄ) na vrhu.\n" +" \n" +" -N\tZavrti sklad, tako da je N-ta mapa (Å¡tetje z desne strani\n" +" \tseznama, prikazano z `dirs', zaÄenÅ¡i z niÄ) na vrhu.\n" +" \n" +" dir\tDoda DIR skladu mape na vrhu, kar jo spremeni v novo\n" +" \ttrenutno delovno mapo.\n" +" \n" +" Vgrajena lupina `dirs' prikaže sklad map.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je predložen neveljaven argument ali Äe\n" +" sprememba mape spodleti." + +#: builtins.c:1855 +#, fuzzy +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Odstrani mape sklada.\n" +" \n" +" Odstrani vnose sklada map. ÄŒe je brez argumentov, \n" +" odstrani vrhnjo mapo sklada in spremeni v novo vrhnjo mapo.\n" +" \n" +" Možnosti:\n" +" -n\tPrepreÄi obiÄajno spremembo mape pri odstranjevanju map\n" +" \tsklada, tako da se obdela le sklad.\n" +" \n" +" Argumenti:\n" +" +N\tOdstrani N-ti vnos s Å¡tetjem z leve strani seznama,\n" +" \tprikazanega z `dirs', zaÄenÅ¡i z niÄ. Na primer:\n" +" \t`popd +0' odstrani prvo mapo, `popd +1' odstrani drugo.\n" +" \n" +" -N\tOdstrani N-ti vnos s Å¡tetjem z desne strani seznama,\n" +" \tprikazanega z `dirs', zaÄenÅ¡i z niÄ. Na primer:\n" +" \t`popd +0' odstrani zadnjo mapo, `popd +1' odstrani predzadnjo.\n" +" \n" +" Vgrajena lupina `dirs' prikaže sklad map.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je predložen neveljaven argument ali Äe\n" +" sprememba mape spodleti." + +#: builtins.c:1885 +#, fuzzy +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Prikaže sklad map.\n" +" \n" +" Prikaže seznam trenutno pomnjenih map. Mape najdejo \n" +" svojo pot na seznam z ukazom `pushd'; navzgor po seznamu\n" +" se lahko vrnete z ukazom `popd'.\n" +" \n" +" Možnosti:\n" +" -c\tpoÄisti sklad map z brisanjem vseh predmetov\n" +" -l\tne izpiÅ¡i sorodnih map s predpono `~' v mojo domaÄo mapo\n" +" -p\tprikaži sklad map z enim vnosom v vrstici\n" +" -v\tizpiÅ¡i sklad mape z enim vnosom v vrstici z doloÄenim\n" +" \tpoložajem v skladu\n" +" \n" +" Argumenti:\n" +" +N\tPrikaže N-ti vnos s Å¡tetjem z leve strani seznama, prikazan\n" +" \ts pomoÄjo map, ko kliÄemo brez možnosti, zaÄenÅ¡i z niÄ.\n" +" \n" +" -N\tPrikaže N-ti vnos s Å¡tetjem z desne strani seznama, prikazan\n" +" \ts pomoÄjo map, ko kliÄemo brez možnosti, zaÄenÅ¡i z niÄ.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do napake." + +#: builtins.c:1916 +#, fuzzy +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Nastavi in ponastavi možnosti lupine.\n" +" \n" +" Spremeni nastavitev vsake možnosti lupine IME_MOŽNOSTI.\n" +" ÄŒe ni navedenih argumentov možnosti, navede vse možnosti\n" +" lupine z oznaÄbo, Äe so vsi nastavljeni ali ne.\n" +" \n" +" Možnosti:\n" +" -o\tomeji IMENA_MOŽNOSTI tem, ki so doloÄeni za uporabo s `set -o'\n" +" -p\tprikaži vsako možnost lupine z navedbo stanja\n" +" -q\tprepreÄi izhod\n" +" -s\tomogoÄi (nastavi) vsako IME_MOŽNOSTI\n" +" -u\tonemogoÄi (ponastavi) vsako IME_MOŽNOSTI\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, Äe je IME_MOŽNOSTI omogoÄeno; neuspeÅ¡no, Äe je\n" +" dana neveljavna možnost ali Äe je IME_MOŽNOSTI onemogoÄeno." + +#: builtins.c:1937 +#, fuzzy +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Oblikuje in prikaže ARGUMENTE pod nadzorom OBLIKE.\n" +" \n" +" Možnosti:\n" +" -v var\tdodeli izhod spremenljivki SPREMENLJIVKA namesto\n" +" \t\tprikaza na standardni izpis\n" +" \n" +" OBLIKA je niz znakov, ki vsebuje tri vrste predmetov: obiÄajni znaki, \n" +" ki so preprosto kopirani na standardni izhod; zaporedja ubežnega " +"zaporedja, \n" +" ki so pretvorjena in kopirana na standardni izhod; in doloÄila oblike, \n" +" od katerih vsako povzroÄi prikaz naslednjega zaporednega argumenta.\n" +" \n" +" Poleg doloÄil standardne oblike, opisanih v printf(1) in printf(3), \n" +" printf tolmaÄi:\n" +" \n" +" %b\trazÅ¡iri ubežno zaporedje levih poÅ¡evnic v ustreznem argumentu\n" +" %q\tnavedi argument na naÄin, ki je lahko ponovno uporaben kot\n" +" \tvnos lupine\n" +" %(fmt)T izpiÅ¡i niz datuma-Äasa, ki izhaja iz uporabe FMT-ja kot niza " +"oblike \n" +" za strftime(3)\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do " +"napake\n" +" branja ali dodelitve." + +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Navede, kako bodo argumenti dopolnjeni s pomoÄjo Readline.\n" +" \n" +" Za vsako IME navedi, kako bodo argumenti dopolnjeni. ÄŒe ni predloženih\n" +" možnosti, so obstojeÄe doloÄitve dopolnjevanja prikazane na naÄin, ki " +"jim\n" +" omogoÄa, da se ponovno uporabijo kot vnos.\n" +" \n" +" Možnosti:\n" +" -p\tprikaži obstojeÄe doloÄitve dopolnjevanja v obliki za veÄkratno\n" +" \tuporabo\n" +" -r\todstrani doloÄitev dopolnjevanja za vsako IME ali Äe IMENA\n" +" \tniso predložena, vse doloÄitve dopolnjevanja\n" +" -D\tuveljavi dopolnjevanja in dejanja kot privzeta za ukaze brez\n" +" \tdoloÄenih dopolnjevanj\n" +" -E\tuveljavi dopolnjevanja in dejanja v \"praznih\" ukazih -- \n" +" \tposkus dopolnjevanja v prazni vrstici\n" +" \n" +" Ko se poskuÅ¡a dopolnjevanje, se dejanja uveljavijo v takÅ¡nem\n" +" vrstnem redu, kot z velikimi Ärkami zgoraj navedene možnosti.\n" +" Možnost -D ima prednost pred -E.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali Äe pride\n" +" do napake." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Prikaže možne dopolnitve, odvisne od možnosti.\n" +" \n" +" Namenjen je za uporabo znotraj funkcije lupine za ustvarjanje možnih\n" +" dopolnitev. ÄŒe je izbirni argument BESEDE predložen, se ustvarijo\n" +" ujemanja proti BESEDI.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali Äe pride\n" +" do napake." + +#: builtins.c:2016 +#, fuzzy +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Spremeni ali prikaže možnosti dopolnjevanja.\n" +" \n" +" Spremeni možnosti dopolnjevanja za vsako IME oz. trenutno izvedeno \n" +" dopolnitev, Äe IMENA niso predložena. ÄŒe ni danih MOŽNOSTI,\n" +" prikaže možnosti dopolnjevanja za vsako IME ali trenutno doloÄitev\n" +" dopolnjevanja.\n" +" \n" +" Možnosti:\n" +" \t-o možnost\tNastavi možnost dopolnitve MOŽNOST za vsako IME\n" +" \t-D\t\tSpremeni možnosti za \"privzeto\" dopolnitev ukaza\n" +" \t-E\t\tSpremeni možnosti za \"prazno\" dopolnitev ukaza\n" +" \n" +" Uporaba `+o' namesto `-o' izklopi navedeno možnost.\n" +" \n" +" Argumenti:\n" +" \n" +" Vsako IME se nanaÅ¡a na ukaz, za katerega mora že predhodno biti\n" +" doloÄeno doloÄilo dopolnjevanja z uporabo vgrajene lupine `complete'.\n" +" ÄŒe ni predloženih IMEN, mora compopt biti klican s strani funkcije, \n" +" ki trenutno ustvarja dopolnjevanja in možnosti za tega trenutno \n" +" izvajajoÄega ustvarjalnika dopolnjevanj se bodo spremenile.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali pa IME\n" +" nima doloÄenega doloÄila dopolnjevanja." + +#: builtins.c:2047 +#, fuzzy +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Prebere vrstice s standardnega vnosa v spremenljivko zabeleženega polja.\n" +" \n" +" Prebere vrstice iz standardnega vnosa v spremenljivko zabeleženega " +"polja \n" +" POLJE ali iz opisnika datotek FD, Äe je predložena možnost -u.\n" +" Spremenljivka MAPFILE je privzeto POLJE.\n" +" \n" +" Možnosti:\n" +" -n Å¡tevec\tKopiraj najveÄ vrstic Å TEVCA. ÄŒe je Å TEVEC 0, se kopirajo\n" +" \tvse vrstice.\n" +" -O izvor\tZaÄni dodeljevati POLJU pri kazalu IZVOR. Privzeto kazalo je " +"0.\n" +" -s Å¡tevec \tZavrzi prve prebrane vrstice Å TEVCA.\n" +" -t\t\tIz vsake prebrane vrstice odstrani vmesno novo vrstico.\n" +" -u fd\t\tBeri vrstice iz opisnika datotek FD namesto standardnega\n" +" \tvnosa.\n" +" -C povratni_klic\tOvrednoti POVRATNI_KLIC vsakiÄ, ko so prebrane\n" +" \tvrstice DELOV.\n" +" -c del\tNavedi Å¡tevilo vrstic, prebranih med vsakim klicem\n" +" \tPOVRATNEGA_KLICA.\n" +" \n" +" Argumenti:\n" +" POLJE\t\tIme spremenljivke polja za uporabo za podatke datotek\n" +" \n" +" ÄŒe je -C predložen brez -c, je privzet del 5000. Ko je POVRATNI_KLIC\n" +" ovrednoten, je predloženo kazalo naslednjega predmeta polja, ki bo\n" +" dodeljen in vrstica, ki bo dodeljena temu predmetu kot dodatni\n" +" argumenti.\n" +" \n" +" ÄŒe ni predloženo z izrecnim izvorom, bo mapfile poÄistil POLJE, preden\n" +" ji bo dodeljen.\n" +" \n" +" Stanje konÄanja:\n" +" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost oz. je POLJE samo\n" +" za branje ali pa ni zabeleženo polje." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Prebere vrstice iz datoteke v spremenljivko polja.\n" +" \n" +" Je sopomenka za `mapfile'." + +#, fuzzy +#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc." +#~ msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Vrne vsebino trenutnega klica podprograma.\n" +#~ " \n" +#~ " Brez EXPR vrne " + +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: opravilo %5ld (%s) v the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Neznan signal #" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Dovoljenje GPLv2+: GNU GPL razliÄica 2 ali kasnejÅ¡e \n" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "prav" + +#~ msgid "false" +#~ msgstr "napak" + +#~ msgid "times" +#~ msgstr "krat" diff --git a/bash-5.1/po/sr.gmo b/bash-5.1/po/sr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6e2fdf9297ec8709d998fb4d72dbb83ee47dbe9f GIT binary patch literal 205797 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

\n"); + curpos = 0; + break; + case V('T', 'S'): + c = scan_table(c); + break; + case V('D', 't'): /* BSD mandoc */ + mandoc_command = 1; + case V('T', 'H'): + if (!output_possible) { + sl = fill_words(c + j, wordlist, &words); + if (words > 1) { + char *t; + for (i = 1; i < words; i++) + wordlist[i][-1] = '\0'; + *sl = '\0'; + output_possible = 1; + sprintf(th_page_and_sec, "%s(%s)", wordlist[0], wordlist[1]); + if (words > 2) { + t = unescape(wordlist[2]); + strncpy(th_datestr, t, sizeof(th_datestr)); + th_datestr[sizeof(th_datestr) - 1] = '\0'; + } else + th_datestr[0] = '\0'; + if (words > 3) { + t = unescape(wordlist[3]); + strncpy(th_version, t, sizeof(th_version)); + th_version[sizeof(th_version) - 1] = '\0'; + } else + th_version[0] = '\0'; + out_html("\n"); + out_html(th_page_and_sec); + out_html(" Manual Page"); + out_html("\n\n"); + + outputPageHeader(th_page_and_sec, th_datestr, th_page_and_sec); + + out_html("
Index\n"); + *sl = '\n'; + out_html("
\n"); + if (mandoc_command) + out_html("
BSD mandoc
"); + } + c = sl + 1; + } else + c = skip_till_newline(c); + curpos = 0; + break; + case V('T', 'X'): + sl = fill_words(c + j, wordlist, &words); + *sl = '\0'; + out_html(change_to_font('I')); + if (words > 1) + wordlist[1][-1] = '\0'; + c = lookup_abbrev(wordlist[0]); + curpos += strlen(c); + out_html(c); + out_html(change_to_font('R')); + if (words > 1) + out_html(wordlist[1]); + *sl = '\n'; + c = sl + 1; + break; + case V('r', 'm'): + /* .rm xx : Remove request, macro or string */ + case V('r', 'n'): + /* + * .rn xx yy : Rename request, macro or string xx to + * yy + */ + { + STRDEF *de; + + c = c + j; + i = V(c[0], c[1]); + c = c + 2; + while (isspace(*c) && *c != '\n') + c++; + j = V(c[0], c[1]); + while (*c && *c != '\n') + c++; + c++; + de = strdef; + while (de && de->nr != j) + de = de->next; + if (de) { + if (de->st) + free(de->st); + de->nr = 0; + } + de = strdef; + while (de && de->nr != i) + de = de->next; + if (de) + de->nr = j; + break; + } + case V('n', 'x'): + /* .nx filename : next file. */ + case V('i', 'n'): + /* .in +-N : Indent */ + c = skip_till_newline(c); + break; + case V('n', 'r'): + /* + * .nr R +-N M: define and set number register R by + * +-N; auto-increment by M + */ + { + INTDEF *intd; + + c = c + j; + i = V(c[0], c[1]); + c = c + 2; + intd = intdef; + while (intd && intd->nr != i) + intd = intd->next; + if (!intd) { + intd = (INTDEF *) xmalloc(sizeof(INTDEF)); + intd->nr = i; + intd->val = 0; + intd->incr = 0; + intd->next = intdef; + intdef = intd; + } + while (*c == ' ' || *c == '\t') + c++; + c = scan_expression(c, &intd->val); + if (*c != '\n') { + while (*c == ' ' || *c == '\t') + c++; + c = scan_expression(c, &intd->incr); + } + c = skip_till_newline(c); + break; + } + case V('a', 'm'): + /* .am xx yy : append to a macro. */ + /* define or handle as .ig yy */ + mode = 1; + case V('d', 'e'): + /* + * .de xx yy : define or redefine macro xx; end at + * .yy (..) + */ + /* define or handle as .ig yy */ + { + STRDEF *de; + int olen = 0; + + c = c + j; + sl = fill_words(c, wordlist, &words); + i = V(c[0], c[1]); + j = 2; + if (words == 1) + wordlist[1] = ".."; + else { + wordlist[1]--; + wordlist[1][0] = '.'; + j = 3; + } + c = sl + 1; + sl = c; + while (*c && strncmp(c, wordlist[1], j)) + c = skip_till_newline(c); + de = defdef; + while (de && de->nr != i) + de = de->next; + if (mode && de) + olen = strlen(de->st); + j = olen + c - sl; + h = stralloc(j * 2 + 4); + if (h) { + for (j = 0; j < olen; j++) + h[j] = de->st[j]; + if (!j || h[j - 1] != '\n') + h[j++] = '\n'; + while (sl != c) { + if (sl[0] == '\\' && sl[1] == '\\') { + h[j++] = '\\'; + sl++; + } else + h[j++] = *sl; + sl++; + } + h[j] = '\0'; + if (de) { + if (de->st) + free(de->st); + de->st = h; + } else { + de = (STRDEF *) xmalloc(sizeof(STRDEF)); + de->nr = i; + de->next = defdef; + de->st = h; + defdef = de; + } + } + } + c = skip_till_newline(c); + break; + case V('B', 'l'): /* BSD mandoc */ + { + char list_options[NULL_TERMINATED(MED_STR_MAX)]; + char *nl = strchr(c, '\n'); + + c = c + j; + if (dl_set[itemdepth]) { /* These things can + * nest. */ + itemdepth++; + } + if (nl) { /* Parse list options */ + strlimitcpy(list_options, c, nl - c, MED_STR_MAX); + } + if (strstr(list_options, "-bullet")) { /* HTML Unnumbered List */ + dl_set[itemdepth] = BL_BULLET_LIST; + out_html("
    \n"); + } else if (strstr(list_options, "-enum")) { /* HTML Ordered List */ + dl_set[itemdepth] = BL_ENUM_LIST; + out_html("
      \n"); + } else { /* HTML Descriptive List */ + dl_set[itemdepth] = BL_DESC_LIST; + out_html("
      \n"); + } + if (fillout) + out_html("

      \n"); + else { + out_html(NEWLINE); + NEWLINE[0] = '\n'; + } + curpos = 0; + c = skip_till_newline(c); + break; + } + case V('E', 'l'): /* BSD mandoc */ + c = c + j; + if (dl_set[itemdepth] & BL_DESC_LIST) { + out_html("

      \n"); + } else if (dl_set[itemdepth] & BL_BULLET_LIST) { + out_html("
\n"); + } else if (dl_set[itemdepth] & BL_ENUM_LIST) { + out_html("\n"); + } + dl_set[itemdepth] = 0; + if (itemdepth > 0) + itemdepth--; + if (fillout) + out_html("

\n"); + else { + out_html(NEWLINE); + NEWLINE[0] = '\n'; + } + curpos = 0; + c = skip_till_newline(c); + break; + case V('I', 't'): /* BSD mandoc */ + c = c + j; + if (strncmp(c, "Xo", 2) == 0 && isspace(*(c + 2))) { + c = skip_till_newline(c); + } + if (dl_set[itemdepth] & BL_DESC_LIST) { + out_html("

"); + out_html(change_to_font('B')); + if (*c == '\n') { /* Don't allow embedded + * comms after a newline */ + c++; + c = scan_troff(c, 1, NULL); + } else { /* Do allow embedded comms on + * the same line. */ + c = scan_troff_mandoc(c, 1, NULL); + } + out_html(change_to_font('R')); + out_html(NEWLINE); + out_html("
"); + } else if (dl_set[itemdepth] & (BL_BULLET_LIST | BL_ENUM_LIST)) { + out_html("
  • "); + c = scan_troff_mandoc(c, 1, NULL); + out_html(NEWLINE); + } + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('B', 'k'): /* BSD mandoc */ + case V('E', 'k'): /* BSD mandoc */ + case V('D', 'd'): /* BSD mandoc */ + case V('O', 's'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + c = scan_troff_mandoc(c, 1, NULL); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('B', 't'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + out_html(" is currently in beta test."); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('B', 'x'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + out_html("BSD "); + c = scan_troff_mandoc(c, 1, NULL); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('D', 'l'): /* BSD mandoc */ + c = c + j; + out_html(NEWLINE); + out_html("
    "); + out_html(change_to_font('L')); + if (*c == '\n') + c++; + c = scan_troff_mandoc(c, 1, NULL); + out_html(change_to_font('R')); + out_html("
    "); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('B', 'd'): /* BSD mandoc */ + { /* Seems like a kind of example/literal mode */ + char bd_options[NULL_TERMINATED(MED_STR_MAX)]; + char *nl = strchr(c, '\n'); + + c = c + j; + if (nl) { + strlimitcpy(bd_options, c, nl - c, MED_STR_MAX); + } + out_html(NEWLINE); + mandoc_bd_options = 0; /* Remember options for + * terminating Bl */ + if (strstr(bd_options, "-offset indent")) { + mandoc_bd_options |= BD_INDENT; + out_html("
    \n"); + } + if (strstr(bd_options, "-literal") + || strstr(bd_options, "-unfilled")) { + if (fillout) { + mandoc_bd_options |= BD_LITERAL; + out_html(change_to_font(0)); + out_html(change_to_size('0')); + out_html("
    \n");
    +					}
    +					curpos = 0;
    +					fillout = 0;
    +				}
    +				c = skip_till_newline(c);
    +				break;
    +			}
    +		case V('E', 'd'):	/* BSD mandoc */
    +			if (mandoc_bd_options & BD_LITERAL) {
    +				if (!fillout) {
    +					out_html(change_to_font(0));
    +					out_html(change_to_size('0'));
    +					out_html("
    \n"); + } + } + if (mandoc_bd_options & BD_INDENT) + out_html("
    \n"); + curpos = 0; + fillout = 1; + c = skip_till_newline(c); + break; + case V('B', 'e'): /* BSD mandoc */ + c = c + j; + if (fillout) + out_html("

    "); + else { + out_html(NEWLINE); + NEWLINE[0] = '\n'; + } + curpos = 0; + c = skip_till_newline(c); + break; + case V('X', 'r'): /* BSD mandoc */ + { + /* + * Translate xyz 1 to xyz(1) Allow for + * multiple spaces. Allow the section to be + * missing. + */ + char buff[NULL_TERMINATED(MED_STR_MAX)]; + char *bufptr; + + trans_char(c, '"', '\a'); + bufptr = buff; + c = c + j; + if (*c == '\n') + c++; /* Skip spaces */ + while (isspace(*c) && *c != '\n') + c++; + while (isalnum(*c)) { /* Copy the xyz part */ + *bufptr = *c; + bufptr++; + if (bufptr >= buff + MED_STR_MAX) + break; + c++; + } + while (isspace(*c) && *c != '\n') + c++; /* Skip spaces */ + if (isdigit(*c)) { /* Convert the number if + * there is one */ + *bufptr = '('; + bufptr++; + if (bufptr < buff + MED_STR_MAX) { + while (isalnum(*c)) { + *bufptr = *c; + bufptr++; + if (bufptr >= buff + MED_STR_MAX) + break; + c++; + } + if (bufptr < buff + MED_STR_MAX) { + *bufptr = ')'; + bufptr++; + } + } + } + while (*c != '\n') { /* Copy the remainder */ + if (!isspace(*c)) { + *bufptr = *c; + bufptr++; + if (bufptr >= buff + MED_STR_MAX) + break; + } + c++; + } + *bufptr = '\n'; + scan_troff_mandoc(buff, 1, NULL); + + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + } + break; + case V('F', 'l'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + out_html("-"); + if (*c != '\n') { + out_html(change_to_font('B')); + c = scan_troff_mandoc(c, 1, NULL); + out_html(change_to_font('R')); + } + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('P', 'a'): /* BSD mandoc */ + case V('P', 'f'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + c = scan_troff_mandoc(c, 1, NULL); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('P', 'p'): /* BSD mandoc */ + if (fillout) + out_html("

    \n"); + else { + out_html(NEWLINE); + NEWLINE[0] = '\n'; + } + curpos = 0; + c = skip_till_newline(c); + break; + case V('D', 'q'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + out_html("``"); + c = scan_troff_mandoc(c, 1, NULL); + out_html("''"); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('O', 'p'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + out_html(change_to_font('R')); + out_html("["); + c = scan_troff_mandoc(c, 1, NULL); + out_html(change_to_font('R')); + out_html("]"); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('O', 'o'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + out_html(change_to_font('R')); + out_html("["); + c = scan_troff_mandoc(c, 1, NULL); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('O', 'c'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + c = scan_troff_mandoc(c, 1, NULL); + out_html(change_to_font('R')); + out_html("]"); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('P', 'q'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + out_html("("); + c = scan_troff_mandoc(c, 1, NULL); + out_html(")"); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('Q', 'l'): /* BSD mandoc */ + { /* Single quote first word in the line */ + char *sp; + + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + sp = c; + do { /* Find first whitespace after the + * first word that isn't a mandoc + * macro */ + while (*sp && isspace(*sp)) + sp++; + while (*sp && !isspace(*sp)) + sp++; + } while (*sp && isupper(*(sp - 2)) && islower(*(sp - 1))); + + /* + * Use a newline to mark the end of text to + * be quoted + */ + if (*sp) + *sp = '\n'; + out_html("`"); /* Quote the text */ + c = scan_troff_mandoc(c, 1, NULL); + out_html("'"); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case V('S', 'q'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + out_html("`"); + c = scan_troff_mandoc(c, 1, NULL); + out_html("'"); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('A', 'r'): /* BSD mandoc */ + /* parse one line in italics */ + out_html(change_to_font('I')); + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') { /* An empty Ar means "file + * ..." */ + out_html("file ..."); + } else { + c = scan_troff_mandoc(c, 1, NULL); + } + out_html(change_to_font('R')); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('A', 'd'): /* BSD mandoc */ + case V('E', 'm'): /* BSD mandoc */ + case V('V', 'a'): /* BSD mandoc */ + case V('X', 'c'): /* BSD mandoc */ + /* parse one line in italics */ + out_html(change_to_font('I')); + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + c = scan_troff_mandoc(c, 1, NULL); + out_html(change_to_font('R')); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('N', 'd'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + out_html(" - "); + c = scan_troff_mandoc(c, 1, NULL); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('N', 'm'): /* BSD mandoc */ + { + static char mandoc_name[NULL_TERMINATED(SMALL_STR_MAX)] = ""; + + trans_char(c, '"', '\a'); + c = c + j; + if (mandoc_synopsis) { /* Break lines only in + * the Synopsis. The + * Synopsis section + * seems to be treated + * as a special case - + * Bummer! */ + static int count = 0; /* Don't break on the + * first Nm */ + + if (count) { + out_html("
    "); + } else { + char *end = strchr(c, '\n'); + + if (end) { /* Remember the name for + * later. */ + strlimitcpy(mandoc_name, c, end - c, SMALL_STR_MAX); + } + } + count++; + } + out_html(change_to_font('B')); + while (*c == ' ' || *c == '\t') + c++; + if (*c == '\n') { /* If Nm has no + * argument, use one + * from an earlier Nm + * command that did have + * one. Hope there + * aren't too many + * commands that do + * this. */ + out_html(mandoc_name); + } else { + c = scan_troff_mandoc(c, 1, NULL); + } + out_html(change_to_font('R')); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + } + case V('C', 'd'): /* BSD mandoc */ + case V('C', 'm'): /* BSD mandoc */ + case V('I', 'c'): /* BSD mandoc */ + case V('M', 's'): /* BSD mandoc */ + case V('O', 'r'): /* BSD mandoc */ + case V('S', 'y'): /* BSD mandoc */ + /* parse one line in bold */ + out_html(change_to_font('B')); + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + c = scan_troff_mandoc(c, 1, NULL); + out_html(change_to_font('R')); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('D', 'v'): /* BSD mandoc */ + case V('E', 'v'): /* BSD mandoc */ + case V('F', 'r'): /* BSD mandoc */ + case V('L', 'i'): /* BSD mandoc */ + case V('N', 'o'): /* BSD mandoc */ + case V('N', 's'): /* BSD mandoc */ + case V('T', 'n'): /* BSD mandoc */ + case V('n', 'N'): /* BSD mandoc */ + trans_char(c, '"', '\a'); + c = c + j; + if (*c == '\n') + c++; + out_html(change_to_font('B')); + c = scan_troff_mandoc(c, 1, NULL); + out_html(change_to_font('R')); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('%', 'A'): /* BSD mandoc biblio stuff */ + case V('%', 'D'): + case V('%', 'N'): + case V('%', 'O'): + case V('%', 'P'): + case V('%', 'Q'): + case V('%', 'V'): + c = c + j; + if (*c == '\n') + c++; + c = scan_troff(c, 1, NULL); /* Don't allow embedded + * mandoc coms */ + if (fillout) + curpos++; + else + curpos = 0; + break; + case V('%', 'B'): + case V('%', 'J'): + case V('%', 'R'): + case V('%', 'T'): + c = c + j; + out_html(change_to_font('I')); + if (*c == '\n') + c++; + c = scan_troff(c, 1, NULL); /* Don't allow embedded + * mandoc coms */ + out_html(change_to_font('R')); + if (fillout) + curpos++; + else + curpos = 0; + break; + default: + /* search macro database of self-defined macros */ + owndef = defdef; + while (owndef && owndef->nr != i) + owndef = owndef->next; + if (owndef) { + char **oldargument; + int deflen; + int onff; + + sl = fill_words(c + j, wordlist, &words); + c = sl + 1; + *sl = '\0'; + for (i = 1; i < words; i++) + wordlist[i][-1] = '\0'; + for (i = 0; i < words; i++) { + char *h = NULL; + + if (mandoc_command) { + scan_troff_mandoc(wordlist[i], 1, &h); + } else { + scan_troff(wordlist[i], 1, &h); + } + wordlist[i] = h; + } + for (i = words; i < 20; i++) + wordlist[i] = NULL; + deflen = strlen(owndef->st); + for (i = 0; owndef->st[deflen + 2 + i] = owndef->st[i]; i++); + oldargument = argument; + argument = wordlist; + onff = newline_for_fun; + if (mandoc_command) { + scan_troff_mandoc(owndef->st + deflen + 2, 0, NULL); + } else { + scan_troff(owndef->st + deflen + 2, 0, NULL); + } + newline_for_fun = onff; + argument = oldargument; + for (i = 0; i < words; i++) + if (wordlist[i]) + free(wordlist[i]); + *sl = '\n'; + } else if (mandoc_command && + ((isupper(*c) && islower(*(c + 1))) + || (islower(*c) && isupper(*(c + 1)))) + ) { /* Let through any BSD mandoc + * commands that haven't been delt + * with. I don't want to miss + * anything out of the text. */ + char buf[4]; + + strncpy(buf, c, 2); + buf[2] = ' '; + buf[3] = '\0'; + out_html(buf); /* Print the command (it + * might just be text). */ + c = c + j; + trans_char(c, '"', '\a'); + if (*c == '\n') + c++; + out_html(change_to_font('R')); + c = scan_troff(c, 1, NULL); + out_html(NEWLINE); + if (fillout) + curpos++; + else + curpos = 0; + } else { + c = skip_till_newline(c); + } + break; + } + } + if (fillout) { + out_html(NEWLINE); + curpos++; + } + NEWLINE[0] = '\n'; + return c; +} + +static void +flush(void) +{ +} + +static int contained_tab = 0; +static int mandoc_line = 0; /* Signals whether to look for embedded + * mandoc commands. */ + +/* san : stop at newline */ +static char * +scan_troff(char *c, int san, char **result) +{ + char *h; + char intbuff[NULL_TERMINATED(MED_STR_MAX)]; + int ibp = 0; + int i; + char *exbuffer; + int exbuffpos, exbuffmax, exscaninbuff, exnewline_for_fun; + int usenbsp = 0; + +#define FLUSHIBP if (ibp) { intbuff[ibp]=0; out_html(intbuff); ibp=0; } + + exbuffer = buffer; + exbuffpos = buffpos; + exbuffmax = buffmax; + exnewline_for_fun = newline_for_fun; + exscaninbuff = scaninbuff; + newline_for_fun = 0; + if (result) { + if (*result) { + buffer = *result; + buffpos = strlen(buffer); + buffmax = buffpos; + } else { + buffer = stralloc(LARGE_STR_MAX); + buffpos = 0; + buffmax = LARGE_STR_MAX; + } + scaninbuff = 1; + } + h = c; + /* start scanning */ + + while (*h && (!san || newline_for_fun || *h != '\n')) { + + if (*h == escapesym) { + h++; + FLUSHIBP; + h = scan_escape(h); + } else if (*h == controlsym && h[-1] == '\n') { + h++; + FLUSHIBP; + h = scan_request(h); + if (san && h[-1] == '\n') + h--; + } else if (mandoc_line + && *(h) && isupper(*(h)) + && *(h + 1) && islower(*(h + 1)) + && *(h + 2) && isspace(*(h + 2))) { + /* + * BSD embedded command eg ".It Fl Ar arg1 Fl Ar + * arg2" + */ + FLUSHIBP; + h = scan_request(h); + if (san && h[-1] == '\n') + h--; + } else if (*h == nobreaksym && h[-1] == '\n') { + h++; + FLUSHIBP; + h = scan_request(h); + if (san && h[-1] == '\n') + h--; + } else { + int mx; + + if (h[-1] == '\n' && still_dd && isalnum(*h)) { + /* + * sometimes a .HP request is not followed by + * a .br request + */ + FLUSHIBP; + out_html("

    "); + curpos = 0; + still_dd = 0; + } + switch (*h) { + case '&': + intbuff[ibp++] = '&'; + intbuff[ibp++] = 'a'; + intbuff[ibp++] = 'm'; + intbuff[ibp++] = 'p'; + intbuff[ibp++] = ';'; + curpos++; + break; + case '<': + intbuff[ibp++] = '&'; + intbuff[ibp++] = 'l'; + intbuff[ibp++] = 't'; + intbuff[ibp++] = ';'; + curpos++; + break; + case '>': + intbuff[ibp++] = '&'; + intbuff[ibp++] = 'g'; + intbuff[ibp++] = 't'; + intbuff[ibp++] = ';'; + curpos++; + break; + case '"': + intbuff[ibp++] = '&'; + intbuff[ibp++] = 'q'; + intbuff[ibp++] = 'u'; + intbuff[ibp++] = 'o'; + intbuff[ibp++] = 't'; + intbuff[ibp++] = ';'; + curpos++; + break; + case '\n': + if (h[-1] == '\n' && fillout) { + intbuff[ibp++] = '<'; + intbuff[ibp++] = 'P'; + intbuff[ibp++] = '>'; + } + if (contained_tab && fillout) { + intbuff[ibp++] = '<'; + intbuff[ibp++] = 'B'; + intbuff[ibp++] = 'R'; + intbuff[ibp++] = '>'; + } + contained_tab = 0; + curpos = 0; + usenbsp = 0; + intbuff[ibp++] = '\n'; + break; + case '\t': + { + int curtab = 0; + + contained_tab = 1; + FLUSHIBP; + /* like a typewriter, not like TeX */ + tabstops[19] = curpos + 1; + while (curtab < maxtstop && tabstops[curtab] <= curpos) + curtab++; + if (curtab < maxtstop) { + if (!fillout) { + while (curpos < tabstops[curtab]) { + intbuff[ibp++] = ' '; + if (ibp > 480) { + FLUSHIBP; + } + curpos++; + } + } else { + out_html(""); + while (curpos < tabstops[curtab]) { + out_html(" "); + curpos++; + } + out_html(""); + } + } + } + break; + default: + if (*h == ' ' && (h[-1] == '\n' || usenbsp)) { + FLUSHIBP; + if (!usenbsp && fillout) { + out_html("
    "); + curpos = 0; + } + usenbsp = fillout; + if (usenbsp) + out_html(" "); + else + intbuff[ibp++] = ' '; + } else if (*h > 31 && *h < 127) + intbuff[ibp++] = *h; + else if (((unsigned char) (*h)) > 127) { + intbuff[ibp++] = '&'; + intbuff[ibp++] = '#'; + intbuff[ibp++] = '0' + ((unsigned char) (*h)) / 100; + intbuff[ibp++] = '0' + (((unsigned char) (*h)) % 100) / 10; + intbuff[ibp++] = '0' + ((unsigned char) (*h)) % 10; + intbuff[ibp++] = ';'; + } + curpos++; + break; + } + if (ibp > (MED_STR_MAX - 20)) + FLUSHIBP; + h++; + } + } + FLUSHIBP; + if (buffer) + buffer[buffpos] = '\0'; + if (san && *h) + h++; + newline_for_fun = exnewline_for_fun; + if (result) { + *result = buffer; + buffer = exbuffer; + buffpos = exbuffpos; + buffmax = exbuffmax; + scaninbuff = exscaninbuff; + } + return h; +} + + +static char * +scan_troff_mandoc(char *c, int san, char **result) +{ + char *ret, *end = c; + int oldval = mandoc_line; + + mandoc_line = 1; + while (*end && *end != '\n') { + end++; + } + + if (end > c + 2 + && ispunct(*(end - 1)) + && isspace(*(end - 2)) && *(end - 2) != '\n') { + /* + * Don't format lonely punctuation E.g. in "xyz ," format the + * xyz and then append the comma removing the space. + */ + *(end - 2) = '\n'; + ret = scan_troff(c, san, result); + *(end - 2) = *(end - 1); + *(end - 1) = ' '; + } else { + ret = scan_troff(c, san, result); + } + mandoc_line = oldval; + return ret; +} + +int +main(int argc, char **argv) +{ + FILE *f; + char *t; + int l, i; + char *buf; + char *h, *fullname; + STRDEF *stdf; + + t = NULL; + while ((i = getopt(argc, argv, "")) != EOF) { + switch (i) { + default: + usage(); + exit(EXIT_USAGE); + } + } + + if (argc != 2) { + usage(); + exit(EXIT_USAGE); + } + manpage = h = t = argv[1]; + i = 0; + + buf = read_man_page(h); + if (!buf) { + fprintf(stderr, "man2html: cannot read %s: %s\n", h, strerror(errno)); + exit(1); + } +#ifdef MAKEINDEX + idxfile = fopen(INDEXFILE, "a"); +#endif + stdf = &standardchar[0]; + i = 0; + while (stdf->nr) { + stdf->next = &standardchar[i]; + stdf = stdf->next; + i++; + } + chardef = &standardchar[0]; + + stdf = &standardstring[0]; + i = 0; + while (stdf->nr) { + stdf->next = &standardstring[i]; + stdf = stdf->next; + i++; + } + strdef = &standardstring[0]; + + intdef = &standardint[0]; + i = 0; + while (intdef->nr) { + intdef->next = &standardint[i]; + intdef = intdef->next; + i++; + } + intdef = &standardint[0]; + + defdef = NULL; + + scan_troff(buf + 1, 0, NULL); + + while (itemdepth || dl_set[itemdepth]) { + out_html("\n"); + if (dl_set[itemdepth]) + dl_set[itemdepth] = 0; + else if (itemdepth > 0) + itemdepth--; + } + + out_html(change_to_font(0)); + out_html(change_to_size(0)); + if (!fillout) { + fillout = 1; + out_html(""); + } + out_html(NEWLINE); + + if (output_possible) { + outputPageFooter(th_version, th_datestr, th_page_and_sec); + /*   for mosaic users */ + fputs("
    \n 

    Index

    \n
    \n", stdout); + manidx[mip] = 0; + fputs(manidx, stdout); + if (subs) + fputs("
    \n", stdout); + fputs("\n", stdout); + print_sig(); + fputs("\n\n", stdout); + } else + fprintf(stderr, "man2html: no output produced\n"); +#ifdef MAKEINDEX + if (idxfile) + fclose(idxfile); +#endif + exit(EXIT_SUCCESS); +} diff --git a/bash-5.1/support/missing b/bash-5.1/support/missing new file mode 100755 index 0000000..31977a1 --- /dev/null +++ b/bash-5.1/support/missing @@ -0,0 +1,187 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997 Free Software Foundation, Inc. +# Franc,ois Pinard , 1996. + +# 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 . +# + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing - GNU libit 0.0" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`configure.in'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`configure.in'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`configure.in'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER([^):]*:\([^)]*\)).*/\1/p' configure.in` + if test -z "$files"; then + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^):]*\)).*/\1/p' configure.in` + test -z "$files" || files="$files.in" + else + files=`echo "$files" | sed -e 's/:/ /g'` + fi + test -z "$files" && files="config.h.in" + touch $files + ;; + + automake) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print \ + | sed 's/^\(.*\).am$/touch \1.in/' \ + | sh + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/bash-5.1/support/mkclone b/bash-5.1/support/mkclone new file mode 100755 index 0000000..1840b03 --- /dev/null +++ b/bash-5.1/support/mkclone @@ -0,0 +1,122 @@ +#! /bin/bash +# +# mkclone - symlink every file appearing in $src/MANIFEST to a corresponding +# file in the target directory ($1). Directories specified in +# MANIFEST are created in the target directory +# +# 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 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 . +# +prog=`basename $0` + +SRCDIR=src + +USAGE="usage: $prog [-m manifest] [-s srcdir] [-v] [-d] [-h] target" +while getopts dhm:s:v opt +do + case "$opt" in + m) MANIFEST=$OPTARG ;; + s) SRCDIR=$OPTARG ;; + v) verbose=y ;; + d) ECHO=echo debug=y ;; + h) hardlinks=y ;; + ?) echo $USAGE >&2 + exit 2;; + esac +done + +: ${MANIFEST:=${SRCDIR}/MANIFEST} + +[ -n "$debug" ] && verbose= + +shift $(( $OPTIND - 1 )) + +if [ $# -lt 1 ]; then + echo $USAGE >&2 + exit 2 +fi + +if [ ! -f $MANIFEST ]; then + echo "$prog: $MANIFEST: no such file or directory" >&2 + echo "$prog: must be run with valid -s argument or from source directory" >&2 + exit 1 +fi + +rm_ltmp=false +LINKTEMP=`mktemp -t linktmp.XXXXXXXX 2>/dev/null` +if [ -z "$LINKTEMP" ]; then + : ${TMPDIR:=/tmp} + LINKTEMP=${TMPDIR}/linktmp.$$ + rm_ltmp=true +fi + +$rm_ltmp && rm -f ${LINKTEMP} +# if the user specified hard links, then do that. otherwise, try to use +# symlinks if they're present +if [ -n "$hardlinks" ]; then + LN=ln +elif (ln -s /dev/null ${LINKTEMP}) >/dev/null 2>&1; then + LN="ln -s" +else + LN=ln +fi +rm -f ${LINKTEMP} + +TARGET=$1 + +if [ ! -d "$TARGET" ]; then + mkdir "$TARGET" +fi + +echo "${prog}: creating clone of bash source tree (from $SRCDIR) in $TARGET" + +cd "$TARGET" || { echo "${prog}: cannot cd to $TARGET" >&2 ; exit 1; } + +while read fname type mode +do + [ -z "$fname" ] && continue + + case "$fname" in + \#*) continue ;; + esac + + case "$type" in + d) [ -n "$verbose" ] && echo mkdir $fname + $ECHO mkdir $fname ;; # already in $TARGET + f) fn=${fname##*/} + case "$fname" in + */*) dn=${fname%/*} ;; + *) dn=. ;; + esac + if [ -n "$verbose" ] || [ -n "$debug" ]; then + echo "( cd $dn && $LN $SRCDIR/$fname $fn )" + fi + [ -z "$debug" ] && ( cd $dn && $LN $SRCDIR/$fname $fn ) + ;; + *) echo "${prog}: ${fname}: unknown file type $type" 1>&2 ;; + esac +done < $MANIFEST + +# special +SPECIAL="parser-built y.tab.c y.tab.h" + +rm -f $SPECIAL +for sf in $SPECIAL +do + [ -n "$verbose" ] && echo cp -p $SRCDIR/$sf $TARGET + $ECHO cp -p $SRCDIR/$sf $TARGET +done + +exit 0 diff --git a/bash-5.1/support/mkconffiles b/bash-5.1/support/mkconffiles new file mode 100755 index 0000000..59e4c0f --- /dev/null +++ b/bash-5.1/support/mkconffiles @@ -0,0 +1,79 @@ +#! /bin/sh +# +# mkconffiles - create _distribution and _patchlevel files in preparation +# for recreating `configure' from `configure.ac' +# +# options: +# -s srcdir directory where `configure' resides (defaults to `.') +# -d outdir directory where the files should be written (defaults +# to "$srcdir") +# -v verbose +# -n nocreate - don't create the output files +# +# Chet Ramey +# chet@po.cwru.edu + +# 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 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 . + +PROG=`basename $0` + +# defaults +srcdir=. + +distname="_distribution" +patchname="_patchlevel" + +while [ $# -gt 0 ]; do + case "$1" in + -s) shift; srcdir="$1"; shift;; + -d) shift; outdir="$1"; shift;; + -v) shift; verbose=yes ;; + -n) shift; nocreate=yes;; + --) shift; break;; + *) echo "${PROG}: usage: ${PROG} [-s srcdir] [-d outdir] [-nv]" >&2; exit 2;; + esac +done + +if [ ! -f ${srcdir}/configure ]; then + echo "${PROG}: ${srcdir}/configure not found" >&2 + exit 1 +fi + +# default output directory to source directory +if [ -z "$outdir" ]; then + outdir=${srcdir} +fi + +DISTRIB=`grep '^BASHVERS' ${srcdir}/configure | sed 's:.*=::'` +PATCH=`grep '^BASHPATCH' ${srcdir}/configure | sed 's:.*=::'` + +if [ -n "$verbose" ]; then + echo "${PROG}: creating new distribution files for bash-${DISTRIB}.${PATCH} in ${outdir}" +fi + +distout=${outdir}/${distname} +patchout=${outdir}/${patchname} + +if [ -z "$nocreate" ]; then + echo "$DISTRIB" > $distout + echo "$PATCH" > $patchout +fi + +if [ -n "$verbose" ]; then + echo "${PROG}: created $distout and $patchout" +fi + +exit 0 diff --git a/bash-5.1/support/mkdirs b/bash-5.1/support/mkdirs new file mode 100755 index 0000000..46f656e --- /dev/null +++ b/bash-5.1/support/mkdirs @@ -0,0 +1,47 @@ +#! /bin/sh +# +# mkdirs - a work-alike for `mkdir -p' +# +# Chet Ramey +# chet@po.cwru.edu + +# 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 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 . + +for dir +do + + test -d "$dir" && continue + + tomake=$dir + while test -n "$dir" ; do + # dir=${dir%/*} + # dir=`expr "$dir" ':' '\(/.*\)/[^/]*'` + if dir=`expr "$dir" ':' '\(.*\)/[^/]*'`; then + tomake="$dir $tomake" + else + dir= + fi + done + + for d in $tomake + do + test -d "$d" && continue + echo mkdir "$d" + mkdir "$d" + done +done + +exit 0 diff --git a/bash-5.1/support/mkinstalldirs b/bash-5.1/support/mkinstalldirs new file mode 100755 index 0000000..d2d5f21 --- /dev/null +++ b/bash-5.1/support/mkinstalldirs @@ -0,0 +1,111 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" 1>&2 + exit 0 + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +case $dirmode in + '') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi + ;; + *) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi + ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# End: +# mkinstalldirs ends here diff --git a/bash-5.1/support/mksignames.c b/bash-5.1/support/mksignames.c new file mode 100644 index 0000000..ba87ae8 --- /dev/null +++ b/bash-5.1/support/mksignames.c @@ -0,0 +1,111 @@ +/* mksignames.c -- Create and write `signames.h', which contains an array of + signal names. */ + +/* Copyright (C) 1992-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include +#include + +#include +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +/* Duplicated from signames.c */ +#if !defined (NSIG) +# define NSIG 64 +#endif + +#define LASTSIG NSIG+2 + +/* Imported from signames.c */ +extern void initialize_signames (); +extern char *signal_names[]; + +char *progname; + +void +write_signames (stream) + FILE *stream; +{ + register int i; + + fprintf (stream, "/* This file was automatically created by %s.\n", + progname); + fprintf (stream, " Do not edit. Edit support/mksignames.c instead. */\n\n"); + fprintf (stream, + "/* A translation list so we can be polite to our users. */\n"); +#if defined (CROSS_COMPILING) + fprintf (stream, "extern char *signal_names[];\n\n"); + fprintf (stream, "extern void initialize_signames PARAMS((void));\n\n"); +#else + fprintf (stream, "char *signal_names[NSIG + 4] = {\n"); + + for (i = 0; i <= LASTSIG; i++) + fprintf (stream, " \"%s\",\n", signal_names[i]); + + fprintf (stream, " (char *)0x0\n"); + fprintf (stream, "};\n\n"); + fprintf (stream, "#define initialize_signames()\n\n"); +#endif +} + +int +main (argc, argv) + int argc; + char **argv; +{ + char *stream_name; + FILE *stream; + + progname = argv[0]; + + if (argc == 1) + { + stream_name = "stdout"; + stream = stdout; + } + else if (argc == 2) + { + stream_name = argv[1]; + stream = fopen (stream_name, "w"); + } + else + { + fprintf (stderr, "Usage: %s [output-file]\n", progname); + exit (1); + } + + if (!stream) + { + fprintf (stderr, "%s: %s: cannot open for writing\n", + progname, stream_name); + exit (2); + } + +#if !defined (CROSS_COMPILING) + initialize_signames (); +#endif + write_signames (stream); + exit (0); +} diff --git a/bash-5.1/support/mkversion.sh b/bash-5.1/support/mkversion.sh new file mode 100755 index 0000000..5960a42 --- /dev/null +++ b/bash-5.1/support/mkversion.sh @@ -0,0 +1,168 @@ +#! /bin/sh + +# 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. This creates a file named by the -o option, +# otherwise everything is echoed to the standard output. + +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +PROGNAME=`basename $0` +USAGE="$PROGNAME [-b] [-S srcdir] -d version -p patchlevel [-s status] [-o outfile]" + +source_dir="." + +while [ $# -gt 0 ]; do + case "$1" in + -o) shift; OUTFILE=$1; shift ;; + -b) shift; inc_build=yes ;; + -s) shift; rel_status=$1; shift ;; + -p) shift; patch_level=$1; shift ;; + -d) shift; dist_version=$1; shift ;; + -S) shift; source_dir="$1"; shift ;; + *) echo "$PROGNAME: usage: $USAGE" >&2 ; exit 2 ;; + esac +done + +# Required arguments +if [ -z "$dist_version" ]; then + echo "${PROGNAME}: required argument -d missing" >&2 + echo "$PROGNAME: usage: $USAGE" >&2 + exit 1 +fi + +#if [ -z "$patch_level" ]; then +# echo "${PROGNAME}: required argument -p missing" >&2 +# echo "$PROGNAME: usage: $USAGE" >&2 +# exit 1 +#fi + +# Defaults +if [ -z "$rel_status" ]; then + rel_status="release" +fi + +build_ver= +if [ -r .build ]; then + build_ver=`cat .build` +fi +if [ -z "$build_ver" ]; then + build_ver=0 +fi + +# increment the build version if that's what's required + +if [ -n "$inc_build" ]; then + build_ver=`expr 1 + $build_ver` +fi + +# what's the patch level? +if [ -z "$patch_level" ]; then + patchlevel_h=$source_dir/patchlevel.h + if [ -s $patchlevel_h ]; then + patch_level=`cat $patchlevel_h | grep '^#define[ ]*PATCHLEVEL' | awk '{print $NF}'` + fi +fi +if [ -z "$patch_level" ]; then + patch_level=0 +fi + +# If we have an output file specified, make it the standard output +if [ -n "$OUTFILE" ]; then + if exec >$OUTFILE; then + : + else + echo "${PROGNAME}: cannot redirect standard output to $OUTFILE" >&2 + exit 1 + fi +fi + +# Output the leading comment. +echo "/* Version control for the shell. This file gets changed when you say" +echo " \`make version.h' to the Makefile. It is created by mkversion. */" + +# Output the distribution version. Single numbers are converted to x.00. +# Allow, as a special case, `[:digit:].[:digit:][:alpha:]' for +# intermediate versions (e.g., `2.5a'). +# Any characters other than digits and `.' are invalid. +case "$dist_version" in +[0-9].[0-9][a-z]) ;; # special case +*[!0-9.]*) echo "mkversion.sh: ${dist_version}: bad distribution version" >&2 + exit 1 ;; +*.*) ;; +*) dist_version=${dist_version}.00 ;; +esac + +dist_major=`echo $dist_version | sed 's:\..*$::'` +[ -z "${dist_major}" ] && dist_major=0 + +dist_minor=`echo $dist_version | sed 's:^.*\.::'` +case "$dist_minor" in +"") dist_minor=0 ;; +[a-z]) dist_minor=0${dist_minor} ;; +?) dist_minor=${dist_minor} ;; +*) ;; +esac + +#float_dist=`echo $dist_version | awk '{printf "%.2f\n", $1}'` +float_dist=${dist_major}.${dist_minor} + +echo +echo "/* The distribution version number of this shell. */" +echo "#define DISTVERSION \"${float_dist}\"" + +# Output the patch level +#echo +#echo "/* The patch level of this version of the shell. */" +#echo "#define PATCHLEVEL ${patch_level}" + +# Output the build version +echo +echo "/* The last built version of this shell. */" +echo "#define BUILDVERSION ${build_ver}" + +# Output the release status +echo +echo "/* The release status of this shell. */" +echo "#define RELSTATUS \"${rel_status}\"" + +echo +echo "/* The default shell compatibility-level (the current version) */" +echo "#define DEFAULT_COMPAT_LEVEL ${dist_major}${dist_minor}" + +# Output the SCCS version string +sccs_string="${float_dist}.${patch_level}(${build_ver}) ${rel_status} GNU" +echo +echo "/* A version string for use by sccs and the what command. */" +echo "#define SCCSVERSION \"@(#)Bash version ${sccs_string}\"" + +# extern function declarations +#echo +#echo '/* Functions from version.c. */' +#echo 'extern char *shell_version_string PARAMS((void));' +#echo 'extern void show_shell_version PARAMS((int));' + +if [ -n "$inc_build" ]; then + # Make sure we can write to .build + if [ -f .build ] && [ ! -w .build ]; then + echo "$PROGNAME: cannot write to .build, not incrementing build version" >&2 + else + echo "$build_ver" > .build + fi +fi + +exit 0 diff --git a/bash-5.1/support/printenv.c b/bash-5.1/support/printenv.c new file mode 100644 index 0000000..154e086 --- /dev/null +++ b/bash-5.1/support/printenv.c @@ -0,0 +1,72 @@ +/* printenv -- minimal clone of BSD printenv(1). + + usage: printenv [varname] + + Chet Ramey + chet@po.cwru.edu +*/ + +/* Copyright (C) 1997-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 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 . +*/ + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include "bashansi.h" +#include /* puts */ + +extern char **environ; + +int +main (argc, argv) + int argc; + char **argv; +{ + register char **envp, *eval; + int len; + + argv++; + argc--; + + /* printenv */ + if (argc == 0) + { + for (envp = environ; *envp; envp++) + puts (*envp); + exit (0); + } + + /* printenv varname */ + len = strlen (*argv); + for (envp = environ; *envp; envp++) + { + if (**argv == **envp && strncmp (*envp, *argv, len) == 0) + { + eval = *envp + len; + /* If the environment variable doesn't have an `=', ignore it. */ + if (*eval == '=') + { + puts (eval + 1); + exit (0); + } + } + } + exit (1); +} + diff --git a/bash-5.1/support/printenv.sh b/bash-5.1/support/printenv.sh new file mode 100755 index 0000000..32b7ee8 --- /dev/null +++ b/bash-5.1/support/printenv.sh @@ -0,0 +1,27 @@ +#! /bin/sh - + +# 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 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 . +# + +if [ $# -eq 0 ]; then + env + exit +elif eval [ "\${$1-unset}" = "unset" ]; then + exit 1 +else + eval echo \$$1 + exit 0 +fi diff --git a/bash-5.1/support/recho.c b/bash-5.1/support/recho.c new file mode 100644 index 0000000..7e3c6bc --- /dev/null +++ b/bash-5.1/support/recho.c @@ -0,0 +1,67 @@ +/* + recho -- really echo args, bracketed with <> and with invisible chars + made visible. + + Chet Ramey + chet@po.cwru.edu +*/ + +/* Copyright (C) 2002-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 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 . +*/ + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#include "bashansi.h" +#include + +void strprint(); + +int +main(argc, argv) +int argc; +char **argv; +{ + register int i; + + for (i = 1; i < argc; i++) { + printf("argv[%d] = <", i); + strprint(argv[i]); + printf(">\n"); + } + exit(0); +} + +void +strprint(str) +char *str; +{ + register unsigned char *s; + + for (s = (unsigned char *)str; s && *s; s++) { + if (*s < ' ') { + putchar('^'); + putchar(*s+64); + } else if (*s == 127) { + putchar('^'); + putchar('?'); + } else + putchar(*s); + } +} diff --git a/bash-5.1/support/rlvers.sh b/bash-5.1/support/rlvers.sh new file mode 100755 index 0000000..64cadc7 --- /dev/null +++ b/bash-5.1/support/rlvers.sh @@ -0,0 +1,113 @@ +#! /bin/sh +# +# rlvers.sh -- run a program that prints out the readline version number +# using locally-installed readline libraries +# + +# 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 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 . +# + +PROGNAME=`basename $0` + +: ${TMPDIR:=/tmp} +TDIR=$TMPDIR/rlvers + +# defaults +CC=cc +RL_LIBDIR=/usr/local/lib +RL_INCDIR=/usr/local/include + +TERMCAP_LIB="-ltermcap" + +# cannot rely on the presence of getopts +while [ $# -gt 0 ]; do + case "$1" in + -C) shift ; CC="$1"; shift ;; + -I) shift ; RL_INCDIR="$1" ; shift ;; + -L) shift ; RL_LIBDIR="$1" ; shift ;; + -T) shift ; TERMCAP_LIB="$1" ; shift ;; + -v) shift ; verbose=y ;; + --) shift ; break ;; + *) echo "${PROGNAME}: usage: $PROGNAME [-C compiler] [-L libdir] [-v]" >&2 ; exit 2;; + esac +done + +# if someone happened to install examples/rlversion, use it (it's not +# installed by default) +if test -f ${RL_LIBDIR}/rlversion ; then + if [ -n "$verbose" ]; then + echo "${PROGNAME}: using installed rlversion from ${RL_LIBDIR}/rlversion" + fi + v=`${RL_LIBDIR}/rlversion 2>/dev/null` + case "$v" in + unknown | "") echo 0 ;; + *) echo "$v" ;; + esac + exit 0 +fi + +if [ -n "$verbose" ]; then + echo "${PROGNAME}: using ${RL_LIBDIR} to find libreadline" + echo "${PROGNAME}: attempting program compilation" +fi + +# make $TDIR mode 0700 +mkdir $TDIR || { + echo "${PROGNAME}: ${TDIR}: file exists" >&2 + echo 0 + exit 1 +} +chmod 700 $TDIR + +trap 'rm -f $TDIR/rlvers $TDIR/rlvers.? ; rmdir $TDIR' 0 1 2 3 6 15 + +cat > $TDIR/rlvers.c << EOF +#include +extern char *rl_library_version; + +main() +{ + printf("%s\n", rl_library_version ? rl_library_version : "0"); + exit(0); +} +EOF + +opwd=`pwd` + +cd $TDIR || { + echo "${PROGNAME}: cannot cd to $TDIR" >&2 + echo 0 + exit 1 +} + +if eval ${CC} -L${RL_LIBDIR} -I${RL_INCDIR} -o $TDIR/rlvers $TDIR/rlvers.c -lreadline ${TERMCAP_LIB}; +then + v=`$TDIR/rlvers` +else + if [ -n "$verbose" ] ; then + echo "${PROGNAME}: compilation failed: status $?" + echo "${PROGNAME}: using version 0" + fi + v=0 +fi + +case "$v" in +unknown | "") echo 0 ;; +*) echo "$v" ;; +esac + +cd $opwd +exit 0 diff --git a/bash-5.1/support/shobj-conf b/bash-5.1/support/shobj-conf new file mode 100755 index 0000000..5a3f977 --- /dev/null +++ b/bash-5.1/support/shobj-conf @@ -0,0 +1,553 @@ +#! /bin/sh +# +# shobj-conf -- output a series of variable assignments to be substituted +# into a Makefile by configure which specify system-dependent +# information for creating shared objects that may be loaded +# into bash with `enable -f' +# +# usage: shobj-conf [-C compiler] -c host_cpu -o host_os -v host_vendor +# +# Chet Ramey +# chet@po.cwru.edu + +# Copyright (C) 1996-2019 Free Software Foundation, Inc. +# +# This file is part of GNU Bash, the Bourne Again SHell. +# +# 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 . +# + +# +# defaults +# +SHOBJ_STATUS=supported +SHLIB_STATUS=supported + +SHOBJ_CC=cc +SHOBJ_CFLAGS= +SHOBJ_LD= +SHOBJ_LDFLAGS= +SHOBJ_XLDFLAGS= +SHOBJ_LIBS= + +SHLIB_XLDFLAGS= +SHLIB_LIBS= + +SHLIB_DOT='.' +SHLIB_LIBPREF='lib' +SHLIB_LIBSUFF='so' + +SHLIB_LIBVERSION='$(SHLIB_LIBSUFF)' +SHLIB_DLLVERSION='$(SHLIB_MAJOR)' + +PROGNAME=`basename $0` +USAGE="$PROGNAME [-C compiler] -c host_cpu -o host_os -v host_vendor" + +while [ $# -gt 0 ]; do + case "$1" in + -C) shift; SHOBJ_CC="$1"; shift ;; + -c) shift; host_cpu="$1"; shift ;; + -o) shift; host_os="$1"; shift ;; + -v) shift; host_vendor="$1"; shift ;; + *) echo "$USAGE" >&2 ; exit 2;; + esac +done + +case "${host_os}-${SHOBJ_CC}-${host_vendor}" in +nsk-cc-tandem|nsk-c99-tandem) + SHOBJ_CFLAGS=-Wglobalized + case `uname -m` in + NSR*) + SHOBJ_CFLAGS="${SHOBJ_CFLAGS} -Wcall_shared" # default on TNS/E, needed on TNS/R + SHOBJ_LD=/usr/bin/ld # for TNS/R + ;; + NSE*|NEO*) + SHOBJ_LD=/usr/bin/eld + ;; + esac + SHOBJ_LDFLAGS='-shared -bglobalized -unres_symbols ignore' + ;; + +sunos4*-*gcc*) + SHOBJ_CFLAGS=-fpic + SHOBJ_LD=/usr/bin/ld + SHOBJ_LDFLAGS='-assert pure-text' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' + ;; + +sunos4*) + SHOBJ_CFLAGS=-pic + SHOBJ_LD=/usr/bin/ld + SHOBJ_LDFLAGS='-assert pure-text' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' + ;; + +sunos5*-*gcc*|solaris2*-*gcc*) + SHOBJ_LD='${CC}' + ld_used=`gcc -print-prog-name=ld` + if ${ld_used} -V 2>&1 | grep GNU >/dev/null 2>&1; then + # This line works for the GNU ld + SHOBJ_LDFLAGS='-shared -Wl,-h,$@' + # http://sourceware.org/ml/binutils/2001-08/msg00361.html + SHOBJ_CFLAGS=-fPIC + else + # This line works for the Solaris linker in /usr/ccs/bin/ld + SHOBJ_LDFLAGS='-shared -Wl,-i -Wl,-h,$@' + SHOBJ_CFLAGS=-fpic + fi + +# SHLIB_XLDFLAGS='-R $(libdir)' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +sunos5*|solaris2*) + SHOBJ_CFLAGS='-K pic' + SHOBJ_LD=/usr/ccs/bin/ld + SHOBJ_LDFLAGS='-G -dy -z text -i -h $@' + +# SHLIB_XLDFLAGS='-R $(libdir)' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +# All versions of Linux (including Gentoo/FreeBSD) or the semi-mythical GNU Hurd. +linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*|dragonfly*) + SHOBJ_CFLAGS=-fPIC + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' + + SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' + ;; + +# Darwin/MacOS X +darwin*) + # Common definitions for all darwin/mac os x versions + SHOBJ_CFLAGS='-fno-common' + + SHOBJ_LD='${CC}' + + SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)' + SHLIB_LIBSUFF='dylib' + + # unused at this time + SHLIB_SONAME='$(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF)' + + case "${host_os}" in + # Darwin versions 1, 5, 6, 7 correspond to Mac OS X 10.0, 10.1, 10.2, + # and 10.3, respectively. + darwin[1-7].*) + SHOBJ_STATUS=unsupported + SHOBJ_LDFLAGS='-dynamic' + SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v' + ;; + # Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4 + *) + case "${host_os}" in + darwin[89]*|darwin1[012]*) + SHOBJ_ARCHFLAGS='-arch_only `/usr/bin/arch`' + ;; + *) # Mac OS X 10.9 (Mavericks) and later + SHOBJ_ARCHFLAGS= + # for 32 and 64bit universal library + #SHOBJ_ARCHFLAGS='-arch i386 -arch x86_64' + #SHOBJ_CFLAGS=${SHOBJ_CFLAGS}' -arch i386 -arch x86_64' + ;; + esac + SHOBJ_LDFLAGS="-dynamiclib -dynamic -undefined dynamic_lookup ${SHOBJ_ARCHFLAGS}" + SHLIB_XLDFLAGS="-dynamiclib ${SHOBJ_ARCHFLAGS}"' -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v' + ;; + esac + + SHLIB_LIBS='-lncurses' # see if -lcurses works on MacOS X 10.1 + ;; + +openbsd*|netbsd*|mirbsd*) + SHOBJ_CFLAGS=-fPIC + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-shared' + + SHLIB_XLDFLAGS='-R$(libdir)' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' + ;; + +bsdi2*) + SHOBJ_CC=shlicc2 + SHOBJ_CFLAGS= + SHOBJ_LD=ld + SHOBJ_LDFLAGS=-r + SHOBJ_LIBS=-lc_s.2.1.0 + + # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in + # the ass -- they require changing {/usr/lib,etc}/shlib.map on + # each system, and the library creation process is byzantine + SHLIB_STATUS=unsupported + ;; + +bsdi3*) + SHOBJ_CC=shlicc2 + SHOBJ_CFLAGS= + SHOBJ_LD=ld + SHOBJ_LDFLAGS=-r + SHOBJ_LIBS=-lc_s.3.0.0 + + # BSD/OS 2.x and 3.x `shared libraries' are too much of a pain in + # the ass -- they require changing {/usr/lib,etc}/shlib.map on + # each system, and the library creation process is byzantine + SHLIB_STATUS=unsupported + ;; + +bsdi4*) + # BSD/OS 4.x now supports ELF and SunOS-style dynamically-linked + # shared libraries. gcc 2.x is the standard compiler, and the + # `normal' gcc options should work as they do in Linux. + + SHOBJ_CFLAGS=-fPIC + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' + + SHLIB_XLDFLAGS='-Wl,-soname,`basename $@ $(SHLIB_MINOR)`' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' + ;; + +osf*-*gcc*) + # Fix to use gcc linker driver from bfischer@TechFak.Uni-Bielefeld.DE + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' + + SHLIB_XLDFLAGS='-rpath $(libdir)' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +osf*) + SHOBJ_LD=ld + SHOBJ_LDFLAGS='-shared -soname $@ -expect_unresolved "*"' + + SHLIB_XLDFLAGS='-rpath $(libdir)' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +aix4.[2-9]*-*gcc*|aix[5-9].*-*gcc*) # lightly tested by jik@cisco.com + SHOBJ_CFLAGS=-fpic + SHOBJ_LD='ld' + SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' + SHOBJ_XLDFLAGS='-G' + + SHLIB_XLDFLAGS='-bM:SRE' + SHLIB_LIBS='-lcurses -lc' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +aix4.[2-9]*|aix[5-9].*) + SHOBJ_CFLAGS=-K + SHOBJ_LD='ld' + SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall' + SHOBJ_XLDFLAGS='-G' + + SHLIB_XLDFLAGS='-bM:SRE' + SHLIB_LIBS='-lcurses -lc' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +# +# THE FOLLOWING ARE UNTESTED -- and some may not support the dlopen interface +# +irix[56]*-*gcc*) + SHOBJ_CFLAGS='-fpic' + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' + + SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +irix[56]*) + SHOBJ_CFLAGS='-K PIC' + SHOBJ_LD=ld +# SHOBJ_LDFLAGS='-call_shared -hidden_symbol -no_unresolved -soname $@' +# Change from David Kaelbling . If you have problems, +# remove the `-no_unresolved' + SHOBJ_LDFLAGS='-shared -no_unresolved -soname $@' + + SHLIB_XLDFLAGS='-rpath $(libdir)' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +hpux9*-*gcc*) + # must use gcc; the bundled cc cannot compile PIC code + SHOBJ_CFLAGS='-fpic' + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,+s' + + SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' + SHLIB_LIBSUFF='sl' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +hpux9*) + SHOBJ_STATUS=unsupported + SHLIB_STATUS=unsupported + + # If you are using the HP ANSI C compiler, you can uncomment and use + # this code (I have not tested it) +# SHOBJ_STATUS=supported +# SHLIB_STATUS=supported +# +# SHOBJ_CFLAGS='+z' +# SHOBJ_LD='ld' +# SHOBJ_LDFLAGS='-b +s' +# +# SHLIB_XLDFLAGS='+b $(libdir)' +# SHLIB_LIBSUFF='sl' +# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + + ;; + +hpux10*-*gcc*) + # must use gcc; the bundled cc cannot compile PIC code + SHOBJ_CFLAGS='-fpic' + SHOBJ_LD='${CC}' + # if you have problems linking here, moving the `-Wl,+h,$@' from + # SHLIB_XLDFLAGS to SHOBJ_LDFLAGS has been reported to work + SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s' + + SHLIB_XLDFLAGS='-Wl,+h,$@ -Wl,+b,$(libdir)' + SHLIB_LIBSUFF='sl' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +hpux10*) + SHOBJ_STATUS=unsupported + SHLIB_STATUS=unsupported + + # If you are using the HP ANSI C compiler, you can uncomment and use + # this code (I have not tested it) +# SHOBJ_STATUS=supported +# SHLIB_STATUS=supported +# +# SHOBJ_CFLAGS='+z' +# SHOBJ_LD='ld' +# SHOBJ_LDFLAGS='-b +s +h $@' +# +# SHLIB_XLDFLAGS='+b $(libdir)' +# SHLIB_LIBSUFF='sl' +# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + + ;; + +hpux11*-*gcc*) + # must use gcc; the bundled cc cannot compile PIC code + SHOBJ_CFLAGS='-fpic' + SHOBJ_LD='${CC}' +# SHOBJ_LDFLAGS='-shared -Wl,-b -Wl,-B,symbolic -Wl,+s -Wl,+std -Wl,+h,$@' + SHOBJ_LDFLAGS='-shared -fpic -Wl,-b -Wl,+s -Wl,+h,$@' + + SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' + SHLIB_LIBSUFF='sl' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +hpux11*) + SHOBJ_STATUS=unsupported + SHLIB_STATUS=unsupported + + # If you are using the HP ANSI C compiler, you can uncomment and use + # this code from michael.osipov@siemens.com (I have not tested it) +# SHOBJ_CFLAGS='+z' +# SHOBJ_LD='$(CC)' +# SHOBJ_LDFLAGS='-b -Wl,+s -Wl,+h,$@' +# +# SHLIB_XLDFLAGS='-Wl,+b,$(libdir)' +# SHLIB_LIBSUFF='so' +# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' +# SHLIB_LIBS='$(TERMCAP_LIB)' + ;; + +sysv4*-*gcc*) + SHOBJ_CFLAGS=-shared + SHOBJ_LDFLAGS='-shared -h $@' + SHOBJ_LD='${CC}' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +sysv4*) + SHOBJ_CFLAGS='-K PIC' + SHOBJ_LD=ld + SHOBJ_LDFLAGS='-dy -z text -G -h $@' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +sco3.2v5*-*gcc*) + SHOBJ_CFLAGS='-fpic' # DEFAULTS TO ELF + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-shared' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +sco3.2v5*) + SHOBJ_CFLAGS='-K pic -b elf' + SHOBJ_LD=ld + SHOBJ_LDFLAGS='-G -b elf -dy -z text -h $@' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +sysv5uw7*-*gcc*) + SHOBJ_CFLAGS='-fpic' + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-shared' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +sysv5uw7*) + SHOBJ_CFLAGS='-K PIC' + SHOBJ_LD=ld + SHOBJ_LDFLAGS='-G -dy -z text -h $@' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +sysv5UnixWare*-*gcc*) + SHOBJ_CFLAGS=-fpic + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-shared' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +sysv5UnixWare*) + SHOBJ_CFLAGS='-K PIC' + SHOBJ_LD=ld + SHOBJ_LDFLAGS='-G -dy -z text -h $@' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +sysv5OpenUNIX*-*gcc*) + SHOBJ_CFLAGS=-fpic + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-shared' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +sysv5OpenUNIX*) + SHOBJ_CFLAGS='-K PIC' + SHOBJ_LD=ld + SHOBJ_LDFLAGS='-G -dy -z text -h $@' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +dgux*-*gcc*) + SHOBJ_CFLAGS=-fpic + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-shared' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +dgux*) + SHOBJ_CFLAGS='-K pic' + SHOBJ_LD=ld + SHOBJ_LDFLAGS='-G -dy -h $@' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +msdos*) + SHOBJ_STATUS=unsupported + SHLIB_STATUS=unsupported + ;; + +cygwin*) + SHOBJ_LD='$(CC)' + SHOBJ_LDFLAGS='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a' + SHLIB_LIBPREF='cyg' + SHLIB_LIBSUFF='dll' + SHLIB_LIBVERSION='$(SHLIB_DLLVERSION).$(SHLIB_LIBSUFF)' + SHLIB_LIBS='$(TERMCAP_LIB)' + + SHLIB_DOT= + # For official cygwin releases, DLLVERSION will be defined in the + # environment of configure, and will be incremented any time the API + # changes in a non-backwards compatible manner. Otherwise, it is just + # SHLIB_MAJOR. + if [ -n "$DLLVERSION" ] ; then + SHLIB_DLLVERSION="$DLLVERSION" + fi + ;; + +mingw*) + SHOBJ_LD='$(CC)' + SHOBJ_LDFLAGS='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a' + SHLIB_LIBSUFF='dll' + SHLIB_LIBVERSION='$(SHLIB_DLLVERSION).$(SHLIB_LIBSUFF)' + SHLIB_LIBS='$(TERMCAP_LIB)' + + SHLIB_DOT= + # For official cygwin releases, DLLVERSION will be defined in the + # environment of configure, and will be incremented any time the API + # changes in a non-backwards compatible manner. Otherwise, it is just + # SHLIB_MAJOR. + if [ -n "$DLLVERSION" ] ; then + SHLIB_DLLVERSION="$DLLVERSION" + fi + ;; + +# +# Rely on correct gcc configuration for everything else +# +*-*gcc*) + SHOBJ_CFLAGS=-fpic + SHOBJ_LD='${CC}' + SHOBJ_LDFLAGS='-shared' + + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)' + ;; + +*) + SHOBJ_STATUS=unsupported + SHLIB_STATUS=unsupported + ;; + +esac + +echo SHOBJ_CC=\'"$SHOBJ_CC"\' +echo SHOBJ_CFLAGS=\'"$SHOBJ_CFLAGS"\' +echo SHOBJ_LD=\'"$SHOBJ_LD"\' +echo SHOBJ_LDFLAGS=\'"$SHOBJ_LDFLAGS"\' +echo SHOBJ_XLDFLAGS=\'"$SHOBJ_XLDFLAGS"\' +echo SHOBJ_LIBS=\'"$SHOBJ_LIBS"\' + +echo SHLIB_XLDFLAGS=\'"$SHLIB_XLDFLAGS"\' +echo SHLIB_LIBS=\'"$SHLIB_LIBS"\' + +echo SHLIB_DOT=\'"$SHLIB_DOT"\' + +echo SHLIB_LIBPREF=\'"$SHLIB_LIBPREF"\' +echo SHLIB_LIBSUFF=\'"$SHLIB_LIBSUFF"\' + +echo SHLIB_LIBVERSION=\'"$SHLIB_LIBVERSION"\' +echo SHLIB_DLLVERSION=\'"$SHLIB_DLLVERSION"\' + +echo SHOBJ_STATUS=\'"$SHOBJ_STATUS"\' +echo SHLIB_STATUS=\'"$SHLIB_STATUS"\' + +exit 0 diff --git a/bash-5.1/support/signames.c b/bash-5.1/support/signames.c new file mode 100644 index 0000000..aba4842 --- /dev/null +++ b/bash-5.1/support/signames.c @@ -0,0 +1,446 @@ +/* signames.c -- Create an array of signal names. */ + +/* Copyright (C) 2006-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#include + +#include +#include + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#if !defined (NSIG) +# define NSIG 64 +#endif + +/* + * Special traps: + * EXIT == 0 + * DEBUG == NSIG + * ERR == NSIG+1 + * RETURN == NSIG+2 + */ +#define LASTSIG NSIG+2 + +char *signal_names[2 * (LASTSIG)]; + +#define signal_names_size (sizeof(signal_names)/sizeof(signal_names[0])) + +/* AIX 4.3 defines SIGRTMIN and SIGRTMAX as 888 and 999 respectively. + I don't want to allocate so much unused space for the intervening signal + numbers, so we just punt if SIGRTMAX is past the bounds of the + signal_names array (handled in configure). */ +#if defined (SIGRTMAX) && defined (UNUSABLE_RT_SIGNALS) +# undef SIGRTMAX +# undef SIGRTMIN +#endif + +#if defined (SIGRTMAX) || defined (SIGRTMIN) +# define RTLEN 14 +# define RTLIM 256 +#endif + +#if defined (BUILDTOOL) +extern char *progname; +#endif + +void +initialize_signames () +{ + register int i; +#if defined (SIGRTMAX) || defined (SIGRTMIN) + int rtmin, rtmax, rtcnt; +#endif + + for (i = 1; i < signal_names_size; i++) + signal_names[i] = (char *)NULL; + + /* `signal' 0 is what we do on exit. */ + signal_names[0] = "EXIT"; + + /* Place signal names which can be aliases for more common signal + names first. This allows (for example) SIGABRT to overwrite SIGLOST. */ + + /* POSIX 1003.1b-1993 real time signals, but take care of incomplete + implementations. Acoording to the standard, both, SIGRTMIN and + SIGRTMAX must be defined, SIGRTMIN must be strictly less than + SIGRTMAX, and the difference must be at least 7, that is, there + must be at least eight distinct real time signals. */ + + /* The generated signal names are SIGRTMIN, SIGRTMIN+1, ..., + SIGRTMIN+x, SIGRTMAX-x, ..., SIGRTMAX-1, SIGRTMAX. If the number + of RT signals is odd, there is an extra SIGRTMIN+(x+1). + These names are the ones used by ksh and /usr/xpg4/bin/sh on SunOS5. */ + +#if defined (SIGRTMIN) + rtmin = SIGRTMIN; + signal_names[rtmin] = "SIGRTMIN"; +#endif + +#if defined (SIGRTMAX) + rtmax = SIGRTMAX; + signal_names[rtmax] = "SIGRTMAX"; +#endif + +#if defined (SIGRTMAX) && defined (SIGRTMIN) + if (rtmax > rtmin) + { + rtcnt = (rtmax - rtmin - 1) / 2; + /* croak if there are too many RT signals */ + if (rtcnt >= RTLIM/2) + { + rtcnt = RTLIM/2-1; +#ifdef BUILDTOOL + fprintf(stderr, "%s: error: more than %d real time signals, fix `%s'\n", + progname, RTLIM, progname); +#endif + } + + for (i = 1; i <= rtcnt; i++) + { + signal_names[rtmin+i] = (char *)malloc(RTLEN); + if (signal_names[rtmin+i]) + sprintf (signal_names[rtmin+i], "SIGRTMIN+%d", i); + signal_names[rtmax-i] = (char *)malloc(RTLEN); + if (signal_names[rtmax-i]) + sprintf (signal_names[rtmax-i], "SIGRTMAX-%d", i); + } + + if (rtcnt < RTLIM/2-1 && rtcnt != (rtmax-rtmin)/2) + { + /* Need an extra RTMIN signal */ + signal_names[rtmin+rtcnt+1] = (char *)malloc(RTLEN); + if (signal_names[rtmin+rtcnt+1]) + sprintf (signal_names[rtmin+rtcnt+1], "SIGRTMIN+%d", rtcnt+1); + } + } +#endif /* SIGRTMIN && SIGRTMAX */ + +#if defined (SIGLOST) /* resource lost (eg, record-lock lost) */ + signal_names[SIGLOST] = "SIGLOST"; +#endif + +/* AIX */ +#if defined (SIGMSG) /* HFT input data pending */ + signal_names[SIGMSG] = "SIGMSG"; +#endif + +#if defined (SIGDANGER) /* system crash imminent */ + signal_names[SIGDANGER] = "SIGDANGER"; +#endif + +#if defined (SIGMIGRATE) /* migrate process to another CPU */ + signal_names[SIGMIGRATE] = "SIGMIGRATE"; +#endif + +#if defined (SIGPRE) /* programming error */ + signal_names[SIGPRE] = "SIGPRE"; +#endif + +#if defined (SIGPHONE) /* Phone interrupt */ + signal_names[SIGPHONE] = "SIGPHONE"; +#endif + +#if defined (SIGVIRT) /* AIX virtual time alarm */ + signal_names[SIGVIRT] = "SIGVIRT"; +#endif + +#if defined (SIGTINT) /* Interrupt */ + signal_names[SIGTINT] = "SIGTINT"; +#endif + +#if defined (SIGALRM1) /* m:n condition variables */ + signal_names[SIGALRM1] = "SIGALRM1"; +#endif + +#if defined (SIGWAITING) /* m:n scheduling */ + signal_names[SIGWAITING] = "SIGWAITING"; +#endif + +#if defined (SIGGRANT) /* HFT monitor mode granted */ + signal_names[SIGGRANT] = "SIGGRANT"; +#endif + +#if defined (SIGKAP) /* keep alive poll from native keyboard */ + signal_names[SIGKAP] = "SIGKAP"; +#endif + +#if defined (SIGRETRACT) /* HFT monitor mode retracted */ + signal_names[SIGRETRACT] = "SIGRETRACT"; +#endif + +#if defined (SIGSOUND) /* HFT sound sequence has completed */ + signal_names[SIGSOUND] = "SIGSOUND"; +#endif + +#if defined (SIGSAK) /* Secure Attention Key */ + signal_names[SIGSAK] = "SIGSAK"; +#endif + +#if defined (SIGCPUFAIL) /* Predictive processor deconfiguration */ + signal_names[SIGCPUFAIL] = "SIGCPUFAIL"; +#endif + +#if defined (SIGAIO) /* Asynchronous I/O */ + signal_names[SIGAIO] = "SIGAIO"; +#endif + +#if defined (SIGLAB) /* Security label changed */ + signal_names[SIGLAB] = "SIGLAB"; +#endif + +/* SunOS5 */ +#if defined (SIGLWP) /* Solaris: special signal used by thread library */ + signal_names[SIGLWP] = "SIGLWP"; +#endif + +#if defined (SIGFREEZE) /* Solaris: special signal used by CPR */ + signal_names[SIGFREEZE] = "SIGFREEZE"; +#endif + +#if defined (SIGTHAW) /* Solaris: special signal used by CPR */ + signal_names[SIGTHAW] = "SIGTHAW"; +#endif + +#if defined (SIGCANCEL) /* Solaris: thread cancellation signal used by libthread */ + signal_names[SIGCANCEL] = "SIGCANCEL"; +#endif + +#if defined (SIGXRES) /* Solaris: resource control exceeded */ + signal_names[SIGXRES] = "SIGXRES"; +#endif + +#if defined (SIGJVM1) /* Solaris: Java Virtual Machine 1 */ + signal_names[SIGJVM1] = "SIGJVM1"; +#endif + +#if defined (SIGJVM2) /* Solaris: Java Virtual Machine 2 */ + signal_names[SIGJVM2] = "SIGJVM2"; +#endif + +#if defined (SIGDGTIMER1) + signal_names[SIGDGTIMER1] = "SIGDGTIMER1"; +#endif + +#if defined (SIGDGTIMER2) + signal_names[SIGDGTIMER2] = "SIGDGTIMER2"; +#endif + +#if defined (SIGDGTIMER3) + signal_names[SIGDGTIMER3] = "SIGDGTIMER3"; +#endif + +#if defined (SIGDGTIMER4) + signal_names[SIGDGTIMER4] = "SIGDGTIMER4"; +#endif + +#if defined (SIGDGNOTIFY) + signal_names[SIGDGNOTIFY] = "SIGDGNOTIFY"; +#endif + +/* Apollo */ +#if defined (SIGAPOLLO) + signal_names[SIGAPOLLO] = "SIGAPOLLO"; +#endif + +/* HP-UX */ +#if defined (SIGDIL) /* DIL signal (?) */ + signal_names[SIGDIL] = "SIGDIL"; +#endif + +/* System V */ +#if defined (SIGCLD) /* Like SIGCHLD. */ + signal_names[SIGCLD] = "SIGCLD"; +#endif + +#if defined (SIGPWR) /* power state indication */ + signal_names[SIGPWR] = "SIGPWR"; +#endif + +#if defined (SIGPOLL) /* Pollable event (for streams) */ + signal_names[SIGPOLL] = "SIGPOLL"; +#endif + +/* Unknown */ +#if defined (SIGWINDOW) + signal_names[SIGWINDOW] = "SIGWINDOW"; +#endif + +/* Linux */ +#if defined (SIGSTKFLT) + signal_names[SIGSTKFLT] = "SIGSTKFLT"; +#endif + +/* FreeBSD */ +#if defined (SIGTHR) /* thread interrupt */ + signal_names[SIGTHR] = "SIGTHR"; +#endif + +/* Common */ +#if defined (SIGHUP) /* hangup */ + signal_names[SIGHUP] = "SIGHUP"; +#endif + +#if defined (SIGINT) /* interrupt */ + signal_names[SIGINT] = "SIGINT"; +#endif + +#if defined (SIGQUIT) /* quit */ + signal_names[SIGQUIT] = "SIGQUIT"; +#endif + +#if defined (SIGILL) /* illegal instruction (not reset when caught) */ + signal_names[SIGILL] = "SIGILL"; +#endif + +#if defined (SIGTRAP) /* trace trap (not reset when caught) */ + signal_names[SIGTRAP] = "SIGTRAP"; +#endif + +#if defined (SIGIOT) /* IOT instruction */ + signal_names[SIGIOT] = "SIGIOT"; +#endif + +#if defined (SIGABRT) /* Cause current process to dump core. */ + signal_names[SIGABRT] = "SIGABRT"; +#endif + +#if defined (SIGEMT) /* EMT instruction */ + signal_names[SIGEMT] = "SIGEMT"; +#endif + +#if defined (SIGFPE) /* floating point exception */ + signal_names[SIGFPE] = "SIGFPE"; +#endif + +#if defined (SIGKILL) /* kill (cannot be caught or ignored) */ + signal_names[SIGKILL] = "SIGKILL"; +#endif + +#if defined (SIGBUS) /* bus error */ + signal_names[SIGBUS] = "SIGBUS"; +#endif + +#if defined (SIGSEGV) /* segmentation violation */ + signal_names[SIGSEGV] = "SIGSEGV"; +#endif + +#if defined (SIGSYS) /* bad argument to system call */ + signal_names[SIGSYS] = "SIGSYS"; +#endif + +#if defined (SIGPIPE) /* write on a pipe with no one to read it */ + signal_names[SIGPIPE] = "SIGPIPE"; +#endif + +#if defined (SIGALRM) /* alarm clock */ + signal_names[SIGALRM] = "SIGALRM"; +#endif + +#if defined (SIGTERM) /* software termination signal from kill */ + signal_names[SIGTERM] = "SIGTERM"; +#endif + +#if defined (SIGURG) /* urgent condition on IO channel */ + signal_names[SIGURG] = "SIGURG"; +#endif + +#if defined (SIGSTOP) /* sendable stop signal not from tty */ + signal_names[SIGSTOP] = "SIGSTOP"; +#endif + +#if defined (SIGTSTP) /* stop signal from tty */ + signal_names[SIGTSTP] = "SIGTSTP"; +#endif + +#if defined (SIGCONT) /* continue a stopped process */ + signal_names[SIGCONT] = "SIGCONT"; +#endif + +#if defined (SIGCHLD) /* to parent on child stop or exit */ + signal_names[SIGCHLD] = "SIGCHLD"; +#endif + +#if defined (SIGTTIN) /* to readers pgrp upon background tty read */ + signal_names[SIGTTIN] = "SIGTTIN"; +#endif + +#if defined (SIGTTOU) /* like TTIN for output if (tp->t_local<OSTOP) */ + signal_names[SIGTTOU] = "SIGTTOU"; +#endif + +#if defined (SIGIO) /* input/output possible signal */ + signal_names[SIGIO] = "SIGIO"; +#endif + +#if defined (SIGXCPU) /* exceeded CPU time limit */ + signal_names[SIGXCPU] = "SIGXCPU"; +#endif + +#if defined (SIGXFSZ) /* exceeded file size limit */ + signal_names[SIGXFSZ] = "SIGXFSZ"; +#endif + +#if defined (SIGVTALRM) /* virtual time alarm */ + signal_names[SIGVTALRM] = "SIGVTALRM"; +#endif + +#if defined (SIGPROF) /* profiling time alarm */ + signal_names[SIGPROF] = "SIGPROF"; +#endif + +#if defined (SIGWINCH) /* window changed */ + signal_names[SIGWINCH] = "SIGWINCH"; +#endif + +/* 4.4 BSD */ +#if defined (SIGINFO) && !defined (_SEQUENT_) /* information request */ + signal_names[SIGINFO] = "SIGINFO"; +#endif + +#if defined (SIGUSR1) /* user defined signal 1 */ + signal_names[SIGUSR1] = "SIGUSR1"; +#endif + +#if defined (SIGUSR2) /* user defined signal 2 */ + signal_names[SIGUSR2] = "SIGUSR2"; +#endif + +#if defined (SIGKILLTHR) /* BeOS: Kill Thread */ + signal_names[SIGKILLTHR] = "SIGKILLTHR"; +#endif + + for (i = 0; i < NSIG; i++) + if (signal_names[i] == (char *)NULL) + { + signal_names[i] = (char *)malloc (18); + if (signal_names[i]) + sprintf (signal_names[i], "SIGJUNK(%d)", i); + } + + signal_names[NSIG] = "DEBUG"; + signal_names[NSIG+1] = "ERR"; + signal_names[NSIG+2] = "RETURN"; +} diff --git a/bash-5.1/support/texi2dvi b/bash-5.1/support/texi2dvi new file mode 100755 index 0000000..17f4355 --- /dev/null +++ b/bash-5.1/support/texi2dvi @@ -0,0 +1,1996 @@ +#! /bin/sh +# texi2dvi --- produce DVI (or PDF) files from Texinfo (or (La)TeX) sources. +# +# Copyright 1992-2019 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, +# or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Originally written by Noah Friedman. +# +# Please send bug reports, etc. to bug-texinfo@gnu.org. +# If possible, please send a copy of the output of the script called with +# the `--debug' option when making a bug report. + +test -f /bin/ksh && test -z "$RUNNING_KSH" \ + && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \ + && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; } +unset RUNNING_KSH + +# No failure shall remain unpunished. +set -e + +# In case the default sed doesn't suffice. +: ${SED=sed} + +program=`echo $0 | $SED -e 's!.*/!!'` + +build_mode=${TEXI2DVI_BUILD_MODE:-local} +build_dir=${TEXI2DVI_BUILD_DIRECTORY:-.} + +orig_pwd=`pwd` + +# Initialize variables for option overriding and otherwise. +# Don't use `unset' since old bourne shells don't have this command. +# Instead, assign them an empty value. +action=compile +debug=false +escape="\\" +expand=false # true for expansion via makeinfo +includes= +line_error=true # pass --file-line-error to TeX +max_iters=7 # when to quit +oname= # --output +out_lang=dvi +quiet=false # let the tools' message be displayed +set_language= +src_specials= +shell_escape= +latex2html=hevea # or set to tex4ht +textra= # Extra TeX commands to insert in the input file. +txiprereq=19990129 # minimum texinfo.tex version with macro expansion +verb=false # true for verbose mode +translate_file= # name of charset translation file + +# We have to initialize IFS to space tab newline since we save and +# restore IFS and apparently POSIX allows stupid/broken behavior with +# empty-but-set IFS. +# http://lists.gnu.org/archive/html/automake-patches/2006-05/msg00008.html +# We need space, tab and newline, in precisely that order. And don't leave +# trailing blanks. +space=' ' +tab=' ' +newline=' +' +IFS="$space$tab$newline" + +: ${EGREP=egrep} + +# Systems which define $COMSPEC or $ComSpec use semicolons to separate +# directories in TEXINPUTS -- except for Cygwin and Msys, where COMSPEC +# might be inherited, but : is used. + +# In the case of Msys, uname returns a value derived from MSYSTEM, as +# MSYSTEM is user configurable, it is not so safe to use it to detect +# Msys. It is safer to use OSTYPE, this is why we set MSYSTEM to +# $OSTYPE before calling uname +if test -n "$COMSPEC$ComSpec" \ + && MSYSTEM=$OSTYPE uname | $EGREP -iv 'cygwin|msys' >/dev/null; then + path_sep=";" +else + path_sep=":" +fi + + +# Pacify verbose cds. +CDPATH=${ZSH_VERSION+.}$path_sep + + +# Now we define numerous functions, with no other executable code. +# The main program is at the end of the file. + + +# Standard help and version functions. +# +# usage - display usage and exit successfully. +usage () +{ + cat < +General help using GNU software: +EOF + exit 0 +} + + +# version - Display version info and exit successfully. +version () +{ + cat < +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. +EOF + exit 0 +} + + +# Generic auxiliary functions. + +# Used to access files and directories after we have changed directory +# (for --tidy). +rel= + +# Change directory, updating some relative paths. +cd_dir () +{ + cd "$1" + + # Check if argument or input file is absolute, and if so, make all the path + # variables absolute. + use_absolute=false + case $1 in + [\\/]* | ?:[\\/]*) # absolute path + use_absolute=true ;; + esac + case $in_input in + [\\/]* | ?:[\\/]*) + use_absolute=true ;; + esac + + if $use_absolute ; then + for cdd_dir in work_build workdir t2ddir work_bak in_input in_dir; do + eval "$cdd_dir=\`absolute \$$cdd_dir\`" + done + return + fi + + # Replace each path component with ".." and add a single trailing slash. + rel=`echo "$1" | \$SED -e 's/[^/\\][^/\\]*/../g' -e 's/[/\\]*$/\//'` +} + +# cd_orig - Return to the original directory. +cd_orig () +{ + # In case $orig_pwd is on a different drive (for DOS). + cd / + + # Return to the original directory so that + # - the next file is processed in correct conditions + # - the temporary file can be removed + cd "$orig_pwd" || exit 1 + + rel= +} + + +# func_dirname FILE - Return the directory part of FILE. +func_dirname () +{ + dirname "$1" 2>/dev/null \ + || { echo "$1" | $SED 's!/[^/]*$!!;s!^$!.!'; } +} + + +# noext FILE - Return FILE with one extension removed: +# foo.bar.baz -> foo.bar +noext () +{ + echo "$1" | $SED -e 's/\.[^/.][^/.]*$//' +} + + +# absolute NAME - Return an absolute path to NAME. +absolute () +{ + case $1 in + [\\/]* | ?:[\\/]*) + # Absolute paths don't need to be expanded. + echo "$1" + ;; + *) absolute_slashes=`echo "$1" | $SED -n 's,.*[^/]\(/*\)$,\1,p'` + absolute_rel=$orig_pwd/`func_dirname "$1"` + if test -d "$absolute_rel"; then + (cd "$absolute_rel" 2>/dev/null \ + && absolute_name=`pwd`/`basename "$1"`"$absolute_slashes" + echo "$absolute_name") + else + error 1 "not a directory: $absolute_rel" + fi + ;; + esac +} + + +# ensure_dir DIR1 DIR2... - Make sure given directories exist. +ensure_dir () +{ + for dir + do + # Beware that in parallel builds we may have several concurrent + # attempts to create the directory. So fail only if "mkdir" + # failed *and* the directory still does not exist. + test -d "$dir" \ + || mkdir "$dir" \ + || test -d "$dir" \ + || error 1 "cannot create directory: $dir" + done +} + + +# error EXIT_STATUS LINE1 LINE2... - Report an error and exit with +# failure if EXIT_STATUS is non-null. +error () +{ + error_status="$1" + shift + report "$@" + if test "$error_status" != 0; then + exit $error_status + fi +} + + +# findprog PROG - Return true if PROG is somewhere in PATH, else false. +findprog () +{ + saveIFS="$IFS" + IFS=$path_sep # break path components at the path separator + for dir in $PATH; do + IFS=$saveIFS + # The basic test for an executable is `test -f $f && test -x $f'. + # (`test -x' is not enough, because it can also be true for directories.) + # We have to try this both for $1 and $1.exe. + # + # Note: On Cygwin and DJGPP, `test -x' also looks for .exe. On Cygwin, + # also `test -f' has this enhancement, but not on DJGPP. (Both are + # design decisions, so there is little chance to make them consistent.) + # Thusly, it seems to be difficult to make use of these enhancements. + # + if { test -f "$dir/$1" && test -x "$dir/$1"; } \ + || { test -f "$dir/$1.exe" && test -x "$dir/$1.exe"; }; then + return 0 + fi + done + return 1 +} + +# report LINE1 LINE2... - Echo each argument to stderr. +report () +{ + for i in "$@" + do + echo >&2 "$0: $i" + done +} + + +# run COMMAND-LINE - Run COMMAND-LINE verbosely, catching errors as failures. +run () +{ + verbose "Running $@" + "$@" 2>&5 1>&2 \ + || error 1 "$1 failed" +} + + +# verbose WORD1 WORD2... - Echo concatenated WORDs to stderr, if $verb. +verbose () +{ + if $verb; then + echo >&2 "$0: $@" + fi +} + + +# Handling lists. +# +# list_append LIST-NAME ELEM - Append ELEM to (the contents of) LIST-NAME. +list_append () +{ + list_name="$1" + shift + eval set X \$$list_name "$@" + shift + eval $list_name=\""$@"\" +} + + +# list_concat_dirs LIST-NAME DIR-LIST - Append to LIST-NAME all the +# components (including empty ones) from the $path_sep-separated list +# DIR-LIST. Make the paths absolute. +list_concat_dirs () +{ + lcd_list="$1" + # Empty path components are meaningful to tex. We rewrite them as + # `EMPTY' so they don't get lost when we split on $path_sep. + # Hopefully no one will have an actual directory named EMPTY. + lcd_replace_EMPTY="-e 's/^$path_sep/EMPTY$path_sep/g' \ + -e 's/$path_sep\$/${path_sep}EMPTY/g' \ + -e 's/$path_sep$path_sep/${path_sep}EMPTY${path_sep}/g'" + save_IFS=$IFS + IFS=$path_sep + set x `echo "$2" | eval $SED $lcd_replace_EMPTY`; shift + IFS=$save_IFS + for lcd_dir + do + case $lcd_dir in + EMPTY) + list_append $lcd_list "" + ;; + *) + if test -d $lcd_dir; then + dir=`absolute "$lcd_dir"` + list_append $lcd_list "$lcd_dir" + fi + ;; + esac + done +} + + +# list_prefix LIST-NAME SEP -> STRING - Return string with each element +# of LIST-NAME preceded by SEP. +list_prefix () +{ + lp_separator="$2" + eval set X \$$1 + shift + lp_result='' + for i + do + lp_result="$lp_result \"$lp_separator\" \"$i\"" + done + echo "$lp_result" +} + +# list_infix LIST-NAME SEP -> STRING - Same as list_prefix, but a separator. +list_infix () +{ + eval set X \$$1 + shift + save_IFS="$IFS" + IFS=$path_sep + echo "$*" + IFS=$save_IFS +} + +# list_dir_to_abs LIST-NAME - Convert list to using only absolute dir names. +# Currently unused, but should replace absolute_filenames some day. +list_dir_to_abs () +{ + ldta_list="$1" + eval set X \$$ldta_list + shift + ldta_result='' + for dir + do + dir=`absolute "$dir"` + test -d "$dir" || continue + ldta_result="$ldata_result \"$dir\"" + done + set X $ldta_result; shift + eval $ldta_list=\"$@\" +} + + +# Language auxiliary functions. +# +# out_lang_set LANG - set $out_lang to LANG (dvi, pdf, etc.), or error. +out_lang_set () +{ + case $1 in + dvi|dvipdf|html|info|pdf|ps|text) out_lang=$1;; + *) error 1 "invalid output format: $1";; + esac +} + +# out_lang_tex - Return the tex output language (DVI or PDF) for $out_lang. +out_lang_tex () +{ + case $out_lang in + dvi | ps | dvipdf ) echo dvi;; + pdf ) echo $out_lang;; + html | info | text ) echo $out_lang;; + *) error 1 "invalid out_lang: $1";; + esac +} + +# out_lang_ext - Return the extension for $out_lang (pdf, dvi, etc.). +out_lang_ext () +{ + case $out_lang in + dvipdf ) echo pdf;; + dvi | html | info | pdf | ps | text ) echo $out_lang;; + *) error 1 "invalid out_lang: $1";; + esac +} + + +# TeX file auxiliary functions. +# +# absolute_filenames TEX-PATH -> TEX-PATH - Convert relative paths to +# absolute, so we can run in another directory (e.g., in tidy build +# mode, or during the macro-support detection). +absolute_filenames () +{ + # Empty path components are meaningful to tex. We rewrite them as + # `EMPTY' so they don't get lost when we split on $path_sep. + # Hopefully no one will have an actual directory named EMPTY. + af_replace_empty="-e 's/^$path_sep/EMPTY$path_sep/g' \ + -e 's/$path_sep\$/${path_sep}EMPTY/g' \ + -e 's/$path_sep$path_sep/${path_sep}EMPTY${path_sep}/g'" + af_result=`echo "$1" | eval $SED $af_replace_empty` + save_IFS=$IFS + IFS=$path_sep + set x $af_result; shift + af_result= + af_path_sep= + for dir + do + case $dir in + EMPTY) + af_result=$af_result$af_path_sep + ;; + *) + if test -d "$dir"; then + af_result=$af_result$af_path_sep`absolute "$dir"` + else + # Even if $dir is not a directory, preserve it in the path. + # It might contain metacharacters that TeX will expand in + # turn, e.g., /some/path/{a,b,c}. This will not get the + # implicit absolutification of the path, but we can't help that. + af_result=$af_result$af_path_sep$dir + fi + ;; + esac + af_path_sep=$path_sep + done + echo "$af_result" +} + + +# output_base_name FILE - Return the name of FILE, possibly renamed to +# satisfy --output. FILE is local, i.e., without any directory part. +output_base_name () +{ + case $oname in + '') echo "$1";; + *) obn_out_noext=`noext "$oname"` + obn_file_ext=`echo "$1" | $SED 's/^.*\.//'` + echo "$obn_out_noext.$obn_file_ext" + ;; + esac +} + + +# destdir - Return the directory where the output is expected. +destdir () +{ + case $oname in + '') echo "$orig_pwd";; + *) dirname "$oname";; + esac +} + + +# move_to_dest FILE... - Move FILE(s) to the place where the user expects. +# Truly move it, that is, it must not remain in its build location +# unless that is also the output location. (Otherwise it might appear +# as an extra file in make distcheck.) +# +# FILE can be the principal output (in which case -o directly applies), +# or an auxiliary file with the same base name. +move_to_dest () +{ +# echo "move_to_dest $*, tidy=$tidy, oname=$oname" + + # If we built in place and have no output name, there is nothing to + # do, so just return. + case $tidy:$oname in + false:) return;; + esac + + for file + do + test -f "$file" \ + || error 1 "no such file or directory: $file" + case $tidy:$oname in + true:) mtd_destdir=$orig_pwd + mtd_destfile=$mtd_destdir/$file;; + true:*) mtd_destfile=`output_base_name "$file"` + mtd_destdir=`dirname "$mtd_destfile"`;; + false:*) mtd_destfile=$oname + mtd_destdir=`dirname "$mtd_destfile"`;; + esac + + # We want to compare the source location and the output location, + # and if they are different, do the move. But if they are the + # same, we must preserve the source. Since we can't assume + # stat(1) or test -ef is available, resort to comparing the + # directory names, canonicalized with pwd. We can't use cmp -s + # since the output file might not actually change from run to run; + # e.g., TeX DVI output is timestamped to only the nearest minute. + mtd_destdir=`cd "$mtd_destdir" && pwd` + mtd_destbase=`basename "$mtd_destfile"` + + mtd_sourcedir=`dirname "$file"` + mtd_sourcedir=`cd "$mtd_sourcedir" && pwd` + mtd_sourcebase=`basename "$file"` + + if test "$mtd_sourcedir/$mtd_sourcebase" != "$mtd_destdir/$mtd_destbase" + then + verbose "Moving $file to $mtd_destfile" + rm -f "$mtd_destfile" + mv "$file" "$mtd_destfile" + fi + done +} + + +# Managing xref files. +# +# aux_file_p FILE - Echo FILE if FILE is an aux file. +aux_file_p () +{ + test -f "$1" || return 0 + case $1 in + *.aux) echo "$1";; + *) return 0;; + esac +} + +# bibaux_file_p FILE - Echo FILE if FILE contains citation requests. +bibaux_file_p () +{ + test -s "$1" || return 0 + if (grep '^\\bibstyle[{]' "$1" \ + && grep '^\\bibdata[{]' "$1" \ + ## The following line is suspicious: fails when there + ## are citations in sub aux files. We need to be + ## smarter in this case. + ## && grep '^\\citation[{]' "$f" + ) >&6 2>&1; + then + echo "$1" + fi + return 0 +} + +# index_file_p FILE - Echo FILE if FILE is an index file. +index_file_p () +{ + test -f "$1" || return 0 + case $in_lang:$latex2html:`out_lang_tex`:`$SED '1q' "$1"` in + # When working with TeX4HT, *.idx are created by LaTeX. They must + # be processed to produce *.4ix, *.4dx files. The *.4dx file is + # passed to makeindex to produce the *.ind file. This sequence is + # handled by run_index, so we are only interested in the *.idx + # files, which have each "\indexentry" preceded by a + # "\beforeentry". + latex:tex4ht:html:"\\beforeentry {"*) echo $1;; + + # When index.sty is used, there is a space before the brace. + latex:*:*:"\\indexentry{"*|latex:*:*:"\\indexentry {"*) echo $1;; + + texinfo:*:*:"\\entry{"*) echo $1;; + texinfo:*:*:"@entry{"*) echo $1;; + # @entry is output from newer versions of texinfo.tex + esac + return 0 +} + +########### not used currently +# xref_file_p FILE - Return success if FILE is an xref file (indexes, +# tables and lists). +xref_file_p () +{ + test -f "$1" || return 1 + # If the file is not suitable to be an index or xref file, don't + # process it. It's suitable if the first character is a + # backslash or right quote or at, as long as the first line isn't + # \input texinfo. + case `$SED '1q' "$1"` in + "\\input texinfo"*) return 1;; + [\\''@]*) return 0;; + *) return 1;; + esac +} + + +# Used in generated_files_get +generated_files_get_from_log () +{ + if test -f "$1.log"; then + # Usually the output is like: \openout1 = `foobar.tex'. + # (including the final period) + # but luatex outputs: \openout1 = foobar.tex + # (no quotes, no period). + # So we have to make the punctuation optional. + grep '^\\openout[0-9]' "$1.log" \ + | $SED -e "s/\\\\openout[^=]*= *[\`']*//" \ + -e "s/'\.$//" + fi +} + +# Used in generated_files_get +generated_files_get_from_fls () +{ + if test -f "$1.fls"; then + grep '^OUTPUT ' "$1.fls" | cut -b 8- \ + | grep -v '\.dvi$' | grep -v '\.log$' | grep -v '\.pdf$' || true + fi +} + +# generated_files_get - Output the list of files generated by the TeX +# compilation. +generated_files_get () +{ + $generated_files_get_method "$in_noext" + if test $generated_files_get_method = generated_files_get_from_fls; then + if test -r "$in_noext.fl"; then + report 'WARNING!! The fl index may typeset as garbage!' # goes to stderr + report 'Try upgrading your version of texinfo.tex, or else try setting' + report 'the environment variable TEXI2DVI_USE_RECORDER to '\''no'\''.' +report 'Once you'\''ve done that, delete the file with an '\''fl'\'' extension.' + fi + fi +} + + +# xref_files_save - set xref_files_orig from xref_files_new, and save xref +# files in $work_bak. +xref_files_save () +{ + # Save copies of auxiliary files for later comparison. + xref_files_orig=$xref_files_new + if test -n "$xref_files_orig"; then + verbose "Backing up xref files: $xref_files_orig" + # The following line improves `cp $xref_files_orig "$work_bak"' + # by preserving the directory parts. Think of + # cp chap1/main.aux chap2/main.aux $work_bak. + # + # Users may have, e.g., --keep-old-files. Don't let this interfere. + # (Don't use unset for the sake of ancient shells.) + TAR_OPTIONS=; export TAR_OPTIONS + tar cf - $xref_files_orig | (cd "$rel$work_bak" && tar xf -) + fi + + # Remove auxiliary files in same directory as main input file. Otherwise, + # these will likely be read instead of those in the build dir. + if $tidy ; then + secondary_xref_files=`sorted_index_files` + for f in $xref_files_new $secondary_xref_files ; do + if test -f "$rel$in_dir/$f" ; then + remove $rel$in_dir/$f + fi + done + fi +} + + +# xref_files_changed - Return success if the xref files have changed +# since the previous run. +xref_files_changed () +{ + # LaTeX (and the package changebar) report in the LOG file if it + # should be rerun. This is needed for files included from + # subdirs, since texi2dvi does not try to compare xref files in + # subdirs. Performing xref files test is still good since LaTeX + # does not report changes in xref files. + if grep "Rerun to get" "$in_noext.log" >&6 2>&1; then + return 0 + fi + # Similarly, check for biblatex report of whether rerunning is needed. + if grep "biblatex.*(re)run" "$in_noext.log" >&6 2>&1; then + return 0 + fi + + # If old and new lists don't have the same file list, + # then something has definitely changed. + xref_files_new=`generated_files_get` + verbose "Original xref files = $xref_files_orig" + verbose "New xref files = $xref_files_new" + if test "x$xref_files_orig" != "x$xref_files_new"; then + return 0 + fi + + # Compare each file until we find a difference. + for this_file in $xref_files_new; do + verbose "Comparing xref file `echo $this_file | $SED 's|\./||g'` ..." + # cmp -s returns nonzero exit status if files differ. + if cmp -s "$this_file" "$rel$work_bak/$this_file"; then :; else + verbose "xref file `echo $this_file | $SED 's|\./||g'` differed ..." + if $debug; then + diff -u "$rel$work_bak/$this_file" "$this_file" + fi + return 0 + fi + done + + secondary_xref_files=`sorted_index_files` + verbose "Secondary xref files = $secondary_xref_files" + for this_file in $secondary_xref_files; do + if test -f $this_file; then :; else + verbose "$this_file missing ..." + return 0 + fi + done + + # No change. + return 1 +} + +# Running the TeX suite. +# +# Set tex_cmd variable, for running TeX. +make_tex_cmd () +{ + case $in_lang:$latex2html:`out_lang_tex` in + latex:*:dvi|latex:tex4ht:html) + tex=${LATEX:-latex};; + latex:*:pdf) + tex=${PDFLATEX:-pdflatex};; + texinfo:*:dvi) + # MetaPost also uses the TEX environment variable. If the user + # has set TEX=latex for that reason, don't bomb out. + case $TEX in + *latex) tex=tex;; # don't bother trying to find etex + *) tex=$TEX + esac;; + texinfo:*:pdf) tex=$PDFTEX;; + *) error 1 "$out_lang not supported for $in_lang";; + esac + + # Beware of aux files in subdirectories that require the + # subdirectory to exist. + case $in_lang:$tidy in + latex:true) + $SED -n 's|^[ ]*\\include{\(.*\)/.*}.*|\1|p' "$in_input" | + sort -u | + while read d + do + ensure_dir "$work_build/$d" + done + ;; + esac + + # Note that this will be used via an eval: quote properly. + tex_cmd="$tex" + + # If possible, make TeX report error locations in GNU format. + if $line_error; then + if test "${tex_help:+set}" != set; then + # Go to a temporary directory to try --help, since old versions that + # don't accept --help will generate a texput.log. + tex_help_dir=$t2ddir/tex_help + ensure_dir "$tex_help_dir" + tex_help=`cd "$tex_help_dir" >&6 && $tex --help &1 || true` + fi + # The mk program and perhaps others want to parse TeX's + # original error messages. + case $tex_help in + *file-line-error*) tex_cmd="$tex_cmd --file-line-error";; + esac + fi + + # Tell TeX about -recorder option, if specified + # recorder_option_maybe is in { " -recorder", "" } + tex_cmd="$tex_cmd$recorder_option_maybe" + + + # Tell TeX about TCX file, if specified. + test -n "$translate_file" \ + && tex_cmd="$tex_cmd --translate-file=$translate_file" + + # Tell TeX to make source specials (for backtracking from output to + # source, given a sufficiently smart editor), if specified. + test -n "$src_specials" && tex_cmd="$tex_cmd $src_specials" + + # Tell TeX to allow running external executables + test -n "$shell_escape" && tex_cmd="$tex_cmd $shell_escape" + + # Run without interaction. + # \batchmode does not show terminal output at all, so we don't + # want that. And even in batch mode, TeX insists on having input + # from the user. Close its stdin to make it impossible. + tex_cmd="$tex_cmd , \ and any whitespace characters are not supported + # filenames. + in_input_funnies=`echo "$in_input" \ + | $SED -e 's![^}#$%&^_{~]!!g' -e 's!\(.\)!\1\'' +!g' | uniq` + + if test -n "$in_input_funnies" ; then + # Make > an end group character, as it's unlikely to appear in + # a filename. + tex_cmd="$tex_cmd '${escape}bgroup${escape}catcode62=2${escape}relax'" + + # If the filename has funny characters, change the TeX category codes of + # some characters within a group, and use \expandafter to input the file + # outside of the group. + for w in $in_input_funnies ; do + tex_cmd="$tex_cmd '${escape}catcode\`${escape}$w=12${escape}relax'" + done + + # Set \toks0 to "\input FILENAME\relax" + tex_cmd="$tex_cmd '${escape}toks0${escape}bgroup${escape}input' '$rel$in_input' '${escape}relax>" + + # Expand \toks0 after the end of the group + tex_cmd="$tex_cmd${escape}expandafter${escape}egroup" + tex_cmd="$tex_cmd${escape}the${escape}toks0${escape}relax'" + else + # In the case of a simple filename, just pass the filename + # with no funny tricks. + tex_cmd="$tex_cmd '${escape}input' '$rel$in_input'" + fi + + verbose "$0: Running $tex_cmd ..." + if (eval "$tex_cmd" >&5); then + case $out_lang in + dvi | pdf ) move_to_dest "$in_noext.$out_lang";; + esac + else + tex_failed=true + fi +} + + +# run_bibtex - Run bibtex (or biber) on current file +# - if its input (AUX) exists, +# - or if some citations are missing (LOG contains `Citation'), +# - or if the LOG complains of a missing .bbl. +# +# Don't try to be too smart: +# 1. Running bibtex only if the bbl file exists and is older than +# the LaTeX file is wrong, since the document might include files +# that have changed. +# +# 2. Because there can be several AUX (if there are \include's), +# but a single LOG, looking for missing citations in LOG is +# easier, though we take the risk of matching false messages. +run_bibtex () +{ + case $in_lang in + latex) bibtex=${BIBTEX:-bibtex};; + texinfo) return;; + esac + + # "Citation undefined" is for LaTeX, "Undefined citation" for btxmac.tex. + # The no .aux && \bibdata test is also for btxmac, in case it was the + # first run of a bibtex-using document. Otherwise, it's possible that + # bibtex would never be run. + if test -r "$in_noext.aux" \ + && test -r "$in_noext.log" \ + && ( (grep 'Warning:.*Citation.*undefined' "$in_noext.log" \ + || grep '.*Undefined citation' "$in_noext.log" \ + || grep 'No file .*\.bbl\.' "$in_noext.log") \ + || (grep 'No \.aux file' "$in_noext.log" \ + && grep '^\\bibdata' "$in_noext.aux") ) \ + >&6 2>&1; \ + then + bibtex_aux=`filter_files bibaux_file_p` + for f in $bibtex_aux; do + run $bibtex "$f" + done + fi + + # biber(+biblatex) check. + if test -r "$in_noext.bcf" \ + && grep '' "$in_noext.bcf" >/dev/null; then + run ${BIBER:-biber} "$in_noext" + fi +} + + +# filter_file PREDICATE - Go through the list of files in xref_files_new +# and use PREDICATE on each one to optionally print it or print other files +# based on the filename. +filter_files () +{ + test -n "$xref_files_new" || return 0 + echo "$xref_files_new" | + # Filter existing files matching the criterion. + # + while read file; do + $1 "$file" + done | + sort | + # Some files are opened several times, e.g., listings.sty's *.vrb. + uniq +} + +# run_index - Run texindex (or makeindex or texindy) on current index +# files. If they already exist, and after running TeX a first time the +# index files don't change, then there's no reason to run TeX again. +# But we won't know that if the index files are out of date or nonexistent. +run_index () +{ + index_files=`filter_files index_file_p` + test -n "$index_files" \ + || return 0 + + : ${MAKEINDEX:=makeindex} + : ${TEXINDEX:=texindex} + : ${TEXINDY:=texindy} + + case $in_lang:$latex2html:`out_lang_tex` in + latex:tex4ht:html) + for index_file in $index_files + do + index_noext=`noext "$index_file"` + run tex \ + '\def\filename{{'"$index_noext"'}{idx}{4dx}{ind}} + \input idxmake.4ht' + run $MAKEINDEX -o $index_noext.ind $index_noext.4dx + done + ;; + + latex:*) + if $TEXINDY --version >&6 2>&1; then + run $TEXINDY $index_files + else + run $MAKEINDEX $index_files + fi + ;; + + texinfo:*) + run $TEXINDEX $index_files + ;; + esac +} + + +# run_tex4ht - Run the last two phases of TeX4HT: tex4ht extracts the +# HTML from the instrumented DVI file, and t4ht converts the figures and +# installs the files when given -d. +# +# Because knowing exactly which files are created is complex (in +# addition the names are not simple to compute), which makes it +# difficult to install the output files in a second step, we +# tell t4ht to install the output files. +run_tex4ht () +{ + case $in_lang:$latex2html:`out_lang_tex` in + latex:tex4ht:html) + : ${TEX4HT:=tex4ht} ${T4HT:=t4ht} + run "$TEX4HT" "-f/$in_noext" + # Do not remove the / after the destdir. + run "$T4HT" "-d`destdir`/" "-f/$in_noext" + ;; + esac +} + + +# run_thumbpdf - Run thumbpdf. +run_thumbpdf () +{ + if test `out_lang_tex` = pdf \ + && test -r "$in_noext.log" \ + && grep 'thumbpdf\.sty' "$in_noext.log" >&6 2>&1; \ + then + thumbpdf=${THUMBPDF_CMD:-thumbpdf} + thumbcmd="$thumbpdf $in_dir/$in_noext" + verbose "Running $thumbcmd ..." + if $thumbcmd >&5; then + run_tex + else + report "$thumbpdf exited with bad status." \ + "Ignoring its output." + fi + fi +} + + +# run_dvipdf FILE.dvi - Convert FILE.dvi to FILE.pdf. +run_dvipdf () +{ + # Find which dvi->pdf program is available. + if test -n "$DVIPDF"; then + dvipdf=$DVIPDF # user envvar, use it without checking + + elif test -z "$dvipdf"; then + for i in dvipdfmx dvipdfm dvipdf dvi2pdf dvitopdf; do + if findprog $i; then + dvipdf=$i + fi + done + fi + # These tools have varying interfaces, some 'input output', others + # 'input -o output'. They all seem to accept 'input' only, + # outputting using the expected file name. + run $dvipdf "$1" + if test ! -f `echo "$1" | $SED -e 's/\.dvi$/.pdf/'`; then + error 1 "cannot find output file" + fi +} + +# run_tex_suite - Run the TeX tools until a stable point is reached. +run_tex_suite () +{ + make_tex_cmd + + # Move to the working directory. + if $tidy; then + verbose "cd $work_build" + cd_dir "$work_build" || exit 1 + fi + + # Count the number of cycles. + suite_cycle=0 + + # Start by checking the log files for what files were created last + # time. This will mean that if they don't change, we finish in 1 cycle. + xref_files_new=`generated_files_get` + xref_files_save + + while :; do + # check for (probably) LaTeX loop (e.g. varioref) + if test $suite_cycle -eq "$max_iters"; then + error 0 "Maximum of $max_iters cycles exceeded" + break + fi + + # report progress + suite_cycle=`expr $suite_cycle + 1` + verbose "Cycle $suite_cycle for $command_line_filename" + + tex_failed=false + run_core_conversion + xref_files_changed || break + xref_files_save + + # We run bibtex first, because it's more likely for the indexes + # to change after bibtex is run than the reverse, though either + # would be rare. + run_bibtex + run_index + done + + if $tex_failed ; then + # TeX failed, and the xref files did not change. + error 1 "$tex exited with bad status, quitting." + fi + + # If we were using thumbpdf and producing PDF, then run thumbpdf + # and TeX one last time. + run_thumbpdf + + # If we are using tex4ht, call it. + run_tex4ht + + # Install the result if we didn't already (i.e., if the output is + # dvipdf or ps). + case $latex2html:$out_lang in + *:dvipdf) + run_dvipdf "$in_noext.`out_lang_tex`" + move_to_dest "$in_noext.`out_lang_ext`" + ;; + *:ps) + : ${DVIPS:=dvips} + run $DVIPS -o "$in_noext.`out_lang_ext`" "$in_noext.`out_lang_tex`" + move_to_dest "$in_noext.`out_lang_ext`" + ;; + esac + + cd_orig +} + + +# TeX processing auxiliary tools. +# +# run_makeinfo - Expand macro commands in the original source file using +# Makeinfo. Always use `end' footnote style, since the `separate' style +# generates different output (arguably this is a bug in -E). Discard +# main info output, the user asked to run TeX, not makeinfo. +run_makeinfo () +{ + test $in_lang = texinfo \ + || return 0 + + # Unless required by the user, makeinfo expansion is wanted only + # if texinfo.tex is too old. + if $expand; then + makeinfo=${MAKEINFO:-makeinfo} + else + # Check if texinfo.tex performs macro expansion by looking for + # its version. The version is a date of the form YEAR-MO-DA. + # We don't need to use [0-9] to match the digits since anyway + # the comparison with $txiprereq, a number, will fail with non-digits. + # Run in a temporary directory to avoid leaving files. + version_test_dir=$t2ddir/version_test + ensure_dir "$version_test_dir" + if ( + cd "$version_test_dir" + echo '\input texinfo.tex @bye' >txiversion.tex + # Be sure that if tex wants to fail, it is not interactive: + # close stdin. + $TEX txiversion.tex txiversion.out 2>txiversion.err + ); then :; else + report "texinfo.tex appears to be broken. +This may be due to the environment variable TEX set to something +other than (plain) tex, a corrupt texinfo.tex file, or +to tex itself simply not working." + cat "$version_test_dir/txiversion.out" + cat "$version_test_dir/txiversion.err" >&2 + error 1 "quitting." + fi + eval `$SED -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p' "$version_test_dir/txiversion.out"` + verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..." + if test "$txiprereq" -le "$txiversion" >&6 2>&1; then + makeinfo= + else + makeinfo=${MAKEINFO:-makeinfo} + fi + # If TeX is preloaded, offer the user this convenience: + if test "$txiformat" = Texinfo; then + escape=@ + fi + fi + + if test -n "$makeinfo"; then + # in_src: the file with macros expanded. + # Use the same basename to generate the same aux file names. + work_src=$workdir/src + ensure_dir "$work_src" + in_src=$work_src/$in_base + run_mi_includes=`list_prefix includes -I` + verbose "Macro-expanding $command_line_filename to $in_src ..." + # eval $makeinfo because it might be defined as something complex + # (running missing) and then we end up with things like '"-I"', + # and "-I" (including the quotes) is not an option name. This + # happens with gettext 0.14.5, at least. + $SED "$comment_iftex" "$command_line_filename" \ + | eval $makeinfo --footnote-style=end -I "$in_dir" $run_mi_includes \ + -o /dev/null --macro-expand=- \ + | $SED "$uncomment_iftex" >"$in_src" + # Continue only if everything succeeded. + if test $? -ne 0 \ + || test ! -r "$in_src"; then + verbose "Expansion failed, ignored..."; + else + in_input=$in_src + fi + fi +} + +# Unfortunately, makeinfo --iftex --no-ifinfo doesn't work well enough +# in versions before 5.0, as makeinfo can't parse the TeX commands +# inside @tex blocks, so work around with sed. +# +# This sed script preprocesses Texinfo sources in order to keep the +# iftex sections only. We want to remove non-TeX sections, and comment +# (with `@c _texi2dvi') TeX sections so that makeinfo does not try to +# parse them. Nevertheless, while commenting TeX sections, don't +# comment @macro/@end macro so that makeinfo does propagate them. +# Similarly, preserve the @top node to avoid makeinfo complaining about +# it being missed. Comment it out after preprocessing, so that it does +# not appear in the generated document. +# +# We assume that `@c _texi2dvi' or `@c (_texi2dvi)' starting a line is +# not present in the document. Additionally, conditionally defined +# macros inside the @top node may end up with the wrong value, although +# this is unlikely in practice. +# +comment_iftex=\ +'/^@tex/,/^@end tex/{ + s/^/@c _texi2dvi/ +} +/^@iftex/,/^@end iftex/{ + s/^/@c _texi2dvi/ + /^@c _texi2dvi@macro/,/^@c _texi2dvi@end macro/{ + s/^@c _texi2dvi// + } +} +/^@ifnottex/,/^@end ifnottex/{ + s/^/@c (_texi2dvi)/ + /^@c (_texi2dvi)@node Top/,/^@c (_texi2dvi)@end ifnottex/ { + /^@c (_texi2dvi)@end ifnottex/b + s/^@c (_texi2dvi)// + } +} +/^@ifinfo/,/^@end ifinfo/{ + /^@node/p + /^@menu/,/^@end menu/p + t + s/^/@c (_texi2dvi)/ +} +s/^@ifnotinfo/@c _texi2dvi@ifnotinfo/ +s/^@end ifnotinfo/@c _texi2dvi@end ifnotinfo/' + +# Uncomment @iftex blocks by removing any leading `@c texi2dvi' (repeated +# copies can sneak in via macro invocations). Likewise, comment out +# the @top node inside a @ifnottex block. +uncomment_iftex=\ +'s/^@c _texi2dvi\(@c _texi2dvi\)*// +/^@c (_texi2dvi)@ifnottex/,/^@c (_texi2dvi)@end ifnottex/{ + s/^/@c (_texi2dvi)/ +}' + + +# insert_commands - Insert $textra commands at the beginning of the file. +# Recommended to be used for @finalout, @smallbook, etc. +insert_commands () +{ + if test -n "$textra"; then + # _xtr. The file with the user's extra commands. + work_xtr=$workdir/xtr + in_xtr=$work_xtr/$in_base + ensure_dir "$work_xtr" + verbose "Inserting extra commands: $textra" + case $in_lang in + latex) textra_cmd=1i;; + texinfo) + textra_cmd='/^\\input texinfo/a' + # insert after @setfilename line if present + if head -n 10 $in_input | grep '^@setfilename' ; then + textra_cmd='/^@setfilename/a' + fi + ;; + *) error 1 "internal error, unknown language: $in_lang";; + esac + $SED "$textra_cmd\\ +$textra" "$in_input" >"$in_xtr" + in_input=$in_xtr + fi + + case $in_lang:$latex2html:`out_lang_tex` in + latex:tex4ht:html) + # _tex4ht. The file with the added \usepackage{tex4ht}. + work_tex4ht=$workdir/tex4ht + in_tex4ht=$work_tex4ht/$in_base + ensure_dir "$work_tex4ht" + verbose "Inserting \\usepackage{tex4ht}" + perl -pe 's<\\documentclass(?:\[.*\])?{.*}> + <$&\\usepackage[xhtml]{tex4ht}>' \ + "$in_input" >"$in_tex4ht" + in_input=$in_tex4ht + ;; + esac +} + + +# compute_language FILENAME - Return the short string for the language +# in which FILENAME is written: `texinfo' or `latex'. +compute_language () +{ + # If the user explicitly specified the language, use that. + # Otherwise, if the first line is \input texinfo, assume it's texinfo. + # Otherwise, guess from the file extension. + if test -n "$set_language"; then + echo $set_language + elif $SED 1q "$1" | grep 'input texinfo' >&6; then + echo texinfo + else + # Get the type of the file (latex or texinfo) from the given language + # we just guessed, or from the file extension if not set yet. + case $1 in + *.ltx | *.tex | *.drv | *.dtx) echo latex;; + *) echo texinfo;; + esac + fi +} + + +# run_hevea (MODE) - Convert to HTML/INFO/TEXT. +# +# Don't pass `-noiso' to hevea: it's useless in HTML since anyway the +# charset is set to latin1, and troublesome in other modes since +# accented characters loose their accents. +# +# Don't pass `-o DEST' to hevea because in that case it leaves all its +# auxiliary files there too... Too bad, because it means we will need +# to handle images some day. +run_hevea () +{ + run_hevea_name="${HEVEA:-hevea}" + run_hevea_cmd="$run_hevea_name" + + case $1 in + html) ;; + text|info) run_hevea_cmd="$run_hevea_cmd -$1";; + *) error 1 "run_hevea_cmd: invalid argument: $1";; + esac + + # Compiling to the tmp directory enables to preserve a previous + # successful compilation. + run_hevea_cmd="$run_hevea_cmd -fix -O -o '$out_base'" + run_hevea_cmd="$run_hevea_cmd `list_prefix includes -I` -I '$orig_pwd' " + run_hevea_cmd="$run_hevea_cmd '$rel$in_input'" + + if $debug; then + run_hevea_cmd="$run_hevea_cmd -v -v" + fi + + verbose "running $run_hevea_cmd" + if eval "$run_hevea_cmd" >&5; then + # hevea leaves trailing white spaces, this is annoying. + case $1 in text|info) + perl -pi -e 's/[ \t]+$//g' "$out_base"*;; + esac + case $1 in + html|text) move_to_dest "$out_base";; + info) # There can be foo.info-1, foo.info-2 etc. + move_to_dest "$out_base"*;; + esac + else + error 1 "$run_hevea_name exited with bad status, quitting." + fi +} + + +# run_core_conversion - Run TeX (or HeVeA). +run_core_conversion () +{ + case $in_lang:$latex2html:`out_lang_tex` in + *:dvi|*:pdf|latex:tex4ht:html) + run_tex;; + latex:*:html|latex:*:text|latex:*:info) + run_hevea $out_lang;; + *) + error 1 "invalid input/output combination: $in_lang/$out_lang";; + esac +} + + +# compile - Run the full compilation chain, from pre-processing to +# installation of the output at its expected location. +compile () +{ + # Set include path for tools: + # . Include current directory in case there are files there already, so + # we don't have more TeX runs than necessary. orig_pwd is used in case + # we are in clean build mode, where we have cd'd to a temp directory. + # . Include directory containing file, in case there are other + # files @include'd. + # . Keep a final path_sep to get the default (system) TeX + # directories included. + # . If we have any includes, put those at the end. + + common="$orig_pwd$path_sep$in_dir$path_sep" + # + txincludes=`list_infix includes $path_sep` + test -n "$txincludes" && common="$common$txincludes$path_sep" + # + for var in $tex_envvars; do + eval val="\$common\$${var}_orig" + # Convert relative paths to absolute paths, so we can run in another + # directory (e.g., in clean build mode, or during the macro-support + # detection). + val=`absolute_filenames "$val"` + eval $var="\"$val\"" + export $var + eval verbose \"$var=\'\$${var}\'\" + done + + # --expand + run_makeinfo + + # --command, --texinfo + insert_commands + + # Run until a fixed point is reached. + run_tex_suite +} + +# make_openout_test FLAGS EXTENSION +# - Run TeX with an input file that performs an \openout. Pass FLAGS to TeX. +# +make_openout_test () +{ + recorder_option_maybe="$1" + make_tex_cmd + + ensure_dir "$workdir"/check_recorder + cd_dir "$workdir"/check_recorder + + cat > openout.tex </dev/null 2>&1) +} + +# Check tex supports -recorder option +check_recorder_support () +{ + verbose "Checking TeX recorder support..." + make_openout_test " -recorder" fls + if test -f openout.fls && grep '^OUTPUT dum.dum$' openout.fls > /dev/null + then + cd_orig + verbose "Checking TeX recorder support... yes" + return 0 + else + cd_orig + verbose "Checking TeX recorder support... no" + return 1 + fi +} + +# Check tex supports \openout traces in log +check_openout_in_log_support () +{ + verbose "Checking TeX \openout in log support..." + make_openout_test "" log + if test -f openout.log \ + && grep '^\\openout..\? *= *`\?dum\.dum'\''\?' openout.log >/dev/null + then + cd_orig + verbose "Checking TeX \openout in log support... yes" + return 0 + else + cd_orig + verbose "Checking TeX \openout in log support... no" + return 1 + fi +} + +# Set that output auxiliary files are detected with the -recorder option, +# which creates a file JOBNAME.fls which is a machine-readable listing of +# files read and written during the job. +set_aux_files_from_fls () +{ + recorder_option_maybe=" -recorder" + generated_files_get_method=generated_files_get_from_fls +} + +# Set that output auxiliary files are detected with searching for \openout +# in the log file. +set_aux_files_from_log () +{ + recorder_option_maybe='' + generated_files_get_method=generated_files_get_from_log +} + +# Decide whether output auxiliary files are detected with the -recorder +# option, or by searching for \openout in the log file. +decide_aux_files_method () +{ + # Select output file detection method + # Valid values of TEXI2DVI_USE_RECORDER are: + # yes use the -recorder option, no checks. + # no scan for \openout in the log file, no checks. + # yesmaybe check whether -recorder option is supported, and if yes + # use it, otherwise check for tracing \openout in the + # log file is supported, and if yes use it, else it is an + # error. + # nomaybe same as `yesmaybe', except that the \openout trace in + # log file is checked first. + # + # The default behaviour is `nomaybe'. + + test -n "$TEXI2DVI_USE_RECORDER" || TEXI2DVI_USE_RECORDER=nomaybe + + case $TEXI2DVI_USE_RECORDER in + yes) set_aux_files_from_fls;; + + no) set_aux_files_from_log;; + + yesmaybe) + if check_recorder_support; then + set_aux_files_from_fls + elif check_openout_in_log_support; then + set_aux_files_from_log + else + error 1 "TeX neither supports -recorder nor outputs \\openout lines in its log file" + fi + ;; + + nomaybe) + if check_openout_in_log_support; then + set_aux_files_from_log + elif check_recorder_support; then + set_aux_files_from_fls + else + error 1 "TeX neither supports -recorder nor outputs \\openout lines in its log file" + fi + ;; + + *) error 1 "Invalid value of TEXI2DVI_USE_RECORDER environment variable : $TEXI2DVI_USE_RECORDER.";; + + esac +} + +# remove FILE... +remove () +{ + verbose "Removing" "$@" + rm -rf "$@" +} + + +# all_files - Echo the names of all files generated, including those by +# auxiliary tools like texindex. +all_files () +{ + echo $in_noext.log + echo $in_noext.fls + echo $xref_files_new + echo `sorted_index_files` +} + +sorted_index_files () +{ + filter_files sorted_index_filter +} + +# Print the name of a generated file based on FILE if there is one. +sorted_index_filter () +{ + case $in_lang in + texinfo) + # texindex: texinfo.cp -> texinfo.cps + if test -n "`index_file_p $1`" ; then + echo $1s + fi + ;; + esac +} + + +# Not currently used - use with filter_files to add secondary files created by +# bibtex +bibtex_secondary_files () +{ + case $in_lang in + latex) + if test -n "`aux_file_p $1`"; then + # bibtex: *.aux -> *.bbl and *.blg. + echo $1 | $SED 's/^\(.*\)\.aux$/\1.bbl/' + echo $1 | $SED 's/^\(.*\)\.aux$/\1.blg/' + fi + ;; + esac +} + +# mostly_clean - Remove auxiliary files and directories. Changes back to +# the original directory. +mostly_clean () +{ + cd_orig + set X "$t2ddir" + shift + $tidy || { + set X ${1+"$@"} `all_files` + shift + } + remove ${1+"$@"} +} + + +# cleanup - Remove what should be removed according to options. +# Called at the end of each compilation cycle, and at the end of +# the script. Changes the current directory. +cleanup () +{ + case $clean:$tidy in + true:true) mostly_clean ;; # build mode is "clean" + false:false) cd_orig; remove "$t2ddir";; # build mode is "local" + esac +} + + +# input_file_name_decode - Decode COMMAND_LINE_FILENAME, and set the +# following shell variables: +# +# - COMMAND_LINE_FILENAME +# The filename given on the commmand line, but cleaned of TeX commands. +# - IN_DIR +# The directory containing the input file. +# - IN_BASE +# The input file base name (no directory part). +# - IN_NOEXT +# The input file name with neither file extensions nor directory part. +# - IN_INPUT +# The path to the input file for passing as a command-line argument +# to TeX. Defaults to COMMAND_LINE_FILENAME, but might change if the +# input is preprocessed. +input_file_name_decode () +{ + case $command_line_filename in + *\\input{*}*) + # Let AUC-TeX error parser deal with line numbers. + line_error=false + command_line_filename=`\ + expr X"$command_line_filename" : X'.*input{\([^}]*\)}'` + ;; + esac + + # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex), + # prepend `./' in order to avoid that the tools take it as an option. + echo "$command_line_filename" | LC_ALL=C $EGREP '^(/|[A-Za-z]:/)' >&6 \ + || command_line_filename="./$command_line_filename" + + # See if the file exists. If it doesn't we're in trouble since, even + # though the user may be able to reenter a valid filename at the tex + # prompt (assuming they're attending the terminal), this script won't + # be able to find the right xref files and so forth. + test -r "$command_line_filename" \ + || error 1 "cannot read $command_line_filename, skipping." + + # Get the name of the current directory. + in_dir=`func_dirname "$command_line_filename"` + + # Strip directory part but leave extension. + in_base=`basename "$command_line_filename"` + # Strip extension. + in_noext=`noext "$in_base"` + + # The normalized file name to compile. Must always point to the + # file to actually compile (in case of recoding, macro-expansion etc.). + in_input=$in_dir/$in_base + + + # Compute the output file name. + if test x"$oname" != x; then + out_name=$oname + else + out_name=$in_noext.`out_lang_ext` + fi + out_dir=`func_dirname "$out_name"` + out_dir_abs=`absolute "$out_dir"` + out_base=`basename "$out_name"` + out_noext=`noext "$out_base"` +} + + +# +#################### Main program starts ########################## + +# Initialize more variables. +# +# Save TEXINPUTS so we can construct a new TEXINPUTS path for each file. +# Likewise for bibtex and makeindex. +tex_envvars="BIBINPUTS BSTINPUTS DVIPSHEADERS INDEXSTYLE MFINPUTS MPINPUTS \ +TEXINPUTS TFMFONTS" +for var in $tex_envvars; do + eval ${var}_orig=\$$var + export $var +done + +# Push a token among the arguments that will be used to notice when we +# ended options/arguments parsing. +# Use "set dummy ...; shift" rather than 'set - ..." because on +# Solaris set - turns off set -x (but keeps set -e). +# Use ${1+"$@"} rather than "$@" because Digital Unix and Ultrix 4.3 +# still expand "$@" to a single argument (the empty string) rather +# than nothing at all. +arg_sep="$$--$$" +set dummy ${1+"$@"} "$arg_sep"; shift + +while test x"$1" != x"$arg_sep"; do + # Handle --option=value by splitting apart and putting back on argv. + case "$1" in + --*=*) + opt=`echo "$1" | $SED -e 's/=.*//'` + val=`echo "$1" | $SED -e 's/[^=]*=//'` + shift + set dummy "$opt" "$val" ${1+"$@"}; shift + ;; + esac + + case "$1" in + -@ ) escape=@;; + -~ ) verbose "Option -~ is obsolete: texi2dvi ignores it.";; + -b | --batch) ;; # Obsolete + --build) shift; build_mode=$1;; + --build-dir) shift; build_dir=$1; build_mode=tidy;; + -c | --clean) build_mode=clean;; + -D | --debug) debug=true;; + -e | -E | --expand) expand=true;; + -h | --help) usage;; + -I) shift; list_concat_dirs includes "$1";; + -l | --lang | --language) shift; set_language=$1;; + --mostly-clean) action=mostly-clean;; + --no-line-error) line_error=false;; + --max-iterations) shift; max_iters=$1;; + -o | --out | --output) + shift + # Make it absolute, just in case we also have --clean, or whatever. + oname=`absolute "$1"`;; + + # Output formats. + -O|--output-format) shift; out_lang_set "$1";; + --dvi|--dvipdf|--html|--info|--pdf|--ps|--text) + out_lang_set `echo "x$1" | $SED 's/^x--//'`;; + + -p) out_lang_set pdf;; + -q | -s | --quiet | --silent) quiet=true;; + --src-specials) src_specials=--src-specials;; + --shell-escape) shell_escape=--shell-escape;; + --tex4ht) latex2html=tex4ht;; + -t | --texinfo | --command ) shift; textra="$textra\\ +"`echo "$1" | $SED 's/\\\\/\\\\\\\\/g'`;; + --translate-file ) shift; translate_file="$1";; + --tidy) build_mode=tidy;; + -v | --vers*) version;; + -V | --verb*) verb=true;; + --) # What remains are not options. + shift + while test x"$1" != x"$arg_sep"; do + set dummy ${1+"$@"} "$1"; shift + shift + done + break;; + -*) + error 1 "Unknown or ambiguous option \`$1'." \ + "Try \`--help' for more information." + ;; + *) set dummy ${1+"$@"} "$1"; shift;; + esac + shift +done +# Pop the token +shift + +# $tidy: compile in a t2d directory. +# $clean: remove all the aux files. +case $build_mode in + local) clean=false; tidy=false;; + tidy) clean=false; tidy=true;; + clean) clean=true; tidy=true;; + *) error 1 "invalid build mode: $build_mode";; +esac + +# Interpret remaining command line args as filenames. +case $# in + 0) + error 2 "Missing file arguments." "Try \`--help' for more information." + ;; + 1) ;; + *) + if test -n "$oname"; then + error 2 "Can't use option \`--output' with more than one argument." + fi + ;; +esac + + +# We can't do much without tex. +# End up with the TEX and PDFTEX variables set to what we are going to use. +# +# If $TEX is set to a directory, don't use it. +test -n "$TEX" && test -d "$TEX" && unset TEX + +# But otherwise, use $TEX if it is set. +if test -z "$TEX"; then + if findprog tex; then :; else cat <&2 +You don't have a working TeX binary (tex) installed anywhere in +your PATH, and texi2dvi cannot proceed without one. If you want to use +this script, you'll need to install TeX (if you don't have it) or change +your PATH or TEX environment variable (if you do). See the --help +output for more details. + +For information about obtaining TeX, please see http://tug.org/texlive, +or do a web search for TeX and your operating system or distro. +EOM + exit 1 + fi + + # We want to use etex (or pdftex) if they are available, and the user + # didn't explicitly specify. We don't check for elatex and pdfelatex + # because (as of 2003), the LaTeX team has asked that new distributions + # use etex by default anyway. + # + if findprog etex; then TEX=etex; else TEX=tex; fi +fi + +# For many years, the pdftex binary has included the e-tex extensions, +# but for those people with ancient TeX distributions ... +if test -z "$PDFTEX"; then + if findprog pdfetex; then PDFTEX=pdfetex; else PDFTEX=pdftex; fi +fi + + +# File descriptor usage: +# 0 standard input +# 1 standard output (--verbose messages) +# 2 standard error +# 5 tools output (turned off by --quiet) +# 6 tracing/debugging (set -x output, etc.) + +# Main tools' output (TeX, etc.) that TeX users are used to seeing. +# +# If quiet, discard, else redirect to the message flow. +if $quiet; then + exec 5>/dev/null +else + exec 5>&1 +fi + + +# Enable tracing, and auxiliary tools output. +# +# This fd should be used where you'd typically use /dev/null to throw +# output away. But sometimes it is convenient to see that output (e.g., +# from a grep) to aid debugging. Especially debugging at distance, via +# the user. +# +if $debug; then + exec 6>&1 + set -vx +else + exec 6>/dev/null +fi + + +# Main program main loop - TeXify each file in turn. +for command_line_filename +do + verbose "Processing $command_line_filename ..." + + input_file_name_decode + + # `texinfo' or `latex'? + in_lang=`compute_language "$command_line_filename"` + + # An auxiliary directory used for all the auxiliary tasks involved + # in compiling this document. + case $build_dir in + '' | . ) t2ddir=$out_noext.t2d ;; + *) # Avoid collisions between multiple occurrences of the same + # file, so depend on the output path. Remove leading `./', + # at least to avoid creating a file starting with `.!', i.e., + # an invisible file. The sed expression is fragile if the cwd + # has active characters. Transform / into ! so that we don't + # need `mkdir -p'. It might be something to reconsider. + t2ddir=$build_dir/`echo "$out_dir_abs/$out_noext.t2d" | + $SED "s,^$orig_pwd/,,;s,^\./,,;s,/,!,g"` + esac + # Remove it at exit if clean mode. + trap "cleanup" 0 1 2 15 + + ensure_dir "$build_dir" "$t2ddir" + + # Sometimes there are incompatibilities between auxiliary files for + # DVI and PDF. The contents can also change whether we work on PDF + # and/or DVI. So keep separate spaces for each. + workdir=$t2ddir/`out_lang_tex` + ensure_dir "$workdir" + + # _build. In a tidy build, where the auxiliary files are output. + if $tidy; then + work_build=$workdir/build + else + work_build=. + fi + + # _bak. Copies of the previous auxiliary files (another round is + # run if they differ from the new ones). + work_bak=$workdir/bak + + # Make those directories. + ensure_dir "$work_build" "$work_bak" + + # Decide how to find auxiliary files created by TeX. + decide_aux_files_method + + case $action in + compile) + # Compile the document. + compile + cleanup + ;; + + mostly-clean) + xref_files_new=`generated_files_get` + mostly_clean + ;; + esac +done + +verbose "done." +exit 0 # exit successfully, not however we ended the loop. +# Local Variables: +# sh-basic-offset: 2 +# sh-indentation: 2 +# End: diff --git a/bash-5.1/support/texi2html b/bash-5.1/support/texi2html new file mode 100755 index 0000000..13b5588 --- /dev/null +++ b/bash-5.1/support/texi2html @@ -0,0 +1,5428 @@ +#! /usr/bin/perl +'di '; +'ig 00 '; +#+############################################################################## +# +# texi2html: Program to transform Texinfo documents to HTML +# +# Copyright (C) 1999, 2000 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +#-############################################################################## + +# This requires perl version 5 or higher +require 5.0; + +#++############################################################################## +# +# NOTE FOR DEBUGGING THIS SCRIPT: +# You can run 'perl texi2html.pl' directly, provided you have +# the environment variable T2H_HOME set to the directory containing +# the texi2html.init file +# +#--############################################################################## + +# CVS version: +# $Id: texi2html.pl,v 1.55 2000/07/27 14:39:41 obachman Exp $ + +# Homepage: +$T2H_HOMEPAGE = < (original author) + Karl Berry + Olaf Bachmann + and many others. +Maintained by: Olaf Bachmann +Send bugs and suggestions to +EOT + +# Version: set in configure.in +$THISVERSION = '1.64'; +$THISPROG = "texi2html $THISVERSION"; # program name and version + +# The man page for this program is included at the end of this file and can be +# viewed using the command 'nroff -man texi2html'. + +# Identity: + +$T2H_TODAY = &pretty_date; # like "20 September 1993" +# the eval prevents this from breaking on system which do not have +# a proper getpwuid implemented +eval { ($T2H_USER = (getpwuid ($<))[6]) =~ s/,.*//;}; # Who am i + +#+++############################################################################ +# # +# Initialization # +# Pasted content of File $(srcdir)/texi2html.init: Default initializations # +# # +#---############################################################################ + +# leave this within comments, and keep the require statement +# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init +# exists. + +# +# -*-perl-*- +###################################################################### +# File: texi2html.init +# +# Sets default values for command-line arguments and for various customizable +# procedures +# +# A copy of this file is pasted into the beginning of texi2html by +# 'make texi2html' +# +# Copy this file and make changes to it, if you like. +# Afterwards, either, load it with command-line option -init_file +# +# $Id: texi2html.init,v 1.34 2000/07/27 14:09:02 obachman Exp $ + +###################################################################### +# stuff which can also be set by command-line options +# +# +# Note: values set here, overwrite values set by the command-line +# options before -init_file and might still be overwritten by +# command-line arguments following the -init_file option +# + +# T2H_OPTIONS is a hash whose keys are the (long) names of valid +# command-line options and whose values are a hash with the following keys: +# type ==> one of !|=i|:i|=s|:s (see GetOpt::Long for more info) +# linkage ==> ref to scalar, array, or subroutine (see GetOpt::Long for more info) +# verbose ==> short description of option (displayed by -h) +# noHelp ==> if 1 -> for "not so important options": only print description on -h 1 +# 2 -> for obsolete options: only print description on -h 2 + +$T2H_DEBUG = 0; +$T2H_OPTIONS -> {debug} = +{ + type => '=i', + linkage => \$main::T2H_DEBUG, + verbose => 'output HTML with debuging information', +}; + +$T2H_DOCTYPE = ''; +$T2H_OPTIONS -> {doctype} = +{ + type => '=s', + linkage => \$main::T2H_DOCTYPE, + verbose => 'document type which is output in header of HTML files', + noHelp => 1 +}; + +$T2H_CHECK = 0; +$T2H_OPTIONS -> {check} = +{ + type => '!', + linkage => \$main::T2H_CHECK, + verbose => 'if set, only check files and output all things that may be Texinfo commands', + noHelp => 1 +}; + +# -expand +# if set to "tex" (or, "info") expand @iftex and @tex (or, @ifinfo) sections +# else, neither expand @iftex, @tex, nor @ifinfo sections +$T2H_EXPAND = "info"; +$T2H_OPTIONS -> {expand} = +{ + type => '=s', + linkage => \$T2H_EXPAND, + verbose => 'Expand info|tex|none section of texinfo source', +}; + +# - glossary +#if set, uses section named `Footnotes' for glossary +$T2H_USE_GLOSSARY = 0; +T2H_OPTIONS -> {glossary} = +{ + type => '!', + linkage => \$T2H_USE_GLOSSARY, + verbose => "if set, uses section named `Footnotes' for glossary", + noHelp => 1, +}; + + +# -invisible +# $T2H_INVISIBLE_MARK is the text used to create invisible destination +# anchors for index links (you can for instance use the invisible.xbm +# file shipped with this program). This is a workaround for a known +# bug of many WWW browsers, including netscape. +# For me, it works fine without it -- on the contrary: if there, it +# inserts space between headers and start of text (obachman 3/99) +$T2H_INVISIBLE_MARK = ''; +# $T2H_INVISIBLE_MARK = ' '; +$T2H_OPTIONS -> {invisible} = +{ + type => '=s', + linkage => \$T2H_INVISIBLE_MARK, + verbose => 'use text in invisble anchot', + noHelp => 1, +}; + +# -iso +# if set, ISO8879 characters are used for special symbols (like copyright, etc) +$T2H_USE_ISO = 0; +$T2H_OPTIONS -> {iso} = +{ + type => 'iso', + linkage => \$T2H_USE_ISO, + verbose => 'if set, ISO8879 characters are used for special symbols (like copyright, etc)', + noHelp => 1, +}; + +# -I +# list directories where @include files are searched for (besides the +# directory of the doc file) additional '-I' args add to this list +@T2H_INCLUDE_DIRS = ("."); +$T2H_OPTIONS -> {I} = +{ + type => '=s', + linkage => \@T2H_INCLUDE_DIRS, + verbose => 'append $s to the @include search path', +}; + +# -top_file +# uses file of this name for top-level file +# extension is manipulated appropriately, if necessary. +# If empty, .html is used +# Typically, you would set this to "index.html". +$T2H_TOP_FILE = ''; +$T2H_OPTIONS -> {top_file} = +{ + type => '=s', + linkage => \$T2H_TOP_FILE, + verbose => 'use $s as top file, instead of .html', +}; + + +# -toc_file +# uses file of this name for table of contents file +# extension is manipulated appropriately, if necessary. +# If empty, _toc.html is used +$T2H_TOC_FILE = ''; +$T2H_OPTIONS -> {toc_file} = +{ + type => '=s', + linkage => \$T2H_TOC_FILE, + verbose => 'use $s as ToC file, instead of _toc.html', +}; + +# -frames +# if set, output two additional files which use HTML 4.0 "frames". +$T2H_FRAMES = 0; +$T2H_OPTIONS -> {frames} = +{ + type => '!', + linkage => \$T2H_FRAMES, + verbose => 'output files which use HTML 4.0 frames (experimental)', + noHelp => 1, +}; + + +# -menu | -nomenu +# if set, show the Texinfo menus +$T2H_SHOW_MENU = 1; +$T2H_OPTIONS -> {menu} = +{ + type => '!', + linkage => \$T2H_SHOW_MENU, + verbose => 'ouput Texinfo menus', +}; + +# -number | -nonumber +# if set, number sections and show section names and numbers in references +# and menus +$T2H_NUMBER_SECTIONS = 1; +$T2H_OPTIONS -> {number} = +{ + type => '!', + linkage => \$T2H_NUMBER_SECTIONS, + verbose => 'use numbered sections' +}; + +# if set, and T2H_NUMBER_SECTIONS is set, then use node names in menu +# entries, instead of section names +$T2H_NODE_NAME_IN_MENU = 0; + +# if set and menu entry equals menu descr, then do not print menu descr. +# Likewise, if node name equals entry name, do not print entry name. +$T2H_AVOID_MENU_REDUNDANCY = 1; + +# -split section|chapter|none +# if set to 'section' (resp. 'chapter') create one html file per (sub)section +# (resp. chapter) and separate pages for Top, ToC, Overview, Index, +# Glossary, About. +# otherwise, create monolithic html file which contains whole document +#$T2H_SPLIT = 'section'; +$T2H_SPLIT = ''; +$T2H_OPTIONS -> {split} = +{ + type => '=s', + linkage => \$T2H_SPLIT, + verbose => 'split document on section|chapter else no splitting', +}; + +# -section_navigation|-no-section_navigation +# if set, then navigation panels are printed at the beginning of each section +# and, possibly at the end (depending on whether or not there were more than +# $T2H_WORDS_IN_PAGE words on page +# This is most useful if you do not want to have section navigation +# on -split chapter +$T2H_SECTION_NAVIGATION = 1; +$T2H_OPTIONS -> {sec_nav} = +{ + type => '!', + linkage => \$T2H_SECTION_NAVIGATION, + verbose => 'output navigation panels for each section', +}; + +# -subdir +# if set put result files in this directory +# if not set result files are put into current directory +#$T2H_SUBDIR = 'html'; +$T2H_SUBDIR = ''; +$T2H_OPTIONS -> {subdir} = +{ + type => '=s', + linkage => \$T2H_SUBDIR, + verbose => 'put HTML files in directory $s, instead of $cwd', +}; + +# -short_extn +# If this is set all HTML file will have extension ".htm" instead of +# ".html". This is helpful when shipping the document to PC systems. +$T2H_SHORTEXTN = 0; +$T2H_OPTIONS -> {short_ext} = +{ + type => '!', + linkage => \$T2H_SHORTEXTN, + verbose => 'use "htm" extension for output HTML files', +}; + + +# -prefix +# Set the output file prefix, prepended to all .html, .gif and .pl files. +# By default, this is the basename of the document +$T2H_PREFIX = ''; +$T2H_OPTIONS -> {prefix} = +{ + type => '=s', + linkage => \$T2H_PREFIX, + verbose => 'use as prefix for output files, instead of ', +}; + +# -o filename +# If set, generate monolithic document output html into $filename +$T2H_OUT = ''; +$T2H_OPTIONS -> {out_file} = +{ + type => '=s', + linkage => sub {$main::T2H_OUT = @_[1]; $T2H_SPLIT = '';}, + verbose => 'if set, all HTML output goes into file $s', +}; + +# -short_ref +#if set cross-references are given without section numbers +$T2H_SHORT_REF = ''; +$T2H_OPTIONS -> {short_ref} = +{ + type => '!', + linkage => \$T2H_SHORT_REF, + verbose => 'if set, references are without section numbers', +}; + +# -idx_sum +# if value is set, then for each @prinindex $what +# $docu_name_$what.idx is created which contains lines of the form +# $key\t$ref sorted alphabetically (case matters) +$T2H_IDX_SUMMARY = 0; +$T2H_OPTIONS -> {idx_sum} = +{ + type => '!', + linkage => \$T2H_IDX_SUMMARY, + verbose => 'if set, also output index summary', + noHelp => 1, +}; + +# -verbose +# if set, chatter about what we are doing +$T2H_VERBOSE = ''; +$T2H_OPTIONS -> {Verbose} = +{ + type => '!', + linkage => \$T2H_VERBOSE, + verbose => 'print progress info to stdout', +}; + +# -lang +# For page titles use $T2H_WORDS->{$T2H_LANG}->{...} as title. +# To add a new language, supply list of titles (see $T2H_WORDS below). +# and use ISO 639 language codes (see e.g. perl module Locale-Codes-1.02 +# for definitions) +# Default's to 'en' if not set or no @documentlanguage is specified +$T2H_LANG = ''; +$T2H_OPTIONS -> {lang} = +{ + type => '=s', + linkage => sub {SetDocumentLanguage($_[1])}, + verbose => 'use $s as document language (ISO 639 encoding)', +}; + +# -l2h +# if set, uses latex2html for generation of math content +$T2H_L2H = ''; +$T2H_OPTIONS -> {l2h} = +{ + type => '!', + linkage => \$T2H_L2H, + verbose => 'if set, uses latex2html for @math and @tex', +}; + +###################### +# The following options are only relevant if $T2H_L2H is set +# +# -l2h_l2h +# name/location of latex2html progam +$T2H_L2H_L2H = "latex2html"; +$T2H_OPTIONS -> {l2h_l2h} = +{ + type => '=s', + linkage => \$T2H_L2H_L2H, + verbose => 'program to use for latex2html translation', + noHelp => 1, +}; + +# -l2h_skip +# if set, skips actual call to latex2html tries to reuse previously generated +# content, instead +$T2H_L2H_SKIP = ''; +$T2H_OPTIONS -> {l2h_skip} = +{ + type => '!', + linkage => \$T2H_L2H_SKIP, + verbose => 'if set, tries to reuse previously latex2html output', + noHelp => 1, +}; + +# -l2h_tmp +# if set, l2h uses this directory for temporarary files. The path +# leading to this directory may not contain a dot (i.e., a "."), +# otherwise, l2h will fail +$T2H_L2H_TMP = ''; +$T2H_OPTIONS -> {l2h_tmp} = +{ + type => '=s', + linkage => \$T2H_L2H_TMP, + verbose => 'if set, uses $s as temporary latex2html directory', + noHelp => 1, +}; + +# if set, cleans intermediate files (they all have the prefix $doc_l2h_) +# of l2h +$T2H_L2H_CLEAN = 1; +$T2H_OPTIONS -> {l2h_clean} = +{ + type => '!', + linkage => \$T2H_L2H_CLEAN, + verbose => 'if set, do not keep intermediate latex2html files for later reuse', + noHelp => 1, +}; + +$T2H_OPTIONS -> {D} = +{ + type => '=s', + linkage => sub {$main::value{@_[1]} = 1;}, + verbose => 'equivalent to Texinfo "@set $s 1"', + noHelp => 1, +}; + +$T2H_OPTIONS -> {init_file} = +{ + type => '=s', + linkage => \&LoadInitFile, + verbose => 'load init file $s' +}; + + +############################################################################## +# +# The following can only be set in the init file +# +############################################################################## + +# if set, center @image by default +# otherwise, do not center by default +$T2H_CENTER_IMAGE = 1; + +# used as identation for block enclosing command @example, etc +# If not empty, must be enclosed in +$T2H_EXAMPLE_INDENT_CELL = ' '; +# same as above, only for @small +$T2H_SMALL_EXAMPLE_INDENT_CELL = ' '; +# font size for @small +$T2H_SMALL_FONT_SIZE = '-1'; + +# if non-empty, and no @..heading appeared in Top node, then +# use this as header for top node/section, otherwise use value of +# @settitle or @shorttitle (in that order) +$T2H_TOP_HEADING = ''; + +# if set, use this chapter for 'Index' button, else +# use first chapter whose name matches 'index' (case insensitive) +$T2H_INDEX_CHAPTER = ''; + +# if set and $T2H_SPLIT is set, then split index pages at the next letter +# after they have more than that many entries +$T2H_SPLIT_INDEX = 100; + +# if set (e.g., to index.html) replace hrefs to this file +# (i.e., to index.html) by ./ +$T2H_HREF_DIR_INSTEAD_FILE = ''; + +######################################################################## +# Language dependencies: +# To add a new language extend T2H_WORDS hash and create $T2H_<...>_WORDS hash +# To redefine one word, simply do: +# $T2H_WORDS->{}->{} = 'whatever' in your personal init file. +# +$T2H_WORDS_EN = +{ + # titles of pages + 'ToC_Title' => 'Table of Contents', + 'Overview_Title' => 'Short Table of Contents', + 'Index_Title' => 'Index', + 'About_Title' => 'About this document', + 'Footnotes_Title' => 'Footnotes', + 'See' => 'See', + 'see' => 'see', + 'section' => 'section', +# If necessary, we could extend this as follows: +# # text for buttons +# 'Top_Button' => 'Top', +# 'ToC_Button' => 'Contents', +# 'Overview_Button' => 'Overview', +# 'Index_button' => 'Index', +# 'Back_Button' => 'Back', +# 'FastBack_Button' => 'FastBack', +# 'Prev_Button' => 'Prev', +# 'Up_Button' => 'Up', +# 'Next_Button' => 'Next', +# 'Forward_Button' =>'Forward', +# 'FastWorward_Button' => 'FastForward', +# 'First_Button' => 'First', +# 'Last_Button' => 'Last', +# 'About_Button' => 'About' +}; + +$T2H_WORD_DE = +{ + 'ToC_Title' => 'Inhaltsverzeichniss', + 'Overview_Title' => 'Kurzes Inhaltsverzeichniss', + 'Index_Title' => 'Index', + 'About_Title' => 'Über dieses Dokument', + 'Footnotes_Title' => 'Fußnoten', + 'See' => 'Siehe', + 'see' => 'siehe', + 'section' => 'Abschnitt', +}; + +$T2H_WORD_NL = +{ + 'ToC_Title' => 'Inhoudsopgave', + 'Overview_Title' => 'Korte inhoudsopgave', + 'Index_Title' => 'Index', #Not sure ;-) + 'About_Title' => 'No translation available!', #No translation available! + 'Footnotes_Title' => 'No translation available!', #No translation available! + 'See' => 'Zie', + 'see' => 'zie', + 'section' => 'sectie', +}; + +$T2H_WORD_ES = +{ + 'ToC_Title' => 'índice General', + 'Overview_Title' => 'Resumen del Contenido', + 'Index_Title' => 'Index', #Not sure ;-) + 'About_Title' => 'No translation available!', #No translation available! + 'Footnotes_Title' => 'Fußnoten', + 'See' => 'Véase', + 'see' => 'véase', + 'section' => 'sección', +}; + +$T2H_WORD_NO = +{ + 'ToC_Title' => 'Innholdsfortegnelse', + 'Overview_Title' => 'Kort innholdsfortegnelse', + 'Index_Title' => 'Indeks', #Not sure ;-) + 'About_Title' => 'No translation available!', #No translation available! + 'Footnotes_Title' => 'No translation available!', + 'See' => 'Se', + 'see' => 'se', + 'section' => 'avsnitt', +}; + +$T2H_WORD_PT = +{ + 'ToC_Title' => 'Sumário', + 'Overview_Title' => 'Breve Sumário', + 'Index_Title' => 'Índice', #Not sure ;-) + 'About_Title' => 'No translation available!', #No translation available! + 'Footnotes_Title' => 'No translation available!', + 'See' => 'Veja', + 'see' => 'veja', + 'section' => 'Seção', +}; + +$T2H_WORDS = +{ + 'en' => $T2H_WORDS_EN, + 'de' => $T2H_WORDS_DE, + 'nl' => $T2H_WORDS_NL, + 'es' => $T2H_WORDS_ES, + 'no' => $T2H_WORDS_NO, + 'pt' => $T2H_WORDS_PT +}; + +@MONTH_NAMES_EN = +( + 'January', 'February', 'March', 'April', 'May', + 'June', 'July', 'August', 'September', 'October', + 'November', 'December' +); + +@MONTH_NAMES_DE = +( + 'Januar', 'Februar', 'März', 'April', 'Mai', + 'Juni', 'Juli', 'August', 'September', 'Oktober', + 'November', 'Dezember' +); + +@MONTH_NAMES_NL = +( + 'Januari', 'Februari', 'Maart', 'April', 'Mei', + 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', + 'November', 'December' +); + +@MONTH_NAMES_ES = +( + 'enero', 'febrero', 'marzo', 'abril', 'mayo', + 'junio', 'julio', 'agosto', 'septiembre', 'octubre', + 'noviembre', 'diciembre' +); + +@MONTH_NAMES_NO = +( + + 'januar', 'februar', 'mars', 'april', 'mai', + 'juni', 'juli', 'august', 'september', 'oktober', + 'november', 'desember' +); + +@MONTH_NAMES_PT = +( + 'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', + 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', + 'Novembro', 'Dezembro' +); + + +$MONTH_NAMES = +{ + 'en' => \@MONTH_NAMES_EN, + 'de' => \@MONTH_NAMES_DE, + 'es' => \@MONTH_NAMES_ES, + 'nl' => \@MONTH_NAMES_NL, + 'no' => \@MONTH_NAMES_NO, + 'pt' => \@MONTH_NAMES_PT +}; +######################################################################## +# Control of Page layout: +# You can make changes of the Page layout at two levels: +# 1.) For small changes, it is often enough to change the value of +# some global string/hash/array variables +# 2.) For larger changes, reimplement one of the T2H_DEFAULT_* routines, +# give them another name, and assign them to the respective +# $T2H_ variable. + +# As a general interface, the hashes T2H_HREF, T2H_NAME, T2H_NODE hold +# href, html-name, node-name of +# This -- current section (resp. html page) +# Top -- top page ($T2H_TOP_FILE) +# Contents -- Table of contents +# Overview -- Short table of contents +# Index -- Index page +# About -- page which explain "navigation buttons" +# First -- first node +# Last -- last node +# +# Whether or not the following hash values are set, depends on the context +# (all values are w.r.t. 'This' section) +# Next -- next node of texinfo +# Prev -- previous node of texinfo +# Up -- up node of texinfo +# Forward -- next node in reading order +# Back -- previous node in reading order +# FastForward -- if leave node, up and next, else next node +# FastBackward-- if leave node, up and prev, else prev node +# +# Furthermore, the following global variabels are set: +# $T2H_THISDOC{title} -- title as set by @setttile +# $T2H_THISDOC{fulltitle} -- full title as set by @title... +# $T2H_THISDOC{subtitle} -- subtitle as set by @subtitle +# $T2H_THISDOC{author} -- author as set by @author +# +# and pointer to arrays of lines which need to be printed by t2h_print_lines +# $T2H_OVERVIEW -- lines of short table of contents +# $T2H_TOC -- lines of table of contents +# $T2H_TOP -- lines of Top texinfo node +# $T2H_THIS_SECTION -- lines of 'This' section + +# +# There are the following subs which control the layout: +# +$T2H_print_section = \&T2H_DEFAULT_print_section; +$T2H_print_Top_header = \&T2H_DEFAULT_print_Top_header; +$T2H_print_Top_footer = \&T2H_DEFAULT_print_Top_footer; +$T2H_print_Top = \&T2H_DEFAULT_print_Top; +$T2H_print_Toc = \&T2H_DEFAULT_print_Toc; +$T2H_print_Overview = \&T2H_DEFAULT_print_Overview; +$T2H_print_Footnotes = \&T2H_DEFAULT_print_Footnotes; +$T2H_print_About = \&T2H_DEFAULT_print_About; +$T2H_print_misc_header = \&T2H_DEFAULT_print_misc_header; +$T2H_print_misc_footer = \&T2H_DEFAULT_print_misc_footer; +$T2H_print_misc = \&T2H_DEFAULT_print_misc; +$T2H_print_chapter_header = \&T2H_DEFAULT_print_chapter_header; +$T2H_print_chapter_footer = \&T2H_DEFAULT_print_chapter_footer; +$T2H_print_page_head = \&T2H_DEFAULT_print_page_head; +$T2H_print_page_foot = \&T2H_DEFAULT_print_page_foot; +$T2H_print_head_navigation = \&T2H_DEFAULT_print_head_navigation; +$T2H_print_foot_navigation = \&T2H_DEFAULT_print_foot_navigation; +$T2H_button_icon_img = \&T2H_DEFAULT_button_icon_img; +$T2H_print_navigation = \&T2H_DEFAULT_print_navigation; +$T2H_about_body = \&T2H_DEFAULT_about_body; +$T2H_print_frame = \&T2H_DEFAULT_print_frame; +$T2H_print_toc_frame = \&T2H_DEFAULT_print_toc_frame; + +######################################################################## +# Layout for html for every sections +# +sub T2H_DEFAULT_print_section +{ + my $fh = shift; + local $T2H_BUTTONS = \@T2H_SECTION_BUTTONS; + &$T2H_print_head_navigation($fh) if $T2H_SECTION_NAVIGATION; + my $nw = t2h_print_lines($fh); + if ($T2H_SPLIT eq 'section' && $T2H_SECTION_NAVIGATION) + { + &$T2H_print_foot_navigation($fh, $nw); + } + else + { + print $fh '
    ' . "\n"; + } +} + +################################################################### +# Layout of top-page I recommend that you use @ifnothtml, @ifhtml, +# @html within the Top texinfo node to specify content of top-level +# page. +# +# If you enclose everything in @ifnothtml, then title, subtitle, +# author and overview is printed +# T2H_HREF of Next, Prev, Up, Forward, Back are not defined +# if $T2H_SPLIT then Top page is in its own html file +sub T2H_DEFAULT_print_Top_header +{ + &$T2H_print_page_head(@_) if $T2H_SPLIT; + t2h_print_label(@_); # this needs to be called, otherwise no label set + &$T2H_print_head_navigation(@_); +} +sub T2H_DEFAULT_print_Top_footer +{ + &$T2H_print_foot_navigation(@_); + &$T2H_print_page_foot(@_) if $T2H_SPLIT; +} +sub T2H_DEFAULT_print_Top +{ + my $fh = shift; + + # for redefining navigation buttons use: + # local $T2H_BUTTONS = [...]; + # as it is, 'Top', 'Contents', 'Index', 'About' are printed + local $T2H_BUTTONS = \@T2H_MISC_BUTTONS; + &$T2H_print_Top_header($fh); + if ($T2H_THIS_SECTION) + { + # if top-level node has content, then print it with extra header + print $fh "

    $T2H_NAME{Top}

    " + unless ($T2H_HAS_TOP_HEADING); + t2h_print_lines($fh, $T2H_THIS_SECTION) + } + else + { + # top-level node is fully enclosed in @ifnothtml + # print fulltitle, subtitle, author, Overview + print $fh + "
    \n

    " . + join("

    \n

    ", split(/\n/, $T2H_THISDOC{fulltitle})) . + "

    \n"; + print $fh "

    $T2H_THISDOC{subtitle}

    \n" if $T2H_THISDOC{subtitle}; + print $fh "$T2H_THISDOC{author}\n" if $T2H_THISDOC{author}; + print $fh < +
    +

    +

    Overview:

    +
    +EOT + t2h_print_lines($fh, $T2H_OVERVIEW); + print $fh "
    \n"; + } + &$T2H_print_Top_footer($fh); +} + +################################################################### +# Layout of Toc, Overview, and Footnotes pages +# By default, we use "normal" layout +# T2H_HREF of Next, Prev, Up, Forward, Back, etc are not defined +# use: local $T2H_BUTTONS = [...] to redefine navigation buttons +sub T2H_DEFAULT_print_Toc +{ + return &$T2H_print_misc(@_); +} +sub T2H_DEFAULT_print_Overview +{ + return &$T2H_print_misc(@_); +} +sub T2H_DEFAULT_print_Footnotes +{ + return &$T2H_print_misc(@_); +} +sub T2H_DEFAULT_print_About +{ + return &$T2H_print_misc(@_); +} + +sub T2H_DEFAULT_print_misc_header +{ + &$T2H_print_page_head(@_) if $T2H_SPLIT; + # this needs to be called, otherwise, no labels are set + t2h_print_label(@_); + &$T2H_print_head_navigation(@_); +} +sub T2H_DEFAULT_print_misc_footer +{ + &$T2H_print_foot_navigation(@_); + &$T2H_print_page_foot(@_) if $T2H_SPLIT; +} +sub T2H_DEFAULT_print_misc +{ + my $fh = shift; + local $T2H_BUTTONS = \@T2H_MISC_BUTTONS; + &$T2H_print_misc_header($fh); + print $fh "

    $T2H_NAME{This}

    \n"; + t2h_print_lines($fh); + &$T2H_print_misc_footer($fh); +} + +################################################################### +# chapter_header and chapter_footer are only called if +# T2H_SPLIT eq 'chapter' +# chapter_header: after print_page_header, before print_section +# chapter_footer: after print_section of last section, before print_page_footer +# +# If you want to get rid of navigation stuff after each section, +# redefine print_section such that it does not call print_navigation, +# and put print_navigation into print_chapter_header +@T2H_CHAPTER_BUTTONS = + ( + 'FastBack', 'FastForward', ' ', + ' ', ' ', ' ', ' ', + 'Top', 'Contents', 'Index', 'About', + ); + +sub T2H_DEFAULT_print_chapter_header +{ + # nothing to do there, by default + if (! $T2H_SECTION_NAVIGATION) + { + my $fh = shift; + local $T2H_BUTTONS = \@T2H_CHAPTER_BUTTONS; + &$T2H_print_navigation($fh); + print $fh "\n
    \n"; + } +} + +sub T2H_DEFAULT_print_chapter_footer +{ + local $T2H_BUTTONS = \@T2H_CHAPTER_BUTTONS; + &$T2H_print_navigation(@_); +} +################################################################### +$T2H_TODAY = &pretty_date; # like "20 September 1993" + +sub pretty_date { + local($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst); + + ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); + $year += ($year < 70) ? 2000 : 1900; + # obachman: Let's do it as the Americans do + return($MONTH_NAMES->{$T2H_LANG}[$mon] . ", " . $mday . " " . $year); +} + + +################################################################### +# Layout of standard header and footer +# + +# Set the default body text, inserted between +###$T2H_BODYTEXT = 'LANG="EN" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"'; +$T2H_BODYTEXT = 'LANG="' . $T2H_LANG . '" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"'; +# text inserted after +$T2H_AFTER_BODY_OPEN = ''; +#text inserted before +$T2H_PRE_BODY_CLOSE = ''; +# this is used in footer +$T2H_ADDRESS = "by $T2H_USER " if $T2H_USER; +$T2H_ADDRESS .= "on $T2H_TODAY"; +# this is added inside after and some META NAME stuff +# can be used for <style> <script>, <meta> tags +$T2H_EXTRA_HEAD = ''; + +sub T2H_DEFAULT_print_page_head +{ + my $fh = shift; + my $longtitle = "$T2H_THISDOC{title}: $T2H_NAME{This}"; + print $fh <<EOT; +<HTML> +$T2H_DOCTYPE +<!-- Created on $T2H_TODAY by $THISPROG --> +<!-- +$T2H_AUTHORS +--> +<HEAD> +<TITLE>$longtitle + + + + + + +$T2H_EXTRA_HEAD + + + +$T2H_AFTER_BODY_OPEN +EOT +} + +sub T2H_DEFAULT_print_page_foot +{ + my $fh = shift; + print $fh < + +This document was generated +$T2H_ADDRESS +using texi2html +$T2H_PRE_BODY_CLOSE + + +EOT +} + +################################################################### +# Layout of navigation panel + +# if this is set, then a vertical navigation panel is used +$T2H_VERTICAL_HEAD_NAVIGATION = 0; +sub T2H_DEFAULT_print_head_navigation +{ + my $fh = shift; + if ($T2H_VERTICAL_HEAD_NAVIGATION) + { + print $fh < + + +EOT + } + &$T2H_print_navigation($fh, $T2H_VERTICAL_HEAD_NAVIGATION); + if ($T2H_VERTICAL_HEAD_NAVIGATION) + { + print $fh < + +EOT + } + elsif ($T2H_SPLIT eq 'section') + { + print $fh "
    \n"; + } +} + +# Specifies the minimum page length required before a navigation panel +# is placed at the bottom of a page (the default is that of latex2html) +# T2H_THIS_WORDS_IN_PAGE holds number of words of current page +$T2H_WORDS_IN_PAGE = 300; +sub T2H_DEFAULT_print_foot_navigation +{ + my $fh = shift; + my $nwords = shift; + if ($T2H_VERTICAL_HEAD_NAVIGATION) + { + print $fh < + + +EOT + } + print $fh "
    \n"; + &$T2H_print_navigation($fh) if ($nwords >= $T2H_WORDS_IN_PAGE) +} + +###################################################################### +# navigation panel +# +# specify in this array which "buttons" should appear in which order +# in the navigation panel for sections; use ' ' for empty buttons (space) +@T2H_SECTION_BUTTONS = + ( + 'Back', 'Forward', ' ', 'FastBack', 'Up', 'FastForward', + ' ', ' ', ' ', ' ', + 'Top', 'Contents', 'Index', 'About', + ); + +# buttons for misc stuff +@T2H_MISC_BUTTONS = ('Top', 'Contents', 'Index', 'About'); + +# insert here name of icon images for buttons +# Icons are used, if $T2H_ICONS and resp. value are set +%T2H_ACTIVE_ICONS = + ( + 'Top', '', + 'Contents', '', + 'Overview', '', + 'Index', '', + 'Back', '', + 'FastBack', '', + 'Prev', '', + 'Up', '', + 'Next', '', + 'Forward', '', + 'FastForward', '', + 'About' , '', + 'First', '', + 'Last', '', + ' ', '' + ); + +# insert here name of icon images for these, if button is inactive +%T2H_PASSIVE_ICONS = + ( + 'Top', '', + 'Contents', '', + 'Overview', '', + 'Index', '', + 'Back', '', + 'FastBack', '', + 'Prev', '', + 'Up', '', + 'Next', '', + 'Forward', '', + 'FastForward', '', + 'About', '', + 'First', '', + 'Last', '', + ); + +# how to create IMG tag +sub T2H_DEFAULT_button_icon_img +{ + my $button = shift; + my $icon = shift; + my $name = shift; + return qq{$button: $name}; +} + +# Names of text as alternative for icons +%T2H_NAVIGATION_TEXT = + ( + 'Top', 'Top', + 'Contents', 'Contents', + 'Overview', 'Overview', + 'Index', 'Index', + ' ', '   ', + 'Back', ' < ', + 'FastBack', ' << ', + 'Prev', 'Prev', + 'Up', ' Up ', + 'Next', 'Next', + 'Forward', ' > ', + 'FastForward', ' >> ', + 'About', ' ? ', + 'First', ' |< ', + 'Last', ' >| ' + ); + +sub T2H_DEFAULT_print_navigation +{ + my $fh = shift; + my $vertical = shift; + my $spacing = 1; + print $fh "\n"; + + print $fh "" unless $vertical; + for $button (@$T2H_BUTTONS) + { + print $fh qq{\n} if $vertical; + print $fh qq{\n"; + print $fh "\n" if $vertical; + } + print $fh "" unless $vertical; + print $fh "
    }; + + if (ref($button) eq 'CODE') + { + &$button($fh, $vertical); + } + elsif ($button eq ' ') + { # handle space button + print $fh + $T2H_ICONS && $T2H_ACTIVE_ICONS{' '} ? + &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{' '}) : + $T2H_NAVIGATION_TEXT{' '}; + next; + } + elsif ($T2H_HREF{$button}) + { # button is active + print $fh + $T2H_ICONS && $T2H_ACTIVE_ICONS{$button} ? # use icon ? + t2h_anchor('', $T2H_HREF{$button}, # yes + &$T2H_button_icon_img($button, + $T2H_ACTIVE_ICONS{$button}, + $T2H_NAME{$button})) + : # use text + "[" . + t2h_anchor('', $T2H_HREF{$button}, $T2H_NAVIGATION_TEXT{$button}) . + "]"; + } + else + { # button is passive + print $fh + $T2H_ICONS && $T2H_PASSIVE_ICONS{$button} ? + &$T2H_button_icon_img($button, + $T2H_PASSIVE_ICONS{$button}, + $T2H_NAME{$button}) : + + "[" . $T2H_NAVIGATION_TEXT{$button} . "]"; + } + print $fh "
    \n"; +} + +###################################################################### +# Frames: this is from "Richard Y. Kim" +# Should be improved to be more conforming to other _print* functions + +sub T2H_DEFAULT_print_frame +{ + my $fh = shift; + print $fh < +$T2H_THISDOC{title} + + + + + +EOT +} + +sub T2H_DEFAULT_print_toc_frame +{ + my $fh = shift; + &$T2H_print_page_head($fh); + print $fh <Content
  • +EOT + print $fh map {s/HREF=/target=\"main\" HREF=/; $_;} @stoc_lines; + print $fh "\n"; +} + +###################################################################### +# About page +# + +# T2H_PRE_ABOUT might be a function +$T2H_PRE_ABOUT = <texi2html +

    +EOT +$T2H_AFTER_ABOUT = ''; + +sub T2H_DEFAULT_about_body +{ + my $about; + if (ref($T2H_PRE_ABOUT) eq 'CODE') + { + $about = &$T2H_PRE_ABOUT(); + } + else + { + $about = $T2H_PRE_ABOUT; + } + $about .= <

    + + + + + + + +EOT + + for $button (@T2H_SECTION_BUTTONS) + { + next if $button eq ' ' || ref($button) eq 'CODE'; + $about .= < + + + + +EOT + } + + $about .= < +

    +where the Example assumes that the current position +is at Subsubsection One-Two-Three of a document of +the following structure: +
      +
    • 1. Section One
    • +
        +
      • 1.1 Subsection One-One
      • +
          +
        • ...
        • +
        +
      • 1.2 Subsection One-Two
      • +
          +
        • 1.2.1 Subsubsection One-Two-One +
        • 1.2.2 Subsubsection One-Two-Two +
        • 1.2.3 Subsubsection One-Two-Three     +<== Current Position +
        • 1.2.4 Subsubsection One-Two-Four +
        +
      • 1.3 Subsection One-Three
      • +
          +
        • ...
        • +
        +
      • 1.4 Subsection One-Four
      • +
      +
    +$T2H_AFTER_ABOUT +EOT + return $about; +} + + +%T2H_BUTTONS_GOTO = + ( + 'Top', 'cover (top) of document', + 'Contents', 'table of contents', + 'Overview', 'short table of contents', + 'Index', 'concept index', + 'Back', 'previous section in reading order', + 'FastBack', 'previous or up-and-previous section ', + 'Prev', 'previous section same level', + 'Up', 'up section', + 'Next', 'next section same level', + 'Forward', 'next section in reading order', + 'FastForward', 'next or up-and-next section', + 'About' , 'this page', + 'First', 'first section in reading order', + 'Last', 'last section in reading order', + ); + +%T2H_BUTTONS_EXAMPLE = +( + 'Top', '   ', + 'Contents', '   ', + 'Overview', '   ', + 'Index', '   ', + 'Back', '1.2.2', + 'FastBack', '1.1', + 'Prev', '1.2.2', + 'Up', '1.2', + 'Next', '1.2.4', + 'Forward', '1.2.4', + 'FastForward', '1.3', + 'About', '   ', + 'First', '1.', + 'Last', '1.2.4', +); + + +###################################################################### +# from here on, its l2h init stuff +# + +## initialization for latex2html as for Singular manual generation +## obachman 3/99 + +# +# Options controlling Titles, File-Names, Tracing and Sectioning +# +$TITLE = ''; + +$SHORTEXTN = 0; + +$LONG_TITLES = 0; + +$DESTDIR = ''; # should be overwritten by cmd-line argument + +$NO_SUBDIR = 0;# should be overwritten by cmd-line argument + +$PREFIX = ''; # should be overwritten by cmd-line argument + +$AUTO_PREFIX = 0; # this is needed, so that prefix settings are used + +$AUTO_LINK = 0; + +$SPLIT = 0; + +$MAX_LINK_DEPTH = 0; + +$TMP = ''; # should be overwritten by cmd-line argument + +$DEBUG = 0; + +$VERBOSE = 1; + +# +# Options controlling Extensions and Special Features +# +$HTML_VERSION = "3.2"; + +$TEXDEFS = 1; # we absolutely need that + +$EXTERNAL_FILE = ''; + +$SCALABLE_FONTS = 1; + +$NO_SIMPLE_MATH = 1; + +$LOCAL_ICONS = 1; + +$SHORT_INDEX = 0; + +$NO_FOOTNODE = 1; + +$ADDRESS = ''; + +$INFO = ''; + +# +# Switches controlling Image Generation +# +$ASCII_MODE = 0; + +$NOLATEX = 0; + +$EXTERNAL_IMAGES = 0; + +$PS_IMAGES = 0; + +$NO_IMAGES = 0; + +$IMAGES_ONLY = 0; + +$REUSE = 2; + +$ANTI_ALIAS = 1; + +$ANTI_ALIAS_TEXT = 1; + +# +#Switches controlling Navigation Panels +# +$NO_NAVIGATION = 1; +$ADDRESS = ''; +$INFO = 0; # 0 = do not make a "About this document..." section + +# +#Switches for Linking to other documents +# +# actuall -- we don't care + +$MAX_SPLIT_DEPTH = 0; # Stop making separate files at this depth + +$MAX_LINK_DEPTH = 0; # Stop showing child nodes at this depth + +$NOLATEX = 0; # 1 = do not pass unknown environments to Latex + +$EXTERNAL_IMAGES = 0; # 1 = leave the images outside the document + +$ASCII_MODE = 0; # 1 = do not use any icons or internal images + +# 1 = use links to external postscript images rather than inlined bitmap +# images. +$PS_IMAGES = 0; +$SHOW_SECTION_NUMBERS = 0; + +### Other global variables ############################################### +$CHILDLINE = ""; + +# This is the line width measured in pixels and it is used to right justify +# equations and equation arrays; +$LINE_WIDTH = 500; + +# Used in conjunction with AUTO_NAVIGATION +$WORDS_IN_PAGE = 300; + +# Affects ONLY the way accents are processed +$default_language = 'english'; + +# The value of this variable determines how many words to use in each +# title that is added to the navigation panel (see below) +# +$WORDS_IN_NAVIGATION_PANEL_TITLES = 0; + +# This number will determine the size of the equations, special characters, +# and anything which will be converted into an inlined image +# *except* "image generating environments" such as "figure", "table" +# or "minipage". +# Effective values are those greater than 0. +# Sensible values are between 0.1 - 4. +$MATH_SCALE_FACTOR = 1.5; + +# This number will determine the size of +# image generating environments such as "figure", "table" or "minipage". +# Effective values are those greater than 0. +# Sensible values are between 0.1 - 4. +$FIGURE_SCALE_FACTOR = 1.6; + + +# If both of the following two variables are set then the "Up" button +# of the navigation panel in the first node/page of a converted document +# will point to $EXTERNAL_UP_LINK. $EXTERNAL_UP_TITLE should be set +# to some text which describes this external link. +$EXTERNAL_UP_LINK = ""; +$EXTERNAL_UP_TITLE = ""; + +# If this is set then the resulting HTML will look marginally better if viewed +# with Netscape. +$NETSCAPE_HTML = 1; + +# Valid paper sizes are "letter", "legal", "a4","a3","a2" and "a0" +# Paper sizes has no effect other than in the time it takes to create inlined +# images and in whether large images can be created at all ie +# - larger paper sizes *MAY* help with large image problems +# - smaller paper sizes are quicker to handle +$PAPERSIZE = "a4"; + +# Replace "english" with another language in order to tell LaTeX2HTML that you +# want some generated section titles (eg "Table of Contents" or "References") +# to appear in a different language. Currently only "english" and "french" +# is supported but it is very easy to add your own. See the example in the +# file "latex2html.config" +$TITLES_LANGUAGE = "english"; + +1; # This must be the last non-comment line + +# End File texi2html.init +###################################################################### + + +require "$ENV{T2H_HOME}/texi2html.init" + if ($0 =~ /\.pl$/ && + -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init"); + +#+++############################################################################ +# # +# Initialization # +# Pasted content of File $(srcdir)/MySimple.pm: Command-line processing # +# # +#---############################################################################ + +# leave this within comments, and keep the require statement +# This way, you can directly run texi2html.pl, if $ENV{T2H_HOME}/texi2html.init +# exists. + +# +package Getopt::MySimple; + +# Name: +# Getopt::MySimple. +# +# Documentation: +# POD-style (incomplete) documentation is in file MySimple.pod +# +# Tabs: +# 4 spaces || die. +# +# Author: +# Ron Savage rpsavage@ozemail.com.au. +# 1.00 19-Aug-97 Initial version. +# 1.10 13-Oct-97 Add arrays of switches (eg '=s@'). +# 1.20 3-Dec-97 Add 'Help' on a per-switch basis. +# 1.30 11-Dec-97 Change 'Help' to 'verbose'. Make all hash keys lowercase. +# 1.40 10-Nov-98 Change width of help report. Restructure tests. +# 1-Jul-00 Modifications for Texi2html + +# -------------------------------------------------------------------------- +# Locally modified by obachman (Display type instead of env, order by cmp) +# $Id: MySimple.pm,v 1.1 2000/07/03 08:44:13 obachman Exp $ + +# use strict; +# no strict 'refs'; + +use vars qw(@EXPORT @EXPORT_OK @ISA); +use vars qw($fieldWidth $opt $VERSION); + +use Exporter(); +use Getopt::Long; + +@ISA = qw(Exporter); +@EXPORT = qw(); +@EXPORT_OK = qw($opt); # An alias for $self -> {'opt'}. + +# -------------------------------------------------------------------------- + +$fieldWidth = 20; +$VERSION = '1.41'; + +# -------------------------------------------------------------------------- + +sub byOrder +{ + my($self) = @_; + + return uc($a) cmp (uc($b)); +} + +# -------------------------------------------------------------------------- + +sub dumpOptions +{ + my($self) = @_; + + print 'Option', ' ' x ($fieldWidth - length('Option') ), "Value\n"; + + for (sort byOrder keys(%{$self -> {'opt'} }) ) + { + print "-$_", ' ' x ($fieldWidth - (1 + length) ), "${$self->{'opt'} }{$_}\n"; + } + + print "\n"; + +} # End of dumpOptions. + +# -------------------------------------------------------------------------- +# Return: +# 0 -> Error. +# 1 -> Ok. + +sub getOptions +{ + push(@_, 0) if ($#_ == 2); # Default for $ignoreCase is 0. + push(@_, 1) if ($#_ == 3); # Default for $helpThenExit is 1. + + my($self, $default, $helpText, $versionText, + $helpThenExit, $versionThenExit, $ignoreCase) = @_; + + $helpThenExit = 1 unless (defined($helpThenExit)); + $versionThenExit = 1 unless (defined($versionThenExit)); + $ignoreCase = 0 unless (defined($ignoreCase)); + + $self -> {'default'} = $default; + $self -> {'helpText'} = $helpText; + $self -> {'versionText'} = $versionText; + $Getopt::Long::ignorecase = $ignoreCase; + + unless (defined($self -> {'default'}{'help'})) + { + $self -> {'default'}{'help'} = + { + type => ':i', + default => '', + linkage => sub {$self->helpOptions($_[1]); exit (0) if $helpThenExit;}, + verbose => "print help and exit" + }; + } + + unless (defined($self -> {'default'}{'version'})) + { + $self -> {'default'}{'version'} = + { + type => '', + default => '', + linkage => sub {print $self->{'versionText'}; exit (0) if versionTheExit;}, + verbose => "print version and exit" + }; + } + + for (keys(%{$self -> {'default'} }) ) + { + my $type = ${$self -> {'default'} }{$_}{'type'}; + push(@{$self -> {'type'} }, "$_$type"); + $self->{'opt'}->{$_} = ${$self -> {'default'} }{$_}{'linkage'} + if ${$self -> {'default'} }{$_}{'linkage'}; + } + + my($result) = &GetOptions($self -> {'opt'}, @{$self -> {'type'} }); + + return $result unless $result; + + for (keys(%{$self -> {'default'} }) ) + { + if (! defined(${$self -> {'opt'} }{$_})) #{ + { + ${$self -> {'opt'} }{$_} = ${$self -> {'default'} }{$_}{'default'}; + } + } + + $result; +} # End of getOptions. + +# -------------------------------------------------------------------------- + +sub helpOptions +{ + my($self) = shift; + my($noHelp) = shift; + $noHelp = 0 unless $noHelp; + my($optwidth, $typewidth, $defaultwidth, $maxlinewidth, $valind, $valwidth) + = (10, 5, 9, 78, 4, 11); + + print "$self->{'helpText'}" if ($self -> {'helpText'}); + + print ' Option', ' ' x ($optwidth - length('Option') -1 ), + 'Type', ' ' x ($typewidth - length('Type') + 1), + 'Default', ' ' x ($defaultwidth - length('Default') ), + "Description\n"; + + for (sort byOrder keys(%{$self -> {'default'} }) ) + { + my($line, $help, $option, $val); + $option = $_; + next if ${$self->{'default'} }{$_}{'noHelp'} && ${$self->{'default'} }{$_}{'noHelp'} > $noHelp; + $line = " -$_ " . ' ' x ($optwidth - (2 + length) ) . + "${$self->{'default'} }{$_}{'type'} ". + ' ' x ($typewidth - (1+length(${$self -> {'default'} }{$_}{'type'}) )); + + $val = ${$self->{'default'} }{$_}{'linkage'}; + if ($val) + { + if (ref($val) eq 'SCALAR') + { + $val = $$val; + } + else + { + $val = ''; + } + } + else + { + $val = ${$self->{'default'} }{$_}{'default'}; + } + $line .= "$val "; + $line .= ' ' x ($optwidth + $typewidth + $defaultwidth + 1 - length($line)); + + if (defined(${$self -> {'default'} }{$_}{'verbose'}) && + ${$self -> {'default'} }{$_}{'verbose'} ne '') + { + $help = "${$self->{'default'} }{$_}{'verbose'}"; + } + else + { + $help = ' '; + } + if ((length("$line") + length($help)) < $maxlinewidth) + { + print $line , $help, "\n"; + } + else + { + print $line, "\n", ' ' x $valind, $help, "\n"; + } + for $val (sort byOrder keys(%{${$self->{'default'}}{$option}{'values'}})) + { + print ' ' x ($valind + 2); + print $val, ' ', ' ' x ($valwidth - length($val) - 2); + print ${$self->{'default'}}{$option}{'values'}{$val}, "\n"; + } + } + + print <| ! no argument: variable is set to 1 on -foo (or, to 0 on -nofoo) + =s | :s mandatory (or, optional) string argument + =i | :i mandatory (or, optional) integer argument +EOT +} # End of helpOptions. + +#------------------------------------------------------------------- + +sub new +{ + my($class) = @_; + my($self) = {}; + $self -> {'default'} = {}; + $self -> {'helpText'} = ''; + $self -> {'opt'} = {}; + $opt = $self -> {'opt'}; # An alias for $self -> {'opt'}. + $self -> {'type'} = (); + + return bless $self, $class; + +} # End of new. + +# -------------------------------------------------------------------------- + +1; + +# End MySimple.pm + +require "$ENV{T2H_HOME}/MySimple.pm" + if ($0 =~ /\.pl$/ && + -e "$ENV{T2H_HOME}/texi2html.init" && -r "$ENV{T2H_HOME}/texi2html.init"); + +package main; + +#+++############################################################################ +# # +# Constants # +# # +#---############################################################################ + +$DEBUG_TOC = 1; +$DEBUG_INDEX = 2; +$DEBUG_BIB = 4; +$DEBUG_GLOSS = 8; +$DEBUG_DEF = 16; +$DEBUG_HTML = 32; +$DEBUG_USER = 64; +$DEBUG_L2H = 128; + + +$BIBRE = '\[[\w\/-]+\]'; # RE for a bibliography reference +$FILERE = '[\/\w.+-]+'; # RE for a file name +$VARRE = '[^\s\{\}]+'; # RE for a variable name +$NODERE = '[^,:]+'; # RE for a node name +$NODESRE = '[^:]+'; # RE for a list of node names + +$ERROR = "***"; # prefix for errors +$WARN = "**"; # prefix for warnings + + # program home page +$PROTECTTAG = "_ThisIsProtected_"; # tag to recognize protected sections + +$CHAPTEREND = "\n"; # to know where a chpater ends +$SECTIONEND = "\n"; # to know where section ends +$TOPEND = "\n"; # to know where top ends + + + +# +# pre-defined indices +# +$index_properties = +{ + 'c' => { name => 'cp'}, + 'f' => { name => 'fn', code => 1}, + 'v' => { name => 'vr', code => 1}, + 'k' => { name => 'ky', code => 1}, + 'p' => { name => 'pg', code => 1}, + 't' => { name => 'tp', code => 1} +}; + + +%predefined_index = ( + 'cp', 'c', + 'fn', 'f', + 'vr', 'v', + 'ky', 'k', + 'pg', 'p', + 'tp', 't', + ); + +# +# valid indices +# +%valid_index = ( + 'c', 1, + 'f', 1, + 'v', 1, + 'k', 1, + 'p', 1, + 't', 1, + ); + +# +# texinfo section names to level +# +%sec2level = ( + 'top', 0, + 'chapter', 1, + 'unnumbered', 1, + 'majorheading', 1, + 'chapheading', 1, + 'appendix', 1, + 'section', 2, + 'unnumberedsec', 2, + 'heading', 2, + 'appendixsec', 2, + 'appendixsection', 2, + 'subsection', 3, + 'unnumberedsubsec', 3, + 'subheading', 3, + 'appendixsubsec', 3, + 'subsubsection', 4, + 'unnumberedsubsubsec', 4, + 'subsubheading', 4, + 'appendixsubsubsec', 4, + ); + +# +# accent map, TeX command to ISO name +# +%accent_map = ( + '"', 'uml', + '~', 'tilde', + '^', 'circ', + '`', 'grave', + '\'', 'acute', + ); + +# +# texinfo "simple things" (@foo) to HTML ones +# +%simple_map = ( + # cf. makeinfo.c + "*", "
    ", # HTML+ + " ", " ", + "\t", " ", + "-", "­", # soft hyphen + "\n", "\n", + "|", "", + 'tab', '<\/TD>
    Button Name Go to From 1.2.3 go to
    +EOT + $about .= + ($T2H_ICONS && $T2H_ACTIVE_ICONS{$button} ? + &$T2H_button_icon_img($button, $T2H_ACTIVE_ICONS{$button}) : + " [" . $T2H_NAVIGATION_TEXT{$button} . "] "); + $about .= < + +$button + +$T2H_BUTTONS_GOTO{$button} + +$T2H_BUTTONS_EXAMPLE{$button} +
    ', + # spacing commands + ":", "", + "!", "!", + "?", "?", + ".", ".", + "-", "", + ); + +# +# texinfo "things" (@foo{}) to HTML ones +# +%things_map = ( + 'TeX', 'TeX', + 'br', '

    ', # paragraph break + 'bullet', '*', + 'copyright', '(C)', + 'dots', '...<\/small>', + 'enddots', '....<\/small>', + 'equiv', '==', + 'error', 'error-->', + 'expansion', '==>', + 'minus', '-', + 'point', '-!-', + 'print', '-|', + 'result', '=>', + 'today', $T2H_TODAY, + 'aa', 'å', + 'AA', 'Å', + 'ae', 'æ', + 'oe', 'œ', + 'AE', 'Æ', + 'OE', 'Œ', + 'o', 'ø', + 'O', 'Ø', + 'ss', 'ß', + 'l', '\/l', + 'L', '\/L', + 'exclamdown', '¡', + 'questiondown', '¿', + 'pounds', '£' + ); + +# +# texinfo styles (@foo{bar}) to HTML ones +# +%style_map = ( + 'acronym', '&do_acronym', + 'asis', '', + 'b', 'B', + 'cite', 'CITE', + 'code', 'CODE', + 'command', 'CODE', + 'ctrl', '&do_ctrl', # special case + 'dfn', 'EM', # DFN tag is illegal in the standard + 'dmn', '', # useless + 'email', '&do_email', # insert a clickable email address + 'emph', 'EM', + 'env', 'CODE', + 'file', '"TT', # will put quotes, cf. &apply_style + 'i', 'I', + 'kbd', 'KBD', + 'key', 'KBD', + 'math', '&do_math', + 'option', '"SAMP', # will put quotes, cf. &apply_style + 'r', '', # unsupported + 'samp', '"SAMP', # will put quotes, cf. &apply_style + 'sc', '&do_sc', # special case + 'strong', 'STRONG', + 't', 'TT', + 'titlefont', '', # useless + 'uref', '&do_uref', # insert a clickable URL + 'url', '&do_url', # insert a clickable URL + 'var', 'VAR', + 'w', '', # unsupported + 'H', '&do_accent', + 'dotaccent', '&do_accent', + 'ringaccent','&do_accent', + 'tieaccent', '&do_accent', + 'u','&do_accent', + 'ubaraccent','&do_accent', + 'udotaccent','&do_accent', + 'v', '&do_accent', + ',', '&do_accent', + 'dotless', '&do_accent' + ); + +# +# texinfo format (@foo/@end foo) to HTML ones +# +%format_map = ( + 'quotation', 'BLOCKQUOTE', + # lists + 'itemize', 'UL', + 'enumerate', 'OL', + # poorly supported + 'flushleft', 'PRE', + 'flushright', 'PRE', + ); + +# +# an eval of these $complex_format_map->{what}->[0] yields beginning +# an eval of these $complex_format_map->{what}->[1] yieleds end +$complex_format_map = +{ + example => + [ + q{"$T2H_EXAMPLE_INDENT_CELL
    "},
    +  q{'
    '} + ], + smallexample => + [ + q{"$T2H_SMALL_EXAMPLE_INDENT_CELL
    "},
    +  q{'
    '} + ], + display => + [ + q{"$T2H_EXAMPLE_INDENT_CELL
    '},
    +  q{'
    '} + ], + smalldisplay => + [ + q{"$T2H_SMALL_EXAMPLE_INDENT_CELL
    '},
    +  q{'
    '} + ] +}; + +$complex_format_map->{lisp} = $complex_format_map->{example}; +$complex_format_map->{smalllisp} = $complex_format_map->{smallexample}; +$complex_format_map->{format} = $complex_format_map->{display}; +$complex_format_map->{smallformat} = $complex_format_map->{smalldisplay}; + +# +# texinfo definition shortcuts to real ones +# +%def_map = ( + # basic commands + 'deffn', 0, + 'defvr', 0, + 'deftypefn', 0, + 'deftypevr', 0, + 'defcv', 0, + 'defop', 0, + 'deftp', 0, + # basic x commands + 'deffnx', 0, + 'defvrx', 0, + 'deftypefnx', 0, + 'deftypevrx', 0, + 'defcvx', 0, + 'defopx', 0, + 'deftpx', 0, + # shortcuts + 'defun', 'deffn Function', + 'defmac', 'deffn Macro', + 'defspec', 'deffn {Special Form}', + 'defvar', 'defvr Variable', + 'defopt', 'defvr {User Option}', + 'deftypefun', 'deftypefn Function', + 'deftypevar', 'deftypevr Variable', + 'defivar', 'defcv {Instance Variable}', + 'deftypeivar', 'defcv {Instance Variable}', # NEW: FIXME + 'defmethod', 'defop Method', + 'deftypemethod', 'defop Method', # NEW:FIXME + # x shortcuts + 'defunx', 'deffnx Function', + 'defmacx', 'deffnx Macro', + 'defspecx', 'deffnx {Special Form}', + 'defvarx', 'defvrx Variable', + 'defoptx', 'defvrx {User Option}', + 'deftypefunx', 'deftypefnx Function', + 'deftypevarx', 'deftypevrx Variable', + 'defivarx', 'defcvx {Instance Variable}', + 'defmethodx', 'defopx Method', + ); + +# +# things to skip +# +%to_skip = ( + # comments + 'c', 1, + 'comment', 1, + 'ifnotinfo', 1, + 'ifnottex', 1, + 'ifhtml', 1, + 'end ifhtml', 1, + 'end ifnotinfo', 1, + 'end ifnottex', 1, + # useless + 'detailmenu', 1, + 'direntry', 1, + 'contents', 1, + 'shortcontents', 1, + 'summarycontents', 1, + 'footnotestyle', 1, + 'end ifclear', 1, + 'end ifset', 1, + 'titlepage', 1, + 'end titlepage', 1, + # unsupported commands (formatting) + 'afourpaper', 1, + 'cropmarks', 1, + 'finalout', 1, + 'headings', 1, + 'sp', 1, + 'need', 1, + 'page', 1, + 'setchapternewpage', 1, + 'everyheading', 1, + 'everyfooting', 1, + 'evenheading', 1, + 'evenfooting', 1, + 'oddheading', 1, + 'oddfooting', 1, + 'smallbook', 1, + 'vskip', 1, + 'filbreak', 1, + 'paragraphindent', 1, + # unsupported formats + 'cartouche', 1, + 'end cartouche', 1, + 'group', 1, + 'end group', 1, + ); + +#+++############################################################################ +# # +# Argument parsing, initialisation # +# # +#---############################################################################ + +# +# flush stdout and stderr after every write +# +select(STDERR); +$| = 1; +select(STDOUT); +$| = 1; + + +%value = (); # hold texinfo variables, see also -D +$use_bibliography = 1; +$use_acc = 1; + +# +# called on -init-file +sub LoadInitFile +{ + my $init_file = shift; + # second argument is value of options + $init_file = shift; + if (-f $init_file) + { + print "# reading initialization file from $init_file\n" + if ($T2H_VERBOSE); + require($init_file); + } + else + { + print "$ERROR Error: can't read init file $int_file\n"; + $init_file = ''; + } +} + +# +# called on -lang +sub SetDocumentLanguage +{ + my $lang = shift; + if (! exists($T2H_WORDS->{$lang})) + { + warn "$ERROR: Language specs for '$lang' do not exists. Reverting to '" . + ($T2H_LANG ? T2H_LANG : "en") . "'\n"; + } + else + { + print "# using '$lang' as document language\n" if ($T2H_VERBOSE); + $T2H_LANG = $lang; + } +} + +## +## obsolete cmd line options +## +$T2H_OBSOLETE_OPTIONS -> {'no-section_navigation'} = +{ + type => '!', + linkage => sub {$main::T2H_SECTION_NAVIGATION = 0;}, + verbose => 'obsolete, use -nosec_nav', + noHelp => 2, +}; +$T2H_OBSOLETE_OPTIONS -> {use_acc} = +{ + type => '!', + linkage => \$use_acc, + verbose => 'obsolete', + noHelp => 2 +}; +$T2H_OBSOLETE_OPTIONS -> {expandinfo} = +{ + type => '!', + linkage => sub {$main::T2H_EXPAND = 'info';}, + verbose => 'obsolete, use "-expand info" instead', + noHelp => 2, +}; +$T2H_OBSOLETE_OPTIONS -> {expandtex} = +{ + type => '!', + linkage => sub {$main::T2H_EXPAND = 'tex';}, + verbose => 'obsolete, use "-expand tex" instead', + noHelp => 2, +}; +$T2H_OBSOLETE_OPTIONS -> {monolithic} = +{ + type => '!', + linkage => sub {$main::T2H_SPLIT = '';}, + verbose => 'obsolete, use "-split no" instead', + noHelp => 2 +}; +$T2H_OBSOLETE_OPTIONS -> {split_node} = +{ + type => '!', + linkage => sub{$main::T2H_SPLIT = 'section';}, + verbose => 'obsolete, use "-split section" instead', + noHelp => 2, +}; +$T2H_OBSOLETE_OPTIONS -> {split_chapter} = +{ + type => '!', + linkage => sub{$main::T2H_SPLIT = 'chapter';}, + verbose => 'obsolete, use "-split chapter" instead', + noHelp => 2, +}; +$T2H_OBSOLETE_OPTIONS -> {no_verbose} = +{ + type => '!', + linkage => sub {$main::T2H_VERBOSE = 0;}, + verbose => 'obsolete, use -noverbose instead', + noHelp => 2, +}; +$T2H_OBSOLETE_OPTIONS -> {output_file} = +{ + type => '=s', + linkage => sub {$main::T2H_OUT = @_[1]; $T2H_SPLIT = '';}, + verbose => 'obsolete, use -out_file instead', + noHelp => 2 +}; + +$T2H_OBSOLETE_OPTIONS -> {section_navigation} = +{ + type => '!', + linkage => \$T2H_SECTION_NAVIGATION, + verbose => 'obsolete, use -sec_nav instead', + noHelp => 2, +}; + +$T2H_OBSOLETE_OPTIONS -> {verbose} = +{ + type => '!', + linkage => \$T2H_VERBOSE, + verbose => 'obsolete, use -Verbose instead', + noHelp => 2 +}; + +# read initialzation from $sysconfdir/texi2htmlrc or $HOME/.texi2htmlrc +my $home = $ENV{HOME}; +defined($home) or $home = ''; +foreach $i ('/usr/local/etc/texi2htmlrc', "$home/.texi2htmlrc") { + if (-f $i) { + print "# reading initialization file from $i\n" + if ($T2H_VERBOSE); + require($i); + } +} + + +#+++############################################################################ +# # +# parse command-line options +# # +#---############################################################################ +$T2H_USAGE_TEXT = <getOptions($T2H_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n")) +{ + print $Configure_failed if $Configure_failed; + die $T2H_FAILURE_TEXT; +} + +if (@ARGV > 1) +{ + eval {Getopt::Long::Configure("no_pass_through");}; + if (! $options->getOptions($T2H_OBSOLETE_OPTIONS, $T2H_USAGE_TEXT, "$THISVERSION\n")) + { + print $Configure_failed if $Configure_failed; + die $T2H_FAILURE_TEXT; + } +} + +if ($T2H_CHECK) { + die "Need file to check\n$T2H_FAILURE_TEXT" unless @ARGV > 0; + ✓ + exit; +} + +#+++############################################################################ +# # +# evaluation of cmd line options +# # +#---############################################################################ + +if ($T2H_EXPAND eq 'info') +{ + $to_skip{'ifinfo'} = 1; + $to_skip{'end ifinfo'} = 1; +} +elsif ($T2H_EXPAND eq 'tex') +{ + $to_skip{'iftex'} = 1; + $to_skip{'end iftex'} = 1; + +} + +$T2H_INVISIBLE_MARK = '' if $T2H_INVISIBLE_MARK eq 'xbm'; + +# +# file name buisness +# +die "Need exactly one file to translate\n$T2H_FAILURE_TEXT" unless @ARGV == 1; +$docu = shift(@ARGV); +if ($docu =~ /.*\//) { + chop($docu_dir = $&); + $docu_name = $'; +} else { + $docu_dir = '.'; + $docu_name = $docu; +} +unshift(@T2H_INCLUDE_DIRS, $docu_dir); +$docu_name =~ s/\.te?x(i|info)?$//; # basename of the document +$docu_name = $T2H_PREFIX if ($T2H_PREFIX); + +# subdir +if ($T2H_SUBDIR && ! $T2H_OUT) +{ + $T2H_SUBDIR =~ s|/*$||; + unless (-d "$T2H_SUBDIR" && -w "$T2H_SUBDIR") + { + if ( mkdir($T2H_SUBDIR, oct(755))) + { + print "# created directory $T2H_SUBDIR\n" if ($T2H_VERBOSE); + } + else + { + warn "$ERROR can't create directory $T2H_SUBDIR. Put results into current directory\n"; + $T2H_SUBDIR = ''; + } + } +} + +if ($T2H_SUBDIR && ! $T2H_OUT) +{ + $docu_rdir = "$T2H_SUBDIR/"; + print "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE); +} +else +{ + if ($T2H_OUT && $T2H_OUT =~ m|(.*)/|) + { + $docu_rdir = "$1/"; + print "# putting result files into directory $docu_rdir\n" if ($T2H_VERBOSE); + } + else + { + print "# putting result files into current directory \n" if ($T2H_VERBOSE); + $docu_rdir = ''; + } +} + +# extension +if ($T2H_SHORTEXTN) +{ + $docu_ext = "htm"; +} +else +{ + $docu_ext = "html"; +} +if ($T2H_TOP_FILE =~ /\..*$/) +{ + $T2H_TOP_FILE = $`.".$docu_ext"; +} + +# result files +if (! $T2H_OUT && ($T2H_SPLIT =~ /section/i || $T2H_SPLIT =~ /node/i)) +{ + $T2H_SPLIT = 'section'; +} +elsif (! $T2H_OUT && $T2H_SPLIT =~ /chapter/i) +{ + $T2H_SPLIT = 'chapter' +} +else +{ + undef $T2H_SPLIT; +} + +$docu_doc = "$docu_name.$docu_ext"; # document's contents +$docu_doc_file = "$docu_rdir$docu_doc"; +if ($T2H_SPLIT) +{ + $docu_toc = $T2H_TOC_FILE || "${docu_name}_toc.$docu_ext"; # document's table of contents + $docu_stoc = "${docu_name}_ovr.$docu_ext"; # document's short toc + $docu_foot = "${docu_name}_fot.$docu_ext"; # document's footnotes + $docu_about = "${docu_name}_abt.$docu_ext"; # about this document + $docu_top = $T2H_TOP_FILE || $docu_doc; +} +else +{ + if ($T2H_OUT) + { + $docu_doc = $T2H_OUT; + $docu_doc =~ s|.*/||; + } + $docu_toc = $docu_foot = $docu_stoc = $docu_about = $docu_top = $docu_doc; +} + +$docu_toc_file = "$docu_rdir$docu_toc"; +$docu_stoc_file = "$docu_rdir$docu_stoc"; +$docu_foot_file = "$docu_rdir$docu_foot"; +$docu_about_file = "$docu_rdir$docu_about"; +$docu_top_file = "$docu_rdir$docu_top"; + +$docu_frame_file = "$docu_rdir${docu_name}_frame.$docu_ext"; +$docu_toc_frame_file = "$docu_rdir${docu_name}_toc_frame.$docu_ext"; + +# +# variables +# +$value{'html'} = 1; # predefine html (the output format) +$value{'texi2html'} = $THISVERSION; # predefine texi2html (the translator) +# _foo: internal to track @foo +foreach ('_author', '_title', '_subtitle', + '_settitle', '_setfilename', '_shorttitle') { + $value{$_} = ''; # prevent -w warnings +} +%node2sec = (); # node to section name +%sec2node = (); # section to node name +%sec2number = (); # section to number +%number2sec = (); # number to section +%idx2node = (); # index keys to node +%node2href = (); # node to HREF +%node2next = (); # node to next +%node2prev = (); # node to prev +%node2up = (); # node to up +%bib2href = (); # bibliography reference to HREF +%gloss2href = (); # glossary term to HREF +@sections = (); # list of sections +%tag2pro = (); # protected sections + +# +# initial indexes +# +$bib_num = 0; +$foot_num = 0; +$gloss_num = 0; +$idx_num = 0; +$sec_num = 0; +$doc_num = 0; +$html_num = 0; + +# +# can I use ISO8879 characters? (HTML+) +# +if ($T2H_USE_ISO) { + $things_map{'bullet'} = "•"; + $things_map{'copyright'} = "©"; + $things_map{'dots'} = "…"; + $things_map{'equiv'} = "≡"; + $things_map{'expansion'} = "→"; + $things_map{'point'} = "∗"; + $things_map{'result'} = "⇒"; +} + +# +# read texi2html extensions (if any) +# +$extensions = 'texi2html.ext'; # extensions in working directory +if (-f $extensions) { + print "# reading extensions from $extensions\n" if $T2H_VERBOSE; + require($extensions); +} +($progdir = $0) =~ s/[^\/]+$//; +if ($progdir && ($progdir ne './')) { + $extensions = "${progdir}texi2html.ext"; # extensions in texi2html directory + if (-f $extensions) { + print "# reading extensions from $extensions\n" if $T2H_VERBOSE; + require($extensions); + } +} + + +print "# reading from $docu\n" if $T2H_VERBOSE; + +######################################################################### +# +# latex2html stuff +# +# latex2html conversions consist of three stages: +# 1) ToLatex: Put "latex" code into a latex file +# 2) ToHtml: Use latex2html to generate corresponding html code and images +# 3) FromHtml: Extract generated code and images from latex2html run +# + +########################## +# default settings +# + +# defaults for files and names + +sub l2h_Init +{ + local($root) = @_; + + return 0 unless ($root); + + $l2h_name = "${root}_l2h"; + + $l2h_latex_file = "$docu_rdir${l2h_name}.tex"; + $l2h_cache_file = "${docu_rdir}l2h_cache.pm"; + $T2H_L2H_L2H = "latex2html" unless ($T2H_L2H_L2H); + + # destination dir -- generated images are put there, should be the same + # as dir of enclosing html document -- + $l2h_html_file = "$docu_rdir${l2h_name}.html"; + $l2h_prefix = "${l2h_name}_"; + return 1; +} + + +########################## +# +# First stage: Generation of Latex file +# Initialize with: l2h_InitToLatex +# Add content with: l2h_ToLatex($text) --> HTML placeholder comment +# Finish with: l2h_FinishToLatex +# + +$l2h_latex_preample = <$l2h_latex_file")) + { + warn "$ERROR Error l2h: Can't open latex file '$latex_file' for writing\n"; + return 0; + } + print "# l2h: use ${l2h_latex_file} as latex file\n" if ($T2H_VERBOSE); + print L2H_LATEX $l2h_latex_preample; + } + # open database for caching + l2h_InitCache(); + $l2h_latex_count = 0; + $l2h_to_latex_count = 0; + $l2h_cached_count = 0; + return 1; +} + +# print text (1st arg) into latex file (if not already there), return +# HTML commentary which can be later on replaced by the latex2html +# generated text +sub l2h_ToLatex +{ + my($text) = @_; + my($count); + + $l2h_to_latex_count++; + $text =~ s/(\s*)$//; + + # try whether we can cache it + my $cached_text = l2h_FromCache($text); + if ($cached_text) + { + $l2h_cached_count++; + return $cached_text; + } + + # try whether we have text already on things to do + unless ($count = $l2h_to_latex{$text}) + { + $count = $l2h_latex_count; + $l2h_latex_count++; + $l2h_to_latex{$text} = $count; + $l2h_to_latex[$count] = $text; + unless ($T2H_L2H_SKIP) + { + print L2H_LATEX "\\begin{rawhtml}\n"; + print L2H_LATEX "\n"; + print L2H_LATEX "\\end{rawhtml}\n"; + + print L2H_LATEX "$text\n"; + + print L2H_LATEX "\\begin{rawhtml}\n"; + print L2H_LATEX "\n"; + print L2H_LATEX "\\end{rawhtml}\n"; + } + } + return ""; +} + +# print closing into latex file and close it +sub l2h_FinishToLatex +{ + local ($reused); + + $reused = $l2h_to_latex_count - $l2h_latex_count - $l2h_cached_count; + unless ($T2H_L2H_SKIP) + { + print L2H_LATEX $l2h_latex_closing; + close(L2H_LATEX); + } + print "# l2h: finished to latex ($l2h_cached_count cached, $reused reused, $l2h_latex_count contents)\n" if ($T2H_VERBOSE); + unless ($l2h_latex_count) + { + l2h_Finish(); + return 0; + } + return 1; +} + +################################### +# Second stage: Use latex2html to generate corresponding html code and images +# +# l2h_ToHtml([$l2h_latex_file, [$l2h_html_dir]]): +# Call latex2html on $l2h_latex_file +# Put images (prefixed with $l2h_name."_") and html file(s) in $l2h_html_dir +# Return 1, on success +# 0, otherwise +# +sub l2h_ToHtml +{ + local($call, $ext, $root, $dotbug); + + if ($T2H_L2H_SKIP) + { + print "# l2h: skipping latex2html run\n" if ($T2H_VERBOSE); + return 1; + } + + # Check for dot in directory where dvips will work + if ($T2H_L2H_TMP) + { + if ($T2H_L2H_TMP =~ /\./) + { + warn "$ERROR Warning l2h: l2h_tmp dir contains a dot. Use /tmp, instead\n"; + $dotbug = 1; + } + } + else + { + if (&getcwd =~ /\./) + { + warn "$ERROR Warning l2h: current dir contains a dot. Use /tmp as l2h_tmp dir \n"; + $dotbug = 1; + } + } + # fix it, if necessary and hope that it works + $T2H_L2H_TMP = "/tmp" if ($dotbug); + + $call = $T2H_L2H_L2H; + # use init file, if specified + $call = $call . " -init_file " . $init_file if ($init_file && -f $init_file); + # set output dir + $call .= ($docu_rdir ? " -dir $docu_rdir" : " -no_subdir"); + # use l2h_tmp, if specified + $call = $call . " -tmp $T2H_L2H_TMP" if ($T2H_L2H_TMP); + # options we want to be sure of + $call = $call ." -address 0 -info 0 -split 0 -no_navigation -no_auto_link"; + $call = $call ." -prefix ${l2h_prefix} $l2h_latex_file"; + + print "# l2h: executing '$call'\n" if ($T2H_VERBOSE); + if (system($call)) + { + warn "l2h ***Error: '${call}' did not succeed\n"; + return 0; + } + else + { + print "# l2h: latex2html finished successfully\n" if ($T2H_VERBOSE); + return 1; + } +} + +# this is directly pasted over from latex2html +sub getcwd { + local($_) = `pwd`; + + die "'pwd' failed (out of memory?)\n" + unless length; + chop; + $_; +} + + +########################## +# Third stage: Extract generated contents from latex2html run +# Initialize with: l2h_InitFromHtml +# open $l2h_html_file for reading +# reads in contents into array indexed by numbers +# return 1, on success -- 0, otherwise +# Extract Html code with: l2h_FromHtml($text) +# replaces in $text all previosuly inserted comments by generated html code +# returns (possibly changed) $text +# Finish with: l2h_FinishFromHtml +# closes $l2h_html_dir/$l2h_name.".$docu_ext" + +sub l2h_InitFromHtml +{ + local($h_line, $h_content, $count, %l2h_img); + + if (! open(L2H_HTML, "<${l2h_html_file}")) + { + print "$ERROR Error l2h: Can't open ${l2h_html_file} for reading\n"; + return 0; + } + print "# l2h: use ${l2h_html_file} as html file\n" if ($T2H_VERBOSE); + + $l2h_html_count = 0; + + while ($h_line = ) + { + if ($h_line =~ /^/) + { + $count = $1; + $h_content = ""; + while ($h_line = ) + { + if ($h_line =~ /^/) + { + chomp $h_content; + chomp $h_content; + $l2h_html_count++; + $h_content = l2h_ToCache($count, $h_content); + $l2h_from_html[$count] = $h_content; + $h_content = ''; + last; + } + $h_content = $h_content.$h_line; + } + if ($hcontent) + { + print "$ERROR Warning l2h: l2h_end $l2h_name $count not found\n" + if ($T2H_VERBOSE); + close(L2H_HTML); + return 0; + } + } + } + print "# l2h: Got $l2h_html_count of $l2h_latex_count html contents\n" + if ($T2H_VERBOSE); + + close(L2H_HTML); + return 1; +} + +sub l2h_FromHtml +{ + local($text) = @_; + local($done, $to_do, $count); + + $to_do = $text; + + while ($to_do =~ /([^\000]*)([^\000]*)/) + { + $to_do = $1; + $count = $2; + $done = $3.$done; + + $done = "".$done + if ($T2H_DEBUG & $DEBUG_L2H); + + $done = &l2h_ExtractFromHtml($count) . $done; + + $done = "".$done + if ($T2H_DEBUG & $DEBUG_L2H); + } + return $to_do.$done; +} + + +sub l2h_ExtractFromHtml +{ + local($count) = @_; + + return $l2h_from_html[$count] if ($l2h_from_html[$count]); + + if ($count >= 0 && $count < $l2h_latex_count) + { + # now we are in trouble + local($l_l2h, $_); + + $l2h_extract_error++; + print "$ERROR l2h: can't extract content $count from html\n" + if ($T2H_VERBOSE); + # try simple (ordinary) substition (without l2h) + $l_l2h = $T2H_L2H; + $T2H_L2H = 0; + $_ = $l2h_to_latex{$count}; + $_ = &substitute_style($_); + &unprotect_texi; + $_ = "" . $_ + if ($T2H_DEBUG & $DEBUG_L2H); + $T2H_L2H = $l_l2h; + return $_; + } + else + { + # now we have been incorrectly called + $l2h_range_error++; + print "$ERROR l2h: Request of $count content which is out of valide range [0,$l2h_latex_count)\n"; + return "" + if ($T2H_DEBUG & $DEBUG_L2H); + return ""; + } +} + +sub l2h_FinishFromHtml +{ + if ($T2H_VERBOSE) + { + if ($l2h_extract_error + $l2h_range_error) + { + print "# l2h: finished from html ($l2h_extract_error extract and $l2h_range_error errors)\n"; + } + else + { + print "# l2h: finished from html (no errors)\n"; + } + } +} + +sub l2h_Finish +{ + l2h_StoreCache(); + if ($T2H_L2H_CLEAN) + { + print "# l2h: removing temporary files generated by l2h extension\n" + if $T2H_VERBOSE; + while (<"$docu_rdir$l2h_name"*>) + { + unlink $_; + } + } + print "# l2h: Finished\n" if $T2H_VERBOSE; + return 1; +} + +############################## +# stuff for l2h caching +# + +# I tried doing this with a dbm data base, but it did not store all +# keys/values. Hence, I did as latex2html does it +sub l2h_InitCache +{ + if (-r "$l2h_cache_file") + { + my $rdo = do "$l2h_cache_file"; + warn("$ERROR l2h Error: could not load $docu_rdir$l2h_cache_file: $@\n") + unless ($rdo); + } +} + +sub l2h_StoreCache +{ + return unless $l2h_latex_count; + + my ($key, $value); + open(FH, ">$l2h_cache_file") || return warn"$ERROR l2h Error: could not open $docu_rdir$l2h_cache_file for writing: $!\n"; + + + while (($key, $value) = each %l2h_cache) + { + # escape stuff + $key =~ s|/|\\/|g; + $key =~ s|\\\\/|\\/|g; + # weird, a \ at the end of the key results in an error + # maybe this also broke the dbm database stuff + $key =~ s|\\$|\\\\|; + $value =~ s/\|/\\\|/g; + $value =~ s/\\\\\|/\\\|/g; + $value =~ s|\\\\|\\\\\\\\|g; + print FH "\n\$l2h_cache_key = q/$key/;\n"; + print FH "\$l2h_cache{\$l2h_cache_key} = q|$value|;\n"; + } + print FH "1;"; + close(FH); +} + +# return cached html, if it exists for text, and if all pictures +# are there, as well +sub l2h_FromCache +{ + my $text = shift; + my $cached = $l2h_cache{$text}; + if ($cached) + { + while ($cached =~ m/SRC="(.*?)"/g) + { + unless (-e "$docu_rdir$1") + { + return undef; + } + } + return $cached; + } + return undef; +} + +# insert generated html into cache, move away images, +# return transformed html +$maximage = 1; +sub l2h_ToCache +{ + my $count = shift; + my $content = shift; + my @images = ($content =~ /SRC="(.*?)"/g); + my ($src, $dest); + + for $src (@images) + { + $dest = $l2h_img{$src}; + unless ($dest) + { + my $ext; + if ($src =~ /.*\.(.*)$/ && $1 ne $docu_ext) + { + $ext = $1; + } + else + { + warn "$ERROR: L2h image $src has invalid extension\n"; + next; + } + while (-e "$docu_rdir${docu_name}_$maximage.$ext") { $maximage++;} + $dest = "${docu_name}_$maximage.$ext"; + system("cp -f $docu_rdir$src $docu_rdir$dest"); + $l2h_img{$src} = $dest; + unlink "$docu_rdir$src" unless ($DEBUG & DEBUG_L2H); + } + $content =~ s/$src/$dest/g; + } + $l2h_cache{$l2h_to_latex[$count]} = $content; + return $content; +} + + +#+++############################################################################ +# # +# Pass 1: read source, handle command, variable, simple substitution # +# # +#---############################################################################ + +@lines = (); # whole document +@toc_lines = (); # table of contents +@stoc_lines = (); # table of contents +$curlevel = 0; # current level in TOC +$node = ''; # current node name +$node_next = ''; # current node next name +$node_prev = ''; # current node prev name +$node_up = ''; # current node up name +$in_table = 0; # am I inside a table +$table_type = ''; # type of table ('', 'f', 'v', 'multi') +@tables = (); # nested table support +$in_bibliography = 0; # am I inside a bibliography +$in_glossary = 0; # am I inside a glossary +$in_top = 0; # am I inside the top node +$has_top = 0; # did I see a top node? +$has_top_command = 0; # did I see @top for automatic pointers? +$in_pre = 0; # am I inside a preformatted section +$in_list = 0; # am I inside a list +$in_html = 0; # am I inside an HTML section +$first_line = 1; # is it the first line +$dont_html = 0; # don't protect HTML on this line +$deferred_ref = ''; # deferred reference for indexes +@html_stack = (); # HTML elements stack +$html_element = ''; # current HTML element +&html_reset; +%macros = (); # macros + +# init l2h +$T2H_L2H = &l2h_Init($docu_name) if ($T2H_L2H); +$T2H_L2H = &l2h_InitToLatex if ($T2H_L2H); + +# build code for simple substitutions +# the maps used (%simple_map and %things_map) MUST be aware of this +# watch out for regexps, / and escaped characters! +$subst_code = ''; +foreach (keys(%simple_map)) { + ($re = $_) =~ s/(\W)/\\$1/g; # protect regexp chars + $subst_code .= "s/\\\@$re/$simple_map{$_}/g;\n"; +} +foreach (keys(%things_map)) { + $subst_code .= "s/\\\@$_\\{\\}/$things_map{$_}/g;\n"; +} +if ($use_acc) { + # accentuated characters + foreach (keys(%accent_map)) { + if ($_ eq "`") { + $subst_code .= "s/$;3"; + } elsif ($_ eq "'") { + $subst_code .= "s/$;4"; + } else { + $subst_code .= "s/\\\@\\$_"; + } + $subst_code .= "([a-z])/&\${1}$accent_map{$_};/gi;\n"; + } +} +eval("sub simple_substitutions { $subst_code }"); + +&init_input; +INPUT_LINE: while ($_ = &next_line) { + # + # remove \input on the first lines only + # + if ($first_line) { + next if /^\\input/; + $first_line = 0; + } + # non-@ substitutions cf. texinfmt.el + # + # parse texinfo tags + # + $tag = ''; + $end_tag = ''; + if (/^\s*\@end\s+(\w+)\b/) { + $end_tag = $1; + } elsif (/^\s*\@(\w+)\b/) { + $tag = $1; + } + # + # handle @html / @end html + # + if ($in_html) { + if ($end_tag eq 'html') { + $in_html = 0; + } else { + $tag2pro{$in_html} .= $_; + } + next; + } elsif ($tag eq 'html') { + $in_html = $PROTECTTAG . ++$html_num; + push(@lines, $in_html); + next; + } + + # + # try to remove inlined comments + # syntax from tex-mode.el comment-start-skip + # + s/((^|[^\@])(\@\@)*)\@c(omment | |\{|$).*/$1/; + +# Sometimes I use @c right at the end of a line ( to suppress the line feed ) +# s/((^|[^\@])(\@\@)*)\@c(omment)?$/$1/; +# s/((^|[^\@])(\@\@)*)\@c(omment)? .*/$1/; +# s/(.*)\@c{.*?}(.*)/$1$2/; +# s/(.*)\@comment{.*?}(.*)/$1$2/; +# s/^(.*)\@c /$1/; +# s/^(.*)\@comment /$1/; + + ############################################################# + # value substitution before macro expansion, so that + # it works in macro arguments + s/\@value{($VARRE)}/$value{$1}/eg; + + ############################################################# + # macro substitution + while (/\@(\w+)/g) + { + if (exists($macros->{$1})) + { + my $before = $`; + my $name = $1; + my $after = $'; + my @args; + my $args; + if ($after =~ /^\s*{(.*?[^\\])}(.*)/) + { + $args = $1; + $after = $2; + } + elsif (@{$macros->{$name}->{Args}} == 1) + { + $args = $after; + $args =~ s/^\s*//; + $args =~ s/\s*$//; + $after = ''; + } + $args =~ s|\\\\|\\|g; + $args =~ s|\\{|{|g; + $args =~ s|\\}|}|g; + if (@{$macros->{$name}->{Args}} > 1) + { + $args =~ s/(^|[^\\]),/$1$;/g ; + $args =~ s|\\,|,|g; + @args = split(/$;\s*/, $args) if (@{$macros->{$name}->{Args}} > 1); + } + else + { + $args =~ s|\\,|,|g; + @args = ($args); + } + my $macrobody = $macros->{$name}->{Body}; + for ($i=0; $i<=$#args; $i++) + { + $macrobody =~ s|\\$macros->{$name}->{Args}->[$i]\\|$args[$i]|g; + } + $macrobody =~ s|\\\\|\\|g; + $_ = $before . $macrobody . $after; + unshift @input_spool, map {$_ = $_."\n"} split(/\n/, $_); + next INPUT_LINE; + } + } # + + + # + # try to skip the line + # + if ($end_tag) { + $in_titlepage = 0 if $end_tag eq 'titlepage'; + next if $to_skip{"end $end_tag"}; + } elsif ($tag) { + $in_titlepage = 1 if $tag eq 'titlepage'; + next if $to_skip{$tag}; + last if $tag eq 'bye'; + } + if ($in_top) { + # parsing the top node + if ($tag eq 'node' || + ($sec2level{$tag} && $tag !~ /unnumbered/ && $tag !~ /heading/)) + { + # no more in top + $in_top = 0; + push(@lines, $TOPEND); + } + } + unless ($in_pre) { + s/``/\"/g; + s/''/\"/g; + s/([\w ])---([\w ])/$1--$2/g; + } + # + # analyze the tag + # + if ($tag) { + # skip lines + &skip_until($tag), next if $tag eq 'ignore'; + &skip_until($tag), next if $tag eq 'ifnothtml'; + if ($tag eq 'ifinfo') + { + &skip_until($tag), next unless $T2H_EXPAND eq 'info'; + } + if ($tag eq 'iftex') + { + &skip_until($tag), next unless $T2H_EXPAND eq 'tex'; + } + if ($tag eq 'tex') + { + # add to latex2html file + if ($T2H_EXPAND eq 'tex' && $T2H_L2H && ! $in_pre) + { + # add space to the end -- tex(i2dvi) does this, as well + push(@lines, &l2h_ToLatex(&string_until($tag) . " ")); + } + else + { + &skip_until($tag); + } + next; + } + if ($tag eq 'titlepage') + { + next; + } + # handle special tables + if ($tag =~ /^(|f|v|multi)table$/) { + $table_type = $1; + $tag = 'table'; + } + # special cases + if ($tag eq 'top' || ($tag eq 'node' && /^\@node\s+top\s*,/i)) { + $in_top = 1; + $has_top = 1; + $has_top_command = 1 if $tag eq 'top'; + @lines = (); # ignore all lines before top (title page garbage) + next; + } elsif ($tag eq 'node') { + if ($in_top) + { + $in_top = 0; + push(@lines, $TOPEND); + } + warn "$ERROR Bad node line: $_" unless $_ =~ /^\@node\s$NODESRE$/o; + # request of "Richard Y. Kim" + s/^\@node\s+//; + $_ = &protect_html($_); # if node contains '&' for instance + ($node, $node_next, $node_prev, $node_up) = split(/,/); + &normalise_node($node); + &normalise_node($node_next); + &normalise_node($node_prev); + &normalise_node($node_up); + $node =~ /\"/ ? + push @lines, &html_debug("\n", __LINE__) : + push @lines, &html_debug("\n", __LINE__); + next; + } elsif ($tag eq 'include') { + if (/^\@include\s+($FILERE)\s*$/o) { + $file = LocateIncludeFile($1); + if ($file && -e $file) { + &open($file); + print "# including $file\n" if $T2H_VERBOSE; + } else { + warn "$ERROR Can't find $1, skipping"; + } + } else { + warn "$ERROR Bad include line: $_"; + } + next; + } elsif ($tag eq 'ifclear') { + if (/^\@ifclear\s+($VARRE)\s*$/o) { + next unless defined($value{$1}); + &skip_until($tag); + } else { + warn "$ERROR Bad ifclear line: $_"; + } + next; + } elsif ($tag eq 'ifset') { + if (/^\@ifset\s+($VARRE)\s*$/o) { + next if defined($value{$1}); + &skip_until($tag); + } else { + warn "$ERROR Bad ifset line: $_"; + } + next; + } elsif ($tag eq 'menu') { + unless ($T2H_SHOW_MENU) { + &skip_until($tag); + next; + } + &html_push_if($tag); + push(@lines, &html_debug('', __LINE__)); + } elsif ($format_map{$tag}) { + $in_pre = 1 if $format_map{$tag} eq 'PRE'; + &html_push_if($format_map{$tag}); + push(@lines, &html_debug('', __LINE__)); + $in_list++ if $format_map{$tag} eq 'UL' || $format_map{$tag} eq 'OL' ; +# push(@lines, &debug("

    \n", __LINE__)) +# if $tag =~ /example/i; + # sunshine@sunshineco.com:
    bla
    looks better than + #
    \nbla
    (at least on NeXTstep browser + push(@lines, &debug("<$format_map{$tag}>" . + ($in_pre ? '' : "\n"), __LINE__)); + next; + } + elsif (exists $complex_format_map->{$tag}) + { + my $start = eval $complex_format_map->{$tag}->[0]; + if ($@) + { + print "$ERROR: eval of complex_format_map->{$tag}->[0] $complex_format_map->{$tag}->[0]: $@"; + $start = '
    '
    +	  }
    +	  $in_pre = 1 if $start =~ /
    \n", __LINE__));
    +		    &html_push_if('TABLE');
    +		} else {
    +		    push(@lines, &debug("
    \n", __LINE__)); + &html_push_if('DL'); + } + push(@lines, &html_debug('', __LINE__)); + } else { + warn "$ERROR Bad table line: $_"; + } + next; + } + elsif ($tag eq 'synindex' || $tag eq 'syncodeindex') + { + if (/^\@$tag\s+(\w+)\s+(\w+)\s*$/) + { + my $from = $1; + my $to = $2; + my $prefix_from = IndexName2Prefix($from); + my $prefix_to = IndexName2Prefix($to); + + warn("$ERROR unknown from index name $from ind syn*index line: $_"), next + unless $prefix_from; + warn("$ERROR unknown to index name $to ind syn*index line: $_"), next + unless $prefix_to; + + if ($tag eq 'syncodeindex') + { + $index_properties->{$prefix_to}->{'from_code'}->{$prefix_from} = 1; + } + else + { + $index_properties->{$prefix_to}->{'from'}->{$prefix_from} = 1; + } + } + else + { + warn "$ERROR Bad syn*index line: $_"; + } + next; + } + elsif ($tag eq 'defindex' || $tag eq 'defcodeindex') + { + if (/^\@$tag\s+(\w+)\s*$/) + { + my $name = $1; + $index_properties->{$name}->{name} = $name; + $index_properties->{$name}->{code} = 1 if $tag eq 'defcodeindex'; + } + else + { + warn "$ERROR Bad defindex line: $_"; + } + next; + } + elsif (/^\@printindex/) + { + push (@lines, "$_"); + next; + } + elsif ($tag eq 'sp') { + push(@lines, &debug("

    \n", __LINE__)); + next; + } elsif ($tag eq 'center') { + push(@lines, &debug("

    \n", __LINE__)); + s/\@center//; + } elsif ($tag eq 'setref') { + &protect_html; # if setref contains '&' for instance + if (/^\@$tag\s*{($NODERE)}\s*$/) { + $setref = $1; + $setref =~ s/\s+/ /g; # normalize + $setref =~ s/ $//; + $node2sec{$setref} = $name; + $sec2node{$name} = $setref; + $node2href{$setref} = "$docu_doc#$docid"; + } else { + warn "$ERROR Bad setref line: $_"; + } + next; + } elsif ($tag eq 'lowersections') { + local ($sec, $level); + while (($sec, $level) = each %sec2level) { + $sec2level{$sec} = $level + 1; + } + next; + } elsif ($tag eq 'raisesections') { + local ($sec, $level); + while (($sec, $level) = each %sec2level) { + $sec2level{$sec} = $level - 1; + } + next; + } + elsif ($tag eq 'macro' || $tag eq 'rmacro') + { + if (/^\@$tag\s*(\w+)\s*(.*)/) + { + my $name = $1; + my @args; + @args = split(/\s*,\s*/ , $1) + if ($2 =~ /^\s*{(.*)}\s*/); + + $macros->{$name}->{Args} = \@args; + $macros->{$name}->{Body} = ''; + while (($_ = &next_line) && $_ !~ /\@end $tag/) + { + $macros->{$name}->{Body} .= $_; + } + die "ERROR: No closing '\@end $tag' found for macro definition of '$name'\n" + unless (/\@end $tag/); + chomp $macros->{$name}->{Body}; + } + else + { + warn "$ERROR: Bad macro defintion $_" + } + next; + } + elsif ($tag eq 'unmacro') + { + delete $macros->{$1} if (/^\@unmacro\s*(\w+)/); + next; + } + elsif ($tag eq 'documentlanguage') + { + SetDocumentLanguage($1) if (!$T2H_LANG && /documentlanguage\s*(\w+)/); + } + elsif (defined($def_map{$tag})) { + if ($def_map{$tag}) { + s/^\@$tag\s+//; + $tag = $def_map{$tag}; + $_ = "\@$tag $_"; + $tag =~ s/\s.*//; + } + } elsif (defined($user_sub{$tag})) { + s/^\@$tag\s+//; + $sub = $user_sub{$tag}; + print "# user $tag = $sub, arg: $_" if $T2H_DEBUG & $DEBUG_USER; + if (defined(&$sub)) { + chop($_); + &$sub($_); + } else { + warn "$ERROR Bad user sub for $tag: $sub\n"; + } + next; + } + if (defined($def_map{$tag})) { + s/^\@$tag\s+//; + if ($tag =~ /x$/) { + # extra definition line + $tag = $`; + $is_extra = 1; + } else { + $is_extra = 0; + } + while (/\{([^\{\}]*)\}/) { + # this is a {} construct + ($before, $contents, $after) = ($`, $1, $'); + # protect spaces + $contents =~ s/\s+/$;9/g; + # restore $_ protecting {} + $_ = "$before$;7$contents$;8$after"; + } + @args = split(/\s+/, &protect_html($_)); + foreach (@args) { + s/$;9/ /g; # unprotect spaces + s/$;7/\{/g; # ... { + s/$;8/\}/g; # ... } + } + $type = shift(@args); + $type =~ s/^\{(.*)\}$/$1/; + print "# def ($tag): {$type} ", join(', ', @args), "\n" + if $T2H_DEBUG & $DEBUG_DEF; + $type .= ':'; # it's nicer like this + my $name = shift(@args); + $name =~ s/^\{(.*)\}$/$1/; + if ($is_extra) { + $_ = &debug("
    ", __LINE__); + } else { + $_ = &debug("
    \n
    ", __LINE__); + } + if ($tag eq 'deffn' || $tag eq 'defvr' || $tag eq 'deftp') { + $_ .= "$type $name"; + $_ .= " @args" if @args; + } elsif ($tag eq 'deftypefn' || $tag eq 'deftypevr' + || $tag eq 'defcv' || $tag eq 'defop') { + $ftype = $name; + $name = shift(@args); + $name =~ s/^\{(.*)\}$/$1/; + $_ .= "$type $ftype $name"; + $_ .= " @args" if @args; + } else { + warn "$ERROR Unknown definition type: $tag\n"; + $_ .= "$type $name"; + $_ .= " @args" if @args; + } + $_ .= &debug("\n
    ", __LINE__); + $name = &unprotect_html($name); + if ($tag eq 'deffn' || $tag eq 'deftypefn') { + EnterIndexEntry('f', $name, $docu_doc, $section, \@lines); +# unshift(@input_spool, "\@findex $name\n"); + } elsif ($tag eq 'defop') { + EnterIndexEntry('f', "$name on $ftype", $docu_doc, $section, \@lines); +# unshift(@input_spool, "\@findex $name on $ftype\n"); + } elsif ($tag eq 'defvr' || $tag eq 'deftypevr' || $tag eq 'defcv') { + EnterIndexEntry('v', $name, $docu_doc, $section, \@lines); +# unshift(@input_spool, "\@vindex $name\n"); + } else { + EnterIndexEntry('t', $name, $docu_doc, $section, \@lines); +# unshift(@input_spool, "\@tindex $name\n"); + } + $dont_html = 1; + } + } elsif ($end_tag) { + if ($format_map{$end_tag}) { + $in_pre = 0 if $format_map{$end_tag} eq 'PRE'; + $in_list-- if $format_map{$end_tag} eq 'UL' || $format_map{$end_tag} eq 'OL' ; + &html_pop_if('P'); + &html_pop_if('LI'); + &html_pop_if(); + push(@lines, &debug("\n", __LINE__)); + push(@lines, &html_debug('', __LINE__)); + } + elsif (exists $complex_format_map->{$end_tag}) + { + my $end = eval $complex_format_map->{$end_tag}->[1]; + if ($@) + { + print "$ERROR: eval of complex_format_map->{$end_tag}->[1] $complex_format_map->{$end_tag}->[0]: $@"; + $end = '
    ' + } + $in_pre = 0 if $end =~ m|
    |; + push(@lines, html_debug($end, __LINE__)); + } elsif ($end_tag =~ /^(|f|v|multi)table$/) { + unless (@tables) { + warn "$ERROR \@end $end_tag without \@*table\n"; + next; + } + &html_pop_if('P'); + ($table_type, $in_table) = split($;, shift(@tables)); + unless ($1 eq $table_type) { + warn "$ERROR \@end $end_tag without matching \@$end_tag\n"; + next; + } + if ($table_type eq "multi") { + push(@lines, "
    \n"); + &html_pop_if('TR'); + } else { + push(@lines, "\n"); + &html_pop_if('DD'); + } + &html_pop_if(); + if (@tables) { + ($table_type, $in_table) = split($;, $tables[0]); + } else { + $in_table = 0; + } + } elsif (defined($def_map{$end_tag})) { + push(@lines, &debug("\n", __LINE__)); + } elsif ($end_tag eq 'menu') { + &html_pop_if(); + push(@lines, $_); # must keep it for pass 2 + } + next; + } + ############################################################# + # anchor insertion + while (/\@anchor\s*\{(.*?)\}/) + { + $_ = $`.$'; + my $anchor = $1; + $anchor = &normalise_node($anchor); + push @lines, &html_debug("\n"); + $node2href{$anchor} = "$docu_doc#$anchor"; + next INPUT_LINE if $_ =~ /^\s*$/; + } + + ############################################################# + # index entry generation, after value substitutions + if (/^\@(\w+?)index\s+/) + { + EnterIndexEntry($1, $', $docu_doc, $section, \@lines); + next; + } + # + # protect texi and HTML things + &protect_texi; + $_ = &protect_html($_) unless $dont_html; + $dont_html = 0; + # substitution (unsupported things) + s/^\@exdent\s+//g; + s/\@noindent\s+//g; + s/\@refill\s+//g; + # other substitutions + &simple_substitutions; + s/\@footnote\{/\@footnote$docu_doc\{/g; # mark footnotes, cf. pass 4 + # + # analyze the tag again + # + if ($tag) { + if (defined($sec2level{$tag}) && $sec2level{$tag} > 0) { + if (/^\@$tag\s+(.+)$/) { + $name = $1; + $name = &normalise_node($name); + $level = $sec2level{$tag}; + # check for index + $first_index_chapter = $node + if ($level == 1 && !$first_index_chapter && + $name =~ /index/i); + if ($in_top && /heading/){ + $T2H_HAS_TOP_HEADING = 1; + $_ = &debug("$name\n", __LINE__); + &html_push_if('body'); + print "# top heading, section $name, level $level\n" + if $T2H_DEBUG & $DEBUG_TOC; + } + else + { + unless (/^\@\w*heading/) + { + unless (/^\@unnumbered/) + { + my $number = &update_sec_num($tag, $level); + $name = $number. ' ' . $name if $T2H_NUMBER_SECTIONS; + $sec2number{$name} = $number; + $number2sec{$number} = $name; + } + if (defined($toplevel)) + { + push @lines, ($level==$toplevel ? $CHAPTEREND : $SECTIONEND); + } + else + { + # first time we see a "section" + unless ($level == 1) + { + warn "$WARN The first section found is not of level 1: $_"; + } + $toplevel = $level; + } + push(@sections, $name); + next_doc() if ($T2H_SPLIT eq 'section' || + $T2H_SPLIT && $level == $toplevel); + } + $sec_num++; + $docid = "SEC$sec_num"; + $tocid = (/^\@\w*heading/ ? undef : "TOC$sec_num"); + # check biblio and glossary + $in_bibliography = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*bibliography$/i); + $in_glossary = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*glossary$/i); + # check node + if ($node) + { + warn "$ERROR Duplicate node found: $node\n" + if ($node2sec{$node}); + } + else + { + $name .= ' ' while ($node2sec{$name}); + $node = $name; + } + $name .= ' ' while ($sec2node{$name}); + $section = $name; + $node2sec{$node} = $name; + $sec2node{$name} = $node; + $node2href{$node} = "$docu_doc#$docid"; + $node2next{$node} = $node_next; + $node2prev{$node} = $node_prev; + $node2up{$node} = $node_up; + print "# node $node, section $name, level $level\n" + if $T2H_DEBUG & $DEBUG_TOC; + + $node = ''; + $node_next = ''; + $node_prev = ''; + $node_next = ''; + if ($tocid) + { + # update TOC + while ($level > $curlevel) { + $curlevel++; + push(@toc_lines, "
      \n"); + } + while ($level < $curlevel) { + $curlevel--; + push(@toc_lines, "
    \n"); + } + $_ = &t2h_anchor($tocid, "$docu_doc#$docid", $name, 1); + $_ = &substitute_style($_); + push(@stoc_lines, "$_
    \n") if ($level == 1); + if ($T2H_NUMBER_SECTIONS) + { + push(@toc_lines, $_ . "
    \n") + } + else + { + push(@toc_lines, "
  • " . $_ ."
  • "); + } + } + else + { + push(@lines, &html_debug("\n", + __LINE__)); + } + # update DOC + push(@lines, &html_debug('', __LINE__)); + &html_reset; + $_ = " $name \n\n"; + $_ = &debug($_, __LINE__); + push(@lines, &html_debug('', __LINE__)); + } + # update DOC + foreach $line (split(/\n+/, $_)) { + push(@lines, "$line\n"); + } + next; + } else { + warn "$ERROR Bad section line: $_"; + } + } else { + # track variables + $value{$1} = Unprotect_texi($2), next if /^\@set\s+($VARRE)\s+(.*)$/o; + delete $value{$1}, next if /^\@clear\s+($VARRE)\s*$/o; + # store things + $value{'_shorttitle'} = Unprotect_texi($1), next if /^\@shorttitle\s+(.*)$/; + $value{'_setfilename'} = Unprotect_texi($1), next if /^\@setfilename\s+(.*)$/; + $value{'_settitle'} = Unprotect_texi($1), next if /^\@settitle\s+(.*)$/; + $value{'_author'} .= Unprotect_texi($1)."\n", next if /^\@author\s+(.*)$/; + $value{'_subtitle'} .= Unprotect_texi($1)."\n", next if /^\@subtitle\s+(.*)$/; + $value{'_title'} .= Unprotect_texi($1)."\n", next if /^\@title\s+(.*)$/; + + # list item + if (/^\s*\@itemx?\s+/) { + $what = $'; + $what =~ s/\s+$//; + if ($in_bibliography && $use_bibliography) { + if ($what =~ /^$BIBRE$/o) { + $id = 'BIB' . ++$bib_num; + $bib2href{$what} = "$docu_doc#$id"; + print "# found bibliography for '$what' id $id\n" + if $T2H_DEBUG & $DEBUG_BIB; + $what = &t2h_anchor($id, '', $what); + } + } elsif ($in_glossary && $T2H_USE_GLOSSARY) { + $id = 'GLOSS' . ++$gloss_num; + $entry = $what; + $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/; + $gloss2href{$entry} = "$docu_doc#$id"; + print "# found glossary for '$entry' id $id\n" + if $T2H_DEBUG & $DEBUG_GLOSS; + $what = &t2h_anchor($id, '', $what); + } + elsif ($in_table && ($table_type eq 'f' || $table_type eq 'v')) + { + EnterIndexEntry($table_type, $what, $docu_doc, $section, \@lines); + } + &html_pop_if('P'); + if ($html_element eq 'DL' || $html_element eq 'DD') { + if ($things_map{$in_table} && !$what) { + # special case to allow @table @bullet for instance + push(@lines, &debug("

    < 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�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" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "directory stack empty" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "directory stack index" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by ‘dirs’, starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by ‘dirs’, starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The ‘dirs’ builtin displays the directory stack." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by ‘dirs’, starting with zero. For example: ‘popd " +"+0’\n" +" \tremoves the first directory, ‘popd +1’ the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by ‘dirs’, starting with zero. For example: ‘popd " +"-0’\n" +" \tremoves the last directory, ‘popd -1’ the next to last.\n" +" \n" +" The ‘dirs’ builtin displays the directory stack." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: invalid timeout specification" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "read error: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "can only ‘return’ from a function or sourced script" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "cannot simultaneously unset a function and a variable" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: not an array variable" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: not a function" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: cannot export" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "shift count" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "cannot set and unset shell options simultaneously" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: invalid shell option name" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "filename argument required" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: file not found" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "cannot suspend" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "cannot suspend a login shell" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s is aliased to ‘%s’\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s is a shell keyword\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s is a function\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s is a special shell builtin\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s is a shell builtin\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s is %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s is hashed (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: invalid limit argument" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "‘%c’: bad command" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: cannot get limit: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "limit" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: cannot modify limit: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "octal number" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "‘%c’: invalid symbolic mode operator" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "‘%c’: invalid symbolic mode character" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " line " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "last command: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Aborting..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:462 +msgid "unknown command error" +msgstr "unknown command error" + +#: error.c:463 +msgid "bad command type" +msgstr "bad command type" + +#: error.c:464 +msgid "bad connector" +msgstr "bad connector" + +#: error.c:465 +msgid "bad jump" +msgstr "bad jump" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: unbound variable" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\atimed out waiting for input: auto-logout\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "cannot redirect standard input from /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: ‘%c’: invalid format character" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] still exists" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "pipe error" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: maximum eval nesting level exceeded (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: maximum source nesting level exceeded (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: maximum function nesting level exceeded (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restricted: cannot specify ‘/’ in command names" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: command not found" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: bad interpreter" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: cannot execute binary file: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "‘%s’: is a special builtin" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "cannot duplicate fd %d to fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "expression recursion level exceeded" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "recursion stack underflow" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "syntax error in expression" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "attempted assignment to non-variable" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "syntax error in variable assignment" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "division by 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "bug: bad expassign token" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "‘:’ expected for conditional expression" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "exponent less than 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "identifier expected after pre-increment or pre-decrement" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "missing ‘)’" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "syntax error: operand expected" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntax error: invalid arithmetic operator" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (error token is “%sâ€)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "invalid arithmetic base" + +#: expr.c:1582 +msgid "invalid integer constant" +msgstr "invalid integer constant" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "value too great for base" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: expression error\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: cannot access parent directories" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "cannot reset nodelay mode for fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "cannot allocate new file descriptor for bash input from fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: buffer already exists for new fd %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "forked pid %d appears in running job %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "deleting stopped job %d with process group %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) marked as still alive" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: no such pid" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Done" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Stopped" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Stopped(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Running" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Done(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Exit %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Unknown status" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(core dumped) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "child setpgid (%ld to %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld is not a child of this shell" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: No record of process %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: job %d is stopped" + +#: jobs.c:3564 +#, c-format +msgid "%s: no current jobs" +msgstr "%s: no current jobs" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: job has terminated" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: job %d already in background" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: turning on WNOHANG to avoid indefinite block" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: line %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (core dumped)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd now: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp failed" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: no job control in background" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "cannot set terminal process group (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "no job control in this shell" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: failed assertion: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "unknown" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: block on free list clobbered" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: called with already freed block argument" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: called with unallocated block argument" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: underflow detected; mh_nbytes out of range" + +#: lib/malloc/malloc.c:1001 +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: underflow detected; magic8 corrupted" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: start and end chunk sizes differ" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: called with unallocated block argument" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: underflow detected; mh_nbytes out of range" + +#: lib/malloc/malloc.c:1141 +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: underflow detected; magic8 corrupted" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: start and end chunk sizes differ" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: alloc table is full with FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p already in table as allocated?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p already in table as free?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "invalid base" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: host unknown" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: invalid service" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: bad network path specification" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "network operations not supported" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: cannot change locale (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: cannot change locale (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: cannot change locale (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: cannot change locale (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "You have mail in $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "You have new mail in $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "The mail in %s has been read\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "syntax error: arithmetic expression required" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "syntax error: ‘;’ unexpected" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntax error: ‘((%s))’" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: bad instruction type %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: redirection instruction ‘%d’ out of range" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "maximum here-document count exceeded" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "unexpected EOF while looking for matching ‘%c’" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "unexpected EOF while looking for ‘]]’" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntax error in conditional expression: unexpected token ‘%s’" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "syntax error in conditional expression" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "unexpected token ‘%s’, expected ‘)’" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "expected ‘)’" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "unexpected argument ‘%s’ to conditional unary operator" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "unexpected argument to conditional unary operator" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "unexpected token ‘%s’, conditional binary operator expected" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "conditional binary operator expected" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "unexpected argument ‘%s’ to conditional binary operator" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "unexpected argument to conditional binary operator" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "unexpected token ‘%c’ in conditional command" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "unexpected token ‘%s’ in conditional command" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "unexpected token %d in conditional command" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntax error near unexpected token ‘%s’" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntax error near ‘%s’" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "syntax error: unexpected end of file" + +#: parse.y:6365 +msgid "syntax error" +msgstr "syntax error" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use “%s†to leave the shell.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "unexpected EOF while looking for matching ‘)’" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: function ‘%s’ not found" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: possible retry loop" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: bad connector ‘%d’" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: invalid file descriptor" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: NULL file pointer" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: ‘%c’: invalid format character" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "file descriptor out of range" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: ambiguous redirect" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: cannot overwrite existing file" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricted: cannot redirect output" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "cannot create temp file for here-document: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: cannot assign fd to variable" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port not supported without networking" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "redirection error: cannot duplicate fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "could not find /tmp, please create!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp must be a valid directory name" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "pretty-printing mode ignored in interactive shells" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: invalid option" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "cannot set uid to %d: effective uid %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "cannot set gid to %d: effective gid %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "cannot start debugger; debugging mode disabled" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: Is a directory" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "I have no name!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, version %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU long options:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Shell options:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s or -o option\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Type ‘%s -c “help set‒ for more information about shell " +"options.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Type ‘%s -c help’ for more information about shell builtin commands.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Use the ‘bashbug’ command to report bugs.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "bash home page: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "General help using GNU software: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: invalid operation" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Bogus signal" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Hangup" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Interrupt" + +#: siglist.c:58 +msgid "Quit" +msgstr "Quit" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Illegal instruction" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ABORT instruction" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT instruction" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Floating point exception" + +#: siglist.c:86 +msgid "Killed" +msgstr "Killed" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Bus error" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Segmentation fault" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Bad system call" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Broken pipe" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Alarm clock" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Terminated" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Urgent IO condition" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Stopped (signal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Continue" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Child death or stop" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Stopped (tty input)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Stopped (tty output)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O ready" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU limit" + +#: siglist.c:154 +msgid "File limit" +msgstr "File limit" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarm (virtual)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarm (profile)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Window changed" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Record lock" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "User signal 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "User signal 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT input data pending" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "power failure imminent" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "system crash imminent" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "migrate process to another CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "programming error" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT monitor mode granted" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT monitor mode retracted" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT sound sequence has completed" + +#: siglist.c:214 +msgid "Information request" +msgstr "Information request" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Unknown Signal #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "bad substitution: no closing ‘%s’ in %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: cannot assign list to array member" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "cannot make pipe for process substitution" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "cannot make child for process substitution" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "cannot open named pipe %s for reading" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "cannot open named pipe %s for writing" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "cannot duplicate named pipe %s as fd %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "command substitution: ignored null byte in input" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "cannot make pipe for command substitution" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "cannot make child for command substitution" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: cannot duplicate pipe as fd 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: invalid variable name for name reference" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: invalid indirect expansion" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: invalid variable name" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter not set" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter null or not set" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expression < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: bad substitution" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: cannot assign in this way" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "bad substitution: no closing “`†in %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "no match: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "argument expected" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: integer expression expected" + +#: test.c:265 +msgid "`)' expected" +msgstr "‘)’ expected" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "‘)’ expected, found %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: binary operator expected" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: unary operator expected" + +#: test.c:881 +msgid "missing `]'" +msgstr "missing ‘]’" + +#: test.c:899 +#, c-format +msgid "syntax error: `%s' unexpected" +msgstr "syntax error: ‘%s’ unexpected" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "invalid signal number" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "trap handler: maximum trap handler level exceeded (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: bad value in trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: bad signal %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "error importing function definition for ‘%s’" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "shell level (%d) too high, resetting to 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: no function context at current scope" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: variable may not be assigned value" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: assigning integer to name reference" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: no function context at current scope" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s has null exportstr" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "invalid character %d in exportstr for %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "no ‘=’ in exportstr for %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: head of shell_variables not a function context" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: no global_variables context" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: head of shell_variables not a temporary environment scope" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: cannot open as FILE" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: invalid value for trace file descriptor" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: compatibility value out of range" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2020 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"License GPLv3+: GNU GPL version 3 or later \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, version %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "This is free software; you are free to change and redistribute it." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "There is NO WARRANTY, to the extent permitted by law." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: cannot allocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: cannot allocate %lu bytes" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: cannot allocate %lu bytes" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [name[=value] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] name [name ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [dir]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg ...]" + +#: builtins.c:78 +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" + +#: builtins.c:80 +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [option] name[=value] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f filename] [name ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +msgid "getopts optstring name [arg ...]" +msgstr "getopts optstring name [arg ...]" + +#: builtins.c:98 +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [job_spec ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p pathname] [-dt] [name ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [pattern ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [name ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [name[=value] ...] or export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [name[=value] ...] or readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source filename [arguments]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". filename [arguments]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signal_spec ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] name [name ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mode]" + +#: builtins.c:177 +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [-p var] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAME [in WORDS ... ;] do COMMANDS; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMMANDS; do COMMANDS; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMMANDS; do COMMANDS; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAME] command [redirections]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function name { COMMANDS ; } or name () { COMMANDS ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ COMMANDS ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( expression ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ expression ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Names and meanings of some shell variables" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [optname ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [arguments]" + +#: builtins.c:231 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" + +#: builtins.c:235 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o option] [-DEI] [name ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Define or display aliases.\n" +" \n" +" Without arguments, ‘alias’ prints the list of aliases in the " +"reusable\n" +" form ‘alias NAME=VALUE’ on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '“\\C-x\\C-râ€: re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns “$line $filenameâ€. With EXPR, returns\n" +" “$line $subroutine $filenameâ€; this extra information can be used " +"to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option ‘cdable_vars’ " +"is set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of ‘..’\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of ‘..’\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if ‘-L’ were " +"specified.\n" +" ‘..’ is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, ‘pwd’ behaves as if ‘-L’ were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the ‘type’ " +"builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." + +#: builtins.c:490 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the ‘integer’ attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the ‘trace’ attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using ‘+’ instead of ‘-’ turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the ‘let’ command) performed when the variable is assigned a " +"value.\n" +" \n" +" When used in a function, ‘declare’ makes NAMEs local, as with the " +"‘local’\n" +" command. The ‘-g’ option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Set variable values and attributes.\n" +" \n" +" A synonym for ‘declare’. See ‘help declare’." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by ‘declare’.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" ‘echo’ interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix ‘special’ builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the ‘test’ found in $PATH instead of the shell builtin\n" +" version, type ‘enable -n test’.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." + +#: builtins.c:652 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ‘:’ into NAME " +"and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places ‘?’ " +"into\n" +" NAME and unsets OPTARG. If a required argument is not found, a ‘?" +"[0m’\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option ‘execfail’ is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the ‘fc -s [pat=rep ...] [command]’ format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing ‘r " +"cc’\n" +" runs the last command beginning with ‘cc’ and typing ‘r’ re-" +"executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with ‘&’. If JOB_SPEC is not present, the " +"shell's notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a ‘*’. An argument of N lists only the last N " +"entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow ‘-l’ they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see ‘readonly’.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of ‘--’ disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of ‘--’ disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its ‘sticky’ bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the “test†builtin, but the last argument " +"must\n" +" be a literal ‘]’, to match the opening ‘[’." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or ‘-’, each specified signal is reset to its " +"original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with “kill -signal $$â€.\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe ‘-p’ option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if ‘type -t NAME’ would not return ‘file’\n" +" -t\toutput a single word which is one of ‘alias’, " +"‘keyword’,\n" +" \t\t‘function’, ‘builtin’, ‘file’ or ‘’, if NAME " +"is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." + +#: builtins.c:1431 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the ‘soft’ resource limit\n" +" -H\tuse the ‘hard’ resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (‘nice’)\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values ‘soft’, ‘hard’, and ‘unlimited’ " +"stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." + +#: builtins.c:1502 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Execute commands for each member in a list.\n" +" \n" +" The ‘for’ loop executes a sequence of commands for each member in " +"a\n" +" list of items. If ‘in WORDS ...;’ is not present, then ‘in “" +"$@‒ is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If ‘in WORDS’ is not present, ‘in “" +"$@‒\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" ‘|’ is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Execute commands based on conditional.\n" +" \n" +" The ‘if COMMANDS’ list is executed. If its exit status is zero, " +"then the\n" +" ‘then COMMANDS’ list is executed. Otherwise, each ‘elif " +"COMMANDS’ list is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" ‘then COMMANDS’ list is executed and the if command completes. " +"Otherwise,\n" +" the ‘else COMMANDS’ list is executed, if present. The exit status " +"of the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" ‘while’ COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" ‘until’ COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is “COPROCâ€.\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the ‘fg’ command. Resume " +"a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a ‘&’ places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to ‘bg’.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." + +#: builtins.c:1726 +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to ‘let “EXPRESSION‒.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the ‘test’ builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the ‘==’ and ‘!=’ operators are used, the string to the " +"right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the ‘=~’ operator is used, the string to the right of the " +"operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to ‘cd’.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t‘time’ reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of ‘exact’ means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of ‘substring’ means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually ‘!’. The second is\n" +" \t\tthe ‘quick substitution’ character, usually ‘^’. The\n" +" \t\tthird is the ‘history comment’ character, usually ‘#’.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by ‘dirs’, starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by ‘dirs’, starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The ‘dirs’ builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by ‘dirs’, starting with zero. For example: ‘popd " +"+0’\n" +" \t\tremoves the first directory, ‘popd +1’ the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by ‘dirs’, starting with zero. For example: ‘popd " +"-0’\n" +" \t\tremoves the last directory, ‘popd -1’ the next to last.\n" +" \n" +" The ‘dirs’ builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with ‘set -o’\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to “empty†commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the “default†command completion\n" +" \t-E\t\tChange options for the “empty†command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using ‘+o’ instead of ‘-o’ turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the ‘complete’ builtin. If no " +"NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for ‘mapfile’." diff --git a/bash-5.1/po/en@quot.gmo b/bash-5.1/po/en@quot.gmo new file mode 100644 index 0000000000000000000000000000000000000000..749c3a704addbb59e3ce21d7142fead3470b11d9 GIT binary patch literal 171914 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 literal 0 HcmV?d00001 diff --git a/bash-5.1/po/en@quot.header b/bash-5.1/po/en@quot.header new file mode 100644 index 0000000..a9647fc --- /dev/null +++ b/bash-5.1/po/en@quot.header @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff --git a/bash-5.1/po/en@quot.po b/bash-5.1/po/en@quot.po new file mode 100644 index 0000000..5d978b2 --- /dev/null +++ b/bash-5.1/po/en@quot.po @@ -0,0 +1,5859 @@ +# English translations for GNU bash package. +# Copyright (C) 2020 Free Software Foundation, Inc. +# This file is distributed under the same license as the GNU bash package. +# Automatically generated, 2020. +# +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU bash 5.1-rc3\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2020-11-28 12:51-0500\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "bad array subscript" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: removing nameref attribute" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: cannot convert indexed to associative array" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: invalid associative array key" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: cannot assign to non-numeric index" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: must use subscript when assigning associative array" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: cannot create: %s" + +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: cannot find keymap for command" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: first non-whitespace character is not ‘\"’" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "no closing ‘%c’ in %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: missing colon separator" + +#: bashline.c:4555 +#, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "‘%s’: cannot unbind in command keymap" + +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "brace expansion: cannot allocate memory for %s" + +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "brace expansion: failed to allocate memory for %u elements" + +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "brace expansion: failed to allocate memory for ‘%s’" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "‘%s’: invalid alias name" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "line editing not enabled" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "‘%s’: invalid keymap name" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: cannot read: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "‘%s’: unknown function name" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s is not bound to any keys.\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s can be invoked via " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "‘%s’: cannot unbind" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "loop count" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "only meaningful in a ‘for’, ‘while’, or ‘until’ loop" + +#: builtins/caller.def:136 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns “$line $filenameâ€. With EXPR, returns\n" +" “$line $subroutine $filenameâ€; this extra information can be used to\n" +" 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." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME not set" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "too many arguments" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "null directory" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD not set" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "line %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "warning: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: usage: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: option requires an argument" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: numeric argument required" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: not found" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: invalid option" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: invalid option name" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "‘%s’: not a valid identifier" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "invalid octal number" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "invalid hex number" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "invalid number" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: invalid signal specification" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "‘%s’: not a pid or valid job spec" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: readonly variable" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s out of range" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s out of range" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: no such job" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: no job control" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "no job control" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: restricted" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "restricted" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: not a shell builtin" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "write error: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "error setting terminal attributes: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "error getting terminal attributes: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: error retrieving current directory: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: ambiguous job spec" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "help not available in this version" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: cannot unset: readonly %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: cannot unset" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: invalid action name" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: no completion specification" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "warning: -F option may not work as you expect" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "warning: -C option may not work as you expect" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "not currently executing completion function" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "can only be used in a function" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: reference variable cannot be an array" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: nameref variable self references not allowed" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: circular name reference" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "‘%s’: invalid variable name for name reference" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "cannot use ‘-f’ to make functions" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: readonly function" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: quoted compound array assignment deprecated" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: cannot destroy array variables in this way" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: cannot convert associative to indexed array" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dynamic loading not available" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "cannot open shared object %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "cannot find %s in shared object %s: %s" + +#: builtins/enable.def:388 +#, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: dynamic builtin already loaded" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "load function for %s returns failure (%d): not loaded" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: not dynamically loaded" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: cannot delete: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s: is a directory" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: not a regular file" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: file is too large" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: cannot execute binary file" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: cannot execute: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "logout\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "not login shell: use ‘exit’" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "There are stopped jobs.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "There are running jobs.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "no command found" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "history specification" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: cannot open temp file: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "current" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "job %d started without job control" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: illegal option -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: option requires an argument -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hashing disabled" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: hash table empty\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "hits\tcommand\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Shell commands matching keyword `" +msgstr[1] "Shell commands matching keywords `" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" +"'\n" +"\n" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"no help topics match ‘%s’. Try ‘help help’ or ‘man -k %s’ or ‘info %s’." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: cannot open: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"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" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "cannot use more than one of -anrw" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "history position" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: invalid timestamp" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: history expansion failed" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib failed" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "no other options allowed with ‘-x’" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: arguments must be process or job IDs" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Unknown error" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "expression expected" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: not an indexed array" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: invalid file descriptor specification" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: invalid file descriptor: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: invalid line count" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: invalid array origin" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: invalid callback quantum" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "empty array variable name" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "array variable support required" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "‘%s’: missing format character" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "‘%c’: invalid time format specification" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "‘%c’: invalid format character" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "warning: %s: %s" + +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "format parsing problem: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "missing hex digit for \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "missing unicode digit for \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "no other directory" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: invalid argument" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "directory stack empty" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "directory stack index" + +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." + +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by ‘dirs’, starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by ‘dirs’, starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The ‘dirs’ builtin displays the directory stack." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by ‘dirs’, starting with zero. For example: ‘popd +0’\n" +" \tremoves the first directory, ‘popd +1’ the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by ‘dirs’, starting with zero. For example: ‘popd -0’\n" +" \tremoves the last directory, ‘popd -1’ the next to last.\n" +" \n" +" The ‘dirs’ builtin displays the directory stack." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: invalid timeout specification" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "read error: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "can only ‘return’ from a function or sourced script" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "cannot simultaneously unset a function and a variable" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: not an array variable" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: not a function" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: cannot export" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "shift count" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "cannot set and unset shell options simultaneously" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: invalid shell option name" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "filename argument required" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: file not found" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "cannot suspend" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "cannot suspend a login shell" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s is aliased to ‘%s’\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s is a shell keyword\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s is a function\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s is a special shell builtin\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s is a shell builtin\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s is %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s is hashed (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: invalid limit argument" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "‘%c’: bad command" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: cannot get limit: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "limit" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: cannot modify limit: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "octal number" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "‘%c’: invalid symbolic mode operator" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "‘%c’: invalid symbolic mode character" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " line " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "last command: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Aborting..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:462 +msgid "unknown command error" +msgstr "unknown command error" + +#: error.c:463 +msgid "bad command type" +msgstr "bad command type" + +#: error.c:464 +msgid "bad connector" +msgstr "bad connector" + +#: error.c:465 +msgid "bad jump" +msgstr "bad jump" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: unbound variable" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\atimed out waiting for input: auto-logout\n" + +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "cannot redirect standard input from /dev/null: %s" + +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: ‘%c’: invalid format character" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] still exists" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "pipe error" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: maximum eval nesting level exceeded (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: maximum source nesting level exceeded (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: maximum function nesting level exceeded (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restricted: cannot specify ‘/’ in command names" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: command not found" + +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: bad interpreter" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: cannot execute binary file: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "‘%s’: is a special builtin" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "cannot duplicate fd %d to fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "expression recursion level exceeded" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "recursion stack underflow" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "syntax error in expression" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "attempted assignment to non-variable" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "syntax error in variable assignment" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "division by 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "bug: bad expassign token" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "‘:’ expected for conditional expression" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "exponent less than 0" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "identifier expected after pre-increment or pre-decrement" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "missing ‘)’" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "syntax error: operand expected" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntax error: invalid arithmetic operator" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (error token is “%sâ€)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "invalid arithmetic base" + +#: expr.c:1582 +msgid "invalid integer constant" +msgstr "invalid integer constant" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "value too great for base" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: expression error\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: cannot access parent directories" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "cannot reset nodelay mode for fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "cannot allocate new file descriptor for bash input from fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: buffer already exists for new fd %d" + +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp pipe" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "forked pid %d appears in running job %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "deleting stopped job %d with process group %ld" + +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) marked as still alive" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: no such pid" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Done" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Stopped" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Stopped(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Running" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Done(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Exit %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Unknown status" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(core dumped) " + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "child setpgid (%ld to %ld)" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld is not a child of this shell" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: No record of process %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: job %d is stopped" + +#: jobs.c:3564 +#, c-format +msgid "%s: no current jobs" +msgstr "%s: no current jobs" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: job has terminated" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: job %d already in background" + +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: turning on WNOHANG to avoid indefinite block" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: line %d: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr " (core dumped)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd now: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp failed" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: no job control in background" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "cannot set terminal process group (%d)" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "no job control in this shell" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: failed assertion: %s\n" + +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" + +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "unknown" + +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: block on free list clobbered" + +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: called with already freed block argument" + +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: called with unallocated block argument" + +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: underflow detected; mh_nbytes out of range" + +#: lib/malloc/malloc.c:1001 +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: underflow detected; magic8 corrupted" + +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: start and end chunk sizes differ" + +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: called with unallocated block argument" + +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: underflow detected; mh_nbytes out of range" + +#: lib/malloc/malloc.c:1141 +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: underflow detected; magic8 corrupted" + +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: start and end chunk sizes differ" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: alloc table is full with FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p already in table as allocated?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p already in table as free?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "invalid base" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: host unknown" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: invalid service" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: bad network path specification" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "network operations not supported" + +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: cannot change locale (%s)" + +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: cannot change locale (%s): %s" + +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: cannot change locale (%s)" + +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: cannot change locale (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "You have mail in $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "You have new mail in $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "The mail in %s has been read\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "syntax error: arithmetic expression required" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "syntax error: ‘;’ unexpected" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntax error: ‘((%s))’" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: bad instruction type %d" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: redirection instruction ‘%d’ out of range" + +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "maximum here-document count exceeded" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "unexpected EOF while looking for matching ‘%c’" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "unexpected EOF while looking for ‘]]’" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntax error in conditional expression: unexpected token ‘%s’" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "syntax error in conditional expression" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "unexpected token ‘%s’, expected ‘)’" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "expected ‘)’" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "unexpected argument ‘%s’ to conditional unary operator" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "unexpected argument to conditional unary operator" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "unexpected token ‘%s’, conditional binary operator expected" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "conditional binary operator expected" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "unexpected argument ‘%s’ to conditional binary operator" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "unexpected argument to conditional binary operator" + +#: parse.y:4906 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "unexpected token ‘%c’ in conditional command" + +#: parse.y:4909 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "unexpected token ‘%s’ in conditional command" + +#: parse.y:4913 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "unexpected token %d in conditional command" + +#: parse.y:6336 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntax error near unexpected token ‘%s’" + +#: parse.y:6355 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntax error near ‘%s’" + +#: parse.y:6365 +msgid "syntax error: unexpected end of file" +msgstr "syntax error: unexpected end of file" + +#: parse.y:6365 +msgid "syntax error" +msgstr "syntax error" + +#: parse.y:6428 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use “%s†to leave the shell.\n" + +#: parse.y:6602 +msgid "unexpected EOF while looking for matching `)'" +msgstr "unexpected EOF while looking for matching ‘)’" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: function ‘%s’ not found" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: possible retry loop" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: bad connector ‘%d’" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: invalid file descriptor" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: NULL file pointer" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1540 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: ‘%c’: invalid format character" + +#: redir.c:149 redir.c:197 +msgid "file descriptor out of range" +msgstr "file descriptor out of range" + +#: redir.c:204 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: ambiguous redirect" + +#: redir.c:208 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: cannot overwrite existing file" + +#: redir.c:213 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricted: cannot redirect output" + +#: redir.c:218 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "cannot create temp file for here-document: %s" + +#: redir.c:222 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: cannot assign fd to variable" + +#: redir.c:649 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port not supported without networking" + +#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284 +msgid "redirection error: cannot duplicate fd" +msgstr "redirection error: cannot duplicate fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "could not find /tmp, please create!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "/tmp must be a valid directory name" + +#: shell.c:804 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "pretty-printing mode ignored in interactive shells" + +#: shell.c:948 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: invalid option" + +#: shell.c:1319 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "cannot set uid to %d: effective uid %d" + +#: shell.c:1330 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "cannot set gid to %d: effective gid %d" + +#: shell.c:1518 +msgid "cannot start debugger; debugging mode disabled" +msgstr "cannot start debugger; debugging mode disabled" + +#: shell.c:1632 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: Is a directory" + +#: shell.c:1881 +msgid "I have no name!" +msgstr "I have no name!" + +#: shell.c:2035 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, version %s-(%s)\n" + +#: shell.c:2036 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" + +#: shell.c:2038 +msgid "GNU long options:\n" +msgstr "GNU long options:\n" + +#: shell.c:2042 +msgid "Shell options:\n" +msgstr "Shell options:\n" + +#: shell.c:2043 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" + +#: shell.c:2062 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t-%s or -o option\n" + +#: shell.c:2068 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "Type ‘%s -c “help setâ€â€™ for more information about shell options.\n" + +#: shell.c:2069 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "Type ‘%s -c help’ for more information about shell builtin commands.\n" + +#: shell.c:2070 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Use the ‘bashbug’ command to report bugs.\n" + +#: shell.c:2072 +#, c-format +msgid "bash home page: \n" +msgstr "bash home page: \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "General help using GNU software: \n" + +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: invalid operation" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Bogus signal" + +#: siglist.c:50 +msgid "Hangup" +msgstr "Hangup" + +#: siglist.c:54 +msgid "Interrupt" +msgstr "Interrupt" + +#: siglist.c:58 +msgid "Quit" +msgstr "Quit" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Illegal instruction" + +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "ABORT instruction" + +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT instruction" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Floating point exception" + +#: siglist.c:86 +msgid "Killed" +msgstr "Killed" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Bus error" + +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Segmentation fault" + +#: siglist.c:98 +msgid "Bad system call" +msgstr "Bad system call" + +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Broken pipe" + +#: siglist.c:106 +msgid "Alarm clock" +msgstr "Alarm clock" + +#: siglist.c:110 +msgid "Terminated" +msgstr "Terminated" + +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "Urgent IO condition" + +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Stopped (signal)" + +#: siglist.c:126 +msgid "Continue" +msgstr "Continue" + +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Child death or stop" + +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Stopped (tty input)" + +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Stopped (tty output)" + +#: siglist.c:146 +msgid "I/O ready" +msgstr "I/O ready" + +#: siglist.c:150 +msgid "CPU limit" +msgstr "CPU limit" + +#: siglist.c:154 +msgid "File limit" +msgstr "File limit" + +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Alarm (virtual)" + +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Alarm (profile)" + +#: siglist.c:166 +msgid "Window changed" +msgstr "Window changed" + +#: siglist.c:170 +msgid "Record lock" +msgstr "Record lock" + +#: siglist.c:174 +msgid "User signal 1" +msgstr "User signal 1" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "User signal 2" + +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "HFT input data pending" + +#: siglist.c:186 +msgid "power failure imminent" +msgstr "power failure imminent" + +#: siglist.c:190 +msgid "system crash imminent" +msgstr "system crash imminent" + +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "migrate process to another CPU" + +#: siglist.c:198 +msgid "programming error" +msgstr "programming error" + +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT monitor mode granted" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT monitor mode retracted" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT sound sequence has completed" + +#: siglist.c:214 +msgid "Information request" +msgstr "Information request" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Unknown Signal #%d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "bad substitution: no closing ‘%s’ in %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: cannot assign list to array member" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "cannot make pipe for process substitution" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "cannot make child for process substitution" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "cannot open named pipe %s for reading" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "cannot open named pipe %s for writing" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "cannot duplicate named pipe %s as fd %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "command substitution: ignored null byte in input" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "cannot make pipe for command substitution" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "cannot make child for command substitution" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: cannot duplicate pipe as fd 1" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: invalid variable name for name reference" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: invalid indirect expansion" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: invalid variable name" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter not set" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter null or not set" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expression < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: bad substitution" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: cannot assign in this way" + +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "bad substitution: no closing “`†in %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "no match: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "argument expected" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: integer expression expected" + +#: test.c:265 +msgid "`)' expected" +msgstr "‘)’ expected" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "‘)’ expected, found %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: binary operator expected" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: unary operator expected" + +#: test.c:881 +msgid "missing `]'" +msgstr "missing ‘]’" + +#: test.c:899 +#, c-format +msgid "syntax error: `%s' unexpected" +msgstr "syntax error: ‘%s’ unexpected" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "invalid signal number" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "trap handler: maximum trap handler level exceeded (%d)" + +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: bad value in trap_list[%d]: %p" + +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: bad signal %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "error importing function definition for ‘%s’" + +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "shell level (%d) too high, resetting to 1" + +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: no function context at current scope" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: variable may not be assigned value" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: assigning integer to name reference" + +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: no function context at current scope" + +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "%s has null exportstr" + +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "invalid character %d in exportstr for %s" + +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "no ‘=’ in exportstr for %s" + +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: head of shell_variables not a function context" + +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: no global_variables context" + +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: head of shell_variables not a temporary environment scope" + +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: cannot open as FILE" + +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: invalid value for trace file descriptor" + +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: compatibility value out of range" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2020 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"License GPLv3+: GNU GPL version 3 or later \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, version %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "This is free software; you are free to change and redistribute it." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "There is NO WARRANTY, to the extent permitted by law." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: cannot allocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: cannot allocate %lu bytes" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: cannot allocate %lu bytes" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [name[=value] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] name [name ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [shell-builtin [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [dir]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg ...]" + +#: builtins.c:78 +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" + +#: builtins.c:80 +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [option] name[=value] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f filename] [name ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +msgid "getopts optstring name [arg ...]" +msgstr "getopts optstring name [arg ...]" + +#: builtins.c:98 +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [job_spec]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [job_spec ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p pathname] [-dt] [name ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [pattern ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [name ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [name[=value] ...] or export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [name[=value] ...] or readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source filename [arguments]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". filename [arguments]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signal_spec ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] name [name ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [mode]" + +#: builtins.c:177 +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [-p var] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAME [in WORDS ... ;] do COMMANDS; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMMANDS; do COMMANDS; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMMANDS; do COMMANDS; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAME] command [redirections]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function name { COMMANDS ; } or name () { COMMANDS ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ COMMANDS ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( expression ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ expression ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variables - Names and meanings of some shell variables" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | dir]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [optname ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [arguments]" + +#: builtins.c:231 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" + +#: builtins.c:235 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o option] [-DEI] [name ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Define or display aliases.\n" +" \n" +" Without arguments, ‘alias’ prints the list of aliases in the reusable\n" +" form ‘alias NAME=VALUE’ on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '“\\C-x\\C-râ€: re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns “$line $filenameâ€. With EXPR, returns\n" +" “$line $subroutine $filenameâ€; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option ‘cdable_vars’ is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of ‘..’\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of ‘..’\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if ‘-L’ were specified.\n" +" ‘..’ is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, ‘pwd’ behaves as if ‘-L’ were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the ‘type’ builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." + +#: builtins.c:490 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the ‘integer’ attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the ‘trace’ attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using ‘+’ instead of ‘-’ turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the ‘let’ command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, ‘declare’ makes NAMEs local, as with the " +"‘local’\n" +" command. The ‘-g’ option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." + +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Set variable values and attributes.\n" +" \n" +" A synonym for ‘declare’. See ‘help declare’." + +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by ‘declare’.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." + +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" ‘echo’ interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." + +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." + +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix ‘special’ builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the ‘test’ found in $PATH instead of the shell builtin\n" +" version, type ‘enable -n test’.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." + +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." + +#: builtins.c:652 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ‘:’ into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places ‘?’ into\n" +" NAME and unsets OPTARG. If a required argument is not found, a ‘?’\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." + +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option ‘execfail’ is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." + +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." + +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." + +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the ‘fc -s [pat=rep ...] [command]’ format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing ‘r cc’\n" +" runs the last command beginning with ‘cc’ and typing ‘r’ re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." + +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." + +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with ‘&’. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." + +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." + +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." + +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a ‘*’. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." + +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." + +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." + +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow ‘-l’ they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." + +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." + +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." + +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." + +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." + +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see ‘readonly’.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." + +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of ‘--’ disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." + +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of ‘--’ disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." + +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." + +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." + +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." + +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its ‘sticky’ bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." + +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the “test†builtin, but the last argument must\n" +" be a literal ‘]’, to match the opening ‘[’." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." + +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or ‘-’, each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with “kill -signal $$â€.\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." + +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe ‘-p’ option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if ‘type -t NAME’ would not return ‘file’\n" +" -t\toutput a single word which is one of ‘alias’, ‘keyword’,\n" +" \t\t‘function’, ‘builtin’, ‘file’ or ‘’, if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." + +#: builtins.c:1431 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the ‘soft’ resource limit\n" +" -H\tuse the ‘hard’ resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (‘nice’)\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values ‘soft’, ‘hard’, and ‘unlimited’ stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." + +#: builtins.c:1502 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." + +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." + +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Execute commands for each member in a list.\n" +" \n" +" The ‘for’ loop executes a sequence of commands for each member in a\n" +" list of items. If ‘in WORDS ...;’ is not present, then ‘in “$@â€â€™ is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If ‘in WORDS’ is not present, ‘in “$@â€â€™\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." + +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" ‘|’ is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Execute commands based on conditional.\n" +" \n" +" The ‘if COMMANDS’ list is executed. If its exit status is zero, then " +"the\n" +" ‘then COMMANDS’ list is executed. Otherwise, each ‘elif COMMANDS’ list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" ‘then COMMANDS’ list is executed and the if command completes. " +"Otherwise,\n" +" the ‘else COMMANDS’ list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" ‘while’ COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" ‘until’ COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is “COPROCâ€.\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." + +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." + +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." + +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the ‘fg’ command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a ‘&’ places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to ‘bg’.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." + +#: builtins.c:1726 +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to ‘let “EXPRESSIONâ€â€™.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." + +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the ‘test’ builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the ‘==’ and ‘!=’ operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the ‘=~’ operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." + +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to ‘cd’.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t‘time’ reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of ‘exact’ means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of ‘substring’ means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually ‘!’. The second is\n" +" \t\tthe ‘quick substitution’ character, usually ‘^’. The\n" +" \t\tthird is the ‘history comment’ character, usually ‘#’.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" + +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by ‘dirs’, starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by ‘dirs’, starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The ‘dirs’ builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." + +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by ‘dirs’, starting with zero. For example: ‘popd +0’\n" +" \t\tremoves the first directory, ‘popd +1’ the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by ‘dirs’, starting with zero. For example: ‘popd -0’\n" +" \t\tremoves the last directory, ‘popd -1’ the next to last.\n" +" \n" +" The ‘dirs’ builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." + +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with ‘set -o’\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." + +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." + +#: builtins.c:1971 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to “empty†commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." + +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the “default†command completion\n" +" \t-E\t\tChange options for the “empty†command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using ‘+o’ instead of ‘-o’ turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the ‘complete’ builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." + +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." + +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for ‘mapfile’." diff --git a/bash-5.1/po/eo.gmo b/bash-5.1/po/eo.gmo new file mode 100644 index 0000000000000000000000000000000000000000..4efbdee34749f1ee8e39a9ab848df973ef958192 GIT binary patch literal 151768 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, 1998, ... 2019. +# +# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/5.0/bash-5.0/builtins"); -*- +# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/5.0/bash-5.0"); -*- +# Stilaj notoj: +# La angulaj citiloj limigas «plurajn vortojn», +# 99-66 estas la citiloj de „unuvortaĵo‟ +# +# La mesaÄojn pri internaj eraroj (markitajn per XXX) probable malnecesas traduki. +# +# ---- Glosaro: +# associative array asocitabelo (info "(bash)Arrays") +# brace expansion vinkulmalvolvo +# callback retrovoko +# compound array assignment tutopa tabelvalorizo +# extended file attributes kromatributoj (de dosiero) +# to force ... per superforto +# granted jesigita +# here-document tuj-dokumento (info "(bash)Redirections") +# indexed array entjerindica tabelo (info "(bash)Arrays") +# positional parameter numerparametro ($1 ...) (info "(bash)Positional Parameters") +# resolve (symbolic links) elnodigi +# special builtin speciala komando (info "(coreutils)Special built-in utilities") +# substitution anstataÅ­igo (info "(bash)Shell Expansions") +# unset malvalorizi (variablon); malaktivigi, malÅalti (opcion, nomon) +msgid "" +msgstr "" +"Project-Id-Version: GNU bash 5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-11-28 12:51-0500\n" +"PO-Revision-Date: 2019-01-09 16:32+0700\n" +"Last-Translator: Sergio Pokrovskij \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: arrayfunc.c:66 +msgid "bad array subscript" +msgstr "Misa tabel-indico" + +#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300 +#: variables.c:3133 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: ne plu nomreferenco (la atributo nameref forigitas)" + +#: arrayfunc.c:446 builtins/declare.def:851 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: Maleblas konverti entjerindican tabelon en asocitabelon" + +#: arrayfunc.c:700 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: Misa asocitabela Ålosilo" + +#: arrayfunc.c:702 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: Valorizato havu nombran indicon" + +#: arrayfunc.c:747 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: Valorizante per asocitabelo uzu indicon" + +#: bashhist.c:452 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: Ne prosperis krei: %s" + +# XXX: internal_error +#: bashline.c:4310 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: Mankas klavartabelo por komando" + +#: bashline.c:4459 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: La unua ne-blankspaca signo ne estas „\"‟" + +#: bashline.c:4488 +#, c-format +msgid "no closing `%c' in %s" +msgstr "Mankas ferma „%c‟ en %s" + +#: bashline.c:4519 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: Mankas disiga dupunkto" + +#: bashline.c:4555 +#, fuzzy, c-format +msgid "`%s': cannot unbind in command keymap" +msgstr "%s: Ne eblas malligi" + +# XXX: internal_error +#: braces.c:327 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "vinkulmalvolvo: Maleblas memorhavigo por %s" + +# XXX: internal_error +#: braces.c:406 +#, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %u elementoj" + +# XXX: internal_error +#: braces.c:451 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %s" + +#: builtins/alias.def:131 variables.c:1844 +#, c-format +msgid "`%s': invalid alias name" +msgstr "%s: MaltaÅ­gas por uzi kiel alinomon" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "liniredaktado ne estas ebligita" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "„%s‟: Misa nomo por klavartabelo" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: Ne eblas legi: %s" + +#: builtins/bind.def:328 builtins/bind.def:358 +#, c-format +msgid "`%s': unknown function name" +msgstr "%s: Nekonata funkcinomo" + +#: builtins/bind.def:336 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s malhavas klavligon\n" + +#: builtins/bind.def:340 +#, c-format +msgid "%s can be invoked via " +msgstr "%s vokeblas per " + +#: builtins/bind.def:378 builtins/bind.def:395 +#, c-format +msgid "`%s': cannot unbind" +msgstr "%s: Ne eblas malligi" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "iteracinombrilo" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "Sencas nur en iteracio „for‟, „while‟ aÅ­ „until‟" + +# caller [expr] => +# caller [ESPRIMO] +#: builtins/caller.def:136 +#, fuzzy +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" 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." +msgstr "" +"Liveru la kuntekston de la kuranta procedurvoko\n" +"\n" +" Se ESPRIMO malestas, liveru «$line $filename». Se ESPRIMO\n" +" ĉeestas, liveru «$line $subroutine $filename»; ĉi tiu krominformo\n" +" uzeblas por vidigi la vok-stakon.\n" +"\n" +" La valoro de ESPRIMO indikas, kiom da vokkadroj retroiri disde la\n" +" kuranta; la pinta kadro havas la numeron 0.\n" +"\n" +" Elirstato:\n" +" Äœi estas 0, kondiĉe ke la Åelo plenumas Åelfunkcion kaj la ESPRIMO\n" +" estas valida." + +#: builtins/cd.def:327 +msgid "HOME not set" +msgstr "HOME malhavas valoron" + +#: builtins/cd.def:335 builtins/common.c:161 test.c:901 +msgid "too many arguments" +msgstr "Tro multe da argumentoj" + +#: builtins/cd.def:342 +msgid "null directory" +msgstr "NUL-dosierujo" + +#: builtins/cd.def:353 +msgid "OLDPWD not set" +msgstr "OLDPWD malhavas valoron" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "linio %dª: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "Averto: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: Uzmaniero: " + +#: builtins/common.c:193 shell.c:516 shell.c:844 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: La opcio bezonas argumenton" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: Necesas nombra argumento" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: Ne trovita" + +#: builtins/common.c:216 shell.c:857 +#, c-format +msgid "%s: invalid option" +msgstr "%s: Misa opcio" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: Misa opcinomo" + +#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "„%s‟ ne estas taÅ­ga nomo" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "Misa okuma nombro" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "Misa 16uma nombro" + +#: builtins/common.c:244 expr.c:1569 +msgid "invalid number" +msgstr "Misa nombro" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: Misa signalindiko" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "„%s‟: Nek proceznumero, nek taÅ­ga laborindiko" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: Nurlega variablo" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s estas ekster sia variejo" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argumento" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s estas ekster sia variejo" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: Ne estas tia laboro" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: Ĉi tiu Åelo ne disponigas laborregadon" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "Laborregado ne disponeblas" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: Limigita" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "limigita" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "„%s‟ ne estas primitiva komando Åela" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "Eraro ĉe skribo: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "Eraro ĉe agordado de terminalaj atributoj: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "Eraro ĉe akiro de terminalaj atributoj: %s" + +#: builtins/common.c:635 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: Eraro ĉe provo determini la kurantan dosierujon: %s: %s\n" + +#: builtins/common.c:701 builtins/common.c:703 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: Ambigua laborindiko" + +#: builtins/common.c:964 +msgid "help not available in this version" +msgstr "helpilo mankas en ĉi tiu versio" + +#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: Malaktivigo fiaskis: nurlega %s" + +#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: Malaktivigo fiaskis" + +#: builtins/complete.def:287 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: Misa nomo de ago" + +#: builtins/complete.def:486 builtins/complete.def:634 +#: builtins/complete.def:865 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: Kompletigo ne estas specifita" + +#: builtins/complete.def:688 +msgid "warning: -F option may not work as you expect" +msgstr "Averto: La opcio -F povas funkcii alie ol vi eble supozas" + +#: builtins/complete.def:690 +msgid "warning: -C option may not work as you expect" +msgstr "Averto: La opcio -C povas funkcii alie ol vi eble supozas" + +#: builtins/complete.def:838 +msgid "not currently executing completion function" +msgstr "Ni ne estas en plenumado de kompletiga funkcio" + +#: builtins/declare.def:134 +msgid "can only be used in a function" +msgstr "Uzeblas nur ene de funkcio" + +#: builtins/declare.def:363 builtins/declare.def:756 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: Referenca variablo ne povas esti tabelo" + +#: builtins/declare.def:374 variables.c:3385 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: Nomreferenca variablo ne referencu sin mem" + +#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312 +#: variables.c:3382 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: Cikla nomreferenco" + +#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "„%s“: Misa variablonomo por nomreferenco" + +#: builtins/declare.def:514 +msgid "cannot use `-f' to make functions" +msgstr "„-f‟ ne estas uzebla por fari funkciojn" + +#: builtins/declare.def:526 execute_cmd.c:5986 +#, c-format +msgid "%s: readonly function" +msgstr "%s: Nurlega funkcio" + +#: builtins/declare.def:824 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: Tutopa tabelvalorizo citila estas evitinda" + +#: builtins/declare.def:838 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: Ĉi tiel ne eblas neniigi tabelvariablojn" + +#: builtins/declare.def:845 builtins/read.def:815 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: Ne eblas konverti asocitabelon en entjerindican tabelon" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "Rultempa Åargo ne disponeblas" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "Ne malfermiÄis dinamika biblioteko %s: %s" + +#: builtins/enable.def:371 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "Mankas %s en la dinamika biblioteko%s: %s" + +#: builtins/enable.def:388 +#, fuzzy, c-format +msgid "%s: dynamic builtin already loaded" +msgstr "%s: Ne Åargita dinamike" + +#: builtins/enable.def:392 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "Åœarga funkcio por %s liveris fiaskon (%d): ne Åargite" + +#: builtins/enable.def:517 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: Ne Åargita dinamike" + +#: builtins/enable.def:543 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: Ne eblas forigi: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818 +#, c-format +msgid "%s: is a directory" +msgstr "%s estas dosierujo" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: Ne ordinara dosiero" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: Tro granda dosiero" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: Neplenumebla duuma dosiero" + +#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: Maleblas plenumi: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "adiaÅ­\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "La Åelo ne estas saluta; eliru per «exit»" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Restas haltigitaj laboroj.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Restas rulataj laboroj.\n" + +#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417 +msgid "no command found" +msgstr "Komando ne trovita" + +#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407 +#: builtins/fc.def:412 +msgid "history specification" +msgstr "Historia indiko" + +#: builtins/fc.def:444 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: Ne malfermiÄis labordosiero: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "kuranta" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "La laboro %d estas lanĉita sen laborregado" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: Misa opcio -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: La opcio bezonas argumenton -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "Nomkonservado (haketado, «hashing») estas malÅaltita" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: Hakettabelo estas malplena\n" + +#: builtins/hash.def:267 +#, c-format +msgid "hits\tcommand\n" +msgstr "Trafoj\tKomando\n" + +# ZZZ: aĉaj citiloj (fermita en la programo) +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Åœelaj komandoj kongruaj kun la Ålosilvorto '" +msgstr[1] "Åœelaj komandoj kongruaj kun la Ålosilvortoj '" + +#: builtins/help.def:135 +msgid "" +"'\n" +"\n" +msgstr "" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"Helpaĵo pri „%s‟ malestas.\n" +"Provu «help help» aÅ­ «man -k %s» aÅ­ «info %s»." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: Fiaskis malfermo de %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"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" +msgstr "" +"Jenaj komandoj estas enkonstruitaj. Tajpu „help‟ por eligi la liston.\n" +"Tajpu «help NOMO» por informoj pri la funkcio NOMO.\n" +"Uzu «info bash» por la Äenerala informo pri la Åelo.\n" +"Uzu «man -k» aÅ­ «info» por informo pri komandoj ĉi tie ne listigitaj.\n" +"\n" +"Steleto (*) tuj post nomo indikas, ke la komando estas malebligita.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "Ne pli ol unu el -anrw estas uzebla" + +#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213 +#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249 +msgid "history position" +msgstr "pozicio en la historio" + +#: builtins/history.def:340 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: MaltaÅ­ga tempomarko" + +#: builtins/history.def:451 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: Historia malvolvo fiaskis" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib fiaskis" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "La uzo de „-x‟ malebligas aliajn opciojn" + +#: builtins/kill.def:211 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: Argumento estu proceznumero aÅ­ laborindiko" + +#: builtins/kill.def:274 +msgid "Unknown error" +msgstr "Nekonata eraro" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657 +msgid "expression expected" +msgstr "Mankas esprimo" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: Äi ne estas entjerindica tabelo" + +#: builtins/mapfile.def:271 builtins/read.def:308 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: Misa indiko de dosiernumero" + +#: builtins/mapfile.def:279 builtins/read.def:315 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: Misa dosiernumero: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: Misa lininombro" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: Misa tabelbazo" + +# Supozeble callback => retrovoko ?? +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: Misa kvanto ĉe retrovoko" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "Mankas nomo de tabelvariablo" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "necesas subteno de tabelvariabloj" + +#: builtins/printf.def:419 +#, c-format +msgid "`%s': missing format character" +msgstr "„%s‟: Mankas formata signo" + +#: builtins/printf.def:474 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "%c: Misa tempoformato" + +#: builtins/printf.def:676 +#, c-format +msgid "`%c': invalid format character" +msgstr "„%c‟: Misa signo formata" + +#: builtins/printf.def:702 +#, c-format +msgid "warning: %s: %s" +msgstr "Averto: %s: %s" + +# XXX: internal_error +#: builtins/printf.def:788 +#, c-format +msgid "format parsing problem: %s" +msgstr "Miso ĉe analizado de formato: %s" + +#: builtins/printf.def:885 +msgid "missing hex digit for \\x" +msgstr "Mankas 16uma cifero por \\x" + +#: builtins/printf.def:900 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "Post „%c‟ mankas unikoda cifero" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "Ne estas alia dosierujo" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: MaltaÅ­ga argumento" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "Dosierujstako malplenas" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "indico de dosierujstako" + +# dirs [-clpv] [+N] [-N] +#: builtins/pushd.def:701 +msgid "" +"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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Listigu la kurantan dosierujstakon. La dosierujoj trafas en\n" +" la stakon per la komando „pushd‟ kaj estas forigeblaj per la\n" +" komando „popd‟.\n" +"\n" +" Opcioj:\n" +" -c\tforviÅu la dosierujstakon (forigu ĉiujn erojn)\n" +" -l\tne uzu tildon en la dosierujnomoj bazitaj relative\n" +" \tal via hejma dosierujo\n" +" -p\teligu dosierujstakon lokante po unu eron sur linio\n" +" -v\teligu dosierujstakon lokante po unu eron sur linio,\n" +"\tprefiksante la dosierujnomon per Äia numero en la stako\n" +"\n" +" Argumentoj:\n" +" +N\teligu la Nan eron nombrante de maldekstre en la listo eligebla\n" +"\tper „dirs‟ sen opcioj, numerante ekde 0.\n" +"\n" +" -N\teligu la Nan eron nombrante de dekstre en la listo eligebla\n" +"\tper „dirs‟ sen opcioj, numerante ekde 0." + +# pushd [dir | +N | -N] [-n] +#: builtins/pushd.def:723 +msgid "" +"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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Surstakigu dosierujon sur la stakon da dosierujoj, aÅ­ cikle Åovu\n" +" la stakon tiel, ke la nova stakpinto iÄu la kuranta dosierujo.\n" +" Senargumente, permutu la du plej suprajn dosierujojn de la stako.\n" +"\n" +" Opcioj:\n" +" -n\tNe ÅanÄu la kurantan dosierujon surstakigante dosierujon sur\n" +" \tla stakon; do, nur la stakon ÅanÄu.\n" +"\n" +" +N\tCikle Åovu la stakon tiel ke la Nª dosierujo (nombrante de\n" +" \tmaldekstre en la listo eligebla per „dirs‟, numerante de 0)\n" +" iÄu la pinta.\n" +"\n" +" -N\tCikle Åovu la stakon tiel ke la Nª dosierujo (nombrante de\n" +" \tdekstre en la listo eligebla per „dirs‟, numerante de 0) iÄu\n" +" la pinta.\n" +"\n" +" dir\tsurstakigu la dosierujon dir kaj faru Äin la nova kuranta\n" +" \tdosierujo labora.\n" +"\n" +" Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟." + +# popd [+N | -N] [-n] +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Elstakigu erojn el la stako de dosierujoj. Senargumente, forigu la\n" +" pintan dosierujon kaj iru (cd) en la novan pintan dosierujon.\n" +"\n" +"\n" +" Opcioj:\n" +" -n\tNe ÅanÄu la kurantan dosierujon demetante dosierujon el la\n" +"\tstako; do, nur la stakon ÅanÄu.\n" +"\n" +" Argumentoj:\n" +" +N\tforigu la Nan eron de maldekstre de la listo eligebla per\n" +"\t„dirs‟, numerante ekde 0. Ekz-e: «popd +0» forigas la plej\n" +"\tmaldekstran dosierujon; «popd +1», Äian najbaron.\n" +"\n" +" -N\tforigu la Nan eron de dekstre de la listo eligebla per „dirs‟,\n" +"\tnumerante ekde 0. Ekz-e: «popd -0» forigas la lastan\n" +"\tdosierujon; «popd -1», la antaÅ­lastan.\n" +"\n" +" Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟." + +#: builtins/read.def:280 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: Misa indiko de atendotempo" + +#: builtins/read.def:755 +#, c-format +msgid "read error: %d: %s" +msgstr "Lega (read) eraro: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "" +"„return‟ sencas nur en funkcio aÅ­ punkte vokita („.‟, „source‟) skripto" + +#: builtins/set.def:869 +msgid "cannot simultaneously unset a function and a variable" +msgstr "Ne eblas samtempe malaktivigi funkcion kaj variablon" + +#: builtins/set.def:966 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: Ne tabela variablo" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: Ne funkcio" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: Ne eblas eksporti" + +#: builtins/shift.def:72 builtins/shift.def:79 +msgid "shift count" +msgstr "Nombrilo de „shift‟" + +#: builtins/shopt.def:310 +msgid "cannot set and unset shell options simultaneously" +msgstr "Maleblas samtempe Åalti kaj malÅalti Åelan opcion" + +#: builtins/shopt.def:428 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: Misa nomo de Åela opcio" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "Necesas dosiernoma argumento" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: Dosiero ne trovita" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "Ne eblas halteti" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "Ne eblas haltetigi salutan Åelon" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "„%s‟ alinomas jenon: «%s»\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "„%s‟ estas Ålosilvorto de la Åelo\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s estas funkcio\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "„%s‟ estas speciala primitiva Åelkomando\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "„%s‟ estas primitiva komando de la Åelo\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "„%s‟ estas „%s‟\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "„%s‟ estas metita en hakettabelon (%s)\n" + +#: builtins/ulimit.def:400 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: MaltaÅ­ga argumento por limo" + +#: builtins/ulimit.def:426 +#, c-format +msgid "`%c': bad command" +msgstr "„%c‟: Misa komando" + +#: builtins/ulimit.def:455 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: Fiaskis provo legi limon: %s" + +#: builtins/ulimit.def:481 +msgid "limit" +msgstr "limo" + +#: builtins/ulimit.def:493 builtins/ulimit.def:793 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: Malprosperis ÅanÄi limon: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "Okuma nombro" + +# Misa modifilo: «umask Z-w» aÅ­ «umask aZw» +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "„%c‟: MaltaÅ­ga simbolo por atingorajta modifilo" + +# Misa kategorio: ne [rw] ktp +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "„%c‟: La signo ne estas simbolo de atingorajta kategorio" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " linio " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "La ĵusa komando: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "Ĉesigado ..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORMO: " + +#: error.c:462 +msgid "unknown command error" +msgstr "Nekonata komand-eraro" + +#: error.c:463 +msgid "bad command type" +msgstr "Misa komandotipo" + +#: error.c:464 +msgid "bad connector" +msgstr "Misa stir-operacio" + +#: error.c:465 +msgid "bad jump" +msgstr "Misa salto" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: Neligita variablo" + +#: eval.c:242 +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aTro longe sen enigo: AÅ­tomata seancofino\n" + +# XXX: internal error: +#: execute_cmd.c:537 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "Fiaskis provo nomumi la disponaĵon «/dev/null» ĉefenigujo: %s" + +# XXX: internal error: +#: execute_cmd.c:1297 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: „%c‟: Misa formatsigno" + +#: execute_cmd.c:2362 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: la kunprocezo [%d:%s] ankoraÅ­ ekzistas" + +#: execute_cmd.c:2486 +msgid "pipe error" +msgstr "Eraro en dukto" + +#: execute_cmd.c:4793 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: La ingado de „eval“oj superis sian maksimumon (%d)" + +#: execute_cmd.c:4805 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: La ingado de „source“oj superis sian maksimumon (%d)" + +#: execute_cmd.c:4913 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: La ingado de funkcioj superis sian maksimumon (%d)" + +#: execute_cmd.c:5467 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: Malpermesitas uzi „/‟ en komandonomoj" + +#: execute_cmd.c:5574 +#, c-format +msgid "%s: command not found" +msgstr "%s: Komando ne trovita" + +# XXX: internal error: +#: execute_cmd.c:5816 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5854 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: Misa interpretilo" + +#: execute_cmd.c:5891 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: Neplenumebla duuma dosiero: %s" + +#: execute_cmd.c:5977 +#, c-format +msgid "`%s': is a special builtin" +msgstr "„%s‟ estas primitiva komando speciala" + +#: execute_cmd.c:6029 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "Ne eblas kunnomumi al dosiernumero %d la dosiernumeron %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "Tro profunda rekursio en esprimo" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "Rekursistako elĉerpita" + +#: expr.c:477 +msgid "syntax error in expression" +msgstr "Sintaksa eraro en esprimo" + +#: expr.c:521 +msgid "attempted assignment to non-variable" +msgstr "Provo valorizi ne-variablon" + +#: expr.c:530 +msgid "syntax error in variable assignment" +msgstr "Sintaksa eraro en valorizo de variablo" + +#: expr.c:544 expr.c:911 +msgid "division by 0" +msgstr "Divido per 0" + +#: expr.c:592 +msgid "bug: bad expassign token" +msgstr "CIMO: Misa operacisigno en kombinita valorizsimbolo" + +#: expr.c:646 +msgid "`:' expected for conditional expression" +msgstr "„:‟ mankas kondiĉa esprimo" + +#: expr.c:972 +msgid "exponent less than 0" +msgstr "Negativa eksponento" + +#: expr.c:1029 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "Post antaÅ­kremento aperu nomo de variablo" + +#: expr.c:1056 +msgid "missing `)'" +msgstr "Mankas „)‟" + +#: expr.c:1107 expr.c:1487 +msgid "syntax error: operand expected" +msgstr "Sintaksa eraro: Mankas operando" + +#: expr.c:1489 +msgid "syntax error: invalid arithmetic operator" +msgstr "Sintaksa eraro: Misa operacisimbolo aritmetika" + +#: expr.c:1513 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (misa simbolo estas „%s‟)" + +#: expr.c:1573 +msgid "invalid arithmetic base" +msgstr "MaltaÅ­ga bazo nombrosistema" + +#: expr.c:1582 +#, fuzzy +msgid "invalid integer constant" +msgstr "%s: Misa lininombro" + +#: expr.c:1598 +msgid "value too great for base" +msgstr "Tro granda valoro por bazo de nombrosistemo" + +#: expr.c:1647 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: Misa esprimo\n" + +#: general.c:70 +msgid "getcwd: cannot access parent directories" +msgstr "getwd: Ne eblas atingi patrajn dosierujojn" + +#: input.c:99 subst.c:6069 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "Ne eblas reÅalti senprokrastan reÄimon por dosiernumero %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "Maleblas disponigi novan dosiernumeron por BaÅa enigo el n-ro %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: La nova dosiernumero (fd %d) jam havas bufron" + +# ZZZ: sys_error (_("start_pipeline: pgrp pipe")); +#: jobs.c:543 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: procezgrupo dukto" + +#: jobs.c:906 +#, c-format +msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:959 +#, c-format +msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next" +msgstr "" + +#: jobs.c:1283 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "Forke farita proceznumero %d aperas en rulata laboro %d" + +#: jobs.c:1402 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "Haltigita laboro %d kun procezgrupo %ld estas forigata" + +# ifdef DEBUG ... internal_warning(): +#: jobs.c:1511 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) marked as still alive" + +#: jobs.c:1850 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: Ne estas tia proceznumero (%ld)!" + +#: jobs.c:1865 +#, c-format +msgid "Signal %d" +msgstr "Signalo %d" + +#: jobs.c:1879 jobs.c:1905 +msgid "Done" +msgstr "Farite" + +#: jobs.c:1884 siglist.c:122 +msgid "Stopped" +msgstr "Haltigita" + +#: jobs.c:1888 +#, c-format +msgid "Stopped(%s)" +msgstr "Haltigita(%s)" + +#: jobs.c:1892 +msgid "Running" +msgstr "Rulata" + +#: jobs.c:1909 +#, c-format +msgid "Done(%d)" +msgstr "Farite(%d)" + +#: jobs.c:1911 +#, c-format +msgid "Exit %d" +msgstr "Eliro %d" + +#: jobs.c:1914 +msgid "Unknown status" +msgstr "Nekonata stato" + +#: jobs.c:2001 +#, c-format +msgid "(core dumped) " +msgstr "(nekropsio elÅutita)" + +#: jobs.c:2020 +#, c-format +msgid " (wd: %s)" +msgstr " (labordosierujo: %s)" + +#: jobs.c:2259 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "provo atribui (setpgid) procezgrupon %2$ld de la procezido %1$ld" + +#: jobs.c:2617 nojobs.c:664 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: La procezo %ld ne estas ido de ĉi tiu Åelo" + +#: jobs.c:2893 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Malestas informoj pri procezo %ld" + +#: jobs.c:3236 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: La laboro %d estas haltigita" + +#: jobs.c:3564 +#, fuzzy, c-format +msgid "%s: no current jobs" +msgstr "%s: Ne estas tia laboro" + +#: jobs.c:3571 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: La laboro finiÄis" + +#: jobs.c:3580 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: La laboro %d jam estas fona" + +# XXX: internal warning: +#: jobs.c:3806 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: WNOHANG iÄas Åaltita por eviti nedifintan pendiÄon" + +#: jobs.c:4320 +#, c-format +msgid "%s: line %d: " +msgstr "%s: linio %dª: " + +#: jobs.c:4334 nojobs.c:919 +#, c-format +msgid " (core dumped)" +msgstr "(nekropsio elÅutita)" + +#: jobs.c:4346 jobs.c:4359 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(nun labordosierujo estas: %s)\n" + +#: jobs.c:4391 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp fiaskis" + +#: jobs.c:4447 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: laborregado ne funkcias en la fono" + +#: jobs.c:4463 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: liniaranÄo" + +#: jobs.c:4473 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid()" + +#: jobs.c:4494 jobs.c:4503 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "ne prosperis atribui grupon (%d) de terminala procezo" + +#: jobs.c:4508 +msgid "no job control in this shell" +msgstr "Ĉi tiu Åelo ne disponigas laborregadon" + +#: lib/malloc/malloc.c:353 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: Malveras la aserto: %s\n" + +# XXX: debug? +#: lib/malloc/malloc.c:369 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: aserto sufokita\r\n" + +# XXX: internal error +#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933 +msgid "unknown" +msgstr "nekonata" + +# XXX: debug? +#: lib/malloc/malloc.c:882 +msgid "malloc: block on free list clobbered" +msgstr "malloc: Skribdifektita bloko en malokupa listo (free list)" + +# XXX: debug? +#: lib/malloc/malloc.c:972 +msgid "free: called with already freed block argument" +msgstr "free: La argumento montras blokon jam malokupitan" + +# XXX: debug? +#: lib/malloc/malloc.c:975 +msgid "free: called with unallocated block argument" +msgstr "free: La argumento ne montras generitan memoron" + +# XXX: debug? +#: lib/malloc/malloc.c:994 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: Okazis maltroo; mh_nbytes estas ekster sia variejo" + +# XXX: debug? +#: lib/malloc/malloc.c:1001 +#, fuzzy +msgid "free: underflow detected; magic8 corrupted" +msgstr "free: Okazis maltroo; mh_nbytes estas ekster sia variejo" + +# XXX: debug? +#: lib/malloc/malloc.c:1009 +msgid "free: start and end chunk sizes differ" +msgstr "free: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj" + +# XXX: debug? +#: lib/malloc/malloc.c:1119 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: La argumento ne montras generitan memoron" + +# XXX: debug? +#: lib/malloc/malloc.c:1134 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: Okazis maltroo; mh_nbytes estas ekster sia variejo" + +# XXX: debug? +#: lib/malloc/malloc.c:1141 +#, fuzzy +msgid "realloc: underflow detected; magic8 corrupted" +msgstr "realloc: Okazis maltroo; mh_nbytes estas ekster sia variejo" + +# XXX: debug? +#: lib/malloc/malloc.c:1150 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj" + +# XXX: debug? +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: „alloc‟-tabelo elĉerpiÄis je FIND_ALLOC?\n" + +# XXX: debug? +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p jam en la tabelo kvazaÅ­ kreita (?)\n" + +# XXX: debug? +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p jam en la tabelo kvazaÅ­ malokupita (?)\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "Misa bazo nombrosistema" + +# XXX: internal error +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: Nekonata retnodo" + +# XXX: internal error +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: Misa servo-indiko" + +# XXX: internal error +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: Misa retvojo-indiko" + +# XXX: internal error +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "Reta funkciado ne disponeblas" + +# XXX: internal warning: +#: locale.c:217 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: Maleblas ÅanÄi lokaĵaron (%s)" + +# XXX: internal warning: +#: locale.c:219 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: Maleblas ÅanÄi lokaĵaron (%s): %s" + +# XXX: fatal_error +#: locale.c:292 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: ne eblas ÅanÄi la lokaĵaron (%s)" + +# XXX: fatal_error +#: locale.c:294 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: ne eblas ÅanÄi la lokaĵaron (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Vi havas poÅton en $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Nova poÅto en $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "La poÅto en %s estas jam legita\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "Sintaksa eraro: Necesas aritmetika esprimo" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "Sintaksa eraro: Neatendita „;‟" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "Sintaksa eraro: „((%s))‟" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: Misa ordontipo %d" + +# internal_warning(): +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "Tuj-dokumenton de linio %d limigas dosierfino (mankas „%s‟)" + +# XXX: programming_error +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: Alidirektada komando „%d‟ ekster sia variejo" + +# internal_warning(): +#: parse.y:2393 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) superas SIZE_MAX (%lu): la linio " +"tranĉita" + +#: parse.y:2826 +msgid "maximum here-document count exceeded" +msgstr "La nombro de tuj-documentoj superis sian maksimumon" + +#: parse.y:3581 parse.y:3957 parse.y:4556 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "Neatendita dosierfino dum serĉo de responda „%c‟" + +#: parse.y:4696 +msgid "unexpected EOF while looking for `]]'" +msgstr "Neatendita dosierfino dum serĉo de „]]‟" + +#: parse.y:4701 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "Sintaksa eraro en kondiĉa esprimo: Neatendita simbolo „%s‟" + +#: parse.y:4705 +msgid "syntax error in conditional expression" +msgstr "Sintaksa eraro en kondiĉa esprimo" + +#: parse.y:4783 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "Nekonvena simbolo „%s‟ anstataÅ­ „)‟" + +#: parse.y:4787 +msgid "expected `)'" +msgstr "Mankas „)‟" + +#: parse.y:4815 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "La argumento „%s‟ ne konvenas por unuloka kondiĉa operacisimbolo" + +#: parse.y:4819 +msgid "unexpected argument to conditional unary operator" +msgstr "MaltaÅ­ga argumento por unuloka kondiĉa operacisimbolo" + +#: parse.y:4865 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "Misa simbolo „%s‟ anstataÅ­ duloka kondiĉa operacisigno" + +#: parse.y:4869 +msgid "conditional binary operator expected" +msgstr "ĉi tie devas esti duloka kondiĉa operacisigno" + +#: parse.y:4891 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "La argumento „%s‟ ne konvenas por duloka kondiĉa operacisimbolo" + +#: parse.y:4895 +msgid "unexpected argument to conditional binary operator" +msgstr "\n" +msgstr "" +"La hejmpaÄo de BaÅo (anglalingva): \n" + +#: shell.c:2073 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Äœenerala helpilo pri uzo de GNUa programaro: \n" + +# XXX: internal_error +#: sig.c:757 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: Misa operacio" + +#: siglist.c:47 +msgid "Bogus signal" +msgstr "Åœtopsignalo" + +# Hangup detected on controlling terminal or death of controlling +# process +#: siglist.c:50 +msgid "Hangup" +msgstr "Malkonekto" + +# Interrupt from keyboard +#: siglist.c:54 +msgid "Interrupt" +msgstr "Interrompo" + +# Quit from keyboard +#: siglist.c:58 +msgid "Quit" +msgstr "Klavara eliro" + +#: siglist.c:62 +msgid "Illegal instruction" +msgstr "Miskomando" + +# SIGTRAP 5 Core Trace/breakpoint trap +#: siglist.c:66 +msgid "BPT trace/trap" +msgstr "Spurada kontrolpunkto" + +# Abort signal from abort(3) +#: siglist.c:74 +msgid "ABORT instruction" +msgstr "Komando ABORT" + +# SIGEMT is not specified in POSIX 1003.1-2001, but neverthless appears +# on most other Unices, where its default action is typically to termi- +# nate the process with a core dump. +#: siglist.c:78 +msgid "EMT instruction" +msgstr "EMT-komando" + +#: siglist.c:82 +msgid "Floating point exception" +msgstr "Glitpunkta escepto" + +# SIGKILL 9 Term Kill signal +# Nek kaptebla nek ignorebla (malkiel ABORT) +#: siglist.c:86 +msgid "Killed" +msgstr "Murdu" + +#: siglist.c:90 +msgid "Bus error" +msgstr "Bus-eraro" + +# SIGSEGV 11 Core Invalid memory reference +#: siglist.c:94 +msgid "Segmentation fault" +msgstr "Adreseraro" + +# SIGSYS 12,-,12 Core Bad argument to routine (SVID) +#: siglist.c:98 +msgid "Bad system call" +msgstr "Misa sistemvoko" + +# SIGPIPE 13 Term Broken pipe: write to pipe with no readers +#: siglist.c:102 +msgid "Broken pipe" +msgstr "Rompita dukto" + +# SIGALRM 14 Term Timer signal from alarm(2) +#: siglist.c:106 +msgid "Alarm clock" +msgstr "VekhorloÄo" + +# SIGTERM 15 Term Termination signal +#: siglist.c:110 +msgid "Terminated" +msgstr "FiniÄu" + +# SIGURG 16,23,21 Ign Urgent condition on socket (4.2 BSD) +#: siglist.c:114 +msgid "Urgent IO condition" +msgstr "UrÄa stato eneliga" + +# SIGSTOP 17,19,23 Stop Stop process +# Nek kaptebla nek ignorebla (samkiel SIGKILL) +# Haltu (poste eblos plu iri, vd SIGCONT) +#: siglist.c:118 +msgid "Stopped (signal)" +msgstr "Haltu (signalo)" + +# SIGCONT 19,18,25 Continue if stopped +#: siglist.c:126 +msgid "Continue" +msgstr "Pluen" + +# SIGCHLD 20,17,18 Ign Child stopped or terminated +#: siglist.c:134 +msgid "Child death or stop" +msgstr "Procezido mortis aÅ­ haltis" + +# SIGTTIN 21,21,26 Stop tty input for background process +#: siglist.c:138 +msgid "Stopped (tty input)" +msgstr "Haltu (pro terminalenigo)" + +# SIGTTOU 22,22,27 Stop tty output for background process +#: siglist.c:142 +msgid "Stopped (tty output)" +msgstr "Haltu (pro terminaleligo)" + +# SIGIO 23,29,22 Term I/O now possible (4.2 BSD) +#: siglist.c:146 +msgid "I/O ready" +msgstr "Eneligo pretas" + +# SIGXCPU 24,24,30 Core CPU time limit exceeded (4.2 BSD) +#: siglist.c:150 +msgid "CPU limit" +msgstr "Ĉefprocesora tempolimo" + +# SIGXFSZ 25,25,31 Core File size limit exceeded (4.2 BSD) +#: siglist.c:154 +msgid "File limit" +msgstr "Dosiera longolimo" + +# SIGVTALRM 26,26,28 Term Virtual alarm clock (4.2 BSD) +#: siglist.c:158 +msgid "Alarm (virtual)" +msgstr "Vekilo (virtuala)" + +# SIGPROF 27,27,29 Term Profiling timer expired +#: siglist.c:162 +msgid "Alarm (profile)" +msgstr "Vekilo (profilada)" + +# SIGWINCH 28,28,20 Ign Window resize signal (4.3 BSD, Sun) +#: siglist.c:166 +msgid "Window changed" +msgstr "Fenestro ÅanÄiÄis" + +# SIGLOST -,-,- Term File lock lost +#: siglist.c:170 +msgid "Record lock" +msgstr "DosierÅloso" + +# SIGUSR1 30,10,16 Term User-defined signal 1 +#: siglist.c:174 +msgid "User signal 1" +msgstr "Uzulsignalo 1ª" + +#: siglist.c:178 +msgid "User signal 2" +msgstr "Uzulsignalo 2ª" + +# Harbor File Transfer: +#: siglist.c:182 +msgid "HFT input data pending" +msgstr "Pendas HFT-enigo" + +# SIGPWR 29,30,19 Term Power failure (System V) +#: siglist.c:186 +msgid "power failure imminent" +msgstr "Energiprovizo paneontas" + +# SIGDANGER +#: siglist.c:190 +msgid "system crash imminent" +msgstr "La sistemo estas kraÅonta" + +# SIGMIGRATE: +#: siglist.c:194 +msgid "migrate process to another CPU" +msgstr "La procezo iru al alia ĉefprocesoro" + +# SIGPRE +#: siglist.c:198 +msgid "programming error" +msgstr "Programeraro" + +# SIGGRANT (monopola??) +#: siglist.c:202 +msgid "HFT monitor mode granted" +msgstr "HFT-monitorreÄimo jesigita" + +#: siglist.c:206 +msgid "HFT monitor mode retracted" +msgstr "HFT-monitorreÄimo forprenita" + +#: siglist.c:210 +msgid "HFT sound sequence has completed" +msgstr "HFT-sonsekvenco finiÄis" + +# SIGINFO 29,-,- A synonym for SIGPWR +#: siglist.c:214 +msgid "Information request" +msgstr "Informmendo" + +#: siglist.c:222 siglist.c:224 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Nekonata signalo n-ro %d" + +#: subst.c:1476 subst.c:1666 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "Misa anstataÅ­igo: Mankas ferma „%s‟ en %s" + +#: subst.c:3281 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: Maleblas valorizi tabelanon per listo" + +#: subst.c:5910 subst.c:5926 +msgid "cannot make pipe for process substitution" +msgstr "Ne prosperis fari dukton por proceza anstataÅ­igo" + +#: subst.c:5985 +msgid "cannot make child for process substitution" +msgstr "Ne prosperis krei idon por proceza anstataÅ­igo" + +#: subst.c:6059 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "Ne prosperis malfermi nomitan dukton %s porlegan" + +#: subst.c:6061 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "Ne prosperis malfermi nomitan dukton %s por skribado" + +#: subst.c:6084 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "Ne prosperis kunnomumi nomhavan dukton %s kiel dosiernumeron %d" + +#: subst.c:6213 +msgid "command substitution: ignored null byte in input" +msgstr "Komanda anstataÅ­igo: nul-bajto en enigaĵo, ignorita" + +#: subst.c:6353 +msgid "cannot make pipe for command substitution" +msgstr "Ne prosperis fari dukton por komanda anstataÅ­igo" + +#: subst.c:6397 +msgid "cannot make child for command substitution" +msgstr "Ne prosperis krei procezidon por komanda anstataÅ­igo" + +#: subst.c:6423 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: Ne prosperis kunnomumi la dosiernumeron 1 al dukto" + +#: subst.c:6883 subst.c:9952 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: Misa variablonomo por nomreferenco" + +#: subst.c:6979 subst.c:6997 subst.c:7169 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: Misa malvolvo malrekta" + +#: subst.c:7013 subst.c:7177 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: MaltaÅ­ga variablonomo" + +#: subst.c:7256 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: Parametro estas malaktiva" + +#: subst.c:7258 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: Parametro estas NUL aÅ­ malaktiva" + +#: subst.c:7503 subst.c:7518 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: subĉeno-esprimo < 0" + +#: subst.c:9281 subst.c:9302 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: Misa anstataÅ­igo" + +#: subst.c:9390 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: ĉi tiel ne valorizebla" + +# XXX: internal warning: +#: subst.c:9814 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"Ontaj versioj de la Åelo plenumos komputon kiel aritmetikan anstataÅ­igon" + +#: subst.c:10367 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "Misa anstataÅ­igo: Mankas ferma „`‟ en %s" + +#: subst.c:11434 +#, c-format +msgid "no match: %s" +msgstr "Nenio kongrua: %s" + +#: test.c:147 +msgid "argument expected" +msgstr "Mankas argumento" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: Mankas entjera esprimo" + +#: test.c:265 +msgid "`)' expected" +msgstr "Mankas „)‟" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "AnstataÅ­ „)‟ troviÄas %s" + +#: test.c:466 test.c:799 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: Tie devas esti duloka operacisigno" + +#: test.c:756 test.c:759 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: Tie devas esti unuloka operacisigno" + +#: test.c:881 +msgid "missing `]'" +msgstr "Mankas „]‟" + +#: test.c:899 +#, fuzzy, c-format +msgid "syntax error: `%s' unexpected" +msgstr "Sintaksa eraro: Neatendita „;‟" + +#: trap.c:220 +msgid "invalid signal number" +msgstr "Misa signalnumero" + +#: trap.c:325 +#, c-format +msgid "trap handler: maximum trap handler level exceeded (%d)" +msgstr "" +"trap handler: La nivelo de kaptilotraktiloj superis sian maksimumon (%d)" + +# XXX: internal_warning +#: trap.c:414 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: Misa valoro en trap_list[%d]: %p" + +# XXX: internal_warning +#: trap.c:418 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: Signaltraktilo SIG_DFL resendas %d (%s) al mi mem" + +#: trap.c:487 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: Misa signalnumero %d" + +#: variables.c:421 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "Eraro ĉe importo de funkcidifino por „%s‟" + +# XXX: internal_warning +#: variables.c:833 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "%d estas tro granda Åelnivelo; mallevita Äis 1" + +# XXX: internal_error +#: variables.c:2674 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: Malestas funkcia kunteksto en ĉi-regiono" + +#: variables.c:2693 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: Variablo ne valorizebla" + +#: variables.c:3475 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: Nomreferenco valorizata per entjero" + +# XXX: internal_error +#: variables.c:4404 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: Malestas funkcia kunteksto en ĉi-regiono" + +# XXX: internal_error +#: variables.c:4771 +#, c-format +msgid "%s has null exportstr" +msgstr "«exportstr» de %s estas NUL" + +# XXX: internal_error +#: variables.c:4776 variables.c:4785 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "Misa signo %d en eksporta signoĉeno por „%s‟" + +# XXX: internal_error +#: variables.c:4791 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "Mankas „=‟ en eksporta signoĉeno por „%s‟" + +# XXX: internal_error +#: variables.c:5331 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context: La kapo de „shell_variables‟ ne estas funkcia kunteksto" + +# XXX: internal_error +#: variables.c:5344 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: Mankas kunteksto de „global_variables‟" + +# XXX: internal_error +#: variables.c:5424 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: La kapo de „shell_variables‟ ne estas provizora regiono" + +# XXX: internal_error +#: variables.c:6387 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: Ne malfermeblas kiel DOSIERO" + +# XXX: internal_error +#: variables.c:6392 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: Misa valoro por spurada dosiernumero (trace file descriptor)" + +# # XXX: internal_error +#: variables.c:6437 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s kongruo-nivelo estas ekster sia variejo" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2020 Free Software Foundation, Inc." +msgstr "Copyright (C) 2018 ĉe «Free Software Foundation, Inc.»" + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"La permesilo estas GPLv3+; t.e. GNU GPL, versio 3ª aÅ­ pli nova.\n" +"La tekston vd ĉe \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNUa «bash», versio %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Ĉi tiu programo estas libera; vi rajtas libere Äin ÅanÄi kaj pludoni." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "NENIA GARANTIO estas donita, tiom kiom tion permesas la leÄo." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: Malsukcesis okupi %lu bajtojn (%lu bajtoj disponigitaj)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: Malsukcesis okupi %lu bajtojn" + +# XXX: fatal_error +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: Malsukcesis okupi %lu bajtojn (%lu bajtoj disponigitaj)" + +# XXX: fatal_error +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: Malsukcesis okupi %lu bajtojn" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [NOMO[=VALORO] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] NOMO [NOMO ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m KLAVARTABELO] [-f DOSIERNOMO] [-q NOMO]\n" +" [-u NOMO] [-r KLAVAÄ´O] [-x KLAVAÄ´O:ÅœELKOMANDO]\n" +" [KLAVAÄ´O:READLINE-FUNKCIO AŬ READLINE-KOMANDO] " + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [N]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [N]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [ÅœELAÄ´O [ARG ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [ESPRIMO]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [DOSIERUJO]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] KOMANDO [ARG ...]" + +#: builtins.c:78 +#, fuzzy +msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [NOMO[=VALORO] ...]" + +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] NOMO[=VALORO] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [OPCIO] NOMO[=VALORO] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [ARG ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [ARG ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f DOSIERNOMO] [NOMO ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [ARG ...]" + +#: builtins.c:96 +#, fuzzy +msgid "getopts optstring name [arg ...]" +msgstr "getopts OPCIĈENO NOMO [ARG]" + +#: builtins.c:98 +#, fuzzy +msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]" +msgstr "exec [-cl] [-a NOMO] [KOMANDO [ARGUMENTOJ ...]] [ALIDIREKTADO ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [N]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [N]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "" +"fc [-e REDAKTILO] [-lnr] [UNUA] [LASTA] aÅ­\n" +"fc -s [ÅœABLONO=ANST] [KOMANDO]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [LABORINDIKO]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [LABORINDIKO]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p VOJNOMO] [-dt] [NOMO ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [ÅœABLONO ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d POZICIO] [n] aÅ­\n" +"history -awr [DOSIERNOMO] aÅ­\n" +"history -ps ARG [ARG...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "" +"jobs [-lnprs] [LABORINDIKO ...] aÅ­\n" +"jobs -x KOMANDO [ARGS]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [LABORINDIKO ... | PROCEZNUMERO ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] [PN | LABORINDIKO] ... aÅ­\n" +"kill -l [SIGNOM]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let ARG [ARG ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a TABELO] [-d DISIG] [-i TEKSTO]\n" +" [-n NSIGN] [-N NSIGN] [-p INVIT] [-t TLIM]\n" +" [-u DN] [NOMO ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [N]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [NOMO ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [NOMO[=VALORO] ...] aÅ­ export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [NOMO[=VALORO] ...] aÅ­ readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [N]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source DOSIERNOMO [ARGUMENTOJ]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". DOSIERNOMO [ARGUMENTOJ]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [ESPRIMO]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ ARG... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[ARG] SIGNALINDIKO ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] NOMO [NOMO ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [LIMO]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [REÄœIMO]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [-p var] [id ...]" +msgstr "wait [-fn] [IND ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [PN ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOMO [in VORTOJ ... ] ; do KOMANDOJ; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( ESPR1; ESPR2; ESPR3 )); do KOMANDOJ; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NONO [in VORTOJ ... ;] do KOMANDOJ; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] DUKTO" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case VORTO in [ÅœABLONO [| ÅœABLONO]...) KOMANDOJ ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if KOMANDOJ; then KOMANDOJ; [ elif KOMANDOJ; then KOMANDOJ; ]... [ else " +"KOMANDOJ; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while KOMANDOJ; do KOMANDOJ; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until KOMANDOJ; do KOMANDOJ; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NOMO] KOMANDO [ALIDIREKTADOJ]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function NOMO { KOMANDOJ ; } aÅ­ NOMO () { KOMANDOJ ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ KOMANDOJ ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "LABORINDIKO [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( ESPRIMO ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ ESPRIMO ]]" + +# Ĉu "variables" estas serĉa Ålosilo ? +# T.e. "help var" aÅ­ "help variabl", sed ne "nelp variabloj"? +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "var - Nomoj kaj signifo de kelkaj Åelvariabloj" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | DOSIERUJO]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [OPCINOMO ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v VAR] FORMATO [ARGUMENTOJ]" + +#: builtins.c:231 +#, fuzzy +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPCIO] [-A AGO] [-G ÅœABLONO]\n" +" [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO]\n" +" [-P PREFIKSO] [-S SUFIKSO] [NOMO ...]" + +#: builtins.c:235 +#, fuzzy +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-" +"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G ÅœABLONO]\n" +" [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO]\n" +" [-P PREFIKSO] [-S SUFIKSO] [VORTO]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DEI] [name ...]" +msgstr "compopt [-o|+o OPCIO] [-DEI] [NOMO ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d DISIG] [-n KIOM] [-O ORIGINO] [-s KIOM] [-t] [-u DN]\n" +" [-C RETROVOKO] [-c KVANTO] [TABELO]" + +#: builtins.c:244 +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-d DISIG] [-n KIOM] [-O ORIGINO] [-s KIOM] [-t]\n" +" [-u DN] [-C RETROVOKO] [-c KVANTO] [TABELO]" + +# alias: +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Difinu aÅ­ listigu alinomojn.\n" +"\n" +" Sen argumento aÅ­ kun la opcio -p „alias‟ eligas en la ĉefeligujon\n" +" la liston da alinomoj en la reuzebla formo «alias NOMO=VALORO».\n" +"\n" +" Alie, ĉiu NOMO iÄas difinita kiel alinomo por indikita VALORO.\n" +" Vosta spaceto en la VALORO kaÅ­zas teston, ĉu la sekva vorto estas\n" +" alinome anstataÅ­igenda ĉe la komputo de la alinomo.\n" +"\n" +" Opcioj:\n" +" -p\teligu ĉiujn difinitajn alinomojn en reuzebla formo.\n" +"\n" +" Elirstato:\n" +" La komando „alias‟ liveras „true‟ krom se aperas NOMO ne difinita\n" +" alinome." + +# unalias [-a] name [name ...] +# unalias [-a] NOMO [NOMO ...] +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Forigu la NOMOjn el la listo de difinitaj alinomoj.\n" +"\n" +" Opcioj:\n" +" -a\tSe enestas la opcio „-a‟, ĉiujn alinomojn forigu\n" +"\n" +" Liveru sukceson krom se name ne estas difinita alinome." + +# bind [-lpvsPVS] [-m KLAVARTABELO] [-f DOSIERNOMO] [-q NOMO] [-u NOMO] +# [-r KLAVAÄ´O] [-x KLAVAÄ´O:ÅœELKOMANDO] +# [KLAVAÄ´O:READLINE-FUNKCIO AŬ READLINE-KOMANDO] +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Difinu klavligojn kaj variablojn.\n" +"\n" +" Ligu klavosekvencon al linilega funkcio, aÅ­ al makroo, aÅ­ valorizu\n" +" linilegan variablon. La sintakso de ne-opcia argumento estas tiu\n" +" de «~/.inputrc», tamen la ligon oni esprimu unuargumente; ekz-e:\n" +" bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +"\n" +" Opcioj:\n" +" -m KLAVARTABELO Uzu KLAVARTABELOn dum la daÅ­ro de ĉi tiu komando.\n" +" La eblaj nomoj de klavartabelo estas: „emacs‟,\n" +" „emacs-standard‟, „emacs-meta‟, „emacs-ctlx‟,\n" +" „vi‟, „vi-move‟, „vi-command‟ kaj „vi-insert‟.\n" +" -l Listigu funkcinomojn.\n" +" -P Listigu funkcinomojn kaj klavligojn.\n" +" -p Listigu funkcinomojn kaj klavligojn en formo\n" +" reuzebla por enigo.\n" +" -S Listigu makroajn klavsekvencojn kaj ilian valoron.\n" +" -s Listigu makroajn klavsekvencojn kaj ilian valoron\n" +" en formo reuzebla por enigo.\n" +" -V Listigu variablonomojn kaj ilian valoron.\n" +" -v Listigu variablonomojn kaj ilian valoron en formo\n" +" reuzebla por enigo.\n" +" -q FUNKCINOMO Demando pri la klavoj ligitaj al la FUNKCINOMO.\n" +" -u FUNKCINOMO Malligu ĉiujn klavligojn disde la FUNKCINOMO.\n" +" -r KLAVAÄ´O Forigu la ligon de la klavsekvenco KLAVAÄ´O\n" +" -f DOSIERNOMO Legu klavligojn el DOSIERNOMO\n" +" -x KLAVAÄ´O:ÅœELKOMANDO La ÅœELKOMANDO plenumiÄu ĉe enigo de KLAVAÄ´O.\n" +" -X Listigu klavosekvencojn ligitajn per „-x‟ kaj la\n" +" koncernajn komandojn en formo reuzebla por enigo.\n" +" \n" +" Elirstato:\n" +" 0, krom se nekonata opcio estas donita aÅ­ eraro okazis." + +# exit: +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Finu iteracion FOR, WHILE aÅ­ UNTIL\n" +"\n" +" Eliru ekster iteracion FOR, WHILE aÅ­ UNTIL. Se N estas donita,\n" +" iru N iteraciajn nivelojn eksteren.\n" +"\n" +" Elirstato:\n" +" Äœi estas 0, kondiĉe ke N estas pli granda ol aÅ­ egala al 1." + +# continue: +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"DaÅ­rigu iteraciadon de ordono FOR, WHILE aÅ­ UNTIL\n" +"\n" +" Pasu al la sekva iteraciero de FOR, WHILE aÅ­ UNTIL.\n" +" Se N estas donita, eliru Äis la nivelon de la Nª inganta\n" +" iteraciordono.\n" +"\n" +" Elirstato:\n" +" Äœi estas 0, kondiĉe ke N estas pli granda ol aÅ­ egala al 1." + +# builtin [shell-builtin [arg ...]] +# builtin [ÅœELAÄ´O [ARG ...]] +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin." +msgstr "" +"Rulu primitivan Åelkomandon\n" +"\n" +" Plenumu primitivan Åelkomandon ÅœELAÄ´O kun la argumentoj ARG sen la\n" +" normala komadoserĉo. Tio utilas se oni volas uzi la nomon de\n" +" Åelaĵo por nomi funkcion, sed bezonas la koncernan primitivon en\n" +" la funkcio mem.\n" +"\n" +" Elirstato:\n" +" Tiu de de ÅœELAÄ´O; aÅ­ malsukceso, se ÅœELAÄ´O ne estas primitiva\n" +" Åelkomando." + +# caller [expr] => +# caller [ESPRIMO] +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Liveru la kuntekston de la kuranta procedurvoko\n" +"\n" +" Se ESPRIMO malestas, liveru «$line $filename». Se ESPRIMO\n" +" ĉeestas, liveru «$line $subroutine $filename»; ĉi tiu krominformo\n" +" uzeblas por vidigi la vok-stakon.\n" +"\n" +" La valoro de ESPRIMO indikas, kiom da vokkadroj retroiri disde la\n" +" kuranta; la pinta kadro havas la numeron 0.\n" +"\n" +" Elirstato:\n" +" Äœi estas 0, kondiĉe ke la Åelo plenumas Åelfunkcion kaj la ESPRIMO\n" +" estas valida." + +# cd: +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"ÅœanÄu la kurantan laboran dosierujon de la Åelo.\n" +"\n" +" La kuranta dosierujo iÄu DOSIERUJO -- aÅ­, se DOSIERUJO malestas,\n" +" la valoro de la variablo $HOME.\n" +"\n" +" La variablo $CDPATH difinas la serĉvojon por la dosierujo\n" +" entenanta DOSIERUJOn. En $CDPATH, dupunkto „:‟ apartigas\n" +" alternativajn dosierujojn, vakua dosierujnomo egalas la kurantan.\n" +" Se DOSIERUJO komenciÄas per „/‟, la variablo $CDPATH ne estas uzata.\n" +"\n" +" Se la dosierujo ne troviÄas, kaj la Åela opcio „cdable_vars‟ estas\n" +" Åaltita, la vorto estas interpretata kiel variablonomo. Se tiu\n" +" variablo havas valoron, tiu valoro estas uzata kiel DOSIERUJO.\n" +"\n" +" Opcioj:\n" +" -L\tlaÅ­u simbolajn Ligilojn: en DOSIERUJO, traktu la aperojn de\n" +"\t„..“ antaÅ­ ol elnodigi la simbolajn ligilojn\n" +" -P\tuzu la Fizikan strukturon de dosierujoj, elnodiginte simbolajn\n" +"\tligilojn de DOSIERUJO antaÅ­ ol trakti la aperojn de „..“\n" +" -e\teliru kun nenula elirstato se „-P‟ ĉeestas kaj la\n" +"\tkuranta dosierujo ne estas determinebla\n" +" -@\tse la operaciumo tion ebligas, prezentu dosieron posedantan\n" +"\tkromatributojn kiel dosierujon entenatan la dosieratributojn\n" +"\n" +" DefaÅ­lte la simbolaj ligiloj estas laÅ­ataj, kvazaÅ­ „-L‟ ĉeestus.\n" +" La traktado de „..“ konsistas en forigo de la ĵus-antaÅ­a vojnoma\n" +" ero retrodirekte Äis la oblikvo „/“ aÅ­ la komenco de DOSIERUJO.\n" +"\n" +" Elirstato:\n" +" Äœi estas 0, se la dosierujÅanÄo sukcesis, kaj se, ĉeeste de „-P‟,\n" +" $PWD sukcese valoriziÄis; nenulo aliokaze." + +# pwd [-LP] +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Eligu la nomon de kuranta labora dosierujo\n" +"\n" +" Opcioj:\n" +" -L eligu la valoron de $PWD, se Äi indikas la kurantan laboran\n" +" dosierujon\n" +" -P eligu la nomon de la fizika dosierujo, sen eventualaj simbolaj\n" +" ligiloj\n" +"\n" +" DefaÅ­lte „pwd‟ kondutas tiel, kiel kun la opcio „-L‟.\n" +"\n" +" Elirstato:\n" +" 0, krom se aperas misa opcio aÅ­ la kuranta dosierujo estas\n" +" nelegebla." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Malplena ordono\n" +"\n" +" Senefika: La komando nenion faras.\n" +"\n" +" Elirstato:\n" +" Ĉiam sukcesa." + +# true +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Liveru sukcesan rezulton\n" +"\n" +" Elirstato:\n" +" Ĉiam sukcesa." + +# false: +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Liveru fiaskon.\n" +"\n" +" Elirstato:\n" +" Ĉiam malsukcesa." + +# command [-pVv] command [arg ...] +# command [-pVv] KOMANDO [ARG ...] +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Plenumu simplan komandon aÅ­ vidigu informojn pri komandoj\n" +"\n" +" Plenumu KOMANDOn kun ARGoj sen atenti eventualajn Åelfunkciojn\n" +" samnomajn; aÅ­ vidigu informojn pri indikitaj KOMANDOj. Uzeblas\n" +" por voki komandojn de disko malgraÅ­ la ekzisto de samnomaj\n" +" funkcioj.\n" +"\n" +" Opcioj:\n" +" -p Uzu la defaÅ­ltan valoron de la de la variablo $PATH (tio\n" +"\tebligas trovi ĉiujn normajn utilaĵojn)\n" +" -v\tEligu komandopriskribon laÅ­ la maniero de la primitivaĵo „type‟\n" +" -V\tEligu pli detalan priskribon de KOMANDO\n" +"\n" +" Elirstato:\n" +" Tiu de KOMANDO; aÅ­ malsukceso, se KOMANDO ne troveblas." + +# declare [-aAfFgilnrtux] [-p] [name[=value] ...] +# declare [-aAfFgilnrtux] [-p] [NOMO[=VALORO] ...] +#: builtins.c:490 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -I\tif creating a local variable, inherit the attributes and value\n" +" \t\tof a variable with the same name at a previous scope\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Difinu valorojn aÅ­ atributojn de variabloj.\n" +"\n" +" Deklaru variablojn aÅ­ atribuu al ili atributojn.\tSe NOMOj\n" +" mankas, anstataÅ­e eligu la valoron de ĉiuj variabloj.\n" +"\n" +" Opcioj:\n" +" -f\tla ago aÅ­ eligo koncernu nur la funkciajn NOMOjn kaj difinojn\n" +" -F\teligu nur funkcinomojn (ĉe erarserĉo, ankaÅ­ lininumeron kaj\n" +"\tfontodosieran nomon) sen difinoj\n" +" -g se uzita en Åelfunkcio, kreu mallokan variablon;\n" +" aliokaze, ignoru\n" +" -p\teligu la atributojn kaj la valorojn de ĉiu NOMO\n" +"\n" +" Opcioj atributdonaj:\n" +" -a\tla NOMOj estu entjerindicaj tabeloj (se realigite)\n" +" -A\tla NOMOj estu asocitabeloj (se realigite)\n" +" -i\thavigu al la variabloj NOMOj la atributon „integer‟ (entjera)\n" +" -l\tminuskligu la valoron de ĉiu NOMO ĉe valorizo\n" +" -n NOMO estu referenco al variablo nomata per Äia valoro\n" +" -r\tla variabloj NOMOj estu nurlegaj\n" +" -t\thavigu al la NOMOj la atributon „trace‟ (spurata)\n" +" -u\tmajuskligu la valoron de ĉiu NOMO ĉe valorizo\n" +" -x\teksportu la variablojn NOMOj\n" +"\n" +" La uzo de „+‟ anstataÅ­ „-‟ malÅaltas la koncernan attributon.\n" +"\n" +" Por la variabloj posedantaj la atributon entjera, ĉe ĉiu valorizo\n" +" okazas aritmetika komputado (vd la komandon „let‟).\n" +" \n" +" Uzite en funkcio, „declare‟ faras la NOMOjn lokaj, samkiel la\n" +" komando „local‟. La opcio „-g‟ ĉi tiun efikon abolas.\n" +"\n" +" Eliistato:\n" +" Sukceso, krom se aperas misa opcio aÅ­ okazas eraro ĉe valorizo de " +"variablo." + +# typeset [-aAfFgilrtux] [-p] name[=value] ... +#: builtins.c:532 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Difinu atributojn kaj valorojn de variabloj\n" +"\n" +" Sinonimo de „declare“. Vd «help declare»." + +# local [option] name[=value] ... +# local [OPCIO] NOMO[=VALORO] ... +#: builtins.c:540 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Difinu lokajn variablojn\n" +"\n" +" Kreu lokan variablon NOMO kaj Äin valorizu per VALORO. OPCIO\n" +" povas esti ajna el la opcioj de „declare‟.\n" +"\n" +" Lokaj variabloj uzeblas nur ene de funkcio; ili estas videblaj nur\n" +" en la funkcio kie ili estas difinitaj kaj en Äiaj idoj.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se aperas misa opcio, okazas valoriza eraro, aÅ­ la\n" +" Åelo ne estas plenumanta funkcion." + +# echo: +#: builtins.c:557 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \\uHHHH\tthe Unicode character whose value is the hexadecimal value " +"HHHH.\n" +" \t\tHHHH can be one to four hex digits.\n" +" \\UHHHHHHHH the Unicode character whose value is the hexadecimal " +"value\n" +" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Eligu la argumentojn en la ĉefeligujon\n" +"\n" +" Eligu en la ĉefeligujon la ARGojn disigante ilin per po unu\n" +" spaceto, postmetu linirompon.\n" +"\n" +" Opcioj:\n" +" -n\tne aldonu la finan linirompon\n" +" -e\taktivigu interpretadon de la ĉi-subaj eskapaj deklivaĵoj\n" +" -E\tmalaktivigu interpretadon de la ĉi-subaj espapaj deklivaĵoj\n" +"\n" +" „echo‟ povas interpreti la sekvajn literojn prefiksitajn per\n" +" deklivo (per la signo „\\‟):\n" +"\t\\a\tpepo (sonsignalo)\n" +"\t\\b\tretropaÅo\n" +"\t\\c\tĉesigu pluan eligon\n" +"\t\\e\teskapsigno\n" +"\t\\E\teskapsigno\n" +"\t\\f\tpaÄ-avanco\n" +"\t\\n\tlinifino\n" +"\t\\r\tĉaretreveno\n" +"\t\\t\thorizontala tabo\n" +"\t\\v\tvertikala tabo\n" +"\t\\\\\tdeklivo „\\‟\n" +"\t\\0CCC\tla signo kies Askia kodono estas CCC (okume). CCC\n" +"\t\tpovas enteni 0, 1, 2 aÅ­ 3 okumajn ciferojn\n" +"\t\\xHH\tla signo kies 8-bita kodono estas HH (16-ume). HH\n" +"\t\tpovas enteni unu aÅ­ du 16-umajn ciferojn\n" +" \\uHHHH la Unikoda signo kies kodono estas la 16-uma\n" +" nombro HHHH. HHHH povas enteni de unu Äis kvar\n" +" 16-umajn ciferojn.\n" +" \\UHHHHHHHH la Unikoda signo kies kodono estas la 16-uma\n" +" nombro HHHHHHHH. HHHHHHHH povas enteni de unu Äis\n" +" ok 16-umajn ciferojn.\n" +"\n" +" Elirstato:\n" +" Sukcesa, krom se okazas elig-eraro." + +# echo [-n] [ARG ...] +#: builtins.c:597 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Skribu argumentojn en la ĉefeligujon\n" +"\n" +" Eligu la ARGojn en la ĉefeligujon, aldonu linifinilon.\n" +"\n" +" Opcio:\n" +" -n Ne aldonu postan linifinilon\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se okazas skriberaro." + +# enable [-a] [-dnps] [-f filename] [name ...] +# enable [-a] [-dnps] [-f DOSIERNOMO] [NOMO ...] +#: builtins.c:612 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Aktivigu aÅ­ malaktivigu primitivajn komandojn\n" +"\n" +" Aktivigu aÅ­ malaktivigu primitivajn Åelkomandojn. Tio ebligas\n" +" uzi eksteran komandon, samnoman kun primitivaĵo, sen indiki\n" +" Äian plenan vojon.\n" +"\n" +" Opcioj:\n" +" -a\tListigu la primitivaĵojn indikante, ĉu ili estas aktivaj\n" +" -n Malaktivigu la NOMOjn, aÅ­ listigu la malaktivajn primitivaĵojn\n" +" -p\tListigu primitivaĵojn en formo taÅ­ga por reuzo\n" +" -s Eligu nur la «specialajn» Åelfunkciojn de Posix\n" +"\n" +" Opcioj regantaj dinamikan Åargadon:\n" +" -f\tÅœargu primitivaĵon NOMO el la dinamika biblioteko DOSIERNOMO\n" +" -d Forigu Åelkomandon dinamike Åargitan per -f\n" +"\n" +" Senopcie: Aktivigu ĉiujn NOMOjn\n" +"\n" +" Ekz-e por uzi la „test‟on troveblan en $PATH anstataÅ­ la\n" +" samnoman primitivan Åelkomandon, diru: «enable -n test».\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se NOMO ne estas primitiva Åelkomando aÅ­ okazis\n" +" eraro." + +# eval [ARG ...] +#: builtins.c:640 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Plenumu argumentojn kiel Åelkomandon\n" +"\n" +" Kunmetu la ARGojn en unu ĉenon, uzu la rezulton kiel enigaĵon por\n" +" la Åelo kaj plenumu la legita(j)n komando(j)n.\n" +"\n" +" Elirstato:\n" +" Tiu de la komandoĉeno; sukceso, se la komando estas vakua." + +# getopts optstring name [arg] => +# getopts OPCIĈENO NOMO [ARG] +#: builtins.c:652 +#, fuzzy +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters, but if arguments\n" +" are supplied as ARG values, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Analizu opciajn argumentojn\n" +"\n" +" La funkcion „getopts‟ uzas Åelproceduroj por analizi opciformajn\n" +" numerparametrojn.\n" +"\n" +" La argumento OPCIĈENO entenas la rekonendajn opciliterojn; se\n" +" literon sekvas dupunkto, la opcio postulas argumenton, disde Äi\n" +" apartigendan per blanka spaco.\n" +"\n" +" Ĉe ĉiu voko „getopts‟ liveros la vican opcion en la Åelvariablon\n" +" $NOMO (estigante la variablon se Äi ne ekzistas); kaj la indicon\n" +" de la sekve traktota argumento en la Åelvariablon OPTIND. OPTIND\n" +" ricevas la komencan valoron 1 ĉe ĉiu voko de la Åelo aÅ­ Åela\n" +" skripto. Kiam opcio bezonas argumenton, „getopts‟ liveras tiun\n" +" argumenton en la Åelvariablon OPTARG.\n" +"\n" +" La funkcio „getopts‟ raportas pri eraroj dumaniere. Se la unua\n" +" signo de OPCIĈENO estas dupunkto, „getopts‟ prisilentas\n" +" erarojn. En tiu reÄimo, nenia erarmesaÄo estas eligata.\n" +" Renkontinte misan opcion, „getopts‟ metas la trovitan opciliteron\n" +" en OPTARG. Se mankas bezonata argumento, la Åelvariablo NOMO\n" +" ricevas la valoron ':', kaj la variablo OPTARG, la trovitan\n" +" opcion. Se „getopts‟ ne estas en silenta reÄimo kaj trovas\n" +" misan opcion, tiam NOMO ricevas la valoron '?' kaj OPTARG\n" +" senvaloriÄas. Se mankas bezonata opcio, NOMO ricevas la\n" +" valoron '?', OPTARG senvaloriÄas kaj erarmesaÄo estas eligata.\n" +"\n" +" Se la Åelvariablo OPTERR havas la valoron 0, „getopts‟\n" +" malaktivigas la eligon de erarmesaÄoj, eĉ se la unua signo de\n" +" OPCIĈENO ne estas dupunkto. La apriora valoro de OPTERR estas 1.\n" +"\n" +" Normale „getopts‟ analizas la numerparametrojn ($0 - $9), sed se\n" +" estas pli da argumentoj, „getopts‟ anstataÅ­e analizas ilin.\n" +"\n" +" Elirstato:\n" +" Sukceso, se opcio estas trovita; malsukceso, se renkontiÄis\n" +" la fino de la opcioj aÅ­ okazis eraro." + +# exec [-cl] [-a name] [command [arguments ...]] [redirection ...] +# exec [-cl] [-a NOMO] [KOMANDO [ARGUMENTOJ ...]] [ALIDIREKTADO ...] +#: builtins.c:694 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"AnstataÅ­igu la Åelon je la donita komando\n" +"\n" +" Plenumu la KOMANDOn, anstataÅ­igante la Åelon je la donita\n" +" programo. La ARGUMENTOj servas kiel argumentoj por KOMANDO.\n" +" Se KOMANDO ne estas indikita, la alidirektadoj okazu en \n" +" la kuranta Åelo.\n" +"\n" +" Opcioj:\n" +" -a NOMO Pasigu NOMOn al KOMANDO kiel la argumenton argv[0]\n" +" -c\tLa plenumo de KOMANDO okazu en vakua medio\n" +" -l\tMetu minuson en la nulan argumenton pasigatan al KOMANDO\n" +"\n" +" Se la komandon ne eblas plenumi kaj la Åelo ne estas dialoga, tiam\n" +" la Åelo finiÄas, krom se la opcio „execfail‟ estas aktiva.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se KOMANDO ne estas trovita aÅ­ okazis eraro pri\n" +" alirektado." + +# exit [n] +#: builtins.c:715 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Forlasu la Åelon\n" +"\n" +" Forlasu la Åelon kun elirstato N. Se N mankas, la elirstato\n" +" estas tiu de la plej ĵuse plenumita komando." + +# logout [N] +#: builtins.c:724 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"AdiaÅ­, saluta Åelo!\n" +"\n" +" Eliru el saluta Åelo kun la elirstato N. Liveru malsukceson, se\n" +" plenumate ne en saluta Åelo." + +# ZZZ: fc [-e ename] [-nlr] [first] [last] or +# fc -s [pat=rep] [command] => +# fc [-e REDAKTILO] [-lnr] [UNUA] [LASTA] aÅ­ +# fc -s [ÅœABLONO=ANST] [KOMANDO] +#: builtins.c:734 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Eligu aÅ­ plenumu komandojn el la historilisto\n" +"\n" +" „fc‟ servas por listigi aÅ­ redakti kaj replenumi komandojn el la\n" +" historilisto. UNUA kaj LASTA povas esti numeroj, indikantaj\n" +" intervalon da numeroj; aÅ­, se UNUA estas signoĉeno, Äi indikas\n" +" la plej ĵusan komandon komenciÄantan per tiu signoĉeno.\n" +"\n" +" Opcioj:\n" +" -e REDAKTILO\tla uzota redaktilo. DefaÅ­lte FCEDIT, poste\n" +"\tEDITOR, poste „vi‟\n" +" -l\tnur eligu la liniojn sen redakti ilin\n" +" -n\teligu sennumere (nur la liniojn)\n" +" -r\tinversigu la ordon de la linioj (komencu per la plej ĵusaj).\n" +"\n" +" «fc -s [ÅœABLONO=ANST ...] [KOMANDO]» plenumas la KOMANDOn en kiu\n" +" ĉiu apero de ÅœABLONO estas la anstataÅ­igita je ANST.\n" +"\n" +" Oportuna alinomo por tio estas «alias r='fc -s'», tiel ke ekz-e per\n" +" «r cc» oni rulos la plej ĵusan komandon komenciÄantan per «cc», kaj\n" +" per «r» replenumigas la ĵusan komandon.\n" +"\n" +" Elisrstato:\n" +" Sukceso, aÅ­ la elirstato de la plenumita KOMANDO; nenulo, se okazis\n" +" eraro." + +# fg [job_spec] => fg [LABORINDIKO] +#: builtins.c:764 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Movu laboron en la dialogon\n" +"\n" +" Faru la laboron LABORINDIKO dialoga kaj la kuranta. Se\n" +" LABORINDIKO malestas, apliku la Åelan koncepton pri la kuranta\n" +" laboro.\n" +"\n" +" Elirstato:\n" +" Tiu de la dialogigita komando; aÅ­ malsukceso, se okazis eraro." + +# bg [job_spec] => bg [LABORINDIKO] +#: builtins.c:779 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"ForÅovu laboron fonen\n" +"\n" +" ForÅovu la laboron LABORINDIKO en la fonon, faru Äin kvazaÅ­\n" +" lanĉita kun „&‟. Se nenia laboro estas indikita, apliku la\n" +" Åelan koncepton pri la kuranta laboro.\n" +"\n" +" Elirstato:\\n\"\n" +" Sukceso, kondiĉe ke laborregadon estas Åaltita kaj ne okazis\n" +" eraro." + +# hash [-lr] [-p VOJNOMO] [-dt] [NOMO ...] +#: builtins.c:793 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Registru aÅ­ vidigu vojnomojn de programoj\n" +"\n" +" Por ĉiu komando NOMO, trovu kaj registru en hakettabelo la\n" +" kompletan vojon al ties programo. Se nenia argumento estas\n" +" donita, eligu la informojn pri la memorataj komandoj.\n" +"\n" +" Opcioj:\n" +" -d Forgesu la registritajn vojojn por ĉiu NOMO\n" +" -l Eligu en formo reuzeblan por enigo\n" +" -p VOJNOMO\tuzu VOJNOMOn kiel kompletan vojon por la NOMO\n" +" -r Forgesu ĉiujn registritajn vojojn\n" +" -t Eligu la registritajn vojojn por ĉiu NOMO, mentante la NOMOn\n" +" titole antaÅ­ Äia vojo se estas pluraj NOMOj\n" +"\n" +" Argumentoj:\n" +" NOMO Ĉiu NOMO estas serĉota en $PATH kaj registrota en la\n" +"\thakettabelo de registritaj komandoj\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se aperas netrovebla NOMO aÅ­ misa opcio." + +# help [-ds] [pattern ...] +# help [-ds] [ÅœABLONO ...] +#: builtins.c:818 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Vidigu informon pri prmitivaj komandoj\n" +"\n" +" Eligu mallongan resummon pri la primitivaj komandoj. Se ĉeestas\n" +" ÅœABLONO, eligu detalan helpon pri ĉiuj komandoj kongruaj kun la\n" +" Åablono; alie eligu nur liston da temoj.\n" +"\n" +" Opcioj:\n" +" -d\tEligu mallongajn priskribojn de ĉiuj temoj\n" +" -m\tVidigu uzmanieron en la „manpaÄa‟ stilo (kiel la komando „man‟)\n" +" -s\tEligu nur mallongan resumon pri ĉiu trovita kongruaĵo\n" +"\n" +" Argumentoj:\n" +" ÅœABLONO Komenca signoĉeno de temtitolo\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se mankas kongruaĵoj por ÅœABLONO, aÅ­ aperis\n" +" misa opcio." + +# ZZZ history [-c] [-d offset] [n] or +# history -awr [filename] or +# history -ps arg [arg...] => +# history [-c] [-d POZICIO] [n] aÅ­ +# history -awr [DOSIERNOMO] aÅ­ +# history -ps ARG [ARG...] +#: builtins.c:842 +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Eligu aÅ­ redaktu la historiliston.\n" +"\n" +" Eligu la liston de enigitaj komandoj kun lininumeroj. La ÅanÄitajn\n" +" liniojn marku per „*‟. Kun argumento n, eligu nur la ĵusajn\n" +" n liniojn.\n" +"\n" +" Opcioj:\n" +" -c forviÅu la tutan historion (forigu ĉiujn erojn el la listo)\n" +" -d POZICIO forviÅu la linion kies numero estas POZICIO. Por\n" +" POZICIO negativa la numerado iras reen ekde la fino de la\n" +" historio \n" +" -a aldonu la historiliniojn de la kuranta seanco al la\n" +" historidosiero\n" +" -n legu ĉiujn ankoraÅ­ ne legitajn liniojn el la historidosiero\n" +" kaj aldonu ilin en la historiliston\n" +" -r legu la dosieron kaj aldonu Äian enhavon al la kuranta\n" +" historilisto\n" +" -w konservu la kurantan historion en la historidosiero\n" +"\n" +" -p plenumu historian anstataÅ­igon por ĉiu el la argumentoj ARG\n" +" kaj eligu la rezulton sen konservi ion en la historilisto\n" +"\n" +" -s enÅovu la neopciajn argumentojn ARG en la historiliston\n" +" kiel unu apartan linion\n" +"\n" +" Se ĉeestas DOSIERNOMO, uzu Äin kiel nomon de historidosiero;\n" +" alie, se la variablo HISTFILE havas valoron, uzu ĉi tiun;\n" +" alie uzu «~/.bash_history».\n" +"\n" +" Se la variablo HISTTIMEFORMAT havas valoron kaj se ĉi tiu ne\n" +" estas null, tiam Äi servu kiel formata ĉeno en strftime(3) por\n" +" tempostampi ĉiun linion en eligaĵoj de historio. Aliokaze nenia\n" +" tempostampo estu eligata.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se renkontiÄas mis opcio aÅ­ okazis eraro." + +# ZZZ jobs [-lnprs] [jobspec ...] or +# jobs -x command [args] => +# jobs [-lnprs] [LABORINDIKO ...] aÅ­ +# jobs -x KOMANDO [ARGS] +#: builtins.c:879 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Montru la staton de laboroj\n" +"\n" +" Eligu liston da aktivaj laboroj. Se LABORINDIKO estas donita,\n" +" nur pri tiu laboro informu. Senopcie, montru la staton de ĉiuj\n" +" aktivaj laboroj.\n" +"\n" +" Opcioj:\n" +" -l eligu, krom la normalajn informojn, ankaÅ­ la proceznumerojn\n" +" -n listigu nur la procezojn kies stato ÅanÄiÄis post la lasta\n" +" informmendo\n" +" -p eligu nur la proceznumerojn\n" +" -r informu nur pri la laboroj aktivaj (rulataj)\n" +" -s informu nur pri la laboroj haltigitaj\n" +"\n" +" La opcio -x lanĉas la KOMANDOn, antaÅ­e ÅanÄinte ĉiujn\n" +" laborindikojn aperantajn en la argumentoj ARGS je la\n" +" proceznumero de la ĉefprocezo de la grupo.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se enestas misa opcio aÅ­ okazis eraro.\n" +" Ĉe „-x‟, la elirstato de la KOMANDO." + +# disown [-h] [-ar] [jobspec ...] +#: builtins.c:906 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Forigu laborojn el la kuranta Åelo\n" +"\n" +" Forigu ĉiun laboron indikitan per argumento LABORINDIKO el\n" +" la tabelo de aktivaj laboroj. Se nenia laboro estas indikita,\n" +" apliku la Åelan koncepton pri la kuranta laboro.\n" +"\n" +" Opcioj:\n" +" -a forigu ĉiujn laborojn el la labortabelo\n" +" -h anstataÅ­ forigi laboron el la tabelo, marku Äin tiel, ke la\n" +" signalo SIGHUP ne estu plusendita al la laboro(j) kiam tian\n" +" signalon ricevas la Åelo\n" +" -r forigu nur rulatajn laborojn\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se enestas misa opcio aÅ­ LABORINDIKO." + +# ZZZ: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or +# kill -l [sigspec] => +# kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] PN | LABORINDIKO ... aÅ­ +# kill -l [SIGNOM] +#: builtins.c:925 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Sendu signalon al laboro\n" +"\n" +" Sendu al la procezoj, indikitaj per sia proceznumero PN (aÅ­\n" +" per la LABORINDIKO) la signalon SIGNOM aÅ­ SIGNUM. Se nek\n" +" SIGNUM nek SIGNOM enestas, sendu SIGTERM.\n" +"\n" +" Opcioj:\n" +" -s\tSIGNOM estas nomo de signalo\n" +" -n\tSIGNUM estas numero de signalo\n" +" -l listigu signalnomojn; la eventuale sekvantaj entjeraj\n" +" argumentoj estas signalnumeroj, ĉeeste de kiuj nur la al\n" +" ili respondaj signalnomoj estu eligataj\n" +" -L sinonimo por -l\n" +"\n" +" „kill‟ estas primitiva Åelkomando pro du kaÅ­zoj:\n" +" unue, Äi ebligas uzi laborindikojn anstataÅ­ proceznumerojn;\n" +" kaj due, se la maksimuma nombro de kreeblaj procezoj estas\n" +" atingita, ne necesas lanĉi kroman procezon por ĉesigi iun alian.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se enestas misa opcio aÅ­ okazis eraro." + +# let arg [arg ...] +# let ARG [ARG ...] +#: builtins.c:949 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Komputu aritmetikan esprimon\n" +"\n" +" Ĉiu arg estas komputenda aritmetika esprimo. La komputado uzas\n" +" fikslongajn entjerojn sen kontrolo pri trooj; tamen divido per 0\n" +" estas kaptata kaj raportata kiel eraro. En la sekvanta listo da\n" +" operacioj la samprioritataj operacisimboloj aperas kune. La\n" +" grupoj estas aranÄitaj laÅ­ malkresko de ligforto.\n" +"\n" +"\tnomo++, nomo--\tpostkrementoj de variablo\n" +"\t++nomo, --nomo\tantaÅ­krementoj de variablo\n" +"\t-, +\t\tunulokaj minus, plus\n" +"\t!, ~\t\tlogika kaj laÅ­bita negoj\n" +" ** potencigo\n" +"\t*, /, %\t\tmultipliko, divido, resto\n" +"\t+, -\t\tadicio, subtraho\n" +"\t<<, >>\t\tlaÅ­bitaj Åovoj maldekstren kaj dekstren\n" +"\t<=, >=, <, >\tkomparaj operacioj\n" +"\t==, !=\t\tegalo, neegalo\n" +"\t&\t\tlaÅ­bita KAJ\n" +"\t^\t\tlaÅ­bita DISAŬ\n" +"\t|\t\tlaÅ­bita AŬ\n" +"\t&&\t\tlogika KAJ\n" +"\t||\t\tlogika AŬ\n" +"\tesprimo ? esprimo : esprimo\n" +"\t\t\tkondiĉa esprimo\n" +"\t=, *=, /=, %=,\n" +"\t+=, -=, <<=, >>=,\n" +"\t&=, ^=, |=\tvalorizoj\n" +"\n" +" Åœelvariabloj uzeblas kiel operandoj. En esprimo la nomon de\n" +" variablo anstataÅ­as Äia valoro (altipigita al fikslonga entjero).\n" +" Por tia uzo en esprimo variablo ne bezonas havi Åaltita sian\n" +" atributon „entjera‟.\n" +"\n" +" La operacioj plenumiÄas laÅ­ la ligforto de siaj operacisignoj. La\n" +" enkrampigitaj subesprimoj plenumiÄas unue, kaj tio ebligas\n" +" ĉirkaÅ­iri la supre priskribitajn regulojn pri la ligfortoj.\n" +"\n" +" Elirstato:\n" +" Se la komputo de la lasta ARG donas 0, la komando „let‟\n" +" liveras 1; alie Äi liveras 0." + +# read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] +# [-p prompt] [-t timeout] [-u fd] [name ...] +# read [-ers] [-a TABELO] [-d DISIG] [-i TEKSTO] [-n NSIGN] [-N NSIGN] +# [-p INVIT] [-t TLIM] [-u DN] [NOMO ...] +#: builtins.c:994 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Legu linion el la ĉefenigujo kaj disigu Äin en kampojn\n" +"\n" +" Legu unu linion el la ĉefenigujo, aÅ­ el la dosiero indikita\n" +" per dosiernumero DN, se la opcio -u estas donita. La linion\n" +" disigu en kampojn, kiel ĉe vortodisigo, kaj la unuan vorton ricevu\n" +" la unua argumento NOMO; la duan, la dua NOMO ktp; la lasta NOMO\n" +" ricevu ĉiujn restantajn vortojn. Nur la signoj troveblaj en la\n" +" variablo $IFS rolas kiel vortodisigiloj.\n" +"\n" +" Se nenia NOMO estas donita, konservu la legitan linion en la\n" +" variablo REPLY.\n" +"\n" +" Opcioj:\n" +" -a TABELO\tla legatajn vortojn konservu en la sinsekvaj anoj de\n" +"\t\tTABELO, komencante ekde la indico 0\n" +" -d DISIG\tlegu Äis la unua signo de la disigilo DISIG (anstataÅ­\n" +"\t\tlegi Äis linifino)\n" +" -e\t\tuzu Readline por akiri la linion\n" +" -i TEKSTO\tuzu TEKSTOn kiel komencan tekston por Readline\n" +" -n NSIGN\tĉesu leginte NSIGN da signoj (anstataÅ­ legi Äis\n" +"\t\tlinifino), krom se disigilo aperas pli frue\n" +" -N NSIGN\tlegu ekzakte NSIGN da signoj (tra ĉiuj disigiloj), krom\n" +" se la dosierfino aÅ­ la tempolimo atingiÄos pli frue\n" +" -p INVIT\teligu la invitĉenon INVIT sen liniavanco antaÅ­ la\n" +"\t\tatendata enigo\n" +" -r\t\tla deklivo „\\‟ estu ordinara signo (ne eskapsigno)\n" +" -s\t\tsilentigu la eÄ¥on de la terminala enigo\n" +" -t TLIM\tla komando read ĉesiÄu kun fiaska elirstato se\n" +"\t\tkompleta linio da enigaĵo ne estas ricevita dum\t TLIM\n" +"\t\tda sekundoj. Se la variablo TMOUT havas valoron, ĉi\n" +"\t\ttiu estas uzata kiel defaÅ­lta atendolimo. TLIM povas\n" +"\t\testi frakcio. Se TLIM estas 0,\t read tuj finiÄas sen\n" +" provi ion legi, sed sukcesas nur se engaĵo pretas\n" +" ĉe la indikita dosiernumero. La elirstato estas pli\n" +" granda ol 128 se la atendotempo estas atingita\n" +" -u DN\tlegu per la dosiernunero DN anstataÅ­ el la ĉefenigujo\n" +"\n" +" Elirstato:\n" +" Äœi estas 0, krom se renkontiÄas dosierfino, aÅ­ atendolimo estas\n" +" atingita (tiuokaze Äi superas 128), aÅ­ okazas valoriza eraro, aÅ­\n" +" -u indikas nevalidan dosiernumeron." + +# return [n] +# return [N] +#: builtins.c:1041 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Revenu el Åelfunkcio\n" +"\n" +" Igas la funkcion aÅ­ punkte vokitan („.‟, „source‟) skripton finiÄi\n" +" kaj liveri la donitan valoron N kiel elirstaton. Se N mankas,\n" +" la elirstato estas tiu de la ĵusa komando.\n" +"\n" +" Elirstato:\n" +" N, aÅ­ malsukceso se la Åelo ne plenumas Åelfunkcion aÅ­ skripton." + +# set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] +# set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...] +#: builtins.c:1054 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Donu aÅ­ forprenu valorojn de Åelvariabloj kaj numerparametroj.\n" +"\n" +" ÅœanÄu la valoron de Åelatributoj kaj numerparametroj, aÅ­ vidigu la\n" +" nomojn kaj valorojn de Åelvariabloj.\n" +"\n" +" Opcioj:\n" +" -a\tMarku eksportendaj la variablojn ÅanÄitajn aÅ­ kreitajn\n" +" -b\tTuj sciigu pri finiÄo de fonaj laboroj\n" +" -e\tEliru tuj se ajna komando finiÄis kun elirstato alia ol 0\n" +" -f\tMalÅaltu generadon de dosiernomoj (globbing)\n" +" -h\tRegistru en hakettabelo la situon de komandoj serĉataj\n" +" -k\tĈiujn valorizojn en ajna parto de komandolinio rigardu\n" +"\tkiel valorizojn de Åelvariabloj por la labormedio de la\n" +"\tkomando, ne nur la valorizojn antaÅ­ la komandonomo\n" +" -m\tAktivigu la laborregadon\n" +" -n\tLegu la komandojn sen plenumi ilin\n" +" -o OPCINOMO\n" +"\tAktivigu la variablon respondan al la OPCIONOMO:\n" +"\t allexport\tsamkiel -a\n" +"\t braceexpand\tsamkiel -B\n" +"\t emacs\tuzu emakseskan interfacon por liniredaktado\n" +"\t errexit\tsamkiel -e\n" +"\t errtrace\tsamkiel -E\n" +"\t functrace\tsamkiel -T\n" +"\t hashall\tsamkiel -h\n" +"\t histexpand\tsamkiel -H\n" +"\t history\tebligu komandohistorion\n" +"\t ignoreeof\tla Åelo ne finiÄu leginte dosierfinilon\n" +"\t interactive-comments\n" +"\t\t\ttoleru komentojn en dialogaj komandoj\n" +"\t keyword\tsamkiel -k\n" +"\t monitor\tsamkiel -m\n" +"\t noclobber\tsamkiel -C\n" +"\t noexec\tsamkiel -n\n" +"\t noglob\tsamkiel -f\n" +"\t notify\tsamkiel -b\n" +"\t nounset\tsamkiel -u\n" +"\t onecmd\tsamkiel -t\n" +"\t physical\tsamkiel -P\n" +"\t pipefail\tla elirstato de dukto estu la elirstato\n" +"\t\t\tde la lasta komando finiÄinta nenule, aÅ­\n" +"\t\t\t0, se neniu komando alie finiÄis\n" +"\t posix\tÅanÄu la konduton de BaÅo ĉie kie Äia defaÅ­lta\n" +"\t\t\tfunkciado devias disde Pozikso, tiel ke Äi\n" +"\t\t\tkonformu al tiu normo\n" +"\t privileged\tsamkiel -p\n" +"\t verbose\tsamkiel -v\n" +"\t vi\t\tuzu vi-eskan interfacon por liniredaktado\n" +"\t xtrace\tsamkiel -x\n" +" -p\tPrivilegia reÄimo, aktiviÄas meme kiam la reala kaj efektiva\n" +"\tidentoj de la uzanto malkongruas. La dosiero $ENV ne estas\n" +"\ttraktata, nek la Åelfunkcioj, importataj el la medio.\n" +"\tMalaktivigo de tiu opcio ÅanÄas la efektivajn uid kaj gid\n" +"\tlaÅ­ la realaj uid kaj gid\n" +" -t\tFinu la Åelon leginte kaj plenuminte unu komandon\n" +" -u\tProvo anstataÅ­igi senvaloran variablon estu eraro\n" +" -v\tEligu la komandoliniojn legatajn\n" +" -x\tEligu la plenumotajn komandojn kaj iliajn argumentojn\n" +" -B\tLa Åelo faru vinkulmalvolvon\n" +" -C\tSe aktiva, malebligu skribdifekti ekzistantajn ordinarajn\n" +"\tdosierojn per alidirektado de la eligo\n" +" -E\tSe aktiva, la ERR-kaptilon (ERR trap) heredas la Åelaj\n" +"\tfunkcioj\n" +" -H\tEbligu atingi la historion !-stile. DefaÅ­lte la opcio estas\n" +"\taktiva en la dialogaj Åeloj.\n" +" -P\tLa simbolaj ligiloj estu travideblaj ĉe plenumo de komandoj\n" +"\tkiuj ÅanÄas la kurantan dosierujon („cd‟ ktp uzu «fizikan»\n" +"\tinterpreton de vojnomo).\n" +" -T\tSe aktiva, la Åelaj funkcioj heredas la kaptilojn (Traps)\n" +"\tDEBUG kaj RETURN \n" +" --\tLa restantajn argumentojn uzu por valorizi la numerparametrojn.\n" +"\tSe tiaj argumentoj mankas, malvalorizu la numerparametrojn.\n" +" -\tLa restantajn argumentojn uzu por valorizi la numerparametrojn.\n" +"\tLa opcioj -x kaj -v malaktiviÄas.\n" +"\n" +" Uzante la signon + anstataÅ­ - vi povas malÅalti la opcion. La\n" +" opciojn ankaÅ­ eblas uzi ĉe la voko de la Åelo. La kuranta aro da\n" +" aktivaj opcioj troveblas en $-. La restantaj n argumentoj ARG\n" +" iÄas valoroj de la numervariabloj $1, $2 ... $n (en tiu ordo).\n" +" Senargumente, eligu ĉiujn Åelvariablojn.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se renkontiÄas misa opcio." + +# unset [-f] [-v] [name ...] +# unset [-f] [-v] [NOMO ...] +#: builtins.c:1139 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"ForviÅu valorojn kaj atributojn de Åelaj funkcioj kaj variabloj\n" +"\n" +" Por ĉiu NOMO, forviÅu la respondan variablon aÅ­ funkcion.\n" +"\n" +" Opcioj:\n" +" -f\ttraktu ĉiun NOMOn kiel funkcion\n" +" -v traktu ĉiun NOMOn kiel variablon\n" +" -n traktu ĉiun NOMOn kiel nomreferencon, kaj senvalorigu Äin mem\n" +" (kaj ne la referencatan variablon)\n" +" \n" +" Se neniu el la du opcioj estas indikita, „unset‟ unue provos\n" +" forviÅi variablon, kaj se tia ne troviÄos, funkcion.\n" +"\n" +" Iujn variablojn ne eblas forviÅi. Vd ankaÅ­ la helpon pri „readonly‟.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se aperis misa opcio aÅ­ NOMO estas nurlega." + +# export [-fn] [name[=value] ...] or export -p +# export [-fn] [NOMO[=VALORO] ...] aÅ­ export -p +#: builtins.c:1161 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Marku Åelvariablojn kiel eksportajn\n" +"\n" +" Marku la NOMOjn por aÅ­tomata eksporto en la medion de la\n" +" plenumotaj komandoj. Se ĉeestas VALORO, uzu Äin por valorizi\n" +" NOMOn antaÅ­ ol eksporti.\n" +"\n" +" Opcioj:\n" +" -f\ttemas pri Åelfunkcioj\n" +" -n\tforviÅu la eksportomarkon de la NOMOj\n" +" -p\teligu la liston de ĉiuj eksportaj variabloj kaj funkcioj\n" +"\n" +" La opcio „--‟ ĉesigas pluan opcitraktadon.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se aperis nevalida NOMO aÅ­ misa opcio." + +# readonly [-aAf] [name[=value] ...] or readonly -p +# readonly [-aAf] [NOMO[=VALORO] ...] aÅ­ readonly -p +#: builtins.c:1180 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Faru Åelvariablojn neÅanÄeblaj\n" +"\n" +" La donitaj NOMOj iÄas nurlegaj kaj la valorojn de tiuj nomoj\n" +" ne povas ÅanÄi posta valorizo. Se ĉeestas VALORO, uzu Äin por\n" +" valorizi la NOMOn antaÅ­ ol fari Äin nurlega.\n" +"\n" +" Opcioj:\n" +" -a\ttemas pri entjerindica tabelo indikita per plursignifa NOMO\n" +" -A\ttemas pri la asocitabela signifo de plursignifa NOMO\n" +" -f\ttemas pri la Åelfunkcia signifo de plursignifa NOMO\n" +" -p\teligu ĉiujn nurlegajn variablojn aÅ­ funkciojn, depende je\n" +" tio, ĉu la opcio „-f“ estas aldonita\n" +"\n" +" La opcio „--‟ ĉesigas pluan opcitraktadon.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se aperas nevalida nomo aÅ­ misa opcio." + +# shift [n] +#: builtins.c:1202 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Åœovu numerparametrojn\n" +"\n" +" La numerparametrojn $N+1, $N+2 ... renumeru al $1, $2 ...\n" +" Se N ne estas indikita, uzu 1 anstataÅ­e." + +# source filename [arguments] +# source DOSIERNOMO [ARGUMENTOJ] +#: builtins.c:1214 builtins.c:1229 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Plenumu komandojn el dosiero en la kuranta Åelo\n" +"\n" +" Legu kaj plenumu la komandojn el DOSIERNOMO en la kuranta Åelo.\n" +" Uzu la vojojn el la variablo $PATH por trovi la dosierujon de\n" +" DOSIERNOMO. La eventualaj ARGUMENTOJ iÄas la numerparametroj por\n" +" plenumo de DOSIERNOMO.\n" +"\n" +" Elirstato:\n" +" Tiu de la komando laste plenumita en DOSIERNOMO; malsukceso, se\n" +" DOSIERNOMO ne legeblas." + +# suspend [-f] +#: builtins.c:1245 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Haltetigu la plenumon de la Åelo\n" +"\n" +" Haltetigu la plenumon de la Åelo Äis Äi ricevos la signalon SIGCONT.\n" +" Krom se per superforto, salutan Åelon ne eblas haltetigi.\n" +"\n" +" Opcio:\n" +" -f\tSuperforte haltetu, eĉ se la Åelo estas saluta Åelo\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se laborregado estas malÅaltita aÅ­ okazis eraro." + +# test [expr] +# test [ESPRIMO] +#: builtins.c:1261 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Komputu kondiĉan esprimon\n" +"\n" +" Liveru elirstaton 0 (vera) aÅ­ 1 (malvera) laÅ­ la rezulto de\n" +" komputado de la ESPRIMO. La esprimoj povas esti unulokaj aÅ­\n" +" dulokaj. La unulokaj plejparte servas por determini la statuson\n" +" de dosiero. Krome, estas operacioj super ĉenoj kaj la\n" +" nombrokomparaj operacioj.\n" +"\n" +" La konduto de test-komando dependas je la kiomo de Äiaj argumentoj.\n" +" Plenan priskribon donas «man bash».\n" +"\n" +" Operacioj super dosieroj:\n" +"\n" +"\t-a DOSIERO\tVera se DOSIERO ekzistas\n" +"\t-b DOSIERO\tVera se DOSIERO estas por bloka eneligo\n" +"\t-c DOSIERO\tVera se DOSIERO estas por bajta eneligo\n" +"\t-d DOSIERO\tVera se DOSIERO estas dosierujo\n" +"\t-e DOSIERO\tVera se DOSIERO ekzistas\n" +"\t-f DOSIERO\tVera se DOSIERO ekzistas kaj estas ordinara\n" +"\t-g DOSIERO\tVera se DOSIERO havas set-group-id = 1\n" +"\t-h DOSIERO\tVera se DOSIERO estas simbola ligilo\n" +"\t-L DOSIERO\tVera se DOSIERO estas simbola ligilo\n" +"\t-k DOSIERO\tVera se la DOSIERO havas sticky = 1\n" +"\t-p DOSIERO\tVera se DOSIERO estas nomhava dukto\n" +"\t-r DOSIERO\tVera se vi rajtas legi DOSIEROn\n" +"\t-s DOSIERO\tVera se DOSIERO ekzistas kaj longas pli ol 0\n" +"\t-S DOSIERO\tVera se DOSIERO estas kontaktingo („socket‟)\n" +"\t-t DNUMERO\tVera se la dosiero DNUMERO estas terminala\n" +"\t-u DOSIERO\tVera se DOSIERO havas set-user-id = 1\n" +"\t-w DOSIERO\tVera se vi rajtas skribi en DOSIEROn\n" +"\t-x DOSIERO\tVera se vi rajtas lanĉi DOSIEROn\n" +"\t-O DOSIERO\tVera se DOSIERO estas via dosiero\n" +"\t-G DOSIERO\tVera se DOSIERO apartenas al via grupo\n" +"\t-N DOSIERO\tVera se DOSIERO ÅanÄiÄis post la lasta lego\n" +"\n" +"\tD_RO1 -nt D_RO2\tVera se la dosiero D_RO1 estas pli freÅa\n" +"\t\t\t(laÅ­ la ÅanÄodato) ol la dosiero D_RO2\n" +"\tD_RO1 -ot D_RO2\tVera se D_RO1 estas malpli freÅas ol D_RO2\n" +"\tD_RO1 -ef D_RO2\tVera se D_RO1 estas rekta ligilo al D_RO2\n" +"\n" +" Operacioj super ĉenoj:\n" +"\n" +"\t-z ĈENO\t\tVera se ĈENO estas vakua\n" +"\t-n ĈENO\t\tVera se ĈENO ne estas vakua\n" +"\tĈENO\t\tVera se ĈENO ne estas vakua\n" +"\tĈENO1 = ĈENO2\tVera se la ĉenoj estas egalaj\n" +"\tĈENO1 != ĈENO2\tVera se la ĉenoj ne estas egalaj\n" +"\tĈENO1 < ĈENO2\tVera se ĈENO1 leksikografie antaÅ­as la\n" +"\t\t\tĉenon ĈENO2\n" +"\tĈENO1 > ĈENO2\tVera se ĈENO1 leksikografie sekvas la\n" +"\t\t\tĉenon ĈENO2\n" +"\n" +" Diversaj operacioj:\n" +"\n" +" -o OPCIO Vera se la Åelopcio OPCIO estas Åaltita\n" +" -v VAR Vera se la Åelvariablo VAR havas valoron\n" +" -R VAR Vera se la Åelvariablo VAR havas valoron kaj\n" +" estas nomreferenco\n" +"\t! ESPR\t\tVera se la esprimo ESPR estas malvera\n" +"\tESPR1 -a ESPR2\tVera se ambaÅ­ esprimoj estas veraj\n" +"\tESPR1 -o ESPR2\tVera se ajna el la esprimoj estas vera\n" +"\n" +"\targ1 KP arg2\tAritmetikaj komparoj. KP estas iu el la\n" +"\t\t\trilatoj -eq, -ne, -lt, -le, -gt, -ge\n" +"\n" +" La aritmetikaj komparoj liveras veron se arg1 estas respektive\n" +" egala, neegala, malplia ol, malplia aÅ­ egala al, plia ol,\n" +" plia aÅ­ egala al arg2.\n" +"\n" +" Elirstato:\n" +" Sukceso, se la rezulto de la komputo de ESPRIMO estas vero;\n" +" malsukceso, se la rezulto estas malvero aÅ­ renkontiÄas misa\n" +" argumento." + +# [ arg... ] +#: builtins.c:1343 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Ĉi tiu estas sinonimo de la primitivo „test‟; tamen la lasta\n" +" argumento devas esti „]‟ fermanta la esprimon komencitan per „[‟." + +#: builtins.c:1352 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Vidigu proceztempojn\n" +"\n" +" Eligu la tempojn akumulitajn de la uzanto kaj de la kerno\n" +" por la Åelo kaj Äiaj procezidoj.\n" +"\n" +" Elirstato:\n" +" Ĉiam sukcesa." + +# trap [-lp] [[arg] signal_spec ...] +# trap [-lp] [[ARG] SIGNALINDIKO ...] +#: builtins.c:1364 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Kaptu signalojn kaj aliajn eventojn\n" +"\n" +" Difinu kaj aktivigu traktilojn plenumotajn kiam Åelo ricevos\n" +" signalojn aÅ­ ĉe aliaj kondiĉoj.\n" +"\n" +" La komando ARG estas legota kaj plenumota kiam la Åelo ricevos\n" +" signalon el SIGNALINDIKO. Se ARG malestas (kaj SIGNALINDIKO\n" +" konsistas el unu sola signalo) aÅ­ estas „-‟, ĉiuj indikitaj\n" +" signaloj rericevas sian komencan valoron. Se ARG estas vakua\n" +" ĉeno, la Åelo mem kaj komandoj el Äi vokitaj malatentos ĉiujn\n" +" signalojn de SIGNALINDIKO.\n" +"\n" +" Se inter la signaloj SIGNALINDIKO estas „EXIT‟ (aÅ­ 0), tiam ARG de\n" +" la komando plenumiÄos ĉe la eliro el la Åelo. Se en SIGNALINDIKO\n" +" estas „DEBUG‟, ARG plenumiÄos post ĉiu komando. Se en\n" +" SIGNALINDIKO estas „RETURN“, ARG plenumiÄos ĉiufoje kiam finiÄas\n" +" skripto rulata per komando „.“ aÅ­ „source“. La SIGNALINDIKO „ERR“\n" +" igas ARGon plenumiÄi ĉiufoje kiam malsukceso de komando kaÅ­zus\n" +" eliron el la Åelo havanta la opcion „-e“ Åaltita.\n" +"\n" +" Senargumente trap listigas komandojn plenumotajn laÅ­ ĉiu signalo.\n" +"\n" +" Opcioj:\n" +" -l\tlistigu la signalnomojn kun la numeroj\n" +" -p vidigu la trap-komandojn por trakti ĉiun SIGNALINDIKOn\n" +"\n" +" Ĉiu SIGNALINDIKO estas aÅ­ signalnomo el , aÅ­\n" +" signalnumero. La signalnomoj estas usklecoblindaj, kaj la\n" +" prefikso „SIG‟ estas ellasebla. Signalon S oni povas sendi al la\n" +" Åelo per la komando «kill -S $$».\n" +"\n" +" Elirstato:\n" +" Sukceso, kondiĉe ke SIGNALINDIKOj kaj la opcioj estas taÅ­gaj." + +# type [-afptP] name [name ...] +# type [-afptP] NOMO [NOMO ...] +#: builtins.c:1400 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Vidigu informon pri tipo de komando\n" +"\n" +" Por ĉiu NOMO, montru kion Äi signifus en la pozicio de\n" +" komadonomo.\n" +"\n" +" Opcioj:\n" +" -a\tlistigu ĉiujn lokojn entenantajn plenumeblan dosieron\n" +" kun koncerna NOMO; la listo inkludas alinomojn kaj\n" +" funkciojn, se kaj nur se malestas la opcio „-p‟\n" +" -f ekskludas el la serĉo la Åelfunkciojn\n" +" -P\tapliku vojserĉon laÅ­ PATH por ĉiu NOMO, eĉ se ekzistas tianoma\n" +" funkcio, primitiva komando aÅ­ alinomo, kaj liveru la nomon de\n" +" tiel plenumebla diskdosiero\n" +" -p\teligu la nomon de dosiero kiu iÄus plenumata;\n" +" aÅ­ nenion, se «type -t name» ne eligus „file‟\n" +" -t\teligu unu vorton, iun el la sekvaj:\n" +" „alias‟, „keyword‟, „function‟, „builtin‟, „file‟ aÅ­ „‟ --\n" +" se NOMO estas, respektive, alinomo, Åela Ålosilvorto,\n" +" Åelfunkcio, Åela primitivo, dosiero aÅ­ nenio konata\n" +"\n" +" Argumentoj:\n" +" NOMO Esplorenda komandonomo\n" +"\n" +" Elirstato:\n" +" Sukceso, se ĉiujn NOMOjn prosperis trovi; malsukceso, se estis\n" +" netrovitaj." + +# ulimit [-SHacdefilmnpqrstuvx] [limit] +# ulimit [-SHacdefilmnpqrstuvx] [LIMO] +#: builtins.c:1431 +#, fuzzy +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -R\tthe maximum time a real-time process can run before blocking\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"ÅœanÄu risurcolimaĵojn de la Åelo.\n" +"\n" +" La komando „ulimit‟ ebligas mastrumi la risurcojn disponeblajn al\n" +" la procezoj lanĉataj el la Åelo (se la operaciumo ebligas tion).\n" +"\n" +" Opcioj:\n" +" -S ÅanÄebla („soft‟) limo\n" +" -H firma („hard‟) limo\n" +" -a eligu ĉiujn kurantajn risurcolimaĵojn\n" +" -b la kontaktoskatola bufrolongo\n" +" -c maksimuma longo de nekropsia dosiero („core‟)\n" +" -d maksimuma longo de datumsegmento de procezo\n" +" -e maksimuma viciga prioritato („nice‟)\n" +" -f maksimuma longo de dosieroj skribataj de la Åelo kaj Äiaj idoj\n" +" -i maksimuma longo de pendaj signaloj\n" +" -k maksimuma nombro de kernaj atendovicoj (kqueues) disponigeblaj\n" +" al la procezo \n" +" -l maksimuma longo de Ålosebla procezmemoro (mlock)\n" +" -m maksimuma longo de rezida procezmemoro\n" +" -n maksimuma nombro de malfermitaj dosiernumeroj\n" +" -p longo de dukta bufro (pipe)\n" +" -q maksimuma nombro da bajtoj en atendovicoj de Poziksaj mesaÄoj\n" +" -r maksimuma prioritato realtempa\n" +" -s maksimuma longo de stako\n" +" -t maksimuma tempo ĉefprocesora (en sekundoj)\n" +" -u maksimuma nombro de procezoj de la uzanto\n" +" -v longo de la virtuala memoro\n" +" -x maksimuma nombro de dosierÅlosoj\n" +" -P maksimuma nombro de pseÅ­doterminaloj\n" +" -T maksimuma nombro de fadenoj\n" +"\n" +" Ne ĉiuj opcioj disponeblas sur ĉiuj komputilaj platformoj.\n" +"\n" +" Se LIMO estas indikita, Äia valoro limigas la koncernan risurcon;\n" +" la specialaj vortoj por LIMO: „soft‟, „hard‟, „unlimited‟\n" +" signifas, respektive: «la kuranta ÅanÄebla limo», «la kuranta\n" +" firma limo», «sen limo». Alie estas eligata la kuranta valoro de\n" +" la koncerna risurco. Manko de opcioj implicas -f.\n" +"\n" +" La valoroj estas en obloj de 1024 bajtoj, krom por la opcio -t,\n" +" kiu estas en sekundoj; por -p, kiu estas en obloj de 512 bajtoj;\n" +" kaj por -u, kiu estas sendimensia nombro de procezoj.\n" +"\n" +" Elirstato:\n" +" Sukceso, kondiĉe ke la opcioj estas taÅ­gaj kaj ne okazis eraro." + +# umask [-p] [-S] [mode] +# umask [-p] [-S] [REÄœIMO] +#: builtins.c:1482 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Vidigu aÅ­ agordu dosierreÄiman maskon\n" +"\n" +" La dosierkrea masko de la uzanto havu la valoron de la argumento\n" +" REÄœIMO. Se REÄœIMO mankas, eligu la kurantan valoron de la masko.\n" +"\n" +" Se la argumento REÄœIMO komenciÄas per cifero, Äi estas\n" +" interpretata kiel okuma nombro; alie, kiel simbola signoĉeno\n" +" laÅ­ chmod(1).\n" +"\n" +" Opcioj:\n" +" -p\tse REÄœIMO malestas, la eligaĵo havu formon taÅ­gan por enigo\n" +" -S\tla eligo estu simbola; alie Äi estas okuma nombro\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se REÄœIMO estas nevalida aÅ­ aperas misa opcio." + +# wait [-fn] [id ...] +# wait [-fn] [IND ...] +#: builtins.c:1502 +#, fuzzy +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a job specification, waits for all processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for a single job from the list of " +"IDs,\n" +" or, if no IDs are supplied, for the next job to complete and returns " +"its\n" +" exit status.\n" +" \n" +" If the -p option is supplied, the process or job identifier of the job\n" +" for which the exit status is returned is assigned to the variable VAR\n" +" named by the option argument. The variable will be unset initially, " +"before\n" +" any assignment. This is useful only when the -n option is supplied.\n" +" \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given, or if -n is supplied and the shell has no unwaited-for\n" +" children." +msgstr "" +"Atendu ke laboroj finiÄu, kaj liveru elirstaton.\n" +"\n" +" Atendu finiÄon de ĉiu procezo indikita per IND (kiu povas esti\n" +" proceznumero aÅ­ laborindiko) kaj liveru Äian elirstaton. Se IND\n" +" malestas, atendu ĉiujn aktivajn procezidojn, kaj liveru la \n" +" elirstaton 0. Se IND estas laborindiko, atendu ĉiujn procezojn en\n" +" la dukto de la laboro.\n" +"\n" +" Kun la opcio „-n“: atendu finiÄon de la sekva laboro kaj liveru\n" +" Äian elirstaton.\n" +"\n" +" Kun la opcio „-f“: se la laborregado estas Åaltita, atendu finiÄon\n" +" de la donita IND (anstataÅ­ atendi ke Äi ÅanÄu la staton)\n" +"\n" +" Elirstato:\n" +" Tiu de la lasta IND; malsukceso, se IND estas nevalida aÅ­ se\n" +" renkontiÄas nevalida opcio.<" + +# wait [pid ...] +# wait [PN ...] +#: builtins.c:1533 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Atendu ke procezoj finiÄu, kaj liveru elirstaton\n" +"\n" +" Atendu finiÄon de ĉiu indikita procezoj kaj liveru Äian elirstaton.\n" +" Se PN malestas, atendu ĉiujn aktivajn procezidojn, kaj liveru la\n" +" elirstaton 0. PN devas esti proceznumero.\n" +"\n" +" Elirstato:\n" +" Tiu de la lasta PN; malsukceso, se PN estas nevalida aÅ­ se\n" +" renkontiÄas nevalida opcio." + +# for NAME [in WORDS ... ] ; do COMMANDS; done +# for NOMO [in VORTOJ ... ] ; do KOMANDOJ; done +#: builtins.c:1548 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Plenumu komandojn por ĉiu ero de listo\n" +"\n" +" La iteracio „for‟ plenumas la KOMANDOJn por ĉiu ero de sia listo.\n" +" Se la parto «in VORTOJ ...;» malestas, «in \"$@\"» estas uzata\n" +" anstataÅ­e. Por ĉiu el la VORTOJ, la NOMO estas valorizata per tiu\n" +" ero kaj la KOMANDOJ estas plenumataj.\n" +"\n" +" Elirstato:\n" +" Tiu de la laste plenumita komando." + +# for (( exp1; exp2; exp3 )); do COMMANDS; done +# for (( ESPR1; ESPR2; ESPR3 )); do KOMANDOJ; done +#: builtins.c:1562 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Aritmetika iteracio\n" +"\n" +" Ekvivalentas al\n" +"\t(( ESPR1 ))\n" +"\twhile (( ESPR2 )); do\n" +"\t KOMANDOJ\n" +"\t (( ESPR3 ))\n" +"\tdone\n" +" kie ESPR1, ESPR2 kaj ESPR3 estas aritmetikaj esprimoj. Se iu el\n" +" ili malestas, 1 estas uzata anstataÅ­e.\n" +"\n" +" Elirstato:\n" +" Tiu de la laste plenumita komando." + +# select NAME [in WORDS ... ;] do COMMANDS; done +# select NONO [in VORTOJ ... ;] do KOMANDOJ; done +#: builtins.c:1580 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Elektu vortojn el listo kaj plenumu komandojn\n" +"\n" +" Malvolvu VORTOJn, generante liston da vortoj. Tiujn vortojn eligu\n" +" en la ĉeferarujon, ĉiu antaÅ­ate de sia numero. Se „in VORTOJ‟\n" +" malestas, prenu anstataÅ­e la enhavon de \"$@\". Poste eligu la\n" +" inviton laÅ­ la variablo PS3 kaj legu linion el la ĉefenigujo. Se\n" +" la linio konsistas el numero responda al iu el la vortoj eligitaj,\n" +" la NOMO ricevu Äin kiel sian valoron. Se la linio entenas nenion,\n" +" ripetu VORTOJn kaj la inviton. Ĉe la dosierfino la komando\n" +" finiÄas. Ajna alia enigaĵo vakuigas la variablon NOMO. La legita\n" +" linio konserviÄas en la variablo REPLY. Plenumu la KOMANDOJn post\n" +" ĉiu elekto, Äis renkontiÄos komando de eliro (break).\n" +"\n" +" Elirstato:\n" +" Tiu de la laste plenumita komando." + +# time [-p] PIPELINE +# time [-p] DUKTO +#: builtins.c:1601 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Raportu tempon konsumitan de dukto\n" +"\n" +" Plenumu la DUKTOn kaj poste eligu tabelon el la reala tempo,\n" +" la ĉefprocesora tempo de la uzanto, kaj la ĉefprocesora tempo\n" +" sistema, konsumitaj por plenumi la DUKTOn, kiam Äi finÄos.\n" +"\n" +" Opcio:\n" +" -p\tprezentu la tempojn laÅ­ la portebla Poziksa formo\n" +"\n" +" La variablo TIMEFORMAT difinas la formon de la eligaĵo.\n" +"\n" +" Elirstato:\n" +" Tiu de la DUKTO." + +# case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac +# case VORTO in [ÅœABLONO [| ÅœABLONO]...) KOMANDOJ ;;]... esac +#: builtins.c:1618 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Plenumu komandojn laÅ­ Åablonkongruo \n" +"\n" +" Plenumu KOMANDOJn kondiĉe ke VORTO kongruas kun ÅœABLONO.\n" +" La streko „|‟ servas por disigi Åablonojn (se pluraj).\n" +"\n" +" Elirstato:\n" +" Tiu de la komando laste plenumita." + +# if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... +# [ else COMMANDS; ] fi +# if KOMANDOJ; then KOMANDOJ;[ elif KOMANDOJ; then KOMANDOJ; ]... +# [ else KOMANDOJ; ] fi +#: builtins.c:1630 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Plenumu komandojn depende je kondiĉo\n" +"\n" +" Plenumu la komandojn el «if KOMANDOJ». Se la elirstato estas 0,\n" +" tiam plenumu la komandojn el «then KOMANDOJ». Alie, laÅ­vice,\n" +" plenumu la komandoj el «elif KOMANDOJ», kaj se la elirstato\n" +" estas 0, plenumu la komandojn de ties «then KOMANDOJ», post kio\n" +" la komando „if‟ finiÄas. Alie plenumu la komandojn el\n" +" «else KOMANDOJ» (se tiaj enestas). La elirstato estas tiu de la\n" +" lasta komando plenumita, aÅ­ 0 se neniu el la kondiĉoj estis vera." + +# while COMMANDS; do COMMANDS; done +# while KOMANDOJ; do KOMANDOJ; done +#: builtins.c:1647 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Plenumadu komandojn dum testo sukcesas\n" +"\n" +" Ripete malvolvu kaj plenumu la KOMANDOJn dum la lasta el la\n" +" KOMANDOJ de la „while‟-parto liveras elirstaton 0.\n" +"\n" +" Elirstato:\n" +" Tiu de la komando laste plenumita. " + +# until COMMANDS; do COMMANDS; done +# until KOMANDOJ; do KOMANDOJ; done +#: builtins.c:1659 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Plenumadu komandojn Äis kiam testo sukcesos\n" +"\n" +" Ripete malvolvu kaj plenumu la komandojn dum la lasta el la\n" +" KOMANDOJ de la „until‟-parto liveras elirstaton alian ol 0.\n" +"\n" +" Elirstato:\n" +" Tiu de la komando laste plenumita." + +# coproc [NAME] command [redirections] +# coproc [NOMO] KOMANDO [ALIDIREKTADOJ] +#: builtins.c:1671 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Kreu kunprocezon nomotan NOMO\n" +"\n" +" Plenumu KOMANDOn nesinkrone, konektinte per dukto Äiajn ĉefelgujon\n" +" kaj ĉefengujon al la dosiernumeroj listigitaj en la tabelo NOMO de\n" +" la kuranta Åelo ĉe la indicoj 0 kaj 1. La defaÅ­lta NOMO estas\n" +" „COPROC‟.\n" +"\n" +" Elirstato:\n" +" La komando coproc liveras la elirstaton 0." + +# function name { COMMANDS ; } or name () { COMMANDS ; } +# function NOMO { KOMANDOJ ; } aÅ­ NOMO () { KOMANDOJ ; } +#: builtins.c:1685 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Difinu Åelfunkcion\n" +"\n" +" Kreu Åelfunkcion kun NOMO. Vokite kiel simpla komando, NOMO\n" +" plenumas la KOMANDOJn en la medio de la vokanta Åelo. Ĉe voko de\n" +" NOMO la komandoliniajn argumentojn la funkcio ricevas en $0...$n,\n" +" kaj la funkcinomo registriÄas en $FUNCNAME.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se NOMO estas nurlega." + +# grouping_braces: { COMMANDS ; } +# { KOMANDOJ ; } +#: builtins.c:1699 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Arigu komandojn en komandan unuon\n" +"\n" +" Plenumu la komandojn grupe. Tiel eblas apliki alidirektadon al\n" +" tuta grupo da komandoj.\n" +"\n" +" Elirstato:\n" +" Tiu de la komando laste plenumita." + +# job_spec [&] +# LABORINDIKO [&] +#: builtins.c:1711 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Reaktivigu laboron en la fono\n" +"\n" +" Samkiel la argumento LABORINDIKO en komando „fg‟. Reaktivigu\n" +" haltigitan aÅ­ fonan laboron. LABORINDIKO povas esti labornomo aÅ­\n" +" labornumero. Postmetita „&‟ sendas la laboron en la fonon,\n" +" samkiel se la komando „bg‟ estus aplikita al LABORINDIKO.\n" +"\n" +" Elirstato:\n" +" Tiu de la reakivigita laboro." + +# (( expression )) +# (( ESPRIMO )) +#: builtins.c:1726 +#, fuzzy +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to `let \"EXPRESSION\"'.\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Komputu aritmetikan esprimon\n" +"\n" +" La esprimo EXPRESSION komputiÄas laÅ­ la aritmetikaj reguloj.\n" +" Ekvivalentas al «let EXPRESSION».\n" +"\n" +" Elirstato:\n" +" 1, se la rezulto de la ESPRIMO estas 0; 0 aliokaze." + +# [[ expression ]] +# [[ ESPRIMO ]] +#: builtins.c:1738 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Plenumu kondiĉkomandon\n" +"\n" +" Liveras elirstaton 0 aÅ­ 1 laÅ­ la rezulto de komputado de kondiĉa\n" +" ESPRIMO. Esprimoj konsistas el bazaj esprimoj, kiajn uzas la\n" +" primitivaĵo „test‟, kaj komponiÄas per sekvaj operacioj:\n" +"\n" +" ( ESPRIMO ) Liveras la valoron de ESPRIMO\n" +" ! ESPRIMO\t Vera, se ESPRIMO estas malvera; alie malvera\n" +" ESP1 && ESP2 Vera, se veras ambaÅ­ ESP1 kaj ESP2; alie malvera\n" +" ESP1 || ESP2 Vera, se veras ajna el ESP1 kaj ESP2; alie malvera\n" +"\n" +" En la operacioj „==‟ kaj „!=‟ la signoĉeno dekstre de la operacisigno\n" +" rolas kiel Åablono, kongrueco al kiu estas testata. Ĉe la\n" +" operacio „=~‟ la ĉeno en la dekstra parto rolas kiel regulesprimo\n" +" por kongruectestado.\n" +"\n" +" En la operacioj && kaj || la duaj subesprimoj ESP2 ne estas\n" +" komputataj se ESP1 jam sufiĉas por determini la rezulton.\n" +"\n" +" Elirstato:\n" +" 0 aÅ­ 1, laÅ­ la valoro de ESPRIMO." + +# help var +# variables - Names and meanings of some shell variables +#: builtins.c:1764 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Nomoj kaj uzoj de komunaj Åelvariabloj\n" +"\n" +" BASH_VERSION Informo pri la versio de ĉi tiu BaÅo\n" +" CDPATH\tListo da dosierujoj (disigitaj per dupunkto) en\n" +"\t\tkiuj argumenta dosierujo de „cd‟ estu serĉata\n" +" GLOBIGNORE\tListo da Åablonoj (disigitaj per dupunkto) difinanta\n" +"\t\tdosiernomojn ignorendajn ĉe malvolvo de dosierindikoj\n" +" HISTFILE\tNomo de la dosiero por via komandohistorio\n" +" HISTFILESIZE Maksimuma nombro de linioj konserveblaj en HISTFILE\n" +" HISTSIZE\tMaksimuma nombro de linioj el komandohistorio\n" +"\t\tatingeblaj el plenumata Åelo\n" +" HOME\tPlena dosierindiko pri via hejma dosierujo\n" +" HOSTNAME\tNomo de la rulanta komputilo\n" +" HOSTTYPE\tTipo de la ĉefprocesoro rulanta ĉi tiun BaÅon\n" +" IGNOREEOF\tDeterminas la konduton de la Åelo kiam Äi ricevas\n" +"\t\tdosierfinilon (^D, \\004) kiel nuran enigaĵon. Se Äi\n" +"\t\tekzistas kaj havas nombran valoron, tiam ĉi tiu\n" +" indikas, kiom da sinsekvaj dosierfinilojn toleri\n" +"\t\tantaÅ­ ol la Åelo finiÄu (defaÅ­lte, 10). Sen tia\n" +"\t\tvaloro, ^D signifas finon de enigo\n" +" MACHTYPE\tSignoĉeno priskribanta la komputsistemon rulantan\n" +"\t\tĉi tiun BaÅon\n" +" MAILCHECK\tKiom ofte (post kiom da sekundoj) BaÅo kontrolu\n" +"\t\tricevon de nova retpoÅta mesaÄo\n" +" MAILPATH\tListo da dosiernomoj (disigitaj per dupunkto) kiujn\n" +"\t\tBaÅo testu pri nova retpoÅtaĵo\n" +" OSTYPE\tVersio de Unikso sur kiu ĉi tiu BaÅo ruliÄas\n" +" PATH\tListo da dosierujoj (disigitaj per dupunkto) kie serĉi\n" +"\t\tkomandojn\n" +" PROMPT_COMMAND Komando plenumenda antaÅ­ ĉiu unuaranga invito\n" +" PS1\t\tSignoĉeno de la unuaranga invito\n" +" PS2\t\tSignoĉeno de la duaranga invito\n" +" PWD\t\tPlena dosierindiko de la kuranta dosierujo\n" +" SHELLOPTS\tListo da aktivaj Åelaj opcioj (disigitaj per dupunktoj)\n" +" TERM\tTipo de la uzata terminalo\n" +" TIMEFORMAT\tFormato por eligi tempostatistikon per la komando „time‟\n" +" auto_resume\tSe ne vakua, indikas ke komandan vorton sole aperanta\n" +"\t\ten linio la Åelo unue serĉu en la listo de haltetintaj\n" +"\t\tlaboroj. Se trovita tie, la laboro iÄu dialoga.\n" +"\t\tLa valoro „exact‟ postulas ekzaktan kongruon de la\n" +"\t\tkomanda vorto kun la komando el la laborlisto. La valoro\n" +"\t\t„substring‟ indikas ke la komanda vorto kongruu kun\n" +"\t\tsubĉeno de la laboro. Ĉia alia valoro indikas ke la\n" +"\t\tkomando estu komenca parto de la labornomo\n" +" histchars\tSignoj regantaj reuzon de komandohistorio kaj rapidan\n" +"\t\tanstataÅ­igon. Unue estas la reuziga signo, kutime „!‟.\n" +"\t\tDue estas la signo de „rapida anstataÅ­igo‟, kutime „^‟.\n" +"\t\tTrie estas la signo de „historia komentilo‟,\n" +"\t\tkutime „#‟\n" +" HISTIGNORE\tListo da Åablonoj (disigitaj per dupunkto) difinanta\n" +"\t\tkiujn komandojn konservi en la historilisto\n" + +# pushd [-n] [+N | -N | dir] +# pushd [-n] [+N | -N | DOSIERUJO] +#: builtins.c:1821 +msgid "" +"Add directories to stack.\n" +" \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" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Surstakigu dosierujojn\n" +"\n" +" Surstakigu dosierujon sur la stakon da dosierujoj, aÅ­ cikle Åovu\n" +" la stakon tiel, ke la nova stakpinto estu la kuranta dosierujo.\n" +" Senargumente, permutu la du plej suprajn dosierujojn de la stako.\n" +"\n" +" Opcio:\n" +" -n\tNe ÅanÄu la kurantan dosierujon (ne plenumu cd) surstakigante\n" +" dosierujon sur la stakon; do, nur la stakon ÅanÄu\n" +"\n" +" Argumentoj:\n" +" +N\tCikle Åovu la stakon tiel ke la Nª dosierujo (nombrante de\n" +" \tmaldekstre en la listo eligebla per „dirs‟, numerante de 0)\n" +" iÄu la pinta\n" +"\n" +" -N\tCikle Åovu la stakon tiel ke la Nª dosierujo (nombrante de\n" +" \tdekstre en la listo eligebla per „dirs‟, numerante de 0) iÄu\n" +" la pinta\n" +"\n" +" DOSIERUJO\n" +"\tsurstakigu la DOSIERUJOn kaj faru Äin la nova kuranta\n" +" \tdosierujo labora\n" +"\n" +" Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas." + +# popd [-n] [+N | -N] +#: builtins.c:1855 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Elstakigu dosierujojn\n" +"\n" +" Elstakigu erojn el la stako da dosierujoj. Senargumente, forigu\n" +" la pintan dosierujon kaj iru (cd) en la novan pintan dosierujon.\n" +"\n" +" Opcio:\n" +" -n\tNe ÅanÄu (cd) la kurantan dosierujon demetante dosierujon el\n" +" la stako; do, nur la stakon ÅanÄu\n" +"\n" +" Argumentoj:\n" +" +N\tForigu la N-an eron de maldekstre de la listo eligebla per\n" +"\t„dirs‟, numerante ekde 0. Ekz-e: «popd +0» forigas la plej\n" +"\tmaldekstran dosierujon; «popd +1», Äian najbaron\n" +"\n" +" -N\tForigu la N-an eron de dekstre de la listo eligebla per\n" +" „dirs‟, numerante ekde 0. Ekz-e: «popd -0» forigas la lastan\n" +"\tdosierujon; «popd -1», la antaÅ­lastan\n" +"\n" +" Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟.\n" +" Elirstato:\n" +" Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas." + +# dirs [-clpv] [+N] [-N] +#: builtins.c:1885 +msgid "" +"Display directory stack.\n" +" \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" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Listigu dosierujstakon\n" +"\n" +" Listigu la kurantan dosierujstakon. La dosierujoj trafas en la\n" +" stakon per la komando „pushd‟ kaj estas forigeblaj per la komando\n" +" „popd‟.\n" +"\n" +" Opcioj:\n" +" -c viÅu la dosierujstakon forigante el Äi ĉiujn erojn\n" +" -l ne uzu mallongan formon de dosierujnomoj relative al via hejma\n" +" dosierujo\n" +" -p listigu dosierujstakon lokante po unu eron sur linio\n" +" -v listigu po unu eron de la dosierujstako en linio, metante\n" +" antaÅ­ la dosierujnomo Äian numeron en la stako \n" +"\n" +" Argumentoj:\n" +" +N\teligu la N-an eron (numerante de maldekstre kaj ekde 0) de la\n" +" listo eligebla per senopcia „dirs‟\n" +"\n" +" -N\teligu la N-an eron (numerante de dekstre kaj ekde 0) en la\n" +" listo eligebla per senopcia „dirs‟\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se aperas misa opcio aÅ­ okazas eraro." + +# shopt [-pqsu] [-o] [optname ...] +# shopt [-pqsu] [-o] [OPCINOMO ...] +#: builtins.c:1916 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Åœaltu kaj malÅaltu Åelajn opciojn\n" +"\n" +" ÅœanÄu la staton de ĉiu el la OPCINOMOj. Sen opciaj argumentoj,\n" +" listigu ĉiujn doniajn OPCINOMOjn -- aÅ­ ĉiujn Åelajn opciojn se\n" +" neniu OPCINOMO estas donita, -- indikante pri ĉiu el ili, ĉu Äi\n" +" estas Åaltita.\n" +"\n" +" Opcioj:\n" +" -o limigu OPCINOMOJn je tiuj difinitaj por uzo per «set -o»\n" +" -p eligu ĉiun Åelan opcion indikante ĉu Äi estas Åaltita\n" +" -q silentigu eligon\n" +" -s Åaltu (aktivigu) ĉiun el la OPCINOMOj\n" +" -u malÅaltu (malaktivigu) ĉiun el la OPCINOMOj\n" +"\n" +" Elirstato:\n" +" Sukceso, se OPCINOMO estas Åaltita; malsukceso, se aperas misa\n" +" opcio, aÅ­ se OPCINOMO estas malÅaltita." + +# printf [-v var] format [arguments] +# printf [-v VAR] FORMATO [ARGUMENTOJ] +#: builtins.c:1937 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in " +"printf(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"AranÄu kaj eligu ARGUMENTOJn laÅ­ FORMATO.\n" +"\n" +" Opcio:\n" +" -v VAR eligu en Åelvariablon VAR anstataÅ­ en la ĉefeligujon\n" +"\n" +" FORMATO estas signoĉeno entenanta 3 tipojn da objektoj:\n" +" ordinaraj signoj, simple kopiataj en la ĉefeligujon;\n" +" eskapsekvencoj por signo, konvertataj kaj kopiataj en la ĉefeligujon; \n" +" kaj formataj specifoj, ĉiu el kiuj kaÅ­zas eligon de vica argumento.\n" +"\n" +" Aldone al la normaj specifiloj laÅ­ „printf(1)‟, printf komprenas:\n" +"\n" +" „%b‟ igas malvolvi deklivajn (\\) eskapsekvencojn en sia argumento;\n" +" „%q‟ encitiligu la argumenton en formon taÅ­gan por Åela re-enigo;\n" +" „%(fmt)T‟ servas por eligi data-tempan signoĉenon kiel farus\n" +" „strftime(3)‟ laÅ­ la formatoĉeno fmt.\n" +"\n" +" La formato estas iteracie reuzata kiom necesas por konsumi ĉiujn\n" +" argumentojn. Se estas malpli da argumentoj ol la formato\n" +" bezonas, la kromaj specifoj estas interpretataj tiel, kvazaÅ­ la\n" +" mankantaj argumentoj estus nuloj aÅ­ vakuaj signoĉenoj (laÅ­okaze).\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se aperas misa opcio aÅ­ okazas eraro pri skribo aÅ­\n" +" valorizo." + +# complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPCIO] [-A AGO] [-G ÅœABLONO] +# [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO] +# [-P PREFIKSO] [-S SUFIKSO] [NOMO ...] +#: builtins.c:1971 +#, fuzzy +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" -I\tapply the completions and actions to the initial (usually the\n" +" \t\tcommand) word\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. If multiple options are " +"supplied,\n" +" the -D option takes precedence over -E, and both take precedence over -" +"I.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Difinu, kiel Readline kompletigu argumentojn.\n" +"\n" +" Por ĉiu NOMO difinu, kiel la argumentoj estu kompletigotaj. Se\n" +" nenia opcio estas donita, eligu la aktualajn \n" +" kompletigoregulojn en formo reuzebla por enigo en la Åelon.\n" +"\n" +" Opcioj:\n" +" -p\teligu kompletigoregulojn en formo uzebla por enigo en la Åelon\n" +" -r\tforigu la kompletigoregulon por ĉiu NOMO, aÅ­, se nenia NOMO\n" +"\testas donita, ĉiujn kompletigoregulojn\n" +" -D apliku la indikitajn kompletigojn kaj agojn DefaÅ­lte por la\n" +" komandoj sen specifa kompletigo-difino\n" +" -E apliku la indikitajn kompletigojn kaj agojn al vakuaj (Empty)\n" +" komandoj (la kompletigoj provotaj en vakua komandolinio)\n" +" -I apliku la kompletigojn kaj agojn al la unua (kutime, la\n" +" komanda) vorto\n" +"\n" +" Ĉe provo kompletigi la agoj aplikiÄas laÅ­ la ordo de majusklaj\n" +" opcioj en la ĉi-supra listo. Se pluraj opcioj estas donitaj, la\n" +" opcio „-D“ antaÅ­as la opcion „-E“, kaj ili ambaÅ­ antaÅ­as la\n" +" opcion „-I“.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se misa opcio estas donita, aÅ­ eraro okazis." + +# compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] +# [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] +# [-F function] [-C command] [word] +# compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G ÅœABLONO] +# [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO] +# [-P PREFIKSO] [-S SUFIKSO] [VORTO] +#: builtins.c:2001 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Montru la eblajn kompletigojn depende je la opcioj\n" +"\n" +" Destinita por uzo en Åelfunkcio generanta eblajn kompletigojn. Se\n" +" la eventuala argumento VORTO estas donita, generu Äiajn kongruaĵojn.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se aperas misa opcio aÅ­ okazas eraro." + +# compopt [-o|+o OPCIO] [-DE] [NOMO ...] +#: builtins.c:2016 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \t-I\t\tChange options for completion on the initial word\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"ÅœanÄu aÅ­ vidigu opciojn pri kompletigo\n" +"\n" +" ÅœanÄu la kompletigajn opciojn por ĉiu NOMO, aÅ­ - se nenia NOMO\n" +" estas indikita - la nune plenumatan kompletigon. Se nenia OPCIO\n" +" estas donita, eligu la kompletigajn opciojn por ĉiu NOMO aÅ­ la\n" +" kurantan kompletigan regularon.\n" +"\n" +" Opcioj:\n" +" -o OPCIO Åœaltu kompletigan OPCIOn por ĉiu NOMO\n" +" -D ÅœanÄu opciojn por la DefaÅ­lta komandokompletigo\n" +" -E ÅœanÄu opciojn por la vakua (Empty) komandokompletigo\n" +" -I ÅœanÄu la kompletigajn opciojn por la unua vorto.\n" +"\n" +" Uzante «+o» anstataÅ­ «-o» oni malÅaltas la indikitan OPCIOn.\n" +"\n" +" Argumentoj:\n" +" Ĉiu NOMO indikas komandon, por kiu kompletiga regulo devas esti\n" +" jam difinita per la primitivaĵo „complete‟. Se nenia NOMO estas\n" +" donita, tiam la komandon compopt devas voki funkcio generanta, kaj\n" +" Äuste la opcioj por ĉi tiu nune plenumata generilo de kompletigoj\n" +" estu ÅanÄitaj.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se aperas misa opcio, aÅ­ por NOMO mankas difino de\n" +" kompletiga regulo." + +# mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] +# [-c quantum] [array] +# mapfile [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN] [-C RETROVOKO] +# [-c KVANTO] [TABELO] +#: builtins.c:2047 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Legu liniojn el la ĉefenigujo en tabelvariablon\n" +"\n" +" Legu liniojn el la ĉefenigujo en la entjerindican variablon\n" +" TABELO, aÅ­ el la dosiernumero DN, se ĉeestas la opcio „-u‟.\n" +" DefaÅ­lte TABELO estas la variablo MAPFILE.\n" +"\n" +" Opcioj:\n" +" -d DISIG Por fini liniojn uzu ne la linifinilon, sed DISIG\n" +" -n KIOM Kopiu maksimume KIOMon da linioj. Se KIOM\n" +" estas 0, kopiu ĉiujn liniojn\n" +" -O ORIGINO Komencu valorizi la TABELOn ekde la indekso ORIGINO.\n" +" La defaÅ­lta origino estas 0.\n" +" -s KIOM Ignoru KIOMon da unuaj linioj\n" +" -t Forigu la vostan DISIG el ĉiu legita linio (defaÅ­lte\n" +" la linifinilon)\n" +" -u DN Legu per la dosiernunero DN anstataÅ­ el la ĉefenigujo\n" +" -C RETROVOKO Plenumu RETROVOKOn post ĉiu KVANTO da legitaj linioj\n" +" -c KVANTO\tPo kiom da linioj legi inter sinsekvaj RETROVOKOj\n" +"\n" +" Argumento:\n" +" TABELO\tNomo de tabelvariablo uzota por la legotaj datumoj\n" +"\n" +" Se „-C‟ aperas sen „-c‟, la defaÅ­lta kvanto estas 5000. Ĉe\n" +" komputo de RETROVOKO ĉi tiu ricevas la indicon de la sekva\n" +" valorizota tabelano kaj la en Äin skribotan linion kiel kromajn\n" +" argumentojn.\n" +"\n" +" Se mankas malimplica ORIGINO, mapfile viÅos la TABELOn antaÅ­\n" +" valorizi Äin.\n" +"\n" +" Elirstato:\n" +" Sukceso, krom se aperas misa opcio aÅ­ TABELO estas nurlega aÅ­\n" +" Äi ne estas entjerindica tabelo." + +# readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] +# [-c quantum] [array] +#: builtins.c:2083 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Legu liniojn el dosiero en tabelvariablon.\n" +"\n" +" Sinonimo de „mapfile‟." + +#~ msgid "" +#~ "Returns the context of the current subroutine call.\n" +#~ " \n" +#~ " Without EXPR, returns " +#~ msgstr "" +#~ "Liveras la kuntekston de la kuranta procedurvoko.\n" +#~ "\n" +#~ " Sen ESPR liveras " + +# ifdef DEBUG ... internal_warning(): +#~ msgid "add_process: process %5ld (%s) in the_pipeline" +#~ msgstr "add_process: process %5ld (%s) in the_pipeline" + +#~ msgid "Unknown Signal #" +#~ msgstr "Nekonata signalnumero" diff --git a/bash-5.1/po/es.gmo b/bash-5.1/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..455535b3536977fd35731421108d3f91e5c6fd4f GIT binary patch literal 162751 zcmeFa34B~vdG~+ikdO(4og|Qj8^@0A*z%SHf*mK3Z8=u3CC8HEgd{{GX(UZNno(v( zUTE0L4rMQteNCaP1zO5dC|iNF?E6m3PRmkSc4*=K{+{QYd+&^7#cc1tpa17oa{Zfo z?^&Pooaa2}InO!wD|fryGZX$cElH9y!0+8PNq)iax1Xb@N%G=#Npc?e67X)|hro-$ ze*u?)XRJ?>lfXXkPT(%^1n^q$EN~3G2lxo^KH#&!Q^3Ci?+JbwEP-DK$vXLdc>kM# zr)=;OXGc!Ij`WHYN#GNVb5R z!5L8Xc_p|B{0MkAuynrXdq%+XLB+oUTmiPgrQq{G)$<=f(eaa@%J)N%|C2ji;N{y2 zp3D7sz$btz#~T8E6%<|WdZFVAa4q*+K+&@XD!(U!qQ~pNyMpfnPXj*-s-8atmH!>@ z>vT8|RJ=>VeHpw9_j91aJqA>~TflpQ?*dh>&xHFE?&r_X07aLLU@zDop0_~N`|+UC zeK~k9@Xg`=P|HPEhIG2(AJj3##640PhWc3_Jz=E~s)W zxxc4(Pw?*C_kyZVADDtSfJ*n_pz8Hf@Lu3sz%}3}K&A5=Fa_^M<1791!IQx&Kv*%k z8dN(x9u%G45}tnwRK1ReiImQAQ2cmNxZepXy=y_$y9p})CxEAcw}AHs-vKJW&w(oc zw?L(PJ35>AWf`dQKLFJGGN|@>Sa|-|0pACTZeIjNx8t{Xzgz|?o%2EQ;{(Anz$b&J zgRchf0e%3y1NbFS;lBf_J@0≺~yz=Q>dJ+5$qlWCWDRcyf6DMo@hDPoUEKBKXbY zlH}XqPVmE9old9ha6A`Oxch=TdXi)-D0%Yu%l-Yc!8>yQSD?bZ36$J;cfb#VzdSxk zJ`IWwKDIka{vN^f4e&(nUwk!voOE9az7st4fm}=IFV`l?_1yo*_0XPj?Y@D!@ci6y z=ySUy`IAbLyq4$BuEGPPzhfpzR`dQvO=J=AKG-Hr(m(BBk{n04_kfpz?>|D@@%)5` zc>Z?)#TWMg+q_=}evkB?^YA2j8x?!ZW0K^ByzhHPk{lxae+7TW{ngJRUGmxU7fJG; z+>bmvNv3$e<2gz4U);a$dGul4zvTHz@*40|68S9Y|Kp30jod%~Wl3^-!rlEZljLUb zbnr9av%$xKjhDOp{y8XqJnj|bO~KCq#h3r{YRA)FeH@(^U=Zv>dMxL(*)gEtrD`N#2z8T!Z{jT>U$zj^z z1)%uqlv_dQw-kI1xRy%3is!d}BuPF+I<1c~hLHcxkHhO=->01JAA_iBr-ytlNuCBi z;`7jmcz6Gz;{!qQ%S*ubgFpC^x67Np;&goncnSG^4EzS^-uY|Pi-!C0H^`Iwv%kkP z@R>h=zI4dH{2_gq^xu{AB-_E$dwPtnqu|%Mp9MwVktIFW{tp6)mP~@8^C3|E{fVIJ z{bF#4a=ixBc>mv2M&tU5+x3{d*$9e1_5`eg7jplnpyIs++{*olC-fwrhMo@qb$|99 zdy;-|0+f7w6?iiE4)9Lk2f>F>uP=Zq*VT9KNv;NK;F;k2K$Yj~pyJ)>E{-nJi!4RnaaviAjTi|-| zd7$Ed2)sY|T~PgE`MtfIYe9_%mw_tZC@6Y88dQCr1ByPc0u}Eq;JM(tLFMxu@O#h=^XCM7FR1qTe!#omrzc6dzdyJEd?0uZ_-En% z^`O%ITEJ53_v=CN>3&f4dlD#qc{`}~`5>tJd?(;ZXM6qEfO7Ye3QcGobp%H$d^hl4Tz66j1!R23!N~07b`ExPMN#e?KTXd=C^|eg&=u&s*;N za}}ua-vCNZ)Ig>82vGUG4pe>K16~Gx3skvQoa=PE5ER|^g5rZ2Q1PD!s{Xfz_df)c z{~cEN`%R$QaS9ZjpA6m?d?&aE{3*B+ynLn8V-^(uKNnQJUkxq=-v?@(`VKe(u3Y8e z9s-KKPX<-qTfmFJH-cAz-vyQb*7LlaRqz7tp9YGL-w#TU`xYqr{2Ekw?y%bB+XbNL zdO0Y%T?Hz?1E9+F2vG5E0mYYZ0EfVDgX)j>TjMwY9?$)?p!#1KRR22wD&C_&mFI1s z_~;9u+c`>R2f`vaip{?&j#0M##k1xmgzy~yb_3Q7+A z2`GBM2vq<6yKw&%Q0@K`Q1!jr{k>e5f|7StQ2h8fQ2g^+Q003sD0+W1;MYKv^CzI> z!D*YkyhEV)@c^j$J|0v#{svUO{|rk0eH#@0PTuVD=wk4G+}{W)y_bS&pU;D8*E?S9 zl7HU> zRli>bJae1Z<1$d`)B`>SRQfLjB?sRJsy#moo&ff2clw?Ps$I_l6@D|g4jcn71D_7| zgP#Ny|6ctrAGU!i&m%#_dp0QkdnYJ9_zI~0bjl8wLzjZ8*8x!N{Af`1cqOR*_aRX7 z>iEl@o*O_tp8-YBmk0bRsC3TQ>HX!tpy+=ksQ6C;#b0j)Rj+S>;+NwFyqsr%D%Unp z?Oy|x-g80m>)(P3|7}owpIqVLP6fpu{h;VP1uFc*K!txJsQP>m6dis5N{*iVfSx1; zcY|u*Iw*PgEKvEr0n~W=K~VkbOQ86D$u7@lDX8=|fujF4U#{57cf zXYcm*?E`hcA5?t~fvW$LLG|A^gKDpDf#UD820i_YLDBtsQ0@F|Q1pE*D7p4|Q2pp9 zpy+@6P)~9>*awR4j|Z*YK=sS7f~v6nr75^1L(PmqGFI zuR!tJ$ya*#3qY0Y8c^XM9iG1oRJm>q&u_Qa-!BEl-)RQOs#1r8nOAAa9R{f|5(m1*M0*GT@uT^Y?+5 z((yk9s@(Ue^dwIw!7ZTV%g1i&N&b>_zW{y;e0ZxT8C{Yj`{sI*=X3vehloe{hL7|l zpXK?@59vvs$Nk8|X)o}HkD^^j|E`bkVGfL*@|2#0D9JxQttWXK>0kVep5%4Z>u2CB z`0~GSeeBfddH!dDqT>qiBGS7Ed^PFa^db_WfzEt+Px2PtpY^7mb8z7r-vh4# ze+1qQ`d&dJevf)y|5@}E>UqVNdXgIWoGzl!`M!?oZ( z?yvoK%0~uo0G0o(KO`U0{}T9d@cbY5B=6?=@js{ip!)~Fl;@xOWl!=k?tk$=J;}RB z|DTg3$*Ia`$&%#j;LDC%V)Kv39>2uq6Q2XedER@%lH_*8d)n=nSpA<>T4MBh3HS!m zeG7OYc;m@SlBFkNZy?hXxqt6zOOmG(??b0AN&XW-al=_lk}~DGa{ZE|4*m_Oe!FzT zlH`}*{Xo%m<3{3x7lV>7{h-N9Q0;aIRKI%`2+Jlf10^RmU*Pd;pyc5}P;%_)pyb3~ zgO`H0f^?1K#0!@secV6kzDtq@^!z9|#QmjPmLz+@r-0&vuYoGZFF?tMJ6y6P`3&_s z3sk%RGO5Uz|z!H;d`#_CrPXI-?H-e(iC&2rI$L(5T zpMWn$&Z5f1-}yToRrv!K%dHK=qh9A0Af zzL|ip2QT6Ij{@ALF_fuh$VLAA?2fujE}LDA{HS9$np zQ0?^!P;%_6;41KEpvryr{w1cL>;kuN-vmzuUk{4kZw1v~z6xFhCRcm9_XkCf!=U)) z#Q{GAs=a>>E(edl#@l-}sCqmQlw5lpsPvu!ieGL8&jG&=s(tVJK*9LfR@P(k-^R1xh|3gsW?|Z%1V+W{l_yDMK{5hy{ya!Y}{1_Dd*FMPQ$km|I zdp39l_)%~tc<&oL{5W_$_b&j?2Y&^M?&}!D)lU1tdw~s5bbLH0K71Xx2RyOt?RX6+ zdDaBgK2HV*z~_Pcz;A-0>*g`jK*@negVW#(L6!6NGtQrzLGj5PsPeoO6n`FHcfRih z#rHRWk}uBzF9bges(nvxc>CQ8R6ke-j)2#KO7Hcc^80U4@@@UB)2jxmonH{}6QJbD z?QimWUj|;u{X;<2=cAz7H|~muLsrs4+TZ=R6v#I(V*!6Hcpj(fzrg#*vSKYL7b~^78El zMZd>_s_(l%jVu2VFg@)3=}J)f{ROD@dp9V$ei&4Fz7z1IBi?V;bF%a{<>IxbDHd{?6q0Gr>{tP2it#oxTJeh8ZvJT=GPlg{q3;34-F9Q|q`&^s&@e+{fPxe>l*KvjW z_+oQ-#uPVs5D&i*UVJp*7kU0Uev99J!S(6z{3kpY4@*9t$M5fgOs|rCT=8!uzdyu< znKZcrWn#LXoWfQ7`(EMxGrZW%^*EmW8<)ngkAeSKjKJ@613mtgcgw?X1-X>_$AFsS z=2bRP(E6a4}`HKc-X((^LEVFsO0%!QfwUeVpGf<@zkwtGGVR zvxkHFEAv}_FXDOx*8$z|_X#eIJxuYE(*g}1&;9GTF65c|>0g6y0Ur+T=Te`0HTWW~ zZ}VG!uW(41;+k*BUBLKvukgFhgMSYXpTo1u`Q69$xk6aU-68JRhG#Db;Wdukh4TFp z{C0TvDSm%B{2t=>3;F#F@PEL=T(9D~nS1?74xPjOc2Ke={*CZ#3F%%8N+$m|SA*-> z+>e0|1NC=D!dwgfE%!HaJuf`hyMNF>{7Hs9iRX_6Z{j+WIL`+4H_CN@cguKoPcHpc z9IV4(ib!te`a3TD{Q^7^e(PTH=E4x~Hwwr7ul0hz)m)qG7dArh2CiwsOmbbv@4FN4 z#E@2RNaGdZUh}u5g!w$z1NeO_*CBrE@9F%O9R4cTulfC2P~-n4To2;@>sruKO|BC>NP>yNWVUWcxL(iw?I_Eg`Tb}7j(=(R{c|3CnM-yA{TJ^Vfh z9>@Lpp)RKe)L4B{2y;`62cFFHTexVpl6nG`L0$feJ;@^qk=5@SZ#k)(uQ@Os%bzknEAKrhT z`#FSbPb#d3Ijm{)60qi)%TT{;m#qkAUCg*;~23!~OlZ zCb*uUfQ7%4_e%uq> z7axNE#dQPmw{V?D_`m1=gb?rkA>A{1_8ETPo9jRLeIMRm!|$v3{Z8B z9|Vsl{^k6BJl9vajtlAW%Iu)$f-mOzPxXMm$MSnK_}5%_n62QCxSqwc zrCe|1x{9mDv)^#(ZZ_DdZ=7&SL;*hWTTl@>$7w1O=)?q-RP|~rg(i)QtDma zN_p4YNE@^5YNM`4)mpQ)-JXu8qER|MP>jxX-WkpLH_1ckD zCnYDJG*hnC8snSN<*iN2C&;bUsx&RcSff2YU70xfq$EvO9^%#V)~Y03Io@bi(uuj5 z*~$dBwQ9YRCd-JNj+g88Mq3F~r|J|wZBJKQROm>ue0(_>ka@XQrDRs_M481$lhqn& zR$AlD>TJ8wR8|S~B*k>BqEL+k(C1*aoa*s(xs}%EYPGa-c(&1Ox7tlTC9mbJlftiZ zIyqM#cl!9dGPI}=XKb!ogTi@0e|(^FTB#MkR=4cSYmg`4SGHR{0w`%UjWZEp(rz#X%|Ec2X%1X0I>$RyfWNf8N zm$#O#B0!*uh3Sf`XPeTo@&vSMSDLfU3jc;ES;I7DNe|NP7}(XHziZ6Q!VqKCTD5&7 zrGe%u#)pN1dE&9DJc!t{-7Jq+(ype<5}uiBwbQv)C2h@(dAp{ErmX;C53x9m(tyP6 z>cL7{ZZ^dyR!3vQ$V}qRa=Vf)ug#@nN7@zfg%wEbbJRdIK@6W7dy@p*s;C34w46>< zo0V}G&9f}ej8&)R8gs4m#>QCMqTwxM{!S^H8)eKw_B-I5&oQQHpVM0>y}Dj zV7nL6JA!JeMwzOpNz;0Hrjj-*la*$rKCWi>W~*1)u-}1{wwSgOR41$6QL`YTW4qd( z6I1)cYQ5Y%LU*b(%hW}^fl5^-?B!8Ov-sOZ2p3cI?mcM?eX!iDmd9#dkIn$KD(x?x zSIed|m6@@?k)6Rrl19C^4oREUaVRxWIb1B_c%yz0dDOuy#IbO6wVZE4vN3!Npb{*| zXEA)U0&j?;in&fyYV@G_PZ2eZBcV#M?ns`ZsG~tc(v`!N@i|y`%-cyFrI^P8ue&o0 zLFPY}*ej+rRcRxMXR3@AofVmBOjIY2Ed0*oLAx?DYkjyorryqbMpGPWR;g3vFwJY@ zR9CGar;QZF(#_Rdm5$=tgH3dU@`Q$=tjyKs_*|{rT&R=8VNLRMQu5R?a7l@@YgQ`< zRh;p;CLODtcW_lfmn7~cb&)1LRpXyU^`|Dn5VY+^BPDy2#+zKQb!InNZNk*z*F)1# zp*1T3I6hrQ5F&3Ss}+89=?cqCqe0qM_eddf`-o@8m?*)cqLk}alF2eO^!iLUBsA*> z>WxF*$E&qkWr|VA$IP_1H(fsN=~U~r>R4Kc8-+}_KNbZL4T zycZAAYL{nbJ1P^U&HO@kyfM9TfiVWw>>l+rR4qq>*3=D;NQkMmrkYvjQUIx1u=Wfh zERHOu@oDt6^39YFS7+vCGIcAhS6ndEDhDgl(8ep33Db$f_!}d%8gos0&us>;(p}ZD z8#S1=Rhgx;(SIy&)svwVt;I(nUf0m4;^6ANQN#bC(7oynsmHU(cJ+YyO~89qnlS`9 zU-LW~C@|yGdLHf>i?Z4l9yKddCc82*FHz8?bmqZP#B5xQMK8XILsvewDXEDgR2Q9~ zhPacp`*_&EwBZ>Xp;8n&&LZ!Nl1EK2BL&l>T@>wwr&7() zM^x(g_NKW8{A1KNW!P))8j_SLlz$|%G(9hBHZ(*v-YT0t?I2s$;5j3N5g6Uf>KJv) zW@V;f!$jnqa+{H3j6pgi&-h-=R47J@aGMS3Q4y4i%-pOiRu;@T>qt7fZiV_)Hg-Wa zS2IkPYl^Q6()!|by(Kueh*~#S_sK*D0p?oeDU=n99ABg}$ZfTNXkaQE#9{r$CNHjnClVqkVZ|WF>7rgG?8*`e#zu8qbKRp+wG#GEiw$X&i&te)CElwXqcZ5`S>0!3+;IUB{2 zzA^G4)wOHaCVdlmI@OAX^AtHceqilMDS!44K{^DX!nCI=z^tZX`k9x+BCioAHydp@ zvt>yrOn5U>KA)wC04=AQX+c zK~^qmR;bXB&81tLEZsEit(S(Oy>y%qz20at!IzRkimGFld6Muv%r(Cd`UrvkQzHhZwc!XT)x;Sfh3^ZZNhpl9Wmht~48~RN9akOMxE z4i#zok5D{nRx+;LKCm}(YfdZYv%F?&XcObfs!=wOK+M_2hdI3q#2A6FPReK{Ay{j+ zRzBja*p+V~X8&O_9Hx`Z1y2G($!jM@1;g5;aW=o~>087qTi) zh%6(kK;T`ex-IMF|E~)N>&5&o94Ys|sR#dl9r%yif3vdvZr%5`3P*GNzP7`5;TM&NTA6u#RQrMzXJT!#bSARI4Rh z8&f3VQ^;g%)9k;q)!9n2mB(hUNVe_S=f<35n~&(0w;8sBhLH=;LeUF><3JE41!H<6 zWpIIBlK&Hx$?{ySttXPqO5U`_P%~?ZokP3(gIzqTn}xiTN_?Dd+rFo7WT#SPoxqc8 zRmx2!RA%WkGqQ4x_E?BkZ2&3~RcjQt9_tMC zq<>=qFKS2dq%z2h5Q5np&KXlGpYI|#wo(gWgU2R~w*+1PH=dKcs$V9$%WM-^U zLqK33H~3jt5ov9%#lRe@}wq}!I};Sn5JLGOm6*ZbnV&| z77LwiPf05as{QQrk(Oq~1&aFYU=D7Gvkxyu5%bezz18zT%Y5;UqwCfP?cS3qK^nt`5W zc&^^7VJS$YNU_UGvUr%V5sRZTsyv#oRoiQzd8H-sjb%e}+8DcXxLv^-KM_-oQ)LsC z1!Gd7%UY!^g=}K&J;l-(fg(}7Ko2;?+a==(Cp+{pQ9RnaYejkp15Y&6#C{}35W|P2 z@V=f+?M3(M3>|@$r3y0^s&=rdwH*l@o5son#Gq1dTdB-MNm*h)4l1a1b6cij&eYih zj;idg*9fBgJ9@XPuM9RCvKWmd1=dc{bU`vaed$hJvhzyNFcAW+NzcU8{-GVEZElMdu^63w=^`{s7$fV9E#npZ21Hn@ORT_h^t`Y#6NYt$AbAsDx%1&r zLD`Zqcs|bFqx=8w)kUBPB;xE zmZ+Eh5DPpe#6#4TQ9y23zlt*MSJ`Z}49%CkZRvc{x)d$Xg@;G0*lm<5a(#yY z%LOy~N~2-+6%{Usfnbi?vv+9so{<~EY{qKtQo=Q%I0-1Sz$`6fi>NeWr92+Ta30TS zVW07hWkaXvp5YB8>$jaRLo3HH8$FD-Ql3O-sQueLlr)IE_fv!-e?&rr?mxV(EwQRXF3HEiQU zrIn>HS+zNU;xsD~OVm}XQA!%2;R|zdj49C&*}QDDau~_DB9z`DT3d!;$|@m)dnmGn zMl*t#biBN>UFGd6Utfrw=b9~I9COYw$1JAAmx@X~k#>Dd)=kX`RrA(ReL~*FTIDMU zXn2!|0Fpw7%ZcjEtdUaVK&!+Y*hd5W%6w2^^qflLP?{+Nrl(=i7(WnlEjr#%$`Q)z zjsW@i5(bKp)&lYJQDY6N81@zDKYI3xkeqi|TDnlrQ7Zx(V(#^`V!>1%6jI6JR((Dw zVvWYyiJ{SW7f#`vpmIrZId+xH=7$Kk36{Dim@`O>hcZOTh%9K#p{i*=|M|B$lSnamr9!T*{iGGl&_hXiSyOXEoC0r7vC8 zw`*TNJk3bKv_hJZ5t-(f9WE>{OC6on+Mq4mRK_twRssWB=v|%VG5yNco=C=cPOWPy zR$Lq2EEyuVEOfYPtI8;33HgGRFYv{n8p~Y)^YGBwX4N(~!}>9eYk=fho}%ga%Z!`tT9qkqi=|7Ex*MYdxg4m>`|eY6=*j^Rcz8K zKJns-nXSM8$bXfoy{4Y4yo!iifI(eDk@Y`7L{x1D5bg)G=7NG0ZhC z(@tSCGI5HFI34oT6g#7~Ra}|cD1gzUSck49)>&*oP>$MQbc*cbgcsq^`~%sPGb5g5 zZvV_P9C)^|ld`A{hlho-ASQASGL^!0Wi1z5Wn{n`i}Q|9mW(f44~vXns8H6eJ3|yj zZJ2qmR%hA_*)X(LHDipT#SMlgo|wP2(jbb1GbF(vPbSw^_>fBjAslQ@6XjaSA-85` zjB4F^mTp25(xB=Su`V(YE!)77|1xGJ>bb?2D|`^OIVufGi!9r*Z*ZG3EYM(HQyisJ z$8tu`6R7KoW{*%e2Y0wHEY*riHnR=rvOUv2P5IE% z&jJ-J$!vrhot8oAYlS$ z=H8frree(sP6muImP)AvA!Y&9Jb>$b=G0 zcQADA-y*8)i)f#jnbdNS9euXZVkZaE5e`&(#wC`K{nNLAmqcJ37iV&c@KQ#9h%{TQ z?Dm8Rbjkc7s5TofWIKpGSjEyf5T<2EcaNh}adhX)yK zj6lH&QHzlp@H95E{-t>|3II+?8Z~j>@!l<$8)h@=V<8zAoSAJn@7?r2OMv;1rpHJ^ z8?_c4*(ORsO@@(J7>Js#m^d4$Ej=qa>@kDKkokwWd0DJJ+p5e>GD z6*Dl^j3LGHG1D}Q0QJUfi*j~mmDM<~Q>eGy*+26-QV3DnbGYZX#aCMS~eJIYS=7!mA2NLv6O~$7R|KsKyjca`9;OlyHcqXDqxy;%*88{ zDQXnDXalDc956e6Rw+z3SxZIBUo7HmDW+3FC^G_y1`8&~n}rgJ1%*?fl}Q6CGis*x z-nJ=@ESwpmh?bsPIx356wt(7>JyCjHeG0wKtVFI~LKKaWh>%g!Gx4k&4g2F(#LPz{ zY4kFXOg}9b$=6ZtC{|RUx~c4~*kPArQ0i#fc%L;$M(0=vrvMUzrGqt8RKiqxLa?zJ z#plTfm55~pH_jT}eZElWQH4Hpo5DeCo$EVF9F}5=X@%Ns8#HV=Q!`*aSCiPge8f?g z4;GC~&}U!LOWSwNMR9K^@_^xJ>%mh5GUe>Ji{x(VO7}z^JVi9-s@gpp0___x@ z&UQ1H1QoB^hDGZh9xa4+(c{Ywm|)DRA1!#5bVfT{v{1v$DT=3jjWy_^VY1|D6dIvh za8=TNYeh`2GLF z*B0pHY0Tyb^#r9(M~UI;CHW9pu&_K76fVUsglp2-rPcbH55{L-{}UNKi@ZMH>EsK|1nw8m<+0XUqwSkh?uh6K8Zm=fK!(a}JpYs7b zJCmq2TL%00i=EJil}?9}&?j=TR^SpokT+V`h{ONQEi0^a^!UuJ_sFaU z+)-9Z#$D*xEYa#+^o{Cbfl)#m8zRg+zHIlAmAy*cX%zV6Hajc)k({*krmAY0lB(>YH4YUtwRy34d4(uMxug{ugkBy( ztLs66!k<`(Y|RbROQuwkpaT6cMj`ST>833{HH={l0KROCICCwQpjJ2RDHTw04&=_*H7;#e4_%--{} z%IB*gDF4QieS0sr!bOc=`Dpp978hsY6jQDcVq|Go^UeJ+%T{bOr9;}Sg@`3XPo|(4 zKUsA9XJFDcvPb>G^ldZ_Q|Y2M+)Z72PHvI3ROsl@UBmXeMRzzF2F`_dloT3c4GI3x zb!*3PS-2rkwa}|5i?UKm`O;-(?^QDN5u={iNkj%UbgsHLwTx|)nL|=z9 zccYx-w<%tu@p7TLw>8kB6K~ZMGKo7;7g$o7DYuH7cZMs$TuqxaEm-e3oyd$V3M$I% z9@?%22pUAcMET6u*J_pzA+e8S>zN{FSB^0m_xW_WEzh?p`OG=16|_dm?euC94@hc1lcKCL|Z^8>gJp!G&UA%X=JtyalbvU#A0VN zXtT^@ciF74Yd+1GVhcSQyTg7?nNBneNcJGKtO{!&qrwW|IGQ*EI67lPcg*~;yVPd#N0X*u-~iK z#e5g-cyX;&vY@Ce?8#S%;K;cd-|8iis7A_s*Dab@%xLcPvysrJMF={ln0YNmr_EwM z^J>^v!{RNXu~b-@VAD@jrE=xXye4vX+l6Fvwv~?z`fD~!xx zmtMh2WMwkNM1y=#?K0wdU)IJ2xdgDY&z7~dw99NBXKa;SI-sReDlzJ0yU}C9vkR0= z`eS@A1;uGrAX#+P6Ln+2)v$Ggfj**2q-Y?@L`e2V+F&Euj?v=6bQsx z<50_1XoG8dw9!eaM1c*lf5NClJ-a*VA&hK`M};;LSk{9%}P2`lrS) zr5}Rf`{UHg29e^TZ44a4*nnvot2K+yj$+oWP>0O)Awn@+PNsWUfIXa!n(?w+ThW=N zMGy3_NjB$wSQ~|7Hdt0DOOuRy*ja$s#gmwbo3%}GY~fbOfYTVeQKm@kAJCLE7H^`o zS7%Phr!7>+QjQ~3udjnx=y?i=5j)Or1H}uiIbw!R8|p{dt%z@*uShW}F59EUkAn45 zV@3x%TaID59lNN!^hZ4lY$2TZLUM(yj&&f6g*Br|XNC)ngh{_9U*_?*@D@%hrTvqI z%xw|sf9TlozHdy$WP!#aLk|jh2yg4}Xlh!{;LJab6}DL4d#E~rVO5hi&SgWckqVZ1 zlqo#gO_in1nv--_8I8?vVxlVFGA0&yI;^*p=m*-yDIZ=*g2`HWN{W~|X|NqqkP#@K zZ9mKUK|Hff=2J_{G!P&gJ(_6|l`A4AB=)5?V$^5W42^J+Cf@)zw-6qWa zVS&uljC&@NWRnbeI)%0^RVP-jW;Q#~+gplGfST&Gd(kB2tWsyLYxkCt?ybb7)vK#m zMtXaz6NPvfYm3pi?TXdACS6@B`4K1haL=(YI9r=@B9zWvlRi{F_EWZ_PedK7wq=B1 ze}PPfoOY=uES+~=sYG+rsyL1opRY;Rtx1=cN=#MSRgM&J&2bHK#~V+JL~K*gMw3tp zYJlA?sN>kL=f-rbVV>2+7q3Y#xr9RL@ClX3N2XY=)^v3;%x_8;Zy_j`Vw5yLggINW z$Xj@E_7;k*7Uif#C|-}hy(s6h^cZT(c4&Y0p#0g@Lwo(%&H1zV=v?APs%3F+CSZIR z1FDatm&(hnnfhsHo@R;iGILh7nY~6P^LG^dJg#+I%eRDOlhxexa$Rh7rqUktTpm4$ z>*g(`+`rLY*+0WJaz!Sio4~a;CVH>2Y}s8BSi86+8sk_pnkqy+pU#*Y(l|M!!d6t9 z+-oNzUOAl|eU)|eAPCe+iy}kaDdq#ek&MKc%`KEgkQE#w!bDO>23c9;UQ0;X8*+n! zCU_l*=Oh@4{nsiVx0%jT z=Qg9Yxv(#?T3)q+NKz4kOvY4}yDXMBhK_3>>x$i^+q5 zFZL_aqj|6p+L4#Jq{uoR0jPiG5N^d0d)iqARjN;=G)9NY%Q|3fly6jvt3&Ecd&5G5 zB_j*A)~}F4sEF>NV{ugs+YlH$l3a8aT4jgqvRM^eF|s640L!NMNH*(lM2@VOB+Zh` zbQb%Cr$flGqlctlkKu%Jz^DD?;0;fl@kQh0yD);Pm*q9FXuQG}<}60#=rOwL;j0f` z-vw)IZA_Kq51gM2m*q5d^qh!<9lY060!G&?%Jia93PxoV*I&cKV8ml%1&dND^^teV33HAxwRFOq#E*eEEWv2Qg?U|xyvHU3GV`u{ja@&QO zMIBx=Lud&f7OI3|zdh!Yw>HnH5M3e+0p)m9V$QmA3+5wvYMmoAwJfT|mOgZwv9#8= z5J?W-W=x-QE);j@w&PAtMhBY|+W@WD)gqVw&Pg;=;*R$=L?xH$F|CIVxLA`~MaUK&Q~?&swt*LPG24Yojd$tMqL7yxeOOMRypnAW5O$L}_0SQNlej7f+(A`-Ny8XG6Lr#NL=Emr<4{rDIH{`f@LkTS!vUmHz_Z=>vV#cg!O4St>;duVTnOvZWKP!ZI&4KxS|Pa!AL zzTCPYbx+D1FNql3GkYsHF%PSU(|fY|#UH&jrtZBpHWT+w@e94NcdDrB7m^QWlxH#m zrA1R4E1^_56n_(t*6Y@2W<=if7oYg)Y`=p?mgnhtbqbnIS+p?qq!sP!|cK?;ht1^3H&0W4{2c@YMIAD3{V>MS~kRpAy?=xIwJ}%7$_P6@JComjEH@fvPLtt z&Ya5gRleLrUR2X9Znx2UR=op-i*(pAXJ?(c3y2zOkL;$lNT|l2W5YNWLW*mnDswiZ zH*+sbH+C`~mzdCL2en4`GC9X`K)Pq#J%-yS1c-2(NG!umovVL zdzsAk88{@cSD_zoYw(>7rp)k^nN#e{C3uQyr4Q`d8t*e|cPz`?QzB{1gzX|nGw8T_ zBC2@|ap(ekeXO+)QPpqa!KG9_K2_yeS;_lb%t__soH-VF)bV{{-arb8RKbU#K!$!D z{O=~?Sb;#^;bKCn6k7o4{aOAt$+zYl)d{(^6|r5k1WwknIpwXH`SPn6U5jx?B}m}r z+dj%Lw*4YB$lN!IZ1@MLI~8Lm!=iP^KJv$}F{Ttm1G1?wDiqpzM148$JHsp7`VSX{ zW}iU#4QLmNp5*OD0F^y>tJ5If;{4!f!EjdQf@$ThjlK*wTB$9Ry(JfmAj6{udf(te z@Wo0)Mfti$3%h%EX7uQ76wA~#!bpfjJ_gOwWa

    $things_map{$in_table}\n", __LINE__)); + } else { + push(@lines, &debug("
    \@$in_table\{$what\}\n", __LINE__)); + } + push(@lines, "
    "); + &html_push('DD') unless $html_element eq 'DD'; + if ($table_type) { # add also an index + unshift(@input_spool, "\@${table_type}index $what\n"); + } + } elsif ($html_element eq 'TABLE') { + push(@lines, &debug("$what\n", __LINE__)); + &html_push('TR'); + } elsif ($html_element eq 'TR') { + push(@lines, &debug("\n", __LINE__)); + push(@lines, &debug("$what\n", __LINE__)); + } else { + push(@lines, &debug("
  • $what\n", __LINE__)); + &html_push('LI') unless $html_element eq 'LI'; + } + push(@lines, &html_debug('', __LINE__)); + if ($deferred_ref) { + push(@lines, &debug("$deferred_ref\n", __LINE__)); + $deferred_ref = ''; + } + next; + } elsif (/^\@tab\s+(.*)$/) { + push(@lines, "$1\n"); + next; + } + } + } + # paragraph separator + if ($_ eq "\n" && ! $in_pre) { + next if $#lines >= 0 && $lines[$#lines] eq "\n"; + if ($html_element eq 'P') { + push (@lines, &debug("

    \n", __LINE__)); + } +# else +# { +# push(@lines, "

    \n"); +# $_ = &debug("

    \n", __LINE__); +# } + elsif ($html_element eq 'body' || $html_element eq 'BLOCKQUOTE' || $html_element eq 'DD' || $html_element eq 'LI') + { + &html_push('P'); + push(@lines, &debug("

    \n", __LINE__)); + } + } + # otherwise + push(@lines, $_) unless $in_titlepage; + push(@lines, &debug("\n", __LINE__)) if ($tag eq 'center'); +} + +# finish TOC +$level = 0; +while ($level < $curlevel) { + $curlevel--; + push(@toc_lines, "\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-5.1/support/xcase.c b/bash-5.1/support/xcase.c new file mode 100644 index 0000000..527840d --- /dev/null +++ b/bash-5.1/support/xcase.c @@ -0,0 +1,98 @@ +/* xcase - change uppercase characters to lowercase or vice versa. */ + +/* Copyright (C) 2008,2009 Free Software Foundation, Inc. + + This file is part of GNU Bash. + + 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 . +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +#if HAVE_UNISTD_H +#include +#endif + +#include "bashansi.h" +#include + +#ifndef errno +extern int errno; +#endif + +extern int optind; + +#define LOWER 1 +#define UPPER 2 + +int +main(ac, av) +int ac; +char **av; +{ + int c, x; + int op; + FILE *inf; + + op = 0; + while ((c = getopt(ac, av, "lnu")) != EOF) { + switch (c) { + case 'n': + setbuf (stdout, (char *)NULL); + break; + case 'u': + op = UPPER; + break; + case 'l': + op = LOWER; + break; + default: + fprintf(stderr, "casemod: usage: casemod [-lnu] [file]\n"); + exit(2); + } + } + av += optind; + ac -= optind; + + if (av[0] && (av[0][0] != '-' || av[0][1])) { + inf = fopen(av[0], "r"); + if (inf == 0) { + fprintf(stderr, "casemod: %s: cannot open: %s\n", av[0], strerror(errno)); + exit(1); + } + } else + inf = stdin; + + while ((c = getc(inf)) != EOF) { + switch (op) { + case UPPER: + x = islower(c) ? toupper(c) : c; + break; + case LOWER: + x = isupper(c) ? tolower(c) : c; + break; + default: + x = c; + break; + } + putchar(x); + } + + exit(0); +} diff --git a/bash-5.1/support/xenix-link.sh b/bash-5.1/support/xenix-link.sh new file mode 100755 index 0000000..4d82e00 --- /dev/null +++ b/bash-5.1/support/xenix-link.sh @@ -0,0 +1,84 @@ +: +# link bash for Xenix under SCO Unix +# +# For xenix 2.2: +# CC="cc -xenix -lx" ./configure +# edit config.h: +# comment out the define for HAVE_DIRENT_H +# enable the define for HAVE_SYS_NDIR_H to 1 +# make +# CC="cc -xenix -lx" ./link.sh +# +# For xenix 2.3: +# CC="cc -x2.3" ./configure +# make +# CC="cc -x2.3" ./link.sh + +# Copyright (C) 1989-2002 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 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 . +# + +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-5.1/support/zecho.c b/bash-5.1/support/zecho.c new file mode 100644 index 0000000..f3a4fe0 --- /dev/null +++ b/bash-5.1/support/zecho.c @@ -0,0 +1,43 @@ +/* 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 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 . +*/ + +#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-5.1/syntax.h b/bash-5.1/syntax.h new file mode 100644 index 0000000..34f5496 --- /dev/null +++ b/bash-5.1/syntax.h @@ -0,0 +1,106 @@ +/* syntax.h -- Syntax definitions for the shell */ + +/* Copyright (C) 2000, 2001, 2005, 2008, 2009-2020 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#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} */ +#define CBLANK 0x2000 /* whitespace (blank) character */ + +/* 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 shellblank(c) (sh_syntaxtab[(unsigned char)(c)] & CBLANK) + +#define parserblank(c) ((c) == ' ' || (c) == '\t') + +#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-5.1/tags b/bash-5.1/tags new file mode 100644 index 0000000..a5eb1e4 --- /dev/null +++ b/bash-5.1/tags @@ -0,0 +1,73401 @@ +!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ +!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ +!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ +!_TAG_OUTPUT_FILESEP slash /slash or backslash/ +!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ +!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ +!_TAG_PROC_CWD /home/tong/src/bash/bash-5.1/ // +!_TAG_PROGRAM_AUTHOR Universal Ctags Team // +!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ +!_TAG_PROGRAM_URL https://ctags.io/ /official site/ +!_TAG_PROGRAM_VERSION 5.9.0 // +$(BUILTINS_LIBRARY) Makefile.in /^$(BUILTINS_LIBRARY): $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}\/memalloc.h $(DEFDI/;" t +$(DESTDIR)$(libdir)/libtermcap.a lib/termcap/Makefile.in /^$(DESTDIR)$(libdir)\/libtermcap.a: libtermcap.a$/;" t +$(GLOB_LIBRARY) Makefile.in /^$(GLOB_LIBRARY): config.h $(GLOB_SOURCE)$/;" t +$(HISTORY_LIBRARY) Makefile.in /^$(HISTORY_LIBRARY): config.h $(HISTORY_SOURCE) $(READLINE_DEP)$/;" t +$(LIBDEP) Makefile.in /^$(LIBDEP): .build$/;" t +$(LIBRARY_NAME) lib/glob/Makefile.in /^$(LIBRARY_NAME): $(OBJECTS)$/;" t +$(LIBRARY_NAME) lib/sh/Makefile.in /^$(LIBRARY_NAME): $(OBJECTS)$/;" t +$(LIBRARY_NAME) lib/tilde/Makefile.in /^$(LIBRARY_NAME): $(OBJECTS)$/;" t +$(MALLOC_LIBRARY) Makefile.in /^$(MALLOC_LIBRARY): ${MALLOC_SOURCE} ${ALLOC_HEADERS} config.h$/;" t +$(MALLOC_SOURCE) Makefile.in /^$(MALLOC_SOURCE): bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +$(OBJECTS) lib/intl/Makefile.in /^$(OBJECTS): ${top_builddir}\/config.h libgnuintl.h$/;" t +$(OFILES) builtins/Makefile.in /^$(OFILES): $(MKBUILTINS) ..\/config.h$/;" t +$(Program) Makefile.in /^$(Program): .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP) rust_builtins_lib$/;" t +$(READLINE_LIBRARY) Makefile.in /^$(READLINE_LIBRARY): config.h $(READLINE_SOURCE)$/;" t +$(SDIR)/man2html$(EXEEXT) Makefile.in /^$(SDIR)\/man2html$(EXEEXT): ${SUPPORT_SRC}\/man2html.c$/;" t +$(SHLIB_LIBRARY) Makefile.in /^$(SHLIB_LIBRARY): config.h ${SHLIB_SOURCE}$/;" t +$(TERMCAP_LIBRARY) Makefile.in /^$(TERMCAP_LIBRARY): config.h ${TERMCAP_SOURCE}$/;" t +$(TILDE_LIBRARY) Makefile.in /^$(TILDE_LIBRARY): config.h $(TILDE_SOURCE)$/;" t +$(srcdir)/configure Makefile.in /^$(srcdir)\/configure: $(srcdir)\/configure.ac $(srcdir)\/aclocal.m4 $(srcdir)\/config.h.in$/;" t +${BUILD_DIR}/pathnames.h lib/glob/Makefile.in /^${BUILD_DIR}\/pathnames.h: ${BUILD_DIR}\/config.h ${BUILD_DIR}\/Makefile Makefile$/;" t +${BUILD_DIR}/pathnames.h lib/sh/Makefile.in /^${BUILD_DIR}\/pathnames.h: ${BUILD_DIR}\/config.h ${BUILD_DIR}\/Makefile Makefile$/;" t +${BUILD_DIR}/version.h lib/sh/Makefile.in /^${BUILD_DIR}\/version.h: ${BUILD_DIR}\/config.h ${BUILD_DIR}\/Makefile Makefile$/;" t +${DEFDIR}/bashgetopt.o Makefile.in /^${DEFDIR}\/bashgetopt.o: $(BUILTIN_SRCDIR)\/bashgetopt.c$/;" t +${DEFDIR}/builtext.h Makefile.in /^${DEFDIR}\/builtext.h: $(BUILTIN_DEFS)$/;" t +${DEFDIR}/common.o Makefile.in /^${DEFDIR}\/common.o: $(BUILTIN_SRCDIR)\/common.c$/;" t +${DEFDIR}/pipesize.h Makefile.in /^${DEFDIR}\/pipesize.h:$/;" t +${GRAM_H} Makefile.in /^${GRAM_H}: y.tab.h$/;" t +${INTL_LIBRARY} Makefile.in /^${INTL_LIBRARY}: config.h ${INTL_LIBDIR}\/Makefile$/;" t +${LIBINTL_H} Makefile.in /^${LIBINTL_H}: ${INTL_DEP}$/;" t +${LIBINTL_H} builtins/Makefile.in /^${LIBINTL_H}:$/;" t +${SH_LIBDIR}/tmpfile.o Makefile.in /^${SH_LIBDIR}\/tmpfile.o: $(srcdir)\/config-top.h$/;" t +-g configure /^ alias -g '${1+"$@"}'='"$@"'$/;" a +-g configure /^ alias -g '\\${1+\\"\\$@\\"}'='\\"\\$@\\"'$/;" a +../version.h builtins/Makefile.in /^..\/version.h: ..\/config.h ..\/Makefile Makefile$/;" t +.build Makefile.in /^.build: $(SOURCES) config.h Makefile version.h $(VERSPROG)$/;" t +.c.o Makefile.in /^.c.o:$/;" t +.c.o builtins/Makefile.in /^.c.o:$/;" t +.c.o lib/glob/Makefile.in /^.c.o:$/;" t +.c.o lib/intl/Makefile.in /^.c.o:$/;" t +.c.o lib/malloc/Makefile.in /^.c.o:$/;" t +.c.o lib/readline/Makefile.in /^.c.o:$/;" t +.c.o lib/readline/examples/Makefile /^.c.o:$/;" t +.c.o lib/sh/Makefile.in /^.c.o:$/;" t +.c.o lib/termcap/Makefile.in /^.c.o:$/;" t +.c.o lib/tilde/Makefile.in /^.c.o:$/;" t +.c.o support/Makefile.in /^.c.o:$/;" t +.def.c builtins/Makefile.in /^.def.c:$/;" t +.def.o builtins/Makefile.in /^.def.o:$/;" t +.made Makefile.in /^.made: $(Program) utshellbug $(SDIR)\/man2html$(EXEEXT)$/;" t +.s.o lib/malloc/Makefile.in /^.s.o:$/;" t +.y.c lib/intl/Makefile.in /^.y.c:$/;" t +0 target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" o array:reports +0 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" a array:deps +0 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n array:deps.0 +0 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n array:deps.1 +0 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n array:deps.2 +0 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n array:deps.3 +0 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" o array:local +0 target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" a array:deps +0 target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" n array:deps.0 +0 target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" o array:local +0 target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" o array:local +0 target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" o array:local +0 target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" o array:local +0 target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" o array:local +0 target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" o array:local +0 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" a array:deps +0 target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" n array:deps.0 +0 target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" o array:local +0 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" a array:deps +0 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.0 +0 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.1 +0 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.2 +0 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.3 +0 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.4 +0 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.5 +0 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.6 +0 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.7 +0 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" o array:local +0 target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" a array:deps +0 target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" n array:deps.0 +0 target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" n array:deps.1 +0 target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" o array:local +0 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" a array:deps +0 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n array:deps.0 +0 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n array:deps.1 +0 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n array:deps.2 +0 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n array:deps.3 +0 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n array:deps.4 +0 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n array:deps.5 +0 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" o array:local +0 target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" a array:deps +0 target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" n array:deps.0 +0 target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" o array:local +0 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" a array:deps +0 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n array:deps.0 +0 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n array:deps.1 +0 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n array:deps.2 +0 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n array:deps.3 +0 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n array:deps.4 +0 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" o array:local +0 target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" a array:deps +0 target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" n array:deps.0 +0 target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" o array:local +0 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" a array:deps +0 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.0 +0 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.1 +0 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.2 +0 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.3 +0 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.4 +0 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.5 +0 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.6 +0 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" o array:local +0 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" a array:deps +0 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n array:deps.0 +0 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n array:deps.1 +0 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n array:deps.2 +0 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" o array:local +0 target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" o array:local +0 target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" a array:deps +0 target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" n array:deps.0 +0 target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" o array:local +0 target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" s array:local.0.RerunIfChanged.paths +0 target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" o array:local +0 target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" a array:deps +0 target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" n array:deps.0 +0 target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" o array:local +0 target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" s array:local.0.RerunIfChanged.paths +0 target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" a array:deps +0 target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" n array:deps.0 +0 target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" o array:local +0 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" a array:deps +0 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n array:deps.0 +0 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n array:deps.1 +0 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n array:deps.2 +0 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" o array:local +0 target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" o array:local +0 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" a array:deps +0 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n array:deps.0 +0 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n array:deps.1 +0 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n array:deps.2 +0 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" o array:local +0 target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" o array:local +0 target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" a array:deps +0 target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" n array:deps.0 +0 target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" o array:local +0 target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" s array:local.0.RerunIfChanged.paths +0 target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" a array:deps +0 target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" n array:deps.0 +0 target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" o array:local +0 target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" o array:local +0 target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" o array:local +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a array:deps +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.0 +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.1 +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.10 +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.2 +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.3 +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.4 +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.5 +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.6 +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.7 +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.8 +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.9 +0 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" o array:local +0 target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" a array:deps +0 target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" n array:deps.0 +0 target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" o array:local +0 target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" s array:local.0.RerunIfChanged.paths +0 target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" a array:deps +0 target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" n array:deps.0 +0 target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" n array:deps.1 +0 target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" o array:local +0 target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" a array:deps +0 target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" n array:deps.0 +0 target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" n array:deps.1 +0 target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" o array:local +0 target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" o array:local +0 target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" a array:deps +0 target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n array:deps.0 +0 target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" o array:local +0 target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" a array:deps +0 target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" n array:deps.0 +0 target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" o array:local +0 target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" o array:local +0 target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" a array:deps +0 target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n array:deps.0 +0 target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" o array:local +0 target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" s array:local.0.RerunIfChanged.paths +0 target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" o array:local +0 target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" a array:deps +0 target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n array:deps.0 +0 target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" o array:local +0 target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" s array:local.0.RerunIfChanged.paths +0 target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" a array:deps +0 target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" n array:deps.0 +0 target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" o array:local +0 target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" o array:local +0 target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" a array:deps +0 target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" n array:deps.0 +0 target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" o array:local +0 target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" a array:deps +0 target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" n array:deps.0 +0 target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" o array:local +0 target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" a array:deps +0 target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" n array:deps.0 +0 target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" o array:local +0 target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" a array:deps +0 target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" n array:deps.0 +0 target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" o array:local +0 target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" a array:deps +0 target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" n array:deps.0 +0 target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" o array:local +0 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" a array:deps +0 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n array:deps.0 +0 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n array:deps.1 +0 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n array:deps.2 +0 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n array:deps.3 +0 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n array:deps.4 +0 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" o array:local +0 target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" o array:local +0 target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" o array:local +0 target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" o array:local +0 target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" a array:deps +0 target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" n array:deps.0 +0 target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" n array:deps.1 +0 target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" o array:local +0 target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" o array:local +0 target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" a array:deps +0 target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" n array:deps.0 +0 target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" o array:local +0 target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" s array:local.0.RerunIfChanged.paths +0 target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" o array:local +0 target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" a array:deps +0 target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" n array:deps.0 +0 target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" o array:local +0 target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" s array:local.0.RerunIfChanged.paths +0 target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" a array:deps +0 target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" n array:deps.0 +0 target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" n array:deps.1 +0 target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" o array:local +0 target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" a array:deps +0 target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" n array:deps.0 +0 target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" o array:local +0 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n array:deps.4 +0 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n array:deps.5 +0 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" o array:local +0 target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n array:deps.4 +0 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n array:deps.5 +0 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n array:deps.4 +0 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n array:deps.4 +0 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n array:deps.5 +0 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n array:deps.4 +0 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.0 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.1 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.10 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.11 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.12 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.13 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.14 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.15 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.16 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.17 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.18 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.19 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.2 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.20 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.21 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.22 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.23 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.24 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.25 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.26 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.27 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.28 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.29 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.3 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.30 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.31 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.32 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.33 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.34 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.35 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.36 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.37 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.38 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.39 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.4 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.40 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.41 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.42 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.43 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.44 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.5 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.6 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.7 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.8 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.9 +0 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" o array:local +0 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n array:deps.4 +0 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" a array:deps +0 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n array:deps.0 +0 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n array:deps.1 +0 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n array:deps.2 +0 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n array:deps.3 +0 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n array:deps.4 +0 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" o array:local +0 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n array:deps.4 +0 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n array:deps.4 +0 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n array:deps.4 +0 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n array:deps.5 +0 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n array:deps.4 +0 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" a array:deps +0 target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" n array:deps.0 +0 target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" o array:local +0 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n array:deps.4 +0 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" o array:local +0 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n array:deps.4 +0 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n array:deps.4 +0 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n array:deps.4 +0 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" a array:deps +0 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n array:deps.0 +0 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n array:deps.1 +0 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n array:deps.2 +0 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n array:deps.3 +0 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" o array:local +0 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n array:deps.4 +0 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.4 +0 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.5 +0 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.6 +0 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n array:deps.3 +0 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n array:deps.4 +0 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" a array:deps +0 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n array:deps.0 +0 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n array:deps.1 +0 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n array:deps.2 +0 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" o array:local +0 target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" o array:local +0 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" a array:deps +0 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n array:deps.0 +0 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n array:deps.1 +0 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n array:deps.2 +0 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n array:deps.3 +0 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n array:deps.4 +0 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n array:deps.5 +0 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" o array:local +0 target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" o array:local +0 target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" a array:deps +0 target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n array:deps.0 +0 target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" o array:local +0 target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" a array:deps +0 target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" n array:deps.0 +0 target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" o array:local +0 target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" a array:deps +0 target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" n array:deps.0 +0 target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" o array:local +0 target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" o array:local +0 target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" o array:local +0 target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" o array:local +0 target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" o array:local +0 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" a array:deps +0 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n array:deps.0 +0 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n array:deps.1 +0 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n array:deps.2 +0 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n array:deps.3 +0 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" o array:local +0 target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" a array:deps +0 target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" n array:deps.0 +0 target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" o array:local +0 target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" o array:local +0 target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" a array:deps +0 target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" n array:deps.0 +0 target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" o array:local +0 target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" a array:deps +0 target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" n array:deps.0 +0 target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" n array:deps.1 +0 target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" o array:local +0 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" a array:deps +0 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n array:deps.0 +0 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n array:deps.1 +0 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n array:deps.2 +0 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" o array:local +0 target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" o array:local +0 target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" a array:deps +0 target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" n array:deps.0 +0 target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" o array:local +0 target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" a array:deps +0 target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" n array:deps.0 +0 target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" o array:local +0 target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" a array:deps +0 target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" n array:deps.0 +0 target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" o array:local +0 target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" o array:local +0.1.5 vendor/once_cell/CHANGELOG.md /^## 0.1.5$/;" s chapter:Changelog +0.1.6 vendor/once_cell/CHANGELOG.md /^## 0.1.6$/;" s chapter:Changelog +0.1.7 vendor/once_cell/CHANGELOG.md /^## 0.1.7$/;" s chapter:Changelog +0.1.8 vendor/once_cell/CHANGELOG.md /^## 0.1.8$/;" s chapter:Changelog +0.2.0 vendor/once_cell/CHANGELOG.md /^## 0.2.0$/;" s chapter:Changelog +0.2.0 (02.07.2020) vendor/stdext/CHANGELOG.md /^## 0.2.0 (02.07.2020)$/;" s chapter:`stdext` changelog +0.2.1 vendor/once_cell/CHANGELOG.md /^## 0.2.1$/;" s chapter:Changelog +0.2.1 (09.07.2020) vendor/stdext/CHANGELOG.md /^## 0.2.1 (09.07.2020)$/;" s chapter:`stdext` changelog +0.2.2 vendor/once_cell/CHANGELOG.md /^## 0.2.2$/;" s chapter:Changelog +0.2.3 vendor/once_cell/CHANGELOG.md /^## 0.2.3$/;" s chapter:Changelog +0.2.4 vendor/once_cell/CHANGELOG.md /^## 0.2.4$/;" s chapter:Changelog +0.2.5 vendor/once_cell/CHANGELOG.md /^## 0.2.5$/;" s chapter:Changelog +0.2.6 vendor/once_cell/CHANGELOG.md /^## 0.2.6$/;" s chapter:Changelog +0.2.7 vendor/once_cell/CHANGELOG.md /^## 0.2.7$/;" s chapter:Changelog +0.3.0 (18.06.2021) vendor/stdext/CHANGELOG.md /^## 0.3.0 (18.06.2021)$/;" s chapter:`stdext` changelog +0.4.1 (July 15, 2018) vendor/slab/CHANGELOG.md /^# 0.4.1 (July 15, 2018)$/;" c +0.4.2 (January 11, 2019) vendor/slab/CHANGELOG.md /^# 0.4.2 (January 11, 2019)$/;" c +0.4.3 (April 20, 2021) vendor/slab/CHANGELOG.md /^# 0.4.3 (April 20, 2021)$/;" c +0.4.4 (August 06, 2021) vendor/slab/CHANGELOG.md /^# 0.4.4 (August 06, 2021)$/;" c +0.4.5 (October 13, 2021) vendor/slab/CHANGELOG.md /^# 0.4.5 (October 13, 2021)$/;" c +0.4.6 (April 2, 2022) vendor/slab/CHANGELOG.md /^# 0.4.6 (April 2, 2022)$/;" c +0.4.7 (July 19, 2022) vendor/slab/CHANGELOG.md /^# 0.4.7 (July 19, 2022)$/;" c +0.6.0 vendor/bitflags/CHANGELOG.md /^# 0.6.0$/;" c +0.7.0 vendor/bitflags/CHANGELOG.md /^# 0.7.0$/;" c +0.7.1 vendor/bitflags/CHANGELOG.md /^# 0.7.1$/;" c +0.8.0 vendor/bitflags/CHANGELOG.md /^# 0.8.0$/;" c +0.8.1 vendor/bitflags/CHANGELOG.md /^# 0.8.1$/;" c +0.8.2 vendor/bitflags/CHANGELOG.md /^# 0.8.2$/;" c +0.9.0 vendor/bitflags/CHANGELOG.md /^# 0.9.0$/;" c +0.9.1 vendor/bitflags/CHANGELOG.md /^# 0.9.1$/;" c +1 target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" o array:reports +1 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" a array:deps +1 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" s array:deps.0 +1 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" s array:deps.1 +1 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" s array:deps.2 +1 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" s array:deps.3 +1 target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" s array:deps.0 +1 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" s array:deps.0 +1 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" a array:deps +1 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" s array:deps.0 +1 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" s array:deps.1 +1 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" s array:deps.2 +1 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" s array:deps.3 +1 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" s array:deps.4 +1 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" s array:deps.5 +1 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" s array:deps.6 +1 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" s array:deps.7 +1 target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" a array:deps +1 target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" s array:deps.0 +1 target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" s array:deps.1 +1 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" a array:deps +1 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" s array:deps.0 +1 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" s array:deps.1 +1 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" s array:deps.2 +1 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" s array:deps.3 +1 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" s array:deps.4 +1 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" s array:deps.5 +1 target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" s array:deps.0 +1 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" a array:deps +1 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" s array:deps.0 +1 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" s array:deps.1 +1 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" s array:deps.2 +1 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" s array:deps.3 +1 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" s array:deps.4 +1 target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" s array:deps.0 +1 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" a array:deps +1 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" s array:deps.0 +1 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" s array:deps.1 +1 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" s array:deps.2 +1 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" s array:deps.3 +1 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" s array:deps.4 +1 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" s array:deps.5 +1 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" s array:deps.6 +1 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" a array:deps +1 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" s array:deps.0 +1 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" s array:deps.1 +1 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" s array:deps.2 +1 target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" s array:deps.0 +1 target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" s array:deps.0 +1 target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" s array:deps.0 +1 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" a array:deps +1 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" s array:deps.0 +1 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" s array:deps.1 +1 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" s array:deps.2 +1 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" a array:deps +1 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" s array:deps.0 +1 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" s array:deps.1 +1 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" s array:deps.2 +1 target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" s array:deps.0 +1 target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" s array:deps.0 +1 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a array:deps +1 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s array:deps.0 +1 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s array:deps.1 +1 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s array:deps.10 +1 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s array:deps.2 +1 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s array:deps.3 +1 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s array:deps.4 +1 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s array:deps.5 +1 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s array:deps.6 +1 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s array:deps.7 +1 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s array:deps.8 +1 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s array:deps.9 +1 target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" s array:deps.0 +1 target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" a array:deps +1 target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" s array:deps.0 +1 target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" s array:deps.1 +1 target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" a array:deps +1 target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" s array:deps.0 +1 target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" s array:deps.1 +1 target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" s array:deps.0 +1 target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" s array:deps.0 +1 target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" s array:deps.0 +1 target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" s array:deps.0 +1 target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" s array:deps.0 +1 target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" s array:deps.0 +1 target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" s array:deps.0 +1 target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" s array:deps.0 +1 target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" s array:deps.0 +1 target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" s array:deps.0 +1 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" a array:deps +1 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" s array:deps.0 +1 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" s array:deps.1 +1 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" s array:deps.2 +1 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" s array:deps.3 +1 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" s array:deps.4 +1 target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" a array:deps +1 target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" s array:deps.0 +1 target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" s array:deps.1 +1 target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" s array:deps.0 +1 target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" s array:deps.0 +1 target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" a array:deps +1 target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" s array:deps.0 +1 target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" s array:deps.1 +1 target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" s array:deps.0 +1 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" s array:deps.4 +1 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" s array:deps.5 +1 target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" s array:deps.4 +1 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" s array:deps.5 +1 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" s array:deps.4 +1 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" s array:deps.4 +1 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" s array:deps.5 +1 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" s array:deps.4 +1 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.0 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.1 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.10 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.11 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.12 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.13 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.14 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.15 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.16 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.17 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.18 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.19 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.2 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.20 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.21 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.22 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.23 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.24 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.25 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.26 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.27 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.28 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.29 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.3 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.30 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.31 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.32 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.33 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.34 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.35 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.36 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.37 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.38 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.39 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.4 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.40 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.41 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.42 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.43 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.44 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.5 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.6 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.7 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.8 +1 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s array:deps.9 +1 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" s array:deps.4 +1 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" a array:deps +1 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" s array:deps.0 +1 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" s array:deps.1 +1 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" s array:deps.2 +1 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" s array:deps.3 +1 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" s array:deps.4 +1 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" s array:deps.4 +1 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" s array:deps.4 +1 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" s array:deps.4 +1 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" s array:deps.5 +1 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" s array:deps.4 +1 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" s array:deps.0 +1 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" s array:deps.4 +1 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" s array:deps.4 +1 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" s array:deps.4 +1 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" s array:deps.4 +1 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" a array:deps +1 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" s array:deps.0 +1 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" s array:deps.1 +1 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" s array:deps.2 +1 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" s array:deps.3 +1 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" s array:deps.4 +1 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" s array:deps.4 +1 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" s array:deps.5 +1 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" s array:deps.6 +1 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" s array:deps.3 +1 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" s array:deps.4 +1 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" a array:deps +1 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" s array:deps.0 +1 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" s array:deps.1 +1 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" s array:deps.2 +1 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" a array:deps +1 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" s array:deps.0 +1 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" s array:deps.1 +1 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" s array:deps.2 +1 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" s array:deps.3 +1 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" s array:deps.4 +1 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" s array:deps.5 +1 target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" s array:deps.0 +1 target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" s array:deps.0 +1 target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" s array:deps.0 +1 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" a array:deps +1 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" s array:deps.0 +1 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" s array:deps.1 +1 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" s array:deps.2 +1 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" s array:deps.3 +1 target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" s array:deps.0 +1 target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" s array:deps.0 +1 target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" a array:deps +1 target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" s array:deps.0 +1 target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" s array:deps.1 +1 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" a array:deps +1 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" s array:deps.0 +1 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" s array:deps.1 +1 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" s array:deps.2 +1 target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" s array:deps.0 +1 target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" s array:deps.0 +1 target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" s array:deps.0 +1.0.0 vendor/bitflags/CHANGELOG.md /^# 1.0.0$/;" c +1.0.0 vendor/once_cell/CHANGELOG.md /^## 1.0.0$/;" s chapter:Changelog +1.0.1 vendor/bitflags/CHANGELOG.md /^# 1.0.1$/;" c +1.0.1 vendor/once_cell/CHANGELOG.md /^## 1.0.1$/;" s chapter:Changelog +1.0.2 vendor/bitflags/CHANGELOG.md /^# 1.0.2$/;" c +1.0.2 vendor/once_cell/CHANGELOG.md /^## 1.0.2$/;" s chapter:Changelog +1.0.3 vendor/bitflags/CHANGELOG.md /^# 1.0.3$/;" c +1.0.4 vendor/bitflags/CHANGELOG.md /^# 1.0.4$/;" c +1.0.5 vendor/bitflags/CHANGELOG.md /^# 1.0.5$/;" c +1.1.0 vendor/bitflags/CHANGELOG.md /^# 1.1.0$/;" c +1.1.0 vendor/once_cell/CHANGELOG.md /^## 1.1.0$/;" s chapter:Changelog +1.10.0 vendor/once_cell/CHANGELOG.md /^## 1.10.0$/;" s chapter:Changelog +1.11.0 vendor/once_cell/CHANGELOG.md /^## 1.11.0$/;" s chapter:Changelog +1.12.0 vendor/once_cell/CHANGELOG.md /^## 1.12.0$/;" s chapter:Changelog +1.12.1 vendor/once_cell/CHANGELOG.md /^## 1.12.1$/;" s chapter:Changelog +1.13.0 vendor/once_cell/CHANGELOG.md /^## 1.13.0$/;" s chapter:Changelog +1.13.1 vendor/once_cell/CHANGELOG.md /^## 1.13.1$/;" s chapter:Changelog +1.14.0 vendor/once_cell/CHANGELOG.md /^## 1.14.0$/;" s chapter:Changelog +1.15.0 vendor/once_cell/CHANGELOG.md /^## 1.15.0$/;" s chapter:Changelog +1.2.0 vendor/bitflags/CHANGELOG.md /^# 1.2.0$/;" c +1.2.0 vendor/once_cell/CHANGELOG.md /^## 1.2.0$/;" s chapter:Changelog +1.2.1 vendor/bitflags/CHANGELOG.md /^# 1.2.1$/;" c +1.3.0 vendor/once_cell/CHANGELOG.md /^## 1.3.0$/;" s chapter:Changelog +1.3.0 (yanked) vendor/bitflags/CHANGELOG.md /^# 1.3.0 (yanked)$/;" c +1.3.1 vendor/bitflags/CHANGELOG.md /^# 1.3.1$/;" c +1.3.1 vendor/once_cell/CHANGELOG.md /^## 1.3.1$/;" s chapter:Changelog +1.3.2 vendor/bitflags/CHANGELOG.md /^# 1.3.2$/;" c +1.4.0 vendor/once_cell/CHANGELOG.md /^## 1.4.0$/;" s chapter:Changelog +1.4.1 vendor/once_cell/CHANGELOG.md /^## 1.4.1$/;" s chapter:Changelog +1.5.0 vendor/once_cell/CHANGELOG.md /^## 1.5.0$/;" s chapter:Changelog +1.5.1 vendor/once_cell/CHANGELOG.md /^## 1.5.1$/;" s chapter:Changelog +1.5.2 vendor/once_cell/CHANGELOG.md /^## 1.5.2$/;" s chapter:Changelog +1.6.0 vendor/once_cell/CHANGELOG.md /^## 1.6.0$/;" s chapter:Changelog +1.7.0 vendor/once_cell/CHANGELOG.md /^## 1.7.0$/;" s chapter:Changelog +1.7.1 vendor/once_cell/CHANGELOG.md /^## 1.7.1$/;" s chapter:Changelog +1.7.2 vendor/once_cell/CHANGELOG.md /^## 1.7.2$/;" s chapter:Changelog +1.8.0 vendor/once_cell/CHANGELOG.md /^## 1.8.0$/;" s chapter:Changelog +1.9.0 vendor/once_cell/CHANGELOG.md /^## 1.9.0$/;" s chapter:Changelog +10 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a array:deps +10 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +11 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +12 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +13 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +14 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +15 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +15729799797837862367 target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" o object:outputs +16 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +17 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +18 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +19 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +2 target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" o array:reports +2 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" a array:deps +2 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" b array:deps.0 +2 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" b array:deps.1 +2 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" b array:deps.2 +2 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" b array:deps.3 +2 target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" b array:deps.0 +2 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" b array:deps.0 +2 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" a array:deps +2 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" b array:deps.0 +2 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" b array:deps.1 +2 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" b array:deps.2 +2 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" b array:deps.3 +2 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" b array:deps.4 +2 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" b array:deps.5 +2 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" b array:deps.6 +2 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" b array:deps.7 +2 target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" b array:deps.0 +2 target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" b array:deps.1 +2 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" a array:deps +2 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" b array:deps.0 +2 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" b array:deps.1 +2 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" b array:deps.2 +2 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" b array:deps.3 +2 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" b array:deps.4 +2 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" b array:deps.5 +2 target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" b array:deps.0 +2 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" a array:deps +2 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" b array:deps.0 +2 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" b array:deps.1 +2 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" b array:deps.2 +2 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" b array:deps.3 +2 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" b array:deps.4 +2 target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" b array:deps.0 +2 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" a array:deps +2 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" b array:deps.0 +2 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" b array:deps.1 +2 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" b array:deps.2 +2 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" b array:deps.3 +2 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" b array:deps.4 +2 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" b array:deps.5 +2 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" b array:deps.6 +2 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" a array:deps +2 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" b array:deps.0 +2 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" b array:deps.1 +2 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" b array:deps.2 +2 target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" b array:deps.0 +2 target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" b array:deps.0 +2 target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" b array:deps.0 +2 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" a array:deps +2 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" b array:deps.0 +2 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" b array:deps.1 +2 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" b array:deps.2 +2 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" a array:deps +2 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" b array:deps.0 +2 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" b array:deps.1 +2 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" b array:deps.2 +2 target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" b array:deps.0 +2 target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" b array:deps.0 +2 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a array:deps +2 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" b array:deps.0 +2 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" b array:deps.1 +2 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" b array:deps.10 +2 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" b array:deps.2 +2 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" b array:deps.3 +2 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" b array:deps.4 +2 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" b array:deps.5 +2 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" b array:deps.6 +2 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" b array:deps.7 +2 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" b array:deps.8 +2 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" b array:deps.9 +2 target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" b array:deps.0 +2 target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" b array:deps.0 +2 target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" b array:deps.1 +2 target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" b array:deps.0 +2 target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" b array:deps.1 +2 target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" b array:deps.0 +2 target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" b array:deps.0 +2 target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" b array:deps.0 +2 target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" b array:deps.0 +2 target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" b array:deps.0 +2 target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" b array:deps.0 +2 target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" b array:deps.0 +2 target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" b array:deps.0 +2 target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" b array:deps.0 +2 target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" b array:deps.0 +2 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" a array:deps +2 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" b array:deps.0 +2 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" b array:deps.1 +2 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" b array:deps.2 +2 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" b array:deps.3 +2 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" b array:deps.4 +2 target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" b array:deps.0 +2 target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" b array:deps.1 +2 target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" b array:deps.0 +2 target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" b array:deps.0 +2 target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" b array:deps.0 +2 target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" b array:deps.1 +2 target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" b array:deps.0 +2 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" b array:deps.4 +2 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" b array:deps.5 +2 target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" b array:deps.4 +2 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" b array:deps.5 +2 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" b array:deps.4 +2 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" b array:deps.4 +2 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" b array:deps.5 +2 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" b array:deps.4 +2 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.0 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.1 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.10 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.11 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.12 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.13 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.14 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.15 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.16 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.17 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.18 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.19 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.2 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.20 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.21 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.22 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.23 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.24 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.25 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.26 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.27 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.28 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.29 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.3 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.30 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.31 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.32 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.33 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.34 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.35 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.36 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.37 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.38 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.39 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.4 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.40 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.41 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.42 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.43 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.44 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.5 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.6 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.7 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.8 +2 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" b array:deps.9 +2 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" b array:deps.4 +2 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" a array:deps +2 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" b array:deps.0 +2 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" b array:deps.1 +2 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" b array:deps.2 +2 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" b array:deps.3 +2 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" b array:deps.4 +2 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" b array:deps.4 +2 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" b array:deps.4 +2 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" b array:deps.4 +2 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" b array:deps.5 +2 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" b array:deps.4 +2 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" b array:deps.0 +2 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" b array:deps.4 +2 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" b array:deps.4 +2 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" b array:deps.4 +2 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" b array:deps.4 +2 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" a array:deps +2 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" b array:deps.0 +2 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" b array:deps.1 +2 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" b array:deps.2 +2 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" b array:deps.3 +2 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" b array:deps.4 +2 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" b array:deps.4 +2 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" b array:deps.5 +2 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" b array:deps.6 +2 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" b array:deps.3 +2 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" b array:deps.4 +2 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" a array:deps +2 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" b array:deps.0 +2 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" b array:deps.1 +2 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" b array:deps.2 +2 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" a array:deps +2 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" b array:deps.0 +2 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" b array:deps.1 +2 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" b array:deps.2 +2 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" b array:deps.3 +2 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" b array:deps.4 +2 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" b array:deps.5 +2 target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" b array:deps.0 +2 target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" b array:deps.0 +2 target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" b array:deps.0 +2 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" a array:deps +2 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" b array:deps.0 +2 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" b array:deps.1 +2 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" b array:deps.2 +2 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" b array:deps.3 +2 target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" b array:deps.0 +2 target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" b array:deps.0 +2 target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" b array:deps.0 +2 target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" b array:deps.1 +2 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" a array:deps +2 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" b array:deps.0 +2 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" b array:deps.1 +2 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" b array:deps.2 +2 target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" b array:deps.0 +2 target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" b array:deps.0 +2 target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" b array:deps.0 +20 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +21 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +22 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +23 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +24 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +25 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +26 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +27 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +28 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +29 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +3 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" a array:deps +3 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n array:deps.0 +3 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n array:deps.1 +3 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n array:deps.2 +3 target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n array:deps.3 +3 target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" n array:deps.0 +3 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" n array:deps.0 +3 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" a array:deps +3 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.0 +3 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.1 +3 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.2 +3 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.3 +3 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.4 +3 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.5 +3 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.6 +3 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n array:deps.7 +3 target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" n array:deps.0 +3 target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" n array:deps.1 +3 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" a array:deps +3 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n array:deps.0 +3 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n array:deps.1 +3 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n array:deps.2 +3 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n array:deps.3 +3 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n array:deps.4 +3 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n array:deps.5 +3 target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" n array:deps.0 +3 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" a array:deps +3 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n array:deps.0 +3 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n array:deps.1 +3 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n array:deps.2 +3 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n array:deps.3 +3 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n array:deps.4 +3 target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" n array:deps.0 +3 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" a array:deps +3 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.0 +3 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.1 +3 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.2 +3 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.3 +3 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.4 +3 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.5 +3 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n array:deps.6 +3 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n array:deps.0 +3 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n array:deps.1 +3 target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n array:deps.2 +3 target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" n array:deps.0 +3 target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" n array:deps.0 +3 target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" n array:deps.0 +3 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n array:deps.0 +3 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n array:deps.1 +3 target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n array:deps.2 +3 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n array:deps.0 +3 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n array:deps.1 +3 target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n array:deps.2 +3 target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" n array:deps.0 +3 target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" n array:deps.0 +3 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a array:deps +3 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.0 +3 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.1 +3 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.10 +3 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.2 +3 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.3 +3 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.4 +3 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.5 +3 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.6 +3 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.7 +3 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.8 +3 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n array:deps.9 +3 target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" n array:deps.0 +3 target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" n array:deps.0 +3 target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" n array:deps.1 +3 target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" n array:deps.0 +3 target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" n array:deps.1 +3 target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n array:deps.0 +3 target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" n array:deps.0 +3 target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n array:deps.0 +3 target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n array:deps.0 +3 target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" n array:deps.0 +3 target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" n array:deps.0 +3 target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" n array:deps.0 +3 target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" n array:deps.0 +3 target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" n array:deps.0 +3 target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" n array:deps.0 +3 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" a array:deps +3 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n array:deps.0 +3 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n array:deps.1 +3 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n array:deps.2 +3 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n array:deps.3 +3 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n array:deps.4 +3 target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" n array:deps.0 +3 target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" n array:deps.1 +3 target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" n array:deps.0 +3 target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" n array:deps.0 +3 target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" n array:deps.0 +3 target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" n array:deps.1 +3 target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" n array:deps.0 +3 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n array:deps.4 +3 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n array:deps.5 +3 target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n array:deps.4 +3 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n array:deps.5 +3 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n array:deps.4 +3 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n array:deps.4 +3 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n array:deps.5 +3 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n array:deps.4 +3 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.0 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.1 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.10 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.11 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.12 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.13 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.14 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.15 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.16 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.17 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.18 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.19 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.2 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.20 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.21 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.22 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.23 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.24 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.25 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.26 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.27 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.28 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.29 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.3 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.30 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.31 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.32 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.33 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.34 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.35 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.36 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.37 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.38 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.39 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.4 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.40 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.41 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.42 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.43 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.44 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.5 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.6 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.7 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.8 +3 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n array:deps.9 +3 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n array:deps.4 +3 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" a array:deps +3 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n array:deps.0 +3 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n array:deps.1 +3 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n array:deps.2 +3 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n array:deps.3 +3 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n array:deps.4 +3 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n array:deps.4 +3 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n array:deps.4 +3 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n array:deps.4 +3 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n array:deps.5 +3 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n array:deps.4 +3 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" n array:deps.0 +3 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n array:deps.4 +3 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n array:deps.4 +3 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n array:deps.4 +3 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n array:deps.4 +3 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" a array:deps +3 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n array:deps.0 +3 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n array:deps.1 +3 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n array:deps.2 +3 target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n array:deps.3 +3 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n array:deps.4 +3 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.4 +3 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.5 +3 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n array:deps.6 +3 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" a array:deps +3 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n array:deps.3 +3 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n array:deps.4 +3 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n array:deps.0 +3 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n array:deps.1 +3 target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n array:deps.2 +3 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" a array:deps +3 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n array:deps.0 +3 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n array:deps.1 +3 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n array:deps.2 +3 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n array:deps.3 +3 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n array:deps.4 +3 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n array:deps.5 +3 target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n array:deps.0 +3 target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" n array:deps.0 +3 target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" n array:deps.0 +3 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" a array:deps +3 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n array:deps.0 +3 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n array:deps.1 +3 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n array:deps.2 +3 target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n array:deps.3 +3 target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" n array:deps.0 +3 target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" n array:deps.0 +3 target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" n array:deps.0 +3 target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" n array:deps.1 +3 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n array:deps.0 +3 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n array:deps.1 +3 target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n array:deps.2 +3 target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" n array:deps.0 +3 target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" n array:deps.0 +3 target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" n array:deps.0 +30 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +31 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +32 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +33 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +34 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +35 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +36 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +37 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +38 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +39 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +4 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" a array:deps +4 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" a array:deps +4 target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" a array:deps +4 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" a array:deps +4 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a array:deps +4 target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" a array:deps +4 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" a array:deps +4 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" a array:deps +4 target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" a array:deps +4 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" a array:deps +4 target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" a array:deps +4 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +4 target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" a array:deps +4 target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" a array:deps +4 target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" a array:deps +4 target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" a array:deps +4 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" a array:deps +4 target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" a array:deps +4 target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" a array:deps +4 target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" a array:deps +4 target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" a array:deps +4 target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" a array:deps +4 target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" a array:deps +4 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" a array:deps +4 target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" a array:deps +4 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" a array:deps +40 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +41 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +42 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +43 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +44 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +4614504638168534921 target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" o object:outputs +5 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" a array:deps +5 target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" a array:deps +5 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" a array:deps +5 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a array:deps +5 target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" a array:deps +5 target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" a array:deps +5 target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" a array:deps +5 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +5 target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" a array:deps +5 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" a array:deps +5 target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" a array:deps +6 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" a array:deps +6 target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" a array:deps +6 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a array:deps +6 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +6 target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" a array:deps +7 target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" a array:deps +7 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a array:deps +7 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +8 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a array:deps +8 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +9 target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a array:deps +9 target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a array:deps +A vendor/async-trait/tests/ui/lifetime-span.rs /^impl Trait for A {$/;" c +A vendor/async-trait/tests/ui/lifetime-span.rs /^impl Trait2 for A {$/;" c +A vendor/async-trait/tests/ui/lifetime-span.rs /^struct A;$/;" s +A vendor/futures-channel/tests/channel.rs /^ impl Drop for A {$/;" c function:drop_order +A vendor/futures-channel/tests/channel.rs /^ struct A;$/;" s function:drop_order +A vendor/thiserror/tests/ui/missing-fmt.rs /^ A(usize),$/;" e enum:Error +A motivating use case vendor/self_cell/README.md /^### A motivating use case$/;" S chapter:`self_cell!` +ABORT_CHAR lib/readline/chardefs.h /^#define ABORT_CHAR /;" d +ABSPATH builtins_rust/type/src/lib.rs /^macro_rules! ABSPATH {$/;" M +ABSPATH general.h /^# define ABSPATH(/;" d +ACCESS_MASK vendor/winapi/src/um/winnt.rs /^pub type ACCESS_MASK = DWORD;$/;" t +ACCESS_REASON vendor/winapi/src/um/winnt.rs /^pub type ACCESS_REASON = DWORD;$/;" t +ACCESS_RIGHTS vendor/winapi/src/um/accctrl.rs /^pub type ACCESS_RIGHTS = ULONG;$/;" t +ACTION vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type ACTION = ::c_uint;$/;" t +ACTION vendor/libc/src/unix/haiku/mod.rs /^pub type ACTION = ::c_int;$/;" t +ACTIVATIONCONTEXTINFOCLASS vendor/winapi/src/um/winnt.rs /^pub type ACTIVATIONCONTEXTINFOCLASS = ACTIVATION_CONTEXT_INFO_CLASS;$/;" t +ACTRL_AUDITA vendor/winapi/src/um/accctrl.rs /^pub type ACTRL_AUDITA = ACTRL_ACCESSA;$/;" t +ACTRL_AUDITW vendor/winapi/src/um/accctrl.rs /^pub type ACTRL_AUDITW = ACTRL_ACCESSW;$/;" t +AC_LIB_APPENDTOVAR m4/lib-link.m4 /^AC_DEFUN([AC_LIB_APPENDTOVAR],$/;" m +AC_LIB_FROMPACKAGE m4/lib-link.m4 /^AC_DEFUN([AC_LIB_FROMPACKAGE],$/;" m +AC_LIB_HAVE_LINKFLAGS m4/lib-link.m4 /^AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],$/;" m +AC_LIB_LINKFLAGS m4/lib-link.m4 /^AC_DEFUN([AC_LIB_LINKFLAGS],$/;" m +AC_LIB_LINKFLAGS_BODY m4/lib-link.m4 /^AC_DEFUN([AC_LIB_LINKFLAGS_BODY],$/;" m +AC_LIB_LINKFLAGS_FROM_LIBS m4/lib-link.m4 /^AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],$/;" m +AC_LIB_PREFIX m4/lib-prefix.m4 /^AC_DEFUN([AC_LIB_PREFIX],$/;" m +AC_LIB_PREPARE_MULTILIB m4/lib-prefix.m4 /^AC_DEFUN([AC_LIB_PREPARE_MULTILIB],$/;" m +AC_LIB_PREPARE_PREFIX m4/lib-prefix.m4 /^AC_DEFUN([AC_LIB_PREPARE_PREFIX],$/;" m +AC_LIB_PROG_LD m4/lib-ld.m4 /^AC_DEFUN([AC_LIB_PROG_LD],$/;" m +AC_LIB_PROG_LD_GNU m4/lib-ld.m4 /^AC_DEFUN([AC_LIB_PROG_LD_GNU],$/;" m +AC_LIB_RPATH m4/lib-link.m4 /^AC_DEFUN([AC_LIB_RPATH],$/;" m +AC_LIB_WITH_FINAL_PREFIX m4/lib-prefix.m4 /^AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],$/;" m +ADDINTERRUPT quit.h /^#define ADDINTERRUPT /;" d +ADDINTERRUPT r_jobs/src/lib.rs /^macro_rules! ADDINTERRUPT {$/;" M +ADDOP2 lib/intl/plural.c /^ ADDOP2 = 260,$/;" e enum:yytokentype file: +ADDOP2 lib/intl/plural.c /^#define ADDOP2 /;" d file: +ADDOVERFLOW include/typemax.h /^#define ADDOVERFLOW(/;" d +ADDRESS vendor/winapi/src/um/dbghelp.rs /^pub type ADDRESS = ADDRESS64;$/;" t +ADDRESS_FAMILY vendor/winapi/src/shared/ws2def.rs /^pub type ADDRESS_FAMILY = USHORT;$/;" t +ADDRESS_FUNCTION lib/malloc/alloca.c /^#define ADDRESS_FUNCTION(/;" d file: +ADDRINFO vendor/winapi/src/um/ws2tcpip.rs /^pub type ADDRINFO = ADDRINFOA;$/;" t +ADD_AFTER array.c /^#define ADD_AFTER(/;" d file: +ADD_BEFORE array.c /^#define ADD_BEFORE(/;" d file: +ADD_BLOCK lib/intl/dcigettext.c /^# define ADD_BLOCK(/;" d file: +ADD_CHAR lib/readline/histexpand.c /^#define ADD_CHAR(/;" d file: +ADD_STRING lib/readline/histexpand.c /^#define ADD_STRING(/;" d file: +ADJUST_CPOS lib/readline/display.c /^#define ADJUST_CPOS(/;" d file: +ADVANCE_CHAR include/shmbutil.h /^# define ADVANCE_CHAR(/;" d +ADVANCE_CHAR_P include/shmbutil.h /^# define ADVANCE_CHAR_P(/;" d +AFS configure.ac /^ AC_DEFINE(AFS)$/;" d +ALARM_CALLED vendor/nix/test/test_timer.rs /^static ALARM_CALLED: AtomicBool = AtomicBool::new(false);$/;" v +ALARM_CALLED vendor/nix/test/test_unistd.rs /^static mut ALARM_CALLED: bool = false;$/;" v +ALG_ID vendor/winapi/src/um/wincrypt.rs /^pub type ALG_ID = c_uint;$/;" t +ALIAS configure.ac /^AC_DEFINE(ALIAS)$/;" d +ALIAS_HASH_BUCKETS alias.c /^#define ALIAS_HASH_BUCKETS /;" d file: +ALIGN_SIZE lib/malloc/alloca.c /^#define ALIGN_SIZE /;" d file: +ALLOCA Makefile.in /^ALLOCA = @ALLOCA@$/;" m +ALLOCA lib/malloc/Makefile.in /^ALLOCA = @ALLOCA@$/;" m +ALLOCATED_BYTES lib/malloc/malloc.c /^#define ALLOCATED_BYTES(/;" d file: +ALLOCATE_BUFFERS input.c /^#define ALLOCATE_BUFFERS(/;" d file: +ALLOCA_MAX lib/glob/glob.c /^# define ALLOCA_MAX /;" d file: +ALLOCA_OBJECT lib/malloc/Makefile.in /^ALLOCA_OBJECT = alloca.o$/;" m +ALLOCA_SOURCE lib/malloc/Makefile.in /^ALLOCA_SOURCE = alloca.c$/;" m +ALLOC_ABSSRC Makefile.in /^ALLOC_ABSSRC = ${topdir}\/$(ALLOC_LIBDIR)$/;" m +ALLOC_HEADERS Makefile.in /^ALLOC_HEADERS = $(ALLOC_LIBSRC)\/getpagesize.h $(ALLOC_LIBSRC)\/shmalloc.h \\$/;" m +ALLOC_LIBDIR Makefile.in /^ALLOC_LIBDIR = $(dot)\/$(LIBSUBDIR)\/malloc$/;" m +ALLOC_LIBSRC Makefile.in /^ALLOC_LIBSRC = $(LIBSRC)\/malloc$/;" m +ALL_ELEMENT_SUB array.h /^#define ALL_ELEMENT_SUB(/;" d +ALPHABETIC lib/readline/chardefs.h /^#define ALPHABETIC(/;" d +AL_BEINGEXPANDED alias.h /^#define AL_BEINGEXPANDED /;" d +AL_EXPANDNEXT alias.h /^#define AL_EXPANDNEXT /;" d +AL_REUSABLE builtins_rust/alias/src/lib.rs /^pub static AL_REUSABLE: i32 = 0x01;$/;" v +AMBIGUOUS_REDIRECT command.h /^#define AMBIGUOUS_REDIRECT /;" d +AM_GNU_GETTEXT m4/gettext.m4 /^AC_DEFUN([AM_GNU_GETTEXT],$/;" m +AM_GNU_GETTEXT_NEED m4/gettext.m4 /^AC_DEFUN([AM_GNU_GETTEXT_NEED],$/;" m +AM_GNU_GETTEXT_REQUIRE_VERSION m4/gettext.m4 /^AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], [])$/;" m +AM_GNU_GETTEXT_VERSION m4/gettext.m4 /^AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])$/;" m +AM_ICONV_LINK m4/iconv.m4 /^AC_DEFUN([AM_ICONV_LINK],$/;" m +AM_ICONV_LINKFLAGS_BODY m4/iconv.m4 /^AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],$/;" m +AM_INTL_SUBDIR m4/intl.m4 /^AC_DEFUN([AM_INTL_SUBDIR],$/;" m +AM_LANGINFO_CODESET m4/codeset.m4 /^AC_DEFUN([AM_LANGINFO_CODESET],$/;" m +AM_NLS m4/nls.m4 /^AC_DEFUN([AM_NLS],$/;" m +AM_PATH_LISPDIR aclocal.m4 /^AC_DEFUN([AM_PATH_LISPDIR],$/;" m +AM_PATH_PROG_WITH_TEST m4/progtest.m4 /^AC_DEFUN([AM_PATH_PROG_WITH_TEST],$/;" m +AM_POSTPROCESS_PO_MAKEFILE m4/po.m4 /^AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],$/;" m +AM_PO_SUBDIRS m4/po.m4 /^AC_DEFUN([AM_PO_SUBDIRS],$/;" m +AM_XGETTEXT_OPTION m4/po.m4 /^AC_DEFUN([AM_XGETTEXT_OPTION],$/;" m +AM_XGETTEXT_OPTION_INIT m4/po.m4 /^AC_DEFUN([AM_XGETTEXT_OPTION_INIT],$/;" m +ANCHORED_SEARCH lib/readline/histlib.h /^#define ANCHORED_SEARCH /;" d +ANDOR test.c /^#define ANDOR(/;" d file: +ANSI_STRING vendor/winapi/src/shared/ntdef.rs /^pub type ANSI_STRING = STRING;$/;" t +ANSI_STRING32 vendor/winapi/src/shared/ntdef.rs /^pub type ANSI_STRING32 = STRING32;$/;" t +ANSI_STRING64 vendor/winapi/src/shared/ntdef.rs /^pub type ANSI_STRING64 = STRING64;$/;" t +ANYOTHERKEY builtins_rust/bind/src/lib.rs /^macro_rules! ANYOTHERKEY {$/;" M +ANYOTHERKEY lib/readline/keymaps.h /^#define ANYOTHERKEY /;" d +ANYP lib/readline/rltty.c /^# define ANYP /;" d file: +ANY_PID jobs.h /^#define ANY_PID /;" d +APARTMENTID vendor/winapi/src/um/objidlbase.rs /^pub type APARTMENTID = DWORD;$/;" t +API_RET_TYPE vendor/winapi/src/shared/lmcons.rs /^pub type API_RET_TYPE = NET_API_STATUS;$/;" t +APPROX_DIV lib/readline/display.c /^#define APPROX_DIV(/;" d file: +AR Makefile.in /^AR = @AR@$/;" m +AR builtins/Makefile.in /^AR = @AR@$/;" m +AR configure.ac /^AC_SUBST(AR)$/;" s +AR lib/glob/Makefile.in /^AR = @AR@$/;" m +AR lib/intl/Makefile.in /^AR = @AR@$/;" m +AR lib/malloc/Makefile.in /^AR = @AR@$/;" m +AR lib/readline/Makefile.in /^AR = @AR@$/;" m +AR lib/sh/Makefile.in /^AR = @AR@$/;" m +AR lib/termcap/Makefile.in /^AR = @AR@$/;" m +AR lib/tilde/Makefile.in /^AR = @AR@$/;" m +ARFLAGS Makefile.in /^ARFLAGS = @ARFLAGS@$/;" m +ARFLAGS builtins/Makefile.in /^ARFLAGS = @ARFLAGS@$/;" m +ARFLAGS configure.ac /^AC_SUBST(ARFLAGS)$/;" s +ARFLAGS lib/glob/Makefile.in /^ARFLAGS = @ARFLAGS@$/;" m +ARFLAGS lib/intl/Makefile.in /^ARFLAGS = @ARFLAGS@$/;" m +ARFLAGS lib/malloc/Makefile.in /^ARFLAGS = @ARFLAGS@$/;" m +ARFLAGS lib/readline/Makefile.in /^ARFLAGS = @ARFLAGS@$/;" m +ARFLAGS lib/sh/Makefile.in /^ARFLAGS = @ARFLAGS@$/;" m +ARFLAGS lib/termcap/Makefile.in /^ARFLAGS = @ARFLAGS@$/;" m +ARFLAGS lib/tilde/Makefile.in /^ARFLAGS = @ARFLAGS@$/;" m +ARGS_FUNC builtins/common.h /^#define ARGS_FUNC /;" d +ARGS_FUNC builtins_rust/common/src/lib.rs /^macro_rules! ARGS_FUNC {$/;" M +ARGS_INVOC builtins/common.h /^#define ARGS_INVOC /;" d +ARGS_INVOC builtins_rust/common/src/lib.rs /^macro_rules! ARGS_INVOC {$/;" M +ARGS_NONE builtins/common.h /^#define ARGS_NONE /;" d +ARGS_SETBLTIN builtins/common.h /^#define ARGS_SETBLTIN /;" d +ARGS_SETBLTIN builtins_rust/common/src/lib.rs /^macro_rules! ARGS_SETBLTIN {$/;" M +ARGS_SETBLTIN builtins_rust/declare/src/lib.rs /^macro_rules! ARGS_SETBLTIN {$/;" M +ARGS_SETBLTIN builtins_rust/source/src/lib.rs /^macro_rules! ARGS_SETBLTIN {$/;" M +ARITH_COM builtins_rust/kill/src/intercdep.rs /^pub type ARITH_COM = arith_com;$/;" t +ARITH_COM builtins_rust/setattr/src/intercdep.rs /^pub type ARITH_COM = arith_com;$/;" t +ARITH_COM command.h /^} ARITH_COM;$/;" t typeref:struct:arith_com +ARITH_COM r_bash/src/lib.rs /^pub type ARITH_COM = arith_com;$/;" t +ARITH_COM r_glob/src/lib.rs /^pub type ARITH_COM = arith_com;$/;" t +ARITH_COM r_readline/src/lib.rs /^pub type ARITH_COM = arith_com;$/;" t +ARITH_FOR_COM builtins_rust/kill/src/intercdep.rs /^pub type ARITH_FOR_COM = arith_for_com;$/;" t +ARITH_FOR_COM builtins_rust/setattr/src/intercdep.rs /^pub type ARITH_FOR_COM = arith_for_com;$/;" t +ARITH_FOR_COM command.h /^} ARITH_FOR_COM;$/;" t typeref:struct:arith_for_com +ARITH_FOR_COM r_bash/src/lib.rs /^pub type ARITH_FOR_COM = arith_for_com;$/;" t +ARITH_FOR_COM r_glob/src/lib.rs /^pub type ARITH_FOR_COM = arith_for_com;$/;" t +ARITH_FOR_COM r_readline/src/lib.rs /^pub type ARITH_FOR_COM = arith_for_com;$/;" t +ARITH_FOR_COMMAND configure.ac /^AC_DEFINE(ARITH_FOR_COMMAND)$/;" d +ARRAY array.h /^} ARRAY;$/;" t typeref:struct:array +ARRAY builtins/mkbuiltins.c /^} ARRAY;$/;" t typeref:struct:__anon69e836710108 file: +ARRAY builtins_rust/mapfile/src/intercdep.rs /^pub type ARRAY = array;$/;" t +ARRAY builtins_rust/read/src/intercdep.rs /^pub type ARRAY = array;$/;" t +ARRAY r_bash/src/lib.rs /^pub type ARRAY = array;$/;" t +ARRAY r_glob/src/lib.rs /^pub type ARRAY = array;$/;" t +ARRAY r_readline/src/lib.rs /^pub type ARRAY = array;$/;" t +ARRAY_ELEMENT array.h /^} ARRAY_ELEMENT;$/;" t typeref:struct:array_element +ARRAY_ELEMENT builtins_rust/mapfile/src/intercdep.rs /^pub type ARRAY_ELEMENT = array_element;$/;" t +ARRAY_ELEMENT builtins_rust/read/src/intercdep.rs /^pub type ARRAY_ELEMENT = array_element;$/;" t +ARRAY_ELEMENT r_bash/src/lib.rs /^pub type ARRAY_ELEMENT = array_element;$/;" t +ARRAY_ELEMENT r_glob/src/lib.rs /^pub type ARRAY_ELEMENT = array_element;$/;" t +ARRAY_ELEMENT r_readline/src/lib.rs /^pub type ARRAY_ELEMENT = array_element;$/;" t +ARRAY_VARS configure.ac /^AC_DEFINE(ARRAY_VARS)$/;" d +ASAN_XCFLAGS Makefile.in /^ASAN_XCFLAGS = -fsanitize=address -fno-omit-frame-pointer$/;" m +ASAN_XLDFLAGS Makefile.in /^ASAN_XLDFLAGS = -fsanitize=address$/;" m +ASBUFSIZE lib/sh/snprintf.c /^#define ASBUFSIZE /;" d file: +ASCII_CONTINUE vendor/unicode-ident/src/tables.rs /^pub(crate) static ASCII_CONTINUE: Align64<[bool; 128]> = Align64([$/;" v +ASCII_START vendor/unicode-ident/src/tables.rs /^pub(crate) static ASCII_START: Align64<[bool; 128]> = Align64([$/;" v +ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION vendor/winapi/src/um/winnt.rs /^pub type ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION = ASSEMBLY_FILE_DETAILED_INFORMATION;$/;" t +ASSERT lib/malloc/malloc.c /^#define ASSERT(/;" d file: +ASSIGNMENT_BUILTIN builtins.h /^#define ASSIGNMENT_BUILTIN /;" d +ASSIGN_RETURN subst.c /^#define ASSIGN_RETURN(/;" d file: +ASSOC_HASH_BUCKETS assoc.h /^#define ASSOC_HASH_BUCKETS /;" d +ASSOC_KVPAIR_ASSIGNMENT config-top.h /^#define ASSOC_KVPAIR_ASSIGNMENT /;" d +ASS_APPEND builtins_rust/declare/src/lib.rs /^macro_rules! ASS_APPEND {$/;" M +ASS_APPEND subst.h /^#define ASS_APPEND /;" d +ASS_CHKLOCAL subst.h /^#define ASS_CHKLOCAL /;" d +ASS_FORCE builtins_rust/declare/src/lib.rs /^macro_rules! ASS_FORCE {$/;" M +ASS_FORCE subst.h /^#define ASS_FORCE /;" d +ASS_MKASSOC subst.h /^#define ASS_MKASSOC /;" d +ASS_MKGLOBAL subst.h /^#define ASS_MKGLOBAL /;" d +ASS_MKLOCAL builtins_rust/declare/src/lib.rs /^macro_rules! ASS_MKLOCAL {$/;" M +ASS_MKLOCAL subst.h /^#define ASS_MKLOCAL /;" d +ASS_NAMEREF builtins_rust/declare/src/lib.rs /^macro_rules! ASS_NAMEREF {$/;" M +ASS_NAMEREF subst.h /^#define ASS_NAMEREF /;" d +ASS_NOEVAL subst.h /^#define ASS_NOEVAL /;" d +ASS_NOEXPAND builtins_rust/common/src/lib.rs /^macro_rules! ASS_NOEXPAND {$/;" M +ASS_NOEXPAND builtins_rust/declare/src/lib.rs /^macro_rules! ASS_NOEXPAND {$/;" M +ASS_NOEXPAND subst.h /^#define ASS_NOEXPAND /;" d +ASS_NOINVIS subst.h /^#define ASS_NOINVIS /;" d +ASS_NOLONGJMP subst.h /^#define ASS_NOLONGJMP /;" d +AS_DISPOSE array.h /^#define AS_DISPOSE /;" d +ATOM vendor/winapi/src/shared/minwindef.rs /^pub type ATOM = WORD;$/;" t +AUDIBLE_BELL lib/readline/rldefs.h /^#define AUDIBLE_BELL /;" d +AV_ALLOWALL arrayfunc.h /^#define AV_ALLOWALL /;" d +AV_ASSIGNRHS arrayfunc.h /^#define AV_ASSIGNRHS /;" d +AV_NOEXPAND arrayfunc.h /^#define AV_NOEXPAND /;" d +AV_QUOTED arrayfunc.h /^#define AV_QUOTED /;" d +AV_USEIND arrayfunc.h /^#define AV_USEIND /;" d +AV_USEVAL arrayfunc.h /^#define AV_USEVAL /;" d +Abi vendor/syn/src/gen/clone.rs /^impl Clone for Abi {$/;" c +Abi vendor/syn/src/gen/debug.rs /^impl Debug for Abi {$/;" c +Abi vendor/syn/src/gen/eq.rs /^impl Eq for Abi {}$/;" c +Abi vendor/syn/src/gen/eq.rs /^impl PartialEq for Abi {$/;" c +Abi vendor/syn/src/gen/hash.rs /^impl Hash for Abi {$/;" c +Abi vendor/syn/src/ty.rs /^ impl Parse for Abi {$/;" c module:parsing +Abi vendor/syn/src/ty.rs /^ impl ToTokens for Abi {$/;" c module:printing +AbortDoc vendor/winapi/src/um/wingdi.rs /^ pub fn AbortDoc($/;" f +AbortHandle vendor/futures-util/src/abortable.rs /^impl AbortHandle {$/;" c +AbortHandle vendor/futures-util/src/abortable.rs /^pub struct AbortHandle {$/;" s +AbortInner vendor/futures-util/src/abortable.rs /^pub(crate) struct AbortInner {$/;" s +AbortPath vendor/winapi/src/um/wingdi.rs /^ pub fn AbortPath($/;" f +AbortPrinter vendor/winapi/src/um/winspool.rs /^ pub fn AbortPrinter($/;" f +AbortRegistration vendor/futures-util/src/abortable.rs /^pub struct AbortRegistration {$/;" s +AbortSystemShutdownA vendor/winapi/src/um/winreg.rs /^ pub fn AbortSystemShutdownA($/;" f +AbortSystemShutdownW vendor/winapi/src/um/winreg.rs /^ pub fn AbortSystemShutdownW($/;" f +Abortable vendor/futures-util/src/abortable.rs /^impl Future for Abortable$/;" c +Abortable vendor/futures-util/src/abortable.rs /^impl Stream for Abortable$/;" c +Abortable vendor/futures-util/src/abortable.rs /^impl Abortable {$/;" c +Aborted vendor/futures-util/src/abortable.rs /^impl fmt::Display for Aborted {$/;" c +Aborted vendor/futures-util/src/abortable.rs /^impl std::error::Error for Aborted {}$/;" c +Aborted vendor/futures-util/src/abortable.rs /^pub struct Aborted;$/;" s +Abstract vendor/nix/src/sys/socket/addr.rs /^ Abstract(&'a [u8]),$/;" e enum:UnixAddrKind +AccFree vendor/winapi/src/um/accctrl.rs /^pub unsafe fn AccFree(p: PVOID) -> PVOID {$/;" f +Accept vendor/memchr/src/memmem/twoway.rs /^ Accept,$/;" e enum:SuffixOrdering +AcceptEx vendor/winapi/src/um/mswsock.rs /^ pub fn AcceptEx($/;" f +AcceptSecurityContext vendor/winapi/src/shared/sspi.rs /^ pub fn AcceptSecurityContext($/;" f +AccessCheck vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AccessCheck($/;" f +AccessCheckAndAuditAlarmW vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AccessCheckAndAuditAlarmW($/;" f +AccessCheckByType vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AccessCheckByType($/;" f +AccessCheckByTypeAndAuditAlarmW vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AccessCheckByTypeAndAuditAlarmW($/;" f +AccessCheckByTypeResultList vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AccessCheckByTypeResultList($/;" f +AccessCheckByTypeResultListAndAuditAlarmByHandleW vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AccessCheckByTypeResultListAndAuditAlarmByHandleW($/;" f +AccessCheckByTypeResultListAndAuditAlarmW vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AccessCheckByTypeResultListAndAuditAlarmW($/;" f +AcquireCredentialsHandleA vendor/winapi/src/shared/sspi.rs /^ pub fn AcquireCredentialsHandleA($/;" f +AcquireCredentialsHandleW vendor/winapi/src/shared/sspi.rs /^ pub fn AcquireCredentialsHandleW($/;" f +AcquireSRWLockExclusive vendor/winapi/src/um/synchapi.rs /^ pub fn AcquireSRWLockExclusive($/;" f +AcquireSRWLockShared vendor/winapi/src/um/synchapi.rs /^ pub fn AcquireSRWLockShared($/;" f +ActivateActCtx vendor/winapi/src/um/winbase.rs /^ pub fn ActivateActCtx($/;" f +ActivateAudioInterfaceAsync vendor/winapi/src/um/mmdeviceapi.rs /^ pub fn ActivateAudioInterfaceAsync($/;" f +ActivateKeyboardLayout vendor/winapi/src/um/winuser.rs /^ pub fn ActivateKeyboardLayout($/;" f +AddAccessAllowedAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddAccessAllowedAce($/;" f +AddAccessAllowedAceEx vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddAccessAllowedAceEx($/;" f +AddAccessAllowedObjectAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddAccessAllowedObjectAce($/;" f +AddAccessDeniedAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddAccessDeniedAce($/;" f +AddAccessDeniedAceEx vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddAccessDeniedAceEx($/;" f +AddAccessDeniedObjectAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddAccessDeniedObjectAce($/;" f +AddAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddAce($/;" f +AddAtomA vendor/winapi/src/um/winbase.rs /^ pub fn AddAtomA($/;" f +AddAtomW vendor/winapi/src/um/winbase.rs /^ pub fn AddAtomW($/;" f +AddAuditAccessAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddAuditAccessAce($/;" f +AddAuditAccessAceEx vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddAuditAccessAceEx($/;" f +AddAuditAccessObjectAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddAuditAccessObjectAce($/;" f +AddClipboardFormatListener vendor/winapi/src/um/winuser.rs /^ pub fn AddClipboardFormatListener($/;" f +AddConsoleAliasA vendor/winapi/src/um/wincon.rs /^ pub fn AddConsoleAliasA($/;" f +AddConsoleAliasW vendor/winapi/src/um/wincon.rs /^ pub fn AddConsoleAliasW($/;" f +AddCredentialsA vendor/winapi/src/shared/sspi.rs /^ pub fn AddCredentialsA($/;" f +AddCredentialsW vendor/winapi/src/shared/sspi.rs /^ pub fn AddCredentialsW($/;" f +AddDllDirectory vendor/winapi/src/um/libloaderapi.rs /^ pub fn AddDllDirectory($/;" f +AddFontMemResourceEx vendor/winapi/src/um/wingdi.rs /^ pub fn AddFontMemResourceEx($/;" f +AddFontResourceA vendor/winapi/src/um/wingdi.rs /^ pub fn AddFontResourceA($/;" f +AddFontResourceExA vendor/winapi/src/um/wingdi.rs /^ pub fn AddFontResourceExA($/;" f +AddFontResourceExW vendor/winapi/src/um/wingdi.rs /^ pub fn AddFontResourceExW($/;" f +AddFontResourceW vendor/winapi/src/um/wingdi.rs /^ pub fn AddFontResourceW($/;" f +AddFormA vendor/winapi/src/um/winspool.rs /^ pub fn AddFormA($/;" f +AddFormW vendor/winapi/src/um/winspool.rs /^ pub fn AddFormW($/;" f +AddIPAddress vendor/winapi/src/um/iphlpapi.rs /^ pub fn AddIPAddress($/;" f +AddIntegrityLabelToBoundaryDescriptor vendor/winapi/src/um/winbase.rs /^ pub fn AddIntegrityLabelToBoundaryDescriptor($/;" f +AddJobA vendor/winapi/src/um/winspool.rs /^ pub fn AddJobA($/;" f +AddJobW vendor/winapi/src/um/winspool.rs /^ pub fn AddJobW($/;" f +AddLifetimeToImplTrait vendor/async-trait/src/lifetime.rs /^impl VisitMut for AddLifetimeToImplTrait {$/;" c +AddLifetimeToImplTrait vendor/async-trait/src/lifetime.rs /^pub struct AddLifetimeToImplTrait;$/;" s +AddMandatoryAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddMandatoryAce($/;" f +AddMonitorA vendor/winapi/src/um/winspool.rs /^ pub fn AddMonitorA($/;" f +AddMonitorW vendor/winapi/src/um/winspool.rs /^ pub fn AddMonitorW($/;" f +AddPortA vendor/winapi/src/um/winspool.rs /^ pub fn AddPortA($/;" f +AddPortW vendor/winapi/src/um/winspool.rs /^ pub fn AddPortW($/;" f +AddPrintProcessorA vendor/winapi/src/um/winspool.rs /^ pub fn AddPrintProcessorA($/;" f +AddPrintProcessorW vendor/winapi/src/um/winspool.rs /^ pub fn AddPrintProcessorW($/;" f +AddPrintProvidorA vendor/winapi/src/um/winspool.rs /^ pub fn AddPrintProvidorA($/;" f +AddPrintProvidorW vendor/winapi/src/um/winspool.rs /^ pub fn AddPrintProvidorW($/;" f +AddPrinterA vendor/winapi/src/um/winspool.rs /^ pub fn AddPrinterA($/;" f +AddPrinterConnectionA vendor/winapi/src/um/winspool.rs /^ pub fn AddPrinterConnectionA($/;" f +AddPrinterConnectionW vendor/winapi/src/um/winspool.rs /^ pub fn AddPrinterConnectionW($/;" f +AddPrinterDriverA vendor/winapi/src/um/winspool.rs /^ pub fn AddPrinterDriverA($/;" f +AddPrinterDriverExA vendor/winapi/src/um/winspool.rs /^ pub fn AddPrinterDriverExA($/;" f +AddPrinterDriverExW vendor/winapi/src/um/winspool.rs /^ pub fn AddPrinterDriverExW($/;" f +AddPrinterDriverW vendor/winapi/src/um/winspool.rs /^ pub fn AddPrinterDriverW($/;" f +AddPrinterW vendor/winapi/src/um/winspool.rs /^ pub fn AddPrinterW($/;" f +AddRefActCtx vendor/winapi/src/um/winbase.rs /^ pub fn AddRefActCtx($/;" f +AddResourceAttributeAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddResourceAttributeAce($/;" f +AddSIDToBoundaryDescriptor vendor/winapi/src/um/namespaceapi.rs /^ pub fn AddSIDToBoundaryDescriptor($/;" f +AddScopedPolicyIDAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AddScopedPolicyIDAce($/;" f +AddSecureMemoryCacheCallback vendor/winapi/src/um/winbase.rs /^ pub fn AddSecureMemoryCacheCallback($/;" f +AddUsersToEncryptedFile vendor/winapi/src/um/winefs.rs /^ pub fn AddUsersToEncryptedFile($/;" f +AddVectoredContinueHandler vendor/winapi/src/um/errhandlingapi.rs /^ pub fn AddVectoredContinueHandler($/;" f +AddVectoredExceptionHandler vendor/winapi/src/um/errhandlingapi.rs /^ pub fn AddVectoredExceptionHandler($/;" f +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.10.0] 2018-01-26 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.11.0] 2018-06-01 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.12.0] 2018-11-28 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.13.0] - 2019-01-15 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.14.0] - 2019-05-21 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.14.1] - 2019-06-06 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.15.0] - 10 August 2019 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.16.0] - 1 December 2019 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.16.1] - 23 December 2019 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.17.0] - 3 February 2020 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.18.0] - 26 July 2020 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.19.0] - 6 October 2020 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.20.0] - 20 February 2021 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.21.0] - 31 May 2021 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.22.0] - 9 July 2021 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.23.0] - 2021-09-28 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.24.0] - 2022-04-21 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.25.0] - 2022-08-13 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.6.0] 2016-06-10 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.7.0] 2016-09-09 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.8.0] 2017-03-02 +Added vendor/nix/CHANGELOG.md /^### Added$/;" S section:Change Log""[0.9.0] 2017-07-23 +Adding an API vendor/libc/CONTRIBUTING.md /^## Adding an API$/;" s chapter:Contributing to `libc` +Adding new functionality vendor/stdext/CONTRIBUTING.md /^## Adding new functionality$/;" s chapter:Contributing guide +AddressFamily vendor/nix/src/sys/socket/addr.rs /^impl AddressFamily {$/;" c +AddressFamily vendor/nix/src/sys/socket/addr.rs /^pub enum AddressFamily {$/;" g +AddressType vendor/nix/src/sys/ptrace/linux.rs /^pub type AddressType = *mut ::libc::c_void;$/;" t +AdhocMatchingCallback vendor/libc/src/psp.rs /^pub type AdhocMatchingCallback = ::Option<$/;" t +AdjustTokenGroups vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AdjustTokenGroups($/;" f +AdjustTokenPrivileges vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AdjustTokenPrivileges($/;" f +AdjustWindowRect vendor/winapi/src/um/winuser.rs /^ pub fn AdjustWindowRect($/;" f +AdjustWindowRectEx vendor/winapi/src/um/winuser.rs /^ pub fn AdjustWindowRectEx($/;" f +AdjustWindowRectExForDpi vendor/winapi/src/um/winuser.rs /^ pub fn AdjustWindowRectExForDpi($/;" f +AdvancedDocumentPropertiesA vendor/winapi/src/um/winspool.rs /^ pub fn AdvancedDocumentPropertiesA($/;" f +AdvancedDocumentPropertiesW vendor/winapi/src/um/winspool.rs /^ pub fn AdvancedDocumentPropertiesW($/;" f +AfterEq vendor/syn/src/item.rs /^ AfterEq,$/;" e enum:parsing::WhereClauseLocation +Aio vendor/nix/src/sys/aio.rs /^pub trait Aio {$/;" i +AioAllDone vendor/nix/src/sys/aio.rs /^ AioAllDone = libc::AIO_ALLDONE,$/;" e enum:AioCancelStat +AioCancelStat vendor/nix/src/sys/aio.rs /^pub enum AioCancelStat {$/;" g +AioCanceled vendor/nix/src/sys/aio.rs /^ AioCanceled = libc::AIO_CANCELED,$/;" e enum:AioCancelStat +AioCb vendor/nix/src/sys/aio.rs /^impl AioCb {$/;" c +AioCb vendor/nix/src/sys/aio.rs /^impl Debug for AioCb {$/;" c +AioCb vendor/nix/src/sys/aio.rs /^impl Drop for AioCb {$/;" c +AioCb vendor/nix/src/sys/aio.rs /^struct AioCb {$/;" s +AioFsync vendor/nix/src/sys/aio.rs /^impl Aio for AioFsync {$/;" c +AioFsync vendor/nix/src/sys/aio.rs /^impl AioFsync {$/;" c +AioFsync vendor/nix/src/sys/aio.rs /^impl AsRef for AioFsync {$/;" c +AioFsync vendor/nix/src/sys/aio.rs /^pub struct AioFsync {$/;" s +AioNotCanceled vendor/nix/src/sys/aio.rs /^ AioNotCanceled = libc::AIO_NOTCANCELED,$/;" e enum:AioCancelStat +AioRead vendor/nix/src/sys/aio.rs /^impl<'a> Aio for AioRead<'a> {$/;" c +AioRead vendor/nix/src/sys/aio.rs /^impl<'a> AioRead<'a> {$/;" c +AioRead vendor/nix/src/sys/aio.rs /^impl<'a> AsMut for AioRead<'a> {$/;" c +AioRead vendor/nix/src/sys/aio.rs /^impl<'a> AsRef for AioRead<'a> {$/;" c +AioRead vendor/nix/src/sys/aio.rs /^pub struct AioRead<'a> {$/;" s +AioReadv vendor/nix/src/sys/aio.rs /^impl<'a> Aio for AioReadv<'a> {$/;" c +AioReadv vendor/nix/src/sys/aio.rs /^impl<'a> AioReadv<'a> {$/;" c +AioReadv vendor/nix/src/sys/aio.rs /^impl<'a> AsMut for AioReadv<'a> {$/;" c +AioReadv vendor/nix/src/sys/aio.rs /^impl<'a> AsRef for AioReadv<'a> {$/;" c +AioReadv vendor/nix/src/sys/aio.rs /^pub struct AioReadv<'a> {$/;" s +AioWrite vendor/nix/src/sys/aio.rs /^impl<'a> Aio for AioWrite<'a> {$/;" c +AioWrite vendor/nix/src/sys/aio.rs /^impl<'a> AioWrite<'a> {$/;" c +AioWrite vendor/nix/src/sys/aio.rs /^impl<'a> AsMut for AioWrite<'a> {$/;" c +AioWrite vendor/nix/src/sys/aio.rs /^impl<'a> AsRef for AioWrite<'a> {$/;" c +AioWrite vendor/nix/src/sys/aio.rs /^pub struct AioWrite<'a> {$/;" s +AioWritev vendor/nix/src/sys/aio.rs /^impl<'a> Aio for AioWritev<'a> {$/;" c +AioWritev vendor/nix/src/sys/aio.rs /^impl<'a> AioWritev<'a> {$/;" c +AioWritev vendor/nix/src/sys/aio.rs /^impl<'a> AsMut for AioWritev<'a> {$/;" c +AioWritev vendor/nix/src/sys/aio.rs /^impl<'a> AsRef for AioWritev<'a> {$/;" c +AioWritev vendor/nix/src/sys/aio.rs /^pub struct AioWritev<'a> {$/;" s +Alg vendor/nix/src/sys/socket/addr.rs /^ Alg = libc::AF_ALG,$/;" e enum:AddressFamily +Alg vendor/nix/src/sys/socket/addr.rs /^ Alg(AlgAddr),$/;" e enum:SockAddr +AlgAddr vendor/nix/src/sys/socket/addr.rs /^ impl AlgAddr {$/;" c module:alg +AlgAddr vendor/nix/src/sys/socket/addr.rs /^ impl AsRef for AlgAddr {$/;" c module:alg +AlgAddr vendor/nix/src/sys/socket/addr.rs /^ impl Eq for AlgAddr {}$/;" c module:alg +AlgAddr vendor/nix/src/sys/socket/addr.rs /^ impl Hash for AlgAddr {$/;" c module:alg +AlgAddr vendor/nix/src/sys/socket/addr.rs /^ impl PartialEq for AlgAddr {$/;" c module:alg +AlgAddr vendor/nix/src/sys/socket/addr.rs /^ impl SockaddrLike for AlgAddr {$/;" c module:alg +AlgAddr vendor/nix/src/sys/socket/addr.rs /^ impl fmt::Debug for AlgAddr {$/;" c module:alg +AlgAddr vendor/nix/src/sys/socket/addr.rs /^ impl fmt::Display for AlgAddr {$/;" c module:alg +AlgAddr vendor/nix/src/sys/socket/addr.rs /^ impl private::SockaddrLikePriv for AlgAddr {}$/;" c module:alg +AlgAddr vendor/nix/src/sys/socket/addr.rs /^ pub struct AlgAddr(pub(in super::super) sockaddr_alg);$/;" s module:alg +AlgSetAeadAuthSize vendor/nix/src/sys/socket/sockopt.rs /^impl SetSockOpt for AlgSetAeadAuthSize {$/;" c +AlgSetAeadAuthSize vendor/nix/src/sys/socket/sockopt.rs /^pub struct AlgSetAeadAuthSize;$/;" s +AlgSetKey vendor/nix/src/sys/socket/sockopt.rs /^impl Default for AlgSetKey {$/;" c +AlgSetKey vendor/nix/src/sys/socket/sockopt.rs /^impl SetSockOpt for AlgSetKey where T: AsRef<[u8]> + Clone {$/;" c +AlgSetKey vendor/nix/src/sys/socket/sockopt.rs /^pub struct AlgSetKey(::std::marker::PhantomData);$/;" s +Algorithms used vendor/memchr/README.md /^### Algorithms used$/;" S chapter:memchr +AliasCmd builtins_rust/exec_cmd/src/lib.rs /^ AliasCmd,$/;" e enum:CMDType +AliasComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for AliasComand {$/;" c +AliasComand builtins_rust/exec_cmd/src/lib.rs /^struct AliasComand;$/;" s +AliasT builtins_rust/alias/src/lib.rs /^pub type AliasT = alias;$/;" t +AliasT builtins_rust/hash/src/lib.rs /^pub type AliasT = alias;$/;" t +Align64 vendor/unicode-ident/src/tables.rs /^pub(crate) struct Align64(pub(crate) T);$/;" s +Align8 vendor/unicode-ident/src/tables.rs /^pub(crate) struct Align8(pub(crate) T);$/;" s +All vendor/futures-util/src/stream/stream/all.rs /^impl All$/;" c +All vendor/futures-util/src/stream/stream/all.rs /^impl FusedFuture for All$/;" c +All vendor/futures-util/src/stream/stream/all.rs /^impl Future for All$/;" c +All vendor/futures-util/src/stream/stream/all.rs /^impl fmt::Debug for All$/;" c +All vendor/nix/src/sys/wait.rs /^ All,$/;" e enum:Id +AllDone vendor/futures-util/src/future/try_join_all.rs /^ AllDone,$/;" e enum:FinalState +AllocConsole vendor/winapi/src/um/consoleapi.rs /^ pub fn AllocConsole() -> BOOL;$/;" f +AllocErr vendor/smallvec/src/lib.rs /^ AllocErr {$/;" e enum:CollectionAllocErr +AllocateAndInitializeSid vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AllocateAndInitializeSid($/;" f +AllocateLocallyUniqueId vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AllocateLocallyUniqueId($/;" f +AllocateUserPhysicalPages vendor/winapi/src/um/memoryapi.rs /^ pub fn AllocateUserPhysicalPages($/;" f +AllocateUserPhysicalPagesNuma vendor/winapi/src/um/memoryapi.rs /^ pub fn AllocateUserPhysicalPagesNuma($/;" f +Allow vendor/futures/tests/sink.rs /^impl Allow {$/;" c +Allow vendor/futures/tests/sink.rs /^struct Allow {$/;" s +AllowSetForegroundWindow vendor/winapi/src/um/winuser.rs /^ pub fn AllowSetForegroundWindow($/;" f +AllowStdIo vendor/futures-util/src/io/allow_std.rs /^impl AllowStdIo {$/;" c +AllowStdIo vendor/futures-util/src/io/allow_std.rs /^impl AsyncBufRead for AllowStdIo$/;" c +AllowStdIo vendor/futures-util/src/io/allow_std.rs /^impl AsyncRead for AllowStdIo$/;" c +AllowStdIo vendor/futures-util/src/io/allow_std.rs /^impl AsyncSeek for AllowStdIo$/;" c +AllowStdIo vendor/futures-util/src/io/allow_std.rs /^impl AsyncWrite for AllowStdIo$/;" c +AllowStdIo vendor/futures-util/src/io/allow_std.rs /^impl Unpin for AllowStdIo {}$/;" c +AllowStdIo vendor/futures-util/src/io/allow_std.rs /^impl io::BufRead for AllowStdIo$/;" c +AllowStdIo vendor/futures-util/src/io/allow_std.rs /^impl io::Read for AllowStdIo$/;" c +AllowStdIo vendor/futures-util/src/io/allow_std.rs /^impl io::Seek for AllowStdIo$/;" c +AllowStdIo vendor/futures-util/src/io/allow_std.rs /^impl io::Write for AllowStdIo$/;" c +AllowStdIo vendor/futures-util/src/io/allow_std.rs /^pub struct AllowStdIo(T);$/;" s +AllowStruct vendor/syn/src/expr.rs /^ impl Clone for AllowStruct {$/;" c module:parsing +AllowStruct vendor/syn/src/expr.rs /^ impl Copy for AllowStruct {}$/;" c module:parsing +AllowStruct vendor/syn/src/expr.rs /^ pub struct AllowStruct(bool);$/;" s module:parsing +Alone vendor/proc-macro2/src/lib.rs /^ Alone,$/;" e enum:Spacing +AlphaBlend vendor/winapi/src/um/wingdi.rs /^ pub fn AlphaBlend($/;" f +AltPattern vendor/stdext/src/str.rs /^impl<'a> From<&'a str> for AltPattern<'a> {$/;" c +AltPattern vendor/stdext/src/str.rs /^impl<'a> From for AltPattern<'a> {$/;" c +AltPattern vendor/stdext/src/str.rs /^pub enum AltPattern<'a> {$/;" g +Alternatives vendor/fluent-langneg/README.md /^Alternatives$/;" s chapter:Fluent LangNeg +AlwaysSourceOptBacktrace vendor/thiserror/tests/test_option.rs /^ pub enum AlwaysSourceOptBacktrace {$/;" g module:enums +AlwaysSourceOptBacktrace vendor/thiserror/tests/test_option.rs /^ pub struct AlwaysSourceOptBacktrace {$/;" s module:structs +AlwaysUnpin vendor/pin-project-lite/src/lib.rs /^ impl Unpin for AlwaysUnpin {}$/;" c module:__private +AlwaysUnpin vendor/pin-project-lite/src/lib.rs /^ pub struct AlwaysUnpin(PhantomData);$/;" s module:__private +And vendor/syn/src/expr.rs /^ And,$/;" e enum:parsing::Precedence +AndThen vendor/futures-util/src/stream/try_stream/and_then.rs /^impl Sink for AndThen$/;" c +AndThen vendor/futures-util/src/stream/try_stream/and_then.rs /^impl AndThen$/;" c +AndThen vendor/futures-util/src/stream/try_stream/and_then.rs /^impl FusedStream for AndThen$/;" c +AndThen vendor/futures-util/src/stream/try_stream/and_then.rs /^impl Stream for AndThen$/;" c +AndThen vendor/futures-util/src/stream/try_stream/and_then.rs /^impl fmt::Debug for AndThen$/;" c +AngleArc vendor/winapi/src/um/wingdi.rs /^ pub fn AngleArc($/;" f +AngleBracketedGenericArguments vendor/syn/src/gen/clone.rs /^impl Clone for AngleBracketedGenericArguments {$/;" c +AngleBracketedGenericArguments vendor/syn/src/gen/debug.rs /^impl Debug for AngleBracketedGenericArguments {$/;" c +AngleBracketedGenericArguments vendor/syn/src/gen/eq.rs /^impl Eq for AngleBracketedGenericArguments {}$/;" c +AngleBracketedGenericArguments vendor/syn/src/gen/eq.rs /^impl PartialEq for AngleBracketedGenericArguments {$/;" c +AngleBracketedGenericArguments vendor/syn/src/gen/hash.rs /^impl Hash for AngleBracketedGenericArguments {$/;" c +AngleBracketedGenericArguments vendor/syn/src/path.rs /^ impl Parse for AngleBracketedGenericArguments {$/;" c module:parsing +AngleBracketedGenericArguments vendor/syn/src/path.rs /^ impl ToTokens for AngleBracketedGenericArguments {$/;" c module:printing +AnimatePalette vendor/winapi/src/um/wingdi.rs /^ pub fn AnimatePalette($/;" f +AnimateWindow vendor/winapi/src/um/winuser.rs /^ pub fn AnimateWindow($/;" f +Any vendor/futures-util/src/stream/stream/any.rs /^impl Any$/;" c +Any vendor/futures-util/src/stream/stream/any.rs /^impl FusedFuture for Any$/;" c +Any vendor/futures-util/src/stream/stream/any.rs /^impl Future for Any$/;" c +Any vendor/futures-util/src/stream/stream/any.rs /^impl fmt::Debug for Any$/;" c +Any vendor/syn/src/expr.rs /^ Any,$/;" e enum:parsing::Precedence +Any vendor/thiserror/tests/test_from.rs /^ Any(#[from] anyhow::Error),$/;" e enum:Many +Any vendor/thiserror/tests/test_transparent.rs /^ struct Any(#[from] anyhow::Error);$/;" s function:test_anyhow +AnyEq vendor/fluent-bundle/src/types/mod.rs /^pub trait AnyEq: Any + 'static {$/;" i +AnyPopup vendor/winapi/src/um/winuser.rs /^ pub fn AnyPopup() -> BOOL;$/;" f +AnyhowBacktrace vendor/thiserror/tests/test_backtrace.rs /^ pub struct AnyhowBacktrace {$/;" s module:structs +AppendMenuA vendor/winapi/src/um/winuser.rs /^ pub fn AppendMenuA($/;" f +AppendMenuW vendor/winapi/src/um/winuser.rs /^ pub fn AppendMenuW($/;" f +AppleTalk vendor/nix/src/sys/socket/addr.rs /^ AppleTalk = libc::AF_APPLETALK,$/;" e enum:AddressFamily +ApplicationRecoveryFinished vendor/winapi/src/um/winbase.rs /^ pub fn ApplicationRecoveryFinished($/;" f +ApplicationRecoveryInProgress vendor/winapi/src/um/winbase.rs /^ pub fn ApplicationRecoveryInProgress($/;" f +ApplyControlToken vendor/winapi/src/shared/sspi.rs /^ pub fn ApplyControlToken($/;" f +ApproximateByteSet vendor/memchr/src/memmem/twoway.rs /^impl ApproximateByteSet {$/;" c +ApproximateByteSet vendor/memchr/src/memmem/twoway.rs /^struct ApproximateByteSet(u64);$/;" s +Arc vendor/futures-task/src/spawn.rs /^ impl LocalSpawn for alloc::sync::Arc {$/;" c module:if_alloc +Arc vendor/futures-task/src/spawn.rs /^ impl Spawn for alloc::sync::Arc {$/;" c module:if_alloc +Arc vendor/stable_deref_trait/src/lib.rs /^unsafe impl CloneStableDeref for Arc {}$/;" c +Arc vendor/stable_deref_trait/src/lib.rs /^unsafe impl StableDeref for Arc {}$/;" c +Arc vendor/winapi/src/um/wingdi.rs /^ pub fn Arc($/;" f +ArcBacktrace vendor/thiserror/tests/test_backtrace.rs /^ pub enum ArcBacktrace {$/;" g module:enums +ArcBacktrace vendor/thiserror/tests/test_backtrace.rs /^ pub struct ArcBacktrace {$/;" s module:structs +ArcBacktraceFrom vendor/thiserror/tests/test_backtrace.rs /^ pub enum ArcBacktraceFrom {$/;" g module:enums +ArcBacktraceFrom vendor/thiserror/tests/test_backtrace.rs /^ pub struct ArcBacktraceFrom {$/;" s module:structs +ArcTo vendor/winapi/src/um/wingdi.rs /^ pub fn ArcTo($/;" f +ArcWake vendor/futures-task/src/arc_wake.rs /^pub trait ArcWake: Send + Sync {$/;" i +AreAllAccessesGranted vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AreAllAccessesGranted($/;" f +AreAnyAccessesGranted vendor/winapi/src/um/securitybaseapi.rs /^ pub fn AreAnyAccessesGranted($/;" f +AreDpiAwarenessContextsEqual vendor/winapi/src/um/winuser.rs /^ pub fn AreDpiAwarenessContextsEqual($/;" f +AreFileApisANSI vendor/winapi/src/um/fileapi.rs /^ pub fn AreFileApisANSI() -> BOOL;$/;" f +Arena vendor/elsa/examples/arena.rs /^impl<'arena> Arena<'arena> {$/;" c +Arena vendor/elsa/examples/arena.rs /^struct Arena<'arena> {$/;" s +Arena vendor/elsa/examples/mutable_arena.rs /^impl<'arena> Arena<'arena> {$/;" c +Arena vendor/elsa/examples/mutable_arena.rs /^struct Arena<'arena> {$/;" s +Args vendor/async-trait/src/args.rs /^impl Parse for Args {$/;" c +Args vendor/async-trait/src/args.rs /^pub struct Args {$/;" s +Args vendor/fluent-bundle/src/types/plural.rs /^ type Args = (PluralRuleType,);$/;" t implementation:PluralRules +Args vendor/intl-memoizer/src/lib.rs /^ type Args = (PluralRuleType,);$/;" t implementation:tests::PluralRules +Args vendor/intl-memoizer/src/lib.rs /^ type Args: 'static + Eq + Hash + Clone;$/;" t interface:Memoizable +Arith command.h /^ struct arith_com *Arith;$/;" m union:command::__anon3aaf009a020a typeref:struct:arith_com * +ArithFor command.h /^ struct arith_for_com *ArithFor;$/;" m union:command::__anon3aaf009a020a typeref:struct:arith_for_com * +Arithmetic vendor/syn/src/expr.rs /^ Arithmetic,$/;" e enum:parsing::Precedence +Arm vendor/syn/src/expr.rs /^ impl Parse for Arm {$/;" c module:parsing +Arm vendor/syn/src/expr.rs /^ impl ToTokens for Arm {$/;" c module:printing +Arm vendor/syn/src/gen/clone.rs /^impl Clone for Arm {$/;" c +Arm vendor/syn/src/gen/debug.rs /^impl Debug for Arm {$/;" c +Arm vendor/syn/src/gen/eq.rs /^impl Eq for Arm {}$/;" c +Arm vendor/syn/src/gen/eq.rs /^impl PartialEq for Arm {$/;" c +Arm vendor/syn/src/gen/hash.rs /^impl Hash for Arm {$/;" c +ArrangeIconicWindows vendor/winapi/src/um/winuser.rs /^ pub fn ArrangeIconicWindows($/;" f +Array vendor/smallvec/src/lib.rs /^pub unsafe trait Array {$/;" i +ArrayindT builtins_rust/shopt/src/lib.rs /^pub type ArrayindT = intmax_t;$/;" t +AsDynError vendor/thiserror/src/aserror.rs /^pub trait AsDynError<'a>: Sealed {$/;" i +Ash vendor/nix/src/sys/socket/addr.rs /^ Ash = libc::AF_ASH,$/;" e enum:AddressFamily +AssertKinds vendor/futures-channel/src/mpsc/mod.rs /^trait AssertKinds: Send + Sync + Clone {}$/;" i +AssertSend vendor/futures-channel/tests/mpsc.rs /^trait AssertSend: Send {}$/;" i +AssertSendSync vendor/futures-executor/src/thread_pool.rs /^trait AssertSendSync: Send + Sync {}$/;" i +AssertSync vendor/futures-core/src/task/__internal/atomic_waker.rs /^ trait AssertSync: Sync {}$/;" i method:AtomicWaker::new +AssertUnwindSafe vendor/futures-core/src/future.rs /^ impl FusedFuture for std::panic::AssertUnwindSafe {$/;" c module:if_alloc +AssertUnwindSafe vendor/futures-core/src/stream.rs /^ impl Stream for std::panic::AssertUnwindSafe {$/;" c module:if_alloc +Assign vendor/syn/src/expr.rs /^ Assign,$/;" e enum:parsing::Precedence +AssignProcessToJobObject vendor/winapi/src/um/jobapi2.rs /^ pub fn AssignProcessToJobObject($/;" f +Assoc vendor/async-trait/tests/test.rs /^ type Assoc = impl Sized;$/;" c implementation:issue152::Struct +Assoc vendor/async-trait/tests/test.rs /^ type Assoc = impl Sized;$/;" t implementation:issue152::Struct +Assoc vendor/async-trait/tests/test.rs /^ type Assoc;$/;" t interface:issue152::Trait +Assoc vendor/async-trait/tests/test.rs /^ type Assoc = ();$/;" t implementation:Struct +Assoc vendor/async-trait/tests/test.rs /^ type Assoc;$/;" t interface:Trait +AssocCreateForClasses vendor/winapi/src/um/shellapi.rs /^ pub fn AssocCreateForClasses($/;" f +Associated2 vendor/async-trait/tests/test.rs /^ type Associated2 = ();$/;" t implementation:issue92::Unit +Associated2 vendor/async-trait/tests/test.rs /^ type Associated2 = ();$/;" t module:issue92 +Associated2 vendor/async-trait/tests/test.rs /^ type Associated2;$/;" t interface:issue92::Trait +AssociatedTypeImplTraits vendor/async-trait/src/expand.rs /^ impl<'a> VisitMut for AssociatedTypeImplTraits<'a> {$/;" c function:contains_associated_type_impl_trait +AssociatedTypeImplTraits vendor/async-trait/src/expand.rs /^ struct AssociatedTypeImplTraits<'a> {$/;" s function:contains_associated_type_impl_trait +Async trait methods vendor/async-trait/README.md /^Async trait methods$/;" c +AsyncBufRead vendor/futures-io/src/lib.rs /^ pub trait AsyncBufRead: AsyncRead {$/;" i module:if_std +AsyncBufReadExt vendor/futures-util/src/io/mod.rs /^pub trait AsyncBufReadExt: AsyncBufRead {$/;" i +AsyncCache vendor/fluent-fallback/src/cache.rs /^impl AsyncCache$/;" c +AsyncCache vendor/fluent-fallback/src/cache.rs /^pub struct AsyncCache$/;" s +AsyncCacheStream vendor/fluent-fallback/src/cache.rs /^impl<'a, S, R> Stream for AsyncCacheStream<'a, S, R>$/;" c +AsyncCacheStream vendor/fluent-fallback/src/cache.rs /^pub struct AsyncCacheStream<'a, S, R>$/;" s +AsyncRead vendor/futures-io/src/lib.rs /^ pub trait AsyncRead {$/;" i module:if_std +AsyncRead01CompatExt vendor/futures-util/src/compat/compat01as03.rs /^ pub trait AsyncRead01CompatExt: AsyncRead01 {$/;" i module:io +AsyncReadExt vendor/futures-util/src/io/mod.rs /^pub trait AsyncReadExt: AsyncRead {$/;" i +AsyncSeek vendor/futures-io/src/lib.rs /^ pub trait AsyncSeek {$/;" i module:if_std +AsyncSeekExt vendor/futures-util/src/io/mod.rs /^pub trait AsyncSeekExt: AsyncSeek {$/;" i +AsyncToString vendor/async-trait/tests/test.rs /^ trait AsyncToString {$/;" i module:issue25 +AsyncWrite vendor/futures-io/src/lib.rs /^ pub trait AsyncWrite {$/;" i module:if_std +AsyncWrite01CompatExt vendor/futures-util/src/compat/compat01as03.rs /^ pub trait AsyncWrite01CompatExt: AsyncWrite01 {$/;" i module:io +AsyncWriteExt vendor/futures-util/src/io/mod.rs /^pub trait AsyncWriteExt: AsyncWrite {$/;" i +AtmPvc vendor/nix/src/sys/socket/addr.rs /^ AtmPvc = libc::AF_ATMPVC,$/;" e enum:AddressFamily +AtmSvc vendor/nix/src/sys/socket/addr.rs /^ AtmSvc = libc::AF_ATMSVC,$/;" e enum:AddressFamily +AtomicCancel vendor/futures/tests/stream_futures_unordered.rs /^ impl AtomicCancel {$/;" c function:iter_cancel +AtomicCancel vendor/futures/tests/stream_futures_unordered.rs /^ impl Future for AtomicCancel {$/;" c function:iter_cancel +AtomicCancel vendor/futures/tests/stream_futures_unordered.rs /^ struct AtomicCancel {$/;" s function:iter_cancel +AtomicWaker vendor/futures-core/src/task/__internal/atomic_waker.rs /^impl AtomicWaker {$/;" c +AtomicWaker vendor/futures-core/src/task/__internal/atomic_waker.rs /^impl Default for AtomicWaker {$/;" c +AtomicWaker vendor/futures-core/src/task/__internal/atomic_waker.rs /^impl fmt::Debug for AtomicWaker {$/;" c +AtomicWaker vendor/futures-core/src/task/__internal/atomic_waker.rs /^pub struct AtomicWaker {$/;" s +AtomicWaker vendor/futures-core/src/task/__internal/atomic_waker.rs /^unsafe impl Send for AtomicWaker {}$/;" c +AtomicWaker vendor/futures-core/src/task/__internal/atomic_waker.rs /^unsafe impl Sync for AtomicWaker {}$/;" c +AttachConsole vendor/winapi/src/um/wincon.rs /^ pub fn AttachConsole($/;" f +AttachThreadInput vendor/winapi/src/um/winuser.rs /^ pub fn AttachThreadInput($/;" f +AttrKind vendor/syn/tests/common/eq.rs /^impl SpanlessEq for AttrKind {$/;" c +AttrStyle vendor/syn/src/gen/clone.rs /^impl Clone for AttrStyle {$/;" c +AttrStyle vendor/syn/src/gen/clone.rs /^impl Copy for AttrStyle {}$/;" c +AttrStyle vendor/syn/src/gen/debug.rs /^impl Debug for AttrStyle {$/;" c +AttrStyle vendor/syn/src/gen/eq.rs /^impl Eq for AttrStyle {}$/;" c +AttrStyle vendor/syn/src/gen/eq.rs /^impl PartialEq for AttrStyle {$/;" c +AttrStyle vendor/syn/src/gen/hash.rs /^impl Hash for AttrStyle {$/;" c +Attribute vendor/fluent-syntax/src/ast/mod.rs /^pub struct Attribute {$/;" s +Attribute vendor/syn/src/attr.rs /^ impl ToTokens for Attribute {$/;" c module:printing +Attribute vendor/syn/src/attr.rs /^impl Attribute {$/;" c +Attribute vendor/syn/src/attr.rs /^impl<'a> FilterAttrs<'a> for &'a [Attribute] {$/;" c +Attribute vendor/syn/src/gen/clone.rs /^impl Clone for Attribute {$/;" c +Attribute vendor/syn/src/gen/debug.rs /^impl Debug for Attribute {$/;" c +Attribute vendor/syn/src/gen/eq.rs /^impl Eq for Attribute {}$/;" c +Attribute vendor/syn/src/gen/eq.rs /^impl PartialEq for Attribute {$/;" c +Attribute vendor/syn/src/gen/hash.rs /^impl Hash for Attribute {$/;" c +Attribute vendor/syn/src/parse_quote.rs /^impl ParseQuote for Attribute {$/;" c +AttributeArgs vendor/syn/src/attr.rs /^pub type AttributeArgs = Vec;$/;" t +AttributeArgs vendor/syn/src/parse_macro_input.rs /^impl ParseMacroInput for AttributeArgs {$/;" c +Attribution vendor/bitflags/CODE_OF_CONDUCT.md /^## Attribution$/;" s chapter:Contributor Covenant Code of Conduct +Attrs vendor/thiserror-impl/src/ast.rs /^impl Attrs<'_> {$/;" c +Attrs vendor/thiserror-impl/src/attr.rs /^pub struct Attrs<'a> {$/;" s +AuditComputeEffectivePolicyBySid vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditComputeEffectivePolicyBySid($/;" f +AuditComputeEffectivePolicyByToken vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditComputeEffectivePolicyByToken($/;" f +AuditEnumerateCategories vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditEnumerateCategories($/;" f +AuditEnumeratePerUserPolicy vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditEnumeratePerUserPolicy($/;" f +AuditEnumerateSubCategories vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditEnumerateSubCategories($/;" f +AuditFree vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditFree($/;" f +AuditLookupCategoryGuidFromCategoryId vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditLookupCategoryGuidFromCategoryId($/;" f +AuditLookupCategoryIdFromCategoryGuid vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditLookupCategoryIdFromCategoryGuid($/;" f +AuditLookupCategoryNameA vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditLookupCategoryNameA($/;" f +AuditLookupCategoryNameW vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditLookupCategoryNameW($/;" f +AuditLookupSubCategoryNameA vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditLookupSubCategoryNameA($/;" f +AuditLookupSubCategoryNameW vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditLookupSubCategoryNameW($/;" f +AuditQueryGlobalSaclA vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditQueryGlobalSaclA($/;" f +AuditQueryGlobalSaclW vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditQueryGlobalSaclW($/;" f +AuditQueryPerUserPolicy vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditQueryPerUserPolicy($/;" f +AuditQuerySecurity vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditQuerySecurity($/;" f +AuditQuerySystemPolicy vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditQuerySystemPolicy($/;" f +AuditSetGlobalSaclA vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditSetGlobalSaclA($/;" f +AuditSetGlobalSaclW vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditSetGlobalSaclW($/;" f +AuditSetPerUserPolicy vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditSetPerUserPolicy($/;" f +AuditSetSecurity vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditSetSecurity($/;" f +AuditSetSystemPolicy vendor/winapi/src/um/ntsecapi.rs /^ pub fn AuditSetSystemPolicy($/;" f +Authors vendor/self_cell/README.md /^## Authors$/;" s chapter:`self_cell!` +Auto vendor/memchr/src/memmem/prefilter/mod.rs /^ Auto,$/;" e enum:Prefilter +AutoCfg vendor/autocfg/src/lib.rs /^impl AutoCfg {$/;" c +AutoCfg vendor/autocfg/src/lib.rs /^pub struct AutoCfg {$/;" s +AutoCfg vendor/autocfg/src/tests.rs /^impl AutoCfg {$/;" c +AvQuerySystemResponsiveness vendor/winapi/src/um/avrt.rs /^ pub fn AvQuerySystemResponsiveness($/;" f +AvRevertMmThreadCharacteristics vendor/winapi/src/um/avrt.rs /^ pub fn AvRevertMmThreadCharacteristics($/;" f +AvRtCreateThreadOrderingGroup vendor/winapi/src/um/avrt.rs /^ pub fn AvRtCreateThreadOrderingGroup($/;" f +AvRtCreateThreadOrderingGroupExA vendor/winapi/src/um/avrt.rs /^ pub fn AvRtCreateThreadOrderingGroupExA($/;" f +AvRtCreateThreadOrderingGroupExW vendor/winapi/src/um/avrt.rs /^ pub fn AvRtCreateThreadOrderingGroupExW($/;" f +AvRtDeleteThreadOrderingGroup vendor/winapi/src/um/avrt.rs /^ pub fn AvRtDeleteThreadOrderingGroup($/;" f +AvRtJoinThreadOrderingGroup vendor/winapi/src/um/avrt.rs /^ pub fn AvRtJoinThreadOrderingGroup($/;" f +AvRtLeaveThreadOrderingGroup vendor/winapi/src/um/avrt.rs /^ pub fn AvRtLeaveThreadOrderingGroup($/;" f +AvRtWaitOnThreadOrderingGroup vendor/winapi/src/um/avrt.rs /^ pub fn AvRtWaitOnThreadOrderingGroup($/;" f +AvSetMmMaxThreadCharacteristicsA vendor/winapi/src/um/avrt.rs /^ pub fn AvSetMmMaxThreadCharacteristicsA($/;" f +AvSetMmMaxThreadCharacteristicsW vendor/winapi/src/um/avrt.rs /^ pub fn AvSetMmMaxThreadCharacteristicsW($/;" f +AvSetMmThreadCharacteristicsA vendor/winapi/src/um/avrt.rs /^ pub fn AvSetMmThreadCharacteristicsA($/;" f +AvSetMmThreadCharacteristicsW vendor/winapi/src/um/avrt.rs /^ pub fn AvSetMmThreadCharacteristicsW($/;" f +AvSetMmThreadPriority vendor/winapi/src/um/avrt.rs /^ pub fn AvSetMmThreadPriority($/;" f +AwsEc2MetadataLoader vendor/async-trait/tests/test.rs /^ impl Loader for AwsEc2MetadataLoader<'_> {$/;" c module:issue110 +AwsEc2MetadataLoader vendor/async-trait/tests/test.rs /^ pub struct AwsEc2MetadataLoader<'a> {$/;" s module:issue110 +Ax25 vendor/nix/src/sys/socket/addr.rs /^ Ax25 = libc::AF_AX25,$/;" e enum:AddressFamily +B vendor/async-trait/tests/ui/lifetime-span.rs /^impl<'r> Trait2<'r> for B {$/;" c +B vendor/async-trait/tests/ui/lifetime-span.rs /^impl<'r> Trait<'r> for B {$/;" c +B vendor/async-trait/tests/ui/lifetime-span.rs /^struct B;$/;" s +B vendor/syn/tests/common/eq.rs /^impl SpanlessEq for (A, B) {$/;" c +B vendor/thiserror/tests/ui/missing-fmt.rs /^ B(usize),$/;" e enum:Error +BACKUP_CHAR include/shmbutil.h /^# define BACKUP_CHAR(/;" d +BACKUP_CHAR_P include/shmbutil.h /^# define BACKUP_CHAR_P(/;" d +BADOPT builtins/getopt.c /^#define BADOPT(/;" d file: +BADVAR_REDIRECT command.h /^#define BADVAR_REDIRECT /;" d +BAD_JOBSPEC jobs.h /^#define BAD_JOBSPEC /;" d +BAD_MODIFIER lib/readline/histlib.h /^#define BAD_MODIFIER /;" d +BAD_WORD_SPEC lib/readline/histlib.h /^#define BAD_WORD_SPEC /;" d +BAND expr.c /^#define BAND /;" d file: +BANG_HISTORY configure.ac /^ AC_DEFINE(BANG_HISTORY)$/;" d +BASEOPENFLAGS lib/sh/tmpfile.c /^#define BASEOPENFLAGS /;" d file: +BASE_CCFLAGS Makefile.in /^BASE_CCFLAGS = $(SYSTEM_FLAGS) $(LOCAL_DEFS) \\$/;" m +BASE_CCFLAGS builtins/Makefile.in /^BASE_CCFLAGS = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) \\$/;" m +BASE_CCFLAGS support/Makefile.in /^BASE_CCFLAGS = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) \\$/;" m +BASE_INDENT builtins.h /^#define BASE_INDENT /;" d +BASE_INDENT builtins/gen-helpfiles.c /^#define BASE_INDENT /;" d file: +BASE_INDENT builtins/mkbuiltins.c /^#define BASE_INDENT /;" d file: +BASE_INDENT builtins_rust/help/src/lib.rs /^macro_rules! BASE_INDENT {$/;" M +BASE_LDFLAGS Makefile.in /^BASE_LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS)$/;" m +BASHFUNC_PREFIX variables.c /^#define BASHFUNC_PREFIX /;" d file: +BASHFUNC_PREFLEN variables.c /^#define BASHFUNC_PREFLEN /;" d file: +BASHFUNC_SUFFIX variables.c /^#define BASHFUNC_SUFFIX /;" d file: +BASHFUNC_SUFFLEN variables.c /^#define BASHFUNC_SUFFLEN /;" d file: +BASHINCDIR Makefile.in /^BASHINCDIR = ${srcdir}\/include$/;" m +BASHINCDIR builtins/Makefile.in /^BASHINCDIR = ${topdir}\/include$/;" m +BASHINCDIR lib/glob/Makefile.in /^BASHINCDIR = ${topdir}\/include$/;" m +BASHINCDIR lib/malloc/Makefile.in /^BASHINCDIR = ${topdir}\/include$/;" m +BASHINCDIR lib/sh/Makefile.in /^BASHINCDIR = ${topdir}\/include$/;" m +BASHINCDIR lib/tilde/Makefile.in /^BASHINCDIR = ${topdir}\/include$/;" m +BASHINCFILES Makefile.in /^BASHINCFILES = $(BASHINCDIR)\/posixstat.h $(BASHINCDIR)\/ansi_stdlib.h \\$/;" m +BASHVERS configure.ac /^AC_SUBST(BASHVERS)$/;" s +BASH_CHECK_DECL aclocal.m4 /^AC_DEFUN(BASH_CHECK_DECL,$/;" m +BASH_CHECK_DEV_FD aclocal.m4 /^AC_DEFUN(BASH_CHECK_DEV_FD,$/;" m +BASH_CHECK_DEV_STDIN aclocal.m4 /^AC_DEFUN(BASH_CHECK_DEV_STDIN,$/;" m +BASH_CHECK_GETPW_FUNCS aclocal.m4 /^AC_DEFUN(BASH_CHECK_GETPW_FUNCS,$/;" m +BASH_CHECK_KERNEL_RLIMIT aclocal.m4 /^AC_DEFUN(BASH_CHECK_KERNEL_RLIMIT,$/;" m +BASH_CHECK_LIB_SOCKET aclocal.m4 /^AC_DEFUN(BASH_CHECK_LIB_SOCKET,$/;" m +BASH_CHECK_LIB_TERMCAP aclocal.m4 /^AC_DEFUN([BASH_CHECK_LIB_TERMCAP],$/;" m +BASH_CHECK_MULTIBYTE aclocal.m4 /^AC_DEFUN(BASH_CHECK_MULTIBYTE,$/;" m +BASH_CHECK_OFF_T_64 aclocal.m4 /^AC_DEFUN(BASH_CHECK_OFF_T_64,$/;" m +BASH_CHECK_RTSIGS aclocal.m4 /^AC_DEFUN(BASH_CHECK_RTSIGS,$/;" m +BASH_CHECK_SPEED_T aclocal.m4 /^AC_DEFUN(BASH_CHECK_SPEED_T,$/;" m +BASH_CHECK_SYS_SIGLIST aclocal.m4 /^AC_DEFUN(BASH_CHECK_SYS_SIGLIST, [$/;" m +BASH_CHECK_TYPE aclocal.m4 /^AC_DEFUN(BASH_CHECK_TYPE,$/;" m +BASH_CHECK_TYPE_STRUCT_TIMESPEC m4/timespec.m4 /^AC_DEFUN([BASH_CHECK_TYPE_STRUCT_TIMESPEC],$/;" m +BASH_CHECK_WCONTINUED aclocal.m4 /^AC_DEFUN(BASH_CHECK_WCONTINUED,$/;" m +BASH_C_LONG_DOUBLE aclocal.m4 /^AC_DEFUN(BASH_C_LONG_DOUBLE,$/;" m +BASH_C_LONG_LONG aclocal.m4 /^AC_DEFUN(BASH_C_LONG_LONG,$/;" m +BASH_DECL_PRINTF aclocal.m4 /^AC_DEFUN(BASH_DECL_PRINTF,$/;" m +BASH_DECL_SBRK aclocal.m4 /^AC_DEFUN(BASH_DECL_SBRK,$/;" m +BASH_DECL_UNDER_SYS_SIGLIST aclocal.m4 /^AC_DEFUN(BASH_DECL_UNDER_SYS_SIGLIST,$/;" m +BASH_FUNC_CTYPE_NONASCII aclocal.m4 /^AC_DEFUN(BASH_FUNC_CTYPE_NONASCII,$/;" m +BASH_FUNC_DUP2_CLOEXEC_CHECK aclocal.m4 /^AC_DEFUN(BASH_FUNC_DUP2_CLOEXEC_CHECK,$/;" m +BASH_FUNC_FNMATCH_EQUIV_FALLBACK aclocal.m4 /^AC_DEFUN(BASH_FUNC_FNMATCH_EQUIV_FALLBACK,$/;" m +BASH_FUNC_FNMATCH_EXTMATCH aclocal.m4 /^AC_DEFUN(BASH_FUNC_FNMATCH_EXTMATCH,$/;" m +BASH_FUNC_FPURGE aclocal.m4 /^AC_DEFUN([BASH_FUNC_FPURGE],$/;" m +BASH_FUNC_GETCWD aclocal.m4 /^AC_DEFUN(BASH_FUNC_GETCWD,$/;" m +BASH_FUNC_GETENV aclocal.m4 /^AC_DEFUN(BASH_FUNC_GETENV,$/;" m +BASH_FUNC_GETHOSTBYNAME aclocal.m4 /^AC_DEFUN(BASH_FUNC_GETHOSTBYNAME,$/;" m +BASH_FUNC_INET_ATON aclocal.m4 /^AC_DEFUN(BASH_FUNC_INET_ATON,$/;" m +BASH_FUNC_LSTAT aclocal.m4 /^AC_DEFUN(BASH_FUNC_LSTAT,$/;" m +BASH_FUNC_OPENDIR_CHECK aclocal.m4 /^AC_DEFUN(BASH_FUNC_OPENDIR_CHECK,$/;" m +BASH_FUNC_POSIX_SETJMP aclocal.m4 /^AC_DEFUN(BASH_FUNC_POSIX_SETJMP,$/;" m +BASH_FUNC_PRINTF_A_FORMAT aclocal.m4 /^AC_DEFUN(BASH_FUNC_PRINTF_A_FORMAT,$/;" m +BASH_FUNC_SBRK aclocal.m4 /^AC_DEFUN([BASH_FUNC_SBRK],$/;" m +BASH_FUNC_SNPRINTF aclocal.m4 /^AC_DEFUN([BASH_FUNC_SNPRINTF],$/;" m +BASH_FUNC_STD_PUTENV aclocal.m4 /^AC_DEFUN(BASH_FUNC_STD_PUTENV,$/;" m +BASH_FUNC_STD_UNSETENV aclocal.m4 /^AC_DEFUN(BASH_FUNC_STD_UNSETENV,$/;" m +BASH_FUNC_STRCOLL aclocal.m4 /^AC_DEFUN(BASH_FUNC_STRCOLL,$/;" m +BASH_FUNC_STRSIGNAL aclocal.m4 /^AC_DEFUN(BASH_FUNC_STRSIGNAL,$/;" m +BASH_FUNC_ULIMIT_MAXFDS aclocal.m4 /^AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS,$/;" m +BASH_FUNC_VSNPRINTF aclocal.m4 /^AC_DEFUN([BASH_FUNC_VSNPRINTF],$/;" m +BASH_HAVE_FIONREAD aclocal.m4 /^AC_DEFUN(BASH_HAVE_FIONREAD,$/;" m +BASH_HAVE_TIOCGWINSZ aclocal.m4 /^AC_DEFUN(BASH_HAVE_TIOCGWINSZ,$/;" m +BASH_HAVE_TIOCSTAT aclocal.m4 /^AC_DEFUN(BASH_HAVE_TIOCSTAT,$/;" m +BASH_HEADER_INTTYPES aclocal.m4 /^AC_DEFUN(BASH_HEADER_INTTYPES,$/;" m +BASH_INPUT input.h /^} BASH_INPUT;$/;" t typeref:struct:__anon9f26d24b0208 +BASH_INPUT r_bash/src/lib.rs /^pub struct BASH_INPUT {$/;" s +BASH_NSIG trap.h /^#define BASH_NSIG /;" d +BASH_RAND32_MAX lib/sh/random.c /^#define BASH_RAND32_MAX /;" d file: +BASH_RAND_MAX lib/sh/random.c /^#define BASH_RAND_MAX /;" d file: +BASH_STAT_TIME m4/stat-time.m4 /^AC_DEFUN([BASH_STAT_TIME],$/;" m +BASH_STRUCT_DIRENT_D_FILENO aclocal.m4 /^AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO,$/;" m +BASH_STRUCT_DIRENT_D_INO aclocal.m4 /^AC_DEFUN(BASH_STRUCT_DIRENT_D_INO,$/;" m +BASH_STRUCT_DIRENT_D_NAMLEN aclocal.m4 /^AC_DEFUN(BASH_STRUCT_DIRENT_D_NAMLEN,$/;" m +BASH_STRUCT_ST_BLOCKS aclocal.m4 /^AC_DEFUN(BASH_STRUCT_ST_BLOCKS,$/;" m +BASH_STRUCT_TERMIOS_LDISC aclocal.m4 /^AC_DEFUN(BASH_STRUCT_TERMIOS_LDISC,$/;" m +BASH_STRUCT_TERMIO_LDISC aclocal.m4 /^AC_DEFUN(BASH_STRUCT_TERMIO_LDISC,$/;" m +BASH_STRUCT_TIMEVAL aclocal.m4 /^AC_DEFUN(BASH_STRUCT_TIMEVAL,$/;" m +BASH_STRUCT_TIMEZONE aclocal.m4 /^AC_DEFUN(BASH_STRUCT_TIMEZONE,$/;" m +BASH_STRUCT_WEXITSTATUS_OFFSET aclocal.m4 /^AC_DEFUN(BASH_STRUCT_WEXITSTATUS_OFFSET,$/;" m +BASH_STRUCT_WINSIZE aclocal.m4 /^AC_DEFUN(BASH_STRUCT_WINSIZE,$/;" m +BASH_SYS_DEFAULT_MAIL_DIR aclocal.m4 /^AC_DEFUN(BASH_SYS_DEFAULT_MAIL_DIR,$/;" m +BASH_SYS_ERRLIST aclocal.m4 /^AC_DEFUN(BASH_SYS_ERRLIST,$/;" m +BASH_SYS_JOB_CONTROL_MISSING aclocal.m4 /^AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING,$/;" m +BASH_SYS_NAMED_PIPES aclocal.m4 /^AC_DEFUN(BASH_SYS_NAMED_PIPES,$/;" m +BASH_SYS_PGRP_SYNC aclocal.m4 /^AC_DEFUN(BASH_SYS_PGRP_SYNC,$/;" m +BASH_SYS_REINSTALL_SIGHANDLERS aclocal.m4 /^AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS,$/;" m +BASH_SYS_SIGLIST aclocal.m4 /^AC_DEFUN(BASH_SYS_SIGLIST,$/;" m +BASH_SYS_SIGNAL_VINTAGE aclocal.m4 /^AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE,$/;" m +BASH_TIMEFORMAT execute_cmd.c /^#define BASH_TIMEFORMAT /;" d file: +BASH_TYPE_BITS16_T aclocal.m4 /^AC_DEFUN(BASH_TYPE_BITS16_T,$/;" m +BASH_TYPE_BITS32_T aclocal.m4 /^AC_DEFUN(BASH_TYPE_BITS32_T,$/;" m +BASH_TYPE_BITS64_T aclocal.m4 /^AC_DEFUN(BASH_TYPE_BITS64_T,$/;" m +BASH_TYPE_LONG_LONG aclocal.m4 /^AC_DEFUN(BASH_TYPE_LONG_LONG,$/;" m +BASH_TYPE_PTRDIFF_T aclocal.m4 /^AC_DEFUN(BASH_TYPE_PTRDIFF_T,$/;" m +BASH_TYPE_RLIMIT aclocal.m4 /^AC_DEFUN(BASH_TYPE_RLIMIT,$/;" m +BASH_TYPE_SIGHANDLER aclocal.m4 /^AC_DEFUN(BASH_TYPE_SIGHANDLER,$/;" m +BASH_TYPE_SIG_ATOMIC_T aclocal.m4 /^AC_DEFUN(BASH_TYPE_SIG_ATOMIC_T,$/;" m +BASH_TYPE_UNSIGNED_LONG_LONG aclocal.m4 /^AC_DEFUN(BASH_TYPE_UNSIGNED_LONG_LONG,$/;" m +BASH_TYPE_U_BITS16_T aclocal.m4 /^AC_DEFUN(BASH_TYPE_U_BITS16_T,$/;" m +BASH_TYPE_U_BITS32_T aclocal.m4 /^AC_DEFUN(BASH_TYPE_U_BITS32_T,$/;" m +BASH_UNDER_SYS_SIGLIST aclocal.m4 /^AC_DEFUN(BASH_UNDER_SYS_SIGLIST,$/;" m +BC lib/termcap/tparam.c /^__private_extern__ char *BC;$/;" v typeref:typename:__private_extern__ char * +BC r_readline/src/lib.rs /^ pub static mut BC: *mut ::std::os::raw::c_char;$/;" v +BCRYPT_ALG_HANDLE vendor/winapi/src/shared/bcrypt.rs /^pub type BCRYPT_ALG_HANDLE = PVOID;$/;" t +BCRYPT_AUTH_TAG_LENGTHS_STRUCT vendor/winapi/src/shared/bcrypt.rs /^pub type BCRYPT_AUTH_TAG_LENGTHS_STRUCT = BCRYPT_KEY_LENGTHS_STRUCT;$/;" t +BCRYPT_HANDLE vendor/winapi/src/shared/bcrypt.rs /^pub type BCRYPT_HANDLE = PVOID;$/;" t +BCRYPT_HASH_HANDLE vendor/winapi/src/shared/bcrypt.rs /^pub type BCRYPT_HASH_HANDLE = PVOID;$/;" t +BCRYPT_IS_INTERFACE_VERSION_COMPATIBLE vendor/winapi/src/shared/bcrypt.rs /^pub fn BCRYPT_IS_INTERFACE_VERSION_COMPATIBLE($/;" f +BCRYPT_KEY_HANDLE vendor/winapi/src/shared/bcrypt.rs /^pub type BCRYPT_KEY_HANDLE = PVOID;$/;" t +BCRYPT_SECRET_HANDLE vendor/winapi/src/shared/bcrypt.rs /^pub type BCRYPT_SECRET_HANDLE = PVOID;$/;" t +BCRYPT_SUCCESS vendor/winapi/src/shared/bcrypt.rs /^pub fn BCRYPT_SUCCESS(Status: NTSTATUS) -> bool {$/;" f +BCryptAddContextFunction vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptAddContextFunction($/;" f +BCryptCloseAlgorithmProvider vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptCloseAlgorithmProvider($/;" f +BCryptConfigureContext vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptConfigureContext($/;" f +BCryptConfigureContextFunction vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptConfigureContextFunction($/;" f +BCryptCreateContext vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptCreateContext($/;" f +BCryptCreateHash vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptCreateHash($/;" f +BCryptCreateMultiHash vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptCreateMultiHash($/;" f +BCryptDecrypt vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptDecrypt($/;" f +BCryptDeleteContext vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptDeleteContext($/;" f +BCryptDeriveKey vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptDeriveKey($/;" f +BCryptDeriveKeyCapi vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptDeriveKeyCapi($/;" f +BCryptDeriveKeyPBKDF2 vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptDeriveKeyPBKDF2($/;" f +BCryptDestroyHash vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptDestroyHash($/;" f +BCryptDestroyKey vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptDestroyKey($/;" f +BCryptDestroySecret vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptDestroySecret($/;" f +BCryptDuplicateHash vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptDuplicateHash($/;" f +BCryptDuplicateKey vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptDuplicateKey($/;" f +BCryptEncrypt vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptEncrypt($/;" f +BCryptEnumAlgorithms vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptEnumAlgorithms($/;" f +BCryptEnumContextFunctionProviders vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptEnumContextFunctionProviders($/;" f +BCryptEnumContextFunctions vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptEnumContextFunctions($/;" f +BCryptEnumContexts vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptEnumContexts($/;" f +BCryptEnumProviders vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptEnumProviders($/;" f +BCryptEnumRegisteredProviders vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptEnumRegisteredProviders($/;" f +BCryptExportKey vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptExportKey($/;" f +BCryptFinalizeKeyPair vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptFinalizeKeyPair($/;" f +BCryptFinishHash vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptFinishHash($/;" f +BCryptFreeBuffer vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptFreeBuffer($/;" f +BCryptGenRandom vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptGenRandom($/;" f +BCryptGenerateKeyPair vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptGenerateKeyPair($/;" f +BCryptGenerateSymmetricKey vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptGenerateSymmetricKey($/;" f +BCryptGetFipsAlgorithmMode vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptGetFipsAlgorithmMode($/;" f +BCryptGetProperty vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptGetProperty($/;" f +BCryptHash vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptHash($/;" f +BCryptHashData vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptHashData($/;" f +BCryptImportKey vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptImportKey($/;" f +BCryptImportKeyPair vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptImportKeyPair($/;" f +BCryptKeyDerivation vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptKeyDerivation($/;" f +BCryptOpenAlgorithmProvider vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptOpenAlgorithmProvider($/;" f +BCryptProcessMultiOperations vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptProcessMultiOperations($/;" f +BCryptQueryContextConfiguration vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptQueryContextConfiguration($/;" f +BCryptQueryContextFunctionConfiguration vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptQueryContextFunctionConfiguration($/;" f +BCryptQueryContextFunctionProperty vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptQueryContextFunctionProperty($/;" f +BCryptQueryProviderRegistration vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptQueryProviderRegistration($/;" f +BCryptRegisterConfigChangeNotify vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptRegisterConfigChangeNotify($/;" f +BCryptRemoveContextFunction vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptRemoveContextFunction($/;" f +BCryptResolveProviders vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptResolveProviders($/;" f +BCryptSecretAgreement vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptSecretAgreement($/;" f +BCryptSetContextFunctionProperty vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptSetContextFunctionProperty($/;" f +BCryptSetProperty vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptSetProperty($/;" f +BCryptSignHash vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptSignHash($/;" f +BCryptUnregisterConfigChangeNotify vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptUnregisterConfigChangeNotify($/;" f +BCryptVerifySignature vendor/winapi/src/shared/bcrypt.rs /^ pub fn BCryptVerifySignature($/;" f +BD_INDENT support/man2html.c /^#define BD_INDENT /;" d file: +BD_LITERAL support/man2html.c /^#define BD_LITERAL /;" d file: +BFIND lib/readline/rldefs.h /^#define BFIND /;" d +BGPIDS_TABLE_SZ jobs.c /^#define BGPIDS_TABLE_SZ /;" d file: +BIG lib/sh/snprintf.c /^#define BIG /;" d file: +BINDTEXTDOMAIN lib/intl/bindtextdom.c /^# define BINDTEXTDOMAIN /;" d file: +BINDTEXTDOMAIN lib/intl/bindtextdom.c /^BINDTEXTDOMAIN (domainname, dirname)$/;" f +BIND_TEXTDOMAIN_CODESET lib/intl/bindtextdom.c /^# define BIND_TEXTDOMAIN_CODESET /;" d file: +BIND_TEXTDOMAIN_CODESET lib/intl/bindtextdom.c /^BIND_TEXTDOMAIN_CODESET (domainname, codeset)$/;" f +BIT vendor/winapi/src/um/ws2bth.rs /^macro_rules! BIT {$/;" M +BLOCK gen_header.sh /^:< bool {$/;" f +BTH_LAP vendor/winapi/src/shared/bthdef.rs /^pub type BTH_LAP = ULONG;$/;" t +BTH_LE_GAP_APPEARANCE_GET_CATEGORY vendor/winapi/src/um/bthledef.rs /^pub fn BTH_LE_GAP_APPEARANCE_GET_CATEGORY(a: USHORT) -> USHORT {$/;" f +BTH_LE_GAP_APPEARANCE_GET_SUB_CATEGORY vendor/winapi/src/um/bthledef.rs /^pub fn BTH_LE_GAP_APPEARANCE_GET_SUB_CATEGORY(a: USHORT) -> UCHAR {$/;" f +BTH_LE_GAP_APPEARANCE_SET_CATEGORY vendor/winapi/src/um/bthledef.rs /^pub fn BTH_LE_GAP_APPEARANCE_SET_CATEGORY(a: &mut USHORT, c: USHORT) {$/;" f +BTH_LE_GAP_APPEARANCE_SET_SUB_CATEGORY vendor/winapi/src/um/bthledef.rs /^pub fn BTH_LE_GAP_APPEARANCE_SET_SUB_CATEGORY(a: &mut USHORT, s: UCHAR) {$/;" f +BTH_LE_GATT_RELIABLE_WRITE_CONTEXT vendor/winapi/src/um/bthledef.rs /^pub type BTH_LE_GATT_RELIABLE_WRITE_CONTEXT = ULONG64;$/;" t +BTH_SUCCESS vendor/winapi/src/shared/bthdef.rs /^pub fn BTH_SUCCESS(btStatus: BTHSTATUS) -> bool {$/;" f +BTO lib/readline/rldefs.h /^#define BTO /;" d +BTYPE vendor/winapi/src/um/winnt.rs /^pub fn BTYPE(x: WORD) -> bool {$/;" f +BTreeSet vendor/quote/src/runtime.rs /^ impl<'q, T: 'q> RepAsIteratorExt<'q> for BTreeSet {$/;" c module:ext +BUCKET_CONTENTS builtins_rust/complete/src/lib.rs /^pub struct BUCKET_CONTENTS {$/;" s +BUCKET_CONTENTS builtins_rust/declare/src/lib.rs /^pub struct BUCKET_CONTENTS {$/;" s +BUCKET_CONTENTS builtins_rust/hash/src/lib.rs /^type BUCKET_CONTENTS = bucket_contents;$/;" t +BUCKET_CONTENTS builtins_rust/setattr/src/intercdep.rs /^pub struct BUCKET_CONTENTS {$/;" s +BUCKET_CONTENTS hashlib.h /^} BUCKET_CONTENTS;$/;" t typeref:struct:bucket_contents +BUCKET_CONTENTS r_bash/src/lib.rs /^pub type BUCKET_CONTENTS = bucket_contents;$/;" t +BUCKET_CONTENTS r_jobs/src/lib.rs /^pub type BUCKET_CONTENTS = bucket_contents;$/;" t +BUFFERED_INPUT config-top.h /^#define BUFFERED_INPUT$/;" d +BUFFERED_STREAM input.h /^} BUFFERED_STREAM;$/;" t typeref:struct:BSTREAM +BUFFERED_STREAM r_bash/src/lib.rs /^pub type BUFFERED_STREAM = BSTREAM;$/;" t +BUFSIZE lib/termcap/termcap.c /^#define BUFSIZE /;" d file: +BUILD_DIR Makefile.in /^BUILD_DIR = @BUILD_DIR@$/;" m +BUILD_DIR builtins/Makefile.in /^BUILD_DIR = @BUILD_DIR@$/;" m +BUILD_DIR configure.ac /^AC_SUBST(BUILD_DIR)$/;" s +BUILD_DIR lib/glob/Makefile.in /^BUILD_DIR = @BUILD_DIR@$/;" m +BUILD_DIR lib/malloc/Makefile.in /^BUILD_DIR = @BUILD_DIR@$/;" m +BUILD_DIR lib/readline/Makefile.in /^BUILD_DIR = @BUILD_DIR@$/;" m +BUILD_DIR lib/sh/Makefile.in /^BUILD_DIR = @BUILD_DIR@$/;" m +BUILD_DIR lib/termcap/Makefile.in /^BUILD_DIR = @BUILD_DIR@$/;" m +BUILD_DIR lib/tilde/Makefile.in /^BUILD_DIR = @BUILD_DIR@$/;" m +BUILD_DIR support/Makefile.in /^BUILD_DIR = @BUILD_DIR@$/;" m +BUILD_INCLUDED_LIBINTL Makefile.in /^BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@$/;" m +BUILTINS_DEP Makefile.in /^BUILTINS_DEP = $(BUILTINS_LIBRARY)$/;" m +BUILTINS_H builtins.h /^#define BUILTINS_H$/;" d +BUILTINS_LDFLAGS Makefile.in /^BUILTINS_LDFLAGS = -L$(DEFDIR)$/;" m +BUILTINS_LIB Makefile.in /^BUILTINS_LIB = -lbuiltins$/;" m +BUILTINS_LIBRARY Makefile.in /^BUILTINS_LIBRARY = $(DEFDIR)\/libbuiltins.a$/;" m +BUILTIN_ABSSRC Makefile.in /^BUILTIN_ABSSRC=${topdir}\/builtins$/;" m +BUILTIN_C_OBJ Makefile.in /^BUILTIN_C_OBJ = $(DEFDIR)\/common.o $(DEFDIR)\/evalstring.o \\$/;" m +BUILTIN_C_SRC Makefile.in /^BUILTIN_C_SRC = $(DEFSRC)\/mkbuiltins.c $(DEFSRC)\/common.c \\$/;" m +BUILTIN_DEFS Makefile.in /^BUILTIN_DEFS = $(DEFSRC)\/alias.def $(DEFSRC)\/bind.def $(DEFSRC)\/break.def \\$/;" m +BUILTIN_DELETED builtins.h /^#define BUILTIN_DELETED /;" d +BUILTIN_DELETED builtins_rust/common/src/lib.rs /^macro_rules! BUILTIN_DELETED {$/;" M +BUILTIN_DESC builtins/mkbuiltins.c /^} BUILTIN_DESC;$/;" t typeref:struct:__anon69e836710208 file: +BUILTIN_ENABLED builtins.h /^#define BUILTIN_ENABLED /;" d +BUILTIN_ENABLED builtins_rust/common/src/lib.rs /^macro_rules! BUILTIN_ENABLED {$/;" M +BUILTIN_ENABLED builtins_rust/help/src/lib.rs /^macro_rules! BUILTIN_ENABLED {$/;" M +BUILTIN_FLAG_ASSIGNMENT builtins/gen-helpfiles.c /^#define BUILTIN_FLAG_ASSIGNMENT /;" d file: +BUILTIN_FLAG_ASSIGNMENT builtins/mkbuiltins.c /^#define BUILTIN_FLAG_ASSIGNMENT /;" d file: +BUILTIN_FLAG_LOCALVAR builtins/mkbuiltins.c /^#define BUILTIN_FLAG_LOCALVAR /;" d file: +BUILTIN_FLAG_POSIX_BUILTIN builtins/gen-helpfiles.c /^#define BUILTIN_FLAG_POSIX_BUILTIN /;" d file: +BUILTIN_FLAG_POSIX_BUILTIN builtins/mkbuiltins.c /^#define BUILTIN_FLAG_POSIX_BUILTIN /;" d file: +BUILTIN_FLAG_REQUIRES builtins/mkbuiltins.c /^#define BUILTIN_FLAG_REQUIRES /;" d file: +BUILTIN_FLAG_SPECIAL builtins/gen-helpfiles.c /^#define BUILTIN_FLAG_SPECIAL /;" d file: +BUILTIN_FLAG_SPECIAL builtins/mkbuiltins.c /^#define BUILTIN_FLAG_SPECIAL /;" d file: +BUILTIN_OBJS Makefile.in /^BUILTIN_OBJS = $(DEFDIR)\/alias.o $(DEFDIR)\/bind.o $(DEFDIR)\/break.o \\$/;" m +BUILTIN_SIZEOF builtins_rust/help/src/lib.rs /^macro_rules! BUILTIN_SIZEOF {$/;" M +BUILTIN_SRCDIR Makefile.in /^BUILTIN_SRCDIR=$(srcdir)\/builtins$/;" m +BXOR expr.c /^#define BXOR /;" d file: +BYTE vendor/winapi/src/shared/minwindef.rs /^pub type BYTE = c_uchar;$/;" t +B_EOF input.h /^#define B_EOF /;" d +B_ERROR input.h /^#define B_ERROR /;" d +B_SHAREDBUF input.h /^#define B_SHAREDBUF /;" d +B_TEXT input.h /^#define B_TEXT /;" d +B_UNBUFF input.h /^#define B_UNBUFF /;" d +B_WASBASHINPUT input.h /^#define B_WASBASHINPUT /;" d +BacktraceFrom vendor/thiserror/tests/test_backtrace.rs /^ pub enum BacktraceFrom {$/;" g module:enums +BacktraceFrom vendor/thiserror/tests/test_backtrace.rs /^ pub struct BacktraceFrom {$/;" s module:structs +BackupRead vendor/winapi/src/um/winbase.rs /^ pub fn BackupRead($/;" f +BackupSeek vendor/winapi/src/um/winbase.rs /^ pub fn BackupSeek($/;" f +BackupWrite vendor/winapi/src/um/winbase.rs /^ pub fn BackupWrite($/;" f +BadIter vendor/smallvec/src/tests.rs /^ impl Iterator for BadIter {$/;" c module:insert_many_panic +BadIter vendor/smallvec/src/tests.rs /^ struct BadIter {$/;" s module:insert_many_panic +Bar vendor/bitflags/src/lib.rs /^ pub type Bar = i32;$/;" t module:tests::t1::foo +Bar vendor/pin-project-lite/tests/ui/pin_project/conflict-unpin.rs /^impl Unpin for Bar {} \/\/ Non-conditional Unpin impl$/;" c +BareFnArg vendor/syn/src/gen/clone.rs /^impl Clone for BareFnArg {$/;" c +BareFnArg vendor/syn/src/gen/debug.rs /^impl Debug for BareFnArg {$/;" c +BareFnArg vendor/syn/src/gen/eq.rs /^impl Eq for BareFnArg {}$/;" c +BareFnArg vendor/syn/src/gen/eq.rs /^impl PartialEq for BareFnArg {$/;" c +BareFnArg vendor/syn/src/gen/hash.rs /^impl Hash for BareFnArg {$/;" c +BareFnArg vendor/syn/src/ty.rs /^ impl Parse for BareFnArg {$/;" c module:parsing +BareFnArg vendor/syn/src/ty.rs /^ impl ToTokens for BareFnArg {$/;" c module:printing +Baz vendor/pin-project-lite/tests/ui/pin_project/conflict-unpin.rs /^impl Unpin for Baz {} \/\/ Conditional Unpin impl$/;" c +Beep vendor/winapi/src/um/utilapiset.rs /^ pub fn Beep($/;" f +BeforeEq vendor/syn/src/item.rs /^ BeforeEq,$/;" e enum:parsing::WhereClauseLocation +BeginBufferedAnimation vendor/winapi/src/um/uxtheme.rs /^ pub fn BeginBufferedAnimation($/;" f +BeginBufferedPaint vendor/winapi/src/um/uxtheme.rs /^ pub fn BeginBufferedPaint($/;" f +BeginDeferWindowPos vendor/winapi/src/um/winuser.rs /^ pub fn BeginDeferWindowPos($/;" f +BeginPaint vendor/winapi/src/um/winuser.rs /^ pub fn BeginPaint($/;" f +BeginPanningFeedback vendor/winapi/src/um/uxtheme.rs /^ pub fn BeginPanningFeedback($/;" f +BeginPath vendor/winapi/src/um/wingdi.rs /^ pub fn BeginPath($/;" f +BeginUpdateResourceA vendor/winapi/src/um/winbase.rs /^ pub fn BeginUpdateResourceA($/;" f +BeginUpdateResourceW vendor/winapi/src/um/winbase.rs /^ pub fn BeginUpdateResourceW($/;" f +BgCmd builtins_rust/exec_cmd/src/lib.rs /^ BgCmd,$/;" e enum:CMDType +BgComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for BgComand {$/;" c +BgComand builtins_rust/exec_cmd/src/lib.rs /^struct BgComand;$/;" s +BiLock vendor/futures-util/src/lock/bilock.rs /^impl BiLock {$/;" c +BiLock vendor/futures-util/src/lock/bilock.rs /^pub struct BiLock {$/;" s +BiLockAcquire vendor/futures-util/src/lock/bilock.rs /^impl<'a, T> Future for BiLockAcquire<'a, T> {$/;" c +BiLockAcquire vendor/futures-util/src/lock/bilock.rs /^impl Unpin for BiLockAcquire<'_, T> {}$/;" c +BiLockAcquire vendor/futures-util/src/lock/bilock.rs /^pub struct BiLockAcquire<'a, T> {$/;" s +BiLockGuard vendor/futures-util/src/lock/bilock.rs /^impl DerefMut for BiLockGuard<'_, T> {$/;" c +BiLockGuard vendor/futures-util/src/lock/bilock.rs /^impl BiLockGuard<'_, T> {$/;" c +BiLockGuard vendor/futures-util/src/lock/bilock.rs /^impl Deref for BiLockGuard<'_, T> {$/;" c +BiLockGuard vendor/futures-util/src/lock/bilock.rs /^impl Drop for BiLockGuard<'_, T> {$/;" c +BiLockGuard vendor/futures-util/src/lock/bilock.rs /^pub struct BiLockGuard<'a, T> {$/;" s +BiLockGuard vendor/futures-util/src/lock/bilock.rs /^unsafe impl Sync for BiLockGuard<'_, T> {}$/;" c +Big vendor/futures-util/src/future/join_all.rs /^ Big {$/;" e enum:JoinAllKind +Big vendor/futures-util/src/future/try_join_all.rs /^ Big {$/;" e enum:TryJoinAllKind +BigInt vendor/syn/src/bigint.rs /^impl AddAssign for BigInt {$/;" c +BigInt vendor/syn/src/bigint.rs /^impl BigInt {$/;" c +BigInt vendor/syn/src/bigint.rs /^impl MulAssign for BigInt {$/;" c +BigInt vendor/syn/src/bigint.rs /^pub struct BigInt {$/;" s +BinOp vendor/syn/src/gen/clone.rs /^impl Clone for BinOp {$/;" c +BinOp vendor/syn/src/gen/clone.rs /^impl Copy for BinOp {}$/;" c +BinOp vendor/syn/src/gen/debug.rs /^impl Debug for BinOp {$/;" c +BinOp vendor/syn/src/gen/eq.rs /^impl Eq for BinOp {}$/;" c +BinOp vendor/syn/src/gen/eq.rs /^impl PartialEq for BinOp {$/;" c +BinOp vendor/syn/src/gen/hash.rs /^impl Hash for BinOp {$/;" c +BinOp vendor/syn/src/op.rs /^ impl Parse for BinOp {$/;" c module:parsing +BinOp vendor/syn/src/op.rs /^ impl ToTokens for BinOp {$/;" c module:printing +Binary vendor/thiserror-impl/src/attr.rs /^ Binary,$/;" e enum:Trait +BindCmd builtins_rust/exec_cmd/src/lib.rs /^ BindCmd,$/;" e enum:CMDType +BindComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for BindComand {$/;" c +BindComand builtins_rust/exec_cmd/src/lib.rs /^struct BindComand;$/;" s +BindIoCompletionCallback vendor/winapi/src/um/winbase.rs /^ pub fn BindIoCompletionCallback($/;" f +Binding vendor/syn/src/gen/clone.rs /^impl Clone for Binding {$/;" c +Binding vendor/syn/src/gen/debug.rs /^impl Debug for Binding {$/;" c +Binding vendor/syn/src/gen/eq.rs /^impl Eq for Binding {}$/;" c +Binding vendor/syn/src/gen/eq.rs /^impl PartialEq for Binding {$/;" c +Binding vendor/syn/src/gen/hash.rs /^impl Hash for Binding {$/;" c +Binding vendor/syn/src/path.rs /^ impl Parse for Binding {$/;" c module:parsing +Binding vendor/syn/src/path.rs /^ impl ToTokens for Binding {$/;" c module:printing +BitAnd vendor/syn/src/expr.rs /^ BitAnd,$/;" e enum:parsing::Precedence +BitBlt vendor/winapi/src/um/wingdi.rs /^ pub fn BitBlt($/;" f +BitOr vendor/syn/src/expr.rs /^ BitOr,$/;" e enum:parsing::Precedence +BitXor vendor/syn/src/expr.rs /^ BitXor,$/;" e enum:parsing::Precedence +Blank vendor/fluent-syntax/src/parser/pattern.rs /^ Blank,$/;" e enum:TextElementType +Blarg vendor/memoffset/src/span_of.rs /^ struct Blarg {$/;" s function:tests::span_forms +Block vendor/futures-util/src/io/into_sink.rs /^struct Block {$/;" s +Block vendor/syn/src/gen/clone.rs /^impl Clone for Block {$/;" c +Block vendor/syn/src/gen/debug.rs /^impl Debug for Block {$/;" c +Block vendor/syn/src/gen/eq.rs /^impl Eq for Block {}$/;" c +Block vendor/syn/src/gen/eq.rs /^impl PartialEq for Block {$/;" c +Block vendor/syn/src/gen/hash.rs /^impl Hash for Block {$/;" c +Block vendor/syn/src/stmt.rs /^ impl Block {$/;" c module:parsing +Block vendor/syn/src/stmt.rs /^ impl Parse for Block {$/;" c module:parsing +Block vendor/syn/src/stmt.rs /^ impl ToTokens for Block {$/;" c module:printing +BlockDevice vendor/nix/src/dir.rs /^ BlockDevice,$/;" e enum:Type +BlockInput vendor/winapi/src/um/winuser.rs /^ pub fn BlockInput($/;" f +BlockingStream vendor/futures-executor/src/local_pool.rs /^impl BlockingStream {$/;" c +BlockingStream vendor/futures-executor/src/local_pool.rs /^impl Deref for BlockingStream {$/;" c +BlockingStream vendor/futures-executor/src/local_pool.rs /^impl DerefMut for BlockingStream {$/;" c +BlockingStream vendor/futures-executor/src/local_pool.rs /^impl Iterator for BlockingStream {$/;" c +BlockingStream vendor/futures-executor/src/local_pool.rs /^pub struct BlockingStream {$/;" s +Bluetooth vendor/nix/src/sys/socket/addr.rs /^ Bluetooth = libc::AF_BLUETOOTH,$/;" e enum:AddressFamily +BluetoothAuthenticateDevice vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothAuthenticateDevice($/;" f +BluetoothAuthenticateDeviceEx vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothAuthenticateDeviceEx($/;" f +BluetoothAuthenticateMultipleDevices vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothAuthenticateMultipleDevices($/;" f +BluetoothDisplayDeviceProperties vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothDisplayDeviceProperties($/;" f +BluetoothEnableDiscovery vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothEnableDiscovery($/;" f +BluetoothEnableIncomingConnections vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothEnableIncomingConnections($/;" f +BluetoothEnumerateInstalledServices vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothEnumerateInstalledServices($/;" f +BluetoothFindDeviceClose vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothFindDeviceClose($/;" f +BluetoothFindFirstDevice vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothFindFirstDevice($/;" f +BluetoothFindFirstRadio vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothFindFirstRadio($/;" f +BluetoothFindNextDevice vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothFindNextDevice($/;" f +BluetoothFindNextRadio vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothFindNextRadio($/;" f +BluetoothFindRadioClose vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothFindRadioClose($/;" f +BluetoothGATTAbortReliableWrite vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTAbortReliableWrite($/;" f +BluetoothGATTBeginReliableWrite vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTBeginReliableWrite($/;" f +BluetoothGATTEndReliableWrite vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTEndReliableWrite($/;" f +BluetoothGATTGetCharacteristicValue vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTGetCharacteristicValue($/;" f +BluetoothGATTGetCharacteristics vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTGetCharacteristics($/;" f +BluetoothGATTGetDescriptorValue vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTGetDescriptorValue($/;" f +BluetoothGATTGetDescriptors vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTGetDescriptors($/;" f +BluetoothGATTGetIncludedServices vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTGetIncludedServices($/;" f +BluetoothGATTGetServices vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTGetServices($/;" f +BluetoothGATTRegisterEvent vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTRegisterEvent($/;" f +BluetoothGATTSetCharacteristicValue vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTSetCharacteristicValue($/;" f +BluetoothGATTSetDescriptorValue vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTSetDescriptorValue($/;" f +BluetoothGATTUnregisterEvent vendor/winapi/src/um/bluetoothleapis.rs /^ pub fn BluetoothGATTUnregisterEvent($/;" f +BluetoothGetDeviceInfo vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothGetDeviceInfo($/;" f +BluetoothGetRadioInfo vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothGetRadioInfo($/;" f +BluetoothIsConnectable vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothIsConnectable($/;" f +BluetoothIsDiscoverable vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothIsDiscoverable($/;" f +BluetoothIsVersionAvailable vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothIsVersionAvailable($/;" f +BluetoothRegisterForAuthentication vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothRegisterForAuthentication($/;" f +BluetoothRegisterForAuthenticationEx vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothRegisterForAuthenticationEx($/;" f +BluetoothRemoveDevice vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothRemoveDevice($/;" f +BluetoothSdpEnumAttributes vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothSdpEnumAttributes($/;" f +BluetoothSdpGetAttributeValue vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothSdpGetAttributeValue($/;" f +BluetoothSdpGetContainerElementData vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothSdpGetContainerElementData($/;" f +BluetoothSdpGetElementData vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothSdpGetElementData($/;" f +BluetoothSdpGetString vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothSdpGetString($/;" f +BluetoothSelectDevices vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothSelectDevices($/;" f +BluetoothSelectDevicesFree vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothSelectDevicesFree($/;" f +BluetoothSendAuthenticationResponse vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothSendAuthenticationResponse($/;" f +BluetoothSendAuthenticationResponseEx vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothSendAuthenticationResponseEx($/;" f +BluetoothSetLocalServiceInfo vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothSetLocalServiceInfo($/;" f +BluetoothSetServiceState vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothSetServiceState($/;" f +BluetoothUnregisterAuthentication vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothUnregisterAuthentication($/;" f +BluetoothUpdateDeviceRecord vendor/winapi/src/um/bluetoothapis.rs /^ pub fn BluetoothUpdateDeviceRecord($/;" f +Bomb vendor/futures-util/src/stream/futures_unordered/mod.rs /^ impl Drop for Bomb<'_, Fut> {$/;" c method:FuturesUnordered::poll_next +Bomb vendor/futures-util/src/stream/futures_unordered/mod.rs /^ struct Bomb<'a, Fut> {$/;" s method:FuturesUnordered::poll_next +Bool vendor/syn/src/export.rs /^ pub type Bool = bool;$/;" t module:help +Borrowed vendor/memchr/src/cow.rs /^ Borrowed(&'a [u8]),$/;" e enum:Imp +Both vendor/nix/src/sys/socket/mod.rs /^ Both,$/;" e enum:Shutdown +Both vendor/syn/src/item.rs /^ Both,$/;" e enum:parsing::WhereClauseLocation +BothFinished vendor/futures-util/src/stream/select_with_strategy.rs /^ BothFinished,$/;" e enum:InternalState +BoundLifetimes vendor/syn/src/gen/clone.rs /^impl Clone for BoundLifetimes {$/;" c +BoundLifetimes vendor/syn/src/gen/debug.rs /^impl Debug for BoundLifetimes {$/;" c +BoundLifetimes vendor/syn/src/gen/eq.rs /^impl Eq for BoundLifetimes {}$/;" c +BoundLifetimes vendor/syn/src/gen/eq.rs /^impl PartialEq for BoundLifetimes {$/;" c +BoundLifetimes vendor/syn/src/gen/hash.rs /^impl Hash for BoundLifetimes {$/;" c +BoundLifetimes vendor/syn/src/generics.rs /^ impl Parse for BoundLifetimes {$/;" c module:parsing +BoundLifetimes vendor/syn/src/generics.rs /^ impl ToTokens for BoundLifetimes {$/;" c module:printing +BoundLifetimes vendor/syn/src/generics.rs /^impl Default for BoundLifetimes {$/;" c +BoundedInner vendor/futures-channel/src/mpsc/mod.rs /^impl BoundedInner {$/;" c +BoundedInner vendor/futures-channel/src/mpsc/mod.rs /^struct BoundedInner {$/;" s +BoundedInner vendor/futures-channel/src/mpsc/mod.rs /^unsafe impl Send for BoundedInner {}$/;" c +BoundedInner vendor/futures-channel/src/mpsc/mod.rs /^unsafe impl Sync for BoundedInner {}$/;" c +BoundedSenderInner vendor/futures-channel/src/mpsc/mod.rs /^impl BoundedSenderInner {$/;" c +BoundedSenderInner vendor/futures-channel/src/mpsc/mod.rs /^impl Clone for BoundedSenderInner {$/;" c +BoundedSenderInner vendor/futures-channel/src/mpsc/mod.rs /^impl Drop for BoundedSenderInner {$/;" c +BoundedSenderInner vendor/futures-channel/src/mpsc/mod.rs /^impl Unpin for BoundedSenderInner {}$/;" c +BoundedSenderInner vendor/futures-channel/src/mpsc/mod.rs /^struct BoundedSenderInner {$/;" s +Box vendor/futures-core/src/future.rs /^ impl FusedFuture for Box {$/;" c module:if_alloc +Box vendor/futures-core/src/stream.rs /^ impl FusedStream for Box {$/;" c module:if_alloc +Box vendor/futures-core/src/stream.rs /^ impl Stream for Box {$/;" c module:if_alloc +Box vendor/futures-io/src/lib.rs /^ impl AsyncBufRead for Box {$/;" c module:if_std +Box vendor/futures-io/src/lib.rs /^ impl AsyncRead for Box {$/;" c module:if_std +Box vendor/futures-io/src/lib.rs /^ impl AsyncSeek for Box {$/;" c module:if_std +Box vendor/futures-io/src/lib.rs /^ impl AsyncWrite for Box {$/;" c module:if_std +Box vendor/futures-sink/src/lib.rs /^ impl + Unpin, Item> Sink for alloc::boxed::Box {$/;" c module:if_alloc +Box vendor/futures-task/src/future_obj.rs /^ unsafe impl<'a, T, F> UnsafeFutureObj<'a, T> for Box$/;" c module:if_alloc +Box vendor/futures-task/src/future_obj.rs /^ unsafe impl<'a, T: 'a> UnsafeFutureObj<'a, T> for Box + 'a> {$/;" c module:if_alloc +Box vendor/futures-task/src/future_obj.rs /^ unsafe impl<'a, T: 'a> UnsafeFutureObj<'a, T> for Box + Send + 'a> {$/;" c module:if_alloc +Box vendor/futures-task/src/spawn.rs /^ impl LocalSpawn for Box {$/;" c module:if_alloc +Box vendor/futures-task/src/spawn.rs /^ impl Spawn for Box {$/;" c module:if_alloc +Box vendor/quote/src/to_tokens.rs /^impl ToTokens for Box {$/;" c +Box vendor/stable_deref_trait/src/lib.rs /^unsafe impl StableDeref for Box {}$/;" c +Box vendor/syn/src/parse.rs /^impl Parse for Box {$/;" c +Box vendor/syn/tests/common/eq.rs /^impl SpanlessEq for Box {$/;" c +BoxDynErrorBacktrace vendor/thiserror/tests/test_backtrace.rs /^ pub struct BoxDynErrorBacktrace {$/;" s module:structs +BoxFuture vendor/futures-core/src/future.rs /^pub type BoxFuture<'a, T> = Pin + Send + 'a>>;$/;" t +BoxStream vendor/futures-core/src/stream.rs /^pub type BoxStream<'a, T> = Pin + Send + 'a>>;$/;" t +BoxedSource vendor/thiserror/tests/test_source.rs /^pub struct BoxedSource {$/;" s +Brace vendor/proc-macro2/src/lib.rs /^ Brace,$/;" e enum:Delimiter +Brace vendor/syn/src/token.rs /^impl Token for Brace {$/;" c +Braced vendor/thiserror/tests/test_display.rs /^ Braced { id: usize },$/;" e enum:test_enum::Error +Braced vendor/thiserror/tests/test_display.rs /^ Braced { r#fn: &'static str },$/;" e enum:test_raw_enum::Error +Braced vendor/thiserror/tests/test_display.rs /^ Braced { r#func: &'static str },$/;" e enum:test_raw_conflict::Error +Braced vendor/thiserror/tests/test_error.rs /^ Braced {$/;" e enum:EnumError +BracedError vendor/thiserror/tests/test_error.rs /^struct BracedError {$/;" s +Braces vendor/syn/src/group.rs /^pub struct Braces<'a> {$/;" s +Bracket vendor/proc-macro2/src/lib.rs /^ Bracket,$/;" e enum:Delimiter +Bracket vendor/syn/src/token.rs /^impl Token for Bracket {$/;" c +Brackets vendor/syn/src/group.rs /^pub struct Brackets<'a> {$/;" s +BracketsVisitor vendor/syn/tests/test_precedence.rs /^ impl MutVisitor for BracketsVisitor {$/;" c function:librustc_brackets +BracketsVisitor vendor/syn/tests/test_precedence.rs /^ struct BracketsVisitor {$/;" s function:librustc_brackets +BreakCmd builtins_rust/exec_cmd/src/lib.rs /^ BreakCmd,$/;" e enum:CMDType +BreakComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for BreakComand {$/;" c +BreakComand builtins_rust/exec_cmd/src/lib.rs /^struct BreakComand;$/;" s +BreakRules vendor/syn/tests/test_parse_buffer.rs /^ impl Parse for BreakRules {$/;" c function:smuggled_speculative_cursor_between_brackets +BreakRules vendor/syn/tests/test_parse_buffer.rs /^ impl Parse for BreakRules {$/;" c function:smuggled_speculative_cursor_between_sources +BreakRules vendor/syn/tests/test_parse_buffer.rs /^ impl Parse for BreakRules {$/;" c function:smuggled_speculative_cursor_into_brackets +BreakRules vendor/syn/tests/test_parse_buffer.rs /^ struct BreakRules;$/;" s function:smuggled_speculative_cursor_between_brackets +BreakRules vendor/syn/tests/test_parse_buffer.rs /^ struct BreakRules;$/;" s function:smuggled_speculative_cursor_between_sources +BreakRules vendor/syn/tests/test_parse_buffer.rs /^ struct BreakRules;$/;" s function:smuggled_speculative_cursor_into_brackets +Breaking change policy vendor/libc/CONTRIBUTING.md /^## Breaking change policy$/;" s chapter:Contributing to `libc` +Bridge vendor/nix/src/sys/socket/addr.rs /^ Bridge = libc::AF_BRIDGE,$/;" e enum:AddressFamily +BringWindowToTop vendor/winapi/src/um/winuser.rs /^ pub fn BringWindowToTop($/;" f +BroadcastSystemMessageA vendor/winapi/src/um/winuser.rs /^ pub fn BroadcastSystemMessageA($/;" f +BroadcastSystemMessageExA vendor/winapi/src/um/winuser.rs /^ pub fn BroadcastSystemMessageExA($/;" f +BroadcastSystemMessageExW vendor/winapi/src/um/winuser.rs /^ pub fn BroadcastSystemMessageExW($/;" f +BroadcastSystemMessageW vendor/winapi/src/um/winuser.rs /^ pub fn BroadcastSystemMessageW($/;" f +Broken vendor/thiserror/tests/ui/source-enum-not-error.rs /^ Broken {$/;" e enum:ErrorEnum +BucketContents builtins_rust/alias/src/lib.rs /^pub type BucketContents = bucket_contents;$/;" t +BufReader vendor/futures-util/src/io/buf_reader.rs /^impl AsyncSeek for BufReader {$/;" c +BufReader vendor/futures-util/src/io/buf_reader.rs /^impl BufReader {$/;" c +BufReader vendor/futures-util/src/io/buf_reader.rs /^impl AsyncBufRead for BufReader {$/;" c +BufReader vendor/futures-util/src/io/buf_reader.rs /^impl AsyncRead for BufReader {$/;" c +BufReader vendor/futures-util/src/io/buf_reader.rs /^impl BufReader {$/;" c +BufReader vendor/futures-util/src/io/buf_reader.rs /^impl AsyncWrite for BufReader {$/;" c +BufReader vendor/futures-util/src/io/buf_reader.rs /^impl fmt::Debug for BufReader {$/;" c +BufWriter vendor/futures-util/src/io/buf_writer.rs /^impl AsyncBufRead for BufWriter {$/;" c +BufWriter vendor/futures-util/src/io/buf_writer.rs /^impl AsyncRead for BufWriter {$/;" c +BufWriter vendor/futures-util/src/io/buf_writer.rs /^impl AsyncSeek for BufWriter {$/;" c +BufWriter vendor/futures-util/src/io/buf_writer.rs /^impl AsyncWrite for BufWriter {$/;" c +BufWriter vendor/futures-util/src/io/buf_writer.rs /^impl BufWriter {$/;" c +BufWriter vendor/futures-util/src/io/buf_writer.rs /^impl fmt::Debug for BufWriter {$/;" c +Buffer vendor/futures-util/src/sink/buffer.rs /^impl FusedStream for Buffer$/;" c +Buffer vendor/futures-util/src/sink/buffer.rs /^impl Stream for Buffer$/;" c +Buffer vendor/futures-util/src/sink/buffer.rs /^impl, Item> Buffer {$/;" c +Buffer vendor/futures-util/src/sink/buffer.rs /^impl, Item> Sink for Buffer {$/;" c +BufferUnordered vendor/futures-util/src/stream/stream/buffer_unordered.rs /^impl Sink for BufferUnordered$/;" c +BufferUnordered vendor/futures-util/src/stream/stream/buffer_unordered.rs /^impl BufferUnordered$/;" c +BufferUnordered vendor/futures-util/src/stream/stream/buffer_unordered.rs /^impl FusedStream for BufferUnordered$/;" c +BufferUnordered vendor/futures-util/src/stream/stream/buffer_unordered.rs /^impl Stream for BufferUnordered$/;" c +BufferUnordered vendor/futures-util/src/stream/stream/buffer_unordered.rs /^impl fmt::Debug for BufferUnordered$/;" c +Buffered vendor/futures-util/src/stream/stream/buffered.rs /^impl Sink for Buffered$/;" c +Buffered vendor/futures-util/src/stream/stream/buffered.rs /^impl Buffered$/;" c +Buffered vendor/futures-util/src/stream/stream/buffered.rs /^impl Stream for Buffered$/;" c +Buffered vendor/futures-util/src/stream/stream/buffered.rs /^impl fmt::Debug for Buffered$/;" c +BufferedPaintClear vendor/winapi/src/um/uxtheme.rs /^ pub fn BufferedPaintClear($/;" f +BufferedPaintInit vendor/winapi/src/um/uxtheme.rs /^ pub fn BufferedPaintInit() -> HRESULT;$/;" f +BufferedPaintRenderAnimation vendor/winapi/src/um/uxtheme.rs /^ pub fn BufferedPaintRenderAnimation($/;" f +BufferedPaintSetAlpha vendor/winapi/src/um/uxtheme.rs /^ pub fn BufferedPaintSetAlpha($/;" f +BufferedPaintStopAllAnimations vendor/winapi/src/um/uxtheme.rs /^ pub fn BufferedPaintStopAllAnimations($/;" f +BufferedPaintUnInit vendor/winapi/src/um/uxtheme.rs /^ pub fn BufferedPaintUnInit() -> HRESULT;$/;" f +Build dependencies README.md /^### Build dependencies$/;" S chapter:utshell +Build from source code README.md /^### Build from source code$/;" S section:utshell""Installation +BuildCommDCBA vendor/winapi/src/um/winbase.rs /^ pub fn BuildCommDCBA($/;" f +BuildCommDCBAndTimeoutsA vendor/winapi/src/um/winbase.rs /^ pub fn BuildCommDCBAndTimeoutsA($/;" f +BuildCommDCBAndTimeoutsW vendor/winapi/src/um/winbase.rs /^ pub fn BuildCommDCBAndTimeoutsW($/;" f +BuildCommDCBW vendor/winapi/src/um/winbase.rs /^ pub fn BuildCommDCBW($/;" f +BuildExplicitAccessWithNameA vendor/winapi/src/um/aclapi.rs /^ pub fn BuildExplicitAccessWithNameA($/;" f +BuildExplicitAccessWithNameW vendor/winapi/src/um/aclapi.rs /^ pub fn BuildExplicitAccessWithNameW($/;" f +BuildImpersonateExplicitAccessWithNameA vendor/winapi/src/um/aclapi.rs /^ pub fn BuildImpersonateExplicitAccessWithNameA($/;" f +BuildImpersonateExplicitAccessWithNameW vendor/winapi/src/um/aclapi.rs /^ pub fn BuildImpersonateExplicitAccessWithNameW($/;" f +BuildImpersonateTrusteeA vendor/winapi/src/um/aclapi.rs /^ pub fn BuildImpersonateTrusteeA($/;" f +BuildImpersonateTrusteeW vendor/winapi/src/um/aclapi.rs /^ pub fn BuildImpersonateTrusteeW($/;" f +BuildSecurityDescriptorA vendor/winapi/src/um/aclapi.rs /^ pub fn BuildSecurityDescriptorA($/;" f +BuildSecurityDescriptorW vendor/winapi/src/um/aclapi.rs /^ pub fn BuildSecurityDescriptorW($/;" f +BuildTrusteeWithNameA vendor/winapi/src/um/aclapi.rs /^ pub fn BuildTrusteeWithNameA($/;" f +BuildTrusteeWithNameW vendor/winapi/src/um/aclapi.rs /^ pub fn BuildTrusteeWithNameW($/;" f +BuildTrusteeWithObjectsAndNameA vendor/winapi/src/um/aclapi.rs /^ pub fn BuildTrusteeWithObjectsAndNameA($/;" f +BuildTrusteeWithObjectsAndNameW vendor/winapi/src/um/aclapi.rs /^ pub fn BuildTrusteeWithObjectsAndNameW($/;" f +BuildTrusteeWithObjectsAndSidA vendor/winapi/src/um/aclapi.rs /^ pub fn BuildTrusteeWithObjectsAndSidA($/;" f +BuildTrusteeWithObjectsAndSidW vendor/winapi/src/um/aclapi.rs /^ pub fn BuildTrusteeWithObjectsAndSidW($/;" f +BuildTrusteeWithSidA vendor/winapi/src/um/aclapi.rs /^ pub fn BuildTrusteeWithSidA($/;" f +BuildTrusteeWithSidW vendor/winapi/src/um/aclapi.rs /^ pub fn BuildTrusteeWithSidW($/;" f +BuiltinCmd builtins_rust/exec_cmd/src/lib.rs /^ BuiltinCmd,$/;" e enum:CMDType +BuiltinComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for BuiltinComand {$/;" c +BuiltinComand builtins_rust/exec_cmd/src/lib.rs /^struct BuiltinComand;$/;" s +Bundle vendor/fluent-fallback/src/errors.rs /^ Bundle {$/;" e enum:LocalizationError +BundleGenerator vendor/fluent-fallback/src/generator.rs /^pub trait BundleGenerator {$/;" i +BundleIter vendor/fluent-fallback/examples/simple-fallback.rs /^impl Iterator for BundleIter {$/;" c +BundleIter vendor/fluent-fallback/examples/simple-fallback.rs /^impl futures::Stream for BundleIter {$/;" c +BundleIter vendor/fluent-fallback/examples/simple-fallback.rs /^struct BundleIter {$/;" s +BundleIter vendor/fluent-fallback/tests/localization_test.rs /^impl Iterator for BundleIter {$/;" c +BundleIter vendor/fluent-fallback/tests/localization_test.rs /^impl futures::Stream for BundleIter {$/;" c +BundleIter vendor/fluent-fallback/tests/localization_test.rs /^struct BundleIter {$/;" s +BundleIter vendor/fluent-resmgr/src/resource_manager.rs /^impl Iterator for BundleIter {$/;" c +BundleIter vendor/fluent-resmgr/src/resource_manager.rs /^impl Stream for BundleIter {$/;" c +BundleIter vendor/fluent-resmgr/src/resource_manager.rs /^pub struct BundleIter {$/;" s +BundleIterator vendor/fluent-fallback/src/generator.rs /^pub trait BundleIterator {$/;" i +BundleStream vendor/fluent-fallback/src/generator.rs /^pub trait BundleStream {$/;" i +Bundles vendor/fluent-fallback/examples/simple-fallback.rs /^impl BundleGenerator for Bundles {$/;" c +Bundles vendor/fluent-fallback/examples/simple-fallback.rs /^struct Bundles {$/;" s +Bundles vendor/fluent-fallback/src/bundles.rs /^impl Bundles$/;" c +Bundles vendor/fluent-fallback/src/bundles.rs /^pub struct Bundles(BundlesInner)$/;" s +BundlesInner vendor/fluent-fallback/src/bundles.rs /^pub enum BundlesInner$/;" g +C vendor/syn/tests/common/eq.rs /^impl SpanlessEq for (A, B, C) {$/;" c +CACHE_IMPORTSTR variables.h /^#define CACHE_IMPORTSTR(/;" d +CALID vendor/winapi/src/um/winnls.rs /^pub type CALID = DWORD;$/;" t +CALLBACK_READ_RETURN lib/readline/callback.c /^#define CALLBACK_READ_RETURN(/;" d file: +CALLED vendor/once_cell/tests/it.rs /^ static CALLED: AtomicUsize = AtomicUsize::new(0);$/;" v function:sync::lazy_default +CALLED vendor/once_cell/tests/it.rs /^ static CALLED: AtomicUsize = AtomicUsize::new(0);$/;" v function:unsync::lazy_default +CALTYPE vendor/winapi/src/um/winnls.rs /^pub type CALTYPE = DWORD;$/;" t +CANSI_STRING vendor/winapi/src/shared/ntdef.rs /^pub type CANSI_STRING = STRING;$/;" t +CARDINAL vendor/intl_pluralrules/src/lib.rs /^ CARDINAL,$/;" e enum:PluralRuleType +CASEMOD_ATTRS configure.ac /^AC_DEFINE(CASEMOD_ATTRS)$/;" d +CASEMOD_CAPCASE config-top.h /^#define CASEMOD_CAPCASE$/;" d +CASEMOD_EXPANSIONS configure.ac /^AC_DEFINE(CASEMOD_EXPANSIONS)$/;" d +CASEMOD_TOGGLECASE config-top.h /^#define CASEMOD_TOGGLECASE$/;" d +CASEPAT_FALLTHROUGH command.h /^#define CASEPAT_FALLTHROUGH /;" d +CASEPAT_TESTNEXT command.h /^#define CASEPAT_TESTNEXT /;" d +CASE_CAPITALIZE externs.h /^#define CASE_CAPITALIZE /;" d +CASE_CAPITALIZE lib/sh/casemod.c /^#define CASE_CAPITALIZE /;" d file: +CASE_COM builtins_rust/kill/src/intercdep.rs /^pub type CASE_COM = case_com;$/;" t +CASE_COM builtins_rust/setattr/src/intercdep.rs /^pub type CASE_COM = case_com;$/;" t +CASE_COM command.h /^} CASE_COM;$/;" t typeref:struct:case_com +CASE_COM r_bash/src/lib.rs /^pub type CASE_COM = case_com;$/;" t +CASE_COM r_glob/src/lib.rs /^pub type CASE_COM = case_com;$/;" t +CASE_COM r_readline/src/lib.rs /^pub type CASE_COM = case_com;$/;" t +CASE_HELPOPT builtins/common.h /^#define CASE_HELPOPT /;" d +CASE_LOWER externs.h /^#define CASE_LOWER /;" d +CASE_LOWER lib/sh/casemod.c /^#define CASE_LOWER /;" d file: +CASE_LOWFIRST externs.h /^#define CASE_LOWFIRST /;" d +CASE_LOWFIRST lib/sh/casemod.c /^#define CASE_LOWFIRST /;" d file: +CASE_NOOP lib/sh/casemod.c /^#define CASE_NOOP /;" d file: +CASE_TOGGLE externs.h /^#define CASE_TOGGLE /;" d +CASE_TOGGLE lib/sh/casemod.c /^#define CASE_TOGGLE /;" d file: +CASE_TOGGLEALL externs.h /^#define CASE_TOGGLEALL /;" d +CASE_TOGGLEALL lib/sh/casemod.c /^#define CASE_TOGGLEALL /;" d file: +CASE_UNCAP externs.h /^#define CASE_UNCAP /;" d +CASE_UNCAP lib/sh/casemod.c /^#define CASE_UNCAP /;" d file: +CASE_UPFIRST externs.h /^#define CASE_UPFIRST /;" d +CASE_UPFIRST lib/sh/casemod.c /^#define CASE_UPFIRST /;" d file: +CASE_UPPER externs.h /^#define CASE_UPPER /;" d +CASE_UPPER lib/sh/casemod.c /^#define CASE_UPPER /;" d file: +CASE_USEWORDS externs.h /^#define CASE_USEWORDS /;" d +CASE_USEWORDS lib/sh/casemod.c /^#define CASE_USEWORDS /;" d file: +CA_ALIAS builtins_rust/complete/src/lib.rs /^macro_rules! CA_ALIAS {$/;" M +CA_ALIAS pcomplete.h /^#define CA_ALIAS /;" d +CA_ARRAYVAR builtins_rust/complete/src/lib.rs /^macro_rules! CA_ARRAYVAR {$/;" M +CA_ARRAYVAR pcomplete.h /^#define CA_ARRAYVAR /;" d +CA_BINDING builtins_rust/complete/src/lib.rs /^macro_rules! CA_BINDING {$/;" M +CA_BINDING pcomplete.h /^#define CA_BINDING /;" d +CA_BUILTIN builtins_rust/complete/src/lib.rs /^macro_rules! CA_BUILTIN {$/;" M +CA_BUILTIN pcomplete.h /^#define CA_BUILTIN /;" d +CA_COMMAND builtins_rust/complete/src/lib.rs /^macro_rules! CA_COMMAND {$/;" M +CA_COMMAND pcomplete.h /^#define CA_COMMAND /;" d +CA_DIRECTORY builtins_rust/complete/src/lib.rs /^macro_rules! CA_DIRECTORY {$/;" M +CA_DIRECTORY pcomplete.h /^#define CA_DIRECTORY /;" d +CA_DISABLED builtins_rust/complete/src/lib.rs /^macro_rules! CA_DISABLED {$/;" M +CA_DISABLED pcomplete.h /^#define CA_DISABLED /;" d +CA_ENABLED builtins_rust/complete/src/lib.rs /^macro_rules! CA_ENABLED {$/;" M +CA_ENABLED pcomplete.h /^#define CA_ENABLED /;" d +CA_EXPORT builtins_rust/complete/src/lib.rs /^macro_rules! CA_EXPORT {$/;" M +CA_EXPORT pcomplete.h /^#define CA_EXPORT /;" d +CA_FILE builtins_rust/complete/src/lib.rs /^macro_rules! CA_FILE {$/;" M +CA_FILE pcomplete.h /^#define CA_FILE /;" d +CA_FUNCTION builtins_rust/complete/src/lib.rs /^macro_rules! CA_FUNCTION {$/;" M +CA_FUNCTION pcomplete.h /^#define CA_FUNCTION /;" d +CA_GROUP builtins_rust/complete/src/lib.rs /^macro_rules! CA_GROUP {$/;" M +CA_GROUP pcomplete.h /^#define CA_GROUP /;" d +CA_HELPTOPIC builtins_rust/complete/src/lib.rs /^macro_rules! CA_HELPTOPIC {$/;" M +CA_HELPTOPIC pcomplete.h /^#define CA_HELPTOPIC /;" d +CA_HOSTNAME builtins_rust/complete/src/lib.rs /^macro_rules! CA_HOSTNAME {$/;" M +CA_HOSTNAME pcomplete.h /^#define CA_HOSTNAME /;" d +CA_JOB builtins_rust/complete/src/lib.rs /^macro_rules! CA_JOB {$/;" M +CA_JOB pcomplete.h /^#define CA_JOB /;" d +CA_KEYWORD builtins_rust/complete/src/lib.rs /^macro_rules! CA_KEYWORD {$/;" M +CA_KEYWORD pcomplete.h /^#define CA_KEYWORD /;" d +CA_RUNNING builtins_rust/complete/src/lib.rs /^macro_rules! CA_RUNNING {$/;" M +CA_RUNNING pcomplete.h /^#define CA_RUNNING /;" d +CA_SERVICE builtins_rust/complete/src/lib.rs /^macro_rules! CA_SERVICE {$/;" M +CA_SERVICE pcomplete.h /^#define CA_SERVICE /;" d +CA_SETOPT builtins_rust/complete/src/lib.rs /^macro_rules! CA_SETOPT {$/;" M +CA_SETOPT pcomplete.h /^#define CA_SETOPT /;" d +CA_SHOPT builtins_rust/complete/src/lib.rs /^macro_rules! CA_SHOPT {$/;" M +CA_SHOPT pcomplete.h /^#define CA_SHOPT /;" d +CA_SIGNAL builtins_rust/complete/src/lib.rs /^macro_rules! CA_SIGNAL {$/;" M +CA_SIGNAL pcomplete.h /^#define CA_SIGNAL /;" d +CA_STOPPED builtins_rust/complete/src/lib.rs /^macro_rules! CA_STOPPED {$/;" M +CA_STOPPED pcomplete.h /^#define CA_STOPPED /;" d +CA_USER builtins_rust/complete/src/lib.rs /^macro_rules! CA_USER {$/;" M +CA_USER pcomplete.h /^#define CA_USER /;" d +CA_VARIABLE builtins_rust/complete/src/lib.rs /^macro_rules! CA_VARIABLE {$/;" M +CA_VARIABLE pcomplete.h /^#define CA_VARIABLE /;" d +CBACKQ syntax.h /^#define CBACKQ /;" d +CBLANK syntax.h /^#define CBLANK /;" d +CBPCLIPDATA vendor/winapi/src/shared/wtypes.rs /^pub fn CBPCLIPDATA(clipdata: CLIPDATA) -> ULONG {$/;" f +CBSDQUOTE syntax.h /^#define CBSDQUOTE /;" d +CBSHDOC syntax.h /^#define CBSHDOC /;" d +CC Makefile.in /^CC = @CC@$/;" m +CC builtins/Makefile.in /^CC = @CC@$/;" m +CC lib/glob/Makefile.in /^CC = @CC@$/;" m +CC lib/intl/Makefile.in /^CC = @CC@$/;" m +CC lib/malloc/Makefile.in /^CC = @CC@$/;" m +CC lib/readline/Makefile.in /^CC = @CC@$/;" m +CC lib/sh/Makefile.in /^CC = @CC@$/;" m +CC lib/termcap/Makefile.in /^CC = @CC@$/;" m +CC lib/tilde/Makefile.in /^CC = @CC@$/;" m +CC support/Makefile.in /^CC = @CC@$/;" m +CCCryptorStatus vendor/libc/src/unix/bsd/apple/mod.rs /^pub type CCCryptorStatus = i32;$/;" t +CCERT_STORE_PROV_FIND_INFO vendor/winapi/src/um/wincrypt.rs /^pub type CCERT_STORE_PROV_FIND_INFO = CERT_STORE_PROV_FIND_INFO;$/;" t +CCFLAGS Makefile.in /^CCFLAGS = $(ADDON_CFLAGS) $(BASE_CCFLAGS) ${PROFILE_FLAGS} $(CPPFLAGS) $(CFLAGS) -Wl,--copy-dt-n/;" m +CCFLAGS builtins/Makefile.in /^CCFLAGS = ${ADDON_CFLAGS} $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS)$/;" m +CCFLAGS lib/glob/Makefile.in /^CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) ${INCLUDES} $(CPPFLAGS) \\$/;" m +CCFLAGS lib/malloc/Makefile.in /^CCFLAGS = ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) \\$/;" m +CCFLAGS lib/readline/Makefile.in /^CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(APP_CFLAGS) $(CPPFLAGS) ${INCLUDES} \\$/;" m +CCFLAGS lib/sh/Makefile.in /^CCFLAGS = ${ADDON_CFLAGS} ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) \\$/;" m +CCFLAGS lib/termcap/Makefile.in /^CCFLAGS = $(CFLAGS) $(DEFS) $(CPPFLAGS) ${INCLUDES}$/;" m +CCFLAGS lib/tilde/Makefile.in /^CCFLAGS = ${ASAN_CFLAGS} $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) \\$/;" m +CCFLAGS support/Makefile.in /^CCFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS)$/;" m +CCFLAGS_FOR_BUILD Makefile.in /^CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD)$/;" m +CCFLAGS_FOR_BUILD builtins/Makefile.in /^CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD)$/;" m +CCFLAGS_FOR_BUILD support/Makefile.in /^CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD)$/;" m +CCHAR vendor/winapi/src/shared/ntdef.rs /^pub type CCHAR = c_char;$/;" t +CCHAR vendor/winapi/src/um/winnt.rs /^pub type CCHAR = c_char;$/;" t +CCRNGStatus vendor/libc/src/unix/bsd/apple/mod.rs /^pub type CCRNGStatus = ::CCCryptorStatus;$/;" t +CCRandomGenerateBytes vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn CCRandomGenerateBytes(bytes: *mut ::c_void, size: ::size_t) -> ::CCRNGStatus;$/;" f +CCStatus vendor/libc/src/unix/bsd/apple/mod.rs /^pub type CCStatus = i32;$/;" t +CC_ALNUM lib/glob/smatch.c /^ CC_ASCII, CC_ALNUM, CC_ALPHA, CC_BLANK, CC_CNTRL, CC_DIGIT, CC_GRAPH,$/;" e enum:char_class file: +CC_ALPHA lib/glob/smatch.c /^ CC_ASCII, CC_ALNUM, CC_ALPHA, CC_BLANK, CC_CNTRL, CC_DIGIT, CC_GRAPH,$/;" e enum:char_class file: +CC_ASCII lib/glob/smatch.c /^ CC_ASCII, CC_ALNUM, CC_ALPHA, CC_BLANK, CC_CNTRL, CC_DIGIT, CC_GRAPH,$/;" e enum:char_class file: +CC_BLANK lib/glob/smatch.c /^ CC_ASCII, CC_ALNUM, CC_ALPHA, CC_BLANK, CC_CNTRL, CC_DIGIT, CC_GRAPH,$/;" e enum:char_class file: +CC_CNTRL lib/glob/smatch.c /^ CC_ASCII, CC_ALNUM, CC_ALPHA, CC_BLANK, CC_CNTRL, CC_DIGIT, CC_GRAPH,$/;" e enum:char_class file: +CC_DIGIT lib/glob/smatch.c /^ CC_ASCII, CC_ALNUM, CC_ALPHA, CC_BLANK, CC_CNTRL, CC_DIGIT, CC_GRAPH,$/;" e enum:char_class file: +CC_FOR_BUILD Makefile.in /^CC_FOR_BUILD = @CC_FOR_BUILD@$/;" m +CC_FOR_BUILD builtins/Makefile.in /^CC_FOR_BUILD = @CC_FOR_BUILD@$/;" m +CC_FOR_BUILD configure.ac /^AC_SUBST(CC_FOR_BUILD)$/;" s +CC_FOR_BUILD support/Makefile.in /^CC_FOR_BUILD = @CC_FOR_BUILD@$/;" m +CC_GRAPH lib/glob/smatch.c /^ CC_ASCII, CC_ALNUM, CC_ALPHA, CC_BLANK, CC_CNTRL, CC_DIGIT, CC_GRAPH,$/;" e enum:char_class file: +CC_LOWER lib/glob/smatch.c /^ CC_LOWER, CC_PRINT, CC_PUNCT, CC_SPACE, CC_UPPER, CC_WORD, CC_XDIGIT$/;" e enum:char_class file: +CC_NO_CLASS lib/glob/smatch.c /^ CC_NO_CLASS = 0,$/;" e enum:char_class file: +CC_PRINT lib/glob/smatch.c /^ CC_LOWER, CC_PRINT, CC_PUNCT, CC_SPACE, CC_UPPER, CC_WORD, CC_XDIGIT$/;" e enum:char_class file: +CC_PUNCT lib/glob/smatch.c /^ CC_LOWER, CC_PRINT, CC_PUNCT, CC_SPACE, CC_UPPER, CC_WORD, CC_XDIGIT$/;" e enum:char_class file: +CC_SPACE lib/glob/smatch.c /^ CC_LOWER, CC_PRINT, CC_PUNCT, CC_SPACE, CC_UPPER, CC_WORD, CC_XDIGIT$/;" e enum:char_class file: +CC_UPPER lib/glob/smatch.c /^ CC_LOWER, CC_PRINT, CC_PUNCT, CC_SPACE, CC_UPPER, CC_WORD, CC_XDIGIT$/;" e enum:char_class file: +CC_WORD lib/glob/smatch.c /^ CC_LOWER, CC_PRINT, CC_PUNCT, CC_SPACE, CC_UPPER, CC_WORD, CC_XDIGIT$/;" e enum:char_class file: +CC_XDIGIT lib/glob/smatch.c /^ CC_LOWER, CC_PRINT, CC_PUNCT, CC_SPACE, CC_UPPER, CC_WORD, CC_XDIGIT$/;" e enum:char_class file: +CDESC_ABSPATH builtins/common.h /^#define CDESC_ABSPATH /;" d +CDESC_ABSPATH builtins_rust/type/src/lib.rs /^macro_rules! CDESC_ABSPATH {$/;" M +CDESC_ALL builtins/common.h /^#define CDESC_ALL /;" d +CDESC_ALL builtins_rust/type/src/lib.rs /^macro_rules! CDESC_ALL {$/;" M +CDESC_FORCE_PATH builtins/common.h /^#define CDESC_FORCE_PATH /;" d +CDESC_FORCE_PATH builtins_rust/type/src/lib.rs /^macro_rules! CDESC_FORCE_PATH {$/;" M +CDESC_NOFUNCS builtins/common.h /^#define CDESC_NOFUNCS /;" d +CDESC_NOFUNCS builtins_rust/type/src/lib.rs /^macro_rules! CDESC_NOFUNCS {$/;" M +CDESC_PATH_ONLY builtins/common.h /^#define CDESC_PATH_ONLY /;" d +CDESC_PATH_ONLY builtins_rust/type/src/lib.rs /^macro_rules! CDESC_PATH_ONLY {$/;" M +CDESC_REUSABLE builtins/common.h /^#define CDESC_REUSABLE /;" d +CDESC_REUSABLE builtins_rust/type/src/lib.rs /^macro_rules! CDESC_REUSABLE {$/;" M +CDESC_SHORTDESC builtins/common.h /^#define CDESC_SHORTDESC /;" d +CDESC_SHORTDESC builtins_rust/type/src/lib.rs /^macro_rules! CDESC_SHORTDESC {$/;" M +CDESC_STDPATH builtins/common.h /^#define CDESC_STDPATH /;" d +CDESC_STDPATH builtins_rust/type/src/lib.rs /^macro_rules! CDESC_STDPATH {$/;" M +CDESC_TYPE builtins/common.h /^#define CDESC_TYPE /;" d +CDESC_TYPE builtins_rust/type/src/lib.rs /^macro_rules! CDESC_TYPE {$/;" M +CD_COMPLAINS config-top.h /^#define CD_COMPLAINS$/;" d +CELL vendor/once_cell/examples/bench.rs /^static CELL: OnceCell = OnceCell::new();$/;" v +CELL vendor/once_cell/examples/bench_acquire.rs /^static CELL: OnceCell = OnceCell::new();$/;" v +CELL vendor/once_cell/tests/it.rs /^ static CELL: OnceCell = OnceCell::with_value(12);$/;" v function:sync::once_cell_with_value +CELLS vendor/once_cell/examples/test_synchronization.rs /^static CELLS: OnceCell>> = OnceCell::new();$/;" v +CEN_AUDIENCE lib/intl/loadinfo.h /^#define CEN_AUDIENCE /;" d +CEN_REVISION lib/intl/loadinfo.h /^#define CEN_REVISION /;" d +CEN_SPECIAL lib/intl/loadinfo.h /^#define CEN_SPECIAL /;" d +CEN_SPECIFIC lib/intl/loadinfo.h /^#define CEN_SPECIFIC /;" d +CEN_SPONSOR lib/intl/loadinfo.h /^#define CEN_SPONSOR /;" d +CERT_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type CERT_BLOB = CRYPTOAPI_BLOB;$/;" t +CERT_CHAIN_FIND_BY_ISSUER_PARA vendor/winapi/src/um/wincrypt.rs /^pub type CERT_CHAIN_FIND_BY_ISSUER_PARA = CERT_CHAIN_FIND_ISSUER_PARA;$/;" t +CERT_ENHKEY_USAGE vendor/winapi/src/um/wincrypt.rs /^pub type CERT_ENHKEY_USAGE = CTL_USAGE;$/;" t +CERT_NAME_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type CERT_NAME_BLOB = CRYPTOAPI_BLOB;$/;" t +CERT_RDN_VALUE_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type CERT_RDN_VALUE_BLOB = CRYPTOAPI_BLOB;$/;" t +CERT_SUBJECT_INFO_ACCESS vendor/winapi/src/um/wincrypt.rs /^pub type CERT_SUBJECT_INFO_ACCESS = CERT_AUTHORITY_INFO_ACCESS;$/;" t +CEXP syntax.h /^#define CEXP /;" d +CFLAGS Makefile.in /^CFLAGS = @CFLAGS@ -Wl,--copy-dt-needed-entries$/;" m +CFLAGS builtins/Makefile.in /^CFLAGS = @CFLAGS@$/;" m +CFLAGS configure.ac /^AC_SUBST(CFLAGS)$/;" s +CFLAGS lib/glob/Makefile.in /^CFLAGS = @CFLAGS@$/;" m +CFLAGS lib/intl/Makefile.in /^CFLAGS = @CFLAGS@$/;" m +CFLAGS lib/malloc/Makefile.in /^CFLAGS = @CFLAGS@$/;" m +CFLAGS lib/readline/Makefile.in /^CFLAGS = @CFLAGS@$/;" m +CFLAGS lib/readline/examples/Makefile /^CFLAGS = -g -I..\/.. -I.. -DREADLINE_LIBRARY$/;" m +CFLAGS lib/sh/Makefile.in /^CFLAGS = @CFLAGS@$/;" m +CFLAGS lib/termcap/Makefile.in /^CFLAGS = @CFLAGS@$/;" m +CFLAGS lib/tilde/Makefile.in /^CFLAGS = @CFLAGS@$/;" m +CFLAGS support/Makefile.in /^CFLAGS = @CFLAGS@$/;" m +CFLAGS_FOR_BUILD Makefile.in /^CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ @CROSS_COMPILE@$/;" m +CFLAGS_FOR_BUILD builtins/Makefile.in /^CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ @CROSS_COMPILE@$/;" m +CFLAGS_FOR_BUILD configure.ac /^AC_SUBST(CFLAGS_FOR_BUILD)$/;" s +CFLAGS_FOR_BUILD support/Makefile.in /^CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@$/;" m +CGLOB syntax.h /^#define CGLOB /;" d +CHAIN lib/malloc/malloc.c /^#define CHAIN(/;" d file: +CHANGELOG.md vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +CHANGELOG.md vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +CHANGELOG.md vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +CHANGELOG.md vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +CHANGELOG.md vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +CHANGELOG.md vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +CHANGELOG.md vendor/slab/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"ae4c54789e1055543317a6812ac11644d0586883dee8f790119e4cef244b1b8e","Car/;" s object:files +CHANGELOG.md vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +CHANGELOG.md vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +CHAR lib/glob/glob.c /^#define CHAR /;" d file: +CHAR lib/glob/gmisc.c /^#define CHAR /;" d file: +CHAR lib/glob/smatch.c /^# define CHAR /;" d file: +CHAR lib/glob/smatch.c /^#define CHAR /;" d file: +CHAR vendor/winapi/src/shared/ntdef.rs /^pub type CHAR = c_char;$/;" t +CHAR vendor/winapi/src/um/winnt.rs /^pub type CHAR = c_char;$/;" t +CHAR_BIT general.h /^# define CHAR_BIT /;" d +CHAR_BIT include/typemax.h /^# define CHAR_BIT /;" d +CHAR_BIT lib/readline/shell.c /^# define CHAR_BIT /;" d file: +CHAR_BIT lib/sh/mktime.c /^#define CHAR_BIT /;" d file: +CHAR_MAX general.h /^# define CHAR_MAX /;" d +CHECKHASH_DEFAULT config-top.h /^#define CHECKHASH_DEFAULT /;" d +CHECKWINSIZE_DEFAULT config-top.h /^#define CHECKWINSIZE_DEFAULT /;" d +CHECK_ALRM quit.h /^#define CHECK_ALRM /;" d +CHECK_HELPOPT builtins/common.h /^#define CHECK_HELPOPT(/;" d +CHECK_HELPOPT builtins_rust/caller/src/lib.rs /^macro_rules! CHECK_HELPOPT {$/;" M +CHECK_HELPOPT builtins_rust/fg_bg/src/lib.rs /^macro_rules! CHECK_HELPOPT {$/;" M +CHECK_HELPOPT builtins_rust/type/src/lib.rs /^macro_rules! CHECK_HELPOPT {$/;" M +CHECK_INV_LBREAKS lib/readline/display.c /^#define CHECK_INV_LBREAKS(/;" d file: +CHECK_LPOS lib/readline/display.c /^#define CHECK_LPOS(/;" d file: +CHECK_SIGTERM quit.h /^#define CHECK_SIGTERM /;" d +CHECK_STRING_OVERRUN subst.c /^#define CHECK_STRING_OVERRUN(/;" d file: +CHECK_TERMSIG quit.h /^#define CHECK_TERMSIG /;" d +CHECK_TERMSIG r_jobs/src/lib.rs /^macro_rules! CHECK_TERMSIG {$/;" M +CHECK_WAIT_INTR quit.h /^#define CHECK_WAIT_INTR /;" d +CHECK_WAIT_INTR r_jobs/src/lib.rs /^macro_rules! CHECK_WAIT_INTR {$/;" M +CHECK_XTRACE_FP print_cmd.c /^#define CHECK_XTRACE_FP /;" d file: +CHECK_XTRACE_FP r_print_cmd/src/lib.rs /^macro_rules! CHECK_XTRACE_FP{$/;" M +CIMTYPE vendor/winapi/src/um/wbemcli.rs /^pub type CIMTYPE = c_long;$/;" t +CLDR_VERSION vendor/intl_pluralrules/src/rules.rs /^pub static CLDR_VERSION: usize = 37;$/;" v +CLDR_VERSION vendor/unic-langid-impl/src/likelysubtags/tables.rs /^pub static CLDR_VERSION: &str = "36";$/;" v +CLEARSTAK builtins_rust/pushd/src/lib.rs /^macro_rules! CLEARSTAK {$/;" M +CLEAR_EXPORTSTR variables.h /^#define CLEAR_EXPORTSTR(/;" d +CLIPFORMAT vendor/winapi/src/shared/wtypes.rs /^pub type CLIPFORMAT = WORD;$/;" t +CLIPFORMAT_UserFree vendor/winapi/src/um/wincodecsdk.rs /^ pub fn CLIPFORMAT_UserFree($/;" f +CLIPFORMAT_UserMarshal vendor/winapi/src/um/wincodecsdk.rs /^ pub fn CLIPFORMAT_UserMarshal($/;" f +CLIPFORMAT_UserSize vendor/winapi/src/um/wincodecsdk.rs /^ pub fn CLIPFORMAT_UserSize($/;" f +CLIPFORMAT_UserUnmarshal vendor/winapi/src/um/wincodecsdk.rs /^ pub fn CLIPFORMAT_UserUnmarshal($/;" f +CLK_TCK include/posixtime.h /^# define CLK_TCK /;" d +CLK_TCK lib/sh/clktck.c /^# define CLK_TCK /;" d file: +CLOBBERING_REDIRECT command.h /^#define CLOBBERING_REDIRECT(/;" d +CLOCK_MONOTONIC vendor/libc/src/wasi.rs /^pub static CLOCK_MONOTONIC: clockid_t = unsafe { clockid_t(ptr_addr_of!(_CLOCK_MONOTONIC)) };$/;" v +CLOCK_PROCESS_CPUTIME_ID vendor/libc/src/wasi.rs /^pub static CLOCK_PROCESS_CPUTIME_ID: clockid_t =$/;" v +CLOCK_REALTIME vendor/libc/src/wasi.rs /^pub static CLOCK_REALTIME: clockid_t = unsafe { clockid_t(ptr_addr_of!(_CLOCK_REALTIME)) };$/;" v +CLOCK_THREAD_CPUTIME_ID vendor/libc/src/wasi.rs /^pub static CLOCK_THREAD_CPUTIME_ID: clockid_t =$/;" v +CLONG vendor/winapi/src/shared/ntdef.rs /^pub type CLONG = ULONG;$/;" t +CLRINTERRUPT quit.h /^#define CLRINTERRUPT /;" d +CLRINTERRUPT r_jobs/src/lib.rs /^macro_rules! CLRINTERRUPT {$/;" M +CLSID vendor/winapi/src/shared/guiddef.rs /^pub type CLSID = GUID;$/;" t +CLSIDFromProgID vendor/winapi/src/um/combaseapi.rs /^ pub fn CLSIDFromProgID($/;" f +CLSIDFromProgIDEx vendor/winapi/src/um/combaseapi.rs /^ pub fn CLSIDFromProgIDEx($/;" f +CLSIDFromString vendor/winapi/src/um/combaseapi.rs /^ pub fn CLSIDFromString($/;" f +CLSID_SpDataKey vendor/winapi/src/um/sapiddk51.rs /^ pub static CLSID_SpDataKey: CLSID;$/;" v +CLSID_SpGramCompBackend vendor/winapi/src/um/sapiddk51.rs /^ pub static CLSID_SpGramCompBackend: CLSID;$/;" v +CLSID_SpGrammarCompiler vendor/winapi/src/um/sapiddk51.rs /^ pub static CLSID_SpGrammarCompiler: CLSID;$/;" v +CLSID_SpITNProcessor vendor/winapi/src/um/sapiddk51.rs /^ pub static CLSID_SpITNProcessor: CLSID;$/;" v +CLSID_SpObjectTokenEnum vendor/winapi/src/um/sapiddk51.rs /^ pub static CLSID_SpObjectTokenEnum: CLSID;$/;" v +CLSID_SpPhoneticAlphabetConverter vendor/winapi/src/um/sapi53.rs /^ pub static CLSID_SpPhoneticAlphabetConverter: CLSID;$/;" v +CLSID_SpPhraseBuilder vendor/winapi/src/um/sapiddk51.rs /^ pub static CLSID_SpPhraseBuilder: CLSID;$/;" v +CLSID_SpShortcut vendor/winapi/src/um/sapi53.rs /^ pub static CLSID_SpShortcut: CLSID;$/;" v +CLSID_SpW3CGrammarCompiler vendor/winapi/src/um/sapiddk.rs /^ pub static CLSID_SpW3CGrammarCompiler: CLSID;$/;" v +CLSIZE lib/malloc/getpagesize.h /^# define CLSIZE /;" d +CMDERR_BADCONN command.h /^#define CMDERR_BADCONN /;" d +CMDERR_BADJUMP command.h /^#define CMDERR_BADJUMP /;" d +CMDERR_BADTYPE command.h /^#define CMDERR_BADTYPE /;" d +CMDERR_DEFAULT command.h /^#define CMDERR_DEFAULT /;" d +CMDERR_LAST command.h /^#define CMDERR_LAST /;" d +CMDSRCH_HASH findcmd.h /^#define CMDSRCH_HASH /;" d +CMDSRCH_STDPATH findcmd.h /^#define CMDSRCH_STDPATH /;" d +CMDSRCH_TEMPENV findcmd.h /^#define CMDSRCH_TEMPENV /;" d +CMDType builtins_rust/exec_cmd/src/lib.rs /^enum CMDType {$/;" g +CMD_AMPERSAND command.h /^#define CMD_AMPERSAND /;" d +CMD_COMMAND_BUILTIN command.h /^#define CMD_COMMAND_BUILTIN /;" d +CMD_COPROC_SUBSHELL command.h /^#define CMD_COPROC_SUBSHELL /;" d +CMD_FORCE_SUBSHELL command.h /^#define CMD_FORCE_SUBSHELL /;" d +CMD_IGNORE_RETURN command.h /^#define CMD_IGNORE_RETURN /;" d +CMD_INHIBIT_EXPANSION builtins_rust/jobs/src/lib.rs /^macro_rules! CMD_INHIBIT_EXPANSION {$/;" M +CMD_INHIBIT_EXPANSION command.h /^#define CMD_INHIBIT_EXPANSION /;" d +CMD_INVERT_RETURN command.h /^#define CMD_INVERT_RETURN /;" d +CMD_IS_DIR bashline.c /^#define CMD_IS_DIR(/;" d file: +CMD_LASTPIPE command.h /^#define CMD_LASTPIPE /;" d +CMD_NO_FORK command.h /^#define CMD_NO_FORK /;" d +CMD_NO_FUNCTIONS command.h /^#define CMD_NO_FUNCTIONS /;" d +CMD_STDIN_REDIR command.h /^#define CMD_STDIN_REDIR /;" d +CMD_STDPATH command.h /^#define CMD_STDPATH /;" d +CMD_TIME_PIPELINE command.h /^#define CMD_TIME_PIPELINE /;" d +CMD_TIME_POSIX command.h /^#define CMD_TIME_POSIX /;" d +CMD_TRY_OPTIMIZING command.h /^#define CMD_TRY_OPTIMIZING /;" d +CMD_UNTIL execute_cmd.c /^#define CMD_UNTIL /;" d file: +CMD_WANT_SUBSHELL command.h /^#define CMD_WANT_SUBSHELL /;" d +CMD_WHILE execute_cmd.c /^#define CMD_WHILE /;" d file: +CMPOP2 lib/intl/plural.c /^ CMPOP2 = 259,$/;" e enum:yytokentype file: +CMPOP2 lib/intl/plural.c /^#define CMPOP2 /;" d file: +CMPSTART lib/readline/bind.c /^#define CMPSTART(/;" d file: +CMP_WaitNoPendingInstallEvents vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CMP_WaitNoPendingInstallEvents($/;" f +CMSGHDR vendor/winapi/src/shared/ws2def.rs /^pub type CMSGHDR = WSACMSGHDR;$/;" t +CMSG_ATTR vendor/winapi/src/um/wincrypt.rs /^pub type CMSG_ATTR = CRYPT_ATTRIBUTES;$/;" t +CMYK vendor/winapi/src/um/wingdi.rs /^pub fn CMYK(c: BYTE, m: BYTE, y: BYTE, k: BYTE) -> COLORREF {$/;" f +CM_Add_Empty_Log_Conf vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Add_Empty_Log_Conf($/;" f +CM_Add_Empty_Log_Conf_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Add_Empty_Log_Conf_Ex($/;" f +CM_Add_IDA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Add_IDA($/;" f +CM_Add_IDW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Add_IDW($/;" f +CM_Add_ID_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Add_ID_ExA($/;" f +CM_Add_ID_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Add_ID_ExW($/;" f +CM_Add_Range vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Add_Range($/;" f +CM_Add_Res_Des vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Add_Res_Des($/;" f +CM_Add_Res_Des_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Add_Res_Des_Ex($/;" f +CM_Connect_MachineA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Connect_MachineA($/;" f +CM_Connect_MachineW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Connect_MachineW($/;" f +CM_Create_DevNodeA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Create_DevNodeA($/;" f +CM_Create_DevNodeW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Create_DevNodeW($/;" f +CM_Create_DevNode_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Create_DevNode_ExA($/;" f +CM_Create_DevNode_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Create_DevNode_ExW($/;" f +CM_Create_Range_List vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Create_Range_List($/;" f +CM_Delete_Class_Key vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Delete_Class_Key($/;" f +CM_Delete_Class_Key_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Delete_Class_Key_Ex($/;" f +CM_Delete_DevNode_Key vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Delete_DevNode_Key($/;" f +CM_Delete_DevNode_Key_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Delete_DevNode_Key_Ex($/;" f +CM_Delete_Device_Interface_KeyA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Delete_Device_Interface_KeyA($/;" f +CM_Delete_Device_Interface_KeyW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Delete_Device_Interface_KeyW($/;" f +CM_Delete_Device_Interface_Key_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Delete_Device_Interface_Key_ExA($/;" f +CM_Delete_Device_Interface_Key_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Delete_Device_Interface_Key_ExW($/;" f +CM_Delete_Range vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Delete_Range($/;" f +CM_Detect_Resource_Conflict vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Detect_Resource_Conflict($/;" f +CM_Detect_Resource_Conflict_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Detect_Resource_Conflict_Ex($/;" f +CM_Disable_DevNode vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Disable_DevNode($/;" f +CM_Disable_DevNode_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Disable_DevNode_Ex($/;" f +CM_Disconnect_Machine vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Disconnect_Machine($/;" f +CM_Dup_Range_List vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Dup_Range_List($/;" f +CM_Enable_DevNode vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Enable_DevNode($/;" f +CM_Enable_DevNode_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Enable_DevNode_Ex($/;" f +CM_Enumerate_Classes vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Enumerate_Classes($/;" f +CM_Enumerate_Classes_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Enumerate_Classes_Ex($/;" f +CM_Enumerate_EnumeratorsA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Enumerate_EnumeratorsA($/;" f +CM_Enumerate_EnumeratorsW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Enumerate_EnumeratorsW($/;" f +CM_Enumerate_Enumerators_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Enumerate_Enumerators_ExA($/;" f +CM_Enumerate_Enumerators_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Enumerate_Enumerators_ExW($/;" f +CM_Find_Range vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Find_Range($/;" f +CM_First_Range vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_First_Range($/;" f +CM_Free_Log_Conf vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Free_Log_Conf($/;" f +CM_Free_Log_Conf_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Free_Log_Conf_Ex($/;" f +CM_Free_Log_Conf_Handle vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Free_Log_Conf_Handle($/;" f +CM_Free_Range_List vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Free_Range_List($/;" f +CM_Free_Res_Des vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Free_Res_Des($/;" f +CM_Free_Res_Des_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Free_Res_Des_Ex($/;" f +CM_Free_Res_Des_Handle vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Free_Res_Des_Handle($/;" f +CM_Free_Resource_Conflict_Handle vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Free_Resource_Conflict_Handle($/;" f +CM_Get_Child vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Child($/;" f +CM_Get_Child_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Child_Ex($/;" f +CM_Get_Class_Key_NameA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Class_Key_NameA($/;" f +CM_Get_Class_Key_NameW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Class_Key_NameW($/;" f +CM_Get_Class_Key_Name_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Class_Key_Name_ExA($/;" f +CM_Get_Class_Key_Name_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Class_Key_Name_ExW($/;" f +CM_Get_Class_NameA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Class_NameA($/;" f +CM_Get_Class_NameW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Class_NameW($/;" f +CM_Get_Class_Name_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Class_Name_ExA($/;" f +CM_Get_Class_Name_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Class_Name_ExW($/;" f +CM_Get_Class_Registry_PropertyA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Class_Registry_PropertyA($/;" f +CM_Get_Class_Registry_PropertyW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Class_Registry_PropertyW($/;" f +CM_Get_Depth vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Depth($/;" f +CM_Get_Depth_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Depth_Ex($/;" f +CM_Get_DevNode_Custom_PropertyA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_DevNode_Custom_PropertyA($/;" f +CM_Get_DevNode_Custom_PropertyW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_DevNode_Custom_PropertyW($/;" f +CM_Get_DevNode_Custom_Property_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_DevNode_Custom_Property_ExA($/;" f +CM_Get_DevNode_Custom_Property_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_DevNode_Custom_Property_ExW($/;" f +CM_Get_DevNode_PropertyExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_DevNode_PropertyExW($/;" f +CM_Get_DevNode_PropertyW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_DevNode_PropertyW($/;" f +CM_Get_DevNode_Registry_PropertyA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_DevNode_Registry_PropertyA($/;" f +CM_Get_DevNode_Registry_PropertyW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_DevNode_Registry_PropertyW($/;" f +CM_Get_DevNode_Registry_Property_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_DevNode_Registry_Property_ExA($/;" f +CM_Get_DevNode_Registry_Property_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_DevNode_Registry_Property_ExW($/;" f +CM_Get_DevNode_Status vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_DevNode_Status($/;" f +CM_Get_DevNode_Status_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_DevNode_Status_Ex($/;" f +CM_Get_Device_IDA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_IDA($/;" f +CM_Get_Device_IDW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_IDW($/;" f +CM_Get_Device_ID_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_ID_ExA($/;" f +CM_Get_Device_ID_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_ID_ExW($/;" f +CM_Get_Device_ID_ListA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_ID_ListA($/;" f +CM_Get_Device_ID_ListW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_ID_ListW($/;" f +CM_Get_Device_ID_List_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_ID_List_ExA($/;" f +CM_Get_Device_ID_List_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_ID_List_ExW($/;" f +CM_Get_Device_ID_List_SizeA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_ID_List_SizeA($/;" f +CM_Get_Device_ID_List_SizeW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_ID_List_SizeW($/;" f +CM_Get_Device_ID_List_Size_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_ID_List_Size_ExA($/;" f +CM_Get_Device_ID_List_Size_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_ID_List_Size_ExW($/;" f +CM_Get_Device_ID_Size vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_ID_Size($/;" f +CM_Get_Device_ID_Size_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_ID_Size_Ex($/;" f +CM_Get_Device_Interface_AliasA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_AliasA($/;" f +CM_Get_Device_Interface_AliasW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_AliasW($/;" f +CM_Get_Device_Interface_Alias_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_Alias_ExA($/;" f +CM_Get_Device_Interface_Alias_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_Alias_ExW($/;" f +CM_Get_Device_Interface_ListA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_ListA($/;" f +CM_Get_Device_Interface_ListW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_ListW($/;" f +CM_Get_Device_Interface_List_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_List_ExA($/;" f +CM_Get_Device_Interface_List_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_List_ExW($/;" f +CM_Get_Device_Interface_List_SizeA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_List_SizeA($/;" f +CM_Get_Device_Interface_List_SizeW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_List_SizeW($/;" f +CM_Get_Device_Interface_List_Size_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_List_Size_ExA($/;" f +CM_Get_Device_Interface_List_Size_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_List_Size_ExW($/;" f +CM_Get_Device_Interface_PropertyExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_PropertyExW($/;" f +CM_Get_Device_Interface_PropertyW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Device_Interface_PropertyW($/;" f +CM_Get_First_Log_Conf vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_First_Log_Conf($/;" f +CM_Get_First_Log_Conf_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_First_Log_Conf_Ex($/;" f +CM_Get_Global_State vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Global_State($/;" f +CM_Get_Global_State_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Global_State_Ex($/;" f +CM_Get_HW_Prof_FlagsA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_HW_Prof_FlagsA($/;" f +CM_Get_HW_Prof_FlagsW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_HW_Prof_FlagsW($/;" f +CM_Get_HW_Prof_Flags_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_HW_Prof_Flags_ExA($/;" f +CM_Get_HW_Prof_Flags_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_HW_Prof_Flags_ExW($/;" f +CM_Get_Hardware_Profile_InfoA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Hardware_Profile_InfoA($/;" f +CM_Get_Hardware_Profile_InfoW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Hardware_Profile_InfoW($/;" f +CM_Get_Hardware_Profile_Info_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Hardware_Profile_Info_ExA($/;" f +CM_Get_Hardware_Profile_Info_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Hardware_Profile_Info_ExW($/;" f +CM_Get_Log_Conf_Priority vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Log_Conf_Priority($/;" f +CM_Get_Log_Conf_Priority_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Log_Conf_Priority_Ex($/;" f +CM_Get_Next_Log_Conf vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Next_Log_Conf($/;" f +CM_Get_Next_Log_Conf_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Next_Log_Conf_Ex($/;" f +CM_Get_Next_Res_Des vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Next_Res_Des($/;" f +CM_Get_Next_Res_Des_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Next_Res_Des_Ex($/;" f +CM_Get_Parent vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Parent($/;" f +CM_Get_Parent_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Parent_Ex($/;" f +CM_Get_Res_Des_Data vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Res_Des_Data($/;" f +CM_Get_Res_Des_Data_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Res_Des_Data_Ex($/;" f +CM_Get_Res_Des_Data_Size vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Res_Des_Data_Size($/;" f +CM_Get_Res_Des_Data_Size_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Res_Des_Data_Size_Ex($/;" f +CM_Get_Resource_Conflict_Count vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Resource_Conflict_Count($/;" f +CM_Get_Resource_Conflict_DetailsA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Resource_Conflict_DetailsA($/;" f +CM_Get_Resource_Conflict_DetailsW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Resource_Conflict_DetailsW($/;" f +CM_Get_Sibling vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Sibling($/;" f +CM_Get_Sibling_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Sibling_Ex($/;" f +CM_Get_Version vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Version() -> WORD;$/;" f +CM_Get_Version_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Get_Version_Ex($/;" f +CM_Intersect_Range_List vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Intersect_Range_List($/;" f +CM_Invert_Range_List vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Invert_Range_List($/;" f +CM_Is_Dock_Station_Present vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Is_Dock_Station_Present($/;" f +CM_Is_Dock_Station_Present_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Is_Dock_Station_Present_Ex($/;" f +CM_Is_Version_Available vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Is_Version_Available($/;" f +CM_Is_Version_Available_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Is_Version_Available_Ex($/;" f +CM_Locate_DevNodeA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Locate_DevNodeA($/;" f +CM_Locate_DevNodeW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Locate_DevNodeW($/;" f +CM_Locate_DevNode_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Locate_DevNode_ExA($/;" f +CM_Locate_DevNode_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Locate_DevNode_ExW($/;" f +CM_Merge_Range_List vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Merge_Range_List($/;" f +CM_Modify_Res_Des vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Modify_Res_Des($/;" f +CM_Modify_Res_Des_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Modify_Res_Des_Ex($/;" f +CM_Move_DevNode vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Move_DevNode($/;" f +CM_Move_DevNode_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Move_DevNode_Ex($/;" f +CM_Next_Range vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Next_Range($/;" f +CM_Open_Class_KeyA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Open_Class_KeyA($/;" f +CM_Open_Class_KeyW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Open_Class_KeyW($/;" f +CM_Open_Class_Key_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Open_Class_Key_ExA($/;" f +CM_Open_Class_Key_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Open_Class_Key_ExW($/;" f +CM_Open_DevNode_Key vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Open_DevNode_Key($/;" f +CM_Open_DevNode_Key_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Open_DevNode_Key_Ex($/;" f +CM_Open_Device_Interface_KeyA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Open_Device_Interface_KeyA($/;" f +CM_Open_Device_Interface_KeyW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Open_Device_Interface_KeyW($/;" f +CM_Open_Device_Interface_Key_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Open_Device_Interface_Key_ExA($/;" f +CM_Open_Device_Interface_Key_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Open_Device_Interface_Key_ExW($/;" f +CM_Query_And_Remove_SubTreeA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Query_And_Remove_SubTreeA($/;" f +CM_Query_And_Remove_SubTreeW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Query_And_Remove_SubTreeW($/;" f +CM_Query_And_Remove_SubTree_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Query_And_Remove_SubTree_ExA($/;" f +CM_Query_And_Remove_SubTree_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Query_And_Remove_SubTree_ExW($/;" f +CM_Query_Arbitrator_Free_Data vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Query_Arbitrator_Free_Data($/;" f +CM_Query_Arbitrator_Free_Data_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Query_Arbitrator_Free_Data_Ex($/;" f +CM_Query_Arbitrator_Free_Size vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Query_Arbitrator_Free_Size($/;" f +CM_Query_Arbitrator_Free_Size_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Query_Arbitrator_Free_Size_Ex($/;" f +CM_Query_Remove_SubTree vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Query_Remove_SubTree($/;" f +CM_Query_Remove_SubTree_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Query_Remove_SubTree_Ex($/;" f +CM_Query_Resource_Conflict_List vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Query_Resource_Conflict_List($/;" f +CM_Reenumerate_DevNode vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Reenumerate_DevNode($/;" f +CM_Reenumerate_DevNode_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Reenumerate_DevNode_Ex($/;" f +CM_Register_Device_Driver vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Register_Device_Driver($/;" f +CM_Register_Device_Driver_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Register_Device_Driver_Ex($/;" f +CM_Register_Device_InterfaceA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Register_Device_InterfaceA($/;" f +CM_Register_Device_InterfaceW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Register_Device_InterfaceW($/;" f +CM_Register_Device_Interface_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Register_Device_Interface_ExA($/;" f +CM_Register_Device_Interface_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Register_Device_Interface_ExW($/;" f +CM_Remove_SubTree vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Remove_SubTree($/;" f +CM_Remove_SubTree_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Remove_SubTree_Ex($/;" f +CM_Request_Device_EjectA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Request_Device_EjectA($/;" f +CM_Request_Device_EjectW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Request_Device_EjectW($/;" f +CM_Request_Device_Eject_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Request_Device_Eject_ExA($/;" f +CM_Request_Device_Eject_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Request_Device_Eject_ExW($/;" f +CM_Request_Eject_PC vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Request_Eject_PC() -> CONFIGRET;$/;" f +CM_Request_Eject_PC_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Request_Eject_PC_Ex($/;" f +CM_Run_Detection vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Run_Detection($/;" f +CM_Run_Detection_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Run_Detection_Ex($/;" f +CM_Set_Class_Registry_PropertyA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_Class_Registry_PropertyA($/;" f +CM_Set_Class_Registry_PropertyW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_Class_Registry_PropertyW($/;" f +CM_Set_DevNode_Problem vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_DevNode_Problem($/;" f +CM_Set_DevNode_Problem_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_DevNode_Problem_Ex($/;" f +CM_Set_DevNode_Registry_PropertyA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_DevNode_Registry_PropertyA($/;" f +CM_Set_DevNode_Registry_PropertyW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_DevNode_Registry_PropertyW($/;" f +CM_Set_DevNode_Registry_Property_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_DevNode_Registry_Property_ExA($/;" f +CM_Set_DevNode_Registry_Property_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_DevNode_Registry_Property_ExW($/;" f +CM_Set_HW_Prof vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_HW_Prof($/;" f +CM_Set_HW_Prof_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_HW_Prof_Ex($/;" f +CM_Set_HW_Prof_FlagsA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_HW_Prof_FlagsA($/;" f +CM_Set_HW_Prof_FlagsW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_HW_Prof_FlagsW($/;" f +CM_Set_HW_Prof_Flags_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_HW_Prof_Flags_ExA($/;" f +CM_Set_HW_Prof_Flags_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Set_HW_Prof_Flags_ExW($/;" f +CM_Setup_DevNode vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Setup_DevNode($/;" f +CM_Setup_DevNode_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Setup_DevNode_Ex($/;" f +CM_Test_Range_Available vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Test_Range_Available($/;" f +CM_Uninstall_DevNode vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Uninstall_DevNode($/;" f +CM_Uninstall_DevNode_Ex vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Uninstall_DevNode_Ex($/;" f +CM_Unregister_Device_InterfaceA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Unregister_Device_InterfaceA($/;" f +CM_Unregister_Device_InterfaceW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Unregister_Device_InterfaceW($/;" f +CM_Unregister_Device_Interface_ExA vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Unregister_Device_Interface_ExA($/;" f +CM_Unregister_Device_Interface_ExW vendor/winapi/src/um/cfgmgr32.rs /^ pub fn CM_Unregister_Device_Interface_ExW($/;" f +CODE_OF_CONDUCT.md vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +CODE_OF_CONDUCT.md vendor/rustc-hash/.cargo-checksum.json /^{"files":{"CODE_OF_CONDUCT.md":"edca092fde496419a9f1ba640048aa0270b62dfea576cd3175f0b53e3c230470/;" s object:files +COL expr.c /^#define COL /;" d file: +COLLEQUIV lib/glob/smatch.c /^#define COLLEQUIV(/;" d file: +COLLSYM lib/glob/smatch.c /^#define COLLSYM /;" d file: +COLOR16 vendor/winapi/src/um/wingdi.rs /^pub type COLOR16 = c_ushort;$/;" t +COLORREF vendor/winapi/src/shared/windef.rs /^pub type COLORREF = DWORD;$/;" t +COLORSOBJ lib/readline/Makefile.in /^COLORSOBJ = colors.o parse-colors.o$/;" m +COLOR_EXT_TYPE lib/readline/colors.h /^ } COLOR_EXT_TYPE;$/;" t typeref:struct:_color_ext_type +COLOR_EXT_TYPE r_readline/src/lib.rs /^pub type COLOR_EXT_TYPE = _color_ext_type;$/;" t +COLOR_SUPPORT lib/readline/rlconf.h /^#define COLOR_SUPPORT$/;" d +COLS execute_cmd.c /^static int LINES, COLS, tabsize;$/;" v typeref:typename:int file: +COMBINE_MAX lib/malloc/malloc.c /^#define COMBINE_MAX /;" d file: +COMBINE_MIN lib/malloc/malloc.c /^#define COMBINE_MIN /;" d file: +COMMA expr.c /^#define COMMA /;" d file: +COMMAND builtins_rust/cd/src/lib.rs /^pub struct COMMAND {$/;" s +COMMAND builtins_rust/command/src/lib.rs /^pub type COMMAND = command;$/;" t +COMMAND builtins_rust/common/src/lib.rs /^pub struct COMMAND {$/;" s +COMMAND builtins_rust/complete/src/lib.rs /^pub struct COMMAND {$/;" s +COMMAND builtins_rust/declare/src/lib.rs /^pub struct COMMAND {$/;" s +COMMAND builtins_rust/fc/src/lib.rs /^pub struct COMMAND {$/;" s +COMMAND builtins_rust/fg_bg/src/lib.rs /^pub struct COMMAND {$/;" s +COMMAND builtins_rust/getopts/src/lib.rs /^pub struct COMMAND {$/;" s +COMMAND builtins_rust/jobs/src/lib.rs /^pub struct COMMAND {$/;" s +COMMAND builtins_rust/kill/src/intercdep.rs /^pub type COMMAND = command;$/;" t +COMMAND builtins_rust/pushd/src/lib.rs /^pub struct COMMAND {$/;" s +COMMAND builtins_rust/setattr/src/intercdep.rs /^pub type COMMAND = command;$/;" t +COMMAND builtins_rust/source/src/lib.rs /^pub struct COMMAND {$/;" s +COMMAND builtins_rust/type/src/lib.rs /^pub struct COMMAND {$/;" s +COMMAND command.h /^} COMMAND;$/;" t typeref:struct:command +COMMAND lib/readline/examples/fileman.c /^} COMMAND;$/;" t typeref:struct:__anonbfd4ee390108 file: +COMMAND r_bash/src/lib.rs /^pub type COMMAND = command;$/;" t +COMMAND r_glob/src/lib.rs /^pub type COMMAND = command;$/;" t +COMMAND r_readline/src/lib.rs /^pub type COMMAND = command;$/;" t +COMMAND_SEPARATORS bashline.c /^#define COMMAND_SEPARATORS /;" d file: +COMMAND_SEPARATORS_PLUS_WS bashline.c /^#define COMMAND_SEPARATORS_PLUS_WS /;" d file: +COMMAND_TIMING configure.ac /^AC_DEFINE(COMMAND_TIMING)$/;" d +COMPILE lib/intl/Makefile.in /^COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)$/;" m +COMPLETE_BSQUOTE bashline.c /^#define COMPLETE_BSQUOTE /;" d file: +COMPLETE_DQUOTE bashline.c /^#define COMPLETE_DQUOTE /;" d file: +COMPLETE_HASH_BUCKETS pcomplib.c /^#define COMPLETE_HASH_BUCKETS /;" d file: +COMPLETE_SQUOTE bashline.c /^#define COMPLETE_SQUOTE /;" d file: +COMPSPEC builtins_rust/complete/src/lib.rs /^pub struct COMPSPEC {$/;" s +COMPSPEC pcomplete.h /^} COMPSPEC;$/;" t typeref:struct:compspec +COMPSPEC r_bash/src/lib.rs /^pub type COMPSPEC = compspec;$/;" t +COND expr.c /^#define COND /;" d file: +CONDITION_VARIABLE vendor/winapi/src/um/synchapi.rs /^pub type CONDITION_VARIABLE = RTL_CONDITION_VARIABLE;$/;" t +CONDVAR_ID vendor/libc/src/vxworks/mod.rs /^pub type CONDVAR_ID = ::OBJ_HANDLE;$/;" t +COND_AND command.h /^#define COND_AND /;" d +COND_BINARY command.h /^#define COND_BINARY /;" d +COND_COM builtins_rust/kill/src/intercdep.rs /^pub type COND_COM = cond_com;$/;" t +COND_COM builtins_rust/setattr/src/intercdep.rs /^pub type COND_COM = cond_com;$/;" t +COND_COM command.h /^} COND_COM;$/;" t typeref:struct:cond_com +COND_COM r_bash/src/lib.rs /^pub type COND_COM = cond_com;$/;" t +COND_COM r_glob/src/lib.rs /^pub type COND_COM = cond_com;$/;" t +COND_COM r_readline/src/lib.rs /^pub type COND_COM = cond_com;$/;" t +COND_COMMAND configure.ac /^AC_DEFINE(COND_COMMAND)$/;" d +COND_EXPR command.h /^#define COND_EXPR /;" d +COND_OR command.h /^#define COND_OR /;" d +COND_REGEXP config.h.in /^#define COND_REGEXP$/;" d file: +COND_REGEXP configure.ac /^AC_DEFINE(COND_REGEXP)$/;" d +COND_TERM command.h /^#define COND_TERM /;" d +COND_UNARY command.h /^#define COND_UNARY /;" d +CONFIGRET vendor/winapi/src/um/cfgmgr32.rs /^pub type CONFIGRET = RETURN_TYPE;$/;" t +CONFLICT_LIST vendor/winapi/src/um/cfgmgr32.rs /^pub type CONFLICT_LIST = ULONG_PTR;$/;" t +CONNECTION command.h /^} CONNECTION;$/;" t typeref:struct:connection +CONNECTION r_bash/src/lib.rs /^pub type CONNECTION = connection;$/;" t +CONNECTION r_glob/src/lib.rs /^pub type CONNECTION = connection;$/;" t +CONNECTION r_readline/src/lib.rs /^pub type CONNECTION = connection;$/;" t +CONST lib/malloc/x386-alloca.s /^CONST SEGMENT DWORD USE32 PUBLIC 'CONST'$/;" l +CONTINUE_AFTER_KILL_ERROR config-top.h /^#define CONTINUE_AFTER_KILL_ERROR$/;" d +CONTRIBUTING.md vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +CONTRIBUTING.md vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +CONVTCK lib/sh/times.c /^#define CONVTCK(/;" d file: +COPROCESS_SUPPORT config.h.in /^#define COPROCESS_SUPPORT$/;" d file: +COPROCESS_SUPPORT configure.ac /^AC_DEFINE(COPROCESS_SUPPORT)$/;" d +COPROC_COM builtins_rust/kill/src/intercdep.rs /^pub type COPROC_COM = coproc_com;$/;" t +COPROC_COM builtins_rust/setattr/src/intercdep.rs /^pub type COPROC_COM = coproc_com;$/;" t +COPROC_COM command.h /^} COPROC_COM;$/;" t typeref:struct:coproc_com +COPROC_COM r_bash/src/lib.rs /^pub type COPROC_COM = coproc_com;$/;" t +COPROC_COM r_glob/src/lib.rs /^pub type COPROC_COM = coproc_com;$/;" t +COPROC_COM r_readline/src/lib.rs /^pub type COPROC_COM = coproc_com;$/;" t +COPROC_DEAD command.h /^#define COPROC_DEAD /;" d +COPROC_MAX execute_cmd.c /^#define COPROC_MAX /;" d file: +COPROC_RUNNING command.h /^#define COPROC_RUNNING /;" d +COPT_BASHDEFAULT builtins_rust/complete/src/lib.rs /^macro_rules! COPT_BASHDEFAULT {$/;" M +COPT_BASHDEFAULT pcomplete.h /^#define COPT_BASHDEFAULT /;" d +COPT_DEFAULT builtins_rust/complete/src/lib.rs /^macro_rules! COPT_DEFAULT {$/;" M +COPT_DEFAULT pcomplete.h /^#define COPT_DEFAULT /;" d +COPT_DIRNAMES builtins_rust/complete/src/lib.rs /^macro_rules! COPT_DIRNAMES {$/;" M +COPT_DIRNAMES pcomplete.h /^#define COPT_DIRNAMES /;" d +COPT_FILENAMES builtins_rust/complete/src/lib.rs /^macro_rules! COPT_FILENAMES {$/;" M +COPT_FILENAMES pcomplete.h /^#define COPT_FILENAMES /;" d +COPT_LASTUSER pcomplete.h /^#define COPT_LASTUSER /;" d +COPT_NOQUOTE builtins_rust/complete/src/lib.rs /^macro_rules! COPT_NOQUOTE {$/;" M +COPT_NOQUOTE pcomplete.h /^#define COPT_NOQUOTE /;" d +COPT_NOSORT builtins_rust/complete/src/lib.rs /^macro_rules! COPT_NOSORT {$/;" M +COPT_NOSORT pcomplete.h /^#define COPT_NOSORT /;" d +COPT_NOSPACE builtins_rust/complete/src/lib.rs /^macro_rules! COPT_NOSPACE {$/;" M +COPT_NOSPACE pcomplete.h /^#define COPT_NOSPACE /;" d +COPT_PLUSDIRS builtins_rust/complete/src/lib.rs /^macro_rules! COPT_PLUSDIRS {$/;" M +COPT_PLUSDIRS pcomplete.h /^#define COPT_PLUSDIRS /;" d +COPT_RESERVED builtins_rust/complete/src/lib.rs /^macro_rules! COPT_RESERVED {$/;" M +COPT_RESERVED pcomplete.h /^#define COPT_RESERVED /;" d +COPYING vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +COPY_CHAR_I include/shmbutil.h /^# define COPY_CHAR_I(/;" d +COPY_CHAR_P include/shmbutil.h /^# define COPY_CHAR_P(/;" d +COPY_EXPORTSTR variables.h /^#define COPY_EXPORTSTR(/;" d +COPY_PROCENV bashjmp.h /^#define COPY_PROCENV(/;" d +COUNTER vendor/futures-util/src/async_await/random.rs /^ static COUNTER: AtomicUsize = AtomicUsize::new(0);$/;" v function:random::prng_seed +COUNTER vendor/syn/tests/test_round_trip.rs /^ static COUNTER: AtomicUsize = AtomicUsize::new(0);$/;" v function:librustc_parse +CP Makefile.in /^CP = cp$/;" m +CP builtins/Makefile.in /^CP = cp$/;" m +CP lib/glob/Makefile.in /^CP = cp$/;" m +CP lib/malloc/Makefile.in /^CP = cp$/;" m +CP lib/readline/Makefile.in /^CP = cp$/;" m +CP lib/sh/Makefile.in /^CP = cp$/;" m +CP lib/termcap/Makefile.in /^CP = cp$/;" m +CP lib/tilde/Makefile.in /^CP = cp$/;" m +CPFLAGS vendor/winapi/src/um/objidlbase.rs /^pub type CPFLAGS = DWORD;$/;" t +CPFunction general.h /^typedef char *CPFunction (); \/* no longer used *\/$/;" t typeref:typename:char * ()() +CPFunction input.h /^typedef char *CPFunction (); \/* no longer used *\/$/;" t typeref:typename:char * ()() +CPFunction lib/readline/rltypedefs.h /^typedef char *CPFunction () __attribute__ ((deprecated));$/;" t typeref:typename:char * ()() +CPFunction r_bash/src/lib.rs /^pub type CPFunction = ::core::option::Option *mut ::std::os::raw::c_ch/;" t +CPFunction r_glob/src/lib.rs /^pub type CPFunction = ::core::option::Option *mut ::std::os::raw::c_ch/;" t +CPFunction r_readline/src/lib.rs /^pub type CPFunction = ::core::option::Option *mut ::std::os::raw::c_ch/;" t +CPPFLAGS Makefile.in /^CPPFLAGS = @CPPFLAGS@$/;" m +CPPFLAGS builtins/Makefile.in /^CPPFLAGS = @CPPFLAGS@$/;" m +CPPFLAGS configure.ac /^AC_SUBST(CPPFLAGS)$/;" s +CPPFLAGS lib/glob/Makefile.in /^CPPFLAGS = @CPPFLAGS@$/;" m +CPPFLAGS lib/intl/Makefile.in /^CPPFLAGS = @CPPFLAGS@$/;" m +CPPFLAGS lib/malloc/Makefile.in /^CPPFLAGS = @CPPFLAGS@$/;" m +CPPFLAGS lib/readline/Makefile.in /^CPPFLAGS = @CPPFLAGS@$/;" m +CPPFLAGS lib/sh/Makefile.in /^CPPFLAGS = @CPPFLAGS@$/;" m +CPPFLAGS lib/termcap/Makefile.in /^CPPFLAGS = @CPPFLAGS@$/;" m +CPPFLAGS lib/tilde/Makefile.in /^CPPFLAGS = @CPPFLAGS@$/;" m +CPPFLAGS support/Makefile.in /^CPPFLAGS = @CPPFLAGS@$/;" m +CPPFLAGS_FOR_BUILD Makefile.in /^CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@$/;" m +CPPFLAGS_FOR_BUILD builtins/Makefile.in /^CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@$/;" m +CPPFLAGS_FOR_BUILD configure.ac /^AC_SUBST(CPPFLAGS_FOR_BUILD)$/;" s +CPPFLAGS_FOR_BUILD support/Makefile.in /^CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@$/;" m +CPPFunction general.h /^typedef char **CPPFunction (); \/* no longer used *\/$/;" t typeref:typename:char ** ()() +CPPFunction input.h /^typedef char **CPPFunction (); \/* no longer used *\/$/;" t typeref:typename:char ** ()() +CPPFunction lib/readline/rltypedefs.h /^typedef char **CPPFunction () __attribute__ ((deprecated));$/;" t typeref:typename:char ** ()() +CPPFunction r_bash/src/lib.rs /^pub type CPPFunction =$/;" t +CPPFunction r_glob/src/lib.rs /^pub type CPPFunction =$/;" t +CPPFunction r_readline/src/lib.rs /^pub type CPPFunction =$/;" t +CPP_STRING include/stdc.h /^# define CPP_STRING(/;" d +CPP_STRING lib/malloc/imalloc.h /^# define CPP_STRING(/;" d +CQUOTE syntax.h /^#define CQUOTE /;" d +CQ_RETURN subst.c /^#define CQ_RETURN(/;" d file: +CRAY_STACK lib/malloc/alloca.c /^#define CRAY_STACK$/;" d file: +CREATED_CONFIGURE Makefile.in /^CREATED_CONFIGURE = config.h config.cache config.status config.log \\$/;" m +CREATED_FILES builtins/Makefile.in /^CREATED_FILES = builtext.h builtins.c psize.aux pipesize.h tmpbuiltins.c \\$/;" m +CREATED_HEADERS Makefile.in /^CREATED_HEADERS = signames.h config.h pathnames.h version.h y.tab.h \\$/;" m +CREATED_MAKEFILES Makefile.in /^CREATED_MAKEFILES = Makefile builtins\/Makefile \\$/;" m +CREATED_OBJECTS builtins/Makefile.in /^CREATED_OBJECTS = tmpbuiltins.o gen-helpfiles.o mkbuiltins.o$/;" m +CREATED_SUPPORT Makefile.in /^CREATED_SUPPORT = signames.h recho$(EXEEXT) zecho$(EXEEXT) printenv$(EXEEXT) \\$/;" m +CRITICAL_SECTION vendor/winapi/src/um/minwinbase.rs /^pub type CRITICAL_SECTION = RTL_CRITICAL_SECTION;$/;" t +CRITICAL_SECTION_DEBUG vendor/winapi/src/um/minwinbase.rs /^pub type CRITICAL_SECTION_DEBUG = RTL_CRITICAL_SECTION_DEBUG;$/;" t +CRLF vendor/fluent-syntax/src/parser/pattern.rs /^ CRLF,$/;" e enum:TextElementTermination +CRL_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type CRL_BLOB = CRYPTOAPI_BLOB;$/;" t +CRM_PROTOCOL_ID vendor/winapi/src/shared/ktmtypes.rs /^pub type CRM_PROTOCOL_ID = GUID;$/;" t +CROSS_COMPILE configure.ac /^ AC_SUBST(CROSS_COMPILE)$/;" s +CRYPT_ATTR_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type CRYPT_ATTR_BLOB = CRYPTOAPI_BLOB;$/;" t +CRYPT_DATA_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type CRYPT_DATA_BLOB = CRYPTOAPI_BLOB;$/;" t +CRYPT_DER_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type CRYPT_DER_BLOB = CRYPTOAPI_BLOB;$/;" t +CRYPT_DIGEST_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type CRYPT_DIGEST_BLOB = CRYPTOAPI_BLOB;$/;" t +CRYPT_DIGEST_DATA vendor/winapi/src/um/mssip.rs /^pub type CRYPT_DIGEST_DATA = CRYPT_HASH_BLOB;$/;" t +CRYPT_HASH_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type CRYPT_HASH_BLOB = CRYPTOAPI_BLOB;$/;" t +CRYPT_INTEGER_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type CRYPT_INTEGER_BLOB = CRYPTOAPI_BLOB;$/;" t +CRYPT_OBJID_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type CRYPT_OBJID_BLOB = CRYPTOAPI_BLOB;$/;" t +CRYPT_PRIVATE_KEY_BLOB_AND_PARAMS vendor/winapi/src/um/wincrypt.rs /^pub type CRYPT_PRIVATE_KEY_BLOB_AND_PARAMS = CRYPT_PKCS8_IMPORT_PARAMS;$/;" t +CRYPT_UINT_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type CRYPT_UINT_BLOB = CRYPTOAPI_BLOB;$/;" t +CR_FASTER lib/readline/display.c /^#define CR_FASTER(/;" d file: +CSHBRK syntax.h /^#define CSHBRK /;" d +CSHMETA syntax.h /^#define CSHMETA /;" d +CSHORT vendor/winapi/src/shared/ntdef.rs /^pub type CSHORT = c_short;$/;" t +CSOURCES Makefile.in /^CSOURCES = shell.c eval.c parse.y general.c make_cmd.c print_cmd.c y.tab.c \\$/;" m +CSOURCES lib/glob/Makefile.in /^CSOURCES = $(srcdir)\/glob.c $(srcdir)\/strmatch.c $(srcdir)\/smatch.c \\$/;" m +CSOURCES lib/readline/Makefile.in /^CSOURCES = $(srcdir)\/readline.c $(srcdir)\/funmap.c $(srcdir)\/keymaps.c \\$/;" m +CSOURCES lib/sh/Makefile.in /^CSOURCES = clktck.c clock.c getcwd.c getenv.c oslib.c setlinebuf.c \\$/;" m +CSOURCES lib/tilde/Makefile.in /^CSOURCES = $(srcdir)\/tilde.c$/;" m +CSPECL syntax.h /^#define CSPECL /;" d +CSPECVAR syntax.h /^#define CSPECVAR /;" d +CSUBSTOP syntax.h /^#define CSUBSTOP /;" d +CStr vendor/nix/src/lib.rs /^impl NixPath for CStr {$/;" c +CString vendor/stable_deref_trait/src/lib.rs /^unsafe impl StableDeref for CString {}$/;" c +CTAGS lib/intl/Makefile.in /^CTAGS: $(HEADERS) $(SOURCES)$/;" t +CTAGS lib/readline/Makefile.in /^CTAGS = ctags -tw$/;" m +CTLESC shell.h /^#define CTLESC /;" d +CTLESC syntax.h /^#define CTLESC /;" d +CTLNUL shell.h /^#define CTLNUL /;" d +CTLNUL syntax.h /^#define CTLNUL /;" d +CTL_CODE vendor/winapi/src/um/winioctl.rs /^pub fn CTL_CODE($/;" f +CTRL lib/readline/chardefs.h /^#define CTRL(/;" d +CTRL_CHAR lib/readline/chardefs.h /^#define CTRL_CHAR(/;" d +CTYPE_T lib/glob/smatch.c /^#define CTYPE_T /;" d file: +CURRENCY vendor/winapi/src/um/oaidl.rs /^pub type CURRENCY = CY;$/;" t +CUSTOM_INPUT_FUNC lib/readline/rlprivate.h /^#define CUSTOM_INPUT_FUNC(/;" d +CUSTOM_REDISPLAY_FUNC lib/readline/rlprivate.h /^#define CUSTOM_REDISPLAY_FUNC(/;" d +CWORD syntax.h /^#define CWORD /;" d +CXGLOB syntax.h /^#define CXGLOB /;" d +CXQUOTE syntax.h /^#define CXQUOTE /;" d +C_BLK lib/readline/colors.h /^ C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID,$/;" e enum:indicator_no +C_CAP lib/readline/colors.h /^ C_STICKY, C_OTHER_WRITABLE, C_STICKY_OTHER_WRITABLE, C_CAP, C_MULTIHARDLINK,$/;" e enum:indicator_no +C_CHR lib/readline/colors.h /^ C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID,$/;" e enum:indicator_no +C_CLR_TO_EOL lib/readline/colors.h /^ C_CLR_TO_EOL$/;" e enum:indicator_no +C_DIR lib/readline/colors.h /^ C_LEFT, C_RIGHT, C_END, C_RESET, C_NORM, C_FILE, C_DIR, C_LINK,$/;" e enum:indicator_no +C_DOOR lib/readline/colors.h /^ C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID,$/;" e enum:indicator_no +C_END lib/readline/colors.h /^ C_LEFT, C_RIGHT, C_END, C_RESET, C_NORM, C_FILE, C_DIR, C_LINK,$/;" e enum:indicator_no +C_EXEC lib/readline/colors.h /^ C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID,$/;" e enum:indicator_no +C_FIFO lib/readline/colors.h /^ C_FIFO, C_SOCK,$/;" e enum:indicator_no +C_FILE lib/readline/colors.h /^ C_LEFT, C_RIGHT, C_END, C_RESET, C_NORM, C_FILE, C_DIR, C_LINK,$/;" e enum:indicator_no +C_LEFT lib/readline/colors.h /^ C_LEFT, C_RIGHT, C_END, C_RESET, C_NORM, C_FILE, C_DIR, C_LINK,$/;" e enum:indicator_no +C_LINK lib/readline/colors.h /^ C_LEFT, C_RIGHT, C_END, C_RESET, C_NORM, C_FILE, C_DIR, C_LINK,$/;" e enum:indicator_no +C_MISSING lib/readline/colors.h /^ C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID,$/;" e enum:indicator_no +C_MULTIHARDLINK lib/readline/colors.h /^ C_STICKY, C_OTHER_WRITABLE, C_STICKY_OTHER_WRITABLE, C_CAP, C_MULTIHARDLINK,$/;" e enum:indicator_no +C_NORM lib/readline/colors.h /^ C_LEFT, C_RIGHT, C_END, C_RESET, C_NORM, C_FILE, C_DIR, C_LINK,$/;" e enum:indicator_no +C_ORPHAN lib/readline/colors.h /^ C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID,$/;" e enum:indicator_no +C_OTHER_WRITABLE lib/readline/colors.h /^ C_STICKY, C_OTHER_WRITABLE, C_STICKY_OTHER_WRITABLE, C_CAP, C_MULTIHARDLINK,$/;" e enum:indicator_no +C_PREFIX lib/readline/colors.h /^#define C_PREFIX /;" d +C_RESET lib/readline/colors.h /^ C_LEFT, C_RIGHT, C_END, C_RESET, C_NORM, C_FILE, C_DIR, C_LINK,$/;" e enum:indicator_no +C_RIGHT lib/readline/colors.h /^ C_LEFT, C_RIGHT, C_END, C_RESET, C_NORM, C_FILE, C_DIR, C_LINK,$/;" e enum:indicator_no +C_SETGID lib/readline/colors.h /^ C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID,$/;" e enum:indicator_no +C_SETUID lib/readline/colors.h /^ C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID,$/;" e enum:indicator_no +C_SOCK lib/readline/colors.h /^ C_FIFO, C_SOCK,$/;" e enum:indicator_no +C_STICKY lib/readline/colors.h /^ C_STICKY, C_OTHER_WRITABLE, C_STICKY_OTHER_WRITABLE, C_CAP, C_MULTIHARDLINK,$/;" e enum:indicator_no +C_STICKY_OTHER_WRITABLE lib/readline/colors.h /^ C_STICKY, C_OTHER_WRITABLE, C_STICKY_OTHER_WRITABLE, C_CAP, C_MULTIHARDLINK,$/;" e enum:indicator_no +Cache vendor/fluent-fallback/src/cache.rs /^impl<'a, I, R> IntoIterator for &'a Cache$/;" c +Cache vendor/fluent-fallback/src/cache.rs /^impl Cache$/;" c +Cache vendor/fluent-fallback/src/cache.rs /^pub struct Cache$/;" s +CacheIter vendor/fluent-fallback/src/cache.rs /^impl<'a, I, R> Iterator for CacheIter<'a, I, R>$/;" c +CacheIter vendor/fluent-fallback/src/cache.rs /^pub struct CacheIter<'a, I, R>$/;" s +Caif vendor/nix/src/sys/socket/addr.rs /^ Caif = libc::AF_CAIF,$/;" e enum:AddressFamily +CalculatePopupWindowPosition vendor/winapi/src/um/winuser.rs /^ pub fn CalculatePopupWindowPosition($/;" f +CallArguments vendor/fluent-syntax/src/ast/mod.rs /^pub struct CallArguments {$/;" s +CallEnclave vendor/winapi/src/um/enclaveapi.rs /^ pub fn CallEnclave($/;" f +CallMsgFilterA vendor/winapi/src/um/winuser.rs /^ pub fn CallMsgFilterA($/;" f +CallMsgFilterW vendor/winapi/src/um/winuser.rs /^ pub fn CallMsgFilterW($/;" f +CallNamedPipeA vendor/winapi/src/um/winbase.rs /^ pub fn CallNamedPipeA($/;" f +CallNamedPipeW vendor/winapi/src/um/namedpipeapi.rs /^ pub fn CallNamedPipeW($/;" f +CallNextHookEx vendor/winapi/src/um/winuser.rs /^ pub fn CallNextHookEx($/;" f +CallNtPowerInformation vendor/winapi/src/um/powerbase.rs /^ pub fn CallNtPowerInformation($/;" f +CallWindowProcA vendor/winapi/src/um/winuser.rs /^ pub fn CallWindowProcA($/;" f +CallWindowProcW vendor/winapi/src/um/winuser.rs /^ pub fn CallWindowProcW($/;" f +CallbackMayRunLong vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CallbackMayRunLong($/;" f +CallerCmd builtins_rust/exec_cmd/src/lib.rs /^ CallerCmd,$/;" e enum:CMDType +CallerComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for CallerComand {$/;" c +CallerComand builtins_rust/exec_cmd/src/lib.rs /^struct CallerComand;$/;" s +Can vendor/nix/src/sys/socket/addr.rs /^ Can = libc::AF_CAN,$/;" e enum:AddressFamily +Can I use this library in `no_std` projects? vendor/winapi/README.md /^### Can I use this library in `no_std` projects?$/;" S section:winapi-rs""Frequently asked questions +CanDestruct vendor/async-trait/tests/test.rs /^ trait CanDestruct {$/;" i function:test_can_destruct +CanUserWritePwrScheme vendor/winapi/src/um/powrprof.rs /^ pub fn CanUserWritePwrScheme() -> BOOLEAN;$/;" f +CancelDC vendor/winapi/src/um/wingdi.rs /^ pub fn CancelDC($/;" f +CancelDeviceWakeupRequest vendor/winapi/src/um/winbase.rs /^ pub fn CancelDeviceWakeupRequest($/;" f +CancelIPChangeNotify vendor/winapi/src/um/iphlpapi.rs /^ pub fn CancelIPChangeNotify($/;" f +CancelIfTimestampConfigChange vendor/winapi/src/um/iphlpapi.rs /^ pub fn CancelIfTimestampConfigChange($/;" f +CancelIo vendor/winapi/src/um/ioapiset.rs /^ pub fn CancelIo($/;" f +CancelIoEx vendor/winapi/src/um/ioapiset.rs /^ pub fn CancelIoEx($/;" f +CancelMibChangeNotify2 vendor/winapi/src/shared/netioapi.rs /^ pub fn CancelMibChangeNotify2($/;" f +CancelShutdown vendor/winapi/src/um/winuser.rs /^ pub fn CancelShutdown() -> BOOL;$/;" f +CancelSynchronousIo vendor/winapi/src/um/ioapiset.rs /^ pub fn CancelSynchronousIo($/;" f +CancelThreadpoolIo vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CancelThreadpoolIo($/;" f +CancelTimerQueueTimer vendor/winapi/src/um/winbase.rs /^ pub fn CancelTimerQueueTimer($/;" f +CancelWaitableTimer vendor/winapi/src/um/synchapi.rs /^ pub fn CancelWaitableTimer($/;" f +Canceled vendor/futures-channel/src/oneshot.rs /^impl fmt::Display for Canceled {$/;" c +Canceled vendor/futures-channel/src/oneshot.rs /^impl std::error::Error for Canceled {}$/;" c +Canceled vendor/futures-channel/src/oneshot.rs /^pub struct Canceled;$/;" s +Cancellation vendor/futures-channel/src/oneshot.rs /^impl Future for Cancellation<'_, T> {$/;" c +Cancellation vendor/futures-channel/src/oneshot.rs /^pub struct Cancellation<'a, T> {$/;" s +CapCase lib/readline/text.c /^#define CapCase /;" d file: +CapabilitiesRequestAndCapabilitiesReply vendor/winapi/src/um/lowlevelmonitorconfigurationapi.rs /^ pub fn CapabilitiesRequestAndCapabilitiesReply($/;" f +CapacityOverflow vendor/smallvec/src/lib.rs /^ CapacityOverflow,$/;" e enum:CollectionAllocErr +CaptureInterfaceHardwareCrossTimestamp vendor/winapi/src/um/iphlpapi.rs /^ pub fn CaptureInterfaceHardwareCrossTimestamp($/;" f +Carg builtins_rust/complete/src/lib.rs /^pub static mut Carg: *mut c_char = std::ptr::null_mut();$/;" v +Cargo.lock vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +Cargo.lock vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +Cargo.lock vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +Cargo.lock vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +Cargo.lock vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +Cargo.lock vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +Cargo.lock vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +Cargo.lock vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +Cargo.toml vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +Cargo.toml vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +Cargo.toml vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +Cargo.toml vendor/cfg-if/.cargo-checksum.json /^{"files":{"Cargo.toml":"5b2a8f6e5256957c029cf3a8912d51438e7faa5891c5c102c312f6d4599c1f00","LICEN/;" s object:files +Cargo.toml vendor/chunky-vec/.cargo-checksum.json /^{"files":{"Cargo.toml":"3ab88cdacffa2756abe4460dda1ef403b304e79f814a2ec71b9c9a013dce2bf6","LICEN/;" s object:files +Cargo.toml vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +Cargo.toml vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +Cargo.toml vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +Cargo.toml vendor/fluent-langneg/.cargo-checksum.json /^{"files":{"Cargo.toml":"1b11d8d30fe978704012e27981f8d50a3462319594b54ed2e71eaf85284d61eb","READM/;" s object:files +Cargo.toml vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +Cargo.toml vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +Cargo.toml vendor/fluent/.cargo-checksum.json /^{"files":{"Cargo.toml":"90672342000bb7f84bee3d9517ddf6d3f32f8e4b4fd38271c67855112456db05","LICEN/;" s object:files +Cargo.toml vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +Cargo.toml vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +Cargo.toml vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" s object:files +Cargo.toml vendor/futures-io/.cargo-checksum.json /^{"files":{"Cargo.toml":"e54d638578924483b00b5b20bbd8bf29b5166de08d8176122a7c07b04ff314fd","LICEN/;" s object:files +Cargo.toml vendor/futures-macro/.cargo-checksum.json /^{"files":{"Cargo.toml":"0af05d99a0144689032178763c2a88016e428451fae7a9d0d8fdca3063514783","LICEN/;" s object:files +Cargo.toml vendor/futures-sink/.cargo-checksum.json /^{"files":{"Cargo.toml":"8e37d96331ae8a6db64a6aab22e9924ceeacc4f07595c1ea81ea086c002ebd2f","LICEN/;" s object:files +Cargo.toml vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +Cargo.toml vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +Cargo.toml vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +Cargo.toml vendor/intl-memoizer/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f28af47927c54fd8ff3adbfcc4b0e9ea849a3b2a544289dd6be64a7aafb8ca6","LICEN/;" s object:files +Cargo.toml vendor/intl_pluralrules/.cargo-checksum.json /^{"files":{"Cargo.toml":"3b7451d96ed662827dd4163d64d96840fee1c4241c2480b8cdd91ef156ad7896","READM/;" s object:files +Cargo.toml vendor/lazy_static/.cargo-checksum.json /^{"files":{"Cargo.toml":"05e37a4e63dc4a495998bb5133252a51d671c4e99061a6342089ed6eab43978a","LICEN/;" s object:files +Cargo.toml vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +Cargo.toml vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +Cargo.toml vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +Cargo.toml vendor/memoffset/.cargo-checksum.json /^{"files":{"Cargo.toml":"2556143c764ef2315fe44ff0ec43af47ca70b260fd64aa53f57dc42760d7132d","LICEN/;" s object:files +Cargo.toml vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +Cargo.toml vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +Cargo.toml vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +Cargo.toml vendor/pin-utils/.cargo-checksum.json /^{"files":{"Cargo.toml":"0f8296bda5b928d57bb84443422f21db3aa35d6873ce651297634d80c183dc6b","LICEN/;" s object:files +Cargo.toml vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +Cargo.toml vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +Cargo.toml vendor/rustc-hash/.cargo-checksum.json /^{"files":{"CODE_OF_CONDUCT.md":"edca092fde496419a9f1ba640048aa0270b62dfea576cd3175f0b53e3c230470/;" s object:files +Cargo.toml vendor/self_cell/.cargo-checksum.json /^{"files":{"Cargo.toml":"ab60ad0024cea3e0c60fc4d116adc7fae35d5f85b042d285bba65f22c42407d5","LICEN/;" s object:files +Cargo.toml vendor/slab/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"ae4c54789e1055543317a6812ac11644d0586883dee8f790119e4cef244b1b8e","Car/;" s object:files +Cargo.toml vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +Cargo.toml vendor/stable_deref_trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"5a8352eba01791ecee28b37cfe1324fa48db52e35023b23a4f07ca84267abfd6","LICEN/;" s object:files +Cargo.toml vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +Cargo.toml vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +Cargo.toml vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" s object:files +Cargo.toml vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +Cargo.toml vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +Cargo.toml vendor/type-map/.cargo-checksum.json /^{"files":{"Cargo.toml":"b9de957b7180f3784f79522b1a108b6c9e9f6bb16a2d089b4d0ca924d92387ae","READM/;" s object:files +Cargo.toml vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +Cargo.toml vendor/unic-langid/.cargo-checksum.json /^{"files":{"Cargo.toml":"927c0bc2dea454aab20d550b4ab728ee5c3803ac12f95a89f518b8a56633e941","READM/;" s object:files +Cargo.toml vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +Cargo.toml vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +Cargo.toml vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +Cargo.toml vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +CascadeWindows vendor/winapi/src/um/winuser.rs /^ pub fn CascadeWindows($/;" f +Case command.h /^ struct case_com *Case;$/;" m union:command::__anon3aaf009a020a typeref:struct:case_com * +CaseKind vendor/futures-macro/src/select.rs /^enum CaseKind {$/;" g +Cast vendor/syn/src/expr.rs /^ Cast,$/;" e enum:parsing::Precedence +CatchUnwind vendor/futures-util/src/future/future/catch_unwind.rs /^impl CatchUnwind$/;" c +CatchUnwind vendor/futures-util/src/future/future/catch_unwind.rs /^impl Future for CatchUnwind$/;" c +CatchUnwind vendor/futures-util/src/stream/stream/catch_unwind.rs /^impl FusedStream for CatchUnwind {$/;" c +CatchUnwind vendor/futures-util/src/stream/stream/catch_unwind.rs /^impl CatchUnwind {$/;" c +CatchUnwind vendor/futures-util/src/stream/stream/catch_unwind.rs /^impl Stream for CatchUnwind {$/;" c +Ccitt vendor/nix/src/sys/socket/addr.rs /^ Ccitt = libc::AF_CCITT,$/;" e enum:AddressFamily +CdCmd builtins_rust/exec_cmd/src/lib.rs /^ CdCmd,$/;" e enum:CMDType +CdComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for CdComand {$/;" c +CdComand builtins_rust/exec_cmd/src/lib.rs /^struct CdComand;$/;" s +CeipIsOptedIn vendor/winapi/src/um/windowsceip.rs /^ pub fn CeipIsOptedIn() -> BOOL;$/;" f +CertAddCRLContextToStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddCRLContextToStore($/;" f +CertAddCRLLinkToStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddCRLLinkToStore($/;" f +CertAddCTLContextToStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddCTLContextToStore($/;" f +CertAddCTLLinkToStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddCTLLinkToStore($/;" f +CertAddCertificateContextToStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddCertificateContextToStore($/;" f +CertAddCertificateLinkToStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddCertificateLinkToStore($/;" f +CertAddEncodedCRLToStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddEncodedCRLToStore($/;" f +CertAddEncodedCTLToStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddEncodedCTLToStore($/;" f +CertAddEncodedCertificateToStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddEncodedCertificateToStore($/;" f +CertAddEncodedCertificateToSystemStoreA vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddEncodedCertificateToSystemStoreA($/;" f +CertAddEncodedCertificateToSystemStoreW vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddEncodedCertificateToSystemStoreW($/;" f +CertAddEnhancedKeyUsageIdentifier vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddEnhancedKeyUsageIdentifier($/;" f +CertAddRefServerOcspResponse vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddRefServerOcspResponse($/;" f +CertAddRefServerOcspResponseContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddRefServerOcspResponseContext($/;" f +CertAddSerializedElementToStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddSerializedElementToStore($/;" f +CertAddStoreToCollection vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAddStoreToCollection($/;" f +CertAlgIdToOID vendor/winapi/src/um/wincrypt.rs /^ pub fn CertAlgIdToOID($/;" f +CertCloseServerOcspResponse vendor/winapi/src/um/wincrypt.rs /^ pub fn CertCloseServerOcspResponse($/;" f +CertCloseStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertCloseStore($/;" f +CertCompareCertificate vendor/winapi/src/um/wincrypt.rs /^ pub fn CertCompareCertificate($/;" f +CertCompareCertificateName vendor/winapi/src/um/wincrypt.rs /^ pub fn CertCompareCertificateName($/;" f +CertCompareIntegerBlob vendor/winapi/src/um/wincrypt.rs /^ pub fn CertCompareIntegerBlob($/;" f +CertComparePublicKeyInfo vendor/winapi/src/um/wincrypt.rs /^ pub fn CertComparePublicKeyInfo($/;" f +CertControlStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertControlStore($/;" f +CertCreateCRLContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertCreateCRLContext($/;" f +CertCreateCTLContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertCreateCTLContext($/;" f +CertCreateCTLEntryFromCertificateContextProperties vendor/winapi/src/um/wincrypt.rs /^ pub fn CertCreateCTLEntryFromCertificateContextProperties($/;" f +CertCreateCertificateChainEngine vendor/winapi/src/um/wincrypt.rs /^ pub fn CertCreateCertificateChainEngine($/;" f +CertCreateCertificateContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertCreateCertificateContext($/;" f +CertCreateContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertCreateContext($/;" f +CertCreateSelfSignCertificate vendor/winapi/src/um/wincrypt.rs /^ pub fn CertCreateSelfSignCertificate($/;" f +CertDeleteCRLFromStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertDeleteCRLFromStore($/;" f +CertDeleteCTLFromStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertDeleteCTLFromStore($/;" f +CertDeleteCertificateFromStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertDeleteCertificateFromStore($/;" f +CertDuplicateCRLContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertDuplicateCRLContext($/;" f +CertDuplicateCTLContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertDuplicateCTLContext($/;" f +CertDuplicateCertificateChain vendor/winapi/src/um/wincrypt.rs /^ pub fn CertDuplicateCertificateChain($/;" f +CertDuplicateCertificateContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertDuplicateCertificateContext($/;" f +CertDuplicateStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertDuplicateStore($/;" f +CertEnumCRLContextProperties vendor/winapi/src/um/wincrypt.rs /^ pub fn CertEnumCRLContextProperties($/;" f +CertEnumCRLsInStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertEnumCRLsInStore($/;" f +CertEnumCTLContextProperties vendor/winapi/src/um/wincrypt.rs /^ pub fn CertEnumCTLContextProperties($/;" f +CertEnumCTLsInStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertEnumCTLsInStore($/;" f +CertEnumCertificateContextProperties vendor/winapi/src/um/wincrypt.rs /^ pub fn CertEnumCertificateContextProperties($/;" f +CertEnumCertificatesInStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertEnumCertificatesInStore($/;" f +CertEnumPhysicalStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertEnumPhysicalStore($/;" f +CertEnumSubjectInSortedCTL vendor/winapi/src/um/wincrypt.rs /^ pub fn CertEnumSubjectInSortedCTL($/;" f +CertEnumSystemStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertEnumSystemStore($/;" f +CertEnumSystemStoreLocation vendor/winapi/src/um/wincrypt.rs /^ pub fn CertEnumSystemStoreLocation($/;" f +CertFindAttribute vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFindAttribute($/;" f +CertFindCRLInStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFindCRLInStore($/;" f +CertFindCTLInStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFindCTLInStore($/;" f +CertFindCertificateInCRL vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFindCertificateInCRL($/;" f +CertFindCertificateInStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFindCertificateInStore($/;" f +CertFindChainInStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFindChainInStore($/;" f +CertFindExtension vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFindExtension($/;" f +CertFindRDNAttr vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFindRDNAttr($/;" f +CertFindSubjectInCTL vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFindSubjectInCTL($/;" f +CertFindSubjectInSortedCTL vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFindSubjectInSortedCTL($/;" f +CertFreeCRLContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFreeCRLContext($/;" f +CertFreeCTLContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFreeCTLContext($/;" f +CertFreeCertificateChain vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFreeCertificateChain($/;" f +CertFreeCertificateChainEngine vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFreeCertificateChainEngine($/;" f +CertFreeCertificateChainList vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFreeCertificateChainList($/;" f +CertFreeCertificateContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFreeCertificateContext($/;" f +CertFreeServerOcspResponseContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertFreeServerOcspResponseContext($/;" f +CertGetCRLContextProperty vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetCRLContextProperty($/;" f +CertGetCRLFromStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetCRLFromStore($/;" f +CertGetCTLContextProperty vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetCTLContextProperty($/;" f +CertGetCertificateChain vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetCertificateChain($/;" f +CertGetCertificateContextProperty vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetCertificateContextProperty($/;" f +CertGetEnhancedKeyUsage vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetEnhancedKeyUsage($/;" f +CertGetIntendedKeyUsage vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetIntendedKeyUsage($/;" f +CertGetIssuerCertificateFromStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetIssuerCertificateFromStore($/;" f +CertGetNameStringA vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetNameStringA($/;" f +CertGetNameStringW vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetNameStringW($/;" f +CertGetPublicKeyLength vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetPublicKeyLength($/;" f +CertGetServerOcspResponseContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetServerOcspResponseContext($/;" f +CertGetStoreProperty vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetStoreProperty($/;" f +CertGetSubjectCertificateFromStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetSubjectCertificateFromStore($/;" f +CertGetValidUsages vendor/winapi/src/um/wincrypt.rs /^ pub fn CertGetValidUsages($/;" f +CertIsRDNAttrsInCertificateName vendor/winapi/src/um/wincrypt.rs /^ pub fn CertIsRDNAttrsInCertificateName($/;" f +CertIsStrongHashToSign vendor/winapi/src/um/wincrypt.rs /^ pub fn CertIsStrongHashToSign($/;" f +CertIsValidCRLForCertificate vendor/winapi/src/um/wincrypt.rs /^ pub fn CertIsValidCRLForCertificate($/;" f +CertIsWeakHash vendor/winapi/src/um/wincrypt.rs /^ pub fn CertIsWeakHash($/;" f +CertNameToStrA vendor/winapi/src/um/wincrypt.rs /^ pub fn CertNameToStrA($/;" f +CertNameToStrW vendor/winapi/src/um/wincrypt.rs /^ pub fn CertNameToStrW($/;" f +CertOIDToAlgId vendor/winapi/src/um/wincrypt.rs /^ pub fn CertOIDToAlgId($/;" f +CertOpenServerOcspResponse vendor/winapi/src/um/wincrypt.rs /^ pub fn CertOpenServerOcspResponse($/;" f +CertOpenStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertOpenStore($/;" f +CertOpenSystemStoreA vendor/winapi/src/um/wincrypt.rs /^ pub fn CertOpenSystemStoreA($/;" f +CertOpenSystemStoreW vendor/winapi/src/um/wincrypt.rs /^ pub fn CertOpenSystemStoreW($/;" f +CertRDNValueToStrA vendor/winapi/src/um/wincrypt.rs /^ pub fn CertRDNValueToStrA($/;" f +CertRDNValueToStrW vendor/winapi/src/um/wincrypt.rs /^ pub fn CertRDNValueToStrW($/;" f +CertRegisterPhysicalStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertRegisterPhysicalStore($/;" f +CertRegisterSystemStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertRegisterSystemStore($/;" f +CertRemoveEnhancedKeyUsageIdentifier vendor/winapi/src/um/wincrypt.rs /^ pub fn CertRemoveEnhancedKeyUsageIdentifier($/;" f +CertRemoveStoreFromCollection vendor/winapi/src/um/wincrypt.rs /^ pub fn CertRemoveStoreFromCollection($/;" f +CertResyncCertificateChainEngine vendor/winapi/src/um/wincrypt.rs /^ pub fn CertResyncCertificateChainEngine($/;" f +CertRetrieveLogoOrBiometricInfo vendor/winapi/src/um/wincrypt.rs /^ pub fn CertRetrieveLogoOrBiometricInfo($/;" f +CertSaveStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertSaveStore($/;" f +CertSelectCertificateChains vendor/winapi/src/um/wincrypt.rs /^ pub fn CertSelectCertificateChains($/;" f +CertSerializeCRLStoreElement vendor/winapi/src/um/wincrypt.rs /^ pub fn CertSerializeCRLStoreElement($/;" f +CertSerializeCTLStoreElement vendor/winapi/src/um/wincrypt.rs /^ pub fn CertSerializeCTLStoreElement($/;" f +CertSerializeCertificateStoreElement vendor/winapi/src/um/wincrypt.rs /^ pub fn CertSerializeCertificateStoreElement($/;" f +CertSetCRLContextProperty vendor/winapi/src/um/wincrypt.rs /^ pub fn CertSetCRLContextProperty($/;" f +CertSetCTLContextProperty vendor/winapi/src/um/wincrypt.rs /^ pub fn CertSetCTLContextProperty($/;" f +CertSetCertificateContextPropertiesFromCTLEntry vendor/winapi/src/um/wincrypt.rs /^ pub fn CertSetCertificateContextPropertiesFromCTLEntry($/;" f +CertSetCertificateContextProperty vendor/winapi/src/um/wincrypt.rs /^ pub fn CertSetCertificateContextProperty($/;" f +CertSetEnhancedKeyUsage vendor/winapi/src/um/wincrypt.rs /^ pub fn CertSetEnhancedKeyUsage($/;" f +CertSetStoreProperty vendor/winapi/src/um/wincrypt.rs /^ pub fn CertSetStoreProperty($/;" f +CertStrToNameA vendor/winapi/src/um/wincrypt.rs /^ pub fn CertStrToNameA($/;" f +CertStrToNameW vendor/winapi/src/um/wincrypt.rs /^ pub fn CertStrToNameW($/;" f +CertUnregisterPhysicalStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertUnregisterPhysicalStore($/;" f +CertUnregisterSystemStore vendor/winapi/src/um/wincrypt.rs /^ pub fn CertUnregisterSystemStore($/;" f +CertVerifyCRLRevocation vendor/winapi/src/um/wincrypt.rs /^ pub fn CertVerifyCRLRevocation($/;" f +CertVerifyCRLTimeValidity vendor/winapi/src/um/wincrypt.rs /^ pub fn CertVerifyCRLTimeValidity($/;" f +CertVerifyCTLUsage vendor/winapi/src/um/wincrypt.rs /^ pub fn CertVerifyCTLUsage($/;" f +CertVerifyCertificateChainPolicy vendor/winapi/src/um/wincrypt.rs /^ pub fn CertVerifyCertificateChainPolicy($/;" f +CertVerifyRevocation vendor/winapi/src/um/wincrypt.rs /^ pub fn CertVerifyRevocation($/;" f +CertVerifySubjectCertificateContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CertVerifySubjectCertificateContext($/;" f +CertVerifyTimeValidity vendor/winapi/src/um/wincrypt.rs /^ pub fn CertVerifyTimeValidity($/;" f +CertVerifyValidityNesting vendor/winapi/src/um/wincrypt.rs /^ pub fn CertVerifyValidityNesting($/;" f +Chain vendor/futures-util/src/io/chain.rs /^impl AsyncBufRead for Chain$/;" c +Chain vendor/futures-util/src/io/chain.rs /^impl AsyncRead for Chain$/;" c +Chain vendor/futures-util/src/io/chain.rs /^impl Chain$/;" c +Chain vendor/futures-util/src/io/chain.rs /^impl fmt::Debug for Chain$/;" c +Chain vendor/futures-util/src/stream/stream/chain.rs /^impl Chain$/;" c +Chain vendor/futures-util/src/stream/stream/chain.rs /^impl FusedStream for Chain$/;" c +Chain vendor/futures-util/src/stream/stream/chain.rs /^impl Stream for Chain$/;" c +Chain vendor/syn/src/parse.rs /^ Chain(Rc>),$/;" e enum:Unexpected +ChainFn vendor/futures-util/src/fns.rs /^impl Fn1 for ChainFn$/;" c +ChainFn vendor/futures-util/src/fns.rs /^impl FnMut1 for ChainFn$/;" c +ChainFn vendor/futures-util/src/fns.rs /^impl FnOnce1 for ChainFn$/;" c +ChainFn vendor/futures-util/src/fns.rs /^pub struct ChainFn(F, G);$/;" s +Change Log vendor/nix/CHANGELOG.md /^# Change Log$/;" c +ChangeAccountPasswordA vendor/winapi/src/shared/sspi.rs /^ pub fn ChangeAccountPasswordA($/;" f +ChangeAccountPasswordW vendor/winapi/src/shared/sspi.rs /^ pub fn ChangeAccountPasswordW($/;" f +ChangeClipboardChain vendor/winapi/src/um/winuser.rs /^ pub fn ChangeClipboardChain($/;" f +ChangeDisplaySettingsA vendor/winapi/src/um/winuser.rs /^ pub fn ChangeDisplaySettingsA($/;" f +ChangeDisplaySettingsExA vendor/winapi/src/um/winuser.rs /^ pub fn ChangeDisplaySettingsExA($/;" f +ChangeDisplaySettingsExW vendor/winapi/src/um/winuser.rs /^ pub fn ChangeDisplaySettingsExW($/;" f +ChangeDisplaySettingsW vendor/winapi/src/um/winuser.rs /^ pub fn ChangeDisplaySettingsW($/;" f +ChangeMenuA vendor/winapi/src/um/winuser.rs /^ pub fn ChangeMenuA($/;" f +ChangeMenuW vendor/winapi/src/um/winuser.rs /^ pub fn ChangeMenuW($/;" f +ChangeServiceConfig2A vendor/winapi/src/um/winsvc.rs /^ pub fn ChangeServiceConfig2A($/;" f +ChangeServiceConfig2W vendor/winapi/src/um/winsvc.rs /^ pub fn ChangeServiceConfig2W($/;" f +ChangeServiceConfigA vendor/winapi/src/um/winsvc.rs /^ pub fn ChangeServiceConfigA($/;" f +ChangeServiceConfigW vendor/winapi/src/um/winsvc.rs /^ pub fn ChangeServiceConfigW($/;" f +ChangeTimerQueueTimer vendor/winapi/src/um/threadpoollegacyapiset.rs /^ pub fn ChangeTimerQueueTimer($/;" f +ChangeWindowMessageFilter vendor/winapi/src/um/winuser.rs /^ pub fn ChangeWindowMessageFilter($/;" f +ChangeWindowMessageFilterEx vendor/winapi/src/um/winuser.rs /^ pub fn ChangeWindowMessageFilterEx($/;" f +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.10.0] 2018-01-26 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.11.0] 2018-06-01 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.12.0] 2018-11-28 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.13.0] - 2019-01-15 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.14.0] - 2019-05-21 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.14.1] - 2019-06-06 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.15.0] - 10 August 2019 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.16.0] - 1 December 2019 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.16.1] - 23 December 2019 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.17.0] - 3 February 2020 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.18.0] - 26 July 2020 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.19.0] - 6 October 2020 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.20.0] - 20 February 2021 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.21.0] - 31 May 2021 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.22.0] - 9 July 2021 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.23.0] - 2021-09-28 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.23.1] - 2021-12-16 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.24.0] - 2022-04-21 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.25.0] - 2022-08-13 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.6.0] 2016-06-10 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.7.0] 2016-09-09 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.8.0] 2017-03-02 +Changed vendor/nix/CHANGELOG.md /^### Changed$/;" S section:Change Log""[0.9.0] 2017-07-23 +Changelog vendor/fluent-fallback/CHANGELOG.md /^# Changelog$/;" c +Changelog vendor/fluent-resmgr/CHANGELOG.md /^# Changelog$/;" c +Changelog vendor/once_cell/CHANGELOG.md /^# Changelog$/;" c +Changelog vendor/pin-project-lite/CHANGELOG.md /^# Changelog$/;" c +Changelog vendor/tinystr/CHANGELOG.md /^# Changelog$/;" c +Chaos vendor/nix/src/sys/socket/addr.rs /^ Chaos = libc::AF_CHAOS,$/;" e enum:AddressFamily +Char vendor/stdext/src/str.rs /^ Char(char),$/;" e enum:AltPattern +CharLowerA vendor/winapi/src/um/winuser.rs /^ pub fn CharLowerA($/;" f +CharLowerBuffA vendor/winapi/src/um/winuser.rs /^ pub fn CharLowerBuffA($/;" f +CharLowerBuffW vendor/winapi/src/um/winuser.rs /^ pub fn CharLowerBuffW($/;" f +CharLowerW vendor/winapi/src/um/winuser.rs /^ pub fn CharLowerW($/;" f +CharNextA vendor/winapi/src/um/winuser.rs /^ pub fn CharNextA($/;" f +CharNextExA vendor/winapi/src/um/winuser.rs /^ pub fn CharNextExA($/;" f +CharNextW vendor/winapi/src/um/winuser.rs /^ pub fn CharNextW($/;" f +CharPrevA vendor/winapi/src/um/winuser.rs /^ pub fn CharPrevA($/;" f +CharPrevExA vendor/winapi/src/um/winuser.rs /^ pub fn CharPrevExA($/;" f +CharPrevW vendor/winapi/src/um/winuser.rs /^ pub fn CharPrevW($/;" f +CharToOemA vendor/winapi/src/um/winuser.rs /^ pub fn CharToOemA($/;" f +CharToOemBuffA vendor/winapi/src/um/winuser.rs /^ pub fn CharToOemBuffA($/;" f +CharToOemBuffW vendor/winapi/src/um/winuser.rs /^ pub fn CharToOemBuffW($/;" f +CharToOemW vendor/winapi/src/um/winuser.rs /^ pub fn CharToOemW($/;" f +CharUpperA vendor/winapi/src/um/winuser.rs /^ pub fn CharUpperA($/;" f +CharUpperBuffA vendor/winapi/src/um/winuser.rs /^ pub fn CharUpperBuffA($/;" f +CharUpperBuffW vendor/winapi/src/um/winuser.rs /^ pub fn CharUpperBuffW($/;" f +CharUpperW vendor/winapi/src/um/winuser.rs /^ pub fn CharUpperW($/;" f +CharacterDevice vendor/nix/src/dir.rs /^ CharacterDevice,$/;" e enum:Type +CharacterDirection vendor/unic-langid-impl/src/lib.rs /^pub enum CharacterDirection {$/;" g +Charp shell.c /^#define Charp /;" d file: +CheckColorsInGamut vendor/winapi/src/um/wingdi.rs /^ pub fn CheckColorsInGamut($/;" f +CheckDepInfo target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" o object:local.0 +CheckDepInfo target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" o object:local.0 +CheckDlgButton vendor/winapi/src/um/winuser.rs /^ pub fn CheckDlgButton($/;" f +CheckForHiberboot vendor/winapi/src/um/winreg.rs /^ pub fn CheckForHiberboot($/;" f +CheckMenuItem vendor/winapi/src/um/winuser.rs /^ pub fn CheckMenuItem($/;" f +CheckMenuRadioItem vendor/winapi/src/um/winuser.rs /^ pub fn CheckMenuRadioItem($/;" f +CheckNameLegalDOS8Dot3A vendor/winapi/src/um/winbase.rs /^ pub fn CheckNameLegalDOS8Dot3A($/;" f +CheckNameLegalDOS8Dot3W vendor/winapi/src/um/winbase.rs /^ pub fn CheckNameLegalDOS8Dot3W($/;" f +CheckRadioButton vendor/winapi/src/um/winuser.rs /^ pub fn CheckRadioButton($/;" f +CheckRemoteDebuggerPresent vendor/winapi/src/um/debugapi.rs /^ pub fn CheckRemoteDebuggerPresent($/;" f +CheckTokenCapability vendor/winapi/src/um/securitybaseapi.rs /^ pub fn CheckTokenCapability($/;" f +CheckTokenMembership vendor/winapi/src/um/securitybaseapi.rs /^ pub fn CheckTokenMembership($/;" f +CheckTokenMembershipEx vendor/winapi/src/um/securitybaseapi.rs /^ pub fn CheckTokenMembershipEx($/;" f +Child vendor/async-trait/tests/test.rs /^ pub trait Child {$/;" i module:issue45 +ChildWindowFromPoint vendor/winapi/src/um/winuser.rs /^ pub fn ChildWindowFromPoint($/;" f +ChildWindowFromPointEx vendor/winapi/src/um/winuser.rs /^ pub fn ChildWindowFromPointEx($/;" f +ChooseColorA vendor/winapi/src/um/commdlg.rs /^ pub fn ChooseColorA($/;" f +ChooseColorW vendor/winapi/src/um/commdlg.rs /^ pub fn ChooseColorW($/;" f +ChooseFontA vendor/winapi/src/um/commdlg.rs /^ pub fn ChooseFontA($/;" f +ChooseFontW vendor/winapi/src/um/commdlg.rs /^ pub fn ChooseFontW($/;" f +ChoosePixelFormat vendor/winapi/src/um/wingdi.rs /^ pub fn ChoosePixelFormat($/;" f +Chord vendor/winapi/src/um/wingdi.rs /^ pub fn Chord($/;" f +Chunk vendor/chunky-vec/src/lib.rs /^impl Chunk {$/;" c +Chunk vendor/chunky-vec/src/lib.rs /^impl Index for Chunk {$/;" c +Chunk vendor/chunky-vec/src/lib.rs /^impl IndexMut for Chunk {$/;" c +Chunk vendor/chunky-vec/src/lib.rs /^struct Chunk {$/;" s +Chunks vendor/futures-util/src/stream/stream/chunks.rs /^impl Sink for Chunks$/;" c +Chunks vendor/futures-util/src/stream/stream/chunks.rs /^impl FusedStream for Chunks {$/;" c +Chunks vendor/futures-util/src/stream/stream/chunks.rs /^impl Chunks$/;" c +Chunks vendor/futures-util/src/stream/stream/chunks.rs /^impl Stream for Chunks {$/;" c +Chunky Vec vendor/chunky-vec/README.md /^# Chunky Vec$/;" c +ChunkyVec vendor/chunky-vec/src/lib.rs /^impl<'a, T> IntoIterator for &'a ChunkyVec {$/;" c +ChunkyVec vendor/chunky-vec/src/lib.rs /^impl<'a, T> IntoIterator for &'a mut ChunkyVec {$/;" c +ChunkyVec vendor/chunky-vec/src/lib.rs /^impl ChunkyVec {$/;" c +ChunkyVec vendor/chunky-vec/src/lib.rs /^impl Default for ChunkyVec {$/;" c +ChunkyVec vendor/chunky-vec/src/lib.rs /^impl Index for ChunkyVec {$/;" c +ChunkyVec vendor/chunky-vec/src/lib.rs /^impl IndexMut for ChunkyVec {$/;" c +ChunkyVec vendor/chunky-vec/src/lib.rs /^impl Unpin for ChunkyVec {}$/;" c +ChunkyVec vendor/chunky-vec/src/lib.rs /^pub struct ChunkyVec {$/;" s +Class vendor/winapi/src/lib.rs /^pub trait Class {$/;" i +CleanupGuard vendor/slab/src/lib.rs /^ impl Drop for CleanupGuard<'_, T> {$/;" c method:Slab::compact +CleanupGuard vendor/slab/src/lib.rs /^ struct CleanupGuard<'a, T> {$/;" s method:Slab::compact +ClearCommBreak vendor/winapi/src/um/commapi.rs /^ pub fn ClearCommBreak($/;" f +ClearCommError vendor/winapi/src/um/commapi.rs /^ pub fn ClearCommError($/;" f +ClearEnvError vendor/nix/src/env.rs /^impl fmt::Display for ClearEnvError {$/;" c +ClearEnvError vendor/nix/src/env.rs /^impl std::error::Error for ClearEnvError {}$/;" c +ClearEnvError vendor/nix/src/env.rs /^pub struct ClearEnvError;$/;" s +Client vendor/async-trait/tests/ui/consider-restricting.rs /^impl ClientExt for Client {$/;" c +Client vendor/async-trait/tests/ui/consider-restricting.rs /^struct Client;$/;" s +Client2 vendor/async-trait/tests/ui/consider-restricting.rs /^impl ClientExt for Client2 {$/;" c +Client2 vendor/async-trait/tests/ui/consider-restricting.rs /^struct Client2;$/;" s +ClientExt vendor/async-trait/tests/ui/consider-restricting.rs /^pub trait ClientExt {$/;" i +ClientToScreen vendor/winapi/src/um/winuser.rs /^ pub fn ClientToScreen($/;" f +ClipCursor vendor/winapi/src/um/winuser.rs /^ pub fn ClipCursor($/;" f +ClockId vendor/nix/src/time.rs /^impl ClockId {$/;" c +ClockId vendor/nix/src/time.rs /^impl From for ClockId {$/;" c +ClockId vendor/nix/src/time.rs /^impl std::fmt::Display for ClockId {$/;" c +ClockId vendor/nix/src/time.rs /^pub struct ClockId(clockid_t);$/;" s +CloneCb vendor/nix/src/sched.rs /^ pub type CloneCb<'a> = Box isize + 'a>;$/;" t module:sched_linux_like +CloneStableDeref vendor/stable_deref_trait/src/lib.rs /^pub unsafe trait CloneStableDeref: StableDeref + Clone {}$/;" i +Close vendor/futures-executor/src/thread_pool.rs /^ Close,$/;" e enum:Message +Close vendor/futures-util/src/io/close.rs /^impl<'a, W: AsyncWrite + ?Sized + Unpin> Close<'a, W> {$/;" c +Close vendor/futures-util/src/io/close.rs /^impl Unpin for Close<'_, W> {}$/;" c +Close vendor/futures-util/src/io/close.rs /^impl Future for Close<'_, W> {$/;" c +Close vendor/futures-util/src/io/close.rs /^pub struct Close<'a, W: ?Sized> {$/;" s +Close vendor/futures-util/src/sink/close.rs /^impl<'a, Si: Sink + Unpin + ?Sized, Item> Close<'a, Si, Item> {$/;" c +Close vendor/futures-util/src/sink/close.rs /^impl + Unpin + ?Sized, Item> Future for Close<'_, Si, Item> {$/;" c +Close vendor/futures-util/src/sink/close.rs /^impl Unpin for Close<'_, Si, Item> {}$/;" c +Close vendor/futures-util/src/sink/close.rs /^pub struct Close<'a, Si: ?Sized, Item> {$/;" s +CloseClipboard vendor/winapi/src/um/winuser.rs /^ pub fn CloseClipboard() -> BOOL;$/;" f +CloseDesktop vendor/winapi/src/um/winuser.rs /^ pub fn CloseDesktop($/;" f +CloseEnhMetaFile vendor/winapi/src/um/wingdi.rs /^ pub fn CloseEnhMetaFile($/;" f +CloseFigure vendor/winapi/src/um/wingdi.rs /^ pub fn CloseFigure($/;" f +CloseHandle vendor/winapi/src/um/handleapi.rs /^ pub fn CloseHandle($/;" f +CloseMetaFile vendor/winapi/src/um/wingdi.rs /^ pub fn CloseMetaFile($/;" f +ClosePrinter vendor/winapi/src/um/winspool.rs /^ pub fn ClosePrinter($/;" f +ClosePrivateNamespace vendor/winapi/src/um/namespaceapi.rs /^ pub fn ClosePrivateNamespace($/;" f +ClosePseudoConsole vendor/winapi/src/um/consoleapi.rs /^ pub fn ClosePseudoConsole($/;" f +CloseServiceHandle vendor/winapi/src/um/winsvc.rs /^ pub fn CloseServiceHandle($/;" f +CloseSpoolFileHandle vendor/winapi/src/um/winspool.rs /^ pub fn CloseSpoolFileHandle($/;" f +CloseThemeData vendor/winapi/src/um/uxtheme.rs /^ pub fn CloseThemeData($/;" f +CloseThreadWaitChainSession vendor/winapi/src/um/wct.rs /^ pub fn CloseThreadWaitChainSession($/;" f +CloseThreadpool vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CloseThreadpool($/;" f +CloseThreadpoolCleanupGroup vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CloseThreadpoolCleanupGroup($/;" f +CloseThreadpoolCleanupGroupMembers vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CloseThreadpoolCleanupGroupMembers($/;" f +CloseThreadpoolIo vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CloseThreadpoolIo($/;" f +CloseThreadpoolTimer vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CloseThreadpoolTimer($/;" f +CloseThreadpoolWait vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CloseThreadpoolWait($/;" f +CloseThreadpoolWork vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CloseThreadpoolWork($/;" f +CloseTouchInputHandle vendor/winapi/src/um/winuser.rs /^ pub fn CloseTouchInputHandle($/;" f +CloseTrace vendor/winapi/src/shared/evntrace.rs /^ pub fn CloseTrace($/;" f +CloseWindow vendor/winapi/src/um/winuser.rs /^ pub fn CloseWindow($/;" f +CloseWindowStation vendor/winapi/src/um/winuser.rs /^ pub fn CloseWindowStation($/;" f +Cmd builtins_rust/cmd/src/lib.rs /^impl Cmd {$/;" c +Cmd builtins_rust/cmd/src/lib.rs /^pub struct Cmd {$/;" s +CngGetFipsAlgorithmMode vendor/winapi/src/shared/bcrypt.rs /^ pub fn CngGetFipsAlgorithmMode() -> BOOLEAN;$/;" f +Cnt vendor/nix/src/sys/socket/addr.rs /^ Cnt = libc::AF_CNT,$/;" e enum:AddressFamily +CoAddRefServerProcess vendor/winapi/src/um/combaseapi.rs /^ pub fn CoAddRefServerProcess() -> ULONG;$/;" f +CoAllowUnmarshalerCLSID vendor/winapi/src/um/combaseapi.rs /^ pub fn CoAllowUnmarshalerCLSID($/;" f +CoCancelCall vendor/winapi/src/um/combaseapi.rs /^ pub fn CoCancelCall($/;" f +CoCopyProxy vendor/winapi/src/um/combaseapi.rs /^ pub fn CoCopyProxy($/;" f +CoCreateFreeThreadedMarshaler vendor/winapi/src/um/combaseapi.rs /^ pub fn CoCreateFreeThreadedMarshaler($/;" f +CoCreateGuid vendor/winapi/src/um/combaseapi.rs /^ pub fn CoCreateGuid($/;" f +CoCreateInstance vendor/winapi/src/um/combaseapi.rs /^ pub fn CoCreateInstance($/;" f +CoCreateInstanceEx vendor/winapi/src/um/combaseapi.rs /^ pub fn CoCreateInstanceEx($/;" f +CoCreateInstanceFromApp vendor/winapi/src/um/combaseapi.rs /^ pub fn CoCreateInstanceFromApp($/;" f +CoDecodeProxy vendor/winapi/src/um/combaseapi.rs /^ pub fn CoDecodeProxy($/;" f +CoDecrementMTAUsage vendor/winapi/src/um/combaseapi.rs /^ pub fn CoDecrementMTAUsage($/;" f +CoDisableCallCancellation vendor/winapi/src/um/combaseapi.rs /^ pub fn CoDisableCallCancellation($/;" f +CoDisconnectContext vendor/winapi/src/um/combaseapi.rs /^ pub fn CoDisconnectContext($/;" f +CoDisconnectObject vendor/winapi/src/um/combaseapi.rs /^ pub fn CoDisconnectObject($/;" f +CoEnableCallCancellation vendor/winapi/src/um/combaseapi.rs /^ pub fn CoEnableCallCancellation($/;" f +CoFileTimeNow vendor/winapi/src/um/combaseapi.rs /^ pub fn CoFileTimeNow($/;" f +CoFreeUnusedLibraries vendor/winapi/src/um/combaseapi.rs /^ pub fn CoFreeUnusedLibraries();$/;" f +CoFreeUnusedLibrariesEx vendor/winapi/src/um/combaseapi.rs /^ pub fn CoFreeUnusedLibrariesEx($/;" f +CoGetApartmentType vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetApartmentType($/;" f +CoGetCallContext vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetCallContext($/;" f +CoGetCallerTID vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetCallerTID($/;" f +CoGetCancelObject vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetCancelObject($/;" f +CoGetClassObject vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetClassObject($/;" f +CoGetContextToken vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetContextToken($/;" f +CoGetCurrentLogicalThreadId vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetCurrentLogicalThreadId($/;" f +CoGetCurrentProcess vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetCurrentProcess() -> DWORD;$/;" f +CoGetDefaultContext vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetDefaultContext($/;" f +CoGetInterfaceAndReleaseStream vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetInterfaceAndReleaseStream($/;" f +CoGetMalloc vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetMalloc($/;" f +CoGetMarshalSizeMax vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetMarshalSizeMax($/;" f +CoGetObjectContext vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetObjectContext($/;" f +CoGetPSClsid vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetPSClsid($/;" f +CoGetStandardMarshal vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetStandardMarshal($/;" f +CoGetStdMarshalEx vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetStdMarshalEx($/;" f +CoGetTreatAsClass vendor/winapi/src/um/combaseapi.rs /^ pub fn CoGetTreatAsClass($/;" f +CoImpersonateClient vendor/winapi/src/um/combaseapi.rs /^ pub fn CoImpersonateClient() -> HRESULT;$/;" f +CoIncrementMTAUsage vendor/winapi/src/um/combaseapi.rs /^ pub fn CoIncrementMTAUsage($/;" f +CoInitialize vendor/winapi/src/um/objbase.rs /^ pub fn CoInitialize($/;" f +CoInitializeEx vendor/winapi/src/um/combaseapi.rs /^ pub fn CoInitializeEx($/;" f +CoInitializeSecurity vendor/winapi/src/um/combaseapi.rs /^ pub fn CoInitializeSecurity($/;" f +CoInvalidateRemoteMachineBindings vendor/winapi/src/um/combaseapi.rs /^ pub fn CoInvalidateRemoteMachineBindings($/;" f +CoIsHandlerConnected vendor/winapi/src/um/combaseapi.rs /^ pub fn CoIsHandlerConnected($/;" f +CoLockObjectExternal vendor/winapi/src/um/combaseapi.rs /^ pub fn CoLockObjectExternal($/;" f +CoMarshalHresult vendor/winapi/src/um/combaseapi.rs /^ pub fn CoMarshalHresult($/;" f +CoMarshalInterThreadInterfaceInStream vendor/winapi/src/um/combaseapi.rs /^ pub fn CoMarshalInterThreadInterfaceInStream($/;" f +CoMarshalInterface vendor/winapi/src/um/combaseapi.rs /^ pub fn CoMarshalInterface($/;" f +CoQueryAuthenticationServices vendor/winapi/src/um/combaseapi.rs /^ pub fn CoQueryAuthenticationServices($/;" f +CoQueryClientBlanket vendor/winapi/src/um/combaseapi.rs /^ pub fn CoQueryClientBlanket($/;" f +CoQueryProxyBlanket vendor/winapi/src/um/combaseapi.rs /^ pub fn CoQueryProxyBlanket($/;" f +CoRegisterActivationFilter vendor/winapi/src/um/combaseapi.rs /^ pub fn CoRegisterActivationFilter($/;" f +CoRegisterClassObject vendor/winapi/src/um/combaseapi.rs /^ pub fn CoRegisterClassObject($/;" f +CoRegisterPSClsid vendor/winapi/src/um/combaseapi.rs /^ pub fn CoRegisterPSClsid($/;" f +CoRegisterSurrogate vendor/winapi/src/um/combaseapi.rs /^ pub fn CoRegisterSurrogate($/;" f +CoReleaseMarshalData vendor/winapi/src/um/combaseapi.rs /^ pub fn CoReleaseMarshalData($/;" f +CoReleaseServerProcess vendor/winapi/src/um/combaseapi.rs /^ pub fn CoReleaseServerProcess() -> ULONG;$/;" f +CoResumeClassObjects vendor/winapi/src/um/combaseapi.rs /^ pub fn CoResumeClassObjects() -> HRESULT;$/;" f +CoRevertToSelf vendor/winapi/src/um/combaseapi.rs /^ pub fn CoRevertToSelf() -> HRESULT;$/;" f +CoRevokeClassObject vendor/winapi/src/um/combaseapi.rs /^ pub fn CoRevokeClassObject($/;" f +CoSetCancelObject vendor/winapi/src/um/combaseapi.rs /^ pub fn CoSetCancelObject($/;" f +CoSetProxyBlanket vendor/winapi/src/um/combaseapi.rs /^ pub fn CoSetProxyBlanket($/;" f +CoSuspendClassObjects vendor/winapi/src/um/combaseapi.rs /^ pub fn CoSuspendClassObjects() -> HRESULT;$/;" f +CoSwitchCallContext vendor/winapi/src/um/combaseapi.rs /^ pub fn CoSwitchCallContext($/;" f +CoTaskMemAlloc vendor/winapi/src/um/combaseapi.rs /^ pub fn CoTaskMemAlloc($/;" f +CoTaskMemFree vendor/winapi/src/um/combaseapi.rs /^ pub fn CoTaskMemFree($/;" f +CoTaskMemRealloc vendor/winapi/src/um/combaseapi.rs /^ pub fn CoTaskMemRealloc($/;" f +CoTestCancel vendor/winapi/src/um/combaseapi.rs /^ pub fn CoTestCancel() -> HRESULT;$/;" f +CoUninitialize vendor/winapi/src/um/combaseapi.rs /^ pub fn CoUninitialize() -> ();$/;" f +CoUnmarshalHresult vendor/winapi/src/um/combaseapi.rs /^ pub fn CoUnmarshalHresult($/;" f +CoUnmarshalInterface vendor/winapi/src/um/combaseapi.rs /^ pub fn CoUnmarshalInterface($/;" f +CoWaitForMultipleHandles vendor/winapi/src/um/combaseapi.rs /^ pub fn CoWaitForMultipleHandles($/;" f +CoWaitForMultipleObjects vendor/winapi/src/um/combaseapi.rs /^ pub fn CoWaitForMultipleObjects($/;" f +Code vendor/fluent-bundle/src/types/number.rs /^ Code,$/;" e enum:FluentNumberCurrencyDisplayStyle +Coip vendor/nix/src/sys/socket/addr.rs /^ Coip = libc::AF_COIP,$/;" e enum:AddressFamily +Collect vendor/futures-util/src/stream/stream/collect.rs /^impl FusedFuture for Collect$/;" c +Collect vendor/futures-util/src/stream/stream/collect.rs /^impl Future for Collect$/;" c +Collect vendor/futures-util/src/stream/stream/collect.rs /^impl Collect {$/;" c +CollectExprs vendor/syn/tests/test_precedence.rs /^ impl Fold for CollectExprs {$/;" c function:collect_exprs +CollectExprs vendor/syn/tests/test_precedence.rs /^ struct CollectExprs(Vec);$/;" s function:collect_exprs +CollectLifetimes vendor/async-trait/src/lifetime.rs /^impl CollectLifetimes {$/;" c +CollectLifetimes vendor/async-trait/src/lifetime.rs /^impl VisitMut for CollectLifetimes {$/;" c +CollectLifetimes vendor/async-trait/src/lifetime.rs /^pub struct CollectLifetimes {$/;" s +CollectionAllocErr vendor/smallvec/src/lib.rs /^impl From for CollectionAllocErr {$/;" c +CollectionAllocErr vendor/smallvec/src/lib.rs /^impl fmt::Display for CollectionAllocErr {$/;" c +CollectionAllocErr vendor/smallvec/src/lib.rs /^pub enum CollectionAllocErr {$/;" g +ColonCmd builtins_rust/exec_cmd/src/lib.rs /^ ColonCmd,$/;" e enum:CMDType +ColonComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for ColonComand {$/;" c +ColonComand builtins_rust/exec_cmd/src/lib.rs /^struct ColonComand;$/;" s +ColorCorrectPalette vendor/winapi/src/um/wingdi.rs /^ pub fn ColorCorrectPalette($/;" f +ColorMatchToTarget vendor/winapi/src/um/wingdi.rs /^ pub fn ColorMatchToTarget($/;" f +CombineRgn vendor/winapi/src/um/wingdi.rs /^ pub fn CombineRgn($/;" f +CombineTransform vendor/winapi/src/um/wingdi.rs /^ pub fn CombineTransform($/;" f +CombinedBacktraceFrom vendor/thiserror/tests/test_backtrace.rs /^ pub enum CombinedBacktraceFrom {$/;" g module:enums +CombinedBacktraceFrom vendor/thiserror/tests/test_backtrace.rs /^ pub struct CombinedBacktraceFrom {$/;" s module:structs +Combining quoted fragments vendor/quote/README.md /^### Combining quoted fragments$/;" S section:Rust Quasi-Quoting""Examples +CommConfigDialogA vendor/winapi/src/um/winbase.rs /^ pub fn CommConfigDialogA($/;" f +CommConfigDialogW vendor/winapi/src/um/winbase.rs /^ pub fn CommConfigDialogW($/;" f +CommDlgExtendedError vendor/winapi/src/um/commdlg.rs /^ pub fn CommDlgExtendedError() -> DWORD;$/;" f +CommandCmd builtins_rust/exec_cmd/src/lib.rs /^ CommandCmd,$/;" e enum:CMDType +CommandComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for CommandComand {$/;" c +CommandComand builtins_rust/exec_cmd/src/lib.rs /^struct CommandComand;$/;" s +CommandExec builtins_rust/exec_cmd/src/lib.rs /^pub trait CommandExec {$/;" i +CommandLineFromMsiDescriptor vendor/winapi/src/um/appmgmt.rs /^ pub fn CommandLineFromMsiDescriptor($/;" f +CommandLineToArgvW vendor/winapi/src/um/shellapi.rs /^ pub fn CommandLineToArgvW($/;" f +Comment vendor/fluent-syntax/src/ast/helper.rs /^impl<'s, S> From> for Comment {$/;" c +Comment vendor/fluent-syntax/src/ast/mod.rs /^ Comment(Comment),$/;" e enum:Entry +Comment vendor/fluent-syntax/src/ast/mod.rs /^pub struct Comment {$/;" s +CommentDef vendor/fluent-syntax/src/ast/helper.rs /^pub enum CommentDef {$/;" g +CommitSpoolData vendor/winapi/src/um/winspool.rs /^ pub fn CommitSpoolData($/;" f +CommitTransaction vendor/winapi/src/um/ktmw32.rs /^ pub fn CommitTransaction($/;" f +CommitUrlCacheEntryA vendor/winapi/src/um/wininet.rs /^ pub fn CommitUrlCacheEntryA($/;" f +CommitUrlCacheEntryW vendor/winapi/src/um/wininet.rs /^ pub fn CommitUrlCacheEntryW($/;" f +CommonCmd builtins_rust/exec_cmd/src/lib.rs /^ CommonCmd,$/;" e enum:CMDType +CommonComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for CommonComand {$/;" c +CommonComand builtins_rust/exec_cmd/src/lib.rs /^struct CommonComand;$/;" s +CompactsArray builtins_rust/complete/src/lib.rs /^impl CompactsArray {$/;" c +CompactsArray builtins_rust/complete/src/lib.rs /^pub struct CompactsArray {$/;" s +Compare vendor/syn/src/expr.rs /^ Compare,$/;" e enum:parsing::Precedence +CompareFileTime vendor/winapi/src/um/fileapi.rs /^ pub fn CompareFileTime($/;" f +CompareObjectHandles vendor/winapi/src/um/handleapi.rs /^ pub fn CompareObjectHandles($/;" f +CompareStringA vendor/winapi/src/um/winnls.rs /^ pub fn CompareStringA($/;" f +CompareStringEx vendor/winapi/src/um/stringapiset.rs /^ pub fn CompareStringEx($/;" f +CompareStringEx vendor/winapi/src/um/winnls.rs /^ pub fn CompareStringEx($/;" f +CompareStringOrdinal vendor/winapi/src/um/stringapiset.rs /^ pub fn CompareStringOrdinal($/;" f +CompareStringW vendor/winapi/src/um/stringapiset.rs /^ pub fn CompareStringW($/;" f +CompareStringW vendor/winapi/src/um/winnls.rs /^ pub fn CompareStringW($/;" f +Comparison of data structures vendor/unicode-ident/README.md /^## Comparison of data structures$/;" s chapter:Unicode ident +Comparison of performance vendor/unicode-ident/README.md /^## Comparison of performance$/;" s chapter:Unicode ident +Comparison to anyhow vendor/thiserror/README.md /^## Comparison to anyhow$/;" s chapter:derive(Error) +Compat vendor/futures-util/src/compat/compat03as01.rs /^ impl AsyncRead01 for Compat {}$/;" c module:io +Compat vendor/futures-util/src/compat/compat03as01.rs /^ impl std::io::Read for Compat {$/;" c module:io +Compat vendor/futures-util/src/compat/compat03as01.rs /^ impl AsyncWrite01 for Compat {$/;" c module:io +Compat vendor/futures-util/src/compat/compat03as01.rs /^ impl std::io::Write for Compat {$/;" c module:io +Compat vendor/futures-util/src/compat/compat03as01.rs /^impl Future01 for Compat$/;" c +Compat vendor/futures-util/src/compat/compat03as01.rs /^impl Stream01 for Compat$/;" c +Compat vendor/futures-util/src/compat/compat03as01.rs /^impl Compat {$/;" c +Compat vendor/futures-util/src/compat/compat03as01.rs /^pub struct Compat {$/;" s +Compat vendor/futures-util/src/compat/executor.rs /^impl Executor01 for Compat$/;" c +Compat01As03 vendor/futures-util/src/compat/compat01as03.rs /^ impl AsyncRead03 for Compat01As03 {$/;" c module:io +Compat01As03 vendor/futures-util/src/compat/compat01as03.rs /^ impl AsyncWrite03 for Compat01As03 {$/;" c module:io +Compat01As03 vendor/futures-util/src/compat/compat01as03.rs /^impl Future03 for Compat01As03 {$/;" c +Compat01As03 vendor/futures-util/src/compat/compat01as03.rs /^impl Stream03 for Compat01As03 {$/;" c +Compat01As03 vendor/futures-util/src/compat/compat01as03.rs /^impl Compat01As03 {$/;" c +Compat01As03 vendor/futures-util/src/compat/compat01as03.rs /^impl Unpin for Compat01As03 {}$/;" c +Compat01As03 vendor/futures-util/src/compat/compat01as03.rs /^pub struct Compat01As03 {$/;" s +Compat01As03Sink vendor/futures-util/src/compat/compat01as03.rs /^impl Compat01As03Sink {$/;" c +Compat01As03Sink vendor/futures-util/src/compat/compat01as03.rs /^impl Sink03 for Compat01As03Sink$/;" c +Compat01As03Sink vendor/futures-util/src/compat/compat01as03.rs /^impl Stream03 for Compat01As03Sink$/;" c +Compat01As03Sink vendor/futures-util/src/compat/compat01as03.rs /^impl Unpin for Compat01As03Sink {}$/;" c +Compat01As03Sink vendor/futures-util/src/compat/compat01as03.rs /^pub struct Compat01As03Sink {$/;" s +CompatSink vendor/futures-util/src/compat/compat03as01.rs /^impl CompatSink {$/;" c +CompatSink vendor/futures-util/src/compat/compat03as01.rs /^impl Sink01 for CompatSink$/;" c +CompatSink vendor/futures-util/src/compat/compat03as01.rs /^pub struct CompatSink {$/;" s +Compatibility vendor/fluent-langneg/README.md /^Compatibility$/;" s chapter:Fluent LangNeg +CompgenCmd builtins_rust/exec_cmd/src/lib.rs /^ CompgenCmd,$/;" e enum:CMDType +CompgenCommand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for CompgenCommand {$/;" c +CompgenCommand builtins_rust/exec_cmd/src/lib.rs /^struct CompgenCommand;$/;" s +Compiler vendor/proc-macro2/src/wrapper.rs /^ Compiler(DeferredTokenStream),$/;" e enum:TokenStream +Compiler vendor/proc-macro2/src/wrapper.rs /^ Compiler(proc_macro::Group),$/;" e enum:Group +Compiler vendor/proc-macro2/src/wrapper.rs /^ Compiler(proc_macro::Ident),$/;" e enum:Ident +Compiler vendor/proc-macro2/src/wrapper.rs /^ Compiler(proc_macro::LexError),$/;" e enum:LexError +Compiler vendor/proc-macro2/src/wrapper.rs /^ Compiler(proc_macro::Literal),$/;" e enum:Literal +Compiler vendor/proc-macro2/src/wrapper.rs /^ Compiler(proc_macro::SourceFile),$/;" e enum:SourceFile +Compiler vendor/proc-macro2/src/wrapper.rs /^ Compiler(proc_macro::Span),$/;" e enum:Span +Compiler vendor/proc-macro2/src/wrapper.rs /^ Compiler(proc_macro::token_stream::IntoIter),$/;" e enum:TokenTreeIter +Compiler vendor/syn/build.rs /^struct Compiler {$/;" s +CompilerError vendor/thiserror/tests/test_expr.rs /^pub enum CompilerError {$/;" g +Compiling without the standard library vendor/memchr/README.md /^### Compiling without the standard library$/;" S chapter:memchr +Complete vendor/futures-macro/src/select.rs /^ Complete,$/;" e enum:CaseKind +CompleteAuthToken vendor/winapi/src/shared/sspi.rs /^ pub fn CompleteAuthToken($/;" f +CompleteCmd builtins_rust/exec_cmd/src/lib.rs /^ CompleteCmd,$/;" e enum:CMDType +CompleteComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for CompleteComand {$/;" c +CompleteComand builtins_rust/exec_cmd/src/lib.rs /^struct CompleteComand;$/;" s +CompoptArray builtins_rust/complete/src/lib.rs /^impl CompoptArray {$/;" c +CompoptArray builtins_rust/complete/src/lib.rs /^pub struct CompoptArray {$/;" s +CompoptCmd builtins_rust/exec_cmd/src/lib.rs /^ CompoptCmd,$/;" e enum:CMDType +CompoptCommand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for CompoptCommand {$/;" c +CompoptCommand builtins_rust/exec_cmd/src/lib.rs /^struct CompoptCommand;$/;" s +Concat vendor/futures-util/src/stream/stream/concat.rs /^impl Concat$/;" c +Concat vendor/futures-util/src/stream/stream/concat.rs /^impl FusedFuture for Concat$/;" c +Concat vendor/futures-util/src/stream/stream/concat.rs /^impl Future for Concat$/;" c +Cond command.h /^ struct cond_com *Cond;$/;" m union:command::__anon3aaf009a020a typeref:struct:cond_com * +Conduct vendor/rustc-hash/CODE_OF_CONDUCT.md /^## Conduct$/;" s chapter:The Rust Code of Conduct +ConfigurePortA vendor/winapi/src/um/winspool.rs /^ pub fn ConfigurePortA($/;" f +ConfigurePortW vendor/winapi/src/um/winspool.rs /^ pub fn ConfigurePortW($/;" f +Confusing vendor/thiserror/tests/ui/duplicate-enum-source.rs /^ Confusing {$/;" e enum:ErrorEnum +ConnectNamedPipe vendor/winapi/src/um/namedpipeapi.rs /^ pub fn ConnectNamedPipe($/;" f +ConnectToPrinterDlg vendor/winapi/src/um/winspool.rs /^ pub fn ConnectToPrinterDlg($/;" f +Connection command.h /^ struct connection *Connection;$/;" m union:command::__anon3aaf009a020a typeref:struct:connection * +Connection vendor/async-trait/tests/test.rs /^ type Connection: Send + 'static;$/;" t interface:issue145::ManageConnection +ConstParam vendor/syn/src/gen/clone.rs /^impl Clone for ConstParam {$/;" c +ConstParam vendor/syn/src/gen/debug.rs /^impl Debug for ConstParam {$/;" c +ConstParam vendor/syn/src/gen/eq.rs /^impl Eq for ConstParam {}$/;" c +ConstParam vendor/syn/src/gen/eq.rs /^impl PartialEq for ConstParam {$/;" c +ConstParam vendor/syn/src/gen/hash.rs /^impl Hash for ConstParam {$/;" c +ConstParam vendor/syn/src/generics.rs /^ impl Parse for ConstParam {$/;" c module:parsing +ConstParam vendor/syn/src/generics.rs /^ impl ToTokens for ConstParam {$/;" c module:printing +ConstParams vendor/syn/src/generics.rs /^impl<'a> Iterator for ConstParams<'a> {$/;" c +ConstParams vendor/syn/src/generics.rs /^pub struct ConstParams<'a>(Iter<'a, GenericParam>);$/;" s +ConstParamsMut vendor/syn/src/generics.rs /^impl<'a> Iterator for ConstParamsMut<'a> {$/;" c +ConstParamsMut vendor/syn/src/generics.rs /^pub struct ConstParamsMut<'a>(IterMut<'a, GenericParam>);$/;" s +Constraint vendor/syn/src/gen/clone.rs /^impl Clone for Constraint {$/;" c +Constraint vendor/syn/src/gen/debug.rs /^impl Debug for Constraint {$/;" c +Constraint vendor/syn/src/gen/eq.rs /^impl Eq for Constraint {}$/;" c +Constraint vendor/syn/src/gen/eq.rs /^impl PartialEq for Constraint {$/;" c +Constraint vendor/syn/src/gen/hash.rs /^impl Hash for Constraint {$/;" c +Constraint vendor/syn/src/path.rs /^ impl Parse for Constraint {$/;" c module:parsing +Constraint vendor/syn/src/path.rs /^ impl ToTokens for Constraint {$/;" c module:printing +Constraints vendor/syn/tests/test_round_trip.rs /^ Constraints,$/;" e enum:normalize::NormalizeVisitor::visit_angle_bracketed_parameter_data::Group +Constructing identifiers vendor/quote/README.md /^### Constructing identifiers$/;" S section:Rust Quasi-Quoting""Examples +Context vendor/async-trait/src/expand.rs /^enum Context<'a> {$/;" g +Context vendor/async-trait/src/expand.rs /^impl Context<'_> {$/;" c +Context vendor/async-trait/tests/test.rs /^ pub trait Context: Sized {$/;" i module:issue42 +Continuation vendor/fluent-syntax/src/parser/pattern.rs /^ Continuation,$/;" e enum:TextElementPosition +ContinueCmd builtins_rust/exec_cmd/src/lib.rs /^ ContinueCmd,$/;" e enum:CMDType +ContinueComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for ContinueComand {$/;" c +ContinueComand builtins_rust/exec_cmd/src/lib.rs /^struct ContinueComand;$/;" s +ContinueDebugEvent vendor/winapi/src/um/debugapi.rs /^ pub fn ContinueDebugEvent($/;" f +Continued vendor/nix/src/sys/wait.rs /^ Continued(Pid),$/;" e enum:WaitStatus +Contributing vendor/libc/README.md /^## Contributing$/;" s chapter:libc - Raw FFI bindings to platforms' system libraries +Contributing vendor/nix/README.md /^## Contributing$/;" s chapter:Rust bindings to *nix APIs +Contributing vendor/self_cell/README.md /^## Contributing$/;" s chapter:`self_cell!` +Contributing vendor/stdext/README.md /^## Contributing$/;" s chapter:`std` extensions +Contributing guide vendor/stdext/CONTRIBUTING.md /^# Contributing guide$/;" c +Contributing to `libc` vendor/libc/CONTRIBUTING.md /^# Contributing to `libc`$/;" c +Contribution vendor/cfg-if/README.md /^### Contribution$/;" S chapter:License +Contribution vendor/lazy_static/README.md /^### Contribution$/;" S section:Example""License +Contribution vendor/pin-utils/README.md /^### Contribution$/;" S chapter:License +Contribution vendor/slab/README.md /^### Contribution$/;" S section:Slab""License +Contributor Covenant Code of Conduct vendor/bitflags/CODE_OF_CONDUCT.md /^# Contributor Covenant Code of Conduct$/;" c +Contributors vendor/intl_pluralrules/README.md /^Contributors$/;" s chapter:INTL Plural Rules +ControlService vendor/winapi/src/um/winsvc.rs /^ pub fn ControlService($/;" f +ControlServiceExA vendor/winapi/src/um/winsvc.rs /^ pub fn ControlServiceExA($/;" f +ControlServiceExW vendor/winapi/src/um/winsvc.rs /^ pub fn ControlServiceExW($/;" f +ControlTraceA vendor/winapi/src/shared/evntrace.rs /^ pub fn ControlTraceA($/;" f +ControlTraceW vendor/winapi/src/shared/evntrace.rs /^ pub fn ControlTraceW($/;" f +ConvertCompartmentGuidToId vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertCompartmentGuidToId($/;" f +ConvertCompartmentIdToGuid vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertCompartmentIdToGuid($/;" f +ConvertDefaultLocale vendor/winapi/src/um/winnls.rs /^ pub fn ConvertDefaultLocale(Locale: LCID) -> LCID;$/;" f +ConvertFiberToThread vendor/winapi/src/um/winbase.rs /^ pub fn ConvertFiberToThread() -> BOOL;$/;" f +ConvertInterfaceAliasToLuid vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertInterfaceAliasToLuid($/;" f +ConvertInterfaceGuidToLuid vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertInterfaceGuidToLuid($/;" f +ConvertInterfaceIndexToLuid vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertInterfaceIndexToLuid($/;" f +ConvertInterfaceLuidToAlias vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertInterfaceLuidToAlias($/;" f +ConvertInterfaceLuidToGuid vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertInterfaceLuidToGuid($/;" f +ConvertInterfaceLuidToIndex vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertInterfaceLuidToIndex($/;" f +ConvertInterfaceLuidToNameA vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertInterfaceLuidToNameA($/;" f +ConvertInterfaceLuidToNameW vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertInterfaceLuidToNameW($/;" f +ConvertInterfaceNameToLuidA vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertInterfaceNameToLuidA($/;" f +ConvertInterfaceNameToLuidW vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertInterfaceNameToLuidW($/;" f +ConvertIpv4MaskToLength vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertIpv4MaskToLength($/;" f +ConvertLengthToIpv4Mask vendor/winapi/src/shared/netioapi.rs /^ pub fn ConvertLengthToIpv4Mask($/;" f +ConvertSecurityDescriptorToStringSecurityDescriptorA vendor/winapi/src/shared/sddl.rs /^ pub fn ConvertSecurityDescriptorToStringSecurityDescriptorA($/;" f +ConvertSecurityDescriptorToStringSecurityDescriptorW vendor/winapi/src/shared/sddl.rs /^ pub fn ConvertSecurityDescriptorToStringSecurityDescriptorW($/;" f +ConvertSidToStringSidA vendor/winapi/src/shared/sddl.rs /^ pub fn ConvertSidToStringSidA($/;" f +ConvertSidToStringSidW vendor/winapi/src/shared/sddl.rs /^ pub fn ConvertSidToStringSidW($/;" f +ConvertStringSecurityDescriptorToSecurityDescriptorA vendor/winapi/src/shared/sddl.rs /^ pub fn ConvertStringSecurityDescriptorToSecurityDescriptorA($/;" f +ConvertStringSecurityDescriptorToSecurityDescriptorW vendor/winapi/src/shared/sddl.rs /^ pub fn ConvertStringSecurityDescriptorToSecurityDescriptorW($/;" f +ConvertStringSidToSidA vendor/winapi/src/shared/sddl.rs /^ pub fn ConvertStringSidToSidA($/;" f +ConvertStringSidToSidW vendor/winapi/src/shared/sddl.rs /^ pub fn ConvertStringSidToSidW($/;" f +ConvertThreadToFiber vendor/winapi/src/um/winbase.rs /^ pub fn ConvertThreadToFiber($/;" f +ConvertThreadToFiberEx vendor/winapi/src/um/winbase.rs /^ pub fn ConvertThreadToFiberEx($/;" f +ConvertToAutoInheritPrivateObjectSecurity vendor/winapi/src/um/securitybaseapi.rs /^ pub fn ConvertToAutoInheritPrivateObjectSecurity($/;" f +Coproc builtins_rust/kill/src/intercdep.rs /^pub type Coproc = coproc;$/;" t +Coproc builtins_rust/setattr/src/intercdep.rs /^pub type Coproc = coproc;$/;" t +Coproc command.h /^ struct coproc_com *Coproc;$/;" m union:command::__anon3aaf009a020a typeref:struct:coproc_com * +Coproc command.h /^} Coproc;$/;" t typeref:struct:coproc +Coproc r_bash/src/lib.rs /^pub type Coproc = coproc;$/;" t +Coproc r_glob/src/lib.rs /^pub type Coproc = coproc;$/;" t +Coproc r_readline/src/lib.rs /^pub type Coproc = coproc;$/;" t +Copy vendor/futures-util/src/io/copy.rs /^impl Future for Copy<'_, R, W> {$/;" c +CopyAcceleratorTableA vendor/winapi/src/um/winuser.rs /^ pub fn CopyAcceleratorTableA($/;" f +CopyAcceleratorTableW vendor/winapi/src/um/winuser.rs /^ pub fn CopyAcceleratorTableW($/;" f +CopyBuf vendor/futures-util/src/io/copy_buf.rs /^impl Future for CopyBuf<'_, R, W>$/;" c +CopyBufAbortable vendor/futures-util/src/io/copy_buf_abortable.rs /^impl Future for CopyBufAbortable<'_, R, W>$/;" c +CopyContext vendor/winapi/src/um/winbase.rs /^ pub fn CopyContext($/;" f +CopyEnhMetaFileA vendor/winapi/src/um/wingdi.rs /^ pub fn CopyEnhMetaFileA($/;" f +CopyEnhMetaFileW vendor/winapi/src/um/wingdi.rs /^ pub fn CopyEnhMetaFileW($/;" f +CopyFile2 vendor/winapi/src/um/winbase.rs /^ pub fn CopyFile2($/;" f +CopyFileA vendor/winapi/src/um/winbase.rs /^ pub fn CopyFileA($/;" f +CopyFileExA vendor/winapi/src/um/winbase.rs /^ pub fn CopyFileExA($/;" f +CopyFileExW vendor/winapi/src/um/winbase.rs /^ pub fn CopyFileExW($/;" f +CopyFileTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn CopyFileTransactedA($/;" f +CopyFileTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn CopyFileTransactedW($/;" f +CopyFileW vendor/winapi/src/um/winbase.rs /^ pub fn CopyFileW($/;" f +CopyIcon vendor/winapi/src/um/winuser.rs /^ pub fn CopyIcon($/;" f +CopyImage vendor/winapi/src/um/winuser.rs /^ pub fn CopyImage($/;" f +CopyMetaFileA vendor/winapi/src/um/wingdi.rs /^ pub fn CopyMetaFileA($/;" f +CopyMetaFileW vendor/winapi/src/um/wingdi.rs /^ pub fn CopyMetaFileW($/;" f +CopyRect vendor/winapi/src/um/winuser.rs /^ pub fn CopyRect($/;" f +CopySid vendor/winapi/src/um/securitybaseapi.rs /^ pub fn CopySid($/;" f +Count vendor/futures-util/src/stream/stream/count.rs /^impl FusedFuture for Count {$/;" c +Count vendor/futures-util/src/stream/stream/count.rs /^impl Count {$/;" c +Count vendor/futures-util/src/stream/stream/count.rs /^impl Future for Count {$/;" c +Count vendor/futures-util/src/stream/stream/count.rs /^impl fmt::Debug for Count$/;" c +CountClipboardFormats vendor/winapi/src/um/winuser.rs /^ pub fn CountClipboardFormats() -> c_int;$/;" f +CountClone vendor/futures/tests/future_shared.rs /^impl Clone for CountClone {$/;" c +CountClone vendor/futures/tests/future_shared.rs /^struct CountClone(Rc>);$/;" s +CountingWaker vendor/futures/tests/task_arc_wake.rs /^impl ArcWake for CountingWaker {$/;" c +CountingWaker vendor/futures/tests/task_arc_wake.rs /^impl CountingWaker {$/;" c +CountingWaker vendor/futures/tests/task_arc_wake.rs /^struct CountingWaker {$/;" s +Cow vendor/quote/src/ident_fragment.rs /^impl IdentFragment for Cow<'_, T>$/;" c +Cow vendor/quote/src/to_tokens.rs /^impl<'a, T: ?Sized + ToOwned + ToTokens> ToTokens for Cow<'a, T> {$/;" c +CowBytes vendor/memchr/src/cow.rs /^impl<'a> CowBytes<'a> {$/;" c +CowBytes vendor/memchr/src/cow.rs /^impl<'a> ops::Deref for CowBytes<'a> {$/;" c +CowBytes vendor/memchr/src/cow.rs /^pub struct CowBytes<'a>(Imp<'a>);$/;" s +CpuSet vendor/nix/src/sched.rs /^ impl CpuSet {$/;" c module:sched_affinity +CpuSet vendor/nix/src/sched.rs /^ impl Default for CpuSet {$/;" c module:sched_affinity +CpuSet vendor/nix/src/sched.rs /^ pub struct CpuSet {$/;" s module:sched_affinity +CreateAcceleratorTableA vendor/winapi/src/um/winuser.rs /^ pub fn CreateAcceleratorTableA($/;" f +CreateAcceleratorTableW vendor/winapi/src/um/winuser.rs /^ pub fn CreateAcceleratorTableW($/;" f +CreateActCtxA vendor/winapi/src/um/winbase.rs /^ pub fn CreateActCtxA($/;" f +CreateActCtxW vendor/winapi/src/um/winbase.rs /^ pub fn CreateActCtxW($/;" f +CreateAnycastIpAddressEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn CreateAnycastIpAddressEntry($/;" f +CreateAppContainerProfile vendor/winapi/src/um/userenv.rs /^ pub fn CreateAppContainerProfile($/;" f +CreateBitmap vendor/winapi/src/um/wingdi.rs /^ pub fn CreateBitmap($/;" f +CreateBitmapIndirect vendor/winapi/src/um/wingdi.rs /^ pub fn CreateBitmapIndirect($/;" f +CreateBoundaryDescriptorA vendor/winapi/src/um/winbase.rs /^ pub fn CreateBoundaryDescriptorA($/;" f +CreateBoundaryDescriptorW vendor/winapi/src/um/namespaceapi.rs /^ pub fn CreateBoundaryDescriptorW($/;" f +CreateBrushIndirect vendor/winapi/src/um/wingdi.rs /^ pub fn CreateBrushIndirect($/;" f +CreateCString vendor/libloading/src/error.rs /^ CreateCString {$/;" e enum:Error +CreateCStringWithTrailing vendor/libloading/src/error.rs /^ CreateCStringWithTrailing {$/;" e enum:Error +CreateCaret vendor/winapi/src/um/winuser.rs /^ pub fn CreateCaret($/;" f +CreateColorSpaceA vendor/winapi/src/um/wingdi.rs /^ pub fn CreateColorSpaceA($/;" f +CreateColorSpaceW vendor/winapi/src/um/wingdi.rs /^ pub fn CreateColorSpaceW($/;" f +CreateCompatibleBitmap vendor/winapi/src/um/wingdi.rs /^ pub fn CreateCompatibleBitmap($/;" f +CreateCompatibleDC vendor/winapi/src/um/wingdi.rs /^ pub fn CreateCompatibleDC($/;" f +CreateConsoleScreenBuffer vendor/winapi/src/um/wincon.rs /^ pub fn CreateConsoleScreenBuffer($/;" f +CreateCursor vendor/winapi/src/um/winuser.rs /^ pub fn CreateCursor($/;" f +CreateDCA vendor/winapi/src/um/wingdi.rs /^ pub fn CreateDCA($/;" f +CreateDCW vendor/winapi/src/um/wingdi.rs /^ pub fn CreateDCW($/;" f +CreateDIBPatternBrush vendor/winapi/src/um/wingdi.rs /^ pub fn CreateDIBPatternBrush($/;" f +CreateDIBPatternBrushPt vendor/winapi/src/um/wingdi.rs /^ pub fn CreateDIBPatternBrushPt($/;" f +CreateDIBSection vendor/winapi/src/um/wingdi.rs /^ pub fn CreateDIBSection($/;" f +CreateDIBitmap vendor/winapi/src/um/wingdi.rs /^ pub fn CreateDIBitmap($/;" f +CreateDXGIFactory vendor/winapi/src/shared/dxgi.rs /^ pub fn CreateDXGIFactory($/;" f +CreateDXGIFactory1 vendor/winapi/src/shared/dxgi.rs /^ pub fn CreateDXGIFactory1($/;" f +CreateDXGIFactory2 vendor/winapi/src/shared/dxgi1_3.rs /^ pub fn CreateDXGIFactory2($/;" f +CreateDesktopA vendor/winapi/src/um/winuser.rs /^ pub fn CreateDesktopA($/;" f +CreateDesktopExA vendor/winapi/src/um/winuser.rs /^ pub fn CreateDesktopExA($/;" f +CreateDesktopExW vendor/winapi/src/um/winuser.rs /^ pub fn CreateDesktopExW($/;" f +CreateDesktopW vendor/winapi/src/um/winuser.rs /^ pub fn CreateDesktopW($/;" f +CreateDialogIndirectParamA vendor/winapi/src/um/winuser.rs /^ pub fn CreateDialogIndirectParamA($/;" f +CreateDialogIndirectParamW vendor/winapi/src/um/winuser.rs /^ pub fn CreateDialogIndirectParamW($/;" f +CreateDialogParamA vendor/winapi/src/um/winuser.rs /^ pub fn CreateDialogParamA($/;" f +CreateDialogParamW vendor/winapi/src/um/winuser.rs /^ pub fn CreateDialogParamW($/;" f +CreateDirectoryA vendor/winapi/src/um/fileapi.rs /^ pub fn CreateDirectoryA($/;" f +CreateDirectoryExA vendor/winapi/src/um/winbase.rs /^ pub fn CreateDirectoryExA($/;" f +CreateDirectoryExW vendor/winapi/src/um/winbase.rs /^ pub fn CreateDirectoryExW($/;" f +CreateDirectoryTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn CreateDirectoryTransactedA($/;" f +CreateDirectoryTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn CreateDirectoryTransactedW($/;" f +CreateDirectoryW vendor/winapi/src/um/fileapi.rs /^ pub fn CreateDirectoryW($/;" f +CreateDiscardableBitmap vendor/winapi/src/um/wingdi.rs /^ pub fn CreateDiscardableBitmap($/;" f +CreateEllipticRgn vendor/winapi/src/um/wingdi.rs /^ pub fn CreateEllipticRgn($/;" f +CreateEllipticRgnIndirect vendor/winapi/src/um/wingdi.rs /^ pub fn CreateEllipticRgnIndirect($/;" f +CreateEnclave vendor/winapi/src/um/enclaveapi.rs /^ pub fn CreateEnclave($/;" f +CreateEnhMetaFileA vendor/winapi/src/um/wingdi.rs /^ pub fn CreateEnhMetaFileA($/;" f +CreateEnhMetaFileW vendor/winapi/src/um/wingdi.rs /^ pub fn CreateEnhMetaFileW($/;" f +CreateEnvironmentBlock vendor/winapi/src/um/userenv.rs /^ pub fn CreateEnvironmentBlock($/;" f +CreateErrorInfo vendor/winapi/src/um/oleauto.rs /^ pub fn CreateErrorInfo($/;" f +CreateEventA vendor/winapi/src/um/synchapi.rs /^ pub fn CreateEventA($/;" f +CreateEventExA vendor/winapi/src/um/synchapi.rs /^ pub fn CreateEventExA($/;" f +CreateEventExW vendor/winapi/src/um/synchapi.rs /^ pub fn CreateEventExW($/;" f +CreateEventW vendor/winapi/src/um/synchapi.rs /^ pub fn CreateEventW($/;" f +CreateFiber vendor/winapi/src/um/winbase.rs /^ pub fn CreateFiber($/;" f +CreateFiberEx vendor/winapi/src/um/winbase.rs /^ pub fn CreateFiberEx($/;" f +CreateFile2 vendor/winapi/src/um/fileapi.rs /^ pub fn CreateFile2($/;" f +CreateFileA vendor/winapi/src/um/fileapi.rs /^ pub fn CreateFileA($/;" f +CreateFileMappingA vendor/winapi/src/um/winbase.rs /^ pub fn CreateFileMappingA($/;" f +CreateFileMappingFromApp vendor/winapi/src/um/memoryapi.rs /^ pub fn CreateFileMappingFromApp($/;" f +CreateFileMappingNumaA vendor/winapi/src/um/winbase.rs /^ pub fn CreateFileMappingNumaA($/;" f +CreateFileMappingNumaW vendor/winapi/src/um/memoryapi.rs /^ pub fn CreateFileMappingNumaW($/;" f +CreateFileMappingW vendor/winapi/src/um/memoryapi.rs /^ pub fn CreateFileMappingW($/;" f +CreateFileTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn CreateFileTransactedA($/;" f +CreateFileTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn CreateFileTransactedW($/;" f +CreateFileW vendor/winapi/src/um/fileapi.rs /^ pub fn CreateFileW($/;" f +CreateFontA vendor/winapi/src/um/wingdi.rs /^ pub fn CreateFontA($/;" f +CreateFontIndirectA vendor/winapi/src/um/wingdi.rs /^ pub fn CreateFontIndirectA($/;" f +CreateFontIndirectExA vendor/winapi/src/um/wingdi.rs /^ pub fn CreateFontIndirectExA($/;" f +CreateFontIndirectExW vendor/winapi/src/um/wingdi.rs /^ pub fn CreateFontIndirectExW($/;" f +CreateFontIndirectW vendor/winapi/src/um/wingdi.rs /^ pub fn CreateFontIndirectW($/;" f +CreateFontW vendor/winapi/src/um/wingdi.rs /^ pub fn CreateFontW($/;" f +CreateHalftonePalette vendor/winapi/src/um/wingdi.rs /^ pub fn CreateHalftonePalette($/;" f +CreateHardLinkA vendor/winapi/src/um/winbase.rs /^ pub fn CreateHardLinkA($/;" f +CreateHardLinkTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn CreateHardLinkTransactedA($/;" f +CreateHardLinkTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn CreateHardLinkTransactedW($/;" f +CreateHardLinkW vendor/winapi/src/um/winbase.rs /^ pub fn CreateHardLinkW($/;" f +CreateHatchBrush vendor/winapi/src/um/wingdi.rs /^ pub fn CreateHatchBrush($/;" f +CreateICA vendor/winapi/src/um/wingdi.rs /^ pub fn CreateICA($/;" f +CreateICW vendor/winapi/src/um/wingdi.rs /^ pub fn CreateICW($/;" f +CreateIcon vendor/winapi/src/um/winuser.rs /^ pub fn CreateIcon($/;" f +CreateIconFromResource vendor/winapi/src/um/winuser.rs /^ pub fn CreateIconFromResource($/;" f +CreateIconFromResourceEx vendor/winapi/src/um/winuser.rs /^ pub fn CreateIconFromResourceEx($/;" f +CreateIconIndirect vendor/winapi/src/um/winuser.rs /^ pub fn CreateIconIndirect($/;" f +CreateIoCompletionPort vendor/winapi/src/um/ioapiset.rs /^ pub fn CreateIoCompletionPort($/;" f +CreateIpForwardEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn CreateIpForwardEntry($/;" f +CreateIpForwardEntry2 vendor/winapi/src/shared/netioapi.rs /^ pub fn CreateIpForwardEntry2($/;" f +CreateIpNetEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn CreateIpNetEntry($/;" f +CreateIpNetEntry2 vendor/winapi/src/shared/netioapi.rs /^ pub fn CreateIpNetEntry2($/;" f +CreateJobObjectA vendor/winapi/src/um/winbase.rs /^ pub fn CreateJobObjectA($/;" f +CreateJobObjectW vendor/winapi/src/um/jobapi2.rs /^ pub fn CreateJobObjectW($/;" f +CreateJobSet vendor/winapi/src/um/winbase.rs /^ pub fn CreateJobSet($/;" f +CreateMD5SSOHash vendor/winapi/src/um/wininet.rs /^ pub fn CreateMD5SSOHash ($/;" f +CreateMDIWindowA vendor/winapi/src/um/winuser.rs /^ pub fn CreateMDIWindowA($/;" f +CreateMDIWindowW vendor/winapi/src/um/winuser.rs /^ pub fn CreateMDIWindowW($/;" f +CreateMailslotA vendor/winapi/src/um/winbase.rs /^ pub fn CreateMailslotA($/;" f +CreateMailslotW vendor/winapi/src/um/winbase.rs /^ pub fn CreateMailslotW($/;" f +CreateMappedBitmap vendor/winapi/src/um/commctrl.rs /^ pub fn CreateMappedBitmap($/;" f +CreateMemoryResourceNotification vendor/winapi/src/um/memoryapi.rs /^ pub fn CreateMemoryResourceNotification($/;" f +CreateMenu vendor/winapi/src/um/winuser.rs /^ pub fn CreateMenu() -> HMENU;$/;" f +CreateMetaFileA vendor/winapi/src/um/wingdi.rs /^ pub fn CreateMetaFileA($/;" f +CreateMetaFileW vendor/winapi/src/um/wingdi.rs /^ pub fn CreateMetaFileW($/;" f +CreateMutexA vendor/winapi/src/um/synchapi.rs /^ pub fn CreateMutexA($/;" f +CreateMutexExA vendor/winapi/src/um/synchapi.rs /^ pub fn CreateMutexExA($/;" f +CreateMutexExW vendor/winapi/src/um/synchapi.rs /^ pub fn CreateMutexExW($/;" f +CreateMutexW vendor/winapi/src/um/synchapi.rs /^ pub fn CreateMutexW($/;" f +CreateNamedPipeA vendor/winapi/src/um/winbase.rs /^ pub fn CreateNamedPipeA($/;" f +CreateNamedPipeW vendor/winapi/src/um/namedpipeapi.rs /^ pub fn CreateNamedPipeW($/;" f +CreatePalette vendor/winapi/src/um/wingdi.rs /^ pub fn CreatePalette($/;" f +CreatePatternBrush vendor/winapi/src/um/wingdi.rs /^ pub fn CreatePatternBrush($/;" f +CreatePen vendor/winapi/src/um/wingdi.rs /^ pub fn CreatePen($/;" f +CreatePenIndirect vendor/winapi/src/um/wingdi.rs /^ pub fn CreatePenIndirect($/;" f +CreatePersistentTcpPortReservation vendor/winapi/src/um/iphlpapi.rs /^ pub fn CreatePersistentTcpPortReservation($/;" f +CreatePersistentUdpPortReservation vendor/winapi/src/um/iphlpapi.rs /^ pub fn CreatePersistentUdpPortReservation($/;" f +CreatePipe vendor/winapi/src/um/namedpipeapi.rs /^ pub fn CreatePipe($/;" f +CreatePolyPolygonRgn vendor/winapi/src/um/wingdi.rs /^ pub fn CreatePolyPolygonRgn($/;" f +CreatePolygonRgn vendor/winapi/src/um/wingdi.rs /^ pub fn CreatePolygonRgn($/;" f +CreatePopupMenu vendor/winapi/src/um/winuser.rs /^ pub fn CreatePopupMenu() ->HMENU;$/;" f +CreatePrivateNamespaceA vendor/winapi/src/um/winbase.rs /^ pub fn CreatePrivateNamespaceA($/;" f +CreatePrivateNamespaceW vendor/winapi/src/um/namespaceapi.rs /^ pub fn CreatePrivateNamespaceW($/;" f +CreatePrivateObjectSecurity vendor/winapi/src/um/securitybaseapi.rs /^ pub fn CreatePrivateObjectSecurity($/;" f +CreatePrivateObjectSecurityEx vendor/winapi/src/um/securitybaseapi.rs /^ pub fn CreatePrivateObjectSecurityEx($/;" f +CreatePrivateObjectSecurityWithMultipleInheritance vendor/winapi/src/um/securitybaseapi.rs /^ pub fn CreatePrivateObjectSecurityWithMultipleInheritance($/;" f +CreateProcessA vendor/winapi/src/um/processthreadsapi.rs /^ pub fn CreateProcessA($/;" f +CreateProcessAsUserW vendor/winapi/src/um/processthreadsapi.rs /^ pub fn CreateProcessAsUserW($/;" f +CreateProcessW vendor/winapi/src/um/processthreadsapi.rs /^ pub fn CreateProcessW($/;" f +CreateProcessWithLogonW vendor/winapi/src/um/winbase.rs /^ pub fn CreateProcessWithLogonW($/;" f +CreateProcessWithTokenW vendor/winapi/src/um/winbase.rs /^ pub fn CreateProcessWithTokenW($/;" f +CreateProfile vendor/winapi/src/um/userenv.rs /^ pub fn CreateProfile($/;" f +CreatePropertySheetPageA vendor/winapi/src/um/prsht.rs /^ pub fn CreatePropertySheetPageA($/;" f +CreatePropertySheetPageW vendor/winapi/src/um/prsht.rs /^ pub fn CreatePropertySheetPageW($/;" f +CreateProxyArpEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn CreateProxyArpEntry($/;" f +CreatePseudoConsole vendor/winapi/src/um/consoleapi.rs /^ pub fn CreatePseudoConsole($/;" f +CreateRectRgn vendor/winapi/src/um/wingdi.rs /^ pub fn CreateRectRgn($/;" f +CreateRectRgnIndirect vendor/winapi/src/um/wingdi.rs /^ pub fn CreateRectRgnIndirect($/;" f +CreateRemoteThread vendor/winapi/src/um/processthreadsapi.rs /^ pub fn CreateRemoteThread($/;" f +CreateRemoteThreadEx vendor/winapi/src/um/processthreadsapi.rs /^ pub fn CreateRemoteThreadEx($/;" f +CreateRestrictedToken vendor/winapi/src/um/securitybaseapi.rs /^ pub fn CreateRestrictedToken($/;" f +CreateRoundRectRgn vendor/winapi/src/um/wingdi.rs /^ pub fn CreateRoundRectRgn($/;" f +CreateScalableFontResourceA vendor/winapi/src/um/wingdi.rs /^ pub fn CreateScalableFontResourceA($/;" f +CreateScalableFontResourceW vendor/winapi/src/um/wingdi.rs /^ pub fn CreateScalableFontResourceW($/;" f +CreateSemaphoreA vendor/winapi/src/um/winbase.rs /^ pub fn CreateSemaphoreA($/;" f +CreateSemaphoreExA vendor/winapi/src/um/winbase.rs /^ pub fn CreateSemaphoreExA($/;" f +CreateSemaphoreExW vendor/winapi/src/um/synchapi.rs /^ pub fn CreateSemaphoreExW($/;" f +CreateSemaphoreW vendor/winapi/src/um/synchapi.rs /^ pub fn CreateSemaphoreW($/;" f +CreateServiceA vendor/winapi/src/um/winsvc.rs /^ pub fn CreateServiceA($/;" f +CreateServiceW vendor/winapi/src/um/winsvc.rs /^ pub fn CreateServiceW($/;" f +CreateSolidBrush vendor/winapi/src/um/wingdi.rs /^ pub fn CreateSolidBrush($/;" f +CreateSortedAddressPairs vendor/winapi/src/shared/netioapi.rs /^ pub fn CreateSortedAddressPairs($/;" f +CreateStatusWindowA vendor/winapi/src/um/commctrl.rs /^ pub fn CreateStatusWindowA($/;" f +CreateStatusWindowW vendor/winapi/src/um/commctrl.rs /^ pub fn CreateStatusWindowW($/;" f +CreateStreamOnHGlobal vendor/winapi/src/um/combaseapi.rs /^ pub fn CreateStreamOnHGlobal($/;" f +CreateSymbolicLinkA vendor/winapi/src/um/winbase.rs /^ pub fn CreateSymbolicLinkA($/;" f +CreateSymbolicLinkTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn CreateSymbolicLinkTransactedA($/;" f +CreateSymbolicLinkTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn CreateSymbolicLinkTransactedW($/;" f +CreateSymbolicLinkW vendor/winapi/src/um/winbase.rs /^ pub fn CreateSymbolicLinkW($/;" f +CreateSyntheticPointerDevice vendor/winapi/src/um/winuser.rs /^ pub fn CreateSyntheticPointerDevice($/;" f +CreateTapePartition vendor/winapi/src/um/winbase.rs /^ pub fn CreateTapePartition($/;" f +CreateThread vendor/winapi/src/um/processthreadsapi.rs /^ pub fn CreateThread($/;" f +CreateThreadpool vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CreateThreadpool($/;" f +CreateThreadpoolCleanupGroup vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CreateThreadpoolCleanupGroup() -> PTP_CLEANUP_GROUP;$/;" f +CreateThreadpoolIo vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CreateThreadpoolIo($/;" f +CreateThreadpoolTimer vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CreateThreadpoolTimer($/;" f +CreateThreadpoolWait vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CreateThreadpoolWait($/;" f +CreateThreadpoolWork vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn CreateThreadpoolWork($/;" f +CreateTimerQueue vendor/winapi/src/um/threadpoollegacyapiset.rs /^ pub fn CreateTimerQueue() -> HANDLE;$/;" f +CreateTimerQueueTimer vendor/winapi/src/um/threadpoollegacyapiset.rs /^ pub fn CreateTimerQueueTimer($/;" f +CreateToolbarEx vendor/winapi/src/um/commctrl.rs /^ pub fn CreateToolbarEx($/;" f +CreateToolhelp32Snapshot vendor/winapi/src/um/tlhelp32.rs /^ pub fn CreateToolhelp32Snapshot($/;" f +CreateTraceInstanceId vendor/winapi/src/shared/evntrace.rs /^ pub fn CreateTraceInstanceId($/;" f +CreateTransaction vendor/winapi/src/um/ktmw32.rs /^ pub fn CreateTransaction($/;" f +CreateUmsCompletionList vendor/winapi/src/um/winbase.rs /^ pub fn CreateUmsCompletionList($/;" f +CreateUmsThreadContext vendor/winapi/src/um/winbase.rs /^ pub fn CreateUmsThreadContext($/;" f +CreateUnicastIpAddressEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn CreateUnicastIpAddressEntry($/;" f +CreateUpDownControl vendor/winapi/src/um/commctrl.rs /^ pub fn CreateUpDownControl($/;" f +CreateUrlCacheEntryA vendor/winapi/src/um/wininet.rs /^ pub fn CreateUrlCacheEntryA($/;" f +CreateUrlCacheEntryW vendor/winapi/src/um/wininet.rs /^ pub fn CreateUrlCacheEntryW($/;" f +CreateUrlCacheGroup vendor/winapi/src/um/wininet.rs /^ pub fn CreateUrlCacheGroup($/;" f +CreateVssBackupComponents vendor/winapi/src/um/vsbackup.rs /^ pub fn CreateVssBackupComponents($/;" f +CreateVssExamineWriterMetadata vendor/winapi/src/um/vsbackup.rs /^ pub fn CreateVssExamineWriterMetadata($/;" f +CreateWaitableTimerA vendor/winapi/src/um/winbase.rs /^ pub fn CreateWaitableTimerA($/;" f +CreateWaitableTimerExA vendor/winapi/src/um/winbase.rs /^ pub fn CreateWaitableTimerExA($/;" f +CreateWaitableTimerExW vendor/winapi/src/um/synchapi.rs /^ pub fn CreateWaitableTimerExW($/;" f +CreateWaitableTimerW vendor/winapi/src/um/synchapi.rs /^ pub fn CreateWaitableTimerW($/;" f +CreateWellKnownSid vendor/winapi/src/um/securitybaseapi.rs /^ pub fn CreateWellKnownSid($/;" f +CreateWindowExA vendor/winapi/src/um/winuser.rs /^ pub fn CreateWindowExA($/;" f +CreateWindowExW vendor/winapi/src/um/winuser.rs /^ pub fn CreateWindowExW($/;" f +CreateWindowStationA vendor/winapi/src/um/winuser.rs /^ pub fn CreateWindowStationA($/;" f +CreateWindowStationW vendor/winapi/src/um/winuser.rs /^ pub fn CreateWindowStationW($/;" f +CredDeleteA vendor/winapi/src/um/wincred.rs /^ pub fn CredDeleteA($/;" f +CredDeleteW vendor/winapi/src/um/wincred.rs /^ pub fn CredDeleteW($/;" f +CredEnumerateA vendor/winapi/src/um/wincred.rs /^ pub fn CredEnumerateA($/;" f +CredEnumerateW vendor/winapi/src/um/wincred.rs /^ pub fn CredEnumerateW($/;" f +CredFindBestCredentialA vendor/winapi/src/um/wincred.rs /^ pub fn CredFindBestCredentialA($/;" f +CredFindBestCredentialW vendor/winapi/src/um/wincred.rs /^ pub fn CredFindBestCredentialW($/;" f +CredFree vendor/winapi/src/um/wincred.rs /^ pub fn CredFree($/;" f +CredGetSessionTypes vendor/winapi/src/um/wincred.rs /^ pub fn CredGetSessionTypes($/;" f +CredGetTargetInfoA vendor/winapi/src/um/wincred.rs /^ pub fn CredGetTargetInfoA($/;" f +CredGetTargetInfoW vendor/winapi/src/um/wincred.rs /^ pub fn CredGetTargetInfoW($/;" f +CredHandle vendor/winapi/src/shared/sspi.rs /^pub type CredHandle = SecHandle;$/;" t +CredIsMarshaledCredentialA vendor/winapi/src/um/wincred.rs /^ pub fn CredIsMarshaledCredentialA($/;" f +CredIsMarshaledCredentialW vendor/winapi/src/um/wincred.rs /^ pub fn CredIsMarshaledCredentialW($/;" f +CredIsProtectedA vendor/winapi/src/um/wincred.rs /^ pub fn CredIsProtectedA($/;" f +CredIsProtectedW vendor/winapi/src/um/wincred.rs /^ pub fn CredIsProtectedW($/;" f +CredMarshalCredentialA vendor/winapi/src/um/wincred.rs /^ pub fn CredMarshalCredentialA($/;" f +CredMarshalCredentialW vendor/winapi/src/um/wincred.rs /^ pub fn CredMarshalCredentialW($/;" f +CredPackAuthenticationBufferA vendor/winapi/src/um/wincred.rs /^ pub fn CredPackAuthenticationBufferA($/;" f +CredPackAuthenticationBufferW vendor/winapi/src/um/wincred.rs /^ pub fn CredPackAuthenticationBufferW($/;" f +CredProtectA vendor/winapi/src/um/wincred.rs /^ pub fn CredProtectA($/;" f +CredProtectW vendor/winapi/src/um/wincred.rs /^ pub fn CredProtectW($/;" f +CredReadA vendor/winapi/src/um/wincred.rs /^ pub fn CredReadA($/;" f +CredReadDomainCredentialsA vendor/winapi/src/um/wincred.rs /^ pub fn CredReadDomainCredentialsA($/;" f +CredReadDomainCredentialsW vendor/winapi/src/um/wincred.rs /^ pub fn CredReadDomainCredentialsW($/;" f +CredReadW vendor/winapi/src/um/wincred.rs /^ pub fn CredReadW($/;" f +CredRenameA vendor/winapi/src/um/wincred.rs /^ pub fn CredRenameA($/;" f +CredRenameW vendor/winapi/src/um/wincred.rs /^ pub fn CredRenameW($/;" f +CredUICmdLinePromptForCredentialsA vendor/winapi/src/um/wincred.rs /^ pub fn CredUICmdLinePromptForCredentialsA($/;" f +CredUICmdLinePromptForCredentialsW vendor/winapi/src/um/wincred.rs /^ pub fn CredUICmdLinePromptForCredentialsW($/;" f +CredUIConfirmCredentialsA vendor/winapi/src/um/wincred.rs /^ pub fn CredUIConfirmCredentialsA($/;" f +CredUIConfirmCredentialsW vendor/winapi/src/um/wincred.rs /^ pub fn CredUIConfirmCredentialsW($/;" f +CredUIParseUserNameA vendor/winapi/src/um/wincred.rs /^ pub fn CredUIParseUserNameA($/;" f +CredUIParseUserNameW vendor/winapi/src/um/wincred.rs /^ pub fn CredUIParseUserNameW($/;" f +CredUIPromptForCredentialsA vendor/winapi/src/um/wincred.rs /^ pub fn CredUIPromptForCredentialsA($/;" f +CredUIPromptForCredentialsW vendor/winapi/src/um/wincred.rs /^ pub fn CredUIPromptForCredentialsW($/;" f +CredUIPromptForWindowsCredentialsA vendor/winapi/src/um/wincred.rs /^ pub fn CredUIPromptForWindowsCredentialsA($/;" f +CredUIPromptForWindowsCredentialsW vendor/winapi/src/um/wincred.rs /^ pub fn CredUIPromptForWindowsCredentialsW($/;" f +CredUIReadSSOCredW vendor/winapi/src/um/wincred.rs /^ pub fn CredUIReadSSOCredW($/;" f +CredUIStoreSSOCredW vendor/winapi/src/um/wincred.rs /^ pub fn CredUIStoreSSOCredW($/;" f +CredUnPackAuthenticationBufferA vendor/winapi/src/um/wincred.rs /^ pub fn CredUnPackAuthenticationBufferA($/;" f +CredUnPackAuthenticationBufferW vendor/winapi/src/um/wincred.rs /^ pub fn CredUnPackAuthenticationBufferW($/;" f +CredUnmarshalCredentialA vendor/winapi/src/um/wincred.rs /^ pub fn CredUnmarshalCredentialA($/;" f +CredUnmarshalCredentialW vendor/winapi/src/um/wincred.rs /^ pub fn CredUnmarshalCredentialW($/;" f +CredUnprotectA vendor/winapi/src/um/wincred.rs /^ pub fn CredUnprotectA($/;" f +CredUnprotectW vendor/winapi/src/um/wincred.rs /^ pub fn CredUnprotectW($/;" f +CredWriteA vendor/winapi/src/um/wincred.rs /^ pub fn CredWriteA($/;" f +CredWriteDomainCredentialsA vendor/winapi/src/um/wincred.rs /^ pub fn CredWriteDomainCredentialsA($/;" f +CredWriteDomainCredentialsW vendor/winapi/src/um/wincred.rs /^ pub fn CredWriteDomainCredentialsW($/;" f +CredWriteW vendor/winapi/src/um/wincred.rs /^ pub fn CredWriteW($/;" f +CryptAcquireCertificatePrivateKey vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptAcquireCertificatePrivateKey($/;" f +CryptAcquireContextA vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptAcquireContextA($/;" f +CryptAcquireContextW vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptAcquireContextW($/;" f +CryptBinaryToStringA vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptBinaryToStringA($/;" f +CryptBinaryToStringW vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptBinaryToStringW($/;" f +CryptCancelAsyncRetrieval vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptCancelAsyncRetrieval($/;" f +CryptCloseAsyncHandle vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptCloseAsyncHandle($/;" f +CryptContextAddRef vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptContextAddRef($/;" f +CryptCreateAsyncHandle vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptCreateAsyncHandle($/;" f +CryptCreateHash vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptCreateHash($/;" f +CryptCreateKeyIdentifierFromCSP vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptCreateKeyIdentifierFromCSP($/;" f +CryptDecodeMessage vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptDecodeMessage($/;" f +CryptDecodeObject vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptDecodeObject($/;" f +CryptDecodeObjectEx vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptDecodeObjectEx($/;" f +CryptDecrypt vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptDecrypt($/;" f +CryptDecryptAndVerifyMessageSignature vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptDecryptAndVerifyMessageSignature($/;" f +CryptDecryptMessage vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptDecryptMessage($/;" f +CryptDeriveKey vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptDeriveKey($/;" f +CryptDestroyHash vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptDestroyHash($/;" f +CryptDestroyKey vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptDestroyKey($/;" f +CryptDuplicateHash vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptDuplicateHash($/;" f +CryptDuplicateKey vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptDuplicateKey($/;" f +CryptEncodeObject vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptEncodeObject($/;" f +CryptEncodeObjectEx vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptEncodeObjectEx($/;" f +CryptEncrypt vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptEncrypt($/;" f +CryptEncryptMessage vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptEncryptMessage($/;" f +CryptEnumKeyIdentifierProperties vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptEnumKeyIdentifierProperties($/;" f +CryptEnumOIDFunction vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptEnumOIDFunction($/;" f +CryptEnumOIDInfo vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptEnumOIDInfo($/;" f +CryptEnumProviderTypesA vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptEnumProviderTypesA($/;" f +CryptEnumProviderTypesW vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptEnumProviderTypesW($/;" f +CryptEnumProvidersA vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptEnumProvidersA($/;" f +CryptEnumProvidersW vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptEnumProvidersW($/;" f +CryptExportKey vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptExportKey($/;" f +CryptExportPKCS8 vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptExportPKCS8($/;" f +CryptExportPKCS8Ex vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptExportPKCS8Ex($/;" f +CryptExportPublicKeyInfo vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptExportPublicKeyInfo($/;" f +CryptExportPublicKeyInfoEx vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptExportPublicKeyInfoEx($/;" f +CryptExportPublicKeyInfoFromBCryptKeyHandle vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptExportPublicKeyInfoFromBCryptKeyHandle($/;" f +CryptFindCertificateKeyProvInfo vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptFindCertificateKeyProvInfo($/;" f +CryptFindLocalizedName vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptFindLocalizedName($/;" f +CryptFindOIDInfo vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptFindOIDInfo($/;" f +CryptFlushTimeValidObject vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptFlushTimeValidObject($/;" f +CryptFormatObject vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptFormatObject($/;" f +CryptFreeOIDFunctionAddress vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptFreeOIDFunctionAddress($/;" f +CryptGenKey vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGenKey($/;" f +CryptGenRandom vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGenRandom($/;" f +CryptGetAsyncParam vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetAsyncParam($/;" f +CryptGetDefaultOIDDllList vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetDefaultOIDDllList($/;" f +CryptGetDefaultOIDFunctionAddress vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetDefaultOIDFunctionAddress($/;" f +CryptGetDefaultProviderA vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetDefaultProviderA($/;" f +CryptGetDefaultProviderW vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetDefaultProviderW($/;" f +CryptGetHashParam vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetHashParam($/;" f +CryptGetKeyIdentifierProperty vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetKeyIdentifierProperty($/;" f +CryptGetKeyParam vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetKeyParam($/;" f +CryptGetMessageCertificates vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetMessageCertificates($/;" f +CryptGetMessageSignerCount vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetMessageSignerCount($/;" f +CryptGetOIDFunctionAddress vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetOIDFunctionAddress($/;" f +CryptGetOIDFunctionValue vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetOIDFunctionValue($/;" f +CryptGetObjectUrl vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetObjectUrl($/;" f +CryptGetProvParam vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetProvParam($/;" f +CryptGetTimeValidObject vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetTimeValidObject($/;" f +CryptGetUserKey vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptGetUserKey($/;" f +CryptHashCertificate vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptHashCertificate($/;" f +CryptHashCertificate2 vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptHashCertificate2($/;" f +CryptHashData vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptHashData($/;" f +CryptHashMessage vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptHashMessage($/;" f +CryptHashPublicKeyInfo vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptHashPublicKeyInfo($/;" f +CryptHashSessionKey vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptHashSessionKey($/;" f +CryptHashToBeSigned vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptHashToBeSigned($/;" f +CryptImportKey vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptImportKey($/;" f +CryptImportPKCS8 vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptImportPKCS8($/;" f +CryptImportPublicKeyInfo vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptImportPublicKeyInfo($/;" f +CryptImportPublicKeyInfoEx vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptImportPublicKeyInfoEx($/;" f +CryptImportPublicKeyInfoEx2 vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptImportPublicKeyInfoEx2($/;" f +CryptInitOIDFunctionSet vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptInitOIDFunctionSet($/;" f +CryptInstallCancelRetrieval vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptInstallCancelRetrieval($/;" f +CryptInstallDefaultContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptInstallDefaultContext($/;" f +CryptInstallOIDFunctionAddress vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptInstallOIDFunctionAddress($/;" f +CryptMemAlloc vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMemAlloc($/;" f +CryptMemFree vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMemFree($/;" f +CryptMemRealloc vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMemRealloc($/;" f +CryptMsgCalculateEncodedLength vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgCalculateEncodedLength($/;" f +CryptMsgClose vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgClose($/;" f +CryptMsgControl vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgControl($/;" f +CryptMsgCountersign vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgCountersign($/;" f +CryptMsgCountersignEncoded vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgCountersignEncoded($/;" f +CryptMsgDuplicate vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgDuplicate($/;" f +CryptMsgEncodeAndSignCTL vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgEncodeAndSignCTL($/;" f +CryptMsgGetAndVerifySigner vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgGetAndVerifySigner($/;" f +CryptMsgGetParam vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgGetParam($/;" f +CryptMsgOpenToDecode vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgOpenToDecode($/;" f +CryptMsgOpenToEncode vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgOpenToEncode($/;" f +CryptMsgSignCTL vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgSignCTL($/;" f +CryptMsgUpdate vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgUpdate($/;" f +CryptMsgVerifyCountersignatureEncoded vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgVerifyCountersignatureEncoded($/;" f +CryptMsgVerifyCountersignatureEncodedEx vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptMsgVerifyCountersignatureEncodedEx($/;" f +CryptProtectData vendor/winapi/src/um/dpapi.rs /^ pub fn CryptProtectData($/;" f +CryptProtectDataNoUI vendor/winapi/src/um/dpapi.rs /^ pub fn CryptProtectDataNoUI($/;" f +CryptProtectMemory vendor/winapi/src/um/dpapi.rs /^ pub fn CryptProtectMemory($/;" f +CryptQueryObject vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptQueryObject($/;" f +CryptRegisterDefaultOIDFunction vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptRegisterDefaultOIDFunction($/;" f +CryptRegisterOIDFunction vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptRegisterOIDFunction($/;" f +CryptRegisterOIDInfo vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptRegisterOIDInfo($/;" f +CryptReleaseContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptReleaseContext($/;" f +CryptRetrieveObjectByUrlA vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptRetrieveObjectByUrlA($/;" f +CryptRetrieveObjectByUrlW vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptRetrieveObjectByUrlW($/;" f +CryptRetrieveTimeStamp vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptRetrieveTimeStamp($/;" f +CryptSIPAddProvider vendor/winapi/src/um/mssip.rs /^ pub fn CryptSIPAddProvider($/;" f +CryptSIPCreateIndirectData vendor/winapi/src/um/mssip.rs /^ pub fn CryptSIPCreateIndirectData($/;" f +CryptSIPGetCaps vendor/winapi/src/um/mssip.rs /^ pub fn CryptSIPGetCaps($/;" f +CryptSIPGetSealedDigest vendor/winapi/src/um/mssip.rs /^ pub fn CryptSIPGetSealedDigest($/;" f +CryptSIPGetSignedDataMsg vendor/winapi/src/um/mssip.rs /^ pub fn CryptSIPGetSignedDataMsg($/;" f +CryptSIPLoad vendor/winapi/src/um/mssip.rs /^ pub fn CryptSIPLoad($/;" f +CryptSIPPutSignedDataMsg vendor/winapi/src/um/mssip.rs /^ pub fn CryptSIPPutSignedDataMsg($/;" f +CryptSIPRemoveProvider vendor/winapi/src/um/mssip.rs /^ pub fn CryptSIPRemoveProvider($/;" f +CryptSIPRemoveSignedDataMsg vendor/winapi/src/um/mssip.rs /^ pub fn CryptSIPRemoveSignedDataMsg($/;" f +CryptSIPRetrieveSubjectGuid vendor/winapi/src/um/mssip.rs /^ pub fn CryptSIPRetrieveSubjectGuid($/;" f +CryptSIPRetrieveSubjectGuidForCatalogFile vendor/winapi/src/um/mssip.rs /^ pub fn CryptSIPRetrieveSubjectGuidForCatalogFile($/;" f +CryptSIPVerifyIndirectData vendor/winapi/src/um/mssip.rs /^ pub fn CryptSIPVerifyIndirectData($/;" f +CryptSetAsyncParam vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSetAsyncParam($/;" f +CryptSetHashParam vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSetHashParam($/;" f +CryptSetKeyIdentifierProperty vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSetKeyIdentifierProperty($/;" f +CryptSetKeyParam vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSetKeyParam($/;" f +CryptSetOIDFunctionValue vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSetOIDFunctionValue($/;" f +CryptSetProvParam vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSetProvParam($/;" f +CryptSetProviderA vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSetProviderA($/;" f +CryptSetProviderExA vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSetProviderExA($/;" f +CryptSetProviderExW vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSetProviderExW($/;" f +CryptSetProviderW vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSetProviderW($/;" f +CryptSignAndEncodeCertificate vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSignAndEncodeCertificate($/;" f +CryptSignAndEncryptMessage vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSignAndEncryptMessage($/;" f +CryptSignCertificate vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSignCertificate($/;" f +CryptSignHashA vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSignHashA($/;" f +CryptSignHashW vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSignHashW($/;" f +CryptSignMessage vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSignMessage($/;" f +CryptSignMessageWithKey vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptSignMessageWithKey($/;" f +CryptStringToBinaryA vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptStringToBinaryA($/;" f +CryptStringToBinaryW vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptStringToBinaryW($/;" f +CryptUninstallCancelRetrieval vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptUninstallCancelRetrieval($/;" f +CryptUninstallDefaultContext vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptUninstallDefaultContext($/;" f +CryptUnprotectData vendor/winapi/src/um/dpapi.rs /^ pub fn CryptUnprotectData($/;" f +CryptUnprotectDataNoUI vendor/winapi/src/um/dpapi.rs /^ pub fn CryptUnprotectDataNoUI($/;" f +CryptUnprotectMemory vendor/winapi/src/um/dpapi.rs /^ pub fn CryptUnprotectMemory($/;" f +CryptUnregisterDefaultOIDFunction vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptUnregisterDefaultOIDFunction($/;" f +CryptUnregisterOIDFunction vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptUnregisterOIDFunction($/;" f +CryptUnregisterOIDInfo vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptUnregisterOIDInfo($/;" f +CryptUpdateProtectedState vendor/winapi/src/um/dpapi.rs /^ pub fn CryptUpdateProtectedState($/;" f +CryptVerifyCertificateSignature vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptVerifyCertificateSignature($/;" f +CryptVerifyCertificateSignatureEx vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptVerifyCertificateSignatureEx($/;" f +CryptVerifyDetachedMessageHash vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptVerifyDetachedMessageHash($/;" f +CryptVerifyDetachedMessageSignature vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptVerifyDetachedMessageSignature($/;" f +CryptVerifyMessageHash vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptVerifyMessageHash($/;" f +CryptVerifyMessageSignature vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptVerifyMessageSignature($/;" f +CryptVerifyMessageSignatureWithKey vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptVerifyMessageSignatureWithKey($/;" f +CryptVerifySignatureA vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptVerifySignatureA($/;" f +CryptVerifySignatureW vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptVerifySignatureW($/;" f +CryptVerifyTimeStampSignature vendor/winapi/src/um/wincrypt.rs /^ pub fn CryptVerifyTimeStampSignature($/;" f +CtxtHandle vendor/winapi/src/shared/sspi.rs /^pub type CtxtHandle = SecHandle;$/;" t +Currency vendor/fluent-bundle/src/types/number.rs /^ Currency,$/;" e enum:FluentNumberStyle +Current vendor/futures-util/src/compat/compat03as01.rs /^impl ArcWake03 for Current {$/;" c +Current vendor/futures-util/src/compat/compat03as01.rs /^impl Current {$/;" c +Current vendor/futures-util/src/compat/compat03as01.rs /^struct Current(task01::Task);$/;" s +Cursor vendor/futures-util/src/io/cursor.rs /^impl AsyncWrite for Cursor<&mut Vec> {$/;" c +Cursor vendor/futures-util/src/io/cursor.rs /^impl AsyncWrite for Cursor<&mut [u8]> {$/;" c +Cursor vendor/futures-util/src/io/cursor.rs /^impl AsyncWrite for Cursor> {$/;" c +Cursor vendor/futures-util/src/io/cursor.rs /^impl AsyncWrite for Cursor> {$/;" c +Cursor vendor/futures-util/src/io/cursor.rs /^impl + Unpin> AsyncRead for Cursor {$/;" c +Cursor vendor/futures-util/src/io/cursor.rs /^impl AsyncBufRead for Cursor$/;" c +Cursor vendor/futures-util/src/io/cursor.rs /^impl AsyncSeek for Cursor$/;" c +Cursor vendor/futures-util/src/io/cursor.rs /^impl Cursor {$/;" c +Cursor vendor/futures-util/src/io/cursor.rs /^pub struct Cursor {$/;" s +Cursor vendor/futures/tests/io_buf_reader.rs /^impl AsyncBufRead for Cursor<&[u8]> {$/;" c +Cursor vendor/futures/tests/io_buf_reader.rs /^impl AsyncRead for Cursor<&[u8]> {$/;" c +Cursor vendor/futures/tests/io_buf_reader.rs /^impl AsyncSeek for Cursor<&[u8]> {$/;" c +Cursor vendor/futures/tests/io_buf_reader.rs /^impl Cursor {$/;" c +Cursor vendor/futures/tests/io_buf_reader.rs /^struct Cursor {$/;" s +Cursor vendor/proc-macro2/src/parse.rs /^impl<'a> Cursor<'a> {$/;" c +Cursor vendor/proc-macro2/src/parse.rs /^pub(crate) struct Cursor<'a> {$/;" s +Cursor vendor/syn/src/buffer.rs /^impl<'a> Clone for Cursor<'a> {$/;" c +Cursor vendor/syn/src/buffer.rs /^impl<'a> Copy for Cursor<'a> {}$/;" c +Cursor vendor/syn/src/buffer.rs /^impl<'a> Cursor<'a> {$/;" c +Cursor vendor/syn/src/buffer.rs /^impl<'a> Eq for Cursor<'a> {}$/;" c +Cursor vendor/syn/src/buffer.rs /^impl<'a> PartialEq for Cursor<'a> {$/;" c +Cursor vendor/syn/src/buffer.rs /^pub struct Cursor<'a> {$/;" s +Custom vendor/fluent-bundle/src/types/mod.rs /^ Custom(Box),$/;" e enum:FluentValue +CustomToken vendor/syn/src/token.rs /^pub trait CustomToken {$/;" i +CveEventWrite vendor/winapi/src/um/securitybaseapi.rs /^ pub fn CveEventWrite($/;" f +Cycle vendor/futures-util/src/stream/stream/cycle.rs /^impl Cycle$/;" c +Cycle vendor/futures-util/src/stream/stream/cycle.rs /^impl FusedStream for Cycle$/;" c +Cycle vendor/futures-util/src/stream/stream/cycle.rs /^impl Stream for Cycle$/;" c +Cyclic vendor/fluent-bundle/src/resolver/errors.rs /^ Cyclic,$/;" e enum:ResolverError +D vendor/pin-project-lite/tests/drop_order.rs /^ impl Drop for D<'_> {$/;" c function:project_replace_panic +D vendor/pin-project-lite/tests/drop_order.rs /^ struct D<'a>(&'a mut bool, bool);$/;" s function:project_replace_panic +D vendor/pin-project-lite/tests/drop_order.rs /^impl Drop for D<'_> {$/;" c +D vendor/pin-project-lite/tests/drop_order.rs /^struct D<'a>(&'a Cell, usize);$/;" s +D2D1ComputeMaximumScaleFactor vendor/winapi/src/um/d2d1.rs /^ pub fn D2D1ComputeMaximumScaleFactor($/;" f +D2D1ConvertColorSpace vendor/winapi/src/um/d2d1_1.rs /^ pub fn D2D1ConvertColorSpace($/;" f +D2D1CreateDevice vendor/winapi/src/um/d2d1_1.rs /^ pub fn D2D1CreateDevice($/;" f +D2D1CreateDeviceContext vendor/winapi/src/um/d2d1_1.rs /^ pub fn D2D1CreateDeviceContext($/;" f +D2D1CreateFactory vendor/winapi/src/um/d2d1.rs /^ pub fn D2D1CreateFactory($/;" f +D2D1GetGradientMeshInteriorPointsFromCoonsPatch vendor/winapi/src/um/d2d1_3.rs /^ pub fn D2D1GetGradientMeshInteriorPointsFromCoonsPatch($/;" f +D2D1InvertMatrix vendor/winapi/src/um/d2d1.rs /^ pub fn D2D1InvertMatrix($/;" f +D2D1IsMatrixInvertible vendor/winapi/src/um/d2d1.rs /^ pub fn D2D1IsMatrixInvertible($/;" f +D2D1MakeRotateMatrix vendor/winapi/src/um/d2d1.rs /^ pub fn D2D1MakeRotateMatrix($/;" f +D2D1MakeSkewMatrix vendor/winapi/src/um/d2d1.rs /^ pub fn D2D1MakeSkewMatrix($/;" f +D2D1SinCos vendor/winapi/src/um/d2d1_1.rs /^ pub fn D2D1SinCos($/;" f +D2D1Tan vendor/winapi/src/um/d2d1_1.rs /^ pub fn D2D1Tan($/;" f +D2D1Vec3Length vendor/winapi/src/um/d2d1_1.rs /^ pub fn D2D1Vec3Length($/;" f +D2D1_COLOR_F vendor/winapi/src/um/d2d1.rs /^pub type D2D1_COLOR_F = D2D_COLOR_F;$/;" t +D2D1_MATRIX_3X2_F vendor/winapi/src/um/d2d1.rs /^pub type D2D1_MATRIX_3X2_F = D2D_MATRIX_3X2_F;$/;" t +D2D1_MATRIX_3X2_F vendor/winapi/src/um/dcommon.rs /^pub type D2D1_MATRIX_3X2_F = D2D_MATRIX_3X2_F;$/;" t +D2D1_POINT_2F vendor/winapi/src/um/d2d1.rs /^pub type D2D1_POINT_2F = D2D_POINT_2F;$/;" t +D2D1_POINT_2F vendor/winapi/src/um/dcommon.rs /^pub type D2D1_POINT_2F = D2D_POINT_2F;$/;" t +D2D1_POINT_2L vendor/winapi/src/um/dcommon.rs /^pub type D2D1_POINT_2L = D2D_POINT_2L;$/;" t +D2D1_POINT_2U vendor/winapi/src/um/d2d1.rs /^pub type D2D1_POINT_2U = D2D_POINT_2U;$/;" t +D2D1_POINT_2U vendor/winapi/src/um/dcommon.rs /^pub type D2D1_POINT_2U = D2D_POINT_2U;$/;" t +D2D1_RECT_F vendor/winapi/src/um/d2d1.rs /^pub type D2D1_RECT_F = D2D_RECT_F;$/;" t +D2D1_RECT_F vendor/winapi/src/um/dcommon.rs /^pub type D2D1_RECT_F = D2D_RECT_F;$/;" t +D2D1_RECT_L vendor/winapi/src/um/dcommon.rs /^pub type D2D1_RECT_L = D2D_RECT_L;$/;" t +D2D1_RECT_U vendor/winapi/src/um/d2d1.rs /^pub type D2D1_RECT_U = D2D_RECT_U;$/;" t +D2D1_RECT_U vendor/winapi/src/um/dcommon.rs /^pub type D2D1_RECT_U = D2D_RECT_U;$/;" t +D2D1_SIZE_F vendor/winapi/src/um/d2d1.rs /^pub type D2D1_SIZE_F = D2D_SIZE_F;$/;" t +D2D1_SIZE_F vendor/winapi/src/um/dcommon.rs /^pub type D2D1_SIZE_F = D2D_SIZE_F;$/;" t +D2D1_SIZE_U vendor/winapi/src/um/d2d1.rs /^pub type D2D1_SIZE_U = D2D_SIZE_U;$/;" t +D2D1_SIZE_U vendor/winapi/src/um/dcommon.rs /^pub type D2D1_SIZE_U = D2D_SIZE_U;$/;" t +D2D1_TAG vendor/winapi/src/um/d2d1.rs /^pub type D2D1_TAG = UINT64;$/;" t +D2D_COLOR_F vendor/winapi/src/um/d2dbasetypes.rs /^pub type D2D_COLOR_F = D3DCOLORVALUE;$/;" t +D2D_POINT_2L vendor/winapi/src/um/dcommon.rs /^pub type D2D_POINT_2L = POINT;$/;" t +D2D_RECT_L vendor/winapi/src/um/dcommon.rs /^pub type D2D_RECT_L = RECT;$/;" t +D3D10_CBUFFER_TYPE vendor/winapi/src/um/d3d10shader.rs /^pub type D3D10_CBUFFER_TYPE = D3D_CBUFFER_TYPE;$/;" t +D3D10_INCLUDE_TYPE vendor/winapi/src/um/d3d10shader.rs /^pub type D3D10_INCLUDE_TYPE = D3D_INCLUDE_TYPE;$/;" t +D3D10_NAME vendor/winapi/src/um/d3d10shader.rs /^pub type D3D10_NAME = D3D_NAME;$/;" t +D3D10_PRIMITIVE vendor/winapi/src/um/d3d10.rs /^pub type D3D10_PRIMITIVE = D3D_PRIMITIVE;$/;" t +D3D10_PRIMITIVE_TOPOLOGY vendor/winapi/src/um/d3d10.rs /^pub type D3D10_PRIMITIVE_TOPOLOGY = D3D_PRIMITIVE_TOPOLOGY;$/;" t +D3D10_REGISTER_COMPONENT_TYPE vendor/winapi/src/um/d3d10shader.rs /^pub type D3D10_REGISTER_COMPONENT_TYPE = D3D_REGISTER_COMPONENT_TYPE;$/;" t +D3D10_RESOURCE_RETURN_TYPE vendor/winapi/src/um/d3d10shader.rs /^pub type D3D10_RESOURCE_RETURN_TYPE = D3D_RESOURCE_RETURN_TYPE;$/;" t +D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord: DWORD) -> DWORD {$/;" f +D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord: DWORD) -> DWORD {$/;" f +D3D10_SB_OPERAND_4_COMPONENT_MASK vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_OPERAND_4_COMPONENT_MASK(ComponentName: DWORD) -> DWORD {$/;" f +D3D10_SB_OPERAND_4_COMPONENT_NOSWIZZLE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_OPERAND_4_COMPONENT_NOSWIZZLE() -> DWORD {$/;" f +D3D10_SB_OPERAND_4_COMPONENT_REPLICATEALPHA vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_OPERAND_4_COMPONENT_REPLICATEALPHA() -> DWORD {$/;" f +D3D10_SB_OPERAND_4_COMPONENT_REPLICATEBLUE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_OPERAND_4_COMPONENT_REPLICATEBLUE() -> DWORD {$/;" f +D3D10_SB_OPERAND_4_COMPONENT_REPLICATEGREEN vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_OPERAND_4_COMPONENT_REPLICATEGREEN() -> DWORD {$/;" f +D3D10_SB_OPERAND_4_COMPONENT_REPLICATERED vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_OPERAND_4_COMPONENT_REPLICATERED() -> DWORD {$/;" f +D3D10_SB_OPERAND_4_COMPONENT_REPLICATEW vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_OPERAND_4_COMPONENT_REPLICATEW() -> DWORD {$/;" f +D3D10_SB_OPERAND_4_COMPONENT_REPLICATEX vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_OPERAND_4_COMPONENT_REPLICATEX() -> DWORD {$/;" f +D3D10_SB_OPERAND_4_COMPONENT_REPLICATEY vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_OPERAND_4_COMPONENT_REPLICATEY() -> DWORD {$/;" f +D3D10_SB_OPERAND_4_COMPONENT_REPLICATEZ vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_OPERAND_4_COMPONENT_REPLICATEZ() -> DWORD {$/;" f +D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim: DWORD) -> DWORD {$/;" f +D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim: DWORD) -> DWORD {$/;" f +D3D10_SHADER_CBUFFER_FLAGS vendor/winapi/src/um/d3d10shader.rs /^pub type D3D10_SHADER_CBUFFER_FLAGS = D3D_SHADER_CBUFFER_FLAGS;$/;" t +D3D10_SHADER_INPUT_FLAGS vendor/winapi/src/um/d3d10shader.rs /^pub type D3D10_SHADER_INPUT_FLAGS = D3D_SHADER_INPUT_FLAGS;$/;" t +D3D10_SHADER_INPUT_TYPE vendor/winapi/src/um/d3d10shader.rs /^pub type D3D10_SHADER_INPUT_TYPE = D3D_SHADER_INPUT_TYPE;$/;" t +D3D10_SHADER_MACRO vendor/winapi/src/um/d3d10shader.rs /^pub type D3D10_SHADER_MACRO = D3D_SHADER_MACRO;$/;" t +D3D10_SHADER_VARIABLE_CLASS vendor/winapi/src/um/d3d10shader.rs /^pub type D3D10_SHADER_VARIABLE_CLASS = D3D_SHADER_VARIABLE_CLASS;$/;" t +D3D10_SHADER_VARIABLE_FLAGS vendor/winapi/src/um/d3d10shader.rs /^pub type D3D10_SHADER_VARIABLE_FLAGS = D3D_SHADER_VARIABLE_FLAGS;$/;" t +D3D10_SHADER_VARIABLE_TYPE vendor/winapi/src/um/d3d10shader.rs /^pub type D3D10_SHADER_VARIABLE_TYPE = D3D_SHADER_VARIABLE_TYPE;$/;" t +D3D10_SRV_DIMENSION vendor/winapi/src/um/d3d10.rs /^pub type D3D10_SRV_DIMENSION = D3D_SRV_DIMENSION;$/;" t +D3D11CalcSubresource vendor/winapi/src/um/d3d11.rs /^pub fn D3D11CalcSubresource(MipSlice: UINT, ArraySlice: UINT, MipLevels: UINT) -> UINT {$/;" f +D3D11CreateDevice vendor/winapi/src/um/d3d11.rs /^ pub fn D3D11CreateDevice($/;" f +D3D11CreateDeviceAndSwapChain vendor/winapi/src/um/d3d11.rs /^ pub fn D3D11CreateDeviceAndSwapChain($/;" f +D3D11On12CreateDevice vendor/winapi/src/um/d3d11on12.rs /^ pub fn D3D11On12CreateDevice($/;" f +D3D11_CBUFFER_TYPE vendor/winapi/src/um/d3d11shader.rs /^pub type D3D11_CBUFFER_TYPE = D3D_CBUFFER_TYPE;$/;" t +D3D11_PRIMITIVE vendor/winapi/src/um/d3d11.rs /^pub type D3D11_PRIMITIVE = D3D_PRIMITIVE;$/;" t +D3D11_PRIMITIVE_TOPOLOGY vendor/winapi/src/um/d3d11.rs /^pub type D3D11_PRIMITIVE_TOPOLOGY = D3D_PRIMITIVE_TOPOLOGY;$/;" t +D3D11_RECT vendor/winapi/src/um/d3d11.rs /^pub type D3D11_RECT = RECT;$/;" t +D3D11_RESOURCE_RETURN_TYPE vendor/winapi/src/um/d3d11shader.rs /^pub type D3D11_RESOURCE_RETURN_TYPE = D3D_RESOURCE_RETURN_TYPE;$/;" t +D3D11_SRV_DIMENSION vendor/winapi/src/um/d3d11.rs /^pub type D3D11_SRV_DIMENSION = D3D_SRV_DIMENSION;$/;" t +D3D11_TESSELLATOR_DOMAIN vendor/winapi/src/um/d3d11shader.rs /^pub type D3D11_TESSELLATOR_DOMAIN = D3D_TESSELLATOR_DOMAIN;$/;" t +D3D11_TESSELLATOR_OUTPUT_PRIMITIVE vendor/winapi/src/um/d3d11shader.rs /^pub type D3D11_TESSELLATOR_OUTPUT_PRIMITIVE = D3D_TESSELLATOR_OUTPUT_PRIMITIVE;$/;" t +D3D11_TESSELLATOR_PARTITIONING vendor/winapi/src/um/d3d11shader.rs /^pub type D3D11_TESSELLATOR_PARTITIONING = D3D_TESSELLATOR_PARTITIONING;$/;" t +D3D12CreateDevice vendor/winapi/src/um/d3d12.rs /^ pub fn D3D12CreateDevice($/;" f +D3D12CreateRootSignatureDeserializer vendor/winapi/src/um/d3d12.rs /^ pub fn D3D12CreateRootSignatureDeserializer($/;" f +D3D12CreateVersionedRootSignatureDeserializer vendor/winapi/src/um/d3d12.rs /^ pub fn D3D12CreateVersionedRootSignatureDeserializer($/;" f +D3D12EnableExperimentalFeatures vendor/winapi/src/um/d3d12.rs /^ pub fn D3D12EnableExperimentalFeatures($/;" f +D3D12GetDebugInterface vendor/winapi/src/um/d3d12.rs /^ pub fn D3D12GetDebugInterface($/;" f +D3D12SerializeRootSignature vendor/winapi/src/um/d3d12.rs /^ pub fn D3D12SerializeRootSignature($/;" f +D3D12SerializeVersionedRootSignature vendor/winapi/src/um/d3d12.rs /^ pub fn D3D12SerializeVersionedRootSignature($/;" f +D3D12_CBUFFER_TYPE vendor/winapi/src/um/d3d12shader.rs /^pub type D3D12_CBUFFER_TYPE = D3D_CBUFFER_TYPE;$/;" t +D3D12_GPU_VIRTUAL_ADDRESS vendor/winapi/src/um/d3d12.rs /^pub type D3D12_GPU_VIRTUAL_ADDRESS = UINT64;$/;" t +D3D12_PRIMITIVE vendor/winapi/src/um/d3d12.rs /^pub type D3D12_PRIMITIVE = D3D_PRIMITIVE;$/;" t +D3D12_PRIMITIVE_TOPOLOGY vendor/winapi/src/um/d3d12.rs /^pub type D3D12_PRIMITIVE_TOPOLOGY = D3D_PRIMITIVE_TOPOLOGY;$/;" t +D3D12_RECT vendor/winapi/src/um/d3d12.rs /^pub type D3D12_RECT = RECT;$/;" t +D3D12_RESOURCE_RETURN_TYPE vendor/winapi/src/um/d3d12shader.rs /^pub type D3D12_RESOURCE_RETURN_TYPE = D3D_RESOURCE_RETURN_TYPE;$/;" t +D3D12_TESSELLATOR_DOMAIN vendor/winapi/src/um/d3d12shader.rs /^pub type D3D12_TESSELLATOR_DOMAIN = D3D_TESSELLATOR_DOMAIN;$/;" t +D3D12_TESSELLATOR_OUTPUT_PRIMITIVE vendor/winapi/src/um/d3d12shader.rs /^pub type D3D12_TESSELLATOR_OUTPUT_PRIMITIVE = D3D_TESSELLATOR_OUTPUT_PRIMITIVE;$/;" t +D3D12_TESSELLATOR_PARTITIONING vendor/winapi/src/um/d3d12shader.rs /^pub type D3D12_TESSELLATOR_PARTITIONING = D3D_TESSELLATOR_PARTITIONING;$/;" t +D3DCOLOR vendor/winapi/src/shared/d3d9types.rs /^pub type D3DCOLOR = DWORD;$/;" t +D3DCOLOR_ARGB vendor/winapi/src/shared/d3d9types.rs /^pub fn D3DCOLOR_ARGB(a: DWORD, r: DWORD, g: DWORD, b: DWORD) -> D3DCOLOR {$/;" f +D3DCOLOR_AYUV vendor/winapi/src/shared/d3d9types.rs /^pub fn D3DCOLOR_AYUV(a: DWORD, y: DWORD, u: DWORD, v: DWORD) -> D3DCOLOR {$/;" f +D3DCOLOR_COLORVALUE vendor/winapi/src/shared/d3d9types.rs /^pub fn D3DCOLOR_COLORVALUE(r: f32, g: f32, b: f32, a: f32) -> D3DCOLOR {$/;" f +D3DCOLOR_RGBA vendor/winapi/src/shared/d3d9types.rs /^pub fn D3DCOLOR_RGBA(r: DWORD, g: DWORD, b: DWORD, a: DWORD) -> D3DCOLOR {$/;" f +D3DCOLOR_XRGB vendor/winapi/src/shared/d3d9types.rs /^pub fn D3DCOLOR_XRGB(r: DWORD, g: DWORD, b: DWORD) -> D3DCOLOR {$/;" f +D3DCOLOR_XYUV vendor/winapi/src/shared/d3d9types.rs /^pub fn D3DCOLOR_XYUV(y: DWORD, u: DWORD, v: DWORD) -> D3DCOLOR {$/;" f +D3DCompile vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DCompile($/;" f +D3DCompile2 vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DCompile2($/;" f +D3DCompileFromFile vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DCompileFromFile($/;" f +D3DCompressShaders vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DCompressShaders($/;" f +D3DCreateBlob vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DCreateBlob($/;" f +D3DCreateFunctionLinkingGraph vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DCreateFunctionLinkingGraph($/;" f +D3DCreateLinker vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DCreateLinker($/;" f +D3DDDI_VIDEO_PRESENT_SOURCE_ID vendor/winapi/src/shared/d3dukmdt.rs /^pub type D3DDDI_VIDEO_PRESENT_SOURCE_ID = UINT;$/;" t +D3DDDI_VIDEO_PRESENT_TARGET_ID vendor/winapi/src/shared/d3dukmdt.rs /^pub type D3DDDI_VIDEO_PRESENT_TARGET_ID = UINT;$/;" t +D3DDecompressShaders vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DDecompressShaders($/;" f +D3DDisassemble vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DDisassemble($/;" f +D3DDisassembleRegion vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DDisassembleRegion($/;" f +D3DGPU_SIZE_T vendor/winapi/src/shared/d3dukmdt.rs /^pub type D3DGPU_SIZE_T = ULONGLONG;$/;" t +D3DGPU_VIRTUAL_ADDRESS vendor/winapi/src/shared/d3dukmdt.rs /^pub type D3DGPU_VIRTUAL_ADDRESS = ULONGLONG;$/;" t +D3DGetBlobPart vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DGetBlobPart($/;" f +D3DGetDebugInfo vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DGetDebugInfo($/;" f +D3DGetInputAndOutputSignatureBlob vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DGetInputAndOutputSignatureBlob($/;" f +D3DGetInputSignatureBlob vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DGetInputSignatureBlob($/;" f +D3DGetOutputSignatureBlob vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DGetOutputSignatureBlob($/;" f +D3DGetTraceInstructionOffsets vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DGetTraceInstructionOffsets($/;" f +D3DKMT_HANDLE vendor/winapi/src/shared/d3dukmdt.rs /^pub type D3DKMT_HANDLE = UINT;$/;" t +D3DLoadModule vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DLoadModule($/;" f +D3DPERF_BeginEvent vendor/winapi/src/shared/d3d9.rs /^ pub fn D3DPERF_BeginEvent($/;" f +D3DPERF_EndEvent vendor/winapi/src/shared/d3d9.rs /^ pub fn D3DPERF_EndEvent() -> INT;$/;" f +D3DPERF_GetStatus vendor/winapi/src/shared/d3d9.rs /^ pub fn D3DPERF_GetStatus() -> DWORD;$/;" f +D3DPERF_QueryRepeatFrame vendor/winapi/src/shared/d3d9.rs /^ pub fn D3DPERF_QueryRepeatFrame() -> BOOL;$/;" f +D3DPERF_SetMarker vendor/winapi/src/shared/d3d9.rs /^ pub fn D3DPERF_SetMarker($/;" f +D3DPERF_SetOptions vendor/winapi/src/shared/d3d9.rs /^ pub fn D3DPERF_SetOptions($/;" f +D3DPERF_SetRegion vendor/winapi/src/shared/d3d9.rs /^ pub fn D3DPERF_SetRegion($/;" f +D3DPreprocess vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DPreprocess($/;" f +D3DReadFileToBlob vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DReadFileToBlob($/;" f +D3DReflect vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DReflect($/;" f +D3DReflectLibrary vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DReflectLibrary($/;" f +D3DSetBlobPart vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DSetBlobPart($/;" f +D3DStripShader vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DStripShader($/;" f +D3DTS_WORLDMATRIX vendor/winapi/src/shared/d3d9types.rs /^macro_rules! D3DTS_WORLDMATRIX {$/;" M +D3DWriteBlobToFile vendor/winapi/src/um/d3dcompiler.rs /^ pub fn D3DWriteBlobToFile($/;" f +DATA lib/sh/snprintf.c /^struct DATA$/;" s file: +DATA vendor/lazy_static/tests/test.rs /^static DATA: X = X;$/;" v +DATA_BLOB vendor/winapi/src/um/wincrypt.rs /^pub type DATA_BLOB = CRYPTOAPI_BLOB;$/;" t +DATE vendor/winapi/src/shared/wtypes.rs /^pub type DATE = c_double;$/;" t +DBL_MAX lib/sh/strtod.c /^# define DBL_MAX /;" d file: +DBL_MIN lib/sh/strtod.c /^# define DBL_MIN /;" d file: +DCGETTEXT lib/intl/dcgettext.c /^# define DCGETTEXT /;" d file: +DCGETTEXT lib/intl/dcgettext.c /^DCGETTEXT (domainname, msgid, category)$/;" f +DCGETTEXT lib/intl/dgettext.c /^# define DCGETTEXT /;" d file: +DCGETTEXT lib/intl/gettext.c /^# define DCGETTEXT /;" d file: +DCIGETTEXT lib/intl/dcgettext.c /^# define DCIGETTEXT /;" d file: +DCIGETTEXT lib/intl/dcigettext.c /^# define DCIGETTEXT /;" d file: +DCIGETTEXT lib/intl/dcngettext.c /^# define DCIGETTEXT /;" d file: +DCNGETTEXT lib/intl/dcngettext.c /^# define DCNGETTEXT /;" d file: +DCNGETTEXT lib/intl/dcngettext.c /^DCNGETTEXT (domainname, msgid1, msgid2, n, category)$/;" f +DCNGETTEXT lib/intl/dngettext.c /^# define DCNGETTEXT /;" d file: +DCNGETTEXT lib/intl/ngettext.c /^# define DCNGETTEXT /;" d file: +DCompositionAttachMouseDragToHwnd vendor/winapi/src/um/dcomp.rs /^ pub fn DCompositionAttachMouseDragToHwnd($/;" f +DCompositionAttachMouseWheelToHwnd vendor/winapi/src/um/dcomp.rs /^ pub fn DCompositionAttachMouseWheelToHwnd($/;" f +DCompositionCreateDevice vendor/winapi/src/um/dcomp.rs /^ pub fn DCompositionCreateDevice($/;" f +DCompositionCreateDevice2 vendor/winapi/src/um/dcomp.rs /^ pub fn DCompositionCreateDevice2($/;" f +DCompositionCreateDevice3 vendor/winapi/src/um/dcomp.rs /^ pub fn DCompositionCreateDevice3($/;" f +DCompositionCreateSurfaceHandle vendor/winapi/src/um/dcomp.rs /^ pub fn DCompositionCreateSurfaceHandle($/;" f +DCompositionGetFrameStatistics vendor/winapi/src/um/dcomp.rs /^ pub fn DCompositionGetFrameStatistics($/;" f +DEADJOB jobs.h /^#define DEADJOB(/;" d +DEADJOB r_jobs/src/lib.rs /^macro_rules! DEADJOB {$/;" M +DEBUG Makefile.in /^DEBUG = @DEBUG@$/;" m +DEBUG configure.ac /^AC_SUBST(DEBUG)$/;" s +DEBUG lib/readline/Makefile.in /^DEBUG = @DEBUG@$/;" m +DEBUGGER configure.ac /^AC_DEFINE(DEBUGGER)$/;" d +DEBUGGER_DIR Makefile.in /^DEBUGGER_DIR = $(dot)\/debugger$/;" m +DEBUGGER_START_FILE Makefile.in /^DEBUGGER_START_FILE = @DEBUGGER_START_FILE@$/;" m +DEBUGGER_START_FILE pathnames.h.in /^#define DEBUGGER_START_FILE /;" d file: +DEBUG_TRAP builtins_rust/common/src/lib.rs /^macro_rules! DEBUG_TRAP {$/;" M +DEBUG_TRAP builtins_rust/source/src/lib.rs /^unsafe fn DEBUG_TRAP() -> i32 {$/;" f +DEBUG_TRAP trap.h /^#define DEBUG_TRAP /;" d +DECIMAL lib/sh/uconvert.c /^#define DECIMAL /;" d file: +DECIMAL_SETZERO vendor/winapi/src/shared/wtypes.rs /^pub fn DECIMAL_SETZERO(dec: &mut DECIMAL) {$/;" f +DECLARE_MBSTATE include/shmbutil.h /^# define DECLARE_MBSTATE /;" d +DECLARE_MBSTATE include/shmbutil.h /^# define DECLARE_MBSTATE$/;" d +DECLARE_OPTS builtins_rust/declare/src/lib.rs /^unsafe fn DECLARE_OPTS() -> CString {$/;" f +DECODE_D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN($/;" f +DECODE_D3D10_SB_CUSTOMDATA_CLASS vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_CUSTOMDATA_CLASS(CustomDataDescTok: DWORD) -> D3D10_SB_CUSTOMDATA_CLASS {$/;" f +DECODE_D3D10_SB_EXTENDED_OPCODE_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_EXTENDED_OPCODE_TYPE(OpcodeToken1: DWORD) -> D3D10_SB_EXTENDED_OPCODE_TYP/;" f +DECODE_D3D10_SB_EXTENDED_OPERAND_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_EXTENDED_OPERAND_TYPE($/;" f +DECODE_D3D10_SB_GLOBAL_FLAGS vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_GLOBAL_FLAGS(OpcodeToken0: DWORD) -> DWORD {$/;" f +DECODE_D3D10_SB_GS_INPUT_PRIMITIVE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_GS_INPUT_PRIMITIVE(OpcodeToken0: DWORD) -> D3D10_SB_PRIMITIVE {$/;" f +DECODE_D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY($/;" f +DECODE_D3D10_SB_INPUT_INTERPOLATION_MODE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_INPUT_INTERPOLATION_MODE($/;" f +DECODE_D3D10_SB_INSTRUCTION_RETURN_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_INSTRUCTION_RETURN_TYPE($/;" f +DECODE_D3D10_SB_INSTRUCTION_TEST_BOOLEAN vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_INSTRUCTION_TEST_BOOLEAN($/;" f +DECODE_D3D10_SB_NAME vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_NAME(NameToken: DWORD) -> D3D10_SB_NAME {$/;" f +DECODE_D3D10_SB_OPCODE_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_OPCODE_TYPE(OpcodeToken0: DWORD) -> D3D10_SB_OPCODE_TYPE {$/;" f +DECODE_D3D10_SB_OPERAND_4_COMPONENT_MASK vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_OPERAND_4_COMPONENT_MASK(OperandToken0: DWORD) -> DWORD {$/;" f +DECODE_D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE($/;" f +DECODE_D3D10_SB_OPERAND_4_COMPONENT_SELECT_1 vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_OPERAND_4_COMPONENT_SELECT_1($/;" f +DECODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(OperandToken0: DWORD) -> DWORD {$/;" f +DECODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SOURCE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SOURCE($/;" f +DECODE_D3D10_SB_OPERAND_INDEX_DIMENSION vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_OPERAND_INDEX_DIMENSION($/;" f +DECODE_D3D10_SB_OPERAND_INDEX_REPRESENTATION vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_OPERAND_INDEX_REPRESENTATION($/;" f +DECODE_D3D10_SB_OPERAND_MODIFIER vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_OPERAND_MODIFIER(OperandToken1: DWORD) -> D3D10_SB_OPERAND_MODIFIER {$/;" f +DECODE_D3D10_SB_OPERAND_NUM_COMPONENTS vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_OPERAND_NUM_COMPONENTS(OperandToken0: DWORD) -> DWORD {$/;" f +DECODE_D3D10_SB_OPERAND_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_OPERAND_TYPE(OperandToken0: DWORD) -> D3D10_SB_OPERAND_TYPE {$/;" f +DECODE_D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE($/;" f +DECODE_D3D10_SB_RESOURCE_DIMENSION vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_RESOURCE_DIMENSION(OpcodeToken0: DWORD) -> D3D10_SB_RESOURCE_DIMENSION {$/;" f +DECODE_D3D10_SB_RESOURCE_RETURN_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_RESOURCE_RETURN_TYPE($/;" f +DECODE_D3D10_SB_RESOURCE_SAMPLE_COUNT vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_RESOURCE_SAMPLE_COUNT(OpcodeToken0: DWORD) -> UINT {$/;" f +DECODE_D3D10_SB_SAMPLER_MODE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_SAMPLER_MODE(OpcodeToken0: DWORD) -> D3D10_SB_SAMPLER_MODE {$/;" f +DECODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH(OpcodeToken0: DWORD) -> DWORD {$/;" f +DECODE_D3D10_SB_TOKENIZED_PROGRAM_LENGTH vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_TOKENIZED_PROGRAM_LENGTH(LenTok: DWORD) -> DWORD {$/;" f +DECODE_D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION(VerTok: DWORD) -> DWORD {$/;" f +DECODE_D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION(VerTok: DWORD) -> DWORD {$/;" f +DECODE_D3D10_SB_TOKENIZED_PROGRAM_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D10_SB_TOKENIZED_PROGRAM_TYPE(VerTok: DWORD) -> DWORD {$/;" f +DECODE_D3D11_SB_ACCESS_COHERENCY_FLAGS vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_ACCESS_COHERENCY_FLAGS(OperandToken0: DWORD) -> DWORD {$/;" f +DECODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION($/;" f +DECODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE(OpcodeTokenN: DWORD) -> DWOR/;" f +DECODE_D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE($/;" f +DECODE_D3D11_SB_INPUT_CONTROL_POINT_COUNT vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_INPUT_CONTROL_POINT_COUNT(OpcodeToken0: DWORD) -> UINT {$/;" f +DECODE_D3D11_SB_INSTRUCTION_PRECISE_VALUES vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_INSTRUCTION_PRECISE_VALUES(OpcodeToken0: DWORD) -> DWORD {$/;" f +DECODE_D3D11_SB_INTERFACE_ARRAY_LENGTH vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_INTERFACE_ARRAY_LENGTH(OpcodeToken0: DWORD) -> UINT {$/;" f +DECODE_D3D11_SB_INTERFACE_INDEXED_BIT vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_INTERFACE_INDEXED_BIT(OpcodeToken0: DWORD) -> DWORD {$/;" f +DECODE_D3D11_SB_INTERFACE_TABLE_LENGTH vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_INTERFACE_TABLE_LENGTH(OpcodeToken0: DWORD) -> UINT {$/;" f +DECODE_D3D11_SB_OPERAND_MIN_PRECISION vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_OPERAND_MIN_PRECISION($/;" f +DECODE_D3D11_SB_OUTPUT_CONTROL_POINT_COUNT vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_OUTPUT_CONTROL_POINT_COUNT(OpcodeToken0: DWORD) -> UINT {$/;" f +DECODE_D3D11_SB_SYNC_FLAGS vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_SYNC_FLAGS(OperandToken0: DWORD) -> DWORD {$/;" f +DECODE_D3D11_SB_TESS_DOMAIN vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_TESS_DOMAIN(OpcodeToken0: DWORD) -> D3D11_SB_TESSELLATOR_DOMAIN {$/;" f +DECODE_D3D11_SB_TESS_OUTPUT_PRIMITIVE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_TESS_OUTPUT_PRIMITIVE($/;" f +DECODE_D3D11_SB_TESS_PARTITIONING vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_TESS_PARTITIONING($/;" f +DECODE_D3D11_SB_UAV_FLAGS vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_D3D11_SB_UAV_FLAGS(OperandToken0: DWORD) -> DWORD {$/;" f +DECODE_IMMEDIATE_D3D10_SB_ADDRESS_OFFSET vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_IMMEDIATE_D3D10_SB_ADDRESS_OFFSET($/;" f +DECODE_IS_D3D10_SB_INSTRUCTION_SATURATE_ENABLED vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_IS_D3D10_SB_INSTRUCTION_SATURATE_ENABLED(OpcodeToken0: DWORD) -> DWORD {$/;" f +DECODE_IS_D3D10_SB_OPCODE_EXTENDED vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_IS_D3D10_SB_OPCODE_EXTENDED(OpcodeToken0: DWORD) -> DWORD {$/;" f +DECODE_IS_D3D10_SB_OPERAND_DOUBLE_EXTENDED vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_IS_D3D10_SB_OPERAND_DOUBLE_EXTENDED(OperandToken1: DWORD) -> DWORD {$/;" f +DECODE_IS_D3D10_SB_OPERAND_EXTENDED vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn DECODE_IS_D3D10_SB_OPERAND_EXTENDED(OperandToken0: DWORD) -> DWORD {$/;" f +DECREF vendor/winapi/src/um/winnt.rs /^pub fn DECREF(x: WORD) -> WORD {$/;" f +DEFAULTCMD builtins_rust/complete/src/lib.rs /^unsafe fn DEFAULTCMD() -> *const c_char {$/;" f +DEFAULTCMD pcomplete.h /^#define DEFAULTCMD /;" d +DEFAULT_ARRAY_SIZE subst.c /^#define DEFAULT_ARRAY_SIZE /;" d file: +DEFAULT_BASHRC config-top.h /^#define DEFAULT_BASHRC /;" d +DEFAULT_BUFFER_SIZE lib/readline/rldefs.h /^#define DEFAULT_BUFFER_SIZE /;" d +DEFAULT_CHILD_MAX jobs.c /^# define DEFAULT_CHILD_MAX /;" d file: +DEFAULT_CHILD_MAX nojobs.c /^#define DEFAULT_CHILD_MAX /;" d file: +DEFAULT_ECHO_TO_XPG configure.ac /^AC_DEFINE(DEFAULT_ECHO_TO_XPG)$/;" d +DEFAULT_HASH_BUCKETS hashlib.h /^#define DEFAULT_HASH_BUCKETS /;" d +DEFAULT_HISTORY_GROW_SIZE lib/readline/history.c /^#define DEFAULT_HISTORY_GROW_SIZE /;" d file: +DEFAULT_HISTORY_INITIAL_SIZE lib/readline/history.c /^#define DEFAULT_HISTORY_INITIAL_SIZE /;" d file: +DEFAULT_HOSTS_FILE pathnames.h.in /^#define DEFAULT_HOSTS_FILE /;" d file: +DEFAULT_INITIAL_ARRAY_SIZE subst.c /^#define DEFAULT_INITIAL_ARRAY_SIZE /;" d file: +DEFAULT_INPUTRC lib/readline/rlconf.h /^#define DEFAULT_INPUTRC /;" d +DEFAULT_LINE_BUFFER_SIZE lib/readline/display.c /^#define DEFAULT_LINE_BUFFER_SIZE /;" d file: +DEFAULT_MAIL_DIRECTORY config.h.in /^#define DEFAULT_MAIL_DIRECTORY /;" d file: +DEFAULT_MAXGROUPS lib/sh/oslib.c /^#define DEFAULT_MAXGROUPS /;" d file: +DEFAULT_MAX_KILLS lib/readline/kill.c /^#define DEFAULT_MAX_KILLS /;" d file: +DEFAULT_NAMEROOT lib/sh/tmpfile.c /^#define DEFAULT_NAMEROOT /;" d file: +DEFAULT_PATH_VALUE config-top.h /^#define DEFAULT_PATH_VALUE /;" d +DEFAULT_SIG trap.h /^#define DEFAULT_SIG /;" d +DEFAULT_TMPDIR lib/sh/tmpfile.c /^#define DEFAULT_TMPDIR /;" d file: +DEFCOMP_CMDPOS bashline.c /^#define DEFCOMP_CMDPOS /;" d file: +DEFDIR Makefile.in /^DEFDIR = $(dot)\/builtins$/;" m +DEFINE_NWF_GUID vendor/winapi/src/shared/windot11.rs /^macro_rules! DEFINE_NWF_GUID {$/;" M +DEFS Makefile.in /^DEFS = @DEFS@$/;" m +DEFS builtins/Makefile.in /^DEFS = @DEFS@$/;" m +DEFS lib/glob/Makefile.in /^DEFS = @DEFS@$/;" m +DEFS lib/intl/Makefile.in /^DEFS = -DLOCALEDIR=\\"$(localedir)\\" -DLOCALE_ALIAS_PATH=\\"$(aliaspath)\\" \\$/;" m +DEFS lib/malloc/Makefile.in /^DEFS = @DEFS@$/;" m +DEFS lib/readline/Makefile.in /^DEFS = @DEFS@$/;" m +DEFS lib/sh/Makefile.in /^DEFS = @DEFS@$/;" m +DEFS lib/termcap/Makefile.in /^DEFS = @DEFS@$/;" m +DEFS lib/tilde/Makefile.in /^DEFS = @DEFS@$/;" m +DEFS support/Makefile.in /^DEFS = @DEFS@$/;" m +DEFSRC Makefile.in /^DEFSRC=$(BUILTIN_SRCDIR)$/;" m +DEFSRC builtins/Makefile.in /^DEFSRC = $(srcdir)\/alias.def $(srcdir)\/bind.def $(srcdir)\/break.def \\$/;" m +DEF_FILE builtins/mkbuiltins.c /^} DEF_FILE;$/;" t typeref:struct:__anon69e836710308 file: +DEF_PREC lib/sh/snprintf.c /^#define DEF_PREC(/;" d file: +DELINTERRUPT quit.h /^#define DELINTERRUPT /;" d +DEL_NOBGPID jobs.c /^#define DEL_NOBGPID /;" d file: +DEL_WARNSTOPPED jobs.c /^#define DEL_WARNSTOPPED /;" d file: +DEQUOTE_PATHNAME lib/glob/smatch.c /^#define DEQUOTE_PATHNAME /;" d file: +DESCRIBE_PID execute_cmd.c /^#define DESCRIBE_PID(/;" d file: +DESC_CHAR vendor/winapi/src/um/lmremutl.rs /^pub type DESC_CHAR = CHAR;$/;" t +DESKTOPENUMPROCA vendor/winapi/src/um/winuser.rs /^pub type DESKTOPENUMPROCA = NAMEENUMPROCA;$/;" t +DESKTOPENUMPROCW vendor/winapi/src/um/winuser.rs /^pub type DESKTOPENUMPROCW = NAMEENUMPROCW;$/;" t +DESTDIR Makefile.in /^DESTDIR =$/;" m +DESTDIR builtins/Makefile.in /^DESTDIR =$/;" m +DETERMINE_SECURE lib/intl/dcigettext.c /^# define DETERMINE_SECURE$/;" d file: +DEVICE_TYPE vendor/winapi/src/um/winioctl.rs /^pub type DEVICE_TYPE = DWORD;$/;" t +DEVINST vendor/winapi/src/um/cfgmgr32.rs /^pub type DEVINST = DWORD;$/;" t +DEVINSTID_A vendor/winapi/src/um/cfgmgr32.rs /^pub type DEVINSTID_A = *mut CHAR;$/;" t +DEVINSTID_W vendor/winapi/src/um/cfgmgr32.rs /^pub type DEVINSTID_W = *mut WCHAR;$/;" t +DEVNODE vendor/winapi/src/um/cfgmgr32.rs /^pub type DEVNODE = DWORD;$/;" t +DEVNODEID_A vendor/winapi/src/um/cfgmgr32.rs /^pub type DEVNODEID_A = *mut CHAR;$/;" t +DEVNODEID_W vendor/winapi/src/um/cfgmgr32.rs /^pub type DEVNODEID_W = *mut WCHAR;$/;" t +DEVPROPGUID vendor/winapi/src/shared/devpropdef.rs /^pub type DEVPROPGUID = GUID;$/;" t +DEVPROPID vendor/winapi/src/shared/devpropdef.rs /^pub type DEVPROPID = ULONG;$/;" t +DEVPROPTYPE vendor/winapi/src/shared/devpropdef.rs /^pub type DEVPROPTYPE = ULONG;$/;" t +DEVPROP_BOOLEAN vendor/winapi/src/shared/devpropdef.rs /^pub type DEVPROP_BOOLEAN = CHAR;$/;" t +DEVSTAT_ALL_SUPPORTED vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_ALL_SUPPORTED = 0x00,$/;" e enum:devstat_support_flags +DEVSTAT_BS_UNAVAILABLE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_BS_UNAVAILABLE = 0x04,$/;" e enum:devstat_support_flags +DEVSTAT_FREE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_FREE = 0x03,$/;" e enum:devstat_trans_flags +DEVSTAT_MATCH_IF vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_MATCH_IF = 0x02,$/;" e enum:devstat_match_flags +DEVSTAT_MATCH_NONE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_MATCH_NONE = 0x00,$/;" e enum:devstat_match_flags +DEVSTAT_MATCH_PASS vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_MATCH_PASS = 0x04,$/;" e enum:devstat_match_flags +DEVSTAT_MATCH_TYPE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_MATCH_TYPE = 0x01,$/;" e enum:devstat_match_flags +DEVSTAT_NO_BLOCKSIZE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_NO_BLOCKSIZE = 0x01,$/;" e enum:devstat_support_flags +DEVSTAT_NO_DATA vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_NO_DATA = 0x00,$/;" e enum:devstat_trans_flags +DEVSTAT_NO_ORDERED_TAGS vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_NO_ORDERED_TAGS = 0x02,$/;" e enum:devstat_support_flags +DEVSTAT_PRIORITY_ARRAY vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_PRIORITY_ARRAY = 0x120,$/;" e enum:devstat_priority +DEVSTAT_PRIORITY_CD vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_PRIORITY_CD = 0x090,$/;" e enum:devstat_priority +DEVSTAT_PRIORITY_DISK vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_PRIORITY_DISK = 0x110,$/;" e enum:devstat_priority +DEVSTAT_PRIORITY_FD vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_PRIORITY_FD = 0x040,$/;" e enum:devstat_priority +DEVSTAT_PRIORITY_MAX vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_PRIORITY_MAX = 0xfff,$/;" e enum:devstat_priority +DEVSTAT_PRIORITY_MIN vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_PRIORITY_MIN = 0x000,$/;" e enum:devstat_priority +DEVSTAT_PRIORITY_OTHER vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_PRIORITY_OTHER = 0x020,$/;" e enum:devstat_priority +DEVSTAT_PRIORITY_PASS vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_PRIORITY_PASS = 0x030,$/;" e enum:devstat_priority +DEVSTAT_PRIORITY_TAPE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_PRIORITY_TAPE = 0x060,$/;" e enum:devstat_priority +DEVSTAT_PRIORITY_WFD vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_PRIORITY_WFD = 0x050,$/;" e enum:devstat_priority +DEVSTAT_READ vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_READ = 0x01,$/;" e enum:devstat_trans_flags +DEVSTAT_TAG_HEAD vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TAG_HEAD = 0x01,$/;" e enum:devstat_tag_type +DEVSTAT_TAG_NONE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TAG_NONE = 0x03,$/;" e enum:devstat_tag_type +DEVSTAT_TAG_ORDERED vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TAG_ORDERED = 0x02,$/;" e enum:devstat_tag_type +DEVSTAT_TAG_SIMPLE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TAG_SIMPLE = 0x00,$/;" e enum:devstat_tag_type +DEVSTAT_TYPE_ASC0 vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_ASC0 = 0x00a,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_ASC1 vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_ASC1 = 0x00b,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_CDROM vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_CDROM = 0x005,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_CHANGER vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_CHANGER = 0x008,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_COMM vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_COMM = 0x009,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_DIRECT vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_DIRECT = 0x000,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_ENCLOSURE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_ENCLOSURE = 0x00d,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_FLOPPY vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_FLOPPY = 0x00e,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_IF_IDE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_IF_IDE = 0x020,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_IF_MASK vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_IF_MASK = 0x0f0,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_IF_OTHER vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_IF_OTHER = 0x030,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_IF_SCSI vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_IF_SCSI = 0x010,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_MASK vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_MASK = 0x00f,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_OPTICAL vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_OPTICAL = 0x007,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_PASS vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_PASS = 0x100,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_PRINTER vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_PRINTER = 0x002,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_PROCESSOR vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_PROCESSOR = 0x003,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_SCANNER vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_SCANNER = 0x006,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_SEQUENTIAL vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_SEQUENTIAL = 0x001,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_STORARRAY vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_STORARRAY = 0x00c,$/;" e enum:devstat_type_flags +DEVSTAT_TYPE_WORM vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_TYPE_WORM = 0x004,$/;" e enum:devstat_type_flags +DEVSTAT_WRITE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DEVSTAT_WRITE = 0x02,$/;" e enum:devstat_trans_flags +DEV_FD_STAT_BROKEN configure.ac /^AC_DEFINE(DEV_FD_STAT_BROKEN)$/;" d +DGETTEXT lib/intl/dgettext.c /^# define DGETTEXT /;" d file: +DGETTEXT lib/intl/dgettext.c /^DGETTEXT (domainname, msgid)$/;" f +DGROUP lib/malloc/x386-alloca.s /^DGROUP GROUP CONST, _BSS, _DATA$/;" l +DIGIT builtins_rust/common/src/lib.rs /^macro_rules! DIGIT {$/;" M +DIGIT builtins_rust/fc/src/lib.rs /^unsafe fn DIGIT(c: c_char) -> bool {$/;" f +DIGIT builtins_rust/umask/src/lib.rs /^unsafe fn DIGIT(c: c_char) -> bool {$/;" f +DIGIT builtins_rust/wait/src/lib.rs /^unsafe fn DIGIT(c: c_char) -> bool {$/;" f +DIGIT include/chartypes.h /^#define DIGIT(/;" d +DIGIT r_print_cmd/src/lib.rs /^unsafe fn DIGIT(c:c_char) -> bool{$/;" f +DIR lib/glob/ndir.h /^} DIR;$/;" t typeref:struct:__anona16f3dc10108 +DIR r_bash/src/lib.rs /^pub type DIR = __dirstream;$/;" t +DIR r_glob/src/lib.rs /^pub struct DIR {$/;" s +DIR r_readline/src/lib.rs /^pub type DIR = __dirstream;$/;" t +DIR vendor/libc/src/fuchsia/mod.rs /^impl ::Clone for DIR {$/;" c +DIR vendor/libc/src/fuchsia/mod.rs /^impl ::Copy for DIR {}$/;" c +DIR vendor/libc/src/fuchsia/mod.rs /^pub enum DIR {}$/;" g +DIR vendor/libc/src/unix/mod.rs /^impl ::Clone for DIR {$/;" c +DIR vendor/libc/src/unix/mod.rs /^impl ::Copy for DIR {}$/;" c +DIR vendor/libc/src/unix/mod.rs /^pub enum DIR {}$/;" g +DIR vendor/libc/src/vxworks/mod.rs /^impl ::Clone for DIR {$/;" c +DIR vendor/libc/src/vxworks/mod.rs /^impl ::Copy for DIR {}$/;" c +DIR vendor/libc/src/vxworks/mod.rs /^pub enum DIR {}$/;" g +DIR vendor/libc/src/wasi.rs /^pub enum DIR {}$/;" g +DIRBLKSIZ lib/glob/ndir.h /^#define DIRBLKSIZ /;" d +DIRCOMPLETE_EXPAND_DEFAULT configure.ac /^AC_DEFINE(DIRCOMPLETE_EXPAND_DEFAULT)$/;" d +DIRECTDEFINE builtins/Makefile.in /^DIRECTDEFINE = -D $(srcdir)$/;" m +DIRECTORY_SEPARATOR lib/intl/localcharset.c /^# define DIRECTORY_SEPARATOR /;" d file: +DIRSEP general.h /^#define DIRSEP /;" d +DISABLED_BUILTINS configure.ac /^AC_DEFINE(DISABLED_BUILTINS)$/;" d +DISCARD bashjmp.h /^#define DISCARD /;" d +DISCARD builtins_rust/common/src/lib.rs /^macro_rules! DISCARD {$/;" M +DISPID vendor/winapi/src/um/oaidl.rs /^pub type DISPID = LONG;$/;" t +DISPID vendor/winapi/src/um/oleauto.rs /^pub type DISPID = LONG;$/;" t +DISPLAY_TABS lib/readline/rlconf.h /^#define DISPLAY_TABS$/;" d +DISTFILES.common lib/intl/Makefile.in /^DISTFILES.common = Makefile.in \\$/;" m +DISTFILES.generated lib/intl/Makefile.in /^DISTFILES.generated = plural.c$/;" m +DISTFILES.gettext lib/intl/Makefile.in /^DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc \\$/;" m +DISTFILES.normal lib/intl/Makefile.in /^DISTFILES.normal = VERSION$/;" m +DISTFILES.obsolete lib/intl/Makefile.in /^DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \\$/;" m +DIV expr.c /^#define DIV /;" d file: +DI_FUNCTION vendor/winapi/src/um/setupapi.rs /^pub type DI_FUNCTION = UINT;$/;" t +DLL_DIRECTORY_COOKIE vendor/winapi/src/um/libloaderapi.rs /^pub type DLL_DIRECTORY_COOKIE = PVOID;$/;" t +DLL_EXPORTED lib/intl/intl-compat.c /^# define DLL_EXPORTED /;" d file: +DLL_EXPORTED lib/intl/intl-compat.c /^# define DLL_EXPORTED$/;" d file: +DNGETTEXT lib/intl/dngettext.c /^# define DNGETTEXT /;" d file: +DNGETTEXT lib/intl/dngettext.c /^DNGETTEXT (domainname, msgid1, msgid2, n)$/;" f +DOCFILE builtins/mkbuiltins.c /^#define DOCFILE /;" d file: +DOCOBJECT lib/glob/Makefile.in /^DOCOBJECT = doc\/glob.dvi$/;" m +DOCOBJECT lib/readline/Makefile.in /^DOCOBJECT = doc\/readline.dvi$/;" m +DOCOBJECT lib/tilde/Makefile.in /^DOCOBJECT = doc\/tilde.dvi$/;" m +DOCSOURCE lib/glob/Makefile.in /^DOCSOURCE = doc\/glob.texi$/;" m +DOCSOURCE lib/readline/Makefile.in /^DOCSOURCE = doc\/rlman.texinfo doc\/rltech.texinfo doc\/rluser.texinfo$/;" m +DOCSOURCE lib/tilde/Makefile.in /^DOCSOURCE = doc\/tilde.texi$/;" m +DOCSUPPORT lib/glob/Makefile.in /^DOCSUPPORT = doc\/Makefile$/;" m +DOCSUPPORT lib/readline/Makefile.in /^DOCSUPPORT = doc\/Makefile$/;" m +DOCSUPPORT lib/tilde/Makefile.in /^DOCSUPPORT = doc\/Makefile$/;" m +DOCUMENTATION lib/glob/Makefile.in /^DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT)$/;" m +DOCUMENTATION lib/readline/Makefile.in /^DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT)$/;" m +DOCUMENTATION lib/termcap/Makefile.in /^DOCUMENTATION = termcap.texinfo$/;" m +DOCUMENTATION lib/tilde/Makefile.in /^DOCUMENTATION = $(DOCSOURCE) $(DOCOBJECT) $(DOCSUPPORT)$/;" m +DOLBRACE_OP parser.h /^#define DOLBRACE_OP /;" d +DOLBRACE_PARAM parser.h /^#define DOLBRACE_PARAM /;" d +DOLBRACE_QUOTE parser.h /^#define DOLBRACE_QUOTE /;" d +DOLBRACE_QUOTE2 parser.h /^#define DOLBRACE_QUOTE2 /;" d +DOLBRACE_WORD parser.h /^#define DOLBRACE_WORD /;" d +DOLLAR_AT_STAR subst.c /^#define DOLLAR_AT_STAR(/;" d file: +DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS config-top.h /^#define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS$/;" d +DONT_REPORT_SIGPIPE config-top.h /^#define DONT_REPORT_SIGPIPE$/;" d +DONT_REPORT_SIGTERM config-top.h /^#define DONT_REPORT_SIGTERM$/;" d +DOT11_ASSOC_STATUS vendor/winapi/src/shared/windot11.rs /^pub type DOT11_ASSOC_STATUS = ULONG;$/;" t +DOT11_COUNTRY_OR_REGION_STRING vendor/winapi/src/shared/windot11.rs /^pub type DOT11_COUNTRY_OR_REGION_STRING = [UCHAR; 3];$/;" t +DOT11_DIALOG_TOKEN vendor/winapi/src/shared/windot11.rs /^pub type DOT11_DIALOG_TOKEN = UCHAR;$/;" t +DOT11_EXTAP_RECV_CONTEXT vendor/winapi/src/shared/windot11.rs /^pub type DOT11_EXTAP_RECV_CONTEXT = DOT11_EXTSTA_RECV_CONTEXT;$/;" t +DOT11_EXTAP_SEND_CONTEXT vendor/winapi/src/shared/windot11.rs /^pub type DOT11_EXTAP_SEND_CONTEXT = DOT11_EXTSTA_SEND_CONTEXT;$/;" t +DOT11_HESSID vendor/winapi/src/shared/windot11.rs /^pub type DOT11_HESSID = [UCHAR; DOT11_HESSID_LENGTH];$/;" t +DOT11_MAC_ADDRESS vendor/winapi/src/shared/windot11.rs /^pub type DOT11_MAC_ADDRESS = [UCHAR; 6];$/;" t +DOT11_PMKID_VALUE vendor/winapi/src/shared/windot11.rs /^pub type DOT11_PMKID_VALUE = [UCHAR; 16];$/;" t +DOT11_SUPPORTED_DATA_RATES_VALUE_V1 vendor/winapi/src/shared/windot11.rs /^pub type DOT11_SUPPORTED_DATA_RATES_VALUE_V1 = DOT11_SUPPORTED_DATA_RATES_VALUE_V2;$/;" t +DOT11_WFD_GROUP_CAPABILITY vendor/winapi/src/shared/windot11.rs /^pub type DOT11_WFD_GROUP_CAPABILITY = UCHAR;$/;" t +DOT11_WFD_MINOR_REASON_CODE vendor/winapi/src/shared/windot11.rs /^pub type DOT11_WFD_MINOR_REASON_CODE = UCHAR;$/;" t +DOT11_WFD_SERVICE_HASH vendor/winapi/src/shared/windot11.rs /^pub type DOT11_WFD_SERVICE_HASH = [UCHAR; 6];$/;" t +DOT11_WFD_STATUS_CODE vendor/winapi/src/shared/windot11.rs /^pub type DOT11_WFD_STATUS_CODE = UCHAR;$/;" t +DOT_OR_DOTDOT general.h /^#define DOT_OR_DOTDOT(/;" d +DOUBLE vendor/winapi/src/shared/ntdef.rs /^pub type DOUBLE = c_double;$/;" t +DOUBLE vendor/winapi/src/shared/wtypesbase.rs /^pub type DOUBLE = c_double;$/;" t +DOUBLE_SLASH lib/sh/pathcanon.c /^#define DOUBLE_SLASH(/;" d file: +DOUBLE_SLASH lib/sh/pathphys.c /^#define DOUBLE_SLASH(/;" d file: +DPA vendor/winapi/src/um/dpa_dsa.rs /^pub enum DPA {}$/;" g +DPAREN_ARITHMETIC configure.ac /^AC_DEFINE(DPAREN_ARITHMETIC)$/;" d +DPA_AppendPtr vendor/winapi/src/um/dpa_dsa.rs /^pub unsafe fn DPA_AppendPtr(hdpa: HDPA, pitem: *mut c_void) -> c_int {$/;" f +DPA_Clone vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_Clone($/;" f +DPA_Create vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_Create($/;" f +DPA_CreateEx vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_CreateEx($/;" f +DPA_DeleteAllPtrs vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_DeleteAllPtrs($/;" f +DPA_DeletePtr vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_DeletePtr($/;" f +DPA_Destroy vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_Destroy($/;" f +DPA_DestroyCallback vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_DestroyCallback($/;" f +DPA_EnumCallback vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_EnumCallback($/;" f +DPA_FastDeleteLastPtr vendor/winapi/src/um/dpa_dsa.rs /^pub unsafe fn DPA_FastDeleteLastPtr(hdpa: HDPA) -> c_int {$/;" f +DPA_GetPtr vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_GetPtr($/;" f +DPA_GetPtrCount vendor/winapi/src/um/dpa_dsa.rs /^pub unsafe fn DPA_GetPtrCount(hdpa: HDPA) -> c_int {$/;" f +DPA_GetPtrIndex vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_GetPtrIndex($/;" f +DPA_GetSize vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_GetSize($/;" f +DPA_Grow vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_Grow($/;" f +DPA_InsertPtr vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_InsertPtr($/;" f +DPA_LoadStream vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_LoadStream($/;" f +DPA_Merge vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_Merge($/;" f +DPA_SaveStream vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_SaveStream($/;" f +DPA_Search vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_Search($/;" f +DPA_SetPtr vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_SetPtr($/;" f +DPA_SetPtrCount vendor/winapi/src/um/dpa_dsa.rs /^pub unsafe fn DPA_SetPtrCount(hdpa: HDPA, cItems: c_int) {$/;" f +DPA_Sort vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DPA_Sort($/;" f +DPA_SortedInsertPtr vendor/winapi/src/um/dpa_dsa.rs /^pub unsafe fn DPA_SortedInsertPtr($/;" f +DPtoLP vendor/winapi/src/um/wingdi.rs /^ pub fn DPtoLP($/;" f +DRAIN_OUTPUT lib/readline/rltty.c /^# define DRAIN_OUTPUT(/;" d file: +DROPS vendor/futures-channel/tests/channel.rs /^ static DROPS: AtomicUsize = AtomicUsize::new(0);$/;" v function:drop_order +DROP_CNT vendor/once_cell/tests/it.rs /^ static DROP_CNT: AtomicUsize = AtomicUsize::new(0);$/;" v function:sync::once_cell_drop +DROP_CNT vendor/once_cell/tests/it.rs /^ static DROP_CNT: AtomicUsize = AtomicUsize::new(0);$/;" v function:unsync::once_cell_drop +DSA vendor/winapi/src/um/dpa_dsa.rs /^pub enum DSA {}$/;" g +DSA_AppendItem vendor/winapi/src/um/dpa_dsa.rs /^pub unsafe fn DSA_AppendItem(hdsa: HDSA, pitem: *const c_void) -> c_int {$/;" f +DSA_Clone vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_Clone($/;" f +DSA_Create vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_Create($/;" f +DSA_DeleteAllItems vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_DeleteAllItems($/;" f +DSA_DeleteItem vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_DeleteItem($/;" f +DSA_Destroy vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_Destroy($/;" f +DSA_DestroyCallback vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_DestroyCallback($/;" f +DSA_EnumCallback vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_EnumCallback($/;" f +DSA_GetItem vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_GetItem($/;" f +DSA_GetItemCount vendor/winapi/src/um/dpa_dsa.rs /^pub unsafe fn DSA_GetItemCount(hdsa: HDSA) -> c_int {$/;" f +DSA_GetItemPtr vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_GetItemPtr($/;" f +DSA_GetSize vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_GetSize($/;" f +DSA_InsertItem vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_InsertItem($/;" f +DSA_SetItem vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_SetItem($/;" f +DSA_Sort vendor/winapi/src/um/dpa_dsa.rs /^ pub fn DSA_Sort($/;" f +DSIG_NOCASE builtins_rust/common/src/lib.rs /^macro_rules! DSIG_NOCASE {$/;" M +DSIG_NOCASE trap.h /^#define DSIG_NOCASE /;" d +DSIG_SIGPREFIX builtins_rust/common/src/lib.rs /^macro_rules! DSIG_SIGPREFIX {$/;" M +DSIG_SIGPREFIX trap.h /^#define DSIG_SIGPREFIX /;" d +DSM_BLOCKS_PER_SECOND vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_BLOCKS_PER_SECOND,$/;" e enum:devstat_metric +DSM_BLOCKS_PER_SECOND_FREE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_BLOCKS_PER_SECOND_FREE,$/;" e enum:devstat_metric +DSM_BLOCKS_PER_SECOND_READ vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_BLOCKS_PER_SECOND_READ,$/;" e enum:devstat_metric +DSM_BLOCKS_PER_SECOND_WRITE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_BLOCKS_PER_SECOND_WRITE,$/;" e enum:devstat_metric +DSM_BUSY_PCT vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_BUSY_PCT,$/;" e enum:devstat_metric +DSM_KB_PER_TRANSFER vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_KB_PER_TRANSFER,$/;" e enum:devstat_metric +DSM_KB_PER_TRANSFER_FREE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_KB_PER_TRANSFER_FREE,$/;" e enum:devstat_metric +DSM_KB_PER_TRANSFER_READ vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_KB_PER_TRANSFER_READ,$/;" e enum:devstat_metric +DSM_KB_PER_TRANSFER_WRITE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_KB_PER_TRANSFER_WRITE,$/;" e enum:devstat_metric +DSM_MAX vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_MAX,$/;" e enum:devstat_metric +DSM_MB_PER_SECOND vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_MB_PER_SECOND,$/;" e enum:devstat_metric +DSM_MB_PER_SECOND_FREE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_MB_PER_SECOND_FREE,$/;" e enum:devstat_metric +DSM_MB_PER_SECOND_READ vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_MB_PER_SECOND_READ,$/;" e enum:devstat_metric +DSM_MB_PER_SECOND_WRITE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_MB_PER_SECOND_WRITE,$/;" e enum:devstat_metric +DSM_MS_PER_TRANSACTION vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_MS_PER_TRANSACTION,$/;" e enum:devstat_metric +DSM_MS_PER_TRANSACTION_FREE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_MS_PER_TRANSACTION_FREE,$/;" e enum:devstat_metric +DSM_MS_PER_TRANSACTION_OTHER vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_MS_PER_TRANSACTION_OTHER,$/;" e enum:devstat_metric +DSM_MS_PER_TRANSACTION_READ vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_MS_PER_TRANSACTION_READ,$/;" e enum:devstat_metric +DSM_MS_PER_TRANSACTION_WRITE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_MS_PER_TRANSACTION_WRITE,$/;" e enum:devstat_metric +DSM_NONE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_NONE,$/;" e enum:devstat_metric +DSM_QUEUE_LENGTH vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_QUEUE_LENGTH,$/;" e enum:devstat_metric +DSM_SKIP vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_SKIP,$/;" e enum:devstat_metric +DSM_TOTAL_BLOCKS vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_BLOCKS,$/;" e enum:devstat_metric +DSM_TOTAL_BLOCKS_FREE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_BLOCKS_FREE,$/;" e enum:devstat_metric +DSM_TOTAL_BLOCKS_READ vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_BLOCKS_READ,$/;" e enum:devstat_metric +DSM_TOTAL_BLOCKS_WRITE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_BLOCKS_WRITE,$/;" e enum:devstat_metric +DSM_TOTAL_BUSY_TIME vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_BUSY_TIME,$/;" e enum:devstat_metric +DSM_TOTAL_BYTES vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_BYTES,$/;" e enum:devstat_metric +DSM_TOTAL_BYTES_FREE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_BYTES_FREE,$/;" e enum:devstat_metric +DSM_TOTAL_BYTES_READ vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_BYTES_READ,$/;" e enum:devstat_metric +DSM_TOTAL_BYTES_WRITE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_BYTES_WRITE,$/;" e enum:devstat_metric +DSM_TOTAL_DURATION vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_DURATION,$/;" e enum:devstat_metric +DSM_TOTAL_DURATION_FREE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_DURATION_FREE,$/;" e enum:devstat_metric +DSM_TOTAL_DURATION_OTHER vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_DURATION_OTHER,$/;" e enum:devstat_metric +DSM_TOTAL_DURATION_READ vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_DURATION_READ,$/;" e enum:devstat_metric +DSM_TOTAL_DURATION_WRITE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_DURATION_WRITE,$/;" e enum:devstat_metric +DSM_TOTAL_TRANSFERS vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_TRANSFERS,$/;" e enum:devstat_metric +DSM_TOTAL_TRANSFERS_FREE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_TRANSFERS_FREE,$/;" e enum:devstat_metric +DSM_TOTAL_TRANSFERS_OTHER vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_TRANSFERS_OTHER,$/;" e enum:devstat_metric +DSM_TOTAL_TRANSFERS_READ vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_TRANSFERS_READ,$/;" e enum:devstat_metric +DSM_TOTAL_TRANSFERS_WRITE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TOTAL_TRANSFERS_WRITE,$/;" e enum:devstat_metric +DSM_TRANSFERS_PER_SECOND vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TRANSFERS_PER_SECOND,$/;" e enum:devstat_metric +DSM_TRANSFERS_PER_SECOND_FREE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TRANSFERS_PER_SECOND_FREE,$/;" e enum:devstat_metric +DSM_TRANSFERS_PER_SECOND_OTHER vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TRANSFERS_PER_SECOND_OTHER,$/;" e enum:devstat_metric +DSM_TRANSFERS_PER_SECOND_READ vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TRANSFERS_PER_SECOND_READ,$/;" e enum:devstat_metric +DSM_TRANSFERS_PER_SECOND_WRITE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DSM_TRANSFERS_PER_SECOND_WRITE,$/;" e enum:devstat_metric +DSSPRIVKEY_VER3 vendor/winapi/src/um/wincrypt.rs /^pub type DSSPRIVKEY_VER3 = DHPRIVKEY_VER3;$/;" t +DSSPUBKEY vendor/winapi/src/um/wincrypt.rs /^pub type DSSPUBKEY = DHPUBKEY;$/;" t +DSSPUBKEY_VER3 vendor/winapi/src/um/wincrypt.rs /^pub type DSSPUBKEY_VER3 = DHPUBKEY_VER3;$/;" t +DS_SELECT_ADD vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DS_SELECT_ADD,$/;" e enum:devstat_select_mode +DS_SELECT_ADDONLY vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DS_SELECT_ADDONLY,$/;" e enum:devstat_select_mode +DS_SELECT_ONLY vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DS_SELECT_ONLY,$/;" e enum:devstat_select_mode +DS_SELECT_REMOVE vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ DS_SELECT_REMOVE,$/;" e enum:devstat_select_mode +DUP_JOB builtins_rust/cd/src/lib.rs /^macro_rules! DUP_JOB {$/;" M +DUP_JOB builtins_rust/common/src/lib.rs /^macro_rules! DUP_JOB {$/;" M +DUP_JOB builtins_rust/fg_bg/src/lib.rs /^macro_rules! DUP_JOB {$/;" M +DUP_JOB builtins_rust/jobs/src/lib.rs /^macro_rules! DUP_JOB {$/;" M +DUP_JOB builtins_rust/wait/src/lib.rs /^macro_rules! DUP_JOB {$/;" M +DUP_JOB jobs.h /^#define DUP_JOB /;" d +DWM_FRAME_COUNT vendor/winapi/src/um/dwmapi.rs /^pub type DWM_FRAME_COUNT = ULONGLONG;$/;" t +DWORD vendor/libloading/src/os/windows/mod.rs /^ pub(super) struct DWORD;$/;" s module:windows_imports +DWORD vendor/winapi/src/shared/minwindef.rs /^pub type DWORD = c_ulong;$/;" t +DWORD32 vendor/winapi/src/shared/basetsd.rs /^pub type DWORD32 = c_uint;$/;" t +DWORD64 vendor/winapi/src/shared/basetsd.rs /^pub type DWORD64 = __uint64;$/;" t +DWORDLONG vendor/winapi/src/shared/ntdef.rs /^pub type DWORDLONG = ULONGLONG;$/;" t +DWORDLONG vendor/winapi/src/um/winnt.rs /^pub type DWORDLONG = ULONGLONG;$/;" t +DWORD_PTR vendor/winapi/src/shared/basetsd.rs /^pub type DWORD_PTR = ULONG_PTR;$/;" t +DWRITE_COLOR_F vendor/winapi/src/um/dwrite_2.rs /^pub type DWRITE_COLOR_F = D3DCOLORVALUE;$/;" t +DWRITE_MAKE_OPENTYPE_TAG vendor/winapi/src/um/dwrite.rs /^pub fn DWRITE_MAKE_OPENTYPE_TAG(a: u8, b: u8, c: u8, d: u8) -> u32 {$/;" f +DWriteCreateFactory vendor/winapi/src/um/dwrite.rs /^ pub fn DWriteCreateFactory($/;" f +DXGIGetDebugInterface vendor/winapi/src/um/dxgidebug.rs /^ pub fn DXGIGetDebugInterface($/;" f +DXGIGetDebugInterface1 vendor/winapi/src/shared/dxgi1_3.rs /^ pub fn DXGIGetDebugInterface1($/;" f +DXGI_DEBUG_ID vendor/winapi/src/um/dxgidebug.rs /^pub type DXGI_DEBUG_ID = GUID;$/;" t +DXGI_INFO_QUEUE_MESSAGE_ID vendor/winapi/src/um/dxgidebug.rs /^pub type DXGI_INFO_QUEUE_MESSAGE_ID = c_int;$/;" t +DXGI_OFFER_RESOURCE_PRIORITY vendor/winapi/src/shared/dxgi1_2.rs /^pub type DXGI_OFFER_RESOURCE_PRIORITY = _DXGI_OFFER_RESOURCE_PRIORITY;$/;" t +DXGI_RGBA vendor/winapi/src/shared/dxgitype.rs /^pub type DXGI_RGBA = D3DCOLORVALUE;$/;" t +DXVA2CreateDirect3DDeviceManager9 vendor/winapi/src/um/dxva2api.rs /^ pub fn DXVA2CreateDirect3DDeviceManager9($/;" f +DXVA2CreateVideoService vendor/winapi/src/um/dxva2api.rs /^ pub fn DXVA2CreateVideoService($/;" f +DXVA2FixedToFloat vendor/winapi/src/um/dxva2api.rs /^pub fn DXVA2FixedToFloat(_fixed_: DXVA2_Fixed32) -> c_float {$/;" f +DXVA2FloatToFixed vendor/winapi/src/um/dxva2api.rs /^pub fn DXVA2FloatToFixed(_float_: c_float) -> DXVA2_Fixed32 {$/;" f +DXVA2_Fixed32OpaqueAlpha vendor/winapi/src/um/dxva2api.rs /^pub fn DXVA2_Fixed32OpaqueAlpha() -> DXVA2_Fixed32 {$/;" f +DXVA2_Fixed32TransparentAlpha vendor/winapi/src/um/dxva2api.rs /^pub fn DXVA2_Fixed32TransparentAlpha() -> DXVA2_Fixed32 {$/;" f +DXVAHD_CreateDevice vendor/winapi/src/um/dxvahd.rs /^ pub fn DXVAHD_CreateDevice($/;" f +D_ bashintl.h /^#define D_(/;" d +D_FILENO_AVAILABLE include/posixdir.h /^# define D_FILENO_AVAILABLE /;" d +D_FILENO_AVAILABLE lib/readline/posixdir.h /^# define D_FILENO_AVAILABLE /;" d +D_INO_AVAILABLE include/posixdir.h /^# define D_INO_AVAILABLE$/;" d +D_INO_AVAILABLE lib/readline/posixdir.h /^# define D_INO_AVAILABLE$/;" d +D_NAMLEN include/posixdir.h /^# define D_NAMLEN(/;" d +D_NAMLEN include/posixdir.h /^# define D_NAMLEN(/;" d +D_NAMLEN lib/readline/posixdir.h /^# define D_NAMLEN(/;" d +D_NAMLEN lib/readline/posixdir.h /^# define D_NAMLEN(/;" d +Data vendor/futures-channel/src/mpsc/queue.rs /^ Data(T),$/;" e enum:PopResult +Data vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^ Data(*const Task),$/;" e enum:Dequeue +Data vendor/syn/src/gen/clone.rs /^impl Clone for Data {$/;" c +Data vendor/syn/src/gen/debug.rs /^impl Debug for Data {$/;" c +Data vendor/syn/src/gen/eq.rs /^impl Eq for Data {}$/;" c +Data vendor/syn/src/gen/eq.rs /^impl PartialEq for Data {$/;" c +Data vendor/syn/src/gen/hash.rs /^impl Hash for Data {$/;" c +DataEnum vendor/syn/src/gen/clone.rs /^impl Clone for DataEnum {$/;" c +DataEnum vendor/syn/src/gen/debug.rs /^impl Debug for DataEnum {$/;" c +DataEnum vendor/syn/src/gen/eq.rs /^impl Eq for DataEnum {}$/;" c +DataEnum vendor/syn/src/gen/eq.rs /^impl PartialEq for DataEnum {$/;" c +DataEnum vendor/syn/src/gen/hash.rs /^impl Hash for DataEnum {$/;" c +DataStream vendor/futures/tests/stream.rs /^ impl Stream for DataStream {$/;" c function:flatten_unordered +DataStream vendor/futures/tests/stream.rs /^ struct DataStream {$/;" s function:flatten_unordered +DataStruct vendor/syn/src/gen/clone.rs /^impl Clone for DataStruct {$/;" c +DataStruct vendor/syn/src/gen/debug.rs /^impl Debug for DataStruct {$/;" c +DataStruct vendor/syn/src/gen/eq.rs /^impl Eq for DataStruct {}$/;" c +DataStruct vendor/syn/src/gen/eq.rs /^impl PartialEq for DataStruct {$/;" c +DataStruct vendor/syn/src/gen/hash.rs /^impl Hash for DataStruct {$/;" c +DataUnion vendor/syn/src/gen/clone.rs /^impl Clone for DataUnion {$/;" c +DataUnion vendor/syn/src/gen/debug.rs /^impl Debug for DataUnion {$/;" c +DataUnion vendor/syn/src/gen/eq.rs /^impl Eq for DataUnion {}$/;" c +DataUnion vendor/syn/src/gen/eq.rs /^impl PartialEq for DataUnion {$/;" c +DataUnion vendor/syn/src/gen/hash.rs /^impl Hash for DataUnion {$/;" c +Datagram vendor/nix/src/sys/socket/mod.rs /^ Datagram = libc::SOCK_DGRAM,$/;" e enum:SockType +Datakit vendor/nix/src/sys/socket/addr.rs /^ Datakit = libc::AF_DATAKIT,$/;" e enum:AddressFamily +DavAddConnection vendor/winapi/src/um/davclnt.rs /^ pub fn DavAddConnection($/;" f +DavCancelConnectionsToServer vendor/winapi/src/um/davclnt.rs /^ pub fn DavCancelConnectionsToServer($/;" f +DavDeleteConnection vendor/winapi/src/um/davclnt.rs /^ pub fn DavDeleteConnection($/;" f +DavFlushFile vendor/winapi/src/um/davclnt.rs /^ pub fn DavFlushFile($/;" f +DavGetExtendedError vendor/winapi/src/um/davclnt.rs /^ pub fn DavGetExtendedError($/;" f +DavGetHTTPFromUNCPath vendor/winapi/src/um/davclnt.rs /^ pub fn DavGetHTTPFromUNCPath($/;" f +DavGetTheLockOwnerOfTheFile vendor/winapi/src/um/davclnt.rs /^ pub fn DavGetTheLockOwnerOfTheFile($/;" f +DavGetUNCFromHTTPPath vendor/winapi/src/um/davclnt.rs /^ pub fn DavGetUNCFromHTTPPath($/;" f +DavInvalidateCache vendor/winapi/src/um/davclnt.rs /^ pub fn DavInvalidateCache($/;" f +DavRegisterAuthCallback vendor/winapi/src/um/davclnt.rs /^ pub fn DavRegisterAuthCallback($/;" f +DavUnregisterAuthCallback vendor/winapi/src/um/davclnt.rs /^ pub fn DavUnregisterAuthCallback($/;" f +DeactivateActCtx vendor/winapi/src/um/winbase.rs /^ pub fn DeactivateActCtx($/;" f +DeallocGuard vendor/self_cell/src/unsafe_self_cell.rs /^ impl Drop for DeallocGuard {$/;" c method:OwnerAndCellDropGuard::drop +DeallocGuard vendor/self_cell/src/unsafe_self_cell.rs /^ struct DeallocGuard {$/;" s method:OwnerAndCellDropGuard::drop +Debug vendor/thiserror-impl/src/attr.rs /^ Debug,$/;" e enum:Trait +Debug vendor/thiserror/tests/test_generics.rs /^ Debug(HasNeither, HasDebug),$/;" e enum:EnumCompound +DebugActiveProcess vendor/winapi/src/um/debugapi.rs /^ pub fn DebugActiveProcess($/;" f +DebugActiveProcessStop vendor/winapi/src/um/debugapi.rs /^ pub fn DebugActiveProcessStop($/;" f +DebugAndDisplay vendor/thiserror/tests/test_generics.rs /^impl Display for DebugAndDisplay {$/;" c +DebugAndDisplay vendor/thiserror/tests/test_generics.rs /^pub struct DebugAndDisplay;$/;" s +DebugBreak vendor/winapi/src/um/debugapi.rs /^ pub fn DebugBreak();$/;" f +DebugBreakProcess vendor/winapi/src/um/winbase.rs /^ pub fn DebugBreakProcess($/;" f +DebugOnly vendor/thiserror/tests/test_generics.rs /^pub struct DebugOnly;$/;" s +DebugSetProcessKillOnExit vendor/winapi/src/um/winbase.rs /^ pub fn DebugSetProcessKillOnExit($/;" f +Debugger Visualizers vendor/smallvec/debug_metadata/README.md /^## Debugger Visualizers$/;" s +Debugging vendor/syn/README.md /^## Debugging$/;" s chapter:Parser for Rust source code +Decimal vendor/fluent-bundle/src/types/number.rs /^ Decimal,$/;" e enum:FluentNumberStyle +DeclareCmd builtins_rust/exec_cmd/src/lib.rs /^ DeclareCmd,$/;" e enum:CMDType +DeclareComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for DeclareComand {$/;" c +DeclareComand builtins_rust/exec_cmd/src/lib.rs /^struct DeclareComand;$/;" s +Decnet vendor/nix/src/sys/socket/addr.rs /^ Decnet = libc::AF_DECnet,$/;" e enum:AddressFamily +DecodePointer vendor/winapi/src/um/utilapiset.rs /^ pub fn DecodePointer($/;" f +DecodeSystemPointer vendor/winapi/src/um/utilapiset.rs /^ pub fn DecodeSystemPointer($/;" f +DecryptMessage vendor/winapi/src/shared/sspi.rs /^ pub fn DecryptMessage($/;" f +DefDlgProcA vendor/winapi/src/um/winuser.rs /^ pub fn DefDlgProcA($/;" f +DefDlgProcW vendor/winapi/src/um/winuser.rs /^ pub fn DefDlgProcW($/;" f +DefFrameProcA vendor/winapi/src/um/winuser.rs /^ pub fn DefFrameProcA($/;" f +DefFrameProcW vendor/winapi/src/um/winuser.rs /^ pub fn DefFrameProcW($/;" f +DefMDIChildProcA vendor/winapi/src/um/winuser.rs /^ pub fn DefMDIChildProcA($/;" f +DefMDIChildProcW vendor/winapi/src/um/winuser.rs /^ pub fn DefMDIChildProcW($/;" f +DefRawInputProc vendor/winapi/src/um/winuser.rs /^ pub fn DefRawInputProc($/;" f +DefSubclassProc vendor/winapi/src/um/commctrl.rs /^ pub fn DefSubclassProc($/;" f +DefWindowProcA vendor/winapi/src/um/winuser.rs /^ pub fn DefWindowProcA($/;" f +DefWindowProcW vendor/winapi/src/um/winuser.rs /^ pub fn DefWindowProcW($/;" f +Default vendor/futures-macro/src/select.rs /^ Default,$/;" e enum:CaseKind +DeferWindowPos vendor/winapi/src/um/winuser.rs /^ pub fn DeferWindowPos($/;" f +DeferredTokenStream vendor/proc-macro2/src/wrapper.rs /^impl DeferredTokenStream {$/;" c +DeferredTokenStream vendor/proc-macro2/src/wrapper.rs /^pub(crate) struct DeferredTokenStream {$/;" s +DefineDosDeviceA vendor/winapi/src/um/winbase.rs /^ pub fn DefineDosDeviceA($/;" f +DefineDosDeviceW vendor/winapi/src/um/fileapi.rs /^ pub fn DefineDosDeviceW($/;" f +DegaussMonitor vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn DegaussMonitor($/;" f +DeleteAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn DeleteAce($/;" f +DeleteAnycastIpAddressEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn DeleteAnycastIpAddressEntry($/;" f +DeleteAppContainerProfile vendor/winapi/src/um/userenv.rs /^ pub fn DeleteAppContainerProfile($/;" f +DeleteAtom vendor/winapi/src/um/winbase.rs /^ pub fn DeleteAtom($/;" f +DeleteBoundaryDescriptor vendor/winapi/src/um/namespaceapi.rs /^ pub fn DeleteBoundaryDescriptor($/;" f +DeleteColorSpace vendor/winapi/src/um/wingdi.rs /^ pub fn DeleteColorSpace($/;" f +DeleteCriticalSection vendor/winapi/src/um/synchapi.rs /^ pub fn DeleteCriticalSection($/;" f +DeleteDC vendor/winapi/src/um/wingdi.rs /^ pub fn DeleteDC($/;" f +DeleteEnclave vendor/winapi/src/um/enclaveapi.rs /^ pub fn DeleteEnclave($/;" f +DeleteEnhMetaFile vendor/winapi/src/um/wingdi.rs /^ pub fn DeleteEnhMetaFile($/;" f +DeleteFiber vendor/winapi/src/um/winbase.rs /^ pub fn DeleteFiber($/;" f +DeleteFileA vendor/winapi/src/um/fileapi.rs /^ pub fn DeleteFileA($/;" f +DeleteFileTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn DeleteFileTransactedA($/;" f +DeleteFileTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn DeleteFileTransactedW($/;" f +DeleteFileW vendor/winapi/src/um/fileapi.rs /^ pub fn DeleteFileW($/;" f +DeleteFormA vendor/winapi/src/um/winspool.rs /^ pub fn DeleteFormA($/;" f +DeleteFormW vendor/winapi/src/um/winspool.rs /^ pub fn DeleteFormW($/;" f +DeleteIPAddress vendor/winapi/src/um/iphlpapi.rs /^ pub fn DeleteIPAddress($/;" f +DeleteIpForwardEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn DeleteIpForwardEntry($/;" f +DeleteIpForwardEntry2 vendor/winapi/src/shared/netioapi.rs /^ pub fn DeleteIpForwardEntry2($/;" f +DeleteIpNetEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn DeleteIpNetEntry($/;" f +DeleteIpNetEntry2 vendor/winapi/src/shared/netioapi.rs /^ pub fn DeleteIpNetEntry2($/;" f +DeleteMenu vendor/winapi/src/um/winuser.rs /^ pub fn DeleteMenu($/;" f +DeleteMetaFile vendor/winapi/src/um/wingdi.rs /^ pub fn DeleteMetaFile($/;" f +DeleteMonitorA vendor/winapi/src/um/winspool.rs /^ pub fn DeleteMonitorA($/;" f +DeleteMonitorW vendor/winapi/src/um/winspool.rs /^ pub fn DeleteMonitorW($/;" f +DeleteObject vendor/winapi/src/um/wingdi.rs /^ pub fn DeleteObject($/;" f +DeletePersistentTcpPortReservation vendor/winapi/src/um/iphlpapi.rs /^ pub fn DeletePersistentTcpPortReservation($/;" f +DeletePersistentUdpPortReservation vendor/winapi/src/um/iphlpapi.rs /^ pub fn DeletePersistentUdpPortReservation($/;" f +DeletePortA vendor/winapi/src/um/winspool.rs /^ pub fn DeletePortA($/;" f +DeletePortW vendor/winapi/src/um/winspool.rs /^ pub fn DeletePortW($/;" f +DeletePrintProcessorA vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrintProcessorA($/;" f +DeletePrintProcessorW vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrintProcessorW($/;" f +DeletePrintProvidorA vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrintProvidorA($/;" f +DeletePrintProvidorW vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrintProvidorW($/;" f +DeletePrinter vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinter($/;" f +DeletePrinterConnectionA vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinterConnectionA($/;" f +DeletePrinterConnectionW vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinterConnectionW($/;" f +DeletePrinterDataA vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinterDataA($/;" f +DeletePrinterDataExA vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinterDataExA($/;" f +DeletePrinterDataExW vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinterDataExW($/;" f +DeletePrinterDataW vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinterDataW($/;" f +DeletePrinterDriverA vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinterDriverA($/;" f +DeletePrinterDriverExA vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinterDriverExA($/;" f +DeletePrinterDriverExW vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinterDriverExW($/;" f +DeletePrinterDriverW vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinterDriverW($/;" f +DeletePrinterKeyA vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinterKeyA($/;" f +DeletePrinterKeyW vendor/winapi/src/um/winspool.rs /^ pub fn DeletePrinterKeyW($/;" f +DeleteProcThreadAttributeList vendor/winapi/src/um/processthreadsapi.rs /^ pub fn DeleteProcThreadAttributeList($/;" f +DeleteProfileA vendor/winapi/src/um/userenv.rs /^ pub fn DeleteProfileA($/;" f +DeleteProfileW vendor/winapi/src/um/userenv.rs /^ pub fn DeleteProfileW($/;" f +DeleteProxyArpEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn DeleteProxyArpEntry($/;" f +DeletePwrScheme vendor/winapi/src/um/powrprof.rs /^ pub fn DeletePwrScheme($/;" f +DeleteSecurityContext vendor/winapi/src/shared/sspi.rs /^ pub fn DeleteSecurityContext($/;" f +DeleteService vendor/winapi/src/um/winsvc.rs /^ pub fn DeleteService($/;" f +DeleteSynchronizationBarrier vendor/winapi/src/um/synchapi.rs /^ pub fn DeleteSynchronizationBarrier($/;" f +DeleteTimerQueue vendor/winapi/src/um/winbase.rs /^ pub fn DeleteTimerQueue($/;" f +DeleteTimerQueueEx vendor/winapi/src/um/threadpoollegacyapiset.rs /^ pub fn DeleteTimerQueueEx($/;" f +DeleteTimerQueueTimer vendor/winapi/src/um/threadpoollegacyapiset.rs /^ pub fn DeleteTimerQueueTimer($/;" f +DeleteUmsCompletionList vendor/winapi/src/um/winbase.rs /^ pub fn DeleteUmsCompletionList($/;" f +DeleteUmsThreadContext vendor/winapi/src/um/winbase.rs /^ pub fn DeleteUmsThreadContext($/;" f +DeleteUnicastIpAddressEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn DeleteUnicastIpAddressEntry($/;" f +DeleteUrlCacheEntryA vendor/winapi/src/um/wininet.rs /^ pub fn DeleteUrlCacheEntryA($/;" f +DeleteUrlCacheEntryW vendor/winapi/src/um/wininet.rs /^ pub fn DeleteUrlCacheEntryW($/;" f +DeleteUrlCacheGroup vendor/winapi/src/um/wininet.rs /^ pub fn DeleteUrlCacheGroup($/;" f +DeleteVolumeMountPointA vendor/winapi/src/um/winbase.rs /^ pub fn DeleteVolumeMountPointA($/;" f +DeleteVolumeMountPointW vendor/winapi/src/um/fileapi.rs /^ pub fn DeleteVolumeMountPointW($/;" f +DeleteWpadCacheForNetworks vendor/winapi/src/um/wininet.rs /^ pub fn DeleteWpadCacheForNetworks($/;" f +Delimiter vendor/proc-macro2/src/lib.rs /^pub enum Delimiter {$/;" g +Dependencies README.md /^### Dependencies$/;" S chapter:utshell +Deprecated vendor/thiserror/tests/test_deprecated.rs /^ Deprecated,$/;" e enum:Error +Dequeue vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^pub(super) enum Dequeue {$/;" g +DequeueUmsCompletionListItems vendor/winapi/src/um/winbase.rs /^ pub fn DequeueUmsCompletionListItems($/;" f +DeregisterEventSource vendor/winapi/src/um/winbase.rs /^ pub fn DeregisterEventSource($/;" f +DeregisterShellHookWindow vendor/winapi/src/um/winuser.rs /^ pub fn DeregisterShellHookWindow($/;" f +DeriveAppContainerSidFromAppContainerName vendor/winapi/src/um/userenv.rs /^ pub fn DeriveAppContainerSidFromAppContainerName($/;" f +DeriveCapabilitySidsFromName vendor/winapi/src/um/securitybaseapi.rs /^ pub fn DeriveCapabilitySidsFromName($/;" f +DeriveInput vendor/syn/src/derive.rs /^ impl Parse for DeriveInput {$/;" c module:parsing +DeriveInput vendor/syn/src/derive.rs /^ impl ToTokens for DeriveInput {$/;" c module:printing +DeriveInput vendor/syn/src/gen/clone.rs /^impl Clone for DeriveInput {$/;" c +DeriveInput vendor/syn/src/gen/debug.rs /^impl Debug for DeriveInput {$/;" c +DeriveInput vendor/syn/src/gen/eq.rs /^impl Eq for DeriveInput {}$/;" c +DeriveInput vendor/syn/src/gen/eq.rs /^impl PartialEq for DeriveInput {$/;" c +DeriveInput vendor/syn/src/gen/hash.rs /^impl Hash for DeriveInput {$/;" c +DeriveInput vendor/syn/src/item.rs /^impl From for DeriveInput {$/;" c +DeriveInput vendor/syn/src/item.rs /^impl From for DeriveInput {$/;" c +DeriveInput vendor/syn/src/item.rs /^impl From for DeriveInput {$/;" c +DeriveRestrictedAppContainerSidFromAppContainerSidAndRestrictedName vendor/winapi/src/um/userenv.rs /^ pub fn DeriveRestrictedAppContainerSidFromAppContainerSidAndRestrictedName($/;" f +DescribePixelFormat vendor/winapi/src/um/wingdi.rs /^ pub fn DescribePixelFormat($/;" f +Description vendor/stdext/README.md /^## Description$/;" s chapter:`std` extensions +DestUnreach vendor/nix/test/sys/test_socket.rs /^ DestUnreach = 1, \/\/ ICMPV6_DEST_UNREACH$/;" e enum:linux_errqueue::test_recverr_v6::IcmpV6Types +DestUnreach vendor/nix/test/sys/test_socket.rs /^ DestUnreach = 3, \/\/ ICMP_DEST_UNREACH$/;" e enum:linux_errqueue::test_recverr_v4::IcmpTypes +DestroyAcceleratorTable vendor/winapi/src/um/winuser.rs /^ pub fn DestroyAcceleratorTable($/;" f +DestroyCaret vendor/winapi/src/um/winuser.rs /^ pub fn DestroyCaret() -> BOOL;$/;" f +DestroyCursor vendor/winapi/src/um/winuser.rs /^ pub fn DestroyCursor($/;" f +DestroyEnvironmentBlock vendor/winapi/src/um/userenv.rs /^ pub fn DestroyEnvironmentBlock($/;" f +DestroyIcon vendor/winapi/src/um/winuser.rs /^ pub fn DestroyIcon($/;" f +DestroyMenu vendor/winapi/src/um/winuser.rs /^ pub fn DestroyMenu($/;" f +DestroyPhysicalMonitor vendor/winapi/src/um/physicalmonitorenumerationapi.rs /^ pub fn DestroyPhysicalMonitor($/;" f +DestroyPhysicalMonitors vendor/winapi/src/um/physicalmonitorenumerationapi.rs /^ pub fn DestroyPhysicalMonitors($/;" f +DestroyPrivateObjectSecurity vendor/winapi/src/um/securitybaseapi.rs /^ pub fn DestroyPrivateObjectSecurity($/;" f +DestroyPropertySheetPage vendor/winapi/src/um/prsht.rs /^ pub fn DestroyPropertySheetPage($/;" f +DestroySyntheticPointerDevice vendor/winapi/src/um/winuser.rs /^ pub fn DestroySyntheticPointerDevice($/;" f +DestroyWindow vendor/winapi/src/um/winuser.rs /^ pub fn DestroyWindow($/;" f +Details vendor/thiserror/README.md /^## Details$/;" s chapter:derive(Error) +Details vendor/tinystr/README.md /^Details$/;" s chapter:tinystr [![crates.io](http://meritbadge.herokuapp.com/tinystr)](https://crates.io/crates/tinystr) [![Build Status](https://travis-ci.org/zbraniecki/tinystr.svg?branch=master)](https://travis-ci.org/zbraniecki/tinystr) [![Coverage Status](https://coveralls.io/repos/github/zbraniecki/tinystr/badge.svg?branch=master)](https://coveralls.io/github/zbraniecki/tinystr?branch=master) +DetectAutoProxyUrl vendor/winapi/src/um/wininet.rs /^ pub fn DetectAutoProxyUrl($/;" f +Develop vendor/fluent-langneg/README.md /^Develop$/;" s chapter:Fluent LangNeg +DeviceCapabilitiesA vendor/winapi/src/um/wingdi.rs /^ pub fn DeviceCapabilitiesA($/;" f +DeviceCapabilitiesW vendor/winapi/src/um/wingdi.rs /^ pub fn DeviceCapabilitiesW($/;" f +DeviceIoControl vendor/winapi/src/um/ioapiset.rs /^ pub fn DeviceIoControl($/;" f +DevicePowerClose vendor/winapi/src/um/powrprof.rs /^ pub fn DevicePowerClose() -> BOOLEAN;$/;" f +DevicePowerEnumDevices vendor/winapi/src/um/powrprof.rs /^ pub fn DevicePowerEnumDevices($/;" f +DevicePowerOpen vendor/winapi/src/um/powrprof.rs /^ pub fn DevicePowerOpen($/;" f +DevicePowerSetDeviceState vendor/winapi/src/um/powrprof.rs /^ pub fn DevicePowerSetDeviceState($/;" f +Dflag builtins_rust/complete/src/lib.rs /^ Dflag: c_int,$/;" m struct:_optflags +DialogBoxIndirectParamA vendor/winapi/src/um/winuser.rs /^ pub fn DialogBoxIndirectParamA($/;" f +DialogBoxIndirectParamW vendor/winapi/src/um/winuser.rs /^ pub fn DialogBoxIndirectParamW($/;" f +DialogBoxParamA vendor/winapi/src/um/winuser.rs /^ pub fn DialogBoxParamA($/;" f +DialogBoxParamW vendor/winapi/src/um/winuser.rs /^ pub fn DialogBoxParamW($/;" f +Different: Minimal design vendor/pin-project-lite/README.md /^### Different: Minimal design$/;" S section:pin-project-lite""[pin-project] vs pin-project-lite +Different: No proc-macro related dependencies vendor/pin-project-lite/README.md /^### Different: No proc-macro related dependencies$/;" S section:pin-project-lite""[pin-project] vs pin-project-lite +Different: No support for custom Unpin implementation vendor/pin-project-lite/README.md /^### Different: No support for custom Unpin implementation$/;" S section:pin-project-lite""[pin-project] vs pin-project-lite +Different: No support for tuple structs and tuple variants vendor/pin-project-lite/README.md /^### Different: No support for tuple structs and tuple variants$/;" S section:pin-project-lite""[pin-project] vs pin-project-lite +Different: No useful error messages vendor/pin-project-lite/README.md /^### Different: No useful error messages$/;" S section:pin-project-lite""[pin-project] vs pin-project-lite +Dir vendor/nix/src/dir.rs /^impl AsRawFd for Dir {$/;" c +Dir vendor/nix/src/dir.rs /^impl Dir {$/;" c +Dir vendor/nix/src/dir.rs /^impl Drop for Dir {$/;" c +Dir vendor/nix/src/dir.rs /^impl IntoIterator for Dir {$/;" c +Dir vendor/nix/src/dir.rs /^pub struct Dir($/;" s +Dir vendor/nix/src/dir.rs /^unsafe impl Send for Dir {}$/;" c +DirRestore vendor/nix/test/test.rs /^impl<'a> DirRestore<'a> {$/;" c +DirRestore vendor/nix/test/test.rs /^impl<'a> Drop for DirRestore<'a> {$/;" c +DirRestore vendor/nix/test/test.rs /^struct DirRestore<'a> {$/;" s +Direct3DCreate9 vendor/winapi/src/shared/d3d9.rs /^ pub fn Direct3DCreate9($/;" f +Direct3DCreate9Ex vendor/winapi/src/shared/d3d9.rs /^ pub fn Direct3DCreate9Ex($/;" f +DirectSoundCreate vendor/winapi/src/um/dsound.rs /^ pub fn DirectSoundCreate($/;" f +Directory vendor/nix/src/dir.rs /^ Directory,$/;" e enum:Type +DirsCmd builtins_rust/exec_cmd/src/lib.rs /^ DirsCmd,$/;" e enum:CMDType +DirsCommand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for DirsCommand {$/;" c +DirsCommand builtins_rust/exec_cmd/src/lib.rs /^struct DirsCommand;$/;" s +DisableMediaSense vendor/winapi/src/um/iphlpapi.rs /^ pub fn DisableMediaSense($/;" f +DisableProcessWindowsGhosting vendor/winapi/src/um/winuser.rs /^ pub fn DisableProcessWindowsGhosting();$/;" f +DisableThreadLibraryCalls vendor/winapi/src/um/libloaderapi.rs /^ pub fn DisableThreadLibraryCalls($/;" f +DisableThreadProfiling vendor/winapi/src/um/winbase.rs /^ pub fn DisableThreadProfiling($/;" f +DisassociateCurrentThreadFromCallback vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn DisassociateCurrentThreadFromCallback($/;" f +DiscardVirtualMemory vendor/winapi/src/um/memoryapi.rs /^ pub fn DiscardVirtualMemory($/;" f +DisconnectNamedPipe vendor/winapi/src/um/namedpipeapi.rs /^ pub fn DisconnectNamedPipe($/;" f +Disconnected vendor/futures-channel/src/mpsc/mod.rs /^ Disconnected,$/;" e enum:SendErrorKind +Discuss vendor/fluent-bundle/README.md /^Discuss$/;" s chapter:Fluent +Discuss vendor/fluent-fallback/README.md /^Discuss$/;" s chapter:Fluent +Discuss vendor/fluent-resmgr/README.md /^Discuss$/;" s chapter:Fluent Resource Manager +Discuss vendor/fluent-syntax/README.md /^Discuss$/;" s chapter:Fluent Syntax +Discuss vendor/fluent/README.md /^Discuss$/;" s chapter:Fluent +Discuss vendor/intl-memoizer/README.md /^Discuss$/;" s chapter:IntlMemoizer +DisownCmd builtins_rust/exec_cmd/src/lib.rs /^ DisownCmd,$/;" e enum:CMDType +DisownCommand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for DisownCommand {$/;" c +DisownCommand builtins_rust/exec_cmd/src/lib.rs /^struct DisownCommand;$/;" s +DispatchMessageA vendor/winapi/src/um/winuser.rs /^ pub fn DispatchMessageA($/;" f +DispatchMessageW vendor/winapi/src/um/winuser.rs /^ pub fn DispatchMessageW($/;" f +Display vendor/thiserror-impl/src/attr.rs /^ Display,$/;" e enum:Trait +Display vendor/thiserror-impl/src/attr.rs /^impl ToTokens for Display<'_> {$/;" c +Display vendor/thiserror-impl/src/attr.rs /^pub struct Display<'a> {$/;" s +Display vendor/thiserror-impl/src/fmt.rs /^impl Display<'_> {$/;" c +Display vendor/thiserror/tests/test_generics.rs /^ Display(HasDisplay, HasNeither),$/;" e enum:EnumCompound +DisplayAsDisplay vendor/thiserror/src/display.rs /^pub trait DisplayAsDisplay {$/;" i +DisplayDebug vendor/thiserror/tests/test_generics.rs /^ DisplayDebug(HasDisplay, HasDebug),$/;" e enum:EnumCompound +DisplayOnly vendor/thiserror/tests/test_generics.rs /^impl Display for DisplayOnly {$/;" c +DisplayOnly vendor/thiserror/tests/test_generics.rs /^pub struct DisplayOnly;$/;" s +DlClose vendor/libloading/src/error.rs /^ DlClose {$/;" e enum:Error +DlCloseUnknown vendor/libloading/src/error.rs /^ DlCloseUnknown,$/;" e enum:Error +DlDescription vendor/libloading/src/error.rs /^impl std::fmt::Debug for DlDescription {$/;" c +DlDescription vendor/libloading/src/error.rs /^pub struct DlDescription(pub(crate) CString);$/;" s +DlInfo vendor/libloading/src/os/unix/mod.rs /^struct DlInfo {$/;" s +DlOpen vendor/libloading/src/error.rs /^ DlOpen {$/;" e enum:Error +DlOpenUnknown vendor/libloading/src/error.rs /^ DlOpenUnknown,$/;" e enum:Error +DlSym vendor/libloading/src/error.rs /^ DlSym {$/;" e enum:Error +DlSymUnknown vendor/libloading/src/error.rs /^ DlSymUnknown,$/;" e enum:Error +DlgDirListA vendor/winapi/src/um/winuser.rs /^ pub fn DlgDirListA($/;" f +DlgDirListComboBoxA vendor/winapi/src/um/winuser.rs /^ pub fn DlgDirListComboBoxA($/;" f +DlgDirListComboBoxW vendor/winapi/src/um/winuser.rs /^ pub fn DlgDirListComboBoxW($/;" f +DlgDirListW vendor/winapi/src/um/winuser.rs /^ pub fn DlgDirListW($/;" f +DlgDirSelectComboBoxExA vendor/winapi/src/um/winuser.rs /^ pub fn DlgDirSelectComboBoxExA($/;" f +DlgDirSelectComboBoxExW vendor/winapi/src/um/winuser.rs /^ pub fn DlgDirSelectComboBoxExW($/;" f +DlgDirSelectExA vendor/winapi/src/um/winuser.rs /^ pub fn DlgDirSelectExA($/;" f +DlgDirSelectExW vendor/winapi/src/um/winuser.rs /^ pub fn DlgDirSelectExW($/;" f +Dli vendor/nix/src/sys/socket/addr.rs /^ Dli = libc::AF_DLI,$/;" e enum:AddressFamily +DllCanUnloadNow vendor/winapi/src/um/combaseapi.rs /^ pub fn DllCanUnloadNow() -> HRESULT;$/;" f +DllGetClassObject vendor/winapi/src/um/combaseapi.rs /^ pub fn DllGetClassObject($/;" f +DllMain lib/intl/relocatable.c /^DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved)$/;" f typeref:typename:BOOL WINAPI +DnsHostnameToComputerNameA vendor/winapi/src/um/winbase.rs /^ pub fn DnsHostnameToComputerNameA($/;" f +DnsHostnameToComputerNameExW vendor/winapi/src/um/sysinfoapi.rs /^ pub fn DnsHostnameToComputerNameExW($/;" f +DnsHostnameToComputerNameW vendor/winapi/src/um/winbase.rs /^ pub fn DnsHostnameToComputerNameW($/;" f +DoEnvironmentSubstA vendor/winapi/src/um/shellapi.rs /^ pub fn DoEnvironmentSubstA($/;" f +DoEnvironmentSubstW vendor/winapi/src/um/shellapi.rs /^ pub fn DoEnvironmentSubstW($/;" f +DocumentPropertiesA vendor/winapi/src/um/winspool.rs /^ pub fn DocumentPropertiesA($/;" f +DocumentPropertiesW vendor/winapi/src/um/winspool.rs /^ pub fn DocumentPropertiesW($/;" f +Documentation vendor/memchr/README.md /^### Documentation$/;" S chapter:memchr +Documentations README.md /^## Documentations$/;" s chapter:utshell +Done vendor/futures-util/src/future/maybe_done.rs /^ Done(Fut::Output),$/;" e enum:MaybeDone +Done vendor/futures-util/src/future/try_maybe_done.rs /^ Done(Fut::Ok),$/;" e enum:TryMaybeDone +DosDateTimeToFileTime vendor/winapi/src/um/winbase.rs /^ pub fn DosDateTimeToFileTime($/;" f +DosDateTimeToVariantTime vendor/winapi/src/um/oleauto.rs /^ pub fn DosDateTimeToVariantTime($/;" f +DoublePanic vendor/futures-util/src/stream/futures_unordered/abort.rs /^ impl Drop for DoublePanic {$/;" c function:abort +DoublePanic vendor/futures-util/src/stream/futures_unordered/abort.rs /^ struct DoublePanic;$/;" s function:abort +DownCase lib/readline/text.c /^#define DownCase /;" d file: +Dqblk vendor/nix/src/sys/quota.rs /^impl Default for Dqblk {$/;" c +Dqblk vendor/nix/src/sys/quota.rs /^impl Dqblk {$/;" c +Dqblk vendor/nix/src/sys/quota.rs /^pub struct Dqblk(libc::dqblk);$/;" s +DragAcceptFiles vendor/winapi/src/um/shellapi.rs /^ pub fn DragAcceptFiles($/;" f +DragDetect vendor/winapi/src/um/winuser.rs /^ pub fn DragDetect($/;" f +DragFinish vendor/winapi/src/um/shellapi.rs /^ pub fn DragFinish($/;" f +DragObject vendor/winapi/src/um/winuser.rs /^ pub fn DragObject($/;" f +DragQueryFileA vendor/winapi/src/um/shellapi.rs /^ pub fn DragQueryFileA($/;" f +DragQueryFileW vendor/winapi/src/um/shellapi.rs /^ pub fn DragQueryFileW($/;" f +DragQueryPoint vendor/winapi/src/um/shellapi.rs /^ pub fn DragQueryPoint($/;" f +Drain vendor/futures-util/src/sink/drain.rs /^impl Sink for Drain {$/;" c +Drain vendor/futures-util/src/sink/drain.rs /^impl Unpin for Drain {}$/;" c +Drain vendor/futures-util/src/sink/drain.rs /^pub struct Drain {$/;" s +Drain vendor/slab/src/lib.rs /^impl DoubleEndedIterator for Drain<'_, T> {$/;" c +Drain vendor/slab/src/lib.rs /^impl ExactSizeIterator for Drain<'_, T> {$/;" c +Drain vendor/slab/src/lib.rs /^impl FusedIterator for Drain<'_, T> {}$/;" c +Drain vendor/slab/src/lib.rs /^impl Iterator for Drain<'_, T> {$/;" c +Drain vendor/slab/src/lib.rs /^impl fmt::Debug for Drain<'_, T> {$/;" c +Drain vendor/slab/src/lib.rs /^pub struct Drain<'a, T> {$/;" s +Drain vendor/smallvec/src/lib.rs /^impl<'a, T: 'a + Array> DoubleEndedIterator for Drain<'a, T> {$/;" c +Drain vendor/smallvec/src/lib.rs /^impl<'a, T: 'a + Array> Drop for Drain<'a, T> {$/;" c +Drain vendor/smallvec/src/lib.rs /^impl<'a, T: 'a + Array> Iterator for Drain<'a, T> {$/;" c +Drain vendor/smallvec/src/lib.rs /^impl<'a, T: 'a + Array> fmt::Debug for Drain<'a, T>$/;" c +Drain vendor/smallvec/src/lib.rs /^impl<'a, T: Array> ExactSizeIterator for Drain<'a, T> {$/;" c +Drain vendor/smallvec/src/lib.rs /^impl<'a, T: Array> FusedIterator for Drain<'a, T> {}$/;" c +Drain vendor/smallvec/src/lib.rs /^pub struct Drain<'a, T: 'a + Array> {$/;" s +Drain vendor/smallvec/src/lib.rs /^unsafe impl<'a, T: Send + Array> Send for Drain<'a, T> {}$/;" c +Drain vendor/smallvec/src/lib.rs /^unsafe impl<'a, T: Sync + Array> Sync for Drain<'a, T> {}$/;" c +DrawAnimatedRects vendor/winapi/src/um/winuser.rs /^ pub fn DrawAnimatedRects($/;" f +DrawCaption vendor/winapi/src/um/winuser.rs /^ pub fn DrawCaption($/;" f +DrawEdge vendor/winapi/src/um/winuser.rs /^ pub fn DrawEdge($/;" f +DrawEscape vendor/winapi/src/um/wingdi.rs /^ pub fn DrawEscape($/;" f +DrawFocusRect vendor/winapi/src/um/winuser.rs /^ pub fn DrawFocusRect($/;" f +DrawFrameControl vendor/winapi/src/um/winuser.rs /^ pub fn DrawFrameControl($/;" f +DrawIcon vendor/winapi/src/um/winuser.rs /^ pub fn DrawIcon($/;" f +DrawIconEx vendor/winapi/src/um/winuser.rs /^ pub fn DrawIconEx($/;" f +DrawInsert vendor/winapi/src/um/commctrl.rs /^ pub fn DrawInsert($/;" f +DrawMenuBar vendor/winapi/src/um/winuser.rs /^ pub fn DrawMenuBar($/;" f +DrawShadowText vendor/winapi/src/um/commctrl.rs /^ pub fn DrawShadowText($/;" f +DrawStateA vendor/winapi/src/um/winuser.rs /^ pub fn DrawStateA($/;" f +DrawStateW vendor/winapi/src/um/winuser.rs /^ pub fn DrawStateW($/;" f +DrawStatusTextA vendor/winapi/src/um/commctrl.rs /^ pub fn DrawStatusTextA($/;" f +DrawStatusTextW vendor/winapi/src/um/commctrl.rs /^ pub fn DrawStatusTextW($/;" f +DrawTextA vendor/winapi/src/um/winuser.rs /^ pub fn DrawTextA($/;" f +DrawTextExA vendor/winapi/src/um/winuser.rs /^ pub fn DrawTextExA($/;" f +DrawTextExW vendor/winapi/src/um/winuser.rs /^ pub fn DrawTextExW($/;" f +DrawTextW vendor/winapi/src/um/winuser.rs /^ pub fn DrawTextW($/;" f +DrawThemeBackground vendor/winapi/src/um/uxtheme.rs /^ pub fn DrawThemeBackground($/;" f +DrawThemeBackgroundEx vendor/winapi/src/um/uxtheme.rs /^ pub fn DrawThemeBackgroundEx($/;" f +DrawThemeEdge vendor/winapi/src/um/uxtheme.rs /^ pub fn DrawThemeEdge($/;" f +DrawThemeIcon vendor/winapi/src/um/uxtheme.rs /^ pub fn DrawThemeIcon($/;" f +DrawThemeParentBackground vendor/winapi/src/um/uxtheme.rs /^ pub fn DrawThemeParentBackground($/;" f +DrawThemeParentBackgroundEx vendor/winapi/src/um/uxtheme.rs /^ pub fn DrawThemeParentBackgroundEx($/;" f +DrawThemeText vendor/winapi/src/um/uxtheme.rs /^ pub fn DrawThemeText($/;" f +DrawThemeTextEx vendor/winapi/src/um/uxtheme.rs /^ pub fn DrawThemeTextEx($/;" f +DropCounter vendor/smallvec/src/tests.rs /^ impl<'a> Drop for DropCounter<'a> {$/;" c function:into_iter_drop +DropCounter vendor/smallvec/src/tests.rs /^ struct DropCounter<'a>(&'a Cell);$/;" s function:into_iter_drop +DropImpl vendor/pin-project-lite/tests/ui/pinned_drop/conditional-drop-impl.rs /^impl Drop for DropImpl {$/;" c +DropImpl vendor/pin-project-lite/tests/ui/pinned_drop/conditional-drop-impl.rs /^struct DropImpl {$/;" s +DropOnPanic vendor/smallvec/src/lib.rs /^ impl Drop for DropOnPanic {$/;" c method:SmallVec::insert_many +DropOnPanic vendor/smallvec/src/lib.rs /^ struct DropOnPanic {$/;" s method:SmallVec::insert_many +DropPanic vendor/smallvec/src/tests.rs /^ impl Drop for DropPanic {$/;" c function:test_drop_panic_smallvec +DropPanic vendor/smallvec/src/tests.rs /^ struct DropPanic;$/;" s function:test_drop_panic_smallvec +Dropper vendor/once_cell/tests/it.rs /^ impl Drop for Dropper {$/;" c function:sync::once_cell_drop +Dropper vendor/once_cell/tests/it.rs /^ impl Drop for Dropper {$/;" c function:unsync::once_cell_drop +Dropper vendor/once_cell/tests/it.rs /^ struct Dropper;$/;" s function:sync::once_cell_drop +Dropper vendor/once_cell/tests/it.rs /^ struct Dropper;$/;" s function:unsync::once_cell_drop +DsAddressToSiteNamesA vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsAddressToSiteNamesA($/;" f +DsAddressToSiteNamesExA vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsAddressToSiteNamesExA($/;" f +DsAddressToSiteNamesExW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsAddressToSiteNamesExW($/;" f +DsAddressToSiteNamesW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsAddressToSiteNamesW($/;" f +DsDeregisterDnsHostRecordsA vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsDeregisterDnsHostRecordsA($/;" f +DsDeregisterDnsHostRecordsW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsDeregisterDnsHostRecordsW($/;" f +DsEnumerateDomainTrustsA vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsEnumerateDomainTrustsA($/;" f +DsEnumerateDomainTrustsW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsEnumerateDomainTrustsW($/;" f +DsGetDcCloseW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsGetDcCloseW($/;" f +DsGetDcNameA vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsGetDcNameA($/;" f +DsGetDcNameW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsGetDcNameW($/;" f +DsGetDcNextA vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsGetDcNextA($/;" f +DsGetDcNextW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsGetDcNextW($/;" f +DsGetDcOpenA vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsGetDcOpenA($/;" f +DsGetDcOpenW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsGetDcOpenW($/;" f +DsGetDcSiteCoverageA vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsGetDcSiteCoverageA($/;" f +DsGetDcSiteCoverageW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsGetDcSiteCoverageW($/;" f +DsGetForestTrustInformationW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsGetForestTrustInformationW($/;" f +DsGetSiteNameA vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsGetSiteNameA($/;" f +DsGetSiteNameW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsGetSiteNameW($/;" f +DsMergeForestTrustInformationW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsMergeForestTrustInformationW($/;" f +DsRoleFreeMemory vendor/winapi/src/um/dsrole.rs /^ pub fn DsRoleFreeMemory($/;" f +DsRoleGetPrimaryDomainInformation vendor/winapi/src/um/dsrole.rs /^ pub fn DsRoleGetPrimaryDomainInformation($/;" f +DsValidateSubnetNameA vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsValidateSubnetNameA($/;" f +DsValidateSubnetNameW vendor/winapi/src/um/dsgetdc.rs /^ pub fn DsValidateSubnetNameW($/;" f +DuplicateEncryptionInfoFile vendor/winapi/src/um/winefs.rs /^ pub fn DuplicateEncryptionInfoFile($/;" f +DuplicateHandle vendor/winapi/src/um/handleapi.rs /^ pub fn DuplicateHandle($/;" f +DuplicateIcon vendor/winapi/src/um/shellapi.rs /^ pub fn DuplicateIcon($/;" f +DuplicateToken vendor/winapi/src/um/securitybaseapi.rs /^ pub fn DuplicateToken($/;" f +DuplicateTokenEx vendor/winapi/src/um/securitybaseapi.rs /^ pub fn DuplicateTokenEx($/;" f +DuplicatedNamedArgument vendor/fluent-syntax/src/parser/errors.rs /^ DuplicatedNamedArgument(String),$/;" e enum:ErrorKind +Duration vendor/nix/src/sys/time.rs /^impl From for Duration {$/;" c +Duration vendor/stdext/src/duration.rs /^impl DurationExt for Duration {$/;" c +DurationExt vendor/stdext/src/duration.rs /^pub trait DurationExt {$/;" i +DwmDefWindowProc vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmDefWindowProc($/;" f +DwmEnableBlurBehindWindow vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmEnableBlurBehindWindow($/;" f +DwmEnableComposition vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmEnableComposition($/;" f +DwmEnableMMCSS vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmEnableMMCSS($/;" f +DwmExtendFrameIntoClientArea vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmExtendFrameIntoClientArea($/;" f +DwmFlush vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmFlush() -> HRESULT;$/;" f +DwmGetColorizationColor vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmGetColorizationColor($/;" f +DwmGetCompositionTimingInfo vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmGetCompositionTimingInfo($/;" f +DwmGetTransportAttributes vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmGetTransportAttributes($/;" f +DwmGetWindowAttribute vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmGetWindowAttribute($/;" f +DwmInvalidateIconicBitmaps vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmInvalidateIconicBitmaps($/;" f +DwmIsCompositionEnabled vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmIsCompositionEnabled($/;" f +DwmModifyPreviousDxFrameDuration vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmModifyPreviousDxFrameDuration($/;" f +DwmQueryThumbnailSourceSize vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmQueryThumbnailSourceSize($/;" f +DwmRegisterThumbnail vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmRegisterThumbnail($/;" f +DwmRenderGesture vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmRenderGesture($/;" f +DwmSetDxFrameDuration vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmSetDxFrameDuration($/;" f +DwmSetIconicLivePreviewBitmap vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmSetIconicLivePreviewBitmap($/;" f +DwmSetIconicThumbnail vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmSetIconicThumbnail($/;" f +DwmSetPresentParameters vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmSetPresentParameters($/;" f +DwmSetWindowAttribute vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmSetWindowAttribute($/;" f +DwmShowContact vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmShowContact($/;" f +DwmTetherContact vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmTetherContact($/;" f +DwmTransitionOwnedWindow vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmTransitionOwnedWindow($/;" f +DwmUnregisterThumbnail vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmUnregisterThumbnail($/;" f +DwmUpdateThumbnailProperties vendor/winapi/src/um/dwmapi.rs /^ pub fn DwmUpdateThumbnailProperties($/;" f +Dyn traits vendor/async-trait/README.md /^## Dyn traits$/;" s chapter:Async trait methods +E vendor/async-trait/tests/ui/self-span.rs /^impl Trait for E {$/;" c +E vendor/async-trait/tests/ui/self-span.rs /^pub enum E {$/;" g +E0 vendor/thiserror/tests/test_transparent.rs /^ E0,$/;" e enum:test_transparent_struct::ErrorKind +E1 vendor/thiserror/tests/test_transparent.rs /^ E1(#[from] io::Error),$/;" e enum:test_transparent_struct::ErrorKind +E2BIG vendor/nix/src/errno.rs /^ E2BIG = libc::E2BIG,$/;" e enum:consts::Errno +EACCES vendor/nix/src/errno.rs /^ EACCES = libc::EACCES,$/;" e enum:consts::Errno +EADDRINUSE vendor/nix/src/errno.rs /^ EADDRINUSE = libc::EADDRINUSE,$/;" e enum:consts::Errno +EADDRNOTAVAIL vendor/nix/src/errno.rs /^ EADDRNOTAVAIL = libc::EADDRNOTAVAIL,$/;" e enum:consts::Errno +EADV vendor/nix/src/errno.rs /^ EADV = libc::EADV,$/;" e enum:consts::Errno +EAFNOSUPPORT vendor/nix/src/errno.rs /^ EAFNOSUPPORT = libc::EAFNOSUPPORT,$/;" e enum:consts::Errno +EAGAIN vendor/nix/src/errno.rs /^ EAGAIN = libc::EAGAIN,$/;" e enum:consts::Errno +EALREADY vendor/nix/src/errno.rs /^ EALREADY = libc::EALREADY,$/;" e enum:consts::Errno +EAP_CRED_EXPIRY_RESP vendor/winapi/src/um/eaptypes.rs /^pub type EAP_CRED_EXPIRY_RESP = EAP_CRED_EXPIRY_REQ;$/;" t +EAP_CRED_LOGON_REQ vendor/winapi/src/um/eaptypes.rs /^pub type EAP_CRED_LOGON_REQ = EAP_CONFIG_INPUT_FIELD_ARRAY;$/;" t +EAP_CRED_LOGON_RESP vendor/winapi/src/um/eaptypes.rs /^pub type EAP_CRED_LOGON_RESP = EAP_CONFIG_INPUT_FIELD_ARRAY;$/;" t +EAP_CRED_REQ vendor/winapi/src/um/eaptypes.rs /^pub type EAP_CRED_REQ = EAP_CONFIG_INPUT_FIELD_ARRAY;$/;" t +EAP_CRED_RESP vendor/winapi/src/um/eaptypes.rs /^pub type EAP_CRED_RESP = EAP_CONFIG_INPUT_FIELD_ARRAY;$/;" t +EAP_SESSIONID vendor/winapi/src/um/eaptypes.rs /^pub type EAP_SESSIONID = DWORD;$/;" t +EASYNC vendor/nix/src/errno.rs /^ EASYNC = libc::EASYNC,$/;" e enum:consts::Errno +EAUTH vendor/nix/src/errno.rs /^ EAUTH = libc::EAUTH,$/;" e enum:consts::Errno +EBADARCH vendor/nix/src/errno.rs /^ EBADARCH = libc::EBADARCH,$/;" e enum:consts::Errno +EBADE vendor/nix/src/errno.rs /^ EBADE = libc::EBADE,$/;" e enum:consts::Errno +EBADEXEC vendor/nix/src/errno.rs /^ EBADEXEC = libc::EBADEXEC,$/;" e enum:consts::Errno +EBADF vendor/nix/src/errno.rs /^ EBADF = libc::EBADF,$/;" e enum:consts::Errno +EBADFD vendor/nix/src/errno.rs /^ EBADFD = libc::EBADFD,$/;" e enum:consts::Errno +EBADMACHO vendor/nix/src/errno.rs /^ EBADMACHO = libc::EBADMACHO,$/;" e enum:consts::Errno +EBADMSG vendor/nix/src/errno.rs /^ EBADMSG = libc::EBADMSG,$/;" e enum:consts::Errno +EBADR vendor/nix/src/errno.rs /^ EBADR = libc::EBADR,$/;" e enum:consts::Errno +EBADRPC vendor/nix/src/errno.rs /^ EBADRPC = libc::EBADRPC,$/;" e enum:consts::Errno +EBADRQC vendor/nix/src/errno.rs /^ EBADRQC = libc::EBADRQC,$/;" e enum:consts::Errno +EBADSLT vendor/nix/src/errno.rs /^ EBADSLT = libc::EBADSLT,$/;" e enum:consts::Errno +EBFONT vendor/nix/src/errno.rs /^ EBFONT = libc::EBFONT,$/;" e enum:consts::Errno +EBUSY vendor/nix/src/errno.rs /^ EBUSY = libc::EBUSY,$/;" e enum:consts::Errno +ECANCELED vendor/nix/src/errno.rs /^ ECANCELED = libc::ECANCELED,$/;" e enum:consts::Errno +ECAPMODE vendor/nix/src/errno.rs /^ ECAPMODE = libc::ECAPMODE,$/;" e enum:consts::Errno +ECHILD vendor/nix/src/errno.rs /^ ECHILD = libc::ECHILD,$/;" e enum:consts::Errno +ECHRNG vendor/nix/src/errno.rs /^ ECHRNG = libc::ECHRNG,$/;" e enum:consts::Errno +ECOMM vendor/nix/src/errno.rs /^ ECOMM = libc::ECOMM,$/;" e enum:consts::Errno +ECONNABORTED vendor/nix/src/errno.rs /^ ECONNABORTED = libc::ECONNABORTED,$/;" e enum:consts::Errno +ECONNREFUSED vendor/nix/src/errno.rs /^ ECONNREFUSED = libc::ECONNREFUSED,$/;" e enum:consts::Errno +ECONNRESET vendor/nix/src/errno.rs /^ ECONNRESET = libc::ECONNRESET,$/;" e enum:consts::Errno +EDEADLK vendor/nix/src/errno.rs /^ EDEADLK = libc::EDEADLK,$/;" e enum:consts::Errno +EDEADLOCK vendor/nix/src/errno.rs /^ EDEADLOCK = libc::EDEADLOCK,$/;" e enum:consts::Errno +EDESTADDRREQ vendor/nix/src/errno.rs /^ EDESTADDRREQ = libc::EDESTADDRREQ,$/;" e enum:consts::Errno +EDEVERR vendor/nix/src/errno.rs /^ EDEVERR = libc::EDEVERR,$/;" e enum:consts::Errno +EDOM vendor/nix/src/errno.rs /^ EDOM = libc::EDOM,$/;" e enum:consts::Errno +EDOOFUS vendor/nix/src/errno.rs /^ EDOOFUS = libc::EDOOFUS,$/;" e enum:consts::Errno +EDOTDOT vendor/nix/src/errno.rs /^ EDOTDOT = libc::EDOTDOT,$/;" e enum:consts::Errno +EDQUOT vendor/nix/src/errno.rs /^ EDQUOT = libc::EDQUOT,$/;" e enum:consts::Errno +EEXIST vendor/nix/src/errno.rs /^ EEXIST = libc::EEXIST,$/;" e enum:consts::Errno +EF test.c /^#define EF /;" d file: +EFAULT vendor/nix/src/errno.rs /^ EFAULT = libc::EFAULT,$/;" e enum:consts::Errno +EFBIG vendor/nix/src/errno.rs /^ EFBIG = libc::EFBIG,$/;" e enum:consts::Errno +EFS_IS_APPX_VERSION vendor/winapi/src/um/winefs.rs /^pub fn EFS_IS_APPX_VERSION(v: DWORD, subV: DWORD) -> bool {$/;" f +EFS_IS_DESCRIPTOR_VERSION vendor/winapi/src/um/winefs.rs /^pub fn EFS_IS_DESCRIPTOR_VERSION(v: DWORD) -> bool {$/;" f +EFTYPE vendor/nix/src/errno.rs /^ EFTYPE = libc::EFTYPE,$/;" e enum:consts::Errno +EHOSTDOWN vendor/nix/src/errno.rs /^ EHOSTDOWN = libc::EHOSTDOWN,$/;" e enum:consts::Errno +EHOSTUNREACH vendor/nix/src/errno.rs /^ EHOSTUNREACH = libc::EHOSTUNREACH,$/;" e enum:consts::Errno +EHWPOISON vendor/nix/src/errno.rs /^ EHWPOISON = libc::EHWPOISON,$/;" e enum:consts::Errno +EIDRM vendor/nix/src/errno.rs /^ EIDRM = libc::EIDRM,$/;" e enum:consts::Errno +EILSEQ vendor/nix/src/errno.rs /^ EILSEQ = libc::EILSEQ,$/;" e enum:consts::Errno +EINPROGRESS vendor/nix/src/errno.rs /^ EINPROGRESS = libc::EINPROGRESS,$/;" e enum:consts::Errno +EINTR vendor/nix/src/errno.rs /^ EINTR = libc::EINTR,$/;" e enum:consts::Errno +EINVAL vendor/nix/src/errno.rs /^ EINVAL = libc::EINVAL,$/;" e enum:consts::Errno +EIO vendor/nix/src/errno.rs /^ EIO = libc::EIO,$/;" e enum:consts::Errno +EIPSEC vendor/nix/src/errno.rs /^ EIPSEC = libc::EIPSEC,$/;" e enum:consts::Errno +EISCONN vendor/nix/src/errno.rs /^ EISCONN = libc::EISCONN,$/;" e enum:consts::Errno +EISDIR vendor/nix/src/errno.rs /^ EISDIR = libc::EISDIR,$/;" e enum:consts::Errno +EISNAM vendor/nix/src/errno.rs /^ EISNAM = libc::EISNAM,$/;" e enum:consts::Errno +EKEYEXPIRED vendor/nix/src/errno.rs /^ EKEYEXPIRED = libc::EKEYEXPIRED,$/;" e enum:consts::Errno +EKEYREJECTED vendor/nix/src/errno.rs /^ EKEYREJECTED = libc::EKEYREJECTED,$/;" e enum:consts::Errno +EKEYREVOKED vendor/nix/src/errno.rs /^ EKEYREVOKED = libc::EKEYREVOKED,$/;" e enum:consts::Errno +EL2HLT vendor/nix/src/errno.rs /^ EL2HLT = libc::EL2HLT,$/;" e enum:consts::Errno +EL2NSYNC vendor/nix/src/errno.rs /^ EL2NSYNC = libc::EL2NSYNC,$/;" e enum:consts::Errno +EL3HLT vendor/nix/src/errno.rs /^ EL3HLT = libc::EL3HLT,$/;" e enum:consts::Errno +EL3RST vendor/nix/src/errno.rs /^ EL3RST = libc::EL3RST,$/;" e enum:consts::Errno +ELEMENT command.h /^} ELEMENT;$/;" t typeref:struct:element +ELEMENT r_bash/src/lib.rs /^pub type ELEMENT = element;$/;" t +ELEMENT r_glob/src/lib.rs /^pub type ELEMENT = element;$/;" t +ELEMENT r_readline/src/lib.rs /^pub type ELEMENT = element;$/;" t +ELIBACC vendor/nix/src/errno.rs /^ ELIBACC = libc::ELIBACC,$/;" e enum:consts::Errno +ELIBBAD vendor/nix/src/errno.rs /^ ELIBBAD = libc::ELIBBAD,$/;" e enum:consts::Errno +ELIBEXEC vendor/nix/src/errno.rs /^ ELIBEXEC = libc::ELIBEXEC,$/;" e enum:consts::Errno +ELIBMAX vendor/nix/src/errno.rs /^ ELIBMAX = libc::ELIBMAX,$/;" e enum:consts::Errno +ELIBSCN vendor/nix/src/errno.rs /^ ELIBSCN = libc::ELIBSCN,$/;" e enum:consts::Errno +ELLIPSIS_LEN lib/readline/complete.c /^#define ELLIPSIS_LEN /;" d file: +ELNRNG vendor/nix/src/errno.rs /^ ELNRNG = libc::ELNRNG,$/;" e enum:consts::Errno +ELOCKUNMAPPED vendor/nix/src/errno.rs /^ ELOCKUNMAPPED = libc::ELOCKUNMAPPED,$/;" e enum:consts::Errno +ELOOP vendor/nix/src/errno.rs /^ ELOOP = libc::ELOOP,$/;" e enum:consts::Errno +EMACS_EDITING_MODE bashline.c /^# define EMACS_EDITING_MODE /;" d file: +EMACS_EDIT_COMMAND bashline.c /^#define EMACS_EDIT_COMMAND /;" d file: +EMACS_MODE lib/readline/rlprivate.h /^#define EMACS_MODE(/;" d +EMEDIUMTYPE vendor/nix/src/errno.rs /^ EMEDIUMTYPE = libc::EMEDIUMTYPE,$/;" e enum:consts::Errno +EMFILE vendor/nix/src/errno.rs /^ EMFILE = libc::EMFILE,$/;" e enum:consts::Errno +EMLINK vendor/nix/src/errno.rs /^ EMLINK = libc::EMLINK,$/;" e enum:consts::Errno +EMPTYCMD builtins_rust/complete/src/lib.rs /^unsafe fn EMPTYCMD() -> *const c_char {$/;" f +EMPTYCMD pcomplete.h /^#define EMPTYCMD /;" d +EMPTY_ENTRY vendor/syn/src/buffer.rs /^ static EMPTY_ENTRY: UnsafeSyncEntry = UnsafeSyncEntry(Entry::End);$/;" v method:Cursor::empty +EMRARCTO vendor/winapi/src/um/wingdi.rs /^pub type EMRARCTO = EMRARC;$/;" t +EMRBEGINPATH vendor/winapi/src/um/wingdi.rs /^pub type EMRBEGINPATH = EMRABORTPATH;$/;" t +EMRCHORD vendor/winapi/src/um/wingdi.rs /^pub type EMRCHORD = EMRARC;$/;" t +EMRCLOSEFIGURE vendor/winapi/src/um/wingdi.rs /^pub type EMRCLOSEFIGURE = EMRABORTPATH;$/;" t +EMRDELETECOLORSPACE vendor/winapi/src/um/wingdi.rs /^pub type EMRDELETECOLORSPACE = EMRSETCOLORSPACE;$/;" t +EMRDELETEOBJECT vendor/winapi/src/um/wingdi.rs /^pub type EMRDELETEOBJECT = EMRSELECTOBJECT;$/;" t +EMRDRAWESCAPE vendor/winapi/src/um/wingdi.rs /^pub type EMRDRAWESCAPE = EMREXTESCAPE;$/;" t +EMRENDPATH vendor/winapi/src/um/wingdi.rs /^pub type EMRENDPATH = EMRABORTPATH;$/;" t +EMREXTTEXTOUTW vendor/winapi/src/um/wingdi.rs /^pub type EMREXTTEXTOUTW = EMREXTTEXTOUTA;$/;" t +EMRFLATTENPATH vendor/winapi/src/um/wingdi.rs /^pub type EMRFLATTENPATH = EMRABORTPATH;$/;" t +EMRINTERSECTCLIPRECT vendor/winapi/src/um/wingdi.rs /^pub type EMRINTERSECTCLIPRECT = EMREXCLUDECLIPRECT;$/;" t +EMRMOVETOEX vendor/winapi/src/um/wingdi.rs /^pub type EMRMOVETOEX = EMRLINETO;$/;" t +EMRPAINTRGN vendor/winapi/src/um/wingdi.rs /^pub type EMRPAINTRGN = EMRINVERTRGN;$/;" t +EMRPIE vendor/winapi/src/um/wingdi.rs /^pub type EMRPIE = EMRARC;$/;" t +EMRPOLYBEZIER vendor/winapi/src/um/wingdi.rs /^pub type EMRPOLYBEZIER = EMRPOLYLINE;$/;" t +EMRPOLYBEZIER16 vendor/winapi/src/um/wingdi.rs /^pub type EMRPOLYBEZIER16 = EMRPOLYLINE16;$/;" t +EMRPOLYBEZIERTO vendor/winapi/src/um/wingdi.rs /^pub type EMRPOLYBEZIERTO = EMRPOLYLINE;$/;" t +EMRPOLYBEZIERTO16 vendor/winapi/src/um/wingdi.rs /^pub type EMRPOLYBEZIERTO16 = EMRPOLYLINE16;$/;" t +EMRPOLYGON vendor/winapi/src/um/wingdi.rs /^pub type EMRPOLYGON = EMRPOLYLINE;$/;" t +EMRPOLYGON16 vendor/winapi/src/um/wingdi.rs /^pub type EMRPOLYGON16 = EMRPOLYLINE16;$/;" t +EMRPOLYLINETO vendor/winapi/src/um/wingdi.rs /^pub type EMRPOLYLINETO = EMRPOLYLINE;$/;" t +EMRPOLYLINETO16 vendor/winapi/src/um/wingdi.rs /^pub type EMRPOLYLINETO16 = EMRPOLYLINE16;$/;" t +EMRPOLYPOLYGON vendor/winapi/src/um/wingdi.rs /^pub type EMRPOLYPOLYGON = EMRPOLYPOLYLINE;$/;" t +EMRPOLYPOLYGON16 vendor/winapi/src/um/wingdi.rs /^pub type EMRPOLYPOLYGON16 = EMRPOLYPOLYLINE16;$/;" t +EMRPOLYTEXTOUTW vendor/winapi/src/um/wingdi.rs /^pub type EMRPOLYTEXTOUTW = EMRPOLYTEXTOUTA;$/;" t +EMRREALIZEPALETTE vendor/winapi/src/um/wingdi.rs /^pub type EMRREALIZEPALETTE = EMRABORTPATH;$/;" t +EMRRECTANGLE vendor/winapi/src/um/wingdi.rs /^pub type EMRRECTANGLE = EMRELLIPSE;$/;" t +EMRSAVEDC vendor/winapi/src/um/wingdi.rs /^pub type EMRSAVEDC = EMRABORTPATH;$/;" t +EMRSCALEWINDOWEXTEX vendor/winapi/src/um/wingdi.rs /^pub type EMRSCALEWINDOWEXTEX = EMRSCALEVIEWPORTEXTEX;$/;" t +EMRSELECTCOLORSPACE vendor/winapi/src/um/wingdi.rs /^pub type EMRSELECTCOLORSPACE = EMRSETCOLORSPACE;$/;" t +EMRSETBKMODE vendor/winapi/src/um/wingdi.rs /^pub type EMRSETBKMODE = EMRSELECTCLIPPATH;$/;" t +EMRSETBRUSHORGEX vendor/winapi/src/um/wingdi.rs /^pub type EMRSETBRUSHORGEX = EMRSETVIEWPORTORGEX;$/;" t +EMRSETICMMODE vendor/winapi/src/um/wingdi.rs /^pub type EMRSETICMMODE = EMRSELECTCLIPPATH;$/;" t +EMRSETICMPROFILEA vendor/winapi/src/um/wingdi.rs /^pub type EMRSETICMPROFILEA = EMRSETICMPROFILE;$/;" t +EMRSETICMPROFILEW vendor/winapi/src/um/wingdi.rs /^pub type EMRSETICMPROFILEW = EMRSETICMPROFILE;$/;" t +EMRSETLAYOUT vendor/winapi/src/um/wingdi.rs /^pub type EMRSETLAYOUT = EMRSELECTCLIPPATH;$/;" t +EMRSETMAPMODE vendor/winapi/src/um/wingdi.rs /^pub type EMRSETMAPMODE = EMRSELECTCLIPPATH;$/;" t +EMRSETMETARGN vendor/winapi/src/um/wingdi.rs /^pub type EMRSETMETARGN = EMRABORTPATH;$/;" t +EMRSETPOLYFILLMODE vendor/winapi/src/um/wingdi.rs /^pub type EMRSETPOLYFILLMODE = EMRSELECTCLIPPATH;$/;" t +EMRSETROP2 vendor/winapi/src/um/wingdi.rs /^pub type EMRSETROP2 = EMRSELECTCLIPPATH;$/;" t +EMRSETSTRETCHBLTMODE vendor/winapi/src/um/wingdi.rs /^pub type EMRSETSTRETCHBLTMODE = EMRSELECTCLIPPATH;$/;" t +EMRSETTEXTALIGN vendor/winapi/src/um/wingdi.rs /^pub type EMRSETTEXTALIGN = EMRSELECTCLIPPATH;$/;" t +EMRSETTEXTCOLOR vendor/winapi/src/um/wingdi.rs /^pub type EMRSETTEXTCOLOR = EMRSETBKCOLOR;$/;" t +EMRSETWINDOWEXTEX vendor/winapi/src/um/wingdi.rs /^pub type EMRSETWINDOWEXTEX = EMRSETVIEWPORTEXTEX;$/;" t +EMRSETWINDOWORGEX vendor/winapi/src/um/wingdi.rs /^pub type EMRSETWINDOWORGEX = EMRSETVIEWPORTORGEX;$/;" t +EMRSTROKEANDFILLPATH vendor/winapi/src/um/wingdi.rs /^pub type EMRSTROKEANDFILLPATH = EMRFILLPATH;$/;" t +EMRSTROKEPATH vendor/winapi/src/um/wingdi.rs /^pub type EMRSTROKEPATH = EMRFILLPATH;$/;" t +EMRWIDENPATH vendor/winapi/src/um/wingdi.rs /^pub type EMRWIDENPATH = EMRABORTPATH;$/;" t +EMSGSIZE vendor/nix/src/errno.rs /^ EMSGSIZE = libc::EMSGSIZE,$/;" e enum:consts::Errno +EMULTIHOP vendor/nix/src/errno.rs /^ EMULTIHOP = libc::EMULTIHOP,$/;" e enum:consts::Errno +ENABLE_NLS bashintl.h /^# define ENABLE_NLS /;" d +ENABLE_SECURE lib/intl/dcigettext.c /^# define ENABLE_SECURE /;" d file: +ENAMETOOLONG vendor/nix/src/errno.rs /^ ENAMETOOLONG = libc::ENAMETOOLONG,$/;" e enum:consts::Errno +ENAVAIL vendor/nix/src/errno.rs /^ ENAVAIL = libc::ENAVAIL,$/;" e enum:consts::Errno +ENCODE_D3D10_SB_CUSTOMDATA_CLASS vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_CUSTOMDATA_CLASS(CustomDataClass: D3D10_SB_CUSTOMDATA_CLASS) -> DWORD {$/;" f +ENCODE_D3D10_SB_D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN($/;" f +ENCODE_D3D10_SB_EXTENDED_OPCODE_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_EXTENDED_OPCODE_TYPE($/;" f +ENCODE_D3D10_SB_EXTENDED_OPERAND_MODIFIER vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_EXTENDED_OPERAND_MODIFIER(SourceMod: D3D10_SB_OPERAND_MODIFIER) -> DWORD /;" f +ENCODE_D3D10_SB_EXTENDED_OPERAND_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_EXTENDED_OPERAND_TYPE($/;" f +ENCODE_D3D10_SB_GLOBAL_FLAGS vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_GLOBAL_FLAGS(Flags: DWORD) -> DWORD {$/;" f +ENCODE_D3D10_SB_GS_INPUT_PRIMITIVE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_GS_INPUT_PRIMITIVE(Prim: D3D10_SB_PRIMITIVE) -> DWORD {$/;" f +ENCODE_D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY($/;" f +ENCODE_D3D10_SB_INPUT_INTERPOLATION_MODE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_INPUT_INTERPOLATION_MODE($/;" f +ENCODE_D3D10_SB_INSTRUCTION_RETURN_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_INSTRUCTION_RETURN_TYPE($/;" f +ENCODE_D3D10_SB_INSTRUCTION_SATURATE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_INSTRUCTION_SATURATE(bSat: DWORD) -> DWORD {$/;" f +ENCODE_D3D10_SB_INSTRUCTION_TEST_BOOLEAN vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_INSTRUCTION_TEST_BOOLEAN($/;" f +ENCODE_D3D10_SB_NAME vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_NAME(Name: D3D10_SB_NAME) -> DWORD {$/;" f +ENCODE_D3D10_SB_OPCODE_EXTENDED vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_OPCODE_EXTENDED(bExtended: DWORD) -> DWORD {$/;" f +ENCODE_D3D10_SB_OPCODE_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_OPCODE_TYPE(OpcodeName: D3D10_SB_OPCODE_TYPE) -> DWORD {$/;" f +ENCODE_D3D10_SB_OPERAND_4_COMPONENT_MASK vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_OPERAND_4_COMPONENT_MASK(ComponentMask: DWORD) -> DWORD {$/;" f +ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE($/;" f +ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SELECT_1 vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SELECT_1($/;" f +ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE($/;" f +ENCODE_D3D10_SB_OPERAND_DOUBLE_EXTENDED vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_OPERAND_DOUBLE_EXTENDED(bExtended: DWORD) -> DWORD {$/;" f +ENCODE_D3D10_SB_OPERAND_EXTENDED vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_OPERAND_EXTENDED(bExtended: DWORD) -> DWORD {$/;" f +ENCODE_D3D10_SB_OPERAND_INDEX_DIMENSION vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_OPERAND_INDEX_DIMENSION($/;" f +ENCODE_D3D10_SB_OPERAND_INDEX_REPRESENTATION vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_OPERAND_INDEX_REPRESENTATION($/;" f +ENCODE_D3D10_SB_OPERAND_NUM_COMPONENTS vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_OPERAND_NUM_COMPONENTS(NumComp: DWORD) -> DWORD {$/;" f +ENCODE_D3D10_SB_OPERAND_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_OPERAND_TYPE(OperandType: D3D10_SB_OPERAND_TYPE) -> DWORD {$/;" f +ENCODE_D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE($/;" f +ENCODE_D3D10_SB_RESOURCE_DIMENSION vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_RESOURCE_DIMENSION(ResourceDim: D3D10_SB_RESOURCE_DIMENSION) -> DWORD {$/;" f +ENCODE_D3D10_SB_RESOURCE_RETURN_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_RESOURCE_RETURN_TYPE($/;" f +ENCODE_D3D10_SB_RESOURCE_SAMPLE_COUNT vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_RESOURCE_SAMPLE_COUNT(SampleCount: DWORD) -> DWORD {$/;" f +ENCODE_D3D10_SB_SAMPLER_MODE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_SAMPLER_MODE(SamplerMode: D3D10_SB_SAMPLER_MODE) -> DWORD {$/;" f +ENCODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH(Length: DWORD) -> DWORD {$/;" f +ENCODE_D3D10_SB_TOKENIZED_PROGRAM_LENGTH vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_TOKENIZED_PROGRAM_LENGTH(Length: DWORD) -> DWORD {$/;" f +ENCODE_D3D10_SB_TOKENIZED_PROGRAM_VERSION_TOKEN vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D10_SB_TOKENIZED_PROGRAM_VERSION_TOKEN($/;" f +ENCODE_D3D11_SB_ACCESS_COHERENCY_FLAGS vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_ACCESS_COHERENCY_FLAGS(Flags: DWORD) -> DWORD {$/;" f +ENCODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION($/;" f +ENCODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE(Stride: DWORD) -> DWORD {$/;" f +ENCODE_D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE($/;" f +ENCODE_D3D11_SB_INPUT_CONTROL_POINT_COUNT vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_INPUT_CONTROL_POINT_COUNT(Count: DWORD) -> DWORD {$/;" f +ENCODE_D3D11_SB_INSTRUCTION_PRECISE_VALUES vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_INSTRUCTION_PRECISE_VALUES(ComponentMask: DWORD) -> DWORD {$/;" f +ENCODE_D3D11_SB_INTERFACE_ARRAY_LENGTH vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_INTERFACE_ARRAY_LENGTH(ArrayLength: DWORD) -> DWORD {$/;" f +ENCODE_D3D11_SB_INTERFACE_INDEXED_BIT vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_INTERFACE_INDEXED_BIT(IndexedBit: DWORD) -> DWORD {$/;" f +ENCODE_D3D11_SB_INTERFACE_TABLE_LENGTH vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_INTERFACE_TABLE_LENGTH(TableLength: DWORD) -> DWORD {$/;" f +ENCODE_D3D11_SB_OPERAND_MIN_PRECISION vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_OPERAND_MIN_PRECISION($/;" f +ENCODE_D3D11_SB_OUTPUT_CONTROL_POINT_COUNT vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_OUTPUT_CONTROL_POINT_COUNT(Count: DWORD) -> DWORD {$/;" f +ENCODE_D3D11_SB_SYNC_FLAGS vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_SYNC_FLAGS(Flags: DWORD) -> DWORD {$/;" f +ENCODE_D3D11_SB_TESS_DOMAIN vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_TESS_DOMAIN(Domain: D3D11_SB_TESSELLATOR_DOMAIN) -> DWORD {$/;" f +ENCODE_D3D11_SB_TESS_OUTPUT_PRIMITIVE vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_TESS_OUTPUT_PRIMITIVE($/;" f +ENCODE_D3D11_SB_TESS_PARTITIONING vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_TESS_PARTITIONING($/;" f +ENCODE_D3D11_SB_UAV_FLAGS vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_D3D11_SB_UAV_FLAGS(Flags: DWORD) -> DWORD {$/;" f +ENCODE_IMMEDIATE_D3D10_SB_ADDRESS_OFFSET vendor/winapi/src/um/d3d11tokenizedprogramformat.rs /^pub fn ENCODE_IMMEDIATE_D3D10_SB_ADDRESS_OFFSET($/;" f +ENCRYPTED_NT_OWF_PASSWORD vendor/winapi/src/um/mschapp.rs /^pub type ENCRYPTED_NT_OWF_PASSWORD = ENCRYPTED_LM_OWF_PASSWORD;$/;" t +ENDSRCH_CHAR lib/readline/isearch.c /^#define ENDSRCH_CHAR(/;" d file: +ENEEDAUTH vendor/nix/src/errno.rs /^ ENEEDAUTH = libc::ENEEDAUTH,$/;" e enum:consts::Errno +ENETDOWN vendor/nix/src/errno.rs /^ ENETDOWN = libc::ENETDOWN,$/;" e enum:consts::Errno +ENETRESET vendor/nix/src/errno.rs /^ ENETRESET = libc::ENETRESET,$/;" e enum:consts::Errno +ENETUNREACH vendor/nix/src/errno.rs /^ ENETUNREACH = libc::ENETUNREACH,$/;" e enum:consts::Errno +ENFILE vendor/nix/src/errno.rs /^ ENFILE = libc::ENFILE,$/;" e enum:consts::Errno +ENOANO vendor/nix/src/errno.rs /^ ENOANO = libc::ENOANO,$/;" e enum:consts::Errno +ENOATTR vendor/nix/src/errno.rs /^ ENOATTR = libc::ENOATTR,$/;" e enum:consts::Errno +ENOBUFS vendor/nix/src/errno.rs /^ ENOBUFS = libc::ENOBUFS,$/;" e enum:consts::Errno +ENOCSI vendor/nix/src/errno.rs /^ ENOCSI = libc::ENOCSI,$/;" e enum:consts::Errno +ENODATA vendor/nix/src/errno.rs /^ ENODATA = libc::ENODATA,$/;" e enum:consts::Errno +ENODEV vendor/nix/src/errno.rs /^ ENODEV = libc::ENODEV,$/;" e enum:consts::Errno +ENOENT r_bashhist/src/lib.rs /^macro_rules! ENOENT {$/;" M +ENOENT vendor/nix/src/errno.rs /^ ENOENT = libc::ENOENT,$/;" e enum:consts::Errno +ENOEXEC vendor/nix/src/errno.rs /^ ENOEXEC = libc::ENOEXEC,$/;" e enum:consts::Errno +ENOKEY vendor/nix/src/errno.rs /^ ENOKEY = libc::ENOKEY,$/;" e enum:consts::Errno +ENOLCK vendor/nix/src/errno.rs /^ ENOLCK = libc::ENOLCK,$/;" e enum:consts::Errno +ENOLINK vendor/nix/src/errno.rs /^ ENOLINK = libc::ENOLINK,$/;" e enum:consts::Errno +ENOMEDIUM vendor/nix/src/errno.rs /^ ENOMEDIUM = libc::ENOMEDIUM,$/;" e enum:consts::Errno +ENOMEM vendor/nix/src/errno.rs /^ ENOMEM = libc::ENOMEM,$/;" e enum:consts::Errno +ENOMSG vendor/nix/src/errno.rs /^ ENOMSG = libc::ENOMSG,$/;" e enum:consts::Errno +ENONET vendor/nix/src/errno.rs /^ ENONET = libc::ENONET,$/;" e enum:consts::Errno +ENOPKG vendor/nix/src/errno.rs /^ ENOPKG = libc::ENOPKG,$/;" e enum:consts::Errno +ENOPOLICY vendor/nix/src/errno.rs /^ ENOPOLICY = libc::ENOPOLICY,$/;" e enum:consts::Errno +ENOPROTOOPT vendor/nix/src/errno.rs /^ ENOPROTOOPT = libc::ENOPROTOOPT,$/;" e enum:consts::Errno +ENOSPC vendor/nix/src/errno.rs /^ ENOSPC = libc::ENOSPC,$/;" e enum:consts::Errno +ENOSR vendor/nix/src/errno.rs /^ ENOSR = libc::ENOSR,$/;" e enum:consts::Errno +ENOSTR vendor/nix/src/errno.rs /^ ENOSTR = libc::ENOSTR,$/;" e enum:consts::Errno +ENOSYS vendor/nix/src/errno.rs /^ ENOSYS = libc::ENOSYS,$/;" e enum:consts::Errno +ENOTACTIVE vendor/nix/src/errno.rs /^ ENOTACTIVE = libc::ENOTACTIVE,$/;" e enum:consts::Errno +ENOTBLK vendor/nix/src/errno.rs /^ ENOTBLK = libc::ENOTBLK,$/;" e enum:consts::Errno +ENOTCAPABLE vendor/nix/src/errno.rs /^ ENOTCAPABLE = libc::ENOTCAPABLE,$/;" e enum:consts::Errno +ENOTCONN vendor/nix/src/errno.rs /^ ENOTCONN = libc::ENOTCONN,$/;" e enum:consts::Errno +ENOTDIR vendor/nix/src/errno.rs /^ ENOTDIR = libc::ENOTDIR,$/;" e enum:consts::Errno +ENOTEMPTY vendor/nix/src/errno.rs /^ ENOTEMPTY = libc::ENOTEMPTY,$/;" e enum:consts::Errno +ENOTNAM vendor/nix/src/errno.rs /^ ENOTNAM = libc::ENOTNAM,$/;" e enum:consts::Errno +ENOTRECOVERABLE vendor/nix/src/errno.rs /^ ENOTRECOVERABLE = libc::ENOTRECOVERABLE,$/;" e enum:consts::Errno +ENOTSOCK vendor/nix/src/errno.rs /^ ENOTSOCK = libc::ENOTSOCK,$/;" e enum:consts::Errno +ENOTSUP vendor/nix/src/errno.rs /^ ENOTSUP = libc::ENOTSUP,$/;" e enum:consts::Errno +ENOTTY vendor/nix/src/errno.rs /^ ENOTTY = libc::ENOTTY,$/;" e enum:consts::Errno +ENOTUNIQ vendor/nix/src/errno.rs /^ ENOTUNIQ = libc::ENOTUNIQ,$/;" e enum:consts::Errno +ENTRY vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type ENTRY = entry;$/;" t +ENTRY vendor/libc/src/unix/haiku/mod.rs /^pub type ENTRY = entry;$/;" t +ENXIO vendor/nix/src/errno.rs /^ ENXIO = libc::ENXIO,$/;" e enum:consts::Errno +EOF support/config.guess /^ sed 's\/^ \/\/' << EOF >$dummy.c$/;" h +EOF support/config.guess /^ sed 's\/^ \/\/' << EOF >$dummy.c$/;" h +EOF support/config.guess /^ cat <<-EOF > $dummy.c$/;" h +EOF support/config.guess /^ sed 's\/^ \/\/' << EOF >$dummy.c$/;" h +EOF support/config.guess /^ sed 's\/^ \/\/' << EOF >$dummy.c$/;" h +EOF support/config.guess /^cat >&2 < $TDIR\/rlvers.c << EOF$/;" h +EOF support/texi2dvi /^ cat > openout.tex < "$TEMPFILE1" <&2$/;" h +EOPNOTSUPP vendor/nix/src/errno.rs /^ EOPNOTSUPP = libc::EOPNOTSUPP,$/;" e enum:consts::Errno +EOVERFLOW vendor/nix/src/errno.rs /^ EOVERFLOW = libc::EOVERFLOW,$/;" e enum:consts::Errno +EOWNERDEAD vendor/nix/src/errno.rs /^ EOWNERDEAD = libc::EOWNERDEAD,$/;" e enum:consts::Errno +EPERM vendor/nix/src/errno.rs /^ EPERM = libc::EPERM,$/;" e enum:consts::Errno +EPFNOSUPPORT vendor/nix/src/errno.rs /^ EPFNOSUPPORT = libc::EPFNOSUPPORT,$/;" e enum:consts::Errno +EPIPE vendor/nix/src/errno.rs /^ EPIPE = libc::EPIPE,$/;" e enum:consts::Errno +EPOCH_YEAR lib/sh/mktime.c /^#define EPOCH_YEAR /;" d file: +EPROCLIM vendor/nix/src/errno.rs /^ EPROCLIM = libc::EPROCLIM,$/;" e enum:consts::Errno +EPROCUNAVAIL vendor/nix/src/errno.rs /^ EPROCUNAVAIL = libc::EPROCUNAVAIL,$/;" e enum:consts::Errno +EPROGMISMATCH vendor/nix/src/errno.rs /^ EPROGMISMATCH = libc::EPROGMISMATCH,$/;" e enum:consts::Errno +EPROGUNAVAIL vendor/nix/src/errno.rs /^ EPROGUNAVAIL = libc::EPROGUNAVAIL,$/;" e enum:consts::Errno +EPROTO vendor/nix/src/errno.rs /^ EPROTO = libc::EPROTO,$/;" e enum:consts::Errno +EPROTONOSUPPORT vendor/nix/src/errno.rs /^ EPROTONOSUPPORT = libc::EPROTONOSUPPORT,$/;" e enum:consts::Errno +EPROTOTYPE vendor/nix/src/errno.rs /^ EPROTOTYPE = libc::EPROTOTYPE,$/;" e enum:consts::Errno +EPWROFF vendor/nix/src/errno.rs /^ EPWROFF = libc::EPWROFF,$/;" e enum:consts::Errno +EQ expr.c /^#define EQ /;" d file: +EQ test.c /^#define EQ /;" d file: +EQEQ expr.c /^#define EQEQ /;" d file: +EQFULL vendor/nix/src/errno.rs /^ EQFULL = libc::EQFULL,$/;" e enum:consts::Errno +EQUOP2 lib/intl/plural.c /^ EQUOP2 = 258,$/;" e enum:yytokentype file: +EQUOP2 lib/intl/plural.c /^#define EQUOP2 /;" d file: +ERANGE vendor/nix/src/errno.rs /^ ERANGE = libc::ERANGE,$/;" e enum:consts::Errno +EREMCHG vendor/nix/src/errno.rs /^ EREMCHG = libc::EREMCHG,$/;" e enum:consts::Errno +EREMOTE vendor/nix/src/errno.rs /^ EREMOTE = libc::EREMOTE,$/;" e enum:consts::Errno +EREMOTEIO vendor/nix/src/errno.rs /^ EREMOTEIO = libc::EREMOTEIO,$/;" e enum:consts::Errno +ERESTART vendor/nix/src/errno.rs /^ ERESTART = libc::ERESTART,$/;" e enum:consts::Errno +ERFKILL vendor/nix/src/errno.rs /^ ERFKILL = libc::ERFKILL,$/;" e enum:consts::Errno +EROFS vendor/nix/src/errno.rs /^ EROFS = libc::EROFS,$/;" e enum:consts::Errno +ERPCMISMATCH vendor/nix/src/errno.rs /^ ERPCMISMATCH = libc::ERPCMISMATCH,$/;" e enum:consts::Errno +ERREXIT bashjmp.h /^#define ERREXIT /;" d +ERROR_TRAP trap.h /^#define ERROR_TRAP /;" d +ERR_ASSERT_FAILED lib/malloc/malloc.c /^#define ERR_ASSERT_FAILED /;" d file: +ERR_DUPFREE lib/malloc/malloc.c /^#define ERR_DUPFREE /;" d file: +ERR_UNALLOC lib/malloc/malloc.c /^#define ERR_UNALLOC /;" d file: +ERR_UNDERFLOW lib/malloc/malloc.c /^#define ERR_UNDERFLOW /;" d file: +ESC lib/readline/chardefs.h /^#define ESC /;" d +ESC lib/sh/strtrans.c /^#define ESC /;" d file: +ESHLIBVERS vendor/nix/src/errno.rs /^ ESHLIBVERS = libc::ESHLIBVERS,$/;" e enum:consts::Errno +ESHUTDOWN vendor/nix/src/errno.rs /^ ESHUTDOWN = libc::ESHUTDOWN,$/;" e enum:consts::Errno +ESOCKTNOSUPPORT vendor/nix/src/errno.rs /^ ESOCKTNOSUPPORT = libc::ESOCKTNOSUPPORT,$/;" e enum:consts::Errno +ESPIPE vendor/nix/src/errno.rs /^ ESPIPE = libc::ESPIPE,$/;" e enum:consts::Errno +ESRCH vendor/nix/src/errno.rs /^ ESRCH = libc::ESRCH,$/;" e enum:consts::Errno +ESRMNT vendor/nix/src/errno.rs /^ ESRMNT = libc::ESRMNT,$/;" e enum:consts::Errno +ESTALE vendor/nix/src/errno.rs /^ ESTALE = libc::ESTALE,$/;" e enum:consts::Errno +ESTRPIPE vendor/nix/src/errno.rs /^ ESTRPIPE = libc::ESTRPIPE,$/;" e enum:consts::Errno +ETAGS lib/readline/Makefile.in /^ETAGS = etags -tw$/;" m +ETIME vendor/nix/src/errno.rs /^ ETIME = libc::ETIME,$/;" e enum:consts::Errno +ETIMEDOUT vendor/nix/src/errno.rs /^ ETIMEDOUT = libc::ETIMEDOUT,$/;" e enum:consts::Errno +ETOOMANYREFS vendor/nix/src/errno.rs /^ ETOOMANYREFS = libc::ETOOMANYREFS,$/;" e enum:consts::Errno +ETXTBSY vendor/nix/src/errno.rs /^ ETXTBSY = libc::ETXTBSY,$/;" e enum:consts::Errno +EUCLEAN vendor/nix/src/errno.rs /^ EUCLEAN = libc::EUCLEAN,$/;" e enum:consts::Errno +EUNATCH vendor/nix/src/errno.rs /^ EUNATCH = libc::EUNATCH,$/;" e enum:consts::Errno +EUSERS vendor/nix/src/errno.rs /^ EUSERS = libc::EUSERS,$/;" e enum:consts::Errno +EVALNEST_MAX config-top.h /^#define EVALNEST_MAX /;" d +EVENT_NOT_FOUND lib/readline/histlib.h /^#define EVENT_NOT_FOUND /;" d +EVT_HANDLE vendor/winapi/src/um/winevt.rs /^pub type EVT_HANDLE = HANDLE;$/;" t +EVT_OBJECT_ARRAY_PROPERTY_HANDLE vendor/winapi/src/um/winevt.rs /^pub type EVT_OBJECT_ARRAY_PROPERTY_HANDLE = HANDLE;$/;" t +EXCLUDE_DIRS vendor/syn/tests/repo/mod.rs /^static EXCLUDE_DIRS: &[&str] = &[$/;" v +EXCLUDE_FILES vendor/syn/tests/repo/mod.rs /^static EXCLUDE_FILES: &[&str] = &[$/;" v +EXDEV vendor/nix/src/errno.rs /^ EXDEV = libc::EXDEV,$/;" e enum:consts::Errno +EXECUTABLES lib/readline/examples/Makefile /^EXECUTABLES = fileman rltest rl$/;" m +EXECUTION_FAILURE builtins_rust/common/src/lib.rs /^macro_rules! EXECUTION_FAILURE {$/;" M +EXECUTION_FAILURE shell.h /^#define EXECUTION_FAILURE /;" d +EXECUTION_STATE vendor/winapi/src/um/winnt.rs /^pub type EXECUTION_STATE = DWORD;$/;" t +EXECUTION_SUCCESS builtins_rust/common/src/lib.rs /^macro_rules! EXECUTION_SUCCESS {$/;" M +EXECUTION_SUCCESS shell.h /^#define EXECUTION_SUCCESS /;" d +EXEEXT Makefile.in /^EXEEXT = @EXEEXT@$/;" m +EXEEXT builtins/Makefile.in /^EXEEXT = @EXEEXT@$/;" m +EXEEXT support/Makefile.in /^EXEEXT = @EXEEXT@$/;" m +EXFULL vendor/nix/src/errno.rs /^ EXFULL = libc::EXFULL,$/;" e enum:consts::Errno +EXITPROG bashjmp.h /^#define EXITPROG /;" d +EXITPROG builtins_rust/declare/src/lib.rs /^macro_rules! EXITPROG {$/;" M +EXITPROG builtins_rust/exit/src/lib.rs /^macro_rules! EXITPROG {$/;" M +EXITPROG builtins_rust/source/src/lib.rs /^macro_rules! EXITPROG {$/;" M +EXIT_CASE execute_cmd.c /^#define EXIT_CASE(/;" d file: +EXIT_FAILURE builtins_rust/help/src/lib.rs /^macro_rules! EXIT_FAILURE {$/;" M +EXIT_FAILURE support/man2html.c /^#define EXIT_FAILURE /;" d file: +EXIT_SUCCESS support/man2html.c /^#define EXIT_SUCCESS /;" d file: +EXIT_TRAP trap.h /^#define EXIT_TRAP /;" d +EXIT_USAGE support/man2html.c /^#define EXIT_USAGE /;" d file: +EXPCHAR print_cmd.c /^#define EXPCHAR(/;" d file: +EXPCHAR r_print_cmd/src/lib.rs /^macro_rules! EXPCHAR{$/;" M +EXPLICIT_ACCESSA vendor/winapi/src/um/accctrl.rs /^pub type EXPLICIT_ACCESSA = EXPLICIT_ACCESS_A;$/;" t +EXPLICIT_ACCESSW vendor/winapi/src/um/accctrl.rs /^pub type EXPLICIT_ACCESSW = EXPLICIT_ACCESS_W;$/;" t +EXPR_CONTEXT expr.c /^} EXPR_CONTEXT;$/;" t typeref:struct:__anonfc32de750108 file: +EXPR_STACK_GROW_SIZE expr.c /^#define EXPR_STACK_GROW_SIZE /;" d file: +EXP_CHAR subst.c /^#define EXP_CHAR(/;" d file: +EXP_EXPANDED externs.h /^#define EXP_EXPANDED /;" d +EXP_HIGHEST expr.c /^#define EXP_HIGHEST /;" d file: +EXTENDED_GLOB configure.ac /^AC_DEFINE(EXTENDED_GLOB)$/;" d +EXTGLOB_DEFAULT configure.ac /^AC_DEFINE(EXTGLOB_DEFAULT, 0)$/;" d +EXTGLOB_DEFAULT configure.ac /^AC_DEFINE(EXTGLOB_DEFAULT, 1)$/;" d +EXTGLOB_PATTERN_P lib/glob/gm_loop.c /^EXTGLOB_PATTERN_P (pat)$/;" f +EXTGLOB_PATTERN_P lib/glob/gmisc.c /^#define EXTGLOB_PATTERN_P /;" d file: +EXTMATCH lib/glob/sm_loop.c /^EXTMATCH (xc, s, se, p, pe, flags)$/;" f file: +EXTMATCH lib/glob/smatch.c /^#define EXTMATCH /;" d file: +EXTRACT_PLURAL_EXPRESSION lib/intl/plural-exp.c /^EXTRACT_PLURAL_EXPRESSION (nullentry, pluralp, npluralsp)$/;" f +EXTRACT_PLURAL_EXPRESSION lib/intl/plural-exp.h /^# define EXTRACT_PLURAL_EXPRESSION /;" d +EX_BADASSIGN builtins_rust/common/src/shell.rs /^pub static EX_BADASSIGN :i32 = 260; \/* variable assignment error *\/$/;" v +EX_BADASSIGN builtins_rust/declare/src/lib.rs /^macro_rules! EX_BADASSIGN {$/;" M +EX_BADASSIGN shell.h /^#define EX_BADASSIGN /;" d +EX_BADSYNTAX builtins_rust/common/src/shell.rs /^pub static EX_BADSYNTAX:i32 = 257; \/* shell syntax error *\/$/;" v +EX_BADSYNTAX shell.h /^#define EX_BADSYNTAX /;" d +EX_BADUSAGE builtins_rust/common/src/lib.rs /^macro_rules! EX_BADUSAGE {$/;" M +EX_BADUSAGE builtins_rust/common/src/shell.rs /^pub static EX_BADUSAGE:i32 = 2;$/;" v +EX_BADUSAGE shell.h /^#define EX_BADUSAGE /;" d +EX_BINARY_FILE builtins_rust/common/src/shell.rs /^pub static EX_BINARY_FILE :i32 = 126;$/;" v +EX_BINARY_FILE shell.h /^#define EX_BINARY_FILE /;" d +EX_DISKFALLBACK builtins_rust/common/src/shell.rs /^pub static EX_DISKFALLBACK:i32 = 262; \/* fall back to disk command from builtin *\/$/;" v +EX_DISKFALLBACK shell.h /^#define EX_DISKFALLBACK /;" d +EX_EXPFAIL builtins_rust/common/src/shell.rs /^pub static EX_EXPFAIL:i32= 261;\/* word expansion failed *\/$/;" v +EX_EXPFAIL shell.h /^#define EX_EXPFAIL /;" d +EX_MISCERROR builtins_rust/common/src/shell.rs /^pub static EX_MISCERROR:i32 = 2;$/;" v +EX_MISCERROR builtins_rust/getopts/src/lib.rs /^macro_rules! EX_MISCERROR {$/;" M +EX_MISCERROR shell.h /^#define EX_MISCERROR /;" d +EX_NOEXEC builtins_rust/common/src/shell.rs /^pub static EX_NOEXEC: i32 = 126;$/;" v +EX_NOEXEC shell.h /^#define EX_NOEXEC /;" d +EX_NOINPUT builtins_rust/common/src/shell.rs /^pub static EX_NOINPUT:i32 = 126;$/;" v +EX_NOINPUT shell.h /^#define EX_NOINPUT /;" d +EX_NOTFOUND builtins_rust/common/src/shell.rs /^pub static EX_NOTFOUND:i32 = 127;$/;" v +EX_NOTFOUND shell.h /^#define EX_NOTFOUND /;" d +EX_REDIRFAIL builtins_rust/common/src/shell.rs /^pub static EX_REDIRFAIL:i32 = 259; \/* redirection failed *\/$/;" v +EX_REDIRFAIL shell.h /^#define EX_REDIRFAIL /;" d +EX_RETRYFAIL builtins_rust/common/src/shell.rs /^pub static EX_RETRYFAIL:i32 = 124;$/;" v +EX_RETRYFAIL shell.h /^#define EX_RETRYFAIL /;" d +EX_SHERRBASE builtins_rust/common/src/shell.rs /^pub static EX_SHERRBASE:i32 = 256; \/* all special error values are > this. *\/$/;" v +EX_SHERRBASE shell.h /^#define EX_SHERRBASE /;" d +EX_SUCCESS builtins_rust/common/src/lib.rs /^pub static EX_SUCCESS: i32 = 0;$/;" v +EX_USAGE builtins_rust/common/src/lib.rs /^pub static EX_USAGE: i32 = 258;$/;" v +EX_USAGE builtins_rust/help/src/lib.rs /^macro_rules! EX_USAGE {$/;" M +EX_USAGE shell.h /^#define EX_USAGE /;" d +EX_WEXPCOMSUB builtins_rust/common/src/shell.rs /^pub static EX_WEXPCOMSUB:i32 = 125;$/;" v +EX_WEXPCOMSUB shell.h /^#define EX_WEXPCOMSUB /;" d +EapAttribute vendor/winapi/src/um/eaptypes.rs /^pub type EapAttribute = EAP_ATTRIBUTE;$/;" t +EapAttributeType vendor/winapi/src/um/eaptypes.rs /^pub type EapAttributeType = EAP_ATTRIBUTE_TYPE;$/;" t +EapAttributes vendor/winapi/src/um/eaptypes.rs /^pub type EapAttributes = EAP_ATTRIBUTES;$/;" t +EchoCmd builtins_rust/exec_cmd/src/lib.rs /^ EchoCmd,$/;" e enum:CMDType +EchoComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for EchoComand {$/;" c +EchoComand builtins_rust/exec_cmd/src/lib.rs /^struct EchoComand;$/;" s +Econet vendor/nix/src/sys/socket/addr.rs /^ Econet = libc::AF_ECONET,$/;" e enum:AddressFamily +Eflag builtins_rust/complete/src/lib.rs /^ Eflag: c_int,$/;" m struct:_optflags +Either vendor/futures-util/src/future/either.rs /^ impl AsyncBufRead for Either$/;" c module:if_std +Either vendor/futures-util/src/future/either.rs /^ impl AsyncRead for Either$/;" c module:if_std +Either vendor/futures-util/src/future/either.rs /^ impl AsyncSeek for Either$/;" c module:if_std +Either vendor/futures-util/src/future/either.rs /^ impl AsyncWrite for Either$/;" c module:if_std +Either vendor/futures-util/src/future/either.rs /^impl Sink for Either$/;" c +Either vendor/futures-util/src/future/either.rs /^impl Either<(A, T), (B, T)> {$/;" c +Either vendor/futures-util/src/future/either.rs /^impl Either<(T, A), (T, B)> {$/;" c +Either vendor/futures-util/src/future/either.rs /^impl Either {$/;" c +Either vendor/futures-util/src/future/either.rs /^impl FusedFuture for Either$/;" c +Either vendor/futures-util/src/future/either.rs /^impl FusedStream for Either$/;" c +Either vendor/futures-util/src/future/either.rs /^impl Future for Either$/;" c +Either vendor/futures-util/src/future/either.rs /^impl Stream for Either$/;" c +Either vendor/futures-util/src/future/either.rs /^impl Either {$/;" c +Either vendor/futures-util/src/future/either.rs /^pub enum Either {$/;" g +Elf32_Addr vendor/libc/src/fuchsia/mod.rs /^pub type Elf32_Addr = u32;$/;" t +Elf32_Addr vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf32_Addr = u32;$/;" t +Elf32_Addr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf32_Addr = u32;$/;" t +Elf32_Addr vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf32_Addr = u32;$/;" t +Elf32_Addr vendor/libc/src/unix/haiku/mod.rs /^pub type Elf32_Addr = u32;$/;" t +Elf32_Addr vendor/libc/src/unix/linux_like/android/mod.rs /^pub type Elf32_Addr = u32;$/;" t +Elf32_Addr vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type Elf32_Addr = u32;$/;" t +Elf32_Addr vendor/libc/src/unix/solarish/x86.rs /^pub type Elf32_Addr = ::c_ulong;$/;" t +Elf32_Half vendor/libc/src/fuchsia/mod.rs /^pub type Elf32_Half = u16;$/;" t +Elf32_Half vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf32_Half = u16;$/;" t +Elf32_Half vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf32_Half = u16;$/;" t +Elf32_Half vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf32_Half = u16;$/;" t +Elf32_Half vendor/libc/src/unix/haiku/mod.rs /^pub type Elf32_Half = u16;$/;" t +Elf32_Half vendor/libc/src/unix/linux_like/android/mod.rs /^pub type Elf32_Half = u16;$/;" t +Elf32_Half vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type Elf32_Half = u16;$/;" t +Elf32_Half vendor/libc/src/unix/solarish/x86.rs /^pub type Elf32_Half = ::c_ushort;$/;" t +Elf32_Lword vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf32_Lword = u64;$/;" t +Elf32_Lword vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf32_Lword = u64;$/;" t +Elf32_Lword vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf32_Lword = u64;$/;" t +Elf32_Lword vendor/libc/src/unix/solarish/x86.rs /^pub type Elf32_Lword = ::c_ulonglong;$/;" t +Elf32_Off vendor/libc/src/fuchsia/mod.rs /^pub type Elf32_Off = u32;$/;" t +Elf32_Off vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf32_Off = u32;$/;" t +Elf32_Off vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf32_Off = u32;$/;" t +Elf32_Off vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf32_Off = u32;$/;" t +Elf32_Off vendor/libc/src/unix/haiku/mod.rs /^pub type Elf32_Off = u32;$/;" t +Elf32_Off vendor/libc/src/unix/linux_like/android/mod.rs /^pub type Elf32_Off = u32;$/;" t +Elf32_Off vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type Elf32_Off = u32;$/;" t +Elf32_Off vendor/libc/src/unix/solarish/x86.rs /^pub type Elf32_Off = ::c_ulong;$/;" t +Elf32_Phdr vendor/libc/src/unix/solarish/x86.rs /^pub type Elf32_Phdr = __c_anonymous_Elf32_Phdr;$/;" t +Elf32_Section vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type Elf32_Section = u16;$/;" t +Elf32_Sword vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf32_Sword = i32;$/;" t +Elf32_Sword vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf32_Sword = i32;$/;" t +Elf32_Sword vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf32_Sword = i32;$/;" t +Elf32_Sword vendor/libc/src/unix/haiku/mod.rs /^pub type Elf32_Sword = i32;$/;" t +Elf32_Sword vendor/libc/src/unix/solarish/x86.rs /^pub type Elf32_Sword = ::c_long;$/;" t +Elf32_Word vendor/libc/src/fuchsia/mod.rs /^pub type Elf32_Word = u32;$/;" t +Elf32_Word vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf32_Word = u32;$/;" t +Elf32_Word vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf32_Word = u32;$/;" t +Elf32_Word vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf32_Word = u32;$/;" t +Elf32_Word vendor/libc/src/unix/haiku/mod.rs /^pub type Elf32_Word = u32;$/;" t +Elf32_Word vendor/libc/src/unix/linux_like/android/mod.rs /^pub type Elf32_Word = u32;$/;" t +Elf32_Word vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type Elf32_Word = u32;$/;" t +Elf32_Word vendor/libc/src/unix/solarish/x86.rs /^pub type Elf32_Word = ::c_ulong;$/;" t +Elf64_Addr vendor/libc/src/fuchsia/mod.rs /^pub type Elf64_Addr = u64;$/;" t +Elf64_Addr vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf64_Addr = u64;$/;" t +Elf64_Addr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf64_Addr = u64;$/;" t +Elf64_Addr vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf64_Addr = u64;$/;" t +Elf64_Addr vendor/libc/src/unix/haiku/mod.rs /^pub type Elf64_Addr = u64;$/;" t +Elf64_Addr vendor/libc/src/unix/linux_like/android/mod.rs /^pub type Elf64_Addr = u64;$/;" t +Elf64_Addr vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type Elf64_Addr = u64;$/;" t +Elf64_Addr vendor/libc/src/unix/solarish/x86_64.rs /^pub type Elf64_Addr = ::c_ulong;$/;" t +Elf64_Half vendor/libc/src/fuchsia/mod.rs /^pub type Elf64_Half = u16;$/;" t +Elf64_Half vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf64_Half = u16;$/;" t +Elf64_Half vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf64_Half = u16;$/;" t +Elf64_Half vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf64_Half = u16;$/;" t +Elf64_Half vendor/libc/src/unix/haiku/mod.rs /^pub type Elf64_Half = u16;$/;" t +Elf64_Half vendor/libc/src/unix/linux_like/android/mod.rs /^pub type Elf64_Half = u16;$/;" t +Elf64_Half vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type Elf64_Half = u16;$/;" t +Elf64_Half vendor/libc/src/unix/solarish/x86_64.rs /^pub type Elf64_Half = ::c_ushort;$/;" t +Elf64_Lword vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf64_Lword = u64;$/;" t +Elf64_Lword vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf64_Lword = u64;$/;" t +Elf64_Lword vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf64_Lword = u64;$/;" t +Elf64_Lword vendor/libc/src/unix/solarish/x86_64.rs /^pub type Elf64_Lword = ::c_ulong;$/;" t +Elf64_Off vendor/libc/src/fuchsia/mod.rs /^pub type Elf64_Off = u64;$/;" t +Elf64_Off vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf64_Off = u64;$/;" t +Elf64_Off vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf64_Off = u64;$/;" t +Elf64_Off vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf64_Off = u64;$/;" t +Elf64_Off vendor/libc/src/unix/haiku/mod.rs /^pub type Elf64_Off = u64;$/;" t +Elf64_Off vendor/libc/src/unix/linux_like/android/mod.rs /^pub type Elf64_Off = u64;$/;" t +Elf64_Off vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type Elf64_Off = u64;$/;" t +Elf64_Off vendor/libc/src/unix/solarish/x86_64.rs /^pub type Elf64_Off = ::c_ulong;$/;" t +Elf64_Phdr vendor/libc/src/unix/solarish/x86_64.rs /^pub type Elf64_Phdr = __c_anonymous_Elf64_Phdr;$/;" t +Elf64_Section vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type Elf64_Section = u16;$/;" t +Elf64_Sword vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf64_Sword = i32;$/;" t +Elf64_Sword vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf64_Sword = i32;$/;" t +Elf64_Sword vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf64_Sword = i32;$/;" t +Elf64_Sword vendor/libc/src/unix/haiku/mod.rs /^pub type Elf64_Sword = i32;$/;" t +Elf64_Sword vendor/libc/src/unix/solarish/x86_64.rs /^pub type Elf64_Sword = ::c_int;$/;" t +Elf64_Sxword vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf64_Sxword = i64;$/;" t +Elf64_Sxword vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf64_Sxword = i64;$/;" t +Elf64_Sxword vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf64_Sxword = i64;$/;" t +Elf64_Sxword vendor/libc/src/unix/haiku/mod.rs /^pub type Elf64_Sxword = i64;$/;" t +Elf64_Sxword vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type Elf64_Sxword = i64;$/;" t +Elf64_Sxword vendor/libc/src/unix/solarish/x86_64.rs /^pub type Elf64_Sxword = ::c_long;$/;" t +Elf64_Word vendor/libc/src/fuchsia/mod.rs /^pub type Elf64_Word = u32;$/;" t +Elf64_Word vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf64_Word = u32;$/;" t +Elf64_Word vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf64_Word = u32;$/;" t +Elf64_Word vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf64_Word = u32;$/;" t +Elf64_Word vendor/libc/src/unix/haiku/mod.rs /^pub type Elf64_Word = u32;$/;" t +Elf64_Word vendor/libc/src/unix/linux_like/android/mod.rs /^pub type Elf64_Word = u32;$/;" t +Elf64_Word vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type Elf64_Word = u32;$/;" t +Elf64_Word vendor/libc/src/unix/solarish/x86_64.rs /^pub type Elf64_Word = ::c_uint;$/;" t +Elf64_Xword vendor/libc/src/fuchsia/mod.rs /^pub type Elf64_Xword = u64;$/;" t +Elf64_Xword vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type Elf64_Xword = u64;$/;" t +Elf64_Xword vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type Elf64_Xword = u64;$/;" t +Elf64_Xword vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type Elf64_Xword = u64;$/;" t +Elf64_Xword vendor/libc/src/unix/haiku/mod.rs /^pub type Elf64_Xword = u64;$/;" t +Elf64_Xword vendor/libc/src/unix/linux_like/android/mod.rs /^pub type Elf64_Xword = u64;$/;" t +Elf64_Xword vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type Elf64_Xword = u64;$/;" t +Elf64_Xword vendor/libc/src/unix/solarish/x86_64.rs /^pub type Elf64_Xword = ::c_ulong;$/;" t +Elf_Addr vendor/libc/src/unix/haiku/b32.rs /^pub type Elf_Addr = ::Elf32_Addr;$/;" t +Elf_Addr vendor/libc/src/unix/haiku/b64.rs /^pub type Elf_Addr = ::Elf64_Addr;$/;" t +Elf_Half vendor/libc/src/unix/haiku/b32.rs /^pub type Elf_Half = ::Elf32_Half;$/;" t +Elf_Half vendor/libc/src/unix/haiku/b64.rs /^pub type Elf_Half = ::Elf64_Half;$/;" t +Elf_Phdr vendor/libc/src/unix/haiku/b32.rs /^pub type Elf_Phdr = ::Elf32_Phdr;$/;" t +Elf_Phdr vendor/libc/src/unix/haiku/b64.rs /^pub type Elf_Phdr = ::Elf64_Phdr;$/;" t +Elided lifetimes vendor/async-trait/README.md /^## Elided lifetimes$/;" s chapter:Async trait methods +Ellipse vendor/winapi/src/um/wingdi.rs /^ pub fn Ellipse($/;" f +Embedding Visualizers vendor/smallvec/debug_metadata/README.md /^### Embedding Visualizers$/;" S section:Debugger Visualizers +Empty vendor/futures-channel/src/mpsc/queue.rs /^ Empty,$/;" e enum:PopResult +Empty vendor/futures-util/src/io/empty.rs /^impl AsyncBufRead for Empty {$/;" c +Empty vendor/futures-util/src/io/empty.rs /^impl AsyncRead for Empty {$/;" c +Empty vendor/futures-util/src/io/empty.rs /^impl fmt::Debug for Empty {$/;" c +Empty vendor/futures-util/src/io/empty.rs /^pub struct Empty {$/;" s +Empty vendor/futures-util/src/stream/empty.rs /^impl Clone for Empty {$/;" c +Empty vendor/futures-util/src/stream/empty.rs /^impl FusedStream for Empty {$/;" c +Empty vendor/futures-util/src/stream/empty.rs /^impl Stream for Empty {$/;" c +Empty vendor/futures-util/src/stream/empty.rs /^impl Unpin for Empty {}$/;" c +Empty vendor/futures-util/src/stream/empty.rs /^pub struct Empty {$/;" s +Empty vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^ Empty,$/;" e enum:Dequeue +Empty vendor/memchr/src/memmem/mod.rs /^ Empty,$/;" e enum:SearcherKind +Empty vendor/memchr/src/memmem/mod.rs /^ Empty,$/;" e enum:SearcherRevKind +EmptyClipboard vendor/winapi/src/um/winuser.rs /^ pub fn EmptyClipboard() -> BOOL;$/;" f +EmptyWorkingSet vendor/winapi/src/um/psapi.rs /^ pub fn EmptyWorkingSet($/;" f +EnableCmd builtins_rust/exec_cmd/src/lib.rs /^ EnableCmd,$/;" e enum:CMDType +EnableComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for EnableComand {$/;" c +EnableComand builtins_rust/exec_cmd/src/lib.rs /^struct EnableComand;$/;" s +EnableMenuItem vendor/winapi/src/um/winuser.rs /^ pub fn EnableMenuItem($/;" f +EnableMouseInPointer vendor/winapi/src/um/winuser.rs /^ pub fn EnableMouseInPointer($/;" f +EnableNonClientDpiScaling vendor/winapi/src/um/winuser.rs /^ pub fn EnableNonClientDpiScaling($/;" f +EnableRouter vendor/winapi/src/um/iphlpapi.rs /^ pub fn EnableRouter($/;" f +EnableScrollBar vendor/winapi/src/um/winuser.rs /^ pub fn EnableScrollBar($/;" f +EnableThemeDialogTexture vendor/winapi/src/um/uxtheme.rs /^ pub fn EnableThemeDialogTexture($/;" f +EnableTheming vendor/winapi/src/um/uxtheme.rs /^ pub fn EnableTheming($/;" f +EnableThreadProfiling vendor/winapi/src/um/winbase.rs /^ pub fn EnableThreadProfiling($/;" f +EnableTrace vendor/winapi/src/shared/evntrace.rs /^ pub fn EnableTrace($/;" f +EnableTraceEx vendor/winapi/src/shared/evntrace.rs /^ pub fn EnableTraceEx($/;" f +EnableTraceEx2 vendor/winapi/src/shared/evntrace.rs /^ pub fn EnableTraceEx2($/;" f +EnableWindow vendor/winapi/src/um/winuser.rs /^ pub fn EnableWindow($/;" f +EncodePointer vendor/winapi/src/um/utilapiset.rs /^ pub fn EncodePointer($/;" f +EncodeSystemPointer vendor/winapi/src/um/utilapiset.rs /^ pub fn EncodeSystemPointer($/;" f +EncryptMessage vendor/winapi/src/shared/sspi.rs /^ pub fn EncryptMessage($/;" f +EncryptionDisable vendor/winapi/src/um/winefs.rs /^ pub fn EncryptionDisable($/;" f +End vendor/syn/src/buffer.rs /^ End,$/;" e enum:Entry +End vendor/syn/src/punctuated.rs /^ End(T),$/;" e enum:Pair +EndBufferedAnimation vendor/winapi/src/um/uxtheme.rs /^ pub fn EndBufferedAnimation($/;" f +EndBufferedPaint vendor/winapi/src/um/uxtheme.rs /^ pub fn EndBufferedPaint($/;" f +EndDeferWindowPos vendor/winapi/src/um/winuser.rs /^ pub fn EndDeferWindowPos($/;" f +EndDialog vendor/winapi/src/um/winuser.rs /^ pub fn EndDialog($/;" f +EndDoc vendor/winapi/src/um/wingdi.rs /^ pub fn EndDoc($/;" f +EndDocPrinter vendor/winapi/src/um/winspool.rs /^ pub fn EndDocPrinter($/;" f +EndMenu vendor/winapi/src/um/winuser.rs /^ pub fn EndMenu($/;" f +EndPage vendor/winapi/src/um/wingdi.rs /^ pub fn EndPage($/;" f +EndPagePrinter vendor/winapi/src/um/winspool.rs /^ pub fn EndPagePrinter($/;" f +EndPaint vendor/winapi/src/um/winuser.rs /^ pub fn EndPaint($/;" f +EndPanningFeedback vendor/winapi/src/um/uxtheme.rs /^ pub fn EndPanningFeedback($/;" f +EndPath vendor/winapi/src/um/wingdi.rs /^ pub fn EndPath($/;" f +EndTask vendor/winapi/src/um/winuser.rs /^ pub fn EndTask($/;" f +EndUpdateResourceA vendor/winapi/src/um/winbase.rs /^ pub fn EndUpdateResourceA($/;" f +EndUpdateResourceW vendor/winapi/src/um/winbase.rs /^ pub fn EndUpdateResourceW($/;" f +Enforcement vendor/bitflags/CODE_OF_CONDUCT.md /^## Enforcement$/;" s chapter:Contributor Covenant Code of Conduct +Enter vendor/futures-executor/src/enter.rs /^impl Drop for Enter {$/;" c +Enter vendor/futures-executor/src/enter.rs /^impl fmt::Debug for Enter {$/;" c +Enter vendor/futures-executor/src/enter.rs /^pub struct Enter {$/;" s +EnterCriticalPolicySection vendor/winapi/src/um/userenv.rs /^ pub fn EnterCriticalPolicySection($/;" f +EnterCriticalSection vendor/winapi/src/um/synchapi.rs /^ pub fn EnterCriticalSection($/;" f +EnterError vendor/futures-executor/src/enter.rs /^impl fmt::Debug for EnterError {$/;" c +EnterError vendor/futures-executor/src/enter.rs /^impl fmt::Display for EnterError {$/;" c +EnterError vendor/futures-executor/src/enter.rs /^impl std::error::Error for EnterError {}$/;" c +EnterError vendor/futures-executor/src/enter.rs /^pub struct EnterError {$/;" s +EnterIndexEntry support/texi2html /^sub EnterIndexEntry$/;" s +EnterSynchronizationBarrier vendor/winapi/src/um/synchapi.rs /^ pub fn EnterSynchronizationBarrier($/;" f +EnterUmsSchedulingMode vendor/winapi/src/um/winbase.rs /^ pub fn EnterUmsSchedulingMode($/;" f +Entry vendor/fluent-bundle/src/entry.rs /^pub enum Entry {$/;" g +Entry vendor/fluent-syntax/src/ast/mod.rs /^pub enum Entry {$/;" g +Entry vendor/nix/src/dir.rs /^impl Entry {$/;" c +Entry vendor/nix/src/dir.rs /^pub struct Entry(dirent);$/;" s +Entry vendor/slab/src/lib.rs /^enum Entry {$/;" g +Entry vendor/syn/src/buffer.rs /^enum Entry {$/;" g +Entry vendor/type-map/src/lib.rs /^ impl<'a, T: 'static + Send + Sync> Entry<'a, T> {$/;" c module:concurrent +Entry vendor/type-map/src/lib.rs /^ pub enum Entry<'a, T> {$/;" g module:concurrent +Entry vendor/type-map/src/lib.rs /^impl<'a, T: 'static> Entry<'a, T> {$/;" c +Entry vendor/type-map/src/lib.rs /^pub enum Entry<'a, T> {$/;" g +EntryKind vendor/fluent-bundle/src/errors.rs /^impl std::fmt::Display for EntryKind {$/;" c +EntryKind vendor/fluent-bundle/src/errors.rs /^pub enum EntryKind {$/;" g +Enum vendor/async-trait/tests/test.rs /^ impl Trait for Enum {$/;" c module:issue81 +Enum vendor/async-trait/tests/test.rs /^ pub enum Enum {$/;" g module:issue81 +Enum vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Enum where$/;" c +Enum vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ impl Enum {$/;" c +Enum vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ impl MustNotImplDrop for Enum {}$/;" c +Enum vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^enum Enum {$/;" g +Enum vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Enum where$/;" c +Enum vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ impl Enum {$/;" c +Enum vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ impl MustNotImplDrop for Enum {}$/;" c +Enum vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^enum Enum {$/;" g +Enum vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Enum where$/;" c +Enum vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ impl Enum {$/;" c +Enum vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ impl MustNotImplDrop for Enum {}$/;" c +Enum vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^enum Enum {$/;" g +Enum vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Enum where$/;" c +Enum vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ impl Enum {$/;" c +Enum vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ impl MustNotImplDrop for Enum {}$/;" c +Enum vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^enum Enum {$/;" g +Enum vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Enum where$/;" c +Enum vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^ impl Enum {}$/;" c +Enum vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^ impl MustNotImplDrop for Enum {}$/;" c +Enum vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^enum Enum {$/;" g +Enum vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Enum where$/;" c +Enum vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ impl Enum {$/;" c +Enum vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ impl MustNotImplDrop for Enum {}$/;" c +Enum vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^enum Enum {$/;" g +Enum vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Enum where$/;" c +Enum vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ impl ::pin_project_lite::__private::Drop for Enum {$/;" c +Enum vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ impl Enum {$/;" c +Enum vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^enum Enum {$/;" g +Enum vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Enum where$/;" c +Enum vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ impl Enum {$/;" c +Enum vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ impl MustNotImplDrop for Enum {}$/;" c +Enum vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^pub enum Enum {$/;" g +Enum vendor/pin-project-lite/tests/test.rs /^ impl Enum {$/;" c function:lifetime_project +Enum vendor/thiserror-impl/src/ast.rs /^ Enum(Enum<'a>),$/;" e enum:Input +Enum vendor/thiserror-impl/src/ast.rs /^impl<'a> Enum<'a> {$/;" c +Enum vendor/thiserror-impl/src/ast.rs /^pub struct Enum<'a> {$/;" s +Enum vendor/thiserror-impl/src/prop.rs /^impl Enum<'_> {$/;" c +Enum vendor/thiserror-impl/src/valid.rs /^impl Enum<'_> {$/;" c +Enum vendor/thiserror/tests/ui/lifetime.rs /^enum Enum<'a> {$/;" g +EnumCalendarInfoA vendor/winapi/src/um/winnls.rs /^ pub fn EnumCalendarInfoA($/;" f +EnumCalendarInfoExA vendor/winapi/src/um/winnls.rs /^ pub fn EnumCalendarInfoExA($/;" f +EnumCalendarInfoExEx vendor/winapi/src/um/winnls.rs /^ pub fn EnumCalendarInfoExEx($/;" f +EnumCalendarInfoExW vendor/winapi/src/um/winnls.rs /^ pub fn EnumCalendarInfoExW($/;" f +EnumCalendarInfoW vendor/winapi/src/um/winnls.rs /^ pub fn EnumCalendarInfoW($/;" f +EnumChildWindows vendor/winapi/src/um/winuser.rs /^ pub fn EnumChildWindows($/;" f +EnumClipboardFormats vendor/winapi/src/um/winuser.rs /^ pub fn EnumClipboardFormats($/;" f +EnumCompound vendor/thiserror/tests/test_generics.rs /^impl Debug for EnumCompound /;" c +EnumCompound vendor/thiserror/tests/test_generics.rs /^pub enum EnumCompound {$/;" g +EnumDateFormatsA vendor/winapi/src/um/winnls.rs /^ pub fn EnumDateFormatsA($/;" f +EnumDateFormatsExA vendor/winapi/src/um/winnls.rs /^ pub fn EnumDateFormatsExA($/;" f +EnumDateFormatsExEx vendor/winapi/src/um/winnls.rs /^ pub fn EnumDateFormatsExEx($/;" f +EnumDateFormatsExW vendor/winapi/src/um/winnls.rs /^ pub fn EnumDateFormatsExW($/;" f +EnumDateFormatsW vendor/winapi/src/um/winnls.rs /^ pub fn EnumDateFormatsW($/;" f +EnumDebugGeneric vendor/thiserror/tests/test_generics.rs /^pub enum EnumDebugGeneric {$/;" g +EnumDependentServicesA vendor/winapi/src/um/winsvc.rs /^ pub fn EnumDependentServicesA($/;" f +EnumDependentServicesW vendor/winapi/src/um/winsvc.rs /^ pub fn EnumDependentServicesW($/;" f +EnumDesktopWindows vendor/winapi/src/um/winuser.rs /^ pub fn EnumDesktopWindows($/;" f +EnumDesktopsA vendor/winapi/src/um/winuser.rs /^ pub fn EnumDesktopsA($/;" f +EnumDesktopsW vendor/winapi/src/um/winuser.rs /^ pub fn EnumDesktopsW($/;" f +EnumDeviceDrivers vendor/winapi/src/um/psapi.rs /^ pub fn EnumDeviceDrivers($/;" f +EnumDirTree vendor/winapi/src/um/dbghelp.rs /^ pub fn EnumDirTree($/;" f +EnumDirTreeW vendor/winapi/src/um/dbghelp.rs /^ pub fn EnumDirTreeW($/;" f +EnumDisplayDevicesA vendor/winapi/src/um/winuser.rs /^ pub fn EnumDisplayDevicesA($/;" f +EnumDisplayDevicesW vendor/winapi/src/um/winuser.rs /^ pub fn EnumDisplayDevicesW($/;" f +EnumDisplayMonitors vendor/winapi/src/um/winuser.rs /^ pub fn EnumDisplayMonitors($/;" f +EnumDisplaySettingsA vendor/winapi/src/um/winuser.rs /^ pub fn EnumDisplaySettingsA($/;" f +EnumDisplaySettingsExA vendor/winapi/src/um/winuser.rs /^ pub fn EnumDisplaySettingsExA($/;" f +EnumDisplaySettingsExW vendor/winapi/src/um/winuser.rs /^ pub fn EnumDisplaySettingsExW($/;" f +EnumDisplaySettingsW vendor/winapi/src/um/winuser.rs /^ pub fn EnumDisplaySettingsW($/;" f +EnumDynamicTimeZoneInformation vendor/winapi/src/um/timezoneapi.rs /^ pub fn EnumDynamicTimeZoneInformation($/;" f +EnumEnhMetaFile vendor/winapi/src/um/wingdi.rs /^ pub fn EnumEnhMetaFile($/;" f +EnumError vendor/thiserror/tests/test_error.rs /^enum EnumError {$/;" g +EnumFontFamiliesA vendor/winapi/src/um/wingdi.rs /^ pub fn EnumFontFamiliesA($/;" f +EnumFontFamiliesExA vendor/winapi/src/um/wingdi.rs /^ pub fn EnumFontFamiliesExA($/;" f +EnumFontFamiliesExW vendor/winapi/src/um/wingdi.rs /^ pub fn EnumFontFamiliesExW($/;" f +EnumFontFamiliesW vendor/winapi/src/um/wingdi.rs /^ pub fn EnumFontFamiliesW($/;" f +EnumFontsA vendor/winapi/src/um/wingdi.rs /^ pub fn EnumFontsA($/;" f +EnumFontsW vendor/winapi/src/um/wingdi.rs /^ pub fn EnumFontsW($/;" f +EnumFormsA vendor/winapi/src/um/winspool.rs /^ pub fn EnumFormsA($/;" f +EnumFormsW vendor/winapi/src/um/winspool.rs /^ pub fn EnumFormsW($/;" f +EnumFromGeneric vendor/thiserror/tests/test_generics.rs /^pub enum EnumFromGeneric {$/;" g +EnumICMProfilesA vendor/winapi/src/um/wingdi.rs /^ pub fn EnumICMProfilesA($/;" f +EnumICMProfilesW vendor/winapi/src/um/wingdi.rs /^ pub fn EnumICMProfilesW($/;" f +EnumJobsA vendor/winapi/src/um/winspool.rs /^ pub fn EnumJobsA($/;" f +EnumJobsW vendor/winapi/src/um/winspool.rs /^ pub fn EnumJobsW($/;" f +EnumLanguageGroupLocalesA vendor/winapi/src/um/winnls.rs /^ pub fn EnumLanguageGroupLocalesA($/;" f +EnumLanguageGroupLocalesW vendor/winapi/src/um/winnls.rs /^ pub fn EnumLanguageGroupLocalesW($/;" f +EnumMetaFile vendor/winapi/src/um/wingdi.rs /^ pub fn EnumMetaFile($/;" f +EnumMonitorsA vendor/winapi/src/um/winspool.rs /^ pub fn EnumMonitorsA($/;" f +EnumMonitorsW vendor/winapi/src/um/winspool.rs /^ pub fn EnumMonitorsW($/;" f +EnumObjects vendor/winapi/src/um/wingdi.rs /^ pub fn EnumObjects($/;" f +EnumPageFilesA vendor/winapi/src/um/psapi.rs /^ pub fn EnumPageFilesA($/;" f +EnumPageFilesW vendor/winapi/src/um/psapi.rs /^ pub fn EnumPageFilesW($/;" f +EnumPathBuf vendor/thiserror/tests/test_path.rs /^enum EnumPathBuf {$/;" g +EnumPortsA vendor/winapi/src/um/winspool.rs /^ pub fn EnumPortsA($/;" f +EnumPortsW vendor/winapi/src/um/winspool.rs /^ pub fn EnumPortsW($/;" f +EnumPrintProcessorDatatypesA vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrintProcessorDatatypesA($/;" f +EnumPrintProcessorDatatypesW vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrintProcessorDatatypesW($/;" f +EnumPrintProcessorsA vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrintProcessorsA($/;" f +EnumPrintProcessorsW vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrintProcessorsW($/;" f +EnumPrinterDataA vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrinterDataA($/;" f +EnumPrinterDataExA vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrinterDataExA($/;" f +EnumPrinterDataExW vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrinterDataExW($/;" f +EnumPrinterDataW vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrinterDataW($/;" f +EnumPrinterDriversA vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrinterDriversA($/;" f +EnumPrinterDriversW vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrinterDriversW($/;" f +EnumPrinterKeyA vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrinterKeyA($/;" f +EnumPrinterKeyW vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrinterKeyW($/;" f +EnumPrintersA vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrintersA($/;" f +EnumPrintersW vendor/winapi/src/um/winspool.rs /^ pub fn EnumPrintersW($/;" f +EnumProcessModules vendor/winapi/src/um/psapi.rs /^ pub fn EnumProcessModules($/;" f +EnumProcessModulesEx vendor/winapi/src/um/psapi.rs /^ pub fn EnumProcessModulesEx($/;" f +EnumProcesses vendor/winapi/src/um/psapi.rs /^ pub fn EnumProcesses($/;" f +EnumProj vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^enum EnumProj<'__pin, T, U>$/;" g +EnumProj vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^enum EnumProj<'__pin, T, U>$/;" g +EnumProj vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^enum EnumProj<'__pin, T, U>$/;" g +EnumProj vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^enum EnumProj<'__pin, T, U>$/;" g +EnumProj vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^pub(crate) enum EnumProj<'__pin, T, U>$/;" g +EnumProjRef vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^enum EnumProjRef<'__pin, T, U>$/;" g +EnumProjRef vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^enum EnumProjRef<'__pin, T, U>$/;" g +EnumProjRef vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^enum EnumProjRef<'__pin, T, U>$/;" g +EnumProjRef vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^enum EnumProjRef<'__pin, T, U>$/;" g +EnumProjRef vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^pub(crate) enum EnumProjRef<'__pin, T, U>$/;" g +EnumProjReplace vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^enum EnumProjReplace {$/;" g +EnumProjReplace vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^enum EnumProjReplace {$/;" g +EnumProjReplace vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^enum EnumProjReplace {$/;" g +EnumPropsA vendor/winapi/src/um/winuser.rs /^ pub fn EnumPropsA($/;" f +EnumPropsExA vendor/winapi/src/um/winuser.rs /^ pub fn EnumPropsExA($/;" f +EnumPropsExW vendor/winapi/src/um/winuser.rs /^ pub fn EnumPropsExW($/;" f +EnumPropsW vendor/winapi/src/um/winuser.rs /^ pub fn EnumPropsW($/;" f +EnumPwrSchemes vendor/winapi/src/um/powrprof.rs /^ pub fn EnumPwrSchemes($/;" f +EnumResourceLanguagesA vendor/winapi/src/um/winbase.rs /^ pub fn EnumResourceLanguagesA($/;" f +EnumResourceLanguagesExA vendor/winapi/src/um/libloaderapi.rs /^ pub fn EnumResourceLanguagesExA($/;" f +EnumResourceLanguagesExW vendor/winapi/src/um/libloaderapi.rs /^ pub fn EnumResourceLanguagesExW($/;" f +EnumResourceLanguagesW vendor/winapi/src/um/winbase.rs /^ pub fn EnumResourceLanguagesW($/;" f +EnumResourceNamesA vendor/winapi/src/um/winbase.rs /^ pub fn EnumResourceNamesA($/;" f +EnumResourceNamesExA vendor/winapi/src/um/libloaderapi.rs /^ pub fn EnumResourceNamesExA($/;" f +EnumResourceNamesExW vendor/winapi/src/um/libloaderapi.rs /^ pub fn EnumResourceNamesExW($/;" f +EnumResourceNamesW vendor/winapi/src/um/libloaderapi.rs /^ pub fn EnumResourceNamesW($/;" f +EnumResourceTypesA vendor/winapi/src/um/winbase.rs /^ pub fn EnumResourceTypesA($/;" f +EnumResourceTypesExA vendor/winapi/src/um/libloaderapi.rs /^ pub fn EnumResourceTypesExA($/;" f +EnumResourceTypesExW vendor/winapi/src/um/libloaderapi.rs /^ pub fn EnumResourceTypesExW($/;" f +EnumResourceTypesW vendor/winapi/src/um/winbase.rs /^ pub fn EnumResourceTypesW($/;" f +EnumServicesStatusA vendor/winapi/src/um/winsvc.rs /^ pub fn EnumServicesStatusA($/;" f +EnumServicesStatusExA vendor/winapi/src/um/winsvc.rs /^ pub fn EnumServicesStatusExA($/;" f +EnumServicesStatusExW vendor/winapi/src/um/winsvc.rs /^ pub fn EnumServicesStatusExW($/;" f +EnumServicesStatusW vendor/winapi/src/um/winsvc.rs /^ pub fn EnumServicesStatusW($/;" f +EnumSystemCodePagesA vendor/winapi/src/um/winnls.rs /^ pub fn EnumSystemCodePagesA($/;" f +EnumSystemCodePagesW vendor/winapi/src/um/winnls.rs /^ pub fn EnumSystemCodePagesW($/;" f +EnumSystemFirmwareTables vendor/winapi/src/um/sysinfoapi.rs /^ pub fn EnumSystemFirmwareTables($/;" f +EnumSystemGeoID vendor/winapi/src/um/winnls.rs /^ pub fn EnumSystemGeoID($/;" f +EnumSystemLanguageGroupsA vendor/winapi/src/um/winnls.rs /^ pub fn EnumSystemLanguageGroupsA($/;" f +EnumSystemLanguageGroupsW vendor/winapi/src/um/winnls.rs /^ pub fn EnumSystemLanguageGroupsW($/;" f +EnumSystemLocalesA vendor/winapi/src/um/winnls.rs /^ pub fn EnumSystemLocalesA($/;" f +EnumSystemLocalesEx vendor/winapi/src/um/winnls.rs /^ pub fn EnumSystemLocalesEx($/;" f +EnumSystemLocalesW vendor/winapi/src/um/winnls.rs /^ pub fn EnumSystemLocalesW($/;" f +EnumThreadWindows vendor/winapi/src/um/winuser.rs /^ pub fn EnumThreadWindows($/;" f +EnumTimeFormatsA vendor/winapi/src/um/winnls.rs /^ pub fn EnumTimeFormatsA($/;" f +EnumTimeFormatsEx vendor/winapi/src/um/winnls.rs /^ pub fn EnumTimeFormatsEx($/;" f +EnumTimeFormatsW vendor/winapi/src/um/winnls.rs /^ pub fn EnumTimeFormatsW($/;" f +EnumTransparentGeneric vendor/thiserror/tests/test_generics.rs /^pub enum EnumTransparentGeneric {$/;" g +EnumUILanguagesA vendor/winapi/src/um/winnls.rs /^ pub fn EnumUILanguagesA($/;" f +EnumUILanguagesW vendor/winapi/src/um/winnls.rs /^ pub fn EnumUILanguagesW($/;" f +EnumWindowStationsA vendor/winapi/src/um/winuser.rs /^ pub fn EnumWindowStationsA($/;" f +EnumWindowStationsW vendor/winapi/src/um/winuser.rs /^ pub fn EnumWindowStationsW($/;" f +EnumWindows vendor/winapi/src/um/winuser.rs /^ pub fn EnumWindows($/;" f +Enumerate vendor/futures-util/src/stream/stream/enumerate.rs /^impl Sink for Enumerate$/;" c +Enumerate vendor/futures-util/src/stream/stream/enumerate.rs /^impl FusedStream for Enumerate {$/;" c +Enumerate vendor/futures-util/src/stream/stream/enumerate.rs /^impl Enumerate {$/;" c +Enumerate vendor/futures-util/src/stream/stream/enumerate.rs /^impl Stream for Enumerate {$/;" c +EnumerateSecurityPackagesA vendor/winapi/src/shared/sspi.rs /^ pub fn EnumerateSecurityPackagesA($/;" f +EnumerateSecurityPackagesW vendor/winapi/src/shared/sspi.rs /^ pub fn EnumerateSecurityPackagesW($/;" f +EnumerateTraceGuids vendor/winapi/src/shared/evntrace.rs /^ pub fn EnumerateTraceGuids($/;" f +EnumerateTraceGuidsEx vendor/winapi/src/shared/evntrace.rs /^ pub fn EnumerateTraceGuidsEx($/;" f +Eof vendor/futures-util/src/stream/try_stream/into_async_read.rs /^ Eof,$/;" e enum:ReadState +EpollCtlAdd vendor/nix/src/sys/epoll.rs /^ EpollCtlAdd = libc::EPOLL_CTL_ADD,$/;" e enum:EpollOp +EpollCtlDel vendor/nix/src/sys/epoll.rs /^ EpollCtlDel = libc::EPOLL_CTL_DEL,$/;" e enum:EpollOp +EpollCtlMod vendor/nix/src/sys/epoll.rs /^ EpollCtlMod = libc::EPOLL_CTL_MOD,$/;" e enum:EpollOp +EpollEvent vendor/nix/src/sys/epoll.rs /^impl EpollEvent {$/;" c +EpollEvent vendor/nix/src/sys/epoll.rs /^pub struct EpollEvent {$/;" s +EpollOp vendor/nix/src/sys/epoll.rs /^pub enum EpollOp {$/;" g +EqualDomainSid vendor/winapi/src/um/securitybaseapi.rs /^ pub fn EqualDomainSid($/;" f +EqualPrefixSid vendor/winapi/src/um/securitybaseapi.rs /^ pub fn EqualPrefixSid($/;" f +EqualRect vendor/winapi/src/um/winuser.rs /^ pub fn EqualRect($/;" f +EqualRgn vendor/winapi/src/um/wingdi.rs /^ pub fn EqualRgn($/;" f +EqualSid vendor/winapi/src/um/securitybaseapi.rs /^ pub fn EqualSid($/;" f +EraseTape vendor/winapi/src/um/winbase.rs /^ pub fn EraseTape($/;" f +Err vendor/fluent-bundle/src/types/number.rs /^ type Err = std::num::ParseFloatError;$/;" t implementation:FluentNumber +Err vendor/nix/src/sys/signal.rs /^ type Err = Error;$/;" t implementation:Signal +Err vendor/nix/src/sys/socket/addr.rs /^ type Err = net::AddrParseError;$/;" t implementation:SockaddrIn +Err vendor/nix/src/sys/socket/addr.rs /^ type Err = net::AddrParseError;$/;" t implementation:SockaddrIn6 +Err vendor/proc-macro2/src/fallback.rs /^ type Err = LexError;$/;" t implementation:Literal::byte_string::Literal +Err vendor/proc-macro2/src/fallback.rs /^ type Err = LexError;$/;" t implementation:TokenStream +Err vendor/proc-macro2/src/lib.rs /^ type Err = LexError;$/;" t implementation:Literal +Err vendor/proc-macro2/src/lib.rs /^ type Err = LexError;$/;" t implementation:TokenStream +Err vendor/proc-macro2/src/wrapper.rs /^ type Err = LexError;$/;" t implementation:Literal +Err vendor/proc-macro2/src/wrapper.rs /^ type Err = LexError;$/;" t implementation:TokenStream +Err vendor/tinystr/src/tinystr16.rs /^ type Err = Error;$/;" t implementation:TinyStr16 +Err vendor/tinystr/src/tinystr4.rs /^ type Err = Error;$/;" t implementation:TinyStr4 +Err vendor/tinystr/src/tinystr8.rs /^ type Err = Error;$/;" t implementation:TinyStr8 +Err vendor/tinystr/src/tinystrauto.rs /^ type Err = Error;$/;" t implementation:TinyStrAuto +Err vendor/unic-langid-impl/src/lib.rs /^ type Err = LanguageIdentifierError;$/;" t implementation:LanguageIdentifier +Err vendor/unic-langid-impl/src/subtags/language.rs /^ type Err = ParserError;$/;" t implementation:Language +Err vendor/unic-langid-impl/src/subtags/region.rs /^ type Err = ParserError;$/;" t implementation:Region +Err vendor/unic-langid-impl/src/subtags/script.rs /^ type Err = ParserError;$/;" t implementation:Script +Err vendor/unic-langid-impl/src/subtags/variant.rs /^ type Err = ParserError;$/;" t implementation:Variant +ErrIntoTest vendor/futures/tests/sink.rs /^ impl From for ErrIntoTest {$/;" c function:err_into +ErrIntoTest vendor/futures/tests/sink.rs /^ struct ErrIntoTest;$/;" s function:err_into +Errno vendor/nix/src/errno.rs /^ impl Errno {$/;" c module:consts +Errno vendor/nix/src/errno.rs /^ pub enum Errno {$/;" g module:consts +Errno vendor/nix/src/errno.rs /^impl Errno {$/;" c +Errno vendor/nix/src/errno.rs /^impl TryFrom for Errno {$/;" c +Errno vendor/nix/src/errno.rs /^impl error::Error for Errno {}$/;" c +Errno vendor/nix/src/errno.rs /^impl fmt::Display for Errno {$/;" c +ErrnoSentinel vendor/nix/src/errno.rs /^pub trait ErrnoSentinel: Sized {$/;" i +Error vendor/async-trait/tests/test.rs /^ type Error: Send + 'static;$/;" t interface:issue145::ManageConnection +Error vendor/autocfg/src/error.rs /^impl error::Error for Error {$/;" c +Error vendor/autocfg/src/error.rs /^impl fmt::Display for Error {$/;" c +Error vendor/autocfg/src/error.rs /^pub struct Error {$/;" s +Error vendor/fluent-bundle/src/types/mod.rs /^ Error,$/;" e enum:FluentValue +Error vendor/fluent-bundle/src/types/plural.rs /^ type Error = &'static str;$/;" t implementation:PluralRules +Error vendor/futures-channel/src/mpsc/sink_impl.rs /^ type Error = SendError;$/;" t implementation:Sender +Error vendor/futures-channel/src/mpsc/sink_impl.rs /^ type Error = SendError;$/;" t implementation:UnboundedSender +Error vendor/futures-core/src/future.rs /^ type Error = E;$/;" t +Error vendor/futures-core/src/future.rs /^ type Error;$/;" t interface:TryFuture +Error vendor/futures-core/src/stream.rs /^ type Error = E;$/;" t +Error vendor/futures-core/src/stream.rs /^ type Error;$/;" t interface:TryStream +Error vendor/futures-sink/src/lib.rs /^ type Error = Never;$/;" t implementation:if_alloc::Vec +Error vendor/futures-sink/src/lib.rs /^ type Error = Never;$/;" t implementation:if_alloc::VecDeque +Error vendor/futures-sink/src/lib.rs /^ type Error = S::Error;$/;" t implementation:if_alloc::Box +Error vendor/futures-sink/src/lib.rs /^ type Error = >::Error;$/;" t +Error vendor/futures-sink/src/lib.rs /^ type Error = S::Error;$/;" t implementation:S +Error vendor/futures-sink/src/lib.rs /^ type Error;$/;" t interface:Sink +Error vendor/futures-util/benches_disabled/bilock.rs /^ type Error = ();$/;" t implementation:bench::LockStream +Error vendor/futures-util/src/compat/compat01as03.rs /^ type Error = S::SinkError;$/;" t +Error vendor/futures-util/src/compat/compat03as01.rs /^ type Error = Fut::Error;$/;" t +Error vendor/futures-util/src/compat/compat03as01.rs /^ type Error = St::Error;$/;" t +Error vendor/futures-util/src/future/either.rs /^ type Error = A::Error;$/;" t +Error vendor/futures-util/src/future/future/flatten.rs /^ type Error = >::Error;$/;" t +Error vendor/futures-util/src/future/try_future/try_flatten.rs /^ type Error = Fut::Error;$/;" t +Error vendor/futures-util/src/future/try_join_all.rs /^ Error(E),$/;" e enum:FinalState +Error vendor/futures-util/src/io/into_sink.rs /^ type Error = io::Error;$/;" t implementation:IntoSink +Error vendor/futures-util/src/sink/buffer.rs /^ type Error = Si::Error;$/;" t implementation:Buffer +Error vendor/futures-util/src/sink/drain.rs /^ type Error = Never;$/;" t implementation:Drain +Error vendor/futures-util/src/sink/err_into.rs /^ type Error = E;$/;" t +Error vendor/futures-util/src/sink/fanout.rs /^ type Error = Si1::Error;$/;" t +Error vendor/futures-util/src/sink/map_err.rs /^ type Error = E;$/;" t +Error vendor/futures-util/src/sink/unfold.rs /^ type Error = E;$/;" t +Error vendor/futures-util/src/sink/with.rs /^ type Error = E;$/;" t +Error vendor/futures-util/src/sink/with_flat_map.rs /^ type Error = Si::Error;$/;" t +Error vendor/futures-util/src/stream/stream/buffer_unordered.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/buffered.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/chunks.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/enumerate.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/filter.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/filter_map.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/flatten.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ type Error = St::Error;$/;" t +Error vendor/futures-util/src/stream/stream/fuse.rs /^ type Error = S::Error;$/;" t implementation:Fuse +Error vendor/futures-util/src/stream/stream/map.rs /^ type Error = St::Error;$/;" t +Error vendor/futures-util/src/stream/stream/peek.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/ready_chunks.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/scan.rs /^ type Error = St::Error;$/;" t +Error vendor/futures-util/src/stream/stream/skip.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/skip_while.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/split.rs /^ type Error = S::Error;$/;" t implementation:SplitSink +Error vendor/futures-util/src/stream/stream/take.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/take_until.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/take_while.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/stream/then.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/try_stream/and_then.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/try_stream/into_stream.rs /^ type Error = S::Error;$/;" t implementation:IntoStream +Error vendor/futures-util/src/stream/try_stream/or_else.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/try_stream/try_buffer_unordered.rs /^ type Error = E;$/;" t +Error vendor/futures-util/src/stream/try_stream/try_buffered.rs /^ type Error = E;$/;" t +Error vendor/futures-util/src/stream/try_stream/try_chunks.rs /^ type Error = >::Error;$/;" t +Error vendor/futures-util/src/stream/try_stream/try_filter.rs /^ type Error = E;$/;" t +Error vendor/futures-util/src/stream/try_stream/try_filter_map.rs /^ type Error = S::Error;$/;" t +Error vendor/futures-util/src/stream/try_stream/try_flatten.rs /^ type Error = >::Error;$/;" t +Error vendor/futures-util/src/stream/try_stream/try_skip_while.rs /^ type Error = E;$/;" t +Error vendor/futures-util/src/stream/try_stream/try_take_while.rs /^ type Error = E;$/;" t +Error vendor/futures/tests/auto_traits.rs /^ type Error = E;$/;" t implementation:PinnedSink +Error vendor/futures/tests/future_try_flatten_stream.rs /^ type Error = E;$/;" t implementation:assert_impls::StreamSink +Error vendor/futures/tests/sink.rs /^ type Error = ();$/;" t implementation:ManualAllow +Error vendor/futures/tests/sink.rs /^ type Error = ();$/;" t implementation:ManualFlush +Error vendor/futures/tests/stream_split.rs /^ type Error = U::Error;$/;" t implementation:test_split::Join +Error vendor/futures/tests_disabled/bilock.rs /^ type Error = ();$/;" t implementation:concurrent::Increment +Error vendor/futures/tests_disabled/stream.rs /^ type Error = u32;$/;" t implementation:peek::Peek +Error vendor/futures/tests_disabled/stream.rs /^ type Error = E;$/;" t +Error vendor/intl-memoizer/src/lib.rs /^ type Error = &'static str;$/;" t implementation:tests::PluralRules +Error vendor/intl-memoizer/src/lib.rs /^ type Error;$/;" t interface:Memoizable +Error vendor/intl_pluralrules/src/operands.rs /^ type Error = &'static str;$/;" t implementation:PluralOperands +Error vendor/libloading/src/error.rs /^impl std::error::Error for Error {$/;" c +Error vendor/libloading/src/error.rs /^impl std::fmt::Display for Error {$/;" c +Error vendor/libloading/src/error.rs /^pub enum Error {$/;" g +Error vendor/nix/src/errno.rs /^ type Error = io::Error;$/;" t implementation:Errno +Error vendor/nix/src/errno.rs /^impl From for io::Error {$/;" c +Error vendor/nix/src/lib.rs /^pub type Error = Errno;$/;" t +Error vendor/nix/src/mount/bsd.rs /^impl From for io::Error {$/;" c +Error vendor/pin-project-lite/tests/test.rs /^ type Error;$/;" t interface:pinned_drop::Service +Error vendor/syn/src/error.rs /^impl Clone for Error {$/;" c +Error vendor/syn/src/error.rs /^impl Debug for Error {$/;" c +Error vendor/syn/src/error.rs /^impl Display for Error {$/;" c +Error vendor/syn/src/error.rs /^impl Error {$/;" c +Error vendor/syn/src/error.rs /^impl Extend for Error {$/;" c +Error vendor/syn/src/error.rs /^impl From for Error {$/;" c +Error vendor/syn/src/error.rs /^impl IntoIterator for Error {$/;" c +Error vendor/syn/src/error.rs /^impl std::error::Error for Error {}$/;" c +Error vendor/syn/src/error.rs /^impl<'a> IntoIterator for &'a Error {$/;" c +Error vendor/syn/src/error.rs /^pub struct Error {$/;" s +Error vendor/thiserror/tests/test_deprecated.rs /^pub enum Error {$/;" g +Error vendor/thiserror/tests/test_display.rs /^ enum Error {$/;" g function:test_enum +Error vendor/thiserror/tests/test_display.rs /^ enum Error {$/;" g function:test_inherit +Error vendor/thiserror/tests/test_display.rs /^ enum Error {$/;" g function:test_ints +Error vendor/thiserror/tests/test_display.rs /^ enum Error {$/;" g function:test_raw_conflict +Error vendor/thiserror/tests/test_display.rs /^ enum Error {$/;" g function:test_raw_enum +Error vendor/thiserror/tests/test_display.rs /^ pub enum Error {}$/;" g function:test_void +Error vendor/thiserror/tests/test_display.rs /^ struct Error {$/;" s function:test_braced +Error vendor/thiserror/tests/test_display.rs /^ struct Error {$/;" s function:test_braced_unused +Error vendor/thiserror/tests/test_display.rs /^ struct Error {$/;" s function:test_constants +Error vendor/thiserror/tests/test_display.rs /^ struct Error {$/;" s function:test_mixed +Error vendor/thiserror/tests/test_display.rs /^ struct Error {$/;" s function:test_raw +Error vendor/thiserror/tests/test_display.rs /^ struct Error(Inner);$/;" s function:test_field +Error vendor/thiserror/tests/test_display.rs /^ struct Error(String, Option);$/;" s function:test_match +Error vendor/thiserror/tests/test_display.rs /^ struct Error(bool);$/;" s function:test_nested +Error vendor/thiserror/tests/test_display.rs /^ struct Error(char);$/;" s function:test_trailing_comma +Error vendor/thiserror/tests/test_display.rs /^ struct Error(usize);$/;" s function:test_tuple +Error vendor/thiserror/tests/test_display.rs /^ struct Error;$/;" s function:test_brace_escape +Error vendor/thiserror/tests/test_display.rs /^ struct Error;$/;" s function:test_expr +Error vendor/thiserror/tests/test_display.rs /^ struct Error;$/;" s function:test_keyword +Error vendor/thiserror/tests/test_display.rs /^ struct Error;$/;" s function:test_unit +Error vendor/thiserror/tests/test_transparent.rs /^ enum Error {$/;" g function:test_transparent_enum +Error vendor/thiserror/tests/test_transparent.rs /^ struct Error(ErrorKind);$/;" s function:test_transparent_struct +Error vendor/thiserror/tests/test_transparent.rs /^ struct Error<'a> {$/;" s function:test_non_static +Error vendor/thiserror/tests/ui/bad-field-attr.rs /^pub struct Error(#[error(transparent)] std::io::Error);$/;" s +Error vendor/thiserror/tests/ui/duplicate-fmt.rs /^pub struct Error;$/;" s +Error vendor/thiserror/tests/ui/duplicate-transparent.rs /^pub struct Error(anyhow::Error);$/;" s +Error vendor/thiserror/tests/ui/from-backtrace-backtrace.rs /^pub struct Error(#[from] #[backtrace] std::io::Error, Backtrace);$/;" s +Error vendor/thiserror/tests/ui/from-not-source.rs /^pub struct Error {$/;" s +Error vendor/thiserror/tests/ui/lifetime.rs /^struct Error<'a>(#[from] Inner<'a>);$/;" s +Error vendor/thiserror/tests/ui/missing-fmt.rs /^pub enum Error {$/;" g +Error vendor/thiserror/tests/ui/no-display.rs /^pub struct Error {$/;" s +Error vendor/thiserror/tests/ui/transparent-display.rs /^pub struct Error(anyhow::Error);$/;" s +Error vendor/thiserror/tests/ui/transparent-enum-many.rs /^pub enum Error {$/;" g +Error vendor/thiserror/tests/ui/transparent-enum-source.rs /^pub enum Error {$/;" g +Error vendor/thiserror/tests/ui/transparent-struct-many.rs /^pub struct Error {$/;" s +Error vendor/thiserror/tests/ui/transparent-struct-source.rs /^pub struct Error(#[source] anyhow::Error);$/;" s +Error vendor/thiserror/tests/ui/unexpected-field-fmt.rs /^pub enum Error {$/;" g +Error vendor/thiserror/tests/ui/unexpected-struct-source.rs /^pub struct Error;$/;" s +Error vendor/tinystr/src/lib.rs /^pub enum Error {$/;" g +Error vendor/unic-langid-impl/src/subtags/language.rs /^ type Error = ParserError;$/;" t +ErrorEnum vendor/thiserror/tests/test_from.rs /^pub enum ErrorEnum {$/;" g +ErrorEnum vendor/thiserror/tests/ui/duplicate-enum-source.rs /^pub enum ErrorEnum {$/;" g +ErrorEnum vendor/thiserror/tests/ui/source-enum-not-error.rs /^pub enum ErrorEnum {$/;" g +ErrorEnumOptional vendor/thiserror/tests/test_from.rs /^pub enum ErrorEnumOptional {$/;" g +ErrorKind vendor/autocfg/src/error.rs /^enum ErrorKind {$/;" g +ErrorKind vendor/fluent-syntax/src/parser/errors.rs /^pub enum ErrorKind {$/;" g +ErrorKind vendor/thiserror/tests/test_transparent.rs /^ enum ErrorKind {$/;" g function:test_transparent_struct +ErrorKind vendor/thiserror/tests/test_transparent.rs /^ enum ErrorKind<'a> {$/;" g function:test_non_static +ErrorMessage vendor/syn/src/error.rs /^impl Clone for ErrorMessage {$/;" c +ErrorMessage vendor/syn/src/error.rs /^impl Debug for ErrorMessage {$/;" c +ErrorMessage vendor/syn/src/error.rs /^impl ErrorMessage {$/;" c +ErrorMessage vendor/syn/src/error.rs /^struct ErrorMessage {$/;" s +ErrorModeGuard vendor/libloading/src/os/windows/mod.rs /^impl Drop for ErrorModeGuard {$/;" c +ErrorModeGuard vendor/libloading/src/os/windows/mod.rs /^impl ErrorModeGuard {$/;" c +ErrorModeGuard vendor/libloading/src/os/windows/mod.rs /^struct ErrorModeGuard(DWORD);$/;" s +ErrorStruct vendor/thiserror/tests/test_from.rs /^pub struct ErrorStruct {$/;" s +ErrorStruct vendor/thiserror/tests/ui/duplicate-struct-source.rs /^pub struct ErrorStruct {$/;" s +ErrorStruct vendor/thiserror/tests/ui/source-struct-not-error.rs /^pub struct ErrorStruct {$/;" s +ErrorStructOptional vendor/thiserror/tests/test_from.rs /^pub struct ErrorStructOptional {$/;" s +ErrorTuple vendor/thiserror/tests/test_from.rs /^pub struct ErrorTuple(#[from] io::Error);$/;" s +ErrorTupleOptional vendor/thiserror/tests/test_from.rs /^pub struct ErrorTupleOptional(#[from] Option);$/;" s +Escape vendor/winapi/src/um/wingdi.rs /^ pub fn Escape($/;" f +EscapeCommFunction vendor/winapi/src/um/commapi.rs /^ pub fn EscapeCommFunction($/;" f +EthAll vendor/nix/src/sys/socket/mod.rs /^ EthAll = libc::ETH_P_ALL.to_be(),$/;" e enum:SockProtocol +EtwGetTraitFromProviderTraits vendor/winapi/src/um/evntcons.rs /^pub unsafe fn EtwGetTraitFromProviderTraits($/;" f +EvalCmd builtins_rust/exec_cmd/src/lib.rs /^ EvalCmd,$/;" e enum:CMDType +EvalComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for EvalComand {$/;" c +EvalComand builtins_rust/exec_cmd/src/lib.rs /^struct EvalComand;$/;" s +EvaluateProximityToPolygon vendor/winapi/src/um/winuser.rs /^ pub fn EvaluateProximityToPolygon($/;" f +EvaluateProximityToRect vendor/winapi/src/um/winuser.rs /^ pub fn EvaluateProximityToRect($/;" f +EventAccessControl vendor/winapi/src/um/evntcons.rs /^ pub fn EventAccessControl($/;" f +EventAccessQuery vendor/winapi/src/um/evntcons.rs /^ pub fn EventAccessQuery($/;" f +EventAccessRemove vendor/winapi/src/um/evntcons.rs /^ pub fn EventAccessRemove($/;" f +EventActivityIdControl vendor/winapi/src/shared/evntprov.rs /^ pub fn EventActivityIdControl($/;" f +EventDataDescCreate vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDataDescCreate($/;" f +EventDescCreate vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescCreate($/;" f +EventDescGetChannel vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescGetChannel(EventDescriptor: PCEVENT_DESCRIPTOR) -> UCHAR {$/;" f +EventDescGetId vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescGetId(EventDescriptor: PCEVENT_DESCRIPTOR) -> USHORT {$/;" f +EventDescGetKeyword vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescGetKeyword(EventDescriptor: PCEVENT_DESCRIPTOR) -> ULONGLONG {$/;" f +EventDescGetLevel vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescGetLevel(EventDescriptor: PCEVENT_DESCRIPTOR) -> UCHAR {$/;" f +EventDescGetOpcode vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescGetOpcode(EventDescriptor: PCEVENT_DESCRIPTOR) -> UCHAR {$/;" f +EventDescGetTask vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescGetTask(EventDescriptor: PCEVENT_DESCRIPTOR) -> USHORT {$/;" f +EventDescGetVersion vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescGetVersion(EventDescriptor: PCEVENT_DESCRIPTOR) -> UCHAR {$/;" f +EventDescOrKeyword vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescOrKeyword($/;" f +EventDescSetChannel vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescSetChannel($/;" f +EventDescSetId vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescSetId(EventDescriptor: PEVENT_DESCRIPTOR, Id: USHORT) -> PEVENT_DESCRIPTO/;" f +EventDescSetKeyword vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescSetKeyword($/;" f +EventDescSetLevel vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescSetLevel($/;" f +EventDescSetOpcode vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescSetOpcode($/;" f +EventDescSetTask vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescSetTask($/;" f +EventDescSetVersion vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescSetVersion($/;" f +EventDescZero vendor/winapi/src/shared/evntprov.rs /^pub unsafe fn EventDescZero(EventDescriptor: PEVENT_DESCRIPTOR) {$/;" f +EventEnabled vendor/winapi/src/shared/evntprov.rs /^ pub fn EventEnabled($/;" f +EventProviderEnabled vendor/winapi/src/shared/evntprov.rs /^ pub fn EventProviderEnabled($/;" f +EventRegister vendor/winapi/src/shared/evntprov.rs /^ pub fn EventRegister($/;" f +EventSetInformation vendor/winapi/src/shared/evntprov.rs /^ pub fn EventSetInformation($/;" f +EventUnregister vendor/winapi/src/shared/evntprov.rs /^ pub fn EventUnregister($/;" f +EventWrite vendor/winapi/src/shared/evntprov.rs /^ pub fn EventWrite($/;" f +EventWriteEx vendor/winapi/src/shared/evntprov.rs /^ pub fn EventWriteEx($/;" f +EventWriteString vendor/winapi/src/shared/evntprov.rs /^ pub fn EventWriteString($/;" f +EventWriteTransfer vendor/winapi/src/shared/evntprov.rs /^ pub fn EventWriteTransfer($/;" f +EvtArchiveExportedLog vendor/winapi/src/um/winevt.rs /^ pub fn EvtArchiveExportedLog($/;" f +EvtCancel vendor/winapi/src/um/winevt.rs /^ pub fn EvtCancel($/;" f +EvtClearLog vendor/winapi/src/um/winevt.rs /^ pub fn EvtClearLog($/;" f +EvtClose vendor/winapi/src/um/winevt.rs /^ pub fn EvtClose($/;" f +EvtCreateBookmark vendor/winapi/src/um/winevt.rs /^ pub fn EvtCreateBookmark($/;" f +EvtCreateRenderContext vendor/winapi/src/um/winevt.rs /^ pub fn EvtCreateRenderContext($/;" f +EvtExportLog vendor/winapi/src/um/winevt.rs /^ pub fn EvtExportLog($/;" f +EvtFormatMessage vendor/winapi/src/um/winevt.rs /^ pub fn EvtFormatMessage($/;" f +EvtGetChannelConfigProperty vendor/winapi/src/um/winevt.rs /^ pub fn EvtGetChannelConfigProperty($/;" f +EvtGetEventInfo vendor/winapi/src/um/winevt.rs /^ pub fn EvtGetEventInfo($/;" f +EvtGetEventMetadataProperty vendor/winapi/src/um/winevt.rs /^ pub fn EvtGetEventMetadataProperty($/;" f +EvtGetExtendedStatus vendor/winapi/src/um/winevt.rs /^ pub fn EvtGetExtendedStatus($/;" f +EvtGetLogInfo vendor/winapi/src/um/winevt.rs /^ pub fn EvtGetLogInfo($/;" f +EvtGetObjectArrayProperty vendor/winapi/src/um/winevt.rs /^ pub fn EvtGetObjectArrayProperty($/;" f +EvtGetObjectArraySize vendor/winapi/src/um/winevt.rs /^ pub fn EvtGetObjectArraySize($/;" f +EvtGetPublisherMetadataProperty vendor/winapi/src/um/winevt.rs /^ pub fn EvtGetPublisherMetadataProperty($/;" f +EvtGetQueryInfo vendor/winapi/src/um/winevt.rs /^ pub fn EvtGetQueryInfo($/;" f +EvtNext vendor/winapi/src/um/winevt.rs /^ pub fn EvtNext($/;" f +EvtNextChannelPath vendor/winapi/src/um/winevt.rs /^ pub fn EvtNextChannelPath($/;" f +EvtNextEventMetadata vendor/winapi/src/um/winevt.rs /^ pub fn EvtNextEventMetadata($/;" f +EvtNextPublisherId vendor/winapi/src/um/winevt.rs /^ pub fn EvtNextPublisherId($/;" f +EvtOpenChannelConfig vendor/winapi/src/um/winevt.rs /^ pub fn EvtOpenChannelConfig($/;" f +EvtOpenChannelEnum vendor/winapi/src/um/winevt.rs /^ pub fn EvtOpenChannelEnum($/;" f +EvtOpenEventMetadataEnum vendor/winapi/src/um/winevt.rs /^ pub fn EvtOpenEventMetadataEnum($/;" f +EvtOpenLog vendor/winapi/src/um/winevt.rs /^ pub fn EvtOpenLog($/;" f +EvtOpenPublisherEnum vendor/winapi/src/um/winevt.rs /^ pub fn EvtOpenPublisherEnum($/;" f +EvtOpenPublisherMetadata vendor/winapi/src/um/winevt.rs /^ pub fn EvtOpenPublisherMetadata($/;" f +EvtOpenSession vendor/winapi/src/um/winevt.rs /^ pub fn EvtOpenSession($/;" f +EvtQuery vendor/winapi/src/um/winevt.rs /^ pub fn EvtQuery($/;" f +EvtRender vendor/winapi/src/um/winevt.rs /^ pub fn EvtRender($/;" f +EvtSaveChannelConfig vendor/winapi/src/um/winevt.rs /^ pub fn EvtSaveChannelConfig($/;" f +EvtSeek vendor/winapi/src/um/winevt.rs /^ pub fn EvtSeek($/;" f +EvtSetChannelConfigProperty vendor/winapi/src/um/winevt.rs /^ pub fn EvtSetChannelConfigProperty($/;" f +EvtSubscribe vendor/winapi/src/um/winevt.rs /^ pub fn EvtSubscribe($/;" f +EvtUpdateBookmark vendor/winapi/src/um/winevt.rs /^ pub fn EvtUpdateBookmark($/;" f +Ex vendor/futures-util/src/compat/executor.rs /^impl Executor01CompatExt for Ex$/;" c +Example vendor/async-trait/README.md /^## Example$/;" s chapter:Async trait methods +Example vendor/async-trait/tests/test.rs /^ pub trait Example {$/;" i module:issue68 +Example vendor/async-trait/tests/test.rs /^ pub trait Example {$/;" i module:issue73 +Example vendor/cfg-if/README.md /^## Example$/;" s chapter:cfg-if +Example vendor/lazy_static/README.md /^# Example$/;" c +Example vendor/smallvec/README.md /^## Example$/;" s chapter:rust-smallvec +Example vendor/thiserror/README.md /^## Example$/;" s chapter:derive(Error) +Example vendor/winapi/README.md /^## Example ##$/;" s chapter:winapi-rs +Example of a derive macro vendor/syn/README.md /^## Example of a derive macro$/;" s chapter:Parser for Rust source code +Example: vendor/smallvec/debug_metadata/README.md /^#### Example:$/;" t subsection:Debugger Visualizers""Testing Visualizers +Examples vendor/memoffset/README.md /^## Examples ##$/;" s chapter:memoffset +Examples vendor/pin-project-lite/README.md /^## Examples$/;" s chapter:pin-project-lite +Examples vendor/quote/README.md /^## Examples$/;" s chapter:Rust Quasi-Quoting +ExcludeClipRect vendor/winapi/src/um/wingdi.rs /^ pub fn ExcludeClipRect($/;" f +ExcludeUpdateRgn vendor/winapi/src/um/winuser.rs /^ pub fn ExcludeUpdateRgn($/;" f +ExecCmd builtins_rust/exec_cmd/src/lib.rs /^ ExecCmd,$/;" e enum:CMDType +ExecComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for ExecComand {$/;" c +ExecComand builtins_rust/exec_cmd/src/lib.rs /^struct ExecComand;$/;" s +ExecuteUmsThread vendor/winapi/src/um/winbase.rs /^ pub fn ExecuteUmsThread($/;" f +Executor01As03 vendor/futures-util/src/compat/executor.rs /^impl Spawn03 for Executor01As03$/;" c +Executor01As03 vendor/futures-util/src/compat/executor.rs /^pub struct Executor01As03 {$/;" s +Executor01CompatExt vendor/futures-util/src/compat/executor.rs /^pub trait Executor01CompatExt: Executor01 + Clone + Send + 'static {$/;" i +Executor01Future vendor/futures-util/src/compat/executor.rs /^pub type Executor01Future = Compat>>;$/;" t +ExitCmd builtins_rust/exec_cmd/src/lib.rs /^ ExitCmd,$/;" e enum:CMDType +ExitComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for ExitComand {$/;" c +ExitComand builtins_rust/exec_cmd/src/lib.rs /^struct ExitComand;$/;" s +ExitProcess vendor/winapi/src/um/processthreadsapi.rs /^ pub fn ExitProcess($/;" f +ExitThread vendor/winapi/src/um/processthreadsapi.rs /^ pub fn ExitThread($/;" f +ExitWindowsEx vendor/winapi/src/um/winuser.rs /^ pub fn ExitWindowsEx($/;" f +Exited vendor/nix/src/sys/wait.rs /^ Exited(Pid, i32),$/;" e enum:WaitStatus +ExpandEnvironmentStringsA vendor/winapi/src/um/processenv.rs /^ pub fn ExpandEnvironmentStringsA($/;" f +ExpandEnvironmentStringsForUserA vendor/winapi/src/um/userenv.rs /^ pub fn ExpandEnvironmentStringsForUserA($/;" f +ExpandEnvironmentStringsForUserW vendor/winapi/src/um/userenv.rs /^ pub fn ExpandEnvironmentStringsForUserW($/;" f +ExpandEnvironmentStringsW vendor/winapi/src/um/processenv.rs /^ pub fn ExpandEnvironmentStringsW($/;" f +Expansion tests (`expand`, `expandtest.rs`) vendor/pin-project-lite/tests/README.md /^## Expansion tests (`expand`, `expandtest.rs`)$/;" s chapter:Tests +ExpectedCharRange vendor/fluent-syntax/src/parser/errors.rs /^ ExpectedCharRange { range: String },$/;" e enum:ErrorKind +ExpectedInlineExpression vendor/fluent-syntax/src/parser/errors.rs /^ ExpectedInlineExpression,$/;" e enum:ErrorKind +ExpectedLiteral vendor/fluent-syntax/src/parser/errors.rs /^ ExpectedLiteral,$/;" e enum:ErrorKind +ExpectedMessageField vendor/fluent-syntax/src/parser/errors.rs /^ ExpectedMessageField { entry_id: String },$/;" e enum:ErrorKind +ExpectedSimpleExpressionAsSelector vendor/fluent-syntax/src/parser/errors.rs /^ ExpectedSimpleExpressionAsSelector,$/;" e enum:ErrorKind +ExpectedTermField vendor/fluent-syntax/src/parser/errors.rs /^ ExpectedTermField { entry_id: String },$/;" e enum:ErrorKind +ExpectedToken vendor/fluent-syntax/src/parser/errors.rs /^ ExpectedToken(char),$/;" e enum:ErrorKind +Expiration vendor/nix/src/sys/time.rs /^ impl From for Expiration {$/;" c module:timer +Expiration vendor/nix/src/sys/time.rs /^ pub enum Expiration {$/;" g module:timer +Explanation vendor/async-trait/README.md /^## Explanation$/;" s chapter:Async trait methods +ExplicitBacktrace vendor/thiserror/tests/test_backtrace.rs /^ pub enum ExplicitBacktrace {$/;" g module:enums +ExplicitBacktrace vendor/thiserror/tests/test_backtrace.rs /^ pub struct ExplicitBacktrace {$/;" s module:structs +ExplicitSource vendor/thiserror/tests/test_source.rs /^pub struct ExplicitSource {$/;" s +ExportCmd builtins_rust/exec_cmd/src/lib.rs /^ ExportCmd,$/;" e enum:CMDType +ExportComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for ExportComand {$/;" c +ExportComand builtins_rust/exec_cmd/src/lib.rs /^struct ExportComand;$/;" s +ExportSecurityContext vendor/winapi/src/shared/sspi.rs /^ pub fn ExportSecurityContext($/;" f +Expr vendor/syn/src/expr.rs /^ impl Expr {$/;" c module:parsing +Expr vendor/syn/src/expr.rs /^ impl Parse for Expr {$/;" c module:parsing +Expr vendor/syn/src/expr.rs /^impl Expr {$/;" c +Expr vendor/syn/src/gen/clone.rs /^impl Clone for Expr {$/;" c +Expr vendor/syn/src/gen/debug.rs /^impl Debug for Expr {$/;" c +Expr vendor/syn/src/gen/eq.rs /^impl Eq for Expr {}$/;" c +Expr vendor/syn/src/gen/eq.rs /^impl PartialEq for Expr {$/;" c +Expr vendor/syn/src/gen/hash.rs /^impl Hash for Expr {$/;" c +ExprArray vendor/syn/src/expr.rs /^ impl Parse for ExprArray {$/;" c module:parsing +ExprArray vendor/syn/src/expr.rs /^ impl ToTokens for ExprArray {$/;" c module:printing +ExprArray vendor/syn/src/gen/clone.rs /^impl Clone for ExprArray {$/;" c +ExprArray vendor/syn/src/gen/debug.rs /^impl Debug for ExprArray {$/;" c +ExprArray vendor/syn/src/gen/eq.rs /^impl Eq for ExprArray {}$/;" c +ExprArray vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprArray {$/;" c +ExprArray vendor/syn/src/gen/hash.rs /^impl Hash for ExprArray {$/;" c +ExprAssign vendor/syn/src/expr.rs /^ impl ToTokens for ExprAssign {$/;" c module:printing +ExprAssign vendor/syn/src/gen/clone.rs /^impl Clone for ExprAssign {$/;" c +ExprAssign vendor/syn/src/gen/debug.rs /^impl Debug for ExprAssign {$/;" c +ExprAssign vendor/syn/src/gen/eq.rs /^impl Eq for ExprAssign {}$/;" c +ExprAssign vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprAssign {$/;" c +ExprAssign vendor/syn/src/gen/hash.rs /^impl Hash for ExprAssign {$/;" c +ExprAssignOp vendor/syn/src/expr.rs /^ impl ToTokens for ExprAssignOp {$/;" c module:printing +ExprAssignOp vendor/syn/src/gen/clone.rs /^impl Clone for ExprAssignOp {$/;" c +ExprAssignOp vendor/syn/src/gen/debug.rs /^impl Debug for ExprAssignOp {$/;" c +ExprAssignOp vendor/syn/src/gen/eq.rs /^impl Eq for ExprAssignOp {}$/;" c +ExprAssignOp vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprAssignOp {$/;" c +ExprAssignOp vendor/syn/src/gen/hash.rs /^impl Hash for ExprAssignOp {$/;" c +ExprAsync vendor/syn/src/expr.rs /^ impl Parse for ExprAsync {$/;" c module:parsing +ExprAsync vendor/syn/src/expr.rs /^ impl ToTokens for ExprAsync {$/;" c module:printing +ExprAsync vendor/syn/src/gen/clone.rs /^impl Clone for ExprAsync {$/;" c +ExprAsync vendor/syn/src/gen/debug.rs /^impl Debug for ExprAsync {$/;" c +ExprAsync vendor/syn/src/gen/eq.rs /^impl Eq for ExprAsync {}$/;" c +ExprAsync vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprAsync {$/;" c +ExprAsync vendor/syn/src/gen/hash.rs /^impl Hash for ExprAsync {$/;" c +ExprAwait vendor/syn/src/expr.rs /^ impl ToTokens for ExprAwait {$/;" c module:printing +ExprAwait vendor/syn/src/gen/clone.rs /^impl Clone for ExprAwait {$/;" c +ExprAwait vendor/syn/src/gen/debug.rs /^impl Debug for ExprAwait {$/;" c +ExprAwait vendor/syn/src/gen/eq.rs /^impl Eq for ExprAwait {}$/;" c +ExprAwait vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprAwait {$/;" c +ExprAwait vendor/syn/src/gen/hash.rs /^impl Hash for ExprAwait {$/;" c +ExprBinary vendor/syn/src/expr.rs /^ impl ToTokens for ExprBinary {$/;" c module:printing +ExprBinary vendor/syn/src/gen/clone.rs /^impl Clone for ExprBinary {$/;" c +ExprBinary vendor/syn/src/gen/debug.rs /^impl Debug for ExprBinary {$/;" c +ExprBinary vendor/syn/src/gen/eq.rs /^impl Eq for ExprBinary {}$/;" c +ExprBinary vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprBinary {$/;" c +ExprBinary vendor/syn/src/gen/hash.rs /^impl Hash for ExprBinary {$/;" c +ExprBlock vendor/syn/src/expr.rs /^ impl Parse for ExprBlock {$/;" c module:parsing +ExprBlock vendor/syn/src/expr.rs /^ impl ToTokens for ExprBlock {$/;" c module:printing +ExprBlock vendor/syn/src/gen/clone.rs /^impl Clone for ExprBlock {$/;" c +ExprBlock vendor/syn/src/gen/debug.rs /^impl Debug for ExprBlock {$/;" c +ExprBlock vendor/syn/src/gen/eq.rs /^impl Eq for ExprBlock {}$/;" c +ExprBlock vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprBlock {$/;" c +ExprBlock vendor/syn/src/gen/hash.rs /^impl Hash for ExprBlock {$/;" c +ExprBox vendor/syn/src/expr.rs /^ impl Parse for ExprBox {$/;" c module:parsing +ExprBox vendor/syn/src/expr.rs /^ impl ToTokens for ExprBox {$/;" c module:printing +ExprBox vendor/syn/src/gen/clone.rs /^impl Clone for ExprBox {$/;" c +ExprBox vendor/syn/src/gen/debug.rs /^impl Debug for ExprBox {$/;" c +ExprBox vendor/syn/src/gen/eq.rs /^impl Eq for ExprBox {}$/;" c +ExprBox vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprBox {$/;" c +ExprBox vendor/syn/src/gen/hash.rs /^impl Hash for ExprBox {$/;" c +ExprBreak vendor/syn/src/expr.rs /^ impl Parse for ExprBreak {$/;" c module:parsing +ExprBreak vendor/syn/src/expr.rs /^ impl ToTokens for ExprBreak {$/;" c module:printing +ExprBreak vendor/syn/src/gen/clone.rs /^impl Clone for ExprBreak {$/;" c +ExprBreak vendor/syn/src/gen/debug.rs /^impl Debug for ExprBreak {$/;" c +ExprBreak vendor/syn/src/gen/eq.rs /^impl Eq for ExprBreak {}$/;" c +ExprBreak vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprBreak {$/;" c +ExprBreak vendor/syn/src/gen/hash.rs /^impl Hash for ExprBreak {$/;" c +ExprCall vendor/syn/src/expr.rs /^ impl ToTokens for ExprCall {$/;" c module:printing +ExprCall vendor/syn/src/gen/clone.rs /^impl Clone for ExprCall {$/;" c +ExprCall vendor/syn/src/gen/debug.rs /^impl Debug for ExprCall {$/;" c +ExprCall vendor/syn/src/gen/eq.rs /^impl Eq for ExprCall {}$/;" c +ExprCall vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprCall {$/;" c +ExprCall vendor/syn/src/gen/hash.rs /^impl Hash for ExprCall {$/;" c +ExprCast vendor/syn/src/expr.rs /^ impl ToTokens for ExprCast {$/;" c module:printing +ExprCast vendor/syn/src/gen/clone.rs /^impl Clone for ExprCast {$/;" c +ExprCast vendor/syn/src/gen/debug.rs /^impl Debug for ExprCast {$/;" c +ExprCast vendor/syn/src/gen/eq.rs /^impl Eq for ExprCast {}$/;" c +ExprCast vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprCast {$/;" c +ExprCast vendor/syn/src/gen/hash.rs /^impl Hash for ExprCast {$/;" c +ExprClosure vendor/syn/src/expr.rs /^ impl Parse for ExprClosure {$/;" c module:parsing +ExprClosure vendor/syn/src/expr.rs /^ impl ToTokens for ExprClosure {$/;" c module:printing +ExprClosure vendor/syn/src/gen/clone.rs /^impl Clone for ExprClosure {$/;" c +ExprClosure vendor/syn/src/gen/debug.rs /^impl Debug for ExprClosure {$/;" c +ExprClosure vendor/syn/src/gen/eq.rs /^impl Eq for ExprClosure {}$/;" c +ExprClosure vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprClosure {$/;" c +ExprClosure vendor/syn/src/gen/hash.rs /^impl Hash for ExprClosure {$/;" c +ExprContinue vendor/syn/src/expr.rs /^ impl Parse for ExprContinue {$/;" c module:parsing +ExprContinue vendor/syn/src/expr.rs /^ impl ToTokens for ExprContinue {$/;" c module:printing +ExprContinue vendor/syn/src/gen/clone.rs /^impl Clone for ExprContinue {$/;" c +ExprContinue vendor/syn/src/gen/debug.rs /^impl Debug for ExprContinue {$/;" c +ExprContinue vendor/syn/src/gen/eq.rs /^impl Eq for ExprContinue {}$/;" c +ExprContinue vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprContinue {$/;" c +ExprContinue vendor/syn/src/gen/hash.rs /^impl Hash for ExprContinue {$/;" c +ExprField vendor/syn/src/expr.rs /^ impl ToTokens for ExprField {$/;" c module:printing +ExprField vendor/syn/src/gen/clone.rs /^impl Clone for ExprField {$/;" c +ExprField vendor/syn/src/gen/debug.rs /^impl Debug for ExprField {$/;" c +ExprField vendor/syn/src/gen/eq.rs /^impl Eq for ExprField {}$/;" c +ExprField vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprField {$/;" c +ExprField vendor/syn/src/gen/hash.rs /^impl Hash for ExprField {$/;" c +ExprForLoop vendor/syn/src/expr.rs /^ impl Parse for ExprForLoop {$/;" c module:parsing +ExprForLoop vendor/syn/src/expr.rs /^ impl ToTokens for ExprForLoop {$/;" c module:printing +ExprForLoop vendor/syn/src/gen/clone.rs /^impl Clone for ExprForLoop {$/;" c +ExprForLoop vendor/syn/src/gen/debug.rs /^impl Debug for ExprForLoop {$/;" c +ExprForLoop vendor/syn/src/gen/eq.rs /^impl Eq for ExprForLoop {}$/;" c +ExprForLoop vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprForLoop {$/;" c +ExprForLoop vendor/syn/src/gen/hash.rs /^impl Hash for ExprForLoop {$/;" c +ExprGroup vendor/syn/src/expr.rs /^ impl ToTokens for ExprGroup {$/;" c module:printing +ExprGroup vendor/syn/src/gen/clone.rs /^impl Clone for ExprGroup {$/;" c +ExprGroup vendor/syn/src/gen/debug.rs /^impl Debug for ExprGroup {$/;" c +ExprGroup vendor/syn/src/gen/eq.rs /^impl Eq for ExprGroup {}$/;" c +ExprGroup vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprGroup {$/;" c +ExprGroup vendor/syn/src/gen/hash.rs /^impl Hash for ExprGroup {$/;" c +ExprIf vendor/syn/src/expr.rs /^ impl Parse for ExprIf {$/;" c module:parsing +ExprIf vendor/syn/src/expr.rs /^ impl ToTokens for ExprIf {$/;" c module:printing +ExprIf vendor/syn/src/gen/clone.rs /^impl Clone for ExprIf {$/;" c +ExprIf vendor/syn/src/gen/debug.rs /^impl Debug for ExprIf {$/;" c +ExprIf vendor/syn/src/gen/eq.rs /^impl Eq for ExprIf {}$/;" c +ExprIf vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprIf {$/;" c +ExprIf vendor/syn/src/gen/hash.rs /^impl Hash for ExprIf {$/;" c +ExprIndex vendor/syn/src/expr.rs /^ impl ToTokens for ExprIndex {$/;" c module:printing +ExprIndex vendor/syn/src/gen/clone.rs /^impl Clone for ExprIndex {$/;" c +ExprIndex vendor/syn/src/gen/debug.rs /^impl Debug for ExprIndex {$/;" c +ExprIndex vendor/syn/src/gen/eq.rs /^impl Eq for ExprIndex {}$/;" c +ExprIndex vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprIndex {$/;" c +ExprIndex vendor/syn/src/gen/hash.rs /^impl Hash for ExprIndex {$/;" c +ExprLet vendor/syn/src/expr.rs /^ impl Parse for ExprLet {$/;" c module:parsing +ExprLet vendor/syn/src/expr.rs /^ impl ToTokens for ExprLet {$/;" c module:printing +ExprLet vendor/syn/src/gen/clone.rs /^impl Clone for ExprLet {$/;" c +ExprLet vendor/syn/src/gen/debug.rs /^impl Debug for ExprLet {$/;" c +ExprLet vendor/syn/src/gen/eq.rs /^impl Eq for ExprLet {}$/;" c +ExprLet vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprLet {$/;" c +ExprLet vendor/syn/src/gen/hash.rs /^impl Hash for ExprLet {$/;" c +ExprLit vendor/syn/src/expr.rs /^ impl Parse for ExprLit {$/;" c module:parsing +ExprLit vendor/syn/src/expr.rs /^ impl ToTokens for ExprLit {$/;" c module:printing +ExprLit vendor/syn/src/gen/clone.rs /^impl Clone for ExprLit {$/;" c +ExprLit vendor/syn/src/gen/debug.rs /^impl Debug for ExprLit {$/;" c +ExprLit vendor/syn/src/gen/eq.rs /^impl Eq for ExprLit {}$/;" c +ExprLit vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprLit {$/;" c +ExprLit vendor/syn/src/gen/hash.rs /^impl Hash for ExprLit {$/;" c +ExprLoop vendor/syn/src/expr.rs /^ impl Parse for ExprLoop {$/;" c module:parsing +ExprLoop vendor/syn/src/expr.rs /^ impl ToTokens for ExprLoop {$/;" c module:printing +ExprLoop vendor/syn/src/gen/clone.rs /^impl Clone for ExprLoop {$/;" c +ExprLoop vendor/syn/src/gen/debug.rs /^impl Debug for ExprLoop {$/;" c +ExprLoop vendor/syn/src/gen/eq.rs /^impl Eq for ExprLoop {}$/;" c +ExprLoop vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprLoop {$/;" c +ExprLoop vendor/syn/src/gen/hash.rs /^impl Hash for ExprLoop {$/;" c +ExprMacro vendor/syn/src/expr.rs /^ impl Parse for ExprMacro {$/;" c module:parsing +ExprMacro vendor/syn/src/expr.rs /^ impl ToTokens for ExprMacro {$/;" c module:printing +ExprMacro vendor/syn/src/gen/clone.rs /^impl Clone for ExprMacro {$/;" c +ExprMacro vendor/syn/src/gen/debug.rs /^impl Debug for ExprMacro {$/;" c +ExprMacro vendor/syn/src/gen/eq.rs /^impl Eq for ExprMacro {}$/;" c +ExprMacro vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprMacro {$/;" c +ExprMacro vendor/syn/src/gen/hash.rs /^impl Hash for ExprMacro {$/;" c +ExprMatch vendor/syn/src/expr.rs /^ impl Parse for ExprMatch {$/;" c module:parsing +ExprMatch vendor/syn/src/expr.rs /^ impl ToTokens for ExprMatch {$/;" c module:printing +ExprMatch vendor/syn/src/gen/clone.rs /^impl Clone for ExprMatch {$/;" c +ExprMatch vendor/syn/src/gen/debug.rs /^impl Debug for ExprMatch {$/;" c +ExprMatch vendor/syn/src/gen/eq.rs /^impl Eq for ExprMatch {}$/;" c +ExprMatch vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprMatch {$/;" c +ExprMatch vendor/syn/src/gen/hash.rs /^impl Hash for ExprMatch {$/;" c +ExprMethodCall vendor/syn/src/expr.rs /^ impl ToTokens for ExprMethodCall {$/;" c module:printing +ExprMethodCall vendor/syn/src/gen/clone.rs /^impl Clone for ExprMethodCall {$/;" c +ExprMethodCall vendor/syn/src/gen/debug.rs /^impl Debug for ExprMethodCall {$/;" c +ExprMethodCall vendor/syn/src/gen/eq.rs /^impl Eq for ExprMethodCall {}$/;" c +ExprMethodCall vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprMethodCall {$/;" c +ExprMethodCall vendor/syn/src/gen/hash.rs /^impl Hash for ExprMethodCall {$/;" c +ExprParen vendor/syn/src/expr.rs /^ impl Parse for ExprParen {$/;" c module:parsing +ExprParen vendor/syn/src/expr.rs /^ impl ToTokens for ExprParen {$/;" c module:printing +ExprParen vendor/syn/src/gen/clone.rs /^impl Clone for ExprParen {$/;" c +ExprParen vendor/syn/src/gen/debug.rs /^impl Debug for ExprParen {$/;" c +ExprParen vendor/syn/src/gen/eq.rs /^impl Eq for ExprParen {}$/;" c +ExprParen vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprParen {$/;" c +ExprParen vendor/syn/src/gen/hash.rs /^impl Hash for ExprParen {$/;" c +ExprPath vendor/syn/src/expr.rs /^ impl Parse for ExprPath {$/;" c module:parsing +ExprPath vendor/syn/src/expr.rs /^ impl ToTokens for ExprPath {$/;" c module:printing +ExprPath vendor/syn/src/gen/clone.rs /^impl Clone for ExprPath {$/;" c +ExprPath vendor/syn/src/gen/debug.rs /^impl Debug for ExprPath {$/;" c +ExprPath vendor/syn/src/gen/eq.rs /^impl Eq for ExprPath {}$/;" c +ExprPath vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprPath {$/;" c +ExprPath vendor/syn/src/gen/hash.rs /^impl Hash for ExprPath {$/;" c +ExprRange vendor/syn/src/expr.rs /^ impl ToTokens for ExprRange {$/;" c module:printing +ExprRange vendor/syn/src/gen/clone.rs /^impl Clone for ExprRange {$/;" c +ExprRange vendor/syn/src/gen/debug.rs /^impl Debug for ExprRange {$/;" c +ExprRange vendor/syn/src/gen/eq.rs /^impl Eq for ExprRange {}$/;" c +ExprRange vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprRange {$/;" c +ExprRange vendor/syn/src/gen/hash.rs /^impl Hash for ExprRange {$/;" c +ExprReference vendor/syn/src/expr.rs /^ impl Parse for ExprReference {$/;" c module:parsing +ExprReference vendor/syn/src/expr.rs /^ impl ToTokens for ExprReference {$/;" c module:printing +ExprReference vendor/syn/src/gen/clone.rs /^impl Clone for ExprReference {$/;" c +ExprReference vendor/syn/src/gen/debug.rs /^impl Debug for ExprReference {$/;" c +ExprReference vendor/syn/src/gen/eq.rs /^impl Eq for ExprReference {}$/;" c +ExprReference vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprReference {$/;" c +ExprReference vendor/syn/src/gen/hash.rs /^impl Hash for ExprReference {$/;" c +ExprRepeat vendor/syn/src/expr.rs /^ impl Parse for ExprRepeat {$/;" c module:parsing +ExprRepeat vendor/syn/src/expr.rs /^ impl ToTokens for ExprRepeat {$/;" c module:printing +ExprRepeat vendor/syn/src/gen/clone.rs /^impl Clone for ExprRepeat {$/;" c +ExprRepeat vendor/syn/src/gen/debug.rs /^impl Debug for ExprRepeat {$/;" c +ExprRepeat vendor/syn/src/gen/eq.rs /^impl Eq for ExprRepeat {}$/;" c +ExprRepeat vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprRepeat {$/;" c +ExprRepeat vendor/syn/src/gen/hash.rs /^impl Hash for ExprRepeat {$/;" c +ExprReturn vendor/syn/src/expr.rs /^ impl Parse for ExprReturn {$/;" c module:parsing +ExprReturn vendor/syn/src/expr.rs /^ impl ToTokens for ExprReturn {$/;" c module:printing +ExprReturn vendor/syn/src/gen/clone.rs /^impl Clone for ExprReturn {$/;" c +ExprReturn vendor/syn/src/gen/debug.rs /^impl Debug for ExprReturn {$/;" c +ExprReturn vendor/syn/src/gen/eq.rs /^impl Eq for ExprReturn {}$/;" c +ExprReturn vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprReturn {$/;" c +ExprReturn vendor/syn/src/gen/hash.rs /^impl Hash for ExprReturn {$/;" c +ExprStruct vendor/syn/src/expr.rs /^ impl Parse for ExprStruct {$/;" c module:parsing +ExprStruct vendor/syn/src/expr.rs /^ impl ToTokens for ExprStruct {$/;" c module:printing +ExprStruct vendor/syn/src/gen/clone.rs /^impl Clone for ExprStruct {$/;" c +ExprStruct vendor/syn/src/gen/debug.rs /^impl Debug for ExprStruct {$/;" c +ExprStruct vendor/syn/src/gen/eq.rs /^impl Eq for ExprStruct {}$/;" c +ExprStruct vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprStruct {$/;" c +ExprStruct vendor/syn/src/gen/hash.rs /^impl Hash for ExprStruct {$/;" c +ExprTry vendor/syn/src/expr.rs /^ impl ToTokens for ExprTry {$/;" c module:printing +ExprTry vendor/syn/src/gen/clone.rs /^impl Clone for ExprTry {$/;" c +ExprTry vendor/syn/src/gen/debug.rs /^impl Debug for ExprTry {$/;" c +ExprTry vendor/syn/src/gen/eq.rs /^impl Eq for ExprTry {}$/;" c +ExprTry vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprTry {$/;" c +ExprTry vendor/syn/src/gen/hash.rs /^impl Hash for ExprTry {$/;" c +ExprTryBlock vendor/syn/src/expr.rs /^ impl Parse for ExprTryBlock {$/;" c module:parsing +ExprTryBlock vendor/syn/src/expr.rs /^ impl ToTokens for ExprTryBlock {$/;" c module:printing +ExprTryBlock vendor/syn/src/gen/clone.rs /^impl Clone for ExprTryBlock {$/;" c +ExprTryBlock vendor/syn/src/gen/debug.rs /^impl Debug for ExprTryBlock {$/;" c +ExprTryBlock vendor/syn/src/gen/eq.rs /^impl Eq for ExprTryBlock {}$/;" c +ExprTryBlock vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprTryBlock {$/;" c +ExprTryBlock vendor/syn/src/gen/hash.rs /^impl Hash for ExprTryBlock {$/;" c +ExprTuple vendor/syn/src/expr.rs /^ impl ToTokens for ExprTuple {$/;" c module:printing +ExprTuple vendor/syn/src/gen/clone.rs /^impl Clone for ExprTuple {$/;" c +ExprTuple vendor/syn/src/gen/debug.rs /^impl Debug for ExprTuple {$/;" c +ExprTuple vendor/syn/src/gen/eq.rs /^impl Eq for ExprTuple {}$/;" c +ExprTuple vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprTuple {$/;" c +ExprTuple vendor/syn/src/gen/hash.rs /^impl Hash for ExprTuple {$/;" c +ExprType vendor/syn/src/expr.rs /^ impl ToTokens for ExprType {$/;" c module:printing +ExprType vendor/syn/src/gen/clone.rs /^impl Clone for ExprType {$/;" c +ExprType vendor/syn/src/gen/debug.rs /^impl Debug for ExprType {$/;" c +ExprType vendor/syn/src/gen/eq.rs /^impl Eq for ExprType {}$/;" c +ExprType vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprType {$/;" c +ExprType vendor/syn/src/gen/hash.rs /^impl Hash for ExprType {$/;" c +ExprUnary vendor/syn/src/expr.rs /^ impl Parse for ExprUnary {$/;" c module:parsing +ExprUnary vendor/syn/src/expr.rs /^ impl ToTokens for ExprUnary {$/;" c module:printing +ExprUnary vendor/syn/src/gen/clone.rs /^impl Clone for ExprUnary {$/;" c +ExprUnary vendor/syn/src/gen/debug.rs /^impl Debug for ExprUnary {$/;" c +ExprUnary vendor/syn/src/gen/eq.rs /^impl Eq for ExprUnary {}$/;" c +ExprUnary vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprUnary {$/;" c +ExprUnary vendor/syn/src/gen/hash.rs /^impl Hash for ExprUnary {$/;" c +ExprUnsafe vendor/syn/src/expr.rs /^ impl Parse for ExprUnsafe {$/;" c module:parsing +ExprUnsafe vendor/syn/src/expr.rs /^ impl ToTokens for ExprUnsafe {$/;" c module:printing +ExprUnsafe vendor/syn/src/gen/clone.rs /^impl Clone for ExprUnsafe {$/;" c +ExprUnsafe vendor/syn/src/gen/debug.rs /^impl Debug for ExprUnsafe {$/;" c +ExprUnsafe vendor/syn/src/gen/eq.rs /^impl Eq for ExprUnsafe {}$/;" c +ExprUnsafe vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprUnsafe {$/;" c +ExprUnsafe vendor/syn/src/gen/hash.rs /^impl Hash for ExprUnsafe {$/;" c +ExprWhile vendor/syn/src/expr.rs /^ impl Parse for ExprWhile {$/;" c module:parsing +ExprWhile vendor/syn/src/expr.rs /^ impl ToTokens for ExprWhile {$/;" c module:printing +ExprWhile vendor/syn/src/gen/clone.rs /^impl Clone for ExprWhile {$/;" c +ExprWhile vendor/syn/src/gen/debug.rs /^impl Debug for ExprWhile {$/;" c +ExprWhile vendor/syn/src/gen/eq.rs /^impl Eq for ExprWhile {}$/;" c +ExprWhile vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprWhile {$/;" c +ExprWhile vendor/syn/src/gen/hash.rs /^impl Hash for ExprWhile {$/;" c +ExprYield vendor/syn/src/expr.rs /^ impl Parse for ExprYield {$/;" c module:parsing +ExprYield vendor/syn/src/expr.rs /^ impl ToTokens for ExprYield {$/;" c module:printing +ExprYield vendor/syn/src/gen/clone.rs /^impl Clone for ExprYield {$/;" c +ExprYield vendor/syn/src/gen/debug.rs /^impl Debug for ExprYield {$/;" c +ExprYield vendor/syn/src/gen/eq.rs /^impl Eq for ExprYield {}$/;" c +ExprYield vendor/syn/src/gen/eq.rs /^impl PartialEq for ExprYield {$/;" c +ExprYield vendor/syn/src/gen/hash.rs /^impl Hash for ExprYield {$/;" c +Expression vendor/fluent-bundle/src/resolver/expression.rs /^impl<'p> WriteValue for ast::Expression<&'p str> {$/;" c +Expression vendor/fluent-syntax/src/ast/mod.rs /^pub enum Expression {$/;" g +ExtCreatePen vendor/winapi/src/um/wingdi.rs /^ pub fn ExtCreatePen($/;" f +ExtCreateRegion vendor/winapi/src/um/wingdi.rs /^ pub fn ExtCreateRegion($/;" f +ExtDeviceMode vendor/winapi/src/um/winspool.rs /^ pub fn ExtDeviceMode($/;" f +ExtEscape vendor/winapi/src/um/wingdi.rs /^ pub fn ExtEscape($/;" f +ExtFloodFill vendor/winapi/src/um/wingdi.rs /^ pub fn ExtFloodFill($/;" f +ExtIsAsciiAlphanumeric vendor/tinystr/benches/tinystr.rs /^trait ExtIsAsciiAlphanumeric {$/;" i +ExtSelectClipRgn vendor/winapi/src/um/wingdi.rs /^ pub fn ExtSelectClipRgn($/;" f +ExtTextOutA vendor/winapi/src/um/wingdi.rs /^ pub fn ExtTextOutA($/;" f +ExtTextOutW vendor/winapi/src/um/wingdi.rs /^ pub fn ExtTextOutW($/;" f +ExtToAsciiTitlecase vendor/tinystr/benches/tinystr.rs /^trait ExtToAsciiTitlecase {$/;" i +ExtendFromSlice vendor/smallvec/src/lib.rs /^pub trait ExtendFromSlice {$/;" i +ExtractAssociatedIconA vendor/winapi/src/um/shellapi.rs /^ pub fn ExtractAssociatedIconA($/;" f +ExtractAssociatedIconExA vendor/winapi/src/um/shellapi.rs /^ pub fn ExtractAssociatedIconExA($/;" f +ExtractAssociatedIconExW vendor/winapi/src/um/shellapi.rs /^ pub fn ExtractAssociatedIconExW($/;" f +ExtractAssociatedIconW vendor/winapi/src/um/shellapi.rs /^ pub fn ExtractAssociatedIconW($/;" f +ExtractIconA vendor/winapi/src/um/shellapi.rs /^ pub fn ExtractIconA($/;" f +ExtractIconExA vendor/winapi/src/um/shellapi.rs /^ pub fn ExtractIconExA($/;" f +ExtractIconExW vendor/winapi/src/um/shellapi.rs /^ pub fn ExtractIconExW($/;" f +ExtractIconW vendor/winapi/src/um/shellapi.rs /^ pub fn ExtractIconW($/;" f +F vendor/futures-core/src/future.rs /^ impl Sealed for F where F: ?Sized + Future> {}$/;" c module:private_try_future +F vendor/futures-core/src/future.rs /^impl TryFuture for F$/;" c +F vendor/futures-core/src/future.rs /^impl FusedFuture for &mut F {$/;" c +F vendor/futures-core/src/stream.rs /^impl FusedStream for &mut F {$/;" c +F vendor/futures-task/src/future_obj.rs /^unsafe impl<'a, T, F> UnsafeFutureObj<'a, T> for &'a mut F$/;" c +F vendor/futures/tests/stream_futures_unordered.rs /^ impl Future for F {$/;" c function:polled_only_once_at_most_per_iteration +F vendor/futures/tests/stream_futures_unordered.rs /^ struct F {$/;" s function:polled_only_once_at_most_per_iteration +F vendor/syn/src/lookahead.rs /^impl T, T: Token> Peek for F {$/;" c +F vendor/syn/src/lookahead.rs /^impl T, T: Token> Sealed for F {}$/;" c +F vendor/syn/src/parse.rs /^impl Parser for F$/;" c +FACE_INVALID lib/readline/display.c /^#define FACE_INVALID /;" d file: +FACE_NORMAL lib/readline/display.c /^#define FACE_NORMAL /;" d file: +FACE_STANDOUT lib/readline/display.c /^#define FACE_STANDOUT /;" d file: +FAILED vendor/winapi/src/shared/winerror.rs /^pub fn FAILED(hr: HRESULT) -> bool {$/;" f +FAIL_SEARCH lib/readline/histexpand.c /^#define FAIL_SEARCH(/;" d file: +FALLBACK_BASE lib/sh/snprintf.c /^# define FALLBACK_BASE /;" d file: +FALLBACK_FMTSIZE lib/sh/snprintf.c /^# define FALLBACK_FMTSIZE /;" d file: +FALSE test.c /^#define FALSE /;" d file: +FARPROC vendor/libloading/src/os/windows/mod.rs /^ pub(super) enum FARPROC {}$/;" g module:windows_imports +FARPROC vendor/winapi/src/shared/minwindef.rs /^pub type FARPROC = *mut __some_function;$/;" t +FASTCOPY general.h /^# define FASTCOPY(/;" d +FASTCOPY general.h /^# define FASTCOPY(/;" d +FASTCOPY general.h /^# define FASTCOPY(/;" d +FASTCOPY lib/malloc/imalloc.h /^# define FASTCOPY(/;" d +FASTCOPY lib/malloc/imalloc.h /^# define FASTCOPY(/;" d +FASTCOPY lib/malloc/imalloc.h /^# define FASTCOPY(/;" d +FC0 support/man2html.c /^#define FC0 /;" d file: +FC1 support/man2html.c /^#define FC1 /;" d file: +FC2 support/man2html.c /^#define FC2 /;" d file: +FC3 support/man2html.c /^#define FC3 /;" d file: +FCHAR vendor/winapi/src/shared/ntdef.rs /^pub type FCHAR = UCHAR;$/;" t +FCHAR vendor/winapi/src/um/winnt.rs /^pub type FCHAR = BYTE;$/;" t +FCT lib/glob/sm_loop.c /^FCT (pattern, string, flags)$/;" f +FCT lib/glob/smatch.c /^#define FCT /;" d file: +FD_BITMAP_DEFAULT_SIZE execute_cmd.c /^#define FD_BITMAP_DEFAULT_SIZE /;" d file: +FD_BITMAP_SIZE shell.h /^#define FD_BITMAP_SIZE /;" d +FD_CLOEXEC include/filecntl.h /^#define FD_CLOEXEC /;" d +FD_NCLOEXEC include/filecntl.h /^#define FD_NCLOEXEC /;" d +FD_SET vendor/winapi/src/um/winsock2.rs /^pub type FD_SET = fd_set;$/;" t +FEOF lib/intl/localealias.c /^# define FEOF(/;" d file: +FEVAL_BUILTIN builtins/evalfile.c /^#define FEVAL_BUILTIN /;" d file: +FEVAL_CHECKBINARY builtins/evalfile.c /^#define FEVAL_CHECKBINARY /;" d file: +FEVAL_ENOENTOK builtins/evalfile.c /^#define FEVAL_ENOENTOK /;" d file: +FEVAL_HISTORY builtins/evalfile.c /^#define FEVAL_HISTORY /;" d file: +FEVAL_LONGJMP builtins/evalfile.c /^#define FEVAL_LONGJMP /;" d file: +FEVAL_NONINT builtins/evalfile.c /^#define FEVAL_NONINT /;" d file: +FEVAL_NOPUSHARGS builtins/evalfile.c /^#define FEVAL_NOPUSHARGS /;" d file: +FEVAL_REGFILE builtins/evalfile.c /^#define FEVAL_REGFILE /;" d file: +FEVAL_UNWINDPROT builtins/evalfile.c /^#define FEVAL_UNWINDPROT /;" d file: +FEW vendor/intl_pluralrules/src/lib.rs /^ FEW,$/;" e enum:PluralCategory +FFIND lib/readline/rldefs.h /^#define FFIND /;" d +FFLAG builtins_rust/bind/src/lib.rs /^macro_rules! FFLAG {$/;" M +FGETS lib/intl/localealias.c /^# define FGETS(/;" d file: +FIFO_INCR subst.c /^#define FIFO_INCR /;" d file: +FILE r_bash/src/lib.rs /^pub type FILE = _IO_FILE;$/;" t +FILE r_glob/src/lib.rs /^pub type FILE = _IO_FILE;$/;" t +FILE r_readline/src/lib.rs /^pub type FILE = _IO_FILE;$/;" t +FILE vendor/libc/src/fuchsia/mod.rs /^impl ::Clone for FILE {$/;" c +FILE vendor/libc/src/fuchsia/mod.rs /^impl ::Copy for FILE {}$/;" c +FILE vendor/libc/src/fuchsia/mod.rs /^pub enum FILE {}$/;" g +FILE vendor/libc/src/solid/mod.rs /^impl ::Clone for FILE {$/;" c +FILE vendor/libc/src/solid/mod.rs /^impl ::Copy for FILE {}$/;" c +FILE vendor/libc/src/solid/mod.rs /^pub enum FILE {}$/;" g +FILE vendor/libc/src/unix/mod.rs /^impl ::Clone for FILE {$/;" c +FILE vendor/libc/src/unix/mod.rs /^impl ::Copy for FILE {}$/;" c +FILE vendor/libc/src/unix/mod.rs /^pub enum FILE {}$/;" g +FILE vendor/libc/src/vxworks/mod.rs /^impl ::Clone for FILE {$/;" c +FILE vendor/libc/src/vxworks/mod.rs /^impl ::Copy for FILE {}$/;" c +FILE vendor/libc/src/vxworks/mod.rs /^pub enum FILE {}$/;" g +FILE vendor/libc/src/wasi.rs /^pub enum FILE {}$/;" g +FILE vendor/libc/src/windows/mod.rs /^impl ::Clone for FILE {$/;" c +FILE vendor/libc/src/windows/mod.rs /^impl ::Copy for FILE {}$/;" c +FILE vendor/libc/src/windows/mod.rs /^pub enum FILE {}$/;" g +FILEINFO mailcheck.c /^} FILEINFO;$/;" t typeref:struct:_fileinfo file: +FILENAME_HASH_BUCKETS hashcmd.h /^#define FILENAME_HASH_BUCKETS /;" d +FILEOP_FLAGS vendor/winapi/src/um/shellapi.rs /^pub type FILEOP_FLAGS = WORD;$/;" t +FILESYSTEM_PREFIX_LEN lib/intl/relocatable.c /^# define FILESYSTEM_PREFIX_LEN(/;" d file: +FILETYPE_INDICATORS lib/readline/colors.h /^#define FILETYPE_INDICATORS /;" d +FINDBRK xmalloc.c /^#define FINDBRK(/;" d file: +FIND_ALLOC lib/malloc/table.c /^#define FIND_ALLOC /;" d file: +FIND_CHILD jobs.c /^#define FIND_CHILD(/;" d file: +FIND_EXIST lib/malloc/table.c /^#define FIND_EXIST /;" d file: +FIND_OR_MAKE_VARIABLE variables.c /^#define FIND_OR_MAKE_VARIABLE(/;" d file: +FIRST_IPADDRESS vendor/winapi/src/um/commctrl.rs /^pub fn FIRST_IPADDRESS(x: LPARAM) -> BYTE {$/;" f +FIXED_INFO vendor/winapi/src/um/iptypes.rs /^pub type FIXED_INFO = FIXED_INFO_W2KSP1;$/;" t +FLAG_ERROR builtins_rust/set/src/lib.rs /^macro_rules! FLAG_ERROR {$/;" M +FLAG_ERROR flags.h /^#define FLAG_ERROR /;" d +FLAG_OFF builtins_rust/set/src/lib.rs /^macro_rules! FLAG_OFF {$/;" M +FLAG_OFF flags.h /^#define FLAG_OFF /;" d +FLAG_ON builtins_rust/set/src/lib.rs /^macro_rules! FLAG_ON {$/;" M +FLAG_ON flags.h /^#define FLAG_ON /;" d +FLAG_UNKNOWN builtins_rust/set/src/lib.rs /^macro_rules! FLAG_UNKNOWN {$/;" M +FLAG_UNKNOWN flags.h /^#define FLAG_UNKNOWN /;" d +FLOAT vendor/winapi/src/shared/minwindef.rs /^pub type FLOAT = c_float;$/;" t +FLOATING_POINT lib/sh/snprintf.c /^#define FLOATING_POINT$/;" d file: +FLONG vendor/winapi/src/shared/ntdef.rs /^pub type FLONG = ULONG;$/;" t +FLONG vendor/winapi/src/um/winnt.rs /^pub type FLONG = DWORD;$/;" t +FLUSHIBP support/man2html.c /^#define FLUSHIBP /;" d file: +FL_ADDBASE externs.h /^#define FL_ADDBASE /;" d +FL_ADDBASE lib/sh/fmtulong.c /^# define FL_ADDBASE /;" d file: +FL_ADDBASE lib/sh/snprintf.c /^# define FL_ADDBASE /;" d file: +FL_HEXUPPER externs.h /^#define FL_HEXUPPER /;" d +FL_HEXUPPER lib/sh/fmtulong.c /^# define FL_HEXUPPER /;" d file: +FL_HEXUPPER lib/sh/snprintf.c /^# define FL_HEXUPPER /;" d file: +FL_PREFIX externs.h /^#define FL_PREFIX /;" d +FL_PREFIX lib/sh/fmtulong.c /^# define FL_PREFIX /;" d file: +FL_PREFIX lib/sh/snprintf.c /^# define FL_PREFIX /;" d file: +FL_UNSIGNED externs.h /^#define FL_UNSIGNED /;" d +FL_UNSIGNED lib/sh/fmtulong.c /^# define FL_UNSIGNED /;" d file: +FL_UNSIGNED lib/sh/snprintf.c /^# define FL_UNSIGNED /;" d file: +FMTCHAR lib/sh/fmtulong.c /^#define FMTCHAR(/;" d file: +FMTID vendor/winapi/src/shared/guiddef.rs /^pub type FMTID = GUID;$/;" t +FNMATCH_EXTFLAG builtins_rust/help/src/lib.rs /^macro_rules! FNMATCH_EXTFLAG {$/;" M +FNMATCH_EXTFLAG pathexp.h /^# define FNMATCH_EXTFLAG /;" d +FNMATCH_EXTFLAG r_bashhist/src/lib.rs /^macro_rules! FNMATCH_EXTFLAG {$/;" M +FNMATCH_IGNCASE pathexp.h /^#define FNMATCH_IGNCASE /;" d +FNMATCH_NOCASEGLOB pathexp.h /^#define FNMATCH_NOCASEGLOB /;" d +FNM_CASEFOLD lib/glob/strmatch.h /^#define FNM_CASEFOLD /;" d +FNM_EXTMATCH lib/glob/strmatch.h /^#define FNM_EXTMATCH /;" d +FNM_FIRSTCHAR lib/glob/strmatch.h /^#define FNM_FIRSTCHAR /;" d +FNM_LEADING_DIR lib/glob/strmatch.h /^#define FNM_LEADING_DIR /;" d +FNM_NOESCAPE lib/glob/strmatch.h /^#define FNM_NOESCAPE /;" d +FNM_NOMATCH builtins_rust/help/src/lib.rs /^macro_rules! FNM_NOMATCH {$/;" M +FNM_NOMATCH lib/glob/strmatch.h /^#define FNM_NOMATCH /;" d +FNM_NOMATCH r_bashhist/src/lib.rs /^macro_rules! FNM_NOMATCH {$/;" M +FNM_PATHNAME lib/glob/strmatch.h /^#define FNM_PATHNAME /;" d +FNM_PERIOD lib/glob/strmatch.h /^#define FNM_PERIOD /;" d +FNV_OFFSET hashlib.c /^#define FNV_OFFSET /;" d file: +FNV_PRIME hashlib.c /^#define FNV_PRIME /;" d file: +FO0 support/man2html.c /^#define FO0 /;" d file: +FO1 support/man2html.c /^#define FO1 /;" d file: +FO2 support/man2html.c /^#define FO2 /;" d file: +FO3 support/man2html.c /^#define FO3 /;" d file: +FOLD lib/glob/gmisc.c /^#define FOLD(/;" d file: +FOLD lib/glob/smatch.c /^# define FOLD(/;" d file: +FOLD lib/glob/smatch.c /^#define FOLD(/;" d file: +FONTENUMPROCA vendor/winapi/src/um/wingdi.rs /^pub type FONTENUMPROCA = OLDFONTENUMPROCA;$/;" t +FONTENUMPROCW vendor/winapi/src/um/wingdi.rs /^pub type FONTENUMPROCW = OLDFONTENUMPROCW;$/;" t +FORCE_EOF bashjmp.h /^#define FORCE_EOF /;" d +FORKSLEEP_MAX jobs.h /^#define FORKSLEEP_MAX /;" d +FORK_ASYNC jobs.h /^#define FORK_ASYNC /;" d +FORK_NOJOB jobs.h /^#define FORK_NOJOB /;" d +FORK_NOTERM jobs.h /^#define FORK_NOTERM /;" d +FORK_SYNC jobs.h /^#define FORK_SYNC /;" d +FOR_COM builtins_rust/kill/src/intercdep.rs /^pub type FOR_COM = for_com;$/;" t +FOR_COM builtins_rust/setattr/src/intercdep.rs /^pub type FOR_COM = for_com;$/;" t +FOR_COM command.h /^} FOR_COM;$/;" t typeref:struct:for_com +FOR_COM r_bash/src/lib.rs /^pub type FOR_COM = for_com;$/;" t +FOR_COM r_glob/src/lib.rs /^pub type FOR_COM = for_com;$/;" t +FOR_COM r_readline/src/lib.rs /^pub type FOR_COM = for_com;$/;" t +FOUND lib/sh/snprintf.c /^#define FOUND /;" d file: +FOURTH_IPADDRESS vendor/winapi/src/um/commctrl.rs /^pub fn FOURTH_IPADDRESS(x: LPARAM) -> BYTE {$/;" f +FREE builtins_rust/common/src/lib.rs /^macro_rules! FREE {$/;" M +FREE builtins_rust/exec/src/lib.rs /^macro_rules! FREE {$/;" M +FREE builtins_rust/hash/src/lib.rs /^macro_rules! FREE {$/;" M +FREE general.h /^#define FREE(/;" d +FREE lib/glob/glob.c /^# define FREE(/;" d file: +FREE lib/glob/xmbsrtowcs.c /^# define FREE(/;" d file: +FREE lib/readline/histlib.h /^# define FREE(/;" d +FREE lib/readline/rldefs.h /^# define FREE(/;" d +FREE lib/sh/snprintf.c /^# define FREE(/;" d file: +FREE_BLOCKS lib/intl/dcigettext.c /^# define FREE_BLOCKS(/;" d file: +FREE_EXPORTSTR variables.h /^#define FREE_EXPORTSTR(/;" d +FREE_EXPRESSION lib/intl/plural-exp.h /^# define FREE_EXPRESSION /;" d +FREE_EXPRESSION lib/intl/plural.c /^FREE_EXPRESSION (exp)$/;" f +FSHORT vendor/winapi/src/shared/ntdef.rs /^pub type FSHORT = USHORT;$/;" t +FSHORT vendor/winapi/src/um/winnt.rs /^pub type FSHORT = WORD;$/;" t +FS_DIRECTORY general.h /^#define FS_DIRECTORY /;" d +FS_EXECABLE builtins_rust/type/src/lib.rs /^macro_rules! FS_EXECABLE {$/;" M +FS_EXECABLE general.h /^#define FS_EXECABLE /;" d +FS_EXEC_ONLY builtins_rust/type/src/lib.rs /^macro_rules! FS_EXEC_ONLY {$/;" M +FS_EXEC_ONLY general.h /^#define FS_EXEC_ONLY /;" d +FS_EXEC_PREFERRED builtins_rust/type/src/lib.rs /^macro_rules! FS_EXEC_PREFERRED {$/;" M +FS_EXEC_PREFERRED general.h /^#define FS_EXEC_PREFERRED /;" d +FS_EXISTS general.h /^#define FS_EXISTS /;" d +FS_NODIRS builtins_rust/type/src/lib.rs /^macro_rules! FS_NODIRS {$/;" M +FS_NODIRS general.h /^#define FS_NODIRS /;" d +FS_READABLE general.h /^#define FS_READABLE /;" d +FTO lib/readline/rldefs.h /^#define FTO /;" d +FUNCTIONS_HASH_BUCKETS variables.c /^#define FUNCTIONS_HASH_BUCKETS /;" d file: +FUNCTION_DEF builtins_rust/kill/src/intercdep.rs /^pub type FUNCTION_DEF = function_def;$/;" t +FUNCTION_DEF builtins_rust/setattr/src/intercdep.rs /^pub type FUNCTION_DEF = function_def;$/;" t +FUNCTION_DEF command.h /^} FUNCTION_DEF;$/;" t typeref:struct:function_def +FUNCTION_DEF r_bash/src/lib.rs /^pub type FUNCTION_DEF = function_def;$/;" t +FUNCTION_DEF r_glob/src/lib.rs /^pub type FUNCTION_DEF = function_def;$/;" t +FUNCTION_DEF r_readline/src/lib.rs /^pub type FUNCTION_DEF = function_def;$/;" t +FUNCTION_FOR_MACRO lib/readline/util.c /^#define FUNCTION_FOR_MACRO(/;" d file: +FUNCTION_FOR_MACRO lib/readline/util.c /^FUNCTION_FOR_MACRO (_rl_digit_value)$/;" f typeref:typename:_rl_digit_p +FUNCTION_IMPORT configure.ac /^AC_DEFINE(FUNCTION_IMPORT)$/;" d +FUNCTION_TO_KEYMAP bashline.c /^# define FUNCTION_TO_KEYMAP(/;" d file: +FUNCTION_TO_KEYMAP lib/readline/rldefs.h /^# define FUNCTION_TO_KEYMAP(/;" d +FUNC_EXTERNAL builtins_rust/declare/src/lib.rs /^macro_rules! FUNC_EXTERNAL {$/;" M +FUNC_EXTERNAL builtins_rust/type/src/lib.rs /^macro_rules! FUNC_EXTERNAL {$/;" M +FUNC_EXTERNAL externs.h /^#define FUNC_EXTERNAL /;" d +FUNC_MULTILINE builtins_rust/declare/src/lib.rs /^macro_rules! FUNC_MULTILINE {$/;" M +FUNC_MULTILINE builtins_rust/type/src/lib.rs /^macro_rules! FUNC_MULTILINE {$/;" M +FUNC_MULTILINE externs.h /^#define FUNC_MULTILINE /;" d +FUNMAP lib/readline/readline.h /^} FUNMAP;$/;" t typeref:struct:_funmap +FUNMAP r_readline/src/lib.rs /^pub type FUNMAP = _funmap;$/;" t +FV_FORCETEMPENV variables.c /^#define FV_FORCETEMPENV /;" d file: +FV_NODYNAMIC variables.c /^#define FV_NODYNAMIC /;" d file: +FV_SKIPINVISIBLE variables.c /^#define FV_SKIPINVISIBLE /;" d file: +FXPT16DOT16 vendor/winapi/src/um/wingdi.rs /^pub type FXPT16DOT16 = c_long;$/;" t +FXPT2DOT30 vendor/winapi/src/um/wingdi.rs /^pub type FXPT2DOT30 = c_long;$/;" t +F_OK lib/glob/glob.c /^# define F_OK /;" d file: +F_OK lib/sh/eaccess.c /^#define F_OK /;" d file: +F_OK test.c /^#define F_OK /;" d file: +Factory builtins_rust/exec_cmd/src/lib.rs /^trait Factory {$/;" i +Fallback vendor/proc-macro2/src/wrapper.rs /^ Fallback(fallback::Group),$/;" e enum:Group +Fallback vendor/proc-macro2/src/wrapper.rs /^ Fallback(fallback::Ident),$/;" e enum:Ident +Fallback vendor/proc-macro2/src/wrapper.rs /^ Fallback(fallback::LexError),$/;" e enum:LexError +Fallback vendor/proc-macro2/src/wrapper.rs /^ Fallback(fallback::Literal),$/;" e enum:Literal +Fallback vendor/proc-macro2/src/wrapper.rs /^ Fallback(fallback::SourceFile),$/;" e enum:SourceFile +Fallback vendor/proc-macro2/src/wrapper.rs /^ Fallback(fallback::Span),$/;" e enum:Span +Fallback vendor/proc-macro2/src/wrapper.rs /^ Fallback(fallback::TokenStream),$/;" e enum:TokenStream +Fallback vendor/proc-macro2/src/wrapper.rs /^ Fallback(fallback::TokenTreeIter),$/;" e enum:TokenTreeIter +FalseCmd builtins_rust/exec_cmd/src/lib.rs /^ FalseCmd,$/;" e enum:CMDType +FalseComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for FalseComand {$/;" c +FalseComand builtins_rust/exec_cmd/src/lib.rs /^struct FalseComand;$/;" s +Fanout vendor/futures-util/src/sink/fanout.rs /^impl Sink for Fanout$/;" c +Fanout vendor/futures-util/src/sink/fanout.rs /^impl Fanout {$/;" c +Fanout vendor/futures-util/src/sink/fanout.rs /^impl Debug for Fanout {$/;" c +Farg builtins_rust/complete/src/lib.rs /^pub static mut Farg: *mut c_char = std::ptr::null_mut();$/;" v +Fast compile times vendor/self_cell/README.md /^### Fast compile times$/;" S chapter:`self_cell!` +FatalAppExitA vendor/winapi/src/um/errhandlingapi.rs /^ pub fn FatalAppExitA($/;" f +FatalAppExitW vendor/winapi/src/um/errhandlingapi.rs /^ pub fn FatalAppExitW($/;" f +FatalError vendor/thiserror/tests/test_generics.rs /^ FatalError(E),$/;" e enum:EnumDebugGeneric +FatalExit vendor/winapi/src/um/winbase.rs /^ pub fn FatalExit($/;" f +FcCmd builtins_rust/exec_cmd/src/lib.rs /^ FcCmd,$/;" e enum:CMDType +FcComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for FcComand {$/;" c +FcComand builtins_rust/exec_cmd/src/lib.rs /^struct FcComand;$/;" s +FchmodatFlags vendor/nix/src/sys/stat.rs /^pub enum FchmodatFlags {$/;" g +FdSet vendor/nix/src/sys/select.rs /^impl Default for FdSet {$/;" c +FdSet vendor/nix/src/sys/select.rs /^impl FdSet {$/;" c +FdSet vendor/nix/src/sys/select.rs /^pub struct FdSet(libc::fd_set);$/;" s +Fds vendor/nix/src/sys/select.rs /^impl<'a> DoubleEndedIterator for Fds<'a> {$/;" c +Fds vendor/nix/src/sys/select.rs /^impl<'a> FusedIterator for Fds<'a> {}$/;" c +Fds vendor/nix/src/sys/select.rs /^impl<'a> Iterator for Fds<'a> {$/;" c +Fds vendor/nix/src/sys/select.rs /^pub struct Fds<'a> {$/;" s +Feature `std` vendor/futures/README.md /^### Feature `std`$/;" S section:Usage +Feature flags vendor/memoffset/README.md /^## Feature flags ##$/;" s chapter:memoffset +Features vendor/libc/README.md /^## Features$/;" s chapter:libc - Raw FFI bindings to platforms' system libraries +Feed vendor/futures-util/src/sink/feed.rs /^impl<'a, Si: Sink + Unpin + ?Sized, Item> Feed<'a, Si, Item> {$/;" c +Feed vendor/futures-util/src/sink/feed.rs /^impl + Unpin + ?Sized, Item> Future for Feed<'_, Si, Item> {$/;" c +Feed vendor/futures-util/src/sink/feed.rs /^impl Unpin for Feed<'_, Si, Item> {}$/;" c +Feed vendor/futures-util/src/sink/feed.rs /^pub struct Feed<'a, Si: ?Sized, Item> {$/;" s +FgCmd builtins_rust/exec_cmd/src/lib.rs /^ FgCmd,$/;" e enum:CMDType +FgComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for FgComand {$/;" c +FgComand builtins_rust/exec_cmd/src/lib.rs /^struct FgComand;$/;" s +Field vendor/syn/src/data.rs /^ impl Field {$/;" c module:parsing +Field vendor/syn/src/data.rs /^ impl ToTokens for Field {$/;" c module:printing +Field vendor/syn/src/gen/clone.rs /^impl Clone for Field {$/;" c +Field vendor/syn/src/gen/debug.rs /^impl Debug for Field {$/;" c +Field vendor/syn/src/gen/eq.rs /^impl Eq for Field {}$/;" c +Field vendor/syn/src/gen/eq.rs /^impl PartialEq for Field {$/;" c +Field vendor/syn/src/gen/hash.rs /^impl Hash for Field {$/;" c +Field vendor/thiserror-impl/src/ast.rs /^impl<'a> Field<'a> {$/;" c +Field vendor/thiserror-impl/src/ast.rs /^pub struct Field<'a> {$/;" s +Field vendor/thiserror-impl/src/prop.rs /^impl Field<'_> {$/;" c +Field vendor/thiserror-impl/src/valid.rs /^impl Field<'_> {$/;" c +FieldPat vendor/syn/src/gen/clone.rs /^impl Clone for FieldPat {$/;" c +FieldPat vendor/syn/src/gen/debug.rs /^impl Debug for FieldPat {$/;" c +FieldPat vendor/syn/src/gen/eq.rs /^impl Eq for FieldPat {}$/;" c +FieldPat vendor/syn/src/gen/eq.rs /^impl PartialEq for FieldPat {$/;" c +FieldPat vendor/syn/src/gen/hash.rs /^impl Hash for FieldPat {$/;" c +FieldPat vendor/syn/src/pat.rs /^ impl ToTokens for FieldPat {$/;" c module:printing +FieldStruct builtins_rust/help/src/lib.rs /^struct FieldStruct {$/;" s +FieldValue vendor/syn/src/expr.rs /^ impl Parse for FieldValue {$/;" c module:parsing +FieldValue vendor/syn/src/expr.rs /^ impl ToTokens for FieldValue {$/;" c module:printing +FieldValue vendor/syn/src/gen/clone.rs /^impl Clone for FieldValue {$/;" c +FieldValue vendor/syn/src/gen/debug.rs /^impl Debug for FieldValue {$/;" c +FieldValue vendor/syn/src/gen/eq.rs /^impl Eq for FieldValue {}$/;" c +FieldValue vendor/syn/src/gen/eq.rs /^impl PartialEq for FieldValue {$/;" c +FieldValue vendor/syn/src/gen/hash.rs /^impl Hash for FieldValue {$/;" c +Fields vendor/syn/src/data.rs /^impl Fields {$/;" c +Fields vendor/syn/src/data.rs /^impl IntoIterator for Fields {$/;" c +Fields vendor/syn/src/data.rs /^impl<'a> IntoIterator for &'a Fields {$/;" c +Fields vendor/syn/src/data.rs /^impl<'a> IntoIterator for &'a mut Fields {$/;" c +Fields vendor/syn/src/gen/clone.rs /^impl Clone for Fields {$/;" c +Fields vendor/syn/src/gen/debug.rs /^impl Debug for Fields {$/;" c +Fields vendor/syn/src/gen/eq.rs /^impl Eq for Fields {}$/;" c +Fields vendor/syn/src/gen/eq.rs /^impl PartialEq for Fields {$/;" c +Fields vendor/syn/src/gen/hash.rs /^impl Hash for Fields {$/;" c +FieldsNamed vendor/syn/src/data.rs /^ impl Parse for FieldsNamed {$/;" c module:parsing +FieldsNamed vendor/syn/src/data.rs /^ impl ToTokens for FieldsNamed {$/;" c module:printing +FieldsNamed vendor/syn/src/gen/clone.rs /^impl Clone for FieldsNamed {$/;" c +FieldsNamed vendor/syn/src/gen/debug.rs /^impl Debug for FieldsNamed {$/;" c +FieldsNamed vendor/syn/src/gen/eq.rs /^impl Eq for FieldsNamed {}$/;" c +FieldsNamed vendor/syn/src/gen/eq.rs /^impl PartialEq for FieldsNamed {$/;" c +FieldsNamed vendor/syn/src/gen/hash.rs /^impl Hash for FieldsNamed {$/;" c +FieldsUnnamed vendor/syn/src/data.rs /^ impl Parse for FieldsUnnamed {$/;" c module:parsing +FieldsUnnamed vendor/syn/src/data.rs /^ impl ToTokens for FieldsUnnamed {$/;" c module:printing +FieldsUnnamed vendor/syn/src/gen/clone.rs /^impl Clone for FieldsUnnamed {$/;" c +FieldsUnnamed vendor/syn/src/gen/debug.rs /^impl Debug for FieldsUnnamed {$/;" c +FieldsUnnamed vendor/syn/src/gen/eq.rs /^impl Eq for FieldsUnnamed {}$/;" c +FieldsUnnamed vendor/syn/src/gen/eq.rs /^impl PartialEq for FieldsUnnamed {$/;" c +FieldsUnnamed vendor/syn/src/gen/hash.rs /^impl Hash for FieldsUnnamed {$/;" c +Fifo vendor/nix/src/dir.rs /^ Fifo,$/;" e enum:Type +File vendor/nix/src/dir.rs /^ File,$/;" e enum:Type +File vendor/syn/src/file.rs /^ impl Parse for File {$/;" c module:parsing +File vendor/syn/src/file.rs /^ impl ToTokens for File {$/;" c module:printing +File vendor/syn/src/gen/clone.rs /^impl Clone for File {$/;" c +File vendor/syn/src/gen/debug.rs /^impl Debug for File {$/;" c +File vendor/syn/src/gen/eq.rs /^impl Eq for File {}$/;" c +File vendor/syn/src/gen/eq.rs /^impl PartialEq for File {$/;" c +File vendor/syn/src/gen/hash.rs /^impl Hash for File {$/;" c +FileInfo vendor/proc-macro2/src/fallback.rs /^impl FileInfo {$/;" c +FileInfo vendor/proc-macro2/src/fallback.rs /^struct FileInfo {$/;" s +FileTimeToDosDateTime vendor/winapi/src/um/winbase.rs /^ pub fn FileTimeToDosDateTime($/;" f +FileTimeToLocalFileTime vendor/winapi/src/um/fileapi.rs /^ pub fn FileTimeToLocalFileTime($/;" f +FileTimeToSystemTime vendor/winapi/src/um/timezoneapi.rs /^ pub fn FileTimeToSystemTime($/;" f +FillBuf vendor/futures-util/src/io/fill_buf.rs /^impl<'a, R: AsyncBufRead + ?Sized + Unpin> FillBuf<'a, R> {$/;" c +FillBuf vendor/futures-util/src/io/fill_buf.rs /^impl<'a, R> Future for FillBuf<'a, R>$/;" c +FillBuf vendor/futures-util/src/io/fill_buf.rs /^impl Unpin for FillBuf<'_, R> {}$/;" c +FillBuf vendor/futures-util/src/io/fill_buf.rs /^pub struct FillBuf<'a, R: ?Sized> {$/;" s +FillConsoleOutputAttribute vendor/winapi/src/um/wincon.rs /^ pub fn FillConsoleOutputAttribute($/;" f +FillConsoleOutputCharacterA vendor/winapi/src/um/wincon.rs /^ pub fn FillConsoleOutputCharacterA($/;" f +FillConsoleOutputCharacterW vendor/winapi/src/um/wincon.rs /^ pub fn FillConsoleOutputCharacterW($/;" f +FillPath vendor/winapi/src/um/wingdi.rs /^ pub fn FillPath($/;" f +FillRect vendor/winapi/src/um/winuser.rs /^ pub fn FillRect($/;" f +FillRgn vendor/winapi/src/um/wingdi.rs /^ pub fn FillRgn($/;" f +Filter vendor/futures-util/src/stream/stream/filter.rs /^impl Sink for Filter$/;" c +Filter vendor/futures-util/src/stream/stream/filter.rs /^impl Filter$/;" c +Filter vendor/futures-util/src/stream/stream/filter.rs /^impl FusedStream for Filter$/;" c +Filter vendor/futures-util/src/stream/stream/filter.rs /^impl Stream for Filter$/;" c +Filter vendor/futures-util/src/stream/stream/filter.rs /^impl fmt::Debug for Filter$/;" c +FilterAttrs vendor/syn/src/attr.rs /^pub trait FilterAttrs<'a> {$/;" i +FilterMap vendor/futures-util/src/stream/stream/filter_map.rs /^impl Sink for FilterMap$/;" c +FilterMap vendor/futures-util/src/stream/stream/filter_map.rs /^impl FusedStream for FilterMap$/;" c +FilterMap vendor/futures-util/src/stream/stream/filter_map.rs /^impl Stream for FilterMap$/;" c +FilterMap vendor/futures-util/src/stream/stream/filter_map.rs /^impl FilterMap$/;" c +FilterMap vendor/futures-util/src/stream/stream/filter_map.rs /^impl fmt::Debug for FilterMap$/;" c +Filtering vendor/fluent-langneg/src/negotiate/mod.rs /^ Filtering,$/;" e enum:NegotiationStrategy +FinalState vendor/futures-util/src/future/try_join_all.rs /^enum FinalState {$/;" g +Financial Support vendor/winapi/README.md /^## Financial Support$/;" s chapter:winapi-rs +FindActCtxSectionGuid vendor/winapi/src/um/winbase.rs /^ pub fn FindActCtxSectionGuid($/;" f +FindActCtxSectionStringA vendor/winapi/src/um/winbase.rs /^ pub fn FindActCtxSectionStringA($/;" f +FindActCtxSectionStringW vendor/winapi/src/um/winbase.rs /^ pub fn FindActCtxSectionStringW($/;" f +FindAtomA vendor/winapi/src/um/winbase.rs /^ pub fn FindAtomA($/;" f +FindAtomW vendor/winapi/src/um/winbase.rs /^ pub fn FindAtomW($/;" f +FindCertsByIssuer vendor/winapi/src/um/wincrypt.rs /^ pub fn FindCertsByIssuer($/;" f +FindClose vendor/winapi/src/um/fileapi.rs /^ pub fn FindClose($/;" f +FindCloseChangeNotification vendor/winapi/src/um/fileapi.rs /^ pub fn FindCloseChangeNotification($/;" f +FindClosePrinterChangeNotification vendor/winapi/src/um/winspool.rs /^ pub fn FindClosePrinterChangeNotification($/;" f +FindCloseUrlCache vendor/winapi/src/um/wininet.rs /^ pub fn FindCloseUrlCache($/;" f +FindDebugInfoFile vendor/winapi/src/um/dbghelp.rs /^ pub fn FindDebugInfoFile($/;" f +FindDebugInfoFileEx vendor/winapi/src/um/dbghelp.rs /^ pub fn FindDebugInfoFileEx($/;" f +FindDebugInfoFileExW vendor/winapi/src/um/dbghelp.rs /^ pub fn FindDebugInfoFileExW($/;" f +FindExecutableA vendor/winapi/src/um/shellapi.rs /^ pub fn FindExecutableA($/;" f +FindExecutableImage vendor/winapi/src/um/dbghelp.rs /^ pub fn FindExecutableImage($/;" f +FindExecutableImageEx vendor/winapi/src/um/dbghelp.rs /^ pub fn FindExecutableImageEx($/;" f +FindExecutableImageExW vendor/winapi/src/um/dbghelp.rs /^ pub fn FindExecutableImageExW($/;" f +FindExecutableW vendor/winapi/src/um/shellapi.rs /^ pub fn FindExecutableW($/;" f +FindFirstChangeNotificationA vendor/winapi/src/um/fileapi.rs /^ pub fn FindFirstChangeNotificationA($/;" f +FindFirstChangeNotificationW vendor/winapi/src/um/fileapi.rs /^ pub fn FindFirstChangeNotificationW($/;" f +FindFirstFileA vendor/winapi/src/um/fileapi.rs /^ pub fn FindFirstFileA($/;" f +FindFirstFileExA vendor/winapi/src/um/fileapi.rs /^ pub fn FindFirstFileExA($/;" f +FindFirstFileExW vendor/winapi/src/um/fileapi.rs /^ pub fn FindFirstFileExW($/;" f +FindFirstFileNameTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn FindFirstFileNameTransactedW($/;" f +FindFirstFileNameW vendor/winapi/src/um/fileapi.rs /^ pub fn FindFirstFileNameW($/;" f +FindFirstFileTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn FindFirstFileTransactedA($/;" f +FindFirstFileTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn FindFirstFileTransactedW($/;" f +FindFirstFileW vendor/winapi/src/um/fileapi.rs /^ pub fn FindFirstFileW($/;" f +FindFirstFreeAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn FindFirstFreeAce($/;" f +FindFirstPrinterChangeNotification vendor/winapi/src/um/winspool.rs /^ pub fn FindFirstPrinterChangeNotification($/;" f +FindFirstStreamTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn FindFirstStreamTransactedW($/;" f +FindFirstStreamW vendor/winapi/src/um/fileapi.rs /^ pub fn FindFirstStreamW($/;" f +FindFirstUrlCacheEntryA vendor/winapi/src/um/wininet.rs /^ pub fn FindFirstUrlCacheEntryA($/;" f +FindFirstUrlCacheEntryExA vendor/winapi/src/um/wininet.rs /^ pub fn FindFirstUrlCacheEntryExA($/;" f +FindFirstUrlCacheEntryExW vendor/winapi/src/um/wininet.rs /^ pub fn FindFirstUrlCacheEntryExW($/;" f +FindFirstUrlCacheEntryW vendor/winapi/src/um/wininet.rs /^ pub fn FindFirstUrlCacheEntryW($/;" f +FindFirstUrlCacheGroup vendor/winapi/src/um/wininet.rs /^ pub fn FindFirstUrlCacheGroup($/;" f +FindFirstVolumeA vendor/winapi/src/um/winbase.rs /^ pub fn FindFirstVolumeA($/;" f +FindFirstVolumeMountPointA vendor/winapi/src/um/winbase.rs /^ pub fn FindFirstVolumeMountPointA($/;" f +FindFirstVolumeMountPointW vendor/winapi/src/um/winbase.rs /^ pub fn FindFirstVolumeMountPointW($/;" f +FindFirstVolumeW vendor/winapi/src/um/fileapi.rs /^ pub fn FindFirstVolumeW($/;" f +FindIter vendor/memchr/src/memmem/mod.rs /^impl<'h, 'n> FindIter<'h, 'n> {$/;" c +FindIter vendor/memchr/src/memmem/mod.rs /^impl<'h, 'n> Iterator for FindIter<'h, 'n> {$/;" c +FindIter vendor/memchr/src/memmem/mod.rs /^pub struct FindIter<'h, 'n> {$/;" s +FindNLSString vendor/winapi/src/um/winnls.rs /^ pub fn FindNLSString($/;" f +FindNLSStringEx vendor/winapi/src/um/winnls.rs /^ pub fn FindNLSStringEx($/;" f +FindNextChangeNotification vendor/winapi/src/um/fileapi.rs /^ pub fn FindNextChangeNotification($/;" f +FindNextFileA vendor/winapi/src/um/fileapi.rs /^ pub fn FindNextFileA($/;" f +FindNextFileNameW vendor/winapi/src/um/fileapi.rs /^ pub fn FindNextFileNameW($/;" f +FindNextFileW vendor/winapi/src/um/fileapi.rs /^ pub fn FindNextFileW($/;" f +FindNextPrinterChangeNotification vendor/winapi/src/um/winspool.rs /^ pub fn FindNextPrinterChangeNotification($/;" f +FindNextStreamW vendor/winapi/src/um/fileapi.rs /^ pub fn FindNextStreamW($/;" f +FindNextUrlCacheEntryA vendor/winapi/src/um/wininet.rs /^ pub fn FindNextUrlCacheEntryA($/;" f +FindNextUrlCacheEntryExA vendor/winapi/src/um/wininet.rs /^ pub fn FindNextUrlCacheEntryExA($/;" f +FindNextUrlCacheEntryExW vendor/winapi/src/um/wininet.rs /^ pub fn FindNextUrlCacheEntryExW($/;" f +FindNextUrlCacheEntryW vendor/winapi/src/um/wininet.rs /^ pub fn FindNextUrlCacheEntryW($/;" f +FindNextUrlCacheGroup vendor/winapi/src/um/wininet.rs /^ pub fn FindNextUrlCacheGroup($/;" f +FindNextVolumeA vendor/winapi/src/um/winbase.rs /^ pub fn FindNextVolumeA($/;" f +FindNextVolumeMountPointA vendor/winapi/src/um/winbase.rs /^ pub fn FindNextVolumeMountPointA($/;" f +FindNextVolumeMountPointW vendor/winapi/src/um/winbase.rs /^ pub fn FindNextVolumeMountPointW($/;" f +FindNextVolumeW vendor/winapi/src/um/fileapi.rs /^ pub fn FindNextVolumeW($/;" f +FindResourceA vendor/winapi/src/um/winbase.rs /^ pub fn FindResourceA($/;" f +FindResourceExA vendor/winapi/src/um/winbase.rs /^ pub fn FindResourceExA($/;" f +FindResourceExW vendor/winapi/src/um/libloaderapi.rs /^ pub fn FindResourceExW($/;" f +FindResourceW vendor/winapi/src/um/libloaderapi.rs /^ pub fn FindResourceW($/;" f +FindRevIter vendor/memchr/src/memmem/mod.rs /^impl<'h, 'n> FindRevIter<'h, 'n> {$/;" c +FindRevIter vendor/memchr/src/memmem/mod.rs /^impl<'h, 'n> Iterator for FindRevIter<'h, 'n> {$/;" c +FindRevIter vendor/memchr/src/memmem/mod.rs /^pub struct FindRevIter<'h, 'n> {$/;" s +FindStringOrdinal vendor/winapi/src/um/libloaderapi.rs /^ pub fn FindStringOrdinal($/;" f +FindTextA vendor/winapi/src/um/commdlg.rs /^ pub fn FindTextA($/;" f +FindTextW vendor/winapi/src/um/commdlg.rs /^ pub fn FindTextW($/;" f +FindVolumeClose vendor/winapi/src/um/fileapi.rs /^ pub fn FindVolumeClose($/;" f +FindVolumeMountPointClose vendor/winapi/src/um/winbase.rs /^ pub fn FindVolumeMountPointClose($/;" f +FindWindowA vendor/winapi/src/um/winuser.rs /^ pub fn FindWindowA($/;" f +FindWindowExA vendor/winapi/src/um/winuser.rs /^ pub fn FindWindowExA($/;" f +FindWindowExW vendor/winapi/src/um/winuser.rs /^ pub fn FindWindowExW($/;" f +FindWindowW vendor/winapi/src/um/winuser.rs /^ pub fn FindWindowW($/;" f +Finder vendor/memchr/src/memmem/mod.rs /^impl<'n> Finder<'n> {$/;" c +Finder vendor/memchr/src/memmem/mod.rs /^pub struct Finder<'n> {$/;" s +FinderBuilder vendor/memchr/src/memmem/mod.rs /^impl FinderBuilder {$/;" c +FinderBuilder vendor/memchr/src/memmem/mod.rs /^pub struct FinderBuilder {$/;" s +FinderRev vendor/memchr/src/memmem/mod.rs /^impl<'n> FinderRev<'n> {$/;" c +FinderRev vendor/memchr/src/memmem/mod.rs /^pub struct FinderRev<'n> {$/;" s +Finish support/texi2html /^Finish:$/;" l +FixBrushOrgEx vendor/winapi/src/um/wingdi.rs /^ pub fn FixBrushOrgEx($/;" f +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.10.0] 2018-01-26 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.11.0] 2018-06-01 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.12.0] 2018-11-28 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.13.0] - 2019-01-15 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.14.0] - 2019-05-21 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.14.1] - 2019-06-06 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.15.0] - 10 August 2019 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.16.0] - 1 December 2019 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.16.1] - 23 December 2019 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.17.0] - 3 February 2020 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.18.0] - 26 July 2020 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.19.0] - 6 October 2020 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.19.1] - 28 November 2020 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.20.0] - 20 February 2021 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.21.0] - 31 May 2021 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.22.0] - 9 July 2021 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.23.0] - 2021-09-28 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.23.1] - 2021-12-16 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.24.0] - 2022-04-21 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.24.1] - 2022-04-22 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.24.2] - 2022-07-17 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.6.0] 2016-06-10 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.7.0] 2016-09-09 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.8.0] 2017-03-02 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.8.1] 2017-04-16 +Fixed vendor/nix/CHANGELOG.md /^### Fixed$/;" S section:Change Log""[0.9.0] 2017-07-23 +Flag vendor/futures/tests/sink.rs /^impl ArcWake for Flag {$/;" c +Flag vendor/futures/tests/sink.rs /^impl Flag {$/;" c +Flag vendor/futures/tests/sink.rs /^struct Flag(AtomicBool);$/;" s +Flagger vendor/async-trait/tests/test.rs /^ impl Drop for Flagger<'_> {$/;" c module:drop_order +Flagger vendor/async-trait/tests/test.rs /^ impl SelfTrait for Flagger<'_> {$/;" c module:drop_order +Flagger vendor/async-trait/tests/test.rs /^ struct Flagger<'a>(&'a AtomicBool);$/;" s module:drop_order +Flags vendor/bitflags/tests/compile-pass/impls/convert.rs /^impl From for Flags {$/;" c +Flags vendor/bitflags/tests/compile-pass/impls/inherent_methods.rs /^impl Flags {$/;" c +FlashWindow vendor/winapi/src/um/winuser.rs /^ pub fn FlashWindow($/;" f +FlashWindowEx vendor/winapi/src/um/winuser.rs /^ pub fn FlashWindowEx($/;" f +FlatSB_EnableScrollBar vendor/winapi/src/um/commctrl.rs /^ pub fn FlatSB_EnableScrollBar($/;" f +FlatSB_GetScrollInfo vendor/winapi/src/um/commctrl.rs /^ pub fn FlatSB_GetScrollInfo($/;" f +FlatSB_GetScrollPos vendor/winapi/src/um/commctrl.rs /^ pub fn FlatSB_GetScrollPos($/;" f +FlatSB_GetScrollProp vendor/winapi/src/um/commctrl.rs /^ pub fn FlatSB_GetScrollProp(hWnd: HWND,$/;" f +FlatSB_GetScrollPropPtr vendor/winapi/src/um/commctrl.rs /^ pub fn FlatSB_GetScrollPropPtr($/;" f +FlatSB_GetScrollRange vendor/winapi/src/um/commctrl.rs /^ pub fn FlatSB_GetScrollRange($/;" f +FlatSB_SetScrollInfo vendor/winapi/src/um/commctrl.rs /^ pub fn FlatSB_SetScrollInfo($/;" f +FlatSB_SetScrollPos vendor/winapi/src/um/commctrl.rs /^ pub fn FlatSB_SetScrollPos($/;" f +FlatSB_SetScrollProp vendor/winapi/src/um/commctrl.rs /^ pub fn FlatSB_SetScrollProp($/;" f +FlatSB_SetScrollRange vendor/winapi/src/um/commctrl.rs /^ pub fn FlatSB_SetScrollRange($/;" f +FlatSB_ShowScrollBar vendor/winapi/src/um/commctrl.rs /^ pub fn FlatSB_ShowScrollBar($/;" f +Flatten vendor/futures-util/src/future/future/flatten.rs /^impl Sink for Flatten$/;" c +Flatten vendor/futures-util/src/future/future/flatten.rs /^impl Flatten {$/;" c +Flatten vendor/futures-util/src/future/future/flatten.rs /^impl FusedFuture for Flatten$/;" c +Flatten vendor/futures-util/src/future/future/flatten.rs /^impl FusedStream for Flatten$/;" c +Flatten vendor/futures-util/src/future/future/flatten.rs /^impl Future for Flatten$/;" c +Flatten vendor/futures-util/src/future/future/flatten.rs /^impl Stream for Flatten$/;" c +Flatten vendor/futures-util/src/stream/stream/flatten.rs /^impl Sink for Flatten$/;" c +Flatten vendor/futures-util/src/stream/stream/flatten.rs /^impl Flatten {$/;" c +Flatten vendor/futures-util/src/stream/stream/flatten.rs /^impl FusedStream for Flatten$/;" c +Flatten vendor/futures-util/src/stream/stream/flatten.rs /^impl Stream for Flatten$/;" c +FlattenPath vendor/winapi/src/um/wingdi.rs /^ pub fn FlattenPath($/;" f +FlattenUnordered vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl Sink for FlattenUnordered$/;" c +FlattenUnordered vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl FlattenUnordered$/;" c +FlattenUnordered vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl FusedStream for FlattenUnordered$/;" c +FlattenUnordered vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl Stream for FlattenUnordered$/;" c +FlattenUnordered vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl fmt::Debug for FlattenUnordered$/;" c +FlattenUnorderedProj vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl FlattenUnorderedProj<'_, St>$/;" c +FlexibleItemType vendor/syn/src/item.rs /^ impl FlexibleItemType {$/;" c module:parsing +FlexibleItemType vendor/syn/src/item.rs /^ struct FlexibleItemType {$/;" s module:parsing +FloatConvert vendor/stdext/src/num/float_convert.rs /^pub trait FloatConvert: Sized {$/;" i +FloodFill vendor/winapi/src/um/wingdi.rs /^ pub fn FloodFill($/;" f +Florp vendor/memoffset/src/span_of.rs /^ struct Florp {$/;" s function:tests::span_forms +FlsAlloc vendor/winapi/src/um/fibersapi.rs /^ pub fn FlsAlloc($/;" f +FlsFree vendor/winapi/src/um/fibersapi.rs /^ pub fn FlsFree($/;" f +FlsGetValue vendor/winapi/src/um/fibersapi.rs /^ pub fn FlsGetValue($/;" f +FlsSetValue vendor/winapi/src/um/fibersapi.rs /^ pub fn FlsSetValue($/;" f +Fluent vendor/fluent-bundle/README.md /^# Fluent$/;" c +Fluent vendor/fluent-fallback/README.md /^# Fluent$/;" c +Fluent vendor/fluent/README.md /^# Fluent$/;" c +Fluent LangNeg vendor/fluent-langneg/README.md /^# Fluent LangNeg$/;" c +Fluent Resource Manager vendor/fluent-resmgr/README.md /^# Fluent Resource Manager$/;" c +Fluent Syntax vendor/fluent-syntax/README.md /^# Fluent Syntax$/;" c +FluentArgs vendor/fluent-bundle/src/args.rs /^impl<'args, K, V> FromIterator<(K, V)> for FluentArgs<'args>$/;" c +FluentArgs vendor/fluent-bundle/src/args.rs /^impl<'args> FluentArgs<'args> {$/;" c +FluentArgs vendor/fluent-bundle/src/args.rs /^impl<'args> IntoIterator for FluentArgs<'args> {$/;" c +FluentArgs vendor/fluent-bundle/src/args.rs /^pub struct FluentArgs<'args>(Vec<(Cow<'args, str>, FluentValue<'args>)>);$/;" s +FluentAttribute vendor/fluent-bundle/src/message.rs /^impl<'m> FluentAttribute<'m> {$/;" c +FluentAttribute vendor/fluent-bundle/src/message.rs /^impl<'m> From<&'m ast::Attribute<&'m str>> for FluentAttribute<'m> {$/;" c +FluentAttribute vendor/fluent-bundle/src/message.rs /^pub struct FluentAttribute<'m> {$/;" s +FluentBundle vendor/fluent-bundle/src/bundle.rs /^impl FluentBundle {$/;" c +FluentBundle vendor/fluent-bundle/src/bundle.rs /^impl Default for FluentBundle {$/;" c +FluentBundle vendor/fluent-bundle/src/bundle.rs /^impl FluentBundle {$/;" c +FluentBundle vendor/fluent-bundle/src/bundle.rs /^pub struct FluentBundle {$/;" s +FluentBundle vendor/fluent-bundle/src/concurrent.rs /^impl FluentBundle {$/;" c +FluentBundle vendor/fluent-bundle/src/entry.rs /^impl<'bundle, R: Borrow, M> GetEntry for FluentBundle {$/;" c +FluentBundle vendor/fluent-bundle/src/lib.rs /^pub type FluentBundle = bundle::FluentBundle;$/;" t +FluentBundleResult vendor/fluent-fallback/src/generator.rs /^pub type FluentBundleResult = Result, (FluentBundle, Vec)>;$/;" t +FluentError vendor/fluent-bundle/src/errors.rs /^impl Error for FluentError {}$/;" c +FluentError vendor/fluent-bundle/src/errors.rs /^impl From for FluentError {$/;" c +FluentError vendor/fluent-bundle/src/errors.rs /^impl From for FluentError {$/;" c +FluentError vendor/fluent-bundle/src/errors.rs /^impl std::fmt::Display for FluentError {$/;" c +FluentError vendor/fluent-bundle/src/errors.rs /^pub enum FluentError {$/;" g +FluentFunction vendor/fluent-bundle/src/entry.rs /^pub type FluentFunction =$/;" t +FluentMessage vendor/fluent-bundle/src/message.rs /^impl<'m> FluentMessage<'m> {$/;" c +FluentMessage vendor/fluent-bundle/src/message.rs /^impl<'m> From<&'m ast::Message<&'m str>> for FluentMessage<'m> {$/;" c +FluentMessage vendor/fluent-bundle/src/message.rs /^pub struct FluentMessage<'m> {$/;" s +FluentNumber vendor/fluent-bundle/src/types/number.rs /^impl FluentNumber {$/;" c +FluentNumber vendor/fluent-bundle/src/types/number.rs /^impl FromStr for FluentNumber {$/;" c +FluentNumber vendor/fluent-bundle/src/types/number.rs /^pub struct FluentNumber {$/;" s +FluentNumberCurrencyDisplayStyle vendor/fluent-bundle/src/types/number.rs /^impl From<&str> for FluentNumberCurrencyDisplayStyle {$/;" c +FluentNumberCurrencyDisplayStyle vendor/fluent-bundle/src/types/number.rs /^impl std::default::Default for FluentNumberCurrencyDisplayStyle {$/;" c +FluentNumberCurrencyDisplayStyle vendor/fluent-bundle/src/types/number.rs /^pub enum FluentNumberCurrencyDisplayStyle {$/;" g +FluentNumberOptions vendor/fluent-bundle/src/types/number.rs /^impl Default for FluentNumberOptions {$/;" c +FluentNumberOptions vendor/fluent-bundle/src/types/number.rs /^impl FluentNumberOptions {$/;" c +FluentNumberOptions vendor/fluent-bundle/src/types/number.rs /^pub struct FluentNumberOptions {$/;" s +FluentNumberStyle vendor/fluent-bundle/src/types/number.rs /^impl From<&str> for FluentNumberStyle {$/;" c +FluentNumberStyle vendor/fluent-bundle/src/types/number.rs /^impl std::default::Default for FluentNumberStyle {$/;" c +FluentNumberStyle vendor/fluent-bundle/src/types/number.rs /^pub enum FluentNumberStyle {$/;" g +FluentResource vendor/elsa/examples/fluentresource.rs /^impl<'mgr> FluentResource<'mgr> {$/;" c +FluentResource vendor/elsa/examples/fluentresource.rs /^pub struct FluentResource<'mgr>(&'mgr str);$/;" s +FluentResource vendor/fluent-bundle/src/resource.rs /^impl FluentResource {$/;" c +FluentResource vendor/fluent-bundle/src/resource.rs /^pub struct FluentResource(InnerFluentResource);$/;" s +FluentType vendor/fluent-bundle/src/types/mod.rs /^pub trait FluentType: fmt::Debug + AnyEq + 'static {$/;" i +FluentValue vendor/fluent-bundle/src/types/mod.rs /^impl<'s> Clone for FluentValue<'s> {$/;" c +FluentValue vendor/fluent-bundle/src/types/mod.rs /^impl<'s> PartialEq for FluentValue<'s> {$/;" c +FluentValue vendor/fluent-bundle/src/types/mod.rs /^impl<'source> FluentValue<'source> {$/;" c +FluentValue vendor/fluent-bundle/src/types/mod.rs /^impl<'source> From<&'source str> for FluentValue<'source> {$/;" c +FluentValue vendor/fluent-bundle/src/types/mod.rs /^impl<'source> From> for FluentValue<'source> {$/;" c +FluentValue vendor/fluent-bundle/src/types/mod.rs /^impl<'source> From for FluentValue<'source> {$/;" c +FluentValue vendor/fluent-bundle/src/types/mod.rs /^pub enum FluentValue<'source> {$/;" g +FluentValue vendor/fluent-bundle/src/types/number.rs /^impl<'l> From for FluentValue<'l> {$/;" c +Flush vendor/futures-util/src/io/flush.rs /^impl<'a, W: AsyncWrite + ?Sized + Unpin> Flush<'a, W> {$/;" c +Flush vendor/futures-util/src/io/flush.rs /^impl Unpin for Flush<'_, W> {}$/;" c +Flush vendor/futures-util/src/io/flush.rs /^impl Future for Flush<'_, W>$/;" c +Flush vendor/futures-util/src/io/flush.rs /^pub struct Flush<'a, W: ?Sized> {$/;" s +Flush vendor/futures-util/src/sink/flush.rs /^impl<'a, Si: Sink + Unpin + ?Sized, Item> Flush<'a, Si, Item> {$/;" c +Flush vendor/futures-util/src/sink/flush.rs /^impl + Unpin + ?Sized, Item> Future for Flush<'_, Si, Item> {$/;" c +Flush vendor/futures-util/src/sink/flush.rs /^impl Unpin for Flush<'_, Si, Item> {}$/;" c +Flush vendor/futures-util/src/sink/flush.rs /^pub struct Flush<'a, Si: ?Sized, Item> {$/;" s +FlushConsoleInputBuffer vendor/winapi/src/um/wincon.rs /^ pub fn FlushConsoleInputBuffer($/;" f +FlushFileBuffers vendor/winapi/src/um/fileapi.rs /^ pub fn FlushFileBuffers($/;" f +FlushInstructionCache vendor/winapi/src/um/processthreadsapi.rs /^ pub fn FlushInstructionCache($/;" f +FlushIpNetTable vendor/winapi/src/um/iphlpapi.rs /^ pub fn FlushIpNetTable($/;" f +FlushIpNetTable2 vendor/winapi/src/shared/netioapi.rs /^ pub fn FlushIpNetTable2($/;" f +FlushIpPathTable vendor/winapi/src/shared/netioapi.rs /^ pub fn FlushIpPathTable($/;" f +FlushPrinter vendor/winapi/src/um/winspool.rs /^ pub fn FlushPrinter($/;" f +FlushProcessWriteBuffers vendor/winapi/src/um/processthreadsapi.rs /^ pub fn FlushProcessWriteBuffers();$/;" f +FlushTraceA vendor/winapi/src/shared/evntrace.rs /^ pub fn FlushTraceA($/;" f +FlushTraceW vendor/winapi/src/shared/evntrace.rs /^ pub fn FlushTraceW($/;" f +FlushViewOfFile vendor/winapi/src/um/memoryapi.rs /^ pub fn FlushViewOfFile($/;" f +Fn1 vendor/futures-util/src/fns.rs /^pub trait Fn1: FnMut1 {$/;" i +FnArg vendor/syn/src/gen/clone.rs /^impl Clone for FnArg {$/;" c +FnArg vendor/syn/src/gen/debug.rs /^impl Debug for FnArg {$/;" c +FnArg vendor/syn/src/gen/eq.rs /^impl Eq for FnArg {}$/;" c +FnArg vendor/syn/src/gen/eq.rs /^impl PartialEq for FnArg {$/;" c +FnArg vendor/syn/src/gen/hash.rs /^impl Hash for FnArg {$/;" c +FnArg vendor/syn/src/item.rs /^ impl Parse for FnArg {$/;" c module:parsing +FnMut1 vendor/futures-util/src/fns.rs /^pub trait FnMut1: FnOnce1 {$/;" i +FnOnce1 vendor/futures-util/src/fns.rs /^pub trait FnOnce1 {$/;" i +Fold vendor/futures-util/src/stream/stream/fold.rs /^impl Fold$/;" c +Fold vendor/futures-util/src/stream/stream/fold.rs /^impl FusedFuture for Fold$/;" c +Fold vendor/futures-util/src/stream/stream/fold.rs /^impl Future for Fold$/;" c +Fold vendor/futures-util/src/stream/stream/fold.rs /^impl fmt::Debug for Fold$/;" c +Fold vendor/syn/src/gen/fold.rs /^pub trait Fold {$/;" i +FoldHelper vendor/syn/src/gen_helper.rs /^ pub trait FoldHelper {$/;" i module:fold +FoldStringA vendor/winapi/src/um/winnls.rs /^ pub fn FoldStringA($/;" f +FoldStringW vendor/winapi/src/um/stringapiset.rs /^ pub fn FoldStringW($/;" f +FollowSymlink vendor/nix/src/sys/stat.rs /^ FollowSymlink,$/;" e enum:FchmodatFlags +FollowSymlink vendor/nix/src/sys/stat.rs /^ FollowSymlink,$/;" e enum:UtimensatFlags +Foo vendor/async-trait/tests/test.rs /^ struct Foo;$/;" s module:issue104 +Foo vendor/async-trait/tests/test.rs /^ trait Foo {$/;" i module:issue183 +Foo vendor/memoffset/src/offset_of.rs /^ pub struct Foo {$/;" s module:tests::path::sub +Foo vendor/memoffset/src/offset_of.rs /^ struct Foo {$/;" s function:tests::const_fn_offset::test_fn +Foo vendor/memoffset/src/offset_of.rs /^ struct Foo {$/;" s function:tests::const_offset +Foo vendor/memoffset/src/offset_of.rs /^ struct Foo {$/;" s function:tests::const_offset_interior_mutable +Foo vendor/memoffset/src/offset_of.rs /^ struct Foo {$/;" s function:tests::offset_simple +Foo vendor/memoffset/src/offset_of.rs /^ struct Foo {$/;" s function:tests::offset_simple_packed +Foo vendor/memoffset/src/offset_of.rs /^ struct Foo {$/;" s function:tests::test_raw_field +Foo vendor/memoffset/src/span_of.rs /^ struct Foo {$/;" s function:tests::span_simple +Foo vendor/memoffset/src/span_of.rs /^ struct Foo {$/;" s function:tests::span_simple_packed +Foo vendor/once_cell/tests/it.rs /^ impl Default for Foo {$/;" c function:sync::lazy_default +Foo vendor/once_cell/tests/it.rs /^ impl Default for Foo {$/;" c function:unsync::lazy_default +Foo vendor/once_cell/tests/it.rs /^ struct Foo(u8);$/;" s function:sync::lazy_default +Foo vendor/once_cell/tests/it.rs /^ struct Foo(u8);$/;" s function:unsync::lazy_default +Foo vendor/once_cell/tests/it.rs /^ struct Foo;$/;" s function:race_once_box::once_box_default +Foo vendor/pin-project-lite/tests/ui/pin_project/conflict-drop.rs /^impl Drop for Foo {$/;" c +Foo vendor/pin-project-lite/tests/ui/pin_project/conflict-unpin.rs /^impl Unpin for Foo where T: Unpin {} \/\/ Conditional Unpin impl$/;" c +Foo vendor/pin-utils/tests/projection.rs /^impl Foo {$/;" c +Foo vendor/pin-utils/tests/projection.rs /^impl Unpin for Foo {} \/\/ Conditional Unpin impl$/;" c +Foo vendor/pin-utils/tests/projection.rs /^struct Foo {$/;" s +Foo vendor/pin-utils/tests/stack_pin.rs /^ struct Foo {}$/;" s function:stack_pin +Foo vendor/thiserror/tests/ui/lifetime.rs /^ Foo(#[from] Generic<&'a str>),$/;" e enum:Enum +For command.h /^ struct for_com *For;$/;" m union:command::__anon3aaf009a020a typeref:struct:for_com * +ForEach vendor/futures-util/src/stream/stream/for_each.rs /^impl ForEach$/;" c +ForEach vendor/futures-util/src/stream/stream/for_each.rs /^impl FusedFuture for ForEach$/;" c +ForEach vendor/futures-util/src/stream/stream/for_each.rs /^impl Future for ForEach$/;" c +ForEach vendor/futures-util/src/stream/stream/for_each.rs /^impl fmt::Debug for ForEach$/;" c +ForEachConcurrent vendor/futures-util/src/stream/stream/for_each_concurrent.rs /^impl ForEachConcurrent$/;" c +ForEachConcurrent vendor/futures-util/src/stream/stream/for_each_concurrent.rs /^impl FusedFuture for ForEachConcurrent$/;" c +ForEachConcurrent vendor/futures-util/src/stream/stream/for_each_concurrent.rs /^impl Future for ForEachConcurrent$/;" c +ForEachConcurrent vendor/futures-util/src/stream/stream/for_each_concurrent.rs /^impl fmt::Debug for ForEachConcurrent$/;" c +ForbiddenCallee vendor/fluent-syntax/src/parser/errors.rs /^ ForbiddenCallee,$/;" e enum:ErrorKind +ForeignItem vendor/syn/src/gen/clone.rs /^impl Clone for ForeignItem {$/;" c +ForeignItem vendor/syn/src/gen/debug.rs /^impl Debug for ForeignItem {$/;" c +ForeignItem vendor/syn/src/gen/eq.rs /^impl Eq for ForeignItem {}$/;" c +ForeignItem vendor/syn/src/gen/eq.rs /^impl PartialEq for ForeignItem {$/;" c +ForeignItem vendor/syn/src/gen/hash.rs /^impl Hash for ForeignItem {$/;" c +ForeignItem vendor/syn/src/item.rs /^ impl Parse for ForeignItem {$/;" c module:parsing +ForeignItemFn vendor/syn/src/gen/clone.rs /^impl Clone for ForeignItemFn {$/;" c +ForeignItemFn vendor/syn/src/gen/debug.rs /^impl Debug for ForeignItemFn {$/;" c +ForeignItemFn vendor/syn/src/gen/eq.rs /^impl Eq for ForeignItemFn {}$/;" c +ForeignItemFn vendor/syn/src/gen/eq.rs /^impl PartialEq for ForeignItemFn {$/;" c +ForeignItemFn vendor/syn/src/gen/hash.rs /^impl Hash for ForeignItemFn {$/;" c +ForeignItemFn vendor/syn/src/item.rs /^ impl Parse for ForeignItemFn {$/;" c module:parsing +ForeignItemFn vendor/syn/src/item.rs /^ impl ToTokens for ForeignItemFn {$/;" c module:printing +ForeignItemMacro vendor/syn/src/gen/clone.rs /^impl Clone for ForeignItemMacro {$/;" c +ForeignItemMacro vendor/syn/src/gen/debug.rs /^impl Debug for ForeignItemMacro {$/;" c +ForeignItemMacro vendor/syn/src/gen/eq.rs /^impl Eq for ForeignItemMacro {}$/;" c +ForeignItemMacro vendor/syn/src/gen/eq.rs /^impl PartialEq for ForeignItemMacro {$/;" c +ForeignItemMacro vendor/syn/src/gen/hash.rs /^impl Hash for ForeignItemMacro {$/;" c +ForeignItemMacro vendor/syn/src/item.rs /^ impl Parse for ForeignItemMacro {$/;" c module:parsing +ForeignItemMacro vendor/syn/src/item.rs /^ impl ToTokens for ForeignItemMacro {$/;" c module:printing +ForeignItemStatic vendor/syn/src/gen/clone.rs /^impl Clone for ForeignItemStatic {$/;" c +ForeignItemStatic vendor/syn/src/gen/debug.rs /^impl Debug for ForeignItemStatic {$/;" c +ForeignItemStatic vendor/syn/src/gen/eq.rs /^impl Eq for ForeignItemStatic {}$/;" c +ForeignItemStatic vendor/syn/src/gen/eq.rs /^impl PartialEq for ForeignItemStatic {$/;" c +ForeignItemStatic vendor/syn/src/gen/hash.rs /^impl Hash for ForeignItemStatic {$/;" c +ForeignItemStatic vendor/syn/src/item.rs /^ impl Parse for ForeignItemStatic {$/;" c module:parsing +ForeignItemStatic vendor/syn/src/item.rs /^ impl ToTokens for ForeignItemStatic {$/;" c module:printing +ForeignItemType vendor/syn/src/gen/clone.rs /^impl Clone for ForeignItemType {$/;" c +ForeignItemType vendor/syn/src/gen/debug.rs /^impl Debug for ForeignItemType {$/;" c +ForeignItemType vendor/syn/src/gen/eq.rs /^impl Eq for ForeignItemType {}$/;" c +ForeignItemType vendor/syn/src/gen/eq.rs /^impl PartialEq for ForeignItemType {$/;" c +ForeignItemType vendor/syn/src/gen/hash.rs /^impl Hash for ForeignItemType {$/;" c +ForeignItemType vendor/syn/src/item.rs /^ impl Parse for ForeignItemType {$/;" c module:parsing +ForeignItemType vendor/syn/src/item.rs /^ impl ToTokens for ForeignItemType {$/;" c module:printing +FormatMessageA vendor/winapi/src/um/winbase.rs /^ pub fn FormatMessageA($/;" f +FormatMessageW vendor/winapi/src/um/winbase.rs /^ pub fn FormatMessageW($/;" f +Forward vendor/futures-util/src/stream/stream/forward.rs /^impl FusedFuture for Forward$/;" c +Forward vendor/futures-util/src/stream/stream/forward.rs /^impl Future for Forward$/;" c +Forward vendor/futures-util/src/stream/stream/forward.rs /^impl Forward {$/;" c +Forward vendor/memchr/src/memmem/genericsimd.rs /^impl Forward {$/;" c +Forward vendor/memchr/src/memmem/genericsimd.rs /^pub(crate) struct Forward {$/;" s +Forward vendor/memchr/src/memmem/twoway.rs /^impl Forward {$/;" c +Forward vendor/memchr/src/memmem/twoway.rs /^pub(crate) struct Forward(TwoWay);$/;" s +Forward vendor/memchr/src/memmem/wasm.rs /^impl Forward {$/;" c +Forward vendor/memchr/src/memmem/wasm.rs /^pub(crate) struct Forward(genericsimd::Forward);$/;" s +Forward vendor/memchr/src/memmem/x86/avx.rs /^ impl Forward {$/;" c module:nostd +Forward vendor/memchr/src/memmem/x86/avx.rs /^ impl Forward {$/;" c module:std +Forward vendor/memchr/src/memmem/x86/avx.rs /^ pub(crate) struct Forward(());$/;" s module:nostd +Forward vendor/memchr/src/memmem/x86/avx.rs /^ pub(crate) struct Forward(genericsimd::Forward);$/;" s module:std +Forward vendor/memchr/src/memmem/x86/sse.rs /^impl Forward {$/;" c +Forward vendor/memchr/src/memmem/x86/sse.rs /^pub(crate) struct Forward(genericsimd::Forward);$/;" s +FrameRect vendor/winapi/src/um/winuser.rs /^ pub fn FrameRect($/;" f +FrameRgn vendor/winapi/src/um/wingdi.rs /^ pub fn FrameRgn($/;" f +FreeAddrInfoEx vendor/winapi/src/um/ws2tcpip.rs /^ pub fn FreeAddrInfoEx($/;" f +FreeAddrInfoExW vendor/winapi/src/um/ws2tcpip.rs /^ pub fn FreeAddrInfoExW($/;" f +FreeAddrInfoW vendor/winapi/src/um/ws2tcpip.rs /^ pub fn FreeAddrInfoW($/;" f +FreeConsole vendor/winapi/src/um/wincon.rs /^ pub fn FreeConsole() -> BOOL;$/;" f +FreeContextBuffer vendor/winapi/src/shared/sspi.rs /^ pub fn FreeContextBuffer($/;" f +FreeCredentialsHandle vendor/winapi/src/shared/sspi.rs /^ pub fn FreeCredentialsHandle($/;" f +FreeDnsSettings vendor/winapi/src/shared/netioapi.rs /^ pub fn FreeDnsSettings($/;" f +FreeEncryptedFileMetadata vendor/winapi/src/um/winefs.rs /^ pub fn FreeEncryptedFileMetadata($/;" f +FreeEncryptionCertificateHashList vendor/winapi/src/um/winefs.rs /^ pub fn FreeEncryptionCertificateHashList($/;" f +FreeEnvironmentStringsA vendor/winapi/src/um/processenv.rs /^ pub fn FreeEnvironmentStringsA($/;" f +FreeEnvironmentStringsW vendor/winapi/src/um/processenv.rs /^ pub fn FreeEnvironmentStringsW($/;" f +FreeInheritedFromArray vendor/winapi/src/um/aclapi.rs /^ pub fn FreeInheritedFromArray($/;" f +FreeInterfaceDnsSettings vendor/winapi/src/shared/netioapi.rs /^ pub fn FreeInterfaceDnsSettings($/;" f +FreeLibrary vendor/libloading/src/error.rs /^ FreeLibrary {$/;" e enum:Error +FreeLibrary vendor/winapi/src/um/libloaderapi.rs /^ pub fn FreeLibrary($/;" f +FreeLibraryAndExitThread vendor/winapi/src/um/libloaderapi.rs /^ pub fn FreeLibraryAndExitThread($/;" f +FreeLibraryUnknown vendor/libloading/src/error.rs /^ FreeLibraryUnknown,$/;" e enum:Error +FreeLibraryWhenCallbackReturns vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn FreeLibraryWhenCallbackReturns($/;" f +FreeMemoryJobObject vendor/winapi/src/um/jobapi2.rs /^ pub fn FreeMemoryJobObject($/;" f +FreeMibTable vendor/winapi/src/shared/netioapi.rs /^ pub fn FreeMibTable($/;" f +FreePrinterNotifyInfo vendor/winapi/src/um/winspool.rs /^ pub fn FreePrinterNotifyInfo($/;" f +FreePropVariantArray vendor/winapi/src/um/combaseapi.rs /^ pub fn FreePropVariantArray($/;" f +FreePropVariantArray vendor/winapi/src/um/propidl.rs /^ pub fn FreePropVariantArray($/;" f +FreeResource vendor/winapi/src/um/libloaderapi.rs /^ pub fn FreeResource($/;" f +FreeSid vendor/winapi/src/um/securitybaseapi.rs /^ pub fn FreeSid($/;" f +FreeUserPhysicalPages vendor/winapi/src/um/memoryapi.rs /^ pub fn FreeUserPhysicalPages($/;" f +Frequently asked questions vendor/winapi/README.md /^## Frequently asked questions ##$/;" s chapter:winapi-rs +FromErrTest vendor/futures/tests_disabled/stream.rs /^impl From for FromErrTest {$/;" c +FromErrTest vendor/futures/tests_disabled/stream.rs /^struct FromErrTest(u32);$/;" s +FromSpans vendor/syn/src/span.rs /^pub trait FromSpans: Sized {$/;" i +FrozenBTreeMap vendor/elsa/src/map.rs /^impl Default for FrozenBTreeMap {$/;" c +FrozenBTreeMap vendor/elsa/src/map.rs /^impl From> for FrozenBTreeMap {$/;" c +FrozenBTreeMap vendor/elsa/src/map.rs /^impl FromIterator<(K, V)> for FrozenBTreeMap {$/;" c +FrozenBTreeMap vendor/elsa/src/map.rs /^impl FrozenBTreeMap {$/;" c +FrozenBTreeMap vendor/elsa/src/map.rs /^impl Index for FrozenBTreeMap {$/;" c +FrozenBTreeMap vendor/elsa/src/map.rs /^pub struct FrozenBTreeMap {$/;" s +FrozenBTreeMap vendor/elsa/src/sync.rs /^impl Default for FrozenBTreeMap {$/;" c +FrozenBTreeMap vendor/elsa/src/sync.rs /^impl From> for FrozenBTreeMap {$/;" c +FrozenBTreeMap vendor/elsa/src/sync.rs /^impl FromIterator<(K, V)> for FrozenBTreeMap {$/;" c +FrozenBTreeMap vendor/elsa/src/sync.rs /^impl FrozenBTreeMap {$/;" c +FrozenBTreeMap vendor/elsa/src/sync.rs /^impl Index for FrozenBTreeMap {$/;" c +FrozenBTreeMap vendor/elsa/src/sync.rs /^pub struct FrozenBTreeMap(RwLock>);$/;" s +FrozenIndexMap vendor/elsa/src/index_map.rs /^impl From> for FrozenIndexMap {$/;" c +FrozenIndexMap vendor/elsa/src/index_map.rs /^impl FromIterator<(K, V)> for FrozenIndexMap/;" c +FrozenIndexMap vendor/elsa/src/index_map.rs /^impl Default for FrozenIndexMap {$/;" c +FrozenIndexMap vendor/elsa/src/index_map.rs /^impl FrozenIndexMap {$/;" c +FrozenIndexMap vendor/elsa/src/index_map.rs /^impl Index for FrozenIndexMap {$/;" c +FrozenIndexMap vendor/elsa/src/index_map.rs /^impl FrozenIndexMap {$/;" c +FrozenIndexMap vendor/elsa/src/index_map.rs /^pub struct FrozenIndexMap {$/;" s +FrozenIndexSet vendor/elsa/src/index_set.rs /^impl From> for FrozenIndexSet {$/;" c +FrozenIndexSet vendor/elsa/src/index_set.rs /^impl FrozenIndexSet {$/;" c +FrozenIndexSet vendor/elsa/src/index_set.rs /^impl Index for FrozenIndexSet {$/;" c +FrozenIndexSet vendor/elsa/src/index_set.rs /^impl FromIterator for FrozenIndexSet {$/;" c +FrozenIndexSet vendor/elsa/src/index_set.rs /^impl Default for FrozenIndexSet {$/;" c +FrozenIndexSet vendor/elsa/src/index_set.rs /^impl FrozenIndexSet {$/;" c +FrozenIndexSet vendor/elsa/src/index_set.rs /^pub struct FrozenIndexSet {$/;" s +FrozenMap vendor/elsa/src/map.rs /^impl From> for FrozenMap {$/;" c +FrozenMap vendor/elsa/src/map.rs /^impl FromIterator<(K, V)> for FrozenMap {$/;" c +FrozenMap vendor/elsa/src/map.rs /^impl Default for FrozenMap {$/;" c +FrozenMap vendor/elsa/src/map.rs /^impl FrozenMap {$/;" c +FrozenMap vendor/elsa/src/map.rs /^impl Index for FrozenMap {$/;" c +FrozenMap vendor/elsa/src/map.rs /^impl FrozenMap {$/;" c +FrozenMap vendor/elsa/src/map.rs /^pub struct FrozenMap {$/;" s +FrozenMap vendor/elsa/src/sync.rs /^impl FrozenMap {$/;" c +FrozenMap vendor/elsa/src/sync.rs /^pub struct FrozenMap {$/;" s +FrozenVec vendor/elsa/src/sync.rs /^impl FrozenVec {$/;" c +FrozenVec vendor/elsa/src/sync.rs /^pub struct FrozenVec {$/;" s +FrozenVec vendor/elsa/src/vec.rs /^impl<'a, T: StableDeref> IntoIterator for &'a FrozenVec {$/;" c +FrozenVec vendor/elsa/src/vec.rs /^impl FromIterator for FrozenVec {$/;" c +FrozenVec vendor/elsa/src/vec.rs /^impl FrozenVec {$/;" c +FrozenVec vendor/elsa/src/vec.rs /^impl Index for FrozenVec {$/;" c +FrozenVec vendor/elsa/src/vec.rs /^impl Default for FrozenVec {$/;" c +FrozenVec vendor/elsa/src/vec.rs /^impl From> for FrozenVec {$/;" c +FrozenVec vendor/elsa/src/vec.rs /^impl FrozenVec {$/;" c +FrozenVec vendor/elsa/src/vec.rs /^pub struct FrozenVec {$/;" s +FsType vendor/nix/src/sys/statfs.rs /^pub struct FsType(pub fs_type_t);$/;" s +FtpCommandA vendor/winapi/src/um/wininet.rs /^ pub fn FtpCommandA($/;" f +FtpCommandW vendor/winapi/src/um/wininet.rs /^ pub fn FtpCommandW($/;" f +FtpCreateDirectoryA vendor/winapi/src/um/wininet.rs /^ pub fn FtpCreateDirectoryA($/;" f +FtpCreateDirectoryW vendor/winapi/src/um/wininet.rs /^ pub fn FtpCreateDirectoryW($/;" f +FtpDeleteFileA vendor/winapi/src/um/wininet.rs /^ pub fn FtpDeleteFileA($/;" f +FtpDeleteFileW vendor/winapi/src/um/wininet.rs /^ pub fn FtpDeleteFileW($/;" f +FtpFindFirstFileA vendor/winapi/src/um/wininet.rs /^ pub fn FtpFindFirstFileA($/;" f +FtpFindFirstFileW vendor/winapi/src/um/wininet.rs /^ pub fn FtpFindFirstFileW($/;" f +FtpGetCurrentDirectoryA vendor/winapi/src/um/wininet.rs /^ pub fn FtpGetCurrentDirectoryA($/;" f +FtpGetCurrentDirectoryW vendor/winapi/src/um/wininet.rs /^ pub fn FtpGetCurrentDirectoryW($/;" f +FtpGetFileA vendor/winapi/src/um/wininet.rs /^ pub fn FtpGetFileA($/;" f +FtpGetFileEx vendor/winapi/src/um/wininet.rs /^ pub fn FtpGetFileEx($/;" f +FtpGetFileSize vendor/winapi/src/um/wininet.rs /^ pub fn FtpGetFileSize($/;" f +FtpGetFileW vendor/winapi/src/um/wininet.rs /^ pub fn FtpGetFileW($/;" f +FtpOpenFileA vendor/winapi/src/um/wininet.rs /^ pub fn FtpOpenFileA($/;" f +FtpOpenFileW vendor/winapi/src/um/wininet.rs /^ pub fn FtpOpenFileW($/;" f +FtpPutFileA vendor/winapi/src/um/wininet.rs /^ pub fn FtpPutFileA($/;" f +FtpPutFileEx vendor/winapi/src/um/wininet.rs /^ pub fn FtpPutFileEx($/;" f +FtpPutFileW vendor/winapi/src/um/wininet.rs /^ pub fn FtpPutFileW($/;" f +FtpRemoveDirectoryA vendor/winapi/src/um/wininet.rs /^ pub fn FtpRemoveDirectoryA($/;" f +FtpRemoveDirectoryW vendor/winapi/src/um/wininet.rs /^ pub fn FtpRemoveDirectoryW($/;" f +FtpRenameFileA vendor/winapi/src/um/wininet.rs /^ pub fn FtpRenameFileA($/;" f +FtpRenameFileW vendor/winapi/src/um/wininet.rs /^ pub fn FtpRenameFileW($/;" f +FtpSetCurrentDirectoryA vendor/winapi/src/um/wininet.rs /^ pub fn FtpSetCurrentDirectoryA($/;" f +FtpSetCurrentDirectoryW vendor/winapi/src/um/wininet.rs /^ pub fn FtpSetCurrentDirectoryW($/;" f +Full vendor/futures-channel/src/mpsc/mod.rs /^ Full,$/;" e enum:SendErrorKind +Function builtins/mkbuiltins.c /^typedef int Function ();$/;" t typeref:typename:int ()() file: +Function general.h /^typedef int Function ();$/;" t typeref:typename:int ()() +Function input.h /^typedef int Function ();$/;" t typeref:typename:int ()() +Function lib/readline/rltypedefs.h /^typedef int Function () __attribute__ ((deprecated));$/;" t typeref:typename:int ()() +Function r_bash/src/lib.rs /^pub type Function = ::core::option::Option ::std::os::raw::c_int>;$/;" t +Function r_glob/src/lib.rs /^pub type Function = ::core::option::Option ::std::os::raw::c_int>;$/;" t +Function r_print_cmd/src/lib.rs /^pub type Function = ::std::option::Option ::std::os::raw::c_int>;$/;" t +Function r_readline/src/lib.rs /^pub type Function = ::core::option::Option ::std::os::raw::c_int>;$/;" t +Function vendor/fluent-bundle/src/entry.rs /^ Function(FluentFunction),$/;" e enum:Entry +Function vendor/fluent-bundle/src/errors.rs /^ Function,$/;" e enum:EntryKind +Function vendor/fluent-bundle/src/resolver/errors.rs /^ Function {$/;" e enum:ReferenceKind +FunctionReference vendor/fluent-syntax/src/ast/mod.rs /^ FunctionReference {$/;" e enum:InlineExpression +Function_def command.h /^ struct function_def *Function_def;$/;" m union:command::__anon3aaf009a020a typeref:struct:function_def * +Fuse vendor/futures-util/src/future/future/fuse.rs /^impl Fuse {$/;" c +Fuse vendor/futures-util/src/future/future/fuse.rs /^impl FusedFuture for Fuse {$/;" c +Fuse vendor/futures-util/src/future/future/fuse.rs /^impl Future for Fuse {$/;" c +Fuse vendor/futures-util/src/future/future/fuse.rs /^impl Fuse {$/;" c +Fuse vendor/futures-util/src/stream/stream/fuse.rs /^impl, Item> Sink for Fuse {$/;" c +Fuse vendor/futures-util/src/stream/stream/fuse.rs /^impl FusedStream for Fuse {$/;" c +Fuse vendor/futures-util/src/stream/stream/fuse.rs /^impl Stream for Fuse {$/;" c +Fuse vendor/futures-util/src/stream/stream/fuse.rs /^impl Fuse {$/;" c +FusedFuture vendor/futures-core/src/future.rs /^pub trait FusedFuture: Future {$/;" i +FusedStream vendor/futures-core/src/stream.rs /^pub trait FusedStream: Stream {$/;" i +Fut vendor/futures-util/src/compat/compat01as03.rs /^impl Future01CompatExt for Fut {}$/;" c +Fut vendor/futures-util/src/future/try_future/mod.rs /^impl TryFutureExt for Fut {}$/;" c +Future vendor/futures-task/src/future_obj.rs /^unsafe impl<'a, T> UnsafeFutureObj<'a, T> for &'a mut (dyn Future + Unpin + 'a) {$/;" c +Future vendor/futures-util/src/future/future/shared.rs /^ Future(Fut),$/;" e enum:FutureOrOutput +Future vendor/futures-util/src/future/maybe_done.rs /^ Future(\/* #[pin] *\/ Fut),$/;" e enum:MaybeDone +Future vendor/futures-util/src/future/try_maybe_done.rs /^ Future(\/* #[pin] *\/ Fut),$/;" e enum:TryMaybeDone +Future01CompatExt vendor/futures-util/src/compat/compat01as03.rs /^pub trait Future01CompatExt: Future01 {$/;" i +FutureData vendor/futures/tests/eager_drop.rs /^impl Future for FutureData {$/;" c +FutureData vendor/futures/tests/eager_drop.rs /^struct FutureData {$/;" s +FutureExt vendor/futures-util/src/future/future/mod.rs /^pub trait FutureExt: Future {$/;" i +FutureObj vendor/futures-task/src/future_obj.rs /^ impl<'a, F: Future + Send + 'a> From> for FutureObj<'a, ()> {$/;" c module:if_alloc +FutureObj vendor/futures-task/src/future_obj.rs /^ impl<'a, F: Future + Send + 'a> From>> for FutureObj<'a, ()> {$/;" c module:if_alloc +FutureObj vendor/futures-task/src/future_obj.rs /^ impl<'a> From + Send + 'a>> for FutureObj<'a, ()> {$/;" c module:if_alloc +FutureObj vendor/futures-task/src/future_obj.rs /^ impl<'a> From + Send + 'a>>> for FutureObj<'a, ()> {$/;" c module:if_alloc +FutureObj vendor/futures-task/src/future_obj.rs /^impl<'a, T> FutureObj<'a, T> {$/;" c +FutureObj vendor/futures-task/src/future_obj.rs /^impl Future for FutureObj<'_, T> {$/;" c +FutureObj vendor/futures-task/src/future_obj.rs /^impl Unpin for FutureObj<'_, T> {}$/;" c +FutureObj vendor/futures-task/src/future_obj.rs /^impl fmt::Debug for FutureObj<'_, T> {$/;" c +FutureObj vendor/futures-task/src/future_obj.rs /^pub struct FutureObj<'a, T>(LocalFutureObj<'a, T>);$/;" s +FutureObj vendor/futures-task/src/future_obj.rs /^unsafe impl Send for FutureObj<'_, T> {}$/;" c +FutureOrOutput vendor/futures-util/src/future/future/shared.rs /^enum FutureOrOutput {$/;" g +FuturesOrdered vendor/futures-util/src/stream/futures_ordered.rs /^impl Debug for FuturesOrdered {$/;" c +FuturesOrdered vendor/futures-util/src/stream/futures_ordered.rs /^impl Default for FuturesOrdered {$/;" c +FuturesOrdered vendor/futures-util/src/stream/futures_ordered.rs /^impl Extend for FuturesOrdered {$/;" c +FuturesOrdered vendor/futures-util/src/stream/futures_ordered.rs /^impl FromIterator for FuturesOrdered {$/;" c +FuturesOrdered vendor/futures-util/src/stream/futures_ordered.rs /^impl FusedStream for FuturesOrdered {$/;" c +FuturesOrdered vendor/futures-util/src/stream/futures_ordered.rs /^impl FuturesOrdered {$/;" c +FuturesOrdered vendor/futures-util/src/stream/futures_ordered.rs /^impl Stream for FuturesOrdered {$/;" c +FuturesOrdered vendor/futures-util/src/stream/futures_ordered.rs /^impl Unpin for FuturesOrdered {}$/;" c +FuturesOrdered vendor/futures-util/src/stream/futures_ordered.rs /^pub struct FuturesOrdered {$/;" s +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl LocalSpawn for FuturesUnordered> {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl Spawn for FuturesUnordered> {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl<'a, Fut: Unpin> IntoIterator for &'a FuturesUnordered {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl<'a, Fut: Unpin> IntoIterator for &'a mut FuturesUnordered {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl FusedStream for FuturesUnordered {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl Stream for FuturesUnordered {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl IntoIterator for FuturesUnordered {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl Debug for FuturesUnordered {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl Default for FuturesUnordered {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl Drop for FuturesUnordered {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl Extend for FuturesUnordered {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl FromIterator for FuturesUnordered {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl FuturesUnordered {$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^impl Unpin for FuturesUnordered {}$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^pub struct FuturesUnordered {$/;" s +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^unsafe impl Send for FuturesUnordered {}$/;" c +FuturesUnordered vendor/futures-util/src/stream/futures_unordered/mod.rs /^unsafe impl Sync for FuturesUnordered {}$/;" c +FxHashMap vendor/rustc-hash/src/lib.rs /^pub type FxHashMap = HashMap>;$/;" t +FxHashSet vendor/rustc-hash/src/lib.rs /^pub type FxHashSet = HashSet>;$/;" t +FxHasher vendor/rustc-hash/src/lib.rs /^impl Default for FxHasher {$/;" c +FxHasher vendor/rustc-hash/src/lib.rs /^impl FxHasher {$/;" c +FxHasher vendor/rustc-hash/src/lib.rs /^impl Hasher for FxHasher {$/;" c +FxHasher vendor/rustc-hash/src/lib.rs /^pub struct FxHasher {$/;" s +GCC_LINT_CFLAGS Makefile.in /^GCC_LINT_CFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(GCC_LINT_FLAGS)$/;" m +GCC_LINT_FLAGS Makefile.in /^GCC_LINT_FLAGS = -O -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wno-parentheses \\$/;" m +GCC_LINT_FLAGS builtins/Makefile.in /^GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \\$/;" m +GCC_LINT_FLAGS lib/sh/Makefile.in /^GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \\$/;" m +GCHAR lib/glob/glob.c /^#define GCHAR /;" d file: +GCOV_XCFLAGS Makefile.in /^GCOV_XCFLAGS = -fprofile-arcs -ftest-coverage$/;" m +GCOV_XLDFLAGS Makefile.in /^GCOV_XLDFLAGS = -fprofile-arcs -ftest-coverage$/;" m +GDI_DIBSIZE vendor/winapi/src/um/wingdi.rs /^pub fn GDI_DIBSIZE(bi: &BITMAPINFOHEADER) -> DWORD {$/;" f +GDI_DIBWIDTHBYTES vendor/winapi/src/um/wingdi.rs /^pub fn GDI_DIBWIDTHBYTES(bi: &BITMAPINFOHEADER) -> DWORD {$/;" f +GDI_WIDTHBYTES vendor/winapi/src/um/wingdi.rs /^pub fn GDI_WIDTHBYTES(bits: DWORD) -> DWORD {$/;" f +GDI__DIBSIZE vendor/winapi/src/um/wingdi.rs /^pub fn GDI__DIBSIZE(bi: &BITMAPINFOHEADER) -> DWORD {$/;" f +GE test.c /^#define GE /;" d file: +GENERIC_LIST builtins_rust/common/src/lib.rs /^type GENERIC_LIST = g_list;$/;" t +GENERIC_LIST builtins_rust/fc/src/lib.rs /^pub struct GENERIC_LIST {$/;" s +GENERIC_LIST general.h /^} GENERIC_LIST;$/;" t typeref:struct:g_list +GENERIC_LIST r_bash/src/lib.rs /^pub type GENERIC_LIST = g_list;$/;" t +GENERIC_LIST r_glob/src/lib.rs /^pub type GENERIC_LIST = g_list;$/;" t +GENERIC_LIST r_readline/src/lib.rs /^pub type GENERIC_LIST = g_list;$/;" t +GEN_COMPS pcomplete.c /^#define GEN_COMPS(/;" d file: +GEN_XCOMPS pcomplete.c /^#define GEN_XCOMPS(/;" d file: +GEOCLASS vendor/winapi/src/um/winnls.rs /^pub type GEOCLASS = DWORD;$/;" t +GEOID vendor/winapi/src/um/winnls.rs /^pub type GEOID = LONG;$/;" t +GEOTYPE vendor/winapi/src/um/winnls.rs /^pub type GEOTYPE = DWORD;$/;" t +GEQ expr.c /^#define GEQ /;" d file: +GERMANIC_PLURAL lib/intl/plural-exp.c /^struct expression GERMANIC_PLURAL =$/;" v typeref:struct:expression +GERMANIC_PLURAL lib/intl/plural-exp.c /^struct expression GERMANIC_PLURAL;$/;" v typeref:struct:expression +GERMANIC_PLURAL lib/intl/plural-exp.h /^# define GERMANIC_PLURAL /;" d +GETARG lib/sh/snprintf.c /^#define GETARG(/;" d file: +GETATTR lib/readline/rltty.c /^# define GETATTR(/;" d file: +GETDOUBLE lib/sh/snprintf.c /^#define GETDOUBLE(/;" d file: +GETLDOUBLE lib/sh/snprintf.c /^#define GETLDOUBLE(/;" d file: +GETLOCALEDATA lib/sh/snprintf.c /^# define GETLOCALEDATA(/;" d file: +GETOPT_EOF builtins/bashgetopt.h /^#define GETOPT_EOF /;" d +GETOPT_HELP builtins/bashgetopt.h /^#define GETOPT_HELP /;" d +GETOPT_HELP builtins_rust/common/src/lib.rs /^macro_rules! GETOPT_HELP {$/;" M +GETOPT_SOURCE Makefile.in /^GETOPT_SOURCE = $(DEFSRC)\/getopt.c $(DEFSRC)\/getopt.h$/;" m +GETORIGSIG trap.c /^#define GETORIGSIG(/;" d file: +GETSIGNED lib/sh/snprintf.c /^#define GETSIGNED(/;" d file: +GETTEXT lib/intl/gettext.c /^# define GETTEXT /;" d file: +GETTEXT lib/intl/gettext.c /^GETTEXT (msgid)$/;" f +GETTIME general.h /^#define GETTIME(/;" d +GETUNSIGNED lib/sh/snprintf.c /^#define GETUNSIGNED(/;" d file: +GET_ALG_CLASS vendor/winapi/src/um/wincrypt.rs /^pub fn GET_ALG_CLASS(x: ALG_ID) -> ALG_ID {$/;" f +GET_ALG_SID vendor/winapi/src/um/wincrypt.rs /^pub fn GET_ALG_SID(x: ALG_ID) -> ALG_ID {$/;" f +GET_ALG_TYPE vendor/winapi/src/um/wincrypt.rs /^pub fn GET_ALG_TYPE(x: ALG_ID) -> ALG_ID {$/;" f +GET_APPCOMMAND_LPARAM vendor/winapi/src/um/winuser.rs /^pub fn GET_APPCOMMAND_LPARAM(lParam: LPARAM) -> c_short {$/;" f +GET_ARRAY_FROM_VAR array.h /^#define GET_ARRAY_FROM_VAR(/;" d +GET_ARRAY_FROM_VAR builtins_rust/caller/src/lib.rs /^macro_rules! GET_ARRAY_FROM_VAR {$/;" M +GET_BINARY_O_OPTION_VALUE builtins_rust/set/src/lib.rs /^macro_rules! GET_BINARY_O_OPTION_VALUE {$/;" M +GET_BIT vendor/winapi/src/shared/bthdef.rs /^pub fn GET_BIT(field: u64, offset: u8) -> u64 {$/;" f +GET_BITS vendor/winapi/src/shared/bthdef.rs /^pub fn GET_BITS(field: u64, offset: u8, mask: u64) -> u64 {$/;" f +GET_CERT_ALT_NAME_ENTRY_ERR_INDEX vendor/winapi/src/um/wincrypt.rs /^pub fn GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(X: DWORD) -> DWORD {$/;" f +GET_CERT_ALT_NAME_VALUE_ERR_INDEX vendor/winapi/src/um/wincrypt.rs /^pub fn GET_CERT_ALT_NAME_VALUE_ERR_INDEX(X: DWORD) -> DWORD {$/;" f +GET_CERT_ENCODING_TYPE vendor/winapi/src/um/wincrypt.rs /^pub fn GET_CERT_ENCODING_TYPE(X: DWORD) -> DWORD {$/;" f +GET_CERT_UNICODE_ATTR_ERR_INDEX vendor/winapi/src/um/wincrypt.rs /^pub fn GET_CERT_UNICODE_ATTR_ERR_INDEX(X: DWORD) -> DWORD {$/;" f +GET_CERT_UNICODE_RDN_ERR_INDEX vendor/winapi/src/um/wincrypt.rs /^pub fn GET_CERT_UNICODE_RDN_ERR_INDEX(X: DWORD) -> DWORD {$/;" f +GET_CERT_UNICODE_VALUE_ERR_INDEX vendor/winapi/src/um/wincrypt.rs /^pub fn GET_CERT_UNICODE_VALUE_ERR_INDEX(X: DWORD) -> DWORD {$/;" f +GET_CMSG_ENCODING_TYPE vendor/winapi/src/um/wincrypt.rs /^pub fn GET_CMSG_ENCODING_TYPE(X: DWORD) -> DWORD {$/;" f +GET_COD_FORMAT vendor/winapi/src/shared/bthdef.rs /^pub fn GET_COD_FORMAT(cod: BTH_COD) -> u8 {$/;" f +GET_COD_LAN_ACCESS vendor/winapi/src/shared/bthdef.rs /^pub fn GET_COD_LAN_ACCESS(cod: BTH_COD) -> u8 {$/;" f +GET_COD_LAN_MINOR vendor/winapi/src/shared/bthdef.rs /^pub fn GET_COD_LAN_MINOR(cod: BTH_COD) -> u8 {$/;" f +GET_COD_MAJOR vendor/winapi/src/shared/bthdef.rs /^pub fn GET_COD_MAJOR(cod: BTH_COD) -> u8 {$/;" f +GET_COD_MINOR vendor/winapi/src/shared/bthdef.rs /^pub fn GET_COD_MINOR(cod: BTH_COD) -> u8 {$/;" f +GET_COD_SERVICE vendor/winapi/src/shared/bthdef.rs /^pub fn GET_COD_SERVICE(cod: BTH_COD) -> u16 {$/;" f +GET_CRL_DIST_POINT_ERR_INDEX vendor/winapi/src/um/wincrypt.rs /^pub fn GET_CRL_DIST_POINT_ERR_INDEX(X: DWORD) -> DWORD {$/;" f +GET_CROSS_CERT_DIST_POINT_ERR_INDEX vendor/winapi/src/um/wincrypt.rs /^pub fn GET_CROSS_CERT_DIST_POINT_ERR_INDEX(X: DWORD) -> DWORD {$/;" f +GET_DEVICE_LPARAM vendor/winapi/src/um/winuser.rs /^pub fn GET_DEVICE_LPARAM(lParam: LPARAM) -> WORD {$/;" f +GET_KEYSTATE_WPARAM vendor/winapi/src/um/winuser.rs /^pub fn GET_KEYSTATE_WPARAM(wParam: WPARAM) -> WORD {$/;" f +GET_LINE_INITIAL_ALLOCATION lib/sh/zgetline.c /^#define GET_LINE_INITIAL_ALLOCATION /;" d file: +GET_NAP vendor/winapi/src/shared/bthdef.rs /^pub fn GET_NAP(addr: BTH_ADDR) -> u16 {$/;" f +GET_NCHITTEST_WPARAM vendor/winapi/src/um/winuser.rs /^pub fn GET_NCHITTEST_WPARAM(wParam: WPARAM) -> c_short {$/;" f +GET_ORIGINAL_SIGNAL trap.c /^#define GET_ORIGINAL_SIGNAL(/;" d file: +GET_RAWINPUT_CODE_WPARAM vendor/winapi/src/um/winuser.rs /^pub fn GET_RAWINPUT_CODE_WPARAM(wParam: WPARAM) -> WPARAM { wParam & 0xff }$/;" f +GET_SAP vendor/winapi/src/shared/bthdef.rs /^pub fn GET_SAP(addr: BTH_ADDR) -> u32 {$/;" f +GET_WHEEL_DELTA_WPARAM vendor/winapi/src/um/winuser.rs /^pub fn GET_WHEEL_DELTA_WPARAM(wParam: WPARAM) -> c_short {$/;" f +GET_XBUTTON_WPARAM vendor/winapi/src/um/winuser.rs /^pub fn GET_XBUTTON_WPARAM(wParam: WPARAM) -> WORD {$/;" f +GET_X_LPARAM vendor/winapi/src/shared/windowsx.rs /^pub fn GET_X_LPARAM(lp: LPARAM) -> c_int {$/;" f +GET_Y_LPARAM vendor/winapi/src/shared/windowsx.rs /^pub fn GET_Y_LPARAM(lp: LPARAM) -> c_int {$/;" f +GLOBALHANDLE vendor/winapi/src/shared/minwindef.rs /^pub type GLOBALHANDLE = HANDLE;$/;" t +GLOBASCII_DEFAULT configure.ac /^AC_DEFINE(GLOBASCII_DEFAULT, 0)$/;" d +GLOBASCII_DEFAULT configure.ac /^AC_DEFINE(GLOBASCII_DEFAULT, 1)$/;" d +GLOBASCII_DEFAULT lib/glob/smatch.c /^# define GLOBASCII_DEFAULT /;" d file: +GLOB_ABSSRC Makefile.in /^GLOB_ABSSRC = ${topdir}\/$(GLOB_LIBDIR)$/;" m +GLOB_CHAR syntax.h /^#define GLOB_CHAR(/;" d +GLOB_DEP Makefile.in /^GLOB_DEP = $(GLOB_LIBRARY)$/;" m +GLOB_FAILED pathexp.h /^# define GLOB_FAILED(/;" d +GLOB_LDFLAGS Makefile.in /^GLOB_LDFLAGS = -L$(GLOB_LIBDIR)$/;" m +GLOB_LIB Makefile.in /^GLOB_LIB = -lglob$/;" m +GLOB_LIBDIR Makefile.in /^GLOB_LIBDIR = $(dot)\/$(LIBSUBDIR)\/glob$/;" m +GLOB_LIBRARY Makefile.in /^GLOB_LIBRARY = $(GLOB_LIBDIR)\/libglob.a$/;" m +GLOB_LIBSRC Makefile.in /^GLOB_LIBSRC = $(LIBSRC)\/glob$/;" m +GLOB_OBJ Makefile.in /^GLOB_OBJ = $(GLOB_LIBDIR)\/glob.o $(GLOB_LIBDIR)\/strmatch.o \\$/;" m +GLOB_SOURCE Makefile.in /^GLOB_SOURCE = $(GLOB_LIBSRC)\/glob.c $(GLOB_LIBSRC)\/strmatch.c \\$/;" m +GLOB_TESTNAME lib/glob/glob.c /^# define GLOB_TESTNAME(/;" d file: +GLOB_TESTNAME lib/glob/glob.c /^# define GLOB_TESTNAME(/;" d file: +GLbitfield vendor/winapi/src/um/gl/gl.rs /^pub type GLbitfield = c_uint;$/;" t +GLboolean vendor/winapi/src/um/gl/gl.rs /^pub type GLboolean = c_uchar;$/;" t +GLbyte vendor/winapi/src/um/gl/gl.rs /^pub type GLbyte = c_schar;$/;" t +GLclampd vendor/winapi/src/um/gl/gl.rs /^pub type GLclampd = c_double;$/;" t +GLclampf vendor/winapi/src/um/gl/gl.rs /^pub type GLclampf = c_float;$/;" t +GLdouble vendor/winapi/src/um/gl/gl.rs /^pub type GLdouble = c_double;$/;" t +GLenum vendor/winapi/src/um/gl/gl.rs /^pub type GLenum = c_uint;$/;" t +GLfloat vendor/winapi/src/um/gl/gl.rs /^pub type GLfloat = c_float;$/;" t +GLint vendor/winapi/src/um/gl/gl.rs /^pub type GLint = c_int;$/;" t +GLshort vendor/winapi/src/um/gl/gl.rs /^pub type GLshort = c_short;$/;" t +GLsizei vendor/winapi/src/um/gl/gl.rs /^pub type GLsizei = c_int;$/;" t +GLubyte vendor/winapi/src/um/gl/gl.rs /^pub type GLubyte = c_uchar;$/;" t +GLuint vendor/winapi/src/um/gl/gl.rs /^pub type GLuint = c_uint;$/;" t +GLushort vendor/winapi/src/um/gl/gl.rs /^pub type GLushort = c_ushort;$/;" t +GLvoid vendor/winapi/src/um/gl/gl.rs /^pub type GLvoid = c_void;$/;" t +GMATCH lib/glob/sm_loop.c /^GMATCH (string, se, pattern, pe, ends, flags)$/;" f file: +GMATCH lib/glob/smatch.c /^#define GMATCH /;" d file: +GPFIDL_FLAGS vendor/winapi/src/um/shlobj.rs /^pub type GPFIDL_FLAGS = c_int;$/;" t +GRAM_H Makefile.in /^GRAM_H = parser-built$/;" m +GRND_NONBLOCK lib/sh/random.c /^# define GRND_NONBLOCK /;" d file: +GRND_RANDOM lib/sh/random.c /^# define GRND_RANDOM /;" d file: +GROUP vendor/winapi/src/um/winsock2.rs /^pub type GROUP = c_uint;$/;" t +GROUPID vendor/winapi/src/um/wininet.rs /^pub type GROUPID = LONGLONG;$/;" t +GROUP_COM builtins_rust/kill/src/intercdep.rs /^pub type GROUP_COM = group_com;$/;" t +GROUP_COM builtins_rust/setattr/src/intercdep.rs /^pub type GROUP_COM = group_com;$/;" t +GROUP_COM command.h /^} GROUP_COM;$/;" t typeref:struct:group_com +GROUP_COM r_bash/src/lib.rs /^pub type GROUP_COM = group_com;$/;" t +GROUP_COM r_glob/src/lib.rs /^pub type GROUP_COM = group_com;$/;" t +GROUP_COM r_readline/src/lib.rs /^pub type GROUP_COM = group_com;$/;" t +GT expr.c /^#define GT /;" d file: +GT test.c /^#define GT /;" d file: +GX_ADDCURDIR lib/glob/glob.h /^#define GX_ADDCURDIR /;" d +GX_ALLDIRS lib/glob/glob.h /^#define GX_ALLDIRS /;" d +GX_GLOBSTAR lib/glob/glob.h /^#define GX_GLOBSTAR /;" d +GX_MARKDIRS lib/glob/glob.h /^#define GX_MARKDIRS /;" d +GX_MATCHDIRS lib/glob/glob.h /^#define GX_MATCHDIRS /;" d +GX_MATCHDOT lib/glob/glob.h /^#define GX_MATCHDOT /;" d +GX_NOCASE lib/glob/glob.h /^#define GX_NOCASE /;" d +GX_NULLDIR lib/glob/glob.h /^#define GX_NULLDIR /;" d +GX_RECURSE lib/glob/glob.h /^#define GX_RECURSE /;" d +GX_SYMLINK lib/glob/glob.h /^#define GX_SYMLINK /;" d +G_ARG_MISSING builtins_rust/getopts/src/lib.rs /^macro_rules! G_ARG_MISSING {$/;" M +G_EOF builtins_rust/getopts/src/lib.rs /^macro_rules! G_EOF {$/;" M +G_INVALID_OPT builtins_rust/getopts/src/lib.rs /^macro_rules! G_INVALID_OPT {$/;" M +Garg builtins_rust/complete/src/lib.rs /^pub static mut Garg: *mut c_char = std::ptr::null_mut();$/;" v +GdiAlphaBlend vendor/winapi/src/um/wingdi.rs /^ pub fn GdiAlphaBlend($/;" f +GdiComment vendor/winapi/src/um/wingdi.rs /^ pub fn GdiComment($/;" f +GdiFlush vendor/winapi/src/um/wingdi.rs /^ pub fn GdiFlush() -> BOOL;$/;" f +GdiGetBatchLimit vendor/winapi/src/um/wingdi.rs /^ pub fn GdiGetBatchLimit() -> DWORD;$/;" f +GdiGradientFill vendor/winapi/src/um/wingdi.rs /^ pub fn GdiGradientFill($/;" f +GdiSetBatchLimit vendor/winapi/src/um/wingdi.rs /^ pub fn GdiSetBatchLimit($/;" f +GdiTransparentBlt vendor/winapi/src/um/wingdi.rs /^ pub fn GdiTransparentBlt($/;" f +GenerateConsoleCtrlEvent vendor/winapi/src/um/wincon.rs /^ pub fn GenerateConsoleCtrlEvent($/;" f +Generic vendor/thiserror/tests/ui/lifetime.rs /^struct Generic(T);$/;" s +GenericArgument vendor/syn/src/gen/clone.rs /^impl Clone for GenericArgument {$/;" c +GenericArgument vendor/syn/src/gen/debug.rs /^impl Debug for GenericArgument {$/;" c +GenericArgument vendor/syn/src/gen/eq.rs /^impl Eq for GenericArgument {}$/;" c +GenericArgument vendor/syn/src/gen/eq.rs /^impl PartialEq for GenericArgument {$/;" c +GenericArgument vendor/syn/src/gen/hash.rs /^impl Hash for GenericArgument {$/;" c +GenericArgument vendor/syn/src/path.rs /^ impl Parse for GenericArgument {$/;" c module:parsing +GenericArgument vendor/syn/src/path.rs /^ impl ToTokens for GenericArgument {$/;" c module:printing +GenericMethodArgument vendor/syn/src/expr.rs /^ impl Parse for GenericMethodArgument {$/;" c module:parsing +GenericMethodArgument vendor/syn/src/expr.rs /^ impl ToTokens for GenericMethodArgument {$/;" c module:printing +GenericMethodArgument vendor/syn/src/gen/clone.rs /^impl Clone for GenericMethodArgument {$/;" c +GenericMethodArgument vendor/syn/src/gen/debug.rs /^impl Debug for GenericMethodArgument {$/;" c +GenericMethodArgument vendor/syn/src/gen/eq.rs /^impl Eq for GenericMethodArgument {}$/;" c +GenericMethodArgument vendor/syn/src/gen/eq.rs /^impl PartialEq for GenericMethodArgument {$/;" c +GenericMethodArgument vendor/syn/src/gen/hash.rs /^impl Hash for GenericMethodArgument {$/;" c +GenericParam vendor/syn/src/gen/clone.rs /^impl Clone for GenericParam {$/;" c +GenericParam vendor/syn/src/gen/debug.rs /^impl Debug for GenericParam {$/;" c +GenericParam vendor/syn/src/gen/eq.rs /^impl Eq for GenericParam {}$/;" c +GenericParam vendor/syn/src/gen/eq.rs /^impl PartialEq for GenericParam {$/;" c +GenericParam vendor/syn/src/gen/hash.rs /^impl Hash for GenericParam {$/;" c +GenericParam vendor/syn/src/generics.rs /^ impl Parse for GenericParam {$/;" c module:parsing +GenericSIMD128 vendor/memchr/src/memmem/mod.rs /^ GenericSIMD128(wasm::Forward),$/;" e enum:SearcherKind +GenericSIMD128 vendor/memchr/src/memmem/mod.rs /^ GenericSIMD128(x86::sse::Forward),$/;" e enum:SearcherKind +GenericSIMD256 vendor/memchr/src/memmem/mod.rs /^ GenericSIMD256(x86::avx::Forward),$/;" e enum:SearcherKind +Generics vendor/syn/src/gen/clone.rs /^impl Clone for Generics {$/;" c +Generics vendor/syn/src/gen/debug.rs /^impl Debug for Generics {$/;" c +Generics vendor/syn/src/gen/eq.rs /^impl Eq for Generics {}$/;" c +Generics vendor/syn/src/gen/eq.rs /^impl PartialEq for Generics {$/;" c +Generics vendor/syn/src/gen/hash.rs /^impl Hash for Generics {$/;" c +Generics vendor/syn/src/generics.rs /^ impl Parse for Generics {$/;" c module:parsing +Generics vendor/syn/src/generics.rs /^ impl ToTokens for Generics {$/;" c module:printing +Generics vendor/syn/src/generics.rs /^impl Default for Generics {$/;" c +Generics vendor/syn/src/generics.rs /^impl Generics {$/;" c +Get vendor/nix/src/sys/socket/sockopt.rs /^trait Get {$/;" i +Get Involved vendor/fluent-bundle/README.md /^Get Involved$/;" s chapter:Fluent +Get Involved vendor/fluent-fallback/README.md /^Get Involved$/;" s chapter:Fluent +Get Involved vendor/fluent-resmgr/README.md /^Get Involved$/;" s chapter:Fluent Resource Manager +Get Involved vendor/fluent-syntax/README.md /^Get Involved$/;" s chapter:Fluent Syntax +Get Involved vendor/fluent/README.md /^Get Involved$/;" s chapter:Fluent +Get Involved vendor/intl-memoizer/README.md /^Get Involved$/;" s chapter:IntlMemoizer +Get Involved vendor/unic-langid/README.md /^Get Involved$/;" s chapter:unic-langid [![Build Status](https://travis-ci.org/zbraniecki/unic-locale.svg?branch=master)](https://travis-ci.org/zbraniecki/unic-locale) [![Coverage Status](https://coveralls.io/repos/github/zbraniecki/unic-locale/badge.svg?branch=master)](https://coveralls.io/github/zbraniecki/unic-locale?branch=master) +GetACP vendor/winapi/src/um/winnls.rs /^ pub fn GetACP() -> UINT;$/;" f +GetAcceptExSockaddrs vendor/winapi/src/um/mswsock.rs /^ pub fn GetAcceptExSockaddrs($/;" f +GetAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetAce($/;" f +GetAclInformation vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetAclInformation($/;" f +GetActiveProcessorCount vendor/winapi/src/um/winbase.rs /^ pub fn GetActiveProcessorCount($/;" f +GetActiveProcessorGroupCount vendor/winapi/src/um/winbase.rs /^ pub fn GetActiveProcessorGroupCount() -> WORD;$/;" f +GetActivePwrScheme vendor/winapi/src/um/powrprof.rs /^ pub fn GetActivePwrScheme($/;" f +GetActiveWindow vendor/winapi/src/um/winuser.rs /^ pub fn GetActiveWindow() -> HWND;$/;" f +GetAdapterIndex vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetAdapterIndex($/;" f +GetAdapterOrderMap vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetAdapterOrderMap() -> PIP_ADAPTER_ORDER_MAP;$/;" f +GetAdaptersAddresses vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetAdaptersAddresses($/;" f +GetAdaptersInfo vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetAdaptersInfo($/;" f +GetAddrInfoExA vendor/winapi/src/um/ws2tcpip.rs /^ pub fn GetAddrInfoExA($/;" f +GetAddrInfoExCancel vendor/winapi/src/um/ws2tcpip.rs /^ pub fn GetAddrInfoExCancel($/;" f +GetAddrInfoExOverlappedResult vendor/winapi/src/um/ws2tcpip.rs /^ pub fn GetAddrInfoExOverlappedResult($/;" f +GetAddrInfoExW vendor/winapi/src/um/ws2tcpip.rs /^ pub fn GetAddrInfoExW($/;" f +GetAddrInfoW vendor/winapi/src/um/ws2tcpip.rs /^ pub fn GetAddrInfoW($/;" f +GetAllUsersProfileDirectoryA vendor/winapi/src/um/userenv.rs /^ pub fn GetAllUsersProfileDirectoryA($/;" f +GetAllUsersProfileDirectoryW vendor/winapi/src/um/userenv.rs /^ pub fn GetAllUsersProfileDirectoryW($/;" f +GetAltMonthNames vendor/winapi/src/um/oleauto.rs /^ pub fn GetAltMonthNames($/;" f +GetAltTabInfoA vendor/winapi/src/um/winuser.rs /^ pub fn GetAltTabInfoA($/;" f +GetAltTabInfoW vendor/winapi/src/um/winuser.rs /^ pub fn GetAltTabInfoW($/;" f +GetAncestor vendor/winapi/src/um/winuser.rs /^ pub fn GetAncestor($/;" f +GetAnycastIpAddressEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn GetAnycastIpAddressEntry($/;" f +GetAnycastIpAddressTable vendor/winapi/src/shared/netioapi.rs /^ pub fn GetAnycastIpAddressTable($/;" f +GetAppContainerAce vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetAppContainerAce($/;" f +GetAppContainerFolderPath vendor/winapi/src/um/userenv.rs /^ pub fn GetAppContainerFolderPath($/;" f +GetAppContainerNamedObjectPath vendor/winapi/src/um/securityappcontainer.rs /^ pub fn GetAppContainerNamedObjectPath($/;" f +GetAppContainerRegistryLocation vendor/winapi/src/um/userenv.rs /^ pub fn GetAppContainerRegistryLocation($/;" f +GetApplicationRecoveryCallback vendor/winapi/src/um/winbase.rs /^ pub fn GetApplicationRecoveryCallback($/;" f +GetApplicationRestartSettings vendor/winapi/src/um/winbase.rs /^ pub fn GetApplicationRestartSettings($/;" f +GetArcDirection vendor/winapi/src/um/wingdi.rs /^ pub fn GetArcDirection($/;" f +GetAspectRatioFilterEx vendor/winapi/src/um/wingdi.rs /^ pub fn GetAspectRatioFilterEx($/;" f +GetAsyncKeyState vendor/winapi/src/um/winuser.rs /^ pub fn GetAsyncKeyState($/;" f +GetAtomNameA vendor/winapi/src/um/winbase.rs /^ pub fn GetAtomNameA($/;" f +GetAtomNameW vendor/winapi/src/um/winbase.rs /^ pub fn GetAtomNameW($/;" f +GetAuditedPermissionsFromAclA vendor/winapi/src/um/aclapi.rs /^ pub fn GetAuditedPermissionsFromAclA($/;" f +GetAuditedPermissionsFromAclW vendor/winapi/src/um/aclapi.rs /^ pub fn GetAuditedPermissionsFromAclW($/;" f +GetAwarenessFromDpiAwarenessContext vendor/winapi/src/um/winuser.rs /^ pub fn GetAwarenessFromDpiAwarenessContext($/;" f +GetBValue vendor/winapi/src/um/wingdi.rs /^pub fn GetBValue(rgb: COLORREF) -> BYTE {$/;" f +GetBestInterface vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetBestInterface($/;" f +GetBestInterfaceEx vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetBestInterfaceEx($/;" f +GetBestRoute vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetBestRoute($/;" f +GetBestRoute2 vendor/winapi/src/shared/netioapi.rs /^ pub fn GetBestRoute2($/;" f +GetBinaryTypeA vendor/winapi/src/um/winbase.rs /^ pub fn GetBinaryTypeA($/;" f +GetBinaryTypeW vendor/winapi/src/um/winbase.rs /^ pub fn GetBinaryTypeW($/;" f +GetBitmapBits vendor/winapi/src/um/wingdi.rs /^ pub fn GetBitmapBits($/;" f +GetBitmapDimensionEx vendor/winapi/src/um/wingdi.rs /^ pub fn GetBitmapDimensionEx($/;" f +GetBkColor vendor/winapi/src/um/wingdi.rs /^ pub fn GetBkColor($/;" f +GetBkMode vendor/winapi/src/um/wingdi.rs /^ pub fn GetBkMode($/;" f +GetBool vendor/nix/src/sys/socket/sockopt.rs /^impl Get for GetBool {$/;" c +GetBool vendor/nix/src/sys/socket/sockopt.rs /^struct GetBool {$/;" s +GetBoundsRect vendor/winapi/src/um/wingdi.rs /^ pub fn GetBoundsRect($/;" f +GetBrushOrgEx vendor/winapi/src/um/wingdi.rs /^ pub fn GetBrushOrgEx($/;" f +GetBufferedPaintBits vendor/winapi/src/um/uxtheme.rs /^ pub fn GetBufferedPaintBits($/;" f +GetBufferedPaintDC vendor/winapi/src/um/uxtheme.rs /^ pub fn GetBufferedPaintDC($/;" f +GetBufferedPaintTargetDC vendor/winapi/src/um/uxtheme.rs /^ pub fn GetBufferedPaintTargetDC($/;" f +GetBufferedPaintTargetRect vendor/winapi/src/um/uxtheme.rs /^ pub fn GetBufferedPaintTargetRect($/;" f +GetBusImplementation vendor/winapi/src/um/opmapi.rs /^pub fn GetBusImplementation(ulBusTypeAndImplementation: ULONG) -> ULONG {$/;" f +GetBusType vendor/winapi/src/um/opmapi.rs /^pub fn GetBusType(ulBusTypeAndImplementation: ULONG) -> ULONG {$/;" f +GetCPInfo vendor/winapi/src/um/winnls.rs /^ pub fn GetCPInfo($/;" f +GetCPInfoExA vendor/winapi/src/um/winnls.rs /^ pub fn GetCPInfoExA($/;" f +GetCPInfoExW vendor/winapi/src/um/winnls.rs /^ pub fn GetCPInfoExW($/;" f +GetCValue vendor/winapi/src/um/wingdi.rs /^pub fn GetCValue(cmyk: COLORREF) -> BYTE {$/;" f +GetCachedSigningLevel vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetCachedSigningLevel($/;" f +GetCalendarInfoA vendor/winapi/src/um/winnls.rs /^ pub fn GetCalendarInfoA($/;" f +GetCalendarInfoEx vendor/winapi/src/um/winnls.rs /^ pub fn GetCalendarInfoEx($/;" f +GetCalendarInfoW vendor/winapi/src/um/winnls.rs /^ pub fn GetCalendarInfoW($/;" f +GetCapabilitiesStringLength vendor/winapi/src/um/lowlevelmonitorconfigurationapi.rs /^ pub fn GetCapabilitiesStringLength($/;" f +GetCapture vendor/winapi/src/um/winuser.rs /^ pub fn GetCapture() -> HWND;$/;" f +GetCaretBlinkTime vendor/winapi/src/um/winuser.rs /^ pub fn GetCaretBlinkTime() -> UINT;$/;" f +GetCaretPos vendor/winapi/src/um/winuser.rs /^ pub fn GetCaretPos($/;" f +GetCharABCWidthsA vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharABCWidthsA($/;" f +GetCharABCWidthsFloatA vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharABCWidthsFloatA($/;" f +GetCharABCWidthsFloatW vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharABCWidthsFloatW($/;" f +GetCharABCWidthsI vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharABCWidthsI($/;" f +GetCharABCWidthsW vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharABCWidthsW($/;" f +GetCharWidth32A vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharWidth32A($/;" f +GetCharWidth32W vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharWidth32W($/;" f +GetCharWidthA vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharWidthA($/;" f +GetCharWidthFloatA vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharWidthFloatA($/;" f +GetCharWidthFloatW vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharWidthFloatW($/;" f +GetCharWidthI vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharWidthI($/;" f +GetCharWidthW vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharWidthW($/;" f +GetCharacterPlacementA vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharacterPlacementA($/;" f +GetCharacterPlacementW vendor/winapi/src/um/wingdi.rs /^ pub fn GetCharacterPlacementW($/;" f +GetClassInfoA vendor/winapi/src/um/winuser.rs /^ pub fn GetClassInfoA($/;" f +GetClassInfoExA vendor/winapi/src/um/winuser.rs /^ pub fn GetClassInfoExA($/;" f +GetClassInfoExW vendor/winapi/src/um/winuser.rs /^ pub fn GetClassInfoExW($/;" f +GetClassInfoW vendor/winapi/src/um/winuser.rs /^ pub fn GetClassInfoW($/;" f +GetClassLongA vendor/winapi/src/um/winuser.rs /^ pub fn GetClassLongA($/;" f +GetClassLongPtrA vendor/winapi/src/um/winuser.rs /^ pub fn GetClassLongPtrA($/;" f +GetClassLongPtrW vendor/winapi/src/um/winuser.rs /^ pub fn GetClassLongPtrW($/;" f +GetClassLongW vendor/winapi/src/um/winuser.rs /^ pub fn GetClassLongW($/;" f +GetClassNameA vendor/winapi/src/um/winuser.rs /^ pub fn GetClassNameA($/;" f +GetClassNameW vendor/winapi/src/um/winuser.rs /^ pub fn GetClassNameW($/;" f +GetClassWord vendor/winapi/src/um/winuser.rs /^ pub fn GetClassWord($/;" f +GetClientRect vendor/winapi/src/um/winuser.rs /^ pub fn GetClientRect($/;" f +GetClipBox vendor/winapi/src/um/wingdi.rs /^ pub fn GetClipBox($/;" f +GetClipCursor vendor/winapi/src/um/winuser.rs /^ pub fn GetClipCursor($/;" f +GetClipRgn vendor/winapi/src/um/wingdi.rs /^ pub fn GetClipRgn($/;" f +GetClipboardData vendor/winapi/src/um/winuser.rs /^ pub fn GetClipboardData($/;" f +GetClipboardFormatNameA vendor/winapi/src/um/winuser.rs /^ pub fn GetClipboardFormatNameA($/;" f +GetClipboardFormatNameW vendor/winapi/src/um/winuser.rs /^ pub fn GetClipboardFormatNameW($/;" f +GetClipboardOwner vendor/winapi/src/um/winuser.rs /^ pub fn GetClipboardOwner() -> HWND;$/;" f +GetClipboardSequenceNumber vendor/winapi/src/um/winuser.rs /^ pub fn GetClipboardSequenceNumber() -> DWORD;$/;" f +GetClipboardViewer vendor/winapi/src/um/winuser.rs /^ pub fn GetClipboardViewer() -> HWND;$/;" f +GetColorAdjustment vendor/winapi/src/um/wingdi.rs /^ pub fn GetColorAdjustment($/;" f +GetColorSpace vendor/winapi/src/um/wingdi.rs /^ pub fn GetColorSpace($/;" f +GetComboBoxInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetComboBoxInfo($/;" f +GetCommConfig vendor/winapi/src/um/commapi.rs /^ pub fn GetCommConfig($/;" f +GetCommMask vendor/winapi/src/um/commapi.rs /^ pub fn GetCommMask($/;" f +GetCommModemStatus vendor/winapi/src/um/commapi.rs /^ pub fn GetCommModemStatus($/;" f +GetCommProperties vendor/winapi/src/um/commapi.rs /^ pub fn GetCommProperties($/;" f +GetCommState vendor/winapi/src/um/commapi.rs /^ pub fn GetCommState($/;" f +GetCommTimeouts vendor/winapi/src/um/commapi.rs /^ pub fn GetCommTimeouts($/;" f +GetCommandLineA vendor/winapi/src/um/processenv.rs /^ pub fn GetCommandLineA() -> LPSTR;$/;" f +GetCommandLineW vendor/winapi/src/um/processenv.rs /^ pub fn GetCommandLineW() -> LPWSTR;$/;" f +GetCompressedFileSizeA vendor/winapi/src/um/fileapi.rs /^ pub fn GetCompressedFileSizeA($/;" f +GetCompressedFileSizeTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn GetCompressedFileSizeTransactedA($/;" f +GetCompressedFileSizeTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn GetCompressedFileSizeTransactedW($/;" f +GetCompressedFileSizeW vendor/winapi/src/um/fileapi.rs /^ pub fn GetCompressedFileSizeW($/;" f +GetComputerNameA vendor/winapi/src/um/winbase.rs /^ pub fn GetComputerNameA($/;" f +GetComputerNameExA vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetComputerNameExA($/;" f +GetComputerNameExW vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetComputerNameExW($/;" f +GetComputerNameW vendor/winapi/src/um/winbase.rs /^ pub fn GetComputerNameW($/;" f +GetConsoleAliasA vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleAliasA($/;" f +GetConsoleAliasExesA vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleAliasExesA($/;" f +GetConsoleAliasExesLengthA vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleAliasExesLengthA() -> DWORD;$/;" f +GetConsoleAliasExesLengthW vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleAliasExesLengthW() -> DWORD;$/;" f +GetConsoleAliasExesW vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleAliasExesW($/;" f +GetConsoleAliasW vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleAliasW($/;" f +GetConsoleAliasesA vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleAliasesA($/;" f +GetConsoleAliasesLengthA vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleAliasesLengthA($/;" f +GetConsoleAliasesLengthW vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleAliasesLengthW($/;" f +GetConsoleAliasesW vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleAliasesW($/;" f +GetConsoleCP vendor/winapi/src/um/consoleapi.rs /^ pub fn GetConsoleCP() -> UINT;$/;" f +GetConsoleCursorInfo vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleCursorInfo($/;" f +GetConsoleDisplayMode vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleDisplayMode($/;" f +GetConsoleFontSize vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleFontSize($/;" f +GetConsoleHistoryInfo vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleHistoryInfo($/;" f +GetConsoleMode vendor/winapi/src/um/consoleapi.rs /^ pub fn GetConsoleMode($/;" f +GetConsoleOriginalTitleA vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleOriginalTitleA($/;" f +GetConsoleOriginalTitleW vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleOriginalTitleW($/;" f +GetConsoleOutputCP vendor/winapi/src/um/consoleapi.rs /^ pub fn GetConsoleOutputCP() -> UINT;$/;" f +GetConsoleProcessList vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleProcessList($/;" f +GetConsoleScreenBufferInfo vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleScreenBufferInfo($/;" f +GetConsoleScreenBufferInfoEx vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleScreenBufferInfoEx($/;" f +GetConsoleSelectionInfo vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleSelectionInfo($/;" f +GetConsoleTitleA vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleTitleA($/;" f +GetConsoleTitleW vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleTitleW($/;" f +GetConsoleWindow vendor/winapi/src/um/wincon.rs /^ pub fn GetConsoleWindow() -> HWND;$/;" f +GetCurrencyFormatA vendor/winapi/src/um/winnls.rs /^ pub fn GetCurrencyFormatA($/;" f +GetCurrencyFormatEx vendor/winapi/src/um/winnls.rs /^ pub fn GetCurrencyFormatEx($/;" f +GetCurrencyFormatW vendor/winapi/src/um/winnls.rs /^ pub fn GetCurrencyFormatW($/;" f +GetCurrentActCtx vendor/winapi/src/um/winbase.rs /^ pub fn GetCurrentActCtx($/;" f +GetCurrentConsoleFont vendor/winapi/src/um/wincon.rs /^ pub fn GetCurrentConsoleFont($/;" f +GetCurrentConsoleFontEx vendor/winapi/src/um/wincon.rs /^ pub fn GetCurrentConsoleFontEx($/;" f +GetCurrentDirectoryA vendor/winapi/src/um/processenv.rs /^ pub fn GetCurrentDirectoryA($/;" f +GetCurrentDirectoryW vendor/winapi/src/um/processenv.rs /^ pub fn GetCurrentDirectoryW($/;" f +GetCurrentHwProfileA vendor/winapi/src/um/winbase.rs /^ pub fn GetCurrentHwProfileA($/;" f +GetCurrentHwProfileW vendor/winapi/src/um/winbase.rs /^ pub fn GetCurrentHwProfileW($/;" f +GetCurrentObject vendor/winapi/src/um/wingdi.rs /^ pub fn GetCurrentObject($/;" f +GetCurrentPositionEx vendor/winapi/src/um/wingdi.rs /^ pub fn GetCurrentPositionEx($/;" f +GetCurrentPowerPolicies vendor/winapi/src/um/powrprof.rs /^ pub fn GetCurrentPowerPolicies($/;" f +GetCurrentProcess vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetCurrentProcess() -> HANDLE;$/;" f +GetCurrentProcessId vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetCurrentProcessId() -> DWORD;$/;" f +GetCurrentProcessorNumber vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetCurrentProcessorNumber() -> DWORD;$/;" f +GetCurrentProcessorNumberEx vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetCurrentProcessorNumberEx($/;" f +GetCurrentThemeName vendor/winapi/src/um/uxtheme.rs /^ pub fn GetCurrentThemeName($/;" f +GetCurrentThread vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetCurrentThread() -> HANDLE;$/;" f +GetCurrentThreadCompartmentId vendor/winapi/src/shared/netioapi.rs /^ pub fn GetCurrentThreadCompartmentId() -> NET_IF_COMPARTMENT_ID;$/;" f +GetCurrentThreadCompartmentScope vendor/winapi/src/shared/netioapi.rs /^ pub fn GetCurrentThreadCompartmentScope($/;" f +GetCurrentThreadId vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetCurrentThreadId() -> DWORD;$/;" f +GetCurrentThreadStackLimits vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetCurrentThreadStackLimits($/;" f +GetCurrentUmsThread vendor/winapi/src/um/winbase.rs /^ pub fn GetCurrentUmsThread() -> PUMS_CONTEXT;$/;" f +GetCursor vendor/winapi/src/um/winuser.rs /^ pub fn GetCursor() -> HCURSOR;$/;" f +GetCursorInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetCursorInfo($/;" f +GetCursorPos vendor/winapi/src/um/winuser.rs /^ pub fn GetCursorPos($/;" f +GetDC vendor/winapi/src/um/winuser.rs /^ pub fn GetDC($/;" f +GetDCBrushColor vendor/winapi/src/um/wingdi.rs /^ pub fn GetDCBrushColor($/;" f +GetDCEx vendor/winapi/src/um/winuser.rs /^ pub fn GetDCEx($/;" f +GetDCOrgEx vendor/winapi/src/um/wingdi.rs /^ pub fn GetDCOrgEx($/;" f +GetDCPenColor vendor/winapi/src/um/wingdi.rs /^ pub fn GetDCPenColor($/;" f +GetDIBColorTable vendor/winapi/src/um/wingdi.rs /^ pub fn GetDIBColorTable($/;" f +GetDIBits vendor/winapi/src/um/wingdi.rs /^ pub fn GetDIBits($/;" f +GetDateFormatA vendor/winapi/src/um/datetimeapi.rs /^ pub fn GetDateFormatA($/;" f +GetDateFormatEx vendor/winapi/src/um/datetimeapi.rs /^ pub fn GetDateFormatEx($/;" f +GetDateFormatW vendor/winapi/src/um/datetimeapi.rs /^ pub fn GetDateFormatW($/;" f +GetDefaultCommConfigA vendor/winapi/src/um/winbase.rs /^ pub fn GetDefaultCommConfigA($/;" f +GetDefaultCommConfigW vendor/winapi/src/um/winbase.rs /^ pub fn GetDefaultCommConfigW($/;" f +GetDefaultCompartmentId vendor/winapi/src/shared/netioapi.rs /^ pub fn GetDefaultCompartmentId() -> NET_IF_COMPARTMENT_ID;$/;" f +GetDefaultPrinterA vendor/winapi/src/um/winspool.rs /^ pub fn GetDefaultPrinterA($/;" f +GetDefaultPrinterW vendor/winapi/src/um/winspool.rs /^ pub fn GetDefaultPrinterW($/;" f +GetDefaultUserProfileDirectoryA vendor/winapi/src/um/userenv.rs /^ pub fn GetDefaultUserProfileDirectoryA($/;" f +GetDefaultUserProfileDirectoryW vendor/winapi/src/um/userenv.rs /^ pub fn GetDefaultUserProfileDirectoryW($/;" f +GetDesktopWindow vendor/winapi/src/um/winuser.rs /^ pub fn GetDesktopWindow() -> HWND;$/;" f +GetDeviceCaps vendor/winapi/src/um/wingdi.rs /^ pub fn GetDeviceCaps($/;" f +GetDeviceDriverBaseNameA vendor/winapi/src/um/psapi.rs /^ pub fn GetDeviceDriverBaseNameA($/;" f +GetDeviceDriverBaseNameW vendor/winapi/src/um/psapi.rs /^ pub fn GetDeviceDriverBaseNameW($/;" f +GetDeviceDriverFileNameA vendor/winapi/src/um/psapi.rs /^ pub fn GetDeviceDriverFileNameA($/;" f +GetDeviceDriverFileNameW vendor/winapi/src/um/psapi.rs /^ pub fn GetDeviceDriverFileNameW($/;" f +GetDeviceGammaRamp vendor/winapi/src/um/wingdi.rs /^ pub fn GetDeviceGammaRamp($/;" f +GetDeviceID vendor/winapi/src/um/dsound.rs /^ pub fn GetDeviceID($/;" f +GetDevicePowerState vendor/winapi/src/um/winbase.rs /^ pub fn GetDevicePowerState($/;" f +GetDialogBaseUnits vendor/winapi/src/um/winuser.rs /^ pub fn GetDialogBaseUnits() -> LONG;$/;" f +GetDialogControlDpiChangeBehavior vendor/winapi/src/um/winuser.rs /^ pub fn GetDialogControlDpiChangeBehavior($/;" f +GetDialogDpiChangeBehavior vendor/winapi/src/um/winuser.rs /^ pub fn GetDialogDpiChangeBehavior($/;" f +GetDiskFreeSpaceA vendor/winapi/src/um/fileapi.rs /^ pub fn GetDiskFreeSpaceA($/;" f +GetDiskFreeSpaceExA vendor/winapi/src/um/fileapi.rs /^ pub fn GetDiskFreeSpaceExA($/;" f +GetDiskFreeSpaceExW vendor/winapi/src/um/fileapi.rs /^ pub fn GetDiskFreeSpaceExW($/;" f +GetDiskFreeSpaceW vendor/winapi/src/um/fileapi.rs /^ pub fn GetDiskFreeSpaceW($/;" f +GetDlgCtrlID vendor/winapi/src/um/winuser.rs /^ pub fn GetDlgCtrlID($/;" f +GetDlgItem vendor/winapi/src/um/winuser.rs /^ pub fn GetDlgItem($/;" f +GetDlgItemInt vendor/winapi/src/um/winuser.rs /^ pub fn GetDlgItemInt($/;" f +GetDlgItemTextA vendor/winapi/src/um/winuser.rs /^ pub fn GetDlgItemTextA($/;" f +GetDlgItemTextW vendor/winapi/src/um/winuser.rs /^ pub fn GetDlgItemTextW($/;" f +GetDllDirectoryA vendor/winapi/src/um/winbase.rs /^ pub fn GetDllDirectoryA($/;" f +GetDllDirectoryW vendor/winapi/src/um/winbase.rs /^ pub fn GetDllDirectoryW($/;" f +GetDnsSettings vendor/winapi/src/shared/netioapi.rs /^ pub fn GetDnsSettings($/;" f +GetDoubleClickTime vendor/winapi/src/um/winuser.rs /^ pub fn GetDoubleClickTime() -> UINT;$/;" f +GetDpiForMonitor vendor/winapi/src/um/shellscalingapi.rs /^ pub fn GetDpiForMonitor($/;" f +GetDpiForShellUIComponent vendor/winapi/src/um/shellscalingapi.rs /^ pub fn GetDpiForShellUIComponent($/;" f +GetDpiForSystem vendor/winapi/src/um/winuser.rs /^ pub fn GetDpiForSystem() -> UINT;$/;" f +GetDpiForWindow vendor/winapi/src/um/winuser.rs /^ pub fn GetDpiForWindow($/;" f +GetDpiFromDpiAwarenessContext vendor/winapi/src/um/winuser.rs /^ pub fn GetDpiFromDpiAwarenessContext($/;" f +GetDriveTypeA vendor/winapi/src/um/fileapi.rs /^ pub fn GetDriveTypeA($/;" f +GetDriveTypeW vendor/winapi/src/um/fileapi.rs /^ pub fn GetDriveTypeW($/;" f +GetDurationFormat vendor/winapi/src/um/winnls.rs /^ pub fn GetDurationFormat($/;" f +GetDurationFormatEx vendor/winapi/src/um/winnls.rs /^ pub fn GetDurationFormatEx($/;" f +GetDynamicTimeZoneInformation vendor/winapi/src/um/timezoneapi.rs /^ pub fn GetDynamicTimeZoneInformation($/;" f +GetDynamicTimeZoneInformationEffectiveYears vendor/winapi/src/um/timezoneapi.rs /^ pub fn GetDynamicTimeZoneInformationEffectiveYears($/;" f +GetEffectiveClientRect vendor/winapi/src/um/commctrl.rs /^ pub fn GetEffectiveClientRect($/;" f +GetEffectiveRightsFromAclA vendor/winapi/src/um/aclapi.rs /^ pub fn GetEffectiveRightsFromAclA($/;" f +GetEffectiveRightsFromAclW vendor/winapi/src/um/aclapi.rs /^ pub fn GetEffectiveRightsFromAclW($/;" f +GetEnabledXStateFeatures vendor/winapi/src/um/winbase.rs /^ pub fn GetEnabledXStateFeatures() -> DWORD64;$/;" f +GetEncSChannel vendor/winapi/src/um/wincrypt.rs /^ pub fn GetEncSChannel($/;" f +GetEncryptedFileMetadata vendor/winapi/src/um/winefs.rs /^ pub fn GetEncryptedFileMetadata($/;" f +GetEnhMetaFileA vendor/winapi/src/um/wingdi.rs /^ pub fn GetEnhMetaFileA($/;" f +GetEnhMetaFileBits vendor/winapi/src/um/wingdi.rs /^ pub fn GetEnhMetaFileBits($/;" f +GetEnhMetaFileDescriptionA vendor/winapi/src/um/wingdi.rs /^ pub fn GetEnhMetaFileDescriptionA($/;" f +GetEnhMetaFileDescriptionW vendor/winapi/src/um/wingdi.rs /^ pub fn GetEnhMetaFileDescriptionW($/;" f +GetEnhMetaFileHeader vendor/winapi/src/um/wingdi.rs /^ pub fn GetEnhMetaFileHeader($/;" f +GetEnhMetaFilePaletteEntries vendor/winapi/src/um/wingdi.rs /^ pub fn GetEnhMetaFilePaletteEntries($/;" f +GetEnhMetaFilePixelFormat vendor/winapi/src/um/wingdi.rs /^ pub fn GetEnhMetaFilePixelFormat($/;" f +GetEnhMetaFileW vendor/winapi/src/um/wingdi.rs /^ pub fn GetEnhMetaFileW($/;" f +GetEntry vendor/fluent-bundle/src/entry.rs /^pub trait GetEntry {$/;" i +GetEnvironmentStrings vendor/winapi/src/um/processenv.rs /^ pub fn GetEnvironmentStrings() -> LPCH;$/;" f +GetEnvironmentStringsW vendor/winapi/src/um/processenv.rs /^ pub fn GetEnvironmentStringsW() -> LPWCH;$/;" f +GetEnvironmentVariableA vendor/winapi/src/um/processenv.rs /^ pub fn GetEnvironmentVariableA($/;" f +GetEnvironmentVariableW vendor/winapi/src/um/processenv.rs /^ pub fn GetEnvironmentVariableW($/;" f +GetErrorInfo vendor/winapi/src/um/oleauto.rs /^ pub fn GetErrorInfo($/;" f +GetErrorMode vendor/winapi/src/um/errhandlingapi.rs /^ pub fn GetErrorMode() -> UINT;$/;" f +GetEventProcessorIndex vendor/winapi/src/um/evntcons.rs /^pub unsafe fn GetEventProcessorIndex(EventRecord: PCEVENT_RECORD) -> ULONG {$/;" f +GetExitCodeProcess vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetExitCodeProcess($/;" f +GetExitCodeThread vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetExitCodeThread($/;" f +GetExplicitEntriesFromAclA vendor/winapi/src/um/aclapi.rs /^ pub fn GetExplicitEntriesFromAclA($/;" f +GetExplicitEntriesFromAclW vendor/winapi/src/um/aclapi.rs /^ pub fn GetExplicitEntriesFromAclW($/;" f +GetExtendedTcpTable vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetExtendedTcpTable($/;" f +GetExtendedUdpTable vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetExtendedUdpTable($/;" f +GetFileAttributesA vendor/winapi/src/um/fileapi.rs /^ pub fn GetFileAttributesA($/;" f +GetFileAttributesExA vendor/winapi/src/um/fileapi.rs /^ pub fn GetFileAttributesExA($/;" f +GetFileAttributesExW vendor/winapi/src/um/fileapi.rs /^ pub fn GetFileAttributesExW($/;" f +GetFileAttributesTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn GetFileAttributesTransactedA($/;" f +GetFileAttributesTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn GetFileAttributesTransactedW($/;" f +GetFileAttributesW vendor/winapi/src/um/fileapi.rs /^ pub fn GetFileAttributesW($/;" f +GetFileBandwidthReservation vendor/winapi/src/um/winbase.rs /^ pub fn GetFileBandwidthReservation($/;" f +GetFileInformationByHandle vendor/winapi/src/um/fileapi.rs /^ pub fn GetFileInformationByHandle($/;" f +GetFileInformationByHandleEx vendor/winapi/src/um/winbase.rs /^ pub fn GetFileInformationByHandleEx($/;" f +GetFileMUIInfo vendor/winapi/src/um/winnls.rs /^ pub fn GetFileMUIInfo($/;" f +GetFileMUIPath vendor/winapi/src/um/winnls.rs /^ pub fn GetFileMUIPath($/;" f +GetFileSecurityW vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetFileSecurityW($/;" f +GetFileSize vendor/winapi/src/um/fileapi.rs /^ pub fn GetFileSize($/;" f +GetFileSizeEx vendor/winapi/src/um/fileapi.rs /^ pub fn GetFileSizeEx($/;" f +GetFileTime vendor/winapi/src/um/fileapi.rs /^ pub fn GetFileTime($/;" f +GetFileTitleA vendor/winapi/src/um/commdlg.rs /^ pub fn GetFileTitleA($/;" f +GetFileTitleW vendor/winapi/src/um/commdlg.rs /^ pub fn GetFileTitleW($/;" f +GetFileType vendor/winapi/src/um/fileapi.rs /^ pub fn GetFileType($/;" f +GetFileVersionInfoA vendor/winapi/src/um/winver.rs /^ pub fn GetFileVersionInfoA($/;" f +GetFileVersionInfoSizeA vendor/winapi/src/um/winver.rs /^ pub fn GetFileVersionInfoSizeA($/;" f +GetFileVersionInfoSizeW vendor/winapi/src/um/winver.rs /^ pub fn GetFileVersionInfoSizeW($/;" f +GetFileVersionInfoW vendor/winapi/src/um/winver.rs /^ pub fn GetFileVersionInfoW($/;" f +GetFinalPathNameByHandleA vendor/winapi/src/um/fileapi.rs /^ pub fn GetFinalPathNameByHandleA($/;" f +GetFinalPathNameByHandleW vendor/winapi/src/um/fileapi.rs /^ pub fn GetFinalPathNameByHandleW($/;" f +GetFirmwareEnvironmentVariableA vendor/winapi/src/um/winbase.rs /^ pub fn GetFirmwareEnvironmentVariableA($/;" f +GetFirmwareEnvironmentVariableExA vendor/winapi/src/um/winbase.rs /^ pub fn GetFirmwareEnvironmentVariableExA($/;" f +GetFirmwareEnvironmentVariableExW vendor/winapi/src/um/winbase.rs /^ pub fn GetFirmwareEnvironmentVariableExW($/;" f +GetFirmwareEnvironmentVariableW vendor/winapi/src/um/winbase.rs /^ pub fn GetFirmwareEnvironmentVariableW($/;" f +GetFirmwareType vendor/winapi/src/um/winbase.rs /^ pub fn GetFirmwareType($/;" f +GetFocus vendor/winapi/src/um/winuser.rs /^ pub fn GetFocus() -> HWND;$/;" f +GetFontData vendor/winapi/src/um/wingdi.rs /^ pub fn GetFontData($/;" f +GetFontLanguageInfo vendor/winapi/src/um/wingdi.rs /^ pub fn GetFontLanguageInfo($/;" f +GetFontUnicodeRanges vendor/winapi/src/um/wingdi.rs /^ pub fn GetFontUnicodeRanges($/;" f +GetForegroundWindow vendor/winapi/src/um/winuser.rs /^ pub fn GetForegroundWindow() -> HWND;$/;" f +GetFormA vendor/winapi/src/um/winspool.rs /^ pub fn GetFormA($/;" f +GetFormW vendor/winapi/src/um/winspool.rs /^ pub fn GetFormW($/;" f +GetFriendlyIfIndex vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetFriendlyIfIndex($/;" f +GetFullPathNameA vendor/winapi/src/um/fileapi.rs /^ pub fn GetFullPathNameA($/;" f +GetFullPathNameTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn GetFullPathNameTransactedA($/;" f +GetFullPathNameTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn GetFullPathNameTransactedW($/;" f +GetFullPathNameW vendor/winapi/src/um/fileapi.rs /^ pub fn GetFullPathNameW($/;" f +GetGUIThreadInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetGUIThreadInfo($/;" f +GetGValue vendor/winapi/src/um/wingdi.rs /^pub fn GetGValue(rgb: COLORREF) -> BYTE {$/;" f +GetGeoInfoA vendor/winapi/src/um/winnls.rs /^ pub fn GetGeoInfoA($/;" f +GetGeoInfoW vendor/winapi/src/um/winnls.rs /^ pub fn GetGeoInfoW($/;" f +GetGlyphIndicesA vendor/winapi/src/um/wingdi.rs /^ pub fn GetGlyphIndicesA($/;" f +GetGlyphIndicesW vendor/winapi/src/um/wingdi.rs /^ pub fn GetGlyphIndicesW($/;" f +GetGlyphOutlineA vendor/winapi/src/um/wingdi.rs /^ pub fn GetGlyphOutlineA($/;" f +GetGlyphOutlineW vendor/winapi/src/um/wingdi.rs /^ pub fn GetGlyphOutlineW($/;" f +GetGraphicsMode vendor/winapi/src/um/wingdi.rs /^ pub fn GetGraphicsMode($/;" f +GetHGlobalFromStream vendor/winapi/src/um/combaseapi.rs /^ pub fn GetHGlobalFromStream($/;" f +GetHandleInformation vendor/winapi/src/um/handleapi.rs /^ pub fn GetHandleInformation($/;" f +GetHostNameW vendor/winapi/src/um/winsock2.rs /^ pub fn GetHostNameW($/;" f +GetICMProfileA vendor/winapi/src/um/wingdi.rs /^ pub fn GetICMProfileA($/;" f +GetICMProfileW vendor/winapi/src/um/wingdi.rs /^ pub fn GetICMProfileW($/;" f +GetIcmpStatistics vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetIcmpStatistics($/;" f +GetIcmpStatisticsEx vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetIcmpStatisticsEx($/;" f +GetIconInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetIconInfo($/;" f +GetIfEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetIfEntry($/;" f +GetIfEntry2 vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIfEntry2($/;" f +GetIfEntry2Ex vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIfEntry2Ex($/;" f +GetIfStackTable vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIfStackTable($/;" f +GetIfTable vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetIfTable($/;" f +GetIfTable2 vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIfTable2($/;" f +GetIfTable2Ex vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIfTable2Ex($/;" f +GetIndexEntries support/texi2html /^sub GetIndexEntries$/;" s +GetIndexPages support/texi2html /^sub GetIndexPages$/;" s +GetIndexSummary support/texi2html /^sub GetIndexSummary$/;" s +GetInheritanceSourceA vendor/winapi/src/um/aclapi.rs /^ pub fn GetInheritanceSourceA($/;" f +GetInheritanceSourceW vendor/winapi/src/um/aclapi.rs /^ pub fn GetInheritanceSourceW($/;" f +GetInputState vendor/winapi/src/um/winuser.rs /^ pub fn GetInputState() -> BOOL;$/;" f +GetInterfaceCurrentTimestampCapabilities vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetInterfaceCurrentTimestampCapabilities($/;" f +GetInterfaceDnsSettings vendor/winapi/src/shared/netioapi.rs /^ pub fn GetInterfaceDnsSettings($/;" f +GetInterfaceHardwareTimestampCapabilities vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetInterfaceHardwareTimestampCapabilities($/;" f +GetInterfaceInfo vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetInterfaceInfo($/;" f +GetInvertedIfStackTable vendor/winapi/src/shared/netioapi.rs /^ pub fn GetInvertedIfStackTable($/;" f +GetIpAddrTable vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetIpAddrTable($/;" f +GetIpErrorString vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetIpErrorString($/;" f +GetIpForwardEntry2 vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIpForwardEntry2($/;" f +GetIpForwardTable vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetIpForwardTable($/;" f +GetIpForwardTable2 vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIpForwardTable2($/;" f +GetIpInterfaceEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIpInterfaceEntry($/;" f +GetIpInterfaceTable vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIpInterfaceTable($/;" f +GetIpNetEntry2 vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIpNetEntry2($/;" f +GetIpNetTable vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetIpNetTable($/;" f +GetIpNetTable2 vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIpNetTable2($/;" f +GetIpNetworkConnectionBandwidthEstimates vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIpNetworkConnectionBandwidthEstimates($/;" f +GetIpPathEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIpPathEntry($/;" f +GetIpPathTable vendor/winapi/src/shared/netioapi.rs /^ pub fn GetIpPathTable($/;" f +GetIpStatistics vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetIpStatistics($/;" f +GetIpStatisticsEx vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetIpStatisticsEx($/;" f +GetJobA vendor/winapi/src/um/winspool.rs /^ pub fn GetJobA($/;" f +GetJobCompartmentId vendor/winapi/src/shared/netioapi.rs /^ pub fn GetJobCompartmentId($/;" f +GetJobW vendor/winapi/src/um/winspool.rs /^ pub fn GetJobW($/;" f +GetKBCodePage vendor/winapi/src/um/winuser.rs /^ pub fn GetKBCodePage() -> UINT;$/;" f +GetKValue vendor/winapi/src/um/wingdi.rs /^pub fn GetKValue(cmyk: COLORREF) -> BYTE {$/;" f +GetKernelObjectSecurity vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetKernelObjectSecurity($/;" f +GetKerningPairsA vendor/winapi/src/um/wingdi.rs /^ pub fn GetKerningPairsA($/;" f +GetKerningPairsW vendor/winapi/src/um/wingdi.rs /^ pub fn GetKerningPairsW($/;" f +GetKeyNameTextA vendor/winapi/src/um/winuser.rs /^ pub fn GetKeyNameTextA($/;" f +GetKeyNameTextW vendor/winapi/src/um/winuser.rs /^ pub fn GetKeyNameTextW($/;" f +GetKeyState vendor/winapi/src/um/winuser.rs /^ pub fn GetKeyState($/;" f +GetKeyboardLayout vendor/winapi/src/um/winuser.rs /^ pub fn GetKeyboardLayout($/;" f +GetKeyboardLayoutList vendor/winapi/src/um/winuser.rs /^ pub fn GetKeyboardLayoutList($/;" f +GetKeyboardLayoutNameA vendor/winapi/src/um/winuser.rs /^ pub fn GetKeyboardLayoutNameA($/;" f +GetKeyboardLayoutNameW vendor/winapi/src/um/winuser.rs /^ pub fn GetKeyboardLayoutNameW($/;" f +GetKeyboardState vendor/winapi/src/um/winuser.rs /^ pub fn GetKeyboardState($/;" f +GetKeyboardType vendor/winapi/src/um/winuser.rs /^ pub fn GetKeyboardType($/;" f +GetLargePageMinimum vendor/winapi/src/um/memoryapi.rs /^ pub fn GetLargePageMinimum() -> SIZE_T;$/;" f +GetLargestConsoleWindowSize vendor/winapi/src/um/wincon.rs /^ pub fn GetLargestConsoleWindowSize($/;" f +GetLastActivePopup vendor/winapi/src/um/winuser.rs /^ pub fn GetLastActivePopup($/;" f +GetLastError vendor/winapi/src/um/errhandlingapi.rs /^ pub fn GetLastError() -> DWORD;$/;" f +GetLastInputInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetLastInputInfo($/;" f +GetLayeredWindowAttributes vendor/winapi/src/um/winuser.rs /^ pub fn GetLayeredWindowAttributes($/;" f +GetLayout vendor/winapi/src/um/wingdi.rs /^ pub fn GetLayout($/;" f +GetLengthSid vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetLengthSid($/;" f +GetListBoxInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetListBoxInfo($/;" f +GetLocalManagedApplicationData vendor/winapi/src/um/appmgmt.rs /^ pub fn GetLocalManagedApplicationData($/;" f +GetLocalManagedApplications vendor/winapi/src/um/appmgmt.rs /^ pub fn GetLocalManagedApplications($/;" f +GetLocalTime vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetLocalTime($/;" f +GetLocaleInfoA vendor/winapi/src/um/winnls.rs /^ pub fn GetLocaleInfoA($/;" f +GetLocaleInfoEx vendor/winapi/src/um/winnls.rs /^ pub fn GetLocaleInfoEx($/;" f +GetLocaleInfoW vendor/winapi/src/um/winnls.rs /^ pub fn GetLocaleInfoW($/;" f +GetLogColorSpaceA vendor/winapi/src/um/wingdi.rs /^ pub fn GetLogColorSpaceA($/;" f +GetLogColorSpaceW vendor/winapi/src/um/wingdi.rs /^ pub fn GetLogColorSpaceW($/;" f +GetLogicalDriveStringsA vendor/winapi/src/um/winbase.rs /^ pub fn GetLogicalDriveStringsA($/;" f +GetLogicalDriveStringsW vendor/winapi/src/um/fileapi.rs /^ pub fn GetLogicalDriveStringsW($/;" f +GetLogicalDrives vendor/winapi/src/um/fileapi.rs /^ pub fn GetLogicalDrives() -> DWORD;$/;" f +GetLogicalProcessorInformation vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetLogicalProcessorInformation($/;" f +GetLogicalProcessorInformationEx vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetLogicalProcessorInformationEx($/;" f +GetLongPathNameA vendor/winapi/src/um/fileapi.rs /^ pub fn GetLongPathNameA($/;" f +GetLongPathNameTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn GetLongPathNameTransactedA($/;" f +GetLongPathNameTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn GetLongPathNameTransactedW($/;" f +GetLongPathNameW vendor/winapi/src/um/fileapi.rs /^ pub fn GetLongPathNameW($/;" f +GetMUILanguage vendor/winapi/src/um/commctrl.rs /^ pub fn GetMUILanguage() -> LANGID;$/;" f +GetMValue vendor/winapi/src/um/wingdi.rs /^pub fn GetMValue(cmyk: COLORREF) -> BYTE {$/;" f +GetMailslotInfo vendor/winapi/src/um/winbase.rs /^ pub fn GetMailslotInfo($/;" f +GetManagedApplicationCategories vendor/winapi/src/um/appmgmt.rs /^ pub fn GetManagedApplicationCategories($/;" f +GetManagedApplications vendor/winapi/src/um/appmgmt.rs /^ pub fn GetManagedApplications($/;" f +GetMapMode vendor/winapi/src/um/wingdi.rs /^ pub fn GetMapMode($/;" f +GetMappedFileNameA vendor/winapi/src/um/psapi.rs /^ pub fn GetMappedFileNameA($/;" f +GetMappedFileNameW vendor/winapi/src/um/psapi.rs /^ pub fn GetMappedFileNameW($/;" f +GetMaximumProcessorCount vendor/winapi/src/um/winbase.rs /^ pub fn GetMaximumProcessorCount($/;" f +GetMaximumProcessorGroupCount vendor/winapi/src/um/winbase.rs /^ pub fn GetMaximumProcessorGroupCount() -> WORD;$/;" f +GetMemoryErrorHandlingCapabilities vendor/winapi/src/um/memoryapi.rs /^ pub fn GetMemoryErrorHandlingCapabilities($/;" f +GetMenu vendor/winapi/src/um/winuser.rs /^ pub fn GetMenu($/;" f +GetMenuBarInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuBarInfo($/;" f +GetMenuCheckMarkDimensions vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuCheckMarkDimensions() -> LONG;$/;" f +GetMenuContextHelpId vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuContextHelpId($/;" f +GetMenuDefaultItem vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuDefaultItem($/;" f +GetMenuInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuInfo($/;" f +GetMenuItemCount vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuItemCount($/;" f +GetMenuItemID vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuItemID($/;" f +GetMenuItemInfoA vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuItemInfoA($/;" f +GetMenuItemInfoW vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuItemInfoW($/;" f +GetMenuItemRect vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuItemRect($/;" f +GetMenuState vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuState($/;" f +GetMenuStringA vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuStringA($/;" f +GetMenuStringW vendor/winapi/src/um/winuser.rs /^ pub fn GetMenuStringW($/;" f +GetMessageA vendor/winapi/src/um/winuser.rs /^ pub fn GetMessageA($/;" f +GetMessageExtraInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetMessageExtraInfo() -> LPARAM;$/;" f +GetMessagePos vendor/winapi/src/um/winuser.rs /^ pub fn GetMessagePos() -> DWORD;$/;" f +GetMessageTime vendor/winapi/src/um/winuser.rs /^ pub fn GetMessageTime() -> LONG;$/;" f +GetMessageW vendor/winapi/src/um/winuser.rs /^ pub fn GetMessageW($/;" f +GetMetaFileA vendor/winapi/src/um/wingdi.rs /^ pub fn GetMetaFileA($/;" f +GetMetaFileBitsEx vendor/winapi/src/um/wingdi.rs /^ pub fn GetMetaFileBitsEx($/;" f +GetMetaFileW vendor/winapi/src/um/wingdi.rs /^ pub fn GetMetaFileW($/;" f +GetMetaRgn vendor/winapi/src/um/wingdi.rs /^ pub fn GetMetaRgn($/;" f +GetMiterLimit vendor/winapi/src/um/wingdi.rs /^ pub fn GetMiterLimit($/;" f +GetModuleBaseNameA vendor/winapi/src/um/psapi.rs /^ pub fn GetModuleBaseNameA($/;" f +GetModuleBaseNameW vendor/winapi/src/um/psapi.rs /^ pub fn GetModuleBaseNameW($/;" f +GetModuleFileNameA vendor/winapi/src/um/libloaderapi.rs /^ pub fn GetModuleFileNameA($/;" f +GetModuleFileNameExA vendor/winapi/src/um/psapi.rs /^ pub fn GetModuleFileNameExA($/;" f +GetModuleFileNameExW vendor/winapi/src/um/psapi.rs /^ pub fn GetModuleFileNameExW($/;" f +GetModuleFileNameW vendor/winapi/src/um/libloaderapi.rs /^ pub fn GetModuleFileNameW($/;" f +GetModuleHandleA vendor/winapi/src/um/libloaderapi.rs /^ pub fn GetModuleHandleA($/;" f +GetModuleHandleExA vendor/winapi/src/um/libloaderapi.rs /^ pub fn GetModuleHandleExA($/;" f +GetModuleHandleExW vendor/libloading/src/error.rs /^ GetModuleHandleExW {$/;" e enum:Error +GetModuleHandleExW vendor/winapi/src/um/libloaderapi.rs /^ pub fn GetModuleHandleExW($/;" f +GetModuleHandleExWUnknown vendor/libloading/src/error.rs /^ GetModuleHandleExWUnknown,$/;" e enum:Error +GetModuleHandleW vendor/winapi/src/um/libloaderapi.rs /^ pub fn GetModuleHandleW($/;" f +GetModuleInformation vendor/winapi/src/um/psapi.rs /^ pub fn GetModuleInformation($/;" f +GetMonitorBrightness vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn GetMonitorBrightness($/;" f +GetMonitorCapabilities vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn GetMonitorCapabilities($/;" f +GetMonitorColorTemperature vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn GetMonitorColorTemperature($/;" f +GetMonitorContrast vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn GetMonitorContrast($/;" f +GetMonitorDisplayAreaPosition vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn GetMonitorDisplayAreaPosition($/;" f +GetMonitorDisplayAreaSize vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn GetMonitorDisplayAreaSize($/;" f +GetMonitorInfoA vendor/winapi/src/um/winuser.rs /^ pub fn GetMonitorInfoA($/;" f +GetMonitorInfoW vendor/winapi/src/um/winuser.rs /^ pub fn GetMonitorInfoW($/;" f +GetMonitorRedGreenOrBlueDrive vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn GetMonitorRedGreenOrBlueDrive($/;" f +GetMonitorRedGreenOrBlueGain vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn GetMonitorRedGreenOrBlueGain($/;" f +GetMonitorTechnologyType vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn GetMonitorTechnologyType($/;" f +GetMouseMovePointsEx vendor/winapi/src/um/winuser.rs /^ pub fn GetMouseMovePointsEx($/;" f +GetMulticastIpAddressEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn GetMulticastIpAddressEntry($/;" f +GetMulticastIpAddressTable vendor/winapi/src/shared/netioapi.rs /^ pub fn GetMulticastIpAddressTable($/;" f +GetMultipleTrusteeA vendor/winapi/src/um/aclapi.rs /^ pub fn GetMultipleTrusteeA($/;" f +GetMultipleTrusteeOperationA vendor/winapi/src/um/aclapi.rs /^ pub fn GetMultipleTrusteeOperationA($/;" f +GetMultipleTrusteeOperationW vendor/winapi/src/um/aclapi.rs /^ pub fn GetMultipleTrusteeOperationW($/;" f +GetMultipleTrusteeW vendor/winapi/src/um/aclapi.rs /^ pub fn GetMultipleTrusteeW($/;" f +GetNLSVersion vendor/winapi/src/um/winnls.rs /^ pub fn GetNLSVersion($/;" f +GetNLSVersionEx vendor/winapi/src/um/winnls.rs /^ pub fn GetNLSVersionEx($/;" f +GetNameInfoW vendor/winapi/src/um/ws2tcpip.rs /^ pub fn GetNameInfoW($/;" f +GetNamedPipeClientComputerNameA vendor/winapi/src/um/winbase.rs /^ pub fn GetNamedPipeClientComputerNameA($/;" f +GetNamedPipeClientComputerNameW vendor/winapi/src/um/namedpipeapi.rs /^ pub fn GetNamedPipeClientComputerNameW($/;" f +GetNamedPipeClientProcessId vendor/winapi/src/um/winbase.rs /^ pub fn GetNamedPipeClientProcessId($/;" f +GetNamedPipeClientSessionId vendor/winapi/src/um/winbase.rs /^ pub fn GetNamedPipeClientSessionId($/;" f +GetNamedPipeHandleStateA vendor/winapi/src/um/winbase.rs /^ pub fn GetNamedPipeHandleStateA($/;" f +GetNamedPipeHandleStateW vendor/winapi/src/um/namedpipeapi.rs /^ pub fn GetNamedPipeHandleStateW($/;" f +GetNamedPipeInfo vendor/winapi/src/um/namedpipeapi.rs /^ pub fn GetNamedPipeInfo($/;" f +GetNamedPipeServerProcessId vendor/winapi/src/um/winbase.rs /^ pub fn GetNamedPipeServerProcessId($/;" f +GetNamedPipeServerSessionId vendor/winapi/src/um/winbase.rs /^ pub fn GetNamedPipeServerSessionId($/;" f +GetNamedSecurityInfoA vendor/winapi/src/um/aclapi.rs /^ pub fn GetNamedSecurityInfoA($/;" f +GetNamedSecurityInfoW vendor/winapi/src/um/aclapi.rs /^ pub fn GetNamedSecurityInfoW($/;" f +GetNativeSystemInfo vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetNativeSystemInfo($/;" f +GetNearestColor vendor/winapi/src/um/wingdi.rs /^ pub fn GetNearestColor($/;" f +GetNearestPaletteIndex vendor/winapi/src/um/wingdi.rs /^ pub fn GetNearestPaletteIndex($/;" f +GetNetworkInformation vendor/winapi/src/shared/netioapi.rs /^ pub fn GetNetworkInformation($/;" f +GetNetworkParams vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetNetworkParams($/;" f +GetNextDlgGroupItem vendor/winapi/src/um/winuser.rs /^ pub fn GetNextDlgGroupItem($/;" f +GetNextDlgTabItem vendor/winapi/src/um/winuser.rs /^ pub fn GetNextDlgTabItem($/;" f +GetNextUmsListItem vendor/winapi/src/um/winbase.rs /^ pub fn GetNextUmsListItem($/;" f +GetNumaAvailableMemoryNode vendor/winapi/src/um/winbase.rs /^ pub fn GetNumaAvailableMemoryNode($/;" f +GetNumaAvailableMemoryNodeEx vendor/winapi/src/um/winbase.rs /^ pub fn GetNumaAvailableMemoryNodeEx($/;" f +GetNumaHighestNodeNumber vendor/winapi/src/um/systemtopologyapi.rs /^ pub fn GetNumaHighestNodeNumber($/;" f +GetNumaNodeNumberFromHandle vendor/winapi/src/um/winbase.rs /^ pub fn GetNumaNodeNumberFromHandle($/;" f +GetNumaNodeProcessorMask vendor/winapi/src/um/winbase.rs /^ pub fn GetNumaNodeProcessorMask($/;" f +GetNumaNodeProcessorMaskEx vendor/winapi/src/um/systemtopologyapi.rs /^ pub fn GetNumaNodeProcessorMaskEx($/;" f +GetNumaProcessorNode vendor/winapi/src/um/winbase.rs /^ pub fn GetNumaProcessorNode($/;" f +GetNumaProcessorNodeEx vendor/winapi/src/um/winbase.rs /^ pub fn GetNumaProcessorNodeEx($/;" f +GetNumaProximityNode vendor/winapi/src/um/winbase.rs /^ pub fn GetNumaProximityNode($/;" f +GetNumaProximityNodeEx vendor/winapi/src/um/systemtopologyapi.rs /^ pub fn GetNumaProximityNodeEx($/;" f +GetNumberFormatA vendor/winapi/src/um/winnls.rs /^ pub fn GetNumberFormatA($/;" f +GetNumberFormatEx vendor/winapi/src/um/winnls.rs /^ pub fn GetNumberFormatEx($/;" f +GetNumberFormatW vendor/winapi/src/um/winnls.rs /^ pub fn GetNumberFormatW($/;" f +GetNumberOfConsoleInputEvents vendor/winapi/src/um/consoleapi.rs /^ pub fn GetNumberOfConsoleInputEvents($/;" f +GetNumberOfConsoleMouseButtons vendor/winapi/src/um/wincon.rs /^ pub fn GetNumberOfConsoleMouseButtons($/;" f +GetNumberOfInterfaces vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetNumberOfInterfaces($/;" f +GetNumberOfPhysicalMonitorsFromHMONITOR vendor/winapi/src/um/physicalmonitorenumerationapi.rs /^ pub fn GetNumberOfPhysicalMonitorsFromHMONITOR($/;" f +GetNumberOfPhysicalMonitorsFromIDirect3DDevice9 vendor/winapi/src/um/physicalmonitorenumerationapi.rs /^ pub fn GetNumberOfPhysicalMonitorsFromIDirect3DDevice9($/;" f +GetOEMCP vendor/winapi/src/um/winnls.rs /^ pub fn GetOEMCP() -> UINT;$/;" f +GetObjectA vendor/winapi/src/um/wingdi.rs /^ pub fn GetObjectA($/;" f +GetObjectType vendor/winapi/src/um/wingdi.rs /^ pub fn GetObjectType($/;" f +GetObjectW vendor/winapi/src/um/wingdi.rs /^ pub fn GetObjectW($/;" f +GetOpenClipboardWindow vendor/winapi/src/um/winuser.rs /^ pub fn GetOpenClipboardWindow() -> HWND;$/;" f +GetOpenFileNameA vendor/winapi/src/um/commdlg.rs /^ pub fn GetOpenFileNameA($/;" f +GetOpenFileNameW vendor/winapi/src/um/commdlg.rs /^ pub fn GetOpenFileNameW($/;" f +GetOsString vendor/nix/src/sys/socket/sockopt.rs /^impl> Get for GetOsString {$/;" c +GetOsString vendor/nix/src/sys/socket/sockopt.rs /^struct GetOsString> {$/;" s +GetOutlineTextMetricsA vendor/winapi/src/um/wingdi.rs /^ pub fn GetOutlineTextMetricsA($/;" f +GetOutlineTextMetricsW vendor/winapi/src/um/wingdi.rs /^ pub fn GetOutlineTextMetricsW($/;" f +GetOverlappedResult vendor/winapi/src/um/ioapiset.rs /^ pub fn GetOverlappedResult($/;" f +GetOverlappedResultEx vendor/winapi/src/um/ioapiset.rs /^ pub fn GetOverlappedResultEx($/;" f +GetOwnerModuleFromPidAndInfo vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetOwnerModuleFromPidAndInfo($/;" f +GetOwnerModuleFromTcp6Entry vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetOwnerModuleFromTcp6Entry($/;" f +GetOwnerModuleFromTcpEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetOwnerModuleFromTcpEntry($/;" f +GetOwnerModuleFromUdp6Entry vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetOwnerModuleFromUdp6Entry($/;" f +GetOwnerModuleFromUdpEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetOwnerModuleFromUdpEntry($/;" f +GetPaletteEntries vendor/winapi/src/um/wingdi.rs /^ pub fn GetPaletteEntries($/;" f +GetParent vendor/winapi/src/um/winuser.rs /^ pub fn GetParent($/;" f +GetPath vendor/winapi/src/um/wingdi.rs /^ pub fn GetPath($/;" f +GetPerAdapterInfo vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetPerAdapterInfo($/;" f +GetPerTcp6ConnectionEStats vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetPerTcp6ConnectionEStats($/;" f +GetPerTcpConnectionEStats vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetPerTcpConnectionEStats($/;" f +GetPerformanceInfo vendor/winapi/src/um/psapi.rs /^ pub fn GetPerformanceInfo($/;" f +GetPhysicalCursorPos vendor/winapi/src/um/winuser.rs /^ pub fn GetPhysicalCursorPos($/;" f +GetPhysicalMonitorsFromHMONITOR vendor/winapi/src/um/physicalmonitorenumerationapi.rs /^ pub fn GetPhysicalMonitorsFromHMONITOR($/;" f +GetPhysicalMonitorsFromIDirect3DDevice9 vendor/winapi/src/um/physicalmonitorenumerationapi.rs /^ pub fn GetPhysicalMonitorsFromIDirect3DDevice9($/;" f +GetPhysicallyInstalledSystemMemory vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetPhysicallyInstalledSystemMemory($/;" f +GetPixel vendor/winapi/src/um/wingdi.rs /^ pub fn GetPixel($/;" f +GetPixelFormat vendor/winapi/src/um/wingdi.rs /^ pub fn GetPixelFormat($/;" f +GetPointerCursorId vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerCursorId($/;" f +GetPointerFrameInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerFrameInfo($/;" f +GetPointerFrameInfoHistory vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerFrameInfoHistory($/;" f +GetPointerFramePenInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerFramePenInfo($/;" f +GetPointerFramePenInfoHistory vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerFramePenInfoHistory($/;" f +GetPointerFrameTouchInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerFrameTouchInfo($/;" f +GetPointerFrameTouchInfoHistory vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerFrameTouchInfoHistory($/;" f +GetPointerInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerInfo($/;" f +GetPointerInfoHistory vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerInfoHistory($/;" f +GetPointerInputTransform vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerInputTransform($/;" f +GetPointerPenInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerPenInfo($/;" f +GetPointerPenInfoHistory vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerPenInfoHistory($/;" f +GetPointerTouchInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerTouchInfo($/;" f +GetPointerTouchInfoHistory vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerTouchInfoHistory($/;" f +GetPointerType vendor/winapi/src/um/winuser.rs /^ pub fn GetPointerType($/;" f +GetPolyFillMode vendor/winapi/src/um/wingdi.rs /^ pub fn GetPolyFillMode($/;" f +GetPrintProcessorDirectoryA vendor/winapi/src/um/winspool.rs /^ pub fn GetPrintProcessorDirectoryA($/;" f +GetPrintProcessorDirectoryW vendor/winapi/src/um/winspool.rs /^ pub fn GetPrintProcessorDirectoryW($/;" f +GetPrinterA vendor/winapi/src/um/winspool.rs /^ pub fn GetPrinterA($/;" f +GetPrinterDataA vendor/winapi/src/um/winspool.rs /^ pub fn GetPrinterDataA($/;" f +GetPrinterDataExA vendor/winapi/src/um/winspool.rs /^ pub fn GetPrinterDataExA($/;" f +GetPrinterDataExW vendor/winapi/src/um/winspool.rs /^ pub fn GetPrinterDataExW($/;" f +GetPrinterDataW vendor/winapi/src/um/winspool.rs /^ pub fn GetPrinterDataW($/;" f +GetPrinterDriverA vendor/winapi/src/um/winspool.rs /^ pub fn GetPrinterDriverA($/;" f +GetPrinterDriverDirectoryA vendor/winapi/src/um/winspool.rs /^ pub fn GetPrinterDriverDirectoryA($/;" f +GetPrinterDriverDirectoryW vendor/winapi/src/um/winspool.rs /^ pub fn GetPrinterDriverDirectoryW($/;" f +GetPrinterDriverW vendor/winapi/src/um/winspool.rs /^ pub fn GetPrinterDriverW($/;" f +GetPrinterW vendor/winapi/src/um/winspool.rs /^ pub fn GetPrinterW($/;" f +GetPriorityClass vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetPriorityClass($/;" f +GetPriorityClipboardFormat vendor/winapi/src/um/winuser.rs /^ pub fn GetPriorityClipboardFormat($/;" f +GetPrivateObjectSecurity vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetPrivateObjectSecurity($/;" f +GetPrivateProfileIntA vendor/winapi/src/um/winbase.rs /^ pub fn GetPrivateProfileIntA($/;" f +GetPrivateProfileIntW vendor/winapi/src/um/winbase.rs /^ pub fn GetPrivateProfileIntW($/;" f +GetPrivateProfileSectionA vendor/winapi/src/um/winbase.rs /^ pub fn GetPrivateProfileSectionA($/;" f +GetPrivateProfileSectionNamesA vendor/winapi/src/um/winbase.rs /^ pub fn GetPrivateProfileSectionNamesA($/;" f +GetPrivateProfileSectionNamesW vendor/winapi/src/um/winbase.rs /^ pub fn GetPrivateProfileSectionNamesW($/;" f +GetPrivateProfileSectionW vendor/winapi/src/um/winbase.rs /^ pub fn GetPrivateProfileSectionW($/;" f +GetPrivateProfileStringA vendor/winapi/src/um/winbase.rs /^ pub fn GetPrivateProfileStringA($/;" f +GetPrivateProfileStringW vendor/winapi/src/um/winbase.rs /^ pub fn GetPrivateProfileStringW($/;" f +GetPrivateProfileStructA vendor/winapi/src/um/winbase.rs /^ pub fn GetPrivateProfileStructA($/;" f +GetPrivateProfileStructW vendor/winapi/src/um/winbase.rs /^ pub fn GetPrivateProfileStructW($/;" f +GetProcAddress vendor/libloading/src/error.rs /^ GetProcAddress {$/;" e enum:Error +GetProcAddress vendor/winapi/src/um/libloaderapi.rs /^ pub fn GetProcAddress($/;" f +GetProcAddressUnknown vendor/libloading/src/error.rs /^ GetProcAddressUnknown,$/;" e enum:Error +GetProcessAffinityMask vendor/winapi/src/um/winbase.rs /^ pub fn GetProcessAffinityMask($/;" f +GetProcessDEPPolicy vendor/winapi/src/um/winbase.rs /^ pub fn GetProcessDEPPolicy($/;" f +GetProcessDefaultLayout vendor/winapi/src/um/winuser.rs /^ pub fn GetProcessDefaultLayout($/;" f +GetProcessDpiAwareness vendor/winapi/src/um/shellscalingapi.rs /^ pub fn GetProcessDpiAwareness($/;" f +GetProcessGroupAffinity vendor/winapi/src/um/processtopologyapi.rs /^ pub fn GetProcessGroupAffinity($/;" f +GetProcessHandleCount vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetProcessHandleCount($/;" f +GetProcessHeap vendor/winapi/src/um/heapapi.rs /^ pub fn GetProcessHeap() -> HANDLE;$/;" f +GetProcessHeaps vendor/winapi/src/um/heapapi.rs /^ pub fn GetProcessHeaps($/;" f +GetProcessId vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetProcessId($/;" f +GetProcessIdOfThread vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetProcessIdOfThread($/;" f +GetProcessImageFileNameA vendor/winapi/src/um/psapi.rs /^ pub fn GetProcessImageFileNameA($/;" f +GetProcessImageFileNameW vendor/winapi/src/um/psapi.rs /^ pub fn GetProcessImageFileNameW($/;" f +GetProcessInformation vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetProcessInformation($/;" f +GetProcessIoCounters vendor/winapi/src/um/winbase.rs /^ pub fn GetProcessIoCounters($/;" f +GetProcessMemoryInfo vendor/winapi/src/um/psapi.rs /^ pub fn GetProcessMemoryInfo($/;" f +GetProcessMitigationPolicy vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetProcessMitigationPolicy($/;" f +GetProcessPreferredUILanguages vendor/winapi/src/um/winnls.rs /^ pub fn GetProcessPreferredUILanguages($/;" f +GetProcessPriorityBoost vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetProcessPriorityBoost($/;" f +GetProcessShutdownParameters vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetProcessShutdownParameters($/;" f +GetProcessTimes vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetProcessTimes($/;" f +GetProcessVersion vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetProcessVersion($/;" f +GetProcessWindowStation vendor/winapi/src/um/winuser.rs /^ pub fn GetProcessWindowStation() -> HWINSTA;$/;" f +GetProcessWorkingSetSize vendor/winapi/src/um/winbase.rs /^ pub fn GetProcessWorkingSetSize($/;" f +GetProcessWorkingSetSizeEx vendor/winapi/src/um/memoryapi.rs /^ pub fn GetProcessWorkingSetSizeEx($/;" f +GetProcessorSystemCycleTime vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetProcessorSystemCycleTime($/;" f +GetProductInfo vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetProductInfo($/;" f +GetProfileIntA vendor/winapi/src/um/winbase.rs /^ pub fn GetProfileIntA($/;" f +GetProfileIntW vendor/winapi/src/um/winbase.rs /^ pub fn GetProfileIntW($/;" f +GetProfileSectionA vendor/winapi/src/um/winbase.rs /^ pub fn GetProfileSectionA($/;" f +GetProfileSectionW vendor/winapi/src/um/winbase.rs /^ pub fn GetProfileSectionW($/;" f +GetProfileStringA vendor/winapi/src/um/winbase.rs /^ pub fn GetProfileStringA($/;" f +GetProfileStringW vendor/winapi/src/um/winbase.rs /^ pub fn GetProfileStringW($/;" f +GetProfileType vendor/winapi/src/um/userenv.rs /^ pub fn GetProfileType($/;" f +GetProfilesDirectoryA vendor/winapi/src/um/userenv.rs /^ pub fn GetProfilesDirectoryA($/;" f +GetProfilesDirectoryW vendor/winapi/src/um/userenv.rs /^ pub fn GetProfilesDirectoryW($/;" f +GetPropA vendor/winapi/src/um/winuser.rs /^ pub fn GetPropA($/;" f +GetPropW vendor/winapi/src/um/winuser.rs /^ pub fn GetPropW($/;" f +GetProviderMgmtInterface vendor/winapi/src/um/vsbackup.rs /^ pub fn GetProviderMgmtInterface($/;" f +GetPwrCapabilities vendor/winapi/src/um/powerbase.rs /^ pub fn GetPwrCapabilities($/;" f +GetPwrDiskSpindownRange vendor/winapi/src/um/powrprof.rs /^ pub fn GetPwrDiskSpindownRange($/;" f +GetQueueStatus vendor/winapi/src/um/winuser.rs /^ pub fn GetQueueStatus($/;" f +GetQueuedCompletionStatus vendor/winapi/src/um/ioapiset.rs /^ pub fn GetQueuedCompletionStatus($/;" f +GetQueuedCompletionStatusEx vendor/winapi/src/um/ioapiset.rs /^ pub fn GetQueuedCompletionStatusEx($/;" f +GetROP2 vendor/winapi/src/um/wingdi.rs /^ pub fn GetROP2($/;" f +GetRTTAndHopCount vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetRTTAndHopCount($/;" f +GetRValue vendor/winapi/src/um/wingdi.rs /^pub fn GetRValue(rgb: COLORREF) -> BYTE {$/;" f +GetRandomRgn vendor/winapi/src/um/wingdi.rs /^ pub fn GetRandomRgn ($/;" f +GetRasterizerCaps vendor/winapi/src/um/wingdi.rs /^ pub fn GetRasterizerCaps($/;" f +GetRawInputBuffer vendor/winapi/src/um/winuser.rs /^ pub fn GetRawInputBuffer($/;" f +GetRawInputData vendor/winapi/src/um/winuser.rs /^ pub fn GetRawInputData($/;" f +GetRawInputDeviceInfoA vendor/winapi/src/um/winuser.rs /^ pub fn GetRawInputDeviceInfoA($/;" f +GetRawInputDeviceInfoW vendor/winapi/src/um/winuser.rs /^ pub fn GetRawInputDeviceInfoW($/;" f +GetRawInputDeviceList vendor/winapi/src/um/winuser.rs /^ pub fn GetRawInputDeviceList($/;" f +GetRegionData vendor/winapi/src/um/wingdi.rs /^ pub fn GetRegionData($/;" f +GetRegisteredRawInputDevices vendor/winapi/src/um/winuser.rs /^ pub fn GetRegisteredRawInputDevices($/;" f +GetRestrictedErrorInfo vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn GetRestrictedErrorInfo($/;" f +GetRgnBox vendor/winapi/src/um/wingdi.rs /^ pub fn GetRgnBox($/;" f +GetSaveFileNameA vendor/winapi/src/um/commdlg.rs /^ pub fn GetSaveFileNameA($/;" f +GetSaveFileNameW vendor/winapi/src/um/commdlg.rs /^ pub fn GetSaveFileNameW($/;" f +GetScrollBarInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetScrollBarInfo($/;" f +GetScrollInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetScrollInfo($/;" f +GetScrollPos vendor/winapi/src/um/winuser.rs /^ pub fn GetScrollPos($/;" f +GetScrollRange vendor/winapi/src/um/winuser.rs /^ pub fn GetScrollRange($/;" f +GetSecurityDescriptorControl vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetSecurityDescriptorControl($/;" f +GetSecurityDescriptorDacl vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetSecurityDescriptorDacl($/;" f +GetSecurityDescriptorGroup vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetSecurityDescriptorGroup($/;" f +GetSecurityDescriptorLength vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetSecurityDescriptorLength($/;" f +GetSecurityDescriptorOwner vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetSecurityDescriptorOwner($/;" f +GetSecurityDescriptorRMControl vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetSecurityDescriptorRMControl($/;" f +GetSecurityDescriptorSacl vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetSecurityDescriptorSacl($/;" f +GetSecurityInfo vendor/winapi/src/um/aclapi.rs /^ pub fn GetSecurityInfo($/;" f +GetServiceDisplayNameA vendor/winapi/src/um/winsvc.rs /^ pub fn GetServiceDisplayNameA($/;" f +GetServiceDisplayNameW vendor/winapi/src/um/winsvc.rs /^ pub fn GetServiceDisplayNameW($/;" f +GetServiceKeyNameA vendor/winapi/src/um/winsvc.rs /^ pub fn GetServiceKeyNameA($/;" f +GetServiceKeyNameW vendor/winapi/src/um/winsvc.rs /^ pub fn GetServiceKeyNameW($/;" f +GetSessionCompartmentId vendor/winapi/src/shared/netioapi.rs /^ pub fn GetSessionCompartmentId($/;" f +GetShellWindow vendor/winapi/src/um/winuser.rs /^ pub fn GetShellWindow() -> HWND;$/;" f +GetShortPathNameA vendor/winapi/src/um/winbase.rs /^ pub fn GetShortPathNameA($/;" f +GetShortPathNameW vendor/winapi/src/um/fileapi.rs /^ pub fn GetShortPathNameW($/;" f +GetSidIdentifierAuthority vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetSidIdentifierAuthority($/;" f +GetSidLengthRequired vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetSidLengthRequired($/;" f +GetSidSubAuthority vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetSidSubAuthority($/;" f +GetSidSubAuthorityCount vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetSidSubAuthorityCount($/;" f +GetSockOpt vendor/nix/src/sys/socket/mod.rs /^pub trait GetSockOpt : Copy {$/;" i +GetSpoolFileHandle vendor/winapi/src/um/winspool.rs /^ pub fn GetSpoolFileHandle($/;" f +GetStartupInfoA vendor/winapi/src/um/winbase.rs /^ pub fn GetStartupInfoA($/;" f +GetStartupInfoW vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetStartupInfoW($/;" f +GetStdHandle vendor/winapi/src/um/processenv.rs /^ pub fn GetStdHandle($/;" f +GetStockObject vendor/winapi/src/um/wingdi.rs /^ pub fn GetStockObject($/;" f +GetStretchBltMode vendor/winapi/src/um/wingdi.rs /^ pub fn GetStretchBltMode($/;" f +GetStringScripts vendor/winapi/src/um/winnls.rs /^ pub fn GetStringScripts($/;" f +GetStringTypeA vendor/winapi/src/um/winnls.rs /^ pub fn GetStringTypeA($/;" f +GetStringTypeExA vendor/winapi/src/um/winnls.rs /^ pub fn GetStringTypeExA($/;" f +GetStringTypeExW vendor/winapi/src/um/stringapiset.rs /^ pub fn GetStringTypeExW($/;" f +GetStringTypeW vendor/winapi/src/um/stringapiset.rs /^ pub fn GetStringTypeW($/;" f +GetStringTypeW vendor/winapi/src/um/winnls.rs /^ pub fn GetStringTypeW($/;" f +GetStruct vendor/nix/src/sys/socket/sockopt.rs /^impl Get for GetStruct {$/;" c +GetStruct vendor/nix/src/sys/socket/sockopt.rs /^struct GetStruct {$/;" s +GetSubMenu vendor/winapi/src/um/winuser.rs /^ pub fn GetSubMenu($/;" f +GetSysColor vendor/winapi/src/um/winuser.rs /^ pub fn GetSysColor($/;" f +GetSysColorBrush vendor/winapi/src/um/winuser.rs /^ pub fn GetSysColorBrush($/;" f +GetSystemDEPPolicy vendor/winapi/src/um/winbase.rs /^ pub fn GetSystemDEPPolicy() -> DEP_SYSTEM_POLICY_TYPE;$/;" f +GetSystemDefaultLCID vendor/winapi/src/um/winnls.rs /^ pub fn GetSystemDefaultLCID() -> LCID;$/;" f +GetSystemDefaultLangID vendor/winapi/src/um/winnls.rs /^ pub fn GetSystemDefaultLangID() -> LANGID;$/;" f +GetSystemDefaultLocaleName vendor/winapi/src/um/winnls.rs /^ pub fn GetSystemDefaultLocaleName($/;" f +GetSystemDefaultUILanguage vendor/winapi/src/um/winnls.rs /^ pub fn GetSystemDefaultUILanguage() -> LANGID;$/;" f +GetSystemDirectoryA vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetSystemDirectoryA($/;" f +GetSystemDirectoryW vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetSystemDirectoryW($/;" f +GetSystemDpiForProcess vendor/winapi/src/um/winuser.rs /^ pub fn GetSystemDpiForProcess($/;" f +GetSystemFileCacheSize vendor/winapi/src/um/memoryapi.rs /^ pub fn GetSystemFileCacheSize($/;" f +GetSystemFirmwareTable vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetSystemFirmwareTable($/;" f +GetSystemInfo vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetSystemInfo($/;" f +GetSystemMenu vendor/winapi/src/um/winuser.rs /^ pub fn GetSystemMenu($/;" f +GetSystemMetrics vendor/winapi/src/um/winuser.rs /^ pub fn GetSystemMetrics($/;" f +GetSystemMetricsForDpi vendor/winapi/src/um/winuser.rs /^ pub fn GetSystemMetricsForDpi($/;" f +GetSystemPaletteEntries vendor/winapi/src/um/wingdi.rs /^ pub fn GetSystemPaletteEntries($/;" f +GetSystemPaletteUse vendor/winapi/src/um/wingdi.rs /^ pub fn GetSystemPaletteUse($/;" f +GetSystemPowerStatus vendor/winapi/src/um/winbase.rs /^ pub fn GetSystemPowerStatus($/;" f +GetSystemPreferredUILanguages vendor/winapi/src/um/winnls.rs /^ pub fn GetSystemPreferredUILanguages($/;" f +GetSystemRegistryQuota vendor/winapi/src/um/winbase.rs /^ pub fn GetSystemRegistryQuota($/;" f +GetSystemTime vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetSystemTime($/;" f +GetSystemTimeAdjustment vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetSystemTimeAdjustment($/;" f +GetSystemTimeAsFileTime vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetSystemTimeAsFileTime($/;" f +GetSystemTimePreciseAsFileTime vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetSystemTimePreciseAsFileTime($/;" f +GetSystemTimes vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetSystemTimes($/;" f +GetSystemWindowsDirectoryA vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetSystemWindowsDirectoryA($/;" f +GetSystemWindowsDirectoryW vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetSystemWindowsDirectoryW($/;" f +GetSystemWow64DirectoryA vendor/winapi/src/um/wow64apiset.rs /^ pub fn GetSystemWow64DirectoryA($/;" f +GetSystemWow64DirectoryW vendor/winapi/src/um/wow64apiset.rs /^ pub fn GetSystemWow64DirectoryW($/;" f +GetTabbedTextExtentA vendor/winapi/src/um/winuser.rs /^ pub fn GetTabbedTextExtentA($/;" f +GetTabbedTextExtentW vendor/winapi/src/um/winuser.rs /^ pub fn GetTabbedTextExtentW($/;" f +GetTapeParameters vendor/winapi/src/um/winbase.rs /^ pub fn GetTapeParameters($/;" f +GetTapePosition vendor/winapi/src/um/winbase.rs /^ pub fn GetTapePosition($/;" f +GetTapeStatus vendor/winapi/src/um/winbase.rs /^ pub fn GetTapeStatus($/;" f +GetTcp6Table vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetTcp6Table($/;" f +GetTcp6Table2 vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetTcp6Table2($/;" f +GetTcpStatistics vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetTcpStatistics($/;" f +GetTcpStatisticsEx vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetTcpStatisticsEx($/;" f +GetTcpStatisticsEx2 vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetTcpStatisticsEx2($/;" f +GetTcpTable vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetTcpTable($/;" f +GetTcpTable2 vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetTcpTable2($/;" f +GetTempFileNameA vendor/winapi/src/um/fileapi.rs /^ pub fn GetTempFileNameA($/;" f +GetTempFileNameW vendor/winapi/src/um/fileapi.rs /^ pub fn GetTempFileNameW($/;" f +GetTempPathA vendor/winapi/src/um/fileapi.rs /^ pub fn GetTempPathA($/;" f +GetTempPathW vendor/winapi/src/um/fileapi.rs /^ pub fn GetTempPathW($/;" f +GetTeredoPort vendor/winapi/src/shared/netioapi.rs /^ pub fn GetTeredoPort($/;" f +GetTextAlign vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextAlign($/;" f +GetTextCharacterExtra vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextCharacterExtra($/;" f +GetTextCharset vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextCharset($/;" f +GetTextCharsetInfo vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextCharsetInfo($/;" f +GetTextColor vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextColor($/;" f +GetTextExtentExPointA vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextExtentExPointA($/;" f +GetTextExtentExPointI vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextExtentExPointI($/;" f +GetTextExtentExPointW vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextExtentExPointW($/;" f +GetTextExtentPoint32A vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextExtentPoint32A($/;" f +GetTextExtentPoint32W vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextExtentPoint32W($/;" f +GetTextExtentPointA vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextExtentPointA($/;" f +GetTextExtentPointI vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextExtentPointI($/;" f +GetTextExtentPointW vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextExtentPointW($/;" f +GetTextFaceA vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextFaceA($/;" f +GetTextFaceW vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextFaceW($/;" f +GetTextMetricsA vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextMetricsA($/;" f +GetTextMetricsW vendor/winapi/src/um/wingdi.rs /^ pub fn GetTextMetricsW($/;" f +GetThemeAnimationProperty vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeAnimationProperty($/;" f +GetThemeAnimationTransform vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeAnimationTransform($/;" f +GetThemeAppProperties vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeAppProperties() -> DWORD;$/;" f +GetThemeBackgroundContentRect vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeBackgroundContentRect($/;" f +GetThemeBackgroundExtent vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeBackgroundExtent($/;" f +GetThemeBackgroundRegion vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeBackgroundRegion($/;" f +GetThemeBitmap vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeBitmap($/;" f +GetThemeBool vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeBool($/;" f +GetThemeColor vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeColor($/;" f +GetThemeDocumentationProperty vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeDocumentationProperty($/;" f +GetThemeEnumValue vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeEnumValue($/;" f +GetThemeFilename vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeFilename($/;" f +GetThemeFont vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeFont($/;" f +GetThemeInt vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeInt($/;" f +GetThemeIntList vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeIntList($/;" f +GetThemeMargins vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeMargins($/;" f +GetThemeMetric vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeMetric($/;" f +GetThemePartSize vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemePartSize($/;" f +GetThemePosition vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemePosition($/;" f +GetThemePropertyOrigin vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemePropertyOrigin($/;" f +GetThemeRect vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeRect($/;" f +GetThemeStream vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeStream($/;" f +GetThemeString vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeString($/;" f +GetThemeSysBool vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeSysBool($/;" f +GetThemeSysColor vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeSysColor($/;" f +GetThemeSysColorBrush vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeSysColorBrush($/;" f +GetThemeSysFont vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeSysFont($/;" f +GetThemeSysInt vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeSysInt($/;" f +GetThemeSysSize vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeSysSize($/;" f +GetThemeSysString vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeSysString($/;" f +GetThemeTextExtent vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeTextExtent($/;" f +GetThemeTextMetrics vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeTextMetrics($/;" f +GetThemeTimingFunction vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeTimingFunction($/;" f +GetThemeTransitionDuration vendor/winapi/src/um/uxtheme.rs /^ pub fn GetThemeTransitionDuration($/;" f +GetThreadContext vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetThreadContext($/;" f +GetThreadDesktop vendor/winapi/src/um/winuser.rs /^ pub fn GetThreadDesktop($/;" f +GetThreadDpiAwarenessContext vendor/winapi/src/um/winuser.rs /^ pub fn GetThreadDpiAwarenessContext() -> DPI_AWARENESS_CONTEXT;$/;" f +GetThreadDpiHostingBehavior vendor/winapi/src/um/winuser.rs /^ pub fn GetThreadDpiHostingBehavior() -> DPI_HOSTING_BEHAVIOR;$/;" f +GetThreadErrorMode vendor/winapi/src/um/errhandlingapi.rs /^ pub fn GetThreadErrorMode() -> DWORD;$/;" f +GetThreadGroupAffinity vendor/winapi/src/um/processtopologyapi.rs /^ pub fn GetThreadGroupAffinity($/;" f +GetThreadIOPendingFlag vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetThreadIOPendingFlag($/;" f +GetThreadId vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetThreadId($/;" f +GetThreadIdealProcessorEx vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetThreadIdealProcessorEx($/;" f +GetThreadInformation vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetThreadInformation($/;" f +GetThreadLocale vendor/winapi/src/um/winnls.rs /^ pub fn GetThreadLocale() -> LCID;$/;" f +GetThreadPreferredUILanguages vendor/winapi/src/um/winnls.rs /^ pub fn GetThreadPreferredUILanguages($/;" f +GetThreadPriority vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetThreadPriority($/;" f +GetThreadPriorityBoost vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetThreadPriorityBoost($/;" f +GetThreadSelectorEntry vendor/winapi/src/um/winbase.rs /^ pub fn GetThreadSelectorEntry($/;" f +GetThreadTimes vendor/winapi/src/um/processthreadsapi.rs /^ pub fn GetThreadTimes($/;" f +GetThreadUILanguage vendor/winapi/src/um/winnls.rs /^ pub fn GetThreadUILanguage() -> LANGID;$/;" f +GetThreadWaitChain vendor/winapi/src/um/wct.rs /^ pub fn GetThreadWaitChain($/;" f +GetTickCount vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetTickCount() -> DWORD;$/;" f +GetTickCount64 vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetTickCount64() -> ULONGLONG;$/;" f +GetTimeFormatA vendor/winapi/src/um/datetimeapi.rs /^ pub fn GetTimeFormatA($/;" f +GetTimeFormatEx vendor/winapi/src/um/datetimeapi.rs /^ pub fn GetTimeFormatEx($/;" f +GetTimeFormatW vendor/winapi/src/um/datetimeapi.rs /^ pub fn GetTimeFormatW($/;" f +GetTimeZoneInformation vendor/winapi/src/um/timezoneapi.rs /^ pub fn GetTimeZoneInformation($/;" f +GetTimeZoneInformationForYear vendor/winapi/src/um/timezoneapi.rs /^ pub fn GetTimeZoneInformationForYear($/;" f +GetTimestampForLoadedLibrary vendor/winapi/src/um/dbghelp.rs /^ pub fn GetTimestampForLoadedLibrary($/;" f +GetTimingReport vendor/winapi/src/um/lowlevelmonitorconfigurationapi.rs /^ pub fn GetTimingReport($/;" f +GetTitleBarInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetTitleBarInfo($/;" f +GetTokenInformation vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetTokenInformation($/;" f +GetTopWindow vendor/winapi/src/um/winuser.rs /^ pub fn GetTopWindow($/;" f +GetTouchInputInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetTouchInputInfo($/;" f +GetTraceEnableFlags vendor/winapi/src/shared/evntrace.rs /^ pub fn GetTraceEnableFlags($/;" f +GetTraceEnableLevel vendor/winapi/src/shared/evntrace.rs /^ pub fn GetTraceEnableLevel($/;" f +GetTraceLoggerHandle vendor/winapi/src/shared/evntrace.rs /^ pub fn GetTraceLoggerHandle($/;" f +GetTrusteeFormA vendor/winapi/src/um/aclapi.rs /^ pub fn GetTrusteeFormA($/;" f +GetTrusteeFormW vendor/winapi/src/um/aclapi.rs /^ pub fn GetTrusteeFormW($/;" f +GetTrusteeNameA vendor/winapi/src/um/aclapi.rs /^ pub fn GetTrusteeNameA($/;" f +GetTrusteeNameW vendor/winapi/src/um/aclapi.rs /^ pub fn GetTrusteeNameW($/;" f +GetTrusteeTypeA vendor/winapi/src/um/aclapi.rs /^ pub fn GetTrusteeTypeA($/;" f +GetTrusteeTypeW vendor/winapi/src/um/aclapi.rs /^ pub fn GetTrusteeTypeW($/;" f +GetU8 vendor/nix/src/sys/socket/sockopt.rs /^impl Get for GetU8 {$/;" c +GetU8 vendor/nix/src/sys/socket/sockopt.rs /^struct GetU8 {$/;" s +GetUILanguageInfo vendor/winapi/src/um/winnls.rs /^ pub fn GetUILanguageInfo($/;" f +GetUdp6Table vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetUdp6Table($/;" f +GetUdpStatistics vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetUdpStatistics($/;" f +GetUdpStatisticsEx vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetUdpStatisticsEx($/;" f +GetUdpStatisticsEx2 vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetUdpStatisticsEx2($/;" f +GetUdpTable vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetUdpTable($/;" f +GetUmsCompletionListEvent vendor/winapi/src/um/winbase.rs /^ pub fn GetUmsCompletionListEvent($/;" f +GetUmsSystemThreadInformation vendor/winapi/src/um/winbase.rs /^ pub fn GetUmsSystemThreadInformation($/;" f +GetUniDirectionalAdapterInfo vendor/winapi/src/um/iphlpapi.rs /^ pub fn GetUniDirectionalAdapterInfo($/;" f +GetUnicastIpAddressEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn GetUnicastIpAddressEntry($/;" f +GetUnicastIpAddressTable vendor/winapi/src/shared/netioapi.rs /^ pub fn GetUnicastIpAddressTable($/;" f +GetUnpredictedMessagePos vendor/winapi/src/um/winuser.rs /^ pub fn GetUnpredictedMessagePos() -> DWORD;$/;" f +GetUpdateRect vendor/winapi/src/um/winuser.rs /^ pub fn GetUpdateRect($/;" f +GetUpdateRgn vendor/winapi/src/um/winuser.rs /^ pub fn GetUpdateRgn($/;" f +GetUpdatedClipboardFormats vendor/winapi/src/um/winuser.rs /^ pub fn GetUpdatedClipboardFormats($/;" f +GetUrlCacheEntryInfoA vendor/winapi/src/um/wininet.rs /^ pub fn GetUrlCacheEntryInfoA($/;" f +GetUrlCacheEntryInfoExA vendor/winapi/src/um/wininet.rs /^ pub fn GetUrlCacheEntryInfoExA($/;" f +GetUrlCacheEntryInfoExW vendor/winapi/src/um/wininet.rs /^ pub fn GetUrlCacheEntryInfoExW($/;" f +GetUrlCacheEntryInfoW vendor/winapi/src/um/wininet.rs /^ pub fn GetUrlCacheEntryInfoW($/;" f +GetUrlCacheGroupAttributeA vendor/winapi/src/um/wininet.rs /^ pub fn GetUrlCacheGroupAttributeA($/;" f +GetUrlCacheGroupAttributeW vendor/winapi/src/um/wininet.rs /^ pub fn GetUrlCacheGroupAttributeW($/;" f +GetUserDefaultLCID vendor/winapi/src/um/winnls.rs /^ pub fn GetUserDefaultLCID() -> LCID;$/;" f +GetUserDefaultLangID vendor/winapi/src/um/winnls.rs /^ pub fn GetUserDefaultLangID() -> LANGID;$/;" f +GetUserDefaultLocaleName vendor/winapi/src/um/winnls.rs /^ pub fn GetUserDefaultLocaleName($/;" f +GetUserDefaultUILanguage vendor/winapi/src/um/winnls.rs /^ pub fn GetUserDefaultUILanguage() -> LANGID;$/;" f +GetUserGeoID vendor/winapi/src/um/winnls.rs /^ pub fn GetUserGeoID(GeoClass: GEOCLASS) -> GEOID;$/;" f +GetUserNameA vendor/winapi/src/um/winbase.rs /^ pub fn GetUserNameA($/;" f +GetUserNameW vendor/winapi/src/um/winbase.rs /^ pub fn GetUserNameW($/;" f +GetUserObjectInformationA vendor/winapi/src/um/winuser.rs /^ pub fn GetUserObjectInformationA($/;" f +GetUserObjectInformationW vendor/winapi/src/um/winuser.rs /^ pub fn GetUserObjectInformationW($/;" f +GetUserObjectSecurity vendor/winapi/src/um/winuser.rs /^ pub fn GetUserObjectSecurity($/;" f +GetUserPreferredUILanguages vendor/winapi/src/um/winnls.rs /^ pub fn GetUserPreferredUILanguages($/;" f +GetUserProfileDirectoryA vendor/winapi/src/um/userenv.rs /^ pub fn GetUserProfileDirectoryA($/;" f +GetUserProfileDirectoryW vendor/winapi/src/um/userenv.rs /^ pub fn GetUserProfileDirectoryW($/;" f +GetUsize vendor/nix/src/sys/socket/sockopt.rs /^impl Get for GetUsize {$/;" c +GetUsize vendor/nix/src/sys/socket/sockopt.rs /^struct GetUsize {$/;" s +GetVCPFeatureAndVCPFeatureReply vendor/winapi/src/um/lowlevelmonitorconfigurationapi.rs /^ pub fn GetVCPFeatureAndVCPFeatureReply($/;" f +GetVersion vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetVersion() -> DWORD;$/;" f +GetVersionExA vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetVersionExA($/;" f +GetVersionExW vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetVersionExW($/;" f +GetViewportExtEx vendor/winapi/src/um/wingdi.rs /^ pub fn GetViewportExtEx($/;" f +GetViewportOrgEx vendor/winapi/src/um/wingdi.rs /^ pub fn GetViewportOrgEx($/;" f +GetVolumeInformationA vendor/winapi/src/um/fileapi.rs /^ pub fn GetVolumeInformationA($/;" f +GetVolumeInformationByHandleW vendor/winapi/src/um/fileapi.rs /^ pub fn GetVolumeInformationByHandleW($/;" f +GetVolumeInformationW vendor/winapi/src/um/fileapi.rs /^ pub fn GetVolumeInformationW($/;" f +GetVolumeNameForVolumeMountPointA vendor/winapi/src/um/winbase.rs /^ pub fn GetVolumeNameForVolumeMountPointA($/;" f +GetVolumeNameForVolumeMountPointW vendor/winapi/src/um/fileapi.rs /^ pub fn GetVolumeNameForVolumeMountPointW($/;" f +GetVolumePathNameA vendor/winapi/src/um/winbase.rs /^ pub fn GetVolumePathNameA($/;" f +GetVolumePathNameW vendor/winapi/src/um/fileapi.rs /^ pub fn GetVolumePathNameW($/;" f +GetVolumePathNamesForVolumeNameA vendor/winapi/src/um/winbase.rs /^ pub fn GetVolumePathNamesForVolumeNameA($/;" f +GetVolumePathNamesForVolumeNameW vendor/winapi/src/um/fileapi.rs /^ pub fn GetVolumePathNamesForVolumeNameW($/;" f +GetWinMetaFileBits vendor/winapi/src/um/wingdi.rs /^ pub fn GetWinMetaFileBits($/;" f +GetWindow vendor/winapi/src/um/winuser.rs /^ pub fn GetWindow($/;" f +GetWindowContextHelpId vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowContextHelpId($/;" f +GetWindowDC vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowDC($/;" f +GetWindowDisplayAffinity vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowDisplayAffinity($/;" f +GetWindowDpiAwarenessContext vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowDpiAwarenessContext($/;" f +GetWindowDpiHostingBehavior vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowDpiHostingBehavior($/;" f +GetWindowExtEx vendor/winapi/src/um/wingdi.rs /^ pub fn GetWindowExtEx($/;" f +GetWindowFeedbackSetting vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowFeedbackSetting($/;" f +GetWindowInfo vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowInfo($/;" f +GetWindowLongA vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowLongA($/;" f +GetWindowLongPtrA vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowLongPtrA($/;" f +GetWindowLongPtrW vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowLongPtrW($/;" f +GetWindowLongW vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowLongW($/;" f +GetWindowModuleFileNameA vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowModuleFileNameA($/;" f +GetWindowModuleFileNameW vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowModuleFileNameW($/;" f +GetWindowOrgEx vendor/winapi/src/um/wingdi.rs /^ pub fn GetWindowOrgEx($/;" f +GetWindowPlacement vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowPlacement($/;" f +GetWindowRect vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowRect($/;" f +GetWindowRgn vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowRgn($/;" f +GetWindowRgnBox vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowRgnBox($/;" f +GetWindowSubclass vendor/winapi/src/um/commctrl.rs /^ pub fn GetWindowSubclass($/;" f +GetWindowTextA vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowTextA($/;" f +GetWindowTextLengthA vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowTextLengthA($/;" f +GetWindowTextLengthW vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowTextLengthW($/;" f +GetWindowTextW vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowTextW($/;" f +GetWindowTheme vendor/winapi/src/um/uxtheme.rs /^ pub fn GetWindowTheme($/;" f +GetWindowThreadProcessId vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowThreadProcessId($/;" f +GetWindowWord vendor/winapi/src/um/winuser.rs /^ pub fn GetWindowWord($/;" f +GetWindowsAccountDomainSid vendor/winapi/src/um/securitybaseapi.rs /^ pub fn GetWindowsAccountDomainSid($/;" f +GetWindowsDirectoryA vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetWindowsDirectoryA($/;" f +GetWindowsDirectoryW vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GetWindowsDirectoryW($/;" f +GetWorldTransform vendor/winapi/src/um/wingdi.rs /^ pub fn GetWorldTransform($/;" f +GetWriteWatch vendor/winapi/src/um/memoryapi.rs /^ pub fn GetWriteWatch($/;" f +GetWsChanges vendor/winapi/src/um/psapi.rs /^ pub fn GetWsChanges($/;" f +GetWsChangesEx vendor/winapi/src/um/psapi.rs /^ pub fn GetWsChangesEx($/;" f +GetXStateFeaturesMask vendor/winapi/src/um/winbase.rs /^ pub fn GetXStateFeaturesMask($/;" f +GetYValue vendor/winapi/src/um/wingdi.rs /^pub fn GetYValue(cmyk: COLORREF) -> BYTE {$/;" f +Getopt::MySimple support/texi2html /^package Getopt::MySimple;$/;" p +GetoptsCmd builtins_rust/exec_cmd/src/lib.rs /^ GetoptsCmd,$/;" e enum:CMDType +GetoptsComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for GetoptsComand {$/;" c +GetoptsComand builtins_rust/exec_cmd/src/lib.rs /^struct GetoptsComand;$/;" s +Getting Started vendor/lazy_static/README.md /^# Getting Started$/;" c +Getting help README.md /^## Getting help$/;" s chapter:utshell +Getting involved README.md /^## Getting involved$/;" s chapter:utshell +GlobalAddAtomA vendor/winapi/src/um/winbase.rs /^ pub fn GlobalAddAtomA($/;" f +GlobalAddAtomExA vendor/winapi/src/um/winbase.rs /^ pub fn GlobalAddAtomExA($/;" f +GlobalAddAtomExW vendor/winapi/src/um/winbase.rs /^ pub fn GlobalAddAtomExW($/;" f +GlobalAddAtomW vendor/winapi/src/um/winbase.rs /^ pub fn GlobalAddAtomW($/;" f +GlobalAlloc vendor/winapi/src/um/winbase.rs /^ pub fn GlobalAlloc($/;" f +GlobalCompact vendor/winapi/src/um/winbase.rs /^ pub fn GlobalCompact($/;" f +GlobalDeleteAtom vendor/winapi/src/um/winbase.rs /^ pub fn GlobalDeleteAtom($/;" f +GlobalFindAtomA vendor/winapi/src/um/winbase.rs /^ pub fn GlobalFindAtomA($/;" f +GlobalFindAtomW vendor/winapi/src/um/winbase.rs /^ pub fn GlobalFindAtomW($/;" f +GlobalFix vendor/winapi/src/um/winbase.rs /^ pub fn GlobalFix($/;" f +GlobalFlags vendor/winapi/src/um/winbase.rs /^ pub fn GlobalFlags($/;" f +GlobalFree vendor/winapi/src/um/winbase.rs /^ pub fn GlobalFree($/;" f +GlobalGetAtomNameA vendor/winapi/src/um/winbase.rs /^ pub fn GlobalGetAtomNameA($/;" f +GlobalGetAtomNameW vendor/winapi/src/um/winbase.rs /^ pub fn GlobalGetAtomNameW($/;" f +GlobalHandle vendor/winapi/src/um/winbase.rs /^ pub fn GlobalHandle($/;" f +GlobalLock vendor/winapi/src/um/winbase.rs /^ pub fn GlobalLock($/;" f +GlobalMemoryStatus vendor/winapi/src/um/winbase.rs /^ pub fn GlobalMemoryStatus($/;" f +GlobalMemoryStatusEx vendor/winapi/src/um/sysinfoapi.rs /^ pub fn GlobalMemoryStatusEx($/;" f +GlobalReAlloc vendor/winapi/src/um/winbase.rs /^ pub fn GlobalReAlloc($/;" f +GlobalSize vendor/winapi/src/um/winbase.rs /^ pub fn GlobalSize($/;" f +GlobalUnWire vendor/winapi/src/um/winbase.rs /^ pub fn GlobalUnWire($/;" f +GlobalUnfix vendor/winapi/src/um/winbase.rs /^ pub fn GlobalUnfix($/;" f +GlobalUnlock vendor/winapi/src/um/winbase.rs /^ pub fn GlobalUnlock($/;" f +GlobalWire vendor/winapi/src/um/winbase.rs /^ pub fn GlobalWire($/;" f +Gone vendor/futures-util/src/future/maybe_done.rs /^ Gone,$/;" e enum:MaybeDone +Gone vendor/futures-util/src/future/try_maybe_done.rs /^ Gone,$/;" e enum:TryMaybeDone +GopherCreateLocatorA vendor/winapi/src/um/wininet.rs /^ pub fn GopherCreateLocatorA($/;" f +GopherCreateLocatorW vendor/winapi/src/um/wininet.rs /^ pub fn GopherCreateLocatorW($/;" f +GopherFindFirstFileA vendor/winapi/src/um/wininet.rs /^ pub fn GopherFindFirstFileA($/;" f +GopherFindFirstFileW vendor/winapi/src/um/wininet.rs /^ pub fn GopherFindFirstFileW($/;" f +GopherGetAttributeA vendor/winapi/src/um/wininet.rs /^ pub fn GopherGetAttributeA($/;" f +GopherGetAttributeW vendor/winapi/src/um/wininet.rs /^ pub fn GopherGetAttributeW($/;" f +GopherGetLocatorTypeA vendor/winapi/src/um/wininet.rs /^ pub fn GopherGetLocatorTypeA($/;" f +GopherGetLocatorTypeW vendor/winapi/src/um/wininet.rs /^ pub fn GopherGetLocatorTypeW($/;" f +GopherOpenFileA vendor/winapi/src/um/wininet.rs /^ pub fn GopherOpenFileA($/;" f +GopherOpenFileW vendor/winapi/src/um/wininet.rs /^ pub fn GopherOpenFileW($/;" f +GradientFill vendor/winapi/src/um/wingdi.rs /^ pub fn GradientFill($/;" f +Graph vendor/winapi/build.rs /^impl Graph {$/;" c +Graph vendor/winapi/build.rs /^struct Graph(HashMap<&'static str, Header>);$/;" s +GrayStringA vendor/winapi/src/um/winuser.rs /^ pub fn GrayStringA($/;" f +GrayStringW vendor/winapi/src/um/winuser.rs /^ pub fn GrayStringW($/;" f +Group command.h /^ struct group_com *Group;$/;" m union:command::__anon3aaf009a020a typeref:struct:group_com * +Group vendor/fluent-syntax/src/parser/comment.rs /^ Group = 2,$/;" e enum:Level +Group vendor/proc-macro2/src/fallback.rs /^impl Debug for Group {$/;" c +Group vendor/proc-macro2/src/fallback.rs /^impl Display for Group {$/;" c +Group vendor/proc-macro2/src/fallback.rs /^impl Group {$/;" c +Group vendor/proc-macro2/src/fallback.rs /^pub(crate) struct Group {$/;" s +Group vendor/proc-macro2/src/lib.rs /^ Group(Group),$/;" e enum:TokenTree +Group vendor/proc-macro2/src/lib.rs /^impl Debug for Group {$/;" c +Group vendor/proc-macro2/src/lib.rs /^impl Display for Group {$/;" c +Group vendor/proc-macro2/src/lib.rs /^impl Group {$/;" c +Group vendor/proc-macro2/src/lib.rs /^pub struct Group {$/;" s +Group vendor/proc-macro2/src/wrapper.rs /^impl Debug for Group {$/;" c +Group vendor/proc-macro2/src/wrapper.rs /^impl Display for Group {$/;" c +Group vendor/proc-macro2/src/wrapper.rs /^impl From for Group {$/;" c +Group vendor/proc-macro2/src/wrapper.rs /^impl Group {$/;" c +Group vendor/proc-macro2/src/wrapper.rs /^pub(crate) enum Group {$/;" g +Group vendor/quote/src/to_tokens.rs /^impl ToTokens for Group {$/;" c +Group vendor/syn/src/buffer.rs /^ Group(Group, usize),$/;" e enum:Entry +Group vendor/syn/src/group.rs /^pub struct Group<'a> {$/;" s +Group vendor/syn/src/parse.rs /^impl Parse for Group {$/;" c +Group vendor/syn/src/token.rs /^impl Token for Group {$/;" c +Group vendor/syn/tests/test_round_trip.rs /^ enum Group {$/;" g method:normalize::NormalizeVisitor::visit_angle_bracketed_parameter_data +Group vendor/syn/tests/test_round_trip.rs /^ enum Group {$/;" g method:normalize::NormalizeVisitor::visit_generics +GroupComment vendor/fluent-syntax/src/ast/mod.rs /^ GroupComment(Comment),$/;" e enum:Entry +GuCallback vendor/libc/src/psp.rs /^pub type GuCallback = ::Option;$/;" t +GuSwapBuffersCallback vendor/libc/src/psp.rs /^pub type GuSwapBuffersCallback =$/;" t +Guard vendor/futures-util/src/io/read_to_end.rs /^impl Drop for Guard<'_> {$/;" c +Guard vendor/futures-util/src/io/read_to_end.rs /^struct Guard<'a> {$/;" s +Guard vendor/once_cell/src/imp_pl.rs /^impl<'a> Drop for Guard<'a> {$/;" c +Guard vendor/once_cell/src/imp_pl.rs /^struct Guard<'a> {$/;" s +Guard vendor/once_cell/src/imp_std.rs /^impl Drop for Guard<'_> {$/;" c +Guard vendor/once_cell/src/imp_std.rs /^struct Guard<'a> {$/;" s +Guard vendor/once_cell/tests/it.rs /^ impl Drop for Guard {$/;" c function:sync::reentrant_init +Guard vendor/once_cell/tests/it.rs /^ struct Guard {$/;" s function:sync::reentrant_init +HALF_PTR vendor/winapi/src/shared/basetsd.rs /^pub type HALF_PTR = c_int;$/;" t +HALF_PTR vendor/winapi/src/shared/basetsd.rs /^pub type HALF_PTR = c_short;$/;" t +HANDLE vendor/winapi/src/shared/ntdef.rs /^pub type HANDLE = *mut c_void;$/;" t +HANDLE vendor/winapi/src/um/winnt.rs /^pub type HANDLE = *mut c_void;$/;" t +HANDLER_ENTRY builtins/mkbuiltins.c /^} HANDLER_ENTRY;$/;" t typeref:struct:__anon69e836710408 file: +HANDLE_MULTIBYTE config-bot.h /^# define HANDLE_MULTIBYTE /;" d +HANDLE_MULTIBYTE lib/readline/rlmbutil.h /^# define HANDLE_MULTIBYTE /;" d +HANDLE_PTR vendor/winapi/src/shared/basetsd.rs /^pub type HANDLE_PTR = usize;$/;" t +HANDLE_SDP vendor/winapi/src/shared/bthioctl.rs /^pub type HANDLE_SDP = ULONGLONG;$/;" t +HANDLE_SDP_TYPE vendor/winapi/src/shared/bthioctl.rs /^pub type HANDLE_SDP_TYPE = HANDLE_SDP;$/;" t +HANDLE_SIGNALS lib/readline/rlconf.h /^#define HANDLE_SIGNALS$/;" d +HANIMATIONBUFFER vendor/winapi/src/um/uxtheme.rs /^pub type HANIMATIONBUFFER = HANDLE;$/;" t +HASHMAP vendor/once_cell/examples/lazy_static.rs /^static HASHMAP: Lazy> = Lazy::new(|| {$/;" v +HASHWORDBITS lib/intl/hash-string.h /^#define HASHWORDBITS /;" d +HASH_BANG_BUFSIZ execute_cmd.c /^#define HASH_BANG_BUFSIZ /;" d file: +HASH_BUCKET hashlib.c /^#define HASH_BUCKET(/;" d file: +HASH_CHKDOT hashcmd.h /^#define HASH_CHKDOT /;" d +HASH_CREATE hashlib.h /^#define HASH_CREATE /;" d +HASH_ENTRIES builtins_rust/hash/src/lib.rs /^fn HASH_ENTRIES(ht: *mut HASH_TABLE) -> i32 {$/;" f +HASH_ENTRIES builtins_rust/hash/src/lib.rs /^macro_rules! HASH_ENTRIES {$/;" M +HASH_ENTRIES hashlib.h /^#define HASH_ENTRIES(/;" d +HASH_MIX lib/malloc/table.h /^#define HASH_MIX(/;" d +HASH_NOSRCH hashlib.h /^#define HASH_NOSRCH /;" d +HASH_REHASH_FACTOR hashlib.c /^#define HASH_REHASH_FACTOR /;" d file: +HASH_REHASH_MULTIPLIER hashlib.c /^#define HASH_REHASH_MULTIPLIER /;" d file: +HASH_RELPATH hashcmd.h /^#define HASH_RELPATH /;" d +HASH_SHOULDGROW hashlib.c /^#define HASH_SHOULDGROW(/;" d file: +HASH_SHOULDSHRINK hashlib.c /^#define HASH_SHOULDSHRINK(/;" d file: +HASH_TABLE builtins_rust/declare/src/lib.rs /^pub struct HASH_TABLE {$/;" s +HASH_TABLE builtins_rust/hash/src/lib.rs /^type HASH_TABLE = hash_table;$/;" t +HASH_TABLE builtins_rust/setattr/src/intercdep.rs /^pub struct HASH_TABLE {$/;" s +HASH_TABLE hashlib.h /^} HASH_TABLE;$/;" t typeref:struct:hash_table +HASH_TABLE r_bash/src/lib.rs /^pub type HASH_TABLE = hash_table;$/;" t +HASH_TABLE r_jobs/src/lib.rs /^pub type HASH_TABLE = hash_table;$/;" t +HASUB lib/sh/fpurge.c /^# define HASUB(/;" d file: +HAS_DEVICE lib/intl/dcigettext.c /^# define HAS_DEVICE(/;" d file: +HAS_DEVICE lib/intl/l10nflist.c /^# define HAS_DEVICE(/;" d file: +HAS_DEVICE lib/intl/relocatable.c /^# define HAS_DEVICE(/;" d file: +HAVE_ALLOCA include/memalloc.h /^# define HAVE_ALLOCA$/;" d +HAVE_ALLOCA lib/intl/dcigettext.c /^# define HAVE_ALLOCA /;" d file: +HAVE_ALLOCA lib/intl/loadmsgcat.c /^# define HAVE_ALLOCA /;" d file: +HAVE_ALLOCA lib/intl/localealias.c /^# define HAVE_ALLOCA /;" d file: +HAVE_ALLOCA_H include/memalloc.h /^# define HAVE_ALLOCA_H$/;" d +HAVE_ASPRINTF lib/sh/snprintf.c /^# define HAVE_ASPRINTF /;" d file: +HAVE_BSD_PGRP config-bot.h /^# define HAVE_BSD_PGRP$/;" d +HAVE_GETCWD lib/intl/dcigettext.c /^# define HAVE_GETCWD$/;" d file: +HAVE_HASH_BANG_EXEC configure.ac /^AC_DEFINE(HAVE_HASH_BANG_EXEC)$/;" d +HAVE_ISINF_IN_LIBC lib/sh/snprintf.c /^#define HAVE_ISINF_IN_LIBC$/;" d file: +HAVE_ISNAN_IN_LIBC lib/sh/snprintf.c /^#define HAVE_ISNAN_IN_LIBC$/;" d file: +HAVE_LIMITS_H lib/sh/mktime.c /^# define HAVE_LIMITS_H /;" d file: +HAVE_LIMITS_H lib/sh/snprintf.c /^#define HAVE_LIMITS_H$/;" d file: +HAVE_LOCALE_H lib/sh/snprintf.c /^#define HAVE_LOCALE_H$/;" d file: +HAVE_LOCALE_NULL lib/intl/localename.c /^# define HAVE_LOCALE_NULL$/;" d file: +HAVE_LOCALTIME_R lib/sh/mktime.c /^# define HAVE_LOCALTIME_R /;" d file: +HAVE_LONG_DOUBLE lib/sh/snprintf.c /^#define HAVE_LONG_DOUBLE$/;" d file: +HAVE_LONG_LONG lib/sh/snprintf.c /^#define HAVE_LONG_LONG$/;" d file: +HAVE_MEMPCPY lib/intl/localealias.c /^# define HAVE_MEMPCPY /;" d file: +HAVE_MKFIFO configure.ac /^AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING))$/;" d +HAVE_MMAP lib/intl/loadmsgcat.c /^# define HAVE_MMAP /;" d file: +HAVE_NETWORK config-bot.h /^# define HAVE_NETWORK$/;" d +HAVE_POSIX_REGEXP config-bot.h /^# define HAVE_POSIX_REGEXP$/;" d +HAVE_PRINTF_A_FORMAT lib/sh/snprintf.c /^#define HAVE_PRINTF_A_FORMAT$/;" d file: +HAVE_RENAME builtins/gen-helpfiles.c /^# define HAVE_RENAME$/;" d file: +HAVE_RENAME builtins/mkbuiltins.c /^# define HAVE_RENAME$/;" d file: +HAVE_RESOURCE config-bot.h /^# define HAVE_RESOURCE$/;" d +HAVE_SELECT include/posixselect.h /^# define HAVE_SELECT /;" d +HAVE_SELECT lib/readline/posixselect.h /^# define HAVE_SELECT /;" d +HAVE_SETOSTYPE configure.ac /^AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE))$/;" d +HAVE_SNPRINTF lib/sh/snprintf.c /^# define HAVE_SNPRINTF /;" d file: +HAVE_STDDEF_H lib/sh/snprintf.c /^#define HAVE_STDDEF_H$/;" d file: +HAVE_STDLIB_H builtins/gen-helpfiles.c /^# define HAVE_STDLIB_H$/;" d file: +HAVE_STDLIB_H builtins/mkbuiltins.c /^# define HAVE_STDLIB_H$/;" d file: +HAVE_STD_PUTENV configure.ac /^AC_DEFINE(HAVE_STD_PUTENV)$/;" d +HAVE_STD_UNSETENV configure.ac /^AC_DEFINE(HAVE_STD_UNSETENV)$/;" d +HAVE_STRCASECMP lib/intl/os2compat.h /^#define HAVE_STRCASECMP /;" d +HAVE_STRINGIZE lib/sh/snprintf.c /^#define HAVE_STRINGIZE$/;" d file: +HAVE_STRING_H builtins/gen-helpfiles.c /^# define HAVE_STRING_H$/;" d file: +HAVE_STRING_H builtins/mkbuiltins.c /^# define HAVE_STRING_H$/;" d file: +HAVE_SYS_RESOURCE_H configure.ac /^AC_CHECK_HEADER(sys\/resource.h, AC_DEFINE(HAVE_SYS_RESOURCE_H), [], [[$/;" d +HAVE_UNISTD_H builtins/gen-helpfiles.c /^# define HAVE_UNISTD_H$/;" d file: +HAVE_UNISTD_H builtins/mkbuiltins.c /^# define HAVE_UNISTD_H$/;" d file: +HAVE_VPRINTF config-bot.h /^# define HAVE_VPRINTF$/;" d +HAVE_VPRINTF configure.ac /^ AC_DEFINE(HAVE_VPRINTF)$/;" d +HAVE_WAIT3 configure.ac /^AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3))$/;" d +HAVE___FSETLOCKING lib/intl/localealias.c /^# define HAVE___FSETLOCKING /;" d file: +HBLUETOOTH_AUTHENTICATION_REGISTRATION vendor/winapi/src/um/bluetoothapis.rs /^pub type HBLUETOOTH_AUTHENTICATION_REGISTRATION = HANDLE;$/;" t +HBLUETOOTH_CONTAINER_ELEMENT vendor/winapi/src/um/bluetoothapis.rs /^pub type HBLUETOOTH_CONTAINER_ELEMENT = HANDLE;$/;" t +HBLUETOOTH_DEVICE_FIND vendor/winapi/src/um/bluetoothapis.rs /^pub type HBLUETOOTH_DEVICE_FIND = HANDLE;$/;" t +HBLUETOOTH_RADIO_FIND vendor/winapi/src/um/bluetoothapis.rs /^pub type HBLUETOOTH_RADIO_FIND = HANDLE;$/;" t +HCERTCHAINENGINE vendor/winapi/src/um/wincrypt.rs /^pub type HCERTCHAINENGINE = HANDLE;$/;" t +HCERTSTORE vendor/winapi/src/um/wincrypt.rs /^pub type HCERTSTORE = *mut c_void;$/;" t +HCERTSTOREPROV vendor/winapi/src/um/wincrypt.rs /^pub type HCERTSTOREPROV = *mut c_void;$/;" t +HCERT_SERVER_OCSP_RESPONSE vendor/winapi/src/um/wincrypt.rs /^pub type HCERT_SERVER_OCSP_RESPONSE = *mut c_void;$/;" t +HCONTEXT vendor/winapi/src/shared/wtypes.rs /^pub type HCONTEXT = *mut c_void;$/;" t +HCOUNTER vendor/winapi/src/um/pdh.rs /^pub type HCOUNTER = PDH_HCOUNTER;$/;" t +HCRYPTASYNC vendor/winapi/src/um/wincrypt.rs /^pub type HCRYPTASYNC = HANDLE;$/;" t +HCRYPTDEFAULTCONTEXT vendor/winapi/src/um/wincrypt.rs /^pub type HCRYPTDEFAULTCONTEXT = *mut c_void;$/;" t +HCRYPTHASH vendor/winapi/src/um/ncrypt.rs /^pub type HCRYPTHASH = ULONG_PTR;$/;" t +HCRYPTHASH vendor/winapi/src/um/wincrypt.rs /^pub type HCRYPTHASH = ULONG_PTR;$/;" t +HCRYPTKEY vendor/winapi/src/um/ncrypt.rs /^pub type HCRYPTKEY = ULONG_PTR;$/;" t +HCRYPTKEY vendor/winapi/src/um/wincrypt.rs /^pub type HCRYPTKEY = ULONG_PTR;$/;" t +HCRYPTMSG vendor/winapi/src/um/wincrypt.rs /^pub type HCRYPTMSG = *mut c_void;$/;" t +HCRYPTOIDFUNCADDR vendor/winapi/src/um/wincrypt.rs /^pub type HCRYPTOIDFUNCADDR = *mut c_void;$/;" t +HCRYPTOIDFUNCSET vendor/winapi/src/um/wincrypt.rs /^pub type HCRYPTOIDFUNCSET = *mut c_void;$/;" t +HCRYPTPROV vendor/winapi/src/um/ncrypt.rs /^pub type HCRYPTPROV = ULONG_PTR;$/;" t +HCRYPTPROV vendor/winapi/src/um/wincrypt.rs /^pub type HCRYPTPROV = ULONG_PTR;$/;" t +HCRYPTPROV_LEGACY vendor/winapi/src/um/wincrypt.rs /^pub type HCRYPTPROV_LEGACY = ULONG_PTR;$/;" t +HCRYPTPROV_OR_NCRYPT_KEY_HANDLE vendor/winapi/src/um/wincrypt.rs /^pub type HCRYPTPROV_OR_NCRYPT_KEY_HANDLE = ULONG_PTR;$/;" t +HCURSOR vendor/winapi/src/shared/windef.rs /^pub type HCURSOR = HICON;$/;" t +HC_ERASEDUPS bashhist.h /^#define HC_ERASEDUPS /;" d +HC_IGNBOTH bashhist.h /^#define HC_IGNBOTH /;" d +HC_IGNDUPS bashhist.h /^#define HC_IGNDUPS /;" d +HC_IGNSPACE bashhist.h /^#define HC_IGNSPACE /;" d +HDBC vendor/winapi/src/um/sqltypes.rs /^pub type HDBC = *mut c_void;$/;" t +HDEVINFO vendor/winapi/src/um/setupapi.rs /^pub type HDEVINFO = PVOID;$/;" t +HDEVNOTIFY vendor/winapi/src/um/winuser.rs /^pub type HDEVNOTIFY = PVOID;$/;" t +HDPA vendor/winapi/src/um/dpa_dsa.rs /^pub type HDPA = *mut DPA;$/;" t +HDSA vendor/winapi/src/um/dpa_dsa.rs /^pub type HDSA = *mut DSA;$/;" t +HDSKSPC vendor/winapi/src/um/setupapi.rs /^pub type HDSKSPC = PVOID;$/;" t +HDWP vendor/winapi/src/um/winuser.rs /^pub type HDWP = HANDLE;$/;" t +HD_HITTESTINFO vendor/winapi/src/um/commctrl.rs /^pub type HD_HITTESTINFO = HDHITTESTINFO;$/;" t +HD_NOTIFYA vendor/winapi/src/um/commctrl.rs /^pub type HD_NOTIFYA = NMHEADERA;$/;" t +HD_NOTIFYW vendor/winapi/src/um/commctrl.rs /^pub type HD_NOTIFYW = NMHEADERW;$/;" t +HEADERS lib/intl/Makefile.in /^HEADERS = \\$/;" m +HEAP_MAKE_TAG_FLAGS vendor/winapi/src/um/winnt.rs /^pub fn HEAP_MAKE_TAG_FLAGS(TagBase: DWORD, Tag: DWORD) -> DWORD {$/;" f +HELPDIR builtins/Makefile.in /^HELPDIR = @HELPDIR@$/;" m +HELPDIR configure.ac /^AC_SUBST(HELPDIR)$/;" s +HELPDIRDEFINE builtins/Makefile.in /^HELPDIRDEFINE = @HELPDIRDEFINE@$/;" m +HELPDIRDEFINE configure.ac /^AC_SUBST(HELPDIRDEFINE)$/;" s +HELPFILE builtins/mkbuiltins.c /^#define HELPFILE /;" d file: +HELPFILES_TARGET builtins/Makefile.in /^HELPFILES_TARGET = @HELPFILES_TARGET@$/;" m +HELPFILES_TARGET configure.ac /^AC_SUBST(HELPFILES_TARGET)$/;" s +HELPINSTALL configure.ac /^AC_SUBST(HELPINSTALL)$/;" s +HELPSTRINGS builtins/Makefile.in /^HELPSTRINGS = @HELPSTRINGS@$/;" m +HELPSTRINGS configure.ac /^AC_SUBST(HELPSTRINGS)$/;" s +HELP_BUILTIN configure.ac /^AC_DEFINE(HELP_BUILTIN)$/;" d +HENV vendor/winapi/src/um/sqltypes.rs /^pub type HENV = *mut c_void;$/;" t +HEREDOC_MAX shell.h /^#define HEREDOC_MAX /;" d +HEREDOC_PIPESIZE redir.c /^# define HEREDOC_PIPESIZE /;" d file: +HEREDOC_PIPESIZE redir.c /^# define HEREDOC_PIPESIZE /;" d file: +HEREDOC_REDIRECT command.h /^#define HEREDOC_REDIRECT /;" d +HERE_EOF support/utshellbug.sh.in /^ cat << HERE_EOF$/;" h +HEXVALUE include/chartypes.h /^#define HEXVALUE(/;" d +HEXVALUE lib/readline/chardefs.h /^#define HEXVALUE(/;" d +HFILE vendor/winapi/src/shared/minwindef.rs /^pub type HFILE = c_int;$/;" t +HGDIOBJ vendor/winapi/src/shared/windef.rs /^pub type HGDIOBJ = *mut c_void;$/;" t +HGLOBAL vendor/winapi/src/shared/minwindef.rs /^pub type HGLOBAL = HANDLE;$/;" t +HIBYTE vendor/winapi/src/shared/minwindef.rs /^pub fn HIBYTE(l: WORD) -> BYTE {$/;" f +HIDDEN_FILE lib/readline/complete.c /^#define HIDDEN_FILE(/;" d file: +HIDP_PREPARSED_DATA vendor/winapi/src/shared/hidpi.rs /^pub enum HIDP_PREPARSED_DATA {}$/;" g +HIGH_FD_MAX general.h /^#define HIGH_FD_MAX /;" d +HIGN_EXPAND bashhist.c /^#define HIGN_EXPAND /;" d file: +HIGN_EXPAND r_bashhist/src/lib.rs /^macro_rules! HIGN_EXPAND {$/;" M +HIMAGELIST vendor/winapi/src/um/commctrl.rs /^pub type HIMAGELIST = *mut IMAGELIST;$/;" t +HIMAGELIST_QueryInterface vendor/winapi/src/um/commctrl.rs /^ pub fn HIMAGELIST_QueryInterface($/;" f +HINF vendor/winapi/src/um/setupapi.rs /^pub type HINF = PVOID;$/;" t +HINTERNET vendor/winapi/src/um/winhttp.rs /^pub type HINTERNET = LPVOID;$/;" t +HINTERNET vendor/winapi/src/um/wininet.rs /^pub type HINTERNET = LPVOID;$/;" t +HISTENT_BYTES lib/readline/history.h /^#define HISTENT_BYTES(/;" d +HISTEXPAND_DEFAULT bashhist.h /^# define HISTEXPAND_DEFAULT /;" d +HISTEXPAND_DEFAULT bashhist.h /^# define HISTEXPAND_DEFAULT /;" d +HISTEXPAND_DEFAULT config-top.h /^#define HISTEXPAND_DEFAULT /;" d +HISTOBJ lib/readline/Makefile.in /^HISTOBJ = history.o histexpand.o histfile.o histsearch.o shell.o savestring.o \\$/;" m +HISTORY config-bot.h /^# define HISTORY$/;" d +HISTORY configure.ac /^ AC_DEFINE(HISTORY)$/;" d +HISTORY_APPEND lib/readline/histlib.h /^#define HISTORY_APPEND /;" d +HISTORY_DEP Makefile.in /^HISTORY_DEP = @HISTORY_DEP@$/;" m +HISTORY_DEP configure.ac /^AC_SUBST(HISTORY_DEP)$/;" s +HISTORY_EVENT_DELIMITERS lib/readline/histexpand.c /^#define HISTORY_EVENT_DELIMITERS /;" d file: +HISTORY_FULL lib/readline/misc.c /^#define HISTORY_FULL(/;" d file: +HISTORY_LDFLAGS Makefile.in /^HISTORY_LDFLAGS = -L$(HIST_LIBDIR)$/;" m +HISTORY_LIB Makefile.in /^HISTORY_LIB = @HISTORY_LIB@$/;" m +HISTORY_LIB configure.ac /^AC_SUBST(HISTORY_LIB)$/;" s +HISTORY_LIBRARY Makefile.in /^HISTORY_LIBRARY = $(HIST_LIBDIR)\/libhistory.a$/;" m +HISTORY_OBJ Makefile.in /^HISTORY_OBJ = $(HIST_LIBDIR)\/history.o $(HIST_LIBDIR)\/histexpand.o \\$/;" m +HISTORY_OVERWRITE lib/readline/histlib.h /^#define HISTORY_OVERWRITE /;" d +HISTORY_QUOTE_CHARACTERS lib/readline/histexpand.c /^#define HISTORY_QUOTE_CHARACTERS /;" d file: +HISTORY_SOURCE Makefile.in /^HISTORY_SOURCE = $(HIST_LIBSRC)\/history.c $(HIST_LIBSRC)\/histexpand.c \\$/;" m +HISTORY_STATE lib/readline/history.h /^} HISTORY_STATE;$/;" t typeref:struct:_hist_state +HISTORY_STATE r_readline/src/lib.rs /^pub type HISTORY_STATE = _hist_state;$/;" t +HISTORY_WORD_DELIMITERS lib/readline/histexpand.c /^#define HISTORY_WORD_DELIMITERS /;" d file: +HISTSIZE_DEFAULT bashhist.c /^# define HISTSIZE_DEFAULT /;" d file: +HISTSIZE_DEFAULT r_bashhist/src/lib.rs /^macro_rules! HISTSIZE_DEFAULT {$/;" M +HIST_ABSSRC Makefile.in /^HIST_ABSSRC = ${topdir}\/$(HIST_LIBDIR)$/;" m +HIST_ENTRY builtins_rust/fc/src/lib.rs /^pub struct HIST_ENTRY {$/;" s +HIST_ENTRY builtins_rust/history/src/intercdep.rs /^pub type HIST_ENTRY = _hist_entry;$/;" t +HIST_ENTRY builtins_rust/rlet/src/intercdep.rs /^pub type HIST_ENTRY = _hist_entry;$/;" t +HIST_ENTRY lib/readline/history.h /^} HIST_ENTRY;$/;" t typeref:struct:_hist_entry +HIST_ENTRY r_bashhist/src/lib.rs /^pub type HIST_ENTRY = _hist_entry;$/;" t +HIST_ENTRY r_readline/src/lib.rs /^pub type HIST_ENTRY = _hist_entry;$/;" t +HIST_ERANGE builtins_rust/fc/src/lib.rs /^macro_rules! HIST_ERANGE {$/;" M +HIST_INVALID builtins_rust/fc/src/lib.rs /^macro_rules! HIST_INVALID {$/;" M +HIST_LIBDIR Makefile.in /^HIST_LIBDIR = @HIST_LIBDIR@$/;" m +HIST_LIBDIR configure.ac /^AC_SUBST(HIST_LIBDIR)$/;" s +HIST_LIBSRC Makefile.in /^HIST_LIBSRC = $(LIBSRC)\/readline$/;" m +HIST_NOTFOUND builtins_rust/fc/src/lib.rs /^macro_rules! HIST_NOTFOUND {$/;" M +HIST_TIMESTAMP_START lib/readline/histfile.c /^#define HIST_TIMESTAMP_START(/;" d file: +HIWORD vendor/winapi/src/shared/minwindef.rs /^pub fn HIWORD(l: DWORD) -> WORD {$/;" f +HLOCAL vendor/winapi/src/shared/minwindef.rs /^pub type HLOCAL = HANDLE;$/;" t +HMACHINE vendor/winapi/src/um/cfgmgr32.rs /^pub type HMACHINE = HANDLE;$/;" t +HMETAFILEPICT vendor/winapi/src/shared/wtypes.rs /^pub type HMETAFILEPICT = *mut c_void;$/;" t +HMODULE vendor/libloading/src/os/windows/mod.rs /^ pub(super) enum HMODULE {}$/;" g module:windows_imports +HMODULE vendor/winapi/src/shared/minwindef.rs /^pub type HMODULE = HINSTANCE;$/;" t +HN_FIRST builtins_rust/fc/src/lib.rs /^macro_rules! HN_FIRST {$/;" M +HN_LISTING builtins_rust/fc/src/lib.rs /^macro_rules! HN_LISTING {$/;" M +HOSTENT vendor/winapi/src/um/winsock2.rs /^pub type HOSTENT = hostent;$/;" t +HOSTTYPE conftypes.h /^# define HOSTTYPE /;" d +HOSTTYPE conftypes.h /^# define HOSTTYPE /;" d +HOSTTYPE conftypes.h /^# define HOSTTYPE /;" d +HPAINTBUFFER vendor/winapi/src/um/uxtheme.rs /^pub type HPAINTBUFFER = HANDLE;$/;" t +HPCON vendor/winapi/src/um/wincontypes.rs /^pub type HPCON = *mut c_void;$/;" t +HPOWERNOTIFY vendor/winapi/src/um/winuser.rs /^pub type HPOWERNOTIFY = PVOID;$/;" t +HPROPSHEETPAGE vendor/winapi/src/um/prsht.rs /^pub type HPROPSHEETPAGE = *mut PSP;$/;" t +HPUX_EXT lib/sh/strftime.c /^#define HPUX_EXT /;" d file: +HQUERY vendor/winapi/src/um/pdh.rs /^pub type HQUERY = PDH_HQUERY;$/;" t +HREFTYPE vendor/winapi/src/um/oaidl.rs /^pub type HREFTYPE = DWORD;$/;" t +HRESULT vendor/winapi/src/shared/ntdef.rs /^pub type HRESULT = c_long;$/;" t +HRESULT vendor/winapi/src/shared/winerror.rs /^pub type HRESULT = c_long;$/;" t +HRESULT vendor/winapi/src/um/commctrl.rs /^pub type HRESULT = c_long;$/;" t +HRESULT vendor/winapi/src/um/winnt.rs /^pub type HRESULT = c_long;$/;" t +HRESULT_CODE vendor/winapi/src/shared/winerror.rs /^pub fn HRESULT_CODE(hr: HRESULT) -> HRESULT {$/;" f +HRESULT_FACILITY vendor/winapi/src/shared/winerror.rs /^pub fn HRESULT_FACILITY(hr: HRESULT) -> HRESULT {$/;" f +HRESULT_FROM_NT vendor/winapi/src/shared/winerror.rs /^pub fn HRESULT_FROM_NT(x: c_ulong) -> HRESULT {$/;" f +HRESULT_FROM_WIN32 vendor/winapi/src/shared/winerror.rs /^pub fn HRESULT_FROM_WIN32(x: c_ulong) -> HRESULT {$/;" f +HRESULT_SEVERITY vendor/winapi/src/shared/winerror.rs /^pub fn HRESULT_SEVERITY(hr: HRESULT) -> HRESULT {$/;" f +HSOURCES Makefile.in /^HSOURCES = shell.h flags.h trap.h hashcmd.h hashlib.h jobs.h builtins.h \\$/;" m +HSOURCES lib/glob/Makefile.in /^HSOURCES = $(srcdir)\/strmatch.h$/;" m +HSOURCES lib/readline/Makefile.in /^HSOURCES = readline.h rldefs.h chardefs.h keymaps.h history.h histlib.h \\$/;" m +HSOURCES lib/sh/Makefile.in /^HSOURCES = $/;" m +HSOURCES lib/tilde/Makefile.in /^HSOURCES = $(srcdir)\/tilde.h$/;" m +HSPFILELOG vendor/winapi/src/um/setupapi.rs /^pub type HSPFILELOG = PVOID;$/;" t +HSPFILEQ vendor/winapi/src/um/setupapi.rs /^pub type HSPFILEQ = PVOID;$/;" t +HSTMT vendor/winapi/src/um/sqltypes.rs /^pub type HSTMT = *mut c_void;$/;" t +HSTRING_UserFree vendor/winapi/src/winrt/winstring.rs /^ pub fn HSTRING_UserFree($/;" f +HSTRING_UserFree64 vendor/winapi/src/winrt/winstring.rs /^ pub fn HSTRING_UserFree64($/;" f +HSTRING_UserMarshal vendor/winapi/src/winrt/winstring.rs /^ pub fn HSTRING_UserMarshal($/;" f +HSTRING_UserMarshal64 vendor/winapi/src/winrt/winstring.rs /^ pub fn HSTRING_UserMarshal64($/;" f +HSTRING_UserSize vendor/winapi/src/winrt/winstring.rs /^ pub fn HSTRING_UserSize($/;" f +HSTRING_UserSize64 vendor/winapi/src/winrt/winstring.rs /^ pub fn HSTRING_UserSize64($/;" f +HSTRING_UserUnmarshal vendor/winapi/src/winrt/winstring.rs /^ pub fn HSTRING_UserUnmarshal($/;" f +HSTRING_UserUnmarshal64 vendor/winapi/src/winrt/winstring.rs /^ pub fn HSTRING_UserUnmarshal64($/;" f +HS_STIFLED lib/readline/history.h /^#define HS_STIFLED /;" d +HTHEME vendor/winapi/src/um/uxtheme.rs /^pub type HTHEME = HANDLE;$/;" t +HTHUMBNAIL vendor/winapi/src/um/dwmapi.rs /^pub type HTHUMBNAIL = HANDLE;$/;" t +HTREEITEM vendor/winapi/src/um/commctrl.rs /^pub type HTREEITEM = *mut TREEITEM;$/;" t +HTTPAPI_EQUAL_VERSION vendor/winapi/src/um/http.rs /^pub fn HTTPAPI_EQUAL_VERSION(version: HTTPAPI_VERSION, major: USHORT, minor: USHORT) -> bool {$/;" f +HTTPAPI_GREATER_VERSION vendor/winapi/src/um/http.rs /^pub fn HTTPAPI_GREATER_VERSION(version: HTTPAPI_VERSION, major: USHORT, minor: USHORT) -> bool {$/;" f +HTTPAPI_LESS_VERSION vendor/winapi/src/um/http.rs /^pub fn HTTPAPI_LESS_VERSION(version: HTTPAPI_VERSION, major: USHORT, minor: USHORT) -> bool {$/;" f +HTTPAPI_VERSION_GREATER_OR_EQUAL vendor/winapi/src/um/http.rs /^pub fn HTTPAPI_VERSION_GREATER_OR_EQUAL($/;" f +HTTP_CONNECTION_ID vendor/winapi/src/um/http.rs /^pub type HTTP_CONNECTION_ID = HTTP_OPAQUE_ID;$/;" t +HTTP_EQUAL_VERSION vendor/winapi/src/um/http.rs /^pub fn HTTP_EQUAL_VERSION(version: HTTP_VERSION, major: USHORT, minor: USHORT) -> bool {$/;" f +HTTP_GREATER_EQUAL_VERSION vendor/winapi/src/um/http.rs /^pub fn HTTP_GREATER_EQUAL_VERSION(version: HTTP_VERSION, major: USHORT, minor: USHORT) -> bool {$/;" f +HTTP_GREATER_VERSION vendor/winapi/src/um/http.rs /^pub fn HTTP_GREATER_VERSION(version: HTTP_VERSION, major: USHORT, minor: USHORT) -> bool {$/;" f +HTTP_IS_NULL_ID vendor/winapi/src/um/http.rs /^pub unsafe fn HTTP_IS_NULL_ID(pid: PHTTP_OPAQUE_ID) -> bool {$/;" f +HTTP_LESS_EQUAL_VERSION vendor/winapi/src/um/http.rs /^pub fn HTTP_LESS_EQUAL_VERSION(version: HTTP_VERSION, major: USHORT, minor: USHORT) -> bool {$/;" f +HTTP_LESS_VERSION vendor/winapi/src/um/http.rs /^pub fn HTTP_LESS_VERSION(version: HTTP_VERSION, major: USHORT, minor: USHORT) -> bool {$/;" f +HTTP_NOT_EQUAL_VERSION vendor/winapi/src/um/http.rs /^pub fn HTTP_NOT_EQUAL_VERSION(version: HTTP_VERSION, major: USHORT, minor: USHORT) -> bool {$/;" f +HTTP_OPAQUE_ID vendor/winapi/src/um/http.rs /^pub type HTTP_OPAQUE_ID = ULONGLONG;$/;" t +HTTP_RAW_CONNECTION_ID vendor/winapi/src/um/http.rs /^pub type HTTP_RAW_CONNECTION_ID = HTTP_OPAQUE_ID;$/;" t +HTTP_REQUEST vendor/winapi/src/um/http.rs /^pub type HTTP_REQUEST = HTTP_REQUEST_V2;$/;" t +HTTP_REQUEST_ID vendor/winapi/src/um/http.rs /^pub type HTTP_REQUEST_ID = HTTP_OPAQUE_ID;$/;" t +HTTP_RESPONSE vendor/winapi/src/um/http.rs /^pub type HTTP_RESPONSE = HTTP_RESPONSE_V2;$/;" t +HTTP_SERVER_SESSION_ID vendor/winapi/src/um/http.rs /^pub type HTTP_SERVER_SESSION_ID = HTTP_OPAQUE_ID;$/;" t +HTTP_SERVICE_CONFIG_CACHE_PARAM vendor/winapi/src/um/http.rs /^pub type HTTP_SERVICE_CONFIG_CACHE_PARAM = ULONG;$/;" t +HTTP_SERVICE_CONFIG_TIMEOUT_PARAM vendor/winapi/src/um/http.rs /^pub type HTTP_SERVICE_CONFIG_TIMEOUT_PARAM = USHORT;$/;" t +HTTP_SET_NULL_ID vendor/winapi/src/um/http.rs /^pub unsafe fn HTTP_SET_NULL_ID(pid: PHTTP_OPAQUE_ID) {$/;" f +HTTP_SET_VERSION vendor/winapi/src/um/http.rs /^pub fn HTTP_SET_VERSION(mut version: HTTP_VERSION, major: USHORT, minor: USHORT) {$/;" f +HTTP_URL_CONTEXT vendor/winapi/src/um/http.rs /^pub type HTTP_URL_CONTEXT = ULONGLONG;$/;" t +HTTP_URL_GROUP_ID vendor/winapi/src/um/http.rs /^pub type HTTP_URL_GROUP_ID = HTTP_OPAQUE_ID;$/;" t +HUGE_STR_MAX support/man2html.c /^#define HUGE_STR_MAX /;" d file: +HUGE_VAL lib/sh/strtod.c /^# define HUGE_VAL /;" d file: +HasIterator vendor/quote/src/runtime.rs /^impl BitOr for HasIterator {$/;" c +HasIterator vendor/quote/src/runtime.rs /^impl BitOr for HasIterator {$/;" c +HasIterator vendor/quote/src/runtime.rs /^pub struct HasIterator; \/\/ True$/;" s +HasMutPat vendor/async-trait/src/receiver.rs /^impl VisitMut for HasMutPat {$/;" c +HasMutPat vendor/async-trait/src/receiver.rs /^struct HasMutPat(Option);$/;" s +HasSelf vendor/async-trait/src/receiver.rs /^impl VisitMut for HasSelf {$/;" c +HasSelf vendor/async-trait/src/receiver.rs /^struct HasSelf(bool);$/;" s +Hash vendor/memchr/src/memmem/rabinkarp.rs /^impl Hash {$/;" c +Hash vendor/memchr/src/memmem/rabinkarp.rs /^pub(crate) struct Hash(u32);$/;" s +HashCmd builtins_rust/exec_cmd/src/lib.rs /^ HashCmd,$/;" e enum:CMDType +HashComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for HashComand {$/;" c +HashComand builtins_rust/exec_cmd/src/lib.rs /^struct HashComand;$/;" s +HashTable builtins_rust/alias/src/lib.rs /^pub type HashTable = hash_table;$/;" t +Header vendor/winapi/build.rs /^struct Header {$/;" s +Heap vendor/once_cell/tests/it.rs /^ impl Heap {$/;" c module:race_once_box +Heap vendor/once_cell/tests/it.rs /^ struct Heap {$/;" s module:race_once_box +Heap vendor/smallvec/src/lib.rs /^ Heap((*mut A::Item, usize)),$/;" e enum:SmallVecData +Heap vendor/tinystr/src/tinystrauto.rs /^ Heap(String),$/;" e enum:TinyStrAuto +Heap32First vendor/winapi/src/um/tlhelp32.rs /^ pub fn Heap32First($/;" f +Heap32ListFirst vendor/winapi/src/um/tlhelp32.rs /^ pub fn Heap32ListFirst($/;" f +Heap32ListNext vendor/winapi/src/um/tlhelp32.rs /^ pub fn Heap32ListNext($/;" f +Heap32Next vendor/winapi/src/um/tlhelp32.rs /^ pub fn Heap32Next($/;" f +HeapAlloc vendor/winapi/src/um/heapapi.rs /^ pub fn HeapAlloc($/;" f +HeapCompact vendor/winapi/src/um/heapapi.rs /^ pub fn HeapCompact($/;" f +HeapCreate vendor/winapi/src/um/heapapi.rs /^ pub fn HeapCreate($/;" f +HeapDestroy vendor/winapi/src/um/heapapi.rs /^ pub fn HeapDestroy($/;" f +HeapFree vendor/winapi/src/um/heapapi.rs /^ pub fn HeapFree($/;" f +HeapLock vendor/winapi/src/um/heapapi.rs /^ pub fn HeapLock($/;" f +HeapQueryInformation vendor/winapi/src/um/heapapi.rs /^ pub fn HeapQueryInformation($/;" f +HeapReAlloc vendor/winapi/src/um/heapapi.rs /^ pub fn HeapReAlloc($/;" f +HeapSetInformation vendor/winapi/src/um/heapapi.rs /^ pub fn HeapSetInformation($/;" f +HeapSize vendor/winapi/src/um/heapapi.rs /^ pub fn HeapSize($/;" f +HeapSummary vendor/winapi/src/um/heapapi.rs /^ pub fn HeapSummary($/;" f +HeapUnlock vendor/winapi/src/um/heapapi.rs /^ pub fn HeapUnlock($/;" f +HeapValidate vendor/winapi/src/um/heapapi.rs /^ pub fn HeapValidate($/;" f +HeapWalk vendor/winapi/src/um/heapapi.rs /^ pub fn HeapWalk($/;" f +HelpCmd builtins_rust/exec_cmd/src/lib.rs /^ HelpCmd,$/;" e enum:CMDType +HelpComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for HelpComand {$/;" c +HelpComand builtins_rust/exec_cmd/src/lib.rs /^struct HelpComand;$/;" s +HidD_FlushQueue vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_FlushQueue($/;" f +HidD_FreePreparsedData vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_FreePreparsedData($/;" f +HidD_GetAttributes vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetAttributes($/;" f +HidD_GetConfiguration vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetConfiguration($/;" f +HidD_GetFeature vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetFeature($/;" f +HidD_GetHidGuid vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetHidGuid($/;" f +HidD_GetIndexedString vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetIndexedString($/;" f +HidD_GetInputReport vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetInputReport($/;" f +HidD_GetManufacturerString vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetManufacturerString($/;" f +HidD_GetMsGenreDescriptor vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetMsGenreDescriptor($/;" f +HidD_GetNumInputBuffers vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetNumInputBuffers($/;" f +HidD_GetPhysicalDescriptor vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetPhysicalDescriptor($/;" f +HidD_GetPreparsedData vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetPreparsedData($/;" f +HidD_GetProductString vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetProductString($/;" f +HidD_GetSerialNumberString vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_GetSerialNumberString($/;" f +HidD_SetConfiguration vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_SetConfiguration($/;" f +HidD_SetFeature vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_SetFeature($/;" f +HidD_SetNumInputBuffers vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_SetNumInputBuffers($/;" f +HidD_SetOutputReport vendor/winapi/src/shared/hidsdi.rs /^ pub fn HidD_SetOutputReport($/;" f +HidP_GetButtonCaps vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetButtonCaps($/;" f +HidP_GetCaps vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetCaps($/;" f +HidP_GetData vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetData($/;" f +HidP_GetExtendedAttributes vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetExtendedAttributes($/;" f +HidP_GetLinkCollectionNodes vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetLinkCollectionNodes($/;" f +HidP_GetScaledUsageValue vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetScaledUsageValue($/;" f +HidP_GetSpecificButtonCaps vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetSpecificButtonCaps($/;" f +HidP_GetSpecificValueCaps vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetSpecificValueCaps($/;" f +HidP_GetUsageValue vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetUsageValue($/;" f +HidP_GetUsageValueArray vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetUsageValueArray($/;" f +HidP_GetUsages vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetUsages($/;" f +HidP_GetUsagesEx vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetUsagesEx($/;" f +HidP_GetValueCaps vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_GetValueCaps($/;" f +HidP_InitializeReportForID vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_InitializeReportForID($/;" f +HidP_MaxDataListLength vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_MaxDataListLength($/;" f +HidP_MaxUsageListLength vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_MaxUsageListLength($/;" f +HidP_SetData vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_SetData($/;" f +HidP_SetScaledUsageValue vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_SetScaledUsageValue($/;" f +HidP_SetUsageValue vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_SetUsageValue($/;" f +HidP_SetUsageValueArray vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_SetUsageValueArray($/;" f +HidP_SetUsages vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_SetUsages($/;" f +HidP_TranslateUsagesToI8042ScanCodes vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_TranslateUsagesToI8042ScanCodes($/;" f +HidP_UnsetUsages vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_UnsetUsages($/;" f +HidP_UsageListDifference vendor/winapi/src/shared/hidpi.rs /^ pub fn HidP_UsageListDifference($/;" f +HideCaret vendor/winapi/src/um/winuser.rs /^ pub fn HideCaret($/;" f +Highlights vendor/stdext/README.md /^## Highlights$/;" s chapter:`std` extensions +HiliteMenuItem vendor/winapi/src/um/winuser.rs /^ pub fn HiliteMenuItem($/;" f +HistoryCmd builtins_rust/exec_cmd/src/lib.rs /^ HistoryCmd,$/;" e enum:CMDType +HistoryComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for HistoryComand {$/;" c +HistoryComand builtins_rust/exec_cmd/src/lib.rs /^struct HistoryComand;$/;" s +HitTestThemeBackground vendor/winapi/src/um/uxtheme.rs /^ pub fn HitTestThemeBackground($/;" f +How do I create an instance of a union? vendor/winapi/README.md /^### How do I create an instance of a union?$/;" S section:winapi-rs""Frequently asked questions +How do I know which module an item is defined in? vendor/winapi/README.md /^### How do I know which module an item is defined in?$/;" S section:winapi-rs""Frequently asked questions +How to update your code to use associated constants vendor/bitflags/CHANGELOG.md /^## How to update your code to use associated constants$/;" s chapter:1.0.0 +HttpAddFragmentToCache vendor/winapi/src/um/http.rs /^ pub fn HttpAddFragmentToCache($/;" f +HttpAddRequestHeadersA vendor/winapi/src/um/wininet.rs /^ pub fn HttpAddRequestHeadersA($/;" f +HttpAddRequestHeadersW vendor/winapi/src/um/wininet.rs /^ pub fn HttpAddRequestHeadersW($/;" f +HttpAddUrl vendor/winapi/src/um/http.rs /^ pub fn HttpAddUrl($/;" f +HttpAddUrlToUrlGroup vendor/winapi/src/um/http.rs /^ pub fn HttpAddUrlToUrlGroup($/;" f +HttpCancelHttpRequest vendor/winapi/src/um/http.rs /^ pub fn HttpCancelHttpRequest($/;" f +HttpCloseRequestQueue vendor/winapi/src/um/http.rs /^ pub fn HttpCloseRequestQueue($/;" f +HttpCloseServerSession vendor/winapi/src/um/http.rs /^ pub fn HttpCloseServerSession($/;" f +HttpCloseUrlGroup vendor/winapi/src/um/http.rs /^ pub fn HttpCloseUrlGroup($/;" f +HttpCreateHttpHandle vendor/winapi/src/um/http.rs /^ pub fn HttpCreateHttpHandle($/;" f +HttpCreateRequestQueue vendor/winapi/src/um/http.rs /^ pub fn HttpCreateRequestQueue($/;" f +HttpCreateServerSession vendor/winapi/src/um/http.rs /^ pub fn HttpCreateServerSession($/;" f +HttpCreateUrlGroup vendor/winapi/src/um/http.rs /^ pub fn HttpCreateUrlGroup($/;" f +HttpDeclarePush vendor/winapi/src/um/http.rs /^ pub fn HttpDeclarePush($/;" f +HttpDeleteServiceConfiguration vendor/winapi/src/um/http.rs /^ pub fn HttpDeleteServiceConfiguration($/;" f +HttpEndRequestA vendor/winapi/src/um/wininet.rs /^ pub fn HttpEndRequestA($/;" f +HttpEndRequestW vendor/winapi/src/um/wininet.rs /^ pub fn HttpEndRequestW($/;" f +HttpFlushResponseCache vendor/winapi/src/um/http.rs /^ pub fn HttpFlushResponseCache($/;" f +HttpFreeFunction vendor/libc/src/psp.rs /^pub type HttpFreeFunction = ::Option;$/;" t +HttpInitialize vendor/winapi/src/um/http.rs /^ pub fn HttpInitialize($/;" f +HttpMallocFunction vendor/libc/src/psp.rs /^pub type HttpMallocFunction = ::Option *mut c_void>;$/;" t +HttpOpenRequestA vendor/winapi/src/um/wininet.rs /^ pub fn HttpOpenRequestA($/;" f +HttpOpenRequestW vendor/winapi/src/um/wininet.rs /^ pub fn HttpOpenRequestW($/;" f +HttpPasswordCB vendor/libc/src/psp.rs /^pub type HttpPasswordCB = ::Option<$/;" t +HttpPrepareUrl vendor/winapi/src/um/http.rs /^ pub fn HttpPrepareUrl($/;" f +HttpQueryInfoA vendor/winapi/src/um/wininet.rs /^ pub fn HttpQueryInfoA($/;" f +HttpQueryInfoW vendor/winapi/src/um/wininet.rs /^ pub fn HttpQueryInfoW($/;" f +HttpQueryRequestQueueProperty vendor/winapi/src/um/http.rs /^ pub fn HttpQueryRequestQueueProperty($/;" f +HttpQueryServerSessionProperty vendor/winapi/src/um/http.rs /^ pub fn HttpQueryServerSessionProperty($/;" f +HttpQueryServiceConfiguration vendor/winapi/src/um/http.rs /^ pub fn HttpQueryServiceConfiguration($/;" f +HttpQueryUrlGroupProperty vendor/winapi/src/um/http.rs /^ pub fn HttpQueryUrlGroupProperty($/;" f +HttpReadFragmentFromCache vendor/winapi/src/um/http.rs /^ pub fn HttpReadFragmentFromCache($/;" f +HttpReallocFunction vendor/libc/src/psp.rs /^pub type HttpReallocFunction =$/;" t +HttpReceiveClientCertificate vendor/winapi/src/um/http.rs /^ pub fn HttpReceiveClientCertificate($/;" f +HttpReceiveHttpRequest vendor/winapi/src/um/http.rs /^ pub fn HttpReceiveHttpRequest($/;" f +HttpReceiveRequestEntityBody vendor/winapi/src/um/http.rs /^ pub fn HttpReceiveRequestEntityBody($/;" f +HttpRemoveUrl vendor/winapi/src/um/http.rs /^ pub fn HttpRemoveUrl($/;" f +HttpRemoveUrlFromUrlGroup vendor/winapi/src/um/http.rs /^ pub fn HttpRemoveUrlFromUrlGroup($/;" f +HttpSendHttpResponse vendor/winapi/src/um/http.rs /^ pub fn HttpSendHttpResponse($/;" f +HttpSendRequestA vendor/winapi/src/um/wininet.rs /^ pub fn HttpSendRequestA($/;" f +HttpSendRequestExA vendor/winapi/src/um/wininet.rs /^ pub fn HttpSendRequestExA($/;" f +HttpSendRequestExW vendor/winapi/src/um/wininet.rs /^ pub fn HttpSendRequestExW($/;" f +HttpSendRequestW vendor/winapi/src/um/wininet.rs /^ pub fn HttpSendRequestW($/;" f +HttpSendResponseEntityBody vendor/winapi/src/um/http.rs /^ pub fn HttpSendResponseEntityBody($/;" f +HttpSetRequestQueueProperty vendor/winapi/src/um/http.rs /^ pub fn HttpSetRequestQueueProperty($/;" f +HttpSetServerSessionProperty vendor/winapi/src/um/http.rs /^ pub fn HttpSetServerSessionProperty($/;" f +HttpSetServiceConfiguration vendor/winapi/src/um/http.rs /^ pub fn HttpSetServiceConfiguration($/;" f +HttpSetUrlGroupProperty vendor/winapi/src/um/http.rs /^ pub fn HttpSetUrlGroupProperty($/;" f +HttpShutdownRequestQueue vendor/winapi/src/um/http.rs /^ pub fn HttpShutdownRequestQueue($/;" f +HttpTerminate vendor/winapi/src/um/http.rs /^ pub fn HttpTerminate($/;" f +HttpUpdateServiceConfiguration vendor/winapi/src/um/http.rs /^ pub fn HttpUpdateServiceConfiguration($/;" f +HttpWaitForDemandStart vendor/winapi/src/um/http.rs /^ pub fn HttpWaitForDemandStart($/;" f +HttpWaitForDisconnect vendor/winapi/src/um/http.rs /^ pub fn HttpWaitForDisconnect($/;" f +HttpWaitForDisconnectEx vendor/winapi/src/um/http.rs /^ pub fn HttpWaitForDisconnectEx($/;" f +Hygiene vendor/quote/README.md /^## Hygiene$/;" s chapter:Rust Quasi-Quoting +Hylink vendor/nix/src/sys/socket/addr.rs /^ Hylink = libc::AF_HYLINK,$/;" e enum:AddressFamily +I vendor/syn/src/punctuated.rs /^impl<'a, T, I> IterMutTrait<'a, T> for I$/;" c +I vendor/syn/src/punctuated.rs /^impl<'a, T, I> IterTrait<'a, T> for I$/;" c +ICMPV6_ECHO_REPLY vendor/winapi/src/um/ipexport.rs /^pub type ICMPV6_ECHO_REPLY = ICMPV6_ECHO_REPLY_LH;$/;" t +ID lib/intl/Makefile.in /^ID: $(HEADERS) $(SOURCES)$/;" t +ID vendor/autocfg/src/lib.rs /^ static ID: AtomicUsize = ATOMIC_USIZE_INIT;$/;" v method:AutoCfg::probe +ID3D10Include vendor/winapi/src/um/d3d10shader.rs /^pub type ID3D10Include = ID3DInclude;$/;" t +ID3DBlob vendor/winapi/src/um/d3dcommon.rs /^pub type ID3DBlob = ID3D10Blob;$/;" t +IDWriteGeometrySink vendor/winapi/src/um/dwrite.rs /^pub type IDWriteGeometrySink = ID2D1SimplifiedGeometrySink;$/;" t +IFTYPE vendor/winapi/src/shared/ipifcons.rs /^pub type IFTYPE = ULONG;$/;" t +IF_COM builtins_rust/kill/src/intercdep.rs /^pub type IF_COM = if_com;$/;" t +IF_COM builtins_rust/setattr/src/intercdep.rs /^pub type IF_COM = if_com;$/;" t +IF_COM command.h /^} IF_COM;$/;" t typeref:struct:if_com +IF_COM r_bash/src/lib.rs /^pub type IF_COM = if_com;$/;" t +IF_COM r_glob/src/lib.rs /^pub type IF_COM = if_com;$/;" t +IF_COM r_readline/src/lib.rs /^pub type IF_COM = if_com;$/;" t +IF_COUNTED_STRING vendor/winapi/src/shared/ifdef.rs /^pub type IF_COUNTED_STRING = IF_COUNTED_STRING_LH;$/;" t +IF_INDEX vendor/winapi/src/shared/ifdef.rs /^pub type IF_INDEX = NET_IFINDEX;$/;" t +IF_LUID vendor/winapi/src/shared/ifdef.rs /^pub type IF_LUID = NET_LUID;$/;" t +IF_PHYSICAL_ADDRESS vendor/winapi/src/shared/ifdef.rs /^pub type IF_PHYSICAL_ADDRESS = IF_PHYSICAL_ADDRESS_LH;$/;" t +IFileOperationProgressSink vendor/winapi/src/um/shobjidl.rs /^pub type IFileOperationProgressSink = IUnknown; \/\/ TODO$/;" t +IGNORE_SIG r_jobs/src/lib.rs /^macro_rules! IGNORE_SIG {$/;" M +IGNORE_SIG trap.h /^#define IGNORE_SIG /;" d +IID vendor/winapi/src/shared/guiddef.rs /^pub type IID = GUID;$/;" t +IIDFromString vendor/winapi/src/um/combaseapi.rs /^ pub fn IIDFromString($/;" f +IImageListToHIMAGELIST vendor/winapi/src/um/commctrl.rs /^pub fn IImageListToHIMAGELIST(himl: *mut IImageList) -> HIMAGELIST {$/;" f +IMAGELIST vendor/winapi/src/um/commctrl.rs /^pub enum IMAGELIST {}$/;" g +IMAGE_IA64_RUNTIME_FUNCTION_ENTRY vendor/winapi/src/um/winnt.rs /^pub type IMAGE_IA64_RUNTIME_FUNCTION_ENTRY = _IMAGE_RUNTIME_FUNCTION_ENTRY;$/;" t +IMAGE_ORDINAL32 vendor/winapi/src/um/winnt.rs /^pub fn IMAGE_ORDINAL32(Ordinal: DWORD) -> DWORD {$/;" f +IMAGE_ORDINAL64 vendor/winapi/src/um/winnt.rs /^pub fn IMAGE_ORDINAL64(Ordinal: ULONGLONG) -> ULONGLONG {$/;" f +IMAGE_SNAP_BY_ORDINAL32 vendor/winapi/src/um/winnt.rs /^pub fn IMAGE_SNAP_BY_ORDINAL32(Ordinal: DWORD) -> bool {$/;" f +IMAGE_SNAP_BY_ORDINAL64 vendor/winapi/src/um/winnt.rs /^pub fn IMAGE_SNAP_BY_ORDINAL64(Ordinal: ULONGLONG) -> bool {$/;" f +IMPOSSIBLE_TRAP_HANDLER r_jobs/src/lib.rs /^macro_rules! IMPOSSIBLE_TRAP_HANDLER {$/;" M +IMPOSSIBLE_TRAP_HANDLER trap.h /^#define IMPOSSIBLE_TRAP_HANDLER /;" d +IN4ADDR_ISANY vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4ADDR_ISANY(a: &SOCKADDR_IN) -> bool {$/;" f +IN4ADDR_ISLOOPBACK vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4ADDR_ISLOOPBACK(a: &SOCKADDR_IN) -> bool {$/;" f +IN4_ADDR_EQUAL vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_ADDR_EQUAL(a: &IN_ADDR, b: &IN_ADDR) -> bool {$/;" f +IN4_CLASSA vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_CLASSA(i: LONG) -> bool {$/;" f +IN4_CLASSB vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_CLASSB(i: LONG) -> bool {$/;" f +IN4_CLASSC vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_CLASSC(i: LONG) -> bool {$/;" f +IN4_CLASSD vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_CLASSD(i: LONG) -> bool {$/;" f +IN4_IS_ADDR_BROADCAST vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_ADDR_BROADCAST(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_ADDR_LINKLOCAL vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_ADDR_LINKLOCAL(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_ADDR_LOOPBACK vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_ADDR_LOOPBACK(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_ADDR_MC_ADMINLOCAL vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_ADDR_MC_ADMINLOCAL(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_ADDR_MC_LINKLOCAL vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_ADDR_MC_LINKLOCAL(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_ADDR_MC_SITELOCAL vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_ADDR_MC_SITELOCAL(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_ADDR_MULTICAST vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_ADDR_MULTICAST(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_ADDR_RFC1918 vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_ADDR_RFC1918(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_ADDR_SITELOCAL vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_ADDR_SITELOCAL(_: &IN_ADDR) -> bool {$/;" f +IN4_IS_ADDR_UNSPECIFIED vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_ADDR_UNSPECIFIED(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_UNALIGNED_ADDR_BROADCAST vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_UNALIGNED_ADDR_BROADCAST(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_UNALIGNED_ADDR_LINKLOCAL vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_UNALIGNED_ADDR_LINKLOCAL(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_UNALIGNED_ADDR_LOOPBACK vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_UNALIGNED_ADDR_LOOPBACK(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_UNALIGNED_ADDR_MULTICAST vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_UNALIGNED_ADDR_MULTICAST(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_UNALIGNED_ADDR_RFC1918 vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_UNALIGNED_ADDR_RFC1918(a: &IN_ADDR) -> bool {$/;" f +IN4_IS_UNALIGNED_ADDR_SITELOCAL vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_UNALIGNED_ADDR_SITELOCAL(_: &IN_ADDR) -> bool {$/;" f +IN4_IS_UNALIGNED_ADDR_UNSPECIFIED vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_IS_UNALIGNED_ADDR_UNSPECIFIED(a: &IN_ADDR) -> bool {$/;" f +IN4_MULTICAST vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_MULTICAST(i: LONG) -> bool {$/;" f +IN4_UNALIGNED_ADDR_EQUAL vendor/winapi/src/shared/mstcpip.rs /^pub fn IN4_UNALIGNED_ADDR_EQUAL(a: &IN_ADDR, b: &IN_ADDR) -> bool {$/;" f +IN6_ADDR vendor/winapi/src/shared/in6addr.rs /^pub type IN6_ADDR = in6_addr;$/;" t +INADDR_NONE lib/sh/inet_aton.c /^# define INADDR_NONE /;" d file: +INCLUDES Makefile.in /^INCLUDES = -I. @RL_INCLUDE@ -I$(srcdir) -I$(BASHINCDIR) -I$(LIBSRC) $(INTL_INC)$/;" m +INCLUDES builtins/Makefile.in /^INCLUDES = -I. -I.. @RL_INCLUDE@ -I$(topdir) -I$(BASHINCDIR) -I$(topdir)\/lib -I$(srcdir) ${INTL/;" m +INCLUDES lib/glob/Makefile.in /^INCLUDES = -I. -I..\/.. -I$(topdir) -I$(BASHINCDIR) -I$(topdir)\/lib$/;" m +INCLUDES lib/intl/Makefile.in /^INCLUDES = -I. -I$(srcdir) -I${top_builddir} -I${top_srcdir}$/;" m +INCLUDES lib/malloc/Makefile.in /^INCLUDES = -I. -I..\/.. -I$(topdir) -I$(BASHINCDIR) -I$(topdir)\/lib $(INTL_INC)$/;" m +INCLUDES lib/readline/Makefile.in /^INCLUDES = -I. -I$(BUILD_DIR) -I$(topdir) -I$(topdir)\/lib$/;" m +INCLUDES lib/sh/Makefile.in /^INCLUDES = -I. -I..\/.. -I$(topdir) -I$(topdir)\/lib -I$(BASHINCDIR) -I$(srcdir) $(INTL_INC)$/;" m +INCLUDES lib/termcap/Makefile.in /^INCLUDES = -I. -I..\/.. -I$(topdir) -I$(topdir)\/lib -I$(srcdir)$/;" m +INCLUDES lib/tilde/Makefile.in /^INCLUDES = -I. -I..\/.. -I$(topdir) -I${BASHINCDIR} -I$(topdir)\/lib$/;" m +INCLUDES support/Makefile.in /^INCLUDES = -I${BUILD_DIR} -I${topdir}$/;" m +INCL_DOS lib/intl/localcharset.c /^# define INCL_DOS$/;" d file: +INCL_DOSPROCESS lib/readline/readline.c /^# define INCL_DOSPROCESS$/;" d file: +INCL_DOSPROCESS lib/readline/text.c /^# define INCL_DOSPROCESS$/;" d file: +INCREF vendor/winapi/src/um/winnt.rs /^pub fn INCREF(x: WORD) -> WORD {$/;" f +INCREMENT_POS lib/readline/vi_mode.c /^#define INCREMENT_POS(/;" d file: +INDEXFILE support/man2html.c /^#define INDEXFILE /;" d file: +INDEXTOOVERLAYMASK vendor/winapi/src/um/commctrl.rs /^pub fn INDEXTOOVERLAYMASK(i: UINT) -> UINT {$/;" f +INDEXTOSTATEIMAGEMASK vendor/winapi/src/um/commctrl.rs /^pub fn INDEXTOSTATEIMAGEMASK(i: UINT) -> UINT {$/;" f +INDEX_ERROR arrayfunc.c /^#define INDEX_ERROR(/;" d file: +INET_PORT_RESERVATION vendor/winapi/src/shared/mstcpip.rs /^pub type INET_PORT_RESERVATION = INET_PORT_RANGE;$/;" t +INHERIT_FLAGS vendor/winapi/src/um/accctrl.rs /^pub type INHERIT_FLAGS = ULONG;$/;" t +INIT vendor/proc-macro2/src/detection.rs /^static INIT: Once = Once::new();$/;" v +INITIALIZE_MBSTATE include/shmbutil.h /^# define INITIALIZE_MBSTATE /;" d +INITIALIZE_MBSTATE include/shmbutil.h /^# define INITIALIZE_MBSTATE$/;" d +INITIALWORD builtins_rust/complete/src/lib.rs /^unsafe fn INITIALWORD() -> *const c_char {$/;" f +INITIALWORD pcomplete.h /^#define INITIALWORD /;" d +INITIAL_BLOCK_SIZE lib/intl/dcigettext.c /^# define INITIAL_BLOCK_SIZE /;" d file: +INIT_DYNAMIC_ARRAY_VAR variables.c /^#define INIT_DYNAMIC_ARRAY_VAR(/;" d file: +INIT_DYNAMIC_ASSOC_VAR variables.c /^#define INIT_DYNAMIC_ASSOC_VAR(/;" d file: +INIT_DYNAMIC_VAR variables.c /^#define INIT_DYNAMIC_VAR(/;" d file: +INIT_GERMANIC_PLURAL lib/intl/plural-exp.c /^# define INIT_GERMANIC_PLURAL(/;" d file: +INIT_ONCE vendor/winapi/src/um/synchapi.rs /^pub type INIT_ONCE = RTL_RUN_ONCE;$/;" t +INLINE include/stdc.h /^# define INLINE /;" d +INLINE include/stdc.h /^# define INLINE$/;" d +INPUT_LINE support/texi2html /^INPUT_LINE: while ($_ = &next_line) {$/;" l +INPUT_REDIRECT command.h /^#define INPUT_REDIRECT(/;" d +INPUT_STREAM input.h /^} INPUT_STREAM;$/;" t typeref:union:__anon9f26d24b010a +INSTALL Makefile.in /^INSTALL = @INSTALL@$/;" m +INSTALL builtins/Makefile.in /^INSTALL = @INSTALL@$/;" m +INSTALL lib/glob/Makefile.in /^INSTALL = @INSTALL@$/;" m +INSTALL lib/intl/Makefile.in /^INSTALL = @INSTALL@$/;" m +INSTALL lib/malloc/Makefile.in /^INSTALL = @INSTALL@$/;" m +INSTALL lib/readline/Makefile.in /^INSTALL = @INSTALL@$/;" m +INSTALL lib/sh/Makefile.in /^INSTALL = @INSTALL@$/;" m +INSTALL lib/termcap/Makefile.in /^INSTALL = @INSTALL@$/;" m +INSTALL lib/tilde/Makefile.in /^INSTALL = @INSTALL@$/;" m +INSTALLED_BUILTINS_HEADERS Makefile.in /^INSTALLED_BUILTINS_HEADERS = bashgetopt.h common.h getopt.h$/;" m +INSTALLED_HEADERS Makefile.in /^INSTALLED_HEADERS = shell.h bashjmp.h command.h syntax.h general.h error.h \\$/;" m +INSTALLED_HEADERS lib/readline/Makefile.in /^INSTALLED_HEADERS = readline.h chardefs.h keymaps.h history.h tilde.h \\$/;" m +INSTALLED_INCFILES Makefile.in /^INSTALLED_INCFILES = posixstat.h ansi_stdlib.h filecntl.h posixdir.h \\$/;" m +INSTALLMODE Makefile.in /^INSTALLMODE= -m 0755$/;" m +INSTALLMODE2 Makefile.in /^INSTALLMODE2 = -m 0555$/;" m +INSTALL_DATA Makefile.in /^INSTALL_DATA = @INSTALL_DATA@$/;" m +INSTALL_DATA builtins/Makefile.in /^INSTALL_DATA = @INSTALL_DATA@$/;" m +INSTALL_DATA lib/glob/Makefile.in /^INSTALL_DATA = @INSTALL_DATA@$/;" m +INSTALL_DATA lib/intl/Makefile.in /^INSTALL_DATA = @INSTALL_DATA@$/;" m +INSTALL_DATA lib/malloc/Makefile.in /^INSTALL_DATA = @INSTALL_DATA@$/;" m +INSTALL_DATA lib/readline/Makefile.in /^INSTALL_DATA = @INSTALL_DATA@$/;" m +INSTALL_DATA lib/sh/Makefile.in /^INSTALL_DATA = @INSTALL_DATA@$/;" m +INSTALL_DATA lib/termcap/Makefile.in /^INSTALL_DATA = @INSTALL_DATA@$/;" m +INSTALL_DATA lib/tilde/Makefile.in /^INSTALL_DATA = @INSTALL_DATA@$/;" m +INSTALL_DEBUG_MODE shell.c /^#define INSTALL_DEBUG_MODE$/;" d file: +INSTALL_PROGRAM Makefile.in /^INSTALL_PROGRAM = @INSTALL_PROGRAM@$/;" m +INSTALL_PROGRAM lib/glob/Makefile.in /^INSTALL_PROGRAM = @INSTALL_PROGRAM@$/;" m +INSTALL_PROGRAM lib/malloc/Makefile.in /^INSTALL_PROGRAM = @INSTALL_PROGRAM@$/;" m +INSTALL_PROGRAM lib/readline/Makefile.in /^INSTALL_PROGRAM = @INSTALL_PROGRAM@$/;" m +INSTALL_PROGRAM lib/sh/Makefile.in /^INSTALL_PROGRAM = @INSTALL_PROGRAM@$/;" m +INSTALL_PROGRAM lib/termcap/Makefile.in /^INSTALL_PROGRAM = @INSTALL_PROGRAM@$/;" m +INSTALL_PROGRAM lib/tilde/Makefile.in /^INSTALL_PROGRAM = @INSTALL_PROGRAM@$/;" m +INSTALL_SCRIPT Makefile.in /^INSTALL_SCRIPT = @INSTALL_SCRIPT@$/;" m +INSTANCE vendor/once_cell/examples/lazy_static.rs /^ static INSTANCE: OnceCell> = OnceCell::new();$/;" v function:hashmap +INT lib/glob/glob.c /^#define INT /;" d file: +INT lib/glob/gmisc.c /^#define INT /;" d file: +INT lib/glob/smatch.c /^# define INT /;" d file: +INT lib/glob/smatch.c /^#define INT /;" d file: +INT lib/sh/strtol.c /^# define INT /;" d file: +INT vendor/winapi/src/shared/minwindef.rs /^pub type INT = c_int;$/;" t +INT vendor/winapi/src/shared/ntdef.rs /^pub type INT = c_int;$/;" t +INT vendor/winapi/src/um/winnt.rs /^pub type INT = c_int;$/;" t +INT16 vendor/winapi/src/shared/basetsd.rs /^pub type INT16 = c_short;$/;" t +INT32 vendor/winapi/src/shared/basetsd.rs /^pub type INT32 = c_int;$/;" t +INT64 vendor/winapi/src/shared/basetsd.rs /^pub type INT64 = __int64;$/;" t +INT8 vendor/winapi/src/shared/basetsd.rs /^pub type INT8 = c_schar;$/;" t +INTDEF support/man2html.c /^struct INTDEF {$/;" s file: +INTDEF support/man2html.c /^typedef struct INTDEF INTDEF;$/;" t typeref:struct:INTDEF file: +INTDIV0_RAISES_SIGFPE lib/intl/dcigettext.c /^# define INTDIV0_RAISES_SIGFPE /;" d file: +INTERNAL_GLOB_PATTERN_P lib/glob/glob.c /^#define INTERNAL_GLOB_PATTERN_P /;" d file: +INTERNAL_GLOB_PATTERN_P lib/glob/glob_loop.c /^INTERNAL_GLOB_PATTERN_P (pattern)$/;" f file: +INTERNET_PORT vendor/winapi/src/um/winhttp.rs /^pub type INTERNET_PORT = WORD;$/;" t +INTERNET_PORT vendor/winapi/src/um/wininet.rs /^pub type INTERNET_PORT = WORD;$/;" t +INTERNET_SCHEME vendor/winapi/src/um/winhttp.rs /^pub type INTERNET_SCHEME = c_int;$/;" t +INTL Plural Rules vendor/intl_pluralrules/README.md /^# INTL Plural Rules$/;" c +INTLLIBS Makefile.in /^INTLLIBS = @INTLLIBS@$/;" m +INTLOBJS Makefile.in /^INTLOBJS = @INTLOBJS@$/;" m +INTL_ABSSRC Makefile.in /^INTL_ABSSRC = ${topdir}\/$(INTL_LIB)$/;" m +INTL_BUILDDIR Makefile.in /^INTL_BUILDDIR = ${LIBBUILD}\/intl$/;" m +INTL_BUILDDIR builtins/Makefile.in /^INTL_BUILDDIR = ${LIBBUILD}\/intl$/;" m +INTL_BUILDDIR lib/malloc/Makefile.in /^INTL_BUILDDIR = ${LIBBUILD}\/intl$/;" m +INTL_BUILDDIR lib/sh/Makefile.in /^INTL_BUILDDIR = ${LIBBUILD}\/intl$/;" m +INTL_DEP Makefile.in /^INTL_DEP = @INTL_DEP@$/;" m +INTL_DEP builtins/Makefile.in /^INTL_DEP = @INTL_DEP@$/;" m +INTL_DEP configure.ac /^AC_SUBST(INTL_DEP)$/;" s +INTL_INC Makefile.in /^INTL_INC = @INTL_INC@$/;" m +INTL_INC builtins/Makefile.in /^INTL_INC = @INTL_INC@$/;" m +INTL_INC configure.ac /^AC_SUBST(INTL_INC)$/;" s +INTL_INC lib/malloc/Makefile.in /^INTL_INC = @INTL_INC@$/;" m +INTL_INC lib/sh/Makefile.in /^INTL_INC = @INTL_INC@$/;" m +INTL_LIB Makefile.in /^INTL_LIB = @LIBINTL@$/;" m +INTL_LIBDIR Makefile.in /^INTL_LIBDIR = $(dot)\/$(LIBSUBDIR)\/intl$/;" m +INTL_LIBDIR builtins/Makefile.in /^INTL_LIBDIR = ${INTL_BUILDDIR}$/;" m +INTL_LIBRARY Makefile.in /^INTL_LIBRARY = $(INTL_LIBDIR)\/libintl.a$/;" m +INTL_LIBRARY builtins/Makefile.in /^INTL_LIBRARY = ${INTL_BUILDDIR}\/libintl.a$/;" m +INTL_LIBSRC Makefile.in /^INTL_LIBSRC = $(LIBSRC)\/intl$/;" m +INTL_LIBSRC builtins/Makefile.in /^INTL_LIBSRC = ${topdir}\/lib\/intl$/;" m +INTL_LIBSRC lib/malloc/Makefile.in /^INTL_LIBSRC = ${topdir}\/lib\/intl$/;" m +INTL_LIBSRC lib/sh/Makefile.in /^INTL_LIBSRC = ${topdir}\/lib\/intl$/;" m +INTMAX_MAX include/typemax.h /^# define INTMAX_MAX /;" d +INTMAX_MIN include/typemax.h /^# define INTMAX_MIN /;" d +INTUSE lib/intl/bindtextdom.c /^# define INTUSE(/;" d file: +INTUSE lib/intl/dcigettext.c /^# define INTUSE(/;" d file: +INTVARDEF lib/intl/dcigettext.c /^# define INTVARDEF(/;" d file: +INT_BITS_STRLEN_BOUND general.h /^#define INT_BITS_STRLEN_BOUND(/;" d +INT_BUFSIZE_BOUND general.h /^#define INT_BUFSIZE_BOUND(/;" d +INT_MAX include/typemax.h /^# define INT_MAX /;" d +INT_MAX lib/sh/mktime.c /^#define INT_MAX /;" d file: +INT_MIN include/typemax.h /^# define INT_MIN /;" d +INT_MIN lib/sh/mktime.c /^#define INT_MIN /;" d file: +INT_PTR vendor/winapi/src/shared/basetsd.rs /^pub type INT_PTR = isize;$/;" t +INT_STRLEN_BOUND general.h /^#define INT_STRLEN_BOUND(/;" d +INT_STRLEN_BOUND lib/readline/shell.c /^#define INT_STRLEN_BOUND(/;" d file: +INT_STRLEN_BOUND lib/sh/snprintf.c /^#define INT_STRLEN_BOUND(/;" d file: +INVALID lib/glob/smatch.c /^# define INVALID /;" d file: +INVALID lib/glob/smatch.c /^#define INVALID /;" d file: +INVALIDATE_EXPORTSTR variables.h /^#define INVALIDATE_EXPORTSTR(/;" d +INVALIDATE_LASTREF array.c /^#define INVALIDATE_LASTREF(/;" d file: +INVALID_JOB builtins_rust/fg_bg/src/lib.rs /^macro_rules! INVALID_JOB {$/;" M +INVALID_JOB builtins_rust/jobs/src/lib.rs /^macro_rules! INVALID_JOB {$/;" M +INVALID_JOB builtins_rust/wait/src/lib.rs /^macro_rules! INVALID_JOB {$/;" M +INVALID_JOB jobs.h /^#define INVALID_JOB(/;" d +INVALID_NAMEREF_VALUE variables.h /^#define INVALID_NAMEREF_VALUE /;" d +INVALID_SIGNAL_HANDLER jobs.c /^#define INVALID_SIGNAL_HANDLER /;" d file: +INVALID_SIGNAL_HANDLER nojobs.c /^#define INVALID_SIGNAL_HANDLER /;" d file: +INVALID_SIGNAL_HANDLER r_jobs/src/lib.rs /^macro_rules! INVALID_SIGNAL_HANDLER {$/;" M +INVIS_FIRST lib/readline/display.c /^#define INVIS_FIRST(/;" d file: +INV_LINE lib/readline/display.c /^#define INV_LINE(/;" d file: +INV_LINE_FACE lib/readline/display.c /^#define INV_LINE_FACE(/;" d file: +INV_LLEN lib/readline/display.c /^#define INV_LLEN(/;" d file: +IN_ADDR vendor/winapi/src/shared/inaddr.rs /^pub type IN_ADDR = in_addr;$/;" t +IN_BUCKET lib/malloc/malloc.c /^#define IN_BUCKET(/;" d file: +IN_CLASSA vendor/winapi/src/shared/ws2def.rs /^pub fn IN_CLASSA(i: LONG) -> bool {$/;" f +IN_CLASSB vendor/winapi/src/shared/ws2def.rs /^pub fn IN_CLASSB(i: LONG) -> bool {$/;" f +IN_CLASSC vendor/winapi/src/shared/ws2def.rs /^pub fn IN_CLASSC(i: LONG) -> bool {$/;" f +IN_CLASSD vendor/winapi/src/shared/ws2def.rs /^pub fn IN_CLASSD(i: c_long) -> bool {$/;" f +IN_CTYPE_DOMAIN include/chartypes.h /^# define IN_CTYPE_DOMAIN(/;" d +IN_CTYPE_DOMAIN lib/readline/chardefs.h /^# define IN_CTYPE_DOMAIN(/;" d +IN_MULTICAST vendor/winapi/src/shared/ws2def.rs /^pub fn IN_MULTICAST(i: c_long) -> bool {$/;" f +IPAddr vendor/winapi/src/um/ipexport.rs /^pub type IPAddr = ULONG;$/;" t +IPMask vendor/winapi/src/um/ipexport.rs /^pub type IPMask = ULONG;$/;" t +IP_ADAPTER_ADDRESSES vendor/winapi/src/um/iptypes.rs /^pub type IP_ADAPTER_ADDRESSES = IP_ADAPTER_ADDRESSES_LH;$/;" t +IP_ADAPTER_ANYCAST_ADDRESS vendor/winapi/src/um/iptypes.rs /^pub type IP_ADAPTER_ANYCAST_ADDRESS = IP_ADAPTER_ANYCAST_ADDRESS_XP;$/;" t +IP_ADAPTER_DNS_SERVER_ADDRESS vendor/winapi/src/um/iptypes.rs /^pub type IP_ADAPTER_DNS_SERVER_ADDRESS = IP_ADAPTER_DNS_SERVER_ADDRESS_XP;$/;" t +IP_ADAPTER_GATEWAY_ADDRESS vendor/winapi/src/um/iptypes.rs /^pub type IP_ADAPTER_GATEWAY_ADDRESS = IP_ADAPTER_GATEWAY_ADDRESS_LH;$/;" t +IP_ADAPTER_MULTICAST_ADDRESS vendor/winapi/src/um/iptypes.rs /^pub type IP_ADAPTER_MULTICAST_ADDRESS = IP_ADAPTER_MULTICAST_ADDRESS_XP;$/;" t +IP_ADAPTER_PREFIX vendor/winapi/src/um/iptypes.rs /^pub type IP_ADAPTER_PREFIX = IP_ADAPTER_PREFIX_XP;$/;" t +IP_ADAPTER_UNICAST_ADDRESS vendor/winapi/src/um/iptypes.rs /^pub type IP_ADAPTER_UNICAST_ADDRESS = IP_ADAPTER_UNICAST_ADDRESS_LH;$/;" t +IP_ADAPTER_WINS_SERVER_ADDRESS vendor/winapi/src/um/iptypes.rs /^pub type IP_ADAPTER_WINS_SERVER_ADDRESS = IP_ADAPTER_WINS_SERVER_ADDRESS_LH;$/;" t +IP_DAD_STATE vendor/winapi/src/um/iptypes.rs /^pub type IP_DAD_STATE = NL_DAD_STATE;$/;" t +IP_INTERFACE_NAME_INFO vendor/winapi/src/um/iptypes.rs /^pub type IP_INTERFACE_NAME_INFO = IP_INTERFACE_NAME_INFO_W2KSP1;$/;" t +IP_MASK_STRING vendor/winapi/src/um/iptypes.rs /^pub type IP_MASK_STRING = IP_ADDRESS_STRING;$/;" t +IP_PER_ADAPTER_INFO vendor/winapi/src/um/iptypes.rs /^pub type IP_PER_ADAPTER_INFO = IP_PER_ADAPTER_INFO_W2KSP1;$/;" t +IP_PREFIX_ORIGIN vendor/winapi/src/um/iptypes.rs /^pub type IP_PREFIX_ORIGIN = NL_PREFIX_ORIGIN;$/;" t +IP_STATUS vendor/winapi/src/um/ipexport.rs /^pub type IP_STATUS = ULONG;$/;" t +IP_SUFFIX_ORIGIN vendor/winapi/src/um/iptypes.rs /^pub type IP_SUFFIX_ORIGIN = NL_SUFFIX_ORIGIN;$/;" t +IPropertyDescriptionList vendor/winapi/src/um/propsys.rs /^pub type IPropertyDescriptionList = IUnknown; \/\/ TODO$/;" t +IPv6Addr vendor/winapi/src/um/ipexport.rs /^pub type IPv6Addr = in6_addr;$/;" t +ISALLOC lib/malloc/malloc.c /^#define ISALLOC /;" d file: +ISALNUM include/chartypes.h /^#define ISALNUM(/;" d +ISALNUM lib/readline/chardefs.h /^#define ISALNUM(/;" d +ISALPHA include/chartypes.h /^#define ISALPHA(/;" d +ISALPHA lib/readline/chardefs.h /^#define ISALPHA(/;" d +ISARY vendor/winapi/src/um/winnt.rs /^pub fn ISARY(x: WORD) -> bool {$/;" f +ISBLANK include/chartypes.h /^# define ISBLANK(/;" d +ISCNTRL include/chartypes.h /^#define ISCNTRL(/;" d +ISDIGIT include/chartypes.h /^#define ISDIGIT(/;" d +ISDIGIT lib/readline/chardefs.h /^#define ISDIGIT(/;" d +ISDIRSEP general.h /^# define ISDIRSEP(/;" d +ISFCN vendor/winapi/src/um/winnt.rs /^pub fn ISFCN(x: WORD) -> bool {$/;" f +ISFREE lib/malloc/malloc.c /^#define ISFREE /;" d file: +ISFUNC lib/readline/keymaps.h /^#define ISFUNC /;" d +ISGRAPH include/chartypes.h /^# define ISGRAPH(/;" d +ISHELP builtins/common.h /^#define ISHELP(/;" d +ISHELP builtins_rust/caller/src/lib.rs /^unsafe fn ISHELP(s: *const c_char) -> bool {$/;" f +ISHELP builtins_rust/fc/src/lib.rs /^macro_rules! ISHELP {$/;" M +ISHELP builtins_rust/fg_bg/src/lib.rs /^macro_rules! ISHELP {$/;" M +ISHELP builtins_rust/pushd/src/lib.rs /^unsafe fn ISHELP(s: *const c_char) -> bool {$/;" f +ISINTERRUPT quit.h /^#define ISINTERRUPT /;" d +ISKMAP builtins_rust/bind/src/lib.rs /^macro_rules! ISKMAP {$/;" M +ISKMAP lib/readline/keymaps.h /^#define ISKMAP /;" d +ISLETTER include/chartypes.h /^#define ISLETTER(/;" d +ISLOWER include/chartypes.h /^#define ISLOWER(/;" d +ISLOWER lib/readline/chardefs.h /^#define ISLOWER(/;" d +ISMACR lib/readline/keymaps.h /^#define ISMACR /;" d +ISMEMALIGN lib/malloc/malloc.c /^#define ISMEMALIGN /;" d file: +ISOCTAL builtins_rust/common/src/lib.rs /^macro_rules! ISOCTAL {$/;" M +ISOCTAL include/chartypes.h /^# define ISOCTAL(/;" d +ISOCTAL lib/readline/chardefs.h /^# define ISOCTAL(/;" d +ISOPT builtins/bashgetopt.c /^#define ISOPT(/;" d file: +ISOPTION builtins/common.h /^#define ISOPTION(/;" d +ISOPTION builtins_rust/common/src/lib.rs /^unsafe fn ISOPTION(s: *const c_char, c: c_char) -> bool {$/;" f +ISOPTION builtins_rust/pushd/src/lib.rs /^unsafe fn ISOPTION(s: *const c_char, c: c_char) -> bool {$/;" f +ISOPTION execute_cmd.c /^# define ISOPTION(/;" d file: +ISPRINT include/chartypes.h /^#define ISPRINT(/;" d +ISPRINT lib/readline/chardefs.h /^#define ISPRINT(/;" d +ISPTR vendor/winapi/src/um/winnt.rs /^pub fn ISPTR(x: WORD) -> bool {$/;" f +ISPUNCT include/chartypes.h /^#define ISPUNCT(/;" d +ISSLASH lib/intl/dcigettext.c /^# define ISSLASH(/;" d file: +ISSLASH lib/intl/l10nflist.c /^# define ISSLASH(/;" d file: +ISSLASH lib/intl/localcharset.c /^# define ISSLASH(/;" d file: +ISSLASH lib/intl/relocatable.c /^# define ISSLASH(/;" d file: +ISSPACE include/chartypes.h /^#define ISSPACE(/;" d +ISTAG vendor/winapi/src/um/winnt.rs /^pub fn ISTAG(x: BYTE) -> bool {$/;" f +ISUPPER include/chartypes.h /^#define ISUPPER(/;" d +ISUPPER lib/readline/chardefs.h /^#define ISUPPER(/;" d +ISWORD include/chartypes.h /^#define ISWORD(/;" d +ISXDIGIT include/chartypes.h /^#define ISXDIGIT(/;" d +ISXDIGIT lib/readline/chardefs.h /^#define ISXDIGIT(/;" d +IS_ABSOLUTE_PATH lib/intl/dcigettext.c /^# define IS_ABSOLUTE_PATH(/;" d file: +IS_ABSOLUTE_PATH lib/intl/l10nflist.c /^# define IS_ABSOLUTE_PATH(/;" d file: +IS_ASYNC jobs.h /^#define IS_ASYNC(/;" d +IS_BASIC_ASCII include/shmbchar.h /^# define IS_BASIC_ASCII /;" d +IS_BLUETOOTH_GATT_FLAG_VALID vendor/winapi/src/um/bthledef.rs /^pub fn IS_BLUETOOTH_GATT_FLAG_VALID(f: ULONG) -> bool {$/;" f +IS_BUILTIN builtins/evalstring.c /^#define IS_BUILTIN(/;" d file: +IS_CCLASS lib/glob/smatch.c /^#define IS_CCLASS(/;" d file: +IS_CERT_EXCLUDED_SUBTREE vendor/winapi/src/um/wincrypt.rs /^pub fn IS_CERT_EXCLUDED_SUBTREE(X: DWORD) -> bool {$/;" f +IS_CERT_HASH_PROP_ID vendor/winapi/src/um/wincrypt.rs /^pub fn IS_CERT_HASH_PROP_ID(X: DWORD) -> bool {$/;" f +IS_CERT_RDN_CHAR_STRING vendor/winapi/src/um/wincrypt.rs /^pub fn IS_CERT_RDN_CHAR_STRING(X: DWORD) -> bool {$/;" f +IS_CHAIN_HASH_PROP_ID vendor/winapi/src/um/wincrypt.rs /^pub fn IS_CHAIN_HASH_PROP_ID(X: DWORD) -> bool {$/;" f +IS_COMBINING_CHAR lib/readline/rlmbutil.h /^# define IS_COMBINING_CHAR(/;" d +IS_CRL_DIST_POINT_ERR_CRL_ISSUER vendor/winapi/src/um/wincrypt.rs /^pub fn IS_CRL_DIST_POINT_ERR_CRL_ISSUER(X: DWORD) -> bool {$/;" f +IS_DIGITAL builtins_rust/printf/src/lib.rs /^macro_rules! IS_DIGITAL {$/;" M +IS_DISPATCHING vendor/winapi/src/um/winnt.rs /^pub fn IS_DISPATCHING(Flag: DWORD) -> bool {$/;" f +IS_ERROR vendor/winapi/src/shared/winerror.rs /^pub fn IS_ERROR(hr: HRESULT) -> bool {$/;" f +IS_FOREGROUND jobs.h /^#define IS_FOREGROUND(/;" d +IS_FOREGROUND r_jobs/src/lib.rs /^macro_rules! IS_FOREGROUND{$/;" M +IS_GOPHER_ASK vendor/winapi/src/um/wininet.rs /^pub fn IS_GOPHER_ASK(type_: DWORD) -> BOOL {$/;" f +IS_GOPHER_BACKUP_SERVER vendor/winapi/src/um/wininet.rs /^pub fn IS_GOPHER_BACKUP_SERVER(type_: DWORD) -> BOOL {$/;" f +IS_GOPHER_DIRECTORY vendor/winapi/src/um/wininet.rs /^pub fn IS_GOPHER_DIRECTORY(type_: DWORD) -> BOOL {$/;" f +IS_GOPHER_ERROR vendor/winapi/src/um/wininet.rs /^pub fn IS_GOPHER_ERROR(type_: DWORD) -> BOOL {$/;" f +IS_GOPHER_FILE vendor/winapi/src/um/wininet.rs /^pub fn IS_GOPHER_FILE(type_: DWORD) -> BOOL {$/;" f +IS_GOPHER_INDEX_SERVER vendor/winapi/src/um/wininet.rs /^pub fn IS_GOPHER_INDEX_SERVER(type_: DWORD) -> BOOL {$/;" f +IS_GOPHER_PHONE_SERVER vendor/winapi/src/um/wininet.rs /^pub fn IS_GOPHER_PHONE_SERVER(type_: DWORD) -> BOOL {$/;" f +IS_GOPHER_PLUS vendor/winapi/src/um/wininet.rs /^pub fn IS_GOPHER_PLUS(type_: DWORD) -> BOOL {$/;" f +IS_GOPHER_TELNET_SESSION vendor/winapi/src/um/wininet.rs /^pub fn IS_GOPHER_TELNET_SESSION(type_: DWORD) -> BOOL {$/;" f +IS_GOPHER_TN3270_SESSION vendor/winapi/src/um/wininet.rs /^pub fn IS_GOPHER_TN3270_SESSION(type_: DWORD) -> BOOL {$/;" f +IS_GOPHER_TYPE_KNOWN vendor/winapi/src/um/wininet.rs /^pub fn IS_GOPHER_TYPE_KNOWN(type_: DWORD) -> BOOL {$/;" f +IS_INTRESOURCE vendor/winapi/src/um/winuser.rs /^pub fn IS_INTRESOURCE(r: ULONG_PTR) -> bool {$/;" f +IS_JOBCONTROL builtins_rust/fg_bg/src/lib.rs /^macro_rules! IS_JOBCONTROL {$/;" M +IS_JOBCONTROL jobs.h /^#define IS_JOBCONTROL(/;" d +IS_JOBCONTROL r_jobs/src/lib.rs /^macro_rules! IS_JOBCONTROL {$/;" M +IS_LASTREF array.c /^#define IS_LASTREF(/;" d file: +IS_NOTIFIED jobs.h /^#define IS_NOTIFIED(/;" d +IS_NOTIFIED r_jobs/src/lib.rs /^macro_rules! IS_NOTIFIED {$/;" M +IS_OFFICIAL_DDI_INTERFACE_VERSION vendor/winapi/src/shared/d3dukmdt.rs /^pub fn IS_OFFICIAL_DDI_INTERFACE_VERSION(version: ULONG) -> bool {$/;" f +IS_PATH_WITH_DIR lib/intl/dcigettext.c /^# define IS_PATH_WITH_DIR(/;" d file: +IS_PATH_WITH_DIR lib/intl/relocatable.c /^# define IS_PATH_WITH_DIR(/;" d file: +IS_PUBKEY_HASH_PROP_ID vendor/winapi/src/um/wincrypt.rs /^pub fn IS_PUBKEY_HASH_PROP_ID(X: DWORD) -> bool {$/;" f +IS_SPECIAL_OID_INFO_ALGID vendor/winapi/src/um/wincrypt.rs /^pub fn IS_SPECIAL_OID_INFO_ALGID(Algid: ALG_ID) -> bool {$/;" f +IS_STRONG_SIGN_PROP_ID vendor/winapi/src/um/wincrypt.rs /^pub fn IS_STRONG_SIGN_PROP_ID(X: DWORD) -> bool {$/;" f +IS_TARGET_UNWIND vendor/winapi/src/um/winnt.rs /^pub fn IS_TARGET_UNWIND(Flag: DWORD) -> bool {$/;" f +IS_UNWINDING vendor/winapi/src/um/winnt.rs /^pub fn IS_UNWINDING(Flag: DWORD) -> bool {$/;" f +IS_VALIDATION_ENABLED vendor/winapi/src/um/winnt.rs /^pub fn IS_VALIDATION_ENABLED(C: DWORD, L: DWORD) -> bool {$/;" f +IS_WAITING jobs.h /^#define IS_WAITING(/;" d +IS_WAITING r_jobs/src/lib.rs /^macro_rules! IS_WAITING {$/;" M +ISpTask vendor/winapi/src/um/sapiddk51.rs /^pub type ISpTask = *mut c_void;$/;" t +ISpThreadTask vendor/winapi/src/um/sapiddk51.rs /^pub type ISpThreadTask = *mut c_void;$/;" t +IStream vendor/winapi/src/um/commctrl.rs /^pub enum IStream {}$/;" g +IStream vendor/winapi/src/um/dpa_dsa.rs /^pub enum IStream {}$/;" g +ISymUnmanagedReader vendor/winapi/src/um/corsym.rs /^pub enum ISymUnmanagedReader {} \/\/ TODO$/;" g +ITEMIDLIST_ABSOLUTE vendor/winapi/src/um/shtypes.rs /^pub type ITEMIDLIST_ABSOLUTE = ITEMIDLIST;$/;" t +ITEMIDLIST_RELATIVE vendor/winapi/src/um/shtypes.rs /^pub type ITEMIDLIST_RELATIVE = ITEMIDLIST;$/;" t +ITEMID_CHILD vendor/winapi/src/um/shtypes.rs /^pub type ITEMID_CHILD = ITEMIDLIST;$/;" t +ITEMLIST builtins_rust/enable/src/lib.rs /^pub type ITEMLIST = _list_of_items;$/;" t +ITEMLIST pcomplete.h /^} ITEMLIST;$/;" t typeref:struct:_list_of_items +ITEMLIST r_bash/src/lib.rs /^pub type ITEMLIST = _list_of_items;$/;" t +IVssWriterComponentsExt vendor/winapi/src/um/vsbackup.rs /^pub struct IVssWriterComponentsExt {$/;" s +IVssWriterComponentsExtVtbl vendor/winapi/src/um/vsbackup.rs /^pub struct IVssWriterComponentsExtVtbl {$/;" s +I_NetLogonControl vendor/winapi/src/um/lmaccess.rs /^ pub fn I_NetLogonControl($/;" f +I_NetLogonControl2 vendor/winapi/src/um/lmaccess.rs /^ pub fn I_NetLogonControl2($/;" f +I_RPC_HANDLE vendor/winapi/src/shared/rpc.rs /^pub type I_RPC_HANDLE = *mut c_void;$/;" t +Ib vendor/nix/src/sys/socket/addr.rs /^ Ib = libc::AF_IB,$/;" e enum:AddressFamily +IcmpTypes vendor/nix/test/sys/test_socket.rs /^ enum IcmpTypes {$/;" g function:linux_errqueue::test_recverr_v4 +IcmpUnreachCodes vendor/nix/test/sys/test_socket.rs /^ enum IcmpUnreachCodes {$/;" g function:linux_errqueue::test_recverr_v4 +IcmpV6Types vendor/nix/test/sys/test_socket.rs /^ enum IcmpV6Types {$/;" g function:linux_errqueue::test_recverr_v6 +IcmpV6UnreachCodes vendor/nix/test/sys/test_socket.rs /^ enum IcmpV6UnreachCodes {$/;" g function:linux_errqueue::test_recverr_v6 +Id vendor/nix/src/sys/wait.rs /^pub enum Id {$/;" g +Ident vendor/proc-macro2/src/fallback.rs /^impl Debug for Ident {$/;" c +Ident vendor/proc-macro2/src/fallback.rs /^impl Display for Ident {$/;" c +Ident vendor/proc-macro2/src/fallback.rs /^impl Ident {$/;" c +Ident vendor/proc-macro2/src/fallback.rs /^impl PartialEq for Ident {$/;" c +Ident vendor/proc-macro2/src/fallback.rs /^impl PartialEq for Ident$/;" c +Ident vendor/proc-macro2/src/fallback.rs /^pub(crate) struct Ident {$/;" s +Ident vendor/proc-macro2/src/lib.rs /^ Ident(Ident),$/;" e enum:TokenTree +Ident vendor/proc-macro2/src/lib.rs /^impl Debug for Ident {$/;" c +Ident vendor/proc-macro2/src/lib.rs /^impl Display for Ident {$/;" c +Ident vendor/proc-macro2/src/lib.rs /^impl Eq for Ident {}$/;" c +Ident vendor/proc-macro2/src/lib.rs /^impl Hash for Ident {$/;" c +Ident vendor/proc-macro2/src/lib.rs /^impl Ident {$/;" c +Ident vendor/proc-macro2/src/lib.rs /^impl Ord for Ident {$/;" c +Ident vendor/proc-macro2/src/lib.rs /^impl PartialEq for Ident {$/;" c +Ident vendor/proc-macro2/src/lib.rs /^impl PartialOrd for Ident {$/;" c +Ident vendor/proc-macro2/src/lib.rs /^impl PartialEq for Ident$/;" c +Ident vendor/proc-macro2/src/lib.rs /^pub struct Ident {$/;" s +Ident vendor/proc-macro2/src/wrapper.rs /^impl Debug for Ident {$/;" c +Ident vendor/proc-macro2/src/wrapper.rs /^impl Display for Ident {$/;" c +Ident vendor/proc-macro2/src/wrapper.rs /^impl Ident {$/;" c +Ident vendor/proc-macro2/src/wrapper.rs /^impl PartialEq for Ident {$/;" c +Ident vendor/proc-macro2/src/wrapper.rs /^impl PartialEq for Ident$/;" c +Ident vendor/proc-macro2/src/wrapper.rs /^pub(crate) enum Ident {$/;" g +Ident vendor/quote/src/ident_fragment.rs /^impl IdentFragment for Ident {$/;" c +Ident vendor/quote/src/to_tokens.rs /^impl ToTokens for Ident {$/;" c +Ident vendor/syn/src/buffer.rs /^ Ident(Ident),$/;" e enum:Entry +Ident vendor/syn/src/ext.rs /^ impl Sealed for Ident {}$/;" c module:private +Ident vendor/syn/src/ext.rs /^impl IdentExt for Ident {$/;" c +Ident vendor/syn/src/ident.rs /^impl From for Ident {$/;" c +Ident vendor/syn/src/ident.rs /^impl Parse for Ident {$/;" c +Ident vendor/syn/src/ident.rs /^impl Token for Ident {$/;" c +Ident vendor/syn/src/ident.rs /^pub fn Ident(marker: lookahead::TokenMarker) -> Ident {$/;" f +Ident vendor/syn/src/token.rs /^impl private::Sealed for Ident {}$/;" c +Ident vendor/syn/tests/common/eq.rs /^impl SpanlessEq for Ident {$/;" c +IdentAny vendor/syn/src/ext.rs /^ pub struct IdentAny;$/;" s module:private +IdentAny vendor/syn/src/ext.rs /^impl CustomToken for private::IdentAny {$/;" c +IdentExt vendor/syn/src/ext.rs /^pub trait IdentExt: Sized + private::Sealed {$/;" i +IdentFragment vendor/quote/src/ident_fragment.rs /^pub trait IdentFragment {$/;" i +IdentFragmentAdapter vendor/quote/src/runtime.rs /^impl fmt::Binary for IdentFragmentAdapter {$/;" c +IdentFragmentAdapter vendor/quote/src/runtime.rs /^impl fmt::LowerHex for IdentFragmentAdapter {$/;" c +IdentFragmentAdapter vendor/quote/src/runtime.rs /^impl fmt::Octal for IdentFragmentAdapter {$/;" c +IdentFragmentAdapter vendor/quote/src/runtime.rs /^impl fmt::UpperHex for IdentFragmentAdapter {$/;" c +IdentFragmentAdapter vendor/quote/src/runtime.rs /^impl IdentFragmentAdapter {$/;" c +IdentFragmentAdapter vendor/quote/src/runtime.rs /^impl fmt::Display for IdentFragmentAdapter {$/;" c +IdentFragmentAdapter vendor/quote/src/runtime.rs /^pub struct IdentFragmentAdapter(pub T);$/;" s +Identifier vendor/fluent-syntax/src/ast/mod.rs /^ Identifier { name: S },$/;" e enum:VariantKey +Identifier vendor/fluent-syntax/src/ast/mod.rs /^pub struct Identifier {$/;" s +Ieee802154 vendor/nix/src/sys/socket/addr.rs /^ Ieee802154 = libc::AF_IEEE802154,$/;" e enum:AddressFamily +If command.h /^ struct if_com *If;$/;" m union:command::__anon3aaf009a020a typeref:struct:if_com * +Iflag builtins_rust/complete/src/lib.rs /^ Iflag: c_int,$/;" m struct:_optflags +ImageDirectoryEntryToData vendor/winapi/src/um/dbghelp.rs /^ pub fn ImageDirectoryEntryToData($/;" f +ImageDirectoryEntryToDataEx vendor/winapi/src/um/dbghelp.rs /^ pub fn ImageDirectoryEntryToDataEx($/;" f +ImageList_Add vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_Add($/;" f +ImageList_AddIcon vendor/winapi/src/um/commctrl.rs /^pub unsafe fn ImageList_AddIcon(himl: HIMAGELIST, hicon: HICON) -> c_int {$/;" f +ImageList_AddMasked vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_AddMasked($/;" f +ImageList_BeginDrag vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_BeginDrag($/;" f +ImageList_CoCreateInstance vendor/winapi/src/um/commoncontrols.rs /^ pub fn ImageList_CoCreateInstance($/;" f +ImageList_Copy vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_Copy($/;" f +ImageList_Create vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_Create($/;" f +ImageList_Destroy vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_Destroy($/;" f +ImageList_DragEnter vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_DragEnter($/;" f +ImageList_DragLeave vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_DragLeave($/;" f +ImageList_DragMove vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_DragMove($/;" f +ImageList_DragShowNolock vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_DragShowNolock($/;" f +ImageList_Draw vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_Draw($/;" f +ImageList_DrawEx vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_DrawEx($/;" f +ImageList_DrawIndirect vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_DrawIndirect($/;" f +ImageList_Duplicate vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_Duplicate($/;" f +ImageList_EndDrag vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_EndDrag();$/;" f +ImageList_ExtractIcon vendor/winapi/src/um/commctrl.rs /^pub unsafe fn ImageList_ExtractIcon(_: HINSTANCE, himl: HIMAGELIST, i: c_int) -> HICON {$/;" f +ImageList_GetBkColor vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_GetBkColor($/;" f +ImageList_GetDragImage vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_GetDragImage($/;" f +ImageList_GetIcon vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_GetIcon($/;" f +ImageList_GetIconSize vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_GetIconSize($/;" f +ImageList_GetImageCount vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_GetImageCount($/;" f +ImageList_GetImageInfo vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_GetImageInfo($/;" f +ImageList_LoadBitmap vendor/winapi/src/um/commctrl.rs /^pub unsafe fn ImageList_LoadBitmap($/;" f +ImageList_LoadImageA vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_LoadImageA($/;" f +ImageList_LoadImageW vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_LoadImageW($/;" f +ImageList_Merge vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_Merge($/;" f +ImageList_Read vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_Read($/;" f +ImageList_ReadEx vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_ReadEx($/;" f +ImageList_Remove vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_Remove($/;" f +ImageList_RemoveAll vendor/winapi/src/um/commctrl.rs /^pub unsafe fn ImageList_RemoveAll(himl: HIMAGELIST) -> BOOL {$/;" f +ImageList_Replace vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_Replace($/;" f +ImageList_ReplaceIcon vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_ReplaceIcon($/;" f +ImageList_SetBkColor vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_SetBkColor($/;" f +ImageList_SetDragCursorImage vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_SetDragCursorImage($/;" f +ImageList_SetIconSize vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_SetIconSize($/;" f +ImageList_SetImageCount vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_SetImageCount($/;" f +ImageList_SetOverlayImage vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_SetOverlayImage($/;" f +ImageList_Write vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_Write($/;" f +ImageList_WriteEx vendor/winapi/src/um/commctrl.rs /^ pub fn ImageList_WriteEx($/;" f +ImageNtHeader vendor/winapi/src/um/dbghelp.rs /^ pub fn ImageNtHeader($/;" f +ImageRvaToSection vendor/winapi/src/um/dbghelp.rs /^ pub fn ImageRvaToSection($/;" f +ImageRvaToVa vendor/winapi/src/um/dbghelp.rs /^ pub fn ImageRvaToVa($/;" f +ImagehlpApiVersion vendor/winapi/src/um/dbghelp.rs /^ pub fn ImagehlpApiVersion() -> LPAPI_VERSION;$/;" f +ImagehlpApiVersionEx vendor/winapi/src/um/dbghelp.rs /^ pub fn ImagehlpApiVersionEx($/;" f +ImmGetContext vendor/winapi/src/um/imm.rs /^ pub fn ImmGetContext($/;" f +ImmGetOpenStatus vendor/winapi/src/um/imm.rs /^ pub fn ImmGetOpenStatus($/;" f +ImmReleaseContext vendor/winapi/src/um/imm.rs /^ pub fn ImmReleaseContext($/;" f +ImmSetCompositionWindow vendor/winapi/src/um/imm.rs /^ pub fn ImmSetCompositionWindow($/;" f +ImmSetOpenStatus vendor/winapi/src/um/imm.rs /^ pub fn ImmSetOpenStatus($/;" f +Imp vendor/memchr/src/cow.rs /^enum Imp<'a> {$/;" g +Imp vendor/memchr/src/cow.rs /^impl<'a> Imp<'a> {$/;" c +Imp vendor/memchr/src/cow.rs /^struct Imp<'a>(&'a [u8]);$/;" s +ImpLink vendor/nix/src/sys/socket/addr.rs /^ ImpLink = libc::AF_IMPLINK,$/;" e enum:AddressFamily +ImpersonateAnonymousToken vendor/winapi/src/um/securitybaseapi.rs /^ pub fn ImpersonateAnonymousToken($/;" f +ImpersonateLoggedOnUser vendor/winapi/src/um/securitybaseapi.rs /^ pub fn ImpersonateLoggedOnUser($/;" f +ImpersonateNamedPipeClient vendor/winapi/src/um/namedpipeapi.rs /^ pub fn ImpersonateNamedPipeClient($/;" f +ImpersonateSecurityContext vendor/winapi/src/shared/sspi.rs /^ pub fn ImpersonateSecurityContext($/;" f +ImpersonateSelf vendor/winapi/src/um/securitybaseapi.rs /^ pub fn ImpersonateSelf($/;" f +Impl vendor/async-trait/src/expand.rs /^ Impl {$/;" e enum:Context +Impl vendor/async-trait/src/parse.rs /^ Impl(ItemImpl),$/;" e enum:Item +Impl vendor/async-trait/tests/test.rs /^ impl Child for Impl {$/;" c module:issue45 +Impl vendor/async-trait/tests/test.rs /^ impl Parent for Impl {$/;" c module:issue45 +Impl vendor/async-trait/tests/test.rs /^ struct Impl(usize);$/;" s module:issue45 +ImplGenerics vendor/syn/src/generics.rs /^ impl<'a> ToTokens for ImplGenerics<'a> {$/;" c module:printing +ImplGenerics vendor/syn/src/generics.rs /^pub struct ImplGenerics<'a>(&'a Generics);$/;" s +ImplItem vendor/syn/src/gen/clone.rs /^impl Clone for ImplItem {$/;" c +ImplItem vendor/syn/src/gen/debug.rs /^impl Debug for ImplItem {$/;" c +ImplItem vendor/syn/src/gen/eq.rs /^impl Eq for ImplItem {}$/;" c +ImplItem vendor/syn/src/gen/eq.rs /^impl PartialEq for ImplItem {$/;" c +ImplItem vendor/syn/src/gen/hash.rs /^impl Hash for ImplItem {$/;" c +ImplItem vendor/syn/src/item.rs /^ impl Parse for ImplItem {$/;" c module:parsing +ImplItemConst vendor/syn/src/gen/clone.rs /^impl Clone for ImplItemConst {$/;" c +ImplItemConst vendor/syn/src/gen/debug.rs /^impl Debug for ImplItemConst {$/;" c +ImplItemConst vendor/syn/src/gen/eq.rs /^impl Eq for ImplItemConst {}$/;" c +ImplItemConst vendor/syn/src/gen/eq.rs /^impl PartialEq for ImplItemConst {$/;" c +ImplItemConst vendor/syn/src/gen/hash.rs /^impl Hash for ImplItemConst {$/;" c +ImplItemConst vendor/syn/src/item.rs /^ impl Parse for ImplItemConst {$/;" c module:parsing +ImplItemConst vendor/syn/src/item.rs /^ impl ToTokens for ImplItemConst {$/;" c module:printing +ImplItemMacro vendor/syn/src/gen/clone.rs /^impl Clone for ImplItemMacro {$/;" c +ImplItemMacro vendor/syn/src/gen/debug.rs /^impl Debug for ImplItemMacro {$/;" c +ImplItemMacro vendor/syn/src/gen/eq.rs /^impl Eq for ImplItemMacro {}$/;" c +ImplItemMacro vendor/syn/src/gen/eq.rs /^impl PartialEq for ImplItemMacro {$/;" c +ImplItemMacro vendor/syn/src/gen/hash.rs /^impl Hash for ImplItemMacro {$/;" c +ImplItemMacro vendor/syn/src/item.rs /^ impl Parse for ImplItemMacro {$/;" c module:parsing +ImplItemMacro vendor/syn/src/item.rs /^ impl ToTokens for ImplItemMacro {$/;" c module:printing +ImplItemMethod vendor/syn/src/gen/clone.rs /^impl Clone for ImplItemMethod {$/;" c +ImplItemMethod vendor/syn/src/gen/debug.rs /^impl Debug for ImplItemMethod {$/;" c +ImplItemMethod vendor/syn/src/gen/eq.rs /^impl Eq for ImplItemMethod {}$/;" c +ImplItemMethod vendor/syn/src/gen/eq.rs /^impl PartialEq for ImplItemMethod {$/;" c +ImplItemMethod vendor/syn/src/gen/hash.rs /^impl Hash for ImplItemMethod {$/;" c +ImplItemMethod vendor/syn/src/item.rs /^ impl Parse for ImplItemMethod {$/;" c module:parsing +ImplItemMethod vendor/syn/src/item.rs /^ impl ToTokens for ImplItemMethod {$/;" c module:printing +ImplItemType vendor/syn/src/gen/clone.rs /^impl Clone for ImplItemType {$/;" c +ImplItemType vendor/syn/src/gen/debug.rs /^impl Debug for ImplItemType {$/;" c +ImplItemType vendor/syn/src/gen/eq.rs /^impl Eq for ImplItemType {}$/;" c +ImplItemType vendor/syn/src/gen/eq.rs /^impl PartialEq for ImplItemType {$/;" c +ImplItemType vendor/syn/src/gen/hash.rs /^impl Hash for ImplItemType {$/;" c +ImplItemType vendor/syn/src/item.rs /^ impl Parse for ImplItemType {$/;" c module:parsing +ImplItemType vendor/syn/src/item.rs /^ impl ToTokens for ImplItemType {$/;" c module:printing +ImplicitSource vendor/thiserror/tests/test_source.rs /^pub struct ImplicitSource {$/;" s +ImportSecurityContextA vendor/winapi/src/shared/sspi.rs /^ pub fn ImportSecurityContextA($/;" f +ImportSecurityContextW vendor/winapi/src/shared/sspi.rs /^ pub fn ImportSecurityContextW($/;" f +InSendMessage vendor/winapi/src/um/winuser.rs /^ pub fn InSendMessage() -> BOOL;$/;" f +InSendMessageEx vendor/winapi/src/um/winuser.rs /^ pub fn InSendMessageEx($/;" f +Inc vendor/futures/tests/future_obj.rs /^ impl Drop for Inc<'_> {$/;" c function:dropping_drops_the_future +Inc vendor/futures/tests/future_obj.rs /^ impl Future for Inc<'_> {$/;" c function:dropping_drops_the_future +Inc vendor/futures/tests/future_obj.rs /^ struct Inc<'a>(&'a mut u32);$/;" s function:dropping_drops_the_future +Incoming vendor/futures-executor/src/local_pool.rs /^type Incoming = RefCell>>;$/;" t +IncompatibleSize vendor/libloading/src/error.rs /^ IncompatibleSize,$/;" e enum:Error +Inconsistent vendor/futures-channel/src/mpsc/queue.rs /^ Inconsistent,$/;" e enum:PopResult +Inconsistent vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^ Inconsistent,$/;" e enum:Dequeue +Increment vendor/futures/tests_disabled/bilock.rs /^ impl Future for Increment {$/;" c function:concurrent +Increment vendor/futures/tests_disabled/bilock.rs /^ struct Increment {$/;" s function:concurrent +IncrementOnDrop vendor/async-trait/tests/test.rs /^ impl<'a> Drop for IncrementOnDrop<'a> {$/;" c module:issue199 +IncrementOnDrop vendor/async-trait/tests/test.rs /^ struct IncrementOnDrop<'a>(&'a Cell);$/;" s module:issue199 +Index vendor/syn/src/expr.rs /^ impl Parse for Index {$/;" c module:parsing +Index vendor/syn/src/expr.rs /^ impl ToTokens for Index {$/;" c module:printing +Index vendor/syn/src/expr.rs /^impl Eq for Index {}$/;" c +Index vendor/syn/src/expr.rs /^impl From for Index {$/;" c +Index vendor/syn/src/expr.rs /^impl Hash for Index {$/;" c +Index vendor/syn/src/expr.rs /^impl IdentFragment for Index {$/;" c +Index vendor/syn/src/expr.rs /^impl PartialEq for Index {$/;" c +Index vendor/syn/src/gen/clone.rs /^impl Clone for Index {$/;" c +Index vendor/syn/src/gen/debug.rs /^impl Debug for Index {$/;" c +IndexName2Prefix support/texi2html /^sub IndexName2Prefix$/;" s +Inet vendor/nix/src/sys/socket/addr.rs /^ Inet = libc::AF_INET,$/;" e enum:AddressFamily +Inet vendor/nix/src/sys/socket/addr.rs /^ Inet(InetAddr),$/;" e enum:SockAddr +Inet6 vendor/nix/src/sys/socket/addr.rs /^ Inet6 = libc::AF_INET6,$/;" e enum:AddressFamily +InetNtopW vendor/winapi/src/um/ws2tcpip.rs /^ pub fn InetNtopW($/;" f +InetPtonW vendor/winapi/src/um/ws2tcpip.rs /^ pub fn InetPtonW($/;" f +InferredBounds vendor/thiserror-impl/src/generics.rs /^impl InferredBounds {$/;" c +InferredBounds vendor/thiserror-impl/src/generics.rs /^pub struct InferredBounds {$/;" s +InflateRect vendor/winapi/src/um/winuser.rs /^ pub fn InflateRect($/;" f +InitAtomTable vendor/winapi/src/um/winbase.rs /^ pub fn InitAtomTable($/;" f +InitCommonControls vendor/winapi/src/um/commctrl.rs /^ pub fn InitCommonControls();$/;" f +InitCommonControlsEx vendor/winapi/src/um/commctrl.rs /^ pub fn InitCommonControlsEx($/;" f +InitMUILanguage vendor/winapi/src/um/commctrl.rs /^ pub fn InitMUILanguage($/;" f +InitNetworkAddressControl vendor/winapi/src/um/shellapi.rs /^ pub fn InitNetworkAddressControl() -> BOOL;$/;" f +InitOnceBeginInitialize vendor/winapi/src/um/synchapi.rs /^ pub fn InitOnceBeginInitialize($/;" f +InitOnceComplete vendor/winapi/src/um/synchapi.rs /^ pub fn InitOnceComplete($/;" f +InitOnceExecuteOnce vendor/winapi/src/um/synchapi.rs /^ pub fn InitOnceExecuteOnce($/;" f +InitOnceInitialize vendor/winapi/src/um/synchapi.rs /^ pub fn InitOnceInitialize($/;" f +InitialLineStart vendor/fluent-syntax/src/parser/pattern.rs /^ InitialLineStart,$/;" e enum:TextElementPosition +InitializeAcl vendor/winapi/src/um/securitybaseapi.rs /^ pub fn InitializeAcl($/;" f +InitializeConditionVariable vendor/winapi/src/um/synchapi.rs /^ pub fn InitializeConditionVariable($/;" f +InitializeContext vendor/winapi/src/um/winbase.rs /^ pub fn InitializeContext($/;" f +InitializeCriticalSection vendor/winapi/src/um/synchapi.rs /^ pub fn InitializeCriticalSection($/;" f +InitializeCriticalSectionAndSpinCount vendor/winapi/src/um/synchapi.rs /^ pub fn InitializeCriticalSectionAndSpinCount($/;" f +InitializeCriticalSectionEx vendor/winapi/src/um/synchapi.rs /^ pub fn InitializeCriticalSectionEx($/;" f +InitializeEnclave vendor/winapi/src/um/enclaveapi.rs /^ pub fn InitializeEnclave($/;" f +InitializeFlatSB vendor/winapi/src/um/commctrl.rs /^ pub fn InitializeFlatSB($/;" f +InitializeIpForwardEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn InitializeIpForwardEntry($/;" f +InitializeIpInterfaceEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn InitializeIpInterfaceEntry($/;" f +InitializeObjectAttributes vendor/winapi/src/shared/ntdef.rs /^pub unsafe fn InitializeObjectAttributes($/;" f +InitializeProcThreadAttributeList vendor/winapi/src/um/processthreadsapi.rs /^ pub fn InitializeProcThreadAttributeList($/;" f +InitializeProcessForWsWatch vendor/winapi/src/um/psapi.rs /^ pub fn InitializeProcessForWsWatch($/;" f +InitializeSListHead vendor/winapi/src/um/interlockedapi.rs /^ pub fn InitializeSListHead($/;" f +InitializeSRWLock vendor/winapi/src/um/synchapi.rs /^ pub fn InitializeSRWLock($/;" f +InitializeSecurityContextA vendor/winapi/src/shared/sspi.rs /^ pub fn InitializeSecurityContextA($/;" f +InitializeSecurityContextW vendor/winapi/src/shared/sspi.rs /^ pub fn InitializeSecurityContextW($/;" f +InitializeSecurityDescriptor vendor/winapi/src/um/securitybaseapi.rs /^ pub fn InitializeSecurityDescriptor($/;" f +InitializeSid vendor/winapi/src/um/securitybaseapi.rs /^ pub fn InitializeSid($/;" f +InitializeSynchronizationBarrier vendor/winapi/src/um/synchapi.rs /^ pub fn InitializeSynchronizationBarrier($/;" f +InitializeTouchInjection vendor/winapi/src/um/winuser.rs /^ pub fn InitializeTouchInjection($/;" f +InitializeUnicastIpAddressEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn InitializeUnicastIpAddressEntry($/;" f +InitiateShutdownA vendor/winapi/src/um/winreg.rs /^ pub fn InitiateShutdownA($/;" f +InitiateShutdownW vendor/winapi/src/um/winreg.rs /^ pub fn InitiateShutdownW($/;" f +InitiateSystemShutdownA vendor/winapi/src/um/winreg.rs /^ pub fn InitiateSystemShutdownA($/;" f +InitiateSystemShutdownExA vendor/winapi/src/um/winreg.rs /^ pub fn InitiateSystemShutdownExA($/;" f +InitiateSystemShutdownExW vendor/winapi/src/um/winreg.rs /^ pub fn InitiateSystemShutdownExW($/;" f +InitiateSystemShutdownW vendor/winapi/src/um/winreg.rs /^ pub fn InitiateSystemShutdownW($/;" f +InjectSyntheticPointerInput vendor/winapi/src/um/winuser.rs /^ pub fn InjectSyntheticPointerInput($/;" f +InjectTouchInput vendor/winapi/src/um/winuser.rs /^ pub fn InjectTouchInput($/;" f +Inline vendor/fluent-syntax/src/ast/mod.rs /^ Inline(InlineExpression),$/;" e enum:Expression +Inline vendor/smallvec/src/lib.rs /^ Inline(MaybeUninit),$/;" e enum:SmallVecData +InlineExpression vendor/fluent-bundle/src/resolver/inline_expression.rs /^impl<'p> ResolveValue for ast::InlineExpression<&'p str> {$/;" c +InlineExpression vendor/fluent-bundle/src/resolver/inline_expression.rs /^impl<'p> WriteValue for ast::InlineExpression<&'p str> {$/;" c +InlineExpression vendor/fluent-syntax/src/ast/mod.rs /^pub enum InlineExpression {$/;" g +Inner vendor/futures-channel/src/oneshot.rs /^impl Inner {$/;" c +Inner vendor/futures-channel/src/oneshot.rs /^struct Inner {$/;" s +Inner vendor/futures-util/src/future/future/shared.rs /^impl fmt::Debug for Inner {$/;" c +Inner vendor/futures-util/src/future/future/shared.rs /^impl Inner$/;" c +Inner vendor/futures-util/src/future/future/shared.rs /^struct Inner {$/;" s +Inner vendor/futures-util/src/future/future/shared.rs /^unsafe impl Send for Inner$/;" c +Inner vendor/futures-util/src/future/future/shared.rs /^unsafe impl Sync for Inner$/;" c +Inner vendor/futures-util/src/lock/bilock.rs /^impl Inner {$/;" c +Inner vendor/futures-util/src/lock/bilock.rs /^impl Drop for Inner {$/;" c +Inner vendor/futures-util/src/lock/bilock.rs /^struct Inner {$/;" s +Inner vendor/futures-util/src/lock/bilock.rs /^unsafe impl Send for Inner {}$/;" c +Inner vendor/futures-util/src/lock/bilock.rs /^unsafe impl Sync for Inner {}$/;" c +Inner vendor/pin-project-lite/tests/proper_unpin.rs /^ struct Inner {$/;" s module:default +Inner vendor/thiserror/tests/test_backtrace.rs /^pub struct Inner;$/;" s +Inner vendor/thiserror/tests/test_display.rs /^ struct Inner {$/;" s function:test_field +Inner vendor/thiserror/tests/ui/lifetime.rs /^struct Inner<'a>(&'a str);$/;" s +InnerBacktrace vendor/thiserror/tests/test_backtrace.rs /^pub struct InnerBacktrace {$/;" s +InnerLocales vendor/fluent-fallback/tests/localization_test.rs /^impl InnerLocales {$/;" c +InnerLocales vendor/fluent-fallback/tests/localization_test.rs /^struct InnerLocales {$/;" s +InnerWaker vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl ArcWake for InnerWaker {$/;" c +InnerWaker vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl InnerWaker {$/;" c +InnerWaker vendor/futures-util/src/stream/stream/flatten_unordered.rs /^struct InnerWaker {$/;" s +InnerWaker vendor/futures-util/src/stream/stream/flatten_unordered.rs /^unsafe impl Send for InnerWaker {}$/;" c +InnerWaker vendor/futures-util/src/stream/stream/flatten_unordered.rs /^unsafe impl Sync for InnerWaker {}$/;" c +Inotify vendor/nix/src/sys/inotify.rs /^impl AsRawFd for Inotify {$/;" c +Inotify vendor/nix/src/sys/inotify.rs /^impl FromRawFd for Inotify {$/;" c +Inotify vendor/nix/src/sys/inotify.rs /^impl Inotify {$/;" c +Inotify vendor/nix/src/sys/inotify.rs /^pub struct Inotify {$/;" s +InotifyEvent vendor/nix/src/sys/inotify.rs /^pub struct InotifyEvent {$/;" s +Input vendor/thiserror-impl/src/ast.rs /^impl<'a> Input<'a> {$/;" c +Input vendor/thiserror-impl/src/ast.rs /^pub enum Input<'a> {$/;" g +Input vendor/thiserror-impl/src/valid.rs /^impl Input<'_> {$/;" c +InsertMenuA vendor/winapi/src/um/winuser.rs /^ pub fn InsertMenuA($/;" f +InsertMenuItemA vendor/winapi/src/um/winuser.rs /^ pub fn InsertMenuItemA($/;" f +InsertMenuItemW vendor/winapi/src/um/winuser.rs /^ pub fn InsertMenuItemW($/;" f +InsertMenuW vendor/winapi/src/um/winuser.rs /^ pub fn InsertMenuW($/;" f +InspectErrFn vendor/futures-util/src/fns.rs /^impl<'a, F, T, E> Fn1<&'a Result> for InspectErrFn$/;" c +InspectErrFn vendor/futures-util/src/fns.rs /^impl<'a, F, T, E> FnMut1<&'a Result> for InspectErrFn$/;" c +InspectErrFn vendor/futures-util/src/fns.rs /^impl<'a, F, T, E> FnOnce1<&'a Result> for InspectErrFn$/;" c +InspectErrFn vendor/futures-util/src/fns.rs /^pub struct InspectErrFn(F);$/;" s +InspectFn vendor/futures-util/src/fns.rs /^impl Fn1 for InspectFn$/;" c +InspectFn vendor/futures-util/src/fns.rs /^impl FnMut1 for InspectFn$/;" c +InspectFn vendor/futures-util/src/fns.rs /^impl FnOnce1 for InspectFn$/;" c +InspectFn vendor/futures-util/src/fns.rs /^pub struct InspectFn(F);$/;" s +InspectOkFn vendor/futures-util/src/fns.rs /^impl<'a, F, T, E> Fn1<&'a Result> for InspectOkFn$/;" c +InspectOkFn vendor/futures-util/src/fns.rs /^impl<'a, F, T, E> FnMut1<&'a Result> for InspectOkFn$/;" c +InspectOkFn vendor/futures-util/src/fns.rs /^impl<'a, F, T, E> FnOnce1<&'a Result> for InspectOkFn$/;" c +InspectOkFn vendor/futures-util/src/fns.rs /^pub struct InspectOkFn(F);$/;" s +InstallApplication vendor/winapi/src/um/appmgmt.rs /^ pub fn InstallApplication($/;" f +InstallELAMCertificateInfo vendor/winapi/src/um/sysinfoapi.rs /^ pub fn InstallELAMCertificateInfo($/;" f +InstallHinfSectionA vendor/winapi/src/um/setupapi.rs /^ pub fn InstallHinfSectionA($/;" f +InstallHinfSectionW vendor/winapi/src/um/setupapi.rs /^ pub fn InstallHinfSectionW($/;" f +Installation README.md /^## Installation$/;" s chapter:utshell +Installing vendor/self_cell/README.md /^### Installing$/;" S chapter:`self_cell!` +Int shell.c /^#define Int /;" d file: +Integer vendor/stdext/src/num/integer.rs /^pub trait Integer:$/;" i +IntegerOverflow vendor/thiserror/tests/test_expr.rs /^ IntegerOverflow { is_signed: Option },$/;" e enum:CompilerError +Interchanger vendor/futures/tests/stream.rs /^ impl Stream for Interchanger {$/;" c function:flatten_unordered +Interchanger vendor/futures/tests/stream.rs /^ struct Interchanger {$/;" s function:flatten_unordered +Interface vendor/async-trait/tests/ui/must-use.rs /^trait Interface {$/;" i +Interface vendor/nix/src/net/if_.rs /^ impl Interface {$/;" c module:if_nameindex +Interface vendor/nix/src/net/if_.rs /^ impl fmt::Debug for Interface {$/;" c module:if_nameindex +Interface vendor/nix/src/net/if_.rs /^ pub struct Interface(libc::if_nameindex);$/;" s module:if_nameindex +Interface vendor/winapi/src/lib.rs /^pub trait Interface {$/;" i +InterfaceAddress vendor/nix/src/ifaddrs.rs /^impl InterfaceAddress {$/;" c +InterfaceAddress vendor/nix/src/ifaddrs.rs /^pub struct InterfaceAddress {$/;" s +InterfaceAddressIterator vendor/nix/src/ifaddrs.rs /^impl Drop for InterfaceAddressIterator {$/;" c +InterfaceAddressIterator vendor/nix/src/ifaddrs.rs /^impl Iterator for InterfaceAddressIterator {$/;" c +InterfaceAddressIterator vendor/nix/src/ifaddrs.rs /^pub struct InterfaceAddressIterator {$/;" s +Interfaces vendor/nix/src/net/if_.rs /^ impl Drop for Interfaces {$/;" c module:if_nameindex +Interfaces vendor/nix/src/net/if_.rs /^ impl Interfaces {$/;" c module:if_nameindex +Interfaces vendor/nix/src/net/if_.rs /^ impl fmt::Debug for Interfaces {$/;" c module:if_nameindex +Interfaces vendor/nix/src/net/if_.rs /^ impl<'a> IntoIterator for &'a Interfaces {$/;" c module:if_nameindex +Interfaces vendor/nix/src/net/if_.rs /^ pub struct Interfaces {$/;" s module:if_nameindex +InterfacesIter vendor/nix/src/net/if_.rs /^ impl<'a> Iterator for InterfacesIter<'a> {$/;" c module:if_nameindex +InterfacesIter vendor/nix/src/net/if_.rs /^ pub struct InterfacesIter<'a> {$/;" s module:if_nameindex +InterlockedFlushSList vendor/winapi/src/um/interlockedapi.rs /^ pub fn InterlockedFlushSList($/;" f +InterlockedPopEntrySList vendor/winapi/src/um/interlockedapi.rs /^ pub fn InterlockedPopEntrySList($/;" f +InterlockedPushEntrySList vendor/winapi/src/um/interlockedapi.rs /^ pub fn InterlockedPushEntrySList($/;" f +InterlockedPushListSListEx vendor/winapi/src/um/interlockedapi.rs /^ pub fn InterlockedPushListSListEx($/;" f +InternalGetWindowText vendor/winapi/src/um/winuser.rs /^ pub fn InternalGetWindowText($/;" f +InternalState vendor/futures-util/src/stream/select_with_strategy.rs /^enum InternalState {$/;" g +InternalState vendor/futures-util/src/stream/select_with_strategy.rs /^impl InternalState {$/;" c +InternetAttemptConnect vendor/winapi/src/um/wininet.rs /^ pub fn InternetAttemptConnect($/;" f +InternetAutodial vendor/winapi/src/um/wininet.rs /^ pub fn InternetAutodial($/;" f +InternetAutodialHangup vendor/winapi/src/um/wininet.rs /^ pub fn InternetAutodialHangup($/;" f +InternetCanonicalizeUrlA vendor/winapi/src/um/wininet.rs /^ pub fn InternetCanonicalizeUrlA($/;" f +InternetCanonicalizeUrlW vendor/winapi/src/um/wininet.rs /^ pub fn InternetCanonicalizeUrlW($/;" f +InternetCheckConnectionA vendor/winapi/src/um/wininet.rs /^ pub fn InternetCheckConnectionA($/;" f +InternetCheckConnectionW vendor/winapi/src/um/wininet.rs /^ pub fn InternetCheckConnectionW($/;" f +InternetClearAllPerSiteCookieDecisions vendor/winapi/src/um/wininet.rs /^ pub fn InternetClearAllPerSiteCookieDecisions() -> BOOL;$/;" f +InternetCloseHandle vendor/winapi/src/um/wininet.rs /^ pub fn InternetCloseHandle($/;" f +InternetCombineUrlA vendor/winapi/src/um/wininet.rs /^ pub fn InternetCombineUrlA($/;" f +InternetCombineUrlW vendor/winapi/src/um/wininet.rs /^ pub fn InternetCombineUrlW($/;" f +InternetConfirmZoneCrossingA vendor/winapi/src/um/wininet.rs /^ pub fn InternetConfirmZoneCrossingA($/;" f +InternetConfirmZoneCrossingW vendor/winapi/src/um/wininet.rs /^ pub fn InternetConfirmZoneCrossingW($/;" f +InternetConnectA vendor/winapi/src/um/wininet.rs /^ pub fn InternetConnectA($/;" f +InternetConnectW vendor/winapi/src/um/wininet.rs /^ pub fn InternetConnectW($/;" f +InternetCrackUrlA vendor/winapi/src/um/wininet.rs /^ pub fn InternetCrackUrlA($/;" f +InternetCrackUrlW vendor/winapi/src/um/wininet.rs /^ pub fn InternetCrackUrlW($/;" f +InternetCreateUrlA vendor/winapi/src/um/wininet.rs /^ pub fn InternetCreateUrlA($/;" f +InternetCreateUrlW vendor/winapi/src/um/wininet.rs /^ pub fn InternetCreateUrlW($/;" f +InternetDialA vendor/winapi/src/um/wininet.rs /^ pub fn InternetDialA($/;" f +InternetDialW vendor/winapi/src/um/wininet.rs /^ pub fn InternetDialW($/;" f +InternetEnumPerSiteCookieDecisionA vendor/winapi/src/um/wininet.rs /^ pub fn InternetEnumPerSiteCookieDecisionA($/;" f +InternetEnumPerSiteCookieDecisionW vendor/winapi/src/um/wininet.rs /^ pub fn InternetEnumPerSiteCookieDecisionW($/;" f +InternetErrorDlg vendor/winapi/src/um/wininet.rs /^ pub fn InternetErrorDlg($/;" f +InternetFindNextFileA vendor/winapi/src/um/wininet.rs /^ pub fn InternetFindNextFileA($/;" f +InternetFindNextFileW vendor/winapi/src/um/wininet.rs /^ pub fn InternetFindNextFileW($/;" f +InternetFreeCookies vendor/winapi/src/um/wininet.rs /^ pub fn InternetFreeCookies($/;" f +InternetGetConnectedState vendor/winapi/src/um/wininet.rs /^ pub fn InternetGetConnectedState($/;" f +InternetGetConnectedStateExA vendor/winapi/src/um/wininet.rs /^ pub fn InternetGetConnectedStateExA($/;" f +InternetGetConnectedStateExW vendor/winapi/src/um/wininet.rs /^ pub fn InternetGetConnectedStateExW($/;" f +InternetGetCookieA vendor/winapi/src/um/wininet.rs /^ pub fn InternetGetCookieA($/;" f +InternetGetCookieEx2 vendor/winapi/src/um/wininet.rs /^ pub fn InternetGetCookieEx2($/;" f +InternetGetCookieExA vendor/winapi/src/um/wininet.rs /^ pub fn InternetGetCookieExA($/;" f +InternetGetCookieExW vendor/winapi/src/um/wininet.rs /^ pub fn InternetGetCookieExW($/;" f +InternetGetCookieW vendor/winapi/src/um/wininet.rs /^ pub fn InternetGetCookieW($/;" f +InternetGetLastResponseInfoA vendor/winapi/src/um/wininet.rs /^ pub fn InternetGetLastResponseInfoA($/;" f +InternetGetLastResponseInfoW vendor/winapi/src/um/wininet.rs /^ pub fn InternetGetLastResponseInfoW($/;" f +InternetGetPerSiteCookieDecisionA vendor/winapi/src/um/wininet.rs /^ pub fn InternetGetPerSiteCookieDecisionA($/;" f +InternetGetPerSiteCookieDecisionW vendor/winapi/src/um/wininet.rs /^ pub fn InternetGetPerSiteCookieDecisionW($/;" f +InternetGoOnlineA vendor/winapi/src/um/wininet.rs /^ pub fn InternetGoOnlineA($/;" f +InternetGoOnlineW vendor/winapi/src/um/wininet.rs /^ pub fn InternetGoOnlineW($/;" f +InternetHangUp vendor/winapi/src/um/wininet.rs /^ pub fn InternetHangUp($/;" f +InternetInitializeAutoProxyDll vendor/winapi/src/um/wininet.rs /^ pub fn InternetInitializeAutoProxyDll($/;" f +InternetLockRequestFile vendor/winapi/src/um/wininet.rs /^ pub fn InternetLockRequestFile($/;" f +InternetOpenA vendor/winapi/src/um/wininet.rs /^ pub fn InternetOpenA($/;" f +InternetOpenUrlA vendor/winapi/src/um/wininet.rs /^ pub fn InternetOpenUrlA($/;" f +InternetOpenUrlW vendor/winapi/src/um/wininet.rs /^ pub fn InternetOpenUrlW($/;" f +InternetOpenW vendor/winapi/src/um/wininet.rs /^ pub fn InternetOpenW($/;" f +InternetQueryDataAvailable vendor/winapi/src/um/wininet.rs /^ pub fn InternetQueryDataAvailable($/;" f +InternetQueryOptionA vendor/winapi/src/um/wininet.rs /^ pub fn InternetQueryOptionA($/;" f +InternetQueryOptionW vendor/winapi/src/um/wininet.rs /^ pub fn InternetQueryOptionW($/;" f +InternetReadFile vendor/winapi/src/um/wininet.rs /^ pub fn InternetReadFile($/;" f +InternetReadFileExA vendor/winapi/src/um/wininet.rs /^ pub fn InternetReadFileExA($/;" f +InternetReadFileExW vendor/winapi/src/um/wininet.rs /^ pub fn InternetReadFileExW($/;" f +InternetSetCookieA vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetCookieA($/;" f +InternetSetCookieEx2 vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetCookieEx2($/;" f +InternetSetCookieExA vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetCookieExA($/;" f +InternetSetCookieExW vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetCookieExW($/;" f +InternetSetCookieW vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetCookieW($/;" f +InternetSetDialStateA vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetDialStateA($/;" f +InternetSetDialStateW vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetDialStateW($/;" f +InternetSetFilePointer vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetFilePointer($/;" f +InternetSetOptionA vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetOptionA($/;" f +InternetSetOptionExA vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetOptionExA($/;" f +InternetSetOptionExW vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetOptionExW($/;" f +InternetSetOptionW vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetOptionW($/;" f +InternetSetPerSiteCookieDecisionA vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetPerSiteCookieDecisionA($/;" f +InternetSetPerSiteCookieDecisionW vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetPerSiteCookieDecisionW($/;" f +InternetSetStatusCallbackA vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetStatusCallbackA($/;" f +InternetSetStatusCallbackW vendor/winapi/src/um/wininet.rs /^ pub fn InternetSetStatusCallbackW($/;" f +InternetTimeFromSystemTimeA vendor/winapi/src/um/wininet.rs /^ pub fn InternetTimeFromSystemTimeA($/;" f +InternetTimeFromSystemTimeW vendor/winapi/src/um/wininet.rs /^ pub fn InternetTimeFromSystemTimeW($/;" f +InternetTimeToSystemTimeA vendor/winapi/src/um/wininet.rs /^ pub fn InternetTimeToSystemTimeA($/;" f +InternetTimeToSystemTimeW vendor/winapi/src/um/wininet.rs /^ pub fn InternetTimeToSystemTimeW($/;" f +InternetUnlockRequestFile vendor/winapi/src/um/wininet.rs /^ pub fn InternetUnlockRequestFile($/;" f +InternetWriteFile vendor/winapi/src/um/wininet.rs /^ pub fn InternetWriteFile($/;" f +IntersectClipRect vendor/winapi/src/um/wingdi.rs /^ pub fn IntersectClipRect($/;" f +IntersectRect vendor/winapi/src/um/winuser.rs /^ pub fn IntersectRect($/;" f +Interval vendor/nix/src/sys/time.rs /^ Interval(TimeSpec),$/;" e enum:timer::Expiration +IntervalDelayed vendor/nix/src/sys/time.rs /^ IntervalDelayed(TimeSpec, TimeSpec),$/;" e enum:timer::Expiration +IntlLangMemoizer vendor/fluent-bundle/src/bundle.rs /^impl crate::memoizer::MemoizerKind for IntlLangMemoizer {$/;" c +IntlLangMemoizer vendor/fluent-bundle/src/concurrent.rs /^impl MemoizerKind for IntlLangMemoizer {$/;" c +IntlLangMemoizer vendor/intl-memoizer/src/concurrent.rs /^impl IntlLangMemoizer {$/;" c +IntlLangMemoizer vendor/intl-memoizer/src/concurrent.rs /^pub struct IntlLangMemoizer {$/;" s +IntlLangMemoizer vendor/intl-memoizer/src/lib.rs /^impl IntlLangMemoizer {$/;" c +IntlLangMemoizer vendor/intl-memoizer/src/lib.rs /^pub struct IntlLangMemoizer {$/;" s +IntlMemoizer vendor/intl-memoizer/README.md /^# IntlMemoizer$/;" c +IntlMemoizer vendor/intl-memoizer/src/lib.rs /^impl IntlMemoizer {$/;" c +IntlMemoizer vendor/intl-memoizer/src/lib.rs /^pub struct IntlMemoizer {$/;" s +IntmaxT builtins_rust/shopt/src/lib.rs /^pub type IntmaxT = libc::c_long;$/;" t +IntoAsyncRead vendor/futures-util/src/stream/try_stream/into_async_read.rs /^impl AsyncBufRead for IntoAsyncRead$/;" c +IntoAsyncRead vendor/futures-util/src/stream/try_stream/into_async_read.rs /^impl AsyncRead for IntoAsyncRead$/;" c +IntoAsyncRead vendor/futures-util/src/stream/try_stream/into_async_read.rs /^impl AsyncWrite for IntoAsyncRead$/;" c +IntoAsyncRead vendor/futures-util/src/stream/try_stream/into_async_read.rs /^impl IntoAsyncRead$/;" c +IntoFn vendor/futures-util/src/fns.rs /^impl FnOnce1 for IntoFn$/;" c +IntoFn vendor/futures-util/src/fns.rs /^impl Default for IntoFn {$/;" c +IntoFn vendor/futures-util/src/fns.rs /^pub struct IntoFn(PhantomData T>);$/;" s +IntoFuture vendor/futures-util/src/future/try_future/into_future.rs /^impl FusedFuture for IntoFuture {$/;" c +IntoFuture vendor/futures-util/src/future/try_future/into_future.rs /^impl Future for IntoFuture {$/;" c +IntoFuture vendor/futures-util/src/future/try_future/into_future.rs /^impl IntoFuture {$/;" c +IntoIter vendor/chunky-vec/src/lib.rs /^ type IntoIter = Iter<'a, T>;$/;" t implementation:ChunkyVec +IntoIter vendor/chunky-vec/src/lib.rs /^ type IntoIter = IterMut<'a, T>;$/;" t implementation:ChunkyVec +IntoIter vendor/elsa/src/vec.rs /^ type IntoIter = Iter<'a, T>;$/;" t implementation:FrozenVec +IntoIter vendor/fluent-bundle/src/args.rs /^ type IntoIter = std::vec::IntoIter;$/;" t implementation:FluentArgs +IntoIter vendor/fluent-fallback/src/cache.rs /^ type IntoIter = CacheIter<'a, I, R>;$/;" t +IntoIter vendor/futures-util/src/stream/futures_unordered/iter.rs /^impl ExactSizeIterator for IntoIter {}$/;" c +IntoIter vendor/futures-util/src/stream/futures_unordered/iter.rs /^impl Iterator for IntoIter {$/;" c +IntoIter vendor/futures-util/src/stream/futures_unordered/iter.rs /^pub struct IntoIter {$/;" s +IntoIter vendor/futures-util/src/stream/futures_unordered/iter.rs /^unsafe impl Send for IntoIter {}$/;" c +IntoIter vendor/futures-util/src/stream/futures_unordered/iter.rs /^unsafe impl Sync for IntoIter {}$/;" c +IntoIter vendor/futures-util/src/stream/futures_unordered/mod.rs /^ type IntoIter = IntoIter;$/;" t implementation:FuturesUnordered +IntoIter vendor/futures-util/src/stream/futures_unordered/mod.rs /^ type IntoIter = Iter<'a, Fut>;$/;" t implementation:FuturesUnordered +IntoIter vendor/futures-util/src/stream/futures_unordered/mod.rs /^ type IntoIter = IterMut<'a, Fut>;$/;" t implementation:FuturesUnordered +IntoIter vendor/futures-util/src/stream/select_all.rs /^ type IntoIter = IntoIter;$/;" t implementation:SelectAll +IntoIter vendor/futures-util/src/stream/select_all.rs /^ type IntoIter = Iter<'a, St>;$/;" t implementation:SelectAll +IntoIter vendor/futures-util/src/stream/select_all.rs /^ type IntoIter = IterMut<'a, St>;$/;" t implementation:SelectAll +IntoIter vendor/futures-util/src/stream/select_all.rs /^impl ExactSizeIterator for IntoIter {}$/;" c +IntoIter vendor/futures-util/src/stream/select_all.rs /^impl Iterator for IntoIter {$/;" c +IntoIter vendor/futures-util/src/stream/select_all.rs /^pub struct IntoIter(futures_unordered::IntoIter>);$/;" s +IntoIter vendor/nix/src/dir.rs /^ type IntoIter = OwningIter;$/;" t implementation:Dir +IntoIter vendor/nix/src/net/if_.rs /^ type IntoIter = InterfacesIter<'a>;$/;" t implementation:if_nameindex::Interfaces +IntoIter vendor/proc-macro2/src/fallback.rs /^ type IntoIter = TokenTreeIter;$/;" t implementation:TokenStream +IntoIter vendor/proc-macro2/src/lib.rs /^ type IntoIter = IntoIter;$/;" t implementation:token_stream::TokenStream +IntoIter vendor/proc-macro2/src/lib.rs /^ impl Debug for IntoIter {$/;" c module:token_stream +IntoIter vendor/proc-macro2/src/lib.rs /^ impl Iterator for IntoIter {$/;" c module:token_stream +IntoIter vendor/proc-macro2/src/lib.rs /^ pub struct IntoIter {$/;" s module:token_stream +IntoIter vendor/proc-macro2/src/rcvec.rs /^ type IntoIter = RcVecIntoIter;$/;" t implementation:RcVecBuilder +IntoIter vendor/proc-macro2/src/wrapper.rs /^ type IntoIter = TokenTreeIter;$/;" t implementation:TokenStream +IntoIter vendor/slab/src/lib.rs /^ type IntoIter = IntoIter;$/;" t implementation:Slab +IntoIter vendor/slab/src/lib.rs /^ type IntoIter = Iter<'a, T>;$/;" t implementation:Slab +IntoIter vendor/slab/src/lib.rs /^ type IntoIter = IterMut<'a, T>;$/;" t implementation:Slab +IntoIter vendor/slab/src/lib.rs /^impl DoubleEndedIterator for IntoIter {$/;" c +IntoIter vendor/slab/src/lib.rs /^impl ExactSizeIterator for IntoIter {$/;" c +IntoIter vendor/slab/src/lib.rs /^impl FusedIterator for IntoIter {}$/;" c +IntoIter vendor/slab/src/lib.rs /^impl Iterator for IntoIter {$/;" c +IntoIter vendor/slab/src/lib.rs /^impl fmt::Debug for IntoIter$/;" c +IntoIter vendor/slab/src/lib.rs /^pub struct IntoIter {$/;" s +IntoIter vendor/smallvec/src/lib.rs /^ type IntoIter = IntoIter;$/;" t implementation:SmallVec +IntoIter vendor/smallvec/src/lib.rs /^ type IntoIter = slice::Iter<'a, A::Item>;$/;" t implementation:SmallVec +IntoIter vendor/smallvec/src/lib.rs /^ type IntoIter = slice::IterMut<'a, A::Item>;$/;" t implementation:SmallVec +IntoIter vendor/smallvec/src/lib.rs /^impl Clone for IntoIter$/;" c +IntoIter vendor/smallvec/src/lib.rs /^impl DoubleEndedIterator for IntoIter {$/;" c +IntoIter vendor/smallvec/src/lib.rs /^impl Drop for IntoIter {$/;" c +IntoIter vendor/smallvec/src/lib.rs /^impl ExactSizeIterator for IntoIter {}$/;" c +IntoIter vendor/smallvec/src/lib.rs /^impl FusedIterator for IntoIter {}$/;" c +IntoIter vendor/smallvec/src/lib.rs /^impl IntoIter {$/;" c +IntoIter vendor/smallvec/src/lib.rs /^impl Iterator for IntoIter {$/;" c +IntoIter vendor/smallvec/src/lib.rs /^impl fmt::Debug for IntoIter$/;" c +IntoIter vendor/smallvec/src/lib.rs /^pub struct IntoIter {$/;" s +IntoIter vendor/syn/src/data.rs /^ type IntoIter = punctuated::IntoIter;$/;" t implementation:Fields +IntoIter vendor/syn/src/data.rs /^ type IntoIter = punctuated::Iter<'a, Field>;$/;" t implementation:Fields +IntoIter vendor/syn/src/data.rs /^ type IntoIter = punctuated::IterMut<'a, Field>;$/;" t implementation:Fields +IntoIter vendor/syn/src/error.rs /^ type IntoIter = IntoIter;$/;" t implementation:Error +IntoIter vendor/syn/src/error.rs /^ type IntoIter = Iter<'a>;$/;" t implementation:Error +IntoIter vendor/syn/src/error.rs /^impl Iterator for IntoIter {$/;" c +IntoIter vendor/syn/src/error.rs /^pub struct IntoIter {$/;" s +IntoIter vendor/syn/src/punctuated.rs /^ type IntoIter = IntoIter;$/;" t implementation:Punctuated +IntoIter vendor/syn/src/punctuated.rs /^ type IntoIter = Iter<'a, T>;$/;" t implementation:Punctuated +IntoIter vendor/syn/src/punctuated.rs /^ type IntoIter = IterMut<'a, T>;$/;" t implementation:Punctuated +IntoIter vendor/syn/src/punctuated.rs /^impl Clone for IntoIter$/;" c +IntoIter vendor/syn/src/punctuated.rs /^impl DoubleEndedIterator for IntoIter {$/;" c +IntoIter vendor/syn/src/punctuated.rs /^impl ExactSizeIterator for IntoIter {$/;" c +IntoIter vendor/syn/src/punctuated.rs /^impl Iterator for IntoIter {$/;" c +IntoIter vendor/syn/src/punctuated.rs /^pub struct IntoIter {$/;" s +IntoPairs vendor/syn/src/punctuated.rs /^impl Clone for IntoPairs$/;" c +IntoPairs vendor/syn/src/punctuated.rs /^impl DoubleEndedIterator for IntoPairs {$/;" c +IntoPairs vendor/syn/src/punctuated.rs /^impl ExactSizeIterator for IntoPairs {$/;" c +IntoPairs vendor/syn/src/punctuated.rs /^impl Iterator for IntoPairs {$/;" c +IntoPairs vendor/syn/src/punctuated.rs /^pub struct IntoPairs {$/;" s +IntoSink vendor/futures-util/src/io/into_sink.rs /^impl> IntoSink {$/;" c +IntoSink vendor/futures-util/src/io/into_sink.rs /^impl> Sink for IntoSink {$/;" c +IntoSpans vendor/syn/src/span.rs /^pub trait IntoSpans {$/;" i +IntoStream vendor/futures-util/src/stream/try_stream/into_stream.rs /^impl, Item> Sink for IntoStream {$/;" c +IntoStream vendor/futures-util/src/stream/try_stream/into_stream.rs /^impl FusedStream for IntoStream {$/;" c +IntoStream vendor/futures-util/src/stream/try_stream/into_stream.rs /^impl Stream for IntoStream {$/;" c +IntoStream vendor/futures-util/src/stream/try_stream/into_stream.rs /^impl IntoStream {$/;" c +IntoUrl vendor/async-trait/tests/ui/consider-restricting.rs /^pub trait IntoUrl {}$/;" i +Introduction vendor/fluent-langneg/README.md /^Introduction$/;" s chapter:Fluent LangNeg +InvalidLanguage vendor/unic-langid-impl/src/parser/errors.rs /^ InvalidLanguage,$/;" e enum:ParserError +InvalidNull vendor/tinystr/src/lib.rs /^ InvalidNull,$/;" e enum:Error +InvalidSize vendor/tinystr/src/lib.rs /^ InvalidSize,$/;" e enum:Error +InvalidSubtag vendor/unic-langid-impl/src/parser/errors.rs /^ InvalidSubtag,$/;" e enum:ParserError +InvalidUnicodeEscapeSequence vendor/fluent-syntax/src/parser/errors.rs /^ InvalidUnicodeEscapeSequence(String),$/;" e enum:ErrorKind +InvalidateRect vendor/winapi/src/um/winuser.rs /^ pub fn InvalidateRect($/;" f +InvalidateRgn vendor/winapi/src/um/winuser.rs /^ pub fn InvalidateRgn($/;" f +InvertRect vendor/winapi/src/um/winuser.rs /^ pub fn InvertRect($/;" f +InvertRgn vendor/winapi/src/um/wingdi.rs /^ pub fn InvertRgn($/;" f +Io vendor/autocfg/src/error.rs /^ Io(io::Error),$/;" e enum:ErrorKind +Io vendor/thiserror/tests/test_from.rs /^ Io(#[from] io::Error),$/;" e enum:Many +IoPermissions vendor/libc/src/psp.rs /^pub type IoPermissions = i32;$/;" t +IoVec vendor/nix/src/sys/uio.rs /^impl<'a> IoVec<&'a [u8]> {$/;" c +IoVec vendor/nix/src/sys/uio.rs /^impl<'a> IoVec<&'a mut [u8]> {$/;" c +IoVec vendor/nix/src/sys/uio.rs /^impl IoVec {$/;" c +IoVec vendor/nix/src/sys/uio.rs /^pub struct IoVec(pub(crate) libc::iovec, PhantomData);$/;" s +IoVec vendor/nix/src/sys/uio.rs /^unsafe impl Send for IoVec where T: Send {}$/;" c +IoVec vendor/nix/src/sys/uio.rs /^unsafe impl Sync for IoVec where T: Sync {}$/;" c +IpReleaseAddress vendor/winapi/src/um/iphlpapi.rs /^ pub fn IpReleaseAddress($/;" f +IpRenewAddress vendor/winapi/src/um/iphlpapi.rs /^ pub fn IpRenewAddress($/;" f +Ipv4Addr vendor/quote/tests/ui/not-repeatable.rs /^struct Ipv4Addr;$/;" s +Ipx vendor/nix/src/sys/socket/addr.rs /^ Ipx = libc::AF_IPX,$/;" e enum:AddressFamily +Irda vendor/nix/src/sys/socket/addr.rs /^ Irda = libc::AF_IRDA,$/;" e enum:AddressFamily +IsAdminOverrideActive vendor/winapi/src/um/powrprof.rs /^ pub fn IsAdminOverrideActive($/;" f +IsAppThemed vendor/winapi/src/um/uxtheme.rs /^ pub fn IsAppThemed() -> BOOL;$/;" f +IsBadCodePtr vendor/winapi/src/um/winbase.rs /^ pub fn IsBadCodePtr($/;" f +IsBadHugeReadPtr vendor/winapi/src/um/winbase.rs /^ pub fn IsBadHugeReadPtr($/;" f +IsBadHugeWritePtr vendor/winapi/src/um/winbase.rs /^ pub fn IsBadHugeWritePtr($/;" f +IsBadReadPtr vendor/winapi/src/um/winbase.rs /^ pub fn IsBadReadPtr($/;" f +IsBadStringPtrA vendor/winapi/src/um/winbase.rs /^ pub fn IsBadStringPtrA($/;" f +IsBadStringPtrW vendor/winapi/src/um/winbase.rs /^ pub fn IsBadStringPtrW($/;" f +IsBadWritePtr vendor/winapi/src/um/winbase.rs /^ pub fn IsBadWritePtr($/;" f +IsBthLEUuidMatch vendor/winapi/src/um/bthledef.rs /^pub fn IsBthLEUuidMatch(uuid1: &BTH_LE_UUID, uuid2: &BTH_LE_UUID) -> bool {$/;" f +IsCharAlphaA vendor/winapi/src/um/winuser.rs /^ pub fn IsCharAlphaA($/;" f +IsCharAlphaNumericA vendor/winapi/src/um/winuser.rs /^ pub fn IsCharAlphaNumericA($/;" f +IsCharAlphaNumericW vendor/winapi/src/um/winuser.rs /^ pub fn IsCharAlphaNumericW($/;" f +IsCharAlphaW vendor/winapi/src/um/winuser.rs /^ pub fn IsCharAlphaW($/;" f +IsCharLowerA vendor/winapi/src/um/winuser.rs /^ pub fn IsCharLowerA($/;" f +IsCharLowerW vendor/winapi/src/um/winuser.rs /^ pub fn IsCharLowerW($/;" f +IsCharUpperA vendor/winapi/src/um/winuser.rs /^ pub fn IsCharUpperA($/;" f +IsCharUpperW vendor/winapi/src/um/winuser.rs /^ pub fn IsCharUpperW($/;" f +IsChild vendor/winapi/src/um/winuser.rs /^ pub fn IsChild($/;" f +IsClipboardFormatAvailable vendor/winapi/src/um/winuser.rs /^ pub fn IsClipboardFormatAvailable($/;" f +IsCompositionActive vendor/winapi/src/um/uxtheme.rs /^ pub fn IsCompositionActive() -> BOOL;$/;" f +IsDBCSLeadByte vendor/winapi/src/um/winnls.rs /^ pub fn IsDBCSLeadByte($/;" f +IsDBCSLeadByteEx vendor/winapi/src/um/winnls.rs /^ pub fn IsDBCSLeadByteEx($/;" f +IsDebuggerPresent vendor/winapi/src/um/debugapi.rs /^ pub fn IsDebuggerPresent() -> BOOL;$/;" f +IsDialogMessageA vendor/winapi/src/um/winuser.rs /^ pub fn IsDialogMessageA($/;" f +IsDialogMessageW vendor/winapi/src/um/winuser.rs /^ pub fn IsDialogMessageW($/;" f +IsDlgButtonChecked vendor/winapi/src/um/winuser.rs /^ pub fn IsDlgButtonChecked($/;" f +IsEnclaveTypeSupported vendor/winapi/src/um/enclaveapi.rs /^ pub fn IsEnclaveTypeSupported($/;" f +IsEqualDevPropKey vendor/winapi/src/shared/devpropdef.rs /^pub fn IsEqualDevPropKey(a: &DEVPROPKEY, b: &DEVPROPKEY) -> bool {$/;" f +IsEqualGUID vendor/winapi/src/shared/guiddef.rs /^pub fn IsEqualGUID(g1: &GUID, g2: &GUID) -> bool {$/;" f +IsEqualPropertyKey vendor/winapi/src/um/propkeydef.rs /^pub fn IsEqualPropertyKey(a: &PROPERTYKEY, b: &PROPERTYKEY) -> bool {$/;" f +IsErrorPropagationEnabled vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn IsErrorPropagationEnabled() -> BOOL;$/;" f +IsGUIThread vendor/winapi/src/um/winuser.rs /^ pub fn IsGUIThread($/;" f +IsHungAppWindow vendor/winapi/src/um/winuser.rs /^ pub fn IsHungAppWindow($/;" f +IsIconic vendor/winapi/src/um/winuser.rs /^ pub fn IsIconic($/;" f +IsImmersiveProcess vendor/winapi/src/um/winuser.rs /^ pub fn IsImmersiveProcess($/;" f +IsLFNDriveA vendor/winapi/src/um/shellapi.rs /^ pub fn IsLFNDriveA($/;" f +IsLFNDriveW vendor/winapi/src/um/shellapi.rs /^ pub fn IsLFNDriveW($/;" f +IsMITMProtectionRequired vendor/winapi/src/shared/bthdef.rs /^pub fn IsMITMProtectionRequired(requirements: AUTHENTICATION_REQUIREMENTS) -> bool {$/;" f +IsMenu vendor/winapi/src/um/winuser.rs /^ pub fn IsMenu($/;" f +IsMouseInPointerEnabled vendor/winapi/src/um/winuser.rs /^ pub fn IsMouseInPointerEnabled() -> BOOL;$/;" f +IsNLSDefinedString vendor/winapi/src/um/winnls.rs /^ pub fn IsNLSDefinedString($/;" f +IsNativeVhdBoot vendor/winapi/src/um/winbase.rs /^ pub fn IsNativeVhdBoot($/;" f +IsNonStandardBusImplementation vendor/winapi/src/um/opmapi.rs /^pub fn IsNonStandardBusImplementation(ulBusTypeAndImplementation: ULONG) -> ULONG {$/;" f +IsNormalizedString vendor/winapi/src/um/winnls.rs /^ pub fn IsNormalizedString($/;" f +IsProcessCritical vendor/winapi/src/um/processthreadsapi.rs /^ pub fn IsProcessCritical($/;" f +IsProcessDPIAware vendor/winapi/src/um/winuser.rs /^ pub fn IsProcessDPIAware() -> BOOL;$/;" f +IsProcessInJob vendor/winapi/src/um/jobapi.rs /^ pub fn IsProcessInJob($/;" f +IsProcessorFeaturePresent vendor/winapi/src/um/processthreadsapi.rs /^ pub fn IsProcessorFeaturePresent($/;" f +IsPwrHibernateAllowed vendor/winapi/src/um/powrprof.rs /^ pub fn IsPwrHibernateAllowed() -> BOOLEAN;$/;" f +IsPwrShutdownAllowed vendor/winapi/src/um/powrprof.rs /^ pub fn IsPwrShutdownAllowed() -> BOOLEAN;$/;" f +IsPwrSuspendAllowed vendor/winapi/src/um/powrprof.rs /^ pub fn IsPwrSuspendAllowed() -> BOOLEAN;$/;" f +IsRectEmpty vendor/winapi/src/um/winuser.rs /^ pub fn IsRectEmpty($/;" f +IsReparseTagDirectory vendor/winapi/src/um/winnt.rs /^pub fn IsReparseTagDirectory(_tag: DWORD) -> bool {$/;" f +IsReparseTagMicrosoft vendor/winapi/src/um/winnt.rs /^pub fn IsReparseTagMicrosoft(_tag: DWORD) -> bool {$/;" f +IsReparseTagNameSurrogate vendor/winapi/src/um/winnt.rs /^pub fn IsReparseTagNameSurrogate(_tag: DWORD) -> bool {$/;" f +IsSystemResumeAutomatic vendor/winapi/src/um/winbase.rs /^ pub fn IsSystemResumeAutomatic() -> BOOL;$/;" f +IsThemeActive vendor/winapi/src/um/uxtheme.rs /^ pub fn IsThemeActive() -> BOOL;$/;" f +IsThemeBackgroundPartiallyTransparent vendor/winapi/src/um/uxtheme.rs /^ pub fn IsThemeBackgroundPartiallyTransparent($/;" f +IsThemeDialogTextureEnabled vendor/winapi/src/um/uxtheme.rs /^ pub fn IsThemeDialogTextureEnabled($/;" f +IsThemePartDefined vendor/winapi/src/um/uxtheme.rs /^ pub fn IsThemePartDefined($/;" f +IsThreadAFiber vendor/winapi/src/um/fibersapi.rs /^ pub fn IsThreadAFiber() -> BOOL;$/;" f +IsThreadpoolTimerSet vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn IsThreadpoolTimerSet($/;" f +IsTokenRestricted vendor/winapi/src/um/securitybaseapi.rs /^ pub fn IsTokenRestricted($/;" f +IsTokenUntrusted vendor/winapi/src/um/winbase.rs /^ pub fn IsTokenUntrusted($/;" f +IsTouchWindow vendor/winapi/src/um/winuser.rs /^ pub fn IsTouchWindow($/;" f +IsValidAcl vendor/winapi/src/um/securitybaseapi.rs /^ pub fn IsValidAcl($/;" f +IsValidCodePage vendor/winapi/src/um/winnls.rs /^ pub fn IsValidCodePage($/;" f +IsValidDevmodeA vendor/winapi/src/um/winspool.rs /^ pub fn IsValidDevmodeA($/;" f +IsValidDevmodeW vendor/winapi/src/um/winspool.rs /^ pub fn IsValidDevmodeW($/;" f +IsValidDpiAwarenessContext vendor/winapi/src/um/winuser.rs /^ pub fn IsValidDpiAwarenessContext($/;" f +IsValidLanguageGroup vendor/winapi/src/um/winnls.rs /^ pub fn IsValidLanguageGroup($/;" f +IsValidLocale vendor/winapi/src/um/winnls.rs /^ pub fn IsValidLocale($/;" f +IsValidLocaleName vendor/winapi/src/um/winnls.rs /^ pub fn IsValidLocaleName($/;" f +IsValidNLSVersion vendor/winapi/src/um/winnls.rs /^ pub fn IsValidNLSVersion($/;" f +IsValidSecurityDescriptor vendor/winapi/src/um/securitybaseapi.rs /^ pub fn IsValidSecurityDescriptor($/;" f +IsValidSid vendor/winapi/src/um/securitybaseapi.rs /^ pub fn IsValidSid($/;" f +IsVirtualDiskFileShared vendor/winapi/src/um/winnt.rs /^pub fn IsVirtualDiskFileShared(HandleState: SharedVirtualDiskHandleState) -> bool {$/;" f +IsVolumeSnapshotted vendor/winapi/src/um/vsbackup.rs /^ pub fn IsVolumeSnapshotted($/;" f +IsWellKnownSid vendor/winapi/src/um/securitybaseapi.rs /^ pub fn IsWellKnownSid($/;" f +IsWinEventHookInstalled vendor/winapi/src/um/winuser.rs /^ pub fn IsWinEventHookInstalled($/;" f +IsWindow vendor/winapi/src/um/winuser.rs /^ pub fn IsWindow($/;" f +IsWindowEnabled vendor/winapi/src/um/winuser.rs /^ pub fn IsWindowEnabled($/;" f +IsWindowUnicode vendor/winapi/src/um/winuser.rs /^ pub fn IsWindowUnicode($/;" f +IsWindowVisible vendor/winapi/src/um/winuser.rs /^ pub fn IsWindowVisible($/;" f +IsWow64Message vendor/winapi/src/um/winuser.rs /^ pub fn IsWow64Message() -> BOOL;$/;" f +IsWow64Process vendor/winapi/src/um/wow64apiset.rs /^ pub fn IsWow64Process($/;" f +IsWow64Process2 vendor/winapi/src/um/wow64apiset.rs /^ pub fn IsWow64Process2($/;" f +IsZoomed vendor/winapi/src/um/winuser.rs /^ pub fn IsZoomed($/;" f +Isdn vendor/nix/src/sys/socket/addr.rs /^ Isdn = libc::AF_ISDN,$/;" e enum:AddressFamily +Iso vendor/nix/src/sys/socket/addr.rs /^ Iso = libc::AF_ISO,$/;" e enum:AddressFamily +Issue1 vendor/async-trait/tests/test.rs /^ trait Issue1 {$/;" i module:issue1 +Issue11 vendor/async-trait/tests/test.rs /^ trait Issue11 {$/;" i module:issue11 +Issue15 vendor/async-trait/tests/test.rs /^ trait Issue15 {$/;" i module:issue15 +Issue17 vendor/async-trait/tests/test.rs /^ trait Issue17 {$/;" i module:issue17 +Issue2 vendor/async-trait/tests/test.rs /^ pub trait Issue2: Future {$/;" i module:issue2 +Issue23 vendor/async-trait/tests/test.rs /^ pub trait Issue23 {$/;" i module:issue23 +Issue9 vendor/async-trait/tests/test.rs /^ pub trait Issue9: Sized + Send {$/;" i module:issue9 +Item vendor/async-trait/src/expand.rs /^impl ToTokens for Item {$/;" c +Item vendor/async-trait/src/parse.rs /^impl Parse for Item {$/;" c +Item vendor/async-trait/src/parse.rs /^pub enum Item {$/;" g +Item vendor/chunky-vec/src/lib.rs /^ type Item = &'a T;$/;" t implementation:ChunkyVec +Item vendor/chunky-vec/src/lib.rs /^ type Item = &'a T;$/;" t implementation:Iter +Item vendor/chunky-vec/src/lib.rs /^ type Item = &'a mut T;$/;" t implementation:ChunkyVec +Item vendor/chunky-vec/src/lib.rs /^ type Item = &'a mut T;$/;" t implementation:IterMut +Item vendor/elsa/src/vec.rs /^ type Item = &'a T::Target;$/;" t implementation:FrozenVec +Item vendor/elsa/src/vec.rs /^ type Item = &'a T::Target;$/;" t implementation:Iter +Item vendor/fluent-bundle/src/args.rs /^ type Item = (Cow<'args, str>, FluentValue<'args>);$/;" t implementation:FluentArgs +Item vendor/fluent-fallback/examples/simple-fallback.rs /^ type Item = FluentBundleResult;$/;" t implementation:BundleIter +Item vendor/fluent-fallback/src/cache.rs /^ type Item = &'a I::Item;$/;" t +Item vendor/fluent-fallback/src/cache.rs /^ type Item = &'a S::Item;$/;" t +Item vendor/fluent-fallback/tests/localization_test.rs /^ type Item = FluentBundleResult;$/;" t implementation:BundleIter +Item vendor/fluent-resmgr/src/resource_manager.rs /^ type Item = FluentBundleResult;$/;" t implementation:BundleIter +Item vendor/futures-channel/benches/sync_mpsc.rs /^ type Item = u32;$/;" t implementation:TestSender +Item vendor/futures-channel/src/mpsc/mod.rs /^ type Item = T;$/;" t implementation:Receiver +Item vendor/futures-channel/src/mpsc/mod.rs /^ type Item = T;$/;" t implementation:UnboundedReceiver +Item vendor/futures-core/src/stream.rs /^ type Item = S::Item;$/;" t implementation:if_alloc::AssertUnwindSafe +Item vendor/futures-core/src/stream.rs /^ type Item = S::Item;$/;" t implementation:if_alloc::Box +Item vendor/futures-core/src/stream.rs /^ type Item = ::Item;$/;" t +Item vendor/futures-core/src/stream.rs /^ type Item = S::Item;$/;" t implementation:S +Item vendor/futures-core/src/stream.rs /^ type Item;$/;" t interface:Stream +Item vendor/futures-executor/src/local_pool.rs /^ type Item = S::Item;$/;" t implementation:BlockingStream +Item vendor/futures-util/benches_disabled/bilock.rs /^ type Item = BiLockAcquired;$/;" t implementation:bench::LockStream +Item vendor/futures-util/src/abortable.rs /^ type Item = St::Item;$/;" t +Item vendor/futures-util/src/compat/compat01as03.rs /^ type Item = Result;$/;" t +Item vendor/futures-util/src/compat/compat01as03.rs /^ type Item = Result;$/;" t implementation:Compat01As03 +Item vendor/futures-util/src/compat/compat03as01.rs /^ type Item = Fut::Ok;$/;" t +Item vendor/futures-util/src/compat/compat03as01.rs /^ type Item = St::Ok;$/;" t +Item vendor/futures-util/src/future/either.rs /^ type Item = A::Item;$/;" t +Item vendor/futures-util/src/future/future/flatten.rs /^ type Item = ::Item;$/;" t +Item vendor/futures-util/src/future/poll_immediate.rs /^ type Item = Poll;$/;" t +Item vendor/futures-util/src/future/try_future/try_flatten.rs /^ type Item = Result<::Ok, Fut::Error>;$/;" t +Item vendor/futures-util/src/io/lines.rs /^ type Item = io::Result;$/;" t implementation:Lines +Item vendor/futures-util/src/sink/buffer.rs /^ type Item = S::Item;$/;" t +Item vendor/futures-util/src/sink/err_into.rs /^ type Item = S::Item;$/;" t +Item vendor/futures-util/src/sink/map_err.rs /^ type Item = S::Item;$/;" t implementation:SinkMapErr +Item vendor/futures-util/src/sink/with.rs /^ type Item = S::Item;$/;" t +Item vendor/futures-util/src/sink/with_flat_map.rs /^ type Item = S::Item;$/;" t +Item vendor/futures-util/src/stream/empty.rs /^ type Item = T;$/;" t implementation:Empty +Item vendor/futures-util/src/stream/futures_ordered.rs /^ type Item = Fut::Output;$/;" t implementation:FuturesOrdered +Item vendor/futures-util/src/stream/futures_unordered/iter.rs /^ type Item = &'a Fut;$/;" t implementation:Iter +Item vendor/futures-util/src/stream/futures_unordered/iter.rs /^ type Item = &'a mut Fut;$/;" t implementation:IterMut +Item vendor/futures-util/src/stream/futures_unordered/iter.rs /^ type Item = Fut;$/;" t implementation:IntoIter +Item vendor/futures-util/src/stream/futures_unordered/iter.rs /^ type Item = Pin<&'a Fut>;$/;" t implementation:IterPinRef +Item vendor/futures-util/src/stream/futures_unordered/iter.rs /^ type Item = Pin<&'a mut Fut>;$/;" t implementation:IterPinMut +Item vendor/futures-util/src/stream/futures_unordered/mod.rs /^ type Item = &'a Fut;$/;" t implementation:FuturesUnordered +Item vendor/futures-util/src/stream/futures_unordered/mod.rs /^ type Item = &'a mut Fut;$/;" t implementation:FuturesUnordered +Item vendor/futures-util/src/stream/futures_unordered/mod.rs /^ type Item = Fut::Output;$/;" t implementation:FuturesUnordered +Item vendor/futures-util/src/stream/futures_unordered/mod.rs /^ type Item = Fut;$/;" t implementation:FuturesUnordered +Item vendor/futures-util/src/stream/iter.rs /^ type Item = I::Item;$/;" t +Item vendor/futures-util/src/stream/once.rs /^ type Item = Fut::Output;$/;" t implementation:Once +Item vendor/futures-util/src/stream/pending.rs /^ type Item = T;$/;" t implementation:Pending +Item vendor/futures-util/src/stream/poll_fn.rs /^ type Item = T;$/;" t +Item vendor/futures-util/src/stream/poll_immediate.rs /^ type Item = Poll;$/;" t +Item vendor/futures-util/src/stream/repeat.rs /^ type Item = T;$/;" t +Item vendor/futures-util/src/stream/repeat_with.rs /^ type Item = A;$/;" t implementation:RepeatWith +Item vendor/futures-util/src/stream/select.rs /^ type Item = St1::Item;$/;" t +Item vendor/futures-util/src/stream/select_all.rs /^ type Item = &'a St;$/;" t implementation:Iter +Item vendor/futures-util/src/stream/select_all.rs /^ type Item = &'a St;$/;" t implementation:SelectAll +Item vendor/futures-util/src/stream/select_all.rs /^ type Item = &'a mut St;$/;" t implementation:IterMut +Item vendor/futures-util/src/stream/select_all.rs /^ type Item = &'a mut St;$/;" t implementation:SelectAll +Item vendor/futures-util/src/stream/select_all.rs /^ type Item = St::Item;$/;" t implementation:SelectAll +Item vendor/futures-util/src/stream/select_all.rs /^ type Item = St;$/;" t implementation:IntoIter +Item vendor/futures-util/src/stream/select_all.rs /^ type Item = St;$/;" t implementation:SelectAll +Item vendor/futures-util/src/stream/select_with_strategy.rs /^ type Item = St1::Item;$/;" t +Item vendor/futures-util/src/stream/stream/buffer_unordered.rs /^ type Item = ::Output;$/;" t +Item vendor/futures-util/src/stream/stream/buffered.rs /^ type Item = ::Output;$/;" t +Item vendor/futures-util/src/stream/stream/catch_unwind.rs /^ type Item = Result>;$/;" t implementation:CatchUnwind +Item vendor/futures-util/src/stream/stream/chain.rs /^ type Item = St1::Item;$/;" t +Item vendor/futures-util/src/stream/stream/chunks.rs /^ type Item = Vec;$/;" t implementation:Chunks +Item vendor/futures-util/src/stream/stream/cycle.rs /^ type Item = St::Item;$/;" t +Item vendor/futures-util/src/stream/stream/enumerate.rs /^ type Item = (usize, St::Item);$/;" t implementation:Enumerate +Item vendor/futures-util/src/stream/stream/filter.rs /^ type Item = St::Item;$/;" t +Item vendor/futures-util/src/stream/stream/filter_map.rs /^ type Item = T;$/;" t +Item vendor/futures-util/src/stream/stream/flatten.rs /^ type Item = ::Item;$/;" t +Item vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ type Item = ::Item;$/;" t +Item vendor/futures-util/src/stream/stream/fuse.rs /^ type Item = S::Item;$/;" t implementation:Fuse +Item vendor/futures-util/src/stream/stream/map.rs /^ type Item = F::Output;$/;" t +Item vendor/futures-util/src/stream/stream/peek.rs /^ type Item = S::Item;$/;" t implementation:Peekable +Item vendor/futures-util/src/stream/stream/ready_chunks.rs /^ type Item = Vec;$/;" t implementation:ReadyChunks +Item vendor/futures-util/src/stream/stream/scan.rs /^ type Item = B;$/;" t +Item vendor/futures-util/src/stream/stream/skip.rs /^ type Item = St::Item;$/;" t implementation:Skip +Item vendor/futures-util/src/stream/stream/skip_while.rs /^ type Item = St::Item;$/;" t +Item vendor/futures-util/src/stream/stream/split.rs /^ type Item = S::Item;$/;" t implementation:SplitStream +Item vendor/futures-util/src/stream/stream/take.rs /^ type Item = St::Item;$/;" t +Item vendor/futures-util/src/stream/stream/take_until.rs /^ type Item = St::Item;$/;" t +Item vendor/futures-util/src/stream/stream/take_while.rs /^ type Item = St::Item;$/;" t +Item vendor/futures-util/src/stream/stream/then.rs /^ type Item = Fut::Output;$/;" t +Item vendor/futures-util/src/stream/stream/zip.rs /^ type Item = (St1::Item, St2::Item);$/;" t +Item vendor/futures-util/src/stream/try_stream/and_then.rs /^ type Item = Result;$/;" t +Item vendor/futures-util/src/stream/try_stream/into_stream.rs /^ type Item = Result;$/;" t implementation:IntoStream +Item vendor/futures-util/src/stream/try_stream/or_else.rs /^ type Item = Result;$/;" t +Item vendor/futures-util/src/stream/try_stream/try_buffer_unordered.rs /^ type Item = Result<::Ok, St::Error>;$/;" t +Item vendor/futures-util/src/stream/try_stream/try_buffered.rs /^ type Item = Result<::Ok, St::Error>;$/;" t +Item vendor/futures-util/src/stream/try_stream/try_chunks.rs /^ type Item = Result, TryChunksError>;$/;" t implementation:TryChunks +Item vendor/futures-util/src/stream/try_stream/try_filter.rs /^ type Item = Result;$/;" t +Item vendor/futures-util/src/stream/try_stream/try_filter_map.rs /^ type Item = Result;$/;" t +Item vendor/futures-util/src/stream/try_stream/try_flatten.rs /^ type Item = Result<::Ok, ::Error>;$/;" t +Item vendor/futures-util/src/stream/try_stream/try_skip_while.rs /^ type Item = Result;$/;" t +Item vendor/futures-util/src/stream/try_stream/try_take_while.rs /^ type Item = Result;$/;" t +Item vendor/futures-util/src/stream/try_stream/try_unfold.rs /^ type Item = Result;$/;" t +Item vendor/futures-util/src/stream/unfold.rs /^ type Item = Item;$/;" t +Item vendor/futures/tests/auto_traits.rs /^ type Item = T;$/;" t implementation:PinnedStream +Item vendor/futures/tests/future_try_flatten_stream.rs /^ type Item = Result;$/;" t implementation:assert_impls::StreamSink +Item vendor/futures/tests/future_try_flatten_stream.rs /^ type Item = Result;$/;" t implementation:failed_future::PanickingStream +Item vendor/futures/tests/stream.rs /^ type Item = DataStream;$/;" t implementation:flatten_unordered::Interchanger +Item vendor/futures/tests/stream.rs /^ type Item = u8;$/;" t implementation:flatten_unordered::DataStream +Item vendor/futures/tests/stream.rs /^ type Item = usize;$/;" t implementation:SlowStream +Item vendor/futures/tests/stream_split.rs /^ type Item = T::Item;$/;" t implementation:test_split::Join +Item vendor/futures/tests_disabled/bilock.rs /^ type Item = BiLock;$/;" t implementation:concurrent::Increment +Item vendor/futures/tests_disabled/stream.rs /^ type Item = ();$/;" t implementation:peek::Peek +Item vendor/futures/tests_disabled/stream.rs /^ type Item = T;$/;" t +Item vendor/memchr/src/memchr/iter.rs /^ type Item = usize;$/;" t implementation:Memchr +Item vendor/memchr/src/memchr/iter.rs /^ type Item = usize;$/;" t implementation:Memchr2 +Item vendor/memchr/src/memchr/iter.rs /^ type Item = usize;$/;" t implementation:Memchr3 +Item vendor/memchr/src/memmem/mod.rs /^ type Item = usize;$/;" t implementation:FindIter +Item vendor/memchr/src/memmem/mod.rs /^ type Item = usize;$/;" t implementation:FindRevIter +Item vendor/nix/src/dir.rs /^ type Item = Result;$/;" t implementation:Dir +Item vendor/nix/src/dir.rs /^ type Item = Result;$/;" t implementation:Iter +Item vendor/nix/src/dir.rs /^ type Item = Result;$/;" t implementation:OwningIter +Item vendor/nix/src/ifaddrs.rs /^ type Item = InterfaceAddress;$/;" t implementation:InterfaceAddressIterator +Item vendor/nix/src/net/if_.rs /^ type Item = &'a Interface;$/;" t implementation:if_nameindex::Interfaces +Item vendor/nix/src/net/if_.rs /^ type Item = &'a Interface;$/;" t implementation:if_nameindex::InterfacesIter +Item vendor/nix/src/sys/select.rs /^ type Item = RawFd;$/;" t implementation:Fds +Item vendor/nix/src/sys/signalfd.rs /^ type Item = siginfo;$/;" t implementation:SignalFd +Item vendor/proc-macro2/src/fallback.rs /^ type Item = TokenTree;$/;" t implementation:TokenStream +Item vendor/proc-macro2/src/lib.rs /^ type Item = TokenTree;$/;" t implementation:token_stream::IntoIter +Item vendor/proc-macro2/src/lib.rs /^ type Item = TokenTree;$/;" t implementation:token_stream::TokenStream +Item vendor/proc-macro2/src/rcvec.rs /^ type Item = T;$/;" t implementation:RcVecBuilder +Item vendor/proc-macro2/src/rcvec.rs /^ type Item = T;$/;" t implementation:RcVecIntoIter +Item vendor/proc-macro2/src/wrapper.rs /^ type Item = TokenTree;$/;" t implementation:TokenStream +Item vendor/proc-macro2/src/wrapper.rs /^ type Item = TokenTree;$/;" t implementation:TokenTreeIter +Item vendor/quote/src/runtime.rs /^ type Item = TokenTree;$/;" t implementation:push_lifetime::Lifetime +Item vendor/quote/src/runtime.rs /^ type Item = TokenTree;$/;" t implementation:push_lifetime_spanned::Lifetime +Item vendor/quote/src/runtime.rs /^ type Item = T::Item;$/;" t implementation:RepInterp +Item vendor/slab/src/lib.rs /^ type Item = (usize, &'a T);$/;" t implementation:Iter +Item vendor/slab/src/lib.rs /^ type Item = (usize, &'a T);$/;" t implementation:Slab +Item vendor/slab/src/lib.rs /^ type Item = (usize, &'a mut T);$/;" t implementation:IterMut +Item vendor/slab/src/lib.rs /^ type Item = (usize, &'a mut T);$/;" t implementation:Slab +Item vendor/slab/src/lib.rs /^ type Item = (usize, T);$/;" t implementation:IntoIter +Item vendor/slab/src/lib.rs /^ type Item = (usize, T);$/;" t implementation:Slab +Item vendor/slab/src/lib.rs /^ type Item = T;$/;" t implementation:Drain +Item vendor/smallvec/src/lib.rs /^ type Item = &'a A::Item;$/;" t implementation:SmallVec +Item vendor/smallvec/src/lib.rs /^ type Item = &'a mut A::Item;$/;" t implementation:SmallVec +Item vendor/smallvec/src/lib.rs /^ type Item = A::Item;$/;" t implementation:IntoIter +Item vendor/smallvec/src/lib.rs /^ type Item = A::Item;$/;" t implementation:SmallVec +Item vendor/smallvec/src/lib.rs /^ type Item = T::Item;$/;" t implementation:Drain +Item vendor/smallvec/src/lib.rs /^ type Item = T;$/;" t implementation:N +Item vendor/smallvec/src/lib.rs /^ type Item;$/;" t interface:Array +Item vendor/smallvec/src/lib.rs /^impl ToSmallVec for [A::Item]$/;" c +Item vendor/smallvec/src/tests.rs /^ type Item = PanicOnDoubleDrop;$/;" t implementation:insert_many_panic::BadIter +Item vendor/smallvec/src/tests.rs /^ type Item = T::Item;$/;" t implementation:MockHintIter +Item vendor/syn/src/data.rs /^ type Item = &'a Field;$/;" t implementation:Fields +Item vendor/syn/src/data.rs /^ type Item = &'a mut Field;$/;" t implementation:Fields +Item vendor/syn/src/data.rs /^ type Item = Field;$/;" t implementation:Fields +Item vendor/syn/src/error.rs /^ type Item = Error;$/;" t implementation:Error +Item vendor/syn/src/error.rs /^ type Item = Error;$/;" t implementation:IntoIter +Item vendor/syn/src/error.rs /^ type Item = Error;$/;" t implementation:Iter +Item vendor/syn/src/gen/clone.rs /^impl Clone for Item {$/;" c +Item vendor/syn/src/gen/debug.rs /^impl Debug for Item {$/;" c +Item vendor/syn/src/gen/eq.rs /^impl Eq for Item {}$/;" c +Item vendor/syn/src/gen/eq.rs /^impl PartialEq for Item {$/;" c +Item vendor/syn/src/gen/hash.rs /^impl Hash for Item {$/;" c +Item vendor/syn/src/gen_helper.rs /^ type Item = T;$/;" t implementation:fold::Punctuated +Item vendor/syn/src/gen_helper.rs /^ type Item = T;$/;" t implementation:fold::Vec +Item vendor/syn/src/gen_helper.rs /^ type Item;$/;" t interface:fold::FoldHelper +Item vendor/syn/src/generics.rs /^ type Item = &'a ConstParam;$/;" t implementation:ConstParams +Item vendor/syn/src/generics.rs /^ type Item = &'a LifetimeDef;$/;" t implementation:Lifetimes +Item vendor/syn/src/generics.rs /^ type Item = &'a TypeParam;$/;" t implementation:TypeParams +Item vendor/syn/src/generics.rs /^ type Item = &'a mut ConstParam;$/;" t implementation:ConstParamsMut +Item vendor/syn/src/generics.rs /^ type Item = &'a mut LifetimeDef;$/;" t implementation:LifetimesMut +Item vendor/syn/src/generics.rs /^ type Item = &'a mut TypeParam;$/;" t implementation:TypeParamsMut +Item vendor/syn/src/item.rs /^ impl Parse for Item {$/;" c module:parsing +Item vendor/syn/src/item.rs /^impl From for Item {$/;" c +Item vendor/syn/src/item.rs /^impl Item {$/;" c +Item vendor/syn/src/punctuated.rs /^ type Item = &'a T;$/;" t implementation:Iter +Item vendor/syn/src/punctuated.rs /^ type Item = &'a T;$/;" t implementation:PrivateIter +Item vendor/syn/src/punctuated.rs /^ type Item = &'a T;$/;" t implementation:Punctuated +Item vendor/syn/src/punctuated.rs /^ type Item = &'a mut T;$/;" t implementation:IterMut +Item vendor/syn/src/punctuated.rs /^ type Item = &'a mut T;$/;" t implementation:PrivateIterMut +Item vendor/syn/src/punctuated.rs /^ type Item = &'a mut T;$/;" t implementation:Punctuated +Item vendor/syn/src/punctuated.rs /^ type Item = Pair<&'a T, &'a P>;$/;" t implementation:Pairs +Item vendor/syn/src/punctuated.rs /^ type Item = Pair<&'a mut T, &'a mut P>;$/;" t implementation:PairsMut +Item vendor/syn/src/punctuated.rs /^ type Item = Pair;$/;" t implementation:IntoPairs +Item vendor/syn/src/punctuated.rs /^ type Item = T;$/;" t implementation:IntoIter +Item vendor/syn/src/punctuated.rs /^ type Item = T;$/;" t implementation:Punctuated +ItemConst vendor/syn/src/gen/clone.rs /^impl Clone for ItemConst {$/;" c +ItemConst vendor/syn/src/gen/debug.rs /^impl Debug for ItemConst {$/;" c +ItemConst vendor/syn/src/gen/eq.rs /^impl Eq for ItemConst {}$/;" c +ItemConst vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemConst {$/;" c +ItemConst vendor/syn/src/gen/hash.rs /^impl Hash for ItemConst {$/;" c +ItemConst vendor/syn/src/item.rs /^ impl Parse for ItemConst {$/;" c module:parsing +ItemConst vendor/syn/src/item.rs /^ impl ToTokens for ItemConst {$/;" c module:printing +ItemEnum vendor/syn/src/gen/clone.rs /^impl Clone for ItemEnum {$/;" c +ItemEnum vendor/syn/src/gen/debug.rs /^impl Debug for ItemEnum {$/;" c +ItemEnum vendor/syn/src/gen/eq.rs /^impl Eq for ItemEnum {}$/;" c +ItemEnum vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemEnum {$/;" c +ItemEnum vendor/syn/src/gen/hash.rs /^impl Hash for ItemEnum {$/;" c +ItemEnum vendor/syn/src/item.rs /^ impl Parse for ItemEnum {$/;" c module:parsing +ItemEnum vendor/syn/src/item.rs /^ impl ToTokens for ItemEnum {$/;" c module:printing +ItemExternCrate vendor/syn/src/gen/clone.rs /^impl Clone for ItemExternCrate {$/;" c +ItemExternCrate vendor/syn/src/gen/debug.rs /^impl Debug for ItemExternCrate {$/;" c +ItemExternCrate vendor/syn/src/gen/eq.rs /^impl Eq for ItemExternCrate {}$/;" c +ItemExternCrate vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemExternCrate {$/;" c +ItemExternCrate vendor/syn/src/gen/hash.rs /^impl Hash for ItemExternCrate {$/;" c +ItemExternCrate vendor/syn/src/item.rs /^ impl Parse for ItemExternCrate {$/;" c module:parsing +ItemExternCrate vendor/syn/src/item.rs /^ impl ToTokens for ItemExternCrate {$/;" c module:printing +ItemFn vendor/syn/src/gen/clone.rs /^impl Clone for ItemFn {$/;" c +ItemFn vendor/syn/src/gen/debug.rs /^impl Debug for ItemFn {$/;" c +ItemFn vendor/syn/src/gen/eq.rs /^impl Eq for ItemFn {}$/;" c +ItemFn vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemFn {$/;" c +ItemFn vendor/syn/src/gen/hash.rs /^impl Hash for ItemFn {$/;" c +ItemFn vendor/syn/src/item.rs /^ impl Parse for ItemFn {$/;" c module:parsing +ItemFn vendor/syn/src/item.rs /^ impl ToTokens for ItemFn {$/;" c module:printing +ItemForeignMod vendor/syn/src/gen/clone.rs /^impl Clone for ItemForeignMod {$/;" c +ItemForeignMod vendor/syn/src/gen/debug.rs /^impl Debug for ItemForeignMod {$/;" c +ItemForeignMod vendor/syn/src/gen/eq.rs /^impl Eq for ItemForeignMod {}$/;" c +ItemForeignMod vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemForeignMod {$/;" c +ItemForeignMod vendor/syn/src/gen/hash.rs /^impl Hash for ItemForeignMod {$/;" c +ItemForeignMod vendor/syn/src/item.rs /^ impl Parse for ItemForeignMod {$/;" c module:parsing +ItemForeignMod vendor/syn/src/item.rs /^ impl ToTokens for ItemForeignMod {$/;" c module:printing +ItemImpl vendor/syn/src/gen/clone.rs /^impl Clone for ItemImpl {$/;" c +ItemImpl vendor/syn/src/gen/debug.rs /^impl Debug for ItemImpl {$/;" c +ItemImpl vendor/syn/src/gen/eq.rs /^impl Eq for ItemImpl {}$/;" c +ItemImpl vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemImpl {$/;" c +ItemImpl vendor/syn/src/gen/hash.rs /^impl Hash for ItemImpl {$/;" c +ItemImpl vendor/syn/src/item.rs /^ impl Parse for ItemImpl {$/;" c module:parsing +ItemImpl vendor/syn/src/item.rs /^ impl ToTokens for ItemImpl {$/;" c module:printing +ItemMacro vendor/syn/src/gen/clone.rs /^impl Clone for ItemMacro {$/;" c +ItemMacro vendor/syn/src/gen/debug.rs /^impl Debug for ItemMacro {$/;" c +ItemMacro vendor/syn/src/gen/eq.rs /^impl Eq for ItemMacro {}$/;" c +ItemMacro vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemMacro {$/;" c +ItemMacro vendor/syn/src/gen/hash.rs /^impl Hash for ItemMacro {$/;" c +ItemMacro vendor/syn/src/item.rs /^ impl Parse for ItemMacro {$/;" c module:parsing +ItemMacro vendor/syn/src/item.rs /^ impl ToTokens for ItemMacro {$/;" c module:printing +ItemMacro2 vendor/syn/src/gen/clone.rs /^impl Clone for ItemMacro2 {$/;" c +ItemMacro2 vendor/syn/src/gen/debug.rs /^impl Debug for ItemMacro2 {$/;" c +ItemMacro2 vendor/syn/src/gen/eq.rs /^impl Eq for ItemMacro2 {}$/;" c +ItemMacro2 vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemMacro2 {$/;" c +ItemMacro2 vendor/syn/src/gen/hash.rs /^impl Hash for ItemMacro2 {$/;" c +ItemMacro2 vendor/syn/src/item.rs /^ impl Parse for ItemMacro2 {$/;" c module:parsing +ItemMacro2 vendor/syn/src/item.rs /^ impl ToTokens for ItemMacro2 {$/;" c module:printing +ItemMod vendor/syn/src/gen/clone.rs /^impl Clone for ItemMod {$/;" c +ItemMod vendor/syn/src/gen/debug.rs /^impl Debug for ItemMod {$/;" c +ItemMod vendor/syn/src/gen/eq.rs /^impl Eq for ItemMod {}$/;" c +ItemMod vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemMod {$/;" c +ItemMod vendor/syn/src/gen/hash.rs /^impl Hash for ItemMod {$/;" c +ItemMod vendor/syn/src/item.rs /^ impl Parse for ItemMod {$/;" c module:parsing +ItemMod vendor/syn/src/item.rs /^ impl ToTokens for ItemMod {$/;" c module:printing +ItemStatic vendor/syn/src/gen/clone.rs /^impl Clone for ItemStatic {$/;" c +ItemStatic vendor/syn/src/gen/debug.rs /^impl Debug for ItemStatic {$/;" c +ItemStatic vendor/syn/src/gen/eq.rs /^impl Eq for ItemStatic {}$/;" c +ItemStatic vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemStatic {$/;" c +ItemStatic vendor/syn/src/gen/hash.rs /^impl Hash for ItemStatic {$/;" c +ItemStatic vendor/syn/src/item.rs /^ impl Parse for ItemStatic {$/;" c module:parsing +ItemStatic vendor/syn/src/item.rs /^ impl ToTokens for ItemStatic {$/;" c module:printing +ItemStruct vendor/syn/src/gen/clone.rs /^impl Clone for ItemStruct {$/;" c +ItemStruct vendor/syn/src/gen/debug.rs /^impl Debug for ItemStruct {$/;" c +ItemStruct vendor/syn/src/gen/eq.rs /^impl Eq for ItemStruct {}$/;" c +ItemStruct vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemStruct {$/;" c +ItemStruct vendor/syn/src/gen/hash.rs /^impl Hash for ItemStruct {$/;" c +ItemStruct vendor/syn/src/item.rs /^ impl Parse for ItemStruct {$/;" c module:parsing +ItemStruct vendor/syn/src/item.rs /^ impl ToTokens for ItemStruct {$/;" c module:printing +ItemTrait vendor/syn/src/gen/clone.rs /^impl Clone for ItemTrait {$/;" c +ItemTrait vendor/syn/src/gen/debug.rs /^impl Debug for ItemTrait {$/;" c +ItemTrait vendor/syn/src/gen/eq.rs /^impl Eq for ItemTrait {}$/;" c +ItemTrait vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemTrait {$/;" c +ItemTrait vendor/syn/src/gen/hash.rs /^impl Hash for ItemTrait {$/;" c +ItemTrait vendor/syn/src/item.rs /^ impl Parse for ItemTrait {$/;" c module:parsing +ItemTrait vendor/syn/src/item.rs /^ impl ToTokens for ItemTrait {$/;" c module:printing +ItemTraitAlias vendor/syn/src/gen/clone.rs /^impl Clone for ItemTraitAlias {$/;" c +ItemTraitAlias vendor/syn/src/gen/debug.rs /^impl Debug for ItemTraitAlias {$/;" c +ItemTraitAlias vendor/syn/src/gen/eq.rs /^impl Eq for ItemTraitAlias {}$/;" c +ItemTraitAlias vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemTraitAlias {$/;" c +ItemTraitAlias vendor/syn/src/gen/hash.rs /^impl Hash for ItemTraitAlias {$/;" c +ItemTraitAlias vendor/syn/src/item.rs /^ impl Parse for ItemTraitAlias {$/;" c module:parsing +ItemTraitAlias vendor/syn/src/item.rs /^ impl ToTokens for ItemTraitAlias {$/;" c module:printing +ItemType vendor/syn/src/gen/clone.rs /^impl Clone for ItemType {$/;" c +ItemType vendor/syn/src/gen/debug.rs /^impl Debug for ItemType {$/;" c +ItemType vendor/syn/src/gen/eq.rs /^impl Eq for ItemType {}$/;" c +ItemType vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemType {$/;" c +ItemType vendor/syn/src/gen/hash.rs /^impl Hash for ItemType {$/;" c +ItemType vendor/syn/src/item.rs /^ impl Parse for ItemType {$/;" c module:parsing +ItemType vendor/syn/src/item.rs /^ impl ToTokens for ItemType {$/;" c module:printing +ItemUnion vendor/syn/src/gen/clone.rs /^impl Clone for ItemUnion {$/;" c +ItemUnion vendor/syn/src/gen/debug.rs /^impl Debug for ItemUnion {$/;" c +ItemUnion vendor/syn/src/gen/eq.rs /^impl Eq for ItemUnion {}$/;" c +ItemUnion vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemUnion {$/;" c +ItemUnion vendor/syn/src/gen/hash.rs /^impl Hash for ItemUnion {$/;" c +ItemUnion vendor/syn/src/item.rs /^ impl Parse for ItemUnion {$/;" c module:parsing +ItemUnion vendor/syn/src/item.rs /^ impl ToTokens for ItemUnion {$/;" c module:printing +ItemUse vendor/syn/src/gen/clone.rs /^impl Clone for ItemUse {$/;" c +ItemUse vendor/syn/src/gen/debug.rs /^impl Debug for ItemUse {$/;" c +ItemUse vendor/syn/src/gen/eq.rs /^impl Eq for ItemUse {}$/;" c +ItemUse vendor/syn/src/gen/eq.rs /^impl PartialEq for ItemUse {$/;" c +ItemUse vendor/syn/src/gen/hash.rs /^impl Hash for ItemUse {$/;" c +ItemUse vendor/syn/src/item.rs /^ impl Parse for ItemUse {$/;" c module:parsing +ItemUse vendor/syn/src/item.rs /^ impl ToTokens for ItemUse {$/;" c module:printing +Iter vendor/chunky-vec/src/lib.rs /^impl<'a, T> ExactSizeIterator for Iter<'a, T> {$/;" c +Iter vendor/chunky-vec/src/lib.rs /^impl<'a, T> Iter<'a, T> {$/;" c +Iter vendor/chunky-vec/src/lib.rs /^impl<'a, T> Iterator for Iter<'a, T> {$/;" c +Iter vendor/chunky-vec/src/lib.rs /^pub struct Iter<'a, T> {$/;" s +Iter vendor/elsa/src/vec.rs /^impl<'a, T: StableDeref> Iterator for Iter<'a, T> {$/;" c +Iter vendor/elsa/src/vec.rs /^pub struct Iter<'a, T> {$/;" s +Iter vendor/fluent-fallback/examples/simple-fallback.rs /^ type Iter = BundleIter;$/;" t implementation:Bundles +Iter vendor/fluent-fallback/src/bundles.rs /^ Iter(Cache),$/;" e enum:BundlesInner +Iter vendor/fluent-fallback/src/env.rs /^ type Iter = as IntoIterator>::IntoIter;$/;" t implementation:Vec +Iter vendor/fluent-fallback/src/env.rs /^ type Iter: Iterator;$/;" t interface:LocalesProvider +Iter vendor/fluent-fallback/src/generator.rs /^ type Iter: Iterator>;$/;" t interface:BundleGenerator +Iter vendor/fluent-fallback/tests/localization_test.rs /^ type Iter = as IntoIterator>::IntoIter;$/;" t implementation:Locales +Iter vendor/fluent-fallback/tests/localization_test.rs /^ type Iter = BundleIter;$/;" t implementation:ResourceManager +Iter vendor/fluent-resmgr/src/resource_manager.rs /^ type Iter = BundleIter;$/;" t implementation:ResourceManager +Iter vendor/futures-util/src/stream/futures_unordered/iter.rs /^impl<'a, Fut: Unpin> Iterator for Iter<'a, Fut> {$/;" c +Iter vendor/futures-util/src/stream/futures_unordered/iter.rs /^impl ExactSizeIterator for Iter<'_, Fut> {}$/;" c +Iter vendor/futures-util/src/stream/futures_unordered/iter.rs /^pub struct Iter<'a, Fut: Unpin>(pub(super) IterPinRef<'a, Fut>);$/;" s +Iter vendor/futures-util/src/stream/iter.rs /^impl Stream for Iter$/;" c +Iter vendor/futures-util/src/stream/iter.rs /^impl Unpin for Iter {}$/;" c +Iter vendor/futures-util/src/stream/iter.rs /^pub struct Iter {$/;" s +Iter vendor/futures-util/src/stream/select_all.rs /^impl<'a, St: Stream + Unpin> Iterator for Iter<'a, St> {$/;" c +Iter vendor/futures-util/src/stream/select_all.rs /^impl ExactSizeIterator for Iter<'_, St> {}$/;" c +Iter vendor/futures-util/src/stream/select_all.rs /^pub struct Iter<'a, St: Unpin>(futures_unordered::Iter<'a, StreamFuture>);$/;" s +Iter vendor/futures/tests_disabled/stream.rs /^impl Stream for Iter$/;" c +Iter vendor/futures/tests_disabled/stream.rs /^pub struct Iter {$/;" s +Iter vendor/nix/src/dir.rs /^impl<'d> Drop for Iter<'d> {$/;" c +Iter vendor/nix/src/dir.rs /^impl<'d> Iterator for Iter<'d> {$/;" c +Iter vendor/nix/src/dir.rs /^pub struct Iter<'d>(&'d mut Dir);$/;" s +Iter vendor/quote/src/runtime.rs /^ type Iter = T::Iter;$/;" t implementation:ext::RepInterp +Iter vendor/quote/src/runtime.rs /^ type Iter = T::Iter;$/;" t implementation:ext::T +Iter vendor/quote/src/runtime.rs /^ type Iter = btree_set::Iter<'q, T>;$/;" t implementation:ext::BTreeSet +Iter vendor/quote/src/runtime.rs /^ type Iter = slice::Iter<'q, T>;$/;" t implementation:ext::T +Iter vendor/quote/src/runtime.rs /^ type Iter = slice::Iter<'q, T>;$/;" t implementation:ext::Vec +Iter vendor/quote/src/runtime.rs /^ type Iter: Iterator;$/;" t interface:ext::RepAsIteratorExt +Iter vendor/slab/src/lib.rs /^impl<'a, T> Clone for Iter<'a, T> {$/;" c +Iter vendor/slab/src/lib.rs /^impl<'a, T> Iterator for Iter<'a, T> {$/;" c +Iter vendor/slab/src/lib.rs /^impl DoubleEndedIterator for Iter<'_, T> {$/;" c +Iter vendor/slab/src/lib.rs /^impl ExactSizeIterator for Iter<'_, T> {$/;" c +Iter vendor/slab/src/lib.rs /^impl FusedIterator for Iter<'_, T> {}$/;" c +Iter vendor/slab/src/lib.rs /^impl fmt::Debug for Iter<'_, T>$/;" c +Iter vendor/slab/src/lib.rs /^pub struct Iter<'a, T> {$/;" s +Iter vendor/syn/src/error.rs /^impl<'a> Iterator for Iter<'a> {$/;" c +Iter vendor/syn/src/error.rs /^pub struct Iter<'a> {$/;" s +Iter vendor/syn/src/punctuated.rs /^impl<'a, T> Clone for Iter<'a, T> {$/;" c +Iter vendor/syn/src/punctuated.rs /^impl<'a, T> DoubleEndedIterator for Iter<'a, T> {$/;" c +Iter vendor/syn/src/punctuated.rs /^impl<'a, T> ExactSizeIterator for Iter<'a, T> {$/;" c +Iter vendor/syn/src/punctuated.rs /^impl<'a, T> Iterator for Iter<'a, T> {$/;" c +Iter vendor/syn/src/punctuated.rs /^pub struct Iter<'a, T: 'a> {$/;" s +IterMut vendor/chunky-vec/src/lib.rs /^impl<'a, T> ExactSizeIterator for IterMut<'a, T> {$/;" c +IterMut vendor/chunky-vec/src/lib.rs /^impl<'a, T> IterMut<'a, T> {$/;" c +IterMut vendor/chunky-vec/src/lib.rs /^impl<'a, T> Iterator for IterMut<'a, T> {$/;" c +IterMut vendor/chunky-vec/src/lib.rs /^pub struct IterMut<'a, T> {$/;" s +IterMut vendor/futures-util/src/stream/futures_unordered/iter.rs /^impl<'a, Fut: Unpin> Iterator for IterMut<'a, Fut> {$/;" c +IterMut vendor/futures-util/src/stream/futures_unordered/iter.rs /^impl ExactSizeIterator for IterMut<'_, Fut> {}$/;" c +IterMut vendor/futures-util/src/stream/futures_unordered/iter.rs /^pub struct IterMut<'a, Fut: Unpin>(pub(super) IterPinMut<'a, Fut>);$/;" s +IterMut vendor/futures-util/src/stream/select_all.rs /^impl<'a, St: Stream + Unpin> Iterator for IterMut<'a, St> {$/;" c +IterMut vendor/futures-util/src/stream/select_all.rs /^impl ExactSizeIterator for IterMut<'_, St> {}$/;" c +IterMut vendor/futures-util/src/stream/select_all.rs /^pub struct IterMut<'a, St: Unpin>(futures_unordered::IterMut<'a, StreamFuture>);$/;" s +IterMut vendor/slab/src/lib.rs /^impl<'a, T> Iterator for IterMut<'a, T> {$/;" c +IterMut vendor/slab/src/lib.rs /^impl DoubleEndedIterator for IterMut<'_, T> {$/;" c +IterMut vendor/slab/src/lib.rs /^impl ExactSizeIterator for IterMut<'_, T> {$/;" c +IterMut vendor/slab/src/lib.rs /^impl FusedIterator for IterMut<'_, T> {}$/;" c +IterMut vendor/slab/src/lib.rs /^impl fmt::Debug for IterMut<'_, T>$/;" c +IterMut vendor/slab/src/lib.rs /^pub struct IterMut<'a, T> {$/;" s +IterMut vendor/syn/src/punctuated.rs /^impl<'a, T> DoubleEndedIterator for IterMut<'a, T> {$/;" c +IterMut vendor/syn/src/punctuated.rs /^impl<'a, T> ExactSizeIterator for IterMut<'a, T> {$/;" c +IterMut vendor/syn/src/punctuated.rs /^impl<'a, T> Iterator for IterMut<'a, T> {$/;" c +IterMut vendor/syn/src/punctuated.rs /^pub struct IterMut<'a, T: 'a> {$/;" s +IterMutTrait vendor/syn/src/punctuated.rs /^trait IterMutTrait<'a, T: 'a>:$/;" i +IterPinMut vendor/futures-util/src/stream/futures_unordered/iter.rs /^impl<'a, Fut> Iterator for IterPinMut<'a, Fut> {$/;" c +IterPinMut vendor/futures-util/src/stream/futures_unordered/iter.rs /^impl ExactSizeIterator for IterPinMut<'_, Fut> {}$/;" c +IterPinMut vendor/futures-util/src/stream/futures_unordered/iter.rs /^pub struct IterPinMut<'a, Fut> {$/;" s +IterPinMut vendor/futures-util/src/stream/futures_unordered/iter.rs /^unsafe impl Send for IterPinMut<'_, Fut> {}$/;" c +IterPinMut vendor/futures-util/src/stream/futures_unordered/iter.rs /^unsafe impl Sync for IterPinMut<'_, Fut> {}$/;" c +IterPinRef vendor/futures-util/src/stream/futures_unordered/iter.rs /^impl<'a, Fut> Iterator for IterPinRef<'a, Fut> {$/;" c +IterPinRef vendor/futures-util/src/stream/futures_unordered/iter.rs /^impl ExactSizeIterator for IterPinRef<'_, Fut> {}$/;" c +IterPinRef vendor/futures-util/src/stream/futures_unordered/iter.rs /^pub struct IterPinRef<'a, Fut> {$/;" s +IterPinRef vendor/futures-util/src/stream/futures_unordered/iter.rs /^unsafe impl Send for IterPinRef<'_, Fut> {}$/;" c +IterPinRef vendor/futures-util/src/stream/futures_unordered/iter.rs /^unsafe impl Sync for IterPinRef<'_, Fut> {}$/;" c +IterTrait vendor/syn/src/punctuated.rs /^trait IterTrait<'a, T: 'a>:$/;" i +Iucv vendor/nix/src/sys/socket/addr.rs /^ Iucv = libc::AF_IUCV,$/;" e enum:AddressFamily +JDEAD builtins_rust/cd/src/lib.rs /^ JDEAD = 4,$/;" e enum:JOB_STATE +JDEAD builtins_rust/common/src/lib.rs /^ JDEAD = 4,$/;" e enum:JOB_STATE +JDEAD builtins_rust/exit/src/lib.rs /^ JDEAD = 4,$/;" e enum:JOB_STATE +JDEAD builtins_rust/fc/src/lib.rs /^ JDEAD = 4,$/;" e enum:JOB_STATE +JDEAD builtins_rust/fg_bg/src/lib.rs /^ JDEAD = 4,$/;" e enum:JOB_STATE +JDEAD builtins_rust/jobs/src/lib.rs /^ JDEAD = 4,$/;" e enum:JOB_STATE +JDEAD builtins_rust/wait/src/lib.rs /^ JDEAD = 4,$/;" e enum:JOB_STATE +JDEAD jobs.h /^typedef enum { JNONE = -1, JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } JOB_STATE;$/;" e enum:__anon073224090103 +JLIST_CHANGED_ONLY builtins_rust/jobs/src/lib.rs /^macro_rules! JLIST_CHANGED_ONLY {$/;" M +JLIST_CHANGED_ONLY jobs.h /^#define JLIST_CHANGED_ONLY /;" d +JLIST_LONG builtins_rust/jobs/src/lib.rs /^macro_rules! JLIST_LONG {$/;" M +JLIST_LONG jobs.h /^#define JLIST_LONG /;" d +JLIST_NONINTERACTIVE jobs.h /^#define JLIST_NONINTERACTIVE /;" d +JLIST_PID_ONLY builtins_rust/jobs/src/lib.rs /^macro_rules! JLIST_PID_ONLY {$/;" M +JLIST_PID_ONLY jobs.h /^#define JLIST_PID_ONLY /;" d +JLIST_STANDARD builtins_rust/jobs/src/lib.rs /^macro_rules! JLIST_STANDARD {$/;" M +JLIST_STANDARD jobs.h /^#define JLIST_STANDARD /;" d +JMIXED builtins_rust/cd/src/lib.rs /^ JMIXED = 8,$/;" e enum:JOB_STATE +JMIXED builtins_rust/common/src/lib.rs /^ JMIXED = 8,$/;" e enum:JOB_STATE +JMIXED builtins_rust/exit/src/lib.rs /^ JMIXED = 8,$/;" e enum:JOB_STATE +JMIXED builtins_rust/fc/src/lib.rs /^ JMIXED = 8,$/;" e enum:JOB_STATE +JMIXED builtins_rust/fg_bg/src/lib.rs /^ JMIXED = 8,$/;" e enum:JOB_STATE +JMIXED builtins_rust/jobs/src/lib.rs /^ JMIXED = 8,$/;" e enum:JOB_STATE +JMIXED builtins_rust/wait/src/lib.rs /^ JMIXED = 8,$/;" e enum:JOB_STATE +JMIXED jobs.h /^typedef enum { JNONE = -1, JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } JOB_STATE;$/;" e enum:__anon073224090103 +JM_EXACT builtins/common.h /^#define JM_EXACT /;" d +JM_EXACT builtins_rust/common/src/lib.rs /^macro_rules! JM_EXACT {$/;" M +JM_FIRSTMATCH builtins/common.h /^#define JM_FIRSTMATCH /;" d +JM_FIRSTMATCH builtins_rust/common/src/lib.rs /^macro_rules! JM_FIRSTMATCH {$/;" M +JM_PREFIX builtins/common.h /^#define JM_PREFIX /;" d +JM_STOPPED builtins/common.h /^#define JM_STOPPED /;" d +JM_STOPPED builtins_rust/common/src/lib.rs /^macro_rules! JM_STOPPED {$/;" M +JM_SUBSTRING builtins/common.h /^#define JM_SUBSTRING /;" d +JM_SUBSTRING builtins_rust/common/src/lib.rs /^macro_rules! JM_SUBSTRING {$/;" M +JNONE builtins_rust/cd/src/lib.rs /^ JNONE = -1,$/;" e enum:JOB_STATE +JNONE builtins_rust/common/src/lib.rs /^ JNONE = -1,$/;" e enum:JOB_STATE +JNONE builtins_rust/exit/src/lib.rs /^ JNONE = -1,$/;" e enum:JOB_STATE +JNONE builtins_rust/fc/src/lib.rs /^ JNONE = -1,$/;" e enum:JOB_STATE +JNONE builtins_rust/fg_bg/src/lib.rs /^ JNONE = -1,$/;" e enum:JOB_STATE +JNONE builtins_rust/jobs/src/lib.rs /^ JNONE = -1,$/;" e enum:JOB_STATE +JNONE builtins_rust/wait/src/lib.rs /^ JNONE = -1,$/;" e enum:JOB_STATE +JNONE jobs.h /^typedef enum { JNONE = -1, JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } JOB_STATE;$/;" e enum:__anon073224090103 +JOB builtins_rust/cd/src/lib.rs /^pub struct JOB {$/;" s +JOB builtins_rust/common/src/lib.rs /^pub struct JOB {$/;" s +JOB builtins_rust/exit/src/lib.rs /^pub struct JOB {$/;" s +JOB builtins_rust/fc/src/lib.rs /^pub struct JOB {$/;" s +JOB builtins_rust/fg_bg/src/lib.rs /^pub struct JOB {$/;" s +JOB builtins_rust/jobs/src/lib.rs /^pub struct JOB {$/;" s +JOB builtins_rust/kill/src/intercdep.rs /^pub type JOB = job;$/;" t +JOB builtins_rust/setattr/src/intercdep.rs /^pub type JOB = job;$/;" t +JOB builtins_rust/wait/src/lib.rs /^pub struct JOB {$/;" s +JOB jobs.h /^} JOB;$/;" t typeref:struct:job +JOB r_bash/src/lib.rs /^pub type JOB = job;$/;" t +JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V1 vendor/winapi/src/um/winnt.rs /^pub type JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V1$/;" t +JOBSTATE jobs.h /^#define JOBSTATE(/;" d +JOBSTATE r_jobs/src/lib.rs /^macro_rules! JOBSTATE {$/;" M +JOBS_O configure.ac /^AC_SUBST(JOBS_O)$/;" s +JOB_CONTROL configure.ac /^AC_DEFINE(JOB_CONTROL)$/;" d +JOB_SLOTS jobs.c /^#define JOB_SLOTS /;" d file: +JOB_STATE builtins_rust/cd/src/lib.rs /^pub enum JOB_STATE {$/;" g +JOB_STATE builtins_rust/common/src/lib.rs /^pub enum JOB_STATE {$/;" g +JOB_STATE builtins_rust/exit/src/lib.rs /^pub enum JOB_STATE {$/;" g +JOB_STATE builtins_rust/fc/src/lib.rs /^pub enum JOB_STATE {$/;" g +JOB_STATE builtins_rust/fg_bg/src/lib.rs /^pub enum JOB_STATE {$/;" g +JOB_STATE builtins_rust/jobs/src/lib.rs /^pub enum JOB_STATE {$/;" g +JOB_STATE builtins_rust/kill/src/intercdep.rs /^pub type JOB_STATE = c_int;$/;" t +JOB_STATE builtins_rust/setattr/src/intercdep.rs /^pub type JOB_STATE = c_int;$/;" t +JOB_STATE builtins_rust/wait/src/lib.rs /^pub enum JOB_STATE {$/;" g +JOB_STATE jobs.h /^typedef enum { JNONE = -1, JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } JOB_STATE;$/;" t typeref:enum:__anon073224090103 +JOB_STATE r_bash/src/lib.rs /^pub type JOB_STATE = i32;$/;" t +JRUNNING builtins_rust/cd/src/lib.rs /^ JRUNNING = 1,$/;" e enum:JOB_STATE +JRUNNING builtins_rust/common/src/lib.rs /^ JRUNNING = 1,$/;" e enum:JOB_STATE +JRUNNING builtins_rust/exit/src/lib.rs /^ JRUNNING = 1,$/;" e enum:JOB_STATE +JRUNNING builtins_rust/fc/src/lib.rs /^ JRUNNING = 1,$/;" e enum:JOB_STATE +JRUNNING builtins_rust/fg_bg/src/lib.rs /^ JRUNNING = 1,$/;" e enum:JOB_STATE +JRUNNING builtins_rust/jobs/src/lib.rs /^ JRUNNING = 1,$/;" e enum:JOB_STATE +JRUNNING builtins_rust/wait/src/lib.rs /^ JRUNNING = 1,$/;" e enum:JOB_STATE +JRUNNING jobs.h /^typedef enum { JNONE = -1, JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } JOB_STATE;$/;" e enum:__anon073224090103 +JSTATE_ANY builtins_rust/jobs/src/lib.rs /^macro_rules! JSTATE_ANY {$/;" M +JSTATE_RUNNING builtins_rust/jobs/src/lib.rs /^macro_rules! JSTATE_RUNNING {$/;" M +JSTATE_STOPPED builtins_rust/jobs/src/lib.rs /^macro_rules! JSTATE_STOPPED {$/;" M +JSTOPPED builtins_rust/cd/src/lib.rs /^ JSTOPPED = 2,$/;" e enum:JOB_STATE +JSTOPPED builtins_rust/common/src/lib.rs /^ JSTOPPED = 2,$/;" e enum:JOB_STATE +JSTOPPED builtins_rust/exit/src/lib.rs /^ JSTOPPED = 2,$/;" e enum:JOB_STATE +JSTOPPED builtins_rust/fc/src/lib.rs /^ JSTOPPED = 2,$/;" e enum:JOB_STATE +JSTOPPED builtins_rust/fg_bg/src/lib.rs /^ JSTOPPED = 2,$/;" e enum:JOB_STATE +JSTOPPED builtins_rust/jobs/src/lib.rs /^ JSTOPPED = 2,$/;" e enum:JOB_STATE +JSTOPPED builtins_rust/wait/src/lib.rs /^ JSTOPPED = 2,$/;" e enum:JOB_STATE +JSTOPPED jobs.h /^typedef enum { JNONE = -1, JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } JOB_STATE;$/;" e enum:__anon073224090103 +JWAIT_FORCE builtins_rust/wait/src/lib.rs /^macro_rules! JWAIT_FORCE {$/;" M +JWAIT_FORCE jobs.h /^#define JWAIT_FORCE /;" d +JWAIT_NOTERM jobs.h /^#define JWAIT_NOTERM /;" d +JWAIT_NOWAIT jobs.h /^#define JWAIT_NOWAIT /;" d +JWAIT_PEROOR builtins_rust/wait/src/lib.rs /^macro_rules! JWAIT_PEROOR {$/;" M +JWAIT_PERROR jobs.h /^#define JWAIT_PERROR /;" d +JWAIT_WAITING builtins_rust/wait/src/lib.rs /^macro_rules! JWAIT_WAITING {$/;" M +JWAIT_WAITING jobs.h /^#define JWAIT_WAITING /;" d +J_ASYNC jobs.h /^#define J_ASYNC /;" d +J_FOREGROUND jobs.h /^#define J_FOREGROUND /;" d +J_FOREGROUND r_jobs/src/lib.rs /^macro_rules! J_FOREGROUND{$/;" M +J_JOBCONTROL builtins_rust/fg_bg/src/lib.rs /^macro_rules! J_JOBCONTROL {$/;" M +J_JOBCONTROL jobs.h /^#define J_JOBCONTROL /;" d +J_JOBSTATE builtins_rust/common/src/lib.rs /^macro_rules! J_JOBSTATE {$/;" M +J_JOBSTATE jobs.h /^#define J_JOBSTATE(/;" d +J_NOHUP jobs.h /^#define J_NOHUP /;" d +J_NOTIFIED jobs.h /^#define J_NOTIFIED /;" d +J_PIPEFAIL jobs.h /^#define J_PIPEFAIL /;" d +J_STATSAVED jobs.h /^#define J_STATSAVED /;" d +J_WAITING builtins_rust/wait/src/lib.rs /^macro_rules! J_WAITING {$/;" M +J_WAITING jobs.h /^#define J_WAITING /;" d +JobsCmd builtins_rust/exec_cmd/src/lib.rs /^ JobsCmd,$/;" e enum:CMDType +JobsComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for JobsComand {$/;" c +JobsComand builtins_rust/exec_cmd/src/lib.rs /^struct JobsComand;$/;" s +Join vendor/futures-macro/src/join.rs /^impl Parse for Join {$/;" c +Join vendor/futures-macro/src/join.rs /^struct Join {$/;" s +Join vendor/futures/tests/stream_split.rs /^ impl, Item> Sink for Join {$/;" c function:test_split +Join vendor/futures/tests/stream_split.rs /^ impl Stream for Join {$/;" c function:test_split +Join vendor/futures/tests/stream_split.rs /^ struct Join {$/;" s function:test_split +JoinAll vendor/futures-util/src/future/join_all.rs /^impl FromIterator for JoinAll {$/;" c +JoinAll vendor/futures-util/src/future/join_all.rs /^impl Future for JoinAll$/;" c +JoinAll vendor/futures-util/src/future/join_all.rs /^impl fmt::Debug for JoinAll$/;" c +JoinAll vendor/futures-util/src/future/join_all.rs /^pub struct JoinAll$/;" s +JoinAllKind vendor/futures-util/src/future/join_all.rs /^enum JoinAllKind$/;" g +JoinedCell vendor/self_cell/src/unsafe_self_cell.rs /^impl JoinedCell {$/;" c +JoinedCell vendor/self_cell/src/unsafe_self_cell.rs /^pub struct JoinedCell {$/;" s +Joint vendor/proc-macro2/src/lib.rs /^ Joint,$/;" e enum:Spacing +Junk vendor/fluent-syntax/src/ast/mod.rs /^ Junk { content: S },$/;" e enum:Entry +K32EmptyWorkingSet vendor/winapi/src/um/psapi.rs /^ pub fn K32EmptyWorkingSet($/;" f +K32EnumDeviceDrivers vendor/winapi/src/um/psapi.rs /^ pub fn K32EnumDeviceDrivers($/;" f +K32EnumPageFilesA vendor/winapi/src/um/psapi.rs /^ pub fn K32EnumPageFilesA($/;" f +K32EnumPageFilesW vendor/winapi/src/um/psapi.rs /^ pub fn K32EnumPageFilesW($/;" f +K32EnumProcessModules vendor/winapi/src/um/psapi.rs /^ pub fn K32EnumProcessModules($/;" f +K32EnumProcessModulesEx vendor/winapi/src/um/psapi.rs /^ pub fn K32EnumProcessModulesEx($/;" f +K32EnumProcesses vendor/winapi/src/um/psapi.rs /^ pub fn K32EnumProcesses($/;" f +K32GetDeviceDriverBaseNameA vendor/winapi/src/um/psapi.rs /^ pub fn K32GetDeviceDriverBaseNameA($/;" f +K32GetDeviceDriverBaseNameW vendor/winapi/src/um/psapi.rs /^ pub fn K32GetDeviceDriverBaseNameW($/;" f +K32GetDeviceDriverFileNameA vendor/winapi/src/um/psapi.rs /^ pub fn K32GetDeviceDriverFileNameA($/;" f +K32GetDeviceDriverFileNameW vendor/winapi/src/um/psapi.rs /^ pub fn K32GetDeviceDriverFileNameW($/;" f +K32GetMappedFileNameA vendor/winapi/src/um/psapi.rs /^ pub fn K32GetMappedFileNameA($/;" f +K32GetMappedFileNameW vendor/winapi/src/um/psapi.rs /^ pub fn K32GetMappedFileNameW($/;" f +K32GetModuleBaseNameA vendor/winapi/src/um/psapi.rs /^ pub fn K32GetModuleBaseNameA($/;" f +K32GetModuleBaseNameW vendor/winapi/src/um/psapi.rs /^ pub fn K32GetModuleBaseNameW($/;" f +K32GetModuleFileNameExA vendor/winapi/src/um/psapi.rs /^ pub fn K32GetModuleFileNameExA($/;" f +K32GetModuleFileNameExW vendor/winapi/src/um/psapi.rs /^ pub fn K32GetModuleFileNameExW($/;" f +K32GetModuleInformation vendor/winapi/src/um/psapi.rs /^ pub fn K32GetModuleInformation($/;" f +K32GetPerformanceInfo vendor/winapi/src/um/psapi.rs /^ pub fn K32GetPerformanceInfo($/;" f +K32GetProcessImageFileNameA vendor/winapi/src/um/psapi.rs /^ pub fn K32GetProcessImageFileNameA($/;" f +K32GetProcessImageFileNameW vendor/winapi/src/um/psapi.rs /^ pub fn K32GetProcessImageFileNameW($/;" f +K32GetProcessMemoryInfo vendor/winapi/src/um/psapi.rs /^ pub fn K32GetProcessMemoryInfo($/;" f +K32GetWsChanges vendor/winapi/src/um/psapi.rs /^ pub fn K32GetWsChanges($/;" f +K32GetWsChangesEx vendor/winapi/src/um/psapi.rs /^ pub fn K32GetWsChangesEx($/;" f +K32InitializeProcessForWsWatch vendor/winapi/src/um/psapi.rs /^ pub fn K32InitializeProcessForWsWatch($/;" f +K32QueryWorkingSet vendor/winapi/src/um/psapi.rs /^ pub fn K32QueryWorkingSet($/;" f +K32QueryWorkingSetEx vendor/winapi/src/um/psapi.rs /^ pub fn K32QueryWorkingSetEx($/;" f +KAFFINITY vendor/winapi/src/shared/basetsd.rs /^pub type KAFFINITY = ULONG_PTR;$/;" t +KDHELP vendor/winapi/src/um/dbghelp.rs /^pub type KDHELP = KDHELP64;$/;" t +KEAPUBKEY vendor/winapi/src/um/wincrypt.rs /^pub type KEAPUBKEY = DHPUBKEY;$/;" t +KERNEL_VERS vendor/nix/src/features.rs /^ static mut KERNEL_VERS: usize = 0;$/;" v function:os::kernel_version +KEYMAP_ENTRY builtins_rust/bind/src/lib.rs /^type KEYMAP_ENTRY = _keymap_entry;$/;" t +KEYMAP_ENTRY builtins_rust/read/src/intercdep.rs /^pub type KEYMAP_ENTRY = _keymap_entry;$/;" t +KEYMAP_ENTRY lib/readline/keymaps.h /^} KEYMAP_ENTRY;$/;" t typeref:struct:_keymap_entry +KEYMAP_ENTRY r_readline/src/lib.rs /^pub type KEYMAP_ENTRY = _keymap_entry;$/;" t +KEYMAP_ENTRY_ARRAY lib/readline/keymaps.h /^typedef KEYMAP_ENTRY KEYMAP_ENTRY_ARRAY[KEYMAP_SIZE];$/;" t typeref:typename:KEYMAP_ENTRY[KEYMAP_SIZE] +KEYMAP_ENTRY_ARRAY r_readline/src/lib.rs /^pub type KEYMAP_ENTRY_ARRAY = [KEYMAP_ENTRY; 257usize];$/;" t +KEYMAP_SIZE builtins_rust/bind/src/lib.rs /^macro_rules! KEYMAP_SIZE {$/;" M +KEYMAP_SIZE lib/readline/keymaps.h /^#define KEYMAP_SIZE /;" d +KEYMAP_TO_FUNCTION bashline.c /^# define KEYMAP_TO_FUNCTION(/;" d file: +KEYMAP_TO_FUNCTION lib/readline/rldefs.h /^# define KEYMAP_TO_FUNCTION(/;" d +KEvent vendor/nix/src/sys/event.rs /^impl KEvent {$/;" c +KEvent vendor/nix/src/sys/event.rs /^pub struct KEvent {$/;" s +KEvent vendor/nix/src/sys/event.rs /^unsafe impl Send for KEvent {$/;" c +KIRQL vendor/winapi/src/shared/ntdef.rs /^pub type KIRQL = UCHAR;$/;" t +KNOWNFOLDERID vendor/winapi/src/um/shtypes.rs /^pub type KNOWNFOLDERID = GUID;$/;" t +KSEQ_DISPATCHED lib/readline/rlprivate.h /^#define KSEQ_DISPATCHED /;" d +KSEQ_RECURSIVE lib/readline/rlprivate.h /^#define KSEQ_RECURSIVE /;" d +KSEQ_SUBSEQ lib/readline/rlprivate.h /^#define KSEQ_SUBSEQ /;" d +KSEVENT vendor/winapi/src/um/devicetopology.rs /^pub type KSEVENT = KSIDENTIFIER;$/;" t +KSH_COMPATIBLE_SELECT config-top.h /^#define KSH_COMPATIBLE_SELECT$/;" d +KSMETHOD vendor/winapi/src/um/devicetopology.rs /^pub type KSMETHOD = KSIDENTIFIER;$/;" t +KSPIN_LOCK vendor/winapi/src/um/winnt.rs /^pub type KSPIN_LOCK = ULONG_PTR;$/;" t +KSPROPERTY vendor/winapi/src/um/devicetopology.rs /^pub type KSPROPERTY = KSIDENTIFIER;$/;" t +KextControl vendor/nix/src/sys/socket/mod.rs /^ KextControl = libc::SYSPROTO_CONTROL,$/;" e enum:SockProtocol +KextEvent vendor/nix/src/sys/socket/mod.rs /^ KextEvent = libc::SYSPROTO_EVENT,$/;" e enum:SockProtocol +Key vendor/nix/src/sys/socket/addr.rs /^ Key = libc::AF_KEY,$/;" e enum:AddressFamily +Keymap builtins_rust/bind/src/lib.rs /^type Keymap = *mut KEYMAP_ENTRY;$/;" t +Keymap builtins_rust/read/src/intercdep.rs /^pub type Keymap = *mut KEYMAP_ENTRY;$/;" t +Keymap lib/readline/keymaps.h /^typedef KEYMAP_ENTRY *Keymap;$/;" t typeref:typename:KEYMAP_ENTRY * +Keymap r_readline/src/lib.rs /^pub type Keymap = *mut KEYMAP_ENTRY;$/;" t +KillCmd builtins_rust/exec_cmd/src/lib.rs /^ KillCmd,$/;" e enum:CMDType +KillComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for KillComand {$/;" c +KillComand builtins_rust/exec_cmd/src/lib.rs /^struct KillComand;$/;" s +KillTimer vendor/winapi/src/um/winuser.rs /^ pub fn KillTimer($/;" f +L lib/glob/glob.c /^#define L(/;" d file: +L lib/glob/gmisc.c /^#define L(/;" d file: +L lib/glob/smatch.c /^# define L(/;" d file: +L lib/glob/smatch.c /^#define L(/;" d file: +L10N_RESOURCES vendor/fluent-fallback/examples/simple-fallback.rs /^static L10N_RESOURCES: &[&str] = &["simple.ftl"];$/;" v +L10nAttribute vendor/fluent-fallback/src/types.rs /^pub struct L10nAttribute<'l> {$/;" s +L10nKey vendor/fluent-fallback/src/types.rs /^impl<'l> From<&'l str> for L10nKey<'l> {$/;" c +L10nKey vendor/fluent-fallback/src/types.rs /^pub struct L10nKey<'l> {$/;" s +L10nMessage vendor/fluent-fallback/src/types.rs /^pub struct L10nMessage<'l> {$/;" s +LAND expr.c /^#define LAND /;" d file: +LANGID vendor/winapi/src/shared/ntdef.rs /^pub type LANGID = USHORT;$/;" t +LANGID vendor/winapi/src/um/winnt.rs /^pub type LANGID = WORD;$/;" t +LANGIDFROMLCID vendor/winapi/src/shared/ntdef.rs /^pub fn LANGIDFROMLCID(lcid: LCID) -> LANGID { lcid as LANGID }$/;" f +LANGIDFROMLCID vendor/winapi/src/um/winnt.rs /^pub fn LANGIDFROMLCID(lcid: LCID) -> LANGID {$/;" f +LANGSRC Makefile.in /^LANGSRC = $(srcdir)\/$(LANGSUBDIR)$/;" m +LANGSUBDIR Makefile.in /^LANGSUBDIR = resources$/;" m +LANG_AFRIKAANS lib/intl/localename.c /^# define LANG_AFRIKAANS /;" d file: +LANG_ALBANIAN lib/intl/localename.c /^# define LANG_ALBANIAN /;" d file: +LANG_ARABIC lib/intl/localename.c /^# define LANG_ARABIC /;" d file: +LANG_ARMENIAN lib/intl/localename.c /^# define LANG_ARMENIAN /;" d file: +LANG_ASSAMESE lib/intl/localename.c /^# define LANG_ASSAMESE /;" d file: +LANG_AZERI lib/intl/localename.c /^# define LANG_AZERI /;" d file: +LANG_BASQUE lib/intl/localename.c /^# define LANG_BASQUE /;" d file: +LANG_BELARUSIAN lib/intl/localename.c /^# define LANG_BELARUSIAN /;" d file: +LANG_BENGALI lib/intl/localename.c /^# define LANG_BENGALI /;" d file: +LANG_CATALAN lib/intl/localename.c /^# define LANG_CATALAN /;" d file: +LANG_DIVEHI lib/intl/localename.c /^# define LANG_DIVEHI /;" d file: +LANG_ESTONIAN lib/intl/localename.c /^# define LANG_ESTONIAN /;" d file: +LANG_FAEROESE lib/intl/localename.c /^# define LANG_FAEROESE /;" d file: +LANG_FARSI lib/intl/localename.c /^# define LANG_FARSI /;" d file: +LANG_GALICIAN lib/intl/localename.c /^# define LANG_GALICIAN /;" d file: +LANG_GEORGIAN lib/intl/localename.c /^# define LANG_GEORGIAN /;" d file: +LANG_GUJARATI lib/intl/localename.c /^# define LANG_GUJARATI /;" d file: +LANG_HEBREW lib/intl/localename.c /^# define LANG_HEBREW /;" d file: +LANG_HINDI lib/intl/localename.c /^# define LANG_HINDI /;" d file: +LANG_INDONESIAN lib/intl/localename.c /^# define LANG_INDONESIAN /;" d file: +LANG_KANNADA lib/intl/localename.c /^# define LANG_KANNADA /;" d file: +LANG_KASHMIRI lib/intl/localename.c /^# define LANG_KASHMIRI /;" d file: +LANG_KAZAK lib/intl/localename.c /^# define LANG_KAZAK /;" d file: +LANG_KONKANI lib/intl/localename.c /^# define LANG_KONKANI /;" d file: +LANG_KYRGYZ lib/intl/localename.c /^# define LANG_KYRGYZ /;" d file: +LANG_LATVIAN lib/intl/localename.c /^# define LANG_LATVIAN /;" d file: +LANG_LITHUANIAN lib/intl/localename.c /^# define LANG_LITHUANIAN /;" d file: +LANG_MACEDONIAN lib/intl/localename.c /^# define LANG_MACEDONIAN /;" d file: +LANG_MALAY lib/intl/localename.c /^# define LANG_MALAY /;" d file: +LANG_MALAYALAM lib/intl/localename.c /^# define LANG_MALAYALAM /;" d file: +LANG_MANIPURI lib/intl/localename.c /^# define LANG_MANIPURI /;" d file: +LANG_MARATHI lib/intl/localename.c /^# define LANG_MARATHI /;" d file: +LANG_MONGOLIAN lib/intl/localename.c /^# define LANG_MONGOLIAN /;" d file: +LANG_NEPALI lib/intl/localename.c /^# define LANG_NEPALI /;" d file: +LANG_ONLY vendor/unic-langid-impl/src/likelysubtags/tables.rs /^pub static LANG_ONLY: [(u64, (Option, Option, Option)); 1333] = [$/;" v +LANG_ORIYA lib/intl/localename.c /^# define LANG_ORIYA /;" d file: +LANG_PUNJABI lib/intl/localename.c /^# define LANG_PUNJABI /;" d file: +LANG_REGION vendor/unic-langid-impl/src/likelysubtags/tables.rs /^pub static LANG_REGION: [(u64, u32, (Option, Option, Option)); 45] = [$/;" v +LANG_SANSKRIT lib/intl/localename.c /^# define LANG_SANSKRIT /;" d file: +LANG_SCRIPT vendor/unic-langid-impl/src/likelysubtags/tables.rs /^pub static LANG_SCRIPT: [(u64, u32, (Option, Option, Option)); 28] = [$/;" v +LANG_SERBIAN lib/intl/localename.c /^# define LANG_SERBIAN /;" d file: +LANG_SINDHI lib/intl/localename.c /^# define LANG_SINDHI /;" d file: +LANG_SLOVAK lib/intl/localename.c /^# define LANG_SLOVAK /;" d file: +LANG_SORBIAN lib/intl/localename.c /^# define LANG_SORBIAN /;" d file: +LANG_SWAHILI lib/intl/localename.c /^# define LANG_SWAHILI /;" d file: +LANG_SYRIAC lib/intl/localename.c /^# define LANG_SYRIAC /;" d file: +LANG_TAMIL lib/intl/localename.c /^# define LANG_TAMIL /;" d file: +LANG_TATAR lib/intl/localename.c /^# define LANG_TATAR /;" d file: +LANG_TELUGU lib/intl/localename.c /^# define LANG_TELUGU /;" d file: +LANG_THAI lib/intl/localename.c /^# define LANG_THAI /;" d file: +LANG_UKRAINIAN lib/intl/localename.c /^# define LANG_UKRAINIAN /;" d file: +LANG_URDU lib/intl/localename.c /^# define LANG_URDU /;" d file: +LANG_UZBEK lib/intl/localename.c /^# define LANG_UZBEK /;" d file: +LANG_VIETNAMESE lib/intl/localename.c /^# define LANG_VIETNAMESE /;" d file: +LARGE_STR_MAX support/man2html.c /^#define LARGE_STR_MAX /;" d file: +LASTREF array.c /^#define LASTREF(/;" d file: +LASTREF_START array.c /^#define LASTREF_START(/;" d file: +LASTSIG quit.h /^#define LASTSIG(/;" d +LASTSIG support/mksignames.c /^#define LASTSIG /;" d file: +LASTSIG support/signames.c /^#define LASTSIG /;" d file: +LBItemFromPt vendor/winapi/src/um/commctrl.rs /^ pub fn LBItemFromPt($/;" f +LBRACE subst.c /^#define LBRACE /;" d file: +LBRACK arrayfunc.c /^# define LBRACK /;" d file: +LBRACK subst.c /^#define LBRACK /;" d file: +LBUF_BUFSIZE lib/sh/setlinebuf.c /^# define LBUF_BUFSIZE /;" d file: +LCD_DOSPELL builtins_rust/cd/src/lib.rs /^macro_rules! LCD_DOSPELL {$/;" M +LCD_DOVARS builtins_rust/cd/src/lib.rs /^macro_rules! LCD_DOVARS {$/;" M +LCD_FREEDIRNAME builtins_rust/cd/src/lib.rs /^macro_rules! LCD_FREEDIRNAME {$/;" M +LCD_PRINTPATH builtins_rust/cd/src/lib.rs /^macro_rules! LCD_PRINTPATH {$/;" M +LCID vendor/winapi/src/shared/ntdef.rs /^pub type LCID = ULONG;$/;" t +LCID vendor/winapi/src/um/winnt.rs /^pub type LCID = DWORD;$/;" t +LCIDToLocaleName vendor/winapi/src/um/winnls.rs /^ pub fn LCIDToLocaleName($/;" f +LCMapStringA vendor/winapi/src/um/winnls.rs /^ pub fn LCMapStringA($/;" f +LCMapStringEx vendor/winapi/src/um/winnls.rs /^ pub fn LCMapStringEx($/;" f +LCMapStringW vendor/winapi/src/um/winnls.rs /^ pub fn LCMapStringW($/;" f +LCSCSTYPE vendor/winapi/src/um/wingdi.rs /^pub type LCSCSTYPE = LONG;$/;" t +LCSGAMUTMATCH vendor/winapi/src/um/wingdi.rs /^pub type LCSGAMUTMATCH = LONG;$/;" t +LCTYPE vendor/winapi/src/um/winnls.rs /^pub type LCTYPE = DWORD;$/;" t +LC_MESSAGES lib/intl/libgnuintl.h.in /^# define LC_MESSAGES /;" d file: +LC_MESSAGES_COMPAT lib/intl/os2compat.h /^#define LC_MESSAGES_COMPAT /;" d +LDFLAGS Makefile.in /^LDFLAGS = ${ADDON_LDFLAGS} ${BASE_LDFLAGS} ${PROFILE_FLAGS} ${STATIC_LD}$/;" m +LDFLAGS builtins/Makefile.in /^LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS)$/;" m +LDFLAGS configure.ac /^AC_SUBST(LDFLAGS)$/;" s +LDFLAGS lib/glob/Makefile.in /^LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@$/;" m +LDFLAGS lib/intl/Makefile.in /^LDFLAGS = @LDFLAGS@$/;" m +LDFLAGS lib/malloc/Makefile.in /^LDFLAGS = @LDFLAGS@$/;" m +LDFLAGS lib/readline/Makefile.in /^LDFLAGS = @LDFLAGS@$/;" m +LDFLAGS lib/readline/examples/Makefile /^LDFLAGS = -g -L..$/;" m +LDFLAGS lib/sh/Makefile.in /^LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@$/;" m +LDFLAGS lib/termcap/Makefile.in /^LDFLAGS = @LDFLAGS@$/;" m +LDFLAGS lib/tilde/Makefile.in /^LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@$/;" m +LDFLAGS support/Makefile.in /^LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS)$/;" m +LDFLAGS_FOR_BUILD Makefile.in /^LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD)$/;" m +LDFLAGS_FOR_BUILD builtins/Makefile.in /^LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD)$/;" m +LDFLAGS_FOR_BUILD configure.ac /^AC_SUBST(LDFLAGS_FOR_BUILD)$/;" s +LDFLAGS_FOR_BUILD support/Makefile.in /^LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD)$/;" m +LDOUBLE vendor/winapi/src/um/sqltypes.rs /^pub type LDOUBLE = c_double;$/;" t +LE test.c /^#define LE /;" d file: +LEAF vendor/unicode-ident/src/tables.rs /^pub(crate) static LEAF: Align64<[u8; 7520]> = Align64([$/;" v +LEAP_SECONDS_POSSIBLE lib/sh/mktime.c /^#define LEAP_SECONDS_POSSIBLE /;" d file: +LEFT lib/sh/snprintf.c /^#define LEFT /;" d file: +LEN_STR_PAIR lib/readline/parse-colors.h /^#define LEN_STR_PAIR(/;" d +LEQ expr.c /^#define LEQ /;" d file: +LESSCORE_FRC lib/malloc/malloc.c /^#define LESSCORE_FRC /;" d file: +LESSCORE_MIN lib/malloc/malloc.c /^#define LESSCORE_MIN /;" d file: +LFALLBACK_BASE lib/sh/snprintf.c /^# define LFALLBACK_BASE /;" d file: +LFLAG builtins_rust/bind/src/lib.rs /^macro_rules! LFLAG {$/;" M +LFLAG support/utshellversion.c /^#define LFLAG /;" d file: +LFLAG_SET lib/readline/rltty.c /^#define LFLAG_SET /;" d file: +LGRPID vendor/winapi/src/um/winnls.rs /^pub type LGRPID = DWORD;$/;" t +LIBBUILD Makefile.in /^LIBBUILD = ${BUILD_DIR}\/${LIBSUBDIR}$/;" m +LIBBUILD builtins/Makefile.in /^LIBBUILD = ${BUILD_DIR}\/lib$/;" m +LIBBUILD lib/malloc/Makefile.in /^LIBBUILD = ${BUILD_DIR}\/lib$/;" m +LIBBUILD lib/sh/Makefile.in /^LIBBUILD = ${BUILD_DIR}\/lib$/;" m +LIBDEP Makefile.in /^LIBDEP = $(GLOB_DEP) $(SHLIB_DEP) $(INTL_DEP) $(READLINE_DEP) $(HISTORY_DEP) $(TERMCAP_DEP) \\$/;" m +LIBDIR lib/intl/os2compat.h /^#define LIBDIR /;" d +LIBICONV Makefile.in /^LIBICONV = @LIBICONV@$/;" m +LIBID_SpeechDDKLib vendor/winapi/src/um/sapiddk51.rs /^ pub static LIBID_SpeechDDKLib: IID;$/;" v +LIBINTL Makefile.in /^LIBINTL = @LIBINTL@$/;" m +LIBINTL_H Makefile.in /^LIBINTL_H = @LIBINTL_H@$/;" m +LIBINTL_H builtins/Makefile.in /^LIBINTL_H = @LIBINTL_H@$/;" m +LIBINTL_H configure.ac /^AC_SUBST(LIBINTL_H)$/;" s +LIBINTL_H lib/malloc/Makefile.in /^LIBINTL_H = @LIBINTL_H@$/;" m +LIBINTL_H lib/sh/Makefile.in /^LIBINTL_H = @LIBINTL_H@$/;" m +LIBOBJS lib/sh/Makefile.in /^LIBOBJS = @LIBOBJS@$/;" m +LIBRARIES Makefile.in /^LIBRARIES = $(GLOB_LIB) $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) \\$/;" m +LIBRARY_LDFLAGS Makefile.in /^LIBRARY_LDFLAGS = $(READLINE_LDFLAGS) $(HISTORY_LDFLAGS) $(GLOB_LDFLAGS) \\$/;" m +LIBRARY_NAME lib/glob/Makefile.in /^LIBRARY_NAME = libglob.a$/;" m +LIBRARY_NAME lib/readline/Makefile.in /^LIBRARY_NAME = libreadline.a$/;" m +LIBRARY_NAME lib/sh/Makefile.in /^LIBRARY_NAME = libsh.a$/;" m +LIBRARY_NAME lib/tilde/Makefile.in /^LIBRARY_NAME = libtilde.a$/;" m +LIBS Makefile.in /^LIBS = $(BUILTINS_LIB) $(LIBRARIES) @LIBS@ -lrt -lpthread -L.\/target\/debug -lralias -lrbind /;" m +LIBS builtins/Makefile.in /^LIBS = @LIBS@$/;" m +LIBS lib/intl/Makefile.in /^LIBS = @LIBS@$/;" m +LIBS support/Makefile.in /^LIBS = @LIBS@$/;" m +LIBSRC Makefile.in /^LIBSRC = $(srcdir)\/$(LIBSUBDIR)$/;" m +LIBSUBDIR Makefile.in /^LIBSUBDIR = lib$/;" m +LIBS_FOR_BUILD Makefile.in /^LIBS_FOR_BUILD = $/;" m +LIBS_FOR_BUILD builtins/Makefile.in /^LIBS_FOR_BUILD = @LIBS_FOR_BUILD@$/;" m +LIBS_FOR_BUILD configure.ac /^AC_SUBST(LIBS_FOR_BUILD)$/;" s +LIBS_FOR_BUILD support/Makefile.in /^LIBS_FOR_BUILD = ${LIBS} # XXX$/;" m +LIBTOOL lib/intl/Makefile.in /^LIBTOOL = @LIBTOOL@$/;" m +LIB_SUBDIRS Makefile.in /^LIB_SUBDIRS = ${RL_LIBDIR} ${HIST_LIBDIR} ${TERM_LIBDIR} ${GLOB_LIBDIR} \\$/;" m +LICENSE vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +LICENSE vendor/memoffset/.cargo-checksum.json /^{"files":{"Cargo.toml":"2556143c764ef2315fe44ff0ec43af47ca70b260fd64aa53f57dc42760d7132d","LICEN/;" s object:files +LICENSE vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +LICENSE vendor/self_cell/.cargo-checksum.json /^{"files":{"Cargo.toml":"ab60ad0024cea3e0c60fc4d116adc7fae35d5f85b042d285bba65f22c42407d5","LICEN/;" s object:files +LICENSE vendor/slab/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"ae4c54789e1055543317a6812ac11644d0586883dee8f790119e4cef244b1b8e","Car/;" s object:files +LICENSE vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +LICENSE vendor/stdext/README.md /^## LICENSE$/;" s chapter:`std` extensions +LICENSE-APACHE vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +LICENSE-APACHE vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +LICENSE-APACHE vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +LICENSE-APACHE vendor/cfg-if/.cargo-checksum.json /^{"files":{"Cargo.toml":"5b2a8f6e5256957c029cf3a8912d51438e7faa5891c5c102c312f6d4599c1f00","LICEN/;" s object:files +LICENSE-APACHE vendor/chunky-vec/.cargo-checksum.json /^{"files":{"Cargo.toml":"3ab88cdacffa2756abe4460dda1ef403b304e79f814a2ec71b9c9a013dce2bf6","LICEN/;" s object:files +LICENSE-APACHE vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +LICENSE-APACHE vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +LICENSE-APACHE vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +LICENSE-APACHE vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +LICENSE-APACHE vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +LICENSE-APACHE vendor/fluent/.cargo-checksum.json /^{"files":{"Cargo.toml":"90672342000bb7f84bee3d9517ddf6d3f32f8e4b4fd38271c67855112456db05","LICEN/;" s object:files +LICENSE-APACHE vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +LICENSE-APACHE vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +LICENSE-APACHE vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" s object:files +LICENSE-APACHE vendor/futures-io/.cargo-checksum.json /^{"files":{"Cargo.toml":"e54d638578924483b00b5b20bbd8bf29b5166de08d8176122a7c07b04ff314fd","LICEN/;" s object:files +LICENSE-APACHE vendor/futures-macro/.cargo-checksum.json /^{"files":{"Cargo.toml":"0af05d99a0144689032178763c2a88016e428451fae7a9d0d8fdca3063514783","LICEN/;" s object:files +LICENSE-APACHE vendor/futures-sink/.cargo-checksum.json /^{"files":{"Cargo.toml":"8e37d96331ae8a6db64a6aab22e9924ceeacc4f07595c1ea81ea086c002ebd2f","LICEN/;" s object:files +LICENSE-APACHE vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +LICENSE-APACHE vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +LICENSE-APACHE vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +LICENSE-APACHE vendor/intl-memoizer/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f28af47927c54fd8ff3adbfcc4b0e9ea849a3b2a544289dd6be64a7aafb8ca6","LICEN/;" s object:files +LICENSE-APACHE vendor/lazy_static/.cargo-checksum.json /^{"files":{"Cargo.toml":"05e37a4e63dc4a495998bb5133252a51d671c4e99061a6342089ed6eab43978a","LICEN/;" s object:files +LICENSE-APACHE vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +LICENSE-APACHE vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +LICENSE-APACHE vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +LICENSE-APACHE vendor/pin-utils/.cargo-checksum.json /^{"files":{"Cargo.toml":"0f8296bda5b928d57bb84443422f21db3aa35d6873ce651297634d80c183dc6b","LICEN/;" s object:files +LICENSE-APACHE vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +LICENSE-APACHE vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +LICENSE-APACHE vendor/rustc-hash/.cargo-checksum.json /^{"files":{"CODE_OF_CONDUCT.md":"edca092fde496419a9f1ba640048aa0270b62dfea576cd3175f0b53e3c230470/;" s object:files +LICENSE-APACHE vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +LICENSE-APACHE vendor/stable_deref_trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"5a8352eba01791ecee28b37cfe1324fa48db52e35023b23a4f07ca84267abfd6","LICEN/;" s object:files +LICENSE-APACHE vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +LICENSE-APACHE vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" s object:files +LICENSE-APACHE vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +LICENSE-APACHE vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +LICENSE-APACHE vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +LICENSE-APACHE vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +LICENSE-MIT vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +LICENSE-MIT vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +LICENSE-MIT vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +LICENSE-MIT vendor/cfg-if/.cargo-checksum.json /^{"files":{"Cargo.toml":"5b2a8f6e5256957c029cf3a8912d51438e7faa5891c5c102c312f6d4599c1f00","LICEN/;" s object:files +LICENSE-MIT vendor/chunky-vec/.cargo-checksum.json /^{"files":{"Cargo.toml":"3ab88cdacffa2756abe4460dda1ef403b304e79f814a2ec71b9c9a013dce2bf6","LICEN/;" s object:files +LICENSE-MIT vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +LICENSE-MIT vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +LICENSE-MIT vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +LICENSE-MIT vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +LICENSE-MIT vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +LICENSE-MIT vendor/fluent/.cargo-checksum.json /^{"files":{"Cargo.toml":"90672342000bb7f84bee3d9517ddf6d3f32f8e4b4fd38271c67855112456db05","LICEN/;" s object:files +LICENSE-MIT vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +LICENSE-MIT vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +LICENSE-MIT vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" s object:files +LICENSE-MIT vendor/futures-io/.cargo-checksum.json /^{"files":{"Cargo.toml":"e54d638578924483b00b5b20bbd8bf29b5166de08d8176122a7c07b04ff314fd","LICEN/;" s object:files +LICENSE-MIT vendor/futures-macro/.cargo-checksum.json /^{"files":{"Cargo.toml":"0af05d99a0144689032178763c2a88016e428451fae7a9d0d8fdca3063514783","LICEN/;" s object:files +LICENSE-MIT vendor/futures-sink/.cargo-checksum.json /^{"files":{"Cargo.toml":"8e37d96331ae8a6db64a6aab22e9924ceeacc4f07595c1ea81ea086c002ebd2f","LICEN/;" s object:files +LICENSE-MIT vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +LICENSE-MIT vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +LICENSE-MIT vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +LICENSE-MIT vendor/intl-memoizer/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f28af47927c54fd8ff3adbfcc4b0e9ea849a3b2a544289dd6be64a7aafb8ca6","LICEN/;" s object:files +LICENSE-MIT vendor/lazy_static/.cargo-checksum.json /^{"files":{"Cargo.toml":"05e37a4e63dc4a495998bb5133252a51d671c4e99061a6342089ed6eab43978a","LICEN/;" s object:files +LICENSE-MIT vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +LICENSE-MIT vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +LICENSE-MIT vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +LICENSE-MIT vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +LICENSE-MIT vendor/pin-utils/.cargo-checksum.json /^{"files":{"Cargo.toml":"0f8296bda5b928d57bb84443422f21db3aa35d6873ce651297634d80c183dc6b","LICEN/;" s object:files +LICENSE-MIT vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +LICENSE-MIT vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +LICENSE-MIT vendor/rustc-hash/.cargo-checksum.json /^{"files":{"CODE_OF_CONDUCT.md":"edca092fde496419a9f1ba640048aa0270b62dfea576cd3175f0b53e3c230470/;" s object:files +LICENSE-MIT vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +LICENSE-MIT vendor/stable_deref_trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"5a8352eba01791ecee28b37cfe1324fa48db52e35023b23a4f07ca84267abfd6","LICEN/;" s object:files +LICENSE-MIT vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +LICENSE-MIT vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" s object:files +LICENSE-MIT vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +LICENSE-MIT vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +LICENSE-MIT vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +LICENSE-MIT vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +LICENSE-UNICODE vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +LIMIT_HARD builtins_rust/ulimit/src/lib.rs /^macro_rules! LIMIT_HARD {$/;" M +LIMIT_SOFT builtins_rust/ulimit/src/lib.rs /^macro_rules! LIMIT_SOFT {$/;" M +LINES execute_cmd.c /^static int LINES, COLS, tabsize;$/;" v typeref:typename:int file: +LINGER vendor/winapi/src/um/winsock2.rs /^pub type LINGER = linger;$/;" t +LIST_DIRTY pcomplete.h /^#define LIST_DIRTY /;" d +LIST_DONTFREE pcomplete.h /^#define LIST_DONTFREE /;" d +LIST_DONTFREEMEMBERS pcomplete.h /^#define LIST_DONTFREEMEMBERS /;" d +LIST_DYNAMIC pcomplete.h /^#define LIST_DYNAMIC /;" d +LIST_INITIALIZED pcomplete.h /^#define LIST_INITIALIZED /;" d +LIST_MUSTSORT pcomplete.h /^#define LIST_MUSTSORT /;" d +LISet32 vendor/winapi/src/um/combaseapi.rs /^pub fn LISet32(li: &mut LARGE_INTEGER, v: DWORD) {$/;" f +LLONG_MAX include/typemax.h /^# define LLONG_MAX /;" d +LLONG_MIN include/typemax.h /^# define LLONG_MIN /;" d +LMCSTR vendor/winapi/src/shared/lmcons.rs /^pub type LMCSTR = LPCWSTR;$/;" t +LMP_3SLOT_EDR_ACL_PACKETS vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_3SLOT_EDR_ACL_PACKETS(x: u64) -> u64 {$/;" f +LMP_3SLOT_EDR_ESCO_PACKETS vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_3SLOT_EDR_ESCO_PACKETS(x: u64) -> u64 {$/;" f +LMP_3_SLOT_PACKETS vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_3_SLOT_PACKETS(x: u64) -> u64 {$/;" f +LMP_5SLOT_EDR_ACL_PACKETS vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_5SLOT_EDR_ACL_PACKETS(x: u64) -> u64 {$/;" f +LMP_5_SLOT_PACKETS vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_5_SLOT_PACKETS(x: u64) -> u64 {$/;" f +LMP_AFH_CAPABLE_MASTER vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_AFH_CAPABLE_MASTER(x: u64) -> u64 {$/;" f +LMP_AFH_CAPABLE_SLAVE vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_AFH_CAPABLE_SLAVE(x: u64) -> u64 {$/;" f +LMP_AFH_CLASSIFICATION_MASTER vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_AFH_CLASSIFICATION_MASTER(x: u64) -> u64 {$/;" f +LMP_AFH_CLASSIFICATION_SLAVE vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_AFH_CLASSIFICATION_SLAVE(x: u64) -> u64 {$/;" f +LMP_A_LAW_LOG vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_A_LAW_LOG(x: u64) -> u64 {$/;" f +LMP_BROADCAST_ENCRYPTION vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_BROADCAST_ENCRYPTION(x: u64) -> u64 {$/;" f +LMP_BR_EDR_NOT_SUPPORTED vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_BR_EDR_NOT_SUPPORTED(x: u64) -> u64 {$/;" f +LMP_CHANNEL_QUALITY_DRIVEN_MODE vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_CHANNEL_QUALITY_DRIVEN_MODE(x: u64) -> u64 {$/;" f +LMP_CVSD vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_CVSD(x: u64) -> u64 {$/;" f +LMP_EDR_ESCO_2MBPS_MODE vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_EDR_ESCO_2MBPS_MODE(x: u64) -> u64 {$/;" f +LMP_EDR_ESCO_3MBPS_MODE vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_EDR_ESCO_3MBPS_MODE(x: u64) -> u64 {$/;" f +LMP_ENCAPSULATED_PDU vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_ENCAPSULATED_PDU(x: u64) -> u64 {$/;" f +LMP_ENCRYPTION vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_ENCRYPTION(x: u64) -> u64 {$/;" f +LMP_ENHANCED_DATA_RATE_ACL_2MBPS_MODE vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_ENHANCED_DATA_RATE_ACL_2MBPS_MODE(x: u64) -> u64 {$/;" f +LMP_ENHANCED_DATA_RATE_ACL_3MBPS_MODE vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_ENHANCED_DATA_RATE_ACL_3MBPS_MODE(x: u64) -> u64 {$/;" f +LMP_ENHANCED_INQUIRY_SCAN vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_ENHANCED_INQUIRY_SCAN(x: u64) -> u64 {$/;" f +LMP_ERRONEOUS_DATA_REPORTING vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_ERRONEOUS_DATA_REPORTING(x: u64) -> u64 {$/;" f +LMP_ESCO_LINK vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_ESCO_LINK(x: u64) -> u64 {$/;" f +LMP_EV4_PACKETS vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_EV4_PACKETS(x: u64) -> u64 {$/;" f +LMP_EV5_PACKETS vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_EV5_PACKETS(x: u64) -> u64 {$/;" f +LMP_EXTENDED_FEATURES vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_EXTENDED_FEATURES(x: u64) -> u64 {$/;" f +LMP_EXTENDED_INQUIRY_RESPONSE vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_EXTENDED_INQUIRY_RESPONSE(x: u64) -> u64 {$/;" f +LMP_FLOW_CONTROL_LAG vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_FLOW_CONTROL_LAG(x: u64) -> u64 {$/;" f +LMP_HOLD_MODE vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_HOLD_MODE(x: u64) -> u64 {$/;" f +LMP_HV2_PACKETS vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_HV2_PACKETS(x: u64) -> u64 {$/;" f +LMP_HV3_PACKETS vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_HV3_PACKETS(x: u64) -> u64 {$/;" f +LMP_INQUIRY_RESPONSE_TX_POWER_LEVEL vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_INQUIRY_RESPONSE_TX_POWER_LEVEL(x: u64) -> u64 {$/;" f +LMP_INTERLACED_INQUIRY_SCAN vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_INTERLACED_INQUIRY_SCAN(x: u64) -> u64 {$/;" f +LMP_INTERLACED_PAGE_SCAN vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_INTERLACED_PAGE_SCAN(x: u64) -> u64 {$/;" f +LMP_LE_SUPPORTED vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_LE_SUPPORTED(x: u64) -> u64 {$/;" f +LMP_LINK_SUPERVISION_TIMEOUT_CHANGED_EVENT vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_LINK_SUPERVISION_TIMEOUT_CHANGED_EVENT(x: u64) -> u64 {$/;" f +LMP_MU_LAW_LOG vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_MU_LAW_LOG(x: u64) -> u64 {$/;" f +LMP_NON_FLUSHABLE_PACKET_BOUNDARY_FLAG vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_NON_FLUSHABLE_PACKET_BOUNDARY_FLAG(x: u64) -> u64 {$/;" f +LMP_PAGING_SCHEME vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_PAGING_SCHEME(x: u64) -> u64 {$/;" f +LMP_PARK_MODE vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_PARK_MODE(x: u64) -> u64 {$/;" f +LMP_PAUSE_ENCRYPTION vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_PAUSE_ENCRYPTION(x: u64) -> u64 {$/;" f +LMP_POWER_CONTROL vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_POWER_CONTROL(x: u64) -> u64 {$/;" f +LMP_RSSI vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_RSSI(x: u64) -> u64 {$/;" f +LMP_RSSI_WITH_INQUIRY_RESULTS vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_RSSI_WITH_INQUIRY_RESULTS(x: u64) -> u64 {$/;" f +LMP_SCO_LINK vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_SCO_LINK(x: u64) -> u64 {$/;" f +LMP_SECURE_SIMPLE_PAIRING vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_SECURE_SIMPLE_PAIRING(x: u64) -> u64 {$/;" f +LMP_SIMULT_LE_BR_TO_SAME_DEV vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_SIMULT_LE_BR_TO_SAME_DEV(x: u64) -> u64 {$/;" f +LMP_SLOT_OFFSET vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_SLOT_OFFSET(x: u64) -> u64 {$/;" f +LMP_SNIFF_MODE vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_SNIFF_MODE(x: u64) -> u64 {$/;" f +LMP_SNIFF_SUBRATING vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_SNIFF_SUBRATING(x: u64) -> u64 {$/;" f +LMP_SWITCH vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_SWITCH(x: u64) -> u64 {$/;" f +LMP_TIMING_ACCURACY vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_TIMING_ACCURACY(x: u64) -> u64 {$/;" f +LMP_TRANSPARENT_SCO_DATA vendor/winapi/src/shared/bthdef.rs /^pub fn LMP_TRANSPARENT_SCO_DATA(x: u64) -> u64 {$/;" f +LMSTR vendor/winapi/src/shared/lmcons.rs /^pub type LMSTR = LPWSTR;$/;" t +LM_CHALLENGE vendor/winapi/src/um/subauth.rs /^pub type LM_CHALLENGE = CLEAR_BLOCK;$/;" t +LOBYTE vendor/winapi/src/shared/minwindef.rs /^pub fn LOBYTE(l: WORD) -> BYTE {$/;" f +LOCALEDIR lib/intl/os2compat.h /^#define LOCALEDIR /;" d +LOCALE_ALIAS_PATH lib/intl/os2compat.h /^#define LOCALE_ALIAS_PATH /;" d +LOCALE_DEFS Makefile.in /^LOCALE_DEFS = -DLOCALEDIR='"$(localedir)"' -DPACKAGE='"$(PACKAGE)"'$/;" m +LOCALHANDLE vendor/winapi/src/shared/minwindef.rs /^pub type LOCALHANDLE = HANDLE;$/;" t +LOCALVAR_BUILTIN builtins.h /^#define LOCALVAR_BUILTIN /;" d +LOCAL_CFLAGS Makefile.in /^LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} ${MALLOC_DEBUG}$/;" m +LOCAL_CFLAGS builtins/Makefile.in /^LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG}$/;" m +LOCAL_CFLAGS configure.ac /^AC_SUBST(LOCAL_CFLAGS)$/;" s +LOCAL_CFLAGS lib/glob/Makefile.in /^LOCAL_CFLAGS = @LOCAL_CFLAGS@$/;" m +LOCAL_CFLAGS lib/malloc/Makefile.in /^LOCAL_CFLAGS = @LOCAL_CFLAGS@$/;" m +LOCAL_CFLAGS lib/readline/Makefile.in /^LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG}$/;" m +LOCAL_CFLAGS lib/sh/Makefile.in /^LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG}$/;" m +LOCAL_CFLAGS lib/tilde/Makefile.in /^LOCAL_CFLAGS = @LOCAL_CFLAGS@$/;" m +LOCAL_CFLAGS support/Makefile.in /^LOCAL_CFLAGS = @LOCAL_CFLAGS@$/;" m +LOCAL_DEFS Makefile.in /^LOCAL_DEFS = @LOCAL_DEFS@$/;" m +LOCAL_DEFS builtins/Makefile.in /^LOCAL_DEFS = @LOCAL_DEFS@$/;" m +LOCAL_DEFS configure.ac /^AC_SUBST(LOCAL_DEFS)$/;" s +LOCAL_DEFS lib/glob/Makefile.in /^LOCAL_DEFS = @LOCAL_DEFS@$/;" m +LOCAL_DEFS lib/intl/Makefile.in /^LOCAL_DEFS = @LOCAL_DEFS@$/;" m +LOCAL_DEFS lib/malloc/Makefile.in /^LOCAL_DEFS = @LOCAL_DEFS@$/;" m +LOCAL_DEFS lib/readline/Makefile.in /^LOCAL_DEFS = @LOCAL_DEFS@$/;" m +LOCAL_DEFS lib/sh/Makefile.in /^LOCAL_DEFS = @LOCAL_DEFS@$/;" m +LOCAL_DEFS lib/tilde/Makefile.in /^LOCAL_DEFS = @LOCAL_DEFS@$/;" m +LOCAL_DEFS support/Makefile.in /^LOCAL_DEFS = @LOCAL_DEFS@$/;" m +LOCAL_LDFLAGS Makefile.in /^LOCAL_LDFLAGS = @LOCAL_LDFLAGS@$/;" m +LOCAL_LDFLAGS builtins/Makefile.in /^LOCAL_LDFLAGS = @LOCAL_LDFLAGS@$/;" m +LOCAL_LDFLAGS configure.ac /^AC_SUBST(LOCAL_LDFLAGS)$/;" s +LOCAL_LDFLAGS support/Makefile.in /^LOCAL_LDFLAGS = @LOCAL_LDFLAGS@$/;" m +LOCAL_LIBS Makefile.in /^LOCAL_LIBS = @LOCAL_LIBS@$/;" m +LOCAL_LIBS configure.ac /^AC_SUBST(LOCAL_LIBS)$/;" s +LOCROOT lib/malloc/table.c /^#define LOCROOT /;" d file: +LOGICAL vendor/winapi/src/shared/ntdef.rs /^pub type LOGICAL = ULONG;$/;" t +LOG_CONF vendor/winapi/src/um/cfgmgr32.rs /^pub type LOG_CONF = DWORD_PTR;$/;" t +LONG lib/sh/fmtullong.c /^#define LONG /;" d file: +LONG lib/sh/fmtulong.c /^# define LONG /;" d file: +LONG lib/sh/fmtumax.c /^#define LONG /;" d file: +LONG lib/sh/strtol.c /^# define LONG /;" d file: +LONG vendor/winapi/src/shared/ntdef.rs /^pub type LONG = c_long;$/;" t +LONG vendor/winapi/src/um/winnt.rs /^pub type LONG = c_long;$/;" t +LONG32 vendor/winapi/src/shared/basetsd.rs /^pub type LONG32 = c_int;$/;" t +LONG64 vendor/winapi/src/shared/basetsd.rs /^pub type LONG64 = __int64;$/;" t +LONGDOUBLE lib/sh/snprintf.c /^# define LONGDOUBLE /;" d file: +LONGEST_SIGNAL_DESC jobs.h /^#define LONGEST_SIGNAL_DESC /;" d +LONGFORM builtins_rust/pushd/src/lib.rs /^macro_rules! LONGFORM {$/;" M +LONGLONG vendor/winapi/src/shared/ntdef.rs /^pub type LONGLONG = __int64;$/;" t +LONGLONG vendor/winapi/src/um/winnt.rs /^pub type LONGLONG = __int64;$/;" t +LONG_MAX include/typemax.h /^# define LONG_MAX /;" d +LONG_MIN include/typemax.h /^# define LONG_MIN /;" d +LONG_PTR vendor/winapi/src/shared/basetsd.rs /^pub type LONG_PTR = isize;$/;" t +LOR expr.c /^#define LOR /;" d file: +LOWER support/xcase.c /^#define LOWER /;" d file: +LOWORD vendor/winapi/src/shared/minwindef.rs /^pub fn LOWORD(l: DWORD) -> WORD {$/;" f +LPABC vendor/winapi/src/um/wingdi.rs /^pub type LPABC = *mut ABC;$/;" t +LPABCFLOAT vendor/winapi/src/um/wingdi.rs /^pub type LPABCFLOAT = *mut ABCFLOAT;$/;" t +LPACCEL vendor/winapi/src/um/winuser.rs /^pub type LPACCEL = *mut ACCEL;$/;" t +LPACCESS_INFO_0 vendor/winapi/src/um/lmaccess.rs /^pub type LPACCESS_INFO_0 = *mut ACCESS_INFO_0;$/;" t +LPACCESS_INFO_1 vendor/winapi/src/um/lmaccess.rs /^pub type LPACCESS_INFO_1 = *mut ACCESS_INFO_1;$/;" t +LPACCESS_INFO_1002 vendor/winapi/src/um/lmaccess.rs /^pub type LPACCESS_INFO_1002 = *mut ACCESS_INFO_1002;$/;" t +LPACCESS_LIST vendor/winapi/src/um/lmaccess.rs /^pub type LPACCESS_LIST = *mut ACCESS_LIST;$/;" t +LPADDJOB_INFO_1A vendor/winapi/src/um/winspool.rs /^pub type LPADDJOB_INFO_1A = *mut ADDJOB_INFO_1A;$/;" t +LPADDJOB_INFO_1W vendor/winapi/src/um/winspool.rs /^pub type LPADDJOB_INFO_1W = *mut ADDJOB_INFO_1W;$/;" t +LPADDRESS vendor/winapi/src/um/dbghelp.rs /^pub type LPADDRESS = *mut ADDRESS;$/;" t +LPADDRESS vendor/winapi/src/um/dbghelp.rs /^pub type LPADDRESS = LPADDRESS64;$/;" t +LPADDRESS64 vendor/winapi/src/um/dbghelp.rs /^pub type LPADDRESS64 = *mut ADDRESS64;$/;" t +LPADDREXCLUSIONCONTROL vendor/winapi/src/um/objidlbase.rs /^pub type LPADDREXCLUSIONCONTROL = *mut IAddrExclusionControl;$/;" t +LPADDRINFO vendor/winapi/src/um/ws2tcpip.rs /^pub type LPADDRINFO = *mut ADDRINFOA;$/;" t +LPADDRINFOEX2A vendor/winapi/src/shared/ws2def.rs /^pub type LPADDRINFOEX2A = *mut ADDRINFOEX2A;$/;" t +LPADDRINFOEX2W vendor/winapi/src/shared/ws2def.rs /^pub type LPADDRINFOEX2W = *mut ADDRINFOEX2W;$/;" t +LPADDRINFOEX3A vendor/winapi/src/shared/ws2def.rs /^pub type LPADDRINFOEX3A = *mut ADDRINFOEX3A;$/;" t +LPADDRINFOEX3W vendor/winapi/src/shared/ws2def.rs /^pub type LPADDRINFOEX3W = *mut ADDRINFOEX3W;$/;" t +LPADDRINFOEX4 vendor/winapi/src/shared/ws2def.rs /^pub type LPADDRINFOEX4 = *mut ADDRINFOEX4;$/;" t +LPADDRINFOEXA vendor/winapi/src/shared/ws2def.rs /^pub type LPADDRINFOEXA = *mut ADDRINFOEXA;$/;" t +LPADDRINFOEXW vendor/winapi/src/shared/ws2def.rs /^pub type LPADDRINFOEXW = *mut ADDRINFOEXW;$/;" t +LPADDRTRACKINGCONTROL vendor/winapi/src/um/objidlbase.rs /^pub type LPADDRTRACKINGCONTROL = *mut IAddrTrackingControl;$/;" t +LPADMIN_OTHER_INFO vendor/winapi/src/um/lmalert.rs /^pub type LPADMIN_OTHER_INFO = *mut ADMIN_OTHER_INFO;$/;" t +LPAFPROTOCOLS vendor/winapi/src/um/winsock2.rs /^pub type LPAFPROTOCOLS = *mut AFPROTOCOLS;$/;" t +LPALTTABINFO vendor/winapi/src/um/winuser.rs /^pub type LPALTTABINFO = *mut ALTTABINFO;$/;" t +LPANIMATIONINFO vendor/winapi/src/um/winuser.rs /^pub type LPANIMATIONINFO = *mut ANIMATIONINFO;$/;" t +LPAPI_VERSION vendor/winapi/src/um/dbghelp.rs /^pub type LPAPI_VERSION = *mut API_VERSION;$/;" t +LPAR expr.c /^#define LPAR /;" d file: +LPARAM vendor/winapi/src/shared/minwindef.rs /^pub type LPARAM = LONG_PTR;$/;" t +LPAREN lib/glob/gmisc.c /^#define LPAREN /;" d file: +LPAREN subst.c /^#define LPAREN /;" d file: +LPAT_ENUM vendor/winapi/src/um/lmat.rs /^pub type LPAT_ENUM = *mut AT_ENUM;$/;" t +LPAT_INFO vendor/winapi/src/um/lmat.rs /^pub type LPAT_INFO = *mut AT_INFO;$/;" t +LPAUDIT_POLICY_INFORMATION vendor/winapi/src/um/ntsecapi.rs /^pub type LPAUDIT_POLICY_INFORMATION = PAUDIT_POLICY_INFORMATION;$/;" t +LPAUTO_PROXY_SCRIPT_BUFFER vendor/winapi/src/um/wininet.rs /^pub type LPAUTO_PROXY_SCRIPT_BUFFER = *mut AUTO_PROXY_SCRIPT_BUFFER;$/;" t +LPAXESLISTA vendor/winapi/src/um/wingdi.rs /^pub type LPAXESLISTA = *mut AXESLISTA;$/;" t +LPAXESLISTW vendor/winapi/src/um/wingdi.rs /^pub type LPAXESLISTW = *mut AXESLISTW;$/;" t +LPAXISINFOA vendor/winapi/src/um/wingdi.rs /^pub type LPAXISINFOA = *mut AXISINFOA;$/;" t +LPAXISINFOW vendor/winapi/src/um/wingdi.rs /^pub type LPAXISINFOW = *mut AXISINFOW;$/;" t +LPBIDI_DATA vendor/winapi/src/um/winspool.rs /^pub type LPBIDI_DATA = *mut BIDI_DATA;$/;" t +LPBIDI_REQUEST_CONTAINER vendor/winapi/src/um/winspool.rs /^pub type LPBIDI_REQUEST_CONTAINER = *mut BIDI_REQUEST_CONTAINER;$/;" t +LPBIDI_REQUEST_DATA vendor/winapi/src/um/winspool.rs /^pub type LPBIDI_REQUEST_DATA = *mut BIDI_REQUEST_DATA;$/;" t +LPBIDI_RESPONSE_CONTAINER vendor/winapi/src/um/winspool.rs /^pub type LPBIDI_RESPONSE_CONTAINER = *mut BIDI_RESPONSE_CONTAINER;$/;" t +LPBIDI_RESPONSE_DATA vendor/winapi/src/um/winspool.rs /^pub type LPBIDI_RESPONSE_DATA = *mut BIDI_RESPONSE_DATA;$/;" t +LPBINDPTR vendor/winapi/src/um/oaidl.rs /^pub type LPBINDPTR = *mut BINDPTR;$/;" t +LPBIND_OPTS vendor/winapi/src/um/objidl.rs /^pub type LPBIND_OPTS = *mut BIND_OPTS;$/;" t +LPBITMAP vendor/winapi/src/um/wingdi.rs /^pub type LPBITMAP = *mut BITMAP;$/;" t +LPBITMAPCOREHEADER vendor/winapi/src/um/wingdi.rs /^pub type LPBITMAPCOREHEADER = *mut BITMAPCOREHEADER;$/;" t +LPBITMAPCOREINFO vendor/winapi/src/um/wingdi.rs /^pub type LPBITMAPCOREINFO = *mut BITMAPCOREINFO;$/;" t +LPBITMAPFILEHEADER vendor/winapi/src/um/wingdi.rs /^pub type LPBITMAPFILEHEADER = *mut BITMAPFILEHEADER;$/;" t +LPBITMAPINFO vendor/winapi/src/um/wingdi.rs /^pub type LPBITMAPINFO = *mut BITMAPINFO;$/;" t +LPBITMAPINFOHEADER vendor/winapi/src/um/wingdi.rs /^pub type LPBITMAPINFOHEADER = *mut BITMAPINFOHEADER;$/;" t +LPBITMAPV4HEADER vendor/winapi/src/um/wingdi.rs /^pub type LPBITMAPV4HEADER = *mut BITMAPV4HEADER;$/;" t +LPBITMAPV5HEADER vendor/winapi/src/um/wingdi.rs /^pub type LPBITMAPV5HEADER = *mut BITMAPV5HEADER;$/;" t +LPBLOB vendor/winapi/src/shared/wtypesbase.rs /^pub type LPBLOB = *mut BLOB;$/;" t +LPBOOL vendor/winapi/src/shared/minwindef.rs /^pub type LPBOOL = *mut BOOL;$/;" t +LPBSTR vendor/winapi/src/shared/wtypes.rs /^pub type LPBSTR = *mut BSTR;$/;" t +LPBSTRBLOB vendor/winapi/src/shared/wtypes.rs /^pub type LPBSTRBLOB = *mut BSTRBLOB;$/;" t +LPBYTE vendor/winapi/src/shared/minwindef.rs /^pub type LPBYTE = *mut BYTE;$/;" t +LPBY_HANDLE_FILE_INFORMATION vendor/winapi/src/um/fileapi.rs /^pub type LPBY_HANDLE_FILE_INFORMATION = *mut BY_HANDLE_FILE_INFORMATION;$/;" t +LPCANCELMETHODCALLS vendor/winapi/src/um/objidlbase.rs /^pub type LPCANCELMETHODCALLS = *mut ICancelMethodCalls;$/;" t +LPCBTACTIVATESTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPCBTACTIVATESTRUCT = *mut CBTACTIVATESTRUCT;$/;" t +LPCBT_CREATEWNDA vendor/winapi/src/um/winuser.rs /^pub type LPCBT_CREATEWNDA = *mut CBT_CREATEWNDA;$/;" t +LPCBT_CREATEWNDW vendor/winapi/src/um/winuser.rs /^pub type LPCBT_CREATEWNDW = *mut CBT_CREATEWNDW;$/;" t +LPCBYTE vendor/winapi/src/um/winscard.rs /^pub type LPCBYTE = *const BYTE;$/;" t +LPCCH vendor/winapi/src/shared/ntdef.rs /^pub type LPCCH = *const CHAR;$/;" t +LPCCH vendor/winapi/src/um/winnt.rs /^pub type LPCCH = *const CHAR;$/;" t +LPCDLGTEMPLATEA vendor/winapi/src/um/winuser.rs /^pub type LPCDLGTEMPLATEA = *const DLGTEMPLATE;$/;" t +LPCDLGTEMPLATEW vendor/winapi/src/um/winuser.rs /^pub type LPCDLGTEMPLATEW = *const DLGTEMPLATE;$/;" t +LPCDSBUFFERDESC vendor/winapi/src/um/dsound.rs /^pub type LPCDSBUFFERDESC = *const DSBUFFERDESC;$/;" t +LPCGUID vendor/winapi/src/shared/guiddef.rs /^pub type LPCGUID = *const GUID;$/;" t +LPCH vendor/winapi/src/shared/ntdef.rs /^pub type LPCH = *mut CHAR;$/;" t +LPCH vendor/winapi/src/um/winnt.rs /^pub type LPCH = *mut CHAR;$/;" t +LPCHARSETINFO vendor/winapi/src/um/wingdi.rs /^pub type LPCHARSETINFO = *mut CHARSETINFO;$/;" t +LPCHOOSECOLORA vendor/winapi/src/um/commdlg.rs /^pub type LPCHOOSECOLORA = *mut CHOOSECOLORA;$/;" t +LPCHOOSECOLORW vendor/winapi/src/um/commdlg.rs /^pub type LPCHOOSECOLORW = *mut CHOOSECOLORW;$/;" t +LPCHOOSEFONTA vendor/winapi/src/um/commdlg.rs /^pub type LPCHOOSEFONTA = *mut CHOOSEFONTA;$/;" t +LPCHOOSEFONTW vendor/winapi/src/um/commdlg.rs /^pub type LPCHOOSEFONTW = *mut CHOOSEFONTW;$/;" t +LPCIEXYZ vendor/winapi/src/um/wingdi.rs /^pub type LPCIEXYZ = *mut CIEXYZ;$/;" t +LPCIEXYZTRIPLE vendor/winapi/src/um/wingdi.rs /^pub type LPCIEXYZTRIPLE = *mut CIEXYZTRIPLE;$/;" t +LPCITEMIDLIST vendor/winapi/src/um/shtypes.rs /^pub type LPCITEMIDLIST = *const ITEMIDLIST;$/;" t +LPCLSID vendor/winapi/src/shared/guiddef.rs /^pub type LPCLSID = *mut CLSID;$/;" t +LPCMENUINFO vendor/winapi/src/um/winuser.rs /^pub type LPCMENUINFO = *const MENUINFO;$/;" t +LPCMENUITEMINFOA vendor/winapi/src/um/winuser.rs /^pub type LPCMENUITEMINFOA = *const MENUITEMINFOA;$/;" t +LPCMENUITEMINFOW vendor/winapi/src/um/winuser.rs /^pub type LPCMENUITEMINFOW = *const MENUITEMINFOW;$/;" t +LPCNSPV2_ROUTINE vendor/winapi/src/um/ws2spi.rs /^pub type LPCNSPV2_ROUTINE = *const NSPV2_ROUTINE;$/;" t +LPCOLESTR vendor/winapi/src/shared/wtypesbase.rs /^pub type LPCOLESTR = *const OLECHAR;$/;" t +LPCOLORADJUSTMENT vendor/winapi/src/um/wingdi.rs /^pub type LPCOLORADJUSTMENT = *mut COLORADJUSTMENT;$/;" t +LPCOLORMAP vendor/winapi/src/um/commctrl.rs /^pub type LPCOLORMAP = *mut COLORMAP;$/;" t +LPCOLORREF vendor/winapi/src/shared/windef.rs /^pub type LPCOLORREF = *mut DWORD;$/;" t +LPCOLORSCHEME vendor/winapi/src/um/commctrl.rs /^pub type LPCOLORSCHEME = *mut COLORSCHEME;$/;" t +LPCOMBOBOXINFO vendor/winapi/src/um/winuser.rs /^pub type LPCOMBOBOXINFO = *mut COMBOBOXINFO;$/;" t +LPCOMMCONFIG vendor/winapi/src/um/winbase.rs /^pub type LPCOMMCONFIG = *mut COMMCONFIG;$/;" t +LPCOMMPROP vendor/winapi/src/um/winbase.rs /^pub type LPCOMMPROP = *mut COMMPROP;$/;" t +LPCOMMTIMEOUTS vendor/winapi/src/um/winbase.rs /^pub type LPCOMMTIMEOUTS = *mut COMMTIMEOUTS;$/;" t +LPCOMPAREITEMSTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPCOMPAREITEMSTRUCT = *mut COMPAREITEMSTRUCT;$/;" t +LPCOMPOSITIONFORM vendor/winapi/src/um/imm.rs /^pub type LPCOMPOSITIONFORM = *mut COMPOSITIONFORM;$/;" t +LPCOMSTAT vendor/winapi/src/um/winbase.rs /^pub type LPCOMSTAT = *mut COMSTAT;$/;" t +LPCONNECTDLGSTRUCTA vendor/winapi/src/um/winnetwk.rs /^pub type LPCONNECTDLGSTRUCTA = *mut CONNECTDLGSTRUCTA;$/;" t +LPCONNECTDLGSTRUCTW vendor/winapi/src/um/winnetwk.rs /^pub type LPCONNECTDLGSTRUCTW = *mut CONNECTDLGSTRUCTW;$/;" t +LPCONNECTION_INFO_0 vendor/winapi/src/um/lmshare.rs /^pub type LPCONNECTION_INFO_0 = *mut CONNECTION_INFO_0;$/;" t +LPCONNECTION_INFO_1 vendor/winapi/src/um/lmshare.rs /^pub type LPCONNECTION_INFO_1 = *mut CONNECTION_INFO_1;$/;" t +LPCONTEXT vendor/winapi/src/um/minwinbase.rs /^pub type LPCONTEXT = PCONTEXT;$/;" t +LPCPINFO vendor/winapi/src/um/winnls.rs /^pub type LPCPINFO = *mut CPINFO;$/;" t +LPCPINFOEXA vendor/winapi/src/um/winnls.rs /^pub type LPCPINFOEXA = *mut CPINFOEXA;$/;" t +LPCPINFOEXW vendor/winapi/src/um/winnls.rs /^pub type LPCPINFOEXW = *mut CPINFOEXW;$/;" t +LPCPROPSHEETHEADERA vendor/winapi/src/um/prsht.rs /^pub type LPCPROPSHEETHEADERA = LPCPROPSHEETHEADERA_V2;$/;" t +LPCPROPSHEETHEADERA_V2 vendor/winapi/src/um/prsht.rs /^pub type LPCPROPSHEETHEADERA_V2 = *const PROPSHEETHEADERA_V2;$/;" t +LPCPROPSHEETHEADERW vendor/winapi/src/um/prsht.rs /^pub type LPCPROPSHEETHEADERW = LPCPROPSHEETHEADERW_V2;$/;" t +LPCPROPSHEETHEADERW_V2 vendor/winapi/src/um/prsht.rs /^pub type LPCPROPSHEETHEADERW_V2 = *const PROPSHEETHEADERW_V2;$/;" t +LPCPROPSHEETPAGEA vendor/winapi/src/um/prsht.rs /^pub type LPCPROPSHEETPAGEA = LPCPROPSHEETPAGEA_V4;$/;" t +LPCPROPSHEETPAGEA_LATEST vendor/winapi/src/um/prsht.rs /^pub type LPCPROPSHEETPAGEA_LATEST = LPCPROPSHEETPAGEA_V4;$/;" t +LPCPROPSHEETPAGEA_V4 vendor/winapi/src/um/prsht.rs /^pub type LPCPROPSHEETPAGEA_V4 = *const PROPSHEETPAGEA_V4;$/;" t +LPCPROPSHEETPAGEW vendor/winapi/src/um/prsht.rs /^pub type LPCPROPSHEETPAGEW = LPCPROPSHEETPAGEW_V4;$/;" t +LPCPROPSHEETPAGEW_LATEST vendor/winapi/src/um/prsht.rs /^pub type LPCPROPSHEETPAGEW_LATEST = LPCPROPSHEETPAGEW_V4;$/;" t +LPCPROPSHEETPAGEW_V4 vendor/winapi/src/um/prsht.rs /^pub type LPCPROPSHEETPAGEW_V4 = *const PROPSHEETPAGEW_V4;$/;" t +LPCREATEFILE2_EXTENDED_PARAMETERS vendor/winapi/src/um/fileapi.rs /^pub type LPCREATEFILE2_EXTENDED_PARAMETERS = *mut CREATEFILE2_EXTENDED_PARAMETERS;$/;" t +LPCREATESTRUCTA vendor/winapi/src/um/winuser.rs /^pub type LPCREATESTRUCTA = *mut CREATESTRUCTA;$/;" t +LPCREATESTRUCTW vendor/winapi/src/um/winuser.rs /^pub type LPCREATESTRUCTW = *mut CREATESTRUCTW;$/;" t +LPCREATETYPEINFO vendor/winapi/src/um/oaidl.rs /^pub type LPCREATETYPEINFO = *mut ICreateTypeInfo;$/;" t +LPCREATE_PROCESS_DEBUG_INFO vendor/winapi/src/um/minwinbase.rs /^pub type LPCREATE_PROCESS_DEBUG_INFO = *mut CREATE_PROCESS_DEBUG_INFO;$/;" t +LPCREATE_THREAD_DEBUG_INFO vendor/winapi/src/um/minwinbase.rs /^pub type LPCREATE_THREAD_DEBUG_INFO = *mut CREATE_THREAD_DEBUG_INFO;$/;" t +LPCREBARBANDINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPCREBARBANDINFOA = *const REBARBANDINFOA;$/;" t +LPCREBARBANDINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPCREBARBANDINFOW = *const REBARBANDINFOW;$/;" t +LPCRECT vendor/winapi/src/shared/windef.rs /^pub type LPCRECT = *const RECT;$/;" t +LPCRECTL vendor/winapi/src/shared/windef.rs /^pub type LPCRECTL = *const RECTL;$/;" t +LPCRITICAL_SECTION vendor/winapi/src/um/minwinbase.rs /^pub type LPCRITICAL_SECTION = PRTL_CRITICAL_SECTION;$/;" t +LPCRITICAL_SECTION_DEBUG vendor/winapi/src/um/minwinbase.rs /^pub type LPCRITICAL_SECTION_DEBUG = PRTL_CRITICAL_SECTION_DEBUG;$/;" t +LPCSADDR_INFO vendor/winapi/src/shared/ws2def.rs /^pub type LPCSADDR_INFO = *mut CSADDR_INFO;$/;" t +LPCSCARD_IO_REQUEST vendor/winapi/src/um/winsmcrd.rs /^pub type LPCSCARD_IO_REQUEST = *const SCARD_IO_REQUEST;$/;" t +LPCSCROLLINFO vendor/winapi/src/um/winuser.rs /^pub type LPCSCROLLINFO = *const SCROLLINFO;$/;" t +LPCSHITEMID vendor/winapi/src/um/shtypes.rs /^pub type LPCSHITEMID = *const SHITEMID;$/;" t +LPCSTR vendor/winapi/src/shared/ntdef.rs /^pub type LPCSTR = *const CHAR;$/;" t +LPCSTR vendor/winapi/src/um/winnt.rs /^pub type LPCSTR = *const CHAR;$/;" t +LPCTBBUTTON vendor/winapi/src/um/commctrl.rs /^pub type LPCTBBUTTON = *const TBBUTTON;$/;" t +LPCURRENCYFMTA vendor/winapi/src/um/winnls.rs /^pub type LPCURRENCYFMTA = *mut CURRENCYFMTA;$/;" t +LPCURRENCYFMTW vendor/winapi/src/um/winnls.rs /^pub type LPCURRENCYFMTW = *mut CURRENCYFMTW;$/;" t +LPCURSORINFO vendor/winapi/src/um/winuser.rs /^pub type LPCURSORINFO = *mut CURSORINFO;$/;" t +LPCUSTDATA vendor/winapi/src/um/oaidl.rs /^pub type LPCUSTDATA = *mut CUSTDATA;$/;" t +LPCUSTDATAITEM vendor/winapi/src/um/oaidl.rs /^pub type LPCUSTDATAITEM = *mut CUSTDATAITEM;$/;" t +LPCUWCHAR vendor/winapi/src/shared/ntdef.rs /^pub type LPCUWCHAR = *const WCHAR; \/\/ Unaligned pointer$/;" t +LPCUWCHAR vendor/winapi/src/um/winnt.rs /^pub type LPCUWCHAR = *const WCHAR; \/\/ Unaligned pointer$/;" t +LPCUWSTR vendor/winapi/src/shared/ntdef.rs /^pub type LPCUWSTR = *const WCHAR; \/\/ Unaligned pointer$/;" t +LPCUWSTR vendor/winapi/src/um/winnt.rs /^pub type LPCUWSTR = *const WCHAR; \/\/ Unaligned pointer$/;" t +LPCVOID vendor/winapi/src/shared/minwindef.rs /^pub type LPCVOID = *const c_void;$/;" t +LPCWAVEFORMATEX vendor/winapi/src/um/mmsystem.rs /^pub type LPCWAVEFORMATEX = *const WAVEFORMATEX;$/;" t +LPCWCH vendor/winapi/src/shared/ntdef.rs /^pub type LPCWCH = *const WCHAR;$/;" t +LPCWCH vendor/winapi/src/um/winnt.rs /^pub type LPCWCH = *const WCHAR;$/;" t +LPCWCHAR vendor/winapi/src/shared/ntdef.rs /^pub type LPCWCHAR = *const WCHAR;$/;" t +LPCWCHAR vendor/winapi/src/um/winnt.rs /^pub type LPCWCHAR = *const WCHAR;$/;" t +LPCWPRETSTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPCWPRETSTRUCT = *mut CWPRETSTRUCT;$/;" t +LPCWPSTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPCWPSTRUCT = *mut CWPSTRUCT;$/;" t +LPCWSTR vendor/winapi/src/shared/ntdef.rs /^pub type LPCWSTR = *const WCHAR;$/;" t +LPCWSTR vendor/winapi/src/um/winnt.rs /^pub type LPCWSTR = *const WCHAR;$/;" t +LPCY vendor/winapi/src/shared/wtypes.rs /^pub type LPCY = *mut CY;$/;" t +LPD3D10BLOB vendor/winapi/src/um/d3dcommon.rs /^pub type LPD3D10BLOB = *mut ID3D10Blob;$/;" t +LPD3D10INCLUDE vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10INCLUDE = *mut ID3DInclude;$/;" t +LPD3D10SHADERREFLECTION vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10SHADERREFLECTION = *mut ID3D10ShaderReflection;$/;" t +LPD3D10SHADERREFLECTIONCONSTANTBUFFER vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10SHADERREFLECTIONCONSTANTBUFFER = *mut ID3D10ShaderReflectionConstantBuffer;$/;" t +LPD3D10SHADERREFLECTIONTYPE vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10SHADERREFLECTIONTYPE = *mut ID3D10ShaderReflectionType;$/;" t +LPD3D10SHADERREFLECTIONVARIABLE vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10SHADERREFLECTIONVARIABLE = *mut ID3D10ShaderReflectionVariable;$/;" t +LPD3D10_CBUFFER_TYPE vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10_CBUFFER_TYPE = *mut D3D10_CBUFFER_TYPE;$/;" t +LPD3D10_SHADER_CBUFFER_FLAGS vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10_SHADER_CBUFFER_FLAGS = *mut D3D10_SHADER_CBUFFER_FLAGS;$/;" t +LPD3D10_SHADER_INPUT_FLAGS vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10_SHADER_INPUT_FLAGS = *mut D3D10_SHADER_INPUT_FLAGS;$/;" t +LPD3D10_SHADER_INPUT_TYPE vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10_SHADER_INPUT_TYPE = *mut D3D10_SHADER_INPUT_TYPE;$/;" t +LPD3D10_SHADER_MACRO vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10_SHADER_MACRO = *mut D3D10_SHADER_MACRO;$/;" t +LPD3D10_SHADER_VARIABLE_CLASS vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10_SHADER_VARIABLE_CLASS = *mut D3D10_SHADER_VARIABLE_CLASS;$/;" t +LPD3D10_SHADER_VARIABLE_FLAGS vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10_SHADER_VARIABLE_FLAGS = *mut D3D10_SHADER_VARIABLE_FLAGS;$/;" t +LPD3D10_SHADER_VARIABLE_TYPE vendor/winapi/src/um/d3d10shader.rs /^pub type LPD3D10_SHADER_VARIABLE_TYPE = *mut D3D10_SHADER_VARIABLE_TYPE;$/;" t +LPD3D12FUNCTIONPARAMETERREFLECTION vendor/winapi/src/um/d3d12shader.rs /^pub type LPD3D12FUNCTIONPARAMETERREFLECTION = *mut ID3D12FunctionParameterReflection;$/;" t +LPD3D12FUNCTIONREFLECTION vendor/winapi/src/um/d3d12shader.rs /^pub type LPD3D12FUNCTIONREFLECTION = *mut ID3D12FunctionReflection;$/;" t +LPD3D12LIBRARYREFLECTION vendor/winapi/src/um/d3d12shader.rs /^pub type LPD3D12LIBRARYREFLECTION = *mut ID3D12LibraryReflection;$/;" t +LPD3D12SHADERREFLECTION vendor/winapi/src/um/d3d12shader.rs /^pub type LPD3D12SHADERREFLECTION = *mut ID3D12ShaderReflection;$/;" t +LPD3D12SHADERREFLECTIONCONSTANTBUFFER vendor/winapi/src/um/d3d12shader.rs /^pub type LPD3D12SHADERREFLECTIONCONSTANTBUFFER = *mut ID3D12ShaderReflectionConstantBuffer;$/;" t +LPD3D12SHADERREFLECTIONTYPE vendor/winapi/src/um/d3d12shader.rs /^pub type LPD3D12SHADERREFLECTIONTYPE = *mut ID3D12ShaderReflectionType;$/;" t +LPD3D12SHADERREFLECTIONVARIABLE vendor/winapi/src/um/d3d12shader.rs /^pub type LPD3D12SHADERREFLECTIONVARIABLE = *mut ID3D12ShaderReflectionVariable;$/;" t +LPD3DBLOB vendor/winapi/src/um/d3dcommon.rs /^pub type LPD3DBLOB = *mut ID3DBlob;$/;" t +LPD3DDEVINFO_D3DVERTEXSTATS vendor/winapi/src/shared/d3d9types.rs /^pub type LPD3DDEVINFO_D3DVERTEXSTATS = *mut D3DDEVINFO_D3DVERTEXSTATS;$/;" t +LPD3DDEVINFO_RESOURCEMANAGER vendor/winapi/src/shared/d3d9types.rs /^pub type LPD3DDEVINFO_RESOURCEMANAGER = *mut D3DDEVINFO_RESOURCEMANAGER;$/;" t +LPD3DDEVINFO_VCACHE vendor/winapi/src/shared/d3d9types.rs /^pub type LPD3DDEVINFO_VCACHE = *mut D3DDEVINFO_VCACHE;$/;" t +LPD3DINCLUDE vendor/winapi/src/um/d3dcommon.rs /^pub type LPD3DINCLUDE = *mut ID3DInclude;$/;" t +LPD3DVERTEXELEMENT9 vendor/winapi/src/shared/d3d9types.rs /^pub type LPD3DVERTEXELEMENT9 = *mut D3DVERTEXELEMENT9;$/;" t +LPD3D_SHADER_MACRO vendor/winapi/src/um/d3dcommon.rs /^pub type LPD3D_SHADER_MACRO = *mut D3D_SHADER_MACRO;$/;" t +LPDATAOBJECT vendor/winapi/src/um/objidl.rs /^pub type LPDATAOBJECT = *mut IDataObject;$/;" t +LPDATATYPES_INFO_1A vendor/winapi/src/um/winspool.rs /^pub type LPDATATYPES_INFO_1A = *mut DATATYPES_INFO_1A;$/;" t +LPDATATYPES_INFO_1W vendor/winapi/src/um/winspool.rs /^pub type LPDATATYPES_INFO_1W = *mut DATATYPES_INFO_1W;$/;" t +LPDATETIMEPICKERINFO vendor/winapi/src/um/commctrl.rs /^pub type LPDATETIMEPICKERINFO = *mut DATETIMEPICKERINFO;$/;" t +LPDCB vendor/winapi/src/um/winbase.rs /^pub type LPDCB = *mut DCB;$/;" t +LPDEBUGHOOKINFO vendor/winapi/src/um/winuser.rs /^pub type LPDEBUGHOOKINFO = *mut DEBUGHOOKINFO;$/;" t +LPDEBUG_EVENT vendor/winapi/src/um/minwinbase.rs /^pub type LPDEBUG_EVENT = *mut DEBUG_EVENT;$/;" t +LPDECIMAL vendor/winapi/src/shared/wtypes.rs /^pub type LPDECIMAL = *mut DECIMAL;$/;" t +LPDELETEITEMSTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPDELETEITEMSTRUCT = *mut DELETEITEMSTRUCT;$/;" t +LPDESC vendor/winapi/src/um/lmremutl.rs /^pub type LPDESC = LPSTR;$/;" t +LPDESIGNVECTOR vendor/winapi/src/um/wingdi.rs /^pub type LPDESIGNVECTOR = *mut DESIGNVECTOR;$/;" t +LPDEVMODEA vendor/winapi/src/um/wingdi.rs /^pub type LPDEVMODEA = *mut DEVMODEA;$/;" t +LPDEVMODEW vendor/winapi/src/um/wingdi.rs /^pub type LPDEVMODEW = *mut DEVMODEW;$/;" t +LPDEVNAMES vendor/winapi/src/um/commdlg.rs /^pub type LPDEVNAMES = *mut DEVNAMES;$/;" t +LPDFS_INFO_1 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_1 = *mut DFS_INFO_1;$/;" t +LPDFS_INFO_100 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_100 = *mut DFS_INFO_100;$/;" t +LPDFS_INFO_101 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_101 = *mut DFS_INFO_101;$/;" t +LPDFS_INFO_102 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_102 = *mut DFS_INFO_102;$/;" t +LPDFS_INFO_103 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_103 = *mut DFS_INFO_103;$/;" t +LPDFS_INFO_104 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_104 = *mut DFS_INFO_104;$/;" t +LPDFS_INFO_105 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_105 = *mut DFS_INFO_105;$/;" t +LPDFS_INFO_106 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_106 = *mut DFS_INFO_106;$/;" t +LPDFS_INFO_107 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_107 = *mut DFS_INFO_107;$/;" t +LPDFS_INFO_150 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_150 = *mut DFS_INFO_150;$/;" t +LPDFS_INFO_2 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_2 = *mut DFS_INFO_2;$/;" t +LPDFS_INFO_200 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_200 = *mut DFS_INFO_200;$/;" t +LPDFS_INFO_3 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_3 = *mut DFS_INFO_3;$/;" t +LPDFS_INFO_300 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_300 = *mut DFS_INFO_300;$/;" t +LPDFS_INFO_4 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_4 = *mut DFS_INFO_4;$/;" t +LPDFS_INFO_5 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_5 = *mut DFS_INFO_5;$/;" t +LPDFS_INFO_50 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_50 = *mut DFS_INFO_50;$/;" t +LPDFS_INFO_6 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_6 = *mut DFS_INFO_6;$/;" t +LPDFS_INFO_7 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_7 = *mut DFS_INFO_7;$/;" t +LPDFS_INFO_8 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_8 = *mut DFS_INFO_8;$/;" t +LPDFS_INFO_9 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_INFO_9 = *mut DFS_INFO_9;$/;" t +LPDFS_SITELIST_INFO vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_SITELIST_INFO = *mut DFS_SITELIST_INFO;$/;" t +LPDFS_SITENAME_INFO vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_SITENAME_INFO = *mut DFS_SITENAME_INFO;$/;" t +LPDFS_STORAGE_INFO vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_STORAGE_INFO = *mut DFS_STORAGE_INFO;$/;" t +LPDFS_STORAGE_INFO_1 vendor/winapi/src/um/lmdfs.rs /^pub type LPDFS_STORAGE_INFO_1 = *mut DFS_STORAGE_INFO_1;$/;" t +LPDIBSECTION vendor/winapi/src/um/wingdi.rs /^pub type LPDIBSECTION = *mut DIBSECTION;$/;" t +LPDIRECT3D9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3D9 = *mut IDirect3D9;$/;" t +LPDIRECT3D9EX vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3D9EX = *mut IDirect3D9Ex;$/;" t +LPDIRECT3D9EXOVERLAYEXTENSION vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3D9EXOVERLAYEXTENSION = *mut IDirect3D9ExOverlayExtension;$/;" t +LPDIRECT3DAUTHENTICATEDCHANNEL9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DAUTHENTICATEDCHANNEL9 = *mut IDirect3DAuthenticatedChannel9;$/;" t +LPDIRECT3DBASETEXTURE9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DBASETEXTURE9 = *mut IDirect3DBaseTexture9;$/;" t +LPDIRECT3DCRYPTOSESSION9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DCRYPTOSESSION9 = *mut IDirect3DCryptoSession9;$/;" t +LPDIRECT3DCUBETEXTURE9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DCUBETEXTURE9 = *mut IDirect3DCubeTexture9;$/;" t +LPDIRECT3DDEVICE9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DDEVICE9 = *mut IDirect3DDevice9;$/;" t +LPDIRECT3DDEVICE9EX vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DDEVICE9EX = *mut IDirect3DDevice9Ex;$/;" t +LPDIRECT3DDEVICE9VIDEO vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DDEVICE9VIDEO = *mut IDirect3DDevice9Video;$/;" t +LPDIRECT3DINDEXBUFFER9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DINDEXBUFFER9 = *mut IDirect3DIndexBuffer9;$/;" t +LPDIRECT3DPIXELSHADER9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DPIXELSHADER9 = *mut IDirect3DPixelShader9;$/;" t +LPDIRECT3DQUERY9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DQUERY9 = *mut IDirect3DQuery9;$/;" t +LPDIRECT3DRESOURCE9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DRESOURCE9 = *mut IDirect3DResource9;$/;" t +LPDIRECT3DSTATEBLOCK9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DSTATEBLOCK9 = *mut IDirect3DStateBlock9;$/;" t +LPDIRECT3DSURFACE9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DSURFACE9 = *mut IDirect3DSurface9;$/;" t +LPDIRECT3DSWAPCHAIN9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DSWAPCHAIN9 = *mut IDirect3DSwapChain9;$/;" t +LPDIRECT3DSWAPCHAIN9EX vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DSWAPCHAIN9EX = *mut IDirect3DSwapChain9Ex;$/;" t +LPDIRECT3DTEXTURE9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DTEXTURE9 = *mut IDirect3DTexture9;$/;" t +LPDIRECT3DVERTEXBUFFER9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DVERTEXBUFFER9 = *mut IDirect3DVertexBuffer9;$/;" t +LPDIRECT3DVERTEXDECLARATION9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DVERTEXDECLARATION9 = *mut IDirect3DVertexDeclaration9;$/;" t +LPDIRECT3DVERTEXSHADER9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DVERTEXSHADER9 = *mut IDirect3DVertexShader9;$/;" t +LPDIRECT3DVOLUME9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DVOLUME9 = *mut IDirect3DVolume9;$/;" t +LPDIRECT3DVOLUMETEXTURE9 vendor/winapi/src/shared/d3d9.rs /^pub type LPDIRECT3DVOLUMETEXTURE9 = *mut IDirect3DVolumeTexture9;$/;" t +LPDIRECTSOUND vendor/winapi/src/um/dsound.rs /^pub type LPDIRECTSOUND = *mut IDirectSound;$/;" t +LPDIRECTSOUNDBUFFER vendor/winapi/src/um/dsound.rs /^pub type LPDIRECTSOUNDBUFFER = *mut IDirectSoundBuffer;$/;" t +LPDISCDLGSTRUCTA vendor/winapi/src/um/winnetwk.rs /^pub type LPDISCDLGSTRUCTA = *mut DISCDLGSTRUCTA;$/;" t +LPDISCDLGSTRUCTW vendor/winapi/src/um/winnetwk.rs /^pub type LPDISCDLGSTRUCTW = *mut DISCDLGSTRUCTW;$/;" t +LPDISPATCH vendor/winapi/src/um/oaidl.rs /^pub type LPDISPATCH = *mut IDispatch;$/;" t +LPDISPLAY_DEVICEA vendor/winapi/src/um/wingdi.rs /^pub type LPDISPLAY_DEVICEA = *mut DISPLAY_DEVICEA;$/;" t +LPDISPLAY_DEVICEW vendor/winapi/src/um/wingdi.rs /^pub type LPDISPLAY_DEVICEW = *mut DISPLAY_DEVICEW;$/;" t +LPDLGITEMTEMPLATEA vendor/winapi/src/um/winuser.rs /^pub type LPDLGITEMTEMPLATEA = *mut DLGITEMTEMPLATE;$/;" t +LPDLGITEMTEMPLATEW vendor/winapi/src/um/winuser.rs /^pub type LPDLGITEMTEMPLATEW = *mut DLGITEMTEMPLATE;$/;" t +LPDLGTEMPLATEA vendor/winapi/src/um/winuser.rs /^pub type LPDLGTEMPLATEA = *mut DLGTEMPLATE;$/;" t +LPDLGTEMPLATEW vendor/winapi/src/um/winuser.rs /^pub type LPDLGTEMPLATEW = *mut DLGTEMPLATE;$/;" t +LPDOCINFOA vendor/winapi/src/um/wingdi.rs /^pub type LPDOCINFOA = *mut DOCINFOA;$/;" t +LPDOCINFOW vendor/winapi/src/um/wingdi.rs /^pub type LPDOCINFOW = *mut DOCINFOW;$/;" t +LPDOC_INFO_1A vendor/winapi/src/um/winspool.rs /^pub type LPDOC_INFO_1A = *mut DOC_INFO_1A;$/;" t +LPDOC_INFO_1W vendor/winapi/src/um/winspool.rs /^pub type LPDOC_INFO_1W = *mut DOC_INFO_1W;$/;" t +LPDOC_INFO_2A vendor/winapi/src/um/winspool.rs /^pub type LPDOC_INFO_2A = *mut DOC_INFO_2A;$/;" t +LPDOC_INFO_2W vendor/winapi/src/um/winspool.rs /^pub type LPDOC_INFO_2W = *mut DOC_INFO_2W;$/;" t +LPDOC_INFO_3A vendor/winapi/src/um/winspool.rs /^pub type LPDOC_INFO_3A = *mut DOC_INFO_3A;$/;" t +LPDOC_INFO_3W vendor/winapi/src/um/winspool.rs /^pub type LPDOC_INFO_3W = *mut DOC_INFO_3W;$/;" t +LPDRAGINFOA vendor/winapi/src/um/shellapi.rs /^pub type LPDRAGINFOA = *mut DRAGINFOA;$/;" t +LPDRAGINFOW vendor/winapi/src/um/shellapi.rs /^pub type LPDRAGINFOW = *mut DRAGINFOW;$/;" t +LPDRAGLISTINFO vendor/winapi/src/um/commctrl.rs /^pub type LPDRAGLISTINFO = *mut DRAGLISTINFO;$/;" t +LPDRAWITEMSTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPDRAWITEMSTRUCT = *mut DRAWITEMSTRUCT;$/;" t +LPDRAWTEXTPARAMS vendor/winapi/src/um/winuser.rs /^pub type LPDRAWTEXTPARAMS = *mut DRAWTEXTPARAMS;$/;" t +LPDRIVER_INFO_1A vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_1A = *mut DRIVER_INFO_1A;$/;" t +LPDRIVER_INFO_1W vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_1W = *mut DRIVER_INFO_1W;$/;" t +LPDRIVER_INFO_2A vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_2A = *mut DRIVER_INFO_2A;$/;" t +LPDRIVER_INFO_2W vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_2W = *mut DRIVER_INFO_2W;$/;" t +LPDRIVER_INFO_3A vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_3A = *mut DRIVER_INFO_3A;$/;" t +LPDRIVER_INFO_3W vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_3W = *mut DRIVER_INFO_3W;$/;" t +LPDRIVER_INFO_4A vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_4A = *mut DRIVER_INFO_4A;$/;" t +LPDRIVER_INFO_4W vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_4W = *mut DRIVER_INFO_4W;$/;" t +LPDRIVER_INFO_5A vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_5A = *mut DRIVER_INFO_5A;$/;" t +LPDRIVER_INFO_5W vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_5W = *mut DRIVER_INFO_5W;$/;" t +LPDRIVER_INFO_6A vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_6A = *mut DRIVER_INFO_6A;$/;" t +LPDRIVER_INFO_6W vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_6W = *mut DRIVER_INFO_6W;$/;" t +LPDRIVER_INFO_8A vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_8A = *mut DRIVER_INFO_8A;$/;" t +LPDRIVER_INFO_8W vendor/winapi/src/um/winspool.rs /^pub type LPDRIVER_INFO_8W = *mut DRIVER_INFO_8W;$/;" t +LPDROPSTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPDROPSTRUCT = *mut DROPSTRUCT;$/;" t +LPDROPTARGET vendor/winapi/src/um/oleidl.rs /^pub type LPDROPTARGET = *mut IDropTarget;$/;" t +LPDSBCAPS vendor/winapi/src/um/dsound.rs /^pub type LPDSBCAPS = *mut DSBCAPS;$/;" t +LPDSCAPS vendor/winapi/src/um/dsound.rs /^pub type LPDSCAPS = *mut DSCAPS;$/;" t +LPDWORD vendor/winapi/src/shared/minwindef.rs /^pub type LPDWORD = *mut DWORD;$/;" t +LPELEMDESC vendor/winapi/src/um/oaidl.rs /^pub type LPELEMDESC = *mut ELEMDESC;$/;" t +LPENCLAVE_ROUTINE vendor/winapi/src/um/minwinbase.rs /^pub type LPENCLAVE_ROUTINE = PENCLAVE_ROUTINE;$/;" t +LPENHMETAHEADER vendor/winapi/src/um/wingdi.rs /^pub type LPENHMETAHEADER = *mut ENHMETAHEADER;$/;" t +LPENHMETARECORD vendor/winapi/src/um/wingdi.rs /^pub type LPENHMETARECORD = *mut ENHMETARECORD;$/;" t +LPENUMCONTEXTPROPS vendor/winapi/src/um/objidlbase.rs /^pub type LPENUMCONTEXTPROPS = *mut IEnumContextProps;$/;" t +LPENUMLOGFONTA vendor/winapi/src/um/wingdi.rs /^pub type LPENUMLOGFONTA = *mut ENUMLOGFONTA;$/;" t +LPENUMLOGFONTEXA vendor/winapi/src/um/wingdi.rs /^pub type LPENUMLOGFONTEXA = *mut ENUMLOGFONTEXA;$/;" t +LPENUMLOGFONTEXDVA vendor/winapi/src/um/wingdi.rs /^pub type LPENUMLOGFONTEXDVA = *mut ENUMLOGFONTEXDVA;$/;" t +LPENUMLOGFONTEXDVW vendor/winapi/src/um/wingdi.rs /^pub type LPENUMLOGFONTEXDVW = *mut ENUMLOGFONTEXDVW;$/;" t +LPENUMLOGFONTEXW vendor/winapi/src/um/wingdi.rs /^pub type LPENUMLOGFONTEXW = *mut ENUMLOGFONTEXW;$/;" t +LPENUMLOGFONTW vendor/winapi/src/um/wingdi.rs /^pub type LPENUMLOGFONTW = *mut ENUMLOGFONTW;$/;" t +LPENUMSTATPROPSETSTG vendor/winapi/src/um/propidl.rs /^pub type LPENUMSTATPROPSETSTG = *mut IEnumSTATPROPSETSTG;$/;" t +LPENUMSTATPROPSTG vendor/winapi/src/um/propidl.rs /^pub type LPENUMSTATPROPSTG = *mut IEnumSTATPROPSTG;$/;" t +LPENUMSTATURL vendor/winapi/src/um/urlhist.rs /^pub type LPENUMSTATURL = *mut IEnumSTATURL;$/;" t +LPENUMTEXTMETRICA vendor/winapi/src/um/wingdi.rs /^pub type LPENUMTEXTMETRICA = *mut ENUMTEXTMETRICA;$/;" t +LPENUMTEXTMETRICW vendor/winapi/src/um/wingdi.rs /^pub type LPENUMTEXTMETRICW = *mut ENUMTEXTMETRICW;$/;" t +LPENUM_SERVICE_STATUSA vendor/winapi/src/um/winsvc.rs /^pub type LPENUM_SERVICE_STATUSA = *mut ENUM_SERVICE_STATUSA;$/;" t +LPENUM_SERVICE_STATUSW vendor/winapi/src/um/winsvc.rs /^pub type LPENUM_SERVICE_STATUSW = *mut ENUM_SERVICE_STATUSW;$/;" t +LPENUM_SERVICE_STATUS_PROCESSA vendor/winapi/src/um/winsvc.rs /^pub type LPENUM_SERVICE_STATUS_PROCESSA = *mut ENUM_SERVICE_STATUS_PROCESSA;$/;" t +LPENUM_SERVICE_STATUS_PROCESSW vendor/winapi/src/um/winsvc.rs /^pub type LPENUM_SERVICE_STATUS_PROCESSW = *mut ENUM_SERVICE_STATUS_PROCESSW;$/;" t +LPERRLOG_OTHER_INFO vendor/winapi/src/um/lmalert.rs /^pub type LPERRLOG_OTHER_INFO = *mut ERRLOG_OTHER_INFO;$/;" t +LPERRORLOG vendor/winapi/src/um/oaidl.rs /^pub type LPERRORLOG = *mut IErrorLog;$/;" t +LPERROR_LOG vendor/winapi/src/um/lmerrlog.rs /^pub type LPERROR_LOG = *mut ERROR_LOG;$/;" t +LPEVENTMSG vendor/winapi/src/um/winuser.rs /^pub type LPEVENTMSG = *mut EVENTMSG;$/;" t +LPEVENTMSGMSG vendor/winapi/src/um/winuser.rs /^pub type LPEVENTMSGMSG = *mut EVENTMSG;$/;" t +LPEXCEPTION_DEBUG_INFO vendor/winapi/src/um/minwinbase.rs /^pub type LPEXCEPTION_DEBUG_INFO = *mut EXCEPTION_DEBUG_INFO;$/;" t +LPEXIT_PROCESS_DEBUG_INFO vendor/winapi/src/um/minwinbase.rs /^pub type LPEXIT_PROCESS_DEBUG_INFO = *mut EXIT_PROCESS_DEBUG_INFO;$/;" t +LPEXIT_THREAD_DEBUG_INFO vendor/winapi/src/um/minwinbase.rs /^pub type LPEXIT_THREAD_DEBUG_INFO = *mut EXIT_THREAD_DEBUG_INFO;$/;" t +LPEXTLOGFONTA vendor/winapi/src/um/wingdi.rs /^pub type LPEXTLOGFONTA = *mut EXTLOGFONTA;$/;" t +LPEXTLOGFONTW vendor/winapi/src/um/wingdi.rs /^pub type LPEXTLOGFONTW = *mut EXTLOGFONTW;$/;" t +LPEXTLOGPEN vendor/winapi/src/um/wingdi.rs /^pub type LPEXTLOGPEN = *mut EXTLOGPEN;$/;" t +LPEXTLOGPEN32 vendor/winapi/src/um/wingdi.rs /^pub type LPEXTLOGPEN32 = *mut EXTLOGPEN32;$/;" t +LPFD_SET vendor/winapi/src/um/winsock2.rs /^pub type LPFD_SET = *mut fd_set;$/;" t +LPFIBER_START_ROUTINE vendor/winapi/src/um/winbase.rs /^pub type LPFIBER_START_ROUTINE = PFIBER_START_ROUTINE;$/;" t +LPFILETIME vendor/winapi/src/shared/minwindef.rs /^pub type LPFILETIME = *mut FILETIME;$/;" t +LPFILE_ID_DESCRIPTOR vendor/winapi/src/um/winbase.rs /^pub type LPFILE_ID_DESCRIPTOR = *mut FILE_ID_DESCRIPTOR;$/;" t +LPFILE_INFO_2 vendor/winapi/src/um/lmshare.rs /^pub type LPFILE_INFO_2 = *mut FILE_INFO_2;$/;" t +LPFILE_INFO_3 vendor/winapi/src/um/lmshare.rs /^pub type LPFILE_INFO_3 = *mut FILE_INFO_3;$/;" t +LPFINDINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPFINDINFOA = *mut LVFINDINFOA;$/;" t +LPFINDINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPFINDINFOW = *mut LVFINDINFOW;$/;" t +LPFINDREPLACEA vendor/winapi/src/um/commdlg.rs /^pub type LPFINDREPLACEA = *mut FINDREPLACEA;$/;" t +LPFINDREPLACEW vendor/winapi/src/um/commdlg.rs /^pub type LPFINDREPLACEW = *mut FINDREPLACEW;$/;" t +LPFLOWSPEC vendor/winapi/src/shared/qos.rs /^pub type LPFLOWSPEC = *mut FLOWSPEC;$/;" t +LPFMTID vendor/winapi/src/shared/guiddef.rs /^pub type LPFMTID = *mut FMTID;$/;" t +LPFONTSIGNATURE vendor/winapi/src/um/wingdi.rs /^pub type LPFONTSIGNATURE = *mut FONTSIGNATURE;$/;" t +LPFORM_INFO_1A vendor/winapi/src/um/winspool.rs /^pub type LPFORM_INFO_1A = *mut FORM_INFO_1A;$/;" t +LPFORM_INFO_1W vendor/winapi/src/um/winspool.rs /^pub type LPFORM_INFO_1W = *mut FORM_INFO_1W;$/;" t +LPFORM_INFO_2A vendor/winapi/src/um/winspool.rs /^pub type LPFORM_INFO_2A = *mut FORM_INFO_2A;$/;" t +LPFORM_INFO_2W vendor/winapi/src/um/winspool.rs /^pub type LPFORM_INFO_2W = *mut FORM_INFO_2W;$/;" t +LPFUNCDESC vendor/winapi/src/um/oaidl.rs /^pub type LPFUNCDESC = *mut FUNCDESC;$/;" t +LPFXPT16DOT16 vendor/winapi/src/um/wingdi.rs /^pub type LPFXPT16DOT16 = *mut c_long;$/;" t +LPFXPT2DOT30 vendor/winapi/src/um/wingdi.rs /^pub type LPFXPT2DOT30 = *mut c_long;$/;" t +LPGCP_RESULTSA vendor/winapi/src/um/wingdi.rs /^pub type LPGCP_RESULTSA = *mut GCP_RESULTSA;$/;" t +LPGCP_RESULTSW vendor/winapi/src/um/wingdi.rs /^pub type LPGCP_RESULTSW = *mut GCP_RESULTSW;$/;" t +LPGLOBALINTERFACETABLE vendor/winapi/src/um/objidlbase.rs /^pub type LPGLOBALINTERFACETABLE = *mut IGlobalInterfaceTable;$/;" t +LPGLYPHMETRICS vendor/winapi/src/um/wingdi.rs /^pub type LPGLYPHMETRICS = *mut GLYPHMETRICS;$/;" t +LPGLYPHMETRICSFLOAT vendor/winapi/src/um/wingdi.rs /^pub type LPGLYPHMETRICSFLOAT = *mut GLYPHMETRICSFLOAT;$/;" t +LPGLYPHSET vendor/winapi/src/um/wingdi.rs /^pub type LPGLYPHSET = *mut GLYPHSET;$/;" t +LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE = *mut GOPHER_ABSTRACT_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_ADMIN_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_ADMIN_ATTRIBUTE_TYPE = *mut GOPHER_ADMIN_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_ASK_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_ASK_ATTRIBUTE_TYPE = *mut GOPHER_ASK_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_ATTRIBUTE_TYPE = *mut GOPHER_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_FIND_DATAA vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_FIND_DATAA = *mut GOPHER_FIND_DATAA;$/;" t +LPGOPHER_FIND_DATAW vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_FIND_DATAW = *mut GOPHER_FIND_DATAW;$/;" t +LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE =$/;" t +LPGOPHER_LOCATION_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_LOCATION_ATTRIBUTE_TYPE = *mut GOPHER_LOCATION_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE = *mut GOPHER_MOD_DATE_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE = *mut GOPHER_ORGANIZATION_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_PROVIDER_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_PROVIDER_ATTRIBUTE_TYPE = *mut GOPHER_PROVIDER_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_SCORE_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_SCORE_ATTRIBUTE_TYPE = *mut GOPHER_SCORE_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE = *mut GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_SITE_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_SITE_ATTRIBUTE_TYPE = *mut GOPHER_SITE_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE = *mut GOPHER_TIMEZONE_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_TTL_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_TTL_ATTRIBUTE_TYPE = *mut GOPHER_TTL_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE = *mut GOPHER_UNKNOWN_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_VERONICA_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_VERONICA_ATTRIBUTE_TYPE = *mut GOPHER_VERONICA_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_VERSION_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_VERSION_ATTRIBUTE_TYPE = *mut GOPHER_VERSION_ATTRIBUTE_TYPE;$/;" t +LPGOPHER_VIEW_ATTRIBUTE_TYPE vendor/winapi/src/um/wininet.rs /^pub type LPGOPHER_VIEW_ATTRIBUTE_TYPE = *mut GOPHER_VIEW_ATTRIBUTE_TYPE;$/;" t +LPGRADIENT_RECT vendor/winapi/src/um/wingdi.rs /^pub type LPGRADIENT_RECT = *mut GRADIENT_RECT;$/;" t +LPGROUP_INFO_0 vendor/winapi/src/um/lmaccess.rs /^pub type LPGROUP_INFO_0 = *mut GROUP_INFO_0;$/;" t +LPGROUP_INFO_1 vendor/winapi/src/um/lmaccess.rs /^pub type LPGROUP_INFO_1 = *mut GROUP_INFO_1;$/;" t +LPGROUP_INFO_1002 vendor/winapi/src/um/lmaccess.rs /^pub type LPGROUP_INFO_1002 = *mut GROUP_INFO_1002;$/;" t +LPGROUP_INFO_1005 vendor/winapi/src/um/lmaccess.rs /^pub type LPGROUP_INFO_1005 = *mut GROUP_INFO_1005;$/;" t +LPGROUP_USERS_INFO_0 vendor/winapi/src/um/lmaccess.rs /^pub type LPGROUP_USERS_INFO_0 = *mut GROUP_USERS_INFO_0;$/;" t +LPGROUP_USERS_INFO_1 vendor/winapi/src/um/lmaccess.rs /^pub type LPGROUP_USERS_INFO_1 = *mut GROUP_USERS_INFO_1;$/;" t +LPGUID vendor/winapi/src/shared/guiddef.rs /^pub type LPGUID = *mut GUID;$/;" t +LPGUITHREADINFO vendor/winapi/src/um/winuser.rs /^pub type LPGUITHREADINFO = *mut GUITHREADINFO;$/;" t +LPHANDLE vendor/winapi/src/shared/minwindef.rs /^pub type LPHANDLE = *mut HANDLE;$/;" t +LPHANDLETABLE vendor/winapi/src/um/wingdi.rs /^pub type LPHANDLETABLE = *mut HANDLETABLE;$/;" t +LPHARDWAREHOOKSTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPHARDWAREHOOKSTRUCT = *mut HARDWAREHOOKSTRUCT;$/;" t +LPHARDWAREINPUT vendor/winapi/src/um/winuser.rs /^pub type LPHARDWAREINPUT= *mut HARDWAREINPUT;$/;" t +LPHDHITTESTINFO vendor/winapi/src/um/commctrl.rs /^pub type LPHDHITTESTINFO = *mut HDHITTESTINFO;$/;" t +LPHDITEMA vendor/winapi/src/um/commctrl.rs /^pub type LPHDITEMA = *mut HDITEMA;$/;" t +LPHDITEMW vendor/winapi/src/um/commctrl.rs /^pub type LPHDITEMW = *mut HDITEMW;$/;" t +LPHDLAYOUT vendor/winapi/src/um/commctrl.rs /^pub type LPHDLAYOUT = *mut HDLAYOUT;$/;" t +LPHD_TEXTFILTERA vendor/winapi/src/um/commctrl.rs /^pub type LPHD_TEXTFILTERA = *mut HD_TEXTFILTERA;$/;" t +LPHD_TEXTFILTERW vendor/winapi/src/um/commctrl.rs /^pub type LPHD_TEXTFILTERW = *mut HD_TEXTFILTERW;$/;" t +LPHEAPENTRY32 vendor/winapi/src/um/tlhelp32.rs /^pub type LPHEAPENTRY32 = *mut HEAPENTRY32;$/;" t +LPHEAPLIST32 vendor/winapi/src/um/tlhelp32.rs /^pub type LPHEAPLIST32 = *mut HEAPLIST32;$/;" t +LPHEAP_SUMMARY vendor/winapi/src/um/heapapi.rs /^pub type LPHEAP_SUMMARY = PHEAP_SUMMARY;$/;" t +LPHELPINFO vendor/winapi/src/um/winuser.rs /^pub type LPHELPINFO = *mut HELPINFO;$/;" t +LPHIGHCONTRASTA vendor/winapi/src/um/winuser.rs /^pub type LPHIGHCONTRASTA = *mut HIGHCONTRASTA;$/;" t +LPHIGHCONTRASTW vendor/winapi/src/um/winuser.rs /^pub type LPHIGHCONTRASTW = *mut HIGHCONTRASTW;$/;" t +LPHINTERNET vendor/winapi/src/um/winhttp.rs /^pub type LPHINTERNET = *mut HINTERNET;$/;" t +LPHINTERNET vendor/winapi/src/um/wininet.rs /^pub type LPHINTERNET = *mut HINTERNET;$/;" t +LPHITTESTINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPHITTESTINFOA = LPTTHITTESTINFOA;$/;" t +LPHITTESTINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPHITTESTINFOW = LPTTHITTESTINFOW;$/;" t +LPHLOG vendor/winapi/src/um/lmerrlog.rs /^pub type LPHLOG = *mut HLOG;$/;" t +LPHMIDI vendor/winapi/src/um/mmsystem.rs /^pub type LPHMIDI = *mut HMIDI;$/;" t +LPHMIDIIN vendor/winapi/src/um/mmsystem.rs /^pub type LPHMIDIIN = *mut HMIDIIN;$/;" t +LPHMIDIOUT vendor/winapi/src/um/mmsystem.rs /^pub type LPHMIDIOUT = *mut HMIDIOUT;$/;" t +LPHMIDISTRM vendor/winapi/src/um/mmsystem.rs /^pub type LPHMIDISTRM = *mut HMIDISTRM;$/;" t +LPHOSTENT vendor/winapi/src/um/winsock2.rs /^pub type LPHOSTENT = *mut hostent;$/;" t +LPHTTP_VERSION_INFO vendor/winapi/src/um/wininet.rs /^pub type LPHTTP_VERSION_INFO = *mut HTTP_VERSION_INFO;$/;" t +LPHWAVEIN vendor/winapi/src/um/mmsystem.rs /^pub type LPHWAVEIN = *mut HWAVEIN;$/;" t +LPHWAVEOUT vendor/winapi/src/um/mmsystem.rs /^pub type LPHWAVEOUT = *mut HWAVEOUT;$/;" t +LPHW_PROFILE_INFOA vendor/winapi/src/um/winbase.rs /^pub type LPHW_PROFILE_INFOA = *mut HW_PROFILE_INFOA;$/;" t +LPHW_PROFILE_INFOW vendor/winapi/src/um/winbase.rs /^pub type LPHW_PROFILE_INFOW = *mut HW_PROFILE_INFOW;$/;" t +LPIDLDESC vendor/winapi/src/um/oaidl.rs /^pub type LPIDLDESC = *mut IDLDESC;$/;" t +LPIID vendor/winapi/src/shared/guiddef.rs /^pub type LPIID = *mut IID;$/;" t +LPIMAGEINFO vendor/winapi/src/um/commctrl.rs /^pub type LPIMAGEINFO = *mut IMAGEINFO;$/;" t +LPIMAGELISTDRAWPARAMS vendor/winapi/src/um/commctrl.rs /^pub type LPIMAGELISTDRAWPARAMS = *mut IMAGELISTDRAWPARAMS;$/;" t +LPIN6_ADDR vendor/winapi/src/shared/in6addr.rs /^pub type LPIN6_ADDR = *mut IN6_ADDR;$/;" t +LPINITCOMMONCONTROLSEX vendor/winapi/src/um/commctrl.rs /^pub type LPINITCOMMONCONTROLSEX = *mut INITCOMMONCONTROLSEX;$/;" t +LPINIT_ONCE vendor/winapi/src/um/synchapi.rs /^pub type LPINIT_ONCE = PRTL_RUN_ONCE;$/;" t +LPINPUT vendor/winapi/src/um/winuser.rs /^pub type LPINPUT = *mut INPUT;$/;" t +LPINSPECTABLE vendor/winapi/src/winrt/inspectable.rs /^pub type LPINSPECTABLE = *mut IInspectable;$/;" t +LPINT vendor/winapi/src/shared/minwindef.rs /^pub type LPINT = *mut c_int;$/;" t +LPINTERNET_ASYNC_RESULT vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_ASYNC_RESULT = *mut INTERNET_ASYNC_RESULT;$/;" t +LPINTERNET_BUFFERSA vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_BUFFERSA = *mut INTERNET_BUFFERSA;$/;" t +LPINTERNET_BUFFERSW vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_BUFFERSW = *mut INTERNET_BUFFERSW;$/;" t +LPINTERNET_CACHE_ENTRY_INFOA vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_CACHE_ENTRY_INFOA = *mut INTERNET_CACHE_ENTRY_INFOA;$/;" t +LPINTERNET_CACHE_ENTRY_INFOW vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_CACHE_ENTRY_INFOW = *mut INTERNET_CACHE_ENTRY_INFOW;$/;" t +LPINTERNET_CACHE_GROUP_INFOA vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_CACHE_GROUP_INFOA = *mut INTERNET_CACHE_GROUP_INFOA;$/;" t +LPINTERNET_CACHE_GROUP_INFOW vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_CACHE_GROUP_INFOW = *mut INTERNET_CACHE_GROUP_INFOW;$/;" t +LPINTERNET_CACHE_TIMESTAMPS vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_CACHE_TIMESTAMPS = *mut INTERNET_CACHE_TIMESTAMPS;$/;" t +LPINTERNET_CERTIFICATE_INFO vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_CERTIFICATE_INFO = *mut INTERNET_CERTIFICATE_INFO;$/;" t +LPINTERNET_CONNECTED_INFO vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_CONNECTED_INFO = *mut INTERNET_CONNECTED_INFO;$/;" t +LPINTERNET_DIAGNOSTIC_SOCKET_INFO vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_DIAGNOSTIC_SOCKET_INFO = *mut INTERNET_DIAGNOSTIC_SOCKET_INFO;$/;" t +LPINTERNET_PER_CONN_OPTIONA vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_PER_CONN_OPTIONA = *mut INTERNET_PER_CONN_OPTIONA;$/;" t +LPINTERNET_PER_CONN_OPTIONW vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_PER_CONN_OPTIONW = *mut INTERNET_PER_CONN_OPTIONW;$/;" t +LPINTERNET_PER_CONN_OPTION_LISTA vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_PER_CONN_OPTION_LISTA = *mut INTERNET_PER_CONN_OPTION_LISTA;$/;" t +LPINTERNET_PER_CONN_OPTION_LISTW vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_PER_CONN_OPTION_LISTW = *mut INTERNET_PER_CONN_OPTION_LISTW;$/;" t +LPINTERNET_PORT vendor/winapi/src/um/winhttp.rs /^pub type LPINTERNET_PORT = *mut INTERNET_PORT;$/;" t +LPINTERNET_PORT vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_PORT = *mut INTERNET_PORT;$/;" t +LPINTERNET_PROXY_INFO vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_PROXY_INFO = *mut INTERNET_PROXY_INFO;$/;" t +LPINTERNET_SCHEME vendor/winapi/src/um/winhttp.rs /^pub type LPINTERNET_SCHEME = *mut c_int;$/;" t +LPINTERNET_SCHEME vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_SCHEME = *mut INTERNET_SCHEME;$/;" t +LPINTERNET_STATUS_CALLBACK vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_STATUS_CALLBACK = *mut INTERNET_STATUS_CALLBACK;$/;" t +LPINTERNET_VERSION_INFO vendor/winapi/src/um/wininet.rs /^pub type LPINTERNET_VERSION_INFO = *mut INTERNET_VERSION_INFO;$/;" t +LPIN_ADDR vendor/winapi/src/shared/inaddr.rs /^pub type LPIN_ADDR = *mut in_addr;$/;" t +LPITEMIDLIST vendor/winapi/src/um/shtypes.rs /^pub type LPITEMIDLIST = *mut ITEMIDLIST;$/;" t +LPJOB_INFO_1A vendor/winapi/src/um/winspool.rs /^pub type LPJOB_INFO_1A = *mut JOB_INFO_1A;$/;" t +LPJOB_INFO_1W vendor/winapi/src/um/winspool.rs /^pub type LPJOB_INFO_1W = *mut JOB_INFO_1W;$/;" t +LPJOB_INFO_2A vendor/winapi/src/um/winspool.rs /^pub type LPJOB_INFO_2A = *mut JOB_INFO_2A;$/;" t +LPJOB_INFO_2W vendor/winapi/src/um/winspool.rs /^pub type LPJOB_INFO_2W = *mut JOB_INFO_2W;$/;" t +LPJOB_INFO_3 vendor/winapi/src/um/winspool.rs /^pub type LPJOB_INFO_3 = *mut JOB_INFO_3;$/;" t +LPJOB_INFO_4A vendor/winapi/src/um/winspool.rs /^pub type LPJOB_INFO_4A = *mut JOB_INFO_4A;$/;" t +LPJOB_INFO_4W vendor/winapi/src/um/winspool.rs /^pub type LPJOB_INFO_4W = *mut JOB_INFO_4W;$/;" t +LPKBDLLHOOKSTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPKBDLLHOOKSTRUCT = *mut KBDLLHOOKSTRUCT;$/;" t +LPKERNINGPAIR vendor/winapi/src/um/wingdi.rs /^pub type LPKERNINGPAIR = *mut KERNINGPAIR;$/;" t +LPKEYBDINPUT vendor/winapi/src/um/winuser.rs /^pub type LPKEYBDINPUT = *mut KEYBDINPUT;$/;" t +LPLAYERPLANEDESCRIPTOR vendor/winapi/src/um/wingdi.rs /^pub type LPLAYERPLANEDESCRIPTOR = *mut LAYERPLANEDESCRIPTOR;$/;" t +LPLDT_ENTRY vendor/winapi/src/um/winbase.rs /^pub type LPLDT_ENTRY = LPVOID; \/\/ TODO - fix this for 32-bit$/;" t +LPLDT_ENTRY vendor/winapi/src/um/winbase.rs /^pub type LPLDT_ENTRY = PLDT_ENTRY;$/;" t +LPLINGER vendor/winapi/src/um/winsock2.rs /^pub type LPLINGER = *mut linger;$/;" t +LPLOAD_DLL_DEBUG_INFO vendor/winapi/src/um/minwinbase.rs /^pub type LPLOAD_DLL_DEBUG_INFO = *mut LOAD_DLL_DEBUG_INFO;$/;" t +LPLOCALESIGNATURE vendor/winapi/src/um/wingdi.rs /^pub type LPLOCALESIGNATURE = *mut LOCALESIGNATURE;$/;" t +LPLOCALGROUP_INFO_0 vendor/winapi/src/um/lmaccess.rs /^pub type LPLOCALGROUP_INFO_0 = *mut LOCALGROUP_INFO_0;$/;" t +LPLOCALGROUP_INFO_1 vendor/winapi/src/um/lmaccess.rs /^pub type LPLOCALGROUP_INFO_1 = *mut LOCALGROUP_INFO_1;$/;" t +LPLOCALGROUP_INFO_1002 vendor/winapi/src/um/lmaccess.rs /^pub type LPLOCALGROUP_INFO_1002 = *mut LOCALGROUP_INFO_1002;$/;" t +LPLOCALGROUP_MEMBERS_INFO_0 vendor/winapi/src/um/lmaccess.rs /^pub type LPLOCALGROUP_MEMBERS_INFO_0 = *mut LOCALGROUP_MEMBERS_INFO_0;$/;" t +LPLOCALGROUP_MEMBERS_INFO_1 vendor/winapi/src/um/lmaccess.rs /^pub type LPLOCALGROUP_MEMBERS_INFO_1 = *mut LOCALGROUP_MEMBERS_INFO_1;$/;" t +LPLOCALGROUP_MEMBERS_INFO_2 vendor/winapi/src/um/lmaccess.rs /^pub type LPLOCALGROUP_MEMBERS_INFO_2 = *mut LOCALGROUP_MEMBERS_INFO_2;$/;" t +LPLOCALGROUP_MEMBERS_INFO_3 vendor/winapi/src/um/lmaccess.rs /^pub type LPLOCALGROUP_MEMBERS_INFO_3 = *mut LOCALGROUP_MEMBERS_INFO_3;$/;" t +LPLOCALGROUP_USERS_INFO_0 vendor/winapi/src/um/lmaccess.rs /^pub type LPLOCALGROUP_USERS_INFO_0 = *mut LOCALGROUP_USERS_INFO_0;$/;" t +LPLOGBRUSH vendor/winapi/src/um/wingdi.rs /^pub type LPLOGBRUSH = *mut LOGBRUSH;$/;" t +LPLOGBRUSH32 vendor/winapi/src/um/wingdi.rs /^pub type LPLOGBRUSH32 = *mut LOGBRUSH32;$/;" t +LPLOGCOLORSPACEA vendor/winapi/src/um/wingdi.rs /^pub type LPLOGCOLORSPACEA = *mut LOGCOLORSPACEA;$/;" t +LPLOGCOLORSPACEW vendor/winapi/src/um/wingdi.rs /^pub type LPLOGCOLORSPACEW = *mut LOGCOLORSPACEW;$/;" t +LPLOGFONTA vendor/winapi/src/um/wingdi.rs /^pub type LPLOGFONTA = *mut LOGFONTA;$/;" t +LPLOGFONTW vendor/winapi/src/um/wingdi.rs /^pub type LPLOGFONTW = *mut LOGFONTW;$/;" t +LPLOGPALETTE vendor/winapi/src/um/wingdi.rs /^pub type LPLOGPALETTE = *mut LOGPALETTE;$/;" t +LPLOGPEN vendor/winapi/src/um/wingdi.rs /^pub type LPLOGPEN = *mut LOGPEN;$/;" t +LPLONG vendor/winapi/src/shared/minwindef.rs /^pub type LPLONG = *mut c_long;$/;" t +LPLVBKIMAGEA vendor/winapi/src/um/commctrl.rs /^pub type LPLVBKIMAGEA = *mut LVBKIMAGEA;$/;" t +LPLVBKIMAGEW vendor/winapi/src/um/commctrl.rs /^pub type LPLVBKIMAGEW = *mut LVBKIMAGEW;$/;" t +LPLVCOLUMNA vendor/winapi/src/um/commctrl.rs /^pub type LPLVCOLUMNA = *mut LVCOLUMNA;$/;" t +LPLVCOLUMNW vendor/winapi/src/um/commctrl.rs /^pub type LPLVCOLUMNW = *mut LVCOLUMNW;$/;" t +LPLVFOOTERINFO vendor/winapi/src/um/commctrl.rs /^pub type LPLVFOOTERINFO = *mut LVFOOTERINFO;$/;" t +LPLVFOOTERITEM vendor/winapi/src/um/commctrl.rs /^pub type LPLVFOOTERITEM = *mut LVFOOTERITEM;$/;" t +LPLVHITTESTINFO vendor/winapi/src/um/commctrl.rs /^pub type LPLVHITTESTINFO = *mut LVHITTESTINFO;$/;" t +LPLVINSERTMARK vendor/winapi/src/um/commctrl.rs /^pub type LPLVINSERTMARK = *mut LVINSERTMARK;$/;" t +LPLVITEMA vendor/winapi/src/um/commctrl.rs /^pub type LPLVITEMA = *mut LVITEMA;$/;" t +LPLVITEMW vendor/winapi/src/um/commctrl.rs /^pub type LPLVITEMW = *mut LVITEMW;$/;" t +LPMALLOC vendor/winapi/src/um/objidlbase.rs /^pub type LPMALLOC = *mut IMalloc;$/;" t +LPMARSHAL vendor/winapi/src/um/objidlbase.rs /^pub type LPMARSHAL = *mut IMarshal;$/;" t +LPMARSHAL2 vendor/winapi/src/um/objidlbase.rs /^pub type LPMARSHAL2 = *mut IMarshal2;$/;" t +LPMAT2 vendor/winapi/src/um/wingdi.rs /^pub type LPMAT2 = *mut MAT2;$/;" t +LPMC_COLOR_TEMPERATURE vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^pub type LPMC_COLOR_TEMPERATURE = *mut MC_COLOR_TEMPERATURE;$/;" t +LPMC_DISPLAY_TECHNOLOGY_TYPE vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^pub type LPMC_DISPLAY_TECHNOLOGY_TYPE = *mut MC_DISPLAY_TECHNOLOGY_TYPE;$/;" t +LPMC_TIMING_REPORT vendor/winapi/src/um/lowlevelmonitorconfigurationapi.rs /^pub type LPMC_TIMING_REPORT = *mut MC_TIMING_REPORT;$/;" t +LPMC_VCP_CODE_TYPE vendor/winapi/src/um/lowlevelmonitorconfigurationapi.rs /^pub type LPMC_VCP_CODE_TYPE = *mut MC_VCP_CODE_TYPE;$/;" t +LPMDINEXTMENU vendor/winapi/src/um/winuser.rs /^pub type LPMDINEXTMENU = *mut MDINEXTMENU;$/;" t +LPMEASUREITEMSTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPMEASUREITEMSTRUCT = *mut MEASUREITEMSTRUCT;$/;" t +LPMEMORYSTATUS vendor/winapi/src/um/winbase.rs /^pub type LPMEMORYSTATUS = *mut MEMORYSTATUS;$/;" t +LPMEMORYSTATUSEX vendor/winapi/src/um/sysinfoapi.rs /^pub type LPMEMORYSTATUSEX = *mut MEMORYSTATUSEX;$/;" t +LPMENUBARINFO vendor/winapi/src/um/winuser.rs /^pub type LPMENUBARINFO = *mut MENUBARINFO;$/;" t +LPMENUINFO vendor/winapi/src/um/winuser.rs /^pub type LPMENUINFO = *mut MENUINFO;$/;" t +LPMENUITEMINFOA vendor/winapi/src/um/winuser.rs /^pub type LPMENUITEMINFOA = *mut MENUITEMINFOA;$/;" t +LPMENUITEMINFOW vendor/winapi/src/um/winuser.rs /^pub type LPMENUITEMINFOW = *mut MENUITEMINFOW;$/;" t +LPMENUTEMPLATEA vendor/winapi/src/um/winuser.rs /^pub type LPMENUTEMPLATEA = PVOID;$/;" t +LPMENUTEMPLATEW vendor/winapi/src/um/winuser.rs /^pub type LPMENUTEMPLATEW = PVOID;$/;" t +LPMETAFILEPICT vendor/winapi/src/um/wingdi.rs /^pub type LPMETAFILEPICT = *mut METAFILEPICT;$/;" t +LPMETAHEADER vendor/winapi/src/um/wingdi.rs /^pub type LPMETAHEADER = *mut METAHEADER;$/;" t +LPMETARECORD vendor/winapi/src/um/wingdi.rs /^pub type LPMETARECORD = *mut METARECORD;$/;" t +LPMIDIHDR vendor/winapi/src/um/mmsystem.rs /^pub type LPMIDIHDR = *mut MIDIHDR;$/;" t +LPMIDIINCAPSW vendor/winapi/src/um/mmsystem.rs /^pub type LPMIDIINCAPSW = *mut MIDIINCAPSW;$/;" t +LPMIDIOUTCAPSW vendor/winapi/src/um/mmsystem.rs /^pub type LPMIDIOUTCAPSW = *mut MIDIOUTCAPSW;$/;" t +LPMINMAXINFO vendor/winapi/src/um/winuser.rs /^pub type LPMINMAXINFO = *mut MINMAXINFO;$/;" t +LPMMTIME vendor/winapi/src/um/mmsystem.rs /^pub type LPMMTIME = *mut MMTIME;$/;" t +LPMODULEENTRY32 vendor/winapi/src/um/tlhelp32.rs /^pub type LPMODULEENTRY32 = *mut MODULEENTRY32;$/;" t +LPMODULEENTRY32W vendor/winapi/src/um/tlhelp32.rs /^pub type LPMODULEENTRY32W = *mut MODULEENTRY32W;$/;" t +LPMODULEINFO vendor/winapi/src/um/psapi.rs /^pub type LPMODULEINFO = *mut MODULEINFO;$/;" t +LPMONITORINFO vendor/winapi/src/um/winuser.rs /^pub type LPMONITORINFO = *mut MONITORINFO;$/;" t +LPMONITORINFOEXA vendor/winapi/src/um/winuser.rs /^pub type LPMONITORINFOEXA = *mut MONITORINFOEXA;$/;" t +LPMONITORINFOEXW vendor/winapi/src/um/winuser.rs /^pub type LPMONITORINFOEXW = *mut MONITORINFOEXW;$/;" t +LPMONITOR_INFO_1A vendor/winapi/src/um/winspool.rs /^pub type LPMONITOR_INFO_1A = *mut MONITOR_INFO_1A;$/;" t +LPMONITOR_INFO_1W vendor/winapi/src/um/winspool.rs /^pub type LPMONITOR_INFO_1W = *mut MONITOR_INFO_1W;$/;" t +LPMONITOR_INFO_2A vendor/winapi/src/um/winspool.rs /^pub type LPMONITOR_INFO_2A = *mut MONITOR_INFO_2A;$/;" t +LPMONITOR_INFO_2W vendor/winapi/src/um/winspool.rs /^pub type LPMONITOR_INFO_2W = *mut MONITOR_INFO_2W;$/;" t +LPMONTHDAYSTATE vendor/winapi/src/um/commctrl.rs /^pub type LPMONTHDAYSTATE = *mut DWORD;$/;" t +LPMOUSEHOOKSTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPMOUSEHOOKSTRUCT = *mut MOUSEHOOKSTRUCT;$/;" t +LPMOUSEHOOKSTRUCTEX vendor/winapi/src/um/winuser.rs /^pub type LPMOUSEHOOKSTRUCTEX = *mut MOUSEHOOKSTRUCTEX;$/;" t +LPMOUSEINPUT vendor/winapi/src/um/winuser.rs /^pub type LPMOUSEINPUT = *mut MOUSEINPUT;$/;" t +LPMOUSEMOVEPOINT vendor/winapi/src/um/winuser.rs /^pub type LPMOUSEMOVEPOINT = *mut MOUSEMOVEPOINT;$/;" t +LPMSA_INFO_0 vendor/winapi/src/um/lmaccess.rs /^pub type LPMSA_INFO_0 = *mut MSA_INFO_0;$/;" t +LPMSG vendor/winapi/src/um/winuser.rs /^pub type LPMSG = *mut MSG;$/;" t +LPMSGBOXPARAMSA vendor/winapi/src/um/winuser.rs /^pub type LPMSGBOXPARAMSA = *mut MSGBOXPARAMSA;$/;" t +LPMSGBOXPARAMSW vendor/winapi/src/um/winuser.rs /^pub type LPMSGBOXPARAMSW = *mut MSGBOXPARAMSW;$/;" t +LPMSG_INFO_0 vendor/winapi/src/um/lmmsg.rs /^pub type LPMSG_INFO_0 = *mut MSG_INFO_0;$/;" t +LPMSG_INFO_1 vendor/winapi/src/um/lmmsg.rs /^pub type LPMSG_INFO_1 = *mut MSG_INFO_1;$/;" t +LPMSLLHOOKSTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPMSLLHOOKSTRUCT = *mut MSLLHOOKSTRUCT;$/;" t +LPMULTIQI vendor/winapi/src/um/objidlbase.rs /^pub type LPMULTIQI = *mut IMultiQI;$/;" t +LPNCCALCSIZE_PARAMS vendor/winapi/src/um/winuser.rs /^pub type LPNCCALCSIZE_PARAMS = *mut NCCALCSIZE_PARAMS;$/;" t +LPNETCONNECTINFOSTRUCT vendor/winapi/src/um/winnetwk.rs /^pub type LPNETCONNECTINFOSTRUCT = *mut NETCONNECTINFOSTRUCT;$/;" t +LPNETINFOSTRUCT vendor/winapi/src/um/winnetwk.rs /^pub type LPNETINFOSTRUCT = *mut NETINFOSTRUCT;$/;" t +LPNETRESOURCEA vendor/winapi/src/um/winnetwk.rs /^pub type LPNETRESOURCEA = *mut NETRESOURCEA;$/;" t +LPNETRESOURCEW vendor/winapi/src/um/winnetwk.rs /^pub type LPNETRESOURCEW = *mut NETRESOURCEW;$/;" t +LPNEWTEXTMETRICA vendor/winapi/src/um/wingdi.rs /^pub type LPNEWTEXTMETRICA = *mut NEWTEXTMETRICA;$/;" t +LPNEWTEXTMETRICW vendor/winapi/src/um/wingdi.rs /^pub type LPNEWTEXTMETRICW = *mut NEWTEXTMETRICW;$/;" t +LPNLA_BLOB vendor/winapi/src/um/mswsock.rs /^pub type LPNLA_BLOB = *mut NLA_BLOB;$/;" t +LPNLSVERSIONINFO vendor/winapi/src/um/winnls.rs /^pub type LPNLSVERSIONINFO = *mut NLSVERSIONINFO;$/;" t +LPNLSVERSIONINFOEX vendor/winapi/src/um/winnls.rs /^pub type LPNLSVERSIONINFOEX = *mut NLSVERSIONINFOEX;$/;" t +LPNMBCDROPDOWN vendor/winapi/src/um/commctrl.rs /^pub type LPNMBCDROPDOWN = *mut NMBCDROPDOWN;$/;" t +LPNMBCHOTITEM vendor/winapi/src/um/commctrl.rs /^pub type LPNMBCHOTITEM = *mut NMBCHOTITEM;$/;" t +LPNMCBEDRAGBEGINA vendor/winapi/src/um/commctrl.rs /^pub type LPNMCBEDRAGBEGINA = *mut NMCBEDRAGBEGINA;$/;" t +LPNMCBEDRAGBEGINW vendor/winapi/src/um/commctrl.rs /^pub type LPNMCBEDRAGBEGINW = *mut NMCBEDRAGBEGINW;$/;" t +LPNMCBEENDEDITA vendor/winapi/src/um/commctrl.rs /^pub type LPNMCBEENDEDITA = *mut NMCBEENDEDITA;$/;" t +LPNMCBEENDEDITW vendor/winapi/src/um/commctrl.rs /^pub type LPNMCBEENDEDITW = *mut NMCBEENDEDITW;$/;" t +LPNMCHAR vendor/winapi/src/um/commctrl.rs /^pub type LPNMCHAR = *mut NMCHAR;$/;" t +LPNMCLICK vendor/winapi/src/um/commctrl.rs /^pub type LPNMCLICK = LPNMMOUSE;$/;" t +LPNMCUSTOMDRAW vendor/winapi/src/um/commctrl.rs /^pub type LPNMCUSTOMDRAW = *mut NMCUSTOMDRAW;$/;" t +LPNMCUSTOMSPLITRECTINFO vendor/winapi/src/um/commctrl.rs /^pub type LPNMCUSTOMSPLITRECTINFO = *mut NMCUSTOMSPLITRECTINFO;$/;" t +LPNMCUSTOMTEXT vendor/winapi/src/um/commctrl.rs /^pub type LPNMCUSTOMTEXT = *mut NMCUSTOMTEXT;$/;" t +LPNMDATETIMECHANGE vendor/winapi/src/um/commctrl.rs /^pub type LPNMDATETIMECHANGE = *mut NMDATETIMECHANGE;$/;" t +LPNMDATETIMEFORMATA vendor/winapi/src/um/commctrl.rs /^pub type LPNMDATETIMEFORMATA = *mut NMDATETIMEFORMATA;$/;" t +LPNMDATETIMEFORMATQUERYA vendor/winapi/src/um/commctrl.rs /^pub type LPNMDATETIMEFORMATQUERYA = *mut NMDATETIMEFORMATQUERYA;$/;" t +LPNMDATETIMEFORMATQUERYW vendor/winapi/src/um/commctrl.rs /^pub type LPNMDATETIMEFORMATQUERYW = *mut NMDATETIMEFORMATQUERYW;$/;" t +LPNMDATETIMEFORMATW vendor/winapi/src/um/commctrl.rs /^pub type LPNMDATETIMEFORMATW = *mut NMDATETIMEFORMATW;$/;" t +LPNMDATETIMESTRINGA vendor/winapi/src/um/commctrl.rs /^pub type LPNMDATETIMESTRINGA = *mut NMDATETIMESTRINGA;$/;" t +LPNMDATETIMESTRINGW vendor/winapi/src/um/commctrl.rs /^pub type LPNMDATETIMESTRINGW = *mut NMDATETIMESTRINGW;$/;" t +LPNMDATETIMEWMKEYDOWNA vendor/winapi/src/um/commctrl.rs /^pub type LPNMDATETIMEWMKEYDOWNA = *mut NMDATETIMEWMKEYDOWNA;$/;" t +LPNMDATETIMEWMKEYDOWNW vendor/winapi/src/um/commctrl.rs /^pub type LPNMDATETIMEWMKEYDOWNW = *mut NMDATETIMEWMKEYDOWNW;$/;" t +LPNMDAYSTATE vendor/winapi/src/um/commctrl.rs /^pub type LPNMDAYSTATE = *mut NMDAYSTATE;$/;" t +LPNMHDDISPINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPNMHDDISPINFOA = *mut NMHDDISPINFOA;$/;" t +LPNMHDDISPINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPNMHDDISPINFOW = *mut NMHDDISPINFOW;$/;" t +LPNMHDFILTERBTNCLICK vendor/winapi/src/um/commctrl.rs /^pub type LPNMHDFILTERBTNCLICK = *mut NMHDFILTERBTNCLICK;$/;" t +LPNMHDR vendor/winapi/src/um/winuser.rs /^pub type LPNMHDR = *mut NMHDR;$/;" t +LPNMHEADERA vendor/winapi/src/um/commctrl.rs /^pub type LPNMHEADERA = *mut NMHEADERA;$/;" t +LPNMHEADERW vendor/winapi/src/um/commctrl.rs /^pub type LPNMHEADERW = *mut NMHEADERW;$/;" t +LPNMIPADDRESS vendor/winapi/src/um/commctrl.rs /^pub type LPNMIPADDRESS = *mut NMIPADDRESS;$/;" t +LPNMITEMACTIVATE vendor/winapi/src/um/commctrl.rs /^pub type LPNMITEMACTIVATE = *mut NMITEMACTIVATE;$/;" t +LPNMKEY vendor/winapi/src/um/commctrl.rs /^pub type LPNMKEY = *mut NMKEY;$/;" t +LPNMLISTVIEW vendor/winapi/src/um/commctrl.rs /^pub type LPNMLISTVIEW = *mut NMLISTVIEW;$/;" t +LPNMLVCACHEHINT vendor/winapi/src/um/commctrl.rs /^pub type LPNMLVCACHEHINT = *mut NMLVCACHEHINT;$/;" t +LPNMLVCUSTOMDRAW vendor/winapi/src/um/commctrl.rs /^pub type LPNMLVCUSTOMDRAW = *mut NMLVCUSTOMDRAW;$/;" t +LPNMLVDISPINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPNMLVDISPINFOA = *mut NMLVDISPINFOA;$/;" t +LPNMLVDISPINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPNMLVDISPINFOW = *mut NMLVDISPINFOW;$/;" t +LPNMLVFINDITEMA vendor/winapi/src/um/commctrl.rs /^pub type LPNMLVFINDITEMA = *mut NMLVFINDITEMA;$/;" t +LPNMLVFINDITEMW vendor/winapi/src/um/commctrl.rs /^pub type LPNMLVFINDITEMW = *mut NMLVFINDITEMW;$/;" t +LPNMLVGETINFOTIPA vendor/winapi/src/um/commctrl.rs /^pub type LPNMLVGETINFOTIPA = *mut NMLVGETINFOTIPA;$/;" t +LPNMLVGETINFOTIPW vendor/winapi/src/um/commctrl.rs /^pub type LPNMLVGETINFOTIPW = *mut NMLVGETINFOTIPW;$/;" t +LPNMLVKEYDOWN vendor/winapi/src/um/commctrl.rs /^pub type LPNMLVKEYDOWN = *mut NMLVKEYDOWN;$/;" t +LPNMLVODSTATECHANGE vendor/winapi/src/um/commctrl.rs /^pub type LPNMLVODSTATECHANGE = *mut NMLVODSTATECHANGE;$/;" t +LPNMLVSCROLL vendor/winapi/src/um/commctrl.rs /^pub type LPNMLVSCROLL = *mut NMLVSCROLL;$/;" t +LPNMMOUSE vendor/winapi/src/um/commctrl.rs /^pub type LPNMMOUSE = *mut NMMOUSE;$/;" t +LPNMOBJECTNOTIFY vendor/winapi/src/um/commctrl.rs /^pub type LPNMOBJECTNOTIFY = *mut NMOBJECTNOTIFY;$/;" t +LPNMPGCALCSIZE vendor/winapi/src/um/commctrl.rs /^pub type LPNMPGCALCSIZE = *mut NMPGCALCSIZE;$/;" t +LPNMPGHOTITEM vendor/winapi/src/um/commctrl.rs /^pub type LPNMPGHOTITEM = *mut NMPGHOTITEM;$/;" t +LPNMPGSCROLL vendor/winapi/src/um/commctrl.rs /^pub type LPNMPGSCROLL = *mut NMPGSCROLL;$/;" t +LPNMRBAUTOSIZE vendor/winapi/src/um/commctrl.rs /^pub type LPNMRBAUTOSIZE = *mut NMRBAUTOSIZE;$/;" t +LPNMREBAR vendor/winapi/src/um/commctrl.rs /^pub type LPNMREBAR = *mut NMREBAR;$/;" t +LPNMREBARAUTOBREAK vendor/winapi/src/um/commctrl.rs /^pub type LPNMREBARAUTOBREAK = *mut NMREBARAUTOBREAK;$/;" t +LPNMREBARCHEVRON vendor/winapi/src/um/commctrl.rs /^pub type LPNMREBARCHEVRON = *mut NMREBARCHEVRON;$/;" t +LPNMREBARCHILDSIZE vendor/winapi/src/um/commctrl.rs /^pub type LPNMREBARCHILDSIZE = *mut NMREBARCHILDSIZE;$/;" t +LPNMREBARSPLITTER vendor/winapi/src/um/commctrl.rs /^pub type LPNMREBARSPLITTER = *mut NMREBARSPLITTER;$/;" t +LPNMSELCHANGE vendor/winapi/src/um/commctrl.rs /^pub type LPNMSELCHANGE = *mut NMSELCHANGE;$/;" t +LPNMSELECT vendor/winapi/src/um/commctrl.rs /^pub type LPNMSELECT = *mut NMSELCHANGE;$/;" t +LPNMTBCUSTOMDRAW vendor/winapi/src/um/commctrl.rs /^pub type LPNMTBCUSTOMDRAW = *mut NMTBCUSTOMDRAW;$/;" t +LPNMTBDISPINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPNMTBDISPINFOA = *mut NMTBDISPINFOA;$/;" t +LPNMTBDISPINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPNMTBDISPINFOW = *mut NMTBDISPINFOW;$/;" t +LPNMTBGETINFOTIPA vendor/winapi/src/um/commctrl.rs /^pub type LPNMTBGETINFOTIPA = *mut NMTBGETINFOTIPA;$/;" t +LPNMTBGETINFOTIPW vendor/winapi/src/um/commctrl.rs /^pub type LPNMTBGETINFOTIPW = *mut NMTBGETINFOTIPW;$/;" t +LPNMTBHOTITEM vendor/winapi/src/um/commctrl.rs /^pub type LPNMTBHOTITEM = *mut NMTBHOTITEM;$/;" t +LPNMTBRESTORE vendor/winapi/src/um/commctrl.rs /^pub type LPNMTBRESTORE = *mut NMTBRESTORE;$/;" t +LPNMTBSAVE vendor/winapi/src/um/commctrl.rs /^pub type LPNMTBSAVE = *mut NMTBSAVE;$/;" t +LPNMTOOLBARA vendor/winapi/src/um/commctrl.rs /^pub type LPNMTOOLBARA = *mut NMTOOLBARA;$/;" t +LPNMTOOLBARW vendor/winapi/src/um/commctrl.rs /^pub type LPNMTOOLBARW = *mut NMTOOLBARW;$/;" t +LPNMTOOLTIPSCREATED vendor/winapi/src/um/commctrl.rs /^pub type LPNMTOOLTIPSCREATED = *mut NMTOOLTIPSCREATED;$/;" t +LPNMTREEVIEWA vendor/winapi/src/um/commctrl.rs /^pub type LPNMTREEVIEWA = *mut NMTREEVIEWA;$/;" t +LPNMTREEVIEWW vendor/winapi/src/um/commctrl.rs /^pub type LPNMTREEVIEWW = *mut NMTREEVIEWW;$/;" t +LPNMTTCUSTOMDRAW vendor/winapi/src/um/commctrl.rs /^pub type LPNMTTCUSTOMDRAW = *mut NMTTCUSTOMDRAW;$/;" t +LPNMTTDISPINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPNMTTDISPINFOA = *mut NMTTDISPINFOA;$/;" t +LPNMTTDISPINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPNMTTDISPINFOW = *mut NMTTDISPINFOW;$/;" t +LPNMTVCUSTOMDRAW vendor/winapi/src/um/commctrl.rs /^pub type LPNMTVCUSTOMDRAW = *mut NMTVCUSTOMDRAW;$/;" t +LPNMTVDISPINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPNMTVDISPINFOA = *mut NMTVDISPINFOA;$/;" t +LPNMTVDISPINFOEXA vendor/winapi/src/um/commctrl.rs /^pub type LPNMTVDISPINFOEXA = *mut NMTVDISPINFOEXA;$/;" t +LPNMTVDISPINFOEXW vendor/winapi/src/um/commctrl.rs /^pub type LPNMTVDISPINFOEXW = *mut NMTVDISPINFOEXW;$/;" t +LPNMTVDISPINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPNMTVDISPINFOW = *mut NMTVDISPINFOW;$/;" t +LPNMTVGETINFOTIPA vendor/winapi/src/um/commctrl.rs /^pub type LPNMTVGETINFOTIPA = *mut NMTVGETINFOTIPA;$/;" t +LPNMTVGETINFOTIPW vendor/winapi/src/um/commctrl.rs /^pub type LPNMTVGETINFOTIPW = *mut NMTVGETINFOTIPW;$/;" t +LPNMTVKEYDOWN vendor/winapi/src/um/commctrl.rs /^pub type LPNMTVKEYDOWN = *mut NMTVKEYDOWN;$/;" t +LPNMTVSTATEIMAGECHANGING vendor/winapi/src/um/commctrl.rs /^pub type LPNMTVSTATEIMAGECHANGING = *mut NMTVSTATEIMAGECHANGING;$/;" t +LPNMUPDOWN vendor/winapi/src/um/commctrl.rs /^pub type LPNMUPDOWN = *mut NMUPDOWN;$/;" t +LPNMVIEWCHANGE vendor/winapi/src/um/commctrl.rs /^pub type LPNMVIEWCHANGE = *mut NMVIEWCHANGE;$/;" t +LPNM_CACHEHINT vendor/winapi/src/um/commctrl.rs /^pub type LPNM_CACHEHINT = LPNMLVCACHEHINT;$/;" t +LPNM_FINDITEMA vendor/winapi/src/um/commctrl.rs /^pub type LPNM_FINDITEMA = LPNMLVFINDITEMA;$/;" t +LPNM_FINDITEMW vendor/winapi/src/um/commctrl.rs /^pub type LPNM_FINDITEMW = LPNMLVFINDITEMW;$/;" t +LPNM_LISTVIEW vendor/winapi/src/um/commctrl.rs /^pub type LPNM_LISTVIEW = LPNMLISTVIEW;$/;" t +LPNM_ODSTATECHANGE vendor/winapi/src/um/commctrl.rs /^pub type LPNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;$/;" t +LPNM_TREEVIEWA vendor/winapi/src/um/commctrl.rs /^pub type LPNM_TREEVIEWA = LPNMTREEVIEWA;$/;" t +LPNM_TREEVIEWW vendor/winapi/src/um/commctrl.rs /^pub type LPNM_TREEVIEWW = LPNMTREEVIEWW;$/;" t +LPNM_UPDOWN vendor/winapi/src/um/commctrl.rs /^pub type LPNM_UPDOWN = LPNMUPDOWN;$/;" t +LPNONCLIENTMETRICSA vendor/winapi/src/um/winuser.rs /^pub type LPNONCLIENTMETRICSA = *mut NONCLIENTMETRICSA;$/;" t +LPNONCLIENTMETRICSW vendor/winapi/src/um/winuser.rs /^pub type LPNONCLIENTMETRICSW = *mut NONCLIENTMETRICSW;$/;" t +LPNSPV2_ROUTINE vendor/winapi/src/um/ws2spi.rs /^pub type LPNSPV2_ROUTINE = *mut NSPV2_ROUTINE;$/;" t +LPNSP_ROUTINE vendor/winapi/src/um/ws2spi.rs /^pub type LPNSP_ROUTINE = *mut NSP_ROUTINE;$/;" t +LPNUMBERFMTA vendor/winapi/src/um/winnls.rs /^pub type LPNUMBERFMTA = *mut NUMBERFMTA;$/;" t +LPNUMBERFMTW vendor/winapi/src/um/winnls.rs /^pub type LPNUMBERFMTW = *mut NUMBERFMTW;$/;" t +LPOFNOTIFYA vendor/winapi/src/um/commdlg.rs /^pub type LPOFNOTIFYA = *mut OFNOTIFYA;$/;" t +LPOFNOTIFYEXA vendor/winapi/src/um/commdlg.rs /^pub type LPOFNOTIFYEXA = *mut OFNOTIFYEXA;$/;" t +LPOFNOTIFYEXW vendor/winapi/src/um/commdlg.rs /^pub type LPOFNOTIFYEXW = *mut OFNOTIFYEXW;$/;" t +LPOFNOTIFYW vendor/winapi/src/um/commdlg.rs /^pub type LPOFNOTIFYW = *mut OFNOTIFYW;$/;" t +LPOFSTRUCT vendor/winapi/src/um/winbase.rs /^pub type LPOFSTRUCT = *mut OFSTRUCT;$/;" t +LPOLESTR vendor/winapi/src/shared/wtypesbase.rs /^pub type LPOLESTR = *mut OLECHAR;$/;" t +LPOPENCARDNAMEA vendor/winapi/src/um/winscard.rs /^pub type LPOPENCARDNAMEA = *mut OPENCARDNAMEA;$/;" t +LPOPENCARDNAMEA_EX vendor/winapi/src/um/winscard.rs /^pub type LPOPENCARDNAMEA_EX = LPOPENCARDNAME_EXA;$/;" t +LPOPENCARDNAMEW vendor/winapi/src/um/winscard.rs /^pub type LPOPENCARDNAMEW = *mut OPENCARDNAMEW;$/;" t +LPOPENCARDNAMEW_EX vendor/winapi/src/um/winscard.rs /^pub type LPOPENCARDNAMEW_EX = LPOPENCARDNAME_EXW;$/;" t +LPOPENCARDNAME_A vendor/winapi/src/um/winscard.rs /^pub type LPOPENCARDNAME_A = LPOPENCARDNAMEA;$/;" t +LPOPENCARDNAME_EXA vendor/winapi/src/um/winscard.rs /^pub type LPOPENCARDNAME_EXA = *mut OPENCARDNAME_EXA;$/;" t +LPOPENCARDNAME_EXW vendor/winapi/src/um/winscard.rs /^pub type LPOPENCARDNAME_EXW = *mut OPENCARDNAME_EXW;$/;" t +LPOPENCARDNAME_W vendor/winapi/src/um/winscard.rs /^pub type LPOPENCARDNAME_W = LPOPENCARDNAMEW;$/;" t +LPOPENCARD_SEARCH_CRITERIAA vendor/winapi/src/um/winscard.rs /^pub type LPOPENCARD_SEARCH_CRITERIAA = *mut OPENCARD_SEARCH_CRITERIAA;$/;" t +LPOPENCARD_SEARCH_CRITERIAW vendor/winapi/src/um/winscard.rs /^pub type LPOPENCARD_SEARCH_CRITERIAW = *mut OPENCARD_SEARCH_CRITERIAW;$/;" t +LPOPENFILENAMEA vendor/winapi/src/um/commdlg.rs /^pub type LPOPENFILENAMEA = *mut OPENFILENAMEA;$/;" t +LPOPENFILENAMEW vendor/winapi/src/um/commdlg.rs /^pub type LPOPENFILENAMEW = *mut OPENFILENAMEW;$/;" t +LPOPENFILENAME_NT4A vendor/winapi/src/um/commdlg.rs /^pub type LPOPENFILENAME_NT4A = *mut OPENFILENAME_NT4A;$/;" t +LPOPENFILENAME_NT4W vendor/winapi/src/um/commdlg.rs /^pub type LPOPENFILENAME_NT4W = *mut OPENFILENAME_NT4W;$/;" t +LPOSVERSIONINFOA vendor/winapi/src/um/winnt.rs /^pub type LPOSVERSIONINFOA = *mut OSVERSIONINFOA;$/;" t +LPOSVERSIONINFOEXA vendor/winapi/src/um/winnt.rs /^pub type LPOSVERSIONINFOEXA = *mut OSVERSIONINFOEXA;$/;" t +LPOSVERSIONINFOEXW vendor/winapi/src/um/winnt.rs /^pub type LPOSVERSIONINFOEXW = *mut OSVERSIONINFOEXW;$/;" t +LPOSVERSIONINFOW vendor/winapi/src/um/winnt.rs /^pub type LPOSVERSIONINFOW = *mut OSVERSIONINFOW;$/;" t +LPOUTLINETEXTMETRICA vendor/winapi/src/um/wingdi.rs /^pub type LPOUTLINETEXTMETRICA = *mut OUTLINETEXTMETRICA;$/;" t +LPOUTLINETEXTMETRICW vendor/winapi/src/um/wingdi.rs /^pub type LPOUTLINETEXTMETRICW = *mut OUTLINETEXTMETRICW;$/;" t +LPOUTPUT_DEBUG_STRING_INFO vendor/winapi/src/um/minwinbase.rs /^pub type LPOUTPUT_DEBUG_STRING_INFO = *mut OUTPUT_DEBUG_STRING_INFO;$/;" t +LPOVERLAPPED vendor/winapi/src/um/minwinbase.rs /^pub type LPOVERLAPPED = *mut OVERLAPPED;$/;" t +LPOVERLAPPED_ENTRY vendor/winapi/src/um/minwinbase.rs /^pub type LPOVERLAPPED_ENTRY = *mut OVERLAPPED_ENTRY;$/;" t +LPPAGESETUPDLGA vendor/winapi/src/um/commdlg.rs /^pub type LPPAGESETUPDLGA = *mut PAGESETUPDLGA;$/;" t +LPPAGESETUPDLGW vendor/winapi/src/um/commdlg.rs /^pub type LPPAGESETUPDLGW = *mut PAGESETUPDLGW;$/;" t +LPPAINTSTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPPAINTSTRUCT = *mut PAINTSTRUCT;$/;" t +LPPALETTEENTRY vendor/winapi/src/um/wingdi.rs /^pub type LPPALETTEENTRY = *mut PALETTEENTRY;$/;" t +LPPANOSE vendor/winapi/src/um/wingdi.rs /^pub type LPPANOSE = *mut PANOSE;$/;" t +LPPARAMDESC vendor/winapi/src/um/oaidl.rs /^pub type LPPARAMDESC = *mut PARAMDESC;$/;" t +LPPARAMDESCEX vendor/winapi/src/um/oaidl.rs /^pub type LPPARAMDESCEX = *mut PARAMDESCEX;$/;" t +LPPATTERN vendor/winapi/src/um/wingdi.rs /^pub type LPPATTERN = *mut PATTERN;$/;" t +LPPBRANGE vendor/winapi/src/um/commctrl.rs /^pub type LPPBRANGE = *mut PBRANGE;$/;" t +LPPELARRAY vendor/winapi/src/um/wingdi.rs /^pub type LPPELARRAY = *mut PELARRAY;$/;" t +LPPHYSICAL_MONITOR vendor/winapi/src/um/physicalmonitorenumerationapi.rs /^pub type LPPHYSICAL_MONITOR = *mut PHYSICAL_MONITOR;$/;" t +LPPIXELFORMATDESCRIPTOR vendor/winapi/src/um/wingdi.rs /^pub type LPPIXELFORMATDESCRIPTOR = *mut PIXELFORMATDESCRIPTOR;$/;" t +LPPOINT vendor/winapi/src/shared/windef.rs /^pub type LPPOINT = *mut POINT;$/;" t +LPPOINTFX vendor/winapi/src/um/wingdi.rs /^pub type LPPOINTFX = *mut POINTFX;$/;" t +LPPOINTS vendor/winapi/src/shared/windef.rs /^pub type LPPOINTS = *mut POINTS;$/;" t +LPPOLYTEXTA vendor/winapi/src/um/wingdi.rs /^pub type LPPOLYTEXTA = *mut POLYTEXTA;$/;" t +LPPOLYTEXTW vendor/winapi/src/um/wingdi.rs /^pub type LPPOLYTEXTW = *mut POLYTEXTW;$/;" t +LPPORT_INFO_1A vendor/winapi/src/um/winspool.rs /^pub type LPPORT_INFO_1A = *mut PORT_INFO_1A;$/;" t +LPPORT_INFO_1W vendor/winapi/src/um/winspool.rs /^pub type LPPORT_INFO_1W = *mut PORT_INFO_1W;$/;" t +LPPORT_INFO_2A vendor/winapi/src/um/winspool.rs /^pub type LPPORT_INFO_2A = *mut PORT_INFO_2A;$/;" t +LPPORT_INFO_2W vendor/winapi/src/um/winspool.rs /^pub type LPPORT_INFO_2W = *mut PORT_INFO_2W;$/;" t +LPPORT_INFO_3A vendor/winapi/src/um/winspool.rs /^pub type LPPORT_INFO_3A = *mut PORT_INFO_3A;$/;" t +LPPORT_INFO_3W vendor/winapi/src/um/winspool.rs /^pub type LPPORT_INFO_3W = *mut PORT_INFO_3W;$/;" t +LPPRINTDLGA vendor/winapi/src/um/commdlg.rs /^pub type LPPRINTDLGA = *mut PRINTDLGA;$/;" t +LPPRINTDLGEXA vendor/winapi/src/um/commdlg.rs /^pub type LPPRINTDLGEXA = *mut PRINTDLGEXA;$/;" t +LPPRINTDLGEXW vendor/winapi/src/um/commdlg.rs /^pub type LPPRINTDLGEXW = *mut PRINTDLGEXW;$/;" t +LPPRINTDLGW vendor/winapi/src/um/commdlg.rs /^pub type LPPRINTDLGW = *mut PRINTDLGW;$/;" t +LPPRINTER_DEFAULTSA vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_DEFAULTSA = *mut PRINTER_DEFAULTSA;$/;" t +LPPRINTER_DEFAULTSW vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_DEFAULTSW = *mut PRINTER_DEFAULTSW;$/;" t +LPPRINTER_ENUM_VALUESA vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_ENUM_VALUESA = *mut PRINTER_ENUM_VALUESA;$/;" t +LPPRINTER_ENUM_VALUESW vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_ENUM_VALUESW = *mut PRINTER_ENUM_VALUESW;$/;" t +LPPRINTER_INFO_1A vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_1A = *mut PRINTER_INFO_1A;$/;" t +LPPRINTER_INFO_1W vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_1W = *mut PRINTER_INFO_1W;$/;" t +LPPRINTER_INFO_2A vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_2A = *mut PRINTER_INFO_2A;$/;" t +LPPRINTER_INFO_2W vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_2W = *mut PRINTER_INFO_2W;$/;" t +LPPRINTER_INFO_3 vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_3 = *mut PRINTER_INFO_3;$/;" t +LPPRINTER_INFO_4A vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_4A = *mut PRINTER_INFO_4A;$/;" t +LPPRINTER_INFO_4W vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_4W = *mut PRINTER_INFO_4W;$/;" t +LPPRINTER_INFO_5A vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_5A = *mut PRINTER_INFO_5A;$/;" t +LPPRINTER_INFO_5W vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_5W = *mut PRINTER_INFO_5W;$/;" t +LPPRINTER_INFO_6 vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_6 = *mut PRINTER_INFO_6;$/;" t +LPPRINTER_INFO_7A vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_7A = *mut PRINTER_INFO_7A;$/;" t +LPPRINTER_INFO_7W vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_7W = *mut PRINTER_INFO_7W;$/;" t +LPPRINTER_INFO_8A vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_8A = *mut PRINTER_INFO_8A;$/;" t +LPPRINTER_INFO_8W vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_8W = *mut PRINTER_INFO_8W;$/;" t +LPPRINTER_INFO_9A vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_9A = *mut PRINTER_INFO_9A;$/;" t +LPPRINTER_INFO_9W vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_INFO_9W = *mut PRINTER_INFO_9W;$/;" t +LPPRINTER_NOTIFY_INFO vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_NOTIFY_INFO = *mut PRINTER_NOTIFY_INFO;$/;" t +LPPRINTER_NOTIFY_INFO_DATA vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_NOTIFY_INFO_DATA = *mut PRINTER_NOTIFY_INFO_DATA;$/;" t +LPPRINTER_NOTIFY_OPTIONS vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_NOTIFY_OPTIONS = *mut PRINTER_NOTIFY_OPTIONS;$/;" t +LPPRINTER_NOTIFY_OPTIONS_TYPE vendor/winapi/src/um/winspool.rs /^pub type LPPRINTER_NOTIFY_OPTIONS_TYPE = *mut PRINTER_NOTIFY_OPTIONS_TYPE;$/;" t +LPPRINTPAGERANGE vendor/winapi/src/um/commdlg.rs /^pub type LPPRINTPAGERANGE = *mut PRINTPAGERANGE;$/;" t +LPPRINTPROCESSOR_INFO_1A vendor/winapi/src/um/winspool.rs /^pub type LPPRINTPROCESSOR_INFO_1A = *mut PRINTPROCESSOR_INFO_1A;$/;" t +LPPRINTPROCESSOR_INFO_1W vendor/winapi/src/um/winspool.rs /^pub type LPPRINTPROCESSOR_INFO_1W = *mut PRINTPROCESSOR_INFO_1W;$/;" t +LPPRINT_OTHER_INFO vendor/winapi/src/um/lmalert.rs /^pub type LPPRINT_OTHER_INFO = *mut PRINT_OTHER_INFO;$/;" t +LPPROCESSENTRY32 vendor/winapi/src/um/tlhelp32.rs /^pub type LPPROCESSENTRY32 = *mut PROCESSENTRY32;$/;" t +LPPROCESSENTRY32W vendor/winapi/src/um/tlhelp32.rs /^pub type LPPROCESSENTRY32W = *mut PROCESSENTRY32W;$/;" t +LPPROCESS_HEAP_ENTRY vendor/winapi/src/um/minwinbase.rs /^pub type LPPROCESS_HEAP_ENTRY = *mut PROCESS_HEAP_ENTRY;$/;" t +LPPROCESS_INFORMATION vendor/winapi/src/um/processthreadsapi.rs /^pub type LPPROCESS_INFORMATION = *mut PROCESS_INFORMATION;$/;" t +LPPROC_THREAD_ATTRIBUTE_LIST vendor/winapi/src/um/processthreadsapi.rs /^pub type LPPROC_THREAD_ATTRIBUTE_LIST = *mut PROC_THREAD_ATTRIBUTE_LIST;$/;" t +LPPROPERTYBAG2 vendor/winapi/src/um/ocidl.rs /^pub type LPPROPERTYBAG2 = *mut IPropertyBag2;$/;" t +LPPROPERTYSETSTORAGE vendor/winapi/src/um/propidl.rs /^pub type LPPROPERTYSETSTORAGE = *mut IPropertySetStorage;$/;" t +LPPROPERTYSTORAGE vendor/winapi/src/um/propidl.rs /^pub type LPPROPERTYSTORAGE = *mut IPropertyStorage;$/;" t +LPPROPSHEETHEADERA vendor/winapi/src/um/prsht.rs /^pub type LPPROPSHEETHEADERA = LPPROPSHEETHEADERA_V2;$/;" t +LPPROPSHEETHEADERA_V2 vendor/winapi/src/um/prsht.rs /^pub type LPPROPSHEETHEADERA_V2 = *mut PROPSHEETHEADERA_V2;$/;" t +LPPROPSHEETHEADERW vendor/winapi/src/um/prsht.rs /^pub type LPPROPSHEETHEADERW = LPPROPSHEETHEADERW_V2;$/;" t +LPPROPSHEETHEADERW_V2 vendor/winapi/src/um/prsht.rs /^pub type LPPROPSHEETHEADERW_V2 = *mut PROPSHEETHEADERW_V2;$/;" t +LPPROPSHEETPAGEA vendor/winapi/src/um/prsht.rs /^pub type LPPROPSHEETPAGEA = LPPROPSHEETPAGEA_V4;$/;" t +LPPROPSHEETPAGEA_LATEST vendor/winapi/src/um/prsht.rs /^pub type LPPROPSHEETPAGEA_LATEST = LPPROPSHEETPAGEA_V4;$/;" t +LPPROPSHEETPAGEA_V4 vendor/winapi/src/um/prsht.rs /^pub type LPPROPSHEETPAGEA_V4 = *mut PROPSHEETPAGEA_V4;$/;" t +LPPROPSHEETPAGEW vendor/winapi/src/um/prsht.rs /^pub type LPPROPSHEETPAGEW = LPPROPSHEETPAGEW_V4;$/;" t +LPPROPSHEETPAGEW_LATEST vendor/winapi/src/um/prsht.rs /^pub type LPPROPSHEETPAGEW_LATEST = LPPROPSHEETPAGEW_V4;$/;" t +LPPROPSHEETPAGEW_V4 vendor/winapi/src/um/prsht.rs /^pub type LPPROPSHEETPAGEW_V4 = *mut PROPSHEETPAGEW_V4;$/;" t +LPPROPVARIANT vendor/winapi/src/um/propidl.rs /^pub type LPPROPVARIANT = *mut PROPVARIANT;$/;" t +LPPROTOENT vendor/winapi/src/um/winsock2.rs /^pub type LPPROTOENT = *mut protoent;$/;" t +LPPROVIDOR_INFO_1A vendor/winapi/src/um/winspool.rs /^pub type LPPROVIDOR_INFO_1A = *mut PROVIDOR_INFO_1A;$/;" t +LPPROVIDOR_INFO_1W vendor/winapi/src/um/winspool.rs /^pub type LPPROVIDOR_INFO_1W = *mut PROVIDOR_INFO_1W;$/;" t +LPPROVIDOR_INFO_2A vendor/winapi/src/um/winspool.rs /^pub type LPPROVIDOR_INFO_2A = *mut PROVIDOR_INFO_2A;$/;" t +LPPROVIDOR_INFO_2W vendor/winapi/src/um/winspool.rs /^pub type LPPROVIDOR_INFO_2W = *mut PROVIDOR_INFO_2W;$/;" t +LPPSHNOTIFY vendor/winapi/src/um/prsht.rs /^pub type LPPSHNOTIFY = *mut PSHNOTIFY;$/;" t +LPQOS vendor/winapi/src/um/winsock2.rs /^pub type LPQOS = *mut QOS;$/;" t +LPQUERY_SERVICE_CONFIGA vendor/winapi/src/um/winsvc.rs /^pub type LPQUERY_SERVICE_CONFIGA = *mut QUERY_SERVICE_CONFIGA;$/;" t +LPQUERY_SERVICE_CONFIGW vendor/winapi/src/um/winsvc.rs /^pub type LPQUERY_SERVICE_CONFIGW = *mut QUERY_SERVICE_CONFIGW;$/;" t +LPQUERY_SERVICE_LOCK_STATUSA vendor/winapi/src/um/winsvc.rs /^pub type LPQUERY_SERVICE_LOCK_STATUSA = *mut QUERY_SERVICE_LOCK_STATUSA;$/;" t +LPQUERY_SERVICE_LOCK_STATUSW vendor/winapi/src/um/winsvc.rs /^pub type LPQUERY_SERVICE_LOCK_STATUSW = *mut QUERY_SERVICE_LOCK_STATUSW;$/;" t +LPRASTERIZER_STATUS vendor/winapi/src/um/wingdi.rs /^pub type LPRASTERIZER_STATUS = *mut RASTERIZER_STATUS;$/;" t +LPRAWHID vendor/winapi/src/um/winuser.rs /^pub type LPRAWHID = *mut RAWHID;$/;" t +LPRAWINPUT vendor/winapi/src/um/winuser.rs /^pub type LPRAWINPUT = *mut RAWINPUT;$/;" t +LPRAWINPUTDEVICE vendor/winapi/src/um/winuser.rs /^pub type LPRAWINPUTDEVICE = *mut RAWINPUTDEVICE;$/;" t +LPRAWINPUTHEADER vendor/winapi/src/um/winuser.rs /^pub type LPRAWINPUTHEADER = *mut RAWINPUTHEADER;$/;" t +LPRAWKEYBOARD vendor/winapi/src/um/winuser.rs /^pub type LPRAWKEYBOARD = *mut RAWKEYBOARD;$/;" t +LPRAWMOUSE vendor/winapi/src/um/winuser.rs /^pub type LPRAWMOUSE = *mut RAWMOUSE;$/;" t +LPRBHITTESTINFO vendor/winapi/src/um/commctrl.rs /^pub type LPRBHITTESTINFO = *mut RBHITTESTINFO;$/;" t +LPREBARBANDINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPREBARBANDINFOA = *mut REBARBANDINFOA;$/;" t +LPREBARBANDINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPREBARBANDINFOW = *mut REBARBANDINFOW;$/;" t +LPREBARINFO vendor/winapi/src/um/commctrl.rs /^pub type LPREBARINFO = *mut REBARINFO;$/;" t +LPRECT vendor/winapi/src/shared/windef.rs /^pub type LPRECT = *mut RECT;$/;" t +LPRECTL vendor/winapi/src/shared/windef.rs /^pub type LPRECTL = *mut RECTL;$/;" t +LPREMOTE_NAME_INFOA vendor/winapi/src/um/winnetwk.rs /^pub type LPREMOTE_NAME_INFOA = *mut REMOTE_NAME_INFOA;$/;" t +LPREMOTE_NAME_INFOW vendor/winapi/src/um/winnetwk.rs /^pub type LPREMOTE_NAME_INFOW = *mut REMOTE_NAME_INFOW;$/;" t +LPREPL_EDIR_INFO_0 vendor/winapi/src/um/lmrepl.rs /^pub type LPREPL_EDIR_INFO_0 = *mut REPL_EDIR_INFO_0;$/;" t +LPREPL_EDIR_INFO_1 vendor/winapi/src/um/lmrepl.rs /^pub type LPREPL_EDIR_INFO_1 = *mut REPL_EDIR_INFO_1;$/;" t +LPREPL_EDIR_INFO_1000 vendor/winapi/src/um/lmrepl.rs /^pub type LPREPL_EDIR_INFO_1000 = *mut REPL_EDIR_INFO_1000;$/;" t +LPREPL_EDIR_INFO_1001 vendor/winapi/src/um/lmrepl.rs /^pub type LPREPL_EDIR_INFO_1001 = *mut REPL_EDIR_INFO_1001;$/;" t +LPREPL_EDIR_INFO_2 vendor/winapi/src/um/lmrepl.rs /^pub type LPREPL_EDIR_INFO_2 = *mut REPL_EDIR_INFO_2;$/;" t +LPREPL_IDIR_INFO_0 vendor/winapi/src/um/lmrepl.rs /^pub type LPREPL_IDIR_INFO_0 = *mut REPL_IDIR_INFO_0;$/;" t +LPREPL_IDIR_INFO_1 vendor/winapi/src/um/lmrepl.rs /^pub type LPREPL_IDIR_INFO_1 = *mut REPL_IDIR_INFO_1;$/;" t +LPREPL_INFO_0 vendor/winapi/src/um/lmrepl.rs /^pub type LPREPL_INFO_0 = *mut REPL_INFO_0;$/;" t +LPREPL_INFO_1000 vendor/winapi/src/um/lmrepl.rs /^pub type LPREPL_INFO_1000 = *mut REPL_INFO_1000;$/;" t +LPREPL_INFO_1001 vendor/winapi/src/um/lmrepl.rs /^pub type LPREPL_INFO_1001 = *mut REPL_INFO_1001;$/;" t +LPREPL_INFO_1002 vendor/winapi/src/um/lmrepl.rs /^pub type LPREPL_INFO_1002 = *mut REPL_INFO_1002;$/;" t +LPREPL_INFO_1003 vendor/winapi/src/um/lmrepl.rs /^pub type LPREPL_INFO_1003 = *mut REPL_INFO_1003;$/;" t +LPRGBQUAD vendor/winapi/src/um/wingdi.rs /^pub type LPRGBQUAD = *mut RGBQUAD;$/;" t +LPRGBTRIPLE vendor/winapi/src/um/wingdi.rs /^pub type LPRGBTRIPLE = *mut RGBTRIPLE;$/;" t +LPRGNDATA vendor/winapi/src/um/wingdi.rs /^pub type LPRGNDATA = *mut RGNDATA;$/;" t +LPRID_DEVICE_INFO vendor/winapi/src/um/winuser.rs /^pub type LPRID_DEVICE_INFO = *mut RID_DEVICE_INFO;$/;" t +LPRIP_INFO vendor/winapi/src/um/minwinbase.rs /^pub type LPRIP_INFO = *mut RIP_INFO;$/;" t +LPSAFEARRAY vendor/winapi/src/um/oaidl.rs /^pub type LPSAFEARRAY = *mut SAFEARRAY;$/;" t +LPSAFEARRAYBOUND vendor/winapi/src/um/oaidl.rs /^pub type LPSAFEARRAYBOUND = *mut SAFEARRAYBOUND;$/;" t +LPSAFEARRAY_UserFree vendor/winapi/src/um/wincodecsdk.rs /^ pub fn LPSAFEARRAY_UserFree($/;" f +LPSAFEARRAY_UserMarshal vendor/winapi/src/um/wincodecsdk.rs /^ pub fn LPSAFEARRAY_UserMarshal($/;" f +LPSAFEARRAY_UserSize vendor/winapi/src/um/wincodecsdk.rs /^ pub fn LPSAFEARRAY_UserSize($/;" f +LPSAFEARRAY_UserUnmarshal vendor/winapi/src/um/wincodecsdk.rs /^ pub fn LPSAFEARRAY_UserUnmarshal($/;" f +LPSCARDCONTEXT vendor/winapi/src/um/winscard.rs /^pub type LPSCARDCONTEXT = *mut SCARDCONTEXT;$/;" t +LPSCARDHANDLE vendor/winapi/src/um/winscard.rs /^pub type LPSCARDHANDLE = *mut SCARDHANDLE;$/;" t +LPSCARD_ATRMASK vendor/winapi/src/um/winscard.rs /^pub type LPSCARD_ATRMASK = *mut SCARD_ATRMASK;$/;" t +LPSCARD_IO_REQUEST vendor/winapi/src/um/winsmcrd.rs /^pub type LPSCARD_IO_REQUEST = *mut SCARD_IO_REQUEST;$/;" t +LPSCARD_READERSTATEA vendor/winapi/src/um/winscard.rs /^pub type LPSCARD_READERSTATEA = *mut SCARD_READERSTATEA;$/;" t +LPSCARD_READERSTATEW vendor/winapi/src/um/winscard.rs /^pub type LPSCARD_READERSTATEW = *mut SCARD_READERSTATEW;$/;" t +LPSCARD_READERSTATE_A vendor/winapi/src/um/winscard.rs /^pub type LPSCARD_READERSTATE_A = LPSCARD_READERSTATEA;$/;" t +LPSCARD_READERSTATE_W vendor/winapi/src/um/winscard.rs /^pub type LPSCARD_READERSTATE_W = LPSCARD_READERSTATEW;$/;" t +LPSCARD_T0_COMMAND vendor/winapi/src/um/winsmcrd.rs /^pub type LPSCARD_T0_COMMAND = *mut SCARD_T0_COMMAND;$/;" t +LPSCARD_T0_REQUEST vendor/winapi/src/um/winsmcrd.rs /^pub type LPSCARD_T0_REQUEST = *mut SCARD_T0_REQUEST;$/;" t +LPSCARD_T1_REQUEST vendor/winapi/src/um/winsmcrd.rs /^pub type LPSCARD_T1_REQUEST = *mut SCARD_T1_REQUEST;$/;" t +LPSCROLLBARINFO vendor/winapi/src/um/winuser.rs /^pub type LPSCROLLBARINFO = *mut SCROLLBARINFO;$/;" t +LPSCROLLINFO vendor/winapi/src/um/winuser.rs /^pub type LPSCROLLINFO = *mut SCROLLINFO;$/;" t +LPSC_ACTION vendor/winapi/src/um/winsvc.rs /^pub type LPSC_ACTION = *mut SC_ACTION;$/;" t +LPSC_HANDLE vendor/winapi/src/um/winsvc.rs /^pub type LPSC_HANDLE = *mut SC_HANDLE;$/;" t +LPSDP_LARGE_INTEGER_16 vendor/winapi/src/shared/bthsdpdef.rs /^pub type LPSDP_LARGE_INTEGER_16 = *mut SDP_LARGE_INTEGER_16;$/;" t +LPSDP_ULARGE_INTEGER_16 vendor/winapi/src/shared/bthsdpdef.rs /^pub type LPSDP_ULARGE_INTEGER_16 = *mut SDP_ULARGE_INTEGER_16;$/;" t +LPSECURITY_ATTRIBUTES vendor/winapi/src/um/minwinbase.rs /^pub type LPSECURITY_ATTRIBUTES = *mut SECURITY_ATTRIBUTES;$/;" t +LPSECURITY_CAPABILITIES vendor/winapi/src/um/winnt.rs /^pub type LPSECURITY_CAPABILITIES = *mut SECURITY_CAPABILITIES;$/;" t +LPSERVENT vendor/winapi/src/um/winsock2.rs /^pub type LPSERVENT = *mut servent;$/;" t +LPSERVER_ALIAS_INFO_0 vendor/winapi/src/um/lmshare.rs /^pub type LPSERVER_ALIAS_INFO_0 = *mut SERVER_ALIAS_INFO_0;$/;" t +LPSERVER_INFO_100 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_100 = *mut SERVER_INFO_100;$/;" t +LPSERVER_INFO_1005 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1005 = *mut SERVER_INFO_1005;$/;" t +LPSERVER_INFO_101 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_101 = *mut SERVER_INFO_101;$/;" t +LPSERVER_INFO_1010 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1010 = *mut SERVER_INFO_1010;$/;" t +LPSERVER_INFO_1016 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1016 = *mut SERVER_INFO_1016;$/;" t +LPSERVER_INFO_1017 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1017 = *mut SERVER_INFO_1017;$/;" t +LPSERVER_INFO_1018 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1018 = *mut SERVER_INFO_1018;$/;" t +LPSERVER_INFO_102 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_102 = *mut SERVER_INFO_102;$/;" t +LPSERVER_INFO_103 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_103 = *mut SERVER_INFO_103;$/;" t +LPSERVER_INFO_1107 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1107 = *mut SERVER_INFO_1107;$/;" t +LPSERVER_INFO_1501 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1501 = *mut SERVER_INFO_1501;$/;" t +LPSERVER_INFO_1502 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1502 = *mut SERVER_INFO_1502;$/;" t +LPSERVER_INFO_1503 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1503 = *mut SERVER_INFO_1503;$/;" t +LPSERVER_INFO_1506 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1506 = *mut SERVER_INFO_1506;$/;" t +LPSERVER_INFO_1509 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1509 = *mut SERVER_INFO_1509;$/;" t +LPSERVER_INFO_1510 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1510 = *mut SERVER_INFO_1510;$/;" t +LPSERVER_INFO_1511 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1511 = *mut SERVER_INFO_1511;$/;" t +LPSERVER_INFO_1512 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1512 = *mut SERVER_INFO_1512;$/;" t +LPSERVER_INFO_1513 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1513 = *mut SERVER_INFO_1513;$/;" t +LPSERVER_INFO_1514 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1514 = *mut SERVER_INFO_1514;$/;" t +LPSERVER_INFO_1515 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1515 = *mut SERVER_INFO_1515;$/;" t +LPSERVER_INFO_1516 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1516 = *mut SERVER_INFO_1516;$/;" t +LPSERVER_INFO_1518 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1518 = *mut SERVER_INFO_1518;$/;" t +LPSERVER_INFO_1520 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1520 = *mut SERVER_INFO_1520;$/;" t +LPSERVER_INFO_1521 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1521 = *mut SERVER_INFO_1521;$/;" t +LPSERVER_INFO_1522 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1522 = *mut SERVER_INFO_1522;$/;" t +LPSERVER_INFO_1523 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1523 = *mut SERVER_INFO_1523;$/;" t +LPSERVER_INFO_1524 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1524 = *mut SERVER_INFO_1524;$/;" t +LPSERVER_INFO_1525 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1525 = *mut SERVER_INFO_1525;$/;" t +LPSERVER_INFO_1528 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1528 = *mut SERVER_INFO_1528;$/;" t +LPSERVER_INFO_1529 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1529 = *mut SERVER_INFO_1529;$/;" t +LPSERVER_INFO_1530 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1530 = *mut SERVER_INFO_1530;$/;" t +LPSERVER_INFO_1533 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1533 = *mut SERVER_INFO_1533;$/;" t +LPSERVER_INFO_1534 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1534 = *mut SERVER_INFO_1534;$/;" t +LPSERVER_INFO_1535 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1535 = *mut SERVER_INFO_1535;$/;" t +LPSERVER_INFO_1536 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1536 = *mut SERVER_INFO_1536;$/;" t +LPSERVER_INFO_1537 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1537 = *mut SERVER_INFO_1537;$/;" t +LPSERVER_INFO_1538 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1538 = *mut SERVER_INFO_1538;$/;" t +LPSERVER_INFO_1539 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1539 = *mut SERVER_INFO_1539;$/;" t +LPSERVER_INFO_1540 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1540 = *mut SERVER_INFO_1540;$/;" t +LPSERVER_INFO_1541 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1541 = *mut SERVER_INFO_1541;$/;" t +LPSERVER_INFO_1542 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1542 = *mut SERVER_INFO_1542;$/;" t +LPSERVER_INFO_1543 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1543 = *mut SERVER_INFO_1543;$/;" t +LPSERVER_INFO_1544 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1544 = *mut SERVER_INFO_1544;$/;" t +LPSERVER_INFO_1545 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1545 = *mut SERVER_INFO_1545;$/;" t +LPSERVER_INFO_1546 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1546 = *mut SERVER_INFO_1546;$/;" t +LPSERVER_INFO_1547 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1547 = *mut SERVER_INFO_1547;$/;" t +LPSERVER_INFO_1548 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1548 = *mut SERVER_INFO_1548;$/;" t +LPSERVER_INFO_1549 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1549 = *mut SERVER_INFO_1549;$/;" t +LPSERVER_INFO_1550 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1550 = *mut SERVER_INFO_1550;$/;" t +LPSERVER_INFO_1552 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1552 = *mut SERVER_INFO_1552;$/;" t +LPSERVER_INFO_1553 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1553 = *mut SERVER_INFO_1553;$/;" t +LPSERVER_INFO_1554 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1554 = *mut SERVER_INFO_1554;$/;" t +LPSERVER_INFO_1555 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1555 = *mut SERVER_INFO_1555;$/;" t +LPSERVER_INFO_1556 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1556 = *mut SERVER_INFO_1556;$/;" t +LPSERVER_INFO_1557 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1557 = *mut SERVER_INFO_1557;$/;" t +LPSERVER_INFO_1560 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1560 = *mut SERVER_INFO_1560;$/;" t +LPSERVER_INFO_1561 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1561 = *mut SERVER_INFO_1561;$/;" t +LPSERVER_INFO_1562 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1562 = *mut SERVER_INFO_1562;$/;" t +LPSERVER_INFO_1563 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1563 = *mut SERVER_INFO_1563;$/;" t +LPSERVER_INFO_1564 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1564 = *mut SERVER_INFO_1564;$/;" t +LPSERVER_INFO_1565 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1565 = *mut SERVER_INFO_1565;$/;" t +LPSERVER_INFO_1566 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1566 = *mut SERVER_INFO_1566;$/;" t +LPSERVER_INFO_1567 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1567 = *mut SERVER_INFO_1567;$/;" t +LPSERVER_INFO_1568 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1568 = *mut SERVER_INFO_1568;$/;" t +LPSERVER_INFO_1569 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1569 = *mut SERVER_INFO_1569;$/;" t +LPSERVER_INFO_1570 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1570 = *mut SERVER_INFO_1570;$/;" t +LPSERVER_INFO_1571 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1571 = *mut SERVER_INFO_1571;$/;" t +LPSERVER_INFO_1572 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1572 = *mut SERVER_INFO_1572;$/;" t +LPSERVER_INFO_1573 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1573 = *mut SERVER_INFO_1573;$/;" t +LPSERVER_INFO_1574 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1574 = *mut SERVER_INFO_1574;$/;" t +LPSERVER_INFO_1575 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1575 = *mut SERVER_INFO_1575;$/;" t +LPSERVER_INFO_1576 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1576 = *mut SERVER_INFO_1576;$/;" t +LPSERVER_INFO_1577 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1577 = *mut SERVER_INFO_1577;$/;" t +LPSERVER_INFO_1578 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1578 = *mut SERVER_INFO_1578;$/;" t +LPSERVER_INFO_1579 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1579 = *mut SERVER_INFO_1579;$/;" t +LPSERVER_INFO_1580 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1580 = *mut SERVER_INFO_1580;$/;" t +LPSERVER_INFO_1581 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1581 = *mut SERVER_INFO_1581;$/;" t +LPSERVER_INFO_1582 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1582 = *mut SERVER_INFO_1582;$/;" t +LPSERVER_INFO_1583 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1583 = *mut SERVER_INFO_1583;$/;" t +LPSERVER_INFO_1584 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1584 = *mut SERVER_INFO_1584;$/;" t +LPSERVER_INFO_1585 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1585 = *mut SERVER_INFO_1585;$/;" t +LPSERVER_INFO_1586 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1586 = *mut SERVER_INFO_1586;$/;" t +LPSERVER_INFO_1587 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1587 = *mut SERVER_INFO_1587;$/;" t +LPSERVER_INFO_1588 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1588 = *mut SERVER_INFO_1588;$/;" t +LPSERVER_INFO_1590 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1590 = *mut SERVER_INFO_1590;$/;" t +LPSERVER_INFO_1591 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1591 = *mut SERVER_INFO_1591;$/;" t +LPSERVER_INFO_1592 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1592 = *mut SERVER_INFO_1592;$/;" t +LPSERVER_INFO_1593 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1593 = *mut SERVER_INFO_1593;$/;" t +LPSERVER_INFO_1594 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1594 = *mut SERVER_INFO_1594;$/;" t +LPSERVER_INFO_1595 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1595 = *mut SERVER_INFO_1595;$/;" t +LPSERVER_INFO_1596 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1596 = *mut SERVER_INFO_1596;$/;" t +LPSERVER_INFO_1597 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1597 = *mut SERVER_INFO_1597;$/;" t +LPSERVER_INFO_1598 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1598 = *mut SERVER_INFO_1598;$/;" t +LPSERVER_INFO_1599 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1599 = *mut SERVER_INFO_1599;$/;" t +LPSERVER_INFO_1600 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1600 = *mut SERVER_INFO_1600;$/;" t +LPSERVER_INFO_1601 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1601 = *mut SERVER_INFO_1601;$/;" t +LPSERVER_INFO_1602 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_1602 = *mut SERVER_INFO_1602;$/;" t +LPSERVER_INFO_402 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_402 = *mut SERVER_INFO_402;$/;" t +LPSERVER_INFO_403 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_403 = *mut SERVER_INFO_403;$/;" t +LPSERVER_INFO_502 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_502 = *mut SERVER_INFO_502;$/;" t +LPSERVER_INFO_503 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_503 = *mut SERVER_INFO_503;$/;" t +LPSERVER_INFO_598 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_598 = *mut SERVER_INFO_598;$/;" t +LPSERVER_INFO_599 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_INFO_599 = *mut SERVER_INFO_599;$/;" t +LPSERVER_TRANSPORT_INFO_0 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_TRANSPORT_INFO_0 = *mut SERVER_TRANSPORT_INFO_0;$/;" t +LPSERVER_TRANSPORT_INFO_1 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_TRANSPORT_INFO_1 = *mut SERVER_TRANSPORT_INFO_1;$/;" t +LPSERVER_TRANSPORT_INFO_2 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_TRANSPORT_INFO_2 = *mut SERVER_TRANSPORT_INFO_2;$/;" t +LPSERVER_TRANSPORT_INFO_3 vendor/winapi/src/um/lmserver.rs /^pub type LPSERVER_TRANSPORT_INFO_3 = *mut SERVER_TRANSPORT_INFO_3;$/;" t +LPSERVICEPROVIDER vendor/winapi/src/um/servprov.rs /^pub type LPSERVICEPROVIDER = *mut IServiceProvider;$/;" t +LPSERVICE_DESCRIPTIONA vendor/winapi/src/um/winsvc.rs /^pub type LPSERVICE_DESCRIPTIONA = *mut SERVICE_DESCRIPTIONA;$/;" t +LPSERVICE_DESCRIPTIONW vendor/winapi/src/um/winsvc.rs /^pub type LPSERVICE_DESCRIPTIONW = *mut SERVICE_DESCRIPTIONW;$/;" t +LPSERVICE_FAILURE_ACTIONSW vendor/winapi/src/um/winsvc.rs /^pub type LPSERVICE_FAILURE_ACTIONSW = *mut SERVICE_FAILURE_ACTIONSW;$/;" t +LPSERVICE_INFO_0 vendor/winapi/src/um/lmsvc.rs /^pub type LPSERVICE_INFO_0 = *mut SERVICE_INFO_0;$/;" t +LPSERVICE_INFO_1 vendor/winapi/src/um/lmsvc.rs /^pub type LPSERVICE_INFO_1 = *mut SERVICE_INFO_1;$/;" t +LPSERVICE_INFO_2 vendor/winapi/src/um/lmsvc.rs /^pub type LPSERVICE_INFO_2 = *mut SERVICE_INFO_2;$/;" t +LPSERVICE_STATUS vendor/winapi/src/um/winsvc.rs /^pub type LPSERVICE_STATUS = *mut SERVICE_STATUS;$/;" t +LPSERVICE_STATUS_PROCESS vendor/winapi/src/um/winsvc.rs /^pub type LPSERVICE_STATUS_PROCESS = *mut SERVICE_STATUS_PROCESS;$/;" t +LPSERVICE_TABLE_ENTRYA vendor/winapi/src/um/winsvc.rs /^pub type LPSERVICE_TABLE_ENTRYA = *mut SERVICE_TABLE_ENTRYA;$/;" t +LPSERVICE_TABLE_ENTRYW vendor/winapi/src/um/winsvc.rs /^pub type LPSERVICE_TABLE_ENTRYW = *mut SERVICE_TABLE_ENTRYW;$/;" t +LPSESSION_INFO_0 vendor/winapi/src/um/lmshare.rs /^pub type LPSESSION_INFO_0 = *mut SESSION_INFO_0;$/;" t +LPSESSION_INFO_1 vendor/winapi/src/um/lmshare.rs /^pub type LPSESSION_INFO_1 = *mut SESSION_INFO_1;$/;" t +LPSESSION_INFO_10 vendor/winapi/src/um/lmshare.rs /^pub type LPSESSION_INFO_10 = *mut SESSION_INFO_10;$/;" t +LPSESSION_INFO_2 vendor/winapi/src/um/lmshare.rs /^pub type LPSESSION_INFO_2 = *mut SESSION_INFO_2;$/;" t +LPSESSION_INFO_502 vendor/winapi/src/um/lmshare.rs /^pub type LPSESSION_INFO_502 = *mut SESSION_INFO_502;$/;" t +LPSHARE_INFO_0 vendor/winapi/src/um/lmshare.rs /^pub type LPSHARE_INFO_0 = *mut SHARE_INFO_0;$/;" t +LPSHARE_INFO_1 vendor/winapi/src/um/lmshare.rs /^pub type LPSHARE_INFO_1 = *mut SHARE_INFO_1;$/;" t +LPSHARE_INFO_1004 vendor/winapi/src/um/lmshare.rs /^pub type LPSHARE_INFO_1004 = *mut SHARE_INFO_1004;$/;" t +LPSHARE_INFO_1005 vendor/winapi/src/um/lmshare.rs /^pub type LPSHARE_INFO_1005 = *mut SHARE_INFO_1005;$/;" t +LPSHARE_INFO_1006 vendor/winapi/src/um/lmshare.rs /^pub type LPSHARE_INFO_1006 = *mut SHARE_INFO_1006;$/;" t +LPSHARE_INFO_1501 vendor/winapi/src/um/lmshare.rs /^pub type LPSHARE_INFO_1501 = *mut SHARE_INFO_1501;$/;" t +LPSHARE_INFO_1503 vendor/winapi/src/um/lmshare.rs /^pub type LPSHARE_INFO_1503 = *mut SHARE_INFO_1503;$/;" t +LPSHARE_INFO_2 vendor/winapi/src/um/lmshare.rs /^pub type LPSHARE_INFO_2 = *mut SHARE_INFO_2;$/;" t +LPSHARE_INFO_501 vendor/winapi/src/um/lmshare.rs /^pub type LPSHARE_INFO_501 = *mut SHARE_INFO_501;$/;" t +LPSHARE_INFO_502 vendor/winapi/src/um/lmshare.rs /^pub type LPSHARE_INFO_502 = *mut SHARE_INFO_502;$/;" t +LPSHARE_INFO_503 vendor/winapi/src/um/lmshare.rs /^pub type LPSHARE_INFO_503 = *mut SHARE_INFO_503;$/;" t +LPSHELLEXECUTEINFOA vendor/winapi/src/um/shellapi.rs /^pub type LPSHELLEXECUTEINFOA = *mut SHELLEXECUTEINFOA;$/;" t +LPSHELLEXECUTEINFOW vendor/winapi/src/um/shellapi.rs /^pub type LPSHELLEXECUTEINFOW = *mut SHELLEXECUTEINFOW;$/;" t +LPSHELLHOOKINFO vendor/winapi/src/um/winuser.rs /^pub type LPSHELLHOOKINFO = *mut SHELLHOOKINFO;$/;" t +LPSHFILEOPSTRUCTA vendor/winapi/src/um/shellapi.rs /^pub type LPSHFILEOPSTRUCTA = *mut SHFILEOPSTRUCTA;$/;" t +LPSHFILEOPSTRUCTW vendor/winapi/src/um/shellapi.rs /^pub type LPSHFILEOPSTRUCTW = *mut SHFILEOPSTRUCTW;$/;" t +LPSHITEMID vendor/winapi/src/um/shtypes.rs /^pub type LPSHITEMID = *mut SHITEMID;$/;" t +LPSHNAMEMAPPINGA vendor/winapi/src/um/shellapi.rs /^pub type LPSHNAMEMAPPINGA = *mut SHNAMEMAPPINGA;$/;" t +LPSHNAMEMAPPINGW vendor/winapi/src/um/shellapi.rs /^pub type LPSHNAMEMAPPINGW = *mut SHNAMEMAPPINGW;$/;" t +LPSHQUERYRBINFO vendor/winapi/src/um/shellapi.rs /^pub type LPSHQUERYRBINFO = *mut SHQUERYRBINFO;$/;" t +LPSIP_DISPATCH_INFO vendor/winapi/src/um/mssip.rs /^pub type LPSIP_DISPATCH_INFO = *mut SIP_DISPATCH_INFO;$/;" t +LPSIP_SUBJECTINFO vendor/winapi/src/um/mssip.rs /^pub type LPSIP_SUBJECTINFO = *mut SIP_SUBJECTINFO;$/;" t +LPSIZE vendor/winapi/src/shared/windef.rs /^pub type LPSIZE = *mut SIZE;$/;" t +LPSIZEL vendor/winapi/src/shared/windef.rs /^pub type LPSIZEL = *mut SIZE;$/;" t +LPSOCKADDR vendor/winapi/src/shared/ws2def.rs /^pub type LPSOCKADDR = *mut SOCKADDR;$/;" t +LPSOCKADDR_IN vendor/winapi/src/um/winsock2.rs /^pub type LPSOCKADDR_IN = *mut SOCKADDR_IN;$/;" t +LPSOCKADDR_STORAGE vendor/winapi/src/shared/ws2def.rs /^pub type LPSOCKADDR_STORAGE = *mut SOCKADDR_STORAGE;$/;" t +LPSOCKADDR_STORAGE_LH vendor/winapi/src/shared/ws2def.rs /^pub type LPSOCKADDR_STORAGE_LH = *mut SOCKADDR_STORAGE_LH;$/;" t +LPSOCKADDR_STORAGE_XP vendor/winapi/src/shared/ws2def.rs /^pub type LPSOCKADDR_STORAGE_XP = *mut SOCKADDR_STORAGE_XP;$/;" t +LPSOCKET_ADDRESS vendor/winapi/src/shared/ws2def.rs /^pub type LPSOCKET_ADDRESS = *mut SOCKET_ADDRESS;$/;" t +LPSOCKET_ADDRESS_LIST vendor/winapi/src/shared/ws2def.rs /^pub type LPSOCKET_ADDRESS_LIST = *mut SOCKET_ADDRESS_LIST;$/;" t +LPSTACKFRAME vendor/winapi/src/um/dbghelp.rs /^pub type LPSTACKFRAME = *mut STACKFRAME;$/;" t +LPSTACKFRAME vendor/winapi/src/um/dbghelp.rs /^pub type LPSTACKFRAME = LPSTACKFRAME64;$/;" t +LPSTACKFRAME64 vendor/winapi/src/um/dbghelp.rs /^pub type LPSTACKFRAME64 = *mut STACKFRAME64;$/;" t +LPSTACKFRAME_EX vendor/winapi/src/um/dbghelp.rs /^pub type LPSTACKFRAME_EX = *mut STACKFRAME_EX;$/;" t +LPSTARTUPINFOA vendor/winapi/src/um/processthreadsapi.rs /^pub type LPSTARTUPINFOA = *mut STARTUPINFOA;$/;" t +LPSTARTUPINFOEXA vendor/winapi/src/um/winbase.rs /^pub type LPSTARTUPINFOEXA = *mut STARTUPINFOEXA;$/;" t +LPSTARTUPINFOEXW vendor/winapi/src/um/winbase.rs /^pub type LPSTARTUPINFOEXW = *mut STARTUPINFOEXW;$/;" t +LPSTARTUPINFOW vendor/winapi/src/um/processthreadsapi.rs /^pub type LPSTARTUPINFOW = *mut STARTUPINFOW;$/;" t +LPSTATURL vendor/winapi/src/um/urlhist.rs /^pub type LPSTATURL = *mut STATURL;$/;" t +LPSTAT_SERVER_0 vendor/winapi/src/um/lmstats.rs /^pub type LPSTAT_SERVER_0 = *mut STAT_SERVER_0;$/;" t +LPSTAT_WORKSTATION_0 vendor/winapi/src/um/lmstats.rs /^pub type LPSTAT_WORKSTATION_0 = *mut STAT_WORKSTATION_0;$/;" t +LPSTDMARSHALINFO vendor/winapi/src/um/objidlbase.rs /^pub type LPSTDMARSHALINFO = IStdMarshalInfo;$/;" t +LPSTD_ALERT vendor/winapi/src/um/lmalert.rs /^pub type LPSTD_ALERT = *mut STD_ALERT;$/;" t +LPSTR vendor/winapi/src/shared/ntdef.rs /^pub type LPSTR = *mut CHAR;$/;" t +LPSTR vendor/winapi/src/um/winnt.rs /^pub type LPSTR = *mut CHAR;$/;" t +LPSTREAM vendor/winapi/src/um/objidlbase.rs /^pub type LPSTREAM = *mut IStream;$/;" t +LPSTYLESTRUCT vendor/winapi/src/um/winuser.rs /^pub type LPSTYLESTRUCT = *mut STYLESTRUCT;$/;" t +LPSURROGATE vendor/winapi/src/um/objidlbase.rs /^pub type LPSURROGATE = *mut ISurrogate;$/;" t +LPSYNCHRONIZATION_BARRIER vendor/winapi/src/um/synchapi.rs /^pub type LPSYNCHRONIZATION_BARRIER = PRTL_BARRIER;$/;" t +LPSYSTEMTIME vendor/winapi/src/um/minwinbase.rs /^pub type LPSYSTEMTIME = *mut SYSTEMTIME;$/;" t +LPSYSTEM_INFO vendor/winapi/src/um/sysinfoapi.rs /^pub type LPSYSTEM_INFO = *mut SYSTEM_INFO;$/;" t +LPSYSTEM_POWER_STATUS vendor/winapi/src/um/winbase.rs /^pub type LPSYSTEM_POWER_STATUS = *mut SYSTEM_POWER_STATUS;$/;" t +LPTBADDBITMAP vendor/winapi/src/um/commctrl.rs /^pub type LPTBADDBITMAP = *mut TBADDBITMAP;$/;" t +LPTBBUTTON vendor/winapi/src/um/commctrl.rs /^pub type LPTBBUTTON = *mut TBBUTTON;$/;" t +LPTBBUTTONINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPTBBUTTONINFOA = *mut TBBUTTONINFOA;$/;" t +LPTBBUTTONINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPTBBUTTONINFOW = *mut TBBUTTONINFOW;$/;" t +LPTBINSERTMARK vendor/winapi/src/um/commctrl.rs /^pub type LPTBINSERTMARK = *mut TBINSERTMARK;$/;" t +LPTBMETRICS vendor/winapi/src/um/commctrl.rs /^pub type LPTBMETRICS = *mut TBMETRICS;$/;" t +LPTBNOTIFYA vendor/winapi/src/um/commctrl.rs /^pub type LPTBNOTIFYA = LPNMTOOLBARA;$/;" t +LPTBNOTIFYW vendor/winapi/src/um/commctrl.rs /^pub type LPTBNOTIFYW = LPNMTOOLBARW;$/;" t +LPTBREPLACEBITMAP vendor/winapi/src/um/commctrl.rs /^pub type LPTBREPLACEBITMAP = *mut TBREPLACEBITMAP;$/;" t +LPTBSAVEPARAMSA vendor/winapi/src/um/commctrl.rs /^pub type LPTBSAVEPARAMSA = *mut TBSAVEPARAMSA;$/;" t +LPTBSAVEPARAMSW vendor/winapi/src/um/commctrl.rs /^pub type LPTBSAVEPARAMSW = *mut TBSAVEPARAMSW;$/;" t +LPTCHITTESTINFO vendor/winapi/src/um/commctrl.rs /^pub type LPTCHITTESTINFO = *mut TCHITTESTINFO;$/;" t +LPTCITEMA vendor/winapi/src/um/commctrl.rs /^pub type LPTCITEMA = *mut TCITEMA;$/;" t +LPTCITEMHEADERA vendor/winapi/src/um/commctrl.rs /^pub type LPTCITEMHEADERA = *mut TCITEMHEADERA;$/;" t +LPTCITEMHEADERW vendor/winapi/src/um/commctrl.rs /^pub type LPTCITEMHEADERW = *mut TCITEMHEADERW;$/;" t +LPTCITEMW vendor/winapi/src/um/commctrl.rs /^pub type LPTCITEMW = *mut TCITEMW;$/;" t +LPTC_HITTESTINFO vendor/winapi/src/um/commctrl.rs /^pub type LPTC_HITTESTINFO = LPTCHITTESTINFO;$/;" t +LPTEXTMETRICA vendor/winapi/src/um/wingdi.rs /^pub type LPTEXTMETRICA = *mut TEXTMETRICA;$/;" t +LPTEXTMETRICW vendor/winapi/src/um/wingdi.rs /^pub type LPTEXTMETRICW = *mut TEXTMETRICW;$/;" t +LPTHREADENTRY32 vendor/winapi/src/um/tlhelp32.rs /^pub type LPTHREADENTRY32 = *mut THREADENTRY32;$/;" t +LPTHREAD_START_ROUTINE vendor/winapi/src/um/minwinbase.rs /^pub type LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE;$/;" t +LPTHUMBBUTTON vendor/winapi/src/um/shobjidl_core.rs /^pub type LPTHUMBBUTTON = *mut THUMBBUTTON;$/;" t +LPTIMECAPS vendor/winapi/src/um/mmsystem.rs /^pub type LPTIMECAPS = *mut TIMECAPS;$/;" t +LPTIMEVAL vendor/winapi/src/um/winsock2.rs /^pub type LPTIMEVAL = *mut timeval;$/;" t +LPTIME_OF_DAY_INFO vendor/winapi/src/um/lmremutl.rs /^pub type LPTIME_OF_DAY_INFO = *mut TIME_OF_DAY_INFO;$/;" t +LPTIME_ZONE_INFORMATION vendor/winapi/src/um/timezoneapi.rs /^pub type LPTIME_ZONE_INFORMATION = *mut TIME_ZONE_INFORMATION;$/;" t +LPTITLEBARINFO vendor/winapi/src/um/winuser.rs /^pub type LPTITLEBARINFO = *mut TITLEBARINFO;$/;" t +LPTITLEBARINFOEX vendor/winapi/src/um/winuser.rs /^pub type LPTITLEBARINFOEX = *mut TITLEBARINFOEX;$/;" t +LPTOOLINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPTOOLINFOA = LPTTTOOLINFOA;$/;" t +LPTOOLINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPTOOLINFOW = LPTTTOOLINFOW;$/;" t +LPTOOLTIPTEXTA vendor/winapi/src/um/commctrl.rs /^pub type LPTOOLTIPTEXTA = LPNMTTDISPINFOA;$/;" t +LPTOOLTIPTEXTW vendor/winapi/src/um/commctrl.rs /^pub type LPTOOLTIPTEXTW = LPNMTTDISPINFOW;$/;" t +LPTOP_LEVEL_EXCEPTION_FILTER vendor/winapi/src/um/errhandlingapi.rs /^pub type LPTOP_LEVEL_EXCEPTION_FILTER = PTOP_LEVEL_EXCEPTION_FILTER;$/;" t +LPTPMPARAMS vendor/winapi/src/um/winuser.rs /^pub type LPTPMPARAMS = *mut TPMPARAMS;$/;" t +LPTRACKMOUSEEVENT vendor/winapi/src/um/winuser.rs /^pub type LPTRACKMOUSEEVENT = *mut TRACKMOUSEEVENT;$/;" t +LPTRANSMIT_FILE_BUFFERS vendor/winapi/src/um/mswsock.rs /^pub type LPTRANSMIT_FILE_BUFFERS = *mut TRANSMIT_FILE_BUFFERS;$/;" t +LPTRANSMIT_PACKETS_ELEMENT vendor/winapi/src/um/mswsock.rs /^pub type LPTRANSMIT_PACKETS_ELEMENT = *mut TRANSMIT_PACKETS_ELEMENT;$/;" t +LPTRIVERTEX vendor/winapi/src/um/wingdi.rs /^pub type LPTRIVERTEX = *mut TRIVERTEX;$/;" t +LPTSTR vendor/winapi/src/shared/ntdef.rs /^pub type LPTSTR = LPSTR;$/;" t +LPTTGETTITLE vendor/winapi/src/um/commctrl.rs /^pub type LPTTGETTITLE = *mut TTGETTITLE;$/;" t +LPTTHITTESTINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPTTHITTESTINFOA = *mut TTHITTESTINFOA;$/;" t +LPTTHITTESTINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPTTHITTESTINFOW = *mut TTHITTESTINFOW;$/;" t +LPTTPOLYCURVE vendor/winapi/src/um/wingdi.rs /^pub type LPTTPOLYCURVE = *mut TTPOLYCURVE;$/;" t +LPTTPOLYGONHEADER vendor/winapi/src/um/wingdi.rs /^pub type LPTTPOLYGONHEADER = *mut TTPOLYGONHEADER;$/;" t +LPTTTOOLINFOA vendor/winapi/src/um/commctrl.rs /^pub type LPTTTOOLINFOA = *mut TTTOOLINFOA;$/;" t +LPTTTOOLINFOW vendor/winapi/src/um/commctrl.rs /^pub type LPTTTOOLINFOW = *mut TTTOOLINFOW;$/;" t +LPTVHITTESTINFO vendor/winapi/src/um/commctrl.rs /^pub type LPTVHITTESTINFO = *mut TVHITTESTINFO;$/;" t +LPTVINSERTSTRUCTA vendor/winapi/src/um/commctrl.rs /^pub type LPTVINSERTSTRUCTA = *mut TVINSERTSTRUCTA;$/;" t +LPTVINSERTSTRUCTW vendor/winapi/src/um/commctrl.rs /^pub type LPTVINSERTSTRUCTW = *mut TVINSERTSTRUCTW;$/;" t +LPTVITEMA vendor/winapi/src/um/commctrl.rs /^pub type LPTVITEMA = *mut TVITEMA;$/;" t +LPTVITEMEXA vendor/winapi/src/um/commctrl.rs /^pub type LPTVITEMEXA = *mut TVITEMEXA;$/;" t +LPTVITEMEXW vendor/winapi/src/um/commctrl.rs /^pub type LPTVITEMEXW = *mut TVITEMEXW;$/;" t +LPTVITEMW vendor/winapi/src/um/commctrl.rs /^pub type LPTVITEMW = *mut TVITEMW;$/;" t +LPTVSORTCB vendor/winapi/src/um/commctrl.rs /^pub type LPTVSORTCB = *mut TVSORTCB;$/;" t +LPTV_HITTESTINFO vendor/winapi/src/um/commctrl.rs /^pub type LPTV_HITTESTINFO = LPTVHITTESTINFO;$/;" t +LPTV_INSERTSTRUCTA vendor/winapi/src/um/commctrl.rs /^pub type LPTV_INSERTSTRUCTA = LPTVINSERTSTRUCTA;$/;" t +LPTV_INSERTSTRUCTW vendor/winapi/src/um/commctrl.rs /^pub type LPTV_INSERTSTRUCTW = LPTVINSERTSTRUCTW;$/;" t +LPTV_ITEMA vendor/winapi/src/um/commctrl.rs /^pub type LPTV_ITEMA = LPTVITEMA;$/;" t +LPTV_ITEMW vendor/winapi/src/um/commctrl.rs /^pub type LPTV_ITEMW = LPTVITEMW;$/;" t +LPTV_SORTCB vendor/winapi/src/um/commctrl.rs /^pub type LPTV_SORTCB = LPTVSORTCB;$/;" t +LPTYPEATTR vendor/winapi/src/um/oaidl.rs /^pub type LPTYPEATTR = *mut TYPEATTR;$/;" t +LPTYPECOMP vendor/winapi/src/um/oaidl.rs /^pub type LPTYPECOMP = *mut ITypeComp;$/;" t +LPUDACCEL vendor/winapi/src/um/commctrl.rs /^pub type LPUDACCEL = *mut UDACCEL;$/;" t +LPUINT vendor/winapi/src/um/imm.rs /^pub type LPUINT = *mut c_uint;$/;" t +LPUNIVERSAL_NAME_INFOA vendor/winapi/src/um/winnetwk.rs /^pub type LPUNIVERSAL_NAME_INFOA = *mut UNIVERSAL_NAME_INFOA;$/;" t +LPUNIVERSAL_NAME_INFOW vendor/winapi/src/um/winnetwk.rs /^pub type LPUNIVERSAL_NAME_INFOW = *mut UNIVERSAL_NAME_INFOW;$/;" t +LPUNKNOWN vendor/winapi/src/um/unknwnbase.rs /^pub type LPUNKNOWN = *mut IUnknown;$/;" t +LPUNLOAD_DLL_DEBUG_INFO vendor/winapi/src/um/minwinbase.rs /^pub type LPUNLOAD_DLL_DEBUG_INFO = *mut UNLOAD_DLL_DEBUG_INFO;$/;" t +LPURLHISTORYNOTIFY vendor/winapi/src/um/urlhist.rs /^pub type LPURLHISTORYNOTIFY = *mut IUrlHistoryNotify;$/;" t +LPURLHISTORYSTG vendor/winapi/src/um/urlhist.rs /^pub type LPURLHISTORYSTG = *mut IUrlHistoryStg;$/;" t +LPURLHISTORYSTG2 vendor/winapi/src/um/urlhist.rs /^pub type LPURLHISTORYSTG2 = *mut IUrlHistoryStg2;$/;" t +LPURL_COMPONENTS vendor/winapi/src/um/winhttp.rs /^pub type LPURL_COMPONENTS = *mut URL_COMPONENTS;$/;" t +LPURL_COMPONENTSA vendor/winapi/src/um/wininet.rs /^pub type LPURL_COMPONENTSA = *mut URL_COMPONENTSA;$/;" t +LPURL_COMPONENTSW vendor/winapi/src/um/winhttp.rs /^pub type LPURL_COMPONENTSW = LPURL_COMPONENTS;$/;" t +LPURL_COMPONENTSW vendor/winapi/src/um/wininet.rs /^pub type LPURL_COMPONENTSW = *mut URL_COMPONENTSW;$/;" t +LPUSER_INFO_0 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_0 = *mut USER_INFO_0;$/;" t +LPUSER_INFO_1 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1 = *mut USER_INFO_1;$/;" t +LPUSER_INFO_10 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_10 = *mut USER_INFO_10;$/;" t +LPUSER_INFO_1003 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1003 = *mut USER_INFO_1003;$/;" t +LPUSER_INFO_1005 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1005 = *mut USER_INFO_1005;$/;" t +LPUSER_INFO_1006 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1006 = *mut USER_INFO_1006;$/;" t +LPUSER_INFO_1007 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1007 = *mut USER_INFO_1007;$/;" t +LPUSER_INFO_1008 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1008 = *mut USER_INFO_1008;$/;" t +LPUSER_INFO_1009 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1009 = *mut USER_INFO_1009;$/;" t +LPUSER_INFO_1010 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1010 = *mut USER_INFO_1010;$/;" t +LPUSER_INFO_1011 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1011 = *mut USER_INFO_1011;$/;" t +LPUSER_INFO_1012 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1012 = *mut USER_INFO_1012;$/;" t +LPUSER_INFO_1013 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1013 = *mut USER_INFO_1013;$/;" t +LPUSER_INFO_1014 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1014 = *mut USER_INFO_1014;$/;" t +LPUSER_INFO_1017 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1017 = *mut USER_INFO_1017;$/;" t +LPUSER_INFO_1018 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1018 = *mut USER_INFO_1018;$/;" t +LPUSER_INFO_1020 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1020 = *mut USER_INFO_1020;$/;" t +LPUSER_INFO_1023 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1023 = *mut USER_INFO_1023;$/;" t +LPUSER_INFO_1024 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1024 = *mut USER_INFO_1024;$/;" t +LPUSER_INFO_1025 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1025 = *mut USER_INFO_1025;$/;" t +LPUSER_INFO_1051 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1051 = *mut USER_INFO_1051;$/;" t +LPUSER_INFO_1052 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1052 = *mut USER_INFO_1052;$/;" t +LPUSER_INFO_1053 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_1053 = *mut USER_INFO_1053;$/;" t +LPUSER_INFO_11 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_11 = *mut USER_INFO_11;$/;" t +LPUSER_INFO_2 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_2 = *mut USER_INFO_2;$/;" t +LPUSER_INFO_20 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_20 = *mut USER_INFO_20;$/;" t +LPUSER_INFO_21 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_21 = *mut USER_INFO_21;$/;" t +LPUSER_INFO_22 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_22 = *mut USER_INFO_22;$/;" t +LPUSER_INFO_23 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_23 = *mut USER_INFO_23;$/;" t +LPUSER_INFO_24 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_24 = *mut USER_INFO_24;$/;" t +LPUSER_INFO_3 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_3 = *mut USER_INFO_3;$/;" t +LPUSER_INFO_4 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_INFO_4 = *mut USER_INFO_4;$/;" t +LPUSER_MODALS_INFO_0 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_MODALS_INFO_0 = *mut USER_MODALS_INFO_0;$/;" t +LPUSER_MODALS_INFO_1 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_MODALS_INFO_1 = *mut USER_MODALS_INFO_1;$/;" t +LPUSER_MODALS_INFO_1001 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_MODALS_INFO_1001 = *mut USER_MODALS_INFO_1001;$/;" t +LPUSER_MODALS_INFO_1002 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_MODALS_INFO_1002 = *mut USER_MODALS_INFO_1002;$/;" t +LPUSER_MODALS_INFO_1003 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_MODALS_INFO_1003 = *mut USER_MODALS_INFO_1003;$/;" t +LPUSER_MODALS_INFO_1004 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_MODALS_INFO_1004 = *mut USER_MODALS_INFO_1004;$/;" t +LPUSER_MODALS_INFO_1005 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_MODALS_INFO_1005 = *mut USER_MODALS_INFO_1005;$/;" t +LPUSER_MODALS_INFO_1006 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_MODALS_INFO_1006 = *mut USER_MODALS_INFO_1006;$/;" t +LPUSER_MODALS_INFO_1007 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_MODALS_INFO_1007 = *mut USER_MODALS_INFO_1007;$/;" t +LPUSER_MODALS_INFO_2 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_MODALS_INFO_2 = *mut USER_MODALS_INFO_2;$/;" t +LPUSER_MODALS_INFO_3 vendor/winapi/src/um/lmaccess.rs /^pub type LPUSER_MODALS_INFO_3 = *mut USER_MODALS_INFO_3;$/;" t +LPUSER_OTHER_INFO vendor/winapi/src/um/lmalert.rs /^pub type LPUSER_OTHER_INFO = *mut USER_OTHER_INFO;$/;" t +LPUSE_INFO_0 vendor/winapi/src/um/lmuse.rs /^pub type LPUSE_INFO_0 = *mut USE_INFO_0;$/;" t +LPUSE_INFO_1 vendor/winapi/src/um/lmuse.rs /^pub type LPUSE_INFO_1 = *mut USE_INFO_1;$/;" t +LPUSE_INFO_2 vendor/winapi/src/um/lmuse.rs /^pub type LPUSE_INFO_2 = *mut USE_INFO_2;$/;" t +LPUSE_INFO_4 vendor/winapi/src/um/lmuse.rs /^pub type LPUSE_INFO_4 = *mut USE_INFO_4;$/;" t +LPUWSTR vendor/winapi/src/shared/ntdef.rs /^pub type LPUWSTR = *mut WCHAR; \/\/ Unaligned pointer$/;" t +LPUWSTR vendor/winapi/src/um/winnt.rs /^pub type LPUWSTR = *mut WCHAR; \/\/ Unaligned pointer$/;" t +LPVARDESC vendor/winapi/src/um/oaidl.rs /^pub type LPVARDESC = *mut VARDESC;$/;" t +LPVARIANT vendor/winapi/src/um/oaidl.rs /^pub type LPVARIANT = *mut VARIANT;$/;" t +LPVARIANTARG vendor/winapi/src/um/oaidl.rs /^pub type LPVARIANTARG = *mut VARIANT;$/;" t +LPVERSIONEDSTREAM vendor/winapi/src/um/propidl.rs /^pub type LPVERSIONEDSTREAM = *mut VERSIONEDSTREAM;$/;" t +LPVIDEOPARAMETERS vendor/winapi/src/shared/tvout.rs /^pub type LPVIDEOPARAMETERS = *mut VIDEOPARAMETERS;$/;" t +LPVOID vendor/winapi/src/shared/minwindef.rs /^pub type LPVOID = *mut c_void;$/;" t +LPWAVEFORMATEX vendor/winapi/src/um/mmsystem.rs /^pub type LPWAVEFORMATEX = *mut WAVEFORMATEX;$/;" t +LPWAVEHDR vendor/winapi/src/um/mmsystem.rs /^pub type LPWAVEHDR = *mut WAVEHDR;$/;" t +LPWAVEINCAPSW vendor/winapi/src/um/mmsystem.rs /^pub type LPWAVEINCAPSW = *mut WAVEINCAPSW;$/;" t +LPWAVEOUTCAPSW vendor/winapi/src/um/mmsystem.rs /^pub type LPWAVEOUTCAPSW = *mut WAVEOUTCAPSW;$/;" t +LPWCH vendor/winapi/src/shared/ntdef.rs /^pub type LPWCH = *mut WCHAR;$/;" t +LPWCH vendor/winapi/src/um/winnt.rs /^pub type LPWCH = *mut WCHAR;$/;" t +LPWCRANGE vendor/winapi/src/um/wingdi.rs /^pub type LPWCRANGE = *mut WCRANGE;$/;" t +LPWGLSWAP vendor/winapi/src/um/wingdi.rs /^pub type LPWGLSWAP = *mut WGLSWAP;$/;" t +LPWIN32_FILE_ATTRIBUTE_DATA vendor/winapi/src/um/fileapi.rs /^pub type LPWIN32_FILE_ATTRIBUTE_DATA = *mut WIN32_FILE_ATTRIBUTE_DATA;$/;" t +LPWIN32_FIND_DATAA vendor/winapi/src/um/minwinbase.rs /^pub type LPWIN32_FIND_DATAA = *mut WIN32_FIND_DATAA;$/;" t +LPWIN32_FIND_DATAW vendor/winapi/src/um/minwinbase.rs /^pub type LPWIN32_FIND_DATAW = *mut WIN32_FIND_DATAW;$/;" t +LPWINDOWINFO vendor/winapi/src/um/winuser.rs /^pub type LPWINDOWINFO = *mut WINDOWINFO;$/;" t +LPWINDOWPLACEMENT vendor/winapi/src/um/winuser.rs /^pub type LPWINDOWPLACEMENT = *mut WINDOWPLACEMENT;$/;" t +LPWINDOWPOS vendor/winapi/src/um/winuser.rs /^pub type LPWINDOWPOS = *mut WINDOWPOS;$/;" t +LPWINHTTP_ASYNC_RESULT vendor/winapi/src/um/winhttp.rs /^pub type LPWINHTTP_ASYNC_RESULT = *mut WINHTTP_ASYNC_RESULT;$/;" t +LPWINHTTP_PROXY_INFO vendor/winapi/src/um/winhttp.rs /^pub type LPWINHTTP_PROXY_INFO = *mut WINHTTP_PROXY_INFO;$/;" t +LPWINHTTP_PROXY_INFOW vendor/winapi/src/um/winhttp.rs /^pub type LPWINHTTP_PROXY_INFOW = LPWINHTTP_PROXY_INFO;$/;" t +LPWINHTTP_STATUS_CALLBACK vendor/winapi/src/um/winhttp.rs /^pub type LPWINHTTP_STATUS_CALLBACK = *mut WINHTTP_STATUS_CALLBACK;$/;" t +LPWKSTA_INFO_100 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_100 = *mut WKSTA_INFO_100;$/;" t +LPWKSTA_INFO_101 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_101 = *mut WKSTA_INFO_101;$/;" t +LPWKSTA_INFO_1010 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1010 = *mut WKSTA_INFO_1010;$/;" t +LPWKSTA_INFO_1011 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1011 = *mut WKSTA_INFO_1011;$/;" t +LPWKSTA_INFO_1012 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1012 = *mut WKSTA_INFO_1012;$/;" t +LPWKSTA_INFO_1013 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1013 = *mut WKSTA_INFO_1013;$/;" t +LPWKSTA_INFO_1018 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1018 = *mut WKSTA_INFO_1018;$/;" t +LPWKSTA_INFO_102 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_102 = *mut WKSTA_INFO_102;$/;" t +LPWKSTA_INFO_1023 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1023 = *mut WKSTA_INFO_1023;$/;" t +LPWKSTA_INFO_1027 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1027 = *mut WKSTA_INFO_1027;$/;" t +LPWKSTA_INFO_1028 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1028 = *mut WKSTA_INFO_1028;$/;" t +LPWKSTA_INFO_1032 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1032 = *mut WKSTA_INFO_1032;$/;" t +LPWKSTA_INFO_1033 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1033 = *mut WKSTA_INFO_1033;$/;" t +LPWKSTA_INFO_1041 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1041 = *mut WKSTA_INFO_1041;$/;" t +LPWKSTA_INFO_1042 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1042 = *mut WKSTA_INFO_1042;$/;" t +LPWKSTA_INFO_1043 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1043 = *mut WKSTA_INFO_1043;$/;" t +LPWKSTA_INFO_1044 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1044 = *mut WKSTA_INFO_1044;$/;" t +LPWKSTA_INFO_1045 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1045 = *mut WKSTA_INFO_1045;$/;" t +LPWKSTA_INFO_1046 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1046 = *mut WKSTA_INFO_1046;$/;" t +LPWKSTA_INFO_1047 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1047 = *mut WKSTA_INFO_1047;$/;" t +LPWKSTA_INFO_1048 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1048 = *mut WKSTA_INFO_1048;$/;" t +LPWKSTA_INFO_1049 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1049 = *mut WKSTA_INFO_1049;$/;" t +LPWKSTA_INFO_1050 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1050 = *mut WKSTA_INFO_1050;$/;" t +LPWKSTA_INFO_1051 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1051 = *mut WKSTA_INFO_1051;$/;" t +LPWKSTA_INFO_1052 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1052 = *mut WKSTA_INFO_1052;$/;" t +LPWKSTA_INFO_1053 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1053 = *mut WKSTA_INFO_1053;$/;" t +LPWKSTA_INFO_1054 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1054 = *mut WKSTA_INFO_1054;$/;" t +LPWKSTA_INFO_1055 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1055 = *mut WKSTA_INFO_1055;$/;" t +LPWKSTA_INFO_1056 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1056 = *mut WKSTA_INFO_1056;$/;" t +LPWKSTA_INFO_1057 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1057 = *mut WKSTA_INFO_1057;$/;" t +LPWKSTA_INFO_1058 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1058 = *mut WKSTA_INFO_1058;$/;" t +LPWKSTA_INFO_1059 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1059 = *mut WKSTA_INFO_1059;$/;" t +LPWKSTA_INFO_1060 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1060 = *mut WKSTA_INFO_1060;$/;" t +LPWKSTA_INFO_1061 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1061 = *mut WKSTA_INFO_1061;$/;" t +LPWKSTA_INFO_1062 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_1062 = *mut WKSTA_INFO_1062;$/;" t +LPWKSTA_INFO_302 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_302 = *mut WKSTA_INFO_302;$/;" t +LPWKSTA_INFO_402 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_402 = *mut WKSTA_INFO_402;$/;" t +LPWKSTA_INFO_502 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_INFO_502 = *mut WKSTA_INFO_502;$/;" t +LPWKSTA_TRANSPORT_INFO_0 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_TRANSPORT_INFO_0 = *mut WKSTA_TRANSPORT_INFO_0;$/;" t +LPWKSTA_USER_INFO_0 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_USER_INFO_0 = *mut WKSTA_USER_INFO_0;$/;" t +LPWKSTA_USER_INFO_1 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_USER_INFO_1 = *mut WKSTA_USER_INFO_1;$/;" t +LPWKSTA_USER_INFO_1101 vendor/winapi/src/um/lmwksta.rs /^pub type LPWKSTA_USER_INFO_1101 = *mut WKSTA_USER_INFO_1101;$/;" t +LPWNDCLASSA vendor/winapi/src/um/winuser.rs /^pub type LPWNDCLASSA = *mut WNDCLASSA;$/;" t +LPWNDCLASSEXA vendor/winapi/src/um/winuser.rs /^pub type LPWNDCLASSEXA = *mut WNDCLASSEXA;$/;" t +LPWNDCLASSEXW vendor/winapi/src/um/winuser.rs /^pub type LPWNDCLASSEXW = *mut WNDCLASSEXW;$/;" t +LPWNDCLASSW vendor/winapi/src/um/winuser.rs /^pub type LPWNDCLASSW = *mut WNDCLASSW;$/;" t +LPWORD vendor/winapi/src/shared/minwindef.rs /^pub type LPWORD = *mut WORD;$/;" t +LPWSABUF vendor/winapi/src/shared/ws2def.rs /^pub type LPWSABUF = *mut WSABUF;$/;" t +LPWSACMSGHDR vendor/winapi/src/shared/ws2def.rs /^pub type LPWSACMSGHDR = *mut WSACMSGHDR;$/;" t +LPWSACOMPLETION vendor/winapi/src/um/winsock2.rs /^pub type LPWSACOMPLETION = *mut WSACOMPLETION;$/;" t +LPWSACOMPLETIONTYPE vendor/winapi/src/um/winsock2.rs /^pub type LPWSACOMPLETIONTYPE = *mut WSACOMPLETIONTYPE;$/;" t +LPWSADATA vendor/winapi/src/um/winsock2.rs /^pub type LPWSADATA = *mut WSADATA;$/;" t +LPWSAECOMPARATOR vendor/winapi/src/um/winsock2.rs /^pub type LPWSAECOMPARATOR = *mut WSAECOMPARATOR;$/;" t +LPWSAESETSERVICEOP vendor/winapi/src/um/winsock2.rs /^pub type LPWSAESETSERVICEOP = *mut WSAESETSERVICEOP;$/;" t +LPWSAEVENT vendor/winapi/src/um/winsock2.rs /^pub type LPWSAEVENT = LPHANDLE;$/;" t +LPWSAMSG vendor/winapi/src/shared/ws2def.rs /^pub type LPWSAMSG = *mut WSAMSG;$/;" t +LPWSANAMESPACE_INFOA vendor/winapi/src/um/winsock2.rs /^pub type LPWSANAMESPACE_INFOA = *mut WSANAMESPACE_INFOA;$/;" t +LPWSANAMESPACE_INFOEXA vendor/winapi/src/um/winsock2.rs /^pub type LPWSANAMESPACE_INFOEXA = *mut WSANAMESPACE_INFOEXA;$/;" t +LPWSANAMESPACE_INFOEXW vendor/winapi/src/um/winsock2.rs /^pub type LPWSANAMESPACE_INFOEXW = *mut WSANAMESPACE_INFOEXW;$/;" t +LPWSANAMESPACE_INFOW vendor/winapi/src/um/winsock2.rs /^pub type LPWSANAMESPACE_INFOW = *mut WSANAMESPACE_INFOW;$/;" t +LPWSANETWORKEVENTS vendor/winapi/src/um/winsock2.rs /^pub type LPWSANETWORKEVENTS = *mut WSANETWORKEVENTS;$/;" t +LPWSANSCLASSINFOA vendor/winapi/src/um/winsock2.rs /^pub type LPWSANSCLASSINFOA = *mut WSANSCLASSINFOA;$/;" t +LPWSANSCLASSINFOW vendor/winapi/src/um/winsock2.rs /^pub type LPWSANSCLASSINFOW = *mut WSANSCLASSINFOW;$/;" t +LPWSAOVERLAPPED vendor/winapi/src/um/winsock2.rs /^pub type LPWSAOVERLAPPED = *mut OVERLAPPED;$/;" t +LPWSAPOLLDATA vendor/winapi/src/um/mswsock.rs /^pub type LPWSAPOLLDATA = *mut WSAPOLLDATA;$/;" t +LPWSAPOLLFD vendor/winapi/src/um/winsock2.rs /^pub type LPWSAPOLLFD = *mut WSAPOLLFD;$/;" t +LPWSAPROTOCOLCHAIN vendor/winapi/src/um/winsock2.rs /^pub type LPWSAPROTOCOLCHAIN = *mut WSAPROTOCOLCHAIN;$/;" t +LPWSAPROTOCOL_INFOA vendor/winapi/src/um/winsock2.rs /^pub type LPWSAPROTOCOL_INFOA = *mut WSAPROTOCOL_INFOA;$/;" t +LPWSAPROTOCOL_INFOW vendor/winapi/src/um/winsock2.rs /^pub type LPWSAPROTOCOL_INFOW = *mut WSAPROTOCOL_INFOW;$/;" t +LPWSAQUERYSET2A vendor/winapi/src/um/winsock2.rs /^pub type LPWSAQUERYSET2A = *mut WSAQUERYSET2A;$/;" t +LPWSAQUERYSET2W vendor/winapi/src/um/winsock2.rs /^pub type LPWSAQUERYSET2W = *mut WSAQUERYSET2W;$/;" t +LPWSAQUERYSETA vendor/winapi/src/um/winsock2.rs /^pub type LPWSAQUERYSETA = *mut WSAQUERYSETA;$/;" t +LPWSAQUERYSETW vendor/winapi/src/um/winsock2.rs /^pub type LPWSAQUERYSETW = *mut WSAQUERYSETW;$/;" t +LPWSASENDMSG vendor/winapi/src/um/mswsock.rs /^pub type LPWSASENDMSG = *mut WSASENDMSG;$/;" t +LPWSASERVICECLASSINFOA vendor/winapi/src/um/winsock2.rs /^pub type LPWSASERVICECLASSINFOA = *mut WSASERVICECLASSINFOA;$/;" t +LPWSASERVICECLASSINFOW vendor/winapi/src/um/winsock2.rs /^pub type LPWSASERVICECLASSINFOW = *mut WSASERVICECLASSINFOW;$/;" t +LPWSATHREADID vendor/winapi/src/um/ws2spi.rs /^pub type LPWSATHREADID = *mut WSATHREADID;$/;" t +LPWSAVERSION vendor/winapi/src/um/winsock2.rs /^pub type LPWSAVERSION = *mut WSAVERSION;$/;" t +LPWSPDATA vendor/winapi/src/um/ws2spi.rs /^pub type LPWSPDATA = *mut WSPDATA;$/;" t +LPWSPPROC_TABLE vendor/winapi/src/um/ws2spi.rs /^pub type LPWSPPROC_TABLE = *mut WSPPROC_TABLE;$/;" t +LPWSPUPCALLTABLE vendor/winapi/src/um/ws2spi.rs /^pub type LPWSPUPCALLTABLE = *mut WSPUPCALLTABLE;$/;" t +LPWSTR vendor/winapi/src/shared/ntdef.rs /^pub type LPWSTR = *mut WCHAR;$/;" t +LPWSTR vendor/winapi/src/um/winnt.rs /^pub type LPWSTR = *mut WCHAR;$/;" t +LPXFORM vendor/winapi/src/um/wingdi.rs /^pub type LPXFORM = *mut XFORM;$/;" t +LPtoDP vendor/winapi/src/um/wingdi.rs /^ pub fn LPtoDP($/;" f +LRESULT vendor/winapi/src/shared/minwindef.rs /^pub type LRESULT = LONG_PTR;$/;" t +LSAP_SE_ADT_PARAMETER_ARRAY_TRUE_SIZE vendor/winapi/src/um/ntlsa.rs /^pub fn LSAP_SE_ADT_PARAMETER_ARRAY_TRUE_SIZE($/;" f +LSA_ENUMERATION_HANDLE vendor/winapi/src/um/ntsecapi.rs /^pub type LSA_ENUMERATION_HANDLE = ULONG;$/;" t +LSA_HANDLE vendor/winapi/src/um/ntsecapi.rs /^pub type LSA_HANDLE = PVOID;$/;" t +LSA_LOOKUP_HANDLE vendor/winapi/src/um/lsalookup.rs /^pub type LSA_LOOKUP_HANDLE = PVOID;$/;" t +LSA_OPERATIONAL_MODE vendor/winapi/src/um/ntlsa.rs /^pub type LSA_OPERATIONAL_MODE = ULONG;$/;" t +LSA_SUCCESS vendor/winapi/src/um/ntlsa.rs /^pub fn LSA_SUCCESS(Error: NTSTATUS) -> bool {$/;" f +LSA_TOKEN_INFORMATION_V2 vendor/winapi/src/um/ntlsa.rs /^pub type LSA_TOKEN_INFORMATION_V2 = LSA_TOKEN_INFORMATION_V1;$/;" t +LSH expr.c /^#define LSH /;" d file: +LSTAT lib/readline/complete.c /^# define LSTAT /;" d file: +LSTATUS vendor/winapi/src/um/winreg.rs /^pub type LSTATUS = LONG;$/;" t +LT expr.c /^#define LT /;" d file: +LT test.c /^#define LT /;" d file: +LTCHARS_SET lib/readline/rltty.c /^#define LTCHARS_SET /;" d file: +LTLIBINTL Makefile.in /^LTLIBINTL = @LTLIBINTL@$/;" m +LTR vendor/unic-langid-impl/src/lib.rs /^ LTR,$/;" e enum:CharacterDirection +LTV_AGE lib/intl/Makefile.in /^LTV_AGE=3$/;" m +LTV_CURRENT lib/intl/Makefile.in /^LTV_CURRENT=5$/;" m +LTV_REVISION lib/intl/Makefile.in /^LTV_REVISION=0$/;" m +LUID_AND_ATTRIBUTES_ARRAY vendor/winapi/src/um/winnt.rs /^pub type LUID_AND_ATTRIBUTES_ARRAY = LUID_AND_ATTRIBUTES;$/;" t +LV_COLUMNA vendor/winapi/src/um/commctrl.rs /^pub type LV_COLUMNA = LVCOLUMNA;$/;" t +LV_COLUMNW vendor/winapi/src/um/commctrl.rs /^pub type LV_COLUMNW = LVCOLUMNW;$/;" t +LV_DISPINFOA vendor/winapi/src/um/commctrl.rs /^pub type LV_DISPINFOA = NMLVDISPINFOA;$/;" t +LV_DISPINFOW vendor/winapi/src/um/commctrl.rs /^pub type LV_DISPINFOW = NMLVDISPINFOW;$/;" t +LV_FINDINFOA vendor/winapi/src/um/commctrl.rs /^pub type LV_FINDINFOA = LVFINDINFOA;$/;" t +LV_FINDINFOW vendor/winapi/src/um/commctrl.rs /^pub type LV_FINDINFOW = LVFINDINFOW;$/;" t +LV_HITTESTINFO vendor/winapi/src/um/commctrl.rs /^pub type LV_HITTESTINFO = LVHITTESTINFO;$/;" t +LV_ITEMA vendor/winapi/src/um/commctrl.rs /^pub type LV_ITEMA = LVITEMA;$/;" t +LV_ITEMW vendor/winapi/src/um/commctrl.rs /^pub type LV_ITEMW = LVITEMW;$/;" t +LV_KEYDOWN vendor/winapi/src/um/commctrl.rs /^pub type LV_KEYDOWN = NMLVKEYDOWN;$/;" t +Label vendor/syn/src/expr.rs /^ impl Parse for Label {$/;" c module:parsing +Label vendor/syn/src/expr.rs /^ impl ToTokens for Label {$/;" c module:printing +Label vendor/syn/src/gen/clone.rs /^impl Clone for Label {$/;" c +Label vendor/syn/src/gen/debug.rs /^impl Debug for Label {$/;" c +Label vendor/syn/src/gen/eq.rs /^impl Eq for Label {}$/;" c +Label vendor/syn/src/gen/eq.rs /^impl PartialEq for Label {$/;" c +Label vendor/syn/src/gen/hash.rs /^impl Hash for Label {$/;" c +LangIdSubTags vendor/unic-langid-impl/src/bin/generate_likelysubtags.rs /^type LangIdSubTags = (Option, Option, Option);$/;" t +Language vendor/unic-langid-impl/src/subtags/language.rs /^impl FromStr for Language {$/;" c +Language vendor/unic-langid-impl/src/subtags/language.rs /^impl Language {$/;" c +Language vendor/unic-langid-impl/src/subtags/language.rs /^impl PartialEq<&str> for Language {$/;" c +Language vendor/unic-langid-impl/src/subtags/language.rs /^impl std::fmt::Display for Language {$/;" c +Language vendor/unic-langid-impl/src/subtags/language.rs /^impl TryFrom> for Language$/;" c +Language vendor/unic-langid-impl/src/subtags/language.rs /^pub struct Language(Option);$/;" s +LanguageIdentifier vendor/fluent-langneg/src/negotiate/likely_subtags.rs /^impl MockLikelySubtags for LanguageIdentifier {$/;" c +LanguageIdentifier vendor/unic-langid-impl/src/lib.rs /^impl AsRef for LanguageIdentifier {$/;" c +LanguageIdentifier vendor/unic-langid-impl/src/lib.rs /^impl FromStr for LanguageIdentifier {$/;" c +LanguageIdentifier vendor/unic-langid-impl/src/lib.rs /^impl LanguageIdentifier {$/;" c +LanguageIdentifier vendor/unic-langid-impl/src/lib.rs /^impl PartialEq<&str> for LanguageIdentifier {$/;" c +LanguageIdentifier vendor/unic-langid-impl/src/lib.rs /^impl std::fmt::Display for LanguageIdentifier {$/;" c +LanguageIdentifier vendor/unic-langid-impl/src/lib.rs /^pub struct LanguageIdentifier {$/;" s +LanguageIdentifier vendor/unic-langid-impl/src/serde.rs /^impl Serialize for LanguageIdentifier {$/;" c +LanguageIdentifier vendor/unic-langid-impl/src/serde.rs /^impl<'de> Deserialize<'de> for LanguageIdentifier {$/;" c +LanguageIdentifierError vendor/unic-langid-impl/src/errors.rs /^impl Display for LanguageIdentifierError {$/;" c +LanguageIdentifierError vendor/unic-langid-impl/src/errors.rs /^impl Error for LanguageIdentifierError {}$/;" c +LanguageIdentifierError vendor/unic-langid-impl/src/errors.rs /^impl From for LanguageIdentifierError {$/;" c +LanguageIdentifierError vendor/unic-langid-impl/src/errors.rs /^pub enum LanguageIdentifierError {$/;" g +LanguageIdentifierVisitor vendor/unic-langid-impl/src/serde.rs /^ impl<'de> serde::de::Visitor<'de> for LanguageIdentifierVisitor {$/;" c method:LanguageIdentifier::deserialize +LanguageIdentifierVisitor vendor/unic-langid-impl/src/serde.rs /^ struct LanguageIdentifierVisitor;$/;" s method:LanguageIdentifier::deserialize +Large vendor/memchr/src/memmem/twoway.rs /^ Large { shift: usize },$/;" e enum:Shift +Lat vendor/nix/src/sys/socket/addr.rs /^ Lat = libc::AF_LAT,$/;" e enum:AddressFamily +Lazy vendor/futures-util/src/future/lazy.rs /^impl FusedFuture for Lazy$/;" c +Lazy vendor/futures-util/src/future/lazy.rs /^impl Future for Lazy$/;" c +Lazy vendor/futures-util/src/future/lazy.rs /^impl Unpin for Lazy {}$/;" c +Lazy vendor/futures-util/src/future/lazy.rs /^pub struct Lazy {$/;" s +Lazy vendor/lazy_static/src/core_lazy.rs /^impl Lazy {$/;" c +Lazy vendor/lazy_static/src/core_lazy.rs /^pub struct Lazy(Once);$/;" s +Lazy vendor/lazy_static/src/inline_lazy.rs /^impl Lazy {$/;" c +Lazy vendor/lazy_static/src/inline_lazy.rs /^pub struct Lazy(Cell>, Once);$/;" s +Lazy vendor/lazy_static/src/inline_lazy.rs /^unsafe impl Sync for Lazy {}$/;" c +Lazy vendor/once_cell/src/lib.rs /^ impl T> Deref for Lazy {$/;" c module:sync +Lazy vendor/once_cell/src/lib.rs /^ impl T> Deref for Lazy {$/;" c module:unsync +Lazy vendor/once_cell/src/lib.rs /^ impl T> DerefMut for Lazy {$/;" c module:sync +Lazy vendor/once_cell/src/lib.rs /^ impl T> DerefMut for Lazy {$/;" c module:unsync +Lazy vendor/once_cell/src/lib.rs /^ impl T> Lazy {$/;" c module:sync +Lazy vendor/once_cell/src/lib.rs /^ impl T> Lazy {$/;" c module:unsync +Lazy vendor/once_cell/src/lib.rs /^ impl RefUnwindSafe for Lazy where OnceCell: RefUnwindSafe {}$/;" c module:sync +Lazy vendor/once_cell/src/lib.rs /^ impl RefUnwindSafe for Lazy where OnceCell: RefUnwindSafe {}$/;" c module:unsync +Lazy vendor/once_cell/src/lib.rs /^ impl Lazy {$/;" c module:sync +Lazy vendor/once_cell/src/lib.rs /^ impl Lazy {$/;" c module:unsync +Lazy vendor/once_cell/src/lib.rs /^ impl Default for Lazy {$/;" c module:sync +Lazy vendor/once_cell/src/lib.rs /^ impl Default for Lazy {$/;" c module:unsync +Lazy vendor/once_cell/src/lib.rs /^ impl fmt::Debug for Lazy {$/;" c module:sync +Lazy vendor/once_cell/src/lib.rs /^ impl fmt::Debug for Lazy {$/;" c module:unsync +Lazy vendor/once_cell/src/lib.rs /^ pub struct Lazy T> {$/;" s module:sync +Lazy vendor/once_cell/src/lib.rs /^ pub struct Lazy T> {$/;" s module:unsync +Lazy vendor/once_cell/src/lib.rs /^ unsafe impl Sync for Lazy where OnceCell: Sync {}$/;" c module:sync +LazyAttrTokenStream vendor/syn/tests/common/eq.rs /^impl SpanlessEq for LazyAttrTokenStream {$/;" c +LazyStatic vendor/lazy_static/src/lib.rs /^pub trait LazyStatic {$/;" i +Learn the FTL syntax vendor/fluent-bundle/README.md /^Learn the FTL syntax$/;" s chapter:Fluent +Learn the FTL syntax vendor/fluent-fallback/README.md /^Learn the FTL syntax$/;" s chapter:Fluent +Learn the FTL syntax vendor/fluent-resmgr/README.md /^Learn the FTL syntax$/;" s chapter:Fluent Resource Manager +Learn the FTL syntax vendor/fluent-syntax/README.md /^Learn the FTL syntax$/;" s chapter:Fluent Syntax +Learn the FTL syntax vendor/fluent/README.md /^Learn the FTL syntax$/;" s chapter:Fluent +LeaveCriticalPolicySection vendor/winapi/src/um/userenv.rs /^ pub fn LeaveCriticalPolicySection($/;" f +LeaveCriticalSection vendor/winapi/src/um/synchapi.rs /^ pub fn LeaveCriticalSection($/;" f +LeaveCriticalSectionWhenCallbackReturns vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn LeaveCriticalSectionWhenCallbackReturns($/;" f +Left vendor/futures-util/src/future/either.rs /^ Left(\/* #[pin] *\/ A),$/;" e enum:Either +Left vendor/futures-util/src/stream/select_with_strategy.rs /^ Left,$/;" e enum:PollNext +LeftFinished vendor/futures-util/src/stream/select_with_strategy.rs /^ LeftFinished,$/;" e enum:InternalState +LetCmd builtins_rust/exec_cmd/src/lib.rs /^ LetCmd,$/;" e enum:CMDType +LetComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for LetComand {$/;" c +LetComand builtins_rust/exec_cmd/src/lib.rs /^struct LetComand;$/;" s +Level vendor/fluent-syntax/src/parser/comment.rs /^pub(super) enum Level {$/;" g +LexError vendor/proc-macro2/src/fallback.rs /^impl Display for LexError {$/;" c +LexError vendor/proc-macro2/src/fallback.rs /^impl LexError {$/;" c +LexError vendor/proc-macro2/src/fallback.rs /^pub(crate) struct LexError {$/;" s +LexError vendor/proc-macro2/src/lib.rs /^impl Debug for LexError {$/;" c +LexError vendor/proc-macro2/src/lib.rs /^impl Display for LexError {$/;" c +LexError vendor/proc-macro2/src/lib.rs /^impl Error for LexError {}$/;" c +LexError vendor/proc-macro2/src/lib.rs /^impl LexError {$/;" c +LexError vendor/proc-macro2/src/lib.rs /^pub struct LexError {$/;" s +LexError vendor/proc-macro2/src/wrapper.rs /^impl Debug for LexError {$/;" c +LexError vendor/proc-macro2/src/wrapper.rs /^impl Display for LexError {$/;" c +LexError vendor/proc-macro2/src/wrapper.rs /^impl From for LexError {$/;" c +LexError vendor/proc-macro2/src/wrapper.rs /^impl From for LexError {$/;" c +LexError vendor/proc-macro2/src/wrapper.rs /^impl LexError {$/;" c +LexError vendor/proc-macro2/src/wrapper.rs /^pub(crate) enum LexError {$/;" g +LibcAiocb vendor/nix/src/sys/aio.rs /^struct LibcAiocb(libc::aiocb);$/;" s +LibcAiocb vendor/nix/src/sys/aio.rs /^unsafe impl Send for LibcAiocb {}$/;" c +LibcAiocb vendor/nix/src/sys/aio.rs /^unsafe impl Sync for LibcAiocb {}$/;" c +Library vendor/libloading/src/os/unix/mod.rs /^impl Drop for Library {$/;" c +Library vendor/libloading/src/os/unix/mod.rs /^impl Library {$/;" c +Library vendor/libloading/src/os/unix/mod.rs /^impl fmt::Debug for Library {$/;" c +Library vendor/libloading/src/os/unix/mod.rs /^pub struct Library {$/;" s +Library vendor/libloading/src/os/unix/mod.rs /^unsafe impl Send for Library {}$/;" c +Library vendor/libloading/src/os/unix/mod.rs /^unsafe impl Sync for Library {}$/;" c +Library vendor/libloading/src/os/windows/mod.rs /^impl Drop for Library {$/;" c +Library vendor/libloading/src/os/windows/mod.rs /^impl Library {$/;" c +Library vendor/libloading/src/os/windows/mod.rs /^impl fmt::Debug for Library {$/;" c +Library vendor/libloading/src/os/windows/mod.rs /^pub struct Library(HMODULE);$/;" s +Library vendor/libloading/src/os/windows/mod.rs /^unsafe impl Send for Library {}$/;" c +Library vendor/libloading/src/os/windows/mod.rs /^unsafe impl Sync for Library {}$/;" c +Library vendor/libloading/src/safe.rs /^impl From for imp::Library {$/;" c +Library vendor/libloading/src/safe.rs /^impl From for Library {$/;" c +Library vendor/libloading/src/safe.rs /^impl Library {$/;" c +Library vendor/libloading/src/safe.rs /^impl fmt::Debug for Library {$/;" c +Library vendor/libloading/src/safe.rs /^pub struct Library(imp::Library);$/;" s +Library vendor/libloading/src/safe.rs /^unsafe impl Send for Library {}$/;" c +Library vendor/libloading/src/safe.rs /^unsafe impl Sync for Library {}$/;" c +License README.md /^## License$/;" s chapter:utshell +License vendor/async-trait/README.md /^#### License$/;" t section:Async trait methods""Dyn traits +License vendor/autocfg/README.md /^## License$/;" s chapter:autocfg +License vendor/cfg-if/README.md /^# License$/;" c +License vendor/futures-channel/README.md /^## License$/;" s chapter:futures-channel +License vendor/futures-core/README.md /^## License$/;" s chapter:futures-core +License vendor/futures-executor/README.md /^## License$/;" s chapter:futures-executor +License vendor/futures-io/README.md /^## License$/;" s chapter:futures-io +License vendor/futures-sink/README.md /^## License$/;" s chapter:futures-sink +License vendor/futures-task/README.md /^## License$/;" s chapter:futures-task +License vendor/futures-util/README.md /^## License$/;" s chapter:futures-util +License vendor/futures/README.md /^## License$/;" s +License vendor/lazy_static/README.md /^## License$/;" s chapter:Example +License vendor/libc/README.md /^## License$/;" s chapter:libc - Raw FFI bindings to platforms' system libraries +License vendor/nix/README.md /^## License$/;" s chapter:Rust bindings to *nix APIs +License vendor/pin-project-lite/README.md /^## License$/;" s chapter:pin-project-lite +License vendor/pin-utils/README.md /^# License$/;" c +License vendor/proc-macro2/README.md /^#### License$/;" t section:proc-macro2""Unstable features +License vendor/quote/README.md /^#### License$/;" t section:Rust Quasi-Quoting""Non-macro code generators +License vendor/self_cell/README.md /^## License$/;" s chapter:`self_cell!` +License vendor/slab/README.md /^## License$/;" s chapter:Slab +License vendor/syn/README.md /^#### License$/;" t section:Parser for Rust source code""Proc macro shim +License vendor/thiserror/README.md /^#### License$/;" t section:derive(Error)""Comparison to anyhow +License vendor/tinystr/README.md /^#### License$/;" t section:tinystr [![crates.io](http://meritbadge.herokuapp.com/tinystr)](https://crates.io/crates/tinystr) [![Build Status](https://travis-ci.org/zbraniecki/tinystr.svg?branch=master)](https://travis-ci.org/zbraniecki/tinystr) [![Coverage Status](https://coveralls.io/repos/github/zbraniecki/tinystr/badge.svg?branch=master)](https://coveralls.io/github/zbraniecki/tinystr?branch=master)""Status +License vendor/unicode-ident/README.md /^## License$/;" s chapter:Unicode ident +Lifetime vendor/quote/src/runtime.rs /^ impl<'a> Iterator for Lifetime<'a> {$/;" c function:push_lifetime +Lifetime vendor/quote/src/runtime.rs /^ impl<'a> Iterator for Lifetime<'a> {$/;" c function:push_lifetime_spanned +Lifetime vendor/quote/src/runtime.rs /^ struct Lifetime<'a> {$/;" s function:push_lifetime +Lifetime vendor/quote/src/runtime.rs /^ struct Lifetime<'a> {$/;" s function:push_lifetime_spanned +Lifetime vendor/syn/src/gen/debug.rs /^impl Debug for Lifetime {$/;" c +Lifetime vendor/syn/src/lifetime.rs /^ impl Parse for Lifetime {$/;" c module:parsing +Lifetime vendor/syn/src/lifetime.rs /^ impl ToTokens for Lifetime {$/;" c module:printing +Lifetime vendor/syn/src/lifetime.rs /^impl Clone for Lifetime {$/;" c +Lifetime vendor/syn/src/lifetime.rs /^impl Display for Lifetime {$/;" c +Lifetime vendor/syn/src/lifetime.rs /^impl Eq for Lifetime {}$/;" c +Lifetime vendor/syn/src/lifetime.rs /^impl Hash for Lifetime {$/;" c +Lifetime vendor/syn/src/lifetime.rs /^impl Lifetime {$/;" c +Lifetime vendor/syn/src/lifetime.rs /^impl Ord for Lifetime {$/;" c +Lifetime vendor/syn/src/lifetime.rs /^impl PartialEq for Lifetime {$/;" c +Lifetime vendor/syn/src/lifetime.rs /^impl PartialOrd for Lifetime {$/;" c +Lifetime vendor/syn/src/lifetime.rs /^pub fn Lifetime(marker: lookahead::TokenMarker) -> Lifetime {$/;" f +Lifetime vendor/syn/src/lifetime.rs /^pub struct Lifetime {$/;" s +LifetimeDef vendor/syn/src/gen/clone.rs /^impl Clone for LifetimeDef {$/;" c +LifetimeDef vendor/syn/src/gen/debug.rs /^impl Debug for LifetimeDef {$/;" c +LifetimeDef vendor/syn/src/gen/eq.rs /^impl Eq for LifetimeDef {}$/;" c +LifetimeDef vendor/syn/src/gen/eq.rs /^impl PartialEq for LifetimeDef {$/;" c +LifetimeDef vendor/syn/src/gen/hash.rs /^impl Hash for LifetimeDef {$/;" c +LifetimeDef vendor/syn/src/generics.rs /^ impl Parse for LifetimeDef {$/;" c module:parsing +LifetimeDef vendor/syn/src/generics.rs /^ impl ToTokens for LifetimeDef {$/;" c module:printing +LifetimeDef vendor/syn/src/generics.rs /^impl LifetimeDef {$/;" c +Lifetimes vendor/syn/src/generics.rs /^impl<'a> Iterator for Lifetimes<'a> {$/;" c +Lifetimes vendor/syn/src/generics.rs /^pub struct Lifetimes<'a>(Iter<'a, GenericParam>);$/;" s +Lifetimes vendor/syn/tests/test_round_trip.rs /^ Lifetimes,$/;" e enum:normalize::NormalizeVisitor::visit_angle_bracketed_parameter_data::Group +Lifetimes vendor/syn/tests/test_round_trip.rs /^ Lifetimes,$/;" e enum:normalize::NormalizeVisitor::visit_generics::Group +LifetimesMut vendor/syn/src/generics.rs /^impl<'a> Iterator for LifetimesMut<'a> {$/;" c +LifetimesMut vendor/syn/src/generics.rs /^pub struct LifetimesMut<'a>(IterMut<'a, GenericParam>);$/;" s +LineColumn vendor/proc-macro2/src/fallback.rs /^pub(crate) struct LineColumn {$/;" s +LineColumn vendor/proc-macro2/src/lib.rs /^impl Ord for LineColumn {$/;" c +LineColumn vendor/proc-macro2/src/lib.rs /^impl PartialOrd for LineColumn {$/;" c +LineColumn vendor/proc-macro2/src/lib.rs /^pub struct LineColumn {$/;" s +LineColumn vendor/proc-macro2/src/wrapper.rs /^pub(crate) struct LineColumn {$/;" s +LineDDA vendor/winapi/src/um/wingdi.rs /^ pub fn LineDDA($/;" f +LineFeed vendor/fluent-syntax/src/parser/pattern.rs /^ LineFeed,$/;" e enum:TextElementTermination +LineStart vendor/fluent-syntax/src/parser/pattern.rs /^ LineStart,$/;" e enum:TextElementPosition +LineTo vendor/winapi/src/um/wingdi.rs /^ pub fn LineTo($/;" f +LineWriter vendor/futures-util/src/io/line_writer.rs /^impl AsyncWrite for LineWriter {$/;" c +LineWriter vendor/futures-util/src/io/line_writer.rs /^impl LineWriter {$/;" c +Lines vendor/futures-util/src/io/lines.rs /^impl Lines {$/;" c +Lines vendor/futures-util/src/io/lines.rs /^impl Stream for Lines {$/;" c +Link vendor/nix/src/sys/socket/addr.rs /^ Link = libc::AF_LINK,$/;" e enum:AddressFamily +Link vendor/nix/src/sys/socket/addr.rs /^ Link(LinkAddr),$/;" e enum:SockAddr +ListEntry32To64 vendor/winapi/src/shared/ntdef.rs /^pub unsafe fn ListEntry32To64(l32: PLIST_ENTRY32, l64: PLIST_ENTRY64) {$/;" f +ListEntry64To32 vendor/winapi/src/shared/ntdef.rs /^pub unsafe fn ListEntry64To32(l64: PLIST_ENTRY64, l32: PLIST_ENTRY32) {$/;" f +Lit vendor/syn/src/gen/clone.rs /^impl Clone for Lit {$/;" c +Lit vendor/syn/src/gen/debug.rs /^impl Debug for Lit {$/;" c +Lit vendor/syn/src/gen/eq.rs /^impl Eq for Lit {}$/;" c +Lit vendor/syn/src/gen/eq.rs /^impl PartialEq for Lit {$/;" c +Lit vendor/syn/src/gen/hash.rs /^impl Hash for Lit {$/;" c +Lit vendor/syn/src/lit.rs /^ impl Lit {$/;" c module:value +Lit vendor/syn/src/lit.rs /^ impl Parse for Lit {$/;" c module:parsing +Lit vendor/syn/src/lit.rs /^pub fn Lit(marker: lookahead::TokenMarker) -> Lit {$/;" f +LitBool vendor/syn/src/gen/clone.rs /^impl Clone for LitBool {$/;" c +LitBool vendor/syn/src/gen/eq.rs /^impl Eq for LitBool {}$/;" c +LitBool vendor/syn/src/gen/eq.rs /^impl PartialEq for LitBool {$/;" c +LitBool vendor/syn/src/gen/hash.rs /^impl Hash for LitBool {$/;" c +LitBool vendor/syn/src/lit.rs /^ impl Debug for LitBool {$/;" c module:debug_impls +LitBool vendor/syn/src/lit.rs /^ impl Parse for LitBool {$/;" c module:parsing +LitBool vendor/syn/src/lit.rs /^ impl ToTokens for LitBool {$/;" c module:printing +LitBool vendor/syn/src/lit.rs /^impl LitBool {$/;" c +LitBool vendor/syn/src/lit.rs /^pub fn LitBool(marker: lookahead::TokenMarker) -> LitBool {$/;" f +LitByte vendor/syn/src/gen/eq.rs /^impl Eq for LitByte {}$/;" c +LitByte vendor/syn/src/lit.rs /^ impl Debug for LitByte {$/;" c module:debug_impls +LitByte vendor/syn/src/lit.rs /^ impl Parse for LitByte {$/;" c module:parsing +LitByte vendor/syn/src/lit.rs /^ impl ToTokens for LitByte {$/;" c module:printing +LitByte vendor/syn/src/lit.rs /^impl LitByte {$/;" c +LitByteStr vendor/syn/src/gen/eq.rs /^impl Eq for LitByteStr {}$/;" c +LitByteStr vendor/syn/src/lit.rs /^ impl Debug for LitByteStr {$/;" c module:debug_impls +LitByteStr vendor/syn/src/lit.rs /^ impl Parse for LitByteStr {$/;" c module:parsing +LitByteStr vendor/syn/src/lit.rs /^ impl ToTokens for LitByteStr {$/;" c module:printing +LitByteStr vendor/syn/src/lit.rs /^impl LitByteStr {$/;" c +LitChar vendor/syn/src/gen/eq.rs /^impl Eq for LitChar {}$/;" c +LitChar vendor/syn/src/lit.rs /^ impl Debug for LitChar {$/;" c module:debug_impls +LitChar vendor/syn/src/lit.rs /^ impl Parse for LitChar {$/;" c module:parsing +LitChar vendor/syn/src/lit.rs /^ impl ToTokens for LitChar {$/;" c module:printing +LitChar vendor/syn/src/lit.rs /^impl LitChar {$/;" c +LitFloat vendor/syn/src/gen/eq.rs /^impl Eq for LitFloat {}$/;" c +LitFloat vendor/syn/src/lit.rs /^ impl Debug for LitFloat {$/;" c module:debug_impls +LitFloat vendor/syn/src/lit.rs /^ impl Parse for LitFloat {$/;" c module:parsing +LitFloat vendor/syn/src/lit.rs /^ impl ToTokens for LitFloat {$/;" c module:printing +LitFloat vendor/syn/src/lit.rs /^impl Display for LitFloat {$/;" c +LitFloat vendor/syn/src/lit.rs /^impl From for LitFloat {$/;" c +LitFloat vendor/syn/src/lit.rs /^impl LitFloat {$/;" c +LitFloatRepr vendor/syn/src/lit.rs /^impl Clone for LitFloatRepr {$/;" c +LitFloatRepr vendor/syn/src/lit.rs /^struct LitFloatRepr {$/;" s +LitInt vendor/syn/src/gen/eq.rs /^impl Eq for LitInt {}$/;" c +LitInt vendor/syn/src/lit.rs /^ impl Debug for LitInt {$/;" c module:debug_impls +LitInt vendor/syn/src/lit.rs /^ impl Parse for LitInt {$/;" c module:parsing +LitInt vendor/syn/src/lit.rs /^ impl ToTokens for LitInt {$/;" c module:printing +LitInt vendor/syn/src/lit.rs /^impl Display for LitInt {$/;" c +LitInt vendor/syn/src/lit.rs /^impl From for LitInt {$/;" c +LitInt vendor/syn/src/lit.rs /^impl LitInt {$/;" c +LitIntRepr vendor/syn/src/lit.rs /^impl Clone for LitIntRepr {$/;" c +LitIntRepr vendor/syn/src/lit.rs /^struct LitIntRepr {$/;" s +LitRepr vendor/syn/src/lit.rs /^impl Clone for LitRepr {$/;" c +LitRepr vendor/syn/src/lit.rs /^struct LitRepr {$/;" s +LitStr vendor/syn/src/gen/eq.rs /^impl Eq for LitStr {}$/;" c +LitStr vendor/syn/src/lit.rs /^ impl Debug for LitStr {$/;" c module:debug_impls +LitStr vendor/syn/src/lit.rs /^ impl Parse for LitStr {$/;" c module:parsing +LitStr vendor/syn/src/lit.rs /^ impl ToTokens for LitStr {$/;" c module:printing +LitStr vendor/syn/src/lit.rs /^impl LitStr {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/gen.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/mod.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/mod.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/mod.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/mod.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/mod.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/mod.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/mod.rs /^impl Debug for Lite {$/;" c +Lite vendor/syn/tests/debug/mod.rs /^impl<'a, T> Debug for Lite<&'a T>$/;" c +Lite vendor/syn/tests/debug/mod.rs /^impl Debug for Lite>$/;" c +Lite vendor/syn/tests/debug/mod.rs /^impl Deref for Lite {$/;" c +Lite vendor/syn/tests/debug/mod.rs /^impl Debug for Lite>$/;" c +Lite vendor/syn/tests/debug/mod.rs /^impl Debug for Lite>$/;" c +Lite vendor/syn/tests/debug/mod.rs /^pub fn Lite(value: &T) -> &Lite {$/;" f +Lite vendor/syn/tests/debug/mod.rs /^pub struct Lite {$/;" s +Literal vendor/proc-macro2/src/fallback.rs /^impl Debug for Literal {$/;" c method:Literal::byte_string +Literal vendor/proc-macro2/src/fallback.rs /^impl Display for Literal {$/;" c method:Literal::byte_string +Literal vendor/proc-macro2/src/fallback.rs /^impl FromStr for Literal {$/;" c method:Literal::byte_string +Literal vendor/proc-macro2/src/fallback.rs /^impl Literal {$/;" c +Literal vendor/proc-macro2/src/fallback.rs /^pub(crate) struct Literal {$/;" s +Literal vendor/proc-macro2/src/lib.rs /^ Literal(Literal),$/;" e enum:TokenTree +Literal vendor/proc-macro2/src/lib.rs /^impl Debug for Literal {$/;" c +Literal vendor/proc-macro2/src/lib.rs /^impl Display for Literal {$/;" c +Literal vendor/proc-macro2/src/lib.rs /^impl FromStr for Literal {$/;" c +Literal vendor/proc-macro2/src/lib.rs /^impl Literal {$/;" c +Literal vendor/proc-macro2/src/lib.rs /^pub struct Literal {$/;" s +Literal vendor/proc-macro2/src/wrapper.rs /^impl Debug for Literal {$/;" c +Literal vendor/proc-macro2/src/wrapper.rs /^impl Display for Literal {$/;" c +Literal vendor/proc-macro2/src/wrapper.rs /^impl From for Literal {$/;" c +Literal vendor/proc-macro2/src/wrapper.rs /^impl FromStr for Literal {$/;" c +Literal vendor/proc-macro2/src/wrapper.rs /^impl Literal {$/;" c +Literal vendor/proc-macro2/src/wrapper.rs /^pub(crate) enum Literal {$/;" g +Literal vendor/quote/src/to_tokens.rs /^impl ToTokens for Literal {$/;" c +Literal vendor/syn/src/buffer.rs /^ Literal(Literal),$/;" e enum:Entry +Literal vendor/syn/src/parse.rs /^impl Parse for Literal {$/;" c +Llc vendor/nix/src/sys/socket/addr.rs /^ Llc = libc::AF_LLC,$/;" e enum:AddressFamily +Lmid_t vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^pub type Lmid_t = ::c_long;$/;" t +LoadAcceleratorsA vendor/winapi/src/um/winuser.rs /^ pub fn LoadAcceleratorsA($/;" f +LoadAcceleratorsW vendor/winapi/src/um/winuser.rs /^ pub fn LoadAcceleratorsW($/;" f +LoadBitmapA vendor/winapi/src/um/winuser.rs /^ pub fn LoadBitmapA($/;" f +LoadBitmapW vendor/winapi/src/um/winuser.rs /^ pub fn LoadBitmapW($/;" f +LoadCursorA vendor/winapi/src/um/winuser.rs /^ pub fn LoadCursorA($/;" f +LoadCursorFromFileA vendor/winapi/src/um/winuser.rs /^ pub fn LoadCursorFromFileA($/;" f +LoadCursorFromFileW vendor/winapi/src/um/winuser.rs /^ pub fn LoadCursorFromFileW($/;" f +LoadCursorW vendor/winapi/src/um/winuser.rs /^ pub fn LoadCursorW($/;" f +LoadEnclaveData vendor/winapi/src/um/enclaveapi.rs /^ pub fn LoadEnclaveData($/;" f +LoadEnclaveImageA vendor/winapi/src/um/enclaveapi.rs /^ pub fn LoadEnclaveImageA($/;" f +LoadEnclaveImageW vendor/winapi/src/um/enclaveapi.rs /^ pub fn LoadEnclaveImageW($/;" f +LoadIconA vendor/winapi/src/um/winuser.rs /^ pub fn LoadIconA($/;" f +LoadIconMetric vendor/winapi/src/um/commctrl.rs /^ pub fn LoadIconMetric($/;" f +LoadIconW vendor/winapi/src/um/winuser.rs /^ pub fn LoadIconW($/;" f +LoadIconWithScaleDown vendor/winapi/src/um/commctrl.rs /^ pub fn LoadIconWithScaleDown($/;" f +LoadImageA vendor/winapi/src/um/winuser.rs /^ pub fn LoadImageA($/;" f +LoadImageW vendor/winapi/src/um/winuser.rs /^ pub fn LoadImageW($/;" f +LoadInitFile support/texi2html /^sub LoadInitFile$/;" s +LoadKeyboardLayoutA vendor/winapi/src/um/winuser.rs /^ pub fn LoadKeyboardLayoutA($/;" f +LoadKeyboardLayoutW vendor/winapi/src/um/winuser.rs /^ pub fn LoadKeyboardLayoutW($/;" f +LoadLibraryA vendor/winapi/src/um/libloaderapi.rs /^ pub fn LoadLibraryA($/;" f +LoadLibraryExA vendor/winapi/src/um/libloaderapi.rs /^ pub fn LoadLibraryExA($/;" f +LoadLibraryExW vendor/libloading/src/error.rs /^ LoadLibraryExW {$/;" e enum:Error +LoadLibraryExW vendor/winapi/src/um/libloaderapi.rs /^ pub fn LoadLibraryExW($/;" f +LoadLibraryExWUnknown vendor/libloading/src/error.rs /^ LoadLibraryExWUnknown,$/;" e enum:Error +LoadLibraryW vendor/winapi/src/um/libloaderapi.rs /^ pub fn LoadLibraryW($/;" f +LoadMenuA vendor/winapi/src/um/winuser.rs /^ pub fn LoadMenuA($/;" f +LoadMenuIndirectA vendor/winapi/src/um/winuser.rs /^ pub fn LoadMenuIndirectA($/;" f +LoadMenuIndirectW vendor/winapi/src/um/winuser.rs /^ pub fn LoadMenuIndirectW($/;" f +LoadMenuW vendor/winapi/src/um/winuser.rs /^ pub fn LoadMenuW($/;" f +LoadModule vendor/winapi/src/um/winbase.rs /^ pub fn LoadModule($/;" f +LoadPackagedLibrary vendor/winapi/src/um/winbase.rs /^ pub fn LoadPackagedLibrary($/;" f +LoadResource vendor/winapi/src/um/libloaderapi.rs /^ pub fn LoadResource($/;" f +LoadStringA vendor/winapi/src/um/libloaderapi.rs /^ pub fn LoadStringA($/;" f +LoadStringW vendor/winapi/src/um/libloaderapi.rs /^ pub fn LoadStringW($/;" f +LoadTypeLibEx vendor/winapi/src/um/oleauto.rs /^ pub fn LoadTypeLibEx($/;" f +Loader vendor/async-trait/tests/test.rs /^ pub trait Loader {$/;" i module:issue110 +Local vendor/syn/src/gen/clone.rs /^impl Clone for Local {$/;" c +Local vendor/syn/src/gen/debug.rs /^impl Debug for Local {$/;" c +Local vendor/syn/src/gen/eq.rs /^impl Eq for Local {}$/;" c +Local vendor/syn/src/gen/eq.rs /^impl PartialEq for Local {$/;" c +Local vendor/syn/src/gen/hash.rs /^impl Hash for Local {$/;" c +Local vendor/syn/src/stmt.rs /^ impl ToTokens for Local {$/;" c module:printing +Local Development vendor/fluent-bundle/README.md /^Local Development$/;" s chapter:Fluent +Local Development vendor/fluent-fallback/README.md /^Local Development$/;" s chapter:Fluent +Local Development vendor/fluent-resmgr/README.md /^Local Development$/;" s chapter:Fluent Resource Manager +Local Development vendor/fluent-syntax/README.md /^Local Development$/;" s chapter:Fluent Syntax +Local Development vendor/fluent/README.md /^Local Development$/;" s chapter:Fluent +Local Development vendor/intl_pluralrules/README.md /^Local Development$/;" s chapter:INTL Plural Rules +LocalAlloc vendor/winapi/src/um/winbase.rs /^ pub fn LocalAlloc($/;" f +LocalBoxFuture vendor/futures-core/src/future.rs /^pub type LocalBoxFuture<'a, T> = Pin + 'a>>;$/;" t +LocalBoxStream vendor/futures-core/src/stream.rs /^pub type LocalBoxStream<'a, T> = Pin + 'a>>;$/;" t +LocalCmd builtins_rust/exec_cmd/src/lib.rs /^ LocalCmd,$/;" e enum:CMDType +LocalComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for LocalComand {$/;" c +LocalComand builtins_rust/exec_cmd/src/lib.rs /^struct LocalComand;$/;" s +LocalCompact vendor/winapi/src/um/winbase.rs /^ pub fn LocalCompact($/;" f +LocalFileTimeToFileTime vendor/winapi/src/um/fileapi.rs /^ pub fn LocalFileTimeToFileTime($/;" f +LocalFlags vendor/winapi/src/um/winbase.rs /^ pub fn LocalFlags($/;" f +LocalFree vendor/winapi/src/um/winbase.rs /^ pub fn LocalFree($/;" f +LocalFuture vendor/futures/tests/auto_traits.rs /^pub type LocalFuture = Pin>>;$/;" t +LocalFutureObj vendor/futures-task/src/future_obj.rs /^ impl<'a, F: Future + 'a> From> for LocalFutureObj<'a, ()> {$/;" c module:if_alloc +LocalFutureObj vendor/futures-task/src/future_obj.rs /^ impl<'a, F: Future + 'a> From>> for LocalFutureObj<'a, ()> {$/;" c module:if_alloc +LocalFutureObj vendor/futures-task/src/future_obj.rs /^ impl<'a> From + 'a>> for LocalFutureObj<'a, ()> {$/;" c module:if_alloc +LocalFutureObj vendor/futures-task/src/future_obj.rs /^ impl<'a> From + 'a>>> for LocalFutureObj<'a, ()> {$/;" c module:if_alloc +LocalFutureObj vendor/futures-task/src/future_obj.rs /^impl<'a, T> From> for LocalFutureObj<'a, T> {$/;" c +LocalFutureObj vendor/futures-task/src/future_obj.rs /^impl<'a, T> LocalFutureObj<'a, T> {$/;" c +LocalFutureObj vendor/futures-task/src/future_obj.rs /^impl Drop for LocalFutureObj<'_, T> {$/;" c +LocalFutureObj vendor/futures-task/src/future_obj.rs /^impl Future for LocalFutureObj<'_, T> {$/;" c +LocalFutureObj vendor/futures-task/src/future_obj.rs /^impl Unpin for LocalFutureObj<'_, T> {}$/;" c +LocalFutureObj vendor/futures-task/src/future_obj.rs /^impl fmt::Debug for LocalFutureObj<'_, T> {$/;" c +LocalFutureObj vendor/futures-task/src/future_obj.rs /^pub struct LocalFutureObj<'a, T> {$/;" s +LocalHandle vendor/winapi/src/um/winbase.rs /^ pub fn LocalHandle($/;" f +LocalLock vendor/winapi/src/um/winbase.rs /^ pub fn LocalLock($/;" f +LocalPool vendor/futures-executor/src/local_pool.rs /^impl Default for LocalPool {$/;" c +LocalPool vendor/futures-executor/src/local_pool.rs /^impl LocalPool {$/;" c +LocalPool vendor/futures-executor/src/local_pool.rs /^pub struct LocalPool {$/;" s +LocalReAlloc vendor/winapi/src/um/winbase.rs /^ pub fn LocalReAlloc($/;" f +LocalShrink vendor/winapi/src/um/winbase.rs /^ pub fn LocalShrink($/;" f +LocalSink vendor/futures/tests/auto_traits.rs /^pub type LocalSink = Pin>>;$/;" t +LocalSize vendor/winapi/src/um/winbase.rs /^ pub fn LocalSize($/;" f +LocalSpawn vendor/futures-task/src/spawn.rs /^pub trait LocalSpawn {$/;" i +LocalSpawnExt vendor/futures-util/src/task/spawn.rs /^pub trait LocalSpawnExt: LocalSpawn {$/;" i +LocalSpawner vendor/futures-executor/src/local_pool.rs /^impl LocalSpawn for LocalSpawner {$/;" c +LocalSpawner vendor/futures-executor/src/local_pool.rs /^impl Spawn for LocalSpawner {$/;" c +LocalSpawner vendor/futures-executor/src/local_pool.rs /^pub struct LocalSpawner {$/;" s +LocalStream vendor/futures/tests/auto_traits.rs /^pub type LocalStream = Pin>>;$/;" t +LocalTryFuture vendor/futures/tests/auto_traits.rs /^pub type LocalTryFuture = LocalFuture>;$/;" t +LocalTryStream vendor/futures/tests/auto_traits.rs /^pub type LocalTryStream = LocalStream>;$/;" t +LocalUnlock vendor/winapi/src/um/winbase.rs /^ pub fn LocalUnlock($/;" f +LocaleNameToLCID vendor/winapi/src/um/winnls.rs /^ pub fn LocaleNameToLCID($/;" f +Locales vendor/fluent-fallback/tests/localization_test.rs /^impl Locales {$/;" c +Locales vendor/fluent-fallback/tests/localization_test.rs /^impl LocalesProvider for Locales {$/;" c +Locales vendor/fluent-fallback/tests/localization_test.rs /^struct Locales {$/;" s +LocalesIter vendor/fluent-fallback/examples/simple-fallback.rs /^ type LocalesIter = std::vec::IntoIter;$/;" t implementation:Bundles +LocalesIter vendor/fluent-fallback/src/generator.rs /^ type LocalesIter: Iterator;$/;" t interface:BundleGenerator +LocalesIter vendor/fluent-fallback/tests/localization_test.rs /^ type LocalesIter = std::vec::IntoIter;$/;" t implementation:ResourceManager +LocalesIter vendor/fluent-resmgr/src/resource_manager.rs /^ type LocalesIter = std::vec::IntoIter;$/;" t implementation:ResourceManager +LocalesProvider vendor/fluent-fallback/src/env.rs /^pub trait LocalesProvider {$/;" i +Localization vendor/fluent-fallback/src/localization.rs /^impl Localization$/;" c +Localization vendor/fluent-fallback/src/localization.rs /^pub struct Localization$/;" s +LocalizationError vendor/fluent-fallback/src/errors.rs /^impl Error for LocalizationError {}$/;" c +LocalizationError vendor/fluent-fallback/src/errors.rs /^impl From for LocalizationError {$/;" c +LocalizationError vendor/fluent-fallback/src/errors.rs /^impl std::fmt::Display for LocalizationError {$/;" c +LocalizationError vendor/fluent-fallback/src/errors.rs /^pub enum LocalizationError {$/;" g +LocateIncludeFile support/texi2html /^sub LocateIncludeFile$/;" s +LocateXStateFeature vendor/winapi/src/um/winbase.rs /^ pub fn LocateXStateFeature($/;" f +Lock vendor/futures-channel/src/lock.rs /^impl Lock {$/;" c +Lock vendor/futures-channel/src/lock.rs /^pub(crate) struct Lock {$/;" s +Lock vendor/futures-channel/src/lock.rs /^unsafe impl Send for Lock {}$/;" c +Lock vendor/futures-channel/src/lock.rs /^unsafe impl Sync for Lock {}$/;" c +LockFile vendor/winapi/src/um/fileapi.rs /^ pub fn LockFile($/;" f +LockFileEx vendor/winapi/src/um/fileapi.rs /^ pub fn LockFileEx($/;" f +LockResource vendor/winapi/src/um/libloaderapi.rs /^ pub fn LockResource($/;" f +LockServiceDatabase vendor/winapi/src/um/winsvc.rs /^ pub fn LockServiceDatabase($/;" f +LockSetForegroundWindow vendor/winapi/src/um/winuser.rs /^ pub fn LockSetForegroundWindow($/;" f +LockStream vendor/futures-util/benches_disabled/bilock.rs /^ impl LockStream {$/;" c module:bench +LockStream vendor/futures-util/benches_disabled/bilock.rs /^ impl Stream for LockStream {$/;" c module:bench +LockStream vendor/futures-util/benches_disabled/bilock.rs /^ struct LockStream {$/;" s module:bench +LockWindowUpdate vendor/winapi/src/um/winuser.rs /^ pub fn LockWindowUpdate($/;" f +LockWorkStation vendor/winapi/src/um/winuser.rs /^ pub fn LockWorkStation() -> BOOL;$/;" f +LogSeverity vendor/winapi/src/um/setupapi.rs /^pub type LogSeverity = DWORD;$/;" t +LogicalToPhysicalPoint vendor/winapi/src/um/winuser.rs /^ pub fn LogicalToPhysicalPoint($/;" f +LogicalToPhysicalPointForPerMonitorDPI vendor/winapi/src/um/winuser.rs /^ pub fn LogicalToPhysicalPointForPerMonitorDPI($/;" f +LogonUserA vendor/winapi/src/um/winbase.rs /^ pub fn LogonUserA($/;" f +LogonUserExA vendor/winapi/src/um/winbase.rs /^ pub fn LogonUserExA($/;" f +LogonUserExW vendor/winapi/src/um/winbase.rs /^ pub fn LogonUserExW($/;" f +LogonUserW vendor/winapi/src/um/winbase.rs /^ pub fn LogonUserW($/;" f +LogoutCmd builtins_rust/exec_cmd/src/lib.rs /^ LogoutCmd,$/;" e enum:CMDType +LogoutCommand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for LogoutCommand {$/;" c +LogoutCommand builtins_rust/exec_cmd/src/lib.rs /^struct LogoutCommand;$/;" s +Lookahead1 vendor/syn/src/lookahead.rs /^impl<'a> Lookahead1<'a> {$/;" c +Lookahead1 vendor/syn/src/lookahead.rs /^pub struct Lookahead1<'a> {$/;" s +Lookup vendor/fluent-langneg/src/negotiate/mod.rs /^ Lookup,$/;" e enum:NegotiationStrategy +LookupAccountNameA vendor/winapi/src/um/winbase.rs /^ pub fn LookupAccountNameA($/;" f +LookupAccountNameW vendor/winapi/src/um/winbase.rs /^ pub fn LookupAccountNameW($/;" f +LookupAccountSidA vendor/winapi/src/um/winbase.rs /^ pub fn LookupAccountSidA($/;" f +LookupAccountSidW vendor/winapi/src/um/winbase.rs /^ pub fn LookupAccountSidW($/;" f +LookupIconIdFromDirectory vendor/winapi/src/um/winuser.rs /^ pub fn LookupIconIdFromDirectory($/;" f +LookupIconIdFromDirectoryEx vendor/winapi/src/um/winuser.rs /^ pub fn LookupIconIdFromDirectoryEx($/;" f +LookupPersistentTcpPortReservation vendor/winapi/src/um/iphlpapi.rs /^ pub fn LookupPersistentTcpPortReservation($/;" f +LookupPersistentUdpPortReservation vendor/winapi/src/um/iphlpapi.rs /^ pub fn LookupPersistentUdpPortReservation($/;" f +LookupPrivilegeNameA vendor/winapi/src/um/winbase.rs /^ pub fn LookupPrivilegeNameA($/;" f +LookupPrivilegeNameW vendor/winapi/src/um/winbase.rs /^ pub fn LookupPrivilegeNameW($/;" f +LookupPrivilegeValueA vendor/winapi/src/um/winbase.rs /^ pub fn LookupPrivilegeValueA($/;" f +LookupPrivilegeValueW vendor/winapi/src/um/winbase.rs /^ pub fn LookupPrivilegeValueW($/;" f +LookupSecurityDescriptorPartsA vendor/winapi/src/um/aclapi.rs /^ pub fn LookupSecurityDescriptorPartsA($/;" f +LookupSecurityDescriptorPartsW vendor/winapi/src/um/aclapi.rs /^ pub fn LookupSecurityDescriptorPartsW($/;" f +LowerExp vendor/thiserror-impl/src/attr.rs /^ LowerExp,$/;" e enum:Trait +LowerHex vendor/thiserror-impl/src/attr.rs /^ LowerHex,$/;" e enum:Trait +Lrc vendor/syn/tests/common/eq.rs /^impl SpanlessEq for Lrc {$/;" c +LsaAddAccountRights vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaAddAccountRights($/;" f +LsaAddPrivilegesToAccount vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaAddPrivilegesToAccount($/;" f +LsaCallAuthenticationPackage vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaCallAuthenticationPackage($/;" f +LsaChangePassword vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaChangePassword($/;" f +LsaClearAuditLog vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaClearAuditLog($/;" f +LsaClose vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaClose($/;" f +LsaConnectUntrusted vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaConnectUntrusted($/;" f +LsaCreateAccount vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaCreateAccount($/;" f +LsaCreateSecret vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaCreateSecret($/;" f +LsaCreateTrustedDomain vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaCreateTrustedDomain($/;" f +LsaCreateTrustedDomainEx vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaCreateTrustedDomainEx($/;" f +LsaDelete vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaDelete($/;" f +LsaDeleteTrustedDomain vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaDeleteTrustedDomain($/;" f +LsaDeregisterLogonProcess vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaDeregisterLogonProcess($/;" f +LsaEnumerateAccountRights vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaEnumerateAccountRights($/;" f +LsaEnumerateAccounts vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaEnumerateAccounts($/;" f +LsaEnumerateAccountsWithUserRight vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaEnumerateAccountsWithUserRight($/;" f +LsaEnumerateLogonSessions vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaEnumerateLogonSessions($/;" f +LsaEnumeratePrivileges vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaEnumeratePrivileges($/;" f +LsaEnumeratePrivilegesOfAccount vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaEnumeratePrivilegesOfAccount($/;" f +LsaEnumerateTrustedDomains vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaEnumerateTrustedDomains($/;" f +LsaEnumerateTrustedDomainsEx vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaEnumerateTrustedDomainsEx($/;" f +LsaForestTrustFindMatch vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaForestTrustFindMatch($/;" f +LsaFreeMemory vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaFreeMemory($/;" f +LsaFreeReturnBuffer vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaFreeReturnBuffer($/;" f +LsaGetAppliedCAPIDs vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaGetAppliedCAPIDs($/;" f +LsaGetDeviceRegistrationInfo vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaGetDeviceRegistrationInfo($/;" f +LsaGetLogonSessionData vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaGetLogonSessionData($/;" f +LsaGetQuotasForAccount vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaGetQuotasForAccount($/;" f +LsaGetRemoteUserName vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaGetRemoteUserName($/;" f +LsaGetSystemAccessAccount vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaGetSystemAccessAccount($/;" f +LsaGetUserName vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaGetUserName($/;" f +LsaInsertProtectedProcessAddress vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaInsertProtectedProcessAddress($/;" f +LsaLogonUser vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaLogonUser($/;" f +LsaLookupAuthenticationPackage vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaLookupAuthenticationPackage($/;" f +LsaLookupClose vendor/winapi/src/um/lsalookup.rs /^ pub fn LsaLookupClose($/;" f +LsaLookupFreeMemory vendor/winapi/src/um/lsalookup.rs /^ pub fn LsaLookupFreeMemory($/;" f +LsaLookupGetDomainInfo vendor/winapi/src/um/lsalookup.rs /^ pub fn LsaLookupGetDomainInfo($/;" f +LsaLookupNames vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaLookupNames($/;" f +LsaLookupNames2 vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaLookupNames2($/;" f +LsaLookupOpenLocalPolicy vendor/winapi/src/um/lsalookup.rs /^ pub fn LsaLookupOpenLocalPolicy($/;" f +LsaLookupPrivilegeDisplayName vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaLookupPrivilegeDisplayName($/;" f +LsaLookupPrivilegeName vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaLookupPrivilegeName($/;" f +LsaLookupPrivilegeValue vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaLookupPrivilegeValue($/;" f +LsaLookupSids vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaLookupSids($/;" f +LsaLookupSids2 vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaLookupSids2($/;" f +LsaLookupTranslateNames vendor/winapi/src/um/lsalookup.rs /^ pub fn LsaLookupTranslateNames($/;" f +LsaLookupTranslateSids vendor/winapi/src/um/lsalookup.rs /^ pub fn LsaLookupTranslateSids($/;" f +LsaNtStatusToWinError vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaNtStatusToWinError($/;" f +LsaOpenAccount vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaOpenAccount($/;" f +LsaOpenPolicy vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaOpenPolicy($/;" f +LsaOpenPolicySce vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaOpenPolicySce($/;" f +LsaOpenSecret vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaOpenSecret($/;" f +LsaOpenTrustedDomain vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaOpenTrustedDomain($/;" f +LsaOpenTrustedDomainByName vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaOpenTrustedDomainByName($/;" f +LsaQueryCAPs vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaQueryCAPs($/;" f +LsaQueryDomainInformationPolicy vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaQueryDomainInformationPolicy($/;" f +LsaQueryForestTrustInformation vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaQueryForestTrustInformation($/;" f +LsaQueryInfoTrustedDomain vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaQueryInfoTrustedDomain($/;" f +LsaQueryInformationPolicy vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaQueryInformationPolicy($/;" f +LsaQuerySecret vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaQuerySecret($/;" f +LsaQuerySecurityObject vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaQuerySecurityObject($/;" f +LsaQueryTrustedDomainInfo vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaQueryTrustedDomainInfo($/;" f +LsaQueryTrustedDomainInfoByName vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaQueryTrustedDomainInfoByName($/;" f +LsaRegisterLogonProcess vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaRegisterLogonProcess($/;" f +LsaRegisterPolicyChangeNotification vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaRegisterPolicyChangeNotification($/;" f +LsaRemoveAccountRights vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaRemoveAccountRights($/;" f +LsaRemovePrivilegesFromAccount vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaRemovePrivilegesFromAccount($/;" f +LsaRemoveProtectedProcessAddress vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaRemoveProtectedProcessAddress($/;" f +LsaRetrievePrivateData vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaRetrievePrivateData($/;" f +LsaSetCAPs vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaSetCAPs($/;" f +LsaSetDomainInformationPolicy vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaSetDomainInformationPolicy($/;" f +LsaSetForestTrustInformation vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaSetForestTrustInformation($/;" f +LsaSetInformationPolicy vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaSetInformationPolicy($/;" f +LsaSetInformationTrustedDomain vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaSetInformationTrustedDomain($/;" f +LsaSetPolicyReplicationHandle vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaSetPolicyReplicationHandle($/;" f +LsaSetQuotasForAccount vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaSetQuotasForAccount($/;" f +LsaSetSecret vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaSetSecret($/;" f +LsaSetSecurityObject vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaSetSecurityObject($/;" f +LsaSetSystemAccessAccount vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaSetSystemAccessAccount($/;" f +LsaSetTrustedDomainInfoByName vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaSetTrustedDomainInfoByName($/;" f +LsaSetTrustedDomainInformation vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaSetTrustedDomainInformation($/;" f +LsaStorePrivateData vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaStorePrivateData($/;" f +LsaUnregisterPolicyChangeNotification vendor/winapi/src/um/ntlsa.rs /^ pub fn LsaUnregisterPolicyChangeNotification($/;" f +MACHTYPE Makefile.in /^MACHTYPE = @host@$/;" m +MACHTYPE conftypes.h /^# define MACHTYPE /;" d +MACHTYPE conftypes.h /^# define MACHTYPE /;" d +MAGIC1 lib/malloc/malloc.c /^#define MAGIC1 /;" d file: +MAGIC2 lib/malloc/malloc.c /^#define MAGIC2 /;" d file: +MAINTAINER error.c /^#define MAINTAINER /;" d file: +MAKEDOT lib/sh/makepath.c /^#define MAKEDOT(/;" d file: +MAKEINTRESOURCEA vendor/winapi/src/um/winuser.rs /^pub fn MAKEINTRESOURCEA(i: WORD) -> LPSTR {$/;" f +MAKEINTRESOURCEW vendor/winapi/src/um/winuser.rs /^pub fn MAKEINTRESOURCEW(i: WORD) -> LPWSTR {$/;" f +MAKEIPADDRESS vendor/winapi/src/um/commctrl.rs /^pub fn MAKEIPADDRESS(b1: DWORD, b2: DWORD, b3: DWORD, b4: DWORD) -> LPARAM {$/;" f +MAKEIPRANGE vendor/winapi/src/um/commctrl.rs /^pub fn MAKEIPRANGE(low: BYTE, high: BYTE) -> LPARAM {$/;" f +MAKELANGID vendor/winapi/src/shared/ntdef.rs /^macro_rules! MAKELANGID {$/;" M +MAKELANGID vendor/winapi/src/shared/ntdef.rs /^pub fn MAKELANGID(p: USHORT, s: USHORT) -> LANGID { (s << 10) | p }$/;" f +MAKELANGID vendor/winapi/src/um/winnt.rs /^macro_rules! MAKELANGID { ($p:expr, $s:expr) => (($s << 10) | $p) }$/;" M +MAKELANGID vendor/winapi/src/um/winnt.rs /^pub fn MAKELANGID(p: WORD, s: WORD) -> LANGID {$/;" f +MAKELCID vendor/winapi/src/shared/ntdef.rs /^macro_rules! MAKELCID {$/;" M +MAKELCID vendor/winapi/src/shared/ntdef.rs /^pub fn MAKELCID(lgid: LANGID, srtid: USHORT) -> LCID {$/;" f +MAKELCID vendor/winapi/src/um/winnt.rs /^macro_rules! MAKELCID {$/;" M +MAKELCID vendor/winapi/src/um/winnt.rs /^pub fn MAKELCID(lgid: LANGID, srtid: WORD) -> LCID {$/;" f +MAKELONG vendor/winapi/src/shared/minwindef.rs /^pub fn MAKELONG(a: WORD, b: WORD) -> LONG {$/;" f +MAKEPOINTS vendor/winapi/src/um/wingdi.rs /^pub fn MAKEPOINTS(l: DWORD) -> POINTS {$/;" f +MAKEROP4 vendor/winapi/src/um/wingdi.rs /^pub fn MAKEROP4(fore: DWORD, back: DWORD) -> DWORD {$/;" f +MAKESORTLCID vendor/winapi/src/shared/ntdef.rs /^pub fn MAKESORTLCID(lgid: LANGID, srtid: USHORT, ver: USHORT) -> LCID {$/;" f +MAKESORTLCID vendor/winapi/src/um/winnt.rs /^pub fn MAKESORTLCID(lgid: LANGID, srtid: WORD, ver: WORD) -> LCID {$/;" f +MAKEWORD vendor/winapi/src/shared/minwindef.rs /^pub fn MAKEWORD(a: BYTE, b: BYTE) -> WORD {$/;" f +MAKE_DWRITE_HR vendor/winapi/src/um/dwrite.rs /^pub fn MAKE_DWRITE_HR(severity: HRESULT, code: HRESULT) -> HRESULT {$/;" f +MAKE_DWRITE_HR_ERR vendor/winapi/src/um/dwrite.rs /^pub fn MAKE_DWRITE_HR_ERR(code: HRESULT) -> HRESULT {$/;" f +MAKE_HRESULT vendor/winapi/src/shared/winerror.rs /^pub fn MAKE_HRESULT(sev: HRESULT, fac: HRESULT, code: HRESULT) -> HRESULT {$/;" f +MAKE_SCODE vendor/winapi/src/shared/winerror.rs /^pub fn MAKE_SCODE(sev: HRESULT, fac: HRESULT, code: HRESULT) -> SCODE {$/;" f +MAKE_SHELL configure.ac /^AC_SUBST(MAKE_SHELL)$/;" s +MAKE_WINCODECHR vendor/winapi/src/um/wincodec.rs /^pub fn MAKE_WINCODECHR(severity: HRESULT, code: HRESULT) -> HRESULT {$/;" f +MAKE_WINCODECHR_ERR vendor/winapi/src/um/wincodec.rs /^pub fn MAKE_WINCODECHR_ERR(code: HRESULT) -> HRESULT {$/;" f +MALIGN_MASK lib/malloc/malloc.c /^#define MALIGN_MASK /;" d file: +MALLOC lib/malloc/Makefile.in /^MALLOC = @MALLOC@$/;" m +MALLOC_BZERO lib/malloc/imalloc.h /^#define MALLOC_BZERO(/;" d +MALLOC_CFLAGS Makefile.in /^MALLOC_CFLAGS = -DRCHECK -Dbotch=programming_error ${MALLOC_DEBUG}$/;" m +MALLOC_DEBUG Makefile.in /^MALLOC_DEBUG = @MALLOC_DEBUG@$/;" m +MALLOC_DEBUG configure.ac /^AC_SUBST(MALLOC_DEBUG)$/;" s +MALLOC_DEP Makefile.in /^MALLOC_DEP = @MALLOC_DEP@$/;" m +MALLOC_DEP configure.ac /^AC_SUBST(MALLOC_DEP)$/;" s +MALLOC_INTERNAL lib/malloc/malloc.c /^#define MALLOC_INTERNAL /;" d file: +MALLOC_LDFLAGS Makefile.in /^MALLOC_LDFLAGS = @MALLOC_LDFLAGS@$/;" m +MALLOC_LDFLAGS configure.ac /^AC_SUBST(MALLOC_LDFLAGS)$/;" s +MALLOC_LIB Makefile.in /^MALLOC_LIB = @MALLOC_LIB@$/;" m +MALLOC_LIB configure.ac /^AC_SUBST(MALLOC_LIB)$/;" s +MALLOC_LIBRARY Makefile.in /^MALLOC_LIBRARY = @MALLOC_LIBRARY@$/;" m +MALLOC_LIBRARY configure.ac /^AC_SUBST(MALLOC_LIBRARY)$/;" s +MALLOC_MEMCPY lib/malloc/imalloc.h /^#define MALLOC_MEMCPY(/;" d +MALLOC_MEMSET lib/malloc/imalloc.h /^#define MALLOC_MEMSET(/;" d +MALLOC_NOREG lib/malloc/malloc.c /^#define MALLOC_NOREG /;" d file: +MALLOC_NOTRACE lib/malloc/malloc.c /^#define MALLOC_NOTRACE /;" d file: +MALLOC_OBJS lib/malloc/Makefile.in /^MALLOC_OBJS = malloc.o $(ALLOCA) trace.o stats.o table.o watch.o$/;" m +MALLOC_OTHERSRC Makefile.in /^MALLOC_OTHERSRC = ${ALLOC_LIBSRC}\/trace.c ${ALLOC_LIBSRC}\/stats.c \\$/;" m +MALLOC_REGISTER lib/malloc/imalloc.h /^#define MALLOC_REGISTER$/;" d +MALLOC_SOURCE Makefile.in /^MALLOC_SOURCE = ${ALLOC_LIBSRC}\/${MALLOC_SRC} ${MALLOC_OTHERSRC}$/;" m +MALLOC_SOURCE lib/malloc/Makefile.in /^MALLOC_SOURCE = malloc.c$/;" m +MALLOC_SRC Makefile.in /^MALLOC_SRC = @MALLOC_SRC@$/;" m +MALLOC_SRC configure.ac /^AC_SUBST(MALLOC_SRC)$/;" s +MALLOC_SRC lib/malloc/Makefile.in /^MALLOC_SRC = @MALLOC_SRC@$/;" m +MALLOC_STATS lib/malloc/imalloc.h /^#define MALLOC_STATS$/;" d +MALLOC_TARGET Makefile.in /^MALLOC_TARGET = @MALLOC_TARGET@$/;" m +MALLOC_TARGET configure.ac /^AC_SUBST(MALLOC_TARGET)$/;" s +MALLOC_TRACE lib/malloc/imalloc.h /^#define MALLOC_TRACE$/;" d +MALLOC_WATCH lib/malloc/imalloc.h /^#define MALLOC_WATCH$/;" d +MALLOC_WRAPFUNCS lib/malloc/imalloc.h /^#define MALLOC_WRAPFUNCS$/;" d +MALLOC_WRAPPER lib/malloc/malloc.c /^#define MALLOC_WRAPPER /;" d file: +MALLOC_ZERO lib/malloc/imalloc.h /^#define MALLOC_ZERO(/;" d +MANDATORY_LEVEL_TO_MANDATORY_RID vendor/winapi/src/um/winnt.rs /^pub fn MANDATORY_LEVEL_TO_MANDATORY_RID(IL: DWORD) -> DWORD {$/;" f +MANY vendor/intl_pluralrules/src/lib.rs /^ MANY,$/;" e enum:PluralCategory +MAP_ANONYMOUS lib/malloc/malloc.c /^# define MAP_ANONYMOUS /;" d file: +MAP_FAILED lib/readline/histfile.c /^# define MAP_FAILED /;" d file: +MAP_RFLAGS lib/readline/histfile.c /^# define MAP_RFLAGS /;" d file: +MAP_WFLAGS lib/readline/histfile.c /^# define MAP_WFLAGS /;" d file: +MATCHLEN lib/glob/gm_loop.c /^MATCHLEN (pat, max)$/;" f +MATCHLEN lib/glob/gmisc.c /^#define MATCHLEN /;" d file: +MATCH_ANY shell.h /^#define MATCH_ANY /;" d +MATCH_ASSIGNRHS shell.h /^#define MATCH_ASSIGNRHS /;" d +MATCH_BEG shell.h /^#define MATCH_BEG /;" d +MATCH_END shell.h /^#define MATCH_END /;" d +MATCH_GLOBREP shell.h /^#define MATCH_GLOBREP /;" d +MATCH_PATTERN_CHAR lib/glob/gm_loop.c /^MATCH_PATTERN_CHAR (pat, string, flags)$/;" f +MATCH_PATTERN_CHAR lib/glob/gmisc.c /^#define MATCH_PATTERN_CHAR /;" d file: +MATCH_QUOTED shell.h /^#define MATCH_QUOTED /;" d +MATCH_STARSUB shell.h /^#define MATCH_STARSUB /;" d +MATCH_TYPEMASK shell.h /^#define MATCH_TYPEMASK /;" d +MAXFULLSPEC lib/glob/ndir.h /^# define MAXFULLSPEC /;" d +MAXNAMLEN lib/glob/ndir.h /^# define MAXNAMLEN /;" d +MAXSYMLINKS lib/sh/pathphys.c /^# define MAXSYMLINKS /;" d file: +MAXTIME lib/sh/strftime.c /^#define MAXTIME /;" d file: +MAX_ATTRIBUTES builtins/common.h /^#define MAX_ATTRIBUTES /;" d +MAX_CHILD_MAX jobs.c /^# define MAX_CHILD_MAX /;" d file: +MAX_EXPR_RECURSION_LEVEL expr.c /^#define MAX_EXPR_RECURSION_LEVEL /;" d file: +MAX_FIELD lib/sh/snprintf.c /^#define MAX_FIELD /;" d file: +MAX_FRACT lib/sh/snprintf.c /^#define MAX_FRACT /;" d file: +MAX_HISTORY_INITIAL_SIZE lib/readline/history.c /^#define MAX_HISTORY_INITIAL_SIZE /;" d file: +MAX_INPUT_BUFFER_SIZE input.c /^# define MAX_INPUT_BUFFER_SIZE /;" d file: +MAX_INT lib/sh/snprintf.c /^#define MAX_INT /;" d file: +MAX_INT_LEN expr.c /^# define MAX_INT_LEN /;" d file: +MAX_JOBS_IN_ARRAY jobs.c /^#define MAX_JOBS_IN_ARRAY /;" d file: +MAX_MACRO_LEVEL lib/readline/macro.c /^#define MAX_MACRO_LEVEL /;" d file: +MAX_MAN_PATHS support/man2html.c /^#define MAX_MAN_PATHS /;" d file: +MAX_TGETENT_BUFSIZ lib/termcap/ltcap.h /^# define MAX_TGETENT_BUFSIZ /;" d +MAX_WORDLIST support/man2html.c /^#define MAX_WORDLIST /;" d file: +MAX_ZCATS support/man2html.c /^#define MAX_ZCATS /;" d file: +MBLEN include/shmbutil.h /^#define MBLEN(/;" d +MBLEN r_print_cmd/src/lib.rs /^pub fn MBLEN(s: *const c_char ,n:size_t) -> c_int$/;" f +MBOX_INITIALIZED mailcheck.c /^#define MBOX_INITIALIZED /;" d file: +MBRLEN include/shmbutil.h /^#define MBRLEN(/;" d +MBSLEN include/shmbutil.h /^#define MBSLEN(/;" d +MB_CUR_MAX builtins_rust/help/src/lib.rs /^macro_rules! MB_CUR_MAX {$/;" M +MB_CUR_MAX include/shmbutil.h /^#define MB_CUR_MAX /;" d +MB_CUR_MAX lib/readline/rlmbutil.h /^#define MB_CUR_MAX /;" d +MB_FIND_ANY lib/readline/rlmbutil.h /^#define MB_FIND_ANY /;" d +MB_FIND_NONZERO lib/readline/rlmbutil.h /^#define MB_FIND_NONZERO /;" d +MB_INVALIDCH include/shmbutil.h /^#define MB_INVALIDCH(/;" d +MB_INVALIDCH lib/readline/rlmbutil.h /^#define MB_INVALIDCH(/;" d +MB_LEN_MAX config-bot.h /^# define MB_LEN_MAX /;" d +MB_LEN_MAX include/shmbutil.h /^#define MB_LEN_MAX /;" d +MB_LEN_MAX lib/readline/rlmbutil.h /^# define MB_LEN_MAX /;" d +MB_LEN_MAX lib/readline/rlmbutil.h /^#define MB_LEN_MAX /;" d +MB_NEXTCHAR lib/readline/rlmbutil.h /^#define MB_NEXTCHAR(/;" d +MB_NULLWCH include/shmbutil.h /^#define MB_NULLWCH(/;" d +MB_NULLWCH lib/readline/rlmbutil.h /^#define MB_NULLWCH(/;" d +MB_PREVCHAR lib/readline/rlmbutil.h /^#define MB_PREVCHAR(/;" d +MB_STRLEN include/shmbutil.h /^#define MB_STRLEN(/;" d +MED_STR_MAX support/man2html.c /^#define MED_STR_MAX /;" d file: +MEMBER general.h /^#define MEMBER(/;" d +MEMBERID vendor/winapi/src/um/oaidl.rs /^pub type MEMBERID = DISPID;$/;" t +MEMBERID vendor/winapi/src/um/oleauto.rs /^pub type MEMBERID = DISPID;$/;" t +MEMCHR lib/glob/smatch.c /^#define MEMCHR(/;" d file: +MEMSCRAMBLE configure.ac /^AC_DEFINE(MEMSCRAMBLE)$/;" d +MENUTEMPLATEA vendor/winapi/src/um/winuser.rs /^pub type MENUTEMPLATEA = VOID;$/;" t +MENUTEMPLATEW vendor/winapi/src/um/winuser.rs /^pub type MENUTEMPLATEW = VOID;$/;" t +META lib/readline/chardefs.h /^#define META(/;" d +META_CHAR lib/readline/chardefs.h /^#define META_CHAR(/;" d +MFLAG builtins_rust/bind/src/lib.rs /^macro_rules! MFLAG {$/;" M +MFLAG support/utshellversion.c /^#define MFLAG /;" d file: +MIBICMPSTATS_EX vendor/winapi/src/shared/ipmib.rs /^pub type MIBICMPSTATS_EX = MIBICMPSTATS_EX_XPSP1;$/;" t +MIB_ICMP_EX vendor/winapi/src/shared/ipmib.rs /^pub type MIB_ICMP_EX = MIB_ICMP_EX_XPSP1;$/;" t +MIB_IPADDRROW vendor/winapi/src/shared/ipmib.rs /^pub type MIB_IPADDRROW = MIB_IPADDRROW_XP;$/;" t +MIB_IPFORWARD_PROTO vendor/winapi/src/shared/ipmib.rs /^pub type MIB_IPFORWARD_PROTO = NL_ROUTE_PROTOCOL;$/;" t +MIB_IPMCAST_MFE_STATS_EX vendor/winapi/src/shared/ipmib.rs /^pub type MIB_IPMCAST_MFE_STATS_EX = MIB_IPMCAST_MFE_STATS_EX_XP;$/;" t +MIB_IPMCAST_OIF vendor/winapi/src/shared/ipmib.rs /^pub type MIB_IPMCAST_OIF = MIB_IPMCAST_OIF_XP;$/;" t +MIB_IPMCAST_OIF_STATS vendor/winapi/src/shared/ipmib.rs /^pub type MIB_IPMCAST_OIF_STATS = MIB_IPMCAST_OIF_STATS_LH;$/;" t +MIB_IPNETROW vendor/winapi/src/shared/ipmib.rs /^pub type MIB_IPNETROW = MIB_IPNETROW_LH;$/;" t +MIB_IPSTATS vendor/winapi/src/shared/ipmib.rs /^pub type MIB_IPSTATS = MIB_IPSTATS_LH;$/;" t +MIB_MFE_STATS_TABLE_EX vendor/winapi/src/shared/ipmib.rs /^pub type MIB_MFE_STATS_TABLE_EX = MIB_MFE_STATS_TABLE_EX_XP;$/;" t +MIB_TCPROW vendor/winapi/src/shared/tcpmib.rs /^pub type MIB_TCPROW = MIB_TCPROW_LH;$/;" t +MIB_TCPSTATS vendor/winapi/src/shared/tcpmib.rs /^pub type MIB_TCPSTATS = MIB_TCPSTATS_LH;$/;" t +MIDL_uhyper vendor/winapi/src/shared/rpcndr.rs /^pub type MIDL_uhyper = __uint64;$/;" t +MINUS expr.c /^#define MINUS /;" d file: +MINUS_O_FORMAT builtins_rust/set/src/lib.rs /^macro_rules! MINUS_O_FORMAT {$/;" M +MIN_COMPAT_LEVEL variables.c /^#define MIN_COMPAT_LEVEL /;" d file: +MKBUILTINS builtins/Makefile.in /^MKBUILTINS = mkbuiltins$(EXEEXT)$/;" m +MKDIRS builtins/Makefile.in /^MKDIRS = ${topdir}\/support\/mkdirs$/;" m +MKFIFO_MISSING configure.ac /^AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING))$/;" d +MKINSTALLDIRS lib/intl/Makefile.in /^MKINSTALLDIRS = @MKINSTALLDIRS@$/;" m +MKLOC_ARRAYOK builtins_rust/declare/src/lib.rs /^macro_rules! MKLOC_ARRAYOK {$/;" M +MKLOC_ARRAYOK variables.h /^#define MKLOC_ARRAYOK /;" d +MKLOC_ASSOCOK builtins_rust/declare/src/lib.rs /^macro_rules! MKLOC_ASSOCOK {$/;" M +MKLOC_ASSOCOK variables.h /^#define MKLOC_ASSOCOK /;" d +MKLOC_INHERIT builtins_rust/declare/src/lib.rs /^macro_rules! MKLOC_INHERIT {$/;" M +MKLOC_INHERIT variables.h /^#define MKLOC_INHERIT /;" d +MMAP_THRESHOLD lib/malloc/malloc.c /^# define MMAP_THRESHOLD /;" d file: +MMRESULT vendor/winapi/src/um/mmsystem.rs /^pub type MMRESULT = UINT;$/;" t +MMVERSION vendor/winapi/src/um/mmsystem.rs /^pub type MMVERSION = UINT;$/;" t +MOD expr.c /^#define MOD /;" d file: +MONTHDAYSTATE vendor/winapi/src/um/commctrl.rs /^pub type MONTHDAYSTATE = DWORD;$/;" t +MOVERHEAD lib/malloc/malloc.c /^#define MOVERHEAD /;" d file: +MO_REVISION_NUMBER lib/intl/gmo.h /^#define MO_REVISION_NUMBER /;" d +MP_DOCWD builtins_rust/type/src/lib.rs /^macro_rules! MP_DOCWD {$/;" M +MP_DOCWD externs.h /^#define MP_DOCWD /;" d +MP_DOCWD lib/sh/makepath.c /^# define MP_DOCWD /;" d file: +MP_DOTILDE builtins_rust/cd/src/lib.rs /^macro_rules! MP_DOTILDE {$/;" M +MP_DOTILDE externs.h /^#define MP_DOTILDE /;" d +MP_DOTILDE lib/sh/makepath.c /^# define MP_DOTILDE /;" d file: +MP_IGNDOT externs.h /^#define MP_IGNDOT /;" d +MP_IGNDOT lib/sh/makepath.c /^# define MP_IGNDOT /;" d file: +MP_RMDOT builtins_rust/type/src/lib.rs /^macro_rules! MP_RMDOT {$/;" M +MP_RMDOT externs.h /^#define MP_RMDOT /;" d +MP_RMDOT lib/sh/makepath.c /^# define MP_RMDOT /;" d file: +MSC_SET_BREAK_LENGTH vendor/winapi/src/um/ws2bth.rs /^macro_rules! MSC_SET_BREAK_LENGTH {$/;" M +MSChapSrvChangePassword vendor/winapi/src/um/mschapp.rs /^ pub fn MSChapSrvChangePassword($/;" f +MSChapSrvChangePassword2 vendor/winapi/src/um/mschapp.rs /^ pub fn MSChapSrvChangePassword2($/;" f +MSG_Q_ID vendor/libc/src/vxworks/mod.rs /^pub type MSG_Q_ID = ::OBJ_HANDLE;$/;" t +MSLOP lib/malloc/malloc.c /^#define MSLOP /;" d file: +MT_ALLOC lib/malloc/table.h /^#define MT_ALLOC /;" d +MT_FREE lib/malloc/table.h /^#define MT_FREE /;" d +MT_READWRITE builtins_rust/fc/src/lib.rs /^macro_rules! MT_READWRITE {$/;" M +MT_READWRITE externs.h /^#define MT_READWRITE /;" d +MT_TEMPLATE builtins_rust/fc/src/lib.rs /^macro_rules! MT_TEMPLATE {$/;" M +MT_TEMPLATE externs.h /^#define MT_TEMPLATE /;" d +MT_USERANDOM builtins_rust/fc/src/lib.rs /^macro_rules! MT_USERANDOM {$/;" M +MT_USERANDOM externs.h /^#define MT_USERANDOM /;" d +MT_USETMPDIR builtins_rust/fc/src/lib.rs /^macro_rules! MT_USETMPDIR {$/;" M +MT_USETMPDIR externs.h /^#define MT_USETMPDIR /;" d +MUL expr.c /^#define MUL /;" d file: +MULOP2 lib/intl/plural.c /^ MULOP2 = 261,$/;" e enum:yytokentype file: +MULOP2 lib/intl/plural.c /^#define MULOP2 /;" d file: +MULTIPLE_COPROCS config-top.h /^# define MULTIPLE_COPROCS /;" d +MULT_MATCH lib/readline/readline.h /^#define MULT_MATCH /;" d +MV lib/glob/Makefile.in /^MV = mv$/;" m +MV lib/malloc/Makefile.in /^MV = mv$/;" m +MV lib/readline/Makefile.in /^MV = mv$/;" m +MV lib/sh/Makefile.in /^MV = mv$/;" m +MV lib/termcap/Makefile.in /^MV = mv$/;" m +MV lib/tilde/Makefile.in /^MV = mv$/;" m +M_OFFSET lib/readline/display.c /^#define M_OFFSET(/;" d file: +Machine Makefile.in /^Machine = @host_cpu@$/;" m +Macro vendor/syn/src/gen/clone.rs /^impl Clone for Macro {$/;" c +Macro vendor/syn/src/gen/debug.rs /^impl Debug for Macro {$/;" c +Macro vendor/syn/src/gen/eq.rs /^impl Eq for Macro {}$/;" c +Macro vendor/syn/src/gen/eq.rs /^impl PartialEq for Macro {$/;" c +Macro vendor/syn/src/gen/hash.rs /^impl Hash for Macro {$/;" c +Macro vendor/syn/src/mac.rs /^ impl Parse for Macro {$/;" c module:parsing +Macro vendor/syn/src/mac.rs /^ impl ToTokens for Macro {$/;" c module:printing +Macro vendor/syn/src/mac.rs /^impl Macro {$/;" c +MacroDelimiter vendor/syn/src/gen/clone.rs /^impl Clone for MacroDelimiter {$/;" c +MacroDelimiter vendor/syn/src/gen/debug.rs /^impl Debug for MacroDelimiter {$/;" c +MacroDelimiter vendor/syn/src/gen/eq.rs /^impl Eq for MacroDelimiter {}$/;" c +MacroDelimiter vendor/syn/src/gen/eq.rs /^impl PartialEq for MacroDelimiter {$/;" c +MacroDelimiter vendor/syn/src/gen/hash.rs /^impl Hash for MacroDelimiter {$/;" c +MacroDelimiter vendor/syn/src/item.rs /^ impl MacroDelimiter {$/;" c module:parsing +Macros vendor/unic-langid/README.md /^Macros$/;" s chapter:unic-langid [![Build Status](https://travis-ci.org/zbraniecki/unic-locale.svg?branch=master)](https://travis-ci.org/zbraniecki/unic-locale) [![Coverage Status](https://coveralls.io/repos/github/zbraniecki/unic-locale/badge.svg?branch=master)](https://coveralls.io/github/zbraniecki/unic-locale?branch=master) +MakeAbsoluteSD vendor/winapi/src/um/securitybaseapi.rs /^ pub fn MakeAbsoluteSD($/;" f +MakeDragList vendor/winapi/src/um/commctrl.rs /^ pub fn MakeDragList($/;" f +MakeSelfRelativeSD vendor/winapi/src/um/securitybaseapi.rs /^ pub fn MakeSelfRelativeSD($/;" f +MakeSignature vendor/winapi/src/shared/sspi.rs /^ pub fn MakeSignature($/;" f +MakeSureDirectoryPathExists vendor/winapi/src/um/dbghelp.rs /^ pub fn MakeSureDirectoryPathExists($/;" f +Makefile Makefile.in /^Makefile makefile: config.status $(srcdir)\/Makefile.in$/;" t +Makefile lib/intl/Makefile.in /^Makefile: $(srcdir)\/Makefile.in $(top_builddir)\/config.status$/;" t +Makefiles Makefile.in /^Makefiles makefiles: config.status $(srcdir)\/Makefile.in$/;" t +Making method calls vendor/quote/README.md /^### Making method calls$/;" S section:Rust Quasi-Quoting""Examples +ManageConnection vendor/async-trait/tests/test.rs /^ pub trait ManageConnection: Sized + Send + Sync + 'static {$/;" i module:issue145 +ManualAllow vendor/futures/tests/sink.rs /^impl Sink for ManualAllow {$/;" c +ManualAllow vendor/futures/tests/sink.rs /^struct ManualAllow {$/;" s +ManualFlush vendor/futures/tests/sink.rs /^impl ManualFlush {$/;" c +ManualFlush vendor/futures/tests/sink.rs /^impl Sink> for ManualFlush {$/;" c +ManualFlush vendor/futures/tests/sink.rs /^struct ManualFlush {$/;" s +Many vendor/thiserror/tests/test_from.rs /^pub enum Many {$/;" g +Map vendor/futures-util/src/future/future/map.rs /^impl FusedFuture for Map$/;" c +Map vendor/futures-util/src/future/future/map.rs /^impl Future for Map$/;" c +Map vendor/futures-util/src/future/future/map.rs /^impl Map {$/;" c +Map vendor/futures-util/src/stream/stream/map.rs /^impl Sink for Map$/;" c +Map vendor/futures-util/src/stream/stream/map.rs /^impl FusedStream for Map$/;" c +Map vendor/futures-util/src/stream/stream/map.rs /^impl Map {$/;" c +Map vendor/futures-util/src/stream/stream/map.rs /^impl Stream for Map$/;" c +Map vendor/futures-util/src/stream/stream/map.rs /^impl fmt::Debug for Map$/;" c +MapDebugInformation vendor/winapi/src/um/dbghelp.rs /^ pub fn MapDebugInformation($/;" f +MapDialogRect vendor/winapi/src/um/winuser.rs /^ pub fn MapDialogRect($/;" f +MapErrFn vendor/futures-util/src/fns.rs /^impl Fn1> for MapErrFn$/;" c +MapErrFn vendor/futures-util/src/fns.rs /^impl FnMut1> for MapErrFn$/;" c +MapErrFn vendor/futures-util/src/fns.rs /^impl FnOnce1> for MapErrFn$/;" c +MapErrFn vendor/futures-util/src/fns.rs /^pub struct MapErrFn(F);$/;" s +MapGenericMask vendor/winapi/src/um/securitybaseapi.rs /^ pub fn MapGenericMask($/;" f +MapOkFn vendor/futures-util/src/fns.rs /^impl Fn1> for MapOkFn$/;" c +MapOkFn vendor/futures-util/src/fns.rs /^impl FnMut1> for MapOkFn$/;" c +MapOkFn vendor/futures-util/src/fns.rs /^impl FnOnce1> for MapOkFn$/;" c +MapOkFn vendor/futures-util/src/fns.rs /^pub struct MapOkFn(F);$/;" s +MapOkOrElseFn vendor/futures-util/src/fns.rs /^pub(crate) type MapOkOrElseFn = ChainFn, ChainFn, MergeResultFn>>;$/;" t +MapUserPhysicalPages vendor/winapi/src/um/memoryapi.rs /^ pub fn MapUserPhysicalPages($/;" f +MapUserPhysicalPagesScatter vendor/winapi/src/um/winbase.rs /^ pub fn MapUserPhysicalPagesScatter($/;" f +MapViewOfFile vendor/winapi/src/um/memoryapi.rs /^ pub fn MapViewOfFile($/;" f +MapViewOfFileEx vendor/winapi/src/um/memoryapi.rs /^ pub fn MapViewOfFileEx($/;" f +MapViewOfFileExNuma vendor/winapi/src/um/winbase.rs /^ pub fn MapViewOfFileExNuma($/;" f +MapViewOfFileFromApp vendor/winapi/src/um/memoryapi.rs /^ pub fn MapViewOfFileFromApp($/;" f +MapVirtualKeyA vendor/winapi/src/um/winuser.rs /^ pub fn MapVirtualKeyA($/;" f +MapVirtualKeyExA vendor/winapi/src/um/winuser.rs /^ pub fn MapVirtualKeyExA($/;" f +MapVirtualKeyExW vendor/winapi/src/um/winuser.rs /^ pub fn MapVirtualKeyExW($/;" f +MapVirtualKeyW vendor/winapi/src/um/winuser.rs /^ pub fn MapVirtualKeyW($/;" f +MapWindowPoints vendor/winapi/src/um/winuser.rs /^ pub fn MapWindowPoints($/;" f +MapfileCmd builtins_rust/exec_cmd/src/lib.rs /^ MapfileCmd,$/;" e enum:CMDType +MapfileComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for MapfileComand {$/;" c +MapfileComand builtins_rust/exec_cmd/src/lib.rs /^struct MapfileComand;$/;" s +MappedMutexGuard vendor/futures-util/src/lock/mutex.rs /^impl<'a, T: ?Sized, U: ?Sized> MappedMutexGuard<'a, T, U> {$/;" c +MappedMutexGuard vendor/futures-util/src/lock/mutex.rs /^impl fmt::Debug for MappedMutexGuard<'_, T, U> {$/;" c +MappedMutexGuard vendor/futures-util/src/lock/mutex.rs /^impl Deref for MappedMutexGuard<'_, T, U> {$/;" c +MappedMutexGuard vendor/futures-util/src/lock/mutex.rs /^impl DerefMut for MappedMutexGuard<'_, T, U> {$/;" c +MappedMutexGuard vendor/futures-util/src/lock/mutex.rs /^impl Drop for MappedMutexGuard<'_, T, U> {$/;" c +MappedMutexGuard vendor/futures-util/src/lock/mutex.rs /^pub struct MappedMutexGuard<'a, T: ?Sized, U: ?Sized> {$/;" s +MappedMutexGuard vendor/futures-util/src/lock/mutex.rs /^unsafe impl Send for MappedMutexGuard<'_, T, U> {}$/;" c +MappedMutexGuard vendor/futures-util/src/lock/mutex.rs /^unsafe impl Sync for MappedMutexGuard<'_, T, U> {}$/;" c +Marker vendor/proc-macro2/src/marker.rs /^pub(crate) type Marker = PhantomData;$/;" t +MaskBlt vendor/winapi/src/um/wingdi.rs /^ pub fn MaskBlt($/;" f +Matching vendor/fluent-langneg/src/negotiate/mod.rs /^ Matching,$/;" e enum:NegotiationStrategy +Maximal vendor/memchr/src/memmem/twoway.rs /^ Maximal,$/;" e enum:SuffixKind +MaybeDone vendor/futures-util/src/future/maybe_done.rs /^impl Unpin for MaybeDone {}$/;" c +MaybeDone vendor/futures-util/src/future/maybe_done.rs /^impl FusedFuture for MaybeDone {$/;" c +MaybeDone vendor/futures-util/src/future/maybe_done.rs /^impl Future for MaybeDone {$/;" c +MaybeDone vendor/futures-util/src/future/maybe_done.rs /^impl MaybeDone {$/;" c +MaybeDone vendor/futures-util/src/future/maybe_done.rs /^pub enum MaybeDone {$/;" g +MaybePending vendor/futures/tests/io_buf_reader.rs /^impl AsyncBufRead for MaybePending<'_> {$/;" c +MaybePending vendor/futures/tests/io_buf_reader.rs /^impl AsyncRead for MaybePending<'_> {$/;" c +MaybePending vendor/futures/tests/io_buf_reader.rs /^impl<'a> MaybePending<'a> {$/;" c +MaybePending vendor/futures/tests/io_buf_reader.rs /^struct MaybePending<'a> {$/;" s +MaybePending vendor/futures/tests/io_buf_writer.rs /^impl AsyncWrite for MaybePending {$/;" c +MaybePending vendor/futures/tests/io_buf_writer.rs /^impl MaybePending {$/;" c +MaybePending vendor/futures/tests/io_buf_writer.rs /^struct MaybePending {$/;" s +MaybePendingSeek vendor/futures/tests/io_buf_reader.rs /^ impl AsyncBufRead for MaybePendingSeek<'_> {$/;" c function:maybe_pending_seek +MaybePendingSeek vendor/futures/tests/io_buf_reader.rs /^ impl AsyncRead for MaybePendingSeek<'_> {$/;" c function:maybe_pending_seek +MaybePendingSeek vendor/futures/tests/io_buf_reader.rs /^ impl AsyncSeek for MaybePendingSeek<'_> {$/;" c function:maybe_pending_seek +MaybePendingSeek vendor/futures/tests/io_buf_reader.rs /^ impl<'a> MaybePendingSeek<'a> {$/;" c function:maybe_pending_seek +MaybePendingSeek vendor/futures/tests/io_buf_reader.rs /^ struct MaybePendingSeek<'a> {$/;" s function:maybe_pending_seek +MaybePendingSeek vendor/futures/tests/io_buf_writer.rs /^ impl AsyncSeek for MaybePendingSeek {$/;" c function:maybe_pending_buf_writer_seek +MaybePendingSeek vendor/futures/tests/io_buf_writer.rs /^ impl AsyncWrite for MaybePendingSeek {$/;" c function:maybe_pending_buf_writer_seek +MaybePendingSeek vendor/futures/tests/io_buf_writer.rs /^ impl MaybePendingSeek {$/;" c function:maybe_pending_buf_writer_seek +MaybePendingSeek vendor/futures/tests/io_buf_writer.rs /^ struct MaybePendingSeek {$/;" s function:maybe_pending_buf_writer_seek +Member vendor/memoffset/src/span_of.rs /^ struct Member {$/;" s function:tests::ig_test +Member vendor/syn/src/expr.rs /^ impl Member {$/;" c module:parsing +Member vendor/syn/src/expr.rs /^ impl Parse for Member {$/;" c module:parsing +Member vendor/syn/src/expr.rs /^ impl ToTokens for Member {$/;" c module:printing +Member vendor/syn/src/expr.rs /^impl Eq for Member {}$/;" c +Member vendor/syn/src/expr.rs /^impl From for Member {$/;" c +Member vendor/syn/src/expr.rs /^impl From for Member {$/;" c +Member vendor/syn/src/expr.rs /^impl From for Member {$/;" c +Member vendor/syn/src/expr.rs /^impl Hash for Member {$/;" c +Member vendor/syn/src/expr.rs /^impl IdentFragment for Member {$/;" c +Member vendor/syn/src/expr.rs /^impl PartialEq for Member {$/;" c +Member vendor/syn/src/gen/clone.rs /^impl Clone for Member {$/;" c +Member vendor/syn/src/gen/debug.rs /^impl Debug for Member {$/;" c +Member vendor/syn/src/pat.rs /^ impl Member {$/;" c module:parsing +Memchr vendor/memchr/src/memchr/iter.rs /^impl<'a> DoubleEndedIterator for Memchr<'a> {$/;" c +Memchr vendor/memchr/src/memchr/iter.rs /^impl<'a> Iterator for Memchr<'a> {$/;" c +Memchr vendor/memchr/src/memchr/iter.rs /^impl<'a> Memchr<'a> {$/;" c +Memchr vendor/memchr/src/memchr/iter.rs /^pub struct Memchr<'a> {$/;" s +Memchr2 vendor/memchr/src/memchr/iter.rs /^impl<'a> DoubleEndedIterator for Memchr2<'a> {$/;" c +Memchr2 vendor/memchr/src/memchr/iter.rs /^impl<'a> Iterator for Memchr2<'a> {$/;" c +Memchr2 vendor/memchr/src/memchr/iter.rs /^impl<'a> Memchr2<'a> {$/;" c +Memchr2 vendor/memchr/src/memchr/iter.rs /^pub struct Memchr2<'a> {$/;" s +Memchr3 vendor/memchr/src/memchr/iter.rs /^impl<'a> DoubleEndedIterator for Memchr3<'a> {$/;" c +Memchr3 vendor/memchr/src/memchr/iter.rs /^impl<'a> Iterator for Memchr3<'a> {$/;" c +Memchr3 vendor/memchr/src/memchr/iter.rs /^impl<'a> Memchr3<'a> {$/;" c +Memchr3 vendor/memchr/src/memchr/iter.rs /^pub struct Memchr3<'a> {$/;" s +MemchrTest vendor/memchr/src/tests/memchr/testdata.rs /^impl MemchrTest {$/;" c +MemchrTest vendor/memchr/src/tests/memchr/testdata.rs /^pub struct MemchrTest {$/;" s +MemchrTestStatic vendor/memchr/src/tests/memchr/testdata.rs /^pub struct MemchrTestStatic {$/;" s +Memoizable vendor/intl-memoizer/src/lib.rs /^pub trait Memoizable {$/;" i +MemoizerKind vendor/fluent-bundle/src/memoizer.rs /^pub trait MemoizerKind: 'static {$/;" i +MenuHelp vendor/winapi/src/um/commctrl.rs /^ pub fn MenuHelp($/;" f +MenuItemFromPoint vendor/winapi/src/um/winuser.rs /^ pub fn MenuItemFromPoint($/;" f +MergeResultFn vendor/futures-util/src/fns.rs /^impl FnOnce1> for MergeResultFn {$/;" c +MergeResultFn vendor/futures-util/src/fns.rs /^pub struct MergeResultFn;$/;" s +Message vendor/fluent-bundle/src/entry.rs /^ Message((usize, usize)),$/;" e enum:Entry +Message vendor/fluent-bundle/src/errors.rs /^ Message,$/;" e enum:EntryKind +Message vendor/fluent-bundle/src/resolver/errors.rs /^ Message {$/;" e enum:ReferenceKind +Message vendor/fluent-syntax/src/ast/mod.rs /^ Message(Message),$/;" e enum:Entry +Message vendor/fluent-syntax/src/ast/mod.rs /^pub struct Message {$/;" s +Message vendor/futures-executor/src/thread_pool.rs /^enum Message {$/;" g +MessageAttributeAsSelector vendor/fluent-syntax/src/parser/errors.rs /^ MessageAttributeAsSelector,$/;" e enum:ErrorKind +MessageBeep vendor/winapi/src/um/winuser.rs /^ pub fn MessageBeep($/;" f +MessageBoxA vendor/winapi/src/um/winuser.rs /^ pub fn MessageBoxA($/;" f +MessageBoxExA vendor/winapi/src/um/winuser.rs /^ pub fn MessageBoxExA($/;" f +MessageBoxExW vendor/winapi/src/um/winuser.rs /^ pub fn MessageBoxExW($/;" f +MessageBoxIndirectA vendor/winapi/src/um/winuser.rs /^ pub fn MessageBoxIndirectA($/;" f +MessageBoxIndirectW vendor/winapi/src/um/winuser.rs /^ pub fn MessageBoxIndirectW($/;" f +MessageBoxW vendor/winapi/src/um/winuser.rs /^ pub fn MessageBoxW($/;" f +MessageReference vendor/fluent-syntax/src/ast/mod.rs /^ MessageReference {$/;" e enum:InlineExpression +MessageReferenceAsSelector vendor/fluent-syntax/src/parser/errors.rs /^ MessageReferenceAsSelector,$/;" e enum:ErrorKind +Meta vendor/syn/src/attr.rs /^ impl Parse for Meta {$/;" c module:parsing +Meta vendor/syn/src/attr.rs /^impl Meta {$/;" c +Meta vendor/syn/src/gen/clone.rs /^impl Clone for Meta {$/;" c +Meta vendor/syn/src/gen/debug.rs /^impl Debug for Meta {$/;" c +Meta vendor/syn/src/gen/eq.rs /^impl Eq for Meta {}$/;" c +Meta vendor/syn/src/gen/eq.rs /^impl PartialEq for Meta {$/;" c +Meta vendor/syn/src/gen/hash.rs /^impl Hash for Meta {$/;" c +MetaList vendor/syn/src/attr.rs /^ impl Parse for MetaList {$/;" c module:parsing +MetaList vendor/syn/src/attr.rs /^ impl ToTokens for MetaList {$/;" c module:printing +MetaList vendor/syn/src/gen/clone.rs /^impl Clone for MetaList {$/;" c +MetaList vendor/syn/src/gen/debug.rs /^impl Debug for MetaList {$/;" c +MetaList vendor/syn/src/gen/eq.rs /^impl Eq for MetaList {}$/;" c +MetaList vendor/syn/src/gen/eq.rs /^impl PartialEq for MetaList {$/;" c +MetaList vendor/syn/src/gen/hash.rs /^impl Hash for MetaList {$/;" c +MetaNameValue vendor/syn/src/attr.rs /^ impl Parse for MetaNameValue {$/;" c module:parsing +MetaNameValue vendor/syn/src/attr.rs /^ impl ToTokens for MetaNameValue {$/;" c module:printing +MetaNameValue vendor/syn/src/gen/clone.rs /^impl Clone for MetaNameValue {$/;" c +MetaNameValue vendor/syn/src/gen/debug.rs /^impl Debug for MetaNameValue {$/;" c +MetaNameValue vendor/syn/src/gen/eq.rs /^impl Eq for MetaNameValue {}$/;" c +MetaNameValue vendor/syn/src/gen/eq.rs /^impl PartialEq for MetaNameValue {$/;" c +MetaNameValue vendor/syn/src/gen/hash.rs /^impl Hash for MetaNameValue {$/;" c +MethodTurbofish vendor/syn/src/expr.rs /^ impl Parse for MethodTurbofish {$/;" c module:parsing +MethodTurbofish vendor/syn/src/expr.rs /^ impl ToTokens for MethodTurbofish {$/;" c module:printing +MethodTurbofish vendor/syn/src/gen/clone.rs /^impl Clone for MethodTurbofish {$/;" c +MethodTurbofish vendor/syn/src/gen/debug.rs /^impl Debug for MethodTurbofish {$/;" c +MethodTurbofish vendor/syn/src/gen/eq.rs /^impl Eq for MethodTurbofish {}$/;" c +MethodTurbofish vendor/syn/src/gen/eq.rs /^impl PartialEq for MethodTurbofish {$/;" c +MethodTurbofish vendor/syn/src/gen/hash.rs /^impl Hash for MethodTurbofish {$/;" c +Min required rustc version vendor/self_cell/README.md /^## Min required rustc version$/;" s chapter:`self_cell!` +Minimal vendor/memchr/src/memmem/twoway.rs /^ Minimal,$/;" e enum:SuffixKind +Minimum Rust version policy vendor/autocfg/README.md /^## Minimum Rust version policy$/;" s chapter:autocfg +Minimum Rust version policy vendor/memchr/README.md /^### Minimum Rust version policy$/;" S chapter:memchr +Minimum Supported Rust Version (MSRV) vendor/nix/README.md /^## Minimum Supported Rust Version (MSRV)$/;" s chapter:Rust bindings to *nix APIs +Minimum supported `rustc` vendor/lazy_static/README.md /^## Minimum supported `rustc`$/;" s chapter:lazy-static.rs +MissingDefault vendor/fluent-bundle/src/resolver/errors.rs /^ MissingDefault,$/;" e enum:ResolverError +MissingDefaultVariant vendor/fluent-syntax/src/parser/errors.rs /^ MissingDefaultVariant,$/;" e enum:ErrorKind +MissingMessage vendor/fluent-fallback/src/errors.rs /^ MissingMessage {$/;" e enum:LocalizationError +MissingValue vendor/fluent-fallback/src/bundles.rs /^ MissingValue,$/;" e enum:Value +MissingValue vendor/fluent-fallback/src/errors.rs /^ MissingValue {$/;" e enum:LocalizationError +MissingValue vendor/fluent-syntax/src/parser/errors.rs /^ MissingValue,$/;" e enum:ErrorKind +MockHintIter vendor/smallvec/src/tests.rs /^impl Iterator for MockHintIter {$/;" c +MockHintIter vendor/smallvec/src/tests.rs /^struct MockHintIter {$/;" s +MockLikelySubtags vendor/fluent-langneg/src/negotiate/likely_subtags.rs /^pub trait MockLikelySubtags {$/;" i +MockReader vendor/futures/tests/io_read.rs /^impl AsyncRead for MockReader {$/;" c +MockReader vendor/futures/tests/io_read.rs /^impl MockReader {$/;" c +MockReader vendor/futures/tests/io_read.rs /^struct MockReader {$/;" s +MockWriter vendor/futures/tests/io_write.rs /^impl AsyncWrite for MockWriter {$/;" c +MockWriter vendor/futures/tests/io_write.rs /^impl MockWriter {$/;" c +MockWriter vendor/futures/tests/io_write.rs /^struct MockWriter {$/;" s +Moderation vendor/rustc-hash/CODE_OF_CONDUCT.md /^## Moderation$/;" s chapter:The Rust Code of Conduct +ModifyMenuA vendor/winapi/src/um/winuser.rs /^ pub fn ModifyMenuA($/;" f +ModifyMenuW vendor/winapi/src/um/winuser.rs /^ pub fn ModifyMenuW($/;" f +ModifyWorldTransform vendor/winapi/src/um/wingdi.rs /^ pub fn ModifyWorldTransform($/;" f +Module32First vendor/winapi/src/um/tlhelp32.rs /^ pub fn Module32First($/;" f +Module32FirstW vendor/winapi/src/um/tlhelp32.rs /^ pub fn Module32FirstW($/;" f +Module32Next vendor/winapi/src/um/tlhelp32.rs /^ pub fn Module32Next($/;" f +Module32NextW vendor/winapi/src/um/tlhelp32.rs /^ pub fn Module32NextW($/;" f +MonitorFromPoint vendor/winapi/src/um/winuser.rs /^ pub fn MonitorFromPoint($/;" f +MonitorFromRect vendor/winapi/src/um/winuser.rs /^ pub fn MonitorFromRect($/;" f +MonitorFromWindow vendor/winapi/src/um/winuser.rs /^ pub fn MonitorFromWindow($/;" f +Motivation vendor/stdext/README.md /^## Motivation$/;" s chapter:`std` extensions +MoveFileA vendor/winapi/src/um/winbase.rs /^ pub fn MoveFileA($/;" f +MoveFileExA vendor/winapi/src/um/winbase.rs /^ pub fn MoveFileExA($/;" f +MoveFileExW vendor/winapi/src/um/winbase.rs /^ pub fn MoveFileExW($/;" f +MoveFileTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn MoveFileTransactedA($/;" f +MoveFileTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn MoveFileTransactedW($/;" f +MoveFileW vendor/winapi/src/um/winbase.rs /^ pub fn MoveFileW($/;" f +MoveFileWithProgressA vendor/winapi/src/um/winbase.rs /^ pub fn MoveFileWithProgressA($/;" f +MoveFileWithProgressW vendor/winapi/src/um/winbase.rs /^ pub fn MoveFileWithProgressW($/;" f +MoveToEx vendor/winapi/src/um/wingdi.rs /^ pub fn MoveToEx($/;" f +MoveWindow vendor/winapi/src/um/winuser.rs /^ pub fn MoveWindow($/;" f +Mpls vendor/nix/src/sys/socket/addr.rs /^ Mpls = libc::AF_MPLS,$/;" e enum:AddressFamily +MqAttr vendor/nix/src/mqueue.rs /^impl MqAttr {$/;" c +MqAttr vendor/nix/src/mqueue.rs /^pub struct MqAttr {$/;" s +MqdT vendor/nix/src/mqueue.rs /^pub struct MqdT(mqd_t);$/;" s +MsgWaitForMultipleObjects vendor/winapi/src/um/winuser.rs /^ pub fn MsgWaitForMultipleObjects($/;" f +MsgWaitForMultipleObjectsEx vendor/winapi/src/um/winuser.rs /^ pub fn MsgWaitForMultipleObjectsEx($/;" f +MulDiv vendor/winapi/src/um/winbase.rs /^ pub fn MulDiv($/;" f +Multi vendor/fluent-syntax/src/ast/helper.rs /^ Multi { content: Vec },$/;" e enum:CommentDef +MultiByteToWideChar vendor/winapi/src/um/stringapiset.rs /^ pub fn MultiByteToWideChar($/;" f +MultinetGetConnectionPerformanceA vendor/winapi/src/um/winnetwk.rs /^ pub fn MultinetGetConnectionPerformanceA($/;" f +MultinetGetConnectionPerformanceW vendor/winapi/src/um/winnetwk.rs /^ pub fn MultinetGetConnectionPerformanceW($/;" f +MultipleDefaultVariants vendor/fluent-syntax/src/parser/errors.rs /^ MultipleDefaultVariants,$/;" e enum:ErrorKind +MustNotImplDrop vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ trait MustNotImplDrop {}$/;" i +MustNotImplDrop vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ trait MustNotImplDrop {}$/;" i +Mutex vendor/futures-util/src/lock/mutex.rs /^impl Mutex {$/;" c +Mutex vendor/futures-util/src/lock/mutex.rs /^impl fmt::Debug for Mutex {$/;" c +Mutex vendor/futures-util/src/lock/mutex.rs /^impl Default for Mutex {$/;" c +Mutex vendor/futures-util/src/lock/mutex.rs /^impl From for Mutex {$/;" c +Mutex vendor/futures-util/src/lock/mutex.rs /^impl Mutex {$/;" c +Mutex vendor/futures-util/src/lock/mutex.rs /^pub struct Mutex {$/;" s +Mutex vendor/futures-util/src/lock/mutex.rs /^unsafe impl Send for Mutex {}$/;" c +Mutex vendor/futures-util/src/lock/mutex.rs /^unsafe impl Sync for Mutex {}$/;" c +Mutex vendor/stdext/src/sync/mutex.rs /^impl MutexExt for Mutex {$/;" c +MutexExt vendor/stdext/src/sync/mutex.rs /^pub trait MutexExt {$/;" i +MutexGuard vendor/futures-util/src/lock/mutex.rs /^impl<'a, T: ?Sized> MutexGuard<'a, T> {$/;" c +MutexGuard vendor/futures-util/src/lock/mutex.rs /^impl fmt::Debug for MutexGuard<'_, T> {$/;" c +MutexGuard vendor/futures-util/src/lock/mutex.rs /^impl Deref for MutexGuard<'_, T> {$/;" c +MutexGuard vendor/futures-util/src/lock/mutex.rs /^impl DerefMut for MutexGuard<'_, T> {$/;" c +MutexGuard vendor/futures-util/src/lock/mutex.rs /^impl Drop for MutexGuard<'_, T> {$/;" c +MutexGuard vendor/futures-util/src/lock/mutex.rs /^pub struct MutexGuard<'a, T: ?Sized> {$/;" s +MutexGuard vendor/futures-util/src/lock/mutex.rs /^unsafe impl Send for MutexGuard<'_, T> {}$/;" c +MutexGuard vendor/futures-util/src/lock/mutex.rs /^unsafe impl Sync for MutexGuard<'_, T> {}$/;" c +MutexGuard vendor/stable_deref_trait/src/lib.rs /^unsafe impl<'a, T: ?Sized> StableDeref for MutexGuard<'a, T> {}$/;" c +MutexLockFuture vendor/futures-util/src/lock/mutex.rs /^impl<'a, T: ?Sized> Future for MutexLockFuture<'a, T> {$/;" c +MutexLockFuture vendor/futures-util/src/lock/mutex.rs /^impl Drop for MutexLockFuture<'_, T> {$/;" c +MutexLockFuture vendor/futures-util/src/lock/mutex.rs /^impl FusedFuture for MutexLockFuture<'_, T> {$/;" c +MutexLockFuture vendor/futures-util/src/lock/mutex.rs /^impl fmt::Debug for MutexLockFuture<'_, T> {$/;" c +MutexLockFuture vendor/futures-util/src/lock/mutex.rs /^pub struct MutexLockFuture<'a, T: ?Sized> {$/;" s +MutexLockFuture vendor/futures-util/src/lock/mutex.rs /^unsafe impl Send for MutexLockFuture<'_, T> {}$/;" c +MutexLockFuture vendor/futures-util/src/lock/mutex.rs /^unsafe impl Sync for MutexLockFuture<'_, T> {}$/;" c +MyError vendor/thiserror/tests/test_backtrace.rs /^ struct MyError {$/;" s function:structs::test_provide_name_collision +MyError vendor/thiserror/tests/test_lints.rs /^ pub struct MyError;$/;" s function:test_unused_qualifications +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl Binary for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl BitAnd for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl BitAndAssign for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl BitOr for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl BitOrAssign for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl BitXor for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl BitXorAssign for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl Debug for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl Display for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl LowerHex for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl Not for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl Octal for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^impl UpperHex for MyInt {$/;" c +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^struct MyInt(u8);$/;" s +MyInt vendor/bitflags/tests/compile-fail/non_integer_base/all_missing.rs /^struct MyInt(u8);$/;" s +MyRead vendor/futures/tests/io_read_to_end.rs /^ impl AsyncRead for MyRead {$/;" c function:issue2310 +MyRead vendor/futures/tests/io_read_to_end.rs /^ impl MyRead {$/;" c function:issue2310 +MyRead vendor/futures/tests/io_read_to_end.rs /^ struct MyRead {$/;" s function:issue2310 +MyStruct vendor/async-trait/tests/test.rs /^ impl Trait for MyStruct {$/;" c module:issue161 +MyStruct vendor/async-trait/tests/test.rs /^ pub struct MyStruct(bool);$/;" s module:issue161 +MyTrait vendor/async-trait/tests/test.rs /^ pub trait MyTrait {$/;" i module:issue147 +MyTrait vendor/async-trait/tests/test.rs /^ pub trait MyTrait {$/;" i module:issue154 +MyTrait vendor/futures/tests/try_join.rs /^trait MyTrait {$/;" i +MyType vendor/async-trait/tests/test.rs /^ impl MyTrait for MyType {$/;" c module:issue147 +MyType vendor/async-trait/tests/test.rs /^ pub struct MyType;$/;" s module:issue147 +MyType vendor/type-map/src/lib.rs /^ struct MyType(i32);$/;" s function:test_type_map +MyType2 vendor/type-map/src/lib.rs /^ struct MyType2(String);$/;" s function:test_type_map +N vendor/smallvec/src/lib.rs /^unsafe impl Array for [T; N] {$/;" c +NAMEREF_MAX variables.h /^#define NAMEREF_MAX /;" d +NAME_MAX include/maxpath.h /^# define NAME_MAX /;" d +NAME_MAX include/maxpath.h /^# define NAME_MAX /;" d +NBUCKETS lib/malloc/malloc.c /^#define NBUCKETS /;" d file: +NBUCKETS lib/malloc/mstats.h /^# define NBUCKETS /;" d +NCMDS builtins_rust/ulimit/src/lib.rs /^macro_rules! NCMDS {$/;" M +NCRYPT_HANDLE vendor/winapi/src/um/ncrypt.rs /^pub type NCRYPT_HANDLE = ULONG_PTR;$/;" t +NCRYPT_HASH_HANDLE vendor/winapi/src/um/ncrypt.rs /^pub type NCRYPT_HASH_HANDLE = ULONG_PTR;$/;" t +NCRYPT_KEY_HANDLE vendor/winapi/src/um/ncrypt.rs /^pub type NCRYPT_KEY_HANDLE = ULONG_PTR;$/;" t +NCRYPT_PROV_HANDLE vendor/winapi/src/um/ncrypt.rs /^pub type NCRYPT_PROV_HANDLE = ULONG_PTR;$/;" t +NCRYPT_SECRET_HANDLE vendor/winapi/src/um/ncrypt.rs /^pub type NCRYPT_SECRET_HANDLE = ULONG_PTR;$/;" t +NCryptBufferDesc vendor/winapi/src/um/ncrypt.rs /^pub type NCryptBufferDesc = BCryptBufferDesc;$/;" t +NCryptFreeObject vendor/winapi/src/um/ncrypt.rs /^ pub fn NCryptFreeObject($/;" f +NCryptImportKey vendor/winapi/src/um/ncrypt.rs /^ pub fn NCryptImportKey($/;" f +NCryptOpenStorageProvider vendor/winapi/src/um/ncrypt.rs /^ pub fn NCryptOpenStorageProvider($/;" f +NCryptSetProperty vendor/winapi/src/um/ncrypt.rs /^ pub fn NCryptSetProperty($/;" f +NDIS_STATUS vendor/winapi/src/shared/ntddndis.rs /^pub type NDIS_STATUS = c_int;$/;" t +NE test.c /^#define NE /;" d file: +NEARPROC vendor/winapi/src/shared/minwindef.rs /^pub type NEARPROC = *mut __some_function;$/;" t +NEEDARG builtins/getopt.c /^#define NEEDARG(/;" d file: +NEED_FPURGE_DECL builtins/common.c /^#define NEED_FPURGE_DECL$/;" d file: +NEED_FPURGE_DECL execute_cmd.c /^#define NEED_FPURGE_DECL$/;" d file: +NEED_FPURGE_DECL lib/sh/fpurge.c /^#define NEED_FPURGE_DECL$/;" d file: +NEED_FPURGE_DECL redir.c /^#define NEED_FPURGE_DECL$/;" d file: +NEED_FPURGE_DECL subst.c /^#define NEED_FPURGE_DECL$/;" d file: +NEED_SH_SETLINEBUF_DECL execute_cmd.c /^#define NEED_SH_SETLINEBUF_DECL$/;" d file: +NEED_SH_SETLINEBUF_DECL shell.c /^#define NEED_SH_SETLINEBUF_DECL /;" d file: +NEED_XTRACE_SET_DECL print_cmd.c /^#define NEED_XTRACE_SET_DECL$/;" d file: +NEED_XTRACE_SET_DECL variables.c /^#define NEED_XTRACE_SET_DECL$/;" d file: +NEQ expr.c /^#define NEQ /;" d file: +NETIOAPI_API vendor/winapi/src/shared/netioapi.rs /^pub type NETIOAPI_API = NETIO_STATUS;$/;" t +NETIO_STATUS vendor/winapi/src/shared/netioapi.rs /^pub type NETIO_STATUS = DWORD;$/;" t +NETWORK_REDIRECTIONS configure.ac /^AC_DEFINE(NETWORK_REDIRECTIONS)$/;" d +NET_API_STATUS vendor/winapi/src/shared/lmcons.rs /^pub type NET_API_STATUS = DWORD;$/;" t +NET_IFINDEX vendor/winapi/src/shared/ifdef.rs /^pub type NET_IFINDEX = ULONG;$/;" t +NET_IFTYPE vendor/winapi/src/shared/ifdef.rs /^pub type NET_IFTYPE = UINT16;$/;" t +NET_IF_ALIAS vendor/winapi/src/shared/ifdef.rs /^pub type NET_IF_ALIAS = NET_IF_ALIAS_LH;$/;" t +NET_IF_COMPARTMENT_ID vendor/winapi/src/shared/ifdef.rs /^pub type NET_IF_COMPARTMENT_ID = UINT32;$/;" t +NET_IF_COMPARTMENT_SCOPE vendor/winapi/src/shared/ifdef.rs /^pub type NET_IF_COMPARTMENT_SCOPE = UINT32;$/;" t +NET_IF_NETWORK_GUID vendor/winapi/src/shared/ifdef.rs /^pub type NET_IF_NETWORK_GUID = GUID;$/;" t +NET_IF_OBJECT_ID vendor/winapi/src/shared/ifdef.rs /^pub type NET_IF_OBJECT_ID = ULONG32;$/;" t +NET_IF_RCV_ADDRESS vendor/winapi/src/shared/ifdef.rs /^pub type NET_IF_RCV_ADDRESS = NET_IF_RCV_ADDRESS_LH;$/;" t +NET_LUID vendor/winapi/src/shared/ifdef.rs /^pub type NET_LUID = NET_LUID_LH;$/;" t +NET_PHYSICAL_LOCATION vendor/winapi/src/shared/ifdef.rs /^pub type NET_PHYSICAL_LOCATION = NET_PHYSICAL_LOCATION_LH;$/;" t +NEWLINE lib/readline/chardefs.h /^#define NEWLINE /;" d +NEWLINE support/man2html.c /^static char NEWLINE[2] = "\\n";$/;" v typeref:typename:char[2] file: +NEW_TTY_DRIVER include/shtty.h /^# define NEW_TTY_DRIVER$/;" d +NEW_TTY_DRIVER lib/readline/rldefs.h /^# define NEW_TTY_DRIVER$/;" d +NEXT_LINE lib/readline/histsearch.c /^#define NEXT_LINE(/;" d file: +NFSERR_BADHANDLE vendor/libc/src/vxworks/mod.rs /^ NFSERR_BADHANDLE = 10001,$/;" e enum:nfsstat +NFSERR_BADTYPE vendor/libc/src/vxworks/mod.rs /^ NFSERR_BADTYPE = 10007,$/;" e enum:nfsstat +NFSERR_BAD_COOKIE vendor/libc/src/vxworks/mod.rs /^ NFSERR_BAD_COOKIE = 10003,$/;" e enum:nfsstat +NFSERR_JUKEBOX vendor/libc/src/vxworks/mod.rs /^ NFSERR_JUKEBOX = 10008,$/;" e enum:nfsstat +NFSERR_NOT_SYNC vendor/libc/src/vxworks/mod.rs /^ NFSERR_NOT_SYNC = 10002,$/;" e enum:nfsstat +NFSERR_REMOTE vendor/libc/src/vxworks/mod.rs /^ NFSERR_REMOTE = 71,$/;" e enum:nfsstat +NFSERR_TOOSMALL vendor/libc/src/vxworks/mod.rs /^ NFSERR_TOOSMALL = 10005,$/;" e enum:nfsstat +NFSERR_WFLUSH vendor/libc/src/vxworks/mod.rs /^ NFSERR_WFLUSH = 99,$/;" e enum:nfsstat +NGETTEXT lib/intl/ngettext.c /^# define NGETTEXT /;" d file: +NGETTEXT lib/intl/ngettext.c /^NGETTEXT (msgid1, msgid2, n)$/;" f +NLS_FUNCTION vendor/winapi/src/um/winnls.rs /^pub type NLS_FUNCTION = DWORD;$/;" t +NMCLICK vendor/winapi/src/um/commctrl.rs /^pub type NMCLICK = NMMOUSE;$/;" t +NMSELECT vendor/winapi/src/um/commctrl.rs /^pub type NMSELECT = NMSELCHANGE;$/;" t +NM_CACHEHINT vendor/winapi/src/um/commctrl.rs /^pub type NM_CACHEHINT = NMLVCACHEHINT;$/;" t +NM_FINDITEMA vendor/winapi/src/um/commctrl.rs /^pub type NM_FINDITEMA = NMLVFINDITEMA;$/;" t +NM_FINDITEMW vendor/winapi/src/um/commctrl.rs /^pub type NM_FINDITEMW = NMLVFINDITEMW;$/;" t +NM_LISTVIEW vendor/winapi/src/um/commctrl.rs /^pub type NM_LISTVIEW = NMLISTVIEW;$/;" t +NM_ODSTATECHANGE vendor/winapi/src/um/commctrl.rs /^pub type NM_ODSTATECHANGE = NMLVODSTATECHANGE;$/;" t +NM_TREEVIEWA vendor/winapi/src/um/commctrl.rs /^pub type NM_TREEVIEWA = NMTREEVIEWA;$/;" t +NM_TREEVIEWW vendor/winapi/src/um/commctrl.rs /^pub type NM_TREEVIEWW = NMTREEVIEWW;$/;" t +NM_UPDOWN vendor/winapi/src/um/commctrl.rs /^pub type NM_UPDOWN = NMUPDOWN;$/;" t +NOCD builtins_rust/pushd/src/lib.rs /^macro_rules! NOCD {$/;" M +NOCLOBBER_REDIRECT command.h /^#define NOCLOBBER_REDIRECT /;" d +NOGROUP general.c /^# define NOGROUP /;" d file: +NON_ANCHORED_SEARCH lib/readline/histlib.h /^#define NON_ANCHORED_SEARCH /;" d +NON_INTERACTIVE_LOGIN_SHELLS config-top.h /^#define NON_INTERACTIVE_LOGIN_SHELLS$/;" d +NON_NEGATIVE lib/readline/chardefs.h /^# define NON_NEGATIVE(/;" d +NOOP_WAKER_INSTANCE vendor/futures-task/src/noop_waker.rs /^ static NOOP_WAKER_INSTANCE: SyncRawWaker = SyncRawWaker(noop_raw_waker());$/;" v function:noop_waker_ref +NOT expr.c /^#define NOT /;" d file: +NOTFOUND_HOOK execute_cmd.c /^# define NOTFOUND_HOOK /;" d file: +NOTIFICATION_MASK vendor/winapi/src/shared/ktmtypes.rs /^pub type NOTIFICATION_MASK = ULONG;$/;" t +NOTOPT builtins/bashgetopt.c /^#define NOTOPT(/;" d file: +NOT_FOUND lib/sh/snprintf.c /^#define NOT_FOUND /;" d file: +NOT_JUMPED bashjmp.h /^#define NOT_JUMPED /;" d +NOW general.h /^#define NOW /;" d +NO_BELL lib/readline/rldefs.h /^#define NO_BELL /;" d +NO_EDITING_MODE bashline.c /^# define NO_EDITING_MODE /;" d file: +NO_JOB builtins_rust/common/src/lib.rs /^macro_rules! NO_JOB {$/;" M +NO_JOB builtins_rust/jobs/src/lib.rs /^macro_rules! NO_JOB {$/;" M +NO_JOB builtins_rust/wait/src/lib.rs /^macro_rules! NO_JOB {$/;" M +NO_JOB jobs.h /^#define NO_JOB /;" d +NO_MATCH lib/readline/readline.h /^#define NO_MATCH /;" d +NO_MULTIBYTE_SUPPORT configure.ac /^AC_DEFINE(NO_MULTIBYTE_SUPPORT)$/;" d +NO_PID builtins_rust/wait/src/lib.rs /^macro_rules! NO_PID {$/;" M +NO_PID jobs.h /^#define NO_PID /;" d +NO_PIDSTAT jobs.h /^#define NO_PIDSTAT /;" d +NO_PIPE shell.h /^#define NO_PIPE /;" d +NO_PREV_SUBST lib/readline/histlib.h /^#define NO_PREV_SUBST /;" d +NO_SIG builtins_rust/common/src/lib.rs /^macro_rules! NO_SIG {$/;" M +NO_SIG trap.h /^#define NO_SIG /;" d +NO_TTY_DRIVER lib/readline/rldefs.h /^# define NO_TTY_DRIVER$/;" d +NO_VALLOC lib/malloc/malloc.c /^# define NO_VALLOC$/;" d file: +NO_VARIABLE shell.h /^#define NO_VARIABLE /;" d +NPABC vendor/winapi/src/um/wingdi.rs /^pub type NPABC = *mut ABC;$/;" t +NPABCFLOAT vendor/winapi/src/um/wingdi.rs /^pub type NPABCFLOAT = *mut ABCFLOAT;$/;" t +NPBITMAP vendor/winapi/src/um/wingdi.rs /^pub type NPBITMAP = *mut BITMAP;$/;" t +NPCHARSETINFO vendor/winapi/src/um/wingdi.rs /^pub type NPCHARSETINFO = *mut CHARSETINFO;$/;" t +NPCWPRETSTRUCT vendor/winapi/src/um/winuser.rs /^pub type NPCWPRETSTRUCT = *mut CWPRETSTRUCT;$/;" t +NPCWPSTRUCT vendor/winapi/src/um/winuser.rs /^pub type NPCWPSTRUCT = *mut CWPSTRUCT;$/;" t +NPDEBUGHOOKINFO vendor/winapi/src/um/winuser.rs /^pub type NPDEBUGHOOKINFO = *mut DEBUGHOOKINFO;$/;" t +NPDEVMODEA vendor/winapi/src/um/wingdi.rs /^pub type NPDEVMODEA = *mut DEVMODEA;$/;" t +NPDEVMODEW vendor/winapi/src/um/wingdi.rs /^pub type NPDEVMODEW = *mut DEVMODEW;$/;" t +NPEVENTMSG vendor/winapi/src/um/winuser.rs /^pub type NPEVENTMSG = *mut EVENTMSG;$/;" t +NPEVENTMSGMSG vendor/winapi/src/um/winuser.rs /^pub type NPEVENTMSGMSG = *mut EVENTMSG;$/;" t +NPEXTLOGFONTA vendor/winapi/src/um/wingdi.rs /^pub type NPEXTLOGFONTA = *mut EXTLOGFONTA;$/;" t +NPEXTLOGFONTW vendor/winapi/src/um/wingdi.rs /^pub type NPEXTLOGFONTW = *mut EXTLOGFONTW;$/;" t +NPEXTLOGPEN vendor/winapi/src/um/wingdi.rs /^pub type NPEXTLOGPEN = *mut EXTLOGPEN;$/;" t +NPEXTLOGPEN32 vendor/winapi/src/um/wingdi.rs /^pub type NPEXTLOGPEN32 = *mut EXTLOGPEN32;$/;" t +NPLOGBRUSH vendor/winapi/src/um/wingdi.rs /^pub type NPLOGBRUSH = *mut LOGBRUSH;$/;" t +NPLOGBRUSH32 vendor/winapi/src/um/wingdi.rs /^pub type NPLOGBRUSH32 = *mut LOGBRUSH32;$/;" t +NPLOGFONTA vendor/winapi/src/um/wingdi.rs /^pub type NPLOGFONTA = *mut LOGFONTA;$/;" t +NPLOGFONTW vendor/winapi/src/um/wingdi.rs /^pub type NPLOGFONTW = *mut LOGFONTW;$/;" t +NPLOGPALETTE vendor/winapi/src/um/wingdi.rs /^pub type NPLOGPALETTE = *mut LOGPALETTE;$/;" t +NPLOGPEN vendor/winapi/src/um/wingdi.rs /^pub type NPLOGPEN = *mut LOGPEN;$/;" t +NPMIDIHDR vendor/winapi/src/um/mmsystem.rs /^pub type NPMIDIHDR = *mut MIDIHDR;$/;" t +NPMIDIINCAPSW vendor/winapi/src/um/mmsystem.rs /^pub type NPMIDIINCAPSW = *mut MIDIINCAPSW;$/;" t +NPMIDIOUTCAPSW vendor/winapi/src/um/mmsystem.rs /^pub type NPMIDIOUTCAPSW = *mut MIDIOUTCAPSW;$/;" t +NPMMTIME vendor/winapi/src/um/mmsystem.rs /^pub type NPMMTIME = *mut MMTIME;$/;" t +NPMSG vendor/winapi/src/um/winuser.rs /^pub type NPMSG = *mut MSG;$/;" t +NPNEWTEXTMETRICA vendor/winapi/src/um/wingdi.rs /^pub type NPNEWTEXTMETRICA = *mut NEWTEXTMETRICA;$/;" t +NPNEWTEXTMETRICW vendor/winapi/src/um/wingdi.rs /^pub type NPNEWTEXTMETRICW = *mut NEWTEXTMETRICW;$/;" t +NPOUTLINETEXTMETRICA vendor/winapi/src/um/wingdi.rs /^pub type NPOUTLINETEXTMETRICA = *mut OUTLINETEXTMETRICA;$/;" t +NPOUTLINETEXTMETRICW vendor/winapi/src/um/wingdi.rs /^pub type NPOUTLINETEXTMETRICW = *mut OUTLINETEXTMETRICW;$/;" t +NPPAINTSTRUCT vendor/winapi/src/um/winuser.rs /^pub type NPPAINTSTRUCT = *mut PAINTSTRUCT;$/;" t +NPPATTERN vendor/winapi/src/um/wingdi.rs /^pub type NPPATTERN = *mut PATTERN;$/;" t +NPPELARRAY vendor/winapi/src/um/wingdi.rs /^pub type NPPELARRAY = *mut PELARRAY;$/;" t +NPPOINT vendor/winapi/src/shared/windef.rs /^pub type NPPOINT = *mut POINT;$/;" t +NPPOLYTEXTA vendor/winapi/src/um/wingdi.rs /^pub type NPPOLYTEXTA = *mut POLYTEXTA;$/;" t +NPPOLYTEXTW vendor/winapi/src/um/wingdi.rs /^pub type NPPOLYTEXTW = *mut POLYTEXTW;$/;" t +NPRECT vendor/winapi/src/shared/windef.rs /^pub type NPRECT = *mut RECT;$/;" t +NPRGBTRIPLE vendor/winapi/src/um/wingdi.rs /^pub type NPRGBTRIPLE = *mut RGBTRIPLE;$/;" t +NPRGNDATA vendor/winapi/src/um/wingdi.rs /^pub type NPRGNDATA = *mut RGNDATA;$/;" t +NPSTR vendor/winapi/src/shared/ntdef.rs /^pub type NPSTR = *mut CHAR;$/;" t +NPSTR vendor/winapi/src/um/winnt.rs /^pub type NPSTR = *mut CHAR;$/;" t +NPTEXTMETRICA vendor/winapi/src/um/wingdi.rs /^pub type NPTEXTMETRICA = *mut TEXTMETRICA;$/;" t +NPTEXTMETRICW vendor/winapi/src/um/wingdi.rs /^pub type NPTEXTMETRICW = *mut TEXTMETRICW;$/;" t +NPTIMECAPS vendor/winapi/src/um/mmsystem.rs /^pub type NPTIMECAPS = *mut TIMECAPS;$/;" t +NPWAVEFORMATEX vendor/winapi/src/um/mmsystem.rs /^pub type NPWAVEFORMATEX = *mut WAVEFORMATEX;$/;" t +NPWAVEHDR vendor/winapi/src/um/mmsystem.rs /^pub type NPWAVEHDR = *mut WAVEHDR;$/;" t +NPWAVEINCAPSW vendor/winapi/src/um/mmsystem.rs /^pub type NPWAVEINCAPSW = *mut WAVEINCAPSW;$/;" t +NPWAVEOUTCAPSW vendor/winapi/src/um/mmsystem.rs /^pub type NPWAVEOUTCAPSW = *mut WAVEOUTCAPSW;$/;" t +NPWNDCLASSA vendor/winapi/src/um/winuser.rs /^pub type NPWNDCLASSA = *mut WNDCLASSA;$/;" t +NPWNDCLASSEXA vendor/winapi/src/um/winuser.rs /^pub type NPWNDCLASSEXA = *mut WNDCLASSEXA;$/;" t +NPWNDCLASSEXW vendor/winapi/src/um/winuser.rs /^pub type NPWNDCLASSEXW = *mut WNDCLASSEXW;$/;" t +NPWNDCLASSW vendor/winapi/src/um/winuser.rs /^pub type NPWNDCLASSW = *mut WNDCLASSW;$/;" t +NROFF support/man2html.c /^#define NROFF /;" d file: +NSIG builtins_rust/common/src/lib.rs /^macro_rules! NSIG {$/;" M +NSIG support/mksignames.c /^# define NSIG /;" d file: +NSIG support/signames.c /^# define NSIG /;" d file: +NSIG trap.h /^#define NSIG /;" d +NSPStartup vendor/winapi/src/um/ws2spi.rs /^ pub fn NSPStartup($/;" f +NT test.c /^#define NT /;" d file: +NTSTATUS vendor/winapi/src/shared/bcrypt.rs /^pub type NTSTATUS = LONG;$/;" t +NTSTATUS vendor/winapi/src/shared/ntdef.rs /^pub type NTSTATUS = LONG;$/;" t +NTSTATUS vendor/winapi/src/um/lmaccess.rs /^pub type NTSTATUS = LONG;$/;" t +NTSTATUS vendor/winapi/src/um/powerbase.rs /^pub type NTSTATUS = LONG;$/;" t +NT_CHALLENGE vendor/winapi/src/um/subauth.rs /^pub type NT_CHALLENGE = LM_CHALLENGE;$/;" t +NT_ERROR vendor/winapi/src/shared/ntdef.rs /^pub fn NT_ERROR(Status: NTSTATUS) -> bool {$/;" f +NT_INFORMATION vendor/winapi/src/shared/ntdef.rs /^pub fn NT_INFORMATION(Status: NTSTATUS) -> bool {$/;" f +NT_OWF_PASSWORD vendor/winapi/src/um/mschapp.rs /^pub type NT_OWF_PASSWORD = LM_OWF_PASSWORD;$/;" t +NT_OWF_PASSWORD vendor/winapi/src/um/subauth.rs /^pub type NT_OWF_PASSWORD = LM_OWF_PASSWORD;$/;" t +NT_SUCCESS vendor/winapi/src/shared/ntdef.rs /^pub fn NT_SUCCESS(Status: NTSTATUS) -> bool {$/;" f +NT_WARNING vendor/winapi/src/shared/ntdef.rs /^pub fn NT_WARNING(Status: NTSTATUS) -> bool {$/;" f +NULL general.h /^# define NULL /;" d +NULL hashlib.c /^#define NULL /;" d file: +NULL hashlib.h /^# define NULL /;" d +NULL lib/glob/glob.c /^# define NULL /;" d file: +NULL lib/intl/explodename.c /^# define NULL /;" d file: +NULL lib/intl/l10nflist.c /^# define NULL /;" d file: +NULL lib/malloc/alloca.c /^#define NULL /;" d file: +NULL lib/malloc/imalloc.h /^# define NULL /;" d +NULL lib/readline/shell.c /^# define NULL /;" d file: +NULL lib/readline/tilde.c /^# define NULL /;" d file: +NULL lib/sh/getcwd.c /^# define NULL /;" d file: +NULL lib/sh/makepath.c /^# define NULL /;" d file: +NULL lib/sh/strtod.c /^# define NULL /;" d file: +NULL lib/sh/strtol.c /^# define NULL /;" d file: +NULL lib/sh/vprint.c /^# define NULL /;" d file: +NULL lib/termcap/termcap.c /^#define NULL /;" d file: +NULL lib/termcap/tparam.c /^#define NULL /;" d file: +NULL lib/tilde/tilde.c /^# define NULL /;" d file: +NULL_HANDLER sig.c /^#define NULL_HANDLER /;" d file: +NULL_PLACEHOLDER lib/glob/glob.c /^#define NULL_PLACEHOLDER(/;" d file: +NULL_TERMINATED support/man2html.c /^#define NULL_TERMINATED(/;" d file: +NUM expr.c /^#define NUM /;" d file: +NUMBER lib/intl/plural.c /^ NUMBER = 262$/;" e enum:yytokentype file: +NUMBER lib/intl/plural.c /^#define NUMBER /;" d file: +NUMBER_LEN execute_cmd.c /^#define NUMBER_LEN(/;" d file: +NUM_BUILTIN_KEYMAPS lib/readline/bind.c /^#define NUM_BUILTIN_KEYMAPS /;" d file: +NUM_INTR lib/sh/zread.c /^#define NUM_INTR /;" d file: +NUM_READONE lib/readline/rlprivate.h /^#define NUM_READONE /;" d +NUM_SAWDIGITS lib/readline/rlprivate.h /^#define NUM_SAWDIGITS /;" d +NUM_SAWMINUS lib/readline/rlprivate.h /^#define NUM_SAWMINUS /;" d +NUM_SHELL_FLAGS flags.c /^#define NUM_SHELL_FLAGS /;" d file: +NUM_TC_STRINGS lib/readline/terminal.c /^#define NUM_TC_STRINGS /;" d file: +NWF_DEFINE_OID vendor/winapi/src/shared/windot11.rs /^macro_rules! NWF_DEFINE_OID {$/;" M +NWF_DEFINE_OID vendor/winapi/src/shared/windot11.rs /^pub fn NWF_DEFINE_OID(Seq: u32, o: u32, m: u32) -> u32 {$/;" f +NWPSTR vendor/winapi/src/shared/ntdef.rs /^pub type NWPSTR = *mut WCHAR;$/;" t +NWPSTR vendor/winapi/src/um/winnt.rs /^pub type NWPSTR = *mut WCHAR;$/;" t +N_ bashintl.h /^#define N_(/;" d +N_CHAR_CLASS lib/glob/smatch.c /^#define N_CHAR_CLASS /;" d file: +N_O_OPTIONS builtins_rust/set/src/lib.rs /^macro_rules! N_O_OPTIONS {$/;" M +N_SPECIAL_VARS variables.c /^#define N_SPECIAL_VARS /;" d file: +N_WFLAGS mksyntax.c /^#define N_WFLAGS /;" d file: +Name vendor/fluent-bundle/src/types/number.rs /^ Name,$/;" e enum:FluentNumberCurrencyDisplayStyle +NamedArgument vendor/fluent-syntax/src/ast/mod.rs /^pub struct NamedArgument {$/;" s +Natm vendor/nix/src/sys/socket/addr.rs /^ Natm = libc::AF_NATM,$/;" e enum:AddressFamily +NeedCurrentDirectoryForExePathA vendor/winapi/src/um/processenv.rs /^ pub fn NeedCurrentDirectoryForExePathA($/;" f +NeedCurrentDirectoryForExePathW vendor/winapi/src/um/processenv.rs /^ pub fn NeedCurrentDirectoryForExePathW($/;" f +NeedleHash vendor/memchr/src/memmem/rabinkarp.rs /^impl NeedleHash {$/;" c +NeedleHash vendor/memchr/src/memmem/rabinkarp.rs /^pub(crate) struct NeedleHash {$/;" s +NeedleInfo vendor/memchr/src/memmem/mod.rs /^impl NeedleInfo {$/;" c +NeedleInfo vendor/memchr/src/memmem/mod.rs /^pub(crate) struct NeedleInfo {$/;" s +NegotiationStrategy vendor/fluent-langneg/src/negotiate/mod.rs /^pub enum NegotiationStrategy {$/;" g +NestedMeta vendor/syn/src/attr.rs /^ impl Parse for NestedMeta {$/;" c module:parsing +NestedMeta vendor/syn/src/gen/clone.rs /^impl Clone for NestedMeta {$/;" c +NestedMeta vendor/syn/src/gen/debug.rs /^impl Debug for NestedMeta {$/;" c +NestedMeta vendor/syn/src/gen/eq.rs /^impl Eq for NestedMeta {}$/;" c +NestedMeta vendor/syn/src/gen/eq.rs /^impl PartialEq for NestedMeta {$/;" c +NestedMeta vendor/syn/src/gen/hash.rs /^impl Hash for NestedMeta {$/;" c +NetAccessAdd vendor/winapi/src/um/lmaccess.rs /^ pub fn NetAccessAdd($/;" f +NetAccessDel vendor/winapi/src/um/lmaccess.rs /^ pub fn NetAccessDel($/;" f +NetAccessEnum vendor/winapi/src/um/lmaccess.rs /^ pub fn NetAccessEnum($/;" f +NetAccessGetInfo vendor/winapi/src/um/lmaccess.rs /^ pub fn NetAccessGetInfo($/;" f +NetAccessGetUserPerms vendor/winapi/src/um/lmaccess.rs /^ pub fn NetAccessGetUserPerms($/;" f +NetAccessSetInfo vendor/winapi/src/um/lmaccess.rs /^ pub fn NetAccessSetInfo($/;" f +NetAddAlternateComputerName vendor/winapi/src/um/lmjoin.rs /^ pub fn NetAddAlternateComputerName($/;" f +NetAddServiceAccount vendor/winapi/src/um/lmaccess.rs /^ pub fn NetAddServiceAccount($/;" f +NetAlertRaise vendor/winapi/src/um/lmalert.rs /^ pub fn NetAlertRaise($/;" f +NetAlertRaiseEx vendor/winapi/src/um/lmalert.rs /^ pub fn NetAlertRaiseEx($/;" f +NetApiBufferAllocate vendor/winapi/src/um/lmapibuf.rs /^ pub fn NetApiBufferAllocate($/;" f +NetApiBufferFree vendor/winapi/src/um/lmapibuf.rs /^ pub fn NetApiBufferFree($/;" f +NetApiBufferReallocate vendor/winapi/src/um/lmapibuf.rs /^ pub fn NetApiBufferReallocate($/;" f +NetApiBufferSize vendor/winapi/src/um/lmapibuf.rs /^ pub fn NetApiBufferSize($/;" f +NetBeui vendor/nix/src/sys/socket/addr.rs /^ NetBeui = libc::AF_NETBEUI,$/;" e enum:AddressFamily +NetConnectionEnum vendor/winapi/src/um/lmshare.rs /^ pub fn NetConnectionEnum($/;" f +NetCreateProvisioningPackage vendor/winapi/src/um/lmjoin.rs /^ pub fn NetCreateProvisioningPackage($/;" f +NetDfsAdd vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsAdd($/;" f +NetDfsAddFtRoot vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsAddFtRoot($/;" f +NetDfsAddRootTarget vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsAddRootTarget($/;" f +NetDfsAddStdRoot vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsAddStdRoot($/;" f +NetDfsEnum vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsEnum($/;" f +NetDfsGetClientInfo vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsGetClientInfo($/;" f +NetDfsGetFtContainerSecurity vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsGetFtContainerSecurity($/;" f +NetDfsGetInfo vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsGetInfo($/;" f +NetDfsGetSecurity vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsGetSecurity($/;" f +NetDfsGetStdContainerSecurity vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsGetStdContainerSecurity($/;" f +NetDfsGetSupportedNamespaceVersion vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsGetSupportedNamespaceVersion($/;" f +NetDfsMove vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsMove($/;" f +NetDfsRemove vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsRemove($/;" f +NetDfsRemoveFtRoot vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsRemoveFtRoot($/;" f +NetDfsRemoveFtRootForced vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsRemoveFtRootForced($/;" f +NetDfsRemoveRootTarget vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsRemoveRootTarget($/;" f +NetDfsRemoveStdRoot vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsRemoveStdRoot($/;" f +NetDfsRename vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsRename($/;" f +NetDfsSetClientInfo vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsSetClientInfo($/;" f +NetDfsSetFtContainerSecurity vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsSetFtContainerSecurity($/;" f +NetDfsSetInfo vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsSetInfo($/;" f +NetDfsSetSecurity vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsSetSecurity($/;" f +NetDfsSetStdContainerSecurity vendor/winapi/src/um/lmdfs.rs /^ pub fn NetDfsSetStdContainerSecurity($/;" f +NetEnumerateComputerNames vendor/winapi/src/um/lmjoin.rs /^ pub fn NetEnumerateComputerNames($/;" f +NetEnumerateServiceAccounts vendor/winapi/src/um/lmaccess.rs /^ pub fn NetEnumerateServiceAccounts($/;" f +NetEnumerateTrustedDomains vendor/winapi/src/um/lmaccess.rs /^ pub fn NetEnumerateTrustedDomains($/;" f +NetFileClose vendor/winapi/src/um/lmshare.rs /^ pub fn NetFileClose($/;" f +NetFileEnum vendor/winapi/src/um/lmshare.rs /^ pub fn NetFileEnum($/;" f +NetFileGetInfo vendor/winapi/src/um/lmshare.rs /^ pub fn NetFileGetInfo($/;" f +NetFreeAadJoinInformation vendor/winapi/src/um/lmjoin.rs /^ pub fn NetFreeAadJoinInformation($/;" f +NetGetAadJoinInformation vendor/winapi/src/um/lmjoin.rs /^ pub fn NetGetAadJoinInformation($/;" f +NetGetAnyDCName vendor/winapi/src/um/lmaccess.rs /^ pub fn NetGetAnyDCName($/;" f +NetGetDCName vendor/winapi/src/um/lmaccess.rs /^ pub fn NetGetDCName($/;" f +NetGetDisplayInformationIndex vendor/winapi/src/um/lmaccess.rs /^ pub fn NetGetDisplayInformationIndex($/;" f +NetGetJoinInformation vendor/winapi/src/um/lmjoin.rs /^ pub fn NetGetJoinInformation($/;" f +NetGetJoinableOUs vendor/winapi/src/um/lmjoin.rs /^ pub fn NetGetJoinableOUs($/;" f +NetGroupAdd vendor/winapi/src/um/lmaccess.rs /^ pub fn NetGroupAdd($/;" f +NetGroupAddUser vendor/winapi/src/um/lmaccess.rs /^ pub fn NetGroupAddUser($/;" f +NetGroupDel vendor/winapi/src/um/lmaccess.rs /^ pub fn NetGroupDel($/;" f +NetGroupDelUser vendor/winapi/src/um/lmaccess.rs /^ pub fn NetGroupDelUser($/;" f +NetGroupEnum vendor/winapi/src/um/lmaccess.rs /^ pub fn NetGroupEnum($/;" f +NetGroupGetInfo vendor/winapi/src/um/lmaccess.rs /^ pub fn NetGroupGetInfo($/;" f +NetGroupGetUsers vendor/winapi/src/um/lmaccess.rs /^ pub fn NetGroupGetUsers($/;" f +NetGroupSetInfo vendor/winapi/src/um/lmaccess.rs /^ pub fn NetGroupSetInfo($/;" f +NetGroupSetUsers vendor/winapi/src/um/lmaccess.rs /^ pub fn NetGroupSetUsers($/;" f +NetIsServiceAccount vendor/winapi/src/um/lmaccess.rs /^ pub fn NetIsServiceAccount($/;" f +NetJoinDomain vendor/winapi/src/um/lmjoin.rs /^ pub fn NetJoinDomain($/;" f +NetLocalGroupAdd vendor/winapi/src/um/lmaccess.rs /^ pub fn NetLocalGroupAdd($/;" f +NetLocalGroupAddMember vendor/winapi/src/um/lmaccess.rs /^ pub fn NetLocalGroupAddMember($/;" f +NetLocalGroupAddMembers vendor/winapi/src/um/lmaccess.rs /^ pub fn NetLocalGroupAddMembers($/;" f +NetLocalGroupDel vendor/winapi/src/um/lmaccess.rs /^ pub fn NetLocalGroupDel($/;" f +NetLocalGroupDelMember vendor/winapi/src/um/lmaccess.rs /^ pub fn NetLocalGroupDelMember($/;" f +NetLocalGroupDelMembers vendor/winapi/src/um/lmaccess.rs /^ pub fn NetLocalGroupDelMembers($/;" f +NetLocalGroupEnum vendor/winapi/src/um/lmaccess.rs /^ pub fn NetLocalGroupEnum($/;" f +NetLocalGroupGetInfo vendor/winapi/src/um/lmaccess.rs /^ pub fn NetLocalGroupGetInfo($/;" f +NetLocalGroupGetMembers vendor/winapi/src/um/lmaccess.rs /^ pub fn NetLocalGroupGetMembers($/;" f +NetLocalGroupSetInfo vendor/winapi/src/um/lmaccess.rs /^ pub fn NetLocalGroupSetInfo($/;" f +NetLocalGroupSetMembers vendor/winapi/src/um/lmaccess.rs /^ pub fn NetLocalGroupSetMembers($/;" f +NetMessageBufferSend vendor/winapi/src/um/lmmsg.rs /^ pub fn NetMessageBufferSend($/;" f +NetMessageNameAdd vendor/winapi/src/um/lmmsg.rs /^ pub fn NetMessageNameAdd($/;" f +NetMessageNameDel vendor/winapi/src/um/lmmsg.rs /^ pub fn NetMessageNameDel($/;" f +NetMessageNameEnum vendor/winapi/src/um/lmmsg.rs /^ pub fn NetMessageNameEnum($/;" f +NetMessageNameGetInfo vendor/winapi/src/um/lmmsg.rs /^ pub fn NetMessageNameGetInfo($/;" f +NetProvisionComputerAccount vendor/winapi/src/um/lmjoin.rs /^ pub fn NetProvisionComputerAccount($/;" f +NetQueryDisplayInformation vendor/winapi/src/um/lmaccess.rs /^ pub fn NetQueryDisplayInformation($/;" f +NetQueryServiceAccount vendor/winapi/src/um/lmaccess.rs /^ pub fn NetQueryServiceAccount($/;" f +NetRemoteComputerSupports vendor/winapi/src/um/lmremutl.rs /^ pub fn NetRemoteComputerSupports($/;" f +NetRemoteTOD vendor/winapi/src/um/lmremutl.rs /^ pub fn NetRemoteTOD($/;" f +NetRemoveAlternateComputerName vendor/winapi/src/um/lmjoin.rs /^ pub fn NetRemoveAlternateComputerName($/;" f +NetRemoveServiceAccount vendor/winapi/src/um/lmaccess.rs /^ pub fn NetRemoveServiceAccount($/;" f +NetRenameMachineInDomain vendor/winapi/src/um/lmjoin.rs /^ pub fn NetRenameMachineInDomain($/;" f +NetReplExportDirAdd vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplExportDirAdd($/;" f +NetReplExportDirDel vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplExportDirDel($/;" f +NetReplExportDirEnum vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplExportDirEnum($/;" f +NetReplExportDirGetInfo vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplExportDirGetInfo($/;" f +NetReplExportDirLock vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplExportDirLock($/;" f +NetReplExportDirSetInfo vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplExportDirSetInfo($/;" f +NetReplExportDirUnlock vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplExportDirUnlock($/;" f +NetReplGetInfo vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplGetInfo($/;" f +NetReplImportDirAdd vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplImportDirAdd($/;" f +NetReplImportDirDel vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplImportDirDel($/;" f +NetReplImportDirEnum vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplImportDirEnum($/;" f +NetReplImportDirGetInfo vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplImportDirGetInfo($/;" f +NetReplImportDirLock vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplImportDirLock($/;" f +NetReplImportDirUnlock vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplImportDirUnlock($/;" f +NetReplSetInfo vendor/winapi/src/um/lmrepl.rs /^ pub fn NetReplSetInfo($/;" f +NetRequestOfflineDomainJoin vendor/winapi/src/um/lmjoin.rs /^ pub fn NetRequestOfflineDomainJoin($/;" f +NetRequestProvisioningPackageInstall vendor/winapi/src/um/lmjoin.rs /^ pub fn NetRequestProvisioningPackageInstall($/;" f +NetRom vendor/nix/src/sys/socket/addr.rs /^ NetRom = libc::AF_NETROM,$/;" e enum:AddressFamily +NetScheduleJobAdd vendor/winapi/src/um/lmat.rs /^ pub fn NetScheduleJobAdd($/;" f +NetScheduleJobDel vendor/winapi/src/um/lmat.rs /^ pub fn NetScheduleJobDel($/;" f +NetScheduleJobEnum vendor/winapi/src/um/lmat.rs /^ pub fn NetScheduleJobEnum($/;" f +NetScheduleJobGetInfo vendor/winapi/src/um/lmat.rs /^ pub fn NetScheduleJobGetInfo($/;" f +NetServerAliasAdd vendor/winapi/src/um/lmshare.rs /^ pub fn NetServerAliasAdd($/;" f +NetServerAliasDel vendor/winapi/src/um/lmshare.rs /^ pub fn NetServerAliasDel($/;" f +NetServerAliasEnum vendor/winapi/src/um/lmshare.rs /^ pub fn NetServerAliasEnum($/;" f +NetServerComputerNameAdd vendor/winapi/src/um/lmserver.rs /^ pub fn NetServerComputerNameAdd($/;" f +NetServerComputerNameDel vendor/winapi/src/um/lmserver.rs /^ pub fn NetServerComputerNameDel($/;" f +NetServerDiskEnum vendor/winapi/src/um/lmserver.rs /^ pub fn NetServerDiskEnum($/;" f +NetServerEnum vendor/winapi/src/um/lmserver.rs /^ pub fn NetServerEnum($/;" f +NetServerEnumEx vendor/winapi/src/um/lmserver.rs /^ pub fn NetServerEnumEx($/;" f +NetServerGetInfo vendor/winapi/src/um/lmserver.rs /^ pub fn NetServerGetInfo($/;" f +NetServerSetInfo vendor/winapi/src/um/lmserver.rs /^ pub fn NetServerSetInfo($/;" f +NetServerTransportAdd vendor/winapi/src/um/lmserver.rs /^ pub fn NetServerTransportAdd($/;" f +NetServerTransportAddEx vendor/winapi/src/um/lmserver.rs /^ pub fn NetServerTransportAddEx($/;" f +NetServerTransportDel vendor/winapi/src/um/lmserver.rs /^ pub fn NetServerTransportDel($/;" f +NetServerTransportEnum vendor/winapi/src/um/lmserver.rs /^ pub fn NetServerTransportEnum($/;" f +NetServiceControl vendor/winapi/src/um/lmsvc.rs /^ pub fn NetServiceControl($/;" f +NetServiceEnum vendor/winapi/src/um/lmsvc.rs /^ pub fn NetServiceEnum($/;" f +NetServiceGetInfo vendor/winapi/src/um/lmsvc.rs /^ pub fn NetServiceGetInfo($/;" f +NetServiceInstall vendor/winapi/src/um/lmsvc.rs /^ pub fn NetServiceInstall($/;" f +NetSessionDel vendor/winapi/src/um/lmshare.rs /^ pub fn NetSessionDel($/;" f +NetSessionEnum vendor/winapi/src/um/lmshare.rs /^ pub fn NetSessionEnum($/;" f +NetSessionGetInfo vendor/winapi/src/um/lmshare.rs /^ pub fn NetSessionGetInfo($/;" f +NetSetPrimaryComputerName vendor/winapi/src/um/lmjoin.rs /^ pub fn NetSetPrimaryComputerName($/;" f +NetShareAdd vendor/winapi/src/um/lmshare.rs /^ pub fn NetShareAdd($/;" f +NetShareCheck vendor/winapi/src/um/lmshare.rs /^ pub fn NetShareCheck($/;" f +NetShareDel vendor/winapi/src/um/lmshare.rs /^ pub fn NetShareDel($/;" f +NetShareDelEx vendor/winapi/src/um/lmshare.rs /^ pub fn NetShareDelEx($/;" f +NetShareDelSticky vendor/winapi/src/um/lmshare.rs /^ pub fn NetShareDelSticky($/;" f +NetShareEnum vendor/winapi/src/um/lmshare.rs /^ pub fn NetShareEnum($/;" f +NetShareEnumSticky vendor/winapi/src/um/lmshare.rs /^ pub fn NetShareEnumSticky($/;" f +NetShareGetInfo vendor/winapi/src/um/lmshare.rs /^ pub fn NetShareGetInfo($/;" f +NetShareSetInfo vendor/winapi/src/um/lmshare.rs /^ pub fn NetShareSetInfo($/;" f +NetStatisticsGet vendor/winapi/src/um/lmstats.rs /^ pub fn NetStatisticsGet($/;" f +NetUnjoinDomain vendor/winapi/src/um/lmjoin.rs /^ pub fn NetUnjoinDomain($/;" f +NetUseAdd vendor/winapi/src/um/lmuse.rs /^ pub fn NetUseAdd($/;" f +NetUseDel vendor/winapi/src/um/lmuse.rs /^ pub fn NetUseDel($/;" f +NetUseEnum vendor/winapi/src/um/lmuse.rs /^ pub fn NetUseEnum($/;" f +NetUseGetInfo vendor/winapi/src/um/lmuse.rs /^ pub fn NetUseGetInfo($/;" f +NetUserAdd vendor/winapi/src/um/lmaccess.rs /^ pub fn NetUserAdd($/;" f +NetUserChangePassword vendor/winapi/src/um/lmaccess.rs /^ pub fn NetUserChangePassword($/;" f +NetUserDel vendor/winapi/src/um/lmaccess.rs /^ pub fn NetUserDel($/;" f +NetUserEnum vendor/winapi/src/um/lmaccess.rs /^ pub fn NetUserEnum($/;" f +NetUserGetGroups vendor/winapi/src/um/lmaccess.rs /^ pub fn NetUserGetGroups($/;" f +NetUserGetInfo vendor/winapi/src/um/lmaccess.rs /^ pub fn NetUserGetInfo($/;" f +NetUserGetLocalGroups vendor/winapi/src/um/lmaccess.rs /^ pub fn NetUserGetLocalGroups($/;" f +NetUserModalsGet vendor/winapi/src/um/lmaccess.rs /^ pub fn NetUserModalsGet($/;" f +NetUserModalsSet vendor/winapi/src/um/lmaccess.rs /^ pub fn NetUserModalsSet($/;" f +NetUserSetGroups vendor/winapi/src/um/lmaccess.rs /^ pub fn NetUserSetGroups($/;" f +NetUserSetInfo vendor/winapi/src/um/lmaccess.rs /^ pub fn NetUserSetInfo($/;" f +NetValidateName vendor/winapi/src/um/lmjoin.rs /^ pub fn NetValidateName($/;" f +NetValidatePasswordPolicy vendor/winapi/src/um/lmaccess.rs /^ pub fn NetValidatePasswordPolicy($/;" f +NetValidatePasswordPolicyFree vendor/winapi/src/um/lmaccess.rs /^ pub fn NetValidatePasswordPolicyFree($/;" f +NetWkstaGetInfo vendor/winapi/src/um/lmwksta.rs /^ pub fn NetWkstaGetInfo($/;" f +NetWkstaSetInfo vendor/winapi/src/um/lmwksta.rs /^ pub fn NetWkstaSetInfo($/;" f +NetWkstaTransportAdd vendor/winapi/src/um/lmwksta.rs /^ pub fn NetWkstaTransportAdd($/;" f +NetWkstaTransportDel vendor/winapi/src/um/lmwksta.rs /^ pub fn NetWkstaTransportDel($/;" f +NetWkstaTransportEnum vendor/winapi/src/um/lmwksta.rs /^ pub fn NetWkstaTransportEnum($/;" f +NetWkstaUserEnum vendor/winapi/src/um/lmwksta.rs /^ pub fn NetWkstaUserEnum($/;" f +NetWkstaUserGetInfo vendor/winapi/src/um/lmwksta.rs /^ pub fn NetWkstaUserGetInfo($/;" f +NetWkstaUserSetInfo vendor/winapi/src/um/lmwksta.rs /^ pub fn NetWkstaUserSetInfo($/;" f +NetapipBufferAllocate vendor/winapi/src/um/lmapibuf.rs /^ pub fn NetapipBufferAllocate($/;" f +Netbios vendor/winapi/src/um/nb30.rs /^ pub fn Netbios($/;" f +Netlink vendor/nix/src/sys/socket/addr.rs /^ Netlink = libc::AF_NETLINK,$/;" e enum:AddressFamily +Netlink vendor/nix/src/sys/socket/addr.rs /^ Netlink(NetlinkAddr),$/;" e enum:SockAddr +NetlinkAddr vendor/nix/src/sys/socket/addr.rs /^ impl AsRef for NetlinkAddr {$/;" c module:netlink +NetlinkAddr vendor/nix/src/sys/socket/addr.rs /^ impl NetlinkAddr {$/;" c module:netlink +NetlinkAddr vendor/nix/src/sys/socket/addr.rs /^ impl SockaddrLike for NetlinkAddr {$/;" c module:netlink +NetlinkAddr vendor/nix/src/sys/socket/addr.rs /^ impl fmt::Display for NetlinkAddr {$/;" c module:netlink +NetlinkAddr vendor/nix/src/sys/socket/addr.rs /^ impl private::SockaddrLikePriv for NetlinkAddr {}$/;" c module:netlink +NetlinkAddr vendor/nix/src/sys/socket/addr.rs /^ pub struct NetlinkAddr(pub(in super::super) sockaddr_nl);$/;" s module:netlink +NetlinkAudit vendor/nix/src/sys/socket/mod.rs /^ NetlinkAudit = libc::NETLINK_AUDIT,$/;" e enum:SockProtocol +NetlinkCrypto vendor/nix/src/sys/socket/mod.rs /^ NetlinkCrypto = libc::NETLINK_CRYPTO,$/;" e enum:SockProtocol +NetlinkDECNetRoutingMessage vendor/nix/src/sys/socket/mod.rs /^ NetlinkDECNetRoutingMessage = libc::NETLINK_DNRTMSG,$/;" e enum:SockProtocol +NetlinkFIBLookup vendor/nix/src/sys/socket/mod.rs /^ NetlinkFIBLookup = libc::NETLINK_FIB_LOOKUP,$/;" e enum:SockProtocol +NetlinkIPv6Firewall vendor/nix/src/sys/socket/mod.rs /^ NetlinkIPv6Firewall = libc::NETLINK_IP6_FW,$/;" e enum:SockProtocol +NetlinkISCSI vendor/nix/src/sys/socket/mod.rs /^ NetlinkISCSI = libc::NETLINK_ISCSI,$/;" e enum:SockProtocol +NetlinkKObjectUEvent vendor/nix/src/sys/socket/mod.rs /^ NetlinkKObjectUEvent = libc::NETLINK_KOBJECT_UEVENT,$/;" e enum:SockProtocol +NetlinkNetFilter vendor/nix/src/sys/socket/mod.rs /^ NetlinkNetFilter = libc::NETLINK_NETFILTER,$/;" e enum:SockProtocol +NetlinkRDMA vendor/nix/src/sys/socket/mod.rs /^ NetlinkRDMA = libc::NETLINK_RDMA,$/;" e enum:SockProtocol +NetlinkRoute vendor/nix/src/sys/socket/mod.rs /^ NetlinkRoute = libc::NETLINK_ROUTE,$/;" e enum:SockProtocol +NetlinkSCSITransport vendor/nix/src/sys/socket/mod.rs /^ NetlinkSCSITransport = libc::NETLINK_SCSITRANSPORT,$/;" e enum:SockProtocol +NetlinkSELinux vendor/nix/src/sys/socket/mod.rs /^ NetlinkSELinux = libc::NETLINK_SELINUX,$/;" e enum:SockProtocol +NetlinkSockDiag vendor/nix/src/sys/socket/mod.rs /^ NetlinkSockDiag = libc::NETLINK_SOCK_DIAG,$/;" e enum:SockProtocol +NetlinkUserSock vendor/nix/src/sys/socket/mod.rs /^ NetlinkUserSock = libc::NETLINK_USERSOCK,$/;" e enum:SockProtocol +Never vendor/futures-util/src/never.rs /^pub type Never = core::convert::Infallible;$/;" t +Never vendor/futures/tests/try_join.rs /^type Never = ! as MyTrait>::Output;$/;" t +Next vendor/futures-util/src/stream/stream/next.rs /^impl<'a, St: ?Sized + Stream + Unpin> Next<'a, St> {$/;" c +Next vendor/futures-util/src/stream/stream/next.rs /^impl FusedFuture for Next<'_, St> {$/;" c +Next vendor/futures-util/src/stream/stream/next.rs /^impl Future for Next<'_, St> {$/;" c +Next vendor/futures-util/src/stream/stream/next.rs /^impl Unpin for Next<'_, St> {}$/;" c +Next vendor/futures-util/src/stream/stream/next.rs /^pub struct Next<'a, St: ?Sized> {$/;" s +NextIf vendor/futures-util/src/stream/stream/peek.rs /^impl FusedFuture for NextIf<'_, St, F>$/;" c +NextIf vendor/futures-util/src/stream/stream/peek.rs /^impl Future for NextIf<'_, St, F>$/;" c +NextIf vendor/futures-util/src/stream/stream/peek.rs /^impl fmt::Debug for NextIf<'_, St, F>$/;" c +NextIfEq vendor/futures-util/src/stream/stream/peek.rs /^impl FusedFuture for NextIfEq<'_, St, T>$/;" c +NextIfEq vendor/futures-util/src/stream/stream/peek.rs /^impl Future for NextIfEq<'_, St, T>$/;" c +NextIfEq vendor/futures-util/src/stream/stream/peek.rs /^impl fmt::Debug for NextIfEq<'_, St, T>$/;" c +NextIfEqFn vendor/futures-util/src/stream/stream/peek.rs /^impl FnOnce1<&Item> for NextIfEqFn<'_, T, Item>$/;" c +NextIfEqFn vendor/futures-util/src/stream/stream/peek.rs /^struct NextIfEqFn<'a, T: ?Sized, Item> {$/;" s +Nfc vendor/nix/src/sys/socket/addr.rs /^ Nfc = libc::AF_NFC,$/;" e enum:AddressFamily +NhpAllocateAndGetInterfaceInfoFromStack vendor/winapi/src/um/iphlpapi.rs /^ pub fn NhpAllocateAndGetInterfaceInfoFromStack($/;" f +NixPath vendor/nix/src/lib.rs /^pub trait NixPath {$/;" i +Nmount vendor/nix/src/mount/bsd.rs /^impl<'a> Drop for Nmount<'a> {$/;" c +Nmount vendor/nix/src/mount/bsd.rs /^impl<'a> Nmount<'a> {$/;" c +Nmount vendor/nix/src/mount/bsd.rs /^pub struct Nmount<'a>{$/;" s +NmountError vendor/nix/src/mount/bsd.rs /^impl NmountError {$/;" c +NmountError vendor/nix/src/mount/bsd.rs /^impl fmt::Display for NmountError {$/;" c +NmountError vendor/nix/src/mount/bsd.rs /^impl std::error::Error for NmountError {}$/;" c +NmountError vendor/nix/src/mount/bsd.rs /^pub struct NmountError {$/;" s +NmountResult vendor/nix/src/mount/bsd.rs /^pub type NmountResult = std::result::Result<(), NmountError>;$/;" t +NoDisplay vendor/thiserror/tests/ui/no-display.rs /^struct NoDisplay;$/;" s +NoFollowSymlink vendor/nix/src/sys/stat.rs /^ NoFollowSymlink,$/;" e enum:FchmodatFlags +NoFollowSymlink vendor/nix/src/sys/stat.rs /^ NoFollowSymlink,$/;" e enum:UtimensatFlags +NoFormat vendor/thiserror/tests/test_generics.rs /^pub struct NoFormat;$/;" s +NoSourceOptBacktrace vendor/thiserror/tests/test_option.rs /^ pub enum NoSourceOptBacktrace {$/;" g module:enums +NoSourceOptBacktrace vendor/thiserror/tests/test_option.rs /^ pub struct NoSourceOptBacktrace {$/;" s module:structs +NoValue vendor/fluent-bundle/src/resolver/errors.rs /^ NoValue(String),$/;" e enum:ResolverError +Node vendor/futures-channel/src/mpsc/queue.rs /^impl Node {$/;" c +Node vendor/futures-channel/src/mpsc/queue.rs /^struct Node {$/;" s +Non-macro code generators vendor/quote/README.md /^## Non-macro code generators$/;" s chapter:Rust Quasi-Quoting +Non-threadsafe futures vendor/async-trait/README.md /^## Non-threadsafe futures$/;" s chapter:Async trait methods +NonAscii vendor/tinystr/src/lib.rs /^ NonAscii,$/;" e enum:Error +NonBlank vendor/fluent-syntax/src/parser/pattern.rs /^ NonBlank,$/;" e enum:TextElementType +None builtins_rust/help/src/lib.rs /^ None,$/;" e enum:Option +None vendor/fluent-bundle/src/types/mod.rs /^ None,$/;" e enum:FluentValue +None vendor/fluent-fallback/src/bundles.rs /^ None,$/;" e enum:Value +None vendor/fluent-syntax/src/parser/comment.rs /^ None = 0,$/;" e enum:Level +None vendor/memchr/src/memmem/prefilter/mod.rs /^ None,$/;" e enum:Prefilter +None vendor/proc-macro2/src/lib.rs /^ None,$/;" e enum:Delimiter +None vendor/syn/src/parse.rs /^ None,$/;" e enum:Unexpected +Noop vendor/futures-util/benches_disabled/bilock.rs /^ impl ArcWake for Noop {$/;" c function:bench::notify_noop +Noop vendor/futures-util/benches_disabled/bilock.rs /^ struct Noop;$/;" s function:bench::notify_noop +Normal vendor/futures-macro/src/select.rs /^ Normal(Pat, Expr),$/;" e enum:CaseKind +NormalizeString vendor/winapi/src/um/winnls.rs /^ pub fn NormalizeString($/;" f +NormalizeVisitor vendor/syn/tests/test_round_trip.rs /^ impl MutVisitor for NormalizeVisitor {$/;" c function:normalize +NormalizeVisitor vendor/syn/tests/test_round_trip.rs /^ struct NormalizeVisitor;$/;" s function:normalize +NotCopy vendor/pin-project-lite/tests/test.rs /^ struct NotCopy;$/;" s function:move_out +NotError vendor/thiserror/tests/ui/source-enum-not-error.rs /^pub struct NotError;$/;" s +NotError vendor/thiserror/tests/ui/source-struct-not-error.rs /^struct NotError;$/;" s +Note support/texi2html /^Note: 'Options' may be abbreviated. 'Type' specifications mean:$/;" l +Note vendor/smallvec/debug_metadata/README.md /^#### Note$/;" t subsection:Debugger Visualizers""Testing Visualizers +Nothing vendor/syn/src/parse.rs /^impl Debug for Nothing {$/;" c +Nothing vendor/syn/src/parse.rs /^impl Eq for Nothing {}$/;" c +Nothing vendor/syn/src/parse.rs /^impl Hash for Nothing {$/;" c +Nothing vendor/syn/src/parse.rs /^impl Parse for Nothing {$/;" c +Nothing vendor/syn/src/parse.rs /^impl PartialEq for Nothing {$/;" c +Nothing vendor/syn/src/parse.rs /^pub struct Nothing;$/;" s +Notifier vendor/futures-util/src/future/future/shared.rs /^impl ArcWake for Notifier {$/;" c +Notifier vendor/futures-util/src/future/future/shared.rs /^struct Notifier {$/;" s +NotifyAddrChange vendor/winapi/src/um/iphlpapi.rs /^ pub fn NotifyAddrChange($/;" f +NotifyBootConfigStatus vendor/winapi/src/um/winsvc.rs /^ pub fn NotifyBootConfigStatus($/;" f +NotifyHandle01 vendor/futures-util/src/compat/compat01as03.rs /^impl From> for NotifyHandle01 {$/;" c +NotifyIfTimestampConfigChange vendor/winapi/src/um/iphlpapi.rs /^ pub fn NotifyIfTimestampConfigChange($/;" f +NotifyIpInterfaceChange vendor/winapi/src/shared/netioapi.rs /^ pub fn NotifyIpInterfaceChange($/;" f +NotifyRouteChange vendor/winapi/src/um/iphlpapi.rs /^ pub fn NotifyRouteChange($/;" f +NotifyRouteChange2 vendor/winapi/src/shared/netioapi.rs /^ pub fn NotifyRouteChange2($/;" f +NotifyServiceStatusChangeA vendor/winapi/src/um/winsvc.rs /^ pub fn NotifyServiceStatusChangeA($/;" f +NotifyServiceStatusChangeW vendor/winapi/src/um/winsvc.rs /^ pub fn NotifyServiceStatusChangeW($/;" f +NotifyStableUnicastIpAddressTable vendor/winapi/src/shared/netioapi.rs /^ pub fn NotifyStableUnicastIpAddressTable($/;" f +NotifyTeredoPortChange vendor/winapi/src/shared/netioapi.rs /^ pub fn NotifyTeredoPortChange($/;" f +NotifyUILanguageChange vendor/winapi/src/um/winnls.rs /^ pub fn NotifyUILanguageChange($/;" f +NotifyUnicastIpAddressChange vendor/winapi/src/shared/netioapi.rs /^ pub fn NotifyUnicastIpAddressChange($/;" f +NotifyWaker vendor/futures-util/src/compat/compat01as03.rs /^impl Notify01 for NotifyWaker {$/;" c +NotifyWaker vendor/futures-util/src/compat/compat01as03.rs /^struct NotifyWaker(task03::Waker);$/;" s +NotifyWaker vendor/futures-util/src/compat/compat01as03.rs /^unsafe impl UnsafeNotify01 for NotifyWaker {$/;" c +NotifyWinEvent vendor/winapi/src/um/winuser.rs /^ pub fn NotifyWinEvent($/;" f +Ns vendor/nix/src/sys/socket/addr.rs /^ Ns = libc::AF_NS,$/;" e enum:AddressFamily +Num vendor/autocfg/src/error.rs /^ Num(num::ParseIntError),$/;" e enum:ErrorKind +Number vendor/fluent-bundle/src/types/mod.rs /^ Number(FluentNumber),$/;" e enum:FluentValue +NumberLiteral vendor/fluent-syntax/src/ast/mod.rs /^ NumberLiteral { value: S },$/;" e enum:InlineExpression +NumberLiteral vendor/fluent-syntax/src/ast/mod.rs /^ NumberLiteral { value: S },$/;" e enum:VariantKey +O vendor/once_cell/src/imp_std.rs /^ static O: OnceCell<()> = OnceCell::new();$/;" v function:tests::poison_bad +O vendor/once_cell/src/imp_std.rs /^ static O: OnceCell<()> = OnceCell::new();$/;" v function:tests::smoke_once +O vendor/once_cell/src/imp_std.rs /^ static O: OnceCell<()> = OnceCell::new();$/;" v function:tests::stampede_once +O vendor/once_cell/src/imp_std.rs /^ static O: OnceCell<()> = OnceCell::new();$/;" v function:tests::wait_for_force_to_finish +OBJ1 support/Makefile.in /^OBJ1 = man2html.o$/;" m +OBJECTS Makefile.in /^OBJECTS = shell.o eval.o y.tab.o general.o make_cmd.o print_cmd.o $(GLOBO) \\$/;" m +OBJECTS lib/glob/Makefile.in /^OBJECTS = glob.o strmatch.o smatch.o xmbsrtowcs.o gmisc.o$/;" m +OBJECTS lib/intl/Makefile.in /^OBJECTS = \\$/;" m +OBJECTS lib/readline/Makefile.in /^OBJECTS = readline.o vi_mode.o funmap.o keymaps.o parens.o search.o \\$/;" m +OBJECTS lib/sh/Makefile.in /^OBJECTS = clktck.o clock.o getenv.o oslib.o setlinebuf.o strnlen.o \\$/;" m +OBJECTS lib/termcap/Makefile.in /^OBJECTS = termcap.o tparam.o$/;" m +OBJECTS lib/tilde/Makefile.in /^OBJECTS = tilde.o$/;" m +OBJEXT Makefile.in /^OBJEXT = @OBJEXT@$/;" m +OBJ_HANDLE vendor/libc/src/vxworks/mod.rs /^pub type OBJ_HANDLE = ::_Vx_OBJ_HANDLE;$/;" t +OCTVALUE include/chartypes.h /^#define OCTVALUE(/;" d +OCTVALUE lib/readline/chardefs.h /^#define OCTVALUE(/;" d +OC_MEMSET include/ocache.h /^#define OC_MEMSET(/;" d +ODBCINT64 vendor/winapi/src/um/sqltypes.rs /^pub type ODBCINT64 = __int64;$/;" t +OEM_STRING vendor/winapi/src/shared/ntdef.rs /^pub type OEM_STRING = STRING;$/;" t +OFF builtins_rust/shopt/src/lib.rs /^static mut OFF: *const libc::c_char = b"off\\0" as *const u8 as *const libc::c_char;$/;" v +OFILES builtins/Makefile.in /^OFILES = builtins.o \\$/;" m +OFLAG builtins_rust/shopt/src/lib.rs /^static OFLAG: i32 = 0x08;$/;" v +OLDPWD_CHECK_DIRECTORY config-top.h /^#define OLDPWD_CHECK_DIRECTORY /;" d +OLD_CPOS_IN_PROMPT lib/readline/display.c /^#define OLD_CPOS_IN_PROMPT(/;" d file: +OLECHAR vendor/winapi/src/shared/wtypesbase.rs /^pub type OLECHAR = WCHAR;$/;" t +ON builtins_rust/shopt/src/lib.rs /^static mut ON: *const libc::c_char = b"on\\0" as *const u8 as *const libc::c_char;$/;" v +ONCE vendor/lazy_static/tests/test.rs /^static ONCE: X = X;$/;" v +ONCE vendor/libloading/tests/functions.rs /^ static ONCE: ::std::sync::Once = ::std::sync::Once::new();$/;" v function:make_helpers +ONCE_CELL vendor/once_cell/examples/bench_vs_lazy_static.rs /^static ONCE_CELL: Lazy> = Lazy::new(|| vec!["Spica".to_string(), "Hoyten".to_string(/;" v +ONE vendor/intl_pluralrules/src/lib.rs /^ ONE,$/;" e enum:PluralCategory +ONESHOT config-top.h /^#define ONESHOT$/;" d +ONE_ARG_TEST test.c /^#define ONE_ARG_TEST(/;" d file: +OPAQUE_HANDLE vendor/winapi/src/um/davclnt.rs /^pub type OPAQUE_HANDLE = DWORD;$/;" t +OPENCARDNAMEA_EX vendor/winapi/src/um/winscard.rs /^pub type OPENCARDNAMEA_EX = OPENCARDNAME_EXA;$/;" t +OPENCARDNAMEW_EX vendor/winapi/src/um/winscard.rs /^pub type OPENCARDNAMEW_EX = OPENCARDNAME_EXW;$/;" t +OPENCARDNAME_A vendor/winapi/src/um/winscard.rs /^pub type OPENCARDNAME_A = OPENCARDNAMEA;$/;" t +OPENCARDNAME_W vendor/winapi/src/um/winscard.rs /^pub type OPENCARDNAME_W = OPENCARDNAMEW;$/;" t +OPENLOG_OPTS bashhist.c /^#define OPENLOG_OPTS /;" d file: +OPENLOG_OPTS config-top.h /^# define OPENLOG_OPTS /;" d +OPENTYPE_TAG vendor/winapi/src/um/usp10.rs /^pub type OPENTYPE_TAG = ULONG;$/;" t +OPMGetVideoOutputForTarget vendor/winapi/src/um/opmapi.rs /^ pub fn OPMGetVideoOutputForTarget($/;" f +OPMGetVideoOutputsFromHMONITOR vendor/winapi/src/um/opmapi.rs /^ pub fn OPMGetVideoOutputsFromHMONITOR($/;" f +OPMGetVideoOutputsFromIDirect3DDevice9Object vendor/winapi/src/um/opmapi.rs /^ pub fn OPMGetVideoOutputsFromIDirect3DDevice9Object($/;" f +OPSTART lib/readline/bind.c /^#define OPSTART(/;" d file: +OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT config-top.h /^#define OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT /;" d +OP_ASSIGN expr.c /^#define OP_ASSIGN /;" d file: +OP_EQ lib/readline/bind.c /^#define OP_EQ /;" d file: +OP_GE lib/readline/bind.c /^#define OP_GE /;" d file: +OP_GT lib/readline/bind.c /^#define OP_GT /;" d file: +OP_LE lib/readline/bind.c /^#define OP_LE /;" d file: +OP_LT lib/readline/bind.c /^#define OP_LT /;" d file: +OP_NE lib/readline/bind.c /^#define OP_NE /;" d file: +ORDINAL vendor/intl_pluralrules/src/lib.rs /^ ORDINAL,$/;" e enum:PluralRuleType +OS Makefile.in /^OS = @host_os@$/;" m +OS2 lib/intl/localcharset.c /^# define OS2$/;" d file: +OS2_AWARE lib/intl/os2compat.c /^#define OS2_AWARE$/;" d file: +OSTYPE conftypes.h /^# define OSTYPE /;" d +OSTYPE conftypes.h /^# define OSTYPE /;" d +OT test.c /^#define OT /;" d file: +OTHER vendor/intl_pluralrules/src/lib.rs /^ OTHER,$/;" e enum:PluralCategory +OTHER vendor/once_cell/examples/bench_acquire.rs /^static OTHER: AtomicUsize = AtomicUsize::new(0);$/;" v +OTHER_DOCS Makefile.in /^OTHER_DOCS = $(srcdir)\/CHANGES $(srcdir)\/COMPAT $(srcdir)\/NEWS $(srcdir)\/POSIX \\$/;" m +OTHER_INSTALLED_DOCS Makefile.in /^OTHER_INSTALLED_DOCS = CHANGES COMPAT NEWS POSIX RBASH README$/;" m +OUTLEN_MAX lib/sh/fnxform.c /^#define OUTLEN_MAX /;" d file: +OUTPUT_BEING_FLUSHED lib/readline/rltty.c /^# define OUTPUT_BEING_FLUSHED(/;" d file: +OUTPUT_REDIRECT command.h /^#define OUTPUT_REDIRECT(/;" d +O_BINARY include/filecntl.h /^# define O_BINARY /;" d +O_BINARY lib/intl/loadmsgcat.c /^# define O_BINARY /;" d file: +O_BINARY lib/readline/histfile.c /^# define O_BINARY /;" d file: +O_BINARY lib/readline/histfile.c /^# define O_BINARY /;" d file: +O_NDELAY general.c /^# define O_NDELAY /;" d file: +O_NDELAY lib/readline/input.c /^# define O_NDELAY /;" d file: +O_NDELAY lib/readline/shell.c /^# define O_NDELAY /;" d file: +O_NDELAY lib/sh/input_avail.c /^# define O_NDELAY /;" d file: +O_NONBLOCK general.c /^# define O_NONBLOCK /;" d file: +O_NONBLOCK include/filecntl.h /^# define O_NONBLOCK /;" d +O_RDONLY lib/termcap/termcap.c /^#define O_RDONLY /;" d file: +O_TEXT include/filecntl.h /^# define O_TEXT /;" d +O_TEXT lib/intl/loadmsgcat.c /^# define O_TEXT /;" d file: +OaBuildVersion vendor/winapi/src/um/oleauto.rs /^ pub fn OaBuildVersion() -> ULONG;$/;" f +OaEnablePerUserTLibRegistration vendor/winapi/src/um/oleauto.rs /^ pub fn OaEnablePerUserTLibRegistration();$/;" f +ObjectCloseAuditAlarmW vendor/winapi/src/um/securitybaseapi.rs /^ pub fn ObjectCloseAuditAlarmW($/;" f +ObjectDeleteAuditAlarmW vendor/winapi/src/um/securitybaseapi.rs /^ pub fn ObjectDeleteAuditAlarmW($/;" f +ObjectOpenAuditAlarmW vendor/winapi/src/um/securitybaseapi.rs /^ pub fn ObjectOpenAuditAlarmW($/;" f +ObjectPrivilegeAuditAlarmW vendor/winapi/src/um/securitybaseapi.rs /^ pub fn ObjectPrivilegeAuditAlarmW($/;" f +ObjectSafe vendor/async-trait/tests/test.rs /^ trait ObjectSafe {$/;" i function:test_object_safe_without_default +ObjectSafe vendor/async-trait/tests/test.rs /^ trait ObjectSafe: Sync {$/;" i function:test_object_no_send +ObjectSafe vendor/async-trait/tests/test.rs /^ trait ObjectSafe: Sync {$/;" i function:test_object_safe_with_default +Occupied vendor/slab/src/lib.rs /^ Occupied(T),$/;" e enum:Entry +Occupied vendor/type-map/src/lib.rs /^ Occupied(OccupiedEntry<'a, T>),$/;" e enum:concurrent::Entry +Occupied vendor/type-map/src/lib.rs /^ Occupied(OccupiedEntry<'a, T>),$/;" e enum:Entry +OccupiedEntry vendor/type-map/src/lib.rs /^ impl<'a, T: 'static + Send + Sync> OccupiedEntry<'a, T> {$/;" c module:concurrent +OccupiedEntry vendor/type-map/src/lib.rs /^ pub struct OccupiedEntry<'a, T> {$/;" s module:concurrent +OccupiedEntry vendor/type-map/src/lib.rs /^impl<'a, T: 'static> OccupiedEntry<'a, T> {$/;" c +OccupiedEntry vendor/type-map/src/lib.rs /^pub struct OccupiedEntry<'a, T> {$/;" s +Octal vendor/thiserror-impl/src/attr.rs /^ Octal,$/;" e enum:Trait +OemKeyScan vendor/winapi/src/um/winuser.rs /^ pub fn OemKeyScan($/;" f +OemToCharA vendor/winapi/src/um/winuser.rs /^ pub fn OemToCharA($/;" f +OemToCharBuffA vendor/winapi/src/um/winuser.rs /^ pub fn OemToCharBuffA($/;" f +OemToCharBuffW vendor/winapi/src/um/winuser.rs /^ pub fn OemToCharBuffW($/;" f +OemToCharW vendor/winapi/src/um/winuser.rs /^ pub fn OemToCharW($/;" f +OfferVirtualMemory vendor/winapi/src/um/memoryapi.rs /^ pub fn OfferVirtualMemory($/;" f +OffsetClipRgn vendor/winapi/src/um/wingdi.rs /^ pub fn OffsetClipRgn($/;" f +OffsetRect vendor/winapi/src/um/winuser.rs /^ pub fn OffsetRect($/;" f +OffsetRgn vendor/winapi/src/um/wingdi.rs /^ pub fn OffsetRgn($/;" f +OffsetViewportOrgEx vendor/winapi/src/um/wingdi.rs /^ pub fn OffsetViewportOrgEx($/;" f +OffsetWindowOrgEx vendor/winapi/src/um/wingdi.rs /^ pub fn OffsetWindowOrgEx($/;" f +Ok vendor/futures-core/src/future.rs /^ type Ok = T;$/;" t +Ok vendor/futures-core/src/future.rs /^ type Ok;$/;" t interface:TryFuture +Ok vendor/futures-core/src/stream.rs /^ type Ok = T;$/;" t +Ok vendor/futures-core/src/stream.rs /^ type Ok;$/;" t interface:TryStream +OkFn vendor/futures-util/src/fns.rs /^impl FnOnce1 for OkFn {$/;" c +OkFn vendor/futures-util/src/fns.rs /^impl Default for OkFn {$/;" c +OkFn vendor/futures-util/src/fns.rs /^pub struct OkFn(PhantomData);$/;" s +OleInitialize vendor/winapi/src/um/ole2.rs /^ pub fn OleInitialize($/;" f +Once vendor/futures-util/src/stream/once.rs /^impl FusedStream for Once {$/;" c +Once vendor/futures-util/src/stream/once.rs /^impl Stream for Once {$/;" c +Once vendor/futures-util/src/stream/once.rs /^impl Once {$/;" c +Once vendor/lazy_static/tests/test.rs /^struct Once(X);$/;" s +OnceBool vendor/once_cell/src/race.rs /^impl OnceBool {$/;" c +OnceBool vendor/once_cell/src/race.rs /^pub struct OnceBool {$/;" s +OnceBox vendor/once_cell/src/race.rs /^ impl Default for OnceBox {$/;" c module:once_box +OnceBox vendor/once_cell/src/race.rs /^ impl Drop for OnceBox {$/;" c module:once_box +OnceBox vendor/once_cell/src/race.rs /^ impl OnceBox {$/;" c module:once_box +OnceBox vendor/once_cell/src/race.rs /^ impl core::fmt::Debug for OnceBox {$/;" c module:once_box +OnceBox vendor/once_cell/src/race.rs /^ pub struct OnceBox {$/;" s module:once_box +OnceBox vendor/once_cell/src/race.rs /^ unsafe impl Sync for OnceBox {}$/;" c module:once_box +OnceCell vendor/once_cell/src/imp_pl.rs /^impl RefUnwindSafe for OnceCell {}$/;" c +OnceCell vendor/once_cell/src/imp_pl.rs /^impl UnwindSafe for OnceCell {}$/;" c +OnceCell vendor/once_cell/src/imp_pl.rs /^impl OnceCell {$/;" c +OnceCell vendor/once_cell/src/imp_pl.rs /^pub(crate) struct OnceCell {$/;" s +OnceCell vendor/once_cell/src/imp_pl.rs /^unsafe impl Send for OnceCell {}$/;" c +OnceCell vendor/once_cell/src/imp_pl.rs /^unsafe impl Sync for OnceCell {}$/;" c +OnceCell vendor/once_cell/src/imp_std.rs /^ impl OnceCell {$/;" c module:tests +OnceCell vendor/once_cell/src/imp_std.rs /^impl RefUnwindSafe for OnceCell {}$/;" c +OnceCell vendor/once_cell/src/imp_std.rs /^impl UnwindSafe for OnceCell {}$/;" c +OnceCell vendor/once_cell/src/imp_std.rs /^impl OnceCell {$/;" c +OnceCell vendor/once_cell/src/imp_std.rs /^pub(crate) struct OnceCell {$/;" s +OnceCell vendor/once_cell/src/imp_std.rs /^unsafe impl Send for OnceCell {}$/;" c +OnceCell vendor/once_cell/src/imp_std.rs /^unsafe impl Sync for OnceCell {}$/;" c +OnceCell vendor/once_cell/src/lib.rs /^ impl Clone for OnceCell {$/;" c module:sync +OnceCell vendor/once_cell/src/lib.rs /^ impl Clone for OnceCell {$/;" c module:unsync +OnceCell vendor/once_cell/src/lib.rs /^ impl Eq for OnceCell {}$/;" c module:sync +OnceCell vendor/once_cell/src/lib.rs /^ impl Eq for OnceCell {}$/;" c module:unsync +OnceCell vendor/once_cell/src/lib.rs /^ impl PartialEq for OnceCell {$/;" c module:sync +OnceCell vendor/once_cell/src/lib.rs /^ impl PartialEq for OnceCell {$/;" c module:unsync +OnceCell vendor/once_cell/src/lib.rs /^ impl RefUnwindSafe for OnceCell {}$/;" c module:unsync +OnceCell vendor/once_cell/src/lib.rs /^ impl UnwindSafe for OnceCell {}$/;" c module:unsync +OnceCell vendor/once_cell/src/lib.rs /^ impl fmt::Debug for OnceCell {$/;" c module:sync +OnceCell vendor/once_cell/src/lib.rs /^ impl fmt::Debug for OnceCell {$/;" c module:unsync +OnceCell vendor/once_cell/src/lib.rs /^ impl Default for OnceCell {$/;" c module:sync +OnceCell vendor/once_cell/src/lib.rs /^ impl Default for OnceCell {$/;" c module:unsync +OnceCell vendor/once_cell/src/lib.rs /^ impl From for OnceCell {$/;" c module:sync +OnceCell vendor/once_cell/src/lib.rs /^ impl From for OnceCell {$/;" c module:unsync +OnceCell vendor/once_cell/src/lib.rs /^ impl OnceCell {$/;" c module:sync +OnceCell vendor/once_cell/src/lib.rs /^ impl OnceCell {$/;" c module:unsync +OnceCell vendor/once_cell/src/lib.rs /^ pub struct OnceCell {$/;" s module:unsync +OnceCell vendor/once_cell/src/lib.rs /^ pub struct OnceCell(Imp);$/;" s module:sync +OnceNonZeroUsize vendor/once_cell/src/race.rs /^impl OnceNonZeroUsize {$/;" c +OnceNonZeroUsize vendor/once_cell/src/race.rs /^pub struct OnceNonZeroUsize {$/;" s +OneByte vendor/memchr/src/memmem/mod.rs /^ OneByte(u8),$/;" e enum:SearcherKind +OneByte vendor/memchr/src/memmem/mod.rs /^ OneByte(u8),$/;" e enum:SearcherRevKind +OneShot vendor/nix/src/sys/time.rs /^ OneShot(TimeSpec),$/;" e enum:timer::Expiration +OpenClipboard vendor/winapi/src/um/winuser.rs /^ pub fn OpenClipboard($/;" f +OpenDesktopA vendor/winapi/src/um/winuser.rs /^ pub fn OpenDesktopA($/;" f +OpenDesktopW vendor/winapi/src/um/winuser.rs /^ pub fn OpenDesktopW($/;" f +OpenEventA vendor/winapi/src/um/synchapi.rs /^ pub fn OpenEventA($/;" f +OpenEventW vendor/winapi/src/um/synchapi.rs /^ pub fn OpenEventW($/;" f +OpenFile vendor/winapi/src/um/winbase.rs /^ pub fn OpenFile($/;" f +OpenFileById vendor/winapi/src/um/winbase.rs /^ pub fn OpenFileById($/;" f +OpenFileMappingA vendor/winapi/src/um/winbase.rs /^ pub fn OpenFileMappingA($/;" f +OpenFileMappingFromApp vendor/winapi/src/um/memoryapi.rs /^ pub fn OpenFileMappingFromApp($/;" f +OpenFileMappingW vendor/winapi/src/um/memoryapi.rs /^ pub fn OpenFileMappingW($/;" f +OpenIcon vendor/winapi/src/um/winuser.rs /^ pub fn OpenIcon($/;" f +OpenInputDesktop vendor/winapi/src/um/winuser.rs /^ pub fn OpenInputDesktop($/;" f +OpenJobObjectA vendor/winapi/src/um/winbase.rs /^ pub fn OpenJobObjectA($/;" f +OpenJobObjectW vendor/winapi/src/um/jobapi2.rs /^ pub fn OpenJobObjectW($/;" f +OpenMutexA vendor/winapi/src/um/winbase.rs /^ pub fn OpenMutexA($/;" f +OpenMutexW vendor/winapi/src/um/synchapi.rs /^ pub fn OpenMutexW($/;" f +OpenPrinterA vendor/winapi/src/um/winspool.rs /^ pub fn OpenPrinterA($/;" f +OpenPrinterW vendor/winapi/src/um/winspool.rs /^ pub fn OpenPrinterW($/;" f +OpenPrivateNamespaceA vendor/winapi/src/um/winbase.rs /^ pub fn OpenPrivateNamespaceA($/;" f +OpenPrivateNamespaceW vendor/winapi/src/um/namespaceapi.rs /^ pub fn OpenPrivateNamespaceW($/;" f +OpenProcess vendor/winapi/src/um/processthreadsapi.rs /^ pub fn OpenProcess($/;" f +OpenProcessToken vendor/winapi/src/um/processthreadsapi.rs /^ pub fn OpenProcessToken($/;" f +OpenSCManagerA vendor/winapi/src/um/winsvc.rs /^ pub fn OpenSCManagerA($/;" f +OpenSCManagerW vendor/winapi/src/um/winsvc.rs /^ pub fn OpenSCManagerW($/;" f +OpenSemaphoreA vendor/winapi/src/um/winbase.rs /^ pub fn OpenSemaphoreA($/;" f +OpenSemaphoreW vendor/winapi/src/um/synchapi.rs /^ pub fn OpenSemaphoreW($/;" f +OpenServiceA vendor/winapi/src/um/winsvc.rs /^ pub fn OpenServiceA($/;" f +OpenServiceW vendor/winapi/src/um/winsvc.rs /^ pub fn OpenServiceW($/;" f +OpenThemeData vendor/winapi/src/um/uxtheme.rs /^ pub fn OpenThemeData($/;" f +OpenThemeDataEx vendor/winapi/src/um/uxtheme.rs /^ pub fn OpenThemeDataEx($/;" f +OpenThemeDataForDpi vendor/winapi/src/um/uxtheme.rs /^ pub fn OpenThemeDataForDpi($/;" f +OpenThread vendor/winapi/src/um/processthreadsapi.rs /^ pub fn OpenThread($/;" f +OpenThreadToken vendor/winapi/src/um/processthreadsapi.rs /^ pub fn OpenThreadToken($/;" f +OpenThreadWaitChainSession vendor/winapi/src/um/wct.rs /^ pub fn OpenThreadWaitChainSession($/;" f +OpenTraceA vendor/winapi/src/shared/evntrace.rs /^ pub fn OpenTraceA($/;" f +OpenTraceW vendor/winapi/src/shared/evntrace.rs /^ pub fn OpenTraceW($/;" f +OpenWaitableTimerA vendor/winapi/src/um/winbase.rs /^ pub fn OpenWaitableTimerA($/;" f +OpenWaitableTimerW vendor/winapi/src/um/synchapi.rs /^ pub fn OpenWaitableTimerW($/;" f +OpenWindowStationA vendor/winapi/src/um/winuser.rs /^ pub fn OpenWindowStationA($/;" f +OpenWindowStationW vendor/winapi/src/um/winuser.rs /^ pub fn OpenWindowStationW($/;" f +OpenptyResult vendor/nix/src/pty.rs /^pub struct OpenptyResult {$/;" s +OptBacktrace vendor/thiserror/tests/test_backtrace.rs /^ pub enum OptBacktrace {$/;" g module:enums +OptBacktrace vendor/thiserror/tests/test_backtrace.rs /^ pub struct OptBacktrace {$/;" s module:structs +OptBacktraceFrom vendor/thiserror/tests/test_backtrace.rs /^ pub enum OptBacktraceFrom {$/;" g module:enums +OptBacktraceFrom vendor/thiserror/tests/test_backtrace.rs /^ pub struct OptBacktraceFrom {$/;" s module:structs +OptSourceAlwaysBacktrace vendor/thiserror/tests/test_option.rs /^ pub enum OptSourceAlwaysBacktrace {$/;" g module:enums +OptSourceAlwaysBacktrace vendor/thiserror/tests/test_option.rs /^ pub struct OptSourceAlwaysBacktrace {$/;" s module:structs +OptSourceNoBacktrace vendor/thiserror/tests/test_option.rs /^ pub enum OptSourceNoBacktrace {$/;" g module:enums +OptSourceNoBacktrace vendor/thiserror/tests/test_option.rs /^ pub struct OptSourceNoBacktrace {$/;" s module:structs +OptSourceOptBacktrace vendor/thiserror/tests/test_option.rs /^ pub enum OptSourceOptBacktrace {$/;" g module:enums +OptSourceOptBacktrace vendor/thiserror/tests/test_option.rs /^ pub struct OptSourceOptBacktrace {$/;" s module:structs +Option builtins_rust/help/src/lib.rs /^pub enum Option {$/;" g +Option vendor/quote/src/to_tokens.rs /^impl ToTokens for Option {$/;" c +Option vendor/stdext/src/option.rs /^impl OptionExt for Option {$/;" c +Option vendor/syn/src/expr.rs /^ impl Parse for Option

    $/;" c +Pin vendor/futures-task/src/future_obj.rs /^ unsafe impl<'a, T, F> UnsafeFutureObj<'a, T> for Pin>$/;" c module:if_alloc +Pin vendor/futures-task/src/future_obj.rs /^ unsafe impl<'a, T: 'a> UnsafeFutureObj<'a, T> for Pin + 'a>> {$/;" c module:if_alloc +Pin vendor/futures-task/src/future_obj.rs /^ unsafe impl<'a, T: 'a> UnsafeFutureObj<'a, T> for Pin + Send + 'a/;" c module:if_alloc +Pin vendor/futures-task/src/future_obj.rs /^unsafe impl<'a, T, F> UnsafeFutureObj<'a, T> for Pin<&'a mut F>$/;" c +Pin vendor/futures-task/src/future_obj.rs /^unsafe impl<'a, T> UnsafeFutureObj<'a, T> for Pin<&'a mut (dyn Future + 'a)> {$/;" c +PinCell vendor/fluent-fallback/src/pin_cell/mod.rs /^impl PinCell {$/;" c +PinCell vendor/fluent-fallback/src/pin_cell/mod.rs /^impl From> for PinCell {$/;" c +PinCell vendor/fluent-fallback/src/pin_cell/mod.rs /^impl From for PinCell {$/;" c +PinCell vendor/fluent-fallback/src/pin_cell/mod.rs /^impl PinCell {$/;" c +PinCell vendor/fluent-fallback/src/pin_cell/mod.rs /^pub struct PinCell {$/;" s +PinMut vendor/fluent-fallback/src/pin_cell/pin_mut.rs /^impl<'a, T: ?Sized> Deref for PinMut<'a, T> {$/;" c +PinMut vendor/fluent-fallback/src/pin_cell/pin_mut.rs /^impl<'a, T: ?Sized> PinMut<'a, T> {$/;" c +PinMut vendor/fluent-fallback/src/pin_cell/pin_mut.rs /^impl<'a, T: fmt::Display + ?Sized> fmt::Display for PinMut<'a, T> {$/;" c +PinMut vendor/fluent-fallback/src/pin_cell/pin_mut.rs /^pub struct PinMut<'a, T: ?Sized> {$/;" s +PinRef vendor/fluent-fallback/src/pin_cell/pin_ref.rs /^impl<'a, T: ?Sized> Deref for PinRef<'a, T> {$/;" c +PinRef vendor/fluent-fallback/src/pin_cell/pin_ref.rs /^impl<'a, T: fmt::Display + ?Sized> fmt::Display for PinRef<'a, T> {$/;" c +PinRef vendor/fluent-fallback/src/pin_cell/pin_ref.rs /^pub struct PinRef<'a, T: ?Sized> {$/;" s +PinnedFuture vendor/futures/tests/auto_traits.rs /^impl Future for PinnedFuture {$/;" c +PinnedFuture vendor/futures/tests/auto_traits.rs /^pub struct PinnedFuture(PhantomPinned, PhantomData);$/;" s +PinnedSink vendor/futures/tests/auto_traits.rs /^impl Sink for PinnedSink {$/;" c +PinnedSink vendor/futures/tests/auto_traits.rs /^pub struct PinnedSink(PhantomPinned, PhantomData<(T, E)>);$/;" s +PinnedStream vendor/futures/tests/auto_traits.rs /^impl Stream for PinnedStream {$/;" c +PinnedStream vendor/futures/tests/auto_traits.rs /^pub struct PinnedStream(PhantomPinned, PhantomData);$/;" s +PinnedTryFuture vendor/futures/tests/auto_traits.rs /^pub type PinnedTryFuture = PinnedFuture>;$/;" t +PinnedTryStream vendor/futures/tests/auto_traits.rs /^pub type PinnedTryStream = PinnedStream>;$/;" t +Placeable vendor/fluent-syntax/src/ast/mod.rs /^ Placeable { expression: Box> },$/;" e enum:InlineExpression +Placeable vendor/fluent-syntax/src/ast/mod.rs /^ Placeable { expression: Expression },$/;" e enum:PatternElement +Placeable vendor/fluent-syntax/src/parser/pattern.rs /^ Placeable(ast::Expression),$/;" e enum:PatternElementPlaceholders +PlaceableStart vendor/fluent-syntax/src/parser/pattern.rs /^ PlaceableStart,$/;" e enum:TextElementTermination +PlainBacktrace vendor/thiserror/tests/test_backtrace.rs /^ pub enum PlainBacktrace {$/;" g module:enums +PlainBacktrace vendor/thiserror/tests/test_backtrace.rs /^ pub struct PlainBacktrace {$/;" s module:structs +Platform support vendor/libc/README.md /^## Platform support$/;" s chapter:libc - Raw FFI bindings to platforms' system libraries +PlayEnhMetaFile vendor/winapi/src/um/wingdi.rs /^ pub fn PlayEnhMetaFile($/;" f +PlayEnhMetaFileRecord vendor/winapi/src/um/wingdi.rs /^ pub fn PlayEnhMetaFileRecord($/;" f +PlayMetaFile vendor/winapi/src/um/wingdi.rs /^ pub fn PlayMetaFile($/;" f +PlayMetaFileRecord vendor/winapi/src/um/wingdi.rs /^ pub fn PlayMetaFileRecord($/;" f +PlaySoundA vendor/winapi/src/um/playsoundapi.rs /^ pub fn PlaySoundA($/;" f +PlaySoundW vendor/winapi/src/um/playsoundapi.rs /^ pub fn PlaySoundW($/;" f +PlgBlt vendor/winapi/src/um/wingdi.rs /^ pub fn PlgBlt($/;" f +PluralCategory vendor/intl_pluralrules/src/lib.rs /^pub enum PluralCategory {$/;" g +PluralOperands vendor/fluent-bundle/src/types/number.rs /^impl From<&FluentNumber> for PluralOperands {$/;" c +PluralOperands vendor/intl_pluralrules/src/operands.rs /^impl<'a> TryFrom<&'a str> for PluralOperands {$/;" c +PluralOperands vendor/intl_pluralrules/src/operands.rs /^pub struct PluralOperands {$/;" s +PluralRule vendor/intl_pluralrules/src/rules.rs /^pub type PluralRule = fn(&PluralOperands) -> PluralCategory;$/;" t +PluralRuleType vendor/intl_pluralrules/src/lib.rs /^pub enum PluralRuleType {$/;" g +PluralRules vendor/fluent-bundle/src/types/plural.rs /^impl Memoizable for PluralRules {$/;" c +PluralRules vendor/fluent-bundle/src/types/plural.rs /^pub struct PluralRules(pub IntlPluralRules);$/;" s +PluralRules vendor/intl-memoizer/src/lib.rs /^ impl Memoizable for PluralRules {$/;" c module:tests +PluralRules vendor/intl-memoizer/src/lib.rs /^ impl PluralRules {$/;" c module:tests +PluralRules vendor/intl-memoizer/src/lib.rs /^ struct PluralRules(pub IntlPluralRules);$/;" s module:tests +PluralRules vendor/intl_pluralrules/src/lib.rs /^impl PluralRules {$/;" c +PluralRules vendor/intl_pluralrules/src/lib.rs /^pub struct PluralRules {$/;" s +Pointer vendor/thiserror-impl/src/attr.rs /^ Pointer,$/;" e enum:Trait +PollFd vendor/nix/src/poll.rs /^impl AsRawFd for PollFd {$/;" c +PollFd vendor/nix/src/poll.rs /^impl PollFd {$/;" c +PollFd vendor/nix/src/poll.rs /^pub struct PollFd {$/;" s +PollFn vendor/futures-util/src/future/poll_fn.rs /^impl Unpin for PollFn {}$/;" c +PollFn vendor/futures-util/src/future/poll_fn.rs /^impl fmt::Debug for PollFn {$/;" c +PollFn vendor/futures-util/src/future/poll_fn.rs /^impl Future for PollFn$/;" c +PollFn vendor/futures-util/src/future/poll_fn.rs /^pub struct PollFn {$/;" s +PollFn vendor/futures-util/src/stream/poll_fn.rs /^impl Unpin for PollFn {}$/;" c +PollFn vendor/futures-util/src/stream/poll_fn.rs /^impl fmt::Debug for PollFn {$/;" c +PollFn vendor/futures-util/src/stream/poll_fn.rs /^impl Stream for PollFn$/;" c +PollFn vendor/futures-util/src/stream/poll_fn.rs /^pub struct PollFn {$/;" s +PollImmediate vendor/futures-util/src/future/poll_immediate.rs /^impl Future for PollImmediate$/;" c +PollImmediate vendor/futures-util/src/future/poll_immediate.rs /^impl Stream for PollImmediate$/;" c +PollImmediate vendor/futures-util/src/future/poll_immediate.rs /^impl FusedFuture for PollImmediate {$/;" c +PollImmediate vendor/futures-util/src/stream/poll_immediate.rs /^impl super::FusedStream for PollImmediate {$/;" c +PollImmediate vendor/futures-util/src/stream/poll_immediate.rs /^impl Stream for PollImmediate$/;" c +PollNext vendor/futures-util/src/stream/select_with_strategy.rs /^impl Default for PollNext {$/;" c +PollNext vendor/futures-util/src/stream/select_with_strategy.rs /^impl PollNext {$/;" c +PollNext vendor/futures-util/src/stream/select_with_strategy.rs /^pub enum PollNext {$/;" g +PollOnce vendor/futures-util/src/async_await/poll.rs /^impl Future for PollOnce {$/;" c +PollOnce vendor/futures-util/src/async_await/poll.rs /^pub struct PollOnce {$/;" s +PollStateBomb vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl<'a, F: FnOnce(&SharedPollState) -> u8> PollStateBomb<'a, F> {$/;" c +PollStateBomb vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl u8> Drop for PollStateBomb<'_, F> {$/;" c +PollStateBomb vendor/futures-util/src/stream/stream/flatten_unordered.rs /^struct PollStateBomb<'a, F: FnOnce(&SharedPollState) -> u8> {$/;" s +PollStreamFut vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl Future for PollStreamFut {$/;" c +PollStreamFut vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl PollStreamFut {$/;" c +PolyBezier vendor/winapi/src/um/wingdi.rs /^ pub fn PolyBezier($/;" f +PolyBezierTo vendor/winapi/src/um/wingdi.rs /^ pub fn PolyBezierTo($/;" f +PolyDraw vendor/winapi/src/um/wingdi.rs /^ pub fn PolyDraw($/;" f +PolyPolygon vendor/winapi/src/um/wingdi.rs /^ pub fn PolyPolygon($/;" f +PolyPolyline vendor/winapi/src/um/wingdi.rs /^ pub fn PolyPolyline($/;" f +PolyTextOutA vendor/winapi/src/um/wingdi.rs /^ pub fn PolyTextOutA($/;" f +PolyTextOutW vendor/winapi/src/um/wingdi.rs /^ pub fn PolyTextOutW($/;" f +Polygon vendor/winapi/src/um/wingdi.rs /^ pub fn Polygon($/;" f +Polyline vendor/winapi/src/um/wingdi.rs /^ pub fn Polyline($/;" f +PolylineTo vendor/winapi/src/um/wingdi.rs /^ pub fn PolylineTo($/;" f +PoolState vendor/futures-executor/src/thread_pool.rs /^impl PoolState {$/;" c +PoolState vendor/futures-executor/src/thread_pool.rs /^struct PoolState {$/;" s +PopResult vendor/futures-channel/src/mpsc/queue.rs /^pub(super) enum PopResult {$/;" g +PopdCmd builtins_rust/exec_cmd/src/lib.rs /^ PopdCmd,$/;" e enum:CMDType +PopdComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for PopdComand {$/;" c +PopdComand builtins_rust/exec_cmd/src/lib.rs /^struct PopdComand;$/;" s +PortUnreach vendor/nix/test/sys/test_socket.rs /^ PortUnreach = 3, \/\/ ICMP_PORT_UNREACH$/;" e enum:linux_errqueue::test_recverr_v4::IcmpUnreachCodes +PortUnreach vendor/nix/test/sys/test_socket.rs /^ PortUnreach = 4, \/\/ ICMPV6_PORT_UNREACH$/;" e enum:linux_errqueue::test_recverr_v6::IcmpV6UnreachCodes +PositionReader vendor/futures/tests/io_buf_reader.rs /^ impl io::Read for PositionReader {$/;" c function:test_buffered_reader_seek_underflow +PositionReader vendor/futures/tests/io_buf_reader.rs /^ impl io::Seek for PositionReader {$/;" c function:test_buffered_reader_seek_underflow +PositionReader vendor/futures/tests/io_buf_reader.rs /^ struct PositionReader {$/;" s function:test_buffered_reader_seek_underflow +PositionalArgumentFollowsNamed vendor/fluent-syntax/src/parser/errors.rs /^ PositionalArgumentFollowsNamed,$/;" e enum:ErrorKind +PostMessageA vendor/winapi/src/um/winuser.rs /^ pub fn PostMessageA($/;" f +PostMessageW vendor/winapi/src/um/winuser.rs /^ pub fn PostMessageW($/;" f +PostQueuedCompletionStatus vendor/winapi/src/um/ioapiset.rs /^ pub fn PostQueuedCompletionStatus($/;" f +PostQuitMessage vendor/winapi/src/um/winuser.rs /^ pub fn PostQuitMessage($/;" f +PostThreadMessageA vendor/winapi/src/um/winuser.rs /^ pub fn PostThreadMessageA($/;" f +PostThreadMessageW vendor/winapi/src/um/winuser.rs /^ pub fn PostThreadMessageW($/;" f +PowerCallback vendor/libc/src/psp.rs /^pub type PowerCallback = extern "C" fn(unknown: i32, power_info: i32);$/;" t +PowerCanRestoreIndividualDefaultPowerScheme vendor/winapi/src/um/powrprof.rs /^ pub fn PowerCanRestoreIndividualDefaultPowerScheme($/;" f +PowerClearRequest vendor/winapi/src/um/winbase.rs /^ pub fn PowerClearRequest($/;" f +PowerCreatePossibleSetting vendor/winapi/src/um/powrprof.rs /^ pub fn PowerCreatePossibleSetting($/;" f +PowerCreateRequest vendor/winapi/src/um/winbase.rs /^ pub fn PowerCreateRequest($/;" f +PowerCreateSetting vendor/winapi/src/um/powrprof.rs /^ pub fn PowerCreateSetting($/;" f +PowerDeleteScheme vendor/winapi/src/um/powrprof.rs /^ pub fn PowerDeleteScheme($/;" f +PowerDeterminePlatformRole vendor/winapi/src/um/powrprof.rs /^ pub fn PowerDeterminePlatformRole() -> POWER_PLATFORM_ROLE;$/;" f +PowerDeterminePlatformRoleEx vendor/winapi/src/um/powerbase.rs /^ pub fn PowerDeterminePlatformRoleEx($/;" f +PowerDuplicateScheme vendor/winapi/src/um/powrprof.rs /^ pub fn PowerDuplicateScheme($/;" f +PowerEnumerate vendor/winapi/src/um/powrprof.rs /^ pub fn PowerEnumerate($/;" f +PowerGetActiveScheme vendor/winapi/src/um/powersetting.rs /^ pub fn PowerGetActiveScheme($/;" f +PowerImportPowerScheme vendor/winapi/src/um/powrprof.rs /^ pub fn PowerImportPowerScheme($/;" f +PowerIsSettingRangeDefined vendor/winapi/src/um/powrprof.rs /^ pub fn PowerIsSettingRangeDefined($/;" f +PowerOpenSystemPowerKey vendor/winapi/src/um/powrprof.rs /^ pub fn PowerOpenSystemPowerKey($/;" f +PowerOpenUserPowerKey vendor/winapi/src/um/powrprof.rs /^ pub fn PowerOpenUserPowerKey($/;" f +PowerReadACDefaultIndex vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadACDefaultIndex($/;" f +PowerReadACValue vendor/winapi/src/um/powersetting.rs /^ pub fn PowerReadACValue($/;" f +PowerReadACValueIndex vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadACValueIndex($/;" f +PowerReadDCDefaultIndex vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadDCDefaultIndex($/;" f +PowerReadDCValue vendor/winapi/src/um/powersetting.rs /^ pub fn PowerReadDCValue($/;" f +PowerReadDCValueIndex vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadDCValueIndex($/;" f +PowerReadDescription vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadDescription($/;" f +PowerReadFriendlyName vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadFriendlyName($/;" f +PowerReadIconResourceSpecifier vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadIconResourceSpecifier($/;" f +PowerReadPossibleDescription vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadPossibleDescription($/;" f +PowerReadPossibleFriendlyName vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadPossibleFriendlyName($/;" f +PowerReadPossibleValue vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadPossibleValue($/;" f +PowerReadSettingAttributes vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadSettingAttributes($/;" f +PowerReadValueIncrement vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadValueIncrement($/;" f +PowerReadValueMax vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadValueMax($/;" f +PowerReadValueMin vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadValueMin($/;" f +PowerReadValueUnitsSpecifier vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReadValueUnitsSpecifier($/;" f +PowerRegisterSuspendResumeNotification vendor/winapi/src/um/powerbase.rs /^ pub fn PowerRegisterSuspendResumeNotification($/;" f +PowerRemovePowerSetting vendor/winapi/src/um/powrprof.rs /^ pub fn PowerRemovePowerSetting($/;" f +PowerReplaceDefaultPowerSchemes vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReplaceDefaultPowerSchemes() -> DWORD;$/;" f +PowerReportThermalEvent vendor/winapi/src/um/powrprof.rs /^ pub fn PowerReportThermalEvent($/;" f +PowerRestoreDefaultPowerSchemes vendor/winapi/src/um/powrprof.rs /^ pub fn PowerRestoreDefaultPowerSchemes() -> DWORD;$/;" f +PowerRestoreIndividualDefaultPowerScheme vendor/winapi/src/um/powrprof.rs /^ pub fn PowerRestoreIndividualDefaultPowerScheme($/;" f +PowerSetActiveScheme vendor/winapi/src/um/powersetting.rs /^ pub fn PowerSetActiveScheme($/;" f +PowerSetRequest vendor/winapi/src/um/winbase.rs /^ pub fn PowerSetRequest($/;" f +PowerSettingAccessCheck vendor/winapi/src/um/powrprof.rs /^ pub fn PowerSettingAccessCheck($/;" f +PowerSettingAccessCheckEx vendor/winapi/src/um/powrprof.rs /^ pub fn PowerSettingAccessCheckEx($/;" f +PowerSettingRegisterNotification vendor/winapi/src/um/powersetting.rs /^ pub fn PowerSettingRegisterNotification($/;" f +PowerSettingUnregisterNotification vendor/winapi/src/um/powersetting.rs /^ pub fn PowerSettingUnregisterNotification($/;" f +PowerUnregisterSuspendResumeNotification vendor/winapi/src/um/powerbase.rs /^ pub fn PowerUnregisterSuspendResumeNotification($/;" f +PowerWriteACDefaultIndex vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWriteACDefaultIndex($/;" f +PowerWriteACValueIndex vendor/winapi/src/um/powersetting.rs /^ pub fn PowerWriteACValueIndex($/;" f +PowerWriteDCDefaultIndex vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWriteDCDefaultIndex($/;" f +PowerWriteDCValueIndex vendor/winapi/src/um/powersetting.rs /^ pub fn PowerWriteDCValueIndex($/;" f +PowerWriteDescription vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWriteDescription($/;" f +PowerWriteFriendlyName vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWriteFriendlyName($/;" f +PowerWriteIconResourceSpecifier vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWriteIconResourceSpecifier($/;" f +PowerWritePossibleDescription vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWritePossibleDescription($/;" f +PowerWritePossibleFriendlyName vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWritePossibleFriendlyName($/;" f +PowerWritePossibleValue vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWritePossibleValue($/;" f +PowerWriteSettingAttributes vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWriteSettingAttributes($/;" f +PowerWriteValueIncrement vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWriteValueIncrement($/;" f +PowerWriteValueMax vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWriteValueMax($/;" f +PowerWriteValueMin vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWriteValueMin($/;" f +PowerWriteValueUnitsSpecifier vendor/winapi/src/um/powrprof.rs /^ pub fn PowerWriteValueUnitsSpecifier($/;" f +Pppox vendor/nix/src/sys/socket/addr.rs /^ Pppox = libc::AF_PPPOX,$/;" e enum:AddressFamily +Pre vendor/memchr/src/memmem/prefilter/mod.rs /^impl<'a> Pre<'a> {$/;" c +Pre vendor/memchr/src/memmem/prefilter/mod.rs /^pub(crate) struct Pre<'a> {$/;" s +Precalculated target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" s object:local.0 +Precalculated target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" s object:local.0 +Precalculated target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" s object:local.0 +Precalculated target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" s object:local.0 +Precalculated target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" s object:local.0 +Precalculated target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" s object:local.0 +Precalculated target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" s object:local.0 +Precalculated target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" s object:local.0 +Precedence vendor/syn/src/expr.rs /^ enum Precedence {$/;" g module:parsing +Precedence vendor/syn/src/expr.rs /^ impl Clone for Precedence {$/;" c module:parsing +Precedence vendor/syn/src/expr.rs /^ impl Copy for Precedence {}$/;" c module:parsing +Precedence vendor/syn/src/expr.rs /^ impl PartialEq for Precedence {$/;" c module:parsing +Precedence vendor/syn/src/expr.rs /^ impl PartialOrd for Precedence {$/;" c module:parsing +Precedence vendor/syn/src/expr.rs /^ impl Precedence {$/;" c module:parsing +PredicateEq vendor/syn/src/gen/clone.rs /^impl Clone for PredicateEq {$/;" c +PredicateEq vendor/syn/src/gen/debug.rs /^impl Debug for PredicateEq {$/;" c +PredicateEq vendor/syn/src/gen/eq.rs /^impl Eq for PredicateEq {}$/;" c +PredicateEq vendor/syn/src/gen/eq.rs /^impl PartialEq for PredicateEq {$/;" c +PredicateEq vendor/syn/src/gen/hash.rs /^impl Hash for PredicateEq {$/;" c +PredicateEq vendor/syn/src/generics.rs /^ impl ToTokens for PredicateEq {$/;" c module:printing +PredicateLifetime vendor/syn/src/gen/clone.rs /^impl Clone for PredicateLifetime {$/;" c +PredicateLifetime vendor/syn/src/gen/debug.rs /^impl Debug for PredicateLifetime {$/;" c +PredicateLifetime vendor/syn/src/gen/eq.rs /^impl Eq for PredicateLifetime {}$/;" c +PredicateLifetime vendor/syn/src/gen/eq.rs /^impl PartialEq for PredicateLifetime {$/;" c +PredicateLifetime vendor/syn/src/gen/hash.rs /^impl Hash for PredicateLifetime {$/;" c +PredicateLifetime vendor/syn/src/generics.rs /^ impl ToTokens for PredicateLifetime {$/;" c module:printing +PredicateType vendor/syn/src/gen/clone.rs /^impl Clone for PredicateType {$/;" c +PredicateType vendor/syn/src/gen/debug.rs /^impl Debug for PredicateType {$/;" c +PredicateType vendor/syn/src/gen/eq.rs /^impl Eq for PredicateType {}$/;" c +PredicateType vendor/syn/src/gen/eq.rs /^impl PartialEq for PredicateType {$/;" c +PredicateType vendor/syn/src/gen/hash.rs /^impl Hash for PredicateType {$/;" c +PredicateType vendor/syn/src/generics.rs /^ impl ToTokens for PredicateType {$/;" c module:printing +PrefetchVirtualMemory vendor/winapi/src/um/memoryapi.rs /^ pub fn PrefetchVirtualMemory($/;" f +Prefilter vendor/memchr/src/memmem/prefilter/mod.rs /^impl Default for Prefilter {$/;" c +Prefilter vendor/memchr/src/memmem/prefilter/mod.rs /^impl Prefilter {$/;" c +Prefilter vendor/memchr/src/memmem/prefilter/mod.rs /^pub enum Prefilter {$/;" g +PrefilterFn vendor/memchr/src/memmem/prefilter/mod.rs /^impl PrefilterFn {$/;" c +PrefilterFn vendor/memchr/src/memmem/prefilter/mod.rs /^impl core::fmt::Debug for PrefilterFn {$/;" c +PrefilterFn vendor/memchr/src/memmem/prefilter/mod.rs /^pub(crate) struct PrefilterFn(PrefilterFnTy);$/;" s +PrefilterFnTy vendor/memchr/src/memmem/prefilter/mod.rs /^pub(crate) type PrefilterFnTy = unsafe fn($/;" t +PrefilterState vendor/memchr/src/memmem/prefilter/mod.rs /^impl PrefilterState {$/;" c +PrefilterState vendor/memchr/src/memmem/prefilter/mod.rs /^pub(crate) struct PrefilterState {$/;" s +PrefilterTest vendor/memchr/src/memmem/prefilter/mod.rs /^ impl PrefilterTest {$/;" c module:tests +PrefilterTest vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) struct PrefilterTest {$/;" s module:tests +PrefilterTestSeed vendor/memchr/src/memmem/prefilter/mod.rs /^ impl PrefilterTestSeed {$/;" c module:tests +PrefilterTestSeed vendor/memchr/src/memmem/prefilter/mod.rs /^ struct PrefilterTestSeed {$/;" s module:tests +PrepareTape vendor/winapi/src/um/winbase.rs /^ pub fn PrepareTape($/;" f +Print vendor/syn/tests/debug/gen.rs /^ impl Debug for Print {$/;" c method:Lite::fmt::Print::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(Option);$/;" s method:Lite::fmt::Print::fmt +Print vendor/syn/tests/debug/gen.rs /^ impl Debug for Print {$/;" c method:Lite::fmt::Print::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(Option);$/;" s method:Lite::fmt::Print::fmt +Print vendor/syn/tests/debug/gen.rs /^ impl Debug for Print {$/;" c method:Lite::fmt::Print::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(Option);$/;" s method:Lite::fmt::Print::fmt +Print vendor/syn/tests/debug/gen.rs /^ impl Debug for Print {$/;" c method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((Option, syn::Path, syn::token::For));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::As, proc_macro2::Ident));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::At, Box));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::Brace, Vec));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::Else, Box));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::Eq, syn::Expr));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::Eq, syn::Type));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(Box);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(proc_macro2::Ident);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::Abi);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::Block);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::BoundLifetimes);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::Label);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::Lifetime);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::MethodTurbofish);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::QSelf);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::Variadic);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Async);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Auto);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Colon);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Colon2);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Const);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Default);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Dot2);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Dyn);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::In);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Move);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Mut);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Or);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Ref);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Semi);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Static);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Unsafe);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ impl Debug for Print {$/;" c method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((Option, syn::Path, syn::token::For));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((proc_macro2::Ident, syn::token::Colon));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::And, Option));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::As, proc_macro2::Ident));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::At, Box));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::Brace, Vec));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::Else, Box));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::Eq, Box));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::Eq, syn::Expr));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::Eq, syn::Type));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print((syn::token::If, Box));$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(Box);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(String);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(proc_macro2::Ident);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::Abi);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::Block);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::BoundLifetimes);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::Expr);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::Label);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::Lifetime);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::LitStr);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::MethodTurbofish);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::QSelf);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::Type);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::Variadic);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::WhereClause);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::As);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Async);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Auto);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Colon);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Colon2);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Comma);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Const);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Default);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Dot2);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Dyn);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Eq);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Gt);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::In);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Lt);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Move);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Mut);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Or);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Paren);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Ref);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Semi);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Static);$/;" s method:Lite::fmt +Print vendor/syn/tests/debug/gen.rs /^ struct Print(syn::token::Unsafe);$/;" s method:Lite::fmt +PrintDlgA vendor/winapi/src/um/commdlg.rs /^ pub fn PrintDlgA($/;" f +PrintDlgExA vendor/winapi/src/um/commdlg.rs /^ pub fn PrintDlgExA($/;" f +PrintDlgExW vendor/winapi/src/um/commdlg.rs /^ pub fn PrintDlgExW($/;" f +PrintDlgW vendor/winapi/src/um/commdlg.rs /^ pub fn PrintDlgW($/;" f +PrintIndex support/texi2html /^sub PrintIndex$/;" s +PrintIndexPage support/texi2html /^sub PrintIndexPage$/;" s +PrintWindow vendor/winapi/src/um/winuser.rs /^ pub fn PrintWindow($/;" f +PrinterMessageBoxA vendor/winapi/src/um/winspool.rs /^ pub fn PrinterMessageBoxA($/;" f +PrinterMessageBoxW vendor/winapi/src/um/winspool.rs /^ pub fn PrinterMessageBoxW($/;" f +PrinterProperties vendor/winapi/src/um/winspool.rs /^ pub fn PrinterProperties($/;" f +PrintfCmd builtins_rust/exec_cmd/src/lib.rs /^ PrintfCmd,$/;" e enum:CMDType +PrintfComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for PrintfComand {$/;" c +PrintfComand builtins_rust/exec_cmd/src/lib.rs /^struct PrintfComand;$/;" s +PrivacyGetZonePreferenceW vendor/winapi/src/um/wininet.rs /^ pub fn PrivacyGetZonePreferenceW($/;" f +PrivacySetZonePreferenceW vendor/winapi/src/um/wininet.rs /^ pub fn PrivacySetZonePreferenceW($/;" f +PrivateIter vendor/syn/src/punctuated.rs /^impl<'a, T, P> Clone for PrivateIter<'a, T, P> {$/;" c +PrivateIter vendor/syn/src/punctuated.rs /^impl<'a, T, P> DoubleEndedIterator for PrivateIter<'a, T, P> {$/;" c +PrivateIter vendor/syn/src/punctuated.rs /^impl<'a, T, P> ExactSizeIterator for PrivateIter<'a, T, P> {$/;" c +PrivateIter vendor/syn/src/punctuated.rs /^impl<'a, T, P> Iterator for PrivateIter<'a, T, P> {$/;" c +PrivateIter vendor/syn/src/punctuated.rs /^struct PrivateIter<'a, T: 'a, P: 'a> {$/;" s +PrivateIterMut vendor/syn/src/punctuated.rs /^impl<'a, T, P> DoubleEndedIterator for PrivateIterMut<'a, T, P> {$/;" c +PrivateIterMut vendor/syn/src/punctuated.rs /^impl<'a, T, P> ExactSizeIterator for PrivateIterMut<'a, T, P> {$/;" c +PrivateIterMut vendor/syn/src/punctuated.rs /^impl<'a, T, P> Iterator for PrivateIterMut<'a, T, P> {$/;" c +PrivateIterMut vendor/syn/src/punctuated.rs /^struct PrivateIterMut<'a, T: 'a, P: 'a> {$/;" s +PrivateStruct vendor/pin-project-lite/tests/test.rs /^ struct PrivateStruct(T);$/;" s function:private_type_in_public_type +PrivilegeCheck vendor/winapi/src/um/securitybaseapi.rs /^ pub fn PrivilegeCheck($/;" f +PrivilegedServiceAuditAlarmW vendor/winapi/src/um/securitybaseapi.rs /^ pub fn PrivilegedServiceAuditAlarmW($/;" f +Proc macro shim vendor/syn/README.md /^## Proc macro shim$/;" s chapter:Parser for Rust source code +ProcMacroAutoTraits vendor/proc-macro2/src/marker.rs /^impl RefUnwindSafe for ProcMacroAutoTraits {}$/;" c +ProcMacroAutoTraits vendor/proc-macro2/src/marker.rs /^impl UnwindSafe for ProcMacroAutoTraits {}$/;" c +ProcMacroAutoTraits vendor/proc-macro2/src/marker.rs /^pub(crate) struct ProcMacroAutoTraits(Rc<()>);$/;" s +Process32First vendor/winapi/src/um/tlhelp32.rs /^ pub fn Process32First($/;" f +Process32FirstW vendor/winapi/src/um/tlhelp32.rs /^ pub fn Process32FirstW($/;" f +Process32Next vendor/winapi/src/um/tlhelp32.rs /^ pub fn Process32Next($/;" f +Process32NextW vendor/winapi/src/um/tlhelp32.rs /^ pub fn Process32NextW($/;" f +ProcessIdToSessionId vendor/winapi/src/um/processthreadsapi.rs /^ pub fn ProcessIdToSessionId($/;" f +ProcessPool vendor/async-trait/tests/test.rs /^ pub trait ProcessPool: Send + Sync {$/;" i module:issue106 +ProcessTrace vendor/winapi/src/shared/evntrace.rs /^ pub fn ProcessTrace($/;" f +ProgIDFromCLSID vendor/winapi/src/um/combaseapi.rs /^ pub fn ProgIDFromCLSID($/;" f +Program Makefile.in /^Program = utshell$(EXEEXT)$/;" m +Progress vendor/syn/tests/repo/progress.rs /^impl Read for Progress {$/;" c +Progress vendor/syn/tests/repo/progress.rs /^impl Drop for Progress {$/;" c +Progress vendor/syn/tests/repo/progress.rs /^impl Progress {$/;" c +Progress vendor/syn/tests/repo/progress.rs /^pub struct Progress {$/;" s +Projection vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ struct Projection<'__pin, T, U>$/;" s +Projection vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ struct Projection<'__pin, T, U>$/;" s +Projection vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ struct Projection<'__pin, T, U>$/;" s +Projection vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ struct Projection<'__pin, T, U>$/;" s +Projection vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ struct Projection<'__pin, T, U>$/;" s +Projection vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ pub(crate) struct Projection<'__pin, T, U>$/;" s +ProjectionRef vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ struct ProjectionRef<'__pin, T, U>$/;" s +ProjectionRef vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ struct ProjectionRef<'__pin, T, U>$/;" s +ProjectionRef vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ struct ProjectionRef<'__pin, T, U>$/;" s +ProjectionRef vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ struct ProjectionRef<'__pin, T, U>$/;" s +ProjectionRef vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ struct ProjectionRef<'__pin, T, U>$/;" s +ProjectionRef vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ pub(crate) struct ProjectionRef<'__pin, T, U>$/;" s +PropVariantClear vendor/winapi/src/um/combaseapi.rs /^ pub fn PropVariantClear($/;" f +PropVariantClear vendor/winapi/src/um/propidl.rs /^ pub fn PropVariantClear($/;" f +PropVariantCopy vendor/winapi/src/um/combaseapi.rs /^ pub fn PropVariantCopy($/;" f +PropVariantCopy vendor/winapi/src/um/propidl.rs /^ pub fn PropVariantCopy($/;" f +PropertySheetA vendor/winapi/src/um/prsht.rs /^ pub fn PropertySheetA($/;" f +PropertySheetW vendor/winapi/src/um/prsht.rs /^ pub fn PropertySheetW($/;" f +PssCaptureSnapshot vendor/winapi/src/um/processsnapshot.rs /^ pub fn PssCaptureSnapshot($/;" f +PssDuplicateSnapshot vendor/winapi/src/um/processsnapshot.rs /^ pub fn PssDuplicateSnapshot($/;" f +PssFreeSnapshot vendor/winapi/src/um/processsnapshot.rs /^ pub fn PssFreeSnapshot($/;" f +PssQuerySnapshot vendor/winapi/src/um/processsnapshot.rs /^ pub fn PssQuerySnapshot($/;" f +PssWalkMarkerCreate vendor/winapi/src/um/processsnapshot.rs /^ pub fn PssWalkMarkerCreate($/;" f +PssWalkMarkerFree vendor/winapi/src/um/processsnapshot.rs /^ pub fn PssWalkMarkerFree($/;" f +PssWalkMarkerGetPosition vendor/winapi/src/um/processsnapshot.rs /^ pub fn PssWalkMarkerGetPosition($/;" f +PssWalkMarkerSeekToBeginning vendor/winapi/src/um/processsnapshot.rs /^ pub fn PssWalkMarkerSeekToBeginning($/;" f +PssWalkMarkerSetPosition vendor/winapi/src/um/processsnapshot.rs /^ pub fn PssWalkMarkerSetPosition($/;" f +PssWalkSnapshot vendor/winapi/src/um/processsnapshot.rs /^ pub fn PssWalkSnapshot($/;" f +PtInRect vendor/winapi/src/um/winuser.rs /^ pub fn PtInRect($/;" f +PtInRegion vendor/winapi/src/um/wingdi.rs /^ pub fn PtInRegion($/;" f +PtVisible vendor/winapi/src/um/wingdi.rs /^ pub fn PtVisible($/;" f +Pthread vendor/nix/src/sys/pthread.rs /^pub type Pthread = pthread_t;$/;" t +PtraceEvent vendor/nix/src/sys/wait.rs /^ PtraceEvent(Pid, Signal, c_int),$/;" e enum:WaitStatus +PtraceSyscall vendor/nix/src/sys/wait.rs /^ PtraceSyscall(Pid),$/;" e enum:WaitStatus +PtyMaster vendor/nix/src/pty.rs /^impl AsRawFd for PtyMaster {$/;" c +PtyMaster vendor/nix/src/pty.rs /^impl Drop for PtyMaster {$/;" c +PtyMaster vendor/nix/src/pty.rs /^impl IntoRawFd for PtyMaster {$/;" c +PtyMaster vendor/nix/src/pty.rs /^impl io::Read for &PtyMaster {$/;" c +PtyMaster vendor/nix/src/pty.rs /^impl io::Read for PtyMaster {$/;" c +PtyMaster vendor/nix/src/pty.rs /^impl io::Write for &PtyMaster {$/;" c +PtyMaster vendor/nix/src/pty.rs /^impl io::Write for PtyMaster {$/;" c +PtyMaster vendor/nix/src/pty.rs /^pub struct PtyMaster(RawFd);$/;" s +PulseEvent vendor/winapi/src/um/winbase.rs /^ pub fn PulseEvent($/;" f +Punct vendor/proc-macro2/src/lib.rs /^ Punct(Punct),$/;" e enum:TokenTree +Punct vendor/proc-macro2/src/lib.rs /^impl Debug for Punct {$/;" c +Punct vendor/proc-macro2/src/lib.rs /^impl Display for Punct {$/;" c +Punct vendor/proc-macro2/src/lib.rs /^impl Punct {$/;" c +Punct vendor/proc-macro2/src/lib.rs /^pub struct Punct {$/;" s +Punct vendor/quote/src/to_tokens.rs /^impl ToTokens for Punct {$/;" c +Punct vendor/syn/src/buffer.rs /^ Punct(Punct),$/;" e enum:Entry +Punct vendor/syn/src/parse.rs /^impl Parse for Punct {$/;" c +Punctuated vendor/syn/src/gen_helper.rs /^ impl FoldHelper for Punctuated {$/;" c module:fold +Punctuated vendor/syn/src/parse_quote.rs /^impl ParseQuote for Punctuated {$/;" c +Punctuated vendor/syn/src/punctuated.rs /^ Punctuated(T, P),$/;" e enum:Pair +Punctuated vendor/syn/src/punctuated.rs /^ impl ToTokens for Punctuated$/;" c module:printing +Punctuated vendor/syn/src/punctuated.rs /^impl<'a, T, P> IntoIterator for &'a Punctuated {$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl<'a, T, P> IntoIterator for &'a mut Punctuated {$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl Clone for Punctuated$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl Default for Punctuated {$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl Eq for Punctuated$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl Extend> for Punctuated {$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl Extend for Punctuated$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl FromIterator> for Punctuated {$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl FromIterator for Punctuated$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl Hash for Punctuated$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl Index for Punctuated {$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl IndexMut for Punctuated {$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl IntoIterator for Punctuated {$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl PartialEq for Punctuated$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl Punctuated {$/;" c +Punctuated vendor/syn/src/punctuated.rs /^impl Debug for Punctuated {$/;" c +Punctuated vendor/syn/src/punctuated.rs /^pub struct Punctuated {$/;" s +Pup vendor/nix/src/sys/socket/addr.rs /^ Pup = libc::AF_PUP,$/;" e enum:AddressFamily +PurgeComm vendor/winapi/src/um/commapi.rs /^ pub fn PurgeComm($/;" f +Push vendor/memchr/src/memmem/twoway.rs /^ Push,$/;" e enum:SuffixOrdering +PushdCmd builtins_rust/exec_cmd/src/lib.rs /^ PushdCmd,$/;" e enum:CMDType +PushdCommand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for PushdCommand {$/;" c +PushdCommand builtins_rust/exec_cmd/src/lib.rs /^struct PushdCommand;$/;" s +PwdCmd builtins_rust/exec_cmd/src/lib.rs /^ PwdCmd,$/;" e enum:CMDType +PwdComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for PwdComand {$/;" c +PwdComand builtins_rust/exec_cmd/src/lib.rs /^struct PwdComand;$/;" s +QFLAG builtins_rust/bind/src/lib.rs /^macro_rules! QFLAG {$/;" M +QFLAG builtins_rust/shopt/src/lib.rs /^static QFLAG: i32 = 0x04;$/;" v +QGLOB_CTLESC pathexp.h /^#define QGLOB_CTLESC /;" d +QGLOB_CVTNULL pathexp.h /^#define QGLOB_CVTNULL /;" d +QGLOB_DEQUOTE pathexp.h /^#define QGLOB_DEQUOTE /;" d +QGLOB_FILENAME pathexp.h /^#define QGLOB_FILENAME /;" d +QGLOB_REGEXP pathexp.h /^#define QGLOB_REGEXP /;" d +QOS_CLASS_BACKGROUND vendor/libc/src/unix/bsd/apple/mod.rs /^ QOS_CLASS_BACKGROUND = 0x09,$/;" e enum:qos_class_t +QOS_CLASS_DEFAULT vendor/libc/src/unix/bsd/apple/mod.rs /^ QOS_CLASS_DEFAULT = 0x15,$/;" e enum:qos_class_t +QOS_CLASS_UNSPECIFIED vendor/libc/src/unix/bsd/apple/mod.rs /^ QOS_CLASS_UNSPECIFIED = 0x00,$/;" e enum:qos_class_t +QOS_CLASS_USER_INITIATED vendor/libc/src/unix/bsd/apple/mod.rs /^ QOS_CLASS_USER_INITIATED = 0x19,$/;" e enum:qos_class_t +QOS_CLASS_USER_INTERACTIVE vendor/libc/src/unix/bsd/apple/mod.rs /^ QOS_CLASS_USER_INTERACTIVE = 0x21,$/;" e enum:qos_class_t +QOS_CLASS_UTILITY vendor/libc/src/unix/bsd/apple/mod.rs /^ QOS_CLASS_UTILITY = 0x11,$/;" e enum:qos_class_t +QPC_TIME vendor/winapi/src/um/dwmapi.rs /^pub type QPC_TIME = ULONGLONG;$/;" t +QSFUNC builtins_rust/common/src/lib.rs /^pub type QSFUNC = unsafe extern "C" fn(*const c_void, *const c_void) -> i32;$/;" t +QSFUNC general.h /^typedef int QSFUNC ();$/;" t typeref:typename:int ()() +QSFUNC general.h /^typedef int QSFUNC (const void *, const void *);$/;" t typeref:typename:int ()(const void *,const void *) +QSFUNC lib/readline/complete.c /^typedef int QSFUNC ();$/;" t typeref:typename:int ()() file: +QSFUNC lib/readline/complete.c /^typedef int QSFUNC (const void *, const void *);$/;" t typeref:typename:int ()(const void *,const void *) file: +QSFUNC lib/readline/funmap.c /^typedef int QSFUNC ();$/;" t typeref:typename:int ()() file: +QSFUNC lib/readline/funmap.c /^typedef int QSFUNC (const void *, const void *);$/;" t typeref:typename:int ()(const void *,const void *) file: +QSFUNC r_bash/src/lib.rs /^pub type QSFUNC = ::core::option::Option<$/;" t +QSFUNC r_glob/src/lib.rs /^pub type QSFUNC = ::core::option::Option<$/;" t +QSFUNC r_readline/src/lib.rs /^pub type QSFUNC = ::core::option::Option<$/;" t +QSelf vendor/syn/src/gen/clone.rs /^impl Clone for QSelf {$/;" c +QSelf vendor/syn/src/gen/debug.rs /^impl Debug for QSelf {$/;" c +QSelf vendor/syn/src/gen/eq.rs /^impl Eq for QSelf {}$/;" c +QSelf vendor/syn/src/gen/eq.rs /^impl PartialEq for QSelf {$/;" c +QSelf vendor/syn/src/gen/hash.rs /^impl Hash for QSelf {$/;" c +QUAD lib/sh/strtoll.c /^#define QUAD /;" d file: +QUAD lib/sh/strtoull.c /^#define QUAD /;" d file: +QUES expr.c /^#define QUES /;" d file: +QUEUE_SIGCHLD jobs.c /^#define QUEUE_SIGCHLD(/;" d file: +QUEUE_SIGCHLD r_jobs/src/lib.rs /^macro_rules! QUEUE_SIGCHLD {$/;" M +QUIT builtins_rust/common/src/lib.rs /^macro_rules! QUIT {$/;" M +QUIT builtins_rust/echo/src/lib.rs /^macro_rules! QUIT {$/;" M +QUIT builtins_rust/fc/src/lib.rs /^unsafe fn QUIT() {$/;" f +QUIT builtins_rust/help/src/lib.rs /^unsafe fn QUIT() {$/;" f +QUIT builtins_rust/printf/src/lib.rs /^unsafe fn QUIT() {$/;" f +QUIT quit.h /^#define QUIT /;" d +QUIT r_jobs/src/lib.rs /^macro_rules! QUIT {$/;" M +QUOTED_CHAR subst.h /^#define QUOTED_CHAR(/;" d +QUOTED_NULL subst.h /^#define QUOTED_NULL(/;" d +Q_ADDEDQUOTES subst.h /^#define Q_ADDEDQUOTES /;" d +Q_ARITH subst.h /^#define Q_ARITH /;" d +Q_ARRAYSUB subst.h /^#define Q_ARRAYSUB /;" d +Q_DOLBRACE subst.h /^#define Q_DOLBRACE /;" d +Q_DOUBLE_QUOTES subst.h /^#define Q_DOUBLE_QUOTES /;" d +Q_HERE_DOCUMENT subst.h /^#define Q_HERE_DOCUMENT /;" d +Q_KEEP_BACKSLASH subst.h /^#define Q_KEEP_BACKSLASH /;" d +Q_PATQUOTE subst.h /^#define Q_PATQUOTE /;" d +Q_QUOTED subst.h /^#define Q_QUOTED /;" d +Q_QUOTEDNULL subst.h /^#define Q_QUOTEDNULL /;" d +QueryActCtxSettingsW vendor/winapi/src/um/winbase.rs /^ pub fn QueryActCtxSettingsW($/;" f +QueryActCtxW vendor/winapi/src/um/winbase.rs /^ pub fn QueryActCtxW($/;" f +QueryAllTracesA vendor/winapi/src/shared/evntrace.rs /^ pub fn QueryAllTracesA($/;" f +QueryAllTracesW vendor/winapi/src/shared/evntrace.rs /^ pub fn QueryAllTracesW($/;" f +QueryContextAttributesA vendor/winapi/src/shared/sspi.rs /^ pub fn QueryContextAttributesA($/;" f +QueryContextAttributesW vendor/winapi/src/shared/sspi.rs /^ pub fn QueryContextAttributesW($/;" f +QueryCredentialsAttributesA vendor/winapi/src/shared/sspi.rs /^ pub fn QueryCredentialsAttributesA($/;" f +QueryCredentialsAttributesW vendor/winapi/src/shared/sspi.rs /^ pub fn QueryCredentialsAttributesW($/;" f +QueryDepthSList vendor/winapi/src/um/interlockedapi.rs /^ pub fn QueryDepthSList($/;" f +QueryDosDeviceA vendor/winapi/src/um/winbase.rs /^ pub fn QueryDosDeviceA($/;" f +QueryDosDeviceW vendor/winapi/src/um/fileapi.rs /^ pub fn QueryDosDeviceW($/;" f +QueryFullProcessImageNameA vendor/winapi/src/um/winbase.rs /^ pub fn QueryFullProcessImageNameA($/;" f +QueryFullProcessImageNameW vendor/winapi/src/um/winbase.rs /^ pub fn QueryFullProcessImageNameW($/;" f +QueryIdleProcessorCycleTime vendor/winapi/src/um/realtimeapiset.rs /^ pub fn QueryIdleProcessorCycleTime($/;" f +QueryIdleProcessorCycleTimeEx vendor/winapi/src/um/realtimeapiset.rs /^ pub fn QueryIdleProcessorCycleTimeEx($/;" f +QueryInformationJobObject vendor/winapi/src/um/jobapi2.rs /^ pub fn QueryInformationJobObject($/;" f +QueryIntrHandlerInfo vendor/libc/src/psp.rs /^ pub fn QueryIntrHandlerInfo($/;" f +QueryIoRateControlInformationJobObject vendor/winapi/src/um/jobapi2.rs /^ pub fn QueryIoRateControlInformationJobObject($/;" f +QueryMemoryResourceNotification vendor/winapi/src/um/memoryapi.rs /^ pub fn QueryMemoryResourceNotification($/;" f +QueryPerformanceCounter vendor/winapi/src/um/profileapi.rs /^ pub fn QueryPerformanceCounter($/;" f +QueryPerformanceFrequency vendor/winapi/src/um/profileapi.rs /^ pub fn QueryPerformanceFrequency($/;" f +QueryProcessAffinityUpdateMode vendor/winapi/src/um/processthreadsapi.rs /^ pub fn QueryProcessAffinityUpdateMode($/;" f +QueryProcessCycleTime vendor/winapi/src/um/realtimeapiset.rs /^ pub fn QueryProcessCycleTime($/;" f +QueryProtectedPolicy vendor/winapi/src/um/processthreadsapi.rs /^ pub fn QueryProtectedPolicy($/;" f +QueryRecoveryAgentsOnEncryptedFile vendor/winapi/src/um/winefs.rs /^ pub fn QueryRecoveryAgentsOnEncryptedFile($/;" f +QuerySecurityAccessMask vendor/winapi/src/um/securitybaseapi.rs /^ pub fn QuerySecurityAccessMask($/;" f +QuerySecurityContextToken vendor/winapi/src/shared/sspi.rs /^ pub fn QuerySecurityContextToken($/;" f +QuerySecurityPackageInfoA vendor/winapi/src/shared/sspi.rs /^ pub fn QuerySecurityPackageInfoA($/;" f +QuerySecurityPackageInfoW vendor/winapi/src/shared/sspi.rs /^ pub fn QuerySecurityPackageInfoW($/;" f +QueryServiceConfig2A vendor/winapi/src/um/winsvc.rs /^ pub fn QueryServiceConfig2A($/;" f +QueryServiceConfig2W vendor/winapi/src/um/winsvc.rs /^ pub fn QueryServiceConfig2W($/;" f +QueryServiceConfigA vendor/winapi/src/um/winsvc.rs /^ pub fn QueryServiceConfigA($/;" f +QueryServiceConfigW vendor/winapi/src/um/winsvc.rs /^ pub fn QueryServiceConfigW($/;" f +QueryServiceDynamicInformation vendor/winapi/src/um/winsvc.rs /^ pub fn QueryServiceDynamicInformation($/;" f +QueryServiceLockStatusA vendor/winapi/src/um/winsvc.rs /^ pub fn QueryServiceLockStatusA($/;" f +QueryServiceLockStatusW vendor/winapi/src/um/winsvc.rs /^ pub fn QueryServiceLockStatusW($/;" f +QueryServiceObjectSecurity vendor/winapi/src/um/winsvc.rs /^ pub fn QueryServiceObjectSecurity($/;" f +QueryServiceStatus vendor/winapi/src/um/winsvc.rs /^ pub fn QueryServiceStatus($/;" f +QueryServiceStatusEx vendor/winapi/src/um/winsvc.rs /^ pub fn QueryServiceStatusEx($/;" f +QueryThreadCycleTime vendor/winapi/src/um/realtimeapiset.rs /^ pub fn QueryThreadCycleTime($/;" f +QueryThreadProfiling vendor/winapi/src/um/winbase.rs /^ pub fn QueryThreadProfiling($/;" f +QueryThreadpoolStackInformation vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn QueryThreadpoolStackInformation($/;" f +QueryTraceA vendor/winapi/src/shared/evntrace.rs /^ pub fn QueryTraceA($/;" f +QueryTraceProcessingHandle vendor/winapi/src/shared/evntrace.rs /^ pub fn QueryTraceProcessingHandle($/;" f +QueryTraceW vendor/winapi/src/shared/evntrace.rs /^ pub fn QueryTraceW($/;" f +QueryUmsThreadInformation vendor/winapi/src/um/winbase.rs /^ pub fn QueryUmsThreadInformation($/;" f +QueryUnbiasedInterruptTime vendor/winapi/src/um/realtimeapiset.rs /^ pub fn QueryUnbiasedInterruptTime($/;" f +QueryUsersOnEncryptedFile vendor/winapi/src/um/winefs.rs /^ pub fn QueryUsersOnEncryptedFile($/;" f +QueryWorkingSet vendor/winapi/src/um/psapi.rs /^ pub fn QueryWorkingSet($/;" f +QueryWorkingSetEx vendor/winapi/src/um/psapi.rs /^ pub fn QueryWorkingSetEx($/;" f +Queue vendor/futures-channel/src/mpsc/queue.rs /^impl Drop for Queue {$/;" c +Queue vendor/futures-channel/src/mpsc/queue.rs /^impl Queue {$/;" c +Queue vendor/futures-channel/src/mpsc/queue.rs /^pub(super) struct Queue {$/;" s +Queue vendor/futures-channel/src/mpsc/queue.rs /^unsafe impl Send for Queue {}$/;" c +Queue vendor/futures-channel/src/mpsc/queue.rs /^unsafe impl Sync for Queue {}$/;" c +QueueUserAPC vendor/winapi/src/um/processthreadsapi.rs /^ pub fn QueueUserAPC($/;" f +QueueUserWorkItem vendor/winapi/src/um/threadpoollegacyapiset.rs /^ pub fn QueueUserWorkItem($/;" f +QuotaCmd vendor/nix/src/sys/quota.rs /^impl QuotaCmd {$/;" c +QuotaCmd vendor/nix/src/sys/quota.rs /^struct QuotaCmd(QuotaSubCmd, QuotaType);$/;" s +R vendor/futures-util/src/compat/compat01as03.rs /^ impl AsyncRead01CompatExt for R {}$/;" c module:io +R vendor/futures-util/src/io/mod.rs /^impl AsyncBufReadExt for R {}$/;" c +R vendor/futures-util/src/io/mod.rs /^impl AsyncReadExt for R {}$/;" c +RANGECMP lib/glob/smatch.c /^#define RANGECMP(/;" d file: +RANGE_ELEMENT vendor/winapi/src/um/cfgmgr32.rs /^pub type RANGE_ELEMENT = DWORD_PTR;$/;" t +RANGE_LIST vendor/winapi/src/um/cfgmgr32.rs /^pub type RANGE_LIST = DWORD_PTR;$/;" t +RANLIB Makefile.in /^RANLIB = @RANLIB@$/;" m +RANLIB builtins/Makefile.in /^RANLIB = @RANLIB@$/;" m +RANLIB lib/glob/Makefile.in /^RANLIB = @RANLIB@$/;" m +RANLIB lib/intl/Makefile.in /^RANLIB = @RANLIB@$/;" m +RANLIB lib/malloc/Makefile.in /^RANLIB = @RANLIB@$/;" m +RANLIB lib/readline/Makefile.in /^RANLIB = @RANLIB@$/;" m +RANLIB lib/sh/Makefile.in /^RANLIB = @RANLIB@$/;" m +RANLIB lib/termcap/Makefile.in /^RANLIB = @RANLIB@$/;" m +RANLIB lib/tilde/Makefile.in /^RANLIB = @RANLIB@$/;" m +RBRACE subst.c /^#define RBRACE /;" d file: +RBRACK arrayfunc.c /^# define RBRACK /;" d file: +RBRACK subst.c /^#define RBRACK /;" d file: +RCRYPT_FAILED vendor/winapi/src/um/wincrypt.rs /^pub fn RCRYPT_FAILED(rt: BOOL) -> bool {$/;" f +RCRYPT_SUCCEEDED vendor/winapi/src/um/wincrypt.rs /^pub fn RCRYPT_SUCCEEDED(rt: BOOL) -> bool {$/;" f +READERR lib/readline/readline.h /^#define READERR /;" d +READLINE configure.ac /^ AC_DEFINE(READLINE)$/;" d +READLINE_CALLBACKS lib/readline/rlconf.h /^#define READLINE_CALLBACKS$/;" d +READLINE_DEP Makefile.in /^READLINE_DEP = @READLINE_DEP@$/;" m +READLINE_DEP configure.ac /^AC_SUBST(READLINE_DEP)$/;" s +READLINE_LDFLAGS Makefile.in /^READLINE_LDFLAGS = -L${RL_LIBDIR}$/;" m +READLINE_LIB Makefile.in /^READLINE_LIB = @READLINE_LIB@$/;" m +READLINE_LIB configure.ac /^AC_SUBST(READLINE_LIB)$/;" s +READLINE_LIBRARY Makefile.in /^READLINE_LIBRARY = $(RL_LIBDIR)\/libreadline.a$/;" m +READLINE_LIBRARY lib/readline/bind.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/callback.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/colors.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/compat.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/complete.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/display.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/funmap.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/histexpand.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/histfile.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/history.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/histsearch.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/input.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/isearch.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/keymaps.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/kill.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/macro.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/mbutil.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/misc.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/nls.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/parens.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/parse-colors.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/readline.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/rltty.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/savestring.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/search.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/shell.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/signals.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/terminal.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/text.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/undo.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/util.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/vi_mode.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/xfree.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_LIBRARY lib/readline/xmalloc.c /^#define READLINE_LIBRARY$/;" d file: +READLINE_OBJ Makefile.in /^READLINE_OBJ = $(RL_LIBDIR)\/readline.o $(RL_LIBDIR)\/funmap.o \\$/;" m +READLINE_SOURCE Makefile.in /^READLINE_SOURCE = $(RL_LIBSRC)\/rldefs.h $(RL_LIBSRC)\/rlconf.h \\$/;" m +README.md vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +README.md vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +README.md vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +README.md vendor/cfg-if/.cargo-checksum.json /^{"files":{"Cargo.toml":"5b2a8f6e5256957c029cf3a8912d51438e7faa5891c5c102c312f6d4599c1f00","LICEN/;" s object:files +README.md vendor/chunky-vec/.cargo-checksum.json /^{"files":{"Cargo.toml":"3ab88cdacffa2756abe4460dda1ef403b304e79f814a2ec71b9c9a013dce2bf6","LICEN/;" s object:files +README.md vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +README.md vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +README.md vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +README.md vendor/fluent-langneg/.cargo-checksum.json /^{"files":{"Cargo.toml":"1b11d8d30fe978704012e27981f8d50a3462319594b54ed2e71eaf85284d61eb","READM/;" s object:files +README.md vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +README.md vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +README.md vendor/fluent/.cargo-checksum.json /^{"files":{"Cargo.toml":"90672342000bb7f84bee3d9517ddf6d3f32f8e4b4fd38271c67855112456db05","LICEN/;" s object:files +README.md vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +README.md vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +README.md vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" s object:files +README.md vendor/futures-io/.cargo-checksum.json /^{"files":{"Cargo.toml":"e54d638578924483b00b5b20bbd8bf29b5166de08d8176122a7c07b04ff314fd","LICEN/;" s object:files +README.md vendor/futures-sink/.cargo-checksum.json /^{"files":{"Cargo.toml":"8e37d96331ae8a6db64a6aab22e9924ceeacc4f07595c1ea81ea086c002ebd2f","LICEN/;" s object:files +README.md vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +README.md vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +README.md vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +README.md vendor/intl-memoizer/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f28af47927c54fd8ff3adbfcc4b0e9ea849a3b2a544289dd6be64a7aafb8ca6","LICEN/;" s object:files +README.md vendor/intl_pluralrules/.cargo-checksum.json /^{"files":{"Cargo.toml":"3b7451d96ed662827dd4163d64d96840fee1c4241c2480b8cdd91ef156ad7896","READM/;" s object:files +README.md vendor/lazy_static/.cargo-checksum.json /^{"files":{"Cargo.toml":"05e37a4e63dc4a495998bb5133252a51d671c4e99061a6342089ed6eab43978a","LICEN/;" s object:files +README.md vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +README.md vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +README.md vendor/memoffset/.cargo-checksum.json /^{"files":{"Cargo.toml":"2556143c764ef2315fe44ff0ec43af47ca70b260fd64aa53f57dc42760d7132d","LICEN/;" s object:files +README.md vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +README.md vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +README.md vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +README.md vendor/pin-utils/.cargo-checksum.json /^{"files":{"Cargo.toml":"0f8296bda5b928d57bb84443422f21db3aa35d6873ce651297634d80c183dc6b","LICEN/;" s object:files +README.md vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +README.md vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +README.md vendor/rustc-hash/.cargo-checksum.json /^{"files":{"CODE_OF_CONDUCT.md":"edca092fde496419a9f1ba640048aa0270b62dfea576cd3175f0b53e3c230470/;" s object:files +README.md vendor/self_cell/.cargo-checksum.json /^{"files":{"Cargo.toml":"ab60ad0024cea3e0c60fc4d116adc7fae35d5f85b042d285bba65f22c42407d5","LICEN/;" s object:files +README.md vendor/slab/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"ae4c54789e1055543317a6812ac11644d0586883dee8f790119e4cef244b1b8e","Car/;" s object:files +README.md vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +README.md vendor/stable_deref_trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"5a8352eba01791ecee28b37cfe1324fa48db52e35023b23a4f07ca84267abfd6","LICEN/;" s object:files +README.md vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +README.md vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +README.md vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +README.md vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +README.md vendor/type-map/.cargo-checksum.json /^{"files":{"Cargo.toml":"b9de957b7180f3784f79522b1a108b6c9e9f6bb16a2d089b4d0ca924d92387ae","READM/;" s object:files +README.md vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +README.md vendor/unic-langid/.cargo-checksum.json /^{"files":{"Cargo.toml":"927c0bc2dea454aab20d550b4ab728ee5c3803ac12f95a89f518b8a56633e941","READM/;" s object:files +README.md vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +README.md vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +README.mkd vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +READ_SAMPLE_BUF execute_cmd.c /^#define READ_SAMPLE_BUF(/;" d file: +REAL_DIR_ENTRY include/posixdir.h /^# define REAL_DIR_ENTRY(/;" d +REAL_DIR_ENTRY lib/readline/posixdir.h /^# define REAL_DIR_ENTRY(/;" d +REAP execute_cmd.c /^#define REAP(/;" d file: +RECURSIVE_SIG trap.c /^#define RECURSIVE_SIG(/;" d file: +REDIRECT builtins_rust/command/src/lib.rs /^pub type REDIRECT = redirect;$/;" t +REDIRECT builtins_rust/exec/src/lib.rs /^type REDIRECT = redirect;$/;" t +REDIRECT builtins_rust/kill/src/intercdep.rs /^pub type REDIRECT = redirect;$/;" t +REDIRECT builtins_rust/setattr/src/intercdep.rs /^pub type REDIRECT = redirect;$/;" t +REDIRECT command.h /^} REDIRECT;$/;" t typeref:struct:redirect +REDIRECT r_bash/src/lib.rs /^pub type REDIRECT = redirect;$/;" t +REDIRECT r_glob/src/lib.rs /^pub type REDIRECT = redirect;$/;" t +REDIRECT r_readline/src/lib.rs /^pub type REDIRECT = redirect;$/;" t +REDIRECTEE command.h /^} REDIRECTEE;$/;" t typeref:union:__anon3aaf009a010a +REDIRECTION_ERROR redir.c /^#define REDIRECTION_ERROR(/;" d file: +REDIRECT_BOTH shell.h /^#define REDIRECT_BOTH /;" d +REDIR_VARASSIGN command.h /^#define REDIR_VARASSIGN /;" d +REFCLSID vendor/winapi/src/shared/guiddef.rs /^pub type REFCLSID = *const IID;$/;" t +REFERENCE_TIME vendor/winapi/src/um/dxva2api.rs /^pub type REFERENCE_TIME = LONGLONG;$/;" t +REFERENCE_TIME vendor/winapi/src/um/strmif.rs /^pub type REFERENCE_TIME = LONGLONG;$/;" t +REFFMTID vendor/winapi/src/shared/guiddef.rs /^pub type REFFMTID = *const IID;$/;" t +REFGUID vendor/winapi/src/shared/guiddef.rs /^pub type REFGUID = *const GUID;$/;" t +REFIID vendor/winapi/src/shared/guiddef.rs /^pub type REFIID = *const IID;$/;" t +REFKNOWNFOLDERID vendor/winapi/src/um/shtypes.rs /^pub type REFKNOWNFOLDERID = *const KNOWNFOLDERID;$/;" t +REFPROPERTYKEY vendor/winapi/src/um/propkeydef.rs /^pub type REFPROPERTYKEY = *const PROPERTYKEY;$/;" t +REFPROPVARIANT vendor/winapi/src/um/propidl.rs /^pub type REFPROPVARIANT = *const PROPVARIANT;$/;" t +REFVARIANT vendor/winapi/src/um/oaidl.rs /^pub type REFVARIANT = *const VARIANT;$/;" t +REFWICPixelFormatGUID vendor/winapi/src/um/wincodec.rs /^pub type REFWICPixelFormatGUID = REFGUID;$/;" t +REGDISPOSITION vendor/winapi/src/um/cfgmgr32.rs /^pub type REGDISPOSITION = ULONG;$/;" t +REGHANDLE vendor/winapi/src/shared/evntprov.rs /^pub type REGHANDLE = ULONGLONG;$/;" t +REGION_MATCHING_KEYS vendor/fluent-langneg/src/negotiate/likely_subtags.rs /^static REGION_MATCHING_KEYS: &[&str] = &[$/;" v +REGION_ONLY vendor/unic-langid-impl/src/likelysubtags/tables.rs /^pub static REGION_ONLY: [(u32, (Option, Option, Option)); 227] = [$/;" v +REGSAM vendor/winapi/src/um/winreg.rs /^pub type REGSAM = ACCESS_MASK;$/;" t +REG_TABLE_SIZE lib/malloc/table.h /^#define REG_TABLE_SIZE /;" d +REINSTALL_SIGCHLD_HANDLER jobs.c /^# define REINSTALL_SIGCHLD_HANDLER /;" d file: +REINSTALL_SIGCHLD_HANDLER jobs.c /^# define REINSTALL_SIGCHLD_HANDLER$/;" d file: +REINSTALL_SIGCHLD_HANDLER r_jobs/src/lib.rs /^macro_rules! REINSTALL_SIGCHLD_HANDLER {$/;" M +RELOCATABLE_DLL_EXPORTED lib/intl/relocatable.h /^# define RELOCATABLE_DLL_EXPORTED /;" d +RELOCATABLE_DLL_EXPORTED lib/intl/relocatable.h /^# define RELOCATABLE_DLL_EXPORTED$/;" d +RELPATH general.h /^# define RELPATH(/;" d +RELSTATUS Makefile.in /^RELSTATUS = @RELSTATUS@$/;" m +RELSTATUS configure.ac /^AC_SUBST(RELSTATUS)$/;" s +REPL builtins_rust/fc/src/lib.rs /^pub struct REPL {$/;" s +REPORTSIG nojobs.c /^# define REPORTSIG(/;" d file: +REQUIRES_BUILTIN builtins.h /^#define REQUIRES_BUILTIN /;" d +RESET_MAIL_FILE mailcheck.c /^#define RESET_MAIL_FILE(/;" d file: +RESET_SIGTERM quit.h /^#define RESET_SIGTERM /;" d +RESET_SPECIAL lib/readline/rltty.c /^#define RESET_SPECIAL(/;" d file: +RESIZE_KEYSEQ_BUFFER lib/readline/readline.c /^#define RESIZE_KEYSEQ_BUFFER(/;" d file: +RESIZE_MALLOCED_BUFFER general.h /^#define RESIZE_MALLOCED_BUFFER(/;" d +RESIZE_MALLOCED_BUFFER r_print_cmd/src/lib.rs /^macro_rules! RESIZE_MALLOCED_BUFFER{$/;" M +RESOURCEID vendor/winapi/src/um/cfgmgr32.rs /^pub type RESOURCEID = ULONG;$/;" t +RESOURCE_LIMITS builtins_rust/ulimit/src/lib.rs /^pub struct RESOURCE_LIMITS {$/;" s +RESOURCE_LIMITS_T builtins_rust/ulimit/src/lib.rs /^type RESOURCE_LIMITS_T = RESOURCE_LIMITS;$/;" t +RESTORETOK expr.c /^#define RESTORETOK(/;" d file: +RESTRICTED_REDIRECT command.h /^#define RESTRICTED_REDIRECT /;" d +RESTRICTED_SHELL configure.ac /^AC_DEFINE(RESTRICTED_SHELL)$/;" d +RESTRICTED_SHELL_NAME config-bot.h /^# define RESTRICTED_SHELL_NAME /;" d +RESULT vendor/once_cell/examples/test_synchronization.rs /^static RESULT: OnceCell = OnceCell::new();$/;" v +RES_DES vendor/winapi/src/um/cfgmgr32.rs /^pub type RES_DES = DWORD_PTR;$/;" t +RETCODE vendor/winapi/src/um/sqltypes.rs /^pub type RETCODE = c_short;$/;" t +RETSIGTYPE lib/readline/signals.c /^# define RETSIGTYPE /;" d file: +RETURN lib/readline/chardefs.h /^#define RETURN /;" d +RETURN lib/sh/uconvert.c /^#define RETURN(/;" d file: +RETURN_ENTRY lib/readline/histexpand.c /^#define RETURN_ENTRY(/;" d file: +RETURN_NOT_COMMAND execute_cmd.c /^#define RETURN_NOT_COMMAND(/;" d file: +RETURN_TRAP trap.h /^#define RETURN_TRAP /;" d +RETURN_TYPE vendor/winapi/src/um/cfgmgr32.rs /^pub type RETURN_TYPE = DWORD;$/;" t +REVERSE_LIST builtins_rust/fc/src/lib.rs /^unsafe fn REVERSE_LIST(list: *mut GENERIC_LIST) -> *mut REPL {$/;" f +REVERSE_LIST general.h /^#define REVERSE_LIST(/;" d +RFLAG builtins_rust/bind/src/lib.rs /^macro_rules! RFLAG {$/;" M +RFLAG support/utshellversion.c /^#define RFLAG /;" d file: +RF_DEVFD redir.c /^#define RF_DEVFD /;" d file: +RF_DEVSTDERR redir.c /^#define RF_DEVSTDERR /;" d file: +RF_DEVSTDIN redir.c /^#define RF_DEVSTDIN /;" d file: +RF_DEVSTDOUT redir.c /^#define RF_DEVSTDOUT /;" d file: +RF_DEVTCP redir.c /^#define RF_DEVTCP /;" d file: +RF_DEVUDP redir.c /^#define RF_DEVUDP /;" d file: +RGB vendor/winapi/src/um/wingdi.rs /^pub fn RGB(r: BYTE, g: BYTE, b: BYTE) -> COLORREF {$/;" f +RIGHT lib/sh/snprintf.c /^#define RIGHT /;" d file: +RIGHT_BUCKET lib/malloc/malloc.c /^#define RIGHT_BUCKET(/;" d file: +RIO_BUFFERID vendor/winapi/src/shared/mswsockdef.rs /^pub type RIO_BUFFERID = PVOID;$/;" t +RIO_CQ vendor/winapi/src/shared/mswsockdef.rs /^pub type RIO_CQ = PVOID;$/;" t +RIO_RQ vendor/winapi/src/shared/mswsockdef.rs /^pub type RIO_RQ = PVOID;$/;" t +RLIMIT_FILESIZE builtins_rust/ulimit/src/lib.rs /^macro_rules! RLIMIT_FILESIZE {$/;" M +RLIMIT_MAXUPROC builtins_rust/ulimit/src/lib.rs /^macro_rules! RLIMIT_MAXUPROC {$/;" M +RLIMIT_OPENFILES builtins_rust/ulimit/src/lib.rs /^macro_rules! RLIMIT_OPENFILES {$/;" M +RLIMIT_PIPESIZE builtins_rust/ulimit/src/lib.rs /^macro_rules! RLIMIT_PIPESIZE {$/;" M +RLIMIT_VIRTMEM builtins_rust/ulimit/src/lib.rs /^macro_rules! RLIMIT_VIRTMEM {$/;" M +RLIMTYPE builtins_rust/ulimit/src/lib.rs /^type RLIMTYPE = i64;$/;" t +RLIM_INFINITY builtins_rust/ulimit/src/lib.rs /^macro_rules! RLIM_INFINITY {$/;" M +RLIM_SAVED_CUR builtins_rust/ulimit/src/lib.rs /^macro_rules! RLIM_SAVED_CUR {$/;" M +RLIM_SAVED_MAX builtins_rust/ulimit/src/lib.rs /^macro_rules! RLIM_SAVED_MAX {$/;" M +RL_ABSSRC Makefile.in /^RL_ABSSRC = ${topdir}\/$(RL_LIBDIR)$/;" m +RL_BOOLEAN_VARIABLE_VALUE bashline.c /^#define RL_BOOLEAN_VARIABLE_VALUE(/;" d file: +RL_CHECK_SIGNALS lib/readline/rlprivate.h /^#define RL_CHECK_SIGNALS(/;" d +RL_COMMENT_BEGIN_DEFAULT lib/readline/rlconf.h /^#define RL_COMMENT_BEGIN_DEFAULT /;" d +RL_COMMENT_BEGIN_DEFAULT lib/readline/text.c /^#define RL_COMMENT_BEGIN_DEFAULT /;" d file: +RL_EMACS_MODESTR_DEFAULT lib/readline/rlconf.h /^#define RL_EMACS_MODESTR_DEFAULT /;" d +RL_EMACS_MODESTR_DEFLEN lib/readline/rlconf.h /^#define RL_EMACS_MODESTR_DEFLEN /;" d +RL_IM_DEFAULT lib/readline/rldefs.h /^# define RL_IM_DEFAULT /;" d +RL_IM_INSERT lib/readline/rldefs.h /^# define RL_IM_INSERT /;" d +RL_IM_OVERWRITE lib/readline/rldefs.h /^# define RL_IM_OVERWRITE /;" d +RL_INCLUDE configure.ac /^AC_SUBST(RL_INCLUDE)$/;" s +RL_INCLUDEDIR Makefile.in /^RL_INCLUDEDIR = @RL_INCLUDEDIR@$/;" m +RL_INCLUDEDIR builtins/Makefile.in /^RL_INCLUDEDIR = @RL_INCLUDEDIR@$/;" m +RL_INCLUDEDIR configure.ac /^AC_SUBST(RL_INCLUDEDIR)$/;" s +RL_ISSTATE builtins_rust/complete/src/lib.rs /^unsafe fn RL_ISSTATE(x: c_ulong) -> c_ulong {$/;" f +RL_ISSTATE lib/readline/readline.h /^#define RL_ISSTATE(/;" d +RL_ISSTATE r_jobs/src/lib.rs /^macro_rules! RL_ISSTATE {$/;" M +RL_LIBDIR Makefile.in /^RL_LIBDIR = @RL_LIBDIR@$/;" m +RL_LIBDIR configure.ac /^AC_SUBST(RL_LIBDIR)$/;" s +RL_LIBRARY_VERSION lib/readline/readline.c /^# define RL_LIBRARY_VERSION /;" d file: +RL_LIBSRC Makefile.in /^RL_LIBSRC = $(LIBSRC)\/readline$/;" m +RL_LIBSRC builtins/Makefile.in /^RL_LIBSRC = $(topdir)\/lib\/readline$/;" m +RL_LIB_READLINE_VERSION aclocal.m4 /^AC_DEFUN([RL_LIB_READLINE_VERSION],$/;" m +RL_PROMPT_END_IGNORE lib/readline/readline.h /^#define RL_PROMPT_END_IGNORE /;" d +RL_PROMPT_START_IGNORE lib/readline/readline.h /^#define RL_PROMPT_START_IGNORE /;" d +RL_QF_BACKSLASH lib/readline/rldefs.h /^#define RL_QF_BACKSLASH /;" d +RL_QF_DOUBLE_QUOTE lib/readline/rldefs.h /^#define RL_QF_DOUBLE_QUOTE /;" d +RL_QF_OTHER_QUOTE lib/readline/rldefs.h /^#define RL_QF_OTHER_QUOTE /;" d +RL_QF_SINGLE_QUOTE lib/readline/rldefs.h /^#define RL_QF_SINGLE_QUOTE /;" d +RL_READLINE_VERSION lib/readline/readline.c /^# define RL_READLINE_VERSION /;" d file: +RL_READLINE_VERSION lib/readline/readline.h /^#define RL_READLINE_VERSION /;" d +RL_SEARCH_CSEARCH lib/readline/rlprivate.h /^#define RL_SEARCH_CSEARCH /;" d +RL_SEARCH_ISEARCH lib/readline/rlprivate.h /^#define RL_SEARCH_ISEARCH /;" d +RL_SEARCH_NSEARCH lib/readline/rlprivate.h /^#define RL_SEARCH_NSEARCH /;" d +RL_SETSTATE lib/readline/readline.h /^#define RL_SETSTATE(/;" d +RL_SIGINT_RECEIVED lib/readline/rlprivate.h /^#define RL_SIGINT_RECEIVED(/;" d +RL_SIGWINCH_RECEIVED lib/readline/rlprivate.h /^#define RL_SIGWINCH_RECEIVED(/;" d +RL_SIG_RECEIVED lib/readline/rlprivate.h /^#define RL_SIG_RECEIVED(/;" d +RL_STATE_CALLBACK lib/readline/readline.h /^#define RL_STATE_CALLBACK /;" d +RL_STATE_CHARSEARCH lib/readline/readline.h /^#define RL_STATE_CHARSEARCH /;" d +RL_STATE_COMPLETING builtins_rust/complete/src/lib.rs /^macro_rules! RL_STATE_COMPLETING {$/;" M +RL_STATE_COMPLETING lib/readline/readline.h /^#define RL_STATE_COMPLETING /;" d +RL_STATE_COMPLETING r_jobs/src/lib.rs /^macro_rules! RL_STATE_COMPLETING {$/;" M +RL_STATE_DISPATCHING lib/readline/readline.h /^#define RL_STATE_DISPATCHING /;" d +RL_STATE_DONE lib/readline/readline.h /^#define RL_STATE_DONE /;" d +RL_STATE_INITIALIZED lib/readline/readline.h /^#define RL_STATE_INITIALIZED /;" d +RL_STATE_INITIALIZING lib/readline/readline.h /^#define RL_STATE_INITIALIZING /;" d +RL_STATE_INPUTPENDING lib/readline/readline.h /^#define RL_STATE_INPUTPENDING /;" d +RL_STATE_ISEARCH lib/readline/readline.h /^#define RL_STATE_ISEARCH /;" d +RL_STATE_MACRODEF lib/readline/readline.h /^#define RL_STATE_MACRODEF /;" d +RL_STATE_MACROINPUT lib/readline/readline.h /^#define RL_STATE_MACROINPUT /;" d +RL_STATE_METANEXT lib/readline/readline.h /^#define RL_STATE_METANEXT /;" d +RL_STATE_MOREINPUT lib/readline/readline.h /^#define RL_STATE_MOREINPUT /;" d +RL_STATE_MULTIKEY lib/readline/readline.h /^#define RL_STATE_MULTIKEY /;" d +RL_STATE_NONE lib/readline/readline.h /^#define RL_STATE_NONE /;" d +RL_STATE_NSEARCH lib/readline/readline.h /^#define RL_STATE_NSEARCH /;" d +RL_STATE_NUMERICARG lib/readline/readline.h /^#define RL_STATE_NUMERICARG /;" d +RL_STATE_OVERWRITE lib/readline/readline.h /^#define RL_STATE_OVERWRITE /;" d +RL_STATE_READCMD lib/readline/readline.h /^#define RL_STATE_READCMD /;" d +RL_STATE_REDISPLAYING lib/readline/readline.h /^#define RL_STATE_REDISPLAYING /;" d +RL_STATE_SEARCH lib/readline/readline.h /^#define RL_STATE_SEARCH /;" d +RL_STATE_SIGHANDLER lib/readline/readline.h /^#define RL_STATE_SIGHANDLER /;" d +RL_STATE_TERMPREPPED lib/readline/readline.h /^#define RL_STATE_TERMPREPPED /;" d +RL_STATE_TTYCSAVED lib/readline/readline.h /^#define RL_STATE_TTYCSAVED /;" d +RL_STATE_UNDOING lib/readline/readline.h /^#define RL_STATE_UNDOING /;" d +RL_STATE_VICMDONCE lib/readline/readline.h /^#define RL_STATE_VICMDONCE /;" d +RL_STATE_VIMOTION lib/readline/readline.h /^#define RL_STATE_VIMOTION /;" d +RL_STRLEN lib/readline/rldefs.h /^# define RL_STRLEN(/;" d +RL_UNSETSTATE lib/readline/readline.h /^#define RL_UNSETSTATE(/;" d +RL_VERSION_MAJOR lib/readline/readline.h /^#define RL_VERSION_MAJOR /;" d +RL_VERSION_MINOR lib/readline/readline.h /^#define RL_VERSION_MINOR /;" d +RL_VIMOVENUMARG lib/readline/vi_mode.c /^#define RL_VIMOVENUMARG(/;" d file: +RL_VI_CMD_MODESTR_DEFAULT lib/readline/rlconf.h /^#define RL_VI_CMD_MODESTR_DEFAULT /;" d +RL_VI_CMD_MODESTR_DEFLEN lib/readline/rlconf.h /^#define RL_VI_CMD_MODESTR_DEFLEN /;" d +RL_VI_INS_MODESTR_DEFAULT lib/readline/rlconf.h /^#define RL_VI_INS_MODESTR_DEFAULT /;" d +RL_VI_INS_MODESTR_DEFLEN lib/readline/rlconf.h /^#define RL_VI_INS_MODESTR_DEFLEN /;" d +RM Makefile.in /^RM = rm -f$/;" m +RM builtins/Makefile.in /^RM = rm -f$/;" m +RM lib/glob/Makefile.in /^RM = rm -f$/;" m +RM lib/malloc/Makefile.in /^RM = rm -f$/;" m +RM lib/readline/Makefile.in /^RM = rm -f$/;" m +RM lib/sh/Makefile.in /^RM = rm -f$/;" m +RM lib/termcap/Makefile.in /^RM = rm -f$/;" m +RM lib/tilde/Makefile.in /^RM = rm$/;" m +RM support/Makefile.in /^RM = rm -f$/;" m +ROOTEDPATH general.h /^#define ROOTEDPATH(/;" d +ROTATE builtins_rust/pushd/src/lib.rs /^macro_rules! ROTATE {$/;" M +ROUND lib/sh/snprintf.c /^#define ROUND(/;" d file: +RO_REGISTRATION_COOKIE vendor/winapi/src/winrt/roapi.rs /^pub type RO_REGISTRATION_COOKIE = *mut RO_REGISTRATION_COOKIE__;$/;" t +RO_REGISTRATION_COOKIE__ vendor/winapi/src/winrt/roapi.rs /^pub enum RO_REGISTRATION_COOKIE__ {}$/;" g +RPAR expr.c /^#define RPAR /;" d file: +RPAREN lib/glob/gmisc.c /^#define RPAREN /;" d file: +RPAREN subst.c /^#define RPAREN /;" d file: +RPCOLEDATAREP vendor/winapi/src/um/objidlbase.rs /^pub type RPCOLEDATAREP = ULONG;$/;" t +RPC_AUTHZ_HANDLE vendor/winapi/src/shared/rpcdce.rs /^pub type RPC_AUTHZ_HANDLE = *mut c_void;$/;" t +RPC_AUTH_IDENTITY_HANDLE vendor/winapi/src/shared/rpcdce.rs /^pub type RPC_AUTH_IDENTITY_HANDLE = *mut c_void;$/;" t +RPC_BINDING_HANDLE vendor/winapi/src/shared/rpcdce.rs /^pub type RPC_BINDING_HANDLE = I_RPC_HANDLE;$/;" t +RPC_CSTR vendor/winapi/src/shared/rpcdce.rs /^pub type RPC_CSTR = *mut c_uchar;$/;" t +RPC_CWSTR vendor/winapi/src/shared/rpcdce.rs /^pub type RPC_CWSTR = *const wchar_t;$/;" t +RPC_EP_INQ_HANDLE vendor/winapi/src/shared/rpcdce.rs /^pub type RPC_EP_INQ_HANDLE = *mut I_RPC_HANDLE;$/;" t +RPC_IF_HANDLE vendor/winapi/src/shared/rpcdce.rs /^pub type RPC_IF_HANDLE = *mut c_void;$/;" t +RPC_INTERFACE_GROUP vendor/winapi/src/shared/rpcdce.rs /^pub type RPC_INTERFACE_GROUP = *mut c_void;$/;" t +RPC_MGR_EPV vendor/winapi/src/shared/rpcdce.rs /^pub type RPC_MGR_EPV = c_void;$/;" t +RPC_STATUS vendor/winapi/src/shared/rpc.rs /^pub type RPC_STATUS = c_long;$/;" t +RPC_WSTR vendor/winapi/src/shared/rpcdce.rs /^pub type RPC_WSTR = *mut wchar_t;$/;" t +RP_LONG_LEFT subst.c /^#define RP_LONG_LEFT /;" d file: +RP_LONG_RIGHT subst.c /^#define RP_LONG_RIGHT /;" d file: +RP_SHORT_LEFT subst.c /^#define RP_SHORT_LEFT /;" d file: +RP_SHORT_RIGHT subst.c /^#define RP_SHORT_RIGHT /;" d file: +RP_SPACE execute_cmd.c /^#define RP_SPACE /;" d file: +RP_SPACE_LEN execute_cmd.c /^#define RP_SPACE_LEN /;" d file: +RSH expr.c /^#define RSH /;" d file: +RShoptVars builtins_rust/shopt/src/lib.rs /^pub struct RShoptVars {$/;" s +RTL vendor/unic-langid-impl/src/lib.rs /^ RTL,$/;" e enum:CharacterDirection +RTLD_GLOBAL CWRU/misc/hpux10-dlfcn.h /^#define RTLD_GLOBAL /;" d +RTLD_LAZY CWRU/misc/hpux10-dlfcn.h /^#define RTLD_LAZY /;" d +RTLD_NOW CWRU/misc/hpux10-dlfcn.h /^#define RTLD_NOW /;" d +RTLEN support/signames.c /^# define RTLEN /;" d file: +RTLIM support/signames.c /^# define RTLIM /;" d file: +RTL_BALANCED_NODE_GET_PARENT_POINTER vendor/winapi/src/shared/ntdef.rs /^pub unsafe fn RTL_BALANCED_NODE_GET_PARENT_POINTER($/;" f +RTL_OSVERSIONINFOEXW vendor/winapi/src/um/winnt.rs /^pub type RTL_OSVERSIONINFOEXW = OSVERSIONINFOEXW;$/;" t +RTL_OSVERSIONINFOW vendor/winapi/src/um/winnt.rs /^pub type RTL_OSVERSIONINFOW = OSVERSIONINFOW;$/;" t +RTL_REFERENCE_COUNT vendor/winapi/src/shared/ntdef.rs /^pub type RTL_REFERENCE_COUNT = LONG_PTR;$/;" t +RTL_REFERENCE_COUNT vendor/winapi/src/um/winnt.rs /^pub type RTL_REFERENCE_COUNT = LONG_PTR;$/;" t +RTL_REFERENCE_COUNT32 vendor/winapi/src/um/winnt.rs /^pub type RTL_REFERENCE_COUNT32 = LONG;$/;" t +RTL_RESOURCE_DEBUG vendor/winapi/src/um/winnt.rs /^pub type RTL_RESOURCE_DEBUG = RTL_CRITICAL_SECTION_DEBUG;$/;" t +RTL_STRING_LENGTH_TYPE vendor/winapi/src/shared/ntdef.rs /^pub type RTL_STRING_LENGTH_TYPE = USHORT;$/;" t +RTP_ID vendor/libc/src/vxworks/mod.rs /^pub type RTP_ID = ::OBJ_HANDLE;$/;" t +RUBOUT lib/readline/chardefs.h /^#define RUBOUT /;" d +RUN vendor/once_cell/src/imp_std.rs /^ static mut RUN: bool = false;$/;" v function:tests::stampede_once +RUNNING builtins_rust/exit/src/lib.rs /^macro_rules! RUNNING {$/;" M +RUNNING jobs.h /^#define RUNNING(/;" d +RUNNING r_jobs/src/lib.rs /^macro_rules! RUNNING {$/;" M +RUST_BUILTINS_DIRS Makefile.in /^RUST_BUILTINS_DIRS = $(RUST_DIR)\/alias $(RUST_DIR)\/bind $(RUST_DIR)\/break_1 $(RUST_DIR)\/buil/;" m +RUST_DIR Makefile.in /^RUST_DIR = $(top_builddir)\/builtins_rust$/;" m +RX_ACTIVE redir.h /^#define RX_ACTIVE /;" d +RX_CLEXEC redir.h /^#define RX_CLEXEC /;" d +RX_INTERNAL redir.h /^#define RX_INTERNAL /;" d +RX_SAVCLEXEC redir.h /^#define RX_SAVCLEXEC /;" d +RX_SAVEFD redir.h /^#define RX_SAVEFD /;" d +RX_UNDOABLE redir.h /^#define RX_UNDOABLE /;" d +RX_USER redir.h /^#define RX_USER /;" d +R_OK lib/sh/eaccess.c /^#define R_OK /;" d file: +R_OK test.c /^#define R_OK /;" d file: +RaiseException vendor/winapi/src/um/errhandlingapi.rs /^ pub fn RaiseException($/;" f +RaiseFailFastException vendor/winapi/src/um/errhandlingapi.rs /^ pub fn RaiseFailFastException($/;" f +Range vendor/syn/src/expr.rs /^ Range,$/;" e enum:parsing::Precedence +RangeLimits vendor/syn/src/expr.rs /^ impl Parse for RangeLimits {$/;" c module:parsing +RangeLimits vendor/syn/src/expr.rs /^ impl ToTokens for RangeLimits {$/;" c module:printing +RangeLimits vendor/syn/src/gen/clone.rs /^impl Clone for RangeLimits {$/;" c +RangeLimits vendor/syn/src/gen/clone.rs /^impl Copy for RangeLimits {}$/;" c +RangeLimits vendor/syn/src/gen/debug.rs /^impl Debug for RangeLimits {$/;" c +RangeLimits vendor/syn/src/gen/eq.rs /^impl Eq for RangeLimits {}$/;" c +RangeLimits vendor/syn/src/gen/eq.rs /^impl PartialEq for RangeLimits {$/;" c +RangeLimits vendor/syn/src/gen/hash.rs /^impl Hash for RangeLimits {$/;" c +RangeSyntax vendor/syn/tests/common/eq.rs /^impl SpanlessEq for RangeSyntax {$/;" c +RareNeedleBytes vendor/memchr/src/memmem/rarebytes.rs /^impl RareNeedleBytes {$/;" c +RareNeedleBytes vendor/memchr/src/memmem/rarebytes.rs /^pub(crate) struct RareNeedleBytes {$/;" s +Raw vendor/nix/src/sys/socket/addr.rs /^ struct Raw([u8; 20]);$/;" s function:tests::link::linux_loopback +Raw vendor/nix/src/sys/socket/mod.rs /^ Raw = libc::SOCK_RAW,$/;" e enum:SockType +Rc vendor/futures-task/src/spawn.rs /^ impl LocalSpawn for Rc {$/;" c module:if_alloc +Rc vendor/futures-task/src/spawn.rs /^ impl Spawn for Rc {$/;" c module:if_alloc +Rc vendor/quote/src/to_tokens.rs /^impl ToTokens for Rc {$/;" c +Rc vendor/stable_deref_trait/src/lib.rs /^unsafe impl CloneStableDeref for Rc {}$/;" c +Rc vendor/stable_deref_trait/src/lib.rs /^unsafe impl StableDeref for Rc {}$/;" c +RcVec vendor/proc-macro2/src/rcvec.rs /^impl Clone for RcVec {$/;" c +RcVec vendor/proc-macro2/src/rcvec.rs /^impl RcVec {$/;" c +RcVec vendor/proc-macro2/src/rcvec.rs /^pub(crate) struct RcVec {$/;" s +RcVecBuilder vendor/proc-macro2/src/rcvec.rs /^impl IntoIterator for RcVecBuilder {$/;" c +RcVecBuilder vendor/proc-macro2/src/rcvec.rs /^impl RcVecBuilder {$/;" c +RcVecBuilder vendor/proc-macro2/src/rcvec.rs /^pub(crate) struct RcVecBuilder {$/;" s +RcVecIntoIter vendor/proc-macro2/src/rcvec.rs /^impl Iterator for RcVecIntoIter {$/;" c +RcVecIntoIter vendor/proc-macro2/src/rcvec.rs /^pub(crate) struct RcVecIntoIter {$/;" s +RcVecMut vendor/proc-macro2/src/rcvec.rs /^impl<'a, T> RcVecMut<'a, T> {$/;" c +RcVecMut vendor/proc-macro2/src/rcvec.rs /^pub(crate) struct RcVecMut<'a, T> {$/;" s +Rdm vendor/nix/src/sys/socket/mod.rs /^ Rdm = libc::SOCK_RDM,$/;" e enum:SockType +Rds vendor/nix/src/sys/socket/addr.rs /^ Rds = libc::AF_RDS,$/;" e enum:AddressFamily +ReOpenFile vendor/winapi/src/um/winbase.rs /^ pub fn ReOpenFile($/;" f +Read vendor/futures-util/src/io/read.rs /^impl<'a, R: AsyncRead + ?Sized + Unpin> Read<'a, R> {$/;" c +Read vendor/futures-util/src/io/read.rs /^impl Unpin for Read<'_, R> {}$/;" c +Read vendor/futures-util/src/io/read.rs /^impl Future for Read<'_, R> {$/;" c +Read vendor/futures-util/src/io/read.rs /^pub struct Read<'a, R: ?Sized> {$/;" s +Read vendor/nix/src/sys/socket/mod.rs /^ Read,$/;" e enum:Shutdown +Read vendor/thiserror/tests/test_path.rs /^ Read(PathBuf),$/;" e enum:EnumPathBuf +ReadCmd builtins_rust/exec_cmd/src/lib.rs /^ ReadCmd,$/;" e enum:CMDType +ReadComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for ReadComand {$/;" c +ReadComand builtins_rust/exec_cmd/src/lib.rs /^struct ReadComand;$/;" s +ReadConsoleA vendor/winapi/src/um/consoleapi.rs /^ pub fn ReadConsoleA($/;" f +ReadConsoleInputA vendor/winapi/src/um/consoleapi.rs /^ pub fn ReadConsoleInputA($/;" f +ReadConsoleInputW vendor/winapi/src/um/consoleapi.rs /^ pub fn ReadConsoleInputW($/;" f +ReadConsoleOutputA vendor/winapi/src/um/wincon.rs /^ pub fn ReadConsoleOutputA($/;" f +ReadConsoleOutputAttribute vendor/winapi/src/um/wincon.rs /^ pub fn ReadConsoleOutputAttribute($/;" f +ReadConsoleOutputCharacterA vendor/winapi/src/um/wincon.rs /^ pub fn ReadConsoleOutputCharacterA($/;" f +ReadConsoleOutputCharacterW vendor/winapi/src/um/wincon.rs /^ pub fn ReadConsoleOutputCharacterW($/;" f +ReadConsoleOutputW vendor/winapi/src/um/wincon.rs /^ pub fn ReadConsoleOutputW($/;" f +ReadConsoleW vendor/winapi/src/um/consoleapi.rs /^ pub fn ReadConsoleW($/;" f +ReadDirectoryChangesW vendor/winapi/src/um/winbase.rs /^ pub fn ReadDirectoryChangesW($/;" f +ReadExact vendor/futures-util/src/io/read_exact.rs /^impl<'a, R: AsyncRead + ?Sized + Unpin> ReadExact<'a, R> {$/;" c +ReadExact vendor/futures-util/src/io/read_exact.rs /^impl Unpin for ReadExact<'_, R> {}$/;" c +ReadExact vendor/futures-util/src/io/read_exact.rs /^impl Future for ReadExact<'_, R> {$/;" c +ReadExact vendor/futures-util/src/io/read_exact.rs /^pub struct ReadExact<'a, R: ?Sized> {$/;" s +ReadFile vendor/winapi/src/um/fileapi.rs /^ pub fn ReadFile($/;" f +ReadFileEx vendor/winapi/src/um/fileapi.rs /^ pub fn ReadFileEx($/;" f +ReadFileScatter vendor/winapi/src/um/fileapi.rs /^ pub fn ReadFileScatter($/;" f +ReadGlobalPwrPolicy vendor/winapi/src/um/powrprof.rs /^ pub fn ReadGlobalPwrPolicy($/;" f +ReadHalf vendor/futures-util/src/io/split.rs /^impl AsyncRead for ReadHalf {$/;" c +ReadHalf vendor/futures-util/src/io/split.rs /^impl ReadHalf {$/;" c +ReadHalf vendor/futures-util/src/io/split.rs /^pub struct ReadHalf {$/;" s +ReadLine vendor/futures-util/src/io/read_line.rs /^impl<'a, R: AsyncBufRead + ?Sized + Unpin> ReadLine<'a, R> {$/;" c +ReadLine vendor/futures-util/src/io/read_line.rs /^impl Unpin for ReadLine<'_, R> {}$/;" c +ReadLine vendor/futures-util/src/io/read_line.rs /^impl Future for ReadLine<'_, R> {$/;" c +ReadLine vendor/futures-util/src/io/read_line.rs /^pub struct ReadLine<'a, R: ?Sized> {$/;" s +ReadPrinter vendor/winapi/src/um/winspool.rs /^ pub fn ReadPrinter($/;" f +ReadProcessMemory vendor/winapi/src/um/memoryapi.rs /^ pub fn ReadProcessMemory($/;" f +ReadProcessorPwrScheme vendor/winapi/src/um/powrprof.rs /^ pub fn ReadProcessorPwrScheme($/;" f +ReadPwrScheme vendor/winapi/src/um/powrprof.rs /^ pub fn ReadPwrScheme($/;" f +ReadState vendor/futures-util/src/stream/try_stream/into_async_read.rs /^enum ReadState> {$/;" g +ReadThreadProfilingData vendor/winapi/src/um/winbase.rs /^ pub fn ReadThreadProfilingData($/;" f +ReadToEnd vendor/futures-util/src/io/read_to_end.rs /^impl<'a, R: AsyncRead + ?Sized + Unpin> ReadToEnd<'a, R> {$/;" c +ReadToEnd vendor/futures-util/src/io/read_to_end.rs /^impl Future for ReadToEnd<'_, A>$/;" c +ReadToEnd vendor/futures-util/src/io/read_to_end.rs /^impl Unpin for ReadToEnd<'_, R> {}$/;" c +ReadToEnd vendor/futures-util/src/io/read_to_end.rs /^pub struct ReadToEnd<'a, R: ?Sized> {$/;" s +ReadToString vendor/futures-util/src/io/read_to_string.rs /^impl<'a, R: AsyncRead + ?Sized + Unpin> ReadToString<'a, R> {$/;" c +ReadToString vendor/futures-util/src/io/read_to_string.rs /^impl Future for ReadToString<'_, A>$/;" c +ReadToString vendor/futures-util/src/io/read_to_string.rs /^impl Unpin for ReadToString<'_, R> {}$/;" c +ReadToString vendor/futures-util/src/io/read_to_string.rs /^pub struct ReadToString<'a, R: ?Sized> {$/;" s +ReadUntil vendor/futures-util/src/io/read_until.rs /^impl<'a, R: AsyncBufRead + ?Sized + Unpin> ReadUntil<'a, R> {$/;" c +ReadUntil vendor/futures-util/src/io/read_until.rs /^impl Unpin for ReadUntil<'_, R> {}$/;" c +ReadUntil vendor/futures-util/src/io/read_until.rs /^impl Future for ReadUntil<'_, R> {$/;" c +ReadUntil vendor/futures-util/src/io/read_until.rs /^pub struct ReadUntil<'a, R: ?Sized> {$/;" s +ReadUrlCacheEntryStream vendor/winapi/src/um/wininet.rs /^ pub fn ReadUrlCacheEntryStream($/;" f +ReadUrlCacheEntryStreamEx vendor/winapi/src/um/wininet.rs /^ pub fn ReadUrlCacheEntryStreamEx($/;" f +ReadVectored vendor/futures-util/src/io/read_vectored.rs /^impl<'a, R: AsyncRead + ?Sized + Unpin> ReadVectored<'a, R> {$/;" c +ReadVectored vendor/futures-util/src/io/read_vectored.rs /^impl Unpin for ReadVectored<'_, R> {}$/;" c +ReadVectored vendor/futures-util/src/io/read_vectored.rs /^impl Future for ReadVectored<'_, R> {$/;" c +ReadVectored vendor/futures-util/src/io/read_vectored.rs /^pub struct ReadVectored<'a, R: ?Sized> {$/;" s +ReadonlyCmd builtins_rust/exec_cmd/src/lib.rs /^ ReadonlyCmd,$/;" e enum:CMDType +ReadonlyComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for ReadonlyComand {$/;" c +ReadonlyComand builtins_rust/exec_cmd/src/lib.rs /^struct ReadonlyComand;$/;" s +Ready vendor/futures-util/src/future/ready.rs /^impl FusedFuture for Ready {$/;" c +Ready vendor/futures-util/src/future/ready.rs /^impl Future for Ready {$/;" c +Ready vendor/futures-util/src/future/ready.rs /^impl Ready {$/;" c +Ready vendor/futures-util/src/future/ready.rs /^impl Unpin for Ready {}$/;" c +Ready vendor/futures-util/src/future/ready.rs /^pub struct Ready(Option);$/;" s +Ready vendor/futures-util/src/stream/try_stream/into_async_read.rs /^ Ready { chunk: T, chunk_start: usize },$/;" e enum:ReadState +ReadyChunks vendor/futures-util/src/stream/stream/ready_chunks.rs /^impl Sink for ReadyChunks$/;" c +ReadyChunks vendor/futures-util/src/stream/stream/ready_chunks.rs /^impl FusedStream for ReadyChunks {$/;" c +ReadyChunks vendor/futures-util/src/stream/stream/ready_chunks.rs /^impl ReadyChunks$/;" c +ReadyChunks vendor/futures-util/src/stream/stream/ready_chunks.rs /^impl Stream for ReadyChunks {$/;" c +ReadyToRunQueue vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^impl Drop for ReadyToRunQueue {$/;" c +ReadyToRunQueue vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^impl ReadyToRunQueue {$/;" c +ReadyToRunQueue vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^pub(super) struct ReadyToRunQueue {$/;" s +RealChildWindowFromPoint vendor/winapi/src/um/winuser.rs /^ pub fn RealChildWindowFromPoint($/;" f +RealGetWindowClassA vendor/winapi/src/um/winuser.rs /^ pub fn RealGetWindowClassA($/;" f +RealGetWindowClassW vendor/winapi/src/um/winuser.rs /^ pub fn RealGetWindowClassW($/;" f +RealizePalette vendor/winapi/src/um/wingdi.rs /^ pub fn RealizePalette($/;" f +Receiver vendor/futures-channel/src/mpsc/mod.rs /^impl Drop for Receiver {$/;" c +Receiver vendor/futures-channel/src/mpsc/mod.rs /^impl FusedStream for Receiver {$/;" c +Receiver vendor/futures-channel/src/mpsc/mod.rs /^impl Receiver {$/;" c +Receiver vendor/futures-channel/src/mpsc/mod.rs /^impl Stream for Receiver {$/;" c +Receiver vendor/futures-channel/src/mpsc/mod.rs /^impl Unpin for Receiver {}$/;" c +Receiver vendor/futures-channel/src/mpsc/mod.rs /^pub struct Receiver {$/;" s +Receiver vendor/futures-channel/src/oneshot.rs /^impl fmt::Debug for Receiver {$/;" c +Receiver vendor/futures-channel/src/oneshot.rs /^impl Drop for Receiver {$/;" c +Receiver vendor/futures-channel/src/oneshot.rs /^impl FusedFuture for Receiver {$/;" c +Receiver vendor/futures-channel/src/oneshot.rs /^impl Future for Receiver {$/;" c +Receiver vendor/futures-channel/src/oneshot.rs /^impl Receiver {$/;" c +Receiver vendor/futures-channel/src/oneshot.rs /^impl Unpin for Receiver {}$/;" c +Receiver vendor/futures-channel/src/oneshot.rs /^pub struct Receiver {$/;" s +Receiver vendor/futures-channel/tests/mpsc.rs /^impl AssertSend for mpsc::Receiver {}$/;" c +Receiver vendor/syn/src/gen/clone.rs /^impl Clone for Receiver {$/;" c +Receiver vendor/syn/src/gen/debug.rs /^impl Debug for Receiver {$/;" c +Receiver vendor/syn/src/gen/eq.rs /^impl Eq for Receiver {}$/;" c +Receiver vendor/syn/src/gen/eq.rs /^impl PartialEq for Receiver {$/;" c +Receiver vendor/syn/src/gen/hash.rs /^impl Hash for Receiver {$/;" c +Receiver vendor/syn/src/item.rs /^ impl Parse for Receiver {$/;" c module:parsing +Receiver vendor/syn/src/item.rs /^ impl ToTokens for Receiver {$/;" c module:printing +Receiver vendor/syn/src/item.rs /^impl Receiver {$/;" c +ReclaimVirtualMemory vendor/winapi/src/um/memoryapi.rs /^ pub fn ReclaimVirtualMemory($/;" f +RectInRegion vendor/winapi/src/um/wingdi.rs /^ pub fn RectInRegion($/;" f +RectVisible vendor/winapi/src/um/wingdi.rs /^ pub fn RectVisible($/;" f +Rectangle vendor/winapi/src/um/wingdi.rs /^ pub fn Rectangle($/;" f +RedrawWindow vendor/winapi/src/um/winuser.rs /^ pub fn RedrawWindow($/;" f +Ref vendor/stable_deref_trait/src/lib.rs /^unsafe impl<'a, T: ?Sized> StableDeref for Ref<'a, T> {}$/;" c +RefCell vendor/fluent-fallback/src/pin_cell/mod.rs /^impl From> for RefCell {$/;" c +RefMut vendor/stable_deref_trait/src/lib.rs /^unsafe impl<'a, T: ?Sized> StableDeref for RefMut<'a, T> {}$/;" c +Reference vendor/fluent-bundle/src/resolver/errors.rs /^ Reference(ReferenceKind),$/;" e enum:ResolverError +ReferenceKind vendor/fluent-bundle/src/resolver/errors.rs /^impl From<&InlineExpression> for ReferenceKind$/;" c +ReferenceKind vendor/fluent-bundle/src/resolver/errors.rs /^pub enum ReferenceKind {$/;" g +RefreshPolicy vendor/winapi/src/um/userenv.rs /^ pub fn RefreshPolicy($/;" f +RefreshPolicyEx vendor/winapi/src/um/userenv.rs /^ pub fn RefreshPolicyEx($/;" f +RegCloseKey vendor/winapi/src/um/winreg.rs /^ pub fn RegCloseKey($/;" f +RegConnectRegistryA vendor/winapi/src/um/winreg.rs /^ pub fn RegConnectRegistryA($/;" f +RegConnectRegistryExA vendor/winapi/src/um/winreg.rs /^ pub fn RegConnectRegistryExA($/;" f +RegConnectRegistryExW vendor/winapi/src/um/winreg.rs /^ pub fn RegConnectRegistryExW($/;" f +RegConnectRegistryW vendor/winapi/src/um/winreg.rs /^ pub fn RegConnectRegistryW($/;" f +RegCopyTreeA vendor/winapi/src/um/winreg.rs /^ pub fn RegCopyTreeA($/;" f +RegCopyTreeW vendor/winapi/src/um/winreg.rs /^ pub fn RegCopyTreeW($/;" f +RegCreateKeyA vendor/winapi/src/um/winreg.rs /^ pub fn RegCreateKeyA($/;" f +RegCreateKeyExA vendor/winapi/src/um/winreg.rs /^ pub fn RegCreateKeyExA($/;" f +RegCreateKeyExW vendor/winapi/src/um/winreg.rs /^ pub fn RegCreateKeyExW($/;" f +RegCreateKeyTransactedA vendor/winapi/src/um/winreg.rs /^ pub fn RegCreateKeyTransactedA($/;" f +RegCreateKeyTransactedW vendor/winapi/src/um/winreg.rs /^ pub fn RegCreateKeyTransactedW($/;" f +RegCreateKeyW vendor/winapi/src/um/winreg.rs /^ pub fn RegCreateKeyW($/;" f +RegDeleteKeyA vendor/winapi/src/um/winreg.rs /^ pub fn RegDeleteKeyA($/;" f +RegDeleteKeyExA vendor/winapi/src/um/winreg.rs /^ pub fn RegDeleteKeyExA($/;" f +RegDeleteKeyExW vendor/winapi/src/um/winreg.rs /^ pub fn RegDeleteKeyExW($/;" f +RegDeleteKeyTransactedA vendor/winapi/src/um/winreg.rs /^ pub fn RegDeleteKeyTransactedA($/;" f +RegDeleteKeyTransactedW vendor/winapi/src/um/winreg.rs /^ pub fn RegDeleteKeyTransactedW($/;" f +RegDeleteKeyValueA vendor/winapi/src/um/winreg.rs /^ pub fn RegDeleteKeyValueA($/;" f +RegDeleteKeyValueW vendor/winapi/src/um/winreg.rs /^ pub fn RegDeleteKeyValueW($/;" f +RegDeleteKeyW vendor/winapi/src/um/winreg.rs /^ pub fn RegDeleteKeyW($/;" f +RegDeleteTreeA vendor/winapi/src/um/winreg.rs /^ pub fn RegDeleteTreeA($/;" f +RegDeleteTreeW vendor/winapi/src/um/winreg.rs /^ pub fn RegDeleteTreeW($/;" f +RegDeleteValueA vendor/winapi/src/um/winreg.rs /^ pub fn RegDeleteValueA($/;" f +RegDeleteValueW vendor/winapi/src/um/winreg.rs /^ pub fn RegDeleteValueW($/;" f +RegDisablePredefinedCache vendor/winapi/src/um/winreg.rs /^ pub fn RegDisablePredefinedCache() -> LSTATUS;$/;" f +RegDisablePredefinedCacheEx vendor/winapi/src/um/winreg.rs /^ pub fn RegDisablePredefinedCacheEx() -> LSTATUS;$/;" f +RegDisableReflectionKey vendor/winapi/src/um/winreg.rs /^ pub fn RegDisableReflectionKey($/;" f +RegEnableReflectionKey vendor/winapi/src/um/winreg.rs /^ pub fn RegEnableReflectionKey($/;" f +RegEnumKeyA vendor/winapi/src/um/winreg.rs /^ pub fn RegEnumKeyA($/;" f +RegEnumKeyExA vendor/winapi/src/um/winreg.rs /^ pub fn RegEnumKeyExA($/;" f +RegEnumKeyExW vendor/winapi/src/um/winreg.rs /^ pub fn RegEnumKeyExW($/;" f +RegEnumKeyW vendor/winapi/src/um/winreg.rs /^ pub fn RegEnumKeyW($/;" f +RegEnumValueA vendor/winapi/src/um/winreg.rs /^ pub fn RegEnumValueA($/;" f +RegEnumValueW vendor/winapi/src/um/winreg.rs /^ pub fn RegEnumValueW($/;" f +RegFlushKey vendor/winapi/src/um/winreg.rs /^ pub fn RegFlushKey($/;" f +RegGetKeySecurity vendor/winapi/src/um/winreg.rs /^ pub fn RegGetKeySecurity($/;" f +RegGetValueA vendor/winapi/src/um/winreg.rs /^ pub fn RegGetValueA($/;" f +RegGetValueW vendor/winapi/src/um/winreg.rs /^ pub fn RegGetValueW($/;" f +RegLoadAppKeyA vendor/winapi/src/um/winreg.rs /^ pub fn RegLoadAppKeyA($/;" f +RegLoadAppKeyW vendor/winapi/src/um/winreg.rs /^ pub fn RegLoadAppKeyW($/;" f +RegLoadKeyA vendor/winapi/src/um/winreg.rs /^ pub fn RegLoadKeyA($/;" f +RegLoadKeyW vendor/winapi/src/um/winreg.rs /^ pub fn RegLoadKeyW($/;" f +RegLoadMUIStringA vendor/winapi/src/um/winreg.rs /^ pub fn RegLoadMUIStringA($/;" f +RegLoadMUIStringW vendor/winapi/src/um/winreg.rs /^ pub fn RegLoadMUIStringW($/;" f +RegNotifyChangeKeyValue vendor/winapi/src/um/winreg.rs /^ pub fn RegNotifyChangeKeyValue($/;" f +RegOpenCurrentUser vendor/winapi/src/um/winreg.rs /^ pub fn RegOpenCurrentUser($/;" f +RegOpenKeyA vendor/winapi/src/um/winreg.rs /^ pub fn RegOpenKeyA($/;" f +RegOpenKeyExA vendor/winapi/src/um/winreg.rs /^ pub fn RegOpenKeyExA($/;" f +RegOpenKeyExW vendor/winapi/src/um/winreg.rs /^ pub fn RegOpenKeyExW($/;" f +RegOpenKeyTransactedA vendor/winapi/src/um/winreg.rs /^ pub fn RegOpenKeyTransactedA($/;" f +RegOpenKeyTransactedW vendor/winapi/src/um/winreg.rs /^ pub fn RegOpenKeyTransactedW($/;" f +RegOpenKeyW vendor/winapi/src/um/winreg.rs /^ pub fn RegOpenKeyW($/;" f +RegOpenUserClassesRoot vendor/winapi/src/um/winreg.rs /^ pub fn RegOpenUserClassesRoot($/;" f +RegOverridePredefKey vendor/winapi/src/um/winreg.rs /^ pub fn RegOverridePredefKey($/;" f +RegQueryInfoKeyA vendor/winapi/src/um/winreg.rs /^ pub fn RegQueryInfoKeyA($/;" f +RegQueryInfoKeyW vendor/winapi/src/um/winreg.rs /^ pub fn RegQueryInfoKeyW($/;" f +RegQueryMultipleValuesA vendor/winapi/src/um/winreg.rs /^ pub fn RegQueryMultipleValuesA($/;" f +RegQueryMultipleValuesW vendor/winapi/src/um/winreg.rs /^ pub fn RegQueryMultipleValuesW($/;" f +RegQueryReflectionKey vendor/winapi/src/um/winreg.rs /^ pub fn RegQueryReflectionKey($/;" f +RegQueryValueA vendor/winapi/src/um/winreg.rs /^ pub fn RegQueryValueA($/;" f +RegQueryValueExA vendor/winapi/src/um/winreg.rs /^ pub fn RegQueryValueExA($/;" f +RegQueryValueExW vendor/winapi/src/um/winreg.rs /^ pub fn RegQueryValueExW($/;" f +RegQueryValueW vendor/winapi/src/um/winreg.rs /^ pub fn RegQueryValueW($/;" f +RegRenameKey vendor/winapi/src/um/winreg.rs /^ pub fn RegRenameKey($/;" f +RegReplaceKeyA vendor/winapi/src/um/winreg.rs /^ pub fn RegReplaceKeyA($/;" f +RegReplaceKeyW vendor/winapi/src/um/winreg.rs /^ pub fn RegReplaceKeyW($/;" f +RegRestoreKeyA vendor/winapi/src/um/winreg.rs /^ pub fn RegRestoreKeyA($/;" f +RegRestoreKeyW vendor/winapi/src/um/winreg.rs /^ pub fn RegRestoreKeyW($/;" f +RegSaveKeyA vendor/winapi/src/um/winreg.rs /^ pub fn RegSaveKeyA($/;" f +RegSaveKeyExA vendor/winapi/src/um/winreg.rs /^ pub fn RegSaveKeyExA($/;" f +RegSaveKeyExW vendor/winapi/src/um/winreg.rs /^ pub fn RegSaveKeyExW($/;" f +RegSaveKeyW vendor/winapi/src/um/winreg.rs /^ pub fn RegSaveKeyW($/;" f +RegSetKeySecurity vendor/winapi/src/um/winreg.rs /^ pub fn RegSetKeySecurity($/;" f +RegSetKeyValueA vendor/winapi/src/um/winreg.rs /^ pub fn RegSetKeyValueA($/;" f +RegSetKeyValueW vendor/winapi/src/um/winreg.rs /^ pub fn RegSetKeyValueW($/;" f +RegSetValueA vendor/winapi/src/um/winreg.rs /^ pub fn RegSetValueA($/;" f +RegSetValueExA vendor/winapi/src/um/winreg.rs /^ pub fn RegSetValueExA($/;" f +RegSetValueExW vendor/winapi/src/um/winreg.rs /^ pub fn RegSetValueExW($/;" f +RegSetValueW vendor/winapi/src/um/winreg.rs /^ pub fn RegSetValueW($/;" f +RegUnLoadKeyA vendor/winapi/src/um/winreg.rs /^ pub fn RegUnLoadKeyA($/;" f +RegUnLoadKeyW vendor/winapi/src/um/winreg.rs /^ pub fn RegUnLoadKeyW($/;" f +Region vendor/unic-langid-impl/src/subtags/region.rs /^impl FromStr for Region {$/;" c +Region vendor/unic-langid-impl/src/subtags/region.rs /^impl PartialEq<&str> for Region {$/;" c +Region vendor/unic-langid-impl/src/subtags/region.rs /^impl Region {$/;" c +Region vendor/unic-langid-impl/src/subtags/region.rs /^impl std::fmt::Display for Region {$/;" c +Region vendor/unic-langid-impl/src/subtags/region.rs /^pub struct Region(TinyStr4);$/;" s +RegisterApplicationRecoveryCallback vendor/winapi/src/um/winbase.rs /^ pub fn RegisterApplicationRecoveryCallback($/;" f +RegisterApplicationRestart vendor/winapi/src/um/winbase.rs /^ pub fn RegisterApplicationRestart($/;" f +RegisterBadMemoryNotification vendor/winapi/src/um/memoryapi.rs /^ pub fn RegisterBadMemoryNotification($/;" f +RegisterClassA vendor/winapi/src/um/winuser.rs /^ pub fn RegisterClassA($/;" f +RegisterClassExA vendor/winapi/src/um/winuser.rs /^ pub fn RegisterClassExA($/;" f +RegisterClassExW vendor/winapi/src/um/winuser.rs /^ pub fn RegisterClassExW($/;" f +RegisterClassW vendor/winapi/src/um/winuser.rs /^ pub fn RegisterClassW($/;" f +RegisterClipboardFormatA vendor/winapi/src/um/winuser.rs /^ pub fn RegisterClipboardFormatA($/;" f +RegisterClipboardFormatW vendor/winapi/src/um/winuser.rs /^ pub fn RegisterClipboardFormatW($/;" f +RegisterDeviceNotificationA vendor/winapi/src/um/winuser.rs /^ pub fn RegisterDeviceNotificationA($/;" f +RegisterDeviceNotificationW vendor/winapi/src/um/winuser.rs /^ pub fn RegisterDeviceNotificationW($/;" f +RegisterDragDrop vendor/winapi/src/um/ole2.rs /^ pub fn RegisterDragDrop($/;" f +RegisterEventSourceA vendor/winapi/src/um/winbase.rs /^ pub fn RegisterEventSourceA($/;" f +RegisterEventSourceW vendor/winapi/src/um/winbase.rs /^ pub fn RegisterEventSourceW($/;" f +RegisterGPNotification vendor/winapi/src/um/userenv.rs /^ pub fn RegisterGPNotification($/;" f +RegisterHotKey vendor/winapi/src/um/winuser.rs /^ pub fn RegisterHotKey($/;" f +RegisterPointerInputTarget vendor/winapi/src/um/winuser.rs /^ pub fn RegisterPointerInputTarget($/;" f +RegisterPointerInputTargetEx vendor/winapi/src/um/winuser.rs /^ pub fn RegisterPointerInputTargetEx($/;" f +RegisterPowerSettingNotification vendor/winapi/src/um/winuser.rs /^ pub fn RegisterPowerSettingNotification($/;" f +RegisterRawInputDevices vendor/winapi/src/um/winuser.rs /^ pub fn RegisterRawInputDevices($/;" f +RegisterServiceCtrlHandlerA vendor/winapi/src/um/winsvc.rs /^ pub fn RegisterServiceCtrlHandlerA($/;" f +RegisterServiceCtrlHandlerExA vendor/winapi/src/um/winsvc.rs /^ pub fn RegisterServiceCtrlHandlerExA($/;" f +RegisterServiceCtrlHandlerExW vendor/winapi/src/um/winsvc.rs /^ pub fn RegisterServiceCtrlHandlerExW($/;" f +RegisterServiceCtrlHandlerW vendor/winapi/src/um/winsvc.rs /^ pub fn RegisterServiceCtrlHandlerW($/;" f +RegisterShellHookWindow vendor/winapi/src/um/winuser.rs /^ pub fn RegisterShellHookWindow($/;" f +RegisterSuspendResumeNotification vendor/winapi/src/um/winuser.rs /^ pub fn RegisterSuspendResumeNotification($/;" f +RegisterTouchHitTestingWindow vendor/winapi/src/um/winuser.rs /^ pub fn RegisterTouchHitTestingWindow($/;" f +RegisterTouchWindow vendor/winapi/src/um/winuser.rs /^ pub fn RegisterTouchWindow($/;" f +RegisterTraceGuidsA vendor/winapi/src/shared/evntrace.rs /^ pub fn RegisterTraceGuidsA($/;" f +RegisterTraceGuidsW vendor/winapi/src/shared/evntrace.rs /^ pub fn RegisterTraceGuidsW($/;" f +RegisterWaitChainCOMCallback vendor/winapi/src/um/wct.rs /^ pub fn RegisterWaitChainCOMCallback($/;" f +RegisterWaitForSingleObject vendor/winapi/src/um/winbase.rs /^ pub fn RegisterWaitForSingleObject($/;" f +RegisterWindowMessageA vendor/winapi/src/um/winuser.rs /^ pub fn RegisterWindowMessageA($/;" f +RegisterWindowMessageW vendor/winapi/src/um/winuser.rs /^ pub fn RegisterWindowMessageW($/;" f +Regular vendor/fluent-syntax/src/parser/comment.rs /^ Regular = 1,$/;" e enum:Level +Reject vendor/proc-macro2/src/parse.rs /^pub(crate) struct Reject;$/;" s +Related crates vendor/once_cell/README.md /^# Related crates$/;" c +Related projects vendor/self_cell/README.md /^### Related projects$/;" S section:`self_cell!`""Running the tests +Release Notes vendor/autocfg/README.md /^## Release Notes$/;" s chapter:autocfg +ReleaseActCtx vendor/winapi/src/um/winbase.rs /^ pub fn ReleaseActCtx($/;" f +ReleaseCapture vendor/winapi/src/um/winuser.rs /^ pub fn ReleaseCapture() -> BOOL;$/;" f +ReleaseDC vendor/winapi/src/um/winuser.rs /^ pub fn ReleaseDC($/;" f +ReleaseMutex vendor/winapi/src/um/synchapi.rs /^ pub fn ReleaseMutex($/;" f +ReleaseMutexWhenCallbackReturns vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn ReleaseMutexWhenCallbackReturns($/;" f +ReleaseSRWLockExclusive vendor/winapi/src/um/synchapi.rs /^ pub fn ReleaseSRWLockExclusive($/;" f +ReleaseSRWLockShared vendor/winapi/src/um/synchapi.rs /^ pub fn ReleaseSRWLockShared($/;" f +ReleaseSemaphore vendor/winapi/src/um/synchapi.rs /^ pub fn ReleaseSemaphore($/;" f +ReleaseSemaphoreWhenCallbackReturns vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn ReleaseSemaphoreWhenCallbackReturns($/;" f +Releasing your change to crates.io vendor/libc/CONTRIBUTING.md /^## Releasing your change to crates.io$/;" s chapter:Contributing to `libc` +Remote vendor/futures-util/src/future/future/remote_handle.rs /^impl fmt::Debug for Remote {$/;" c +Remote vendor/futures-util/src/future/future/remote_handle.rs /^impl Future for Remote {$/;" c +RemoteHandle vendor/futures-util/src/future/future/remote_handle.rs /^impl Future for RemoteHandle {$/;" c +RemoteHandle vendor/futures-util/src/future/future/remote_handle.rs /^impl RemoteHandle {$/;" c +RemoteHandle vendor/futures-util/src/future/future/remote_handle.rs /^pub struct RemoteHandle {$/;" s +RemoteIoVec vendor/nix/src/sys/uio.rs /^pub struct RemoteIoVec {$/;" s +RemoveClipboardFormatListener vendor/winapi/src/um/winuser.rs /^ pub fn RemoveClipboardFormatListener($/;" f +RemoveDirectoryA vendor/winapi/src/um/fileapi.rs /^ pub fn RemoveDirectoryA($/;" f +RemoveDirectoryTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn RemoveDirectoryTransactedA($/;" f +RemoveDirectoryTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn RemoveDirectoryTransactedW($/;" f +RemoveDirectoryW vendor/winapi/src/um/fileapi.rs /^ pub fn RemoveDirectoryW($/;" f +RemoveDllDirectory vendor/winapi/src/um/libloaderapi.rs /^ pub fn RemoveDllDirectory($/;" f +RemoveFontMemResourceEx vendor/winapi/src/um/wingdi.rs /^ pub fn RemoveFontMemResourceEx($/;" f +RemoveFontResourceA vendor/winapi/src/um/wingdi.rs /^ pub fn RemoveFontResourceA($/;" f +RemoveFontResourceExA vendor/winapi/src/um/wingdi.rs /^ pub fn RemoveFontResourceExA($/;" f +RemoveFontResourceExW vendor/winapi/src/um/wingdi.rs /^ pub fn RemoveFontResourceExW($/;" f +RemoveFontResourceW vendor/winapi/src/um/wingdi.rs /^ pub fn RemoveFontResourceW($/;" f +RemoveMenu vendor/winapi/src/um/winuser.rs /^ pub fn RemoveMenu($/;" f +RemovePropA vendor/winapi/src/um/winuser.rs /^ pub fn RemovePropA($/;" f +RemovePropW vendor/winapi/src/um/winuser.rs /^ pub fn RemovePropW($/;" f +RemoveSecureMemoryCacheCallback vendor/winapi/src/um/winbase.rs /^ pub fn RemoveSecureMemoryCacheCallback($/;" f +RemoveTraceCallback vendor/winapi/src/shared/evntrace.rs /^ pub fn RemoveTraceCallback($/;" f +RemoveUsersFromEncryptedFile vendor/winapi/src/um/winefs.rs /^ pub fn RemoveUsersFromEncryptedFile($/;" f +RemoveVectoredContinueHandler vendor/winapi/src/um/errhandlingapi.rs /^ pub fn RemoveVectoredContinueHandler($/;" f +RemoveVectoredExceptionHandler vendor/winapi/src/um/errhandlingapi.rs /^ pub fn RemoveVectoredExceptionHandler($/;" f +RemoveWindowSubclass vendor/winapi/src/um/commctrl.rs /^ pub fn RemoveWindowSubclass($/;" f +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.10.0] 2018-01-26 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.11.0] 2018-06-01 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.12.0] 2018-11-28 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.13.0] - 2019-01-15 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.14.0] - 2019-05-21 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.14.1] - 2019-06-06 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.15.0] - 10 August 2019 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.16.0] - 1 December 2019 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.16.1] - 23 December 2019 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.17.0] - 3 February 2020 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.18.0] - 26 July 2020 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.19.0] - 6 October 2020 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.20.0] - 20 February 2021 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.21.0] - 31 May 2021 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.22.0] - 9 July 2021 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.23.0] - 2021-09-28 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.24.0] - 2022-04-21 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.25.0] - 2022-08-13 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.7.0] 2016-09-09 +Removed vendor/nix/CHANGELOG.md /^### Removed$/;" S section:Change Log""[0.9.0] 2017-07-23 +RepAsIteratorExt vendor/quote/src/runtime.rs /^ pub trait RepAsIteratorExt<'q> {$/;" i module:ext +RepInterp vendor/quote/src/runtime.rs /^ impl<'q, T: RepAsIteratorExt<'q>> RepAsIteratorExt<'q> for RepInterp {$/;" c module:ext +RepInterp vendor/quote/src/runtime.rs /^impl Iterator for RepInterp {$/;" c +RepInterp vendor/quote/src/runtime.rs /^impl ToTokens for RepInterp {$/;" c +RepInterp vendor/quote/src/runtime.rs /^impl RepInterp {$/;" c +RepInterp vendor/quote/src/runtime.rs /^pub struct RepInterp(pub T);$/;" s +RepIteratorExt vendor/quote/src/runtime.rs /^ pub trait RepIteratorExt: Iterator + Sized {$/;" i module:ext +RepToTokensExt vendor/quote/src/runtime.rs /^ pub trait RepToTokensExt {$/;" i module:ext +Repeat vendor/futures-util/src/io/repeat.rs /^impl AsyncRead for Repeat {$/;" c +Repeat vendor/futures-util/src/io/repeat.rs /^impl fmt::Debug for Repeat {$/;" c +Repeat vendor/futures-util/src/io/repeat.rs /^pub struct Repeat {$/;" s +Repeat vendor/futures-util/src/stream/repeat.rs /^impl FusedStream for Repeat$/;" c +Repeat vendor/futures-util/src/stream/repeat.rs /^impl Stream for Repeat$/;" c +Repeat vendor/futures-util/src/stream/repeat.rs /^impl Unpin for Repeat {}$/;" c +Repeat vendor/futures-util/src/stream/repeat.rs /^pub struct Repeat {$/;" s +RepeatWith vendor/futures-util/src/stream/repeat_with.rs /^impl A> FusedStream for RepeatWith {$/;" c +RepeatWith vendor/futures-util/src/stream/repeat_with.rs /^impl A> Stream for RepeatWith {$/;" c +RepeatWith vendor/futures-util/src/stream/repeat_with.rs /^impl A> Unpin for RepeatWith {}$/;" c +RepeatWith vendor/futures-util/src/stream/repeat_with.rs /^pub struct RepeatWith {$/;" s +Repetition vendor/quote/README.md /^## Repetition$/;" s chapter:Rust Quasi-Quoting +ReplaceFileA vendor/winapi/src/um/winbase.rs /^ pub fn ReplaceFileA($/;" f +ReplaceFileW vendor/winapi/src/um/winbase.rs /^ pub fn ReplaceFileW($/;" f +ReplacePartitionUnit vendor/winapi/src/um/winbase.rs /^ pub fn ReplacePartitionUnit($/;" f +ReplaceSelf vendor/async-trait/src/receiver.rs /^impl ReplaceSelf {$/;" c +ReplaceSelf vendor/async-trait/src/receiver.rs /^impl VisitMut for ReplaceSelf {$/;" c +ReplaceSelf vendor/async-trait/src/receiver.rs /^pub struct ReplaceSelf(pub Span);$/;" s +ReplaceTextA vendor/winapi/src/um/commdlg.rs /^ pub fn ReplaceTextA($/;" f +ReplaceTextW vendor/winapi/src/um/commdlg.rs /^ pub fn ReplaceTextW($/;" f +ReplyMessage vendor/winapi/src/um/winuser.rs /^ pub fn ReplyMessage($/;" f +ReportEventA vendor/winapi/src/um/winbase.rs /^ pub fn ReportEventA($/;" f +ReportEventW vendor/winapi/src/um/winbase.rs /^ pub fn ReportEventW($/;" f +RequestDeviceWakeup vendor/winapi/src/um/winbase.rs /^ pub fn RequestDeviceWakeup($/;" f +RequestType vendor/nix/src/sys/ptrace/bsd.rs /^pub type RequestType = c_int;$/;" t +RequestWakeupLatency vendor/winapi/src/um/winbase.rs /^ pub fn RequestWakeupLatency($/;" f +Requesting the functionality vendor/stdext/CONTRIBUTING.md /^## Requesting the functionality$/;" s chapter:Contributing guide +Required vendor/fluent-fallback/src/types.rs /^ Required,$/;" e enum:ResourceType +RerunIfChanged target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" o object:local.0 +RerunIfChanged target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" o object:local.0 +RerunIfChanged target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" o object:local.0 +RerunIfChanged target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" o object:local.0 +RerunIfChanged target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" o object:local.0 +RerunIfChanged target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" o object:local.0 +RerunIfChanged target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" o object:local.0 +RerunIfChanged target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" o object:local.0 +Reserved vendor/syn/src/reserved.rs /^impl Clone for Reserved {$/;" c +Reserved vendor/syn/src/reserved.rs /^impl Debug for Reserved {$/;" c +Reserved vendor/syn/src/reserved.rs /^impl Default for Reserved {$/;" c +ReservedCmd builtins_rust/exec_cmd/src/lib.rs /^ ReservedCmd,$/;" e enum:CMDType +ReservedComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for ReservedComand {$/;" c +ReservedComand builtins_rust/exec_cmd/src/lib.rs /^struct ReservedComand;$/;" s +Reset vendor/futures-util/src/future/future/shared.rs /^ impl Drop for Reset<'_> {$/;" c function:poll +Reset vendor/futures-util/src/future/future/shared.rs /^ struct Reset<'a> {$/;" s function:poll +ResetDCA vendor/winapi/src/um/wingdi.rs /^ pub fn ResetDCA($/;" f +ResetDCW vendor/winapi/src/um/wingdi.rs /^ pub fn ResetDCW($/;" f +ResetEvent vendor/winapi/src/um/synchapi.rs /^ pub fn ResetEvent($/;" f +ResetPrinterA vendor/winapi/src/um/winspool.rs /^ pub fn ResetPrinterA($/;" f +ResetPrinterW vendor/winapi/src/um/winspool.rs /^ pub fn ResetPrinterW($/;" f +ResetWriteWatch vendor/winapi/src/um/memoryapi.rs /^ pub fn ResetWriteWatch($/;" f +ResizePalette vendor/winapi/src/um/wingdi.rs /^ pub fn ResizePalette($/;" f +ResizePseudoConsole vendor/winapi/src/um/consoleapi.rs /^ pub fn ResizePseudoConsole($/;" f +ResolveIpNetEntry2 vendor/winapi/src/shared/netioapi.rs /^ pub fn ResolveIpNetEntry2($/;" f +ResolveLocaleName vendor/winapi/src/um/winnls.rs /^ pub fn ResolveLocaleName($/;" f +ResolveNeighbor vendor/winapi/src/um/iphlpapi.rs /^ pub fn ResolveNeighbor($/;" f +ResolveValue vendor/fluent-bundle/src/resolver/mod.rs /^pub(crate) trait ResolveValue {$/;" i +Resolver vendor/fluent-fallback/src/errors.rs /^ Resolver {$/;" e enum:LocalizationError +ResolverError vendor/fluent-bundle/src/errors.rs /^ ResolverError(ResolverError),$/;" e enum:FluentError +ResolverError vendor/fluent-bundle/src/resolver/errors.rs /^impl Error for ResolverError {}$/;" c +ResolverError vendor/fluent-bundle/src/resolver/errors.rs /^impl std::fmt::Display for ResolverError {$/;" c +ResolverError vendor/fluent-bundle/src/resolver/errors.rs /^impl From<&InlineExpression> for ResolverError$/;" c +ResolverError vendor/fluent-bundle/src/resolver/errors.rs /^pub enum ResolverError {$/;" g +Resource vendor/fluent-bundle/src/resource.rs /^type Resource<'s> = ast::Resource<&'s str>;$/;" t +Resource vendor/fluent-fallback/examples/simple-fallback.rs /^ type Resource = FluentResource;$/;" t implementation:Bundles +Resource vendor/fluent-fallback/src/generator.rs /^ type Resource: Borrow;$/;" t interface:BundleGenerator +Resource vendor/fluent-fallback/tests/localization_test.rs /^ type Resource = FluentResource;$/;" t implementation:ResourceManager +Resource vendor/fluent-resmgr/src/resource_manager.rs /^ type Resource = FluentResource;$/;" t implementation:ResourceManager +Resource vendor/fluent-syntax/src/ast/mod.rs /^pub struct Resource {$/;" s +Resource vendor/fluent-syntax/src/parser/comment.rs /^ Resource = 3,$/;" e enum:Level +ResourceComment vendor/fluent-syntax/src/ast/mod.rs /^ ResourceComment(Comment),$/;" e enum:Entry +ResourceId vendor/fluent-fallback/src/types.rs /^impl Eq for ResourceId {}$/;" c +ResourceId vendor/fluent-fallback/src/types.rs /^impl PartialEq for ResourceId {$/;" c +ResourceId vendor/fluent-fallback/src/types.rs /^impl PartialEq for ResourceId {$/;" c +ResourceId vendor/fluent-fallback/src/types.rs /^impl ResourceId {$/;" c +ResourceId vendor/fluent-fallback/src/types.rs /^impl std::fmt::Display for ResourceId {$/;" c +ResourceId vendor/fluent-fallback/src/types.rs /^impl> From for ResourceId {$/;" c +ResourceId vendor/fluent-fallback/src/types.rs /^pub struct ResourceId {$/;" s +ResourceManager vendor/elsa/examples/fluentresource.rs /^impl<'mgr> ResourceManager<'mgr> {$/;" c +ResourceManager vendor/elsa/examples/fluentresource.rs /^pub struct ResourceManager<'mgr> {$/;" s +ResourceManager vendor/fluent-fallback/tests/localization_test.rs /^impl BundleGenerator for ResourceManager {$/;" c +ResourceManager vendor/fluent-fallback/tests/localization_test.rs /^struct ResourceManager;$/;" s +ResourceManager vendor/fluent-resmgr/src/resource_manager.rs /^impl BundleGenerator for ResourceManager {$/;" c +ResourceManager vendor/fluent-resmgr/src/resource_manager.rs /^impl ResourceManager {$/;" c +ResourceManager vendor/fluent-resmgr/src/resource_manager.rs /^pub struct ResourceManager {$/;" s +ResourceType vendor/fluent-fallback/src/types.rs /^pub enum ResourceType {$/;" g +Resources vendor/syn/README.md /^## Resources$/;" s chapter:Parser for Rust source code +RestoreDC vendor/winapi/src/um/wingdi.rs /^ pub fn RestoreDC($/;" f +RestoreLastError vendor/winapi/src/um/winbase.rs /^ pub fn RestoreLastError($/;" f +RestoreMediaSense vendor/winapi/src/um/iphlpapi.rs /^ pub fn RestoreMediaSense($/;" f +RestoreMonitorFactoryColorDefaults vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn RestoreMonitorFactoryColorDefaults($/;" f +RestoreMonitorFactoryDefaults vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn RestoreMonitorFactoryDefaults($/;" f +Result vendor/fluent-syntax/src/parser/core.rs /^pub type Result = std::result::Result;$/;" t +Result vendor/fluent-syntax/src/parser/mod.rs /^pub type Result = std::result::Result, (ast::Resource, Vec)>/;" t +Result vendor/nix/src/lib.rs /^pub type Result = result::Result;$/;" t +Result vendor/stdext/src/result.rs /^impl ResultExt for Result {$/;" c +Result vendor/syn/src/error.rs /^pub type Result = std::result::Result;$/;" t +ResultExt vendor/stdext/src/result.rs /^pub trait ResultExt {$/;" i +ResumeSuspendedDownload vendor/winapi/src/um/wininet.rs /^ pub fn ResumeSuspendedDownload($/;" f +ResumeThread vendor/winapi/src/um/processthreadsapi.rs /^ pub fn ResumeThread($/;" f +Ret vendor/async-trait/tests/test.rs /^ pub trait Ret {}$/;" i module:issue149 +Ret vendor/syn/src/attr.rs /^ type Ret = iter::Filter, fn(&&Attribute) -> bool>;$/;" t implementation:Attribute +Ret vendor/syn/src/attr.rs /^ type Ret: Iterator;$/;" t interface:FilterAttrs +RetrieveUrlCacheEntryFileA vendor/winapi/src/um/wininet.rs /^ pub fn RetrieveUrlCacheEntryFileA($/;" f +RetrieveUrlCacheEntryFileW vendor/winapi/src/um/wininet.rs /^ pub fn RetrieveUrlCacheEntryFileW($/;" f +RetrieveUrlCacheEntryStreamA vendor/winapi/src/um/wininet.rs /^ pub fn RetrieveUrlCacheEntryStreamA($/;" f +RetrieveUrlCacheEntryStreamW vendor/winapi/src/um/wininet.rs /^ pub fn RetrieveUrlCacheEntryStreamW($/;" f +ReturnCmd builtins_rust/exec_cmd/src/lib.rs /^ ReturnCmd,$/;" e enum:CMDType +ReturnComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for ReturnComand {$/;" c +ReturnComand builtins_rust/exec_cmd/src/lib.rs /^struct ReturnComand;$/;" s +ReturnType vendor/syn/src/gen/clone.rs /^impl Clone for ReturnType {$/;" c +ReturnType vendor/syn/src/gen/debug.rs /^impl Debug for ReturnType {$/;" c +ReturnType vendor/syn/src/gen/eq.rs /^impl Eq for ReturnType {}$/;" c +ReturnType vendor/syn/src/gen/eq.rs /^impl PartialEq for ReturnType {$/;" c +ReturnType vendor/syn/src/gen/hash.rs /^impl Hash for ReturnType {$/;" c +ReturnType vendor/syn/src/ty.rs /^ impl Parse for ReturnType {$/;" c module:parsing +ReturnType vendor/syn/src/ty.rs /^ impl ReturnType {$/;" c module:parsing +ReturnType vendor/syn/src/ty.rs /^ impl ToTokens for ReturnType {$/;" c module:printing +Returning tokens to the compiler vendor/quote/README.md /^## Returning tokens to the compiler$/;" s chapter:Rust Quasi-Quoting +ReuniteError vendor/futures-util/src/io/split.rs /^impl std::error::Error for ReuniteError {}$/;" c +ReuniteError vendor/futures-util/src/io/split.rs /^impl fmt::Debug for ReuniteError {$/;" c +ReuniteError vendor/futures-util/src/io/split.rs /^impl fmt::Display for ReuniteError {$/;" c +ReuniteError vendor/futures-util/src/io/split.rs /^pub struct ReuniteError(pub ReadHalf, pub WriteHalf);$/;" s +ReuniteError vendor/futures-util/src/lock/bilock.rs /^impl std::error::Error for ReuniteError {}$/;" c +ReuniteError vendor/futures-util/src/lock/bilock.rs /^impl fmt::Debug for ReuniteError {$/;" c +ReuniteError vendor/futures-util/src/lock/bilock.rs /^impl fmt::Display for ReuniteError {$/;" c +ReuniteError vendor/futures-util/src/lock/bilock.rs /^pub struct ReuniteError(pub BiLock, pub BiLock);$/;" s +ReuniteError vendor/futures-util/src/stream/stream/split.rs /^impl fmt::Debug for ReuniteError {$/;" c +ReuniteError vendor/futures-util/src/stream/stream/split.rs /^impl fmt::Display for ReuniteError {$/;" c +ReuniteError vendor/futures-util/src/stream/stream/split.rs /^impl std::error::Error for ReuniteError {}$/;" c +ReuniteError vendor/futures-util/src/stream/stream/split.rs /^pub struct ReuniteError(pub SplitSink, pub SplitStream);$/;" s +Reverse vendor/memchr/src/memmem/twoway.rs /^impl Reverse {$/;" c +Reverse vendor/memchr/src/memmem/twoway.rs /^pub(crate) struct Reverse(TwoWay);$/;" s +RevertSecurityContext vendor/winapi/src/shared/sspi.rs /^ pub fn RevertSecurityContext($/;" f +RevertToSelf vendor/winapi/src/um/securitybaseapi.rs /^ pub fn RevertToSelf() -> BOOL;$/;" f +RevokeActiveObject vendor/winapi/src/um/oleauto.rs /^ pub fn RevokeActiveObject($/;" f +RevokeDragDrop vendor/winapi/src/um/ole2.rs /^ pub fn RevokeDragDrop($/;" f +Right vendor/futures-util/src/future/either.rs /^ Right(\/* #[pin] *\/ B),$/;" e enum:Either +Right vendor/futures-util/src/stream/select_with_strategy.rs /^ Right,$/;" e enum:PollNext +RightFinished vendor/futures-util/src/stream/select_with_strategy.rs /^ RightFinished,$/;" e enum:InternalState +RmAddFilter vendor/winapi/src/um/restartmanager.rs /^ pub fn RmAddFilter($/;" f +RmCancelCurrentTask vendor/winapi/src/um/restartmanager.rs /^ pub fn RmCancelCurrentTask($/;" f +RmEndSession vendor/winapi/src/um/restartmanager.rs /^ pub fn RmEndSession($/;" f +RmGetFilterList vendor/winapi/src/um/restartmanager.rs /^ pub fn RmGetFilterList($/;" f +RmGetList vendor/winapi/src/um/restartmanager.rs /^ pub fn RmGetList($/;" f +RmJoinSession vendor/winapi/src/um/restartmanager.rs /^ pub fn RmJoinSession($/;" f +RmRegisterResources vendor/winapi/src/um/restartmanager.rs /^ pub fn RmRegisterResources($/;" f +RmRemoveFilter vendor/winapi/src/um/restartmanager.rs /^ pub fn RmRemoveFilter($/;" f +RmRestart vendor/winapi/src/um/restartmanager.rs /^ pub fn RmRestart($/;" f +RmShutdown vendor/winapi/src/um/restartmanager.rs /^ pub fn RmShutdown($/;" f +RmStartSession vendor/winapi/src/um/restartmanager.rs /^ pub fn RmStartSession($/;" f +RoActivateInstance vendor/winapi/src/winrt/roapi.rs /^ pub fn RoActivateInstance($/;" f +RoCaptureErrorContext vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoCaptureErrorContext($/;" f +RoClearError vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoClearError();$/;" f +RoFailFastWithErrorContext vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoFailFastWithErrorContext($/;" f +RoGetActivationFactory vendor/winapi/src/winrt/roapi.rs /^ pub fn RoGetActivationFactory($/;" f +RoGetAgileReference vendor/winapi/src/um/combaseapi.rs /^ pub fn RoGetAgileReference($/;" f +RoGetApartmentIdentifier vendor/winapi/src/winrt/roapi.rs /^ pub fn RoGetApartmentIdentifier($/;" f +RoGetBufferMarshaler vendor/winapi/src/winrt/robuffer.rs /^ pub fn RoGetBufferMarshaler($/;" f +RoGetErrorReportingFlags vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoGetErrorReportingFlags($/;" f +RoGetMatchingRestrictedErrorInfo vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoGetMatchingRestrictedErrorInfo($/;" f +RoInitialize vendor/winapi/src/winrt/roapi.rs /^ pub fn RoInitialize($/;" f +RoInspectCapturedStackBackTrace vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoInspectCapturedStackBackTrace($/;" f +RoInspectThreadErrorInfo vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoInspectThreadErrorInfo($/;" f +RoOriginateError vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoOriginateError($/;" f +RoOriginateErrorW vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoOriginateErrorW($/;" f +RoOriginateLanguageException vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoOriginateLanguageException($/;" f +RoRegisterActivationFactories vendor/winapi/src/winrt/roapi.rs /^ pub fn RoRegisterActivationFactories($/;" f +RoRegisterForApartmentShutdown vendor/winapi/src/winrt/roapi.rs /^ pub fn RoRegisterForApartmentShutdown($/;" f +RoReportFailedDelegate vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoReportFailedDelegate($/;" f +RoReportUnhandledError vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoReportUnhandledError($/;" f +RoResolveRestrictedErrorInfoReference vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoResolveRestrictedErrorInfoReference($/;" f +RoRevokeActivationFactories vendor/winapi/src/winrt/roapi.rs /^ pub fn RoRevokeActivationFactories($/;" f +RoSetErrorReportingFlags vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoSetErrorReportingFlags($/;" f +RoTransformError vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoTransformError($/;" f +RoTransformErrorW vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn RoTransformErrorW($/;" f +RoUninitialize vendor/winapi/src/winrt/roapi.rs /^ pub fn RoUninitialize();$/;" f +RoUnregisterForApartmentShutdown vendor/winapi/src/winrt/roapi.rs /^ pub fn RoUnregisterForApartmentShutdown($/;" f +RollbackTransaction vendor/winapi/src/um/ktmw32.rs /^ pub fn RollbackTransaction($/;" f +Rose vendor/nix/src/sys/socket/addr.rs /^ Rose = libc::AF_ROSE,$/;" e enum:AddressFamily +RoundRect vendor/winapi/src/um/wingdi.rs /^ pub fn RoundRect($/;" f +RtlAddFunctionTable vendor/winapi/src/um/winnt.rs /^ pub fn RtlAddFunctionTable($/;" f +RtlAddGrowableFunctionTable vendor/winapi/src/um/winnt.rs /^ pub fn RtlAddGrowableFunctionTable($/;" f +RtlCaptureContext vendor/winapi/src/um/winnt.rs /^ pub fn RtlCaptureContext($/;" f +RtlCaptureStackBackTrace vendor/winapi/src/um/winnt.rs /^ pub fn RtlCaptureStackBackTrace($/;" f +RtlCompareMemory vendor/winapi/src/um/winnt.rs /^ pub fn RtlCompareMemory($/;" f +RtlConvertDeviceFamilyInfoToString vendor/winapi/src/um/winnt.rs /^ pub fn RtlConvertDeviceFamilyInfoToString($/;" f +RtlCopyMemory vendor/winapi/src/um/winnt.rs /^pub unsafe fn RtlCopyMemory(Destination: *mut c_void, Source: *const c_void, Length: usize) {$/;" f +RtlCrc32 vendor/winapi/src/um/winnt.rs /^ pub fn RtlCrc32($/;" f +RtlCrc64 vendor/winapi/src/um/winnt.rs /^ pub fn RtlCrc64($/;" f +RtlDeleteFunctionTable vendor/winapi/src/um/winnt.rs /^ pub fn RtlDeleteFunctionTable($/;" f +RtlDeleteGrowableFunctionTable vendor/winapi/src/um/winnt.rs /^ pub fn RtlDeleteGrowableFunctionTable($/;" f +RtlEthernetAddressToStringA vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlEthernetAddressToStringA($/;" f +RtlEthernetAddressToStringW vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlEthernetAddressToStringW($/;" f +RtlEthernetStringToAddressA vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlEthernetStringToAddressA($/;" f +RtlEthernetStringToAddressW vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlEthernetStringToAddressW($/;" f +RtlFillMemory vendor/winapi/src/um/winnt.rs /^pub unsafe fn RtlFillMemory(Destination: *mut c_void, Length: usize, Fill: u8) {$/;" f +RtlFirstEntrySList vendor/winapi/src/um/winnt.rs /^ pub fn RtlFirstEntrySList($/;" f +RtlGetDeviceFamilyInfoEnum vendor/winapi/src/um/winnt.rs /^ pub fn RtlGetDeviceFamilyInfoEnum($/;" f +RtlGetProductInfo vendor/winapi/src/um/winnt.rs /^ pub fn RtlGetProductInfo($/;" f +RtlGrowFunctionTable vendor/winapi/src/um/winnt.rs /^ pub fn RtlGrowFunctionTable($/;" f +RtlInitializeSListHead vendor/winapi/src/um/winnt.rs /^ pub fn RtlInitializeSListHead($/;" f +RtlInstallFunctionTableCallback vendor/winapi/src/um/winnt.rs /^ pub fn RtlInstallFunctionTableCallback($/;" f +RtlInterlockedFlushSList vendor/winapi/src/um/winnt.rs /^ pub fn RtlInterlockedFlushSList($/;" f +RtlInterlockedPopEntrySList vendor/winapi/src/um/winnt.rs /^ pub fn RtlInterlockedPopEntrySList($/;" f +RtlInterlockedPushEntrySList vendor/winapi/src/um/winnt.rs /^ pub fn RtlInterlockedPushEntrySList($/;" f +RtlInterlockedPushListSListEx vendor/winapi/src/um/winnt.rs /^ pub fn RtlInterlockedPushListSListEx($/;" f +RtlIpv4AddressToStringA vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv4AddressToStringA($/;" f +RtlIpv4AddressToStringExA vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv4AddressToStringExA($/;" f +RtlIpv4AddressToStringExW vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv4AddressToStringExW($/;" f +RtlIpv4AddressToStringW vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv4AddressToStringW($/;" f +RtlIpv4StringToAddressA vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv4StringToAddressA($/;" f +RtlIpv4StringToAddressExA vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv4StringToAddressExA($/;" f +RtlIpv4StringToAddressExW vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv4StringToAddressExW($/;" f +RtlIpv4StringToAddressW vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv4StringToAddressW($/;" f +RtlIpv6AddressToStringA vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv6AddressToStringA($/;" f +RtlIpv6AddressToStringExA vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv6AddressToStringExA($/;" f +RtlIpv6AddressToStringExW vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv6AddressToStringExW($/;" f +RtlIpv6AddressToStringW vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv6AddressToStringW($/;" f +RtlIpv6StringToAddressA vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv6StringToAddressA($/;" f +RtlIpv6StringToAddressExA vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv6StringToAddressExA($/;" f +RtlIpv6StringToAddressExW vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv6StringToAddressExW($/;" f +RtlIpv6StringToAddressW vendor/winapi/src/shared/mstcpip.rs /^ pub fn RtlIpv6StringToAddressW($/;" f +RtlLookupFunctionEntry vendor/winapi/src/um/winnt.rs /^ pub fn RtlLookupFunctionEntry($/;" f +RtlMoveMemory vendor/winapi/src/um/winnt.rs /^pub unsafe fn RtlMoveMemory(Destination: *mut c_void, Source: *const c_void, Length: usize) {$/;" f +RtlOsDeploymentState vendor/winapi/src/um/winnt.rs /^ pub fn RtlOsDeploymentState($/;" f +RtlPcToFileHeader vendor/winapi/src/um/winnt.rs /^ pub fn RtlPcToFileHeader($/;" f +RtlQueryDepthSList vendor/winapi/src/um/winnt.rs /^ pub fn RtlQueryDepthSList($/;" f +RtlSwitchedVVI vendor/winapi/src/um/winnt.rs /^ pub fn RtlSwitchedVVI($/;" f +RtlUnwind vendor/winapi/src/um/winnt.rs /^ pub fn RtlUnwind($/;" f +RtlZeroMemory vendor/winapi/src/um/winnt.rs /^pub unsafe fn RtlZeroMemory(Destination: *mut c_void, Length: usize) {$/;" f +Run vendor/futures-executor/src/thread_pool.rs /^ Run(Task),$/;" e enum:Message +Running all examples vendor/elsa/README.md /^### Running all examples$/;" S section:elsa +Running the tests vendor/self_cell/README.md /^## Running the tests$/;" s chapter:`self_cell!` +Rust Quasi-Quoting vendor/quote/README.md /^Rust Quasi-Quoting$/;" c +Rust Version Support vendor/bitflags/README.md /^## Rust Version Support$/;" s chapter:bitflags +Rust bindings to *nix APIs vendor/nix/README.md /^# Rust bindings to *nix APIs$/;" c +Rust version support vendor/libc/README.md /^## Rust version support$/;" s chapter:libc - Raw FFI bindings to platforms' system libraries +RustcVersion vendor/proc-macro2/build.rs /^struct RustcVersion {$/;" s +RustcVersion vendor/quote/build.rs /^struct RustcVersion {$/;" s +RwLock vendor/stdext/src/sync/rw_lock.rs /^impl RwLockExt for RwLock {$/;" c +RwLockExt vendor/stdext/src/sync/rw_lock.rs /^pub trait RwLockExt {$/;" i +RwLockReadGuard vendor/stable_deref_trait/src/lib.rs /^unsafe impl<'a, T: ?Sized> StableDeref for RwLockReadGuard<'a, T> {}$/;" c +RwLockWriteGuard vendor/stable_deref_trait/src/lib.rs /^unsafe impl<'a, T: ?Sized> StableDeref for RwLockWriteGuard<'a, T> {}$/;" c +RxRemoteApi vendor/winapi/src/um/lmremutl.rs /^ pub fn RxRemoteApi($/;" f +RxRpc vendor/nix/src/sys/socket/addr.rs /^ RxRpc = libc::AF_RXRPC,$/;" e enum:AddressFamily +S vendor/async-trait/tests/test.rs /^ impl Issue23 for S {$/;" c module:issue23 +S vendor/async-trait/tests/test.rs /^ struct S {}$/;" s module:issue23 +S vendor/async-trait/tests/ui/self-span.rs /^impl Trait for S {$/;" c +S vendor/async-trait/tests/ui/self-span.rs /^pub struct S {}$/;" s +S vendor/fluent-fallback/src/types.rs /^impl> ToResourceId for S {$/;" c +S vendor/futures-core/src/stream.rs /^ impl Sealed for S where S: ?Sized + Stream> {}$/;" c module:private_try_stream +S vendor/futures-core/src/stream.rs /^impl TryStream for S$/;" c +S vendor/futures-core/src/stream.rs /^impl Stream for &mut S {$/;" c +S vendor/futures-sink/src/lib.rs /^impl + Unpin, Item> Sink for &mut S {$/;" c +S vendor/futures-util/src/io/mod.rs /^impl AsyncSeekExt for S {}$/;" c +S vendor/futures-util/src/stream/try_stream/mod.rs /^impl TryStreamExt for S {}$/;" c +S vendor/futures/tests/future_shared.rs /^ impl Drop for S {$/;" c function:poll_while_panic +S vendor/futures/tests/future_shared.rs /^ struct S;$/;" s function:poll_while_panic +S vendor/libloading/src/test_helpers.rs /^pub struct S {$/;" s +S vendor/libloading/tests/functions.rs /^struct S {$/;" s +SADD_MBCHAR include/shmbutil.h /^# define SADD_MBCHAR(/;" d +SADD_MBCHAR_BODY include/shmbutil.h /^# define SADD_MBCHAR_BODY(/;" d +SADD_MBQCHAR_BODY include/shmbutil.h /^# define SADD_MBQCHAR_BODY(/;" d +SAFER_CODE_PROPERTIES vendor/winapi/src/um/winsafer.rs /^pub type SAFER_CODE_PROPERTIES = SAFER_CODE_PROPERTIES_V2;$/;" t +SAM_HANDLE vendor/winapi/src/um/subauth.rs /^pub type SAM_HANDLE = PVOID;$/;" t +SAVED_VAR unwind_prot.c /^} SAVED_VAR;$/;" t typeref:struct:__anon5806582f0108 file: +SAVETOK expr.c /^#define SAVETOK(/;" d file: +SAVE_EXPORTSTR variables.h /^#define SAVE_EXPORTSTR(/;" d +SAVE_RESTRICTED builtins_rust/shopt/src/lib.rs /^ static mut SAVE_RESTRICTED: i32 = -1;$/;" v function:set_restricted_shell +SA_INTERRUPT sig.c /^# define SA_INTERRUPT /;" d file: +SA_RESTART lib/readline/signals.c /^# define SA_RESTART /;" d file: +SA_RESTART nojobs.c /^# define SA_RESTART /;" d file: +SA_RESTART sig.c /^# define SA_RESTART /;" d file: +SB execute_cmd.c /^struct stat SB; \/* used for debugging *\/$/;" v typeref:struct:stat +SCARDCONTEXT vendor/winapi/src/um/winscard.rs /^pub type SCARDCONTEXT = ULONG_PTR;$/;" t +SCARDHANDLE vendor/winapi/src/um/winscard.rs /^pub type SCARDHANDLE = ULONG_PTR;$/;" t +SCARD_READERSTATE_A vendor/winapi/src/um/winscard.rs /^pub type SCARD_READERSTATE_A = SCARD_READERSTATEA;$/;" t +SCARD_READERSTATE_W vendor/winapi/src/um/winscard.rs /^pub type SCARD_READERSTATE_W = SCARD_READERSTATEW;$/;" t +SCHAR vendor/winapi/src/shared/ntdef.rs /^pub type SCHAR = c_schar;$/;" t +SCHAR vendor/winapi/src/um/sqltypes.rs /^pub type SCHAR = c_schar;$/;" t +SCODE vendor/winapi/src/shared/wtypesbase.rs /^pub type SCODE = LONG;$/;" t +SCODE_CODE vendor/winapi/src/shared/winerror.rs /^pub fn SCODE_CODE(sc: SCODE) -> HRESULT {$/;" f +SCODE_FACILITY vendor/winapi/src/shared/winerror.rs /^pub fn SCODE_FACILITY(sc: SCODE) -> HRESULT {$/;" f +SCODE_SEVERITY vendor/winapi/src/shared/winerror.rs /^pub fn SCODE_SEVERITY(sc: SCODE) -> HRESULT {$/;" f +SCOPE_NAME vendor/winapi/src/shared/iprtrmib.rs /^pub type SCOPE_NAME = *mut SCOPE_NAME_BUFFER;$/;" t +SCOPE_NAME_BUFFER vendor/winapi/src/shared/iprtrmib.rs /^pub type SCOPE_NAME_BUFFER = [SN_CHAR; MAX_SCOPE_NAME_LEN + 1];$/;" t +SCOPY_CHAR_I include/shmbutil.h /^# define SCOPY_CHAR_I(/;" d +SCOPY_CHAR_M include/shmbutil.h /^# define SCOPY_CHAR_M(/;" d +SCRIPT_CONTENTS vendor/nix/test/test_mount.rs /^ static SCRIPT_CONTENTS: &[u8] = b"#!\/bin\/sh$/;" v module:test_mount +SCRIPT_ONLY vendor/unic-langid-impl/src/likelysubtags/tables.rs /^pub static SCRIPT_ONLY: [(u32, (Option, Option, Option)); 154] = [$/;" v +SCRIPT_REGION vendor/unic-langid-impl/src/likelysubtags/tables.rs /^pub static SCRIPT_REGION: [(u32, u32, (Option, Option, Option)); 59] = [$/;" v +SC_LOCK vendor/winapi/src/um/winsvc.rs /^pub type SC_LOCK = LPVOID;$/;" t +SCardAccessStartedEvent vendor/winapi/src/um/winscard.rs /^ pub fn SCardAccessStartedEvent() -> HANDLE;$/;" f +SCardAddReaderToGroupA vendor/winapi/src/um/winscard.rs /^ pub fn SCardAddReaderToGroupA($/;" f +SCardAddReaderToGroupW vendor/winapi/src/um/winscard.rs /^ pub fn SCardAddReaderToGroupW($/;" f +SCardAudit vendor/winapi/src/um/winscard.rs /^ pub fn SCardAudit($/;" f +SCardBeginTransaction vendor/winapi/src/um/winscard.rs /^ pub fn SCardBeginTransaction($/;" f +SCardCancel vendor/winapi/src/um/winscard.rs /^ pub fn SCardCancel($/;" f +SCardConnectA vendor/winapi/src/um/winscard.rs /^ pub fn SCardConnectA($/;" f +SCardConnectW vendor/winapi/src/um/winscard.rs /^ pub fn SCardConnectW($/;" f +SCardControl vendor/winapi/src/um/winscard.rs /^ pub fn SCardControl($/;" f +SCardDisconnect vendor/winapi/src/um/winscard.rs /^ pub fn SCardDisconnect($/;" f +SCardEndTransaction vendor/winapi/src/um/winscard.rs /^ pub fn SCardEndTransaction($/;" f +SCardEstablishContext vendor/winapi/src/um/winscard.rs /^ pub fn SCardEstablishContext($/;" f +SCardForgetCardTypeA vendor/winapi/src/um/winscard.rs /^ pub fn SCardForgetCardTypeA($/;" f +SCardForgetCardTypeW vendor/winapi/src/um/winscard.rs /^ pub fn SCardForgetCardTypeW($/;" f +SCardForgetReaderA vendor/winapi/src/um/winscard.rs /^ pub fn SCardForgetReaderA($/;" f +SCardForgetReaderGroupA vendor/winapi/src/um/winscard.rs /^ pub fn SCardForgetReaderGroupA($/;" f +SCardForgetReaderGroupW vendor/winapi/src/um/winscard.rs /^ pub fn SCardForgetReaderGroupW($/;" f +SCardForgetReaderW vendor/winapi/src/um/winscard.rs /^ pub fn SCardForgetReaderW($/;" f +SCardFreeMemory vendor/winapi/src/um/winscard.rs /^ pub fn SCardFreeMemory($/;" f +SCardGetAttrib vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetAttrib($/;" f +SCardGetCardTypeProviderNameA vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetCardTypeProviderNameA($/;" f +SCardGetCardTypeProviderNameW vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetCardTypeProviderNameW($/;" f +SCardGetDeviceTypeIdA vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetDeviceTypeIdA($/;" f +SCardGetDeviceTypeIdW vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetDeviceTypeIdW($/;" f +SCardGetProviderIdA vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetProviderIdA($/;" f +SCardGetProviderIdW vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetProviderIdW($/;" f +SCardGetReaderDeviceInstanceIdA vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetReaderDeviceInstanceIdA($/;" f +SCardGetReaderDeviceInstanceIdW vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetReaderDeviceInstanceIdW($/;" f +SCardGetReaderIconA vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetReaderIconA($/;" f +SCardGetReaderIconW vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetReaderIconW($/;" f +SCardGetStatusChangeA vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetStatusChangeA($/;" f +SCardGetStatusChangeW vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetStatusChangeW($/;" f +SCardGetTransmitCount vendor/winapi/src/um/winscard.rs /^ pub fn SCardGetTransmitCount($/;" f +SCardIntroduceCardTypeA vendor/winapi/src/um/winscard.rs /^ pub fn SCardIntroduceCardTypeA($/;" f +SCardIntroduceCardTypeW vendor/winapi/src/um/winscard.rs /^ pub fn SCardIntroduceCardTypeW($/;" f +SCardIntroduceReaderA vendor/winapi/src/um/winscard.rs /^ pub fn SCardIntroduceReaderA($/;" f +SCardIntroduceReaderGroupA vendor/winapi/src/um/winscard.rs /^ pub fn SCardIntroduceReaderGroupA($/;" f +SCardIntroduceReaderGroupW vendor/winapi/src/um/winscard.rs /^ pub fn SCardIntroduceReaderGroupW($/;" f +SCardIntroduceReaderW vendor/winapi/src/um/winscard.rs /^ pub fn SCardIntroduceReaderW($/;" f +SCardIsValidContext vendor/winapi/src/um/winscard.rs /^ pub fn SCardIsValidContext($/;" f +SCardListCardsA vendor/winapi/src/um/winscard.rs /^ pub fn SCardListCardsA($/;" f +SCardListCardsW vendor/winapi/src/um/winscard.rs /^ pub fn SCardListCardsW($/;" f +SCardListInterfacesA vendor/winapi/src/um/winscard.rs /^ pub fn SCardListInterfacesA($/;" f +SCardListInterfacesW vendor/winapi/src/um/winscard.rs /^ pub fn SCardListInterfacesW($/;" f +SCardListReaderGroupsA vendor/winapi/src/um/winscard.rs /^ pub fn SCardListReaderGroupsA($/;" f +SCardListReaderGroupsW vendor/winapi/src/um/winscard.rs /^ pub fn SCardListReaderGroupsW($/;" f +SCardListReadersA vendor/winapi/src/um/winscard.rs /^ pub fn SCardListReadersA($/;" f +SCardListReadersW vendor/winapi/src/um/winscard.rs /^ pub fn SCardListReadersW($/;" f +SCardListReadersWithDeviceInstanceIdA vendor/winapi/src/um/winscard.rs /^ pub fn SCardListReadersWithDeviceInstanceIdA($/;" f +SCardListReadersWithDeviceInstanceIdW vendor/winapi/src/um/winscard.rs /^ pub fn SCardListReadersWithDeviceInstanceIdW($/;" f +SCardLocateCardsA vendor/winapi/src/um/winscard.rs /^ pub fn SCardLocateCardsA($/;" f +SCardLocateCardsByATRA vendor/winapi/src/um/winscard.rs /^ pub fn SCardLocateCardsByATRA($/;" f +SCardLocateCardsByATRW vendor/winapi/src/um/winscard.rs /^ pub fn SCardLocateCardsByATRW($/;" f +SCardLocateCardsW vendor/winapi/src/um/winscard.rs /^ pub fn SCardLocateCardsW($/;" f +SCardReadCacheA vendor/winapi/src/um/winscard.rs /^ pub fn SCardReadCacheA($/;" f +SCardReadCacheW vendor/winapi/src/um/winscard.rs /^ pub fn SCardReadCacheW($/;" f +SCardReconnect vendor/winapi/src/um/winscard.rs /^ pub fn SCardReconnect($/;" f +SCardReleaseContext vendor/winapi/src/um/winscard.rs /^ pub fn SCardReleaseContext($/;" f +SCardReleaseStartedEvent vendor/winapi/src/um/winscard.rs /^ pub fn SCardReleaseStartedEvent();$/;" f +SCardRemoveReaderFromGroupA vendor/winapi/src/um/winscard.rs /^ pub fn SCardRemoveReaderFromGroupA($/;" f +SCardRemoveReaderFromGroupW vendor/winapi/src/um/winscard.rs /^ pub fn SCardRemoveReaderFromGroupW($/;" f +SCardSetAttrib vendor/winapi/src/um/winscard.rs /^ pub fn SCardSetAttrib($/;" f +SCardSetCardTypeProviderNameA vendor/winapi/src/um/winscard.rs /^ pub fn SCardSetCardTypeProviderNameA($/;" f +SCardSetCardTypeProviderNameW vendor/winapi/src/um/winscard.rs /^ pub fn SCardSetCardTypeProviderNameW($/;" f +SCardState vendor/winapi/src/um/winscard.rs /^ pub fn SCardState($/;" f +SCardStatusA vendor/winapi/src/um/winscard.rs /^ pub fn SCardStatusA($/;" f +SCardStatusW vendor/winapi/src/um/winscard.rs /^ pub fn SCardStatusW($/;" f +SCardTransmit vendor/winapi/src/um/winscard.rs /^ pub fn SCardTransmit($/;" f +SCardWriteCacheA vendor/winapi/src/um/winscard.rs /^ pub fn SCardWriteCacheA($/;" f +SCardWriteCacheW vendor/winapi/src/um/winscard.rs /^ pub fn SCardWriteCacheW($/;" f +SDIR Makefile.in /^SDIR = $(dot)\/support$/;" m +SDOUBLE vendor/winapi/src/um/sqltypes.rs /^pub type SDOUBLE = c_double;$/;" t +SDP_ERROR vendor/winapi/src/shared/bthsdpdef.rs /^pub type SDP_ERROR = USHORT;$/;" t +SDWORD vendor/winapi/src/um/sqltypes.rs /^pub type SDWORD = c_long;$/;" t +SD_ARITHEXP subst.h /^#define SD_ARITHEXP /;" d +SD_COMPLETE subst.h /^#define SD_COMPLETE /;" d +SD_EXTGLOB subst.h /^#define SD_EXTGLOB /;" d +SD_GLOB subst.h /^#define SD_GLOB /;" d +SD_HISTEXP subst.h /^#define SD_HISTEXP /;" d +SD_ID vendor/libc/src/vxworks/mod.rs /^pub type SD_ID = ::OBJ_HANDLE;$/;" t +SD_IGNOREQUOTE subst.h /^#define SD_IGNOREQUOTE /;" d +SD_INVERT subst.h /^#define SD_INVERT /;" d +SD_NOJMP subst.h /^#define SD_NOJMP /;" d +SD_NOPROCSUB subst.h /^#define SD_NOPROCSUB /;" d +SD_NOQUOTEDELIM subst.h /^#define SD_NOQUOTEDELIM /;" d +SD_NOSKIPCMD subst.h /^#define SD_NOSKIPCMD /;" d +SECOND_IPADDRESS vendor/winapi/src/um/commctrl.rs /^pub fn SECOND_IPADDRESS(x: LPARAM) -> BYTE {$/;" f +SECURITY_CONTEXT_TRACKING_MODE vendor/winapi/src/um/winnt.rs /^pub type SECURITY_CONTEXT_TRACKING_MODE = BOOLEAN;$/;" t +SECURITY_DESCRIPTOR_CONTROL vendor/winapi/src/um/winnt.rs /^pub type SECURITY_DESCRIPTOR_CONTROL = WORD;$/;" t +SECURITY_INFORMATION vendor/winapi/src/um/winnt.rs /^pub type SECURITY_INFORMATION = DWORD;$/;" t +SECURITY_INTEGER vendor/winapi/src/shared/sspi.rs /^pub type SECURITY_INTEGER = LARGE_INTEGER;$/;" t +SECURITY_STATUS vendor/winapi/src/shared/ntdef.rs /^pub type SECURITY_STATUS = c_long;$/;" t +SECURITY_STATUS vendor/winapi/src/shared/sspi.rs /^pub type SECURITY_STATUS = LONG;$/;" t +SECURITY_STATUS vendor/winapi/src/um/ncrypt.rs /^pub type SECURITY_STATUS = LONG;$/;" t +SEC_CHAR vendor/winapi/src/shared/sspi.rs /^pub type SEC_CHAR = CHAR;$/;" t +SEC_WCHAR vendor/winapi/src/shared/sspi.rs /^pub type SEC_WCHAR = WCHAR;$/;" t +SEEK_CUR input.c /^# define SEEK_CUR /;" d file: +SEEK_CUR lib/sh/zread.c /^# define SEEK_CUR /;" d file: +SEGMENTS_END lib/intl/gmo.h /^#define SEGMENTS_END /;" d +SELECT_COM builtins_rust/kill/src/intercdep.rs /^pub type SELECT_COM = select_com;$/;" t +SELECT_COM builtins_rust/setattr/src/intercdep.rs /^pub type SELECT_COM = select_com;$/;" t +SELECT_COM command.h /^} SELECT_COM;$/;" t typeref:struct:select_com +SELECT_COM r_bash/src/lib.rs /^pub type SELECT_COM = select_com;$/;" t +SELECT_COM r_glob/src/lib.rs /^pub type SELECT_COM = select_com;$/;" t +SELECT_COM r_readline/src/lib.rs /^pub type SELECT_COM = select_com;$/;" t +SELECT_COMMAND configure.ac /^AC_DEFINE(SELECT_COMMAND)$/;" d +SEM_ID_KERNEL vendor/libc/src/vxworks/mod.rs /^pub type SEM_ID_KERNEL = ::OBJ_HANDLE;$/;" t +SERVENT vendor/winapi/src/um/winsock2.rs /^pub type SERVENT = servent;$/;" t +SERVICETYPE vendor/winapi/src/shared/qos.rs /^pub type SERVICETYPE = ULONG;$/;" t +SERVICE_CCP_CODE vendor/winapi/src/um/lmsvc.rs /^pub fn SERVICE_CCP_CODE(tt: DWORD, nn: DWORD) -> c_long {$/;" f +SERVICE_IP_CODE vendor/winapi/src/um/lmsvc.rs /^pub fn SERVICE_IP_CODE(tt: DWORD, nn: DWORD) -> c_long {$/;" f +SERVICE_NOTIFYA vendor/winapi/src/um/winsvc.rs /^pub type SERVICE_NOTIFYA = SERVICE_NOTIFY_2A;$/;" t +SERVICE_NOTIFYW vendor/winapi/src/um/winsvc.rs /^pub type SERVICE_NOTIFYW = SERVICE_NOTIFY_2W;$/;" t +SERVICE_NT_CCP_CODE vendor/winapi/src/um/lmsvc.rs /^pub fn SERVICE_NT_CCP_CODE(tt: DWORD, nn: DWORD) -> c_long {$/;" f +SERVICE_NT_WAIT_GET vendor/winapi/src/um/lmsvc.rs /^pub fn SERVICE_NT_WAIT_GET(code: DWORD) -> DWORD {$/;" f +SERVICE_UIC_CODE vendor/winapi/src/um/lmsvc.rs /^pub fn SERVICE_UIC_CODE(cc: DWORD, mm: DWORD) -> c_long {$/;" f +SETATTR lib/readline/rltty.c /^# define SETATTR(/;" d file: +SETATTR lib/readline/rltty.c /^# define SETATTR(/;" d file: +SETINTERRUPT quit.h /^#define SETINTERRUPT /;" d +SETOPT builtins_rust/shopt/src/lib.rs /^static SETOPT: i32 = 1;$/;" v +SETORIGSIG trap.c /^#define SETORIGSIG(/;" d file: +SETOSTYPE execute_cmd.c /^# define SETOSTYPE(/;" d file: +SETVARATTR variables.h /^#define SETVARATTR(/;" d +SET_BINARY_O_OPTION_VALUE builtins_rust/set/src/lib.rs /^macro_rules! SET_BINARY_O_OPTION_VALUE {$/;" M +SET_CLOSE_ON_EXEC include/filecntl.h /^#define SET_CLOSE_ON_EXEC(/;" d +SET_CLOSE_ON_EXEC r_jobs/src/lib.rs /^macro_rules! SET_CLOSE_ON_EXEC {$/;" M +SET_COD_MAJOR vendor/winapi/src/shared/bthdef.rs /^pub fn SET_COD_MAJOR(cod: BTH_COD, major: u8) -> BTH_COD {$/;" f +SET_COD_MINOR vendor/winapi/src/shared/bthdef.rs /^pub fn SET_COD_MINOR(cod: BTH_COD, minor: u8) -> BTH_COD {$/;" f +SET_COD_SERVICE vendor/winapi/src/shared/bthdef.rs /^pub fn SET_COD_SERVICE(cod: BTH_COD, service: u16) -> BTH_COD {$/;" f +SET_EXPORTSTR variables.h /^#define SET_EXPORTSTR(/;" d +SET_INT_VAR variables.c /^#define SET_INT_VAR(/;" d file: +SET_LASTREF array.c /^#define SET_LASTREF(/;" d file: +SET_NAP vendor/winapi/src/shared/bthdef.rs /^pub fn SET_NAP(nap: u16) -> BTH_ADDR {$/;" f +SET_NAP_SAP vendor/winapi/src/shared/bthdef.rs /^pub fn SET_NAP_SAP(nap: u16, sap: u32) -> BTH_ADDR {$/;" f +SET_OPEN_ON_EXEC include/filecntl.h /^#define SET_OPEN_ON_EXEC(/;" d +SET_PARTITION_INFORMATION_GPT vendor/winapi/src/um/winioctl.rs /^pub type SET_PARTITION_INFORMATION_GPT = PARTITION_INFORMATION_GPT;$/;" t +SET_PARTITION_INFORMATION_MBR vendor/winapi/src/um/winioctl.rs /^pub type SET_PARTITION_INFORMATION_MBR = SET_PARTITION_INFORMATION;$/;" t +SET_SAP vendor/winapi/src/shared/bthdef.rs /^pub fn SET_SAP(sap: u32) -> BTH_ADDR {$/;" f +SET_SIZE_FLAGS lib/sh/snprintf.c /^#define SET_SIZE_FLAGS(/;" d file: +SET_SPECIAL lib/readline/rltty.c /^#define SET_SPECIAL(/;" d file: +SEVAL_FUNCDEF builtins/common.h /^#define SEVAL_FUNCDEF /;" d +SEVAL_INTERACT builtins/common.h /^#define SEVAL_INTERACT /;" d +SEVAL_NOFREE builtins/common.h /^#define SEVAL_NOFREE /;" d +SEVAL_NOHIST builtins/common.h /^#define SEVAL_NOHIST /;" d +SEVAL_NOHIST builtins_rust/eval/src/lib.rs /^macro_rules! SEVAL_NOHIST {$/;" M +SEVAL_NOHIST builtins_rust/fc/src/lib.rs /^macro_rules! SEVAL_NOHIST {$/;" M +SEVAL_NOHISTEXP builtins/common.h /^#define SEVAL_NOHISTEXP /;" d +SEVAL_NOLONGJMP builtins/common.h /^#define SEVAL_NOLONGJMP /;" d +SEVAL_NONINT builtins/common.h /^#define SEVAL_NONINT /;" d +SEVAL_ONECMD builtins/common.h /^#define SEVAL_ONECMD /;" d +SEVAL_PARSEONLY builtins/common.h /^#define SEVAL_PARSEONLY /;" d +SEVAL_RESETLINE builtins/common.h /^#define SEVAL_RESETLINE /;" d +SE_SIGNING_LEVEL vendor/winapi/src/um/winnt.rs /^pub type SE_SIGNING_LEVEL = BYTE;$/;" t +SFGAOF vendor/winapi/src/um/shobjidl_core.rs /^pub type SFGAOF = ULONG;$/;" t +SFLAG builtins_rust/bind/src/lib.rs /^macro_rules! SFLAG {$/;" M +SFLAG builtins_rust/shopt/src/lib.rs /^static SFLAG: i32 = 0x01;$/;" v +SFLAG support/utshellversion.c /^#define SFLAG /;" d file: +SFLOAT vendor/winapi/src/um/sqltypes.rs /^pub type SFLOAT = c_float;$/;" t +SF_CHGKMAP lib/readline/rlprivate.h /^#define SF_CHGKMAP /;" d +SF_FAILED lib/readline/rlprivate.h /^#define SF_FAILED /;" d +SF_FOUND lib/readline/rlprivate.h /^#define SF_FOUND /;" d +SF_NOCASE lib/readline/rlprivate.h /^#define SF_NOCASE /;" d +SF_PATTERN lib/readline/rlprivate.h /^#define SF_PATTERN /;" d +SF_REVERSE lib/readline/rlprivate.h /^#define SF_REVERSE /;" d +SGTTY_SET lib/readline/rltty.c /^#define SGTTY_SET /;" d file: +SHANDLE_PTR vendor/winapi/src/shared/basetsd.rs /^pub type SHANDLE_PTR = isize;$/;" t +SHAppBarMessage vendor/winapi/src/um/shellapi.rs /^ pub fn SHAppBarMessage($/;" f +SHCloneSpecialIDList vendor/winapi/src/um/shlobj.rs /^ pub fn SHCloneSpecialIDList($/;" f +SHCreateDirectory vendor/winapi/src/um/shlobj.rs /^ pub fn SHCreateDirectory($/;" f +SHCreateDirectoryExA vendor/winapi/src/um/shlobj.rs /^ pub fn SHCreateDirectoryExA($/;" f +SHCreateDirectoryExW vendor/winapi/src/um/shlobj.rs /^ pub fn SHCreateDirectoryExW($/;" f +SHCreateItemFromParsingName vendor/winapi/src/um/shobjidl_core.rs /^ pub fn SHCreateItemFromParsingName($/;" f +SHCreateProcessAsUserW vendor/winapi/src/um/shellapi.rs /^ pub fn SHCreateProcessAsUserW($/;" f +SHELL Makefile.in /^SHELL = @MAKE_SHELL@$/;" m +SHELL builtins/Makefile.in /^SHELL = @MAKE_SHELL@$/;" m +SHELL lib/glob/Makefile.in /^SHELL = @MAKE_SHELL@$/;" m +SHELL lib/intl/Makefile.in /^SHELL = \/bin\/sh$/;" m +SHELL lib/malloc/Makefile.in /^SHELL = @MAKE_SHELL@$/;" m +SHELL lib/readline/Makefile.in /^SHELL = @MAKE_SHELL@$/;" m +SHELL lib/sh/Makefile.in /^SHELL = @MAKE_SHELL@$/;" m +SHELL lib/termcap/Makefile.in /^SHELL = @MAKE_SHELL@$/;" m +SHELL lib/tilde/Makefile.in /^SHELL = @MAKE_SHELL@$/;" m +SHELL support/Makefile.in /^SHELL = @MAKE_SHELL@$/;" m +SHELL_BOOLEAN test.c /^#define SHELL_BOOLEAN(/;" d file: +SHELL_FD_BASE redir.c /^#define SHELL_FD_BASE /;" d file: +SHELL_VAR builtins_rust/cd/src/lib.rs /^pub struct SHELL_VAR {$/;" s +SHELL_VAR builtins_rust/common/src/lib.rs /^pub struct SHELL_VAR {$/;" s +SHELL_VAR builtins_rust/declare/src/lib.rs /^pub struct SHELL_VAR {$/;" s +SHELL_VAR builtins_rust/fc/src/lib.rs /^pub struct SHELL_VAR {$/;" s +SHELL_VAR builtins_rust/getopts/src/lib.rs /^pub struct SHELL_VAR {$/;" s +SHELL_VAR builtins_rust/mapfile/src/intercdep.rs /^pub type SHELL_VAR = variable;$/;" t +SHELL_VAR builtins_rust/read/src/intercdep.rs /^pub type SHELL_VAR = rcommon::SHELL_VAR;$/;" t +SHELL_VAR builtins_rust/set/src/lib.rs /^pub type SHELL_VAR = variable;$/;" t +SHELL_VAR builtins_rust/setattr/src/intercdep.rs /^pub type SHELL_VAR = variable;$/;" t +SHELL_VAR builtins_rust/type/src/lib.rs /^pub struct SHELL_VAR {$/;" s +SHELL_VAR r_bash/src/lib.rs /^pub type SHELL_VAR = variable;$/;" t +SHELL_VAR variables.h /^} SHELL_VAR;$/;" t typeref:struct:variable +SHEmptyRecycleBinA vendor/winapi/src/um/shellapi.rs /^ pub fn SHEmptyRecycleBinA($/;" f +SHEmptyRecycleBinW vendor/winapi/src/um/shellapi.rs /^ pub fn SHEmptyRecycleBinW($/;" f +SHEnumerateUnreadMailAccountsA vendor/winapi/src/um/shellapi.rs /^ pub fn SHEnumerateUnreadMailAccountsA($/;" f +SHEnumerateUnreadMailAccountsW vendor/winapi/src/um/shellapi.rs /^ pub fn SHEnumerateUnreadMailAccountsW($/;" f +SHEvaluateSystemCommandTemplate vendor/winapi/src/um/shellapi.rs /^ pub fn SHEvaluateSystemCommandTemplate($/;" f +SHFUNC_RETURN bashjmp.h /^#define SHFUNC_RETURN(/;" d +SHFileOperationA vendor/winapi/src/um/shellapi.rs /^ pub fn SHFileOperationA($/;" f +SHFileOperationW vendor/winapi/src/um/shellapi.rs /^ pub fn SHFileOperationW($/;" f +SHFlushSFCache vendor/winapi/src/um/shlobj.rs /^ pub fn SHFlushSFCache();$/;" f +SHFreeNameMappings vendor/winapi/src/um/shellapi.rs /^ pub fn SHFreeNameMappings($/;" f +SHGetDiskFreeSpaceExA vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetDiskFreeSpaceExA($/;" f +SHGetDiskFreeSpaceExW vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetDiskFreeSpaceExW($/;" f +SHGetDriveMedia vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetDriveMedia($/;" f +SHGetFileInfoA vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetFileInfoA($/;" f +SHGetFileInfoW vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetFileInfoW($/;" f +SHGetFolderLocation vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetFolderLocation($/;" f +SHGetFolderPathA vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetFolderPathA($/;" f +SHGetFolderPathAndSubDirA vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetFolderPathAndSubDirA($/;" f +SHGetFolderPathAndSubDirW vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetFolderPathAndSubDirW($/;" f +SHGetFolderPathW vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetFolderPathW($/;" f +SHGetIconOverlayIndexA vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetIconOverlayIndexA($/;" f +SHGetIconOverlayIndexW vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetIconOverlayIndexW($/;" f +SHGetImageList vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetImageList($/;" f +SHGetKnownFolderIDList vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetKnownFolderIDList($/;" f +SHGetKnownFolderItem vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetKnownFolderItem($/;" f +SHGetKnownFolderPath vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetKnownFolderPath($/;" f +SHGetLocalizedName vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetLocalizedName($/;" f +SHGetNewLinkInfoA vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetNewLinkInfoA($/;" f +SHGetNewLinkInfoW vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetNewLinkInfoW($/;" f +SHGetPathFromIDListA vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetPathFromIDListA($/;" f +SHGetPathFromIDListEx vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetPathFromIDListEx($/;" f +SHGetPathFromIDListW vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetPathFromIDListW($/;" f +SHGetPropertyStoreForWindow vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetPropertyStoreForWindow($/;" f +SHGetSpecialFolderLocation vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetSpecialFolderLocation($/;" f +SHGetSpecialFolderPathA vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetSpecialFolderPathA($/;" f +SHGetSpecialFolderPathW vendor/winapi/src/um/shlobj.rs /^ pub fn SHGetSpecialFolderPathW($/;" f +SHGetStockIconInfo vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetStockIconInfo($/;" f +SHGetUnreadMailCountA vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetUnreadMailCountA($/;" f +SHGetUnreadMailCountW vendor/winapi/src/um/shellapi.rs /^ pub fn SHGetUnreadMailCountW($/;" f +SHInvokePrinterCommandA vendor/winapi/src/um/shellapi.rs /^ pub fn SHInvokePrinterCommandA($/;" f +SHInvokePrinterCommandW vendor/winapi/src/um/shellapi.rs /^ pub fn SHInvokePrinterCommandW($/;" f +SHIsFileAvailableOffline vendor/winapi/src/um/shellapi.rs /^ pub fn SHIsFileAvailableOffline($/;" f +SHLIB_DEP Makefile.in /^SHLIB_DEP = ${SHLIB_LIBRARY}$/;" m +SHLIB_LDFLAGS Makefile.in /^SHLIB_LDFLAGS = -L${SH_LIBDIR}$/;" m +SHLIB_LIB Makefile.in /^SHLIB_LIB = -lsh$/;" m +SHLIB_LIBNAME Makefile.in /^SHLIB_LIBNAME = libsh.a$/;" m +SHLIB_LIBRARY Makefile.in /^SHLIB_LIBRARY = ${SH_LIBDIR}\/${SHLIB_LIBNAME}$/;" m +SHLIB_SOURCE Makefile.in /^SHLIB_SOURCE = ${SH_LIBSRC}\/clktck.c ${SH_LIBSRC}\/getcwd.c \\$/;" m +SHLoadNonloadedIconOverlayIdentifiers vendor/winapi/src/um/shellapi.rs /^ pub fn SHLoadNonloadedIconOverlayIdentifiers() -> HRESULT;$/;" f +SHMAT_PWARN externs.h /^#define SHMAT_PWARN /;" d +SHMAT_SUBEXP externs.h /^#define SHMAT_SUBEXP /;" d +SHOBJ_CC configure.ac /^ AC_SUBST(SHOBJ_CC)$/;" s +SHOBJ_CFLAGS configure.ac /^ AC_SUBST(SHOBJ_CFLAGS)$/;" s +SHOBJ_LD configure.ac /^ AC_SUBST(SHOBJ_LD)$/;" s +SHOBJ_LDFLAGS configure.ac /^ AC_SUBST(SHOBJ_LDFLAGS)$/;" s +SHOBJ_LIBS configure.ac /^ AC_SUBST(SHOBJ_LIBS)$/;" s +SHOBJ_STATUS configure.ac /^ AC_SUBST(SHOBJ_STATUS)$/;" s +SHOBJ_XLDFLAGS configure.ac /^ AC_SUBST(SHOBJ_XLDFLAGS)$/;" s +SHOPT_COMPAT31 builtins_rust/shopt/src/lib.rs /^static mut SHOPT_COMPAT31: i32 = 0;$/;" v +SHOPT_COMPAT32 builtins_rust/shopt/src/lib.rs /^static mut SHOPT_COMPAT32: i32 = 0;$/;" v +SHOPT_COMPAT40 builtins_rust/shopt/src/lib.rs /^static mut SHOPT_COMPAT40: i32 = 0;$/;" v +SHOPT_COMPAT41 builtins_rust/shopt/src/lib.rs /^static mut SHOPT_COMPAT41: i32 = 0;$/;" v +SHOPT_COMPAT42 builtins_rust/shopt/src/lib.rs /^static mut SHOPT_COMPAT42: i32 = 0;$/;" v +SHOPT_COMPAT43 builtins_rust/shopt/src/lib.rs /^static mut SHOPT_COMPAT43: i32 = 0;$/;" v +SHOPT_COMPAT44 builtins_rust/shopt/src/lib.rs /^static mut SHOPT_COMPAT44: i32 = 0;$/;" v +SHOPT_LOGIN_SHELL builtins_rust/shopt/src/lib.rs /^static mut SHOPT_LOGIN_SHELL: i32 = 0;$/;" v +SHOPT_VARS builtins_rust/shopt/src/lib.rs /^static mut SHOPT_VARS: [RShoptVars; 54] = unsafe {$/;" v +SHORT vendor/winapi/src/shared/ntdef.rs /^pub type SHORT = c_short;$/;" t +SHORT vendor/winapi/src/shared/wtypesbase.rs /^pub type SHORT = c_short;$/;" t +SHORT vendor/winapi/src/um/winnt.rs /^pub type SHORT = c_short;$/;" t +SHOULD_CHOWN lib/readline/histfile.c /^#define SHOULD_CHOWN(/;" d file: +SHOpenFolderAndSelectItems vendor/winapi/src/um/shlobj.rs /^ pub fn SHOpenFolderAndSelectItems($/;" f +SHQueryRecycleBinA vendor/winapi/src/um/shellapi.rs /^ pub fn SHQueryRecycleBinA($/;" f +SHQueryRecycleBinW vendor/winapi/src/um/shellapi.rs /^ pub fn SHQueryRecycleBinW($/;" f +SHQueryUserNotificationState vendor/winapi/src/um/shellapi.rs /^ pub fn SHQueryUserNotificationState($/;" f +SHRemoveLocalizedName vendor/winapi/src/um/shellapi.rs /^ pub fn SHRemoveLocalizedName($/;" f +SHSetFolderPathA vendor/winapi/src/um/shlobj.rs /^ pub fn SHSetFolderPathA($/;" f +SHSetFolderPathW vendor/winapi/src/um/shlobj.rs /^ pub fn SHSetFolderPathW($/;" f +SHSetKnownFolderPath vendor/winapi/src/um/shlobj.rs /^ pub fn SHSetKnownFolderPath($/;" f +SHSetLocalizedName vendor/winapi/src/um/shellapi.rs /^ pub fn SHSetLocalizedName($/;" f +SHSetUnreadMailCountA vendor/winapi/src/um/shellapi.rs /^ pub fn SHSetUnreadMailCountA($/;" f +SHSetUnreadMailCountW vendor/winapi/src/um/shellapi.rs /^ pub fn SHSetUnreadMailCountW($/;" f +SHTestTokenMembership vendor/winapi/src/um/shellapi.rs /^ pub fn SHTestTokenMembership($/;" f +SH_ABSSRC Makefile.in /^SH_ABSSRC = ${topdir}\/${SH_LIBSRC}$/;" m +SH_FUNCTION_TYPEDEF general.h /^# define SH_FUNCTION_TYPEDEF$/;" d +SH_LIBDIR Makefile.in /^SH_LIBDIR = $(dot)\/${LIBSUBDIR}\/sh$/;" m +SH_LIBSRC Makefile.in /^SH_LIBSRC = $(LIBSRC)\/sh$/;" m +SH_VA_START include/stdc.h /^# define SH_VA_START(/;" d +SID_AND_ATTRIBUTES_ARRAY vendor/winapi/src/um/winnt.rs /^pub type SID_AND_ATTRIBUTES_ARRAY = SID_AND_ATTRIBUTES;$/;" t +SID_HASH_ENTRY vendor/winapi/src/um/winnt.rs /^pub type SID_HASH_ENTRY = ULONG_PTR;$/;" t +SIGABRT sig.h /^# define SIGABRT /;" d +SIGABRT siglist.c /^#define SIGABRT /;" d file: +SIGCHLD sig.h /^# define SIGCHLD /;" d +SIGCHLD siglist.c /^#define SIGCHLD /;" d file: +SIGEXIT bashjmp.h /^#define SIGEXIT /;" d +SIGHANDLER_RETURN lib/readline/signals.c /^# define SIGHANDLER_RETURN /;" d file: +SIGLIST_O Makefile.in /^SIGLIST_O = @SIGLIST_O@$/;" m +SIGNAMES_H Makefile.in /^SIGNAMES_H = @SIGNAMES_H@$/;" m +SIGNAMES_H configure.ac /^AC_SUBST(SIGNAMES_H)$/;" s +SIGNAMES_O Makefile.in /^SIGNAMES_O = @SIGNAMES_O@$/;" m +SIGNAMES_O configure.ac /^AC_SUBST(SIGNAMES_O)$/;" s +SIGNAMES_SUPPORT Makefile.in /^SIGNAMES_SUPPORT = $(SUPPORT_SRC)mksignames.c$/;" m +SIGRETURN sig.h /^# define SIGRETURN(/;" d +SIG_BLOCK sig.h /^# define SIG_BLOCK /;" d +SIG_CHANGED trap.c /^#define SIG_CHANGED /;" d file: +SIG_DFL r_jobs/src/lib.rs /^macro_rules! SIG_DFL {$/;" M +SIG_HARD_IGNORE trap.c /^#define SIG_HARD_IGNORE /;" d file: +SIG_IGN r_jobs/src/lib.rs /^macro_rules! SIG_IGN {$/;" M +SIG_IGNORED trap.c /^#define SIG_IGNORED /;" d file: +SIG_INHERITED trap.c /^#define SIG_INHERITED /;" d file: +SIG_INPROGRESS trap.c /^#define SIG_INPROGRESS /;" d file: +SIG_NO_TRAP trap.c /^#define SIG_NO_TRAP /;" d file: +SIG_SETMASK sig.h /^# define SIG_SETMASK /;" d +SIG_SPECIAL trap.c /^#define SIG_SPECIAL /;" d file: +SIG_TRAPPED trap.c /^#define SIG_TRAPPED /;" d file: +SIMPLE_COM builtins_rust/kill/src/intercdep.rs /^pub type SIMPLE_COM = simple_com;$/;" t +SIMPLE_COM builtins_rust/setattr/src/intercdep.rs /^pub type SIMPLE_COM = simple_com;$/;" t +SIMPLE_COM command.h /^} SIMPLE_COM;$/;" t typeref:struct:simple_com +SIMPLE_COM r_bash/src/lib.rs /^pub type SIMPLE_COM = simple_com;$/;" t +SIMPLE_COM r_glob/src/lib.rs /^pub type SIMPLE_COM = simple_com;$/;" t +SIMPLE_COM r_readline/src/lib.rs /^pub type SIMPLE_COM = simple_com;$/;" t +SINGLE_MATCH lib/readline/readline.h /^#define SINGLE_MATCH /;" d +SIP_CAP_SET vendor/winapi/src/um/mssip.rs /^pub type SIP_CAP_SET = SIP_CAP_SET_V3;$/;" t +SIZE Makefile.in /^SIZE = @SIZE@$/;" m +SIZE configure.ac /^AC_SUBST(SIZE)$/;" s +SIZEL vendor/winapi/src/shared/windef.rs /^pub type SIZEL = SIZE;$/;" t +SIZEOFLIMIT builtins_rust/ulimit/src/lib.rs /^macro_rules! SIZEOFLIMIT {$/;" M +SIZEOFLIMITS builtins_rust/ulimit/src/lib.rs /^macro_rules! SIZEOFLIMITS {$/;" M +SIZEOFULCMD builtins_rust/ulimit/src/lib.rs /^macro_rules! SIZEOFULCMD {$/;" M +SIZEOFWORD builtins_rust/type/src/lib.rs /^macro_rules! SIZEOFWORD {$/;" M +SIZE_MAX include/typemax.h /^# define SIZE_MAX /;" d +SIZE_T vendor/winapi/src/shared/basetsd.rs /^pub type SIZE_T = ULONG_PTR;$/;" t +SKIPEOL support/man2html.c /^#define SKIPEOL /;" d file: +SLONG vendor/winapi/src/um/sqltypes.rs /^pub type SLONG = c_long;$/;" t +SMALL_STR_MAX support/man2html.c /^#define SMALL_STR_MAX /;" d file: +SNB vendor/winapi/src/um/objidl.rs /^pub type SNB = *const *const OLECHAR;$/;" t +SN_CHAR vendor/winapi/src/shared/iprtrmib.rs /^pub type SN_CHAR = WCHAR;$/;" t +SOCKADDR_IN6 vendor/winapi/src/shared/ws2ipdef.rs /^pub type SOCKADDR_IN6 = SOCKADDR_IN6_LH;$/;" t +SOCKADDR_STORAGE vendor/winapi/src/shared/ws2def.rs /^pub type SOCKADDR_STORAGE = SOCKADDR_STORAGE_LH;$/;" t +SOCKET vendor/libc/src/windows/mod.rs /^pub type SOCKET = ::uintptr_t;$/;" t +SOCKET vendor/winapi/src/um/winsock2.rs /^pub type SOCKET = UINT_PTR;$/;" t +SOMAXCONN_HINT vendor/winapi/src/um/winsock2.rs /^pub fn SOMAXCONN_HINT(b: c_int) -> c_int {$/;" f +SORTIDFROMLCID vendor/winapi/src/shared/ntdef.rs /^pub fn SORTIDFROMLCID(lcid: LCID) -> USHORT { ((lcid >> 16) & 0xf) as USHORT }$/;" f +SORTIDFROMLCID vendor/winapi/src/um/winnt.rs /^pub fn SORTIDFROMLCID(lcid: LCID) -> WORD {$/;" f +SORTVERSIONFROMLCID vendor/winapi/src/shared/ntdef.rs /^pub fn SORTVERSIONFROMLCID(lcid: LCID) -> USHORT { ((lcid >> 16) & 0xf) as USHORT }$/;" f +SORTVERSIONFROMLCID vendor/winapi/src/um/winnt.rs /^pub fn SORTVERSIONFROMLCID(lcid: LCID) -> WORD {$/;" f +SOURCENEST_MAX config-top.h /^#define SOURCENEST_MAX /;" d +SOURCES Makefile.in /^SOURCES = $(CSOURCES) $(HSOURCES) $(BUILTIN_DEFS)$/;" m +SOURCES lib/glob/Makefile.in /^SOURCES = $(CSOURCES) $(HSOURCES) $(DOCSOURCE)$/;" m +SOURCES lib/intl/Makefile.in /^SOURCES = \\$/;" m +SOURCES lib/readline/Makefile.in /^SOURCES = $(CSOURCES) $(HSOURCES) $(DOCSOURCE)$/;" m +SOURCES lib/termcap/Makefile.in /^SOURCES = termcap.c tparam.c$/;" m +SOURCES lib/tilde/Makefile.in /^SOURCES = $(CSOURCES) $(HSOURCES) $(DOCSOURCE)$/;" m +SPACE lib/readline/chardefs.h /^#define SPACE /;" d +SPC_UUID vendor/winapi/src/um/wintrust.rs /^pub type SPC_UUID = [BYTE; SPC_UUID_LENGTH];$/;" t +SPDFID_Text vendor/winapi/src/um/sapi51.rs /^ pub static SPDFID_Text: GUID;$/;" v +SPDFID_WaveFormatEx vendor/winapi/src/um/sapi51.rs /^ pub static SPDFID_WaveFormatEx: GUID;$/;" v +SPECIAL_BUILTIN builtins.h /^#define SPECIAL_BUILTIN /;" d +SPECIAL_BUILTIN builtins_rust/common/src/lib.rs /^macro_rules! SPECIAL_BUILTIN {$/;" M +SPECIAL_TRAP trap.c /^#define SPECIAL_TRAP(/;" d file: +SPECIAL_VAR subst.c /^#define SPECIAL_VAR(/;" d file: +SPECIFIC_COMPLETION_FUNCTIONS bashline.c /^#define SPECIFIC_COMPLETION_FUNCTIONS$/;" d file: +SPHANDLE vendor/winapi/src/shared/minwindef.rs /^pub type SPHANDLE = *mut HANDLE;$/;" t +SPLIT_MAX lib/malloc/malloc.c /^#define SPLIT_MAX /;" d file: +SPLIT_MID lib/malloc/malloc.c /^#define SPLIT_MID /;" d file: +SPLIT_MIN lib/malloc/malloc.c /^#define SPLIT_MIN /;" d file: +SPROMPT config-top.h /^#define SPROMPT /;" d +SP_ADDPROPERTYPAGE_DATA vendor/winapi/src/um/setupapi.rs /^pub type SP_ADDPROPERTYPAGE_DATA = SP_NEWDEVICEWIZARD_DATA;$/;" t +SP_ALTPLATFORM_INFO vendor/winapi/src/um/setupapi.rs /^pub type SP_ALTPLATFORM_INFO = SP_ALTPLATFORM_INFO_V2;$/;" t +SP_BACKUP_QUEUE_PARAMS_A vendor/winapi/src/um/setupapi.rs /^pub type SP_BACKUP_QUEUE_PARAMS_A = SP_BACKUP_QUEUE_PARAMS_V2_A;$/;" t +SP_BACKUP_QUEUE_PARAMS_W vendor/winapi/src/um/setupapi.rs /^pub type SP_BACKUP_QUEUE_PARAMS_W = SP_BACKUP_QUEUE_PARAMS_V2_W;$/;" t +SP_DRVINFO_DATA_A vendor/winapi/src/um/setupapi.rs /^pub type SP_DRVINFO_DATA_A = SP_DRVINFO_DATA_V2_A;$/;" t +SP_DRVINFO_DATA_W vendor/winapi/src/um/setupapi.rs /^pub type SP_DRVINFO_DATA_W = SP_DRVINFO_DATA_V2_W;$/;" t +SP_INF_SIGNER_INFO_A vendor/winapi/src/um/setupapi.rs /^pub type SP_INF_SIGNER_INFO_A = SP_INF_SIGNER_INFO_V2_A;$/;" t +SP_INF_SIGNER_INFO_W vendor/winapi/src/um/setupapi.rs /^pub type SP_INF_SIGNER_INFO_W = SP_INF_SIGNER_INFO_V2_W;$/;" t +SP_INTERFACE_DEVICE_DATA vendor/winapi/src/um/setupapi.rs /^pub type SP_INTERFACE_DEVICE_DATA = SP_DEVICE_INTERFACE_DATA;$/;" t +SP_LOG_TOKEN vendor/winapi/src/um/spapidef.rs /^pub type SP_LOG_TOKEN = DWORDLONG;$/;" t +SQLAllocHandle vendor/winapi/src/um/sql.rs /^ pub fn SQLAllocHandle($/;" f +SQLBIGINT vendor/winapi/src/um/sqltypes.rs /^pub type SQLBIGINT = ODBCINT64;$/;" t +SQLCHAR vendor/winapi/src/um/sqltypes.rs /^pub type SQLCHAR = c_uchar;$/;" t +SQLConnectA vendor/winapi/src/um/sqlucode.rs /^ pub fn SQLConnectA($/;" f +SQLConnectW vendor/winapi/src/um/sqlucode.rs /^ pub fn SQLConnectW($/;" f +SQLDATE vendor/winapi/src/um/sqltypes.rs /^pub type SQLDATE = c_uchar;$/;" t +SQLDECIMAL vendor/winapi/src/um/sqltypes.rs /^pub type SQLDECIMAL = c_uchar;$/;" t +SQLDOUBLE vendor/winapi/src/um/sqltypes.rs /^pub type SQLDOUBLE = c_double;$/;" t +SQLDescribeColA vendor/winapi/src/um/sqlucode.rs /^ pub fn SQLDescribeColA($/;" f +SQLDescribeColW vendor/winapi/src/um/sqlucode.rs /^ pub fn SQLDescribeColW($/;" f +SQLDisconnect vendor/winapi/src/um/sql.rs /^ pub fn SQLDisconnect($/;" f +SQLDriverConnectA vendor/winapi/src/um/sqlucode.rs /^ pub fn SQLDriverConnectA($/;" f +SQLDriverConnectW vendor/winapi/src/um/sqlucode.rs /^ pub fn SQLDriverConnectW($/;" f +SQLExecDirectA vendor/winapi/src/um/sqlucode.rs /^ pub fn SQLExecDirectA($/;" f +SQLExecDirectW vendor/winapi/src/um/sqlucode.rs /^ pub fn SQLExecDirectW($/;" f +SQLFLOAT vendor/winapi/src/um/sqltypes.rs /^pub type SQLFLOAT = c_double;$/;" t +SQLFetch vendor/winapi/src/um/sql.rs /^ pub fn SQLFetch($/;" f +SQLFreeHandle vendor/winapi/src/um/sql.rs /^ pub fn SQLFreeHandle($/;" f +SQLFreeStmt vendor/winapi/src/um/sql.rs /^ pub fn SQLFreeStmt($/;" f +SQLGUID vendor/winapi/src/um/sqltypes.rs /^pub type SQLGUID = GUID;$/;" t +SQLGetData vendor/winapi/src/um/sql.rs /^ pub fn SQLGetData($/;" f +SQLGetDiagRecA vendor/winapi/src/um/sqlucode.rs /^ pub fn SQLGetDiagRecA($/;" f +SQLGetDiagRecW vendor/winapi/src/um/sqlucode.rs /^ pub fn SQLGetDiagRecW($/;" f +SQLHANDLE vendor/winapi/src/um/sqltypes.rs /^pub type SQLHANDLE = *mut c_void;$/;" t +SQLHDBC vendor/winapi/src/um/sqltypes.rs /^pub type SQLHDBC = SQLHANDLE;$/;" t +SQLHDESC vendor/winapi/src/um/sqltypes.rs /^pub type SQLHDESC = SQLHANDLE;$/;" t +SQLHENV vendor/winapi/src/um/sqltypes.rs /^pub type SQLHENV = SQLHANDLE;$/;" t +SQLHSTMT vendor/winapi/src/um/sqltypes.rs /^pub type SQLHSTMT = SQLHANDLE;$/;" t +SQLHWND vendor/winapi/src/um/sqltypes.rs /^pub type SQLHWND = HWND;$/;" t +SQLINTEGER vendor/winapi/src/um/sqltypes.rs /^pub type SQLINTEGER = c_long;$/;" t +SQLLEN vendor/winapi/src/um/sqltypes.rs /^pub type SQLLEN = INT64;$/;" t +SQLLEN vendor/winapi/src/um/sqltypes.rs /^pub type SQLLEN = SQLINTEGER;$/;" t +SQLNUMERIC vendor/winapi/src/um/sqltypes.rs /^pub type SQLNUMERIC = c_uchar;$/;" t +SQLNumResultCols vendor/winapi/src/um/sql.rs /^ pub fn SQLNumResultCols($/;" f +SQLPOINTER vendor/winapi/src/um/sqltypes.rs /^pub type SQLPOINTER = *mut c_void;$/;" t +SQLREAL vendor/winapi/src/um/sqltypes.rs /^pub type SQLREAL = c_float;$/;" t +SQLRETURN vendor/winapi/src/um/sqltypes.rs /^pub type SQLRETURN = SQLSMALLINT;$/;" t +SQLROWCOUNT vendor/winapi/src/um/sqltypes.rs /^pub type SQLROWCOUNT = SQLULEN;$/;" t +SQLROWOFFSET vendor/winapi/src/um/sqltypes.rs /^pub type SQLROWOFFSET = SQLLEN;$/;" t +SQLROWSETSIZE vendor/winapi/src/um/sqltypes.rs /^pub type SQLROWSETSIZE = SQLULEN;$/;" t +SQLRowCount vendor/winapi/src/um/sql.rs /^ pub fn SQLRowCount($/;" f +SQLSCHAR vendor/winapi/src/um/sqltypes.rs /^pub type SQLSCHAR = c_schar;$/;" t +SQLSETPOSIROW vendor/winapi/src/um/sqltypes.rs /^pub type SQLSETPOSIROW = SQLUSMALLINT;$/;" t +SQLSETPOSIROW vendor/winapi/src/um/sqltypes.rs /^pub type SQLSETPOSIROW = UINT64;$/;" t +SQLSMALLINT vendor/winapi/src/um/sqltypes.rs /^pub type SQLSMALLINT = c_short;$/;" t +SQLSetConnectAttr vendor/winapi/src/um/sql.rs /^ pub fn SQLSetConnectAttr($/;" f +SQLSetEnvAttr vendor/winapi/src/um/sql.rs /^ pub fn SQLSetEnvAttr($/;" f +SQLTIME vendor/winapi/src/um/sqltypes.rs /^pub type SQLTIME = c_uchar;$/;" t +SQLTIMESTAMP vendor/winapi/src/um/sqltypes.rs /^pub type SQLTIMESTAMP = c_uchar;$/;" t +SQLTRANSID vendor/winapi/src/um/sqltypes.rs /^pub type SQLTRANSID = SQLULEN;$/;" t +SQLUBIGINT vendor/winapi/src/um/sqltypes.rs /^pub type SQLUBIGINT = __uint64;$/;" t +SQLUINTEGER vendor/winapi/src/um/sqltypes.rs /^pub type SQLUINTEGER = c_ulong;$/;" t +SQLULEN vendor/winapi/src/um/sqltypes.rs /^pub type SQLULEN = SQLUINTEGER;$/;" t +SQLULEN vendor/winapi/src/um/sqltypes.rs /^pub type SQLULEN = UINT64;$/;" t +SQLUSMALLINT vendor/winapi/src/um/sqltypes.rs /^pub type SQLUSMALLINT = c_ushort;$/;" t +SQLVARCHAR vendor/winapi/src/um/sqltypes.rs /^pub type SQLVARCHAR = c_uchar;$/;" t +SQLWCHAR vendor/winapi/src/um/sqltypes.rs /^pub type SQLWCHAR = wchar_t;$/;" t +SQL_DATE_STRUCT vendor/winapi/src/um/sqltypes.rs /^pub type SQL_DATE_STRUCT = DATE_STRUCT;$/;" t +SQL_TIMESTAMP_STRUCT vendor/winapi/src/um/sqltypes.rs /^pub type SQL_TIMESTAMP_STRUCT = TIMESTAMP_STRUCT;$/;" t +SQL_TIME_STRUCT vendor/winapi/src/um/sqltypes.rs /^pub type SQL_TIME_STRUCT = TIME_STRUCT;$/;" t +SRC1 support/Makefile.in /^SRC1 = man2html.c$/;" m +SRWLOCK vendor/winapi/src/um/synchapi.rs /^pub type SRWLOCK = RTL_SRWLOCK;$/;" t +SSFLAG builtins_rust/bind/src/lib.rs /^macro_rules! SSFLAG {$/;" M +SSHORT vendor/winapi/src/um/sqltypes.rs /^pub type SSHORT = c_short;$/;" t +SSH_SOURCE_BASHRC config-top.h /^#define SSH_SOURCE_BASHRC$/;" d +SSIZE_MAX include/typemax.h /^# define SSIZE_MAX /;" d +SSIZE_T vendor/winapi/src/shared/basetsd.rs /^pub type SSIZE_T = LONG_PTR;$/;" t +SSL_EXTRA_CERT_CHAIN_POLICY_PARA vendor/winapi/src/um/wincrypt.rs /^pub type SSL_EXTRA_CERT_CHAIN_POLICY_PARA = HTTPSPolicyCallbackData;$/;" t +STACKFRAME vendor/winapi/src/um/dbghelp.rs /^pub type STACKFRAME = STACKFRAME64;$/;" t +STACK_DIR lib/malloc/alloca.c /^#define STACK_DIR /;" d file: +STACK_DIRECTION lib/malloc/alloca.c /^#define STACK_DIRECTION /;" d file: +STAGING_FLAG vendor/winapi/src/um/ntlsa.rs /^pub fn STAGING_FLAG(Effective: ULONG) -> ULONG {$/;" f +STANDARD_UTILS_PATH config-top.h /^#define STANDARD_UTILS_PATH /;" d +STARTBUCK lib/malloc/malloc.c /^#define STARTBUCK /;" d file: +STAR_ARGS lib/sh/snprintf.c /^#define STAR_ARGS(/;" d file: +STATIC lib/intl/eval-plural.h /^#define STATIC /;" d +STATIC_BUILTIN builtins.h /^#define STATIC_BUILTIN /;" d +STATIC_CALLBACK lib/readline/readline.c /^# define STATIC_CALLBACK /;" d file: +STATIC_CALLBACK lib/readline/readline.c /^# define STATIC_CALLBACK$/;" d file: +STATIC_LD Makefile.in /^STATIC_LD = @STATIC_LD@$/;" m +STATIC_LD configure.ac /^AC_SUBST(STATIC_LD)$/;" s +STATIC_SOURCE builtins/Makefile.in /^STATIC_SOURCE = common.c evalstring.c evalfile.c getopt.c bashgetopt.c \\$/;" m +STAT_TIMESPEC include/stat-time.h /^# define STAT_TIMESPEC(/;" d +STAT_TIMESPEC include/stat-time.h /^# define STAT_TIMESPEC(/;" d +STAT_TIMESPEC_NS include/stat-time.h /^# define STAT_TIMESPEC_NS(/;" d +STAT_TIMESPEC_NS include/stat-time.h /^# define STAT_TIMESPEC_NS(/;" d +STAT_TIME_H include/stat-time.h /^#define STAT_TIME_H /;" d +STDC_HEADERS lib/sh/mktime.c /^# define STDC_HEADERS /;" d file: +STDIN_FILENO lib/readline/examples/excallback.c /^# define STDIN_FILENO /;" d file: +STOPPED builtins_rust/exit/src/lib.rs /^macro_rules! STOPPED {$/;" M +STOPPED jobs.h /^#define STOPPED(/;" d +STOPPED r_jobs/src/lib.rs /^macro_rules! STOPPED {$/;" M +STR expr.c /^#define STR /;" d file: +STRCHR lib/glob/smatch.c /^#define STRCHR(/;" d file: +STRCMP lib/glob/smatch.c /^#define STRCMP(/;" d file: +STRCOLL lib/glob/smatch.c /^#define STRCOLL(/;" d file: +STRCOLLEQ test.c /^#define STRCOLLEQ(/;" d file: +STRCOMPARE lib/glob/sm_loop.c /^STRCOMPARE (p, pe, s, se)$/;" f file: +STRCOMPARE lib/glob/smatch.c /^#define STRCOMPARE /;" d file: +STRDEF support/man2html.c /^struct STRDEF {$/;" s file: +STRDEF support/man2html.c /^typedef struct STRDEF STRDEF;$/;" t typeref:struct:STRDEF file: +STRDUP builtins_rust/complete/src/lib.rs /^unsafe fn STRDUP(x: *const c_char) -> *mut c_char {$/;" f +STRDUP lib/sh/stringlist.c /^#define STRDUP(/;" d file: +STRDUP pcomplete.c /^#define STRDUP(/;" d file: +STRDUP pcomplib.c /^#define STRDUP(/;" d file: +STREQ builtins_rust/caller/src/lib.rs /^unsafe fn STREQ(a: *const c_char, b: *const c_char) -> bool {$/;" f +STREQ builtins_rust/complete/src/lib.rs /^unsafe fn STREQ(a: *const c_char, b: *const c_char) -> bool {$/;" f +STREQ builtins_rust/declare/src/lib.rs /^unsafe fn STREQ(a: *const c_char, b: *const c_char) -> bool {$/;" f +STREQ builtins_rust/exit/src/lib.rs /^unsafe fn STREQ(a: *const c_char, b: *const c_char) -> bool {$/;" f +STREQ builtins_rust/pushd/src/lib.rs /^unsafe fn STREQ(a: *const c_char, b: *const c_char) -> bool {$/;" f +STREQ builtins_rust/set/src/lib.rs /^unsafe fn STREQ(a: *const libc::c_char, b: *const libc::c_char) -> bool {$/;" f +STREQ builtins_rust/type/src/lib.rs /^macro_rules! STREQ {$/;" M +STREQ builtins_rust/ulimit/src/lib.rs /^macro_rules! STREQ {$/;" M +STREQ general.h /^#define STREQ(/;" d +STREQ lib/glob/smatch.c /^# define STREQ(/;" d file: +STREQ lib/glob/smatch.c /^#define STREQ(/;" d file: +STREQ lib/malloc/table.c /^#define STREQ(/;" d file: +STREQ lib/readline/histlib.h /^#define STREQ(/;" d +STREQ lib/readline/rldefs.h /^#define STREQ(/;" d +STREQ lib/sh/unicode.c /^# define STREQ(/;" d file: +STREQ r_bashhist/src/lib.rs /^macro_rules! STREQ {$/;" M +STREQ test.c /^# define STREQ(/;" d file: +STREQN builtins_rust/common/src/lib.rs /^macro_rules! STREQN {$/;" M +STREQN builtins_rust/fc/src/lib.rs /^unsafe fn STREQN(a: *const c_char, b: *const c_char, n: i32) -> bool {$/;" f +STREQN general.h /^#define STREQN(/;" d +STREQN lib/glob/smatch.c /^# define STREQN(/;" d file: +STREQN lib/glob/smatch.c /^#define STREQN(/;" d file: +STREQN lib/readline/histlib.h /^#define STREQN(/;" d +STREQN lib/readline/rldefs.h /^#define STREQN(/;" d +STRICT_POSIX configure.ac /^AC_DEFINE(STRICT_POSIX)$/;" d +STRINGCHAR execute_cmd.c /^# define STRINGCHAR(/;" d file: +STRINGLIST builtins_rust/complete/src/lib.rs /^pub struct STRINGLIST {$/;" s +STRINGLIST builtins_rust/enable/src/lib.rs /^pub type STRINGLIST = _list_of_strings;$/;" t +STRINGLIST externs.h /^} STRINGLIST;$/;" t typeref:struct:_list_of_strings +STRINGLIST r_bash/src/lib.rs /^pub type STRINGLIST = _list_of_strings;$/;" t +STRINGS vendor/unic-langid-impl/benches/langid.rs /^static STRINGS: &[&str] = &[$/;" v +STRINGS vendor/unic-langid-impl/benches/likely_subtags.rs /^static STRINGS: &[&str] = &[$/;" v +STRINGS_16 vendor/tinystr/benches/construct.rs /^static STRINGS_16: &[&str] = &[$/;" v +STRINGS_16 vendor/tinystr/benches/tinystr.rs /^static STRINGS_16: &[&str] = &[$/;" v +STRINGS_4 vendor/tinystr/benches/construct.rs /^static STRINGS_4: &[&str] = &[$/;" v +STRINGS_4 vendor/tinystr/benches/tinystr.rs /^static STRINGS_4: &[&str] = &[$/;" v +STRINGS_8 vendor/tinystr/benches/construct.rs /^static STRINGS_8: &[&str] = &[$/;" v +STRINGS_8 vendor/tinystr/benches/tinystr.rs /^static STRINGS_8: &[&str] = &[$/;" v +STRING_ARRAY builtins/mkbuiltins.c /^#define STRING_ARRAY /;" d file: +STRING_INT_ALIST general.h /^} STRING_INT_ALIST;$/;" t typeref:struct:__anon0d8c0d390108 +STRING_INT_ALIST r_bash/src/lib.rs /^pub struct STRING_INT_ALIST {$/;" s +STRING_INT_ALIST r_glob/src/lib.rs /^pub struct STRING_INT_ALIST {$/;" s +STRING_INT_ALIST r_readline/src/lib.rs /^pub struct STRING_INT_ALIST {$/;" s +STRIP Makefile.in /^STRIP = strip$/;" m +STRLEN builtins_rust/echo/src/lib.rs /^unsafe fn STRLEN(s: *const c_char) -> i32 {$/;" f +STRLEN general.h /^#define STRLEN(/;" d +STRLEN lib/glob/smatch.c /^#define STRLEN(/;" d file: +STRLEN r_jobs/src/lib.rs /^macro_rules! STRLEN{$/;" M +STRLEN test.c /^# define STRLEN(/;" d file: +STRTOL_LONG_MAX lib/sh/strtol.c /^# define STRTOL_LONG_MAX /;" d file: +STRTOL_LONG_MIN lib/sh/strtol.c /^# define STRTOL_LONG_MIN /;" d file: +STRTOL_ULONG_MAX lib/sh/strtol.c /^# define STRTOL_ULONG_MAX /;" d file: +STRUCT lib/glob/sm_loop.c /^struct STRUCT$/;" s file: +STRUCT lib/glob/smatch.c /^#define STRUCT /;" d file: +STR_DOLLAR_AT_STAR subst.c /^#define STR_DOLLAR_AT_STAR(/;" d file: +STUB_OBJS lib/malloc/Makefile.in /^STUB_OBJS = $(ALLOCA) stub.o$/;" m +STUB_SOURCE lib/malloc/Makefile.in /^STUB_SOURCE = stub.c$/;" m +ST_BACKSL subst.c /^#define ST_BACKSL /;" d file: +ST_BACKSLASH lib/readline/parse-colors.c /^ ST_GND, ST_BACKSLASH, ST_OCTAL, ST_HEX, ST_CARET, ST_END, ST_ERROR$/;" e enum:get_funky_string::__anon4ea329890103 file: +ST_BAD braces.c /^#define ST_BAD /;" d file: +ST_CARET lib/readline/parse-colors.c /^ ST_GND, ST_BACKSLASH, ST_OCTAL, ST_HEX, ST_CARET, ST_END, ST_ERROR$/;" e enum:get_funky_string::__anon4ea329890103 file: +ST_CHAR braces.c /^#define ST_CHAR /;" d file: +ST_CTLESC subst.c /^#define ST_CTLESC /;" d file: +ST_DQUOTE subst.c /^#define ST_DQUOTE /;" d file: +ST_END lib/readline/parse-colors.c /^ ST_GND, ST_BACKSLASH, ST_OCTAL, ST_HEX, ST_CARET, ST_END, ST_ERROR$/;" e enum:get_funky_string::__anon4ea329890103 file: +ST_ERROR lib/readline/parse-colors.c /^ ST_GND, ST_BACKSLASH, ST_OCTAL, ST_HEX, ST_CARET, ST_END, ST_ERROR$/;" e enum:get_funky_string::__anon4ea329890103 file: +ST_GND lib/readline/parse-colors.c /^ ST_GND, ST_BACKSLASH, ST_OCTAL, ST_HEX, ST_CARET, ST_END, ST_ERROR$/;" e enum:get_funky_string::__anon4ea329890103 file: +ST_HEX lib/readline/parse-colors.c /^ ST_GND, ST_BACKSLASH, ST_OCTAL, ST_HEX, ST_CARET, ST_END, ST_ERROR$/;" e enum:get_funky_string::__anon4ea329890103 file: +ST_INT braces.c /^#define ST_INT /;" d file: +ST_OCTAL lib/readline/parse-colors.c /^ ST_GND, ST_BACKSLASH, ST_OCTAL, ST_HEX, ST_CARET, ST_END, ST_ERROR$/;" e enum:get_funky_string::__anon4ea329890103 file: +ST_SQUOTE subst.c /^#define ST_SQUOTE /;" d file: +ST_ZINT braces.c /^#define ST_ZINT /;" d file: +SUBDIR_INCLUDES Makefile.in /^SUBDIR_INCLUDES = -I. @RL_INCLUDE@ -I$(topdir) -I$(topdir)\/$(LIBSUBDIR)$/;" m +SUBLANGID vendor/winapi/src/shared/ntdef.rs /^pub fn SUBLANGID(lgid: LANGID) -> USHORT { lgid >> 10 }$/;" f +SUBLANGID vendor/winapi/src/um/winnt.rs /^pub fn SUBLANGID(lgid: LANGID) -> WORD {$/;" f +SUBLANG_ARABIC_ALGERIA lib/intl/localename.c /^# define SUBLANG_ARABIC_ALGERIA /;" d file: +SUBLANG_ARABIC_BAHRAIN lib/intl/localename.c /^# define SUBLANG_ARABIC_BAHRAIN /;" d file: +SUBLANG_ARABIC_EGYPT lib/intl/localename.c /^# define SUBLANG_ARABIC_EGYPT /;" d file: +SUBLANG_ARABIC_IRAQ lib/intl/localename.c /^# define SUBLANG_ARABIC_IRAQ /;" d file: +SUBLANG_ARABIC_JORDAN lib/intl/localename.c /^# define SUBLANG_ARABIC_JORDAN /;" d file: +SUBLANG_ARABIC_KUWAIT lib/intl/localename.c /^# define SUBLANG_ARABIC_KUWAIT /;" d file: +SUBLANG_ARABIC_LEBANON lib/intl/localename.c /^# define SUBLANG_ARABIC_LEBANON /;" d file: +SUBLANG_ARABIC_LIBYA lib/intl/localename.c /^# define SUBLANG_ARABIC_LIBYA /;" d file: +SUBLANG_ARABIC_MOROCCO lib/intl/localename.c /^# define SUBLANG_ARABIC_MOROCCO /;" d file: +SUBLANG_ARABIC_OMAN lib/intl/localename.c /^# define SUBLANG_ARABIC_OMAN /;" d file: +SUBLANG_ARABIC_QATAR lib/intl/localename.c /^# define SUBLANG_ARABIC_QATAR /;" d file: +SUBLANG_ARABIC_SAUDI_ARABIA lib/intl/localename.c /^# define SUBLANG_ARABIC_SAUDI_ARABIA /;" d file: +SUBLANG_ARABIC_SYRIA lib/intl/localename.c /^# define SUBLANG_ARABIC_SYRIA /;" d file: +SUBLANG_ARABIC_TUNISIA lib/intl/localename.c /^# define SUBLANG_ARABIC_TUNISIA /;" d file: +SUBLANG_ARABIC_UAE lib/intl/localename.c /^# define SUBLANG_ARABIC_UAE /;" d file: +SUBLANG_ARABIC_YEMEN lib/intl/localename.c /^# define SUBLANG_ARABIC_YEMEN /;" d file: +SUBLANG_AZERI_CYRILLIC lib/intl/localename.c /^# define SUBLANG_AZERI_CYRILLIC /;" d file: +SUBLANG_AZERI_LATIN lib/intl/localename.c /^# define SUBLANG_AZERI_LATIN /;" d file: +SUBLANG_CHINESE_MACAU lib/intl/localename.c /^# define SUBLANG_CHINESE_MACAU /;" d file: +SUBLANG_ENGLISH_BELIZE lib/intl/localename.c /^# define SUBLANG_ENGLISH_BELIZE /;" d file: +SUBLANG_ENGLISH_CARIBBEAN lib/intl/localename.c /^# define SUBLANG_ENGLISH_CARIBBEAN /;" d file: +SUBLANG_ENGLISH_JAMAICA lib/intl/localename.c /^# define SUBLANG_ENGLISH_JAMAICA /;" d file: +SUBLANG_ENGLISH_PHILIPPINES lib/intl/localename.c /^# define SUBLANG_ENGLISH_PHILIPPINES /;" d file: +SUBLANG_ENGLISH_SOUTH_AFRICA lib/intl/localename.c /^# define SUBLANG_ENGLISH_SOUTH_AFRICA /;" d file: +SUBLANG_ENGLISH_TRINIDAD lib/intl/localename.c /^# define SUBLANG_ENGLISH_TRINIDAD /;" d file: +SUBLANG_ENGLISH_ZIMBABWE lib/intl/localename.c /^# define SUBLANG_ENGLISH_ZIMBABWE /;" d file: +SUBLANG_FRENCH_LUXEMBOURG lib/intl/localename.c /^# define SUBLANG_FRENCH_LUXEMBOURG /;" d file: +SUBLANG_FRENCH_MONACO lib/intl/localename.c /^# define SUBLANG_FRENCH_MONACO /;" d file: +SUBLANG_GERMAN_LIECHTENSTEIN lib/intl/localename.c /^# define SUBLANG_GERMAN_LIECHTENSTEIN /;" d file: +SUBLANG_GERMAN_LUXEMBOURG lib/intl/localename.c /^# define SUBLANG_GERMAN_LUXEMBOURG /;" d file: +SUBLANG_KASHMIRI_INDIA lib/intl/localename.c /^# define SUBLANG_KASHMIRI_INDIA /;" d file: +SUBLANG_MALAY_BRUNEI_DARUSSALAM lib/intl/localename.c /^# define SUBLANG_MALAY_BRUNEI_DARUSSALAM /;" d file: +SUBLANG_MALAY_MALAYSIA lib/intl/localename.c /^# define SUBLANG_MALAY_MALAYSIA /;" d file: +SUBLANG_NEPALI_INDIA lib/intl/localename.c /^# define SUBLANG_NEPALI_INDIA /;" d file: +SUBLANG_SERBIAN_CYRILLIC lib/intl/localename.c /^# define SUBLANG_SERBIAN_CYRILLIC /;" d file: +SUBLANG_SERBIAN_LATIN lib/intl/localename.c /^# define SUBLANG_SERBIAN_LATIN /;" d file: +SUBLANG_SPANISH_ARGENTINA lib/intl/localename.c /^# define SUBLANG_SPANISH_ARGENTINA /;" d file: +SUBLANG_SPANISH_BOLIVIA lib/intl/localename.c /^# define SUBLANG_SPANISH_BOLIVIA /;" d file: +SUBLANG_SPANISH_CHILE lib/intl/localename.c /^# define SUBLANG_SPANISH_CHILE /;" d file: +SUBLANG_SPANISH_COLOMBIA lib/intl/localename.c /^# define SUBLANG_SPANISH_COLOMBIA /;" d file: +SUBLANG_SPANISH_COSTA_RICA lib/intl/localename.c /^# define SUBLANG_SPANISH_COSTA_RICA /;" d file: +SUBLANG_SPANISH_DOMINICAN_REPUBLIC lib/intl/localename.c /^# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC /;" d file: +SUBLANG_SPANISH_ECUADOR lib/intl/localename.c /^# define SUBLANG_SPANISH_ECUADOR /;" d file: +SUBLANG_SPANISH_EL_SALVADOR lib/intl/localename.c /^# define SUBLANG_SPANISH_EL_SALVADOR /;" d file: +SUBLANG_SPANISH_GUATEMALA lib/intl/localename.c /^# define SUBLANG_SPANISH_GUATEMALA /;" d file: +SUBLANG_SPANISH_HONDURAS lib/intl/localename.c /^# define SUBLANG_SPANISH_HONDURAS /;" d file: +SUBLANG_SPANISH_NICARAGUA lib/intl/localename.c /^# define SUBLANG_SPANISH_NICARAGUA /;" d file: +SUBLANG_SPANISH_PANAMA lib/intl/localename.c /^# define SUBLANG_SPANISH_PANAMA /;" d file: +SUBLANG_SPANISH_PARAGUAY lib/intl/localename.c /^# define SUBLANG_SPANISH_PARAGUAY /;" d file: +SUBLANG_SPANISH_PERU lib/intl/localename.c /^# define SUBLANG_SPANISH_PERU /;" d file: +SUBLANG_SPANISH_PUERTO_RICO lib/intl/localename.c /^# define SUBLANG_SPANISH_PUERTO_RICO /;" d file: +SUBLANG_SPANISH_URUGUAY lib/intl/localename.c /^# define SUBLANG_SPANISH_URUGUAY /;" d file: +SUBLANG_SPANISH_VENEZUELA lib/intl/localename.c /^# define SUBLANG_SPANISH_VENEZUELA /;" d file: +SUBLANG_SWEDISH_FINLAND lib/intl/localename.c /^# define SUBLANG_SWEDISH_FINLAND /;" d file: +SUBLANG_URDU_INDIA lib/intl/localename.c /^# define SUBLANG_URDU_INDIA /;" d file: +SUBLANG_URDU_PAKISTAN lib/intl/localename.c /^# define SUBLANG_URDU_PAKISTAN /;" d file: +SUBLANG_UZBEK_CYRILLIC lib/intl/localename.c /^# define SUBLANG_UZBEK_CYRILLIC /;" d file: +SUBLANG_UZBEK_LATIN lib/intl/localename.c /^# define SUBLANG_UZBEK_LATIN /;" d file: +SUBOVERFLOW include/typemax.h /^#define SUBOVERFLOW(/;" d +SUBSHELL_ASYNC command.h /^#define SUBSHELL_ASYNC /;" d +SUBSHELL_COM builtins_rust/kill/src/intercdep.rs /^pub type SUBSHELL_COM = subshell_com;$/;" t +SUBSHELL_COM builtins_rust/setattr/src/intercdep.rs /^pub type SUBSHELL_COM = subshell_com;$/;" t +SUBSHELL_COM command.h /^} SUBSHELL_COM;$/;" t typeref:struct:subshell_com +SUBSHELL_COM r_bash/src/lib.rs /^pub type SUBSHELL_COM = subshell_com;$/;" t +SUBSHELL_COM r_glob/src/lib.rs /^pub type SUBSHELL_COM = subshell_com;$/;" t +SUBSHELL_COM r_readline/src/lib.rs /^pub type SUBSHELL_COM = subshell_com;$/;" t +SUBSHELL_COMSUB builtins_rust/fc/src/lib.rs /^macro_rules! SUBSHELL_COMSUB {$/;" M +SUBSHELL_COMSUB command.h /^#define SUBSHELL_COMSUB /;" d +SUBSHELL_COPROC command.h /^#define SUBSHELL_COPROC /;" d +SUBSHELL_FORK command.h /^#define SUBSHELL_FORK /;" d +SUBSHELL_PAREN builtins_rust/common/src/command.rs /^macro_rules! SUBSHELL_PAREN {$/;" M +SUBSHELL_PAREN command.h /^#define SUBSHELL_PAREN /;" d +SUBSHELL_PIPE command.h /^#define SUBSHELL_PIPE /;" d +SUBSHELL_PROCSUB command.h /^#define SUBSHELL_PROCSUB /;" d +SUBSHELL_RESETTRAP command.h /^#define SUBSHELL_RESETTRAP /;" d +SUBST_FAILED lib/readline/histlib.h /^#define SUBST_FAILED /;" d +SUCCEEDED vendor/winapi/src/shared/winerror.rs /^pub fn SUCCEEDED(hr: HRESULT) -> bool {$/;" f +SUNOS_EXT lib/sh/strftime.c /^#define SUNOS_EXT /;" d file: +SUPPORT lib/glob/Makefile.in /^SUPPORT = Makefile ChangeLog $(DOCSUPPORT)$/;" m +SUPPORT lib/readline/Makefile.in /^SUPPORT = Makefile ChangeLog $(DOCSUPPORT) examples\/[-a-z.]*$/;" m +SUPPORT lib/sh/Makefile.in /^SUPPORT = Makefile$/;" m +SUPPORT lib/tilde/Makefile.in /^SUPPORT = Makefile ChangeLog $(DOCSUPPORT)$/;" m +SUPPORT_SRC Makefile.in /^SUPPORT_SRC = $(srcdir)\/support\/$/;" m +SVFUNC pcomplete.c /^typedef SHELL_VAR **SVFUNC ();$/;" t typeref:typename:SHELL_VAR ** ()() file: +SVR4 configure.ac /^ AC_DEFINE(SVR4) ;;$/;" d +SVR4 configure.ac /^sysv4*) AC_DEFINE(SVR4) ;;$/;" d +SVR4_2 configure.ac /^sysv4.2*) AC_DEFINE(SVR4_2)$/;" d +SVR5 configure.ac /^sysv5*) AC_DEFINE(SVR5) ;;$/;" d +SWAP lib/intl/gettextP.h /^# define SWAP(/;" d +SWAP lib/readline/rldefs.h /^# define SWAP(/;" d +SWAP_INT lib/sh/snprintf.c /^#define SWAP_INT(/;" d file: +SWORD vendor/winapi/src/um/sqltypes.rs /^pub type SWORD = c_short;$/;" t +SX_ARITHSUB subst.h /^#define SX_ARITHSUB /;" d +SX_COMMAND subst.h /^#define SX_COMMAND /;" d +SX_COMPLETE subst.h /^#define SX_COMPLETE /;" d +SX_NOALLOC subst.h /^#define SX_NOALLOC /;" d +SX_NOCTLESC subst.h /^#define SX_NOCTLESC /;" d +SX_NOESCCTLNUL subst.h /^#define SX_NOESCCTLNUL /;" d +SX_NOLONGJMP subst.h /^#define SX_NOLONGJMP /;" d +SX_POSIXEXP subst.h /^#define SX_POSIXEXP /;" d +SX_REQMATCH subst.h /^#define SX_REQMATCH /;" d +SX_STRIPDQ subst.h /^#define SX_STRIPDQ /;" d +SX_VARNAME subst.h /^#define SX_VARNAME /;" d +SX_WORD subst.h /^#define SX_WORD /;" d +SYNCHRONIZATION_BARRIER vendor/winapi/src/um/synchapi.rs /^pub type SYNCHRONIZATION_BARRIER = RTL_BARRIER;$/;" t +SYNSIZE mksyntax.c /^#define SYNSIZE /;" d file: +SYSDIR_DIRECTORY_ADMIN_APPLICATION vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_ADMIN_APPLICATION = 4,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_ALL_APPLICATIONS vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_ALL_APPLICATIONS = 100,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_ALL_LIBRARIES vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_ALL_LIBRARIES = 101,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_APPLICATION vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_APPLICATION = 1,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_APPLICATION_SUPPORT vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_APPLICATION_SUPPORT = 14,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_AUTOSAVED_INFORMATION vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_AUTOSAVED_INFORMATION = 11,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_CACHES vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_CACHES = 13,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_CORESERVICE vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_CORESERVICE = 10,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_DEMO_APPLICATION vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_DEMO_APPLICATION = 2,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_DESKTOP vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_DESKTOP = 12,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_DEVELOPER vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_DEVELOPER = 6,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_DEVELOPER_APPLICATION vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_DEVELOPER_APPLICATION = 3,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_DOCUMENT vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_DOCUMENT = 9,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_DOCUMENTATION vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_DOCUMENTATION = 8,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_DOWNLOADS vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_DOWNLOADS = 15,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_INPUT_METHODS vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_INPUT_METHODS = 16,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_LIBRARY vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_LIBRARY = 5,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_MOVIES vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_MOVIES = 17,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_MUSIC vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_MUSIC = 18,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_PICTURES vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_PICTURES = 19,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_PREFERENCE_PANES vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_PREFERENCE_PANES = 22,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_PRINTER_DESCRIPTION vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_PRINTER_DESCRIPTION = 20,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_SHARED_PUBLIC vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_SHARED_PUBLIC = 21,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DIRECTORY_USER vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DIRECTORY_USER = 7,$/;" e enum:sysdir_search_path_directory_t +SYSDIR_DOMAIN_MASK_ALL vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DOMAIN_MASK_ALL = 0x0ffff,$/;" e enum:sysdir_search_path_domain_mask_t +SYSDIR_DOMAIN_MASK_LOCAL vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DOMAIN_MASK_LOCAL = (1 << 1),$/;" e enum:sysdir_search_path_domain_mask_t +SYSDIR_DOMAIN_MASK_NETWORK vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DOMAIN_MASK_NETWORK = (1 << 2),$/;" e enum:sysdir_search_path_domain_mask_t +SYSDIR_DOMAIN_MASK_SYSTEM vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DOMAIN_MASK_SYSTEM = (1 << 3),$/;" e enum:sysdir_search_path_domain_mask_t +SYSDIR_DOMAIN_MASK_USER vendor/libc/src/unix/bsd/apple/mod.rs /^ SYSDIR_DOMAIN_MASK_USER = (1 << 0),$/;" e enum:sysdir_search_path_domain_mask_t +SYSLOG_FACILITY config-top.h /^# define SYSLOG_FACILITY /;" d +SYSLOG_LEVEL config-top.h /^# define SYSLOG_LEVEL /;" d +SYSLOG_MAXHDR bashhist.c /^#define SYSLOG_MAXHDR /;" d file: +SYSLOG_MAXLEN bashhist.c /^#define SYSLOG_MAXLEN /;" d file: +SYSLOG_MAXMSG bashhist.c /^#define SYSLOG_MAXMSG /;" d file: +SYSTEM_FLAGS Makefile.in /^SYSTEM_FLAGS = -DPROGRAM='"$(Program)"' -DCONF_HOSTTYPE='"$(Machine)"' -DCONF_OSTYPE='"$(OS)"' -/;" m +SYS_BASH_LOGOOUT builtins_rust/exit/src/lib.rs /^macro_rules! SYS_BASH_LOGOOUT {$/;" M +SYS_BASH_LOGOUT config-top.h /^#define SYS_BASH_LOGOUT /;" d +SYS_INPUTRC lib/readline/rlconf.h /^#define SYS_INPUTRC /;" d +SYS_PROFILE pathnames.h.in /^#define SYS_PROFILE /;" d file: +SYS_SIGLIST_DECLARED config-bot.h /^# define SYS_SIGLIST_DECLARED$/;" d +S_IEXEC builtins_rust/umask/src/lib.rs /^macro_rules! S_IEXEC {$/;" M +S_IEXEC include/posixstat.h /^# define S_IEXEC /;" d +S_IEXEC lib/readline/posixstat.h /^# define S_IEXEC /;" d +S_IFBLK include/posixstat.h /^#define S_IFBLK /;" d +S_IFBLK lib/readline/posixstat.h /^#define S_IFBLK /;" d +S_IFCHR include/posixstat.h /^#define S_IFCHR /;" d +S_IFCHR lib/readline/posixstat.h /^#define S_IFCHR /;" d +S_IFDIR include/posixstat.h /^# define S_IFDIR /;" d +S_IFDIR include/posixstat.h /^#define S_IFDIR /;" d +S_IFDIR lib/readline/posixstat.h /^# define S_IFDIR /;" d +S_IFDIR lib/readline/posixstat.h /^#define S_IFDIR /;" d +S_IFIFO include/posixstat.h /^#define S_IFIFO /;" d +S_IFIFO lib/readline/posixstat.h /^#define S_IFIFO /;" d +S_IFLNK include/posixstat.h /^#define S_IFLNK /;" d +S_IFLNK lib/readline/posixstat.h /^#define S_IFLNK /;" d +S_IFMT include/posixstat.h /^# define S_IFMT /;" d +S_IFMT include/posixstat.h /^#define S_IFMT /;" d +S_IFMT lib/readline/posixstat.h /^# define S_IFMT /;" d +S_IFMT lib/readline/posixstat.h /^#define S_IFMT /;" d +S_IFREG include/posixstat.h /^#define S_IFREG /;" d +S_IFREG lib/readline/posixstat.h /^#define S_IFREG /;" d +S_IFSOCK include/posixstat.h /^#define S_IFSOCK /;" d +S_IFSOCK lib/readline/posixstat.h /^#define S_IFSOCK /;" d +S_IREAD builtins_rust/umask/src/lib.rs /^macro_rules! S_IREAD {$/;" M +S_IREAD include/posixstat.h /^# define S_IREAD /;" d +S_IREAD lib/readline/posixstat.h /^# define S_IREAD /;" d +S_IRGRP builtins_rust/umask/src/lib.rs /^macro_rules! S_IRGRP {$/;" M +S_IRGRP include/posixstat.h /^# define S_IRGRP /;" d +S_IRGRP lib/readline/posixstat.h /^# define S_IRGRP /;" d +S_IROTH builtins_rust/umask/src/lib.rs /^macro_rules! S_IROTH {$/;" M +S_IROTH include/posixstat.h /^# define S_IROTH /;" d +S_IROTH lib/readline/posixstat.h /^# define S_IROTH /;" d +S_IRUGO builtins_rust/umask/src/lib.rs /^macro_rules! S_IRUGO {$/;" M +S_IRUGO include/posixstat.h /^#define S_IRUGO /;" d +S_IRUGO lib/readline/posixstat.h /^#define S_IRUGO /;" d +S_IRUSR builtins_rust/umask/src/lib.rs /^macro_rules! S_IRUSR {$/;" M +S_IRUSR include/posixstat.h /^# define S_IRUSR /;" d +S_IRUSR lib/readline/posixstat.h /^# define S_IRUSR /;" d +S_IRWXG builtins_rust/umask/src/lib.rs /^macro_rules! S_IRWXG {$/;" M +S_IRWXG include/posixstat.h /^# define S_IRWXG /;" d +S_IRWXG include/posixstat.h /^# define S_IRWXG /;" d +S_IRWXG lib/readline/posixstat.h /^# define S_IRWXG /;" d +S_IRWXG lib/readline/posixstat.h /^# define S_IRWXG /;" d +S_IRWXO builtins_rust/umask/src/lib.rs /^macro_rules! S_IRWXO {$/;" M +S_IRWXO include/posixstat.h /^# define S_IRWXO /;" d +S_IRWXO include/posixstat.h /^# define S_IRWXO /;" d +S_IRWXO lib/readline/posixstat.h /^# define S_IRWXO /;" d +S_IRWXO lib/readline/posixstat.h /^# define S_IRWXO /;" d +S_IRWXU builtins_rust/umask/src/lib.rs /^macro_rules! S_IRWXU {$/;" M +S_IRWXU include/posixstat.h /^# define S_IRWXU /;" d +S_IRWXU lib/readline/posixstat.h /^# define S_IRWXU /;" d +S_ISBLK include/posixstat.h /^#define S_ISBLK(/;" d +S_ISBLK lib/readline/posixstat.h /^#define S_ISBLK(/;" d +S_ISCHR include/posixstat.h /^#define S_ISCHR(/;" d +S_ISCHR lib/readline/posixstat.h /^#define S_ISCHR(/;" d +S_ISDIR include/posixstat.h /^#define S_ISDIR(/;" d +S_ISDIR lib/readline/colors.c /^# define S_ISDIR(/;" d file: +S_ISDIR lib/readline/posixstat.h /^#define S_ISDIR(/;" d +S_ISDIR lib/readline/rldefs.h /^# define S_ISDIR(/;" d +S_ISFIFO include/posixstat.h /^#define S_ISFIFO(/;" d +S_ISFIFO lib/readline/posixstat.h /^#define S_ISFIFO(/;" d +S_ISLNK include/posixstat.h /^#define S_ISLNK(/;" d +S_ISLNK lib/readline/posixstat.h /^#define S_ISLNK(/;" d +S_ISREG include/posixstat.h /^#define S_ISREG(/;" d +S_ISREG lib/readline/posixstat.h /^#define S_ISREG(/;" d +S_ISSOCK include/posixstat.h /^#define S_ISSOCK(/;" d +S_ISSOCK lib/readline/posixstat.h /^#define S_ISSOCK(/;" d +S_IWGRP builtins_rust/umask/src/lib.rs /^macro_rules! S_IWGRP {$/;" M +S_IWGRP include/posixstat.h /^# define S_IWGRP /;" d +S_IWGRP lib/readline/posixstat.h /^# define S_IWGRP /;" d +S_IWOTH builtins_rust/umask/src/lib.rs /^macro_rules! S_IWOTH {$/;" M +S_IWOTH include/posixstat.h /^# define S_IWOTH /;" d +S_IWOTH lib/readline/posixstat.h /^# define S_IWOTH /;" d +S_IWRITE builtins_rust/umask/src/lib.rs /^macro_rules! S_IWRITE {$/;" M +S_IWRITE include/posixstat.h /^# define S_IWRITE /;" d +S_IWRITE lib/readline/posixstat.h /^# define S_IWRITE /;" d +S_IWUGO builtins_rust/umask/src/lib.rs /^macro_rules! S_IWUGO {$/;" M +S_IWUGO include/posixstat.h /^#define S_IWUGO /;" d +S_IWUGO lib/readline/posixstat.h /^#define S_IWUGO /;" d +S_IWUSR builtins_rust/umask/src/lib.rs /^macro_rules! S_IWUSR {$/;" M +S_IWUSR include/posixstat.h /^# define S_IWUSR /;" d +S_IWUSR lib/readline/posixstat.h /^# define S_IWUSR /;" d +S_IXGRP builtins_rust/umask/src/lib.rs /^macro_rules! S_IXGRP {$/;" M +S_IXGRP include/posixstat.h /^# define S_IXGRP /;" d +S_IXGRP lib/readline/posixstat.h /^# define S_IXGRP /;" d +S_IXOTH builtins_rust/umask/src/lib.rs /^macro_rules! S_IXOTH {$/;" M +S_IXOTH include/posixstat.h /^# define S_IXOTH /;" d +S_IXOTH lib/readline/posixstat.h /^# define S_IXOTH /;" d +S_IXUGO builtins_rust/umask/src/lib.rs /^macro_rules! S_IXUGO {$/;" M +S_IXUGO include/posixstat.h /^#define S_IXUGO /;" d +S_IXUGO lib/readline/colors.h /^# define S_IXUGO /;" d +S_IXUGO lib/readline/posixstat.h /^#define S_IXUGO /;" d +S_IXUSR builtins_rust/umask/src/lib.rs /^macro_rules! S_IXUSR {$/;" M +S_IXUSR include/posixstat.h /^# define S_IXUSR /;" d +S_IXUSR lib/readline/posixstat.h /^# define S_IXUSR /;" d +SafeArrayAccessData vendor/winapi/src/um/oleauto.rs /^ pub fn SafeArrayAccessData($/;" f +SafeArrayCreateVector vendor/winapi/src/um/oleauto.rs /^ pub fn SafeArrayCreateVector($/;" f +SafeArrayDestroy vendor/winapi/src/um/oleauto.rs /^ pub fn SafeArrayDestroy($/;" f +SafeArrayGetLBound vendor/winapi/src/um/oleauto.rs /^ pub fn SafeArrayGetLBound($/;" f +SafeArrayGetUBound vendor/winapi/src/um/oleauto.rs /^ pub fn SafeArrayGetUBound($/;" f +SafeArrayUnaccessData vendor/winapi/src/um/oleauto.rs /^ pub fn SafeArrayUnaccessData($/;" f +SaferCloseLevel vendor/winapi/src/um/winsafer.rs /^ pub fn SaferCloseLevel($/;" f +SaferComputeTokenFromLevel vendor/winapi/src/um/winsafer.rs /^ pub fn SaferComputeTokenFromLevel($/;" f +SaferCreateLevel vendor/winapi/src/um/winsafer.rs /^ pub fn SaferCreateLevel($/;" f +SaferGetLevelInformation vendor/winapi/src/um/winsafer.rs /^ pub fn SaferGetLevelInformation($/;" f +SaferGetPolicyInformation vendor/winapi/src/um/winsafer.rs /^ pub fn SaferGetPolicyInformation($/;" f +SaferIdentifyLevel vendor/winapi/src/um/winsafer.rs /^ pub fn SaferIdentifyLevel($/;" f +SaferRecordEventLogEntry vendor/winapi/src/um/winsafer.rs /^ pub fn SaferRecordEventLogEntry($/;" f +SaferSetLevelInformation vendor/winapi/src/um/winsafer.rs /^ pub fn SaferSetLevelInformation($/;" f +SaferSetPolicyInformation vendor/winapi/src/um/winsafer.rs /^ pub fn SaferSetPolicyInformation($/;" f +SaferiIsExecutableFileType vendor/winapi/src/um/winsafer.rs /^ pub fn SaferiIsExecutableFileType($/;" f +Sarg builtins_rust/complete/src/lib.rs /^pub static mut Sarg: *mut c_char = std::ptr::null_mut();$/;" v +SaveCurrentMonitorSettings vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn SaveCurrentMonitorSettings($/;" f +SaveCurrentSettings vendor/winapi/src/um/lowlevelmonitorconfigurationapi.rs /^ pub fn SaveCurrentSettings($/;" f +SaveDC vendor/winapi/src/um/wingdi.rs /^ pub fn SaveDC($/;" f +ScaleViewportExtEx vendor/winapi/src/um/wingdi.rs /^ pub fn ScaleViewportExtEx($/;" f +ScaleWindowExtEx vendor/winapi/src/um/wingdi.rs /^ pub fn ScaleWindowExtEx($/;" f +Scan vendor/futures-util/src/stream/stream/scan.rs /^impl FusedStream for Scan$/;" c +Scan vendor/futures-util/src/stream/stream/scan.rs /^impl Scan$/;" c +Scan vendor/futures-util/src/stream/stream/scan.rs /^impl Stream for Scan$/;" c +Scan vendor/futures-util/src/stream/stream/scan.rs /^impl Sink for Scan$/;" c +Scan vendor/futures-util/src/stream/stream/scan.rs /^impl fmt::Debug for Scan$/;" c +Scan vendor/futures-util/src/stream/stream/scan.rs /^impl Scan {$/;" c +SceKernelAlarmHandler vendor/libc/src/psp.rs /^pub type SceKernelAlarmHandler = unsafe extern "C" fn(common: *mut c_void) -> u32;$/;" t +SceKernelCallbackFunction vendor/libc/src/psp.rs /^pub type SceKernelCallbackFunction =$/;" t +SceKernelThreadEntry vendor/libc/src/psp.rs /^pub type SceKernelThreadEntry = unsafe extern "C" fn(args: usize, argp: *mut c_void) -> i32;$/;" t +SceKernelThreadEventHandler vendor/libc/src/psp.rs /^pub type SceKernelThreadEventHandler =$/;" t +SceKernelVTimerHandler vendor/libc/src/psp.rs /^pub type SceKernelVTimerHandler = unsafe extern "C" fn($/;" t +SceKernelVTimerHandlerWide vendor/libc/src/psp.rs /^pub type SceKernelVTimerHandlerWide =$/;" t +SceMpegRingbufferCb vendor/libc/src/psp.rs /^pub type SceMpegRingbufferCb =$/;" t +SceNetAdhocctlHandler vendor/libc/src/psp.rs /^pub type SceNetAdhocctlHandler =$/;" t +SceNetApctlHandler vendor/libc/src/psp.rs /^pub type SceNetApctlHandler = ::Option<$/;" t +ScheduleJob vendor/winapi/src/um/winspool.rs /^ pub fn ScheduleJob($/;" f +Scope vendor/bitflags/CODE_OF_CONDUCT.md /^## Scope$/;" s chapter:Contributor Covenant Code of Conduct +Scope vendor/fluent-bundle/src/resolver/scope.rs /^impl<'scope, 'errors, R, M> Scope<'scope, 'errors, R, M> {$/;" c +Scope vendor/fluent-bundle/src/resolver/scope.rs /^pub struct Scope<'scope, 'errors, R, M> {$/;" s +ScreenToClient vendor/winapi/src/um/winuser.rs /^ pub fn ScreenToClient($/;" f +Script vendor/unic-langid-impl/src/subtags/script.rs /^impl FromStr for Script {$/;" c +Script vendor/unic-langid-impl/src/subtags/script.rs /^impl PartialEq<&str> for Script {$/;" c +Script vendor/unic-langid-impl/src/subtags/script.rs /^impl Script {$/;" c +Script vendor/unic-langid-impl/src/subtags/script.rs /^impl std::fmt::Display for Script {$/;" c +Script vendor/unic-langid-impl/src/subtags/script.rs /^pub struct Script(TinyStr4);$/;" s +ScriptApplyDigitSubstitution vendor/winapi/src/um/usp10.rs /^ pub fn ScriptApplyDigitSubstitution($/;" f +ScriptApplyLogicalWidth vendor/winapi/src/um/usp10.rs /^ pub fn ScriptApplyLogicalWidth($/;" f +ScriptBreak vendor/winapi/src/um/usp10.rs /^ pub fn ScriptBreak($/;" f +ScriptCPtoX vendor/winapi/src/um/usp10.rs /^ pub fn ScriptCPtoX($/;" f +ScriptCacheGetHeight vendor/winapi/src/um/usp10.rs /^ pub fn ScriptCacheGetHeight($/;" f +ScriptFreeCache vendor/winapi/src/um/usp10.rs /^ pub fn ScriptFreeCache($/;" f +ScriptGetCMap vendor/winapi/src/um/usp10.rs /^ pub fn ScriptGetCMap($/;" f +ScriptGetFontAlternateGlyphs vendor/winapi/src/um/usp10.rs /^ pub fn ScriptGetFontAlternateGlyphs($/;" f +ScriptGetFontFeatureTags vendor/winapi/src/um/usp10.rs /^ pub fn ScriptGetFontFeatureTags($/;" f +ScriptGetFontLanguageTags vendor/winapi/src/um/usp10.rs /^ pub fn ScriptGetFontLanguageTags($/;" f +ScriptGetFontProperties vendor/winapi/src/um/usp10.rs /^ pub fn ScriptGetFontProperties($/;" f +ScriptGetFontScriptTags vendor/winapi/src/um/usp10.rs /^ pub fn ScriptGetFontScriptTags($/;" f +ScriptGetGlyphABCWidth vendor/winapi/src/um/usp10.rs /^ pub fn ScriptGetGlyphABCWidth($/;" f +ScriptGetLogicalWidths vendor/winapi/src/um/usp10.rs /^ pub fn ScriptGetLogicalWidths($/;" f +ScriptGetProperties vendor/winapi/src/um/usp10.rs /^ pub fn ScriptGetProperties($/;" f +ScriptIsComplex vendor/winapi/src/um/usp10.rs /^ pub fn ScriptIsComplex($/;" f +ScriptItemize vendor/winapi/src/um/usp10.rs /^ pub fn ScriptItemize($/;" f +ScriptItemizeOpenType vendor/winapi/src/um/usp10.rs /^ pub fn ScriptItemizeOpenType($/;" f +ScriptJustify vendor/winapi/src/um/usp10.rs /^ pub fn ScriptJustify($/;" f +ScriptLayout vendor/winapi/src/um/usp10.rs /^ pub fn ScriptLayout($/;" f +ScriptPlace vendor/winapi/src/um/usp10.rs /^ pub fn ScriptPlace($/;" f +ScriptPlaceOpenType vendor/winapi/src/um/usp10.rs /^ pub fn ScriptPlaceOpenType($/;" f +ScriptPositionSingleGlyph vendor/winapi/src/um/usp10.rs /^ pub fn ScriptPositionSingleGlyph($/;" f +ScriptRecordDigitSubstitution vendor/winapi/src/um/usp10.rs /^ pub fn ScriptRecordDigitSubstitution($/;" f +ScriptShape vendor/winapi/src/um/usp10.rs /^ pub fn ScriptShape($/;" f +ScriptShapeOpenType vendor/winapi/src/um/usp10.rs /^ pub fn ScriptShapeOpenType($/;" f +ScriptStringAnalyse vendor/winapi/src/um/usp10.rs /^ pub fn ScriptStringAnalyse($/;" f +ScriptStringCPtoX vendor/winapi/src/um/usp10.rs /^ pub fn ScriptStringCPtoX($/;" f +ScriptStringFree vendor/winapi/src/um/usp10.rs /^ pub fn ScriptStringFree($/;" f +ScriptStringGetLogicalWidths vendor/winapi/src/um/usp10.rs /^ pub fn ScriptStringGetLogicalWidths($/;" f +ScriptStringGetOrder vendor/winapi/src/um/usp10.rs /^ pub fn ScriptStringGetOrder($/;" f +ScriptStringOut vendor/winapi/src/um/usp10.rs /^ pub fn ScriptStringOut($/;" f +ScriptStringValidate vendor/winapi/src/um/usp10.rs /^ pub fn ScriptStringValidate($/;" f +ScriptStringXtoCP vendor/winapi/src/um/usp10.rs /^ pub fn ScriptStringXtoCP($/;" f +ScriptString_pLogAttr vendor/winapi/src/um/usp10.rs /^ pub fn ScriptString_pLogAttr($/;" f +ScriptString_pSize vendor/winapi/src/um/usp10.rs /^ pub fn ScriptString_pSize($/;" f +ScriptString_pcOutChars vendor/winapi/src/um/usp10.rs /^ pub fn ScriptString_pcOutChars($/;" f +ScriptSubstituteSingleGlyph vendor/winapi/src/um/usp10.rs /^ pub fn ScriptSubstituteSingleGlyph($/;" f +ScriptTextOut vendor/winapi/src/um/usp10.rs /^ pub fn ScriptTextOut($/;" f +ScriptXtoCP vendor/winapi/src/um/usp10.rs /^ pub fn ScriptXtoCP($/;" f +ScrollConsoleScreenBufferA vendor/winapi/src/um/wincon.rs /^ pub fn ScrollConsoleScreenBufferA($/;" f +ScrollConsoleScreenBufferW vendor/winapi/src/um/wincon.rs /^ pub fn ScrollConsoleScreenBufferW($/;" f +ScrollDC vendor/winapi/src/um/winuser.rs /^ pub fn ScrollDC($/;" f +ScrollWindow vendor/winapi/src/um/winuser.rs /^ pub fn ScrollWindow($/;" f +ScrollWindowEx vendor/winapi/src/um/winuser.rs /^ pub fn ScrollWindowEx($/;" f +Sealed vendor/futures-core/src/future.rs /^ pub trait Sealed {}$/;" i module:private_try_future +Sealed vendor/futures-core/src/stream.rs /^ pub trait Sealed {}$/;" i module:private_try_stream +Sealed vendor/quote/src/ext.rs /^ pub trait Sealed {}$/;" i module:private +Sealed vendor/syn/src/ext.rs /^ pub trait Sealed {}$/;" i module:private +Sealed vendor/syn/src/sealed.rs /^ pub trait Sealed: Copy {}$/;" i module:lookahead +Sealed vendor/syn/src/token.rs /^ pub trait Sealed {}$/;" i module:private +Sealed vendor/thiserror/src/aserror.rs /^pub trait Sealed {}$/;" i +Sealed vendor/thiserror/src/provide.rs /^pub trait Sealed {}$/;" i +SearchPathA vendor/winapi/src/um/processenv.rs /^ pub fn SearchPathA($/;" f +SearchPathW vendor/winapi/src/um/processenv.rs /^ pub fn SearchPathW($/;" f +SearchTest vendor/memchr/src/memmem/mod.rs /^ type SearchTest =$/;" t module:testsimples +SearchTreeForFile vendor/winapi/src/um/dbghelp.rs /^ pub fn SearchTreeForFile($/;" f +SearchTreeForFileW vendor/winapi/src/um/dbghelp.rs /^ pub fn SearchTreeForFileW($/;" f +Searcher vendor/memchr/src/memmem/mod.rs /^impl<'n> Searcher<'n> {$/;" c +Searcher vendor/memchr/src/memmem/mod.rs /^struct Searcher<'n> {$/;" s +SearcherConfig vendor/memchr/src/memmem/mod.rs /^struct SearcherConfig {$/;" s +SearcherKind vendor/memchr/src/memmem/mod.rs /^enum SearcherKind {$/;" g +SearcherRev vendor/memchr/src/memmem/mod.rs /^impl<'n> SearcherRev<'n> {$/;" c +SearcherRev vendor/memchr/src/memmem/mod.rs /^struct SearcherRev<'n> {$/;" s +SearcherRevKind vendor/memchr/src/memmem/mod.rs /^enum SearcherRevKind {$/;" g +Sec2NextNode support/texi2html /^sub Sec2NextNode$/;" s +Sec2PrevNode support/texi2html /^sub Sec2PrevNode$/;" s +Sec2UpNode support/texi2html /^sub Sec2UpNode$/;" s +SecPkgContext_DatagramSizes vendor/winapi/src/shared/sspi.rs /^pub type SecPkgContext_DatagramSizes = SecPkgContext_StreamSizes;$/;" t +SecPkgContext_LocalCredenitalInfo vendor/winapi/src/um/schannel.rs /^pub type SecPkgContext_LocalCredenitalInfo = SecPkgContext_LocalCredentialInfo;$/;" t +SecPkgContext_RemoteCredenitalInfo vendor/winapi/src/um/schannel.rs /^pub type SecPkgContext_RemoteCredenitalInfo = SecPkgContext_RemoteCredentialInfo;$/;" t +SeciIsProtectedUser vendor/winapi/src/um/ntlsa.rs /^ pub fn SeciIsProtectedUser($/;" f +Security vendor/nix/src/sys/socket/addr.rs /^ Security = libc::AF_SECURITY,$/;" e enum:AddressFamily +SeeKRelative vendor/futures-util/src/io/buf_reader.rs /^impl Future for SeeKRelative<'_, R>$/;" c +SeeKRelative vendor/futures-util/src/io/buf_reader.rs /^pub struct SeeKRelative<'a, R> {$/;" s +Seek vendor/futures-util/src/io/seek.rs /^impl<'a, S: AsyncSeek + ?Sized + Unpin> Seek<'a, S> {$/;" c +Seek vendor/futures-util/src/io/seek.rs /^impl Unpin for Seek<'_, S> {}$/;" c +Seek vendor/futures-util/src/io/seek.rs /^impl Future for Seek<'_, S> {$/;" c +Seek vendor/futures-util/src/io/seek.rs /^pub struct Seek<'a, S: ?Sized> {$/;" s +Select command.h /^ struct select_com *Select;$/;" m union:command::__anon3aaf009a020a typeref:struct:select_com * +Select vendor/fluent-syntax/src/ast/mod.rs /^ Select {$/;" e enum:Expression +Select vendor/futures-macro/src/select.rs /^impl Parse for Select {$/;" c +Select vendor/futures-macro/src/select.rs /^struct Select {$/;" s +Select vendor/futures-util/src/future/select.rs /^impl FusedFuture for Select$/;" c +Select vendor/futures-util/src/future/select.rs /^impl Future for Select$/;" c +Select vendor/futures-util/src/future/select.rs /^impl Unpin for Select {}$/;" c +Select vendor/futures-util/src/future/select.rs /^pub struct Select {$/;" s +Select vendor/futures-util/src/stream/select.rs /^impl FusedStream for Select$/;" c +Select vendor/futures-util/src/stream/select.rs /^impl Select {$/;" c +Select vendor/futures-util/src/stream/select.rs /^impl Stream for Select$/;" c +SelectAll vendor/futures-util/src/future/select_all.rs /^impl FromIterator for SelectAll {$/;" c +SelectAll vendor/futures-util/src/future/select_all.rs /^impl Future for SelectAll {$/;" c +SelectAll vendor/futures-util/src/future/select_all.rs /^impl Unpin for SelectAll {}$/;" c +SelectAll vendor/futures-util/src/future/select_all.rs /^impl SelectAll {$/;" c +SelectAll vendor/futures-util/src/future/select_all.rs /^pub struct SelectAll {$/;" s +SelectAll vendor/futures-util/src/stream/select_all.rs /^impl<'a, St: Stream + Unpin> IntoIterator for &'a SelectAll {$/;" c +SelectAll vendor/futures-util/src/stream/select_all.rs /^impl<'a, St: Stream + Unpin> IntoIterator for &'a mut SelectAll {$/;" c +SelectAll vendor/futures-util/src/stream/select_all.rs /^impl Debug for SelectAll {$/;" c +SelectAll vendor/futures-util/src/stream/select_all.rs /^impl Default for SelectAll {$/;" c +SelectAll vendor/futures-util/src/stream/select_all.rs /^impl Extend for SelectAll {$/;" c +SelectAll vendor/futures-util/src/stream/select_all.rs /^impl FromIterator for SelectAll {$/;" c +SelectAll vendor/futures-util/src/stream/select_all.rs /^impl FusedStream for SelectAll {$/;" c +SelectAll vendor/futures-util/src/stream/select_all.rs /^impl IntoIterator for SelectAll {$/;" c +SelectAll vendor/futures-util/src/stream/select_all.rs /^impl SelectAll {$/;" c +SelectAll vendor/futures-util/src/stream/select_all.rs /^impl Stream for SelectAll {$/;" c +SelectClipPath vendor/winapi/src/um/wingdi.rs /^ pub fn SelectClipPath($/;" f +SelectClipRgn vendor/winapi/src/um/wingdi.rs /^ pub fn SelectClipRgn($/;" f +SelectNextSome vendor/futures-util/src/stream/stream/select_next_some.rs /^impl<'a, St: ?Sized> SelectNextSome<'a, St> {$/;" c +SelectNextSome vendor/futures-util/src/stream/stream/select_next_some.rs /^impl FusedFuture for SelectNextSome<'_, St> {$/;" c +SelectNextSome vendor/futures-util/src/stream/stream/select_next_some.rs /^impl Future for SelectNextSome<'_, St> {$/;" c +SelectNextSome vendor/futures-util/src/stream/stream/select_next_some.rs /^pub struct SelectNextSome<'a, St: ?Sized> {$/;" s +SelectObject vendor/winapi/src/um/wingdi.rs /^ pub fn SelectObject($/;" f +SelectOk vendor/futures-util/src/future/select_ok.rs /^impl FromIterator for SelectOk {$/;" c +SelectOk vendor/futures-util/src/future/select_ok.rs /^impl Future for SelectOk {$/;" c +SelectOk vendor/futures-util/src/future/select_ok.rs /^impl Unpin for SelectOk {}$/;" c +SelectOk vendor/futures-util/src/future/select_ok.rs /^pub struct SelectOk {$/;" s +SelectPalette vendor/winapi/src/um/wingdi.rs /^ pub fn SelectPalette($/;" f +SelectWithStrategy vendor/futures-util/src/stream/select_with_strategy.rs /^impl FusedStream for SelectWithStrategy$/;" c +SelectWithStrategy vendor/futures-util/src/stream/select_with_strategy.rs /^impl SelectWithStrategy {$/;" c +SelectWithStrategy vendor/futures-util/src/stream/select_with_strategy.rs /^impl Stream for SelectWithStrategy$/;" c +SelectWithStrategy vendor/futures-util/src/stream/select_with_strategy.rs /^impl fmt::Debug for SelectWithStrategy$/;" c +SelfTrait vendor/async-trait/tests/test.rs /^ trait SelfTrait {$/;" i module:drop_order +SelfWaking vendor/futures-executor/tests/local_pool.rs /^impl Future for SelfWaking {$/;" c +SelfWaking vendor/futures-executor/tests/local_pool.rs /^struct SelfWaking {$/;" s +Send vendor/fluent-bundle/src/types/mod.rs /^impl PartialEq for dyn FluentType + Send {$/;" c +Send vendor/futures-util/src/sink/send.rs /^impl<'a, Si: Sink + Unpin + ?Sized, Item> Send<'a, Si, Item> {$/;" c +Send vendor/futures-util/src/sink/send.rs /^impl + Unpin + ?Sized, Item> Future for Send<'_, Si, Item> {$/;" c +Send vendor/futures-util/src/sink/send.rs /^impl Unpin for Send<'_, Si, Item> {}$/;" c +Send vendor/futures-util/src/sink/send.rs /^pub struct Send<'a, Si: ?Sized, Item> {$/;" s +SendARP vendor/winapi/src/um/iphlpapi.rs /^ pub fn SendARP($/;" f +SendAll vendor/futures-util/src/sink/send_all.rs /^impl<'a, Si, St, Ok, Error> SendAll<'a, Si, St>$/;" c +SendAll vendor/futures-util/src/sink/send_all.rs /^impl Future for SendAll<'_, Si, St>$/;" c +SendAll vendor/futures-util/src/sink/send_all.rs /^impl Unpin for SendAll<'_, Si, St>$/;" c +SendAll vendor/futures-util/src/sink/send_all.rs /^impl fmt::Debug for SendAll<'_, Si, St>$/;" c +SendAll vendor/futures-util/src/sink/send_all.rs /^pub struct SendAll<'a, Si, St>$/;" s +SendDlgItemMessageA vendor/winapi/src/um/winuser.rs /^ pub fn SendDlgItemMessageA($/;" f +SendDlgItemMessageW vendor/winapi/src/um/winuser.rs /^ pub fn SendDlgItemMessageW($/;" f +SendError vendor/futures-channel/src/mpsc/mod.rs /^impl SendError {$/;" c +SendError vendor/futures-channel/src/mpsc/mod.rs /^impl fmt::Display for SendError {$/;" c +SendError vendor/futures-channel/src/mpsc/mod.rs /^impl std::error::Error for SendError {}$/;" c +SendError vendor/futures-channel/src/mpsc/mod.rs /^pub struct SendError {$/;" s +SendErrorKind vendor/futures-channel/src/mpsc/mod.rs /^enum SendErrorKind {$/;" g +SendFuture vendor/futures/tests/auto_traits.rs /^pub type SendFuture = Pin + Send>>;$/;" t +SendInput vendor/winapi/src/um/winuser.rs /^ pub fn SendInput($/;" f +SendMessageA vendor/winapi/src/um/winuser.rs /^ pub fn SendMessageA($/;" f +SendMessageCallbackA vendor/winapi/src/um/winuser.rs /^ pub fn SendMessageCallbackA($/;" f +SendMessageCallbackW vendor/winapi/src/um/winuser.rs /^ pub fn SendMessageCallbackW($/;" f +SendMessageTimeoutA vendor/winapi/src/um/winuser.rs /^ pub fn SendMessageTimeoutA($/;" f +SendMessageTimeoutW vendor/winapi/src/um/winuser.rs /^ pub fn SendMessageTimeoutW($/;" f +SendMessageW vendor/winapi/src/um/winuser.rs /^ pub fn SendMessageW($/;" f +SendMsg vendor/futures-util/src/future/future/remote_handle.rs /^type SendMsg = Result<::Output, Box<(dyn Any + Send + 'static)>>;$/;" t +SendNotifyMessageA vendor/winapi/src/um/winuser.rs /^ pub fn SendNotifyMessageA($/;" f +SendNotifyMessageW vendor/winapi/src/um/winuser.rs /^ pub fn SendNotifyMessageW($/;" f +SendSink vendor/futures/tests/auto_traits.rs /^pub type SendSink = Pin + Send>>;$/;" t +SendStream vendor/futures/tests/auto_traits.rs /^pub type SendStream = Pin + Send>>;$/;" t +SendTryFuture vendor/futures/tests/auto_traits.rs /^pub type SendTryFuture = SendFuture>;$/;" t +SendTryStream vendor/futures/tests/auto_traits.rs /^pub type SendTryStream = SendStream>;$/;" t +Sender vendor/futures-channel/src/mpsc/mod.rs /^impl Clone for Sender {$/;" c +Sender vendor/futures-channel/src/mpsc/mod.rs /^impl Sender {$/;" c +Sender vendor/futures-channel/src/mpsc/mod.rs /^pub struct Sender(Option>);$/;" s +Sender vendor/futures-channel/src/mpsc/sink_impl.rs /^impl Sink for Sender {$/;" c +Sender vendor/futures-channel/src/oneshot.rs /^impl fmt::Debug for Sender {$/;" c +Sender vendor/futures-channel/src/oneshot.rs /^impl Drop for Sender {$/;" c +Sender vendor/futures-channel/src/oneshot.rs /^impl Sender {$/;" c +Sender vendor/futures-channel/src/oneshot.rs /^impl Unpin for Sender {}$/;" c +Sender vendor/futures-channel/src/oneshot.rs /^pub struct Sender {$/;" s +Sender vendor/futures-channel/tests/mpsc.rs /^impl AssertSend for mpsc::Sender {}$/;" c +SenderTask vendor/futures-channel/src/mpsc/mod.rs /^impl SenderTask {$/;" c +SenderTask vendor/futures-channel/src/mpsc/mod.rs /^struct SenderTask {$/;" s +SeqPacket vendor/nix/src/sys/socket/mod.rs /^ SeqPacket = libc::SOCK_SEQPACKET,$/;" e enum:SockType +Service vendor/pin-project-lite/tests/test.rs /^ trait Service {$/;" i function:pinned_drop +Set vendor/nix/src/sys/socket/sockopt.rs /^trait Set<'a, T> {$/;" i +SetAbortProc vendor/winapi/src/um/wingdi.rs /^ pub fn SetAbortProc($/;" f +SetAclInformation vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetAclInformation($/;" f +SetActivePwrScheme vendor/winapi/src/um/powrprof.rs /^ pub fn SetActivePwrScheme($/;" f +SetActiveWindow vendor/winapi/src/um/winuser.rs /^ pub fn SetActiveWindow($/;" f +SetAddrInfoExA vendor/winapi/src/um/ws2tcpip.rs /^ pub fn SetAddrInfoExA($/;" f +SetAddrInfoExW vendor/winapi/src/um/ws2tcpip.rs /^ pub fn SetAddrInfoExW($/;" f +SetArcDirection vendor/winapi/src/um/wingdi.rs /^ pub fn SetArcDirection($/;" f +SetBitmapBits vendor/winapi/src/um/wingdi.rs /^ pub fn SetBitmapBits($/;" f +SetBitmapDimensionEx vendor/winapi/src/um/wingdi.rs /^ pub fn SetBitmapDimensionEx($/;" f +SetBkColor vendor/winapi/src/um/wingdi.rs /^ pub fn SetBkColor($/;" f +SetBkMode vendor/winapi/src/um/wingdi.rs /^ pub fn SetBkMode($/;" f +SetBool vendor/nix/src/sys/socket/sockopt.rs /^impl<'a> Set<'a, bool> for SetBool {$/;" c +SetBool vendor/nix/src/sys/socket/sockopt.rs /^struct SetBool {$/;" s +SetBoundsRect vendor/winapi/src/um/wingdi.rs /^ pub fn SetBoundsRect($/;" f +SetBrushOrgEx vendor/winapi/src/um/wingdi.rs /^ pub fn SetBrushOrgEx($/;" f +SetCachedSigningLevel vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetCachedSigningLevel($/;" f +SetCalendarInfoA vendor/winapi/src/um/winnls.rs /^ pub fn SetCalendarInfoA($/;" f +SetCalendarInfoW vendor/winapi/src/um/winnls.rs /^ pub fn SetCalendarInfoW($/;" f +SetCapture vendor/winapi/src/um/winuser.rs /^ pub fn SetCapture($/;" f +SetCaretBlinkTime vendor/winapi/src/um/winuser.rs /^ pub fn SetCaretBlinkTime($/;" f +SetCaretPos vendor/winapi/src/um/winuser.rs /^ pub fn SetCaretPos($/;" f +SetClassLongA vendor/winapi/src/um/winuser.rs /^ pub fn SetClassLongA($/;" f +SetClassLongPtrA vendor/winapi/src/um/winuser.rs /^ pub fn SetClassLongPtrA($/;" f +SetClassLongPtrW vendor/winapi/src/um/winuser.rs /^ pub fn SetClassLongPtrW($/;" f +SetClassLongW vendor/winapi/src/um/winuser.rs /^ pub fn SetClassLongW($/;" f +SetClassWord vendor/winapi/src/um/winuser.rs /^ pub fn SetClassWord($/;" f +SetClipboardData vendor/winapi/src/um/winuser.rs /^ pub fn SetClipboardData($/;" f +SetClipboardViewer vendor/winapi/src/um/winuser.rs /^ pub fn SetClipboardViewer($/;" f +SetCmd builtins_rust/exec_cmd/src/lib.rs /^ SetCmd,$/;" e enum:CMDType +SetCoalescableTimer vendor/winapi/src/um/winuser.rs /^ pub fn SetCoalescableTimer($/;" f +SetColorAdjustment vendor/winapi/src/um/wingdi.rs /^ pub fn SetColorAdjustment($/;" f +SetColorSpace vendor/winapi/src/um/wingdi.rs /^ pub fn SetColorSpace($/;" f +SetComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for SetComand {$/;" c +SetComand builtins_rust/exec_cmd/src/lib.rs /^struct SetComand;$/;" s +SetCommBreak vendor/winapi/src/um/commapi.rs /^ pub fn SetCommBreak($/;" f +SetCommConfig vendor/winapi/src/um/commapi.rs /^ pub fn SetCommConfig($/;" f +SetCommMask vendor/winapi/src/um/commapi.rs /^ pub fn SetCommMask($/;" f +SetCommState vendor/winapi/src/um/commapi.rs /^ pub fn SetCommState($/;" f +SetCommTimeouts vendor/winapi/src/um/commapi.rs /^ pub fn SetCommTimeouts($/;" f +SetComputerNameA vendor/winapi/src/um/sysinfoapi.rs /^ pub fn SetComputerNameA($/;" f +SetComputerNameEx2W vendor/winapi/src/um/sysinfoapi.rs /^ pub fn SetComputerNameEx2W($/;" f +SetComputerNameExA vendor/winapi/src/um/sysinfoapi.rs /^ pub fn SetComputerNameExA($/;" f +SetComputerNameExW vendor/winapi/src/um/sysinfoapi.rs /^ pub fn SetComputerNameExW($/;" f +SetComputerNameW vendor/winapi/src/um/sysinfoapi.rs /^ pub fn SetComputerNameW($/;" f +SetConsoleActiveScreenBuffer vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleActiveScreenBuffer($/;" f +SetConsoleCP vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleCP($/;" f +SetConsoleCtrlHandler vendor/winapi/src/um/consoleapi.rs /^ pub fn SetConsoleCtrlHandler($/;" f +SetConsoleCursorInfo vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleCursorInfo($/;" f +SetConsoleCursorPosition vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleCursorPosition($/;" f +SetConsoleDisplayMode vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleDisplayMode($/;" f +SetConsoleHistoryInfo vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleHistoryInfo($/;" f +SetConsoleMode vendor/winapi/src/um/consoleapi.rs /^ pub fn SetConsoleMode($/;" f +SetConsoleOutputCP vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleOutputCP($/;" f +SetConsoleScreenBufferInfoEx vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleScreenBufferInfoEx($/;" f +SetConsoleScreenBufferSize vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleScreenBufferSize($/;" f +SetConsoleTextAttribute vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleTextAttribute($/;" f +SetConsoleTitleA vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleTitleA($/;" f +SetConsoleTitleW vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleTitleW($/;" f +SetConsoleWindowInfo vendor/winapi/src/um/wincon.rs /^ pub fn SetConsoleWindowInfo($/;" f +SetContextAttributesA vendor/winapi/src/shared/sspi.rs /^ pub fn SetContextAttributesA($/;" f +SetContextAttributesW vendor/winapi/src/shared/sspi.rs /^ pub fn SetContextAttributesW($/;" f +SetCredentialsAttributesA vendor/winapi/src/shared/sspi.rs /^ pub fn SetCredentialsAttributesA($/;" f +SetCredentialsAttributesW vendor/winapi/src/shared/sspi.rs /^ pub fn SetCredentialsAttributesW($/;" f +SetCriticalSectionSpinCount vendor/winapi/src/um/synchapi.rs /^ pub fn SetCriticalSectionSpinCount($/;" f +SetCurrentConsoleFontEx vendor/winapi/src/um/wincon.rs /^ pub fn SetCurrentConsoleFontEx($/;" f +SetCurrentDirectoryA vendor/winapi/src/um/processenv.rs /^ pub fn SetCurrentDirectoryA($/;" f +SetCurrentDirectoryW vendor/winapi/src/um/processenv.rs /^ pub fn SetCurrentDirectoryW($/;" f +SetCurrentThreadCompartmentId vendor/winapi/src/shared/netioapi.rs /^ pub fn SetCurrentThreadCompartmentId($/;" f +SetCurrentThreadCompartmentScope vendor/winapi/src/shared/netioapi.rs /^ pub fn SetCurrentThreadCompartmentScope($/;" f +SetCursor vendor/winapi/src/um/winuser.rs /^ pub fn SetCursor($/;" f +SetCursorPos vendor/winapi/src/um/winuser.rs /^ pub fn SetCursorPos($/;" f +SetDCBrushColor vendor/winapi/src/um/wingdi.rs /^ pub fn SetDCBrushColor($/;" f +SetDCPenColor vendor/winapi/src/um/wingdi.rs /^ pub fn SetDCPenColor($/;" f +SetDIBColorTable vendor/winapi/src/um/wingdi.rs /^ pub fn SetDIBColorTable($/;" f +SetDIBits vendor/winapi/src/um/wingdi.rs /^ pub fn SetDIBits($/;" f +SetDIBitsToDevice vendor/winapi/src/um/wingdi.rs /^ pub fn SetDIBitsToDevice($/;" f +SetDefaultCommConfigA vendor/winapi/src/um/winbase.rs /^ pub fn SetDefaultCommConfigA($/;" f +SetDefaultCommConfigW vendor/winapi/src/um/winbase.rs /^ pub fn SetDefaultCommConfigW($/;" f +SetDefaultDllDirectories vendor/winapi/src/um/libloaderapi.rs /^ pub fn SetDefaultDllDirectories($/;" f +SetDefaultPrinterA vendor/winapi/src/um/winspool.rs /^ pub fn SetDefaultPrinterA($/;" f +SetDefaultPrinterW vendor/winapi/src/um/winspool.rs /^ pub fn SetDefaultPrinterW($/;" f +SetDeviceGammaRamp vendor/winapi/src/um/wingdi.rs /^ pub fn SetDeviceGammaRamp($/;" f +SetDialogControlDpiChangeBehavior vendor/winapi/src/um/winuser.rs /^ pub fn SetDialogControlDpiChangeBehavior($/;" f +SetDialogDpiChangeBehavior vendor/winapi/src/um/winuser.rs /^ pub fn SetDialogDpiChangeBehavior($/;" f +SetDlgItemInt vendor/winapi/src/um/winuser.rs /^ pub fn SetDlgItemInt($/;" f +SetDlgItemTextA vendor/winapi/src/um/winuser.rs /^ pub fn SetDlgItemTextA($/;" f +SetDlgItemTextW vendor/winapi/src/um/winuser.rs /^ pub fn SetDlgItemTextW($/;" f +SetDllDirectoryA vendor/winapi/src/um/winbase.rs /^ pub fn SetDllDirectoryA($/;" f +SetDllDirectoryW vendor/winapi/src/um/winbase.rs /^ pub fn SetDllDirectoryW($/;" f +SetDnsSettings vendor/winapi/src/shared/netioapi.rs /^ pub fn SetDnsSettings($/;" f +SetDocumentLanguage support/texi2html /^sub SetDocumentLanguage$/;" s +SetDoubleClickTime vendor/winapi/src/um/winuser.rs /^ pub fn SetDoubleClickTime($/;" f +SetDynamicTimeZoneInformation vendor/winapi/src/um/timezoneapi.rs /^ pub fn SetDynamicTimeZoneInformation($/;" f +SetEncryptedFileMetadata vendor/winapi/src/um/winefs.rs /^ pub fn SetEncryptedFileMetadata($/;" f +SetEndOfFile vendor/winapi/src/um/fileapi.rs /^ pub fn SetEndOfFile($/;" f +SetEnhMetaFileBits vendor/winapi/src/um/wingdi.rs /^ pub fn SetEnhMetaFileBits($/;" f +SetEntriesInAclA vendor/winapi/src/um/aclapi.rs /^ pub fn SetEntriesInAclA($/;" f +SetEntriesInAclW vendor/winapi/src/um/aclapi.rs /^ pub fn SetEntriesInAclW($/;" f +SetEnvironmentStringsA vendor/winapi/src/um/winbase.rs /^ pub fn SetEnvironmentStringsA($/;" f +SetEnvironmentStringsW vendor/winapi/src/um/processenv.rs /^ pub fn SetEnvironmentStringsW($/;" f +SetEnvironmentVariableA vendor/winapi/src/um/processenv.rs /^ pub fn SetEnvironmentVariableA($/;" f +SetEnvironmentVariableW vendor/winapi/src/um/processenv.rs /^ pub fn SetEnvironmentVariableW($/;" f +SetErrorInfo vendor/winapi/src/um/oleauto.rs /^ pub fn SetErrorInfo($/;" f +SetErrorMode vendor/winapi/src/um/errhandlingapi.rs /^ pub fn SetErrorMode($/;" f +SetEvent vendor/winapi/src/um/synchapi.rs /^ pub fn SetEvent($/;" f +SetEventWhenCallbackReturns vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn SetEventWhenCallbackReturns($/;" f +SetFileApisToANSI vendor/winapi/src/um/fileapi.rs /^ pub fn SetFileApisToANSI();$/;" f +SetFileApisToOEM vendor/winapi/src/um/fileapi.rs /^ pub fn SetFileApisToOEM();$/;" f +SetFileAttributesA vendor/winapi/src/um/fileapi.rs /^ pub fn SetFileAttributesA($/;" f +SetFileAttributesTransactedA vendor/winapi/src/um/winbase.rs /^ pub fn SetFileAttributesTransactedA($/;" f +SetFileAttributesTransactedW vendor/winapi/src/um/winbase.rs /^ pub fn SetFileAttributesTransactedW($/;" f +SetFileAttributesW vendor/winapi/src/um/fileapi.rs /^ pub fn SetFileAttributesW($/;" f +SetFileBandwidthReservation vendor/winapi/src/um/winbase.rs /^ pub fn SetFileBandwidthReservation($/;" f +SetFileCompletionNotificationModes vendor/winapi/src/um/winbase.rs /^ pub fn SetFileCompletionNotificationModes($/;" f +SetFileInformationByHandle vendor/winapi/src/um/fileapi.rs /^ pub fn SetFileInformationByHandle($/;" f +SetFileIoOverlappedRange vendor/winapi/src/um/fileapi.rs /^ pub fn SetFileIoOverlappedRange($/;" f +SetFilePointer vendor/winapi/src/um/fileapi.rs /^ pub fn SetFilePointer($/;" f +SetFilePointerEx vendor/winapi/src/um/fileapi.rs /^ pub fn SetFilePointerEx($/;" f +SetFileSecurityW vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetFileSecurityW($/;" f +SetFileShortNameA vendor/winapi/src/um/winbase.rs /^ pub fn SetFileShortNameA($/;" f +SetFileShortNameW vendor/winapi/src/um/winbase.rs /^ pub fn SetFileShortNameW($/;" f +SetFileTime vendor/winapi/src/um/fileapi.rs /^ pub fn SetFileTime($/;" f +SetFileValidData vendor/winapi/src/um/fileapi.rs /^ pub fn SetFileValidData($/;" f +SetFirmwareEnvironmentVariableA vendor/winapi/src/um/winbase.rs /^ pub fn SetFirmwareEnvironmentVariableA($/;" f +SetFirmwareEnvironmentVariableExA vendor/winapi/src/um/winbase.rs /^ pub fn SetFirmwareEnvironmentVariableExA($/;" f +SetFirmwareEnvironmentVariableExW vendor/winapi/src/um/winbase.rs /^ pub fn SetFirmwareEnvironmentVariableExW($/;" f +SetFirmwareEnvironmentVariableW vendor/winapi/src/um/winbase.rs /^ pub fn SetFirmwareEnvironmentVariableW($/;" f +SetFocus vendor/winapi/src/um/winuser.rs /^ pub fn SetFocus($/;" f +SetForegroundWindow vendor/winapi/src/um/winuser.rs /^ pub fn SetForegroundWindow($/;" f +SetFormA vendor/winapi/src/um/winspool.rs /^ pub fn SetFormA($/;" f +SetFormW vendor/winapi/src/um/winspool.rs /^ pub fn SetFormW($/;" f +SetGraphicsMode vendor/winapi/src/um/wingdi.rs /^ pub fn SetGraphicsMode($/;" f +SetHandleCount vendor/winapi/src/um/winbase.rs /^ pub fn SetHandleCount($/;" f +SetHandleInformation vendor/winapi/src/um/handleapi.rs /^ pub fn SetHandleInformation($/;" f +SetICMMode vendor/winapi/src/um/wingdi.rs /^ pub fn SetICMMode($/;" f +SetICMProfileA vendor/winapi/src/um/wingdi.rs /^ pub fn SetICMProfileA($/;" f +SetICMProfileW vendor/winapi/src/um/wingdi.rs /^ pub fn SetICMProfileW($/;" f +SetIfEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn SetIfEntry($/;" f +SetInformationJobObject vendor/winapi/src/um/jobapi2.rs /^ pub fn SetInformationJobObject($/;" f +SetInterfaceDnsSettings vendor/winapi/src/shared/netioapi.rs /^ pub fn SetInterfaceDnsSettings($/;" f +SetIoRateControlInformationJobObject vendor/winapi/src/um/jobapi2.rs /^ pub fn SetIoRateControlInformationJobObject($/;" f +SetIpForwardEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn SetIpForwardEntry($/;" f +SetIpForwardEntry2 vendor/winapi/src/shared/netioapi.rs /^ pub fn SetIpForwardEntry2($/;" f +SetIpInterfaceEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn SetIpInterfaceEntry($/;" f +SetIpNetEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn SetIpNetEntry($/;" f +SetIpNetEntry2 vendor/winapi/src/shared/netioapi.rs /^ pub fn SetIpNetEntry2($/;" f +SetIpStatistics vendor/winapi/src/um/iphlpapi.rs /^ pub fn SetIpStatistics($/;" f +SetIpStatisticsEx vendor/winapi/src/um/iphlpapi.rs /^ pub fn SetIpStatisticsEx($/;" f +SetIpTTL vendor/winapi/src/um/iphlpapi.rs /^ pub fn SetIpTTL($/;" f +SetJobA vendor/winapi/src/um/winspool.rs /^ pub fn SetJobA($/;" f +SetJobCompartmentId vendor/winapi/src/shared/netioapi.rs /^ pub fn SetJobCompartmentId($/;" f +SetJobW vendor/winapi/src/um/winspool.rs /^ pub fn SetJobW($/;" f +SetKernelObjectSecurity vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetKernelObjectSecurity($/;" f +SetKeyboardState vendor/winapi/src/um/winuser.rs /^ pub fn SetKeyboardState($/;" f +SetLastError vendor/winapi/src/um/errhandlingapi.rs /^ pub fn SetLastError($/;" f +SetLastErrorEx vendor/winapi/src/um/winuser.rs /^ pub fn SetLastErrorEx($/;" f +SetLayeredWindowAttributes vendor/winapi/src/um/winuser.rs /^ pub fn SetLayeredWindowAttributes($/;" f +SetLayout vendor/winapi/src/um/wingdi.rs /^ pub fn SetLayout($/;" f +SetLenOnDrop vendor/smallvec/src/lib.rs /^impl<'a> Drop for SetLenOnDrop<'a> {$/;" c +SetLenOnDrop vendor/smallvec/src/lib.rs /^impl<'a> SetLenOnDrop<'a> {$/;" c +SetLenOnDrop vendor/smallvec/src/lib.rs /^struct SetLenOnDrop<'a> {$/;" s +SetLocalTime vendor/winapi/src/um/sysinfoapi.rs /^ pub fn SetLocalTime($/;" f +SetLocaleInfoA vendor/winapi/src/um/winnls.rs /^ pub fn SetLocaleInfoA($/;" f +SetLocaleInfoW vendor/winapi/src/um/winnls.rs /^ pub fn SetLocaleInfoW($/;" f +SetMailslotInfo vendor/winapi/src/um/winbase.rs /^ pub fn SetMailslotInfo($/;" f +SetMapMode vendor/winapi/src/um/wingdi.rs /^ pub fn SetMapMode($/;" f +SetMapperFlags vendor/winapi/src/um/wingdi.rs /^ pub fn SetMapperFlags($/;" f +SetMenu vendor/winapi/src/um/winuser.rs /^ pub fn SetMenu($/;" f +SetMenuContextHelpId vendor/winapi/src/um/winuser.rs /^ pub fn SetMenuContextHelpId($/;" f +SetMenuDefaultItem vendor/winapi/src/um/winuser.rs /^ pub fn SetMenuDefaultItem($/;" f +SetMenuInfo vendor/winapi/src/um/winuser.rs /^ pub fn SetMenuInfo($/;" f +SetMenuItemBitmaps vendor/winapi/src/um/winuser.rs /^ pub fn SetMenuItemBitmaps($/;" f +SetMenuItemInfoA vendor/winapi/src/um/winuser.rs /^ pub fn SetMenuItemInfoA($/;" f +SetMenuItemInfoW vendor/winapi/src/um/winuser.rs /^ pub fn SetMenuItemInfoW($/;" f +SetMessageExtraInfo vendor/winapi/src/um/winuser.rs /^ pub fn SetMessageExtraInfo($/;" f +SetMessageQueue vendor/winapi/src/um/winuser.rs /^ pub fn SetMessageQueue($/;" f +SetMessageWaitingIndicator vendor/winapi/src/um/winbase.rs /^ pub fn SetMessageWaitingIndicator($/;" f +SetMetaFileBitsEx vendor/winapi/src/um/wingdi.rs /^ pub fn SetMetaFileBitsEx($/;" f +SetMetaRgn vendor/winapi/src/um/wingdi.rs /^ pub fn SetMetaRgn($/;" f +SetMiterLimit vendor/winapi/src/um/wingdi.rs /^ pub fn SetMiterLimit($/;" f +SetMonitorBrightness vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn SetMonitorBrightness($/;" f +SetMonitorColorTemperature vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn SetMonitorColorTemperature($/;" f +SetMonitorContrast vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn SetMonitorContrast($/;" f +SetMonitorDisplayAreaPosition vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn SetMonitorDisplayAreaPosition($/;" f +SetMonitorDisplayAreaSize vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn SetMonitorDisplayAreaSize($/;" f +SetMonitorRedGreenOrBlueDrive vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn SetMonitorRedGreenOrBlueDrive($/;" f +SetMonitorRedGreenOrBlueGain vendor/winapi/src/um/highlevelmonitorconfigurationapi.rs /^ pub fn SetMonitorRedGreenOrBlueGain($/;" f +SetNamedPipeHandleState vendor/winapi/src/um/namedpipeapi.rs /^ pub fn SetNamedPipeHandleState($/;" f +SetNamedSecurityInfoA vendor/winapi/src/um/aclapi.rs /^ pub fn SetNamedSecurityInfoA($/;" f +SetNamedSecurityInfoW vendor/winapi/src/um/aclapi.rs /^ pub fn SetNamedSecurityInfoW($/;" f +SetNetworkInformation vendor/winapi/src/shared/netioapi.rs /^ pub fn SetNetworkInformation($/;" f +SetOsString vendor/nix/src/sys/socket/sockopt.rs /^impl<'a> Set<'a, OsString> for SetOsString<'a> {$/;" c +SetOsString vendor/nix/src/sys/socket/sockopt.rs /^struct SetOsString<'a> {$/;" s +SetPaletteEntries vendor/winapi/src/um/wingdi.rs /^ pub fn SetPaletteEntries($/;" f +SetParent vendor/winapi/src/um/winuser.rs /^ pub fn SetParent($/;" f +SetPerTcp6ConnectionEStats vendor/winapi/src/um/iphlpapi.rs /^ pub fn SetPerTcp6ConnectionEStats($/;" f +SetPerTcpConnectionEStats vendor/winapi/src/um/iphlpapi.rs /^ pub fn SetPerTcpConnectionEStats($/;" f +SetPhysicalCursorPos vendor/winapi/src/um/winuser.rs /^ pub fn SetPhysicalCursorPos($/;" f +SetPixel vendor/winapi/src/um/wingdi.rs /^ pub fn SetPixel($/;" f +SetPixelFormat vendor/winapi/src/um/wingdi.rs /^ pub fn SetPixelFormat($/;" f +SetPixelV vendor/winapi/src/um/wingdi.rs /^ pub fn SetPixelV($/;" f +SetPolyFillMode vendor/winapi/src/um/wingdi.rs /^ pub fn SetPolyFillMode($/;" f +SetPortA vendor/winapi/src/um/winspool.rs /^ pub fn SetPortA($/;" f +SetPortW vendor/winapi/src/um/winspool.rs /^ pub fn SetPortW(pName: LPWSTR,$/;" f +SetPrinterA vendor/winapi/src/um/winspool.rs /^ pub fn SetPrinterA($/;" f +SetPrinterDataA vendor/winapi/src/um/winspool.rs /^ pub fn SetPrinterDataA($/;" f +SetPrinterDataExA vendor/winapi/src/um/winspool.rs /^ pub fn SetPrinterDataExA($/;" f +SetPrinterDataExW vendor/winapi/src/um/winspool.rs /^ pub fn SetPrinterDataExW($/;" f +SetPrinterDataW vendor/winapi/src/um/winspool.rs /^ pub fn SetPrinterDataW($/;" f +SetPrinterW vendor/winapi/src/um/winspool.rs /^ pub fn SetPrinterW($/;" f +SetPriorityClass vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetPriorityClass($/;" f +SetPrivateObjectSecurity vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetPrivateObjectSecurity($/;" f +SetPrivateObjectSecurityEx vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetPrivateObjectSecurityEx($/;" f +SetProcessAffinityMask vendor/winapi/src/um/winbase.rs /^ pub fn SetProcessAffinityMask($/;" f +SetProcessAffinityUpdateMode vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetProcessAffinityUpdateMode($/;" f +SetProcessDEPPolicy vendor/winapi/src/um/winbase.rs /^ pub fn SetProcessDEPPolicy($/;" f +SetProcessDPIAware vendor/winapi/src/um/winuser.rs /^ pub fn SetProcessDPIAware() -> BOOL;$/;" f +SetProcessDefaultLayout vendor/winapi/src/um/winuser.rs /^ pub fn SetProcessDefaultLayout($/;" f +SetProcessDpiAwareness vendor/winapi/src/um/shellscalingapi.rs /^ pub fn SetProcessDpiAwareness($/;" f +SetProcessDpiAwarenessContext vendor/winapi/src/um/winuser.rs /^ pub fn SetProcessDpiAwarenessContext($/;" f +SetProcessInformation vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetProcessInformation($/;" f +SetProcessMitigationPolicy vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetProcessMitigationPolicy($/;" f +SetProcessPreferredUILanguages vendor/winapi/src/um/winnls.rs /^ pub fn SetProcessPreferredUILanguages($/;" f +SetProcessPriorityBoost vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetProcessPriorityBoost($/;" f +SetProcessShutdownParameters vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetProcessShutdownParameters($/;" f +SetProcessWindowStation vendor/winapi/src/um/winuser.rs /^ pub fn SetProcessWindowStation($/;" f +SetProcessWorkingSetSize vendor/winapi/src/um/winbase.rs /^ pub fn SetProcessWorkingSetSize($/;" f +SetProcessWorkingSetSizeEx vendor/winapi/src/um/memoryapi.rs /^ pub fn SetProcessWorkingSetSizeEx($/;" f +SetPropA vendor/winapi/src/um/winuser.rs /^ pub fn SetPropA($/;" f +SetPropW vendor/winapi/src/um/winuser.rs /^ pub fn SetPropW($/;" f +SetProtectedPolicy vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetProtectedPolicy($/;" f +SetROP2 vendor/winapi/src/um/wingdi.rs /^ pub fn SetROP2($/;" f +SetRect vendor/winapi/src/um/winuser.rs /^ pub fn SetRect($/;" f +SetRectEmpty vendor/winapi/src/um/winuser.rs /^ pub fn SetRectEmpty($/;" f +SetRectRgn vendor/winapi/src/um/wingdi.rs /^ pub fn SetRectRgn($/;" f +SetRestrictedErrorInfo vendor/winapi/src/winrt/roerrorapi.rs /^ pub fn SetRestrictedErrorInfo($/;" f +SetScrollInfo vendor/winapi/src/um/winuser.rs /^ pub fn SetScrollInfo($/;" f +SetScrollPos vendor/winapi/src/um/winuser.rs /^ pub fn SetScrollPos($/;" f +SetScrollRange vendor/winapi/src/um/winuser.rs /^ pub fn SetScrollRange($/;" f +SetSearchPathMode vendor/winapi/src/um/winbase.rs /^ pub fn SetSearchPathMode($/;" f +SetSecurityAccessMask vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetSecurityAccessMask($/;" f +SetSecurityDescriptorControl vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetSecurityDescriptorControl($/;" f +SetSecurityDescriptorDacl vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetSecurityDescriptorDacl($/;" f +SetSecurityDescriptorGroup vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetSecurityDescriptorGroup($/;" f +SetSecurityDescriptorOwner vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetSecurityDescriptorOwner($/;" f +SetSecurityDescriptorRMControl vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetSecurityDescriptorRMControl($/;" f +SetSecurityDescriptorSacl vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetSecurityDescriptorSacl($/;" f +SetSecurityInfo vendor/winapi/src/um/aclapi.rs /^ pub fn SetSecurityInfo($/;" f +SetServiceBits vendor/winapi/src/um/lmserver.rs /^ pub fn SetServiceBits($/;" f +SetServiceObjectSecurity vendor/winapi/src/um/winsvc.rs /^ pub fn SetServiceObjectSecurity($/;" f +SetServiceStatus vendor/winapi/src/um/winsvc.rs /^ pub fn SetServiceStatus($/;" f +SetSessionCompartmentId vendor/winapi/src/shared/netioapi.rs /^ pub fn SetSessionCompartmentId($/;" f +SetSockOpt vendor/nix/src/sys/socket/mod.rs /^pub trait SetSockOpt : Clone {$/;" i +SetStdHandle vendor/winapi/src/um/processenv.rs /^ pub fn SetStdHandle($/;" f +SetStdHandleEx vendor/winapi/src/um/processenv.rs /^ pub fn SetStdHandleEx($/;" f +SetStretchBltMode vendor/winapi/src/um/wingdi.rs /^ pub fn SetStretchBltMode($/;" f +SetStruct vendor/nix/src/sys/socket/sockopt.rs /^impl<'a, T> Set<'a, T> for SetStruct<'a, T> {$/;" c +SetStruct vendor/nix/src/sys/socket/sockopt.rs /^struct SetStruct<'a, T: 'static> {$/;" s +SetSuspendState vendor/winapi/src/um/powrprof.rs /^ pub fn SetSuspendState($/;" f +SetSysColors vendor/winapi/src/um/winuser.rs /^ pub fn SetSysColors($/;" f +SetSystemCursor vendor/winapi/src/um/winuser.rs /^ pub fn SetSystemCursor($/;" f +SetSystemFileCacheSize vendor/winapi/src/um/memoryapi.rs /^ pub fn SetSystemFileCacheSize($/;" f +SetSystemPaletteUse vendor/winapi/src/um/wingdi.rs /^ pub fn SetSystemPaletteUse($/;" f +SetSystemPowerState vendor/winapi/src/um/winbase.rs /^ pub fn SetSystemPowerState($/;" f +SetSystemTime vendor/winapi/src/um/sysinfoapi.rs /^ pub fn SetSystemTime($/;" f +SetSystemTimeAdjustment vendor/winapi/src/um/sysinfoapi.rs /^ pub fn SetSystemTimeAdjustment($/;" f +SetTapeParameters vendor/winapi/src/um/winbase.rs /^ pub fn SetTapeParameters($/;" f +SetTapePosition vendor/winapi/src/um/winbase.rs /^ pub fn SetTapePosition($/;" f +SetTcpEntry vendor/winapi/src/um/iphlpapi.rs /^ pub fn SetTcpEntry($/;" f +SetTextAlign vendor/winapi/src/um/wingdi.rs /^ pub fn SetTextAlign($/;" f +SetTextCharacterExtra vendor/winapi/src/um/wingdi.rs /^ pub fn SetTextCharacterExtra($/;" f +SetTextColor vendor/winapi/src/um/wingdi.rs /^ pub fn SetTextColor($/;" f +SetTextJustification vendor/winapi/src/um/wingdi.rs /^ pub fn SetTextJustification($/;" f +SetThemeAppProperties vendor/winapi/src/um/uxtheme.rs /^ pub fn SetThemeAppProperties($/;" f +SetThreadAffinityMask vendor/winapi/src/um/winbase.rs /^ pub fn SetThreadAffinityMask($/;" f +SetThreadContext vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetThreadContext($/;" f +SetThreadDesktop vendor/winapi/src/um/winuser.rs /^ pub fn SetThreadDesktop($/;" f +SetThreadDpiAwarenessContext vendor/winapi/src/um/winuser.rs /^ pub fn SetThreadDpiAwarenessContext($/;" f +SetThreadDpiHostingBehavior vendor/winapi/src/um/winuser.rs /^ pub fn SetThreadDpiHostingBehavior($/;" f +SetThreadErrorMode vendor/winapi/src/um/errhandlingapi.rs /^ pub fn SetThreadErrorMode($/;" f +SetThreadExecutionState vendor/winapi/src/um/winbase.rs /^ pub fn SetThreadExecutionState($/;" f +SetThreadGroupAffinity vendor/winapi/src/um/processtopologyapi.rs /^ pub fn SetThreadGroupAffinity($/;" f +SetThreadIdealProcessor vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetThreadIdealProcessor($/;" f +SetThreadIdealProcessorEx vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetThreadIdealProcessorEx($/;" f +SetThreadInformation vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetThreadInformation($/;" f +SetThreadLocale vendor/winapi/src/um/winnls.rs /^ pub fn SetThreadLocale(Locale: LCID) -> BOOL;$/;" f +SetThreadPreferredUILanguages vendor/winapi/src/um/winnls.rs /^ pub fn SetThreadPreferredUILanguages($/;" f +SetThreadPriority vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetThreadPriority($/;" f +SetThreadPriorityBoost vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetThreadPriorityBoost($/;" f +SetThreadStackGuarantee vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetThreadStackGuarantee($/;" f +SetThreadToken vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SetThreadToken($/;" f +SetThreadUILanguage vendor/winapi/src/um/winnls.rs /^ pub fn SetThreadUILanguage(LangId: LANGID) -> LANGID;$/;" f +SetThreadpoolStackInformation vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn SetThreadpoolStackInformation($/;" f +SetThreadpoolThreadMaximum vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn SetThreadpoolThreadMaximum($/;" f +SetThreadpoolThreadMinimum vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn SetThreadpoolThreadMinimum($/;" f +SetThreadpoolTimer vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn SetThreadpoolTimer($/;" f +SetThreadpoolTimerEx vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn SetThreadpoolTimerEx($/;" f +SetThreadpoolWait vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn SetThreadpoolWait($/;" f +SetThreadpoolWaitEx vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn SetThreadpoolWaitEx($/;" f +SetTimeZoneInformation vendor/winapi/src/um/timezoneapi.rs /^ pub fn SetTimeZoneInformation($/;" f +SetTimer vendor/winapi/src/um/winuser.rs /^ pub fn SetTimer($/;" f +SetTimerQueueTimer vendor/winapi/src/um/winbase.rs /^ pub fn SetTimerQueueTimer($/;" f +SetTokenInformation vendor/winapi/src/um/securitybaseapi.rs /^ pub fn SetTokenInformation($/;" f +SetTraceCallback vendor/winapi/src/shared/evntrace.rs /^ pub fn SetTraceCallback($/;" f +SetU8 vendor/nix/src/sys/socket/sockopt.rs /^impl<'a> Set<'a, u8> for SetU8 {$/;" c +SetU8 vendor/nix/src/sys/socket/sockopt.rs /^struct SetU8 {$/;" s +SetUmsThreadInformation vendor/winapi/src/um/winbase.rs /^ pub fn SetUmsThreadInformation($/;" f +SetUnhandledExceptionFilter vendor/winapi/src/um/errhandlingapi.rs /^ pub fn SetUnhandledExceptionFilter($/;" f +SetUnicastIpAddressEntry vendor/winapi/src/shared/netioapi.rs /^ pub fn SetUnicastIpAddressEntry($/;" f +SetUrlCacheEntryGroupA vendor/winapi/src/um/wininet.rs /^ pub fn SetUrlCacheEntryGroupA($/;" f +SetUrlCacheEntryGroupW vendor/winapi/src/um/wininet.rs /^ pub fn SetUrlCacheEntryGroupW($/;" f +SetUrlCacheEntryInfoA vendor/winapi/src/um/wininet.rs /^ pub fn SetUrlCacheEntryInfoA($/;" f +SetUrlCacheEntryInfoW vendor/winapi/src/um/wininet.rs /^ pub fn SetUrlCacheEntryInfoW($/;" f +SetUrlCacheGroupAttributeA vendor/winapi/src/um/wininet.rs /^ pub fn SetUrlCacheGroupAttributeA($/;" f +SetUrlCacheGroupAttributeW vendor/winapi/src/um/wininet.rs /^ pub fn SetUrlCacheGroupAttributeW($/;" f +SetUserFileEncryptionKey vendor/winapi/src/um/winefs.rs /^ pub fn SetUserFileEncryptionKey($/;" f +SetUserFileEncryptionKeyEx vendor/winapi/src/um/winefs.rs /^ pub fn SetUserFileEncryptionKeyEx($/;" f +SetUserGeoID vendor/winapi/src/um/winnls.rs /^ pub fn SetUserGeoID(GeoId: GEOID) -> BOOL;$/;" f +SetUserObjectInformationA vendor/winapi/src/um/winuser.rs /^ pub fn SetUserObjectInformationA($/;" f +SetUserObjectInformationW vendor/winapi/src/um/winuser.rs /^ pub fn SetUserObjectInformationW($/;" f +SetUserObjectSecurity vendor/winapi/src/um/winuser.rs /^ pub fn SetUserObjectSecurity($/;" f +SetUsize vendor/nix/src/sys/socket/sockopt.rs /^impl<'a> Set<'a, usize> for SetUsize {$/;" c +SetUsize vendor/nix/src/sys/socket/sockopt.rs /^struct SetUsize {$/;" s +SetVCPFeature vendor/winapi/src/um/lowlevelmonitorconfigurationapi.rs /^ pub fn SetVCPFeature($/;" f +SetViewportExtEx vendor/winapi/src/um/wingdi.rs /^ pub fn SetViewportExtEx($/;" f +SetViewportOrgEx vendor/winapi/src/um/wingdi.rs /^ pub fn SetViewportOrgEx($/;" f +SetVolumeLabelA vendor/winapi/src/um/winbase.rs /^ pub fn SetVolumeLabelA($/;" f +SetVolumeLabelW vendor/winapi/src/um/winbase.rs /^ pub fn SetVolumeLabelW($/;" f +SetVolumeMountPointA vendor/winapi/src/um/winbase.rs /^ pub fn SetVolumeMountPointA($/;" f +SetVolumeMountPointW vendor/winapi/src/um/winbase.rs /^ pub fn SetVolumeMountPointW($/;" f +SetWaitableTimer vendor/winapi/src/um/synchapi.rs /^ pub fn SetWaitableTimer($/;" f +SetWaitableTimerEx vendor/winapi/src/um/synchapi.rs /^ pub fn SetWaitableTimerEx($/;" f +SetWinEventHook vendor/winapi/src/um/winuser.rs /^ pub fn SetWinEventHook($/;" f +SetWinMetaFileBits vendor/winapi/src/um/wingdi.rs /^ pub fn SetWinMetaFileBits($/;" f +SetWindowContextHelpId vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowContextHelpId($/;" f +SetWindowDisplayAffinity vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowDisplayAffinity($/;" f +SetWindowExtEx vendor/winapi/src/um/wingdi.rs /^ pub fn SetWindowExtEx($/;" f +SetWindowFeedbackSetting vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowFeedbackSetting($/;" f +SetWindowLongA vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowLongA($/;" f +SetWindowLongPtrA vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowLongPtrA($/;" f +SetWindowLongPtrW vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowLongPtrW($/;" f +SetWindowLongW vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowLongW($/;" f +SetWindowOrgEx vendor/winapi/src/um/wingdi.rs /^ pub fn SetWindowOrgEx($/;" f +SetWindowPlacement vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowPlacement($/;" f +SetWindowPos vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowPos($/;" f +SetWindowRgn vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowRgn($/;" f +SetWindowSubclass vendor/winapi/src/um/commctrl.rs /^ pub fn SetWindowSubclass($/;" f +SetWindowTextA vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowTextA($/;" f +SetWindowTextW vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowTextW($/;" f +SetWindowTheme vendor/winapi/src/um/uxtheme.rs /^ pub fn SetWindowTheme($/;" f +SetWindowThemeAttribute vendor/winapi/src/um/uxtheme.rs /^ pub fn SetWindowThemeAttribute($/;" f +SetWindowThemeNonClientAttributes vendor/winapi/src/um/uxtheme.rs /^pub unsafe fn SetWindowThemeNonClientAttributes($/;" f +SetWindowWord vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowWord($/;" f +SetWindowsHookA vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowsHookA($/;" f +SetWindowsHookExA vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowsHookExA($/;" f +SetWindowsHookExW vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowsHookExW($/;" f +SetWindowsHookW vendor/winapi/src/um/winuser.rs /^ pub fn SetWindowsHookW($/;" f +SetWorldTransform vendor/winapi/src/um/wingdi.rs /^ pub fn SetWorldTransform($/;" f +SetXStateFeaturesMask vendor/winapi/src/um/winbase.rs /^ pub fn SetXStateFeaturesMask($/;" f +SetattrCmd builtins_rust/exec_cmd/src/lib.rs /^ SetattrCmd,$/;" e enum:CMDType +SetattrComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for SetattrComand {$/;" c +SetattrComand builtins_rust/exec_cmd/src/lib.rs /^struct SetattrComand;$/;" s +SetupAddInstallSectionToDiskSpaceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupAddInstallSectionToDiskSpaceListA($/;" f +SetupAddInstallSectionToDiskSpaceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupAddInstallSectionToDiskSpaceListW($/;" f +SetupAddSectionToDiskSpaceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupAddSectionToDiskSpaceListA($/;" f +SetupAddSectionToDiskSpaceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupAddSectionToDiskSpaceListW($/;" f +SetupAddToDiskSpaceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupAddToDiskSpaceListA($/;" f +SetupAddToDiskSpaceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupAddToDiskSpaceListW($/;" f +SetupAddToSourceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupAddToSourceListA($/;" f +SetupAddToSourceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupAddToSourceListW($/;" f +SetupAdjustDiskSpaceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupAdjustDiskSpaceListA($/;" f +SetupAdjustDiskSpaceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupAdjustDiskSpaceListW($/;" f +SetupBackupErrorA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupBackupErrorA($/;" f +SetupBackupErrorW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupBackupErrorW($/;" f +SetupCancelTemporarySourceList vendor/winapi/src/um/setupapi.rs /^ pub fn SetupCancelTemporarySourceList() -> BOOL;$/;" f +SetupCloseFileQueue vendor/winapi/src/um/setupapi.rs /^ pub fn SetupCloseFileQueue($/;" f +SetupCloseInfFile vendor/winapi/src/um/setupapi.rs /^ pub fn SetupCloseInfFile($/;" f +SetupCloseLog vendor/winapi/src/um/setupapi.rs /^ pub fn SetupCloseLog() -> ();$/;" f +SetupComm vendor/winapi/src/um/commapi.rs /^ pub fn SetupComm($/;" f +SetupCommitFileQueueA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupCommitFileQueueA($/;" f +SetupCommitFileQueueW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupCommitFileQueueW($/;" f +SetupConfigureWmiFromInfSectionA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupConfigureWmiFromInfSectionA($/;" f +SetupConfigureWmiFromInfSectionW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupConfigureWmiFromInfSectionW($/;" f +SetupCopyErrorA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupCopyErrorA($/;" f +SetupCopyErrorW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupCopyErrorW($/;" f +SetupCopyOEMInfA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupCopyOEMInfA($/;" f +SetupCopyOEMInfW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupCopyOEMInfW($/;" f +SetupCreateDiskSpaceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupCreateDiskSpaceListA($/;" f +SetupCreateDiskSpaceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupCreateDiskSpaceListW($/;" f +SetupDecompressOrCopyFileA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDecompressOrCopyFileA($/;" f +SetupDecompressOrCopyFileW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDecompressOrCopyFileW($/;" f +SetupDefaultQueueCallbackA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDefaultQueueCallbackA($/;" f +SetupDefaultQueueCallbackW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDefaultQueueCallbackW($/;" f +SetupDeleteErrorA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDeleteErrorA($/;" f +SetupDeleteErrorW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDeleteErrorW($/;" f +SetupDestroyDiskSpaceList vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDestroyDiskSpaceList($/;" f +SetupDiAskForOEMDisk vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiAskForOEMDisk($/;" f +SetupDiBuildClassInfoList vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiBuildClassInfoList($/;" f +SetupDiBuildClassInfoListExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiBuildClassInfoListExA($/;" f +SetupDiBuildClassInfoListExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiBuildClassInfoListExW($/;" f +SetupDiBuildDriverInfoList vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiBuildDriverInfoList($/;" f +SetupDiCallClassInstaller vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCallClassInstaller($/;" f +SetupDiCancelDriverInfoSearch vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCancelDriverInfoSearch($/;" f +SetupDiChangeState vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiChangeState($/;" f +SetupDiClassGuidsFromNameA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiClassGuidsFromNameA($/;" f +SetupDiClassGuidsFromNameExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiClassGuidsFromNameExA($/;" f +SetupDiClassGuidsFromNameExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiClassGuidsFromNameExW($/;" f +SetupDiClassGuidsFromNameW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiClassGuidsFromNameW($/;" f +SetupDiClassNameFromGuidA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiClassNameFromGuidA($/;" f +SetupDiClassNameFromGuidExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiClassNameFromGuidExA($/;" f +SetupDiClassNameFromGuidExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiClassNameFromGuidExW($/;" f +SetupDiClassNameFromGuidW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiClassNameFromGuidW($/;" f +SetupDiCreateDevRegKeyA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCreateDevRegKeyA($/;" f +SetupDiCreateDevRegKeyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCreateDevRegKeyW($/;" f +SetupDiCreateDeviceInfoA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCreateDeviceInfoA($/;" f +SetupDiCreateDeviceInfoList vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCreateDeviceInfoList($/;" f +SetupDiCreateDeviceInfoListExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCreateDeviceInfoListExA($/;" f +SetupDiCreateDeviceInfoListExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCreateDeviceInfoListExW($/;" f +SetupDiCreateDeviceInfoW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCreateDeviceInfoW($/;" f +SetupDiCreateDeviceInterfaceA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCreateDeviceInterfaceA($/;" f +SetupDiCreateDeviceInterfaceRegKeyA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCreateDeviceInterfaceRegKeyA($/;" f +SetupDiCreateDeviceInterfaceRegKeyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCreateDeviceInterfaceRegKeyW($/;" f +SetupDiCreateDeviceInterfaceW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiCreateDeviceInterfaceW($/;" f +SetupDiDeleteDevRegKey vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiDeleteDevRegKey($/;" f +SetupDiDeleteDeviceInfo vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiDeleteDeviceInfo($/;" f +SetupDiDeleteDeviceInterfaceData vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiDeleteDeviceInterfaceData($/;" f +SetupDiDeleteDeviceInterfaceRegKey vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiDeleteDeviceInterfaceRegKey($/;" f +SetupDiDestroyClassImageList vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiDestroyClassImageList($/;" f +SetupDiDestroyDeviceInfoList vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiDestroyDeviceInfoList($/;" f +SetupDiDestroyDriverInfoList vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiDestroyDriverInfoList($/;" f +SetupDiDrawMiniIcon vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiDrawMiniIcon($/;" f +SetupDiEnumDeviceInfo vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiEnumDeviceInfo($/;" f +SetupDiEnumDeviceInterfaces vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiEnumDeviceInterfaces($/;" f +SetupDiEnumDriverInfoA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiEnumDriverInfoA($/;" f +SetupDiEnumDriverInfoW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiEnumDriverInfoW($/;" f +SetupDiGetActualModelsSectionA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetActualModelsSectionA($/;" f +SetupDiGetActualModelsSectionW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetActualModelsSectionW($/;" f +SetupDiGetActualSectionToInstallA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetActualSectionToInstallA($/;" f +SetupDiGetActualSectionToInstallExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetActualSectionToInstallExA($/;" f +SetupDiGetActualSectionToInstallExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetActualSectionToInstallExW($/;" f +SetupDiGetActualSectionToInstallW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetActualSectionToInstallW($/;" f +SetupDiGetClassBitmapIndex vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassBitmapIndex($/;" f +SetupDiGetClassDescriptionA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassDescriptionA($/;" f +SetupDiGetClassDescriptionExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassDescriptionExA($/;" f +SetupDiGetClassDescriptionExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassDescriptionExW($/;" f +SetupDiGetClassDescriptionW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassDescriptionW($/;" f +SetupDiGetClassDevPropertySheetsA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassDevPropertySheetsA($/;" f +SetupDiGetClassDevPropertySheetsW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassDevPropertySheetsW($/;" f +SetupDiGetClassDevsA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassDevsA($/;" f +SetupDiGetClassDevsExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassDevsExA($/;" f +SetupDiGetClassDevsExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassDevsExW($/;" f +SetupDiGetClassDevsW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassDevsW($/;" f +SetupDiGetClassImageIndex vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassImageIndex($/;" f +SetupDiGetClassImageList vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassImageList($/;" f +SetupDiGetClassImageListExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassImageListExA($/;" f +SetupDiGetClassImageListExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassImageListExW($/;" f +SetupDiGetClassInstallParamsA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassInstallParamsA($/;" f +SetupDiGetClassInstallParamsW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassInstallParamsW($/;" f +SetupDiGetClassPropertyExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassPropertyExW($/;" f +SetupDiGetClassPropertyKeys vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassPropertyKeys($/;" f +SetupDiGetClassPropertyKeysExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassPropertyKeysExW($/;" f +SetupDiGetClassPropertyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassPropertyW($/;" f +SetupDiGetClassRegistryPropertyA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassRegistryPropertyA($/;" f +SetupDiGetClassRegistryPropertyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetClassRegistryPropertyW($/;" f +SetupDiGetCustomDevicePropertyA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetCustomDevicePropertyA($/;" f +SetupDiGetCustomDevicePropertyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetCustomDevicePropertyW($/;" f +SetupDiGetDeviceInfoListClass vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceInfoListClass($/;" f +SetupDiGetDeviceInfoListDetailA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceInfoListDetailA($/;" f +SetupDiGetDeviceInfoListDetailW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceInfoListDetailW($/;" f +SetupDiGetDeviceInstallParamsA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceInstallParamsA($/;" f +SetupDiGetDeviceInstallParamsW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceInstallParamsW($/;" f +SetupDiGetDeviceInstanceIdA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceInstanceIdA($/;" f +SetupDiGetDeviceInstanceIdW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceInstanceIdW($/;" f +SetupDiGetDeviceInterfaceAlias vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceInterfaceAlias($/;" f +SetupDiGetDeviceInterfaceDetailA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceInterfaceDetailA($/;" f +SetupDiGetDeviceInterfaceDetailW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceInterfaceDetailW($/;" f +SetupDiGetDeviceInterfacePropertyKeys vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceInterfacePropertyKeys($/;" f +SetupDiGetDeviceInterfacePropertyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceInterfacePropertyW($/;" f +SetupDiGetDevicePropertyKeys vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDevicePropertyKeys($/;" f +SetupDiGetDevicePropertyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDevicePropertyW($/;" f +SetupDiGetDeviceRegistryPropertyA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceRegistryPropertyA($/;" f +SetupDiGetDeviceRegistryPropertyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDeviceRegistryPropertyW($/;" f +SetupDiGetDriverInfoDetailA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDriverInfoDetailA($/;" f +SetupDiGetDriverInfoDetailW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDriverInfoDetailW($/;" f +SetupDiGetDriverInstallParamsA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDriverInstallParamsA($/;" f +SetupDiGetDriverInstallParamsW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetDriverInstallParamsW($/;" f +SetupDiGetHwProfileFriendlyNameA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetHwProfileFriendlyNameA($/;" f +SetupDiGetHwProfileFriendlyNameExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetHwProfileFriendlyNameExA($/;" f +SetupDiGetHwProfileFriendlyNameExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetHwProfileFriendlyNameExW($/;" f +SetupDiGetHwProfileFriendlyNameW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetHwProfileFriendlyNameW($/;" f +SetupDiGetHwProfileList vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetHwProfileList($/;" f +SetupDiGetHwProfileListExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetHwProfileListExA($/;" f +SetupDiGetHwProfileListExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetHwProfileListExW($/;" f +SetupDiGetINFClassA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetINFClassA($/;" f +SetupDiGetINFClassW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetINFClassW($/;" f +SetupDiGetSelectedDevice vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetSelectedDevice($/;" f +SetupDiGetSelectedDriverA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetSelectedDriverA($/;" f +SetupDiGetSelectedDriverW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetSelectedDriverW($/;" f +SetupDiGetWizardPage vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiGetWizardPage($/;" f +SetupDiInstallClassA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiInstallClassA($/;" f +SetupDiInstallClassExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiInstallClassExA($/;" f +SetupDiInstallClassExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiInstallClassExW($/;" f +SetupDiInstallClassW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiInstallClassW($/;" f +SetupDiInstallDevice vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiInstallDevice($/;" f +SetupDiInstallDeviceInterfaces vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiInstallDeviceInterfaces($/;" f +SetupDiInstallDriverFiles vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiInstallDriverFiles($/;" f +SetupDiLoadClassIcon vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiLoadClassIcon($/;" f +SetupDiLoadDeviceIcon vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiLoadDeviceIcon($/;" f +SetupDiOpenClassRegKey vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiOpenClassRegKey($/;" f +SetupDiOpenClassRegKeyExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiOpenClassRegKeyExA($/;" f +SetupDiOpenClassRegKeyExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiOpenClassRegKeyExW($/;" f +SetupDiOpenDevRegKey vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiOpenDevRegKey($/;" f +SetupDiOpenDeviceInfoA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiOpenDeviceInfoA($/;" f +SetupDiOpenDeviceInfoW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiOpenDeviceInfoW($/;" f +SetupDiOpenDeviceInterfaceA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiOpenDeviceInterfaceA($/;" f +SetupDiOpenDeviceInterfaceRegKey vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiOpenDeviceInterfaceRegKey($/;" f +SetupDiOpenDeviceInterfaceW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiOpenDeviceInterfaceW($/;" f +SetupDiRegisterCoDeviceInstallers vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiRegisterCoDeviceInstallers($/;" f +SetupDiRegisterDeviceInfo vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiRegisterDeviceInfo($/;" f +SetupDiRemoveDevice vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiRemoveDevice($/;" f +SetupDiRemoveDeviceInterface vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiRemoveDeviceInterface($/;" f +SetupDiRestartDevices vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiRestartDevices($/;" f +SetupDiSelectBestCompatDrv vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSelectBestCompatDrv($/;" f +SetupDiSelectDevice vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSelectDevice($/;" f +SetupDiSelectOEMDrv vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSelectOEMDrv($/;" f +SetupDiSetClassInstallParamsA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetClassInstallParamsA($/;" f +SetupDiSetClassInstallParamsW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetClassInstallParamsW($/;" f +SetupDiSetClassPropertyExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetClassPropertyExW($/;" f +SetupDiSetClassPropertyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetClassPropertyW($/;" f +SetupDiSetClassRegistryPropertyA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetClassRegistryPropertyA($/;" f +SetupDiSetClassRegistryPropertyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetClassRegistryPropertyW($/;" f +SetupDiSetDeviceInstallParamsA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetDeviceInstallParamsA($/;" f +SetupDiSetDeviceInstallParamsW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetDeviceInstallParamsW($/;" f +SetupDiSetDeviceInterfaceDefault vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetDeviceInterfaceDefault($/;" f +SetupDiSetDeviceInterfacePropertyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetDeviceInterfacePropertyW($/;" f +SetupDiSetDevicePropertyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetDevicePropertyW($/;" f +SetupDiSetDeviceRegistryPropertyA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetDeviceRegistryPropertyA($/;" f +SetupDiSetDeviceRegistryPropertyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetDeviceRegistryPropertyW($/;" f +SetupDiSetDriverInstallParamsA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetDriverInstallParamsA($/;" f +SetupDiSetDriverInstallParamsW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetDriverInstallParamsW($/;" f +SetupDiSetSelectedDevice vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetSelectedDevice($/;" f +SetupDiSetSelectedDriverA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetSelectedDriverA($/;" f +SetupDiSetSelectedDriverW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiSetSelectedDriverW($/;" f +SetupDiUnremoveDevice vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDiUnremoveDevice($/;" f +SetupDuplicateDiskSpaceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDuplicateDiskSpaceListA($/;" f +SetupDuplicateDiskSpaceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupDuplicateDiskSpaceListW($/;" f +SetupEnumInfSectionsA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupEnumInfSectionsA($/;" f +SetupEnumInfSectionsW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupEnumInfSectionsW($/;" f +SetupFindFirstLineA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupFindFirstLineA($/;" f +SetupFindFirstLineW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupFindFirstLineW($/;" f +SetupFindNextLine vendor/winapi/src/um/setupapi.rs /^ pub fn SetupFindNextLine($/;" f +SetupFindNextMatchLineA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupFindNextMatchLineA($/;" f +SetupFindNextMatchLineW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupFindNextMatchLineW($/;" f +SetupFreeSourceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupFreeSourceListA($/;" f +SetupFreeSourceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupFreeSourceListW($/;" f +SetupGetBackupInformationA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetBackupInformationA($/;" f +SetupGetBackupInformationW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetBackupInformationW($/;" f +SetupGetBinaryField vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetBinaryField($/;" f +SetupGetFieldCount vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetFieldCount($/;" f +SetupGetFileCompressionInfoA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetFileCompressionInfoA($/;" f +SetupGetFileCompressionInfoExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetFileCompressionInfoExA($/;" f +SetupGetFileCompressionInfoExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetFileCompressionInfoExW($/;" f +SetupGetFileCompressionInfoW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetFileCompressionInfoW($/;" f +SetupGetFileQueueCount vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetFileQueueCount($/;" f +SetupGetFileQueueFlags vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetFileQueueFlags($/;" f +SetupGetInfDriverStoreLocationA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetInfDriverStoreLocationA($/;" f +SetupGetInfDriverStoreLocationW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetInfDriverStoreLocationW($/;" f +SetupGetInfFileListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetInfFileListA($/;" f +SetupGetInfFileListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetInfFileListW($/;" f +SetupGetInfInformationA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetInfInformationA($/;" f +SetupGetInfInformationW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetInfInformationW($/;" f +SetupGetInfPublishedNameA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetInfPublishedNameA($/;" f +SetupGetInfPublishedNameW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetInfPublishedNameW($/;" f +SetupGetIntField vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetIntField($/;" f +SetupGetLineByIndexA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetLineByIndexA($/;" f +SetupGetLineByIndexW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetLineByIndexW($/;" f +SetupGetLineCountA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetLineCountA($/;" f +SetupGetLineCountW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetLineCountW($/;" f +SetupGetLineTextA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetLineTextA($/;" f +SetupGetLineTextW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetLineTextW($/;" f +SetupGetMultiSzFieldA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetMultiSzFieldA($/;" f +SetupGetMultiSzFieldW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetMultiSzFieldW($/;" f +SetupGetNonInteractiveMode vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetNonInteractiveMode() -> BOOL;$/;" f +SetupGetSourceFileLocationA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetSourceFileLocationA($/;" f +SetupGetSourceFileLocationW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetSourceFileLocationW($/;" f +SetupGetSourceFileSizeA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetSourceFileSizeA($/;" f +SetupGetSourceFileSizeW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetSourceFileSizeW($/;" f +SetupGetSourceInfoA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetSourceInfoA($/;" f +SetupGetSourceInfoW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetSourceInfoW($/;" f +SetupGetStringFieldA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetStringFieldA($/;" f +SetupGetStringFieldW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetStringFieldW($/;" f +SetupGetTargetPathA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetTargetPathA($/;" f +SetupGetTargetPathW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetTargetPathW($/;" f +SetupGetThreadLogToken vendor/winapi/src/um/setupapi.rs /^ pub fn SetupGetThreadLogToken() -> SP_LOG_TOKEN;$/;" f +SetupInitDefaultQueueCallback vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInitDefaultQueueCallback($/;" f +SetupInitDefaultQueueCallbackEx vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInitDefaultQueueCallbackEx($/;" f +SetupInitializeFileLogA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInitializeFileLogA($/;" f +SetupInitializeFileLogW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInitializeFileLogW($/;" f +SetupInstallFileA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInstallFileA($/;" f +SetupInstallFileExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInstallFileExA($/;" f +SetupInstallFileExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInstallFileExW($/;" f +SetupInstallFileW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInstallFileW($/;" f +SetupInstallFilesFromInfSectionA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInstallFilesFromInfSectionA($/;" f +SetupInstallFilesFromInfSectionW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInstallFilesFromInfSectionW($/;" f +SetupInstallFromInfSectionA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInstallFromInfSectionA($/;" f +SetupInstallFromInfSectionW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInstallFromInfSectionW($/;" f +SetupInstallServicesFromInfSectionA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInstallServicesFromInfSectionA($/;" f +SetupInstallServicesFromInfSectionExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInstallServicesFromInfSectionExA($/;" f +SetupInstallServicesFromInfSectionExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInstallServicesFromInfSectionExW($/;" f +SetupInstallServicesFromInfSectionW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupInstallServicesFromInfSectionW($/;" f +SetupIterateCabinetA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupIterateCabinetA($/;" f +SetupIterateCabinetW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupIterateCabinetW($/;" f +SetupLogErrorA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupLogErrorA($/;" f +SetupLogErrorW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupLogErrorW($/;" f +SetupLogFileA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupLogFileA($/;" f +SetupLogFileW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupLogFileW($/;" f +SetupOpenAppendInfFileA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupOpenAppendInfFileA($/;" f +SetupOpenAppendInfFileW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupOpenAppendInfFileW($/;" f +SetupOpenFileQueue vendor/winapi/src/um/setupapi.rs /^ pub fn SetupOpenFileQueue() -> HSPFILEQ;$/;" f +SetupOpenInfFileA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupOpenInfFileA($/;" f +SetupOpenInfFileW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupOpenInfFileW($/;" f +SetupOpenLog vendor/winapi/src/um/setupapi.rs /^ pub fn SetupOpenLog($/;" f +SetupOpenMasterInf vendor/winapi/src/um/setupapi.rs /^ pub fn SetupOpenMasterInf() -> HINF;$/;" f +SetupPrepareQueueForRestoreA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupPrepareQueueForRestoreA($/;" f +SetupPrepareQueueForRestoreW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupPrepareQueueForRestoreW($/;" f +SetupPromptForDiskA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupPromptForDiskA($/;" f +SetupPromptForDiskW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupPromptForDiskW($/;" f +SetupPromptReboot vendor/winapi/src/um/setupapi.rs /^ pub fn SetupPromptReboot($/;" f +SetupQueryDrivesInDiskSpaceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueryDrivesInDiskSpaceListA($/;" f +SetupQueryDrivesInDiskSpaceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueryDrivesInDiskSpaceListW($/;" f +SetupQueryFileLogA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueryFileLogA($/;" f +SetupQueryFileLogW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueryFileLogW($/;" f +SetupQueryInfFileInformationA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueryInfFileInformationA($/;" f +SetupQueryInfFileInformationW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueryInfFileInformationW($/;" f +SetupQueryInfOriginalFileInformationA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueryInfOriginalFileInformationA($/;" f +SetupQueryInfOriginalFileInformationW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueryInfOriginalFileInformationW($/;" f +SetupQueryInfVersionInformationA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueryInfVersionInformationA($/;" f +SetupQueryInfVersionInformationW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueryInfVersionInformationW($/;" f +SetupQuerySourceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQuerySourceListA($/;" f +SetupQuerySourceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQuerySourceListW($/;" f +SetupQuerySpaceRequiredOnDriveA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQuerySpaceRequiredOnDriveA($/;" f +SetupQuerySpaceRequiredOnDriveW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQuerySpaceRequiredOnDriveW($/;" f +SetupQueueCopyA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueCopyA($/;" f +SetupQueueCopyIndirectA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueCopyIndirectA($/;" f +SetupQueueCopyIndirectW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueCopyIndirectW($/;" f +SetupQueueCopySectionA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueCopySectionA($/;" f +SetupQueueCopySectionW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueCopySectionW($/;" f +SetupQueueCopyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueCopyW($/;" f +SetupQueueDefaultCopyA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueDefaultCopyA($/;" f +SetupQueueDefaultCopyW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueDefaultCopyW($/;" f +SetupQueueDeleteA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueDeleteA($/;" f +SetupQueueDeleteSectionA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueDeleteSectionA($/;" f +SetupQueueDeleteSectionW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueDeleteSectionW($/;" f +SetupQueueDeleteW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueDeleteW($/;" f +SetupQueueRenameA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueRenameA($/;" f +SetupQueueRenameSectionA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueRenameSectionA($/;" f +SetupQueueRenameSectionW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueRenameSectionW($/;" f +SetupQueueRenameW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupQueueRenameW($/;" f +SetupRemoveFileLogEntryA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupRemoveFileLogEntryA($/;" f +SetupRemoveFileLogEntryW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupRemoveFileLogEntryW($/;" f +SetupRemoveFromDiskSpaceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupRemoveFromDiskSpaceListA($/;" f +SetupRemoveFromDiskSpaceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupRemoveFromDiskSpaceListW($/;" f +SetupRemoveFromSourceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupRemoveFromSourceListA($/;" f +SetupRemoveFromSourceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupRemoveFromSourceListW($/;" f +SetupRemoveInstallSectionFromDiskSpaceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupRemoveInstallSectionFromDiskSpaceListA($/;" f +SetupRemoveInstallSectionFromDiskSpaceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupRemoveInstallSectionFromDiskSpaceListW($/;" f +SetupRemoveSectionFromDiskSpaceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupRemoveSectionFromDiskSpaceListA($/;" f +SetupRemoveSectionFromDiskSpaceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupRemoveSectionFromDiskSpaceListW($/;" f +SetupRenameErrorA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupRenameErrorA($/;" f +SetupRenameErrorW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupRenameErrorW($/;" f +SetupScanFileQueueA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupScanFileQueueA($/;" f +SetupScanFileQueueW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupScanFileQueueW($/;" f +SetupSetDirectoryIdA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetDirectoryIdA($/;" f +SetupSetDirectoryIdExA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetDirectoryIdExA($/;" f +SetupSetDirectoryIdExW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetDirectoryIdExW($/;" f +SetupSetDirectoryIdW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetDirectoryIdW($/;" f +SetupSetFileQueueAlternatePlatformA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetFileQueueAlternatePlatformA($/;" f +SetupSetFileQueueAlternatePlatformW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetFileQueueAlternatePlatformW($/;" f +SetupSetFileQueueFlags vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetFileQueueFlags($/;" f +SetupSetNonInteractiveMode vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetNonInteractiveMode($/;" f +SetupSetPlatformPathOverrideA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetPlatformPathOverrideA($/;" f +SetupSetPlatformPathOverrideW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetPlatformPathOverrideW($/;" f +SetupSetSourceListA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetSourceListA($/;" f +SetupSetSourceListW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetSourceListW($/;" f +SetupSetThreadLogToken vendor/winapi/src/um/setupapi.rs /^ pub fn SetupSetThreadLogToken($/;" f +SetupTermDefaultQueueCallback vendor/winapi/src/um/setupapi.rs /^ pub fn SetupTermDefaultQueueCallback($/;" f +SetupTerminateFileLog vendor/winapi/src/um/setupapi.rs /^ pub fn SetupTerminateFileLog($/;" f +SetupUninstallNewlyCopiedInfs vendor/winapi/src/um/setupapi.rs /^ pub fn SetupUninstallNewlyCopiedInfs($/;" f +SetupUninstallOEMInfA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupUninstallOEMInfA($/;" f +SetupUninstallOEMInfW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupUninstallOEMInfW($/;" f +SetupVerifyInfFileA vendor/winapi/src/um/setupapi.rs /^ pub fn SetupVerifyInfFileA($/;" f +SetupVerifyInfFileW vendor/winapi/src/um/setupapi.rs /^ pub fn SetupVerifyInfFileW($/;" f +SetupWriteTextLogInfLine vendor/winapi/src/um/setupapi.rs /^ pub fn SetupWriteTextLogInfLine($/;" f +ShVarAssignFuncT builtins_rust/shopt/src/lib.rs /^pub type ShVarAssignFuncT = unsafe extern "C" fn($/;" t +ShVarValueFuncT builtins_rust/shopt/src/lib.rs /^pub type ShVarValueFuncT = unsafe extern "C" fn(*mut variable) -> *mut variable;$/;" t +Shared vendor/futures-util/src/future/future/shared.rs /^impl Shared {$/;" c +Shared vendor/futures-util/src/future/future/shared.rs /^impl Unpin for Shared {}$/;" c +Shared vendor/futures-util/src/future/future/shared.rs /^impl fmt::Debug for Shared {$/;" c +Shared vendor/futures-util/src/future/future/shared.rs /^impl Clone for Shared$/;" c +Shared vendor/futures-util/src/future/future/shared.rs /^impl Drop for Shared$/;" c +Shared vendor/futures-util/src/future/future/shared.rs /^impl FusedFuture for Shared$/;" c +Shared vendor/futures-util/src/future/future/shared.rs /^impl Future for Shared$/;" c +Shared vendor/futures-util/src/future/future/shared.rs /^impl Shared$/;" c +Shared vendor/futures-util/src/future/future/shared.rs /^pub struct Shared {$/;" s +SharedPollState vendor/futures-util/src/stream/stream/flatten_unordered.rs /^impl SharedPollState {$/;" c +SharedPollState vendor/futures-util/src/stream/stream/flatten_unordered.rs /^struct SharedPollState {$/;" s +ShellAboutA vendor/winapi/src/um/shellapi.rs /^ pub fn ShellAboutA($/;" f +ShellAboutW vendor/winapi/src/um/shellapi.rs /^ pub fn ShellAboutW($/;" f +ShellExecuteA vendor/winapi/src/um/shellapi.rs /^ pub fn ShellExecuteA($/;" f +ShellExecuteExA vendor/winapi/src/um/shellapi.rs /^ pub fn ShellExecuteExA($/;" f +ShellExecuteExW vendor/winapi/src/um/shellapi.rs /^ pub fn ShellExecuteExW($/;" f +ShellExecuteW vendor/winapi/src/um/shellapi.rs /^ pub fn ShellExecuteW($/;" f +ShellMessageBoxA vendor/winapi/src/um/shellapi.rs /^ pub fn ShellMessageBoxA($/;" f +ShellMessageBoxW vendor/winapi/src/um/shellapi.rs /^ pub fn ShellMessageBoxW($/;" f +ShellVar builtins_rust/shopt/src/lib.rs /^pub type ShellVar = variable;$/;" t +Shell_NotifyIconA vendor/winapi/src/um/shellapi.rs /^ pub fn Shell_NotifyIconA($/;" f +Shell_NotifyIconGetRect vendor/winapi/src/um/shellapi.rs /^ pub fn Shell_NotifyIconGetRect($/;" f +Shell_NotifyIconW vendor/winapi/src/um/shellapi.rs /^ pub fn Shell_NotifyIconW($/;" f +Shift vendor/memchr/src/memmem/twoway.rs /^enum Shift {$/;" g +Shift vendor/memchr/src/memmem/twoway.rs /^impl Shift {$/;" c +Shift vendor/syn/src/expr.rs /^ Shift,$/;" e enum:parsing::Precedence +ShiftCmd builtins_rust/exec_cmd/src/lib.rs /^ ShiftCmd,$/;" e enum:CMDType +ShiftComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for ShiftComand {$/;" c +ShiftComand builtins_rust/exec_cmd/src/lib.rs /^struct ShiftComand;$/;" s +ShoptCmd builtins_rust/exec_cmd/src/lib.rs /^ ShoptCmd,$/;" e enum:CMDType +ShoptComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for ShoptComand {$/;" c +ShoptComand builtins_rust/exec_cmd/src/lib.rs /^struct ShoptComand;$/;" s +ShoptSetFuncT builtins_rust/shopt/src/lib.rs /^pub type ShoptSetFuncT = unsafe extern "C" fn(*mut libc::c_char, i32) -> i32;$/;" t +ShortReader vendor/futures/tests/io_buf_reader.rs /^ impl io::Read for ShortReader {$/;" c function:test_short_reads +ShortReader vendor/futures/tests/io_buf_reader.rs /^ struct ShortReader {$/;" s function:test_short_reads +Should I still use those `-sys` crates such as `kernel32-sys`? vendor/winapi/README.md /^### Should I still use those `-sys` crates such as `kernel32-sys`?$/;" S section:winapi-rs""Frequently asked questions +ShouldBlockRevert vendor/winapi/src/um/vsbackup.rs /^ pub fn ShouldBlockRevert($/;" f +ShowCaret vendor/winapi/src/um/winuser.rs /^ pub fn ShowCaret($/;" f +ShowCursor vendor/winapi/src/um/winuser.rs /^ pub fn ShowCursor($/;" f +ShowHideMenuCtl vendor/winapi/src/um/commctrl.rs /^ pub fn ShowHideMenuCtl($/;" f +ShowOwnedPopups vendor/winapi/src/um/winuser.rs /^ pub fn ShowOwnedPopups($/;" f +ShowScrollBar vendor/winapi/src/um/winuser.rs /^ pub fn ShowScrollBar($/;" f +ShowWindow vendor/winapi/src/um/winuser.rs /^ pub fn ShowWindow($/;" f +ShowWindowAsync vendor/winapi/src/um/winuser.rs /^ pub fn ShowWindowAsync($/;" f +Shutdown vendor/nix/src/sys/socket/mod.rs /^pub enum Shutdown {$/;" g +ShutdownBlockReasonCreate vendor/winapi/src/um/winuser.rs /^ pub fn ShutdownBlockReasonCreate($/;" f +ShutdownBlockReasonDestroy vendor/winapi/src/um/winuser.rs /^ pub fn ShutdownBlockReasonDestroy($/;" f +ShutdownBlockReasonQuery vendor/winapi/src/um/winuser.rs /^ pub fn ShutdownBlockReasonQuery($/;" f +Si vendor/futures-util/src/compat/compat01as03.rs /^impl Sink01CompatExt for Si {}$/;" c +SigHandler builtins_rust/read/src/intercdep.rs /^pub type SigHandler = unsafe extern "C" fn(arg1: c_int);$/;" t +SigHandler builtins_rust/suspend/src/intercdep.rs /^pub type SigHandler = unsafe extern "C" fn(arg1: c_int);$/;" t +SigHandler builtins_rust/trap/src/intercdep.rs /^pub type SigHandler = unsafe extern "C" fn(arg1: c_int);$/;" t +SigHandler lib/readline/signals.c /^typedef RETSIGTYPE SigHandler ();$/;" t typeref:typename:RETSIGTYPE ()() file: +SigHandler r_bash/src/lib.rs /^pub type SigHandler = ::std::option::Option;$/;" t +SigHandler1 r_jobs/src/lib.rs /^pub type SigHandler1 = Option;$/;" t +Signal vendor/nix/src/sys/signal.rs /^impl AsRef for Signal {$/;" c +Signal vendor/nix/src/sys/signal.rs /^impl FromStr for Signal {$/;" c +Signal vendor/nix/src/sys/signal.rs /^impl Signal {$/;" c +Signal vendor/nix/src/sys/signal.rs /^impl fmt::Display for Signal {$/;" c +SignalFd vendor/nix/src/sys/signalfd.rs /^impl AsRawFd for SignalFd {$/;" c +SignalFd vendor/nix/src/sys/signalfd.rs /^impl Drop for SignalFd {$/;" c +SignalFd vendor/nix/src/sys/signalfd.rs /^impl Iterator for SignalFd {$/;" c +SignalFd vendor/nix/src/sys/signalfd.rs /^impl SignalFd {$/;" c +SignalFd vendor/nix/src/sys/signalfd.rs /^pub struct SignalFd(RawFd);$/;" s +SignalObjectAndWait vendor/winapi/src/um/synchapi.rs /^ pub fn SignalObjectAndWait($/;" f +Signaled vendor/nix/src/sys/wait.rs /^ Signaled(Pid, Signal, bool),$/;" e enum:WaitStatus +Signature vendor/syn/src/gen/clone.rs /^impl Clone for Signature {$/;" c +Signature vendor/syn/src/gen/debug.rs /^impl Debug for Signature {$/;" c +Signature vendor/syn/src/gen/eq.rs /^impl Eq for Signature {}$/;" c +Signature vendor/syn/src/gen/eq.rs /^impl PartialEq for Signature {$/;" c +Signature vendor/syn/src/gen/hash.rs /^impl Hash for Signature {$/;" c +Signature vendor/syn/src/item.rs /^ impl Parse for Signature {$/;" c module:parsing +Signature vendor/syn/src/item.rs /^ impl ToTokens for Signature {$/;" c module:printing +Signature vendor/syn/src/item.rs /^impl Signature {$/;" c +SilentEmitter vendor/syn/benches/rust.rs /^ impl Emitter for SilentEmitter {$/;" c function:librustc_parse::bench +SilentEmitter vendor/syn/benches/rust.rs /^ impl Translate for SilentEmitter {$/;" c function:librustc_parse::bench +SilentEmitter vendor/syn/benches/rust.rs /^ struct SilentEmitter;$/;" s function:librustc_parse::bench +Similar: Safety vendor/pin-project-lite/README.md /^### Similar: Safety$/;" S section:pin-project-lite""[pin-project] vs pin-project-lite +Simple command.h /^ struct simple_com *Simple;$/;" m union:command::__anon3aaf009a020a typeref:struct:simple_com * +SimpleFactory builtins_rust/exec_cmd/src/lib.rs /^impl Factory for SimpleFactory {$/;" c +SimpleFactory builtins_rust/exec_cmd/src/lib.rs /^impl SimpleFactory {$/;" c +SimpleFactory builtins_rust/exec_cmd/src/lib.rs /^struct SimpleFactory;$/;" s +SimpleTexi2Html support/texi2html /^sub SimpleTexi2Html$/;" s +Single vendor/fluent-syntax/src/ast/helper.rs /^ Single { content: S },$/;" e enum:CommentDef +Sink vendor/futures-sink/src/lib.rs /^pub trait Sink {$/;" i +Sink vendor/futures-util/src/io/sink.rs /^impl AsyncWrite for Sink {$/;" c +Sink vendor/futures-util/src/io/sink.rs /^impl fmt::Debug for Sink {$/;" c +Sink vendor/futures-util/src/io/sink.rs /^pub struct Sink {$/;" s +Sink01CompatExt vendor/futures-util/src/compat/compat01as03.rs /^pub trait Sink01CompatExt: Sink01 {$/;" i +SinkErrInto vendor/futures-util/src/sink/err_into.rs /^impl FusedStream for SinkErrInto$/;" c +SinkErrInto vendor/futures-util/src/sink/err_into.rs /^impl Stream for SinkErrInto$/;" c +SinkErrInto vendor/futures-util/src/sink/err_into.rs /^impl SinkErrInto$/;" c +SinkErrInto vendor/futures-util/src/sink/err_into.rs /^impl Sink for SinkErrInto$/;" c +SinkError vendor/futures-util/src/compat/compat03as01.rs /^ type SinkError = T::Error;$/;" t +SinkExt vendor/futures-util/src/sink/mod.rs /^pub trait SinkExt: Sink {$/;" i +SinkItem vendor/futures-util/src/compat/compat03as01.rs /^ type SinkItem = Item;$/;" t +SinkMapErr vendor/futures-util/src/sink/map_err.rs /^impl FusedStream for SinkMapErr {$/;" c +SinkMapErr vendor/futures-util/src/sink/map_err.rs /^impl Stream for SinkMapErr {$/;" c +SinkMapErr vendor/futures-util/src/sink/map_err.rs /^impl Sink for SinkMapErr$/;" c +SinkMapErr vendor/futures-util/src/sink/map_err.rs /^impl SinkMapErr {$/;" c +SizeT builtins_rust/alias/src/lib.rs /^pub type SizeT = libc::c_ulong;$/;" t +SizeT builtins_rust/shopt/src/lib.rs /^pub type SizeT = libc::c_ulong;$/;" t +SizeofResource vendor/winapi/src/um/libloaderapi.rs /^ pub fn SizeofResource($/;" f +Skip vendor/futures-util/src/stream/stream/skip.rs /^impl Sink for Skip$/;" c +Skip vendor/futures-util/src/stream/stream/skip.rs /^impl FusedStream for Skip {$/;" c +Skip vendor/futures-util/src/stream/stream/skip.rs /^impl Skip {$/;" c +Skip vendor/futures-util/src/stream/stream/skip.rs /^impl Stream for Skip {$/;" c +Skip vendor/memchr/src/memmem/twoway.rs /^ Skip,$/;" e enum:SuffixOrdering +SkipPointerFrameMessages vendor/winapi/src/um/winuser.rs /^ pub fn SkipPointerFrameMessages($/;" f +SkipWhile vendor/futures-util/src/stream/stream/skip_while.rs /^impl Sink for SkipWhile$/;" c +SkipWhile vendor/futures-util/src/stream/stream/skip_while.rs /^impl FusedStream for SkipWhile$/;" c +SkipWhile vendor/futures-util/src/stream/stream/skip_while.rs /^impl SkipWhile$/;" c +SkipWhile vendor/futures-util/src/stream/stream/skip_while.rs /^impl Stream for SkipWhile$/;" c +SkipWhile vendor/futures-util/src/stream/stream/skip_while.rs /^impl fmt::Debug for SkipWhile$/;" c +Slab vendor/slab/README.md /^# Slab$/;" c +Slab vendor/slab/src/lib.rs /^impl<'a, T> IntoIterator for &'a Slab {$/;" c +Slab vendor/slab/src/lib.rs /^impl<'a, T> IntoIterator for &'a mut Slab {$/;" c +Slab vendor/slab/src/lib.rs /^impl Default for Slab {$/;" c +Slab vendor/slab/src/lib.rs /^impl FromIterator<(usize, T)> for Slab {$/;" c +Slab vendor/slab/src/lib.rs /^impl IntoIterator for Slab {$/;" c +Slab vendor/slab/src/lib.rs /^impl Slab {$/;" c +Slab vendor/slab/src/lib.rs /^impl fmt::Debug for Slab$/;" c +Slab vendor/slab/src/lib.rs /^impl ops::Index for Slab {$/;" c +Slab vendor/slab/src/lib.rs /^impl ops::IndexMut for Slab {$/;" c +Slab vendor/slab/src/lib.rs /^pub struct Slab {$/;" s +Slab vendor/slab/src/serde.rs /^impl<'de, T> Deserialize<'de> for Slab$/;" c +Slab vendor/slab/src/serde.rs /^impl Serialize for Slab$/;" c +SlabPartialEq vendor/slab/tests/serde.rs /^impl PartialEq for SlabPartialEq {$/;" c +SlabPartialEq vendor/slab/tests/serde.rs /^struct SlabPartialEq(Slab);$/;" s +SlabVisitor vendor/slab/src/serde.rs /^impl<'de, T> Visitor<'de> for SlabVisitor$/;" c +SlabVisitor vendor/slab/src/serde.rs /^struct SlabVisitor(PhantomData);$/;" s +Sleep vendor/winapi/src/um/synchapi.rs /^ pub fn Sleep($/;" f +SleepConditionVariableCS vendor/winapi/src/um/synchapi.rs /^ pub fn SleepConditionVariableCS($/;" f +SleepConditionVariableSRW vendor/winapi/src/um/synchapi.rs /^ pub fn SleepConditionVariableSRW($/;" f +SleepEx vendor/winapi/src/um/synchapi.rs /^ pub fn SleepEx($/;" f +Slice vendor/fluent-syntax/src/parser/slice.rs /^pub trait Slice<'s>: AsRef + Clone + PartialEq {$/;" i +SlowStream vendor/futures/tests/stream.rs /^impl Stream for SlowStream {$/;" c +SlowStream vendor/futures/tests/stream.rs /^struct SlowStream {$/;" s +Small vendor/futures-util/src/future/join_all.rs /^ Small {$/;" e enum:JoinAllKind +Small vendor/futures-util/src/future/try_join_all.rs /^ Small {$/;" e enum:TryJoinAllKind +Small vendor/memchr/src/memmem/twoway.rs /^ Small { period: usize },$/;" e enum:Shift +SmallVec vendor/smallvec/benches/bench.rs /^impl Vector for SmallVec<[T; VEC_SIZE]> {$/;" c +SmallVec vendor/smallvec/src/arbitrary.rs /^impl<'a, A: Array> Arbitrary<'a> for SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl<'a, A: Array> From<&'a [A::Item]> for SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl<'a, A: Array> IntoIterator for &'a SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl<'a, A: Array> IntoIterator for &'a mut SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl<'a, A: Array> SpecFrom for SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl<'de, A: Array> Deserialize<'de> for SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl PartialEq> for SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl> ops::Index for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl> ops::IndexMut for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl> io::Write for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl AsMut<[A::Item]> for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl AsRef<[A::Item]> for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl Borrow<[A::Item]> for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl BorrowMut<[A::Item]> for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl Clone for SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl Default for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl Drop for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl Eq for SmallVec where A::Item: Eq {}$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl Extend for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl ExtendFromSlice for SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl From for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl From> for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl FromIterator for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl Hash for SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl IntoIterator for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl Ord for SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl PartialOrd for SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl Serialize for SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl fmt::Debug for SmallVec$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl ops::Deref for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl ops::DerefMut for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^impl SmallVec<[T; N]> {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^pub struct SmallVec {$/;" s +SmallVec vendor/smallvec/src/lib.rs /^unsafe impl<#[may_dangle] A: Array> Drop for SmallVec {$/;" c +SmallVec vendor/smallvec/src/lib.rs /^unsafe impl Send for SmallVec where A::Item: Send {}$/;" c +SmallVec vendor/smallvec/src/specialization.rs /^impl<'a, A: Array> SpecFrom for SmallVec$/;" c +SmallVecData vendor/smallvec/src/lib.rs /^enum SmallVecData {$/;" g +SmallVecData vendor/smallvec/src/lib.rs /^impl SmallVecData {$/;" c +SmallVecData vendor/smallvec/src/lib.rs /^impl SmallVecData<[T; N]> {$/;" c +SmallVecData vendor/smallvec/src/lib.rs /^unsafe impl Send for SmallVecData {}$/;" c +SmallVecData vendor/smallvec/src/lib.rs /^unsafe impl Sync for SmallVecData {}$/;" c +SmallVecVisitor vendor/smallvec/src/lib.rs /^impl<'de, A: Array> Visitor<'de> for SmallVecVisitor$/;" c +SmallVecVisitor vendor/smallvec/src/lib.rs /^struct SmallVecVisitor {$/;" s +Sna vendor/nix/src/sys/socket/addr.rs /^ Sna = libc::AF_SNA,$/;" e enum:AddressFamily +SockAddr vendor/nix/src/sys/socket/addr.rs /^impl SockAddr {$/;" c +SockAddr vendor/nix/src/sys/socket/addr.rs /^impl SockaddrLike for SockAddr {$/;" c +SockAddr vendor/nix/src/sys/socket/addr.rs /^impl fmt::Display for SockAddr {$/;" c +SockAddr vendor/nix/src/sys/socket/addr.rs /^impl private::SockaddrLikePriv for SockAddr {}$/;" c +SockAddr vendor/nix/src/sys/socket/addr.rs /^pub enum SockAddr {$/;" g +SockProtocol vendor/nix/src/sys/socket/mod.rs /^pub enum SockProtocol {$/;" g +SockType vendor/nix/src/sys/socket/mod.rs /^pub enum SockType {$/;" g +SockaddrIn vendor/nix/src/sys/socket/addr.rs /^impl AsRef for SockaddrIn {$/;" c +SockaddrIn vendor/nix/src/sys/socket/addr.rs /^impl From for SockaddrIn {$/;" c +SockaddrIn vendor/nix/src/sys/socket/addr.rs /^impl SockaddrIn {$/;" c +SockaddrIn vendor/nix/src/sys/socket/addr.rs /^impl SockaddrLike for SockaddrIn {$/;" c +SockaddrIn vendor/nix/src/sys/socket/addr.rs /^impl fmt::Display for SockaddrIn {$/;" c +SockaddrIn vendor/nix/src/sys/socket/addr.rs /^impl private::SockaddrLikePriv for SockaddrIn {}$/;" c +SockaddrIn vendor/nix/src/sys/socket/addr.rs /^impl std::str::FromStr for SockaddrIn {$/;" c +SockaddrIn vendor/nix/src/sys/socket/addr.rs /^pub struct SockaddrIn(libc::sockaddr_in);$/;" s +SockaddrIn6 vendor/nix/src/sys/socket/addr.rs /^impl AsRef for SockaddrIn6 {$/;" c +SockaddrIn6 vendor/nix/src/sys/socket/addr.rs /^impl From for SockaddrIn6 {$/;" c +SockaddrIn6 vendor/nix/src/sys/socket/addr.rs /^impl SockaddrIn6 {$/;" c +SockaddrIn6 vendor/nix/src/sys/socket/addr.rs /^impl SockaddrLike for SockaddrIn6 {$/;" c +SockaddrIn6 vendor/nix/src/sys/socket/addr.rs /^impl fmt::Display for SockaddrIn6 {$/;" c +SockaddrIn6 vendor/nix/src/sys/socket/addr.rs /^impl private::SockaddrLikePriv for SockaddrIn6 {}$/;" c +SockaddrIn6 vendor/nix/src/sys/socket/addr.rs /^impl std::str::FromStr for SockaddrIn6 {$/;" c +SockaddrIn6 vendor/nix/src/sys/socket/addr.rs /^pub struct SockaddrIn6(libc::sockaddr_in6);$/;" s +SockaddrLike vendor/nix/src/sys/socket/addr.rs /^impl SockaddrLike for () {$/;" c +SockaddrLike vendor/nix/src/sys/socket/addr.rs /^pub trait SockaddrLike: private::SockaddrLikePriv {$/;" i +SockaddrLikePriv vendor/nix/src/sys/socket/addr.rs /^ pub trait SockaddrLikePriv {$/;" i module:private +SockaddrLikePriv vendor/nix/src/sys/socket/addr.rs /^impl private::SockaddrLikePriv for () {$/;" c +SockaddrStorage vendor/nix/src/sys/socket/addr.rs /^impl From for SockaddrStorage {$/;" c +SockaddrStorage vendor/nix/src/sys/socket/addr.rs /^impl From for SockaddrStorage {$/;" c +SockaddrStorage vendor/nix/src/sys/socket/addr.rs /^impl From for SockaddrStorage {$/;" c +SockaddrStorage vendor/nix/src/sys/socket/addr.rs /^impl Hash for SockaddrStorage {$/;" c +SockaddrStorage vendor/nix/src/sys/socket/addr.rs /^impl PartialEq for SockaddrStorage {$/;" c +SockaddrStorage vendor/nix/src/sys/socket/addr.rs /^impl SockaddrLike for SockaddrStorage {$/;" c +SockaddrStorage vendor/nix/src/sys/socket/addr.rs /^impl SockaddrStorage {$/;" c +SockaddrStorage vendor/nix/src/sys/socket/addr.rs /^impl fmt::Debug for SockaddrStorage {$/;" c +SockaddrStorage vendor/nix/src/sys/socket/addr.rs /^impl fmt::Display for SockaddrStorage {$/;" c +SockaddrStorage vendor/nix/src/sys/socket/addr.rs /^impl private::SockaddrLikePriv for SockaddrStorage {}$/;" c +Socket vendor/nix/src/dir.rs /^ Socket,$/;" e enum:Type +SocketAddrV4 vendor/nix/src/sys/socket/addr.rs /^impl From for net::SocketAddrV4 {$/;" c +SocketAddrV6 vendor/nix/src/sys/socket/addr.rs /^impl From for net::SocketAddrV6 {$/;" c +Some builtins_rust/help/src/lib.rs /^ Some(T),$/;" e enum:Option +Some vendor/syn/src/parse.rs /^ Some(Span),$/;" e enum:Unexpected +Some vendor/thiserror/tests/test_display.rs /^ Some(&'static str),$/;" e enum:test_inherit::Error +Source vendor/thiserror/tests/test_generics.rs /^ Source(#[from] EnumDebugGeneric),$/;" e enum:EnumFromGeneric +SourceCmd builtins_rust/exec_cmd/src/lib.rs /^ SourceCmd,$/;" e enum:CMDType +SourceComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for SourceComand {$/;" c +SourceComand builtins_rust/exec_cmd/src/lib.rs /^struct SourceComand;$/;" s +SourceFile vendor/proc-macro2/src/fallback.rs /^impl Debug for SourceFile {$/;" c +SourceFile vendor/proc-macro2/src/fallback.rs /^impl SourceFile {$/;" c +SourceFile vendor/proc-macro2/src/fallback.rs /^pub(crate) struct SourceFile {$/;" s +SourceFile vendor/proc-macro2/src/lib.rs /^impl Debug for SourceFile {$/;" c +SourceFile vendor/proc-macro2/src/lib.rs /^impl SourceFile {$/;" c +SourceFile vendor/proc-macro2/src/lib.rs /^pub struct SourceFile {$/;" s +SourceFile vendor/proc-macro2/src/wrapper.rs /^impl Debug for SourceFile {$/;" c +SourceFile vendor/proc-macro2/src/wrapper.rs /^impl SourceFile {$/;" c +SourceFile vendor/proc-macro2/src/wrapper.rs /^pub(crate) enum SourceFile {$/;" g +SourceMap vendor/proc-macro2/src/fallback.rs /^impl SourceMap {$/;" c +SourceMap vendor/proc-macro2/src/fallback.rs /^struct SourceMap {$/;" s +Sp vendor/futures-task/src/spawn.rs /^impl LocalSpawn for &Sp {$/;" c +Sp vendor/futures-task/src/spawn.rs /^impl LocalSpawn for &mut Sp {$/;" c +Sp vendor/futures-task/src/spawn.rs /^impl Spawn for &Sp {$/;" c +Sp vendor/futures-task/src/spawn.rs /^impl Spawn for &mut Sp {$/;" c +Sp vendor/futures-util/src/task/spawn.rs /^impl LocalSpawnExt for Sp where Sp: LocalSpawn {}$/;" c +Sp vendor/futures-util/src/task/spawn.rs /^impl SpawnExt for Sp where Sp: Spawn {}$/;" c +Spacing vendor/proc-macro2/src/lib.rs /^pub enum Spacing {$/;" g +Span vendor/proc-macro2/src/fallback.rs /^impl Debug for Span {$/;" c +Span vendor/proc-macro2/src/fallback.rs /^impl Span {$/;" c +Span vendor/proc-macro2/src/fallback.rs /^pub(crate) struct Span {$/;" s +Span vendor/proc-macro2/src/lib.rs /^impl Debug for Span {$/;" c +Span vendor/proc-macro2/src/lib.rs /^impl Span {$/;" c +Span vendor/proc-macro2/src/lib.rs /^pub struct Span {$/;" s +Span vendor/proc-macro2/src/wrapper.rs /^impl Debug for Span {$/;" c +Span vendor/proc-macro2/src/wrapper.rs /^impl From for Span {$/;" c +Span vendor/proc-macro2/src/wrapper.rs /^impl From for crate::Span {$/;" c +Span vendor/proc-macro2/src/wrapper.rs /^impl Span {$/;" c +Span vendor/proc-macro2/src/wrapper.rs /^pub(crate) enum Span {$/;" g +Span vendor/quote/src/spanned.rs /^impl Spanned for Span {$/;" c +Span vendor/syn/src/gen_helper.rs /^ impl Spans for Span {$/;" c module:fold +Span vendor/syn/src/gen_helper.rs /^ impl Spans for Span {$/;" c module:visit +Span vendor/syn/src/gen_helper.rs /^ impl Spans for Span {$/;" c module:visit_mut +Span vendor/syn/src/gen_helper.rs /^ impl Spans for [Span; 1] {$/;" c module:fold +Span vendor/syn/src/gen_helper.rs /^ impl Spans for [Span; 1] {$/;" c module:visit +Span vendor/syn/src/gen_helper.rs /^ impl Spans for [Span; 1] {$/;" c module:visit_mut +Span vendor/syn/src/gen_helper.rs /^ impl Spans for [Span; 2] {$/;" c module:fold +Span vendor/syn/src/gen_helper.rs /^ impl Spans for [Span; 2] {$/;" c module:visit +Span vendor/syn/src/gen_helper.rs /^ impl Spans for [Span; 2] {$/;" c module:visit_mut +Span vendor/syn/src/gen_helper.rs /^ impl Spans for [Span; 3] {$/;" c module:fold +Span vendor/syn/src/gen_helper.rs /^ impl Spans for [Span; 3] {$/;" c module:visit +Span vendor/syn/src/gen_helper.rs /^ impl Spans for [Span; 3] {$/;" c module:visit_mut +Span vendor/syn/src/span.rs /^impl FromSpans for [Span; 1] {$/;" c +Span vendor/syn/src/span.rs /^impl FromSpans for [Span; 2] {$/;" c +Span vendor/syn/src/span.rs /^impl FromSpans for [Span; 3] {$/;" c +Span vendor/syn/src/span.rs /^impl IntoSpans<[Span; 1]> for Span {$/;" c +Span vendor/syn/src/span.rs /^impl IntoSpans<[Span; 1]> for [Span; 1] {$/;" c +Span vendor/syn/src/span.rs /^impl IntoSpans<[Span; 2]> for Span {$/;" c +Span vendor/syn/src/span.rs /^impl IntoSpans<[Span; 2]> for [Span; 2] {$/;" c +Span vendor/syn/src/span.rs /^impl IntoSpans<[Span; 3]> for Span {$/;" c +Span vendor/syn/src/span.rs /^impl IntoSpans<[Span; 3]> for [Span; 3] {$/;" c +SpanlessEq vendor/syn/tests/common/eq.rs /^pub trait SpanlessEq {$/;" i +Spanned vendor/quote/src/spanned.rs /^pub trait Spanned {$/;" i +Spanned vendor/syn/src/spanned.rs /^pub trait Spanned {$/;" i +Spanned vendor/syn/tests/common/eq.rs /^impl SpanlessEq for Spanned {$/;" c +Spans vendor/syn/src/gen_helper.rs /^ pub trait Spans {$/;" i module:fold +Spans vendor/syn/src/gen_helper.rs /^ pub trait Spans {$/;" i module:visit +Spans vendor/syn/src/gen_helper.rs /^ pub trait Spans {$/;" i module:visit_mut +Spans and error reporting vendor/syn/README.md /^## Spans and error reporting$/;" s chapter:Parser for Rust source code +Spawn vendor/futures-task/src/spawn.rs /^pub trait Spawn {$/;" i +SpawnError vendor/futures-task/src/spawn.rs /^impl SpawnError {$/;" c +SpawnError vendor/futures-task/src/spawn.rs /^impl fmt::Debug for SpawnError {$/;" c +SpawnError vendor/futures-task/src/spawn.rs /^impl fmt::Display for SpawnError {$/;" c +SpawnError vendor/futures-task/src/spawn.rs /^impl std::error::Error for SpawnError {}$/;" c +SpawnError vendor/futures-task/src/spawn.rs /^pub struct SpawnError {$/;" s +SpawnExt vendor/futures-util/src/task/spawn.rs /^pub trait SpawnExt: Spawn {$/;" i +SpecFrom vendor/smallvec/src/lib.rs /^trait SpecFrom {$/;" i +SpecialCharacterIndices vendor/nix/src/sys/termios.rs /^impl SpecialCharacterIndices {$/;" c +Speculative vendor/syn/src/discouraged.rs /^pub trait Speculative {$/;" i +Spin vendor/futures-executor/tests/local_pool.rs /^ impl Future for Spin {$/;" c function:tasks_are_scheduled_fairly +Spin vendor/futures-executor/tests/local_pool.rs /^ struct Spin {$/;" s function:tasks_are_scheduled_fairly +SplitSink vendor/futures-util/src/stream/stream/split.rs /^fn SplitSink, Item>(lock: BiLock) -> SplitSink {$/;" f +SplitSink vendor/futures-util/src/stream/stream/split.rs /^impl Unpin for SplitSink {}$/;" c +SplitSink vendor/futures-util/src/stream/stream/split.rs /^impl + Unpin, Item> SplitSink {$/;" c +SplitSink vendor/futures-util/src/stream/stream/split.rs /^impl, Item> Sink for SplitSink {$/;" c +SplitSink vendor/futures-util/src/stream/stream/split.rs /^impl, Item> SplitSink {$/;" c +SplitSink vendor/futures-util/src/stream/stream/split.rs /^pub struct SplitSink {$/;" s +SplitStream vendor/futures-util/src/stream/stream/split.rs /^impl Stream for SplitStream {$/;" c +SplitStream vendor/futures-util/src/stream/stream/split.rs /^impl SplitStream {$/;" c +SplitStream vendor/futures-util/src/stream/stream/split.rs /^impl Unpin for SplitStream {}$/;" c +SplitStream vendor/futures-util/src/stream/stream/split.rs /^pub struct SplitStream(BiLock);$/;" s +SspiGetCredUIContext vendor/winapi/src/shared/sspi.rs /^ pub fn SspiGetCredUIContext($/;" f +SspiIsPromptingNeeded vendor/winapi/src/shared/sspi.rs /^ pub fn SspiIsPromptingNeeded($/;" f +SspiPromptForCredentialsA vendor/winapi/src/shared/sspi.rs /^ pub fn SspiPromptForCredentialsA($/;" f +SspiPromptForCredentialsW vendor/winapi/src/shared/sspi.rs /^ pub fn SspiPromptForCredentialsW($/;" f +SspiUnmarshalCredUIContext vendor/winapi/src/shared/sspi.rs /^ pub fn SspiUnmarshalCredUIContext($/;" f +SspiUpdateCredentials vendor/winapi/src/shared/sspi.rs /^ pub fn SspiUpdateCredentials($/;" f +St vendor/futures-util/src/compat/compat01as03.rs /^impl Stream01CompatExt for St {}$/;" c +StableDeref vendor/stable_deref_trait/src/lib.rs /^pub unsafe trait StableDeref: Deref {}$/;" i +StackWalk vendor/winapi/src/um/dbghelp.rs /^ pub fn StackWalk($/;" f +StackWalk64 vendor/winapi/src/um/dbghelp.rs /^ pub fn StackWalk64($/;" f +StackWalkEx vendor/winapi/src/um/dbghelp.rs /^ pub fn StackWalkEx($/;" f +Start vendor/futures-util/src/stream/select_with_strategy.rs /^ Start,$/;" e enum:InternalState +StartDocA vendor/winapi/src/um/wingdi.rs /^ pub fn StartDocA($/;" f +StartDocPrinterA vendor/winapi/src/um/winspool.rs /^ pub fn StartDocPrinterA($/;" f +StartDocPrinterW vendor/winapi/src/um/winspool.rs /^ pub fn StartDocPrinterW($/;" f +StartDocW vendor/winapi/src/um/wingdi.rs /^ pub fn StartDocW($/;" f +StartPage vendor/winapi/src/um/wingdi.rs /^ pub fn StartPage($/;" f +StartPagePrinter vendor/winapi/src/um/winspool.rs /^ pub fn StartPagePrinter($/;" f +StartSendFut vendor/futures/tests/sink.rs /^impl + Unpin, Item: Unpin> Future for StartSendFut {$/;" c +StartSendFut vendor/futures/tests/sink.rs /^impl + Unpin, Item: Unpin> StartSendFut {$/;" c +StartSendFut vendor/futures/tests/sink.rs /^struct StartSendFut + Unpin, Item: Unpin>(Option, Option);$/;" s +StartServiceA vendor/winapi/src/um/winsvc.rs /^ pub fn StartServiceA($/;" f +StartServiceCtrlDispatcherA vendor/winapi/src/um/winsvc.rs /^ pub fn StartServiceCtrlDispatcherA($/;" f +StartServiceCtrlDispatcherW vendor/winapi/src/um/winsvc.rs /^ pub fn StartServiceCtrlDispatcherW($/;" f +StartServiceW vendor/winapi/src/um/winsvc.rs /^ pub fn StartServiceW($/;" f +StartThreadpoolIo vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn StartThreadpoolIo($/;" f +StartTraceA vendor/winapi/src/shared/evntrace.rs /^ pub fn StartTraceA($/;" f +StartTraceW vendor/winapi/src/shared/evntrace.rs /^ pub fn StartTraceW($/;" f +State vendor/futures-channel/src/mpsc/mod.rs /^impl State {$/;" c +State vendor/futures-channel/src/mpsc/mod.rs /^struct State {$/;" s +StateFn vendor/futures-util/src/stream/stream/scan.rs /^struct StateFn {$/;" s +Statfs vendor/nix/src/sys/statfs.rs /^impl Debug for Statfs {$/;" c +Statfs vendor/nix/src/sys/statfs.rs /^impl Statfs {$/;" c +Statfs vendor/nix/src/sys/statfs.rs /^pub struct Statfs(libc::statfs);$/;" s +Static vendor/pin-project-lite/tests/test.rs /^ trait Static: 'static {}$/;" i function:trait_bounds_on_type_generics +Static vendor/pin-project-lite/tests/test.rs /^ trait Static: 'static {}$/;" i function:where_clause_and_associated_type_field +StaticWithWhereSelf vendor/async-trait/tests/test.rs /^ pub trait StaticWithWhereSelf$/;" i module:issue44 +Status vendor/fluent-bundle/README.md /^Status$/;" s chapter:Fluent +Status vendor/fluent-fallback/README.md /^Status$/;" s chapter:Fluent +Status vendor/fluent-langneg/README.md /^Status$/;" s chapter:Fluent LangNeg +Status vendor/fluent-resmgr/README.md /^Status$/;" s chapter:Fluent Resource Manager +Status vendor/fluent-syntax/README.md /^Status$/;" s chapter:Fluent Syntax +Status vendor/fluent/README.md /^Status$/;" s chapter:Fluent +Status vendor/intl_pluralrules/README.md /^Status$/;" s chapter:INTL Plural Rules +Status vendor/tinystr/README.md /^Status$/;" s chapter:tinystr [![crates.io](http://meritbadge.herokuapp.com/tinystr)](https://crates.io/crates/tinystr) [![Build Status](https://travis-ci.org/zbraniecki/tinystr.svg?branch=master)](https://travis-ci.org/zbraniecki/tinystr) [![Coverage Status](https://coveralls.io/repos/github/zbraniecki/tinystr/badge.svg?branch=master)](https://coveralls.io/github/zbraniecki/tinystr?branch=master) +Status vendor/unic-langid/README.md /^Status$/;" s chapter:unic-langid [![Build Status](https://travis-ci.org/zbraniecki/unic-locale.svg?branch=master)](https://travis-ci.org/zbraniecki/unic-locale) [![Coverage Status](https://coveralls.io/repos/github/zbraniecki/unic-locale/badge.svg?branch=master)](https://coveralls.io/github/zbraniecki/unic-locale?branch=master) +Statvfs vendor/nix/src/sys/statvfs.rs /^impl Statvfs {$/;" c +Statvfs vendor/nix/src/sys/statvfs.rs /^pub struct Statvfs(libc::statvfs);$/;" s +StepCursor vendor/syn/src/parse.rs /^impl<'c, 'a> Clone for StepCursor<'c, 'a> {$/;" c +StepCursor vendor/syn/src/parse.rs /^impl<'c, 'a> Copy for StepCursor<'c, 'a> {}$/;" c +StepCursor vendor/syn/src/parse.rs /^impl<'c, 'a> Deref for StepCursor<'c, 'a> {$/;" c +StepCursor vendor/syn/src/parse.rs /^impl<'c, 'a> StepCursor<'c, 'a> {$/;" c +StepCursor vendor/syn/src/parse.rs /^pub struct StepCursor<'c, 'a> {$/;" s +StgConvertPropertyToVariant vendor/winapi/src/um/propidl.rs /^ pub fn StgConvertPropertyToVariant($/;" f +StgConvertVariantToProperty vendor/winapi/src/um/propidl.rs /^ pub fn StgConvertVariantToProperty($/;" f +StillAlive vendor/nix/src/sys/wait.rs /^ StillAlive,$/;" e enum:WaitStatus +Stmt vendor/syn/src/gen/clone.rs /^impl Clone for Stmt {$/;" c +Stmt vendor/syn/src/gen/debug.rs /^impl Debug for Stmt {$/;" c +Stmt vendor/syn/src/gen/eq.rs /^impl Eq for Stmt {}$/;" c +Stmt vendor/syn/src/gen/eq.rs /^impl PartialEq for Stmt {$/;" c +Stmt vendor/syn/src/gen/hash.rs /^impl Hash for Stmt {$/;" c +Stmt vendor/syn/src/stmt.rs /^ impl Parse for Stmt {$/;" c module:parsing +Stmt vendor/syn/src/stmt.rs /^ impl ToTokens for Stmt {$/;" c module:printing +StopTraceA vendor/winapi/src/shared/evntrace.rs /^ pub fn StopTraceA($/;" f +StopTraceW vendor/winapi/src/shared/evntrace.rs /^ pub fn StopTraceW($/;" f +Stopped vendor/nix/src/sys/wait.rs /^ Stopped(Pid, Signal),$/;" e enum:WaitStatus +Str vendor/async-trait/tests/test.rs /^ struct Str<'a>(&'a str);$/;" s module:issue28 +Str vendor/stdext/src/str.rs /^ Str(&'a str),$/;" e enum:AltPattern +Str vendor/syn/src/export.rs /^ pub type Str = str;$/;" t module:help +StrExt vendor/stdext/src/str.rs /^pub trait StrExt {$/;" i +Str_SetPtrW vendor/winapi/src/um/dpa_dsa.rs /^ pub fn Str_SetPtrW($/;" f +Stream vendor/fluent-fallback/examples/simple-fallback.rs /^ type Stream = BundleIter;$/;" t implementation:Bundles +Stream vendor/fluent-fallback/src/bundles.rs /^ Stream(AsyncCache),$/;" e enum:BundlesInner +Stream vendor/fluent-fallback/src/generator.rs /^ type Stream: Stream>;$/;" t interface:BundleGenerator +Stream vendor/fluent-fallback/tests/localization_test.rs /^ type Stream = BundleIter;$/;" t implementation:ResourceManager +Stream vendor/fluent-resmgr/src/resource_manager.rs /^ type Stream = BundleIter;$/;" t implementation:ResourceManager +Stream vendor/futures-core/src/stream.rs /^pub trait Stream {$/;" i +Stream vendor/nix/src/sys/socket/mod.rs /^ Stream = libc::SOCK_STREAM,$/;" e enum:SockType +Stream01CompatExt vendor/futures-util/src/compat/compat01as03.rs /^pub trait Stream01CompatExt: Stream01 {$/;" i +StreamExt vendor/futures-util/src/stream/stream/mod.rs /^pub trait StreamExt: Stream {$/;" i +StreamFuture vendor/futures-util/src/stream/stream/into_future.rs /^impl FusedFuture for StreamFuture {$/;" c +StreamFuture vendor/futures-util/src/stream/stream/into_future.rs /^impl Future for StreamFuture {$/;" c +StreamFuture vendor/futures-util/src/stream/stream/into_future.rs /^impl StreamFuture {$/;" c +StreamFuture vendor/futures-util/src/stream/stream/into_future.rs /^pub struct StreamFuture {$/;" s +StreamSink vendor/futures/tests/future_try_flatten_stream.rs /^ impl Sink for StreamSink {$/;" c function:assert_impls +StreamSink vendor/futures/tests/future_try_flatten_stream.rs /^ impl Stream for StreamSink {$/;" c function:assert_impls +StreamSink vendor/futures/tests/future_try_flatten_stream.rs /^ struct StreamSink(PhantomData<(T, E, Item)>);$/;" s function:assert_impls +StretchBlt vendor/winapi/src/um/wingdi.rs /^ pub fn StretchBlt($/;" f +StretchDIBits vendor/winapi/src/um/wingdi.rs /^ pub fn StretchDIBits($/;" f +String vendor/async-trait/tests/test.rs /^ impl AsyncToString for String {$/;" c module:issue25 +String vendor/async-trait/tests/test.rs /^ impl Trait for String {$/;" c function:test_self_in_macro +String vendor/fluent-bundle/src/types/mod.rs /^ String(Cow<'source, str>),$/;" e enum:FluentValue +String vendor/fluent-syntax/src/parser/slice.rs /^impl<'s> Slice<'s> for String {$/;" c +String vendor/quote/src/to_tokens.rs /^impl ToTokens for String {$/;" c +String vendor/stable_deref_trait/src/lib.rs /^unsafe impl StableDeref for String {}$/;" c +StringFromCLSID vendor/winapi/src/um/combaseapi.rs /^ pub fn StringFromCLSID($/;" f +StringFromGUID2 vendor/winapi/src/um/combaseapi.rs /^ pub fn StringFromGUID2($/;" f +StringFromIID vendor/winapi/src/um/combaseapi.rs /^ pub fn StringFromIID($/;" f +StringInterner vendor/elsa/examples/string_interner.rs /^impl StringInterner {$/;" c +StringInterner vendor/elsa/examples/string_interner.rs /^struct StringInterner {$/;" s +StringLiteral vendor/fluent-syntax/src/ast/mod.rs /^ StringLiteral { value: S },$/;" e enum:InlineExpression +StrokeAndFillPath vendor/winapi/src/um/wingdi.rs /^ pub fn StrokeAndFillPath($/;" f +StrokePath vendor/winapi/src/um/wingdi.rs /^ pub fn StrokePath($/;" f +Struct vendor/async-trait/tests/test.rs /^ impl Struct {$/;" c method:test_internal_items::Trait::f +Struct vendor/async-trait/tests/test.rs /^ struct Struct;$/;" s method:test_internal_items::Trait::f +Struct vendor/async-trait/tests/test.rs /^ impl CanDestruct for Struct {$/;" c function:test_can_destruct +Struct vendor/async-trait/tests/test.rs /^ impl Issue11 for Struct {$/;" c module:issue11 +Struct vendor/async-trait/tests/test.rs /^ impl Issue17 for Struct {$/;" c module:issue17 +Struct vendor/async-trait/tests/test.rs /^ impl MyTrait for Struct {$/;" c module:issue154 +Struct vendor/async-trait/tests/test.rs /^ impl ObjectSafe for Struct {$/;" c function:test_object_no_send +Struct vendor/async-trait/tests/test.rs /^ impl ObjectSafe for Struct {$/;" c function:test_object_safe_with_default +Struct vendor/async-trait/tests/test.rs /^ impl ObjectSafe for Struct {$/;" c function:test_object_safe_without_default +Struct vendor/async-trait/tests/test.rs /^ impl StaticWithWhereSelf for Struct {}$/;" c module:issue44 +Struct vendor/async-trait/tests/test.rs /^ impl Trait for Struct {$/;" c module:drop_order +Struct vendor/async-trait/tests/test.rs /^ impl Trait for Struct {$/;" c module:issue152 +Struct vendor/async-trait/tests/test.rs /^ impl Trait for Struct {$/;" c module:issue177 +Struct vendor/async-trait/tests/test.rs /^ impl Trait for Struct {$/;" c module:issue199 +Struct vendor/async-trait/tests/test.rs /^ impl Trait for Struct {$/;" c module:issue53 +Struct vendor/async-trait/tests/test.rs /^ impl Trait for Struct {$/;" c module:issue57 +Struct vendor/async-trait/tests/test.rs /^ impl Trait for Struct {$/;" c module:issue85 +Struct vendor/async-trait/tests/test.rs /^ impl Trait for Struct {$/;" c module:issue87 +Struct vendor/async-trait/tests/test.rs /^ impl Trait for Struct$/;" c module:issue92 +Struct vendor/async-trait/tests/test.rs /^ impl Struct {$/;" c module:issue92 +Struct vendor/async-trait/tests/test.rs /^ pub enum Struct {$/;" g module:issue87 +Struct vendor/async-trait/tests/test.rs /^ pub struct Struct {$/;" s module:issue53 +Struct vendor/async-trait/tests/test.rs /^ pub struct Struct;$/;" s module:issue154 +Struct vendor/async-trait/tests/test.rs /^ pub struct Struct;$/;" s module:issue177 +Struct vendor/async-trait/tests/test.rs /^ pub struct Struct;$/;" s module:issue44 +Struct vendor/async-trait/tests/test.rs /^ pub struct Struct;$/;" s module:issue85 +Struct vendor/async-trait/tests/test.rs /^ pub struct Struct<'a> {$/;" s module:issue31 +Struct vendor/async-trait/tests/test.rs /^ pub struct Struct {$/;" s module:issue92 +Struct vendor/async-trait/tests/test.rs /^ struct Struct {$/;" s module:issue17 +Struct vendor/async-trait/tests/test.rs /^ struct Struct;$/;" s module:drop_order +Struct vendor/async-trait/tests/test.rs /^ struct Struct;$/;" s module:issue11 +Struct vendor/async-trait/tests/test.rs /^ struct Struct;$/;" s module:issue152 +Struct vendor/async-trait/tests/test.rs /^ struct Struct;$/;" s module:issue199 +Struct vendor/async-trait/tests/test.rs /^ struct Struct;$/;" s module:issue57 +Struct vendor/async-trait/tests/test.rs /^impl Trait for Struct {$/;" c +Struct vendor/async-trait/tests/test.rs /^struct Struct;$/;" s +Struct vendor/async-trait/tests/ui/arg-implementation-detail.rs /^pub struct Struct;$/;" s +Struct vendor/async-trait/tests/ui/delimiter-span.rs /^impl Trait for Struct {$/;" c +Struct vendor/async-trait/tests/ui/delimiter-span.rs /^struct Struct;$/;" s +Struct vendor/async-trait/tests/ui/missing-async-in-impl.rs /^impl Trait for Struct {$/;" c +Struct vendor/async-trait/tests/ui/missing-async-in-impl.rs /^pub struct Struct;$/;" s +Struct vendor/async-trait/tests/ui/missing-async-in-trait.rs /^impl Trait for Struct {$/;" c +Struct vendor/async-trait/tests/ui/missing-async-in-trait.rs /^pub struct Struct;$/;" s +Struct vendor/cfg-if/src/lib.rs /^ impl Trait for Struct {$/;" c module:tests +Struct vendor/cfg-if/src/lib.rs /^ struct Struct;$/;" s module:tests +Struct vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ Struct: (T, ::pin_project_lite::__private::AlwaysUnpin),$/;" m struct:__Origin +Struct vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ Struct { pinned: T, unpinned: U },$/;" e enum:Enum +Struct vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ Struct {$/;" e enum:EnumProj +Struct vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ Struct {$/;" e enum:EnumProjRef +Struct vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ Struct {$/;" e enum:EnumProjReplace +Struct vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Struct where$/;" c +Struct vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ impl MustNotImplDrop for Struct {}$/;" c +Struct vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ impl Struct {$/;" c +Struct vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^struct Struct {$/;" s +Struct vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ Struct: ($/;" m struct:__Origin +Struct vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ Struct {$/;" e enum:Enum +Struct vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ Struct {$/;" e enum:EnumProjReplace +Struct vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Struct where$/;" c +Struct vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ impl MustNotImplDrop for Struct {}$/;" c +Struct vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ impl Struct {$/;" c +Struct vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^struct Struct {$/;" s +Struct vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ Struct: (T, ::pin_project_lite::__private::AlwaysUnpin),$/;" m struct:__Origin +Struct vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ Struct { pinned: T, unpinned: U },$/;" e enum:Enum +Struct vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ Struct {$/;" e enum:EnumProj +Struct vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ Struct {$/;" e enum:EnumProjRef +Struct vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ Struct {$/;" e enum:EnumProjReplace +Struct vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ Struct: (T, ::pin_project_lite::__private::AlwaysUnpin),$/;" m struct:__Origin +Struct vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ Struct { pinned: T, unpinned: U },$/;" e enum:Enum +Struct vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ Struct {$/;" e enum:EnumProj +Struct vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^ Struct: (T, ::pin_project_lite::__private::AlwaysUnpin),$/;" m struct:__Origin +Struct vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^ Struct { pinned: T, unpinned: U },$/;" e enum:Enum +Struct vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ Struct: (T, ::pin_project_lite::__private::AlwaysUnpin),$/;" m struct:__Origin +Struct vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ Struct { pinned: T, unpinned: U },$/;" e enum:Enum +Struct vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ Struct {$/;" e enum:EnumProjRef +Struct vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Struct where$/;" c +Struct vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ impl MustNotImplDrop for Struct {}$/;" c +Struct vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ impl Struct {$/;" c +Struct vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^struct Struct {$/;" s +Struct vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Struct where$/;" c +Struct vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ impl MustNotImplDrop for Struct {}$/;" c +Struct vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ impl Struct {$/;" c +Struct vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^struct Struct {$/;" s +Struct vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Struct where$/;" c +Struct vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ impl MustNotImplDrop for Struct {}$/;" c +Struct vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ impl Struct {$/;" c +Struct vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^struct Struct {$/;" s +Struct vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Struct where$/;" c +Struct vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ impl MustNotImplDrop for Struct {}$/;" c +Struct vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ impl Struct {$/;" c +Struct vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^struct Struct {$/;" s +Struct vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ Struct: (T, ::pin_project_lite::__private::AlwaysUnpin),$/;" m struct:__Origin +Struct vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ Struct { pinned: T, unpinned: U },$/;" e enum:Enum +Struct vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ Struct {$/;" e enum:EnumProj +Struct vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ Struct {$/;" e enum:EnumProjRef +Struct vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Struct where$/;" c +Struct vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ impl ::pin_project_lite::__private::Drop for Struct {$/;" c +Struct vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ impl Struct {$/;" c +Struct vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^struct Struct {$/;" s +Struct vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ Struct: (T, ::pin_project_lite::__private::AlwaysUnpin),$/;" m struct:__Origin +Struct vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ Struct { pinned: T, unpinned: U },$/;" e enum:Enum +Struct vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ Struct {$/;" e enum:EnumProj +Struct vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ Struct {$/;" e enum:EnumProjRef +Struct vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ impl<'__pin, T, U> ::pin_project_lite::__private::Unpin for Struct where$/;" c +Struct vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ impl MustNotImplDrop for Struct {}$/;" c +Struct vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ impl Struct {$/;" c +Struct vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^pub struct Struct {$/;" s +Struct vendor/thiserror-impl/src/ast.rs /^ Struct(Struct<'a>),$/;" e enum:Input +Struct vendor/thiserror-impl/src/ast.rs /^impl<'a> Struct<'a> {$/;" c +Struct vendor/thiserror-impl/src/ast.rs /^pub struct Struct<'a> {$/;" s +Struct vendor/thiserror-impl/src/prop.rs /^impl Struct<'_> {$/;" c +Struct vendor/thiserror-impl/src/valid.rs /^impl Struct<'_> {$/;" c +Struct vendor/thiserror/tests/test_display.rs /^ Struct { v: usize },$/;" e enum:test_ints::Error +Struct1 vendor/pin-project-lite/tests/test.rs /^ impl Struct1 {$/;" c function:lifetime_project +Struct1 vendor/pin-project-lite/tests/test.rs /^ impl Trait for Struct1 {$/;" c function:no_infer_outlives +Struct1 vendor/pin-project-lite/tests/test.rs /^ struct Struct1(A);$/;" s function:no_infer_outlives +Struct2 vendor/pin-project-lite/tests/test.rs /^ impl<'b, T, U> Struct2<'b, T, U> {$/;" c function:lifetime_project +Struct3 vendor/pin-project-lite/tests/test.rs /^ impl Static for Struct3 {}$/;" c function:where_clause_and_associated_type_field +Struct7 vendor/pin-project-lite/tests/test.rs /^ impl Static for Struct7 {}$/;" c function:trait_bounds_on_type_generics +StructDebugGeneric vendor/thiserror/tests/test_generics.rs /^pub struct StructDebugGeneric {$/;" s +StructFromGeneric vendor/thiserror/tests/test_generics.rs /^pub struct StructFromGeneric {$/;" s +StructPath vendor/thiserror/tests/test_path.rs /^struct StructPath {$/;" s +StructPathBuf vendor/thiserror/tests/test_path.rs /^struct StructPathBuf {$/;" s +StructProj vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^struct StructProj<'__pin, T, U>$/;" s +StructProj vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^struct StructProj<'__pin, T, U>$/;" s +StructProjRef vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^struct StructProjRef<'__pin, T, U>$/;" s +StructProjRef vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^struct StructProjRef<'__pin, T, U>$/;" s +StructProjReplace vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^struct StructProjReplace {$/;" s +StructProjReplace vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^struct StructProjReplace {$/;" s +StructTransparentGeneric vendor/thiserror/tests/test_generics.rs /^pub struct StructTransparentGeneric(E);$/;" s +SubmitThreadpoolWork vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn SubmitThreadpoolWork($/;" f +SubscriberInner vendor/async-trait/tests/test.rs /^ struct SubscriberInner {$/;" s module:issue45 +Subshell command.h /^ struct subshell_com *Subshell;$/;" m union:command::__anon3aaf009a020a typeref:struct:subshell_com * +SubtractRect vendor/winapi/src/um/winuser.rs /^ pub fn SubtractRect($/;" f +Suffix vendor/memchr/src/memmem/twoway.rs /^impl Suffix {$/;" c +Suffix vendor/memchr/src/memmem/twoway.rs /^struct Suffix {$/;" s +SuffixKind vendor/memchr/src/memmem/twoway.rs /^enum SuffixKind {$/;" g +SuffixKind vendor/memchr/src/memmem/twoway.rs /^impl SuffixKind {$/;" c +SuffixOrdering vendor/memchr/src/memmem/twoway.rs /^enum SuffixOrdering {$/;" g +Supertraits vendor/async-trait/src/expand.rs /^type Supertraits = Punctuated;$/;" t +Supported Platforms vendor/nix/README.md /^## Supported Platforms$/;" s chapter:Rust bindings to *nix APIs +Supported features vendor/async-trait/README.md /^## Supported features$/;" s chapter:Async trait methods +Supported target policy vendor/libc/CONTRIBUTING.md /^## Supported target policy$/;" s chapter:Contributing to `libc` +SuspendCmd builtins_rust/exec_cmd/src/lib.rs /^ SuspendCmd,$/;" e enum:CMDType +SuspendComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for SuspendComand {$/;" c +SuspendComand builtins_rust/exec_cmd/src/lib.rs /^struct SuspendComand;$/;" s +SuspendThread vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SuspendThread($/;" f +SwapBuffers vendor/winapi/src/um/wingdi.rs /^ pub fn SwapBuffers($/;" f +SwapMouseButton vendor/winapi/src/um/winuser.rs /^ pub fn SwapMouseButton($/;" f +SwitchDesktop vendor/winapi/src/um/winuser.rs /^ pub fn SwitchDesktop($/;" f +SwitchToFiber vendor/winapi/src/um/winbase.rs /^ pub fn SwitchToFiber($/;" f +SwitchToThisWindow vendor/winapi/src/um/winuser.rs /^ pub fn SwitchToThisWindow($/;" f +SwitchToThread vendor/winapi/src/um/processthreadsapi.rs /^ pub fn SwitchToThread() -> BOOL;$/;" f +SymCleanup vendor/winapi/src/um/dbghelp.rs /^ pub fn SymCleanup($/;" f +SymEnumSymbolsW vendor/winapi/src/um/dbghelp.rs /^ pub fn SymEnumSymbolsW($/;" f +SymFindDebugInfoFile vendor/winapi/src/um/dbghelp.rs /^ pub fn SymFindDebugInfoFile($/;" f +SymFindDebugInfoFileW vendor/winapi/src/um/dbghelp.rs /^ pub fn SymFindDebugInfoFileW($/;" f +SymFindExecutableImage vendor/winapi/src/um/dbghelp.rs /^ pub fn SymFindExecutableImage($/;" f +SymFindExecutableImageW vendor/winapi/src/um/dbghelp.rs /^ pub fn SymFindExecutableImageW($/;" f +SymFindFileInPath vendor/winapi/src/um/dbghelp.rs /^ pub fn SymFindFileInPath($/;" f +SymFindFileInPathW vendor/winapi/src/um/dbghelp.rs /^ pub fn SymFindFileInPathW($/;" f +SymFromAddrW vendor/winapi/src/um/dbghelp.rs /^ pub fn SymFromAddrW($/;" f +SymFromNameW vendor/winapi/src/um/dbghelp.rs /^ pub fn SymFromNameW($/;" f +SymFunctionTableAccess64 vendor/winapi/src/um/dbghelp.rs /^ pub fn SymFunctionTableAccess64($/;" f +SymGetLineFromAddrW64 vendor/winapi/src/um/dbghelp.rs /^ pub fn SymGetLineFromAddrW64($/;" f +SymGetModuleBase64 vendor/winapi/src/um/dbghelp.rs /^ pub fn SymGetModuleBase64($/;" f +SymGetModuleInfoW64 vendor/winapi/src/um/dbghelp.rs /^ pub fn SymGetModuleInfoW64($/;" f +SymGetOptions vendor/winapi/src/um/dbghelp.rs /^ pub fn SymGetOptions() -> DWORD;$/;" f +SymGetSymFromAddr64 vendor/winapi/src/um/dbghelp.rs /^ pub fn SymGetSymFromAddr64($/;" f +SymInitializeW vendor/winapi/src/um/dbghelp.rs /^ pub fn SymInitializeW($/;" f +SymLoadModuleExW vendor/winapi/src/um/dbghelp.rs /^ pub fn SymLoadModuleExW($/;" f +SymSetOptions vendor/winapi/src/um/dbghelp.rs /^ pub fn SymSetOptions($/;" f +SymUnloadModule vendor/winapi/src/um/dbghelp.rs /^ pub fn SymUnloadModule($/;" f +SymUnloadModule64 vendor/winapi/src/um/dbghelp.rs /^ pub fn SymUnloadModule64($/;" f +Symbol vendor/fluent-bundle/src/types/number.rs /^ Symbol,$/;" e enum:FluentNumberCurrencyDisplayStyle +Symbol vendor/libloading/src/os/unix/mod.rs /^impl ::std::ops::Deref for Symbol {$/;" c +Symbol vendor/libloading/src/os/unix/mod.rs /^impl Clone for Symbol {$/;" c +Symbol vendor/libloading/src/os/unix/mod.rs /^impl Symbol> {$/;" c +Symbol vendor/libloading/src/os/unix/mod.rs /^impl Symbol {$/;" c +Symbol vendor/libloading/src/os/unix/mod.rs /^impl fmt::Debug for Symbol {$/;" c +Symbol vendor/libloading/src/os/unix/mod.rs /^pub struct Symbol {$/;" s +Symbol vendor/libloading/src/os/unix/mod.rs /^unsafe impl Send for Symbol {}$/;" c +Symbol vendor/libloading/src/os/unix/mod.rs /^unsafe impl Sync for Symbol {}$/;" c +Symbol vendor/libloading/src/os/windows/mod.rs /^impl ::std::ops::Deref for Symbol {$/;" c +Symbol vendor/libloading/src/os/windows/mod.rs /^impl Clone for Symbol {$/;" c +Symbol vendor/libloading/src/os/windows/mod.rs /^impl Symbol> {$/;" c +Symbol vendor/libloading/src/os/windows/mod.rs /^impl Symbol {$/;" c +Symbol vendor/libloading/src/os/windows/mod.rs /^impl fmt::Debug for Symbol {$/;" c +Symbol vendor/libloading/src/os/windows/mod.rs /^pub struct Symbol {$/;" s +Symbol vendor/libloading/src/os/windows/mod.rs /^unsafe impl Send for Symbol {}$/;" c +Symbol vendor/libloading/src/os/windows/mod.rs /^unsafe impl Sync for Symbol {}$/;" c +Symbol vendor/libloading/src/safe.rs /^impl<'lib, T> Clone for Symbol<'lib, T> {$/;" c +Symbol vendor/libloading/src/safe.rs /^impl<'lib, T> Symbol<'lib, Option> {$/;" c +Symbol vendor/libloading/src/safe.rs /^impl<'lib, T> Symbol<'lib, T> {$/;" c +Symbol vendor/libloading/src/safe.rs /^impl<'lib, T> fmt::Debug for Symbol<'lib, T> {$/;" c +Symbol vendor/libloading/src/safe.rs /^impl<'lib, T> ops::Deref for Symbol<'lib, T> {$/;" c +Symbol vendor/libloading/src/safe.rs /^pub struct Symbol<'lib, T: 'lib> {$/;" s +Symbol vendor/libloading/src/safe.rs /^unsafe impl<'lib, T: Send> Send for Symbol<'lib, T> {}$/;" c +Symbol vendor/libloading/src/safe.rs /^unsafe impl<'lib, T: Sync> Sync for Symbol<'lib, T> {}$/;" c +Symlink vendor/nix/src/dir.rs /^ Symlink,$/;" e enum:Type +Sync vendor/async-trait/tests/test.rs /^ impl Trait for (dyn Fn(u8) + Send + Sync) {$/;" c module:issue89 +Sync vendor/async-trait/tests/test.rs /^ impl Trait for Send + Sync {$/;" c module:issue89 +Sync vendor/async-trait/tests/test.rs /^ impl Trait for dyn Fn(i8) + Send + Sync {$/;" c module:issue89 +Sync vendor/async-trait/tests/ui/bare-trait-object.rs /^impl Trait for Send + Sync {$/;" c +SyncFuture vendor/futures/tests/auto_traits.rs /^pub type SyncFuture = Pin + Sync>>;$/;" t +SyncRawWaker vendor/futures-task/src/noop_waker.rs /^ struct SyncRawWaker(RawWaker);$/;" s function:noop_waker_ref +SyncRawWaker vendor/futures-task/src/noop_waker.rs /^ unsafe impl Sync for SyncRawWaker {}$/;" c function:noop_waker_ref +SyncRequestInAsyncMode vendor/fluent-fallback/src/errors.rs /^ SyncRequestInAsyncMode,$/;" e enum:LocalizationError +SyncSink vendor/futures/tests/auto_traits.rs /^pub type SyncSink = Pin + Sync>>;$/;" t +SyncStream vendor/futures/tests/auto_traits.rs /^pub type SyncStream = Pin + Sync>>;$/;" t +SyncTryFuture vendor/futures/tests/auto_traits.rs /^pub type SyncTryFuture = SyncFuture>;$/;" t +SyncTryStream vendor/futures/tests/auto_traits.rs /^pub type SyncTryStream = SyncStream>;$/;" t +Syntax vendor/quote/README.md /^## Syntax$/;" s chapter:Rust Quasi-Quoting +Sys vendor/nix/src/errno.rs /^ pub const fn Sys(errno: Errno) -> Error {$/;" P implementation:Errno +SysAllocString vendor/winapi/src/um/oleauto.rs /^ pub fn SysAllocString($/;" f +SysAllocStringByteLen vendor/winapi/src/um/oleauto.rs /^ pub fn SysAllocStringByteLen($/;" f +SysAllocStringLen vendor/winapi/src/um/oleauto.rs /^ pub fn SysAllocStringLen($/;" f +SysControl vendor/nix/src/sys/socket/addr.rs /^ SysControl(SysControlAddr),$/;" e enum:SockAddr +SysFreeString vendor/winapi/src/um/oleauto.rs /^ pub fn SysFreeString($/;" f +SysInfo vendor/nix/src/sys/sysinfo.rs /^impl SysInfo {$/;" c +SysInfo vendor/nix/src/sys/sysinfo.rs /^pub struct SysInfo(libc::sysinfo);$/;" s +SysReAllocString vendor/winapi/src/um/oleauto.rs /^ pub fn SysReAllocString($/;" f +SysReAllocStringLen vendor/winapi/src/um/oleauto.rs /^ pub fn SysReAllocStringLen($/;" f +SysStringByteLen vendor/winapi/src/um/oleauto.rs /^ pub fn SysStringByteLen($/;" f +SysStringLen vendor/winapi/src/um/oleauto.rs /^ pub fn SysStringLen($/;" f +System vendor/nix/src/sys/socket/addr.rs /^ System = libc::AF_SYSTEM,$/;" e enum:AddressFamily +SystemFunction036 vendor/winapi/src/um/ntsecapi.rs /^ pub fn SystemFunction036($/;" f +SystemFunction040 vendor/winapi/src/um/ntsecapi.rs /^ pub fn SystemFunction040($/;" f +SystemFunction041 vendor/winapi/src/um/ntsecapi.rs /^ pub fn SystemFunction041($/;" f +SystemParametersInfoA vendor/winapi/src/um/winuser.rs /^ pub fn SystemParametersInfoA($/;" f +SystemParametersInfoForDpi vendor/winapi/src/um/winuser.rs /^ pub fn SystemParametersInfoForDpi($/;" f +SystemParametersInfoW vendor/winapi/src/um/winuser.rs /^ pub fn SystemParametersInfoW($/;" f +SystemTimeToFileTime vendor/winapi/src/um/timezoneapi.rs /^ pub fn SystemTimeToFileTime($/;" f +SystemTimeToTzSpecificLocalTime vendor/winapi/src/um/timezoneapi.rs /^ pub fn SystemTimeToTzSpecificLocalTime($/;" f +SystemTimeToTzSpecificLocalTimeEx vendor/winapi/src/um/timezoneapi.rs /^ pub fn SystemTimeToTzSpecificLocalTimeEx($/;" f +SystemTimeToVariantTime vendor/winapi/src/um/oleauto.rs /^ pub fn SystemTimeToVariantTime($/;" f +T vendor/fluent-bundle/src/types/mod.rs /^impl AnyEq for T {$/;" c +T vendor/futures-io/src/lib.rs /^ impl AsyncBufRead for &mut T {$/;" c module:if_std +T vendor/futures-io/src/lib.rs /^ impl AsyncRead for &mut T {$/;" c module:if_std +T vendor/futures-io/src/lib.rs /^ impl AsyncSeek for &mut T {$/;" c module:if_std +T vendor/futures-io/src/lib.rs /^ impl AsyncWrite for &mut T {$/;" c module:if_std +T vendor/futures-util/src/fns.rs /^impl Fn1 for T$/;" c +T vendor/futures-util/src/fns.rs /^impl FnMut1 for T$/;" c +T vendor/futures-util/src/fns.rs /^impl FnOnce1 for T$/;" c +T vendor/futures-util/src/future/future/mod.rs /^impl FutureExt for T where T: Future {}$/;" c +T vendor/futures-util/src/sink/mod.rs /^impl SinkExt for T where T: Sink {}$/;" c +T vendor/futures-util/src/stream/stream/mod.rs /^impl StreamExt for T where T: Stream {}$/;" c +T vendor/futures/tests/try_join.rs /^impl MyTrait for fn() -> T {$/;" c +T vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ impl MustNotImplDrop for T {}$/;" c +T vendor/pin-project-lite/tests/test.rs /^ pub trait T {}$/;" i function:trailing_comma +T vendor/quote/src/ident_fragment.rs /^impl IdentFragment for &T {$/;" c +T vendor/quote/src/ident_fragment.rs /^impl IdentFragment for &mut T {$/;" c +T vendor/quote/src/runtime.rs /^ impl<'q, 'a, T: RepAsIteratorExt<'q> + ?Sized> RepAsIteratorExt<'q> for &'a T {$/;" c module:ext +T vendor/quote/src/runtime.rs /^ impl<'q, 'a, T: RepAsIteratorExt<'q> + ?Sized> RepAsIteratorExt<'q> for &'a mut T {$/;" c module:ext +T vendor/quote/src/runtime.rs /^ impl<'q, T: 'q> RepAsIteratorExt<'q> for [T] {$/;" c module:ext +T vendor/quote/src/runtime.rs /^ impl RepIteratorExt for T {}$/;" c module:ext +T vendor/quote/src/runtime.rs /^ impl RepToTokensExt for T {}$/;" c module:ext +T vendor/quote/src/spanned.rs /^impl Spanned for T {$/;" c +T vendor/quote/src/to_tokens.rs /^impl<'a, T: ?Sized + ToTokens> ToTokens for &'a T {$/;" c +T vendor/quote/src/to_tokens.rs /^impl<'a, T: ?Sized + ToTokens> ToTokens for &'a mut T {$/;" c +T vendor/stable_deref_trait/src/lib.rs /^unsafe impl<'a, T: ?Sized> CloneStableDeref for &'a T {}$/;" c +T vendor/stable_deref_trait/src/lib.rs /^unsafe impl<'a, T: ?Sized> StableDeref for &'a T {}$/;" c +T vendor/stable_deref_trait/src/lib.rs /^unsafe impl<'a, T: ?Sized> StableDeref for &'a mut T {}$/;" c +T vendor/syn/src/parse_macro_input.rs /^impl ParseMacroInput for T {$/;" c +T vendor/syn/src/parse_quote.rs /^impl ParseQuote for T {$/;" c +T vendor/syn/src/spanned.rs /^impl Spanned for T {$/;" c +T vendor/syn/src/token.rs /^impl Token for T {$/;" c +T vendor/syn/src/token.rs /^impl private::Sealed for T {}$/;" c +T vendor/syn/tests/common/eq.rs /^impl SpanlessEq for [T] {$/;" c +T vendor/syn/tests/test_item.rs /^ impl !Trait for T {}$/;" c function:test_negative_impl +T vendor/thiserror/src/aserror.rs /^impl<'a, T: Error + 'a> AsDynError<'a> for T {$/;" c +T vendor/thiserror/src/aserror.rs /^impl<'a, T: Error + 'a> Sealed for T {}$/;" c +T vendor/thiserror/src/display.rs /^impl DisplayAsDisplay for &T {$/;" c +T vendor/thiserror/src/provide.rs /^impl Sealed for T {}$/;" c +T vendor/thiserror/src/provide.rs /^impl ThiserrorProvide for T {$/;" c +T1 vendor/async-trait/tests/test.rs /^ trait T1 {$/;" i module:issue104 +T2H_DEFAULT_about_body support/texi2html /^sub T2H_DEFAULT_about_body$/;" s +T2H_DEFAULT_button_icon_img support/texi2html /^sub T2H_DEFAULT_button_icon_img$/;" s +T2H_DEFAULT_print_About support/texi2html /^sub T2H_DEFAULT_print_About$/;" s +T2H_DEFAULT_print_Footnotes support/texi2html /^sub T2H_DEFAULT_print_Footnotes$/;" s +T2H_DEFAULT_print_Overview support/texi2html /^sub T2H_DEFAULT_print_Overview$/;" s +T2H_DEFAULT_print_Toc support/texi2html /^sub T2H_DEFAULT_print_Toc$/;" s +T2H_DEFAULT_print_Top support/texi2html /^sub T2H_DEFAULT_print_Top$/;" s +T2H_DEFAULT_print_Top_footer support/texi2html /^sub T2H_DEFAULT_print_Top_footer$/;" s +T2H_DEFAULT_print_Top_header support/texi2html /^sub T2H_DEFAULT_print_Top_header$/;" s +T2H_DEFAULT_print_chapter_footer support/texi2html /^sub T2H_DEFAULT_print_chapter_footer$/;" s +T2H_DEFAULT_print_chapter_header support/texi2html /^sub T2H_DEFAULT_print_chapter_header$/;" s +T2H_DEFAULT_print_foot_navigation support/texi2html /^sub T2H_DEFAULT_print_foot_navigation$/;" s +T2H_DEFAULT_print_frame support/texi2html /^sub T2H_DEFAULT_print_frame$/;" s +T2H_DEFAULT_print_head_navigation support/texi2html /^sub T2H_DEFAULT_print_head_navigation$/;" s +T2H_DEFAULT_print_misc support/texi2html /^sub T2H_DEFAULT_print_misc$/;" s +T2H_DEFAULT_print_misc_footer support/texi2html /^sub T2H_DEFAULT_print_misc_footer$/;" s +T2H_DEFAULT_print_misc_header support/texi2html /^sub T2H_DEFAULT_print_misc_header$/;" s +T2H_DEFAULT_print_navigation support/texi2html /^sub T2H_DEFAULT_print_navigation$/;" s +T2H_DEFAULT_print_page_foot support/texi2html /^sub T2H_DEFAULT_print_page_foot$/;" s +T2H_DEFAULT_print_page_head support/texi2html /^sub T2H_DEFAULT_print_page_head$/;" s +T2H_DEFAULT_print_section support/texi2html /^sub T2H_DEFAULT_print_section$/;" s +T2H_DEFAULT_print_toc_frame support/texi2html /^sub T2H_DEFAULT_print_toc_frame$/;" s +TAB lib/readline/chardefs.h /^#define TAB /;" d +TABLEITEM support/man2html.c /^struct TABLEITEM {$/;" s file: +TABLEITEM support/man2html.c /^typedef struct TABLEITEM TABLEITEM;$/;" t typeref:struct:TABLEITEM file: +TABLEROW support/man2html.c /^struct TABLEROW {$/;" s file: +TABLEROW support/man2html.c /^typedef struct TABLEROW TABLEROW;$/;" t typeref:struct:TABLEROW file: +TAGS Makefile.in /^TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE)$/;" t +TAGS lib/intl/Makefile.in /^TAGS: $(HEADERS) $(SOURCES)$/;" t +TAGS lib/readline/Makefile.in /^TAGS: force$/;" t +TASK_ID vendor/libc/src/vxworks/mod.rs /^pub type TASK_ID = ::OBJ_HANDLE;$/;" t +TBNOTIFYA vendor/winapi/src/um/commctrl.rs /^pub type TBNOTIFYA = NMTOOLBARA;$/;" t +TBNOTIFYW vendor/winapi/src/um/commctrl.rs /^pub type TBNOTIFYW = NMTOOLBARW;$/;" t +TCHARS_SET lib/readline/rltty.c /^#define TCHARS_SET /;" d file: +TCOON lib/readline/rltty.h /^# define TCOON /;" d +TC_HITTESTINFO vendor/winapi/src/um/commctrl.rs /^pub type TC_HITTESTINFO = TCHITTESTINFO;$/;" t +TC_ITEMA vendor/winapi/src/um/commctrl.rs /^pub type TC_ITEMA = TCITEMA;$/;" t +TC_ITEMHEADERA vendor/winapi/src/um/commctrl.rs /^pub type TC_ITEMHEADERA = TCITEMHEADERA;$/;" t +TC_ITEMHEADERW vendor/winapi/src/um/commctrl.rs /^pub type TC_ITEMHEADERW = TCITEMHEADERW;$/;" t +TC_ITEMW vendor/winapi/src/um/commctrl.rs /^pub type TC_ITEMW = TCITEMW;$/;" t +TC_KEYDOWN vendor/winapi/src/um/commctrl.rs /^pub type TC_KEYDOWN = NMTCKEYDOWN;$/;" t +TEKPUBKEY vendor/winapi/src/um/wincrypt.rs /^pub type TEKPUBKEY = DHPUBKEY;$/;" t +TEMPENV_HASH_BUCKETS variables.c /^#define TEMPENV_HASH_BUCKETS /;" d file: +TERMCAP_DEP Makefile.in /^TERMCAP_DEP = @TERMCAP_DEP@$/;" m +TERMCAP_DEP configure.ac /^AC_SUBST(TERMCAP_DEP)$/;" s +TERMCAP_FILE lib/termcap/termcap.c /^#define TERMCAP_FILE /;" d file: +TERMCAP_LDFLAGS Makefile.in /^TERMCAP_LDFLAGS = -L$(TERM_LIBDIR)$/;" m +TERMCAP_LIB Makefile.in /^TERMCAP_LIB = @TERMCAP_LIB@$/;" m +TERMCAP_LIB configure.ac /^AC_SUBST(TERMCAP_LIB)$/;" s +TERMCAP_LIBRARY Makefile.in /^TERMCAP_LIBRARY = $(TERM_LIBDIR)\/libtermcap.a$/;" m +TERMCAP_OBJ Makefile.in /^TERMCAP_OBJ = $(TERM_LIBDIR)\/termcap.o $(TERM_LIBDIR)\/tparam.o$/;" m +TERMCAP_SOURCE Makefile.in /^TERMCAP_SOURCE = $(TERM_LIBSRC)\/termcap.c $(TERM_LIBSRC)\/tparam.c$/;" m +TERMIOS_MISSING config-bot.h /^# define TERMIOS_MISSING$/;" d +TERMIOS_TTY_DRIVER include/shtty.h /^# define TERMIOS_TTY_DRIVER$/;" d +TERMIOS_TTY_DRIVER lib/readline/rldefs.h /^# define TERMIOS_TTY_DRIVER$/;" d +TERMIO_TTY_DRIVER include/shtty.h /^# define TERMIO_TTY_DRIVER$/;" d +TERMIO_TTY_DRIVER lib/readline/rldefs.h /^# define TERMIO_TTY_DRIVER$/;" d +TERMSIGS_LENGTH sig.c /^#define TERMSIGS_LENGTH /;" d file: +TERM_ABSSRC Makefile.in /^TERM_ABSSRC = ${topdir}\/$(TERM_LIBDIR)$/;" m +TERM_LIBDIR Makefile.in /^TERM_LIBDIR = $(dot)\/$(LIBSUBDIR)\/termcap$/;" m +TERM_LIBSRC Makefile.in /^TERM_LIBSRC = $(LIBSRC)\/termcap$/;" m +TERRITORY lib/intl/loadinfo.h /^#define TERRITORY /;" d +TESTSCRIPT Makefile.in /^TESTSCRIPT = @TESTSCRIPT@$/;" m +TESTSCRIPT configure.ac /^AC_SUBST(TESTSCRIPT)$/;" s +TESTS_SUPPORT Makefile.in /^TESTS_SUPPORT = recho$(EXEEXT) zecho$(EXEEXT) printenv$(EXEEXT) xcase$(EXEEXT)$/;" m +TEST_ARITHEXP test.h /^#define TEST_ARITHEXP /;" d +TEST_ERREXIT_STATUS test.c /^#define TEST_ERREXIT_STATUS /;" d file: +TEST_LOCALE test.h /^#define TEST_LOCALE /;" d +TEST_PATMATCH test.h /^#define TEST_PATMATCH /;" d +TEST_STATIC_PTR vendor/libloading/src/test_helpers.rs /^pub static mut TEST_STATIC_PTR: *mut () = 0 as *mut _;$/;" v +TEST_STATIC_U32 vendor/libloading/src/test_helpers.rs /^pub static mut TEST_STATIC_U32: u32 = 0;$/;" v +TEXINFO builtins/mkbuiltins.c /^#define TEXINFO /;" d file: +TEXTDOMAIN lib/intl/textdomain.c /^# define TEXTDOMAIN /;" d file: +TEXT_COUNT_MAX lib/readline/text.c /^#define TEXT_COUNT_MAX /;" d file: +TGETENT_SUCCESS lib/readline/terminal.c /^# define TGETENT_SUCCESS /;" d file: +TGETFLAG lib/readline/terminal.c /^#define TGETFLAG(/;" d file: +TGETFLAG_SUCCESS lib/readline/terminal.c /^# define TGETFLAG_SUCCESS /;" d file: +THINGS_TO_TAR lib/glob/Makefile.in /^THINGS_TO_TAR = $(SOURCES) $(SUPPORT)$/;" m +THINGS_TO_TAR lib/readline/Makefile.in /^THINGS_TO_TAR = $(SOURCES) $(SUPPORT)$/;" m +THINGS_TO_TAR lib/termcap/Makefile.in /^THINGS_TO_TAR = $(SOURCES) $(DOCUMENTATION)$/;" m +THINGS_TO_TAR lib/tilde/Makefile.in /^THINGS_TO_TAR = $(SOURCES) $(SUPPORT)$/;" m +THIRD_IPADDRESS vendor/winapi/src/um/commctrl.rs /^pub fn THIRD_IPADDRESS(x: LPARAM) -> BYTE {$/;" f +THIS_SH Makefile.in /^THIS_SH = $(BUILD_DIR)\/$(Program)$/;" m +TILDEOBJ lib/readline/Makefile.in /^TILDEOBJ = tilde.o$/;" m +TILDE_ABSSRC Makefile.in /^TILDE_ABSSRC = ${topdir}\/$(TILDE_LIBDIR)$/;" m +TILDE_DEP Makefile.in /^TILDE_DEP = $(TILDE_LIBRARY)$/;" m +TILDE_END general.c /^#define TILDE_END(/;" d file: +TILDE_LDFLAGS Makefile.in /^TILDE_LDFLAGS = -L$(TILDE_LIBDIR)$/;" m +TILDE_LIB Makefile.in /^TILDE_LIB = @TILDE_LIB@$/;" m +TILDE_LIB configure.ac /^AC_SUBST(TILDE_LIB)$/;" s +TILDE_LIBDIR Makefile.in /^TILDE_LIBDIR = $(dot)\/$(LIBSUBDIR)\/tilde$/;" m +TILDE_LIBRARY Makefile.in /^TILDE_LIBRARY = $(TILDE_LIBDIR)\/libtilde.a$/;" m +TILDE_LIBSRC Makefile.in /^TILDE_LIBSRC = $(LIBSRC)\/tilde$/;" m +TILDE_OBJ Makefile.in /^TILDE_OBJ = $(TILDE_LIBDIR)\/tilde.o$/;" m +TILDE_SOURCE Makefile.in /^TILDE_SOURCE = $(TILDE_LIBSRC)\/tilde.c $(TILDE_LIBSRC)\/tilde.h$/;" m +TIME vendor/winapi/src/shared/ntdef.rs /^pub type TIME = LARGE_INTEGER;$/;" t +TIMEFORMAT support/man2html.c /^#define TIMEFORMAT /;" d file: +TIMEVAL vendor/winapi/src/um/winsock2.rs /^pub type TIMEVAL = timeval;$/;" t +TIME_T_MAX lib/sh/mktime.c /^# define TIME_T_MAX /;" d file: +TIME_T_MIN lib/sh/mktime.c /^# define TIME_T_MIN /;" d file: +TINY_STR_MAX support/man2html.c /^#define TINY_STR_MAX /;" d file: +TIOTYPE lib/readline/rltty.c /^# define TIOTYPE /;" d file: +TIOTYPE lib/readline/rltty.c /^#define TIOTYPE /;" d file: +TM_YEAR_BASE lib/sh/mktime.c /^#define TM_YEAR_BASE /;" d file: +TOCHAR include/chartypes.h /^#define TOCHAR(/;" d +TOCTRL include/chartypes.h /^# define TOCTRL(/;" d +TODIGIT include/chartypes.h /^#define TODIGIT(/;" d +TOGGLE lib/sh/casemod.c /^# define TOGGLE(/;" d file: +TOLOWER include/chartypes.h /^#define TOLOWER(/;" d +TOOLINFOA vendor/winapi/src/um/commctrl.rs /^pub type TOOLINFOA = TTTOOLINFOA;$/;" t +TOOLINFOW vendor/winapi/src/um/commctrl.rs /^pub type TOOLINFOW = TTTOOLINFOW;$/;" t +TOOLTIPTEXTA vendor/winapi/src/um/commctrl.rs /^pub type TOOLTIPTEXTA = NMTTDISPINFOA;$/;" t +TOOLTIPTEXTW vendor/winapi/src/um/commctrl.rs /^pub type TOOLTIPTEXTW = NMTTDISPINFOW;$/;" t +TOUPPER include/chartypes.h /^#define TOUPPER(/;" d +TPX_BRACKPASTE lib/readline/rltty.c /^#define TPX_BRACKPASTE /;" d file: +TPX_METAKEY lib/readline/rltty.c /^#define TPX_METAKEY /;" d file: +TPX_PREPPED lib/readline/rltty.c /^#define TPX_PREPPED /;" d file: +TP_CALLBACK_ENVIRON vendor/winapi/src/um/winnt.rs /^pub type TP_CALLBACK_ENVIRON = TP_CALLBACK_ENVIRON_V3;$/;" t +TP_VERSION vendor/winapi/src/um/winnt.rs /^pub type TP_VERSION = DWORD;$/;" t +TP_WAIT_RESULT vendor/winapi/src/um/winnt.rs /^pub type TP_WAIT_RESULT = DWORD;$/;" t +TRACEROOT lib/malloc/stats.c /^#define TRACEROOT /;" d file: +TRACEROOT lib/malloc/trace.c /^#define TRACEROOT /;" d file: +TRACE_INFO_CLASS vendor/winapi/src/shared/evntrace.rs /^pub type TRACE_INFO_CLASS = TRACE_QUERY_INFO_CLASS;$/;" t +TRANS lib/readline/undo.c /^#define TRANS(/;" d file: +TRANSLATE_REDIRECT command.h /^#define TRANSLATE_REDIRECT(/;" d +TRAP_STRING builtins_rust/source/src/lib.rs /^unsafe fn TRAP_STRING(s: i32) -> *mut c_char {$/;" f +TRAP_STRING trap.h /^#define TRAP_STRING(/;" d +TREEITEM vendor/winapi/src/um/commctrl.rs /^pub enum TREEITEM {}$/;" g +TRIE_CONTINUE vendor/unicode-ident/src/tables.rs /^pub(crate) static TRIE_CONTINUE: Align8<[u8; 1793]> = Align8([$/;" v +TRIE_START vendor/unicode-ident/src/tables.rs /^pub(crate) static TRIE_START: Align8<[u8; 402]> = Align8([$/;" v +TRUE test.c /^#define TRUE /;" d file: +TRUSTED_DOMAIN_INFORMATION_BASIC vendor/winapi/src/um/ntlsa.rs /^pub type TRUSTED_DOMAIN_INFORMATION_BASIC = LSA_TRUST_INFORMATION;$/;" t +TRUSTED_DOMAIN_INFORMATION_BASIC vendor/winapi/src/um/ntsecapi.rs /^pub type TRUSTED_DOMAIN_INFORMATION_BASIC = LSA_TRUST_INFORMATION;$/;" t +TRUSTEEA vendor/winapi/src/um/accctrl.rs /^pub type TRUSTEEA = TRUSTEE_A;$/;" t +TRUSTEEW vendor/winapi/src/um/accctrl.rs /^pub type TRUSTEEW = TRUSTEE_W;$/;" t +TTYSTRUCT include/shtty.h /^# define TTYSTRUCT /;" d +TTYSTRUCT include/shtty.h /^# define TTYSTRUCT /;" d +TV_DISPINFOA vendor/winapi/src/um/commctrl.rs /^pub type TV_DISPINFOA = NMTVDISPINFOA;$/;" t +TV_DISPINFOEXA vendor/winapi/src/um/commctrl.rs /^pub type TV_DISPINFOEXA = NMTVDISPINFOEXA;$/;" t +TV_DISPINFOEXW vendor/winapi/src/um/commctrl.rs /^pub type TV_DISPINFOEXW = NMTVDISPINFOEXW;$/;" t +TV_DISPINFOW vendor/winapi/src/um/commctrl.rs /^pub type TV_DISPINFOW = NMTVDISPINFOW;$/;" t +TV_HITTESTINFO vendor/winapi/src/um/commctrl.rs /^pub type TV_HITTESTINFO = TVHITTESTINFO;$/;" t +TV_INSERTSTRUCTA vendor/winapi/src/um/commctrl.rs /^pub type TV_INSERTSTRUCTA = TVINSERTSTRUCTA;$/;" t +TV_INSERTSTRUCTW vendor/winapi/src/um/commctrl.rs /^pub type TV_INSERTSTRUCTW = TVINSERTSTRUCTW;$/;" t +TV_ITEMA vendor/winapi/src/um/commctrl.rs /^pub type TV_ITEMA = TVITEMA;$/;" t +TV_ITEMW vendor/winapi/src/um/commctrl.rs /^pub type TV_ITEMW = TVITEMW;$/;" t +TV_KEYDOWN vendor/winapi/src/um/commctrl.rs /^pub type TV_KEYDOWN = NMTVKEYDOWN;$/;" t +TV_SORTCB vendor/winapi/src/um/commctrl.rs /^pub type TV_SORTCB = TVSORTCB;$/;" t +TWO vendor/intl_pluralrules/src/lib.rs /^ TWO,$/;" e enum:PluralCategory +TXTLOG_LEVEL vendor/winapi/src/um/spapidef.rs /^pub fn TXTLOG_LEVEL(flags: DWORD) -> DWORD {$/;" f +TYPEDEF_CA vendor/winapi/src/um/propidl.rs /^macro_rules! TYPEDEF_CA {$/;" M +TYPE_MAXIMUM include/typemax.h /^# define TYPE_MAXIMUM(/;" d +TYPE_MAXIMUM lib/sh/mktime.c /^#define TYPE_MAXIMUM(/;" d file: +TYPE_MAXIMUM r_jobs/src/lib.rs /^macro_rules! TYPE_MAXIMUM {$/;" M +TYPE_MINIMUM include/typemax.h /^# define TYPE_MINIMUM(/;" d +TYPE_MINIMUM lib/sh/mktime.c /^#define TYPE_MINIMUM(/;" d file: +TYPE_SIGNED general.h /^#define TYPE_SIGNED(/;" d +TYPE_SIGNED include/typemax.h /^# define TYPE_SIGNED(/;" d +TYPE_SIGNED lib/readline/shell.c /^#define TYPE_SIGNED(/;" d file: +TYPE_SIGNED lib/sh/mktime.c /^#define TYPE_SIGNED(/;" d file: +TYPE_SIGNED r_jobs/src/lib.rs /^macro_rules! TYPE_SIGNED {$/;" M +TYPE_SIGNED_MAGNITUDE include/typemax.h /^# define TYPE_SIGNED_MAGNITUDE(/;" d +TYPE_WIDTH general.h /^#define TYPE_WIDTH(/;" d +TYPE_WIDTH include/typemax.h /^# define TYPE_WIDTH(/;" d +TYPE_WIDTH r_jobs/src/lib.rs /^macro_rules! TYPE_WIDTH {$/;" M +TabbedTextOutA vendor/winapi/src/um/winuser.rs /^ pub fn TabbedTextOutA($/;" f +TabbedTextOutW vendor/winapi/src/um/winuser.rs /^ pub fn TabbedTextOutW($/;" f +Take vendor/futures-util/src/io/take.rs /^impl AsyncBufRead for Take {$/;" c +Take vendor/futures-util/src/io/take.rs /^impl AsyncRead for Take {$/;" c +Take vendor/futures-util/src/io/take.rs /^impl Take {$/;" c +Take vendor/futures-util/src/stream/stream/take.rs /^impl Sink for Take$/;" c +Take vendor/futures-util/src/stream/stream/take.rs /^impl Take {$/;" c +Take vendor/futures-util/src/stream/stream/take.rs /^impl FusedStream for Take$/;" c +Take vendor/futures-util/src/stream/stream/take.rs /^impl Stream for Take$/;" c +TakeUntil vendor/futures-util/src/stream/stream/take_until.rs /^impl Sink for TakeUntil$/;" c +TakeUntil vendor/futures-util/src/stream/stream/take_until.rs /^impl FusedStream for TakeUntil$/;" c +TakeUntil vendor/futures-util/src/stream/stream/take_until.rs /^impl Stream for TakeUntil$/;" c +TakeUntil vendor/futures-util/src/stream/stream/take_until.rs /^impl TakeUntil$/;" c +TakeUntil vendor/futures-util/src/stream/stream/take_until.rs /^impl fmt::Debug for TakeUntil$/;" c +TakeWhile vendor/futures-util/src/stream/stream/take_while.rs /^impl Sink for TakeWhile$/;" c +TakeWhile vendor/futures-util/src/stream/stream/take_while.rs /^impl FusedStream for TakeWhile$/;" c +TakeWhile vendor/futures-util/src/stream/stream/take_while.rs /^impl Stream for TakeWhile$/;" c +TakeWhile vendor/futures-util/src/stream/stream/take_while.rs /^impl TakeWhile$/;" c +TakeWhile vendor/futures-util/src/stream/stream/take_while.rs /^impl fmt::Debug for TakeWhile$/;" c +Target vendor/fluent-fallback/src/pin_cell/pin_mut.rs /^ type Target = T;$/;" t implementation:PinMut +Target vendor/fluent-fallback/src/pin_cell/pin_ref.rs /^ type Target = T;$/;" t implementation:PinRef +Target vendor/futures-channel/src/lock.rs /^ type Target = T;$/;" t implementation:TryLock +Target vendor/futures-executor/src/local_pool.rs /^ type Target = S;$/;" t implementation:BlockingStream +Target vendor/futures-task/src/waker_ref.rs /^ type Target = Waker;$/;" t implementation:WakerRef +Target vendor/futures-util/src/lock/bilock.rs /^ type Target = T;$/;" t implementation:BiLockGuard +Target vendor/futures-util/src/lock/mutex.rs /^ type Target = T;$/;" t implementation:MutexGuard +Target vendor/futures-util/src/lock/mutex.rs /^ type Target = T;$/;" t implementation:OwnedMutexGuard +Target vendor/futures-util/src/lock/mutex.rs /^ type Target = U;$/;" t implementation:MappedMutexGuard +Target vendor/libloading/src/os/unix/mod.rs /^ type Target = T;$/;" t implementation:Symbol +Target vendor/libloading/src/os/windows/mod.rs /^ type Target = T;$/;" t implementation:Symbol +Target vendor/libloading/src/safe.rs /^ type Target = T;$/;" t implementation:Symbol +Target vendor/memchr/src/cow.rs /^ type Target = [u8];$/;" t implementation:CowBytes +Target vendor/once_cell/src/lib.rs /^ type Target = T;$/;" t implementation:sync::Lazy +Target vendor/once_cell/src/lib.rs /^ type Target = T;$/;" t implementation:unsync::Lazy +Target vendor/smallvec/src/lib.rs /^ type Target = [A::Item];$/;" t implementation:SmallVec +Target vendor/syn/src/parse.rs /^ type Target = Cursor<'c>;$/;" t implementation:StepCursor +Target vendor/syn/tests/debug/mod.rs /^ type Target = T;$/;" t implementation:Lite +Target vendor/tinystr/src/tinystr16.rs /^ type Target = str;$/;" t implementation:TinyStr16 +Target vendor/tinystr/src/tinystr4.rs /^ type Target = str;$/;" t implementation:TinyStr4 +Target vendor/tinystr/src/tinystr8.rs /^ type Target = str;$/;" t implementation:TinyStr8 +Target vendor/tinystr/src/tinystrauto.rs /^ type Target = str;$/;" t implementation:TinyStrAuto +Task vendor/futures-executor/src/thread_pool.rs /^impl Task {$/;" c +Task vendor/futures-executor/src/thread_pool.rs /^impl fmt::Debug for Task {$/;" c +Task vendor/futures-executor/src/thread_pool.rs /^struct Task {$/;" s +Task vendor/futures-util/src/stream/futures_unordered/task.rs /^impl ArcWake for Task {$/;" c +Task vendor/futures-util/src/stream/futures_unordered/task.rs /^impl Drop for Task {$/;" c +Task vendor/futures-util/src/stream/futures_unordered/task.rs /^impl Task {$/;" c +Task vendor/futures-util/src/stream/futures_unordered/task.rs /^pub(super) struct Task {$/;" s +Task vendor/futures-util/src/stream/futures_unordered/task.rs /^unsafe impl Send for Task {}$/;" c +Task vendor/futures-util/src/stream/futures_unordered/task.rs /^unsafe impl Sync for Task {}$/;" c +TaskDialog vendor/winapi/src/um/commctrl.rs /^ pub fn TaskDialog($/;" f +TaskDialogIndirect vendor/winapi/src/um/commctrl.rs /^ pub fn TaskDialogIndirect($/;" f +Tcp vendor/nix/src/sys/socket/mod.rs /^ Tcp = libc::IPPROTO_TCP,$/;" e enum:SockProtocol +Term vendor/fluent-bundle/src/entry.rs /^ Term((usize, usize)),$/;" e enum:Entry +Term vendor/fluent-bundle/src/errors.rs /^ Term,$/;" e enum:EntryKind +Term vendor/fluent-bundle/src/resolver/errors.rs /^ Term {$/;" e enum:ReferenceKind +Term vendor/fluent-syntax/src/ast/mod.rs /^ Term(Term),$/;" e enum:Entry +Term vendor/fluent-syntax/src/ast/mod.rs /^pub struct Term {$/;" s +Term vendor/syn/src/expr.rs /^ Term,$/;" e enum:parsing::Precedence +TermAttributeAsPlaceable vendor/fluent-syntax/src/parser/errors.rs /^ TermAttributeAsPlaceable,$/;" e enum:ErrorKind +TermReference vendor/fluent-syntax/src/ast/mod.rs /^ TermReference {$/;" e enum:InlineExpression +TermReferenceAsSelector vendor/fluent-syntax/src/parser/errors.rs /^ TermReferenceAsSelector,$/;" e enum:ErrorKind +TerminateEnclave vendor/winapi/src/um/enclaveapi.rs /^ pub fn TerminateEnclave($/;" f +TerminateJobObject vendor/winapi/src/um/jobapi2.rs /^ pub fn TerminateJobObject($/;" f +TerminateProcess vendor/winapi/src/um/processthreadsapi.rs /^ pub fn TerminateProcess($/;" f +TerminateThread vendor/winapi/src/um/processthreadsapi.rs /^ pub fn TerminateThread($/;" f +Termios vendor/nix/src/sys/termios.rs /^impl From for Termios {$/;" c +Termios vendor/nix/src/sys/termios.rs /^impl Termios {$/;" c +Termios vendor/nix/src/sys/termios.rs /^pub struct Termios {$/;" s +Test vendor/async-trait/tests/ui/send-not-implemented.rs /^trait Test {$/;" i +Test vendor/memoffset/src/span_of.rs /^ struct Test {$/;" s function:tests::ig_test +Test vendor/thiserror/tests/test_backtrace.rs /^ Test { backtrace: Backtrace },$/;" e enum:enums::PlainBacktrace +Test vendor/thiserror/tests/test_backtrace.rs /^ Test {$/;" e enum:enums::ArcBacktrace +Test vendor/thiserror/tests/test_backtrace.rs /^ Test {$/;" e enum:enums::ArcBacktraceFrom +Test vendor/thiserror/tests/test_backtrace.rs /^ Test {$/;" e enum:enums::BacktraceFrom +Test vendor/thiserror/tests/test_backtrace.rs /^ Test {$/;" e enum:enums::CombinedBacktraceFrom +Test vendor/thiserror/tests/test_backtrace.rs /^ Test {$/;" e enum:enums::ExplicitBacktrace +Test vendor/thiserror/tests/test_backtrace.rs /^ Test {$/;" e enum:enums::OptBacktrace +Test vendor/thiserror/tests/test_backtrace.rs /^ Test {$/;" e enum:enums::OptBacktraceFrom +Test vendor/thiserror/tests/test_from.rs /^ Test {$/;" e enum:ErrorEnum +Test vendor/thiserror/tests/test_from.rs /^ Test {$/;" e enum:ErrorEnumOptional +Test vendor/thiserror/tests/test_option.rs /^ Test {$/;" e enum:enums::AlwaysSourceOptBacktrace +Test vendor/thiserror/tests/test_option.rs /^ Test {$/;" e enum:enums::NoSourceOptBacktrace +Test vendor/thiserror/tests/test_option.rs /^ Test {$/;" e enum:enums::OptSourceAlwaysBacktrace +Test vendor/thiserror/tests/test_option.rs /^ Test {$/;" e enum:enums::OptSourceNoBacktrace +Test vendor/thiserror/tests/test_option.rs /^ Test {$/;" e enum:enums::OptSourceOptBacktrace +Test before you commit vendor/libc/CONTRIBUTING.md /^## Test before you commit$/;" s chapter:Contributing to `libc` +TestCmd builtins_rust/exec_cmd/src/lib.rs /^ TestCmd,$/;" e enum:CMDType +TestComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for TestComand {$/;" c +TestComand builtins_rust/exec_cmd/src/lib.rs /^struct TestComand;$/;" s +TestRx vendor/futures-channel/tests/mpsc-close.rs /^ struct TestRx {$/;" s function:stress_try_send_as_receiver_closes +TestSender vendor/futures-channel/benches/sync_mpsc.rs /^impl Stream for TestSender {$/;" c +TestSender vendor/futures-channel/benches/sync_mpsc.rs /^struct TestSender {$/;" s +TestStruct vendor/async-trait/tests/test.rs /^ impl TestTrait for TestStruct {$/;" c module:issue129 +TestStruct vendor/async-trait/tests/test.rs /^ impl TestTrait for TestStruct {$/;" c module:issue134 +TestStruct vendor/async-trait/tests/test.rs /^ pub struct TestStruct;$/;" s module:issue129 +TestStruct vendor/async-trait/tests/test.rs /^ pub struct TestStruct;$/;" s module:issue134 +TestSubscriber vendor/async-trait/tests/test.rs /^ impl Subscriber for TestSubscriber {$/;" c module:issue45 +TestSubscriber vendor/async-trait/tests/test.rs /^ impl TestSubscriber {$/;" c module:issue45 +TestSubscriber vendor/async-trait/tests/test.rs /^ struct TestSubscriber {$/;" s module:issue45 +TestTask vendor/futures-channel/tests/mpsc-close.rs /^ impl Future for TestTask {$/;" c function:stress_try_send_as_receiver_closes +TestTask vendor/futures-channel/tests/mpsc-close.rs /^ impl TestTask {$/;" c function:stress_try_send_as_receiver_closes +TestTask vendor/futures-channel/tests/mpsc-close.rs /^ struct TestTask {$/;" s function:stress_try_send_as_receiver_closes +TestTrait vendor/async-trait/tests/test.rs /^ pub trait TestTrait {$/;" i module:issue129 +TestTrait vendor/async-trait/tests/test.rs /^ trait TestTrait {$/;" i module:issue134 +TestWriter vendor/futures-util/src/io/write_all_vectored.rs /^ impl AsyncWrite for TestWriter {$/;" c module:tests +TestWriter vendor/futures-util/src/io/write_all_vectored.rs /^ struct TestWriter {$/;" s module:tests +Testing vendor/syn/README.md /^## Testing$/;" s chapter:Parser for Rust source code +Testing Locally vendor/smallvec/debug_metadata/README.md /^#### Testing Locally$/;" t subsection:Debugger Visualizers""Testing Visualizers +Testing Visualizers vendor/smallvec/debug_metadata/README.md /^### Testing Visualizers$/;" S section:Debugger Visualizers +Testing strategy vendor/memchr/README.md /^### Testing strategy$/;" S chapter:memchr +Tests vendor/pin-project-lite/tests/README.md /^# Tests$/;" c +TextElement vendor/fluent-syntax/src/ast/mod.rs /^ TextElement { value: S },$/;" e enum:PatternElement +TextElement vendor/fluent-syntax/src/parser/pattern.rs /^ TextElement(usize, usize, usize, TextElementPosition),$/;" e enum:PatternElementPlaceholders +TextElementPosition vendor/fluent-syntax/src/parser/pattern.rs /^enum TextElementPosition {$/;" g +TextElementTermination vendor/fluent-syntax/src/parser/pattern.rs /^enum TextElementTermination {$/;" g +TextElementType vendor/fluent-syntax/src/parser/pattern.rs /^enum TextElementType {$/;" g +TextOutA vendor/winapi/src/um/wingdi.rs /^ pub fn TextOutA($/;" f +TextOutW vendor/winapi/src/um/wingdi.rs /^ pub fn TextOutW($/;" f +The Rust Code of Conduct vendor/rustc-hash/CODE_OF_CONDUCT.md /^# The Rust Code of Conduct$/;" c +Then vendor/futures-util/src/stream/stream/then.rs /^impl Sink for Then$/;" c +Then vendor/futures-util/src/stream/stream/then.rs /^impl FusedStream for Then$/;" c +Then vendor/futures-util/src/stream/stream/then.rs /^impl Stream for Then$/;" c +Then vendor/futures-util/src/stream/stream/then.rs /^impl Then$/;" c +Then vendor/futures-util/src/stream/stream/then.rs /^impl fmt::Debug for Then$/;" c +ThereIsNoIteratorInRepetition vendor/quote/src/runtime.rs /^impl BitOr for ThereIsNoIteratorInRepetition {$/;" c +ThereIsNoIteratorInRepetition vendor/quote/src/runtime.rs /^impl BitOr for ThereIsNoIteratorInRepetition {$/;" c +ThereIsNoIteratorInRepetition vendor/quote/src/runtime.rs /^pub struct ThereIsNoIteratorInRepetition; \/\/ False$/;" s +ThinVec vendor/syn/tests/common/eq.rs /^impl SpanlessEq for ThinVec {$/;" c +Thing builtins_rust/help/src/lib.rs /^struct Thing {$/;" s +Thing vendor/async-trait/tests/test.rs /^ impl Ret for Thing {}$/;" c module:issue149 +Thing vendor/async-trait/tests/test.rs /^ pub struct Thing;$/;" s module:issue149 +Thing vendor/async-trait/tests/ui/missing-body.rs /^impl Trait for Thing {$/;" c +Thing vendor/async-trait/tests/ui/missing-body.rs /^struct Thing;$/;" s +Thing vendor/async-trait/tests/ui/must-use.rs /^impl Interface for Thing {$/;" c +Thing vendor/async-trait/tests/ui/must-use.rs /^struct Thing;$/;" s +Thing vendor/elsa/examples/arena.rs /^struct Thing<'arena> {$/;" s +ThingRef vendor/elsa/examples/arena.rs /^type ThingRef<'arena> = &'arena Thing<'arena>;$/;" t +This vendor/thiserror/tests/test_transparent.rs /^ This,$/;" e enum:test_transparent_enum::Error +ThiserrorProvide vendor/thiserror/src/provide.rs /^pub trait ThiserrorProvide: Sealed {$/;" i +Thread32First vendor/winapi/src/um/tlhelp32.rs /^ pub fn Thread32First($/;" f +Thread32Next vendor/winapi/src/um/tlhelp32.rs /^ pub fn Thread32Next($/;" f +ThreadBound vendor/syn/src/thread.rs /^impl Debug for ThreadBound {$/;" c +ThreadBound vendor/syn/src/thread.rs /^impl ThreadBound {$/;" c +ThreadBound vendor/syn/src/thread.rs /^pub struct ThreadBound {$/;" s +ThreadBound vendor/syn/src/thread.rs /^unsafe impl Send for ThreadBound {}$/;" c +ThreadBound vendor/syn/src/thread.rs /^unsafe impl Sync for ThreadBound {}$/;" c +ThreadNotify vendor/futures-executor/src/local_pool.rs /^impl ArcWake for ThreadNotify {$/;" c +ThreadNotify vendor/futures-executor/src/local_pool.rs /^pub(crate) struct ThreadNotify {$/;" s +ThreadPool vendor/async-trait/tests/test.rs /^ type ThreadPool = P::ThreadPool;$/;" t module:issue106 +ThreadPool vendor/async-trait/tests/test.rs /^ type ThreadPool;$/;" t interface:issue106::ProcessPool +ThreadPool vendor/futures-executor/src/thread_pool.rs /^impl AssertSendSync for ThreadPool {}$/;" c +ThreadPool vendor/futures-executor/src/thread_pool.rs /^impl Clone for ThreadPool {$/;" c +ThreadPool vendor/futures-executor/src/thread_pool.rs /^impl Drop for ThreadPool {$/;" c +ThreadPool vendor/futures-executor/src/thread_pool.rs /^impl Spawn for ThreadPool {$/;" c +ThreadPool vendor/futures-executor/src/thread_pool.rs /^impl ThreadPool {$/;" c +ThreadPool vendor/futures-executor/src/thread_pool.rs /^impl fmt::Debug for ThreadPool {$/;" c +ThreadPool vendor/futures-executor/src/thread_pool.rs /^pub struct ThreadPool {$/;" s +ThreadPoolBuilder vendor/futures-executor/src/thread_pool.rs /^impl Default for ThreadPoolBuilder {$/;" c +ThreadPoolBuilder vendor/futures-executor/src/thread_pool.rs /^impl ThreadPoolBuilder {$/;" c +ThreadPoolBuilder vendor/futures-executor/src/thread_pool.rs /^impl fmt::Debug for ThreadPoolBuilder {$/;" c +ThreadPoolBuilder vendor/futures-executor/src/thread_pool.rs /^pub struct ThreadPoolBuilder {$/;" s +TimeSpec vendor/nix/src/sys/time.rs /^impl AsMut for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl AsRef for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl From for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl From for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl Ord for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl PartialOrd for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl TimeValLike for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl fmt::Display for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl ops::Add for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl ops::Div for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl ops::Mul for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl ops::Neg for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^impl ops::Sub for TimeSpec {$/;" c +TimeSpec vendor/nix/src/sys/time.rs /^pub struct TimeSpec(timespec);$/;" s +TimeStamp vendor/winapi/src/shared/sspi.rs /^pub type TimeStamp = SECURITY_INTEGER;$/;" t +TimeVal vendor/nix/src/sys/time.rs /^impl AsMut for TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^impl AsRef for TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^impl From for TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^impl Ord for TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^impl PartialOrd for TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^impl TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^impl TimeValLike for TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^impl fmt::Display for TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^impl ops::Add for TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^impl ops::Div for TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^impl ops::Mul for TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^impl ops::Neg for TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^impl ops::Sub for TimeVal {$/;" c +TimeVal vendor/nix/src/sys/time.rs /^pub struct TimeVal(timeval);$/;" s +TimeValLike vendor/nix/src/sys/time.rs /^pub trait TimeValLike: Sized {$/;" i +Timer vendor/nix/src/sys/timer.rs /^impl Drop for Timer {$/;" c +Timer vendor/nix/src/sys/timer.rs /^impl Timer {$/;" c +Timer vendor/nix/src/sys/timer.rs /^pub struct Timer(libc::timer_t);$/;" s +TimerFd vendor/nix/src/sys/timerfd.rs /^impl AsRawFd for TimerFd {$/;" c +TimerFd vendor/nix/src/sys/timerfd.rs /^impl Drop for TimerFd {$/;" c +TimerFd vendor/nix/src/sys/timerfd.rs /^impl FromRawFd for TimerFd {$/;" c +TimerFd vendor/nix/src/sys/timerfd.rs /^impl TimerFd {$/;" c +TimerFd vendor/nix/src/sys/timerfd.rs /^pub struct TimerFd {$/;" s +TimerSpec vendor/nix/src/sys/time.rs /^ impl AsMut for TimerSpec {$/;" c module:timer +TimerSpec vendor/nix/src/sys/time.rs /^ impl AsRef for TimerSpec {$/;" c module:timer +TimerSpec vendor/nix/src/sys/time.rs /^ impl From for TimerSpec {$/;" c module:timer +TimerSpec vendor/nix/src/sys/time.rs /^ impl TimerSpec {$/;" c module:timer +TimerSpec vendor/nix/src/sys/time.rs /^ pub(crate) struct TimerSpec(libc::itimerspec);$/;" s module:timer +TimesCmd builtins_rust/exec_cmd/src/lib.rs /^ TimesCmd,$/;" e enum:CMDType +TimesComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for TimesComand {$/;" c +TimesComand builtins_rust/exec_cmd/src/lib.rs /^struct TimesComand;$/;" s +Tiny vendor/tinystr/src/tinystrauto.rs /^ Tiny(TinyStr16),$/;" e enum:TinyStrAuto +TinyStr16 vendor/tinystr/src/tinystr16.rs /^impl Deref for TinyStr16 {$/;" c +TinyStr16 vendor/tinystr/src/tinystr16.rs /^impl FromStr for TinyStr16 {$/;" c +TinyStr16 vendor/tinystr/src/tinystr16.rs /^impl Into for TinyStr16 {$/;" c +TinyStr16 vendor/tinystr/src/tinystr16.rs /^impl Ord for TinyStr16 {$/;" c +TinyStr16 vendor/tinystr/src/tinystr16.rs /^impl PartialEq<&str> for TinyStr16 {$/;" c +TinyStr16 vendor/tinystr/src/tinystr16.rs /^impl PartialOrd for TinyStr16 {$/;" c +TinyStr16 vendor/tinystr/src/tinystr16.rs /^impl TinyStr16 {$/;" c +TinyStr16 vendor/tinystr/src/tinystr16.rs /^impl fmt::Debug for TinyStr16 {$/;" c +TinyStr16 vendor/tinystr/src/tinystr16.rs /^impl fmt::Display for TinyStr16 {$/;" c +TinyStr16 vendor/tinystr/src/tinystr16.rs /^pub struct TinyStr16(NonZeroU128);$/;" s +TinyStr4 vendor/tinystr/src/tinystr4.rs /^impl Deref for TinyStr4 {$/;" c +TinyStr4 vendor/tinystr/src/tinystr4.rs /^impl FromStr for TinyStr4 {$/;" c +TinyStr4 vendor/tinystr/src/tinystr4.rs /^impl Into for TinyStr4 {$/;" c +TinyStr4 vendor/tinystr/src/tinystr4.rs /^impl Ord for TinyStr4 {$/;" c +TinyStr4 vendor/tinystr/src/tinystr4.rs /^impl PartialEq<&str> for TinyStr4 {$/;" c +TinyStr4 vendor/tinystr/src/tinystr4.rs /^impl PartialOrd for TinyStr4 {$/;" c +TinyStr4 vendor/tinystr/src/tinystr4.rs /^impl TinyStr4 {$/;" c +TinyStr4 vendor/tinystr/src/tinystr4.rs /^impl fmt::Debug for TinyStr4 {$/;" c +TinyStr4 vendor/tinystr/src/tinystr4.rs /^impl fmt::Display for TinyStr4 {$/;" c +TinyStr4 vendor/tinystr/src/tinystr4.rs /^pub struct TinyStr4(NonZeroU32);$/;" s +TinyStr8 vendor/tinystr/src/tinystr8.rs /^impl Deref for TinyStr8 {$/;" c +TinyStr8 vendor/tinystr/src/tinystr8.rs /^impl FromStr for TinyStr8 {$/;" c +TinyStr8 vendor/tinystr/src/tinystr8.rs /^impl Into for TinyStr8 {$/;" c +TinyStr8 vendor/tinystr/src/tinystr8.rs /^impl Ord for TinyStr8 {$/;" c +TinyStr8 vendor/tinystr/src/tinystr8.rs /^impl PartialEq<&str> for TinyStr8 {$/;" c +TinyStr8 vendor/tinystr/src/tinystr8.rs /^impl PartialOrd for TinyStr8 {$/;" c +TinyStr8 vendor/tinystr/src/tinystr8.rs /^impl TinyStr8 {$/;" c +TinyStr8 vendor/tinystr/src/tinystr8.rs /^impl fmt::Debug for TinyStr8 {$/;" c +TinyStr8 vendor/tinystr/src/tinystr8.rs /^impl fmt::Display for TinyStr8 {$/;" c +TinyStr8 vendor/tinystr/src/tinystr8.rs /^pub struct TinyStr8(NonZeroU64);$/;" s +TinyStrAuto vendor/tinystr/src/tinystrauto.rs /^impl Deref for TinyStrAuto {$/;" c +TinyStrAuto vendor/tinystr/src/tinystrauto.rs /^impl FromStr for TinyStrAuto {$/;" c +TinyStrAuto vendor/tinystr/src/tinystrauto.rs /^impl PartialEq<&str> for TinyStrAuto {$/;" c +TinyStrAuto vendor/tinystr/src/tinystrauto.rs /^impl fmt::Display for TinyStrAuto {$/;" c +TinyStrAuto vendor/tinystr/src/tinystrauto.rs /^pub enum TinyStrAuto {$/;" g +Tipc vendor/nix/src/sys/socket/addr.rs /^ Tipc = libc::AF_TIPC,$/;" e enum:AddressFamily +TlsAlloc vendor/winapi/src/um/processthreadsapi.rs /^ pub fn TlsAlloc() -> DWORD;$/;" f +TlsFree vendor/winapi/src/um/processthreadsapi.rs /^ pub fn TlsFree($/;" f +TlsGetValue vendor/winapi/src/um/processthreadsapi.rs /^ pub fn TlsGetValue($/;" f +TlsSetValue vendor/winapi/src/um/processthreadsapi.rs /^ pub fn TlsSetValue($/;" f +ToAscii vendor/winapi/src/um/winuser.rs /^ pub fn ToAscii($/;" f +ToAsciiEx vendor/winapi/src/um/winuser.rs /^ pub fn ToAsciiEx($/;" f +ToResourceId vendor/fluent-fallback/src/types.rs /^pub trait ToResourceId {$/;" i +ToSmallVec vendor/smallvec/src/lib.rs /^pub trait ToSmallVec {$/;" i +ToTokens vendor/quote/src/to_tokens.rs /^pub trait ToTokens {$/;" i +ToUnicode vendor/winapi/src/um/winuser.rs /^ pub fn ToUnicode($/;" f +ToUnicodeEx vendor/winapi/src/um/winuser.rs /^ pub fn ToUnicodeEx($/;" f +Token vendor/syn/src/ext.rs /^ type Token = private::IdentAny;$/;" t implementation:PeekFn +Token vendor/syn/src/lookahead.rs /^ type Token = T;$/;" t implementation:F +Token vendor/syn/src/lookahead.rs /^ type Token: Token;$/;" t interface:Peek +Token vendor/syn/src/token.rs /^pub trait Token: private::Sealed {$/;" i +TokenBuffer vendor/syn/src/buffer.rs /^impl TokenBuffer {$/;" c +TokenBuffer vendor/syn/src/buffer.rs /^pub struct TokenBuffer {$/;" s +TokenContext vendor/async-trait/tests/test.rs /^ impl Context for TokenContext {$/;" c module:issue42 +TokenContext vendor/async-trait/tests/test.rs /^ pub struct TokenContext;$/;" s module:issue42 +TokenKind vendor/syn/tests/common/eq.rs /^impl SpanlessEq for TokenKind {$/;" c +TokenMarker vendor/syn/src/lookahead.rs /^impl IntoSpans for TokenMarker {$/;" c +TokenMarker vendor/syn/src/lookahead.rs /^pub enum TokenMarker {}$/;" g +TokenStream vendor/proc-macro2/src/fallback.rs /^impl Debug for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^impl Display for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^impl Drop for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^impl Extend for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^impl Extend for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^impl From for proc_macro::TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^impl From for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^impl From for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^impl FromIterator for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^impl FromIterator for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^impl FromStr for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^impl IntoIterator for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^impl TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/fallback.rs /^pub(crate) struct TokenStream {$/;" s +TokenStream vendor/proc-macro2/src/lib.rs /^ impl IntoIterator for TokenStream {$/;" c module:token_stream +TokenStream vendor/proc-macro2/src/lib.rs /^impl Debug for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/lib.rs /^impl Default for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/lib.rs /^impl Display for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/lib.rs /^impl Extend for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/lib.rs /^impl Extend for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/lib.rs /^impl From for proc_macro::TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/lib.rs /^impl From for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/lib.rs /^impl From for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/lib.rs /^impl FromIterator for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/lib.rs /^impl FromIterator for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/lib.rs /^impl FromStr for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/lib.rs /^impl TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/lib.rs /^pub struct TokenStream {$/;" s +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl Debug for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl Display for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl Extend for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl Extend for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl From for proc_macro::TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl From for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl From for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl From for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl FromIterator for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl FromIterator for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl FromStr for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl IntoIterator for TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^impl TokenStream {$/;" c +TokenStream vendor/proc-macro2/src/wrapper.rs /^pub(crate) enum TokenStream {$/;" g +TokenStream vendor/quote/src/ext.rs /^ impl Sealed for TokenStream {}$/;" c module:private +TokenStream vendor/quote/src/ext.rs /^impl TokenStreamExt for TokenStream {$/;" c +TokenStream vendor/quote/src/to_tokens.rs /^impl ToTokens for TokenStream {$/;" c +TokenStream vendor/syn/src/parse.rs /^impl Parse for TokenStream {$/;" c +TokenStream vendor/syn/tests/common/eq.rs /^impl SpanlessEq for TokenStream {$/;" c +TokenStream vendor/syn/tests/macros/mod.rs /^impl Tokens for proc_macro2::TokenStream {$/;" c +TokenStreamBuilder vendor/proc-macro2/src/fallback.rs /^impl TokenStreamBuilder {$/;" c +TokenStreamBuilder vendor/proc-macro2/src/fallback.rs /^pub(crate) struct TokenStreamBuilder {$/;" s +TokenStreamExt vendor/quote/src/ext.rs /^pub trait TokenStreamExt: private::Sealed {$/;" i +TokenStreamHelper vendor/syn/src/tt.rs /^impl<'a> Hash for TokenStreamHelper<'a> {$/;" c +TokenStreamHelper vendor/syn/src/tt.rs /^impl<'a> PartialEq for TokenStreamHelper<'a> {$/;" c +TokenStreamHelper vendor/syn/src/tt.rs /^pub struct TokenStreamHelper<'a>(pub &'a TokenStream);$/;" s +TokenTree vendor/proc-macro2/src/lib.rs /^impl Debug for TokenTree {$/;" c +TokenTree vendor/proc-macro2/src/lib.rs /^impl Display for TokenTree {$/;" c +TokenTree vendor/proc-macro2/src/lib.rs /^impl From for TokenTree {$/;" c +TokenTree vendor/proc-macro2/src/lib.rs /^impl From for TokenTree {$/;" c +TokenTree vendor/proc-macro2/src/lib.rs /^impl From for TokenTree {$/;" c +TokenTree vendor/proc-macro2/src/lib.rs /^impl From for TokenTree {$/;" c +TokenTree vendor/proc-macro2/src/lib.rs /^impl TokenTree {$/;" c +TokenTree vendor/proc-macro2/src/lib.rs /^pub enum TokenTree {$/;" g +TokenTree vendor/quote/src/to_tokens.rs /^impl ToTokens for TokenTree {$/;" c +TokenTree vendor/syn/src/parse.rs /^impl Parse for TokenTree {$/;" c +TokenTreeHelper vendor/syn/src/tt.rs /^impl<'a> Hash for TokenTreeHelper<'a> {$/;" c +TokenTreeHelper vendor/syn/src/tt.rs /^impl<'a> PartialEq for TokenTreeHelper<'a> {$/;" c +TokenTreeHelper vendor/syn/src/tt.rs /^pub struct TokenTreeHelper<'a>(pub &'a TokenTree);$/;" s +TokenTreeIter vendor/proc-macro2/src/fallback.rs /^pub(crate) type TokenTreeIter = RcVecIntoIter;$/;" t +TokenTreeIter vendor/proc-macro2/src/wrapper.rs /^impl Iterator for TokenTreeIter {$/;" c +TokenTreeIter vendor/proc-macro2/src/wrapper.rs /^pub(crate) enum TokenTreeIter {$/;" g +Tokens vendor/syn/tests/macros/mod.rs /^pub trait Tokens {$/;" i +TokensOrDefault vendor/syn/src/print.rs /^impl<'a, T> ToTokens for TokensOrDefault<'a, T>$/;" c +TokensOrDefault vendor/syn/src/print.rs /^pub struct TokensOrDefault<'a, T: 'a>(pub &'a Option);$/;" s +TooManyPlaceables vendor/fluent-bundle/src/resolver/errors.rs /^ TooManyPlaceables,$/;" e enum:ResolverError +TooManyShiftBits vendor/thiserror/tests/test_expr.rs /^ TooManyShiftBits {$/;" e enum:CompilerError +Toolhelp32ReadProcessMemory vendor/winapi/src/um/tlhelp32.rs /^ pub fn Toolhelp32ReadProcessMemory($/;" f +TraceEvent vendor/winapi/src/shared/evntrace.rs /^ pub fn TraceEvent($/;" f +TraceEventInstance vendor/winapi/src/shared/evntrace.rs /^ pub fn TraceEventInstance($/;" f +TraceMessage vendor/winapi/src/shared/evntrace.rs /^ pub fn TraceMessage($/;" f +TraceMessageVa vendor/winapi/src/shared/evntrace.rs /^ pub fn TraceMessageVa($/;" f +TraceQueryInformation vendor/winapi/src/shared/evntrace.rs /^ pub fn TraceQueryInformation($/;" f +TraceSetInformation vendor/winapi/src/shared/evntrace.rs /^ pub fn TraceSetInformation($/;" f +TrackMouseEvent vendor/winapi/src/um/winuser.rs /^ pub fn TrackMouseEvent($/;" f +TrackPopupMenu vendor/winapi/src/um/winuser.rs /^ pub fn TrackPopupMenu($/;" f +TrackPopupMenuEx vendor/winapi/src/um/winuser.rs /^ pub fn TrackPopupMenuEx($/;" f +Trait vendor/async-trait/src/expand.rs /^ Trait {$/;" e enum:Context +Trait vendor/async-trait/src/parse.rs /^ Trait(ItemTrait),$/;" e enum:Item +Trait vendor/async-trait/tests/test.rs /^ impl Trait for () {$/;" c module:issue120 +Trait vendor/async-trait/tests/test.rs /^ impl Trait for () {}$/;" c module:issue123 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait {$/;" i function:test_inference +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait {$/;" i function:test_unimplemented +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait {$/;" i module:issue149 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait {$/;" i module:issue158 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait {$/;" i module:issue161 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait {$/;" i module:issue177 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait {$/;" i module:issue204 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait {$/;" i module:issue53 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait {$/;" i module:issue81 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait {$/;" i module:issue83 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait {$/;" i module:issue85 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait {$/;" i module:issue87 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait$/;" i module:issue92 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait: ::core::marker::Sync {$/;" i module:issue169 +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait: Sized {$/;" i function:test_internal_items +Trait vendor/async-trait/tests/test.rs /^ pub trait Trait<'a> {$/;" i module:issue31 +Trait vendor/async-trait/tests/test.rs /^ trait Trait {$/;" i function:test_self_in_macro +Trait vendor/async-trait/tests/test.rs /^ trait Trait {$/;" i module:drop_order +Trait vendor/async-trait/tests/test.rs /^ trait Trait {$/;" i module:issue120 +Trait vendor/async-trait/tests/test.rs /^ trait Trait {$/;" i module:issue152 +Trait vendor/async-trait/tests/test.rs /^ trait Trait {$/;" i module:issue199 +Trait vendor/async-trait/tests/test.rs /^ trait Trait {$/;" i module:issue57 +Trait vendor/async-trait/tests/test.rs /^ trait Trait {$/;" i module:issue89 +Trait vendor/async-trait/tests/test.rs /^ trait Trait {}$/;" i module:issue15 +Trait vendor/async-trait/tests/test.rs /^ trait Trait {$/;" i module:issue123 +Trait vendor/async-trait/tests/test.rs /^trait Trait {$/;" i +Trait vendor/async-trait/tests/ui/arg-implementation-detail.rs /^pub trait Trait {$/;" i +Trait vendor/async-trait/tests/ui/bare-trait-object.rs /^trait Trait {$/;" i +Trait vendor/async-trait/tests/ui/delimiter-span.rs /^trait Trait {$/;" i +Trait vendor/async-trait/tests/ui/lifetime-span.rs /^pub trait Trait<'r> {$/;" i +Trait vendor/async-trait/tests/ui/missing-async-in-impl.rs /^pub trait Trait {$/;" i +Trait vendor/async-trait/tests/ui/missing-async-in-trait.rs /^pub trait Trait {$/;" i +Trait vendor/async-trait/tests/ui/missing-body.rs /^trait Trait {$/;" i +Trait vendor/async-trait/tests/ui/self-span.rs /^pub trait Trait {$/;" i +Trait vendor/async-trait/tests/ui/unreachable.rs /^pub trait Trait {$/;" i +Trait vendor/async-trait/tests/ui/unsupported-self.rs /^pub trait Trait {$/;" i +Trait vendor/cfg-if/src/lib.rs /^ trait Trait {$/;" i module:tests +Trait vendor/pin-project-lite/tests/test.rs /^ trait Trait {$/;" i function:no_infer_outlives +Trait vendor/syn/tests/test_item.rs /^ impl !Trait {}$/;" c function:test_negative_impl +Trait vendor/thiserror-impl/src/attr.rs /^impl ToTokens for Trait {$/;" c +Trait vendor/thiserror-impl/src/attr.rs /^pub enum Trait {$/;" g +Trait1 vendor/async-trait/tests/test.rs /^ pub trait Trait1 {$/;" i module:issue92_2 +Trait1 vendor/async-trait/tests/test.rs /^ trait Trait1<'a> {$/;" i module:issue28 +Trait2 vendor/async-trait/tests/test.rs /^ pub trait Trait2: Trait1 {$/;" i module:issue92_2 +Trait2 vendor/async-trait/tests/test.rs /^ trait Trait2 {$/;" i module:issue28 +Trait2 vendor/async-trait/tests/ui/lifetime-span.rs /^pub trait Trait2 {$/;" i +Trait3 vendor/async-trait/tests/test.rs /^ trait Trait3<'a, 'b> {$/;" i module:issue28 +TraitBound vendor/syn/src/gen/clone.rs /^impl Clone for TraitBound {$/;" c +TraitBound vendor/syn/src/gen/debug.rs /^impl Debug for TraitBound {$/;" c +TraitBound vendor/syn/src/gen/eq.rs /^impl Eq for TraitBound {}$/;" c +TraitBound vendor/syn/src/gen/eq.rs /^impl PartialEq for TraitBound {$/;" c +TraitBound vendor/syn/src/gen/hash.rs /^impl Hash for TraitBound {$/;" c +TraitBound vendor/syn/src/generics.rs /^ impl Parse for TraitBound {$/;" c module:parsing +TraitBound vendor/syn/src/generics.rs /^ impl ToTokens for TraitBound {$/;" c module:printing +TraitBoundModifier vendor/syn/src/gen/clone.rs /^impl Clone for TraitBoundModifier {$/;" c +TraitBoundModifier vendor/syn/src/gen/clone.rs /^impl Copy for TraitBoundModifier {}$/;" c +TraitBoundModifier vendor/syn/src/gen/debug.rs /^impl Debug for TraitBoundModifier {$/;" c +TraitBoundModifier vendor/syn/src/gen/eq.rs /^impl Eq for TraitBoundModifier {}$/;" c +TraitBoundModifier vendor/syn/src/gen/eq.rs /^impl PartialEq for TraitBoundModifier {$/;" c +TraitBoundModifier vendor/syn/src/gen/hash.rs /^impl Hash for TraitBoundModifier {$/;" c +TraitBoundModifier vendor/syn/src/generics.rs /^ impl Parse for TraitBoundModifier {$/;" c module:parsing +TraitBoundModifier vendor/syn/src/generics.rs /^ impl ToTokens for TraitBoundModifier {$/;" c module:printing +TraitFoo vendor/async-trait/tests/ui/unreachable.rs /^pub trait TraitFoo {$/;" i +TraitItem vendor/syn/src/gen/clone.rs /^impl Clone for TraitItem {$/;" c +TraitItem vendor/syn/src/gen/debug.rs /^impl Debug for TraitItem {$/;" c +TraitItem vendor/syn/src/gen/eq.rs /^impl Eq for TraitItem {}$/;" c +TraitItem vendor/syn/src/gen/eq.rs /^impl PartialEq for TraitItem {$/;" c +TraitItem vendor/syn/src/gen/hash.rs /^impl Hash for TraitItem {$/;" c +TraitItem vendor/syn/src/item.rs /^ impl Parse for TraitItem {$/;" c module:parsing +TraitItemConst vendor/syn/src/gen/clone.rs /^impl Clone for TraitItemConst {$/;" c +TraitItemConst vendor/syn/src/gen/debug.rs /^impl Debug for TraitItemConst {$/;" c +TraitItemConst vendor/syn/src/gen/eq.rs /^impl Eq for TraitItemConst {}$/;" c +TraitItemConst vendor/syn/src/gen/eq.rs /^impl PartialEq for TraitItemConst {$/;" c +TraitItemConst vendor/syn/src/gen/hash.rs /^impl Hash for TraitItemConst {$/;" c +TraitItemConst vendor/syn/src/item.rs /^ impl Parse for TraitItemConst {$/;" c module:parsing +TraitItemConst vendor/syn/src/item.rs /^ impl ToTokens for TraitItemConst {$/;" c module:printing +TraitItemMacro vendor/syn/src/gen/clone.rs /^impl Clone for TraitItemMacro {$/;" c +TraitItemMacro vendor/syn/src/gen/debug.rs /^impl Debug for TraitItemMacro {$/;" c +TraitItemMacro vendor/syn/src/gen/eq.rs /^impl Eq for TraitItemMacro {}$/;" c +TraitItemMacro vendor/syn/src/gen/eq.rs /^impl PartialEq for TraitItemMacro {$/;" c +TraitItemMacro vendor/syn/src/gen/hash.rs /^impl Hash for TraitItemMacro {$/;" c +TraitItemMacro vendor/syn/src/item.rs /^ impl Parse for TraitItemMacro {$/;" c module:parsing +TraitItemMacro vendor/syn/src/item.rs /^ impl ToTokens for TraitItemMacro {$/;" c module:printing +TraitItemMethod vendor/syn/src/gen/clone.rs /^impl Clone for TraitItemMethod {$/;" c +TraitItemMethod vendor/syn/src/gen/debug.rs /^impl Debug for TraitItemMethod {$/;" c +TraitItemMethod vendor/syn/src/gen/eq.rs /^impl Eq for TraitItemMethod {}$/;" c +TraitItemMethod vendor/syn/src/gen/eq.rs /^impl PartialEq for TraitItemMethod {$/;" c +TraitItemMethod vendor/syn/src/gen/hash.rs /^impl Hash for TraitItemMethod {$/;" c +TraitItemMethod vendor/syn/src/item.rs /^ impl Parse for TraitItemMethod {$/;" c module:parsing +TraitItemMethod vendor/syn/src/item.rs /^ impl ToTokens for TraitItemMethod {$/;" c module:printing +TraitItemType vendor/syn/src/gen/clone.rs /^impl Clone for TraitItemType {$/;" c +TraitItemType vendor/syn/src/gen/debug.rs /^impl Debug for TraitItemType {$/;" c +TraitItemType vendor/syn/src/gen/eq.rs /^impl Eq for TraitItemType {}$/;" c +TraitItemType vendor/syn/src/gen/eq.rs /^impl PartialEq for TraitItemType {$/;" c +TraitItemType vendor/syn/src/gen/hash.rs /^impl Hash for TraitItemType {$/;" c +TraitItemType vendor/syn/src/item.rs /^ impl Parse for TraitItemType {$/;" c module:parsing +TraitItemType vendor/syn/src/item.rs /^ impl ToTokens for TraitItemType {$/;" c module:printing +TransactNamedPipe vendor/winapi/src/um/namedpipeapi.rs /^ pub fn TransactNamedPipe($/;" f +TranslateAcceleratorA vendor/winapi/src/um/winuser.rs /^ pub fn TranslateAcceleratorA($/;" f +TranslateAcceleratorW vendor/winapi/src/um/winuser.rs /^ pub fn TranslateAcceleratorW($/;" f +TranslateCharsetInfo vendor/winapi/src/um/wingdi.rs /^ pub fn TranslateCharsetInfo($/;" f +TranslateMessage vendor/winapi/src/um/winuser.rs /^ pub fn TranslateMessage($/;" f +TransmitCommChar vendor/winapi/src/um/commapi.rs /^ pub fn TransmitCommChar($/;" f +TransmitFile vendor/winapi/src/um/mswsock.rs /^ pub fn TransmitFile($/;" f +Transparent vendor/thiserror-impl/src/attr.rs /^pub struct Transparent<'a> {$/;" s +TransparentBlt vendor/winapi/src/um/wingdi.rs /^ pub fn TransparentBlt($/;" f +TrapCmd builtins_rust/exec_cmd/src/lib.rs /^ TrapCmd,$/;" e enum:CMDType +TrapComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for TrapComand {$/;" c +TrapComand builtins_rust/exec_cmd/src/lib.rs /^struct TrapComand;$/;" s +TreeResetNamedSecurityInfoA vendor/winapi/src/um/aclapi.rs /^ pub fn TreeResetNamedSecurityInfoA($/;" f +TreeResetNamedSecurityInfoW vendor/winapi/src/um/aclapi.rs /^ pub fn TreeResetNamedSecurityInfoW($/;" f +TreeSetNamedSecurityInfoA vendor/winapi/src/um/aclapi.rs /^ pub fn TreeSetNamedSecurityInfoA($/;" f +TreeSetNamedSecurityInfoW vendor/winapi/src/um/aclapi.rs /^ pub fn TreeSetNamedSecurityInfoW($/;" f +TryAcquireSRWLockExclusive vendor/winapi/src/um/synchapi.rs /^ pub fn TryAcquireSRWLockExclusive($/;" f +TryAcquireSRWLockShared vendor/winapi/src/um/synchapi.rs /^ pub fn TryAcquireSRWLockShared($/;" f +TryBufferUnordered vendor/futures-util/src/stream/try_stream/try_buffer_unordered.rs /^impl Sink for TryBufferUnordered$/;" c +TryBufferUnordered vendor/futures-util/src/stream/try_stream/try_buffer_unordered.rs /^impl Stream for TryBufferUnordered$/;" c +TryBufferUnordered vendor/futures-util/src/stream/try_stream/try_buffer_unordered.rs /^impl TryBufferUnordered$/;" c +TryBuffered vendor/futures-util/src/stream/try_stream/try_buffered.rs /^impl Sink for TryBuffered$/;" c +TryBuffered vendor/futures-util/src/stream/try_stream/try_buffered.rs /^impl Stream for TryBuffered$/;" c +TryBuffered vendor/futures-util/src/stream/try_stream/try_buffered.rs /^impl TryBuffered$/;" c +TryChunks vendor/futures-util/src/stream/try_stream/try_chunks.rs /^impl Sink for TryChunks$/;" c +TryChunks vendor/futures-util/src/stream/try_stream/try_chunks.rs /^impl FusedStream for TryChunks {$/;" c +TryChunks vendor/futures-util/src/stream/try_stream/try_chunks.rs /^impl Stream for TryChunks {$/;" c +TryChunks vendor/futures-util/src/stream/try_stream/try_chunks.rs /^impl TryChunks {$/;" c +TryChunksError vendor/futures-util/src/stream/try_stream/try_chunks.rs /^impl std::error::Error for TryChunksError {}$/;" c +TryChunksError vendor/futures-util/src/stream/try_stream/try_chunks.rs /^impl fmt::Debug for TryChunksError {$/;" c +TryChunksError vendor/futures-util/src/stream/try_stream/try_chunks.rs /^impl fmt::Display for TryChunksError {$/;" c +TryChunksError vendor/futures-util/src/stream/try_stream/try_chunks.rs /^pub struct TryChunksError(pub Vec, pub E);$/;" s +TryCollect vendor/futures-util/src/stream/try_stream/try_collect.rs /^impl FusedFuture for TryCollect$/;" c +TryCollect vendor/futures-util/src/stream/try_stream/try_collect.rs /^impl Future for TryCollect$/;" c +TryCollect vendor/futures-util/src/stream/try_stream/try_collect.rs /^impl TryCollect {$/;" c +TryConcat vendor/futures-util/src/stream/try_stream/try_concat.rs /^impl Future for TryConcat$/;" c +TryConcat vendor/futures-util/src/stream/try_stream/try_concat.rs /^impl TryConcat$/;" c +TryEnterCriticalSection vendor/winapi/src/um/synchapi.rs /^ pub fn TryEnterCriticalSection($/;" f +TryFilter vendor/futures-util/src/stream/try_stream/try_filter.rs /^impl Sink for TryFilter$/;" c +TryFilter vendor/futures-util/src/stream/try_stream/try_filter.rs /^impl FusedStream for TryFilter$/;" c +TryFilter vendor/futures-util/src/stream/try_stream/try_filter.rs /^impl Stream for TryFilter$/;" c +TryFilter vendor/futures-util/src/stream/try_stream/try_filter.rs /^impl TryFilter$/;" c +TryFilter vendor/futures-util/src/stream/try_stream/try_filter.rs /^impl fmt::Debug for TryFilter$/;" c +TryFilterMap vendor/futures-util/src/stream/try_stream/try_filter_map.rs /^impl Sink for TryFilterMap$/;" c +TryFilterMap vendor/futures-util/src/stream/try_stream/try_filter_map.rs /^impl FusedStream for TryFilterMap$/;" c +TryFilterMap vendor/futures-util/src/stream/try_stream/try_filter_map.rs /^impl Stream for TryFilterMap$/;" c +TryFilterMap vendor/futures-util/src/stream/try_stream/try_filter_map.rs /^impl TryFilterMap {$/;" c +TryFilterMap vendor/futures-util/src/stream/try_stream/try_filter_map.rs /^impl fmt::Debug for TryFilterMap$/;" c +TryFlatten vendor/futures-util/src/future/try_future/try_flatten.rs /^impl Sink for TryFlatten$/;" c +TryFlatten vendor/futures-util/src/future/try_future/try_flatten.rs /^impl TryFlatten {$/;" c +TryFlatten vendor/futures-util/src/future/try_future/try_flatten.rs /^impl FusedFuture for TryFlatten$/;" c +TryFlatten vendor/futures-util/src/future/try_future/try_flatten.rs /^impl FusedStream for TryFlatten$/;" c +TryFlatten vendor/futures-util/src/future/try_future/try_flatten.rs /^impl Future for TryFlatten$/;" c +TryFlatten vendor/futures-util/src/future/try_future/try_flatten.rs /^impl Stream for TryFlatten$/;" c +TryFlatten vendor/futures-util/src/stream/try_stream/try_flatten.rs /^impl Sink for TryFlatten$/;" c +TryFlatten vendor/futures-util/src/stream/try_stream/try_flatten.rs /^impl FusedStream for TryFlatten$/;" c +TryFlatten vendor/futures-util/src/stream/try_stream/try_flatten.rs /^impl Stream for TryFlatten$/;" c +TryFlatten vendor/futures-util/src/stream/try_stream/try_flatten.rs /^impl TryFlatten$/;" c +TryFlattenErr vendor/futures-util/src/future/try_future/try_flatten_err.rs /^impl TryFlattenErr {$/;" c +TryFlattenErr vendor/futures-util/src/future/try_future/try_flatten_err.rs /^impl FusedFuture for TryFlattenErr$/;" c +TryFlattenErr vendor/futures-util/src/future/try_future/try_flatten_err.rs /^impl Future for TryFlattenErr$/;" c +TryFold vendor/futures-util/src/stream/try_stream/try_fold.rs /^impl FusedFuture for TryFold$/;" c +TryFold vendor/futures-util/src/stream/try_stream/try_fold.rs /^impl Future for TryFold$/;" c +TryFold vendor/futures-util/src/stream/try_stream/try_fold.rs /^impl TryFold$/;" c +TryFold vendor/futures-util/src/stream/try_stream/try_fold.rs /^impl fmt::Debug for TryFold$/;" c +TryForEach vendor/futures-util/src/stream/try_stream/try_for_each.rs /^impl Future for TryForEach$/;" c +TryForEach vendor/futures-util/src/stream/try_stream/try_for_each.rs /^impl TryForEach$/;" c +TryForEach vendor/futures-util/src/stream/try_stream/try_for_each.rs /^impl fmt::Debug for TryForEach$/;" c +TryForEachConcurrent vendor/futures-util/src/stream/try_stream/try_for_each_concurrent.rs /^impl FusedFuture for TryForEachConcurrent$/;" c +TryForEachConcurrent vendor/futures-util/src/stream/try_stream/try_for_each_concurrent.rs /^impl Future for TryForEachConcurrent$/;" c +TryForEachConcurrent vendor/futures-util/src/stream/try_stream/try_for_each_concurrent.rs /^impl TryForEachConcurrent$/;" c +TryForEachConcurrent vendor/futures-util/src/stream/try_stream/try_for_each_concurrent.rs /^impl fmt::Debug for TryForEachConcurrent$/;" c +TryFuture vendor/futures-core/src/future.rs /^pub trait TryFuture: Future + private_try_future::Sealed {$/;" i +TryFutureExt vendor/futures-util/src/future/try_future/mod.rs /^pub trait TryFutureExt: TryFuture {$/;" i +TryJoinAll vendor/futures-util/src/future/try_join_all.rs /^impl FromIterator for TryJoinAll$/;" c +TryJoinAll vendor/futures-util/src/future/try_join_all.rs /^impl Future for TryJoinAll$/;" c +TryJoinAll vendor/futures-util/src/future/try_join_all.rs /^impl fmt::Debug for TryJoinAll$/;" c +TryJoinAll vendor/futures-util/src/future/try_join_all.rs /^pub struct TryJoinAll$/;" s +TryJoinAllKind vendor/futures-util/src/future/try_join_all.rs /^enum TryJoinAllKind$/;" g +TryLock vendor/futures-channel/src/lock.rs /^impl Deref for TryLock<'_, T> {$/;" c +TryLock vendor/futures-channel/src/lock.rs /^impl DerefMut for TryLock<'_, T> {$/;" c +TryLock vendor/futures-channel/src/lock.rs /^impl Drop for TryLock<'_, T> {$/;" c +TryLock vendor/futures-channel/src/lock.rs /^pub(crate) struct TryLock<'a, T> {$/;" s +TryMaybeDone vendor/futures-util/src/future/try_maybe_done.rs /^impl Unpin for TryMaybeDone {}$/;" c +TryMaybeDone vendor/futures-util/src/future/try_maybe_done.rs /^impl FusedFuture for TryMaybeDone {$/;" c +TryMaybeDone vendor/futures-util/src/future/try_maybe_done.rs /^impl Future for TryMaybeDone {$/;" c +TryMaybeDone vendor/futures-util/src/future/try_maybe_done.rs /^impl TryMaybeDone {$/;" c +TryMaybeDone vendor/futures-util/src/future/try_maybe_done.rs /^pub enum TryMaybeDone {$/;" g +TryNext vendor/futures-util/src/stream/try_stream/try_next.rs /^impl<'a, St: ?Sized + TryStream + Unpin> TryNext<'a, St> {$/;" c +TryNext vendor/futures-util/src/stream/try_stream/try_next.rs /^impl FusedFuture for TryNext<'_, St> {$/;" c +TryNext vendor/futures-util/src/stream/try_stream/try_next.rs /^impl Future for TryNext<'_, St> {$/;" c +TryNext vendor/futures-util/src/stream/try_stream/try_next.rs /^impl Unpin for TryNext<'_, St> {}$/;" c +TryNext vendor/futures-util/src/stream/try_stream/try_next.rs /^pub struct TryNext<'a, St: ?Sized> {$/;" s +TryRecvError vendor/futures-channel/src/mpsc/mod.rs /^impl fmt::Debug for TryRecvError {$/;" c +TryRecvError vendor/futures-channel/src/mpsc/mod.rs /^impl fmt::Display for TryRecvError {$/;" c +TryRecvError vendor/futures-channel/src/mpsc/mod.rs /^impl std::error::Error for TryRecvError {}$/;" c +TryRecvError vendor/futures-channel/src/mpsc/mod.rs /^pub struct TryRecvError {$/;" s +TrySelect vendor/futures-util/src/future/try_select.rs /^impl Future for TrySelect$/;" c +TrySelect vendor/futures-util/src/future/try_select.rs /^impl Unpin for TrySelect {}$/;" c +TrySelect vendor/futures-util/src/future/try_select.rs /^pub struct TrySelect {$/;" s +TrySendError vendor/futures-channel/src/mpsc/mod.rs /^impl std::error::Error for TrySendError {}$/;" c +TrySendError vendor/futures-channel/src/mpsc/mod.rs /^impl TrySendError {$/;" c +TrySendError vendor/futures-channel/src/mpsc/mod.rs /^impl fmt::Debug for TrySendError {$/;" c +TrySendError vendor/futures-channel/src/mpsc/mod.rs /^impl fmt::Display for TrySendError {$/;" c +TrySendError vendor/futures-channel/src/mpsc/mod.rs /^pub struct TrySendError {$/;" s +TrySkipWhile vendor/futures-util/src/stream/try_stream/try_skip_while.rs /^impl Sink for TrySkipWhile$/;" c +TrySkipWhile vendor/futures-util/src/stream/try_stream/try_skip_while.rs /^impl FusedStream for TrySkipWhile$/;" c +TrySkipWhile vendor/futures-util/src/stream/try_stream/try_skip_while.rs /^impl Stream for TrySkipWhile$/;" c +TrySkipWhile vendor/futures-util/src/stream/try_stream/try_skip_while.rs /^impl TrySkipWhile$/;" c +TrySkipWhile vendor/futures-util/src/stream/try_stream/try_skip_while.rs /^impl fmt::Debug for TrySkipWhile$/;" c +TryStream vendor/futures-core/src/stream.rs /^pub trait TryStream: Stream + private_try_stream::Sealed {$/;" i +TryStreamExt vendor/futures-util/src/stream/try_stream/mod.rs /^pub trait TryStreamExt: TryStream {$/;" i +TrySubmitThreadpoolCallback vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn TrySubmitThreadpoolCallback($/;" f +TryTakeWhile vendor/futures-util/src/stream/try_stream/try_take_while.rs /^impl Sink for TryTakeWhile$/;" c +TryTakeWhile vendor/futures-util/src/stream/try_stream/try_take_while.rs /^impl FusedStream for TryTakeWhile$/;" c +TryTakeWhile vendor/futures-util/src/stream/try_stream/try_take_while.rs /^impl Stream for TryTakeWhile$/;" c +TryTakeWhile vendor/futures-util/src/stream/try_stream/try_take_while.rs /^impl TryTakeWhile$/;" c +TryTakeWhile vendor/futures-util/src/stream/try_stream/try_take_while.rs /^impl fmt::Debug for TryTakeWhile$/;" c +TryUnfold vendor/futures-util/src/stream/try_stream/try_unfold.rs /^impl Stream for TryUnfold$/;" c +TryUnfold vendor/futures-util/src/stream/try_stream/try_unfold.rs /^impl fmt::Debug for TryUnfold$/;" c +Tup vendor/memoffset/src/offset_of.rs /^ struct Tup(i32, i32);$/;" s function:tests::tuple_struct +Tuple vendor/async-trait/tests/test.rs /^ impl Trait for Tuple {$/;" c module:issue53 +Tuple vendor/async-trait/tests/test.rs /^ impl Trait for Tuple {$/;" c module:issue87 +Tuple vendor/async-trait/tests/test.rs /^ pub enum Tuple {$/;" g module:issue87 +Tuple vendor/async-trait/tests/test.rs /^ pub struct Tuple(u8);$/;" s module:issue53 +Tuple vendor/thiserror/tests/test_display.rs /^ Tuple(usize),$/;" e enum:test_enum::Error +Tuple vendor/thiserror/tests/test_display.rs /^ Tuple(usize, usize),$/;" e enum:test_ints::Error +Tuple vendor/thiserror/tests/test_error.rs /^ Tuple(#[source] io::Error),$/;" e enum:EnumError +TupleError vendor/thiserror/tests/test_error.rs /^struct TupleError(String, usize);$/;" s +Turbofish vendor/syn/src/generics.rs /^ impl<'a> ToTokens for Turbofish<'a> {$/;" c module:printing +Turbofish vendor/syn/src/generics.rs /^pub struct Turbofish<'a>(&'a Generics);$/;" s +TwoWay vendor/memchr/src/memmem/mod.rs /^ TwoWay(twoway::Forward),$/;" e enum:SearcherKind +TwoWay vendor/memchr/src/memmem/mod.rs /^ TwoWay(twoway::Reverse),$/;" e enum:SearcherRevKind +TwoWay vendor/memchr/src/memmem/twoway.rs /^impl TwoWay {$/;" c +TwoWay vendor/memchr/src/memmem/twoway.rs /^struct TwoWay {$/;" s +Type builtins_rust/bind/src/lib.rs /^ pub Type: c_char,$/;" m struct:_keymap_entry +Type vendor/nix/src/dir.rs /^pub enum Type {$/;" g +Type vendor/syn/src/gen/clone.rs /^impl Clone for Type {$/;" c +Type vendor/syn/src/gen/debug.rs /^impl Debug for Type {$/;" c +Type vendor/syn/src/gen/eq.rs /^impl Eq for Type {}$/;" c +Type vendor/syn/src/gen/eq.rs /^impl PartialEq for Type {$/;" c +Type vendor/syn/src/gen/hash.rs /^impl Hash for Type {$/;" c +Type vendor/syn/src/ty.rs /^ impl Parse for Type {$/;" c module:parsing +Type vendor/syn/src/ty.rs /^ impl Type {$/;" c module:parsing +TypeArray vendor/syn/src/gen/clone.rs /^impl Clone for TypeArray {$/;" c +TypeArray vendor/syn/src/gen/debug.rs /^impl Debug for TypeArray {$/;" c +TypeArray vendor/syn/src/gen/eq.rs /^impl Eq for TypeArray {}$/;" c +TypeArray vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeArray {$/;" c +TypeArray vendor/syn/src/gen/hash.rs /^impl Hash for TypeArray {$/;" c +TypeArray vendor/syn/src/ty.rs /^ impl Parse for TypeArray {$/;" c module:parsing +TypeArray vendor/syn/src/ty.rs /^ impl ToTokens for TypeArray {$/;" c module:printing +TypeBareFn vendor/syn/src/gen/clone.rs /^impl Clone for TypeBareFn {$/;" c +TypeBareFn vendor/syn/src/gen/debug.rs /^impl Debug for TypeBareFn {$/;" c +TypeBareFn vendor/syn/src/gen/eq.rs /^impl Eq for TypeBareFn {}$/;" c +TypeBareFn vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeBareFn {$/;" c +TypeBareFn vendor/syn/src/gen/hash.rs /^impl Hash for TypeBareFn {$/;" c +TypeBareFn vendor/syn/src/ty.rs /^ impl Parse for TypeBareFn {$/;" c module:parsing +TypeBareFn vendor/syn/src/ty.rs /^ impl ToTokens for TypeBareFn {$/;" c module:printing +TypeCmd builtins_rust/exec_cmd/src/lib.rs /^ TypeCmd,$/;" e enum:CMDType +TypeComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for TypeComand {$/;" c +TypeComand builtins_rust/exec_cmd/src/lib.rs /^struct TypeComand;$/;" s +TypeGenerics vendor/syn/src/generics.rs /^ impl<'a> ToTokens for TypeGenerics<'a> {$/;" c module:printing +TypeGenerics vendor/syn/src/generics.rs /^impl<'a> TypeGenerics<'a> {$/;" c +TypeGenerics vendor/syn/src/generics.rs /^pub struct TypeGenerics<'a>(&'a Generics);$/;" s +TypeGroup vendor/syn/src/gen/clone.rs /^impl Clone for TypeGroup {$/;" c +TypeGroup vendor/syn/src/gen/debug.rs /^impl Debug for TypeGroup {$/;" c +TypeGroup vendor/syn/src/gen/eq.rs /^impl Eq for TypeGroup {}$/;" c +TypeGroup vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeGroup {$/;" c +TypeGroup vendor/syn/src/gen/hash.rs /^impl Hash for TypeGroup {$/;" c +TypeGroup vendor/syn/src/ty.rs /^ impl Parse for TypeGroup {$/;" c module:parsing +TypeGroup vendor/syn/src/ty.rs /^ impl ToTokens for TypeGroup {$/;" c module:printing +TypeImplTrait vendor/syn/src/gen/clone.rs /^impl Clone for TypeImplTrait {$/;" c +TypeImplTrait vendor/syn/src/gen/debug.rs /^impl Debug for TypeImplTrait {$/;" c +TypeImplTrait vendor/syn/src/gen/eq.rs /^impl Eq for TypeImplTrait {}$/;" c +TypeImplTrait vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeImplTrait {$/;" c +TypeImplTrait vendor/syn/src/gen/hash.rs /^impl Hash for TypeImplTrait {$/;" c +TypeImplTrait vendor/syn/src/ty.rs /^ impl Parse for TypeImplTrait {$/;" c module:parsing +TypeImplTrait vendor/syn/src/ty.rs /^ impl ToTokens for TypeImplTrait {$/;" c module:printing +TypeImplTrait vendor/syn/src/ty.rs /^ impl TypeImplTrait {$/;" c module:parsing +TypeInfer vendor/syn/src/gen/clone.rs /^impl Clone for TypeInfer {$/;" c +TypeInfer vendor/syn/src/gen/debug.rs /^impl Debug for TypeInfer {$/;" c +TypeInfer vendor/syn/src/gen/eq.rs /^impl Eq for TypeInfer {}$/;" c +TypeInfer vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeInfer {$/;" c +TypeInfer vendor/syn/src/gen/hash.rs /^impl Hash for TypeInfer {$/;" c +TypeInfer vendor/syn/src/ty.rs /^ impl Parse for TypeInfer {$/;" c module:parsing +TypeInfer vendor/syn/src/ty.rs /^ impl ToTokens for TypeInfer {$/;" c module:printing +TypeMacro vendor/syn/src/gen/clone.rs /^impl Clone for TypeMacro {$/;" c +TypeMacro vendor/syn/src/gen/debug.rs /^impl Debug for TypeMacro {$/;" c +TypeMacro vendor/syn/src/gen/eq.rs /^impl Eq for TypeMacro {}$/;" c +TypeMacro vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeMacro {$/;" c +TypeMacro vendor/syn/src/gen/hash.rs /^impl Hash for TypeMacro {$/;" c +TypeMacro vendor/syn/src/ty.rs /^ impl Parse for TypeMacro {$/;" c module:parsing +TypeMacro vendor/syn/src/ty.rs /^ impl ToTokens for TypeMacro {$/;" c module:printing +TypeMap vendor/type-map/src/lib.rs /^ impl TypeMap {$/;" c module:concurrent +TypeMap vendor/type-map/src/lib.rs /^ pub struct TypeMap {$/;" s module:concurrent +TypeMap vendor/type-map/src/lib.rs /^impl TypeMap {$/;" c +TypeMap vendor/type-map/src/lib.rs /^pub struct TypeMap {$/;" s +TypeNever vendor/syn/src/gen/clone.rs /^impl Clone for TypeNever {$/;" c +TypeNever vendor/syn/src/gen/debug.rs /^impl Debug for TypeNever {$/;" c +TypeNever vendor/syn/src/gen/eq.rs /^impl Eq for TypeNever {}$/;" c +TypeNever vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeNever {$/;" c +TypeNever vendor/syn/src/gen/hash.rs /^impl Hash for TypeNever {$/;" c +TypeNever vendor/syn/src/ty.rs /^ impl Parse for TypeNever {$/;" c module:parsing +TypeNever vendor/syn/src/ty.rs /^ impl ToTokens for TypeNever {$/;" c module:printing +TypeParam vendor/syn/src/gen/clone.rs /^impl Clone for TypeParam {$/;" c +TypeParam vendor/syn/src/gen/debug.rs /^impl Debug for TypeParam {$/;" c +TypeParam vendor/syn/src/gen/eq.rs /^impl Eq for TypeParam {}$/;" c +TypeParam vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeParam {$/;" c +TypeParam vendor/syn/src/gen/hash.rs /^impl Hash for TypeParam {$/;" c +TypeParam vendor/syn/src/generics.rs /^ impl Parse for TypeParam {$/;" c module:parsing +TypeParam vendor/syn/src/generics.rs /^ impl ToTokens for TypeParam {$/;" c module:printing +TypeParam vendor/syn/src/generics.rs /^impl From for TypeParam {$/;" c +TypeParamBound vendor/syn/src/gen/clone.rs /^impl Clone for TypeParamBound {$/;" c +TypeParamBound vendor/syn/src/gen/debug.rs /^impl Debug for TypeParamBound {$/;" c +TypeParamBound vendor/syn/src/gen/eq.rs /^impl Eq for TypeParamBound {}$/;" c +TypeParamBound vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeParamBound {$/;" c +TypeParamBound vendor/syn/src/gen/hash.rs /^impl Hash for TypeParamBound {$/;" c +TypeParamBound vendor/syn/src/generics.rs /^ impl Parse for TypeParamBound {$/;" c module:parsing +TypeParams vendor/syn/src/generics.rs /^impl<'a> Iterator for TypeParams<'a> {$/;" c +TypeParams vendor/syn/src/generics.rs /^pub struct TypeParams<'a>(Iter<'a, GenericParam>);$/;" s +TypeParamsMut vendor/syn/src/generics.rs /^impl<'a> Iterator for TypeParamsMut<'a> {$/;" c +TypeParamsMut vendor/syn/src/generics.rs /^pub struct TypeParamsMut<'a>(IterMut<'a, GenericParam>);$/;" s +TypeParen vendor/syn/src/gen/clone.rs /^impl Clone for TypeParen {$/;" c +TypeParen vendor/syn/src/gen/debug.rs /^impl Debug for TypeParen {$/;" c +TypeParen vendor/syn/src/gen/eq.rs /^impl Eq for TypeParen {}$/;" c +TypeParen vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeParen {$/;" c +TypeParen vendor/syn/src/gen/hash.rs /^impl Hash for TypeParen {$/;" c +TypeParen vendor/syn/src/ty.rs /^ impl Parse for TypeParen {$/;" c module:parsing +TypeParen vendor/syn/src/ty.rs /^ impl ToTokens for TypeParen {$/;" c module:printing +TypeParen vendor/syn/src/ty.rs /^ impl TypeParen {$/;" c module:parsing +TypePath vendor/syn/src/gen/clone.rs /^impl Clone for TypePath {$/;" c +TypePath vendor/syn/src/gen/debug.rs /^impl Debug for TypePath {$/;" c +TypePath vendor/syn/src/gen/eq.rs /^impl Eq for TypePath {}$/;" c +TypePath vendor/syn/src/gen/eq.rs /^impl PartialEq for TypePath {$/;" c +TypePath vendor/syn/src/gen/hash.rs /^impl Hash for TypePath {$/;" c +TypePath vendor/syn/src/ty.rs /^ impl Parse for TypePath {$/;" c module:parsing +TypePath vendor/syn/src/ty.rs /^ impl ToTokens for TypePath {$/;" c module:printing +TypePtr vendor/syn/src/gen/clone.rs /^impl Clone for TypePtr {$/;" c +TypePtr vendor/syn/src/gen/debug.rs /^impl Debug for TypePtr {$/;" c +TypePtr vendor/syn/src/gen/eq.rs /^impl Eq for TypePtr {}$/;" c +TypePtr vendor/syn/src/gen/eq.rs /^impl PartialEq for TypePtr {$/;" c +TypePtr vendor/syn/src/gen/hash.rs /^impl Hash for TypePtr {$/;" c +TypePtr vendor/syn/src/ty.rs /^ impl Parse for TypePtr {$/;" c module:parsing +TypePtr vendor/syn/src/ty.rs /^ impl ToTokens for TypePtr {$/;" c module:printing +TypeReference vendor/syn/src/gen/clone.rs /^impl Clone for TypeReference {$/;" c +TypeReference vendor/syn/src/gen/debug.rs /^impl Debug for TypeReference {$/;" c +TypeReference vendor/syn/src/gen/eq.rs /^impl Eq for TypeReference {}$/;" c +TypeReference vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeReference {$/;" c +TypeReference vendor/syn/src/gen/hash.rs /^impl Hash for TypeReference {$/;" c +TypeReference vendor/syn/src/ty.rs /^ impl Parse for TypeReference {$/;" c module:parsing +TypeReference vendor/syn/src/ty.rs /^ impl ToTokens for TypeReference {$/;" c module:printing +TypeSlice vendor/syn/src/gen/clone.rs /^impl Clone for TypeSlice {$/;" c +TypeSlice vendor/syn/src/gen/debug.rs /^impl Debug for TypeSlice {$/;" c +TypeSlice vendor/syn/src/gen/eq.rs /^impl Eq for TypeSlice {}$/;" c +TypeSlice vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeSlice {$/;" c +TypeSlice vendor/syn/src/gen/hash.rs /^impl Hash for TypeSlice {$/;" c +TypeSlice vendor/syn/src/ty.rs /^ impl Parse for TypeSlice {$/;" c module:parsing +TypeSlice vendor/syn/src/ty.rs /^ impl ToTokens for TypeSlice {$/;" c module:printing +TypeTraitObject vendor/syn/src/gen/clone.rs /^impl Clone for TypeTraitObject {$/;" c +TypeTraitObject vendor/syn/src/gen/debug.rs /^impl Debug for TypeTraitObject {$/;" c +TypeTraitObject vendor/syn/src/gen/eq.rs /^impl Eq for TypeTraitObject {}$/;" c +TypeTraitObject vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeTraitObject {$/;" c +TypeTraitObject vendor/syn/src/gen/hash.rs /^impl Hash for TypeTraitObject {$/;" c +TypeTraitObject vendor/syn/src/ty.rs /^ impl Parse for TypeTraitObject {$/;" c module:parsing +TypeTraitObject vendor/syn/src/ty.rs /^ impl ToTokens for TypeTraitObject {$/;" c module:printing +TypeTraitObject vendor/syn/src/ty.rs /^ impl TypeTraitObject {$/;" c module:parsing +TypeTuple vendor/syn/src/gen/clone.rs /^impl Clone for TypeTuple {$/;" c +TypeTuple vendor/syn/src/gen/debug.rs /^impl Debug for TypeTuple {$/;" c +TypeTuple vendor/syn/src/gen/eq.rs /^impl Eq for TypeTuple {}$/;" c +TypeTuple vendor/syn/src/gen/eq.rs /^impl PartialEq for TypeTuple {$/;" c +TypeTuple vendor/syn/src/gen/hash.rs /^impl Hash for TypeTuple {$/;" c +TypeTuple vendor/syn/src/ty.rs /^ impl Parse for TypeTuple {$/;" c module:parsing +TypeTuple vendor/syn/src/ty.rs /^ impl ToTokens for TypeTuple {$/;" c module:printing +TypesAndConsts vendor/syn/tests/test_round_trip.rs /^ TypesAndConsts,$/;" e enum:normalize::NormalizeVisitor::visit_angle_bracketed_parameter_data::Group +TypesAndConsts vendor/syn/tests/test_round_trip.rs /^ TypesAndConsts,$/;" e enum:normalize::NormalizeVisitor::visit_generics::Group +TzSpecificLocalTimeToSystemTime vendor/winapi/src/um/timezoneapi.rs /^ pub fn TzSpecificLocalTimeToSystemTime($/;" f +TzSpecificLocalTimeToSystemTimeEx vendor/winapi/src/um/timezoneapi.rs /^ pub fn TzSpecificLocalTimeToSystemTimeEx($/;" f +U64Visitor vendor/async-trait/tests/test.rs /^ impl Visit for U64Visitor {$/;" c module:issue45 +U64Visitor vendor/async-trait/tests/test.rs /^ struct U64Visitor(Option<(&'static str, u64)>);$/;" s module:issue45 +UCHAR vendor/winapi/src/shared/minwindef.rs /^pub type UCHAR = c_uchar;$/;" t +UCHAR vendor/winapi/src/shared/ntdef.rs /^pub type UCHAR = c_uchar;$/;" t +UCHAR vendor/winapi/src/shared/wtypesbase.rs /^pub type UCHAR = c_uchar;$/;" t +UCHAR_MAX lib/sh/casemod.c /^# define UCHAR_MAX /;" d file: +UCSCHAR vendor/winapi/src/shared/ntdef.rs /^pub type UCSCHAR = c_ulong;$/;" t +UCSCHAR vendor/winapi/src/um/winnt.rs /^pub type UCSCHAR = c_ulong;$/;" t +UContext vendor/nix/src/ucontext.rs /^impl UContext {$/;" c +UContext vendor/nix/src/ucontext.rs /^pub struct UContext {$/;" s +UDWORD vendor/winapi/src/um/sqltypes.rs /^pub type UDWORD = c_ulong;$/;" t +UFLAG builtins_rust/bind/src/lib.rs /^macro_rules! UFLAG {$/;" M +UFLAG builtins_rust/shopt/src/lib.rs /^static UFLAG: i32 = 0x02;$/;" v +UHALF_PTR vendor/winapi/src/shared/basetsd.rs /^pub type UHALF_PTR = c_uint;$/;" t +UHALF_PTR vendor/winapi/src/shared/basetsd.rs /^pub type UHALF_PTR = c_ushort;$/;" t +UI tests (`ui`, `compiletest.rs`) vendor/pin-project-lite/tests/README.md /^## UI tests (`ui`, `compiletest.rs`)$/;" s chapter:Tests +UINT vendor/winapi/src/shared/minwindef.rs /^pub type UINT = c_uint;$/;" t +UINT16 vendor/winapi/src/shared/basetsd.rs /^pub type UINT16 = c_ushort;$/;" t +UINT32 vendor/winapi/src/shared/basetsd.rs /^pub type UINT32 = c_uint;$/;" t +UINT64 vendor/winapi/src/shared/basetsd.rs /^pub type UINT64 = __uint64;$/;" t +UINT8 vendor/winapi/src/shared/basetsd.rs /^pub type UINT8 = c_uchar;$/;" t +UINT_MAX include/typemax.h /^# define UINT_MAX /;" d +UINT_MAX lib/intl/gmo.h /^# define UINT_MAX /;" d +UINT_MAX_32_BITS lib/intl/gmo.h /^# define UINT_MAX_32_BITS /;" d +UINT_PTR vendor/winapi/src/shared/basetsd.rs /^pub type UINT_PTR = usize;$/;" t +ULCMD builtins_rust/ulimit/src/lib.rs /^type ULCMD = _cmd;$/;" t +ULISet32 vendor/winapi/src/um/combaseapi.rs /^pub fn ULISet32(li: &mut ULARGE_INTEGER, v: DWORD) {$/;" f +ULLONG_MAX include/typemax.h /^# define ULLONG_MAX /;" d +ULLONG_MAX include/typemax.h /^# define ULLONG_MAX /;" d +ULONG vendor/winapi/src/shared/minwindef.rs /^pub type ULONG = c_ulong;$/;" t +ULONG vendor/winapi/src/shared/ntdef.rs /^pub type ULONG = c_ulong;$/;" t +ULONG vendor/winapi/src/shared/wtypesbase.rs /^pub type ULONG = DWORD;$/;" t +ULONG32 vendor/winapi/src/shared/basetsd.rs /^pub type ULONG32 = c_uint;$/;" t +ULONG64 vendor/winapi/src/shared/basetsd.rs /^pub type ULONG64 = __uint64;$/;" t +ULONGLONG vendor/winapi/src/shared/ntdef.rs /^pub type ULONGLONG = __uint64;$/;" t +ULONGLONG vendor/winapi/src/um/winnt.rs /^pub type ULONGLONG = __uint64;$/;" t +ULONG_MAX include/typemax.h /^# define ULONG_MAX /;" d +ULONG_PTR vendor/winapi/src/shared/basetsd.rs /^pub type ULONG_PTR = usize;$/;" t +UMS_THREAD_INFO_CLASS vendor/winapi/src/um/winbase.rs /^pub type UMS_THREAD_INFO_CLASS = RTL_UMS_THREAD_INFO_CLASS;$/;" t +UNBLOCK_CHILD builtins_rust/fg_bg/src/lib.rs /^macro_rules! UNBLOCK_CHILD {$/;" M +UNBLOCK_CHILD builtins_rust/jobs/src/lib.rs /^macro_rules! UNBLOCK_CHILD {$/;" M +UNBLOCK_CHILD r_jobs/src/lib.rs /^pub unsafe extern "C" fn UNBLOCK_CHILD(over:*const sigset_t)$/;" f +UNBLOCK_CHILD sig.h /^# define UNBLOCK_CHILD(/;" d +UNBLOCK_SIGNAL builtins_rust/fg_bg/src/lib.rs /^macro_rules! UNBLOCK_SIGNAL {$/;" M +UNBLOCK_SIGNAL builtins_rust/jobs/src/lib.rs /^macro_rules! UNBLOCK_SIGNAL {$/;" M +UNBLOCK_SIGNAL builtins_rust/wait/src/lib.rs /^macro_rules! UNBLOCK_SIGNAL {$/;" M +UNBLOCK_SIGNAL sig.h /^#define UNBLOCK_SIGNAL(/;" d +UNCTRL include/chartypes.h /^# define UNCTRL(/;" d +UNCTRL lib/readline/chardefs.h /^#define UNCTRL(/;" d +UNDO_BEGIN lib/readline/readline.h /^enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };$/;" e enum:undo_code +UNDO_DELETE lib/readline/readline.h /^enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };$/;" e enum:undo_code +UNDO_END lib/readline/readline.h /^enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };$/;" e enum:undo_code +UNDO_INSERT lib/readline/readline.h /^enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };$/;" e enum:undo_code +UNDO_LIST lib/readline/readline.h /^} UNDO_LIST;$/;" t typeref:struct:undo_list +UNDO_LIST r_readline/src/lib.rs /^pub type UNDO_LIST = undo_list;$/;" t +UNICODE_COMBINING_CHAR lib/readline/rlmbutil.h /^#define UNICODE_COMBINING_CHAR(/;" d +UNICODE_STRING32 vendor/winapi/src/shared/ntdef.rs /^pub type UNICODE_STRING32 = STRING32;$/;" t +UNICODE_STRING64 vendor/winapi/src/shared/ntdef.rs /^pub type UNICODE_STRING64 = STRING64;$/;" t +UNLICENSE vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +UNMETA lib/readline/chardefs.h /^#define UNMETA(/;" d +UNQUEUE_SIGCHLD jobs.c /^#define UNQUEUE_SIGCHLD(/;" d file: +UNQUEUE_SIGCHLD r_jobs/src/lib.rs /^pub unsafe extern "C" fn UNQUEUE_SIGCHLD(os: c_int) {$/;" f +UNQUOTED subst.c /^#define UNQUOTED /;" d file: +UNSETENV_RETTYPE lib/sh/getenv.c /^#define UNSETENV_RETTYPE /;" d file: +UNSETENV_RETURN lib/sh/getenv.c /^#define UNSETENV_RETURN(/;" d file: +UNSETOPT builtins_rust/shopt/src/lib.rs /^static UNSETOPT: i32 = 0;$/;" v +UNSET_LASTREF array.c /^#define UNSET_LASTREF(/;" d file: +UNSIGNED lib/sh/strtol.c /^# define UNSIGNED /;" d file: +UNSIGNED lib/sh/strtoul.c /^#define UNSIGNED /;" d file: +UNSIGNED lib/sh/strtoull.c /^#define UNSIGNED /;" d file: +UNSIGNED_LONG lib/sh/fmtullong.c /^#define UNSIGNED_LONG /;" d file: +UNSIGNED_LONG lib/sh/fmtulong.c /^# define UNSIGNED_LONG /;" d file: +UNSIGNED_LONG lib/sh/fmtumax.c /^#define UNSIGNED_LONG /;" d file: +UNWIND_ELT unwind_prot.c /^} UNWIND_ELT;$/;" t typeref:union:uwp file: +UOW vendor/winapi/src/shared/ktmtypes.rs /^pub type UOW = GUID;$/;" t +UP lib/termcap/tparam.c /^__private_extern__ char *UP;$/;" v typeref:typename:__private_extern__ char * +UP r_readline/src/lib.rs /^ pub static mut UP: *mut ::std::os::raw::c_char;$/;" v +UPDATE_MAIL_FILE mailcheck.c /^#define UPDATE_MAIL_FILE(/;" d file: +UPPER support/xcase.c /^#define UPPER /;" d file: +UP_BYTE_BLOB vendor/winapi/src/shared/wtypesbase.rs /^pub type UP_BYTE_BLOB = *mut BYTE_BLOB;$/;" t +UP_DWORD_BLOB vendor/winapi/src/shared/wtypesbase.rs /^pub type UP_DWORD_BLOB = *mut DWORD_BLOB;$/;" t +UP_FLAGGED_BYTE_BLOB vendor/winapi/src/shared/wtypesbase.rs /^pub type UP_FLAGGED_BYTE_BLOB = *mut FLAGGED_BYTE_BLOB;$/;" t +UP_FLAGGED_WORD_BLOB vendor/winapi/src/shared/wtypesbase.rs /^pub type UP_FLAGGED_WORD_BLOB = *mut FLAGGED_WORD_BLOB;$/;" t +UP_WORD_BLOB vendor/winapi/src/shared/wtypesbase.rs /^pub type UP_WORD_BLOB = *mut WORD_BLOB;$/;" t +UQUAD vendor/winapi/src/shared/ntdef.rs /^pub type UQUAD = QUAD;$/;" t +URL_COMPONENTSW vendor/winapi/src/um/winhttp.rs /^pub type URL_COMPONENTSW = URL_COMPONENTS;$/;" t +USAGE vendor/winapi/src/shared/hidusage.rs /^pub type USAGE = USHORT;$/;" t +USBD_CONFIGURATION_HANDLE vendor/winapi/src/shared/usb.rs /^pub type USBD_CONFIGURATION_HANDLE = PVOID;$/;" t +USBD_INTERFACE_HANDLE vendor/winapi/src/shared/usb.rs /^pub type USBD_INTERFACE_HANDLE = PVOID;$/;" t +USBD_PENDING vendor/winapi/src/shared/usb.rs /^pub fn USBD_PENDING(Status: ULONG) -> bool {$/;" f +USBD_PIPE_DIRECTION_IN vendor/winapi/src/shared/usb.rs /^pub fn USBD_PIPE_DIRECTION_IN(pipeInformation: &USBD_PIPE_INFORMATION) -> UCHAR {$/;" f +USBD_PIPE_HANDLE vendor/winapi/src/shared/usb.rs /^pub type USBD_PIPE_HANDLE = PVOID;$/;" t +USBD_STATUS vendor/winapi/src/shared/usb.rs /^pub type USBD_STATUS = LONG;$/;" t +USBD_SUCCESS vendor/winapi/src/shared/usb.rs /^pub fn USBD_SUCCESS(Status: USBD_STATUS) -> bool {$/;" f +USBD_TRANSFER_DIRECTION_FLAG vendor/winapi/src/shared/usb.rs /^pub fn USBD_TRANSFER_DIRECTION_FLAG(flags: ULONG) -> ULONG {$/;" f +USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE vendor/winapi/src/shared/usbspec.rs /^pub fn USB_30_ENDPOINT_TYPE_INTERRUPT_USAGE(bmAttr: UCHAR) -> UCHAR {$/;" f +USB_CTL vendor/winapi/src/shared/usbiodef.rs /^pub fn USB_CTL(id: ULONG) -> ULONG {$/;" f +USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX vendor/winapi/src/shared/usbspec.rs /^pub fn USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d: UCHAR, i: UCHAR) -> USHORT {$/;" f +USB_ENDPOINT_DIRECTION_IN vendor/winapi/src/shared/usbspec.rs /^pub fn USB_ENDPOINT_DIRECTION_IN(addr: UCHAR) -> UCHAR {$/;" f +USB_ENDPOINT_DIRECTION_OUT vendor/winapi/src/shared/usbspec.rs /^pub fn USB_ENDPOINT_DIRECTION_OUT(addr: UCHAR) -> UCHAR {$/;" f +USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION vendor/winapi/src/shared/usbspec.rs /^pub fn USB_ENDPOINT_TYPE_ISOCHRONOUS_SYNCHRONIZATION(bmAttr: UCHAR) -> UCHAR {$/;" f +USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE vendor/winapi/src/shared/usbspec.rs /^pub fn USB_ENDPOINT_TYPE_ISOCHRONOUS_USAGE(bmAttr: UCHAR) -> UCHAR {$/;" f +USB_KERNEL_CTL vendor/winapi/src/shared/usbiodef.rs /^pub fn USB_KERNEL_CTL(id: ULONG) -> ULONG {$/;" f +USB_KERNEL_CTL_BUFFERED vendor/winapi/src/shared/usbiodef.rs /^pub fn USB_KERNEL_CTL_BUFFERED(id: ULONG) -> ULONG {$/;" f +USEC_PER_SEC include/posixselect.h /^# define USEC_PER_SEC /;" d +USEC_PER_SEC lib/readline/posixselect.h /^# define USEC_PER_SEC /;" d +USEC_TO_TIMEVAL include/posixselect.h /^#define USEC_TO_TIMEVAL(/;" d +USEC_TO_TIMEVAL lib/readline/posixselect.h /^#define USEC_TO_TIMEVAL(/;" d +USE_EXPORTSTR variables.c /^#define USE_EXPORTSTR /;" d file: +USE_INCLUDED_LIBINTL Makefile.in /^USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@$/;" m +USE_MKDTEMP config-top.h /^#define USE_MKDTEMP$/;" d +USE_MKSTEMP config-top.h /^#define USE_MKSTEMP$/;" d +USE_MKTEMP config-top.h /^#define USE_MKTEMP$/;" d +USE_MMAP lib/malloc/malloc.c /^# define USE_MMAP$/;" d file: +USE_VAR shell.h /^# define USE_VAR(/;" d +USE_VARARGS config-bot.h /^# define USE_VARARGS$/;" d +USE_VARARGS config-bot.h /^# define USE_VARARGS$/;" d +USE_VARARGS lib/readline/rlstdc.h /^# define USE_VARARGS$/;" d +USE_VARARGS lib/readline/rlstdc.h /^# define USE_VARARGS$/;" d +USE_VFPRINTF_EMULATION config-bot.h /^# define USE_VFPRINTF_EMULATION$/;" d +USHORT vendor/winapi/src/shared/minwindef.rs /^pub type USHORT = c_ushort;$/;" t +USHORT vendor/winapi/src/shared/ntdef.rs /^pub type USHORT = c_ushort;$/;" t +USHORT vendor/winapi/src/shared/wtypesbase.rs /^pub type USHORT = c_ushort;$/;" t +USHORT_MAX lib/sh/unicode.c /^# define USHORT_MAX /;" d file: +USING_BASH_MALLOC configure.ac /^ AC_DEFINE(USING_BASH_MALLOC)$/;" d +USN vendor/winapi/src/shared/ntdef.rs /^pub type USN = LONGLONG;$/;" t +USN vendor/winapi/src/um/winnt.rs /^pub type USN = LONGLONG;$/;" t +UTF8_MBCHAR include/shmbutil.h /^#define UTF8_MBCHAR(/;" d +UTF8_MBCHAR lib/readline/rlmbutil.h /^#define UTF8_MBCHAR(/;" d +UTF8_MBFIRSTCHAR include/shmbutil.h /^#define UTF8_MBFIRSTCHAR(/;" d +UTF8_MBFIRSTCHAR lib/readline/rlmbutil.h /^#define UTF8_MBFIRSTCHAR(/;" d +UTF8_SINGLEBYTE include/shmbutil.h /^#define UTF8_SINGLEBYTE(/;" d +UTF8_SINGLEBYTE lib/readline/rlmbutil.h /^#define UTF8_SINGLEBYTE(/;" d +UUID vendor/winapi/src/shared/rpcdce.rs /^pub type UUID = GUID;$/;" t +UWCACHESIZE unwind_prot.c /^#define UWCACHESIZE /;" d file: +UWORD vendor/winapi/src/um/winsmcrd.rs /^pub type UWORD = WORD;$/;" t +U_CHAR lib/glob/smatch.c /^# define U_CHAR /;" d file: +U_CHAR lib/glob/smatch.c /^#define U_CHAR /;" d file: +Udp vendor/nix/src/sys/socket/mod.rs /^ Udp = libc::IPPROTO_UDP,$/;" e enum:SockProtocol +UlimitCmd builtins_rust/exec_cmd/src/lib.rs /^ UlimitCmd,$/;" e enum:CMDType +UlimitComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for UlimitComand {$/;" c +UlimitComand builtins_rust/exec_cmd/src/lib.rs /^struct UlimitComand;$/;" s +UmaskCmd builtins_rust/exec_cmd/src/lib.rs /^ UmaskCmd,$/;" e enum:CMDType +UmaskComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for UmaskComand {$/;" c +UmaskComand builtins_rust/exec_cmd/src/lib.rs /^struct UmaskComand;$/;" s +UmdCallback vendor/libc/src/psp.rs /^pub type UmdCallback = fn(unknown: i32, event: i32) -> i32;$/;" t +UmsThreadYield vendor/winapi/src/um/winbase.rs /^ pub fn UmsThreadYield($/;" f +UnAliasCmd builtins_rust/exec_cmd/src/lib.rs /^ UnAliasCmd,$/;" e enum:CMDType +UnAliasComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for UnAliasComand {$/;" c +UnAliasComand builtins_rust/exec_cmd/src/lib.rs /^struct UnAliasComand;$/;" s +UnDecorateSymbolName vendor/winapi/src/um/dbghelp.rs /^ pub fn UnDecorateSymbolName($/;" f +UnDecorateSymbolNameW vendor/winapi/src/um/dbghelp.rs /^ pub fn UnDecorateSymbolNameW($/;" f +UnOp vendor/syn/src/gen/clone.rs /^impl Clone for UnOp {$/;" c +UnOp vendor/syn/src/gen/clone.rs /^impl Copy for UnOp {}$/;" c +UnOp vendor/syn/src/gen/debug.rs /^impl Debug for UnOp {$/;" c +UnOp vendor/syn/src/gen/eq.rs /^impl Eq for UnOp {}$/;" c +UnOp vendor/syn/src/gen/eq.rs /^impl PartialEq for UnOp {$/;" c +UnOp vendor/syn/src/gen/hash.rs /^impl Hash for UnOp {$/;" c +UnOp vendor/syn/src/op.rs /^ impl Parse for UnOp {$/;" c module:parsing +UnOp vendor/syn/src/op.rs /^ impl ToTokens for UnOp {$/;" c module:printing +UnSetCmd builtins_rust/exec_cmd/src/lib.rs /^ UnSetCmd,$/;" e enum:CMDType +UnSetComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for UnSetComand {$/;" c +UnSetComand builtins_rust/exec_cmd/src/lib.rs /^struct UnSetComand;$/;" s +UnbalancedClosingBrace vendor/fluent-syntax/src/parser/errors.rs /^ UnbalancedClosingBrace,$/;" e enum:ErrorKind +UnboundedInner vendor/futures-channel/src/mpsc/mod.rs /^impl UnboundedInner {$/;" c +UnboundedInner vendor/futures-channel/src/mpsc/mod.rs /^struct UnboundedInner {$/;" s +UnboundedInner vendor/futures-channel/src/mpsc/mod.rs /^unsafe impl Send for UnboundedInner {}$/;" c +UnboundedInner vendor/futures-channel/src/mpsc/mod.rs /^unsafe impl Sync for UnboundedInner {}$/;" c +UnboundedReceiver vendor/futures-channel/src/mpsc/mod.rs /^impl Drop for UnboundedReceiver {$/;" c +UnboundedReceiver vendor/futures-channel/src/mpsc/mod.rs /^impl FusedStream for UnboundedReceiver {$/;" c +UnboundedReceiver vendor/futures-channel/src/mpsc/mod.rs /^impl Stream for UnboundedReceiver {$/;" c +UnboundedReceiver vendor/futures-channel/src/mpsc/mod.rs /^impl UnboundedReceiver {$/;" c +UnboundedReceiver vendor/futures-channel/src/mpsc/mod.rs /^impl Unpin for UnboundedReceiver {}$/;" c +UnboundedReceiver vendor/futures-channel/src/mpsc/mod.rs /^pub struct UnboundedReceiver {$/;" s +UnboundedSender vendor/futures-channel/src/mpsc/mod.rs /^impl AssertKinds for UnboundedSender {}$/;" c +UnboundedSender vendor/futures-channel/src/mpsc/mod.rs /^impl Clone for UnboundedSender {$/;" c +UnboundedSender vendor/futures-channel/src/mpsc/mod.rs /^impl UnboundedSender {$/;" c +UnboundedSender vendor/futures-channel/src/mpsc/mod.rs /^pub struct UnboundedSender(Option>);$/;" s +UnboundedSender vendor/futures-channel/src/mpsc/sink_impl.rs /^impl Sink for &UnboundedSender {$/;" c +UnboundedSender vendor/futures-channel/src/mpsc/sink_impl.rs /^impl Sink for UnboundedSender {$/;" c +UnboundedSenderInner vendor/futures-channel/src/mpsc/mod.rs /^impl Clone for UnboundedSenderInner {$/;" c +UnboundedSenderInner vendor/futures-channel/src/mpsc/mod.rs /^impl Drop for UnboundedSenderInner {$/;" c +UnboundedSenderInner vendor/futures-channel/src/mpsc/mod.rs /^impl UnboundedSenderInner {$/;" c +UnboundedSenderInner vendor/futures-channel/src/mpsc/mod.rs /^impl Unpin for UnboundedSenderInner {}$/;" c +UnboundedSenderInner vendor/futures-channel/src/mpsc/mod.rs /^struct UnboundedSenderInner {$/;" s +Underscore vendor/syn/src/token.rs /^impl Parse for Underscore {$/;" c +Underscore vendor/syn/src/token.rs /^impl ToTokens for Underscore {$/;" c +Underscore vendor/syn/src/token.rs /^impl Token for Underscore {$/;" c +Underscore vendor/syn/src/token.rs /^impl private::Sealed for Underscore {}$/;" c +UnenableRouter vendor/winapi/src/um/iphlpapi.rs /^ pub fn UnenableRouter($/;" f +Unexpected vendor/syn/src/parse.rs /^impl Clone for Unexpected {$/;" c +Unexpected vendor/syn/src/parse.rs /^impl Default for Unexpected {$/;" c +Unexpected vendor/syn/src/parse.rs /^pub(crate) enum Unexpected {$/;" g +Unexpected vendor/thiserror/tests/test_transparent.rs /^ Unexpected { token: &'a str },$/;" e enum:test_non_static::ErrorKind +Unfold vendor/futures-util/src/sink/unfold.rs /^impl Sink for Unfold$/;" c +Unfold vendor/futures-util/src/stream/unfold.rs /^impl FusedStream for Unfold$/;" c +Unfold vendor/futures-util/src/stream/unfold.rs /^impl Stream for Unfold$/;" c +Unfold vendor/futures-util/src/stream/unfold.rs /^impl fmt::Debug for Unfold$/;" c +UnfoldState vendor/futures-util/src/unfold_state.rs /^impl UnfoldState {$/;" c +UnhandledExceptionFilter vendor/winapi/src/um/errhandlingapi.rs /^ pub fn UnhandledExceptionFilter($/;" f +UnhookWinEvent vendor/winapi/src/um/winuser.rs /^ pub fn UnhookWinEvent($/;" f +UnhookWindowsHook vendor/winapi/src/um/winuser.rs /^ pub fn UnhookWindowsHook($/;" f +UnhookWindowsHookEx vendor/winapi/src/um/winuser.rs /^ pub fn UnhookWindowsHookEx($/;" f +Unicode ident vendor/unicode-ident/README.md /^Unicode ident$/;" c +UninitializeFlatSB vendor/winapi/src/um/commctrl.rs /^ pub fn UninitializeFlatSB($/;" f +UninstallApplication vendor/winapi/src/um/appmgmt.rs /^ pub fn UninstallApplication($/;" f +UnionRect vendor/winapi/src/um/winuser.rs /^ pub fn UnionRect($/;" f +Unit vendor/async-trait/tests/test.rs /^ impl Trait for Unit {$/;" c module:issue53 +Unit vendor/async-trait/tests/test.rs /^ impl Trait for Unit {$/;" c module:issue92 +Unit vendor/async-trait/tests/test.rs /^ pub struct Unit;$/;" s module:issue53 +Unit vendor/async-trait/tests/test.rs /^ pub struct Unit;$/;" s module:issue92 +Unit vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ Unit: (),$/;" m struct:__Origin +Unit vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ Unit,$/;" e enum:Enum +Unit vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ Unit,$/;" e enum:EnumProj +Unit vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ Unit,$/;" e enum:EnumProjRef +Unit vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ Unit,$/;" e enum:EnumProjReplace +Unit vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ Unit: (),$/;" m struct:__Origin +Unit vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ Unit,$/;" e enum:Enum +Unit vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ Unit,$/;" e enum:EnumProjReplace +Unit vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ Unit: (),$/;" m struct:__Origin +Unit vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ Unit,$/;" e enum:Enum +Unit vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ Unit,$/;" e enum:EnumProj +Unit vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ Unit,$/;" e enum:EnumProjRef +Unit vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ Unit,$/;" e enum:EnumProjReplace +Unit vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ Unit: (),$/;" m struct:__Origin +Unit vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ Unit,$/;" e enum:Enum +Unit vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ Unit,$/;" e enum:EnumProj +Unit vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^ Unit: (),$/;" m struct:__Origin +Unit vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^ Unit,$/;" e enum:Enum +Unit vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ Unit: (),$/;" m struct:__Origin +Unit vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ Unit,$/;" e enum:Enum +Unit vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ Unit,$/;" e enum:EnumProjRef +Unit vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ Unit: (),$/;" m struct:__Origin +Unit vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ Unit,$/;" e enum:Enum +Unit vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ Unit,$/;" e enum:EnumProj +Unit vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ Unit,$/;" e enum:EnumProjRef +Unit vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ Unit: (),$/;" m struct:__Origin +Unit vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ Unit,$/;" e enum:Enum +Unit vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ Unit,$/;" e enum:EnumProj +Unit vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ Unit,$/;" e enum:EnumProjRef +Unit vendor/thiserror/tests/test_display.rs /^ Unit,$/;" e enum:test_enum::Error +Unit vendor/thiserror/tests/test_error.rs /^ Unit,$/;" e enum:EnumError +UnitError vendor/thiserror/tests/test_error.rs /^struct UnitError;$/;" s +Unix vendor/nix/src/sys/socket/addr.rs /^ Unix = libc::AF_UNIX,$/;" e enum:AddressFamily +Unix vendor/nix/src/sys/socket/addr.rs /^ Unix(UnixAddr),$/;" e enum:SockAddr +UnixAddr vendor/nix/src/sys/socket/addr.rs /^impl AsRef for UnixAddr {$/;" c +UnixAddr vendor/nix/src/sys/socket/addr.rs /^impl Eq for UnixAddr {}$/;" c +UnixAddr vendor/nix/src/sys/socket/addr.rs /^impl Hash for UnixAddr {$/;" c +UnixAddr vendor/nix/src/sys/socket/addr.rs /^impl PartialEq for UnixAddr {$/;" c +UnixAddr vendor/nix/src/sys/socket/addr.rs /^impl SockaddrLike for UnixAddr {$/;" c +UnixAddr vendor/nix/src/sys/socket/addr.rs /^impl UnixAddr {$/;" c +UnixAddr vendor/nix/src/sys/socket/addr.rs /^impl fmt::Display for UnixAddr {$/;" c +UnixAddr vendor/nix/src/sys/socket/addr.rs /^impl private::SockaddrLikePriv for UnixAddr {}$/;" c +UnixAddr vendor/nix/src/sys/socket/addr.rs /^pub struct UnixAddr {$/;" s +UnixAddrKind vendor/nix/src/sys/socket/addr.rs /^enum UnixAddrKind<'a> {$/;" g +UnixAddrKind vendor/nix/src/sys/socket/addr.rs /^impl<'a> UnixAddrKind<'a> {$/;" c +Unknown vendor/unic-langid-impl/src/errors.rs /^ Unknown,$/;" e enum:LanguageIdentifierError +UnknownErrno vendor/nix/src/errno.rs /^ UnknownErrno = 0,$/;" e enum:consts::Errno +UnknownEscapeSequence vendor/fluent-syntax/src/parser/errors.rs /^ UnknownEscapeSequence(String),$/;" e enum:ErrorKind +UnloadKeyboardLayout vendor/winapi/src/um/winuser.rs /^ pub fn UnloadKeyboardLayout($/;" f +UnloadUserProfile vendor/winapi/src/um/userenv.rs /^ pub fn UnloadUserProfile($/;" f +UnlockFile vendor/winapi/src/um/fileapi.rs /^ pub fn UnlockFile($/;" f +UnlockFileEx vendor/winapi/src/um/fileapi.rs /^ pub fn UnlockFileEx($/;" f +UnlockServiceDatabase vendor/winapi/src/um/winsvc.rs /^ pub fn UnlockServiceDatabase($/;" f +UnlockUrlCacheEntryFileA vendor/winapi/src/um/wininet.rs /^ pub fn UnlockUrlCacheEntryFileA($/;" f +UnlockUrlCacheEntryFileW vendor/winapi/src/um/wininet.rs /^ pub fn UnlockUrlCacheEntryFileW($/;" f +UnlockUrlCacheEntryStream vendor/winapi/src/um/wininet.rs /^ pub fn UnlockUrlCacheEntryStream($/;" f +UnmapDebugInformation vendor/winapi/src/um/dbghelp.rs /^ pub fn UnmapDebugInformation($/;" f +UnmapViewOfFile vendor/winapi/src/um/memoryapi.rs /^ pub fn UnmapViewOfFile($/;" f +UnmapViewOfFile2 vendor/winapi/src/um/memoryapi.rs /^ pub fn UnmapViewOfFile2($/;" f +UnmapViewOfFileEx vendor/winapi/src/um/memoryapi.rs /^ pub fn UnmapViewOfFileEx($/;" f +Unnamed vendor/nix/src/sys/socket/addr.rs /^ Unnamed,$/;" e enum:UnixAddrKind +UnpackDDElParam vendor/winapi/src/um/dde.rs /^ pub fn UnpackDDElParam($/;" f +UnparkMutex vendor/futures-executor/src/unpark_mutex.rs /^impl UnparkMutex {$/;" c +UnparkMutex vendor/futures-executor/src/unpark_mutex.rs /^pub(crate) struct UnparkMutex {$/;" s +UnparkMutex vendor/futures-executor/src/unpark_mutex.rs /^unsafe impl Send for UnparkMutex {}$/;" c +UnparkMutex vendor/futures-executor/src/unpark_mutex.rs /^unsafe impl Sync for UnparkMutex {}$/;" c +UnpinFuture vendor/futures/tests/auto_traits.rs /^pub type UnpinFuture = LocalFuture;$/;" t +UnpinSink vendor/futures/tests/auto_traits.rs /^pub type UnpinSink = LocalSink;$/;" t +UnpinStream vendor/futures/tests/auto_traits.rs /^pub type UnpinStream = LocalStream;$/;" t +UnpinTryFuture vendor/futures/tests/auto_traits.rs /^pub type UnpinTryFuture = UnpinFuture>;$/;" t +UnpinTryStream vendor/futures/tests/auto_traits.rs /^pub type UnpinTryStream = UnpinStream>;$/;" t +Unprotect_texi support/texi2html /^sub Unprotect_texi $/;" s +UnrealizeObject vendor/winapi/src/um/wingdi.rs /^ pub fn UnrealizeObject($/;" f +UnregisterApplicationRecoveryCallback vendor/winapi/src/um/winbase.rs /^ pub fn UnregisterApplicationRecoveryCallback() -> HRESULT;$/;" f +UnregisterApplicationRestart vendor/winapi/src/um/winbase.rs /^ pub fn UnregisterApplicationRestart() -> HRESULT;$/;" f +UnregisterBadMemoryNotification vendor/winapi/src/um/memoryapi.rs /^ pub fn UnregisterBadMemoryNotification($/;" f +UnregisterClassA vendor/winapi/src/um/winuser.rs /^ pub fn UnregisterClassA($/;" f +UnregisterClassW vendor/winapi/src/um/winuser.rs /^ pub fn UnregisterClassW($/;" f +UnregisterDeviceNotification vendor/winapi/src/um/winuser.rs /^ pub fn UnregisterDeviceNotification($/;" f +UnregisterGPNotification vendor/winapi/src/um/userenv.rs /^ pub fn UnregisterGPNotification($/;" f +UnregisterHotKey vendor/winapi/src/um/winuser.rs /^ pub fn UnregisterHotKey($/;" f +UnregisterPointerInputTarget vendor/winapi/src/um/winuser.rs /^ pub fn UnregisterPointerInputTarget($/;" f +UnregisterPointerInputTargetEx vendor/winapi/src/um/winuser.rs /^ pub fn UnregisterPointerInputTargetEx($/;" f +UnregisterPowerSettingNotification vendor/winapi/src/um/winuser.rs /^ pub fn UnregisterPowerSettingNotification($/;" f +UnregisterSuspendResumeNotification vendor/winapi/src/um/winuser.rs /^ pub fn UnregisterSuspendResumeNotification($/;" f +UnregisterTouchWindow vendor/winapi/src/um/winuser.rs /^ pub fn UnregisterTouchWindow($/;" f +UnregisterTraceGuids vendor/winapi/src/shared/evntrace.rs /^ pub fn UnregisterTraceGuids($/;" f +UnregisterWait vendor/winapi/src/um/winbase.rs /^ pub fn UnregisterWait($/;" f +UnregisterWaitEx vendor/winapi/src/um/threadpoollegacyapiset.rs /^ pub fn UnregisterWaitEx($/;" f +Unreleased vendor/fluent-fallback/CHANGELOG.md /^## Unreleased$/;" s chapter:Changelog +Unreleased vendor/fluent-resmgr/CHANGELOG.md /^## Unreleased$/;" s chapter:Changelog +Unreleased vendor/once_cell/CHANGELOG.md /^## Unreleased$/;" s chapter:Changelog +Unreleased vendor/tinystr/CHANGELOG.md /^## Unreleased$/;" s chapter:Changelog +UnsafeDropInPlaceGuard vendor/pin-project-lite/src/lib.rs /^ impl Drop for UnsafeDropInPlaceGuard {$/;" c module:__private +UnsafeDropInPlaceGuard vendor/pin-project-lite/src/lib.rs /^ impl UnsafeDropInPlaceGuard {$/;" c module:__private +UnsafeDropInPlaceGuard vendor/pin-project-lite/src/lib.rs /^ pub struct UnsafeDropInPlaceGuard(*mut T);$/;" s module:__private +UnsafeFutureObj vendor/futures-task/src/future_obj.rs /^pub unsafe trait UnsafeFutureObj<'a, T>: 'a {$/;" i +UnsafeOverwriteGuard vendor/pin-project-lite/src/lib.rs /^ impl Drop for UnsafeOverwriteGuard {$/;" c module:__private +UnsafeOverwriteGuard vendor/pin-project-lite/src/lib.rs /^ impl UnsafeOverwriteGuard {$/;" c module:__private +UnsafeOverwriteGuard vendor/pin-project-lite/src/lib.rs /^ pub struct UnsafeOverwriteGuard {$/;" s module:__private +UnsafeSelfCell vendor/self_cell/src/unsafe_self_cell.rs /^impl UnsafeSelfCell {$/;" c +UnsafeSelfCell vendor/self_cell/src/unsafe_self_cell.rs /^pub struct UnsafeSelfCell {$/;" s +UnsafeSelfCell vendor/self_cell/src/unsafe_self_cell.rs /^unsafe impl Send$/;" c +UnsafeSelfCell vendor/self_cell/src/unsafe_self_cell.rs /^unsafe impl Sync$/;" c +UnsafeSyncEntry vendor/syn/src/buffer.rs /^ struct UnsafeSyncEntry(Entry);$/;" s method:Cursor::empty +UnsafeSyncEntry vendor/syn/src/buffer.rs /^ unsafe impl Sync for UnsafeSyncEntry {}$/;" c method:Cursor::empty +UnsafeTrait vendor/async-trait/tests/test.rs /^pub unsafe trait UnsafeTrait {}$/;" i +UnsafeTrait vendor/async-trait/tests/test.rs /^unsafe impl UnsafeTrait for () {}$/;" c +UnsafeTraitPrivate vendor/async-trait/tests/test.rs /^unsafe trait UnsafeTraitPrivate {}$/;" i +UnsafeTraitPubCrate vendor/async-trait/tests/test.rs /^pub(crate) unsafe trait UnsafeTraitPubCrate {}$/;" i +Unspec vendor/nix/src/sys/socket/addr.rs /^ Unspec = libc::AF_UNSPEC,$/;" e enum:AddressFamily +Unstable features vendor/proc-macro2/README.md /^## Unstable features$/;" s chapter:proc-macro2 +UnterminatedStringLiteral vendor/fluent-syntax/src/parser/errors.rs /^ UnterminatedStringLiteral,$/;" e enum:ErrorKind +UnwrapOrElseFn vendor/futures-util/src/fns.rs /^impl Fn1> for UnwrapOrElseFn$/;" c +UnwrapOrElseFn vendor/futures-util/src/fns.rs /^impl FnMut1> for UnwrapOrElseFn$/;" c +UnwrapOrElseFn vendor/futures-util/src/fns.rs /^impl FnOnce1> for UnwrapOrElseFn$/;" c +UnwrapOrElseFn vendor/futures-util/src/fns.rs /^pub struct UnwrapOrElseFn(F);$/;" s +Unzip vendor/futures-util/src/stream/stream/unzip.rs /^impl FusedFuture for Unzip$/;" c +Unzip vendor/futures-util/src/stream/stream/unzip.rs /^impl Future for Unzip$/;" c +Unzip vendor/futures-util/src/stream/stream/unzip.rs /^impl Unzip {$/;" c +UpCase lib/readline/text.c /^#define UpCase /;" d file: +UpdateColors vendor/winapi/src/um/wingdi.rs /^ pub fn UpdateColors($/;" f +UpdateICMRegKeyA vendor/winapi/src/um/wingdi.rs /^ pub fn UpdateICMRegKeyA($/;" f +UpdateICMRegKeyW vendor/winapi/src/um/wingdi.rs /^ pub fn UpdateICMRegKeyW($/;" f +UpdateLayeredWindow vendor/winapi/src/um/winuser.rs /^ pub fn UpdateLayeredWindow($/;" f +UpdateLayeredWindowIndirect vendor/winapi/src/um/winuser.rs /^ pub fn UpdateLayeredWindowIndirect($/;" f +UpdatePanningFeedback vendor/winapi/src/um/uxtheme.rs /^ pub fn UpdatePanningFeedback($/;" f +UpdateProcThreadAttribute vendor/winapi/src/um/processthreadsapi.rs /^ pub fn UpdateProcThreadAttribute($/;" f +UpdateResourceA vendor/winapi/src/um/winbase.rs /^ pub fn UpdateResourceA($/;" f +UpdateResourceW vendor/winapi/src/um/winbase.rs /^ pub fn UpdateResourceW($/;" f +UpdateTraceA vendor/winapi/src/shared/evntrace.rs /^ pub fn UpdateTraceA($/;" f +UpdateTraceW vendor/winapi/src/shared/evntrace.rs /^ pub fn UpdateTraceW($/;" f +UpdateWindow vendor/winapi/src/um/winuser.rs /^ pub fn UpdateWindow($/;" f +UpperExp vendor/thiserror-impl/src/attr.rs /^ UpperExp,$/;" e enum:Trait +UpperHex vendor/thiserror-impl/src/attr.rs /^ UpperHex,$/;" e enum:Trait +Usage support/checkbashisms /^Usage: $progname [-n] script ...$/;" l +Usage support/texi2html /^Usage: texi2html [OPTIONS] TEXINFO-FILE$/;" l +Usage vendor/autocfg/README.md /^## Usage$/;" s chapter:autocfg +Usage vendor/bitflags/README.md /^## Usage$/;" s chapter:bitflags +Usage vendor/fluent-bundle/README.md /^Usage$/;" s chapter:Fluent +Usage vendor/fluent-fallback/README.md /^Usage$/;" s chapter:Fluent +Usage vendor/fluent-langneg/README.md /^Usage$/;" s chapter:Fluent LangNeg +Usage vendor/fluent-resmgr/README.md /^Usage$/;" s chapter:Fluent Resource Manager +Usage vendor/fluent/README.md /^Usage$/;" s chapter:Fluent +Usage vendor/futures-channel/README.md /^## Usage$/;" s chapter:futures-channel +Usage vendor/futures-core/README.md /^## Usage$/;" s chapter:futures-core +Usage vendor/futures-executor/README.md /^## Usage$/;" s chapter:futures-executor +Usage vendor/futures-io/README.md /^## Usage$/;" s chapter:futures-io +Usage vendor/futures-sink/README.md /^## Usage$/;" s chapter:futures-sink +Usage vendor/futures-task/README.md /^## Usage$/;" s chapter:futures-task +Usage vendor/futures-util/README.md /^## Usage$/;" s chapter:futures-util +Usage vendor/futures/README.md /^## Usage$/;" s +Usage vendor/intl-memoizer/README.md /^Usage$/;" s chapter:IntlMemoizer +Usage vendor/libc/README.md /^## Usage$/;" s chapter:libc - Raw FFI bindings to platforms' system libraries +Usage vendor/memoffset/README.md /^## Usage ##$/;" s chapter:memoffset +Usage vendor/nix/src/sys/resource.rs /^impl AsMut for Usage {$/;" c +Usage vendor/nix/src/sys/resource.rs /^impl AsRef for Usage {$/;" c +Usage vendor/nix/src/sys/resource.rs /^impl Usage {$/;" c +Usage vendor/nix/src/sys/resource.rs /^pub struct Usage(rusage);$/;" s +Usage vendor/pin-project-lite/README.md /^## Usage$/;" s chapter:pin-project-lite +Usage vendor/pin-utils/README.md /^## Usage$/;" s chapter:pin-utils +Usage vendor/proc-macro2/README.md /^## Usage$/;" s chapter:proc-macro2 +Usage vendor/rustc-hash/README.md /^## Usage$/;" s chapter:rustc-hash +Usage vendor/slab/README.md /^## Usage$/;" s chapter:Slab +Usage vendor/tinystr/README.md /^Usage$/;" s chapter:tinystr [![crates.io](http://meritbadge.herokuapp.com/tinystr)](https://crates.io/crates/tinystr) [![Build Status](https://travis-ci.org/zbraniecki/tinystr.svg?branch=master)](https://travis-ci.org/zbraniecki/tinystr) [![Coverage Status](https://coveralls.io/repos/github/zbraniecki/tinystr/badge.svg?branch=master)](https://coveralls.io/github/zbraniecki/tinystr?branch=master) +Usage vendor/unic-langid/README.md /^Usage$/;" s chapter:unic-langid [![Build Status](https://travis-ci.org/zbraniecki/unic-locale.svg?branch=master)](https://travis-ci.org/zbraniecki/unic-locale) [![Coverage Status](https://coveralls.io/repos/github/zbraniecki/unic-locale/badge.svg?branch=master)](https://coveralls.io/github/zbraniecki/unic-locale?branch=master) +Usage in constants vendor/memoffset/README.md /^### Usage in constants ###$/;" S section:memoffset""Feature flags +UseGlob vendor/syn/src/gen/clone.rs /^impl Clone for UseGlob {$/;" c +UseGlob vendor/syn/src/gen/debug.rs /^impl Debug for UseGlob {$/;" c +UseGlob vendor/syn/src/gen/eq.rs /^impl Eq for UseGlob {}$/;" c +UseGlob vendor/syn/src/gen/eq.rs /^impl PartialEq for UseGlob {$/;" c +UseGlob vendor/syn/src/gen/hash.rs /^impl Hash for UseGlob {$/;" c +UseGlob vendor/syn/src/item.rs /^ impl ToTokens for UseGlob {$/;" c module:printing +UseGroup vendor/syn/src/gen/clone.rs /^impl Clone for UseGroup {$/;" c +UseGroup vendor/syn/src/gen/debug.rs /^impl Debug for UseGroup {$/;" c +UseGroup vendor/syn/src/gen/eq.rs /^impl Eq for UseGroup {}$/;" c +UseGroup vendor/syn/src/gen/eq.rs /^impl PartialEq for UseGroup {$/;" c +UseGroup vendor/syn/src/gen/hash.rs /^impl Hash for UseGroup {$/;" c +UseGroup vendor/syn/src/item.rs /^ impl ToTokens for UseGroup {$/;" c module:printing +UseName vendor/syn/src/gen/clone.rs /^impl Clone for UseName {$/;" c +UseName vendor/syn/src/gen/debug.rs /^impl Debug for UseName {$/;" c +UseName vendor/syn/src/gen/eq.rs /^impl Eq for UseName {}$/;" c +UseName vendor/syn/src/gen/eq.rs /^impl PartialEq for UseName {$/;" c +UseName vendor/syn/src/gen/hash.rs /^impl Hash for UseName {$/;" c +UseName vendor/syn/src/item.rs /^ impl ToTokens for UseName {$/;" c module:printing +UsePath vendor/syn/src/gen/clone.rs /^impl Clone for UsePath {$/;" c +UsePath vendor/syn/src/gen/debug.rs /^impl Debug for UsePath {$/;" c +UsePath vendor/syn/src/gen/eq.rs /^impl Eq for UsePath {}$/;" c +UsePath vendor/syn/src/gen/eq.rs /^impl PartialEq for UsePath {$/;" c +UsePath vendor/syn/src/gen/hash.rs /^impl Hash for UsePath {$/;" c +UsePath vendor/syn/src/item.rs /^ impl ToTokens for UsePath {$/;" c module:printing +UseRename vendor/syn/src/gen/clone.rs /^impl Clone for UseRename {$/;" c +UseRename vendor/syn/src/gen/debug.rs /^impl Debug for UseRename {$/;" c +UseRename vendor/syn/src/gen/eq.rs /^impl Eq for UseRename {}$/;" c +UseRename vendor/syn/src/gen/eq.rs /^impl PartialEq for UseRename {$/;" c +UseRename vendor/syn/src/gen/hash.rs /^impl Hash for UseRename {$/;" c +UseRename vendor/syn/src/item.rs /^ impl ToTokens for UseRename {$/;" c module:printing +UseTree vendor/syn/src/gen/clone.rs /^impl Clone for UseTree {$/;" c +UseTree vendor/syn/src/gen/debug.rs /^impl Debug for UseTree {$/;" c +UseTree vendor/syn/src/gen/eq.rs /^impl Eq for UseTree {}$/;" c +UseTree vendor/syn/src/gen/eq.rs /^impl PartialEq for UseTree {$/;" c +UseTree vendor/syn/src/gen/hash.rs /^impl Hash for UseTree {$/;" c +UseTree vendor/syn/src/item.rs /^ impl Parse for UseTree {$/;" c module:parsing +User vendor/thiserror/tests/test_expr.rs /^ User(Vec<&'static str>),$/;" e enum:CompilerError +UserHandleGrantAccess vendor/winapi/src/um/winuser.rs /^ pub fn UserHandleGrantAccess($/;" f +Using libc vendor/memchr/README.md /^### Using libc$/;" S chapter:memchr +Utf8 vendor/autocfg/src/error.rs /^ Utf8(str::Utf8Error),$/;" e enum:ErrorKind +UtimensatFlags vendor/nix/src/sys/stat.rs /^pub enum UtimensatFlags {$/;" g +UtsName vendor/nix/src/sys/utsname.rs /^impl UtsName {$/;" c +UtsName vendor/nix/src/sys/utsname.rs /^pub struct UtsName(libc::utsname);$/;" s +V support/man2html.c /^#define V(/;" d file: +V vendor/async-trait/tests/test.rs /^ V {},$/;" e enum:issue87::Struct +V vendor/async-trait/tests/test.rs /^ V(),$/;" e enum:issue87::Tuple +V vendor/async-trait/tests/ui/self-span.rs /^ V {},$/;" e enum:E +V9_ECHO config-top.h /^#define V9_ECHO$/;" d +VALID_ECHO_OPTIONS builtins_rust/echo/src/lib.rs /^macro_rules! VALID_ECHO_OPTIONS {$/;" M +VALID_IMPERSONATION_LEVEL vendor/winapi/src/um/winnt.rs /^pub fn VALID_IMPERSONATION_LEVEL(L: SECURITY_IMPERSONATION_LEVEL) -> bool {$/;" f +VALID_INDIR_PARAM subst.c /^#define VALID_INDIR_PARAM(/;" d file: +VALID_NUMCHAR expr.c /^#define VALID_NUMCHAR(/;" d file: +VALID_PARAM_EXPAND_CHAR subst.c /^#define VALID_PARAM_EXPAND_CHAR(/;" d file: +VALID_SPECIAL_LENGTH_PARAM subst.c /^#define VALID_SPECIAL_LENGTH_PARAM(/;" d file: +VARIABLES_HASH_BUCKETS variables.c /^#define VARIABLES_HASH_BUCKETS /;" d file: +VARIANTARG vendor/winapi/src/um/oaidl.rs /^pub type VARIANTARG = VARIANT;$/;" t +VARIANT_BOOL vendor/winapi/src/shared/wtypes.rs /^pub type VARIANT_BOOL = c_short;$/;" t +VARLIST r_bash/src/lib.rs /^pub type VARLIST = _vlist;$/;" t +VARLIST variables.h /^} VARLIST;$/;" t typeref:struct:_vlist +VARTYPE vendor/winapi/src/shared/wtypes.rs /^pub type VARTYPE = c_ushort;$/;" t +VAR_CONTEXT builtins_rust/declare/src/lib.rs /^pub struct VAR_CONTEXT {$/;" s +VAR_CONTEXT r_bash/src/lib.rs /^pub type VAR_CONTEXT = var_context;$/;" t +VAR_CONTEXT variables.h /^} VAR_CONTEXT;$/;" t typeref:struct:var_context +VA_NOEXPAND arrayfunc.h /^#define VA_NOEXPAND /;" d +VA_NOEXPAND builtins_rust/common/src/lib.rs /^macro_rules! VA_NOEXPAND {$/;" M +VA_NOEXPAND builtins_rust/set/src/lib.rs /^macro_rules! VA_NOEXPAND {$/;" M +VA_NOEXPAND builtins_rust/wait/src/lib.rs /^macro_rules! VA_NOEXPAND {$/;" M +VA_ONEWORD arrayfunc.h /^#define VA_ONEWORD /;" d +VA_ONEWORD builtins_rust/common/src/lib.rs /^macro_rules! VA_ONEWORD {$/;" M +VA_ONEWORD builtins_rust/set/src/lib.rs /^macro_rules! VA_ONEWORD {$/;" M +VA_ONEWORD builtins_rust/wait/src/lib.rs /^macro_rules! VA_ONEWORD {$/;" M +VCLRFLAGS variables.h /^#define VCLRFLAGS(/;" d +VC_BLTNENV variables.h /^#define VC_BLTNENV /;" d +VC_FUNCENV variables.h /^#define VC_FUNCENV /;" d +VC_HASLOCAL variables.h /^#define VC_HASLOCAL /;" d +VC_HASTMPVAR variables.h /^#define VC_HASTMPVAR /;" d +VC_TEMPENV variables.h /^#define VC_TEMPENV /;" d +VC_TEMPFLAGS variables.h /^#define VC_TEMPFLAGS /;" d +VENDOR Makefile.in /^VENDOR = @host_vendor@$/;" m +VENDOR conftypes.h /^# define VENDOR /;" d +VERSION Makefile.in /^VERSION = @PACKAGE_VERSION@$/;" m +VERSION lib/intl/Makefile.in /^VERSION = @PACKAGE_VERSION@$/;" m +VERSION lib/readline/Makefile.in /^VERSION = @PACKAGE_VERSION@$/;" m +VERSION lib/sh/Makefile.in /^VERSION = @PACKAGE_VERSION@$/;" m +VERSOBJ Makefile.in /^VERSOBJ = utshellversion.$(OBJEXT)$/;" m +VERSPROG Makefile.in /^VERSPROG = utshellversion$(EXEEXT)$/;" m +VERS_2_6_18 vendor/nix/src/features.rs /^ static VERS_2_6_18: usize = 2;$/;" v module:os +VERS_2_6_27 vendor/nix/src/features.rs /^ static VERS_2_6_27: usize = 3;$/;" v module:os +VERS_2_6_28 vendor/nix/src/features.rs /^ static VERS_2_6_28: usize = 4;$/;" v module:os +VERS_3 vendor/nix/src/features.rs /^ static VERS_3: usize = 5;$/;" v module:os +VERS_UNKNOWN vendor/nix/src/features.rs /^ static VERS_UNKNOWN: usize = 1;$/;" v module:os +VFLAG builtins_rust/bind/src/lib.rs /^macro_rules! VFLAG {$/;" M +VFLAG support/utshellversion.c /^#define VFLAG /;" d file: +VFunction general.h /^typedef void VFunction ();$/;" t typeref:typename:void ()() +VFunction input.h /^typedef void VFunction ();$/;" t typeref:typename:void ()() +VFunction lib/readline/rltypedefs.h /^typedef void VFunction () __attribute__ ((deprecated));$/;" t typeref:typename:void ()() +VFunction r_bash/src/lib.rs /^pub type VFunction = ::core::option::Option;$/;" t +VFunction r_glob/src/lib.rs /^pub type VFunction = ::core::option::Option;$/;" t +VFunction r_readline/src/lib.rs /^pub type VFunction = ::core::option::Option;$/;" t +VGETFLAGS variables.h /^#define VGETFLAGS(/;" d +VIM_CHANGE lib/readline/rlprivate.h /^#define VIM_CHANGE /;" d +VIM_DELETE lib/readline/rlprivate.h /^#define VIM_DELETE /;" d +VIM_YANK lib/readline/rlprivate.h /^#define VIM_YANK /;" d +VISIBLE_BELL lib/readline/rldefs.h /^#define VISIBLE_BELL /;" d +VISIBLE_STATS lib/readline/rlconf.h /^#define VISIBLE_STATS$/;" d +VIS_CHARS lib/readline/display.c /^#define VIS_CHARS(/;" d file: +VIS_FACE lib/readline/display.c /^#define VIS_FACE(/;" d file: +VIS_LINE lib/readline/display.c /^#define VIS_LINE(/;" d file: +VIS_LINE_FACE lib/readline/display.c /^#define VIS_LINE_FACE(/;" d file: +VIS_LLEN lib/readline/display.c /^#define VIS_LLEN(/;" d file: +VI_COMMAND_MODE lib/readline/rlprivate.h /^#define VI_COMMAND_MODE(/;" d +VI_EDITING_MODE bashline.c /^# define VI_EDITING_MODE /;" d file: +VI_EDIT_COMMAND bashline.c /^#define VI_EDIT_COMMAND /;" d file: +VI_INSERT_MODE lib/readline/rlprivate.h /^#define VI_INSERT_MODE(/;" d +VI_MODE lib/readline/rlconf.h /^#define VI_MODE$/;" d +VMIN lib/readline/rltty.c /^# define VMIN /;" d file: +VMSTATE_NUMARG lib/readline/rlprivate.h /^#define VMSTATE_NUMARG /;" d +VMSTATE_READ lib/readline/rlprivate.h /^#define VMSTATE_READ /;" d +VMS_EXT lib/sh/strftime.c /^#define VMS_EXT /;" d file: +VOID vendor/winapi/src/shared/ntdef.rs /^pub type VOID = c_void;$/;" t +VOID vendor/winapi/src/um/winnt.rs /^pub type VOID = c_void;$/;" t +VPATH Makefile.in /^VPATH = @srcdir@$/;" m +VPATH builtins/Makefile.in /^VPATH = @srcdir@$/;" m +VPATH lib/glob/Makefile.in /^VPATH = @srcdir@$/;" m +VPATH lib/intl/Makefile.in /^VPATH = $(srcdir)$/;" m +VPATH lib/malloc/Makefile.in /^VPATH = @srcdir@$/;" m +VPATH lib/readline/Makefile.in /^VPATH = @srcdir@$/;" m +VPATH lib/sh/Makefile.in /^VPATH = @srcdir@$/;" m +VPATH lib/termcap/Makefile.in /^VPATH = @srcdir@$/;" m +VPATH lib/tilde/Makefile.in /^VPATH = @srcdir@$/;" m +VPATH support/Makefile.in /^VPATH = @srcdir@$/;" m +VSETATTR builtins_rust/declare/src/lib.rs /^unsafe fn VSETATTR(var: *mut SHELL_VAR, attr: i32) {$/;" f +VSETATTR builtins_rust/set/src/lib.rs /^macro_rules! VSETATTR {$/;" M +VSETATTR variables.h /^#define VSETATTR(/;" d +VSETFLAGS variables.h /^#define VSETFLAGS(/;" d +VSS_ID vendor/winapi/src/um/vss.rs /^pub type VSS_ID = GUID;$/;" t +VSS_PWSZ vendor/winapi/src/um/vss.rs /^pub type VSS_PWSZ = *mut WCHAR;$/;" t +VSS_TIMESTAMP vendor/winapi/src/um/vss.rs /^pub type VSS_TIMESTAMP = LONGLONG;$/;" t +VTIME lib/readline/rltty.c /^# define VTIME /;" d file: +VT_ARRAYMEMBER subst.c /^#define VT_ARRAYMEMBER /;" d file: +VT_ARRAYVAR subst.c /^#define VT_ARRAYVAR /;" d file: +VT_ASSOCVAR subst.c /^#define VT_ASSOCVAR /;" d file: +VT_POSPARMS subst.c /^#define VT_POSPARMS /;" d file: +VT_STARSUB subst.c /^#define VT_STARSUB /;" d file: +VT_VARIABLE subst.c /^#define VT_VARIABLE /;" d file: +VUNSETATTR builtins_rust/common/src/lib.rs /^macro_rules! VUNSETATTR {$/;" M +VUNSETATTR builtins_rust/declare/src/lib.rs /^unsafe fn VUNSETATTR(var: *mut SHELL_VAR, attr: i32) {$/;" f +VUNSETATTR builtins_rust/set/src/lib.rs /^macro_rules! VUNSETATTR {$/;" M +VUNSETATTR variables.h /^#define VUNSETATTR(/;" d +VVFLAG builtins_rust/bind/src/lib.rs /^macro_rules! VVFLAG {$/;" M +V_BELLSTYLE lib/readline/bind.c /^#define V_BELLSTYLE /;" d file: +V_COMBEGIN lib/readline/bind.c /^#define V_COMBEGIN /;" d file: +V_EDITMODE lib/readline/bind.c /^#define V_EDITMODE /;" d file: +V_INT lib/readline/bind.c /^#define V_INT /;" d file: +V_ISRCHTERM lib/readline/bind.c /^#define V_ISRCHTERM /;" d file: +V_KEYMAP lib/readline/bind.c /^#define V_KEYMAP /;" d file: +V_SPECIAL lib/readline/bind.c /^#define V_SPECIAL /;" d file: +V_STRING lib/readline/bind.c /^#define V_STRING /;" d file: +Vacant vendor/slab/src/lib.rs /^ Vacant(usize),$/;" e enum:Entry +Vacant vendor/type-map/src/lib.rs /^ Vacant(VacantEntry<'a, T>),$/;" e enum:concurrent::Entry +Vacant vendor/type-map/src/lib.rs /^ Vacant(VacantEntry<'a, T>),$/;" e enum:Entry +VacantEntry vendor/slab/src/lib.rs /^impl<'a, T> VacantEntry<'a, T> {$/;" c +VacantEntry vendor/slab/src/lib.rs /^pub struct VacantEntry<'a, T> {$/;" s +VacantEntry vendor/type-map/src/lib.rs /^ impl<'a, T: 'static + Send + Sync> VacantEntry<'a, T> {$/;" c module:concurrent +VacantEntry vendor/type-map/src/lib.rs /^ pub struct VacantEntry<'a, T> {$/;" s module:concurrent +VacantEntry vendor/type-map/src/lib.rs /^impl<'a, T: 'static> VacantEntry<'a, T> {$/;" c +VacantEntry vendor/type-map/src/lib.rs /^pub struct VacantEntry<'a, T> {$/;" s +Val vendor/nix/src/sys/socket/mod.rs /^ type Val;$/;" t interface:GetSockOpt +Val vendor/nix/src/sys/socket/mod.rs /^ type Val;$/;" t interface:SetSockOpt +Val vendor/nix/src/sys/socket/sockopt.rs /^ type Val = T;$/;" t +Val vendor/nix/src/sys/socket/sockopt.rs /^ type Val = usize;$/;" t implementation:AlgSetAeadAuthSize +ValidatePowerPolicies vendor/winapi/src/um/powrprof.rs /^ pub fn ValidatePowerPolicies($/;" f +ValidateRect vendor/winapi/src/um/winuser.rs /^ pub fn ValidateRect($/;" f +ValidateRgn vendor/winapi/src/um/winuser.rs /^ pub fn ValidateRgn($/;" f +Value vendor/fluent-fallback/src/bundles.rs /^ Value(Cow<'l, str>),$/;" e enum:Value +Value vendor/fluent-fallback/src/bundles.rs /^enum Value<'l> {$/;" g +Value vendor/slab/src/serde.rs /^ type Value = Slab;$/;" t +Value vendor/smallvec/src/lib.rs /^ type Value = SmallVec;$/;" t +Value vendor/unic-langid-impl/src/serde.rs /^ type Value = LanguageIdentifier;$/;" t implementation:LanguageIdentifier::deserialize::LanguageIdentifierVisitor +VarBstrCat vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrCat($/;" f +VarBstrCmp vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrCmp($/;" f +VarBstrFromDate vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrFromDate($/;" f +VarBstrFromDec vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrFromDec($/;" f +VarBstrFromI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrFromI1($/;" f +VarBstrFromI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrFromI2($/;" f +VarBstrFromI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrFromI4($/;" f +VarBstrFromI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrFromI8($/;" f +VarBstrFromR4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrFromR4($/;" f +VarBstrFromR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrFromR8($/;" f +VarBstrFromUI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrFromUI1($/;" f +VarBstrFromUI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrFromUI2($/;" f +VarBstrFromUI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrFromUI4($/;" f +VarBstrFromUI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarBstrFromUI8($/;" f +VarDateFromDec vendor/winapi/src/um/oleauto.rs /^ pub fn VarDateFromDec($/;" f +VarDateFromI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDateFromI1($/;" f +VarDateFromI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDateFromI2($/;" f +VarDateFromI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDateFromI4($/;" f +VarDateFromI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDateFromI8($/;" f +VarDateFromR4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDateFromR4($/;" f +VarDateFromR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDateFromR8($/;" f +VarDateFromStr vendor/winapi/src/um/oleauto.rs /^ pub fn VarDateFromStr($/;" f +VarDateFromUI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDateFromUI1($/;" f +VarDateFromUI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDateFromUI2($/;" f +VarDateFromUI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDateFromUI4($/;" f +VarDateFromUI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDateFromUI8($/;" f +VarDecAbs vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecAbs($/;" f +VarDecAdd vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecAdd($/;" f +VarDecCmp vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecCmp($/;" f +VarDecCmpR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecCmpR8($/;" f +VarDecDiv vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecDiv($/;" f +VarDecFix vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFix($/;" f +VarDecFromDate vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFromDate($/;" f +VarDecFromI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFromI1($/;" f +VarDecFromI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFromI2($/;" f +VarDecFromI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFromI4($/;" f +VarDecFromI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFromI8($/;" f +VarDecFromR4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFromR4($/;" f +VarDecFromR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFromR8($/;" f +VarDecFromStr vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFromStr($/;" f +VarDecFromUI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFromUI1($/;" f +VarDecFromUI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFromUI2($/;" f +VarDecFromUI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFromUI4($/;" f +VarDecFromUI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecFromUI8($/;" f +VarDecInt vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecInt($/;" f +VarDecMul vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecMul($/;" f +VarDecNeg vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecNeg($/;" f +VarDecRound vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecRound($/;" f +VarDecSub vendor/winapi/src/um/oleauto.rs /^ pub fn VarDecSub($/;" f +VarI2FromDate vendor/winapi/src/um/oleauto.rs /^ pub fn VarI2FromDate($/;" f +VarI2FromDec vendor/winapi/src/um/oleauto.rs /^ pub fn VarI2FromDec($/;" f +VarI2FromI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI2FromI1($/;" f +VarI2FromI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI2FromI4($/;" f +VarI2FromI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI2FromI8($/;" f +VarI2FromR4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI2FromR4($/;" f +VarI2FromR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI2FromR8($/;" f +VarI2FromStr vendor/winapi/src/um/oleauto.rs /^ pub fn VarI2FromStr($/;" f +VarI2FromUI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI2FromUI1($/;" f +VarI2FromUI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI2FromUI2($/;" f +VarI2FromUI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI2FromUI4($/;" f +VarI2FromUI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI2FromUI8($/;" f +VarI4FromDate vendor/winapi/src/um/oleauto.rs /^ pub fn VarI4FromDate($/;" f +VarI4FromDec vendor/winapi/src/um/oleauto.rs /^ pub fn VarI4FromDec($/;" f +VarI4FromI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI4FromI1($/;" f +VarI4FromI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI4FromI2($/;" f +VarI4FromI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI4FromI8($/;" f +VarI4FromR4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI4FromR4($/;" f +VarI4FromR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI4FromR8($/;" f +VarI4FromStr vendor/winapi/src/um/oleauto.rs /^ pub fn VarI4FromStr($/;" f +VarI4FromUI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI4FromUI1($/;" f +VarI4FromUI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI4FromUI2($/;" f +VarI4FromUI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI4FromUI4($/;" f +VarI4FromUI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI4FromUI8($/;" f +VarI8FromDate vendor/winapi/src/um/oleauto.rs /^ pub fn VarI8FromDate($/;" f +VarI8FromDec vendor/winapi/src/um/oleauto.rs /^ pub fn VarI8FromDec($/;" f +VarI8FromI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI8FromI1($/;" f +VarI8FromI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI8FromI2($/;" f +VarI8FromR4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI8FromR4($/;" f +VarI8FromR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI8FromR8($/;" f +VarI8FromStr vendor/winapi/src/um/oleauto.rs /^ pub fn VarI8FromStr($/;" f +VarI8FromUI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI8FromUI1($/;" f +VarI8FromUI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI8FromUI2($/;" f +VarI8FromUI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI8FromUI4($/;" f +VarI8FromUI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarI8FromUI8($/;" f +VarR4CmpR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4CmpR8($/;" f +VarR4FromDate vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4FromDate($/;" f +VarR4FromDec vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4FromDec($/;" f +VarR4FromI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4FromI1($/;" f +VarR4FromI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4FromI2($/;" f +VarR4FromI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4FromI4($/;" f +VarR4FromI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4FromI8($/;" f +VarR4FromR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4FromR8($/;" f +VarR4FromStr vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4FromStr($/;" f +VarR4FromUI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4FromUI1($/;" f +VarR4FromUI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4FromUI2($/;" f +VarR4FromUI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4FromUI4($/;" f +VarR4FromUI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR4FromUI8($/;" f +VarR8FromDate vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8FromDate($/;" f +VarR8FromDec vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8FromDec($/;" f +VarR8FromI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8FromI1($/;" f +VarR8FromI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8FromI2($/;" f +VarR8FromI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8FromI4($/;" f +VarR8FromI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8FromI8($/;" f +VarR8FromR4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8FromR4($/;" f +VarR8FromStr vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8FromStr($/;" f +VarR8FromUI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8FromUI1($/;" f +VarR8FromUI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8FromUI2($/;" f +VarR8FromUI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8FromUI4($/;" f +VarR8FromUI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8FromUI8($/;" f +VarR8Pow vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8Pow($/;" f +VarR8Round vendor/winapi/src/um/oleauto.rs /^ pub fn VarR8Round($/;" f +VarUI1FromDate vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI1FromDate($/;" f +VarUI1FromDec vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI1FromDec($/;" f +VarUI1FromI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI1FromI1($/;" f +VarUI1FromI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI1FromI2($/;" f +VarUI1FromI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI1FromI4($/;" f +VarUI1FromI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI1FromI8($/;" f +VarUI1FromR4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI1FromR4($/;" f +VarUI1FromR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI1FromR8($/;" f +VarUI1FromStr vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI1FromStr($/;" f +VarUI1FromUI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI1FromUI2($/;" f +VarUI1FromUI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI1FromUI4($/;" f +VarUI1FromUI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI1FromUI8($/;" f +VarUI2FromDate vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI2FromDate($/;" f +VarUI2FromDec vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI2FromDec($/;" f +VarUI2FromI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI2FromI1($/;" f +VarUI2FromI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI2FromI2($/;" f +VarUI2FromI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI2FromI4($/;" f +VarUI2FromI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI2FromI8($/;" f +VarUI2FromR4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI2FromR4($/;" f +VarUI2FromR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI2FromR8($/;" f +VarUI2FromStr vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI2FromStr($/;" f +VarUI2FromUI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI2FromUI1($/;" f +VarUI2FromUI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI2FromUI4($/;" f +VarUI2FromUI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI2FromUI8($/;" f +VarUI4FromDate vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI4FromDate($/;" f +VarUI4FromDec vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI4FromDec($/;" f +VarUI4FromI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI4FromI1($/;" f +VarUI4FromI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI4FromI2($/;" f +VarUI4FromI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI4FromI4($/;" f +VarUI4FromI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI4FromI8($/;" f +VarUI4FromR4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI4FromR4($/;" f +VarUI4FromR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI4FromR8($/;" f +VarUI4FromStr vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI4FromStr($/;" f +VarUI4FromUI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI4FromUI1($/;" f +VarUI4FromUI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI4FromUI2($/;" f +VarUI4FromUI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI4FromUI8($/;" f +VarUI8FromDate vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI8FromDate($/;" f +VarUI8FromDec vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI8FromDec($/;" f +VarUI8FromI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI8FromI1($/;" f +VarUI8FromI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI8FromI2($/;" f +VarUI8FromI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI8FromI4($/;" f +VarUI8FromI8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI8FromI8($/;" f +VarUI8FromR4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI8FromR4($/;" f +VarUI8FromR8 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI8FromR8($/;" f +VarUI8FromStr vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI8FromStr($/;" f +VarUI8FromUI1 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI8FromUI1($/;" f +VarUI8FromUI2 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI8FromUI2($/;" f +VarUI8FromUI4 vendor/winapi/src/um/oleauto.rs /^ pub fn VarUI8FromUI4($/;" f +Variable vendor/fluent-bundle/src/resolver/errors.rs /^ Variable {$/;" e enum:ReferenceKind +VariableReference vendor/fluent-syntax/src/ast/mod.rs /^ VariableReference { id: Identifier },$/;" e enum:InlineExpression +Variadic vendor/syn/src/gen/clone.rs /^impl Clone for Variadic {$/;" c +Variadic vendor/syn/src/gen/debug.rs /^impl Debug for Variadic {$/;" c +Variadic vendor/syn/src/gen/eq.rs /^impl Eq for Variadic {}$/;" c +Variadic vendor/syn/src/gen/eq.rs /^impl PartialEq for Variadic {$/;" c +Variadic vendor/syn/src/gen/hash.rs /^impl Hash for Variadic {$/;" c +Variadic vendor/syn/src/ty.rs /^ impl ToTokens for Variadic {$/;" c module:printing +Variant vendor/async-trait/tests/test.rs /^ Variant,$/;" e enum:issue81::Enum +Variant vendor/fluent-syntax/src/ast/mod.rs /^pub struct Variant {$/;" s +Variant vendor/syn/src/data.rs /^ impl Parse for Variant {$/;" c module:parsing +Variant vendor/syn/src/data.rs /^ impl ToTokens for Variant {$/;" c module:printing +Variant vendor/syn/src/gen/clone.rs /^impl Clone for Variant {$/;" c +Variant vendor/syn/src/gen/debug.rs /^impl Debug for Variant {$/;" c +Variant vendor/syn/src/gen/eq.rs /^impl Eq for Variant {}$/;" c +Variant vendor/syn/src/gen/eq.rs /^impl PartialEq for Variant {$/;" c +Variant vendor/syn/src/gen/hash.rs /^impl Hash for Variant {$/;" c +Variant vendor/thiserror-impl/src/ast.rs /^impl<'a> Variant<'a> {$/;" c +Variant vendor/thiserror-impl/src/ast.rs /^pub struct Variant<'a> {$/;" s +Variant vendor/thiserror-impl/src/prop.rs /^impl Variant<'_> {$/;" c +Variant vendor/thiserror-impl/src/valid.rs /^impl Variant<'_> {$/;" c +Variant vendor/unic-langid-impl/src/subtags/variant.rs /^impl FromStr for Variant {$/;" c +Variant vendor/unic-langid-impl/src/subtags/variant.rs /^impl PartialEq<&str> for Variant {$/;" c +Variant vendor/unic-langid-impl/src/subtags/variant.rs /^impl PartialEq for Variant {$/;" c +Variant vendor/unic-langid-impl/src/subtags/variant.rs /^impl Variant {$/;" c +Variant vendor/unic-langid-impl/src/subtags/variant.rs /^impl std::fmt::Display for Variant {$/;" c +Variant vendor/unic-langid-impl/src/subtags/variant.rs /^pub struct Variant(TinyStr8);$/;" s +VariantChangeType vendor/winapi/src/um/oleauto.rs /^ pub fn VariantChangeType($/;" f +VariantChangeTypeEx vendor/winapi/src/um/oleauto.rs /^ pub fn VariantChangeTypeEx($/;" f +VariantClear vendor/winapi/src/um/oleauto.rs /^ pub fn VariantClear($/;" f +VariantCopy vendor/winapi/src/um/oleauto.rs /^ pub fn VariantCopy($/;" f +VariantCopyInd vendor/winapi/src/um/oleauto.rs /^ pub fn VariantCopyInd($/;" f +VariantInit vendor/winapi/src/um/oleauto.rs /^ pub fn VariantInit($/;" f +VariantKey vendor/fluent-syntax/src/ast/mod.rs /^pub enum VariantKey {$/;" g +VariantTimeToDosDateTime vendor/winapi/src/um/oleauto.rs /^ pub fn VariantTimeToDosDateTime($/;" f +VariantTimeToSystemTime vendor/winapi/src/um/oleauto.rs /^ pub fn VariantTimeToSystemTime($/;" f +Vec vendor/async-trait/tests/test.rs /^ impl Issue1 for Vec {$/;" c module:issue1 +Vec vendor/fluent-fallback/src/env.rs /^impl LocalesProvider for Vec {$/;" c +Vec vendor/futures-io/src/lib.rs /^ impl AsyncWrite for Vec {$/;" c module:if_std +Vec vendor/futures-sink/src/lib.rs /^ impl Sink for alloc::vec::Vec {$/;" c module:if_alloc +Vec vendor/once_cell/tests/it.rs /^ let fib: &'static Vec = eval_once! {$/;" v function:sync::eval_once_macro +Vec vendor/quote/src/runtime.rs /^ impl<'q, T: 'q> RepAsIteratorExt<'q> for Vec {$/;" c module:ext +Vec vendor/smallvec/benches/bench.rs /^impl Vector for Vec {$/;" c +Vec vendor/smallvec/src/lib.rs /^impl ExtendFromSlice for Vec {$/;" c +Vec vendor/stable_deref_trait/src/lib.rs /^unsafe impl StableDeref for Vec {}$/;" c +Vec vendor/stdext/src/vec.rs /^impl VecExtClone for Vec {$/;" c +Vec vendor/stdext/src/vec.rs /^impl VecExt for Vec {$/;" c +Vec vendor/syn/src/gen_helper.rs /^ impl FoldHelper for Vec {$/;" c module:fold +Vec vendor/syn/src/parse_quote.rs /^impl ParseQuote for Vec {$/;" c +Vec vendor/syn/tests/common/eq.rs /^impl SpanlessEq for Vec {$/;" c +VecDeque vendor/futures-sink/src/lib.rs /^ impl Sink for alloc::collections::VecDeque {$/;" c module:if_alloc +VecExt vendor/stdext/src/vec.rs /^pub trait VecExt {$/;" i +VecExtClone vendor/stdext/src/vec.rs /^pub trait VecExtClone {$/;" i +VecWrapper vendor/futures/tests/io_read_to_end.rs /^ impl Drop for VecWrapper {$/;" c function:issue2310 +VecWrapper vendor/futures/tests/io_read_to_end.rs /^ impl VecWrapper {$/;" c function:issue2310 +VecWrapper vendor/futures/tests/io_read_to_end.rs /^ struct VecWrapper {$/;" s function:issue2310 +Vector vendor/memchr/src/memmem/vector.rs /^pub(crate) trait Vector: Copy + core::fmt::Debug {$/;" i +Vector vendor/smallvec/benches/bench.rs /^trait Vector: for<'a> From<&'a [T]> + Extend + ExtendFromSlice {$/;" i +VerLanguageNameA vendor/winapi/src/um/winver.rs /^ pub fn VerLanguageNameA($/;" f +VerLanguageNameW vendor/winapi/src/um/winver.rs /^ pub fn VerLanguageNameW($/;" f +VerQueryValueA vendor/winapi/src/um/winver.rs /^ pub fn VerQueryValueA($/;" f +VerQueryValueW vendor/winapi/src/um/winver.rs /^ pub fn VerQueryValueW($/;" f +VerSetConditionMask vendor/winapi/src/um/sysinfoapi.rs /^ pub fn VerSetConditionMask($/;" f +VerSetConditionMask vendor/winapi/src/um/winnt.rs /^ pub fn VerSetConditionMask($/;" f +VerifyScripts vendor/winapi/src/um/winnls.rs /^ pub fn VerifyScripts($/;" f +VerifySignature vendor/winapi/src/shared/sspi.rs /^ pub fn VerifySignature($/;" f +VerifyVersionInfoA vendor/winapi/src/um/winbase.rs /^ pub fn VerifyVersionInfoA($/;" f +VerifyVersionInfoW vendor/winapi/src/um/winbase.rs /^ pub fn VerifyVersionInfoW($/;" f +Version Makefile.in /^Version = @BASHVERS@$/;" m +Version vendor/autocfg/src/version.rs /^impl Version {$/;" c +Version vendor/autocfg/src/version.rs /^pub struct Version {$/;" s +Versioning vendor/self_cell/README.md /^## Versioning$/;" s chapter:`self_cell!` +VirtualAlloc vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualAlloc($/;" f +VirtualAllocEx vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualAllocEx($/;" f +VirtualAllocExNuma vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualAllocExNuma($/;" f +VirtualAllocFromApp vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualAllocFromApp($/;" f +VirtualFree vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualFree($/;" f +VirtualFreeEx vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualFreeEx($/;" f +VirtualLock vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualLock($/;" f +VirtualProtect vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualProtect($/;" f +VirtualProtectEx vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualProtectEx($/;" f +VirtualProtectFromApp vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualProtectFromApp($/;" f +VirtualQuery vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualQuery($/;" f +VirtualQueryEx vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualQueryEx($/;" f +VirtualUnlock vendor/winapi/src/um/memoryapi.rs /^ pub fn VirtualUnlock($/;" f +VisCrate vendor/syn/src/data.rs /^ impl ToTokens for VisCrate {$/;" c module:printing +VisCrate vendor/syn/src/gen/clone.rs /^impl Clone for VisCrate {$/;" c +VisCrate vendor/syn/src/gen/debug.rs /^impl Debug for VisCrate {$/;" c +VisCrate vendor/syn/src/gen/eq.rs /^impl Eq for VisCrate {}$/;" c +VisCrate vendor/syn/src/gen/eq.rs /^impl PartialEq for VisCrate {$/;" c +VisCrate vendor/syn/src/gen/hash.rs /^impl Hash for VisCrate {$/;" c +VisPublic vendor/syn/src/data.rs /^ impl ToTokens for VisPublic {$/;" c module:printing +VisPublic vendor/syn/src/gen/clone.rs /^impl Clone for VisPublic {$/;" c +VisPublic vendor/syn/src/gen/debug.rs /^impl Debug for VisPublic {$/;" c +VisPublic vendor/syn/src/gen/eq.rs /^impl Eq for VisPublic {}$/;" c +VisPublic vendor/syn/src/gen/eq.rs /^impl PartialEq for VisPublic {$/;" c +VisPublic vendor/syn/src/gen/hash.rs /^impl Hash for VisPublic {$/;" c +VisRest vendor/syn/tests/test_visibility.rs /^impl Parse for VisRest {$/;" c +VisRest vendor/syn/tests/test_visibility.rs /^struct VisRest {$/;" s +VisRestricted vendor/syn/src/data.rs /^ impl ToTokens for VisRestricted {$/;" c module:printing +VisRestricted vendor/syn/src/gen/clone.rs /^impl Clone for VisRestricted {$/;" c +VisRestricted vendor/syn/src/gen/debug.rs /^impl Debug for VisRestricted {$/;" c +VisRestricted vendor/syn/src/gen/eq.rs /^impl Eq for VisRestricted {}$/;" c +VisRestricted vendor/syn/src/gen/eq.rs /^impl PartialEq for VisRestricted {$/;" c +VisRestricted vendor/syn/src/gen/hash.rs /^impl Hash for VisRestricted {$/;" c +Visibility vendor/syn/src/data.rs /^ impl Parse for Visibility {$/;" c module:parsing +Visibility vendor/syn/src/data.rs /^ impl Visibility {$/;" c module:parsing +Visibility vendor/syn/src/gen/clone.rs /^impl Clone for Visibility {$/;" c +Visibility vendor/syn/src/gen/debug.rs /^impl Debug for Visibility {$/;" c +Visibility vendor/syn/src/gen/eq.rs /^impl Eq for Visibility {}$/;" c +Visibility vendor/syn/src/gen/eq.rs /^impl PartialEq for Visibility {$/;" c +Visibility vendor/syn/src/gen/hash.rs /^impl Hash for Visibility {$/;" c +Visibility vendor/syn/src/item.rs /^ impl Visibility {$/;" c module:parsing +Visit vendor/syn/src/gen/visit.rs /^pub trait Visit<'ast> {$/;" i +VisitMut vendor/syn/src/gen/visit_mut.rs /^pub trait VisitMut {$/;" i +VkKeyScanA vendor/winapi/src/um/winuser.rs /^ pub fn VkKeyScanA($/;" f +VkKeyScanExA vendor/winapi/src/um/winuser.rs /^ pub fn VkKeyScanExA($/;" f +VkKeyScanExW vendor/winapi/src/um/winuser.rs /^ pub fn VkKeyScanExW($/;" f +VkKeyScanW vendor/winapi/src/um/winuser.rs /^ pub fn VkKeyScanW($/;" f +Void vendor/once_cell/src/imp_std.rs /^ enum Void {}$/;" g method:tests::OnceCell::init +Void vendor/once_cell/src/lib.rs /^ enum Void {}$/;" g method:sync::OnceCell::get_or_init +Void vendor/once_cell/src/lib.rs /^ enum Void {}$/;" g method:unsync::OnceCell::get_or_init +Void vendor/once_cell/src/race.rs /^ enum Void {}$/;" g method:once_box::OnceBox::get_or_init +Void vendor/once_cell/src/race.rs /^ enum Void {}$/;" g method:OnceNonZeroUsize::get_or_init +Void vendor/smallvec/src/tests.rs /^ enum Void {}$/;" g function:uninhabited +Vsock vendor/nix/src/sys/socket/addr.rs /^ Vsock = libc::AF_VSOCK,$/;" e enum:AddressFamily +Vsock vendor/nix/src/sys/socket/addr.rs /^ Vsock(VsockAddr),$/;" e enum:SockAddr +VsockAddr vendor/nix/src/sys/socket/addr.rs /^ impl AsRef for VsockAddr {$/;" c module:vsock +VsockAddr vendor/nix/src/sys/socket/addr.rs /^ impl Eq for VsockAddr {}$/;" c module:vsock +VsockAddr vendor/nix/src/sys/socket/addr.rs /^ impl Hash for VsockAddr {$/;" c module:vsock +VsockAddr vendor/nix/src/sys/socket/addr.rs /^ impl PartialEq for VsockAddr {$/;" c module:vsock +VsockAddr vendor/nix/src/sys/socket/addr.rs /^ impl SockaddrLike for VsockAddr {$/;" c module:vsock +VsockAddr vendor/nix/src/sys/socket/addr.rs /^ impl VsockAddr {$/;" c module:vsock +VsockAddr vendor/nix/src/sys/socket/addr.rs /^ impl fmt::Debug for VsockAddr {$/;" c module:vsock +VsockAddr vendor/nix/src/sys/socket/addr.rs /^ impl fmt::Display for VsockAddr {$/;" c module:vsock +VsockAddr vendor/nix/src/sys/socket/addr.rs /^ impl private::SockaddrLikePriv for VsockAddr {}$/;" c module:vsock +VsockAddr vendor/nix/src/sys/socket/addr.rs /^ pub struct VsockAddr(pub(in super::super) sockaddr_vm);$/;" s module:vsock +VssFreeSnapshotProperties vendor/winapi/src/um/vsbackup.rs /^ pub fn VssFreeSnapshotProperties($/;" f +W lib/intl/gettextP.h /^# define W(/;" d +W vendor/futures-util/src/compat/compat01as03.rs /^ impl AsyncWrite01CompatExt for W {}$/;" c module:io +W vendor/futures-util/src/io/mod.rs /^impl AsyncWriteExt for W {}$/;" c +WAIT builtins_rust/common/src/lib.rs /^type WAIT = i32;$/;" t +WAIT builtins_rust/kill/src/intercdep.rs /^pub type WAIT = c_int;$/;" t +WAIT builtins_rust/setattr/src/intercdep.rs /^pub type WAIT = c_int;$/;" t +WAIT include/posixwait.h /^typedef int WAIT;$/;" t typeref:typename:int +WAIT include/posixwait.h /^typedef union wait WAIT;$/;" t typeref:union:wait +WAIT r_bash/src/lib.rs /^pub type WAIT = ::std::os::raw::c_int;$/;" t +WAITORTIMERCALLBACK vendor/winapi/src/um/winnt.rs /^pub type WAITORTIMERCALLBACK = WAITORTIMERCALLBACKFUNC;$/;" t +WAITPID jobs.c /^# define WAITPID(/;" d file: +WAITPID jobs.c /^# define WAITPID(/;" d file: +WAITPID jobs.c /^# define WAITPID(/;" d file: +WAITPID nojobs.c /^# define WAITPID(/;" d file: +WAITPID r_jobs/src/lib.rs /^macro_rules! WAITPID {$/;" M +WAIT_RETURN builtins_rust/wait/src/lib.rs /^macro_rules! WAIT_RETURN {$/;" M +WATCH_MAX lib/malloc/watch.c /^#define WATCH_MAX /;" d file: +WBEM_128BITS vendor/winapi/src/um/wbemtran.rs /^pub type WBEM_128BITS = *mut BYTE;$/;" t +WBEM_CWSTR vendor/winapi/src/um/wbemprov.rs /^pub type WBEM_CWSTR = LPCWSTR;$/;" t +WBEM_VARIANT vendor/winapi/src/um/wbemprov.rs /^pub type WBEM_VARIANT = VARIANT;$/;" t +WBEM_WSTR vendor/winapi/src/um/wbemprov.rs /^pub type WBEM_WSTR = LPWSTR;$/;" t +WCHAR vendor/winapi/src/shared/ntdef.rs /^pub type WCHAR = wchar_t;$/;" t +WCHAR vendor/winapi/src/um/winnt.rs /^pub type WCHAR = wchar_t;$/;" t +WCONTINUED jobs.c /^# define WCONTINUED /;" d file: +WCWIDTH lib/readline/rlmbutil.h /^# define WCWIDTH(/;" d +WDCACHESIZE make_cmd.c /^#define WDCACHESIZE /;" d file: +WDOT_OR_DOTDOT general.h /^#define WDOT_OR_DOTDOT(/;" d +WEXITSTATUS include/posixwait.h /^# define WEXITSTATUS(/;" d +WEXITSTATUS include/unionwait.h /^#define WEXITSTATUS(/;" d +WEXITSTATUS r_jobs/src/lib.rs /^macro_rules! WEXITSTATUS {$/;" M +WEXP_ALL subst.c /^#define WEXP_ALL /;" d file: +WEXP_BRACEEXP subst.c /^#define WEXP_BRACEEXP /;" d file: +WEXP_NOVARS subst.c /^#define WEXP_NOVARS /;" d file: +WEXP_PARAMEXP subst.c /^#define WEXP_PARAMEXP /;" d file: +WEXP_PATHEXP subst.c /^#define WEXP_PATHEXP /;" d file: +WEXP_SHELLEXP subst.c /^#define WEXP_SHELLEXP /;" d file: +WEXP_TILDEEXP subst.c /^#define WEXP_TILDEEXP /;" d file: +WEXP_VARASSIGN subst.c /^#define WEXP_VARASSIGN /;" d file: +WFDCancelOpenSession vendor/winapi/src/um/wlanapi.rs /^ pub fn WFDCancelOpenSession($/;" f +WFDCloseHandle vendor/winapi/src/um/wlanapi.rs /^ pub fn WFDCloseHandle($/;" f +WFDCloseSession vendor/winapi/src/um/wlanapi.rs /^ pub fn WFDCloseSession($/;" f +WFDOpenHandle vendor/winapi/src/um/wlanapi.rs /^ pub fn WFDOpenHandle($/;" f +WFDOpenLegacySession vendor/winapi/src/um/wlanapi.rs /^ pub fn WFDOpenLegacySession($/;" f +WFDStartOpenSession vendor/winapi/src/um/wlanapi.rs /^ pub fn WFDStartOpenSession($/;" f +WFDUpdateDeviceVisibility vendor/winapi/src/um/wlanapi.rs /^ pub fn WFDUpdateDeviceVisibility($/;" f +WFD_STATUS_FAILED vendor/winapi/src/shared/windot11.rs /^pub fn WFD_STATUS_FAILED(status: DOT11_WFD_STATUS_CODE) -> bool {$/;" f +WFD_STATUS_SUCCEEDED vendor/winapi/src/shared/windot11.rs /^pub fn WFD_STATUS_SUCCEEDED(status: DOT11_WFD_STATUS_CODE) -> bool {$/;" f +WFOLD subst.c /^#define WFOLD(/;" d file: +WHILE_COM builtins_rust/kill/src/intercdep.rs /^pub type WHILE_COM = while_com;$/;" t +WHILE_COM builtins_rust/setattr/src/intercdep.rs /^pub type WHILE_COM = while_com;$/;" t +WHILE_COM command.h /^} WHILE_COM;$/;" t typeref:struct:while_com +WHILE_COM r_bash/src/lib.rs /^pub type WHILE_COM = while_com;$/;" t +WHILE_COM r_glob/src/lib.rs /^pub type WHILE_COM = while_com;$/;" t +WHILE_COM r_readline/src/lib.rs /^pub type WHILE_COM = while_com;$/;" t +WHITECHAR execute_cmd.c /^# define WHITECHAR(/;" d file: +WHOLLY_QUOTED subst.c /^#define WHOLLY_QUOTED /;" d file: +WICColor vendor/winapi/src/um/wincodec.rs /^pub type WICColor = UINT32;$/;" t +WICConvertBitmapSource vendor/winapi/src/um/wincodec.rs /^ pub fn WICConvertBitmapSource($/;" f +WICCreateBitmapFromSection vendor/winapi/src/um/wincodec.rs /^ pub fn WICCreateBitmapFromSection($/;" f +WICCreateBitmapFromSectionEx vendor/winapi/src/um/wincodec.rs /^ pub fn WICCreateBitmapFromSectionEx($/;" f +WICGetMetadataContentSize vendor/winapi/src/um/wincodecsdk.rs /^ pub fn WICGetMetadataContentSize($/;" f +WICInProcPointer vendor/winapi/src/um/wincodec.rs /^pub type WICInProcPointer = *mut BYTE;$/;" t +WICMapGuidToShortName vendor/winapi/src/um/wincodec.rs /^ pub fn WICMapGuidToShortName($/;" f +WICMapSchemaToName vendor/winapi/src/um/wincodec.rs /^ pub fn WICMapSchemaToName($/;" f +WICMapShortNameToGuid vendor/winapi/src/um/wincodec.rs /^ pub fn WICMapShortNameToGuid($/;" f +WICMatchMetadataContent vendor/winapi/src/um/wincodecsdk.rs /^ pub fn WICMatchMetadataContent($/;" f +WICPixelFormatGUID vendor/winapi/src/um/wincodec.rs /^pub type WICPixelFormatGUID = GUID;$/;" t +WICSerializeMetadataContent vendor/winapi/src/um/wincodecsdk.rs /^ pub fn WICSerializeMetadataContent($/;" f +WIFCONTINUED jobs.c /^# define WIFCONTINUED(/;" d file: +WIFCONTINUED r_jobs/src/lib.rs /^macro_rules! WIFCONTINUED{$/;" M +WIFCORED include/posixwait.h /^# define WIFCORED(/;" d +WIFCORED include/posixwait.h /^# define WIFCORED(/;" d +WIFCORED include/unionwait.h /^#define WIFCORED(/;" d +WIFCORED r_jobs/src/lib.rs /^macro_rules! WIFCORED{$/;" M +WIFEXITED include/posixwait.h /^# define WIFEXITED(/;" d +WIFEXITED include/unionwait.h /^#define WIFEXITED(/;" d +WIFEXITED r_jobs/src/lib.rs /^macro_rules! WIFEXITED {$/;" M +WIFSIGNALED include/posixwait.h /^# define WIFSIGNALED(/;" d +WIFSIGNALED include/unionwait.h /^#define WIFSIGNALED(/;" d +WIFSIGNALED r_jobs/src/lib.rs /^macro_rules! WIFSIGNALED {$/;" M +WIFSTOPPED include/posixwait.h /^# define WIFSTOPPED(/;" d +WIFSTOPPED include/unionwait.h /^#define WIFSTOPPED(/;" d +WIFSTOPPED r_jobs/src/lib.rs /^macro_rules! WIFSTOPPED {$/;" M +WIN32 lib/intl/localcharset.c /^# define WIN32$/;" d file: +WIN32 lib/intl/localename.c /^# define WIN32$/;" d file: +WIN32_LEAN_AND_MEAN lib/intl/localcharset.c /^# define WIN32_LEAN_AND_MEAN$/;" d file: +WIN32_LEAN_AND_MEAN lib/intl/localename.c /^# define WIN32_LEAN_AND_MEAN$/;" d file: +WIN32_LEAN_AND_MEAN lib/readline/histfile.c /^# define WIN32_LEAN_AND_MEAN$/;" d file: +WIN32_LEAN_AND_MEAN lib/readline/input.c /^#define WIN32_LEAN_AND_MEAN /;" d file: +WINHTTP_PROXY_INFOW vendor/winapi/src/um/winhttp.rs /^pub type WINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO;$/;" t +WINSTAENUMPROCA vendor/winapi/src/um/winuser.rs /^pub type WINSTAENUMPROCA = NAMEENUMPROCA;$/;" t +WINSTAENUMPROCW vendor/winapi/src/um/winuser.rs /^pub type WINSTAENUMPROCW = NAMEENUMPROCW;$/;" t +WINUSB_INTERFACE_HANDLE vendor/winapi/src/um/winusb.rs /^pub type WINUSB_INTERFACE_HANDLE = PVOID;$/;" t +WINUSB_ISOCH_BUFFER_HANDLE vendor/winapi/src/um/winusb.rs /^pub type WINUSB_ISOCH_BUFFER_HANDLE = PVOID;$/;" t +WLAN_API_MAKE_VERSION vendor/winapi/src/um/wlanapi.rs /^pub fn WLAN_API_MAKE_VERSION(major: u32, minor: u32) -> u32 {$/;" f +WLAN_API_VERSION_MAJOR vendor/winapi/src/um/wlanapi.rs /^pub fn WLAN_API_VERSION_MAJOR(v: u32) -> u32 {$/;" f +WLAN_API_VERSION_MINOR vendor/winapi/src/um/wlanapi.rs /^pub fn WLAN_API_VERSION_MINOR(v: u32) -> u32 {$/;" f +WLAN_NOTIFICATION_DATA vendor/winapi/src/um/wlanapi.rs /^pub type WLAN_NOTIFICATION_DATA = L2_NOTIFICATION_DATA;$/;" t +WLAN_REASON_CODE vendor/winapi/src/um/wlanapi.rs /^pub type WLAN_REASON_CODE = DWORD;$/;" t +WLAN_SIGNAL_QUALITY vendor/winapi/src/um/wlanapi.rs /^pub type WLAN_SIGNAL_QUALITY = ULONG;$/;" t +WLCACHESIZE make_cmd.c /^#define WLCACHESIZE /;" d file: +WLPAREN subst.c /^#define WLPAREN /;" d file: +WNOHANG include/posixwait.h /^# define WNOHANG /;" d +WNetAddConnection2A vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetAddConnection2A($/;" f +WNetAddConnection2W vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetAddConnection2W($/;" f +WNetAddConnection3A vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetAddConnection3A($/;" f +WNetAddConnection3W vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetAddConnection3W($/;" f +WNetCancelConnection2A vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetCancelConnection2A($/;" f +WNetCancelConnection2W vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetCancelConnection2W($/;" f +WNetCancelConnectionA vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetCancelConnectionA($/;" f +WNetCancelConnectionW vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetCancelConnectionW($/;" f +WNetCloseEnum vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetCloseEnum($/;" f +WNetConnectionDialog vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetConnectionDialog($/;" f +WNetConnectionDialog1A vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetConnectionDialog1A($/;" f +WNetConnectionDialog1W vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetConnectionDialog1W($/;" f +WNetDisconnectDialog vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetDisconnectDialog($/;" f +WNetDisconnectDialog1A vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetDisconnectDialog1A($/;" f +WNetDisconnectDialog1W vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetDisconnectDialog1W($/;" f +WNetEnumResourceA vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetEnumResourceA($/;" f +WNetEnumResourceW vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetEnumResourceW($/;" f +WNetGetConnectionA vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetConnectionA($/;" f +WNetGetConnectionW vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetConnectionW($/;" f +WNetGetLastErrorA vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetLastErrorA($/;" f +WNetGetLastErrorW vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetLastErrorW($/;" f +WNetGetNetworkInformationA vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetNetworkInformationA($/;" f +WNetGetNetworkInformationW vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetNetworkInformationW($/;" f +WNetGetProviderNameA vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetProviderNameA($/;" f +WNetGetProviderNameW vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetProviderNameW($/;" f +WNetGetResourceInformationA vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetResourceInformationA($/;" f +WNetGetResourceInformationW vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetResourceInformationW($/;" f +WNetGetResourceParentA vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetResourceParentA($/;" f +WNetGetResourceParentW vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetResourceParentW($/;" f +WNetGetUniversalNameA vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetUniversalNameA($/;" f +WNetGetUniversalNameW vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetUniversalNameW($/;" f +WNetGetUserA vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetUserA($/;" f +WNetGetUserW vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetGetUserW($/;" f +WNetOpenEnumA vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetOpenEnumA($/;" f +WNetOpenEnumW vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetOpenEnumW($/;" f +WNetUseConnectionA vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetUseConnectionA($/;" f +WNetUseConnectionW vendor/winapi/src/um/winnetwk.rs /^ pub fn WNetUseConnectionW($/;" f +WORD vendor/libloading/src/os/windows/mod.rs /^ pub(super) enum WORD {}$/;" g module:windows_imports +WORD vendor/winapi/src/shared/minwindef.rs /^pub type WORD = c_ushort;$/;" t +WORDDELIM bashline.c /^#define WORDDELIM(/;" d file: +WORD_DESC braces.c /^typedef char *WORD_DESC;$/;" t typeref:typename:char * file: +WORD_DESC command.h /^} WORD_DESC;$/;" t typeref:struct:word_desc +WORD_DESC r_bash/src/lib.rs /^pub type WORD_DESC = word_desc;$/;" t +WORD_DESC r_glob/src/lib.rs /^pub type WORD_DESC = word_desc;$/;" t +WORD_DESC r_readline/src/lib.rs /^pub type WORD_DESC = word_desc;$/;" t +WORD_DESC src/lib.rs /^pub struct WORD_DESC {$/;" s +WORD_LIST braces.c /^typedef char **WORD_LIST;$/;" t typeref:typename:char ** file: +WORD_LIST command.h /^} WORD_LIST;$/;" t typeref:struct:word_list +WORD_LIST r_bash/src/lib.rs /^pub type WORD_LIST = word_list;$/;" t +WORD_LIST r_glob/src/lib.rs /^pub type WORD_LIST = word_list;$/;" t +WORD_LIST r_readline/src/lib.rs /^pub type WORD_LIST = word_list;$/;" t +WORD_LIST src/lib.rs /^pub struct WORD_LIST {$/;" s +WORKS vendor/proc-macro2/src/detection.rs /^static WORKS: AtomicUsize = AtomicUsize::new(0);$/;" v +WPARAM vendor/winapi/src/shared/minwindef.rs /^pub type WPARAM = UINT_PTR;$/;" t +WPUCloseEvent vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUCloseEvent($/;" f +WPUCloseSocketHandle vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUCloseSocketHandle($/;" f +WPUCloseThread vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUCloseThread($/;" f +WPUCompleteOverlappedRequest vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUCompleteOverlappedRequest($/;" f +WPUCreateEvent vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUCreateEvent($/;" f +WPUCreateSocketHandle vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUCreateSocketHandle($/;" f +WPUFDIsSet vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUFDIsSet($/;" f +WPUGetProviderPath vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUGetProviderPath($/;" f +WPUModifyIFSHandle vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUModifyIFSHandle($/;" f +WPUOpenCurrentThread vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUOpenCurrentThread($/;" f +WPUPostMessage vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUPostMessage($/;" f +WPUQueryBlockingCallback vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUQueryBlockingCallback($/;" f +WPUQuerySocketHandleContext vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUQuerySocketHandleContext($/;" f +WPUQueueApc vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUQueueApc($/;" f +WPUResetEvent vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUResetEvent($/;" f +WPUSetEvent vendor/winapi/src/um/ws2spi.rs /^ pub fn WPUSetEvent($/;" f +WRAP_OFFSET lib/readline/display.c /^#define WRAP_OFFSET(/;" d file: +WRITE_REDIRECT command.h /^#define WRITE_REDIRECT(/;" d +WRPAREN subst.c /^#define WRPAREN /;" d file: +WSAAccept vendor/winapi/src/um/winsock2.rs /^ pub fn WSAAccept($/;" f +WSAAddressToStringA vendor/winapi/src/um/winsock2.rs /^ pub fn WSAAddressToStringA($/;" f +WSAAddressToStringW vendor/winapi/src/um/winsock2.rs /^ pub fn WSAAddressToStringW($/;" f +WSAAdvertiseProvider vendor/winapi/src/um/ws2spi.rs /^ pub fn WSAAdvertiseProvider($/;" f +WSAAsyncGetHostByAddr vendor/winapi/src/um/winsock2.rs /^ pub fn WSAAsyncGetHostByAddr($/;" f +WSAAsyncGetHostByName vendor/winapi/src/um/winsock2.rs /^ pub fn WSAAsyncGetHostByName($/;" f +WSAAsyncGetProtoByName vendor/winapi/src/um/winsock2.rs /^ pub fn WSAAsyncGetProtoByName($/;" f +WSAAsyncGetProtoByNumber vendor/winapi/src/um/winsock2.rs /^ pub fn WSAAsyncGetProtoByNumber($/;" f +WSAAsyncGetServByName vendor/winapi/src/um/winsock2.rs /^ pub fn WSAAsyncGetServByName($/;" f +WSAAsyncGetServByPort vendor/winapi/src/um/winsock2.rs /^ pub fn WSAAsyncGetServByPort($/;" f +WSAAsyncSelect vendor/winapi/src/um/winsock2.rs /^ pub fn WSAAsyncSelect($/;" f +WSACancelAsyncRequest vendor/winapi/src/um/winsock2.rs /^ pub fn WSACancelAsyncRequest($/;" f +WSACancelBlockingCall vendor/winapi/src/um/winsock2.rs /^ pub fn WSACancelBlockingCall() -> c_int;$/;" f +WSACleanup vendor/winapi/src/um/winsock2.rs /^ pub fn WSACleanup() -> c_int;$/;" f +WSACloseEvent vendor/winapi/src/um/winsock2.rs /^ pub fn WSACloseEvent($/;" f +WSAConnect vendor/winapi/src/um/winsock2.rs /^ pub fn WSAConnect($/;" f +WSAConnectByList vendor/winapi/src/um/winsock2.rs /^ pub fn WSAConnectByList($/;" f +WSAConnectByNameA vendor/winapi/src/um/winsock2.rs /^ pub fn WSAConnectByNameA($/;" f +WSAConnectByNameW vendor/winapi/src/um/winsock2.rs /^ pub fn WSAConnectByNameW($/;" f +WSACreateEvent vendor/winapi/src/um/winsock2.rs /^ pub fn WSACreateEvent() -> WSAEVENT;$/;" f +WSADeleteSocketPeerTargetName vendor/winapi/src/um/ws2tcpip.rs /^ pub fn WSADeleteSocketPeerTargetName($/;" f +WSADuplicateSocketA vendor/winapi/src/um/winsock2.rs /^ pub fn WSADuplicateSocketA($/;" f +WSADuplicateSocketW vendor/winapi/src/um/winsock2.rs /^ pub fn WSADuplicateSocketW($/;" f +WSAEVENT vendor/winapi/src/um/winsock2.rs /^pub type WSAEVENT = HANDLE;$/;" t +WSAEnumNameSpaceProvidersA vendor/winapi/src/um/winsock2.rs /^ pub fn WSAEnumNameSpaceProvidersA($/;" f +WSAEnumNameSpaceProvidersExA vendor/winapi/src/um/winsock2.rs /^ pub fn WSAEnumNameSpaceProvidersExA($/;" f +WSAEnumNameSpaceProvidersExW vendor/winapi/src/um/winsock2.rs /^ pub fn WSAEnumNameSpaceProvidersExW($/;" f +WSAEnumNameSpaceProvidersW vendor/winapi/src/um/winsock2.rs /^ pub fn WSAEnumNameSpaceProvidersW($/;" f +WSAEnumNetworkEvents vendor/winapi/src/um/winsock2.rs /^ pub fn WSAEnumNetworkEvents($/;" f +WSAEnumProtocolsA vendor/winapi/src/um/winsock2.rs /^ pub fn WSAEnumProtocolsA($/;" f +WSAEnumProtocolsW vendor/winapi/src/um/winsock2.rs /^ pub fn WSAEnumProtocolsW($/;" f +WSAEventSelect vendor/winapi/src/um/winsock2.rs /^ pub fn WSAEventSelect($/;" f +WSAGETASYNCBUFLEN vendor/winapi/src/um/winsock2.rs /^pub fn WSAGETASYNCBUFLEN(lParam: DWORD) -> WORD {$/;" f +WSAGETASYNCERROR vendor/winapi/src/um/winsock2.rs /^pub fn WSAGETASYNCERROR(lParam: DWORD) -> WORD {$/;" f +WSAGETSELECTERROR vendor/winapi/src/um/winsock2.rs /^pub fn WSAGETSELECTERROR(lParam: DWORD) -> WORD {$/;" f +WSAGETSELECTEVENT vendor/winapi/src/um/winsock2.rs /^pub fn WSAGETSELECTEVENT(lParam: DWORD) -> WORD {$/;" f +WSAGetLastError vendor/winapi/src/um/winsock2.rs /^ pub fn WSAGetLastError() -> c_int;$/;" f +WSAGetOverlappedResult vendor/winapi/src/um/winsock2.rs /^ pub fn WSAGetOverlappedResult($/;" f +WSAGetQOSByName vendor/winapi/src/um/winsock2.rs /^ pub fn WSAGetQOSByName($/;" f +WSAGetServiceClassInfoA vendor/winapi/src/um/winsock2.rs /^ pub fn WSAGetServiceClassInfoA($/;" f +WSAGetServiceClassInfoW vendor/winapi/src/um/winsock2.rs /^ pub fn WSAGetServiceClassInfoW($/;" f +WSAGetServiceClassNameByClassIdA vendor/winapi/src/um/winsock2.rs /^ pub fn WSAGetServiceClassNameByClassIdA($/;" f +WSAGetServiceClassNameByClassIdW vendor/winapi/src/um/winsock2.rs /^ pub fn WSAGetServiceClassNameByClassIdW($/;" f +WSAHtonl vendor/winapi/src/um/winsock2.rs /^ pub fn WSAHtonl($/;" f +WSAHtons vendor/winapi/src/um/winsock2.rs /^ pub fn WSAHtons(s: SOCKET,$/;" f +WSAImpersonateSocketPeer vendor/winapi/src/um/ws2tcpip.rs /^ pub fn WSAImpersonateSocketPeer($/;" f +WSAInstallServiceClassA vendor/winapi/src/um/winsock2.rs /^ pub fn WSAInstallServiceClassA($/;" f +WSAInstallServiceClassW vendor/winapi/src/um/winsock2.rs /^ pub fn WSAInstallServiceClassW($/;" f +WSAIoctl vendor/winapi/src/um/winsock2.rs /^ pub fn WSAIoctl($/;" f +WSAIsBlocking vendor/winapi/src/um/winsock2.rs /^ pub fn WSAIsBlocking() -> BOOL;$/;" f +WSAJoinLeaf vendor/winapi/src/um/winsock2.rs /^ pub fn WSAJoinLeaf($/;" f +WSALookupServiceBeginA vendor/winapi/src/um/winsock2.rs /^ pub fn WSALookupServiceBeginA($/;" f +WSALookupServiceBeginW vendor/winapi/src/um/winsock2.rs /^ pub fn WSALookupServiceBeginW($/;" f +WSALookupServiceEnd vendor/winapi/src/um/winsock2.rs /^ pub fn WSALookupServiceEnd($/;" f +WSALookupServiceNextA vendor/winapi/src/um/winsock2.rs /^ pub fn WSALookupServiceNextA($/;" f +WSALookupServiceNextW vendor/winapi/src/um/winsock2.rs /^ pub fn WSALookupServiceNextW($/;" f +WSAMAKEASYNCREPLY vendor/winapi/src/um/winsock2.rs /^pub fn WSAMAKEASYNCREPLY(buflen: WORD, error: WORD) -> LONG {$/;" f +WSAMAKESELECTREPLY vendor/winapi/src/um/winsock2.rs /^pub fn WSAMAKESELECTREPLY(event: WORD, error: WORD) -> LONG {$/;" f +WSANSPIoctl vendor/winapi/src/um/winsock2.rs /^ pub fn WSANSPIoctl($/;" f +WSANtohl vendor/winapi/src/um/winsock2.rs /^ pub fn WSANtohl($/;" f +WSANtohs vendor/winapi/src/um/winsock2.rs /^ pub fn WSANtohs($/;" f +WSAOVERLAPPED vendor/winapi/src/um/winsock2.rs /^pub type WSAOVERLAPPED = OVERLAPPED;$/;" t +WSAPoll vendor/winapi/src/um/winsock2.rs /^ pub fn WSAPoll($/;" f +WSAProviderCompleteAsyncCall vendor/winapi/src/um/ws2spi.rs /^ pub fn WSAProviderCompleteAsyncCall($/;" f +WSAProviderConfigChange vendor/winapi/src/um/winsock2.rs /^ pub fn WSAProviderConfigChange($/;" f +WSAQuerySocketSecurity vendor/winapi/src/um/ws2tcpip.rs /^ pub fn WSAQuerySocketSecurity($/;" f +WSARecv vendor/winapi/src/um/winsock2.rs /^ pub fn WSARecv($/;" f +WSARecvDisconnect vendor/winapi/src/um/winsock2.rs /^ pub fn WSARecvDisconnect($/;" f +WSARecvEx vendor/winapi/src/um/mswsock.rs /^ pub fn WSARecvEx($/;" f +WSARecvFrom vendor/winapi/src/um/winsock2.rs /^ pub fn WSARecvFrom($/;" f +WSARemoveServiceClass vendor/winapi/src/um/winsock2.rs /^ pub fn WSARemoveServiceClass($/;" f +WSAResetEvent vendor/winapi/src/um/winsock2.rs /^ pub fn WSAResetEvent($/;" f +WSARevertImpersonation vendor/winapi/src/um/ws2tcpip.rs /^ pub fn WSARevertImpersonation();$/;" f +WSASend vendor/winapi/src/um/winsock2.rs /^ pub fn WSASend($/;" f +WSASendDisconnect vendor/winapi/src/um/winsock2.rs /^ pub fn WSASendDisconnect($/;" f +WSASendMsg vendor/winapi/src/um/winsock2.rs /^ pub fn WSASendMsg($/;" f +WSASendTo vendor/winapi/src/um/winsock2.rs /^ pub fn WSASendTo($/;" f +WSASetBlockingHook vendor/winapi/src/um/winsock2.rs /^ pub fn WSASetBlockingHook($/;" f +WSASetEvent vendor/winapi/src/um/winsock2.rs /^ pub fn WSASetEvent($/;" f +WSASetLastError vendor/winapi/src/um/winsock2.rs /^ pub fn WSASetLastError($/;" f +WSASetServiceA vendor/winapi/src/um/winsock2.rs /^ pub fn WSASetServiceA($/;" f +WSASetServiceW vendor/winapi/src/um/winsock2.rs /^ pub fn WSASetServiceW($/;" f +WSASetSocketPeerTargetName vendor/winapi/src/um/ws2tcpip.rs /^ pub fn WSASetSocketPeerTargetName($/;" f +WSASetSocketSecurity vendor/winapi/src/um/ws2tcpip.rs /^ pub fn WSASetSocketSecurity($/;" f +WSASocketA vendor/winapi/src/um/winsock2.rs /^ pub fn WSASocketA($/;" f +WSASocketW vendor/winapi/src/um/winsock2.rs /^ pub fn WSASocketW($/;" f +WSAStartup vendor/winapi/src/um/winsock2.rs /^ pub fn WSAStartup($/;" f +WSAStringToAddressA vendor/winapi/src/um/winsock2.rs /^ pub fn WSAStringToAddressA($/;" f +WSAStringToAddressW vendor/winapi/src/um/winsock2.rs /^ pub fn WSAStringToAddressW($/;" f +WSAUnadvertiseProvider vendor/winapi/src/um/ws2spi.rs /^ pub fn WSAUnadvertiseProvider($/;" f +WSAUnhookBlockingHook vendor/winapi/src/um/winsock2.rs /^ pub fn WSAUnhookBlockingHook() -> c_int;$/;" f +WSAWaitForMultipleEvents vendor/winapi/src/um/winsock2.rs /^ pub fn WSAWaitForMultipleEvents($/;" f +WSBUF_INC lib/glob/xmbsrtowcs.c /^#define WSBUF_INC /;" d file: +WSCDeinstallProvider vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCDeinstallProvider($/;" f +WSCDeinstallProvider32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCDeinstallProvider32($/;" f +WSCEnableNSProvider vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCEnableNSProvider($/;" f +WSCEnableNSProvider32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCEnableNSProvider32($/;" f +WSCEnumNameSpaceProviders32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCEnumNameSpaceProviders32($/;" f +WSCEnumNameSpaceProvidersEx32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCEnumNameSpaceProvidersEx32($/;" f +WSCEnumProtocols vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCEnumProtocols($/;" f +WSCEnumProtocols32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCEnumProtocols32($/;" f +WSCGetApplicationCategory vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCGetApplicationCategory($/;" f +WSCGetProviderInfo vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCGetProviderInfo($/;" f +WSCGetProviderInfo32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCGetProviderInfo32($/;" f +WSCGetProviderPath vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCGetProviderPath($/;" f +WSCGetProviderPath32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCGetProviderPath32($/;" f +WSCInstallNameSpace vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCInstallNameSpace($/;" f +WSCInstallNameSpace32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCInstallNameSpace32($/;" f +WSCInstallNameSpaceEx vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCInstallNameSpaceEx($/;" f +WSCInstallNameSpaceEx32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCInstallNameSpaceEx32($/;" f +WSCInstallProvider vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCInstallProvider($/;" f +WSCInstallProvider64_32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCInstallProvider64_32($/;" f +WSCInstallProviderAndChains vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCInstallProviderAndChains($/;" f +WSCInstallProviderAndChains64_32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCInstallProviderAndChains64_32($/;" f +WSCSetApplicationCategory vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCSetApplicationCategory($/;" f +WSCSetProviderInfo vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCSetProviderInfo($/;" f +WSCSetProviderInfo32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCSetProviderInfo32($/;" f +WSCUnInstallNameSpace vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCUnInstallNameSpace($/;" f +WSCUnInstallNameSpace32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCUnInstallNameSpace32($/;" f +WSCUpdateProvider vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCUpdateProvider($/;" f +WSCUpdateProvider32 vendor/winapi/src/um/ws2spi.rs /^ pub fn WSCUpdateProvider32($/;" f +WSCWriteNameSpaceOrder vendor/winapi/src/um/sporder.rs /^ pub fn WSCWriteNameSpaceOrder($/;" f +WSCWriteNameSpaceOrder32 vendor/winapi/src/um/sporder.rs /^ pub fn WSCWriteNameSpaceOrder32($/;" f +WSCWriteProviderOrder vendor/winapi/src/um/sporder.rs /^ pub fn WSCWriteProviderOrder($/;" f +WSCWriteProviderOrder32 vendor/winapi/src/um/sporder.rs /^ pub fn WSCWriteProviderOrder32($/;" f +WSPStartup vendor/winapi/src/um/ws2spi.rs /^ pub fn WSPStartup($/;" f +WSTATUS include/posixwait.h /^# define WSTATUS(/;" d +WSTATUS r_jobs/src/lib.rs /^macro_rules! WSTATUS{$/;" M +WSTOPPED include/unionwait.h /^#define WSTOPPED /;" d +WSTOPSIG include/posixwait.h /^# define WSTOPSIG(/;" d +WSTOPSIG include/unionwait.h /^#define WSTOPSIG(/;" d +WSTOPSIG r_jobs/src/lib.rs /^macro_rules! WSTOPSIG {$/;" M +WTERMSIG include/posixwait.h /^# define WTERMSIG(/;" d +WTERMSIG include/unionwait.h /^#define WTERMSIG(/;" d +WTERMSIG r_jobs/src/lib.rs /^macro_rules! WTERMSIG {$/;" M +WTSGetActiveConsoleSessionId vendor/winapi/src/um/winbase.rs /^ pub fn WTSGetActiveConsoleSessionId() -> DWORD;$/;" f +WTSQueryUserToken vendor/winapi/src/um/wtsapi32.rs /^ pub fn WTSQueryUserToken(SessionId: ULONG, phToken: PHANDLE) -> BOOL;$/;" f +WT_SET_MAX_THREADPOOL_THREADS vendor/winapi/src/um/winnt.rs /^pub fn WT_SET_MAX_THREADPOOL_THREADS(Flags: ULONG, Limit: ULONG) -> ULONG {$/;" f +WUNTRACED include/posixwait.h /^# define WUNTRACED /;" d +W_ALLOC lib/malloc/watch.h /^#define W_ALLOC /;" d +W_ARRAYIND command.h /^#define W_ARRAYIND /;" d +W_ASSIGNARG command.h /^#define W_ASSIGNARG /;" d +W_ASSIGNARRAY command.h /^#define W_ASSIGNARRAY /;" d +W_ASSIGNASSOC command.h /^#define W_ASSIGNASSOC /;" d +W_ASSIGNMENT command.h /^#define W_ASSIGNMENT /;" d +W_ASSIGNRHS command.h /^#define W_ASSIGNRHS /;" d +W_ASSNBLTIN command.h /^#define W_ASSNBLTIN /;" d +W_ASSNGLOBAL command.h /^#define W_ASSNGLOBAL /;" d +W_CHKLOCAL command.h /^#define W_CHKLOCAL /;" d +W_COMPASSIGN builtins_rust/declare/src/lib.rs /^macro_rules! W_COMPASSIGN {$/;" M +W_COMPASSIGN command.h /^#define W_COMPASSIGN /;" d +W_COMPLETE command.h /^#define W_COMPLETE /;" d +W_DOLLARAT command.h /^#define W_DOLLARAT /;" d +W_DOLLARSTAR command.h /^#define W_DOLLARSTAR /;" d +W_DQUOTE command.h /^#define W_DQUOTE /;" d +W_EXPANDRHS command.h /^#define W_EXPANDRHS /;" d +W_FORCELOCAL command.h /^#define W_FORCELOCAL /;" d +W_FREE lib/malloc/watch.h /^#define W_FREE /;" d +W_HASDOLLAR command.h /^#define W_HASDOLLAR /;" d +W_HASQUOTEDNULL command.h /^#define W_HASQUOTEDNULL /;" d +W_ITILDE command.h /^#define W_ITILDE /;" d +W_NOASSNTILDE command.h /^#define W_NOASSNTILDE /;" d +W_NOBRACE command.h /^#define W_NOBRACE /;" d +W_NOCOMSUB command.h /^#define W_NOCOMSUB /;" d +W_NOGLOB command.h /^#define W_NOGLOB /;" d +W_NOPROCSUB command.h /^#define W_NOPROCSUB /;" d +W_NOSPLIT command.h /^#define W_NOSPLIT /;" d +W_NOSPLIT2 command.h /^#define W_NOSPLIT2 /;" d +W_NOTILDE command.h /^#define W_NOTILDE /;" d +W_OFFSET lib/readline/display.c /^#define W_OFFSET(/;" d file: +W_OK lib/sh/eaccess.c /^#define W_OK /;" d file: +W_OK test.c /^#define W_OK /;" d file: +W_QUOTED command.h /^#define W_QUOTED /;" d +W_REALLOC lib/malloc/watch.h /^#define W_REALLOC /;" d +W_RESIZED lib/malloc/watch.h /^#define W_RESIZED /;" d +W_SAWQUOTEDNULL command.h /^#define W_SAWQUOTEDNULL /;" d +W_SPLITSPACE command.h /^#define W_SPLITSPACE /;" d +W_TILDEEXP command.h /^#define W_TILDEEXP /;" d +WaitCmd builtins_rust/exec_cmd/src/lib.rs /^ WaitCmd,$/;" e enum:CMDType +WaitComand builtins_rust/exec_cmd/src/lib.rs /^impl CommandExec for WaitComand {$/;" c +WaitComand builtins_rust/exec_cmd/src/lib.rs /^struct WaitComand;$/;" s +WaitCommEvent vendor/winapi/src/um/commapi.rs /^ pub fn WaitCommEvent($/;" f +WaitForDebugEvent vendor/winapi/src/um/debugapi.rs /^ pub fn WaitForDebugEvent($/;" f +WaitForDebugEventEx vendor/winapi/src/um/debugapi.rs /^ pub fn WaitForDebugEventEx($/;" f +WaitForInputIdle vendor/winapi/src/um/winuser.rs /^ pub fn WaitForInputIdle($/;" f +WaitForMultipleObjects vendor/winapi/src/um/synchapi.rs /^ pub fn WaitForMultipleObjects($/;" f +WaitForMultipleObjectsEx vendor/winapi/src/um/synchapi.rs /^ pub fn WaitForMultipleObjectsEx($/;" f +WaitForPrinterChange vendor/winapi/src/um/winspool.rs /^ pub fn WaitForPrinterChange($/;" f +WaitForSingleObject vendor/winapi/src/um/synchapi.rs /^ pub fn WaitForSingleObject($/;" f +WaitForSingleObjectEx vendor/winapi/src/um/synchapi.rs /^ pub fn WaitForSingleObjectEx($/;" f +WaitForThreadpoolIoCallbacks vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn WaitForThreadpoolIoCallbacks($/;" f +WaitForThreadpoolTimerCallbacks vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn WaitForThreadpoolTimerCallbacks($/;" f +WaitForThreadpoolWaitCallbacks vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn WaitForThreadpoolWaitCallbacks($/;" f +WaitForThreadpoolWorkCallbacks vendor/winapi/src/um/threadpoolapiset.rs /^ pub fn WaitForThreadpoolWorkCallbacks($/;" f +WaitMessage vendor/winapi/src/um/winuser.rs /^ pub fn WaitMessage() -> BOOL;$/;" f +WaitNamedPipeA vendor/winapi/src/um/winbase.rs /^ pub fn WaitNamedPipeA($/;" f +WaitNamedPipeW vendor/winapi/src/um/namedpipeapi.rs /^ pub fn WaitNamedPipeW($/;" f +WaitOnAddress vendor/winapi/src/um/synchapi.rs /^ pub fn WaitOnAddress($/;" f +WaitServiceState vendor/winapi/src/um/winsvc.rs /^ pub fn WaitServiceState ($/;" f +WaitStatus vendor/nix/src/sys/wait.rs /^impl WaitStatus {$/;" c +WaitStatus vendor/nix/src/sys/wait.rs /^pub enum WaitStatus {$/;" g +Waiter vendor/futures-util/src/lock/mutex.rs /^enum Waiter {$/;" g +Waiter vendor/futures-util/src/lock/mutex.rs /^impl Waiter {$/;" c +Waiter vendor/once_cell/src/imp_std.rs /^struct Waiter {$/;" s +Waiting vendor/futures-util/src/lock/mutex.rs /^ Waiting(Waker),$/;" e enum:Waiter +WakeAllConditionVariable vendor/winapi/src/um/synchapi.rs /^ pub fn WakeAllConditionVariable($/;" f +WakeByAddressAll vendor/winapi/src/um/synchapi.rs /^ pub fn WakeByAddressAll($/;" f +WakeByAddressSingle vendor/winapi/src/um/synchapi.rs /^ pub fn WakeByAddressSingle($/;" f +WakeConditionVariable vendor/winapi/src/um/synchapi.rs /^ pub fn WakeConditionVariable($/;" f +WakeHandle vendor/futures-executor/src/thread_pool.rs /^impl ArcWake for WakeHandle {$/;" c +WakeHandle vendor/futures-executor/src/thread_pool.rs /^struct WakeHandle {$/;" s +Waker vendor/futures-core/src/task/__internal/atomic_waker.rs /^ impl AssertSync for Waker {}$/;" c method:AtomicWaker::new +WakerRef vendor/futures-task/src/waker_ref.rs /^impl Deref for WakerRef<'_> {$/;" c +WakerRef vendor/futures-task/src/waker_ref.rs /^impl<'a> WakerRef<'a> {$/;" c +WakerRef vendor/futures-task/src/waker_ref.rs /^pub struct WakerRef<'a> {$/;" s +WakerToHandle vendor/futures-util/src/compat/compat01as03.rs /^struct WakerToHandle<'a>(&'a task03::Waker);$/;" s +Wanpipe vendor/nix/src/sys/socket/addr.rs /^ Wanpipe = libc::AF_WANPIPE,$/;" e enum:AddressFamily +Warg builtins_rust/complete/src/lib.rs /^pub static mut Warg: *mut c_char = std::ptr::null_mut();$/;" v +WatchDescriptor vendor/nix/src/sys/inotify.rs /^pub struct WatchDescriptor {$/;" s +WeakShared vendor/futures-util/src/future/future/shared.rs /^impl Clone for WeakShared {$/;" c +WeakShared vendor/futures-util/src/future/future/shared.rs /^impl WeakShared {$/;" c +WeakShared vendor/futures-util/src/future/future/shared.rs /^impl fmt::Debug for WeakShared {$/;" c +WeakShared vendor/futures-util/src/future/future/shared.rs /^pub struct WeakShared(Weak>);$/;" s +WerAddExcludedApplication vendor/winapi/src/um/werapi.rs /^ pub fn WerAddExcludedApplication($/;" f +WerGetFlags vendor/winapi/src/um/werapi.rs /^ pub fn WerGetFlags($/;" f +WerRegisterFile vendor/winapi/src/um/werapi.rs /^ pub fn WerRegisterFile($/;" f +WerRegisterMemoryBlock vendor/winapi/src/um/werapi.rs /^ pub fn WerRegisterMemoryBlock($/;" f +WerRegisterRuntimeExceptionModule vendor/winapi/src/um/werapi.rs /^ pub fn WerRegisterRuntimeExceptionModule($/;" f +WerRemoveExcludedApplication vendor/winapi/src/um/werapi.rs /^ pub fn WerRemoveExcludedApplication($/;" f +WerSetFlags vendor/winapi/src/um/werapi.rs /^ pub fn WerSetFlags($/;" f +WerUnregisterFile vendor/winapi/src/um/werapi.rs /^ pub fn WerUnregisterFile($/;" f +WerUnregisterMemoryBlock vendor/winapi/src/um/werapi.rs /^ pub fn WerUnregisterMemoryBlock($/;" f +WerUnregisterRuntimeExceptionModule vendor/winapi/src/um/werapi.rs /^ pub fn WerUnregisterRuntimeExceptionModule($/;" f +What vendor/thiserror/tests/ui/unexpected-field-fmt.rs /^ What {$/;" e enum:Error +WhereClause vendor/syn/src/gen/clone.rs /^impl Clone for WhereClause {$/;" c +WhereClause vendor/syn/src/gen/debug.rs /^impl Debug for WhereClause {$/;" c +WhereClause vendor/syn/src/gen/eq.rs /^impl Eq for WhereClause {}$/;" c +WhereClause vendor/syn/src/gen/eq.rs /^impl PartialEq for WhereClause {$/;" c +WhereClause vendor/syn/src/gen/hash.rs /^impl Hash for WhereClause {$/;" c +WhereClause vendor/syn/src/generics.rs /^ impl Parse for WhereClause {$/;" c module:parsing +WhereClause vendor/syn/src/generics.rs /^ impl ToTokens for WhereClause {$/;" c module:printing +WhereClauseLocation vendor/syn/src/item.rs /^ enum WhereClauseLocation {$/;" g module:parsing +WherePredicate vendor/syn/src/gen/clone.rs /^impl Clone for WherePredicate {$/;" c +WherePredicate vendor/syn/src/gen/debug.rs /^impl Debug for WherePredicate {$/;" c +WherePredicate vendor/syn/src/gen/eq.rs /^impl Eq for WherePredicate {}$/;" c +WherePredicate vendor/syn/src/gen/eq.rs /^impl PartialEq for WherePredicate {$/;" c +WherePredicate vendor/syn/src/gen/hash.rs /^impl Hash for WherePredicate {$/;" c +WherePredicate vendor/syn/src/generics.rs /^ impl Parse for WherePredicate {$/;" c module:parsing +While command.h /^ struct while_com *While;$/;" m union:command::__anon3aaf009a020a typeref:struct:while_com * +Why am I getting errors about unresolved imports? vendor/winapi/README.md /^### Why am I getting errors about unresolved imports?$/;" S section:winapi-rs""Frequently asked questions +Why is `winapi`'s `HANDLE` incompatible with `std`'s `HANDLE`? vendor/winapi/README.md /^### Why is `winapi`'s `HANDLE` incompatible with `std`'s `HANDLE`?$/;" S section:winapi-rs""Frequently asked questions +Why is there no documentation on how to use anything? vendor/winapi/README.md /^### Why is there no documentation on how to use anything?$/;" S section:winapi-rs""Frequently asked questions +WideCharToMultiByte vendor/winapi/src/um/stringapiset.rs /^ pub fn WideCharToMultiByte($/;" f +WidenPath vendor/winapi/src/um/wingdi.rs /^ pub fn WidenPath($/;" f +WinExec vendor/winapi/src/um/winbase.rs /^ pub fn WinExec($/;" f +WinHelpA vendor/winapi/src/um/winuser.rs /^ pub fn WinHelpA($/;" f +WinHelpW vendor/winapi/src/um/winuser.rs /^ pub fn WinHelpW($/;" f +WinHttpAddRequestHeaders vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpAddRequestHeaders($/;" f +WinHttpCheckPlatform vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpCheckPlatform() -> BOOL;$/;" f +WinHttpCloseHandle vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpCloseHandle($/;" f +WinHttpConnect vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpConnect($/;" f +WinHttpCrackUrl vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpCrackUrl($/;" f +WinHttpCreateProxyResolver vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpCreateProxyResolver($/;" f +WinHttpCreateUrl vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpCreateUrl($/;" f +WinHttpDetectAutoProxyConfigUrl vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpDetectAutoProxyConfigUrl($/;" f +WinHttpFreeProxyResult vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpFreeProxyResult($/;" f +WinHttpGetDefaultProxyConfiguration vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpGetDefaultProxyConfiguration($/;" f +WinHttpGetIEProxyConfigForCurrentUser vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpGetIEProxyConfigForCurrentUser($/;" f +WinHttpGetProxyForUrl vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpGetProxyForUrl($/;" f +WinHttpGetProxyForUrlEx vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpGetProxyForUrlEx($/;" f +WinHttpGetProxyResult vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpGetProxyResult($/;" f +WinHttpOpen vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpOpen($/;" f +WinHttpOpenRequest vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpOpenRequest($/;" f +WinHttpQueryAuthSchemes vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpQueryAuthSchemes($/;" f +WinHttpQueryDataAvailable vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpQueryDataAvailable($/;" f +WinHttpQueryHeaders vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpQueryHeaders($/;" f +WinHttpQueryOption vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpQueryOption($/;" f +WinHttpReadData vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpReadData($/;" f +WinHttpReceiveResponse vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpReceiveResponse($/;" f +WinHttpResetAutoProxy vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpResetAutoProxy($/;" f +WinHttpSendRequest vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpSendRequest($/;" f +WinHttpSetCredentials vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpSetCredentials($/;" f +WinHttpSetDefaultProxyConfiguration vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpSetDefaultProxyConfiguration($/;" f +WinHttpSetOption vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpSetOption($/;" f +WinHttpSetStatusCallback vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpSetStatusCallback($/;" f +WinHttpSetTimeouts vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpSetTimeouts($/;" f +WinHttpTimeFromSystemTime vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpTimeFromSystemTime($/;" f +WinHttpTimeToSystemTime vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpTimeToSystemTime($/;" f +WinHttpWebSocketClose vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpWebSocketClose($/;" f +WinHttpWebSocketCompleteUpgrade vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpWebSocketCompleteUpgrade($/;" f +WinHttpWebSocketQueryCloseStatus vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpWebSocketQueryCloseStatus($/;" f +WinHttpWebSocketReceive vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpWebSocketReceive($/;" f +WinHttpWebSocketSend vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpWebSocketSend($/;" f +WinHttpWebSocketShutdown vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpWebSocketShutdown($/;" f +WinHttpWriteData vendor/winapi/src/um/winhttp.rs /^ pub fn WinHttpWriteData($/;" f +WinUsb_AbortPipe vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_AbortPipe($/;" f +WinUsb_ControlTransfer vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_ControlTransfer($/;" f +WinUsb_FlushPipe vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_FlushPipe($/;" f +WinUsb_Free vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_Free($/;" f +WinUsb_GetAdjustedFrameNumber vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_GetAdjustedFrameNumber($/;" f +WinUsb_GetAssociatedInterface vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_GetAssociatedInterface($/;" f +WinUsb_GetCurrentAlternateSetting vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_GetCurrentAlternateSetting($/;" f +WinUsb_GetCurrentFrameNumber vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_GetCurrentFrameNumber($/;" f +WinUsb_GetDescriptor vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_GetDescriptor($/;" f +WinUsb_GetOverlappedResult vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_GetOverlappedResult($/;" f +WinUsb_GetPipePolicy vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_GetPipePolicy($/;" f +WinUsb_GetPowerPolicy vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_GetPowerPolicy($/;" f +WinUsb_Initialize vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_Initialize($/;" f +WinUsb_ParseConfigurationDescriptor vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_ParseConfigurationDescriptor($/;" f +WinUsb_ParseDescriptors vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_ParseDescriptors($/;" f +WinUsb_QueryDeviceInformation vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_QueryDeviceInformation($/;" f +WinUsb_QueryInterfaceSettings vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_QueryInterfaceSettings($/;" f +WinUsb_QueryPipe vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_QueryPipe($/;" f +WinUsb_QueryPipeEx vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_QueryPipeEx($/;" f +WinUsb_ReadIsochPipe vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_ReadIsochPipe($/;" f +WinUsb_ReadIsochPipeAsap vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_ReadIsochPipeAsap($/;" f +WinUsb_ReadPipe vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_ReadPipe($/;" f +WinUsb_RegisterIsochBuffer vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_RegisterIsochBuffer($/;" f +WinUsb_ResetPipe vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_ResetPipe($/;" f +WinUsb_SetCurrentAlternateSetting vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_SetCurrentAlternateSetting($/;" f +WinUsb_SetPipePolicy vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_SetPipePolicy($/;" f +WinUsb_SetPowerPolicy vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_SetPowerPolicy($/;" f +WinUsb_UnregisterIsochBuffer vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_UnregisterIsochBuffer($/;" f +WinUsb_WriteIsochPipe vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_WriteIsochPipe($/;" f +WinUsb_WriteIsochPipeAsap vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_WriteIsochPipeAsap($/;" f +WinUsb_WritePipe vendor/winapi/src/um/winusb.rs /^ pub fn WinUsb_WritePipe($/;" f +WinVerifyTrust vendor/winapi/src/um/wintrust.rs /^ pub fn WinVerifyTrust(hwnd: HWND, pgActionID: *mut GUID, pWVTData: LPVOID) -> LONG;$/;" f +Window vendor/futures-util/src/io/window.rs /^impl> AsMut<[u8]> for Window {$/;" c +Window vendor/futures-util/src/io/window.rs /^impl> AsRef<[u8]> for Window {$/;" c +Window vendor/futures-util/src/io/window.rs /^impl> Window {$/;" c +Window vendor/futures-util/src/io/window.rs /^pub struct Window {$/;" s +WindowFromDC vendor/winapi/src/um/winuser.rs /^ pub fn WindowFromDC($/;" f +WindowFromPhysicalPoint vendor/winapi/src/um/winuser.rs /^ pub fn WindowFromPhysicalPoint($/;" f +WindowFromPoint vendor/winapi/src/um/winuser.rs /^ pub fn WindowFromPoint($/;" f +WindowsCompareStringOrdinal vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsCompareStringOrdinal($/;" f +WindowsConcatString vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsConcatString($/;" f +WindowsCreateString vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsCreateString($/;" f +WindowsCreateStringReference vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsCreateStringReference($/;" f +WindowsDeleteString vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsDeleteString($/;" f +WindowsDeleteStringBuffer vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsDeleteStringBuffer($/;" f +WindowsDuplicateString vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsDuplicateString($/;" f +WindowsError vendor/libloading/src/error.rs /^impl std::fmt::Debug for WindowsError {$/;" c +WindowsError vendor/libloading/src/error.rs /^pub struct WindowsError(pub(crate) std::io::Error);$/;" s +WindowsGetStringLen vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsGetStringLen($/;" f +WindowsGetStringRawBuffer vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsGetStringRawBuffer($/;" f +WindowsInspectString vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsInspectString($/;" f +WindowsIsStringEmpty vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsIsStringEmpty($/;" f +WindowsPreallocateStringBuffer vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsPreallocateStringBuffer($/;" f +WindowsPromoteStringBuffer vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsPromoteStringBuffer($/;" f +WindowsReplaceString vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsReplaceString($/;" f +WindowsStringHasEmbeddedNull vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsStringHasEmbeddedNull($/;" f +WindowsSubstring vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsSubstring($/;" f +WindowsSubstringWithSpecifiedLength vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsSubstringWithSpecifiedLength($/;" f +WindowsTrimStringEnd vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsTrimStringEnd($/;" f +WindowsTrimStringStart vendor/winapi/src/winrt/winstring.rs /^ pub fn WindowsTrimStringStart($/;" f +With vendor/futures-util/src/sink/with.rs /^impl Stream for With$/;" c +With vendor/futures-util/src/sink/with.rs /^impl Sink for With$/;" c +With vendor/futures-util/src/sink/with.rs /^impl With$/;" c +With vendor/futures-util/src/sink/with.rs /^impl Clone for With$/;" c +With vendor/futures-util/src/sink/with.rs /^impl With$/;" c +With vendor/futures-util/src/sink/with.rs /^impl fmt::Debug for With$/;" c +WithAnyhow vendor/thiserror/tests/test_error.rs /^struct WithAnyhow {$/;" s +WithFlatMap vendor/futures-util/src/sink/with_flat_map.rs /^impl FusedStream for WithFlatMap$/;" c +WithFlatMap vendor/futures-util/src/sink/with_flat_map.rs /^impl Stream for WithFlatMap$/;" c +WithFlatMap vendor/futures-util/src/sink/with_flat_map.rs /^impl Sink for WithFlatMap$/;" c +WithFlatMap vendor/futures-util/src/sink/with_flat_map.rs /^impl WithFlatMap$/;" c +WithFlatMap vendor/futures-util/src/sink/with_flat_map.rs /^impl fmt::Debug for WithFlatMap$/;" c +WithSource vendor/thiserror/tests/test_error.rs /^struct WithSource {$/;" s +WithSpan vendor/syn/src/token.rs /^ pub struct WithSpan {$/;" s module:private +WlanAllocateMemory vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanAllocateMemory($/;" f +WlanCloseHandle vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanCloseHandle($/;" f +WlanConnect vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanConnect($/;" f +WlanConnect2 vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanConnect2($/;" f +WlanDeleteProfile vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanDeleteProfile($/;" f +WlanDeviceServiceCommand vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanDeviceServiceCommand($/;" f +WlanDisconnect vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanDisconnect($/;" f +WlanEnumInterfaces vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanEnumInterfaces($/;" f +WlanExtractPsdIEDataList vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanExtractPsdIEDataList($/;" f +WlanFreeMemory vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanFreeMemory($/;" f +WlanGetAvailableNetworkList vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanGetAvailableNetworkList($/;" f +WlanGetAvailableNetworkList2 vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanGetAvailableNetworkList2($/;" f +WlanGetFilterList vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanGetFilterList($/;" f +WlanGetInterfaceCapability vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanGetInterfaceCapability($/;" f +WlanGetNetworkBssList vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanGetNetworkBssList($/;" f +WlanGetProfile vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanGetProfile($/;" f +WlanGetProfileCustomUserData vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanGetProfileCustomUserData($/;" f +WlanGetProfileList vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanGetProfileList($/;" f +WlanGetSecuritySettings vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanGetSecuritySettings($/;" f +WlanGetSupportedDeviceServices vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanGetSupportedDeviceServices($/;" f +WlanHostedNetworkForceStart vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanHostedNetworkForceStart($/;" f +WlanHostedNetworkForceStop vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanHostedNetworkForceStop($/;" f +WlanHostedNetworkInitSettings vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanHostedNetworkInitSettings($/;" f +WlanHostedNetworkQueryProperty vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanHostedNetworkQueryProperty($/;" f +WlanHostedNetworkQuerySecondaryKey vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanHostedNetworkQuerySecondaryKey($/;" f +WlanHostedNetworkQueryStatus vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanHostedNetworkQueryStatus($/;" f +WlanHostedNetworkRefreshSecuritySettings vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanHostedNetworkRefreshSecuritySettings($/;" f +WlanHostedNetworkSetProperty vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanHostedNetworkSetProperty($/;" f +WlanHostedNetworkSetSecondaryKey vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanHostedNetworkSetSecondaryKey($/;" f +WlanHostedNetworkStartUsing vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanHostedNetworkStartUsing($/;" f +WlanHostedNetworkStopUsing vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanHostedNetworkStopUsing($/;" f +WlanIhvControl vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanIhvControl($/;" f +WlanOpenHandle vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanOpenHandle($/;" f +WlanQueryAutoConfigParameter vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanQueryAutoConfigParameter($/;" f +WlanQueryInterface vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanQueryInterface($/;" f +WlanReasonCodeToString vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanReasonCodeToString($/;" f +WlanRegisterNotification vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanRegisterNotification($/;" f +WlanRegisterVirtualStationNotification vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanRegisterVirtualStationNotification($/;" f +WlanRenameProfile vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanRenameProfile($/;" f +WlanSaveTemporaryProfile vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanSaveTemporaryProfile($/;" f +WlanScan vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanScan($/;" f +WlanSetAutoConfigParameter vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanSetAutoConfigParameter($/;" f +WlanSetFilterList vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanSetFilterList($/;" f +WlanSetInterface vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanSetInterface($/;" f +WlanSetProfile vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanSetProfile($/;" f +WlanSetProfileCustomUserData vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanSetProfileCustomUserData($/;" f +WlanSetProfileEapUserData vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanSetProfileEapUserData($/;" f +WlanSetProfileEapXmlUserData vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanSetProfileEapXmlUserData($/;" f +WlanSetProfileList vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanSetProfileList($/;" f +WlanSetProfilePosition vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanSetProfilePosition($/;" f +WlanSetPsdIEDataList vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanSetPsdIEDataList($/;" f +WlanSetSecuritySettings vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanSetSecuritySettings($/;" f +WlanUIEditProfile vendor/winapi/src/um/wlanapi.rs /^ pub fn WlanUIEditProfile($/;" f +Woken vendor/futures-util/src/lock/mutex.rs /^ Woken,$/;" e enum:Waiter +WordDesc builtins_rust/common/src/lib.rs /^pub type WordDesc = word_desc;$/;" t +WordDesc builtins_rust/setattr/src/intercdep.rs /^pub type WordDesc = word_desc;$/;" t +WordList builtins_rust/common/src/lib.rs /^pub type WordList = word_list;$/;" t +Wow64DisableWow64FsRedirection vendor/winapi/src/um/wow64apiset.rs /^ pub fn Wow64DisableWow64FsRedirection($/;" f +Wow64EnableWow64FsRedirection vendor/winapi/src/um/winbase.rs /^ pub fn Wow64EnableWow64FsRedirection($/;" f +Wow64GetThreadContext vendor/winapi/src/um/winbase.rs /^ pub fn Wow64GetThreadContext($/;" f +Wow64GetThreadSelectorEntry vendor/winapi/src/um/winbase.rs /^ pub fn Wow64GetThreadSelectorEntry($/;" f +Wow64RevertWow64FsRedirection vendor/winapi/src/um/wow64apiset.rs /^ pub fn Wow64RevertWow64FsRedirection($/;" f +Wow64SetThreadContext vendor/winapi/src/um/winbase.rs /^ pub fn Wow64SetThreadContext($/;" f +Wow64SuspendThread vendor/winapi/src/um/winbase.rs /^ pub fn Wow64SuspendThread($/;" f +Write vendor/futures-util/src/io/write.rs /^impl<'a, W: AsyncWrite + ?Sized + Unpin> Write<'a, W> {$/;" c +Write vendor/futures-util/src/io/write.rs /^impl Unpin for Write<'_, W> {}$/;" c +Write vendor/futures-util/src/io/write.rs /^impl Future for Write<'_, W> {$/;" c +Write vendor/futures-util/src/io/write.rs /^pub struct Write<'a, W: ?Sized> {$/;" s +Write vendor/nix/src/sys/socket/mod.rs /^ Write,$/;" e enum:Shutdown +WriteAll vendor/futures-util/src/io/write_all.rs /^impl<'a, W: AsyncWrite + ?Sized + Unpin> WriteAll<'a, W> {$/;" c +WriteAll vendor/futures-util/src/io/write_all.rs /^impl Unpin for WriteAll<'_, W> {}$/;" c +WriteAll vendor/futures-util/src/io/write_all.rs /^impl Future for WriteAll<'_, W> {$/;" c +WriteAll vendor/futures-util/src/io/write_all.rs /^pub struct WriteAll<'a, W: ?Sized> {$/;" s +WriteAllVectored vendor/futures-util/src/io/write_all_vectored.rs /^impl<'a, W: AsyncWrite + ?Sized + Unpin> WriteAllVectored<'a, W> {$/;" c +WriteAllVectored vendor/futures-util/src/io/write_all_vectored.rs /^impl Unpin for WriteAllVectored<'_, W> {}$/;" c +WriteAllVectored vendor/futures-util/src/io/write_all_vectored.rs /^impl Future for WriteAllVectored<'_, W> {$/;" c +WriteAllVectored vendor/futures-util/src/io/write_all_vectored.rs /^pub struct WriteAllVectored<'a, W: ?Sized + Unpin> {$/;" s +WriteConsoleA vendor/winapi/src/um/consoleapi.rs /^ pub fn WriteConsoleA($/;" f +WriteConsoleInputA vendor/winapi/src/um/wincon.rs /^ pub fn WriteConsoleInputA($/;" f +WriteConsoleInputW vendor/winapi/src/um/wincon.rs /^ pub fn WriteConsoleInputW($/;" f +WriteConsoleOutputA vendor/winapi/src/um/wincon.rs /^ pub fn WriteConsoleOutputA($/;" f +WriteConsoleOutputAttribute vendor/winapi/src/um/wincon.rs /^ pub fn WriteConsoleOutputAttribute($/;" f +WriteConsoleOutputCharacterA vendor/winapi/src/um/wincon.rs /^ pub fn WriteConsoleOutputCharacterA($/;" f +WriteConsoleOutputCharacterW vendor/winapi/src/um/wincon.rs /^ pub fn WriteConsoleOutputCharacterW($/;" f +WriteConsoleOutputW vendor/winapi/src/um/wincon.rs /^ pub fn WriteConsoleOutputW($/;" f +WriteConsoleW vendor/winapi/src/um/consoleapi.rs /^ pub fn WriteConsoleW($/;" f +WriteFile vendor/winapi/src/um/fileapi.rs /^ pub fn WriteFile($/;" f +WriteFileEx vendor/winapi/src/um/fileapi.rs /^ pub fn WriteFileEx($/;" f +WriteFileGather vendor/winapi/src/um/fileapi.rs /^ pub fn WriteFileGather($/;" f +WriteGlobalPwrPolicy vendor/winapi/src/um/powrprof.rs /^ pub fn WriteGlobalPwrPolicy($/;" f +WriteHalf vendor/futures-util/src/io/split.rs /^impl WriteHalf {$/;" c +WriteHalf vendor/futures-util/src/io/split.rs /^impl AsyncWrite for WriteHalf {$/;" c +WriteHalf vendor/futures-util/src/io/split.rs /^pub struct WriteHalf {$/;" s +WritePrinter vendor/winapi/src/um/winspool.rs /^ pub fn WritePrinter($/;" f +WritePrivateProfileSectionA vendor/winapi/src/um/winbase.rs /^ pub fn WritePrivateProfileSectionA($/;" f +WritePrivateProfileSectionW vendor/winapi/src/um/winbase.rs /^ pub fn WritePrivateProfileSectionW($/;" f +WritePrivateProfileStringA vendor/winapi/src/um/winbase.rs /^ pub fn WritePrivateProfileStringA($/;" f +WritePrivateProfileStringW vendor/winapi/src/um/winbase.rs /^ pub fn WritePrivateProfileStringW($/;" f +WritePrivateProfileStructA vendor/winapi/src/um/winbase.rs /^ pub fn WritePrivateProfileStructA($/;" f +WritePrivateProfileStructW vendor/winapi/src/um/winbase.rs /^ pub fn WritePrivateProfileStructW($/;" f +WriteProcessMemory vendor/winapi/src/um/memoryapi.rs /^ pub fn WriteProcessMemory($/;" f +WriteProcessorPwrScheme vendor/winapi/src/um/powrprof.rs /^ pub fn WriteProcessorPwrScheme($/;" f +WriteProfileSectionA vendor/winapi/src/um/winbase.rs /^ pub fn WriteProfileSectionA($/;" f +WriteProfileSectionW vendor/winapi/src/um/winbase.rs /^ pub fn WriteProfileSectionW($/;" f +WriteProfileStringA vendor/winapi/src/um/winbase.rs /^ pub fn WriteProfileStringA($/;" f +WriteProfileStringW vendor/winapi/src/um/winbase.rs /^ pub fn WriteProfileStringW($/;" f +WritePwrScheme vendor/winapi/src/um/powrprof.rs /^ pub fn WritePwrScheme($/;" f +WriteTapemark vendor/winapi/src/um/winbase.rs /^ pub fn WriteTapemark($/;" f +WriteValue vendor/fluent-bundle/src/resolver/mod.rs /^pub(crate) trait WriteValue {$/;" i +WriteVectored vendor/futures-util/src/io/write_vectored.rs /^impl<'a, W: AsyncWrite + ?Sized + Unpin> WriteVectored<'a, W> {$/;" c +WriteVectored vendor/futures-util/src/io/write_vectored.rs /^impl Unpin for WriteVectored<'_, W> {}$/;" c +WriteVectored vendor/futures-util/src/io/write_vectored.rs /^impl Future for WriteVectored<'_, W> {$/;" c +WriteVectored vendor/futures-util/src/io/write_vectored.rs /^pub struct WriteVectored<'a, W: ?Sized> {$/;" s +X vendor/lazy_static/tests/test.rs /^struct X;$/;" s +X vendor/quote/tests/test.rs /^impl quote::ToTokens for X {$/;" c +X vendor/quote/tests/test.rs /^struct X;$/;" s +X25 vendor/nix/src/sys/socket/addr.rs /^ X25 = libc::AF_X25,$/;" e enum:AddressFamily +XCHAR lib/glob/smatch.c /^# define XCHAR /;" d file: +XCHAR lib/glob/smatch.c /^#define XCHAR /;" d file: +XCOREDUMP sig.c /^#define XCOREDUMP(/;" d file: +XFLAG builtins_rust/bind/src/lib.rs /^macro_rules! XFLAG {$/;" M +XFLAG support/utshellversion.c /^#define XFLAG /;" d file: +XHANDLER sig.c /^#define XHANDLER(/;" d file: +XInputEnable vendor/winapi/src/um/xinput.rs /^ pub fn XInputEnable($/;" f +XInputGetAudioDeviceIds vendor/winapi/src/um/xinput.rs /^ pub fn XInputGetAudioDeviceIds($/;" f +XInputGetBatteryInformation vendor/winapi/src/um/xinput.rs /^ pub fn XInputGetBatteryInformation($/;" f +XInputGetCapabilities vendor/winapi/src/um/xinput.rs /^ pub fn XInputGetCapabilities($/;" f +XInputGetDSoundAudioDeviceGuids vendor/winapi/src/um/xinput.rs /^ pub fn XInputGetDSoundAudioDeviceGuids($/;" f +XInputGetKeystroke vendor/winapi/src/um/xinput.rs /^ pub fn XInputGetKeystroke($/;" f +XInputGetState vendor/winapi/src/um/xinput.rs /^ pub fn XInputGetState($/;" f +XInputSetState vendor/winapi/src/um/xinput.rs /^ pub fn XInputSetState($/;" f +XPG_CODESET lib/intl/loadinfo.h /^#define XPG_CODESET /;" d +XPG_MODIFIER lib/intl/loadinfo.h /^#define XPG_MODIFIER /;" d +XPG_NORM_CODESET lib/intl/loadinfo.h /^#define XPG_NORM_CODESET /;" d +XPG_SPECIFIC lib/intl/loadinfo.h /^#define XPG_SPECIFIC /;" d +XS vendor/once_cell/tests/it.rs /^ static XS: OnceCell> = OnceCell::new();$/;" v function:sync::static_lazy_via_fn::xs +XS vendor/once_cell/tests/it.rs /^ static XS: Lazy> = Lazy::new(|| {$/;" v function:sync::static_lazy +XSAFLAGS sig.c /^#define XSAFLAGS(/;" d file: +XSIG sig.c /^#define XSIG(/;" d file: +XXFLAG builtins_rust/bind/src/lib.rs /^macro_rules! XXFLAG {$/;" M +X_EAGAIN input.c /^# define X_EAGAIN /;" d file: +X_EAGAIN lib/readline/input.c /^# define X_EAGAIN /;" d file: +X_EWOULDBLOCK input.c /^# define X_EWOULDBLOCK /;" d file: +X_EWOULDBLOCK lib/readline/input.c /^# define X_EWOULDBLOCK /;" d file: +X_OK lib/readline/complete.c /^# define X_OK /;" d file: +X_OK lib/sh/eaccess.c /^#define X_OK /;" d file: +X_OK test.c /^#define X_OK /;" d file: +X_digs lib/sh/fmtulong.c /^#define X_digs /;" d file: +X_digs lib/sh/snprintf.c /^#define X_digs /;" d file: +Xarg builtins_rust/complete/src/lib.rs /^pub static mut Xarg: *mut c_char = std::ptr::null_mut();$/;" v +XcvDataW vendor/winapi/src/um/winspool.rs /^ pub fn XcvDataW($/;" f +Y vendor/pin-project-lite/tests/test.rs /^ type Y = Option;$/;" t implementation:no_infer_outlives::Struct1 +Y vendor/pin-project-lite/tests/test.rs /^ type Y;$/;" t interface:no_infer_outlives::Trait +YACC Makefile.in /^YACC = @YACC@$/;" m +YACC configure.ac /^AC_SUBST(YACC)$/;" s +YACC lib/intl/Makefile.in /^YACC = @INTLBISON@ -y -d$/;" m +YFLAGS lib/intl/Makefile.in /^YFLAGS = --name-prefix=__gettext$/;" m +YYABORT lib/intl/plural.c /^#define YYABORT /;" d file: +YYACCEPT lib/intl/plural.c /^#define YYACCEPT /;" d file: +YYBACKUP lib/intl/plural.c /^#define YYBACKUP(/;" d file: +YYBISON lib/intl/plural.c /^#define YYBISON /;" d file: +YYCOPY lib/intl/plural.c /^# define YYCOPY(/;" d file: +YYDEBUG lib/intl/plural.c /^# define YYDEBUG /;" d file: +YYDPRINTF lib/intl/plural.c /^# define YYDPRINTF(/;" d file: +YYEMPTY lib/intl/plural.c /^#define YYEMPTY /;" d file: +YYEOF lib/intl/plural.c /^#define YYEOF /;" d file: +YYERRCODE lib/intl/plural.c /^#define YYERRCODE /;" d file: +YYERROR lib/intl/plural.c /^#define YYERROR /;" d file: +YYERROR_VERBOSE lib/intl/plural.c /^# define YYERROR_VERBOSE /;" d file: +YYFAIL lib/intl/plural.c /^#define YYFAIL /;" d file: +YYFINAL lib/intl/plural.c /^#define YYFINAL /;" d file: +YYFPRINTF lib/intl/plural.c /^# define YYFPRINTF /;" d file: +YYFREE lib/intl/plural.c /^# define YYFREE /;" d file: +YYINITDEPTH lib/intl/plural.c /^# define YYINITDEPTH /;" d file: +YYLAST lib/intl/plural.c /^#define YYLAST /;" d file: +YYLEX lib/intl/plural.c /^# define YYLEX /;" d file: +YYLEX_PARAM lib/intl/plural.c /^#define YYLEX_PARAM /;" d file: +YYLLOC_DEFAULT lib/intl/plural.c /^# define YYLLOC_DEFAULT(/;" d file: +YYLSP_NEEDED lib/intl/plural.c /^#define YYLSP_NEEDED /;" d file: +YYMALLOC lib/intl/plural.c /^# define YYMALLOC /;" d file: +YYMAXDEPTH lib/intl/plural.c /^# define YYMAXDEPTH /;" d file: +YYMAXUTOK lib/intl/plural.c /^#define YYMAXUTOK /;" d file: +YYNNTS lib/intl/plural.c /^#define YYNNTS /;" d file: +YYNRULES lib/intl/plural.c /^#define YYNRULES /;" d file: +YYNSTATES lib/intl/plural.c /^#define YYNSTATES /;" d file: +YYNTOKENS lib/intl/plural.c /^#define YYNTOKENS /;" d file: +YYPACT_NINF lib/intl/plural.c /^#define YYPACT_NINF /;" d file: +YYPARSE_PARAM lib/intl/plural.c /^#define YYPARSE_PARAM /;" d file: +YYPOPSTACK lib/intl/plural.c /^#define YYPOPSTACK /;" d file: +YYPURE lib/intl/plural.c /^#define YYPURE /;" d file: +YYRECOVERING lib/intl/plural.c /^#define YYRECOVERING(/;" d file: +YYRHSLOC lib/intl/plural.c /^#define YYRHSLOC(/;" d file: +YYSIZE_T lib/intl/plural.c /^# define YYSIZE_T /;" d file: +YYSIZE_T lib/intl/plural.c /^# define YYSIZE_T /;" d file: +YYSIZE_T lib/intl/plural.c /^# define YYSIZE_T /;" d file: +YYSKELETON_NAME lib/intl/plural.c /^#define YYSKELETON_NAME /;" d file: +YYSTACK_ALLOC lib/intl/plural.c /^# define YYSTACK_ALLOC /;" d file: +YYSTACK_ALLOC lib/intl/plural.c /^# define YYSTACK_ALLOC /;" d file: +YYSTACK_BYTES lib/intl/plural.c /^# define YYSTACK_BYTES(/;" d file: +YYSTACK_FREE lib/intl/plural.c /^# define YYSTACK_FREE /;" d file: +YYSTACK_FREE lib/intl/plural.c /^# define YYSTACK_FREE(/;" d file: +YYSTACK_GAP_MAXIMUM lib/intl/plural.c /^# define YYSTACK_GAP_MAXIMUM /;" d file: +YYSTACK_RELOCATE lib/intl/plural.c /^# define YYSTACK_RELOCATE(/;" d file: +YYSTYPE lib/intl/plural.c /^typedef union YYSTYPE {$/;" u file: +YYSTYPE lib/intl/plural.c /^} YYSTYPE;$/;" t typeref:union:YYSTYPE file: +YYSTYPE_IS_DECLARED lib/intl/plural.c /^# define YYSTYPE_IS_DECLARED /;" d file: +YYSTYPE_IS_TRIVIAL lib/intl/plural.c /^# define YYSTYPE_IS_TRIVIAL /;" d file: +YYTABLE_NINF lib/intl/plural.c /^#define YYTABLE_NINF /;" d file: +YYTERROR lib/intl/plural.c /^#define YYTERROR /;" d file: +YYTOKENTYPE lib/intl/plural.c /^# define YYTOKENTYPE$/;" d file: +YYTRANSLATE lib/intl/plural.c /^#define YYTRANSLATE(/;" d file: +YYUNDEFTOK lib/intl/plural.c /^#define YYUNDEFTOK /;" d file: +YY_LOCATION_PRINT lib/intl/plural.c /^# define YY_LOCATION_PRINT(/;" d file: +YY_REDUCE_PRINT lib/intl/plural.c /^# define YY_REDUCE_PRINT(/;" d file: +YY_STACK_PRINT lib/intl/plural.c /^# define YY_STACK_PRINT(/;" d file: +YY_SYMBOL_PRINT lib/intl/plural.c /^# define YY_SYMBOL_PRINT(/;" d file: +Yield vendor/futures-executor/benches/thread_notify.rs /^ impl Future for Yield {$/;" c function:thread_yield_multi_thread +Yield vendor/futures-executor/benches/thread_notify.rs /^ impl Future for Yield {$/;" c function:thread_yield_single_thread_many_wait +Yield vendor/futures-executor/benches/thread_notify.rs /^ impl Future for Yield {$/;" c function:thread_yield_single_thread_one_wait +Yield vendor/futures-executor/benches/thread_notify.rs /^ impl Unpin for Yield {}$/;" c function:thread_yield_multi_thread +Yield vendor/futures-executor/benches/thread_notify.rs /^ struct Yield {$/;" s function:thread_yield_multi_thread +Yield vendor/futures-executor/benches/thread_notify.rs /^ struct Yield {$/;" s function:thread_yield_single_thread_many_wait +Yield vendor/futures-executor/benches/thread_notify.rs /^ struct Yield {$/;" s function:thread_yield_single_thread_one_wait +ZBUFSIZ lib/sh/zcatfd.c /^# define ZBUFSIZ /;" d file: +ZBUFSIZ lib/sh/zmapfd.c /^# define ZBUFSIZ /;" d file: +ZBUFSIZ lib/sh/zread.c /^# define ZBUFSIZ /;" d file: +ZERO lib/intl/gettextP.h /^# define ZERO /;" d +ZERO vendor/intl_pluralrules/src/lib.rs /^ ZERO,$/;" e enum:PluralCategory +ZERO vendor/libloading/src/util.rs /^ static ZERO: raw::c_char = 0;$/;" v function:cstr_cow_from_bytes +Zip vendor/futures-util/src/stream/stream/zip.rs /^impl FusedStream for Zip$/;" c +Zip vendor/futures-util/src/stream/stream/zip.rs /^impl Stream for Zip$/;" c +Zip vendor/futures-util/src/stream/stream/zip.rs /^impl Zip {$/;" c +ZombifyActCtx vendor/winapi/src/um/winbase.rs /^ pub fn ZombifyActCtx($/;" f +[0.1.0] - 2019-10-22 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.0] - 2019-10-22$/;" s chapter:Changelog +[0.1.10] - 2020-10-01 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.10] - 2020-10-01$/;" s chapter:Changelog +[0.1.11] - 2020-10-20 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.11] - 2020-10-20$/;" s chapter:Changelog +[0.1.12] - 2021-03-02 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.12] - 2021-03-02$/;" s chapter:Changelog +[0.1.1] - 2019-11-15 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.1] - 2019-11-15$/;" s chapter:Changelog +[0.1.2] - 2020-01-05 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.2] - 2020-01-05$/;" s chapter:Changelog +[0.1.3] - 2020-01-20 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.3] - 2020-01-20$/;" s chapter:Changelog +[0.1.4] - 2020-01-20 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.4] - 2020-01-20$/;" s chapter:Changelog +[0.1.5] - 2020-05-07 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.5] - 2020-05-07$/;" s chapter:Changelog +[0.1.6] - 2020-05-31 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.6] - 2020-05-31$/;" s chapter:Changelog +[0.1.7] - 2020-06-04 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.7] - 2020-06-04$/;" s chapter:Changelog +[0.1.8] - 2020-09-26 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.8] - 2020-09-26$/;" s chapter:Changelog +[0.1.9] - 2020-09-29 vendor/pin-project-lite/CHANGELOG.md /^## [0.1.9] - 2020-09-29$/;" s chapter:Changelog +[0.10.0] 2018-01-26 vendor/nix/CHANGELOG.md /^## [0.10.0] 2018-01-26$/;" s chapter:Change Log +[0.11.0] 2018-06-01 vendor/nix/CHANGELOG.md /^## [0.11.0] 2018-06-01$/;" s chapter:Change Log +[0.12.0] 2018-11-28 vendor/nix/CHANGELOG.md /^## [0.12.0] 2018-11-28$/;" s chapter:Change Log +[0.13.0] - 2019-01-15 vendor/nix/CHANGELOG.md /^## [0.13.0] - 2019-01-15$/;" s chapter:Change Log +[0.14.0] - 2019-05-21 vendor/nix/CHANGELOG.md /^## [0.14.0] - 2019-05-21$/;" s chapter:Change Log +[0.14.1] - 2019-06-06 vendor/nix/CHANGELOG.md /^## [0.14.1] - 2019-06-06$/;" s chapter:Change Log +[0.15.0] - 10 August 2019 vendor/nix/CHANGELOG.md /^## [0.15.0] - 10 August 2019$/;" s chapter:Change Log +[0.16.0] - 1 December 2019 vendor/nix/CHANGELOG.md /^## [0.16.0] - 1 December 2019$/;" s chapter:Change Log +[0.16.1] - 23 December 2019 vendor/nix/CHANGELOG.md /^## [0.16.1] - 23 December 2019$/;" s chapter:Change Log +[0.17.0] - 3 February 2020 vendor/nix/CHANGELOG.md /^## [0.17.0] - 3 February 2020$/;" s chapter:Change Log +[0.18.0] - 26 July 2020 vendor/nix/CHANGELOG.md /^## [0.18.0] - 26 July 2020$/;" s chapter:Change Log +[0.19.0] - 6 October 2020 vendor/nix/CHANGELOG.md /^## [0.19.0] - 6 October 2020$/;" s chapter:Change Log +[0.19.1] - 28 November 2020 vendor/nix/CHANGELOG.md /^## [0.19.1] - 28 November 2020$/;" s chapter:Change Log +[0.2.0] - 2020-11-13 vendor/pin-project-lite/CHANGELOG.md /^## [0.2.0] - 2020-11-13$/;" s chapter:Changelog +[0.2.1] - 2021-01-05 vendor/pin-project-lite/CHANGELOG.md /^## [0.2.1] - 2021-01-05$/;" s chapter:Changelog +[0.2.2] - 2021-01-09 vendor/pin-project-lite/CHANGELOG.md /^## [0.2.2] - 2021-01-09$/;" s chapter:Changelog +[0.2.3] - 2021-01-09 vendor/pin-project-lite/CHANGELOG.md /^## [0.2.3] - 2021-01-09$/;" s chapter:Changelog +[0.2.4] - 2021-01-11 vendor/pin-project-lite/CHANGELOG.md /^## [0.2.4] - 2021-01-11$/;" s chapter:Changelog +[0.2.5] - 2021-03-02 vendor/pin-project-lite/CHANGELOG.md /^## [0.2.5] - 2021-03-02$/;" s chapter:Changelog +[0.2.6] - 2021-03-04 vendor/pin-project-lite/CHANGELOG.md /^## [0.2.6] - 2021-03-04$/;" s chapter:Changelog +[0.2.7] - 2021-06-26 vendor/pin-project-lite/CHANGELOG.md /^## [0.2.7] - 2021-06-26$/;" s chapter:Changelog +[0.2.8] - 2021-12-31 vendor/pin-project-lite/CHANGELOG.md /^## [0.2.8] - 2021-12-31$/;" s chapter:Changelog +[0.2.9] - 2022-04-26 vendor/pin-project-lite/CHANGELOG.md /^## [0.2.9] - 2022-04-26$/;" s chapter:Changelog +[0.20.0] - 20 February 2021 vendor/nix/CHANGELOG.md /^## [0.20.0] - 20 February 2021$/;" s chapter:Change Log +[0.21.0] - 31 May 2021 vendor/nix/CHANGELOG.md /^## [0.21.0] - 31 May 2021$/;" s chapter:Change Log +[0.22.0] - 9 July 2021 vendor/nix/CHANGELOG.md /^## [0.22.0] - 9 July 2021$/;" s chapter:Change Log +[0.23.0] - 2021-09-28 vendor/nix/CHANGELOG.md /^## [0.23.0] - 2021-09-28$/;" s chapter:Change Log +[0.23.1] - 2021-12-16 vendor/nix/CHANGELOG.md /^## [0.23.1] - 2021-12-16$/;" s chapter:Change Log +[0.24.0] - 2022-04-21 vendor/nix/CHANGELOG.md /^## [0.24.0] - 2022-04-21$/;" s chapter:Change Log +[0.24.1] - 2022-04-22 vendor/nix/CHANGELOG.md /^## [0.24.1] - 2022-04-22$/;" s chapter:Change Log +[0.24.2] - 2022-07-17 vendor/nix/CHANGELOG.md /^## [0.24.2] - 2022-07-17$/;" s chapter:Change Log +[0.25.0] - 2022-08-13 vendor/nix/CHANGELOG.md /^## [0.25.0] - 2022-08-13$/;" s chapter:Change Log +[0.5.0] 2016-03-01 vendor/nix/CHANGELOG.md /^## [0.5.0] 2016-03-01$/;" s chapter:Change Log +[0.6.0] 2016-06-10 vendor/nix/CHANGELOG.md /^## [0.6.0] 2016-06-10$/;" s chapter:Change Log +[0.7.0] 2016-09-09 vendor/nix/CHANGELOG.md /^## [0.7.0] 2016-09-09$/;" s chapter:Change Log +[0.8.0] 2017-03-02 vendor/nix/CHANGELOG.md /^## [0.8.0] 2017-03-02$/;" s chapter:Change Log +[0.8.1] 2017-04-16 vendor/nix/CHANGELOG.md /^## [0.8.1] 2017-04-16$/;" s chapter:Change Log +[0.9.0] 2017-07-23 vendor/nix/CHANGELOG.md /^## [0.9.0] 2017-07-23$/;" s chapter:Change Log +[Unreleased] vendor/pin-project-lite/CHANGELOG.md /^## [Unreleased]$/;" s chapter:Changelog +[[Unreleased]] vendor/stdext/CHANGELOG.md /^## [[Unreleased]]$/;" s chapter:`stdext` changelog +[^ configure /^s\/^ \\('"$ac_word_re"'\\)\\(([^()]*)\\)[ ]*\\(.*\\)\/P["\\1"]="\\2"\\$/;" f +[pin-project] vs pin-project-lite vendor/pin-project-lite/README.md /^## [pin-project] vs pin-project-lite$/;" s chapter:pin-project-lite +_ bashintl.h /^#define _(/;" d +_ braces.c /^#define _(/;" d file: +_ lib/malloc/imalloc.h /^# define _(/;" d +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ cat c/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ cat >>confdefs.h <<_ACEOF$/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ *) cat >>confdefs.h <<_ACEOF$/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^ cat <<_ACEOF$/;" h +_ACEOF configure /^ cat >>confdefs.h <<_ACEOF$/;" h +_ACEOF configure /^ cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ACEOF configure /^cat >&5 <<_ACEOF$/;" h +_ACEOF configure /^cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1$/;" h +_ACEOF configure /^cat >>confdefs.h <<_ACEOF$/;" h +_ACEOF configure /^cat >config.log <<_ACEOF$/;" h +_ACEOF configure /^cat confdefs.h - <<_ACEOF >conftest.$ac_ext$/;" h +_ALIAS_H_ alias.h /^#define _ALIAS_H_$/;" d +_ARRAYFUNC_H_ arrayfunc.h /^#define _ARRAYFUNC_H_$/;" d +_ARRAY_H_ array.h /^#define _ARRAY_H_$/;" d +_ASBOX configure /^ sed 'h;s\/.\/-\/g;s\/^...\/## \/;s\/...$\/ ##\/;p;x;p;x' <<_ASBOX$/;" h +_ASEOF configure /^cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1$/;" h +_ASEOF configure /^cat >conf$$.file <<_ASEOF$/;" h +_ASSOC_H_ assoc.h /^#define _ASSOC_H_$/;" d +_ASUNAME configure /^cat <<_ASUNAME$/;" h +_BASHANSI_H_ bashansi.h /^#define _BASHANSI_H_$/;" d +_BASHHIST_H_ bashhist.h /^#define _BASHHIST_H_$/;" d +_BASHINTL_H_ bashintl.h /^#define _BASHINTL_H_$/;" d +_BASHJMP_H_ bashjmp.h /^#define _BASHJMP_H_$/;" d +_BASHLINE_H_ bashline.h /^#define _BASHLINE_H_$/;" d +_BASHTYPES_H_ bashtypes.h /^# define _BASHTYPES_H_$/;" d +_BASH_SYSTIMES_H include/systimes.h /^#define _BASH_SYSTIMES_H /;" d +_BOOL vendor/winapi/src/um/physicalmonitorenumerationapi.rs /^pub type _BOOL = BOOL;$/;" t +_BSS lib/malloc/x386-alloca.s /^_BSS SEGMENT DWORD USE32 PUBLIC 'BSS'$/;" l +_Bool lib/readline/colors.h /^typedef int _Bool;$/;" t typeref:typename:int +_CHARDEFS_H_ lib/readline/chardefs.h /^#define _CHARDEFS_H_$/;" d +_CLOCK_MONOTONIC vendor/libc/src/wasi.rs /^ static _CLOCK_MONOTONIC: u8;$/;" v +_CLOCK_PROCESS_CPUTIME_ID vendor/libc/src/wasi.rs /^ static _CLOCK_PROCESS_CPUTIME_ID: u8;$/;" v +_CLOCK_REALTIME vendor/libc/src/wasi.rs /^ static _CLOCK_REALTIME: u8;$/;" v +_CLOCK_THREAD_CPUTIME_ID vendor/libc/src/wasi.rs /^ static _CLOCK_THREAD_CPUTIME_ID: u8;$/;" v +_COLLSYM lib/glob/collsyms.h /^typedef struct _COLLSYM {$/;" s +_COLLSYM lib/glob/smatch.c /^# define _COLLSYM /;" d file: +_COLLSYM lib/glob/smatch.c /^#define _COLLSYM /;" d file: +_COLLSYM r_glob/src/lib.rs /^pub struct _COLLSYM {$/;" s +_COLORS_H_ lib/readline/colors.h /^#define _COLORS_H_$/;" d +_COMMAND_H_ command.h /^#define _COMMAND_H_$/;" d +_CONFIG_H_ config.h.in /^#define _CONFIG_H_$/;" d file: +_CONFTYPES_H_ conftypes.h /^#define _CONFTYPES_H_$/;" d +_DATA lib/malloc/x386-alloca.s /^_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'$/;" l +_DISPOSE_CMD_H_ dispose_cmd.h /^#define _DISPOSE_CMD_H_$/;" d +_ERROR_H_ error.h /^#define _ERROR_H_$/;" d +_EXECUTE_CMD_H_ execute_cmd.h /^#define _EXECUTE_CMD_H_$/;" d +_EXTERNS_H_ externs.h /^# define _EXTERNS_H_$/;" d +_Exit r_bash/src/lib.rs /^ pub fn _Exit(__status: ::std::os::raw::c_int);$/;" f +_Exit r_glob/src/lib.rs /^ pub fn _Exit(__status: ::std::os::raw::c_int);$/;" f +_Exit r_readline/src/lib.rs /^ pub fn _Exit(__status: ::std::os::raw::c_int);$/;" f +_Exit vendor/libc/src/solid/mod.rs /^ pub fn _Exit(arg1: c_int) -> !;$/;" f +_Exit vendor/libc/src/wasi.rs /^ pub fn _Exit(code: c_int) -> !;$/;" f +_FILECNTL_H_ include/filecntl.h /^#define _FILECNTL_H_$/;" d +_FINDCMD_H_ findcmd.h /^#define _FINDCMD_H_$/;" d +_FLAGS_H_ flags.h /^#define _FLAGS_H_$/;" d +_FUNCTION_DEF general.h /^# define _FUNCTION_DEF$/;" d +_FUNCTION_DEF input.h /^# define _FUNCTION_DEF$/;" d +_FUNCTION_DEF lib/readline/rltypedefs.h /^# define _FUNCTION_DEF$/;" d +_Float32 r_bash/src/lib.rs /^pub type _Float32 = f32;$/;" t +_Float32 r_glob/src/lib.rs /^pub type _Float32 = f32;$/;" t +_Float32 r_readline/src/lib.rs /^pub type _Float32 = f32;$/;" t +_Float32x r_bash/src/lib.rs /^pub type _Float32x = f64;$/;" t +_Float32x r_glob/src/lib.rs /^pub type _Float32x = f64;$/;" t +_Float32x r_readline/src/lib.rs /^pub type _Float32x = f64;$/;" t +_Float64 r_bash/src/lib.rs /^pub type _Float64 = f64;$/;" t +_Float64 r_glob/src/lib.rs /^pub type _Float64 = f64;$/;" t +_Float64 r_readline/src/lib.rs /^pub type _Float64 = f64;$/;" t +_Float64x r_bash/src/lib.rs /^pub type _Float64x = f64;$/;" t +_Float64x r_glob/src/lib.rs /^pub type _Float64x = f64;$/;" t +_Float64x r_readline/src/lib.rs /^pub type _Float64x = f64;$/;" t +_GENERAL_H_ general.h /^#define _GENERAL_H_$/;" d +_GETTEXTP_H lib/intl/gettextP.h /^#define _GETTEXTP_H$/;" d +_GETTEXT_H lib/intl/gmo.h /^#define _GETTEXT_H /;" d +_GLOB_H_ lib/glob/glob.h /^#define _GLOB_H_$/;" d +_GNU_SOURCE configure.ac /^AC_DEFINE(_GNU_SOURCE, 1)$/;" d +_GNU_SOURCE lib/glob/xmbsrtowcs.c /^# define _GNU_SOURCE /;" d file: +_GNU_SOURCE lib/intl/dcigettext.c /^# define _GNU_SOURCE /;" d file: +_GNU_SOURCE lib/intl/l10nflist.c /^# define _GNU_SOURCE /;" d file: +_GNU_SOURCE lib/intl/loadmsgcat.c /^# define _GNU_SOURCE /;" d file: +_GNU_SOURCE lib/intl/localealias.c /^# define _GNU_SOURCE /;" d file: +_GNU_SOURCE lib/intl/relocatable.c /^# define _GNU_SOURCE /;" d file: +_G_fpos64_t r_bash/src/lib.rs /^pub struct _G_fpos64_t {$/;" s +_G_fpos64_t r_readline/src/lib.rs /^pub struct _G_fpos64_t {$/;" s +_G_fpos_t r_bash/src/lib.rs /^pub struct _G_fpos_t {$/;" s +_G_fpos_t r_readline/src/lib.rs /^pub struct _G_fpos_t {$/;" s +_HASHLIB_H_ hashlib.h /^#define _HASHLIB_H_$/;" d +_HISTLIB_H_ lib/readline/histlib.h /^#define _HISTLIB_H_$/;" d +_HISTORY_H_ lib/readline/history.h /^#define _HISTORY_H_$/;" d +_HMAPPER vendor/winapi/src/um/schannel.rs /^pub enum _HMAPPER {}$/;" g +_IMALLOC_H lib/malloc/imalloc.h /^#define _IMALLOC_H$/;" d +_INPUT_H_ input.h /^#define _INPUT_H_$/;" d +_INTL_ASM lib/intl/libgnuintl.h.in /^# define _INTL_ASM(/;" d file: +_INTL_ASMNAME lib/intl/libgnuintl.h.in /^# define _INTL_ASMNAME(/;" d file: +_INTL_PARAMS lib/intl/libgnuintl.h.in /^# define _INTL_PARAMS(/;" d file: +_INTL_REDIRECT_ASM lib/intl/libgnuintl.h.in /^# define _INTL_REDIRECT_ASM$/;" d file: +_INTL_REDIRECT_MACROS lib/intl/gettextP.h /^# define _INTL_REDIRECT_MACROS$/;" d +_INTL_STRINGIFY lib/intl/libgnuintl.h.in /^# define _INTL_STRINGIFY(/;" d file: +_IO_FILE r_bash/src/lib.rs /^pub struct _IO_FILE {$/;" s +_IO_FILE r_glob/src/lib.rs /^pub struct _IO_FILE {$/;" s +_IO_FILE r_readline/src/lib.rs /^pub struct _IO_FILE {$/;" s +_IO_PTEM_H lib/readline/rlwinsize.h /^# define _IO_PTEM_H /;" d +_IO_PTEM_H lib/sh/winsize.c /^# define _IO_PTEM_H /;" d file: +_IO_backup_base r_bash/src/lib.rs /^ pub _IO_backup_base: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_backup_base r_readline/src/lib.rs /^ pub _IO_backup_base: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_buf_base r_bash/src/lib.rs /^ pub _IO_buf_base: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_buf_base r_readline/src/lib.rs /^ pub _IO_buf_base: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_buf_end r_bash/src/lib.rs /^ pub _IO_buf_end: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_buf_end r_readline/src/lib.rs /^ pub _IO_buf_end: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_codecvt r_bash/src/lib.rs /^pub struct _IO_codecvt {$/;" s +_IO_codecvt r_readline/src/lib.rs /^pub struct _IO_codecvt {$/;" s +_IO_cookie_io_functions_t r_bash/src/lib.rs /^pub struct _IO_cookie_io_functions_t {$/;" s +_IO_cookie_io_functions_t r_readline/src/lib.rs /^pub struct _IO_cookie_io_functions_t {$/;" s +_IO_lock_t r_bash/src/lib.rs /^pub type _IO_lock_t = ::std::os::raw::c_void;$/;" t +_IO_lock_t r_readline/src/lib.rs /^pub type _IO_lock_t = ::std::os::raw::c_void;$/;" t +_IO_marker r_bash/src/lib.rs /^pub struct _IO_marker {$/;" s +_IO_marker r_readline/src/lib.rs /^pub struct _IO_marker {$/;" s +_IO_read_base r_bash/src/lib.rs /^ pub _IO_read_base: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_read_base r_readline/src/lib.rs /^ pub _IO_read_base: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_read_end r_bash/src/lib.rs /^ pub _IO_read_end: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_read_end r_readline/src/lib.rs /^ pub _IO_read_end: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_read_ptr r_bash/src/lib.rs /^ pub _IO_read_ptr: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_read_ptr r_readline/src/lib.rs /^ pub _IO_read_ptr: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_save_base r_bash/src/lib.rs /^ pub _IO_save_base: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_save_base r_readline/src/lib.rs /^ pub _IO_save_base: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_save_end r_bash/src/lib.rs /^ pub _IO_save_end: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_save_end r_readline/src/lib.rs /^ pub _IO_save_end: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_wide_data r_bash/src/lib.rs /^pub struct _IO_wide_data {$/;" s +_IO_wide_data r_readline/src/lib.rs /^pub struct _IO_wide_data {$/;" s +_IO_write_base r_bash/src/lib.rs /^ pub _IO_write_base: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_write_base r_readline/src/lib.rs /^ pub _IO_write_base: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_write_end r_bash/src/lib.rs /^ pub _IO_write_end: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_write_end r_readline/src/lib.rs /^ pub _IO_write_end: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_write_ptr r_bash/src/lib.rs /^ pub _IO_write_ptr: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_IO_write_ptr r_readline/src/lib.rs /^ pub _IO_write_ptr: *mut ::std::os::raw::c_char,$/;" m struct:_IO_FILE +_JOBS_H_ jobs.h /^# define _JOBS_H_$/;" d +_KEYMAPS_H_ lib/readline/keymaps.h /^#define _KEYMAPS_H_$/;" d +_LIBGETTEXT_H include/gettext.h /^#define _LIBGETTEXT_H /;" d +_LIBINTL_H lib/intl/libgnuintl.h.in /^#define _LIBINTL_H /;" d file: +_LOADINFO_H lib/intl/loadinfo.h /^#define _LOADINFO_H /;" d +_LOCALCHARSET_H lib/intl/localcharset.h /^#define _LOCALCHARSET_H$/;" d +_LTCAP_H_ lib/termcap/ltcap.h /^#define _LTCAP_H_ /;" d +_MAGIC lib/intl/gmo.h /^#define _MAGIC /;" d +_MAGIC_SWAPPED lib/intl/gmo.h /^#define _MAGIC_SWAPPED /;" d +_MAILCHECK_H_ mailcheck.h /^#define _MAILCHECK_H_$/;" d +_MAKE_CMD_H_ make_cmd.h /^#define _MAKE_CMD_H_$/;" d +_MAXPATH_H_ include/maxpath.h /^#define _MAXPATH_H_$/;" d +_MEMALLOC_H_ include/memalloc.h /^# define _MEMALLOC_H_$/;" d +_MSTATS_H lib/malloc/mstats.h /^#define _MSTATS_H$/;" d +_MTABLE_H lib/malloc/table.h /^#define _MTABLE_H$/;" d +_MWATCH_H lib/malloc/watch.h /^#define _MWATCH_H$/;" d +_NSGetEnviron vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn _NSGetEnviron() -> *mut *mut *mut ::c_char;$/;" f +_NSGetExecutablePath vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn _NSGetExecutablePath(buf: *mut ::c_char, bufsize: *mut u32) -> ::c_int;$/;" f +_OCACHE_H_ include/ocache.h /^#define _OCACHE_H_ /;" d +_PARSER_H_ parser.h /^# define _PARSER_H_$/;" d +_PARSE_COLORS_H_ lib/readline/parse-colors.h /^#define _PARSE_COLORS_H_$/;" d +_PATCHLEVEL_H_ patchlevel.h /^#define _PATCHLEVEL_H_$/;" d +_PATHEXP_H_ pathexp.h /^#define _PATHEXP_H_$/;" d +_PATHNAMES_H_ pathnames.h.in /^#define _PATHNAMES_H_$/;" d file: +_PCOMPLETE_H_ pcomplete.h /^# define _PCOMPLETE_H_$/;" d +_PIMAGE_RUNTIME_FUNCTION_ENTRY vendor/winapi/src/um/winnt.rs /^pub type _PIMAGE_RUNTIME_FUNCTION_ENTRY = *mut _IMAGE_RUNTIME_FUNCTION_ENTRY;$/;" t +_PLURAL_EXP_H lib/intl/plural-exp.h /^#define _PLURAL_EXP_H$/;" d +_POSIXDIR_H_ include/posixdir.h /^#define _POSIXDIR_H_$/;" d +_POSIXDIR_H_ lib/readline/posixdir.h /^#define _POSIXDIR_H_$/;" d +_POSIXJMP_H_ include/posixjmp.h /^#define _POSIXJMP_H_$/;" d +_POSIXJMP_H_ lib/readline/posixjmp.h /^#define _POSIXJMP_H_$/;" d +_POSIXSELECT_H_ include/posixselect.h /^#define _POSIXSELECT_H_$/;" d +_POSIXSELECT_H_ lib/readline/posixselect.h /^#define _POSIXSELECT_H_$/;" d +_POSIXSTAT_H_ include/posixstat.h /^#define _POSIXSTAT_H_$/;" d +_POSIXSTAT_H_ lib/readline/posixstat.h /^#define _POSIXSTAT_H_$/;" d +_POSIXTIME_H_ include/posixtime.h /^#define _POSIXTIME_H_$/;" d +_POSIXWAIT_H_ include/posixwait.h /^# define _POSIXWAIT_H_$/;" d +_POSIX_PATH_MAX lib/intl/dcigettext.c /^# define _POSIX_PATH_MAX /;" d file: +_POSIX_SOURCE include/shtty.h /^# define _POSIX_SOURCE$/;" d +_POSIX_VDISABLE lib/readline/rltty.h /^# define _POSIX_VDISABLE /;" d +_POSIX_VDISABLE lib/readline/rltty.h /^# define _POSIX_VDISABLE /;" d +_QUIT_H_ quit.h /^#define _QUIT_H_$/;" d +_READLINE_H_ lib/readline/readline.h /^#define _READLINE_H_$/;" d +_REDIR_H_ redir.h /^#define _REDIR_H_$/;" d +_RELOCATABLE_H lib/intl/relocatable.h /^#define _RELOCATABLE_H$/;" d +_RLCONF_H_ lib/readline/rlconf.h /^#define _RLCONF_H_$/;" d +_RLDEFS_H_ lib/readline/rldefs.h /^#define _RLDEFS_H_$/;" d +_RLTCAP_H_ lib/readline/tcap.h /^#define _RLTCAP_H_$/;" d +_RLTTY_H_ lib/readline/rltty.h /^#define _RLTTY_H_$/;" d +_RLWINSIZE_H_ lib/readline/rlwinsize.h /^#define _RLWINSIZE_H_$/;" d +_RL_FIX_POINT lib/readline/text.c /^#define _RL_FIX_POINT(/;" d file: +_RL_FUNCTION_TYPEDEF lib/readline/rltypedefs.h /^# define _RL_FUNCTION_TYPEDEF$/;" d +_RL_MBUTIL_H_ lib/readline/rlmbutil.h /^#define _RL_MBUTIL_H_$/;" d +_RL_PRIVATE_H_ lib/readline/rlprivate.h /^#define _RL_PRIVATE_H_$/;" d +_RL_SHELL_H_ lib/readline/rlshell.h /^#define _RL_SHELL_H_$/;" d +_RL_STDC_H_ lib/readline/rlstdc.h /^#define _RL_STDC_H_$/;" d +_RL_TTY_CHARS lib/readline/rltty.h /^} _RL_TTY_CHARS;$/;" t typeref:struct:_rl_tty_chars +_RL_TTY_CHARS r_readline/src/lib.rs /^pub type _RL_TTY_CHARS = _rl_tty_chars;$/;" t +_RL_TYPEDEFS_H_ lib/readline/rltypedefs.h /^#define _RL_TYPEDEFS_H_$/;" d +_SHMBCHAR_H include/shmbchar.h /^#define _SHMBCHAR_H /;" d +_SH_CHARTYPES_H include/chartypes.h /^#define _SH_CHARTYPES_H$/;" d +_SH_GETOPT_H builtins/getopt.h /^#define _SH_GETOPT_H /;" d +_SH_MALLOC_H lib/malloc/shmalloc.h /^#define _SH_MALLOC_H$/;" d +_SH_MBUTIL_H_ include/shmbutil.h /^#define _SH_MBUTIL_H_$/;" d +_SH_TYPEMAX_H include/typemax.h /^#define _SH_TYPEMAX_H$/;" d +_SIGLIST_H_ siglist.h /^#define _SIGLIST_H_$/;" d +_SIG_H_ sig.h /^# define _SIG_H_$/;" d +_SLAB vendor/slab/tests/slab.rs /^ static _SLAB: Slab<()> = Slab::new();$/;" v function:const_new +_STDC_H_ include/stdc.h /^#define _STDC_H_$/;" d +_STDLIB_H_ include/ansi_stdlib.h /^#define _STDLIB_H_ /;" d +_STDLIB_H_ lib/readline/ansi_stdlib.h /^#define _STDLIB_H_ /;" d +_STRMATCH_H lib/glob/strmatch.h /^#define _STRMATCH_H /;" d +_SUBST_H_ subst.h /^#define _SUBST_H_$/;" d +_SYNTAX_H_ syntax.h /^#define _SYNTAX_H_$/;" d +_TANDEM_SOURCE lib/readline/colors.c /^# define _TANDEM_SOURCE /;" d file: +_TANDEM_SOURCE lib/readline/input.c /^# define _TANDEM_SOURCE /;" d file: +_TERMCAP_H lib/termcap/termcap.h /^#define _TERMCAP_H /;" d +_TEST_H_ test.h /^#define _TEST_H_$/;" d +_TEXT lib/malloc/x386-alloca.s /^_TEXT SEGMENT DWORD USE32 PUBLIC 'CODE'$/;" l +_TILDE_H_ lib/readline/tilde.h /^# define _TILDE_H_$/;" d +_TILDE_H_ lib/tilde/tilde.h /^# define _TILDE_H_$/;" d +_TRAP_H_ trap.h /^#define _TRAP_H_$/;" d +_Test vendor/syn/src/error.rs /^struct _Test$/;" s +_TrackMouseEvent vendor/winapi/src/um/commctrl.rs /^ pub fn _TrackMouseEvent($/;" f +_UNIONWAIT_H include/unionwait.h /^#define _UNIONWAIT_H$/;" d +_UNWIND_PROT_H unwind_prot.h /^#define _UNWIND_PROT_H$/;" d +_VARIABLES_H_ variables.h /^#define _VARIABLES_H_$/;" d +_Vx_CONDVAR_ID vendor/libc/src/vxworks/mod.rs /^pub type _Vx_CONDVAR_ID = ::_Vx_OBJ_HANDLE;$/;" t +_Vx_MSG_Q_ID vendor/libc/src/vxworks/mod.rs /^pub type _Vx_MSG_Q_ID = ::_Vx_OBJ_HANDLE;$/;" t +_Vx_OBJ_HANDLE vendor/libc/src/vxworks/mod.rs /^pub type _Vx_OBJ_HANDLE = ::c_int;$/;" t +_Vx_RTP_ID vendor/libc/src/vxworks/mod.rs /^pub type _Vx_RTP_ID = ::_Vx_OBJ_HANDLE;$/;" t +_Vx_SD_ID vendor/libc/src/vxworks/mod.rs /^pub type _Vx_SD_ID = ::_Vx_OBJ_HANDLE;$/;" t +_Vx_SEM_ID vendor/libc/src/vxworks/mod.rs /^pub type _Vx_SEM_ID = *mut ::_Vx_semaphore;$/;" t +_Vx_SEM_ID_KERNEL vendor/libc/src/vxworks/mod.rs /^pub type _Vx_SEM_ID_KERNEL = ::_Vx_OBJ_HANDLE;$/;" t +_Vx_TASK_ID vendor/libc/src/vxworks/mod.rs /^pub type _Vx_TASK_ID = ::_Vx_OBJ_HANDLE;$/;" t +_Vx_exit_code_t vendor/libc/src/vxworks/mod.rs /^pub type _Vx_exit_code_t = isize;$/;" t +_Vx_semaphore vendor/libc/src/vxworks/mod.rs /^impl ::Clone for _Vx_semaphore {$/;" c +_Vx_semaphore vendor/libc/src/vxworks/mod.rs /^impl ::Copy for _Vx_semaphore {}$/;" c +_Vx_semaphore vendor/libc/src/vxworks/mod.rs /^pub enum _Vx_semaphore {}$/;" g +_Vx_ticks64_t vendor/libc/src/vxworks/mod.rs /^pub type _Vx_ticks64_t = ::c_ulonglong;$/;" t +_Vx_ticks_t vendor/libc/src/vxworks/mod.rs /^pub type _Vx_ticks_t = ::c_uint;$/;" t +_Vx_usr_arg_t vendor/libc/src/vxworks/mod.rs /^pub type _Vx_usr_arg_t = isize;$/;" t +_WS2_32_WINSOCK_SWAP_LONG vendor/winapi/src/um/winsock2.rs /^pub fn _WS2_32_WINSOCK_SWAP_LONG(l: __uint32) -> __uint32 {$/;" f +_WS2_32_WINSOCK_SWAP_LONGLONG vendor/winapi/src/um/winsock2.rs /^pub fn _WS2_32_WINSOCK_SWAP_LONGLONG(l: __uint64) -> __uint64 {$/;" f +_XMALLOC_H_ lib/readline/xmalloc.h /^#define _XMALLOC_H_$/;" d +_XMALLOC_H_ xmalloc.h /^#define _XMALLOC_H_$/;" d +_XOPEN_SOURCE_EXTENDED lib/readline/colors.c /^# define _XOPEN_SOURCE_EXTENDED /;" d file: +_XOPEN_SOURCE_EXTENDED lib/readline/complete.c /^# define _XOPEN_SOURCE_EXTENDED /;" d file: +_XOPEN_SOURCE_EXTENDED lib/readline/histfile.c /^# define _XOPEN_SOURCE_EXTENDED /;" d file: +_XOPEN_SOURCE_EXTENDED lib/readline/input.c /^# define _XOPEN_SOURCE_EXTENDED /;" d file: +__BASH_GETOPT_H builtins/bashgetopt.h /^# define __BASH_GETOPT_H$/;" d +__BindgenBitfieldUnit r_bash/src/lib.rs /^impl __BindgenBitfieldUnit$/;" c +__BindgenBitfieldUnit r_bash/src/lib.rs /^pub struct __BindgenBitfieldUnit$/;" s +__BindgenBitfieldUnit r_readline/src/lib.rs /^impl __BindgenBitfieldUnit$/;" c +__BindgenBitfieldUnit r_readline/src/lib.rs /^pub struct __BindgenBitfieldUnit$/;" s +__CMSG_LEN vendor/libc/src/fuchsia/mod.rs /^fn __CMSG_LEN(cmsg: *const cmsghdr) -> ::ssize_t {$/;" f +__CMSG_NEXT vendor/libc/src/fuchsia/mod.rs /^fn __CMSG_NEXT(cmsg: *const cmsghdr) -> *mut c_uchar {$/;" f +__COLLSYM lib/glob/collsyms.h /^} __COLLSYM;$/;" t typeref:struct:_COLLSYM +__COLLSYM lib/glob/smatch.c /^# define __COLLSYM /;" d file: +__COLLSYM lib/glob/smatch.c /^#define __COLLSYM /;" d file: +__COLLSYM r_glob/src/lib.rs /^pub type __COLLSYM = _COLLSYM;$/;" t +__COMMON_H builtins/common.h /^# define __COMMON_H$/;" d +__CPU_BITTYPE vendor/libc/src/unix/linux_like/android/mod.rs /^pub type __CPU_BITTYPE = ::c_ulong;$/;" t +__FILE r_bash/src/lib.rs /^pub type __FILE = _IO_FILE;$/;" t +__FILE r_glob/src/lib.rs /^pub type __FILE = _IO_FILE;$/;" t +__FILE r_readline/src/lib.rs /^pub type __FILE = _IO_FILE;$/;" t +__GNU_GETTEXT_SUPPORTED_REVISION lib/intl/libgnuintl.h.in /^#define __GNU_GETTEXT_SUPPORTED_REVISION(/;" d file: +__HPUX10_DLFCN_H__ CWRU/misc/hpux10-dlfcn.h /^#define __HPUX10_DLFCN_H__$/;" d +__IncompleteArrayField r_bash/src/lib.rs /^impl ::core::clone::Clone for __IncompleteArrayField {$/;" c +__IncompleteArrayField r_bash/src/lib.rs /^impl ::core::fmt::Debug for __IncompleteArrayField {$/;" c +__IncompleteArrayField r_bash/src/lib.rs /^impl __IncompleteArrayField {$/;" c +__IncompleteArrayField r_bash/src/lib.rs /^pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]);$/;" s +__MHDR_END vendor/libc/src/fuchsia/mod.rs /^fn __MHDR_END(mhdr: *const msghdr) -> *mut c_uchar {$/;" f +__Origin vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ pub struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ pub struct __Origin<'__pin, T, U> {$/;" s +__Origin vendor/pin-project-lite/tests/ui/pin_project/overlapping_unpin_struct.rs /^impl Unpin for __Origin {}$/;" c +__Origin vendor/pin-project-lite/tests/ui/pin_project/overlapping_unpin_struct.rs /^struct __Origin {}$/;" s +__Origin vendor/pin-project-lite/tests/ui/pin_project/unpin_sneaky.rs /^impl Unpin for __Origin {} \/\/~ ERROR E0412,E0321$/;" c +__SH_TTY_H_ include/shtty.h /^#define __SH_TTY_H_$/;" d +__USE_GNU_GETTEXT lib/intl/libgnuintl.h.in /^#define __USE_GNU_GETTEXT /;" d file: +__WIFSTOPPED r_jobs/src/lib.rs /^macro_rules! __WIFSTOPPED {$/;" M +__WSAFDIsSet vendor/winapi/src/um/winsock2.rs /^ pub fn __WSAFDIsSet($/;" f +___errno vendor/libc/src/unix/solarish/mod.rs /^ pub fn ___errno() -> *mut ::c_int;$/;" f +__a r_bash/src/lib.rs /^ pub __a: ::std::os::raw::c_ulonglong,$/;" m struct:drand48_data +__a r_glob/src/lib.rs /^ pub __a: ::std::os::raw::c_ulonglong,$/;" m struct:drand48_data +__a r_readline/src/lib.rs /^ pub __a: ::std::os::raw::c_ulonglong,$/;" m struct:drand48_data +__anon073224090103 jobs.h /^typedef enum { JNONE = -1, JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } JOB_STATE;$/;" g +__anon0d8c0d340108 general.c /^static struct {$/;" s file: +__anon0d8c0d390108 general.h /^typedef struct {$/;" s +__anon177730800108 lib/readline/signals.c /^typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt;$/;" s file: +__anon1a8f3b140103 lib/intl/explodename.c /^ enum { undecided, xpg, cen } syntax;$/;" g function:_nl_explode_name file: +__anon24f111ec0108 include/unionwait.h /^ {$/;" s union:wait +__anon24f111ec0208 include/unionwait.h /^ {$/;" s union:wait +__anon24f111ec0308 include/unionwait.h /^ {$/;" s union:wait +__anon24f111ec0408 include/unionwait.h /^ {$/;" s union:wait +__anon3aaf009a010a command.h /^typedef union {$/;" u +__anon3aaf009a020a command.h /^ union {$/;" u struct:command +__anon4ea329890103 lib/readline/parse-colors.c /^ enum {$/;" g function:get_funky_string file: +__anon5806582f0108 unwind_prot.c /^typedef struct {$/;" s file: +__anon5806582f0208 unwind_prot.c /^ struct {$/;" s union:uwp file: +__anon5806582f0308 unwind_prot.c /^ struct {$/;" s union:uwp file: +__anon69e836710108 builtins/mkbuiltins.c /^typedef struct {$/;" s file: +__anon69e836710208 builtins/mkbuiltins.c /^typedef struct {$/;" s file: +__anon69e836710308 builtins/mkbuiltins.c /^typedef struct {$/;" s file: +__anon69e836710408 builtins/mkbuiltins.c /^typedef struct {$/;" s file: +__anon7144754c0108 lib/readline/bind.c /^static const struct {$/;" s file: +__anon7144754c0208 lib/readline/bind.c /^static const struct {$/;" s file: +__anon7144754c0308 lib/readline/bind.c /^static const struct {$/;" s file: +__anon7144754c0408 lib/readline/bind.c /^typedef struct {$/;" s file: +__anon92221f0e0108 shell.c /^static const struct {$/;" s file: +__anon93874cf10103 lib/intl/plural-exp.h /^ {$/;" g struct:expression +__anon93874cf1020a lib/intl/plural-exp.h /^ {$/;" u struct:expression +__anon943e93fb0108 lib/malloc/malloc.c /^ struct {$/;" s union:mhead file: +__anon9f26d24b010a input.h /^typedef union {$/;" u +__anon9f26d24b0208 input.h /^typedef struct {$/;" s +__anona16f3dc10108 lib/glob/ndir.h /^typedef struct {$/;" s +__anonbfd4ee390108 lib/readline/examples/fileman.c /^typedef struct {$/;" s file: +__anond018e22f0108 lib/malloc/alloca.c /^ {$/;" s union:hdr file: +__anonfc32de750108 expr.c /^typedef struct {$/;" s file: +__argz_count lib/intl/l10nflist.c /^# define __argz_count(/;" d file: +__argz_count lib/intl/l10nflist.c /^# define __argz_count(/;" d file: +__argz_next lib/intl/l10nflist.c /^# define __argz_next(/;" d file: +__argz_stringify lib/intl/l10nflist.c /^# define __argz_stringify(/;" d file: +__argz_stringify lib/intl/l10nflist.c /^# define __argz_stringify(/;" d file: +__asprintf r_bash/src/lib.rs /^ pub fn __asprintf($/;" f +__asprintf r_readline/src/lib.rs /^ pub fn __asprintf($/;" f +__assert_not_repr_packed vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ fn __assert_not_repr_packed(this: &Struct) {$/;" f +__assert_not_repr_packed vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ fn __assert_not_repr_packed(this: &Struct) {$/;" f +__assert_not_repr_packed vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ fn __assert_not_repr_packed(this: &Struct) {$/;" f +__assert_not_repr_packed vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ fn __assert_not_repr_packed(this: &Struct) {$/;" f +__assert_not_repr_packed vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ fn __assert_not_repr_packed(this: &Struct) {$/;" f +__assert_not_repr_packed vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ fn __assert_not_repr_packed(this: &Struct) {$/;" f +__assert_not_repr_packed vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ fn __assert_not_repr_packed(this: &Struct) {$/;" f +__assert_not_repr_packed vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ fn __assert_not_repr_packed(this: &Struct) {$/;" f +__attribute__ include/stdc.h /^# define __attribute__(/;" d +__attribute__ lib/readline/rlstdc.h /^# define __attribute__(/;" d +__bindgen_align r_bash/src/lib.rs /^ pub __bindgen_align: [u16; 0usize],$/;" m struct:wait__bindgen_ty_1 +__bindgen_align r_bash/src/lib.rs /^ pub __bindgen_align: [u16; 0usize],$/;" m struct:wait__bindgen_ty_2 +__bindgen_anon_1 builtins_rust/wait/src/signal.rs /^ pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1,$/;" m struct:__pthread_cond_s +__bindgen_anon_1 builtins_rust/wait/src/signal.rs /^ pub __bindgen_anon_1: sigcontext__bindgen_ty_1,$/;" m struct:sigcontext +__bindgen_anon_1 r_bash/src/lib.rs /^ pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1,$/;" m struct:__pthread_cond_s +__bindgen_anon_1 r_bash/src/lib.rs /^ pub __bindgen_anon_1: rusage__bindgen_ty_1,$/;" m struct:rusage +__bindgen_anon_1 r_bash/src/lib.rs /^ pub __bindgen_anon_1: sigcontext__bindgen_ty_1,$/;" m struct:sigcontext +__bindgen_anon_1 r_glob/src/lib.rs /^ pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1,$/;" m struct:__pthread_cond_s +__bindgen_anon_1 r_glob/src/lib.rs /^ pub __bindgen_anon_1: rusage__bindgen_ty_1,$/;" m struct:rusage +__bindgen_anon_1 r_glob/src/lib.rs /^ pub __bindgen_anon_1: sigcontext__bindgen_ty_1,$/;" m struct:sigcontext +__bindgen_anon_1 r_readline/src/lib.rs /^ pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1,$/;" m struct:__pthread_cond_s +__bindgen_anon_1 r_readline/src/lib.rs /^ pub __bindgen_anon_1: rusage__bindgen_ty_1,$/;" m struct:rusage +__bindgen_anon_1 r_readline/src/lib.rs /^ pub __bindgen_anon_1: sigcontext__bindgen_ty_1,$/;" m struct:sigcontext +__bindgen_anon_10 r_bash/src/lib.rs /^ pub __bindgen_anon_10: rusage__bindgen_ty_10,$/;" m struct:rusage +__bindgen_anon_10 r_glob/src/lib.rs /^ pub __bindgen_anon_10: rusage__bindgen_ty_10,$/;" m struct:rusage +__bindgen_anon_10 r_readline/src/lib.rs /^ pub __bindgen_anon_10: rusage__bindgen_ty_10,$/;" m struct:rusage +__bindgen_anon_11 r_bash/src/lib.rs /^ pub __bindgen_anon_11: rusage__bindgen_ty_11,$/;" m struct:rusage +__bindgen_anon_11 r_glob/src/lib.rs /^ pub __bindgen_anon_11: rusage__bindgen_ty_11,$/;" m struct:rusage +__bindgen_anon_11 r_readline/src/lib.rs /^ pub __bindgen_anon_11: rusage__bindgen_ty_11,$/;" m struct:rusage +__bindgen_anon_12 r_bash/src/lib.rs /^ pub __bindgen_anon_12: rusage__bindgen_ty_12,$/;" m struct:rusage +__bindgen_anon_12 r_glob/src/lib.rs /^ pub __bindgen_anon_12: rusage__bindgen_ty_12,$/;" m struct:rusage +__bindgen_anon_12 r_readline/src/lib.rs /^ pub __bindgen_anon_12: rusage__bindgen_ty_12,$/;" m struct:rusage +__bindgen_anon_13 r_bash/src/lib.rs /^ pub __bindgen_anon_13: rusage__bindgen_ty_13,$/;" m struct:rusage +__bindgen_anon_13 r_glob/src/lib.rs /^ pub __bindgen_anon_13: rusage__bindgen_ty_13,$/;" m struct:rusage +__bindgen_anon_13 r_readline/src/lib.rs /^ pub __bindgen_anon_13: rusage__bindgen_ty_13,$/;" m struct:rusage +__bindgen_anon_14 r_bash/src/lib.rs /^ pub __bindgen_anon_14: rusage__bindgen_ty_14,$/;" m struct:rusage +__bindgen_anon_14 r_glob/src/lib.rs /^ pub __bindgen_anon_14: rusage__bindgen_ty_14,$/;" m struct:rusage +__bindgen_anon_14 r_readline/src/lib.rs /^ pub __bindgen_anon_14: rusage__bindgen_ty_14,$/;" m struct:rusage +__bindgen_anon_2 builtins_rust/wait/src/signal.rs /^ pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2,$/;" m struct:__pthread_cond_s +__bindgen_anon_2 r_bash/src/lib.rs /^ pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2,$/;" m struct:__pthread_cond_s +__bindgen_anon_2 r_bash/src/lib.rs /^ pub __bindgen_anon_2: rusage__bindgen_ty_2,$/;" m struct:rusage +__bindgen_anon_2 r_glob/src/lib.rs /^ pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2,$/;" m struct:__pthread_cond_s +__bindgen_anon_2 r_glob/src/lib.rs /^ pub __bindgen_anon_2: rusage__bindgen_ty_2,$/;" m struct:rusage +__bindgen_anon_2 r_readline/src/lib.rs /^ pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2,$/;" m struct:__pthread_cond_s +__bindgen_anon_2 r_readline/src/lib.rs /^ pub __bindgen_anon_2: rusage__bindgen_ty_2,$/;" m struct:rusage +__bindgen_anon_3 r_bash/src/lib.rs /^ pub __bindgen_anon_3: rusage__bindgen_ty_3,$/;" m struct:rusage +__bindgen_anon_3 r_glob/src/lib.rs /^ pub __bindgen_anon_3: rusage__bindgen_ty_3,$/;" m struct:rusage +__bindgen_anon_3 r_readline/src/lib.rs /^ pub __bindgen_anon_3: rusage__bindgen_ty_3,$/;" m struct:rusage +__bindgen_anon_4 r_bash/src/lib.rs /^ pub __bindgen_anon_4: rusage__bindgen_ty_4,$/;" m struct:rusage +__bindgen_anon_4 r_glob/src/lib.rs /^ pub __bindgen_anon_4: rusage__bindgen_ty_4,$/;" m struct:rusage +__bindgen_anon_4 r_readline/src/lib.rs /^ pub __bindgen_anon_4: rusage__bindgen_ty_4,$/;" m struct:rusage +__bindgen_anon_5 r_bash/src/lib.rs /^ pub __bindgen_anon_5: rusage__bindgen_ty_5,$/;" m struct:rusage +__bindgen_anon_5 r_glob/src/lib.rs /^ pub __bindgen_anon_5: rusage__bindgen_ty_5,$/;" m struct:rusage +__bindgen_anon_5 r_readline/src/lib.rs /^ pub __bindgen_anon_5: rusage__bindgen_ty_5,$/;" m struct:rusage +__bindgen_anon_6 r_bash/src/lib.rs /^ pub __bindgen_anon_6: rusage__bindgen_ty_6,$/;" m struct:rusage +__bindgen_anon_6 r_glob/src/lib.rs /^ pub __bindgen_anon_6: rusage__bindgen_ty_6,$/;" m struct:rusage +__bindgen_anon_6 r_readline/src/lib.rs /^ pub __bindgen_anon_6: rusage__bindgen_ty_6,$/;" m struct:rusage +__bindgen_anon_7 r_bash/src/lib.rs /^ pub __bindgen_anon_7: rusage__bindgen_ty_7,$/;" m struct:rusage +__bindgen_anon_7 r_glob/src/lib.rs /^ pub __bindgen_anon_7: rusage__bindgen_ty_7,$/;" m struct:rusage +__bindgen_anon_7 r_readline/src/lib.rs /^ pub __bindgen_anon_7: rusage__bindgen_ty_7,$/;" m struct:rusage +__bindgen_anon_8 r_bash/src/lib.rs /^ pub __bindgen_anon_8: rusage__bindgen_ty_8,$/;" m struct:rusage +__bindgen_anon_8 r_glob/src/lib.rs /^ pub __bindgen_anon_8: rusage__bindgen_ty_8,$/;" m struct:rusage +__bindgen_anon_8 r_readline/src/lib.rs /^ pub __bindgen_anon_8: rusage__bindgen_ty_8,$/;" m struct:rusage +__bindgen_anon_9 r_bash/src/lib.rs /^ pub __bindgen_anon_9: rusage__bindgen_ty_9,$/;" m struct:rusage +__bindgen_anon_9 r_glob/src/lib.rs /^ pub __bindgen_anon_9: rusage__bindgen_ty_9,$/;" m struct:rusage +__bindgen_anon_9 r_readline/src/lib.rs /^ pub __bindgen_anon_9: rusage__bindgen_ty_9,$/;" m struct:rusage +__blkcnt64_t builtins_rust/wait/src/signal.rs /^pub type __blkcnt64_t = ::std::os::raw::c_long;$/;" t +__blkcnt64_t r_bash/src/lib.rs /^pub type __blkcnt64_t = ::std::os::raw::c_long;$/;" t +__blkcnt64_t r_glob/src/lib.rs /^pub type __blkcnt64_t = ::std::os::raw::c_long;$/;" t +__blkcnt64_t r_readline/src/lib.rs /^pub type __blkcnt64_t = ::std::os::raw::c_long;$/;" t +__blkcnt_t builtins_rust/wait/src/signal.rs /^pub type __blkcnt_t = ::std::os::raw::c_long;$/;" t +__blkcnt_t r_bash/src/lib.rs /^pub type __blkcnt_t = ::std::os::raw::c_long;$/;" t +__blkcnt_t r_glob/src/lib.rs /^pub type __blkcnt_t = ::std::os::raw::c_long;$/;" t +__blkcnt_t r_readline/src/lib.rs /^pub type __blkcnt_t = ::std::os::raw::c_long;$/;" t +__blksize_t builtins_rust/wait/src/signal.rs /^pub type __blksize_t = ::std::os::raw::c_long;$/;" t +__blksize_t r_bash/src/lib.rs /^pub type __blksize_t = ::std::os::raw::c_long;$/;" t +__blksize_t r_glob/src/lib.rs /^pub type __blksize_t = ::std::os::raw::c_long;$/;" t +__blksize_t r_readline/src/lib.rs /^pub type __blksize_t = ::std::os::raw::c_long;$/;" t +__break vendor/smallvec/tests/debugger_visualizer.rs /^fn __break() {}$/;" f +__builtin_expect lib/intl/gettextP.h /^# define __builtin_expect(/;" d +__builtin_expect lib/intl/loadinfo.h /^# define __builtin_expect(/;" d +__builtin_va_list r_bash/src/lib.rs /^pub type __builtin_va_list = [__va_list_tag; 1usize];$/;" t +__builtin_va_list r_glob/src/lib.rs /^pub type __builtin_va_list = [__va_list_tag; 1usize];$/;" t +__builtin_va_list r_readline/src/lib.rs /^pub type __builtin_va_list = [__va_list_tag; 1usize];$/;" t +__c r_bash/src/lib.rs /^ pub __c: ::std::os::raw::c_ushort,$/;" m struct:drand48_data +__c r_glob/src/lib.rs /^ pub __c: ::std::os::raw::c_ushort,$/;" m struct:drand48_data +__c r_readline/src/lib.rs /^ pub __c: ::std::os::raw::c_ushort,$/;" m struct:drand48_data +__caddr_t builtins_rust/wait/src/signal.rs /^pub type __caddr_t = *mut ::std::os::raw::c_char;$/;" t +__caddr_t r_bash/src/lib.rs /^pub type __caddr_t = *mut ::std::os::raw::c_char;$/;" t +__caddr_t r_glob/src/lib.rs /^pub type __caddr_t = *mut ::std::os::raw::c_char;$/;" t +__caddr_t r_readline/src/lib.rs /^pub type __caddr_t = *mut ::std::os::raw::c_char;$/;" t +__caddr_t vendor/libc/src/solid/mod.rs /^pub type __caddr_t = *mut c_char;$/;" t +__cap_rights_clear vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn __cap_rights_clear(rights: *mut cap_rights_t, ...) -> *mut cap_rights_t;$/;" f +__cap_rights_init vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn __cap_rights_init(version: ::c_int, rights: *mut cap_rights_t, ...)$/;" f +__cap_rights_is_set vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn __cap_rights_is_set(rights: *const cap_rights_t, ...) -> bool;$/;" f +__cap_rights_set vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn __cap_rights_set(rights: *mut cap_rights_t, ...) -> *mut cap_rights_t;$/;" f +__clock_t builtins_rust/wait/src/signal.rs /^pub type __clock_t = ::std::os::raw::c_long;$/;" t +__clock_t r_bash/src/lib.rs /^pub type __clock_t = ::std::os::raw::c_long;$/;" t +__clock_t r_glob/src/lib.rs /^pub type __clock_t = ::std::os::raw::c_long;$/;" t +__clock_t r_readline/src/lib.rs /^pub type __clock_t = ::std::os::raw::c_long;$/;" t +__clockid_t builtins_rust/wait/src/signal.rs /^pub type __clockid_t = ::std::os::raw::c_int;$/;" t +__clockid_t r_bash/src/lib.rs /^pub type __clockid_t = ::std::os::raw::c_int;$/;" t +__clockid_t r_glob/src/lib.rs /^pub type __clockid_t = ::std::os::raw::c_int;$/;" t +__clockid_t r_readline/src/lib.rs /^pub type __clockid_t = ::std::os::raw::c_int;$/;" t +__compar_d_fn_t r_bash/src/lib.rs /^pub type __compar_d_fn_t = ::core::option::Option<$/;" t +__compar_d_fn_t r_glob/src/lib.rs /^pub type __compar_d_fn_t = ::core::option::Option<$/;" t +__compar_d_fn_t r_readline/src/lib.rs /^pub type __compar_d_fn_t = ::core::option::Option<$/;" t +__compar_fn_t r_bash/src/lib.rs /^pub type __compar_fn_t = ::core::option::Option<$/;" t +__compar_fn_t r_glob/src/lib.rs /^pub type __compar_fn_t = ::core::option::Option<$/;" t +__compar_fn_t r_readline/src/lib.rs /^pub type __compar_fn_t = ::core::option::Option<$/;" t +__count builtins_rust/printf/src/intercdep.rs /^ pub __count: c_int,$/;" m struct:__mbstate_t +__count builtins_rust/read/src/intercdep.rs /^ pub __count: c_int,$/;" m struct:__mbstate_t +__count builtins_rust/wait/src/signal.rs /^ pub __count: ::std::os::raw::c_uint,$/;" m struct:__pthread_mutex_s +__count r_bash/src/lib.rs /^ pub __count: ::std::os::raw::c_int,$/;" m struct:__mbstate_t +__count r_bash/src/lib.rs /^ pub __count: ::std::os::raw::c_uint,$/;" m struct:__pthread_mutex_s +__count r_glob/src/lib.rs /^ pub __count: ::std::os::raw::c_int,$/;" m struct:__mbstate_t +__count r_glob/src/lib.rs /^ pub __count: ::std::os::raw::c_uint,$/;" m struct:__pthread_mutex_s +__count r_readline/src/lib.rs /^ pub __count: ::std::os::raw::c_int,$/;" m struct:__mbstate_t +__count r_readline/src/lib.rs /^ pub __count: ::std::os::raw::c_uint,$/;" m struct:__pthread_mutex_s +__cpu_simple_lock_nv_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/aarch64.rs /^pub type __cpu_simple_lock_nv_t = ::c_uchar;$/;" t +__cpu_simple_lock_nv_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/arm.rs /^pub type __cpu_simple_lock_nv_t = ::c_int;$/;" t +__cpu_simple_lock_nv_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/powerpc.rs /^pub type __cpu_simple_lock_nv_t = ::c_int;$/;" t +__cpu_simple_lock_nv_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/sparc64.rs /^pub type __cpu_simple_lock_nv_t = ::c_uchar;$/;" t +__cpu_simple_lock_nv_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/x86.rs /^pub type __cpu_simple_lock_nv_t = ::c_uchar;$/;" t +__cpu_simple_lock_nv_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/x86_64.rs /^pub type __cpu_simple_lock_nv_t = ::c_uchar;$/;" t +__ctype_b r_bash/src/lib.rs /^ pub __ctype_b: *const ::std::os::raw::c_ushort,$/;" m struct:__locale_struct +__ctype_b r_glob/src/lib.rs /^ pub __ctype_b: *const ::std::os::raw::c_ushort,$/;" m struct:__locale_struct +__ctype_b r_readline/src/lib.rs /^ pub __ctype_b: *const ::std::os::raw::c_ushort,$/;" m struct:__locale_struct +__ctype_b_loc r_bash/src/lib.rs /^ pub fn __ctype_b_loc() -> *mut *const ::std::os::raw::c_ushort;$/;" f +__ctype_b_loc r_glob/src/lib.rs /^ pub fn __ctype_b_loc() -> *mut *const ::std::os::raw::c_ushort;$/;" f +__ctype_b_loc r_readline/src/lib.rs /^ pub fn __ctype_b_loc() -> *mut *const ::std::os::raw::c_ushort;$/;" f +__ctype_get_mb_cur_max r_bash/src/lib.rs /^ pub fn __ctype_get_mb_cur_max() -> usize;$/;" f +__ctype_get_mb_cur_max r_glob/src/lib.rs /^ pub fn __ctype_get_mb_cur_max() -> usize;$/;" f +__ctype_get_mb_cur_max r_readline/src/lib.rs /^ pub fn __ctype_get_mb_cur_max() -> usize;$/;" f +__ctype_tolower r_bash/src/lib.rs /^ pub __ctype_tolower: *const ::std::os::raw::c_int,$/;" m struct:__locale_struct +__ctype_tolower r_glob/src/lib.rs /^ pub __ctype_tolower: *const ::std::os::raw::c_int,$/;" m struct:__locale_struct +__ctype_tolower r_readline/src/lib.rs /^ pub __ctype_tolower: *const ::std::os::raw::c_int,$/;" m struct:__locale_struct +__ctype_tolower_loc r_bash/src/lib.rs /^ pub fn __ctype_tolower_loc() -> *mut *const __int32_t;$/;" f +__ctype_tolower_loc r_glob/src/lib.rs /^ pub fn __ctype_tolower_loc() -> *mut *const __int32_t;$/;" f +__ctype_tolower_loc r_readline/src/lib.rs /^ pub fn __ctype_tolower_loc() -> *mut *const __int32_t;$/;" f +__ctype_toupper r_bash/src/lib.rs /^ pub __ctype_toupper: *const ::std::os::raw::c_int,$/;" m struct:__locale_struct +__ctype_toupper r_glob/src/lib.rs /^ pub __ctype_toupper: *const ::std::os::raw::c_int,$/;" m struct:__locale_struct +__ctype_toupper r_readline/src/lib.rs /^ pub __ctype_toupper: *const ::std::os::raw::c_int,$/;" m struct:__locale_struct +__ctype_toupper_loc r_bash/src/lib.rs /^ pub fn __ctype_toupper_loc() -> *mut *const __int32_t;$/;" f +__ctype_toupper_loc r_glob/src/lib.rs /^ pub fn __ctype_toupper_loc() -> *mut *const __int32_t;$/;" f +__ctype_toupper_loc r_readline/src/lib.rs /^ pub fn __ctype_toupper_loc() -> *mut *const __int32_t;$/;" f +__cur_writer builtins_rust/wait/src/signal.rs /^ pub __cur_writer: ::std::os::raw::c_int,$/;" m struct:__pthread_rwlock_arch_t +__cur_writer r_bash/src/lib.rs /^ pub __cur_writer: ::std::os::raw::c_int,$/;" m struct:__pthread_rwlock_arch_t +__cur_writer r_glob/src/lib.rs /^ pub __cur_writer: ::std::os::raw::c_int,$/;" m struct:__pthread_rwlock_arch_t +__cur_writer r_readline/src/lib.rs /^ pub __cur_writer: ::std::os::raw::c_int,$/;" m struct:__pthread_rwlock_arch_t +__daddr_t builtins_rust/wait/src/signal.rs /^pub type __daddr_t = ::std::os::raw::c_int;$/;" t +__daddr_t r_bash/src/lib.rs /^pub type __daddr_t = ::std::os::raw::c_int;$/;" t +__daddr_t r_glob/src/lib.rs /^pub type __daddr_t = ::std::os::raw::c_int;$/;" t +__daddr_t r_readline/src/lib.rs /^pub type __daddr_t = ::std::os::raw::c_int;$/;" t +__daylight r_bash/src/lib.rs /^ pub static mut __daylight: ::std::os::raw::c_int;$/;" v +__daylight r_readline/src/lib.rs /^ pub static mut __daylight: ::std::os::raw::c_int;$/;" v +__dcgettext r_bash/src/lib.rs /^ pub fn __dcgettext($/;" f +__detachstate vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^ pub __detachstate: ::c_int,$/;" m struct:pthread_attr_t +__dev_t builtins_rust/wait/src/signal.rs /^pub type __dev_t = ::std::os::raw::c_ulong;$/;" t +__dev_t r_bash/src/lib.rs /^pub type __dev_t = ::std::os::raw::c_ulong;$/;" t +__dev_t r_glob/src/lib.rs /^pub type __dev_t = ::std::os::raw::c_ulong;$/;" t +__dev_t r_readline/src/lib.rs /^pub type __dev_t = ::std::os::raw::c_ulong;$/;" t +__dgettext r_bash/src/lib.rs /^ pub fn __dgettext($/;" f +__dirstream r_bash/src/lib.rs /^pub struct __dirstream {$/;" s +__dirstream r_readline/src/lib.rs /^pub struct __dirstream {$/;" s +__drop_inner vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ fn __drop_inner() {}$/;" f function:Enum::drop::__drop_inner +__drop_inner vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ fn __drop_inner(this: ::pin_project_lite::__private::Pin<&mut Enum>) {$/;" f method:Enum::drop +__drop_inner vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ fn __drop_inner() {}$/;" f function:Struct::drop::__drop_inner +__drop_inner vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ fn __drop_inner(this: ::pin_project_lite::__private::Pin<&mut Struct>) {$/;" f method:Struct::drop +__dummy_lifetime vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__dummy_lifetime vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ __dummy_lifetime: ::pin_project_lite::__private::PhantomData<&'__pin ()>,$/;" m struct:__Origin +__elision builtins_rust/wait/src/signal.rs /^ pub __elision: ::std::os::raw::c_short,$/;" m struct:__pthread_mutex_s +__elision r_bash/src/lib.rs /^ pub __elision: ::std::os::raw::c_short,$/;" m struct:__pthread_mutex_s +__elision r_glob/src/lib.rs /^ pub __elision: ::std::os::raw::c_short,$/;" m struct:__pthread_mutex_s +__elision r_readline/src/lib.rs /^ pub __elision: ::std::os::raw::c_short,$/;" m struct:__pthread_mutex_s +__environ r_bash/src/lib.rs /^ pub static mut __environ: *mut *mut ::std::os::raw::c_char;$/;" v +__environ r_glob/src/lib.rs /^ pub static mut __environ: *mut *mut ::std::os::raw::c_char;$/;" v +__environ r_readline/src/lib.rs /^ pub static mut __environ: *mut *mut ::std::os::raw::c_char;$/;" v +__errno vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn __errno() -> *mut ::c_int;$/;" f +__errno vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn __errno() -> *mut ::c_int;$/;" f +__errno_location builtins_rust/ulimit/src/lib.rs /^ fn __errno_location() -> *mut i32;$/;" f +__errno_location r_bashhist/src/lib.rs /^ fn __errno_location() -> *mut c_int;$/;" f +__errno_location vendor/libc/src/fuchsia/mod.rs /^ pub fn __errno_location() -> *mut ::c_int;$/;" f +__errno_location vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn __errno_location() -> *mut ::c_int;$/;" f +__errno_location vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn __errno_location() -> *mut ::c_int;$/;" f +__errno_location vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn __errno_location() -> *mut ::c_int;$/;" f +__errno_location vendor/libc/src/unix/redox/mod.rs /^ pub fn __errno_location() -> *mut ::c_int;$/;" f +__error vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn __error() -> *mut ::c_int;$/;" f +__error vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn __error() -> *mut ::c_int;$/;" f +__fd_mask r_bash/src/lib.rs /^pub type __fd_mask = ::std::os::raw::c_long;$/;" t +__fd_mask r_glob/src/lib.rs /^pub type __fd_mask = ::std::os::raw::c_long;$/;" t +__fd_mask r_readline/src/lib.rs /^pub type __fd_mask = ::std::os::raw::c_long;$/;" t +__fixpt_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type __fixpt_t = u32;$/;" t +__flags builtins_rust/wait/src/signal.rs /^ pub __flags: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__flags r_bash/src/lib.rs /^ pub __flags: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__flags r_glob/src/lib.rs /^ pub __flags: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__flags r_readline/src/lib.rs /^ pub __flags: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__fpos64_t r_bash/src/lib.rs /^pub type __fpos64_t = _G_fpos64_t;$/;" t +__fpos64_t r_readline/src/lib.rs /^pub type __fpos64_t = _G_fpos64_t;$/;" t +__fpos_t r_bash/src/lib.rs /^pub type __fpos_t = _G_fpos_t;$/;" t +__fpos_t r_readline/src/lib.rs /^pub type __fpos_t = _G_fpos_t;$/;" t +__fpregs_mem builtins_rust/wait/src/signal.rs /^ pub __fpregs_mem: _libc_fpstate,$/;" m struct:ucontext_t +__fpregs_mem r_bash/src/lib.rs /^ pub __fpregs_mem: _libc_fpstate,$/;" m struct:ucontext_t +__fpregs_mem r_glob/src/lib.rs /^ pub __fpregs_mem: _libc_fpstate,$/;" m struct:ucontext_t +__fpregs_mem r_readline/src/lib.rs /^ pub __fpregs_mem: _libc_fpstate,$/;" m struct:ucontext_t +__fsblkcnt64_t builtins_rust/wait/src/signal.rs /^pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;$/;" t +__fsblkcnt64_t r_bash/src/lib.rs /^pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;$/;" t +__fsblkcnt64_t r_glob/src/lib.rs /^pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;$/;" t +__fsblkcnt64_t r_readline/src/lib.rs /^pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;$/;" t +__fsblkcnt_t builtins_rust/wait/src/signal.rs /^pub type __fsblkcnt_t = ::std::os::raw::c_ulong;$/;" t +__fsblkcnt_t r_bash/src/lib.rs /^pub type __fsblkcnt_t = ::std::os::raw::c_ulong;$/;" t +__fsblkcnt_t r_glob/src/lib.rs /^pub type __fsblkcnt_t = ::std::os::raw::c_ulong;$/;" t +__fsblkcnt_t r_readline/src/lib.rs /^pub type __fsblkcnt_t = ::std::os::raw::c_ulong;$/;" t +__fsblkcnt_t vendor/libc/src/solid/mod.rs /^pub type __fsblkcnt_t = u64;$/;" t +__fsfilcnt64_t builtins_rust/wait/src/signal.rs /^pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;$/;" t +__fsfilcnt64_t r_bash/src/lib.rs /^pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;$/;" t +__fsfilcnt64_t r_glob/src/lib.rs /^pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;$/;" t +__fsfilcnt64_t r_readline/src/lib.rs /^pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;$/;" t +__fsfilcnt_t builtins_rust/wait/src/signal.rs /^pub type __fsfilcnt_t = ::std::os::raw::c_ulong;$/;" t +__fsfilcnt_t r_bash/src/lib.rs /^pub type __fsfilcnt_t = ::std::os::raw::c_ulong;$/;" t +__fsfilcnt_t r_glob/src/lib.rs /^pub type __fsfilcnt_t = ::std::os::raw::c_ulong;$/;" t +__fsfilcnt_t r_readline/src/lib.rs /^pub type __fsfilcnt_t = ::std::os::raw::c_ulong;$/;" t +__fsfilcnt_t vendor/libc/src/solid/mod.rs /^pub type __fsfilcnt_t = u64;$/;" t +__fsid_t builtins_rust/wait/src/signal.rs /^pub struct __fsid_t {$/;" s +__fsid_t r_bash/src/lib.rs /^pub struct __fsid_t {$/;" s +__fsid_t r_glob/src/lib.rs /^pub struct __fsid_t {$/;" s +__fsid_t r_readline/src/lib.rs /^pub struct __fsid_t {$/;" s +__fsword_t builtins_rust/wait/src/signal.rs /^pub type __fsword_t = ::std::os::raw::c_long;$/;" t +__fsword_t r_bash/src/lib.rs /^pub type __fsword_t = ::std::os::raw::c_long;$/;" t +__fsword_t r_glob/src/lib.rs /^pub type __fsword_t = ::std::os::raw::c_long;$/;" t +__fsword_t r_readline/src/lib.rs /^pub type __fsword_t = ::std::os::raw::c_long;$/;" t +__fsword_t vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type __fsword_t = i32;$/;" t +__fxstat r_bash/src/lib.rs /^ pub fn __fxstat($/;" f +__fxstat r_readline/src/lib.rs /^ pub fn __fxstat($/;" f +__fxstat64 r_bash/src/lib.rs /^ pub fn __fxstat64($/;" f +__fxstat64 r_readline/src/lib.rs /^ pub fn __fxstat64($/;" f +__fxstatat r_bash/src/lib.rs /^ pub fn __fxstatat($/;" f +__fxstatat r_readline/src/lib.rs /^ pub fn __fxstatat($/;" f +__fxstatat64 r_bash/src/lib.rs /^ pub fn __fxstatat64($/;" f +__fxstatat64 r_readline/src/lib.rs /^ pub fn __fxstatat64($/;" f +__g1_orig_size builtins_rust/wait/src/signal.rs /^ pub __g1_orig_size: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s +__g1_orig_size r_bash/src/lib.rs /^ pub __g1_orig_size: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s +__g1_orig_size r_glob/src/lib.rs /^ pub __g1_orig_size: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s +__g1_orig_size r_readline/src/lib.rs /^ pub __g1_orig_size: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s +__g_refs builtins_rust/wait/src/signal.rs /^ pub __g_refs: [::std::os::raw::c_uint; 2usize],$/;" m struct:__pthread_cond_s +__g_refs r_bash/src/lib.rs /^ pub __g_refs: [::std::os::raw::c_uint; 2usize],$/;" m struct:__pthread_cond_s +__g_refs r_glob/src/lib.rs /^ pub __g_refs: [::std::os::raw::c_uint; 2usize],$/;" m struct:__pthread_cond_s +__g_refs r_readline/src/lib.rs /^ pub __g_refs: [::std::os::raw::c_uint; 2usize],$/;" m struct:__pthread_cond_s +__g_signals builtins_rust/wait/src/signal.rs /^ pub __g_signals: [::std::os::raw::c_uint; 2usize],$/;" m struct:__pthread_cond_s +__g_signals r_bash/src/lib.rs /^ pub __g_signals: [::std::os::raw::c_uint; 2usize],$/;" m struct:__pthread_cond_s +__g_signals r_glob/src/lib.rs /^ pub __g_signals: [::std::os::raw::c_uint; 2usize],$/;" m struct:__pthread_cond_s +__g_signals r_readline/src/lib.rs /^ pub __g_signals: [::std::os::raw::c_uint; 2usize],$/;" m struct:__pthread_cond_s +__g_size builtins_rust/wait/src/signal.rs /^ pub __g_size: [::std::os::raw::c_uint; 2usize],$/;" m struct:__pthread_cond_s +__g_size r_bash/src/lib.rs /^ pub __g_size: [::std::os::raw::c_uint; 2usize],$/;" m struct:__pthread_cond_s +__g_size r_glob/src/lib.rs /^ pub __g_size: [::std::os::raw::c_uint; 2usize],$/;" m struct:__pthread_cond_s +__g_size r_readline/src/lib.rs /^ pub __g_size: [::std::os::raw::c_uint; 2usize],$/;" m struct:__pthread_cond_s +__get_stdio_file vendor/libc/src/solid/mod.rs /^ pub fn __get_stdio_file(fileno: c_int) -> *mut FILE;$/;" f +__getdelim r_bash/src/lib.rs /^ pub fn __getdelim($/;" f +__getdelim r_readline/src/lib.rs /^ pub fn __getdelim($/;" f +__getpgid r_bash/src/lib.rs /^ pub fn __getpgid(__pid: __pid_t) -> __pid_t;$/;" f +__getpgid r_glob/src/lib.rs /^ pub fn __getpgid(__pid: __pid_t) -> __pid_t;$/;" f +__getpgid r_readline/src/lib.rs /^ pub fn __getpgid(__pid: __pid_t) -> __pid_t;$/;" f +__gettextparse lib/intl/plural.c /^# define __gettextparse /;" d file: +__gid_t builtins_rust/ulimit/src/lib.rs /^pub type __gid_t = i32;$/;" t +__gid_t builtins_rust/wait/src/signal.rs /^pub type __gid_t = ::std::os::raw::c_uint;$/;" t +__gid_t r_bash/src/lib.rs /^pub type __gid_t = ::std::os::raw::c_uint;$/;" t +__gid_t r_glob/src/lib.rs /^pub type __gid_t = ::std::os::raw::c_uint;$/;" t +__gid_t r_readline/src/lib.rs /^pub type __gid_t = ::std::os::raw::c_uint;$/;" t +__gid_t vendor/libc/src/solid/mod.rs /^pub type __gid_t = u32;$/;" t +__glibc_reserved r_bash/src/lib.rs /^ pub __glibc_reserved: [__syscall_slong_t; 3usize],$/;" m struct:stat +__glibc_reserved r_bash/src/lib.rs /^ pub __glibc_reserved: [__syscall_slong_t; 3usize],$/;" m struct:stat64 +__glibc_reserved r_readline/src/lib.rs /^ pub __glibc_reserved: [__syscall_slong_t; 3usize],$/;" m struct:stat +__glibc_reserved r_readline/src/lib.rs /^ pub __glibc_reserved: [__syscall_slong_t; 3usize],$/;" m struct:stat64 +__glibc_reserved1 builtins_rust/wait/src/signal.rs /^ pub __glibc_reserved1: [::std::os::raw::c_ushort; 3usize],$/;" m struct:_fpxreg +__glibc_reserved1 builtins_rust/wait/src/signal.rs /^ pub __glibc_reserved1: [::std::os::raw::c_ushort; 3usize],$/;" m struct:_libc_fpxreg +__glibc_reserved1 builtins_rust/wait/src/signal.rs /^ pub __glibc_reserved1: [__uint32_t; 24usize],$/;" m struct:_fpstate +__glibc_reserved1 builtins_rust/wait/src/signal.rs /^ pub __glibc_reserved1: [__uint32_t; 24usize],$/;" m struct:_libc_fpstate +__glibc_reserved1 builtins_rust/wait/src/signal.rs /^ pub __glibc_reserved1: [__uint32_t; 7usize],$/;" m struct:_fpx_sw_bytes +__glibc_reserved1 builtins_rust/wait/src/signal.rs /^ pub __glibc_reserved1: [__uint64_t; 2usize],$/;" m struct:_xsave_hdr +__glibc_reserved1 r_bash/src/lib.rs /^ pub __glibc_reserved1: [::std::os::raw::c_ushort; 3usize],$/;" m struct:_fpxreg +__glibc_reserved1 r_bash/src/lib.rs /^ pub __glibc_reserved1: [::std::os::raw::c_ushort; 3usize],$/;" m struct:_libc_fpxreg +__glibc_reserved1 r_bash/src/lib.rs /^ pub __glibc_reserved1: [__uint32_t; 24usize],$/;" m struct:_fpstate +__glibc_reserved1 r_bash/src/lib.rs /^ pub __glibc_reserved1: [__uint32_t; 24usize],$/;" m struct:_libc_fpstate +__glibc_reserved1 r_bash/src/lib.rs /^ pub __glibc_reserved1: [__uint32_t; 7usize],$/;" m struct:_fpx_sw_bytes +__glibc_reserved1 r_bash/src/lib.rs /^ pub __glibc_reserved1: [__uint64_t; 2usize],$/;" m struct:_xsave_hdr +__glibc_reserved1 r_glob/src/lib.rs /^ pub __glibc_reserved1: [::std::os::raw::c_ushort; 3usize],$/;" m struct:_fpxreg +__glibc_reserved1 r_glob/src/lib.rs /^ pub __glibc_reserved1: [::std::os::raw::c_ushort; 3usize],$/;" m struct:_libc_fpxreg +__glibc_reserved1 r_glob/src/lib.rs /^ pub __glibc_reserved1: [__uint32_t; 24usize],$/;" m struct:_fpstate +__glibc_reserved1 r_glob/src/lib.rs /^ pub __glibc_reserved1: [__uint32_t; 24usize],$/;" m struct:_libc_fpstate +__glibc_reserved1 r_glob/src/lib.rs /^ pub __glibc_reserved1: [__uint32_t; 7usize],$/;" m struct:_fpx_sw_bytes +__glibc_reserved1 r_glob/src/lib.rs /^ pub __glibc_reserved1: [__uint64_t; 2usize],$/;" m struct:_xsave_hdr +__glibc_reserved1 r_readline/src/lib.rs /^ pub __glibc_reserved1: [::std::os::raw::c_ushort; 3usize],$/;" m struct:_fpxreg +__glibc_reserved1 r_readline/src/lib.rs /^ pub __glibc_reserved1: [::std::os::raw::c_ushort; 3usize],$/;" m struct:_libc_fpxreg +__glibc_reserved1 r_readline/src/lib.rs /^ pub __glibc_reserved1: [__uint32_t; 24usize],$/;" m struct:_fpstate +__glibc_reserved1 r_readline/src/lib.rs /^ pub __glibc_reserved1: [__uint32_t; 24usize],$/;" m struct:_libc_fpstate +__glibc_reserved1 r_readline/src/lib.rs /^ pub __glibc_reserved1: [__uint32_t; 7usize],$/;" m struct:_fpx_sw_bytes +__glibc_reserved1 r_readline/src/lib.rs /^ pub __glibc_reserved1: [__uint64_t; 2usize],$/;" m struct:_xsave_hdr +__glibc_reserved2 builtins_rust/wait/src/signal.rs /^ pub __glibc_reserved2: [__uint64_t; 5usize],$/;" m struct:_xsave_hdr +__glibc_reserved2 r_bash/src/lib.rs /^ pub __glibc_reserved2: [__uint64_t; 5usize],$/;" m struct:_xsave_hdr +__glibc_reserved2 r_glob/src/lib.rs /^ pub __glibc_reserved2: [__uint64_t; 5usize],$/;" m struct:_xsave_hdr +__glibc_reserved2 r_readline/src/lib.rs /^ pub __glibc_reserved2: [__uint64_t; 5usize],$/;" m struct:_xsave_hdr +__gnuc_va_list r_bash/src/lib.rs /^pub type __gnuc_va_list = __builtin_va_list;$/;" t +__gnuc_va_list r_glob/src/lib.rs /^pub type __gnuc_va_list = __builtin_va_list;$/;" t +__gnuc_va_list r_readline/src/lib.rs /^pub type __gnuc_va_list = __builtin_va_list;$/;" t +__guardsize vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^ pub __guardsize: ::size_t,$/;" m struct:pthread_attr_t +__gwchar_t r_bash/src/lib.rs /^pub type __gwchar_t = ::std::os::raw::c_int;$/;" t +__gwchar_t r_glob/src/lib.rs /^pub type __gwchar_t = ::std::os::raw::c_int;$/;" t +__gwchar_t r_readline/src/lib.rs /^pub type __gwchar_t = ::std::os::raw::c_int;$/;" t +__high builtins_rust/wait/src/signal.rs /^ pub __high: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_1__bindgen_ty_1 +__high builtins_rust/wait/src/signal.rs /^ pub __high: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_2__bindgen_ty_1 +__high r_bash/src/lib.rs /^ pub __high: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_1__bindgen_ty_1 +__high r_bash/src/lib.rs /^ pub __high: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_2__bindgen_ty_1 +__high r_glob/src/lib.rs /^ pub __high: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_1__bindgen_ty_1 +__high r_glob/src/lib.rs /^ pub __high: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_2__bindgen_ty_1 +__high r_readline/src/lib.rs /^ pub __high: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_1__bindgen_ty_1 +__high r_readline/src/lib.rs /^ pub __high: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_2__bindgen_ty_1 +__id_t builtins_rust/wait/src/signal.rs /^pub type __id_t = ::std::os::raw::c_uint;$/;" t +__id_t r_bash/src/lib.rs /^pub type __id_t = ::std::os::raw::c_uint;$/;" t +__id_t r_glob/src/lib.rs /^pub type __id_t = ::std::os::raw::c_uint;$/;" t +__id_t r_readline/src/lib.rs /^pub type __id_t = ::std::os::raw::c_uint;$/;" t +__impl_all_bitflags vendor/bitflags/src/lib.rs /^macro_rules! __impl_all_bitflags {$/;" M +__impl_bitflags vendor/bitflags/src/lib.rs /^macro_rules! __impl_bitflags {$/;" M +__in_addr_t vendor/libc/src/solid/mod.rs /^pub type __in_addr_t = u32;$/;" t +__in_port_t vendor/libc/src/solid/mod.rs /^pub type __in_port_t = u16;$/;" t +__inheritsched vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^ pub __inheritsched: ::c_int,$/;" m struct:pthread_attr_t +__init r_bash/src/lib.rs /^ pub __init: ::std::os::raw::c_ushort,$/;" m struct:drand48_data +__init r_glob/src/lib.rs /^ pub __init: ::std::os::raw::c_ushort,$/;" m struct:drand48_data +__init r_readline/src/lib.rs /^ pub __init: ::std::os::raw::c_ushort,$/;" m struct:drand48_data +__ino64_t builtins_rust/wait/src/signal.rs /^pub type __ino64_t = ::std::os::raw::c_ulong;$/;" t +__ino64_t r_bash/src/lib.rs /^pub type __ino64_t = ::std::os::raw::c_ulong;$/;" t +__ino64_t r_glob/src/lib.rs /^pub type __ino64_t = ::std::os::raw::c_ulong;$/;" t +__ino64_t r_readline/src/lib.rs /^pub type __ino64_t = ::std::os::raw::c_ulong;$/;" t +__ino_t builtins_rust/wait/src/signal.rs /^pub type __ino_t = ::std::os::raw::c_ulong;$/;" t +__ino_t r_bash/src/lib.rs /^pub type __ino_t = ::std::os::raw::c_ulong;$/;" t +__ino_t r_glob/src/lib.rs /^pub type __ino_t = ::std::os::raw::c_ulong;$/;" t +__ino_t r_readline/src/lib.rs /^pub type __ino_t = ::std::os::raw::c_ulong;$/;" t +__int16 vendor/winapi/src/lib.rs /^ pub type __int16 = i16;$/;" t module:ctypes +__int16_t builtins_rust/wait/src/signal.rs /^pub type __int16_t = ::std::os::raw::c_short;$/;" t +__int16_t r_bash/src/lib.rs /^pub type __int16_t = ::std::os::raw::c_short;$/;" t +__int16_t r_glob/src/lib.rs /^pub type __int16_t = ::std::os::raw::c_short;$/;" t +__int16_t r_readline/src/lib.rs /^pub type __int16_t = ::std::os::raw::c_short;$/;" t +__int32 vendor/winapi/src/lib.rs /^ pub type __int32 = i32;$/;" t module:ctypes +__int32_t builtins_rust/wait/src/signal.rs /^pub type __int32_t = ::std::os::raw::c_int;$/;" t +__int32_t r_bash/src/lib.rs /^pub type __int32_t = ::std::os::raw::c_int;$/;" t +__int32_t r_glob/src/lib.rs /^pub type __int32_t = ::std::os::raw::c_int;$/;" t +__int32_t r_readline/src/lib.rs /^pub type __int32_t = ::std::os::raw::c_int;$/;" t +__int64 vendor/winapi/src/lib.rs /^ pub type __int64 = i64;$/;" t module:ctypes +__int64_t builtins_rust/wait/src/signal.rs /^pub type __int64_t = ::std::os::raw::c_long;$/;" t +__int64_t r_bash/src/lib.rs /^pub type __int64_t = ::std::os::raw::c_long;$/;" t +__int64_t r_glob/src/lib.rs /^pub type __int64_t = ::std::os::raw::c_long;$/;" t +__int64_t r_readline/src/lib.rs /^pub type __int64_t = ::std::os::raw::c_long;$/;" t +__int8 vendor/winapi/src/lib.rs /^ pub type __int8 = i8;$/;" t module:ctypes +__int8_t builtins_rust/wait/src/signal.rs /^pub type __int8_t = ::std::os::raw::c_schar;$/;" t +__int8_t r_bash/src/lib.rs /^pub type __int8_t = ::std::os::raw::c_schar;$/;" t +__int8_t r_glob/src/lib.rs /^pub type __int8_t = ::std::os::raw::c_schar;$/;" t +__int8_t r_readline/src/lib.rs /^pub type __int8_t = ::std::os::raw::c_schar;$/;" t +__int_least16_t builtins_rust/wait/src/signal.rs /^pub type __int_least16_t = __int16_t;$/;" t +__int_least16_t r_bash/src/lib.rs /^pub type __int_least16_t = __int16_t;$/;" t +__int_least16_t r_glob/src/lib.rs /^pub type __int_least16_t = __int16_t;$/;" t +__int_least16_t r_readline/src/lib.rs /^pub type __int_least16_t = __int16_t;$/;" t +__int_least32_t builtins_rust/wait/src/signal.rs /^pub type __int_least32_t = __int32_t;$/;" t +__int_least32_t r_bash/src/lib.rs /^pub type __int_least32_t = __int32_t;$/;" t +__int_least32_t r_glob/src/lib.rs /^pub type __int_least32_t = __int32_t;$/;" t +__int_least32_t r_readline/src/lib.rs /^pub type __int_least32_t = __int32_t;$/;" t +__int_least64_t builtins_rust/wait/src/signal.rs /^pub type __int_least64_t = __int64_t;$/;" t +__int_least64_t r_bash/src/lib.rs /^pub type __int_least64_t = __int64_t;$/;" t +__int_least64_t r_glob/src/lib.rs /^pub type __int_least64_t = __int64_t;$/;" t +__int_least64_t r_readline/src/lib.rs /^pub type __int_least64_t = __int64_t;$/;" t +__int_least8_t builtins_rust/wait/src/signal.rs /^pub type __int_least8_t = __int8_t;$/;" t +__int_least8_t r_bash/src/lib.rs /^pub type __int_least8_t = __int8_t;$/;" t +__int_least8_t r_glob/src/lib.rs /^pub type __int_least8_t = __int8_t;$/;" t +__int_least8_t r_readline/src/lib.rs /^pub type __int_least8_t = __int8_t;$/;" t +__internal vendor/futures-core/src/task/mod.rs /^pub mod __internal;$/;" n +__intmax_t builtins_rust/printf/src/intercdep.rs /^pub type __intmax_t = c_long;$/;" t +__intmax_t builtins_rust/read/src/intercdep.rs /^pub type __intmax_t = c_long;$/;" t +__intmax_t builtins_rust/setattr/src/intercdep.rs /^pub type __intmax_t = c_long;$/;" t +__intmax_t builtins_rust/wait/src/signal.rs /^pub type __intmax_t = ::std::os::raw::c_long;$/;" t +__intmax_t r_bash/src/lib.rs /^pub type __intmax_t = ::std::os::raw::c_long;$/;" t +__intmax_t r_glob/src/lib.rs /^pub type __intmax_t = ::std::os::raw::c_long;$/;" t +__intmax_t r_readline/src/lib.rs /^pub type __intmax_t = ::std::os::raw::c_long;$/;" t +__intptr_t builtins_rust/wait/src/signal.rs /^pub type __intptr_t = ::std::os::raw::c_long;$/;" t +__intptr_t r_bash/src/lib.rs /^pub type __intptr_t = ::std::os::raw::c_long;$/;" t +__intptr_t r_glob/src/lib.rs /^pub type __intptr_t = ::std::os::raw::c_long;$/;" t +__intptr_t r_readline/src/lib.rs /^pub type __intptr_t = ::std::os::raw::c_long;$/;" t +__isleap lib/sh/mktime.c /^#define __isleap(/;" d file: +__itimer_which r_bash/src/lib.rs /^pub type __itimer_which = u32;$/;" t +__itimer_which r_glob/src/lib.rs /^pub type __itimer_which = u32;$/;" t +__itimer_which r_readline/src/lib.rs /^pub type __itimer_which = u32;$/;" t +__jmp_buf builtins_rust/read/src/intercdep.rs /^pub type __jmp_buf = [c_long; 8usize];$/;" t +__jmp_buf builtins_rust/rreturn/src/intercdep.rs /^pub type __jmp_buf = [c_long; 8usize];$/;" t +__jmp_buf builtins_rust/wait/src/lib.rs /^pub type __jmp_buf = [::std::os::raw::c_long; 8usize];$/;" t +__jmp_buf r_bash/src/lib.rs /^pub type __jmp_buf = [::std::os::raw::c_long; 8usize];$/;" t +__jmp_buf r_jobs/src/lib.rs /^pub type __jmp_buf = [libc::c_long; 8];$/;" t +__jmp_buf r_readline/src/lib.rs /^pub type __jmp_buf = [::std::os::raw::c_long; 8usize];$/;" t +__jmp_buf_tag builtins_rust/read/src/intercdep.rs /^pub struct __jmp_buf_tag {$/;" s +__jmp_buf_tag builtins_rust/rreturn/src/intercdep.rs /^pub struct __jmp_buf_tag {$/;" s +__jmp_buf_tag builtins_rust/wait/src/lib.rs /^pub struct __jmp_buf_tag {$/;" s +__jmp_buf_tag r_bash/src/lib.rs /^pub struct __jmp_buf_tag {$/;" s +__jmp_buf_tag r_jobs/src/lib.rs /^pub struct __jmp_buf_tag {$/;" s +__jmp_buf_tag r_readline/src/lib.rs /^pub struct __jmp_buf_tag {$/;" s +__jmpbuf builtins_rust/read/src/intercdep.rs /^ pub __jmpbuf: __jmp_buf,$/;" m struct:__jmp_buf_tag +__jmpbuf builtins_rust/rreturn/src/intercdep.rs /^ pub __jmpbuf: __jmp_buf,$/;" m struct:__jmp_buf_tag +__jmpbuf builtins_rust/wait/src/lib.rs /^ pub __jmpbuf: __jmp_buf,$/;" m struct:__jmp_buf_tag +__jmpbuf r_bash/src/lib.rs /^ pub __jmpbuf: __jmp_buf,$/;" m struct:__jmp_buf_tag +__jmpbuf r_jobs/src/lib.rs /^ pub __jmpbuf: __jmp_buf,$/;" m struct:__jmp_buf_tag +__jmpbuf r_readline/src/lib.rs /^ pub __jmpbuf: __jmp_buf,$/;" m struct:__jmp_buf_tag +__kernel_loff_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type __kernel_loff_t = ::c_longlong;$/;" t +__kernel_pid_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type __kernel_pid_t = ::c_int;$/;" t +__key_t builtins_rust/wait/src/signal.rs /^pub type __key_t = ::std::os::raw::c_int;$/;" t +__key_t r_bash/src/lib.rs /^pub type __key_t = ::std::os::raw::c_int;$/;" t +__key_t r_glob/src/lib.rs /^pub type __key_t = ::std::os::raw::c_int;$/;" t +__key_t r_readline/src/lib.rs /^pub type __key_t = ::std::os::raw::c_int;$/;" t +__kind builtins_rust/wait/src/signal.rs /^ pub __kind: ::std::os::raw::c_int,$/;" m struct:__pthread_mutex_s +__kind r_bash/src/lib.rs /^ pub __kind: ::std::os::raw::c_int,$/;" m struct:__pthread_mutex_s +__kind r_glob/src/lib.rs /^ pub __kind: ::std::os::raw::c_int,$/;" m struct:__pthread_mutex_s +__kind r_readline/src/lib.rs /^ pub __kind: ::std::os::raw::c_int,$/;" m struct:__pthread_mutex_s +__lazy_static_create vendor/lazy_static/src/core_lazy.rs /^macro_rules! __lazy_static_create {$/;" M +__lazy_static_create vendor/lazy_static/src/inline_lazy.rs /^macro_rules! __lazy_static_create {$/;" M +__lazy_static_internal vendor/lazy_static/src/lib.rs /^macro_rules! __lazy_static_internal {$/;" M +__libc_current_sigrtmax builtins_rust/wait/src/signal.rs /^ pub fn __libc_current_sigrtmax() -> ::std::os::raw::c_int;$/;" f +__libc_current_sigrtmax r_bash/src/lib.rs /^ pub fn __libc_current_sigrtmax() -> ::std::os::raw::c_int;$/;" f +__libc_current_sigrtmax r_glob/src/lib.rs /^ pub fn __libc_current_sigrtmax() -> ::std::os::raw::c_int;$/;" f +__libc_current_sigrtmax r_readline/src/lib.rs /^ pub fn __libc_current_sigrtmax() -> ::std::os::raw::c_int;$/;" f +__libc_current_sigrtmax vendor/libc/src/unix/linux_like/mod.rs /^ pub fn __libc_current_sigrtmax() -> ::c_int;$/;" f +__libc_current_sigrtmin builtins_rust/wait/src/signal.rs /^ pub fn __libc_current_sigrtmin() -> ::std::os::raw::c_int;$/;" f +__libc_current_sigrtmin r_bash/src/lib.rs /^ pub fn __libc_current_sigrtmin() -> ::std::os::raw::c_int;$/;" f +__libc_current_sigrtmin r_glob/src/lib.rs /^ pub fn __libc_current_sigrtmin() -> ::std::os::raw::c_int;$/;" f +__libc_current_sigrtmin r_readline/src/lib.rs /^ pub fn __libc_current_sigrtmin() -> ::std::os::raw::c_int;$/;" f +__libc_current_sigrtmin vendor/libc/src/unix/linux_like/mod.rs /^ pub fn __libc_current_sigrtmin() -> ::c_int;$/;" f +__libc_lock_define_initialized lib/intl/dcigettext.c /^# define __libc_lock_define_initialized(/;" d file: +__libc_lock_lock lib/intl/dcigettext.c /^# define __libc_lock_lock(/;" d file: +__libc_lock_unlock lib/intl/dcigettext.c /^# define __libc_lock_unlock(/;" d file: +__libc_rwlock_define lib/intl/bindtextdom.c /^# define __libc_rwlock_define(/;" d file: +__libc_rwlock_define lib/intl/textdomain.c /^# define __libc_rwlock_define(/;" d file: +__libc_rwlock_define_initialized lib/intl/dcigettext.c /^# define __libc_rwlock_define_initialized(/;" d file: +__libc_rwlock_rdlock lib/intl/dcigettext.c /^# define __libc_rwlock_rdlock(/;" d file: +__libc_rwlock_unlock lib/intl/bindtextdom.c /^# define __libc_rwlock_unlock(/;" d file: +__libc_rwlock_unlock lib/intl/dcigettext.c /^# define __libc_rwlock_unlock(/;" d file: +__libc_rwlock_unlock lib/intl/textdomain.c /^# define __libc_rwlock_unlock(/;" d file: +__libc_rwlock_wrlock lib/intl/bindtextdom.c /^# define __libc_rwlock_wrlock(/;" d file: +__libc_rwlock_wrlock lib/intl/textdomain.c /^# define __libc_rwlock_wrlock(/;" d file: +__list builtins_rust/wait/src/signal.rs /^ pub __list: __pthread_list_t,$/;" m struct:__pthread_mutex_s +__list r_bash/src/lib.rs /^ pub __list: __pthread_list_t,$/;" m struct:__pthread_mutex_s +__list r_glob/src/lib.rs /^ pub __list: __pthread_list_t,$/;" m struct:__pthread_mutex_s +__list r_readline/src/lib.rs /^ pub __list: __pthread_list_t,$/;" m struct:__pthread_mutex_s +__locale_data r_bash/src/lib.rs /^pub struct __locale_data {$/;" s +__locale_data r_glob/src/lib.rs /^pub struct __locale_data {$/;" s +__locale_data r_readline/src/lib.rs /^pub struct __locale_data {$/;" s +__locale_struct r_bash/src/lib.rs /^pub struct __locale_struct {$/;" s +__locale_struct r_glob/src/lib.rs /^pub struct __locale_struct {$/;" s +__locale_struct r_readline/src/lib.rs /^pub struct __locale_struct {$/;" s +__locale_struct vendor/libc/src/wasi.rs /^pub enum __locale_struct {}$/;" g +__locale_t r_bash/src/lib.rs /^pub type __locale_t = *mut __locale_struct;$/;" t +__locale_t r_glob/src/lib.rs /^pub type __locale_t = *mut __locale_struct;$/;" t +__locale_t r_readline/src/lib.rs /^pub type __locale_t = *mut __locale_struct;$/;" t +__locales r_bash/src/lib.rs /^ pub __locales: [*mut __locale_data; 13usize],$/;" m struct:__locale_struct +__locales r_glob/src/lib.rs /^ pub __locales: [*mut __locale_data; 13usize],$/;" m struct:__locale_struct +__locales r_readline/src/lib.rs /^ pub __locales: [*mut __locale_data; 13usize],$/;" m struct:__locale_struct +__lock builtins_rust/wait/src/signal.rs /^ pub __lock: ::std::os::raw::c_int,$/;" m struct:__pthread_mutex_s +__lock r_bash/src/lib.rs /^ pub __lock: ::std::os::raw::c_int,$/;" m struct:__pthread_mutex_s +__lock r_glob/src/lib.rs /^ pub __lock: ::std::os::raw::c_int,$/;" m struct:__pthread_mutex_s +__lock r_readline/src/lib.rs /^ pub __lock: ::std::os::raw::c_int,$/;" m struct:__pthread_mutex_s +__loff_t builtins_rust/wait/src/signal.rs /^pub type __loff_t = __off64_t;$/;" t +__loff_t r_bash/src/lib.rs /^pub type __loff_t = __off64_t;$/;" t +__loff_t r_glob/src/lib.rs /^pub type __loff_t = __off64_t;$/;" t +__loff_t r_readline/src/lib.rs /^pub type __loff_t = __off64_t;$/;" t +__low builtins_rust/wait/src/signal.rs /^ pub __low: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_1__bindgen_ty_1 +__low builtins_rust/wait/src/signal.rs /^ pub __low: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_2__bindgen_ty_1 +__low r_bash/src/lib.rs /^ pub __low: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_1__bindgen_ty_1 +__low r_bash/src/lib.rs /^ pub __low: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_2__bindgen_ty_1 +__low r_glob/src/lib.rs /^ pub __low: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_1__bindgen_ty_1 +__low r_glob/src/lib.rs /^ pub __low: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_2__bindgen_ty_1 +__low r_readline/src/lib.rs /^ pub __low: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_1__bindgen_ty_1 +__low r_readline/src/lib.rs /^ pub __low: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s__bindgen_ty_2__bindgen_ty_1 +__lwpid_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type __lwpid_t = i32;$/;" t +__lxstat r_bash/src/lib.rs /^ pub fn __lxstat($/;" f +__lxstat r_readline/src/lib.rs /^ pub fn __lxstat($/;" f +__lxstat64 r_bash/src/lib.rs /^ pub fn __lxstat64($/;" f +__lxstat64 r_readline/src/lib.rs /^ pub fn __lxstat64($/;" f +__m128i vendor/memchr/src/memmem/vector.rs /^ impl Vector for __m128i {$/;" c module:x86sse +__m256i vendor/memchr/src/memmem/vector.rs /^ impl Vector for __m256i {$/;" c module:x86avx +__mask_was_saved builtins_rust/read/src/intercdep.rs /^ pub __mask_was_saved: c_int,$/;" m struct:__jmp_buf_tag +__mask_was_saved builtins_rust/rreturn/src/intercdep.rs /^ pub __mask_was_saved: c_int,$/;" m struct:__jmp_buf_tag +__mask_was_saved builtins_rust/wait/src/lib.rs /^ pub __mask_was_saved: ::std::os::raw::c_int,$/;" m struct:__jmp_buf_tag +__mask_was_saved r_bash/src/lib.rs /^ pub __mask_was_saved: ::std::os::raw::c_int,$/;" m struct:__jmp_buf_tag +__mask_was_saved r_jobs/src/lib.rs /^ pub __mask_was_saved: c_int,$/;" m struct:__jmp_buf_tag +__mask_was_saved r_readline/src/lib.rs /^ pub __mask_was_saved: ::std::os::raw::c_int,$/;" m struct:__jmp_buf_tag +__mbrlen r_bash/src/lib.rs /^ pub fn __mbrlen(__s: *const ::std::os::raw::c_char, __n: usize, __ps: *mut mbstate_t) -> usi/;" f +__mbrlen r_glob/src/lib.rs /^ pub fn __mbrlen(__s: *const ::std::os::raw::c_char, __n: usize, __ps: *mut mbstate_t) -> usi/;" f +__mbrlen r_readline/src/lib.rs /^ pub fn __mbrlen(__s: *const ::std::os::raw::c_char, __n: usize, __ps: *mut mbstate_t) -> usi/;" f +__mbstate_t builtins_rust/printf/src/intercdep.rs /^pub struct __mbstate_t {$/;" s +__mbstate_t builtins_rust/read/src/intercdep.rs /^pub struct __mbstate_t {$/;" s +__mbstate_t r_bash/src/lib.rs /^pub struct __mbstate_t {$/;" s +__mbstate_t r_glob/src/lib.rs /^pub struct __mbstate_t {$/;" s +__mbstate_t r_readline/src/lib.rs /^pub struct __mbstate_t {$/;" s +__mempcpy r_bash/src/lib.rs /^ pub fn __mempcpy($/;" f +__mempcpy r_glob/src/lib.rs /^ pub fn __mempcpy($/;" f +__mempcpy r_readline/src/lib.rs /^ pub fn __mempcpy($/;" f +__mktime_internal lib/sh/mktime.c /^__mktime_internal (tp, convert, offset)$/;" f +__mode_t builtins_rust/wait/src/signal.rs /^pub type __mode_t = ::std::os::raw::c_uint;$/;" t +__mode_t r_bash/src/lib.rs /^pub type __mode_t = ::std::os::raw::c_uint;$/;" t +__mode_t r_glob/src/lib.rs /^pub type __mode_t = ::std::os::raw::c_uint;$/;" t +__mode_t r_readline/src/lib.rs /^pub type __mode_t = ::std::os::raw::c_uint;$/;" t +__mode_t vendor/libc/src/solid/mod.rs /^pub type __mode_t = u32;$/;" t +__mon_yday lib/sh/mktime.c /^const unsigned short int __mon_yday[2][13] =$/;" v typeref:typename:const unsigned short int[2][13] +__names r_bash/src/lib.rs /^ pub __names: [*const ::std::os::raw::c_char; 13usize],$/;" m struct:__locale_struct +__names r_glob/src/lib.rs /^ pub __names: [*const ::std::os::raw::c_char; 13usize],$/;" m struct:__locale_struct +__names r_readline/src/lib.rs /^ pub __names: [*const ::std::os::raw::c_char; 13usize],$/;" m struct:__locale_struct +__need_NULL lib/intl/gettext.c /^# define __need_NULL$/;" d file: +__need_NULL lib/intl/ngettext.c /^# define __need_NULL$/;" d file: +__next builtins_rust/wait/src/signal.rs /^ pub __next: *mut __pthread_internal_list,$/;" m struct:__pthread_internal_list +__next r_bash/src/lib.rs /^ pub __next: *mut __pthread_internal_list,$/;" m struct:__pthread_internal_list +__next r_glob/src/lib.rs /^ pub __next: *mut __pthread_internal_list,$/;" m struct:__pthread_internal_list +__next r_readline/src/lib.rs /^ pub __next: *mut __pthread_internal_list,$/;" m struct:__pthread_internal_list +__nlink_t builtins_rust/wait/src/signal.rs /^pub type __nlink_t = ::std::os::raw::c_ulong;$/;" t +__nlink_t r_bash/src/lib.rs /^pub type __nlink_t = ::std::os::raw::c_ulong;$/;" t +__nlink_t r_glob/src/lib.rs /^pub type __nlink_t = ::std::os::raw::c_ulong;$/;" t +__nlink_t r_readline/src/lib.rs /^pub type __nlink_t = ::std::os::raw::c_ulong;$/;" t +__nusers builtins_rust/wait/src/signal.rs /^ pub __nusers: ::std::os::raw::c_uint,$/;" m struct:__pthread_mutex_s +__nusers r_bash/src/lib.rs /^ pub __nusers: ::std::os::raw::c_uint,$/;" m struct:__pthread_mutex_s +__nusers r_glob/src/lib.rs /^ pub __nusers: ::std::os::raw::c_uint,$/;" m struct:__pthread_mutex_s +__nusers r_readline/src/lib.rs /^ pub __nusers: ::std::os::raw::c_uint,$/;" m struct:__pthread_mutex_s +__off64_t builtins_rust/wait/src/signal.rs /^pub type __off64_t = ::std::os::raw::c_long;$/;" t +__off64_t r_bash/src/lib.rs /^pub type __off64_t = ::std::os::raw::c_long;$/;" t +__off64_t r_glob/src/lib.rs /^pub type __off64_t = ::std::os::raw::c_long;$/;" t +__off64_t r_readline/src/lib.rs /^pub type __off64_t = ::std::os::raw::c_long;$/;" t +__off_t builtins_rust/wait/src/signal.rs /^pub type __off_t = ::std::os::raw::c_long;$/;" t +__off_t r_bash/src/lib.rs /^pub type __off_t = ::std::os::raw::c_long;$/;" t +__off_t r_glob/src/lib.rs /^pub type __off_t = ::std::os::raw::c_long;$/;" t +__off_t r_readline/src/lib.rs /^pub type __off_t = ::std::os::raw::c_long;$/;" t +__off_t vendor/libc/src/solid/mod.rs /^pub type __off_t = i64;$/;" t +__old_x r_bash/src/lib.rs /^ pub __old_x: [::std::os::raw::c_ushort; 3usize],$/;" m struct:drand48_data +__old_x r_glob/src/lib.rs /^ pub __old_x: [::std::os::raw::c_ushort; 3usize],$/;" m struct:drand48_data +__old_x r_readline/src/lib.rs /^ pub __old_x: [::std::os::raw::c_ushort; 3usize],$/;" m struct:drand48_data +__overflow r_bash/src/lib.rs /^ pub fn __overflow(arg1: *mut FILE, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +__overflow r_readline/src/lib.rs /^ pub fn __overflow(arg1: *mut FILE, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +__owner builtins_rust/wait/src/signal.rs /^ pub __owner: ::std::os::raw::c_int,$/;" m struct:__pthread_mutex_s +__owner r_bash/src/lib.rs /^ pub __owner: ::std::os::raw::c_int,$/;" m struct:__pthread_mutex_s +__owner r_glob/src/lib.rs /^ pub __owner: ::std::os::raw::c_int,$/;" m struct:__pthread_mutex_s +__owner r_readline/src/lib.rs /^ pub __owner: ::std::os::raw::c_int,$/;" m struct:__pthread_mutex_s +__pad0 builtins_rust/wait/src/signal.rs /^ pub __pad0: ::std::os::raw::c_int,$/;" m struct:siginfo_t +__pad0 builtins_rust/wait/src/signal.rs /^ pub __pad0: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +__pad0 r_bash/src/lib.rs /^ pub __pad0: ::std::os::raw::c_int,$/;" m struct:siginfo_t +__pad0 r_bash/src/lib.rs /^ pub __pad0: ::std::os::raw::c_int,$/;" m struct:stat +__pad0 r_bash/src/lib.rs /^ pub __pad0: ::std::os::raw::c_int,$/;" m struct:stat64 +__pad0 r_bash/src/lib.rs /^ pub __pad0: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +__pad0 r_glob/src/lib.rs /^ pub __pad0: ::std::os::raw::c_int,$/;" m struct:siginfo_t +__pad0 r_glob/src/lib.rs /^ pub __pad0: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +__pad0 r_readline/src/lib.rs /^ pub __pad0: ::std::os::raw::c_int,$/;" m struct:siginfo_t +__pad0 r_readline/src/lib.rs /^ pub __pad0: ::std::os::raw::c_int,$/;" m struct:stat +__pad0 r_readline/src/lib.rs /^ pub __pad0: ::std::os::raw::c_int,$/;" m struct:stat64 +__pad0 r_readline/src/lib.rs /^ pub __pad0: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +__pad1 builtins_rust/wait/src/signal.rs /^ pub __pad1: [::std::os::raw::c_uchar; 7usize],$/;" m struct:__pthread_rwlock_arch_t +__pad1 r_bash/src/lib.rs /^ pub __pad1: [::std::os::raw::c_uchar; 7usize],$/;" m struct:__pthread_rwlock_arch_t +__pad1 r_glob/src/lib.rs /^ pub __pad1: [::std::os::raw::c_uchar; 7usize],$/;" m struct:__pthread_rwlock_arch_t +__pad1 r_readline/src/lib.rs /^ pub __pad1: [::std::os::raw::c_uchar; 7usize],$/;" m struct:__pthread_rwlock_arch_t +__pad1 vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ __pad1: ::c_int,$/;" m struct:siginfo_t::si_status::siginfo_timer +__pad1 vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ __pad1: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +__pad2 builtins_rust/wait/src/signal.rs /^ pub __pad2: ::std::os::raw::c_ulong,$/;" m struct:__pthread_rwlock_arch_t +__pad2 r_bash/src/lib.rs /^ pub __pad2: ::std::os::raw::c_ulong,$/;" m struct:__pthread_rwlock_arch_t +__pad2 r_glob/src/lib.rs /^ pub __pad2: ::std::os::raw::c_ulong,$/;" m struct:__pthread_rwlock_arch_t +__pad2 r_readline/src/lib.rs /^ pub __pad2: ::std::os::raw::c_ulong,$/;" m struct:__pthread_rwlock_arch_t +__pad3 builtins_rust/wait/src/signal.rs /^ pub __pad3: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__pad3 r_bash/src/lib.rs /^ pub __pad3: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__pad3 r_glob/src/lib.rs /^ pub __pad3: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__pad3 r_readline/src/lib.rs /^ pub __pad3: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__pad4 builtins_rust/wait/src/signal.rs /^ pub __pad4: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__pad4 r_bash/src/lib.rs /^ pub __pad4: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__pad4 r_glob/src/lib.rs /^ pub __pad4: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__pad4 r_readline/src/lib.rs /^ pub __pad4: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__pad5 r_bash/src/lib.rs /^ pub __pad5: usize,$/;" m struct:_IO_FILE +__pad5 r_readline/src/lib.rs /^ pub __pad5: usize,$/;" m struct:_IO_FILE +__parse_scoped vendor/syn/src/parse.rs /^ fn __parse_scoped(self, scope: Span, tokens: TokenStream) -> Result {$/;" P interface:Parser +__parse_scoped vendor/syn/src/parse.rs /^ fn __parse_scoped(self, scope: Span, tokens: TokenStream) -> Result {$/;" f +__parse_stream vendor/syn/src/parse.rs /^ fn __parse_stream(self, input: ParseStream) -> Result {$/;" P interface:Parser +__parse_stream vendor/syn/src/parse.rs /^ fn __parse_stream(self, input: ParseStream) -> Result {$/;" f +__pid_t builtins_rust/wait/src/signal.rs /^pub type __pid_t = ::std::os::raw::c_int;$/;" t +__pid_t r_bash/src/lib.rs /^pub type __pid_t = ::std::os::raw::c_int;$/;" t +__pid_t r_glob/src/lib.rs /^pub type __pid_t = ::std::os::raw::c_int;$/;" t +__pid_t r_readline/src/lib.rs /^pub type __pid_t = ::std::os::raw::c_int;$/;" t +__pid_t vendor/libc/src/solid/mod.rs /^pub type __pid_t = i32;$/;" t +__pid_type r_bash/src/lib.rs /^pub type __pid_type = u32;$/;" t +__pin_project_constant vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_constant {$/;" M +__pin_project_enum_make_proj_method vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_enum_make_proj_method {$/;" M +__pin_project_enum_make_proj_replace_method vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_enum_make_proj_replace_method {$/;" M +__pin_project_expand vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_expand {$/;" M +__pin_project_internal vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_internal {$/;" M +__pin_project_make_drop_impl vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_drop_impl {$/;" M +__pin_project_make_proj_field_mut vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_proj_field_mut {$/;" M +__pin_project_make_proj_field_ref vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_proj_field_ref {$/;" M +__pin_project_make_proj_field_replace vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_proj_field_replace {$/;" M +__pin_project_make_proj_replace_block vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_proj_replace_block {$/;" M +__pin_project_make_proj_replace_ty vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_proj_replace_ty {$/;" M +__pin_project_make_proj_replace_ty_body vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_proj_replace_ty_body {$/;" M +__pin_project_make_proj_ty vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_proj_ty {$/;" M +__pin_project_make_proj_ty_body vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_proj_ty_body {$/;" M +__pin_project_make_replace_field_proj vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_replace_field_proj {$/;" M +__pin_project_make_unpin_bound vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_unpin_bound {$/;" M +__pin_project_make_unpin_impl vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_unpin_impl {$/;" M +__pin_project_make_unsafe_drop_in_place_guard vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_unsafe_drop_in_place_guard {$/;" M +__pin_project_make_unsafe_field_proj vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_make_unsafe_field_proj {$/;" M +__pin_project_parse_generics vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_parse_generics {$/;" M +__pin_project_reconstruct vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_reconstruct {$/;" M +__pin_project_struct_make_proj_method vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_struct_make_proj_method {$/;" M +__pin_project_struct_make_proj_replace_method vendor/pin-project-lite/src/lib.rs /^macro_rules! __pin_project_struct_make_proj_replace_method {$/;" M +__pos r_bash/src/lib.rs /^ pub __pos: __off64_t,$/;" m struct:_G_fpos64_t +__pos r_bash/src/lib.rs /^ pub __pos: __off_t,$/;" m struct:_G_fpos_t +__pos r_readline/src/lib.rs /^ pub __pos: __off64_t,$/;" m struct:_G_fpos64_t +__pos r_readline/src/lib.rs /^ pub __pos: __off_t,$/;" m struct:_G_fpos_t +__prev builtins_rust/wait/src/signal.rs /^ pub __prev: *mut __pthread_internal_list,$/;" m struct:__pthread_internal_list +__prev r_bash/src/lib.rs /^ pub __prev: *mut __pthread_internal_list,$/;" m struct:__pthread_internal_list +__prev r_glob/src/lib.rs /^ pub __prev: *mut __pthread_internal_list,$/;" m struct:__pthread_internal_list +__prev r_readline/src/lib.rs /^ pub __prev: *mut __pthread_internal_list,$/;" m struct:__pthread_internal_list +__priority_which r_bash/src/lib.rs /^pub type __priority_which = u32;$/;" t +__priority_which r_glob/src/lib.rs /^pub type __priority_which = u32;$/;" t +__priority_which r_readline/src/lib.rs /^pub type __priority_which = u32;$/;" t +__priority_which_t vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^pub type __priority_which_t = ::c_uint;$/;" t +__priority_which_t vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^pub type __priority_which_t = ::c_uint;$/;" t +__priv vendor/memoffset/src/lib.rs /^pub mod __priv {$/;" n +__private vendor/futures-util/src/lib.rs /^pub mod __private {$/;" n +__private vendor/pin-project-lite/src/lib.rs /^pub mod __private {$/;" n +__private vendor/quote/src/lib.rs /^pub mod __private;$/;" n +__private vendor/syn/src/lib.rs /^pub mod __private;$/;" n +__private vendor/thiserror/src/lib.rs /^pub mod __private {$/;" n +__private_extern__ lib/termcap/ltcap.h /^# define __private_extern__$/;" d +__pthread_cond_s builtins_rust/wait/src/signal.rs /^pub struct __pthread_cond_s {$/;" s +__pthread_cond_s r_bash/src/lib.rs /^pub struct __pthread_cond_s {$/;" s +__pthread_cond_s r_glob/src/lib.rs /^pub struct __pthread_cond_s {$/;" s +__pthread_cond_s r_readline/src/lib.rs /^pub struct __pthread_cond_s {$/;" s +__pthread_cond_s__bindgen_ty_1__bindgen_ty_1 builtins_rust/wait/src/signal.rs /^pub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 {$/;" s +__pthread_cond_s__bindgen_ty_1__bindgen_ty_1 r_bash/src/lib.rs /^pub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 {$/;" s +__pthread_cond_s__bindgen_ty_1__bindgen_ty_1 r_glob/src/lib.rs /^pub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 {$/;" s +__pthread_cond_s__bindgen_ty_1__bindgen_ty_1 r_readline/src/lib.rs /^pub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 {$/;" s +__pthread_cond_s__bindgen_ty_2__bindgen_ty_1 builtins_rust/wait/src/signal.rs /^pub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 {$/;" s +__pthread_cond_s__bindgen_ty_2__bindgen_ty_1 r_bash/src/lib.rs /^pub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 {$/;" s +__pthread_cond_s__bindgen_ty_2__bindgen_ty_1 r_glob/src/lib.rs /^pub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 {$/;" s +__pthread_cond_s__bindgen_ty_2__bindgen_ty_1 r_readline/src/lib.rs /^pub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 {$/;" s +__pthread_internal_list builtins_rust/wait/src/signal.rs /^pub struct __pthread_internal_list {$/;" s +__pthread_internal_list r_bash/src/lib.rs /^pub struct __pthread_internal_list {$/;" s +__pthread_internal_list r_glob/src/lib.rs /^pub struct __pthread_internal_list {$/;" s +__pthread_internal_list r_readline/src/lib.rs /^pub struct __pthread_internal_list {$/;" s +__pthread_list_t builtins_rust/wait/src/signal.rs /^pub type __pthread_list_t = __pthread_internal_list;$/;" t +__pthread_list_t r_bash/src/lib.rs /^pub type __pthread_list_t = __pthread_internal_list;$/;" t +__pthread_list_t r_glob/src/lib.rs /^pub type __pthread_list_t = __pthread_internal_list;$/;" t +__pthread_list_t r_readline/src/lib.rs /^pub type __pthread_list_t = __pthread_internal_list;$/;" t +__pthread_mutex_s builtins_rust/wait/src/signal.rs /^pub struct __pthread_mutex_s {$/;" s +__pthread_mutex_s r_bash/src/lib.rs /^pub struct __pthread_mutex_s {$/;" s +__pthread_mutex_s r_glob/src/lib.rs /^pub struct __pthread_mutex_s {$/;" s +__pthread_mutex_s r_readline/src/lib.rs /^pub struct __pthread_mutex_s {$/;" s +__pthread_rwlock_arch_t builtins_rust/wait/src/signal.rs /^pub struct __pthread_rwlock_arch_t {$/;" s +__pthread_rwlock_arch_t r_bash/src/lib.rs /^pub struct __pthread_rwlock_arch_t {$/;" s +__pthread_rwlock_arch_t r_glob/src/lib.rs /^pub struct __pthread_rwlock_arch_t {$/;" s +__pthread_rwlock_arch_t r_readline/src/lib.rs /^pub struct __pthread_rwlock_arch_t {$/;" s +__pthread_spin_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^type __pthread_spin_t = __cpu_simple_lock_nv_t;$/;" t +__ptr vendor/futures-channel/src/lock.rs /^ __ptr: &'a Lock,$/;" m struct:TryLock +__quad_t builtins_rust/wait/src/signal.rs /^pub type __quad_t = ::std::os::raw::c_long;$/;" t +__quad_t r_bash/src/lib.rs /^pub type __quad_t = ::std::os::raw::c_long;$/;" t +__quad_t r_glob/src/lib.rs /^pub type __quad_t = ::std::os::raw::c_long;$/;" t +__quad_t r_readline/src/lib.rs /^pub type __quad_t = ::std::os::raw::c_long;$/;" t +__readers builtins_rust/wait/src/signal.rs /^ pub __readers: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__readers r_bash/src/lib.rs /^ pub __readers: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__readers r_glob/src/lib.rs /^ pub __readers: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__readers r_readline/src/lib.rs /^ pub __readers: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__reserved1 builtins_rust/wait/src/signal.rs /^ pub __reserved1: [::std::os::raw::c_ulonglong; 8usize],$/;" m struct:mcontext_t +__reserved1 builtins_rust/wait/src/signal.rs /^ pub __reserved1: [__uint64_t; 8usize],$/;" m struct:sigcontext +__reserved1 r_bash/src/lib.rs /^ pub __reserved1: [::std::os::raw::c_ulonglong; 8usize],$/;" m struct:mcontext_t +__reserved1 r_bash/src/lib.rs /^ pub __reserved1: [__uint64_t; 8usize],$/;" m struct:sigcontext +__reserved1 r_glob/src/lib.rs /^ pub __reserved1: [::std::os::raw::c_ulonglong; 8usize],$/;" m struct:mcontext_t +__reserved1 r_glob/src/lib.rs /^ pub __reserved1: [__uint64_t; 8usize],$/;" m struct:sigcontext +__reserved1 r_readline/src/lib.rs /^ pub __reserved1: [::std::os::raw::c_ulonglong; 8usize],$/;" m struct:mcontext_t +__reserved1 r_readline/src/lib.rs /^ pub __reserved1: [__uint64_t; 8usize],$/;" m struct:sigcontext +__rl_callback_generic_arg lib/readline/rlprivate.h /^typedef struct __rl_callback_generic_arg $/;" s +__rl_callback_generic_arg r_readline/src/lib.rs /^pub struct __rl_callback_generic_arg {$/;" s +__rl_keyseq_context lib/readline/rlprivate.h /^typedef struct __rl_keyseq_context$/;" s +__rl_keyseq_context r_readline/src/lib.rs /^pub struct __rl_keyseq_context {$/;" s +__rl_search_context lib/readline/rlprivate.h /^typedef struct __rl_search_context$/;" s +__rl_search_context r_readline/src/lib.rs /^pub struct __rl_search_context {$/;" s +__rl_vimotion_context lib/readline/rlprivate.h /^typedef struct __rl_vimotion_context$/;" s +__rl_vimotion_context r_readline/src/lib.rs /^pub struct __rl_vimotion_context {$/;" s +__rlim64_t builtins_rust/wait/src/signal.rs /^pub type __rlim64_t = ::std::os::raw::c_ulong;$/;" t +__rlim64_t r_bash/src/lib.rs /^pub type __rlim64_t = ::std::os::raw::c_ulong;$/;" t +__rlim64_t r_glob/src/lib.rs /^pub type __rlim64_t = ::std::os::raw::c_ulong;$/;" t +__rlim64_t r_readline/src/lib.rs /^pub type __rlim64_t = ::std::os::raw::c_ulong;$/;" t +__rlim_t builtins_rust/ulimit/src/lib.rs /^pub type __rlim_t = u64;$/;" t +__rlim_t builtins_rust/wait/src/signal.rs /^pub type __rlim_t = ::std::os::raw::c_ulong;$/;" t +__rlim_t r_bash/src/lib.rs /^pub type __rlim_t = ::std::os::raw::c_ulong;$/;" t +__rlim_t r_glob/src/lib.rs /^pub type __rlim_t = ::std::os::raw::c_ulong;$/;" t +__rlim_t r_readline/src/lib.rs /^pub type __rlim_t = ::std::os::raw::c_ulong;$/;" t +__rlimit_resource builtins_rust/ulimit/src/lib.rs /^pub type __rlimit_resource = libc::c_uint;$/;" t +__rlimit_resource r_bash/src/lib.rs /^pub type __rlimit_resource = u32;$/;" t +__rlimit_resource r_glob/src/lib.rs /^pub type __rlimit_resource = u32;$/;" t +__rlimit_resource r_readline/src/lib.rs /^pub type __rlimit_resource = u32;$/;" t +__rlimit_resource_t builtins_rust/ulimit/src/lib.rs /^pub type __rlimit_resource_t = __rlimit_resource;$/;" t +__rlimit_resource_t vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^pub type __rlimit_resource_t = ::c_uint;$/;" t +__rlimit_resource_t vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^pub type __rlimit_resource_t = ::c_ulong;$/;" t +__rusage_who r_bash/src/lib.rs /^pub type __rusage_who = i32;$/;" t +__rusage_who r_glob/src/lib.rs /^pub type __rusage_who = i32;$/;" t +__rusage_who r_readline/src/lib.rs /^pub type __rusage_who = i32;$/;" t +__rwelision builtins_rust/wait/src/signal.rs /^ pub __rwelision: ::std::os::raw::c_schar,$/;" m struct:__pthread_rwlock_arch_t +__rwelision r_bash/src/lib.rs /^ pub __rwelision: ::std::os::raw::c_schar,$/;" m struct:__pthread_rwlock_arch_t +__rwelision r_glob/src/lib.rs /^ pub __rwelision: ::std::os::raw::c_schar,$/;" m struct:__pthread_rwlock_arch_t +__rwelision r_readline/src/lib.rs /^ pub __rwelision: ::std::os::raw::c_schar,$/;" m struct:__pthread_rwlock_arch_t +__s16 vendor/libc/src/fuchsia/mod.rs /^pub type __s16 = ::c_short;$/;" t +__s16 vendor/libc/src/unix/linux_like/android/mod.rs /^pub type __s16 = ::c_short;$/;" t +__s16 vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type __s16 = ::c_short;$/;" t +__s32 vendor/libc/src/fuchsia/mod.rs /^pub type __s32 = ::c_int;$/;" t +__s32 vendor/libc/src/unix/linux_like/android/mod.rs /^pub type __s32 = ::c_int;$/;" t +__s32 vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type __s32 = ::c_int;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type __s64 = ::c_longlong;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs /^pub type __s64 = ::c_longlong;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs /^pub type __s64 = ::c_longlong;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs /^pub type __s64 = ::c_long;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs /^pub type __s64 = ::c_long;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs /^pub type __s64 = ::c_longlong;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^pub type __s64 = i64;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs /^pub type __s64 = ::c_longlong;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^pub type __s64 = ::c_longlong;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/musl/b32/mod.rs /^pub type __s64 = ::c_longlong;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs /^pub type __s64 = ::c_longlong;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs /^pub type __s64 = ::c_long;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs /^pub type __s64 = ::c_long;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs /^pub type __s64 = ::c_longlong;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs /^pub type __s64 = i64;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs /^pub type __s64 = ::c_longlong;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type __s64 = ::c_longlong;$/;" t +__s64 vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type __s64 = ::c_long;$/;" t +__sa_family_t vendor/libc/src/solid/mod.rs /^pub type __sa_family_t = u8;$/;" t +__saved_mask builtins_rust/read/src/intercdep.rs /^ pub __saved_mask: __sigset_t,$/;" m struct:__jmp_buf_tag +__saved_mask builtins_rust/rreturn/src/intercdep.rs /^ pub __saved_mask: __sigset_t,$/;" m struct:__jmp_buf_tag +__saved_mask builtins_rust/wait/src/lib.rs /^ pub __saved_mask: __sigset_t,$/;" m struct:__jmp_buf_tag +__saved_mask r_bash/src/lib.rs /^ pub __saved_mask: __sigset_t,$/;" m struct:__jmp_buf_tag +__saved_mask r_jobs/src/lib.rs /^ pub __saved_mask: __sigset_t,$/;" m struct:__jmp_buf_tag +__saved_mask r_readline/src/lib.rs /^ pub __saved_mask: __sigset_t,$/;" m struct:__jmp_buf_tag +__sched_cpualloc vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn __sched_cpualloc(count: ::size_t) -> *mut ::cpu_set_t;$/;" f +__sched_cpucount vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn __sched_cpucount(setsize: ::size_t, set: *const cpu_set_t) -> ::c_int;$/;" f +__sched_cpufree vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn __sched_cpufree(set: *mut ::cpu_set_t);$/;" f +__schedparam vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^ pub __schedparam: super::__sched_param,$/;" m struct:pthread_attr_t +__schedpolicy vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^ pub __schedpolicy: ::c_int,$/;" m struct:pthread_attr_t +__scope vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^ pub __scope: ::c_int,$/;" m struct:pthread_attr_t +__set_errno lib/intl/dcigettext.c /^# define __set_errno(/;" d file: +__set_errno lib/sh/strtol.c /^# define __set_errno(/;" d file: +__sfileext lib/sh/fpurge.c /^ struct __sfileext$/;" s file: +__shared builtins_rust/wait/src/signal.rs /^ pub __shared: ::std::os::raw::c_int,$/;" m struct:__pthread_rwlock_arch_t +__shared r_bash/src/lib.rs /^ pub __shared: ::std::os::raw::c_int,$/;" m struct:__pthread_rwlock_arch_t +__shared r_glob/src/lib.rs /^ pub __shared: ::std::os::raw::c_int,$/;" m struct:__pthread_rwlock_arch_t +__shared r_readline/src/lib.rs /^ pub __shared: ::std::os::raw::c_int,$/;" m struct:__pthread_rwlock_arch_t +__sig_atomic_t builtins_rust/wait/src/signal.rs /^pub type __sig_atomic_t = ::std::os::raw::c_int;$/;" t +__sig_atomic_t r_bash/src/lib.rs /^pub type __sig_atomic_t = ::std::os::raw::c_int;$/;" t +__sig_atomic_t r_glob/src/lib.rs /^pub type __sig_atomic_t = ::std::os::raw::c_int;$/;" t +__sig_atomic_t r_readline/src/lib.rs /^pub type __sig_atomic_t = ::std::os::raw::c_int;$/;" t +__sigaction_handler builtins_rust/wait/src/signal.rs /^ pub __sigaction_handler: sigaction__bindgen_ty_1,$/;" m struct:sigaction +__sigaction_handler r_bash/src/lib.rs /^ pub __sigaction_handler: sigaction__bindgen_ty_1,$/;" m struct:sigaction +__sigaction_handler r_glob/src/lib.rs /^ pub __sigaction_handler: sigaction__bindgen_ty_1,$/;" m struct:sigaction +__sigaction_handler r_readline/src/lib.rs /^ pub __sigaction_handler: sigaction__bindgen_ty_1,$/;" m struct:sigaction +__sighandler_t builtins_rust/wait/src/signal.rs /^pub type __sighandler_t = ::std::option::Option Span {$/;" P implementation:Span +__span vendor/quote/src/spanned.rs /^ fn __span(&self) -> Span {$/;" P implementation:T +__span vendor/quote/src/spanned.rs /^ fn __span(&self) -> Span;$/;" P interface:Spanned +__spins builtins_rust/wait/src/signal.rs /^ pub __spins: ::std::os::raw::c_short,$/;" m struct:__pthread_mutex_s +__spins r_bash/src/lib.rs /^ pub __spins: ::std::os::raw::c_short,$/;" m struct:__pthread_mutex_s +__spins r_glob/src/lib.rs /^ pub __spins: ::std::os::raw::c_short,$/;" m struct:__pthread_mutex_s +__spins r_readline/src/lib.rs /^ pub __spins: ::std::os::raw::c_short,$/;" m struct:__pthread_mutex_s +__ssize_t builtins_rust/wait/src/signal.rs /^pub type __ssize_t = ::std::os::raw::c_long;$/;" t +__ssize_t r_bash/src/lib.rs /^pub type __ssize_t = ::std::os::raw::c_long;$/;" t +__ssize_t r_glob/src/lib.rs /^pub type __ssize_t = ::std::os::raw::c_long;$/;" t +__ssize_t r_readline/src/lib.rs /^pub type __ssize_t = ::std::os::raw::c_long;$/;" t +__ssp builtins_rust/wait/src/signal.rs /^ pub __ssp: [::std::os::raw::c_ulonglong; 4usize],$/;" m struct:ucontext_t +__ssp r_bash/src/lib.rs /^ pub __ssp: [::std::os::raw::c_ulonglong; 4usize],$/;" m struct:ucontext_t +__ssp r_glob/src/lib.rs /^ pub __ssp: [::std::os::raw::c_ulonglong; 4usize],$/;" m struct:ucontext_t +__ssp r_readline/src/lib.rs /^ pub __ssp: [::std::os::raw::c_ulonglong; 4usize],$/;" m struct:ucontext_t +__stackaddr vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^ pub __stackaddr: *mut ::c_void, \/\/ better don't use it$/;" m struct:pthread_attr_t +__stackaddr_set vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^ pub __stackaddr_set: ::c_int,$/;" m struct:pthread_attr_t +__stacksize vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^ pub __stacksize: ::size_t,$/;" m struct:pthread_attr_t +__state r_bash/src/lib.rs /^ pub __state: __mbstate_t,$/;" m struct:_G_fpos64_t +__state r_bash/src/lib.rs /^ pub __state: __mbstate_t,$/;" m struct:_G_fpos_t +__state r_readline/src/lib.rs /^ pub __state: __mbstate_t,$/;" m struct:_G_fpos64_t +__state r_readline/src/lib.rs /^ pub __state: __mbstate_t,$/;" m struct:_G_fpos_t +__static_ref_initialize vendor/lazy_static/tests/test.rs /^fn __static_ref_initialize() -> X { X }$/;" f +__statx_pad1 r_bash/src/lib.rs /^ pub __statx_pad1: [__uint16_t; 1usize],$/;" m struct:statx +__statx_pad1 r_readline/src/lib.rs /^ pub __statx_pad1: [__uint16_t; 1usize],$/;" m struct:statx +__statx_pad2 r_bash/src/lib.rs /^ pub __statx_pad2: [__uint64_t; 14usize],$/;" m struct:statx +__statx_pad2 r_readline/src/lib.rs /^ pub __statx_pad2: [__uint64_t; 14usize],$/;" m struct:statx +__statx_timestamp_pad1 r_bash/src/lib.rs /^ pub __statx_timestamp_pad1: [__int32_t; 1usize],$/;" m struct:statx_timestamp +__statx_timestamp_pad1 r_readline/src/lib.rs /^ pub __statx_timestamp_pad1: [__int32_t; 1usize],$/;" m struct:statx_timestamp +__stpcpy r_bash/src/lib.rs /^ pub fn __stpcpy($/;" f +__stpcpy r_glob/src/lib.rs /^ pub fn __stpcpy($/;" f +__stpcpy r_readline/src/lib.rs /^ pub fn __stpcpy($/;" f +__stpncpy r_bash/src/lib.rs /^ pub fn __stpncpy($/;" f +__stpncpy r_glob/src/lib.rs /^ pub fn __stpncpy($/;" f +__stpncpy r_readline/src/lib.rs /^ pub fn __stpncpy($/;" f +__strtok_r r_bash/src/lib.rs /^ pub fn __strtok_r($/;" f +__strtok_r r_glob/src/lib.rs /^ pub fn __strtok_r($/;" f +__strtok_r r_readline/src/lib.rs /^ pub fn __strtok_r($/;" f +__suseconds_t builtins_rust/wait/src/signal.rs /^pub type __suseconds_t = ::std::os::raw::c_long;$/;" t +__suseconds_t r_bash/src/lib.rs /^pub type __suseconds_t = ::std::os::raw::c_long;$/;" t +__suseconds_t r_glob/src/lib.rs /^pub type __suseconds_t = ::std::os::raw::c_long;$/;" t +__suseconds_t r_readline/src/lib.rs /^pub type __suseconds_t = ::std::os::raw::c_long;$/;" t +__syscall_slong_t builtins_rust/wait/src/signal.rs /^pub type __syscall_slong_t = ::std::os::raw::c_long;$/;" t +__syscall_slong_t r_bash/src/lib.rs /^pub type __syscall_slong_t = ::std::os::raw::c_long;$/;" t +__syscall_slong_t r_glob/src/lib.rs /^pub type __syscall_slong_t = ::std::os::raw::c_long;$/;" t +__syscall_slong_t r_readline/src/lib.rs /^pub type __syscall_slong_t = ::std::os::raw::c_long;$/;" t +__syscall_ulong_t builtins_rust/wait/src/signal.rs /^pub type __syscall_ulong_t = ::std::os::raw::c_ulong;$/;" t +__syscall_ulong_t r_bash/src/lib.rs /^pub type __syscall_ulong_t = ::std::os::raw::c_ulong;$/;" t +__syscall_ulong_t r_glob/src/lib.rs /^pub type __syscall_ulong_t = ::std::os::raw::c_ulong;$/;" t +__syscall_ulong_t r_readline/src/lib.rs /^pub type __syscall_ulong_t = ::std::os::raw::c_ulong;$/;" t +__syscall_ulong_t vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type __syscall_ulong_t = ::c_ulong;$/;" t +__syscall_ulong_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mod.rs /^pub type __syscall_ulong_t = ::c_ulong;$/;" t +__syscall_ulong_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mod.rs /^pub type __syscall_ulong_t = ::c_ulonglong;$/;" t +__system_property_find vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn __system_property_find(__name: *const ::c_char) -> *const prop_info;$/;" f +__system_property_find_nth vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn __system_property_find_nth(__n: ::c_uint) -> *const prop_info;$/;" f +__system_property_foreach vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn __system_property_foreach($/;" f +__system_property_get vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn __system_property_get(__name: *const ::c_char, __value: *mut ::c_char) -> ::c_int;$/;" f +__system_property_set vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn __system_property_set(__name: *const ::c_char, __value: *const ::c_char) -> ::c_int;$/;" f +__system_property_wait vendor/libc/src/unix/linux_like/android/b64/mod.rs /^ pub fn __system_property_wait($/;" f +__sysv_signal builtins_rust/wait/src/signal.rs /^ pub fn __sysv_signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t)$/;" f +__sysv_signal r_bash/src/lib.rs /^ pub fn __sysv_signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t)$/;" f +__sysv_signal r_glob/src/lib.rs /^ pub fn __sysv_signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t)$/;" f +__sysv_signal r_readline/src/lib.rs /^ pub fn __sysv_signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t)$/;" f +__time32_t vendor/winapi/src/ucrt/corecrt.rs /^pub type __time32_t = c_long;$/;" t +__time64_t vendor/winapi/src/ucrt/corecrt.rs /^pub type __time64_t = __int64;$/;" t +__time_t builtins_rust/wait/src/signal.rs /^pub type __time_t = ::std::os::raw::c_long;$/;" t +__time_t r_bash/src/lib.rs /^pub type __time_t = ::std::os::raw::c_long;$/;" t +__time_t r_glob/src/lib.rs /^pub type __time_t = ::std::os::raw::c_long;$/;" t +__time_t r_readline/src/lib.rs /^pub type __time_t = ::std::os::raw::c_long;$/;" t +__timer_t builtins_rust/wait/src/signal.rs /^pub type __timer_t = *mut ::std::os::raw::c_void;$/;" t +__timer_t r_bash/src/lib.rs /^pub type __timer_t = *mut ::std::os::raw::c_void;$/;" t +__timer_t r_glob/src/lib.rs /^pub type __timer_t = *mut ::std::os::raw::c_void;$/;" t +__timer_t r_readline/src/lib.rs /^pub type __timer_t = *mut ::std::os::raw::c_void;$/;" t +__timezone r_bash/src/lib.rs /^ pub static mut __timezone: ::std::os::raw::c_long;$/;" v +__timezone r_readline/src/lib.rs /^ pub static mut __timezone: ::std::os::raw::c_long;$/;" v +__timezone_ptr_t r_bash/src/lib.rs /^pub type __timezone_ptr_t = *mut timezone;$/;" t +__timezone_ptr_t r_glob/src/lib.rs /^pub type __timezone_ptr_t = *mut timezone;$/;" t +__timezone_ptr_t r_readline/src/lib.rs /^pub type __timezone_ptr_t = *mut timezone;$/;" t +__tolower_l r_bash/src/lib.rs /^ pub fn __tolower_l(__c: ::std::os::raw::c_int, __l: locale_t) -> ::std::os::raw::c_int;$/;" f +__tolower_l r_glob/src/lib.rs /^ pub fn __tolower_l(__c: ::std::os::raw::c_int, __l: locale_t) -> ::std::os::raw::c_int;$/;" f +__tolower_l r_readline/src/lib.rs /^ pub fn __tolower_l(__c: ::std::os::raw::c_int, __l: locale_t) -> ::std::os::raw::c_int;$/;" f +__toupper_l r_bash/src/lib.rs /^ pub fn __toupper_l(__c: ::std::os::raw::c_int, __l: locale_t) -> ::std::os::raw::c_int;$/;" f +__toupper_l r_glob/src/lib.rs /^ pub fn __toupper_l(__c: ::std::os::raw::c_int, __l: locale_t) -> ::std::os::raw::c_int;$/;" f +__toupper_l r_readline/src/lib.rs /^ pub fn __toupper_l(__c: ::std::os::raw::c_int, __l: locale_t) -> ::std::os::raw::c_int;$/;" f +__tzname r_bash/src/lib.rs /^ pub static mut __tzname: [*mut ::std::os::raw::c_char; 2usize];$/;" v +__tzname r_readline/src/lib.rs /^ pub static mut __tzname: [*mut ::std::os::raw::c_char; 2usize];$/;" v +__u16 vendor/libc/src/fuchsia/mod.rs /^pub type __u16 = ::c_ushort;$/;" t +__u16 vendor/libc/src/unix/linux_like/android/mod.rs /^pub type __u16 = ::c_ushort;$/;" t +__u16 vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type __u16 = ::c_ushort;$/;" t +__u32 vendor/libc/src/fuchsia/mod.rs /^pub type __u32 = ::c_uint;$/;" t +__u32 vendor/libc/src/unix/linux_like/android/mod.rs /^pub type __u32 = ::c_uint;$/;" t +__u32 vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type __u32 = ::c_uint;$/;" t +__u64 vendor/libc/src/fuchsia/aarch64.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/fuchsia/x86_64.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/android/b32/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/android/b64/aarch64/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/android/b64/riscv64/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/android/b64/x86_64/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs /^pub type __u64 = ::c_ulong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs /^pub type __u64 = ::c_ulong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^pub type __u64 = u64;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/musl/b32/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs /^pub type __u64 = ::c_ulong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs /^pub type __u64 = ::c_ulong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs /^pub type __u64 = u64;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type __u64 = ::c_ulonglong;$/;" t +__u64 vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type __u64 = ::c_ulong;$/;" t +__u8 vendor/libc/src/fuchsia/mod.rs /^pub type __u8 = ::c_uchar;$/;" t +__u8 vendor/libc/src/unix/linux_like/android/mod.rs /^pub type __u8 = ::c_uchar;$/;" t +__u8 vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type __u8 = ::c_uchar;$/;" t +__u_char builtins_rust/wait/src/signal.rs /^pub type __u_char = ::std::os::raw::c_uchar;$/;" t +__u_char r_bash/src/lib.rs /^pub type __u_char = ::std::os::raw::c_uchar;$/;" t +__u_char r_glob/src/lib.rs /^pub type __u_char = ::std::os::raw::c_uchar;$/;" t +__u_char r_readline/src/lib.rs /^pub type __u_char = ::std::os::raw::c_uchar;$/;" t +__u_int builtins_rust/wait/src/signal.rs /^pub type __u_int = ::std::os::raw::c_uint;$/;" t +__u_int r_bash/src/lib.rs /^pub type __u_int = ::std::os::raw::c_uint;$/;" t +__u_int r_glob/src/lib.rs /^pub type __u_int = ::std::os::raw::c_uint;$/;" t +__u_int r_readline/src/lib.rs /^pub type __u_int = ::std::os::raw::c_uint;$/;" t +__u_long builtins_rust/wait/src/signal.rs /^pub type __u_long = ::std::os::raw::c_ulong;$/;" t +__u_long r_bash/src/lib.rs /^pub type __u_long = ::std::os::raw::c_ulong;$/;" t +__u_long r_glob/src/lib.rs /^pub type __u_long = ::std::os::raw::c_ulong;$/;" t +__u_long r_readline/src/lib.rs /^pub type __u_long = ::std::os::raw::c_ulong;$/;" t +__u_quad_t builtins_rust/wait/src/signal.rs /^pub type __u_quad_t = ::std::os::raw::c_ulong;$/;" t +__u_quad_t r_bash/src/lib.rs /^pub type __u_quad_t = ::std::os::raw::c_ulong;$/;" t +__u_quad_t r_glob/src/lib.rs /^pub type __u_quad_t = ::std::os::raw::c_ulong;$/;" t +__u_quad_t r_readline/src/lib.rs /^pub type __u_quad_t = ::std::os::raw::c_ulong;$/;" t +__u_short builtins_rust/wait/src/signal.rs /^pub type __u_short = ::std::os::raw::c_ushort;$/;" t +__u_short r_bash/src/lib.rs /^pub type __u_short = ::std::os::raw::c_ushort;$/;" t +__u_short r_glob/src/lib.rs /^pub type __u_short = ::std::os::raw::c_ushort;$/;" t +__u_short r_readline/src/lib.rs /^pub type __u_short = ::std::os::raw::c_ushort;$/;" t +__uflow r_bash/src/lib.rs /^ pub fn __uflow(arg1: *mut FILE) -> ::std::os::raw::c_int;$/;" f +__uflow r_readline/src/lib.rs /^ pub fn __uflow(arg1: *mut FILE) -> ::std::os::raw::c_int;$/;" f +__uid_t builtins_rust/ulimit/src/lib.rs /^pub type __uid_t = i32;$/;" t +__uid_t builtins_rust/wait/src/signal.rs /^pub type __uid_t = ::std::os::raw::c_uint;$/;" t +__uid_t r_bash/src/lib.rs /^pub type __uid_t = ::std::os::raw::c_uint;$/;" t +__uid_t r_glob/src/lib.rs /^pub type __uid_t = ::std::os::raw::c_uint;$/;" t +__uid_t r_readline/src/lib.rs /^pub type __uid_t = ::std::os::raw::c_uint;$/;" t +__uid_t vendor/libc/src/solid/mod.rs /^pub type __uid_t = u32;$/;" t +__uint16 vendor/winapi/src/lib.rs /^ pub type __uint16 = u16;$/;" t module:ctypes +__uint16_t builtins_rust/wait/src/signal.rs /^pub type __uint16_t = ::std::os::raw::c_ushort;$/;" t +__uint16_t r_bash/src/lib.rs /^pub type __uint16_t = ::std::os::raw::c_ushort;$/;" t +__uint16_t r_glob/src/lib.rs /^pub type __uint16_t = ::std::os::raw::c_ushort;$/;" t +__uint16_t r_readline/src/lib.rs /^pub type __uint16_t = ::std::os::raw::c_ushort;$/;" t +__uint32 vendor/winapi/src/lib.rs /^ pub type __uint32 = u32;$/;" t module:ctypes +__uint32_t builtins_rust/wait/src/signal.rs /^pub type __uint32_t = ::std::os::raw::c_uint;$/;" t +__uint32_t r_bash/src/lib.rs /^pub type __uint32_t = ::std::os::raw::c_uint;$/;" t +__uint32_t r_glob/src/lib.rs /^pub type __uint32_t = ::std::os::raw::c_uint;$/;" t +__uint32_t r_readline/src/lib.rs /^pub type __uint32_t = ::std::os::raw::c_uint;$/;" t +__uint64 vendor/winapi/src/lib.rs /^ pub type __uint64 = u64;$/;" t module:ctypes +__uint64_t builtins_rust/wait/src/signal.rs /^pub type __uint64_t = ::std::os::raw::c_ulong;$/;" t +__uint64_t r_bash/src/lib.rs /^pub type __uint64_t = ::std::os::raw::c_ulong;$/;" t +__uint64_t r_glob/src/lib.rs /^pub type __uint64_t = ::std::os::raw::c_ulong;$/;" t +__uint64_t r_readline/src/lib.rs /^pub type __uint64_t = ::std::os::raw::c_ulong;$/;" t +__uint8 vendor/winapi/src/lib.rs /^ pub type __uint8 = u8;$/;" t module:ctypes +__uint8_t builtins_rust/wait/src/signal.rs /^pub type __uint8_t = ::std::os::raw::c_uchar;$/;" t +__uint8_t r_bash/src/lib.rs /^pub type __uint8_t = ::std::os::raw::c_uchar;$/;" t +__uint8_t r_glob/src/lib.rs /^pub type __uint8_t = ::std::os::raw::c_uchar;$/;" t +__uint8_t r_readline/src/lib.rs /^pub type __uint8_t = ::std::os::raw::c_uchar;$/;" t +__uint_least16_t builtins_rust/wait/src/signal.rs /^pub type __uint_least16_t = __uint16_t;$/;" t +__uint_least16_t r_bash/src/lib.rs /^pub type __uint_least16_t = __uint16_t;$/;" t +__uint_least16_t r_glob/src/lib.rs /^pub type __uint_least16_t = __uint16_t;$/;" t +__uint_least16_t r_readline/src/lib.rs /^pub type __uint_least16_t = __uint16_t;$/;" t +__uint_least32_t builtins_rust/wait/src/signal.rs /^pub type __uint_least32_t = __uint32_t;$/;" t +__uint_least32_t r_bash/src/lib.rs /^pub type __uint_least32_t = __uint32_t;$/;" t +__uint_least32_t r_glob/src/lib.rs /^pub type __uint_least32_t = __uint32_t;$/;" t +__uint_least32_t r_readline/src/lib.rs /^pub type __uint_least32_t = __uint32_t;$/;" t +__uint_least64_t builtins_rust/wait/src/signal.rs /^pub type __uint_least64_t = __uint64_t;$/;" t +__uint_least64_t r_bash/src/lib.rs /^pub type __uint_least64_t = __uint64_t;$/;" t +__uint_least64_t r_glob/src/lib.rs /^pub type __uint_least64_t = __uint64_t;$/;" t +__uint_least64_t r_readline/src/lib.rs /^pub type __uint_least64_t = __uint64_t;$/;" t +__uint_least8_t builtins_rust/wait/src/signal.rs /^pub type __uint_least8_t = __uint8_t;$/;" t +__uint_least8_t r_bash/src/lib.rs /^pub type __uint_least8_t = __uint8_t;$/;" t +__uint_least8_t r_glob/src/lib.rs /^pub type __uint_least8_t = __uint8_t;$/;" t +__uint_least8_t r_readline/src/lib.rs /^pub type __uint_least8_t = __uint8_t;$/;" t +__uintmax_t builtins_rust/wait/src/signal.rs /^pub type __uintmax_t = ::std::os::raw::c_ulong;$/;" t +__uintmax_t r_bash/src/lib.rs /^pub type __uintmax_t = ::std::os::raw::c_ulong;$/;" t +__uintmax_t r_glob/src/lib.rs /^pub type __uintmax_t = ::std::os::raw::c_ulong;$/;" t +__uintmax_t r_readline/src/lib.rs /^pub type __uintmax_t = ::std::os::raw::c_ulong;$/;" t +__useconds_t builtins_rust/wait/src/signal.rs /^pub type __useconds_t = ::std::os::raw::c_uint;$/;" t +__useconds_t r_bash/src/lib.rs /^pub type __useconds_t = ::std::os::raw::c_uint;$/;" t +__useconds_t r_glob/src/lib.rs /^pub type __useconds_t = ::std::os::raw::c_uint;$/;" t +__useconds_t r_readline/src/lib.rs /^pub type __useconds_t = ::std::os::raw::c_uint;$/;" t +__va_list vendor/libc/src/solid/mod.rs /^pub type __va_list = *mut c_char;$/;" t +__va_list_tag r_bash/src/lib.rs /^pub struct __va_list_tag {$/;" s +__va_list_tag r_glob/src/lib.rs /^pub struct __va_list_tag {$/;" s +__va_list_tag r_readline/src/lib.rs /^pub struct __va_list_tag {$/;" s +__val builtins_rust/read/src/intercdep.rs /^ pub __val: [c_ulong; 16usize],$/;" m struct:__sigset_t +__val builtins_rust/rreturn/src/intercdep.rs /^ pub __val: [c_ulong; 16usize],$/;" m struct:__sigset_t +__val builtins_rust/wait/src/signal.rs /^ pub __val: [::std::os::raw::c_int; 2usize],$/;" m struct:__fsid_t +__val builtins_rust/wait/src/signal.rs /^ pub __val: [::std::os::raw::c_ulong; 16usize],$/;" m struct:__sigset_t +__val r_bash/src/lib.rs /^ pub __val: [::std::os::raw::c_int; 2usize],$/;" m struct:__fsid_t +__val r_bash/src/lib.rs /^ pub __val: [::std::os::raw::c_ulong; 16usize],$/;" m struct:__sigset_t +__val r_glob/src/lib.rs /^ pub __val: [::std::os::raw::c_int; 2usize],$/;" m struct:__fsid_t +__val r_glob/src/lib.rs /^ pub __val: [::std::os::raw::c_ulong; 16usize],$/;" m struct:__sigset_t +__val r_readline/src/lib.rs /^ pub __val: [::std::os::raw::c_int; 2usize],$/;" m struct:__fsid_t +__val r_readline/src/lib.rs /^ pub __val: [::std::os::raw::c_ulong; 16usize],$/;" m struct:__sigset_t +__value builtins_rust/printf/src/intercdep.rs /^ pub __value: __mbstate_t__bindgen_ty_1,$/;" m struct:__mbstate_t +__value builtins_rust/read/src/intercdep.rs /^ pub __value: __mbstate_t__bindgen_ty_1,$/;" m struct:__mbstate_t +__value r_bash/src/lib.rs /^ pub __value: __mbstate_t__bindgen_ty_1,$/;" m struct:__mbstate_t +__value r_glob/src/lib.rs /^ pub __value: __mbstate_t__bindgen_ty_1,$/;" m struct:__mbstate_t +__value r_readline/src/lib.rs /^ pub __value: __mbstate_t__bindgen_ty_1,$/;" m struct:__mbstate_t +__wasi_rights_t vendor/libc/src/wasi.rs /^pub type __wasi_rights_t = u64;$/;" t +__wasilibc_access vendor/libc/src/wasi.rs /^ pub fn __wasilibc_access(pathname: *const c_char, mode: c_int, flags: c_int) -> c_int;$/;" f +__wasilibc_fd_renumber vendor/libc/src/wasi.rs /^ pub fn __wasilibc_fd_renumber(fd: c_int, newfd: c_int) -> c_int;$/;" f +__wasilibc_find_relpath vendor/libc/src/wasi.rs /^ pub fn __wasilibc_find_relpath($/;" f +__wasilibc_link vendor/libc/src/wasi.rs /^ pub fn __wasilibc_link(oldpath: *const c_char, newpath: *const c_char, flags: c_int) -> c_in/;" f +__wasilibc_link_newat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_link_newat($/;" f +__wasilibc_link_oldat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_link_oldat($/;" f +__wasilibc_nocwd___wasilibc_rmdirat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_nocwd___wasilibc_rmdirat(dirfd: c_int, path: *const c_char) -> c_int;$/;" f +__wasilibc_nocwd___wasilibc_unlinkat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_nocwd___wasilibc_unlinkat(dirfd: c_int, path: *const c_char) -> c_int;$/;" f +__wasilibc_nocwd_faccessat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_nocwd_faccessat($/;" f +__wasilibc_nocwd_fstatat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_nocwd_fstatat($/;" f +__wasilibc_nocwd_linkat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_nocwd_linkat($/;" f +__wasilibc_nocwd_mkdirat_nomode vendor/libc/src/wasi.rs /^ pub fn __wasilibc_nocwd_mkdirat_nomode(dirfd: c_int, path: *const c_char) -> c_int;$/;" f +__wasilibc_nocwd_openat_nomode vendor/libc/src/wasi.rs /^ pub fn __wasilibc_nocwd_openat_nomode(dirfd: c_int, path: *const c_char, flags: c_int)$/;" f +__wasilibc_nocwd_opendirat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_nocwd_opendirat(dirfd: c_int, path: *const c_char) -> *mut ::DIR;$/;" f +__wasilibc_nocwd_readlinkat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_nocwd_readlinkat($/;" f +__wasilibc_nocwd_renameat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_nocwd_renameat($/;" f +__wasilibc_nocwd_symlinkat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_nocwd_symlinkat($/;" f +__wasilibc_nocwd_utimensat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_nocwd_utimensat($/;" f +__wasilibc_register_preopened_fd vendor/libc/src/wasi.rs /^ pub fn __wasilibc_register_preopened_fd(fd: c_int, path: *const c_char) -> c_int;$/;" f +__wasilibc_rename_newat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_rename_newat($/;" f +__wasilibc_rename_oldat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_rename_oldat($/;" f +__wasilibc_rmdirat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_rmdirat(fd: c_int, path: *const c_char) -> c_int;$/;" f +__wasilibc_stat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_stat(pathname: *const c_char, buf: *mut stat, flags: c_int) -> c_int;$/;" f +__wasilibc_tell vendor/libc/src/wasi.rs /^ pub fn __wasilibc_tell(fd: c_int) -> ::off_t;$/;" f +__wasilibc_unlinkat vendor/libc/src/wasi.rs /^ pub fn __wasilibc_unlinkat(fd: c_int, path: *const c_char) -> c_int;$/;" f +__wasilibc_utimens vendor/libc/src/wasi.rs /^ pub fn __wasilibc_utimens($/;" f +__wrefs builtins_rust/wait/src/signal.rs /^ pub __wrefs: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s +__wrefs r_bash/src/lib.rs /^ pub __wrefs: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s +__wrefs r_glob/src/lib.rs /^ pub __wrefs: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s +__wrefs r_readline/src/lib.rs /^ pub __wrefs: ::std::os::raw::c_uint,$/;" m struct:__pthread_cond_s +__writers builtins_rust/wait/src/signal.rs /^ pub __writers: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__writers r_bash/src/lib.rs /^ pub __writers: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__writers r_glob/src/lib.rs /^ pub __writers: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__writers r_readline/src/lib.rs /^ pub __writers: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__writers_futex builtins_rust/wait/src/signal.rs /^ pub __writers_futex: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__writers_futex r_bash/src/lib.rs /^ pub __writers_futex: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__writers_futex r_glob/src/lib.rs /^ pub __writers_futex: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__writers_futex r_readline/src/lib.rs /^ pub __writers_futex: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__wrphase_futex builtins_rust/wait/src/signal.rs /^ pub __wrphase_futex: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__wrphase_futex r_bash/src/lib.rs /^ pub __wrphase_futex: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__wrphase_futex r_glob/src/lib.rs /^ pub __wrphase_futex: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__wrphase_futex r_readline/src/lib.rs /^ pub __wrphase_futex: ::std::os::raw::c_uint,$/;" m struct:__pthread_rwlock_arch_t +__x r_bash/src/lib.rs /^ pub __x: [::std::os::raw::c_ushort; 3usize],$/;" m struct:drand48_data +__x r_glob/src/lib.rs /^ pub __x: [::std::os::raw::c_ushort; 3usize],$/;" m struct:drand48_data +__x r_readline/src/lib.rs /^ pub __x: [::std::os::raw::c_ushort; 3usize],$/;" m struct:drand48_data +__xmknod r_bash/src/lib.rs /^ pub fn __xmknod($/;" f +__xmknod r_readline/src/lib.rs /^ pub fn __xmknod($/;" f +__xmknodat r_bash/src/lib.rs /^ pub fn __xmknodat($/;" f +__xmknodat r_readline/src/lib.rs /^ pub fn __xmknodat($/;" f +__xstat r_bash/src/lib.rs /^ pub fn __xstat($/;" f +__xstat r_readline/src/lib.rs /^ pub fn __xstat($/;" f +__xstat64 r_bash/src/lib.rs /^ pub fn __xstat64($/;" f +__xstat64 r_readline/src/lib.rs /^ pub fn __xstat64($/;" f +__xuname vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn __xuname(nmln: ::c_int, buf: *mut ::c_void) -> ::c_int;$/;" f +_address builtins_rust/kill/src/intercdep.rs /^ pub _address: u8,$/;" m struct:connection +_address builtins_rust/setattr/src/intercdep.rs /^ pub _address: u8,$/;" m struct:connection +_address r_bash/src/lib.rs /^ pub _address: u8,$/;" m struct:__locale_data +_address r_glob/src/lib.rs /^ pub _address: u8,$/;" m struct:__locale_data +_address r_readline/src/lib.rs /^ pub _address: u8,$/;" m struct:__locale_data +_alloca lib/malloc/x386-alloca.s /^_alloca PROC NEAR$/;" l +_arch builtins_rust/wait/src/signal.rs /^ pub _arch: ::std::os::raw::c_uint,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_7 +_arch r_bash/src/lib.rs /^ pub _arch: ::std::os::raw::c_uint,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_7 +_arch r_glob/src/lib.rs /^ pub _arch: ::std::os::raw::c_uint,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_7 +_arch r_readline/src/lib.rs /^ pub _arch: ::std::os::raw::c_uint,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_7 +_attribute builtins_rust/wait/src/signal.rs /^ pub _attribute: *mut pthread_attr_t,$/;" m struct:sigevent__bindgen_ty_1__bindgen_ty_1 +_attribute r_bash/src/lib.rs /^ pub _attribute: *mut pthread_attr_t,$/;" m struct:sigevent__bindgen_ty_1__bindgen_ty_1 +_attribute r_glob/src/lib.rs /^ pub _attribute: *mut pthread_attr_t,$/;" m struct:sigevent__bindgen_ty_1__bindgen_ty_1 +_attribute r_readline/src/lib.rs /^ pub _attribute: *mut pthread_attr_t,$/;" m struct:sigevent__bindgen_ty_1__bindgen_ty_1 +_base lib/sh/fpurge.c /^# define _base /;" d file: +_bindgen_ty_1 builtins_rust/wait/src/signal.rs /^pub type _bindgen_ty_1 = i32;$/;" t +_bindgen_ty_1 r_bash/src/lib.rs /^pub type _bindgen_ty_1 = i32;$/;" t +_bindgen_ty_1 r_glob/src/lib.rs /^pub type _bindgen_ty_1 = i32;$/;" t +_bindgen_ty_1 r_readline/src/lib.rs /^pub type _bindgen_ty_1 = i32;$/;" t +_bindgen_ty_10 r_bash/src/lib.rs /^pub type _bindgen_ty_10 = u32;$/;" t +_bindgen_ty_10 r_glob/src/lib.rs /^pub type _bindgen_ty_10 = u32;$/;" t +_bindgen_ty_10 r_readline/src/lib.rs /^pub type _bindgen_ty_10 = u32;$/;" t +_bindgen_ty_11 r_bash/src/lib.rs /^pub type _bindgen_ty_11 = u32;$/;" t +_bindgen_ty_11 r_glob/src/lib.rs /^pub type _bindgen_ty_11 = u32;$/;" t +_bindgen_ty_11 r_readline/src/lib.rs /^pub type _bindgen_ty_11 = u32;$/;" t +_bindgen_ty_12 r_bash/src/lib.rs /^pub type _bindgen_ty_12 = u32;$/;" t +_bindgen_ty_12 r_glob/src/lib.rs /^pub type _bindgen_ty_12 = u32;$/;" t +_bindgen_ty_12 r_readline/src/lib.rs /^pub type _bindgen_ty_12 = u32;$/;" t +_bindgen_ty_13 r_bash/src/lib.rs /^pub type _bindgen_ty_13 = u32;$/;" t +_bindgen_ty_13 r_glob/src/lib.rs /^pub type _bindgen_ty_13 = u32;$/;" t +_bindgen_ty_13 r_readline/src/lib.rs /^pub type _bindgen_ty_13 = u32;$/;" t +_bindgen_ty_14 r_bash/src/lib.rs /^pub type _bindgen_ty_14 = u32;$/;" t +_bindgen_ty_14 r_glob/src/lib.rs /^pub type _bindgen_ty_14 = u32;$/;" t +_bindgen_ty_14 r_readline/src/lib.rs /^pub type _bindgen_ty_14 = u32;$/;" t +_bindgen_ty_15 r_bash/src/lib.rs /^pub type _bindgen_ty_15 = u32;$/;" t +_bindgen_ty_15 r_glob/src/lib.rs /^pub type _bindgen_ty_15 = u32;$/;" t +_bindgen_ty_15 r_readline/src/lib.rs /^pub type _bindgen_ty_15 = u32;$/;" t +_bindgen_ty_16 r_bash/src/lib.rs /^pub type _bindgen_ty_16 = u32;$/;" t +_bindgen_ty_16 r_glob/src/lib.rs /^pub type _bindgen_ty_16 = u32;$/;" t +_bindgen_ty_16 r_readline/src/lib.rs /^pub type _bindgen_ty_16 = u32;$/;" t +_bindgen_ty_17 r_bash/src/lib.rs /^pub type _bindgen_ty_17 = u32;$/;" t +_bindgen_ty_17 r_readline/src/lib.rs /^pub type _bindgen_ty_17 = u32;$/;" t +_bindgen_ty_2 builtins_rust/wait/src/signal.rs /^pub type _bindgen_ty_2 = u32;$/;" t +_bindgen_ty_2 r_bash/src/lib.rs /^pub type _bindgen_ty_2 = u32;$/;" t +_bindgen_ty_2 r_glob/src/lib.rs /^pub type _bindgen_ty_2 = u32;$/;" t +_bindgen_ty_2 r_readline/src/lib.rs /^pub type _bindgen_ty_2 = u32;$/;" t +_bindgen_ty_3 builtins_rust/wait/src/signal.rs /^pub type _bindgen_ty_3 = u32;$/;" t +_bindgen_ty_3 r_bash/src/lib.rs /^pub type _bindgen_ty_3 = u32;$/;" t +_bindgen_ty_3 r_glob/src/lib.rs /^pub type _bindgen_ty_3 = u32;$/;" t +_bindgen_ty_3 r_readline/src/lib.rs /^pub type _bindgen_ty_3 = u32;$/;" t +_bindgen_ty_4 builtins_rust/wait/src/signal.rs /^pub type _bindgen_ty_4 = u32;$/;" t +_bindgen_ty_4 r_bash/src/lib.rs /^pub type _bindgen_ty_4 = u32;$/;" t +_bindgen_ty_4 r_glob/src/lib.rs /^pub type _bindgen_ty_4 = u32;$/;" t +_bindgen_ty_4 r_readline/src/lib.rs /^pub type _bindgen_ty_4 = u32;$/;" t +_bindgen_ty_5 builtins_rust/wait/src/signal.rs /^pub type _bindgen_ty_5 = u32;$/;" t +_bindgen_ty_5 r_bash/src/lib.rs /^pub type _bindgen_ty_5 = i32;$/;" t +_bindgen_ty_5 r_glob/src/lib.rs /^pub type _bindgen_ty_5 = i32;$/;" t +_bindgen_ty_5 r_readline/src/lib.rs /^pub type _bindgen_ty_5 = i32;$/;" t +_bindgen_ty_6 builtins_rust/wait/src/signal.rs /^pub type _bindgen_ty_6 = u32;$/;" t +_bindgen_ty_6 r_bash/src/lib.rs /^pub type _bindgen_ty_6 = u32;$/;" t +_bindgen_ty_6 r_glob/src/lib.rs /^pub type _bindgen_ty_6 = u32;$/;" t +_bindgen_ty_6 r_readline/src/lib.rs /^pub type _bindgen_ty_6 = u32;$/;" t +_bindgen_ty_7 builtins_rust/wait/src/signal.rs /^pub type _bindgen_ty_7 = u32;$/;" t +_bindgen_ty_7 r_bash/src/lib.rs /^pub type _bindgen_ty_7 = u32;$/;" t +_bindgen_ty_7 r_glob/src/lib.rs /^pub type _bindgen_ty_7 = u32;$/;" t +_bindgen_ty_7 r_readline/src/lib.rs /^pub type _bindgen_ty_7 = u32;$/;" t +_bindgen_ty_8 builtins_rust/wait/src/signal.rs /^pub type _bindgen_ty_8 = u32;$/;" t +_bindgen_ty_8 r_bash/src/lib.rs /^pub type _bindgen_ty_8 = u32;$/;" t +_bindgen_ty_8 r_glob/src/lib.rs /^pub type _bindgen_ty_8 = u32;$/;" t +_bindgen_ty_8 r_readline/src/lib.rs /^pub type _bindgen_ty_8 = u32;$/;" t +_bindgen_ty_9 builtins_rust/wait/src/signal.rs /^pub type _bindgen_ty_9 = u32;$/;" t +_bindgen_ty_9 r_bash/src/lib.rs /^pub type _bindgen_ty_9 = u32;$/;" t +_bindgen_ty_9 r_glob/src/lib.rs /^pub type _bindgen_ty_9 = u32;$/;" t +_bindgen_ty_9 r_readline/src/lib.rs /^pub type _bindgen_ty_9 = u32;$/;" t +_bitfield_1 r_bash/src/lib.rs /^ pub _bitfield_1: [i32;11],$/;" m struct:timex +_bitfield_1 r_bash/src/lib.rs /^ pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u16>,$/;" m struct:wait__bindgen_ty_1 +_bitfield_1 r_bash/src/lib.rs /^ pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u16>,$/;" m struct:wait__bindgen_ty_2 +_bitfield_1 r_readline/src/lib.rs /^ pub _bitfield_1: [i32;11],$/;" m struct:timex +_bounds builtins_rust/wait/src/signal.rs /^ pub _bounds: siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5 +_bounds r_bash/src/lib.rs /^ pub _bounds: siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5 +_bounds r_glob/src/lib.rs /^ pub _bounds: siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5 +_bounds r_readline/src/lib.rs /^ pub _bounds: siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5 +_call_addr builtins_rust/wait/src/signal.rs /^ pub _call_addr: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_7 +_call_addr r_bash/src/lib.rs /^ pub _call_addr: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_7 +_call_addr r_glob/src/lib.rs /^ pub _call_addr: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_7 +_call_addr r_readline/src/lib.rs /^ pub _call_addr: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_7 +_chain r_bash/src/lib.rs /^ pub _chain: *mut _IO_FILE,$/;" m struct:_IO_FILE +_chain r_readline/src/lib.rs /^ pub _chain: *mut _IO_FILE,$/;" m struct:_IO_FILE +_cmd builtins_rust/ulimit/src/lib.rs /^pub struct _cmd {$/;" s +_cnt lib/sh/fpurge.c /^# define _cnt /;" d file: +_codecvt r_bash/src/lib.rs /^ pub _codecvt: *mut _IO_codecvt,$/;" m struct:_IO_FILE +_codecvt r_readline/src/lib.rs /^ pub _codecvt: *mut _IO_codecvt,$/;" m struct:_IO_FILE +_color_ext_type lib/readline/colors.h /^typedef struct _color_ext_type$/;" s +_color_ext_type r_readline/src/lib.rs /^pub struct _color_ext_type {$/;" s +_compacts builtins_rust/complete/src/lib.rs /^pub struct _compacts {$/;" s +_compopt builtins_rust/complete/src/lib.rs /^pub struct _compopt {$/;" s +_core vendor/bitflags/tests/compile-pass/redefinition/core.rs /^mod _core {}$/;" n +_covariant_access vendor/self_cell/src/lib.rs /^macro_rules! _covariant_access {$/;" M +_covariant_owner_marker vendor/self_cell/src/lib.rs /^macro_rules! _covariant_owner_marker {$/;" M +_covariant_owner_marker_ctor vendor/self_cell/src/lib.rs /^macro_rules! _covariant_owner_marker_ctor {$/;" M +_cpid vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _cpid: ::pid_t,$/;" m struct:siginfo_t::si_status::siginfo_timer +_cpuset_clr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn _cpuset_clr(cpu: cpuid_t, set: *mut cpuset_t) -> ::c_int;$/;" f +_cpuset_create vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn _cpuset_create() -> *mut cpuset_t;$/;" f +_cpuset_destroy vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn _cpuset_destroy(set: *mut cpuset_t);$/;" f +_cpuset_isset vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn _cpuset_isset(cpu: cpuid_t, set: *const cpuset_t) -> ::c_int;$/;" f +_cpuset_set vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn _cpuset_set(cpu: cpuid_t, set: *mut cpuset_t) -> ::c_int;$/;" f +_cpuset_size vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn _cpuset_size(set: *const cpuset_t) -> ::size_t;$/;" f +_cpuset_zero vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn _cpuset_zero(set: *mut cpuset_t);$/;" f +_cuid vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _cuid: ::uid_t,$/;" m struct:siginfo_t::si_status::siginfo_timer +_cur_column r_bash/src/lib.rs /^ pub _cur_column: ::std::os::raw::c_ushort,$/;" m struct:_IO_FILE +_cur_column r_readline/src/lib.rs /^ pub _cur_column: ::std::os::raw::c_ushort,$/;" m struct:_IO_FILE +_cygwin32_check_tmp shell.c /^_cygwin32_check_tmp ()$/;" f typeref:typename:void file: +_data vendor/futures-util/src/future/pending.rs /^ _data: marker::PhantomData,$/;" m struct:Pending +_data vendor/futures-util/src/stream/pending.rs /^ _data: marker::PhantomData,$/;" m struct:Pending +_data vendor/futures/tests/eager_drop.rs /^ _data: T,$/;" m struct:FutureData +_data vendor/nix/src/sys/aio.rs /^ _data: PhantomData<&'a [&'a [u8]]>,$/;" m struct:AioReadv +_data vendor/nix/src/sys/aio.rs /^ _data: PhantomData<&'a [&'a [u8]]>,$/;" m struct:AioWritev +_data vendor/nix/src/sys/aio.rs /^ _data: PhantomData<&'a [u8]>,$/;" m struct:AioRead +_data vendor/nix/src/sys/aio.rs /^ _data: PhantomData<&'a [u8]>,$/;" m struct:AioWrite +_dlauxinfo vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn _dlauxinfo() -> *mut ::c_void;$/;" f +_dummy vendor/once_cell/src/lib.rs /^ fn _dummy() {}$/;" f module:sync +_dummy vendor/once_cell/src/race.rs /^ fn _dummy() {}$/;" f module:once_box +_dyld_get_image_header vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn _dyld_get_image_header(image_index: u32) -> *const mach_header;$/;" f +_dyld_get_image_name vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn _dyld_get_image_name(image_index: u32) -> *const ::c_char;$/;" f +_dyld_get_image_vmaddr_slide vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn _dyld_get_image_vmaddr_slide(image_index: u32) -> ::intptr_t;$/;" f +_dyld_image_count vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn _dyld_image_count() -> u32;$/;" f +_emx_get_screensize lib/readline/terminal.c /^_emx_get_screensize (int *swp, int *shp)$/;" f typeref:typename:void file: +_entry_flags lib/malloc/table.c /^_entry_flags(x)$/;" f file: +_errnop vendor/libc/src/unix/haiku/mod.rs /^ pub fn _errnop() -> *mut ::c_int;$/;" f +_evalfile builtins/evalfile.c /^_evalfile (filename, flags)$/;" f file: +_exit r_bash/src/lib.rs /^ pub fn _exit(__status: ::std::os::raw::c_int);$/;" f +_exit r_glob/src/lib.rs /^ pub fn _exit(__status: ::std::os::raw::c_int);$/;" f +_exit r_readline/src/lib.rs /^ pub fn _exit(__status: ::std::os::raw::c_int);$/;" f +_exit vendor/libc/src/fuchsia/mod.rs /^ pub fn _exit(status: c_int) -> !;$/;" f +_exit vendor/libc/src/solid/mod.rs /^ pub fn _exit(arg1: c_int);$/;" f +_exit vendor/libc/src/unix/mod.rs /^ pub fn _exit(status: c_int) -> !;$/;" f +_exit vendor/libc/src/vxworks/mod.rs /^ pub fn _exit(status: ::c_int) -> !;$/;" f +_exit vendor/libc/src/wasi.rs /^ pub fn _exit(code: c_int) -> !;$/;" f +_exit vendor/libc/src/windows/mod.rs /^ pub fn _exit(status: c_int) -> !;$/;" f +_f target/debug/build/thiserror-370ee8694a12dea7/out/probe.rs /^ fn _f<'a, P: Provider>(p: &'a P, demand: &mut Demand<'a>) {$/;" f +_field_pointers vendor/self_cell/src/unsafe_self_cell.rs /^ pub unsafe fn _field_pointers(this: *mut Self) -> (*mut Owner, *mut Dependent) {$/;" P implementation:JoinedCell +_fileinfo mailcheck.c /^typedef struct _fileinfo {$/;" s file: +_fileno r_bash/src/lib.rs /^ pub _fileno: ::std::os::raw::c_int,$/;" m struct:_IO_FILE +_fileno r_readline/src/lib.rs /^ pub _fileno: ::std::os::raw::c_int,$/;" m struct:_IO_FILE +_find_in_table builtins/mkbuiltins.c /^_find_in_table (name, name_table)$/;" f file: +_find_user_command_internal findcmd.c /^_find_user_command_internal (name, flags)$/;" f file: +_findlim builtins_rust/ulimit/src/lib.rs /^fn _findlim(opt: i32) -> i32 {$/;" f +_flag lib/sh/fpurge.c /^# define _flag /;" d file: +_flags lib/sh/fpurge.c /^# define _flags /;" d file: +_flags r_bash/src/lib.rs /^ pub _flags: ::std::os::raw::c_int,$/;" m struct:_IO_FILE +_flags r_readline/src/lib.rs /^ pub _flags: ::std::os::raw::c_int,$/;" m struct:_IO_FILE +_flags2 r_bash/src/lib.rs /^ pub _flags2: ::std::os::raw::c_int,$/;" m struct:_IO_FILE +_flags2 r_readline/src/lib.rs /^ pub _flags2: ::std::os::raw::c_int,$/;" m struct:_IO_FILE +_fnmatch_fallback lib/glob/smatch.c /^_fnmatch_fallback (s, p)$/;" f file: +_fnmatch_fallback_wc lib/glob/smatch.c /^_fnmatch_fallback_wc (c1, c2)$/;" f file: +_fpreg builtins_rust/wait/src/signal.rs /^pub struct _fpreg {$/;" s +_fpreg r_bash/src/lib.rs /^pub struct _fpreg {$/;" s +_fpreg r_glob/src/lib.rs /^pub struct _fpreg {$/;" s +_fpreg r_readline/src/lib.rs /^pub struct _fpreg {$/;" s +_fpstate builtins_rust/wait/src/signal.rs /^pub struct _fpstate {$/;" s +_fpstate r_bash/src/lib.rs /^pub struct _fpstate {$/;" s +_fpstate r_glob/src/lib.rs /^pub struct _fpstate {$/;" s +_fpstate r_readline/src/lib.rs /^pub struct _fpstate {$/;" s +_fpx_sw_bytes builtins_rust/wait/src/signal.rs /^pub struct _fpx_sw_bytes {$/;" s +_fpx_sw_bytes r_bash/src/lib.rs /^pub struct _fpx_sw_bytes {$/;" s +_fpx_sw_bytes r_glob/src/lib.rs /^pub struct _fpx_sw_bytes {$/;" s +_fpx_sw_bytes r_readline/src/lib.rs /^pub struct _fpx_sw_bytes {$/;" s +_fpxreg builtins_rust/wait/src/signal.rs /^pub struct _fpxreg {$/;" s +_fpxreg r_bash/src/lib.rs /^pub struct _fpxreg {$/;" s +_fpxreg r_glob/src/lib.rs /^pub struct _fpxreg {$/;" s +_fpxreg r_readline/src/lib.rs /^pub struct _fpxreg {$/;" s +_freeres_buf r_bash/src/lib.rs /^ pub _freeres_buf: *mut ::std::os::raw::c_void,$/;" m struct:_IO_FILE +_freeres_buf r_readline/src/lib.rs /^ pub _freeres_buf: *mut ::std::os::raw::c_void,$/;" m struct:_IO_FILE +_freeres_list r_bash/src/lib.rs /^ pub _freeres_list: *mut _IO_FILE,$/;" m struct:_IO_FILE +_freeres_list r_readline/src/lib.rs /^ pub _freeres_list: *mut _IO_FILE,$/;" m struct:_IO_FILE +_function builtins_rust/wait/src/signal.rs /^ pub _function: ::std::option::Option,$/;" m struct:sigevent__bindgen_ty_1__bindgen_ty_1 +_function r_bash/src/lib.rs /^ pub _function: ::core::option::Option,$/;" m struct:sigevent__bindgen_ty_1__bindgen_ty_1 +_function r_glob/src/lib.rs /^ pub _function: ::core::option::Option,$/;" m struct:sigevent__bindgen_ty_1__bindgen_ty_1 +_function r_readline/src/lib.rs /^ pub _function: ::core::option::Option,$/;" m struct:sigevent__bindgen_ty_1__bindgen_ty_1 +_funmap lib/readline/readline.h /^typedef struct _funmap {$/;" s +_funmap r_readline/src/lib.rs /^pub struct _funmap {$/;" s +_g vendor/nix/test/test.rs /^ _g: RwLockWriteGuard<'a, ()>,$/;" m struct:DirRestore +_get_area_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_area_info(id: area_id, areaInfo: *mut area_info, size: usize) -> status_t;$/;" f +_get_cpu_info_etc vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_cpu_info_etc($/;" f +_get_image_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_image_info(image: image_id, info: *mut image_info, size: ::size_t) -> status_t;$/;" f +_get_next_area_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_next_area_info($/;" f +_get_next_image_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_next_image_info($/;" f +_get_next_port_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_next_port_info($/;" f +_get_next_sem_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_next_sem_info($/;" f +_get_next_team_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_next_team_info(cookie: *mut i32, info: *mut team_info, size: ::size_t) -> status/;" f +_get_next_thread_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_next_thread_info($/;" f +_get_port_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_port_info(port: port_id, buf: *mut port_info, portInfoSize: ::size_t) -> status_/;" f +_get_port_message_info_etc vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_port_message_info_etc($/;" f +_get_sem_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_sem_info(id: sem_id, info: *mut sem_info, infoSize: ::size_t) -> status_t;$/;" f +_get_team_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_team_info(team: team_id, info: *mut team_info, size: ::size_t) -> status_t;$/;" f +_get_team_usage_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_team_usage_info($/;" f +_get_thread_info vendor/libc/src/unix/haiku/native.rs /^ pub fn _get_thread_info(id: thread_id, info: *mut thread_info, size: ::size_t) -> status_t;$/;" f +_get_tty_settings lib/readline/rltty.c /^_get_tty_settings (int tty, TIOTYPE *tiop)$/;" f typeref:typename:int file: +_getaddr lib/sh/netopen.c /^_getaddr (host, ap)$/;" f file: +_getenv lib/sh/getenv.c /^_getenv (name)$/;" f +_getserv lib/sh/netopen.c /^_getserv (serv, proto, pp)$/;" f file: +_hist_entry builtins_rust/history/src/intercdep.rs /^pub struct _hist_entry {$/;" s +_hist_entry builtins_rust/rlet/src/intercdep.rs /^pub struct _hist_entry {$/;" s +_hist_entry lib/readline/history.h /^typedef struct _hist_entry {$/;" s +_hist_entry r_bashhist/src/lib.rs /^pub struct _hist_entry{$/;" s +_hist_entry r_readline/src/lib.rs /^pub struct _hist_entry {$/;" s +_hist_state lib/readline/history.h /^typedef struct _hist_state {$/;" s +_hist_state r_readline/src/lib.rs /^pub struct _hist_state {$/;" s +_hread vendor/winapi/src/um/winbase.rs /^ pub fn _hread($/;" f +_hs_append_history_line lib/readline/history.c /^_hs_append_history_line (int which, const char *line)$/;" f typeref:typename:void +_hs_history_patsearch lib/readline/histsearch.c /^_hs_history_patsearch (const char *string, int direction, int flags)$/;" f typeref:typename:int +_hs_history_patsearch r_readline/src/lib.rs /^ pub fn _hs_history_patsearch($/;" f +_hs_replace_history_data lib/readline/history.c /^_hs_replace_history_data (int which, histdata_t *old, histdata_t *new)$/;" f typeref:typename:void +_hwrite vendor/winapi/src/um/winbase.rs /^ pub fn _hwrite($/;" f +_ignore_completion_names bashline.c /^_ignore_completion_names (names, name_func)$/;" f file: +_imalloc_fopen lib/malloc/stats.c /^_imalloc_fopen (s, fn, def, defbuf, defsiz)$/;" f +_impl_automatic_derive vendor/self_cell/src/lib.rs /^macro_rules! _impl_automatic_derive {$/;" M +_is_arithop expr.c /^_is_arithop (c)$/;" f file: +_is_cygdrive lib/sh/pathcanon.c /^_is_cygdrive (path)$/;" f file: +_is_multiop expr.c /^_is_multiop (c)$/;" f file: +_keyboard_input_timeout lib/readline/input.c /^static int _keyboard_input_timeout = 100000; \/* 0.1 seconds; it's in usec *\/$/;" v typeref:typename:int file: +_keymap_entry builtins_rust/bind/src/lib.rs /^pub struct _keymap_entry {$/;" s +_keymap_entry builtins_rust/read/src/intercdep.rs /^pub struct _keymap_entry {$/;" s +_keymap_entry lib/readline/keymaps.h /^typedef struct _keymap_entry {$/;" s +_keymap_entry r_readline/src/lib.rs /^pub struct _keymap_entry {$/;" s +_lclose vendor/winapi/src/um/winbase.rs /^ pub fn _lclose($/;" f +_lcreat vendor/winapi/src/um/winbase.rs /^ pub fn _lcreat($/;" f +_libc_fpstate builtins_rust/wait/src/signal.rs /^pub struct _libc_fpstate {$/;" s +_libc_fpstate r_bash/src/lib.rs /^pub struct _libc_fpstate {$/;" s +_libc_fpstate r_glob/src/lib.rs /^pub struct _libc_fpstate {$/;" s +_libc_fpstate r_readline/src/lib.rs /^pub struct _libc_fpstate {$/;" s +_libc_fpxreg builtins_rust/wait/src/signal.rs /^pub struct _libc_fpxreg {$/;" s +_libc_fpxreg r_bash/src/lib.rs /^pub struct _libc_fpxreg {$/;" s +_libc_fpxreg r_glob/src/lib.rs /^pub struct _libc_fpxreg {$/;" s +_libc_fpxreg r_readline/src/lib.rs /^pub struct _libc_fpxreg {$/;" s +_libc_xmmreg builtins_rust/wait/src/signal.rs /^pub struct _libc_xmmreg {$/;" s +_libc_xmmreg r_bash/src/lib.rs /^pub struct _libc_xmmreg {$/;" s +_libc_xmmreg r_glob/src/lib.rs /^pub struct _libc_xmmreg {$/;" s +_libc_xmmreg r_readline/src/lib.rs /^pub struct _libc_xmmreg {$/;" s +_list_of_items builtins_rust/enable/src/lib.rs /^pub struct _list_of_items {$/;" s +_list_of_items pcomplete.h /^typedef struct _list_of_items {$/;" s +_list_of_items r_bash/src/lib.rs /^pub struct _list_of_items {$/;" s +_list_of_strings builtins_rust/enable/src/lib.rs /^pub struct _list_of_strings {$/;" s +_list_of_strings externs.h /^typedef struct _list_of_strings {$/;" s +_list_of_strings r_bash/src/lib.rs /^pub struct _list_of_strings {$/;" s +_llseek vendor/winapi/src/um/winbase.rs /^ pub fn _llseek($/;" f +_location_dump_table lib/malloc/table.c /^_location_dump_table (fp)$/;" f file: +_lock r_bash/src/lib.rs /^ pub _lock: *mut _IO_lock_t,$/;" m struct:_IO_FILE +_lock r_readline/src/lib.rs /^ pub _lock: *mut _IO_lock_t,$/;" m struct:_IO_FILE +_longjmp r_bash/src/lib.rs /^ pub fn _longjmp(__env: *mut __jmp_buf_tag, __val: ::std::os::raw::c_int);$/;" f +_longjmp r_readline/src/lib.rs /^ pub fn _longjmp(__env: *mut __jmp_buf_tag, __val: ::std::os::raw::c_int);$/;" f +_lopen vendor/winapi/src/um/winbase.rs /^ pub fn _lopen($/;" f +_lower builtins_rust/wait/src/signal.rs /^ pub _lower: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 +_lower r_bash/src/lib.rs /^ pub _lower: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 +_lower r_glob/src/lib.rs /^ pub _lower: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 +_lower r_readline/src/lib.rs /^ pub _lower: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 +_lread vendor/winapi/src/um/winbase.rs /^ pub fn _lread($/;" f +_lwp_self vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn _lwp_self() -> lwpid_t;$/;" f +_lwrite vendor/winapi/src/um/winbase.rs /^ pub fn _lwrite($/;" f +_malloc_block_signals lib/malloc/malloc.c /^_malloc_block_signals (setp, osetp)$/;" f +_malloc_ckwatch lib/malloc/watch.c /^_malloc_ckwatch (addr, file, line, type, data)$/;" f +_malloc_guard lib/malloc/malloc.c /^typedef union _malloc_guard {$/;" u file: +_malloc_nwatch lib/malloc/watch.c /^int _malloc_nwatch;$/;" v typeref:typename:int +_malloc_trace_buckets lib/malloc/malloc.c /^char _malloc_trace_buckets[NBUCKETS];$/;" v typeref:typename:char[] +_malloc_unblock_signals lib/malloc/malloc.c /^_malloc_unblock_signals (setp, osetp)$/;" f +_malloc_watch_list lib/malloc/watch.c /^static PTR_T _malloc_watch_list[WATCH_MAX];$/;" v typeref:typename:PTR_T[] file: +_malstats lib/malloc/mstats.h /^struct _malstats {$/;" s +_marker vendor/futures-task/src/future_obj.rs /^ _marker: PhantomData<&'a ()>,$/;" m struct:LocalFutureObj +_marker vendor/futures-task/src/waker_ref.rs /^ _marker: PhantomData<&'a ()>,$/;" m struct:WakerRef +_marker vendor/futures-util/src/lock/mutex.rs /^ _marker: PhantomData<&'a mut U>,$/;" m struct:MappedMutexGuard +_marker vendor/futures-util/src/stream/futures_unordered/iter.rs /^ pub(super) _marker: PhantomData<&'a FuturesUnordered>,$/;" m struct:IterPinRef +_marker vendor/futures-util/src/stream/futures_unordered/iter.rs /^ pub(super) _marker: PhantomData<&'a mut FuturesUnordered>,$/;" m struct:IterPinMut +_marker vendor/futures/tests/future_try_flatten_stream.rs /^ _marker: PhantomData<(T, E)>,$/;" m struct:failed_future::PanickingStream +_marker vendor/nix/src/net/if_.rs /^ _marker: PhantomData<&'a Interfaces>,$/;" m struct:if_nameindex::InterfacesIter +_marker vendor/once_cell/src/imp_std.rs /^ _marker: PhantomData<*mut Waiter>,$/;" m struct:OnceCell +_marker vendor/proc-macro2/src/lib.rs /^ _marker: Marker,$/;" m struct:token_stream::IntoIter +_marker vendor/proc-macro2/src/lib.rs /^ _marker: Marker,$/;" m struct:Ident +_marker vendor/proc-macro2/src/lib.rs /^ _marker: Marker,$/;" m struct:LexError +_marker vendor/proc-macro2/src/lib.rs /^ _marker: Marker,$/;" m struct:Literal +_marker vendor/proc-macro2/src/lib.rs /^ _marker: Marker,$/;" m struct:SourceFile +_marker vendor/proc-macro2/src/lib.rs /^ _marker: Marker,$/;" m struct:Span +_marker vendor/proc-macro2/src/lib.rs /^ _marker: Marker,$/;" m struct:TokenStream +_markers r_bash/src/lib.rs /^ pub _markers: *mut _IO_marker,$/;" m struct:_IO_FILE +_markers r_readline/src/lib.rs /^ pub _markers: *mut _IO_marker,$/;" m struct:_IO_FILE +_mb_cur_max_l vendor/libc/src/solid/mod.rs /^ pub fn _mb_cur_max_l(arg1: locale_t) -> size_t;$/;" f +_memoffset__addr_of vendor/memoffset/src/raw_field.rs /^macro_rules! _memoffset__addr_of {$/;" M +_memoffset__compile_error vendor/memoffset/src/span_of.rs /^macro_rules! _memoffset__compile_error {$/;" M +_memoffset__field_check vendor/memoffset/src/raw_field.rs /^macro_rules! _memoffset__field_check {$/;" M +_memoffset__field_check_tuple vendor/memoffset/src/raw_field.rs /^macro_rules! _memoffset__field_check_tuple {$/;" M +_memoffset__let_base_ptr vendor/memoffset/src/offset_of.rs /^macro_rules! _memoffset__let_base_ptr {$/;" M +_memoffset_offset_from_unsafe vendor/memoffset/src/offset_of.rs /^macro_rules! _memoffset_offset_from_unsafe {$/;" M +_mode r_bash/src/lib.rs /^ pub _mode: ::std::os::raw::c_int,$/;" m struct:_IO_FILE +_mode r_readline/src/lib.rs /^ pub _mode: ::std::os::raw::c_int,$/;" m struct:_IO_FILE +_mstats lib/malloc/malloc.c /^struct _malstats _mstats;$/;" v typeref:struct:_malstats +_mtrace_fp lib/malloc/trace.c /^FILE *_mtrace_fp = NULL;$/;" v typeref:typename:FILE * +_mtrace_verbose lib/malloc/trace.c /^static int _mtrace_verbose = 0;$/;" v typeref:typename:int file: +_netopen lib/sh/netopen.c /^_netopen(host, serv, typ)$/;" f file: +_netopen4 lib/sh/netopen.c /^_netopen4(host, serv, typ)$/;" f file: +_netopen6 lib/sh/netopen.c /^_netopen6 (host, serv, typ)$/;" f file: +_new vendor/proc-macro2/src/fallback.rs /^ fn _new(string: &str, raw: bool, span: Span) -> Self {$/;" P implementation:Ident +_new vendor/proc-macro2/src/fallback.rs /^ pub(crate) fn _new(repr: String) -> Self {$/;" P implementation:Literal +_new vendor/proc-macro2/src/lib.rs /^ fn _new(inner: imp::Group) -> Self {$/;" P implementation:Group +_new vendor/proc-macro2/src/lib.rs /^ fn _new(inner: imp::Ident) -> Self {$/;" P implementation:Ident +_new vendor/proc-macro2/src/lib.rs /^ fn _new(inner: imp::Literal) -> Self {$/;" P implementation:Literal +_new vendor/proc-macro2/src/lib.rs /^ fn _new(inner: imp::SourceFile) -> Self {$/;" P implementation:SourceFile +_new vendor/proc-macro2/src/lib.rs /^ fn _new(inner: imp::Span) -> Self {$/;" P implementation:Span +_new vendor/proc-macro2/src/lib.rs /^ fn _new(inner: imp::TokenStream) -> Self {$/;" P implementation:TokenStream +_new_raw vendor/proc-macro2/src/lib.rs /^ fn _new_raw(string: &str, span: Span) -> Self {$/;" P implementation:Ident +_new_stable vendor/proc-macro2/src/lib.rs /^ fn _new_stable(inner: fallback::Group) -> Self {$/;" P implementation:Group +_new_stable vendor/proc-macro2/src/lib.rs /^ fn _new_stable(inner: fallback::Literal) -> Self {$/;" P implementation:Literal +_new_stable vendor/proc-macro2/src/lib.rs /^ fn _new_stable(inner: fallback::Span) -> Self {$/;" P implementation:Span +_new_stable vendor/proc-macro2/src/lib.rs /^ fn _new_stable(inner: fallback::TokenStream) -> Self {$/;" P implementation:TokenStream +_next vendor/futures-util/src/stream/stream/peek.rs /^ _next: PhantomData,$/;" m struct:NextIfEqFn +_nl_current_default_domain lib/intl/dcigettext.c /^# define _nl_current_default_domain /;" d file: +_nl_current_default_domain lib/intl/textdomain.c /^# define _nl_current_default_domain /;" d file: +_nl_default_default_domain lib/intl/dcigettext.c /^# define _nl_default_default_domain /;" d file: +_nl_default_default_domain lib/intl/dcigettext.c /^const char _nl_default_default_domain[] attribute_hidden = "messages";$/;" v typeref:typename:const char[]attribute_hidden +_nl_default_default_domain lib/intl/textdomain.c /^# define _nl_default_default_domain /;" d file: +_nl_default_dirname lib/intl/bindtextdom.c /^# define _nl_default_dirname /;" d file: +_nl_default_dirname lib/intl/dcigettext.c /^# define _nl_default_dirname /;" d file: +_nl_default_dirname lib/intl/dcigettext.c /^const char _nl_default_dirname[] = LOCALEDIR;$/;" v typeref:typename:const char[] +_nl_domain_bindings lib/intl/bindtextdom.c /^# define _nl_domain_bindings /;" d file: +_nl_domain_bindings lib/intl/dcigettext.c /^# define _nl_domain_bindings /;" d file: +_nl_domain_bindings lib/intl/dcigettext.c /^struct binding *_nl_domain_bindings;$/;" v typeref:struct:binding * +_nl_expand_alias lib/intl/localealias.c /^_nl_expand_alias (name)$/;" f +_nl_explode_name lib/intl/explodename.c /^_nl_explode_name (name, language, modifier, territory, codeset,$/;" f +_nl_find_domain lib/intl/finddomain.c /^_nl_find_domain (dirname, locale, domainname, domainbinding)$/;" f +_nl_find_language lib/intl/explodename.c /^_nl_find_language (name)$/;" f +_nl_find_msg lib/intl/dcigettext.c /^_nl_find_msg (domain_file, domainbinding, msgid, lengthp)$/;" f +_nl_free_domain_conv lib/intl/loadmsgcat.c /^_nl_free_domain_conv (domain)$/;" f +_nl_getenv lib/intl/os2compat.c /^_nl_getenv (const char *name)$/;" f typeref:typename:char * +_nl_init_domain_conv lib/intl/loadmsgcat.c /^_nl_init_domain_conv (domain_file, domain, domainbinding)$/;" f +_nl_load_domain lib/intl/loadmsgcat.c /^_nl_load_domain (domain_file, domainbinding)$/;" f +_nl_loaded_domains lib/intl/finddomain.c /^static struct loaded_l10nfile *_nl_loaded_domains;$/;" v typeref:struct:loaded_l10nfile * file: +_nl_locale_name lib/intl/localename.c /^_nl_locale_name (category, categoryname)$/;" f +_nl_log_untranslated lib/intl/log.c /^_nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural)$/;" f +_nl_make_l10nflist lib/intl/l10nflist.c /^_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,$/;" f +_nl_msg_cat_cntr lib/intl/loadmsgcat.c /^int _nl_msg_cat_cntr;$/;" v typeref:typename:int +_nl_normalize_codeset lib/intl/l10nflist.c /^_nl_normalize_codeset (codeset, name_len)$/;" f +_nl_unload_domain lib/intl/loadmsgcat.c /^_nl_unload_domain (domain)$/;" f +_nlos2_libdir lib/intl/os2compat.c /^char *_nlos2_libdir = NULL;$/;" v typeref:typename:char * +_nlos2_localealiaspath lib/intl/os2compat.c /^char *_nlos2_localealiaspath = NULL;$/;" v typeref:typename:char * +_nlos2_localedir lib/intl/os2compat.c /^char *_nlos2_localedir = NULL;$/;" v typeref:typename:char * +_offset r_bash/src/lib.rs /^ pub _offset: __off64_t,$/;" m struct:_IO_FILE +_offset r_readline/src/lib.rs /^ pub _offset: __off64_t,$/;" m struct:_IO_FILE +_old_offset r_bash/src/lib.rs /^ pub _old_offset: __off_t,$/;" m struct:_IO_FILE +_old_offset r_readline/src/lib.rs /^ pub _old_offset: __off_t,$/;" m struct:_IO_FILE +_optflags builtins_rust/complete/src/lib.rs /^pub struct _optflags {$/;" s +_p lib/sh/fpurge.c /^# define _p /;" d file: +_pad vendor/libc/src/unix/solarish/mod.rs /^ _pad: *mut ::c_void,$/;" m struct:siginfo_killval +_paren_blink_usec lib/readline/parens.c /^static int _paren_blink_usec = 500000;$/;" v typeref:typename:int file: +_pathIsAbsolute vendor/libc/src/vxworks/mod.rs /^ pub fn _pathIsAbsolute(filepath: *const ::c_char, pNameTail: *mut *const ::c_char) -> BOOL;$/;" f +_path_checkino lib/sh/getcwd.c /^_path_checkino (dotp, name, thisino)$/;" f file: +_path_isdir lib/sh/pathcanon.c /^_path_isdir (path)$/;" f file: +_path_readlink lib/sh/pathphys.c /^_path_readlink (path, buf, bufsiz)$/;" f file: +_pathdata builtins_rust/hash/src/lib.rs /^pub struct _pathdata {$/;" s +_pathdata hashcmd.h /^typedef struct _pathdata {$/;" s +_pathdata r_bash/src/lib.rs /^pub struct _pathdata {$/;" s +_phantom vendor/futures-util/src/compat/compat03as01.rs /^ _phantom: PhantomData,$/;" m struct:CompatSink +_phantom vendor/futures-util/src/sink/close.rs /^ _phantom: PhantomData,$/;" m struct:Close +_phantom vendor/futures-util/src/sink/flush.rs /^ _phantom: PhantomData,$/;" m struct:Flush +_phantom vendor/futures-util/src/stream/empty.rs /^ _phantom: PhantomData,$/;" m struct:Empty +_pid vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _pid: ::pid_t,$/;" m struct:siginfo_t::si_status::siginfo_timer +_pid vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _pid: ::pid_t,$/;" m struct:siginfo_t::si_value::siginfo_timer +_pid vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ _pid: ::pid_t,$/;" m struct:siginfo_t::si_value::siginfo_timer +_pin vendor/nix/src/sys/aio.rs /^ _pin: PhantomPinned,$/;" m struct:AioFsync +_pin vendor/nix/src/sys/aio.rs /^ _pin: PhantomPinned,$/;" m struct:AioRead +_pin vendor/nix/src/sys/aio.rs /^ _pin: PhantomPinned,$/;" m struct:AioReadv +_pin vendor/nix/src/sys/aio.rs /^ _pin: PhantomPinned,$/;" m struct:AioWrite +_pin vendor/nix/src/sys/aio.rs /^ _pin: PhantomPinned,$/;" m struct:AioWritev +_print_malloc_stats lib/malloc/stats.c /^_print_malloc_stats (s, fp)$/;" f file: +_print_word_list print_cmd.c /^_print_word_list (list, separator, pfunc)$/;" f file: +_priv vendor/futures-channel/src/mpsc/mod.rs /^ _priv: (),$/;" m struct:TryRecvError +_priv vendor/futures-executor/src/enter.rs /^ _priv: (),$/;" m struct:Enter +_priv vendor/futures-executor/src/enter.rs /^ _priv: (),$/;" m struct:EnterError +_priv vendor/futures-task/src/spawn.rs /^ _priv: (),$/;" m struct:SpawnError +_priv vendor/futures-util/src/io/empty.rs /^ _priv: (),$/;" m struct:Empty +_priv vendor/futures-util/src/io/sink.rs /^ _priv: (),$/;" m struct:Sink +_ptr lib/sh/fpurge.c /^# define _ptr /;" d file: +_r lib/sh/fpurge.c /^# define _r /;" d file: +_realpath vendor/libc/src/vxworks/mod.rs /^ pub fn _realpath(fileName: *const ::c_char, resolvedName: *mut ::c_char) -> *mut ::c_char;$/;" f +_redir_special_filenames redir.c /^static STRING_INT_ALIST _redir_special_filenames[] = {$/;" v typeref:typename:STRING_INT_ALIST[] file: +_register_dump_table lib/malloc/table.c /^_register_dump_table(fp)$/;" f file: +_rl_abort_internal lib/readline/util.c /^_rl_abort_internal (void)$/;" f typeref:typename:int +_rl_abort_internal r_readline/src/lib.rs /^ pub fn _rl_abort_internal() -> ::std::os::raw::c_int;$/;" f +_rl_add_executing_keyseq lib/readline/readline.c /^_rl_add_executing_keyseq (int key)$/;" f typeref:typename:void +_rl_add_executing_keyseq r_readline/src/lib.rs /^ pub fn _rl_add_executing_keyseq(arg1: ::std::os::raw::c_int);$/;" f +_rl_add_macro_char lib/readline/macro.c /^_rl_add_macro_char (int c)$/;" f typeref:typename:void +_rl_add_macro_char r_readline/src/lib.rs /^ pub fn _rl_add_macro_char(arg1: ::std::os::raw::c_int);$/;" f +_rl_adjust_point lib/readline/mbutil.c /^_rl_adjust_point (char *string, int point, mbstate_t *ps)$/;" f typeref:typename:int +_rl_adjust_point r_readline/src/lib.rs /^ pub fn _rl_adjust_point($/;" f +_rl_allow_pathname_alphabetic_chars lib/readline/util.c /^int _rl_allow_pathname_alphabetic_chars = 0;$/;" v typeref:typename:int +_rl_any_typein lib/readline/input.c /^_rl_any_typein (void)$/;" f typeref:typename:int +_rl_any_typein r_readline/src/lib.rs /^ pub fn _rl_any_typein() -> ::std::os::raw::c_int;$/;" f +_rl_arg_callback lib/readline/misc.c /^_rl_arg_callback (_rl_arg_cxt cxt)$/;" f typeref:typename:int +_rl_arg_callback r_readline/src/lib.rs /^ pub fn _rl_arg_callback(arg1: _rl_arg_cxt) -> ::std::os::raw::c_int;$/;" f +_rl_arg_cxt lib/readline/rlprivate.h /^typedef int _rl_arg_cxt;$/;" t typeref:typename:int +_rl_arg_cxt r_readline/src/lib.rs /^pub type _rl_arg_cxt = ::std::os::raw::c_int;$/;" t +_rl_arg_dispatch lib/readline/misc.c /^_rl_arg_dispatch (_rl_arg_cxt cxt, int c)$/;" f typeref:typename:int +_rl_arg_getchar lib/readline/misc.c /^_rl_arg_getchar (void)$/;" f typeref:typename:int +_rl_arg_getchar r_readline/src/lib.rs /^ pub fn _rl_arg_getchar() -> ::std::os::raw::c_int;$/;" f +_rl_arg_init lib/readline/misc.c /^_rl_arg_init (void)$/;" f typeref:typename:void +_rl_arg_init r_readline/src/lib.rs /^ pub fn _rl_arg_init();$/;" f +_rl_arg_overflow lib/readline/misc.c /^_rl_arg_overflow (void)$/;" f typeref:typename:int +_rl_arg_overflow r_readline/src/lib.rs /^ pub fn _rl_arg_overflow() -> ::std::os::raw::c_int;$/;" f +_rl_argcxt lib/readline/misc.c /^_rl_arg_cxt _rl_argcxt;$/;" v typeref:typename:_rl_arg_cxt +_rl_argcxt r_readline/src/lib.rs /^ pub static mut _rl_argcxt: _rl_arg_cxt;$/;" v +_rl_audit_tty lib/readline/util.c /^_rl_audit_tty (char *string)$/;" f typeref:typename:void +_rl_audit_tty r_readline/src/lib.rs /^ pub fn _rl_audit_tty(arg1: *mut ::std::os::raw::c_char);$/;" f +_rl_backspace lib/readline/terminal.c /^_rl_backspace (int count)$/;" f typeref:typename:int +_rl_backspace r_readline/src/lib.rs /^ pub fn _rl_backspace(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_backward_char_internal lib/readline/text.c /^_rl_backward_char_internal (int count)$/;" f typeref:typename:int +_rl_backward_char_internal r_readline/src/lib.rs /^ pub fn _rl_backward_char_internal(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_bell_preference lib/readline/readline.c /^int _rl_bell_preference = AUDIBLE_BELL;$/;" v typeref:typename:int +_rl_bell_preference r_readline/src/lib.rs /^ pub static mut _rl_bell_preference: ::std::os::raw::c_int;$/;" v +_rl_bind_stty_chars lib/readline/readline.c /^int _rl_bind_stty_chars = 1;$/;" v typeref:typename:int +_rl_bind_stty_chars r_readline/src/lib.rs /^ pub static mut _rl_bind_stty_chars: ::std::os::raw::c_int;$/;" v +_rl_bind_tty_special_chars lib/readline/rltty.c /^_rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff)$/;" f typeref:typename:void file: +_rl_block_sigint lib/readline/signals.c /^_rl_block_sigint (void)$/;" f typeref:typename:void +_rl_block_sigint r_readline/src/lib.rs /^ pub fn _rl_block_sigint();$/;" f +_rl_block_sigwinch lib/readline/signals.c /^_rl_block_sigwinch (void)$/;" f typeref:typename:void +_rl_block_sigwinch r_readline/src/lib.rs /^ pub fn _rl_block_sigwinch();$/;" f +_rl_bool_t lib/readline/colors.h /^typedef int _rl_bool_t;$/;" t typeref:typename:int +_rl_bracketed_read_key lib/readline/kill.c /^_rl_bracketed_read_key ()$/;" f typeref:typename:int +_rl_bracketed_read_key r_readline/src/lib.rs /^ pub fn _rl_bracketed_read_key() -> ::std::os::raw::c_int;$/;" f +_rl_bracketed_read_mbstring lib/readline/kill.c /^_rl_bracketed_read_mbstring (char *mb, int mlen)$/;" f typeref:typename:int +_rl_bracketed_read_mbstring r_readline/src/lib.rs /^ pub fn _rl_bracketed_read_mbstring($/;" f +_rl_bracketed_text lib/readline/kill.c /^_rl_bracketed_text (size_t *lenp)$/;" f typeref:typename:char * +_rl_bracketed_text r_readline/src/lib.rs /^ pub fn _rl_bracketed_text(arg1: *mut usize) -> *mut ::std::os::raw::c_char;$/;" f +_rl_callback_data lib/readline/callback.c /^_rl_callback_generic_arg *_rl_callback_data = 0;$/;" v typeref:typename:_rl_callback_generic_arg * +_rl_callback_data r_readline/src/lib.rs /^ pub static mut _rl_callback_data: *mut _rl_callback_generic_arg;$/;" v +_rl_callback_data_alloc lib/readline/callback.c /^_rl_callback_data_alloc (int count)$/;" f typeref:typename:_rl_callback_generic_arg * +_rl_callback_data_alloc r_readline/src/lib.rs /^ pub fn _rl_callback_data_alloc(arg1: ::std::os::raw::c_int) -> *mut _rl_callback_generic_arg/;" f +_rl_callback_data_dispose lib/readline/callback.c /^_rl_callback_data_dispose (_rl_callback_generic_arg *arg)$/;" f typeref:typename:void +_rl_callback_data_dispose r_readline/src/lib.rs /^ pub fn _rl_callback_data_dispose(arg1: *mut _rl_callback_generic_arg);$/;" f +_rl_callback_func lib/readline/callback.c /^_rl_callback_func_t *_rl_callback_func = 0;$/;" v typeref:typename:_rl_callback_func_t * +_rl_callback_func r_readline/src/lib.rs /^ pub static mut _rl_callback_func: _rl_callback_func_t;$/;" v +_rl_callback_func_t r_readline/src/lib.rs /^pub type _rl_callback_func_t = ::core::option::Option<$/;" t +_rl_callback_generic_arg lib/readline/rlprivate.h /^} _rl_callback_generic_arg;$/;" t typeref:struct:__rl_callback_generic_arg +_rl_callback_generic_arg r_readline/src/lib.rs /^pub type _rl_callback_generic_arg = __rl_callback_generic_arg;$/;" t +_rl_callback_newline lib/readline/callback.c /^_rl_callback_newline (void)$/;" f typeref:typename:void file: +_rl_caught_signal lib/readline/signals.c /^int volatile _rl_caught_signal = 0; \/* should be sig_atomic_t, but that requires including *mut UNDO_LIST;$/;" f +_rl_copy_undo_list lib/readline/undo.c /^_rl_copy_undo_list (UNDO_LIST *head)$/;" f typeref:typename:UNDO_LIST * +_rl_copy_undo_list r_readline/src/lib.rs /^ pub fn _rl_copy_undo_list(arg1: *mut UNDO_LIST) -> *mut UNDO_LIST;$/;" f +_rl_copy_word_as_kill lib/readline/kill.c /^_rl_copy_word_as_kill (int count, int dir)$/;" f typeref:typename:int file: +_rl_cr lib/readline/terminal.c /^_rl_cr (void)$/;" f typeref:typename:void +_rl_cr r_readline/src/lib.rs /^ pub fn _rl_cr();$/;" f +_rl_cs_dir lib/readline/vi_mode.c /^static int _rl_cs_dir, _rl_cs_orig_dir;$/;" v typeref:typename:int file: +_rl_cs_orig_dir lib/readline/vi_mode.c /^static int _rl_cs_dir, _rl_cs_orig_dir;$/;" v typeref:typename:int file: +_rl_current_display_line lib/readline/display.c /^_rl_current_display_line (void)$/;" f typeref:typename:int +_rl_current_display_line r_readline/src/lib.rs /^ pub fn _rl_current_display_line() -> ::std::os::raw::c_int;$/;" f +_rl_digit_p lib/readline/chardefs.h /^#define _rl_digit_p(/;" d +_rl_digit_p lib/readline/histlib.h /^#define _rl_digit_p(/;" d +_rl_digit_p r_readline/src/lib.rs /^ pub fn _rl_digit_p(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_digit_value lib/readline/chardefs.h /^# define _rl_digit_value(/;" d +_rl_digit_value lib/readline/histlib.h /^#define _rl_digit_value(/;" d +_rl_digit_value r_readline/src/lib.rs /^ pub fn _rl_digit_value(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_disable_meta_key lib/readline/terminal.c /^_rl_disable_meta_key (void)$/;" f typeref:typename:void +_rl_disable_meta_key r_readline/src/lib.rs /^ pub fn _rl_disable_meta_key();$/;" f +_rl_disable_tty_signals lib/readline/rltty.c /^_rl_disable_tty_signals (void)$/;" f typeref:typename:int +_rl_disable_tty_signals r_readline/src/lib.rs /^ pub fn _rl_disable_tty_signals() -> ::std::os::raw::c_int;$/;" f +_rl_dispatch lib/readline/readline.c /^_rl_dispatch (register int key, Keymap map)$/;" f typeref:typename:int +_rl_dispatch r_readline/src/lib.rs /^ pub fn _rl_dispatch(arg1: ::std::os::raw::c_int, arg2: Keymap) -> ::std::os::raw::c_int;$/;" f +_rl_dispatch_callback lib/readline/readline.c /^_rl_dispatch_callback (_rl_keyseq_cxt *cxt)$/;" f typeref:typename:int +_rl_dispatch_callback r_readline/src/lib.rs /^ pub fn _rl_dispatch_callback(arg1: *mut _rl_keyseq_cxt) -> ::std::os::raw::c_int;$/;" f +_rl_dispatch_subseq lib/readline/readline.c /^_rl_dispatch_subseq (register int key, Keymap map, int got_subseq)$/;" f typeref:typename:int +_rl_dispatch_subseq r_readline/src/lib.rs /^ pub fn _rl_dispatch_subseq($/;" f +_rl_dispatching_keymap lib/readline/readline.c /^Keymap _rl_dispatching_keymap;$/;" v typeref:typename:Keymap +_rl_doing_an_undo lib/readline/undo.c /^int _rl_doing_an_undo = 0;$/;" v typeref:typename:int +_rl_doing_an_undo r_readline/src/lib.rs /^ pub static mut _rl_doing_an_undo: ::std::os::raw::c_int;$/;" v +_rl_echo_control_chars lib/readline/readline.c /^int _rl_echo_control_chars = 1;$/;" v typeref:typename:int +_rl_echo_control_chars r_readline/src/lib.rs /^ pub static mut _rl_echo_control_chars: ::std::os::raw::c_int;$/;" v +_rl_echoctl lib/readline/signals.c /^int _rl_echoctl = 0;$/;" v typeref:typename:int +_rl_echoctl r_readline/src/lib.rs /^ pub static mut _rl_echoctl: ::std::os::raw::c_int;$/;" v +_rl_echoing_p lib/readline/readline.c /^int _rl_echoing_p = 0;$/;" v typeref:typename:int +_rl_echoing_p r_readline/src/lib.rs /^ pub static mut _rl_echoing_p: ::std::os::raw::c_int;$/;" v +_rl_emacs_mode_str lib/readline/display.c /^char *_rl_emacs_mode_str;$/;" v typeref:typename:char * +_rl_emacs_mode_str r_readline/src/lib.rs /^ pub static mut _rl_emacs_mode_str: *mut ::std::os::raw::c_char;$/;" v +_rl_emacs_modestr_len lib/readline/display.c /^int _rl_emacs_modestr_len;$/;" v typeref:typename:int +_rl_emacs_modestr_len r_readline/src/lib.rs /^ pub static mut _rl_emacs_modestr_len: ::std::os::raw::c_int;$/;" v +_rl_enable_active_region lib/readline/readline.c /^int _rl_enable_active_region = BRACKETED_PASTE_DEFAULT;$/;" v typeref:typename:int +_rl_enable_active_region r_readline/src/lib.rs /^ pub static mut _rl_enable_active_region: ::std::os::raw::c_int;$/;" v +_rl_enable_bracketed_paste lib/readline/readline.c /^int _rl_enable_bracketed_paste = BRACKETED_PASTE_DEFAULT;$/;" v typeref:typename:int +_rl_enable_bracketed_paste r_readline/src/lib.rs /^ pub static mut _rl_enable_bracketed_paste: ::std::os::raw::c_int;$/;" v +_rl_enable_keypad lib/readline/terminal.c /^int _rl_enable_keypad;$/;" v typeref:typename:int +_rl_enable_keypad r_readline/src/lib.rs /^ pub static mut _rl_enable_keypad: ::std::os::raw::c_int;$/;" v +_rl_enable_meta lib/readline/terminal.c /^int _rl_enable_meta = 1;$/;" v typeref:typename:int +_rl_enable_meta r_readline/src/lib.rs /^ pub static mut _rl_enable_meta: ::std::os::raw::c_int;$/;" v +_rl_enable_meta_key lib/readline/terminal.c /^_rl_enable_meta_key (void)$/;" f typeref:typename:void +_rl_enable_meta_key r_readline/src/lib.rs /^ pub fn _rl_enable_meta_key();$/;" f +_rl_enable_paren_matching lib/readline/parens.c /^_rl_enable_paren_matching (int on_or_off)$/;" f typeref:typename:void +_rl_enable_paren_matching r_readline/src/lib.rs /^ pub fn _rl_enable_paren_matching(arg1: ::std::os::raw::c_int);$/;" f +_rl_end_executing_keyseq lib/readline/readline.c /^_rl_end_executing_keyseq (void)$/;" f typeref:typename:void +_rl_end_executing_keyseq r_readline/src/lib.rs /^ pub fn _rl_end_executing_keyseq();$/;" f +_rl_eof_char lib/readline/readline.c /^int _rl_eof_char = CTRL ('D');$/;" v typeref:typename:int +_rl_eof_char r_readline/src/lib.rs /^ pub static mut _rl_eof_char: ::std::os::raw::c_int;$/;" v +_rl_eof_found lib/readline/readline.c /^int _rl_eof_found = 0;$/;" v typeref:typename:int +_rl_eof_found r_readline/src/lib.rs /^ pub static mut _rl_eof_found: ::std::os::raw::c_int;$/;" v +_rl_erase_at_end_of_line lib/readline/display.c /^_rl_erase_at_end_of_line (int l)$/;" f typeref:typename:void +_rl_erase_at_end_of_line r_readline/src/lib.rs /^ pub fn _rl_erase_at_end_of_line(arg1: ::std::os::raw::c_int);$/;" f +_rl_erase_entire_line lib/readline/display.c /^_rl_erase_entire_line (void)$/;" f typeref:typename:void +_rl_erase_entire_line r_readline/src/lib.rs /^ pub fn _rl_erase_entire_line();$/;" f +_rl_errmsg lib/readline/util.c /^_rl_errmsg (const char *format, ...)$/;" f typeref:typename:void +_rl_errmsg lib/readline/util.c /^_rl_errmsg (format, arg1, arg2)$/;" f +_rl_errmsg r_readline/src/lib.rs /^ pub fn _rl_errmsg(arg1: *const ::std::os::raw::c_char, ...);$/;" f +_rl_escchar lib/readline/bind.c /^_rl_escchar (int c)$/;" f typeref:typename:int file: +_rl_executing_keyseq_size lib/readline/readline.c /^int _rl_executing_keyseq_size = 0;$/;" v typeref:typename:int +_rl_executing_keyseq_size r_readline/src/lib.rs /^ pub static mut _rl_executing_keyseq_size: ::std::os::raw::c_int;$/;" v +_rl_executing_macro r_readline/src/lib.rs /^ pub static mut _rl_executing_macro: *mut ::std::os::raw::c_char;$/;" v +_rl_find_completion_word lib/readline/complete.c /^_rl_find_completion_word (int *fp, int *dp)$/;" f typeref:typename:char +_rl_find_completion_word r_readline/src/lib.rs /^ pub fn _rl_find_completion_word($/;" f +_rl_find_next_mbchar lib/readline/mbutil.c /^_rl_find_next_mbchar (char *string, int seed, int count, int flags)$/;" f typeref:typename:int +_rl_find_next_mbchar lib/readline/rlmbutil.h /^#define _rl_find_next_mbchar(/;" d +_rl_find_next_mbchar r_readline/src/lib.rs /^ pub fn _rl_find_next_mbchar($/;" f +_rl_find_next_mbchar_internal lib/readline/mbutil.c /^_rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_zero)$/;" f typeref:typename:int file: +_rl_find_prev_mbchar lib/readline/mbutil.c /^_rl_find_prev_mbchar (char *string, int seed, int flags)$/;" f typeref:typename:int +_rl_find_prev_mbchar lib/readline/rlmbutil.h /^#define _rl_find_prev_mbchar(/;" d +_rl_find_prev_mbchar r_readline/src/lib.rs /^ pub fn _rl_find_prev_mbchar($/;" f +_rl_find_prev_mbchar_internal lib/readline/mbutil.c /^_rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero)$/;" f typeref:typename:int +_rl_find_prev_utf8char lib/readline/mbutil.c /^_rl_find_prev_utf8char (char *string, int seed, int find_non_zero)$/;" f typeref:typename:int file: +_rl_fix_last_undo_of_type lib/readline/undo.c /^_rl_fix_last_undo_of_type (int type, int start, int end)$/;" f typeref:typename:int +_rl_fix_last_undo_of_type r_readline/src/lib.rs /^ pub fn _rl_fix_last_undo_of_type($/;" f +_rl_fix_mark lib/readline/text.c /^_rl_fix_mark (void)$/;" f typeref:typename:void +_rl_fix_mark r_readline/src/lib.rs /^ pub fn _rl_fix_mark();$/;" f +_rl_fix_point lib/readline/text.c /^_rl_fix_point (int fix_mark_too)$/;" f typeref:typename:void +_rl_fix_point r_readline/src/lib.rs /^ pub fn _rl_fix_point(arg1: ::std::os::raw::c_int);$/;" f +_rl_forward_char_internal lib/readline/text.c /^_rl_forward_char_internal (int count)$/;" f typeref:typename:int +_rl_forward_char_internal r_readline/src/lib.rs /^ pub fn _rl_forward_char_internal(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_free_history_entry lib/readline/misc.c /^_rl_free_history_entry (HIST_ENTRY *entry)$/;" f typeref:typename:void +_rl_free_match_list lib/readline/complete.c /^_rl_free_match_list (char **matches)$/;" f typeref:typename:void +_rl_free_match_list r_readline/src/lib.rs /^ pub fn _rl_free_match_list(arg1: *mut *mut ::std::os::raw::c_char);$/;" f +_rl_free_saved_history_line lib/readline/misc.c /^_rl_free_saved_history_line (void)$/;" f typeref:typename:int +_rl_free_saved_history_line r_readline/src/lib.rs /^ pub fn _rl_free_saved_history_line() -> ::std::os::raw::c_int;$/;" f +_rl_free_undo_list lib/readline/undo.c /^_rl_free_undo_list (UNDO_LIST *ul)$/;" f typeref:typename:void +_rl_free_undo_list r_readline/src/lib.rs /^ pub fn _rl_free_undo_list(arg1: *mut UNDO_LIST);$/;" f +_rl_function_of_keyseq_internal lib/readline/bind.c /^_rl_function_of_keyseq_internal (const char *keyseq, size_t len, Keymap map, int *type)$/;" f typeref:typename:rl_command_func_t * file: +_rl_get_char_len lib/readline/mbutil.c /^_rl_get_char_len (char *src, mbstate_t *ps)$/;" f typeref:typename:int +_rl_get_char_len r_readline/src/lib.rs /^ pub fn _rl_get_char_len($/;" f +_rl_get_keymap_by_map lib/readline/bind.c /^_rl_get_keymap_by_map (Keymap map)$/;" f typeref:typename:int file: +_rl_get_keymap_by_name lib/readline/bind.c /^_rl_get_keymap_by_name (const char *name)$/;" f typeref:typename:int file: +_rl_get_keyname lib/readline/bind.c /^_rl_get_keyname (int key)$/;" f typeref:typename:char * file: +_rl_get_locale_var lib/readline/nls.c /^_rl_get_locale_var (const char *v)$/;" f typeref:typename:char * file: +_rl_get_screen_size lib/readline/terminal.c /^_rl_get_screen_size (int tty, int ignore_env)$/;" f typeref:typename:void +_rl_get_screen_size r_readline/src/lib.rs /^ pub fn _rl_get_screen_size(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int);$/;" f +_rl_get_string_variable_value lib/readline/bind.c /^_rl_get_string_variable_value (const char *name)$/;" f typeref:typename:char * file: +_rl_handle_signal lib/readline/signals.c /^_rl_handle_signal (int sig)$/;" f typeref:typename:RETSIGTYPE file: +_rl_history_preserve_point lib/readline/misc.c /^int _rl_history_preserve_point = 0;$/;" v typeref:typename:int +_rl_history_preserve_point r_readline/src/lib.rs /^ pub static mut _rl_history_preserve_point: ::std::os::raw::c_int;$/;" v +_rl_history_saved_point lib/readline/misc.c /^int _rl_history_saved_point = -1;$/;" v typeref:typename:int +_rl_history_saved_point r_readline/src/lib.rs /^ pub static mut _rl_history_saved_point: ::std::os::raw::c_int;$/;" v +_rl_history_set_point lib/readline/misc.c /^_rl_history_set_point (void)$/;" f typeref:typename:void file: +_rl_horizontal_scroll_mode lib/readline/readline.c /^int _rl_horizontal_scroll_mode = 0;$/;" v typeref:typename:int +_rl_horizontal_scroll_mode r_readline/src/lib.rs /^ pub static mut _rl_horizontal_scroll_mode: ::std::os::raw::c_int;$/;" v +_rl_in_stream lib/readline/readline.c /^FILE *_rl_in_stream, *_rl_out_stream;$/;" v typeref:typename:FILE * +_rl_in_stream r_readline/src/lib.rs /^ pub static mut _rl_in_stream: *mut FILE;$/;" v +_rl_init_eightbit lib/readline/nls.c /^_rl_init_eightbit (void)$/;" f typeref:typename:int +_rl_init_eightbit r_readline/src/lib.rs /^ pub fn _rl_init_eightbit() -> ::std::os::raw::c_int;$/;" f +_rl_init_executing_keyseq lib/readline/readline.c /^_rl_init_executing_keyseq (void)$/;" f typeref:typename:void +_rl_init_executing_keyseq r_readline/src/lib.rs /^ pub fn _rl_init_executing_keyseq();$/;" f +_rl_init_file_error lib/readline/bind.c /^_rl_init_file_error (const char *format, ...)$/;" f typeref:typename:void file: +_rl_init_line_state lib/readline/readline.c /^_rl_init_line_state (void)$/;" f typeref:typename:void +_rl_init_line_state r_readline/src/lib.rs /^ pub fn _rl_init_line_state();$/;" f +_rl_init_locale lib/readline/nls.c /^_rl_init_locale (void)$/;" f typeref:typename:char * +_rl_init_locale r_readline/src/lib.rs /^ pub fn _rl_init_locale() -> *mut ::std::os::raw::c_char;$/;" f +_rl_init_terminal_io lib/readline/terminal.c /^_rl_init_terminal_io (const char *terminal_name)$/;" f typeref:typename:int +_rl_init_terminal_io r_readline/src/lib.rs /^ pub fn _rl_init_terminal_io(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +_rl_input_available lib/readline/input.c /^_rl_input_available (void)$/;" f typeref:typename:int +_rl_input_available r_readline/src/lib.rs /^ pub fn _rl_input_available() -> ::std::os::raw::c_int;$/;" f +_rl_input_queued lib/readline/input.c /^_rl_input_queued (int t)$/;" f typeref:typename:int +_rl_input_queued r_readline/src/lib.rs /^ pub fn _rl_input_queued(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_insert_char lib/readline/text.c /^_rl_insert_char (int count, int c)$/;" f typeref:typename:int +_rl_insert_char r_readline/src/lib.rs /^ pub fn _rl_insert_char($/;" f +_rl_insert_next lib/readline/text.c /^_rl_insert_next (int count)$/;" f typeref:typename:int file: +_rl_insert_next_callback lib/readline/text.c /^_rl_insert_next_callback (_rl_callback_generic_arg *data)$/;" f typeref:typename:int file: +_rl_insert_typein lib/readline/input.c /^_rl_insert_typein (int c)$/;" f typeref:typename:void +_rl_insert_typein r_readline/src/lib.rs /^ pub fn _rl_insert_typein(arg1: ::std::os::raw::c_int);$/;" f +_rl_internal_char_cleanup lib/readline/readline.c /^_rl_internal_char_cleanup (void)$/;" f typeref:typename:void +_rl_internal_char_cleanup r_readline/src/lib.rs /^ pub fn _rl_internal_char_cleanup();$/;" f +_rl_internal_pager lib/readline/complete.c /^_rl_internal_pager (int lines)$/;" f typeref:typename:int file: +_rl_internal_startup_hook lib/readline/readline.c /^rl_hook_func_t *_rl_internal_startup_hook = (rl_hook_func_t *)NULL;$/;" v typeref:typename:rl_hook_func_t * +_rl_internal_startup_hook r_readline/src/lib.rs /^ pub static mut _rl_internal_startup_hook: rl_hook_func_t;$/;" v +_rl_intr_char lib/readline/signals.c /^int _rl_intr_char = 0;$/;" v typeref:typename:int +_rl_intr_char r_readline/src/lib.rs /^ pub static mut _rl_intr_char: ::std::os::raw::c_int;$/;" v +_rl_inv_botlin lib/readline/display.c /^static int _rl_inv_botlin = 0;$/;" v typeref:typename:int file: +_rl_is_mbchar_matched lib/readline/mbutil.c /^_rl_is_mbchar_matched (char *string, int seed, int end, char *mbchar, int length)$/;" f typeref:typename:int +_rl_is_mbchar_matched r_readline/src/lib.rs /^ pub fn _rl_is_mbchar_matched($/;" f +_rl_iscxt lib/readline/isearch.c /^_rl_search_cxt *_rl_iscxt = 0;$/;" v typeref:typename:_rl_search_cxt * +_rl_iscxt r_readline/src/lib.rs /^ pub static mut _rl_iscxt: *mut _rl_search_cxt;$/;" v +_rl_isearch_callback lib/readline/isearch.c /^_rl_isearch_callback (_rl_search_cxt *cxt)$/;" f typeref:typename:int +_rl_isearch_callback r_readline/src/lib.rs /^ pub fn _rl_isearch_callback(arg1: *mut _rl_search_cxt) -> ::std::os::raw::c_int;$/;" f +_rl_isearch_cleanup lib/readline/isearch.c /^_rl_isearch_cleanup (_rl_search_cxt *cxt, int r)$/;" f typeref:typename:int +_rl_isearch_cleanup r_readline/src/lib.rs /^ pub fn _rl_isearch_cleanup($/;" f +_rl_isearch_dispatch lib/readline/isearch.c /^_rl_isearch_dispatch (_rl_search_cxt *cxt, int c)$/;" f typeref:typename:int +_rl_isearch_dispatch r_readline/src/lib.rs /^ pub fn _rl_isearch_dispatch($/;" f +_rl_isearch_fini lib/readline/isearch.c /^_rl_isearch_fini (_rl_search_cxt *cxt)$/;" f typeref:typename:void file: +_rl_isearch_init lib/readline/isearch.c /^_rl_isearch_init (int direction)$/;" f typeref:typename:_rl_search_cxt * file: +_rl_isearch_terminators lib/readline/isearch.c /^char *_rl_isearch_terminators = (char *)NULL;$/;" v typeref:typename:char * +_rl_isearch_terminators r_readline/src/lib.rs /^ pub static mut _rl_isearch_terminators: *mut ::std::os::raw::c_char;$/;" v +_rl_isescape lib/readline/bind.c /^_rl_isescape (int c)$/;" f typeref:typename:int file: +_rl_isident lib/readline/chardefs.h /^# define _rl_isident(/;" d +_rl_keep_mark_active lib/readline/text.c /^int _rl_keep_mark_active;$/;" v typeref:typename:int +_rl_keep_mark_active r_readline/src/lib.rs /^ pub static mut _rl_keep_mark_active: ::std::os::raw::c_int;$/;" v +_rl_keymap lib/readline/readline.c /^Keymap _rl_keymap = emacs_standard_keymap;$/;" v typeref:typename:Keymap +_rl_keymap r_readline/src/lib.rs /^ pub static mut _rl_keymap: Keymap;$/;" v +_rl_keyseq_chain_dispose lib/readline/readline.c /^_rl_keyseq_chain_dispose (void)$/;" f typeref:typename:void +_rl_keyseq_chain_dispose r_readline/src/lib.rs /^ pub fn _rl_keyseq_chain_dispose();$/;" f +_rl_keyseq_cxt lib/readline/rlprivate.h /^} _rl_keyseq_cxt;$/;" t typeref:struct:__rl_keyseq_context +_rl_keyseq_cxt r_readline/src/lib.rs /^pub type _rl_keyseq_cxt = __rl_keyseq_context;$/;" t +_rl_keyseq_cxt_alloc lib/readline/readline.c /^_rl_keyseq_cxt_alloc (void)$/;" f typeref:typename:_rl_keyseq_cxt * +_rl_keyseq_cxt_alloc r_readline/src/lib.rs /^ pub fn _rl_keyseq_cxt_alloc() -> *mut _rl_keyseq_cxt;$/;" f +_rl_keyseq_cxt_dispose lib/readline/readline.c /^_rl_keyseq_cxt_dispose (_rl_keyseq_cxt *cxt)$/;" f typeref:typename:void +_rl_keyseq_cxt_dispose r_readline/src/lib.rs /^ pub fn _rl_keyseq_cxt_dispose(arg1: *mut _rl_keyseq_cxt);$/;" f +_rl_keyseq_timeout lib/readline/readline.c /^int _rl_keyseq_timeout = 500;$/;" v typeref:typename:int +_rl_keyseq_timeout r_readline/src/lib.rs /^ pub static mut _rl_keyseq_timeout: ::std::os::raw::c_int;$/;" v +_rl_kill_kbd_macro lib/readline/macro.c /^_rl_kill_kbd_macro (void)$/;" f typeref:typename:void +_rl_kill_kbd_macro r_readline/src/lib.rs /^ pub fn _rl_kill_kbd_macro();$/;" f +_rl_kscxt lib/readline/readline.c /^_rl_keyseq_cxt *_rl_kscxt = 0;$/;" v typeref:typename:_rl_keyseq_cxt * +_rl_kscxt r_readline/src/lib.rs /^ pub static mut _rl_kscxt: *mut _rl_keyseq_cxt;$/;" v +_rl_last_c_pos lib/readline/display.c /^int _rl_last_c_pos = 0;$/;" v typeref:typename:int +_rl_last_c_pos r_readline/src/lib.rs /^ pub static mut _rl_last_c_pos: ::std::os::raw::c_int;$/;" v +_rl_last_command_was_kill lib/readline/readline.c /^int _rl_last_command_was_kill = 0;$/;" v typeref:typename:int +_rl_last_command_was_kill r_readline/src/lib.rs /^ pub static mut _rl_last_command_was_kill: ::std::os::raw::c_int;$/;" v +_rl_last_tty_chars lib/readline/rltty.c /^static _RL_TTY_CHARS _rl_tty_chars, _rl_last_tty_chars;$/;" v typeref:typename:_RL_TTY_CHARS file: +_rl_last_v_pos lib/readline/display.c /^int _rl_last_v_pos = 0;$/;" v typeref:typename:int +_rl_longjmp include/posixjmp.h /^# define _rl_longjmp(/;" d +_rl_longjmp lib/readline/posixjmp.h /^# define _rl_longjmp(/;" d +_rl_lowercase_p lib/readline/chardefs.h /^#define _rl_lowercase_p(/;" d +_rl_lowercase_p r_readline/src/lib.rs /^ pub fn _rl_lowercase_p(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_macro_dumper_internal lib/readline/bind.c /^_rl_macro_dumper_internal (int print_readably, Keymap map, char *prefix)$/;" f typeref:typename:void file: +_rl_make_prompt_for_search lib/readline/display.c /^_rl_make_prompt_for_search (int pchar)$/;" f typeref:typename:char * +_rl_make_prompt_for_search r_readline/src/lib.rs /^ pub fn _rl_make_prompt_for_search(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_cha/;" f +_rl_mark_modified_lines lib/readline/readline.c /^int _rl_mark_modified_lines = 0;$/;" v typeref:typename:int +_rl_mark_modified_lines r_readline/src/lib.rs /^ pub static mut _rl_mark_modified_lines: ::std::os::raw::c_int;$/;" v +_rl_match_hidden_files lib/readline/complete.c /^int _rl_match_hidden_files = 1;$/;" v typeref:typename:int +_rl_match_hidden_files r_readline/src/lib.rs /^ pub static mut _rl_match_hidden_files: ::std::os::raw::c_int;$/;" v +_rl_menu_complete_prefix_first lib/readline/complete.c /^int _rl_menu_complete_prefix_first = 0;$/;" v typeref:typename:int +_rl_menu_complete_prefix_first r_readline/src/lib.rs /^ pub static mut _rl_menu_complete_prefix_first: ::std::os::raw::c_int;$/;" v +_rl_meta_flag lib/readline/readline.c /^int _rl_meta_flag = 0; \/* Forward declaration *\/$/;" v typeref:typename:int +_rl_meta_flag r_readline/src/lib.rs /^ pub static mut _rl_meta_flag: ::std::os::raw::c_int;$/;" v +_rl_move_cursor_relative lib/readline/display.c /^_rl_move_cursor_relative (int new, const char *data, const char *dataf)$/;" f typeref:typename:void file: +_rl_move_vert lib/readline/display.c /^_rl_move_vert (int to)$/;" f typeref:typename:void +_rl_move_vert r_readline/src/lib.rs /^ pub fn _rl_move_vert(arg1: ::std::os::raw::c_int);$/;" f +_rl_mvcxt_alloc lib/readline/vi_mode.c /^_rl_mvcxt_alloc (int op, int key)$/;" f typeref:typename:_rl_vimotion_cxt * file: +_rl_mvcxt_dispose lib/readline/vi_mode.c /^_rl_mvcxt_dispose (_rl_vimotion_cxt *m)$/;" f typeref:typename:void file: +_rl_mvcxt_init lib/readline/vi_mode.c /^_rl_mvcxt_init (_rl_vimotion_cxt *m, int op, int key)$/;" f typeref:typename:void file: +_rl_nchars_available lib/readline/input.c /^_rl_nchars_available ()$/;" f typeref:typename:int +_rl_nchars_available r_readline/src/lib.rs /^ pub fn _rl_nchars_available() -> ::std::os::raw::c_int;$/;" f +_rl_next_macro_key lib/readline/macro.c /^_rl_next_macro_key (void)$/;" f typeref:typename:int +_rl_next_macro_key r_readline/src/lib.rs /^ pub fn _rl_next_macro_key() -> ::std::os::raw::c_int;$/;" f +_rl_nscxt lib/readline/search.c /^_rl_search_cxt *_rl_nscxt = 0;$/;" v typeref:typename:_rl_search_cxt * +_rl_nscxt r_readline/src/lib.rs /^ pub static mut _rl_nscxt: *mut _rl_search_cxt;$/;" v +_rl_nsearch_abort lib/readline/search.c /^_rl_nsearch_abort (_rl_search_cxt *cxt)$/;" f typeref:typename:void file: +_rl_nsearch_callback lib/readline/search.c /^_rl_nsearch_callback (_rl_search_cxt *cxt)$/;" f typeref:typename:int +_rl_nsearch_callback r_readline/src/lib.rs /^ pub fn _rl_nsearch_callback(arg1: *mut _rl_search_cxt) -> ::std::os::raw::c_int;$/;" f +_rl_nsearch_cleanup lib/readline/search.c /^_rl_nsearch_cleanup (_rl_search_cxt *cxt, int r)$/;" f typeref:typename:int +_rl_nsearch_cleanup r_readline/src/lib.rs /^ pub fn _rl_nsearch_cleanup($/;" f +_rl_nsearch_dispatch lib/readline/search.c /^_rl_nsearch_dispatch (_rl_search_cxt *cxt, int c)$/;" f typeref:typename:int file: +_rl_nsearch_dosearch lib/readline/search.c /^_rl_nsearch_dosearch (_rl_search_cxt *cxt)$/;" f typeref:typename:int file: +_rl_nsearch_init lib/readline/search.c /^_rl_nsearch_init (int dir, int pchar)$/;" f typeref:typename:_rl_search_cxt * file: +_rl_null_function lib/readline/util.c /^_rl_null_function (int count, int key)$/;" f typeref:typename:int +_rl_null_function r_readline/src/lib.rs /^ pub fn _rl_null_function($/;" f +_rl_optimize_redisplay lib/readline/display.c /^_rl_optimize_redisplay (void)$/;" f typeref:typename:void +_rl_optimize_redisplay r_readline/src/lib.rs /^ pub fn _rl_optimize_redisplay();$/;" f +_rl_optimize_typeahead lib/readline/text.c /^int _rl_optimize_typeahead = 1; \/* rl_insert tries to read typeahead *\/$/;" v typeref:typename:int +_rl_optimize_typeahead r_readline/src/lib.rs /^ pub static mut _rl_optimize_typeahead: ::std::os::raw::c_int;$/;" v +_rl_orig_sigset lib/readline/signals.c /^sigset_t _rl_orig_sigset;$/;" v typeref:typename:sigset_t +_rl_out_stream lib/readline/readline.c /^FILE *_rl_in_stream, *_rl_out_stream;$/;" v typeref:typename:FILE * +_rl_out_stream r_readline/src/lib.rs /^ pub static mut _rl_out_stream: *mut FILE;$/;" v +_rl_output_character_function lib/readline/terminal.c /^_rl_output_character_function (int c)$/;" f typeref:typename:int +_rl_output_character_function lib/readline/terminal.c /^_rl_output_character_function (int c)$/;" f typeref:typename:void +_rl_output_character_function r_readline/src/lib.rs /^ pub fn _rl_output_character_function(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_output_meta_chars lib/readline/readline.c /^int _rl_output_meta_chars = 0;$/;" v typeref:typename:int +_rl_output_meta_chars r_readline/src/lib.rs /^ pub static mut _rl_output_meta_chars: ::std::os::raw::c_int;$/;" v +_rl_output_some_chars lib/readline/terminal.c /^_rl_output_some_chars (const char *string, int count)$/;" f typeref:typename:void +_rl_output_some_chars r_readline/src/lib.rs /^ pub fn _rl_output_some_chars(arg1: *const ::std::os::raw::c_char, arg2: ::std::os::raw::c_in/;" f +_rl_overwrite_char lib/readline/text.c /^_rl_overwrite_char (int count, int c)$/;" f typeref:typename:int +_rl_overwrite_char r_readline/src/lib.rs /^ pub fn _rl_overwrite_char($/;" f +_rl_overwrite_rubout lib/readline/text.c /^_rl_overwrite_rubout (int count, int key)$/;" f typeref:typename:int +_rl_overwrite_rubout r_readline/src/lib.rs /^ pub fn _rl_overwrite_rubout($/;" f +_rl_page_completions lib/readline/complete.c /^int _rl_page_completions = 1;$/;" v typeref:typename:int +_rl_page_completions r_readline/src/lib.rs /^ pub static mut _rl_page_completions: ::std::os::raw::c_int;$/;" v +_rl_parse_colors lib/readline/parse-colors.c /^void _rl_parse_colors(void)$/;" f typeref:typename:void +_rl_parse_colors r_readline/src/lib.rs /^ pub fn _rl_parse_colors();$/;" f +_rl_parsing_conditionalized_out lib/readline/readline.c /^unsigned char _rl_parsing_conditionalized_out = 0;$/;" v typeref:typename:unsigned char +_rl_parsing_conditionalized_out r_readline/src/lib.rs /^ pub static mut _rl_parsing_conditionalized_out: ::std::os::raw::c_uchar;$/;" v +_rl_peek_macro_key lib/readline/macro.c /^_rl_peek_macro_key (void)$/;" f typeref:typename:int +_rl_peek_macro_key r_readline/src/lib.rs /^ pub fn _rl_peek_macro_key() -> ::std::os::raw::c_int;$/;" f +_rl_pending_command lib/readline/readline.c /^struct _rl_cmd _rl_pending_command;$/;" v typeref:struct:_rl_cmd +_rl_pending_command r_readline/src/lib.rs /^ pub static mut _rl_pending_command: _rl_cmd;$/;" v +_rl_pop_executing_macro lib/readline/macro.c /^_rl_pop_executing_macro (void)$/;" f typeref:typename:void +_rl_pop_executing_macro r_readline/src/lib.rs /^ pub fn _rl_pop_executing_macro();$/;" f +_rl_possible_control_prefixes lib/readline/bind.c /^const char * const _rl_possible_control_prefixes[] = {$/;" v typeref:typename:const char * const[] +_rl_possible_control_prefixes r_readline/src/lib.rs /^ pub static mut _rl_possible_control_prefixes: [*const ::std::os::raw::c_char; 0usize];$/;" v +_rl_possible_meta_prefixes lib/readline/bind.c /^const char * const _rl_possible_meta_prefixes[] = {$/;" v typeref:typename:const char * const[] +_rl_possible_meta_prefixes r_readline/src/lib.rs /^ pub static mut _rl_possible_meta_prefixes: [*const ::std::os::raw::c_char; 0usize];$/;" v +_rl_prefer_visible_bell lib/readline/bind.c /^static int _rl_prefer_visible_bell = 1;$/;" v typeref:typename:int file: +_rl_prep_non_filename_text lib/readline/colors.c /^_rl_prep_non_filename_text (void)$/;" f typeref:typename:void +_rl_prep_non_filename_text r_readline/src/lib.rs /^ pub fn _rl_prep_non_filename_text();$/;" f +_rl_prev_macro_key lib/readline/macro.c /^_rl_prev_macro_key (void)$/;" f typeref:typename:int +_rl_prev_macro_key r_readline/src/lib.rs /^ pub fn _rl_prev_macro_key() -> ::std::os::raw::c_int;$/;" f +_rl_print_color_indicator lib/readline/colors.c /^_rl_print_color_indicator (const char *f)$/;" f typeref:typename:bool +_rl_print_color_indicator r_readline/src/lib.rs /^ pub fn _rl_print_color_indicator(f: *const ::std::os::raw::c_char) -> bool;$/;" f +_rl_print_completions_horizontally lib/readline/complete.c /^int _rl_print_completions_horizontally;$/;" v typeref:typename:int +_rl_print_completions_horizontally r_readline/src/lib.rs /^ pub static mut _rl_print_completions_horizontally: ::std::os::raw::c_int;$/;" v +_rl_print_prefix_color lib/readline/colors.c /^_rl_print_prefix_color (void)$/;" f typeref:typename:bool +_rl_print_prefix_color r_readline/src/lib.rs /^ pub fn _rl_print_prefix_color() -> bool;$/;" f +_rl_pure_alphabetic lib/readline/chardefs.h /^#define _rl_pure_alphabetic(/;" d +_rl_pure_alphabetic r_readline/src/lib.rs /^ pub fn _rl_pure_alphabetic(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_push_executing_macro lib/readline/macro.c /^_rl_push_executing_macro (void)$/;" f typeref:typename:void +_rl_push_executing_macro r_readline/src/lib.rs /^ pub fn _rl_push_executing_macro();$/;" f +_rl_pushed_input_available lib/readline/input.c /^_rl_pushed_input_available (void)$/;" f typeref:typename:int +_rl_pushed_input_available r_readline/src/lib.rs /^ pub fn _rl_pushed_input_available() -> ::std::os::raw::c_int;$/;" f +_rl_put_indicator lib/readline/colors.c /^_rl_put_indicator (const struct bin_str *ind)$/;" f typeref:typename:void +_rl_put_indicator r_readline/src/lib.rs /^ pub fn _rl_put_indicator(ind: *const bin_str);$/;" f +_rl_qsort_string_compare lib/readline/util.c /^_rl_qsort_string_compare (char **s1, char **s2)$/;" f typeref:typename:int +_rl_qsort_string_compare r_readline/src/lib.rs /^ pub fn _rl_qsort_string_compare($/;" f +_rl_quick_redisplay lib/readline/display.c /^static int _rl_quick_redisplay = 0;$/;" v typeref:typename:int file: +_rl_quit_char lib/readline/signals.c /^int _rl_quit_char = 0;$/;" v typeref:typename:int +_rl_quit_char r_readline/src/lib.rs /^ pub static mut _rl_quit_char: ::std::os::raw::c_int;$/;" v +_rl_read_bracketed_paste_prefix lib/readline/kill.c /^_rl_read_bracketed_paste_prefix (int c)$/;" f typeref:typename:int +_rl_read_bracketed_paste_prefix r_readline/src/lib.rs /^ pub fn _rl_read_bracketed_paste_prefix(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int/;" f +_rl_read_file lib/readline/bind.c /^_rl_read_file (char *filename, size_t *sizep)$/;" f typeref:typename:char * file: +_rl_read_init_file lib/readline/bind.c /^_rl_read_init_file (const char *filename, int include_level)$/;" f typeref:typename:int file: +_rl_read_mbchar lib/readline/input.c /^_rl_read_mbchar (char *mbchar, int size)$/;" f typeref:typename:int +_rl_read_mbchar r_readline/src/lib.rs /^ pub fn _rl_read_mbchar($/;" f +_rl_read_mbstring lib/readline/input.c /^_rl_read_mbstring (int first, char *mb, int mlen)$/;" f typeref:typename:int +_rl_read_mbstring r_readline/src/lib.rs /^ pub fn _rl_read_mbstring($/;" f +_rl_redisplay_after_sigwinch lib/readline/display.c /^_rl_redisplay_after_sigwinch (void)$/;" f typeref:typename:void +_rl_redisplay_after_sigwinch r_readline/src/lib.rs /^ pub fn _rl_redisplay_after_sigwinch();$/;" f +_rl_refresh_line lib/readline/display.c /^_rl_refresh_line (void)$/;" f typeref:typename:void +_rl_refresh_line r_readline/src/lib.rs /^ pub fn _rl_refresh_line();$/;" f +_rl_release_sigint lib/readline/signals.c /^_rl_release_sigint (void)$/;" f typeref:typename:void +_rl_release_sigint r_readline/src/lib.rs /^ pub fn _rl_release_sigint();$/;" f +_rl_release_sigwinch lib/readline/signals.c /^_rl_release_sigwinch (void)$/;" f typeref:typename:void +_rl_release_sigwinch r_readline/src/lib.rs /^ pub fn _rl_release_sigwinch();$/;" f +_rl_replace_text lib/readline/text.c /^_rl_replace_text (const char *text, int start, int end)$/;" f typeref:typename:int +_rl_replace_text r_readline/src/lib.rs /^ pub fn _rl_replace_text($/;" f +_rl_reset_argument lib/readline/misc.c /^_rl_reset_argument (void)$/;" f typeref:typename:void +_rl_reset_argument r_readline/src/lib.rs /^ pub fn _rl_reset_argument();$/;" f +_rl_reset_completion_state lib/readline/complete.c /^_rl_reset_completion_state (void)$/;" f typeref:typename:void +_rl_reset_completion_state r_readline/src/lib.rs /^ pub fn _rl_reset_completion_state();$/;" f +_rl_reset_prompt lib/readline/display.c /^_rl_reset_prompt (void)$/;" f typeref:typename:void +_rl_reset_prompt r_readline/src/lib.rs /^ pub fn _rl_reset_prompt();$/;" f +_rl_restore_prompt r_readline/src/lib.rs /^ pub fn _rl_restore_prompt();$/;" f +_rl_restore_tty_signals lib/readline/rltty.c /^_rl_restore_tty_signals (void)$/;" f typeref:typename:int +_rl_restore_tty_signals r_readline/src/lib.rs /^ pub fn _rl_restore_tty_signals() -> ::std::os::raw::c_int;$/;" f +_rl_revert_all_at_newline lib/readline/readline.c /^int _rl_revert_all_at_newline = 0;$/;" v typeref:typename:int +_rl_revert_all_at_newline r_readline/src/lib.rs /^ pub static mut _rl_revert_all_at_newline: ::std::os::raw::c_int;$/;" v +_rl_revert_all_lines lib/readline/misc.c /^_rl_revert_all_lines (void)$/;" f typeref:typename:void +_rl_revert_all_lines r_readline/src/lib.rs /^ pub fn _rl_revert_all_lines();$/;" f +_rl_revert_previous_lines lib/readline/misc.c /^_rl_revert_previous_lines (void)$/;" f typeref:typename:void +_rl_revert_previous_lines r_readline/src/lib.rs /^ pub fn _rl_revert_previous_lines();$/;" f +_rl_rubout_char lib/readline/text.c /^_rl_rubout_char (int count, int key)$/;" f typeref:typename:int +_rl_rubout_char r_readline/src/lib.rs /^ pub fn _rl_rubout_char($/;" f +_rl_save_prompt r_readline/src/lib.rs /^ pub fn _rl_save_prompt();$/;" f +_rl_saved_internal_startup_hook lib/readline/misc.c /^static rl_hook_func_t *_rl_saved_internal_startup_hook = 0;$/;" v typeref:typename:rl_hook_func_t * file: +_rl_saved_line_for_history lib/readline/misc.c /^HIST_ENTRY *_rl_saved_line_for_history = (HIST_ENTRY *)NULL;$/;" v typeref:typename:HIST_ENTRY * +_rl_savestring lib/readline/util.c /^_rl_savestring (const char *s)$/;" f typeref:typename:char * +_rl_savestring r_readline/src/lib.rs /^ pub fn _rl_savestring(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +_rl_screenchars lib/readline/terminal.c /^int _rl_screenwidth, _rl_screenheight, _rl_screenchars;$/;" v typeref:typename:int +_rl_screenchars r_readline/src/lib.rs /^ pub static mut _rl_screenchars: ::std::os::raw::c_int;$/;" v +_rl_screenheight lib/readline/terminal.c /^int _rl_screenwidth, _rl_screenheight, _rl_screenchars;$/;" v typeref:typename:int +_rl_screenheight r_readline/src/lib.rs /^ pub static mut _rl_screenheight: ::std::os::raw::c_int;$/;" v +_rl_screenwidth lib/readline/terminal.c /^int _rl_screenwidth, _rl_screenheight, _rl_screenchars;$/;" v typeref:typename:int +_rl_screenwidth r_readline/src/lib.rs /^ pub static mut _rl_screenwidth: ::std::os::raw::c_int;$/;" v +_rl_scxt_alloc lib/readline/isearch.c /^_rl_scxt_alloc (int type, int flags)$/;" f typeref:typename:_rl_search_cxt * +_rl_scxt_alloc r_readline/src/lib.rs /^ pub fn _rl_scxt_alloc($/;" f +_rl_scxt_dispose lib/readline/isearch.c /^_rl_scxt_dispose (_rl_search_cxt *cxt, int flags)$/;" f typeref:typename:void +_rl_scxt_dispose r_readline/src/lib.rs /^ pub fn _rl_scxt_dispose(arg1: *mut _rl_search_cxt, arg2: ::std::os::raw::c_int);$/;" f +_rl_search_cxt lib/readline/rlprivate.h /^} _rl_search_cxt;$/;" t typeref:struct:__rl_search_context +_rl_search_cxt r_readline/src/lib.rs /^pub type _rl_search_cxt = __rl_search_context;$/;" t +_rl_search_getchar lib/readline/isearch.c /^_rl_search_getchar (_rl_search_cxt *cxt)$/;" f typeref:typename:int +_rl_search_getchar r_readline/src/lib.rs /^ pub fn _rl_search_getchar(arg1: *mut _rl_search_cxt) -> ::std::os::raw::c_int;$/;" f +_rl_set_cursor lib/readline/terminal.c /^_rl_set_cursor (int im, int force)$/;" f typeref:typename:void +_rl_set_cursor r_readline/src/lib.rs /^ pub fn _rl_set_cursor(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int);$/;" f +_rl_set_insert_mode lib/readline/misc.c /^_rl_set_insert_mode (int im, int force)$/;" f typeref:typename:void +_rl_set_insert_mode r_readline/src/lib.rs /^ pub fn _rl_set_insert_mode(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int);$/;" f +_rl_set_mark_at_pos lib/readline/text.c /^_rl_set_mark_at_pos (int position)$/;" f typeref:typename:int +_rl_set_mark_at_pos r_readline/src/lib.rs /^ pub fn _rl_set_mark_at_pos(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_set_normal_color lib/readline/colors.c /^_rl_set_normal_color (void)$/;" f typeref:typename:void +_rl_set_normal_color r_readline/src/lib.rs /^ pub fn _rl_set_normal_color();$/;" f +_rl_set_screen_size lib/readline/terminal.c /^_rl_set_screen_size (int rows, int cols)$/;" f typeref:typename:void +_rl_set_screen_size r_readline/src/lib.rs /^ pub fn _rl_set_screen_size(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int);$/;" f +_rl_set_the_line lib/readline/readline.c /^_rl_set_the_line (void)$/;" f typeref:typename:void +_rl_set_the_line r_readline/src/lib.rs /^ pub fn _rl_set_the_line();$/;" f +_rl_settracefp lib/readline/util.c /^_rl_settracefp (FILE *fp)$/;" f typeref:typename:void +_rl_show_mode_in_prompt lib/readline/readline.c /^int _rl_show_mode_in_prompt = 0;$/;" v typeref:typename:int +_rl_show_mode_in_prompt r_readline/src/lib.rs /^ pub static mut _rl_show_mode_in_prompt: ::std::os::raw::c_int;$/;" v +_rl_sigcleanarg lib/readline/signals.c /^void *_rl_sigcleanarg;$/;" v typeref:typename:void * +_rl_sigcleanarg r_readline/src/lib.rs /^ pub static mut _rl_sigcleanarg: *mut ::std::os::raw::c_void;$/;" v +_rl_sigcleanup lib/readline/signals.c /^_rl_sigcleanup_func_t *_rl_sigcleanup;$/;" v typeref:typename:_rl_sigcleanup_func_t * +_rl_sigcleanup r_readline/src/lib.rs /^ pub static mut _rl_sigcleanup: _rl_sigcleanup_func_t;$/;" v +_rl_sigcleanup_func_t r_readline/src/lib.rs /^pub type _rl_sigcleanup_func_t = ::core::option::Option<$/;" t +_rl_signal_handler lib/readline/signals.c /^_rl_signal_handler (int sig)$/;" f typeref:typename:RETSIGTYPE +_rl_signal_handler r_readline/src/lib.rs /^ pub fn _rl_signal_handler(arg1: ::std::os::raw::c_int);$/;" f +_rl_sigwinch_resize_terminal lib/readline/terminal.c /^_rl_sigwinch_resize_terminal (void)$/;" f typeref:typename:void +_rl_sigwinch_resize_terminal r_readline/src/lib.rs /^ pub fn _rl_sigwinch_resize_terminal();$/;" f +_rl_skip_completed_text lib/readline/complete.c /^int _rl_skip_completed_text = 0;$/;" v typeref:typename:int +_rl_skip_completed_text r_readline/src/lib.rs /^ pub static mut _rl_skip_completed_text: ::std::os::raw::c_int;$/;" v +_rl_skip_to_delim lib/readline/bind.c /^_rl_skip_to_delim (char *string, int start, int delim)$/;" f typeref:typename:int file: +_rl_standout_off lib/readline/terminal.c /^_rl_standout_off (void)$/;" f typeref:typename:void +_rl_standout_off r_readline/src/lib.rs /^ pub fn _rl_standout_off();$/;" f +_rl_standout_on lib/readline/terminal.c /^_rl_standout_on (void)$/;" f typeref:typename:void +_rl_standout_on r_readline/src/lib.rs /^ pub fn _rl_standout_on();$/;" f +_rl_start_using_history lib/readline/misc.c /^_rl_start_using_history (void)$/;" f typeref:typename:void +_rl_start_using_history r_readline/src/lib.rs /^ pub fn _rl_start_using_history();$/;" f +_rl_stricmp lib/readline/rldefs.h /^#define _rl_stricmp /;" d +_rl_stricmp lib/readline/util.c /^_rl_stricmp (const char *string1, const char *string2)$/;" f typeref:typename:int +_rl_strindex lib/readline/util.c /^_rl_strindex (const char *s1, const char *s2)$/;" f typeref:typename:char * +_rl_strindex r_readline/src/lib.rs /^ pub fn _rl_strindex($/;" f +_rl_strip_prompt lib/readline/display.c /^_rl_strip_prompt (char *pmt)$/;" f typeref:typename:char * +_rl_strip_prompt r_readline/src/lib.rs /^ pub fn _rl_strip_prompt(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +_rl_strnicmp lib/readline/rldefs.h /^#define _rl_strnicmp /;" d +_rl_strnicmp lib/readline/util.c /^_rl_strnicmp (const char *string1, const char *string2, int count)$/;" f typeref:typename:int +_rl_strpbrk lib/readline/rldefs.h /^# define _rl_strpbrk(/;" d +_rl_strpbrk lib/readline/util.c /^_rl_strpbrk (const char *string1, const char *string2)$/;" f typeref:typename:char * +_rl_subseq_getchar lib/readline/readline.c /^_rl_subseq_getchar (int key)$/;" f typeref:typename:int file: +_rl_subseq_result lib/readline/readline.c /^_rl_subseq_result (int r, Keymap map, int key, int got_subseq)$/;" f typeref:typename:int file: +_rl_suppress_redisplay lib/readline/display.c /^int _rl_suppress_redisplay = 0;$/;" v typeref:typename:int +_rl_suppress_redisplay r_readline/src/lib.rs /^ pub static mut _rl_suppress_redisplay: ::std::os::raw::c_int;$/;" v +_rl_susp_char lib/readline/signals.c /^int _rl_susp_char = 0;$/;" v typeref:typename:int +_rl_susp_char r_readline/src/lib.rs /^ pub static mut _rl_susp_char: ::std::os::raw::c_int;$/;" v +_rl_term_DC lib/readline/terminal.c /^char *_rl_term_DC;$/;" v typeref:typename:char * +_rl_term_DC r_readline/src/lib.rs /^ pub static mut _rl_term_DC: *mut ::std::os::raw::c_char;$/;" v +_rl_term_IC lib/readline/terminal.c /^char *_rl_term_IC;$/;" v typeref:typename:char * +_rl_term_IC r_readline/src/lib.rs /^ pub static mut _rl_term_IC: *mut ::std::os::raw::c_char;$/;" v +_rl_term_at7 lib/readline/terminal.c /^static char *_rl_term_at7; \/* @7 *\/$/;" v typeref:typename:char * file: +_rl_term_autowrap lib/readline/terminal.c /^int _rl_term_autowrap = -1;$/;" v typeref:typename:int +_rl_term_autowrap r_readline/src/lib.rs /^ pub static mut _rl_term_autowrap: ::std::os::raw::c_int;$/;" v +_rl_term_backspace lib/readline/terminal.c /^char *_rl_term_backspace;$/;" v typeref:typename:char * +_rl_term_clreol lib/readline/terminal.c /^char *_rl_term_clreol;$/;" v typeref:typename:char * +_rl_term_clreol r_readline/src/lib.rs /^ pub static mut _rl_term_clreol: *mut ::std::os::raw::c_char;$/;" v +_rl_term_clrpag lib/readline/terminal.c /^char *_rl_term_clrpag;$/;" v typeref:typename:char * +_rl_term_clrpag r_readline/src/lib.rs /^ pub static mut _rl_term_clrpag: *mut ::std::os::raw::c_char;$/;" v +_rl_term_clrscroll lib/readline/terminal.c /^char *_rl_term_clrscroll;$/;" v typeref:typename:char * +_rl_term_clrscroll r_readline/src/lib.rs /^ pub static mut _rl_term_clrscroll: *mut ::std::os::raw::c_char;$/;" v +_rl_term_cr lib/readline/terminal.c /^char *_rl_term_cr;$/;" v typeref:typename:char * +_rl_term_cr r_readline/src/lib.rs /^ pub static mut _rl_term_cr: *mut ::std::os::raw::c_char;$/;" v +_rl_term_dc lib/readline/terminal.c /^char *_rl_term_dc;$/;" v typeref:typename:char * +_rl_term_dc r_readline/src/lib.rs /^ pub static mut _rl_term_dc: *mut ::std::os::raw::c_char;$/;" v +_rl_term_ei lib/readline/terminal.c /^char *_rl_term_ei;$/;" v typeref:typename:char * +_rl_term_ei r_readline/src/lib.rs /^ pub static mut _rl_term_ei: *mut ::std::os::raw::c_char;$/;" v +_rl_term_executing_keyseq lib/readline/readline.c /^_rl_term_executing_keyseq (void)$/;" f typeref:typename:void +_rl_term_executing_keyseq r_readline/src/lib.rs /^ pub fn _rl_term_executing_keyseq();$/;" f +_rl_term_forward_char lib/readline/terminal.c /^char *_rl_term_forward_char;$/;" v typeref:typename:char * +_rl_term_forward_char r_readline/src/lib.rs /^ pub static mut _rl_term_forward_char: *mut ::std::os::raw::c_char;$/;" v +_rl_term_goto lib/readline/terminal.c /^char *_rl_term_goto;$/;" v typeref:typename:char * +_rl_term_ic lib/readline/terminal.c /^char *_rl_term_ic;$/;" v typeref:typename:char * +_rl_term_ic r_readline/src/lib.rs /^ pub static mut _rl_term_ic: *mut ::std::os::raw::c_char;$/;" v +_rl_term_im lib/readline/terminal.c /^char *_rl_term_im;$/;" v typeref:typename:char * +_rl_term_im r_readline/src/lib.rs /^ pub static mut _rl_term_im: *mut ::std::os::raw::c_char;$/;" v +_rl_term_ip lib/readline/terminal.c /^char *_rl_term_ip;$/;" v typeref:typename:char * +_rl_term_kD lib/readline/terminal.c /^static char *_rl_term_kD;$/;" v typeref:typename:char * file: +_rl_term_kH lib/readline/terminal.c /^static char *_rl_term_kH;$/;" v typeref:typename:char * file: +_rl_term_kI lib/readline/terminal.c /^static char *_rl_term_kI;$/;" v typeref:typename:char * file: +_rl_term_kd lib/readline/terminal.c /^static char *_rl_term_kd;$/;" v typeref:typename:char * file: +_rl_term_ke lib/readline/terminal.c /^static char *_rl_term_ke;$/;" v typeref:typename:char * file: +_rl_term_kh lib/readline/terminal.c /^static char *_rl_term_kh;$/;" v typeref:typename:char * file: +_rl_term_kl lib/readline/terminal.c /^static char *_rl_term_kl;$/;" v typeref:typename:char * file: +_rl_term_kr lib/readline/terminal.c /^static char *_rl_term_kr;$/;" v typeref:typename:char * file: +_rl_term_ks lib/readline/terminal.c /^static char *_rl_term_ks;$/;" v typeref:typename:char * file: +_rl_term_ku lib/readline/terminal.c /^static char *_rl_term_ku;$/;" v typeref:typename:char * file: +_rl_term_mm lib/readline/terminal.c /^static char *_rl_term_mm;$/;" v typeref:typename:char * file: +_rl_term_mo lib/readline/terminal.c /^static char *_rl_term_mo;$/;" v typeref:typename:char * file: +_rl_term_pc lib/readline/terminal.c /^char *_rl_term_pc;$/;" v typeref:typename:char * +_rl_term_se lib/readline/terminal.c /^static char *_rl_term_se;$/;" v typeref:typename:char * file: +_rl_term_so lib/readline/terminal.c /^static char *_rl_term_so;$/;" v typeref:typename:char * file: +_rl_term_up lib/readline/terminal.c /^char *_rl_term_up;$/;" v typeref:typename:char * +_rl_term_up r_readline/src/lib.rs /^ pub static mut _rl_term_up: *mut ::std::os::raw::c_char;$/;" v +_rl_term_ve lib/readline/terminal.c /^static char *_rl_term_ve; \/* normal *\/$/;" v typeref:typename:char * file: +_rl_term_vs lib/readline/terminal.c /^static char *_rl_term_vs; \/* very visible *\/$/;" v typeref:typename:char * file: +_rl_terminal_can_insert lib/readline/terminal.c /^int _rl_terminal_can_insert = 0;$/;" v typeref:typename:int +_rl_terminal_can_insert r_readline/src/lib.rs /^ pub static mut _rl_terminal_can_insert: ::std::os::raw::c_int;$/;" v +_rl_test_nonzero lib/readline/mbutil.c /^_rl_test_nonzero (char *string, int ind, int len)$/;" f typeref:typename:int file: +_rl_to_lower lib/readline/chardefs.h /^# define _rl_to_lower(/;" d +_rl_to_lower r_readline/src/lib.rs /^ pub fn _rl_to_lower(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_to_upper lib/readline/chardefs.h /^# define _rl_to_upper(/;" d +_rl_to_upper r_readline/src/lib.rs /^ pub fn _rl_to_upper(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_to_wlower lib/readline/rlmbutil.h /^#define _rl_to_wlower(/;" d +_rl_to_wupper lib/readline/rlmbutil.h /^#define _rl_to_wupper(/;" d +_rl_top_level lib/readline/readline.c /^procenv_t _rl_top_level;$/;" v typeref:typename:procenv_t +_rl_top_level r_readline/src/lib.rs /^ pub static mut _rl_top_level: sigjmp_buf;$/;" v +_rl_trace lib/readline/util.c /^_rl_trace (const char *format, ...)$/;" f typeref:typename:void +_rl_trace r_readline/src/lib.rs /^ pub fn _rl_trace(arg1: *const ::std::os::raw::c_char, ...);$/;" f +_rl_tracefp lib/readline/util.c /^static FILE *_rl_tracefp;$/;" v typeref:typename:FILE * file: +_rl_trclose lib/readline/util.c /^_rl_trclose (void)$/;" f typeref:typename:int +_rl_tropen lib/readline/util.c /^_rl_tropen (void)$/;" f typeref:typename:int +_rl_tropen r_readline/src/lib.rs /^ pub fn _rl_tropen() -> ::std::os::raw::c_int;$/;" f +_rl_tty_chars lib/readline/rltty.c /^static _RL_TTY_CHARS _rl_tty_chars, _rl_last_tty_chars;$/;" v typeref:typename:_RL_TTY_CHARS file: +_rl_tty_chars lib/readline/rltty.h /^typedef struct _rl_tty_chars {$/;" s +_rl_tty_chars r_readline/src/lib.rs /^pub struct _rl_tty_chars {$/;" s +_rl_ttyflush lib/readline/display.c /^_rl_ttyflush (void)$/;" f typeref:typename:void +_rl_ttymsg lib/readline/util.c /^_rl_ttymsg (const char *format, ...)$/;" f typeref:typename:void +_rl_ttymsg lib/readline/util.c /^_rl_ttymsg (format, arg1, arg2)$/;" f +_rl_ttymsg r_readline/src/lib.rs /^ pub fn _rl_ttymsg(arg1: *const ::std::os::raw::c_char, ...);$/;" f +_rl_undo_group_level lib/readline/undo.c /^int _rl_undo_group_level = 0;$/;" v typeref:typename:int +_rl_undo_group_level r_readline/src/lib.rs /^ pub static mut _rl_undo_group_level: ::std::os::raw::c_int;$/;" v +_rl_unget_char lib/readline/input.c /^_rl_unget_char (int key)$/;" f typeref:typename:int +_rl_unget_char r_readline/src/lib.rs /^ pub fn _rl_unget_char(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_untranslate_macro_value lib/readline/bind.c /^_rl_untranslate_macro_value (char *seq, int use_escapes)$/;" f typeref:typename:char * +_rl_untranslate_macro_value r_readline/src/lib.rs /^ pub fn _rl_untranslate_macro_value($/;" f +_rl_update_final lib/readline/display.c /^_rl_update_final (void)$/;" f typeref:typename:void +_rl_update_final r_readline/src/lib.rs /^ pub fn _rl_update_final();$/;" f +_rl_uppercase_p lib/readline/chardefs.h /^#define _rl_uppercase_p(/;" d +_rl_uppercase_p r_readline/src/lib.rs /^ pub fn _rl_uppercase_p(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_utf8_mblen lib/readline/mbutil.c /^_rl_utf8_mblen (const char *s, size_t n)$/;" f typeref:typename:int file: +_rl_utf8locale lib/readline/mbutil.c /^int _rl_utf8locale = 0;$/;" v typeref:typename:int +_rl_utf8locale r_readline/src/lib.rs /^ pub static mut _rl_utf8locale: ::std::os::raw::c_int;$/;" v +_rl_vi_advance_point lib/readline/vi_mode.c /^_rl_vi_advance_point (void)$/;" f typeref:typename:int file: +_rl_vi_append_forward lib/readline/vi_mode.c /^_rl_vi_append_forward (int key)$/;" f typeref:typename:void file: +_rl_vi_arg_dispatch lib/readline/vi_mode.c /^_rl_vi_arg_dispatch (int c)$/;" f typeref:typename:int file: +_rl_vi_backup lib/readline/vi_mode.c /^_rl_vi_backup (void)$/;" f typeref:typename:void file: +_rl_vi_backup_point lib/readline/vi_mode.c /^_rl_vi_backup_point (void)$/;" f typeref:typename:int file: +_rl_vi_callback_change_char lib/readline/vi_mode.c /^_rl_vi_callback_change_char (_rl_callback_generic_arg *data)$/;" f typeref:typename:int file: +_rl_vi_callback_char_search lib/readline/vi_mode.c /^_rl_vi_callback_char_search (_rl_callback_generic_arg *data)$/;" f typeref:typename:int file: +_rl_vi_callback_getchar lib/readline/vi_mode.c /^_rl_vi_callback_getchar (char *mb, int mlen)$/;" f typeref:typename:int file: +_rl_vi_callback_goto_mark lib/readline/vi_mode.c /^_rl_vi_callback_goto_mark (_rl_callback_generic_arg *data)$/;" f typeref:typename:int file: +_rl_vi_callback_set_mark lib/readline/vi_mode.c /^_rl_vi_callback_set_mark (_rl_callback_generic_arg *data)$/;" f typeref:typename:int file: +_rl_vi_change_char lib/readline/vi_mode.c /^_rl_vi_change_char (int count, int c, char *mb)$/;" f typeref:typename:int file: +_rl_vi_change_mbchar_case lib/readline/vi_mode.c /^_rl_vi_change_mbchar_case (int count)$/;" f typeref:typename:int file: +_rl_vi_cmd_mode_str lib/readline/display.c /^char *_rl_vi_cmd_mode_str;$/;" v typeref:typename:char * +_rl_vi_cmd_mode_str r_readline/src/lib.rs /^ pub static mut _rl_vi_cmd_mode_str: *mut ::std::os::raw::c_char;$/;" v +_rl_vi_cmd_modestr_len lib/readline/display.c /^int _rl_vi_cmd_modestr_len;$/;" v typeref:typename:int +_rl_vi_cmd_modestr_len r_readline/src/lib.rs /^ pub static mut _rl_vi_cmd_modestr_len: ::std::os::raw::c_int;$/;" v +_rl_vi_doing_insert lib/readline/vi_mode.c /^static int _rl_vi_doing_insert;$/;" v typeref:typename:int file: +_rl_vi_domove_callback lib/readline/vi_mode.c /^_rl_vi_domove_callback (_rl_vimotion_cxt *m)$/;" f typeref:typename:int +_rl_vi_domove_callback r_readline/src/lib.rs /^ pub fn _rl_vi_domove_callback(arg1: *mut _rl_vimotion_cxt) -> ::std::os::raw::c_int;$/;" f +_rl_vi_domove_motion_cleanup lib/readline/vi_mode.c /^_rl_vi_domove_motion_cleanup (int c, _rl_vimotion_cxt *m)$/;" f typeref:typename:int +_rl_vi_domove_motion_cleanup r_readline/src/lib.rs /^ pub fn _rl_vi_domove_motion_cleanup($/;" f +_rl_vi_done_inserting lib/readline/vi_mode.c /^_rl_vi_done_inserting (void)$/;" f typeref:typename:void +_rl_vi_done_inserting r_readline/src/lib.rs /^ pub fn _rl_vi_done_inserting();$/;" f +_rl_vi_goto_mark lib/readline/vi_mode.c /^_rl_vi_goto_mark (void)$/;" f typeref:typename:int file: +_rl_vi_initialize_line lib/readline/vi_mode.c /^_rl_vi_initialize_line (void)$/;" f typeref:typename:void +_rl_vi_initialize_line r_readline/src/lib.rs /^ pub fn _rl_vi_initialize_line();$/;" f +_rl_vi_ins_mode_str lib/readline/display.c /^char *_rl_vi_ins_mode_str;$/;" v typeref:typename:char * +_rl_vi_ins_mode_str r_readline/src/lib.rs /^ pub static mut _rl_vi_ins_mode_str: *mut ::std::os::raw::c_char;$/;" v +_rl_vi_ins_modestr_len lib/readline/display.c /^int _rl_vi_ins_modestr_len;$/;" v typeref:typename:int +_rl_vi_ins_modestr_len r_readline/src/lib.rs /^ pub static mut _rl_vi_ins_modestr_len: ::std::os::raw::c_int;$/;" v +_rl_vi_last_arg_sign lib/readline/vi_mode.c /^static int _rl_vi_last_arg_sign = 1;$/;" v typeref:typename:int file: +_rl_vi_last_command lib/readline/vi_mode.c /^int _rl_vi_last_command = 'i'; \/* default `.' puts you in insert mode *\/$/;" v typeref:typename:int +_rl_vi_last_command r_readline/src/lib.rs /^ pub static mut _rl_vi_last_command: ::std::os::raw::c_int;$/;" v +_rl_vi_last_key_before_insert lib/readline/vi_mode.c /^static int _rl_vi_last_key_before_insert;$/;" v typeref:typename:int file: +_rl_vi_last_motion lib/readline/vi_mode.c /^static int _rl_vi_last_motion;$/;" v typeref:typename:int file: +_rl_vi_last_repeat lib/readline/vi_mode.c /^static int _rl_vi_last_repeat = 1;$/;" v typeref:typename:int file: +_rl_vi_last_replacement lib/readline/vi_mode.c /^static char _rl_vi_last_replacement[MB_LEN_MAX+1]; \/* reserve for trailing NULL *\/$/;" v typeref:typename:char[] file: +_rl_vi_last_search_char lib/readline/vi_mode.c /^static int _rl_vi_last_search_char;$/;" v typeref:typename:int file: +_rl_vi_last_search_mbchar lib/readline/vi_mode.c /^static char _rl_vi_last_search_mbchar[MB_LEN_MAX];$/;" v typeref:typename:char[] file: +_rl_vi_last_search_mblen lib/readline/vi_mode.c /^static int _rl_vi_last_search_mblen;$/;" v typeref:typename:int file: +_rl_vi_motion_command lib/readline/vi_mode.c /^_rl_vi_motion_command (int c)$/;" f typeref:typename:int +_rl_vi_motion_command r_readline/src/lib.rs /^ pub fn _rl_vi_motion_command(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_vi_redoing lib/readline/vi_mode.c /^int _rl_vi_redoing;$/;" v typeref:typename:int +_rl_vi_redoing r_readline/src/lib.rs /^ pub static mut _rl_vi_redoing: ::std::os::raw::c_int;$/;" v +_rl_vi_replace_insert lib/readline/vi_mode.c /^_rl_vi_replace_insert (int count)$/;" f typeref:typename:void file: +_rl_vi_reset_last lib/readline/vi_mode.c /^_rl_vi_reset_last (void)$/;" f typeref:typename:void +_rl_vi_reset_last r_readline/src/lib.rs /^ pub fn _rl_vi_reset_last();$/;" f +_rl_vi_save_insert lib/readline/vi_mode.c /^_rl_vi_save_insert (UNDO_LIST *up)$/;" f typeref:typename:void file: +_rl_vi_save_replace lib/readline/vi_mode.c /^_rl_vi_save_replace (void)$/;" f typeref:typename:void file: +_rl_vi_set_last lib/readline/vi_mode.c /^_rl_vi_set_last (int key, int repeat, int sign)$/;" f typeref:typename:void +_rl_vi_set_last r_readline/src/lib.rs /^ pub fn _rl_vi_set_last($/;" f +_rl_vi_set_mark lib/readline/vi_mode.c /^_rl_vi_set_mark (void)$/;" f typeref:typename:int file: +_rl_vi_stuff_insert lib/readline/vi_mode.c /^_rl_vi_stuff_insert (int count)$/;" f typeref:typename:void file: +_rl_vi_textmod_command lib/readline/vi_mode.c /^_rl_vi_textmod_command (int c)$/;" f typeref:typename:int +_rl_vi_textmod_command r_readline/src/lib.rs /^ pub fn _rl_vi_textmod_command(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_rl_vimotion_cxt lib/readline/rlprivate.h /^} _rl_vimotion_cxt;$/;" t typeref:struct:__rl_vimotion_context +_rl_vimotion_cxt r_readline/src/lib.rs /^pub type _rl_vimotion_cxt = __rl_vimotion_context;$/;" t +_rl_vimvcxt lib/readline/vi_mode.c /^_rl_vimotion_cxt *_rl_vimvcxt = 0;$/;" v typeref:typename:_rl_vimotion_cxt * +_rl_vimvcxt r_readline/src/lib.rs /^ pub static mut _rl_vimvcxt: *mut _rl_vimotion_cxt;$/;" v +_rl_vis_botlin lib/readline/display.c /^int _rl_vis_botlin = 0;$/;" v typeref:typename:int +_rl_vis_botlin r_readline/src/lib.rs /^ pub static mut _rl_vis_botlin: ::std::os::raw::c_int;$/;" v +_rl_visible_bell lib/readline/terminal.c /^static char *_rl_visible_bell;$/;" v typeref:typename:char * file: +_rl_walphabetic lib/readline/rlmbutil.h /^#define _rl_walphabetic(/;" d +_rl_walphabetic lib/readline/util.c /^_rl_walphabetic (wchar_t wc)$/;" f typeref:typename:int +_rl_walphabetic r_readline/src/lib.rs /^ pub fn _rl_walphabetic(arg1: wchar_t) -> ::std::os::raw::c_int;$/;" f +_rl_want_redisplay lib/readline/display.c /^int _rl_want_redisplay = 0;$/;" v typeref:typename:int +_rl_want_redisplay r_readline/src/lib.rs /^ pub static mut _rl_want_redisplay: ::std::os::raw::c_int;$/;" v +_rl_with_macro_input lib/readline/macro.c /^_rl_with_macro_input (char *string)$/;" f typeref:typename:void +_rl_with_macro_input r_readline/src/lib.rs /^ pub fn _rl_with_macro_input(arg1: *mut ::std::os::raw::c_char);$/;" f +_run_trap_internal trap.c /^_run_trap_internal (sig, tag)$/;" f file: +_set_tty_settings lib/readline/rltty.c /^_set_tty_settings (int tty, TIOTYPE *tiop)$/;" f typeref:typename:int file: +_setjmp r_bash/src/lib.rs /^ pub fn _setjmp(__env: *mut __jmp_buf_tag) -> ::std::os::raw::c_int;$/;" f +_setjmp r_readline/src/lib.rs /^ pub fn _setjmp(__env: *mut __jmp_buf_tag) -> ::std::os::raw::c_int;$/;" f +_sh_input_line_state_t r_bash/src/lib.rs /^pub struct _sh_input_line_state_t {$/;" s +_sh_input_line_state_t shell.h /^typedef struct _sh_input_line_state_t {$/;" s +_sh_parser_state_t r_bash/src/lib.rs /^pub struct _sh_parser_state_t {$/;" s +_sh_parser_state_t shell.h /^typedef struct _sh_parser_state_t {$/;" s +_shortbuf r_bash/src/lib.rs /^ pub _shortbuf: [::std::os::raw::c_char; 1usize],$/;" m struct:_IO_FILE +_shortbuf r_readline/src/lib.rs /^ pub _shortbuf: [::std::os::raw::c_char; 1usize],$/;" m struct:_IO_FILE +_si_addr vendor/libc/src/unix/bsd/apple/mod.rs /^ _si_addr: *mut ::c_void,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_code vendor/libc/src/unix/bsd/apple/mod.rs /^ _si_code: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_code vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _si_code: ::c_int,$/;" m struct:siginfo_t::si_status::siginfo_timer +_si_code vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _si_code: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_code vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ _si_code: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_code vendor/libc/src/unix/linux_like/android/mod.rs /^ _si_code: ::c_int,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +_si_code vendor/libc/src/unix/linux_like/android/mod.rs /^ _si_code: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_code vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ _si_code: ::c_int,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +_si_code vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ _si_code: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_code vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ _si_code: ::c_int,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +_si_code vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ _si_code: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_si_value +_si_code vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ _si_code: ::c_int,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +_si_code vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ _si_code: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_si_value +_si_errno vendor/libc/src/unix/bsd/apple/mod.rs /^ _si_errno: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_errno vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _si_errno: ::c_int,$/;" m struct:siginfo_t::si_status::siginfo_timer +_si_errno vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _si_errno: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_errno vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ _si_errno: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_errno vendor/libc/src/unix/linux_like/android/mod.rs /^ _si_errno: ::c_int,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +_si_errno vendor/libc/src/unix/linux_like/android/mod.rs /^ _si_errno: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_errno vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ _si_errno: ::c_int,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +_si_errno vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ _si_errno: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_errno vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ _si_errno: ::c_int,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +_si_errno vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ _si_errno: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_si_value +_si_errno vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ _si_errno: ::c_int,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +_si_errno vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ _si_errno: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_si_value +_si_overrun vendor/libc/src/unix/linux_like/android/mod.rs /^ _si_overrun: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_overrun vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ _si_overrun: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_overrun vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ _si_overrun: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_si_value +_si_overrun vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ _si_overrun: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_si_value +_si_pid vendor/libc/src/unix/bsd/apple/mod.rs /^ _si_pid: ::pid_t,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_signo vendor/libc/src/unix/bsd/apple/mod.rs /^ _si_signo: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_signo vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _si_signo: ::c_int,$/;" m struct:siginfo_t::si_status::siginfo_timer +_si_signo vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _si_signo: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_signo vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ _si_signo: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_signo vendor/libc/src/unix/linux_like/android/mod.rs /^ _si_signo: ::c_int,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +_si_signo vendor/libc/src/unix/linux_like/android/mod.rs /^ _si_signo: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_signo vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ _si_signo: ::c_int,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +_si_signo vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ _si_signo: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_signo vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ _si_signo: ::c_int,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +_si_signo vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ _si_signo: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_si_value +_si_signo vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ _si_signo: ::c_int,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +_si_signo vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ _si_signo: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_si_value +_si_status vendor/libc/src/unix/bsd/apple/mod.rs /^ _si_status: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_tid vendor/libc/src/unix/linux_like/android/mod.rs /^ _si_tid: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_tid vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ _si_tid: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_timer +_si_timerid vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ _si_timerid: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_si_value +_si_timerid vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ _si_timerid: ::c_int,$/;" m struct:siginfo_t::si_value::siginfo_si_value +_si_uid vendor/libc/src/unix/bsd/apple/mod.rs /^ _si_uid: ::uid_t,$/;" m struct:siginfo_t::si_value::siginfo_timer +_sifields builtins_rust/wait/src/signal.rs /^ pub _sifields: siginfo_t__bindgen_ty_1,$/;" m struct:siginfo_t +_sifields r_bash/src/lib.rs /^ pub _sifields: siginfo_t__bindgen_ty_1,$/;" m struct:siginfo_t +_sifields r_glob/src/lib.rs /^ pub _sifields: siginfo_t__bindgen_ty_1,$/;" m struct:siginfo_t +_sifields r_readline/src/lib.rs /^ pub _sifields: siginfo_t__bindgen_ty_1,$/;" m struct:siginfo_t +_sigev_un builtins_rust/wait/src/signal.rs /^ pub _sigev_un: sigevent__bindgen_ty_1,$/;" m struct:sigevent +_sigev_un r_bash/src/lib.rs /^ pub _sigev_un: sigevent__bindgen_ty_1,$/;" m struct:sigevent +_sigev_un r_glob/src/lib.rs /^ pub _sigev_un: sigevent__bindgen_ty_1,$/;" m struct:sigevent +_sigev_un r_readline/src/lib.rs /^ pub _sigev_un: sigevent__bindgen_ty_1,$/;" m struct:sigevent +_sigqueue vendor/libc/src/vxworks/mod.rs /^ pub fn _sigqueue($/;" f +_st builtins_rust/wait/src/signal.rs /^ pub _st: [_fpxreg; 8usize],$/;" m struct:_fpstate +_st builtins_rust/wait/src/signal.rs /^ pub _st: [_libc_fpxreg; 8usize],$/;" m struct:_libc_fpstate +_st r_bash/src/lib.rs /^ pub _st: [_fpxreg; 8usize],$/;" m struct:_fpstate +_st r_bash/src/lib.rs /^ pub _st: [_libc_fpxreg; 8usize],$/;" m struct:_libc_fpstate +_st r_glob/src/lib.rs /^ pub _st: [_fpxreg; 8usize],$/;" m struct:_fpstate +_st r_glob/src/lib.rs /^ pub _st: [_libc_fpxreg; 8usize],$/;" m struct:_libc_fpstate +_st r_readline/src/lib.rs /^ pub _st: [_fpxreg; 8usize],$/;" m struct:_fpstate +_st r_readline/src/lib.rs /^ pub _st: [_libc_fpxreg; 8usize],$/;" m struct:_libc_fpstate +_strcompare bracecomp.c /^_strcompare (s1, s2)$/;" f file: +_sys_errlist r_bash/src/lib.rs /^ pub static mut _sys_errlist: [*const ::std::os::raw::c_char; 0usize];$/;" v +_sys_errlist r_readline/src/lib.rs /^ pub static mut _sys_errlist: [*const ::std::os::raw::c_char; 0usize];$/;" v +_sys_nerr r_bash/src/lib.rs /^ pub static mut _sys_nerr: ::std::os::raw::c_int;$/;" v +_sys_nerr r_readline/src/lib.rs /^ pub static mut _sys_nerr: ::std::os::raw::c_int;$/;" v +_sys_siglist builtins_rust/wait/src/signal.rs /^ pub static mut _sys_siglist: [*const ::std::os::raw::c_char; 65usize];$/;" v +_sys_siglist r_bash/src/lib.rs /^ pub static mut _sys_siglist: [*const ::std::os::raw::c_char; 65usize];$/;" v +_sys_siglist r_glob/src/lib.rs /^ pub static mut _sys_siglist: [*const ::std::os::raw::c_char; 65usize];$/;" v +_sys_siglist r_readline/src/lib.rs /^ pub static mut _sys_siglist: [*const ::std::os::raw::c_char; 65usize];$/;" v +_syscall builtins_rust/wait/src/signal.rs /^ pub _syscall: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_7 +_syscall r_bash/src/lib.rs /^ pub _syscall: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_7 +_syscall r_glob/src/lib.rs /^ pub _syscall: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_7 +_syscall r_readline/src/lib.rs /^ pub _syscall: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_7 +_tc_string lib/readline/terminal.c /^struct _tc_string {$/;" s file: +_to_wlower lib/sh/casemod.c /^#define _to_wlower(/;" d file: +_to_wupper lib/sh/casemod.c /^#define _to_wupper(/;" d file: +_tolower r_bash/src/lib.rs /^ pub fn _tolower(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_tolower r_glob/src/lib.rs /^ pub fn _tolower(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_tolower r_readline/src/lib.rs /^ pub fn _tolower(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_toupper r_bash/src/lib.rs /^ pub fn _toupper(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_toupper r_glob/src/lib.rs /^ pub fn _toupper(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_toupper r_readline/src/lib.rs /^ pub fn _toupper(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +_ub lib/sh/fpurge.c /^ struct __sbuf _ub; \/* ungetc buffer *\/$/;" m struct:__sfileext typeref:struct:__sbuf file: +_uid vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _uid: ::uid_t,$/;" m struct:siginfo_t::si_status::siginfo_timer +_uid vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _uid: ::uid_t,$/;" m struct:siginfo_t::si_value::siginfo_timer +_uid vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ _uid: ::uid_t,$/;" m struct:siginfo_t::si_value::siginfo_timer +_umtx_op vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn _umtx_op($/;" f +_unused r_bash/src/lib.rs /^ _unused: [u8; 0],$/;" m struct:_IO_codecvt +_unused r_bash/src/lib.rs /^ _unused: [u8; 0],$/;" m struct:_IO_marker +_unused r_bash/src/lib.rs /^ _unused: [u8; 0],$/;" m struct:_IO_wide_data +_unused r_bash/src/lib.rs /^ _unused: [u8; 0],$/;" m struct:__dirstream +_unused r_bash/src/lib.rs /^ _unused: [u8; 0],$/;" m struct:obstack +_unused r_glob/src/lib.rs /^ _unused: [u8; 0],$/;" m struct:_IO_FILE +_unused r_glob/src/lib.rs /^ _unused: [u8; 0],$/;" m struct:tm +_unused r_readline/src/lib.rs /^ _unused: [u8; 0],$/;" m struct:_IO_codecvt +_unused r_readline/src/lib.rs /^ _unused: [u8; 0],$/;" m struct:_IO_marker +_unused r_readline/src/lib.rs /^ _unused: [u8; 0],$/;" m struct:_IO_wide_data +_unused r_readline/src/lib.rs /^ _unused: [u8; 0],$/;" m struct:__dirstream +_unused r_readline/src/lib.rs /^ _unused: [u8; 0],$/;" m struct:obstack +_unused2 r_bash/src/lib.rs /^ pub _unused2: [::std::os::raw::c_char; 20usize],$/;" m struct:_IO_FILE +_unused2 r_readline/src/lib.rs /^ pub _unused2: [::std::os::raw::c_char; 20usize],$/;" m struct:_IO_FILE +_upper builtins_rust/wait/src/signal.rs /^ pub _upper: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 +_upper r_bash/src/lib.rs /^ pub _upper: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 +_upper r_glob/src/lib.rs /^ pub _upper: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 +_upper r_readline/src/lib.rs /^ pub _upper: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 +_value variables.h /^union _value {$/;" u +_value vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ _value: ::sigval,$/;" m struct:siginfo_t::si_status::siginfo_timer +_vlist r_bash/src/lib.rs /^pub struct _vlist {$/;" s +_vlist variables.h /^typedef struct _vlist {$/;" s +_vtable_offset r_bash/src/lib.rs /^ pub _vtable_offset: ::std::os::raw::c_schar,$/;" m struct:_IO_FILE +_vtable_offset r_readline/src/lib.rs /^ pub _vtable_offset: ::std::os::raw::c_schar,$/;" m struct:_IO_FILE +_w lib/sh/fpurge.c /^# define _w /;" d file: +_wide_data r_bash/src/lib.rs /^ pub _wide_data: *mut _IO_wide_data,$/;" m struct:_IO_FILE +_wide_data r_readline/src/lib.rs /^ pub _wide_data: *mut _IO_wide_data,$/;" m struct:_IO_FILE +_win_get_screensize lib/readline/terminal.c /^_win_get_screensize (int *swp, int *shp)$/;" f typeref:typename:void file: +_x vendor/async-trait/tests/test.rs /^ _x: T,$/;" m struct:issue92::Struct +_xmm builtins_rust/wait/src/signal.rs /^ pub _xmm: [_libc_xmmreg; 16usize],$/;" m struct:_libc_fpstate +_xmm builtins_rust/wait/src/signal.rs /^ pub _xmm: [_xmmreg; 16usize],$/;" m struct:_fpstate +_xmm r_bash/src/lib.rs /^ pub _xmm: [_libc_xmmreg; 16usize],$/;" m struct:_libc_fpstate +_xmm r_bash/src/lib.rs /^ pub _xmm: [_xmmreg; 16usize],$/;" m struct:_fpstate +_xmm r_glob/src/lib.rs /^ pub _xmm: [_libc_xmmreg; 16usize],$/;" m struct:_libc_fpstate +_xmm r_glob/src/lib.rs /^ pub _xmm: [_xmmreg; 16usize],$/;" m struct:_fpstate +_xmm r_readline/src/lib.rs /^ pub _xmm: [_libc_xmmreg; 16usize],$/;" m struct:_libc_fpstate +_xmm r_readline/src/lib.rs /^ pub _xmm: [_xmmreg; 16usize],$/;" m struct:_fpstate +_xmmreg builtins_rust/wait/src/signal.rs /^pub struct _xmmreg {$/;" s +_xmmreg r_bash/src/lib.rs /^pub struct _xmmreg {$/;" s +_xmmreg r_glob/src/lib.rs /^pub struct _xmmreg {$/;" s +_xmmreg r_readline/src/lib.rs /^pub struct _xmmreg {$/;" s +_xsave_hdr builtins_rust/wait/src/signal.rs /^pub struct _xsave_hdr {$/;" s +_xsave_hdr r_bash/src/lib.rs /^pub struct _xsave_hdr {$/;" s +_xsave_hdr r_glob/src/lib.rs /^pub struct _xsave_hdr {$/;" s +_xsave_hdr r_readline/src/lib.rs /^pub struct _xsave_hdr {$/;" s +_xstate builtins_rust/wait/src/signal.rs /^pub struct _xstate {$/;" s +_xstate r_bash/src/lib.rs /^pub struct _xstate {$/;" s +_xstate r_glob/src/lib.rs /^pub struct _xstate {$/;" s +_xstate r_readline/src/lib.rs /^pub struct _xstate {$/;" s +_ymmh_state builtins_rust/wait/src/signal.rs /^pub struct _ymmh_state {$/;" s +_ymmh_state r_bash/src/lib.rs /^pub struct _ymmh_state {$/;" s +_ymmh_state r_glob/src/lib.rs /^pub struct _ymmh_state {$/;" s +_ymmh_state r_readline/src/lib.rs /^pub struct _ymmh_state {$/;" s +`no_std` vendor/rustc-hash/README.md /^### `no_std`$/;" S section:rustc-hash""Usage +`self_cell!` vendor/self_cell/README.md /^# `self_cell!`$/;" c +`std` extensions vendor/stdext/README.md /^# `std` extensions$/;" c +`stdext` changelog vendor/stdext/CHANGELOG.md /^# `stdext` changelog$/;" c +a lib/sh/mktime.c /^ struct tm *a;$/;" v typeref:struct:tm * file: +a variables.h /^ ARRAY *a; \/* array *\/$/;" m union:_value typeref:typename:ARRAY * +a vendor/async-trait/tests/test.rs /^ async fn a(_b: u8, c: u8) -> u8 {$/;" P implementation:issue129::TestStruct +a vendor/async-trait/tests/test.rs /^ async fn a(_b: u8, c: u8) -> u8 {$/;" P interface:issue129::TestTrait +a vendor/async-trait/tests/test.rs /^ async fn a(self) {$/;" P implementation:test_self_in_macro::String +a vendor/async-trait/tests/test.rs /^ async fn a(self);$/;" P interface:test_self_in_macro::Trait +a vendor/async-trait/tests/test.rs /^ impl<'a> Trait2 for &'a () {$/;" c module:issue28 +a vendor/bitflags/tests/compile-pass/visibility/pub_in.rs /^mod a {$/;" n +a vendor/futures/tests_disabled/bilock.rs /^ a: Option>,$/;" m struct:concurrent::Increment +a vendor/libloading/src/test_helpers.rs /^ a: u64,$/;" m struct:S +a vendor/libloading/tests/functions.rs /^ a: u64,$/;" m struct:S +a vendor/memoffset/src/offset_of.rs /^ a: u32,$/;" m struct:tests::const_fn_offset::test_fn::Foo +a vendor/memoffset/src/offset_of.rs /^ a: u32,$/;" m struct:tests::const_offset::Foo +a vendor/memoffset/src/offset_of.rs /^ a: u32,$/;" m struct:tests::const_offset_interior_mutable::Foo +a vendor/memoffset/src/offset_of.rs /^ a: u32,$/;" m struct:tests::offset_simple::Foo +a vendor/memoffset/src/offset_of.rs /^ a: u32,$/;" m struct:tests::offset_simple_packed::Foo +a vendor/memoffset/src/offset_of.rs /^ a: u32,$/;" m struct:tests::test_raw_field::Foo +a vendor/memoffset/src/span_of.rs /^ a: u32,$/;" m struct:tests::span_forms::Florp +a vendor/memoffset/src/span_of.rs /^ a: u32,$/;" m struct:tests::span_simple::Foo +a vendor/memoffset/src/span_of.rs /^ a: u32,$/;" m struct:tests::span_simple_packed::Foo +a vendor/thiserror/src/aserror.rs /^impl<'a> AsDynError<'a> for dyn Error + 'a {$/;" c +a vendor/thiserror/src/aserror.rs /^impl<'a> AsDynError<'a> for dyn Error + Send + 'a {$/;" c +a vendor/thiserror/src/aserror.rs /^impl<'a> AsDynError<'a> for dyn Error + Send + Sync + 'a {$/;" c +a vendor/thiserror/src/aserror.rs /^impl<'a> AsDynError<'a> for dyn Error + Send + Sync + UnwindSafe + 'a {$/;" c +a vendor/thiserror/src/aserror.rs /^impl<'a> Sealed for dyn Error + 'a {}$/;" c +a vendor/thiserror/src/aserror.rs /^impl<'a> Sealed for dyn Error + Send + 'a {}$/;" c +a vendor/thiserror/src/aserror.rs /^impl<'a> Sealed for dyn Error + Send + Sync + 'a {}$/;" c +a vendor/thiserror/src/aserror.rs /^impl<'a> Sealed for dyn Error + Send + Sync + UnwindSafe + 'a {}$/;" c +a vendor/thiserror/tests/test_display.rs /^ a: usize,$/;" m struct:test_mixed::Error +a vendor/thiserror/tests/ui/duplicate-struct-source.rs /^ a: std::io::Error,$/;" m struct:ErrorStruct +a64l r_bash/src/lib.rs /^ pub fn a64l(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;$/;" f +a64l r_glob/src/lib.rs /^ pub fn a64l(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;$/;" f +a64l r_readline/src/lib.rs /^ pub fn a64l(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;$/;" f +a64l vendor/libc/src/solid/mod.rs /^ pub fn a64l(arg1: *const c_char) -> c_long;$/;" f +aa_size_ok lib/malloc/x386-alloca.s /^aa_size_ok:$/;" l +abbrev_list support/man2html.c /^static char *abbrev_list[] = {$/;" v typeref:typename:char * [] file: +abort r_bash/src/lib.rs /^ pub fn abort();$/;" f +abort r_glob/src/lib.rs /^ pub fn abort();$/;" f +abort r_readline/src/lib.rs /^ pub fn abort();$/;" f +abort vendor/futures-util/src/abortable.rs /^ pub fn abort(&self) {$/;" P implementation:AbortHandle +abort vendor/futures-util/src/stream/futures_unordered/abort.rs /^pub(super) fn abort(s: &str) -> ! {$/;" f +abort vendor/futures-util/src/stream/futures_unordered/mod.rs /^mod abort;$/;" n +abort vendor/libc/src/fuchsia/mod.rs /^ pub fn abort() -> !;$/;" f +abort vendor/libc/src/solid/mod.rs /^ pub fn abort() -> !;$/;" f +abort vendor/libc/src/unix/mod.rs /^ pub fn abort() -> !;$/;" f +abort vendor/libc/src/vxworks/mod.rs /^ pub fn abort() -> !;$/;" f +abort vendor/libc/src/wasi.rs /^ pub fn abort() -> !;$/;" f +abort vendor/libc/src/windows/mod.rs /^ pub fn abort() -> !;$/;" f +abort_after vendor/syn/tests/common/mod.rs /^pub fn abort_after() -> usize {$/;" f +abortable vendor/futures-util/src/future/abortable.rs /^pub fn abortable(future: Fut) -> (Abortable, AbortHandle)$/;" f +abortable vendor/futures-util/src/future/mod.rs /^mod abortable;$/;" n +abortable vendor/futures-util/src/lib.rs /^mod abortable;$/;" n +abortable vendor/futures-util/src/stream/abortable.rs /^pub fn abortable(stream: St) -> (Abortable, AbortHandle)$/;" f +abortable vendor/futures-util/src/stream/mod.rs /^mod abortable;$/;" n +abortable_awakens vendor/futures/tests/future_abortable.rs /^fn abortable_awakens() {$/;" f +abortable_awakens vendor/futures/tests/stream_abortable.rs /^fn abortable_awakens() {$/;" f +abortable_resolves vendor/futures/tests/future_abortable.rs /^fn abortable_resolves() {$/;" f +abortable_resolves vendor/futures/tests/stream_abortable.rs /^fn abortable_resolves() {$/;" f +abortable_works vendor/futures/tests/future_abortable.rs /^fn abortable_works() {$/;" f +abortable_works vendor/futures/tests/stream_abortable.rs /^fn abortable_works() {$/;" f +aborted vendor/futures-util/src/abortable.rs /^ pub(crate) aborted: AtomicBool,$/;" m struct:AbortInner +abs lib/readline/search.c /^#define abs(/;" d file: +abs r_bash/src/lib.rs /^ pub fn abs(__x: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +abs r_glob/src/lib.rs /^ pub fn abs(__x: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +abs r_readline/src/lib.rs /^ pub fn abs(__x: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +abs vendor/libc/src/fuchsia/mod.rs /^ pub fn abs(i: c_int) -> c_int;$/;" f +abs vendor/libc/src/solid/mod.rs /^ pub fn abs(arg1: c_int) -> c_int;$/;" f +abs vendor/libc/src/unix/bsd/mod.rs /^ pub fn abs(i: ::c_int) -> ::c_int;$/;" f +abs vendor/libc/src/unix/haiku/mod.rs /^ pub fn abs(i: ::c_int) -> ::c_int;$/;" f +abs vendor/libc/src/unix/hermit/mod.rs /^ pub fn abs(i: ::c_int) -> ::c_int;$/;" f +abs vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn abs(i: ::c_int) -> ::c_int;$/;" f +abs vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn abs(i: ::c_int) -> ::c_int;$/;" f +abs vendor/libc/src/unix/newlib/mod.rs /^ pub fn abs(i: ::c_int) -> ::c_int;$/;" f +abs vendor/libc/src/unix/solarish/mod.rs /^ pub fn abs(i: ::c_int) -> ::c_int;$/;" f +abs vendor/libc/src/wasi.rs /^ pub fn abs(i: c_int) -> c_int;$/;" f +abs vendor/libc/src/windows/mod.rs /^ pub fn abs(i: c_int) -> c_int;$/;" f +absolute support/texi2dvi /^absolute ()$/;" f +absolute_filenames support/texi2dvi /^absolute_filenames ()$/;" f +absolute_pathname builtins_rust/cd/src/lib.rs /^ fn absolute_pathname(str: *const c_char) -> i32;$/;" f +absolute_pathname builtins_rust/source/src/lib.rs /^ fn absolute_pathname(path: *const c_char) -> i32;$/;" f +absolute_pathname general.c /^absolute_pathname (string)$/;" f +absolute_pathname r_bash/src/lib.rs /^ pub fn absolute_pathname(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +absolute_pathname r_glob/src/lib.rs /^ pub fn absolute_pathname(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +absolute_pathname r_readline/src/lib.rs /^ pub fn absolute_pathname(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +absolute_program builtins_rust/enable/src/lib.rs /^ fn absolute_program(_: *const libc::c_char) -> libc::c_int;$/;" f +absolute_program builtins_rust/exec/src/lib.rs /^ fn absolute_program(string: *const c_char) -> i32;$/;" f +absolute_program builtins_rust/hash/src/lib.rs /^ fn absolute_program(string: *const c_char) -> i32;$/;" f +absolute_program builtins_rust/type/src/lib.rs /^ fn absolute_program(program: *const libc::c_char) -> i32;$/;" f +absolute_program general.c /^absolute_program (string)$/;" f +absolute_program r_bash/src/lib.rs /^ pub fn absolute_program(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +absolute_program r_glob/src/lib.rs /^ pub fn absolute_program(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +absolute_program r_readline/src/lib.rs /^ pub fn absolute_program(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +abstract_sun_path vendor/nix/src/sys/socket/addr.rs /^ fn abstract_sun_path() {$/;" f module:tests::unixaddr +ac_fn_c_check_decl configure /^ac_fn_c_check_decl ()$/;" f +ac_fn_c_check_func configure /^ac_fn_c_check_func ()$/;" f +ac_fn_c_check_header_compile configure /^ac_fn_c_check_header_compile ()$/;" f +ac_fn_c_check_header_mongrel configure /^ac_fn_c_check_header_mongrel ()$/;" f +ac_fn_c_check_member configure /^ac_fn_c_check_member ()$/;" f +ac_fn_c_check_type configure /^ac_fn_c_check_type ()$/;" f +ac_fn_c_compute_int configure /^ac_fn_c_compute_int ()$/;" f +ac_fn_c_try_compile configure /^ac_fn_c_try_compile ()$/;" f +ac_fn_c_try_cpp configure /^ac_fn_c_try_cpp ()$/;" f +ac_fn_c_try_link configure /^ac_fn_c_try_link ()$/;" f +ac_fn_c_try_run configure /^ac_fn_c_try_run ()$/;" f +accctrl vendor/winapi/src/um/mod.rs /^#[cfg(feature = "accctrl")] pub mod accctrl;$/;" n +accept vendor/libc/src/fuchsia/mod.rs /^ pub fn accept(socket: ::c_int, address: *mut sockaddr, address_len: *mut socklen_t) -> ::c_i/;" f +accept vendor/libc/src/unix/mod.rs /^ pub fn accept(socket: ::c_int, address: *mut sockaddr, address_len: *mut socklen_t) -> ::c_i/;" f +accept vendor/libc/src/vxworks/mod.rs /^ pub fn accept(s: ::c_int, addr: *mut ::sockaddr, addrlen: *mut ::socklen_t) -> ::c_int;$/;" f +accept vendor/libc/src/windows/mod.rs /^ pub fn accept(s: SOCKET, addr: *mut ::sockaddr, addrlen: *mut ::c_int) -> SOCKET;$/;" f +accept vendor/nix/src/sys/socket/mod.rs /^pub fn accept(sockfd: RawFd) -> Result {$/;" f +accept vendor/winapi/src/um/winsock2.rs /^ pub fn accept($/;" f +accept4 vendor/libc/src/fuchsia/mod.rs /^ pub fn accept4($/;" f +accept4 vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn accept4($/;" f +accept4 vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn accept4($/;" f +accept4 vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn accept4($/;" f +accept4 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn accept4($/;" f +accept4 vendor/libc/src/unix/solarish/mod.rs /^ pub fn accept4($/;" f +accept4 vendor/nix/src/sys/socket/mod.rs /^pub fn accept4(sockfd: RawFd, flags: SockFlag) -> Result {$/;" f +accept_as_ident vendor/syn/src/ident.rs /^fn accept_as_ident(ident: &Ident) -> bool {$/;" f +accepted_languages vendor/fluent-langneg/src/lib.rs /^pub mod accepted_languages;$/;" n +accepts_any_integer vendor/stdext/src/num/integer.rs /^ fn accepts_any_integer(a: I, b: I) -> u32 {$/;" f module:tests +access r_bash/src/lib.rs /^ pub fn access($/;" f +access r_glob/src/lib.rs /^ pub fn access($/;" f +access r_readline/src/lib.rs /^ pub fn access($/;" f +access vendor/libc/src/fuchsia/mod.rs /^ pub fn access(path: *const c_char, amode: ::c_int) -> ::c_int;$/;" f +access vendor/libc/src/solid/mod.rs /^ pub fn access(arg1: *const c_char, arg2: c_int) -> c_int;$/;" f +access vendor/libc/src/unix/mod.rs /^ pub fn access(path: *const c_char, amode: ::c_int) -> ::c_int;$/;" f +access vendor/libc/src/vxworks/mod.rs /^ pub fn access(path: *const c_char, amode: ::c_int) -> ::c_int;$/;" f +access vendor/libc/src/wasi.rs /^ pub fn access(path: *const c_char, amode: ::c_int) -> ::c_int;$/;" f +access vendor/libc/src/windows/mod.rs /^ pub fn access(path: *const c_char, amode: ::c_int) -> ::c_int;$/;" f +access_time mailcheck.c /^ time_t access_time;$/;" m struct:_fileinfo typeref:typename:time_t file: +accessors vendor/nix/src/sys/socket/addr.rs /^macro_rules! accessors {$/;" M +acct r_bash/src/lib.rs /^ pub fn acct(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +acct r_glob/src/lib.rs /^ pub fn acct(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +acct r_readline/src/lib.rs /^ pub fn acct(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +acct vendor/libc/src/fuchsia/mod.rs /^ pub fn acct(filename: *const ::c_char) -> ::c_int;$/;" f +acct vendor/libc/src/unix/bsd/mod.rs /^ pub fn acct(filename: *const ::c_char) -> ::c_int;$/;" f +acct vendor/libc/src/unix/linux_like/mod.rs /^ pub fn acct(filename: *const ::c_char) -> ::c_int;$/;" f +acct vendor/libc/src/unix/solarish/mod.rs /^ pub fn acct(filename: *const ::c_char) -> ::c_int;$/;" f +aclapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "aclapi")] pub mod aclapi;$/;" n +acquire_sem vendor/libc/src/unix/haiku/native.rs /^ pub fn acquire_sem(id: sem_id) -> status_t;$/;" f +acquire_sem_etc vendor/libc/src/unix/haiku/native.rs /^ pub fn acquire_sem_etc(id: sem_id, count: i32, flags: u32, timeout: bigtime_t) -> status_t;$/;" f +act_like_sh shell.c /^static int act_like_sh;$/;" v typeref:typename:int file: +actflag builtins_rust/complete/src/lib.rs /^ actflag: libc::c_ulong,$/;" m struct:_compacts +action builtins_rust/cd/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:PATTERN_LIST +action builtins_rust/cd/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/cd/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/cd/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/cd/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/command/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/command/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/command/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:pattern_list +action builtins_rust/command/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/command/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/common/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:PATTERN_LIST +action builtins_rust/common/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/common/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/common/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/common/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/complete/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:PATTERN_LIST +action builtins_rust/complete/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/complete/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/complete/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/complete/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/declare/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:PATTERN_LIST +action builtins_rust/declare/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/declare/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/declare/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/declare/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/fc/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:PATTERN_LIST +action builtins_rust/fc/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/fc/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/fc/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/fc/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/fg_bg/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:PATTERN_LIST +action builtins_rust/fg_bg/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/fg_bg/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/fg_bg/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/fg_bg/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/getopts/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:PATTERN_LIST +action builtins_rust/getopts/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/getopts/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/getopts/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/getopts/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/jobs/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:PATTERN_LIST +action builtins_rust/jobs/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/jobs/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/jobs/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/jobs/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/kill/src/intercdep.rs /^ pub action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/kill/src/intercdep.rs /^ pub action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/kill/src/intercdep.rs /^ pub action: *mut COMMAND,$/;" m struct:pattern_list +action builtins_rust/kill/src/intercdep.rs /^ pub action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/kill/src/intercdep.rs /^ pub action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/pushd/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:PATTERN_LIST +action builtins_rust/pushd/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/pushd/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/pushd/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/pushd/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/setattr/src/intercdep.rs /^ pub action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/setattr/src/intercdep.rs /^ pub action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/setattr/src/intercdep.rs /^ pub action: *mut COMMAND,$/;" m struct:pattern_list +action builtins_rust/setattr/src/intercdep.rs /^ pub action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/setattr/src/intercdep.rs /^ pub action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/source/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:PATTERN_LIST +action builtins_rust/source/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/source/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/source/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/source/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:while_com +action builtins_rust/type/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:PATTERN_LIST +action builtins_rust/type/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:arith_for_com +action builtins_rust/type/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:for_com +action builtins_rust/type/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:select_com +action builtins_rust/type/src/lib.rs /^ action: *mut COMMAND,$/;" m struct:while_com +action command.h /^ COMMAND *action; \/* Thing to do while test is non-zero. *\/$/;" m struct:while_com typeref:typename:COMMAND * +action command.h /^ COMMAND *action; \/* Thing to execute if a pattern matches. *\/$/;" m struct:pattern_list typeref:typename:COMMAND * +action command.h /^ COMMAND *action; \/* The action to execute.$/;" m struct:for_com typeref:typename:COMMAND * +action command.h /^ COMMAND *action; \/* The action to execute.$/;" m struct:select_com typeref:typename:COMMAND * +action command.h /^ COMMAND *action;$/;" m struct:arith_for_com typeref:typename:COMMAND * +action r_bash/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:arith_for_com +action r_bash/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:for_com +action r_bash/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:pattern_list +action r_bash/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:select_com +action r_bash/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:while_com +action r_glob/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:arith_for_com +action r_glob/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:for_com +action r_glob/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:pattern_list +action r_glob/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:select_com +action r_glob/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:while_com +action r_readline/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:arith_for_com +action r_readline/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:for_com +action r_readline/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:pattern_list +action r_readline/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:select_com +action r_readline/src/lib.rs /^ pub action: *mut COMMAND,$/;" m struct:while_com +actions builtins_rust/complete/src/lib.rs /^ actions: c_ulong,$/;" m struct:COMPSPEC +actions pcomplete.h /^ unsigned long actions;$/;" m struct:compspec typeref:typename:unsigned long +actions r_bash/src/lib.rs /^ pub actions: ::std::os::raw::c_ulong,$/;" m struct:compspec +activation vendor/winapi/src/winrt/mod.rs /^#[cfg(feature = "activation")] pub mod activation;$/;" n +actname builtins_rust/complete/src/lib.rs /^ actname: *const c_char,$/;" m struct:_compacts +actopt builtins_rust/complete/src/lib.rs /^ actopt: c_int,$/;" m struct:_compacts +add vendor/memchr/src/memmem/rabinkarp.rs /^ fn add(&mut self, byte: u8) {$/;" P implementation:Hash +add vendor/nix/src/sys/time.rs /^ fn add(self, rhs: TimeSpec) -> TimeSpec {$/;" P implementation:TimeSpec +add vendor/nix/src/sys/time.rs /^ fn add(self, rhs: TimeVal) -> TimeVal {$/;" P implementation:TimeVal +add_alias alias.c /^add_alias (name, value)$/;" f +add_alias builtins_rust/alias/src/lib.rs /^ fn add_alias(_: *mut libc::c_char, _: *mut libc::c_char);$/;" f +add_alias r_bash/src/lib.rs /^ pub fn add_alias(arg1: *mut ::std::os::raw::c_char, arg2: *mut ::std::os::raw::c_char);$/;" f +add_assign vendor/syn/src/bigint.rs /^ fn add_assign(&mut self, mut increment: u8) {$/;" P implementation:BigInt +add_days vendor/stdext/src/duration.rs /^ fn add_days(self, days: u64) -> Duration;$/;" P interface:DurationExt +add_days vendor/stdext/src/duration.rs /^ fn add_days(self, days: u64) -> Self {$/;" P implementation:Duration +add_documentation builtins/mkbuiltins.c /^add_documentation (defs, line)$/;" f +add_error vendor/fluent-bundle/src/resolver/scope.rs /^ pub fn add_error(&mut self, error: ResolverError) {$/;" P implementation:Scope +add_exec_redirect redir.c /^add_exec_redirect (dummy_redirect)$/;" f file: +add_fifo_list subst.c /^add_fifo_list (fd)$/;" f file: +add_fifo_list subst.c /^add_fifo_list (pathname)$/;" f file: +add_file vendor/proc-macro2/src/fallback.rs /^ fn add_file(&mut self, name: &str, src: &str) -> Span {$/;" P implementation:SourceMap +add_function vendor/fluent-bundle/src/bundle.rs /^ pub fn add_function(&mut self, id: &str, func: F) -> Result<(), FluentError>$/;" P implementation:FluentBundle +add_functions vendor/fluent-bundle/benches/resolver.rs /^fn add_functions(name: &'static str, bundle: &mut FluentBundle) {$/;" f +add_functions vendor/fluent-bundle/benches/resolver_iai.rs /^fn add_functions(name: &'static str, bundle: &mut FluentBundle) {$/;" f +add_history lib/readline/history.c /^add_history (const char *string)$/;" f typeref:typename:void +add_history r_bashhist/src/lib.rs /^ fn add_history(_: *const c_char);$/;" f +add_history r_readline/src/lib.rs /^ pub fn add_history(arg1: *const ::std::os::raw::c_char);$/;" f +add_history_time lib/readline/history.c /^add_history_time (const char *string)$/;" f typeref:typename:void +add_history_time r_readline/src/lib.rs /^ pub fn add_history_time(arg1: *const ::std::os::raw::c_char);$/;" f +add_host_name bashline.c /^add_host_name (name)$/;" f file: +add_hours vendor/stdext/src/duration.rs /^ fn add_hours(self, hours: u64) -> Duration;$/;" P interface:DurationExt +add_hours vendor/stdext/src/duration.rs /^ fn add_hours(self, hours: u64) -> Self {$/;" P implementation:Duration +add_links support/man2html.c /^add_links(char *c)$/;" f typeref:typename:void file: +add_mail_file mailcheck.c /^add_mail_file (file, msg)$/;" f file: +add_methods vendor/stdext/src/duration.rs /^ fn add_methods() {$/;" f module:tests +add_micros vendor/stdext/src/duration.rs /^ fn add_micros(self, micros: u64) -> Duration;$/;" P interface:DurationExt +add_micros vendor/stdext/src/duration.rs /^ fn add_micros(self, micros: u64) -> Self {$/;" P implementation:Duration +add_millis vendor/stdext/src/duration.rs /^ fn add_millis(self, millis: u64) -> Duration;$/;" P interface:DurationExt +add_millis vendor/stdext/src/duration.rs /^ fn add_millis(self, millis: u64) -> Self {$/;" P implementation:Duration +add_minutes vendor/stdext/src/duration.rs /^ fn add_minutes(self, minutes: u64) -> Duration;$/;" P interface:DurationExt +add_minutes vendor/stdext/src/duration.rs /^ fn add_minutes(self, minutes: u64) -> Self {$/;" P implementation:Duration +add_nanos vendor/stdext/src/duration.rs /^ fn add_nanos(self, nanos: u64) -> Duration;$/;" P interface:DurationExt +add_nanos vendor/stdext/src/duration.rs /^ fn add_nanos(self, nanos: u64) -> Self {$/;" P implementation:Duration +add_or_supercede_exported_var r_bash/src/lib.rs /^ pub fn add_or_supercede_exported_var($/;" f +add_or_supercede_exported_var variables.c /^add_or_supercede_exported_var (assign, do_alloc)$/;" f +add_person vendor/elsa/examples/mutable_arena.rs /^ fn add_person($/;" P implementation:Arena +add_pid nojobs.c /^add_pid (pid, async)$/;" f file: +add_process jobs.c /^add_process (name, pid)$/;" f file: +add_process r_jobs/src/lib.rs /^unsafe extern "C" fn add_process(mut name: *mut c_char, mut pid: pid_t) {$/;" f +add_resource vendor/fluent-bundle/src/bundle.rs /^ pub fn add_resource(&mut self, r: R) -> Result<(), Vec>$/;" P implementation:FluentBundle +add_resource_id vendor/fluent-fallback/src/localization.rs /^ pub fn add_resource_id>(&mut self, res_id: T) {$/;" f +add_resource_ids vendor/fluent-fallback/src/localization.rs /^ pub fn add_resource_ids(&mut self, res_ids: Vec) {$/;" f +add_resource_overriding vendor/fluent-bundle/src/bundle.rs /^ pub fn add_resource_overriding(&mut self, r: R)$/;" P implementation:FluentBundle +add_secs vendor/stdext/src/duration.rs /^ fn add_secs(self, seconds: u64) -> Duration;$/;" P interface:DurationExt +add_secs vendor/stdext/src/duration.rs /^ fn add_secs(self, seconds: u64) -> Self {$/;" P implementation:Duration +add_shopt_to_alist shell.c /^add_shopt_to_alist (opt, on_or_off)$/;" f file: +add_string_to_list make_cmd.h /^#define add_string_to_list(/;" d +add_temp_array_to_env variables.c /^add_temp_array_to_env (temp_array, do_alloc, do_supercede)$/;" f file: +add_thing vendor/elsa/examples/arena.rs /^ fn add_thing($/;" P implementation:Arena +add_to_export_env variables.c /^#define add_to_export_env(/;" d file: +add_to_hash vendor/rustc-hash/src/lib.rs /^ fn add_to_hash(&mut self, i: usize) {$/;" P implementation:FxHasher +add_to_index support/man2html.c /^add_to_index(int level, char *item)$/;" f typeref:typename:void file: +add_undo_close_redirect redir.c /^add_undo_close_redirect (fd)$/;" f file: +add_undo_redirect redir.c /^add_undo_redirect (fd, ri, fdbase)$/;" f file: +add_unwind_protect builtins_rust/command/src/lib.rs /^ fn add_unwind_protect();$/;" f +add_unwind_protect builtins_rust/fc/src/lib.rs /^ fn add_unwind_protect(f: Functions, args: *mut c_char);$/;" f +add_unwind_protect builtins_rust/jobs/src/lib.rs /^ fn add_unwind_protect(_: unsafe extern "C" fn(command: *mut COMMAND), ...);$/;" f +add_unwind_protect builtins_rust/read/src/intercdep.rs /^ pub fn add_unwind_protect(f : *mut c_void,...);$/;" f +add_unwind_protect builtins_rust/source/src/lib.rs /^ fn add_unwind_protect(f: Functions, args: *mut c_char);$/;" f +add_unwind_protect r_bash/src/lib.rs /^ pub fn add_unwind_protect();$/;" f +add_unwind_protect r_jobs/src/lib.rs /^ fn add_unwind_protect(cleanup:*mut Function, arg:*mut c_char);$/;" f +add_unwind_protect r_print_cmd/src/lib.rs /^ fn add_unwind_protect(cleanup:*mut Function, arg:*mut c_char);$/;" f +add_unwind_protect unwind_prot.c /^add_unwind_protect (cleanup, arg)$/;" f +add_unwind_protect_internal unwind_prot.c /^add_unwind_protect_internal (cleanup, arg)$/;" f file: +add_watch vendor/nix/src/sys/inotify.rs /^ pub fn add_watch(self,$/;" P implementation:Inotify +addblanks mksyntax.c /^addblanks ()$/;" f typeref:typename:void file: +addcchar mksyntax.c /^addcchar (c, flag)$/;" f file: +addcstr mksyntax.c /^addcstr (str, flag)$/;" f file: +addmntent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn addmntent(stream: *mut ::FILE, mnt: *const ::mntent) -> ::c_int;$/;" f +addr vendor/libc/src/unix/solarish/mod.rs /^ addr: *mut ::c_void,$/;" m struct:siginfo_fault +addr vendor/nix/src/sys/socket/mod.rs /^mod addr;$/;" n +addr vendor/once_cell/src/imp_std.rs /^ pub(crate) fn addr(ptr: *mut T) -> usize$/;" f module:strict +address lib/intl/dcigettext.c /^ void *address;$/;" m struct:block_list typeref:typename:void * file: +address vendor/nix/src/ifaddrs.rs /^ pub address: Option,$/;" m struct:InterfaceAddress +addtimeval lib/sh/timeval.c /^addtimeval (d, t1, t2)$/;" f +adhoc vendor/winapi/src/um/mod.rs /^#[cfg(feature = "adhoc")] pub mod adhoc;$/;" n +adjtime r_bash/src/lib.rs /^ pub fn adjtime(__delta: *const timeval, __olddelta: *mut timeval) -> ::std::os::raw::c_int;$/;" f +adjtime r_glob/src/lib.rs /^ pub fn adjtime(__delta: *const timeval, __olddelta: *mut timeval) -> ::std::os::raw::c_int;$/;" f +adjtime r_readline/src/lib.rs /^ pub fn adjtime(__delta: *const timeval, __olddelta: *mut timeval) -> ::std::os::raw::c_int;$/;" f +adjtimex vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn adjtimex(buf: *mut timex) -> ::c_int;$/;" f +adjtimex vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn adjtimex(buf: *mut ::timex) -> ::c_int;$/;" f +adjust_shell_level builtins_rust/exec/src/lib.rs /^ fn adjust_shell_level(change: i32);$/;" f +adjust_shell_level r_bash/src/lib.rs /^ pub fn adjust_shell_level(arg1: ::std::os::raw::c_int);$/;" f +adjust_shell_level variables.c /^adjust_shell_level (change)$/;" f +advance test.c /^#define advance(/;" d file: +advance vendor/proc-macro2/src/parse.rs /^ pub fn advance(&self, bytes: usize) -> Cursor<'a> {$/;" P implementation:Cursor +advance_step_cursor vendor/syn/src/parse.rs /^pub(crate) fn advance_step_cursor<'c, 'a>(proof: StepCursor<'c, 'a>, to: Cursor<'c>) -> Cursor<'/;" f +advance_to vendor/syn/src/discouraged.rs /^ fn advance_to(&self, fork: &Self) {$/;" P implementation:ParseBuffer +advance_to vendor/syn/src/discouraged.rs /^ fn advance_to(&self, fork: &Self);$/;" P interface:Speculative +affinity vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^ pub affinity: l4_sched_cpu_set_t,$/;" m struct:pthread_attr_t +afs configure.ac /^AC_ARG_WITH(afs, AC_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval)$/;" w +after vendor/proc-macro2/src/fallback.rs /^ pub fn after(&self) -> Span {$/;" P implementation:Span +after vendor/proc-macro2/src/lib.rs /^ pub fn after(&self) -> Span {$/;" P implementation:Span +after vendor/proc-macro2/src/wrapper.rs /^ pub fn after(&self) -> Span {$/;" P implementation:Span +after_start vendor/futures-executor/src/thread_pool.rs /^ after_start: Option>,$/;" m struct:ThreadPoolBuilder +after_start vendor/futures-executor/src/thread_pool.rs /^ pub fn after_start(&mut self, f: F) -> &mut Self$/;" P implementation:ThreadPoolBuilder +aio_cancel vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_cancel vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_cancel vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_cancel vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_cancel_all vendor/nix/src/sys/aio.rs /^pub fn aio_cancel_all(fd: RawFd) -> Result {$/;" f +aio_error vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn aio_error(aiocbp: *const aiocb) -> ::c_int;$/;" f +aio_error vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn aio_error(aiocbp: *const aiocb) -> ::c_int;$/;" f +aio_error vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn aio_error(aiocbp: *const aiocb) -> ::c_int;$/;" f +aio_error vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn aio_error(aiocbp: *const aiocb) -> ::c_int;$/;" f +aio_fsync vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_fsync vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_fsync vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_fsync vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_fsync vendor/nix/test/sys/test_aio.rs /^mod aio_fsync {$/;" n +aio_methods vendor/nix/src/sys/aio.rs /^macro_rules! aio_methods {$/;" M +aio_read vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_read vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_read vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_read vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_read vendor/nix/test/sys/test_aio.rs /^mod aio_read {$/;" n +aio_readv vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn aio_readv(aiocbp: *mut ::aiocb) -> ::c_int;$/;" f +aio_readv vendor/nix/test/sys/test_aio.rs /^mod aio_readv {$/;" n +aio_return vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t;$/;" f +aio_return vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t;$/;" f +aio_return vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t;$/;" f +aio_return vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t;$/;" f +aio_return vendor/nix/src/sys/aio.rs /^ fn aio_return(mut self: Pin<&mut Self>) -> Result {$/;" P implementation:AioCb +aio_return vendor/nix/src/sys/aio.rs /^ fn aio_return(self: Pin<&mut Self>) -> Result<()> {$/;" P implementation:AioFsync +aio_return vendor/nix/src/sys/aio.rs /^ fn aio_return(self: Pin<&mut Self>) -> Result;$/;" P interface:Aio +aio_suspend vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn aio_suspend($/;" f +aio_suspend vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn aio_suspend($/;" f +aio_suspend vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn aio_suspend($/;" f +aio_suspend vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn aio_suspend($/;" f +aio_suspend vendor/nix/src/sys/aio.rs /^pub fn aio_suspend($/;" f +aio_waitcomplete vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn aio_waitcomplete(iocbp: *mut *mut aiocb, timeout: *mut ::timespec) -> ::c_int;$/;" f +aio_waitcomplete vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn aio_waitcomplete(iocbp: *mut *mut aiocb, timeout: *mut ::timespec) -> ::ssize_t;$/;" f +aio_write vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_write vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_write vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_write vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int;$/;" f +aio_write vendor/nix/test/sys/test_aio.rs /^mod aio_write {$/;" n +aio_writev vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn aio_writev(aiocbp: *mut ::aiocb) -> ::c_int;$/;" f +aio_writev vendor/nix/test/sys/test_aio.rs /^mod aio_writev {$/;" n +aiocb vendor/nix/src/sys/aio.rs /^ aiocb: LibcAiocb,$/;" m struct:AioCb +aiocb vendor/nix/src/sys/aio.rs /^ aiocb: AioCb,$/;" m struct:AioFsync +aiocb vendor/nix/src/sys/aio.rs /^ aiocb: AioCb,$/;" m struct:AioRead +aiocb vendor/nix/src/sys/aio.rs /^ aiocb: AioCb,$/;" m struct:AioReadv +aiocb vendor/nix/src/sys/aio.rs /^ aiocb: AioCb,$/;" m struct:AioWrite +aiocb vendor/nix/src/sys/aio.rs /^ aiocb: AioCb,$/;" m struct:AioWritev +alarm r_bash/src/lib.rs /^ pub fn alarm(__seconds: ::std::os::raw::c_uint) -> ::std::os::raw::c_uint;$/;" f +alarm r_glob/src/lib.rs /^ pub fn alarm(__seconds: ::std::os::raw::c_uint) -> ::std::os::raw::c_uint;$/;" f +alarm r_readline/src/lib.rs /^ pub fn alarm(__seconds: ::std::os::raw::c_uint) -> ::std::os::raw::c_uint;$/;" f +alarm vendor/libc/src/fuchsia/mod.rs /^ pub fn alarm(seconds: ::c_uint) -> ::c_uint;$/;" f +alarm vendor/libc/src/unix/mod.rs /^ pub fn alarm(seconds: ::c_uint) -> ::c_uint;$/;" f +alarm vendor/libc/src/vxworks/mod.rs /^ pub fn alarm(seconds: ::c_uint) -> ::c_uint;$/;" f +alarm_fires vendor/nix/test/test_timer.rs /^fn alarm_fires() {$/;" f +alarm_signal_handler vendor/nix/test/test_unistd.rs /^pub extern "C" fn alarm_signal_handler(raw_signal: libc::c_int) {$/;" f +alg vendor/nix/src/sys/socket/addr.rs /^pub mod alg {$/;" n +alg_name vendor/nix/src/sys/socket/addr.rs /^ pub fn alg_name(&self) -> &CStr {$/;" P implementation:alg::AlgAddr +alg_type vendor/nix/src/sys/socket/addr.rs /^ pub fn alg_type(&self) -> &CStr {$/;" P implementation:alg::AlgAddr +alias alias.h /^typedef struct alias {$/;" s +alias builtins_rust/alias/src/lib.rs /^pub struct alias {$/;" s +alias builtins_rust/hash/src/lib.rs /^pub struct alias {$/;" s +alias builtins_rust/type/src/lib.rs /^pub struct alias {$/;" s +alias configure.ac /^AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enable/;" e +alias lib/intl/localealias.c /^ const char *alias;$/;" m struct:alias_map typeref:typename:const char * file: +alias r_bash/src/lib.rs /^pub struct alias {$/;" s +alias.o Makefile.in /^alias.o: ${BASHINCDIR}\/chartypes.h$/;" t +alias.o Makefile.in /^alias.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h command.h ${BASHINCDIR}\/stdc.h$/;" t +alias.o Makefile.in /^alias.o: general.h xmalloc.h bashtypes.h externs.h alias.h$/;" t +alias.o Makefile.in /^alias.o: pcomplete.h hashlib.h$/;" t +alias.o builtins/Makefile.in /^alias.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +alias.o builtins/Makefile.in /^alias.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h $(BASHINCDIR)\/maxpath.h$/;" t +alias.o builtins/Makefile.in /^alias.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +alias.o builtins/Makefile.in /^alias.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h /;" t +alias.o builtins/Makefile.in /^alias.o: $(topdir)\/subst.h $(topdir)\/externs.h $(srcdir)\/common.h$/;" t +alias.o builtins/Makefile.in /^alias.o: ..\/pathnames.h$/;" t +alias.o builtins/Makefile.in /^alias.o: alias.def$/;" t +alias_compare lib/intl/localealias.c /^alias_compare (map1, map2)$/;" f file: +alias_expand alias.c /^alias_expand (string)$/;" f +alias_expand r_bash/src/lib.rs /^ pub fn alias_expand(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +alias_expand_all alias.c /^int alias_expand_all = 0;$/;" v typeref:typename:int +alias_expand_line bashline.c /^alias_expand_line (count, ignore)$/;" f file: +alias_expand_word alias.c /^alias_expand_word (s)$/;" f +alias_expand_word r_bash/src/lib.rs /^ pub fn alias_expand_word(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +alias_map lib/intl/localealias.c /^struct alias_map$/;" s file: +alias_t alias.h /^} alias_t;$/;" t typeref:struct:alias +alias_t builtins_rust/type/src/lib.rs /^type alias_t = alias;$/;" t +alias_t r_bash/src/lib.rs /^pub type alias_t = alias;$/;" t +aliases alias.c /^HASH_TABLE *aliases = (HASH_TABLE *)NULL;$/;" v typeref:typename:HASH_TABLE * +aliases builtins_rust/alias/src/lib.rs /^ static mut aliases: *mut HashTable;$/;" v +aliases r_bash/src/lib.rs /^ pub static mut aliases: *mut HASH_TABLE;$/;" v +aliasing_in_get vendor/once_cell/tests/it.rs /^ fn aliasing_in_get() {$/;" f module:unsync +aliaspath lib/intl/Makefile.in /^aliaspath = $(localedir)$/;" m +align lib/malloc/alloca.c /^ char align[ALIGN_SIZE]; \/* To force sizeof(header). *\/$/;" m union:hdr typeref:typename:char[] file: +align r_bash/src/lib.rs /^ align: [Align; 0],$/;" m struct:__BindgenBitfieldUnit +align r_readline/src/lib.rs /^ align: [Align; 0],$/;" m struct:__BindgenBitfieldUnit +align support/man2html.c /^ int size, align, valign, colspan, rowspan, font, vleft, vright, space,$/;" m struct:TABLEITEM typeref:typename:int file: +aligned_alloc r_bash/src/lib.rs /^ pub fn aligned_alloc(__alignment: usize, __size: usize) -> *mut ::std::os::raw::c_void;$/;" f +aligned_alloc r_glob/src/lib.rs /^ pub fn aligned_alloc(__alignment: usize, __size: usize) -> *mut ::std::os::raw::c_void;$/;" f +aligned_alloc r_readline/src/lib.rs /^ pub fn aligned_alloc(__alignment: usize, __size: usize) -> *mut ::std::os::raw::c_void;$/;" f +aligned_alloc vendor/libc/src/solid/mod.rs /^ pub fn aligned_alloc(arg1: size_t, arg2: size_t) -> *mut c_void;$/;" f +aligned_alloc vendor/libc/src/wasi.rs /^ pub fn aligned_alloc(a: size_t, b: size_t) -> *mut c_void;$/;" f +aligned_free vendor/libc/src/windows/mod.rs /^ pub fn aligned_free(ptr: *mut ::c_void);$/;" f +aligned_malloc vendor/libc/src/windows/mod.rs /^ pub fn aligned_malloc(size: size_t, alignment: size_t) -> *mut c_void;$/;" f +alignof lib/intl/dcigettext.c /^# define alignof(/;" d file: +all Makefile.in /^all: .made$/;" t +all builtins/Makefile.in /^all: $(MKBUILTINS) libbuiltins.a $(HELPFILES_TARGET)$/;" t +all lib/glob/Makefile.in /^all: $(LIBRARY_NAME)$/;" t +all lib/glob/doc/Makefile /^all:$/;" t +all lib/intl/Makefile.in /^all: all-@USE_INCLUDED_LIBINTL@$/;" t +all lib/malloc/Makefile.in /^all: malloc$/;" t +all lib/readline/Makefile.in /^all: libreadline.a libhistory.a$/;" t +all lib/readline/examples/Makefile /^all: $(EXECUTABLES)$/;" t +all lib/sh/Makefile.in /^all: $(LIBRARY_NAME)$/;" t +all lib/termcap/Makefile.in /^all: libtermcap.a$/;" t +all lib/tilde/Makefile.in /^all: $(LIBRARY_NAME)$/;" t +all support/Makefile.in /^all: man2html$(EXEEXT)$/;" t +all vendor/futures-util/src/stream/stream/mod.rs /^ fn all(self, f: F) -> All$/;" P interface:StreamExt +all vendor/futures-util/src/stream/stream/mod.rs /^mod all;$/;" n +all vendor/nix/test/test_kmod/hello_mod/Makefile /^all:$/;" t +all-no lib/intl/Makefile.in /^all-no: all-no-@BUILD_INCLUDED_LIBINTL@$/;" t +all-no-no lib/intl/Makefile.in /^all-no-no:$/;" t +all-no-yes lib/intl/Makefile.in /^all-no-yes: libgnuintl.$la$/;" t +all-yes lib/intl/Makefile.in /^all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed$/;" t +all_aliases alias.c /^all_aliases ()$/;" f typeref:typename:alias_t ** +all_aliases builtins_rust/alias/src/lib.rs /^ fn all_aliases() -> *mut *mut AliasT;$/;" f +all_aliases builtins_rust/hash/src/lib.rs /^ fn all_aliases() -> *mut *mut AliasT;$/;" f +all_aliases r_bash/src/lib.rs /^ pub fn all_aliases() -> *mut *mut alias_t;$/;" f +all_array_variables r_bash/src/lib.rs /^ pub fn all_array_variables() -> *mut *mut SHELL_VAR;$/;" f +all_array_variables variables.c /^all_array_variables ()$/;" f typeref:typename:SHELL_VAR ** +all_digits builtins_rust/common/src/lib.rs /^ fn all_digits(string: *const c_char) -> i32;$/;" f +all_digits builtins_rust/trap/src/intercdep.rs /^ pub fn all_digits(s: *const c_char) -> c_int;$/;" f +all_digits builtins_rust/ulimit/src/lib.rs /^ fn all_digits(_: *const libc::c_char) -> i32;$/;" f +all_digits general.c /^all_digits (string)$/;" f +all_digits r_bash/src/lib.rs /^ pub fn all_digits(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +all_digits r_glob/src/lib.rs /^ pub fn all_digits(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +all_digits r_readline/src/lib.rs /^ pub fn all_digits(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +all_exported_variables r_bash/src/lib.rs /^ pub fn all_exported_variables() -> *mut *mut SHELL_VAR;$/;" f +all_exported_variables variables.c /^all_exported_variables ()$/;" f typeref:typename:SHELL_VAR ** +all_files support/texi2dvi /^all_files ()$/;" f +all_local_variables builtins_rust/setattr/src/intercdep.rs /^ pub fn all_local_variables(visible_only: c_int) -> *mut *mut SHELL_VAR; $/;" f +all_local_variables r_bash/src/lib.rs /^ pub fn all_local_variables(arg1: ::std::os::raw::c_int) -> *mut *mut SHELL_VAR;$/;" f +all_local_variables variables.c /^all_local_variables (visible_only)$/;" f +all_shell_functions builtins_rust/set/src/lib.rs /^ fn all_shell_functions() -> *mut *mut SHELL_VAR;$/;" f +all_shell_functions builtins_rust/setattr/src/intercdep.rs /^ pub fn all_shell_functions() -> *mut *mut SHELL_VAR;$/;" f +all_shell_functions r_bash/src/lib.rs /^ pub fn all_shell_functions() -> *mut *mut SHELL_VAR;$/;" f +all_shell_functions variables.c /^all_shell_functions ()$/;" f typeref:typename:SHELL_VAR ** +all_shell_variables builtins_rust/set/src/lib.rs /^ fn all_shell_variables() -> *mut *mut SHELL_VAR;$/;" f +all_shell_variables builtins_rust/setattr/src/intercdep.rs /^ pub fn all_shell_variables() -> *mut *mut SHELL_VAR;$/;" f +all_shell_variables r_bash/src/lib.rs /^ pub fn all_shell_variables() -> *mut *mut SHELL_VAR;$/;" f +all_shell_variables variables.c /^all_shell_variables ()$/;" f typeref:typename:SHELL_VAR ** +all_variables_matching_prefix r_bash/src/lib.rs /^ pub fn all_variables_matching_prefix($/;" f +all_variables_matching_prefix variables.c /^all_variables_matching_prefix (prefix)$/;" f +all_visible_functions r_bash/src/lib.rs /^ pub fn all_visible_functions() -> *mut *mut SHELL_VAR;$/;" f +all_visible_functions variables.c /^all_visible_functions ()$/;" f typeref:typename:SHELL_VAR ** +all_visible_variables r_bash/src/lib.rs /^ pub fn all_visible_variables() -> *mut *mut SHELL_VAR;$/;" f +all_visible_variables variables.c /^all_visible_variables ()$/;" f typeref:typename:SHELL_VAR ** +alloc_history_entry lib/readline/history.c /^alloc_history_entry (char *string, char *ts)$/;" f typeref:typename:HIST_ENTRY * +alloc_history_entry r_readline/src/lib.rs /^ pub fn alloc_history_entry($/;" f +alloc_lvalue expr.c /^alloc_lvalue ()$/;" f typeref:struct:lvalue * file: +alloc_mail_file mailcheck.c /^alloc_mail_file (filename, msg)$/;" f file: +alloc_pid_list nojobs.c /^alloc_pid_list ()$/;" f typeref:typename:void file: +alloc_pipeline_saver jobs.c /^alloc_pipeline_saver ()$/;" f typeref:struct:pipeline_saver * file: +alloc_pipeline_saver r_jobs/src/lib.rs /^unsafe extern "C" fn alloc_pipeline_saver() -> *mut pipeline_saver$/;" f +alloc_undo_entry lib/readline/undo.c /^alloc_undo_entry (enum undo_code what, int start, int end, char *text)$/;" f typeref:typename:UNDO_LIST * file: +alloc_word_desc make_cmd.c /^alloc_word_desc ()$/;" f typeref:typename:WORD_DESC * +alloc_word_desc r_bash/src/lib.rs /^ pub fn alloc_word_desc() -> *mut WORD_DESC;$/;" f +alloca include/memalloc.h /^# define alloca /;" d +alloca lib/intl/dcigettext.c /^# define alloca /;" d file: +alloca lib/intl/dcigettext.c /^# define alloca /;" d file: +alloca lib/intl/dcigettext.c /^# define alloca(/;" d file: +alloca lib/intl/loadmsgcat.c /^# define alloca /;" d file: +alloca lib/intl/loadmsgcat.c /^# define alloca /;" d file: +alloca lib/intl/loadmsgcat.c /^# define alloca(/;" d file: +alloca lib/intl/localealias.c /^# define alloca /;" d file: +alloca lib/intl/localealias.c /^# define alloca /;" d file: +alloca lib/intl/localealias.c /^# define alloca(/;" d file: +alloca lib/malloc/Makefile.in /^alloca: ${ALLOCA}$/;" t +alloca lib/malloc/alloca.c /^alloca (size)$/;" f +alloca lib/malloc/i386-alloca.s /^alloca:$/;" l +alloca r_bash/src/lib.rs /^ pub fn alloca(__size: usize) -> *mut ::std::os::raw::c_void;$/;" f +alloca r_glob/src/lib.rs /^ pub fn alloca(__size: usize) -> *mut ::std::os::raw::c_void;$/;" f +alloca r_readline/src/lib.rs /^ pub fn alloca(__size: usize) -> *mut ::std::os::raw::c_void;$/;" f +alloca.o lib/malloc/Makefile.in /^alloca.o: $(srcdir)\/$(ALLOCA_SOURCE)$/;" t +alloca.o lib/malloc/Makefile.in /^alloca.o: $(BUILD_DIR)\/config.h$/;" t +allocate_buffers input.c /^allocate_buffers (n)$/;" f file: +allocated xmalloc.c /^static size_t allocated;$/;" v typeref:typename:size_t file: +allocated_inodes vendor/nix/src/sys/quota.rs /^ pub fn allocated_inodes(&self) -> Option {$/;" P implementation:Dqblk +allocated_line lib/readline/rlprivate.h /^ char *allocated_line; $/;" m struct:__rl_search_context typeref:typename:char * +allocated_line r_readline/src/lib.rs /^ pub allocated_line: *mut ::std::os::raw::c_char,$/;" m struct:__rl_search_context +allocerr xmalloc.c /^allocerr (func, bytes)$/;" f file: +allow vendor/futures/tests/sink.rs /^ allow: Rc,$/;" m struct:ManualAllow +allow_null_glob_expansion builtins_rust/shopt/src/lib.rs /^ static mut allow_null_glob_expansion: i32;$/;" v +allow_null_glob_expansion subst.c /^int allow_null_glob_expansion;$/;" v typeref:typename:int +allow_std vendor/futures-util/src/io/mod.rs /^mod allow_std;$/;" n +alphabetic lib/readline/compat.c /^alphabetic (int c)$/;" f typeref:typename:int +alphasort r_bash/src/lib.rs /^ pub fn alphasort(__e1: *mut *const dirent, __e2: *mut *const dirent) -> ::std::os::raw::c_in/;" f +alphasort r_readline/src/lib.rs /^ pub fn alphasort(__e1: *mut *const dirent, __e2: *mut *const dirent) -> ::std::os::raw::c_in/;" f +alphasort64 r_bash/src/lib.rs /^ pub fn alphasort64($/;" f +alphasort64 r_readline/src/lib.rs /^ pub fn alphasort64($/;" f +already_expanded expr.c /^static int already_expanded;$/;" v typeref:typename:int file: +already_making_children jobs.c /^int already_making_children = 0;$/;" v typeref:typename:int +already_making_children nojobs.c /^int already_making_children = 0;$/;" v typeref:typename:int +already_making_children r_bash/src/lib.rs /^ pub static mut already_making_children: ::std::os::raw::c_int;$/;" v +already_making_children r_jobs/src/lib.rs /^pub static mut already_making_children: c_int = 0;$/;" v +alrm_catcher eval.c /^alrm_catcher(i)$/;" f file: +alrmbuf builtins_rust/read/src/lib.rs /^pub static mut alrmbuf: sigjmp_buf = [__jmp_buf_tag {$/;" v +ambig_ty vendor/syn/src/ty.rs /^ pub(crate) fn ambig_ty($/;" f module:parsing +ambiguous_expr vendor/syn/src/expr.rs /^ fn ambiguous_expr(input: ParseStream, allow_struct: AllowStruct) -> Result {$/;" f module:parsing +and test.c /^and ()$/;" f typeref:typename:int file: +and vendor/memchr/src/memmem/vector.rs /^ unsafe fn and(self, vector2: Self) -> __m128i {$/;" P implementation:x86sse::__m128i +and vendor/memchr/src/memmem/vector.rs /^ unsafe fn and(self, vector2: Self) -> __m256i {$/;" P implementation:x86avx::__m256i +and vendor/memchr/src/memmem/vector.rs /^ unsafe fn and(self, vector2: Self) -> v128 {$/;" P implementation:wasm_simd128::v128 +and vendor/memchr/src/memmem/vector.rs /^ unsafe fn and(self, vector2: Self) -> Self;$/;" P interface:Vector +and_then vendor/futures-util/src/future/try_future/mod.rs /^ fn and_then(self, f: F) -> AndThen$/;" P interface:TryFutureExt +and_then vendor/futures-util/src/stream/try_stream/mod.rs /^ fn and_then(self, f: F) -> AndThen$/;" P interface:TryStreamExt +and_then vendor/futures-util/src/stream/try_stream/mod.rs /^mod and_then;$/;" n +and_then vendor/futures/tests_disabled/stream.rs /^fn and_then() {$/;" f +and_then_drops_eagerly vendor/futures/tests/eager_drop.rs /^fn and_then_drops_eagerly() {$/;" f +android_set_abort_message vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn android_set_abort_message(msg: *const ::c_char);$/;" f +ansic_quote builtins_rust/printf/src/intercdep.rs /^ pub fn ansic_quote(str: *mut c_char, flags: c_int, rlen: *mut c_int) -> *mut c_char;$/;" f +ansic_quote lib/sh/strtrans.c /^ansic_quote (str, flags, rlen)$/;" f +ansic_quote r_bash/src/lib.rs /^ pub fn ansic_quote($/;" f +ansic_quote r_print_cmd/src/lib.rs /^ fn ansic_quote(str:*mut c_char, flags:c_int, rlen:*mut c_int)->*mut c_char;$/;" f +ansic_shouldquote builtins_rust/printf/src/intercdep.rs /^ pub fn ansic_shouldquote(s: *const c_char) -> c_int;$/;" f +ansic_shouldquote lib/sh/strtrans.c /^ansic_shouldquote (string)$/;" f +ansic_shouldquote r_bash/src/lib.rs /^ pub fn ansic_shouldquote(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +ansic_shouldquote r_print_cmd/src/lib.rs /^ fn ansic_shouldquote(string:*const c_char)->c_int;$/;" f +ansic_wshouldquote lib/sh/strtrans.c /^ansic_wshouldquote (string)$/;" f +ansicstr builtins_rust/echo/src/lib.rs /^ fn ansicstr($/;" f +ansicstr lib/sh/strtrans.c /^ansicstr (string, len, flags, sawc, rlen)$/;" f +ansicstr r_bash/src/lib.rs /^ pub fn ansicstr($/;" f +ansiexpand lib/sh/strtrans.c /^ansiexpand (string, start, end, lenp)$/;" f +ansiexpand r_bash/src/lib.rs /^ pub fn ansiexpand($/;" f +any vendor/futures-util/src/stream/stream/mod.rs /^ fn any(self, f: F) -> Any$/;" P interface:StreamExt +any vendor/futures-util/src/stream/stream/mod.rs /^mod any;$/;" n +any_signals_trapped r_bash/src/lib.rs /^ pub fn any_signals_trapped() -> ::std::os::raw::c_int;$/;" f +any_signals_trapped r_glob/src/lib.rs /^ pub fn any_signals_trapped() -> ::std::os::raw::c_int;$/;" f +any_signals_trapped r_readline/src/lib.rs /^ pub fn any_signals_trapped() -> ::std::os::raw::c_int;$/;" f +any_signals_trapped trap.c /^any_signals_trapped ()$/;" f typeref:typename:int +any_typein lib/readline/input.c /^#define any_typein /;" d file: +apostrophe vendor/syn/src/lifetime.rs /^ pub apostrophe: Span,$/;" m struct:Lifetime +append vendor/quote/src/ext.rs /^ fn append(&mut self, token: U)$/;" P implementation:TokenStream +append vendor/quote/src/ext.rs /^ fn append(&mut self, token: U)$/;" P interface:TokenStreamExt +append vendor/smallvec/src/lib.rs /^ pub fn append(&mut self, other: &mut SmallVec)$/;" P implementation:SmallVec +append_all vendor/quote/src/ext.rs /^ fn append_all(&mut self, iter: I)$/;" P implementation:TokenStream +append_all vendor/quote/src/ext.rs /^ fn append_all(&mut self, iter: I)$/;" P interface:TokenStreamExt +append_history lib/readline/histfile.c /^append_history (int nelements, const char *filename)$/;" f typeref:typename:int +append_history r_bashhist/src/lib.rs /^ fn append_history(_: c_int, _: *const c_char) -> c_int;$/;" f +append_history r_readline/src/lib.rs /^ pub fn append_history($/;" f +append_process jobs.c /^append_process (name, pid, status, jid)$/;" f +append_process r_bash/src/lib.rs /^ pub fn append_process($/;" f +append_process r_jobs/src/lib.rs /^pub unsafe extern "C" fn append_process($/;" f +append_separated vendor/quote/src/ext.rs /^ fn append_separated(&mut self, iter: I, op: U)$/;" P implementation:TokenStream +append_separated vendor/quote/src/ext.rs /^ fn append_separated(&mut self, iter: I, op: U)$/;" P interface:TokenStreamExt +append_terminated vendor/quote/src/ext.rs /^ fn append_terminated(&mut self, iter: I, term: U)$/;" P implementation:TokenStream +append_terminated vendor/quote/src/ext.rs /^ fn append_terminated(&mut self, iter: I, term: U)$/;" P interface:TokenStreamExt +append_to_match lib/readline/complete.c /^append_to_match (char *text, int delimiter, int quote_char, int nontrivial_match)$/;" f typeref:typename:int file: +apply_style support/texi2html /^sub apply_style {$/;" s +appmgmt vendor/winapi/src/um/mod.rs /^#[cfg(feature = "appmgmt")] pub mod appmgmt;$/;" n +arbitrary vendor/smallvec/src/arbitrary.rs /^ fn arbitrary(u: &mut Unstructured<'a>) -> arbitrary::Result {$/;" f +arbitrary vendor/smallvec/src/lib.rs /^mod arbitrary;$/;" n +arbitrary_take_rest vendor/smallvec/src/arbitrary.rs /^ fn arbitrary_take_rest(u: Unstructured<'a>) -> arbitrary::Result {$/;" f +arc vendor/futures-util/src/lock/bilock.rs /^ arc: Arc>,$/;" m struct:BiLock +arc4random vendor/libc/src/unix/bsd/mod.rs /^ pub fn arc4random() -> u32;$/;" f +arc4random vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn arc4random() -> u32;$/;" f +arc4random vendor/libc/src/wasi.rs /^ pub fn arc4random() -> u32;$/;" f +arc4random_buf vendor/libc/src/unix/bsd/mod.rs /^ pub fn arc4random_buf(buf: *mut ::c_void, size: ::size_t);$/;" f +arc4random_buf vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn arc4random_buf(__buf: *mut ::c_void, __n: ::size_t);$/;" f +arc4random_buf vendor/libc/src/wasi.rs /^ pub fn arc4random_buf(a: *mut c_void, b: size_t);$/;" f +arc4random_uniform vendor/libc/src/unix/bsd/mod.rs /^ pub fn arc4random_uniform(l: u32) -> u32;$/;" f +arc4random_uniform vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn arc4random_uniform(__upper_bound: u32) -> u32;$/;" f +arc4random_uniform vendor/libc/src/wasi.rs /^ pub fn arc4random_uniform(a: u32) -> u32;$/;" f +arc_wake vendor/futures-task/src/lib.rs /^mod arc_wake;$/;" n +arch vendor/libc/src/unix/linux_like/linux/mod.rs /^mod arch;$/;" n +arch vendor/memchr/src/tests/x86_64-soft_float.json /^ "arch": "x86_64",$/;" s +area_for vendor/libc/src/unix/haiku/native.rs /^ pub fn area_for(address: *mut ::c_void) -> area_id;$/;" f +area_id vendor/libc/src/unix/haiku/native.rs /^pub type area_id = i32;$/;" t +arg builtins_rust/ulimit/src/lib.rs /^ arg: *mut libc::c_char,$/;" m struct:_cmd +arg lib/intl/eval-plural.h /^ unsigned long int arg = plural_eval (pexp->val.args[0], n);$/;" v typeref:typename:unsigned long int +arg unwind_prot.c /^ } arg;$/;" m union:uwp typeref:struct:uwp::__anon5806582f0208 file: +arg_directory lib/readline/colors.h /^ arg_directory$/;" e enum:filetype +argc test.c /^static int argc; \/* The number of arguments present in ARGV. *\/$/;" v typeref:typename:int file: +args lib/intl/plural-exp.h /^ struct expression *args[3]; \/* Up to three arguments. *\/$/;" m union:expression::__anon93874cf1020a typeref:struct:expression * [3] +args vendor/async-trait/src/lib.rs /^mod args;$/;" n +args vendor/fluent-bundle/src/lib.rs /^mod args;$/;" n +args vendor/fluent-bundle/src/resolver/scope.rs /^ pub(super) args: Option<&'scope FluentArgs<'scope>>,$/;" m struct:Scope +args vendor/fluent-fallback/src/types.rs /^ pub args: Option>,$/;" m struct:L10nKey +args vendor/thiserror-impl/src/attr.rs /^ pub args: TokenStream,$/;" m struct:Display +argument support/man2html.c /^static char **argument = NULL;$/;" v typeref:typename:char ** file: +argv test.c /^static char **argv; \/* The argument list. *\/$/;" v typeref:typename:char ** file: +argz_count__ lib/intl/l10nflist.c /^argz_count__ (argz, len)$/;" f file: +argz_next__ lib/intl/l10nflist.c /^argz_next__ (argz, argz_len, entry)$/;" f file: +argz_stringify__ lib/intl/l10nflist.c /^argz_stringify__ (argz, len, sep)$/;" f file: +arith-for-command configure.ac /^AC_ARG_ENABLE(arith-for-command, AC_HELP_STRING([--enable-arith-for-command], [enable arithmetic/;" e +arith_com builtins_rust/cd/src/lib.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/command/src/lib.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/common/src/lib.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/complete/src/lib.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/declare/src/lib.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/fc/src/lib.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/fg_bg/src/lib.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/getopts/src/lib.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/jobs/src/lib.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/kill/src/intercdep.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/pushd/src/lib.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/setattr/src/intercdep.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/source/src/lib.rs /^pub struct arith_com {$/;" s +arith_com builtins_rust/type/src/lib.rs /^pub struct arith_com {$/;" s +arith_com command.h /^typedef struct arith_com {$/;" s +arith_com r_bash/src/lib.rs /^pub struct arith_com {$/;" s +arith_com r_glob/src/lib.rs /^pub struct arith_com {$/;" s +arith_com r_readline/src/lib.rs /^pub struct arith_com {$/;" s +arith_command parse.y /^arith_command: ARITH_CMD$/;" l +arith_for_com builtins_rust/cd/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/command/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/common/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/complete/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/declare/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/fc/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/fg_bg/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/getopts/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/jobs/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/kill/src/intercdep.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/pushd/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/setattr/src/intercdep.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/source/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com builtins_rust/type/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com command.h /^typedef struct arith_for_com {$/;" s +arith_for_com r_bash/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com r_glob/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_com r_readline/src/lib.rs /^pub struct arith_for_com {$/;" s +arith_for_command parse.y /^arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE$/;" l +arithcomp test.c /^arithcomp (s, t, op, flags)$/;" f file: +array array.h /^typedef struct array {$/;" s +array builtins/mkbuiltins.c /^ char **array; \/* The array itself. *\/$/;" m struct:__anon69e836710108 typeref:typename:char ** file: +array builtins_rust/mapfile/src/intercdep.rs /^pub struct array {$/;" s +array builtins_rust/read/src/intercdep.rs /^pub struct array {$/;" s +array lib/sh/strftime.c /^static char *array[] =$/;" v typeref:typename:char * [] file: +array r_bash/src/lib.rs /^pub struct array {$/;" s +array r_glob/src/lib.rs /^pub struct array {$/;" s +array r_readline/src/lib.rs /^pub struct array {$/;" s +array-variables configure.ac /^AC_ARG_ENABLE(array-variables, AC_HELP_STRING([--enable-array-variables], [include shell array v/;" e +array.o Makefile.in /^array.o: $(BASHINCDIR)\/ocache.h $(BASHINCDIR)\/chartypes.h$/;" t +array.o Makefile.in /^array.o: $(DEFSRC)\/common.h$/;" t +array.o Makefile.in /^array.o: $(srcdir)\/config-top.h$/;" t +array.o Makefile.in /^array.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +array.o Makefile.in /^array.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +array.o Makefile.in /^array.o: make_cmd.h subst.h sig.h pathnames.h externs.h $/;" t +array.o Makefile.in /^array.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +array.o Makefile.in /^array.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\//;" t +array_add builtins/mkbuiltins.c /^array_add (element, array)$/;" f +array_assign_list array.c /^array_assign_list (array, list)$/;" f +array_assign_list r_bash/src/lib.rs /^ pub fn array_assign_list(arg1: *mut ARRAY, arg2: *mut WORD_LIST) -> *mut ARRAY;$/;" f +array_assign_list r_glob/src/lib.rs /^ pub fn array_assign_list(arg1: *mut ARRAY, arg2: *mut WORD_LIST) -> *mut ARRAY;$/;" f +array_assign_list r_readline/src/lib.rs /^ pub fn array_assign_list(arg1: *mut ARRAY, arg2: *mut WORD_LIST) -> *mut ARRAY;$/;" f +array_assoc array.h /^enum atype {array_indexed, array_assoc}; \/* only array_indexed used *\/$/;" e enum:atype +array_cell builtins_rust/caller/src/lib.rs /^macro_rules! array_cell {$/;" M +array_cell builtins_rust/setattr/src/lib.rs /^unsafe fn array_cell(var: *mut SHELL_VAR) -> *mut ARRAY {$/;" f +array_cell variables.h /^#define array_cell(/;" d +array_concat braces.c /^array_concat (arr1, arr2)$/;" f file: +array_copy array.c /^array_copy(a)$/;" f +array_copy r_bash/src/lib.rs /^ pub fn array_copy(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_copy r_glob/src/lib.rs /^ pub fn array_copy(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_copy r_readline/src/lib.rs /^ pub fn array_copy(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_copy_element array.c /^array_copy_element(ae)$/;" f +array_copy_element r_bash/src/lib.rs /^ pub fn array_copy_element(arg1: *mut ARRAY_ELEMENT) -> *mut ARRAY_ELEMENT;$/;" f +array_copy_element r_glob/src/lib.rs /^ pub fn array_copy_element(arg1: *mut ARRAY_ELEMENT) -> *mut ARRAY_ELEMENT;$/;" f +array_copy_element r_readline/src/lib.rs /^ pub fn array_copy_element(arg1: *mut ARRAY_ELEMENT) -> *mut ARRAY_ELEMENT;$/;" f +array_create array.c /^array_create()$/;" f typeref:typename:ARRAY * +array_create builtins/mkbuiltins.c /^array_create (width)$/;" f +array_create r_bash/src/lib.rs /^ pub fn array_create() -> *mut ARRAY;$/;" f +array_create r_glob/src/lib.rs /^ pub fn array_create() -> *mut ARRAY;$/;" f +array_create r_readline/src/lib.rs /^ pub fn array_create() -> *mut ARRAY;$/;" f +array_create_element array.c /^array_create_element(indx, value)$/;" f +array_create_element r_bash/src/lib.rs /^ pub fn array_create_element($/;" f +array_create_element r_glob/src/lib.rs /^ pub fn array_create_element($/;" f +array_create_element r_readline/src/lib.rs /^ pub fn array_create_element($/;" f +array_dequote array.c /^array_dequote(array)$/;" f +array_dequote r_bash/src/lib.rs /^ pub fn array_dequote(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_dequote r_glob/src/lib.rs /^ pub fn array_dequote(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_dequote r_readline/src/lib.rs /^ pub fn array_dequote(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_dequote_escapes array.c /^array_dequote_escapes(array)$/;" f +array_dequote_escapes r_bash/src/lib.rs /^ pub fn array_dequote_escapes(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_dequote_escapes r_glob/src/lib.rs /^ pub fn array_dequote_escapes(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_dequote_escapes r_readline/src/lib.rs /^ pub fn array_dequote_escapes(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_dispose array.c /^array_dispose(a)$/;" f +array_dispose r_bash/src/lib.rs /^ pub fn array_dispose(arg1: *mut ARRAY);$/;" f +array_dispose r_glob/src/lib.rs /^ pub fn array_dispose(arg1: *mut ARRAY);$/;" f +array_dispose r_readline/src/lib.rs /^ pub fn array_dispose(arg1: *mut ARRAY);$/;" f +array_dispose_element array.c /^array_dispose_element(ae)$/;" f +array_dispose_element r_bash/src/lib.rs /^ pub fn array_dispose_element(arg1: *mut ARRAY_ELEMENT);$/;" f +array_dispose_element r_glob/src/lib.rs /^ pub fn array_dispose_element(arg1: *mut ARRAY_ELEMENT);$/;" f +array_dispose_element r_readline/src/lib.rs /^ pub fn array_dispose_element(arg1: *mut ARRAY_ELEMENT);$/;" f +array_element array.h /^typedef struct array_element {$/;" s +array_element builtins_rust/mapfile/src/intercdep.rs /^pub struct array_element {$/;" s +array_element builtins_rust/read/src/intercdep.rs /^pub struct array_element {$/;" s +array_element r_bash/src/lib.rs /^pub struct array_element {$/;" s +array_element r_glob/src/lib.rs /^pub struct array_element {$/;" s +array_element r_readline/src/lib.rs /^pub struct array_element {$/;" s +array_empty array.h /^#define array_empty(/;" d +array_empty builtins_rust/caller/src/lib.rs /^unsafe fn array_empty(a: *mut ARRAY) -> bool {$/;" f +array_expand_index arrayfunc.c /^array_expand_index (var, s, len, flags)$/;" f +array_expand_index r_bash/src/lib.rs /^ pub fn array_expand_index($/;" f +array_expand_once arrayfunc.c /^int array_expand_once = 0;$/;" v typeref:typename:int +array_expand_once r_bash/src/lib.rs /^ pub static mut array_expand_once: ::std::os::raw::c_int;$/;" v +array_first_index array.h /^#define array_first_index(/;" d +array_flush array.c /^array_flush (a)$/;" f +array_flush builtins_rust/mapfile/src/intercdep.rs /^ pub fn array_flush(a: *mut ARRAY);$/;" f +array_flush builtins_rust/read/src/intercdep.rs /^ pub fn array_flush(a: *mut ARRAY);$/;" f +array_flush r_bash/src/lib.rs /^ pub fn array_flush(arg1: *mut ARRAY);$/;" f +array_flush r_glob/src/lib.rs /^ pub fn array_flush(arg1: *mut ARRAY);$/;" f +array_flush r_readline/src/lib.rs /^ pub fn array_flush(arg1: *mut ARRAY);$/;" f +array_free builtins/mkbuiltins.c /^array_free (array)$/;" f +array_from_string array.c /^array_from_string(s, sep)$/;" f +array_from_string r_bash/src/lib.rs /^ pub fn array_from_string($/;" f +array_from_string r_glob/src/lib.rs /^ pub fn array_from_string($/;" f +array_from_string r_readline/src/lib.rs /^ pub fn array_from_string($/;" f +array_from_word_list array.c /^array_from_word_list (list)$/;" f +array_from_word_list r_bash/src/lib.rs /^ pub fn array_from_word_list(arg1: *mut WORD_LIST) -> *mut ARRAY;$/;" f +array_from_word_list r_glob/src/lib.rs /^ pub fn array_from_word_list(arg1: *mut WORD_LIST) -> *mut ARRAY;$/;" f +array_from_word_list r_readline/src/lib.rs /^ pub fn array_from_word_list(arg1: *mut WORD_LIST) -> *mut ARRAY;$/;" f +array_head array.h /^#define array_head(/;" d +array_indexed array.h /^enum atype {array_indexed, array_assoc}; \/* only array_indexed used *\/$/;" e enum:atype +array_insert array.c /^array_insert(a, i, v)$/;" f +array_insert r_bash/src/lib.rs /^ pub fn array_insert($/;" f +array_insert r_glob/src/lib.rs /^ pub fn array_insert($/;" f +array_insert r_readline/src/lib.rs /^ pub fn array_insert($/;" f +array_keys arrayfunc.c /^array_keys (s, quoted, pflags)$/;" f +array_keys r_bash/src/lib.rs /^ pub fn array_keys($/;" f +array_keys_to_word_list array.c /^array_keys_to_word_list(a)$/;" f +array_keys_to_word_list r_bash/src/lib.rs /^ pub fn array_keys_to_word_list(arg1: *mut ARRAY) -> *mut WORD_LIST;$/;" f +array_keys_to_word_list r_glob/src/lib.rs /^ pub fn array_keys_to_word_list(arg1: *mut ARRAY) -> *mut WORD_LIST;$/;" f +array_keys_to_word_list r_readline/src/lib.rs /^ pub fn array_keys_to_word_list(arg1: *mut ARRAY) -> *mut WORD_LIST;$/;" f +array_length_reference subst.c /^array_length_reference (s)$/;" f file: +array_max_index array.h /^#define array_max_index(/;" d +array_modcase array.c /^array_modcase (a, pat, modop, mflags)$/;" f +array_modcase r_bash/src/lib.rs /^ pub fn array_modcase($/;" f +array_modcase r_glob/src/lib.rs /^ pub fn array_modcase($/;" f +array_modcase r_readline/src/lib.rs /^ pub fn array_modcase($/;" f +array_needs_making builtins_rust/cd/src/lib.rs /^ static mut array_needs_making: i32;$/;" v +array_needs_making builtins_rust/declare/src/lib.rs /^ static mut array_needs_making: i32;$/;" v +array_needs_making builtins_rust/setattr/src/intercdep.rs /^ pub static mut array_needs_making: c_int;$/;" v +array_needs_making r_bash/src/lib.rs /^ pub static mut array_needs_making: ::std::os::raw::c_int;$/;" v +array_needs_making variables.c /^int array_needs_making = 1;$/;" v typeref:typename:int +array_num_elements array.h /^#define array_num_elements(/;" d +array_or_repeat vendor/syn/src/expr.rs /^ fn array_or_repeat(input: ParseStream) -> Result {$/;" f module:parsing +array_p builtins_rust/caller/src/lib.rs /^unsafe fn array_p(var: *mut SHELL_VAR) -> i32 {$/;" f +array_p builtins_rust/declare/src/lib.rs /^unsafe fn array_p(var: *mut SHELL_VAR) -> i32 {$/;" f +array_p builtins_rust/set/src/lib.rs /^macro_rules! array_p {$/;" M +array_p variables.h /^#define array_p(/;" d +array_patsub array.c /^array_patsub (a, pat, rep, mflags)$/;" f +array_patsub r_bash/src/lib.rs /^ pub fn array_patsub($/;" f +array_patsub r_glob/src/lib.rs /^ pub fn array_patsub($/;" f +array_patsub r_readline/src/lib.rs /^ pub fn array_patsub($/;" f +array_pop array.h /^#define array_pop(/;" d +array_push array.h /^#define array_push(/;" d +array_quote array.c /^array_quote(array)$/;" f +array_quote r_bash/src/lib.rs /^ pub fn array_quote(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_quote r_glob/src/lib.rs /^ pub fn array_quote(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_quote r_readline/src/lib.rs /^ pub fn array_quote(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_quote_escapes array.c /^array_quote_escapes(array)$/;" f +array_quote_escapes r_bash/src/lib.rs /^ pub fn array_quote_escapes(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_quote_escapes r_glob/src/lib.rs /^ pub fn array_quote_escapes(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_quote_escapes r_readline/src/lib.rs /^ pub fn array_quote_escapes(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_reference array.c /^array_reference(a, i)$/;" f +array_reference builtins_rust/caller/src/lib.rs /^ fn array_reference(a: *mut ARRAY, i: arrayind_t) -> *mut c_char;$/;" f +array_reference r_bash/src/lib.rs /^ pub fn array_reference(arg1: *mut ARRAY, arg2: arrayind_t) -> *mut ::std::os::raw::c_char;$/;" f +array_reference r_glob/src/lib.rs /^ pub fn array_reference(arg1: *mut ARRAY, arg2: arrayind_t) -> *mut ::std::os::raw::c_char;$/;" f +array_reference r_readline/src/lib.rs /^ pub fn array_reference(arg1: *mut ARRAY, arg2: arrayind_t) -> *mut ::std::os::raw::c_char;$/;" f +array_remove array.c /^array_remove(a, i)$/;" f +array_remove r_bash/src/lib.rs /^ pub fn array_remove(arg1: *mut ARRAY, arg2: arrayind_t) -> *mut ARRAY_ELEMENT;$/;" f +array_remove r_glob/src/lib.rs /^ pub fn array_remove(arg1: *mut ARRAY, arg2: arrayind_t) -> *mut ARRAY_ELEMENT;$/;" f +array_remove r_readline/src/lib.rs /^ pub fn array_remove(arg1: *mut ARRAY, arg2: arrayind_t) -> *mut ARRAY_ELEMENT;$/;" f +array_remove_pattern subst.c /^array_remove_pattern (var, pattern, patspec, starsub, quoted)$/;" f file: +array_remove_quoted_nulls array.c /^array_remove_quoted_nulls(array)$/;" f +array_remove_quoted_nulls r_bash/src/lib.rs /^ pub fn array_remove_quoted_nulls(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_remove_quoted_nulls r_glob/src/lib.rs /^ pub fn array_remove_quoted_nulls(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_remove_quoted_nulls r_readline/src/lib.rs /^ pub fn array_remove_quoted_nulls(arg1: *mut ARRAY) -> *mut ARRAY;$/;" f +array_rshift array.c /^array_rshift (a, n, s)$/;" f +array_rshift r_bash/src/lib.rs /^ pub fn array_rshift($/;" f +array_rshift r_glob/src/lib.rs /^ pub fn array_rshift($/;" f +array_rshift r_readline/src/lib.rs /^ pub fn array_rshift($/;" f +array_shift array.c /^array_shift(a, n, flags)$/;" f +array_shift r_bash/src/lib.rs /^ pub fn array_shift($/;" f +array_shift r_glob/src/lib.rs /^ pub fn array_shift($/;" f +array_shift r_readline/src/lib.rs /^ pub fn array_shift($/;" f +array_shift_element array.c /^array_shift_element(a, v)$/;" f +array_shift_element r_bash/src/lib.rs /^ pub fn array_shift_element($/;" f +array_shift_element r_glob/src/lib.rs /^ pub fn array_shift_element($/;" f +array_shift_element r_readline/src/lib.rs /^ pub fn array_shift_element($/;" f +array_slice array.c /^array_slice(array, s, e)$/;" f +array_slice r_bash/src/lib.rs /^ pub fn array_slice($/;" f +array_slice r_glob/src/lib.rs /^ pub fn array_slice($/;" f +array_slice r_readline/src/lib.rs /^ pub fn array_slice($/;" f +array_subrange array.c /^array_subrange (a, start, nelem, starsub, quoted, pflags)$/;" f +array_subrange r_bash/src/lib.rs /^ pub fn array_subrange($/;" f +array_subrange r_glob/src/lib.rs /^ pub fn array_subrange($/;" f +array_subrange r_readline/src/lib.rs /^ pub fn array_subrange($/;" f +array_to_argv array.c /^array_to_argv (a, countp)$/;" f +array_to_argv r_bash/src/lib.rs /^ pub fn array_to_argv($/;" f +array_to_argv r_glob/src/lib.rs /^ pub fn array_to_argv($/;" f +array_to_argv r_readline/src/lib.rs /^ pub fn array_to_argv($/;" f +array_to_assign array.c /^array_to_assign (a, quoted)$/;" f +array_to_assign builtins_rust/setattr/src/intercdep.rs /^ pub fn array_to_assign(a:*mut ARRAY,quote : c_int) -> *mut c_char;$/;" f +array_to_assign r_bash/src/lib.rs /^ pub fn array_to_assign($/;" f +array_to_assign r_glob/src/lib.rs /^ pub fn array_to_assign($/;" f +array_to_assign r_readline/src/lib.rs /^ pub fn array_to_assign($/;" f +array_to_kvpair array.c /^array_to_kvpair (a, quoted)$/;" f +array_to_kvpair r_bash/src/lib.rs /^ pub fn array_to_kvpair($/;" f +array_to_kvpair r_glob/src/lib.rs /^ pub fn array_to_kvpair($/;" f +array_to_kvpair r_readline/src/lib.rs /^ pub fn array_to_kvpair($/;" f +array_to_string array.c /^array_to_string (a, sep, quoted)$/;" f +array_to_string r_bash/src/lib.rs /^ pub fn array_to_string($/;" f +array_to_string r_glob/src/lib.rs /^ pub fn array_to_string($/;" f +array_to_string r_readline/src/lib.rs /^ pub fn array_to_string($/;" f +array_to_string_internal array.c /^array_to_string_internal (start, end, sep, quoted)$/;" f file: +array_to_word_list array.c /^array_to_word_list(a)$/;" f +array_to_word_list r_bash/src/lib.rs /^ pub fn array_to_word_list(arg1: *mut ARRAY) -> *mut WORD_LIST;$/;" f +array_to_word_list r_glob/src/lib.rs /^ pub fn array_to_word_list(arg1: *mut ARRAY) -> *mut WORD_LIST;$/;" f +array_to_word_list r_readline/src/lib.rs /^ pub fn array_to_word_list(arg1: *mut ARRAY) -> *mut WORD_LIST;$/;" f +array_transform subst.c /^array_transform (xc, var, starsub, quoted)$/;" f file: +array_unshift_element array.c /^array_unshift_element(a)$/;" f +array_unshift_element r_bash/src/lib.rs /^ pub fn array_unshift_element(arg1: *mut ARRAY) -> *mut ARRAY_ELEMENT;$/;" f +array_unshift_element r_glob/src/lib.rs /^ pub fn array_unshift_element(arg1: *mut ARRAY) -> *mut ARRAY_ELEMENT;$/;" f +array_unshift_element r_readline/src/lib.rs /^ pub fn array_unshift_element(arg1: *mut ARRAY) -> *mut ARRAY_ELEMENT;$/;" f +array_value arrayfunc.c /^array_value (s, quoted, flags, rtype, indp)$/;" f +array_value r_bash/src/lib.rs /^ pub fn array_value($/;" f +array_value_internal arrayfunc.c /^array_value_internal (s, quoted, flags, rtype, indp)$/;" f file: +array_var_assignment subst.c /^array_var_assignment (v, itype, quoted, atype)$/;" f file: +array_variable_name arrayfunc.c /^array_variable_name (s, flags, subp, lenp)$/;" f +array_variable_name r_bash/src/lib.rs /^ pub fn array_variable_name($/;" f +array_variable_part arrayfunc.c /^array_variable_part (s, flags, subp, lenp)$/;" f +array_variable_part builtins_rust/set/src/lib.rs /^ fn array_variable_part($/;" f +array_variable_part r_bash/src/lib.rs /^ pub fn array_variable_part($/;" f +array_walk array.c /^array_walk(a, func, udata)$/;" f +array_walk r_bash/src/lib.rs /^ pub fn array_walk(arg1: *mut ARRAY, arg2: sh_ae_map_func_t, arg3: *mut ::std::os::raw::c_voi/;" f +array_walk r_glob/src/lib.rs /^ pub fn array_walk(arg1: *mut ARRAY, arg2: sh_ae_map_func_t, arg3: *mut ::std::os::raw::c_voi/;" f +array_walk r_readline/src/lib.rs /^ pub fn array_walk(arg1: *mut ARRAY, arg2: sh_ae_map_func_t, arg3: *mut ::std::os::raw::c_voi/;" f +arrayfunc.o Makefile.in /^arrayfunc.o: $(DEFSRC)\/common.h$/;" t +arrayfunc.o Makefile.in /^arrayfunc.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +arrayfunc.o Makefile.in /^arrayfunc.o: assoc.h $(BASHINCDIR)\/ocache.h $(BASHINCDIR)\/chartypes.h$/;" t +arrayfunc.o Makefile.in /^arrayfunc.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +arrayfunc.o Makefile.in /^arrayfunc.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +arrayfunc.o Makefile.in /^arrayfunc.o: execute_cmd.h$/;" t +arrayfunc.o Makefile.in /^arrayfunc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib/;" t +arrayfunc.o Makefile.in /^arrayfunc.o: make_cmd.h subst.h sig.h pathnames.h externs.h pathexp.h$/;" t +arrayfunc.o Makefile.in /^arrayfunc.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +arrayfunc.o Makefile.in /^arrayfunc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDI/;" t +arrayind_t array.h /^typedef intmax_t arrayind_t;$/;" t typeref:typename:intmax_t +arrayind_t builtins_rust/caller/src/lib.rs /^type arrayind_t = intmax_t;$/;" t +arrayind_t builtins_rust/mapfile/src/intercdep.rs /^pub type arrayind_t = c_long;$/;" t +arrayind_t builtins_rust/printf/src/intercdep.rs /^pub type arrayind_t = intmax_t;$/;" t +arrayind_t builtins_rust/read/src/intercdep.rs /^pub type arrayind_t = intmax_t;$/;" t +arrayind_t builtins_rust/set/src/lib.rs /^pub type arrayind_t = i64;$/;" t +arrayind_t builtins_rust/setattr/src/intercdep.rs /^pub type arrayind_t = intmax_t;$/;" t +arrayind_t builtins_rust/wait/src/lib.rs /^pub type arrayind_t = intmax_t;$/;" t +arrayind_t r_bash/src/lib.rs /^pub type arrayind_t = intmax_t;$/;" t +arrayind_t r_glob/src/lib.rs /^pub type arrayind_t = intmax_t;$/;" t +arrayind_t r_readline/src/lib.rs /^pub type arrayind_t = intmax_t;$/;" t +arrrrrrrrrrrrrrrrrrrrrr vendor/once_cell/tests/it.rs /^ fn arrrrrrrrrrrrrrrrrrrrrr() {$/;" f module:sync +arrrrrrrrrrrrrrrrrrrrrr vendor/once_cell/tests/it.rs /^ fn arrrrrrrrrrrrrrrrrrrrrr() {$/;" f module:unsync +as_abstract vendor/nix/src/sys/socket/addr.rs /^ pub fn as_abstract(&self) -> Option<&[u8]> {$/;" P implementation:UnixAddr +as_any vendor/fluent-bundle/src/types/mod.rs /^ fn as_any(&self) -> &dyn Any {$/;" P implementation:T +as_any vendor/fluent-bundle/src/types/mod.rs /^ fn as_any(&self) -> &dyn Any;$/;" P interface:AnyEq +as_bytes vendor/proc-macro2/src/parse.rs /^ fn as_bytes(&self) -> &'a [u8] {$/;" P implementation:Cursor +as_char vendor/proc-macro2/src/lib.rs /^ pub fn as_char(&self) -> char {$/;" P implementation:Punct +as_days vendor/stdext/src/duration.rs /^ fn as_days(&self) -> u64 {$/;" P implementation:Duration +as_days vendor/stdext/src/duration.rs /^ fn as_days(&self) -> u64;$/;" P interface:DurationExt +as_display vendor/thiserror/src/display.rs /^ fn as_display(&self) -> Self {$/;" P implementation:T +as_display vendor/thiserror/src/display.rs /^ fn as_display(&self) -> Self;$/;" P interface:DisplayAsDisplay +as_display vendor/thiserror/src/display.rs /^ fn as_display(&self) -> path::Display<'_> {$/;" P implementation:Path +as_display vendor/thiserror/src/display.rs /^ fn as_display(&self) -> path::Display<'_> {$/;" P implementation:PathBuf +as_display vendor/thiserror/src/display.rs /^ fn as_display(&self) -> path::Display<'_>;$/;" P interface:PathAsDisplay +as_dyn_error vendor/thiserror/src/aserror.rs /^ fn as_dyn_error(&self) -> &(dyn Error + 'a) {$/;" P implementation:T +as_dyn_error vendor/thiserror/src/aserror.rs /^ fn as_dyn_error(&self) -> &(dyn Error + 'a) {$/;" P implementation:a +as_dyn_error vendor/thiserror/src/aserror.rs /^ fn as_dyn_error(&self) -> &(dyn Error + 'a);$/;" P interface:AsDynError +as_errno vendor/nix/src/errno.rs /^ pub const fn as_errno(self) -> Option {$/;" P implementation:Errno +as_ffi_pair vendor/nix/src/sys/socket/addr.rs /^ pub fn as_ffi_pair(&self) -> (&libc::sockaddr, libc::socklen_t) {$/;" P implementation:SockAddr +as_fn_append configure /^ as_fn_append ()$/;" f +as_fn_arith configure /^ as_fn_arith ()$/;" f +as_fn_error configure /^as_fn_error ()$/;" f +as_fn_executable_p configure /^as_fn_executable_p ()$/;" f +as_fn_exit configure /^as_fn_exit ()$/;" f +as_fn_failure configure /^as_fn_failure () { as_fn_return 1; }$/;" f +as_fn_mkdir_p configure /^as_fn_mkdir_p ()$/;" f +as_fn_ret_failure configure /^as_fn_ret_failure () { return 1; }$/;" f +as_fn_ret_success configure /^as_fn_ret_success () { return 0; }$/;" f +as_fn_set_status configure /^as_fn_set_status ()$/;" f +as_fn_success configure /^as_fn_success () { as_fn_return 0; }$/;" f +as_fn_unset configure /^as_fn_unset ()$/;" f +as_hours vendor/stdext/src/duration.rs /^ fn as_hours(&self) -> u64 {$/;" P implementation:Duration +as_hours vendor/stdext/src/duration.rs /^ fn as_hours(&self) -> u64;$/;" P interface:DurationExt +as_int vendor/nix/src/sys/quota.rs /^ fn as_int(&self) -> c_int {$/;" P implementation:QuotaCmd +as_methods vendor/stdext/src/duration.rs /^ fn as_methods() {$/;" f module:tests +as_minutes vendor/stdext/src/duration.rs /^ fn as_minutes(&self) -> u64 {$/;" P implementation:Duration +as_minutes vendor/stdext/src/duration.rs /^ fn as_minutes(&self) -> u64;$/;" P interface:DurationExt +as_mut vendor/elsa/src/index_map.rs /^ pub fn as_mut(&mut self) -> &mut IndexMap {$/;" P implementation:FrozenIndexMap +as_mut vendor/elsa/src/index_set.rs /^ pub fn as_mut(&mut self) -> &mut IndexSet {$/;" P implementation:FrozenIndexSet +as_mut vendor/elsa/src/map.rs /^ pub fn as_mut(&mut self) -> &mut BTreeMap {$/;" P implementation:FrozenBTreeMap +as_mut vendor/elsa/src/map.rs /^ pub fn as_mut(&mut self) -> &mut HashMap {$/;" P implementation:FrozenMap +as_mut vendor/elsa/src/vec.rs /^ pub fn as_mut(&mut self) -> &mut Vec {$/;" P implementation:FrozenVec +as_mut vendor/fluent-fallback/src/pin_cell/pin_mut.rs /^ pub fn as_mut<'b>(orig: &'b mut PinMut<'a, T>) -> Pin<&'b mut T> {$/;" P implementation:PinMut +as_mut vendor/futures-util/src/io/window.rs /^ fn as_mut(&mut self) -> &mut [u8] {$/;" P implementation:Window +as_mut vendor/nix/src/sys/aio.rs /^ fn as_mut(&mut self) -> &mut libc::aiocb {$/;" P implementation:AioRead +as_mut vendor/nix/src/sys/aio.rs /^ fn as_mut(&mut self) -> &mut libc::aiocb {$/;" P implementation:AioReadv +as_mut vendor/nix/src/sys/aio.rs /^ fn as_mut(&mut self) -> &mut libc::aiocb {$/;" P implementation:AioWrite +as_mut vendor/nix/src/sys/aio.rs /^ fn as_mut(&mut self) -> &mut libc::aiocb {$/;" P implementation:AioWritev +as_mut vendor/nix/src/sys/resource.rs /^ fn as_mut(&mut self) -> &mut rusage {$/;" P implementation:Usage +as_mut vendor/nix/src/sys/time.rs /^ fn as_mut(&mut self) -> &mut libc::itimerspec {$/;" P implementation:timer::TimerSpec +as_mut vendor/nix/src/sys/time.rs /^ fn as_mut(&mut self) -> &mut timespec {$/;" P implementation:TimeSpec +as_mut vendor/nix/src/sys/time.rs /^ fn as_mut(&mut self) -> &mut timeval {$/;" P implementation:TimeVal +as_mut vendor/proc-macro2/src/rcvec.rs /^ pub fn as_mut(&mut self) -> RcVecMut {$/;" P implementation:RcVecBuilder +as_mut vendor/proc-macro2/src/rcvec.rs /^ pub fn as_mut(&mut self) -> RcVecMut {$/;" P implementation:RcVecMut +as_mut vendor/smallvec/src/lib.rs /^ fn as_mut(&mut self) -> &mut [A::Item] {$/;" P implementation:SmallVec +as_mut_ptr r_bash/src/lib.rs /^ pub unsafe fn as_mut_ptr(&mut self) -> *mut T {$/;" P implementation:__IncompleteArrayField +as_mut_ptr vendor/nix/src/sys/socket/addr.rs /^ fn as_mut_ptr(&mut self) -> *mut libc::sockaddr {$/;" P interface:private::SockaddrLikePriv +as_mut_ptr vendor/nix/src/sys/socket/addr.rs /^ fn as_mut_ptr(&mut self) -> *mut libc::sockaddr {$/;" P implementation:SockaddrLikePriv +as_mut_ptr vendor/nix/src/sys/socket/addr.rs /^ pub fn as_mut_ptr(&mut self) -> *mut libc::sockaddr_un {$/;" P implementation:UnixAddr +as_mut_ptr vendor/smallvec/src/lib.rs /^ pub fn as_mut_ptr(&mut self) -> *mut A::Item {$/;" P implementation:SmallVec +as_mut_slice r_bash/src/lib.rs /^ pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {$/;" P implementation:__IncompleteArrayField +as_mut_slice vendor/smallvec/src/lib.rs /^ pub fn as_mut_slice(&mut self) -> &mut [A::Item] {$/;" P implementation:IntoIter +as_mut_slice vendor/smallvec/src/lib.rs /^ pub fn as_mut_slice(&mut self) -> &mut [A::Item] {$/;" P implementation:SmallVec +as_pin_mut vendor/futures-util/src/lock/bilock.rs /^ pub fn as_pin_mut(&mut self) -> Pin<&mut T> {$/;" P implementation:BiLockGuard +as_ptr r_bash/src/lib.rs /^ pub unsafe fn as_ptr(&self) -> *const T {$/;" P implementation:__IncompleteArrayField +as_ptr vendor/nix/src/sys/socket/addr.rs /^ fn as_ptr(&self) -> *const libc::sockaddr {$/;" P implementation:SockaddrLike +as_ptr vendor/nix/src/sys/socket/addr.rs /^ fn as_ptr(&self) -> *const libc::sockaddr {$/;" P interface:SockaddrLike +as_ptr vendor/nix/src/sys/socket/addr.rs /^ pub fn as_ptr(&self) -> *const libc::sockaddr_un {$/;" P implementation:UnixAddr +as_ptr vendor/smallvec/src/lib.rs /^ pub fn as_ptr(&self) -> *const A::Item {$/;" P implementation:SmallVec +as_ranks vendor/memchr/src/memmem/rarebytes.rs /^ pub(crate) fn as_ranks(&self, needle: &[u8]) -> (usize, usize) {$/;" P implementation:RareNeedleBytes +as_rare_bytes vendor/memchr/src/memmem/rarebytes.rs /^ pub(crate) fn as_rare_bytes(&self, needle: &[u8]) -> (u8, u8) {$/;" P implementation:RareNeedleBytes +as_rare_ordered_u8 vendor/memchr/src/memmem/rarebytes.rs /^ pub(crate) fn as_rare_ordered_u8(&self) -> (u8, u8) {$/;" P implementation:RareNeedleBytes +as_rare_ordered_usize vendor/memchr/src/memmem/rarebytes.rs /^ pub(crate) fn as_rare_ordered_usize(&self) -> (usize, usize) {$/;" P implementation:RareNeedleBytes +as_rare_usize vendor/memchr/src/memmem/rarebytes.rs /^ pub(crate) fn as_rare_usize(&self) -> (usize, usize) {$/;" P implementation:RareNeedleBytes +as_raw vendor/nix/src/time.rs /^ pub const fn as_raw(self) -> clockid_t {$/;" P implementation:ClockId +as_raw_fd vendor/nix/src/dir.rs /^ fn as_raw_fd(&self) -> RawFd {$/;" P implementation:Dir +as_raw_fd vendor/nix/src/dir.rs /^ fn as_raw_fd(&self) -> RawFd {$/;" P implementation:OwningIter +as_raw_fd vendor/nix/src/poll.rs /^ fn as_raw_fd(&self) -> RawFd {$/;" P implementation:PollFd +as_raw_fd vendor/nix/src/pty.rs /^ fn as_raw_fd(&self) -> RawFd {$/;" P implementation:PtyMaster +as_raw_fd vendor/nix/src/sys/inotify.rs /^ fn as_raw_fd(&self) -> RawFd {$/;" P implementation:Inotify +as_raw_fd vendor/nix/src/sys/signalfd.rs /^ fn as_raw_fd(&self) -> RawFd {$/;" P implementation:SignalFd +as_raw_fd vendor/nix/src/sys/timerfd.rs /^ fn as_raw_fd(&self) -> RawFd {$/;" P implementation:TimerFd +as_ref vendor/futures-util/src/io/window.rs /^ fn as_ref(&self) -> &[u8] {$/;" P implementation:Window +as_ref vendor/memchr/src/memmem/mod.rs /^ fn as_ref(&self) -> Searcher<'_> {$/;" P implementation:Searcher +as_ref vendor/memchr/src/memmem/mod.rs /^ fn as_ref(&self) -> SearcherRev<'_> {$/;" P implementation:SearcherRev +as_ref vendor/memchr/src/memmem/mod.rs /^ pub fn as_ref(&self) -> Finder<'_> {$/;" P implementation:Finder +as_ref vendor/memchr/src/memmem/mod.rs /^ pub fn as_ref(&self) -> FinderRev<'_> {$/;" P implementation:FinderRev +as_ref vendor/nix/src/sys/aio.rs /^ fn as_ref(&self) -> &libc::aiocb {$/;" P implementation:AioFsync +as_ref vendor/nix/src/sys/aio.rs /^ fn as_ref(&self) -> &libc::aiocb {$/;" P implementation:AioRead +as_ref vendor/nix/src/sys/aio.rs /^ fn as_ref(&self) -> &libc::aiocb {$/;" P implementation:AioReadv +as_ref vendor/nix/src/sys/aio.rs /^ fn as_ref(&self) -> &libc::aiocb {$/;" P implementation:AioWrite +as_ref vendor/nix/src/sys/aio.rs /^ fn as_ref(&self) -> &libc::aiocb {$/;" P implementation:AioWritev +as_ref vendor/nix/src/sys/resource.rs /^ fn as_ref(&self) -> &rusage {$/;" P implementation:Usage +as_ref vendor/nix/src/sys/signal.rs /^ fn as_ref(&self) -> &str {$/;" P implementation:Signal +as_ref vendor/nix/src/sys/socket/addr.rs /^ fn as_ref(&self) -> &libc::sockaddr_alg {$/;" P implementation:alg::AlgAddr +as_ref vendor/nix/src/sys/socket/addr.rs /^ fn as_ref(&self) -> &libc::sockaddr_nl {$/;" P implementation:netlink::NetlinkAddr +as_ref vendor/nix/src/sys/socket/addr.rs /^ fn as_ref(&self) -> &libc::sockaddr_vm {$/;" P implementation:vsock::VsockAddr +as_ref vendor/nix/src/sys/socket/addr.rs /^ fn as_ref(&self) -> &libc::sockaddr_in {$/;" P implementation:SockaddrIn +as_ref vendor/nix/src/sys/socket/addr.rs /^ fn as_ref(&self) -> &libc::sockaddr_in6 {$/;" P implementation:SockaddrIn6 +as_ref vendor/nix/src/sys/socket/addr.rs /^ fn as_ref(&self) -> &libc::sockaddr_un {$/;" P implementation:UnixAddr +as_ref vendor/nix/src/sys/time.rs /^ fn as_ref(&self) -> &libc::itimerspec {$/;" P implementation:timer::TimerSpec +as_ref vendor/nix/src/sys/time.rs /^ fn as_ref(&self) -> ×pec {$/;" P implementation:TimeSpec +as_ref vendor/nix/src/sys/time.rs /^ fn as_ref(&self) -> &timeval {$/;" P implementation:TimeVal +as_ref vendor/smallvec/src/lib.rs /^ fn as_ref(&self) -> &[A::Item] {$/;" P implementation:SmallVec +as_ref vendor/unic-langid-impl/src/lib.rs /^ fn as_ref(&self) -> &LanguageIdentifier {$/;" P implementation:LanguageIdentifier +as_slice r_bash/src/lib.rs /^ pub unsafe fn as_slice(&self, len: usize) -> &[T] {$/;" P implementation:__IncompleteArrayField +as_slice vendor/memchr/src/cow.rs /^ pub fn as_slice(&self) -> &[u8] {$/;" P implementation:CowBytes +as_slice vendor/memchr/src/cow.rs /^ pub fn as_slice(&self) -> &[u8] {$/;" P implementation:Imp +as_slice vendor/nix/src/sys/uio.rs /^ pub fn as_slice(&self) -> &[u8] {$/;" P implementation:IoVec +as_slice vendor/smallvec/src/lib.rs /^ pub fn as_slice(&self) -> &[A::Item] {$/;" P implementation:IntoIter +as_slice vendor/smallvec/src/lib.rs /^ pub fn as_slice(&self) -> &[A::Item] {$/;" P implementation:SmallVec +as_str vendor/nix/src/sys/signal.rs /^ pub const fn as_str(self) -> &'static str {$/;" P implementation:Signal +as_str vendor/tinystr/src/tinystr16.rs /^ pub fn as_str(&self) -> &str {$/;" P implementation:TinyStr16 +as_str vendor/tinystr/src/tinystr4.rs /^ pub fn as_str(&self) -> &str {$/;" P implementation:TinyStr4 +as_str vendor/tinystr/src/tinystr8.rs /^ pub fn as_str(&self) -> &str {$/;" P implementation:TinyStr8 +as_str vendor/unic-langid-impl/src/subtags/language.rs /^ pub fn as_str(&self) -> &str {$/;" P implementation:Language +as_str vendor/unic-langid-impl/src/subtags/region.rs /^ pub fn as_str(&self) -> &str {$/;" P implementation:Region +as_str vendor/unic-langid-impl/src/subtags/script.rs /^ pub fn as_str(&self) -> &str {$/;" P implementation:Script +as_str vendor/unic-langid-impl/src/subtags/variant.rs /^ pub fn as_str(&self) -> &str {$/;" P implementation:Variant +as_string vendor/fluent-bundle/src/types/mod.rs /^ fn as_string(&self, intls: &intl_memoizer::IntlLangMemoizer) -> Cow<'static, str>;$/;" P interface:FluentType +as_string vendor/fluent-bundle/src/types/mod.rs /^ pub fn as_string, M>(&self, scope: &Scope) -> Cow<'source, s/;" P implementation:FluentValue +as_string vendor/fluent-bundle/src/types/number.rs /^ pub fn as_string(&self) -> Cow<'static, str> {$/;" P implementation:FluentNumber +as_string_threadsafe vendor/fluent-bundle/src/types/mod.rs /^ fn as_string_threadsafe($/;" P interface:FluentType +as_turbofish vendor/syn/src/generics.rs /^ pub fn as_turbofish(&self) -> Turbofish {$/;" P implementation:TypeGenerics +as_waker vendor/futures-util/src/compat/compat03as01.rs /^ fn as_waker(&self) -> WakerRef<'_> {$/;" P implementation:Current +asan Makefile.in /^asan:$/;" t +asan-tests Makefile.in /^asan-tests: asan $(TESTS_SUPPORT)$/;" t +asciicode builtins_rust/printf/src/lib.rs /^unsafe fn asciicode() -> c_long {$/;" f +asctime r_bash/src/lib.rs /^ pub fn asctime(__tp: *const tm) -> *mut ::std::os::raw::c_char;$/;" f +asctime r_readline/src/lib.rs /^ pub fn asctime(__tp: *const tm) -> *mut ::std::os::raw::c_char;$/;" f +asctime vendor/libc/src/solid/mod.rs /^ pub fn asctime(arg1: *const tm) -> *mut c_char;$/;" f +asctime_r r_bash/src/lib.rs /^ pub fn asctime_r($/;" f +asctime_r r_readline/src/lib.rs /^ pub fn asctime_r($/;" f +asctime_r vendor/libc/src/solid/mod.rs /^ pub fn asctime_r(arg1: *const tm, arg2: *mut c_char) -> *mut c_char;$/;" f +asctime_r vendor/libc/src/wasi.rs /^ pub fn asctime_r(a: *const tm, b: *mut c_char) -> *mut c_char;$/;" f +aserror vendor/thiserror/src/lib.rs /^mod aserror;$/;" n +asint support/man2html.c /^static int asint = 0;$/;" v typeref:typename:int file: +asiprintf vendor/libc/src/solid/mod.rs /^ pub fn asiprintf(arg1: *mut *mut c_char, arg2: *const c_char, ...) -> c_int;$/;" f +asprintf lib/sh/snprintf.c /^asprintf(char **stringp, const char * format, ...)$/;" f typeref:typename:int +asprintf r_bash/src/lib.rs /^ pub fn asprintf($/;" f +asprintf r_readline/src/lib.rs /^ pub fn asprintf($/;" f +assert vendor/thiserror/tests/test_display.rs /^fn assert(expected: &str, value: T) {$/;" f +assert vendor/thiserror/tests/test_path.rs /^fn assert(expected: &str, value: T) {$/;" f +assert_attr_eq vendor/nix/test/test_mq.rs /^macro_rules! assert_attr_eq {$/;" M +assert_display vendor/libloading/tests/markers.rs /^fn assert_display() {}$/;" f +assert_done vendor/futures/tests/future_join_all.rs /^fn assert_done(actual_fut: impl Future, expected: T)$/;" f +assert_done vendor/futures/tests/future_try_join_all.rs /^fn assert_done(actual_fut: impl Future, expected: T)$/;" f +assert_fd_valid vendor/nix/src/sys/select.rs /^fn assert_fd_valid(fd: RawFd) {$/;" f +assert_fill_buf vendor/futures/tests/stream_into_async_read.rs /^macro_rules! assert_fill_buf {$/;" M +assert_fs_equals vendor/nix/src/sys/statfs.rs /^ fn assert_fs_equals(fs: Statfs, vfs: Statvfs) {$/;" f module:test +assert_fs_equals_strict vendor/nix/src/sys/statfs.rs /^ fn assert_fs_equals_strict(fs: Statfs, vfs: Statvfs) {$/;" f module:test +assert_fused_future vendor/futures-util/src/async_await/mod.rs /^pub fn assert_fused_future(_: &T) {}$/;" f +assert_fused_stream vendor/futures-util/src/async_await/mod.rs /^pub fn assert_fused_stream(_: &T) {}$/;" f +assert_future vendor/futures-util/src/future/mod.rs /^pub(crate) fn assert_future(future: F) -> F$/;" f +assert_impl vendor/proc-macro2/tests/marker.rs /^macro_rules! assert_impl {$/;" M +assert_impl vendor/thiserror/tests/test_from.rs /^fn assert_impl>() {}$/;" f +assert_impls vendor/futures/tests/future_try_flatten_stream.rs /^fn assert_impls() {$/;" f +assert_is_object_safe vendor/futures/tests/object_safety.rs /^fn assert_is_object_safe() {}$/;" f +assert_lstat_results vendor/nix/test/test_stat.rs /^fn assert_lstat_results(stat_result: Result) {$/;" f +assert_min vendor/autocfg/src/tests.rs /^ fn assert_min(&self, major: usize, minor: usize, probe_result: bool) {$/;" P implementation:AutoCfg +assert_not_unpin vendor/pin-project-lite/tests/auxiliary/mod.rs /^macro_rules! assert_not_unpin {$/;" M +assert_poll_ok vendor/futures-util/src/io/write_all_vectored.rs /^ macro_rules! assert_poll_ok {$/;" M module:tests +assert_read vendor/futures-util/src/io/mod.rs /^pub(crate) fn assert_read(reader: R) -> R$/;" f +assert_read vendor/futures/tests/stream_into_async_read.rs /^macro_rules! assert_read {$/;" M +assert_send vendor/libloading/tests/markers.rs /^fn assert_send() {}$/;" f +assert_sink vendor/futures-util/src/sink/mod.rs /^pub(crate) fn assert_sink(sink: S) -> S$/;" f +assert_sink vendor/futures/tests/future_try_flatten_stream.rs /^ fn assert_sink, Item>(_: &S) {}$/;" f function:assert_impls +assert_stat_results vendor/nix/test/test_stat.rs /^fn assert_stat_results(stat_result: Result) {$/;" f +assert_std vendor/autocfg/src/tests.rs /^ fn assert_std(&self, probe_result: bool) {$/;" P implementation:AutoCfg +assert_stream vendor/futures-util/src/stream/mod.rs /^pub(crate) fn assert_stream(stream: S) -> S$/;" f +assert_stream vendor/futures/tests/future_try_flatten_stream.rs /^ fn assert_stream(_: &S) {}$/;" f function:assert_impls +assert_stream_sink vendor/futures/tests/future_try_flatten_stream.rs /^ fn assert_stream_sink, Item>(_: &S) {}$/;" f function:assert_impls +assert_suffix_max vendor/memchr/src/memmem/twoway.rs /^ macro_rules! assert_suffix_max {$/;" M function:tests::suffix_forward +assert_suffix_max vendor/memchr/src/memmem/twoway.rs /^ macro_rules! assert_suffix_max {$/;" M function:tests::suffix_reverse +assert_suffix_min vendor/memchr/src/memmem/twoway.rs /^ macro_rules! assert_suffix_min {$/;" M function:tests::suffix_forward +assert_suffix_min vendor/memchr/src/memmem/twoway.rs /^ macro_rules! assert_suffix_min {$/;" M function:tests::suffix_reverse +assert_sync vendor/libloading/tests/markers.rs /^fn assert_sync() {}$/;" f +assert_times_eq vendor/nix/test/test_stat.rs /^fn assert_times_eq($/;" f +assert_traits vendor/once_cell/tests/it.rs /^ fn assert_traits() {}$/;" f function:sync::once_cell_is_sync_send +assert_unpin vendor/futures-util/src/async_await/mod.rs /^pub fn assert_unpin(_: &T) {}$/;" f +assert_unpin vendor/pin-project-lite/tests/auxiliary/mod.rs /^macro_rules! assert_unpin {$/;" M +assert_unwind_safe vendor/proc-macro2/tests/marker.rs /^ macro_rules! assert_unwind_safe {$/;" M module:unwind_safe +assert_vis_parse vendor/syn/tests/test_visibility.rs /^macro_rules! assert_vis_parse {$/;" M +assert_write vendor/futures-util/src/io/mod.rs /^pub(crate) fn assert_write(writer: W) -> W$/;" f +assign_aliasvar variables.c /^assign_aliasvar (self, value, ind, key)$/;" f file: +assign_array_element arrayfunc.c /^assign_array_element (name, value, flags)$/;" f +assign_array_element builtins_rust/common/src/lib.rs /^ fn assign_array_element(name: *mut c_char, value: *mut c_char, flags: i32) -> *mut SHELL_VAR/;" f +assign_array_element builtins_rust/declare/src/lib.rs /^ fn assign_array_element(name: *mut c_char, value: *mut c_char, flags: i32) -> *mut SHELL_VAR/;" f +assign_array_element r_bash/src/lib.rs /^ pub fn assign_array_element($/;" f +assign_array_element_internal arrayfunc.c /^assign_array_element_internal (entry, name, vname, sub, sublen, value, flags)$/;" f file: +assign_array_from_string arrayfunc.c /^assign_array_from_string (name, value, flags)$/;" f +assign_array_from_string r_bash/src/lib.rs /^ pub fn assign_array_from_string($/;" f +assign_array_var_from_string arrayfunc.c /^assign_array_var_from_string (var, value, flags)$/;" f +assign_array_var_from_string builtins_rust/declare/src/lib.rs /^ fn assign_array_var_from_string($/;" f +assign_array_var_from_string r_bash/src/lib.rs /^ pub fn assign_array_var_from_string($/;" f +assign_array_var_from_word_list arrayfunc.c /^assign_array_var_from_word_list (var, list, flags)$/;" f +assign_array_var_from_word_list builtins_rust/read/src/intercdep.rs /^ pub fn assign_array_var_from_word_list(var: *mut SHELL_VAR, list: *mut WordList, flags: c_in/;" f +assign_array_var_from_word_list r_bash/src/lib.rs /^ pub fn assign_array_var_from_word_list($/;" f +assign_assoc_from_kvlist arrayfunc.c /^assign_assoc_from_kvlist (var, nlist, h, flags)$/;" f file: +assign_bash_argv0 variables.c /^assign_bash_argv0 (var, value, unused, key)$/;" f file: +assign_comp_wordbreaks variables.c /^assign_comp_wordbreaks (self, value, unused, key)$/;" f file: +assign_compound_array_list arrayfunc.c /^assign_compound_array_list (var, nlist, flags)$/;" f +assign_compound_array_list r_bash/src/lib.rs /^ pub fn assign_compound_array_list($/;" f +assign_dirstack variables.c /^assign_dirstack (self, value, ind, key)$/;" f file: +assign_func builtins_rust/cd/src/lib.rs /^ assign_func: *mut fn($/;" m struct:SHELL_VAR +assign_func builtins_rust/common/src/lib.rs /^ pub assign_func: *mut fn($/;" m struct:SHELL_VAR +assign_func builtins_rust/declare/src/lib.rs /^ assign_func: *mut fn($/;" m struct:SHELL_VAR +assign_func builtins_rust/fc/src/lib.rs /^ assign_func: *mut fn($/;" m struct:SHELL_VAR +assign_func builtins_rust/getopts/src/lib.rs /^ assign_func: *mut fn($/;" m struct:SHELL_VAR +assign_func builtins_rust/mapfile/src/intercdep.rs /^ pub assign_func: sh_var_assign_func_t,$/;" m struct:variable +assign_func builtins_rust/printf/src/intercdep.rs /^ pub assign_func: sh_var_assign_func_t,$/;" m struct:variable +assign_func builtins_rust/read/src/intercdep.rs /^ pub assign_func: sh_var_assign_func_t,$/;" m struct:variable +assign_func builtins_rust/set/src/lib.rs /^ pub assign_func: sh_var_assign_func_t,$/;" m struct:variable +assign_func builtins_rust/setattr/src/intercdep.rs /^ pub assign_func: sh_var_assign_func_t,$/;" m struct:variable +assign_func builtins_rust/shopt/src/lib.rs /^ pub assign_func: Option,$/;" m struct:variable +assign_func builtins_rust/type/src/lib.rs /^ assign_func: *mut fn($/;" m struct:SHELL_VAR +assign_func builtins_rust/wait/src/lib.rs /^ pub assign_func: sh_var_assign_func_t,$/;" m struct:variable +assign_func r_bash/src/lib.rs /^ pub assign_func: sh_var_assign_func_t,$/;" m struct:variable +assign_func variables.h /^ sh_var_assign_func_t *assign_func; \/* Function called when this `special$/;" m struct:variable typeref:typename:sh_var_assign_func_t * +assign_hashcmd variables.c /^assign_hashcmd (self, value, ind, key)$/;" f file: +assign_in_env r_bash/src/lib.rs /^ pub fn assign_in_env($/;" f +assign_in_env variables.c /^assign_in_env (word, flags)$/;" f +assign_lineno variables.c /^assign_lineno (var, value, unused, key)$/;" f file: +assign_random variables.c /^assign_random (self, value, unused, key)$/;" f file: +assign_seconds variables.c /^assign_seconds (self, value, unused, key)$/;" f file: +assign_subshell variables.c /^assign_subshell (var, value, unused, key)$/;" f file: +assigning_in_environment r_bash/src/lib.rs /^ pub static mut assigning_in_environment: ::std::os::raw::c_int;$/;" v +assigning_in_environment subst.c /^int assigning_in_environment;$/;" v typeref:typename:int +assignment builtins_rust/declare/src/lib.rs /^ fn assignment(str1: *const c_char, flags: i32) -> i32;$/;" f +assignment builtins_rust/setattr/src/intercdep.rs /^ pub fn assignment(string: *const c_char, flags: c_int) -> c_int;$/;" f +assignment general.c /^assignment (string, flags)$/;" f +assignment r_bash/src/lib.rs /^ pub fn assignment($/;" f +assignment r_glob/src/lib.rs /^ pub fn assignment($/;" f +assignment r_readline/src/lib.rs /^ pub fn assignment($/;" f +assignment_builtins builtins/mkbuiltins.c /^char *assignment_builtins[] =$/;" v typeref:typename:char * [] +assignment_name r_bash/src/lib.rs /^ pub fn assignment_name(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +assigntok expr.c /^static int assigntok; \/* the OP in OP= *\/$/;" v typeref:typename:int file: +assoc.o Makefile.in /^assoc.o: $(DEFSRC)\/common.h$/;" t +assoc.o Makefile.in /^assoc.o: array.h ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h$/;" t +assoc.o Makefile.in /^assoc.o: assoc.h hashlib.h$/;" t +assoc.o Makefile.in /^assoc.o: command.h ${BASHINCDIR}\/stdc.h error.h$/;" t +assoc.o Makefile.in /^assoc.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +assoc.o Makefile.in /^assoc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h$/;" t +assoc.o Makefile.in /^assoc.o: make_cmd.h subst.h sig.h pathnames.h externs.h $/;" t +assoc.o Makefile.in /^assoc.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +assoc.o Makefile.in /^assoc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h$/;" t +assoc_cell builtins_rust/setattr/src/lib.rs /^unsafe fn assoc_cell(var: *mut SHELL_VAR) -> *mut HASH_TABLE {$/;" f +assoc_cell variables.h /^#define assoc_cell(/;" d +assoc_copy assoc.h /^#define assoc_copy(/;" d +assoc_create assoc.h /^#define assoc_create(/;" d +assoc_dequote assoc.c /^assoc_dequote (h)$/;" f +assoc_dequote r_bash/src/lib.rs /^ pub fn assoc_dequote(arg1: *mut HASH_TABLE) -> *mut HASH_TABLE;$/;" f +assoc_dequote_escapes assoc.c /^assoc_dequote_escapes (h)$/;" f +assoc_dequote_escapes r_bash/src/lib.rs /^ pub fn assoc_dequote_escapes(arg1: *mut HASH_TABLE) -> *mut HASH_TABLE;$/;" f +assoc_dispose assoc.c /^assoc_dispose (hash)$/;" f +assoc_dispose r_bash/src/lib.rs /^ pub fn assoc_dispose(arg1: *mut HASH_TABLE);$/;" f +assoc_empty assoc.h /^#define assoc_empty(/;" d +assoc_expand_once arrayfunc.c /^int assoc_expand_once = 0;$/;" v typeref:typename:int +assoc_expand_once builtins_rust/common/src/lib.rs /^ static assoc_expand_once: i32;$/;" v +assoc_expand_once builtins_rust/declare/src/lib.rs /^ static assoc_expand_once: i32;$/;" v +assoc_expand_once builtins_rust/printf/src/intercdep.rs /^ pub static mut assoc_expand_once: c_int;$/;" v +assoc_expand_once builtins_rust/read/src/intercdep.rs /^ pub static mut assoc_expand_once : c_int;$/;" v +assoc_expand_once builtins_rust/set/src/lib.rs /^ static assoc_expand_once: i32;$/;" v +assoc_expand_once builtins_rust/shopt/src/lib.rs /^ static mut assoc_expand_once: i32;$/;" v +assoc_expand_once builtins_rust/wait/src/lib.rs /^ static assoc_expand_once: i32;$/;" v +assoc_expand_once r_bash/src/lib.rs /^ pub static mut assoc_expand_once: ::std::os::raw::c_int;$/;" v +assoc_flush assoc.c /^assoc_flush (hash)$/;" f +assoc_flush r_bash/src/lib.rs /^ pub fn assoc_flush(arg1: *mut HASH_TABLE);$/;" f +assoc_insert assoc.c /^assoc_insert (hash, key, value)$/;" f +assoc_insert r_bash/src/lib.rs /^ pub fn assoc_insert($/;" f +assoc_keys_to_word_list assoc.c /^assoc_keys_to_word_list (h)$/;" f +assoc_keys_to_word_list r_bash/src/lib.rs /^ pub fn assoc_keys_to_word_list(arg1: *mut HASH_TABLE) -> *mut WORD_LIST;$/;" f +assoc_list lib/readline/bind.c /^} assoc_list;$/;" t typeref:struct:__anon7144754c0408 file: +assoc_modcase assoc.c /^assoc_modcase (h, pat, modop, mflags)$/;" f +assoc_modcase r_bash/src/lib.rs /^ pub fn assoc_modcase($/;" f +assoc_num_elements assoc.h /^#define assoc_num_elements(/;" d +assoc_p builtins_rust/declare/src/lib.rs /^unsafe fn assoc_p(var: *mut SHELL_VAR) -> i32 {$/;" f +assoc_p builtins_rust/set/src/lib.rs /^macro_rules! assoc_p {$/;" M +assoc_p variables.h /^#define assoc_p(/;" d +assoc_patsub assoc.c /^assoc_patsub (h, pat, rep, mflags)$/;" f +assoc_patsub r_bash/src/lib.rs /^ pub fn assoc_patsub($/;" f +assoc_quote assoc.c /^assoc_quote (h)$/;" f +assoc_quote r_bash/src/lib.rs /^ pub fn assoc_quote(arg1: *mut HASH_TABLE) -> *mut HASH_TABLE;$/;" f +assoc_quote_escapes assoc.c /^assoc_quote_escapes (h)$/;" f +assoc_quote_escapes r_bash/src/lib.rs /^ pub fn assoc_quote_escapes(arg1: *mut HASH_TABLE) -> *mut HASH_TABLE;$/;" f +assoc_reference assoc.c /^assoc_reference (hash, string)$/;" f +assoc_reference r_bash/src/lib.rs /^ pub fn assoc_reference($/;" f +assoc_remove assoc.c /^assoc_remove (hash, string)$/;" f +assoc_remove r_bash/src/lib.rs /^ pub fn assoc_remove(arg1: *mut HASH_TABLE, arg2: *mut ::std::os::raw::c_char);$/;" f +assoc_remove_quoted_nulls assoc.c /^assoc_remove_quoted_nulls (h)$/;" f +assoc_remove_quoted_nulls r_bash/src/lib.rs /^ pub fn assoc_remove_quoted_nulls(arg1: *mut HASH_TABLE) -> *mut HASH_TABLE;$/;" f +assoc_replace assoc.c /^assoc_replace (hash, key, value)$/;" f +assoc_replace r_bash/src/lib.rs /^ pub fn assoc_replace($/;" f +assoc_subrange assoc.c /^assoc_subrange (hash, start, nelem, starsub, quoted, pflags)$/;" f +assoc_subrange r_bash/src/lib.rs /^ pub fn assoc_subrange($/;" f +assoc_to_assign assoc.c /^assoc_to_assign (hash, quoted)$/;" f +assoc_to_assign builtins_rust/setattr/src/intercdep.rs /^ pub fn assoc_to_assign(a:*mut HASH_TABLE,quote : c_int) -> *mut c_char;$/;" f +assoc_to_assign r_bash/src/lib.rs /^ pub fn assoc_to_assign($/;" f +assoc_to_kvpair assoc.c /^assoc_to_kvpair (hash, quoted)$/;" f +assoc_to_kvpair r_bash/src/lib.rs /^ pub fn assoc_to_kvpair($/;" f +assoc_to_string assoc.c /^assoc_to_string (h, sep, quoted)$/;" f +assoc_to_string r_bash/src/lib.rs /^ pub fn assoc_to_string($/;" f +assoc_to_word_list assoc.c /^assoc_to_word_list (h)$/;" f +assoc_to_word_list r_bash/src/lib.rs /^ pub fn assoc_to_word_list(arg1: *mut HASH_TABLE) -> *mut WORD_LIST;$/;" f +assoc_to_word_list_internal assoc.c /^assoc_to_word_list_internal (h, t)$/;" f file: +assoc_walk assoc.h /^#define assoc_walk(/;" d +associated vendor/async-trait/tests/test.rs /^ async fn associated(&self) {$/;" P interface:issue73::Example +associated1 vendor/async-trait/tests/test.rs /^ async fn associated1() {}$/;" P implementation:issue92::Struct +associated2 vendor/async-trait/tests/test.rs /^ async fn associated2(&self) {$/;" P implementation:issue92::Unit +associated2 vendor/async-trait/tests/test.rs /^ async fn associated2(&self) {$/;" P interface:issue92::Trait +associated2 vendor/async-trait/tests/test.rs /^ async fn associated2(&self) {$/;" f module:issue92 +assume_init vendor/nix/src/sys/socket/sockopt.rs /^ unsafe fn assume_init(self) -> OsString {$/;" P implementation:GetOsString +assume_init vendor/nix/src/sys/socket/sockopt.rs /^ unsafe fn assume_init(self) -> T {$/;" P implementation:GetStruct +assume_init vendor/nix/src/sys/socket/sockopt.rs /^ unsafe fn assume_init(self) -> T;$/;" P interface:Get +assume_init vendor/nix/src/sys/socket/sockopt.rs /^ unsafe fn assume_init(self) -> bool {$/;" P implementation:GetBool +assume_init vendor/nix/src/sys/socket/sockopt.rs /^ unsafe fn assume_init(self) -> u8 {$/;" P implementation:GetU8 +assume_init vendor/nix/src/sys/socket/sockopt.rs /^ unsafe fn assume_init(self) -> usize {$/;" P implementation:GetUsize +ast vendor/fluent-syntax/src/lib.rs /^pub mod ast;$/;" n +ast vendor/thiserror-impl/src/lib.rs /^mod ast;$/;" n +async_await vendor/futures-util/src/lib.rs /^ pub mod async_await {$/;" n module:__private +async_await vendor/futures-util/src/lib.rs /^mod async_await;$/;" n +async_noop vendor/futures/tests/async_await_macros.rs /^ async fn async_noop() {}$/;" f function:select_on_mutable_borrowing_future_with_same_borrow_in_block +async_noop vendor/futures/tests/async_await_macros.rs /^ async fn async_noop() {}$/;" f function:select_on_mutable_borrowing_future_with_same_borrow_in_block_and_default +async_redirect_stdin execute_cmd.c /^async_redirect_stdin ()$/;" f typeref:typename:void +async_redirect_stdin r_bash/src/lib.rs /^ pub fn async_redirect_stdin();$/;" f +async_to_string vendor/async-trait/tests/test.rs /^ async fn async_to_string(&self) -> String {$/;" P implementation:issue25::String +async_to_string vendor/async-trait/tests/test.rs /^ async fn async_to_string(&self) -> String;$/;" P interface:issue25::AsyncToString +async_trait vendor/async-trait/src/lib.rs /^pub fn async_trait(args: TokenStream, input: TokenStream) -> TokenStream {$/;" f +async_trait vendor/async-trait/tests/test.rs /^ async fn async_trait(_: Flagger<'_>, flag: &AtomicBool) {$/;" P implementation:drop_order::Struct +async_trait vendor/async-trait/tests/test.rs /^ async fn async_trait(_: Flagger<'_>, flag: &AtomicBool);$/;" P interface:drop_order::Trait +async_trait vendor/async-trait/tests/test.rs /^ async fn async_trait(self, flag: &AtomicBool) {$/;" P implementation:drop_order::Flagger +async_trait vendor/async-trait/tests/test.rs /^ async fn async_trait(self, flag: &AtomicBool);$/;" P interface:drop_order::SelfTrait +asynchronous_notification flags.c /^int asynchronous_notification = 0;$/;" v typeref:typename:int +asynchronous_notification r_bash/src/lib.rs /^ pub static mut asynchronous_notification: ::std::os::raw::c_int;$/;" v +at_least_one_type vendor/syn/src/ty.rs /^ fn at_least_one_type(bounds: &Punctuated) -> bool {$/;" f module:parsing +at_quick_exit r_bash/src/lib.rs /^ pub fn at_quick_exit($/;" f +at_quick_exit r_glob/src/lib.rs /^ pub fn at_quick_exit($/;" f +at_quick_exit r_readline/src/lib.rs /^ pub fn at_quick_exit($/;" f +at_quick_exit vendor/libc/src/solid/mod.rs /^ pub fn at_quick_exit(arg1: ::Option) -> c_int;$/;" f +at_quick_exit vendor/libc/src/wasi.rs /^ pub fn at_quick_exit(a: extern "C" fn()) -> c_int;$/;" f +ateof lib/termcap/termcap.c /^ int ateof;$/;" m struct:buffer typeref:typename:int file: +atexit r_bash/src/lib.rs /^ pub fn atexit(__func: ::core::option::Option) -> ::std::os::raw::c_i/;" f +atexit r_glob/src/lib.rs /^ pub fn atexit(__func: ::core::option::Option) -> ::std::os::raw::c_i/;" f +atexit r_readline/src/lib.rs /^ pub fn atexit(__func: ::core::option::Option) -> ::std::os::raw::c_i/;" f +atexit vendor/libc/src/fuchsia/mod.rs /^ pub fn atexit(cb: extern "C" fn()) -> c_int;$/;" f +atexit vendor/libc/src/solid/mod.rs /^ pub fn atexit(arg1: ::Option) -> c_int;$/;" f +atexit vendor/libc/src/unix/mod.rs /^ pub fn atexit(cb: extern "C" fn()) -> c_int;$/;" f +atexit vendor/libc/src/vxworks/mod.rs /^ pub fn atexit(cb: extern "C" fn()) -> c_int;$/;" f +atexit vendor/libc/src/wasi.rs /^ pub fn atexit(a: extern "C" fn()) -> c_int;$/;" f +atexit vendor/libc/src/windows/mod.rs /^ pub fn atexit(cb: extern "C" fn()) -> c_int;$/;" f +atime mailcheck.c /^#define atime /;" d file: +atof r_bash/src/lib.rs /^ pub fn atof(__nptr: *const ::std::os::raw::c_char) -> f64;$/;" f +atof r_glob/src/lib.rs /^ pub fn atof(__nptr: *const ::std::os::raw::c_char) -> f64;$/;" f +atof r_readline/src/lib.rs /^ pub fn atof(__nptr: *const ::std::os::raw::c_char) -> f64;$/;" f +atof vendor/libc/src/fuchsia/mod.rs /^ pub fn atof(s: *const c_char) -> c_double;$/;" f +atof vendor/libc/src/solid/mod.rs /^ pub fn atof(arg1: *const c_char) -> f64;$/;" f +atof vendor/libc/src/unix/bsd/mod.rs /^ pub fn atof(s: *const ::c_char) -> ::c_double;$/;" f +atof vendor/libc/src/unix/haiku/mod.rs /^ pub fn atof(s: *const ::c_char) -> ::c_double;$/;" f +atof vendor/libc/src/unix/hermit/mod.rs /^ pub fn atof(s: *const ::c_char) -> ::c_double;$/;" f +atof vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn atof(s: *const ::c_char) -> ::c_double;$/;" f +atof vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn atof(s: *const ::c_char) -> ::c_double;$/;" f +atof vendor/libc/src/unix/newlib/mod.rs /^ pub fn atof(s: *const ::c_char) -> ::c_double;$/;" f +atof vendor/libc/src/unix/solarish/mod.rs /^ pub fn atof(s: *const ::c_char) -> ::c_double;$/;" f +atof vendor/libc/src/wasi.rs /^ pub fn atof(s: *const c_char) -> c_double;$/;" f +atof vendor/libc/src/windows/mod.rs /^ pub fn atof(s: *const c_char) -> c_double;$/;" f +atoi r_bash/src/lib.rs /^ pub fn atoi(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +atoi r_glob/src/lib.rs /^ pub fn atoi(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +atoi r_readline/src/lib.rs /^ pub fn atoi(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +atoi vendor/libc/src/fuchsia/mod.rs /^ pub fn atoi(s: *const c_char) -> c_int;$/;" f +atoi vendor/libc/src/solid/mod.rs /^ pub fn atoi(arg1: *const c_char) -> c_int;$/;" f +atoi vendor/libc/src/unix/mod.rs /^ pub fn atoi(s: *const c_char) -> c_int;$/;" f +atoi vendor/libc/src/vxworks/mod.rs /^ pub fn atoi(s: *const c_char) -> c_int;$/;" f +atoi vendor/libc/src/wasi.rs /^ pub fn atoi(s: *const c_char) -> c_int;$/;" f +atoi vendor/libc/src/windows/mod.rs /^ pub fn atoi(s: *const c_char) -> c_int;$/;" f +atol r_bash/src/lib.rs /^ pub fn atol(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;$/;" f +atol r_glob/src/lib.rs /^ pub fn atol(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;$/;" f +atol r_readline/src/lib.rs /^ pub fn atol(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;$/;" f +atol vendor/libc/src/solid/mod.rs /^ pub fn atol(arg1: *const c_char) -> c_long;$/;" f +atoll r_bash/src/lib.rs /^ pub fn atoll(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_longlong;$/;" f +atoll r_glob/src/lib.rs /^ pub fn atoll(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_longlong;$/;" f +atoll r_readline/src/lib.rs /^ pub fn atoll(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_longlong;$/;" f +atoll vendor/libc/src/solid/mod.rs /^ pub fn atoll(arg1: *const c_char) -> c_longlong;$/;" f +atom_expr vendor/syn/src/expr.rs /^ fn atom_expr(input: ParseStream, _allow_struct: AllowStruct) -> Result {$/;" f module:parsing +atom_expr vendor/syn/src/expr.rs /^ fn atom_expr(input: ParseStream, allow_struct: AllowStruct) -> Result {$/;" f module:parsing +atomic_load_head_and_len_all vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn atomic_load_head_and_len_all(&self) -> (*const Task, usize) {$/;" P implementation:FuturesUnordered +atomic_waker vendor/futures-core/src/task/__internal/mod.rs /^mod atomic_waker;$/;" n +att_array builtins_rust/caller/src/lib.rs /^macro_rules! att_array {$/;" M +att_array builtins_rust/declare/src/lib.rs /^macro_rules! att_array {$/;" M +att_array builtins_rust/set/src/lib.rs /^macro_rules! att_array {$/;" M +att_array builtins_rust/shopt/src/lib.rs /^pub static att_array: i32 = 0x0000004; \/* value is an array *\/$/;" v +att_array variables.h /^#define att_array /;" d +att_assoc builtins_rust/declare/src/lib.rs /^macro_rules! att_assoc {$/;" M +att_assoc builtins_rust/set/src/lib.rs /^macro_rules! att_assoc {$/;" M +att_assoc builtins_rust/shopt/src/lib.rs /^pub static att_assoc: i32 = 0x0000040; \/* variable is an associative array *\/$/;" v +att_assoc variables.h /^#define att_assoc /;" d +att_capcase builtins_rust/declare/src/lib.rs /^macro_rules! att_capcase {$/;" M +att_capcase builtins_rust/shopt/src/lib.rs /^pub static att_capcase: i32 = 0x0000400; \/* word capitalized on assignment *\/$/;" v +att_capcase variables.h /^#define att_capcase /;" d +att_cell builtins_rust/caller/src/lib.rs /^macro_rules! att_cell {$/;" M +att_exported builtins_rust/declare/src/lib.rs /^macro_rules! att_exported {$/;" M +att_exported builtins_rust/set/src/lib.rs /^macro_rules! att_exported {$/;" M +att_exported builtins_rust/shopt/src/lib.rs /^pub static att_exported: i32 = 0x0000001; \/* export to environment *\/$/;" v +att_exported variables.h /^#define att_exported /;" d +att_function builtins_rust/declare/src/lib.rs /^macro_rules! att_function {$/;" M +att_function builtins_rust/shopt/src/lib.rs /^pub static att_function: i32 = 0x0000008; \/* value is a function *\/$/;" v +att_function variables.h /^#define att_function /;" d +att_imported builtins_rust/set/src/lib.rs /^macro_rules! att_imported {$/;" M +att_imported builtins_rust/shopt/src/lib.rs /^pub static att_imported: i32 = 0x0008000; \/* came from environment *\/$/;" v +att_imported variables.h /^#define att_imported /;" d +att_integer builtins_rust/declare/src/lib.rs /^macro_rules! att_integer {$/;" M +att_integer builtins_rust/shopt/src/lib.rs /^pub static att_integer: i32 = 0x0000010; \/* internal representation is int *\/$/;" v +att_integer variables.h /^#define att_integer /;" d +att_invisible builtins_rust/common/src/lib.rs /^macro_rules! att_invisible {$/;" M +att_invisible builtins_rust/declare/src/lib.rs /^macro_rules! att_invisible {$/;" M +att_invisible builtins_rust/shopt/src/lib.rs /^pub static att_invisible: i32 = 0x0001000; \/* cannot see *\/$/;" v +att_invisible variables.h /^#define att_invisible /;" d +att_local builtins_rust/declare/src/lib.rs /^macro_rules! att_local {$/;" M +att_local builtins_rust/shopt/src/lib.rs /^pub static att_local: i32 = 0x0000020; \/* variable is local to a function *\/$/;" v +att_local variables.h /^#define att_local /;" d +att_lowercase builtins_rust/declare/src/lib.rs /^macro_rules! att_lowercase {$/;" M +att_lowercase builtins_rust/shopt/src/lib.rs /^pub static att_lowercase: i32 = 0x0000200; \/* word converted to lowercase on assignment *\/$/;" v +att_lowercase variables.h /^#define att_lowercase /;" d +att_nameref builtins_rust/declare/src/lib.rs /^macro_rules! att_nameref {$/;" M +att_nameref builtins_rust/set/src/lib.rs /^macro_rules! att_nameref {$/;" M +att_nameref builtins_rust/shopt/src/lib.rs /^pub static att_nameref: i32 = 0x0000800; \/* word is a name reference *\/$/;" v +att_nameref variables.h /^#define att_nameref /;" d +att_noassign builtins_rust/common/src/lib.rs /^macro_rules! att_noassign {$/;" M +att_noassign builtins_rust/declare/src/lib.rs /^macro_rules! att_noassign {$/;" M +att_noassign builtins_rust/getopts/src/lib.rs /^macro_rules! att_noassign {$/;" M +att_noassign builtins_rust/shopt/src/lib.rs /^pub static att_noassign: i32 = 0x0004000; \/* assignment not allowed *\/$/;" v +att_noassign variables.h /^#define att_noassign /;" d +att_nofree builtins_rust/shopt/src/lib.rs /^pub static att_nofree: i32 = 0x0020000; \/* do not free value on unset *\/$/;" v +att_nofree variables.h /^#define att_nofree /;" d +att_nounset builtins_rust/common/src/lib.rs /^macro_rules! att_nounset {$/;" M +att_nounset builtins_rust/set/src/lib.rs /^macro_rules! att_nounset {$/;" M +att_nounset builtins_rust/shopt/src/lib.rs /^pub static att_nounset: i32 = 0x0002000; \/* cannot unset *\/$/;" v +att_nounset variables.h /^#define att_nounset /;" d +att_propagate builtins_rust/declare/src/lib.rs /^macro_rules! att_propagate {$/;" M +att_propagate builtins_rust/shopt/src/lib.rs /^pub static att_propagate: i32 = 0x0200000; \/* propagate to previous scope *\/$/;" v +att_propagate variables.h /^#define att_propagate /;" d +att_readonly builtins_rust/common/src/lib.rs /^macro_rules! att_readonly {$/;" M +att_readonly builtins_rust/declare/src/lib.rs /^macro_rules! att_readonly {$/;" M +att_readonly builtins_rust/getopts/src/lib.rs /^macro_rules! att_readonly {$/;" M +att_readonly builtins_rust/set/src/lib.rs /^macro_rules! att_readonly {$/;" M +att_readonly builtins_rust/shopt/src/lib.rs /^pub static att_readonly: i32 = 0x0000002; \/* cannot change *\/$/;" v +att_readonly variables.h /^#define att_readonly /;" d +att_regenerate builtins_rust/shopt/src/lib.rs /^pub static att_regenerate: i32 = 0x0040000; \/* regenerate when exported *\/$/;" v +att_regenerate variables.h /^#define att_regenerate /;" d +att_special builtins_rust/shopt/src/lib.rs /^pub static att_special: i32 = 0x0010000; \/* requires special handling *\/$/;" v +att_special variables.h /^#define att_special /;" d +att_tempvar builtins_rust/declare/src/lib.rs /^macro_rules! att_tempvar {$/;" M +att_tempvar builtins_rust/shopt/src/lib.rs /^pub static att_tempvar: i32 = 0x0100000; \/* variable came from the temp environment *\/$/;" v +att_tempvar variables.h /^#define att_tempvar /;" d +att_trace builtins_rust/declare/src/lib.rs /^macro_rules! att_trace {$/;" M +att_trace builtins_rust/shopt/src/lib.rs /^pub static att_trace: i32 = 0x0000080; \/* function is traced with DEBUG trap *\/$/;" v +att_trace variables.h /^#define att_trace /;" d +att_uppercase builtins_rust/declare/src/lib.rs /^macro_rules! att_uppercase {$/;" M +att_uppercase builtins_rust/shopt/src/lib.rs /^pub static att_uppercase: i32 = 0x0000100; \/* word converted to uppercase on assignment *\/$/;" v +att_uppercase variables.h /^#define att_uppercase /;" d +attach vendor/nix/src/sys/ptrace/bsd.rs /^pub fn attach(pid: Pid) -> Result<()> {$/;" f +attach vendor/nix/src/sys/ptrace/linux.rs /^pub fn attach(pid: Pid) -> Result<()> {$/;" f +attempt_shell_completion bashline.c /^attempt_shell_completion (text, start, end)$/;" f file: +attemptfunc lib/readline/readline.h /^ rl_completion_func_t *attemptfunc;$/;" m struct:readline_state typeref:typename:rl_completion_func_t * +attemptfunc r_readline/src/lib.rs /^ pub attemptfunc: rl_completion_func_t,$/;" m struct:readline_state +attmask_int builtins_rust/shopt/src/lib.rs /^pub static attmask_int: i32 = 0x00ff000;$/;" v +attmask_int variables.h /^#define attmask_int /;" d +attmask_scope builtins_rust/shopt/src/lib.rs /^pub static attmask_scope: i32 = 0x0f00000;$/;" v +attmask_scope variables.h /^#define attmask_scope /;" d +attmask_user builtins_rust/shopt/src/lib.rs /^pub static attmask_user: i32 = 0x0000fff;$/;" v +attmask_user variables.h /^#define attmask_user /;" d +attr vendor/syn/src/lib.rs /^mod attr;$/;" n +attr vendor/thiserror-impl/src/lib.rs /^mod attr;$/;" n +attrgroup_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type attrgroup_t = u32;$/;" t +attribute_hidden lib/intl/dcigettext.c /^const char *_nl_current_default_domain attribute_hidden$/;" v typeref:typename:const char * _nl_current_default_domain +attribute_hidden lib/intl/gettextP.h /^# define attribute_hidden$/;" d +attribute_hidden lib/intl/plural-exp.h /^# define attribute_hidden$/;" d +attributes builtins_rust/cd/src/lib.rs /^ attributes: i32, \/* export, readonly, array, invisible... *\/$/;" m struct:SHELL_VAR +attributes builtins_rust/common/src/lib.rs /^ pub attributes: i32, \/* export, readonly, array, invisible... *\/$/;" m struct:SHELL_VAR +attributes builtins_rust/declare/src/lib.rs /^ attributes: i32, \/* export, readonly, array, invisible... *\/$/;" m struct:SHELL_VAR +attributes builtins_rust/fc/src/lib.rs /^ attributes: i32,$/;" m struct:SHELL_VAR +attributes builtins_rust/getopts/src/lib.rs /^ attributes: i32,$/;" m struct:SHELL_VAR +attributes builtins_rust/mapfile/src/intercdep.rs /^ pub attributes: c_int,$/;" m struct:variable +attributes builtins_rust/printf/src/intercdep.rs /^ pub attributes: c_int,$/;" m struct:variable +attributes builtins_rust/read/src/intercdep.rs /^ pub attributes: c_int,$/;" m struct:variable +attributes builtins_rust/set/src/lib.rs /^ pub attributes: i32,$/;" m struct:variable +attributes builtins_rust/setattr/src/intercdep.rs /^ pub attributes: c_int,$/;" m struct:variable +attributes builtins_rust/shopt/src/lib.rs /^ pub attributes: i32,$/;" m struct:variable +attributes builtins_rust/type/src/lib.rs /^ attributes: i32,$/;" m struct:SHELL_VAR +attributes builtins_rust/wait/src/lib.rs /^ pub attributes: c_int,$/;" m struct:variable +attributes r_bash/src/lib.rs /^ pub attributes: ::std::os::raw::c_int,$/;" m struct:variable +attributes variables.h /^ int attributes; \/* export, readonly, array, invisible... *\/$/;" m struct:variable typeref:typename:int +attributes vendor/fluent-bundle/src/message.rs /^ pub fn attributes(&self) -> impl Iterator> {$/;" P implementation:FluentMessage +attributes vendor/fluent-fallback/src/types.rs /^ pub attributes: Vec>,$/;" m struct:L10nMessage +attributes vendor/fluent-syntax/src/ast/mod.rs /^ pub attributes: Vec>,$/;" m struct:Message +attributes vendor/fluent-syntax/src/ast/mod.rs /^ pub attributes: Vec>,$/;" m struct:Term +attrs builtins_rust/read/src/lib.rs /^ attrs: libc::termios,$/;" m struct:tty_save +attrs vendor/pin-project-lite/tests/test.rs /^fn attrs() {$/;" f +attrs vendor/thiserror-impl/src/ast.rs /^ pub attrs: Attrs<'a>,$/;" m struct:Enum +attrs vendor/thiserror-impl/src/ast.rs /^ pub attrs: Attrs<'a>,$/;" m struct:Field +attrs vendor/thiserror-impl/src/ast.rs /^ pub attrs: Attrs<'a>,$/;" m struct:Struct +attrs vendor/thiserror-impl/src/ast.rs /^ pub attrs: Attrs<'a>,$/;" m struct:Variant +atype array.h /^enum atype {array_indexed, array_assoc}; \/* only array_indexed used *\/$/;" g +atype builtins_rust/mapfile/src/intercdep.rs /^pub type atype = c_uint;$/;" t +atype builtins_rust/read/src/intercdep.rs /^pub type atype = c_uint;$/;" t +atype r_bash/src/lib.rs /^pub type atype = u32;$/;" t +atype r_glob/src/lib.rs /^pub type atype = u32;$/;" t +atype r_readline/src/lib.rs /^pub type atype = u32;$/;" t +au_asid_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type au_asid_t = ::pid_t;$/;" t +au_id_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type au_id_t = ::uid_t;$/;" t +audioclient vendor/winapi/src/um/mod.rs /^#[cfg(feature = "audioclient")] pub mod audioclient;$/;" n +audiosessiontypes vendor/winapi/src/um/mod.rs /^#[cfg(feature = "audiosessiontypes")] pub mod audiosessiontypes;$/;" n +audit_tty lib/readline/readline.c /^audit_tty (char *string)$/;" f typeref:typename:void file: +augment_where_clause vendor/thiserror-impl/src/generics.rs /^ pub fn augment_where_clause(&self, generics: &Generics) -> WhereClause {$/;" P implementation:InferredBounds +autocd builtins_rust/shopt/src/lib.rs /^ static mut autocd: i32;$/;" v +autocd r_bash/src/lib.rs /^ pub static mut autocd: ::std::os::raw::c_int;$/;" v +autocd shell.c /^int autocd = 0;$/;" v typeref:typename:int +autocfg vendor/autocfg/README.md /^autocfg$/;" c +autocfg_version vendor/autocfg/src/tests.rs /^fn autocfg_version() {$/;" f +aux_file_p support/texi2dvi /^aux_file_p ()$/;" f +auxiliary vendor/pin-project-lite/tests/proper_unpin.rs /^mod auxiliary;$/;" n +auxiliary vendor/pin-project-lite/tests/test.rs /^mod auxiliary;$/;" n +available vendor/chunky-vec/src/lib.rs /^ fn available(&self) -> usize {$/;" P implementation:Chunk +avrt vendor/winapi/src/um/mod.rs /^#[cfg(feature = "avrt")] pub mod avrt;$/;" n +avx vendor/memchr/src/memchr/x86/mod.rs /^mod avx;$/;" n +avx vendor/memchr/src/memmem/prefilter/x86/mod.rs /^pub(crate) mod avx;$/;" n +avx vendor/memchr/src/memmem/x86/mod.rs /^pub(crate) mod avx;$/;" n +b lib/sh/mktime.c /^ struct tm *b;$/;" v typeref:struct:tm * +b vendor/async-trait/tests/test.rs /^ async fn b(&mut self) {$/;" P implementation:test_self_in_macro::String +b vendor/async-trait/tests/test.rs /^ async fn b(&mut self);$/;" P interface:test_self_in_macro::Trait +b vendor/bitflags/tests/compile-pass/visibility/pub_in.rs /^ mod b {$/;" n module:a +b vendor/libloading/src/test_helpers.rs /^ b: u32,$/;" m struct:S +b vendor/libloading/tests/functions.rs /^ b: u32,$/;" m struct:S +b vendor/memoffset/src/offset_of.rs /^ b: [u8; 2],$/;" m struct:tests::const_fn_offset::test_fn::Foo +b vendor/memoffset/src/offset_of.rs /^ b: [u8; 2],$/;" m struct:tests::const_offset::Foo +b vendor/memoffset/src/offset_of.rs /^ b: [u8; 2],$/;" m struct:tests::offset_simple::Foo +b vendor/memoffset/src/offset_of.rs /^ b: [u8; 2],$/;" m struct:tests::offset_simple_packed::Foo +b vendor/memoffset/src/offset_of.rs /^ b: [u8; 2],$/;" m struct:tests::test_raw_field::Foo +b vendor/memoffset/src/offset_of.rs /^ b: core::cell::Cell,$/;" m struct:tests::const_offset_interior_mutable::Foo +b vendor/memoffset/src/span_of.rs /^ b: [u8; 2],$/;" m struct:tests::span_simple::Foo +b vendor/memoffset/src/span_of.rs /^ b: [u8; 2],$/;" m struct:tests::span_simple_packed::Foo +b vendor/thiserror/tests/ui/duplicate-struct-source.rs /^ b: anyhow::Error,$/;" m struct:ErrorStruct +b_buffer input.h /^ char *b_buffer; \/* The buffer that holds characters read. *\/$/;" m struct:BSTREAM typeref:typename:char * +b_buffer r_bash/src/lib.rs /^ pub b_buffer: *mut ::std::os::raw::c_char,$/;" m struct:BSTREAM +b_fd input.h /^ int b_fd;$/;" m struct:BSTREAM typeref:typename:int +b_fd r_bash/src/lib.rs /^ pub b_fd: ::std::os::raw::c_int,$/;" m struct:BSTREAM +b_fill_buffer input.c /^b_fill_buffer (bp)$/;" f file: +b_flag input.h /^ int b_flag; \/* Flag values. *\/$/;" m struct:BSTREAM typeref:typename:int +b_flag r_bash/src/lib.rs /^ pub b_flag: ::std::os::raw::c_int,$/;" m struct:BSTREAM +b_inputp input.h /^ size_t b_inputp; \/* The input pointer, index into b_buffer. *\/$/;" m struct:BSTREAM typeref:typename:size_t +b_inputp r_bash/src/lib.rs /^ pub b_inputp: usize,$/;" m struct:BSTREAM +b_size input.h /^ size_t b_size; \/* How big the buffer is. *\/$/;" m struct:BSTREAM typeref:typename:size_t +b_size r_bash/src/lib.rs /^ pub b_size: usize,$/;" m struct:BSTREAM +b_used input.h /^ size_t b_used; \/* How much of the buffer we're using, *\/$/;" m struct:BSTREAM typeref:typename:size_t +b_used r_bash/src/lib.rs /^ pub b_used: usize,$/;" m struct:BSTREAM +backslash_u vendor/proc-macro2/src/parse.rs /^fn backslash_u(chars: &mut I) -> bool$/;" f +backslash_u vendor/syn/src/lit.rs /^ fn backslash_u(mut s: &str) -> (char, &str) {$/;" f module:value +backslash_x vendor/syn/src/lit.rs /^ fn backslash_x(s: &S) -> (u8, &S)$/;" f module:value +backslash_x_byte vendor/proc-macro2/src/parse.rs /^fn backslash_x_byte(chars: &mut I) -> bool$/;" f +backslash_x_char vendor/proc-macro2/src/parse.rs /^fn backslash_x_char(chars: &mut I) -> bool$/;" f +backtrace vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn backtrace(buf: *mut *mut ::c_void, sz: ::c_int) -> ::c_int;$/;" f +backtrace vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn backtrace(addrlist: *mut *mut ::c_void, len: ::size_t) -> ::size_t;$/;" f +backtrace vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn backtrace(addrlist: *mut *mut ::c_void, len: ::size_t) -> ::size_t;$/;" f +backtrace vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn backtrace(buf: *mut *mut ::c_void, sz: ::c_int) -> ::c_int;$/;" f +backtrace vendor/libc/src/unix/solarish/mod.rs /^ pub fn backtrace(buffer: *mut *mut ::c_void, size: ::c_int) -> ::c_int;$/;" f +backtrace vendor/thiserror-impl/src/attr.rs /^ pub backtrace: Option<&'a Attribute>,$/;" m struct:Attrs +backtrace vendor/thiserror/tests/test_backtrace.rs /^ backtrace: Arc,$/;" m struct:structs::ArcBacktrace +backtrace vendor/thiserror/tests/test_backtrace.rs /^ backtrace: Arc,$/;" m struct:structs::ArcBacktraceFrom +backtrace vendor/thiserror/tests/test_backtrace.rs /^ backtrace: Backtrace,$/;" m struct:structs::BacktraceFrom +backtrace vendor/thiserror/tests/test_backtrace.rs /^ backtrace: Backtrace,$/;" m struct:structs::ExplicitBacktrace +backtrace vendor/thiserror/tests/test_backtrace.rs /^ backtrace: Backtrace,$/;" m struct:structs::PlainBacktrace +backtrace vendor/thiserror/tests/test_backtrace.rs /^ backtrace: Option,$/;" m struct:structs::OptBacktrace +backtrace vendor/thiserror/tests/test_backtrace.rs /^ backtrace: Option,$/;" m struct:structs::OptBacktraceFrom +backtrace vendor/thiserror/tests/test_backtrace.rs /^ backtrace: std::backtrace::Backtrace,$/;" m struct:InnerBacktrace +backtrace vendor/thiserror/tests/test_option.rs /^ backtrace: Backtrace,$/;" m struct:structs::OptSourceAlwaysBacktrace +backtrace vendor/thiserror/tests/test_option.rs /^ backtrace: Option,$/;" m struct:structs::AlwaysSourceOptBacktrace +backtrace vendor/thiserror/tests/test_option.rs /^ backtrace: Option,$/;" m struct:structs::NoSourceOptBacktrace +backtrace vendor/thiserror/tests/test_option.rs /^ backtrace: Option,$/;" m struct:structs::OptSourceOptBacktrace +backtrace_async vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn backtrace_async($/;" f +backtrace_field vendor/thiserror-impl/src/prop.rs /^ pub(crate) fn backtrace_field(&self) -> Option<&Field> {$/;" P implementation:Struct +backtrace_field vendor/thiserror-impl/src/prop.rs /^ pub(crate) fn backtrace_field(&self) -> Option<&Field> {$/;" P implementation:Variant +backtrace_field vendor/thiserror-impl/src/prop.rs /^fn backtrace_field<'a, 'b>(fields: &'a [Field<'b>]) -> Option<&'a Field<'b>> {$/;" f +backtrace_from_fp vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn backtrace_from_fp($/;" f +backtrace_image_offsets vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn backtrace_image_offsets($/;" f +backtrace_symbols vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn backtrace_symbols(addrs: *const *mut ::c_void, sz: ::c_int) -> *mut *mut ::c_char;$/;" f +backtrace_symbols vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn backtrace_symbols(addrlist: *const *mut ::c_void, len: ::size_t) -> *mut *mut ::c_cha/;" f +backtrace_symbols vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn backtrace_symbols(addrlist: *const *mut ::c_void, len: ::size_t) -> *mut *mut ::c_cha/;" f +backtrace_symbols vendor/libc/src/unix/solarish/mod.rs /^ pub fn backtrace_symbols(buffer: *const *mut ::c_void, size: ::c_int) -> *mut *mut ::c_char;$/;" f +backtrace_symbols_fd vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn backtrace_symbols_fd(addrs: *const *mut ::c_void, sz: ::c_int, fd: ::c_int);$/;" f +backtrace_symbols_fd vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn backtrace_symbols_fd($/;" f +backtrace_symbols_fd vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn backtrace_symbols_fd($/;" f +backtrace_symbols_fd vendor/libc/src/unix/solarish/mod.rs /^ pub fn backtrace_symbols_fd(buffer: *const *mut ::c_void, size: ::c_int, fd: ::c_int);$/;" f +backtrace_symbols_fmt vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn backtrace_symbols_fmt($/;" f +bad_fstype vendor/nix/test/test_nmount.rs /^fn bad_fstype() {$/;" f +bail vendor/libc/src/unix/solarish/compat.rs /^unsafe fn bail(fdm: ::c_int, fds: ::c_int) -> ::c_int {$/;" f +bang-history configure.ac /^AC_ARG_ENABLE(bang-history, AC_HELP_STRING([--enable-bang-history], [turn on csh-style history s/;" e +bar vendor/async-trait/tests/test.rs /^ async fn bar(&self) {$/;" P implementation:issue45::Impl +bar vendor/async-trait/tests/test.rs /^ async fn bar(&self);$/;" P interface:issue45::Child +base lib/sh/snprintf.c /^ char *base; \/* needed for [v]asprintf *\/$/;" m struct:DATA typeref:typename:char * file: +base vendor/futures/tests/stream.rs /^ base: u8,$/;" m struct:flatten_unordered::Interchanger +base vendor/nix/src/ifaddrs.rs /^ base: *mut libc::ifaddrs,$/;" m struct:InterfaceAddressIterator +base vendor/nix/src/sys/uio.rs /^ pub base: usize,$/;" m struct:RemoteIoVec +base10_digits vendor/syn/src/lit.rs /^ pub fn base10_digits(&self) -> &str {$/;" P implementation:LitFloat +base10_digits vendor/syn/src/lit.rs /^ pub fn base10_digits(&self) -> &str {$/;" P implementation:LitInt +base10_parse vendor/syn/src/lit.rs /^ pub fn base10_parse(&self) -> Result$/;" P implementation:LitFloat +base10_parse vendor/syn/src/lit.rs /^ pub fn base10_parse(&self) -> Result$/;" P implementation:LitInt +base_dir_filter vendor/syn/tests/repo/mod.rs /^pub fn base_dir_filter(entry: &DirEntry) -> bool {$/;" f +base_pathname general.c /^base_pathname (string)$/;" f +base_pathname r_bash/src/lib.rs /^ pub fn base_pathname(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +base_pathname r_glob/src/lib.rs /^ pub fn base_pathname(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +base_pathname r_readline/src/lib.rs /^ pub fn base_pathname(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +baseline vendor/syn/benches/file.rs /^fn baseline(b: &mut Bencher) {$/;" f +basename r_bash/src/lib.rs /^ pub fn basename(__filename: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +basename r_glob/src/lib.rs /^ pub fn basename(__filename: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +basename r_readline/src/lib.rs /^ pub fn basename(__filename: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +basetsd vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "basetsd")] pub mod basetsd;$/;" n +bash-malloc configure.ac /^AC_ARG_WITH(bash-malloc, AC_HELP_STRING([--with-bash-malloc], [use the Bash version of malloc]),/;" w +bash_add_history bashhist.c /^bash_add_history (line)$/;" f +bash_add_history r_bash/src/lib.rs /^ pub fn bash_add_history(arg1: *mut ::std::os::raw::c_char);$/;" f +bash_add_history r_bashhist/src/lib.rs /^pub unsafe extern "C" fn bash_add_history(mut line: *mut c_char) {$/;" f +bash_argv_initialized r_bash/src/lib.rs /^ pub static mut bash_argv_initialized: ::std::os::raw::c_int;$/;" v +bash_argv_initialized shell.c /^int bash_argv_initialized = 0;$/;" v typeref:typename:int +bash_backward_kill_shellword bashline.c /^bash_backward_kill_shellword (count, key)$/;" f file: +bash_backward_shellword bashline.c /^bash_backward_shellword (count, key)$/;" f file: +bash_badsub_errmsg arrayfunc.c /^const char * const bash_badsub_errmsg = N_("bad array subscript");$/;" v typeref:typename:const char * const +bash_brace_completion bracecomp.c /^bash_brace_completion (count, ignore)$/;" f +bash_clear_history bashhist.c /^bash_clear_history ()$/;" f typeref:typename:void +bash_clear_history builtins_rust/history/src/intercdep.rs /^ pub fn bash_clear_history();$/;" f +bash_clear_history r_bash/src/lib.rs /^ pub fn bash_clear_history();$/;" f +bash_clear_history r_bashhist/src/lib.rs /^pub unsafe extern "C" fn bash_clear_history()$/;" f +bash_command_name_stat_hook bashline.c /^bash_command_name_stat_hook (name)$/;" f file: +bash_complete_command bashline.c /^bash_complete_command (ignore, ignore2)$/;" f file: +bash_complete_command_internal bashline.c /^bash_complete_command_internal (what_to_do)$/;" f file: +bash_complete_filename bashline.c /^bash_complete_filename (ignore, ignore2)$/;" f file: +bash_complete_filename_internal bashline.c /^bash_complete_filename_internal (what_to_do)$/;" f file: +bash_complete_hostname bashline.c /^bash_complete_hostname (ignore, ignore2)$/;" f file: +bash_complete_hostname_internal bashline.c /^bash_complete_hostname_internal (what_to_do)$/;" f file: +bash_complete_username bashline.c /^bash_complete_username (ignore, ignore2)$/;" f file: +bash_complete_username_internal bashline.c /^bash_complete_username_internal (what_to_do)$/;" f file: +bash_complete_variable bashline.c /^bash_complete_variable (ignore, ignore2)$/;" f file: +bash_complete_variable_internal bashline.c /^bash_complete_variable_internal (what_to_do)$/;" f file: +bash_completer_word_break_characters bashline.c /^static char *bash_completer_word_break_characters = " \\t\\n\\"'@><=;|&(:";$/;" v typeref:typename:char * file: +bash_copyright builtins_rust/help/src/lib.rs /^ static bash_copyright: *const c_char;$/;" v +bash_copyright version.c /^const char * const bash_copyright = N_("Copyright (C) 2020 Free Software Foundation, Inc.");$/;" v typeref:typename:const char * const +bash_dabbrev_expand bashline.c /^bash_dabbrev_expand (count, key)$/;" f file: +bash_default_completion bashline.c /^bash_default_completion (text, start, end, qc, compflags)$/;" f +bash_default_completion builtins_rust/complete/src/lib.rs /^ fn bash_default_completion($/;" f +bash_default_completion r_bash/src/lib.rs /^ pub fn bash_default_completion($/;" f +bash_delete_haitent r_bashhist/src/lib.rs /^pub unsafe extern "C" fn bash_delete_haitent(mut i:c_int) -> c_int$/;" f +bash_delete_histent bashhist.c /^bash_delete_histent (i)$/;" f +bash_delete_histent builtins_rust/history/src/intercdep.rs /^ pub fn bash_delete_histent(i: c_int) -> c_int;$/;" f +bash_delete_histent r_bash/src/lib.rs /^ pub fn bash_delete_histent(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +bash_delete_history_range bashhist.c /^bash_delete_history_range (first, last)$/;" f +bash_delete_history_range builtins_rust/history/src/intercdep.rs /^ pub fn bash_delete_history_range (first: c_int, last: c_int) -> c_int;$/;" f +bash_delete_history_range r_bash/src/lib.rs /^ pub fn bash_delete_history_range($/;" f +bash_delete_history_range r_bashhist/src/lib.rs /^pub unsafe extern "C" fn bash_delete_history_range(mut first:c_int, mut last:c_int) -> c_int$/;" f +bash_delete_last_history bashhist.c /^bash_delete_last_history ()$/;" f typeref:typename:int +bash_delete_last_history builtins_rust/fc/src/lib.rs /^ fn bash_delete_last_history() -> i32;$/;" f +bash_delete_last_history builtins_rust/history/src/intercdep.rs /^ pub fn bash_delete_last_history() -> c_int;$/;" f +bash_delete_last_history r_bash/src/lib.rs /^ pub fn bash_delete_last_history() -> ::std::os::raw::c_int;$/;" f +bash_delete_last_history r_bashhist/src/lib.rs /^pub unsafe extern "C" fn bash_delete_last_history() -> c_int$/;" f +bash_dequote_filename bashline.c /^bash_dequote_filename (text, quote_char)$/;" f file: +bash_dequote_text bashline.c /^bash_dequote_text (text)$/;" f +bash_dequote_text r_bash/src/lib.rs /^ pub fn bash_dequote_text(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char/;" f +bash_directory_completion_hook bashline.c /^bash_directory_completion_hook (dirname)$/;" f file: +bash_directory_completion_matches bashline.c /^bash_directory_completion_matches (text)$/;" f +bash_directory_completion_matches r_bash/src/lib.rs /^ pub fn bash_directory_completion_matches($/;" f +bash_directory_expansion bashline.c /^bash_directory_expansion (dirname)$/;" f file: +bash_event_hook bashline.c /^bash_event_hook ()$/;" f typeref:typename:int file: +bash_execute_unix_command bashline.c /^bash_execute_unix_command (count, key)$/;" f +bash_execute_unix_command builtins_rust/bind/src/lib.rs /^ fn bash_execute_unix_command(count: i32, key: i32) -> i32;$/;" f +bash_execute_unix_command r_bash/src/lib.rs /^ pub fn bash_execute_unix_command($/;" f +bash_filename_rewrite_hook bashline.c /^bash_filename_rewrite_hook (fname, fnlen)$/;" f file: +bash_filename_stat_hook bashline.c /^bash_filename_stat_hook (dirname)$/;" f file: +bash_forward_shellword bashline.c /^bash_forward_shellword (count, key)$/;" f file: +bash_getcwd_errstr general.c /^const char * const bash_getcwd_errstr = N_("getcwd: cannot access parent directories");$/;" v typeref:typename:const char * const +bash_glob_complete_word bashline.c /^bash_glob_complete_word (count, key)$/;" f file: +bash_glob_completion_internal bashline.c /^bash_glob_completion_internal (what_to_do)$/;" f file: +bash_glob_expand_word bashline.c /^bash_glob_expand_word (count, key)$/;" f file: +bash_glob_list_expansions bashline.c /^bash_glob_list_expansions (count, key)$/;" f file: +bash_glob_quote_filename bashline.c /^bash_glob_quote_filename (s, rtype, qcp)$/;" f file: +bash_global_sym_addr CWRU/misc/hpux10-dlfcn.h /^char *bash_global_sym_addr;$/;" v typeref:typename:char * +bash_groupname_completion_function bashline.c /^bash_groupname_completion_function (text, state)$/;" f +bash_groupname_completion_function r_bash/src/lib.rs /^ pub fn bash_groupname_completion_function($/;" f +bash_history_disable bashhist.c /^bash_history_disable ()$/;" f typeref:typename:void +bash_history_disable builtins_rust/set/src/lib.rs /^ fn bash_history_disable();$/;" f +bash_history_disable r_bash/src/lib.rs /^ pub fn bash_history_disable();$/;" f +bash_history_disable r_bashhist/src/lib.rs /^pub unsafe extern "C" fn bash_history_disable()$/;" f +bash_history_enable bashhist.c /^bash_history_enable ()$/;" f typeref:typename:void +bash_history_enable builtins_rust/set/src/lib.rs /^ fn bash_history_enable();$/;" f +bash_history_enable r_bash/src/lib.rs /^ pub fn bash_history_enable();$/;" f +bash_history_enable r_bashhist/src/lib.rs /^pub unsafe extern "C" fn bash_history_enable()$/;" f +bash_history_inhibit_expansion bashhist.c /^bash_history_inhibit_expansion (string, i)$/;" f file: +bash_history_inhibit_expansion r_bashhist/src/lib.rs /^unsafe extern "C" fn bash_history_inhibit_expansion(mut string: *mut c_char, mut i: c_int) -> c_/;" f +bash_history_reinit bashhist.c /^bash_history_reinit (interact)$/;" f +bash_history_reinit r_bash/src/lib.rs /^ pub fn bash_history_reinit(arg1: ::std::os::raw::c_int);$/;" f +bash_history_reinit r_bashhist/src/lib.rs /^pub unsafe extern "C" fn bash_history_reinit(mut interact:c_int)$/;" f +bash_ignore_everything bashline.c /^bash_ignore_everything (names)$/;" f file: +bash_ignore_filenames bashline.c /^bash_ignore_filenames (names)$/;" f file: +bash_initialize_history bashhist.c /^bash_initialize_history ()$/;" f typeref:typename:void +bash_initialize_history r_bash/src/lib.rs /^ pub fn bash_initialize_history();$/;" f +bash_initialize_history r_bashhist/src/lib.rs /^pub unsafe extern "C" fn bash_initialize_history() {$/;" f +bash_input input.c /^BASH_INPUT bash_input;$/;" v typeref:typename:BASH_INPUT +bash_input r_bash/src/lib.rs /^ pub static mut bash_input: BASH_INPUT;$/;" v +bash_input r_bashhist/src/lib.rs /^ static mut bash_input: BASH_INPUT;$/;" v +bash_input_fd_changed input.c /^int bash_input_fd_changed;$/;" v typeref:typename:int +bash_input_fd_changed r_bash/src/lib.rs /^ pub static mut bash_input_fd_changed: ::std::os::raw::c_int;$/;" v +bash_kill_shellword bashline.c /^bash_kill_shellword (count, key)$/;" f file: +bash_license builtins_rust/help/src/lib.rs /^ static bash_license: *const c_char;$/;" v +bash_license version.c /^const char * const bash_license = N_("License GPLv3+: GNU GPL version 3 or later <=;|&(:";$/;" v typeref:typename:char * file: +bash_possible_command_completions bashline.c /^bash_possible_command_completions (ignore, ignore2)$/;" f file: +bash_possible_filename_completions bashline.c /^bash_possible_filename_completions (ignore, ignore2)$/;" f file: +bash_possible_hostname_completions bashline.c /^bash_possible_hostname_completions (ignore, ignore2)$/;" f file: +bash_possible_username_completions bashline.c /^bash_possible_username_completions (ignore, ignore2)$/;" f file: +bash_possible_variable_completions bashline.c /^bash_possible_variable_completions (ignore, ignore2)$/;" f file: +bash_progcomp_ignore_filenames bashline.c /^bash_progcomp_ignore_filenames (names)$/;" f file: +bash_push_line bashline.c /^bash_push_line ()$/;" f typeref:typename:int file: +bash_quote_filename bashline.c /^bash_quote_filename (s, rtype, qcp)$/;" f file: +bash_re_edit bashline.c /^bash_re_edit (line)$/;" f +bash_re_edit r_bash/src/lib.rs /^ pub fn bash_re_edit(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +bash_readline_initialized bashline.c /^int bash_readline_initialized = 0;$/;" v typeref:typename:int +bash_readline_initialized builtins_rust/bind/src/lib.rs /^ static bash_readline_initialized: i32;$/;" v +bash_readline_initialized builtins_rust/read/src/intercdep.rs /^ pub static mut bash_readline_initialized : c_int;$/;" v +bash_readline_initialized r_bash/src/lib.rs /^ pub static mut bash_readline_initialized: ::std::os::raw::c_int;$/;" v +bash_servicename_completion_function bashline.c /^bash_servicename_completion_function (text, state)$/;" f +bash_servicename_completion_function r_bash/src/lib.rs /^ pub fn bash_servicename_completion_function($/;" f +bash_set_history builtins_rust/set/src/lib.rs /^unsafe extern "C" fn bash_set_history(on_or_off: i32, option_name: *mut libc::c_char) -> i32 {$/;" f +bash_special_tilde_expansions general.c /^bash_special_tilde_expansions (text)$/;" f file: +bash_specific_completion bashline.c /^bash_specific_completion (what_to_do, generator)$/;" f file: +bash_syslog_history bashhist.c /^bash_syslog_history (line)$/;" f +bash_tilde_expand general.c /^bash_tilde_expand (s, assign_p)$/;" f +bash_tilde_expand r_bash/src/lib.rs /^ pub fn bash_tilde_expand($/;" f +bash_tilde_expand r_glob/src/lib.rs /^ pub fn bash_tilde_expand($/;" f +bash_tilde_expand r_readline/src/lib.rs /^ pub fn bash_tilde_expand($/;" f +bash_tilde_find_word general.c /^bash_tilde_find_word (s, flags, lenp)$/;" f +bash_tilde_find_word r_bash/src/lib.rs /^ pub fn bash_tilde_find_word($/;" f +bash_tilde_find_word r_glob/src/lib.rs /^ pub fn bash_tilde_find_word($/;" f +bash_tilde_find_word r_readline/src/lib.rs /^ pub fn bash_tilde_find_word($/;" f +bash_tilde_prefixes general.c /^static char **bash_tilde_prefixes;$/;" v typeref:typename:char ** file: +bash_tilde_prefixes2 general.c /^static char **bash_tilde_prefixes2;$/;" v typeref:typename:char ** file: +bash_tilde_suffixes general.c /^static char **bash_tilde_suffixes;$/;" v typeref:typename:char ** file: +bash_tilde_suffixes2 general.c /^static char **bash_tilde_suffixes2;$/;" v typeref:typename:char ** file: +bash_transpose_shellwords bashline.c /^bash_transpose_shellwords (count, key)$/;" f file: +bash_vi_complete bashline.c /^bash_vi_complete (count, key)$/;" f file: +bashgetopt.o builtins/Makefile.in /^bashgetopt.o: $(BASHINCDIR)\/chartypes.h$/;" t +bashgetopt.o builtins/Makefile.in /^bashgetopt.o: $(topdir)\/command.h $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/error.h$/;" t +bashgetopt.o builtins/Makefile.in /^bashgetopt.o: $(topdir)\/make_cmd.h $(topdir)\/subst.h $(topdir)\/sig.h$/;" t +bashgetopt.o builtins/Makefile.in /^bashgetopt.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/bashjmp.h$/;" t +bashgetopt.o builtins/Makefile.in /^bashgetopt.o: $(topdir)\/unwind_prot.h $(topdir)\/dispose_cmd.h$/;" t +bashgetopt.o builtins/Makefile.in /^bashgetopt.o: $(topdir)\/variables.h $(topdir)\/conftypes.h $(topdir)\/quit.h $(BASHINCDIR)\/max/;" t +bashgetopt.o builtins/Makefile.in /^bashgetopt.o: ..\/config.h $(topdir)\/bashansi.h $(BASHINCDIR)\/ansi_stdlib.h$/;" t +bashgetopt.o builtins/Makefile.in /^bashgetopt.o: ..\/pathnames.h $(topdir)\/externs.h $(srcdir)\/common.h$/;" t +bashgetopt.o builtins/Makefile.in /^bashgetopt.o: bashgetopt.c$/;" t +bashhist.o Makefile.in /^bashhist.o: $(GLOB_LIBSRC)\/strmatch.h ${GLOB_LIBSRC}\/glob.h$/;" t +bashhist.o Makefile.in /^bashhist.o: $(HIST_LIBSRC)\/history.h $(HIST_LIBSRC)\/rlstdc.h$/;" t +bashhist.o Makefile.in /^bashhist.o: $(RL_LIBSRC)\/rltypedefs.h$/;" t +bashhist.o Makefile.in /^bashhist.o: $(srcdir)\/config-top.h$/;" t +bashhist.o Makefile.in /^bashhist.o: ${BASHINCDIR}\/filecntl.h$/;" t +bashhist.o Makefile.in /^bashhist.o: ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h bashhist.h assoc.h$/;" t +bashhist.o Makefile.in /^bashhist.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +bashhist.o Makefile.in /^bashhist.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/posixsta/;" t +bashhist.o Makefile.in /^bashhist.o: flags.h input.h parser.h pathexp.h $(DEFSRC)\/common.h bashline.h$/;" t +bashhist.o Makefile.in /^bashhist.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib./;" t +bashhist.o Makefile.in /^bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h$/;" t +bashhist.o Makefile.in /^bashhist.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +bashhist.o Makefile.in /^bashhist.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR/;" t +bashline.o Makefile.in /^bashline.o: $(DEFSRC)\/common.h $(GLOB_LIBSRC)\/glob.h alias.h$/;" t +bashline.o Makefile.in /^bashline.o: $(HIST_LIBSRC)\/history.h $(HIST_LIBSRC)\/rlstdc.h$/;" t +bashline.o Makefile.in /^bashline.o: $(RL_LIBSRC)\/chardefs.h $(RL_LIBSRC)\/readline.h$/;" t +bashline.o Makefile.in /^bashline.o: $(RL_LIBSRC)\/keymaps.h $(RL_LIBSRC)\/rlstdc.h$/;" t +bashline.o Makefile.in /^bashline.o: $(RL_LIBSRC)\/rlconf.h$/;" t +bashline.o Makefile.in /^bashline.o: $(RL_LIBSRC)\/rltypedefs.h ${RL_LIBSRC}\/rlmbutil.h$/;" t +bashline.o Makefile.in /^bashline.o: $(TILDE_LIBSRC)\/tilde.h$/;" t +bashline.o Makefile.in /^bashline.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +bashline.o Makefile.in /^bashline.o: ${DEFDIR}\/builtext.h$/;" t +bashline.o Makefile.in /^bashline.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +bashline.o Makefile.in /^bashline.o: builtins.h bashhist.h bashline.h execute_cmd.h findcmd.h pathexp.h$/;" t +bashline.o Makefile.in /^bashline.o: config.h bashtypes.h ${BASHINCDIR}\/posixstat.h bashansi.h ${BASHINCDIR}\/ansi_stdli/;" t +bashline.o Makefile.in /^bashline.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib./;" t +bashline.o Makefile.in /^bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h$/;" t +bashline.o Makefile.in /^bashline.o: pcomplete.h ${BASHINCDIR}\/chartypes.h input.h$/;" t +bashline.o Makefile.in /^bashline.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +bashline.o Makefile.in /^bashline.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR/;" t +bashline.o Makefile.in /^bashline.o: trap.h flags.h assoc.h $(BASHINCDIR)\/ocache.h$/;" t +bashline_reinitialize bashline.c /^bashline_reinitialize ()$/;" f typeref:typename:void +bashline_reinitialize r_bash/src/lib.rs /^ pub fn bashline_reinitialize();$/;" f +bashline_reset bashline.c /^bashline_reset ()$/;" f typeref:typename:void +bashline_reset r_bash/src/lib.rs /^ pub fn bashline_reset();$/;" f +bashline_reset_event_hook bashline.c /^bashline_reset_event_hook ()$/;" f typeref:typename:void +bashline_reset_event_hook builtins_rust/read/src/intercdep.rs /^ pub fn bashline_reset_event_hook() -> c_void;$/;" f +bashline_reset_event_hook r_bash/src/lib.rs /^ pub fn bashline_reset_event_hook();$/;" f +bashline_set_event_hook bashline.c /^bashline_set_event_hook ()$/;" f typeref:typename:void +bashline_set_event_hook builtins_rust/read/src/intercdep.rs /^ pub fn bashline_set_event_hook() -> c_void;$/;" f +bashline_set_event_hook r_bash/src/lib.rs /^ pub fn bashline_set_event_hook();$/;" f +bashrc_file shell.c /^static char *bashrc_file = DEFAULT_BASHRC;$/;" v typeref:typename:char * file: +basic vendor/bitflags/tests/basic.rs /^fn basic() {$/;" f +basic vendor/futures/tests/task_atomic_waker.rs /^fn basic() {$/;" f +basic vendor/pin-project-lite/tests/lint.rs /^pub mod basic {$/;" n +basic vendor/stdext/src/num/integer.rs /^ fn basic() {$/;" f module:tests +basic-clean Makefile.in /^basic-clean:$/;" t +basic_future_combinators vendor/futures/tests/future_basic_combinators.rs /^fn basic_future_combinators() {$/;" f +basic_try_future_combinators vendor/futures/tests/future_basic_combinators.rs /^fn basic_try_future_combinators() {$/;" f +basic_usage vendor/futures/tests/ready_queue.rs /^fn basic_usage() {$/;" f +bcmp r_bash/src/lib.rs /^ pub fn bcmp($/;" f +bcmp r_glob/src/lib.rs /^ pub fn bcmp($/;" f +bcmp r_readline/src/lib.rs /^ pub fn bcmp($/;" f +bcmp vendor/libc/src/solid/mod.rs /^ pub fn bcmp(arg1: *const c_void, arg2: *const c_void, arg3: size_t) -> c_int;$/;" f +bcoalesce lib/malloc/malloc.c /^bcoalesce (nu)$/;" f file: +bcopy lib/glob/glob.c /^# define bcopy(/;" d file: +bcopy lib/sh/oslib.c /^bcopy (s,d,n)$/;" f +bcopy lib/termcap/termcap.c /^# define bcopy(/;" d file: +bcopy lib/termcap/termcap.c /^#define bcopy(/;" d file: +bcopy lib/termcap/tparam.c /^# define bcopy(/;" d file: +bcopy lib/termcap/tparam.c /^#define bcopy(/;" d file: +bcopy r_bash/src/lib.rs /^ pub fn bcopy($/;" f +bcopy r_glob/src/lib.rs /^ pub fn bcopy($/;" f +bcopy r_readline/src/lib.rs /^ pub fn bcopy($/;" f +bcopy vendor/libc/src/solid/mod.rs /^ pub fn bcopy(arg1: *const c_void, arg2: *mut c_void, arg3: size_t);$/;" f +bcrypt vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "bcrypt")] pub mod bcrypt;$/;" n +before vendor/proc-macro2/src/fallback.rs /^ pub fn before(&self) -> Span {$/;" P implementation:Span +before vendor/proc-macro2/src/lib.rs /^ pub fn before(&self) -> Span {$/;" P implementation:Span +before vendor/proc-macro2/src/wrapper.rs /^ pub fn before(&self) -> Span {$/;" P implementation:Span +before_stop vendor/futures-executor/src/thread_pool.rs /^ before_stop: Option>,$/;" m struct:ThreadPoolBuilder +before_stop vendor/futures-executor/src/thread_pool.rs /^ pub fn before_stop(&mut self, f: F) -> &mut Self$/;" P implementation:ThreadPoolBuilder +beg lib/termcap/termcap.c /^ char *beg;$/;" m struct:buffer typeref:typename:char * file: +begin vendor/syn/src/buffer.rs /^ pub fn begin(&self) -> Cursor {$/;" P implementation:TokenBuffer +begin_unwind_frame builtins_rust/bind/src/lib.rs /^ fn begin_unwind_frame(tar: *mut c_char);$/;" f +begin_unwind_frame builtins_rust/command/src/lib.rs /^ fn begin_unwind_frame(_: *mut libc::c_char);$/;" f +begin_unwind_frame builtins_rust/fc/src/lib.rs /^ fn begin_unwind_frame(be: *mut c_char);$/;" f +begin_unwind_frame builtins_rust/jobs/src/lib.rs /^ fn begin_unwind_frame(str: *mut c_char);$/;" f +begin_unwind_frame builtins_rust/read/src/intercdep.rs /^ pub fn begin_unwind_frame(arg1: *mut c_char);$/;" f +begin_unwind_frame builtins_rust/source/src/lib.rs /^ fn begin_unwind_frame(str: *mut c_char);$/;" f +begin_unwind_frame r_bash/src/lib.rs /^ pub fn begin_unwind_frame(arg1: *mut ::std::os::raw::c_char);$/;" f +begin_unwind_frame r_jobs/src/lib.rs /^ fn begin_unwind_frame(_: *mut c_char);$/;" f +begin_unwind_frame unwind_prot.c /^begin_unwind_frame (tag)$/;" f +bench vendor/futures-util/benches_disabled/bilock.rs /^mod bench {$/;" n +bench vendor/syn/benches/rust.rs /^ pub fn bench(content: &str) -> Result<(), ()> {$/;" f module:librustc_parse +bench vendor/syn/benches/rust.rs /^ pub fn bench(content: &str) -> Result<(), ()> {$/;" f module:read_from_disk +bench vendor/syn/benches/rust.rs /^ pub fn bench(content: &str) -> Result<(), ()> {$/;" f module:syn_parse +bench vendor/syn/benches/rust.rs /^ pub fn bench(content: &str) -> Result<(), ()> {$/;" f module:tokenstream_parse +bench vendor/unicode-ident/benches/xid.rs /^fn bench(c: &mut Criterion, group_name: &str, string: String) {$/;" f +bench0 vendor/unicode-ident/benches/xid.rs /^fn bench0(c: &mut Criterion) {$/;" f +bench1 vendor/unicode-ident/benches/xid.rs /^fn bench1(c: &mut Criterion) {$/;" f +bench10 vendor/unicode-ident/benches/xid.rs /^fn bench10(c: &mut Criterion) {$/;" f +bench100 vendor/unicode-ident/benches/xid.rs /^fn bench100(c: &mut Criterion) {$/;" f +bench_block vendor/tinystr/benches/construct.rs /^macro_rules! bench_block {$/;" M +bench_block vendor/tinystr/benches/tinystr.rs /^macro_rules! bench_block {$/;" M +bench_insert_from_slice vendor/smallvec/benches/bench.rs /^fn bench_insert_from_slice(b: &mut Bencher) {$/;" f +bench_insert_many vendor/smallvec/benches/bench.rs /^fn bench_insert_many(b: &mut Bencher) {$/;" f +bench_macro_from_list vendor/smallvec/benches/bench.rs /^fn bench_macro_from_list(b: &mut Bencher) {$/;" f +bench_macro_from_list_vec vendor/smallvec/benches/bench.rs /^fn bench_macro_from_list_vec(b: &mut Bencher) {$/;" f +benches/bench.rs vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +benches/canonicalize.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +benches/construct.rs vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +benches/contexts/README.md vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +benches/file.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +benches/flatten_unordered.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +benches/futures_unordered.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +benches/langid.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +benches/likely_subtags.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +benches/negotiate.rs vendor/fluent-langneg/.cargo-checksum.json /^{"files":{"Cargo.toml":"1b11d8d30fe978704012e27981f8d50a3462319594b54ed2e71eaf85284d61eb","READM/;" s object:files +benches/parser.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +benches/parser.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +benches/parser_iai.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +benches/pluralrules.rs vendor/intl_pluralrules/.cargo-checksum.json /^{"files":{"Cargo.toml":"3b7451d96ed662827dd4163d64d96840fee1c4241c2480b8cdd91ef156ad7896","READM/;" s object:files +benches/resolver.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +benches/resolver_iai.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +benches/rust.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +benches/select.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +benches/sync_mpsc.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +benches/thread_notify.rs vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" s object:files +benches/tinystr.rs vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +benches/xid.rs vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +benches_disabled/bilock.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +between vendor/syn/src/verbatim.rs /^pub fn between<'a>(begin: ParseBuffer<'a>, end: ParseStream<'a>) -> TokenStream {$/;" f +bexpand builtins_rust/printf/src/lib.rs /^unsafe fn bexpand($/;" f +beyond test.c /^beyond ()$/;" f typeref:typename:void file: +bgp_add jobs.c /^bgp_add (pid, status)$/;" f file: +bgp_add r_jobs/src/lib.rs /^unsafe extern "C" fn bgp_add(mut pid: pid_t, mut status: c_int) -> *mut pidstat {$/;" f +bgp_clear jobs.c /^bgp_clear ()$/;" f typeref:typename:void file: +bgp_clear r_jobs/src/lib.rs /^unsafe extern "C" fn bgp_clear() {$/;" f +bgp_delete jobs.c /^bgp_delete (pid)$/;" f file: +bgp_delete r_jobs/src/lib.rs /^unsafe extern "C" fn bgp_delete(mut pid: pid_t) -> c_int {$/;" f +bgp_getindex jobs.c /^bgp_getindex ()$/;" f typeref:typename:ps_index_t file: +bgp_getindex r_jobs/src/lib.rs /^unsafe extern "C" fn bgp_getindex()-> ps_index_t$/;" f +bgp_resize jobs.c /^bgp_resize ()$/;" f typeref:typename:void file: +bgp_resize r_jobs/src/lib.rs /^unsafe extern "C" fn bgp_resize ()$/;" f +bgp_search jobs.c /^bgp_search (pid)$/;" f file: +bgp_search r_jobs/src/lib.rs /^unsafe extern "C" fn bgp_search(mut pid: pid_t) -> c_int {$/;" f +bgpids jobs.c /^struct bgpids bgpids = { 0, 0, 0, 0 };$/;" v typeref:struct:bgpids +bgpids jobs.h /^struct bgpids {$/;" s +bgpids r_bash/src/lib.rs /^pub struct bgpids {$/;" s +bgpids r_jobs/src/lib.rs /^pub static mut bgpids:bgpids = {$/;" v +bibaux_file_p support/texi2dvi /^bibaux_file_p ()$/;" f +bibtex_secondary_files support/texi2dvi /^bibtex_secondary_files ()$/;" f +bigint vendor/syn/src/lib.rs /^mod bigint;$/;" n +bigtime_t vendor/libc/src/unix/haiku/native.rs /^pub type bigtime_t = i64;$/;" t +bilock vendor/futures-util/src/lock/bilock.rs /^ bilock: &'a BiLock,$/;" m struct:BiLockAcquire +bilock vendor/futures-util/src/lock/bilock.rs /^ bilock: &'a BiLock,$/;" m struct:BiLockGuard +bilock vendor/futures-util/src/lock/mod.rs /^mod bilock;$/;" n +bin_str lib/readline/colors.h /^struct bin_str$/;" s +bin_str r_readline/src/lib.rs /^pub struct bin_str {$/;" s +binary_operator test.c /^binary_operator ()$/;" f typeref:typename:int file: +binary_search vendor/elsa/src/vec.rs /^ pub fn binary_search(&self, x: &T::Target) -> Result$/;" P implementation:FrozenVec +binary_search_by vendor/elsa/src/vec.rs /^ pub fn binary_search_by<'a, F>(&'a self, mut f: F) -> Result$/;" P implementation:FrozenVec +binary_search_by_key vendor/elsa/src/vec.rs /^ pub fn binary_search_by_key<'a, B, F>(&'a self, b: &B, mut f: F) -> Result$/;" P implementation:FrozenVec +binary_test r_bash/src/lib.rs /^ pub fn binary_test($/;" f +binary_test test.c /^binary_test (op, arg1, arg2, flags)$/;" f +bind vendor/libc/src/fuchsia/mod.rs /^ pub fn bind(socket: ::c_int, address: *const ::sockaddr, address_len: ::socklen_t) -> ::c_in/;" f +bind vendor/libc/src/unix/bsd/mod.rs /^ pub fn bind(socket: ::c_int, address: *const ::sockaddr, address_len: ::socklen_t) -> ::c_in/;" f +bind vendor/libc/src/unix/haiku/mod.rs /^ pub fn bind(socket: ::c_int, address: *const ::sockaddr, address_len: ::socklen_t) -> ::c_in/;" f +bind vendor/libc/src/unix/hermit/mod.rs /^ pub fn bind(s: ::c_int, name: *const ::sockaddr, namelen: ::socklen_t) -> ::c_int;$/;" f +bind vendor/libc/src/unix/linux_like/mod.rs /^ pub fn bind(socket: ::c_int, address: *const ::sockaddr, address_len: ::socklen_t) -> ::c_in/;" f +bind vendor/libc/src/unix/newlib/mod.rs /^ pub fn bind(fd: ::c_int, addr: *const sockaddr, len: socklen_t) -> ::c_int;$/;" f +bind vendor/libc/src/unix/redox/mod.rs /^ pub fn bind(socket: ::c_int, address: *const ::sockaddr, address_len: ::socklen_t) -> ::c_in/;" f +bind vendor/libc/src/unix/solarish/mod.rs /^ pub fn bind(socket: ::c_int, address: *const ::sockaddr, address_len: ::socklen_t) -> ::c_in/;" f +bind vendor/libc/src/vxworks/mod.rs /^ pub fn bind(fd: ::c_int, addr: *const sockaddr, len: socklen_t) -> ::c_int;$/;" f +bind vendor/libc/src/windows/mod.rs /^ pub fn bind(s: SOCKET, name: *const ::sockaddr, namelen: ::c_int) -> ::c_int;$/;" f +bind vendor/nix/src/sys/socket/mod.rs /^pub fn bind(fd: RawFd, addr: &dyn SockaddrLike) -> Result<()> {$/;" f +bind vendor/winapi/src/um/winsock2.rs /^ pub fn bind(s: SOCKET,$/;" f +bind.o builtins/Makefile.in /^bind.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h $(topdir)\/error.h$/;" t +bind.o builtins/Makefile.in /^bind.o: $(topdir)\/general.h $(topdir)\/xmalloc.h $(BASHINCDIR)\/maxpath.h $(topdir)\/bashline.h$/;" t +bind.o builtins/Makefile.in /^bind.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +bind.o builtins/Makefile.in /^bind.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $/;" t +bind.o builtins/Makefile.in /^bind.o: $(topdir)\/subst.h $(topdir)\/externs.h $(srcdir)\/bashgetopt.h$/;" t +bind.o builtins/Makefile.in /^bind.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +bind.o builtins/Makefile.in /^bind.o: bind.def$/;" t +bind.o lib/readline/Makefile.in /^bind.o: ansi_stdlib.h posixstat.h$/;" t +bind.o lib/readline/Makefile.in /^bind.o: bind.c$/;" t +bind.o lib/readline/Makefile.in /^bind.o: history.h rlstdc.h$/;" t +bind.o lib/readline/Makefile.in /^bind.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +bind.o lib/readline/Makefile.in /^bind.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +bind.o lib/readline/Makefile.in /^bind.o: rlprivate.h$/;" t +bind.o lib/readline/Makefile.in /^bind.o: rlshell.h$/;" t +bind.o lib/readline/Makefile.in /^bind.o: xmalloc.h$/;" t +bind_args shell.c /^bind_args (argv, arg_start, arg_end, start_index)$/;" f file: +bind_array_element arrayfunc.c /^bind_array_element (entry, ind, value, flags)$/;" f +bind_array_element builtins_rust/mapfile/src/intercdep.rs /^ pub fn bind_array_element(entry: *mut SHELL_VAR, ind: c_long, value: *mut c_char, flags: c_i/;" f +bind_array_element r_bash/src/lib.rs /^ pub fn bind_array_element($/;" f +bind_array_var_internal arrayfunc.c /^bind_array_var_internal (entry, ind, key, value, flags)$/;" f file: +bind_array_variable arrayfunc.c /^bind_array_variable (name, ind, value, flags)$/;" f +bind_array_variable builtins_rust/declare/src/lib.rs /^ fn bind_array_variable($/;" f +bind_array_variable r_bash/src/lib.rs /^ pub fn bind_array_variable($/;" f +bind_arrow_keys lib/readline/readline.c /^bind_arrow_keys (void)$/;" f typeref:typename:void file: +bind_arrow_keys_internal lib/readline/readline.c /^bind_arrow_keys_internal (Keymap map)$/;" f typeref:typename:void file: +bind_assoc_var_internal arrayfunc.c /^bind_assoc_var_internal (entry, hash, key, value, flags)$/;" f file: +bind_assoc_variable arrayfunc.c /^bind_assoc_variable (entry, name, key, value, flags)$/;" f +bind_assoc_variable builtins_rust/declare/src/lib.rs /^ fn bind_assoc_variable($/;" f +bind_assoc_variable r_bash/src/lib.rs /^ pub fn bind_assoc_variable($/;" f +bind_bracketed_paste_prefix lib/readline/readline.c /^bind_bracketed_paste_prefix (void)$/;" f typeref:typename:void file: +bind_comp_words pcomplete.c /^bind_comp_words (lwords)$/;" f file: +bind_compfunc_variables pcomplete.c /^bind_compfunc_variables (line, ind, lwords, cw, exported)$/;" f file: +bind_function r_bash/src/lib.rs /^ pub fn bind_function(arg1: *const ::std::os::raw::c_char, arg2: *mut COMMAND)$/;" f +bind_function variables.c /^bind_function (name, value)$/;" f +bind_function_def r_bash/src/lib.rs /^ pub fn bind_function_def($/;" f +bind_function_def variables.c /^bind_function_def (name, value, flags)$/;" f +bind_futures vendor/futures-macro/src/join.rs /^fn bind_futures(fut_exprs: Vec, span: Span) -> (Vec, Vec) {$/;" f +bind_global_variable builtins_rust/declare/src/lib.rs /^ fn bind_global_variable(name: *const c_char, value: *mut c_char, flags: i32) -> *mut SHELL_V/;" f +bind_global_variable r_bash/src/lib.rs /^ pub fn bind_global_variable($/;" f +bind_global_variable variables.c /^bind_global_variable (name, value, flags)$/;" f +bind_int_variable r_bash/src/lib.rs /^ pub fn bind_int_variable($/;" f +bind_int_variable variables.c /^bind_int_variable (lhs, rhs, flags)$/;" f +bind_invalid_envvar variables.c /^bind_invalid_envvar (name, value, flags)$/;" f file: +bind_keyseq_to_unix_command bashline.c /^bind_keyseq_to_unix_command (line)$/;" f +bind_keyseq_to_unix_command builtins_rust/bind/src/lib.rs /^ fn bind_keyseq_to_unix_command(line: *mut c_char) -> i32;$/;" f +bind_keyseq_to_unix_command r_bash/src/lib.rs /^ pub fn bind_keyseq_to_unix_command(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_i/;" f +bind_lastarg execute_cmd.c /^bind_lastarg (arg)$/;" f file: +bind_read_variable builtins_rust/read/src/lib.rs /^pub fn bind_read_variable(name: *mut c_char, value: *mut c_char) -> *mut SHELL_VAR {$/;" f +bind_tempenv_variable variables.c /^bind_tempenv_variable (name, value)$/;" f file: +bind_termcap_arrow_keys lib/readline/terminal.c /^bind_termcap_arrow_keys (Keymap map)$/;" f typeref:typename:void file: +bind_textdomain_codeset include/gettext.h /^# define bind_textdomain_codeset(/;" d +bind_textdomain_codeset lib/intl/intl-compat.c /^bind_textdomain_codeset (domainname, codeset)$/;" f +bind_textdomain_codeset lib/intl/libgnuintl.h.in /^# define bind_textdomain_codeset /;" d file: +bind_textdomain_codeset lib/intl/libgnuintl.h.in /^static inline char *bind_textdomain_codeset (const char *__domainname,$/;" f typeref:typename:char * file: +bind_textdomain_codeset r_bash/src/lib.rs /^ pub fn bind_textdomain_codeset($/;" f +bind_var_to_int builtins_rust/printf/src/intercdep.rs /^ pub fn bind_var_to_int(var: *mut c_char, val: c_long) -> *mut SHELL_VAR;$/;" f +bind_var_to_int builtins_rust/wait/src/lib.rs /^ fn bind_var_to_int(var: *mut c_char, val: intmax_t) -> *mut SHELL_VAR;$/;" f +bind_var_to_int r_bash/src/lib.rs /^ pub fn bind_var_to_int(arg1: *mut ::std::os::raw::c_char, arg2: intmax_t) -> *mut SHELL_VAR;$/;" f +bind_var_to_int variables.c /^bind_var_to_int (var, val)$/;" f +bind_variable builtins_rust/cd/src/lib.rs /^ fn bind_variable(lhs: *const c_char, rhs: *mut c_char, i: i32) -> *mut SHELL_VAR;$/;" f +bind_variable builtins_rust/common/src/lib.rs /^ fn bind_variable(name: *const c_char, value: *mut c_char, flags: i32) -> *mut SHELL_VAR;$/;" f +bind_variable builtins_rust/declare/src/lib.rs /^ fn bind_variable(name: *const c_char, value: *mut c_char, flags: i32) -> *mut SHELL_VAR;$/;" f +bind_variable builtins_rust/getopts/src/lib.rs /^ fn bind_variable(name: *const c_char, value: *mut c_char, flags: i32) -> *mut SHELL_VAR;$/;" f +bind_variable builtins_rust/read/src/intercdep.rs /^ pub fn bind_variable(name: *const c_char, value: *mut c_char, flags: c_int) -> *mut SHELL_VA/;" f +bind_variable builtins_rust/set/src/lib.rs /^ fn bind_variable(_: *const libc::c_char, _: *mut libc::c_char, _: i32) -> *mut SHELL_VAR;$/;" f +bind_variable builtins_rust/setattr/src/intercdep.rs /^ pub fn bind_variable(name: *const c_char, value: *mut c_char, flags: c_int) -> *mut SHELL_VA/;" f +bind_variable builtins_rust/shopt/src/lib.rs /^ fn bind_variable(_: *const libc::c_char, _: *mut libc::c_char, _: i32) -> *mut ShellVar;$/;" f +bind_variable expr.c /^SHELL_VAR *bind_variable () { return 0; }$/;" f typeref:typename:SHELL_VAR * +bind_variable r_bash/src/lib.rs /^ pub fn bind_variable($/;" f +bind_variable variables.c /^bind_variable (name, value, flags)$/;" f +bind_variable_internal variables.c /^bind_variable_internal (name, value, table, hflags, aflags)$/;" f file: +bind_variable_value builtins_rust/declare/src/lib.rs /^ fn bind_variable_value(var: *mut SHELL_VAR, name: *mut c_char, flags: i32) -> *mut SHELL_VAR/;" f +bind_variable_value r_bash/src/lib.rs /^ pub fn bind_variable_value($/;" f +bind_variable_value variables.c /^bind_variable_value (var, value, aflags)$/;" f +binding lib/intl/dcigettext.c /^ struct binding *binding;$/;" v typeref:struct:binding * +binding lib/intl/gettextP.h /^struct binding$/;" s +bindir Makefile.in /^bindir = @bindir@$/;" m +bindtextdom.$lo lib/intl/Makefile.in /^bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomai/;" t +bindtextdom.lo lib/intl/Makefile.in /^bindtextdom.lo: $(srcdir)\/bindtextdom.c$/;" t +bindtextdomain include/gettext.h /^# define bindtextdomain(/;" d +bindtextdomain lib/intl/intl-compat.c /^bindtextdomain (domainname, dirname)$/;" f +bindtextdomain lib/intl/libgnuintl.h.in /^# define bindtextdomain /;" d file: +bindtextdomain lib/intl/libgnuintl.h.in /^static inline char *bindtextdomain (const char *__domainname,$/;" f typeref:typename:char * file: +bindtextdomain r_bash/src/lib.rs /^ pub fn bindtextdomain($/;" f +binsize lib/malloc/malloc.c /^#define binsize(/;" d file: +binsizes lib/malloc/malloc.c /^static const unsigned long binsizes[NBUCKETS] = {$/;" v typeref:typename:const unsigned long[] file: +bitand vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^ fn bitand(self, other: Self) -> Self {$/;" P implementation:MyInt +bitand_assign vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^ fn bitand_assign(&mut self, other: Self) {$/;" P implementation:MyInt +bitflags vendor/bitflags/README.md /^bitflags$/;" c +bitflags vendor/bitflags/src/lib.rs /^macro_rules! bitflags {$/;" M +bitmap r_bash/src/lib.rs /^ pub bitmap: *mut ::std::os::raw::c_char,$/;" m struct:fd_bitmap +bitmap shell.h /^ char *bitmap;$/;" m struct:fd_bitmap typeref:typename:char * +bitor vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^ fn bitor(self, other: Self) -> Self {$/;" P implementation:MyInt +bitor vendor/quote/src/runtime.rs /^ fn bitor(self, _rhs: HasIterator) -> HasIterator {$/;" P implementation:HasIterator +bitor vendor/quote/src/runtime.rs /^ fn bitor(self, _rhs: HasIterator) -> HasIterator {$/;" P implementation:ThereIsNoIteratorInRepetition +bitor vendor/quote/src/runtime.rs /^ fn bitor(self, _rhs: ThereIsNoIteratorInRepetition) -> HasIterator {$/;" P implementation:HasIterator +bitor vendor/quote/src/runtime.rs /^ fn bitor(self, _rhs: ThereIsNoIteratorInRepetition) -> ThereIsNoIteratorInRepetition {$/;" P implementation:ThereIsNoIteratorInRepetition +bitor_assign vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^ fn bitor_assign(&mut self, other: Self) {$/;" P implementation:MyInt +bits vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bits")] pub mod bits;$/;" n +bits10_1 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bits10_1")] pub mod bits10_1;$/;" n +bits1_5 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bits1_5")] pub mod bits1_5;$/;" n +bits2_0 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bits2_0")] pub mod bits2_0;$/;" n +bits2_5 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bits2_5")] pub mod bits2_5;$/;" n +bits3_0 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bits3_0")] pub mod bits3_0;$/;" n +bits4_0 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bits4_0")] pub mod bits4_0;$/;" n +bits5_0 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bits5_0")] pub mod bits5_0;$/;" n +bits_per_word vendor/nix/test/sys/test_ioctl.rs /^ bits_per_word: u8,$/;" m struct:linux_ioctls::spi_ioc_transfer +bitscfg vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bitscfg")] pub mod bitscfg;$/;" n +bitsmsg vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bitsmsg")] pub mod bitsmsg;$/;" n +bitxor vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^ fn bitxor(self, other: Self) -> Self {$/;" P implementation:MyInt +bitxor_assign vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^ fn bitxor_assign(&mut self, other: Self) {$/;" P implementation:MyInt +blah vendor/cfg-if/src/lib.rs /^ fn blah(&self);$/;" P interface:tests::Trait +blkcnt64_t r_bash/src/lib.rs /^pub type blkcnt64_t = __blkcnt64_t;$/;" t +blkcnt64_t r_glob/src/lib.rs /^pub type blkcnt64_t = __blkcnt64_t;$/;" t +blkcnt64_t r_readline/src/lib.rs /^pub type blkcnt64_t = __blkcnt64_t;$/;" t +blkcnt64_t vendor/libc/src/fuchsia/mod.rs /^pub type blkcnt64_t = i64;$/;" t +blkcnt64_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type blkcnt64_t = i32;$/;" t +blkcnt64_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type blkcnt64_t = i64;$/;" t +blkcnt_t r_bash/src/lib.rs /^pub type blkcnt_t = __blkcnt_t;$/;" t +blkcnt_t r_glob/src/lib.rs /^pub type blkcnt_t = __blkcnt_t;$/;" t +blkcnt_t r_readline/src/lib.rs /^pub type blkcnt_t = __blkcnt_t;$/;" t +blkcnt_t vendor/libc/src/fuchsia/mod.rs /^pub type blkcnt_t = i64;$/;" t +blkcnt_t vendor/libc/src/solid/mod.rs /^pub type blkcnt_t = i64;$/;" t +blkcnt_t vendor/libc/src/unix/bsd/mod.rs /^pub type blkcnt_t = i64;$/;" t +blkcnt_t vendor/libc/src/unix/haiku/mod.rs /^pub type blkcnt_t = i64;$/;" t +blkcnt_t vendor/libc/src/unix/hermit/mod.rs /^pub type blkcnt_t = c_long;$/;" t +blkcnt_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type blkcnt_t = ::c_ulong;$/;" t +blkcnt_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type blkcnt_t = i32;$/;" t +blkcnt_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mod.rs /^pub type blkcnt_t = i64;$/;" t +blkcnt_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type blkcnt_t = i64;$/;" t +blkcnt_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type blkcnt_t = ::c_long;$/;" t +blkcnt_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type blkcnt_t = i32;$/;" t +blkcnt_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs /^pub type blkcnt_t = i64;$/;" t +blkcnt_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type blkcnt_t = i64;$/;" t +blkcnt_t vendor/libc/src/unix/newlib/mod.rs /^pub type blkcnt_t = i32;$/;" t +blkcnt_t vendor/libc/src/unix/redox/mod.rs /^pub type blkcnt_t = ::c_ulong;$/;" t +blkcnt_t vendor/libc/src/unix/solarish/mod.rs /^pub type blkcnt_t = ::c_long;$/;" t +blkcnt_t vendor/libc/src/vxworks/mod.rs /^pub type blkcnt_t = ::c_long;$/;" t +blkcnt_t vendor/libc/src/wasi.rs /^pub type blkcnt_t = i64;$/;" t +blksize_t r_bash/src/lib.rs /^pub type blksize_t = __blksize_t;$/;" t +blksize_t r_glob/src/lib.rs /^pub type blksize_t = __blksize_t;$/;" t +blksize_t r_readline/src/lib.rs /^pub type blksize_t = __blksize_t;$/;" t +blksize_t vendor/libc/src/fuchsia/aarch64.rs /^pub type blksize_t = ::c_long;$/;" t +blksize_t vendor/libc/src/fuchsia/x86_64.rs /^pub type blksize_t = ::c_long;$/;" t +blksize_t vendor/libc/src/solid/mod.rs /^pub type blksize_t = i32;$/;" t +blksize_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type blksize_t = i32;$/;" t +blksize_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type blksize_t = i64;$/;" t +blksize_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type blksize_t = i32;$/;" t +blksize_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type blksize_t = i32;$/;" t +blksize_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type blksize_t = i32;$/;" t +blksize_t vendor/libc/src/unix/haiku/mod.rs /^pub type blksize_t = i32;$/;" t +blksize_t vendor/libc/src/unix/hermit/mod.rs /^pub type blksize_t = c_long;$/;" t +blksize_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type blksize_t = ::c_ulong;$/;" t +blksize_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type blksize_t = c_long;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs /^pub type blksize_t = i32;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs /^pub type blksize_t = i32;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs /^pub type blksize_t = i64;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs /^pub type blksize_t = i64;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs /^pub type blksize_t = ::c_int;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^pub type blksize_t = i64;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs /^pub type blksize_t = i64;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^pub type blksize_t = i64;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/musl/b32/mod.rs /^pub type blksize_t = ::c_long;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs /^pub type blksize_t = ::c_int;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs /^pub type blksize_t = i64;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs /^pub type blksize_t = ::c_long;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs /^pub type blksize_t = ::c_int;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs /^pub type blksize_t = i64;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs /^pub type blksize_t = ::c_long;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type blksize_t = ::c_long;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type blksize_t = i32;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs /^pub type blksize_t = i64;$/;" t +blksize_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type blksize_t = i64;$/;" t +blksize_t vendor/libc/src/unix/newlib/mod.rs /^pub type blksize_t = i32;$/;" t +blksize_t vendor/libc/src/unix/redox/mod.rs /^pub type blksize_t = ::c_long;$/;" t +blksize_t vendor/libc/src/unix/solarish/mod.rs /^pub type blksize_t = ::c_int;$/;" t +blksize_t vendor/libc/src/vxworks/mod.rs /^pub type blksize_t = ::c_long;$/;" t +blksize_t vendor/libc/src/wasi.rs /^pub type blksize_t = c_long;$/;" t +block_comment vendor/proc-macro2/src/parse.rs /^fn block_comment(input: Cursor) -> PResult<&str> {$/;" f +block_factor builtins_rust/ulimit/src/lib.rs /^ block_factor: i32, \/* Blocking factor for specific limit. *\/$/;" m struct:RESOURCE_LIMITS +block_list lib/intl/dcigettext.c /^ struct block_list *block_list = NULL;$/;" v typeref:struct:block_list * +block_list lib/intl/dcigettext.c /^struct block_list$/;" s file: +block_on vendor/futures-executor/src/local_pool.rs /^pub fn block_on(f: F) -> F::Output {$/;" f +block_on_next vendor/futures/tests/io_lines.rs /^macro_rules! block_on_next {$/;" M +block_on_simple vendor/async-trait/tests/executor/mod.rs /^pub fn block_on_simple(mut fut: F) -> F::Output {$/;" f +block_on_stream vendor/futures-executor/src/local_pool.rs /^pub fn block_on_stream(stream: S) -> BlockingStream {$/;" f +block_reads vendor/nix/src/sys/resource.rs /^ pub fn block_reads(&self) -> c_long {$/;" P implementation:Usage +block_size vendor/nix/src/sys/statfs.rs /^ pub fn block_size(&self) -> libc::__fsword_t {$/;" P implementation:Statfs +block_size vendor/nix/src/sys/statfs.rs /^ pub fn block_size(&self) -> libc::c_int {$/;" P implementation:Statfs +block_size vendor/nix/src/sys/statfs.rs /^ pub fn block_size(&self) -> libc::c_long {$/;" P implementation:Statfs +block_size vendor/nix/src/sys/statfs.rs /^ pub fn block_size(&self) -> libc::c_ulong {$/;" P implementation:Statfs +block_size vendor/nix/src/sys/statfs.rs /^ pub fn block_size(&self) -> u32 {$/;" P implementation:Statfs +block_size vendor/nix/src/sys/statfs.rs /^ pub fn block_size(&self) -> u64 {$/;" P implementation:Statfs +block_size vendor/nix/src/sys/statvfs.rs /^ pub fn block_size(&self) -> c_ulong {$/;" P implementation:Statvfs +block_time_limit vendor/nix/src/sys/quota.rs /^ pub fn block_time_limit(&self) -> Option {$/;" P implementation:Dqblk +block_trapped_signals r_bash/src/lib.rs /^ pub fn block_trapped_signals(arg1: *mut sigset_t, arg2: *mut sigset_t)$/;" f +block_writes vendor/nix/src/sys/resource.rs /^ pub fn block_writes(&self) -> c_long {$/;" P implementation:Usage +blockdev lib/readline/colors.h /^ blockdev,$/;" e enum:filetype +blocks vendor/nix/src/sys/statfs.rs /^ pub fn blocks(&self) -> libc::c_long {$/;" P implementation:Statfs +blocks vendor/nix/src/sys/statfs.rs /^ pub fn blocks(&self) -> libc::c_ulong {$/;" P implementation:Statfs +blocks vendor/nix/src/sys/statfs.rs /^ pub fn blocks(&self) -> u64 {$/;" P implementation:Statfs +blocks vendor/nix/src/sys/statvfs.rs /^ pub fn blocks(&self) -> libc::fsblkcnt_t {$/;" P implementation:Statvfs +blocks_available vendor/nix/src/sys/statfs.rs /^ pub fn blocks_available(&self) -> i64 {$/;" P implementation:Statfs +blocks_available vendor/nix/src/sys/statfs.rs /^ pub fn blocks_available(&self) -> libc::c_long {$/;" P implementation:Statfs +blocks_available vendor/nix/src/sys/statfs.rs /^ pub fn blocks_available(&self) -> libc::c_ulong {$/;" P implementation:Statfs +blocks_available vendor/nix/src/sys/statfs.rs /^ pub fn blocks_available(&self) -> u64 {$/;" P implementation:Statfs +blocks_available vendor/nix/src/sys/statvfs.rs /^ pub fn blocks_available(&self) -> libc::fsblkcnt_t {$/;" P implementation:Statvfs +blocks_free vendor/nix/src/sys/statfs.rs /^ pub fn blocks_free(&self) -> libc::c_long {$/;" P implementation:Statfs +blocks_free vendor/nix/src/sys/statfs.rs /^ pub fn blocks_free(&self) -> libc::c_ulong {$/;" P implementation:Statfs +blocks_free vendor/nix/src/sys/statfs.rs /^ pub fn blocks_free(&self) -> u64 {$/;" P implementation:Statfs +blocks_free vendor/nix/src/sys/statvfs.rs /^ pub fn blocks_free(&self) -> libc::fsblkcnt_t {$/;" P implementation:Statvfs +blocks_hard_limit vendor/nix/src/sys/quota.rs /^ pub fn blocks_hard_limit(&self) -> Option {$/;" P implementation:Dqblk +blocks_soft_limit vendor/nix/src/sys/quota.rs /^ pub fn blocks_soft_limit(&self) -> Option {$/;" P implementation:Dqblk +blocksize lib/malloc/mstats.h /^ u_bits32_t blocksize;$/;" m struct:bucket_stats typeref:typename:u_bits32_t +bluetoothapis vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bluetoothapis")] pub mod bluetoothapis;$/;" n +bluetoothleapis vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bluetoothleapis")] pub mod bluetoothleapis;$/;" n +body vendor/fluent-syntax/src/ast/mod.rs /^ pub body: Vec>,$/;" m struct:Resource +bool lib/intl/relocatable.c /^#define bool /;" d file: +bool lib/readline/colors.h /^#define bool /;" d +bool vendor/quote/src/to_tokens.rs /^impl ToTokens for bool {$/;" c +bool vendor/syn/src/export.rs /^pub type bool = help::Bool;$/;" t +bool_to_int lib/readline/bind.c /^bool_to_int (const char *value)$/;" f typeref:typename:int file: +boolarg lib/intl/eval-plural.h /^ unsigned long int boolarg = plural_eval (pexp->val.args[0], n);$/;" v typeref:typename:unsigned long int +boolean vendor/winapi/src/shared/rpcndr.rs /^pub type boolean = c_uchar;$/;" t +boolean_t vendor/libc/src/unix/bsd/apple/b32/mod.rs /^pub type boolean_t = ::c_int;$/;" t +boolean_t vendor/libc/src/unix/bsd/apple/b64/aarch64/mod.rs /^pub type boolean_t = ::c_int;$/;" t +boolean_t vendor/libc/src/unix/bsd/apple/b64/x86_64/mod.rs /^pub type boolean_t = ::c_uint;$/;" t +boolean_varlist lib/readline/bind.c /^} boolean_varlist [] = {$/;" v typeref:typename:const struct __anon7144754c0208[] +boolean_varname lib/readline/bind.c /^boolean_varname (int i)$/;" f typeref:typename:const char * file: +borrow vendor/smallvec/src/lib.rs /^ fn borrow(&self) -> &[A::Item] {$/;" P implementation:SmallVec +borrow_dependent vendor/self_cell/src/unsafe_self_cell.rs /^ pub unsafe fn borrow_dependent<'a, Dependent>(&'a self) -> &'a Dependent {$/;" P implementation:UnsafeSelfCell +borrow_mut vendor/fluent-fallback/src/pin_cell/mod.rs /^ pub fn borrow_mut(self: Pin<&Self>) -> PinMut<'_, T> {$/;" P implementation:PinCell +borrow_mut vendor/self_cell/src/unsafe_self_cell.rs /^ pub unsafe fn borrow_mut<'a, Dependent>(&'a mut self) -> (&'a Owner, &'a mut Dependent) {$/;" P implementation:UnsafeSelfCell +borrow_mut vendor/smallvec/src/lib.rs /^ fn borrow_mut(&mut self) -> &mut [A::Item] {$/;" P implementation:SmallVec +borrow_owner vendor/self_cell/src/unsafe_self_cell.rs /^ pub unsafe fn borrow_owner<'a, Dependent>(&'a self) -> &'a Owner {$/;" P implementation:UnsafeSelfCell +bors.toml vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +botch lib/malloc/malloc.c /^botch (s, file, line)$/;" f file: +bounded_100_tx vendor/futures-channel/benches/sync_mpsc.rs /^fn bounded_100_tx(b: &mut Bencher) {$/;" f +bounded_1_tx vendor/futures-channel/benches/sync_mpsc.rs /^fn bounded_1_tx(b: &mut Bencher) {$/;" f +bounded_try_next_after_none vendor/futures-channel/tests/mpsc-close.rs /^fn bounded_try_next_after_none() {$/;" f +bounds vendor/syn/src/item.rs /^ bounds: Punctuated,$/;" m struct:parsing::FlexibleItemType +bounds vendor/thiserror-impl/src/generics.rs /^ bounds: Map, Punctuated)>,$/;" m struct:InferredBounds +box_pointers vendor/pin-project-lite/tests/lint.rs /^pub mod box_pointers {$/;" n +boxed vendor/futures-util/src/future/future/mod.rs /^ fn boxed<'a>(self) -> BoxFuture<'a, Self::Output>$/;" P interface:FutureExt +boxed vendor/futures-util/src/stream/stream/mod.rs /^ fn boxed<'a>(self) -> BoxStream<'a, Self::Item>$/;" P interface:StreamExt +boxed_local vendor/futures-util/src/future/future/mod.rs /^ fn boxed_local<'a>(self) -> LocalBoxFuture<'a, Self::Output>$/;" P interface:FutureExt +boxed_local vendor/futures-util/src/stream/stream/mod.rs /^ fn boxed_local<'a>(self) -> LocalBoxStream<'a, Self::Item>$/;" P interface:StreamExt +brace-expansion configure.ac /^AC_ARG_ENABLE(brace-expansion, AC_HELP_STRING([--enable-brace-expansion], [include brace expansi/;" e +brace_arg_separator braces.c /^static const int brace_arg_separator = ',';$/;" v typeref:typename:const int file: +brace_expand braces.c /^brace_expand (text)$/;" f +brace_expand r_bash/src/lib.rs /^ pub fn brace_expand(arg1: *mut ::std::os::raw::c_char) -> *mut *mut ::std::os::raw::c_char;$/;" f +brace_expand_word_list subst.c /^brace_expand_word_list (tlist, eflags)$/;" f file: +brace_expansion flags.c /^int brace_expansion = 1;$/;" v typeref:typename:int +brace_expansion r_bash/src/lib.rs /^ pub static mut brace_expansion: ::std::os::raw::c_int;$/;" v +brace_gobbler braces.c /^brace_gobbler (text, tlen, indx, satisfy)$/;" f file: +brace_whitespace braces.c /^#define brace_whitespace(/;" d file: +bracecomp.o Makefile.in /^bracecomp.o: $(RL_LIBSRC)\/keymaps.h $(RL_LIBSRC)\/chardefs.h$/;" t +bracecomp.o Makefile.in /^bracecomp.o: $(RL_LIBSRC)\/readline.h $(RL_LIBSRC)\/rlstdc.h$/;" t +bracecomp.o Makefile.in /^bracecomp.o: $(RL_LIBSRC)\/rltypedefs.h$/;" t +bracecomp.o Makefile.in /^bracecomp.o: $(TILDE_LIBSRC)\/tilde.h$/;" t +bracecomp.o Makefile.in /^bracecomp.o: ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h bashhist.h assoc.h$/;" t +bracecomp.o Makefile.in /^bracecomp.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +bracecomp.o Makefile.in /^bracecomp.o: array.h hashlib.h alias.h builtins.h $/;" t +bracecomp.o Makefile.in /^bracecomp.o: command.h ${BASHINCDIR}\/stdc.h error.h$/;" t +bracecomp.o Makefile.in /^bracecomp.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +bracecomp.o Makefile.in /^bracecomp.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h$/;" t +bracecomp.o Makefile.in /^bracecomp.o: make_cmd.h subst.h sig.h pathnames.h externs.h $/;" t +bracecomp.o Makefile.in /^bracecomp.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +bracecomp.o Makefile.in /^bracecomp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h$/;" t +braced vendor/syn/src/group.rs /^macro_rules! braced {$/;" M +braces.o Makefile.in /^braces.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +braces.o Makefile.in /^braces.o: ${BASHINCDIR}\/typemax.h ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h $/;" t +braces.o Makefile.in /^braces.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +braces.o Makefile.in /^braces.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +braces.o Makefile.in /^braces.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +braces.o Makefile.in /^braces.o: make_cmd.h subst.h sig.h pathnames.h externs.h $/;" t +braces.o Makefile.in /^braces.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +braces.o Makefile.in /^braces.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\//;" t +bracketed vendor/syn/src/group.rs /^macro_rules! bracketed {$/;" M +brand lib/sh/random.c /^brand ()$/;" f typeref:typename:int +brand r_bash/src/lib.rs /^ pub fn brand() -> ::std::os::raw::c_int;$/;" f +brand32 lib/sh/random.c /^brand32 ()$/;" f typeref:typename:u_bits32_t file: +break.o builtins/Makefile.in /^break.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h $/;" t +break.o builtins/Makefile.in /^break.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +break.o builtins/Makefile.in /^break.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +break.o builtins/Makefile.in /^break.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h /;" t +break.o builtins/Makefile.in /^break.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +break.o builtins/Makefile.in /^break.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +break.o builtins/Makefile.in /^break.o: ..\/pathnames.h $(topdir)\/execute_cmd.h$/;" t +break.o builtins/Makefile.in /^break.o: break.def$/;" t +breaking builtins_rust/break_1/src/lib.rs /^ static mut breaking: i32;$/;" v +breaking r_bash/src/lib.rs /^ pub static mut breaking: ::std::os::raw::c_int;$/;" v +breaking r_jobs/src/lib.rs /^ static mut breaking: c_int;$/;" v +brk r_bash/src/lib.rs /^ pub fn brk(__addr: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int;$/;" f +brk r_glob/src/lib.rs /^ pub fn brk(__addr: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int;$/;" f +brk r_readline/src/lib.rs /^ pub fn brk(__addr: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int;$/;" f +brk vendor/libc/src/fuchsia/mod.rs /^ pub fn brk(addr: *mut ::c_void) -> ::c_int;$/;" f +brk vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn brk(addr: *const ::c_void) -> *mut ::c_void;$/;" f +brk vendor/libc/src/unix/haiku/mod.rs /^ pub fn brk(addr: *mut ::c_void) -> ::c_int;$/;" f +brk vendor/libc/src/unix/linux_like/mod.rs /^ pub fn brk(addr: *mut ::c_void) -> ::c_int;$/;" f +brkfound xmalloc.c /^static int brkfound;$/;" v typeref:typename:int file: +broadcast vendor/nix/src/ifaddrs.rs /^ pub broadcast: Option,$/;" m struct:InterfaceAddress +bsd vendor/nix/src/mount/mod.rs /^mod bsd;$/;" n +bsd vendor/nix/src/sys/ioctl/mod.rs /^mod bsd;$/;" n +bsd vendor/nix/src/sys/ptrace/mod.rs /^mod bsd;$/;" n +bsd vendor/nix/test/sys/test_ioctl.rs /^mod bsd {$/;" n +bsdtty lib/readline/rltty.c /^struct bsdtty {$/;" s file: +bsearch r_bash/src/lib.rs /^ pub fn bsearch($/;" f +bsearch r_glob/src/lib.rs /^ pub fn bsearch($/;" f +bsearch r_readline/src/lib.rs /^ pub fn bsearch($/;" f +bsearch vendor/libc/src/solid/mod.rs /^ pub fn bsearch($/;" f +bsearch vendor/libc/src/unix/mod.rs /^ pub fn bsearch($/;" f +bsplit lib/malloc/malloc.c /^bsplit (nu)$/;" f file: +bstab lib/sh/shquote.c /^static const char bstab[256] =$/;" v typeref:typename:const char[256] file: +bthdef vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "bthdef")] pub mod bthdef;$/;" n +bthioctl vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "bthioctl")] pub mod bthioctl;$/;" n +bthledef vendor/winapi/src/um/mod.rs /^#[cfg(feature = "bthledef")] pub mod bthledef;$/;" n +bthsdpdef vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "bthsdpdef")] pub mod bthsdpdef;$/;" n +btowc r_bash/src/lib.rs /^ pub fn btowc(__c: ::std::os::raw::c_int) -> wint_t;$/;" f +btowc r_glob/src/lib.rs /^ pub fn btowc(__c: ::std::os::raw::c_int) -> wint_t;$/;" f +btowc r_readline/src/lib.rs /^ pub fn btowc(__c: ::std::os::raw::c_int) -> wint_t;$/;" f +bucket_array builtins_rust/alias/src/lib.rs /^ pub bucket_array: *mut *mut BucketContents,$/;" m struct:hash_table +bucket_array builtins_rust/declare/src/lib.rs /^ bucket_array: *mut *mut BUCKET_CONTENTS, \/* Where the data is kept. *\/$/;" m struct:HASH_TABLE +bucket_array builtins_rust/hash/src/lib.rs /^ pub bucket_array: *mut *mut BUCKET_CONTENTS,$/;" m struct:hash_table +bucket_array builtins_rust/setattr/src/intercdep.rs /^ bucket_array:*mut * mut BUCKET_CONTENTS, \/* Where the data is kept. *\/$/;" m struct:HASH_TABLE +bucket_array hashlib.h /^ BUCKET_CONTENTS **bucket_array; \/* Where the data is kept. *\/$/;" m struct:hash_table typeref:typename:BUCKET_CONTENTS ** +bucket_array r_bash/src/lib.rs /^ pub bucket_array: *mut *mut BUCKET_CONTENTS,$/;" m struct:hash_table +bucket_array r_jobs/src/lib.rs /^ pub bucket_array: *mut *mut BUCKET_CONTENTS,$/;" m struct:hash_table +bucket_contents builtins_rust/alias/src/lib.rs /^pub struct bucket_contents {$/;" s +bucket_contents builtins_rust/hash/src/lib.rs /^pub struct bucket_contents {$/;" s +bucket_contents hashlib.h /^typedef struct bucket_contents {$/;" s +bucket_contents r_bash/src/lib.rs /^pub struct bucket_contents {$/;" s +bucket_contents r_jobs/src/lib.rs /^pub struct bucket_contents {$/;" s +bucket_next jobs.h /^ ps_index_t bucket_next;$/;" m struct:pidstat typeref:typename:ps_index_t +bucket_next r_bash/src/lib.rs /^ pub bucket_next: ps_index_t,$/;" m struct:pidstat +bucket_prev jobs.h /^ ps_index_t bucket_prev;$/;" m struct:pidstat typeref:typename:ps_index_t +bucket_prev r_bash/src/lib.rs /^ pub bucket_prev: ps_index_t,$/;" m struct:pidstat +bucket_stats lib/malloc/mstats.h /^struct bucket_stats {$/;" s +buf vendor/futures-util/src/io/read.rs /^ buf: &'a mut [u8],$/;" m struct:Read +buf vendor/futures-util/src/io/read_exact.rs /^ buf: &'a mut [u8],$/;" m struct:ReadExact +buf vendor/futures-util/src/io/read_line.rs /^ buf: &'a mut String,$/;" m struct:ReadLine +buf vendor/futures-util/src/io/read_to_end.rs /^ buf: &'a mut Vec,$/;" m struct:Guard +buf vendor/futures-util/src/io/read_to_end.rs /^ buf: &'a mut Vec,$/;" m struct:ReadToEnd +buf vendor/futures-util/src/io/read_to_string.rs /^ buf: &'a mut String,$/;" m struct:ReadToString +buf vendor/futures-util/src/io/read_until.rs /^ buf: &'a mut Vec,$/;" m struct:ReadUntil +buf vendor/futures-util/src/io/write.rs /^ buf: &'a [u8],$/;" m struct:Write +buf vendor/futures-util/src/io/write_all.rs /^ buf: &'a [u8],$/;" m struct:WriteAll +buf_reader vendor/futures-util/src/io/mod.rs /^mod buf_reader;$/;" n +buf_writer vendor/futures-util/src/io/mod.rs /^mod buf_writer;$/;" n +buf_writer vendor/futures/tests/io_buf_writer.rs /^fn buf_writer() {$/;" f +buf_writer_inner_flushes vendor/futures/tests/io_buf_writer.rs /^fn buf_writer_inner_flushes() {$/;" f +buf_writer_seek vendor/futures/tests/io_buf_writer.rs /^fn buf_writer_seek() {$/;" f +buffer lib/readline/readline.h /^ char *buffer;$/;" m struct:readline_state typeref:typename:char * +buffer lib/termcap/termcap.c /^struct buffer$/;" s file: +buffer r_readline/src/lib.rs /^ pub buffer: *mut ::std::os::raw::c_char,$/;" m struct:readline_state +buffer support/man2html.c /^static char *buffer = NULL;$/;" v typeref:typename:char * file: +buffer vendor/futures-channel/src/mpsc/mod.rs /^ buffer: usize,$/;" m struct:BoundedInner +buffer vendor/futures-util/src/compat/compat01as03.rs /^ pub(crate) buffer: Option,$/;" m struct:Compat01As03Sink +buffer vendor/futures-util/src/io/buf_reader.rs /^ pub fn buffer(&self) -> &[u8] {$/;" P implementation:BufReader +buffer vendor/futures-util/src/io/buf_writer.rs /^ pub fn buffer(&self) -> &[u8] {$/;" P implementation:BufWriter +buffer vendor/futures-util/src/io/line_writer.rs /^ pub fn buffer(&self) -> &[u8] {$/;" P implementation:LineWriter +buffer vendor/futures-util/src/sink/mod.rs /^ fn buffer(self, capacity: usize) -> Buffer$/;" P interface:SinkExt +buffer vendor/futures-util/src/sink/mod.rs /^mod buffer;$/;" n +buffer vendor/futures/tests/sink.rs /^fn buffer() {$/;" f +buffer vendor/syn/src/lib.rs /^pub mod buffer;$/;" n +buffer_noop vendor/futures/tests/sink.rs /^fn buffer_noop() {$/;" f +buffer_unordered vendor/futures-util/src/stream/stream/mod.rs /^ fn buffer_unordered(self, n: usize) -> BufferUnordered$/;" P interface:StreamExt +buffer_unordered vendor/futures-util/src/stream/stream/mod.rs /^mod buffer_unordered;$/;" n +buffered vendor/futures-util/src/sink/send_all.rs /^ buffered: Option,$/;" m struct:SendAll +buffered vendor/futures-util/src/stream/stream/mod.rs /^ fn buffered(self, n: usize) -> Buffered$/;" P interface:StreamExt +buffered vendor/futures-util/src/stream/stream/mod.rs /^mod buffered;$/;" n +buffered vendor/futures/tests_disabled/stream.rs /^fn buffered() {$/;" f +buffered_fd input.h /^ int buffered_fd;$/;" m union:__anon9f26d24b010a typeref:typename:int +buffered_getchar input.c /^buffered_getchar ()$/;" f typeref:typename:int +buffered_getchar r_bash/src/lib.rs /^ pub fn buffered_getchar() -> ::std::os::raw::c_int;$/;" f +buffered_ungetchar input.c /^buffered_ungetchar (c)$/;" f +buffered_ungetchar r_bash/src/lib.rs /^ pub fn buffered_ungetchar(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +buffers input.c /^static BUFFERED_STREAM **buffers = (BUFFERED_STREAM **)NULL;$/;" v typeref:typename:BUFFERED_STREAM ** file: +buffmax support/man2html.c /^static int buffpos = 0, buffmax = 0;$/;" v typeref:typename:int file: +buffpos support/man2html.c /^static int buffpos = 0, buffmax = 0;$/;" v typeref:typename:int file: +buflen lib/readline/readline.h /^ int buflen;$/;" m struct:readline_state typeref:typename:int +buflen r_readline/src/lib.rs /^ pub buflen: ::std::os::raw::c_int,$/;" m struct:readline_state +bufs vendor/futures-util/src/io/read_vectored.rs /^ bufs: &'a mut [IoSliceMut<'a>],$/;" m struct:ReadVectored +bufs vendor/futures-util/src/io/write_all_vectored.rs /^ bufs: &'a mut [IoSlice<'a>],$/;" m struct:WriteAllVectored +bufs vendor/futures-util/src/io/write_vectored.rs /^ bufs: &'a [IoSlice<'a>],$/;" m struct:WriteVectored +bufsize lib/termcap/termcap.c /^int bufsize = 128;$/;" v typeref:typename:int +bufstream_getc input.c /^#define bufstream_getc(/;" d file: +bufstream_ungetc input.c /^bufstream_ungetc(c, bp)$/;" f file: +bugcodes vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "bugcodes")] pub mod bugcodes;$/;" n +build vendor/proc-macro2/src/fallback.rs /^ pub fn build(self) -> TokenStream {$/;" P implementation:TokenStreamBuilder +build vendor/proc-macro2/src/rcvec.rs /^ pub fn build(self) -> RcVec {$/;" P implementation:RcVecBuilder +build.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +build.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +build.rs vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +build.rs vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +build.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +build.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +build.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +build.rs vendor/memoffset/.cargo-checksum.json /^{"files":{"Cargo.toml":"2556143c764ef2315fe44ff0ec43af47ca70b260fd64aa53f57dc42760d7132d","LICEN/;" s object:files +build.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +build.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +build.rs vendor/slab/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"ae4c54789e1055543317a6812ac11644d0586883dee8f790119e4cef244b1b8e","Car/;" s object:files +build.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +build.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +build.rs vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +build.rs vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +build.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +build_aliasvar variables.c /^build_aliasvar (self)$/;" f file: +build_arg_list pcomplete.c /^build_arg_list (cmd, cname, text, lwords, ind)$/;" f file: +build_cmd builtins_rust/cmd/src/lib.rs /^ pub fn build_cmd(name: String, enable: bool) -> Cmd {$/;" P implementation:Cmd +build_forward vendor/memchr/src/memmem/mod.rs /^ pub fn build_forward<'n, B: ?Sized + AsRef<[u8]>>($/;" P implementation:FinderBuilder +build_hashcmd variables.c /^build_hashcmd (self)$/;" f file: +build_history_completion_array bashline.c /^build_history_completion_array ()$/;" f typeref:typename:void file: +build_reverse vendor/memchr/src/memmem/mod.rs /^ pub fn build_reverse<'n, B: ?Sized + AsRef<[u8]>>($/;" P implementation:FinderBuilder +build_version r_bash/src/lib.rs /^ pub static mut build_version: ::std::os::raw::c_int;$/;" v +build_version version.c /^const int build_version = BUILDVERSION;$/;" v typeref:typename:const int +builder vendor/futures-executor/src/thread_pool.rs /^ pub fn builder() -> ThreadPoolBuilder {$/;" P implementation:ThreadPool +building_builtin builtins/mkbuiltins.c /^static int building_builtin = 0;$/;" v typeref:typename:int file: +buildsignames.o Makefile.in /^buildsignames.o: $(SUPPORT_SRC)signames.c$/;" t +buildversion.o Makefile.in /^buildversion.o: $(srcdir)\/version.c$/;" t +buildversion.o Makefile.in /^buildversion.o: bashintl.h $(BASHINCDIR)\/gettext.h$/;" t +buildversion.o Makefile.in /^buildversion.o: version.h patchlevel.h conftypes.h$/;" t +builtext.h builtins/Makefile.in /^builtext.h builtins.c: $(MKBUILTINS) $(DEFSRC)$/;" t +builtin builtins.h /^struct builtin {$/;" s +builtin builtins_rust/common/src/lib.rs /^pub struct builtin {$/;" s +builtin builtins_rust/enable/src/lib.rs /^pub struct builtin {$/;" s +builtin builtins_rust/help/src/lib.rs /^pub struct builtin {$/;" s +builtin r_bash/src/lib.rs /^pub struct builtin {$/;" s +builtin.o builtins/Makefile.in /^builtin.o: $(srcdir)\/bashgetopt.h ..\/pathnames.h $(topdir)\/execute_cmd.h$/;" t +builtin.o builtins/Makefile.in /^builtin.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +builtin.o builtins/Makefile.in /^builtin.o: $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/subst.h$/;" t +builtin.o builtins/Makefile.in /^builtin.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/externs.h$/;" t +builtin.o builtins/Makefile.in /^builtin.o: $(topdir)\/quit.h $(srcdir)\/common.h $(BASHINCDIR)\/maxpath.h $(topdir)\/sig.h$/;" t +builtin.o builtins/Makefile.in /^builtin.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables./;" t +builtin.o builtins/Makefile.in /^builtin.o: builtin.def$/;" t +builtin_address builtins/common.c /^builtin_address (name)$/;" f +builtin_address builtins_rust/builtin/src/intercdep.rs /^ pub fn builtin_address(command: *const c_char) -> extern "C" fn(w:*mut WordList) ->i32;$/;" f +builtin_address r_bash/src/lib.rs /^ pub fn builtin_address(arg1: *mut ::std::os::raw::c_char) -> sh_builtin_func_t;$/;" f +builtin_address_internal builtins/common.c /^builtin_address_internal (name, disabled_okay)$/;" f +builtin_address_internal builtins_rust/enable/src/lib.rs /^ fn builtin_address_internal(_: *mut libc::c_char, _: libc::c_int) -> *mut builtin;$/;" f +builtin_address_internal builtins_rust/help/src/lib.rs /^ fn builtin_address_internal(comand_name: *mut c_char, i: i32) -> *mut builtin;$/;" f +builtin_address_internal r_bash/src/lib.rs /^ pub fn builtin_address_internal($/;" f +builtin_bind_variable builtins/common.c /^builtin_bind_variable (name, value, flags)$/;" f +builtin_bind_variable builtins_rust/printf/src/intercdep.rs /^ pub fn builtin_bind_variable(name: *mut c_char, value: *mut c_char, flags: c_int) -> *mut SH/;" f +builtin_bind_variable builtins_rust/read/src/intercdep.rs /^ pub fn builtin_bind_variable(name: *mut c_char, value: *mut c_char, flags: c_int) -> *mut SH/;" f +builtin_bind_variable r_bash/src/lib.rs /^ pub fn builtin_bind_variable($/;" f +builtin_builtin builtins/builtin.c /^builtin_builtin (list)$/;" f +builtin_error builtins/common.c /^builtin_error (const char *format, ...)$/;" f typeref:typename:void +builtin_error builtins_rust/alias/src/lib.rs /^ fn builtin_error(_: *const libc::c_char, _: ...);$/;" f +builtin_error builtins_rust/bind/src/lib.rs /^ fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/break_1/src/lib.rs /^ fn builtin_error(err: *const libc::c_char, ...);$/;" f +builtin_error builtins_rust/cd/src/lib.rs /^ fn builtin_error(err: *const c_char, ...);$/;" f +builtin_error builtins_rust/common/src/lib.rs /^ fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/complete/src/lib.rs /^ fn builtin_error(err: *const c_char, ...);$/;" f +builtin_error builtins_rust/declare/src/lib.rs /^ fn builtin_error(err: *const c_char, ...);$/;" f +builtin_error builtins_rust/enable/src/lib.rs /^ fn builtin_error(_: *const libc::c_char, _: ...);$/;" f +builtin_error builtins_rust/exec/src/lib.rs /^ fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/exit/src/lib.rs /^ fn builtin_error(err: *const c_char, ...);$/;" f +builtin_error builtins_rust/fc/src/lib.rs /^ fn builtin_error(err: *const c_char, ...);$/;" f +builtin_error builtins_rust/fg_bg/src/lib.rs /^ fn builtin_error(err: *const c_char, ...);$/;" f +builtin_error builtins_rust/hash/src/lib.rs /^ fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/history/src/intercdep.rs /^ pub fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/jobs/src/lib.rs /^ fn builtin_error(err: *const c_char, ...);$/;" f +builtin_error builtins_rust/kill/src/intercdep.rs /^ pub fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/mapfile/src/intercdep.rs /^ pub fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/printf/src/intercdep.rs /^ pub fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/pushd/src/lib.rs /^ fn builtin_error(err: *const c_char, ...);$/;" f +builtin_error builtins_rust/read/src/intercdep.rs /^ pub fn builtin_error(arg1: *const c_char, ...);$/;" f +builtin_error builtins_rust/rlet/src/intercdep.rs /^ pub fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/rreturn/src/intercdep.rs /^ pub fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/set/src/lib.rs /^ fn builtin_error(_: *const libc::c_char, _: ...);$/;" f +builtin_error builtins_rust/setattr/src/intercdep.rs /^ pub fn builtin_error(arg1: *const c_char, ...);$/;" f +builtin_error builtins_rust/shift/src/intercdep.rs /^ pub fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/shopt/src/lib.rs /^ fn builtin_error(_: *const libc::c_char, _: ...);$/;" f +builtin_error builtins_rust/source/src/lib.rs /^ fn builtin_error(err: *const c_char, ...);$/;" f +builtin_error builtins_rust/suspend/src/intercdep.rs /^ pub fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/test/src/intercdep.rs /^ pub fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/trap/src/intercdep.rs /^ pub fn builtin_error(format: *const c_char, ...);$/;" f +builtin_error builtins_rust/ulimit/src/lib.rs /^ fn builtin_error(_: *const libc::c_char, _: ...);$/;" f +builtin_error expr.c /^builtin_error (format, arg1, arg2, arg3, arg4, arg5)$/;" f +builtin_error r_bash/src/lib.rs /^ pub fn builtin_error(arg1: *const ::std::os::raw::c_char, ...);$/;" f +builtin_error_prolog builtins/common.c /^builtin_error_prolog ()$/;" f typeref:typename:void file: +builtin_handler builtins/mkbuiltins.c /^builtin_handler (self, defs, arg)$/;" f +builtin_help builtins/common.c /^builtin_help ()$/;" f typeref:typename:void +builtin_help builtins_rust/common/src/lib.rs /^ fn builtin_help();$/;" f +builtin_help r_bash/src/lib.rs /^ pub fn builtin_help();$/;" f +builtin_ignoring_errexit execute_cmd.c /^int builtin_ignoring_errexit = 0;$/;" v typeref:typename:int +builtin_ignoring_errexit r_bash/src/lib.rs /^ pub static mut builtin_ignoring_errexit: ::std::os::raw::c_int;$/;" v +builtin_keymap_names lib/readline/bind.c /^static struct name_and_keymap builtin_keymap_names[] = {$/;" v typeref:struct:name_and_keymap[] file: +builtin_status execute_cmd.c /^builtin_status (result)$/;" f file: +builtin_unbind_variable builtins/common.c /^builtin_unbind_variable (vname)$/;" f +builtin_unbind_variable r_bash/src/lib.rs /^ pub fn builtin_unbind_variable(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int/;" f +builtin_usage builtins/common.c /^builtin_usage ()$/;" f typeref:typename:void +builtin_usage builtins_rust/alias/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/caller/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/cd/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/command/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/complete/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/declare/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/enable/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/fc/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/getopts/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/help/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/history/src/intercdep.rs /^ pub fn builtin_usage();$/;" f +builtin_usage builtins_rust/jobs/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/mapfile/src/intercdep.rs /^ pub fn builtin_usage();$/;" f +builtin_usage builtins_rust/printf/src/intercdep.rs /^ pub fn builtin_usage();$/;" f +builtin_usage builtins_rust/pushd/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/read/src/intercdep.rs /^ pub fn builtin_usage();$/;" f +builtin_usage builtins_rust/rlet/src/intercdep.rs /^ pub fn builtin_usage();$/;" f +builtin_usage builtins_rust/rreturn/src/intercdep.rs /^ pub fn builtin_usage();$/;" f +builtin_usage builtins_rust/set/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/setattr/src/intercdep.rs /^ pub fn builtin_usage();$/;" f +builtin_usage builtins_rust/shift/src/intercdep.rs /^ pub fn builtin_usage();$/;" f +builtin_usage builtins_rust/shopt/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/source/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/suspend/src/intercdep.rs /^ pub fn builtin_usage();$/;" f +builtin_usage builtins_rust/trap/src/intercdep.rs /^ pub fn builtin_usage();$/;" f +builtin_usage builtins_rust/type/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/ulimit/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage builtins_rust/umask/src/lib.rs /^ fn builtin_usage();$/;" f +builtin_usage r_bash/src/lib.rs /^ pub fn builtin_usage();$/;" f +builtin_warning builtins/common.c /^builtin_warning (const char *format, ...)$/;" f typeref:typename:void +builtin_warning builtins_rust/bind/src/lib.rs /^ fn builtin_warning(format: *const c_char, ...);$/;" f +builtin_warning builtins_rust/declare/src/lib.rs /^ fn builtin_warning(err: *const c_char, ...);$/;" f +builtin_warning builtins_rust/enable/src/lib.rs /^ fn builtin_warning(_: *const libc::c_char, _: ...);$/;" f +builtin_warning builtins_rust/printf/src/intercdep.rs /^ pub fn builtin_warning(format: *const c_char, ...);$/;" f +builtin_warning r_bash/src/lib.rs /^ pub fn builtin_warning(arg1: *const ::std::os::raw::c_char, ...);$/;" f +builtin_warning r_jobs/src/lib.rs /^ fn builtin_warning(_: *const c_char, _: ...);$/;" f +builtins builtins/mkbuiltins.c /^ ARRAY *builtins; \/* Null terminated array of BUILTIN_DESC *. *\/$/;" m struct:__anon69e836710308 typeref:typename:ARRAY * file: +builtins.c builtins/Makefile.in /^builtext.h builtins.c: $(MKBUILTINS) $(DEFSRC)$/;" t +builtins.o builtins/Makefile.in /^builtins.o: builtins.c$/;" t +builtins.texi builtins/Makefile.in /^builtins.texi: $(MKBUILTINS)$/;" t +builtins/alias.o Makefile.in /^builtins\/alias.o: $(DEFSRC)\/alias.def$/;" t +builtins/alias.o Makefile.in /^builtins\/alias.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BA/;" t +builtins/alias.o Makefile.in /^builtins\/alias.o: dispose_cmd.h make_cmd.h subst.h externs.h variables.h arrayfunc.h conftypes./;" t +builtins/alias.o Makefile.in /^builtins\/alias.o: quit.h $(DEFSRC)\/common.h pathnames.h$/;" t +builtins/alias.o Makefile.in /^builtins\/alias.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h command.h ${BASHIN/;" t +builtins/bashgetopt.o Makefile.in /^builtins\/bashgetopt.o: $(DEFSRC)\/common.h$/;" t +builtins/bashgetopt.o Makefile.in /^builtins\/bashgetopt.o: ${BASHINCDIR}\/chartypes.h$/;" t +builtins/bashgetopt.o Makefile.in /^builtins\/bashgetopt.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +builtins/bashgetopt.o Makefile.in /^builtins\/bashgetopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h $/;" t +builtins/bashgetopt.o Makefile.in /^builtins\/bashgetopt.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error./;" t +builtins/bashgetopt.o Makefile.in /^builtins\/bashgetopt.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}\/maxpath.h unwi/;" t +builtins/bind.o Makefile.in /^builtins\/bind.o: $(DEFSRC)\/bashgetopt.h pathnames.h$/;" t +builtins/bind.o Makefile.in /^builtins\/bind.o: $(DEFSRC)\/bind.def$/;" t +builtins/bind.o Makefile.in /^builtins\/bind.o: $(HIST_LIBSRC)\/history.h $(RL_LIBSRC)\/rlstdc.h$/;" t +builtins/bind.o Makefile.in /^builtins\/bind.o: $(RL_LIBSRC)\/chardefs.h $(RL_LIBSRC)\/readline.h$/;" t +builtins/bind.o Makefile.in /^builtins\/bind.o: $(RL_LIBSRC)\/keymaps.h $(RL_LIBSRC)\/rlstdc.h$/;" t +builtins/bind.o Makefile.in /^builtins\/bind.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/bind.o Makefile.in /^builtins\/bind.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/bind.o Makefile.in /^builtins\/bind.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/bind.o Makefile.in /^builtins\/bind.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +builtins/break.o Makefile.in /^builtins\/break.o: $(DEFSRC)\/break.def$/;" t +builtins/break.o Makefile.in /^builtins\/break.o: $(srcdir)\/config-top.h$/;" t +builtins/break.o Makefile.in /^builtins\/break.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/break.o Makefile.in /^builtins\/break.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BA/;" t +builtins/break.o Makefile.in /^builtins\/break.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/break.o Makefile.in /^builtins\/break.o: pathnames.h execute_cmd.h$/;" t +builtins/break.o Makefile.in /^builtins\/break.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h vari/;" t +builtins/builtin.o Makefile.in /^builtins\/builtin.o: $(DEFSRC)\/builtin.def$/;" t +builtins/builtin.o Makefile.in /^builtins\/builtin.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${/;" t +builtins/builtin.o Makefile.in /^builtins\/builtin.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/builtin.o Makefile.in /^builtins\/builtin.o: pathnames.h execute_cmd.h$/;" t +builtins/builtin.o Makefile.in /^builtins\/builtin.o: quit.h $(DEFSRC)\/common.h $(DEFSRC)\/bashgetopt.h$/;" t +builtins/builtin.o Makefile.in /^builtins\/builtin.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h va/;" t +builtins/caller.o Makefile.in /^builtins\/caller.o: $(DEFSRC)\/caller.def$/;" t +builtins/caller.o Makefile.in /^builtins\/caller.o: $(DEFSRC)\/common.h quit.h $/;" t +builtins/caller.o Makefile.in /^builtins\/caller.o: ${BASHINCDIR}\/chartypes.h bashtypes.h$/;" t +builtins/caller.o Makefile.in /^builtins\/caller.o: ${DEFDIR}\/builtext.h pathnames.h$/;" t +builtins/caller.o Makefile.in /^builtins\/caller.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/caller.o Makefile.in /^builtins\/caller.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${B/;" t +builtins/caller.o Makefile.in /^builtins\/caller.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/caller.o Makefile.in /^builtins\/caller.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h var/;" t +builtins/cd.o Makefile.in /^builtins\/cd.o: $(DEFSRC)\/cd.def$/;" t +builtins/cd.o Makefile.in /^builtins\/cd.o: $(DEFSRC)\/common.h quit.h pathnames.h$/;" t +builtins/cd.o Makefile.in /^builtins\/cd.o: $(TILDE_LIBSRC)\/tilde.h $/;" t +builtins/cd.o Makefile.in /^builtins\/cd.o: $(srcdir)\/config-top.h$/;" t +builtins/cd.o Makefile.in /^builtins\/cd.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/cd.o Makefile.in /^builtins\/cd.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BASHI/;" t +builtins/cd.o Makefile.in /^builtins\/cd.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/cd.o Makefile.in /^builtins\/cd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h variabl/;" t +builtins/colon.o Makefile.in /^builtins\/colon.o: $(DEFSRC)\/colon.def$/;" t +builtins/colon.o Makefile.in /^builtins\/colon.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BA/;" t +builtins/colon.o Makefile.in /^builtins\/colon.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/colon.o Makefile.in /^builtins\/colon.o: pathnames.h$/;" t +builtins/colon.o Makefile.in /^builtins\/colon.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h vari/;" t +builtins/command.o Makefile.in /^builtins\/command.o: $(DEFSRC)\/command.def$/;" t +builtins/command.o Makefile.in /^builtins\/command.o: $(srcdir)\/config-top.h$/;" t +builtins/command.o Makefile.in /^builtins\/command.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${/;" t +builtins/command.o Makefile.in /^builtins\/command.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h pathnames./;" t +builtins/command.o Makefile.in /^builtins\/command.o: quit.h $(DEFSRC)\/bashgetopt.h$/;" t +builtins/command.o Makefile.in /^builtins\/command.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h va/;" t +builtins/common.c Makefile.in /^builtins\/common.c: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/common.o Makefile.in /^builtins\/common.o: $(TILDE_LIBSRC)\/tilde.h$/;" t +builtins/common.o Makefile.in /^builtins\/common.o: $(srcdir)\/config-top.h$/;" t +builtins/common.o Makefile.in /^builtins\/common.o: ${BASHINCDIR}\/chartypes.h$/;" t +builtins/common.o Makefile.in /^builtins\/common.o: ${BASHINCDIR}\/memalloc.h variables.h arrayfunc.h conftypes.h input.h siglis/;" t +builtins/common.o Makefile.in /^builtins\/common.o: ${DEFDIR}\/builtext.h parser.h$/;" t +builtins/common.o Makefile.in /^builtins\/common.o: bashtypes.h ${BASHINCDIR}\/posixstat.h bashansi.h ${BASHINCDIR}\/ansi_stdlib/;" t +builtins/common.o Makefile.in /^builtins\/common.o: dispose_cmd.h make_cmd.h subst.h externs.h bashhist.h $/;" t +builtins/common.o Makefile.in /^builtins\/common.o: execute_cmd.h ${BASHINCDIR}\/stdc.h general.h xmalloc.h error.h pathnames.h$/;" t +builtins/common.o Makefile.in /^builtins\/common.o: quit.h unwind_prot.h ${BASHINCDIR}\/maxpath.h jobs.h builtins.h$/;" t +builtins/common.o Makefile.in /^builtins\/common.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h command./;" t +builtins/complete.o Makefile.in /^builtins\/complete.o: $(DEFSRC)\/complete.def$/;" t +builtins/complete.o Makefile.in /^builtins\/complete.o: ${DEFSRC}\/common.h ${DEFSRC}\/bashgetopt.h$/;" t +builtins/complete.o Makefile.in /^builtins\/complete.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/complete.o Makefile.in /^builtins\/complete.o: bashtypes.h ${BASHINCDIR}\/chartypes.h xmalloc.h$/;" t +builtins/complete.o Makefile.in /^builtins\/complete.o: bashtypes.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +builtins/complete.o Makefile.in /^builtins\/complete.o: builtins.h pathnames.h general.h$/;" t +builtins/complete.o Makefile.in /^builtins\/complete.o: config.h shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h$/;" t +builtins/complete.o Makefile.in /^builtins\/complete.o: pcomplete.h$/;" t +builtins/complete.o Makefile.in /^builtins\/complete.o: unwind_prot.h variables.h arrayfunc.h conftypes.h$/;" t +builtins/declare.o Makefile.in /^builtins\/declare.o: $(DEFSRC)\/bashgetopt.h pathnames.h flags.h$/;" t +builtins/declare.o Makefile.in /^builtins\/declare.o: $(DEFSRC)\/declare.def$/;" t +builtins/declare.o Makefile.in /^builtins\/declare.o: $(srcdir)\/config-top.h$/;" t +builtins/declare.o Makefile.in /^builtins\/declare.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/declare.o Makefile.in /^builtins\/declare.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${/;" t +builtins/declare.o Makefile.in /^builtins\/declare.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/declare.o Makefile.in /^builtins\/declare.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h va/;" t +builtins/echo.o Makefile.in /^builtins\/echo.o: $(DEFSRC)\/common.h$/;" t +builtins/echo.o Makefile.in /^builtins\/echo.o: $(DEFSRC)\/echo.def$/;" t +builtins/echo.o Makefile.in /^builtins\/echo.o: $(srcdir)\/config-top.h$/;" t +builtins/echo.o Makefile.in /^builtins\/echo.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/echo.o Makefile.in /^builtins\/echo.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/echo.o Makefile.in /^builtins\/echo.o: pathnames.h$/;" t +builtins/echo.o Makefile.in /^builtins\/echo.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +builtins/enable.o Makefile.in /^builtins\/enable.o: $(DEFSRC)\/enable.def$/;" t +builtins/enable.o Makefile.in /^builtins\/enable.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/enable.o Makefile.in /^builtins\/enable.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${B/;" t +builtins/enable.o Makefile.in /^builtins\/enable.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/enable.o Makefile.in /^builtins\/enable.o: pcomplete.h pathnames.h$/;" t +builtins/enable.o Makefile.in /^builtins\/enable.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h var/;" t +builtins/eval.o Makefile.in /^builtins\/eval.o: $(DEFSRC)\/eval.def$/;" t +builtins/eval.o Makefile.in /^builtins\/eval.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/eval.o Makefile.in /^builtins\/eval.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/eval.o Makefile.in /^builtins\/eval.o: pathnames.h$/;" t +builtins/eval.o Makefile.in /^builtins\/eval.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +builtins/evalfile.c Makefile.in /^builtins\/evalfile.c: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/evalfile.o Makefile.in /^builtins\/evalfile.o: bashhist.h $(DEFSRC)\/common.h$/;" t +builtins/evalfile.o Makefile.in /^builtins\/evalfile.o: bashtypes.h ${BASHINCDIR}\/posixstat.h ${BASHINCDIR}\/filecntl.h bashansi./;" t +builtins/evalfile.o Makefile.in /^builtins\/evalfile.o: jobs.h builtins.h flags.h input.h execute_cmd.h$/;" t +builtins/evalfile.o Makefile.in /^builtins\/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h$/;" t +builtins/evalfile.o Makefile.in /^builtins\/evalfile.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error.h$/;" t +builtins/evalfile.o Makefile.in /^builtins\/evalfile.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}\/maxpath.h unwind/;" t +builtins/evalstring.o Makefile.in /^builtins\/evalstring.o: $(srcdir)\/config-top.h$/;" t +builtins/evalstring.o Makefile.in /^builtins\/evalstring.o: ${BASHINCDIR}\/memalloc.h variables.h arrayfunc.h conftypes.h input.h$/;" t +builtins/evalstring.o Makefile.in /^builtins\/evalstring.o: ${DEFDIR}\/builtext.h$/;" t +builtins/evalstring.o Makefile.in /^builtins\/evalstring.o: bashhist.h $(DEFSRC)\/common.h pathnames.h$/;" t +builtins/evalstring.o Makefile.in /^builtins\/evalstring.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +builtins/evalstring.o Makefile.in /^builtins\/evalstring.o: dispose_cmd.h make_cmd.h subst.h externs.h $/;" t +builtins/evalstring.o Makefile.in /^builtins\/evalstring.o: jobs.h builtins.h flags.h input.h execute_cmd.h$/;" t +builtins/evalstring.o Makefile.in /^builtins\/evalstring.o: quit.h unwind_prot.h ${BASHINCDIR}\/maxpath.h jobs.h builtins.h$/;" t +builtins/evalstring.o Makefile.in /^builtins\/evalstring.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h command.h sig/;" t +builtins/exec.o Makefile.in /^builtins\/exec.o: $(DEFSRC)\/exec.def$/;" t +builtins/exec.o Makefile.in /^builtins\/exec.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/exec.o Makefile.in /^builtins\/exec.o: bashtypes.h pathnames.h$/;" t +builtins/exec.o Makefile.in /^builtins\/exec.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/exec.o Makefile.in /^builtins\/exec.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h $/;" t +builtins/exec.o Makefile.in /^builtins\/exec.o: findcmd.h flags.h quit.h $(DEFSRC)\/common.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/exec.o Makefile.in /^builtins\/exec.o: pathnames.h$/;" t +builtins/exec.o Makefile.in /^builtins\/exec.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +builtins/exit.o Makefile.in /^builtins\/exit.o: $(DEFSRC)\/exit.def$/;" t +builtins/exit.o Makefile.in /^builtins\/exit.o: $(srcdir)\/config-top.h$/;" t +builtins/exit.o Makefile.in /^builtins\/exit.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/exit.o Makefile.in /^builtins\/exit.o: bashtypes.h $/;" t +builtins/exit.o Makefile.in /^builtins\/exit.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/exit.o Makefile.in /^builtins\/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/exit.o Makefile.in /^builtins\/exit.o: pathnames.h execute_cmd.h$/;" t +builtins/exit.o Makefile.in /^builtins\/exit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +builtins/fc.o Makefile.in /^builtins\/fc.o: $(DEFSRC)\/bashgetopt.h bashhist.h pathnames.h parser.h$/;" t +builtins/fc.o Makefile.in /^builtins\/fc.o: $(DEFSRC)\/fc.def$/;" t +builtins/fc.o Makefile.in /^builtins\/fc.o: $(HIST_LIBSRC)\/history.h $(RL_LIBSRC)\/rlstdc.h$/;" t +builtins/fc.o Makefile.in /^builtins\/fc.o: ${BASHINCDIR}\/chartypes.h$/;" t +builtins/fc.o Makefile.in /^builtins\/fc.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/fc.o Makefile.in /^builtins\/fc.o: bashansi.h ${BASHINCDIR}\/ansi_stdlib.h builtins.h command.h ${BASHINCDIR}\/stdc/;" t +builtins/fc.o Makefile.in /^builtins\/fc.o: bashtypes.h ${BASHINCDIR}\/posixstat.h$/;" t +builtins/fc.o Makefile.in /^builtins\/fc.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BASHI/;" t +builtins/fc.o Makefile.in /^builtins\/fc.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h quit.h $/;" t +builtins/fc.o Makefile.in /^builtins\/fc.o: flags.h unwind_prot.h variables.h arrayfunc.h conftypes.h shell.h syntax.h bashj/;" t +builtins/fg_bg.o Makefile.in /^builtins\/fg_bg.o: $(DEFSRC)\/fg_bg.def$/;" t +builtins/fg_bg.o Makefile.in /^builtins\/fg_bg.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/fg_bg.o Makefile.in /^builtins\/fg_bg.o: bashtypes.h $(DEFSRC)\/bashgetopt.h $/;" t +builtins/fg_bg.o Makefile.in /^builtins\/fg_bg.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BA/;" t +builtins/fg_bg.o Makefile.in /^builtins\/fg_bg.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/fg_bg.o Makefile.in /^builtins\/fg_bg.o: pathnames.h execute_cmd.h$/;" t +builtins/fg_bg.o Makefile.in /^builtins\/fg_bg.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h vari/;" t +builtins/getopt.c Makefile.in /^builtins\/getopt.c: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/getopt.o Makefile.in /^builtins\/getopt.o: $(DEFSRC)\/getopt.h$/;" t +builtins/getopt.o Makefile.in /^builtins\/getopt.o: config.h ${BASHINCDIR}\/memalloc.h$/;" t +builtins/getopt.o Makefile.in /^builtins\/getopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h $/;" t +builtins/getopt.o Makefile.in /^builtins\/getopt.o: shell.h syntax.h bashjmp.h command.h general.h xmalloc.h error.h$/;" t +builtins/getopt.o Makefile.in /^builtins\/getopt.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}\/maxpath.h unwind_p/;" t +builtins/getopts.o Makefile.in /^builtins\/getopts.o: $(DEFSRC)\/getopts.def$/;" t +builtins/getopts.o Makefile.in /^builtins\/getopts.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${/;" t +builtins/getopts.o Makefile.in /^builtins\/getopts.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/getopts.o Makefile.in /^builtins\/getopts.o: pathnames.h execute_cmd.h$/;" t +builtins/getopts.o Makefile.in /^builtins\/getopts.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h va/;" t +builtins/hash.o Makefile.in /^builtins\/hash.o: $(DEFSRC)\/hash.def$/;" t +builtins/hash.o Makefile.in /^builtins\/hash.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/hash.o Makefile.in /^builtins\/hash.o: bashtypes.h execute_cmd.h$/;" t +builtins/hash.o Makefile.in /^builtins\/hash.o: builtins.h command.h findcmd.h ${BASHINCDIR}\/stdc.h $(DEFSRC)\/common.h$/;" t +builtins/hash.o Makefile.in /^builtins\/hash.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/hash.o Makefile.in /^builtins\/hash.o: pathnames.h$/;" t +builtins/hash.o Makefile.in /^builtins\/hash.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +builtins/help.o Makefile.in /^builtins\/help.o: $(DEFSRC)\/help.def$/;" t +builtins/help.o Makefile.in /^builtins\/help.o: $(GLOB_LIBSRC)\/glob.h pathnames.h$/;" t +builtins/help.o Makefile.in /^builtins\/help.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/help.o Makefile.in /^builtins\/help.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/help.o Makefile.in /^builtins\/help.o: conftypes.h quit.h execute_cmd.h$/;" t +builtins/help.o Makefile.in /^builtins\/help.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/help.o Makefile.in /^builtins\/help.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +builtins/history.o Makefile.in /^builtins\/history.o: $(DEFSRC)\/history.def$/;" t +builtins/history.o Makefile.in /^builtins\/history.o: $(HIST_LIBSRC)\/history.h $(RL_LIBSRC)\/rlstdc.h$/;" t +builtins/history.o Makefile.in /^builtins\/history.o: ${BASHINCDIR}\/filecntl.h shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjm/;" t +builtins/history.o Makefile.in /^builtins\/history.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/history.o Makefile.in /^builtins\/history.o: bashhist.h variables.h arrayfunc.h conftypes.h $/;" t +builtins/history.o Makefile.in /^builtins\/history.o: bashtypes.h pathnames.h parser.h$/;" t +builtins/history.o Makefile.in /^builtins\/history.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${/;" t +builtins/history.o Makefile.in /^builtins\/history.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/inlib.o Makefile.in /^builtins\/inlib.o: $(DEFSRC)\/inlib.def$/;" t +builtins/inlib.o Makefile.in /^builtins\/inlib.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/inlib.o Makefile.in /^builtins\/inlib.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BA/;" t +builtins/inlib.o Makefile.in /^builtins\/inlib.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/inlib.o Makefile.in /^builtins\/inlib.o: pathnames.h$/;" t +builtins/inlib.o Makefile.in /^builtins\/inlib.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h vari/;" t +builtins/jobs.o Makefile.in /^builtins\/jobs.o: $(DEFSRC)\/jobs.def$/;" t +builtins/jobs.o Makefile.in /^builtins\/jobs.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/jobs.o Makefile.in /^builtins\/jobs.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/jobs.o Makefile.in /^builtins\/jobs.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/jobs.o Makefile.in /^builtins\/jobs.o: pathnames.h$/;" t +builtins/jobs.o Makefile.in /^builtins\/jobs.o: quit.h $(DEFSRC)\/bashgetopt.h$/;" t +builtins/jobs.o Makefile.in /^builtins\/jobs.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +builtins/kill.o Makefile.in /^builtins\/kill.o: $(DEFSRC)\/kill.def$/;" t +builtins/kill.o Makefile.in /^builtins\/kill.o: $(srcdir)\/config-top.h$/;" t +builtins/kill.o Makefile.in /^builtins\/kill.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/kill.o Makefile.in /^builtins\/kill.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/kill.o Makefile.in /^builtins\/kill.o: pathnames.h$/;" t +builtins/kill.o Makefile.in /^builtins\/kill.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/kill.o Makefile.in /^builtins\/kill.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h trap.h unwind_prot./;" t +builtins/let.o Makefile.in /^builtins\/let.o: $(DEFSRC)\/let.def$/;" t +builtins/let.o Makefile.in /^builtins\/let.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/let.o Makefile.in /^builtins\/let.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BASH/;" t +builtins/let.o Makefile.in /^builtins\/let.o: pathnames.h$/;" t +builtins/let.o Makefile.in /^builtins\/let.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/let.o Makefile.in /^builtins\/let.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h variab/;" t +builtins/mapfile.o Makefile.in /^builtins\/mapfile.o: $(DEFSRC)\/mapfile.def$/;" t +builtins/mapfile.o Makefile.in /^builtins\/mapfile.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/mapfile.o Makefile.in /^builtins\/mapfile.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${/;" t +builtins/mapfile.o Makefile.in /^builtins\/mapfile.o: pathnames.h$/;" t +builtins/mapfile.o Makefile.in /^builtins\/mapfile.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/mapfile.o Makefile.in /^builtins\/mapfile.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h va/;" t +builtins/mkbuiltins.o Makefile.in /^builtins\/mkbuiltins.o: $(BASHINCDIR)\/stdc.h$/;" t +builtins/mkbuiltins.o Makefile.in /^builtins\/mkbuiltins.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/mkbuiltins.o Makefile.in /^builtins\/mkbuiltins.o: bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +builtins/mkbuiltins.o Makefile.in /^builtins\/mkbuiltins.o: config.h bashtypes.h ${BASHINCDIR}\/posixstat.h ${BASHINCDIR}\/filecntl./;" t +builtins/printf.o Makefile.in /^builtins\/printf.o: ${BASHINCDIR}\/chartypes.h $/;" t +builtins/printf.o Makefile.in /^builtins\/printf.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +builtins/printf.o Makefile.in /^builtins\/printf.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/printf.o Makefile.in /^builtins\/printf.o: config.h ${BASHINCDIR}\/memalloc.h bashjmp.h command.h error.h$/;" t +builtins/printf.o Makefile.in /^builtins\/printf.o: externs.h sig.h pathnames.h shell.h syntax.h unwind_prot.h$/;" t +builtins/printf.o Makefile.in /^builtins\/printf.o: general.h xmalloc.h quit.h dispose_cmd.h make_cmd.h subst.h$/;" t +builtins/printf.o Makefile.in /^builtins\/printf.o: variables.h arrayfunc.h conftypes.h ${BASHINCDIR}\/stdc.h $(DEFSRC)\/bashget/;" t +builtins/pushd.o Makefile.in /^builtins\/pushd.o: $(DEFSRC)\/common.h pathnames.h$/;" t +builtins/pushd.o Makefile.in /^builtins\/pushd.o: $(DEFSRC)\/pushd.def$/;" t +builtins/pushd.o Makefile.in /^builtins\/pushd.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/pushd.o Makefile.in /^builtins\/pushd.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BA/;" t +builtins/pushd.o Makefile.in /^builtins\/pushd.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/pushd.o Makefile.in /^builtins\/pushd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h vari/;" t +builtins/read.o Makefile.in /^builtins\/read.o: $(DEFSRC)\/read.def$/;" t +builtins/read.o Makefile.in /^builtins\/read.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +builtins/read.o Makefile.in /^builtins\/read.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/read.o Makefile.in /^builtins\/read.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/read.o Makefile.in /^builtins\/read.o: pathnames.h$/;" t +builtins/read.o Makefile.in /^builtins\/read.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/read.o Makefile.in /^builtins\/read.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +builtins/reserved.o Makefile.in /^builtins\/reserved.o: $(DEFSRC)\/reserved.def$/;" t +builtins/return.o Makefile.in /^builtins\/return.o: $(DEFSRC)\/return.def$/;" t +builtins/return.o Makefile.in /^builtins\/return.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/return.o Makefile.in /^builtins\/return.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${B/;" t +builtins/return.o Makefile.in /^builtins\/return.o: pathnames.h execute_cmd.h$/;" t +builtins/return.o Makefile.in /^builtins\/return.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/return.o Makefile.in /^builtins\/return.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h var/;" t +builtins/set.o Makefile.in /^builtins\/set.o: $(DEFSRC)\/set.def$/;" t +builtins/set.o Makefile.in /^builtins\/set.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/set.o Makefile.in /^builtins\/set.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BASH/;" t +builtins/set.o Makefile.in /^builtins\/set.o: pathnames.h parser.h$/;" t +builtins/set.o Makefile.in /^builtins\/set.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/set.o Makefile.in /^builtins\/set.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h variab/;" t +builtins/setattr.o Makefile.in /^builtins\/setattr.o: $(DEFSRC)\/setattr.def$/;" t +builtins/setattr.o Makefile.in /^builtins\/setattr.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/setattr.o Makefile.in /^builtins\/setattr.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${/;" t +builtins/setattr.o Makefile.in /^builtins\/setattr.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/setattr.o Makefile.in /^builtins\/setattr.o: pathnames.h flags.h execute_cmd.h$/;" t +builtins/setattr.o Makefile.in /^builtins\/setattr.o: quit.h $(DEFSRC)\/common.h $(DEFSRC)\/bashgetopt.h$/;" t +builtins/setattr.o Makefile.in /^builtins\/setattr.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h va/;" t +builtins/shift.o Makefile.in /^builtins\/shift.o: $(DEFSRC)\/shift.def$/;" t +builtins/shift.o Makefile.in /^builtins\/shift.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/shift.o Makefile.in /^builtins\/shift.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BA/;" t +builtins/shift.o Makefile.in /^builtins\/shift.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/shift.o Makefile.in /^builtins\/shift.o: pathnames.h$/;" t +builtins/shift.o Makefile.in /^builtins\/shift.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/shift.o Makefile.in /^builtins\/shift.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h vari/;" t +builtins/shopt.o Makefile.in /^builtins\/shopt.o: $(DEFSRC)\/common.h $(DEFSRC)\/bashgetopt.h pathnames.h$/;" t +builtins/shopt.o Makefile.in /^builtins\/shopt.o: $(DEFSRC)\/shopt.def$/;" t +builtins/shopt.o Makefile.in /^builtins\/shopt.o: $(srcdir)\/config-top.h$/;" t +builtins/shopt.o Makefile.in /^builtins\/shopt.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/shopt.o Makefile.in /^builtins\/shopt.o: bashhist.h bashline.h$/;" t +builtins/shopt.o Makefile.in /^builtins\/shopt.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h$/;" t +builtins/shopt.o Makefile.in /^builtins\/shopt.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h$/;" t +builtins/shopt.o Makefile.in /^builtins\/shopt.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h unwind_prot.h variables./;" t +builtins/source.o Makefile.in /^builtins\/source.o: $(DEFSRC)\/source.def$/;" t +builtins/source.o Makefile.in /^builtins\/source.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/source.o Makefile.in /^builtins\/source.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${B/;" t +builtins/source.o Makefile.in /^builtins\/source.o: findcmd.h $(DEFSRC)\/bashgetopt.h flags.h trap.h$/;" t +builtins/source.o Makefile.in /^builtins\/source.o: pathnames.h execute_cmd.h$/;" t +builtins/source.o Makefile.in /^builtins\/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/source.o Makefile.in /^builtins\/source.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h var/;" t +builtins/suspend.o Makefile.in /^builtins\/suspend.o: $(DEFSRC)\/suspend.def$/;" t +builtins/suspend.o Makefile.in /^builtins\/suspend.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/suspend.o Makefile.in /^builtins\/suspend.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${/;" t +builtins/suspend.o Makefile.in /^builtins\/suspend.o: pathnames.h$/;" t +builtins/suspend.o Makefile.in /^builtins\/suspend.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/suspend.o Makefile.in /^builtins\/suspend.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h va/;" t +builtins/test.o Makefile.in /^builtins\/test.o: $(DEFSRC)\/test.def$/;" t +builtins/test.o Makefile.in /^builtins\/test.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/test.o Makefile.in /^builtins\/test.o: execute_cmd.h test.h pathnames.h$/;" t +builtins/test.o Makefile.in /^builtins\/test.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/test.o Makefile.in /^builtins\/test.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +builtins/times.o Makefile.in /^builtins\/times.o: $(DEFSRC)\/times.def$/;" t +builtins/times.o Makefile.in /^builtins\/times.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BA/;" t +builtins/times.o Makefile.in /^builtins\/times.o: pathnames.h$/;" t +builtins/times.o Makefile.in /^builtins\/times.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/times.o Makefile.in /^builtins\/times.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h vari/;" t +builtins/trap.o Makefile.in /^builtins\/trap.o: $(DEFSRC)\/trap.def$/;" t +builtins/trap.o Makefile.in /^builtins\/trap.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/trap.o Makefile.in /^builtins\/trap.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/trap.o Makefile.in /^builtins\/trap.o: pathnames.h$/;" t +builtins/trap.o Makefile.in /^builtins\/trap.o: quit.h $(DEFSRC)\/common.h$/;" t +builtins/trap.o Makefile.in /^builtins\/trap.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +builtins/type.o Makefile.in /^builtins\/type.o: $(DEFSRC)\/type.def$/;" t +builtins/type.o Makefile.in /^builtins\/type.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/type.o Makefile.in /^builtins\/type.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/type.o Makefile.in /^builtins\/type.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/type.o Makefile.in /^builtins\/type.o: pathnames.h execute_cmd.h parser.h$/;" t +builtins/type.o Makefile.in /^builtins\/type.o: quit.h $(DEFSRC)\/common.h findcmd.h$/;" t +builtins/type.o Makefile.in /^builtins\/type.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +builtins/ulimit.o Makefile.in /^builtins\/ulimit.o: $(DEFSRC)\/ulimit.def$/;" t +builtins/ulimit.o Makefile.in /^builtins\/ulimit.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/ulimit.o Makefile.in /^builtins\/ulimit.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${B/;" t +builtins/ulimit.o Makefile.in /^builtins\/ulimit.o: pathnames.h$/;" t +builtins/ulimit.o Makefile.in /^builtins\/ulimit.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/ulimit.o Makefile.in /^builtins\/ulimit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h var/;" t +builtins/umask.o Makefile.in /^builtins\/umask.o: $(DEFSRC)\/umask.def$/;" t +builtins/umask.o Makefile.in /^builtins\/umask.o: ${BASHINCDIR}\/chartypes.h pathnames.h$/;" t +builtins/umask.o Makefile.in /^builtins\/umask.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +builtins/umask.o Makefile.in /^builtins\/umask.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BA/;" t +builtins/umask.o Makefile.in /^builtins\/umask.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/umask.o Makefile.in /^builtins\/umask.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h vari/;" t +builtins/wait.o Makefile.in /^builtins\/wait.o: $(DEFSRC)\/wait.def$/;" t +builtins/wait.o Makefile.in /^builtins\/wait.o: ${BASHINCDIR}\/chartypes.h pathnames.h$/;" t +builtins/wait.o Makefile.in /^builtins\/wait.o: command.h config.h ${BASHINCDIR}\/memalloc.h error.h general.h xmalloc.h ${BAS/;" t +builtins/wait.o Makefile.in /^builtins\/wait.o: execute_cmd.h$/;" t +builtins/wait.o Makefile.in /^builtins\/wait.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}\/stdc.h$/;" t +builtins/wait.o Makefile.in /^builtins\/wait.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h sig.h unwind_prot.h varia/;" t +bump_ignore_group vendor/syn/src/buffer.rs /^ unsafe fn bump_ignore_group(self) -> Cursor<'a> {$/;" P implementation:Cursor +bundle vendor/fluent-bundle/src/lib.rs /^pub mod bundle;$/;" n +bundle vendor/fluent-bundle/src/resolver/scope.rs /^ pub bundle: &'scope FluentBundle,$/;" m struct:Scope +bundles vendor/fluent-fallback/src/lib.rs /^mod bundles;$/;" n +bundles vendor/fluent-fallback/src/localization.rs /^ bundles: OnceCell>>,$/;" m struct:Localization +bundles vendor/fluent-fallback/src/localization.rs /^ pub fn bundles(&self) -> &Rc> {$/;" f +bundles_iter vendor/fluent-fallback/examples/simple-fallback.rs /^ fn bundles_iter($/;" P implementation:Bundles +bundles_iter vendor/fluent-fallback/src/generator.rs /^ fn bundles_iter(&self, _locales: Self::LocalesIter, _res_ids: Vec) -> Self::Iter/;" P interface:BundleGenerator +bundles_iter vendor/fluent-fallback/tests/localization_test.rs /^ fn bundles_iter(&self, locales: Self::LocalesIter, res_ids: Vec) -> Self::Iter {$/;" P implementation:ResourceManager +bundles_iter vendor/fluent-resmgr/src/resource_manager.rs /^ fn bundles_iter(&self, locales: Self::LocalesIter, res_ids: Vec) -> Self::Iter {$/;" P implementation:ResourceManager +bundles_stream vendor/fluent-fallback/src/generator.rs /^ fn bundles_stream($/;" P interface:BundleGenerator +bundles_stream vendor/fluent-fallback/tests/localization_test.rs /^ fn bundles_stream(&self, locales: Self::LocalesIter, res_ids: Vec) -> Self::Stre/;" P implementation:ResourceManager +bundles_stream vendor/fluent-resmgr/src/resource_manager.rs /^ fn bundles_stream($/;" P implementation:ResourceManager +busy lib/malloc/malloc.c /^static char busy[NBUCKETS];$/;" v typeref:typename:char[] file: +byAlpha support/texi2html /^sub byAlpha$/;" s +byOrder support/texi2html /^sub byOrder$/;" s +by_ref vendor/futures-util/src/stream/stream/mod.rs /^ fn by_ref(&mut self) -> &mut Self {$/;" P interface:StreamExt +byte vendor/futures-util/src/io/read_until.rs /^ byte: u8,$/;" m struct:ReadUntil +byte vendor/futures-util/src/io/repeat.rs /^ byte: u8,$/;" m struct:Repeat +byte vendor/proc-macro2/src/parse.rs /^fn byte(input: Cursor) -> Result {$/;" f +byte vendor/syn/src/lit.rs /^ pub fn byte + ?Sized>(s: &S, idx: usize) -> u8 {$/;" f module:value +byte vendor/winapi/src/shared/rpcndr.rs /^pub type byte = c_uchar;$/;" t +byte_frequencies vendor/memchr/src/memmem/mod.rs /^mod byte_frequencies;$/;" n +byte_order vendor/memchr/src/tests/mod.rs /^fn byte_order() {$/;" f +byte_order_mark vendor/proc-macro2/tests/test.rs /^fn byte_order_mark() {$/;" f +byte_string vendor/proc-macro2/src/fallback.rs /^ pub fn byte_string(bytes: &[u8]) -> Literal {$/;" P implementation:Literal +byte_string vendor/proc-macro2/src/lib.rs /^ pub fn byte_string(s: &[u8]) -> Literal {$/;" P implementation:Literal +byte_string vendor/proc-macro2/src/parse.rs /^fn byte_string(input: Cursor) -> Result {$/;" f +byte_string vendor/proc-macro2/src/wrapper.rs /^ pub fn byte_string(bytes: &[u8]) -> Literal {$/;" P implementation:Literal +byte_strings vendor/syn/tests/test_lit.rs /^fn byte_strings() {$/;" f +bytes vendor/futures-util/src/io/into_sink.rs /^ bytes: Item,$/;" m struct:Block +bytes vendor/futures-util/src/io/read_line.rs /^ bytes: Vec,$/;" m struct:ReadLine +bytes vendor/futures-util/src/io/read_to_string.rs /^ bytes: Vec,$/;" m struct:ReadToString +bytes vendor/proc-macro2/src/parse.rs /^ fn bytes(&self) -> Bytes<'a> {$/;" P implementation:Cursor +bytes vendor/syn/tests/repo/progress.rs /^ bytes: usize,$/;" m struct:Progress +bytes vendor/syn/tests/test_lit.rs /^fn bytes() {$/;" f +byteset vendor/memchr/src/memmem/twoway.rs /^ byteset: ApproximateByteSet,$/;" m struct:TwoWay +bytesfree lib/malloc/mstats.h /^ bits32_t bytesfree;$/;" m struct:_malstats typeref:typename:bits32_t +bytesreq lib/malloc/mstats.h /^ u_bits32_t bytesreq;$/;" m struct:_malstats typeref:typename:u_bits32_t +bytesused lib/malloc/mstats.h /^ bits32_t bytesused;$/;" m struct:_malstats typeref:typename:bits32_t +bzero lib/sh/oslib.c /^bzero (s, n)$/;" f +bzero r_bash/src/lib.rs /^ pub fn bzero(__s: *mut ::std::os::raw::c_void, __n: usize);$/;" f +bzero r_glob/src/lib.rs /^ pub fn bzero(__s: *mut ::std::os::raw::c_void, __n: usize);$/;" f +bzero r_readline/src/lib.rs /^ pub fn bzero(__s: *mut ::std::os::raw::c_void, __n: usize);$/;" f +bzero vendor/libc/src/solid/mod.rs /^ pub fn bzero(arg1: *mut c_void, arg2: size_t);$/;" f +c vendor/async-trait/tests/test.rs /^ async fn c(&self) {$/;" P implementation:test_self_in_macro::String +c vendor/async-trait/tests/test.rs /^ async fn c(&self);$/;" P interface:test_self_in_macro::Trait +c vendor/libloading/src/test_helpers.rs /^ c: u16,$/;" m struct:S +c vendor/libloading/tests/functions.rs /^ c: u16,$/;" m struct:S +c vendor/memchr/src/memchr/mod.rs /^mod c;$/;" n +c vendor/memoffset/src/offset_of.rs /^ c: i64,$/;" m struct:tests::const_fn_offset::test_fn::Foo +c vendor/memoffset/src/offset_of.rs /^ c: i64,$/;" m struct:tests::const_offset::Foo +c vendor/memoffset/src/offset_of.rs /^ c: i64,$/;" m struct:tests::offset_simple::Foo +c vendor/memoffset/src/offset_of.rs /^ c: i64,$/;" m struct:tests::offset_simple_packed::Foo +c vendor/memoffset/src/offset_of.rs /^ c: i64,$/;" m struct:tests::test_raw_field::Foo +c vendor/memoffset/src/span_of.rs /^ c: i64,$/;" m struct:tests::span_simple::Foo +c vendor/memoffset/src/span_of.rs /^ c: i64,$/;" m struct:tests::span_simple_packed::Foo +c___greg_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/x86_64.rs /^pub type c___greg_t = u64;$/;" t +c_cc r_bash/src/lib.rs /^ pub c_cc: [cc_t; 32usize],$/;" m struct:termios +c_cc r_readline/src/lib.rs /^ pub c_cc: [::std::os::raw::c_uchar; 8usize],$/;" m struct:termio +c_cflag r_bash/src/lib.rs /^ pub c_cflag: tcflag_t,$/;" m struct:termios +c_cflag r_readline/src/lib.rs /^ pub c_cflag: ::std::os::raw::c_ushort,$/;" m struct:termio +c_char vendor/libc/src/fuchsia/aarch64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/fuchsia/x86_64.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/hermit/aarch64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/hermit/x86_64.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/psp.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/sgx.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/solid/aarch64.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/solid/arm.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/switch.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/apple/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/bsd/freebsdlike/freebsd/aarch64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/freebsdlike/freebsd/arm.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/freebsdlike/freebsd/riscv64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/netbsd/aarch64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/netbsd/arm.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/netbsd/powerpc.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/netbsd/sparc64.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/netbsd/x86.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/netbsd/x86_64.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/openbsd/aarch64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/openbsd/arm.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/openbsd/mips64.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/openbsd/powerpc.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/openbsd/powerpc64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/openbsd/riscv64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/openbsd/sparc64.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/openbsd/x86.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/bsd/netbsdlike/openbsd/x86_64.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/haiku/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/hermit/aarch64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/hermit/x86_64.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/android/b32/arm.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/android/b32/x86/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/android/b64/aarch64/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/android/b64/riscv64/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/android/b64/x86_64/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b32/arm/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b32/mips/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/musl/b32/arm/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/musl/b32/hexagon.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/musl/b32/mips/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/musl/b32/x86/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/newlib/aarch64/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/newlib/arm/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/newlib/espidf/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/newlib/horizon/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/newlib/powerpc/mod.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/unix/redox/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/unix/solarish/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/vxworks/aarch64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/vxworks/arm.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/vxworks/powerpc.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/vxworks/powerpc64.rs /^pub type c_char = u8;$/;" t +c_char vendor/libc/src/vxworks/x86.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/vxworks/x86_64.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/wasi.rs /^pub type c_char = i8;$/;" t +c_char vendor/libc/src/windows/mod.rs /^pub type c_char = i8;$/;" t +c_char vendor/winapi/src/lib.rs /^ pub type c_char = i8;$/;" t module:ctypes +c_childmax builtins_rust/common/src/lib.rs /^ c_childmax: libc::c_long,$/;" m struct:jobstats +c_childmax builtins_rust/exit/src/lib.rs /^ c_childmax: libc::c_long,$/;" m struct:jobstats +c_childmax builtins_rust/fg_bg/src/lib.rs /^ c_childmax: libc::c_long,$/;" m struct:jobstats +c_childmax builtins_rust/jobs/src/lib.rs /^ c_childmax: libc::c_long,$/;" m struct:jobstats +c_childmax builtins_rust/kill/src/intercdep.rs /^ pub c_childmax: c_long,$/;" m struct:jobstats +c_childmax builtins_rust/setattr/src/intercdep.rs /^ pub c_childmax: c_long,$/;" m struct:jobstats +c_childmax builtins_rust/wait/src/lib.rs /^ c_childmax: libc::c_long,$/;" m struct:jobstats +c_childmax jobs.h /^ long c_childmax;$/;" m struct:jobstats typeref:typename:long +c_childmax r_bash/src/lib.rs /^ pub c_childmax: ::std::os::raw::c_long,$/;" m struct:jobstats +c_double vendor/libc/src/fuchsia/mod.rs /^pub type c_double = f64;$/;" t +c_double vendor/libc/src/hermit/mod.rs /^pub type c_double = f64;$/;" t +c_double vendor/libc/src/psp.rs /^pub type c_double = f64;$/;" t +c_double vendor/libc/src/sgx.rs /^pub type c_double = f64;$/;" t +c_double vendor/libc/src/solid/mod.rs /^pub type c_double = f64;$/;" t +c_double vendor/libc/src/switch.rs /^pub type c_double = f64;$/;" t +c_double vendor/libc/src/unix/mod.rs /^pub type c_double = f64;$/;" t +c_double vendor/libc/src/vxworks/mod.rs /^pub type c_double = f64;$/;" t +c_double vendor/libc/src/wasi.rs /^pub type c_double = f64;$/;" t +c_double vendor/libc/src/windows/mod.rs /^pub type c_double = f64;$/;" t +c_double vendor/winapi/src/lib.rs /^ pub type c_double = f64;$/;" t module:ctypes +c_flags builtins_rust/kill/src/intercdep.rs /^ pub c_flags: c_int,$/;" m struct:coproc +c_flags builtins_rust/setattr/src/intercdep.rs /^ pub c_flags: c_int,$/;" m struct:coproc +c_flags command.h /^ int c_flags;$/;" m struct:coproc typeref:typename:int +c_flags r_bash/src/lib.rs /^ pub c_flags: ::std::os::raw::c_int,$/;" m struct:coproc +c_flags r_glob/src/lib.rs /^ pub c_flags: ::std::os::raw::c_int,$/;" m struct:coproc +c_flags r_readline/src/lib.rs /^ pub c_flags: ::std::os::raw::c_int,$/;" m struct:coproc +c_float vendor/libc/src/fuchsia/mod.rs /^pub type c_float = f32;$/;" t +c_float vendor/libc/src/hermit/mod.rs /^pub type c_float = f32;$/;" t +c_float vendor/libc/src/psp.rs /^pub type c_float = f32;$/;" t +c_float vendor/libc/src/sgx.rs /^pub type c_float = f32;$/;" t +c_float vendor/libc/src/solid/mod.rs /^pub type c_float = f32;$/;" t +c_float vendor/libc/src/switch.rs /^pub type c_float = f32;$/;" t +c_float vendor/libc/src/unix/mod.rs /^pub type c_float = f32;$/;" t +c_float vendor/libc/src/vxworks/mod.rs /^pub type c_float = f32;$/;" t +c_float vendor/libc/src/wasi.rs /^pub type c_float = f32;$/;" t +c_float vendor/libc/src/windows/mod.rs /^pub type c_float = f32;$/;" t +c_float vendor/winapi/src/lib.rs /^ pub type c_float = f32;$/;" t module:ctypes +c_iflag r_bash/src/lib.rs /^ pub c_iflag: tcflag_t,$/;" m struct:termios +c_iflag r_readline/src/lib.rs /^ pub c_iflag: ::std::os::raw::c_ushort,$/;" m struct:termio +c_injobs builtins_rust/common/src/lib.rs /^ c_injobs: libc::c_int, \/* total number of child processes in jobs list *\/$/;" m struct:jobstats +c_injobs builtins_rust/exit/src/lib.rs /^ c_injobs: libc::c_int, \/* total number of child processes in jobs list *\/$/;" m struct:jobstats +c_injobs builtins_rust/fg_bg/src/lib.rs /^ c_injobs: libc::c_int, \/* total number of child processes in jobs list *\/$/;" m struct:jobstats +c_injobs builtins_rust/jobs/src/lib.rs /^ c_injobs: libc::c_int, \/* total number of child processes in jobs list *\/$/;" m struct:jobstats +c_injobs builtins_rust/kill/src/intercdep.rs /^ pub c_injobs: c_int,$/;" m struct:jobstats +c_injobs builtins_rust/setattr/src/intercdep.rs /^ pub c_injobs: c_int,$/;" m struct:jobstats +c_injobs builtins_rust/wait/src/lib.rs /^ c_injobs: libc::c_int, \/* total number of child processes in jobs list *\/$/;" m struct:jobstats +c_injobs jobs.h /^ int c_injobs; \/* total number of child processes in jobs list *\/$/;" m struct:jobstats typeref:typename:int +c_injobs r_bash/src/lib.rs /^ pub c_injobs: ::std::os::raw::c_int,$/;" m struct:jobstats +c_int vendor/libc/src/fuchsia/mod.rs /^pub type c_int = i32;$/;" t +c_int vendor/libc/src/hermit/mod.rs /^pub type c_int = i32;$/;" t +c_int vendor/libc/src/psp.rs /^pub type c_int = i32;$/;" t +c_int vendor/libc/src/sgx.rs /^pub type c_int = i32;$/;" t +c_int vendor/libc/src/solid/mod.rs /^pub type c_int = i32;$/;" t +c_int vendor/libc/src/switch.rs /^pub type c_int = i32;$/;" t +c_int vendor/libc/src/unix/mod.rs /^pub type c_int = i32;$/;" t +c_int vendor/libc/src/vxworks/mod.rs /^pub type c_int = i32;$/;" t +c_int vendor/libc/src/wasi.rs /^pub type c_int = i32;$/;" t +c_int vendor/libc/src/windows/mod.rs /^pub type c_int = i32;$/;" t +c_int vendor/winapi/src/lib.rs /^ pub type c_int = i32;$/;" t module:ctypes +c_ispeed r_bash/src/lib.rs /^ pub c_ispeed: speed_t,$/;" m struct:termios +c_lflag r_bash/src/lib.rs /^ pub c_lflag: tcflag_t,$/;" m struct:termios +c_lflag r_readline/src/lib.rs /^ pub c_lflag: ::std::os::raw::c_ushort,$/;" m struct:termio +c_line r_bash/src/lib.rs /^ pub c_line: cc_t,$/;" m struct:termios +c_line r_readline/src/lib.rs /^ pub c_line: ::std::os::raw::c_uchar,$/;" m struct:termio +c_living builtins_rust/common/src/lib.rs /^ c_living: libc::c_int, \/* running or stopped child processes *\/$/;" m struct:jobstats +c_living builtins_rust/exit/src/lib.rs /^ c_living: libc::c_int, \/* running or stopped child processes *\/$/;" m struct:jobstats +c_living builtins_rust/fg_bg/src/lib.rs /^ c_living: libc::c_int, \/* running or stopped child processes *\/$/;" m struct:jobstats +c_living builtins_rust/jobs/src/lib.rs /^ c_living: libc::c_int, \/* running or stopped child processes *\/$/;" m struct:jobstats +c_living builtins_rust/kill/src/intercdep.rs /^ pub c_living: c_int,$/;" m struct:jobstats +c_living builtins_rust/setattr/src/intercdep.rs /^ pub c_living: c_int,$/;" m struct:jobstats +c_living builtins_rust/wait/src/lib.rs /^ c_living: libc::c_int, \/* running or stopped child processes *\/$/;" m struct:jobstats +c_living jobs.h /^ int c_living; \/* running or stopped child processes *\/$/;" m struct:jobstats typeref:typename:int +c_living r_bash/src/lib.rs /^ pub c_living: ::std::os::raw::c_int,$/;" m struct:jobstats +c_lock builtins_rust/kill/src/intercdep.rs /^ pub c_lock: c_int,$/;" m struct:coproc +c_lock builtins_rust/setattr/src/intercdep.rs /^ pub c_lock: c_int,$/;" m struct:coproc +c_lock command.h /^ int c_lock;$/;" m struct:coproc typeref:typename:int +c_lock r_bash/src/lib.rs /^ pub c_lock: ::std::os::raw::c_int,$/;" m struct:coproc +c_lock r_glob/src/lib.rs /^ pub c_lock: ::std::os::raw::c_int,$/;" m struct:coproc +c_lock r_readline/src/lib.rs /^ pub c_lock: ::std::os::raw::c_int,$/;" m struct:coproc +c_long vendor/libc/src/fuchsia/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/hermit/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/psp.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/sgx.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/solid/aarch64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/solid/arm.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/switch.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/apple/b32/mod.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/bsd/apple/b64/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/freebsdlike/freebsd/aarch64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/freebsdlike/freebsd/arm.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/freebsdlike/freebsd/riscv64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/netbsd/aarch64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/netbsd/arm.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/netbsd/powerpc.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/netbsd/sparc64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/netbsd/x86.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/netbsd/x86_64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/openbsd/aarch64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/openbsd/arm.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/openbsd/mips64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/openbsd/powerpc.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/openbsd/powerpc64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/openbsd/riscv64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/openbsd/sparc64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/openbsd/x86.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/bsd/netbsdlike/openbsd/x86_64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/haiku/b32.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/haiku/b64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/hermit/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/linux_like/android/b32/mod.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/linux_like/android/b64/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/musl/b32/mod.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/newlib/aarch64/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/newlib/arm/mod.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/newlib/espidf/mod.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/newlib/horizon/mod.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/newlib/powerpc/mod.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/unix/redox/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/unix/solarish/mod.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/vxworks/aarch64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/vxworks/arm.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/vxworks/powerpc.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/vxworks/powerpc64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/vxworks/x86.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/vxworks/x86_64.rs /^pub type c_long = i64;$/;" t +c_long vendor/libc/src/wasi.rs /^pub type c_long = i32;$/;" t +c_long vendor/libc/src/windows/mod.rs /^pub type c_long = i32;$/;" t +c_long vendor/winapi/src/lib.rs /^ pub type c_long = i32;$/;" t module:ctypes +c_longlong vendor/libc/src/fuchsia/mod.rs /^pub type c_longlong = i64;$/;" t +c_longlong vendor/libc/src/hermit/mod.rs /^pub type c_longlong = i64;$/;" t +c_longlong vendor/libc/src/psp.rs /^pub type c_longlong = i64;$/;" t +c_longlong vendor/libc/src/sgx.rs /^pub type c_longlong = i64;$/;" t +c_longlong vendor/libc/src/solid/mod.rs /^pub type c_longlong = i64;$/;" t +c_longlong vendor/libc/src/switch.rs /^pub type c_longlong = i64;$/;" t +c_longlong vendor/libc/src/unix/mod.rs /^pub type c_longlong = i64;$/;" t +c_longlong vendor/libc/src/vxworks/mod.rs /^pub type c_longlong = i64;$/;" t +c_longlong vendor/libc/src/wasi.rs /^pub type c_longlong = i64;$/;" t +c_longlong vendor/libc/src/windows/mod.rs /^pub type c_longlong = i64;$/;" t +c_longlong vendor/winapi/src/lib.rs /^ pub type c_longlong = i64;$/;" t module:ctypes +c_name builtins_rust/kill/src/intercdep.rs /^ pub c_name: *mut c_char,$/;" m struct:coproc +c_name builtins_rust/setattr/src/intercdep.rs /^ pub c_name: *mut c_char,$/;" m struct:coproc +c_name command.h /^ char *c_name;$/;" m struct:coproc typeref:typename:char * +c_name r_bash/src/lib.rs /^ pub c_name: *mut ::std::os::raw::c_char,$/;" m struct:coproc +c_name r_glob/src/lib.rs /^ pub c_name: *mut ::std::os::raw::c_char,$/;" m struct:coproc +c_name r_readline/src/lib.rs /^ pub c_name: *mut ::std::os::raw::c_char,$/;" m struct:coproc +c_oflag r_bash/src/lib.rs /^ pub c_oflag: tcflag_t,$/;" m struct:termios +c_oflag r_readline/src/lib.rs /^ pub c_oflag: ::std::os::raw::c_ushort,$/;" m struct:termio +c_ospeed r_bash/src/lib.rs /^ pub c_ospeed: speed_t,$/;" m struct:termios +c_pid builtins_rust/kill/src/intercdep.rs /^ pub c_pid: pid_t,$/;" m struct:coproc +c_pid builtins_rust/setattr/src/intercdep.rs /^ pub c_pid: pid_t,$/;" m struct:coproc +c_pid command.h /^ pid_t c_pid;$/;" m struct:coproc typeref:typename:pid_t +c_pid r_bash/src/lib.rs /^ pub c_pid: pid_t,$/;" m struct:coproc +c_pid r_glob/src/lib.rs /^ pub c_pid: pid_t,$/;" m struct:coproc +c_pid r_readline/src/lib.rs /^ pub c_pid: pid_t,$/;" m struct:coproc +c_reaped builtins_rust/common/src/lib.rs /^ c_reaped: libc::c_int, \/* exited child processes still in jobs list *\/$/;" m struct:jobstats +c_reaped builtins_rust/exit/src/lib.rs /^ c_reaped: libc::c_int, \/* exited child processes still in jobs list *\/$/;" m struct:jobstats +c_reaped builtins_rust/fg_bg/src/lib.rs /^ c_reaped: libc::c_int, \/* exited child processes still in jobs list *\/$/;" m struct:jobstats +c_reaped builtins_rust/jobs/src/lib.rs /^ c_reaped: libc::c_int, \/* exited child processes still in jobs list *\/$/;" m struct:jobstats +c_reaped builtins_rust/kill/src/intercdep.rs /^ pub c_reaped: c_int,$/;" m struct:jobstats +c_reaped builtins_rust/setattr/src/intercdep.rs /^ pub c_reaped: c_int,$/;" m struct:jobstats +c_reaped builtins_rust/wait/src/lib.rs /^ c_reaped: libc::c_int, \/* exited child processes still in jobs list *\/$/;" m struct:jobstats +c_reaped jobs.h /^ int c_reaped; \/* exited child processes still in jobs list *\/$/;" m struct:jobstats typeref:typename:int +c_reaped r_bash/src/lib.rs /^ pub c_reaped: ::std::os::raw::c_int,$/;" m struct:jobstats +c_rfd builtins_rust/kill/src/intercdep.rs /^ pub c_rfd: c_int,$/;" m struct:coproc +c_rfd builtins_rust/setattr/src/intercdep.rs /^ pub c_rfd: c_int,$/;" m struct:coproc +c_rfd command.h /^ int c_rfd;$/;" m struct:coproc typeref:typename:int +c_rfd r_bash/src/lib.rs /^ pub c_rfd: ::std::os::raw::c_int,$/;" m struct:coproc +c_rfd r_glob/src/lib.rs /^ pub c_rfd: ::std::os::raw::c_int,$/;" m struct:coproc +c_rfd r_readline/src/lib.rs /^ pub c_rfd: ::std::os::raw::c_int,$/;" m struct:coproc +c_rsave builtins_rust/kill/src/intercdep.rs /^ pub c_rsave: c_int,$/;" m struct:coproc +c_rsave builtins_rust/setattr/src/intercdep.rs /^ pub c_rsave: c_int,$/;" m struct:coproc +c_rsave command.h /^ int c_rsave;$/;" m struct:coproc typeref:typename:int +c_rsave r_bash/src/lib.rs /^ pub c_rsave: ::std::os::raw::c_int,$/;" m struct:coproc +c_rsave r_glob/src/lib.rs /^ pub c_rsave: ::std::os::raw::c_int,$/;" m struct:coproc +c_rsave r_readline/src/lib.rs /^ pub c_rsave: ::std::os::raw::c_int,$/;" m struct:coproc +c_schar vendor/libc/src/fuchsia/mod.rs /^pub type c_schar = i8;$/;" t +c_schar vendor/libc/src/hermit/mod.rs /^pub type c_schar = i8;$/;" t +c_schar vendor/libc/src/psp.rs /^pub type c_schar = i8;$/;" t +c_schar vendor/libc/src/sgx.rs /^pub type c_schar = i8;$/;" t +c_schar vendor/libc/src/solid/mod.rs /^pub type c_schar = i8;$/;" t +c_schar vendor/libc/src/switch.rs /^pub type c_schar = i8;$/;" t +c_schar vendor/libc/src/unix/mod.rs /^pub type c_schar = i8;$/;" t +c_schar vendor/libc/src/vxworks/mod.rs /^pub type c_schar = i8;$/;" t +c_schar vendor/libc/src/wasi.rs /^pub type c_schar = i8;$/;" t +c_schar vendor/libc/src/windows/mod.rs /^pub type c_schar = i8;$/;" t +c_schar vendor/winapi/src/lib.rs /^ pub type c_schar = i8;$/;" t module:ctypes +c_short vendor/libc/src/fuchsia/mod.rs /^pub type c_short = i16;$/;" t +c_short vendor/libc/src/hermit/mod.rs /^pub type c_short = i16;$/;" t +c_short vendor/libc/src/psp.rs /^pub type c_short = i16;$/;" t +c_short vendor/libc/src/sgx.rs /^pub type c_short = i16;$/;" t +c_short vendor/libc/src/solid/mod.rs /^pub type c_short = i16;$/;" t +c_short vendor/libc/src/switch.rs /^pub type c_short = i16;$/;" t +c_short vendor/libc/src/unix/mod.rs /^pub type c_short = i16;$/;" t +c_short vendor/libc/src/vxworks/mod.rs /^pub type c_short = i16;$/;" t +c_short vendor/libc/src/wasi.rs /^pub type c_short = i16;$/;" t +c_short vendor/libc/src/windows/mod.rs /^pub type c_short = i16;$/;" t +c_short vendor/winapi/src/lib.rs /^ pub type c_short = i16;$/;" t module:ctypes +c_status builtins_rust/kill/src/intercdep.rs /^ pub c_status: c_int,$/;" m struct:coproc +c_status builtins_rust/setattr/src/intercdep.rs /^ pub c_status: c_int,$/;" m struct:coproc +c_status command.h /^ int c_status;$/;" m struct:coproc typeref:typename:int +c_status r_bash/src/lib.rs /^ pub c_status: ::std::os::raw::c_int,$/;" m struct:coproc +c_status r_glob/src/lib.rs /^ pub c_status: ::std::os::raw::c_int,$/;" m struct:coproc +c_status r_readline/src/lib.rs /^ pub c_status: ::std::os::raw::c_int,$/;" m struct:coproc +c_totforked builtins_rust/common/src/lib.rs /^ c_totforked: libc::c_int, \/* total number of children this shell has forked *\/$/;" m struct:jobstats +c_totforked builtins_rust/exit/src/lib.rs /^ c_totforked: libc::c_int, \/* total number of children this shell has forked *\/$/;" m struct:jobstats +c_totforked builtins_rust/fg_bg/src/lib.rs /^ c_totforked: libc::c_int, \/* total number of children this shell has forked *\/$/;" m struct:jobstats +c_totforked builtins_rust/jobs/src/lib.rs /^ c_totforked: libc::c_int, \/* total number of children this shell has forked *\/$/;" m struct:jobstats +c_totforked builtins_rust/kill/src/intercdep.rs /^ pub c_totforked: c_int,$/;" m struct:jobstats +c_totforked builtins_rust/setattr/src/intercdep.rs /^ pub c_totforked: c_int,$/;" m struct:jobstats +c_totforked builtins_rust/wait/src/lib.rs /^ c_totforked: libc::c_int, \/* total number of children this shell has forked *\/$/;" m struct:jobstats +c_totforked jobs.h /^ int c_totforked; \/* total number of children this shell has forked *\/$/;" m struct:jobstats typeref:typename:int +c_totforked r_bash/src/lib.rs /^ pub c_totforked: ::std::os::raw::c_int,$/;" m struct:jobstats +c_totreaped builtins_rust/common/src/lib.rs /^ c_totreaped: libc::c_int, \/* total number of children this shell has reaped *\/$/;" m struct:jobstats +c_totreaped builtins_rust/exit/src/lib.rs /^ c_totreaped: libc::c_int, \/* total number of children this shell has reaped *\/$/;" m struct:jobstats +c_totreaped builtins_rust/fg_bg/src/lib.rs /^ c_totreaped: libc::c_int, \/* total number of children this shell has reaped *\/$/;" m struct:jobstats +c_totreaped builtins_rust/jobs/src/lib.rs /^ c_totreaped: libc::c_int, \/* total number of children this shell has reaped *\/$/;" m struct:jobstats +c_totreaped builtins_rust/kill/src/intercdep.rs /^ pub c_totreaped: c_int,$/;" m struct:jobstats +c_totreaped builtins_rust/setattr/src/intercdep.rs /^ pub c_totreaped: c_int,$/;" m struct:jobstats +c_totreaped builtins_rust/wait/src/lib.rs /^ c_totreaped: libc::c_int, \/* total number of children this shell has reaped *\/$/;" m struct:jobstats +c_totreaped jobs.h /^ int c_totreaped; \/* total number of children this shell has reaped *\/$/;" m struct:jobstats typeref:typename:int +c_totreaped r_bash/src/lib.rs /^ pub c_totreaped: ::std::os::raw::c_int,$/;" m struct:jobstats +c_uchar vendor/libc/src/fuchsia/mod.rs /^pub type c_uchar = u8;$/;" t +c_uchar vendor/libc/src/hermit/mod.rs /^pub type c_uchar = u8;$/;" t +c_uchar vendor/libc/src/psp.rs /^pub type c_uchar = u8;$/;" t +c_uchar vendor/libc/src/sgx.rs /^pub type c_uchar = u8;$/;" t +c_uchar vendor/libc/src/solid/mod.rs /^pub type c_uchar = u8;$/;" t +c_uchar vendor/libc/src/switch.rs /^pub type c_uchar = u8;$/;" t +c_uchar vendor/libc/src/unix/mod.rs /^pub type c_uchar = u8;$/;" t +c_uchar vendor/libc/src/vxworks/mod.rs /^pub type c_uchar = u8;$/;" t +c_uchar vendor/libc/src/wasi.rs /^pub type c_uchar = u8;$/;" t +c_uchar vendor/libc/src/windows/mod.rs /^pub type c_uchar = u8;$/;" t +c_uchar vendor/winapi/src/lib.rs /^ pub type c_uchar = u8;$/;" t module:ctypes +c_uint vendor/libc/src/fuchsia/mod.rs /^pub type c_uint = u32;$/;" t +c_uint vendor/libc/src/hermit/mod.rs /^pub type c_uint = u32;$/;" t +c_uint vendor/libc/src/psp.rs /^pub type c_uint = u32;$/;" t +c_uint vendor/libc/src/sgx.rs /^pub type c_uint = u32;$/;" t +c_uint vendor/libc/src/solid/mod.rs /^pub type c_uint = u32;$/;" t +c_uint vendor/libc/src/switch.rs /^pub type c_uint = u32;$/;" t +c_uint vendor/libc/src/unix/mod.rs /^pub type c_uint = u32;$/;" t +c_uint vendor/libc/src/vxworks/mod.rs /^pub type c_uint = u32;$/;" t +c_uint vendor/libc/src/wasi.rs /^pub type c_uint = u32;$/;" t +c_uint vendor/libc/src/windows/mod.rs /^pub type c_uint = u32;$/;" t +c_uint vendor/winapi/src/lib.rs /^ pub type c_uint = u32;$/;" t module:ctypes +c_ulong vendor/libc/src/fuchsia/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/hermit/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/psp.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/sgx.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/solid/aarch64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/solid/arm.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/switch.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/apple/b32/mod.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/bsd/apple/b64/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/freebsdlike/freebsd/aarch64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/freebsdlike/freebsd/arm.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/freebsdlike/freebsd/riscv64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/netbsd/aarch64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/netbsd/arm.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/netbsd/powerpc.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/netbsd/sparc64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/netbsd/x86.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/netbsd/x86_64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/openbsd/aarch64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/openbsd/arm.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/openbsd/mips64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/openbsd/powerpc.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/openbsd/powerpc64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/openbsd/riscv64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/openbsd/sparc64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/openbsd/x86.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/bsd/netbsdlike/openbsd/x86_64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/haiku/b32.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/haiku/b64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/hermit/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/linux_like/android/b32/mod.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/linux_like/android/b64/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/musl/b32/mod.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/newlib/aarch64/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/newlib/arm/mod.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/newlib/espidf/mod.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/newlib/horizon/mod.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/newlib/powerpc/mod.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/unix/redox/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/unix/solarish/mod.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/vxworks/aarch64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/vxworks/arm.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/vxworks/powerpc.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/vxworks/powerpc64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/vxworks/x86.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/vxworks/x86_64.rs /^pub type c_ulong = u64;$/;" t +c_ulong vendor/libc/src/wasi.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/libc/src/windows/mod.rs /^pub type c_ulong = u32;$/;" t +c_ulong vendor/winapi/src/lib.rs /^ pub type c_ulong = u32;$/;" t module:ctypes +c_ulonglong vendor/libc/src/fuchsia/mod.rs /^pub type c_ulonglong = u64;$/;" t +c_ulonglong vendor/libc/src/hermit/mod.rs /^pub type c_ulonglong = u64;$/;" t +c_ulonglong vendor/libc/src/psp.rs /^pub type c_ulonglong = u64;$/;" t +c_ulonglong vendor/libc/src/sgx.rs /^pub type c_ulonglong = u64;$/;" t +c_ulonglong vendor/libc/src/solid/mod.rs /^pub type c_ulonglong = u64;$/;" t +c_ulonglong vendor/libc/src/switch.rs /^pub type c_ulonglong = u64;$/;" t +c_ulonglong vendor/libc/src/unix/mod.rs /^pub type c_ulonglong = u64;$/;" t +c_ulonglong vendor/libc/src/vxworks/mod.rs /^pub type c_ulonglong = u64;$/;" t +c_ulonglong vendor/libc/src/wasi.rs /^pub type c_ulonglong = u64;$/;" t +c_ulonglong vendor/libc/src/windows/mod.rs /^pub type c_ulonglong = u64;$/;" t +c_ulonglong vendor/winapi/src/lib.rs /^ pub type c_ulonglong = u64;$/;" t module:ctypes +c_ushort vendor/libc/src/fuchsia/mod.rs /^pub type c_ushort = u16;$/;" t +c_ushort vendor/libc/src/hermit/mod.rs /^pub type c_ushort = u16;$/;" t +c_ushort vendor/libc/src/psp.rs /^pub type c_ushort = u16;$/;" t +c_ushort vendor/libc/src/sgx.rs /^pub type c_ushort = u16;$/;" t +c_ushort vendor/libc/src/solid/mod.rs /^pub type c_ushort = u16;$/;" t +c_ushort vendor/libc/src/switch.rs /^pub type c_ushort = u16;$/;" t +c_ushort vendor/libc/src/unix/mod.rs /^pub type c_ushort = u16;$/;" t +c_ushort vendor/libc/src/vxworks/mod.rs /^pub type c_ushort = u16;$/;" t +c_ushort vendor/libc/src/wasi.rs /^pub type c_ushort = u16;$/;" t +c_ushort vendor/libc/src/windows/mod.rs /^pub type c_ushort = u16;$/;" t +c_ushort vendor/winapi/src/lib.rs /^ pub type c_ushort = u16;$/;" t module:ctypes +c_void vendor/nix/src/errno.rs /^impl ErrnoSentinel for *mut c_void {$/;" c +c_void vendor/winapi/src/lib.rs /^ pub enum c_void {}$/;" g module:ctypes +c_wfd builtins_rust/kill/src/intercdep.rs /^ pub c_wfd: c_int,$/;" m struct:coproc +c_wfd builtins_rust/setattr/src/intercdep.rs /^ pub c_wfd: c_int,$/;" m struct:coproc +c_wfd command.h /^ int c_wfd;$/;" m struct:coproc typeref:typename:int +c_wfd r_bash/src/lib.rs /^ pub c_wfd: ::std::os::raw::c_int,$/;" m struct:coproc +c_wfd r_glob/src/lib.rs /^ pub c_wfd: ::std::os::raw::c_int,$/;" m struct:coproc +c_wfd r_readline/src/lib.rs /^ pub c_wfd: ::std::os::raw::c_int,$/;" m struct:coproc +c_wsave builtins_rust/kill/src/intercdep.rs /^ pub c_wsave: c_int,$/;" m struct:coproc +c_wsave builtins_rust/setattr/src/intercdep.rs /^ pub c_wsave: c_int,$/;" m struct:coproc +c_wsave command.h /^ int c_wsave;$/;" m struct:coproc typeref:typename:int +c_wsave r_bash/src/lib.rs /^ pub c_wsave: ::std::os::raw::c_int,$/;" m struct:coproc +c_wsave r_glob/src/lib.rs /^ pub c_wsave: ::std::os::raw::c_int,$/;" m struct:coproc +c_wsave r_readline/src/lib.rs /^ pub c_wsave: ::std::os::raw::c_int,$/;" m struct:coproc +cache vendor/fluent-fallback/src/cache.rs /^ cache: &'a AsyncCache,$/;" m struct:AsyncCacheStream +cache vendor/fluent-fallback/src/cache.rs /^ cache: &'a Cache,$/;" m struct:CacheIter +cache vendor/fluent-fallback/src/lib.rs /^mod cache;$/;" n +cached_quoted_dollar_at subst.c /^static WORD_LIST *cached_quoted_dollar_at = 0;$/;" v typeref:typename:WORD_LIST * file: +caddr_t r_bash/src/lib.rs /^pub type caddr_t = __caddr_t;$/;" t +caddr_t r_glob/src/lib.rs /^pub type caddr_t = __caddr_t;$/;" t +caddr_t r_readline/src/lib.rs /^pub type caddr_t = __caddr_t;$/;" t +caddr_t vendor/libc/src/solid/mod.rs /^pub type caddr_t = __caddr_t;$/;" t +caddr_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type caddr_t = *mut ::c_char;$/;" t +caddr_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type caddr_t = *mut ::c_char;$/;" t +caddr_t vendor/libc/src/unix/newlib/horizon/mod.rs /^pub type caddr_t = *mut c_char;$/;" t +caddr_t vendor/libc/src/unix/solarish/mod.rs /^pub type caddr_t = *mut ::c_char;$/;" t +calcnt r_bash/src/lib.rs /^ pub calcnt: __syscall_slong_t,$/;" m struct:timex +calcnt r_readline/src/lib.rs /^ pub calcnt: __syscall_slong_t,$/;" m struct:timex +calculate_hash vendor/nix/test/sys/test_socket.rs /^fn calculate_hash(t: &T) -> u64 {$/;" f +call vendor/futures-util/src/fns.rs /^ fn call(&self, arg: &'a Result) -> Self::Output {$/;" f +call vendor/futures-util/src/fns.rs /^ fn call(&self, arg: A) -> R {$/;" f +call vendor/futures-util/src/fns.rs /^ fn call(&self, arg: A) -> Self::Output {$/;" f +call vendor/futures-util/src/fns.rs /^ fn call(&self, arg: A) -> Self::Output;$/;" P interface:Fn1 +call vendor/futures-util/src/fns.rs /^ fn call(&self, arg: Result) -> Self::Output {$/;" f +call vendor/memchr/src/memmem/prefilter/mod.rs /^ pub fn call($/;" P implementation:PrefilterFn +call vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) fn call($/;" P implementation:Pre +call vendor/syn/src/parse.rs /^ pub fn call(&self, function: fn(ParseStream) -> Result) -> Result {$/;" P implementation:ParseBuffer +call_expand_word_internal subst.c /^call_expand_word_internal (w, q, i, c, e)$/;" f file: +call_mut vendor/futures-util/src/fns.rs /^ fn call_mut(&mut self, arg: &'a Result) -> Self::Output {$/;" f +call_mut vendor/futures-util/src/fns.rs /^ fn call_mut(&mut self, arg: A) -> R {$/;" f +call_mut vendor/futures-util/src/fns.rs /^ fn call_mut(&mut self, arg: A) -> Self::Output {$/;" f +call_mut vendor/futures-util/src/fns.rs /^ fn call_mut(&mut self, arg: A) -> Self::Output;$/;" P interface:FnMut1 +call_mut vendor/futures-util/src/fns.rs /^ fn call_mut(&mut self, arg: Result) -> Self::Output {$/;" f +call_once vendor/futures-util/src/fns.rs /^ fn call_once(self, arg: &'a Result) -> Self::Output {$/;" f +call_once vendor/futures-util/src/fns.rs /^ fn call_once(self, arg: A) -> R {$/;" f +call_once vendor/futures-util/src/fns.rs /^ fn call_once(self, arg: A) -> Self::Output {$/;" P implementation:OkFn +call_once vendor/futures-util/src/fns.rs /^ fn call_once(self, arg: A) -> Self::Output {$/;" f +call_once vendor/futures-util/src/fns.rs /^ fn call_once(self, arg: A) -> Self::Output;$/;" P interface:FnOnce1 +call_once vendor/futures-util/src/fns.rs /^ fn call_once(self, arg: Result) -> Self::Output {$/;" f +call_once vendor/futures-util/src/fns.rs /^ fn call_once(self, arg: Result) -> Self::Output {$/;" P implementation:MergeResultFn +call_once vendor/futures-util/src/stream/stream/peek.rs /^ fn call_once(self, next: &Item) -> Self::Output {$/;" f +call_site vendor/proc-macro2/src/fallback.rs /^ fn call_site() -> Self {$/;" P implementation:LexError +call_site vendor/proc-macro2/src/fallback.rs /^ pub fn call_site() -> Self {$/;" P implementation:Span +call_site vendor/proc-macro2/src/lib.rs /^ pub fn call_site() -> Self {$/;" P implementation:Span +call_site vendor/proc-macro2/src/wrapper.rs /^ fn call_site() -> Self {$/;" P implementation:LexError +call_site vendor/proc-macro2/src/wrapper.rs /^ pub fn call_site() -> Self {$/;" P implementation:Span +callback vendor/nix/src/sched.rs /^ extern "C" fn callback(data: *mut CloneCb) -> c_int {$/;" f function:sched_linux_like::clone +callback.o lib/readline/Makefile.in /^callback.o: callback.c$/;" t +callback.o lib/readline/Makefile.in /^callback.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h$/;" t +callback.o lib/readline/Makefile.in /^callback.o: rlconf.h ansi_stdlib.h$/;" t +callback.o lib/readline/Makefile.in /^callback.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +callback.o lib/readline/Makefile.in /^callback.o: rlprivate.h$/;" t +caller.o builtins/Makefile.in /^caller.o: $(srcdir)\/common.h $(BASHINCDIR)\/maxpath.h .\/builtext.h$/;" t +caller.o builtins/Makefile.in /^caller.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h $(topdir)\/error.h$/;" t +caller.o builtins/Makefile.in /^caller.o: $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/quit.h $(topdir)\/dispose_cmd.h$/;" t +caller.o builtins/Makefile.in /^caller.o: $(topdir)\/make_cmd.h $(topdir)\/subst.h $(topdir)\/externs.h $(topdir)\/sig.h$/;" t +caller.o builtins/Makefile.in /^caller.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h/;" t +caller.o builtins/Makefile.in /^caller.o: ${BASHINCDIR}\/chartypes.h $(topdir)\/bashtypes.h ..\/pathnames.h$/;" t +caller.o builtins/Makefile.in /^caller.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +caller.o builtins/Makefile.in /^caller.o: caller.def$/;" t +calloc lib/malloc/malloc.c /^calloc (n, s)$/;" f +calloc r_bash/src/lib.rs /^ pub fn calloc(__nmemb: usize, __size: usize) -> *mut ::std::os::raw::c_void;$/;" f +calloc r_glob/src/lib.rs /^ pub fn calloc(__nmemb: usize, __size: usize) -> *mut ::std::os::raw::c_void;$/;" f +calloc r_readline/src/lib.rs /^ pub fn calloc(__nmemb: usize, __size: usize) -> *mut ::std::os::raw::c_void;$/;" f +calloc vendor/libc/src/fuchsia/mod.rs /^ pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;$/;" f +calloc vendor/libc/src/solid/mod.rs /^ pub fn calloc(arg1: size_t, arg2: size_t) -> *mut c_void;$/;" f +calloc vendor/libc/src/unix/mod.rs /^ pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;$/;" f +calloc vendor/libc/src/vxworks/mod.rs /^ pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;$/;" f +calloc vendor/libc/src/wasi.rs /^ pub fn calloc(amt: size_t, amt2: size_t) -> *mut c_void;$/;" f +calloc vendor/libc/src/windows/mod.rs /^ pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;$/;" f +calloc_conceal vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn calloc_conceal(nmemb: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +calls vendor/async-trait/tests/test.rs /^ async fn calls(&self) {$/;" P implementation:Struct +calls vendor/async-trait/tests/test.rs /^ async fn calls(&self) {$/;" P interface:Trait +calls_mut vendor/async-trait/tests/test.rs /^ async fn calls_mut(&mut self) {$/;" P implementation:Struct +calls_mut vendor/async-trait/tests/test.rs /^ async fn calls_mut(&mut self) {$/;" P interface:Trait +camelCase vendor/async-trait/tests/test.rs /^ async fn camelCase() {}$/;" P implementation:issue85::Struct +camelCase vendor/async-trait/tests/test.rs /^ async fn camelCase();$/;" P interface:issue85::Trait +can_err_mask_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type can_err_mask_t = u32;$/;" t +can_get_listen_on_tcp_socket vendor/nix/src/sys/socket/sockopt.rs /^ fn can_get_listen_on_tcp_socket() {$/;" f module:test +can_get_peercred_on_unix_socket vendor/nix/src/sys/socket/sockopt.rs /^ fn can_get_peercred_on_unix_socket() {$/;" f module:test +can_optimize_assignment variables.c /^can_optimize_assignment (entry, value, aflags)$/;" f file: +can_optimize_connection builtins/evalstring.c /^can_optimize_connection (command)$/;" f +can_optimize_connection r_bash/src/lib.rs /^ pub fn can_optimize_connection(arg1: *mut COMMAND) -> ::std::os::raw::c_int;$/;" f +can_use_01_futures_in_a_03_future_running_on_a_01_executor vendor/futures/tests/compat.rs /^fn can_use_01_futures_in_a_03_future_running_on_a_01_executor() {$/;" f +can_use_cmsg_space vendor/nix/src/sys/socket/mod.rs /^ fn can_use_cmsg_space() {$/;" f module:tests +cancel vendor/futures/tests/stream_futures_unordered.rs /^ cancel: AtomicBool,$/;" m struct:iter_cancel::AtomicCancel +cancel vendor/nix/src/sys/aio.rs /^ fn cancel(mut self: Pin<&mut Self>) -> Result {$/;" P implementation:AioCb +cancel vendor/nix/src/sys/aio.rs /^ fn cancel(self: Pin<&mut Self>) -> Result;$/;" P interface:Aio +cancel vendor/nix/test/sys/test_aio.rs /^ fn cancel() {$/;" f module:aio_read +cancel vendor/nix/test/sys/test_aio.rs /^ fn cancel() {$/;" f module:aio_write +cancel_after_sender_drop_doesnt_notify vendor/futures-channel/tests/oneshot.rs /^fn cancel_after_sender_drop_doesnt_notify() {$/;" f +cancel_lots vendor/futures-channel/tests/oneshot.rs /^fn cancel_lots() {$/;" f +cancel_notifies vendor/futures-channel/tests/oneshot.rs /^fn cancel_notifies() {$/;" f +cancel_sends vendor/futures-channel/tests/oneshot.rs /^fn cancel_sends() {$/;" f +cancellation vendor/futures-channel/src/oneshot.rs /^ pub fn cancellation(&mut self) -> Cancellation<'_, T> {$/;" P implementation:Sender +canid_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type canid_t = u32;$/;" t +canonicalize vendor/unic-langid-impl/src/lib.rs /^pub fn canonicalize>(input: S) -> Result {$/;" f +canonicalize_file_name r_bash/src/lib.rs /^ pub fn canonicalize_file_name($/;" f +canonicalize_file_name r_glob/src/lib.rs /^ pub fn canonicalize_file_name($/;" f +canonicalize_file_name r_readline/src/lib.rs /^ pub fn canonicalize_file_name($/;" f +cap_enter vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cap_enter() -> ::c_int;$/;" f +cap_getmode vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cap_getmode(modep: *mut ::c_uint) -> ::c_int;$/;" f +cap_rights_contains vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cap_rights_contains(big: *const cap_rights_t, little: *const cap_rights_t) -> bool;$/;" f +cap_rights_is_valid vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cap_rights_is_valid(rights: *const cap_rights_t) -> bool;$/;" f +cap_rights_limit vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cap_rights_limit(fd: ::c_int, rights: *const cap_rights_t) -> ::c_int;$/;" f +cap_rights_merge vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cap_rights_merge(dst: *mut cap_rights_t, src: *const cap_rights_t) -> *mut cap_rights/;" f +cap_rights_remove vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cap_rights_remove(dst: *mut cap_rights_t, src: *const cap_rights_t)$/;" f +capability vendor/nix/test/sys/test_ioctl.rs /^ capability: u32,$/;" m struct:linux_ioctls::v4l2_audio +capacity vendor/futures-util/src/io/buf_writer.rs /^ pub(super) fn capacity(&self) -> usize {$/;" P implementation:BufWriter +capacity vendor/slab/src/lib.rs /^ pub fn capacity(&self) -> usize {$/;" P implementation:Slab +capacity vendor/smallvec/src/lib.rs /^ capacity: usize,$/;" m struct:SmallVec +capacity vendor/smallvec/src/lib.rs /^ pub fn capacity(&self) -> usize {$/;" P implementation:SmallVec +capcase_p variables.h /^#define capcase_p(/;" d +cardinals_test vendor/intl_pluralrules/src/lib.rs /^ fn cardinals_test() {$/;" f module:tests +carriage_return vendor/proc-macro2/tests/comments.rs /^fn carriage_return() {$/;" f +case_clause parse.y /^case_clause: pattern_list$/;" l +case_clause_sequence parse.y /^case_clause_sequence: pattern_list SEMI_SEMI$/;" l +case_com builtins_rust/cd/src/lib.rs /^pub struct case_com {$/;" s +case_com builtins_rust/command/src/lib.rs /^pub struct case_com {$/;" s +case_com builtins_rust/common/src/lib.rs /^pub struct case_com {$/;" s +case_com builtins_rust/complete/src/lib.rs /^pub struct case_com {$/;" s +case_com builtins_rust/declare/src/lib.rs /^pub struct case_com {$/;" s +case_com builtins_rust/fc/src/lib.rs /^pub struct case_com {$/;" s +case_com builtins_rust/fg_bg/src/lib.rs /^pub struct case_com {$/;" s +case_com builtins_rust/getopts/src/lib.rs /^pub struct case_com {$/;" s +case_com builtins_rust/jobs/src/lib.rs /^pub struct case_com {$/;" s +case_com builtins_rust/kill/src/intercdep.rs /^pub struct case_com {$/;" s +case_com builtins_rust/pushd/src/lib.rs /^pub struct case_com {$/;" s +case_com builtins_rust/setattr/src/intercdep.rs /^pub struct case_com {$/;" s +case_com builtins_rust/source/src/lib.rs /^pub struct case_com {$/;" s +case_com builtins_rust/type/src/lib.rs /^pub struct case_com {$/;" s +case_com command.h /^typedef struct case_com {$/;" s +case_com r_bash/src/lib.rs /^pub struct case_com {$/;" s +case_com r_glob/src/lib.rs /^pub struct case_com {$/;" s +case_com r_readline/src/lib.rs /^pub struct case_com {$/;" s +case_command parse.y /^case_command: CASE WORD newline_list IN newline_list ESAC$/;" l +casemod-attributes configure.ac /^AC_ARG_ENABLE(casemod-attributes, AC_HELP_STRING([--enable-casemod-attributes], [include case-mo/;" e +casemod-expansions configure.ac /^AC_ARG_ENABLE(casemod-expansions, AC_HELP_STRING([--enable-casemod-expansions], [include case-mo/;" e +casemod.o lib/sh/Makefile.in /^casemod.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +casemod.o lib/sh/Makefile.in /^casemod.o: ${BASHINCDIR}\/stdc.h$/;" t +casemod.o lib/sh/Makefile.in /^casemod.o: ${BUILD_DIR}\/config.h$/;" t +casemod.o lib/sh/Makefile.in /^casemod.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +casemod.o lib/sh/Makefile.in /^casemod.o: ${topdir}\/bashintl.h ${LIBINTL_H} ${BASHINCDIR}\/gettext.h$/;" t +casemod.o lib/sh/Makefile.in /^casemod.o: ${topdir}\/bashtypes.h$/;" t +casemod.o lib/sh/Makefile.in /^casemod.o: ${topdir}\/xmalloc.h$/;" t +casemod.o lib/sh/Makefile.in /^casemod.o: casemod.c$/;" t +cast_and_trim vendor/nix/src/sys/utsname.rs /^fn cast_and_trim(slice: &[c_char]) -> &OsStr {$/;" f +casting vendor/nix/src/sys/aio.rs /^ fn casting() {$/;" f module:t +casting_vectored vendor/nix/src/sys/aio.rs /^ fn casting_vectored() {$/;" f module:t +cat_file builtins/evalstring.c /^cat_file (r)$/;" f file: +catch_flag trap.c /^static int catch_flag;$/;" v typeref:typename:int file: +catch_unwind vendor/futures-util/src/future/future/mod.rs /^ fn catch_unwind(self) -> CatchUnwind$/;" P interface:FutureExt +catch_unwind vendor/futures-util/src/future/future/mod.rs /^mod catch_unwind;$/;" n +catch_unwind vendor/futures-util/src/stream/stream/mod.rs /^ fn catch_unwind(self) -> CatchUnwind$/;" P interface:StreamExt +catch_unwind vendor/futures-util/src/stream/stream/mod.rs /^mod catch_unwind;$/;" n +catchsigs lib/readline/readline.h /^ int catchsigs;$/;" m struct:readline_state typeref:typename:int +catchsigs r_readline/src/lib.rs /^ pub catchsigs: ::std::os::raw::c_int,$/;" m struct:readline_state +catchsigwinch lib/readline/readline.h /^ int catchsigwinch;$/;" m struct:readline_state typeref:typename:int +catchsigwinch r_readline/src/lib.rs /^ pub catchsigwinch: ::std::os::raw::c_int,$/;" m struct:readline_state +category lib/intl/dcigettext.c /^ int category;$/;" v typeref:typename:int +category lib/intl/dcigettext.c /^ int category;$/;" m struct:known_translation_t typeref:typename:int file: +category_to_name lib/intl/dcigettext.c /^# define category_to_name(/;" d file: +category_to_name lib/intl/dcigettext.c /^category_to_name (category)$/;" f file: +categoryname lib/intl/dcigettext.c /^ const char *categoryname;$/;" v typeref:typename:const char * +categoryvalue lib/intl/dcigettext.c /^ const char *categoryvalue;$/;" v typeref:typename:const char * +cause vendor/autocfg/src/error.rs /^ fn cause(&self) -> Option<&error::Error> {$/;" P implementation:Error +cause vendor/thiserror/tests/test_error.rs /^ cause: anyhow::Error,$/;" m struct:WithAnyhow +cause vendor/thiserror/tests/test_error.rs /^ cause: io::Error,$/;" m struct:WithSource +cb_linehandler lib/readline/examples/rl-callbacktest.c /^cb_linehandler (char *line)$/;" f typeref:typename:void file: +cc_t r_bash/src/lib.rs /^pub type cc_t = ::std::os::raw::c_uchar;$/;" t +cc_t r_jobs/src/lib.rs /^pub type cc_t = libc::c_uchar;$/;" t +cc_t vendor/libc/src/fuchsia/mod.rs /^pub type cc_t = ::c_uchar;$/;" t +cc_t vendor/libc/src/unix/mod.rs /^pub type cc_t = ::c_uchar;$/;" t +cclass_name lib/glob/smatch.c /^static char const *const cclass_name[] =$/;" v typeref:typename:char const * const[] file: +cclass_test lib/glob/smatch.c /^cclass_test (c, char_class)$/;" f file: +cd.o builtins/Makefile.in /^cd.o: $(srcdir)\/common.h $(BASHINCDIR)\/maxpath.h ..\/pathnames.h$/;" t +cd.o builtins/Makefile.in /^cd.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h $(topdir)\/error.h$/;" t +cd.o builtins/Makefile.in /^cd.o: $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/quit.h $(topdir)\/dispose_cmd.h$/;" t +cd.o builtins/Makefile.in /^cd.o: $(topdir)\/make_cmd.h $(topdir)\/subst.h $(topdir)\/externs.h$/;" t +cd.o builtins/Makefile.in /^cd.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $(t/;" t +cd.o builtins/Makefile.in /^cd.o: $(topdir)\/sig.h$/;" t +cd.o builtins/Makefile.in /^cd.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +cd.o builtins/Makefile.in /^cd.o: cd.def$/;" t +cd_builtin builtins_rust/pushd/src/lib.rs /^ fn cd_builtin(list: *mut WordList) -> i32;$/;" f +cd_dir support/texi2dvi /^cd_dir ()$/;" f +cd_orig support/texi2dvi /^cd_orig ()$/;" f +cdable_vars builtins_rust/cd/src/lib.rs /^ static cdable_vars: i32;$/;" v +cdable_vars builtins_rust/shopt/src/lib.rs /^ static mut cdable_vars: i32;$/;" v +cderr vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "cderr")] pub mod cderr;$/;" n +cdesc mksyntax.c /^cdesc (i)$/;" f file: +cdspelling builtins_rust/cd/src/lib.rs /^ static cdspelling: i32;$/;" v +cdspelling builtins_rust/shopt/src/lib.rs /^ static mut cdspelling: i32;$/;" v +cell vendor/once_cell/src/lib.rs /^ cell: OnceCell,$/;" m struct:sync::Lazy +cell vendor/once_cell/src/lib.rs /^ cell: OnceCell,$/;" m struct:unsync::Lazy +cell vendor/syn/src/parse.rs /^ cell: Cell>,$/;" m struct:ParseBuffer +cell_clone vendor/syn/src/parse.rs /^fn cell_clone(cell: &Cell) -> T {$/;" f +cen lib/intl/explodename.c /^ enum { undecided, xpg, cen } syntax;$/;" e enum:_nl_explode_name::__anon1a8f3b140103 file: +cfg vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "cfg")] pub mod cfg;$/;" n +cfg-if vendor/cfg-if/README.md /^# cfg-if$/;" c +cfg_if vendor/cfg-if/src/lib.rs /^macro_rules! cfg_if {$/;" M +cfgetispeed r_bash/src/lib.rs /^ pub fn cfgetispeed(__termios_p: *const termios) -> speed_t;$/;" f +cfgetispeed vendor/libc/src/fuchsia/mod.rs /^ pub fn cfgetispeed(termios: *const ::termios) -> ::speed_t;$/;" f +cfgetispeed vendor/libc/src/unix/mod.rs /^ pub fn cfgetispeed(termios: *const ::termios) -> ::speed_t;$/;" f +cfgetospeed r_bash/src/lib.rs /^ pub fn cfgetospeed(__termios_p: *const termios) -> speed_t;$/;" f +cfgetospeed vendor/libc/src/fuchsia/mod.rs /^ pub fn cfgetospeed(termios: *const ::termios) -> ::speed_t;$/;" f +cfgetospeed vendor/libc/src/unix/mod.rs /^ pub fn cfgetospeed(termios: *const ::termios) -> ::speed_t;$/;" f +cfgmgr32 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "cfgmgr32")] pub mod cfgmgr32;$/;" n +cfmakeraw r_bash/src/lib.rs /^ pub fn cfmakeraw(__termios_p: *mut termios);$/;" f +cfmakeraw vendor/libc/src/fuchsia/mod.rs /^ pub fn cfmakeraw(termios: *mut ::termios);$/;" f +cfmakeraw vendor/libc/src/unix/solarish/compat.rs /^pub unsafe fn cfmakeraw(termios: *mut ::termios) {$/;" f +cfmakeraw vendor/nix/src/sys/termios.rs /^pub fn cfmakeraw(termios: &mut Termios) {$/;" f +cfmakesane vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cfmakesane(termios: *mut ::termios);$/;" f +cfmakesane vendor/nix/src/sys/termios.rs /^pub fn cfmakesane(termios: &mut Termios) {$/;" f +cfree lib/malloc/malloc.c /^cfree (mem)$/;" f +cfs vendor/tinystr/benches/construct.rs /^ macro_rules! cfs {$/;" M function:construct_from_str +cfsetispeed r_bash/src/lib.rs /^ pub fn cfsetispeed(__termios_p: *mut termios, __speed: speed_t) -> ::std::os::raw::c_int;$/;" f +cfsetispeed vendor/libc/src/fuchsia/mod.rs /^ pub fn cfsetispeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;$/;" f +cfsetispeed vendor/libc/src/unix/mod.rs /^ pub fn cfsetispeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;$/;" f +cfsetospeed r_bash/src/lib.rs /^ pub fn cfsetospeed(__termios_p: *mut termios, __speed: speed_t) -> ::std::os::raw::c_int;$/;" f +cfsetospeed vendor/libc/src/fuchsia/mod.rs /^ pub fn cfsetospeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;$/;" f +cfsetospeed vendor/libc/src/unix/mod.rs /^ pub fn cfsetospeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;$/;" f +cfsetspeed r_bash/src/lib.rs /^ pub fn cfsetspeed(__termios_p: *mut termios, __speed: speed_t) -> ::std::os::raw::c_int;$/;" f +cfsetspeed vendor/libc/src/fuchsia/mod.rs /^ pub fn cfsetspeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;$/;" f +cfsetspeed vendor/libc/src/unix/solarish/compat.rs /^pub unsafe fn cfsetspeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int {$/;" f +cfu vendor/tinystr/benches/construct.rs /^ macro_rules! cfu {$/;" M function:construct_from_bytes +cguid vendor/winapi/src/um/mod.rs /^#[cfg(feature = "cguid")] pub mod cguid;$/;" n +ch vendor/proc-macro2/src/lib.rs /^ ch: char,$/;" m struct:Punct +chain vendor/futures-util/src/io/mod.rs /^ fn chain(self, next: R) -> Chain$/;" P interface:AsyncReadExt +chain vendor/futures-util/src/io/mod.rs /^mod chain;$/;" n +chain vendor/futures-util/src/stream/stream/mod.rs /^ fn chain(self, other: St) -> Chain$/;" P interface:StreamExt +chain vendor/futures-util/src/stream/stream/mod.rs /^mod chain;$/;" n +chain_fn vendor/futures-util/src/fns.rs /^pub(crate) fn chain_fn(f: F, g: G) -> ChainFn {$/;" f +change_flag builtins_rust/set/src/lib.rs /^ fn change_flag(_: i32, _: i32) -> i32;$/;" f +change_flag flags.c /^change_flag (flag, on_or_off)$/;" f +change_flag r_bash/src/lib.rs /^ pub fn change_flag($/;" f +change_flag_char flags.h /^#define change_flag_char(/;" d +change_prompt lib/readline/examples/excallback.c /^change_prompt(void)$/;" f typeref:typename:int +change_signal trap.c /^change_signal (sig, value)$/;" f file: +change_to_font support/man2html.c /^change_to_font(int nr)$/;" f typeref:typename:char * file: +change_to_size support/man2html.c /^change_to_size(int nr)$/;" f typeref:typename:char * file: +changed_dollar_vars builtins/common.c /^static int changed_dollar_vars;$/;" v typeref:typename:int file: +changed_dollar_vars builtins_rust/common/src/lib.rs /^static mut changed_dollar_vars: i32 = 0;$/;" v +changelog vendor/libloading/src/lib.rs /^pub mod changelog;$/;" n +channel vendor/futures-channel/src/mpsc/mod.rs /^pub fn channel(buffer: usize) -> (Sender, Receiver) {$/;" f +channel vendor/futures-channel/src/oneshot.rs /^pub fn channel() -> (Sender, Receiver) {$/;" f +channel vendor/futures/tests/auto_traits.rs /^pub mod channel {$/;" n +char vendor/quote/src/to_tokens.rs /^impl ToTokens for char {$/;" c +char_class lib/glob/smatch.c /^enum char_class$/;" g file: +char_indices vendor/proc-macro2/src/parse.rs /^ fn char_indices(&self) -> CharIndices<'a> {$/;" P implementation:Cursor +char_is_quoted r_bash/src/lib.rs /^ pub fn char_is_quoted($/;" f +char_is_quoted subst.c /^char_is_quoted (string, eindex)$/;" f +char_value shell.c /^ char **char_value;$/;" m struct:__anon92221f0e0108 typeref:typename:char ** file: +character vendor/proc-macro2/src/fallback.rs /^ pub fn character(t: char) -> Literal {$/;" P implementation:Literal +character vendor/proc-macro2/src/lib.rs /^ pub fn character(ch: char) -> Literal {$/;" P implementation:Literal +character vendor/proc-macro2/src/parse.rs /^fn character(input: Cursor) -> Result {$/;" f +character vendor/proc-macro2/src/wrapper.rs /^ pub fn character(t: char) -> Literal {$/;" P implementation:Literal +character_direction vendor/unic-langid-impl/src/lib.rs /^ pub fn character_direction(&self) -> CharacterDirection {$/;" P implementation:LanguageIdentifier +charb support/man2html.c /^static char charb[TINY_STR_MAX];$/;" v typeref:typename:char[] file: +charcmp lib/glob/smatch.c /^charcmp (c1, c2, forcecoll)$/;" f file: +charcmp_wc lib/glob/smatch.c /^charcmp_wc (c1, c2, forcecoll)$/;" f file: +chardef support/man2html.c /^static STRDEF *chardef, *strdef, *defdef;$/;" v typeref:typename:STRDEF * file: +chardev lib/readline/colors.h /^ chardev,$/;" e enum:filetype +chars vendor/proc-macro2/src/parse.rs /^ fn chars(&self) -> Chars<'a> {$/;" P implementation:Cursor +chars vendor/syn/tests/test_lit.rs /^fn chars() {$/;" f +charset.alias lib/intl/Makefile.in /^charset.alias: $(srcdir)\/config.charset$/;" t +charset_aliases lib/intl/localcharset.c /^static const char * volatile charset_aliases;$/;" v typeref:typename:const char * volatile file: +charsetbuf lib/sh/unicode.c /^static char charsetbuf[40];$/;" v typeref:typename:char[40] file: +chartype lib/sh/strstr.c /^typedef unsigned chartype;$/;" t typeref:typename:unsigned file: +chdir r_bash/src/lib.rs /^ pub fn chdir(__path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +chdir r_glob/src/lib.rs /^ pub fn chdir(__path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +chdir r_readline/src/lib.rs /^ pub fn chdir(__path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +chdir vendor/libc/src/fuchsia/mod.rs /^ pub fn chdir(dir: *const c_char) -> ::c_int;$/;" f +chdir vendor/libc/src/solid/mod.rs /^ pub fn chdir(arg1: *const c_char) -> c_int;$/;" f +chdir vendor/libc/src/unix/mod.rs /^ pub fn chdir(dir: *const c_char) -> ::c_int;$/;" f +chdir vendor/libc/src/vxworks/mod.rs /^ pub fn chdir(attr: *const ::c_char) -> ::c_int;$/;" f +chdir vendor/libc/src/wasi.rs /^ pub fn chdir(dir: *const c_char) -> ::c_int;$/;" f +chdir vendor/libc/src/windows/mod.rs /^ pub fn chdir(dir: *const c_char) -> ::c_int;$/;" f +check Makefile.in /^test tests check: force $(Program) $(TESTS_SUPPORT)$/;" t +check lib/intl/Makefile.in /^check: all$/;" t +check support/texi2html /^sub check {$/;" s +check vendor/futures/tests/sink.rs /^ fn check(&self, cx: &mut Context<'_>) -> bool {$/;" P implementation:Allow +check vendor/smallvec/tests/macro.rs /^ macro_rules! check {$/;" M function:smallvec +check_add_history bashhist.c /^check_add_history (line, force)$/;" f +check_add_history builtins_rust/history/src/intercdep.rs /^ pub fn check_add_history (line: *mut c_char, force: c_int) -> c_int;$/;" f +check_add_history r_bash/src/lib.rs /^ pub fn check_add_history($/;" f +check_add_history r_bashhist/src/lib.rs /^pub unsafe extern "C" fn check_add_history(mut line: *mut c_char, mut force: c_int) -> c_int $/;" f +check_all_variants_rtl vendor/unic-langid-impl/src/bin/generate_layout.rs /^fn check_all_variants_rtl($/;" f +check_alrm builtins_rust/read/src/lib.rs /^fn check_alrm() {$/;" f +check_bash_input input.c /^check_bash_input (fd)$/;" f +check_bash_input r_bash/src/lib.rs /^ pub fn check_bash_input(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +check_binary_file general.c /^check_binary_file (sample, sample_len)$/;" f +check_binary_file r_bash/src/lib.rs /^ pub fn check_binary_file($/;" f +check_binary_file r_glob/src/lib.rs /^ pub fn check_binary_file($/;" f +check_binary_file r_readline/src/lib.rs /^ pub fn check_binary_file($/;" f +check_cast vendor/syn/src/expr.rs /^ fn check_cast(input: ParseStream) -> Result<()> {$/;" f module:parsing +check_command_builtin execute_cmd.c /^check_command_builtin (words, typep)$/;" f file: +check_dev_tty general.c /^check_dev_tty ()$/;" f typeref:typename:void +check_dev_tty r_bash/src/lib.rs /^ pub fn check_dev_tty();$/;" f +check_dev_tty r_glob/src/lib.rs /^ pub fn check_dev_tty();$/;" f +check_dev_tty r_readline/src/lib.rs /^ pub fn check_dev_tty();$/;" f +check_error_display vendor/libloading/tests/markers.rs /^fn check_error_display() {$/;" f +check_error_send vendor/libloading/tests/markers.rs /^fn check_error_send() {$/;" f +check_error_sync vendor/libloading/tests/markers.rs /^fn check_error_sync() {$/;" f +check_everything vendor/winapi/build.rs /^ fn check_everything(&self) {$/;" P implementation:Graph +check_exact_size_iterator vendor/syn/tests/test_iterators.rs /^macro_rules! check_exact_size_iterator {$/;" M +check_field_attrs vendor/thiserror-impl/src/valid.rs /^fn check_field_attrs(fields: &[Field]) -> Result<()> {$/;" f +check_fstatfs vendor/nix/src/sys/statfs.rs /^ fn check_fstatfs(path: &str) {$/;" f module:test +check_fstatfs_strict vendor/nix/src/sys/statfs.rs /^ fn check_fstatfs_strict(path: &str) {$/;" f module:test +check_hashed_filenames builtins_rust/shopt/src/lib.rs /^ static mut check_hashed_filenames: i32;$/;" v +check_hashed_filenames findcmd.c /^int check_hashed_filenames = CHECKHASH_DEFAULT;$/;" v typeref:typename:int +check_hashed_filenames r_bash/src/lib.rs /^ pub static mut check_hashed_filenames: ::std::os::raw::c_int;$/;" v +check_history_control bashhist.c /^check_history_control (line)$/;" f file: +check_history_control r_bashhist/src/lib.rs /^unsafe extern "C" fn check_history_control(mut line: *mut c_char) -> c_int {$/;" f +check_identifier builtins_rust/complete/src/lib.rs /^ fn check_identifier(w: *mut WordDesc, f: i32) -> i32;$/;" f +check_identifier general.c /^check_identifier (word, check_word)$/;" f +check_identifier r_bash/src/lib.rs /^ pub fn check_identifier($/;" f +check_identifier r_glob/src/lib.rs /^ pub fn check_identifier($/;" f +check_identifier r_readline/src/lib.rs /^ pub fn check_identifier($/;" f +check_jobs_at_exit builtins_rust/exit/src/lib.rs /^ static mut check_jobs_at_exit: i32;$/;" v +check_jobs_at_exit builtins_rust/shopt/src/lib.rs /^ static mut check_jobs_at_exit: i32;$/;" v +check_jobs_at_exit r_bash/src/lib.rs /^ pub static mut check_jobs_at_exit: ::std::os::raw::c_int;$/;" v +check_jobs_at_exit shell.c /^int check_jobs_at_exit = 0;$/;" v typeref:typename:int +check_library_send vendor/libloading/tests/markers.rs /^fn check_library_send() {$/;" f +check_library_sync vendor/libloading/tests/markers.rs /^fn check_library_sync() {$/;" f +check_loop_level builtins_rust/break_1/src/lib.rs /^pub extern "C" fn check_loop_level() -> i32 {$/;" f +check_mail mailcheck.c /^check_mail ()$/;" f typeref:typename:void +check_mail r_bash/src/lib.rs /^ pub fn check_mail();$/;" f +check_non_field_attrs vendor/thiserror-impl/src/valid.rs /^fn check_non_field_attrs(attrs: &Attrs) -> Result<()> {$/;" f +check_openout_in_log_support support/texi2dvi /^check_openout_in_log_support ()$/;" f +check_recorder_support support/texi2dvi /^check_recorder_support ()$/;" f +check_redir bashline.c /^check_redir (ti)$/;" f file: +check_result lib/sh/mktime.c /^check_result (tk, tmk, tl, tml)$/;" f file: +check_selfref builtins_rust/declare/src/lib.rs /^ fn check_selfref(name: *const c_char, value: *mut c_char, flags: i32) -> i32;$/;" f +check_selfref general.c /^check_selfref (name, value, flags)$/;" f +check_selfref r_bash/src/lib.rs /^ pub fn check_selfref($/;" f +check_selfref r_glob/src/lib.rs /^ pub fn check_selfref($/;" f +check_selfref r_readline/src/lib.rs /^ pub fn check_selfref($/;" f +check_signals builtins_rust/read/src/intercdep.rs /^ pub fn check_signals();$/;" f +check_signals r_bash/src/lib.rs /^ pub fn check_signals();$/;" f +check_signals r_glob/src/lib.rs /^ pub fn check_signals();$/;" f +check_signals r_readline/src/lib.rs /^ pub fn check_signals();$/;" f +check_signals trap.c /^check_signals ()$/;" f typeref:typename:void +check_signals_and_traps r_bash/src/lib.rs /^ pub fn check_signals_and_traps();$/;" f +check_signals_and_traps r_glob/src/lib.rs /^ pub fn check_signals_and_traps();$/;" f +check_signals_and_traps r_readline/src/lib.rs /^ pub fn check_signals_and_traps();$/;" f +check_signals_and_traps trap.c /^check_signals_and_traps ()$/;" f typeref:typename:void +check_spans vendor/proc-macro2/tests/test.rs /^fn check_spans(p: &str, mut lines: &[(usize, usize, usize, usize)]) {$/;" f +check_spans_internal vendor/proc-macro2/tests/test.rs /^fn check_spans_internal(ts: TokenStream, lines: &mut &[(usize, usize, usize, usize)]) {$/;" f +check_statfs vendor/nix/src/sys/statfs.rs /^ fn check_statfs(path: &str) {$/;" f module:test +check_statfs_strict vendor/nix/src/sys/statfs.rs /^ fn check_statfs_strict(path: &str) {$/;" f module:test +check_symbol_send vendor/libloading/tests/markers.rs /^fn check_symbol_send() {$/;" f +check_symbol_sync vendor/libloading/tests/markers.rs /^fn check_symbol_sync() {$/;" f +check_unbind_variable r_bash/src/lib.rs /^ pub fn check_unbind_variable(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +check_unbind_variable variables.c /^check_unbind_variable (name)$/;" f +check_unexpected vendor/syn/src/parse.rs /^ fn check_unexpected(&self) -> Result<()> {$/;" P implementation:ParseBuffer +check_unix_library_send vendor/libloading/tests/markers.rs /^fn check_unix_library_send() {$/;" f +check_unix_library_sync vendor/libloading/tests/markers.rs /^fn check_unix_library_sync() {$/;" f +check_unix_symbol_send vendor/libloading/tests/markers.rs /^fn check_unix_symbol_send() {$/;" f +check_unix_symbol_sync vendor/libloading/tests/markers.rs /^fn check_unix_symbol_sync() {$/;" f +check_window_size builtins_rust/shopt/src/lib.rs /^ static mut check_window_size: i32;$/;" v +check_window_size jobs.c /^int check_window_size = CHECKWINSIZE_DEFAULT;$/;" v typeref:typename:int +check_window_size nojobs.c /^int check_window_size = CHECKWINSIZE_DEFAULT;$/;" v typeref:typename:int +check_window_size r_bash/src/lib.rs /^ pub static mut check_window_size: ::std::os::raw::c_int;$/;" v +check_window_size r_jobs/src/lib.rs /^pub static mut check_window_size: c_int = CHECKWINSIZE_DEFAULT as i32;$/;" v +check_windows_library_send vendor/libloading/tests/markers.rs /^fn check_windows_library_send() {$/;" f +check_windows_library_sync vendor/libloading/tests/markers.rs /^fn check_windows_library_sync() {$/;" f +check_windows_symbol_send vendor/libloading/tests/markers.rs /^fn check_windows_symbol_send() {$/;" f +check_windows_symbol_sync vendor/libloading/tests/markers.rs /^fn check_windows_symbol_sync() {$/;" f +checked_add vendor/stdext/src/num/integer.rs /^ fn checked_add(self, rhs: Self) -> Option;$/;" P interface:Integer +checked_ceil vendor/stdext/src/num/float_convert.rs /^ fn checked_ceil(self) -> Option;$/;" P interface:FloatConvert +checked_div vendor/stdext/src/num/integer.rs /^ fn checked_div(self, rhs: Self) -> Option;$/;" P interface:Integer +checked_div_euclid vendor/stdext/src/num/integer.rs /^ fn checked_div_euclid(self, rhs: Self) -> Option;$/;" P interface:Integer +checked_floor vendor/stdext/src/num/float_convert.rs /^ fn checked_floor(self) -> Option;$/;" P interface:FloatConvert +checked_impl vendor/stdext/src/num/float_convert.rs /^macro_rules! checked_impl {$/;" M +checked_mul vendor/stdext/src/num/integer.rs /^ fn checked_mul(self, rhs: Self) -> Option;$/;" P interface:Integer +checked_neg vendor/stdext/src/num/integer.rs /^ fn checked_neg(self) -> Option;$/;" P interface:Integer +checked_pow vendor/stdext/src/num/integer.rs /^ fn checked_pow(self, exp: u32) -> Option;$/;" P interface:Integer +checked_rem vendor/stdext/src/num/integer.rs /^ fn checked_rem(self, rhs: Self) -> Option;$/;" P interface:Integer +checked_rem_euclid vendor/stdext/src/num/integer.rs /^ fn checked_rem_euclid(self, rhs: Self) -> Option;$/;" P interface:Integer +checked_round vendor/stdext/src/num/float_convert.rs /^ fn checked_round(self) -> Option;$/;" P interface:FloatConvert +checked_shl vendor/stdext/src/num/integer.rs /^ fn checked_shl(self, rhs: u32) -> Option;$/;" P interface:Integer +checked_shr vendor/stdext/src/num/integer.rs /^ fn checked_shr(self, rhs: u32) -> Option;$/;" P interface:Integer +checked_sub vendor/stdext/src/num/integer.rs /^ fn checked_sub(self, rhs: Self) -> Option;$/;" P interface:Integer +checkhelp builtins_rust/break_1/src/lib.rs /^fn checkhelp(l: *mut WordList) -> i32 {$/;" f +chflags vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn chflags(path: *const ::c_char, flags: ::c_uint) -> ::c_int;$/;" f +chflags vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn chflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int;$/;" f +chflags vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn chflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int;$/;" f +chflags vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn chflags(path: *const ::c_char, flags: ::c_uint) -> ::c_int;$/;" f +chflagsat vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn chflagsat($/;" f +chflagsat vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn chflagsat($/;" f +child vendor/once_cell/tests/it.rs /^ child: std::process::Child,$/;" m struct:sync::reentrant_init::Guard +child_caught_sigint jobs.c /^static int child_caught_sigint;$/;" v typeref:typename:int file: +child_caught_sigint r_jobs/src/lib.rs /^static mut child_caught_sigint: c_int = 0;$/;" v +child_max nojobs.c /^static long child_max = -1L;$/;" v typeref:typename:long file: +childval lib/readline/rlprivate.h /^ int childval;$/;" m struct:__rl_keyseq_context typeref:typename:int +childval r_readline/src/lib.rs /^ pub childval: ::std::os::raw::c_int,$/;" m struct:__rl_keyseq_context +chipid_t vendor/libc/src/unix/solarish/mod.rs /^pub type chipid_t = ::c_int;$/;" t +chk_arithsub subst.c /^chk_arithsub (s, len)$/;" f file: +chk_atstar subst.c /^chk_atstar (name, quoted, pflags, quoted_dollar_atp, contains_dollar_at)$/;" f file: +chkexport r_bash/src/lib.rs /^ pub fn chkexport(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +chkexport variables.c /^chkexport (name)$/;" f +chkinfnan lib/sh/snprintf.c /^chkinfnan(p, d, mode)$/;" f file: +chmod r_bash/src/lib.rs /^ pub fn chmod(__file: *const ::std::os::raw::c_char, __mode: __mode_t) -> ::std::os::raw::c_i/;" f +chmod r_readline/src/lib.rs /^ pub fn chmod(__file: *const ::std::os::raw::c_char, __mode: __mode_t) -> ::std::os::raw::c_i/;" f +chmod vendor/libc/src/fuchsia/mod.rs /^ pub fn chmod(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +chmod vendor/libc/src/solid/mod.rs /^ pub fn chmod(arg1: *const c_char, arg2: __mode_t) -> c_int;$/;" f +chmod vendor/libc/src/unix/mod.rs /^ pub fn chmod(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +chmod vendor/libc/src/vxworks/mod.rs /^ pub fn chmod(path: *const ::c_char, mode: ::mode_t) -> ::c_int;$/;" f +chmod vendor/libc/src/windows/mod.rs /^ pub fn chmod(path: *const c_char, mode: ::c_int) -> ::c_int;$/;" f +chown r_bash/src/lib.rs /^ pub fn chown($/;" f +chown r_glob/src/lib.rs /^ pub fn chown($/;" f +chown r_readline/src/lib.rs /^ pub fn chown($/;" f +chown vendor/libc/src/fuchsia/mod.rs /^ pub fn chown(path: *const c_char, uid: uid_t, gid: gid_t) -> ::c_int;$/;" f +chown vendor/libc/src/unix/mod.rs /^ pub fn chown(path: *const c_char, uid: uid_t, gid: gid_t) -> ::c_int;$/;" f +chown vendor/libc/src/vxworks/mod.rs /^ pub fn chown(path: *const c_char, uid: uid_t, gid: gid_t) -> ::c_int;$/;" f +chroot r_bash/src/lib.rs /^ pub fn chroot(__path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +chroot r_glob/src/lib.rs /^ pub fn chroot(__path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +chroot r_readline/src/lib.rs /^ pub fn chroot(__path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +chroot vendor/libc/src/unix/mod.rs /^ pub fn chroot(name: *const ::c_char) -> ::c_int;$/;" f +chunks vendor/chunky-vec/src/lib.rs /^ chunks: Vec>,$/;" m struct:ChunkyVec +chunks vendor/chunky-vec/src/lib.rs /^ chunks: slice::Iter<'a, Chunk>,$/;" m struct:Iter +chunks vendor/chunky-vec/src/lib.rs /^ chunks: slice::IterMut<'a, Chunk>,$/;" m struct:IterMut +chunks vendor/futures-util/src/stream/stream/mod.rs /^ fn chunks(self, capacity: usize) -> Chunks$/;" P interface:StreamExt +chunks vendor/futures-util/src/stream/stream/mod.rs /^mod chunks;$/;" n +chunks vendor/futures/tests_disabled/stream.rs /^fn chunks() {$/;" f +chunks_panic_on_cap_zero vendor/futures/tests/stream.rs /^fn chunks_panic_on_cap_zero() {$/;" f +chunks_panic_on_cap_zero vendor/futures/tests_disabled/stream.rs /^fn chunks_panic_on_cap_zero() {$/;" f +ci/miri.sh vendor/memoffset/.cargo-checksum.json /^{"files":{"Cargo.toml":"2556143c764ef2315fe44ff0ec43af47ca70b260fd64aa53f57dc42760d7132d","LICEN/;" s object:files +cid vendor/nix/src/sys/socket/addr.rs /^ pub fn cid(&self) -> u32 {$/;" P implementation:vsock::VsockAddr +clauses builtins_rust/cd/src/lib.rs /^ clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/command/src/lib.rs /^ pub clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/common/src/lib.rs /^ clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/complete/src/lib.rs /^ clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/declare/src/lib.rs /^ clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/fc/src/lib.rs /^ clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/fg_bg/src/lib.rs /^ clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/getopts/src/lib.rs /^ clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/jobs/src/lib.rs /^ clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/kill/src/intercdep.rs /^ pub clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/pushd/src/lib.rs /^ clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/setattr/src/intercdep.rs /^ pub clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/source/src/lib.rs /^ clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses builtins_rust/type/src/lib.rs /^ clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses command.h /^ PATTERN_LIST *clauses; \/* The clauses to test against, or NULL. *\/$/;" m struct:case_com typeref:typename:PATTERN_LIST * +clauses r_bash/src/lib.rs /^ pub clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses r_glob/src/lib.rs /^ pub clauses: *mut PATTERN_LIST,$/;" m struct:case_com +clauses r_readline/src/lib.rs /^ pub clauses: *mut PATTERN_LIST,$/;" m struct:case_com +cldr-misc-full vendor/unic-langid-impl/data/cldr-misc-full/README.md /^# cldr-misc-full$/;" c +clean Makefile.in /^clean: basic-clean$/;" t +clean builtins/Makefile.in /^clean:$/;" t +clean lib/glob/Makefile.in /^clean:$/;" t +clean lib/glob/doc/Makefile /^clean distclean mostlyclean maintainer-clean:$/;" t +clean lib/intl/Makefile.in /^clean: mostlyclean$/;" t +clean lib/malloc/Makefile.in /^mostlyclean clean:$/;" t +clean lib/readline/Makefile.in /^clean: force$/;" t +clean lib/sh/Makefile.in /^clean:$/;" t +clean lib/termcap/Makefile.in /^clean:$/;" t +clean lib/tilde/Makefile.in /^clean:$/;" t +clean support/Makefile.in /^clean:$/;" t +clean vendor/nix/test/test_kmod/hello_mod/Makefile /^clean:$/;" t +clean_itemlist pcomplete.c /^clean_itemlist (itp)$/;" f +clean_name support/texi2html /^sub clean_name $/;" s +clean_simple_command make_cmd.c /^clean_simple_command (command)$/;" f +clean_simple_command r_bash/src/lib.rs /^ pub fn clean_simple_command(arg1: *mut COMMAND) -> *mut COMMAND;$/;" f +cleanarg builtins_rust/cd/src/lib.rs /^ cleanarg: *mut fn(),$/;" m struct:JOB +cleanarg builtins_rust/common/src/lib.rs /^ cleanarg: *mut fn(),$/;" m struct:JOB +cleanarg builtins_rust/exit/src/lib.rs /^ cleanarg: *mut fn(),$/;" m struct:JOB +cleanarg builtins_rust/fc/src/lib.rs /^ cleanarg: *mut fn(),$/;" m struct:JOB +cleanarg builtins_rust/fg_bg/src/lib.rs /^ cleanarg: *mut fn(),$/;" m struct:JOB +cleanarg builtins_rust/jobs/src/lib.rs /^ cleanarg: *mut fn(),$/;" m struct:JOB +cleanarg builtins_rust/kill/src/intercdep.rs /^ pub cleanarg: *mut c_void,$/;" m struct:job +cleanarg builtins_rust/setattr/src/intercdep.rs /^ pub cleanarg: *mut c_void,$/;" m struct:job +cleanarg builtins_rust/wait/src/lib.rs /^ cleanarg: *mut fn(),$/;" m struct:JOB +cleanarg jobs.h /^ PTR_T cleanarg; \/* Argument passed to (*j_cleanup)() *\/$/;" m struct:job typeref:typename:PTR_T +cleanarg r_bash/src/lib.rs /^ pub cleanarg: *mut ::std::os::raw::c_void,$/;" m struct:job +cleanup support/texi2dvi /^cleanup ()$/;" f +cleanup unwind_prot.c /^ Function *cleanup;$/;" m struct:uwp::uwp_head typeref:typename:Function * file: +cleanup_dead_jobs jobs.c /^cleanup_dead_jobs ()$/;" f typeref:typename:void file: +cleanup_dead_jobs nojobs.c /^cleanup_dead_jobs ()$/;" f typeref:typename:int +cleanup_dead_jobs r_jobs/src/lib.rs /^unsafe extern "C" fn cleanup_dead_jobs() {$/;" f +cleanup_expansion_error bashline.c /^cleanup_expansion_error ()$/;" f typeref:typename:void file: +cleanup_module vendor/nix/test/test_kmod/hello_mod/hello.c /^void cleanup_module(void)$/;" f typeref:typename:void +cleanup_redirects execute_cmd.c /^cleanup_redirects (list)$/;" f file: +cleanup_the_pipeline jobs.c /^cleanup_the_pipeline ()$/;" f typeref:typename:void +cleanup_the_pipeline r_bash/src/lib.rs /^ pub fn cleanup_the_pipeline();$/;" f +cleanup_the_pipeline r_jobs/src/lib.rs /^pub unsafe extern "C" fn cleanup_the_pipeline()$/;" f +clear vendor/futures-util/src/stream/futures_unordered/mod.rs /^ pub fn clear(&mut self) {$/;" P implementation:FuturesUnordered +clear vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^ pub(crate) unsafe fn clear(&self) {$/;" P implementation:ReadyToRunQueue +clear vendor/futures-util/src/stream/select_all.rs /^ pub fn clear(&mut self) {$/;" P implementation:SelectAll +clear vendor/futures/tests/stream_futures_unordered.rs /^fn clear() {$/;" f +clear vendor/futures/tests/stream_select_all.rs /^fn clear() {$/;" f +clear vendor/nix/src/errno.rs /^ pub fn clear() {$/;" P implementation:Errno +clear vendor/nix/src/errno.rs /^fn clear() {$/;" f +clear vendor/nix/src/sys/select.rs /^ pub fn clear(&mut self) {$/;" P implementation:FdSet +clear vendor/slab/src/lib.rs /^ pub fn clear(&mut self) {$/;" P implementation:Slab +clear vendor/slab/tests/slab.rs /^fn clear() {$/;" f +clear vendor/smallvec/src/lib.rs /^ pub fn clear(&mut self) {$/;" P implementation:SmallVec +clear vendor/syn/src/punctuated.rs /^ pub fn clear(&mut self) {$/;" P implementation:Punctuated +clear vendor/type-map/src/lib.rs /^ pub fn clear(&mut self) {$/;" P implementation:concurrent::TypeMap +clear vendor/type-map/src/lib.rs /^ pub fn clear(&mut self) {$/;" P implementation:TypeMap +clear vendor/unic-langid-impl/src/subtags/language.rs /^ pub fn clear(&mut self) {$/;" P implementation:Language +clear_caches vendor/libc/src/unix/haiku/native.rs /^ pub fn clear_caches(address: *mut ::c_void, length: ::size_t, flags: u32);$/;" f +clear_dollar_vars builtins_rust/shift/src/intercdep.rs /^ pub fn clear_dollar_vars();$/;" f +clear_dollar_vars r_bash/src/lib.rs /^ pub fn clear_dollar_vars();$/;" f +clear_dollar_vars variables.c /^clear_dollar_vars ()$/;" f typeref:typename:void +clear_fifo subst.c /^clear_fifo (i)$/;" f +clear_fifo_list r_bash/src/lib.rs /^ pub fn clear_fifo_list();$/;" f +clear_fifo_list subst.c /^clear_fifo_list ()$/;" f typeref:typename:void +clear_head_all vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn clear_head_all(&mut self) {$/;" P implementation:FuturesUnordered +clear_hisroty r_bashhist/src/lib.rs /^ fn clear_hisroty();$/;" f +clear_history lib/readline/history.c /^clear_history (void)$/;" f typeref:typename:void +clear_history r_readline/src/lib.rs /^ pub fn clear_history();$/;" f +clear_hostname_list bashline.c /^clear_hostname_list ()$/;" f typeref:typename:void +clear_hostname_list r_bash/src/lib.rs /^ pub fn clear_hostname_list();$/;" f +clear_pending_traps r_bash/src/lib.rs /^ pub fn clear_pending_traps();$/;" f +clear_pending_traps r_glob/src/lib.rs /^ pub fn clear_pending_traps();$/;" f +clear_pending_traps r_readline/src/lib.rs /^ pub fn clear_pending_traps();$/;" f +clear_pending_traps trap.c /^clear_pending_traps ()$/;" f typeref:typename:void +clear_shell_input_line r_bash/src/lib.rs /^ pub fn clear_shell_input_line();$/;" f +clear_string_list_expander r_bash/src/lib.rs /^ pub fn clear_string_list_expander(arg1: *mut alias_t);$/;" f +clear_table support/man2html.c /^clear_table(TABLEROW * table)$/;" f typeref:typename:void file: +clear_unwind_protect_list r_bash/src/lib.rs /^ pub fn clear_unwind_protect_list(arg1: ::std::os::raw::c_int);$/;" f +clear_unwind_protect_list unwind_prot.c /^clear_unwind_protect_list (flags)$/;" f +clear_unwind_protects_internal unwind_prot.c /^clear_unwind_protects_internal (flag, ignore)$/;" f file: +clear_variants vendor/unic-langid-impl/src/lib.rs /^ pub fn clear_variants(&mut self) {$/;" P implementation:LanguageIdentifier +clearenv r_bash/src/lib.rs /^ pub fn clearenv() -> ::std::os::raw::c_int;$/;" f +clearenv r_glob/src/lib.rs /^ pub fn clearenv() -> ::std::os::raw::c_int;$/;" f +clearenv r_readline/src/lib.rs /^ pub fn clearenv() -> ::std::os::raw::c_int;$/;" f +clearenv vendor/libc/src/fuchsia/mod.rs /^ pub fn clearenv() -> ::c_int;$/;" f +clearenv vendor/libc/src/unix/haiku/mod.rs /^ pub fn clearenv() -> ::c_int;$/;" f +clearenv vendor/libc/src/unix/linux_like/mod.rs /^ pub fn clearenv() -> ::c_int;$/;" f +clearenv vendor/libc/src/wasi.rs /^ pub fn clearenv() -> ::c_int;$/;" f +clearenv vendor/nix/src/env.rs /^pub unsafe fn clearenv() -> std::result::Result<(), ClearEnvError> {$/;" f +clearenv vendor/nix/test/test_clearenv.rs /^fn clearenv() {$/;" f +clearerr r_bash/src/lib.rs /^ pub fn clearerr(__stream: *mut FILE);$/;" f +clearerr r_readline/src/lib.rs /^ pub fn clearerr(__stream: *mut FILE);$/;" f +clearerr vendor/libc/src/solid/mod.rs /^ pub fn clearerr(arg1: *mut FILE);$/;" f +clearerr vendor/libc/src/unix/mod.rs /^ pub fn clearerr(stream: *mut FILE);$/;" f +clearerr vendor/libc/src/wasi.rs /^ pub fn clearerr(f: *mut FILE);$/;" f +clearerr_unlocked r_bash/src/lib.rs /^ pub fn clearerr_unlocked(__stream: *mut FILE);$/;" f +clearerr_unlocked r_readline/src/lib.rs /^ pub fn clearerr_unlocked(__stream: *mut FILE);$/;" f +clippy_mut_mut vendor/pin-project-lite/tests/lint.rs /^pub mod clippy_mut_mut {$/;" n +clippy_redundant_pub_crate vendor/pin-project-lite/tests/lint.rs /^mod clippy_redundant_pub_crate {$/;" n +clippy_ref_option_ref vendor/pin-project-lite/tests/lint.rs /^pub mod clippy_ref_option_ref {$/;" n +clippy_type_repetition_in_bounds vendor/pin-project-lite/tests/lint.rs /^pub mod clippy_type_repetition_in_bounds {$/;" n +clippy_used_underscore_binding vendor/pin-project-lite/tests/lint.rs /^pub mod clippy_used_underscore_binding {$/;" n +clktck.o lib/sh/Makefile.in /^clktck.o: ${BUILD_DIR}\/config.h$/;" t +clktck.o lib/sh/Makefile.in /^clktck.o: ${topdir}\/bashtypes.h$/;" t +clktck.o lib/sh/Makefile.in /^clktck.o: clktck.c$/;" t +clock r_bash/src/lib.rs /^ pub fn clock() -> clock_t;$/;" f +clock r_readline/src/lib.rs /^ pub fn clock() -> clock_t;$/;" f +clock vendor/libc/src/solid/mod.rs /^ pub fn clock() -> clock_t;$/;" f +clock vendor/libc/src/wasi.rs /^ pub fn clock() -> clock_t;$/;" f +clock.o lib/sh/Makefile.in /^clock.o: ${BASHINCDIR}\/posixtime.h$/;" t +clock.o lib/sh/Makefile.in /^clock.o: ${BUILD_DIR}\/config.h$/;" t +clock.o lib/sh/Makefile.in /^clock.o: clock.c$/;" t +clock_adjtime r_bash/src/lib.rs /^ pub fn clock_adjtime(__clock_id: __clockid_t, __utx: *mut timex) -> ::std::os::raw::c_int;$/;" f +clock_adjtime r_readline/src/lib.rs /^ pub fn clock_adjtime(__clock_id: __clockid_t, __utx: *mut timex) -> ::std::os::raw::c_int;$/;" f +clock_adjtime vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn clock_adjtime(clk_id: ::clockid_t, buf: *mut ::timex) -> ::c_int;$/;" f +clock_adjtime vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn clock_adjtime(clk_id: ::clockid_t, buf: *mut ::timex) -> ::c_int;$/;" f +clock_getcpuclockid r_bash/src/lib.rs /^ pub fn clock_getcpuclockid(__pid: pid_t, __clock_id: *mut clockid_t) -> ::std::os::raw::c_in/;" f +clock_getcpuclockid r_readline/src/lib.rs /^ pub fn clock_getcpuclockid(__pid: pid_t, __clock_id: *mut clockid_t) -> ::std::os::raw::c_in/;" f +clock_getcpuclockid vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn clock_getcpuclockid(pid: ::pid_t, clk_id: *mut ::clockid_t) -> ::c_int;$/;" f +clock_getcpuclockid vendor/libc/src/unix/haiku/mod.rs /^ pub fn clock_getcpuclockid(pid: ::pid_t, clk_id: *mut ::clockid_t) -> ::c_int;$/;" f +clock_getcpuclockid vendor/libc/src/unix/linux_like/mod.rs /^ pub fn clock_getcpuclockid(pid: ::pid_t, clk_id: *mut ::clockid_t) -> ::c_int;$/;" f +clock_getcpuclockid vendor/nix/src/time.rs /^pub fn clock_getcpuclockid(pid: Pid) -> Result {$/;" f +clock_getcpuclockid2 vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn clock_getcpuclockid2(arg1: ::id_t, arg2: ::c_int, arg3: *mut clockid_t) -> ::c_int;$/;" f +clock_getres r_bash/src/lib.rs /^ pub fn clock_getres(__clock_id: clockid_t, __res: *mut timespec) -> ::std::os::raw::c_int;$/;" f +clock_getres r_readline/src/lib.rs /^ pub fn clock_getres(__clock_id: clockid_t, __res: *mut timespec) -> ::std::os::raw::c_int;$/;" f +clock_getres vendor/libc/src/fuchsia/mod.rs /^ pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_getres vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_getres vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_getres vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_getres vendor/libc/src/unix/haiku/mod.rs /^ pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_getres vendor/libc/src/unix/linux_like/mod.rs /^ pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_getres vendor/libc/src/unix/newlib/mod.rs /^ pub fn clock_getres(clock_id: ::clockid_t, res: *mut ::timespec) -> ::c_int;$/;" f +clock_getres vendor/libc/src/unix/solarish/mod.rs /^ pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_getres vendor/libc/src/vxworks/mod.rs /^ pub fn clock_getres(clock_id: ::clockid_t, res: *mut ::timespec) -> ::c_int;$/;" f +clock_getres vendor/libc/src/wasi.rs /^ pub fn clock_getres(a: clockid_t, b: *mut timespec) -> c_int;$/;" f +clock_getres vendor/nix/src/time.rs /^pub fn clock_getres(clock_id: ClockId) -> Result {$/;" f +clock_gettime r_bash/src/lib.rs /^ pub fn clock_gettime(__clock_id: clockid_t, __tp: *mut timespec) -> ::std::os::raw::c_int;$/;" f +clock_gettime r_readline/src/lib.rs /^ pub fn clock_gettime(__clock_id: clockid_t, __tp: *mut timespec) -> ::std::os::raw::c_int;$/;" f +clock_gettime vendor/libc/src/fuchsia/mod.rs /^ pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_gettime vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_gettime vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_gettime vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_gettime vendor/libc/src/unix/haiku/mod.rs /^ pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_gettime vendor/libc/src/unix/hermit/mod.rs /^ pub fn clock_gettime(clock_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_gettime vendor/libc/src/unix/linux_like/mod.rs /^ pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_gettime vendor/libc/src/unix/newlib/mod.rs /^ pub fn clock_gettime(clock_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_gettime vendor/libc/src/unix/redox/mod.rs /^ pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_gettime vendor/libc/src/unix/solarish/mod.rs /^ pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_gettime vendor/libc/src/vxworks/mod.rs /^ pub fn clock_gettime(clock_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +clock_gettime vendor/libc/src/wasi.rs /^ pub fn clock_gettime(a: clockid_t, b: *mut timespec) -> c_int;$/;" f +clock_gettime vendor/nix/src/time.rs /^pub fn clock_gettime(clock_id: ClockId) -> Result {$/;" f +clock_nanosleep r_bash/src/lib.rs /^ pub fn clock_nanosleep($/;" f +clock_nanosleep r_readline/src/lib.rs /^ pub fn clock_nanosleep($/;" f +clock_nanosleep vendor/libc/src/fuchsia/mod.rs /^ pub fn clock_nanosleep($/;" f +clock_nanosleep vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^ pub fn clock_nanosleep($/;" f +clock_nanosleep vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn clock_nanosleep($/;" f +clock_nanosleep vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn clock_nanosleep($/;" f +clock_nanosleep vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn clock_nanosleep($/;" f +clock_nanosleep vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn clock_nanosleep($/;" f +clock_nanosleep vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn clock_nanosleep($/;" f +clock_nanosleep vendor/libc/src/unix/solarish/mod.rs /^ pub fn clock_nanosleep($/;" f +clock_nanosleep vendor/libc/src/vxworks/mod.rs /^ pub fn clock_nanosleep($/;" f +clock_nanosleep vendor/libc/src/wasi.rs /^ pub fn clock_nanosleep(a: clockid_t, a2: c_int, b: *const timespec, c: *mut timespec) -> c_i/;" f +clock_settime r_bash/src/lib.rs /^ pub fn clock_settime(__clock_id: clockid_t, __tp: *const timespec) -> ::std::os::raw::c_int;$/;" f +clock_settime r_readline/src/lib.rs /^ pub fn clock_settime(__clock_id: clockid_t, __tp: *const timespec) -> ::std::os::raw::c_int;$/;" f +clock_settime vendor/libc/src/fuchsia/mod.rs /^ pub fn clock_settime(clk_id: ::clockid_t, tp: *const ::timespec) -> ::c_int;$/;" f +clock_settime vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn clock_settime(clk_id: ::clockid_t, tp: *const ::timespec) -> ::c_int;$/;" f +clock_settime vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn clock_settime(clk_id: ::clockid_t, tp: *const ::timespec) -> ::c_int;$/;" f +clock_settime vendor/libc/src/unix/haiku/mod.rs /^ pub fn clock_settime(clk_id: ::clockid_t, tp: *const ::timespec) -> ::c_int;$/;" f +clock_settime vendor/libc/src/unix/linux_like/mod.rs /^ pub fn clock_settime(clk_id: ::clockid_t, tp: *const ::timespec) -> ::c_int;$/;" f +clock_settime vendor/libc/src/unix/newlib/mod.rs /^ pub fn clock_settime(clock_id: ::clockid_t, tp: *const ::timespec) -> ::c_int;$/;" f +clock_settime vendor/libc/src/unix/solarish/mod.rs /^ pub fn clock_settime(clk_id: ::clockid_t, tp: *const ::timespec) -> ::c_int;$/;" f +clock_settime vendor/libc/src/vxworks/mod.rs /^ pub fn clock_settime(clock_id: ::clockid_t, tp: *const ::timespec) -> ::c_int;$/;" f +clock_settime vendor/nix/src/time.rs /^pub fn clock_settime(clock_id: ClockId, timespec: TimeSpec) -> Result<()> {$/;" f +clock_t r_bash/src/lib.rs /^pub type clock_t = __clock_t;$/;" t +clock_t r_glob/src/lib.rs /^pub type clock_t = __clock_t;$/;" t +clock_t r_readline/src/lib.rs /^pub type clock_t = __clock_t;$/;" t +clock_t vendor/libc/src/fuchsia/mod.rs /^pub type clock_t = c_long;$/;" t +clock_t vendor/libc/src/solid/mod.rs /^pub type clock_t = c_uint;$/;" t +clock_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type clock_t = c_ulong;$/;" t +clock_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type clock_t = u64;$/;" t +clock_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type clock_t = i32;$/;" t +clock_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type clock_t = ::c_uint;$/;" t +clock_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type clock_t = i64;$/;" t +clock_t vendor/libc/src/unix/haiku/mod.rs /^pub type clock_t = i32;$/;" t +clock_t vendor/libc/src/unix/hermit/mod.rs /^pub type clock_t = c_ulong;$/;" t +clock_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type clock_t = ::c_long;$/;" t +clock_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type clock_t = c_long;$/;" t +clock_t vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type clock_t = i32;$/;" t +clock_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type clock_t = c_long;$/;" t +clock_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type clock_t = ::c_long;$/;" t +clock_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type clock_t = i32;$/;" t +clock_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type clock_t = i64;$/;" t +clock_t vendor/libc/src/unix/newlib/aarch64/mod.rs /^pub type clock_t = ::c_long;$/;" t +clock_t vendor/libc/src/unix/newlib/arm/mod.rs /^pub type clock_t = ::c_long;$/;" t +clock_t vendor/libc/src/unix/newlib/espidf/mod.rs /^pub type clock_t = ::c_ulong;$/;" t +clock_t vendor/libc/src/unix/newlib/horizon/mod.rs /^pub type clock_t = c_ulong;$/;" t +clock_t vendor/libc/src/unix/newlib/powerpc/mod.rs /^pub type clock_t = ::c_ulong;$/;" t +clock_t vendor/libc/src/unix/redox/mod.rs /^pub type clock_t = ::c_long;$/;" t +clock_t vendor/libc/src/unix/solarish/mod.rs /^pub type clock_t = ::c_long;$/;" t +clock_t vendor/libc/src/wasi.rs /^pub type clock_t = c_longlong;$/;" t +clock_t vendor/libc/src/windows/mod.rs /^pub type clock_t = i32;$/;" t +clock_t_to_secs lib/sh/clock.c /^clock_t_to_secs (t, sp, sfp)$/;" f +clock_t_to_secs r_bash/src/lib.rs /^ pub fn clock_t_to_secs();$/;" f +clockid_t r_bash/src/lib.rs /^pub type clockid_t = __clockid_t;$/;" t +clockid_t r_glob/src/lib.rs /^pub type clockid_t = __clockid_t;$/;" t +clockid_t r_readline/src/lib.rs /^pub type clockid_t = __clockid_t;$/;" t +clockid_t vendor/libc/src/fuchsia/mod.rs /^pub type clockid_t = ::c_int;$/;" t +clockid_t vendor/libc/src/solid/mod.rs /^pub type clockid_t = c_int;$/;" t +clockid_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type clockid_t = ::c_uint;$/;" t +clockid_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type clockid_t = ::c_ulong;$/;" t +clockid_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type clockid_t = ::c_int;$/;" t +clockid_t vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type clockid_t = ::c_int;$/;" t +clockid_t vendor/libc/src/unix/haiku/mod.rs /^pub type clockid_t = i32;$/;" t +clockid_t vendor/libc/src/unix/hermit/mod.rs /^pub type clockid_t = c_ulong;$/;" t +clockid_t vendor/libc/src/unix/linux_like/mod.rs /^pub type clockid_t = ::c_int;$/;" t +clockid_t vendor/libc/src/unix/newlib/mod.rs /^pub type clockid_t = ::c_ulong;$/;" t +clockid_t vendor/libc/src/unix/redox/mod.rs /^pub type clockid_t = ::c_int;$/;" t +clockid_t vendor/libc/src/unix/solarish/mod.rs /^pub type clockid_t = ::c_int;$/;" t +clockid_t vendor/libc/src/vxworks/mod.rs /^pub type clockid_t = ::c_int;$/;" t +clockid_t vendor/libc/src/wasi.rs /^unsafe impl Send for clockid_t {}$/;" c +clockid_t vendor/libc/src/wasi.rs /^unsafe impl Sync for clockid_t {}$/;" c +clockid_t vendor/nix/src/time.rs /^impl From for clockid_t {$/;" c +clone r_bash/src/lib.rs /^ fn clone(&self) -> Self {$/;" P implementation:__IncompleteArrayField +clone vendor/async-trait/tests/executor/mod.rs /^ unsafe fn clone(_null: *const ()) -> RawWaker {$/;" f function:block_on_simple +clone vendor/fluent-bundle/src/types/mod.rs /^ fn clone(&self) -> Self {$/;" P implementation:FluentValue +clone vendor/futures-channel/src/mpsc/mod.rs /^ fn clone(&self) -> Self {$/;" P implementation:BoundedSenderInner +clone vendor/futures-channel/src/mpsc/mod.rs /^ fn clone(&self) -> Self {$/;" P implementation:Sender +clone vendor/futures-channel/src/mpsc/mod.rs /^ fn clone(&self) -> Self {$/;" P implementation:UnboundedSender +clone vendor/futures-channel/src/mpsc/mod.rs /^ fn clone(&self) -> Self {$/;" P implementation:UnboundedSenderInner +clone vendor/futures-executor/src/thread_pool.rs /^ fn clone(&self) -> Self {$/;" P implementation:ThreadPool +clone vendor/futures-util/src/compat/compat03as01.rs /^ unsafe fn clone(ptr: *const ()) -> RawWaker {$/;" f method:Current::as_waker +clone vendor/futures-util/src/future/future/shared.rs /^ fn clone(&self) -> Self {$/;" P implementation:WeakShared +clone vendor/futures-util/src/future/future/shared.rs /^ fn clone(&self) -> Self {$/;" f +clone vendor/futures-util/src/future/pending.rs /^ fn clone(&self) -> Self {$/;" P implementation:Pending +clone vendor/futures-util/src/sink/with.rs /^ fn clone(&self) -> Self {$/;" f +clone vendor/futures-util/src/stream/empty.rs /^ fn clone(&self) -> Self {$/;" P implementation:Empty +clone vendor/futures-util/src/stream/pending.rs /^ fn clone(&self) -> Self {$/;" P implementation:Pending +clone vendor/futures/tests/future_shared.rs /^ fn clone(&self) -> Self {$/;" P implementation:CountClone +clone vendor/libc/src/fuchsia/mod.rs /^ fn clone(&self) -> DIR {$/;" P implementation:DIR +clone vendor/libc/src/fuchsia/mod.rs /^ fn clone(&self) -> FILE {$/;" P implementation:FILE +clone vendor/libc/src/fuchsia/mod.rs /^ fn clone(&self) -> fpos64_t {$/;" P implementation:fpos64_t +clone vendor/libc/src/fuchsia/mod.rs /^ fn clone(&self) -> fpos_t {$/;" P implementation:fpos_t +clone vendor/libc/src/fuchsia/mod.rs /^ fn clone(&self) -> timezone {$/;" P implementation:timezone +clone vendor/libc/src/fuchsia/mod.rs /^ pub fn clone($/;" f +clone vendor/libc/src/solid/mod.rs /^ fn clone(&self) -> FILE {$/;" P implementation:FILE +clone vendor/libc/src/solid/mod.rs /^ fn clone(&self) -> fpos_t {$/;" P implementation:fpos_t +clone vendor/libc/src/unix/bsd/apple/mod.rs /^ fn clone(&self) -> qos_class_t {$/;" P implementation:qos_class_t +clone vendor/libc/src/unix/bsd/apple/mod.rs /^ fn clone(&self) -> sysdir_search_path_directory_t {$/;" P implementation:sysdir_search_path_directory_t +clone vendor/libc/src/unix/bsd/apple/mod.rs /^ fn clone(&self) -> sysdir_search_path_domain_mask_t {$/;" P implementation:sysdir_search_path_domain_mask_t +clone vendor/libc/src/unix/bsd/apple/mod.rs /^ fn clone(&self) -> timezone {$/;" P implementation:timezone +clone vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ fn clone(&self) -> sem {$/;" P implementation:sem +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ fn clone(&self) -> ::stat {$/;" P implementation:stat +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ fn clone(&self) -> ::stat {$/;" P implementation:stat +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ fn clone(&self) -> ::stat {$/;" P implementation:stat +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ fn clone(&self) -> ::stat {$/;" P implementation:stat +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ fn clone(&self) -> devstat_match_flags {$/;" P implementation:devstat_match_flags +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ fn clone(&self) -> devstat_metric {$/;" P implementation:devstat_metric +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ fn clone(&self) -> devstat_priority {$/;" P implementation:devstat_priority +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ fn clone(&self) -> devstat_select_mode {$/;" P implementation:devstat_select_mode +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ fn clone(&self) -> devstat_support_flags {$/;" P implementation:devstat_support_flags +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ fn clone(&self) -> devstat_tag_type {$/;" P implementation:devstat_tag_type +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ fn clone(&self) -> devstat_trans_flags {$/;" P implementation:devstat_trans_flags +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ fn clone(&self) -> devstat_type_flags {$/;" P implementation:devstat_type_flags +clone vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ fn clone(&self) -> dot3Vendors {$/;" P implementation:dot3Vendors +clone vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ fn clone(&self) -> timezone {$/;" P implementation:timezone +clone vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ fn clone(&self) -> sem {$/;" P implementation:sem +clone vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ fn clone(&self) -> timezone {$/;" P implementation:timezone +clone vendor/libc/src/unix/haiku/mod.rs /^ fn clone(&self) -> timezone {$/;" P implementation:timezone +clone vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn clone($/;" f +clone vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ fn clone(&self) -> fpos64_t {$/;" P implementation:fpos64_t +clone vendor/libc/src/unix/linux_like/linux/mod.rs /^ fn clone(&self) -> fpos64_t {$/;" P implementation:fpos64_t +clone vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn clone($/;" f +clone vendor/libc/src/unix/linux_like/mod.rs /^ fn clone(&self) -> timezone {$/;" P implementation:timezone +clone vendor/libc/src/unix/mod.rs /^ fn clone(&self) -> DIR {$/;" P implementation:DIR +clone vendor/libc/src/unix/mod.rs /^ fn clone(&self) -> FILE {$/;" P implementation:FILE +clone vendor/libc/src/unix/mod.rs /^ fn clone(&self) -> fpos_t {$/;" P implementation:fpos_t +clone vendor/libc/src/unix/redox/mod.rs /^ fn clone(&self) -> timezone {$/;" P implementation:timezone +clone vendor/libc/src/unix/solarish/mod.rs /^ fn clone(&self) -> Self {$/;" P implementation:siginfo_cldval +clone vendor/libc/src/unix/solarish/mod.rs /^ fn clone(&self) -> Self {$/;" P implementation:siginfo_fault +clone vendor/libc/src/unix/solarish/mod.rs /^ fn clone(&self) -> Self {$/;" P implementation:siginfo_kill +clone vendor/libc/src/unix/solarish/mod.rs /^ fn clone(&self) -> Self {$/;" P implementation:siginfo_killval +clone vendor/libc/src/unix/solarish/mod.rs /^ fn clone(&self) -> Self {$/;" P implementation:siginfo_sigcld +clone vendor/libc/src/unix/solarish/mod.rs /^ fn clone(&self) -> timezone {$/;" P implementation:timezone +clone vendor/libc/src/unix/solarish/mod.rs /^ fn clone(&self) -> ucred_t {$/;" P implementation:ucred_t +clone vendor/libc/src/vxworks/mod.rs /^ fn clone(&self) -> DIR {$/;" P implementation:DIR +clone vendor/libc/src/vxworks/mod.rs /^ fn clone(&self) -> FILE {$/;" P implementation:FILE +clone vendor/libc/src/vxworks/mod.rs /^ fn clone(&self) -> _Vx_semaphore {$/;" P implementation:_Vx_semaphore +clone vendor/libc/src/vxworks/mod.rs /^ fn clone(&self) -> fpos_t {$/;" P implementation:fpos_t +clone vendor/libc/src/windows/mod.rs /^ fn clone(&self) -> FILE {$/;" P implementation:FILE +clone vendor/libc/src/windows/mod.rs /^ fn clone(&self) -> fpos_t {$/;" P implementation:fpos_t +clone vendor/libc/src/windows/mod.rs /^ fn clone(&self) -> timezone {$/;" P implementation:timezone +clone vendor/libloading/src/os/unix/mod.rs /^ fn clone(&self) -> Symbol {$/;" P implementation:Symbol +clone vendor/libloading/src/os/windows/mod.rs /^ fn clone(&self) -> Symbol {$/;" P implementation:Symbol +clone vendor/libloading/src/safe.rs /^ fn clone(&self) -> Symbol<'lib, T> {$/;" P implementation:Symbol +clone vendor/nix/src/sched.rs /^ pub fn clone($/;" f module:sched_linux_like +clone vendor/once_cell/src/lib.rs /^ fn clone(&self) -> OnceCell {$/;" P implementation:sync::OnceCell +clone vendor/once_cell/src/lib.rs /^ fn clone(&self) -> OnceCell {$/;" P implementation:unsync::OnceCell +clone vendor/once_cell/tests/it.rs /^ fn clone() {$/;" f module:sync +clone vendor/once_cell/tests/it.rs /^ fn clone() {$/;" f module:unsync +clone vendor/proc-macro2/src/rcvec.rs /^ fn clone(&self) -> Self {$/;" P implementation:RcVec +clone vendor/slab/src/lib.rs /^ fn clone(&self) -> Self {$/;" P implementation:Iter +clone vendor/smallvec/src/lib.rs /^ fn clone(&self) -> IntoIter {$/;" f +clone vendor/smallvec/src/lib.rs /^ fn clone(&self) -> SmallVec {$/;" f +clone vendor/syn/src/buffer.rs /^ fn clone(&self) -> Self {$/;" P implementation:Cursor +clone vendor/syn/src/error.rs /^ fn clone(&self) -> Self {$/;" P implementation:Error +clone vendor/syn/src/error.rs /^ fn clone(&self) -> Self {$/;" P implementation:ErrorMessage +clone vendor/syn/src/expr.rs /^ fn clone(&self) -> Self {$/;" P implementation:parsing::AllowStruct +clone vendor/syn/src/expr.rs /^ fn clone(&self) -> Self {$/;" P implementation:parsing::Precedence +clone vendor/syn/src/ext.rs /^ fn clone(&self) -> Self {$/;" P implementation:private::PeekFn +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Abi +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:AngleBracketedGenericArguments +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Arm +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:AttrStyle +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Attribute +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:BareFnArg +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:BinOp +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Binding +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Block +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:BoundLifetimes +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ConstParam +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Constraint +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Data +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:DataEnum +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:DataStruct +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:DataUnion +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:DeriveInput +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Expr +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprArray +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprAssign +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprAssignOp +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprAsync +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprAwait +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprBinary +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprBlock +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprBox +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprBreak +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprCall +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprCast +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprClosure +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprContinue +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprField +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprForLoop +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprGroup +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprIf +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprIndex +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprLet +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprLit +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprLoop +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprMacro +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprMatch +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprMethodCall +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprParen +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprPath +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprRange +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprReference +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprRepeat +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprReturn +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprStruct +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprTry +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprTryBlock +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprTuple +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprType +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprUnary +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprUnsafe +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprWhile +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ExprYield +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Field +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:FieldPat +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:FieldValue +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Fields +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:FieldsNamed +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:FieldsUnnamed +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:File +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:FnArg +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ForeignItem +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ForeignItemFn +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ForeignItemMacro +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ForeignItemStatic +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ForeignItemType +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:GenericArgument +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:GenericMethodArgument +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:GenericParam +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Generics +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ImplItem +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ImplItemConst +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ImplItemMacro +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ImplItemMethod +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ImplItemType +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Index +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Item +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemConst +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemEnum +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemExternCrate +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemFn +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemForeignMod +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemImpl +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemMacro +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemMacro2 +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemMod +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemStatic +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemStruct +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemTrait +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemTraitAlias +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemType +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemUnion +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ItemUse +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Label +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:LifetimeDef +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Lit +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:LitBool +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Local +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Macro +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:MacroDelimiter +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Member +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Meta +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:MetaList +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:MetaNameValue +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:MethodTurbofish +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:NestedMeta +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ParenthesizedGenericArguments +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Pat +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatBox +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatIdent +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatLit +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatMacro +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatOr +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatPath +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatRange +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatReference +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatRest +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatSlice +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatStruct +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatTuple +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatTupleStruct +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatType +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PatWild +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Path +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PathArguments +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PathSegment +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PredicateEq +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PredicateLifetime +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:PredicateType +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:QSelf +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:RangeLimits +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Receiver +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:ReturnType +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Signature +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Stmt +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TraitBound +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TraitBoundModifier +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TraitItem +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TraitItemConst +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TraitItemMacro +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TraitItemMethod +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TraitItemType +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Type +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeArray +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeBareFn +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeGroup +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeImplTrait +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeInfer +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeMacro +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeNever +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeParam +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeParamBound +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeParen +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypePath +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypePtr +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeReference +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeSlice +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeTraitObject +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:TypeTuple +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:UnOp +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:UseGlob +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:UseGroup +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:UseName +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:UsePath +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:UseRename +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:UseTree +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Variadic +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Variant +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:VisCrate +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:VisPublic +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:VisRestricted +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:Visibility +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:WhereClause +clone vendor/syn/src/gen/clone.rs /^ fn clone(&self) -> Self {$/;" P implementation:WherePredicate +clone vendor/syn/src/lib.rs /^ mod clone;$/;" n module:gen +clone vendor/syn/src/lifetime.rs /^ fn clone(&self) -> Self {$/;" P implementation:Lifetime +clone vendor/syn/src/lit.rs /^ fn clone(&self) -> Self {$/;" P implementation:LitFloatRepr +clone vendor/syn/src/lit.rs /^ fn clone(&self) -> Self {$/;" P implementation:LitIntRepr +clone vendor/syn/src/lit.rs /^ fn clone(&self) -> Self {$/;" P implementation:LitRepr +clone vendor/syn/src/parse.rs /^ fn clone(&self) -> Self {$/;" P implementation:StepCursor +clone vendor/syn/src/parse.rs /^ fn clone(&self) -> Self {$/;" P implementation:Unexpected +clone vendor/syn/src/punctuated.rs /^ fn clone(&self) -> Self {$/;" P implementation:Iter +clone vendor/syn/src/punctuated.rs /^ fn clone(&self) -> Self {$/;" P implementation:Pairs +clone vendor/syn/src/punctuated.rs /^ fn clone(&self) -> Self {$/;" P implementation:PrivateIter +clone vendor/syn/src/punctuated.rs /^ fn clone(&self) -> Self {$/;" f +clone vendor/syn/src/reserved.rs /^ fn clone(&self) -> Self {$/;" P implementation:Reserved +clone_arc_raw vendor/futures-task/src/waker.rs /^unsafe fn clone_arc_raw(data: *const ()) -> RawWaker {$/;" f +clone_area vendor/libc/src/unix/haiku/native.rs /^ pub fn clone_area($/;" f +clone_box vendor/syn/src/punctuated.rs /^ fn clone_box(&self) -> Box + 'a> {$/;" f +clone_box vendor/syn/src/punctuated.rs /^ fn clone_box(&self) -> Box + 'a>;$/;" P interface:IterTrait +clone_from vendor/once_cell/src/lib.rs /^ fn clone_from(&mut self, source: &Self) {$/;" P implementation:sync::OnceCell +clone_from vendor/once_cell/src/lib.rs /^ fn clone_from(&mut self, source: &Self) {$/;" P implementation:unsync::OnceCell +clone_from vendor/smallvec/src/lib.rs /^ fn clone_from(&mut self, source: &Self) {$/;" f +clone_ident_segment vendor/syn/src/attr.rs /^ fn clone_ident_segment(segment: &PathSegment) -> PathSegment {$/;" f method:Attribute::parse_meta +clone_raw vendor/futures-util/src/compat/compat01as03.rs /^ unsafe fn clone_raw(&self) -> NotifyHandle01 {$/;" P implementation:NotifyWaker +clone_rust vendor/syn/tests/repo/mod.rs /^pub fn clone_rust() {$/;" f +clonefile vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn clonefile(src: *const ::c_char, dst: *const ::c_char, flags: u32) -> ::c_int;$/;" f +clonefileat vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn clonefileat($/;" f +close lib/intl/loadmsgcat.c /^# define close /;" d file: +close r_bash/src/lib.rs /^ pub close: cookie_close_function_t,$/;" m struct:_IO_cookie_io_functions_t +close r_bash/src/lib.rs /^ pub fn close(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +close r_glob/src/lib.rs /^ pub fn close(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +close r_readline/src/lib.rs /^ pub close: cookie_close_function_t,$/;" m struct:_IO_cookie_io_functions_t +close r_readline/src/lib.rs /^ pub fn close(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +close vendor/futures-channel/src/mpsc/mod.rs /^ pub fn close(&mut self) {$/;" P implementation:Receiver +close vendor/futures-channel/src/mpsc/mod.rs /^ pub fn close(&mut self) {$/;" P implementation:UnboundedReceiver +close vendor/futures-channel/src/oneshot.rs /^ pub fn close(&mut self) {$/;" P implementation:Receiver +close vendor/futures-channel/tests/oneshot.rs /^fn close() {$/;" f +close vendor/futures-util/src/compat/compat03as01.rs /^ fn close(&mut self) -> Poll01<(), Self::SinkError> {$/;" f +close vendor/futures-util/src/io/mod.rs /^ fn close(&mut self) -> Close<'_, Self>$/;" P interface:AsyncWriteExt +close vendor/futures-util/src/io/mod.rs /^mod close;$/;" n +close vendor/futures-util/src/sink/mod.rs /^ fn close(&mut self) -> Close<'_, Self, Item>$/;" P interface:SinkExt +close vendor/futures-util/src/sink/mod.rs /^mod close;$/;" n +close vendor/libc/src/fuchsia/mod.rs /^ pub fn close(fd: ::c_int) -> ::c_int;$/;" f +close vendor/libc/src/solid/mod.rs /^ pub fn close(arg1: c_int) -> c_int;$/;" f +close vendor/libc/src/unix/mod.rs /^ pub fn close(fd: ::c_int) -> ::c_int;$/;" f +close vendor/libc/src/vxworks/mod.rs /^ pub fn close(fd: ::c_int) -> ::c_int;$/;" f +close vendor/libc/src/wasi.rs /^ pub fn close(fd: ::c_int) -> ::c_int;$/;" f +close vendor/libc/src/windows/mod.rs /^ pub fn close(fd: ::c_int) -> ::c_int;$/;" f +close vendor/libloading/src/os/unix/mod.rs /^ pub fn close(self) -> Result<(), crate::Error> {$/;" P implementation:Library +close vendor/libloading/src/os/windows/mod.rs /^ pub fn close(self) -> Result<(), crate::Error> {$/;" P implementation:Library +close vendor/libloading/src/safe.rs /^ pub fn close(self) -> Result<(), Error> {$/;" P implementation:Library +close vendor/nix/src/unistd.rs /^pub fn close(fd: RawFd) -> Result<()> {$/;" f +close_all_files execute_cmd.c /^close_all_files ()$/;" f typeref:typename:void +close_all_files r_bash/src/lib.rs /^ pub fn close_all_files();$/;" f +close_buffered_fd input.c /^close_buffered_fd (fd)$/;" f +close_buffered_fd r_bash/src/lib.rs /^ pub fn close_buffered_fd(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +close_buffered_stream input.c /^close_buffered_stream (bp)$/;" f +close_buffered_stream r_bash/src/lib.rs /^ pub fn close_buffered_stream(arg1: *mut BUFFERED_STREAM) -> ::std::os::raw::c_int;$/;" f +close_channel vendor/futures-channel/src/mpsc/mod.rs /^ fn close_channel(&self) {$/;" P implementation:BoundedSenderInner +close_channel vendor/futures-channel/src/mpsc/mod.rs /^ fn close_channel(&self) {$/;" P implementation:UnboundedSenderInner +close_channel vendor/futures-channel/src/mpsc/mod.rs /^ pub fn close_channel(&mut self) {$/;" P implementation:Sender +close_channel vendor/futures-channel/src/mpsc/mod.rs /^ pub fn close_channel(&self) {$/;" P implementation:UnboundedSender +close_fd_bitmap execute_cmd.c /^close_fd_bitmap (fdbp)$/;" f +close_fd_bitmap r_bash/src/lib.rs /^ pub fn close_fd_bitmap(arg1: *mut fd_bitmap);$/;" f +close_new_fifos r_bash/src/lib.rs /^ pub fn close_new_fifos(arg1: *mut ::std::os::raw::c_void, arg2: ::std::os::raw::c_int);$/;" f +close_new_fifos subst.c /^close_new_fifos (list, lsize)$/;" f +close_pgrp_pipe jobs.c /^close_pgrp_pipe ()$/;" f typeref:typename:void +close_pgrp_pipe r_bash/src/lib.rs /^ pub fn close_pgrp_pipe();$/;" f +close_pgrp_pipe r_jobs/src/lib.rs /^pub unsafe extern "C" fn close_pgrp_pipe() {$/;" f +close_pipes execute_cmd.c /^close_pipes (in, out)$/;" f file: +close_port vendor/libc/src/unix/haiku/native.rs /^ pub fn close_port(port: port_id) -> status_t;$/;" f +close_rx vendor/futures-channel/src/oneshot.rs /^ fn close_rx(&self) {$/;" P implementation:Inner +close_span_of_group vendor/syn/src/buffer.rs /^pub(crate) fn close_span_of_group(cursor: Cursor) -> Span {$/;" f +close_started vendor/futures-util/src/compat/compat01as03.rs /^ pub(crate) close_started: bool,$/;" m struct:Compat01As03Sink +close_wakes vendor/futures-channel/tests/oneshot.rs /^fn close_wakes() {$/;" f +closed_immediately vendor/proc-macro2/tests/comments.rs /^fn closed_immediately() {$/;" f +closedir r_bash/src/lib.rs /^ pub fn closedir(__dirp: *mut DIR) -> ::std::os::raw::c_int;$/;" f +closedir r_glob/src/lib.rs /^ pub fn closedir();$/;" f +closedir r_readline/src/lib.rs /^ pub fn closedir(__dirp: *mut DIR) -> ::std::os::raw::c_int;$/;" f +closedir vendor/libc/src/fuchsia/mod.rs /^ pub fn closedir(dirp: *mut ::DIR) -> ::c_int;$/;" f +closedir vendor/libc/src/unix/mod.rs /^ pub fn closedir(dirp: *mut ::DIR) -> ::c_int;$/;" f +closedir vendor/libc/src/vxworks/mod.rs /^ pub fn closedir(ptr: *mut ::DIR) -> ::c_int;$/;" f +closedir vendor/libc/src/wasi.rs /^ pub fn closedir(dirp: *mut ::DIR) -> ::c_int;$/;" f +closelog vendor/libc/src/fuchsia/mod.rs /^ pub fn closelog();$/;" f +closelog vendor/libc/src/unix/mod.rs /^ pub fn closelog();$/;" f +closelog vendor/libc/src/vxworks/mod.rs /^ pub fn closelog();$/;" f +closesocket vendor/libc/src/unix/newlib/mod.rs /^ pub fn closesocket(sockfd: ::c_int) -> ::c_int;$/;" f +closesocket vendor/winapi/src/um/winsock2.rs /^ pub fn closesocket($/;" f +closure_arg vendor/syn/src/expr.rs /^ fn closure_arg(input: ParseStream) -> Result {$/;" f module:parsing +cm_arith builtins_rust/cd/src/lib.rs /^ cm_arith,$/;" e enum:command_type +cm_arith builtins_rust/common/src/lib.rs /^ cm_arith,$/;" e enum:command_type +cm_arith builtins_rust/complete/src/lib.rs /^ cm_arith,$/;" e enum:command_type +cm_arith builtins_rust/declare/src/lib.rs /^ cm_arith,$/;" e enum:command_type +cm_arith builtins_rust/fc/src/lib.rs /^ cm_arith,$/;" e enum:command_type +cm_arith builtins_rust/fg_bg/src/lib.rs /^ cm_arith,$/;" e enum:command_type +cm_arith builtins_rust/getopts/src/lib.rs /^ cm_arith,$/;" e enum:command_type +cm_arith builtins_rust/jobs/src/lib.rs /^ cm_arith,$/;" e enum:command_type +cm_arith builtins_rust/pushd/src/lib.rs /^ cm_arith,$/;" e enum:command_type +cm_arith builtins_rust/source/src/lib.rs /^ cm_arith,$/;" e enum:command_type +cm_arith builtins_rust/type/src/lib.rs /^ cm_arith,$/;" e enum:command_type +cm_arith command.h /^ cm_arith, cm_cond, cm_arith_for, cm_subshell, cm_coproc };$/;" e enum:command_type +cm_arith_for builtins_rust/cd/src/lib.rs /^ cm_arith_for,$/;" e enum:command_type +cm_arith_for builtins_rust/common/src/lib.rs /^ cm_arith_for,$/;" e enum:command_type +cm_arith_for builtins_rust/complete/src/lib.rs /^ cm_arith_for,$/;" e enum:command_type +cm_arith_for builtins_rust/declare/src/lib.rs /^ cm_arith_for,$/;" e enum:command_type +cm_arith_for builtins_rust/fc/src/lib.rs /^ cm_arith_for,$/;" e enum:command_type +cm_arith_for builtins_rust/fg_bg/src/lib.rs /^ cm_arith_for,$/;" e enum:command_type +cm_arith_for builtins_rust/getopts/src/lib.rs /^ cm_arith_for,$/;" e enum:command_type +cm_arith_for builtins_rust/jobs/src/lib.rs /^ cm_arith_for,$/;" e enum:command_type +cm_arith_for builtins_rust/pushd/src/lib.rs /^ cm_arith_for,$/;" e enum:command_type +cm_arith_for builtins_rust/source/src/lib.rs /^ cm_arith_for,$/;" e enum:command_type +cm_arith_for builtins_rust/type/src/lib.rs /^ cm_arith_for,$/;" e enum:command_type +cm_arith_for command.h /^ cm_arith, cm_cond, cm_arith_for, cm_subshell, cm_coproc };$/;" e enum:command_type +cm_case builtins_rust/cd/src/lib.rs /^ cm_case,$/;" e enum:command_type +cm_case builtins_rust/common/src/lib.rs /^ cm_case,$/;" e enum:command_type +cm_case builtins_rust/complete/src/lib.rs /^ cm_case,$/;" e enum:command_type +cm_case builtins_rust/declare/src/lib.rs /^ cm_case,$/;" e enum:command_type +cm_case builtins_rust/fc/src/lib.rs /^ cm_case,$/;" e enum:command_type +cm_case builtins_rust/fg_bg/src/lib.rs /^ cm_case,$/;" e enum:command_type +cm_case builtins_rust/getopts/src/lib.rs /^ cm_case,$/;" e enum:command_type +cm_case builtins_rust/jobs/src/lib.rs /^ cm_case,$/;" e enum:command_type +cm_case builtins_rust/pushd/src/lib.rs /^ cm_case,$/;" e enum:command_type +cm_case builtins_rust/source/src/lib.rs /^ cm_case,$/;" e enum:command_type +cm_case builtins_rust/type/src/lib.rs /^ cm_case,$/;" e enum:command_type +cm_case command.h /^enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,$/;" e enum:command_type +cm_cond builtins_rust/cd/src/lib.rs /^ cm_cond,$/;" e enum:command_type +cm_cond builtins_rust/common/src/lib.rs /^ cm_cond,$/;" e enum:command_type +cm_cond builtins_rust/complete/src/lib.rs /^ cm_cond,$/;" e enum:command_type +cm_cond builtins_rust/declare/src/lib.rs /^ cm_cond,$/;" e enum:command_type +cm_cond builtins_rust/fc/src/lib.rs /^ cm_cond,$/;" e enum:command_type +cm_cond builtins_rust/fg_bg/src/lib.rs /^ cm_cond,$/;" e enum:command_type +cm_cond builtins_rust/getopts/src/lib.rs /^ cm_cond,$/;" e enum:command_type +cm_cond builtins_rust/jobs/src/lib.rs /^ cm_cond,$/;" e enum:command_type +cm_cond builtins_rust/pushd/src/lib.rs /^ cm_cond,$/;" e enum:command_type +cm_cond builtins_rust/source/src/lib.rs /^ cm_cond,$/;" e enum:command_type +cm_cond builtins_rust/type/src/lib.rs /^ cm_cond,$/;" e enum:command_type +cm_cond command.h /^ cm_arith, cm_cond, cm_arith_for, cm_subshell, cm_coproc };$/;" e enum:command_type +cm_connection builtins_rust/cd/src/lib.rs /^ cm_connection,$/;" e enum:command_type +cm_connection builtins_rust/common/src/lib.rs /^ cm_connection,$/;" e enum:command_type +cm_connection builtins_rust/complete/src/lib.rs /^ cm_connection,$/;" e enum:command_type +cm_connection builtins_rust/declare/src/lib.rs /^ cm_connection,$/;" e enum:command_type +cm_connection builtins_rust/fc/src/lib.rs /^ cm_connection,$/;" e enum:command_type +cm_connection builtins_rust/fg_bg/src/lib.rs /^ cm_connection,$/;" e enum:command_type +cm_connection builtins_rust/getopts/src/lib.rs /^ cm_connection,$/;" e enum:command_type +cm_connection builtins_rust/jobs/src/lib.rs /^ cm_connection,$/;" e enum:command_type +cm_connection builtins_rust/pushd/src/lib.rs /^ cm_connection,$/;" e enum:command_type +cm_connection builtins_rust/source/src/lib.rs /^ cm_connection,$/;" e enum:command_type +cm_connection builtins_rust/type/src/lib.rs /^ cm_connection,$/;" e enum:command_type +cm_connection command.h /^ cm_connection, cm_function_def, cm_until, cm_group,$/;" e enum:command_type +cm_coproc builtins_rust/cd/src/lib.rs /^ cm_coproc,$/;" e enum:command_type +cm_coproc builtins_rust/common/src/lib.rs /^ cm_coproc,$/;" e enum:command_type +cm_coproc builtins_rust/complete/src/lib.rs /^ cm_coproc,$/;" e enum:command_type +cm_coproc builtins_rust/declare/src/lib.rs /^ cm_coproc,$/;" e enum:command_type +cm_coproc builtins_rust/fc/src/lib.rs /^ cm_coproc,$/;" e enum:command_type +cm_coproc builtins_rust/fg_bg/src/lib.rs /^ cm_coproc,$/;" e enum:command_type +cm_coproc builtins_rust/getopts/src/lib.rs /^ cm_coproc,$/;" e enum:command_type +cm_coproc builtins_rust/jobs/src/lib.rs /^ cm_coproc,$/;" e enum:command_type +cm_coproc builtins_rust/pushd/src/lib.rs /^ cm_coproc,$/;" e enum:command_type +cm_coproc builtins_rust/source/src/lib.rs /^ cm_coproc,$/;" e enum:command_type +cm_coproc builtins_rust/type/src/lib.rs /^ cm_coproc,$/;" e enum:command_type +cm_coproc command.h /^ cm_arith, cm_cond, cm_arith_for, cm_subshell, cm_coproc };$/;" e enum:command_type +cm_for builtins_rust/cd/src/lib.rs /^ cm_for,$/;" e enum:command_type +cm_for builtins_rust/common/src/lib.rs /^ cm_for,$/;" e enum:command_type +cm_for builtins_rust/complete/src/lib.rs /^ cm_for,$/;" e enum:command_type +cm_for builtins_rust/declare/src/lib.rs /^ cm_for,$/;" e enum:command_type +cm_for builtins_rust/fc/src/lib.rs /^ cm_for,$/;" e enum:command_type +cm_for builtins_rust/fg_bg/src/lib.rs /^ cm_for,$/;" e enum:command_type +cm_for builtins_rust/getopts/src/lib.rs /^ cm_for,$/;" e enum:command_type +cm_for builtins_rust/jobs/src/lib.rs /^ cm_for,$/;" e enum:command_type +cm_for builtins_rust/pushd/src/lib.rs /^ cm_for,$/;" e enum:command_type +cm_for builtins_rust/source/src/lib.rs /^ cm_for,$/;" e enum:command_type +cm_for builtins_rust/type/src/lib.rs /^ cm_for,$/;" e enum:command_type +cm_for command.h /^enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,$/;" e enum:command_type +cm_function_def builtins_rust/cd/src/lib.rs /^ cm_function_def,$/;" e enum:command_type +cm_function_def builtins_rust/common/src/lib.rs /^ cm_function_def,$/;" e enum:command_type +cm_function_def builtins_rust/complete/src/lib.rs /^ cm_function_def,$/;" e enum:command_type +cm_function_def builtins_rust/declare/src/lib.rs /^ cm_function_def,$/;" e enum:command_type +cm_function_def builtins_rust/fc/src/lib.rs /^ cm_function_def,$/;" e enum:command_type +cm_function_def builtins_rust/fg_bg/src/lib.rs /^ cm_function_def,$/;" e enum:command_type +cm_function_def builtins_rust/getopts/src/lib.rs /^ cm_function_def,$/;" e enum:command_type +cm_function_def builtins_rust/jobs/src/lib.rs /^ cm_function_def,$/;" e enum:command_type +cm_function_def builtins_rust/pushd/src/lib.rs /^ cm_function_def,$/;" e enum:command_type +cm_function_def builtins_rust/source/src/lib.rs /^ cm_function_def,$/;" e enum:command_type +cm_function_def builtins_rust/type/src/lib.rs /^ cm_function_def,$/;" e enum:command_type +cm_function_def command.h /^ cm_connection, cm_function_def, cm_until, cm_group,$/;" e enum:command_type +cm_group builtins_rust/cd/src/lib.rs /^ cm_group,$/;" e enum:command_type +cm_group builtins_rust/common/src/lib.rs /^ cm_group,$/;" e enum:command_type +cm_group builtins_rust/complete/src/lib.rs /^ cm_group,$/;" e enum:command_type +cm_group builtins_rust/declare/src/lib.rs /^ cm_group,$/;" e enum:command_type +cm_group builtins_rust/fc/src/lib.rs /^ cm_group,$/;" e enum:command_type +cm_group builtins_rust/fg_bg/src/lib.rs /^ cm_group,$/;" e enum:command_type +cm_group builtins_rust/getopts/src/lib.rs /^ cm_group,$/;" e enum:command_type +cm_group builtins_rust/jobs/src/lib.rs /^ cm_group,$/;" e enum:command_type +cm_group builtins_rust/pushd/src/lib.rs /^ cm_group,$/;" e enum:command_type +cm_group builtins_rust/source/src/lib.rs /^ cm_group,$/;" e enum:command_type +cm_group builtins_rust/type/src/lib.rs /^ cm_group,$/;" e enum:command_type +cm_group command.h /^ cm_connection, cm_function_def, cm_until, cm_group,$/;" e enum:command_type +cm_if builtins_rust/cd/src/lib.rs /^ cm_if,$/;" e enum:command_type +cm_if builtins_rust/common/src/lib.rs /^ cm_if,$/;" e enum:command_type +cm_if builtins_rust/complete/src/lib.rs /^ cm_if,$/;" e enum:command_type +cm_if builtins_rust/declare/src/lib.rs /^ cm_if,$/;" e enum:command_type +cm_if builtins_rust/fc/src/lib.rs /^ cm_if,$/;" e enum:command_type +cm_if builtins_rust/fg_bg/src/lib.rs /^ cm_if,$/;" e enum:command_type +cm_if builtins_rust/getopts/src/lib.rs /^ cm_if,$/;" e enum:command_type +cm_if builtins_rust/jobs/src/lib.rs /^ cm_if,$/;" e enum:command_type +cm_if builtins_rust/pushd/src/lib.rs /^ cm_if,$/;" e enum:command_type +cm_if builtins_rust/source/src/lib.rs /^ cm_if,$/;" e enum:command_type +cm_if builtins_rust/type/src/lib.rs /^ cm_if,$/;" e enum:command_type +cm_if command.h /^enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,$/;" e enum:command_type +cm_select builtins_rust/cd/src/lib.rs /^ cm_select,$/;" e enum:command_type +cm_select builtins_rust/common/src/lib.rs /^ cm_select,$/;" e enum:command_type +cm_select builtins_rust/complete/src/lib.rs /^ cm_select,$/;" e enum:command_type +cm_select builtins_rust/declare/src/lib.rs /^ cm_select,$/;" e enum:command_type +cm_select builtins_rust/fc/src/lib.rs /^ cm_select,$/;" e enum:command_type +cm_select builtins_rust/fg_bg/src/lib.rs /^ cm_select,$/;" e enum:command_type +cm_select builtins_rust/getopts/src/lib.rs /^ cm_select,$/;" e enum:command_type +cm_select builtins_rust/jobs/src/lib.rs /^ cm_select,$/;" e enum:command_type +cm_select builtins_rust/pushd/src/lib.rs /^ cm_select,$/;" e enum:command_type +cm_select builtins_rust/source/src/lib.rs /^ cm_select,$/;" e enum:command_type +cm_select builtins_rust/type/src/lib.rs /^ cm_select,$/;" e enum:command_type +cm_select command.h /^enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,$/;" e enum:command_type +cm_simple builtins_rust/cd/src/lib.rs /^ cm_simple,$/;" e enum:command_type +cm_simple builtins_rust/common/src/lib.rs /^ cm_simple,$/;" e enum:command_type +cm_simple builtins_rust/complete/src/lib.rs /^ cm_simple,$/;" e enum:command_type +cm_simple builtins_rust/declare/src/lib.rs /^ cm_simple,$/;" e enum:command_type +cm_simple builtins_rust/fc/src/lib.rs /^ cm_simple,$/;" e enum:command_type +cm_simple builtins_rust/fg_bg/src/lib.rs /^ cm_simple,$/;" e enum:command_type +cm_simple builtins_rust/getopts/src/lib.rs /^ cm_simple,$/;" e enum:command_type +cm_simple builtins_rust/jobs/src/lib.rs /^ cm_simple,$/;" e enum:command_type +cm_simple builtins_rust/pushd/src/lib.rs /^ cm_simple,$/;" e enum:command_type +cm_simple builtins_rust/source/src/lib.rs /^ cm_simple,$/;" e enum:command_type +cm_simple builtins_rust/type/src/lib.rs /^ cm_simple,$/;" e enum:command_type +cm_simple command.h /^enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,$/;" e enum:command_type +cm_subshell builtins_rust/cd/src/lib.rs /^ cm_subshell,$/;" e enum:command_type +cm_subshell builtins_rust/common/src/lib.rs /^ cm_subshell,$/;" e enum:command_type +cm_subshell builtins_rust/complete/src/lib.rs /^ cm_subshell,$/;" e enum:command_type +cm_subshell builtins_rust/declare/src/lib.rs /^ cm_subshell,$/;" e enum:command_type +cm_subshell builtins_rust/fc/src/lib.rs /^ cm_subshell,$/;" e enum:command_type +cm_subshell builtins_rust/fg_bg/src/lib.rs /^ cm_subshell,$/;" e enum:command_type +cm_subshell builtins_rust/getopts/src/lib.rs /^ cm_subshell,$/;" e enum:command_type +cm_subshell builtins_rust/jobs/src/lib.rs /^ cm_subshell,$/;" e enum:command_type +cm_subshell builtins_rust/pushd/src/lib.rs /^ cm_subshell,$/;" e enum:command_type +cm_subshell builtins_rust/source/src/lib.rs /^ cm_subshell,$/;" e enum:command_type +cm_subshell builtins_rust/type/src/lib.rs /^ cm_subshell,$/;" e enum:command_type +cm_subshell command.h /^ cm_arith, cm_cond, cm_arith_for, cm_subshell, cm_coproc };$/;" e enum:command_type +cm_until builtins_rust/cd/src/lib.rs /^ cm_until,$/;" e enum:command_type +cm_until builtins_rust/common/src/lib.rs /^ cm_until,$/;" e enum:command_type +cm_until builtins_rust/complete/src/lib.rs /^ cm_until,$/;" e enum:command_type +cm_until builtins_rust/declare/src/lib.rs /^ cm_until,$/;" e enum:command_type +cm_until builtins_rust/fc/src/lib.rs /^ cm_until,$/;" e enum:command_type +cm_until builtins_rust/fg_bg/src/lib.rs /^ cm_until,$/;" e enum:command_type +cm_until builtins_rust/getopts/src/lib.rs /^ cm_until,$/;" e enum:command_type +cm_until builtins_rust/jobs/src/lib.rs /^ cm_until,$/;" e enum:command_type +cm_until builtins_rust/pushd/src/lib.rs /^ cm_until,$/;" e enum:command_type +cm_until builtins_rust/source/src/lib.rs /^ cm_until,$/;" e enum:command_type +cm_until builtins_rust/type/src/lib.rs /^ cm_until,$/;" e enum:command_type +cm_until command.h /^ cm_connection, cm_function_def, cm_until, cm_group,$/;" e enum:command_type +cm_while builtins_rust/cd/src/lib.rs /^ cm_while,$/;" e enum:command_type +cm_while builtins_rust/common/src/lib.rs /^ cm_while,$/;" e enum:command_type +cm_while builtins_rust/complete/src/lib.rs /^ cm_while,$/;" e enum:command_type +cm_while builtins_rust/declare/src/lib.rs /^ cm_while,$/;" e enum:command_type +cm_while builtins_rust/fc/src/lib.rs /^ cm_while,$/;" e enum:command_type +cm_while builtins_rust/fg_bg/src/lib.rs /^ cm_while,$/;" e enum:command_type +cm_while builtins_rust/getopts/src/lib.rs /^ cm_while,$/;" e enum:command_type +cm_while builtins_rust/jobs/src/lib.rs /^ cm_while,$/;" e enum:command_type +cm_while builtins_rust/pushd/src/lib.rs /^ cm_while,$/;" e enum:command_type +cm_while builtins_rust/source/src/lib.rs /^ cm_while,$/;" e enum:command_type +cm_while builtins_rust/type/src/lib.rs /^ cm_while,$/;" e enum:command_type +cm_while command.h /^enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,$/;" e enum:command_type +cmd builtins_rust/ulimit/src/lib.rs /^ cmd: i32,$/;" m struct:_cmd +cmd_error_table error.c /^static const char * const cmd_error_table[] = {$/;" v typeref:typename:const char * const[] file: +cmd_init make_cmd.c /^cmd_init ()$/;" f typeref:typename:void +cmd_init r_bash/src/lib.rs /^ pub fn cmd_init();$/;" f +cmd_name builtins_rust/jobs/src/lib.rs /^fn cmd_name() -> *const u8 {$/;" f +cmdlist builtins_rust/ulimit/src/lib.rs /^static mut cmdlist: *mut ULCMD = 0 as *const ULCMD as *mut ULCMD;$/;" v +cmdlistsz builtins_rust/ulimit/src/lib.rs /^static mut cmdlistsz: i32 = 0;$/;" v +cmp vendor/futures-util/src/stream/futures_ordered.rs /^ fn cmp(&self, other: &Self) -> Ordering {$/;" P implementation:OrderWrapper +cmp vendor/memchr/src/memmem/twoway.rs /^ fn cmp(self, current: u8, candidate: u8) -> SuffixOrdering {$/;" P implementation:SuffixKind +cmp vendor/nix/src/sys/time.rs /^ fn cmp(&self, other: &TimeSpec) -> cmp::Ordering {$/;" P implementation:TimeSpec +cmp vendor/nix/src/sys/time.rs /^ fn cmp(&self, other: &TimeVal) -> cmp::Ordering {$/;" P implementation:TimeVal +cmp vendor/proc-macro2/src/lib.rs /^ fn cmp(&self, other: &Ident) -> Ordering {$/;" P implementation:Ident +cmp vendor/proc-macro2/src/lib.rs /^ fn cmp(&self, other: &Self) -> Ordering {$/;" P implementation:LineColumn +cmp vendor/smallvec/src/lib.rs /^ fn cmp(&self, other: &SmallVec) -> cmp::Ordering {$/;" f +cmp vendor/syn/src/lifetime.rs /^ fn cmp(&self, other: &Lifetime) -> Ordering {$/;" P implementation:Lifetime +cmp vendor/tinystr/src/tinystr16.rs /^ fn cmp(&self, other: &Self) -> Ordering {$/;" P implementation:TinyStr16 +cmp vendor/tinystr/src/tinystr4.rs /^ fn cmp(&self, other: &Self) -> Ordering {$/;" P implementation:TinyStr4 +cmp vendor/tinystr/src/tinystr8.rs /^ fn cmp(&self, other: &Self) -> Ordering {$/;" P implementation:TinyStr8 +cmp_ref vendor/elsa/examples/arena.rs /^fn cmp_ref(x: &T, y: &T) -> bool {$/;" f +cmp_two builtins_rust/setattr/src/lib.rs /^unsafe fn cmp_two(a: usize, b: usize) -> bool {$/;" f +cmpeq vendor/memchr/src/memmem/vector.rs /^ unsafe fn cmpeq(self, vector2: Self) -> __m128i {$/;" P implementation:x86sse::__m128i +cmpeq vendor/memchr/src/memmem/vector.rs /^ unsafe fn cmpeq(self, vector2: Self) -> __m256i {$/;" P implementation:x86avx::__m256i +cmpeq vendor/memchr/src/memmem/vector.rs /^ unsafe fn cmpeq(self, vector2: Self) -> v128 {$/;" P implementation:wasm_simd128::v128 +cmpeq vendor/memchr/src/memmem/vector.rs /^ unsafe fn cmpeq(self, vector2: Self) -> Self;$/;" P interface:Vector +cnt lib/intl/dcigettext.c /^ int cnt;$/;" v typeref:typename:int +cnt vendor/futures-executor/src/thread_pool.rs /^ cnt: AtomicUsize,$/;" m struct:PoolState +code lib/glob/collsyms.h /^ CHAR code;$/;" m struct:_COLLSYM typeref:typename:CHAR +code r_glob/src/lib.rs /^ pub code: ::std::os::raw::c_uchar,$/;" m struct:_COLLSYM +code target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" n object:outputs.15729799797837862367 +code target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" n object:outputs.4614504638168534921 +codeset lib/intl/gettextP.h /^ char *codeset;$/;" m struct:binding typeref:typename:char * +codeset_cntr lib/intl/gettextP.h /^ int codeset_cntr; \/* Incremented each time codeset changes. *\/$/;" m struct:binding typeref:typename:int +codeset_cntr lib/intl/gettextP.h /^ int codeset_cntr;$/;" m struct:loaded_domain typeref:typename:int +collatz vendor/fluent-fallback/examples/simple-fallback.rs /^fn collatz(n: isize) -> isize {$/;" f +collatz vendor/fluent-resmgr/examples/simple-resmgr.rs /^fn collatz(n: isize) -> isize {$/;" f +collect vendor/futures-util/src/stream/stream/mod.rs /^ fn collect>(self) -> Collect$/;" P interface:StreamExt +collect vendor/futures-util/src/stream/stream/mod.rs /^mod collect;$/;" n +collect_collects vendor/futures/tests/future_join_all.rs /^fn collect_collects() {$/;" f +collect_collects vendor/futures/tests/future_try_join_all.rs /^fn collect_collects() {$/;" f +collect_exprs vendor/syn/tests/test_precedence.rs /^fn collect_exprs(file: syn::File) -> Vec {$/;" f +collequiv lib/glob/smatch.c /^# define collequiv(/;" d file: +collequiv lib/glob/smatch.c /^collequiv (c, equiv)$/;" f file: +collequiv_wc lib/glob/smatch.c /^collequiv_wc (c, equiv)$/;" f file: +collsym lib/glob/smatch.c /^collsym (s, len)$/;" f file: +collwcsym lib/glob/smatch.c /^collwcsym (s, len)$/;" f file: +colon.o builtins/Makefile.in /^colon.o: $(BASHINCDIR)\/maxpath.h ..\/pathnames.h$/;" t +colon.o builtins/Makefile.in /^colon.o: $(srcdir)\/common.h$/;" t +colon.o builtins/Makefile.in /^colon.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h $(topdir)\/error.h$/;" t +colon.o builtins/Makefile.in /^colon.o: $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/subst.h $(topdir)\/externs.h$/;" t +colon.o builtins/Makefile.in /^colon.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +colon.o builtins/Makefile.in /^colon.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h /;" t +colon.o builtins/Makefile.in /^colon.o: colon.def$/;" t +colon_token vendor/syn/src/item.rs /^ colon_token: Option,$/;" m struct:parsing::FlexibleItemType +color_buf lib/readline/parse-colors.h /^static char *color_buf;$/;" v typeref:typename:char * +color_buf r_readline/src/lib.rs /^ pub static mut color_buf: *mut ::std::os::raw::c_char;$/;" v +colored_prefix_end lib/readline/complete.c /^colored_prefix_end (void)$/;" f typeref:typename:void file: +colored_prefix_start lib/readline/complete.c /^colored_prefix_start (void)$/;" f typeref:typename:int file: +colored_stat_end lib/readline/complete.c /^colored_stat_end (void)$/;" f typeref:typename:void file: +colored_stat_start lib/readline/complete.c /^colored_stat_start (const char *filename)$/;" f typeref:typename:int file: +colors.o lib/readline/Makefile.in /^colors.o: ${BUILD_DIR}\/config.h colors.h$/;" t +colors.o lib/readline/Makefile.in /^colors.o: ansi_stdlib.h posixstat.h$/;" t +colors.o lib/readline/Makefile.in /^colors.o: colors.c$/;" t +colors.o lib/readline/Makefile.in /^colors.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h$/;" t +colors.o lib/readline/Makefile.in /^colors.o: rlconf.h$/;" t +colors.o lib/readline/Makefile.in /^colors.o: rlmbutil.h$/;" t +colors.o lib/readline/Makefile.in /^colors.o: rlprivate.h$/;" t +colors.o lib/readline/Makefile.in /^colors.o: xmalloc.h$/;" t +colspan support/man2html.c /^ int size, align, valign, colspan, rowspan, font, vleft, vright, space,$/;" m struct:TABLEITEM typeref:typename:int file: +column vendor/proc-macro2/src/fallback.rs /^ pub column: usize,$/;" m struct:LineColumn +column vendor/proc-macro2/src/lib.rs /^ pub column: usize,$/;" m struct:LineColumn +column vendor/proc-macro2/src/wrapper.rs /^ pub column: usize,$/;" m struct:LineColumn +com_cd lib/readline/examples/fileman.c /^com_cd (arg)$/;" f +com_delete lib/readline/examples/fileman.c /^com_delete (arg)$/;" f +com_help lib/readline/examples/fileman.c /^com_help (arg)$/;" f +com_list lib/readline/examples/fileman.c /^com_list (arg)$/;" f +com_pwd lib/readline/examples/fileman.c /^com_pwd (ignore)$/;" f +com_quit lib/readline/examples/fileman.c /^com_quit (arg)$/;" f +com_rename lib/readline/examples/fileman.c /^com_rename (arg)$/;" f +com_stat lib/readline/examples/fileman.c /^com_stat (arg)$/;" f +com_view lib/readline/examples/fileman.c /^com_view (arg)$/;" f +combaseapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "combaseapi")] pub mod combaseapi;$/;" n +combine vendor/stdext/src/option.rs /^ fn combine() {$/;" f module:tests +combine vendor/stdext/src/option.rs /^ fn combine(self, other: Option) -> Option<(T, U)> {$/;" P implementation:Option +combine vendor/stdext/src/option.rs /^ fn combine(self, other: Option) -> Option<(T, U)>;$/;" P interface:OptionExt +combine vendor/stdext/src/result.rs /^ fn combine() {$/;" f module:tests +combine vendor/stdext/src/result.rs /^ fn combine(self, other: Result) -> Result<(T, U), E> {$/;" P implementation:Result +combine vendor/stdext/src/result.rs /^ fn combine(self, other: Result) -> Result<(T, U), E>;$/;" P interface:ResultExt +combine vendor/syn/src/error.rs /^ pub fn combine(&mut self, another: Error) {$/;" P implementation:Error +combine_with vendor/stdext/src/option.rs /^ fn combine_with() {$/;" f module:tests +combine_with vendor/stdext/src/option.rs /^ fn combine_with(self, other: Option, f: F) -> Option$/;" P implementation:Option +combine_with vendor/stdext/src/option.rs /^ fn combine_with(self, other: Option, f: F) -> Option$/;" P interface:OptionExt +combine_with vendor/stdext/src/result.rs /^ fn combine_with() {$/;" f module:tests +combine_with vendor/stdext/src/result.rs /^ fn combine_with(self, other: Result, f: F) -> Result$/;" P implementation:Result +combine_with vendor/stdext/src/result.rs /^ fn combine_with(self, other: Result, f: F) -> Result$/;" P interface:ResultExt +coml2api vendor/winapi/src/um/mod.rs /^#[cfg(feature = "coml2api")] pub mod coml2api;$/;" n +command builtins_rust/cd/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/cd/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/cd/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/cd/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/cd/src/lib.rs /^ command: *mut c_char,$/;" m struct:PROCESS +command builtins_rust/command/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/command/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/command/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/command/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/command/src/lib.rs /^pub struct command {$/;" s +command builtins_rust/common/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/common/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/common/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/common/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/common/src/lib.rs /^ pub command: *mut c_char,$/;" m struct:process +command builtins_rust/complete/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/complete/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/complete/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/complete/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/complete/src/lib.rs /^ command: *mut c_char,$/;" m struct:COMPSPEC +command builtins_rust/declare/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/declare/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/declare/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/declare/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/fc/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/fc/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/fc/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/fc/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/fc/src/lib.rs /^ command: *mut c_char,$/;" m struct:PROCESS +command builtins_rust/fg_bg/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/fg_bg/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/fg_bg/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/fg_bg/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/fg_bg/src/lib.rs /^ command: *mut c_char,$/;" m struct:PROCESS +command builtins_rust/getopts/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/getopts/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/getopts/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/getopts/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/jobs/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/jobs/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/jobs/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/jobs/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/jobs/src/lib.rs /^ command: *mut c_char,$/;" m struct:PROCESS +command builtins_rust/kill/src/intercdep.rs /^ pub command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/kill/src/intercdep.rs /^ pub command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/kill/src/intercdep.rs /^ pub command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/kill/src/intercdep.rs /^ pub command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/kill/src/intercdep.rs /^ pub command: *mut c_char,$/;" m struct:process +command builtins_rust/kill/src/intercdep.rs /^pub struct command {$/;" s +command builtins_rust/pushd/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/pushd/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/pushd/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/pushd/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/setattr/src/intercdep.rs /^ pub command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/setattr/src/intercdep.rs /^ pub command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/setattr/src/intercdep.rs /^ pub command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/setattr/src/intercdep.rs /^ pub command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/setattr/src/intercdep.rs /^ pub command: *mut c_char,$/;" m struct:process +command builtins_rust/setattr/src/intercdep.rs /^pub struct command {$/;" s +command builtins_rust/source/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/source/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/source/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/source/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:subshell_com +command builtins_rust/type/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:coproc_com +command builtins_rust/type/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:function_def +command builtins_rust/type/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:group_com +command builtins_rust/type/src/lib.rs /^ command: *mut COMMAND,$/;" m struct:subshell_com +command command.h /^ COMMAND *command; \/* The parsed execution tree. *\/$/;" m struct:function_def typeref:typename:COMMAND * +command command.h /^ COMMAND *command;$/;" m struct:coproc_com typeref:typename:COMMAND * +command command.h /^ COMMAND *command;$/;" m struct:group_com typeref:typename:COMMAND * +command command.h /^ COMMAND *command;$/;" m struct:subshell_com typeref:typename:COMMAND * +command command.h /^typedef struct command {$/;" s +command jobs.h /^ char *command; \/* The particular program that is running. *\/$/;" m struct:process typeref:typename:char * +command parse.y /^command: simple_command$/;" l +command pcomplete.h /^ char *command;$/;" m struct:compspec typeref:typename:char * +command r_bash/src/lib.rs /^ pub command: *mut ::std::os::raw::c_char,$/;" m struct:compspec +command r_bash/src/lib.rs /^ pub command: *mut ::std::os::raw::c_char,$/;" m struct:process +command r_bash/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:coproc_com +command r_bash/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:function_def +command r_bash/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:group_com +command r_bash/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:subshell_com +command r_bash/src/lib.rs /^pub struct command {$/;" s +command r_glob/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:coproc_com +command r_glob/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:function_def +command r_glob/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:group_com +command r_glob/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:subshell_com +command r_glob/src/lib.rs /^pub struct command {$/;" s +command r_readline/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:coproc_com +command r_readline/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:function_def +command r_readline/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:group_com +command r_readline/src/lib.rs /^ pub command: *mut COMMAND,$/;" m struct:subshell_com +command r_readline/src/lib.rs /^pub struct command {$/;" s +command-timing configure.ac /^AC_ARG_ENABLE(command-timing, AC_HELP_STRING([--enable-command-timing], [enable the time reserve/;" e +command.o builtins/Makefile.in /^command.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +command.o builtins/Makefile.in /^command.o: $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/subst.h$/;" t +command.o builtins/Makefile.in /^command.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/externs.h$/;" t +command.o builtins/Makefile.in /^command.o: $(topdir)\/quit.h $(srcdir)\/bashgetopt.h $(BASHINCDIR)\/maxpath.h$/;" t +command.o builtins/Makefile.in /^command.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables./;" t +command.o builtins/Makefile.in /^command.o: $(topdir)\/sig.h$/;" t +command.o builtins/Makefile.in /^command.o: ..\/pathnames.h$/;" t +command.o builtins/Makefile.in /^command.o: command.def$/;" t +command_connect make_cmd.c /^command_connect (com1, com2, connector)$/;" f +command_connect r_bash/src/lib.rs /^ pub fn command_connect($/;" f +command_error error.c /^command_error (func, code, e, flags)$/;" f +command_error r_bash/src/lib.rs /^ pub fn command_error($/;" f +command_error r_print_cmd/src/lib.rs /^ fn command_error(func:*const c_char, code:c_int, e:c_int, flags:c_int);$/;" f +command_errstr error.c /^command_errstr (code)$/;" f +command_errstr r_bash/src/lib.rs /^ pub fn command_errstr(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +command_execution_string r_bash/src/lib.rs /^ pub static mut command_execution_string: *mut ::std::os::raw::c_char;$/;" v +command_execution_string shell.c /^char *command_execution_string; \/* argument to -c option *\/$/;" v typeref:typename:char * +command_generator lib/readline/examples/fileman.c /^command_generator (text, state)$/;" f +command_line_to_word_list pcomplete.c /^command_line_to_word_list (line, llen, sentinel, nwp, cwp)$/;" f file: +command_oriented_history bashhist.c /^int command_oriented_history = 1;$/;" v typeref:typename:int +command_oriented_history builtins_rust/history/src/intercdep.rs /^ pub static mut command_oriented_history: c_int;$/;" v +command_oriented_history builtins_rust/shopt/src/lib.rs /^ static mut command_oriented_history: i32;$/;" v +command_oriented_history r_bash/src/lib.rs /^ pub static mut command_oriented_history: ::std::os::raw::c_int;$/;" v +command_oriented_history r_bashhist/src/lib.rs /^pub static mut command_oriented_history:c_int = 1;$/;" v +command_print_word_list print_cmd.c /^command_print_word_list (list, separator)$/;" f file: +command_print_word_list r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn command_print_word_list(list:*mut WORD_LIST, separator:*mut c_char)$/;" f +command_rx vendor/futures-channel/tests/mpsc-close.rs /^ command_rx: mpsc::Receiver,$/;" m struct:stress_try_send_as_receiver_closes::TestTask +command_separator alias.c /^#define command_separator(/;" d file: +command_string_index print_cmd.c /^int command_string_index = 0;$/;" v typeref:typename:int +command_string_index r_print_cmd/src/lib.rs /^ static mut command_string_index:c_int ;$/;" v +command_subst_completion_function bashline.c /^command_subst_completion_function (text, state)$/;" f file: +command_substitute r_bash/src/lib.rs /^ pub fn command_substitute($/;" f +command_substitute subst.c /^command_substitute (string, quoted, flags)$/;" f +command_type builtins_rust/cd/src/lib.rs /^enum command_type {$/;" g +command_type builtins_rust/command/src/lib.rs /^pub type command_type = libc::c_uint;$/;" t +command_type builtins_rust/common/src/lib.rs /^enum command_type {$/;" g +command_type builtins_rust/complete/src/lib.rs /^enum command_type {$/;" g +command_type builtins_rust/declare/src/lib.rs /^enum command_type {$/;" g +command_type builtins_rust/fc/src/lib.rs /^enum command_type {$/;" g +command_type builtins_rust/fg_bg/src/lib.rs /^enum command_type {$/;" g +command_type builtins_rust/getopts/src/lib.rs /^enum command_type {$/;" g +command_type builtins_rust/jobs/src/lib.rs /^enum command_type {$/;" g +command_type builtins_rust/kill/src/intercdep.rs /^pub type command_type = c_uint;$/;" t +command_type builtins_rust/pushd/src/lib.rs /^enum command_type {$/;" g +command_type builtins_rust/setattr/src/intercdep.rs /^pub type command_type = c_uint;$/;" t +command_type builtins_rust/source/src/lib.rs /^enum command_type {$/;" g +command_type builtins_rust/type/src/lib.rs /^enum command_type {$/;" g +command_type command.h /^enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,$/;" g +command_type r_bash/src/lib.rs /^pub type command_type = u32;$/;" t +command_type r_glob/src/lib.rs /^pub type command_type = u32;$/;" t +command_type r_readline/src/lib.rs /^pub type command_type = u32;$/;" t +command_word alias.c /^static int command_word;$/;" v typeref:typename:int file: +command_word_completion_function bashline.c /^command_word_completion_function (hint_text, state)$/;" f +command_word_completion_function r_bash/src/lib.rs /^ pub fn command_word_completion_function($/;" f +commands lib/readline/examples/fileman.c /^COMMAND commands[] = {$/;" v typeref:typename:COMMAND[] +commapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "commapi")] pub mod commapi;$/;" n +commctrl vendor/winapi/src/um/mod.rs /^#[cfg(feature = "commctrl")] pub mod commctrl;$/;" n +commdlg vendor/winapi/src/um/mod.rs /^#[cfg(feature = "commdlg")] pub mod commdlg;$/;" n +comment vendor/fluent-syntax/src/ast/mod.rs /^ pub comment: Option>,$/;" m struct:Message +comment vendor/fluent-syntax/src/ast/mod.rs /^ pub comment: Option>,$/;" m struct:Term +comment vendor/fluent-syntax/src/parser/mod.rs /^mod comment;$/;" n +comment_handler builtins/mkbuiltins.c /^comment_handler (self, defs, arg)$/;" f +commit vendor/libc/src/windows/mod.rs /^ pub fn commit(fd: ::c_int) -> ::c_int;$/;" f +common vendor/nix/test/test.rs /^mod common;$/;" n +common vendor/nix/test/test_mount.rs /^mod common;$/;" n +common vendor/syn/benches/file.rs /^mod common;$/;" n +common vendor/syn/benches/rust.rs /^mod common;$/;" n +common vendor/syn/tests/test_precedence.rs /^mod common;$/;" n +common vendor/syn/tests/test_round_trip.rs /^mod common;$/;" n +common.c builtins/Makefile.in /^common.c: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +common.o builtins/Makefile.in /^common.o: $(BASHINCDIR)\/chartypes.h$/;" t +common.o builtins/Makefile.in /^common.o: $(topdir)\/bashtypes.h $(BASHINCDIR)\/posixstat.h $(topdir)\/bashansi.h $(BASHINCDIR)\//;" t +common.o builtins/Makefile.in /^common.o: $(topdir)\/builtins.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h$/;" t +common.o builtins/Makefile.in /^common.o: $(topdir)\/externs.h ..\/pathnames.h .\/builtext.h$/;" t +common.o builtins/Makefile.in /^common.o: $(topdir)\/general.h $(topdir)\/xmalloc.h $(BASHINCDIR)\/stdc.h $(BASHINCDIR)\/memallo/;" t +common.o builtins/Makefile.in /^common.o: $(topdir)\/shell.h $(topdir)\/syntax.h ..\/config.h $(topdir)\/bashjmp.h $(BASHINCDIR)/;" t +common.o builtins/Makefile.in /^common.o: $(topdir)\/sig.h $(topdir)\/command.h $(topdir)\/parser.h$/;" t +common.o builtins/Makefile.in /^common.o: $(topdir)\/siglist.h $(topdir)\/bashhist.h $(topdir)\/quit.h$/;" t +common.o builtins/Makefile.in /^common.o: $(topdir)\/subst.h $(topdir)\/execute_cmd.h $(topdir)\/error.h$/;" t +common.o builtins/Makefile.in /^common.o: $(topdir)\/unwind_prot.h $(BASHINCDIR)\/maxpath.h $(topdir)\/jobs.h$/;" t +common.o builtins/Makefile.in /^common.o: $(topdir)\/variables.h $(topdir)\/conftypes.h $(topdir)\/input.h$/;" t +common.o builtins/Makefile.in /^common.o: common.c$/;" t +common_init vendor/nix/src/sys/aio.rs /^ fn common_init(fd: RawFd, prio: i32, sigev_notify: SigevNotify) -> Self {$/;" P implementation:AioCb +common_inode builtins_rust/hash/src/lib.rs /^static mut common_inode: c_int = 0;$/;" v +commoncontrols vendor/winapi/src/um/mod.rs /^#[cfg(feature = "commoncontrols")] pub mod commoncontrols;$/;" n +compact vendor/slab/src/lib.rs /^ pub fn compact(&mut self, mut rekey: F)$/;" P implementation:Slab +compact_doesnt_move_if_closure_errors vendor/slab/tests/slab.rs /^fn compact_doesnt_move_if_closure_errors() {$/;" f +compact_empty vendor/slab/tests/slab.rs /^fn compact_empty() {$/;" f +compact_handles_closure_panic vendor/slab/tests/slab.rs /^fn compact_handles_closure_panic() {$/;" f +compact_jobs_list jobs.c /^compact_jobs_list (flags)$/;" f file: +compact_jobs_list r_jobs/src/lib.rs /^unsafe extern "C" fn compact_jobs_list(mut flags: c_int) -> c_int {$/;" f +compact_moves_successfully vendor/slab/tests/slab.rs /^fn compact_moves_successfully() {$/;" f +compact_no_moves_needed vendor/slab/tests/slab.rs /^fn compact_no_moves_needed() {$/;" f +compactsArr builtins_rust/complete/src/lib.rs /^ compactsArr: [_compacts; 25usize],$/;" m struct:CompactsArray +compare lib/intl/dcigettext.c /^ int compare = strcmp (domainname, binding->domainname);$/;" v typeref:typename:int +compare_all_implementations vendor/unicode-ident/tests/compare.rs /^fn compare_all_implementations() {$/;" f +compare_contin lib/termcap/termcap.c /^compare_contin (str1, str2)$/;" f file: +compare_match lib/readline/complete.c /^compare_match (char *text, const char *match)$/;" f typeref:typename:int file: +comparison_fn_t r_bash/src/lib.rs /^pub type comparison_fn_t = __compar_fn_t;$/;" t +comparison_fn_t r_glob/src/lib.rs /^pub type comparison_fn_t = __compar_fn_t;$/;" t +comparison_fn_t r_readline/src/lib.rs /^pub type comparison_fn_t = __compar_fn_t;$/;" t +comparisons vendor/syn/src/lookahead.rs /^ comparisons: RefCell>,$/;" m struct:Lookahead1 +compat vendor/futures-util/src/compat/compat01as03.rs /^ fn compat(self) -> Compat01As03$/;" P interface:io::AsyncRead01CompatExt +compat vendor/futures-util/src/compat/compat01as03.rs /^ fn compat(self) -> Compat01As03$/;" P interface:io::AsyncWrite01CompatExt +compat vendor/futures-util/src/compat/compat01as03.rs /^ fn compat(self) -> Compat01As03$/;" P interface:Future01CompatExt +compat vendor/futures-util/src/compat/compat01as03.rs /^ fn compat(self) -> Compat01As03$/;" P interface:Stream01CompatExt +compat vendor/futures-util/src/compat/executor.rs /^ fn compat(self) -> Executor01As03 {$/;" f +compat vendor/futures-util/src/compat/executor.rs /^ fn compat(self) -> Executor01As03$/;" P interface:Executor01CompatExt +compat vendor/futures-util/src/future/try_future/mod.rs /^ fn compat(self) -> Compat$/;" P interface:TryFutureExt +compat vendor/futures-util/src/io/mod.rs /^ fn compat(self) -> Compat$/;" P interface:AsyncReadExt +compat vendor/futures-util/src/lib.rs /^pub mod compat;$/;" n +compat vendor/futures-util/src/sink/mod.rs /^ fn compat(self) -> CompatSink$/;" P interface:SinkExt +compat vendor/futures-util/src/stream/try_stream/mod.rs /^ fn compat(self) -> Compat$/;" P interface:TryStreamExt +compat vendor/futures-util/src/task/spawn.rs /^ fn compat(self) -> Compat$/;" P interface:SpawnExt +compat vendor/futures/src/lib.rs /^pub mod compat {$/;" n +compat vendor/futures/tests/auto_traits.rs /^pub mod compat {$/;" n +compat vendor/libc/src/unix/solarish/mod.rs /^mod compat;$/;" n +compat.o lib/readline/Makefile.in /^compat.o: ${BUILD_DIR}\/config.h$/;" t +compat.o lib/readline/Makefile.in /^compat.o: compat.c$/;" t +compat.o lib/readline/Makefile.in /^compat.o: rlstdc.h rltypedefs.h$/;" t +compat01as03 vendor/futures-util/src/compat/mod.rs /^mod compat01as03;$/;" n +compat03as01 vendor/futures-util/src/compat/mod.rs /^mod compat03as01;$/;" n +compat_write vendor/futures-util/src/io/mod.rs /^ fn compat_write(self) -> Compat$/;" P interface:AsyncWriteExt +compile support/texi2dvi /^compile ()$/;" f +compile_kernel_module vendor/nix/test/test_kmod/mod.rs /^fn compile_kernel_module() -> (PathBuf, String, TempDir) {$/;" f +compile_kind target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n +compile_kind target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" n +compile_kind target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +compile_kind target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" n +compile_kind target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" n +compile_kind target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" n +compile_kind target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" n +compile_kind target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" n +compile_kind target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n +compile_kind target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" n +compile_kind target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n +compile_kind target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" n +compile_kind target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n +compile_kind target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" n +compile_kind target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n +compile_kind target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +compile_kind target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +compile_kind target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" n +compile_kind target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +compile_kind target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" n +compile_kind target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" n +compile_kind target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n +compile_kind target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" n +compile_kind target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n +compile_kind target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" n +compile_kind target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" n +compile_kind target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" n +compile_kind target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +compile_kind target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +compile_kind target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +compile_kind target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" n +compile_kind target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" n +compile_kind target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" n +compile_kind target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" n +compile_kind target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +compile_kind target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" n +compile_kind target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +compile_kind target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +compile_kind target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" n +compile_kind target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +compile_kind target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" n +compile_kind target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +compile_kind target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" n +compile_kind target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" n +compile_kind target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" n +compile_kind target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" n +compile_kind target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" n +compile_kind target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n +compile_kind target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" n +compile_kind target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" n +compile_kind target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" n +compile_kind target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" n +compile_kind target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +compile_kind target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" n +compile_kind target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +compile_kind target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" n +compile_kind target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" n +compile_kind target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" n +compile_kind target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +compile_kind target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n +compile_kind target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n +compile_kind target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" n +compile_kind target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +compile_kind target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n +compile_kind target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n +compile_kind target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" n +compile_kind target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n +compile_kind target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" n +compile_kind target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +compile_kind target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" n +compile_kind target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" n +compile_kind target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" n +compile_kind target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" n +compile_kind target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" n +compile_kind target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +compile_kind target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +compile_kind target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" n +compile_kind target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +compile_kind target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" n +compile_kind target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" n +compile_kind target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n +compile_kind target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" n +compile_kind target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" n +compile_kind target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" n +compile_kind target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" n +compile_kind target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" n +compile_probe vendor/thiserror/build.rs /^fn compile_probe() -> Option {$/;" f +compiler_literal_from_str vendor/proc-macro2/src/wrapper.rs /^fn compiler_literal_from_str(repr: &str) -> Result {$/;" f +complete vendor/futures-channel/src/oneshot.rs /^ complete: AtomicBool,$/;" m struct:Inner +complete vendor/futures-executor/src/unpark_mutex.rs /^ pub(crate) unsafe fn complete(&self) {$/;" P implementation:UnparkMutex +complete vendor/futures-macro/src/select.rs /^ complete: Option,$/;" m struct:Select +complete.o builtins/Makefile.in /^complete.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +complete.o builtins/Makefile.in /^complete.o: ${srcdir}\/common.h ${srcdir}\/bashgetopt.h$/;" t +complete.o builtins/Makefile.in /^complete.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +complete.o builtins/Makefile.in /^complete.o: ${topdir}\/bashtypes.h ${BASHINCDIR}\/chartypes.h ${topdir}\/xmalloc.h$/;" t +complete.o builtins/Makefile.in /^complete.o: ${topdir}\/bashtypes.h ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +complete.o builtins/Makefile.in /^complete.o: ${topdir}\/builtins.h ${topdir}\/general.h$/;" t +complete.o builtins/Makefile.in /^complete.o: ${topdir}\/pcomplete.h$/;" t +complete.o builtins/Makefile.in /^complete.o: ${topdir}\/shell.h $(topdir)\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp./;" t +complete.o builtins/Makefile.in /^complete.o: ${topdir}\/unwind_prot.h ${topdir}\/variables.h$/;" t +complete.o builtins/Makefile.in /^complete.o: ..\/config.h ..\/pathnames.h$/;" t +complete.o builtins/Makefile.in /^complete.o: complete.def$/;" t +complete.o lib/readline/Makefile.in /^complete.o: ansi_stdlib.h posixdir.h posixstat.h$/;" t +complete.o lib/readline/Makefile.in /^complete.o: colors.h$/;" t +complete.o lib/readline/Makefile.in /^complete.o: complete.c$/;" t +complete.o lib/readline/Makefile.in /^complete.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h$/;" t +complete.o lib/readline/Makefile.in /^complete.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +complete.o lib/readline/Makefile.in /^complete.o: rlmbutil.h$/;" t +complete.o lib/readline/Makefile.in /^complete.o: rlprivate.h$/;" t +complete.o lib/readline/Makefile.in /^complete.o: xmalloc.h $/;" t +complete_fncmp lib/readline/complete.c /^complete_fncmp (const char *convfn, int convlen, const char *filename, int filename_len)$/;" f typeref:typename:int file: +complete_fullquote bashline.c /^int complete_fullquote = 1;$/;" v typeref:typename:int +complete_fullquote builtins_rust/shopt/src/lib.rs /^ static mut complete_fullquote: i32;$/;" v +complete_fullquote r_bash/src/lib.rs /^ pub static mut complete_fullquote: ::std::os::raw::c_int;$/;" v +complete_get_screenwidth lib/readline/complete.c /^complete_get_screenwidth (void)$/;" f typeref:typename:int file: +completion_changed_buffer lib/readline/complete.c /^static int completion_changed_buffer;$/;" v typeref:typename:int file: +completion_glob_pattern bashline.c /^completion_glob_pattern (string)$/;" f file: +completion_matches lib/readline/compat.c /^completion_matches (const char *s, rl_compentry_func_t *f)$/;" f typeref:typename:char ** +completion_quoting_style bashline.c /^static int completion_quoting_style = COMPLETE_BSQUOTE;$/;" v typeref:typename:int file: +completion_y_or_n lib/readline/complete.c /^static int completion_y_or_n;$/;" v typeref:typename:int file: +completions_to_stringlist builtins_rust/complete/src/lib.rs /^ fn completions_to_stringlist(matches: *mut *mut c_char) -> *mut STRINGLIST;$/;" f +completions_to_stringlist pcomplete.c /^completions_to_stringlist (matches)$/;" f +completions_to_stringlist r_bash/src/lib.rs /^ pub fn completions_to_stringlist(arg1: *mut *mut ::std::os::raw::c_char) -> *mut STRINGLIST;$/;" f +compoptArr builtins_rust/complete/src/lib.rs /^ compoptArr: [_compopt; 9usize],$/;" m struct:CompoptArray +composite vendor/stdext/src/num/integer.rs /^ fn composite() {$/;" f module:tests +compound_list parse.y /^compound_list: list$/;" l +compspec pcomplete.h /^typedef struct compspec {$/;" s +compspec r_bash/src/lib.rs /^pub struct compspec {$/;" s +compspec_copy pcomplib.c /^compspec_copy (cs)$/;" f +compspec_copy r_bash/src/lib.rs /^ pub fn compspec_copy(arg1: *mut COMPSPEC) -> *mut COMPSPEC;$/;" f +compspec_create builtins_rust/complete/src/lib.rs /^ fn compspec_create() -> *mut COMPSPEC;$/;" f +compspec_create pcomplib.c /^compspec_create ()$/;" f typeref:typename:COMPSPEC * +compspec_create r_bash/src/lib.rs /^ pub fn compspec_create() -> *mut COMPSPEC;$/;" f +compspec_dispose builtins_rust/complete/src/lib.rs /^ fn compspec_dispose(com: *mut COMPSPEC);$/;" f +compspec_dispose pcomplib.c /^compspec_dispose (cs)$/;" f +compspec_dispose r_bash/src/lib.rs /^ pub fn compspec_dispose(arg1: *mut COMPSPEC);$/;" f +compute_curr_prefix lib/intl/relocatable.c /^#define compute_curr_prefix /;" d file: +compute_curr_prefix lib/intl/relocatable.c /^compute_curr_prefix (const char *orig_installprefix,$/;" f typeref:typename:const char * file: +compute_language support/texi2dvi /^compute_language ()$/;" f +compute_lcd_of_matches lib/readline/complete.c /^compute_lcd_of_matches (char **match_list, int matches, const char *text)$/;" f typeref:typename:int file: +comsub_ignore_return execute_cmd.c /^int comsub_ignore_return = 0;$/;" v typeref:typename:int +comsub_ignore_return r_bash/src/lib.rs /^ pub static mut comsub_ignore_return: ::std::os::raw::c_int;$/;" v +concat vendor/futures-util/src/stream/stream/mod.rs /^ fn concat(self) -> Concat$/;" P interface:StreamExt +concat vendor/futures-util/src/stream/stream/mod.rs /^mod concat;$/;" n +concat vendor/futures/tests_disabled/stream.rs /^fn concat() {$/;" f +concat2 vendor/futures/tests_disabled/stream.rs /^fn concat2() {$/;" f +concurrent vendor/fluent-bundle/src/lib.rs /^mod concurrent;$/;" n +concurrent vendor/futures/tests_disabled/bilock.rs /^fn concurrent() {$/;" f +concurrent vendor/intl-memoizer/src/lib.rs /^pub mod concurrent;$/;" n +concurrent vendor/type-map/src/lib.rs /^pub mod concurrent {$/;" n +cond-command configure.ac /^AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the conditional comm/;" e +cond-regexp configure.ac /^AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expre/;" e +cond_com builtins_rust/cd/src/lib.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/command/src/lib.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/common/src/lib.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/complete/src/lib.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/declare/src/lib.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/fc/src/lib.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/fg_bg/src/lib.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/getopts/src/lib.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/jobs/src/lib.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/kill/src/intercdep.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/pushd/src/lib.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/setattr/src/intercdep.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/source/src/lib.rs /^pub struct cond_com {$/;" s +cond_com builtins_rust/type/src/lib.rs /^pub struct cond_com {$/;" s +cond_com command.h /^typedef struct cond_com {$/;" s +cond_com r_bash/src/lib.rs /^pub struct cond_com {$/;" s +cond_com r_glob/src/lib.rs /^pub struct cond_com {$/;" s +cond_com r_readline/src/lib.rs /^pub struct cond_com {$/;" s +cond_command parse.y /^cond_command: COND_START COND_CMD COND_END$/;" l +cond_expand_word r_bash/src/lib.rs /^ pub fn cond_expand_word($/;" f +cond_expand_word subst.c /^cond_expand_word (w, special)$/;" f +conf_standard_path builtins_rust/type/src/lib.rs /^ fn conf_standard_path() -> *mut libc::c_char;$/;" f +conf_standard_path general.c /^conf_standard_path ()$/;" f typeref:typename:char * +conf_standard_path r_bash/src/lib.rs /^ pub fn conf_standard_path() -> *mut ::std::os::raw::c_char;$/;" f +conf_standard_path r_glob/src/lib.rs /^ pub fn conf_standard_path() -> *mut ::std::os::raw::c_char;$/;" f +conf_standard_path r_readline/src/lib.rs /^ pub fn conf_standard_path() -> *mut ::std::os::raw::c_char;$/;" f +config target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n +config target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" n +config target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +config target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" n +config target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" n +config target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" n +config target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" n +config target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n +config target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" n +config target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n +config target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" n +config target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n +config target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" n +config target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n +config target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" n +config target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n +config target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +config target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +config target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" n +config target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +config target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" n +config target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" n +config target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n +config target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" n +config target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n +config target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" n +config target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" n +config target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" n +config target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +config target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +config target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +config target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" n +config target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" n +config target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" n +config target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" n +config target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +config target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" n +config target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +config target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +config target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" n +config target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +config target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" n +config target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +config target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" n +config target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" n +config target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" n +config target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" n +config target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" n +config target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n +config target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" n +config target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" n +config target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" n +config target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" n +config target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +config target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" n +config target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +config target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" n +config target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" n +config target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +config target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +config target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" n +config target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n +config target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" n +config target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" n +config target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n +config target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n +config target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n +config target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n +config target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n +config target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" n +config target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n +config target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +config target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" n +config target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n +config target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n +config target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n +config target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n +config target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n +config target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n +config target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n +config target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n +config target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n +config target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n +config target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n +config target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n +config target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n +config target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n +config target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n +config target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n +config target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n +config target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n +config target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n +config target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" n +config target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n +config target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +config target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n +config target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n +config target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n +config target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n +config target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n +config target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n +config target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n +config target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n +config target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n +config target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n +config target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n +config target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n +config target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n +config target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n +config target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n +config target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n +config target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" n +config target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n +config target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" n +config target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +config target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" n +config target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" n +config target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" n +config target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" n +config target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" n +config target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +config target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +config target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" n +config target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +config target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" n +config target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" n +config target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n +config target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" n +config target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" n +config target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" n +config target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" n +config target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" n +config vendor/memchr/src/memmem/mod.rs /^ config: SearcherConfig,$/;" m struct:FinderBuilder +config.h Makefile.in /^config.h: stamp-h $/;" t +config.status Makefile.in /^config.status: $(srcdir)\/configure$/;" t +confstr r_bash/src/lib.rs /^ pub fn confstr($/;" f +confstr r_glob/src/lib.rs /^ pub fn confstr($/;" f +confstr r_readline/src/lib.rs /^ pub fn confstr($/;" f +confstr vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn confstr(name: ::c_int, buf: *mut ::c_char, len: ::size_t) -> ::size_t;$/;" f +connect vendor/async-trait/tests/test.rs /^ async fn connect(&self) -> Result;$/;" P interface:issue145::ManageConnection +connect vendor/libc/src/fuchsia/mod.rs /^ pub fn connect(socket: ::c_int, address: *const sockaddr, len: socklen_t) -> ::c_int;$/;" f +connect vendor/libc/src/unix/mod.rs /^ pub fn connect(socket: ::c_int, address: *const sockaddr, len: socklen_t) -> ::c_int;$/;" f +connect vendor/libc/src/vxworks/mod.rs /^ pub fn connect(s: ::c_int, name: *const ::sockaddr, namelen: ::socklen_t) -> ::c_int;$/;" f +connect vendor/libc/src/windows/mod.rs /^ pub fn connect(s: SOCKET, name: *const ::sockaddr, namelen: ::c_int) -> ::c_int;$/;" f +connect vendor/nix/src/sys/socket/mod.rs /^pub fn connect(fd: RawFd, addr: &dyn SockaddrLike) -> Result<()> {$/;" f +connect vendor/winapi/src/um/winsock2.rs /^ pub fn connect($/;" f +connect_async_list make_cmd.c /^connect_async_list (command, command2, connector)$/;" f +connect_async_list r_bash/src/lib.rs /^ pub fn connect_async_list($/;" f +connection builtins_rust/cd/src/lib.rs /^pub struct connection {$/;" s +connection builtins_rust/command/src/lib.rs /^pub struct connection {$/;" s +connection builtins_rust/common/src/lib.rs /^pub struct connection {$/;" s +connection builtins_rust/complete/src/lib.rs /^pub struct connection {$/;" s +connection builtins_rust/declare/src/lib.rs /^pub struct connection {$/;" s +connection builtins_rust/fc/src/lib.rs /^pub struct connection {$/;" s +connection builtins_rust/fg_bg/src/lib.rs /^pub struct connection {$/;" s +connection builtins_rust/getopts/src/lib.rs /^pub struct connection {$/;" s +connection builtins_rust/jobs/src/lib.rs /^pub struct connection {$/;" s +connection builtins_rust/kill/src/intercdep.rs /^pub struct connection {$/;" s +connection builtins_rust/pushd/src/lib.rs /^pub struct connection {$/;" s +connection builtins_rust/setattr/src/intercdep.rs /^pub struct connection {$/;" s +connection builtins_rust/source/src/lib.rs /^pub struct connection {$/;" s +connection builtins_rust/type/src/lib.rs /^pub struct connection {$/;" s +connection command.h /^typedef struct connection {$/;" s +connection r_bash/src/lib.rs /^pub struct connection {$/;" s +connection r_glob/src/lib.rs /^pub struct connection {$/;" s +connection r_readline/src/lib.rs /^pub struct connection {$/;" s +connection_count execute_cmd.c /^static int connection_count;$/;" v typeref:typename:int file: +connector builtins_rust/cd/src/lib.rs /^ connector: libc::c_int,$/;" m struct:connection +connector builtins_rust/command/src/lib.rs /^ pub connector: libc::c_int,$/;" m struct:connection +connector builtins_rust/common/src/lib.rs /^ connector: libc::c_int,$/;" m struct:connection +connector builtins_rust/complete/src/lib.rs /^ connector: c_int,$/;" m struct:connection +connector builtins_rust/declare/src/lib.rs /^ connector: libc::c_int,$/;" m struct:connection +connector builtins_rust/fc/src/lib.rs /^ connector: libc::c_int,$/;" m struct:connection +connector builtins_rust/fg_bg/src/lib.rs /^ connector: libc::c_int,$/;" m struct:connection +connector builtins_rust/getopts/src/lib.rs /^ connector: libc::c_int,$/;" m struct:connection +connector builtins_rust/jobs/src/lib.rs /^ connector: libc::c_int,$/;" m struct:connection +connector builtins_rust/pushd/src/lib.rs /^ connector: libc::c_int,$/;" m struct:connection +connector builtins_rust/source/src/lib.rs /^ connector: libc::c_int,$/;" m struct:connection +connector builtins_rust/type/src/lib.rs /^ connector: i32,$/;" m struct:connection +connector command.h /^ int connector; \/* What separates this command from others. *\/$/;" m struct:connection typeref:typename:int +connector r_bash/src/lib.rs /^ pub connector: ::std::os::raw::c_int,$/;" m struct:connection +connector r_glob/src/lib.rs /^ pub connector: ::std::os::raw::c_int,$/;" m struct:connection +connector r_readline/src/lib.rs /^ pub connector: ::std::os::raw::c_int,$/;" m struct:connection +connectx vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn connectx($/;" f +consoleapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "consoleapi")] pub mod consoleapi;$/;" n +const_argument vendor/syn/src/path.rs /^ pub fn const_argument(input: ParseStream) -> Result {$/;" f module:parsing +const_fn_offset vendor/memoffset/src/offset_of.rs /^ fn const_fn_offset() {$/;" f module:tests +const_generic vendor/async-trait/tests/test.rs /^ async fn const_generic(_: [T; C]) {}$/;" P implementation:issue57::Struct +const_generic vendor/async-trait/tests/test.rs /^ async fn const_generic(_: [T; C]) {}$/;" P interface:issue57::Trait +const_generics vendor/smallvec/src/tests.rs /^fn const_generics() {$/;" f +const_new vendor/slab/tests/slab.rs /^fn const_new() {$/;" f +const_new vendor/smallvec/src/tests.rs /^fn const_new() {$/;" f +const_new_inline_args vendor/smallvec/src/tests.rs /^const fn const_new_inline_args() -> SmallVec<[i32; 2]> {$/;" f +const_new_inline_sized vendor/smallvec/src/tests.rs /^const fn const_new_inline_sized() -> SmallVec<[i32; 4]> {$/;" f +const_new_inner vendor/smallvec/src/tests.rs /^const fn const_new_inner() -> SmallVec<[i32; 4]> {$/;" f +const_offset vendor/memoffset/src/offset_of.rs /^ fn const_offset() {$/;" f module:tests +const_offset_interior_mutable vendor/memoffset/src/offset_of.rs /^ fn const_offset_interior_mutable() {$/;" f module:tests +const_params vendor/syn/src/generics.rs /^ pub fn const_params(&self) -> ConstParams {$/;" P implementation:Generics +const_params_mut vendor/syn/src/generics.rs /^ pub fn const_params_mut(&mut self) -> ConstParamsMut {$/;" P implementation:Generics +constant r_bash/src/lib.rs /^ pub constant: __syscall_slong_t,$/;" m struct:timex +constant r_readline/src/lib.rs /^ pub constant: __syscall_slong_t,$/;" m struct:timex +constraint_bounds vendor/syn/src/path.rs /^ fn constraint_bounds(input: ParseStream) -> Result> {$/;" f module:parsing +construct vendor/fluent-bundle/src/types/plural.rs /^ fn construct(lang: LanguageIdentifier, args: Self::Args) -> Result {$/;" P implementation:PluralRules +construct vendor/intl-memoizer/src/lib.rs /^ fn construct(lang: LanguageIdentifier, args: Self::Args) -> Result {$/;" P implementation:tests::PluralRules +construct vendor/intl-memoizer/src/lib.rs /^ fn construct(lang: LanguageIdentifier, args: Self::Args) -> Result$/;" P interface:Memoizable +construct_from_bytes vendor/tinystr/benches/construct.rs /^fn construct_from_bytes(c: &mut Criterion) {$/;" f +construct_from_str vendor/tinystr/benches/construct.rs /^fn construct_from_str(c: &mut Criterion) {$/;" f +construct_unchecked vendor/tinystr/benches/construct.rs /^fn construct_unchecked(c: &mut Criterion) {$/;" f +consts vendor/libloading/src/os/unix/mod.rs /^mod consts;$/;" n +consts vendor/libloading/src/os/windows/mod.rs /^ pub(super) mod consts {$/;" n module:windows_imports +consts vendor/nix/src/errno.rs /^mod consts {$/;" n +consts vendor/nix/src/sys/ioctl/bsd.rs /^mod consts {$/;" n +consts vendor/nix/src/sys/ioctl/linux.rs /^mod consts {$/;" n +consttime_memequal vendor/libc/src/solid/mod.rs /^ pub fn consttime_memequal(arg1: *const c_void, arg2: *const c_void, arg3: size_t) -> c_int;$/;" f +consttime_memequal vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn consttime_memequal(a: *const ::c_void, b: *const ::c_void, len: ::size_t) -> ::c_int;$/;" f +consume vendor/futures-io/src/lib.rs /^ fn consume(self: Pin<&mut Self>, amt: usize) {$/;" f module:if_std +consume vendor/futures-io/src/lib.rs /^ fn consume(self: Pin<&mut Self>, amt: usize);$/;" P interface:if_std::AsyncBufRead +consume vendor/futures-util/src/future/either.rs /^ fn consume(self: Pin<&mut Self>, amt: usize) {$/;" f module:if_std +consume vendor/futures-util/src/io/allow_std.rs /^ fn consume(&mut self, amt: usize) {$/;" f +consume vendor/futures-util/src/io/allow_std.rs /^ fn consume(mut self: Pin<&mut Self>, amt: usize) {$/;" f +consume vendor/futures-util/src/io/buf_reader.rs /^ fn consume(self: Pin<&mut Self>, amt: usize) {$/;" P implementation:BufReader +consume vendor/futures-util/src/io/chain.rs /^ fn consume(self: Pin<&mut Self>, amt: usize) {$/;" f +consume vendor/futures-util/src/io/cursor.rs /^ fn consume(mut self: Pin<&mut Self>, amt: usize) {$/;" f +consume vendor/futures-util/src/io/empty.rs /^ fn consume(self: Pin<&mut Self>, _: usize) {}$/;" P implementation:Empty +consume vendor/futures-util/src/io/take.rs /^ fn consume(self: Pin<&mut Self>, amt: usize) {$/;" P implementation:Take +consume vendor/futures-util/src/stream/try_stream/into_async_read.rs /^ fn consume(self: Pin<&mut Self>, amount: usize) {$/;" f +consume vendor/futures/tests/io_buf_reader.rs /^ fn consume(self: Pin<&mut Self>, amt: usize) {$/;" P implementation:maybe_pending_seek::MaybePendingSeek +consume vendor/futures/tests/io_buf_reader.rs /^ fn consume(mut self: Pin<&mut Self>, amt: usize) {$/;" P implementation:MaybePending +consume vendor/futures/tests/io_buf_reader.rs /^ fn consume(self: Pin<&mut Self>, amt: usize) {$/;" P implementation:Cursor +consume_unpin vendor/futures-util/src/io/mod.rs /^ fn consume_unpin(&mut self, amt: usize)$/;" P interface:AsyncBufReadExt +cont vendor/nix/src/sys/ptrace/bsd.rs /^pub fn cont>>(pid: Pid, sig: T) -> Result<()> {$/;" f +cont vendor/nix/src/sys/ptrace/linux.rs /^pub fn cont>>(pid: Pid, sig: T) -> Result<()> {$/;" f +contained_in_marker vendor/self_cell/src/unsafe_self_cell.rs /^ contained_in_marker: PhantomData,$/;" m struct:UnsafeSelfCell +contained_tab support/man2html.c /^static int contained_tab = 0;$/;" v typeref:typename:int file: +contains vendor/async-trait/src/expand.rs /^ contains: bool,$/;" m struct:contains_associated_type_impl_trait::AssociatedTypeImplTraits +contains vendor/memchr/src/memmem/twoway.rs /^ fn contains(&self, byte: u8) -> bool {$/;" P implementation:ApproximateByteSet +contains vendor/nix/src/sys/select.rs /^ pub fn contains(&self, fd: RawFd) -> bool {$/;" P implementation:FdSet +contains vendor/slab/src/lib.rs /^ pub fn contains(&self, key: usize) -> bool {$/;" P implementation:Slab +contains vendor/type-map/src/lib.rs /^ pub fn contains(&self) -> bool {$/;" P implementation:concurrent::TypeMap +contains vendor/type-map/src/lib.rs /^ pub fn contains(&self) -> bool {$/;" P implementation:TypeMap +contains_associated_type_impl_trait vendor/async-trait/src/expand.rs /^fn contains_associated_type_impl_trait(context: Context, ret: &mut Type) -> bool {$/;" f +contains_fn vendor/async-trait/src/receiver.rs /^fn contains_fn(tokens: TokenStream) -> bool {$/;" f +contains_generic vendor/thiserror-impl/src/ast.rs /^ pub contains_generic: bool,$/;" m struct:Field +contains_non_static_lifetime vendor/thiserror-impl/src/valid.rs /^fn contains_non_static_lifetime(ty: &Type) -> bool {$/;" f +contains_zero_byte vendor/memchr/src/memchr/fallback.rs /^fn contains_zero_byte(x: usize) -> bool {$/;" f +contended vendor/futures-util/benches_disabled/bilock.rs /^ fn contended(b: &mut Bencher) {$/;" f module:bench +content vendor/fluent-syntax/src/ast/mod.rs /^ pub content: Vec,$/;" m struct:Comment +content vendor/syn/src/group.rs /^ pub content: ParseBuffer<'a>,$/;" m struct:Braces +content vendor/syn/src/group.rs /^ pub content: ParseBuffer<'a>,$/;" m struct:Brackets +content vendor/syn/src/group.rs /^ pub content: ParseBuffer<'a>,$/;" m struct:Group +content vendor/syn/src/group.rs /^ pub content: ParseBuffer<'a>,$/;" m struct:Parens +contents support/man2html.c /^ char *contents;$/;" m struct:TABLEITEM typeref:typename:char * file: +context builtins_rust/cd/src/lib.rs /^ context: i32, \/* Which context this variable belongs to. *\/$/;" m struct:SHELL_VAR +context builtins_rust/common/src/lib.rs /^ pub context: i32, \/* Which context this variable belongs to. *\/$/;" m struct:SHELL_VAR +context builtins_rust/declare/src/lib.rs /^ context: i32, \/* Which context this variable belongs to. *\/$/;" m struct:SHELL_VAR +context builtins_rust/fc/src/lib.rs /^ context: i32,$/;" m struct:SHELL_VAR +context builtins_rust/getopts/src/lib.rs /^ context: i32,$/;" m struct:SHELL_VAR +context builtins_rust/mapfile/src/intercdep.rs /^ pub context: c_int,$/;" m struct:variable +context builtins_rust/printf/src/intercdep.rs /^ pub context: c_int,$/;" m struct:variable +context builtins_rust/read/src/intercdep.rs /^ pub context: c_int,$/;" m struct:variable +context builtins_rust/set/src/lib.rs /^ pub context: i32,$/;" m struct:variable +context builtins_rust/setattr/src/intercdep.rs /^ pub context: c_int,$/;" m struct:variable +context builtins_rust/shopt/src/lib.rs /^ pub context: i32,$/;" m struct:variable +context builtins_rust/type/src/lib.rs /^ context: i32,$/;" m struct:SHELL_VAR +context builtins_rust/wait/src/lib.rs /^ pub context: c_int,$/;" m struct:variable +context r_bash/src/lib.rs /^ pub context: ::std::os::raw::c_int,$/;" m struct:variable +context variables.h /^ int context; \/* Which context this variable belongs to. *\/$/;" m struct:variable typeref:typename:int +context vendor/nix/src/ucontext.rs /^ context: libc::ucontext_t,$/;" m struct:UContext +continued vendor/nix/src/sys/wait.rs /^fn continued(status: i32) -> bool {$/;" f +continuing builtins_rust/break_1/src/lib.rs /^ static mut continuing: i32;$/;" v +continuing r_bash/src/lib.rs /^ pub static mut continuing: ::std::os::raw::c_int;$/;" v +control_character_bit lib/readline/chardefs.h /^#define control_character_bit /;" d +control_character_mask lib/readline/chardefs.h /^#define control_character_mask /;" d +control_character_threshold lib/readline/chardefs.h /^#define control_character_threshold /;" d +control_chars vendor/nix/src/sys/termios.rs /^ pub control_chars: [libc::cc_t; NCCS],$/;" m struct:Termios +control_flags vendor/nix/src/sys/termios.rs /^ pub control_flags: ControlFlags,$/;" m struct:Termios +controlsym support/man2html.c /^static char escapesym = '\\\\', nobreaksym = '\\'', controlsym = '.', fieldsym = 0, padsym = 0;$/;" v typeref:typename:char file: +conv lib/intl/gettextP.h /^ __gconv_t conv;$/;" m struct:loaded_domain typeref:typename:__gconv_t +conv lib/intl/gettextP.h /^ iconv_t conv;$/;" m struct:loaded_domain typeref:typename:iconv_t +conv_buf builtins_rust/printf/src/lib.rs /^static mut conv_buf: *mut c_char = PT_NULL as *mut c_char;$/;" v +conv_bufsize builtins_rust/printf/src/lib.rs /^static mut conv_bufsize: size_t = 0;$/;" v +conv_fromfs lib/sh/fnxform.c /^static iconv_t conv_fromfs = (iconv_t)-1;$/;" v typeref:typename:iconv_t file: +conv_tab lib/intl/gettextP.h /^ char **conv_tab;$/;" m struct:loaded_domain typeref:typename:char ** +conv_tofs lib/sh/fnxform.c /^static iconv_t conv_tofs = (iconv_t)-1;$/;" v typeref:typename:iconv_t file: +conversion_error builtins_rust/printf/src/lib.rs /^static mut conversion_error: c_int = 0;$/;" v +convert_ioctl_res vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! convert_ioctl_res {$/;" M +convert_to_ascii vendor/tinystr/benches/tinystr.rs /^macro_rules! convert_to_ascii {$/;" M +convert_to_ascii_lowercase vendor/tinystr/benches/tinystr.rs /^fn convert_to_ascii_lowercase(c: &mut Criterion) {$/;" f +convert_to_ascii_titlecase vendor/tinystr/benches/tinystr.rs /^fn convert_to_ascii_titlecase(c: &mut Criterion) {$/;" f +convert_to_ascii_uppercase vendor/tinystr/benches/tinystr.rs /^fn convert_to_ascii_uppercase(c: &mut Criterion) {$/;" f +convert_var_to_array arrayfunc.c /^convert_var_to_array (var)$/;" f +convert_var_to_array builtins_rust/declare/src/lib.rs /^ fn convert_var_to_array(var: *mut SHELL_VAR) -> *mut SHELL_VAR;$/;" f +convert_var_to_array r_bash/src/lib.rs /^ pub fn convert_var_to_array(arg1: *mut SHELL_VAR) -> *mut SHELL_VAR;$/;" f +convert_var_to_assoc arrayfunc.c /^convert_var_to_assoc (var)$/;" f +convert_var_to_assoc builtins_rust/declare/src/lib.rs /^ fn convert_var_to_assoc(var: *mut SHELL_VAR) -> *mut SHELL_VAR;$/;" f +convert_var_to_assoc r_bash/src/lib.rs /^ pub fn convert_var_to_assoc(arg1: *mut SHELL_VAR) -> *mut SHELL_VAR;$/;" f +convert_vec_str_to_langids vendor/fluent-langneg/src/lib.rs /^pub fn convert_vec_str_to_langids<'a, I, J>($/;" f +convert_vec_str_to_langids_lossy vendor/fluent-langneg/src/lib.rs /^pub fn convert_vec_str_to_langids_lossy<'a, I, J>(input: I) -> Vec$/;" f +cooked_byte_string vendor/proc-macro2/src/parse.rs /^fn cooked_byte_string(mut input: Cursor) -> Result {$/;" f +cooked_string vendor/proc-macro2/src/parse.rs /^fn cooked_string(input: Cursor) -> Result {$/;" f +cookie vendor/nix/src/sys/inotify.rs /^ pub cookie: u32,$/;" m struct:InotifyEvent +cookie_close_function_t r_bash/src/lib.rs /^pub type cookie_close_function_t = ::core::option::Option<$/;" t +cookie_close_function_t r_readline/src/lib.rs /^pub type cookie_close_function_t = ::core::option::Option<$/;" t +cookie_io_functions_t r_bash/src/lib.rs /^pub type cookie_io_functions_t = _IO_cookie_io_functions_t;$/;" t +cookie_io_functions_t r_readline/src/lib.rs /^pub type cookie_io_functions_t = _IO_cookie_io_functions_t;$/;" t +cookie_read_function_t r_bash/src/lib.rs /^pub type cookie_read_function_t = ::core::option::Option<$/;" t +cookie_read_function_t r_readline/src/lib.rs /^pub type cookie_read_function_t = ::core::option::Option<$/;" t +cookie_seek_function_t r_bash/src/lib.rs /^pub type cookie_seek_function_t = ::core::option::Option<$/;" t +cookie_seek_function_t r_readline/src/lib.rs /^pub type cookie_seek_function_t = ::core::option::Option<$/;" t +cookie_write_function_t r_bash/src/lib.rs /^pub type cookie_write_function_t = ::core::option::Option<$/;" t +cookie_write_function_t r_readline/src/lib.rs /^pub type cookie_write_function_t = ::core::option::Option<$/;" t +coproc builtins_rust/kill/src/intercdep.rs /^pub struct coproc {$/;" s +coproc builtins_rust/setattr/src/intercdep.rs /^pub struct coproc {$/;" s +coproc command.h /^typedef struct coproc {$/;" s +coproc execute_cmd.c /^ struct coproc *coproc;$/;" m struct:cpelement typeref:struct:coproc * file: +coproc parse.y /^coproc: COPROC shell_command$/;" l +coproc r_bash/src/lib.rs /^pub struct coproc {$/;" s +coproc r_glob/src/lib.rs /^pub struct coproc {$/;" s +coproc r_readline/src/lib.rs /^pub struct coproc {$/;" s +coproc_active execute_cmd.c /^coproc_active ()$/;" f typeref:typename:pid_t +coproc_active r_bash/src/lib.rs /^ pub fn coproc_active() -> pid_t;$/;" f +coproc_alloc execute_cmd.c /^coproc_alloc (name, pid)$/;" f +coproc_alloc r_bash/src/lib.rs /^ pub fn coproc_alloc(arg1: *mut ::std::os::raw::c_char, arg2: pid_t) -> *mut coproc;$/;" f +coproc_checkfd execute_cmd.c /^coproc_checkfd (cp, fd)$/;" f +coproc_checkfd r_bash/src/lib.rs /^ pub fn coproc_checkfd(arg1: *mut coproc, arg2: ::std::os::raw::c_int);$/;" f +coproc_close execute_cmd.c /^coproc_close (cp)$/;" f +coproc_close r_bash/src/lib.rs /^ pub fn coproc_close(arg1: *mut coproc);$/;" f +coproc_closeall execute_cmd.c /^coproc_closeall ()$/;" f typeref:typename:void +coproc_closeall r_bash/src/lib.rs /^ pub fn coproc_closeall();$/;" f +coproc_com builtins_rust/cd/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/command/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/common/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/complete/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/declare/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/fc/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/fg_bg/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/getopts/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/jobs/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/kill/src/intercdep.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/pushd/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/setattr/src/intercdep.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/source/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com builtins_rust/type/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com command.h /^typedef struct coproc_com {$/;" s +coproc_com r_bash/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com r_glob/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_com r_readline/src/lib.rs /^pub struct coproc_com {$/;" s +coproc_dispose execute_cmd.c /^coproc_dispose (cp)$/;" f +coproc_dispose r_bash/src/lib.rs /^ pub fn coproc_dispose(arg1: *mut coproc);$/;" f +coproc_fdchk execute_cmd.c /^coproc_fdchk (fd)$/;" f +coproc_fdchk r_bash/src/lib.rs /^ pub fn coproc_fdchk(arg1: ::std::os::raw::c_int);$/;" f +coproc_fdclose execute_cmd.c /^coproc_fdclose (cp, fd)$/;" f +coproc_fdclose r_bash/src/lib.rs /^ pub fn coproc_fdclose(arg1: *mut coproc, arg2: ::std::os::raw::c_int);$/;" f +coproc_fdrestore execute_cmd.c /^coproc_fdrestore (cp)$/;" f +coproc_fdrestore r_bash/src/lib.rs /^ pub fn coproc_fdrestore(arg1: *mut coproc);$/;" f +coproc_fdsave execute_cmd.c /^coproc_fdsave (cp)$/;" f +coproc_fdsave r_bash/src/lib.rs /^ pub fn coproc_fdsave(arg1: *mut coproc);$/;" f +coproc_flush execute_cmd.c /^coproc_flush ()$/;" f typeref:typename:void +coproc_flush r_bash/src/lib.rs /^ pub fn coproc_flush();$/;" f +coproc_free execute_cmd.c /^coproc_free (cp)$/;" f file: +coproc_init execute_cmd.c /^coproc_init (cp)$/;" f +coproc_init r_bash/src/lib.rs /^ pub fn coproc_init(arg1: *mut coproc);$/;" f +coproc_list execute_cmd.c /^cplist_t coproc_list = {0, 0, 0};$/;" v typeref:typename:cplist_t +coproc_pidchk execute_cmd.c /^coproc_pidchk (pid, status)$/;" f +coproc_pidchk r_bash/src/lib.rs /^ pub fn coproc_pidchk(arg1: pid_t, arg2: ::std::os::raw::c_int);$/;" f +coproc_pidchk r_jobs/src/lib.rs /^ fn coproc_pidchk(_: pid_t, _: c_int);$/;" f +coproc_rclose execute_cmd.c /^coproc_rclose (cp, fd)$/;" f +coproc_rclose r_bash/src/lib.rs /^ pub fn coproc_rclose(arg1: *mut coproc, arg2: ::std::os::raw::c_int);$/;" f +coproc_reap execute_cmd.c /^coproc_reap ()$/;" f typeref:typename:void +coproc_reap r_bash/src/lib.rs /^ pub fn coproc_reap();$/;" f +coproc_reap r_jobs/src/lib.rs /^ fn coproc_reap();$/;" f +coproc_setstatus execute_cmd.c /^coproc_setstatus (cp, status)$/;" f file: +coproc_setvars execute_cmd.c /^coproc_setvars (cp)$/;" f +coproc_setvars r_bash/src/lib.rs /^ pub fn coproc_setvars(arg1: *mut coproc);$/;" f +coproc_unsetvars execute_cmd.c /^coproc_unsetvars (cp)$/;" f +coproc_unsetvars r_bash/src/lib.rs /^ pub fn coproc_unsetvars(arg1: *mut coproc);$/;" f +coproc_wclose execute_cmd.c /^coproc_wclose (cp, fd)$/;" f +coproc_wclose r_bash/src/lib.rs /^ pub fn coproc_wclose(arg1: *mut coproc, arg2: ::std::os::raw::c_int);$/;" f +coprocesses configure.ac /^AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and /;" e +copy vendor/futures-util/src/io/copy.rs /^pub fn copy(reader: R, writer: &mut W) -> Copy<'_, R, W>$/;" f +copy vendor/futures-util/src/io/mod.rs /^mod copy;$/;" n +copy_arith_command copy_cmd.c /^copy_arith_command (com)$/;" f file: +copy_arith_for_command copy_cmd.c /^copy_arith_for_command (com)$/;" f file: +copy_bucket_array hashlib.c /^copy_bucket_array (ba, cpdata)$/;" f file: +copy_buf vendor/futures-util/src/io/copy_buf.rs /^pub fn copy_buf(reader: R, writer: &mut W) -> CopyBuf<'_, R, W>$/;" f +copy_buf vendor/futures-util/src/io/mod.rs /^mod copy_buf;$/;" n +copy_buf_abortable vendor/futures-util/src/io/copy_buf_abortable.rs /^pub fn copy_buf_abortable($/;" f +copy_buf_abortable vendor/futures-util/src/io/mod.rs /^mod copy_buf_abortable;$/;" n +copy_buffered_stream input.c /^copy_buffered_stream (bp)$/;" f file: +copy_builtin builtins/mkbuiltins.c /^copy_builtin (builtin)$/;" f +copy_case_clause copy_cmd.c /^copy_case_clause (clause)$/;" f file: +copy_case_clauses copy_cmd.c /^copy_case_clauses (clauses)$/;" f file: +copy_case_command copy_cmd.c /^copy_case_command (com)$/;" f file: +copy_cmd.o Makefile.in /^copy_cmd.o: bashansi.h assoc.h $(BASHINCDIR)\/ocache.h $(BASHINCDIR)\/chartypes.h$/;" t +copy_cmd.o Makefile.in /^copy_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib./;" t +copy_cmd.o Makefile.in /^copy_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h$/;" t +copy_cmd.o Makefile.in /^copy_cmd.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +copy_cmd.o Makefile.in /^copy_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR/;" t +copy_command copy_cmd.c /^copy_command (command)$/;" f +copy_command r_bash/src/lib.rs /^ pub fn copy_command(arg1: *mut COMMAND) -> *mut COMMAND;$/;" f +copy_command r_glob/src/lib.rs /^ pub fn copy_command(arg1: *mut COMMAND) -> *mut COMMAND;$/;" f +copy_command r_readline/src/lib.rs /^ pub fn copy_command(arg1: *mut COMMAND) -> *mut COMMAND;$/;" f +copy_cond_command copy_cmd.c /^copy_cond_command (com)$/;" f file: +copy_coproc_command copy_cmd.c /^copy_coproc_command (com)$/;" f file: +copy_fifo_list r_bash/src/lib.rs /^ pub fn copy_fifo_list(arg1: *mut ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void;$/;" f +copy_fifo_list subst.c /^copy_fifo_list (sizep)$/;" f +copy_file_range r_bash/src/lib.rs /^ pub fn copy_file_range($/;" f +copy_file_range r_glob/src/lib.rs /^ pub fn copy_file_range($/;" f +copy_file_range r_readline/src/lib.rs /^ pub fn copy_file_range($/;" f +copy_file_range vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn copy_file_range($/;" f +copy_file_range vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn copy_file_range($/;" f +copy_file_range vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn copy_file_range($/;" f +copy_for_command copy_cmd.c /^copy_for_command (com)$/;" f file: +copy_function_def copy_cmd.c /^copy_function_def (com)$/;" f +copy_function_def r_bash/src/lib.rs /^ pub fn copy_function_def(arg1: *mut FUNCTION_DEF) -> *mut FUNCTION_DEF;$/;" f +copy_function_def r_glob/src/lib.rs /^ pub fn copy_function_def(arg1: *mut FUNCTION_DEF) -> *mut FUNCTION_DEF;$/;" f +copy_function_def r_readline/src/lib.rs /^ pub fn copy_function_def(arg1: *mut FUNCTION_DEF) -> *mut FUNCTION_DEF;$/;" f +copy_function_def_contents copy_cmd.c /^copy_function_def_contents (old, new_def)$/;" f +copy_function_def_contents r_bash/src/lib.rs /^ pub fn copy_function_def_contents($/;" f +copy_function_def_contents r_glob/src/lib.rs /^ pub fn copy_function_def_contents($/;" f +copy_function_def_contents r_readline/src/lib.rs /^ pub fn copy_function_def_contents($/;" f +copy_group_command copy_cmd.c /^copy_group_command (com)$/;" f file: +copy_history_entry lib/readline/history.c /^copy_history_entry (HIST_ENTRY *hist)$/;" f typeref:typename:HIST_ENTRY * +copy_history_entry r_readline/src/lib.rs /^ pub fn copy_history_entry(arg1: *mut HIST_ENTRY) -> *mut HIST_ENTRY;$/;" f +copy_if_command copy_cmd.c /^copy_if_command (com)$/;" f file: +copy_redirect copy_cmd.c /^copy_redirect (redirect)$/;" f +copy_redirect r_bash/src/lib.rs /^ pub fn copy_redirect(arg1: *mut REDIRECT) -> *mut REDIRECT;$/;" f +copy_redirect r_glob/src/lib.rs /^ pub fn copy_redirect(arg1: *mut REDIRECT) -> *mut REDIRECT;$/;" f +copy_redirect r_readline/src/lib.rs /^ pub fn copy_redirect(arg1: *mut REDIRECT) -> *mut REDIRECT;$/;" f +copy_redirects copy_cmd.c /^copy_redirects (list)$/;" f +copy_redirects r_bash/src/lib.rs /^ pub fn copy_redirects(arg1: *mut REDIRECT) -> *mut REDIRECT;$/;" f +copy_redirects r_glob/src/lib.rs /^ pub fn copy_redirects(arg1: *mut REDIRECT) -> *mut REDIRECT;$/;" f +copy_redirects r_readline/src/lib.rs /^ pub fn copy_redirects(arg1: *mut REDIRECT) -> *mut REDIRECT;$/;" f +copy_simple_command copy_cmd.c /^copy_simple_command (com)$/;" f file: +copy_string_array builtins/mkbuiltins.c /^copy_string_array (array)$/;" f +copy_subshell_command copy_cmd.c /^copy_subshell_command (com)$/;" f file: +copy_variable r_bash/src/lib.rs /^ pub fn copy_variable(arg1: *mut SHELL_VAR) -> *mut SHELL_VAR;$/;" f +copy_variable variables.c /^copy_variable (var)$/;" f +copy_while_command copy_cmd.c /^copy_while_command (com)$/;" f file: +copy_word copy_cmd.c /^copy_word (w)$/;" f +copy_word r_bash/src/lib.rs /^ pub fn copy_word(arg1: *mut WORD_DESC) -> *mut WORD_DESC;$/;" f +copy_word r_glob/src/lib.rs /^ pub fn copy_word(arg1: *mut WORD_DESC) -> *mut WORD_DESC;$/;" f +copy_word r_readline/src/lib.rs /^ pub fn copy_word(arg1: *mut WORD_DESC) -> *mut WORD_DESC;$/;" f +copy_word_list builtins_rust/command/src/lib.rs /^ fn copy_word_list(_: *mut WordList) -> *mut WordList;$/;" f +copy_word_list builtins_rust/common/src/lib.rs /^ fn copy_word_list(list: *mut WordList) -> *mut WordList;$/;" f +copy_word_list builtins_rust/jobs/src/lib.rs /^ fn copy_word_list(list: *mut WordList) -> *mut WordList;$/;" f +copy_word_list copy_cmd.c /^copy_word_list (list)$/;" f +copy_word_list r_bash/src/lib.rs /^ pub fn copy_word_list(arg1: *mut WORD_LIST) -> *mut WORD_LIST;$/;" f +copy_word_list r_glob/src/lib.rs /^ pub fn copy_word_list(arg1: *mut WORD_LIST) -> *mut WORD_LIST;$/;" f +copy_word_list r_readline/src/lib.rs /^ pub fn copy_word_list(arg1: *mut WORD_LIST) -> *mut WORD_LIST;$/;" f +copyfile vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn copyfile($/;" f +copyfile_flags_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type copyfile_flags_t = u32;$/;" t +copyfile_state_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type copyfile_state_t = *mut ::c_void;$/;" t +core vendor/async-trait/tests/test.rs /^mod core {}$/;" n +core vendor/bitflags/tests/compile-pass/redefinition/core.rs /^mod core {}$/;" n +core vendor/fluent-syntax/src/parser/mod.rs /^mod core;$/;" n +core_dump sig.c /^ int core_dump;$/;" m struct:termsig typeref:typename:int file: +core_reexport vendor/pin-utils/src/lib.rs /^pub mod core_reexport {$/;" n +core_std vendor/autocfg/src/tests.rs /^ fn core_std(&self, path: &str) -> String {$/;" P implementation:AutoCfg +corecrt vendor/winapi/src/ucrt/mod.rs /^#[cfg(feature = "corecrt")] pub mod corecrt;$/;" n +corpus vendor/memchr/src/tests/memchr/testdata.rs /^ corpus: &'static str,$/;" m struct:MemchrTestStatic +corpus vendor/memchr/src/tests/memchr/testdata.rs /^ corpus: String,$/;" m struct:MemchrTest +corpus vendor/memchr/src/tests/memchr/testdata.rs /^ fn corpus(&self, align: usize) -> &str {$/;" P implementation:MemchrTest +corsym vendor/winapi/src/um/mod.rs /^#[cfg(feature = "corsym")] pub mod corsym;$/;" n +count lib/readline/rlprivate.h /^ int count;$/;" m struct:__rl_callback_generic_arg typeref:typename:int +count lib/readline/rlprivate.h /^ int count;$/;" m struct:_rl_cmd typeref:typename:int +count r_readline/src/lib.rs /^ pub count: ::std::os::raw::c_int,$/;" m struct:__rl_callback_generic_arg +count r_readline/src/lib.rs /^ pub count: ::std::os::raw::c_int,$/;" m struct:_rl_cmd +count variables.c /^ int count;$/;" m struct:saved_dollar_vars typeref:typename:int file: +count vendor/futures-util/src/stream/stream/mod.rs /^ fn count(self) -> Count$/;" P interface:StreamExt +count vendor/futures-util/src/stream/stream/mod.rs /^mod count;$/;" n +count vendor/nix/src/sched.rs /^ pub const fn count() -> usize {$/;" P implementation:sched_affinity::CpuSet +count vendor/smallvec/src/tests.rs /^ count: usize,$/;" m struct:insert_many_panic::BadIter +count_all_jobs jobs.c /^count_all_jobs ()$/;" f typeref:typename:int +count_all_jobs nojobs.c /^count_all_jobs ()$/;" f typeref:typename:int +count_all_jobs r_bash/src/lib.rs /^ pub fn count_all_jobs() -> ::std::os::raw::c_int;$/;" f +count_all_jobs r_jobs/src/lib.rs /^pub unsafe extern "C" fn count_all_jobs() -> c_int {$/;" f +count_ones vendor/stdext/src/num/integer.rs /^ fn count_ones(self) -> u32;$/;" P interface:Integer +count_zeros vendor/stdext/src/num/integer.rs /^ fn count_zeros(self) -> u32;$/;" P interface:Integer +countdown vendor/futures-channel/tests/mpsc-close.rs /^ countdown: usize,$/;" m struct:stress_try_send_as_receiver_closes::TestTask +counter lib/intl/dcigettext.c /^ int counter;$/;" m struct:known_translation_t typeref:typename:int file: +counter lib/sh/snprintf.c /^ int counter;$/;" m struct:DATA typeref:typename:int file: +cow vendor/memchr/src/lib.rs /^mod cow;$/;" n +cp lib/intl/dcigettext.c /^ char *cp = single_locale;$/;" v typeref:typename:char * +cp lib/intl/plural-exp.h /^ const char *cp;$/;" m struct:parse_args typeref:typename:const char * +cpe_alloc execute_cmd.c /^cpe_alloc (cp)$/;" f file: +cpe_dispose execute_cmd.c /^cpe_dispose (cpe)$/;" f file: +cpelement execute_cmd.c /^typedef struct cpelement$/;" s file: +cpelement_t execute_cmd.c /^cpelement_t;$/;" t typeref:struct:cpelement file: +cpl_add execute_cmd.c /^cpl_add (cp)$/;" f file: +cpl_closeall execute_cmd.c /^cpl_closeall ()$/;" f typeref:typename:void file: +cpl_delete execute_cmd.c /^cpl_delete (pid)$/;" f file: +cpl_fdchk execute_cmd.c /^cpl_fdchk (fd)$/;" f file: +cpl_firstactive execute_cmd.c /^cpl_firstactive ()$/;" f typeref:typename:pid_t file: +cpl_flush execute_cmd.c /^cpl_flush ()$/;" f typeref:typename:void file: +cpl_reap execute_cmd.c /^cpl_reap ()$/;" f typeref:typename:void file: +cpl_search execute_cmd.c /^cpl_search (pid)$/;" f file: +cpl_searchbyname execute_cmd.c /^cpl_searchbyname (name)$/;" f file: +cplist execute_cmd.c /^typedef struct cplist$/;" s file: +cplist_t execute_cmd.c /^cplist_t;$/;" t typeref:struct:cplist file: +cpos_adjusted lib/readline/display.c /^static int cpos_adjusted;$/;" v typeref:typename:int file: +cpos_buffer_position lib/readline/display.c /^static int cpos_buffer_position;$/;" v typeref:typename:int file: +cprintf print_cmd.c /^cprintf (const char *control, ...)$/;" f typeref:typename:void file: +cprintf r_print_cmd/src/lib.rs /^ fn cprintf(control:*const c_char,...);$/;" f +cprintf_1 r_print_cmd/src/lib.rs /^unsafe fn cprintf_1(str:*const c_char)$/;" f +cprintf_2 r_print_cmd/src/lib.rs /^unsafe fn cprintf_2(str1:*const c_char,str2:*mut c_char)$/;" f +cpu_set vendor/nix/src/sched.rs /^ cpu_set: libc::cpu_set_t,$/;" m struct:sched_affinity::CpuSet +cpu_set_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type cpu_set_t = cpumask_t;$/;" t +cpu_subtype_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type cpu_subtype_t = integer_t;$/;" t +cpu_type_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type cpu_type_t = integer_t;$/;" t +cpuid_t vendor/libc/src/solid/mod.rs /^pub type cpuid_t = c_ulong;$/;" t +cpuid_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type cpuid_t = u64;$/;" t +cpulevel_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type cpulevel_t = ::c_int;$/;" t +cpuset vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cpuset(setid: *mut ::cpusetid_t) -> ::c_int;$/;" f +cpuset_getaffinity vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cpuset_getaffinity($/;" f +cpuset_getdomain vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn cpuset_getdomain($/;" f +cpuset_getdomain vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn cpuset_getdomain($/;" f +cpuset_getid vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cpuset_getid($/;" f +cpuset_setaffinity vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cpuset_setaffinity($/;" f +cpuset_setdomain vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn cpuset_setdomain($/;" f +cpuset_setdomain vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn cpuset_setdomain($/;" f +cpuset_setid vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn cpuset_setid(which: cpuwhich_t, id: ::id_t, setid: ::cpusetid_t) -> ::c_int;$/;" f +cpuset_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type cpuset_t = cpumask_t;$/;" t +cpuset_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type cpuset_t = _cpuset;$/;" t +cpuset_t vendor/libc/src/vxworks/mod.rs /^pub type cpuset_t = u32;$/;" t +cpusetid_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type cpusetid_t = ::c_int;$/;" t +cpuwhich_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type cpuwhich_t = ::c_int;$/;" t +cr lib/readline/display.c /^cr (void)$/;" f typeref:typename:void file: +cr2 builtins_rust/wait/src/signal.rs /^ pub cr2: __uint64_t,$/;" m struct:sigcontext +cr2 r_bash/src/lib.rs /^ pub cr2: __uint64_t,$/;" m struct:sigcontext +cr2 r_glob/src/lib.rs /^ pub cr2: __uint64_t,$/;" m struct:sigcontext +cr2 r_readline/src/lib.rs /^ pub cr2: __uint64_t,$/;" m struct:sigcontext +cr_whitespace bashline.c /^#define cr_whitespace(/;" d file: +cr_whitespace expr.c /^#define cr_whitespace(/;" d file: +crawl vendor/thiserror-impl/src/generics.rs /^fn crawl(in_scope: &ParamsInScope, ty: &Type, found: &mut bool) {$/;" f +creat r_bash/src/lib.rs /^ pub fn creat(__file: *const ::std::os::raw::c_char, __mode: mode_t) -> ::std::os::raw::c_int/;" f +creat vendor/libc/src/fuchsia/mod.rs /^ pub fn creat(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +creat vendor/libc/src/solid/mod.rs /^ pub fn creat(arg1: *const c_char, arg2: c_int) -> c_int;$/;" f +creat vendor/libc/src/unix/mod.rs /^ pub fn creat(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +creat vendor/libc/src/vxworks/mod.rs /^ pub fn creat(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +creat vendor/libc/src/wasi.rs /^ pub fn creat(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +creat vendor/libc/src/windows/mod.rs /^ pub fn creat(path: *const c_char, mode: ::c_int) -> ::c_int;$/;" f +creat64 r_bash/src/lib.rs /^ pub fn creat64(__file: *const ::std::os::raw::c_char, __mode: mode_t) -> ::std::os::raw::c_i/;" f +creat64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn creat64(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +create vendor/futures-executor/src/thread_pool.rs /^ pub fn create(&mut self) -> Result {$/;" P implementation:ThreadPoolBuilder +create vendor/intl_pluralrules/src/lib.rs /^ pub fn create>($/;" P implementation:PluralRules +create vendor/syn/src/buffer.rs /^ unsafe fn create(mut ptr: *const Entry, scope: *const Entry) -> Self {$/;" P implementation:Cursor +create_area vendor/libc/src/unix/haiku/native.rs /^ pub fn create_area($/;" f +create_flags vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^ pub create_flags: ::c_uint,$/;" m struct:pthread_attr_t +create_from_arc vendor/futures/tests/task_arc_wake.rs /^fn create_from_arc() {$/;" f +create_port vendor/libc/src/unix/haiku/native.rs /^ pub fn create_port(capacity: i32, name: *const ::c_char) -> port_id;$/;" f +create_sem vendor/libc/src/unix/haiku/native.rs /^ pub fn create_sem(count: i32, name: *const ::c_char) -> sem_id;$/;" f +create_signalfd vendor/nix/src/sys/signalfd.rs /^ fn create_signalfd() {$/;" f module:tests +create_signalfd_with_opts vendor/nix/src/sys/signalfd.rs /^ fn create_signalfd_with_opts() {$/;" f module:tests +create_token_buffer vendor/syn/benches/file.rs /^fn create_token_buffer(b: &mut Bencher) {$/;" f +create_variable_tables variables.c /^create_variable_tables ()$/;" f typeref:typename:void file: +critical_pos vendor/memchr/src/memmem/twoway.rs /^ critical_pos: usize,$/;" m struct:TwoWay +crlf lib/readline/compat.c /^crlf (void)$/;" f typeref:typename:int +crypt r_bash/src/lib.rs /^ pub fn crypt($/;" f +crypt r_glob/src/lib.rs /^ pub fn crypt($/;" f +crypt r_readline/src/lib.rs /^ pub fn crypt($/;" f +cs builtins_rust/wait/src/signal.rs /^ pub cs: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +cs include/ocache.h /^ int cs; \/* cache size, number of objects *\/$/;" m struct:objcache typeref:typename:int +cs r_bash/src/lib.rs /^ pub cs: ::std::os::raw::c_int,$/;" m struct:objcache +cs r_bash/src/lib.rs /^ pub cs: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +cs r_glob/src/lib.rs /^ pub cs: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +cs r_readline/src/lib.rs /^ pub cs: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +cs_byte vendor/winapi/src/shared/rpcndr.rs /^pub type cs_byte = byte;$/;" t +cs_change vendor/nix/test/sys/test_ioctl.rs /^ cs_change: u8,$/;" m struct:linux_ioctls::spi_ioc_transfer +cstr_cow_from_bytes vendor/libloading/src/util.rs /^pub(crate) fn cstr_cow_from_bytes(slice: &[u8]) -> Result, Error> {$/;" f +ctags lib/intl/Makefile.in /^ctags: CTAGS$/;" t +ctal vendor/tinystr/benches/tinystr.rs /^ macro_rules! ctal {$/;" M function:convert_to_ascii_lowercase +ctat vendor/tinystr/benches/tinystr.rs /^ macro_rules! ctat {$/;" M function:convert_to_ascii_titlecase +ctau vendor/tinystr/benches/tinystr.rs /^ macro_rules! ctau {$/;" M function:convert_to_ascii_uppercase +ctermid r_bash/src/lib.rs /^ pub fn ctermid(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +ctermid r_readline/src/lib.rs /^ pub fn ctermid(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +ctermid vendor/libc/src/unix/haiku/mod.rs /^ pub fn ctermid(s: *mut ::c_char) -> *mut ::c_char;$/;" f +ctermid vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn ctermid(s: *mut ::c_char) -> *mut ::c_char;$/;" f +ctermid vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn ctermid(s: *mut ::c_char) -> *mut ::c_char;$/;" f +ctid vendor/libc/src/unix/solarish/mod.rs /^ ctid: ::ctid_t,$/;" m struct:siginfo_kill +ctid vendor/libc/src/unix/solarish/mod.rs /^ ctid: ::ctid_t,$/;" m struct:siginfo_sigcld +ctid_t vendor/libc/src/unix/solarish/mod.rs /^pub type ctid_t = ::id_t;$/;" t +ctime r_bash/src/lib.rs /^ pub fn ctime(__timer: *const time_t) -> *mut ::std::os::raw::c_char;$/;" f +ctime r_readline/src/lib.rs /^ pub fn ctime(__timer: *const time_t) -> *mut ::std::os::raw::c_char;$/;" f +ctime vendor/libc/src/solid/mod.rs /^ pub fn ctime(arg1: *const time_t) -> *mut c_char;$/;" f +ctime_r r_bash/src/lib.rs /^ pub fn ctime_r($/;" f +ctime_r r_readline/src/lib.rs /^ pub fn ctime_r($/;" f +ctime_r vendor/libc/src/solid/mod.rs /^ pub fn ctime_r(arg1: *const time_t, arg2: *mut c_char) -> *mut c_char;$/;" f +ctime_r vendor/libc/src/wasi.rs /^ pub fn ctime_r(a: *const time_t, b: *mut c_char) -> *mut c_char;$/;" f +ctypes vendor/winapi/src/lib.rs /^pub mod ctypes {$/;" n +cu vendor/tinystr/benches/construct.rs /^ macro_rules! cu {$/;" M function:construct_unchecked +curencoding lib/sh/fnxform.c /^curencoding ()$/;" f typeref:typename:char * file: +curlval expr.c /^static struct lvalue curlval = {0, 0, 0, -1};$/;" v typeref:struct:lvalue file: +curmsgs vendor/nix/src/mqueue.rs /^ pub const fn curmsgs(&self) -> mq_attr_member_t {$/;" P implementation:MqAttr +curpos support/man2html.c /^static int curpos = 0;$/;" v typeref:typename:int file: +curr vendor/fluent-fallback/src/cache.rs /^ curr: usize,$/;" m struct:AsyncCacheStream +curr vendor/fluent-fallback/src/cache.rs /^ curr: usize,$/;" m struct:CacheIter +curr_prefix lib/intl/relocatable.c /^static char *curr_prefix;$/;" v typeref:typename:char * file: +curr_prefix_len lib/intl/relocatable.c /^static size_t curr_prefix_len;$/;" v typeref:typename:size_t file: +currency vendor/fluent-bundle/src/types/number.rs /^ pub currency: Option,$/;" m struct:FluentNumberOptions +currency_display vendor/fluent-bundle/src/types/number.rs /^ pub currency_display: FluentNumberCurrencyDisplayStyle,$/;" m struct:FluentNumberOptions +currency_symbol r_bash/src/lib.rs /^ pub currency_symbol: *mut ::std::os::raw::c_char,$/;" m struct:lconv +current vendor/smallvec/src/lib.rs /^ current: usize,$/;" m struct:IntoIter +current_address lib/malloc/alloca.c /^ long current_address; \/* Current stack segment address. *\/$/;" m struct:stk_stat typeref:typename:long file: +current_builtin builtins/mkbuiltins.c /^current_builtin (directive, defs)$/;" f +current_builtin builtins_rust/common/src/lib.rs /^ static mut current_builtin: *mut builtin;$/;" v +current_builtin builtins_rust/help/src/lib.rs /^ static mut current_builtin: *mut builtin;$/;" v +current_builtin r_bash/src/lib.rs /^ pub static mut current_builtin: *mut builtin;$/;" v +current_command_first_line_comment r_bash/src/lib.rs /^ pub static mut current_command_first_line_comment: ::std::os::raw::c_int;$/;" v +current_command_first_line_saved bashhist.c /^int current_command_first_line_saved = 0;$/;" v typeref:typename:int +current_command_first_line_saved builtins_rust/history/src/intercdep.rs /^ pub static mut current_command_first_line_saved: c_int;$/;" v +current_command_first_line_saved r_bash/src/lib.rs /^ pub static mut current_command_first_line_saved: ::std::os::raw::c_int;$/;" v +current_command_first_line_saved r_bashhist/src/lib.rs /^pub static mut current_command_first_line_saved:c_int = 0;$/;" v +current_command_line_comment bashhist.c /^int current_command_line_comment = 0;$/;" v typeref:typename:int +current_command_line_comment r_bashhist/src/lib.rs /^pub static mut current_command_line_comment:c_int = 0;$/;" v +current_command_line_count builtins_rust/history/src/intercdep.rs /^ pub static mut current_command_line_count: c_int;$/;" v +current_command_line_count r_bash/src/lib.rs /^ pub current_command_line_count: ::std::os::raw::c_int,$/;" m struct:_sh_parser_state_t +current_command_line_count r_bash/src/lib.rs /^ pub static mut current_command_line_count: ::std::os::raw::c_int;$/;" v +current_command_line_count shell.h /^ int current_command_line_count;$/;" m struct:_sh_parser_state_t typeref:typename:int +current_command_number r_bash/src/lib.rs /^ pub static mut current_command_number: ::std::os::raw::c_int;$/;" v +current_command_number shell.c /^int current_command_number = 1;$/;" v typeref:typename:int +current_command_subst_pid subst.c /^pid_t current_command_subst_pid = NO_PID;$/;" v typeref:typename:pid_t +current_depth vendor/async-trait/tests/test.rs /^ current_depth: AtomicU64,$/;" m struct:issue45::SubscriberInner +current_fds_to_close execute_cmd.c /^struct fd_bitmap *current_fds_to_close = (struct fd_bitmap *)NULL;$/;" v typeref:struct:fd_bitmap * +current_font support/man2html.c /^static int current_font = 0;$/;" v typeref:typename:int file: +current_history lib/readline/history.c /^current_history (void)$/;" f typeref:typename:HIST_ENTRY * +current_history r_readline/src/lib.rs /^ pub fn current_history() -> *mut HIST_ENTRY;$/;" f +current_host_name r_bash/src/lib.rs /^ pub static mut current_host_name: *mut ::std::os::raw::c_char;$/;" v +current_host_name shell.c /^char *current_host_name = (char *)NULL;$/;" v typeref:typename:char * +current_macro lib/readline/macro.c /^static char *current_macro = (char *)NULL;$/;" v typeref:typename:char * file: +current_macro_index lib/readline/macro.c /^static int current_macro_index;$/;" v typeref:typename:int file: +current_macro_size lib/readline/macro.c /^static int current_macro_size;$/;" v typeref:typename:int file: +current_prompt_string r_bash/src/lib.rs /^ pub static mut current_prompt_string: *mut ::std::os::raw::c_char;$/;" v +current_readline_init_file lib/readline/bind.c /^static const char *current_readline_init_file;$/;" v typeref:typename:const char * file: +current_readline_init_include_level lib/readline/bind.c /^static int current_readline_init_include_level;$/;" v typeref:typename:int file: +current_readline_init_lineno lib/readline/bind.c /^static int current_readline_init_lineno;$/;" v typeref:typename:int file: +current_size lib/malloc/alloca.c /^ long current_size; \/* Current stack segment size. This$/;" m struct:stk_stat typeref:typename:long file: +current_size support/man2html.c /^static int current_size = 0;$/;" v typeref:typename:int file: +current_to_ptr vendor/futures-util/src/compat/compat03as01.rs /^ fn current_to_ptr(current: &Current) -> *const () {$/;" f method:Current::as_waker +current_token r_bash/src/lib.rs /^ pub static mut current_token: ::std::os::raw::c_int;$/;" v +current_user builtins_rust/ulimit/src/lib.rs /^ static mut current_user: user_info;$/;" v +current_user r_bash/src/lib.rs /^ pub static mut current_user: user_info;$/;" v +current_user shell.c /^struct user_info current_user =$/;" v typeref:struct:user_info +current_working_directory jobs.c /^current_working_directory ()$/;" f typeref:typename:char * file: +current_working_directory r_jobs/src/lib.rs /^unsafe extern "C" fn current_working_directory() -> *mut c_char$/;" f +currently_executing_command execute_cmd.c /^static COMMAND *currently_executing_command;$/;" v typeref:typename:COMMAND * file: +currently_reading_init_file lib/readline/bind.c /^static int currently_reading_init_file;$/;" v typeref:typename:int file: +curses configure.ac /^AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termc/;" w +cursor vendor/futures-util/src/io/mod.rs /^mod cursor;$/;" n +cursor vendor/syn/src/lookahead.rs /^ cursor: Cursor<'a>,$/;" m struct:Lookahead1 +cursor vendor/syn/src/parse.rs /^ cursor: Cursor<'c>,$/;" m struct:StepCursor +cursor vendor/syn/src/parse.rs /^ pub fn cursor(&self) -> Cursor<'a> {$/;" P implementation:ParseBuffer +cursor_asyncwrite_box vendor/futures/tests/io_cursor.rs /^fn cursor_asyncwrite_box() {$/;" f +cursor_asyncwrite_vec vendor/futures/tests/io_cursor.rs /^fn cursor_asyncwrite_vec() {$/;" f +curtok expr.c /^ int curtok, lasttok;$/;" m struct:__anonfc32de750108 typeref:typename:int file: +curtok expr.c /^static int curtok; \/* the current token *\/$/;" v typeref:typename:int file: +cuserid r_bash/src/lib.rs /^ pub fn cuserid(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +cuserid r_readline/src/lib.rs /^ pub fn cuserid(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +custom_filename_quote_characters bashline.c /^static char *custom_filename_quote_characters = 0;$/;" v typeref:typename:char * file: +custom_keyword vendor/syn/src/custom_keyword.rs /^macro_rules! custom_keyword {$/;" M +custom_keyword vendor/syn/src/lib.rs /^mod custom_keyword;$/;" n +custom_punctuation vendor/syn/src/custom_punctuation.rs /^macro_rules! custom_punctuation {$/;" M +custom_punctuation vendor/syn/src/lib.rs /^mod custom_punctuation;$/;" n +custom_punctuation_len vendor/syn/src/custom_punctuation.rs /^macro_rules! custom_punctuation_len {$/;" M +custom_punctuation_repr vendor/syn/src/custom_punctuation.rs /^macro_rules! custom_punctuation_repr {$/;" M +custom_punctuation_unexpected vendor/syn/src/custom_punctuation.rs /^macro_rules! custom_punctuation_unexpected {$/;" M +cval lib/sh/casemod.c /^# define cval(/;" d file: +cval lib/sh/casemod.c /^cval (s, i)$/;" f file: +cwd builtins_rust/wait/src/signal.rs /^ pub cwd: __uint16_t,$/;" m struct:_fpstate +cwd builtins_rust/wait/src/signal.rs /^ pub cwd: __uint16_t,$/;" m struct:_libc_fpstate +cwd r_bash/src/lib.rs /^ pub cwd: __uint16_t,$/;" m struct:_fpstate +cwd r_bash/src/lib.rs /^ pub cwd: __uint16_t,$/;" m struct:_libc_fpstate +cwd r_glob/src/lib.rs /^ pub cwd: __uint16_t,$/;" m struct:_fpstate +cwd r_glob/src/lib.rs /^ pub cwd: __uint16_t,$/;" m struct:_libc_fpstate +cwd r_readline/src/lib.rs /^ pub cwd: __uint16_t,$/;" m struct:_fpstate +cwd r_readline/src/lib.rs /^ pub cwd: __uint16_t,$/;" m struct:_libc_fpstate +cycle vendor/futures-util/src/stream/stream/mod.rs /^ fn cycle(self) -> Cycle$/;" P interface:StreamExt +cycle vendor/futures-util/src/stream/stream/mod.rs /^mod cycle;$/;" n +d variables.h /^ double d; \/* floating point number *\/$/;" m union:_value typeref:typename:double +d vendor/libloading/src/test_helpers.rs /^ d: u8$/;" m struct:S +d vendor/libloading/tests/functions.rs /^ d: u8$/;" m struct:S +d vendor/nix/test/test.rs /^ d: PathBuf,$/;" m struct:DirRestore +d vendor/thiserror/tests/test_display.rs /^ d: usize,$/;" m struct:test_mixed::Error +d2d1 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d2d1")] pub mod d2d1;$/;" n +d2d1_1 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d2d1_1")] pub mod d2d1_1;$/;" n +d2d1_2 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d2d1_2")] pub mod d2d1_2;$/;" n +d2d1_3 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d2d1_3")] pub mod d2d1_3;$/;" n +d2d1effectauthor vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d2d1effectauthor")] pub mod d2d1effectauthor;$/;" n +d2d1effects vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d2d1effects")] pub mod d2d1effects;$/;" n +d2d1effects_1 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d2d1effects_1")] pub mod d2d1effects_1;$/;" n +d2d1effects_2 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d2d1effects_2")] pub mod d2d1effects_2;$/;" n +d2d1svg vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d2d1svg")] pub mod d2d1svg;$/;" n +d2dbasetypes vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d2dbasetypes")] pub mod d2dbasetypes;$/;" n +d3d vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d")] pub mod d3d;$/;" n +d3d10 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d10")] pub mod d3d10;$/;" n +d3d10_1 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d10_1")] pub mod d3d10_1;$/;" n +d3d10_1shader vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d10_1shader")] pub mod d3d10_1shader;$/;" n +d3d10effect vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d10effect")] pub mod d3d10effect;$/;" n +d3d10misc vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d10misc")] pub mod d3d10misc;$/;" n +d3d10sdklayers vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d10sdklayers")] pub mod d3d10sdklayers;$/;" n +d3d10shader vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d10shader")] pub mod d3d10shader;$/;" n +d3d11 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d11")] pub mod d3d11;$/;" n +d3d11_1 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d11_1")] pub mod d3d11_1;$/;" n +d3d11_2 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d11_2")] pub mod d3d11_2;$/;" n +d3d11_3 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d11_3")] pub mod d3d11_3;$/;" n +d3d11_4 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d11_4")] pub mod d3d11_4;$/;" n +d3d11on12 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d11on12")] pub mod d3d11on12;$/;" n +d3d11sdklayers vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d11sdklayers")] pub mod d3d11sdklayers;$/;" n +d3d11shader vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d11shader")] pub mod d3d11shader;$/;" n +d3d11tokenizedprogramformat vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d11tokenizedprogramformat")] pub mod d3d11tokenizedprogramformat;$/;" n +d3d12 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d12")] pub mod d3d12;$/;" n +d3d12sdklayers vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d12sdklayers")] pub mod d3d12sdklayers;$/;" n +d3d12shader vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3d12shader")] pub mod d3d12shader;$/;" n +d3d9 vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "d3d9")] pub mod d3d9;$/;" n +d3d9caps vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "d3d9caps")] pub mod d3d9caps;$/;" n +d3d9types vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "d3d9types")] pub mod d3d9types;$/;" n +d3dcommon vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3dcommon")] pub mod d3dcommon;$/;" n +d3dcompiler vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3dcompiler")] pub mod d3dcompiler;$/;" n +d3dcsx vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3dcsx")] pub mod d3dcsx;$/;" n +d3dkmdt vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "d3dkmdt")] pub mod d3dkmdt;$/;" n +d3dkmthk vendor/winapi/src/km/mod.rs /^#[cfg(feature = "d3dkmthk")] pub mod d3dkmthk;$/;" n +d3dukmdt vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "d3dukmdt")] pub mod d3dukmdt;$/;" n +d3dx10core vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3dx10core")] pub mod d3dx10core;$/;" n +d3dx10math vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3dx10math")] pub mod d3dx10math;$/;" n +d3dx10mesh vendor/winapi/src/um/mod.rs /^#[cfg(feature = "d3dx10mesh")] pub mod d3dx10mesh;$/;" n +d_fileno include/posixdir.h /^# define d_fileno /;" d +d_fileno lib/readline/posixdir.h /^# define d_fileno /;" d +d_ino lib/glob/ndir.h /^ long d_ino; \/* Inode number of entry. *\/$/;" m struct:direct typeref:typename:long +d_ino r_bash/src/lib.rs /^ pub d_ino: __ino64_t,$/;" m struct:dirent64 +d_ino r_bash/src/lib.rs /^ pub d_ino: __ino_t,$/;" m struct:dirent +d_ino r_glob/src/lib.rs /^ pub d_ino: ::std::os::raw::c_long,$/;" m struct:direct +d_ino r_readline/src/lib.rs /^ pub d_ino: __ino64_t,$/;" m struct:dirent64 +d_ino r_readline/src/lib.rs /^ pub d_ino: __ino_t,$/;" m struct:dirent +d_ino vendor/libc/src/wasi.rs /^ pub d_ino: ino_t,$/;" m struct:dirent +d_name lib/glob/ndir.h /^ char d_name[MAXNAMLEN + 1]; \/* Name of file. *\/$/;" m struct:direct typeref:typename:char[] +d_name r_bash/src/lib.rs /^ pub d_name: [::std::os::raw::c_char; 256usize],$/;" m struct:dirent +d_name r_bash/src/lib.rs /^ pub d_name: [::std::os::raw::c_char; 256usize],$/;" m struct:dirent64 +d_name r_glob/src/lib.rs /^ pub d_name: [::std::os::raw::c_char; 16usize],$/;" m struct:direct +d_name r_readline/src/lib.rs /^ pub d_name: [::std::os::raw::c_char; 256usize],$/;" m struct:dirent +d_name r_readline/src/lib.rs /^ pub d_name: [::std::os::raw::c_char; 256usize],$/;" m struct:dirent64 +d_name vendor/libc/src/wasi.rs /^ pub d_name: [c_char; 0],$/;" m struct:dirent +d_namlen lib/glob/ndir.h /^ unsigned short d_namlen; \/* Length of string in d_name. *\/$/;" m struct:direct typeref:typename:unsigned short +d_namlen r_glob/src/lib.rs /^ pub d_namlen: ::std::os::raw::c_ushort,$/;" m struct:direct +d_off r_bash/src/lib.rs /^ pub d_off: __off64_t,$/;" m struct:dirent64 +d_off r_bash/src/lib.rs /^ pub d_off: __off_t,$/;" m struct:dirent +d_off r_readline/src/lib.rs /^ pub d_off: __off64_t,$/;" m struct:dirent64 +d_off r_readline/src/lib.rs /^ pub d_off: __off_t,$/;" m struct:dirent +d_reclen lib/glob/ndir.h /^ unsigned short d_reclen; \/* Length of this record. *\/$/;" m struct:direct typeref:typename:unsigned short +d_reclen r_bash/src/lib.rs /^ pub d_reclen: ::std::os::raw::c_ushort,$/;" m struct:dirent +d_reclen r_bash/src/lib.rs /^ pub d_reclen: ::std::os::raw::c_ushort,$/;" m struct:dirent64 +d_reclen r_glob/src/lib.rs /^ pub d_reclen: ::std::os::raw::c_ushort,$/;" m struct:direct +d_reclen r_readline/src/lib.rs /^ pub d_reclen: ::std::os::raw::c_ushort,$/;" m struct:dirent +d_reclen r_readline/src/lib.rs /^ pub d_reclen: ::std::os::raw::c_ushort,$/;" m struct:dirent64 +d_type r_bash/src/lib.rs /^ pub d_type: ::std::os::raw::c_uchar,$/;" m struct:dirent +d_type r_bash/src/lib.rs /^ pub d_type: ::std::os::raw::c_uchar,$/;" m struct:dirent64 +d_type r_readline/src/lib.rs /^ pub d_type: ::std::os::raw::c_uchar,$/;" m struct:dirent +d_type r_readline/src/lib.rs /^ pub d_type: ::std::os::raw::c_uchar,$/;" m struct:dirent64 +d_type vendor/libc/src/wasi.rs /^ pub d_type: c_uchar,$/;" m struct:dirent +dabbrev_expand_active bashline.c /^static int dabbrev_expand_active = 0;$/;" v typeref:typename:int file: +daddr_t r_bash/src/lib.rs /^pub type daddr_t = __daddr_t;$/;" t +daddr_t r_glob/src/lib.rs /^pub type daddr_t = __daddr_t;$/;" t +daddr_t r_readline/src/lib.rs /^pub type daddr_t = __daddr_t;$/;" t +daddr_t vendor/libc/src/solid/mod.rs /^pub type daddr_t = i64;$/;" t +daddr_t vendor/libc/src/unix/newlib/horizon/mod.rs /^pub type daddr_t = c_long;$/;" t +daddr_t vendor/libc/src/unix/solarish/mod.rs /^pub type daddr_t = ::c_long;$/;" t +daemon r_bash/src/lib.rs /^ pub fn daemon($/;" f +daemon r_glob/src/lib.rs /^ pub fn daemon($/;" f +daemon r_readline/src/lib.rs /^ pub fn daemon($/;" f +daemon vendor/libc/src/fuchsia/mod.rs /^ pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;$/;" f +daemon vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;$/;" f +daemon vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;$/;" f +daemon vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;$/;" f +daemon vendor/libc/src/unix/haiku/mod.rs /^ pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;$/;" f +daemon vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;$/;" f +daemon vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;$/;" f +daemon vendor/libc/src/unix/newlib/mod.rs /^ pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;$/;" f +daemon vendor/libc/src/unix/solarish/mod.rs /^ pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;$/;" f +dallocx vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn dallocx(ptr: *mut ::c_void, flags: ::c_int);$/;" f +data builtins_rust/alias/src/lib.rs /^ pub data: *mut libc::c_void,$/;" m struct:bucket_contents +data builtins_rust/complete/src/lib.rs /^ data: *mut libc::c_void, \/* What we really want. *\/$/;" m struct:BUCKET_CONTENTS +data builtins_rust/declare/src/lib.rs /^ data: *mut c_void, \/* What we really want. *\/$/;" m struct:BUCKET_CONTENTS +data builtins_rust/fc/src/lib.rs /^ data: *mut fn(),$/;" m struct:HIST_ENTRY +data builtins_rust/hash/src/lib.rs /^ pub data: *mut PTR_T, \/\/void * or char *$/;" m struct:bucket_contents +data builtins_rust/history/src/intercdep.rs /^ pub data: histdata_t,$/;" m struct:_hist_entry +data builtins_rust/rlet/src/intercdep.rs /^ pub data: histdata_t,$/;" m struct:_hist_entry +data builtins_rust/setattr/src/intercdep.rs /^ data:* mut c_void, \/* What we really want. *\/$/;" m struct:BUCKET_CONTENTS +data hashlib.h /^ PTR_T data; \/* What we really want. *\/$/;" m struct:bucket_contents typeref:typename:PTR_T +data include/ocache.h /^ PTR_T data;$/;" m struct:objcache typeref:typename:PTR_T +data lib/intl/dcigettext.c /^ char data[ZERO];$/;" m struct:transmem_list typeref:typename:char[] file: +data lib/intl/gettextP.h /^ const char *data;$/;" m struct:loaded_domain typeref:typename:const char * +data lib/intl/loadinfo.h /^ const void *data;$/;" m struct:loaded_l10nfile typeref:typename:const void * +data lib/readline/history.h /^ histdata_t data;$/;" m struct:_hist_entry typeref:typename:histdata_t +data r_bash/src/lib.rs /^ pub data: *mut ::std::os::raw::c_void,$/;" m struct:bucket_contents +data r_bash/src/lib.rs /^ pub data: *mut ::std::os::raw::c_void,$/;" m struct:objcache +data r_bashhist/src/lib.rs /^ pub data: histdata_t,$/;" m struct:_hist_entry +data r_jobs/src/lib.rs /^ pub data: *mut libc::c_void,$/;" m struct:bucket_contents +data r_readline/src/lib.rs /^ pub data: histdata_t,$/;" m struct:_hist_entry +data vendor/futures-channel/src/lock.rs /^ data: UnsafeCell,$/;" m struct:Lock +data vendor/futures-channel/src/oneshot.rs /^ data: Lock>,$/;" m struct:Inner +data vendor/futures/tests/sink.rs /^ data: Vec,$/;" m struct:ManualAllow +data vendor/futures/tests/sink.rs /^ data: Vec,$/;" m struct:ManualFlush +data vendor/futures/tests/stream.rs /^ data: Vec,$/;" m struct:flatten_unordered::DataStream +data vendor/nix/src/sys/epoll.rs /^ pub fn data(&self) -> u64 {$/;" P implementation:EpollEvent +data vendor/nix/src/sys/event.rs /^ pub fn data(&self) -> intptr_t {$/;" P implementation:KEvent +data vendor/smallvec/src/lib.rs /^ data: SmallVec,$/;" m struct:IntoIter +data vendor/smallvec/src/lib.rs /^ data: SmallVecData,$/;" m struct:SmallVec +data vendor/syn/src/lib.rs /^mod data;$/;" n +data vendor/thiserror/tests/test_display.rs /^ data: usize,$/;" m struct:test_field::Inner +data vendor/type-map/src/lib.rs /^ data: hash_map::OccupiedEntry<'a, TypeId, Box>,$/;" m struct:concurrent::OccupiedEntry +data vendor/type-map/src/lib.rs /^ data: hash_map::VacantEntry<'a, TypeId, Box>,$/;" m struct:concurrent::VacantEntry +data vendor/type-map/src/lib.rs /^ data: hash_map::OccupiedEntry<'a, TypeId, Box>,$/;" m struct:OccupiedEntry +data vendor/type-map/src/lib.rs /^ data: hash_map::VacantEntry<'a, TypeId, Box>,$/;" m struct:VacantEntry +data-layout vendor/memchr/src/tests/x86_64-soft_float.json /^ "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",$/;" s +data/cldr-misc-full/README.md vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +data_enum vendor/syn/src/derive.rs /^ pub fn data_enum($/;" f module:parsing +data_struct vendor/syn/src/derive.rs /^ pub fn data_struct($/;" f module:parsing +data_union vendor/syn/src/derive.rs /^ pub fn data_union(input: ParseStream) -> Result<(Option, FieldsNamed)> {$/;" f module:parsing +datadir Makefile.in /^datadir = @datadir@$/;" m +datadir builtins/Makefile.in /^datadir = @datadir@$/;" m +datadir lib/intl/Makefile.in /^datadir = @datadir@$/;" m +datalink vendor/nix/src/sys/socket/addr.rs /^mod datalink {$/;" n +datarootdir Makefile.in /^datarootdir = @datarootdir@$/;" m +datarootdir builtins/Makefile.in /^datarootdir = @datarootdir@$/;" m +datarootdir configure.ac /^AC_SUBST(datarootdir)$/;" s +datarootdir lib/intl/Makefile.in /^datarootdir = @datarootdir@$/;" m +datarootdir lib/readline/Makefile.in /^datarootdir = @datarootdir@$/;" m +datarootdir lib/sh/Makefile.in /^datarootdir = @datarootdir@$/;" m +datetimeapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "datetimeapi")] pub mod datetimeapi;$/;" n +davclnt vendor/winapi/src/um/mod.rs /^#[cfg(feature = "davclnt")] pub mod davclnt;$/;" n +daylight r_bash/src/lib.rs /^ pub static mut daylight: ::std::os::raw::c_int;$/;" v +daylight r_readline/src/lib.rs /^ pub static mut daylight: ::std::os::raw::c_int;$/;" v +dbghelp vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dbghelp")] pub mod dbghelp;$/;" n +dbt vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dbt")] pub mod dbt;$/;" n +dcgettext builtins_rust/alias/src/lib.rs /^ fn dcgettext($/;" f +dcgettext builtins_rust/bind/src/lib.rs /^ fn dcgettext($/;" f +dcgettext builtins_rust/enable/src/lib.rs /^ fn dcgettext($/;" f +dcgettext builtins_rust/shopt/src/lib.rs /^ fn dcgettext($/;" f +dcgettext include/gettext.h /^# define dcgettext(/;" d +dcgettext lib/intl/intl-compat.c /^dcgettext (domainname, msgid, category)$/;" f +dcgettext lib/intl/libgnuintl.h.in /^# define dcgettext /;" d file: +dcgettext lib/intl/libgnuintl.h.in /^static inline char *dcgettext (const char *__domainname, const char *__msgid,$/;" f typeref:typename:char * file: +dcgettext r_bash/src/lib.rs /^ pub fn dcgettext($/;" f +dcgettext.$lo lib/intl/Makefile.in /^bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomai/;" t +dcgettext.lo lib/intl/Makefile.in /^dcgettext.lo: $(srcdir)\/dcgettext.c$/;" t +dcigettext.$lo lib/intl/Makefile.in /^bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomai/;" t +dcigettext.$lo lib/intl/Makefile.in /^dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)\/plural-exp.h$/;" t +dcigettext.$lo lib/intl/Makefile.in /^dcigettext.$lo loadmsgcat.$lo: $(srcdir)\/hash-string.h$/;" t +dcigettext.$lo lib/intl/Makefile.in /^dcigettext.$lo: $(srcdir)\/eval-plural.h$/;" t +dcigettext.lo lib/intl/Makefile.in /^dcigettext.lo: $(srcdir)\/dcigettext.c$/;" t +dcngettext include/gettext.h /^# define dcngettext(/;" d +dcngettext lib/intl/intl-compat.c /^dcngettext (domainname, msgid1, msgid2, n, category)$/;" f +dcngettext lib/intl/libgnuintl.h.in /^# define dcngettext /;" d file: +dcngettext lib/intl/libgnuintl.h.in /^static inline char *dcngettext (const char *__domainname,$/;" f typeref:typename:char * file: +dcngettext r_bash/src/lib.rs /^ pub fn dcngettext($/;" f +dcngettext.$lo lib/intl/Makefile.in /^bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomai/;" t +dcngettext.lo lib/intl/Makefile.in /^dcngettext.lo: $(srcdir)\/dcngettext.c$/;" t +dcommon vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dcommon")] pub mod dcommon;$/;" n +dcomp vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dcomp")] pub mod dcomp;$/;" n +dcompanimation vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dcompanimation")] pub mod dcompanimation;$/;" n +dcomptypes vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "dcomptypes")] pub mod dcomptypes;$/;" n +dd_buf lib/glob/ndir.h /^ char dd_buf[DIRBLKSIZ]; \/* Directory block. *\/$/;" m struct:__anona16f3dc10108 typeref:typename:char[] +dd_buf r_glob/src/lib.rs /^ pub dd_buf: [::std::os::raw::c_char; 512usize],$/;" m struct:DIR +dd_fd lib/glob/ndir.h /^ int dd_fd; \/* File descriptor. *\/$/;" m struct:__anona16f3dc10108 typeref:typename:int +dd_fd r_glob/src/lib.rs /^ pub dd_fd: ::std::os::raw::c_int,$/;" m struct:DIR +dd_loc lib/glob/ndir.h /^ int dd_loc; \/* Offset in block. *\/$/;" m struct:__anona16f3dc10108 typeref:typename:int +dd_loc r_glob/src/lib.rs /^ pub dd_loc: ::std::os::raw::c_int,$/;" m struct:DIR +dd_size lib/glob/ndir.h /^ int dd_size; \/* Amount of valid data. *\/$/;" m struct:__anona16f3dc10108 typeref:typename:int +dd_size r_glob/src/lib.rs /^ pub dd_size: ::std::os::raw::c_int,$/;" m struct:DIR +dde vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dde")] pub mod dde;$/;" n +ddraw vendor/winapi/src/um/mod.rs /^#[cfg(feature = "ddraw")] pub mod ddraw;$/;" n +ddrawi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "ddrawi")] pub mod ddrawi;$/;" n +ddrawint vendor/winapi/src/um/mod.rs /^#[cfg(feature = "ddrawint")] pub mod ddrawint;$/;" n +de_backslash r_bash/src/lib.rs /^ pub fn de_backslash(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +de_backslash subst.c /^de_backslash (string)$/;" f +deactivate vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn deactivate(mut self) {$/;" P implementation:PollStateBomb +deallocate vendor/smallvec/src/lib.rs /^unsafe fn deallocate(ptr: *mut T, capacity: usize) {$/;" f +debug mksyntax.c /^int debug;$/;" v typeref:typename:int +debug support/texi2html /^sub debug {$/;" s +debug vendor/syn/src/lib.rs /^ mod debug;$/;" n module:gen +debug vendor/syn/tests/macros/mod.rs /^pub mod debug;$/;" n +debug_impl vendor/once_cell/tests/it.rs /^ fn debug_impl() {$/;" f module:sync +debug_impl vendor/once_cell/tests/it.rs /^ fn debug_impl() {$/;" f module:unsync +debug_impls vendor/syn/src/lit.rs /^mod debug_impls {$/;" n +debug_metadata/README.md vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +debug_metadata/smallvec.natvis vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +debug_print_cond_command print_cmd.c /^debug_print_cond_command (cond)$/;" f +debug_print_pgrps jobs.c /^debug_print_pgrps ()$/;" f typeref:typename:void +debug_print_word_list print_cmd.c /^debug_print_word_list (s, list, sep)$/;" f +debug_printf pcomplete.c /^debug_printf (const char *format, ...)$/;" f typeref:typename:void file: +debug_span_field_if_nontrivial vendor/proc-macro2/src/fallback.rs /^pub(crate) fn debug_span_field_if_nontrivial(debug: &mut fmt::DebugStruct, span: Span) {$/;" f +debug_span_field_if_nontrivial vendor/proc-macro2/src/wrapper.rs /^pub(crate) fn debug_span_field_if_nontrivial(debug: &mut fmt::DebugStruct, span: Span) {$/;" f +debug_unreachable vendor/smallvec/src/lib.rs /^macro_rules! debug_unreachable {$/;" M +debugapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "debugapi")] pub mod debugapi;$/;" n +debugger configure.ac /^AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for utshell debugger/;" e +debugger vendor/libc/src/unix/haiku/native.rs /^ pub fn debugger(message: *const ::c_char);$/;" f +debugging shell.c /^static int debugging; \/* Do debugging things. *\/$/;" v typeref:typename:int file: +debugging_login_shell shell.c /^int debugging_login_shell = 0;$/;" v typeref:typename:int +debugging_mode builtins_rust/declare/src/lib.rs /^ static mut debugging_mode: i32;$/;" v +debugging_mode builtins_rust/shopt/src/lib.rs /^ static mut debugging_mode: i32;$/;" v +debugging_mode builtins_rust/source/src/lib.rs /^ static mut debugging_mode: i32;$/;" v +debugging_mode r_bash/src/lib.rs /^ pub static mut debugging_mode: ::std::os::raw::c_int;$/;" v +debugging_mode shell.c /^int debugging_mode = 0; \/* In debugging mode with --debugger *\/$/;" v typeref:typename:int +dec_num_messages vendor/futures-channel/src/mpsc/mod.rs /^ fn dec_num_messages(&self) {$/;" P implementation:Receiver +dec_num_messages vendor/futures-channel/src/mpsc/mod.rs /^ fn dec_num_messages(&self) {$/;" P implementation:UnboundedReceiver +decide_aux_files_method support/texi2dvi /^decide_aux_files_method ()$/;" f +decided lib/intl/loadinfo.h /^ int decided;$/;" m struct:loaded_l10nfile typeref:typename:int +decimal_point r_bash/src/lib.rs /^ pub decimal_point: *mut ::std::os::raw::c_char,$/;" m struct:lconv +decl_error vendor/thiserror/tests/test_display.rs /^ macro_rules! decl_error {$/;" M function:test_macro_rules +declare.o builtins/Makefile.in /^declare.o: $(topdir)\/arrayfunc.h $(srcdir)\/bashgetopt.h $(topdir)\/flags.h$/;" t +declare.o builtins/Makefile.in /^declare.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +declare.o builtins/Makefile.in /^declare.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +declare.o builtins/Makefile.in /^declare.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +declare.o builtins/Makefile.in /^declare.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables./;" t +declare.o builtins/Makefile.in /^declare.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +declare.o builtins/Makefile.in /^declare.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +declare.o builtins/Makefile.in /^declare.o: .\/builtext.h ..\/pathnames.h$/;" t +declare.o builtins/Makefile.in /^declare.o: declare.def$/;" t +declare_builtin builtins_rust/setattr/src/intercdep.rs /^ pub fn declare_builtin(list:* mut WordList) -> c_int;$/;" f +declare_result_enum vendor/futures-macro/src/select.rs /^fn declare_result_enum($/;" f +decode_prompt_string r_bash/src/lib.rs /^ pub fn decode_prompt_string(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_cha/;" f +decode_prompt_string r_print_cmd/src/lib.rs /^ fn decode_prompt_string(string:*mut c_char)->*mut c_char;$/;" f +decode_signal builtins_rust/common/src/lib.rs /^ fn decode_signal(string: *mut c_char, flags: i32) -> i32;$/;" f +decode_signal builtins_rust/kill/src/intercdep.rs /^ pub fn decode_signal (string: *mut c_char, flags: c_int) -> c_int;$/;" f +decode_signal builtins_rust/trap/src/intercdep.rs /^ pub fn decode_signal(s: *mut c_char, flags: c_int) -> c_int;$/;" f +decode_signal r_bash/src/lib.rs /^ pub fn decode_signal($/;" f +decode_signal r_glob/src/lib.rs /^ pub fn decode_signal($/;" f +decode_signal r_readline/src/lib.rs /^ pub fn decode_signal($/;" f +decode_signal trap.c /^decode_signal (string, flags)$/;" f +decode_state vendor/futures-channel/src/mpsc/mod.rs /^fn decode_state(num: usize) -> State {$/;" f +decpoint lib/sh/snprintf.c /^static int decpoint;$/;" v typeref:typename:int file: +decrement vendor/slab/src/lib.rs /^ decrement: bool,$/;" m struct:Slab::compact::CleanupGuard +dedup vendor/smallvec/src/lib.rs /^ pub fn dedup(&mut self)$/;" P implementation:SmallVec +dedup_by vendor/smallvec/src/lib.rs /^ pub fn dedup_by(&mut self, mut same_bucket: F)$/;" P implementation:SmallVec +dedup_by_key vendor/smallvec/src/lib.rs /^ pub fn dedup_by_key(&mut self, mut key: F)$/;" P implementation:SmallVec +deep lib/malloc/alloca.c /^ char *deep; \/* For stack depth measure. *\/$/;" m struct:hdr::__anond018e22f0108 typeref:typename:char * file: +def_site vendor/proc-macro2/src/fallback.rs /^ pub fn def_site() -> Self {$/;" P implementation:Span +def_site vendor/proc-macro2/src/lib.rs /^ pub fn def_site() -> Self {$/;" P implementation:Span +def_site vendor/proc-macro2/src/wrapper.rs /^ pub fn def_site() -> Self {$/;" P implementation:Span +default vendor/chunky-vec/src/lib.rs /^ fn default() -> Self {$/;" P implementation:ChunkyVec +default vendor/elsa/src/index_map.rs /^ fn default() -> Self {$/;" P implementation:FrozenIndexMap +default vendor/elsa/src/index_set.rs /^ fn default() -> Self {$/;" P implementation:FrozenIndexSet +default vendor/elsa/src/map.rs /^ fn default() -> Self {$/;" P implementation:FrozenBTreeMap +default vendor/elsa/src/map.rs /^ fn default() -> Self {$/;" P implementation:FrozenMap +default vendor/elsa/src/sync.rs /^ fn default() -> Self {$/;" P implementation:FrozenBTreeMap +default vendor/elsa/src/vec.rs /^ fn default() -> Self {$/;" P implementation:FrozenVec +default vendor/fluent-bundle/src/bundle.rs /^ fn default() -> Self {$/;" P implementation:FluentBundle +default vendor/fluent-bundle/src/types/number.rs /^ fn default() -> Self {$/;" P implementation:FluentNumberCurrencyDisplayStyle +default vendor/fluent-bundle/src/types/number.rs /^ fn default() -> Self {$/;" P implementation:FluentNumberOptions +default vendor/fluent-bundle/src/types/number.rs /^ fn default() -> Self {$/;" P implementation:FluentNumberStyle +default vendor/fluent-syntax/src/ast/mod.rs /^ pub default: bool,$/;" m struct:Variant +default vendor/futures-core/src/task/__internal/atomic_waker.rs /^ fn default() -> Self {$/;" P implementation:AtomicWaker +default vendor/futures-executor/src/local_pool.rs /^ fn default() -> Self {$/;" P implementation:LocalPool +default vendor/futures-executor/src/thread_pool.rs /^ fn default() -> Self {$/;" P implementation:ThreadPoolBuilder +default vendor/futures-macro/src/select.rs /^ default: Option,$/;" m struct:Select +default vendor/futures-util/src/fns.rs /^ fn default() -> Self {$/;" P implementation:IntoFn +default vendor/futures-util/src/fns.rs /^ fn default() -> Self {$/;" P implementation:OkFn +default vendor/futures-util/src/future/option.rs /^ fn default() -> Self {$/;" P implementation:OptionFuture +default vendor/futures-util/src/lock/mutex.rs /^ fn default() -> Self {$/;" P implementation:Mutex +default vendor/futures-util/src/stream/futures_ordered.rs /^ fn default() -> Self {$/;" P implementation:FuturesOrdered +default vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn default() -> Self {$/;" P implementation:FuturesUnordered +default vendor/futures-util/src/stream/select_all.rs /^ fn default() -> Self {$/;" P implementation:SelectAll +default vendor/futures-util/src/stream/select_with_strategy.rs /^ fn default() -> Self {$/;" P implementation:PollNext +default vendor/memchr/src/memmem/prefilter/mod.rs /^ fn default() -> Prefilter {$/;" P implementation:Prefilter +default vendor/nix/src/sched.rs /^ fn default() -> Self {$/;" P implementation:sched_affinity::CpuSet +default vendor/nix/src/sys/quota.rs /^ fn default() -> Dqblk {$/;" P implementation:Dqblk +default vendor/nix/src/sys/select.rs /^ fn default() -> Self {$/;" P implementation:FdSet +default vendor/nix/src/sys/socket/sockopt.rs /^ fn default() -> Self {$/;" P implementation:AlgSetKey +default vendor/once_cell/src/lib.rs /^ fn default() -> Lazy {$/;" P implementation:sync::Lazy +default vendor/once_cell/src/lib.rs /^ fn default() -> Lazy {$/;" P implementation:unsync::Lazy +default vendor/once_cell/src/lib.rs /^ fn default() -> OnceCell {$/;" P implementation:sync::OnceCell +default vendor/once_cell/src/lib.rs /^ fn default() -> Self {$/;" P implementation:unsync::OnceCell +default vendor/once_cell/src/race.rs /^ fn default() -> Self {$/;" P implementation:once_box::OnceBox +default vendor/once_cell/tests/it.rs /^ fn default() -> Self {$/;" P implementation:sync::lazy_default::Foo +default vendor/once_cell/tests/it.rs /^ fn default() -> Self {$/;" P implementation:unsync::lazy_default::Foo +default vendor/pin-project-lite/tests/proper_unpin.rs /^pub mod default {$/;" n +default vendor/proc-macro2/src/lib.rs /^ fn default() -> Self {$/;" P implementation:TokenStream +default vendor/rustc-hash/src/lib.rs /^ fn default() -> FxHasher {$/;" P implementation:FxHasher +default vendor/slab/src/lib.rs /^ fn default() -> Self {$/;" P implementation:Slab +default vendor/smallvec/src/lib.rs /^ fn default() -> SmallVec {$/;" P implementation:SmallVec +default vendor/syn/src/generics.rs /^ fn default() -> Self {$/;" P implementation:BoundLifetimes +default vendor/syn/src/generics.rs /^ fn default() -> Self {$/;" P implementation:Generics +default vendor/syn/src/parse.rs /^ fn default() -> Self {$/;" P implementation:Unexpected +default vendor/syn/src/path.rs /^ fn default() -> Self {$/;" P implementation:PathArguments +default vendor/syn/src/punctuated.rs /^ fn default() -> Self {$/;" P implementation:Punctuated +default vendor/syn/src/reserved.rs /^ fn default() -> Self {$/;" P implementation:Reserved +default_buffered_input builtins_rust/exec/src/lib.rs /^ static default_buffered_input: i32;$/;" v +default_buffered_input builtins_rust/read/src/lib.rs /^static mut default_buffered_input: c_int = -1;$/;" v +default_buffered_input r_bash/src/lib.rs /^ pub static mut default_buffered_input: ::std::os::raw::c_int;$/;" v +default_buffered_input r_jobs/src/lib.rs /^ static mut default_buffered_input: c_int;$/;" v +default_buffered_input shell.c /^int default_buffered_input = -1;$/;" v typeref:typename:int +default_columns builtins_rust/help/src/lib.rs /^ fn default_columns() -> usize;$/;" f +default_columns general.c /^default_columns ()$/;" f typeref:typename:int +default_columns r_bash/src/lib.rs /^ pub fn default_columns() -> ::std::os::raw::c_int;$/;" f +default_columns r_glob/src/lib.rs /^ pub fn default_columns() -> ::std::os::raw::c_int;$/;" f +default_columns r_readline/src/lib.rs /^ pub fn default_columns() -> ::std::os::raw::c_int;$/;" f +default_dir locale.c /^static char *default_dir;$/;" v typeref:typename:char * file: +default_domain locale.c /^static char *default_domain;$/;" v typeref:typename:char * file: +default_filename_quote_characters bashline.c /^static const char *default_filename_quote_characters = " \\t\\n\\\\\\"'@<>=;|&()#$`?*[!:{~"; \/*/;" v typeref:typename:const char * file: +default_funmap lib/readline/funmap.c /^static const FUNMAP default_funmap[] = {$/;" v typeref:typename:const FUNMAP[] file: +default_input shell.c /^static FILE *default_input;$/;" v typeref:typename:FILE * file: +default_isearch_terminators lib/readline/isearch.c /^static char * const default_isearch_terminators = "\\033\\012";$/;" v typeref:typename:char * const file: +default_locale locale.c /^static char *default_locale;$/;" v typeref:typename:char * file: +default_prefixes lib/readline/tilde.c /^static const char *default_prefixes[] =$/;" v typeref:typename:const char * [] file: +default_prefixes lib/tilde/tilde.c /^static const char *default_prefixes[] =$/;" v typeref:typename:const char * [] file: +default_span vendor/async-trait/src/lifetime.rs /^ pub default_span: Span,$/;" m struct:CollectLifetimes +default_span vendor/proc-macro2/tests/test.rs /^fn default_span() {$/;" f +default_suffixes lib/readline/tilde.c /^static const char *default_suffixes[] =$/;" v typeref:typename:const char * [] file: +default_suffixes lib/tilde/tilde.c /^static const char *default_suffixes[] =$/;" v typeref:typename:const char * [] file: +default_tokenstream_is_empty vendor/proc-macro2/tests/test.rs /^fn default_tokenstream_is_empty() {$/;" f +default_tty_job_signals builtins_rust/exec/src/lib.rs /^ fn default_tty_job_signals();$/;" f +default_tty_job_signals jobs.c /^default_tty_job_signals ()$/;" f typeref:typename:void +default_tty_job_signals nojobs.c /^default_tty_job_signals ()$/;" f typeref:typename:void +default_tty_job_signals r_bash/src/lib.rs /^ pub fn default_tty_job_signals();$/;" f +default_tty_job_signals r_jobs/src/lib.rs /^pub unsafe extern "C" fn default_tty_job_signals() {$/;" f +defaultness vendor/syn/src/item.rs /^ defaultness: Option,$/;" m struct:parsing::FlexibleItemType +defdef support/man2html.c /^static STRDEF *chardef, *strdef, *defdef;$/;" v typeref:typename:STRDEF * file: +deferred builtins_rust/cd/src/lib.rs /^ deferred: *mut COMMAND,$/;" m struct:JOB +deferred builtins_rust/common/src/lib.rs /^ deferred: *mut COMMAND,$/;" m struct:JOB +deferred builtins_rust/exit/src/lib.rs /^ deferred: *mut COMMAND,$/;" m struct:JOB +deferred builtins_rust/fc/src/lib.rs /^ deferred: *mut COMMAND,$/;" m struct:JOB +deferred builtins_rust/fg_bg/src/lib.rs /^ deferred: *mut COMMAND,$/;" m struct:JOB +deferred builtins_rust/jobs/src/lib.rs /^ deferred: *mut COMMAND,$/;" m struct:JOB +deferred builtins_rust/kill/src/intercdep.rs /^ pub deferred: *mut COMMAND,$/;" m struct:job +deferred builtins_rust/setattr/src/intercdep.rs /^ pub deferred: *mut COMMAND,$/;" m struct:job +deferred builtins_rust/wait/src/lib.rs /^ deferred: *mut COMMAND,$/;" m struct:JOB +deferred jobs.h /^ COMMAND *deferred; \/* Commands that will execute when this job is done. *\/$/;" m struct:job typeref:typename:COMMAND * +deferred r_bash/src/lib.rs /^ pub deferred: *mut COMMAND,$/;" m struct:job +deferred_heredocs print_cmd.c /^static REDIRECT *deferred_heredocs;$/;" v typeref:typename:REDIRECT * file: +deferred_heredocs r_print_cmd/src/lib.rs /^static mut deferred_heredocs:*mut REDIRECT = 0 as *mut REDIRECT;$/;" v +define_delimiters vendor/syn/src/token.rs /^macro_rules! define_delimiters {$/;" M +define_keywords vendor/syn/src/token.rs /^macro_rules! define_keywords {$/;" M +define_memmem_quickcheck_tests vendor/memchr/src/memmem/mod.rs /^macro_rules! define_memmem_quickcheck_tests {$/;" M +define_memmem_simple_tests vendor/memchr/src/memmem/mod.rs /^macro_rules! define_memmem_simple_tests {$/;" M +define_punctuation vendor/syn/src/token.rs /^macro_rules! define_punctuation {$/;" M +define_punctuation_structs vendor/syn/src/token.rs /^macro_rules! define_punctuation_structs {$/;" M +deftext builtins_rust/read/src/lib.rs /^static mut deftext: *mut c_char = PT_NULL as *mut c_char;$/;" v +deftext lib/readline/examples/rl.c /^static char *deftext;$/;" v typeref:typename:char * file: +dehumanize_number vendor/libc/src/solid/mod.rs /^ pub fn dehumanize_number(arg1: *const c_char, arg2: *mut i64) -> c_int;$/;" f +del vendor/memchr/src/memmem/rabinkarp.rs /^ fn del(&mut self, nhash: &NeedleHash, byte: u8) {$/;" P implementation:Hash +delay_usecs vendor/nix/test/sys/test_ioctl.rs /^ delay_usecs: u16,$/;" m struct:linux_ioctls::spi_ioc_transfer +delegate_access_inner vendor/futures-util/src/lib.rs /^macro_rules! delegate_access_inner {$/;" M +delegate_all vendor/futures-util/src/lib.rs /^macro_rules! delegate_all {$/;" M +delegate_async_buf_read vendor/futures-util/src/lib.rs /^macro_rules! delegate_async_buf_read {$/;" M +delegate_async_buf_read_to_stdio vendor/futures-io/src/lib.rs /^ macro_rules! delegate_async_buf_read_to_stdio {$/;" M module:if_std +delegate_async_read vendor/futures-util/src/lib.rs /^macro_rules! delegate_async_read {$/;" M +delegate_async_read_to_stdio vendor/futures-io/src/lib.rs /^ macro_rules! delegate_async_read_to_stdio {$/;" M module:if_std +delegate_async_write vendor/futures-util/src/lib.rs /^macro_rules! delegate_async_write {$/;" M +delegate_async_write_to_stdio vendor/futures-io/src/lib.rs /^ macro_rules! delegate_async_write_to_stdio {$/;" M module:if_std +delegate_async_write_to_stdio vendor/futures-util/src/io/cursor.rs /^macro_rules! delegate_async_write_to_stdio {$/;" M +delegate_future vendor/futures-util/src/lib.rs /^macro_rules! delegate_future {$/;" M +delegate_sink vendor/futures-util/src/lib.rs /^macro_rules! delegate_sink {$/;" M +delegate_stream vendor/futures-util/src/lib.rs /^macro_rules! delegate_stream {$/;" M +delete_all_aliases alias.c /^delete_all_aliases ()$/;" f typeref:typename:void +delete_all_aliases builtins_rust/alias/src/lib.rs /^ fn delete_all_aliases();$/;" f +delete_all_aliases r_bash/src/lib.rs /^ pub fn delete_all_aliases();$/;" f +delete_all_contexts r_bash/src/lib.rs /^ pub fn delete_all_contexts(arg1: *mut VAR_CONTEXT);$/;" f +delete_all_contexts variables.c /^delete_all_contexts (vcxt)$/;" f +delete_all_jobs builtins_rust/jobs/src/lib.rs /^ fn delete_all_jobs(running_only: i32);$/;" f +delete_all_jobs jobs.c /^delete_all_jobs (running_only)$/;" f +delete_all_jobs r_bash/src/lib.rs /^ pub fn delete_all_jobs(arg1: ::std::os::raw::c_int);$/;" f +delete_all_jobs r_jobs/src/lib.rs /^pub unsafe extern "C" fn delete_all_jobs(mut running_only: c_int) {$/;" f +delete_all_variables r_bash/src/lib.rs /^ pub fn delete_all_variables(arg1: *mut HASH_TABLE);$/;" f +delete_all_variables variables.c /^delete_all_variables (hashed_vars)$/;" f +delete_area vendor/libc/src/unix/haiku/native.rs /^ pub fn delete_area(id: area_id) -> status_t;$/;" f +delete_builtin builtins_rust/enable/src/lib.rs /^unsafe extern "C" fn delete_builtin(mut b: *mut builtin) {$/;" f +delete_chars lib/readline/display.c /^delete_chars (int count)$/;" f typeref:typename:void file: +delete_job builtins_rust/jobs/src/lib.rs /^ fn delete_job(job_index: i32, dflags: i32);$/;" f +delete_job jobs.c /^delete_job (job_index, dflags)$/;" f +delete_job r_bash/src/lib.rs /^ pub fn delete_job(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int);$/;" f +delete_job r_jobs/src/lib.rs /^pub unsafe extern "C" fn delete_job($/;" f +delete_module vendor/nix/src/kmod.rs /^pub fn delete_module(name: &CStr, flags: DeleteModuleFlags) -> Result<()> {$/;" f +delete_old_job jobs.c /^delete_old_job (pid)$/;" f file: +delete_old_job r_jobs/src/lib.rs /^unsafe extern "C" fn delete_old_job(mut pid: pid_t) {$/;" f +delete_port vendor/libc/src/unix/haiku/native.rs /^ pub fn delete_port(port: port_id) -> status_t;$/;" f +delete_sem vendor/libc/src/unix/haiku/native.rs /^ pub fn delete_sem(id: sem_id) -> status_t;$/;" f +delete_var builtins_rust/declare/src/lib.rs /^ fn delete_var(name: *const c_char, varc: *mut VAR_CONTEXT) -> i32;$/;" f +delete_var r_bash/src/lib.rs /^ pub fn delete_var($/;" f +delete_var variables.c /^delete_var (name, vc)$/;" f +delim builtins_rust/mapfile/src/lib.rs /^static mut delim: c_int = 0;$/;" v +delim builtins_rust/read/src/lib.rs /^static mut delim: c_char = b'\\n' as c_char;$/;" v +delim vendor/syn/src/token.rs /^ pub fn delim(s: &str, span: Span, tokens: &mut TokenStream, f: F)$/;" f module:printing +delim_char builtins_rust/read/src/lib.rs /^static mut delim_char: u8 = 0;$/;" v +delimiter vendor/proc-macro2/src/fallback.rs /^ delimiter: Delimiter,$/;" m struct:Group +delimiter vendor/proc-macro2/src/fallback.rs /^ pub fn delimiter(&self) -> Delimiter {$/;" P implementation:Group +delimiter vendor/proc-macro2/src/lib.rs /^ pub fn delimiter(&self) -> Delimiter {$/;" P implementation:Group +delimiter vendor/proc-macro2/src/wrapper.rs /^ pub fn delimiter(&self) -> Delimiter {$/;" P implementation:Group +delimiter_depth parser.h /^ int delimiter_depth;$/;" m struct:dstack typeref:typename:int +delimiter_depth r_bash/src/lib.rs /^ pub delimiter_depth: ::std::os::raw::c_int,$/;" m struct:dstack +delimiter_space parser.h /^ int delimiter_space;$/;" m struct:dstack typeref:typename:int +delimiter_space r_bash/src/lib.rs /^ pub delimiter_space: ::std::os::raw::c_int,$/;" m struct:dstack +delimiter_span_close vendor/syn/src/mac.rs /^fn delimiter_span_close(macro_delimiter: &MacroDelimiter) -> Span {$/;" f +delimiters parser.h /^ char *delimiters;$/;" m struct:dstack typeref:typename:char * +delimiters r_bash/src/lib.rs /^ pub delimiters: *mut ::std::os::raw::c_char,$/;" m struct:dstack +dep_info target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" s object:local.0.CheckDepInfo +dep_info target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" s object:local.0.CheckDepInfo +depend Makefile.in /^depend: depends$/;" t +dependencies builtins/mkbuiltins.c /^ ARRAY *dependencies; \/* Null terminated array of #define names. *\/$/;" m struct:__anon69e836710208 typeref:typename:ARRAY * file: +dependencies vendor/winapi/build.rs /^ dependencies: &'static [&'static str],$/;" m struct:Header +dependent vendor/self_cell/src/unsafe_self_cell.rs /^ pub dependent: Dependent,$/;" m struct:JoinedCell +dependent_marker vendor/self_cell/src/unsafe_self_cell.rs /^ dependent_marker: PhantomData,$/;" m struct:UnsafeSelfCell +depends Makefile.in /^depends: force$/;" t +depends_on_handler builtins/mkbuiltins.c /^depends_on_handler (self, defs, arg)$/;" f +deps target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" a +deps target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" a +deps target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" a +deps target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" a +deps target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" a +deps target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" a +deps target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" a +deps target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" a +deps target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" a +deps target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" a +deps target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" a +deps target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" a +deps target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" a +deps target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" a +deps target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" a +deps target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" a +deps target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" a +deps target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" a +deps target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" a +deps target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" a +deps target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" a +deps target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" a +deps target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" a +deps target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" a +deps target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" a +deps target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" a +deps target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" a +deps target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" a +deps target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" a +deps target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a +deps target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a +deps target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" a +deps target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" a +deps target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" a +deps target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" a +deps target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" a +deps target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" a +deps target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" a +deps target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" a +deps target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" a +deps target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" a +deps target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" a +deps target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" a +deps target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" a +deps target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" a +deps target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" a +deps target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" a +deps target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" a +deps target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" a +deps target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" a +deps target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" a +deps target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" a +deps target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" a +deps target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" a +deps target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" a +deps target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" a +deps target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" a +deps target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" a +deps target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" a +deps target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" a +deps target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" a +deps target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" a +deps target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" a +deps target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" a +deps target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" a +deps target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" a +deps target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" a +deps target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" a +deps target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" a +deps target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" a +deps target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" a +deps target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" a +deps target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" a +deps target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" a +deps target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" a +deps target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" a +deps target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" a +deps target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" a +deps target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" a +deps target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" a +deps target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" a +deps target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a +deps target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" a +deps target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" a +deps target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" a +deps target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" a +deps target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" a +deps target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" a +deps target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" a +deps target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" a +deps target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" a +deps target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" a +deps target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" a +deps target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" a +deps target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" a +deps target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" a +deps target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" a +deps target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" a +deps target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" a +deps target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" a +deps target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" a +deps target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" a +deps target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" a +deps target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" a +deps target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" a +deps target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" a +deps target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" a +deps target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" a +deps target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" a +deps target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" a +deps target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" a +deps target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" a +deps target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" a +deps target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" a +deps target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" a +deps target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" a +deps target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" a +deps target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" a +deps target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" a +deps target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" a +deps target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" a +deps target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" a +deps target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" a +deps target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" a +deps target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" a +deps target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" a +deps target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" a +deps target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" a +deps target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" a +deps target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" a +deps target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" a +deps target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" a +dequeue vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^ pub(super) unsafe fn dequeue(&self) -> Dequeue {$/;" P implementation:ReadyToRunQueue +dequote_escapes r_bash/src/lib.rs /^ pub fn dequote_escapes(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +dequote_escapes subst.c /^dequote_escapes (string)$/;" f +dequote_list builtins_rust/read/src/intercdep.rs /^ pub fn dequote_list(s: *mut WordList) -> *mut WordList;$/;" f +dequote_list r_bash/src/lib.rs /^ pub fn dequote_list(arg1: *mut WORD_LIST) -> *mut WORD_LIST;$/;" f +dequote_list subst.c /^dequote_list (list)$/;" f +dequote_pathname lib/glob/glob.c /^# define dequote_pathname /;" d file: +dequote_pathname lib/glob/glob.c /^dequote_pathname (pathname)$/;" f file: +dequote_string builtins_rust/read/src/intercdep.rs /^ pub fn dequote_string(s: *mut c_char) -> *mut c_char;$/;" f +dequote_string r_bash/src/lib.rs /^ pub fn dequote_string(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +dequote_string subst.c /^dequote_string (string)$/;" f +dequote_word r_bash/src/lib.rs /^ pub fn dequote_word(arg1: *mut WORD_DESC) -> *mut WORD_DESC;$/;" f +dequote_word subst.c /^dequote_word (word)$/;" f +deref vendor/fluent-fallback/src/pin_cell/pin_mut.rs /^ fn deref(&self) -> &T {$/;" P implementation:PinMut +deref vendor/fluent-fallback/src/pin_cell/pin_ref.rs /^ fn deref(&self) -> &T {$/;" P implementation:PinRef +deref vendor/futures-channel/src/lock.rs /^ fn deref(&self) -> &T {$/;" P implementation:TryLock +deref vendor/futures-executor/src/local_pool.rs /^ fn deref(&self) -> &Self::Target {$/;" P implementation:BlockingStream +deref vendor/futures-task/src/waker_ref.rs /^ fn deref(&self) -> &Waker {$/;" P implementation:WakerRef +deref vendor/futures-util/src/lock/bilock.rs /^ fn deref(&self) -> &T {$/;" P implementation:BiLockGuard +deref vendor/futures-util/src/lock/mutex.rs /^ fn deref(&self) -> &T {$/;" P implementation:MutexGuard +deref vendor/futures-util/src/lock/mutex.rs /^ fn deref(&self) -> &T {$/;" P implementation:OwnedMutexGuard +deref vendor/futures-util/src/lock/mutex.rs /^ fn deref(&self) -> &U {$/;" P implementation:MappedMutexGuard +deref vendor/libloading/src/os/unix/mod.rs /^ fn deref(&self) -> &T {$/;" P implementation:Symbol +deref vendor/libloading/src/os/windows/mod.rs /^ fn deref(&self) -> &T {$/;" P implementation:Symbol +deref vendor/libloading/src/safe.rs /^ fn deref(&self) -> &T {$/;" P implementation:Symbol +deref vendor/memchr/src/cow.rs /^ fn deref(&self) -> &[u8] {$/;" P implementation:CowBytes +deref vendor/once_cell/src/lib.rs /^ fn deref(&self) -> &T {$/;" P implementation:sync::Lazy +deref vendor/once_cell/src/lib.rs /^ fn deref(&self) -> &T {$/;" P implementation:unsync::Lazy +deref vendor/smallvec/src/lib.rs /^ fn deref(&self) -> &[A::Item] {$/;" P implementation:SmallVec +deref vendor/syn/src/parse.rs /^ fn deref(&self) -> &Self::Target {$/;" P implementation:StepCursor +deref vendor/syn/tests/debug/mod.rs /^ fn deref(&self) -> &Self::Target {$/;" P implementation:Lite +deref vendor/tinystr/src/tinystr16.rs /^ fn deref(&self) -> &str {$/;" P implementation:TinyStr16 +deref vendor/tinystr/src/tinystr4.rs /^ fn deref(&self) -> &str {$/;" P implementation:TinyStr4 +deref vendor/tinystr/src/tinystr8.rs /^ fn deref(&self) -> &str {$/;" P implementation:TinyStr8 +deref vendor/tinystr/src/tinystrauto.rs /^ fn deref(&self) -> &str {$/;" P implementation:TinyStrAuto +deref_async_buf_read vendor/futures-io/src/lib.rs /^ macro_rules! deref_async_buf_read {$/;" M module:if_std +deref_async_read vendor/futures-io/src/lib.rs /^ macro_rules! deref_async_read {$/;" M module:if_std +deref_async_seek vendor/futures-io/src/lib.rs /^ macro_rules! deref_async_seek {$/;" M module:if_std +deref_async_write vendor/futures-io/src/lib.rs /^ macro_rules! deref_async_write {$/;" M module:if_std +deref_mut vendor/futures-channel/src/lock.rs /^ fn deref_mut(&mut self) -> &mut T {$/;" P implementation:TryLock +deref_mut vendor/futures-executor/src/local_pool.rs /^ fn deref_mut(&mut self) -> &mut Self::Target {$/;" P implementation:BlockingStream +deref_mut vendor/futures-util/src/lock/bilock.rs /^ fn deref_mut(&mut self) -> &mut T {$/;" P implementation:BiLockGuard +deref_mut vendor/futures-util/src/lock/mutex.rs /^ fn deref_mut(&mut self) -> &mut T {$/;" P implementation:MutexGuard +deref_mut vendor/futures-util/src/lock/mutex.rs /^ fn deref_mut(&mut self) -> &mut T {$/;" P implementation:OwnedMutexGuard +deref_mut vendor/futures-util/src/lock/mutex.rs /^ fn deref_mut(&mut self) -> &mut U {$/;" P implementation:MappedMutexGuard +deref_mut vendor/once_cell/src/lib.rs /^ fn deref_mut(&mut self) -> &mut T {$/;" P implementation:sync::Lazy +deref_mut vendor/once_cell/src/lib.rs /^ fn deref_mut(&mut self) -> &mut T {$/;" P implementation:unsync::Lazy +deref_mut vendor/smallvec/src/lib.rs /^ fn deref_mut(&mut self) -> &mut [A::Item] {$/;" P implementation:SmallVec +derive vendor/syn/src/lib.rs /^mod derive;$/;" n +derive vendor/thiserror-impl/src/expand.rs /^pub fn derive(node: &DeriveInput) -> Result {$/;" f +derive(Error) vendor/thiserror/README.md /^derive(Error)$/;" c +derive_copy vendor/pin-project-lite/tests/test.rs /^fn derive_copy() {$/;" f +derive_error vendor/thiserror-impl/src/lib.rs /^pub fn derive_error(input: TokenStream) -> TokenStream {$/;" f +desc vendor/nix/src/errno.rs /^ pub fn desc(self) -> &'static str {$/;" P implementation:Errno +desc vendor/nix/src/errno.rs /^fn desc(errno: Errno) -> &'static str {$/;" f +describe_command builtins_rust/command/src/lib.rs /^ fn describe_command(_: *mut libc::c_char, _: libc::c_int) -> libc::c_int;$/;" f +describe_command builtins_rust/type/src/lib.rs /^fn describe_command(command: *mut libc::c_char, dflags: i32) -> i32 {$/;" f +describe_command r_bash/src/lib.rs /^ pub fn describe_command($/;" f +describe_pid jobs.c /^describe_pid (pid)$/;" f +describe_pid nojobs.c /^describe_pid (pid)$/;" f +describe_pid r_bash/src/lib.rs /^ pub fn describe_pid(arg1: pid_t);$/;" f +describe_pid r_jobs/src/lib.rs /^pub unsafe extern "C" fn describe_pid(mut pid: pid_t) {$/;" f +description builtins_rust/ulimit/src/lib.rs /^ description: *const libc::c_char, \/* Descriptive string to output. *\/$/;" m struct:RESOURCE_LIMITS +description vendor/autocfg/src/error.rs /^ fn description(&self) -> &str {$/;" P implementation:Error +deserialize vendor/slab/src/serde.rs /^ fn deserialize(deserializer: D) -> Result$/;" f +deserialize vendor/smallvec/src/lib.rs /^ fn deserialize>(deserializer: D) -> Result {$/;" f +deserialize vendor/unic-langid-impl/src/serde.rs /^ fn deserialize(deserializer: D) -> Result$/;" P implementation:LanguageIdentifier +deserialize vendor/unic-langid-impl/src/serde.rs /^fn deserialize() -> Result<(), Box> {$/;" f +desired_setting unwind_prot.c /^ char desired_setting[1]; \/* actual size is `size' *\/$/;" m struct:__anon5806582f0108 typeref:typename:char[1] file: +dest command.h /^ int dest; \/* Place to redirect REDIRECTOR to, or ... *\/$/;" m union:__anon3aaf009a010a typeref:typename:int +destdir support/texi2dvi /^destdir ()$/;" f +destination vendor/nix/src/ifaddrs.rs /^ pub destination: Option,$/;" m struct:InterfaceAddress +detach vendor/nix/src/sys/ptrace/bsd.rs /^pub fn detach>>(pid: Pid, sig: T) -> Result<()> {$/;" f +detach vendor/nix/src/sys/ptrace/linux.rs /^pub fn detach>>(pid: Pid, sig: T) -> Result<()> {$/;" f +detection vendor/proc-macro2/src/lib.rs /^mod detection;$/;" n +dev-fd-stat-broken configure.ac /^AC_ARG_ENABLE(dev-fd-stat-broken, AC_HELP_STRING([--enable-dev-fd-stat-broken], [enable this opt/;" e +dev_fd_list subst.c /^static pid_t *dev_fd_list = (pid_t *)NULL;$/;" v typeref:typename:pid_t * file: +dev_for_path vendor/libc/src/unix/haiku/native.rs /^ pub fn dev_for_path(path: *const ::c_char) -> ::dev_t;$/;" f +dev_t r_bash/src/lib.rs /^pub type dev_t = __dev_t;$/;" t +dev_t r_glob/src/lib.rs /^pub type dev_t = __dev_t;$/;" t +dev_t r_readline/src/lib.rs /^pub type dev_t = __dev_t;$/;" t +dev_t vendor/libc/src/fuchsia/mod.rs /^pub type dev_t = u64;$/;" t +dev_t vendor/libc/src/solid/mod.rs /^pub type dev_t = u64;$/;" t +dev_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type dev_t = i32;$/;" t +dev_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type dev_t = u32;$/;" t +dev_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs /^pub type dev_t = u32;$/;" t +dev_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^pub type dev_t = u64;$/;" t +dev_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^pub type dev_t = u64;$/;" t +dev_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^pub type dev_t = u64;$/;" t +dev_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type dev_t = u64;$/;" t +dev_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type dev_t = i32;$/;" t +dev_t vendor/libc/src/unix/haiku/mod.rs /^pub type dev_t = i32;$/;" t +dev_t vendor/libc/src/unix/hermit/mod.rs /^pub type dev_t = i16;$/;" t +dev_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type dev_t = ::c_ulong;$/;" t +dev_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type dev_t = u32;$/;" t +dev_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type dev_t = u64;$/;" t +dev_t vendor/libc/src/unix/redox/mod.rs /^pub type dev_t = ::c_long;$/;" t +dev_t vendor/libc/src/unix/solarish/mod.rs /^pub type dev_t = ::c_ulong;$/;" t +dev_t vendor/libc/src/vxworks/mod.rs /^pub type dev_t = ::c_ulong;$/;" t +dev_t vendor/libc/src/wasi.rs /^pub type dev_t = u64;$/;" t +dev_t vendor/libc/src/windows/mod.rs /^pub type dev_t = u32;$/;" t +devguid vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "devguid")] pub mod devguid;$/;" n +devicetopology vendor/winapi/src/um/mod.rs /^#[cfg(feature = "devicetopology")] pub mod devicetopology;$/;" n +devname_r vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn devname_r($/;" f +devname_r vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn devname_r($/;" f +devpkey vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "devpkey")] pub mod devpkey;$/;" n +devpropdef vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "devpropdef")] pub mod devpropdef;$/;" n +devstat_buildmatch vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn devstat_buildmatch($/;" f +devstat_checkversion vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn devstat_checkversion(kd: *mut ::kvm_t) -> ::c_int;$/;" f +devstat_getgeneration vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn devstat_getgeneration(kd: *mut ::kvm_t) -> ::c_long;$/;" f +devstat_getnumdevs vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn devstat_getnumdevs(kd: *mut ::kvm_t) -> ::c_int;$/;" f +devstat_getversion vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn devstat_getversion(kd: *mut ::kvm_t) -> ::c_int;$/;" f +devstat_match_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Clone for devstat_match_flags {$/;" c +devstat_match_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Copy for devstat_match_flags {}$/;" c +devstat_match_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub enum devstat_match_flags {$/;" g +devstat_metric vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Clone for devstat_metric {$/;" c +devstat_metric vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Copy for devstat_metric {}$/;" c +devstat_metric vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub enum devstat_metric {$/;" g +devstat_priority vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Clone for devstat_priority {$/;" c +devstat_priority vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Copy for devstat_priority {}$/;" c +devstat_priority vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub enum devstat_priority {$/;" g +devstat_select_mode vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Clone for devstat_select_mode {$/;" c +devstat_select_mode vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Copy for devstat_select_mode {}$/;" c +devstat_select_mode vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub enum devstat_select_mode {$/;" g +devstat_selectdevs vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn devstat_selectdevs($/;" f +devstat_support_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Clone for devstat_support_flags {$/;" c +devstat_support_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Copy for devstat_support_flags {}$/;" c +devstat_support_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub enum devstat_support_flags {$/;" g +devstat_tag_type vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Clone for devstat_tag_type {$/;" c +devstat_tag_type vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Copy for devstat_tag_type {}$/;" c +devstat_tag_type vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub enum devstat_tag_type {$/;" g +devstat_trans_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Clone for devstat_trans_flags {$/;" c +devstat_trans_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Copy for devstat_trans_flags {}$/;" c +devstat_trans_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub enum devstat_trans_flags {$/;" g +devstat_type_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Clone for devstat_type_flags {$/;" c +devstat_type_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Copy for devstat_type_flags {}$/;" c +devstat_type_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub enum devstat_type_flags {$/;" g +dfallback lib/sh/snprintf.c /^dfallback (data, fs, fe, d)$/;" f file: +dgettext include/gettext.h /^# define dgettext(/;" d +dgettext lib/intl/intl-compat.c /^dgettext (domainname, msgid)$/;" f +dgettext lib/intl/libgnuintl.h.in /^# define dgettext /;" d file: +dgettext lib/intl/libgnuintl.h.in /^static inline char *dgettext (const char *__domainname, const char *__msgid)$/;" f typeref:typename:char * file: +dgettext r_bash/src/lib.rs /^ pub fn dgettext($/;" f +dgettext.$lo lib/intl/Makefile.in /^bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomai/;" t +dgettext.lo lib/intl/Makefile.in /^dgettext.lo: $(srcdir)\/dgettext.c$/;" t +did_not_panic vendor/futures-util/src/future/future/shared.rs /^ did_not_panic: bool,$/;" m struct:poll::Reset +diff vendor/memchr/src/memmem/genericsimd.rs /^fn diff(a: *const u8, b: *const u8) -> usize {$/;" f +diff vendor/memchr/src/memmem/prefilter/genericsimd.rs /^fn diff(a: *const u8, b: *const u8) -> usize {$/;" f +difftime r_bash/src/lib.rs /^ pub fn difftime(__time1: time_t, __time0: time_t) -> f64;$/;" f +difftime r_readline/src/lib.rs /^ pub fn difftime(__time1: time_t, __time0: time_t) -> f64;$/;" f +difftime vendor/libc/src/solid/mod.rs /^ pub fn difftime(arg1: time_t, arg2: time_t) -> f64;$/;" f +difftime vendor/libc/src/unix/mod.rs /^ pub fn difftime(time1: time_t, time0: time_t) -> ::c_double;$/;" f +difftime vendor/libc/src/vxworks/mod.rs /^ pub fn difftime(time1: time_t, time0: time_t) -> ::c_double;$/;" f +difftime vendor/libc/src/wasi.rs /^ pub fn difftime(a: time_t, b: time_t) -> c_double;$/;" f +difftimeval lib/sh/timeval.c /^difftimeval (d, t1, t2)$/;" f +digit vendor/nix/src/features.rs /^ fn digit(dst: &mut usize, b: u8) {$/;" f module:os +digits vendor/proc-macro2/src/parse.rs /^fn digits(mut input: Cursor) -> Result {$/;" f +digits vendor/syn/src/bigint.rs /^ digits: Vec,$/;" m struct:BigInt +digits vendor/syn/src/lit.rs /^ digits: Box,$/;" m struct:LitFloatRepr +digits vendor/syn/src/lit.rs /^ digits: Box,$/;" m struct:LitIntRepr +ding lib/readline/compat.c /^ding (void)$/;" f typeref:typename:int +dinput vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dinput")] pub mod dinput;$/;" n +dinputd vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "dinputd")] pub mod dinputd;$/;" n +diprintf vendor/libc/src/solid/mod.rs /^ pub fn diprintf(arg1: c_int, arg2: *const c_char, ...) -> c_int;$/;" f +dir_contains_target vendor/autocfg/src/lib.rs /^fn dir_contains_target($/;" f +dir_does_contain_target vendor/autocfg/src/tests.rs /^fn dir_does_contain_target() {$/;" f +dir_does_contain_target_with_custom_target_dir vendor/autocfg/src/tests.rs /^fn dir_does_contain_target_with_custom_target_dir() {$/;" f +dir_does_not_contain_target vendor/autocfg/src/tests.rs /^fn dir_does_not_contain_target() {$/;" f +dir_does_not_contain_target_with_custom_target_dir vendor/autocfg/src/tests.rs /^fn dir_does_not_contain_target_with_custom_target_dir() {$/;" f +dircomplete_expand bashline.c /^int dircomplete_expand = 0;$/;" v typeref:typename:int +dircomplete_expand bashline.c /^int dircomplete_expand = 1;$/;" v typeref:typename:int +dircomplete_expand builtins_rust/shopt/src/lib.rs /^ static mut dircomplete_expand: i32;$/;" v +dircomplete_expand r_bash/src/lib.rs /^ pub static mut dircomplete_expand: ::std::os::raw::c_int;$/;" v +dircomplete_expand_relpath bashline.c /^int dircomplete_expand_relpath = 0;$/;" v typeref:typename:int +dircomplete_expand_relpath bashline.c /^int dircomplete_expand_relpath = 1;$/;" v typeref:typename:int +dircomplete_expand_relpath r_bash/src/lib.rs /^ pub static mut dircomplete_expand_relpath: ::std::os::raw::c_int;$/;" v +dircomplete_spelling bashline.c /^int dircomplete_spelling = 0;$/;" v typeref:typename:int +dircomplete_spelling builtins_rust/shopt/src/lib.rs /^ static mut dircomplete_spelling: i32;$/;" v +dircomplete_spelling r_bash/src/lib.rs /^ pub static mut dircomplete_spelling: ::std::os::raw::c_int;$/;" v +direct lib/glob/ndir.h /^struct direct {$/;" s +direct r_glob/src/lib.rs /^pub struct direct {$/;" s +direction lib/readline/rlprivate.h /^ int direction;$/;" m struct:__rl_search_context typeref:typename:int +direction r_readline/src/lib.rs /^ pub direction: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +directive builtins/mkbuiltins.c /^ char *directive;$/;" m struct:__anon69e836710408 typeref:typename:char * file: +directory lib/readline/colors.h /^ directory,$/;" e enum:filetype +directory-stack configure.ac /^AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/;" e +directory_exists bashline.c /^directory_exists (dirname, should_dequote)$/;" f file: +directory_list_offset builtins_rust/pushd/src/lib.rs /^pub static mut directory_list_offset: i32 = 0;$/;" v +directory_list_size builtins_rust/pushd/src/lib.rs /^pub static mut directory_list_size: i32 = 0;$/;" v +dirent include/posixdir.h /^# define dirent /;" d +dirent lib/readline/posixdir.h /^# define dirent /;" d +dirent r_bash/src/lib.rs /^pub struct dirent {$/;" s +dirent r_readline/src/lib.rs /^pub struct dirent {$/;" s +dirent vendor/libc/src/wasi.rs /^pub struct dirent {$/;" s +dirent64 r_bash/src/lib.rs /^pub struct dirent64 {$/;" s +dirent64 r_readline/src/lib.rs /^pub struct dirent64 {$/;" s +direxpand-default configure.ac /^AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxp/;" e +dirfd r_bash/src/lib.rs /^ pub fn dirfd(__dirp: *mut DIR) -> ::std::os::raw::c_int;$/;" f +dirfd r_readline/src/lib.rs /^ pub fn dirfd(__dirp: *mut DIR) -> ::std::os::raw::c_int;$/;" f +dirfd vendor/libc/src/fuchsia/mod.rs /^ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int;$/;" f +dirfd vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int;$/;" f +dirfd vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int;$/;" f +dirfd vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int;$/;" f +dirfd vendor/libc/src/unix/haiku/mod.rs /^ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int;$/;" f +dirfd vendor/libc/src/unix/linux_like/mod.rs /^ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int;$/;" f +dirfd vendor/libc/src/unix/solarish/mod.rs /^ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int;$/;" f +dirfd vendor/libc/src/wasi.rs /^ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int;$/;" f +dirname lib/intl/dcigettext.c /^ char *dirname, *xdomainname;$/;" v typeref:typename:char * +dirname lib/intl/gettextP.h /^ char *dirname;$/;" m struct:binding typeref:typename:char * +dirname_len lib/intl/dcigettext.c /^ size_t dirname_len = strlen (binding->dirname) + 1;$/;" v typeref:typename:size_t +dirspell builtins_rust/cd/src/lib.rs /^ fn dirspell(dirname: *mut c_char) -> *mut c_char;$/;" f +dirspell lib/sh/spell.c /^dirspell (dirname)$/;" f +dirspell r_bash/src/lib.rs /^ pub fn dirspell(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +dirty vendor/fluent-bundle/src/resolver/scope.rs /^ pub dirty: bool,$/;" m struct:Scope +disable-redzone vendor/memchr/src/tests/x86_64-soft_float.json /^ "disable-redzone": true,$/;" b +disable_debugger vendor/libc/src/unix/haiku/native.rs /^ pub fn disable_debugger(state: ::c_int) -> ::c_int;$/;" f +disable_priv_mode r_bash/src/lib.rs /^ pub fn disable_priv_mode();$/;" f +disable_priv_mode shell.c /^disable_priv_mode ()$/;" f typeref:typename:void +disabled-builtins configure.ac /^AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled bu/;" e +disallow_filename_globbing flags.c /^int disallow_filename_globbing = 0;$/;" v typeref:typename:int +disallow_filename_globbing r_bash/src/lib.rs /^ pub static mut disallow_filename_globbing: ::std::os::raw::c_int;$/;" v +discard_buffer vendor/futures-util/src/io/buf_reader.rs /^ fn discard_buffer(self: Pin<&mut Self>) {$/;" P implementation:BufReader +discard_last_procsub_child r_bash/src/lib.rs /^ pub fn discard_last_procsub_child();$/;" f +discard_last_procsub_child r_jobs/src/lib.rs /^pub unsafe extern "C" fn discard_last_procsub_child()$/;" f +discard_pipeline jobs.c /^discard_pipeline (chain)$/;" f +discard_pipeline r_bash/src/lib.rs /^ pub fn discard_pipeline(arg1: *mut PROCESS) -> ::std::os::raw::c_int;$/;" f +discard_pipeline r_jobs/src/lib.rs /^pub unsafe extern "C" fn discard_pipeline(mut chain: *mut PROCESS) -> c_int {$/;" f +discard_unwind_frame builtins_rust/jobs/src/lib.rs /^ fn discard_unwind_frame(str: *mut c_char);$/;" f +discard_unwind_frame builtins_rust/read/src/intercdep.rs /^ pub fn discard_unwind_frame(arg1: *mut c_char);$/;" f +discard_unwind_frame r_bash/src/lib.rs /^ pub fn discard_unwind_frame(arg1: *mut ::std::os::raw::c_char);$/;" f +discard_unwind_frame unwind_prot.c /^discard_unwind_frame (tag)$/;" f +disconnect vendor/futures-channel/src/mpsc/mod.rs /^ pub fn disconnect(&mut self) {$/;" P implementation:Sender +disconnect vendor/futures-channel/src/mpsc/mod.rs /^ pub fn disconnect(&mut self) {$/;" P implementation:UnboundedSender +disconnectx vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn disconnectx(socket: ::c_int, associd: sae_associd_t, connid: sae_connid_t) -> ::c_int/;" f +discouraged vendor/syn/src/parse.rs /^pub mod discouraged;$/;" n +dispcolumn builtins_rust/help/src/lib.rs /^pub extern "C" fn dispcolumn($/;" f +dispex vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dispex")] pub mod dispex;$/;" n +display vendor/nix/src/sys/socket/addr.rs /^ fn display() {$/;" f module:tests::sockaddr_in +display vendor/nix/src/sys/socket/addr.rs /^ fn display() {$/;" f module:tests::sockaddr_in6 +display vendor/syn/src/ext.rs /^ fn display() -> &'static str {$/;" P implementation:IdentAny +display vendor/syn/src/ident.rs /^ fn display() -> &'static str {$/;" P implementation:Ident +display vendor/syn/src/token.rs /^ fn display() -> &'static str {$/;" P implementation:Brace +display vendor/syn/src/token.rs /^ fn display() -> &'static str {$/;" P implementation:Bracket +display vendor/syn/src/token.rs /^ fn display() -> &'static str {$/;" P implementation:Group +display vendor/syn/src/token.rs /^ fn display() -> &'static str {$/;" P implementation:Paren +display vendor/syn/src/token.rs /^ fn display() -> &'static str {$/;" P implementation:T +display vendor/syn/src/token.rs /^ fn display() -> &'static str {$/;" P implementation:Underscore +display vendor/syn/src/token.rs /^ fn display() -> &'static str;$/;" P interface:CustomToken +display vendor/syn/src/token.rs /^ fn display() -> &'static str;$/;" P interface:Token +display vendor/thiserror-impl/src/attr.rs /^ pub display: Option>,$/;" m struct:Attrs +display vendor/thiserror/src/lib.rs /^mod display;$/;" n +display.o lib/readline/Makefile.in /^display.o: ansi_stdlib.h posixstat.h$/;" t +display.o lib/readline/Makefile.in /^display.o: display.c$/;" t +display.o lib/readline/Makefile.in /^display.o: history.h rlstdc.h$/;" t +display.o lib/readline/Makefile.in /^display.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +display.o lib/readline/Makefile.in /^display.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +display.o lib/readline/Makefile.in /^display.o: rlmbutil.h$/;" t +display.o lib/readline/Makefile.in /^display.o: rlprivate.h$/;" t +display.o lib/readline/Makefile.in /^display.o: tcap.h$/;" t +display.o lib/readline/Makefile.in /^display.o: xmalloc.h$/;" t +display_history builtins_rust/history/src/lib.rs /^unsafe fn display_history(list: *mut WordList) -> c_int {$/;" f +display_matches lib/readline/complete.c /^display_matches (char **matches)$/;" f typeref:typename:void file: +display_shell_version bashline.c /^display_shell_version (count, c)$/;" f file: +display_signal_list builtins/common.c /^display_signal_list (list, forcecols)$/;" f +display_signal_list builtins_rust/kill/src/intercdep.rs /^ pub fn display_signal_list (list: *mut WordList, forcecols: c_int) -> c_int;$/;" f +display_signal_list builtins_rust/trap/src/intercdep.rs /^ pub fn display_signal_list(list: *mut WordList, forcecols: c_int) -> c_int;$/;" f +display_signal_list r_bash/src/lib.rs /^ pub fn display_signal_list($/;" f +display_traps builtins_rust/trap/src/lib.rs /^unsafe fn display_traps(mut list: *mut WordList, show_all: c_int) -> c_int {$/;" f +displaying_prompt_first_line lib/readline/display.c /^static int displaying_prompt_first_line;$/;" v typeref:typename:int file: +displen execute_cmd.c /^displen (s)$/;" f file: +dispose_builtin_env r_bash/src/lib.rs /^ pub fn dispose_builtin_env();$/;" f +dispose_cmd.o Makefile.in /^dispose_cmd.o: ${BASHINCDIR}\/ocache.h$/;" t +dispose_cmd.o Makefile.in /^dispose_cmd.o: assoc.h ${BASHINCDIR}\/chartypes.h$/;" t +dispose_cmd.o Makefile.in /^dispose_cmd.o: bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +dispose_cmd.o Makefile.in /^dispose_cmd.o: error.h general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array/;" t +dispose_cmd.o Makefile.in /^dispose_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h$/;" t +dispose_cmd.o Makefile.in /^dispose_cmd.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +dispose_cmd.o Makefile.in /^dispose_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINC/;" t +dispose_command builtins_rust/command/src/lib.rs /^ fn dispose_command(_: *mut COMMAND);$/;" f +dispose_command builtins_rust/jobs/src/lib.rs /^ fn dispose_command(command: *mut COMMAND);$/;" f +dispose_command dispose_cmd.c /^dispose_command (command)$/;" f +dispose_command r_bash/src/lib.rs /^ pub fn dispose_command(arg1: *mut COMMAND);$/;" f +dispose_command r_jobs/src/lib.rs /^ fn dispose_command(_: *mut COMMAND);$/;" f +dispose_command r_print_cmd/src/lib.rs /^ fn dispose_command(command:*mut COMMAND);$/;" f +dispose_cond_node dispose_cmd.c /^dispose_cond_node (cond)$/;" f +dispose_cond_node r_bash/src/lib.rs /^ pub fn dispose_cond_node(arg1: *mut COND_COM);$/;" f +dispose_exec_redirects execute_cmd.c /^dispose_exec_redirects ()$/;" f typeref:typename:void +dispose_exec_redirects r_bash/src/lib.rs /^ pub fn dispose_exec_redirects();$/;" f +dispose_fd_bitmap execute_cmd.c /^dispose_fd_bitmap (fdbp)$/;" f +dispose_fd_bitmap r_bash/src/lib.rs /^ pub fn dispose_fd_bitmap(arg1: *mut fd_bitmap);$/;" f +dispose_function_def dispose_cmd.c /^dispose_function_def (c)$/;" f +dispose_function_def r_bash/src/lib.rs /^ pub fn dispose_function_def(arg1: *mut FUNCTION_DEF);$/;" f +dispose_function_def_contents dispose_cmd.c /^dispose_function_def_contents (c)$/;" f +dispose_function_def_contents r_bash/src/lib.rs /^ pub fn dispose_function_def_contents(arg1: *mut FUNCTION_DEF);$/;" f +dispose_function_env r_bash/src/lib.rs /^ pub fn dispose_function_env();$/;" f +dispose_mail_file mailcheck.c /^dispose_mail_file (mf)$/;" f file: +dispose_partial_redirects execute_cmd.c /^dispose_partial_redirects ()$/;" f typeref:typename:void +dispose_partial_redirects r_bash/src/lib.rs /^ pub fn dispose_partial_redirects();$/;" f +dispose_redirects builtins_rust/exec/src/lib.rs /^ fn dispose_redirects(list: *mut REDIRECT);$/;" f +dispose_redirects dispose_cmd.c /^dispose_redirects (list)$/;" f +dispose_redirects r_bash/src/lib.rs /^ pub fn dispose_redirects(arg1: *mut REDIRECT);$/;" f +dispose_redirects r_print_cmd/src/lib.rs /^ fn dispose_redirects(list:*mut REDIRECT);$/;" f +dispose_saved_dollar_vars builtins_rust/source/src/lib.rs /^ fn dispose_saved_dollar_vars();$/;" f +dispose_saved_dollar_vars r_bash/src/lib.rs /^ pub fn dispose_saved_dollar_vars();$/;" f +dispose_saved_dollar_vars variables.c /^dispose_saved_dollar_vars ()$/;" f typeref:typename:void +dispose_temporary_env variables.c /^dispose_temporary_env (pushf)$/;" f file: +dispose_used_env_vars r_bash/src/lib.rs /^ pub fn dispose_used_env_vars();$/;" f +dispose_used_env_vars variables.c /^dispose_used_env_vars ()$/;" f typeref:typename:void +dispose_var_context r_bash/src/lib.rs /^ pub fn dispose_var_context(arg1: *mut VAR_CONTEXT);$/;" f +dispose_var_context variables.c /^dispose_var_context (vc)$/;" f +dispose_variable r_bash/src/lib.rs /^ pub fn dispose_variable(arg1: *mut SHELL_VAR);$/;" f +dispose_variable variables.c /^dispose_variable (var)$/;" f +dispose_variable_value variables.c /^dispose_variable_value (var)$/;" f file: +dispose_word builtins_rust/setattr/src/intercdep.rs /^ pub fn dispose_word(w: *mut WordDesc);$/;" f +dispose_word dispose_cmd.c /^dispose_word (w)$/;" f +dispose_word r_bash/src/lib.rs /^ pub fn dispose_word(arg1: *mut WORD_DESC);$/;" f +dispose_word_array dispose_cmd.c /^dispose_word_array (array)$/;" f +dispose_word_array r_bash/src/lib.rs /^ pub fn dispose_word_array(arg1: *mut *mut ::std::os::raw::c_char);$/;" f +dispose_word_desc dispose_cmd.c /^dispose_word_desc (w)$/;" f +dispose_word_desc r_bash/src/lib.rs /^ pub fn dispose_word_desc(arg1: *mut WORD_DESC);$/;" f +dispose_words builtins_rust/common/src/lib.rs /^ fn dispose_words(list: *mut WordList);$/;" f +dispose_words builtins_rust/complete/src/lib.rs /^ fn dispose_words(list: *mut WordList);$/;" f +dispose_words builtins_rust/pushd/src/lib.rs /^ fn dispose_words(l: *mut WordList);$/;" f +dispose_words builtins_rust/read/src/intercdep.rs /^ pub fn dispose_words(s: *mut WordList);$/;" f +dispose_words builtins_rust/shopt/src/lib.rs /^ fn dispose_words(_: *mut WordList);$/;" f +dispose_words dispose_cmd.c /^dispose_words (list)$/;" f +dispose_words r_bash/src/lib.rs /^ pub fn dispose_words(arg1: *mut WORD_LIST);$/;" f +dist Makefile.in /^dist: force$/;" t +dist lib/intl/Makefile.in /^dist distdir: Makefile$/;" t +dist_version r_bash/src/lib.rs /^ pub static mut dist_version: *mut ::std::os::raw::c_char;$/;" v +dist_version version.c /^const char * const dist_version = DISTVERSION;$/;" v typeref:typename:const char * const +distclean Makefile.in /^distclean: basic-clean maybe-clean$/;" t +distclean builtins/Makefile.in /^distclean maintainer-clean: clean$/;" t +distclean lib/glob/Makefile.in /^realclean distclean maintainer-clean: clean$/;" t +distclean lib/glob/doc/Makefile /^clean distclean mostlyclean maintainer-clean:$/;" t +distclean lib/intl/Makefile.in /^distclean: clean$/;" t +distclean lib/malloc/Makefile.in /^distclean realclean maintainer-clean: clean$/;" t +distclean lib/readline/Makefile.in /^distclean maintainer-clean: clean$/;" t +distclean lib/sh/Makefile.in /^realclean distclean maintainer-clean: clean$/;" t +distclean lib/termcap/Makefile.in /^distclean maintainer-clean: clean$/;" t +distclean lib/tilde/Makefile.in /^realclean distclean maintainer-clean: clean$/;" t +distclean support/Makefile.in /^distclean maintainer-clean mostlyclean: clean$/;" t +distdir lib/intl/Makefile.in /^dist distdir: Makefile$/;" t +distdir lib/intl/Makefile.in /^distdir = ..\/$(PACKAGE)-$(VERSION)\/$(subdir)$/;" m +distinct_backtrace_field vendor/thiserror-impl/src/prop.rs /^ pub(crate) fn distinct_backtrace_field(&self) -> Option<&Field> {$/;" P implementation:Struct +distinct_backtrace_field vendor/thiserror-impl/src/prop.rs /^ pub(crate) fn distinct_backtrace_field(&self) -> Option<&Field> {$/;" P implementation:Variant +distinct_backtrace_field vendor/thiserror-impl/src/prop.rs /^fn distinct_backtrace_field<'a, 'b>($/;" f +div r_bash/src/lib.rs /^ pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) -> div_t;$/;" f +div r_glob/src/lib.rs /^ pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) -> div_t;$/;" f +div r_readline/src/lib.rs /^ pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) -> div_t;$/;" f +div vendor/libc/src/solid/mod.rs /^ pub fn div(arg1: c_int, arg2: c_int) -> div_t;$/;" f +div vendor/nix/src/sys/time.rs /^ fn div(self, rhs: i32) -> TimeSpec {$/;" P implementation:TimeSpec +div vendor/nix/src/sys/time.rs /^ fn div(self, rhs: i32) -> TimeVal {$/;" P implementation:TimeVal +div_euclid vendor/stdext/src/num/integer.rs /^ fn div_euclid(self, rhs: Self) -> Self;$/;" P interface:Integer +div_floor_64 vendor/nix/src/sys/time.rs /^fn div_floor_64(this: i64, other: i64) -> i64 {$/;" f +div_mod_floor_64 vendor/nix/src/sys/time.rs /^fn div_mod_floor_64(this: i64, other: i64) -> (i64, i64) {$/;" f +div_rem_64 vendor/nix/src/sys/time.rs /^fn div_rem_64(this: i64, other: i64) -> (i64, i64) {$/;" f +div_t r_bash/src/lib.rs /^pub struct div_t {$/;" s +div_t r_glob/src/lib.rs /^pub struct div_t {$/;" s +div_t r_readline/src/lib.rs /^pub struct div_t {$/;" s +divide lib/intl/plural-exp.h /^ divide, \/* Division. *\/$/;" e enum:expression::__anon93874cf10103 +divtimeval lib/sh/timeval.c /^divtimeval (d, m)$/;" f +dl_iterate_phdr vendor/libc/src/fuchsia/mod.rs /^ pub fn dl_iterate_phdr($/;" f +dl_iterate_phdr vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn dl_iterate_phdr($/;" f +dl_iterate_phdr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn dl_iterate_phdr($/;" f +dl_iterate_phdr vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn dl_iterate_phdr($/;" f +dl_iterate_phdr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn dl_iterate_phdr($/;" f +dl_iterate_phdr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn dl_iterate_phdr($/;" f +dl_iterate_phdr vendor/libc/src/unix/solarish/mod.rs /^ pub fn dl_iterate_phdr($/;" f +dl_set support/man2html.c /^static int dl_set[20] = {0};$/;" v typeref:typename:int[20] file: +dladdr vendor/libc/src/fuchsia/mod.rs /^ pub fn dladdr(addr: *const ::c_void, info: *mut Dl_info) -> ::c_int;$/;" f +dladdr vendor/libc/src/unix/mod.rs /^ pub fn dladdr(addr: *const ::c_void, info: *mut Dl_info) -> ::c_int;$/;" f +dladdr vendor/libc/src/vxworks/mod.rs /^ pub fn dladdr(addr: *mut ::c_void, info: *mut Dl_info) -> ::c_int;$/;" f +dladdr vendor/libloading/src/os/unix/mod.rs /^ fn dladdr(addr: *mut raw::c_void, info: *mut DlInfo) -> raw::c_int;$/;" f +dladdr1 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn dladdr1($/;" f +dlclose CWRU/misc/hpux10-dlfcn.h /^#define dlclose(/;" d +dlclose builtins_rust/enable/src/lib.rs /^ fn dlclose(__handle: *mut libc::c_void) -> libc::c_int;$/;" f +dlclose vendor/libc/src/fuchsia/mod.rs /^ pub fn dlclose(handle: *mut ::c_void) -> ::c_int;$/;" f +dlclose vendor/libc/src/unix/mod.rs /^ pub fn dlclose(handle: *mut ::c_void) -> ::c_int;$/;" f +dlclose vendor/libc/src/vxworks/mod.rs /^ pub fn dlclose(handle: *mut ::c_void) -> ::c_int;$/;" f +dlclose vendor/libloading/src/os/unix/mod.rs /^ fn dlclose(handle: *mut raw::c_void) -> raw::c_int;$/;" f +dlerror CWRU/misc/hpux10-dlfcn.h /^#define dlerror(/;" d +dlerror builtins_rust/enable/src/lib.rs /^ fn dlerror() -> *mut libc::c_char;$/;" f +dlerror vendor/libc/src/fuchsia/mod.rs /^ pub fn dlerror() -> *mut ::c_char;$/;" f +dlerror vendor/libc/src/unix/mod.rs /^ pub fn dlerror() -> *mut ::c_char;$/;" f +dlerror vendor/libc/src/vxworks/mod.rs /^ pub fn dlerror() -> *mut ::c_char;$/;" f +dlerror vendor/libloading/src/os/unix/mod.rs /^ fn dlerror() -> *mut raw::c_char;$/;" f +dli_fbase vendor/libloading/src/os/unix/mod.rs /^ dli_fbase: *mut raw::c_void,$/;" m struct:DlInfo +dli_fname vendor/libloading/src/os/unix/mod.rs /^ dli_fname: *const raw::c_char,$/;" m struct:DlInfo +dli_saddr vendor/libloading/src/os/unix/mod.rs /^ dli_saddr: *mut raw::c_void$/;" m struct:DlInfo +dli_sname vendor/libloading/src/os/unix/mod.rs /^ dli_sname: *const raw::c_char,$/;" m struct:DlInfo +dlinfo vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn dlinfo(handle: *mut ::c_void, request: ::c_int, info: *mut ::c_void) -> ::c_int;$/;" f +dlmopen vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn dlmopen(lmid: Lmid_t, filename: *const ::c_char, flag: ::c_int) -> *mut ::c_void;$/;" f +dlopen CWRU/misc/hpux10-dlfcn.h /^#define dlopen(/;" d +dlopen builtins_rust/enable/src/lib.rs /^ fn dlopen(__file: *const libc::c_char, __mode: libc::c_int) -> *mut libc::c_void;$/;" f +dlopen vendor/libc/src/fuchsia/mod.rs /^ pub fn dlopen(filename: *const ::c_char, flag: ::c_int) -> *mut ::c_void;$/;" f +dlopen vendor/libc/src/unix/mod.rs /^ pub fn dlopen(filename: *const ::c_char, flag: ::c_int) -> *mut ::c_void;$/;" f +dlopen vendor/libc/src/vxworks/mod.rs /^ pub fn dlopen(filename: *const ::c_char, flag: ::c_int) -> *mut ::c_void;$/;" f +dlopen vendor/libloading/src/os/unix/mod.rs /^ fn dlopen(filename: *const raw::c_char, flags: raw::c_int) -> *mut raw::c_void;$/;" f +dlsym CWRU/misc/hpux10-dlfcn.h /^#define dlsym(/;" d +dlsym builtins_rust/enable/src/lib.rs /^ fn dlsym(__handle: *mut libc::c_void, __name: *const libc::c_char) -> *mut libc::c_void;$/;" f +dlsym vendor/libc/src/fuchsia/mod.rs /^ pub fn dlsym(handle: *mut ::c_void, symbol: *const ::c_char) -> *mut ::c_void;$/;" f +dlsym vendor/libc/src/unix/mod.rs /^ pub fn dlsym(handle: *mut ::c_void, symbol: *const ::c_char) -> *mut ::c_void;$/;" f +dlsym vendor/libc/src/vxworks/mod.rs /^ pub fn dlsym(handle: *mut ::c_void, symbol: *const ::c_char) -> *mut ::c_void;$/;" f +dlsym vendor/libloading/src/os/unix/mod.rs /^ fn dlsym(handle: *mut raw::c_void, symbol: *const raw::c_char) -> *mut raw::c_void;$/;" f +dmap lib/readline/rlprivate.h /^ Keymap dmap;$/;" m struct:__rl_keyseq_context typeref:typename:Keymap +dmap r_readline/src/lib.rs /^ pub dmap: Keymap,$/;" m struct:__rl_keyseq_context +dmksctl vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dmksctl")] pub mod dmksctl;$/;" n +dmusicc vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dmusicc")] pub mod dmusicc;$/;" n +dngettext include/gettext.h /^# define dngettext(/;" d +dngettext lib/intl/intl-compat.c /^dngettext (domainname, msgid1, msgid2, n)$/;" f +dngettext lib/intl/libgnuintl.h.in /^# define dngettext /;" d file: +dngettext lib/intl/libgnuintl.h.in /^static inline char *dngettext (const char *__domainname, const char *__msgid1,$/;" f typeref:typename:char * file: +dngettext r_bash/src/lib.rs /^ pub fn dngettext($/;" f +dngettext.$lo lib/intl/Makefile.in /^bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomai/;" t +dngettext.lo lib/intl/Makefile.in /^dngettext.lo: $(srcdir)\/dngettext.c$/;" t +do_accent support/texi2html /^sub do_accent$/;" s +do_acronym support/texi2html /^sub do_acronym$/;" s +do_assignment r_bash/src/lib.rs /^ pub fn do_assignment(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +do_assignment subst.c /^do_assignment (string)$/;" f +do_assignment_internal subst.c /^do_assignment_internal (word, expand)$/;" f file: +do_assignment_no_expand builtins_rust/setattr/src/intercdep.rs /^ pub fn do_assignment_no_expand(string: *mut c_char) -> c_int;$/;" f +do_assignment_no_expand r_bash/src/lib.rs /^ pub fn do_assignment_no_expand(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +do_assignment_no_expand subst.c /^do_assignment_no_expand (string)$/;" f +do_chop builtins_rust/mapfile/src/lib.rs /^unsafe fn do_chop(line: *mut c_char, d: c_uchar) {$/;" f +do_compound_assignment subst.c /^do_compound_assignment (name, value, flags)$/;" f file: +do_ctrl support/texi2html /^sub do_ctrl { "^$_[0]" }$/;" s +do_email support/texi2html /^sub do_email {$/;" s +do_it vendor/futures/tests/recurse.rs /^ fn do_it(input: (i32, i32)) -> BoxFuture<'static, i32> {$/;" f function:lots +do_math support/texi2html /^sub do_math$/;" s +do_negotiate vendor/fluent-langneg/benches/negotiate.rs /^fn do_negotiate<'a>($/;" f +do_piping execute_cmd.c /^do_piping (pipe_in, pipe_out)$/;" f file: +do_redirection_internal redir.c /^do_redirection_internal (redirect, flags, fnp)$/;" f file: +do_redirections r_bash/src/lib.rs /^ pub fn do_redirections($/;" f +do_redirections redir.c /^do_redirections (list, flags)$/;" f +do_sc support/texi2html /^sub do_sc $/;" s +do_send_b vendor/futures-channel/src/mpsc/mod.rs /^ fn do_send_b(&mut self, msg: T) -> Result<(), TrySendError> {$/;" P implementation:BoundedSenderInner +do_send_nb vendor/futures-channel/src/mpsc/mod.rs /^ fn do_send_nb(&self, msg: T) -> Result<(), TrySendError> {$/;" P implementation:UnboundedSender +do_something vendor/async-trait/tests/test.rs /^ fn do_something(_: &mut T) {}$/;" f module:issue23 +do_uref support/texi2html /^sub do_uref {$/;" s +do_url support/texi2html /^sub do_url { &t2h_anchor('', $_[0], $_[0]) }$/;" s +do_version shell.c /^static int do_version; \/* Display interesting version info. *\/$/;" v typeref:typename:int file: +do_word_assignment r_bash/src/lib.rs /^ pub fn do_word_assignment($/;" f +do_word_assignment subst.c /^do_word_assignment (word, flags)$/;" f +doc lib/readline/examples/fileman.c /^ char *doc; \/* Documentation for this function. *\/$/;" m struct:__anonbfd4ee390108 typeref:typename:char * file: +doc_comment vendor/proc-macro2/src/parse.rs /^fn doc_comment<'a>(input: Cursor<'a>, trees: &mut TokenStreamBuilder) -> PResult<'a, ()> {$/;" f +doc_comment vendor/syn/tests/common/eq.rs /^fn doc_comment<'a>($/;" f +doc_comment_contents vendor/proc-macro2/src/parse.rs /^fn doc_comment_contents(input: Cursor) -> PResult<(&str, bool)> {$/;" f +doc_href support/texi2html /^sub doc_href {$/;" s +docdir Makefile.in /^docdir = @docdir@$/;" m +docname builtins/mkbuiltins.c /^ char *docname; \/* Possible name for documentation string. *\/$/;" m struct:__anon69e836710208 typeref:typename:char * file: +docname_handler builtins/mkbuiltins.c /^docname_handler (self, defs, arg)$/;" f +docobj vendor/winapi/src/um/mod.rs /^#[cfg(feature = "docobj")] pub mod docobj;$/;" n +document_join_macro vendor/futures-util/src/async_await/join_mod.rs /^macro_rules! document_join_macro {$/;" M +document_name builtins/mkbuiltins.c /^#define document_name(/;" d file: +document_select_macro vendor/futures-util/src/async_await/select_mod.rs /^macro_rules! document_select_macro {$/;" M +documentation builtins/Makefile.in /^documentation: builtins.texi$/;" t +documentation lib/glob/Makefile.in /^documentation: force$/;" t +documentation lib/readline/Makefile.in /^documentation: force$/;" t +documentation lib/tilde/Makefile.in /^documentation: force$/;" t +documentation_file builtins/mkbuiltins.c /^FILE *documentation_file = (FILE *)NULL;$/;" v typeref:typename:FILE * +documenttarget vendor/winapi/src/um/mod.rs /^#[cfg(feature = "documenttarget")] pub mod documenttarget;$/;" n +dollar_arg_stack variables.c /^static struct saved_dollar_vars *dollar_arg_stack = (struct saved_dollar_vars *)NULL;$/;" v typeref:struct:saved_dollar_vars * file: +dollar_arg_stack_index variables.c /^static int dollar_arg_stack_index;$/;" v typeref:typename:int file: +dollar_arg_stack_slots variables.c /^static int dollar_arg_stack_slots;$/;" v typeref:typename:int file: +dollar_dollar_pid r_bash/src/lib.rs /^ pub static mut dollar_dollar_pid: pid_t;$/;" v +dollar_dollar_pid variables.c /^pid_t dollar_dollar_pid;$/;" v typeref:typename:pid_t +dollar_vars builtins_rust/common/src/lib.rs /^ static mut dollar_vars: [*mut c_char; 10];$/;" v +dollar_vars builtins_rust/getopts/src/lib.rs /^ static dollar_vars: [*mut c_char; 10];$/;" v +dollar_vars r_bash/src/lib.rs /^ pub static mut dollar_vars: [*mut ::std::os::raw::c_char; 0usize];$/;" v +dollar_vars variables.c /^char *dollar_vars[10];$/;" v typeref:typename:char * [10] +dollar_vars_changed builtins/common.c /^dollar_vars_changed ()$/;" f typeref:typename:int +dollar_vars_changed builtins_rust/source/src/lib.rs /^ fn dollar_vars_changed() -> i32;$/;" f +dollar_vars_changed r_bash/src/lib.rs /^ pub fn dollar_vars_changed() -> ::std::os::raw::c_int;$/;" f +domain lib/intl/dcigettext.c /^ struct loaded_l10nfile *domain;$/;" m struct:known_translation_t typeref:struct:loaded_l10nfile * file: +domain lib/intl/dcigettext.c /^ struct loaded_l10nfile *domain;$/;" v typeref:struct:loaded_l10nfile * +domainname lib/intl/dcigettext.c /^ char *domainname;$/;" m struct:known_translation_t typeref:typename:char * file: +domainname lib/intl/gettextP.h /^ char domainname[ZERO];$/;" m struct:binding typeref:typename:char[] +domainname_len lib/intl/dcigettext.c /^ size_t domainname_len;$/;" v typeref:typename:size_t +domainset_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^pub type domainset_t = __c_anonymous_domainset;$/;" t +domainset_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^pub type domainset_t = __c_anonymous_domainset;$/;" t +done lib/readline/examples/fileman.c /^int done;$/;" v typeref:typename:int +done lib/readline/readline.h /^ int done;$/;" m struct:readline_state typeref:typename:int +done r_readline/src/lib.rs /^ pub done: ::std::os::raw::c_int,$/;" m struct:readline_state +dont_clone_in_single_owner_shared_future vendor/futures/tests/future_shared.rs /^fn dont_clone_in_single_owner_shared_future() {$/;" f +dont_do_unnecessary_clones_on_output vendor/futures/tests/future_shared.rs /^fn dont_do_unnecessary_clones_on_output() {$/;" f +dont_save_function_defs bashhist.c /^int dont_save_function_defs;$/;" v typeref:typename:int +dont_save_function_defs builtins_rust/set/src/lib.rs /^ static mut dont_save_function_defs: i32;$/;" v +dont_save_function_defs r_bash/src/lib.rs /^ pub static mut dont_save_function_defs: ::std::os::raw::c_int;$/;" v +dont_save_function_defs r_bashhist/src/lib.rs /^pub static mut dont_save_function_defs:c_int = 0;$/;" v +door_attr_t vendor/libc/src/unix/solarish/solaris.rs /^pub type door_attr_t = ::c_uint;$/;" t +door_call vendor/libc/src/unix/solarish/solaris.rs /^ pub fn door_call(d: ::c_int, params: *const door_arg_t) -> ::c_int;$/;" f +door_create vendor/libc/src/unix/solarish/solaris.rs /^ pub fn door_create($/;" f +door_id_t vendor/libc/src/unix/solarish/solaris.rs /^pub type door_id_t = ::c_ulonglong;$/;" t +door_return vendor/libc/src/unix/solarish/solaris.rs /^ pub fn door_return($/;" f +dot Makefile.in /^dot = .$/;" m +dot1x vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dot1x")] pub mod dot1x;$/;" n +dot3VendorAMD vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ dot3VendorAMD = 1,$/;" e enum:dot3Vendors +dot3VendorDigital vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ dot3VendorDigital = 6,$/;" e enum:dot3Vendors +dot3VendorFujitsu vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ dot3VendorFujitsu = 5,$/;" e enum:dot3Vendors +dot3VendorIntel vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ dot3VendorIntel = 2,$/;" e enum:dot3Vendors +dot3VendorNational vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ dot3VendorNational = 4,$/;" e enum:dot3Vendors +dot3VendorWesternDigital vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ dot3VendorWesternDigital = 7,$/;" e enum:dot3Vendors +dot3Vendors vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Clone for dot3Vendors {$/;" c +dot3Vendors vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^impl ::Copy for dot3Vendors {}$/;" c +dot3Vendors vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub enum dot3Vendors {$/;" g +dot_found_in_search builtins_rust/hash/src/lib.rs /^ static dot_found_in_search: i32;$/;" v +dot_found_in_search findcmd.c /^int dot_found_in_search = 0;$/;" v typeref:typename:int +dot_found_in_search r_bash/src/lib.rs /^ pub static mut dot_found_in_search: ::std::os::raw::c_int;$/;" v +dot_in_path bashline.c /^static int dot_in_path = 0;$/;" v typeref:typename:int file: +double_ended_take vendor/memchr/src/tests/memchr/iter.rs /^fn double_ended_take(mut iter: I, take_side: J) -> Vec$/;" f +double_quotes_inhibit_history_expansion bashhist.c /^int double_quotes_inhibit_history_expansion = 0;$/;" v typeref:typename:int +double_quotes_inhibit_history_expansion r_bash/src/lib.rs /^ pub static mut double_quotes_inhibit_history_expansion: ::std::os::raw::c_int;$/;" v +double_quotes_inhibit_history_expansion r_bashhist/src/lib.rs /^pub static mut double_quotes_inhibit_history_expansion:c_int = 0;$/;" v +double_remove_panics vendor/slab/tests/slab.rs /^fn double_remove_panics() {$/;" f +down builtins_rust/declare/src/lib.rs /^ down: *mut VAR_CONTEXT, \/* down towards global context *\/$/;" m struct:VAR_CONTEXT +down r_bash/src/lib.rs /^ pub down: *mut var_context,$/;" m struct:var_context +down variables.h /^ struct var_context *down; \/* down towards global context *\/$/;" m struct:var_context typeref:struct:var_context * +downgrade vendor/futures-util/src/future/future/shared.rs /^ pub fn downgrade(&self) -> Option> {$/;" f +downgrade vendor/futures/tests/future_shared.rs /^fn downgrade() {$/;" f +download_and_unpack vendor/syn/tests/repo/mod.rs /^fn download_and_unpack() -> Result<()> {$/;" f +dpa_dsa vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dpa_dsa")] pub mod dpa_dsa;$/;" n +dpapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dpapi")] pub mod dpapi;$/;" n +dparen-arithmetic configure.ac /^AC_ARG_ENABLE(dparen-arithmetic, AC_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) c/;" e +dprintf lib/sh/dprintf.c /^dprintf(int fd, const char *format, ...)$/;" f typeref:typename:int +dprintf r_bash/src/lib.rs /^ pub fn dprintf($/;" f +dprintf r_readline/src/lib.rs /^ pub fn dprintf($/;" f +dprintf.o lib/sh/Makefile.in /^dprintf.o: ${BASHINCDIR}\/stdc.h$/;" t +dprintf.o lib/sh/Makefile.in /^dprintf.o: ${BUILD_DIR}\/config.h$/;" t +dprintf.o lib/sh/Makefile.in /^dprintf.o: dprintf.c$/;" t +drain vendor/futures-util/src/sink/drain.rs /^pub fn drain() -> Drain {$/;" f +drain vendor/futures-util/src/sink/mod.rs /^mod drain;$/;" n +drain vendor/slab/src/lib.rs /^ pub fn drain(&mut self) -> Drain<'_, T> {$/;" P implementation:Slab +drain vendor/smallvec/src/lib.rs /^ pub fn drain(&mut self, range: R) -> Drain<'_, A>$/;" P implementation:SmallVec +drain vendor/smallvec/src/tests.rs /^fn drain() {$/;" f +drain_forget vendor/smallvec/src/tests.rs /^fn drain_forget() {$/;" f +drain_incoming vendor/futures-executor/src/local_pool.rs /^ fn drain_incoming(&mut self) {$/;" P implementation:LocalPool +drain_overflow vendor/smallvec/src/tests.rs /^fn drain_overflow() {$/;" f +drain_rev vendor/slab/tests/slab.rs /^fn drain_rev() {$/;" f +drain_rev vendor/smallvec/src/tests.rs /^fn drain_rev() {$/;" f +draino jobs.c /^draino (fd, ospeed)$/;" f file: +drand48 r_bash/src/lib.rs /^ pub fn drand48() -> f64;$/;" f +drand48 r_glob/src/lib.rs /^ pub fn drand48() -> f64;$/;" f +drand48 r_readline/src/lib.rs /^ pub fn drand48() -> f64;$/;" f +drand48 vendor/libc/src/solid/mod.rs /^ pub fn drand48() -> f64;$/;" f +drand48 vendor/libc/src/unix/bsd/mod.rs /^ pub fn drand48() -> ::c_double;$/;" f +drand48 vendor/libc/src/unix/haiku/mod.rs /^ pub fn drand48() -> ::c_double;$/;" f +drand48_data r_bash/src/lib.rs /^pub struct drand48_data {$/;" s +drand48_data r_glob/src/lib.rs /^pub struct drand48_data {$/;" s +drand48_data r_readline/src/lib.rs /^pub struct drand48_data {$/;" s +drand48_r r_bash/src/lib.rs /^ pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) -> ::std::os::raw::c_int;$/;" f +drand48_r r_glob/src/lib.rs /^ pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) -> ::std::os::raw::c_int;$/;" f +drand48_r r_readline/src/lib.rs /^ pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) -> ::std::os::raw::c_int;$/;" f +drop vendor/async-trait/tests/executor/mod.rs /^ unsafe fn drop(_null: *const ()) {}$/;" f function:block_on_simple +drop vendor/async-trait/tests/test.rs /^ fn drop(&mut self) {$/;" P implementation:drop_order::Flagger +drop vendor/async-trait/tests/test.rs /^ fn drop(&mut self) {$/;" P implementation:issue199::IncrementOnDrop +drop vendor/futures-channel/src/lock.rs /^ fn drop(&mut self) {$/;" P implementation:TryLock +drop vendor/futures-channel/src/mpsc/mod.rs /^ fn drop(&mut self) {$/;" P implementation:BoundedSenderInner +drop vendor/futures-channel/src/mpsc/mod.rs /^ fn drop(&mut self) {$/;" P implementation:Receiver +drop vendor/futures-channel/src/mpsc/mod.rs /^ fn drop(&mut self) {$/;" P implementation:UnboundedReceiver +drop vendor/futures-channel/src/mpsc/mod.rs /^ fn drop(&mut self) {$/;" P implementation:UnboundedSenderInner +drop vendor/futures-channel/src/mpsc/queue.rs /^ fn drop(&mut self) {$/;" P implementation:Queue +drop vendor/futures-channel/src/oneshot.rs /^ fn drop(&mut self) {$/;" P implementation:Receiver +drop vendor/futures-channel/src/oneshot.rs /^ fn drop(&mut self) {$/;" P implementation:Sender +drop vendor/futures-channel/tests/channel.rs /^ fn drop(&mut self) {$/;" P implementation:drop_order::A +drop vendor/futures-executor/src/enter.rs /^ fn drop(&mut self) {$/;" P implementation:Enter +drop vendor/futures-executor/src/thread_pool.rs /^ fn drop(&mut self) {$/;" P implementation:ThreadPool +drop vendor/futures-task/src/future_obj.rs /^ unsafe fn drop(ptr: *mut (dyn Future + 'a)) {$/;" P implementation:if_alloc::Box +drop vendor/futures-task/src/future_obj.rs /^ unsafe fn drop(ptr: *mut (dyn Future + 'a)) {$/;" P implementation:if_alloc::Pin +drop vendor/futures-task/src/future_obj.rs /^ unsafe fn drop(ptr: *mut (dyn Future + 'a)) {$/;" f module:if_alloc +drop vendor/futures-task/src/future_obj.rs /^ fn drop(&mut self) {$/;" P implementation:LocalFutureObj +drop vendor/futures-task/src/future_obj.rs /^ unsafe fn drop(_ptr: *mut (dyn Future + 'a)) {}$/;" P implementation:Pin +drop vendor/futures-task/src/future_obj.rs /^ unsafe fn drop(_ptr: *mut (dyn Future + 'a)) {}$/;" f +drop vendor/futures-task/src/future_obj.rs /^ unsafe fn drop(ptr: *mut (dyn Future + 'a));$/;" P interface:UnsafeFutureObj +drop vendor/futures-util/src/compat/compat03as01.rs /^ unsafe fn drop(_: *const ()) {}$/;" f method:Current::as_waker +drop vendor/futures-util/src/future/future/shared.rs /^ fn drop(&mut self) {$/;" P implementation:poll::Reset +drop vendor/futures-util/src/future/future/shared.rs /^ fn drop(&mut self) {$/;" f +drop vendor/futures-util/src/io/read_to_end.rs /^ fn drop(&mut self) {$/;" P implementation:Guard +drop vendor/futures-util/src/lock/bilock.rs /^ fn drop(&mut self) {$/;" P implementation:BiLockGuard +drop vendor/futures-util/src/lock/bilock.rs /^ fn drop(&mut self) {$/;" P implementation:Inner +drop vendor/futures-util/src/lock/mutex.rs /^ fn drop(&mut self) {$/;" P implementation:MappedMutexGuard +drop vendor/futures-util/src/lock/mutex.rs /^ fn drop(&mut self) {$/;" P implementation:MutexGuard +drop vendor/futures-util/src/lock/mutex.rs /^ fn drop(&mut self) {$/;" P implementation:MutexLockFuture +drop vendor/futures-util/src/lock/mutex.rs /^ fn drop(&mut self) {$/;" P implementation:OwnedMutexGuard +drop vendor/futures-util/src/lock/mutex.rs /^ fn drop(&mut self) {$/;" P implementation:OwnedMutexLockFuture +drop vendor/futures-util/src/stream/futures_unordered/abort.rs /^ fn drop(&mut self) {$/;" P implementation:abort::DoublePanic +drop vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn drop(&mut self) {$/;" P implementation:FuturesUnordered::poll_next::Bomb +drop vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn drop(&mut self) {$/;" P implementation:FuturesUnordered +drop vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^ fn drop(&mut self) {$/;" P implementation:ReadyToRunQueue +drop vendor/futures-util/src/stream/futures_unordered/task.rs /^ fn drop(&mut self) {$/;" P implementation:Task +drop vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ drop: Option,$/;" m struct:PollStateBomb +drop vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn drop(&mut self) {$/;" P implementation:PollStateBomb +drop vendor/futures/tests/future_obj.rs /^ fn drop(&mut self) {$/;" P implementation:dropping_drops_the_future::Inc +drop vendor/futures/tests/future_shared.rs /^ fn drop(&mut self) {$/;" P implementation:poll_while_panic::S +drop vendor/futures/tests/io_read_to_end.rs /^ fn drop(&mut self) {$/;" P implementation:issue2310::VecWrapper +drop vendor/libloading/src/os/unix/mod.rs /^ fn drop(&mut self) {$/;" P implementation:Library +drop vendor/libloading/src/os/windows/mod.rs /^ fn drop(&mut self) {$/;" P implementation:ErrorModeGuard +drop vendor/libloading/src/os/windows/mod.rs /^ fn drop(&mut self) {$/;" P implementation:Library +drop vendor/nix/src/dir.rs /^ fn drop(&mut self) {$/;" P implementation:Dir +drop vendor/nix/src/dir.rs /^ fn drop(&mut self) {$/;" P implementation:Iter +drop vendor/nix/src/ifaddrs.rs /^ fn drop(&mut self) {$/;" P implementation:InterfaceAddressIterator +drop vendor/nix/src/mount/bsd.rs /^ fn drop(&mut self) {$/;" P implementation:Nmount +drop vendor/nix/src/net/if_.rs /^ fn drop(&mut self) {$/;" P implementation:if_nameindex::Interfaces +drop vendor/nix/src/pty.rs /^ fn drop(&mut self) {$/;" P implementation:PtyMaster +drop vendor/nix/src/sys/aio.rs /^ fn drop(&mut self) {$/;" P implementation:AioCb +drop vendor/nix/src/sys/signalfd.rs /^ fn drop(&mut self) {$/;" P implementation:SignalFd +drop vendor/nix/src/sys/timer.rs /^ fn drop(&mut self) {$/;" P implementation:Timer +drop vendor/nix/src/sys/timerfd.rs /^ fn drop(&mut self) {$/;" P implementation:TimerFd +drop vendor/nix/test/test.rs /^ fn drop(&mut self) {$/;" P implementation:DirRestore +drop vendor/once_cell/src/imp_pl.rs /^ fn drop(&mut self) {$/;" P implementation:Guard +drop vendor/once_cell/src/imp_std.rs /^ fn drop(&mut self) {$/;" P implementation:Guard +drop vendor/once_cell/src/race.rs /^ fn drop(&mut self) {$/;" P implementation:once_box::OnceBox +drop vendor/once_cell/tests/it.rs /^ fn drop(&mut self) {$/;" P implementation:sync::once_cell_drop::Dropper +drop vendor/once_cell/tests/it.rs /^ fn drop(&mut self) {$/;" P implementation:sync::reentrant_init::Guard +drop vendor/once_cell/tests/it.rs /^ fn drop(&mut self) {$/;" P implementation:unsync::once_cell_drop::Dropper +drop vendor/once_cell/tests/it.rs /^ fn drop(&mut self) {$/;" P implementation:race_once_box::Pebble +drop vendor/pin-project-lite/src/lib.rs /^ fn drop(&mut self) {$/;" P implementation:__private::UnsafeDropInPlaceGuard +drop vendor/pin-project-lite/src/lib.rs /^ fn drop(&mut self) {$/;" P implementation:__private::UnsafeOverwriteGuard +drop vendor/pin-project-lite/tests/drop_order.rs /^ fn drop(&mut self) {$/;" P implementation:project_replace_panic::D +drop vendor/pin-project-lite/tests/drop_order.rs /^ fn drop(&mut self) {$/;" P implementation:D +drop vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ fn drop(&mut self) {$/;" P implementation:Enum +drop vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ fn drop(&mut self) {$/;" P implementation:Struct +drop vendor/pin-project-lite/tests/ui/pin_project/conflict-drop.rs /^ fn drop(&mut self) {}$/;" P implementation:Foo +drop vendor/pin-project-lite/tests/ui/pinned_drop/conditional-drop-impl.rs /^ fn drop(&mut self) {}$/;" P implementation:DropImpl +drop vendor/proc-macro2/src/fallback.rs /^ fn drop(&mut self) {$/;" P implementation:TokenStream +drop vendor/self_cell/src/unsafe_self_cell.rs /^ fn drop(&mut self) {$/;" P implementation:OwnerAndCellDropGuard::drop::DeallocGuard +drop vendor/self_cell/src/unsafe_self_cell.rs /^ fn drop(&mut self) {$/;" P implementation:OwnerAndCellDropGuard +drop vendor/slab/src/lib.rs /^ fn drop(&mut self) {$/;" P implementation:Slab::compact::CleanupGuard +drop vendor/smallvec/src/lib.rs /^ fn drop(&mut self) {$/;" P implementation:SmallVec::insert_many::DropOnPanic +drop vendor/smallvec/src/lib.rs /^ fn drop(&mut self) {$/;" P implementation:Drain +drop vendor/smallvec/src/lib.rs /^ fn drop(&mut self) {$/;" P implementation:IntoIter +drop vendor/smallvec/src/lib.rs /^ fn drop(&mut self) {$/;" P implementation:SetLenOnDrop +drop vendor/smallvec/src/lib.rs /^ fn drop(&mut self) {$/;" P implementation:SmallVec +drop vendor/smallvec/src/tests.rs /^ fn drop(&mut self) {$/;" P implementation:insert_many_panic::PanicOnDoubleDrop +drop vendor/smallvec/src/tests.rs /^ fn drop(&mut self) {$/;" P implementation:into_iter_drop::DropCounter +drop vendor/smallvec/src/tests.rs /^ fn drop(&mut self) {$/;" P implementation:test_drop_panic_smallvec::DropPanic +drop vendor/syn/src/parse.rs /^ fn drop(&mut self) {$/;" P implementation:ParseBuffer +drop vendor/syn/tests/repo/progress.rs /^ fn drop(&mut self) {$/;" P implementation:Progress +drop_arc_raw vendor/futures-task/src/waker.rs /^unsafe fn drop_arc_raw(data: *const ()) {$/;" f +drop_fn vendor/futures-task/src/future_obj.rs /^ drop_fn: unsafe fn(*mut (dyn Future + 'static)),$/;" m struct:LocalFutureObj +drop_in_poll vendor/futures/tests/future_shared.rs /^fn drop_in_poll() {$/;" f +drop_joined vendor/self_cell/src/unsafe_self_cell.rs /^ pub unsafe fn drop_joined(&mut self) {$/;" P implementation:UnsafeSelfCell +drop_on_one_task_ok vendor/futures/tests/future_shared.rs /^fn drop_on_one_task_ok() {$/;" f +drop_order vendor/async-trait/tests/test.rs /^pub mod drop_order {$/;" n +drop_order vendor/futures-channel/tests/channel.rs /^fn drop_order() {$/;" f +drop_raw vendor/futures-util/src/compat/compat01as03.rs /^ unsafe fn drop_raw(&self) {$/;" P implementation:NotifyWaker +drop_rx vendor/futures-channel/src/oneshot.rs /^ fn drop_rx(&self) {$/;" P implementation:Inner +drop_rx vendor/futures-channel/tests/channel.rs /^fn drop_rx() {$/;" f +drop_sender vendor/futures-channel/tests/channel.rs /^fn drop_sender() {$/;" f +drop_tx vendor/futures-channel/src/oneshot.rs /^ fn drop_tx(&self) {$/;" P implementation:Inner +dropped vendor/smallvec/src/tests.rs /^ dropped: Box,$/;" m struct:insert_many_panic::PanicOnDoubleDrop +dropping_does_not_segfault vendor/futures/tests/future_obj.rs /^fn dropping_does_not_segfault() {$/;" f +dropping_drops_the_future vendor/futures/tests/future_obj.rs /^fn dropping_drops_the_future() {$/;" f +dropping_ready_queue vendor/futures/tests/ready_queue.rs /^fn dropping_ready_queue() {$/;" f +dsb input.c /^struct stat dsb; \/* can be used from gdb *\/$/;" v typeref:struct:stat +dsgetdc vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dsgetdc")] pub mod dsgetdc;$/;" n +dsound vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dsound")] pub mod dsound;$/;" n +dsrole vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dsrole")] pub mod dsrole;$/;" n +dst vendor/pin-project-lite/tests/test.rs /^fn dst() {$/;" f +dstack parser.h /^struct dstack {$/;" s +dstack r_bash/src/lib.rs /^ pub static mut dstack: dstack;$/;" v +dstack r_bash/src/lib.rs /^pub struct dstack {$/;" s +dtoa lib/sh/snprintf.c /^#define dtoa(/;" d file: +dummy lib/intl/osdep.c /^typedef int dummy;$/;" t typeref:typename:int file: +dummy_test vendor/once_cell/examples/reentrant_init_deadlocks.rs /^fn dummy_test() {$/;" f +dump vendor/elsa/examples/arena.rs /^ fn dump(&'arena self) {$/;" P implementation:Arena +dump vendor/elsa/examples/mutable_arena.rs /^ fn dump(&'arena self) {$/;" P implementation:Arena +dumpOptions support/texi2html /^sub dumpOptions$/;" s +dump_lflags mksyntax.c /^dump_lflags (fp, ind)$/;" f file: +dump_lsyntax mksyntax.c /^dump_lsyntax (fp)$/;" f file: +dump_po_strings shell.c /^int dump_po_strings; \/* Dump strings in $"..." in po format *\/$/;" v typeref:typename:int +dump_translatable_strings shell.c /^int dump_translatable_strings; \/* Dump strings in $"...", don't execute. *\/$/;" v typeref:typename:int +dump_word_flags subst.c /^dump_word_flags (flags)$/;" f +dumped_core vendor/nix/src/sys/wait.rs /^fn dumped_core(status: i32) -> bool {$/;" f +dup r_bash/src/lib.rs /^ pub fn dup(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +dup r_glob/src/lib.rs /^ pub fn dup(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +dup r_readline/src/lib.rs /^ pub fn dup(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +dup vendor/libc/src/fuchsia/mod.rs /^ pub fn dup(fd: ::c_int) -> ::c_int;$/;" f +dup vendor/libc/src/solid/mod.rs /^ pub fn dup(arg1: c_int) -> c_int;$/;" f +dup vendor/libc/src/unix/mod.rs /^ pub fn dup(fd: ::c_int) -> ::c_int;$/;" f +dup vendor/libc/src/vxworks/mod.rs /^ pub fn dup(src: ::c_int) -> ::c_int;$/;" f +dup vendor/libc/src/windows/mod.rs /^ pub fn dup(fd: ::c_int) -> ::c_int;$/;" f +dup2 lib/sh/oslib.c /^dup2 (fd1, fd2)$/;" f +dup2 r_bash/src/lib.rs /^ pub fn dup2(__fd: ::std::os::raw::c_int, __fd2: ::std::os::raw::c_int)$/;" f +dup2 r_glob/src/lib.rs /^ pub fn dup2(__fd: ::std::os::raw::c_int, __fd2: ::std::os::raw::c_int)$/;" f +dup2 r_readline/src/lib.rs /^ pub fn dup2(__fd: ::std::os::raw::c_int, __fd2: ::std::os::raw::c_int)$/;" f +dup2 vendor/libc/src/fuchsia/mod.rs /^ pub fn dup2(src: ::c_int, dst: ::c_int) -> ::c_int;$/;" f +dup2 vendor/libc/src/solid/mod.rs /^ pub fn dup2(arg1: c_int, arg2: c_int) -> c_int;$/;" f +dup2 vendor/libc/src/unix/mod.rs /^ pub fn dup2(src: ::c_int, dst: ::c_int) -> ::c_int;$/;" f +dup2 vendor/libc/src/vxworks/mod.rs /^ pub fn dup2(src: ::c_int, dst: ::c_int) -> ::c_int;$/;" f +dup2 vendor/libc/src/windows/mod.rs /^ pub fn dup2(src: ::c_int, dst: ::c_int) -> ::c_int;$/;" f +dup3 r_bash/src/lib.rs /^ pub fn dup3($/;" f +dup3 r_glob/src/lib.rs /^ pub fn dup3($/;" f +dup3 r_readline/src/lib.rs /^ pub fn dup3($/;" f +dup3 vendor/libc/src/fuchsia/mod.rs /^ pub fn dup3(oldfd: ::c_int, newfd: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +dup3 vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn dup3(src: ::c_int, dst: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +dup3 vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn dup3(src: ::c_int, dst: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +dup3 vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn dup3(src: ::c_int, dst: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +dup3 vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn dup3(oldfd: ::c_int, newfd: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +dup3 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn dup3(oldfd: ::c_int, newfd: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +dup3 vendor/libc/src/unix/solarish/mod.rs /^ pub fn dup3(src: ::c_int, dst: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +dup_error execute_cmd.c /^dup_error (oldd, newd)$/;" f file: +duplicate vendor/fluent-bundle/src/types/mod.rs /^ fn duplicate(&self) -> Box;$/;" P interface:FluentType +duplicate_buffered_stream input.c /^duplicate_buffered_stream (fd1, fd2)$/;" f +duplicate_buffered_stream r_bash/src/lib.rs /^ pub fn duplicate_buffered_stream($/;" f +duplocale r_bash/src/lib.rs /^ pub fn duplocale(__dataset: locale_t) -> locale_t;$/;" f +duplocale vendor/libc/src/fuchsia/mod.rs /^ pub fn duplocale(base: ::locale_t) -> ::locale_t;$/;" f +duplocale vendor/libc/src/solid/mod.rs /^ pub fn duplocale(arg1: locale_t) -> locale_t;$/;" f +duplocale vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn duplocale(base: ::locale_t) -> ::locale_t;$/;" f +duplocale vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn duplocale(base: ::locale_t) -> ::locale_t;$/;" f +duplocale vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn duplocale(base: ::locale_t) -> ::locale_t;$/;" f +duplocale vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn duplocale(base: ::locale_t) -> ::locale_t;$/;" f +duplocale vendor/libc/src/unix/linux_like/mod.rs /^ pub fn duplocale(base: ::locale_t) -> ::locale_t;$/;" f +duplocale vendor/libc/src/unix/solarish/mod.rs /^ pub fn duplocale(base: ::locale_t) -> ::locale_t;$/;" f +duplocale vendor/libc/src/wasi.rs /^ pub fn duplocale(base: ::locale_t) -> ::locale_t;$/;" f +dupstr lib/readline/examples/fileman.c /^dupstr (s)$/;" f +duration vendor/stdext/src/lib.rs /^pub mod duration;$/;" n +dvi lib/intl/Makefile.in /^info dvi ps pdf html:$/;" t +dvp vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dvp")] pub mod dvp;$/;" n +dwmapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dwmapi")] pub mod dwmapi;$/;" n +dwrite vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dwrite")] pub mod dwrite;$/;" n +dwrite_1 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dwrite_1")] pub mod dwrite_1;$/;" n +dwrite_2 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dwrite_2")] pub mod dwrite_2;$/;" n +dwrite_3 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dwrite_3")] pub mod dwrite_3;$/;" n +dxdiag vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dxdiag")] pub mod dxdiag;$/;" n +dxfile vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dxfile")] pub mod dxfile;$/;" n +dxgi vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "dxgi")] pub mod dxgi;$/;" n +dxgi1_2 vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "dxgi1_2")] pub mod dxgi1_2;$/;" n +dxgi1_3 vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "dxgi1_3")] pub mod dxgi1_3;$/;" n +dxgi1_4 vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "dxgi1_4")] pub mod dxgi1_4;$/;" n +dxgi1_5 vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "dxgi1_5")] pub mod dxgi1_5;$/;" n +dxgi1_6 vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "dxgi1_6")] pub mod dxgi1_6;$/;" n +dxgidebug vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dxgidebug")] pub mod dxgidebug;$/;" n +dxgiformat vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "dxgiformat")] pub mod dxgiformat;$/;" n +dxgitype vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "dxgitype")] pub mod dxgitype;$/;" n +dxva2api vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dxva2api")] pub mod dxva2api;$/;" n +dxvahd vendor/winapi/src/um/mod.rs /^#[cfg(feature = "dxvahd")] pub mod dxvahd;$/;" n +dyn_load_builtin builtins_rust/enable/src/lib.rs /^unsafe extern "C" fn dyn_load_builtin($/;" f +dyn_type vendor/pin-project-lite/tests/test.rs /^fn dyn_type() {$/;" f +dyn_unload_builtin builtins_rust/enable/src/lib.rs /^unsafe extern "C" fn dyn_unload_builtin(mut name: *mut libc::c_char) -> libc::c_int {$/;" f +dynamic_complete_history bashline.c /^dynamic_complete_history (count, key)$/;" f file: +dynamic_value builtins_rust/cd/src/lib.rs /^ dynamic_value: *mut fn(v: *mut SHELL_VAR) -> *mut SHELL_VAR, \/* Function called to return a/;" m struct:SHELL_VAR +dynamic_value builtins_rust/common/src/lib.rs /^ pub dynamic_value: *mut fn(v: *mut SHELL_VAR) -> *mut SHELL_VAR, \/* Function called to retu/;" m struct:SHELL_VAR +dynamic_value builtins_rust/declare/src/lib.rs /^ dynamic_value: *mut fn(v: *mut SHELL_VAR) -> *mut SHELL_VAR, \/* Function called to return a/;" m struct:SHELL_VAR +dynamic_value builtins_rust/fc/src/lib.rs /^ dynamic_value: *mut fn(v: *mut SHELL_VAR) -> *mut SHELL_VAR,$/;" m struct:SHELL_VAR +dynamic_value builtins_rust/getopts/src/lib.rs /^ dynamic_value: *mut fn(v: *mut SHELL_VAR) -> *mut SHELL_VAR,$/;" m struct:SHELL_VAR +dynamic_value builtins_rust/mapfile/src/intercdep.rs /^ pub dynamic_value: sh_var_value_func_t,$/;" m struct:variable +dynamic_value builtins_rust/printf/src/intercdep.rs /^ pub dynamic_value: sh_var_value_func_t,$/;" m struct:variable +dynamic_value builtins_rust/read/src/intercdep.rs /^ pub dynamic_value: sh_var_value_func_t,$/;" m struct:variable +dynamic_value builtins_rust/set/src/lib.rs /^ pub dynamic_value: sh_var_value_func_t,$/;" m struct:variable +dynamic_value builtins_rust/setattr/src/intercdep.rs /^ pub dynamic_value: sh_var_value_func_t,$/;" m struct:variable +dynamic_value builtins_rust/shopt/src/lib.rs /^ pub dynamic_value: Option,$/;" m struct:variable +dynamic_value builtins_rust/type/src/lib.rs /^ dynamic_value: *mut fn(v: *mut SHELL_VAR) -> *mut SHELL_VAR,$/;" m struct:SHELL_VAR +dynamic_value builtins_rust/wait/src/lib.rs /^ pub dynamic_value: sh_var_value_func_t,$/;" m struct:variable +dynamic_value r_bash/src/lib.rs /^ pub dynamic_value: sh_var_value_func_t,$/;" m struct:variable +dynamic_value variables.h /^ sh_var_value_func_t *dynamic_value; \/* Function called to return a `dynamic'$/;" m struct:variable typeref:typename:sh_var_value_func_t * +dysize r_bash/src/lib.rs /^ pub fn dysize(__year: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +dysize r_readline/src/lib.rs /^ pub fn dysize(__year: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +eaccess r_bash/src/lib.rs /^ pub fn eaccess($/;" f +eaccess r_glob/src/lib.rs /^ pub fn eaccess($/;" f +eaccess r_readline/src/lib.rs /^ pub fn eaccess($/;" f +eaccess vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn eaccess(path: *const ::c_char, mode: ::c_int) -> ::c_int;$/;" f +eaccess vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn eaccess(pathname: *const ::c_char, mode: ::c_int) -> ::c_int;$/;" f +eaccess vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn eaccess(pathname: *const ::c_char, mode: ::c_int) -> ::c_int;$/;" f +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${BASHINCDIR}\/filecntl.h$/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${BASHINCDIR}\/posixstat.h$/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${BASHINCDIR}\/stdc.h$/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${BUILD_DIR}\/config.h$/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${topdir}\/bashtypes.h$/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/conftyp/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp.h$/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +eaccess.o lib/sh/Makefile.in /^eaccess.o: eaccess.c$/;" t +eaptypes vendor/winapi/src/um/mod.rs /^#[cfg(feature = "eaptypes")] pub mod eaptypes;$/;" n +easprintf vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn easprintf(string: *mut *mut ::c_char, fmt: *const ::c_char, ...) -> ::c_int;$/;" f +ebadf vendor/nix/test/test_dir.rs /^fn ebadf() {$/;" f +ecalloc vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn ecalloc(n: ::size_t, c: ::size_t) -> *mut ::c_void;$/;" f +echo.o builtins/Makefile.in /^echo.o: $(BASHINCDIR)\/maxpath.h ..\/pathnames.h$/;" t +echo.o builtins/Makefile.in /^echo.o: $(srcdir)\/common.h$/;" t +echo.o builtins/Makefile.in /^echo.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h $(topdir)\/error.h$/;" t +echo.o builtins/Makefile.in /^echo.o: $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/subst.h $(topdir)\/externs.h$/;" t +echo.o builtins/Makefile.in /^echo.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +echo.o builtins/Makefile.in /^echo.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $/;" t +echo.o builtins/Makefile.in /^echo.o: echo.def$/;" t +echo_command_at_execute flags.c /^int echo_command_at_execute = 0;$/;" v typeref:typename:int +echo_command_at_execute r_bash/src/lib.rs /^ pub static mut echo_command_at_execute: ::std::os::raw::c_int;$/;" v +echo_input_at_read builtins_rust/fc/src/lib.rs /^ static mut echo_input_at_read: i32;$/;" v +echo_input_at_read flags.c /^int echo_input_at_read = 0;$/;" v typeref:typename:int +echo_input_at_read r_bash/src/lib.rs /^ pub echo_input_at_read: ::std::os::raw::c_int,$/;" m struct:_sh_parser_state_t +echo_input_at_read r_bash/src/lib.rs /^ pub static mut echo_input_at_read: ::std::os::raw::c_int;$/;" v +echo_input_at_read shell.h /^ int echo_input_at_read;$/;" m struct:_sh_parser_state_t typeref:typename:int +ecvt r_bash/src/lib.rs /^ pub fn ecvt($/;" f +ecvt r_glob/src/lib.rs /^ pub fn ecvt($/;" f +ecvt r_readline/src/lib.rs /^ pub fn ecvt($/;" f +ecvt_r r_bash/src/lib.rs /^ pub fn ecvt_r($/;" f +ecvt_r r_glob/src/lib.rs /^ pub fn ecvt_r($/;" f +ecvt_r r_readline/src/lib.rs /^ pub fn ecvt_r($/;" f +edit_and_execute_command bashline.c /^edit_and_execute_command (count, c, editing_mode, edit_command)$/;" f file: +edit_line builtins_rust/read/src/lib.rs /^fn edit_line(p: *mut c_char, itext: *mut c_char) -> *mut c_char {$/;" f +edition vendor/syn/tests/repo/mod.rs /^pub fn edition(path: &Path) -> &'static str {$/;" f +edmode lib/readline/readline.h /^ int edmode;$/;" m struct:readline_state typeref:typename:int +edmode r_readline/src/lib.rs /^ pub edmode: ::std::os::raw::c_int,$/;" m struct:readline_state +eflag builtins_rust/cd/src/lib.rs /^pub static mut eflag: i32 = 0;$/;" v +eflags builtins_rust/wait/src/signal.rs /^ pub eflags: __uint64_t,$/;" m struct:sigcontext +eflags r_bash/src/lib.rs /^ pub eflags: __uint64_t,$/;" m struct:sigcontext +eflags r_glob/src/lib.rs /^ pub eflags: __uint64_t,$/;" m struct:sigcontext +eflags r_readline/src/lib.rs /^ pub eflags: __uint64_t,$/;" m struct:sigcontext +efopen vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn efopen(p: *const ::c_char, m: *const ::c_char) -> ::FILE;$/;" f +egg vendor/memoffset/src/span_of.rs /^ egg: [[u8; 4]; 4],$/;" m struct:tests::ig_test::Test +egg vendor/memoffset/src/span_of.rs /^ egg: [[u8; 4]; 5],$/;" m struct:tests::span_forms::Blarg +egid builtins_rust/ulimit/src/lib.rs /^ egid: gid_t,$/;" m struct:user_info +egid r_bash/src/lib.rs /^ pub egid: gid_t,$/;" m struct:user_info +egid shell.h /^ gid_t gid, egid;$/;" m struct:user_info typeref:typename:gid_t +either vendor/futures-util/src/future/mod.rs /^mod either;$/;" n +either_sink vendor/futures/tests/sink.rs /^fn either_sink() {$/;" f +element builtins_rust/wait/src/signal.rs /^ pub element: [__uint32_t; 4usize],$/;" m struct:_libc_xmmreg +element builtins_rust/wait/src/signal.rs /^ pub element: [__uint32_t; 4usize],$/;" m struct:_xmmreg +element command.h /^typedef struct element {$/;" s +element r_bash/src/lib.rs /^ pub element: [__uint32_t; 4usize],$/;" m struct:_libc_xmmreg +element r_bash/src/lib.rs /^ pub element: [__uint32_t; 4usize],$/;" m struct:_xmmreg +element r_bash/src/lib.rs /^pub struct element {$/;" s +element r_glob/src/lib.rs /^ pub element: [__uint32_t; 4usize],$/;" m struct:_libc_xmmreg +element r_glob/src/lib.rs /^ pub element: [__uint32_t; 4usize],$/;" m struct:_xmmreg +element r_glob/src/lib.rs /^pub struct element {$/;" s +element r_readline/src/lib.rs /^ pub element: [__uint32_t; 4usize],$/;" m struct:_libc_xmmreg +element r_readline/src/lib.rs /^ pub element: [__uint32_t; 4usize],$/;" m struct:_xmmreg +element r_readline/src/lib.rs /^pub struct element {$/;" s +element_back array.h /^#define element_back(/;" d +element_forw array.h /^#define element_forw(/;" d +element_index array.h /^#define element_index(/;" d +element_value array.h /^#define element_value(/;" d +elements vendor/chunky-vec/src/lib.rs /^ elements: Vec,$/;" m struct:Chunk +elements vendor/fluent-syntax/src/ast/mod.rs /^ pub elements: Vec>,$/;" m struct:Pattern +elf_aux_info vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^ pub fn elf_aux_info(aux: ::c_int, buf: *mut ::c_void, buflen: ::c_int) -> ::c_int;$/;" f +elf_aux_info vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn elf_aux_info(aux: ::c_int, buf: *mut ::c_void, buflen: ::c_int) -> ::c_int;$/;" f +elf_aux_info vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn elf_aux_info(aux: ::c_int, buf: *mut ::c_void, buflen: ::c_int) -> ::c_int;$/;" f +elided vendor/async-trait/src/lifetime.rs /^ pub elided: Vec,$/;" m struct:CollectLifetimes +elided_lifetime vendor/async-trait/tests/test.rs /^ async fn elided_lifetime(_x: &str) {}$/;" P implementation:Struct +elided_lifetime vendor/async-trait/tests/test.rs /^ async fn elided_lifetime(_x: &str) {}$/;" P interface:Trait +elif_clause parse.y /^elif_clause: ELIF compound_list THEN compound_list$/;" l +elsa vendor/elsa/README.md /^## elsa$/;" s +else_block vendor/syn/src/expr.rs /^ fn else_block(input: ParseStream) -> Result<(Token![else], Box)> {$/;" f module:parsing +emacs_ctlx_keymap lib/readline/emacs_keymap.c /^KEYMAP_ENTRY_ARRAY emacs_ctlx_keymap = {$/;" v typeref:typename:KEYMAP_ENTRY_ARRAY +emacs_ctlx_keymap r_readline/src/lib.rs /^ pub static mut emacs_ctlx_keymap: KEYMAP_ENTRY_ARRAY;$/;" v +emacs_edit_and_execute_command bashline.c /^emacs_edit_and_execute_command (count, c)$/;" f file: +emacs_meta_keymap lib/readline/emacs_keymap.c /^KEYMAP_ENTRY_ARRAY emacs_meta_keymap = {$/;" v typeref:typename:KEYMAP_ENTRY_ARRAY +emacs_meta_keymap r_readline/src/lib.rs /^ pub static mut emacs_meta_keymap: KEYMAP_ENTRY_ARRAY;$/;" v +emacs_mode lib/readline/rldefs.h /^# define emacs_mode /;" d +emacs_standard_keymap lib/readline/emacs_keymap.c /^KEYMAP_ENTRY_ARRAY emacs_standard_keymap = {$/;" v typeref:typename:KEYMAP_ENTRY_ARRAY +emacs_standard_keymap r_readline/src/lib.rs /^ pub static mut emacs_standard_keymap: KEYMAP_ENTRY_ARRAY;$/;" v +emacs_std_cmd_xmap bashline.c /^static Keymap emacs_std_cmd_xmap;$/;" v typeref:typename:Keymap file: +emalloc vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn emalloc(n: ::size_t) -> *mut ::c_void;$/;" f +emit vendor/autocfg/src/lib.rs /^pub fn emit(cfg: &str) {$/;" f +emit_constant_cfg vendor/autocfg/src/lib.rs /^ pub fn emit_constant_cfg(&self, expr: &str, cfg: &str) {$/;" P implementation:AutoCfg +emit_diagnostic vendor/syn/benches/rust.rs /^ fn emit_diagnostic(&mut self, _diag: &Diagnostic) {}$/;" P implementation:librustc_parse::bench::SilentEmitter +emit_expression_cfg vendor/autocfg/src/lib.rs /^ pub fn emit_expression_cfg(&self, expr: &str, cfg: &str) {$/;" P implementation:AutoCfg +emit_features vendor/winapi/build.rs /^ fn emit_features(&self) {$/;" P implementation:Graph +emit_has_path vendor/autocfg/src/lib.rs /^ pub fn emit_has_path(&self, path: &str) {$/;" P implementation:AutoCfg +emit_has_trait vendor/autocfg/src/lib.rs /^ pub fn emit_has_trait(&self, name: &str) {$/;" P implementation:AutoCfg +emit_has_type vendor/autocfg/src/lib.rs /^ pub fn emit_has_type(&self, name: &str) {$/;" P implementation:AutoCfg +emit_libraries vendor/winapi/build.rs /^ fn emit_libraries(&self) {$/;" P implementation:Graph +emit_path_cfg vendor/autocfg/src/lib.rs /^ pub fn emit_path_cfg(&self, path: &str, cfg: &str) {$/;" P implementation:AutoCfg +emit_rustc_version vendor/autocfg/src/lib.rs /^ pub fn emit_rustc_version(&self, major: usize, minor: usize) {$/;" P implementation:AutoCfg +emit_sysroot_crate vendor/autocfg/src/lib.rs /^ pub fn emit_sysroot_crate(&self, name: &str) {$/;" P implementation:AutoCfg +emit_trait_cfg vendor/autocfg/src/lib.rs /^ pub fn emit_trait_cfg(&self, name: &str, cfg: &str) {$/;" P implementation:AutoCfg +emit_type_cfg vendor/autocfg/src/lib.rs /^ pub fn emit_type_cfg(&self, name: &str, cfg: &str) {$/;" P implementation:AutoCfg +empty vendor/futures-util/src/io/empty.rs /^pub fn empty() -> Empty {$/;" f +empty vendor/futures-util/src/io/mod.rs /^mod empty;$/;" n +empty vendor/futures-util/src/stream/empty.rs /^pub fn empty() -> Empty {$/;" f +empty vendor/futures-util/src/stream/mod.rs /^mod empty;$/;" n +empty vendor/futures/tests_disabled/all.rs /^ fn empty() -> Empty {$/;" f function:test_empty +empty vendor/memchr/src/memmem/twoway.rs /^ fn empty() -> TwoWay {$/;" P implementation:TwoWay +empty vendor/nix/src/sys/epoll.rs /^ pub fn empty() -> Self {$/;" P implementation:EpollEvent +empty vendor/syn/src/buffer.rs /^ pub fn empty() -> Self {$/;" P implementation:Cursor +empty_macro vendor/smallvec/src/tests.rs /^fn empty_macro() {$/;" f +empty_or_trailing vendor/syn/src/punctuated.rs /^ pub fn empty_or_trailing(&self) -> bool {$/;" P implementation:Punctuated +empty_punctuated_iter vendor/syn/src/punctuated.rs /^pub(crate) fn empty_punctuated_iter<'a, T>() -> Iter<'a, T> {$/;" f +empty_punctuated_iter_mut vendor/syn/src/punctuated.rs /^pub(crate) fn empty_punctuated_iter_mut<'a, T>() -> IterMut<'a, T> {$/;" f +emptyfield support/man2html.c /^static TABLEITEM emptyfield = {NULL, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, NULL};$/;" v typeref:typename:TABLEITEM file: +enable builtins_rust/cmd/src/lib.rs /^ enable: bool,$/;" m struct:Cmd +enable.o builtins/Makefile.in /^enable.o: $(BASHINCDIR)\/maxpath.h ..\/pathnames.h$/;" t +enable.o builtins/Makefile.in /^enable.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +enable.o builtins/Makefile.in /^enable.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +enable.o builtins/Makefile.in /^enable.o: $(topdir)\/pcomplete.h$/;" t +enable.o builtins/Makefile.in /^enable.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h$/;" t +enable.o builtins/Makefile.in /^enable.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h/;" t +enable.o builtins/Makefile.in /^enable.o: $(topdir)\/subst.h $(topdir)\/externs.h $(topdir)\/sig.h$/;" t +enable.o builtins/Makefile.in /^enable.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +enable.o builtins/Makefile.in /^enable.o: enable.def$/;" t +enable_history_list bashhist.c /^int enable_history_list = -1; \/* value for `set -o history' *\/$/;" v typeref:typename:int +enable_history_list builtins_rust/fc/src/lib.rs /^ static mut enable_history_list: i32;$/;" v +enable_history_list builtins_rust/set/src/lib.rs /^ static mut enable_history_list: i32;$/;" v +enable_history_list r_bash/src/lib.rs /^ pub static mut enable_history_list: ::std::os::raw::c_int;$/;" v +enable_history_list r_bashhist/src/lib.rs /^pub static mut enable_history_list:c_int = -1;$/;" v +enable_hostname_completion bashline.c /^enable_hostname_completion (on_or_off)$/;" f +enable_hostname_completion builtins_rust/shopt/src/lib.rs /^ fn enable_hostname_completion(_: i32) -> libc::c_int;$/;" f +enable_hostname_completion r_bash/src/lib.rs /^ pub fn enable_hostname_completion(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +enable_libc vendor/memchr/build.rs /^fn enable_libc() {$/;" f +enable_shell_command builtins_rust/enable/src/lib.rs /^unsafe extern "C" fn enable_shell_command($/;" f +enable_simd_optimizations vendor/memchr/build.rs /^fn enable_simd_optimizations() {$/;" f +enable_use_proc_macro vendor/proc-macro2/build.rs /^fn enable_use_proc_macro(target: &str) -> bool {$/;" f +enabled vendor/async-trait/tests/test.rs /^ fn enabled(&self, _metadata: &Metadata) -> bool {$/;" P implementation:issue45::TestSubscriber +enabled_meta lib/readline/terminal.c /^static int enabled_meta = 0; \/* flag indicating we enabled meta mode *\/$/;" v typeref:typename:int file: +enclaveapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "enclaveapi")] pub mod enclaveapi;$/;" n +encode_state vendor/futures-channel/src/mpsc/mod.rs /^fn encode_state(state: &State) -> usize {$/;" f +encode_unicode vendor/fluent-syntax/src/unicode.rs /^fn encode_unicode(s: Option<&str>) -> char {$/;" f +end jobs.h /^ PROCESS *end;$/;" m struct:procchain typeref:typename:PROCESS * +end lib/readline/readline.h /^ int end;$/;" m struct:readline_state typeref:typename:int +end lib/readline/readline.h /^ int start, end; \/* Where the change took place. *\/$/;" m struct:undo_list typeref:typename:int +end lib/readline/rlprivate.h /^ int start, end; \/* rl_point, rl_end *\/$/;" m struct:__rl_vimotion_context typeref:typename:int +end r_bash/src/lib.rs /^ pub end: *mut PROCESS,$/;" m struct:procchain +end r_readline/src/lib.rs /^ pub end: ::std::os::raw::c_int,$/;" m struct:__rl_vimotion_context +end r_readline/src/lib.rs /^ pub end: ::std::os::raw::c_int,$/;" m struct:readline_state +end r_readline/src/lib.rs /^ pub end: ::std::os::raw::c_int,$/;" m struct:undo_list +end vendor/futures-util/src/io/window.rs /^ pub fn end(&self) -> usize {$/;" P implementation:Window +end vendor/proc-macro2/src/fallback.rs /^ pub fn end(&self) -> LineColumn {$/;" P implementation:Span +end vendor/proc-macro2/src/lib.rs /^ pub fn end(&self) -> LineColumn {$/;" P implementation:Span +end vendor/proc-macro2/src/wrapper.rs /^ pub fn end(&self) -> LineColumn {$/;" P implementation:Span +end vendor/smallvec/src/lib.rs /^ end: usize,$/;" m struct:IntoIter +end_handler builtins/mkbuiltins.c /^end_handler (self, defs, arg)$/;" f +end_job_control builtins_rust/exec/src/lib.rs /^ fn end_job_control();$/;" f +end_job_control jobs.c /^end_job_control ()$/;" f typeref:typename:void +end_job_control r_bash/src/lib.rs /^ pub fn end_job_control();$/;" f +end_job_control r_jobs/src/lib.rs /^pub unsafe extern "C" fn end_job_control() {$/;" f +end_ptr r_bash/src/lib.rs /^ pub end_ptr: *mut i32,$/;" m struct:random_data +end_ptr r_glob/src/lib.rs /^ pub end_ptr: *mut i32,$/;" m struct:random_data +end_ptr r_readline/src/lib.rs /^ pub end_ptr: *mut i32,$/;" m struct:random_data +end_span vendor/syn/src/error.rs /^ end_span: ThreadBound,$/;" m struct:ErrorMessage +end_unwind_frame unwind_prot.h /^#define end_unwind_frame(/;" d +endgrent vendor/libc/src/fuchsia/mod.rs /^ pub fn endgrent();$/;" f +endgrent vendor/libc/src/unix/bsd/mod.rs /^ pub fn endgrent();$/;" f +endgrent vendor/libc/src/unix/haiku/mod.rs /^ pub fn endgrent();$/;" f +endgrent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn endgrent();$/;" f +endgrent vendor/libc/src/unix/solarish/mod.rs /^ pub fn endgrent();$/;" f +endmntent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn endmntent(streamp: *mut ::FILE) -> ::c_int;$/;" f +endpointvolume vendor/winapi/src/um/mod.rs /^#[cfg(feature = "endpointvolume")] pub mod endpointvolume;$/;" n +endpwent vendor/libc/src/fuchsia/mod.rs /^ pub fn endpwent();$/;" f +endpwent vendor/libc/src/unix/bsd/mod.rs /^ pub fn endpwent();$/;" f +endpwent vendor/libc/src/unix/haiku/mod.rs /^ pub fn endpwent();$/;" f +endpwent vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn endpwent();$/;" f +endpwent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn endpwent();$/;" f +endpwent vendor/libc/src/unix/solarish/mod.rs /^ pub fn endpwent();$/;" f +endservent vendor/libc/src/unix/mod.rs /^ pub fn endservent();$/;" f +endspent vendor/libc/src/unix/haiku/mod.rs /^ pub fn endspent();$/;" f +endspent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn endspent();$/;" f +endusershell r_bash/src/lib.rs /^ pub fn endusershell();$/;" f +endusershell r_glob/src/lib.rs /^ pub fn endusershell();$/;" f +endusershell r_readline/src/lib.rs /^ pub fn endusershell();$/;" f +endusershell vendor/libc/src/unix/haiku/mod.rs /^ pub fn endusershell();$/;" f +endutent vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn endutent();$/;" f +endutent vendor/libc/src/unix/solarish/mod.rs /^ pub fn endutent();$/;" f +endutxent vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn endutxent();$/;" f +endutxent vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn endutxent();$/;" f +endutxent vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn endutxent();$/;" f +endutxent vendor/libc/src/unix/haiku/mod.rs /^ pub fn endutxent();$/;" f +endutxent vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn endutxent();$/;" f +endutxent vendor/libc/src/unix/solarish/mod.rs /^ pub fn endutxent();$/;" f +enqueue vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^ pub(super) fn enqueue(&self, task: *const Task) {$/;" P implementation:ReadyToRunQueue +ensure_compatible_types vendor/libloading/src/util.rs /^pub(crate) fn ensure_compatible_types() -> Result<(), Error> {$/;" f +ensure_dir support/texi2dvi /^ensure_dir ()$/;" f +enter vendor/async-trait/tests/test.rs /^ fn enter(&self, _span: &Id) {$/;" P implementation:issue45::TestSubscriber +enter vendor/futures-executor/src/enter.rs /^pub fn enter() -> Result {$/;" f +enter vendor/futures-executor/src/lib.rs /^mod enter;$/;" n +enter_args vendor/syn/src/attr.rs /^fn enter_args<'a>(attr: &Attribute, input: ParseStream<'a>) -> Result> {$/;" f +entries lib/readline/history.h /^ HIST_ENTRY **entries; \/* Pointer to the entries themselves. *\/$/;" m struct:_hist_state typeref:typename:HIST_ENTRY ** +entries r_readline/src/lib.rs /^ pub entries: *mut *mut HIST_ENTRY,$/;" m struct:_hist_state +entries vendor/fluent-bundle/src/bundle.rs /^ pub(crate) entries: FxHashMap,$/;" m struct:FluentBundle +entries vendor/fluent-bundle/src/resource.rs /^ pub fn entries(&self) -> impl Iterator> {$/;" P implementation:FluentResource +entries vendor/slab/src/lib.rs /^ entries: Vec>,$/;" m struct:Slab +entries vendor/slab/src/lib.rs /^ entries: iter::Enumerate>>,$/;" m struct:Iter +entries vendor/slab/src/lib.rs /^ entries: iter::Enumerate>>,$/;" m struct:IterMut +entries vendor/slab/src/lib.rs /^ entries: iter::Enumerate>>,$/;" m struct:IntoIter +entries vendor/syn/src/buffer.rs /^ entries: Box<[Entry]>,$/;" m struct:TokenBuffer +entry vendor/fluent-bundle/src/lib.rs /^mod entry;$/;" n +entry vendor/syn/src/buffer.rs /^ fn entry(self) -> &'a Entry {$/;" P implementation:Cursor +entry vendor/type-map/src/lib.rs /^ pub fn entry(&mut self) -> Entry {$/;" P implementation:concurrent::TypeMap +entry vendor/type-map/src/lib.rs /^ pub fn entry(&mut self) -> Entry {$/;" P implementation:TypeMap +entryfunc lib/readline/readline.h /^ rl_compentry_func_t *entryfunc;$/;" m struct:readline_state typeref:typename:rl_compentry_func_t * +entryfunc r_readline/src/lib.rs /^ pub entryfunc: rl_compentry_func_t,$/;" m struct:readline_state +enum_project_set vendor/pin-project-lite/tests/test.rs /^fn enum_project_set() {$/;" f +enum_struct vendor/pin-project-lite/tests/drop_order.rs /^fn enum_struct() {$/;" f +enumerate vendor/futures-util/src/stream/stream/mod.rs /^ fn enumerate(self) -> Enumerate$/;" P interface:StreamExt +enumerate vendor/futures-util/src/stream/stream/mod.rs /^mod enumerate;$/;" n +enums vendor/thiserror/tests/test_backtrace.rs /^pub mod enums {$/;" n +enums vendor/thiserror/tests/test_option.rs /^pub mod enums {$/;" n +env vendor/fluent-fallback/src/lib.rs /^pub mod env;$/;" n +environ r_bash/src/lib.rs /^ pub static mut environ: *mut *mut ::std::os::raw::c_char;$/;" v +environ r_glob/src/lib.rs /^ pub static mut environ: *mut *mut ::std::os::raw::c_char;$/;" v +environ r_readline/src/lib.rs /^ pub static mut environ: *mut *mut ::std::os::raw::c_char;$/;" v +environ vendor/libc/src/wasi.rs /^ pub static mut environ: *mut *mut c_char;$/;" v +eof vendor/syn/src/buffer.rs /^ pub fn eof(self) -> bool {$/;" P implementation:Cursor +eof_encountered r_bash/src/lib.rs /^ pub eof_encountered: ::std::os::raw::c_int,$/;" m struct:_sh_parser_state_t +eof_encountered r_bash/src/lib.rs /^ pub static mut eof_encountered: ::std::os::raw::c_int;$/;" v +eof_encountered shell.h /^ int eof_encountered;$/;" m struct:_sh_parser_state_t typeref:typename:int +eof_encountered_limit r_bash/src/lib.rs /^ pub static mut eof_encountered_limit: ::std::os::raw::c_int;$/;" v +epoll_create vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn epoll_create(size: ::c_int) -> ::c_int;$/;" f +epoll_create vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn epoll_create(size: ::c_int) -> ::c_int;$/;" f +epoll_create vendor/libc/src/unix/redox/mod.rs /^ pub fn epoll_create(size: ::c_int) -> ::c_int;$/;" f +epoll_create vendor/libc/src/unix/solarish/mod.rs /^ pub fn epoll_create(size: ::c_int) -> ::c_int;$/;" f +epoll_create vendor/nix/src/sys/epoll.rs /^pub fn epoll_create() -> Result {$/;" f +epoll_create1 vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn epoll_create1(flags: ::c_int) -> ::c_int;$/;" f +epoll_create1 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn epoll_create1(flags: ::c_int) -> ::c_int;$/;" f +epoll_create1 vendor/libc/src/unix/redox/mod.rs /^ pub fn epoll_create1(flags: ::c_int) -> ::c_int;$/;" f +epoll_create1 vendor/libc/src/unix/solarish/mod.rs /^ pub fn epoll_create1(flags: ::c_int) -> ::c_int;$/;" f +epoll_create1 vendor/nix/src/sys/epoll.rs /^pub fn epoll_create1(flags: EpollCreateFlags) -> Result {$/;" f +epoll_ctl vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn epoll_ctl(epfd: ::c_int, op: ::c_int, fd: ::c_int, event: *mut ::epoll_event)$/;" f +epoll_ctl vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn epoll_ctl(epfd: ::c_int, op: ::c_int, fd: ::c_int, event: *mut ::epoll_event)$/;" f +epoll_ctl vendor/libc/src/unix/redox/mod.rs /^ pub fn epoll_ctl(epfd: ::c_int, op: ::c_int, fd: ::c_int, event: *mut ::epoll_event)$/;" f +epoll_ctl vendor/libc/src/unix/solarish/mod.rs /^ pub fn epoll_ctl(epfd: ::c_int, op: ::c_int, fd: ::c_int, event: *mut ::epoll_event)$/;" f +epoll_ctl vendor/nix/src/sys/epoll.rs /^pub fn epoll_ctl<'a, T>(epfd: RawFd, op: EpollOp, fd: RawFd, event: T) -> Result<()>$/;" f +epoll_pwait vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn epoll_pwait($/;" f +epoll_pwait vendor/libc/src/unix/solarish/mod.rs /^ pub fn epoll_pwait($/;" f +epoll_wait vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn epoll_wait($/;" f +epoll_wait vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn epoll_wait($/;" f +epoll_wait vendor/libc/src/unix/redox/mod.rs /^ pub fn epoll_wait($/;" f +epoll_wait vendor/libc/src/unix/solarish/mod.rs /^ pub fn epoll_wait($/;" f +epoll_wait vendor/nix/src/sys/epoll.rs /^pub fn epoll_wait(epfd: RawFd, events: &mut [EpollEvent], timeout_ms: isize) -> Result {$/;" f +eprint vendor/memchr/scripts/make-byte-frequency-table /^def eprint(*args, **kwargs):$/;" f +eq vendor/fluent-bundle/src/types/mod.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:FluentValue +eq vendor/fluent-bundle/src/types/mod.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Send +eq vendor/fluent-fallback/src/types.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ResourceId +eq vendor/fluent-fallback/src/types.rs /^ fn eq(&self, other: &str) -> bool {$/;" P implementation:ResourceId +eq vendor/futures-util/src/stream/futures_ordered.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:OrderWrapper +eq vendor/memchr/src/memmem/rabinkarp.rs /^ fn eq(&self, hash: Hash) -> bool {$/;" P implementation:NeedleHash +eq vendor/nix/src/sys/socket/addr.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:alg::AlgAddr +eq vendor/nix/src/sys/socket/addr.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:vsock::VsockAddr +eq vendor/nix/src/sys/socket/addr.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:SockaddrStorage +eq vendor/nix/src/sys/socket/addr.rs /^ fn eq(&self, other: &UnixAddr) -> bool {$/;" P implementation:UnixAddr +eq vendor/once_cell/src/lib.rs /^ fn eq(&self, other: &OnceCell) -> bool {$/;" P implementation:sync::OnceCell +eq vendor/once_cell/src/lib.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:unsync::OnceCell +eq vendor/proc-macro2/src/fallback.rs /^ fn eq(&self, other: &Ident) -> bool {$/;" P implementation:Ident +eq vendor/proc-macro2/src/fallback.rs /^ fn eq(&self, other: &T) -> bool {$/;" f +eq vendor/proc-macro2/src/lib.rs /^ fn eq(&self, other: &Ident) -> bool {$/;" P implementation:Ident +eq vendor/proc-macro2/src/lib.rs /^ fn eq(&self, other: &T) -> bool {$/;" f +eq vendor/proc-macro2/src/lib.rs /^ pub fn eq(&self, other: &Span) -> bool {$/;" P implementation:Span +eq vendor/proc-macro2/src/wrapper.rs /^ fn eq(&self, other: &Ident) -> bool {$/;" P implementation:Ident +eq vendor/proc-macro2/src/wrapper.rs /^ fn eq(&self, other: &T) -> bool {$/;" f +eq vendor/proc-macro2/src/wrapper.rs /^ pub fn eq(&self, other: &Span) -> bool {$/;" P implementation:Span +eq vendor/slab/tests/serde.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:SlabPartialEq +eq vendor/smallvec/src/lib.rs /^ fn eq(&self, other: &SmallVec) -> bool {$/;" f +eq vendor/syn/src/buffer.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Cursor +eq vendor/syn/src/expr.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:parsing::Precedence +eq vendor/syn/src/expr.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Index +eq vendor/syn/src/expr.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Member +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, _other: &Self) -> bool {$/;" P implementation:TypeInfer +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, _other: &Self) -> bool {$/;" P implementation:TypeNever +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, _other: &Self) -> bool {$/;" P implementation:UseGlob +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, _other: &Self) -> bool {$/;" P implementation:VisCrate +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, _other: &Self) -> bool {$/;" P implementation:VisPublic +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Abi +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:AngleBracketedGenericArguments +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Arm +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:AttrStyle +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Attribute +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:BareFnArg +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:BinOp +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Binding +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Block +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:BoundLifetimes +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ConstParam +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Constraint +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Data +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:DataEnum +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:DataStruct +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:DataUnion +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:DeriveInput +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Expr +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprArray +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprAssign +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprAssignOp +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprAsync +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprAwait +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprBinary +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprBlock +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprBox +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprBreak +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprCall +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprCast +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprClosure +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprContinue +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprField +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprForLoop +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprGroup +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprIf +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprIndex +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprLet +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprLit +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprLoop +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprMacro +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprMatch +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprMethodCall +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprParen +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprPath +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprRange +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprReference +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprRepeat +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprReturn +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprStruct +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprTry +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprTryBlock +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprTuple +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprType +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprUnary +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprUnsafe +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprWhile +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ExprYield +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Field +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:FieldPat +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:FieldValue +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Fields +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:FieldsNamed +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:FieldsUnnamed +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:File +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:FnArg +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ForeignItem +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ForeignItemFn +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ForeignItemMacro +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ForeignItemStatic +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ForeignItemType +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:GenericArgument +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:GenericMethodArgument +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:GenericParam +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Generics +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ImplItem +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ImplItemConst +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ImplItemMacro +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ImplItemMethod +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ImplItemType +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Item +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemConst +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemEnum +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemExternCrate +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemFn +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemForeignMod +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemImpl +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemMacro +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemMacro2 +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemMod +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemStatic +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemStruct +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemTrait +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemTraitAlias +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemType +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemUnion +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ItemUse +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Label +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:LifetimeDef +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Lit +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:LitBool +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Local +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Macro +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:MacroDelimiter +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Meta +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:MetaList +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:MetaNameValue +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:MethodTurbofish +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:NestedMeta +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ParenthesizedGenericArguments +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Pat +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatBox +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatIdent +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatLit +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatMacro +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatOr +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatPath +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatRange +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatReference +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatRest +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatSlice +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatStruct +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatTuple +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatTupleStruct +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatType +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PatWild +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Path +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PathArguments +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PathSegment +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PredicateEq +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PredicateLifetime +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:PredicateType +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:QSelf +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:RangeLimits +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Receiver +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ReturnType +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Signature +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Stmt +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TraitBound +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TraitBoundModifier +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TraitItem +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TraitItemConst +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TraitItemMacro +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TraitItemMethod +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TraitItemType +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Type +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypeArray +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypeBareFn +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypeGroup +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypeImplTrait +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypeMacro +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypeParam +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypeParamBound +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypeParen +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypePath +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypePtr +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypeReference +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypeSlice +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypeTraitObject +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TypeTuple +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:UnOp +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:UseGroup +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:UseName +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:UsePath +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:UseRename +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:UseTree +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Variadic +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Variant +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:VisRestricted +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Visibility +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:WhereClause +eq vendor/syn/src/gen/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:WherePredicate +eq vendor/syn/src/lib.rs /^ mod eq;$/;" n module:gen +eq vendor/syn/src/lifetime.rs /^ fn eq(&self, other: &Lifetime) -> bool {$/;" P implementation:Lifetime +eq vendor/syn/src/parse.rs /^ fn eq(&self, _other: &Self) -> bool {$/;" P implementation:Nothing +eq vendor/syn/src/punctuated.rs /^ fn eq(&self, other: &Self) -> bool {$/;" f +eq vendor/syn/src/tt.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TokenStreamHelper +eq vendor/syn/src/tt.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TokenTreeHelper +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, _other: &Self) -> bool {$/;" P implementation:RangeSyntax +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:AttrKind +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:B +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Box +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:C +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Ident +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:LazyAttrTokenStream +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Lrc +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Option +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:P +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Param +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Spanned +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:T +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:ThinVec +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TokenKind +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:TokenStream +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool {$/;" P implementation:Vec +eq vendor/syn/tests/common/eq.rs /^ fn eq(&self, other: &Self) -> bool;$/;" P interface:SpanlessEq +eq vendor/syn/tests/common/mod.rs /^pub mod eq;$/;" n +eq vendor/tinystr/src/tinystr16.rs /^ fn eq(&self, other: &&str) -> bool {$/;" P implementation:TinyStr16 +eq vendor/tinystr/src/tinystr4.rs /^ fn eq(&self, other: &&str) -> bool {$/;" P implementation:TinyStr4 +eq vendor/tinystr/src/tinystr8.rs /^ fn eq(&self, other: &&str) -> bool {$/;" P implementation:TinyStr8 +eq vendor/tinystr/src/tinystrauto.rs /^ fn eq(&self, other: &&str) -> bool {$/;" P implementation:TinyStrAuto +eq vendor/unic-langid-impl/src/lib.rs /^ fn eq(&self, other: &&str) -> bool {$/;" P implementation:LanguageIdentifier +eq vendor/unic-langid-impl/src/subtags/language.rs /^ fn eq(&self, other: &&str) -> bool {$/;" P implementation:Language +eq vendor/unic-langid-impl/src/subtags/region.rs /^ fn eq(&self, other: &&str) -> bool {$/;" P implementation:Region +eq vendor/unic-langid-impl/src/subtags/script.rs /^ fn eq(&self, other: &&str) -> bool {$/;" P implementation:Script +eq vendor/unic-langid-impl/src/subtags/variant.rs /^ fn eq(&self, other: &&str) -> bool {$/;" P implementation:Variant +eq vendor/unic-langid-impl/src/subtags/variant.rs /^ fn eq(&self, other: &str) -> bool {$/;" P implementation:Variant +eqndelimclose support/man2html.c /^static char eqndelimopen = 0, eqndelimclose = 0;$/;" v typeref:typename:char file: +eqndelimopen support/man2html.c /^static char eqndelimopen = 0, eqndelimclose = 0;$/;" v typeref:typename:char file: +equal lib/intl/plural-exp.h /^ equal, \/* Comparison for equality. *\/$/;" e enum:expression::__anon93874cf10103 +equals vendor/fluent-bundle/src/types/mod.rs /^ fn equals(&self, other: &dyn Any) -> bool {$/;" P implementation:T +equals vendor/fluent-bundle/src/types/mod.rs /^ fn equals(&self, other: &dyn Any) -> bool;$/;" P interface:AnyEq +erand48 r_bash/src/lib.rs /^ pub fn erand48(__xsubi: *mut ::std::os::raw::c_ushort) -> f64;$/;" f +erand48 r_glob/src/lib.rs /^ pub fn erand48(__xsubi: *mut ::std::os::raw::c_ushort) -> f64;$/;" f +erand48 r_readline/src/lib.rs /^ pub fn erand48(__xsubi: *mut ::std::os::raw::c_ushort) -> f64;$/;" f +erand48 vendor/libc/src/solid/mod.rs /^ pub fn erand48(arg1: *mut c_ushort) -> f64;$/;" f +erand48 vendor/libc/src/unix/bsd/mod.rs /^ pub fn erand48(xseed: *mut ::c_ushort) -> ::c_double;$/;" f +erand48 vendor/libc/src/unix/haiku/mod.rs /^ pub fn erand48(xseed: *mut ::c_ushort) -> ::c_double;$/;" f +erand48_r r_bash/src/lib.rs /^ pub fn erand48_r($/;" f +erand48_r r_glob/src/lib.rs /^ pub fn erand48_r($/;" f +erand48_r r_readline/src/lib.rs /^ pub fn erand48_r($/;" f +ere_char pathexp.c /^ere_char (c)$/;" f file: +erealloc vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn erealloc(p: *mut ::c_void, n: ::size_t) -> *mut ::c_void;$/;" f +ereallocarr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn ereallocarr(p: *mut ::c_void, n: ::size_t, s: ::size_t);$/;" f +err builtins_rust/wait/src/signal.rs /^ pub err: __uint64_t,$/;" m struct:sigcontext +err r_bash/src/lib.rs /^ pub err: __uint64_t,$/;" m struct:sigcontext +err r_glob/src/lib.rs /^ pub err: __uint64_t,$/;" m struct:sigcontext +err r_readline/src/lib.rs /^ pub err: __uint64_t,$/;" m struct:sigcontext +err vendor/futures-channel/src/mpsc/mod.rs /^ err: SendError,$/;" m struct:TrySendError +err vendor/futures-util/src/future/ready.rs /^pub fn err(err: E) -> Ready> {$/;" f +err vendor/futures/tests_disabled/all.rs /^ fn err(b: E) -> FutureResult {$/;" f function:flatten +err_badarraysub error.c /^err_badarraysub (s)$/;" f +err_badarraysub r_bash/src/lib.rs /^ pub fn err_badarraysub(arg1: *const ::std::os::raw::c_char);$/;" f +err_into vendor/futures-util/src/future/try_future/mod.rs /^ fn err_into(self) -> ErrInto$/;" P interface:TryFutureExt +err_into vendor/futures-util/src/sink/mod.rs /^mod err_into;$/;" n +err_into vendor/futures-util/src/stream/try_stream/mod.rs /^ fn err_into(self) -> ErrInto$/;" P interface:TryStreamExt +err_into vendor/futures/tests/sink.rs /^fn err_into() {$/;" f +err_list vendor/futures/tests_disabled/stream.rs /^fn err_list() -> Box + Send> {$/;" f +err_readonly builtins_rust/mapfile/src/intercdep.rs /^ pub fn err_readonly(s: *const c_char) -> c_void;$/;" f +err_readonly error.c /^err_readonly (s)$/;" f +err_readonly r_bash/src/lib.rs /^ pub fn err_readonly(arg1: *const ::std::os::raw::c_char);$/;" f +err_translate_fn builtins_rust/common/src/lib.rs /^pub unsafe fn err_translate_fn(command: &String, args1: *mut libc::c_char) {$/;" f +err_unboundvar error.c /^err_unboundvar (s)$/;" f +err_unboundvar r_bash/src/lib.rs /^ pub fn err_unboundvar(arg1: *const ::std::os::raw::c_char);$/;" f +errbase lib/sh/strerror.c /^static char *errbase = "Unknown system error ";$/;" v typeref:typename:char * file: +errcnt r_bash/src/lib.rs /^ pub errcnt: __syscall_slong_t,$/;" m struct:timex +errcnt r_readline/src/lib.rs /^ pub errcnt: __syscall_slong_t,$/;" m struct:timex +errexit_flag flags.c /^int errexit_flag = 0;$/;" v typeref:typename:int +errexit_flag r_bash/src/lib.rs /^ pub static mut errexit_flag: ::std::os::raw::c_int;$/;" v +errhandlingapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "errhandlingapi")] pub mod errhandlingapi;$/;" n +errmsg vendor/nix/src/mount/bsd.rs /^ errmsg: Option$/;" m struct:NmountError +errmsg vendor/nix/src/mount/bsd.rs /^ pub fn errmsg(&self) -> Option<&str> {$/;" P implementation:NmountError +errno builtins_rust/cd/src/lib.rs /^macro_rules! errno {$/;" M +errno builtins_rust/fc/src/lib.rs /^macro_rules! errno {$/;" M +errno r_bashhist/src/lib.rs /^macro_rules! errno {$/;" M +errno r_jobs/src/lib.rs /^macro_rules! errno {$/;" M +errno vendor/libc/src/unix/bsd/freebsdlike/dragonfly/errno.rs /^ pub static mut errno: ::c_int;$/;" v +errno vendor/nix/src/errno.rs /^pub fn errno() -> i32 {$/;" f +errno vendor/nix/src/lib.rs /^pub mod errno;$/;" n +errno vendor/nix/src/mount/bsd.rs /^ errno: Error,$/;" m struct:NmountError +errno vendor/nix/test/test_fcntl.rs /^ fn errno() {$/;" f module:test_posix_fallocate +errnoGet vendor/libc/src/vxworks/mod.rs /^ pub fn errnoGet() -> ::c_int;$/;" f +errnoSet vendor/libc/src/vxworks/mod.rs /^ pub fn errnoSet(err: ::c_int) -> ::c_int;$/;" f +errno_t vendor/libc/src/vxworks/mod.rs /^pub type errno_t = ::c_int;$/;" t +errno_t vendor/libc/src/windows/mod.rs /^pub type errno_t = ::c_int;$/;" t +error support/texi2dvi /^error ()$/;" f +error vendor/async-trait/src/args.rs /^fn error() -> Error {$/;" f +error vendor/autocfg/src/lib.rs /^mod error;$/;" n +error vendor/fluent-syntax/src/parser/errors.rs /^macro_rules! error {$/;" M +error vendor/libloading/src/lib.rs /^mod error;$/;" n +error vendor/nix/src/mount/bsd.rs /^ pub const fn error(&self) -> Error {$/;" P implementation:NmountError +error vendor/nix/src/sys/aio.rs /^ fn error(self: Pin<&mut Self>) -> Result<()> {$/;" P implementation:AioCb +error vendor/nix/src/sys/aio.rs /^ fn error(self: Pin<&mut Self>) -> Result<()>;$/;" P interface:Aio +error vendor/nix/test/sys/test_aio.rs /^ fn error() {$/;" f module:aio_fsync +error vendor/nix/test/sys/test_aio.rs /^ fn error() {$/;" f module:aio_read +error vendor/nix/test/sys/test_aio.rs /^ fn error() {$/;" f module:aio_write +error vendor/syn/src/lib.rs /^mod error;$/;" n +error vendor/syn/src/lookahead.rs /^ pub fn error(self) -> Error {$/;" P implementation:Lookahead1 +error vendor/syn/src/parse.rs /^ pub fn error(&self, message: T) -> Error {$/;" P implementation:ParseBuffer +error vendor/syn/src/parse.rs /^ pub fn error(self, message: T) -> Error {$/;" P implementation:StepCursor +error.o Makefile.in /^error.o: $(BASHINCDIR)\/ocache.h $(BASHINCDIR)\/chartypes.h assoc.h$/;" t +error.o Makefile.in /^error.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +error.o Makefile.in /^error.o: command.h general.h xmalloc.h externs.h input.h bashhist.h$/;" t +error.o Makefile.in /^error.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h flags.h ${BASHINCDIR}\/std/;" t +error.o Makefile.in /^error.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +error.o Makefile.in /^error.o: input.h execute_cmd.h $/;" t +error.o Makefile.in /^error.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h$/;" t +error.o Makefile.in /^error.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +error.o Makefile.in /^error.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\//;" t +error_directory builtins/mkbuiltins.c /^char *error_directory = (char *)NULL;$/;" v typeref:typename:char * +error_from_macro vendor/thiserror/tests/test_source.rs /^macro_rules! error_from_macro {$/;" M +error_pointer lib/readline/histexpand.c /^static char error_pointer;$/;" v typeref:typename:char file: +error_prolog error.c /^error_prolog (print_lineno)$/;" f file: +error_trace_mode builtins_rust/shopt/src/lib.rs /^ static mut error_trace_mode: i32;$/;" v +error_trace_mode flags.c /^int error_trace_mode = 0;$/;" v typeref:typename:int +error_trace_mode r_bash/src/lib.rs /^ pub static mut error_trace_mode: ::std::os::raw::c_int;$/;" v +error_type vendor/thiserror/tests/ui/concat-display.rs /^macro_rules! error_type {$/;" M +errorf vendor/syn/tests/macros/mod.rs /^macro_rules! errorf {$/;" M +errors vendor/fluent-bundle/src/lib.rs /^mod errors;$/;" n +errors vendor/fluent-bundle/src/resolver/mod.rs /^pub mod errors;$/;" n +errors vendor/fluent-bundle/src/resolver/scope.rs /^ pub errors: Option<&'errors mut Vec>,$/;" m struct:Scope +errors vendor/fluent-fallback/src/lib.rs /^mod errors;$/;" n +errors vendor/fluent-syntax/src/parser/mod.rs /^mod errors;$/;" n +errors vendor/unic-langid-impl/src/lib.rs /^mod errors;$/;" n +errors vendor/unic-langid-impl/src/parser/mod.rs /^pub mod errors;$/;" n +escape_input support/man2html.c /^escape_input(char *str)$/;" f typeref:typename:char * file: +escapesym support/man2html.c /^static char escapesym = '\\\\', nobreaksym = '\\'', controlsym = '.', fieldsym = 0, padsym = 0;$/;" v typeref:typename:char file: +esctab lib/termcap/termcap.c /^static char esctab[]$/;" v typeref:typename:char[] file: +esetfunc vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn esetfunc($/;" f +esterror r_bash/src/lib.rs /^ pub esterror: __syscall_slong_t,$/;" m struct:timex +esterror r_readline/src/lib.rs /^ pub esterror: __syscall_slong_t,$/;" m struct:timex +estimate_max_scheduling_latency vendor/libc/src/unix/haiku/native.rs /^ pub fn estimate_max_scheduling_latency(th: ::thread_id) -> ::bigtime_t;$/;" f +estrdup vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn estrdup(s: *const ::c_char) -> *mut ::c_char;$/;" f +estrlcat vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn estrlcat(dst: *mut ::c_char, src: *const ::c_char, len: ::size_t) -> ::size_t;$/;" f +estrlcpy vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn estrlcpy(dst: *mut ::c_char, src: *const ::c_char, len: ::size_t) -> ::size_t;$/;" f +estrndup vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn estrndup(s: *const ::c_char, len: ::size_t) -> *mut ::c_char;$/;" f +estrtoi vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn estrtoi($/;" f +estrtou vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn estrtou($/;" f +eui64_aton vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn eui64_aton(a: *const ::c_char, e: *mut eui64) -> ::c_int;$/;" f +eui64_hostton vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn eui64_hostton(hostname: *const ::c_char, id: *mut eui64) -> ::c_int;$/;" f +eui64_ntoa vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn eui64_ntoa(id: *const eui64, a: *mut ::c_char, len: ::size_t) -> ::c_int;$/;" f +eui64_ntohost vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn eui64_ntohost(hostname: *mut ::c_char, len: ::size_t, id: *const eui64) -> ::c_int;$/;" f +euid builtins_rust/ulimit/src/lib.rs /^ euid: uid_t,$/;" m struct:user_info +euid r_bash/src/lib.rs /^ pub euid: uid_t,$/;" m struct:user_info +euid shell.h /^ uid_t uid, euid;$/;" m struct:user_info typeref:typename:uid_t +euidaccess r_bash/src/lib.rs /^ pub fn euidaccess($/;" f +euidaccess r_glob/src/lib.rs /^ pub fn euidaccess($/;" f +euidaccess r_readline/src/lib.rs /^ pub fn euidaccess($/;" f +euidaccess vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn euidaccess(pathname: *const ::c_char, mode: ::c_int) -> ::c_int;$/;" f +euidaccess vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn euidaccess(pathname: *const ::c_char, mode: ::c_int) -> ::c_int;$/;" f +euidaccess vendor/libc/src/unix/solarish/solaris.rs /^ pub fn euidaccess(path: *const ::c_char, amode: ::c_int) -> ::c_int;$/;" f +ev_set vendor/nix/src/sys/event.rs /^pub fn ev_set(ev: &mut KEvent,$/;" f +eval.o Makefile.in /^eval.o: bashhist.h assoc.h ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h$/;" t +eval.o Makefile.in /^eval.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +eval.o Makefile.in /^eval.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h trap.h flags.h ${DEFSRC}\/common.h$/;" t +eval.o Makefile.in /^eval.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +eval.o Makefile.in /^eval.o: input.h execute_cmd.h $/;" t +eval.o Makefile.in /^eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h$/;" t +eval.o Makefile.in /^eval.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +eval.o Makefile.in /^eval.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\/s/;" t +eval.o builtins/Makefile.in /^eval.o: $(BASHINCDIR)\/maxpath.h ..\/pathnames.h$/;" t +eval.o builtins/Makefile.in /^eval.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +eval.o builtins/Makefile.in /^eval.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +eval.o builtins/Makefile.in /^eval.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h$/;" t +eval.o builtins/Makefile.in /^eval.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $/;" t +eval.o builtins/Makefile.in /^eval.o: $(topdir)\/subst.h $(topdir)\/externs.h $(topdir)\/sig.h$/;" t +eval.o builtins/Makefile.in /^eval.o: eval.def$/;" t +eval_arith_for_expr execute_cmd.c /^eval_arith_for_expr (l, okp)$/;" f file: +eval_once vendor/once_cell/tests/it.rs /^ macro_rules! eval_once {$/;" M function:sync::eval_once_macro +eval_once_macro vendor/once_cell/tests/it.rs /^ fn eval_once_macro() {$/;" f module:sync +evalbuf expr.c /^static procenv_t evalbuf;$/;" v typeref:typename:procenv_t file: +evalerror expr.c /^evalerror (msg)$/;" f file: +evalexp builtins_rust/rlet/src/intercdep.rs /^ pub fn evalexp (expr: *mut c_char, flags: c_int, validp: *mut c_int) -> c_long;$/;" f +evalexp expr.c /^evalexp (expr, flags, validp)$/;" f +evalexp r_bash/src/lib.rs /^ pub fn evalexp($/;" f +evalfile.c builtins/Makefile.in /^evalfile.c: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +evalfile.o builtins/Makefile.in /^evalfile.o: $(topdir)\/bashansi.h $(BASHINCDIR)\/ansi_stdlib.h$/;" t +evalfile.o builtins/Makefile.in /^evalfile.o: $(topdir)\/bashhist.h $(srcdir)\/common.h$/;" t +evalfile.o builtins/Makefile.in /^evalfile.o: $(topdir)\/bashtypes.h $(BASHINCDIR)\/posixstat.h ${BASHINCDIR}\/filecntl.h$/;" t +evalfile.o builtins/Makefile.in /^evalfile.o: $(topdir)\/command.h $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/error.h$/;" t +evalfile.o builtins/Makefile.in /^evalfile.o: $(topdir)\/input.h $(topdir)\/execute_cmd.h$/;" t +evalfile.o builtins/Makefile.in /^evalfile.o: $(topdir)\/jobs.h $(topdir)\/builtins.h $(topdir)\/flags.h$/;" t +evalfile.o builtins/Makefile.in /^evalfile.o: $(topdir)\/make_cmd.h $(topdir)\/subst.h $(topdir)\/sig.h$/;" t +evalfile.o builtins/Makefile.in /^evalfile.o: $(topdir)\/shell.h $(topdir)\/syntax.h ..\/config.h $(topdir)\/bashjmp.h$/;" t +evalfile.o builtins/Makefile.in /^evalfile.o: $(topdir)\/unwind_prot.h $(topdir)\/dispose_cmd.h$/;" t +evalfile.o builtins/Makefile.in /^evalfile.o: $(topdir)\/variables.h $(topdir)\/conftypes.h $(topdir)\/quit.h $(BASHINCDIR)\/maxpa/;" t +evalfile.o builtins/Makefile.in /^evalfile.o: ..\/pathnames.h $(topdir)\/externs.h $(topdir)\/parser.h$/;" t +evalfile.o builtins/Makefile.in /^evalfile.o: evalfile.c$/;" t +evalnest execute_cmd.c /^int evalnest = 0;$/;" v typeref:typename:int +evalnest r_bash/src/lib.rs /^ pub static mut evalnest: ::std::os::raw::c_int;$/;" v +evalnest_max execute_cmd.c /^int evalnest_max = EVALNEST_MAX;$/;" v typeref:typename:int +evalnest_max r_bash/src/lib.rs /^ pub static mut evalnest_max: ::std::os::raw::c_int;$/;" v +evalstring builtins/evalstring.c /^evalstring (string, from_file, flags)$/;" f +evalstring builtins_rust/eval/src/lib.rs /^ fn evalstring(string: *mut c_char, from_file: *const c_char, flag: i32) -> i32;$/;" f +evalstring builtins_rust/mapfile/src/intercdep.rs /^ pub fn evalstring(string: *mut c_char, from_file: *const c_char, flags: c_int) -> c_int;$/;" f +evalstring r_bash/src/lib.rs /^ pub fn evalstring($/;" f +evalstring.o builtins/Makefile.in /^evalstring.o: $(BASHINCDIR)\/maxpath.h $(topdir)\/jobs.h $(topdir)\/builtins.h$/;" t +evalstring.o builtins/Makefile.in /^evalstring.o: $(BASHINCDIR)\/memalloc.h $(topdir)\/variables.h $(topdir)\/conftypes.h $(topdir)\//;" t +evalstring.o builtins/Makefile.in /^evalstring.o: $(topdir)\/bashhist.h $(srcdir)\/common.h$/;" t +evalstring.o builtins/Makefile.in /^evalstring.o: $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/subst.h$/;" t +evalstring.o builtins/Makefile.in /^evalstring.o: $(topdir)\/externs.h $(topdir)\/jobs.h $(topdir)\/builtins.h$/;" t +evalstring.o builtins/Makefile.in /^evalstring.o: $(topdir)\/flags.h $(topdir)\/input.h $(topdir)\/execute_cmd.h$/;" t +evalstring.o builtins/Makefile.in /^evalstring.o: $(topdir)\/quit.h $(topdir)\/unwind_prot.h$/;" t +evalstring.o builtins/Makefile.in /^evalstring.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/bashjmp.h $(BASHINCDIR)\/posixjm/;" t +evalstring.o builtins/Makefile.in /^evalstring.o: $(topdir)\/sig.h $(topdir)\/command.h $(topdir)\/siglist.h$/;" t +evalstring.o builtins/Makefile.in /^evalstring.o: $(topdir)\/trap.h $(topdir)\/redir.h ..\/pathnames.h .\/builtext.h$/;" t +evalstring.o builtins/Makefile.in /^evalstring.o: ..\/config.h $(topdir)\/bashansi.h $(BASHINCDIR)\/ansi_stdlib.h$/;" t +evalstring.o builtins/Makefile.in /^evalstring.o: evalstring.c $/;" t +evaluate_now vendor/proc-macro2/src/wrapper.rs /^ fn evaluate_now(&mut self) {$/;" P implementation:DeferredTokenStream +evasprintf vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn evasprintf(string: *mut *mut ::c_char, fmt: *const ::c_char, ...) -> ::c_int;$/;" f +event vendor/async-trait/tests/test.rs /^ fn event(&self, event: &Event) {$/;" P implementation:issue45::TestSubscriber +event vendor/nix/src/sys/epoll.rs /^ event: libc::epoll_event,$/;" m struct:EpollEvent +eventfd vendor/libc/src/fuchsia/mod.rs /^ pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;$/;" f +eventfd vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;$/;" f +eventfd vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;$/;" f +eventfd vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;$/;" f +eventfd vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;$/;" f +eventfd vendor/libc/src/unix/newlib/espidf/mod.rs /^ pub fn eventfd(initval: ::c_uint, flags: ::c_int) -> ::c_int;$/;" f +eventfd vendor/libc/src/unix/solarish/illumos.rs /^ pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;$/;" f +eventfd vendor/nix/src/sys/eventfd.rs /^pub fn eventfd(initval: libc::c_uint, flags: EfdFlags) -> Result {$/;" f +events vendor/nix/src/poll.rs /^ pub fn events(self) -> PollFlags {$/;" P implementation:PollFd +events vendor/nix/src/sys/epoll.rs /^ pub fn events(&self) -> EpollFlags {$/;" P implementation:EpollEvent +evntcons vendor/winapi/src/um/mod.rs /^#[cfg(feature = "evntcons")] pub mod evntcons;$/;" n +evntprov vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "evntprov")] pub mod evntprov;$/;" n +evntrace vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "evntrace")] pub mod evntrace;$/;" n +example vendor/async-trait/tests/test.rs /^ async fn example(self: Arc) {}$/;" P implementation:issue11::Struct +example vendor/async-trait/tests/test.rs /^ async fn example(self: Arc);$/;" P interface:issue11::Issue11 +example vendor/bitflags/tests/compile-fail/visibility/private_field.rs /^mod example {$/;" n +example vendor/bitflags/tests/compile-fail/visibility/private_flags.rs /^mod example {$/;" n +example_generated vendor/bitflags/src/lib.rs /^pub mod example_generated;$/;" n +examples/README.md vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +examples/arena.rs vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +examples/bench.rs vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +examples/bench_acquire.rs vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +examples/bench_vs_lazy_static.rs vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +examples/fluentresource.rs vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +examples/integers.rs vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +examples/lazy_static.rs vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +examples/main.rs vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +examples/mutable_arena.rs vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +examples/paths.rs vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +examples/reentrant_init_deadlocks.rs vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +examples/regex.rs vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +examples/resources/en-US/common.ftl vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +examples/resources/en-US/errors.ftl vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +examples/resources/en-US/simple.ftl vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +examples/resources/en-US/simple.ftl vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +examples/resources/pl/common.ftl vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +examples/resources/pl/errors.ftl vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +examples/resources/pl/simple.ftl vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +examples/resources/pl/simple.ftl vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +examples/simple-fallback.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +examples/simple-resmgr.rs vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +examples/string_interner.rs vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +examples/sync.rs vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +examples/test_synchronization.rs vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +examples/traits.rs vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +examples/versions.rs vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +exchangedata vendor/libc/src/unix/bsd/apple/b32/mod.rs /^ pub fn exchangedata($/;" f +exchangedata vendor/libc/src/unix/bsd/apple/b64/mod.rs /^ pub fn exchangedata($/;" f +excpt vendor/winapi/src/vc/mod.rs /^#[cfg(feature = "excpt")] pub mod excpt;$/;" n +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, _list: *mut WordList) -> i32 {$/;" P implementation:CommonComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, _list: *mut WordList) -> i32 {$/;" P implementation:ReservedComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, _list: *mut WordList) -> i32 {$/;" P implementation:SetattrComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:AliasComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:BgComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:BindComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:BreakComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:BuiltinComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:CallerComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:CdComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:ColonComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:CommandComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:CompgenCommand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:CompleteComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:CompoptCommand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:ContinueComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:DeclareComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:DirsCommand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:DisownCommand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:EchoComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:EnableComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:EvalComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:ExecComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:ExitComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:ExportComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:FalseComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:FcComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:FgComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:GetoptsComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:HashComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:HelpComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:HistoryComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:JobsComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:KillComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:LetComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:LocalComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:LogoutCommand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:MapfileComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:PopdComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:PrintfComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:PushdCommand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:PwdComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:ReadComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:ReadonlyComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:ReturnComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:SetComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:ShiftComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:ShoptComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:SourceComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:SuspendComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:TestComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:TimesComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:TrapComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:TypeComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:UlimitComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:UmaskComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:UnAliasComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:UnSetComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32 {$/;" P implementation:WaitComand +excute builtins_rust/exec_cmd/src/lib.rs /^ fn excute(&self, list: *mut WordList) -> i32;$/;" P interface:CommandExec +exdisp vendor/winapi/src/um/mod.rs /^#[cfg(feature = "exdisp")] pub mod exdisp;$/;" n +exec vendor/futures-executor/src/thread_pool.rs /^ exec: ThreadPool,$/;" m struct:Task +exec vendor/futures-executor/src/thread_pool.rs /^ exec: ThreadPool,$/;" m struct:WakeHandle +exec vendor/syn/benches/rust.rs /^fn exec(mut codepath: impl FnMut(&str) -> Result<(), ()>) -> Duration {$/;" f +exec.o builtins/Makefile.in /^exec.o: $(srcdir)\/common.h $(topdir)\/execute_cmd.h $(BASHINCDIR)\/maxpath.h$/;" t +exec.o builtins/Makefile.in /^exec.o: $(topdir)\/bashtypes.h$/;" t +exec.o builtins/Makefile.in /^exec.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +exec.o builtins/Makefile.in /^exec.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +exec.o builtins/Makefile.in /^exec.o: $(topdir)\/findcmd.h $(topdir)\/jobs.h ..\/pathnames.h$/;" t +exec.o builtins/Makefile.in /^exec.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +exec.o builtins/Makefile.in /^exec.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $/;" t +exec.o builtins/Makefile.in /^exec.o: $(topdir)\/subst.h $(topdir)\/externs.h $(topdir)\/flags.h$/;" t +exec.o builtins/Makefile.in /^exec.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +exec.o builtins/Makefile.in /^exec.o: exec.def$/;" t +exec_argv0 builtins_rust/exec/src/lib.rs /^ static mut exec_argv0: *mut c_char;$/;" v +exec_argv0 shell.c /^char *exec_argv0;$/;" v typeref:typename:char * +exec_name_should_ignore findcmd.c /^exec_name_should_ignore (name)$/;" f file: +exec_prefix Makefile.in /^exec_prefix = @exec_prefix@$/;" m +exec_prefix lib/intl/Makefile.in /^exec_prefix = @exec_prefix@$/;" m +exec_redirection_undo_list execute_cmd.c /^REDIRECT *exec_redirection_undo_list = (REDIRECT *)NULL;$/;" v typeref:typename:REDIRECT * +execignore findcmd.c /^static struct ignorevar execignore =$/;" v typeref:struct:ignorevar file: +execl r_bash/src/lib.rs /^ pub fn execl($/;" f +execl r_glob/src/lib.rs /^ pub fn execl($/;" f +execl r_readline/src/lib.rs /^ pub fn execl($/;" f +execl vendor/libc/src/fuchsia/mod.rs /^ pub fn execl(path: *const c_char, arg0: *const c_char, ...) -> ::c_int;$/;" f +execl vendor/libc/src/unix/mod.rs /^ pub fn execl(path: *const c_char, arg0: *const c_char, ...) -> ::c_int;$/;" f +execl vendor/libc/src/windows/mod.rs /^ pub fn execl(path: *const c_char, arg0: *const c_char, ...) -> intptr_t;$/;" f +execle r_bash/src/lib.rs /^ pub fn execle($/;" f +execle r_glob/src/lib.rs /^ pub fn execle($/;" f +execle r_readline/src/lib.rs /^ pub fn execle($/;" f +execle vendor/libc/src/fuchsia/mod.rs /^ pub fn execle(path: *const ::c_char, arg0: *const ::c_char, ...) -> ::c_int;$/;" f +execle vendor/libc/src/unix/mod.rs /^ pub fn execle(path: *const ::c_char, arg0: *const ::c_char, ...) -> ::c_int;$/;" f +execle vendor/libc/src/windows/mod.rs /^ pub fn execle(path: *const c_char, arg0: *const c_char, ...) -> intptr_t;$/;" f +execlp r_bash/src/lib.rs /^ pub fn execlp($/;" f +execlp r_glob/src/lib.rs /^ pub fn execlp($/;" f +execlp r_readline/src/lib.rs /^ pub fn execlp($/;" f +execlp vendor/libc/src/fuchsia/mod.rs /^ pub fn execlp(file: *const ::c_char, arg0: *const ::c_char, ...) -> ::c_int;$/;" f +execlp vendor/libc/src/unix/mod.rs /^ pub fn execlp(file: *const ::c_char, arg0: *const ::c_char, ...) -> ::c_int;$/;" f +execlp vendor/libc/src/windows/mod.rs /^ pub fn execlp(path: *const c_char, arg0: *const c_char, ...) -> intptr_t;$/;" f +execlpe vendor/libc/src/windows/mod.rs /^ pub fn execlpe(path: *const c_char, arg0: *const c_char, ...) -> intptr_t;$/;" f +execstate execute_cmd.h /^struct execstate$/;" s +execstate r_bash/src/lib.rs /^pub struct execstate {$/;" s +executable_completion bashline.c /^executable_completion (filename, searching_path)$/;" f file: +executable_file builtins_rust/exec/src/lib.rs /^ fn executable_file(file: *const c_char) -> i32;$/;" f +executable_file builtins_rust/hash/src/lib.rs /^ fn executable_file(file: *const c_char) -> i32;$/;" f +executable_file findcmd.c /^executable_file (file)$/;" f +executable_file r_bash/src/lib.rs /^ pub fn executable_file(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +executable_or_directory findcmd.c /^executable_or_directory (file)$/;" f +executable_or_directory r_bash/src/lib.rs /^ pub fn executable_or_directory(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int/;" f +executables vendor/memchr/src/tests/x86_64-soft_float.json /^ "executables": true,$/;" b +execute vendor/futures-util/src/compat/executor.rs /^ fn execute(&self, future: Fut) -> Result<(), ExecuteError01> {$/;" f +execute_arith_command execute_cmd.c /^execute_arith_command (arith_command)$/;" f file: +execute_arith_for_command execute_cmd.c /^execute_arith_for_command (arith_for_command)$/;" f file: +execute_array_command eval.c /^execute_array_command (a, v)$/;" f +execute_array_command r_bash/src/lib.rs /^ pub fn execute_array_command($/;" f +execute_array_command r_glob/src/lib.rs /^ pub fn execute_array_command($/;" f +execute_array_command r_readline/src/lib.rs /^ pub fn execute_array_command($/;" f +execute_builtin execute_cmd.c /^execute_builtin (builtin, words, flags, subshell)$/;" f file: +execute_builtin_or_function execute_cmd.c /^execute_builtin_or_function (words, builtin, var, redirects,$/;" f file: +execute_case_command execute_cmd.c /^execute_case_command (case_command)$/;" f file: +execute_cmd.o Makefile.in /^execute_cmd.o: $(DEFSRC)\/common.h ${DEFDIR}\/builtext.h ${GLOB_LIBSRC}\/strmatch.h$/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: $(DEFSRC)\/getopt.h$/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: $(TILDE_LIBSRC)\/tilde.h$/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: $(srcdir)\/config-top.h$/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: ${BASHINCDIR}\/memalloc.h ${GRAM_H} flags.h builtins.h jobs.h quit.h siglist.h$/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/posixwait.h$/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: ${BASHINCDIR}\/posixtime.h ${BASHINCDIR}\/chartypes.h$/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: bashhist.h input.h ${GRAM_H} assoc.h hashcmd.h alias.h$/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: config.h bashtypes.h ${BASHINCDIR}\/filecntl.h ${BASHINCDIR}\/posixstat.h bashans/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: execute_cmd.h findcmd.h redir.h trap.h test.h pathexp.h$/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashl/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h$/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +execute_cmd.o Makefile.in /^execute_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINC/;" t +execute_command builtins_rust/command/src/lib.rs /^ fn execute_command(_: *mut COMMAND) -> libc::c_int;$/;" f +execute_command builtins_rust/jobs/src/lib.rs /^ fn execute_command(command: *mut COMMAND) -> i32;$/;" f +execute_command execute_cmd.c /^execute_command (command)$/;" f +execute_command r_bash/src/lib.rs /^ pub fn execute_command(arg1: *mut COMMAND) -> ::std::os::raw::c_int;$/;" f +execute_command_internal execute_cmd.c /^execute_command_internal (command, asynchronous, pipe_in, pipe_out,$/;" f +execute_command_internal r_bash/src/lib.rs /^ pub fn execute_command_internal($/;" f +execute_cond_command execute_cmd.c /^execute_cond_command (cond_command)$/;" f file: +execute_cond_node execute_cmd.c /^execute_cond_node (cond)$/;" f file: +execute_connection execute_cmd.c /^execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)$/;" f file: +execute_coproc execute_cmd.c /^execute_coproc (command, pipe_in, pipe_out, fds_to_close)$/;" f file: +execute_disk_command execute_cmd.c /^execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,$/;" f file: +execute_env_file shell.c /^execute_env_file (env_file)$/;" f file: +execute_for_command execute_cmd.c /^execute_for_command (for_command)$/;" f file: +execute_function execute_cmd.c /^execute_function (var, words, flags, fds_to_close, async, subshell)$/;" f file: +execute_if_command execute_cmd.c /^execute_if_command (if_command)$/;" f file: +execute_in_subshell execute_cmd.c /^execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)$/;" f file: +execute_intern_function execute_cmd.c /^execute_intern_function (name, funcdef)$/;" f file: +execute_line lib/readline/examples/fileman.c /^execute_line (line)$/;" f +execute_null_command execute_cmd.c /^execute_null_command (redirects, pipe_in, pipe_out, async)$/;" f file: +execute_pipeline execute_cmd.c /^execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)$/;" f file: +execute_prompt_command eval.c /^execute_prompt_command ()$/;" f typeref:typename:void file: +execute_select_command execute_cmd.c /^execute_select_command (select_command)$/;" f file: +execute_shell_function execute_cmd.c /^execute_shell_function (var, words)$/;" f +execute_shell_function r_bash/src/lib.rs /^ pub fn execute_shell_function($/;" f +execute_shell_script execute_cmd.c /^execute_shell_script (sample, sample_len, command, args, env)$/;" f file: +execute_simple_command execute_cmd.c /^execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)$/;" f file: +execute_subshell_builtin_or_function execute_cmd.c /^execute_subshell_builtin_or_function (words, redirects, builtin, var,$/;" f file: +execute_until_command execute_cmd.c /^execute_until_command (while_command)$/;" f file: +execute_variable_command r_bash/src/lib.rs /^ pub fn execute_variable_command($/;" f +execute_while_command execute_cmd.c /^execute_while_command (while_command)$/;" f file: +execute_while_or_until execute_cmd.c /^execute_while_or_until (while_command, type)$/;" f file: +executing r_bash/src/lib.rs /^ pub static mut executing: ::std::os::raw::c_int;$/;" v +executing shell.c /^int executing = 0;$/;" v typeref:typename:int +executing_builtin execute_cmd.c /^int executing_builtin = 0;$/;" v typeref:typename:int +executing_builtin r_bash/src/lib.rs /^ pub static mut executing_builtin: ::std::os::raw::c_int;$/;" v +executing_builtin r_jobs/src/lib.rs /^ static mut executing_builtin: c_int;$/;" v +executing_command_builtin builtins_rust/source/src/lib.rs /^ static mut executing_command_builtin: i32;$/;" v +executing_command_builtin execute_cmd.c /^int executing_command_builtin = 0;$/;" v typeref:typename:int +executing_command_builtin r_bash/src/lib.rs /^ pub static mut executing_command_builtin: ::std::os::raw::c_int;$/;" v +executing_line_number builtins_rust/common/src/lib.rs /^ fn executing_line_number() -> i32;$/;" f +executing_line_number execute_cmd.c /^executing_line_number ()$/;" f typeref:typename:int +executing_line_number r_bash/src/lib.rs /^ pub fn executing_line_number() -> ::std::os::raw::c_int;$/;" f +executing_list execute_cmd.c /^int executing_list = 0;$/;" v typeref:typename:int +executing_list r_bash/src/lib.rs /^ pub static mut executing_list: ::std::os::raw::c_int;$/;" v +executing_list r_jobs/src/lib.rs /^ static mut executing_list: c_int;$/;" v +executing_macro_index lib/readline/macro.c /^static int executing_macro_index;$/;" v typeref:typename:int file: +executor vendor/async-trait/tests/test.rs /^pub mod executor;$/;" n +executor vendor/futures-macro/src/lib.rs /^mod executor;$/;" n +executor vendor/futures-util/src/compat/mod.rs /^mod executor;$/;" n +executor vendor/futures/src/lib.rs /^pub mod executor {$/;" n +executor vendor/futures/tests/auto_traits.rs /^pub mod executor {$/;" n +executor01 vendor/futures-util/src/compat/executor.rs /^ executor01: Ex,$/;" m struct:Executor01As03 +execv r_bash/src/lib.rs /^ pub fn execv($/;" f +execv r_glob/src/lib.rs /^ pub fn execv($/;" f +execv r_readline/src/lib.rs /^ pub fn execv($/;" f +execv vendor/libc/src/fuchsia/mod.rs /^ pub fn execv(prog: *const c_char, argv: *const *const c_char) -> ::c_int;$/;" f +execv vendor/libc/src/unix/mod.rs /^ pub fn execv(prog: *const c_char, argv: *const *const c_char) -> ::c_int;$/;" f +execv vendor/libc/src/windows/mod.rs /^ pub fn execv(prog: *const c_char, argv: *const *const c_char) -> ::intptr_t;$/;" f +execve r_bash/src/lib.rs /^ pub fn execve($/;" f +execve r_glob/src/lib.rs /^ pub fn execve($/;" f +execve r_readline/src/lib.rs /^ pub fn execve($/;" f +execve vendor/libc/src/fuchsia/mod.rs /^ pub fn execve($/;" f +execve vendor/libc/src/unix/mod.rs /^ pub fn execve($/;" f +execve vendor/libc/src/windows/mod.rs /^ pub fn execve($/;" f +execve_test_factory vendor/nix/test/test_unistd.rs /^macro_rules! execve_test_factory ($/;" M +execvp r_bash/src/lib.rs /^ pub fn execvp($/;" f +execvp r_glob/src/lib.rs /^ pub fn execvp($/;" f +execvp r_readline/src/lib.rs /^ pub fn execvp($/;" f +execvp vendor/libc/src/fuchsia/mod.rs /^ pub fn execvp(c: *const c_char, argv: *const *const c_char) -> ::c_int;$/;" f +execvp vendor/libc/src/unix/mod.rs /^ pub fn execvp(c: *const c_char, argv: *const *const c_char) -> ::c_int;$/;" f +execvp vendor/libc/src/windows/mod.rs /^ pub fn execvp(c: *const c_char, argv: *const *const c_char) -> ::c_int;$/;" f +execvpe r_bash/src/lib.rs /^ pub fn execvpe($/;" f +execvpe r_glob/src/lib.rs /^ pub fn execvpe($/;" f +execvpe r_readline/src/lib.rs /^ pub fn execvpe($/;" f +execvpe vendor/libc/src/fuchsia/mod.rs /^ pub fn execvpe($/;" f +execvpe vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn execvpe($/;" f +execvpe vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn execvpe($/;" f +execvpe vendor/libc/src/unix/haiku/mod.rs /^ pub fn execvpe($/;" f +execvpe vendor/libc/src/unix/linux_like/mod.rs /^ pub fn execvpe($/;" f +execvpe vendor/libc/src/windows/mod.rs /^ pub fn execvpe($/;" f +exit r_bash/src/lib.rs /^ pub fn exit(__status: ::std::os::raw::c_int);$/;" f +exit r_glob/src/lib.rs /^ pub fn exit(__status: ::std::os::raw::c_int);$/;" f +exit r_readline/src/lib.rs /^ pub fn exit(__status: ::std::os::raw::c_int);$/;" f +exit vendor/async-trait/tests/test.rs /^ fn exit(&self, _span: &Id) {$/;" P implementation:issue45::TestSubscriber +exit vendor/libc/src/fuchsia/mod.rs /^ pub fn exit(status: c_int) -> !;$/;" f +exit vendor/libc/src/solid/mod.rs /^ pub fn exit(arg1: c_int) -> !;$/;" f +exit vendor/libc/src/unix/mod.rs /^ pub fn exit(status: c_int) -> !;$/;" f +exit vendor/libc/src/vxworks/mod.rs /^ pub fn exit(status: c_int) -> !;$/;" f +exit vendor/libc/src/wasi.rs /^ pub fn exit(code: c_int) -> !;$/;" f +exit vendor/libc/src/windows/mod.rs /^ pub fn exit(status: c_int) -> !;$/;" f +exit.o builtins/Makefile.in /^exit.o: $(BASHINCDIR)\/maxpath.h .\/builtext.h ..\/pathnames.h$/;" t +exit.o builtins/Makefile.in /^exit.o: $(topdir)\/bashtypes.h$/;" t +exit.o builtins/Makefile.in /^exit.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +exit.o builtins/Makefile.in /^exit.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +exit.o builtins/Makefile.in /^exit.o: $(topdir)\/execute_cmd.h$/;" t +exit.o builtins/Makefile.in /^exit.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +exit.o builtins/Makefile.in /^exit.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $/;" t +exit.o builtins/Makefile.in /^exit.o: $(topdir)\/subst.h $(topdir)\/externs.h $(topdir)\/jobs.h$/;" t +exit.o builtins/Makefile.in /^exit.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +exit.o builtins/Makefile.in /^exit.o: exit.def$/;" t +exit_immediately_on_error flags.c /^int exit_immediately_on_error = 0;$/;" v typeref:typename:int +exit_immediately_on_error r_bash/src/lib.rs /^ pub static mut exit_immediately_on_error: ::std::os::raw::c_int;$/;" v +exit_shell builtins_rust/exec/src/lib.rs /^ fn exit_shell(s: i32);$/;" f +exit_shell r_bash/src/lib.rs /^ pub fn exit_shell(arg1: ::std::os::raw::c_int);$/;" f +exit_shell shell.c /^exit_shell (s)$/;" f +exit_status vendor/nix/src/sys/wait.rs /^fn exit_status(status: i32) -> i32 {$/;" f +exit_thread vendor/libc/src/unix/haiku/native.rs /^ pub fn exit_thread(status: status_t);$/;" f +exited vendor/nix/src/sys/wait.rs /^fn exited(status: i32) -> bool {$/;" f +exp builtins_rust/cd/src/lib.rs /^ exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/cd/src/lib.rs /^ exp: *mut WordList,$/;" m struct:cond_com +exp builtins_rust/command/src/lib.rs /^ pub exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/common/src/lib.rs /^ exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/common/src/lib.rs /^ exp: *mut WordList,$/;" m struct:cond_com +exp builtins_rust/complete/src/lib.rs /^ exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/complete/src/lib.rs /^ exp: *mut WordList,$/;" m struct:cond_com +exp builtins_rust/declare/src/lib.rs /^ exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/declare/src/lib.rs /^ exp: *mut WordList,$/;" m struct:cond_com +exp builtins_rust/fc/src/lib.rs /^ exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/fc/src/lib.rs /^ exp: *mut WordList,$/;" m struct:cond_com +exp builtins_rust/fg_bg/src/lib.rs /^ exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/fg_bg/src/lib.rs /^ exp: *mut WordList,$/;" m struct:cond_com +exp builtins_rust/getopts/src/lib.rs /^ exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/getopts/src/lib.rs /^ exp: *mut WordList,$/;" m struct:cond_com +exp builtins_rust/jobs/src/lib.rs /^ exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/jobs/src/lib.rs /^ exp: *mut WordList,$/;" m struct:cond_com +exp builtins_rust/kill/src/intercdep.rs /^ pub exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/pushd/src/lib.rs /^ exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/pushd/src/lib.rs /^ exp: *mut WordList,$/;" m struct:cond_com +exp builtins_rust/setattr/src/intercdep.rs /^ pub exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/source/src/lib.rs /^ exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/source/src/lib.rs /^ exp: *mut WordList,$/;" m struct:cond_com +exp builtins_rust/type/src/lib.rs /^ exp: *mut WordList,$/;" m struct:arith_com +exp builtins_rust/type/src/lib.rs /^ exp: *mut WordList,$/;" m struct:cond_com +exp command.h /^ WORD_LIST *exp;$/;" m struct:arith_com typeref:typename:WORD_LIST * +exp lib/intl/plural.c /^ struct expression *exp;$/;" m union:YYSTYPE typeref:struct:expression * file: +exp lib/intl/plural.y /^exp: exp '?' exp ':' exp$/;" l +exp r_bash/src/lib.rs /^ pub exp: *mut WORD_LIST,$/;" m struct:arith_com +exp r_glob/src/lib.rs /^ pub exp: *mut WORD_LIST,$/;" m struct:arith_com +exp r_readline/src/lib.rs /^ pub exp: *mut WORD_LIST,$/;" m struct:arith_com +exp0 expr.c /^exp0 ()$/;" f typeref:typename:intmax_t file: +exp1 expr.c /^exp1 ()$/;" f typeref:typename:intmax_t file: +exp3 expr.c /^exp3 ()$/;" f typeref:typename:intmax_t file: +exp4 expr.c /^exp4 ()$/;" f typeref:typename:intmax_t file: +exp5 expr.c /^exp5 ()$/;" f typeref:typename:intmax_t file: +exp_jump_to_top_level subst.c /^exp_jump_to_top_level (v)$/;" f file: +expand vendor/async-trait/src/expand.rs /^pub fn expand(input: &mut Item, is_local: bool) {$/;" f +expand vendor/async-trait/src/lib.rs /^mod expand;$/;" n +expand vendor/memchr/src/tests/memchr/testdata.rs /^ fn expand(&self) -> Vec {$/;" P implementation:MemchrTest +expand vendor/thiserror-impl/src/lib.rs /^mod expand;$/;" n +expand_aliases builtins_rust/shopt/src/lib.rs /^ static mut expand_aliases: i32;$/;" v +expand_aliases builtins_rust/type/src/lib.rs /^ static expand_aliases: i32;$/;" v +expand_aliases r_bash/src/lib.rs /^ pub expand_aliases: ::std::os::raw::c_int,$/;" m struct:_sh_parser_state_t +expand_aliases r_bash/src/lib.rs /^ pub static mut expand_aliases: ::std::os::raw::c_int;$/;" v +expand_aliases shell.h /^ int expand_aliases;$/;" m struct:_sh_parser_state_t typeref:typename:int +expand_align vendor/libc/src/fuchsia/align.rs /^macro_rules! expand_align {$/;" M +expand_align vendor/libc/src/fuchsia/no_align.rs /^macro_rules! expand_align {$/;" M +expand_align vendor/libc/src/unix/linux_like/emscripten/align.rs /^macro_rules! expand_align {$/;" M +expand_align vendor/libc/src/unix/linux_like/emscripten/no_align.rs /^macro_rules! expand_align {$/;" M +expand_align vendor/libc/src/unix/linux_like/linux/align.rs /^macro_rules! expand_align {$/;" M +expand_align vendor/libc/src/unix/linux_like/linux/no_align.rs /^macro_rules! expand_align {$/;" M +expand_align vendor/libc/src/unix/linux_like/linux/uclibc/align.rs /^macro_rules! expand_align {$/;" M +expand_align vendor/libc/src/unix/linux_like/linux/uclibc/no_align.rs /^macro_rules! expand_align {$/;" M +expand_align vendor/libc/src/unix/newlib/align.rs /^macro_rules! expand_align {$/;" M +expand_align vendor/libc/src/unix/newlib/no_align.rs /^macro_rules! expand_align {$/;" M +expand_amble braces.c /^expand_amble (text, tlen, flags)$/;" f file: +expand_and_print_history builtins_rust/history/src/lib.rs /^fn expand_and_print_history(mut list: *mut WordList) -> c_int {$/;" f +expand_and_quote_assoc_word arrayfunc.c /^expand_and_quote_assoc_word (w, type)$/;" f +expand_and_quote_assoc_word r_bash/src/lib.rs /^ pub fn expand_and_quote_assoc_word($/;" f +expand_and_quote_kvpair_word arrayfunc.c /^expand_and_quote_kvpair_word (w)$/;" f +expand_and_quote_kvpair_word r_bash/src/lib.rs /^ pub fn expand_and_quote_kvpair_word($/;" f +expand_arith_string r_bash/src/lib.rs /^ pub fn expand_arith_string($/;" f +expand_arith_string subst.c /^expand_arith_string (string, quoted)$/;" f +expand_assignment_string_to_string r_bash/src/lib.rs /^ pub fn expand_assignment_string_to_string($/;" f +expand_assignment_string_to_string subst.c /^expand_assignment_string_to_string (string, quoted)$/;" f +expand_char support/man2html.c /^expand_char(int nr)$/;" f typeref:typename:char * file: +expand_compound_array_assignment arrayfunc.c /^expand_compound_array_assignment (var, value, flags)$/;" f +expand_compound_array_assignment r_bash/src/lib.rs /^ pub fn expand_compound_array_assignment($/;" f +expand_compound_assignment_word subst.c /^expand_compound_assignment_word (tlist, flags)$/;" f file: +expand_declaration_argument subst.c /^expand_declaration_argument (tlist, wcmd)$/;" f file: +expand_histignore_pattern bashhist.c /^expand_histignore_pattern (pat)$/;" f file: +expand_histignore_pattern r_bashhist/src/lib.rs /^unsafe extern "C" fn expand_histignore_pattern(mut pat: *mut c_char,) -> *mut c_char $/;" f +expand_no_split_dollar_star subst.c /^static int expand_no_split_dollar_star = 0;$/;" v typeref:typename:int file: +expand_oneword subst.c /^expand_oneword (value, flags)$/;" f file: +expand_param_error subst.c /^static char expand_param_error, expand_param_fatal, expand_param_unset;$/;" v typeref:typename:char file: +expand_param_fatal subst.c /^static char expand_param_error, expand_param_fatal, expand_param_unset;$/;" v typeref:typename:char file: +expand_param_unset subst.c /^static char expand_param_error, expand_param_fatal, expand_param_unset;$/;" v typeref:typename:char file: +expand_prompt lib/readline/display.c /^expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)$/;" f typeref:typename:char * file: +expand_prompt_string r_bash/src/lib.rs /^ pub fn expand_prompt_string($/;" f +expand_prompt_string subst.c /^expand_prompt_string (string, quoted, wflags)$/;" f +expand_seqterm braces.c /^expand_seqterm (text, tlen)$/;" f file: +expand_shorthand vendor/thiserror-impl/src/fmt.rs /^ pub fn expand_shorthand(&mut self, fields: &[Field]) {$/;" P implementation:Display +expand_string r_bash/src/lib.rs /^ pub fn expand_string($/;" f +expand_string subst.c /^expand_string (string, quoted)$/;" f +expand_string support/man2html.c /^expand_string(int nr)$/;" f typeref:typename:char * file: +expand_string_assignment r_bash/src/lib.rs /^ pub fn expand_string_assignment($/;" f +expand_string_assignment subst.c /^expand_string_assignment (string, quoted)$/;" f +expand_string_for_pat subst.c /^expand_string_for_pat (string, quoted, dollar_at_p, expanded_p)$/;" f file: +expand_string_for_rhs subst.c /^expand_string_for_rhs (string, quoted, op, pflags, dollar_at_p, expanded_p)$/;" f file: +expand_string_if_necessary subst.c /^expand_string_if_necessary (string, quoted, func)$/;" f file: +expand_string_internal subst.c /^expand_string_internal (string, quoted)$/;" f file: +expand_string_leave_quoted subst.c /^expand_string_leave_quoted (string, quoted)$/;" f file: +expand_string_to_string r_bash/src/lib.rs /^ pub fn expand_string_to_string($/;" f +expand_string_to_string subst.c /^expand_string_to_string (string, quoted)$/;" f +expand_string_to_string_internal subst.c /^expand_string_to_string_internal (string, quoted, func)$/;" f file: +expand_string_unsplit r_bash/src/lib.rs /^ pub fn expand_string_unsplit($/;" f +expand_string_unsplit subst.c /^expand_string_unsplit (string, quoted)$/;" f +expand_string_unsplit_to_string r_bash/src/lib.rs /^ pub fn expand_string_unsplit_to_string($/;" f +expand_string_unsplit_to_string subst.c /^expand_string_unsplit_to_string (string, quoted)$/;" f +expand_wdesc_error subst.c /^static WORD_DESC expand_wdesc_error, expand_wdesc_fatal;$/;" v typeref:typename:WORD_DESC file: +expand_wdesc_fatal subst.c /^static WORD_DESC expand_wdesc_error, expand_wdesc_fatal;$/;" v typeref:typename:WORD_DESC file: +expand_word r_bash/src/lib.rs /^ pub fn expand_word(arg1: *mut WORD_DESC, arg2: ::std::os::raw::c_int) -> *mut WORD_LIST;$/;" f +expand_word subst.c /^expand_word (word, quoted)$/;" f +expand_word_error subst.c /^static WORD_LIST expand_word_error, expand_word_fatal;$/;" v typeref:typename:WORD_LIST file: +expand_word_fatal subst.c /^static WORD_LIST expand_word_error, expand_word_fatal;$/;" v typeref:typename:WORD_LIST file: +expand_word_internal subst.c /^expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_something)$/;" f file: +expand_word_leave_quoted r_bash/src/lib.rs /^ pub fn expand_word_leave_quoted($/;" f +expand_word_leave_quoted subst.c /^expand_word_leave_quoted (word, quoted)$/;" f +expand_word_list_internal subst.c /^expand_word_list_internal (list, eflags)$/;" f file: +expand_word_unsplit r_bash/src/lib.rs /^ pub fn expand_word_unsplit(arg1: *mut WORD_DESC, arg2: ::std::os::raw::c_int)$/;" f +expand_word_unsplit subst.c /^expand_word_unsplit (word, quoted)$/;" f +expand_words r_bash/src/lib.rs /^ pub fn expand_words(arg1: *mut WORD_LIST) -> *mut WORD_LIST;$/;" f +expand_words subst.c /^expand_words (list)$/;" f +expand_words_no_vars r_bash/src/lib.rs /^ pub fn expand_words_no_vars(arg1: *mut WORD_LIST) -> *mut WORD_LIST;$/;" f +expand_words_no_vars subst.c /^expand_words_no_vars (list)$/;" f +expand_words_shellexp r_bash/src/lib.rs /^ pub fn expand_words_shellexp(arg1: *mut WORD_LIST) -> *mut WORD_LIST;$/;" f +expand_words_shellexp subst.c /^expand_words_shellexp (list)$/;" f +expandable_redirection_filename redir.c /^expandable_redirection_filename (redirect)$/;" f file: +expanding_redir r_bash/src/lib.rs /^ pub static mut expanding_redir: ::std::os::raw::c_int;$/;" v +expanding_redir redir.c /^int expanding_redir;$/;" v typeref:typename:int +expandtest vendor/pin-project-lite/tests/expandtest.rs /^fn expandtest() {$/;" f +expassign expr.c /^expassign ()$/;" f typeref:typename:intmax_t file: +expband expr.c /^expband ()$/;" f typeref:typename:intmax_t file: +expbor expr.c /^expbor ()$/;" f typeref:typename:intmax_t file: +expbxor expr.c /^expbxor ()$/;" f typeref:typename:intmax_t file: +expcomma expr.c /^expcomma ()$/;" f typeref:typename:intmax_t file: +expcond expr.c /^expcond ()$/;" f typeref:typename:intmax_t file: +expect_byte vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn expect_byte(&mut self, b: u8) -> Result<()> {$/;" f +expected vendor/futures-util/src/stream/stream/peek.rs /^ expected: &'a T,$/;" m struct:NextIfEqFn +expected_parentheses vendor/syn/src/attr.rs /^fn expected_parentheses(attr: &Attribute) -> String {$/;" f +expecting vendor/slab/src/serde.rs /^ fn expecting(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +expecting vendor/smallvec/src/lib.rs /^ fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +expecting vendor/unic-langid-impl/src/serde.rs /^ fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {$/;" P implementation:LanguageIdentifier::deserialize::LanguageIdentifierVisitor +expland expr.c /^expland ()$/;" f typeref:typename:intmax_t file: +explicit vendor/async-trait/src/lifetime.rs /^ pub explicit: Vec,$/;" m struct:CollectLifetimes +explicit_bzero r_bash/src/lib.rs /^ pub fn explicit_bzero(__s: *mut ::std::os::raw::c_void, __n: usize);$/;" f +explicit_bzero r_glob/src/lib.rs /^ pub fn explicit_bzero(__s: *mut ::std::os::raw::c_void, __n: usize);$/;" f +explicit_bzero r_readline/src/lib.rs /^ pub fn explicit_bzero(__s: *mut ::std::os::raw::c_void, __n: usize);$/;" f +explicit_bzero vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn explicit_bzero(s: *mut ::c_void, len: ::size_t);$/;" f +explicit_bzero vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn explicit_bzero(s: *mut ::c_void, len: ::size_t);$/;" f +explicit_bzero vendor/libc/src/unix/haiku/mod.rs /^ pub fn explicit_bzero(buf: *mut ::c_void, len: ::size_t);$/;" f +explicit_bzero vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn explicit_bzero(s: *mut ::c_void, len: ::size_t);$/;" f +explicit_bzero vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn explicit_bzero(s: *mut ::c_void, len: ::size_t);$/;" f +explicit_lifetime vendor/async-trait/tests/test.rs /^ async fn explicit_lifetime<'a>(_x: &'a str) {}$/;" P implementation:Struct +explicit_lifetime vendor/async-trait/tests/test.rs /^ async fn explicit_lifetime<'a>(_x: &'a str) {}$/;" P interface:Trait +explicit_memset vendor/libc/src/solid/mod.rs /^ pub fn explicit_memset(arg1: *mut c_void, arg2: c_int, arg3: size_t) -> *mut c_void;$/;" f +explicit_memset vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn explicit_memset(b: *mut ::c_void, c: ::c_int, len: ::size_t);$/;" f +explicit_named_args vendor/thiserror-impl/src/fmt.rs /^fn explicit_named_args(input: ParseStream) -> Result> {$/;" f +explicit_outlives_requirements vendor/pin-project-lite/tests/lint.rs /^pub mod explicit_outlives_requirements {$/;" n +explodename.$lo lib/intl/Makefile.in /^explodename.$lo l10nflist.$lo: $(srcdir)\/loadinfo.h$/;" t +explodename.lo lib/intl/Makefile.in /^explodename.lo: $(srcdir)\/explodename.c$/;" t +explor expr.c /^explor ()$/;" f typeref:typename:intmax_t file: +expmuldiv expr.c /^expmuldiv ()$/;" f typeref:typename:intmax_t file: +exponent builtins_rust/wait/src/signal.rs /^ pub exponent: ::std::os::raw::c_ushort,$/;" m struct:_fpreg +exponent builtins_rust/wait/src/signal.rs /^ pub exponent: ::std::os::raw::c_ushort,$/;" m struct:_fpxreg +exponent builtins_rust/wait/src/signal.rs /^ pub exponent: ::std::os::raw::c_ushort,$/;" m struct:_libc_fpxreg +exponent lib/sh/snprintf.c /^exponent(p, d)$/;" f file: +exponent r_bash/src/lib.rs /^ pub exponent: ::std::os::raw::c_ushort,$/;" m struct:_fpreg +exponent r_bash/src/lib.rs /^ pub exponent: ::std::os::raw::c_ushort,$/;" m struct:_fpxreg +exponent r_bash/src/lib.rs /^ pub exponent: ::std::os::raw::c_ushort,$/;" m struct:_libc_fpxreg +exponent r_glob/src/lib.rs /^ pub exponent: ::std::os::raw::c_ushort,$/;" m struct:_fpreg +exponent r_glob/src/lib.rs /^ pub exponent: ::std::os::raw::c_ushort,$/;" m struct:_fpxreg +exponent r_glob/src/lib.rs /^ pub exponent: ::std::os::raw::c_ushort,$/;" m struct:_libc_fpxreg +exponent r_readline/src/lib.rs /^ pub exponent: ::std::os::raw::c_ushort,$/;" m struct:_fpreg +exponent r_readline/src/lib.rs /^ pub exponent: ::std::os::raw::c_ushort,$/;" m struct:_fpxreg +exponent r_readline/src/lib.rs /^ pub exponent: ::std::os::raw::c_ushort,$/;" m struct:_libc_fpxreg +export_env builtins_rust/exec/src/lib.rs /^ static export_env: *mut *mut c_char;$/;" v +export_env r_bash/src/lib.rs /^ pub static mut export_env: *mut *mut ::std::os::raw::c_char;$/;" v +export_env variables.c /^char **export_env = (char **)NULL;$/;" v typeref:typename:char ** +export_env_index variables.c /^static int export_env_index;$/;" v typeref:typename:int file: +export_env_size variables.c /^static int export_env_size;$/;" v typeref:typename:int file: +export_environment_candidate variables.c /^export_environment_candidate (var)$/;" f file: +export_token_macro vendor/syn/src/token.rs /^macro_rules! export_token_macro {$/;" M +exportable_function_name builtins_rust/setattr/src/intercdep.rs /^ pub fn exportable_function_name(string: *const c_char) -> c_int;$/;" f +exportable_function_name general.c /^exportable_function_name (string)$/;" f +exportable_function_name r_bash/src/lib.rs /^ pub fn exportable_function_name(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_in/;" f +exportable_function_name r_glob/src/lib.rs /^ pub fn exportable_function_name(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_in/;" f +exportable_function_name r_readline/src/lib.rs /^ pub fn exportable_function_name(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_in/;" f +exported_p builtins_rust/cd/src/lib.rs /^macro_rules! exported_p {$/;" M +exported_p builtins_rust/set/src/lib.rs /^macro_rules! exported_p {$/;" M +exported_p variables.h /^#define exported_p(/;" d +exportstr builtins_rust/cd/src/lib.rs /^ exportstr: *mut c_char, \/* String for the environment. *\/$/;" m struct:SHELL_VAR +exportstr builtins_rust/common/src/lib.rs /^ pub exportstr: *mut c_char, \/* String for the environment. *\/$/;" m struct:SHELL_VAR +exportstr builtins_rust/declare/src/lib.rs /^ exportstr: *mut c_char, \/* String for the environment. *\/$/;" m struct:SHELL_VAR +exportstr builtins_rust/fc/src/lib.rs /^ exportstr: *mut c_char,$/;" m struct:SHELL_VAR +exportstr builtins_rust/getopts/src/lib.rs /^ exportstr: *mut c_char,$/;" m struct:SHELL_VAR +exportstr builtins_rust/mapfile/src/intercdep.rs /^ pub exportstr: *mut c_char,$/;" m struct:variable +exportstr builtins_rust/printf/src/intercdep.rs /^ pub exportstr: *mut c_char,$/;" m struct:variable +exportstr builtins_rust/read/src/intercdep.rs /^ pub exportstr: *mut c_char,$/;" m struct:variable +exportstr builtins_rust/set/src/lib.rs /^ pub exportstr: *mut libc::c_char,$/;" m struct:variable +exportstr builtins_rust/setattr/src/intercdep.rs /^ pub exportstr: *mut c_char,$/;" m struct:variable +exportstr builtins_rust/shopt/src/lib.rs /^ pub exportstr: *mut libc::c_char,$/;" m struct:variable +exportstr builtins_rust/type/src/lib.rs /^ exportstr: *mut libc::c_char,$/;" m struct:SHELL_VAR +exportstr builtins_rust/wait/src/lib.rs /^ pub exportstr: *mut c_char,$/;" m struct:variable +exportstr r_bash/src/lib.rs /^ pub exportstr: *mut ::std::os::raw::c_char,$/;" m struct:variable +exportstr variables.h /^ char *exportstr; \/* String for the environment. *\/$/;" m struct:variable typeref:typename:char * +exppower expr.c /^exppower ()$/;" f typeref:typename:intmax_t file: +expr test.c /^expr ()$/;" f typeref:typename:int file: +expr vendor/syn/src/lib.rs /^mod expr;$/;" n +expr.o Makefile.in /^expr.o: ${BASHINCDIR}\/chartypes.h$/;" t +expr.o Makefile.in /^expr.o: assoc.h ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/typemax.h$/;" t +expr.o Makefile.in /^expr.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +expr.o Makefile.in /^expr.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h $/;" t +expr.o Makefile.in /^expr.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +expr.o Makefile.in /^expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h flags.h execute_cmd.h$/;" t +expr.o Makefile.in /^expr.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +expr.o Makefile.in /^expr.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\/s/;" t +expr_attrs vendor/syn/src/expr.rs /^ fn expr_attrs(input: ParseStream) -> Result> {$/;" f module:parsing +expr_bind_array_element expr.c /^expr_bind_array_element (tok, ind, rhs)$/;" f file: +expr_bind_variable expr.c /^expr_bind_variable (lhs, rhs)$/;" f file: +expr_box vendor/syn/src/expr.rs /^ fn expr_box($/;" f module:parsing +expr_break vendor/syn/src/expr.rs /^ fn expr_break(input: ParseStream, allow_struct: AllowStruct) -> Result {$/;" f module:parsing +expr_closure vendor/syn/src/expr.rs /^ fn expr_closure(input: ParseStream, allow_struct: AllowStruct) -> Result {$/;" f module:parsing +expr_const vendor/syn/src/expr.rs /^ pub(crate) fn expr_const(input: ParseStream) -> Result {$/;" f module:parsing +expr_depth expr.c /^static int expr_depth; \/* Location in the stack. *\/$/;" v typeref:typename:int file: +expr_early vendor/syn/src/expr.rs /^ pub(crate) fn expr_early(input: ParseStream) -> Result {$/;" f module:parsing +expr_group vendor/syn/src/expr.rs /^ fn expr_group(input: ParseStream) -> Result {$/;" f module:parsing +expr_paren vendor/syn/src/expr.rs /^ fn expr_paren(input: ParseStream) -> Result {$/;" f module:parsing +expr_range vendor/syn/src/expr.rs /^ fn expr_range(input: ParseStream, allow_struct: AllowStruct) -> Result {$/;" f module:parsing +expr_ret vendor/syn/src/expr.rs /^ fn expr_ret(input: ParseStream, allow_struct: AllowStruct) -> Result {$/;" f module:parsing +expr_skipsubscript expr.c /^expr_skipsubscript (vp, cp)$/;" f file: +expr_stack expr.c /^static EXPR_CONTEXT **expr_stack;$/;" v typeref:typename:EXPR_CONTEXT ** file: +expr_stack_size expr.c /^static int expr_stack_size; \/* Number of slots already allocated. *\/$/;" v typeref:typename:int file: +expr_streval expr.c /^expr_streval (tok, e, lvalue)$/;" f file: +expr_struct_helper vendor/syn/src/expr.rs /^ fn expr_struct_helper(input: ParseStream, path: Path) -> Result {$/;" f module:parsing +expr_unary vendor/syn/src/expr.rs /^ fn expr_unary($/;" f module:parsing +expr_unwind expr.c /^expr_unwind ()$/;" f typeref:typename:void file: +expression expr.c /^ char *expression, *tp, *lasttp;$/;" m struct:__anonfc32de750108 typeref:typename:char * file: +expression expr.c /^static char *expression; \/* The current expression *\/$/;" v typeref:typename:char * file: +expression lib/intl/plural-exp.h /^struct expression$/;" s +expression vendor/fluent-bundle/src/resolver/mod.rs /^mod expression;$/;" n +expression vendor/fluent-syntax/src/parser/mod.rs /^mod expression;$/;" n +expshift expr.c /^expshift ()$/;" f typeref:typename:intmax_t file: +ext lib/readline/colors.h /^ struct bin_str ext; \/* The extension we're looking for *\/$/;" m struct:_color_ext_type typeref:struct:bin_str +ext r_readline/src/lib.rs /^ pub ext: bin_str,$/;" m struct:_color_ext_type +ext vendor/quote/src/lib.rs /^mod ext;$/;" n +ext vendor/quote/src/runtime.rs /^pub mod ext {$/;" n +ext vendor/syn/src/lib.rs /^pub mod ext;$/;" n +ext_glob_chars syntax.h /^# define ext_glob_chars /;" d +extattr_delete_fd vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_delete_fd($/;" f +extattr_delete_fd vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn extattr_delete_fd($/;" f +extattr_delete_file vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_delete_file($/;" f +extattr_delete_file vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn extattr_delete_file($/;" f +extattr_delete_link vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_delete_link($/;" f +extattr_delete_link vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn extattr_delete_link($/;" f +extattr_get_fd vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_get_fd($/;" f +extattr_get_fd vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn extattr_get_fd($/;" f +extattr_get_file vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_get_file($/;" f +extattr_get_file vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn extattr_get_file($/;" f +extattr_get_link vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_get_link($/;" f +extattr_get_link vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn extattr_get_link($/;" f +extattr_list_fd vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_list_fd($/;" f +extattr_list_file vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_list_file($/;" f +extattr_list_link vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_list_link($/;" f +extattr_namespace_to_string vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_namespace_to_string($/;" f +extattr_namespace_to_string vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn extattr_namespace_to_string($/;" f +extattr_set_fd vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_set_fd($/;" f +extattr_set_fd vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn extattr_set_fd($/;" f +extattr_set_file vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_set_file($/;" f +extattr_set_file vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn extattr_set_file($/;" f +extattr_set_link vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_set_link($/;" f +extattr_set_link vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn extattr_set_link($/;" f +extattr_string_to_namespace vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn extattr_string_to_namespace($/;" f +extattr_string_to_namespace vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn extattr_string_to_namespace($/;" f +extend vendor/futures-util/src/stream/futures_ordered.rs /^ fn extend(&mut self, iter: I)$/;" P implementation:FuturesOrdered +extend vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn extend(&mut self, iter: I)$/;" P implementation:FuturesUnordered +extend vendor/futures-util/src/stream/select_all.rs /^ fn extend>(&mut self, iter: T) {$/;" P implementation:SelectAll +extend vendor/proc-macro2/src/fallback.rs /^ fn extend>(&mut self, streams: I) {$/;" P implementation:TokenStream +extend vendor/proc-macro2/src/fallback.rs /^ fn extend>(&mut self, tokens: I) {$/;" P implementation:TokenStream +extend vendor/proc-macro2/src/lib.rs /^ fn extend>(&mut self, streams: I) {$/;" P implementation:TokenStream +extend vendor/proc-macro2/src/lib.rs /^ fn extend>(&mut self, streams: I) {$/;" P implementation:TokenStream +extend vendor/proc-macro2/src/rcvec.rs /^ pub fn extend(&mut self, iter: impl IntoIterator) {$/;" P implementation:RcVecBuilder +extend vendor/proc-macro2/src/rcvec.rs /^ pub fn extend(&mut self, iter: impl IntoIterator) {$/;" P implementation:RcVecMut +extend vendor/proc-macro2/src/wrapper.rs /^ fn extend>(&mut self, streams: I) {$/;" P implementation:TokenStream +extend vendor/proc-macro2/src/wrapper.rs /^ fn extend>(&mut self, stream: I) {$/;" P implementation:TokenStream +extend vendor/smallvec/src/lib.rs /^ fn extend>(&mut self, iterable: I) {$/;" P implementation:SmallVec +extend vendor/syn/src/error.rs /^ fn extend>(&mut self, iter: T) {$/;" P implementation:Error +extend vendor/syn/src/punctuated.rs /^ fn extend>>(&mut self, i: I) {$/;" P implementation:Punctuated +extend vendor/syn/src/punctuated.rs /^ fn extend>(&mut self, i: I) {$/;" f +extend_alias_table lib/intl/localealias.c /^extend_alias_table ()$/;" f typeref:typename:int file: +extend_from_slice vendor/smallvec/src/lib.rs /^ fn extend_from_slice(&mut self, other: &[A::Item]) {$/;" f +extend_from_slice vendor/smallvec/src/lib.rs /^ fn extend_from_slice(&mut self, other: &[T]) {$/;" P implementation:Vec +extend_from_slice vendor/smallvec/src/lib.rs /^ fn extend_from_slice(&mut self, other: &[T]);$/;" P interface:ExtendFromSlice +extend_from_slice vendor/smallvec/src/lib.rs /^ pub fn extend_from_slice(&mut self, slice: &[A::Item]) {$/;" f +extended-glob configure.ac /^AC_ARG_ENABLE(extended-glob, AC_HELP_STRING([--enable-extended-glob], [include ksh-style extende/;" e +extended-glob-default configure.ac /^AC_ARG_ENABLE(extended-glob-default, AC_HELP_STRING([--enable-extended-glob-default], [force ext/;" e +extended_glob builtins_rust/shopt/src/lib.rs /^ static mut extended_glob: i32;$/;" v +extended_glob pathexp.c /^int extended_glob = EXTGLOB_DEFAULT;$/;" v typeref:typename:int +extended_glob r_bash/src/lib.rs /^ pub static mut extended_glob: ::std::os::raw::c_int;$/;" v +extended_quote builtins_rust/shopt/src/lib.rs /^ static mut extended_quote: i32;$/;" v +extended_size builtins_rust/wait/src/signal.rs /^ pub extended_size: __uint32_t,$/;" m struct:_fpx_sw_bytes +extended_size r_bash/src/lib.rs /^ pub extended_size: __uint32_t,$/;" m struct:_fpx_sw_bytes +extended_size r_glob/src/lib.rs /^ pub extended_size: __uint32_t,$/;" m struct:_fpx_sw_bytes +extended_size r_readline/src/lib.rs /^ pub extended_size: __uint32_t,$/;" m struct:_fpx_sw_bytes +extends lib/malloc/alloca.c /^ long extends; \/* Number of block extensions. *\/$/;" m struct:stk_stat typeref:typename:long file: +extern_filename builtins/mkbuiltins.c /^char *extern_filename = (char *)NULL;$/;" v typeref:typename:char * +extglob_pattern_p r_glob/src/lib.rs /^ pub fn extglob_pattern_p(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +extglob_skipname lib/glob/glob.c /^extglob_skipname (pat, dname, flags)$/;" f file: +extra vendor/proc-macro2/src/wrapper.rs /^ extra: Vec,$/;" m struct:DeferredTokenStream +extra vendor/thiserror/tests/test_display.rs /^ extra: usize,$/;" m struct:test_braced_unused::Error +extract_arithmetic_subst r_bash/src/lib.rs /^ pub fn extract_arithmetic_subst($/;" f +extract_arithmetic_subst subst.c /^extract_arithmetic_subst (string, sindex)$/;" f +extract_array_assignment_list r_bash/src/lib.rs /^ pub fn extract_array_assignment_list($/;" f +extract_array_assignment_list subst.c /^extract_array_assignment_list (string, sindex)$/;" f +extract_colon_unit builtins_rust/cd/src/lib.rs /^ fn extract_colon_unit(string: *mut c_char, p_index: *mut i32) -> *mut c_char;$/;" f +extract_colon_unit builtins_rust/set/src/lib.rs /^ fn extract_colon_unit(_: *mut libc::c_char, _: *mut i32) -> *mut libc::c_char;$/;" f +extract_colon_unit builtins_rust/shopt/src/lib.rs /^ fn extract_colon_unit(_: *mut libc::c_char, _: *mut i32) -> *mut libc::c_char;$/;" f +extract_colon_unit general.c /^extract_colon_unit (string, p_index)$/;" f +extract_colon_unit r_bash/src/lib.rs /^ pub fn extract_colon_unit($/;" f +extract_colon_unit r_glob/src/lib.rs /^ pub fn extract_colon_unit($/;" f +extract_colon_unit r_readline/src/lib.rs /^ pub fn extract_colon_unit($/;" f +extract_command_subst r_bash/src/lib.rs /^ pub fn extract_command_subst($/;" f +extract_command_subst subst.c /^extract_command_subst (string, sindex, xflags)$/;" f +extract_delimited_string subst.c /^extract_delimited_string (string, sindex, opener, alt_opener, closer, flags)$/;" f file: +extract_dollar_brace_string subst.c /^extract_dollar_brace_string (string, sindex, quoted, flags)$/;" f file: +extract_info builtins/mkbuiltins.c /^extract_info (filename, structfile, externfile)$/;" f +extract_input vendor/unic-langid-impl/benches/likely_subtags.rs /^fn extract_input(s: &str) -> (Option, Option, Option) {$/;" f +extract_process_subst r_bash/src/lib.rs /^ pub fn extract_process_subst($/;" f +extract_process_subst subst.c /^extract_process_subst (string, starter, sindex, xflags)$/;" f +extract_string_error subst.c /^static char extract_string_error, extract_string_fatal;$/;" v typeref:typename:char file: +extract_string_fatal subst.c /^static char extract_string_error, extract_string_fatal;$/;" v typeref:typename:char file: +f variables.h /^ COMMAND *f; \/* function *\/$/;" m union:_value typeref:typename:COMMAND * +f vendor/async-trait/tests/test.rs /^ fn f(self) {$/;" P implementation:test_internal_items::Trait::f::Struct +f vendor/async-trait/tests/test.rs /^ async fn f(&self) -> &str$/;" P interface:issue123::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(&self) -> Self::Assoc;$/;" P interface:issue152::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {$/;" P implementation:issue154::Struct +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {$/;" P implementation:issue17::Struct +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {$/;" P implementation:issue87::Struct +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {$/;" P implementation:issue87::Tuple +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {$/;" P interface:issue158::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {}$/;" P implementation:issue120::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {}$/;" P implementation:issue89::Sync +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {}$/;" P implementation:test_object_no_send::Struct +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {}$/;" P implementation:test_object_safe_with_default::Struct +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {}$/;" P implementation:test_object_safe_without_default::Struct +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {}$/;" P interface:issue169::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {}$/;" P interface:issue83::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {}$/;" P interface:test_object_no_send::ObjectSafe +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {}$/;" P interface:test_object_safe_with_default::ObjectSafe +f vendor/async-trait/tests/test.rs /^ async fn f(&self);$/;" P interface:issue120::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(&self);$/;" P interface:issue154::MyTrait +f vendor/async-trait/tests/test.rs /^ async fn f(&self);$/;" P interface:issue17::Issue17 +f vendor/async-trait/tests/test.rs /^ async fn f(&self);$/;" P interface:issue87::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(&self);$/;" P interface:issue89::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(&self);$/;" P interface:test_object_safe_without_default::ObjectSafe +f vendor/async-trait/tests/test.rs /^ async fn f(&self, (a, ref mut b, ref c, d): (u8, u8, u8, u8)) {$/;" P implementation:test_can_destruct::Struct +f vendor/async-trait/tests/test.rs /^ async fn f(&self, foos: (u8, u8, u8, u8));$/;" P interface:test_can_destruct::CanDestruct +f vendor/async-trait/tests/test.rs /^ async fn f() -> Box> {$/;" P interface:test_inference::Trait +f vendor/async-trait/tests/test.rs /^ async fn f() {$/;" P interface:test_unimplemented::Trait +f vendor/async-trait/tests/test.rs /^ async fn f() {}$/;" P implementation:issue28::a +f vendor/async-trait/tests/test.rs /^ async fn f();$/;" P interface:issue28::Trait2 +f vendor/async-trait/tests/test.rs /^ async fn f(_: &'a &'b ()); \/\/ chain 'a and 'b$/;" P interface:issue28::Trait3 +f vendor/async-trait/tests/test.rs /^ async fn f(_x: Self) {}$/;" P interface:issue9::Issue9 +f vendor/async-trait/tests/test.rs /^ async fn f(arg: &impl Trait);$/;" P interface:issue204::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(counter: &Cell, _: IncrementOnDrop<'_>) {$/;" P implementation:issue199::Struct +f vendor/async-trait/tests/test.rs /^ async fn f(counter: &Cell, arg: IncrementOnDrop<'_>);$/;" P interface:issue199::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(mut self) {$/;" P implementation:issue23::S +f vendor/async-trait/tests/test.rs /^ async fn f(self) {$/;" P interface:test_internal_items::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(self);$/;" P interface:issue23::Issue23 +f vendor/async-trait/tests/test.rs /^ async fn f(self: Arc) {$/;" P implementation:issue161::MyStruct +f vendor/async-trait/tests/test.rs /^ async fn f(self: Arc);$/;" P interface:issue161::Trait +f vendor/async-trait/tests/test.rs /^ async fn f(x: Str<'a>) -> &'a str {$/;" P implementation:issue28::str +f vendor/async-trait/tests/test.rs /^ async fn f(x: Str<'a>) -> &'a str;$/;" P interface:issue28::Trait1 +f vendor/async-trait/tests/test.rs /^ async fn f(&self) {}$/;" P implementation:issue1::Vec +f vendor/async-trait/tests/test.rs /^ async fn f(&self);$/;" P interface:issue1::Issue1 +f vendor/async-trait/tests/test.rs /^ fn f() {}$/;" f module:issue158 +f vendor/async-trait/tests/ui/arg-implementation-detail.rs /^ async fn f((_a, _b): (Struct, Struct)) {$/;" P interface:Trait +f vendor/async-trait/tests/ui/bare-trait-object.rs /^ async fn f(&self) {}$/;" P implementation:Sync +f vendor/async-trait/tests/ui/bare-trait-object.rs /^ async fn f(&self);$/;" P interface:Trait +f vendor/async-trait/tests/ui/missing-body.rs /^ async fn f(&self);$/;" P implementation:Thing +f vendor/async-trait/tests/ui/missing-body.rs /^ async fn f(&self);$/;" P interface:Trait +f vendor/async-trait/tests/ui/must-use.rs /^ async fn f(&self) {}$/;" P implementation:Thing +f vendor/async-trait/tests/ui/must-use.rs /^ async fn f(&self);$/;" P interface:Interface +f vendor/async-trait/tests/ui/must-use.rs /^pub async fn f() {$/;" f +f vendor/async-trait/tests/ui/send-not-implemented.rs /^async fn f() {}$/;" f +f vendor/async-trait/tests/ui/unreachable.rs /^ async fn f() {$/;" P interface:Trait +f vendor/async-trait/tests/ui/unreachable.rs /^ async fn f() {$/;" P interface:TraitFoo +f vendor/futures-util/src/future/lazy.rs /^ f: Option,$/;" m struct:Lazy +f vendor/futures-util/src/future/poll_fn.rs /^ f: F,$/;" m struct:PollFn +f vendor/futures-util/src/stream/poll_fn.rs /^ f: F,$/;" m struct:PollFn +f vendor/futures-util/src/stream/stream/scan.rs /^ f: F,$/;" m struct:StateFn +f vendor/intl_pluralrules/src/operands.rs /^ pub f: u64,$/;" m struct:PluralOperands +f vendor/pin-project-lite/tests/proper_unpin.rs /^ f: T,$/;" m struct:default::Inner +f vendor/pin-project-lite/tests/ui/pinned_drop/conditional-drop-impl.rs /^ f: T,$/;" m struct:DropImpl +f vendor/stdext/src/option.rs /^ fn f(l: i32, r: i32) -> i32 {$/;" f function:tests::combine_with +f vendor/stdext/src/result.rs /^ fn f(l: i32, r: i32) -> i32 {$/;" f function:tests::combine_with +f32_suffixed vendor/proc-macro2/src/lib.rs /^ pub fn f32_suffixed(f: f32) -> Literal {$/;" P implementation:Literal +f32_unsuffixed vendor/proc-macro2/src/fallback.rs /^ pub fn f32_unsuffixed(f: f32) -> Literal {$/;" P implementation:Literal +f32_unsuffixed vendor/proc-macro2/src/lib.rs /^ pub fn f32_unsuffixed(f: f32) -> Literal {$/;" P implementation:Literal +f32_unsuffixed vendor/proc-macro2/src/wrapper.rs /^ pub fn f32_unsuffixed(f: f32) -> Literal {$/;" P implementation:Literal +f64_suffixed vendor/proc-macro2/src/lib.rs /^ pub fn f64_suffixed(f: f64) -> Literal {$/;" P implementation:Literal +f64_unsuffixed vendor/proc-macro2/src/fallback.rs /^ pub fn f64_unsuffixed(f: f64) -> Literal {$/;" P implementation:Literal +f64_unsuffixed vendor/proc-macro2/src/lib.rs /^ pub fn f64_unsuffixed(f: f64) -> Literal {$/;" P implementation:Literal +f64_unsuffixed vendor/proc-macro2/src/wrapper.rs /^ pub fn f64_unsuffixed(f: f64) -> Literal {$/;" P implementation:Literal +f_handle r_bash/src/lib.rs /^ pub f_handle: __IncompleteArrayField<::std::os::raw::c_uchar>,$/;" m struct:file_handle +f_owner_ex r_bash/src/lib.rs /^pub struct f_owner_ex {$/;" s +faccessat r_bash/src/lib.rs /^ pub fn faccessat($/;" f +faccessat r_glob/src/lib.rs /^ pub fn faccessat($/;" f +faccessat r_readline/src/lib.rs /^ pub fn faccessat($/;" f +faccessat vendor/libc/src/fuchsia/mod.rs /^ pub fn faccessat($/;" f +faccessat vendor/libc/src/unix/bsd/mod.rs /^ pub fn faccessat($/;" f +faccessat vendor/libc/src/unix/haiku/mod.rs /^ pub fn faccessat($/;" f +faccessat vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn faccessat($/;" f +faccessat vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn faccessat($/;" f +faccessat vendor/libc/src/unix/solarish/mod.rs /^ pub fn faccessat(fd: ::c_int, path: *const ::c_char, amode: ::c_int, flag: ::c_int) -> ::c_i/;" f +faccessat vendor/libc/src/wasi.rs /^ pub fn faccessat($/;" f +factor_first vendor/futures-util/src/future/either.rs /^ pub fn factor_first(self) -> (T, Either) {$/;" P implementation:Either +factor_second vendor/futures-util/src/future/either.rs /^ pub fn factor_second(self) -> (Either, T) {$/;" P implementation:Either +fail vendor/async-trait/tests/test.rs /^ async fn fail() -> &'static dyn Ret {$/;" P interface:issue149::Trait +fail vendor/bitflags/tests/compile.rs /^fn fail() {$/;" f +fail vendor/proc-macro2/tests/test.rs /^ fn fail(p: &str) {$/;" f function:fail +fail vendor/proc-macro2/tests/test.rs /^fn fail() {$/;" f +fail_glob_expansion builtins_rust/shopt/src/lib.rs /^ static mut fail_glob_expansion: i32;$/;" v +fail_glob_expansion subst.c /^int fail_glob_expansion;$/;" v typeref:typename:int +failed vendor/syn/tests/test_precedence.rs /^ failed: bool,$/;" m struct:librustc_brackets::BracketsVisitor +failed_future vendor/futures/tests/future_try_flatten_stream.rs /^fn failed_future() {$/;" f +falarm builtins_rust/read/src/intercdep.rs /^ pub fn falarm($/;" f +falarm lib/sh/ufuncs.c /^falarm (secs, usecs)$/;" f +falarm lib/sh/ufuncs.c /^falarm(secs, usecs)$/;" f +falarm r_bash/src/lib.rs /^ pub fn falarm($/;" f +fallback vendor/memchr/src/memchr/mod.rs /^pub mod fallback;$/;" n +fallback vendor/memchr/src/memmem/prefilter/mod.rs /^mod fallback;$/;" n +fallback vendor/proc-macro2/src/lib.rs /^pub mod fallback;$/;" n +fallback_fluent_bundle vendor/syn/benches/rust.rs /^ fn fallback_fluent_bundle(&self) -> &FluentBundle {$/;" P implementation:librustc_parse::bench::SilentEmitter +fallocate r_bash/src/lib.rs /^ pub fn fallocate($/;" f +fallocate vendor/libc/src/fuchsia/mod.rs /^ pub fn fallocate(fd: ::c_int, mode: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;$/;" f +fallocate vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn fallocate(fd: ::c_int, mode: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;$/;" f +fallocate vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn fallocate(fd: ::c_int, mode: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;$/;" f +fallocate64 r_bash/src/lib.rs /^ pub fn fallocate64($/;" f +fallocate64 vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn fallocate64(fd: ::c_int, mode: ::c_int, offset: ::off64_t, len: ::off64_t) -> ::c_int/;" f +fallocate64 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn fallocate64(fd: ::c_int, mode: ::c_int, offset: ::off64_t, len: ::off64_t) -> ::c_int/;" f +false lib/intl/relocatable.c /^#define false /;" d file: +false lib/readline/colors.h /^# define false /;" d +false_case builtins_rust/cd/src/lib.rs /^ false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/command/src/lib.rs /^ pub false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/common/src/lib.rs /^ false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/complete/src/lib.rs /^ false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/declare/src/lib.rs /^ false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/fc/src/lib.rs /^ false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/fg_bg/src/lib.rs /^ false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/getopts/src/lib.rs /^ false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/jobs/src/lib.rs /^ false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/kill/src/intercdep.rs /^ pub false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/pushd/src/lib.rs /^ false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/setattr/src/intercdep.rs /^ pub false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/source/src/lib.rs /^ false_case: *mut COMMAND,$/;" m struct:if_com +false_case builtins_rust/type/src/lib.rs /^ false_case: *mut COMMAND,$/;" m struct:if_com +false_case command.h /^ COMMAND *false_case; \/* What to do if the test returned zero. *\/$/;" m struct:if_com typeref:typename:COMMAND * +false_case r_bash/src/lib.rs /^ pub false_case: *mut COMMAND,$/;" m struct:if_com +false_case r_glob/src/lib.rs /^ pub false_case: *mut COMMAND,$/;" m struct:if_com +false_case r_readline/src/lib.rs /^ pub false_case: *mut COMMAND,$/;" m struct:if_com +family vendor/nix/src/sys/socket/addr.rs /^ fn family(&self) -> Option {$/;" P implementation:SockaddrLike +family vendor/nix/src/sys/socket/addr.rs /^ fn family(&self) -> Option {$/;" P interface:SockaddrLike +family vendor/nix/src/sys/socket/addr.rs /^ pub fn family(&self) -> AddressFamily {$/;" P implementation:SockAddr +fanotify_init vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn fanotify_init(flags: ::c_uint, event_f_flags: ::c_uint) -> ::c_int;$/;" f +fanotify_mark vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn fanotify_mark($/;" f +fanotify_mark vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn fanotify_mark($/;" f +fanotify_mark vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn fanotify_mark($/;" f +fanout vendor/futures-util/src/sink/mod.rs /^ fn fanout(self, other: Si) -> Fanout$/;" P interface:SinkExt +fanout vendor/futures-util/src/sink/mod.rs /^mod fanout;$/;" n +fanout_backpressure vendor/futures/tests/sink.rs /^fn fanout_backpressure() {$/;" f +fanout_smoke vendor/futures/tests/sink.rs /^fn fanout_smoke() {$/;" f +fapply variables.c /^fapply (func)$/;" f file: +fast vendor/once_cell/examples/regex.rs /^fn fast() {$/;" f +fatal_error CWRU/misc/errlist.c /^fatal_error()$/;" f +fatal_error array.c /^fatal_error(const char *s, ...)$/;" f typeref:typename:void +fatal_error error.c /^fatal_error (const char *format, ...)$/;" f typeref:typename:void +fatal_error hashlib.c /^fatal_error (const char *format, ...)$/;" f typeref:typename:void +fatal_error r_bash/src/lib.rs /^ pub fn fatal_error(arg1: *const ::std::os::raw::c_char, ...);$/;" f +fattach vendor/libc/src/unix/solarish/solaris.rs /^ pub fn fattach(fildes: ::c_int, path: *const ::c_char) -> ::c_int;$/;" f +fc.o builtins/Makefile.in /^fc.o: $(topdir)\/bashansi.h $(BASHINCDIR)\/ansi_stdlib.h $(BASHINCDIR)\/chartypes.h$/;" t +fc.o builtins/Makefile.in /^fc.o: $(topdir)\/bashhist.h $(topdir)\/parser.h$/;" t +fc.o builtins/Makefile.in /^fc.o: $(topdir)\/bashtypes.h $(BASHINCDIR)\/posixstat.h$/;" t +fc.o builtins/Makefile.in /^fc.o: $(topdir)\/builtins.h $(topdir)\/command.h $(srcdir)\/bashgetopt.h$/;" t +fc.o builtins/Makefile.in /^fc.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h $(topdir)\/error.h$/;" t +fc.o builtins/Makefile.in /^fc.o: $(topdir)\/flags.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $(topdir)\/conftypes.h$/;" t +fc.o builtins/Makefile.in /^fc.o: $(topdir)\/general.h $(topdir)\/xmalloc.h $(BASHINCDIR)\/maxpath.h$/;" t +fc.o builtins/Makefile.in /^fc.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +fc.o builtins/Makefile.in /^fc.o: $(topdir)\/subst.h $(topdir)\/externs.h $(topdir)\/shell.h $(topdir)\/syntax.h$/;" t +fc.o builtins/Makefile.in /^fc.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +fc.o builtins/Makefile.in /^fc.o: ..\/pathnames.h$/;" t +fc.o builtins/Makefile.in /^fc.o: fc.def$/;" t +fc_addhist builtins_rust/fc/src/lib.rs /^pub extern "C" fn fc_addhist(line: *mut c_char) {$/;" f +fc_execute_file builtins/evalfile.c /^fc_execute_file (filename)$/;" f +fc_execute_file builtins_rust/fc/src/lib.rs /^ fn fc_execute_file(filename: *const c_char) -> i32;$/;" f +fc_execute_file r_bash/src/lib.rs /^ pub fn fc_execute_file(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +fc_readline builtins_rust/fc/src/lib.rs /^pub extern "C" fn fc_readline(stream: *mut libc::FILE) -> *mut c_char {$/;" f +fchdir r_bash/src/lib.rs /^ pub fn fchdir(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fchdir r_glob/src/lib.rs /^ pub fn fchdir(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fchdir r_readline/src/lib.rs /^ pub fn fchdir(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fchdir vendor/libc/src/unix/mod.rs /^ pub fn fchdir(dirfd: ::c_int) -> ::c_int;$/;" f +fchdir vendor/libc/src/vxworks/mod.rs /^ pub fn fchdir(dirfd: ::c_int) -> ::c_int;$/;" f +fchflags vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn fchflags(fd: ::c_int, flags: ::c_uint) -> ::c_int;$/;" f +fchflags vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn fchflags(fd: ::c_int, flags: ::c_ulong) -> ::c_int;$/;" f +fchflags vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn fchflags(fd: ::c_int, flags: ::c_ulong) -> ::c_int;$/;" f +fchflags vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn fchflags(fd: ::c_int, flags: ::c_uint) -> ::c_int;$/;" f +fchmod r_bash/src/lib.rs /^ pub fn fchmod(__fd: ::std::os::raw::c_int, __mode: __mode_t) -> ::std::os::raw::c_int;$/;" f +fchmod r_readline/src/lib.rs /^ pub fn fchmod(__fd: ::std::os::raw::c_int, __mode: __mode_t) -> ::std::os::raw::c_int;$/;" f +fchmod vendor/libc/src/fuchsia/mod.rs /^ pub fn fchmod(fd: ::c_int, mode: mode_t) -> ::c_int;$/;" f +fchmod vendor/libc/src/unix/mod.rs /^ pub fn fchmod(fd: ::c_int, mode: mode_t) -> ::c_int;$/;" f +fchmod vendor/libc/src/vxworks/mod.rs /^ pub fn fchmod(attr1: ::c_int, attr2: ::mode_t) -> ::c_int;$/;" f +fchmod vendor/nix/src/sys/stat.rs /^pub fn fchmod(fd: RawFd, mode: Mode) -> Result<()> {$/;" f +fchmodat r_bash/src/lib.rs /^ pub fn fchmodat($/;" f +fchmodat r_readline/src/lib.rs /^ pub fn fchmodat($/;" f +fchmodat vendor/libc/src/fuchsia/mod.rs /^ pub fn fchmodat($/;" f +fchmodat vendor/libc/src/unix/mod.rs /^ pub fn fchmodat($/;" f +fchmodat vendor/nix/src/sys/stat.rs /^pub fn fchmodat($/;" f +fchown r_bash/src/lib.rs /^ pub fn fchown($/;" f +fchown r_glob/src/lib.rs /^ pub fn fchown($/;" f +fchown r_readline/src/lib.rs /^ pub fn fchown($/;" f +fchown vendor/libc/src/fuchsia/mod.rs /^ pub fn fchown(fd: ::c_int, owner: ::uid_t, group: ::gid_t) -> ::c_int;$/;" f +fchown vendor/libc/src/unix/mod.rs /^ pub fn fchown(fd: ::c_int, owner: ::uid_t, group: ::gid_t) -> ::c_int;$/;" f +fchown vendor/libc/src/vxworks/mod.rs /^ pub fn fchown(fd: ::c_int, owner: ::uid_t, group: ::gid_t) -> ::c_int;$/;" f +fchownat r_bash/src/lib.rs /^ pub fn fchownat($/;" f +fchownat r_glob/src/lib.rs /^ pub fn fchownat($/;" f +fchownat r_readline/src/lib.rs /^ pub fn fchownat($/;" f +fchownat vendor/libc/src/fuchsia/mod.rs /^ pub fn fchownat($/;" f +fchownat vendor/libc/src/unix/mod.rs /^ pub fn fchownat($/;" f +fclonefileat vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn fclonefileat($/;" f +fclose r_bash/src/lib.rs /^ pub fn fclose(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fclose r_readline/src/lib.rs /^ pub fn fclose(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fclose vendor/libc/src/fuchsia/mod.rs /^ pub fn fclose(file: *mut FILE) -> c_int;$/;" f +fclose vendor/libc/src/solid/mod.rs /^ pub fn fclose(arg1: *mut FILE) -> c_int;$/;" f +fclose vendor/libc/src/unix/mod.rs /^ pub fn fclose(file: *mut FILE) -> c_int;$/;" f +fclose vendor/libc/src/vxworks/mod.rs /^ pub fn fclose(file: *mut FILE) -> c_int;$/;" f +fclose vendor/libc/src/wasi.rs /^ pub fn fclose(f: *mut FILE) -> c_int;$/;" f +fclose vendor/libc/src/windows/mod.rs /^ pub fn fclose(file: *mut FILE) -> c_int;$/;" f +fcloseall r_bash/src/lib.rs /^ pub fn fcloseall() -> ::std::os::raw::c_int;$/;" f +fcloseall r_readline/src/lib.rs /^ pub fn fcloseall() -> ::std::os::raw::c_int;$/;" f +fcntl r_bash/src/lib.rs /^ pub fn fcntl($/;" f +fcntl vendor/libc/src/fuchsia/mod.rs /^ pub fn fcntl(fd: ::c_int, cmd: ::c_int, ...) -> ::c_int;$/;" f +fcntl vendor/libc/src/solid/mod.rs /^ pub fn fcntl(arg1: c_int, arg2: c_int, ...) -> c_int;$/;" f +fcntl vendor/libc/src/unix/mod.rs /^ pub fn fcntl(fd: ::c_int, cmd: ::c_int, ...) -> ::c_int;$/;" f +fcntl vendor/libc/src/vxworks/mod.rs /^ pub fn fcntl(fd: ::c_int, cmd: ::c_int, ...) -> ::c_int;$/;" f +fcntl vendor/libc/src/wasi.rs /^ pub fn fcntl(fd: ::c_int, cmd: ::c_int, ...) -> ::c_int;$/;" f +fcntl vendor/nix/src/lib.rs /^pub mod fcntl;$/;" n +fcntl64 r_bash/src/lib.rs /^ pub fn fcntl64($/;" f +fcopy lib/readline/examples/rlcat.c /^fcopy(fp)$/;" f file: +fcopyfile vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn fcopyfile($/;" f +fcvt r_bash/src/lib.rs /^ pub fn fcvt($/;" f +fcvt r_glob/src/lib.rs /^ pub fn fcvt($/;" f +fcvt r_readline/src/lib.rs /^ pub fn fcvt($/;" f +fcvt_r r_bash/src/lib.rs /^ pub fn fcvt_r($/;" f +fcvt_r r_glob/src/lib.rs /^ pub fn fcvt_r($/;" f +fcvt_r r_readline/src/lib.rs /^ pub fn fcvt_r($/;" f +fd builtins_rust/read/src/lib.rs /^ fd: i32,$/;" m struct:tty_save +fd vendor/nix/src/sys/aio.rs /^ fn fd(&self) -> RawFd;$/;" P interface:Aio +fd vendor/nix/src/sys/inotify.rs /^ fd: RawFd$/;" m struct:Inotify +fd vendor/nix/src/sys/timerfd.rs /^ fd: RawFd,$/;" m struct:TimerFd +fd_bitmap r_bash/src/lib.rs /^pub struct fd_bitmap {$/;" s +fd_bitmap shell.h /^struct fd_bitmap {$/;" s +fd_is_bash_input builtins_rust/read/src/intercdep.rs /^ pub fn fd_is_bash_input(arg1: c_int) -> c_int;$/;" f +fd_is_bash_input input.c /^fd_is_bash_input (fd)$/;" f +fd_is_bash_input r_bash/src/lib.rs /^ pub fn fd_is_bash_input(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fd_is_seekable input.c /^#define fd_is_seekable(/;" d file: +fd_ispipe general.c /^fd_ispipe (fd)$/;" f +fd_ispipe r_bash/src/lib.rs /^ pub fn fd_ispipe(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fd_ispipe r_glob/src/lib.rs /^ pub fn fd_ispipe(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fd_ispipe r_readline/src/lib.rs /^ pub fn fd_ispipe(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fd_mask r_bash/src/lib.rs /^pub type fd_mask = __fd_mask;$/;" t +fd_mask r_glob/src/lib.rs /^pub type fd_mask = __fd_mask;$/;" t +fd_mask r_readline/src/lib.rs /^pub type fd_mask = __fd_mask;$/;" t +fd_mask vendor/libc/src/unix/haiku/mod.rs /^pub type fd_mask = u32;$/;" t +fd_set r_bash/src/lib.rs /^pub struct fd_set {$/;" s +fd_set r_glob/src/lib.rs /^pub struct fd_set {$/;" s +fd_set r_readline/src/lib.rs /^pub struct fd_set {$/;" s +fd_to_buffered_stream input.c /^fd_to_buffered_stream (fd)$/;" f +fd_to_buffered_stream r_bash/src/lib.rs /^ pub fn fd_to_buffered_stream(arg1: ::std::os::raw::c_int) -> *mut BUFFERED_STREAM;$/;" f +fdatasync r_bash/src/lib.rs /^ pub fn fdatasync(__fildes: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fdatasync r_glob/src/lib.rs /^ pub fn fdatasync(__fildes: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fdatasync r_readline/src/lib.rs /^ pub fn fdatasync(__fildes: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fdatasync vendor/libc/src/fuchsia/mod.rs /^ pub fn fdatasync(fd: ::c_int) -> ::c_int;$/;" f +fdatasync vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs /^ pub fn fdatasync(fd: ::c_int) -> ::c_int;$/;" f +fdatasync vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^ pub fn fdatasync(fd: ::c_int) -> ::c_int;$/;" f +fdatasync vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn fdatasync(fd: ::c_int) -> ::c_int;$/;" f +fdatasync vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn fdatasync(fd: ::c_int) -> ::c_int;$/;" f +fdatasync vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn fdatasync(fd: ::c_int) -> ::c_int;$/;" f +fdatasync vendor/libc/src/unix/linux_like/mod.rs /^ pub fn fdatasync(fd: ::c_int) -> ::c_int;$/;" f +fdatasync vendor/libc/src/unix/solarish/mod.rs /^ pub fn fdatasync(fd: ::c_int) -> ::c_int;$/;" f +fdatasync vendor/libc/src/wasi.rs /^ pub fn fdatasync(fd: ::c_int) -> ::c_int;$/;" f +fdopen r_bash/src/lib.rs /^ pub fn fdopen(__fd: ::std::os::raw::c_int, __modes: *const ::std::os::raw::c_char)$/;" f +fdopen r_readline/src/lib.rs /^ pub fn fdopen(__fd: ::std::os::raw::c_int, __modes: *const ::std::os::raw::c_char)$/;" f +fdopen vendor/libc/src/fuchsia/mod.rs /^ pub fn fdopen(fd: ::c_int, mode: *const c_char) -> *mut ::FILE;$/;" f +fdopen vendor/libc/src/solid/mod.rs /^ pub fn fdopen(arg1: c_int, arg2: *const c_char) -> *mut FILE;$/;" f +fdopen vendor/libc/src/unix/mod.rs /^ pub fn fdopen(fd: ::c_int, mode: *const c_char) -> *mut ::FILE;$/;" f +fdopen vendor/libc/src/vxworks/mod.rs /^ pub fn fdopen(fd: ::c_int, mode: *const c_char) -> *mut ::FILE;$/;" f +fdopen vendor/libc/src/wasi.rs /^ pub fn fdopen(fd: ::c_int, mode: *const c_char) -> *mut ::FILE;$/;" f +fdopen vendor/libc/src/windows/mod.rs /^ pub fn fdopen(fd: ::c_int, mode: *const c_char) -> *mut ::FILE;$/;" f +fdopendir r_bash/src/lib.rs /^ pub fn fdopendir(__fd: ::std::os::raw::c_int) -> *mut DIR;$/;" f +fdopendir r_readline/src/lib.rs /^ pub fn fdopendir(__fd: ::std::os::raw::c_int) -> *mut DIR;$/;" f +fdopendir vendor/libc/src/fuchsia/mod.rs /^ pub fn fdopendir(fd: ::c_int) -> *mut ::DIR;$/;" f +fdopendir vendor/libc/src/wasi.rs /^ pub fn fdopendir(fd: ::c_int) -> *mut ::DIR;$/;" f +fds vendor/nix/src/sys/select.rs /^ pub fn fds(&self, highest: Option) -> Fds {$/;" P implementation:FdSet +fds_bits r_bash/src/lib.rs /^ pub fds_bits: [__fd_mask; 16usize],$/;" m struct:fd_set +fds_bits r_glob/src/lib.rs /^ pub fds_bits: [__fd_mask; 16usize],$/;" m struct:fd_set +fds_bits r_readline/src/lib.rs /^ pub fds_bits: [__fd_mask; 16usize],$/;" m struct:fd_set +fdset_clear vendor/nix/src/sys/select.rs /^ fn fdset_clear() {$/;" f module:tests +fdset_fds vendor/nix/src/sys/select.rs /^ fn fdset_fds() {$/;" f module:tests +fdset_highest vendor/nix/src/sys/select.rs /^ fn fdset_highest() {$/;" f module:tests +fdset_insert vendor/nix/src/sys/select.rs /^ fn fdset_insert() {$/;" f module:tests +fdset_remove vendor/nix/src/sys/select.rs /^ fn fdset_remove() {$/;" f module:tests +feature_allowed vendor/proc-macro2/build.rs /^fn feature_allowed(feature: &str) -> bool {$/;" f +features target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" s +features target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" s +features target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" s +features target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" s +features target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" s +features target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" s +features target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" s +features target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" s +features target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" s +features target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" s +features target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" s +features target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" s +features target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" s +features target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" s +features target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" s +features target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" s +features target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" s +features target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" s +features target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" s +features target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" s +features target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" s +features target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" s +features target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" s +features target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" s +features target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" s +features target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" s +features target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" s +features target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" s +features target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" s +features target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s +features target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" s +features target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" s +features target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" s +features target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" s +features target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" s +features target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" s +features target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" s +features target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" s +features target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" s +features target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" s +features target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" s +features target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" s +features target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" s +features target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" s +features target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" s +features target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" s +features target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" s +features target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" s +features target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" s +features target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" s +features target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" s +features target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" s +features target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" s +features target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" s +features target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" s +features target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" s +features target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" s +features target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" s +features target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" s +features target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" s +features target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" s +features target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" s +features target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" s +features target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" s +features target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" s +features target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" s +features target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" s +features target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" s +features target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" s +features target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" s +features target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" s +features target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" s +features target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" s +features target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" s +features target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" s +features target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" s +features target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" s +features target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" s +features target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" s +features target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" s +features target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" s +features target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" s +features target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" s +features target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" s +features target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" s +features target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" s +features target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" s +features target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" s +features target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" s +features target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" s +features target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" s +features target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" s +features target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" s +features target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" s +features target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" s +features target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" s +features target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" s +features target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" s +features target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" s +features target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" s +features target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" s +features target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" s +features target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" s +features target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" s +features target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" s +features target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" s +features target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" s +features target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" s +features target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" s +features target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" s +features target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" s +features target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" s +features target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" s +features target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" s +features target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" s +features target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" s +features target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" s +features target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" s +features target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" s +features target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" s +features target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" s +features target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" s +features target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" s +features target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" s +features target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" s +features target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" s +features target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" s +features target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" s +features target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" s +features target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" s +features target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" s +features target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" s +features vendor/memchr/src/tests/x86_64-soft_float.json /^ "features": "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2,+soft-fl/;" s +feed vendor/futures-util/src/sink/mod.rs /^ fn feed(&mut self, item: Item) -> Feed<'_, Self, Item>$/;" P interface:SinkExt +feed vendor/futures-util/src/sink/mod.rs /^mod feed;$/;" n +feed vendor/futures-util/src/sink/send.rs /^ feed: Feed<'a, Si, Item>,$/;" m struct:Send +feof lib/intl/localealias.c /^# define feof(/;" d file: +feof r_bash/src/lib.rs /^ pub fn feof(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +feof r_readline/src/lib.rs /^ pub fn feof(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +feof vendor/libc/src/fuchsia/mod.rs /^ pub fn feof(stream: *mut FILE) -> c_int;$/;" f +feof vendor/libc/src/solid/mod.rs /^ pub fn feof(arg1: *mut FILE) -> c_int;$/;" f +feof vendor/libc/src/unix/mod.rs /^ pub fn feof(stream: *mut FILE) -> c_int;$/;" f +feof vendor/libc/src/vxworks/mod.rs /^ pub fn feof(stream: *mut FILE) -> c_int;$/;" f +feof vendor/libc/src/wasi.rs /^ pub fn feof(f: *mut FILE) -> c_int;$/;" f +feof vendor/libc/src/windows/mod.rs /^ pub fn feof(stream: *mut FILE) -> c_int;$/;" f +feof_unlocked r_bash/src/lib.rs /^ pub fn feof_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +feof_unlocked r_readline/src/lib.rs /^ pub fn feof_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +ferror r_bash/src/lib.rs /^ pub fn ferror(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +ferror r_readline/src/lib.rs /^ pub fn ferror(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +ferror vendor/libc/src/fuchsia/mod.rs /^ pub fn ferror(stream: *mut FILE) -> c_int;$/;" f +ferror vendor/libc/src/solid/mod.rs /^ pub fn ferror(arg1: *mut FILE) -> c_int;$/;" f +ferror vendor/libc/src/unix/mod.rs /^ pub fn ferror(stream: *mut FILE) -> c_int;$/;" f +ferror vendor/libc/src/vxworks/mod.rs /^ pub fn ferror(stream: *mut FILE) -> c_int;$/;" f +ferror vendor/libc/src/wasi.rs /^ pub fn ferror(f: *mut FILE) -> c_int;$/;" f +ferror vendor/libc/src/windows/mod.rs /^ pub fn ferror(stream: *mut FILE) -> c_int;$/;" f +ferror_unlocked r_bash/src/lib.rs /^ pub fn ferror_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +ferror_unlocked r_readline/src/lib.rs /^ pub fn ferror_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fetched r_jobs/src/lib.rs /^ static mut fetched: c_int = 0 as c_int;$/;" v function:get_original_tty_job_signals +fexecve r_bash/src/lib.rs /^ pub fn fexecve($/;" f +fexecve r_glob/src/lib.rs /^ pub fn fexecve($/;" f +fexecve r_readline/src/lib.rs /^ pub fn fexecve($/;" f +fexecve vendor/libc/src/fuchsia/mod.rs /^ pub fn fexecve($/;" f +fexecve vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn fexecve($/;" f +fexecve vendor/libc/src/unix/linux_like/mod.rs /^ pub fn fexecve($/;" f +fexecve vendor/libc/src/unix/newlib/mod.rs /^ pub fn fexecve($/;" f +fexecve vendor/libc/src/unix/solarish/solaris.rs /^ pub fn fexecve($/;" f +ffi_len vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_len(&mut self) -> *mut socklen_t {$/;" P implementation:GetBool +ffi_len vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_len(&mut self) -> *mut socklen_t {$/;" P implementation:GetOsString +ffi_len vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_len(&mut self) -> *mut socklen_t {$/;" P implementation:GetStruct +ffi_len vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_len(&mut self) -> *mut socklen_t {$/;" P implementation:GetU8 +ffi_len vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_len(&mut self) -> *mut socklen_t {$/;" P implementation:GetUsize +ffi_len vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_len(&mut self) -> *mut socklen_t;$/;" P interface:Get +ffi_len vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_len(&self) -> socklen_t {$/;" P implementation:SetBool +ffi_len vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_len(&self) -> socklen_t {$/;" P implementation:SetOsString +ffi_len vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_len(&self) -> socklen_t {$/;" P implementation:SetStruct +ffi_len vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_len(&self) -> socklen_t {$/;" P implementation:SetU8 +ffi_len vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_len(&self) -> socklen_t {$/;" P implementation:SetUsize +ffi_len vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_len(&self) -> socklen_t;$/;" P interface:Set +ffi_ptr vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_ptr(&mut self) -> *mut c_void {$/;" P implementation:GetBool +ffi_ptr vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_ptr(&mut self) -> *mut c_void {$/;" P implementation:GetOsString +ffi_ptr vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_ptr(&mut self) -> *mut c_void {$/;" P implementation:GetStruct +ffi_ptr vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_ptr(&mut self) -> *mut c_void {$/;" P implementation:GetU8 +ffi_ptr vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_ptr(&mut self) -> *mut c_void {$/;" P implementation:GetUsize +ffi_ptr vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_ptr(&mut self) -> *mut c_void;$/;" P interface:Get +ffi_ptr vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_ptr(&self) -> *const c_void {$/;" P implementation:SetBool +ffi_ptr vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_ptr(&self) -> *const c_void {$/;" P implementation:SetOsString +ffi_ptr vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_ptr(&self) -> *const c_void {$/;" P implementation:SetStruct +ffi_ptr vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_ptr(&self) -> *const c_void {$/;" P implementation:SetU8 +ffi_ptr vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_ptr(&self) -> *const c_void {$/;" P implementation:SetUsize +ffi_ptr vendor/nix/src/sys/socket/sockopt.rs /^ fn ffi_ptr(&self) -> *const c_void;$/;" P interface:Set +fflags vendor/nix/src/sys/event.rs /^ pub fn fflags(&self) -> FilterFlag {$/;" P implementation:KEvent +fflags_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type fflags_t = u32;$/;" t +fflush r_bash/src/lib.rs /^ pub fn fflush(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fflush r_readline/src/lib.rs /^ pub fn fflush(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fflush vendor/libc/src/fuchsia/mod.rs /^ pub fn fflush(file: *mut FILE) -> c_int;$/;" f +fflush vendor/libc/src/solid/mod.rs /^ pub fn fflush(arg1: *mut FILE) -> c_int;$/;" f +fflush vendor/libc/src/unix/mod.rs /^ pub fn fflush(file: *mut FILE) -> c_int;$/;" f +fflush vendor/libc/src/vxworks/mod.rs /^ pub fn fflush(file: *mut FILE) -> c_int;$/;" f +fflush vendor/libc/src/wasi.rs /^ pub fn fflush(f: *mut FILE) -> c_int;$/;" f +fflush vendor/libc/src/windows/mod.rs /^ pub fn fflush(file: *mut FILE) -> c_int;$/;" f +fflush_unlocked r_bash/src/lib.rs /^ pub fn fflush_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fflush_unlocked r_readline/src/lib.rs /^ pub fn fflush_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +ffs r_bash/src/lib.rs /^ pub fn ffs(__i: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +ffs r_glob/src/lib.rs /^ pub fn ffs(__i: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +ffs r_readline/src/lib.rs /^ pub fn ffs(__i: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +ffs vendor/libc/src/solid/mod.rs /^ pub fn ffs(arg1: c_int) -> c_int;$/;" f +ffs vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn ffs(value: ::c_int) -> ::c_int;$/;" f +ffsl r_bash/src/lib.rs /^ pub fn ffsl(__l: ::std::os::raw::c_long) -> ::std::os::raw::c_int;$/;" f +ffsl r_glob/src/lib.rs /^ pub fn ffsl(__l: ::std::os::raw::c_long) -> ::std::os::raw::c_int;$/;" f +ffsl r_readline/src/lib.rs /^ pub fn ffsl(__l: ::std::os::raw::c_long) -> ::std::os::raw::c_int;$/;" f +ffsl vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn ffsl(value: ::c_long) -> ::c_int;$/;" f +ffsll r_bash/src/lib.rs /^ pub fn ffsll(__ll: ::std::os::raw::c_longlong) -> ::std::os::raw::c_int;$/;" f +ffsll r_glob/src/lib.rs /^ pub fn ffsll(__ll: ::std::os::raw::c_longlong) -> ::std::os::raw::c_int;$/;" f +ffsll r_readline/src/lib.rs /^ pub fn ffsll(__ll: ::std::os::raw::c_longlong) -> ::std::os::raw::c_int;$/;" f +ffsll vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn ffsll(value: ::c_longlong) -> ::c_int;$/;" f +fg_bg.o builtins/Makefile.in /^fg_bg.o: $(topdir)\/bashtypes.h $(srcdir)\/bashgetopt.h$/;" t +fg_bg.o builtins/Makefile.in /^fg_bg.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +fg_bg.o builtins/Makefile.in /^fg_bg.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +fg_bg.o builtins/Makefile.in /^fg_bg.o: $(topdir)\/execute_cmd.h$/;" t +fg_bg.o builtins/Makefile.in /^fg_bg.o: $(topdir)\/jobs.h ..\/pathnames.h$/;" t +fg_bg.o builtins/Makefile.in /^fg_bg.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +fg_bg.o builtins/Makefile.in /^fg_bg.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h /;" t +fg_bg.o builtins/Makefile.in /^fg_bg.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +fg_bg.o builtins/Makefile.in /^fg_bg.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +fg_bg.o builtins/Makefile.in /^fg_bg.o: fg_bg.def$/;" t +fgetattrlist vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn fgetattrlist($/;" f +fgetc r_bash/src/lib.rs /^ pub fn fgetc(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fgetc r_readline/src/lib.rs /^ pub fn fgetc(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fgetc vendor/libc/src/fuchsia/mod.rs /^ pub fn fgetc(stream: *mut FILE) -> c_int;$/;" f +fgetc vendor/libc/src/solid/mod.rs /^ pub fn fgetc(arg1: *mut FILE) -> c_int;$/;" f +fgetc vendor/libc/src/unix/mod.rs /^ pub fn fgetc(stream: *mut FILE) -> c_int;$/;" f +fgetc vendor/libc/src/vxworks/mod.rs /^ pub fn fgetc(stream: *mut FILE) -> c_int;$/;" f +fgetc vendor/libc/src/wasi.rs /^ pub fn fgetc(f: *mut FILE) -> c_int;$/;" f +fgetc vendor/libc/src/windows/mod.rs /^ pub fn fgetc(stream: *mut FILE) -> c_int;$/;" f +fgetc_unlocked r_bash/src/lib.rs /^ pub fn fgetc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fgetc_unlocked r_readline/src/lib.rs /^ pub fn fgetc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fgetgrent_r vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn fgetgrent_r($/;" f +fgetpos r_bash/src/lib.rs /^ pub fn fgetpos(__stream: *mut FILE, __pos: *mut fpos_t) -> ::std::os::raw::c_int;$/;" f +fgetpos r_readline/src/lib.rs /^ pub fn fgetpos(__stream: *mut FILE, __pos: *mut fpos_t) -> ::std::os::raw::c_int;$/;" f +fgetpos vendor/libc/src/fuchsia/mod.rs /^ pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int;$/;" f +fgetpos vendor/libc/src/solid/mod.rs /^ pub fn fgetpos(arg1: *mut FILE, arg2: *mut fpos_t) -> c_int;$/;" f +fgetpos vendor/libc/src/unix/mod.rs /^ pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int;$/;" f +fgetpos vendor/libc/src/vxworks/mod.rs /^ pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int;$/;" f +fgetpos vendor/libc/src/wasi.rs /^ pub fn fgetpos(f: *mut FILE, pos: *mut fpos_t) -> c_int;$/;" f +fgetpos vendor/libc/src/windows/mod.rs /^ pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int;$/;" f +fgetpos64 r_bash/src/lib.rs /^ pub fn fgetpos64(__stream: *mut FILE, __pos: *mut fpos64_t) -> ::std::os::raw::c_int;$/;" f +fgetpos64 r_readline/src/lib.rs /^ pub fn fgetpos64(__stream: *mut FILE, __pos: *mut fpos64_t) -> ::std::os::raw::c_int;$/;" f +fgetpos64 vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn fgetpos64(stream: *mut ::FILE, ptr: *mut fpos64_t) -> ::c_int;$/;" f +fgetpos64 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn fgetpos64(stream: *mut ::FILE, ptr: *mut fpos64_t) -> ::c_int;$/;" f +fgetpwent_r vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn fgetpwent_r($/;" f +fgets lib/intl/localealias.c /^# define fgets(/;" d file: +fgets r_bash/src/lib.rs /^ pub fn fgets($/;" f +fgets r_readline/src/lib.rs /^ pub fn fgets($/;" f +fgets vendor/libc/src/fuchsia/mod.rs /^ pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char;$/;" f +fgets vendor/libc/src/solid/mod.rs /^ pub fn fgets(arg1: *mut c_char, arg2: c_int, arg3: *mut FILE) -> *mut c_char;$/;" f +fgets vendor/libc/src/unix/mod.rs /^ pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char;$/;" f +fgets vendor/libc/src/vxworks/mod.rs /^ pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char;$/;" f +fgets vendor/libc/src/wasi.rs /^ pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char;$/;" f +fgets vendor/libc/src/windows/mod.rs /^ pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char;$/;" f +fgets_unlocked r_bash/src/lib.rs /^ pub fn fgets_unlocked($/;" f +fgets_unlocked r_readline/src/lib.rs /^ pub fn fgets_unlocked($/;" f +fgetspent vendor/libc/src/unix/haiku/mod.rs /^ pub fn fgetspent(file: *mut ::FILE) -> *mut spwd;$/;" f +fgetspent_r vendor/libc/src/unix/haiku/mod.rs /^ pub fn fgetspent_r($/;" f +fgetspent_r vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn fgetspent_r($/;" f +fgetwc r_bash/src/lib.rs /^ pub fn fgetwc(__stream: *mut __FILE) -> wint_t;$/;" f +fgetwc r_glob/src/lib.rs /^ pub fn fgetwc(__stream: *mut __FILE) -> wint_t;$/;" f +fgetwc r_readline/src/lib.rs /^ pub fn fgetwc(__stream: *mut __FILE) -> wint_t;$/;" f +fgetwc_unlocked r_bash/src/lib.rs /^ pub fn fgetwc_unlocked(__stream: *mut __FILE) -> wint_t;$/;" f +fgetwc_unlocked r_glob/src/lib.rs /^ pub fn fgetwc_unlocked(__stream: *mut __FILE) -> wint_t;$/;" f +fgetwc_unlocked r_readline/src/lib.rs /^ pub fn fgetwc_unlocked(__stream: *mut __FILE) -> wint_t;$/;" f +fgetws r_bash/src/lib.rs /^ pub fn fgetws($/;" f +fgetws r_glob/src/lib.rs /^ pub fn fgetws($/;" f +fgetws r_readline/src/lib.rs /^ pub fn fgetws($/;" f +fgetws_unlocked r_bash/src/lib.rs /^ pub fn fgetws_unlocked($/;" f +fgetws_unlocked r_glob/src/lib.rs /^ pub fn fgetws_unlocked($/;" f +fgetws_unlocked r_readline/src/lib.rs /^ pub fn fgetws_unlocked($/;" f +fgetxattr vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn fgetxattr($/;" f +fgetxattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn fgetxattr($/;" f +fgetxattr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn fgetxattr($/;" f +fgetxattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn fgetxattr($/;" f +fhandle_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type fhandle_t = fhandle;$/;" t +fhopen vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn fhopen(fhp: *const fhandle_t, flags: ::c_int) -> ::c_int;$/;" f +fhstat vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn fhstat(fhp: *const fhandle, buf: *mut ::stat) -> ::c_int;$/;" f +fhstatfs vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn fhstatfs(fhp: *const fhandle_t, buf: *mut ::statfs) -> ::c_int;$/;" f +fibersapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "fibersapi")] pub mod fibersapi;$/;" n +field1 vendor/pin-utils/tests/projection.rs /^ field1: T1,$/;" m struct:Foo +field2 vendor/pin-utils/tests/projection.rs /^ field2: T2,$/;" m struct:Foo +field_i vendor/quote/tests/test.rs /^ fn field_i(i: usize) -> Ident {$/;" f function:test_closure +field_pat vendor/syn/src/pat.rs /^ fn field_pat(input: ParseStream) -> Result {$/;" f module:parsing +fielddelim lib/readline/histexpand.c /^#define fielddelim(/;" d file: +fields vendor/thiserror-impl/src/ast.rs /^ pub fields: Vec>,$/;" m struct:Struct +fields vendor/thiserror-impl/src/ast.rs /^ pub fields: Vec>,$/;" m struct:Variant +fields_pat vendor/thiserror-impl/src/expand.rs /^fn fields_pat(fields: &[Field]) -> TokenStream {$/;" f +fieldsym support/man2html.c /^static char escapesym = '\\\\', nobreaksym = '\\'', controlsym = '.', fieldsym = 0, padsym = 0;$/;" v typeref:typename:char file: +fifo lib/readline/colors.h /^ fifo,$/;" e enum:filetype +fifo_list subst.c /^static struct temp_fifo *fifo_list = (struct temp_fifo *)NULL;$/;" v typeref:struct:temp_fifo * file: +fifo_list_size subst.c /^static int fifo_list_size;$/;" v typeref:typename:int file: +fifos_pending r_bash/src/lib.rs /^ pub fn fifos_pending() -> ::std::os::raw::c_int;$/;" f +fifos_pending subst.c /^fifos_pending ()$/;" f typeref:typename:int +fignore bashline.c /^static struct ignorevar fignore =$/;" v typeref:struct:ignorevar file: +file input.h /^ FILE *file;$/;" m union:__anon9f26d24b010a typeref:typename:FILE * +file lib/malloc/table.h /^ const char *file;$/;" m struct:ma_table typeref:typename:const char * +file lib/malloc/table.h /^ const char *file;$/;" m struct:mr_table typeref:typename:const char * +file subst.c /^ char *file;$/;" m struct:temp_fifo typeref:typename:char * file: +file vendor/syn/src/lib.rs /^mod file;$/;" n +file vendor/thiserror/tests/test_path.rs /^ file: Path,$/;" m struct:StructPath +file vendor/thiserror/tests/test_path.rs /^ file: PathBuf,$/;" m struct:StructPathBuf +file_access_date_changed mailcheck.c /^file_access_date_changed (i)$/;" f file: +file_error builtins/mkbuiltins.c /^file_error (filename)$/;" f +file_error builtins_rust/exec/src/lib.rs /^ fn file_error(filename: *mut c_char);$/;" f +file_error error.c /^file_error (filename)$/;" f +file_error r_bash/src/lib.rs /^ pub fn file_error(arg1: *const ::std::os::raw::c_char);$/;" f +file_exists general.c /^file_exists (fn)$/;" f +file_exists r_bash/src/lib.rs /^ pub fn file_exists(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +file_exists r_glob/src/lib.rs /^ pub fn file_exists(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +file_exists r_readline/src/lib.rs /^ pub fn file_exists(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +file_exits r_bashhist/src/lib.rs /^ fn file_exits(_:*const c_char) -> c_int;$/;" f +file_handle r_bash/src/lib.rs /^pub struct file_handle {$/;" s +file_has_grown mailcheck.c /^file_has_grown (i)$/;" f file: +file_inode builtins_rust/hash/src/lib.rs /^unsafe fn file_inode(pathname: &str, pathname2: &str) -> std::io::Result<()> {$/;" f +file_isdir builtins_rust/exec/src/lib.rs /^ fn file_isdir(f: *const c_char) -> i32;$/;" f +file_isdir general.c /^file_isdir (fn)$/;" f +file_isdir r_bash/src/lib.rs /^ pub fn file_isdir(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +file_isdir r_glob/src/lib.rs /^ pub fn file_isdir(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +file_isdir r_readline/src/lib.rs /^ pub fn file_isdir(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +file_iswdir general.c /^file_iswdir (fn)$/;" f +file_iswdir r_bash/src/lib.rs /^ pub fn file_iswdir(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +file_iswdir r_glob/src/lib.rs /^ pub fn file_iswdir(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +file_iswdir r_readline/src/lib.rs /^ pub fn file_iswdir(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +file_mod_date_changed mailcheck.c /^file_mod_date_changed (i)$/;" f file: +file_name vendor/nix/src/dir.rs /^ pub fn file_name(&self) -> &ffi::CStr {$/;" P implementation:Entry +file_size mailcheck.c /^ off_t file_size;$/;" m struct:_fileinfo typeref:typename:off_t file: +file_status builtins_rust/type/src/lib.rs /^ fn file_status(status: *const libc::c_char) -> i32;$/;" f +file_status findcmd.c /^file_status (name)$/;" f +file_status r_bash/src/lib.rs /^ pub fn file_status(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +file_to_lose_on findcmd.c /^static char *file_to_lose_on;$/;" v typeref:typename:char * file: +file_type vendor/nix/src/dir.rs /^ pub fn file_type(&self) -> Option {$/;" P implementation:Entry +fileapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "fileapi")] pub mod fileapi;$/;" n +filecomp test.c /^filecomp (s, t, op)$/;" f file: +fileinfo vendor/proc-macro2/src/fallback.rs /^ fn fileinfo(&self, span: Span) -> &FileInfo {$/;" P implementation:SourceMap +fileman lib/readline/examples/Makefile /^fileman: fileman.o$/;" t +fileman.o lib/readline/examples/Makefile /^fileman.o: fileman.c$/;" t +fileman_completion lib/readline/examples/fileman.c /^fileman_completion (text, start, end)$/;" f +filename builtins/mkbuiltins.c /^ char *filename; \/* The name of the input def file. *\/$/;" m struct:__anon69e836710308 typeref:typename:char * file: +filename command.h /^ WORD_DESC *filename; \/* filename to redirect to. *\/$/;" m union:__anon3aaf009a010a typeref:typename:WORD_DESC * +filename lib/intl/loadinfo.h /^ const char *filename;$/;" m struct:loaded_l10nfile typeref:typename:const char * +filename_bstab bashline.c /^static char filename_bstab[256];$/;" v typeref:typename:char[256] file: +filename_completion_function lib/readline/compat.c /^filename_completion_function (const char *s, int i)$/;" f typeref:typename:char * +filename_completion_ignore bashline.c /^filename_completion_ignore (names)$/;" f file: +fileno r_bash/src/lib.rs /^ pub fn fileno(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fileno r_readline/src/lib.rs /^ pub fn fileno(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fileno vendor/libc/src/fuchsia/mod.rs /^ pub fn fileno(stream: *mut ::FILE) -> ::c_int;$/;" f +fileno vendor/libc/src/solid/mod.rs /^ pub fn fileno(arg1: *mut FILE) -> c_int;$/;" f +fileno vendor/libc/src/unix/mod.rs /^ pub fn fileno(stream: *mut ::FILE) -> ::c_int;$/;" f +fileno vendor/libc/src/vxworks/mod.rs /^ pub fn fileno(stream: *mut ::FILE) -> ::c_int;$/;" f +fileno vendor/libc/src/wasi.rs /^ pub fn fileno(stream: *mut ::FILE) -> ::c_int;$/;" f +fileno vendor/libc/src/windows/mod.rs /^ pub fn fileno(stream: *mut ::FILE) -> ::c_int;$/;" f +fileno_unlocked r_bash/src/lib.rs /^ pub fn fileno_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fileno_unlocked r_readline/src/lib.rs /^ pub fn fileno_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +filenum lib/sh/tmpfile.c /^static unsigned long filenum = 1L;$/;" v typeref:typename:unsigned long file: +files vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" o +files vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" o +files vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" o +files vendor/cfg-if/.cargo-checksum.json /^{"files":{"Cargo.toml":"5b2a8f6e5256957c029cf3a8912d51438e7faa5891c5c102c312f6d4599c1f00","LICEN/;" o +files vendor/chunky-vec/.cargo-checksum.json /^{"files":{"Cargo.toml":"3ab88cdacffa2756abe4460dda1ef403b304e79f814a2ec71b9c9a013dce2bf6","LICEN/;" o +files vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" o +files vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" o +files vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" o +files vendor/fluent-langneg/.cargo-checksum.json /^{"files":{"Cargo.toml":"1b11d8d30fe978704012e27981f8d50a3462319594b54ed2e71eaf85284d61eb","READM/;" o +files vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" o +files vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" o +files vendor/fluent/.cargo-checksum.json /^{"files":{"Cargo.toml":"90672342000bb7f84bee3d9517ddf6d3f32f8e4b4fd38271c67855112456db05","LICEN/;" o +files vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" o +files vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" o +files vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" o +files vendor/futures-io/.cargo-checksum.json /^{"files":{"Cargo.toml":"e54d638578924483b00b5b20bbd8bf29b5166de08d8176122a7c07b04ff314fd","LICEN/;" o +files vendor/futures-macro/.cargo-checksum.json /^{"files":{"Cargo.toml":"0af05d99a0144689032178763c2a88016e428451fae7a9d0d8fdca3063514783","LICEN/;" o +files vendor/futures-sink/.cargo-checksum.json /^{"files":{"Cargo.toml":"8e37d96331ae8a6db64a6aab22e9924ceeacc4f07595c1ea81ea086c002ebd2f","LICEN/;" o +files vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" o +files vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" o +files vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" o +files vendor/intl-memoizer/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f28af47927c54fd8ff3adbfcc4b0e9ea849a3b2a544289dd6be64a7aafb8ca6","LICEN/;" o +files vendor/intl_pluralrules/.cargo-checksum.json /^{"files":{"Cargo.toml":"3b7451d96ed662827dd4163d64d96840fee1c4241c2480b8cdd91ef156ad7896","READM/;" o +files vendor/lazy_static/.cargo-checksum.json /^{"files":{"Cargo.toml":"05e37a4e63dc4a495998bb5133252a51d671c4e99061a6342089ed6eab43978a","LICEN/;" o +files vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" o +files vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" o +files vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" o +files vendor/memoffset/.cargo-checksum.json /^{"files":{"Cargo.toml":"2556143c764ef2315fe44ff0ec43af47ca70b260fd64aa53f57dc42760d7132d","LICEN/;" o +files vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" o +files vendor/nix/src/sys/statfs.rs /^ pub fn files(&self) -> libc::c_long {$/;" P implementation:Statfs +files vendor/nix/src/sys/statfs.rs /^ pub fn files(&self) -> libc::c_ulong {$/;" P implementation:Statfs +files vendor/nix/src/sys/statfs.rs /^ pub fn files(&self) -> libc::fsfilcnt_t {$/;" P implementation:Statfs +files vendor/nix/src/sys/statfs.rs /^ pub fn files(&self) -> u64 {$/;" P implementation:Statfs +files vendor/nix/src/sys/statvfs.rs /^ pub fn files(&self) -> libc::fsfilcnt_t {$/;" P implementation:Statvfs +files vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" o +files vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" o +files vendor/pin-utils/.cargo-checksum.json /^{"files":{"Cargo.toml":"0f8296bda5b928d57bb84443422f21db3aa35d6873ce651297634d80c183dc6b","LICEN/;" o +files vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" o +files vendor/proc-macro2/src/fallback.rs /^ files: Vec,$/;" m struct:SourceMap +files vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" o +files vendor/rustc-hash/.cargo-checksum.json /^{"files":{"CODE_OF_CONDUCT.md":"edca092fde496419a9f1ba640048aa0270b62dfea576cd3175f0b53e3c230470/;" o +files vendor/self_cell/.cargo-checksum.json /^{"files":{"Cargo.toml":"ab60ad0024cea3e0c60fc4d116adc7fae35d5f85b042d285bba65f22c42407d5","LICEN/;" o +files vendor/slab/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"ae4c54789e1055543317a6812ac11644d0586883dee8f790119e4cef244b1b8e","Car/;" o +files vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" o +files vendor/stable_deref_trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"5a8352eba01791ecee28b37cfe1324fa48db52e35023b23a4f07ca84267abfd6","LICEN/;" o +files vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" o +files vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" o +files vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" o +files vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" o +files vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" o +files vendor/type-map/.cargo-checksum.json /^{"files":{"Cargo.toml":"b9de957b7180f3784f79522b1a108b6c9e9f6bb16a2d089b4d0ca924d92387ae","READM/;" o +files vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" o +files vendor/unic-langid/.cargo-checksum.json /^{"files":{"Cargo.toml":"927c0bc2dea454aab20d550b4ab728ee5c3803ac12f95a89f518b8a56633e941","READM/;" o +files vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" o +files vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" o +files vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" o +files vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" o +files_available vendor/nix/src/sys/statvfs.rs /^ pub fn files_available(&self) -> libc::fsfilcnt_t {$/;" P implementation:Statvfs +files_free vendor/nix/src/sys/statfs.rs /^ pub fn files_free(&self) -> i64 {$/;" P implementation:Statfs +files_free vendor/nix/src/sys/statfs.rs /^ pub fn files_free(&self) -> libc::c_long {$/;" P implementation:Statfs +files_free vendor/nix/src/sys/statfs.rs /^ pub fn files_free(&self) -> libc::c_ulong {$/;" P implementation:Statfs +files_free vendor/nix/src/sys/statfs.rs /^ pub fn files_free(&self) -> libc::fsfilcnt_t {$/;" P implementation:Statfs +files_free vendor/nix/src/sys/statfs.rs /^ pub fn files_free(&self) -> u64 {$/;" P implementation:Statfs +files_free vendor/nix/src/sys/statvfs.rs /^ pub fn files_free(&self) -> libc::fsfilcnt_t {$/;" P implementation:Statvfs +filesize builtins_rust/ulimit/src/lib.rs /^fn filesize(_valuep: *mut rlim_t) -> i32 {$/;" f +filesystem_id vendor/nix/src/sys/statfs.rs /^ pub fn filesystem_id(&self) -> fsid_t {$/;" P implementation:Statfs +filesystem_id vendor/nix/src/sys/statvfs.rs /^ pub fn filesystem_id(&self) -> c_ulong {$/;" P implementation:Statvfs +filesystem_type vendor/nix/src/sys/statfs.rs /^ pub fn filesystem_type(&self) -> FsType {$/;" P implementation:Statfs +filesystem_type_name vendor/nix/src/sys/statfs.rs /^ pub fn filesystem_type_name(&self) -> &str {$/;" P implementation:Statfs +filetype lib/readline/colors.h /^enum filetype$/;" g +filetype r_readline/src/lib.rs /^pub type filetype = u32;$/;" t +fill_buf vendor/futures-util/src/io/allow_std.rs /^ fn fill_buf(&mut self) -> io::Result<&[u8]> {$/;" f +fill_buf vendor/futures-util/src/io/mod.rs /^ fn fill_buf(&mut self) -> FillBuf<'_, Self>$/;" P interface:AsyncBufReadExt +fill_buf vendor/futures-util/src/io/mod.rs /^mod fill_buf;$/;" n +fill_words support/man2html.c /^fill_words(char *c, char *words[], int *n)$/;" f typeref:typename:char * file: +fillout support/man2html.c /^static int fillout = 1;$/;" v typeref:typename:int file: +filter vendor/futures-util/src/stream/stream/mod.rs /^ fn filter(self, f: F) -> Filter$/;" P interface:StreamExt +filter vendor/futures-util/src/stream/stream/mod.rs /^mod filter;$/;" n +filter vendor/futures/tests_disabled/stream.rs /^fn filter() {$/;" f +filter vendor/nix/src/sys/event.rs /^ pub fn filter(&self) -> Result {$/;" P implementation:KEvent +filter_comments bashhist.c /^filter_comments (line)$/;" f file: +filter_files support/texi2dvi /^filter_files ()$/;" f +filter_map vendor/futures-util/src/stream/stream/mod.rs /^ fn filter_map(self, f: F) -> FilterMap$/;" P interface:StreamExt +filter_map vendor/futures-util/src/stream/stream/mod.rs /^mod filter_map;$/;" n +filter_map vendor/futures/tests_disabled/stream.rs /^fn filter_map() {$/;" f +filter_matches vendor/fluent-langneg/src/negotiate/mod.rs /^pub fn filter_matches<'a, R: 'a + AsRef, A: 'a + AsRef>($/;" f +filter_stringlist pcomplete.c /^filter_stringlist (sl, filterpat, text)$/;" f +filterpat builtins_rust/complete/src/lib.rs /^ filterpat: *mut c_char,$/;" m struct:COMPSPEC +filterpat pcomplete.h /^ char *filterpat;$/;" m struct:compspec typeref:typename:char * +filterpat r_bash/src/lib.rs /^ pub filterpat: *mut ::std::os::raw::c_char,$/;" m struct:compspec +find vendor/memchr/src/memmem/mod.rs /^ fn find($/;" P implementation:Searcher +find vendor/memchr/src/memmem/mod.rs /^ pub fn find(&self, haystack: &[u8]) -> Option {$/;" P implementation:Finder +find vendor/memchr/src/memmem/mod.rs /^pub fn find(haystack: &[u8], needle: &[u8]) -> Option {$/;" f +find vendor/memchr/src/memmem/prefilter/fallback.rs /^pub(crate) fn find($/;" f +find vendor/memchr/src/memmem/prefilter/genericsimd.rs /^pub(crate) unsafe fn find($/;" f +find vendor/memchr/src/memmem/prefilter/wasm.rs /^pub(crate) fn find($/;" f +find vendor/memchr/src/memmem/prefilter/x86/avx.rs /^pub(crate) unsafe fn find($/;" f +find vendor/memchr/src/memmem/prefilter/x86/sse.rs /^pub(crate) unsafe fn find($/;" f +find vendor/memchr/src/memmem/rabinkarp.rs /^pub(crate) fn find(haystack: &[u8], needle: &[u8]) -> Option {$/;" f +find vendor/memchr/src/memmem/twoway.rs /^ pub(crate) fn find($/;" P implementation:Forward +find vendor/memchr/src/memmem/wasm.rs /^ fn find($/;" f module:tests +find vendor/memchr/src/memmem/wasm.rs /^ pub(crate) fn find($/;" P implementation:Forward +find vendor/memchr/src/memmem/x86/avx.rs /^ pub(crate) fn find($/;" P implementation:nostd::Forward +find vendor/memchr/src/memmem/x86/avx.rs /^ pub(crate) fn find($/;" P implementation:std::Forward +find vendor/memchr/src/memmem/x86/avx.rs /^ fn find($/;" f module:tests +find vendor/memchr/src/memmem/x86/sse.rs /^ fn find($/;" f module:tests +find vendor/memchr/src/memmem/x86/sse.rs /^ pub(crate) fn find($/;" P implementation:Forward +find_absolute_program findcmd.c /^find_absolute_program (name, flags)$/;" f file: +find_alias alias.c /^find_alias (name)$/;" f +find_alias builtins_rust/alias/src/lib.rs /^ fn find_alias(_: *mut libc::c_char) -> *mut AliasT;$/;" f +find_alias builtins_rust/type/src/lib.rs /^ fn find_alias(alia: *mut libc::c_char) -> alias_t;$/;" f +find_alias r_bash/src/lib.rs /^ pub fn find_alias(arg1: *mut ::std::os::raw::c_char) -> *mut alias_t;$/;" f +find_area vendor/libc/src/unix/haiku/native.rs /^ pub fn find_area(name: *const ::c_char) -> area_id;$/;" f +find_boolean_var lib/readline/bind.c /^find_boolean_var (const char *name)$/;" f typeref:typename:int file: +find_capability lib/termcap/termcap.c /^find_capability (bp, cap)$/;" f file: +find_cmd_end bashline.c /^find_cmd_end (end)$/;" f file: +find_cmd_name bashline.c /^find_cmd_name (start, sp, ep)$/;" f file: +find_cmd_start bashline.c /^find_cmd_start (start)$/;" f file: +find_codeset lib/readline/nls.c /^find_codeset (char *name, size_t *lenp)$/;" f typeref:typename:char * file: +find_command lib/readline/examples/fileman.c /^find_command (name)$/;" f +find_directive builtins/mkbuiltins.c /^find_directive (directive)$/;" f +find_directory vendor/libc/src/unix/haiku/native.rs /^ pub fn find_directory($/;" f +find_entry lib/malloc/table.c /^find_entry (mem, flags)$/;" f file: +find_flag builtins_rust/set/src/lib.rs /^ fn find_flag(_: i32) -> *mut i32;$/;" f +find_flag flags.c /^find_flag (name)$/;" f +find_flag r_bash/src/lib.rs /^ pub fn find_flag(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_int;$/;" f +find_function builtins_rust/alias/src/lib.rs /^ fn find_function(name: *const libc::c_char) -> *mut SHELL_VAR;$/;" f +find_function builtins_rust/declare/src/lib.rs /^ fn find_function(name: *const c_char) -> *mut SHELL_VAR;$/;" f +find_function builtins_rust/hash/src/lib.rs /^ fn find_function(name: *const c_char) -> *mut SHELL_VAR;$/;" f +find_function builtins_rust/set/src/lib.rs /^ fn find_function(name: *const libc::c_char) -> *mut SHELL_VAR;$/;" f +find_function builtins_rust/setattr/src/intercdep.rs /^ pub fn find_function(name: *const c_char) -> *mut SHELL_VAR;$/;" f +find_function builtins_rust/type/src/lib.rs /^ fn find_function(name: *const libc::c_char) -> *mut SHELL_VAR;$/;" f +find_function r_bash/src/lib.rs /^ pub fn find_function(arg1: *const ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +find_function variables.c /^find_function (name)$/;" f +find_function_def builtins_rust/declare/src/lib.rs /^ fn find_function_def(name: *const c_char) -> *mut function_def;$/;" f +find_function_def r_bash/src/lib.rs /^ pub fn find_function_def(arg1: *const ::std::os::raw::c_char) -> *mut FUNCTION_DEF;$/;" f +find_function_def variables.c /^find_function_def (name)$/;" f +find_general vendor/memchr/src/memmem/twoway.rs /^ fn find_general($/;" P implementation:Forward +find_global_variable builtins_rust/declare/src/lib.rs /^ fn find_global_variable(str: *const c_char) -> *mut SHELL_VAR;$/;" f +find_global_variable builtins_rust/setattr/src/intercdep.rs /^ pub fn find_global_variable(name: *const c_char) -> *mut SHELL_VAR;$/;" f +find_global_variable r_bash/src/lib.rs /^ pub fn find_global_variable(arg1: *const ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +find_global_variable variables.c /^find_global_variable (name)$/;" f +find_global_variable_last_nameref builtins_rust/declare/src/lib.rs /^ fn find_global_variable_last_nameref(value: *const c_char, flags: i32) -> *mut SHELL_VAR;$/;" f +find_global_variable_last_nameref r_bash/src/lib.rs /^ pub fn find_global_variable_last_nameref($/;" f +find_global_variable_last_nameref variables.c /^find_global_variable_last_nameref (name, vflags)$/;" f +find_global_variable_noref builtins_rust/declare/src/lib.rs /^ fn find_global_variable_noref(value: *const c_char) -> *mut SHELL_VAR;$/;" f +find_global_variable_noref r_bash/src/lib.rs /^ pub fn find_global_variable_noref(arg1: *const ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +find_global_variable_noref variables.c /^find_global_variable_noref (name)$/;" f +find_impl vendor/memchr/src/memmem/wasm.rs /^ fn find_impl(&self, haystack: &[u8], needle: &[u8]) -> Option {$/;" P implementation:Forward +find_impl vendor/memchr/src/memmem/x86/avx.rs /^ unsafe fn find_impl($/;" P implementation:std::Forward +find_impl vendor/memchr/src/memmem/x86/sse.rs /^ unsafe fn find_impl($/;" P implementation:Forward +find_in_chunk2 vendor/memchr/src/memmem/prefilter/genericsimd.rs /^unsafe fn find_in_chunk2($/;" f +find_in_chunk3 vendor/memchr/src/memmem/prefilter/genericsimd.rs /^unsafe fn find_in_chunk3($/;" f +find_in_path builtins_rust/enable/src/lib.rs /^ fn find_in_path($/;" f +find_in_path builtins_rust/type/src/lib.rs /^ fn find_in_path($/;" f +find_in_path findcmd.c /^find_in_path (name, path_list, flags)$/;" f +find_in_path r_bash/src/lib.rs /^ pub fn find_in_path($/;" f +find_in_path_element findcmd.c /^find_in_path_element (name, path, flags, name_len, dotinfop)$/;" f file: +find_index_by_pid nojobs.c /^find_index_by_pid (pid)$/;" f file: +find_index_in_alist r_bash/src/lib.rs /^ pub fn find_index_in_alist($/;" f +find_index_in_alist stringlib.c /^find_index_in_alist (string, alist, flags)$/;" f +find_iter vendor/memchr/src/memmem/mod.rs /^ pub fn find_iter<'a, 'h>($/;" P implementation:Finder +find_iter vendor/memchr/src/memmem/mod.rs /^pub fn find_iter<'h, 'n, N: 'n + ?Sized + AsRef<[u8]>>($/;" f +find_job jobs.c /^find_job (pid, alive_only, procp)$/;" f file: +find_job r_jobs/src/lib.rs /^unsafe extern "C" fn find_job($/;" f +find_large_imp vendor/memchr/src/memmem/twoway.rs /^ fn find_large_imp($/;" P implementation:Forward +find_last_pid jobs.c /^find_last_pid (job, block)$/;" f file: +find_last_pid r_jobs/src/lib.rs /^unsafe extern "C" fn find_last_pid(mut job: c_int, mut block: c_int) -> pid_t $/;" f +find_last_proc jobs.c /^find_last_proc (job, block)$/;" f file: +find_last_proc r_jobs/src/lib.rs /^unsafe extern "C" fn find_last_proc(mut job: c_int, mut block: c_int) -> *mut PROCESS $/;" f +find_location_entry lib/malloc/table.c /^find_location_entry (file, line)$/;" f file: +find_mail_file mailcheck.c /^find_mail_file (file)$/;" f file: +find_matching_open lib/readline/parens.c /^find_matching_open (char *string, int from, int closer)$/;" f typeref:typename:int file: +find_minus_o_option builtins_rust/set/src/lib.rs /^unsafe fn find_minus_o_option(mut name: *mut libc::c_char) -> i32 {$/;" f +find_nameref_at_context variables.c /^find_nameref_at_context (v, vc)$/;" f file: +find_or_make_array_variable arrayfunc.c /^find_or_make_array_variable (name, flags)$/;" f +find_or_make_array_variable builtins_rust/mapfile/src/intercdep.rs /^ pub fn find_or_make_array_variable(name: *mut c_char, flags: c_int) -> *mut SHELL_VAR;$/;" f +find_or_make_array_variable builtins_rust/read/src/intercdep.rs /^ pub fn find_or_make_array_variable(name: *mut c_char, flags: c_int) -> *mut SHELL_VAR;$/;" f +find_or_make_array_variable r_bash/src/lib.rs /^ pub fn find_or_make_array_variable($/;" f +find_path vendor/libc/src/unix/haiku/native.rs /^ pub fn find_path($/;" f +find_path_etc vendor/libc/src/unix/haiku/native.rs /^ pub fn find_path_etc($/;" f +find_path_file builtins_rust/source/src/lib.rs /^ fn find_path_file(path: *const c_char) -> *mut c_char;$/;" f +find_path_file findcmd.c /^find_path_file (name)$/;" f +find_path_file r_bash/src/lib.rs /^ pub fn find_path_file(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +find_path_for_path vendor/libc/src/unix/haiku/native.rs /^ pub fn find_path_for_path($/;" f +find_path_for_path_etc vendor/libc/src/unix/haiku/native.rs /^ pub fn find_path_for_path_etc($/;" f +find_paths vendor/libc/src/unix/haiku/native.rs /^ pub fn find_paths($/;" f +find_paths_etc vendor/libc/src/unix/haiku/native.rs /^ pub fn find_paths_etc($/;" f +find_pid_in_pipeline jobs.c /^find_pid_in_pipeline (pid, pipeline, alive_only)$/;" f file: +find_pid_in_pipeline r_jobs/src/lib.rs /^unsafe extern "C" fn find_pid_in_pipeline($/;" f +find_pipeline jobs.c /^find_pipeline (pid, alive_only, jobp)$/;" f file: +find_pipeline r_jobs/src/lib.rs /^unsafe extern "C" fn find_pipeline($/;" f +find_port vendor/libc/src/unix/haiku/native.rs /^ pub fn find_port(name: *const ::c_char) -> port_id;$/;" f +find_proc_slot nojobs.c /^find_proc_slot (pid)$/;" f file: +find_process jobs.c /^find_process (pid, alive_only, jobp)$/;" f file: +find_process r_jobs/src/lib.rs /^unsafe extern "C" fn find_process($/;" f +find_procsub_child r_bash/src/lib.rs /^ pub fn find_procsub_child(arg1: pid_t) -> ::std::os::raw::c_int;$/;" f +find_procsub_child r_jobs/src/lib.rs /^ fn find_procsub_child(_: pid_t) -> c_int;$/;" f +find_procsub_child subst.c /^find_procsub_child (pid)$/;" f +find_reserved_word builtins_rust/type/src/lib.rs /^ fn find_reserved_word(word: *mut libc::c_char) -> i32;$/;" f +find_reserved_word r_bash/src/lib.rs /^ pub fn find_reserved_word(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +find_reserved_word r_print_cmd/src/lib.rs /^ fn find_reserved_word(tokstr:*mut c_char)->c_int;$/;" f +find_shared_library_fullname lib/intl/relocatable.c /^find_shared_library_fullname ()$/;" f typeref:typename:void file: +find_shell_builtin builtins/common.c /^find_shell_builtin (name)$/;" f +find_shell_builtin builtins_rust/alias/src/lib.rs /^ fn find_shell_builtin(builtin: *mut libc::c_char) -> *mut libc::c_char;$/;" f +find_shell_builtin builtins_rust/builtin/src/intercdep.rs /^ fn find_shell_builtin(_: *mut libc::c_char) -> Option::;$/;" f +find_shell_builtin builtins_rust/hash/src/lib.rs /^ fn find_shell_builtin(name: *mut c_char) -> *mut sh_builtin_func_t;$/;" f +find_shell_builtin builtins_rust/type/src/lib.rs /^ fn find_shell_builtin(builtin: *mut libc::c_char) -> *mut libc::c_char;$/;" f +find_shell_builtin r_bash/src/lib.rs /^ pub fn find_shell_builtin(arg1: *mut ::std::os::raw::c_char) -> sh_builtin_func_t;$/;" f +find_shell_variable r_bash/src/lib.rs /^ pub fn find_shell_variable(arg1: *const ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +find_shell_variable variables.c /^find_shell_variable (name)$/;" f +find_shopt builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn find_shopt(name: *mut libc::c_char) -> i32 {$/;" f +find_small_imp vendor/memchr/src/memmem/twoway.rs /^ fn find_small_imp($/;" P implementation:Forward +find_special_builtin builtins/common.c /^find_special_builtin (name)$/;" f +find_special_builtin builtins_rust/type/src/lib.rs /^ fn find_special_builtin(builtins: *mut libc::c_char) -> *mut sh_builtin_func_t;$/;" f +find_special_builtin r_bash/src/lib.rs /^ pub fn find_special_builtin(arg1: *mut ::std::os::raw::c_char) -> sh_builtin_func_t;$/;" f +find_special_var variables.c /^find_special_var (name)$/;" f file: +find_stack_direction lib/malloc/alloca.c /^find_stack_direction ()$/;" f typeref:typename:void file: +find_status_by_pid nojobs.c /^find_status_by_pid (pid)$/;" f file: +find_string_in_alist r_bash/src/lib.rs /^ pub fn find_string_in_alist($/;" f +find_string_in_alist stringlib.c /^find_string_in_alist (string, alist, flags)$/;" f +find_string_var lib/readline/bind.c /^find_string_var (const char *name)$/;" f typeref:typename:int file: +find_tempenv_variable builtins_rust/declare/src/lib.rs /^ fn find_tempenv_variable(format: *const c_char) -> *mut SHELL_VAR;$/;" f +find_tempenv_variable builtins_rust/setattr/src/intercdep.rs /^ pub fn find_tempenv_variable(name: *const c_char) -> *mut SHELL_VAR;$/;" f +find_tempenv_variable r_bash/src/lib.rs /^ pub fn find_tempenv_variable(arg1: *const ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +find_tempenv_variable variables.c /^find_tempenv_variable (name)$/;" f +find_termsig_by_pid nojobs.c /^find_termsig_by_pid (pid)$/;" f file: +find_thread vendor/libc/src/unix/haiku/native.rs /^ pub fn find_thread(name: *const ::c_char) -> thread_id;$/;" f +find_token_in_alist r_bash/src/lib.rs /^ pub fn find_token_in_alist($/;" f +find_token_in_alist stringlib.c /^find_token_in_alist (token, alist, flags)$/;" f +find_tw vendor/memchr/src/memmem/mod.rs /^ fn find_tw($/;" P implementation:Searcher +find_user_command builtins_rust/alias/src/lib.rs /^ fn find_user_command(name: *const libc::c_char) -> *mut libc::c_char;$/;" f +find_user_command builtins_rust/hash/src/lib.rs /^ fn find_user_command(name: *const c_char) -> *mut c_char;$/;" f +find_user_command builtins_rust/type/src/lib.rs /^ fn find_user_command(cmd: *mut libc::c_char) -> *mut libc::c_char;$/;" f +find_user_command findcmd.c /^find_user_command (name)$/;" f +find_user_command r_bash/src/lib.rs /^ pub fn find_user_command(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char/;" f +find_user_command_in_path findcmd.c /^find_user_command_in_path (name, path_list, flags)$/;" f file: +find_user_command_internal findcmd.c /^find_user_command_internal (name, flags)$/;" f file: +find_variable builtins_rust/caller/src/lib.rs /^ fn find_variable(str: *const c_char) -> *mut SHELL_VAR;$/;" f +find_variable builtins_rust/common/src/lib.rs /^ fn find_variable(_: *const c_char) -> *mut SHELL_VAR;$/;" f +find_variable builtins_rust/declare/src/lib.rs /^ fn find_variable(str: *const c_char) -> *mut SHELL_VAR;$/;" f +find_variable builtins_rust/set/src/lib.rs /^ fn find_variable(_: *const libc::c_char) -> *mut SHELL_VAR;$/;" f +find_variable builtins_rust/setattr/src/intercdep.rs /^ pub fn find_variable(name: *const c_char) -> *mut SHELL_VAR;$/;" f +find_variable builtins_rust/shopt/src/lib.rs /^ fn find_variable(_: *const libc::c_char) -> *mut ShellVar;$/;" f +find_variable expr.c /^SHELL_VAR *find_variable () { return 0;}$/;" f typeref:typename:SHELL_VAR * +find_variable r_bash/src/lib.rs /^ pub fn find_variable(arg1: *const ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +find_variable variables.c /^find_variable (name)$/;" f +find_variable_for_assignment r_bash/src/lib.rs /^ pub fn find_variable_for_assignment(arg1: *const ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +find_variable_for_assignment variables.c /^find_variable_for_assignment (name)$/;" f +find_variable_internal variables.c /^find_variable_internal (name, flags)$/;" f +find_variable_last_nameref builtins_rust/declare/src/lib.rs /^ fn find_variable_last_nameref(name: *const c_char, flags: i32) -> *mut SHELL_VAR;$/;" f +find_variable_last_nameref builtins_rust/set/src/lib.rs /^ fn find_variable_last_nameref(_: *const libc::c_char, _: i32) -> *mut SHELL_VAR;$/;" f +find_variable_last_nameref r_bash/src/lib.rs /^ pub fn find_variable_last_nameref($/;" f +find_variable_last_nameref variables.c /^find_variable_last_nameref (name, vflags)$/;" f +find_variable_last_nameref_context variables.c /^find_variable_last_nameref_context (v, vc, nvcp)$/;" f file: +find_variable_nameref r_bash/src/lib.rs /^ pub fn find_variable_nameref(arg1: *mut SHELL_VAR) -> *mut SHELL_VAR;$/;" f +find_variable_nameref variables.c /^find_variable_nameref (v)$/;" f +find_variable_nameref_context variables.c /^find_variable_nameref_context (v, vc, nvcp)$/;" f file: +find_variable_nameref_for_assignment r_bash/src/lib.rs /^ pub fn find_variable_nameref_for_assignment($/;" f +find_variable_nameref_for_assignment variables.c /^find_variable_nameref_for_assignment (name, flags)$/;" f +find_variable_nameref_for_create builtins_rust/setattr/src/intercdep.rs /^ pub fn find_variable_nameref_for_create(name: *const c_char, flags: c_int) -> *mut SHELL_VAR/;" f +find_variable_nameref_for_create r_bash/src/lib.rs /^ pub fn find_variable_nameref_for_create($/;" f +find_variable_nameref_for_create variables.c /^find_variable_nameref_for_create (name, flags)$/;" f +find_variable_no_invisible r_bash/src/lib.rs /^ pub fn find_variable_no_invisible(arg1: *const ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +find_variable_no_invisible variables.c /^find_variable_no_invisible (name)$/;" f +find_variable_noref builtins_rust/declare/src/lib.rs /^ fn find_variable_noref(value: *const c_char) -> *mut SHELL_VAR;$/;" f +find_variable_noref builtins_rust/setattr/src/intercdep.rs /^ pub fn find_variable_noref(name: *const c_char) -> *mut SHELL_VAR;$/;" f +find_variable_noref r_bash/src/lib.rs /^ pub fn find_variable_noref(arg1: *const ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +find_variable_noref variables.c /^find_variable_noref (name)$/;" f +find_variable_notempenv builtins_rust/setattr/src/intercdep.rs /^ pub fn find_variable_notempenv(name: *const c_char) -> *mut SHELL_VAR;$/;" f +find_variable_notempenv r_bash/src/lib.rs /^ pub fn find_variable_notempenv(arg1: *const ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +find_variable_notempenv variables.c /^find_variable_notempenv (name)$/;" f +find_variable_tempenv r_bash/src/lib.rs /^ pub fn find_variable_tempenv(arg1: *const ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +find_variable_tempenv variables.c /^find_variable_tempenv (name)$/;" f +find_with vendor/memchr/src/memmem/rabinkarp.rs /^pub(crate) fn find_with($/;" f +findbrk xmalloc.c /^findbrk ()$/;" f typeref:typename:size_t file: +findcmd.o Makefile.in /^findcmd.o: $(srcdir)\/config-top.h$/;" t +findcmd.o Makefile.in /^findcmd.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/memalloc.h shell.h syntax.h bashjmp.h ${B/;" t +findcmd.o Makefile.in /^findcmd.o: ${BASHINCDIR}\/chartypes.h$/;" t +findcmd.o Makefile.in /^findcmd.o: ${BASHINCDIR}\/stdc.h error.h general.h xmalloc.h variables.h arrayfunc.h conftypes.h/;" t +findcmd.o Makefile.in /^findcmd.o: config.h bashtypes.h ${BASHINCDIR}\/filecntl.h ${BASHINCDIR}\/posixstat.h bashansi.h$/;" t +findcmd.o Makefile.in /^findcmd.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h$/;" t +findcmd.o Makefile.in /^findcmd.o: flags.h hashlib.h pathexp.h hashcmd.h execute_cmd.h$/;" t +finddirs lib/glob/glob.c /^finddirs (pat, sdir, flags, ep, np)$/;" f file: +finddirs_error_return lib/glob/glob.c /^static struct globval finddirs_error_return;$/;" v typeref:struct:globval file: +finddomain.$lo lib/intl/Makefile.in /^bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomai/;" t +finddomain.lo lib/intl/Makefile.in /^finddomain.lo: $(srcdir)\/finddomain.c$/;" t +finder vendor/memchr/src/memmem/mod.rs /^ finder: Finder<'n>,$/;" m struct:FindIter +finder vendor/memchr/src/memmem/mod.rs /^ finder: FinderRev<'n>,$/;" m struct:FindRevIter +findprog support/texi2dvi /^findprog ()$/;" f +finish vendor/futures-util/src/stream/select_with_strategy.rs /^ fn finish(&mut self, ps: PollNext) {$/;" P implementation:InternalState +finish vendor/futures-util/src/stream/stream/collect.rs /^ fn finish(self: Pin<&mut Self>) -> C {$/;" P implementation:Collect +finish vendor/futures-util/src/stream/stream/unzip.rs /^ fn finish(self: Pin<&mut Self>) -> (FromA, FromB) {$/;" P implementation:Unzip +finish vendor/rustc-hash/src/lib.rs /^ fn finish(&self) -> u64 {$/;" P implementation:FxHasher +finished_future vendor/futures/tests/stream_futures_unordered.rs /^fn finished_future() {$/;" f +finit_module vendor/nix/src/kmod.rs /^pub fn finit_module(fd: &T, param_values: &CStr, flags: ModuleInitFlags) -> Result<(/;" f +fiprintf vendor/libc/src/solid/mod.rs /^ pub fn fiprintf(arg1: *mut FILE, arg2: *const c_char, ...) -> c_int;$/;" f +fire vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn fire(mut self) -> Option {$/;" P implementation:PollStateBomb +first builtins_rust/cd/src/lib.rs /^ first: *mut COMMAND,$/;" m struct:connection +first builtins_rust/command/src/lib.rs /^ pub first: *mut COMMAND,$/;" m struct:connection +first builtins_rust/common/src/lib.rs /^ first: *mut COMMAND,$/;" m struct:connection +first builtins_rust/complete/src/lib.rs /^ first: *mut COMMAND,$/;" m struct:connection +first builtins_rust/declare/src/lib.rs /^ first: *mut COMMAND,$/;" m struct:connection +first builtins_rust/fc/src/lib.rs /^ first: *mut COMMAND,$/;" m struct:connection +first builtins_rust/fg_bg/src/lib.rs /^ first: *mut COMMAND,$/;" m struct:connection +first builtins_rust/getopts/src/lib.rs /^ first: *mut COMMAND,$/;" m struct:connection +first builtins_rust/jobs/src/lib.rs /^ first: *mut COMMAND,$/;" m struct:connection +first builtins_rust/pushd/src/lib.rs /^ first: *mut COMMAND,$/;" m struct:connection +first builtins_rust/source/src/lib.rs /^ first: *mut COMMAND,$/;" m struct:connection +first builtins_rust/type/src/lib.rs /^ first: *mut COMMAND,$/;" m struct:connection +first command.h /^ COMMAND *first; \/* Pointer to the first command. *\/$/;" m struct:connection typeref:typename:COMMAND * +first r_bash/src/lib.rs /^ pub first: *mut COMMAND,$/;" m struct:connection +first r_glob/src/lib.rs /^ pub first: *mut COMMAND,$/;" m struct:connection +first r_readline/src/lib.rs /^ pub first: *mut COMMAND,$/;" m struct:connection +first support/man2html.c /^ TABLEITEM *first;$/;" m struct:TABLEROW typeref:typename:TABLEITEM * file: +first vendor/elsa/src/vec.rs /^ pub fn first(&self) -> Option<&T::Target> {$/;" P implementation:FrozenVec +first vendor/futures-util/src/io/buf_reader.rs /^ first: bool,$/;" m struct:SeeKRelative +first vendor/futures/tests/io_read_to_end.rs /^ first: bool,$/;" m struct:issue2310::MyRead +first vendor/memchr/src/memmem/prefilter/mod.rs /^ first: u8,$/;" m struct:tests::PrefilterTestSeed +first vendor/syn/src/punctuated.rs /^ pub fn first(&self) -> Option<&T> {$/;" P implementation:Punctuated +first_byte vendor/proc-macro2/src/fallback.rs /^ fn first_byte(self) -> Self {$/;" P implementation:Span +first_mut vendor/syn/src/punctuated.rs /^ pub fn first_mut(&mut self) -> Option<&mut T> {$/;" P implementation:Punctuated +first_pending_trap builtins_rust/wait/src/lib.rs /^ fn first_pending_trap() -> i32;$/;" f +first_pending_trap r_bash/src/lib.rs /^ pub fn first_pending_trap() -> ::std::os::raw::c_int;$/;" f +first_pending_trap r_glob/src/lib.rs /^ pub fn first_pending_trap() -> ::std::os::raw::c_int;$/;" f +first_pending_trap r_readline/src/lib.rs /^ pub fn first_pending_trap() -> ::std::os::raw::c_int;$/;" f +first_pending_trap trap.c /^first_pending_trap ()$/;" f typeref:typename:int +first_ten variables.c /^ char **first_ten;$/;" m struct:saved_dollar_vars typeref:typename:char ** file: +fiscanf vendor/libc/src/solid/mod.rs /^ pub fn fiscanf(arg1: *mut FILE, arg2: *const c_char, ...) -> c_int;$/;" f +fix_assignment_words execute_cmd.c /^fix_assignment_words (words)$/;" f file: +fixpt_t vendor/libc/src/solid/mod.rs /^pub type fixpt_t = u32;$/;" t +fixpt_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type fixpt_t = __fixpt_t;$/;" t +flag mksyntax.c /^ int flag;$/;" m struct:wordflag typeref:typename:int file: +flag vendor/futures/tests/sink.rs /^ flag: Cell,$/;" m struct:Allow +flag_cx vendor/futures/tests/sink.rs /^fn flag_cx(f: F) -> R$/;" f +flags alias.h /^ char flags;$/;" m struct:alias typeref:typename:char +flags builtins.h /^ int flags; \/* One of the #defines above. *\/$/;" m struct:builtin typeref:typename:int +flags builtins/mkbuiltins.c /^ int flags; \/* Flags for this builtin. *\/$/;" m struct:__anon69e836710208 typeref:typename:int file: +flags builtins_rust/alias/src/lib.rs /^ pub flags: libc::c_char,$/;" m struct:alias +flags builtins_rust/cd/src/lib.rs /^ flags: i32,$/;" m struct:COMMAND +flags builtins_rust/cd/src/lib.rs /^ flags: i32,$/;" m struct:JOB +flags builtins_rust/cd/src/lib.rs /^ flags: i32,$/;" m struct:coproc_com +flags builtins_rust/cd/src/lib.rs /^ flags: i32,$/;" m struct:subshell_com +flags builtins_rust/cd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:PATTERN_LIST +flags builtins_rust/cd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_com +flags builtins_rust/cd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_for_com +flags builtins_rust/cd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:case_com +flags builtins_rust/cd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:cond_com +flags builtins_rust/cd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:for_com +flags builtins_rust/cd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:function_def +flags builtins_rust/cd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:if_com +flags builtins_rust/cd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:select_com +flags builtins_rust/cd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:simple_com +flags builtins_rust/cd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:while_com +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:arith_com +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:arith_for_com +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:case_com +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:command +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:cond_com +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:coproc_com +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:for_com +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:function_def +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:if_com +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:pattern_list +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:redirect +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:select_com +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:simple_com +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:subshell_com +flags builtins_rust/command/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:while_com +flags builtins_rust/common/src/lib.rs /^ flags: i32,$/;" m struct:COMMAND +flags builtins_rust/common/src/lib.rs /^ flags: i32,$/;" m struct:JOB +flags builtins_rust/common/src/lib.rs /^ flags: i32,$/;" m struct:coproc_com +flags builtins_rust/common/src/lib.rs /^ flags: i32,$/;" m struct:subshell_com +flags builtins_rust/common/src/lib.rs /^ flags: libc::c_int,$/;" m struct:PATTERN_LIST +flags builtins_rust/common/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_com +flags builtins_rust/common/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_for_com +flags builtins_rust/common/src/lib.rs /^ flags: libc::c_int,$/;" m struct:case_com +flags builtins_rust/common/src/lib.rs /^ flags: libc::c_int,$/;" m struct:cond_com +flags builtins_rust/common/src/lib.rs /^ flags: libc::c_int,$/;" m struct:for_com +flags builtins_rust/common/src/lib.rs /^ flags: libc::c_int,$/;" m struct:function_def +flags builtins_rust/common/src/lib.rs /^ flags: libc::c_int,$/;" m struct:if_com +flags builtins_rust/common/src/lib.rs /^ flags: libc::c_int,$/;" m struct:select_com +flags builtins_rust/common/src/lib.rs /^ flags: libc::c_int,$/;" m struct:simple_com +flags builtins_rust/common/src/lib.rs /^ flags: libc::c_int,$/;" m struct:while_com +flags builtins_rust/common/src/lib.rs /^ pub flags: c_int,$/;" m struct:word_desc +flags builtins_rust/common/src/lib.rs /^ pub flags: i32,$/;" m struct:builtin +flags builtins_rust/complete/src/lib.rs /^ flags: c_int,$/;" m struct:PATTERN_LIST +flags builtins_rust/complete/src/lib.rs /^ flags: c_int,$/;" m struct:arith_com +flags builtins_rust/complete/src/lib.rs /^ flags: c_int,$/;" m struct:arith_for_com +flags builtins_rust/complete/src/lib.rs /^ flags: c_int,$/;" m struct:case_com +flags builtins_rust/complete/src/lib.rs /^ flags: c_int,$/;" m struct:cond_com +flags builtins_rust/complete/src/lib.rs /^ flags: c_int,$/;" m struct:for_com +flags builtins_rust/complete/src/lib.rs /^ flags: c_int,$/;" m struct:function_def +flags builtins_rust/complete/src/lib.rs /^ flags: c_int,$/;" m struct:if_com +flags builtins_rust/complete/src/lib.rs /^ flags: c_int,$/;" m struct:select_com +flags builtins_rust/complete/src/lib.rs /^ flags: c_int,$/;" m struct:simple_com +flags builtins_rust/complete/src/lib.rs /^ flags: c_int,$/;" m struct:while_com +flags builtins_rust/complete/src/lib.rs /^ flags: i32,$/;" m struct:COMMAND +flags builtins_rust/complete/src/lib.rs /^ flags: i32,$/;" m struct:coproc_com +flags builtins_rust/complete/src/lib.rs /^ flags: i32,$/;" m struct:subshell_com +flags builtins_rust/declare/src/lib.rs /^ flags: i32,$/;" m struct:COMMAND +flags builtins_rust/declare/src/lib.rs /^ flags: i32,$/;" m struct:VAR_CONTEXT +flags builtins_rust/declare/src/lib.rs /^ flags: i32,$/;" m struct:coproc_com +flags builtins_rust/declare/src/lib.rs /^ flags: i32,$/;" m struct:subshell_com +flags builtins_rust/declare/src/lib.rs /^ flags: libc::c_int,$/;" m struct:PATTERN_LIST +flags builtins_rust/declare/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_com +flags builtins_rust/declare/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_for_com +flags builtins_rust/declare/src/lib.rs /^ flags: libc::c_int,$/;" m struct:case_com +flags builtins_rust/declare/src/lib.rs /^ flags: libc::c_int,$/;" m struct:cond_com +flags builtins_rust/declare/src/lib.rs /^ flags: libc::c_int,$/;" m struct:for_com +flags builtins_rust/declare/src/lib.rs /^ flags: libc::c_int,$/;" m struct:function_def +flags builtins_rust/declare/src/lib.rs /^ flags: libc::c_int,$/;" m struct:if_com +flags builtins_rust/declare/src/lib.rs /^ flags: libc::c_int,$/;" m struct:select_com +flags builtins_rust/declare/src/lib.rs /^ flags: libc::c_int,$/;" m struct:simple_com +flags builtins_rust/declare/src/lib.rs /^ flags: libc::c_int,$/;" m struct:while_com +flags builtins_rust/enable/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:_list_of_items +flags builtins_rust/enable/src/lib.rs /^ pub flags: libc::c_int,$/;" m struct:builtin +flags builtins_rust/exec/src/lib.rs /^ flags: i32,$/;" m struct:redirect +flags builtins_rust/exit/src/lib.rs /^ flags: i32,$/;" m struct:JOB +flags builtins_rust/fc/src/lib.rs /^ flags: i32,$/;" m struct:COMMAND +flags builtins_rust/fc/src/lib.rs /^ flags: i32,$/;" m struct:JOB +flags builtins_rust/fc/src/lib.rs /^ flags: i32,$/;" m struct:coproc_com +flags builtins_rust/fc/src/lib.rs /^ flags: i32,$/;" m struct:subshell_com +flags builtins_rust/fc/src/lib.rs /^ flags: libc::c_int,$/;" m struct:PATTERN_LIST +flags builtins_rust/fc/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_com +flags builtins_rust/fc/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_for_com +flags builtins_rust/fc/src/lib.rs /^ flags: libc::c_int,$/;" m struct:case_com +flags builtins_rust/fc/src/lib.rs /^ flags: libc::c_int,$/;" m struct:cond_com +flags builtins_rust/fc/src/lib.rs /^ flags: libc::c_int,$/;" m struct:for_com +flags builtins_rust/fc/src/lib.rs /^ flags: libc::c_int,$/;" m struct:function_def +flags builtins_rust/fc/src/lib.rs /^ flags: libc::c_int,$/;" m struct:if_com +flags builtins_rust/fc/src/lib.rs /^ flags: libc::c_int,$/;" m struct:select_com +flags builtins_rust/fc/src/lib.rs /^ flags: libc::c_int,$/;" m struct:simple_com +flags builtins_rust/fc/src/lib.rs /^ flags: libc::c_int,$/;" m struct:while_com +flags builtins_rust/fg_bg/src/lib.rs /^ flags: i32,$/;" m struct:COMMAND +flags builtins_rust/fg_bg/src/lib.rs /^ flags: i32,$/;" m struct:JOB +flags builtins_rust/fg_bg/src/lib.rs /^ flags: i32,$/;" m struct:coproc_com +flags builtins_rust/fg_bg/src/lib.rs /^ flags: i32,$/;" m struct:subshell_com +flags builtins_rust/fg_bg/src/lib.rs /^ flags: libc::c_int,$/;" m struct:PATTERN_LIST +flags builtins_rust/fg_bg/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_com +flags builtins_rust/fg_bg/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_for_com +flags builtins_rust/fg_bg/src/lib.rs /^ flags: libc::c_int,$/;" m struct:case_com +flags builtins_rust/fg_bg/src/lib.rs /^ flags: libc::c_int,$/;" m struct:cond_com +flags builtins_rust/fg_bg/src/lib.rs /^ flags: libc::c_int,$/;" m struct:for_com +flags builtins_rust/fg_bg/src/lib.rs /^ flags: libc::c_int,$/;" m struct:function_def +flags builtins_rust/fg_bg/src/lib.rs /^ flags: libc::c_int,$/;" m struct:if_com +flags builtins_rust/fg_bg/src/lib.rs /^ flags: libc::c_int,$/;" m struct:select_com +flags builtins_rust/fg_bg/src/lib.rs /^ flags: libc::c_int,$/;" m struct:simple_com +flags builtins_rust/fg_bg/src/lib.rs /^ flags: libc::c_int,$/;" m struct:while_com +flags builtins_rust/getopts/src/lib.rs /^ flags: i32,$/;" m struct:COMMAND +flags builtins_rust/getopts/src/lib.rs /^ flags: i32,$/;" m struct:coproc_com +flags builtins_rust/getopts/src/lib.rs /^ flags: i32,$/;" m struct:subshell_com +flags builtins_rust/getopts/src/lib.rs /^ flags: libc::c_int,$/;" m struct:PATTERN_LIST +flags builtins_rust/getopts/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_com +flags builtins_rust/getopts/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_for_com +flags builtins_rust/getopts/src/lib.rs /^ flags: libc::c_int,$/;" m struct:case_com +flags builtins_rust/getopts/src/lib.rs /^ flags: libc::c_int,$/;" m struct:cond_com +flags builtins_rust/getopts/src/lib.rs /^ flags: libc::c_int,$/;" m struct:for_com +flags builtins_rust/getopts/src/lib.rs /^ flags: libc::c_int,$/;" m struct:function_def +flags builtins_rust/getopts/src/lib.rs /^ flags: libc::c_int,$/;" m struct:if_com +flags builtins_rust/getopts/src/lib.rs /^ flags: libc::c_int,$/;" m struct:select_com +flags builtins_rust/getopts/src/lib.rs /^ flags: libc::c_int,$/;" m struct:simple_com +flags builtins_rust/getopts/src/lib.rs /^ flags: libc::c_int,$/;" m struct:while_com +flags builtins_rust/hash/src/lib.rs /^ pub flags: i32,$/;" m struct:_pathdata +flags builtins_rust/hash/src/lib.rs /^ pub flags: libc::c_char,$/;" m struct:alias +flags builtins_rust/help/src/lib.rs /^ flags: bool,$/;" m struct:builtin +flags builtins_rust/jobs/src/lib.rs /^ flags: i32,$/;" m struct:COMMAND +flags builtins_rust/jobs/src/lib.rs /^ flags: i32,$/;" m struct:JOB +flags builtins_rust/jobs/src/lib.rs /^ flags: i32,$/;" m struct:coproc_com +flags builtins_rust/jobs/src/lib.rs /^ flags: i32,$/;" m struct:subshell_com +flags builtins_rust/jobs/src/lib.rs /^ flags: libc::c_int,$/;" m struct:PATTERN_LIST +flags builtins_rust/jobs/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_com +flags builtins_rust/jobs/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_for_com +flags builtins_rust/jobs/src/lib.rs /^ flags: libc::c_int,$/;" m struct:case_com +flags builtins_rust/jobs/src/lib.rs /^ flags: libc::c_int,$/;" m struct:cond_com +flags builtins_rust/jobs/src/lib.rs /^ flags: libc::c_int,$/;" m struct:for_com +flags builtins_rust/jobs/src/lib.rs /^ flags: libc::c_int,$/;" m struct:function_def +flags builtins_rust/jobs/src/lib.rs /^ flags: libc::c_int,$/;" m struct:if_com +flags builtins_rust/jobs/src/lib.rs /^ flags: libc::c_int,$/;" m struct:select_com +flags builtins_rust/jobs/src/lib.rs /^ flags: libc::c_int,$/;" m struct:simple_com +flags builtins_rust/jobs/src/lib.rs /^ flags: libc::c_int,$/;" m struct:while_com +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:arith_com +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:arith_for_com +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:case_com +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:command +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:cond_com +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:coproc_com +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:for_com +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:function_def +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:if_com +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:job +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:pattern_list +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:redirect +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:select_com +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:simple_com +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:subshell_com +flags builtins_rust/kill/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:while_com +flags builtins_rust/pushd/src/lib.rs /^ flags: i32,$/;" m struct:COMMAND +flags builtins_rust/pushd/src/lib.rs /^ flags: i32,$/;" m struct:coproc_com +flags builtins_rust/pushd/src/lib.rs /^ flags: i32,$/;" m struct:subshell_com +flags builtins_rust/pushd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:PATTERN_LIST +flags builtins_rust/pushd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_com +flags builtins_rust/pushd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_for_com +flags builtins_rust/pushd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:case_com +flags builtins_rust/pushd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:cond_com +flags builtins_rust/pushd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:for_com +flags builtins_rust/pushd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:function_def +flags builtins_rust/pushd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:if_com +flags builtins_rust/pushd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:select_com +flags builtins_rust/pushd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:simple_com +flags builtins_rust/pushd/src/lib.rs /^ flags: libc::c_int,$/;" m struct:while_com +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:arith_com +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:arith_for_com +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:case_com +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:command +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:cond_com +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:coproc_com +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:for_com +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:function_def +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:if_com +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:job +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:pattern_list +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:redirect +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:select_com +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:simple_com +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:subshell_com +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:while_com +flags builtins_rust/setattr/src/intercdep.rs /^ pub flags: c_int,$/;" m struct:word_desc +flags builtins_rust/source/src/lib.rs /^ flags: i32,$/;" m struct:COMMAND +flags builtins_rust/source/src/lib.rs /^ flags: i32,$/;" m struct:coproc_com +flags builtins_rust/source/src/lib.rs /^ flags: i32,$/;" m struct:subshell_com +flags builtins_rust/source/src/lib.rs /^ flags: libc::c_int,$/;" m struct:PATTERN_LIST +flags builtins_rust/source/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_com +flags builtins_rust/source/src/lib.rs /^ flags: libc::c_int,$/;" m struct:arith_for_com +flags builtins_rust/source/src/lib.rs /^ flags: libc::c_int,$/;" m struct:case_com +flags builtins_rust/source/src/lib.rs /^ flags: libc::c_int,$/;" m struct:cond_com +flags builtins_rust/source/src/lib.rs /^ flags: libc::c_int,$/;" m struct:for_com +flags builtins_rust/source/src/lib.rs /^ flags: libc::c_int,$/;" m struct:function_def +flags builtins_rust/source/src/lib.rs /^ flags: libc::c_int,$/;" m struct:if_com +flags builtins_rust/source/src/lib.rs /^ flags: libc::c_int,$/;" m struct:select_com +flags builtins_rust/source/src/lib.rs /^ flags: libc::c_int,$/;" m struct:simple_com +flags builtins_rust/source/src/lib.rs /^ flags: libc::c_int,$/;" m struct:while_com +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:COMMAND +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:PATTERN_LIST +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:arith_com +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:arith_for_com +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:case_com +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:cond_com +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:coproc_com +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:for_com +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:function_def +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:if_com +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:select_com +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:simple_com +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:subshell_com +flags builtins_rust/type/src/lib.rs /^ flags: i32,$/;" m struct:while_com +flags builtins_rust/type/src/lib.rs /^ flags: libc::c_char,$/;" m struct:alias +flags builtins_rust/wait/src/lib.rs /^ flags: i32,$/;" m struct:JOB +flags command.h /^ int flags; \/* Flag value for `open'. *\/$/;" m struct:redirect typeref:typename:int +flags command.h /^ int flags; \/* Flags controlling execution environment. *\/$/;" m struct:command typeref:typename:int +flags command.h /^ int flags; \/* See description of CMD flags. *\/$/;" m struct:case_com typeref:typename:int +flags command.h /^ int flags; \/* See description of CMD flags. *\/$/;" m struct:function_def typeref:typename:int +flags command.h /^ int flags; \/* See description of CMD flags. *\/$/;" m struct:if_com typeref:typename:int +flags command.h /^ int flags; \/* See description of CMD flags. *\/$/;" m struct:simple_com typeref:typename:int +flags command.h /^ int flags; \/* See description of CMD flags. *\/$/;" m struct:while_com typeref:typename:int +flags command.h /^ int flags; \/* Flags associated with this word. *\/$/;" m struct:word_desc typeref:typename:int +flags command.h /^ int flags; \/* See description of CMD flags. *\/$/;" m struct:for_com typeref:typename:int +flags command.h /^ int flags; \/* See description of CMD flags. *\/$/;" m struct:select_com typeref:typename:int +flags command.h /^ int flags;$/;" m struct:arith_com typeref:typename:int +flags command.h /^ int flags;$/;" m struct:arith_for_com typeref:typename:int +flags command.h /^ int flags;$/;" m struct:cond_com typeref:typename:int +flags command.h /^ int flags;$/;" m struct:coproc_com typeref:typename:int +flags command.h /^ int flags;$/;" m struct:pattern_list typeref:typename:int +flags command.h /^ int flags;$/;" m struct:subshell_com typeref:typename:int +flags hashcmd.h /^ int flags;$/;" m struct:_pathdata typeref:typename:int +flags jobs.h /^ int flags; \/* Flags word: J_NOTIFIED, J_FOREGROUND, or J_JOBCONTROL. *\/$/;" m struct:job typeref:typename:int +flags lib/malloc/table.h /^ char flags;$/;" m struct:mr_table typeref:typename:char +flags lib/readline/bind.c /^ int flags;$/;" m struct:__anon7144754c0208 typeref:typename:int file: +flags lib/readline/bind.c /^ int flags;$/;" m struct:__anon7144754c0308 typeref:typename:int file: +flags lib/readline/history.h /^ int flags;$/;" m struct:_hist_state typeref:typename:int +flags lib/readline/rlprivate.h /^ int flags; \/* reserved *\/$/;" m struct:__rl_vimotion_context typeref:typename:int +flags lib/readline/rlprivate.h /^ int flags;$/;" m struct:__rl_keyseq_context typeref:typename:int +flags lib/readline/rltty.c /^ int flags; \/* Bitmap saying which parts of the struct are valid. *\/$/;" m struct:bsdtty typeref:typename:int file: +flags lib/sh/snprintf.c /^ int flags;$/;" m struct:DATA typeref:typename:int file: +flags mailcheck.c /^ int flags;$/;" m struct:_fileinfo typeref:typename:int file: +flags nojobs.c /^ int flags;$/;" m struct:proc_status typeref:typename:int file: +flags pathexp.h /^ int len, flags;$/;" m struct:ign typeref:typename:int +flags pcomplete.h /^ int flags;$/;" m struct:_list_of_items typeref:typename:int +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_char,$/;" m struct:alias +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:_list_of_items +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:_pathdata +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:arith_com +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:arith_for_com +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:builtin +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:case_com +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:command +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:cond_com +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:coproc_com +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:for_com +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:function_def +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:if_com +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:ign +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:job +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:pattern_list +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:redirect +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:select_com +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:simple_com +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:subshell_com +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:var_context +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:while_com +flags r_bash/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:word_desc +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:arith_com +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:arith_for_com +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:case_com +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:command +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:cond_com +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:coproc_com +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:for_com +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:function_def +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:if_com +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:pattern_list +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:redirect +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:select_com +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:simple_com +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:subshell_com +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:while_com +flags r_glob/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:word_desc +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:__rl_keyseq_context +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:__rl_vimotion_context +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:_hist_state +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:arith_com +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:arith_for_com +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:case_com +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:command +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:cond_com +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:coproc_com +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:for_com +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:function_def +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:if_com +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:pattern_list +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:redirect +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:select_com +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:simple_com +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:subshell_com +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:while_com +flags r_readline/src/lib.rs /^ pub flags: ::std::os::raw::c_int,$/;" m struct:word_desc +flags src/lib.rs /^ pub flags : c_int$/;" m struct:WORD_DESC +flags variables.h /^ int flags;$/;" m struct:var_context typeref:typename:int +flags vendor/bitflags/tests/compile-pass/visibility/pub_in.rs /^ pub fn flags() -> u32 {$/;" f module:a +flags vendor/nix/src/ifaddrs.rs /^ pub flags: InterfaceFlags,$/;" m struct:InterfaceAddress +flags vendor/nix/src/mqueue.rs /^ pub const fn flags(&self) -> mq_attr_member_t {$/;" P implementation:MqAttr +flags vendor/nix/src/sys/event.rs /^ pub fn flags(&self) -> EventFlag {$/;" P implementation:KEvent +flags vendor/nix/src/sys/statvfs.rs /^ pub fn flags(&self) -> FsFlags {$/;" P implementation:Statvfs +flags vendor/nix/test/test_dir.rs /^fn flags() -> OFlag {$/;" f +flags.o Makefile.in /^flags.o: ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h bashansi.h assoc.h$/;" t +flags.o Makefile.in /^flags.o: config.h flags.h $/;" t +flags.o Makefile.in /^flags.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +flags.o Makefile.in /^flags.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashhist.h$/;" t +flags.o Makefile.in /^flags.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h execute_cmd.h$/;" t +flags.o Makefile.in /^flags.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\//;" t +flags_alist flags.h /^struct flags_alist {$/;" s +flags_alist r_bash/src/lib.rs /^pub struct flags_alist {$/;" s +flags_to_string vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn flags_to_string(flags: ::c_ulong, def: *const ::c_char) -> ::c_int;$/;" f +flat_map vendor/futures-util/src/stream/stream/mod.rs /^ fn flat_map(self, f: F) -> FlatMap$/;" P interface:StreamExt +flat_map vendor/futures/tests/stream.rs /^fn flat_map() {$/;" f +flat_map_field vendor/syn/tests/test_precedence.rs /^ fn flat_map_field(mut f: ExprField, vis: &mut T) -> Vec {$/;" f function:librustc_brackets +flat_map_stmt vendor/syn/tests/test_precedence.rs /^ fn flat_map_stmt(stmt: Stmt, vis: &mut T) -> Vec {$/;" f function:librustc_brackets +flat_map_unordered vendor/futures-util/src/stream/stream/mod.rs /^ fn flat_map_unordered($/;" P interface:StreamExt +flatten variables.c /^flatten (var_hash_table, func, vlist, flags)$/;" f file: +flatten vendor/async-trait/tests/test.rs /^ async fn flatten(self) -> ::Output$/;" P interface:issue2::Issue2 +flatten vendor/futures-util/src/future/future/mod.rs /^ fn flatten(self) -> Flatten$/;" P interface:FutureExt +flatten vendor/futures-util/src/future/future/mod.rs /^mod flatten;$/;" n +flatten vendor/futures-util/src/stream/stream/mod.rs /^ fn flatten(self) -> Flatten$/;" P interface:StreamExt +flatten vendor/futures-util/src/stream/stream/mod.rs /^mod flatten;$/;" n +flatten vendor/futures/tests_disabled/all.rs /^fn flatten() {$/;" f +flatten vendor/futures/tests_disabled/stream.rs /^fn flatten() {$/;" f +flatten_sink vendor/futures-util/src/future/try_future/mod.rs /^ fn flatten_sink(self) -> FlattenSink$/;" P interface:TryFutureExt +flatten_stream vendor/futures-util/src/future/future/mod.rs /^ fn flatten_stream(self) -> FlattenStream$/;" P interface:FutureExt +flatten_unordered vendor/futures-util/src/stream/stream/mod.rs /^ fn flatten_unordered(self, limit: impl Into>) -> FlattenUnordered$/;" P interface:StreamExt +flatten_unordered vendor/futures-util/src/stream/stream/mod.rs /^mod flatten_unordered;$/;" n +flatten_unordered vendor/futures/tests/stream.rs /^fn flatten_unordered() {$/;" f +flistxattr vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn flistxattr($/;" f +flistxattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn flistxattr(filedes: ::c_int, list: *mut ::c_char, size: ::size_t) -> ::ssize_t;$/;" f +flistxattr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn flistxattr(filedes: ::c_int, list: *mut c_char, size: ::size_t) -> ::ssize_t;$/;" f +flistxattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn flistxattr(filedes: ::c_int, list: *mut c_char, size: ::size_t) -> ::ssize_t;$/;" f +float vendor/proc-macro2/src/parse.rs /^fn float(input: Cursor) -> Result {$/;" f +float_convert vendor/stdext/src/num/mod.rs /^pub mod float_convert;$/;" n +float_digits vendor/proc-macro2/src/parse.rs /^fn float_digits(input: Cursor) -> Result {$/;" f +floating lib/sh/snprintf.c /^floating(p, d)$/;" f file: +floats vendor/syn/tests/test_lit.rs /^fn floats() {$/;" f +flock r_bash/src/lib.rs /^pub struct flock {$/;" s +flock vendor/libc/src/fuchsia/mod.rs /^ pub fn flock(fd: ::c_int, operation: ::c_int) -> ::c_int;$/;" f +flock vendor/libc/src/unix/mod.rs /^ pub fn flock(fd: ::c_int, operation: ::c_int) -> ::c_int;$/;" f +flock64 r_bash/src/lib.rs /^pub struct flock64 {$/;" s +flock64 vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type flock64 = flock;$/;" t +flockfile r_bash/src/lib.rs /^ pub fn flockfile(__stream: *mut FILE);$/;" f +flockfile r_readline/src/lib.rs /^ pub fn flockfile(__stream: *mut FILE);$/;" f +flockfile vendor/libc/src/solid/mod.rs /^ pub fn flockfile(arg1: *mut FILE);$/;" f +flopen vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn flopen(path: *const ::c_char, flags: ::c_int, ...) -> ::c_int;$/;" f +flopenat vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn flopenat(fd: ::c_int, path: *const ::c_char, flags: ::c_int, ...) -> ::c_int;$/;" f +flowinfo vendor/nix/src/sys/socket/addr.rs /^ pub const fn flowinfo(&self) -> u32 {$/;" P implementation:SockaddrIn6 +fls vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn fls(value: ::c_int) -> ::c_int;$/;" f +flsl vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn flsl(value: ::c_long) -> ::c_int;$/;" f +flsll vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn flsll(value: ::c_longlong) -> ::c_int;$/;" f +fluent-fallback 0.0.1 (August 1, 2019) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.0.1 (August 1, 2019)$/;" s chapter:Changelog +fluent-fallback 0.0.2 (November 26, 2019) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.0.2 (November 26, 2019)$/;" s chapter:Changelog +fluent-fallback 0.0.3 (February 13, 2020) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.0.3 (February 13, 2020)$/;" s chapter:Changelog +fluent-fallback 0.0.4 (May 6, 2020) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.0.4 (May 6, 2020)$/;" s chapter:Changelog +fluent-fallback 0.1.0 (January 3, 2021) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.1.0 (January 3, 2021)$/;" s chapter:Changelog +fluent-fallback 0.2.0 (January 12, 2021) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.2.0 (January 12, 2021)$/;" s chapter:Changelog +fluent-fallback 0.2.1 (January 15, 2021) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.2.1 (January 15, 2021)$/;" s chapter:Changelog +fluent-fallback 0.2.2 (January 16, 2021) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.2.2 (January 16, 2021)$/;" s chapter:Changelog +fluent-fallback 0.3.0 (February 3, 2021) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.3.0 (February 3, 2021)$/;" s chapter:Changelog +fluent-fallback 0.4.0 (February 9, 2021) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.4.0 (February 9, 2021)$/;" s chapter:Changelog +fluent-fallback 0.4.2 (April 9, 2021) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.4.2 (April 9, 2021)$/;" s chapter:Changelog +fluent-fallback 0.4.3 (April 26, 2021) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.4.3 (April 26, 2021)$/;" s chapter:Changelog +fluent-fallback 0.4.4 (May 3, 2021) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.4.4 (May 3, 2021)$/;" s chapter:Changelog +fluent-fallback 0.5.0 (Jul 8, 2021) vendor/fluent-fallback/CHANGELOG.md /^## fluent-fallback 0.5.0 (Jul 8, 2021)$/;" s chapter:Changelog +fluent-resmgr 0.0.1 (August 1, 2019) vendor/fluent-resmgr/CHANGELOG.md /^## fluent-resmgr 0.0.1 (August 1, 2019)$/;" s chapter:Changelog +fluent-resmgr 0.0.2 (November 26, 2019) vendor/fluent-resmgr/CHANGELOG.md /^## fluent-resmgr 0.0.2 (November 26, 2019)$/;" s chapter:Changelog +fluent-resmgr 0.0.3 (February 13, 2020) vendor/fluent-resmgr/CHANGELOG.md /^## fluent-resmgr 0.0.3 (February 13, 2020)$/;" s chapter:Changelog +fluent-resmgr 0.0.4 (May 6, 2020) vendor/fluent-resmgr/CHANGELOG.md /^## fluent-resmgr 0.0.4 (May 6, 2020)$/;" s chapter:Changelog +fluent_args vendor/fluent/src/lib.rs /^macro_rules! fluent_args {$/;" M +fluent_bundle vendor/syn/benches/rust.rs /^ fn fluent_bundle(&self) -> Option<&Lrc> {$/;" P implementation:librustc_parse::bench::SilentEmitter +flush support/man2html.c /^flush(void)$/;" f typeref:typename:void file: +flush vendor/futures-util/src/compat/compat03as01.rs /^ fn flush(&mut self) -> std::io::Result<()> {$/;" P implementation:io::Compat +flush vendor/futures-util/src/io/allow_std.rs /^ fn flush(&mut self) -> io::Result<()> {$/;" f +flush vendor/futures-util/src/io/mod.rs /^ fn flush(&mut self) -> Flush<'_, Self>$/;" P interface:AsyncWriteExt +flush vendor/futures-util/src/io/mod.rs /^mod flush;$/;" n +flush vendor/futures-util/src/sink/mod.rs /^ fn flush(&mut self) -> Flush<'_, Self, Item>$/;" P interface:SinkExt +flush vendor/futures-util/src/sink/mod.rs /^mod flush;$/;" n +flush vendor/nix/src/pty.rs /^ fn flush(&mut self) -> io::Result<()> {$/;" P implementation:PtyMaster +flush vendor/smallvec/src/lib.rs /^ fn flush(&mut self) -> io::Result<()> {$/;" P implementation:SmallVec +flush_buf vendor/futures-util/src/io/buf_writer.rs /^ pub(super) fn flush_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> /;" P implementation:BufWriter +flush_if_completed_line vendor/futures-util/src/io/line_writer.rs /^ fn flush_if_completed_line(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll *mut FILE;$/;" f +fmount vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn fmount($/;" f +fmt r_bash/src/lib.rs /^ fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {$/;" P implementation:__IncompleteArrayField +fmt vendor/autocfg/src/error.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {$/;" P implementation:Error +fmt vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:MyInt +fmt vendor/fluent-bundle/src/errors.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {$/;" P implementation:EntryKind +fmt vendor/fluent-bundle/src/errors.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {$/;" P implementation:FluentError +fmt vendor/fluent-bundle/src/resolver/errors.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {$/;" P implementation:ResolverError +fmt vendor/fluent-fallback/src/errors.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {$/;" P implementation:LocalizationError +fmt vendor/fluent-fallback/src/pin_cell/pin_mut.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PinMut +fmt vendor/fluent-fallback/src/pin_cell/pin_ref.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PinRef +fmt vendor/fluent-fallback/src/types.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {$/;" P implementation:ResourceId +fmt vendor/futures-channel/src/mpsc/mod.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:SendError +fmt vendor/futures-channel/src/mpsc/mod.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:TryRecvError +fmt vendor/futures-channel/src/mpsc/mod.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:TrySendError +fmt vendor/futures-channel/src/oneshot.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Canceled +fmt vendor/futures-channel/src/oneshot.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Receiver +fmt vendor/futures-channel/src/oneshot.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Sender +fmt vendor/futures-core/src/task/__internal/atomic_waker.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:AtomicWaker +fmt vendor/futures-executor/src/enter.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Enter +fmt vendor/futures-executor/src/enter.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:EnterError +fmt vendor/futures-executor/src/thread_pool.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Task +fmt vendor/futures-executor/src/thread_pool.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:ThreadPool +fmt vendor/futures-executor/src/thread_pool.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:ThreadPoolBuilder +fmt vendor/futures-task/src/future_obj.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:FutureObj +fmt vendor/futures-task/src/future_obj.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:LocalFutureObj +fmt vendor/futures-task/src/spawn.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:SpawnError +fmt vendor/futures-util/src/abortable.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Aborted +fmt vendor/futures-util/src/future/future/remote_handle.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Remote +fmt vendor/futures-util/src/future/future/shared.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Inner +fmt vendor/futures-util/src/future/future/shared.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Shared +fmt vendor/futures-util/src/future/future/shared.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:WeakShared +fmt vendor/futures-util/src/future/join_all.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/future/poll_fn.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:PollFn +fmt vendor/futures-util/src/future/try_join_all.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/io/buf_reader.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:BufReader +fmt vendor/futures-util/src/io/buf_writer.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:BufWriter +fmt vendor/futures-util/src/io/chain.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/io/empty.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Empty +fmt vendor/futures-util/src/io/repeat.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Repeat +fmt vendor/futures-util/src/io/sink.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Sink +fmt vendor/futures-util/src/io/split.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:ReuniteError +fmt vendor/futures-util/src/lock/bilock.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:ReuniteError +fmt vendor/futures-util/src/lock/mutex.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:MappedMutexGuard +fmt vendor/futures-util/src/lock/mutex.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Mutex +fmt vendor/futures-util/src/lock/mutex.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:MutexGuard +fmt vendor/futures-util/src/lock/mutex.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:MutexLockFuture +fmt vendor/futures-util/src/lock/mutex.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:OwnedMutexGuard +fmt vendor/futures-util/src/lock/mutex.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:OwnedMutexLockFuture +fmt vendor/futures-util/src/sink/fanout.rs /^ fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {$/;" P implementation:Fanout +fmt vendor/futures-util/src/sink/send_all.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/sink/with.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/sink/with_flat_map.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/futures_ordered.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:FuturesOrdered +fmt vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:FuturesUnordered +fmt vendor/futures-util/src/stream/poll_fn.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:PollFn +fmt vendor/futures-util/src/stream/select_all.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:SelectAll +fmt vendor/futures-util/src/stream/select_with_strategy.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/all.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/any.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/buffer_unordered.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/buffered.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/count.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/filter.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/filter_map.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/fold.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/for_each.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/for_each_concurrent.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/map.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/peek.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/scan.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/skip_while.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/split.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:ReuniteError +fmt vendor/futures-util/src/stream/stream/take_until.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/take_while.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/stream/then.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/try_stream/and_then.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/try_stream/or_else.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/try_stream/try_chunks.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:TryChunksError +fmt vendor/futures-util/src/stream/try_stream/try_filter.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/try_stream/try_filter_map.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/try_stream/try_fold.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/try_stream/try_for_each.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/try_stream/try_for_each_concurrent.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/try_stream/try_skip_while.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/try_stream/try_take_while.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/try_stream/try_unfold.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/futures-util/src/stream/unfold.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/libloading/src/error.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {$/;" P implementation:DlDescription +fmt vendor/libloading/src/error.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {$/;" P implementation:Error +fmt vendor/libloading/src/error.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {$/;" P implementation:WindowsError +fmt vendor/libloading/src/os/unix/mod.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Library +fmt vendor/libloading/src/os/unix/mod.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Symbol +fmt vendor/libloading/src/os/windows/mod.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Library +fmt vendor/libloading/src/os/windows/mod.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Symbol +fmt vendor/libloading/src/safe.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Library +fmt vendor/libloading/src/safe.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Symbol +fmt vendor/memchr/src/memmem/prefilter/mod.rs /^ fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {$/;" P implementation:PrefilterFn +fmt vendor/nix/src/env.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:ClearEnvError +fmt vendor/nix/src/errno.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Errno +fmt vendor/nix/src/mount/bsd.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:NmountError +fmt vendor/nix/src/net/if_.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:if_nameindex::Interface +fmt vendor/nix/src/net/if_.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:if_nameindex::Interfaces +fmt vendor/nix/src/sys/aio.rs /^ fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:AioCb +fmt vendor/nix/src/sys/signal.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Signal +fmt vendor/nix/src/sys/socket/addr.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:alg::AlgAddr +fmt vendor/nix/src/sys/socket/addr.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:netlink::NetlinkAddr +fmt vendor/nix/src/sys/socket/addr.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:vsock::VsockAddr +fmt vendor/nix/src/sys/socket/addr.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:SockAddr +fmt vendor/nix/src/sys/socket/addr.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:SockaddrIn +fmt vendor/nix/src/sys/socket/addr.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:SockaddrIn6 +fmt vendor/nix/src/sys/socket/addr.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:SockaddrStorage +fmt vendor/nix/src/sys/socket/addr.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:UnixAddr +fmt vendor/nix/src/sys/statfs.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Statfs +fmt vendor/nix/src/sys/time.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TimeSpec +fmt vendor/nix/src/sys/time.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TimeVal +fmt vendor/nix/src/time.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {$/;" P implementation:ClockId +fmt vendor/once_cell/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:sync::Lazy +fmt vendor/once_cell/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:sync::OnceCell +fmt vendor/once_cell/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:unsync::Lazy +fmt vendor/once_cell/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:unsync::OnceCell +fmt vendor/once_cell/src/race.rs /^ fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {$/;" P implementation:once_box::OnceBox +fmt vendor/proc-macro2/src/fallback.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Group +fmt vendor/proc-macro2/src/fallback.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Ident +fmt vendor/proc-macro2/src/fallback.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:LexError +fmt vendor/proc-macro2/src/fallback.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Literal::byte_string::Literal +fmt vendor/proc-macro2/src/fallback.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:SourceFile +fmt vendor/proc-macro2/src/fallback.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Span +fmt vendor/proc-macro2/src/fallback.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TokenStream +fmt vendor/proc-macro2/src/fallback.rs /^ fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Group +fmt vendor/proc-macro2/src/fallback.rs /^ fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Literal::byte_string::Literal +fmt vendor/proc-macro2/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:token_stream::IntoIter +fmt vendor/proc-macro2/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Ident +fmt vendor/proc-macro2/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:LexError +fmt vendor/proc-macro2/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Literal +fmt vendor/proc-macro2/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Punct +fmt vendor/proc-macro2/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:SourceFile +fmt vendor/proc-macro2/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Span +fmt vendor/proc-macro2/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TokenStream +fmt vendor/proc-macro2/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TokenTree +fmt vendor/proc-macro2/src/lib.rs /^ fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Punct +fmt vendor/proc-macro2/src/lib.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Group +fmt vendor/proc-macro2/src/wrapper.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Ident +fmt vendor/proc-macro2/src/wrapper.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:LexError +fmt vendor/proc-macro2/src/wrapper.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Literal +fmt vendor/proc-macro2/src/wrapper.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:SourceFile +fmt vendor/proc-macro2/src/wrapper.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Span +fmt vendor/proc-macro2/src/wrapper.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TokenStream +fmt vendor/proc-macro2/src/wrapper.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Group +fmt vendor/quote/src/ident_fragment.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Ident +fmt vendor/quote/src/ident_fragment.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:T +fmt vendor/quote/src/ident_fragment.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" f +fmt vendor/quote/src/ident_fragment.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result;$/;" P interface:IdentFragment +fmt vendor/quote/src/runtime.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:IdentFragmentAdapter +fmt vendor/slab/src/lib.rs /^ fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:Drain +fmt vendor/slab/src/lib.rs /^ fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/smallvec/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" P implementation:CollectionAllocErr +fmt vendor/smallvec/src/lib.rs /^ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {$/;" f +fmt vendor/syn/src/error.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Error +fmt vendor/syn/src/error.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ErrorMessage +fmt vendor/syn/src/expr.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Index +fmt vendor/syn/src/expr.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Member +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Abi +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:AngleBracketedGenericArguments +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Arm +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:AttrStyle +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Attribute +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:BareFnArg +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:BinOp +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Binding +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Block +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:BoundLifetimes +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ConstParam +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Constraint +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Data +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:DataEnum +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:DataStruct +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:DataUnion +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:DeriveInput +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Expr +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprArray +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprAssign +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprAssignOp +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprAsync +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprAwait +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprBinary +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprBlock +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprBox +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprBreak +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprCall +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprCast +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprClosure +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprContinue +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprField +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprForLoop +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprGroup +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprIf +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprIndex +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprLet +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprLit +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprLoop +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprMacro +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprMatch +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprMethodCall +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprParen +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprPath +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprRange +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprReference +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprRepeat +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprReturn +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprStruct +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprTry +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprTryBlock +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprTuple +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprType +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprUnary +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprUnsafe +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprWhile +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ExprYield +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Field +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:FieldPat +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:FieldValue +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Fields +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:FieldsNamed +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:FieldsUnnamed +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:File +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:FnArg +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ForeignItem +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ForeignItemFn +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ForeignItemMacro +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ForeignItemStatic +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ForeignItemType +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:GenericArgument +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:GenericMethodArgument +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:GenericParam +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Generics +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ImplItem +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ImplItemConst +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ImplItemMacro +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ImplItemMethod +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ImplItemType +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Index +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Item +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemConst +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemEnum +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemExternCrate +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemFn +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemForeignMod +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemImpl +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemMacro +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemMacro2 +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemMod +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemStatic +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemStruct +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemTrait +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemTraitAlias +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemType +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemUnion +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ItemUse +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Label +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Lifetime +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:LifetimeDef +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Lit +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Local +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Macro +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:MacroDelimiter +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Member +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Meta +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:MetaList +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:MetaNameValue +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:MethodTurbofish +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:NestedMeta +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ParenthesizedGenericArguments +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Pat +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatBox +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatIdent +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatLit +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatMacro +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatOr +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatPath +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatRange +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatReference +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatRest +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatSlice +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatStruct +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatTuple +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatTupleStruct +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatType +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PatWild +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Path +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PathArguments +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PathSegment +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PredicateEq +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PredicateLifetime +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:PredicateType +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:QSelf +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:RangeLimits +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Receiver +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ReturnType +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Signature +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Stmt +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TraitBound +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TraitBoundModifier +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TraitItem +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TraitItemConst +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TraitItemMacro +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TraitItemMethod +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TraitItemType +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Type +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeArray +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeBareFn +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeGroup +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeImplTrait +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeInfer +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeMacro +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeNever +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeParam +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeParamBound +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeParen +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypePath +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypePtr +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeReference +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeSlice +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeTraitObject +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TypeTuple +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:UnOp +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:UseGlob +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:UseGroup +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:UseName +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:UsePath +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:UseRename +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:UseTree +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Variadic +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Variant +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:VisCrate +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:VisPublic +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:VisRestricted +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Visibility +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:WhereClause +fmt vendor/syn/src/gen/debug.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:WherePredicate +fmt vendor/syn/src/lifetime.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Lifetime +fmt vendor/syn/src/lit.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:debug_impls::LitBool +fmt vendor/syn/src/lit.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:debug_impls::LitByte +fmt vendor/syn/src/lit.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:debug_impls::LitByteStr +fmt vendor/syn/src/lit.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:debug_impls::LitChar +fmt vendor/syn/src/lit.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:debug_impls::LitFloat +fmt vendor/syn/src/lit.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:debug_impls::LitInt +fmt vendor/syn/src/lit.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:debug_impls::LitStr +fmt vendor/syn/src/lit.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:LitFloat +fmt vendor/syn/src/lit.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:LitInt +fmt vendor/syn/src/parse.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Nothing +fmt vendor/syn/src/parse.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ParseBuffer +fmt vendor/syn/src/punctuated.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Punctuated +fmt vendor/syn/src/reserved.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Reserved +fmt vendor/syn/src/thread.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ThreadBound +fmt vendor/syn/tests/debug/gen.rs /^ fn fmt($/;" P implementation:Lite::fmt::Print::fmt::Print +fmt vendor/syn/tests/debug/gen.rs /^ fn fmt($/;" P implementation:Lite::fmt::Print::fmt::Print +fmt vendor/syn/tests/debug/gen.rs /^ fn fmt($/;" P implementation:Lite::fmt::Print::fmt::Print +fmt vendor/syn/tests/debug/gen.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Lite::fmt::Print +fmt vendor/syn/tests/debug/gen.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Lite::fmt::Print +fmt vendor/syn/tests/debug/gen.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Lite +fmt vendor/syn/tests/debug/mod.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:Lite +fmt vendor/syn/tests/debug/mod.rs /^ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {$/;" f +fmt vendor/thiserror-impl/src/attr.rs /^ pub fmt: LitStr,$/;" m struct:Display +fmt vendor/thiserror-impl/src/lib.rs /^mod fmt;$/;" n +fmt vendor/thiserror/tests/test_generics.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:DebugAndDisplay +fmt vendor/thiserror/tests/test_generics.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:DisplayOnly +fmt vendor/thiserror/tests/test_generics.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:EnumCompound +fmt vendor/tinystr/src/tinystr16.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TinyStr16 +fmt vendor/tinystr/src/tinystr4.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TinyStr4 +fmt vendor/tinystr/src/tinystr8.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TinyStr8 +fmt vendor/tinystr/src/tinystrauto.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:TinyStrAuto +fmt vendor/unic-langid-impl/src/errors.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:LanguageIdentifierError +fmt vendor/unic-langid-impl/src/lib.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {$/;" P implementation:LanguageIdentifier +fmt vendor/unic-langid-impl/src/parser/errors.rs /^ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {$/;" P implementation:ParserError +fmt vendor/unic-langid-impl/src/subtags/language.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {$/;" P implementation:Language +fmt vendor/unic-langid-impl/src/subtags/region.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {$/;" P implementation:Region +fmt vendor/unic-langid-impl/src/subtags/script.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {$/;" P implementation:Script +fmt vendor/unic-langid-impl/src/subtags/variant.rs /^ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {$/;" P implementation:Variant +fmt_abstract vendor/nix/src/sys/socket/addr.rs /^fn fmt_abstract(abs: &[u8], f: &mut fmt::Formatter) -> fmt::Result {$/;" f +fmtullong r_bash/src/lib.rs /^ pub fn fmtullong($/;" f +fmtullong.o lib/sh/Makefile.in /^fmtullong.o: ${BASHINCDIR}\/ansi_stdlib.h$/;" t +fmtullong.o lib/sh/Makefile.in /^fmtullong.o: ${BASHINCDIR}\/chartypes.h$/;" t +fmtullong.o lib/sh/Makefile.in /^fmtullong.o: ${BASHINCDIR}\/stdc.h$/;" t +fmtullong.o lib/sh/Makefile.in /^fmtullong.o: ${BASHINCDIR}\/typemax.h$/;" t +fmtullong.o lib/sh/Makefile.in /^fmtullong.o: ${BUILD_DIR}\/config.h$/;" t +fmtullong.o lib/sh/Makefile.in /^fmtullong.o: ${topdir}\/bashansi.h$/;" t +fmtullong.o lib/sh/Makefile.in /^fmtullong.o: ${topdir}\/bashintl.h ${LIBINTL_H} ${BASHINCDIR}\/gettext.h$/;" t +fmtullong.o lib/sh/Makefile.in /^fmtullong.o: fmtullong.c$/;" t +fmtullong.o lib/sh/Makefile.in /^fmtullong.o: fmtulong.c$/;" t +fmtulong lib/sh/fmtullong.c /^#define fmtulong /;" d file: +fmtulong lib/sh/fmtulong.c /^fmtulong (ui, base, buf, len, flags)$/;" f +fmtulong lib/sh/fmtumax.c /^#define fmtulong /;" d file: +fmtulong r_bash/src/lib.rs /^ pub fn fmtulong($/;" f +fmtulong.o lib/sh/Makefile.in /^fmtulong.o: ${BASHINCDIR}\/ansi_stdlib.h$/;" t +fmtulong.o lib/sh/Makefile.in /^fmtulong.o: ${BASHINCDIR}\/chartypes.h$/;" t +fmtulong.o lib/sh/Makefile.in /^fmtulong.o: ${BASHINCDIR}\/stdc.h$/;" t +fmtulong.o lib/sh/Makefile.in /^fmtulong.o: ${BASHINCDIR}\/typemax.h$/;" t +fmtulong.o lib/sh/Makefile.in /^fmtulong.o: ${BUILD_DIR}\/config.h$/;" t +fmtulong.o lib/sh/Makefile.in /^fmtulong.o: ${topdir}\/bashansi.h$/;" t +fmtulong.o lib/sh/Makefile.in /^fmtulong.o: ${topdir}\/bashintl.h ${LIBINTL_H} ${BASHINCDIR}\/gettext.h$/;" t +fmtulong.o lib/sh/Makefile.in /^fmtulong.o: fmtulong.c$/;" t +fmtumax r_bash/src/lib.rs /^ pub fn fmtumax($/;" f +fmtumax.o lib/sh/Makefile.in /^fmtumax.o: ${BASHINCDIR}\/ansi_stdlib.h$/;" t +fmtumax.o lib/sh/Makefile.in /^fmtumax.o: ${BASHINCDIR}\/chartypes.h$/;" t +fmtumax.o lib/sh/Makefile.in /^fmtumax.o: ${BASHINCDIR}\/stdc.h$/;" t +fmtumax.o lib/sh/Makefile.in /^fmtumax.o: ${BASHINCDIR}\/typemax.h$/;" t +fmtumax.o lib/sh/Makefile.in /^fmtumax.o: ${BUILD_DIR}\/config.h$/;" t +fmtumax.o lib/sh/Makefile.in /^fmtumax.o: ${topdir}\/bashansi.h$/;" t +fmtumax.o lib/sh/Makefile.in /^fmtumax.o: ${topdir}\/bashintl.h ${LIBINTL_H} ${BASHINCDIR}\/gettext.h$/;" t +fmtumax.o lib/sh/Makefile.in /^fmtumax.o: fmtulong.c$/;" t +fmtumax.o lib/sh/Makefile.in /^fmtumax.o: fmtumax.c$/;" t +fn vendor/thiserror/tests/test_display.rs /^ r#fn: &'static str,$/;" m struct:test_raw::Error +fn_arg_typed vendor/syn/src/item.rs /^ fn fn_arg_typed(input: ParseStream) -> Result {$/;" f module:parsing +fname support/man2html.c /^static char *fname;$/;" v typeref:typename:char * file: +fnprint lib/readline/complete.c /^fnprint (const char *to_print, int prefix_bytes, const char *real_pathname)$/;" f typeref:typename:int file: +fns vendor/futures-util/src/lib.rs /^mod fns;$/;" n +fnwidth lib/readline/complete.c /^fnwidth (const char *string)$/;" f typeref:typename:int file: +fnx_fromfs lib/sh/fnxform.c /^fnx_fromfs (string)$/;" f +fnx_fromfs lib/sh/fnxform.c /^fnx_fromfs (string, len)$/;" f +fnx_fromfs r_bash/src/lib.rs /^ pub fn fnx_fromfs($/;" f +fnx_tofs lib/sh/fnxform.c /^fnx_tofs (string)$/;" f +fnx_tofs lib/sh/fnxform.c /^fnx_tofs (string, len)$/;" f +fnx_tofs r_bash/src/lib.rs /^ pub fn fnx_tofs(arg1: *mut ::std::os::raw::c_char, arg2: usize) -> *mut ::std::os::raw::c_ch/;" f +fnxform.o lib/sh/Makefile.in /^fnxform.o: ${BASHINCDIR}\/stdc.h$/;" t +fnxform.o lib/sh/Makefile.in /^fnxform.o: ${BUILD_DIR}\/config.h$/;" t +fnxform.o lib/sh/Makefile.in /^fnxform.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +fnxform.o lib/sh/Makefile.in /^fnxform.o: ${topdir}\/bashintl.h ${LIBINTL_H} ${BASHINCDIR}\/gettext.h$/;" t +fnxform.o lib/sh/Makefile.in /^fnxform.o: ${topdir}\/bashtypes.h$/;" t +fnxform.o lib/sh/Makefile.in /^fnxform.o: fnxform.c$/;" t +fold vendor/futures-util/src/stream/stream/mod.rs /^ fn fold(self, init: T, f: F) -> Fold$/;" P interface:StreamExt +fold vendor/futures-util/src/stream/stream/mod.rs /^mod fold;$/;" n +fold vendor/futures/tests_disabled/stream.rs /^fn fold() {$/;" f +fold vendor/syn/src/gen_helper.rs /^ fn fold(&self, folder: &mut F) -> Self {$/;" P implementation:fold::Span +fold vendor/syn/src/gen_helper.rs /^ fn fold(&self, folder: &mut F) -> Self;$/;" P interface:fold::Spans +fold vendor/syn/src/gen_helper.rs /^pub mod fold {$/;" n +fold vendor/syn/src/lib.rs /^ pub mod fold;$/;" n module:gen +fold_abi vendor/syn/src/gen/fold.rs /^ fn fold_abi(&mut self, i: Abi) -> Abi {$/;" P interface:Fold +fold_abi vendor/syn/src/gen/fold.rs /^pub fn fold_abi(f: &mut F, node: Abi) -> Abi$/;" f +fold_angle_bracketed_generic_arguments vendor/syn/src/gen/fold.rs /^ fn fold_angle_bracketed_generic_arguments($/;" P interface:Fold +fold_angle_bracketed_generic_arguments vendor/syn/src/gen/fold.rs /^pub fn fold_angle_bracketed_generic_arguments($/;" f +fold_arm vendor/syn/src/gen/fold.rs /^ fn fold_arm(&mut self, i: Arm) -> Arm {$/;" P interface:Fold +fold_arm vendor/syn/src/gen/fold.rs /^pub fn fold_arm(f: &mut F, node: Arm) -> Arm$/;" f +fold_attr_style vendor/syn/src/gen/fold.rs /^ fn fold_attr_style(&mut self, i: AttrStyle) -> AttrStyle {$/;" P interface:Fold +fold_attr_style vendor/syn/src/gen/fold.rs /^pub fn fold_attr_style(f: &mut F, node: AttrStyle) -> AttrStyle$/;" f +fold_attribute vendor/syn/src/gen/fold.rs /^ fn fold_attribute(&mut self, i: Attribute) -> Attribute {$/;" P interface:Fold +fold_attribute vendor/syn/src/gen/fold.rs /^pub fn fold_attribute(f: &mut F, node: Attribute) -> Attribute$/;" f +fold_bare_fn_arg vendor/syn/src/gen/fold.rs /^ fn fold_bare_fn_arg(&mut self, i: BareFnArg) -> BareFnArg {$/;" P interface:Fold +fold_bare_fn_arg vendor/syn/src/gen/fold.rs /^pub fn fold_bare_fn_arg(f: &mut F, node: BareFnArg) -> BareFnArg$/;" f +fold_bin_op vendor/syn/src/gen/fold.rs /^ fn fold_bin_op(&mut self, i: BinOp) -> BinOp {$/;" P interface:Fold +fold_bin_op vendor/syn/src/gen/fold.rs /^pub fn fold_bin_op(f: &mut F, node: BinOp) -> BinOp$/;" f +fold_binding vendor/syn/src/gen/fold.rs /^ fn fold_binding(&mut self, i: Binding) -> Binding {$/;" P interface:Fold +fold_binding vendor/syn/src/gen/fold.rs /^pub fn fold_binding(f: &mut F, node: Binding) -> Binding$/;" f +fold_block vendor/syn/src/gen/fold.rs /^ fn fold_block(&mut self, i: Block) -> Block {$/;" P interface:Fold +fold_block vendor/syn/src/gen/fold.rs /^pub fn fold_block(f: &mut F, node: Block) -> Block$/;" f +fold_bound_lifetimes vendor/syn/src/gen/fold.rs /^ fn fold_bound_lifetimes(&mut self, i: BoundLifetimes) -> BoundLifetimes {$/;" P interface:Fold +fold_bound_lifetimes vendor/syn/src/gen/fold.rs /^pub fn fold_bound_lifetimes(f: &mut F, node: BoundLifetimes) -> BoundLifetimes$/;" f +fold_const_param vendor/syn/src/gen/fold.rs /^ fn fold_const_param(&mut self, i: ConstParam) -> ConstParam {$/;" P interface:Fold +fold_const_param vendor/syn/src/gen/fold.rs /^pub fn fold_const_param(f: &mut F, node: ConstParam) -> ConstParam$/;" f +fold_const_param vendor/syn/tests/test_precedence.rs /^ fn fold_const_param(&mut self, const_param: ConstParam) -> ConstParam {$/;" P implementation:collect_exprs::CollectExprs +fold_constraint vendor/syn/src/gen/fold.rs /^ fn fold_constraint(&mut self, i: Constraint) -> Constraint {$/;" P interface:Fold +fold_constraint vendor/syn/src/gen/fold.rs /^pub fn fold_constraint(f: &mut F, node: Constraint) -> Constraint$/;" f +fold_data vendor/syn/src/gen/fold.rs /^ fn fold_data(&mut self, i: Data) -> Data {$/;" P interface:Fold +fold_data vendor/syn/src/gen/fold.rs /^pub fn fold_data(f: &mut F, node: Data) -> Data$/;" f +fold_data_enum vendor/syn/src/gen/fold.rs /^ fn fold_data_enum(&mut self, i: DataEnum) -> DataEnum {$/;" P interface:Fold +fold_data_enum vendor/syn/src/gen/fold.rs /^pub fn fold_data_enum(f: &mut F, node: DataEnum) -> DataEnum$/;" f +fold_data_struct vendor/syn/src/gen/fold.rs /^ fn fold_data_struct(&mut self, i: DataStruct) -> DataStruct {$/;" P interface:Fold +fold_data_struct vendor/syn/src/gen/fold.rs /^pub fn fold_data_struct(f: &mut F, node: DataStruct) -> DataStruct$/;" f +fold_data_union vendor/syn/src/gen/fold.rs /^ fn fold_data_union(&mut self, i: DataUnion) -> DataUnion {$/;" P interface:Fold +fold_data_union vendor/syn/src/gen/fold.rs /^pub fn fold_data_union(f: &mut F, node: DataUnion) -> DataUnion$/;" f +fold_derive_input vendor/syn/src/gen/fold.rs /^ fn fold_derive_input(&mut self, i: DeriveInput) -> DeriveInput {$/;" P interface:Fold +fold_derive_input vendor/syn/src/gen/fold.rs /^pub fn fold_derive_input(f: &mut F, node: DeriveInput) -> DeriveInput$/;" f +fold_expr vendor/syn/src/gen/fold.rs /^ fn fold_expr(&mut self, i: Expr) -> Expr {$/;" P interface:Fold +fold_expr vendor/syn/src/gen/fold.rs /^pub fn fold_expr(f: &mut F, node: Expr) -> Expr$/;" f +fold_expr vendor/syn/tests/test_precedence.rs /^ fn fold_expr(&mut self, expr: Expr) -> Expr {$/;" P implementation:collect_exprs::CollectExprs +fold_expr vendor/syn/tests/test_precedence.rs /^ fn fold_expr(&mut self, expr: Expr) -> Expr {$/;" P implementation:syn_brackets::ParenthesizeEveryExpr +fold_expr_array vendor/syn/src/gen/fold.rs /^ fn fold_expr_array(&mut self, i: ExprArray) -> ExprArray {$/;" P interface:Fold +fold_expr_array vendor/syn/src/gen/fold.rs /^pub fn fold_expr_array(f: &mut F, node: ExprArray) -> ExprArray$/;" f +fold_expr_assign vendor/syn/src/gen/fold.rs /^ fn fold_expr_assign(&mut self, i: ExprAssign) -> ExprAssign {$/;" P interface:Fold +fold_expr_assign vendor/syn/src/gen/fold.rs /^pub fn fold_expr_assign(f: &mut F, node: ExprAssign) -> ExprAssign$/;" f +fold_expr_assign_op vendor/syn/src/gen/fold.rs /^ fn fold_expr_assign_op(&mut self, i: ExprAssignOp) -> ExprAssignOp {$/;" P interface:Fold +fold_expr_assign_op vendor/syn/src/gen/fold.rs /^pub fn fold_expr_assign_op(f: &mut F, node: ExprAssignOp) -> ExprAssignOp$/;" f +fold_expr_async vendor/syn/src/gen/fold.rs /^ fn fold_expr_async(&mut self, i: ExprAsync) -> ExprAsync {$/;" P interface:Fold +fold_expr_async vendor/syn/src/gen/fold.rs /^pub fn fold_expr_async(f: &mut F, node: ExprAsync) -> ExprAsync$/;" f +fold_expr_await vendor/syn/src/gen/fold.rs /^ fn fold_expr_await(&mut self, i: ExprAwait) -> ExprAwait {$/;" P interface:Fold +fold_expr_await vendor/syn/src/gen/fold.rs /^pub fn fold_expr_await(f: &mut F, node: ExprAwait) -> ExprAwait$/;" f +fold_expr_binary vendor/syn/src/gen/fold.rs /^ fn fold_expr_binary(&mut self, i: ExprBinary) -> ExprBinary {$/;" P interface:Fold +fold_expr_binary vendor/syn/src/gen/fold.rs /^pub fn fold_expr_binary(f: &mut F, node: ExprBinary) -> ExprBinary$/;" f +fold_expr_block vendor/syn/src/gen/fold.rs /^ fn fold_expr_block(&mut self, i: ExprBlock) -> ExprBlock {$/;" P interface:Fold +fold_expr_block vendor/syn/src/gen/fold.rs /^pub fn fold_expr_block(f: &mut F, node: ExprBlock) -> ExprBlock$/;" f +fold_expr_box vendor/syn/src/gen/fold.rs /^ fn fold_expr_box(&mut self, i: ExprBox) -> ExprBox {$/;" P interface:Fold +fold_expr_box vendor/syn/src/gen/fold.rs /^pub fn fold_expr_box(f: &mut F, node: ExprBox) -> ExprBox$/;" f +fold_expr_break vendor/syn/src/gen/fold.rs /^ fn fold_expr_break(&mut self, i: ExprBreak) -> ExprBreak {$/;" P interface:Fold +fold_expr_break vendor/syn/src/gen/fold.rs /^pub fn fold_expr_break(f: &mut F, node: ExprBreak) -> ExprBreak$/;" f +fold_expr_call vendor/syn/src/gen/fold.rs /^ fn fold_expr_call(&mut self, i: ExprCall) -> ExprCall {$/;" P interface:Fold +fold_expr_call vendor/syn/src/gen/fold.rs /^pub fn fold_expr_call(f: &mut F, node: ExprCall) -> ExprCall$/;" f +fold_expr_cast vendor/syn/src/gen/fold.rs /^ fn fold_expr_cast(&mut self, i: ExprCast) -> ExprCast {$/;" P interface:Fold +fold_expr_cast vendor/syn/src/gen/fold.rs /^pub fn fold_expr_cast(f: &mut F, node: ExprCast) -> ExprCast$/;" f +fold_expr_closure vendor/syn/src/gen/fold.rs /^ fn fold_expr_closure(&mut self, i: ExprClosure) -> ExprClosure {$/;" P interface:Fold +fold_expr_closure vendor/syn/src/gen/fold.rs /^pub fn fold_expr_closure(f: &mut F, node: ExprClosure) -> ExprClosure$/;" f +fold_expr_continue vendor/syn/src/gen/fold.rs /^ fn fold_expr_continue(&mut self, i: ExprContinue) -> ExprContinue {$/;" P interface:Fold +fold_expr_continue vendor/syn/src/gen/fold.rs /^pub fn fold_expr_continue(f: &mut F, node: ExprContinue) -> ExprContinue$/;" f +fold_expr_field vendor/syn/src/gen/fold.rs /^ fn fold_expr_field(&mut self, i: ExprField) -> ExprField {$/;" P interface:Fold +fold_expr_field vendor/syn/src/gen/fold.rs /^pub fn fold_expr_field(f: &mut F, node: ExprField) -> ExprField$/;" f +fold_expr_for_loop vendor/syn/src/gen/fold.rs /^ fn fold_expr_for_loop(&mut self, i: ExprForLoop) -> ExprForLoop {$/;" P interface:Fold +fold_expr_for_loop vendor/syn/src/gen/fold.rs /^pub fn fold_expr_for_loop(f: &mut F, node: ExprForLoop) -> ExprForLoop$/;" f +fold_expr_group vendor/syn/src/gen/fold.rs /^ fn fold_expr_group(&mut self, i: ExprGroup) -> ExprGroup {$/;" P interface:Fold +fold_expr_group vendor/syn/src/gen/fold.rs /^pub fn fold_expr_group(f: &mut F, node: ExprGroup) -> ExprGroup$/;" f +fold_expr_if vendor/syn/src/gen/fold.rs /^ fn fold_expr_if(&mut self, i: ExprIf) -> ExprIf {$/;" P interface:Fold +fold_expr_if vendor/syn/src/gen/fold.rs /^pub fn fold_expr_if(f: &mut F, node: ExprIf) -> ExprIf$/;" f +fold_expr_index vendor/syn/src/gen/fold.rs /^ fn fold_expr_index(&mut self, i: ExprIndex) -> ExprIndex {$/;" P interface:Fold +fold_expr_index vendor/syn/src/gen/fold.rs /^pub fn fold_expr_index(f: &mut F, node: ExprIndex) -> ExprIndex$/;" f +fold_expr_let vendor/syn/src/gen/fold.rs /^ fn fold_expr_let(&mut self, i: ExprLet) -> ExprLet {$/;" P interface:Fold +fold_expr_let vendor/syn/src/gen/fold.rs /^pub fn fold_expr_let(f: &mut F, node: ExprLet) -> ExprLet$/;" f +fold_expr_lit vendor/syn/src/gen/fold.rs /^ fn fold_expr_lit(&mut self, i: ExprLit) -> ExprLit {$/;" P interface:Fold +fold_expr_lit vendor/syn/src/gen/fold.rs /^pub fn fold_expr_lit(f: &mut F, node: ExprLit) -> ExprLit$/;" f +fold_expr_loop vendor/syn/src/gen/fold.rs /^ fn fold_expr_loop(&mut self, i: ExprLoop) -> ExprLoop {$/;" P interface:Fold +fold_expr_loop vendor/syn/src/gen/fold.rs /^pub fn fold_expr_loop(f: &mut F, node: ExprLoop) -> ExprLoop$/;" f +fold_expr_macro vendor/syn/src/gen/fold.rs /^ fn fold_expr_macro(&mut self, i: ExprMacro) -> ExprMacro {$/;" P interface:Fold +fold_expr_macro vendor/syn/src/gen/fold.rs /^pub fn fold_expr_macro(f: &mut F, node: ExprMacro) -> ExprMacro$/;" f +fold_expr_match vendor/syn/src/gen/fold.rs /^ fn fold_expr_match(&mut self, i: ExprMatch) -> ExprMatch {$/;" P interface:Fold +fold_expr_match vendor/syn/src/gen/fold.rs /^pub fn fold_expr_match(f: &mut F, node: ExprMatch) -> ExprMatch$/;" f +fold_expr_method_call vendor/syn/src/gen/fold.rs /^ fn fold_expr_method_call(&mut self, i: ExprMethodCall) -> ExprMethodCall {$/;" P interface:Fold +fold_expr_method_call vendor/syn/src/gen/fold.rs /^pub fn fold_expr_method_call(f: &mut F, node: ExprMethodCall) -> ExprMethodCall$/;" f +fold_expr_paren vendor/syn/src/gen/fold.rs /^ fn fold_expr_paren(&mut self, i: ExprParen) -> ExprParen {$/;" P interface:Fold +fold_expr_paren vendor/syn/src/gen/fold.rs /^pub fn fold_expr_paren(f: &mut F, node: ExprParen) -> ExprParen$/;" f +fold_expr_path vendor/syn/src/gen/fold.rs /^ fn fold_expr_path(&mut self, i: ExprPath) -> ExprPath {$/;" P interface:Fold +fold_expr_path vendor/syn/src/gen/fold.rs /^pub fn fold_expr_path(f: &mut F, node: ExprPath) -> ExprPath$/;" f +fold_expr_range vendor/syn/src/gen/fold.rs /^ fn fold_expr_range(&mut self, i: ExprRange) -> ExprRange {$/;" P interface:Fold +fold_expr_range vendor/syn/src/gen/fold.rs /^pub fn fold_expr_range(f: &mut F, node: ExprRange) -> ExprRange$/;" f +fold_expr_reference vendor/syn/src/gen/fold.rs /^ fn fold_expr_reference(&mut self, i: ExprReference) -> ExprReference {$/;" P interface:Fold +fold_expr_reference vendor/syn/src/gen/fold.rs /^pub fn fold_expr_reference(f: &mut F, node: ExprReference) -> ExprReference$/;" f +fold_expr_repeat vendor/syn/src/gen/fold.rs /^ fn fold_expr_repeat(&mut self, i: ExprRepeat) -> ExprRepeat {$/;" P interface:Fold +fold_expr_repeat vendor/syn/src/gen/fold.rs /^pub fn fold_expr_repeat(f: &mut F, node: ExprRepeat) -> ExprRepeat$/;" f +fold_expr_return vendor/syn/src/gen/fold.rs /^ fn fold_expr_return(&mut self, i: ExprReturn) -> ExprReturn {$/;" P interface:Fold +fold_expr_return vendor/syn/src/gen/fold.rs /^pub fn fold_expr_return(f: &mut F, node: ExprReturn) -> ExprReturn$/;" f +fold_expr_struct vendor/syn/src/gen/fold.rs /^ fn fold_expr_struct(&mut self, i: ExprStruct) -> ExprStruct {$/;" P interface:Fold +fold_expr_struct vendor/syn/src/gen/fold.rs /^pub fn fold_expr_struct(f: &mut F, node: ExprStruct) -> ExprStruct$/;" f +fold_expr_try vendor/syn/src/gen/fold.rs /^ fn fold_expr_try(&mut self, i: ExprTry) -> ExprTry {$/;" P interface:Fold +fold_expr_try vendor/syn/src/gen/fold.rs /^pub fn fold_expr_try(f: &mut F, node: ExprTry) -> ExprTry$/;" f +fold_expr_try_block vendor/syn/src/gen/fold.rs /^ fn fold_expr_try_block(&mut self, i: ExprTryBlock) -> ExprTryBlock {$/;" P interface:Fold +fold_expr_try_block vendor/syn/src/gen/fold.rs /^pub fn fold_expr_try_block(f: &mut F, node: ExprTryBlock) -> ExprTryBlock$/;" f +fold_expr_tuple vendor/syn/src/gen/fold.rs /^ fn fold_expr_tuple(&mut self, i: ExprTuple) -> ExprTuple {$/;" P interface:Fold +fold_expr_tuple vendor/syn/src/gen/fold.rs /^pub fn fold_expr_tuple(f: &mut F, node: ExprTuple) -> ExprTuple$/;" f +fold_expr_type vendor/syn/src/gen/fold.rs /^ fn fold_expr_type(&mut self, i: ExprType) -> ExprType {$/;" P interface:Fold +fold_expr_type vendor/syn/src/gen/fold.rs /^pub fn fold_expr_type(f: &mut F, node: ExprType) -> ExprType$/;" f +fold_expr_unary vendor/syn/src/gen/fold.rs /^ fn fold_expr_unary(&mut self, i: ExprUnary) -> ExprUnary {$/;" P interface:Fold +fold_expr_unary vendor/syn/src/gen/fold.rs /^pub fn fold_expr_unary(f: &mut F, node: ExprUnary) -> ExprUnary$/;" f +fold_expr_unsafe vendor/syn/src/gen/fold.rs /^ fn fold_expr_unsafe(&mut self, i: ExprUnsafe) -> ExprUnsafe {$/;" P interface:Fold +fold_expr_unsafe vendor/syn/src/gen/fold.rs /^pub fn fold_expr_unsafe(f: &mut F, node: ExprUnsafe) -> ExprUnsafe$/;" f +fold_expr_while vendor/syn/src/gen/fold.rs /^ fn fold_expr_while(&mut self, i: ExprWhile) -> ExprWhile {$/;" P interface:Fold +fold_expr_while vendor/syn/src/gen/fold.rs /^pub fn fold_expr_while(f: &mut F, node: ExprWhile) -> ExprWhile$/;" f +fold_expr_yield vendor/syn/src/gen/fold.rs /^ fn fold_expr_yield(&mut self, i: ExprYield) -> ExprYield {$/;" P interface:Fold +fold_expr_yield vendor/syn/src/gen/fold.rs /^pub fn fold_expr_yield(f: &mut F, node: ExprYield) -> ExprYield$/;" f +fold_field vendor/syn/src/gen/fold.rs /^ fn fold_field(&mut self, i: Field) -> Field {$/;" P interface:Fold +fold_field vendor/syn/src/gen/fold.rs /^pub fn fold_field(f: &mut F, node: Field) -> Field$/;" f +fold_field_pat vendor/syn/src/gen/fold.rs /^ fn fold_field_pat(&mut self, i: FieldPat) -> FieldPat {$/;" P interface:Fold +fold_field_pat vendor/syn/src/gen/fold.rs /^pub fn fold_field_pat(f: &mut F, node: FieldPat) -> FieldPat$/;" f +fold_field_value vendor/syn/src/gen/fold.rs /^ fn fold_field_value(&mut self, i: FieldValue) -> FieldValue {$/;" P interface:Fold +fold_field_value vendor/syn/src/gen/fold.rs /^pub fn fold_field_value(f: &mut F, node: FieldValue) -> FieldValue$/;" f +fold_fields vendor/syn/src/gen/fold.rs /^ fn fold_fields(&mut self, i: Fields) -> Fields {$/;" P interface:Fold +fold_fields vendor/syn/src/gen/fold.rs /^pub fn fold_fields(f: &mut F, node: Fields) -> Fields$/;" f +fold_fields_named vendor/syn/src/gen/fold.rs /^ fn fold_fields_named(&mut self, i: FieldsNamed) -> FieldsNamed {$/;" P interface:Fold +fold_fields_named vendor/syn/src/gen/fold.rs /^pub fn fold_fields_named(f: &mut F, node: FieldsNamed) -> FieldsNamed$/;" f +fold_fields_unnamed vendor/syn/src/gen/fold.rs /^ fn fold_fields_unnamed(&mut self, i: FieldsUnnamed) -> FieldsUnnamed {$/;" P interface:Fold +fold_fields_unnamed vendor/syn/src/gen/fold.rs /^pub fn fold_fields_unnamed(f: &mut F, node: FieldsUnnamed) -> FieldsUnnamed$/;" f +fold_file vendor/syn/src/gen/fold.rs /^ fn fold_file(&mut self, i: File) -> File {$/;" P interface:Fold +fold_file vendor/syn/src/gen/fold.rs /^pub fn fold_file(f: &mut F, node: File) -> File$/;" f +fold_fn_arg vendor/syn/src/gen/fold.rs /^ fn fold_fn_arg(&mut self, i: FnArg) -> FnArg {$/;" P interface:Fold +fold_fn_arg vendor/syn/src/gen/fold.rs /^pub fn fold_fn_arg(f: &mut F, node: FnArg) -> FnArg$/;" f +fold_foreign_item vendor/syn/src/gen/fold.rs /^ fn fold_foreign_item(&mut self, i: ForeignItem) -> ForeignItem {$/;" P interface:Fold +fold_foreign_item vendor/syn/src/gen/fold.rs /^pub fn fold_foreign_item(f: &mut F, node: ForeignItem) -> ForeignItem$/;" f +fold_foreign_item_fn vendor/syn/src/gen/fold.rs /^ fn fold_foreign_item_fn(&mut self, i: ForeignItemFn) -> ForeignItemFn {$/;" P interface:Fold +fold_foreign_item_fn vendor/syn/src/gen/fold.rs /^pub fn fold_foreign_item_fn(f: &mut F, node: ForeignItemFn) -> ForeignItemFn$/;" f +fold_foreign_item_macro vendor/syn/src/gen/fold.rs /^ fn fold_foreign_item_macro(&mut self, i: ForeignItemMacro) -> ForeignItemMacro {$/;" P interface:Fold +fold_foreign_item_macro vendor/syn/src/gen/fold.rs /^pub fn fold_foreign_item_macro(f: &mut F, node: ForeignItemMacro) -> ForeignItemMacro$/;" f +fold_foreign_item_static vendor/syn/src/gen/fold.rs /^ fn fold_foreign_item_static(&mut self, i: ForeignItemStatic) -> ForeignItemStatic {$/;" P interface:Fold +fold_foreign_item_static vendor/syn/src/gen/fold.rs /^pub fn fold_foreign_item_static($/;" f +fold_foreign_item_type vendor/syn/src/gen/fold.rs /^ fn fold_foreign_item_type(&mut self, i: ForeignItemType) -> ForeignItemType {$/;" P interface:Fold +fold_foreign_item_type vendor/syn/src/gen/fold.rs /^pub fn fold_foreign_item_type(f: &mut F, node: ForeignItemType) -> ForeignItemType$/;" f +fold_generic_argument vendor/syn/src/gen/fold.rs /^ fn fold_generic_argument(&mut self, i: GenericArgument) -> GenericArgument {$/;" P interface:Fold +fold_generic_argument vendor/syn/src/gen/fold.rs /^pub fn fold_generic_argument(f: &mut F, node: GenericArgument) -> GenericArgument$/;" f +fold_generic_argument vendor/syn/tests/test_precedence.rs /^ fn fold_generic_argument(&mut self, arg: GenericArgument) -> GenericArgument {$/;" P implementation:syn_brackets::ParenthesizeEveryExpr +fold_generic_method_argument vendor/syn/src/gen/fold.rs /^ fn fold_generic_method_argument($/;" P interface:Fold +fold_generic_method_argument vendor/syn/src/gen/fold.rs /^pub fn fold_generic_method_argument($/;" f +fold_generic_method_argument vendor/syn/tests/test_precedence.rs /^ fn fold_generic_method_argument($/;" P implementation:syn_brackets::ParenthesizeEveryExpr +fold_generic_param vendor/syn/src/gen/fold.rs /^ fn fold_generic_param(&mut self, i: GenericParam) -> GenericParam {$/;" P interface:Fold +fold_generic_param vendor/syn/src/gen/fold.rs /^pub fn fold_generic_param(f: &mut F, node: GenericParam) -> GenericParam$/;" f +fold_generics vendor/syn/src/gen/fold.rs /^ fn fold_generics(&mut self, i: Generics) -> Generics {$/;" P interface:Fold +fold_generics vendor/syn/src/gen/fold.rs /^pub fn fold_generics(f: &mut F, node: Generics) -> Generics$/;" f +fold_ident vendor/syn/src/gen/fold.rs /^ fn fold_ident(&mut self, i: Ident) -> Ident {$/;" P interface:Fold +fold_ident vendor/syn/src/gen/fold.rs /^pub fn fold_ident(f: &mut F, node: Ident) -> Ident$/;" f +fold_impl_item vendor/syn/src/gen/fold.rs /^ fn fold_impl_item(&mut self, i: ImplItem) -> ImplItem {$/;" P interface:Fold +fold_impl_item vendor/syn/src/gen/fold.rs /^pub fn fold_impl_item(f: &mut F, node: ImplItem) -> ImplItem$/;" f +fold_impl_item_const vendor/syn/src/gen/fold.rs /^ fn fold_impl_item_const(&mut self, i: ImplItemConst) -> ImplItemConst {$/;" P interface:Fold +fold_impl_item_const vendor/syn/src/gen/fold.rs /^pub fn fold_impl_item_const(f: &mut F, node: ImplItemConst) -> ImplItemConst$/;" f +fold_impl_item_macro vendor/syn/src/gen/fold.rs /^ fn fold_impl_item_macro(&mut self, i: ImplItemMacro) -> ImplItemMacro {$/;" P interface:Fold +fold_impl_item_macro vendor/syn/src/gen/fold.rs /^pub fn fold_impl_item_macro(f: &mut F, node: ImplItemMacro) -> ImplItemMacro$/;" f +fold_impl_item_method vendor/syn/src/gen/fold.rs /^ fn fold_impl_item_method(&mut self, i: ImplItemMethod) -> ImplItemMethod {$/;" P interface:Fold +fold_impl_item_method vendor/syn/src/gen/fold.rs /^pub fn fold_impl_item_method(f: &mut F, node: ImplItemMethod) -> ImplItemMethod$/;" f +fold_impl_item_type vendor/syn/src/gen/fold.rs /^ fn fold_impl_item_type(&mut self, i: ImplItemType) -> ImplItemType {$/;" P interface:Fold +fold_impl_item_type vendor/syn/src/gen/fold.rs /^pub fn fold_impl_item_type(f: &mut F, node: ImplItemType) -> ImplItemType$/;" f +fold_index vendor/syn/src/gen/fold.rs /^ fn fold_index(&mut self, i: Index) -> Index {$/;" P interface:Fold +fold_index vendor/syn/src/gen/fold.rs /^pub fn fold_index(f: &mut F, node: Index) -> Index$/;" f +fold_item vendor/syn/src/gen/fold.rs /^ fn fold_item(&mut self, i: Item) -> Item {$/;" P interface:Fold +fold_item vendor/syn/src/gen/fold.rs /^pub fn fold_item(f: &mut F, node: Item) -> Item$/;" f +fold_item_const vendor/syn/src/gen/fold.rs /^ fn fold_item_const(&mut self, i: ItemConst) -> ItemConst {$/;" P interface:Fold +fold_item_const vendor/syn/src/gen/fold.rs /^pub fn fold_item_const(f: &mut F, node: ItemConst) -> ItemConst$/;" f +fold_item_enum vendor/syn/src/gen/fold.rs /^ fn fold_item_enum(&mut self, i: ItemEnum) -> ItemEnum {$/;" P interface:Fold +fold_item_enum vendor/syn/src/gen/fold.rs /^pub fn fold_item_enum(f: &mut F, node: ItemEnum) -> ItemEnum$/;" f +fold_item_extern_crate vendor/syn/src/gen/fold.rs /^ fn fold_item_extern_crate(&mut self, i: ItemExternCrate) -> ItemExternCrate {$/;" P interface:Fold +fold_item_extern_crate vendor/syn/src/gen/fold.rs /^pub fn fold_item_extern_crate(f: &mut F, node: ItemExternCrate) -> ItemExternCrate$/;" f +fold_item_fn vendor/syn/src/gen/fold.rs /^ fn fold_item_fn(&mut self, i: ItemFn) -> ItemFn {$/;" P interface:Fold +fold_item_fn vendor/syn/src/gen/fold.rs /^pub fn fold_item_fn(f: &mut F, node: ItemFn) -> ItemFn$/;" f +fold_item_foreign_mod vendor/syn/src/gen/fold.rs /^ fn fold_item_foreign_mod(&mut self, i: ItemForeignMod) -> ItemForeignMod {$/;" P interface:Fold +fold_item_foreign_mod vendor/syn/src/gen/fold.rs /^pub fn fold_item_foreign_mod(f: &mut F, node: ItemForeignMod) -> ItemForeignMod$/;" f +fold_item_impl vendor/syn/src/gen/fold.rs /^ fn fold_item_impl(&mut self, i: ItemImpl) -> ItemImpl {$/;" P interface:Fold +fold_item_impl vendor/syn/src/gen/fold.rs /^pub fn fold_item_impl(f: &mut F, node: ItemImpl) -> ItemImpl$/;" f +fold_item_macro vendor/syn/src/gen/fold.rs /^ fn fold_item_macro(&mut self, i: ItemMacro) -> ItemMacro {$/;" P interface:Fold +fold_item_macro vendor/syn/src/gen/fold.rs /^pub fn fold_item_macro(f: &mut F, node: ItemMacro) -> ItemMacro$/;" f +fold_item_macro2 vendor/syn/src/gen/fold.rs /^ fn fold_item_macro2(&mut self, i: ItemMacro2) -> ItemMacro2 {$/;" P interface:Fold +fold_item_macro2 vendor/syn/src/gen/fold.rs /^pub fn fold_item_macro2(f: &mut F, node: ItemMacro2) -> ItemMacro2$/;" f +fold_item_mod vendor/syn/src/gen/fold.rs /^ fn fold_item_mod(&mut self, i: ItemMod) -> ItemMod {$/;" P interface:Fold +fold_item_mod vendor/syn/src/gen/fold.rs /^pub fn fold_item_mod(f: &mut F, node: ItemMod) -> ItemMod$/;" f +fold_item_static vendor/syn/src/gen/fold.rs /^ fn fold_item_static(&mut self, i: ItemStatic) -> ItemStatic {$/;" P interface:Fold +fold_item_static vendor/syn/src/gen/fold.rs /^pub fn fold_item_static(f: &mut F, node: ItemStatic) -> ItemStatic$/;" f +fold_item_struct vendor/syn/src/gen/fold.rs /^ fn fold_item_struct(&mut self, i: ItemStruct) -> ItemStruct {$/;" P interface:Fold +fold_item_struct vendor/syn/src/gen/fold.rs /^pub fn fold_item_struct(f: &mut F, node: ItemStruct) -> ItemStruct$/;" f +fold_item_trait vendor/syn/src/gen/fold.rs /^ fn fold_item_trait(&mut self, i: ItemTrait) -> ItemTrait {$/;" P interface:Fold +fold_item_trait vendor/syn/src/gen/fold.rs /^pub fn fold_item_trait(f: &mut F, node: ItemTrait) -> ItemTrait$/;" f +fold_item_trait_alias vendor/syn/src/gen/fold.rs /^ fn fold_item_trait_alias(&mut self, i: ItemTraitAlias) -> ItemTraitAlias {$/;" P interface:Fold +fold_item_trait_alias vendor/syn/src/gen/fold.rs /^pub fn fold_item_trait_alias(f: &mut F, node: ItemTraitAlias) -> ItemTraitAlias$/;" f +fold_item_type vendor/syn/src/gen/fold.rs /^ fn fold_item_type(&mut self, i: ItemType) -> ItemType {$/;" P interface:Fold +fold_item_type vendor/syn/src/gen/fold.rs /^pub fn fold_item_type(f: &mut F, node: ItemType) -> ItemType$/;" f +fold_item_union vendor/syn/src/gen/fold.rs /^ fn fold_item_union(&mut self, i: ItemUnion) -> ItemUnion {$/;" P interface:Fold +fold_item_union vendor/syn/src/gen/fold.rs /^pub fn fold_item_union(f: &mut F, node: ItemUnion) -> ItemUnion$/;" f +fold_item_use vendor/syn/src/gen/fold.rs /^ fn fold_item_use(&mut self, i: ItemUse) -> ItemUse {$/;" P interface:Fold +fold_item_use vendor/syn/src/gen/fold.rs /^pub fn fold_item_use(f: &mut F, node: ItemUse) -> ItemUse$/;" f +fold_label vendor/syn/src/gen/fold.rs /^ fn fold_label(&mut self, i: Label) -> Label {$/;" P interface:Fold +fold_label vendor/syn/src/gen/fold.rs /^pub fn fold_label(f: &mut F, node: Label) -> Label$/;" f +fold_lifetime vendor/syn/src/gen/fold.rs /^ fn fold_lifetime(&mut self, i: Lifetime) -> Lifetime {$/;" P interface:Fold +fold_lifetime vendor/syn/src/gen/fold.rs /^pub fn fold_lifetime(f: &mut F, node: Lifetime) -> Lifetime$/;" f +fold_lifetime_def vendor/syn/src/gen/fold.rs /^ fn fold_lifetime_def(&mut self, i: LifetimeDef) -> LifetimeDef {$/;" P interface:Fold +fold_lifetime_def vendor/syn/src/gen/fold.rs /^pub fn fold_lifetime_def(f: &mut F, node: LifetimeDef) -> LifetimeDef$/;" f +fold_lit vendor/syn/src/gen/fold.rs /^ fn fold_lit(&mut self, i: Lit) -> Lit {$/;" P interface:Fold +fold_lit vendor/syn/src/gen/fold.rs /^pub fn fold_lit(f: &mut F, node: Lit) -> Lit$/;" f +fold_lit_bool vendor/syn/src/gen/fold.rs /^ fn fold_lit_bool(&mut self, i: LitBool) -> LitBool {$/;" P interface:Fold +fold_lit_bool vendor/syn/src/gen/fold.rs /^pub fn fold_lit_bool(f: &mut F, node: LitBool) -> LitBool$/;" f +fold_lit_byte vendor/syn/src/gen/fold.rs /^ fn fold_lit_byte(&mut self, i: LitByte) -> LitByte {$/;" P interface:Fold +fold_lit_byte vendor/syn/src/gen/fold.rs /^pub fn fold_lit_byte(f: &mut F, node: LitByte) -> LitByte$/;" f +fold_lit_byte_str vendor/syn/src/gen/fold.rs /^ fn fold_lit_byte_str(&mut self, i: LitByteStr) -> LitByteStr {$/;" P interface:Fold +fold_lit_byte_str vendor/syn/src/gen/fold.rs /^pub fn fold_lit_byte_str(f: &mut F, node: LitByteStr) -> LitByteStr$/;" f +fold_lit_char vendor/syn/src/gen/fold.rs /^ fn fold_lit_char(&mut self, i: LitChar) -> LitChar {$/;" P interface:Fold +fold_lit_char vendor/syn/src/gen/fold.rs /^pub fn fold_lit_char(f: &mut F, node: LitChar) -> LitChar$/;" f +fold_lit_float vendor/syn/src/gen/fold.rs /^ fn fold_lit_float(&mut self, i: LitFloat) -> LitFloat {$/;" P interface:Fold +fold_lit_float vendor/syn/src/gen/fold.rs /^pub fn fold_lit_float(f: &mut F, node: LitFloat) -> LitFloat$/;" f +fold_lit_int vendor/syn/src/gen/fold.rs /^ fn fold_lit_int(&mut self, i: LitInt) -> LitInt {$/;" P interface:Fold +fold_lit_int vendor/syn/src/gen/fold.rs /^pub fn fold_lit_int(f: &mut F, node: LitInt) -> LitInt$/;" f +fold_lit_str vendor/syn/src/gen/fold.rs /^ fn fold_lit_str(&mut self, i: LitStr) -> LitStr {$/;" P interface:Fold +fold_lit_str vendor/syn/src/gen/fold.rs /^pub fn fold_lit_str(f: &mut F, node: LitStr) -> LitStr$/;" f +fold_local vendor/syn/src/gen/fold.rs /^ fn fold_local(&mut self, i: Local) -> Local {$/;" P interface:Fold +fold_local vendor/syn/src/gen/fold.rs /^pub fn fold_local(f: &mut F, node: Local) -> Local$/;" f +fold_macro vendor/syn/src/gen/fold.rs /^ fn fold_macro(&mut self, i: Macro) -> Macro {$/;" P interface:Fold +fold_macro vendor/syn/src/gen/fold.rs /^pub fn fold_macro(f: &mut F, node: Macro) -> Macro$/;" f +fold_macro_delimiter vendor/syn/src/gen/fold.rs /^ fn fold_macro_delimiter(&mut self, i: MacroDelimiter) -> MacroDelimiter {$/;" P interface:Fold +fold_macro_delimiter vendor/syn/src/gen/fold.rs /^pub fn fold_macro_delimiter(f: &mut F, node: MacroDelimiter) -> MacroDelimiter$/;" f +fold_member vendor/syn/src/gen/fold.rs /^ fn fold_member(&mut self, i: Member) -> Member {$/;" P interface:Fold +fold_member vendor/syn/src/gen/fold.rs /^pub fn fold_member(f: &mut F, node: Member) -> Member$/;" f +fold_meta vendor/syn/src/gen/fold.rs /^ fn fold_meta(&mut self, i: Meta) -> Meta {$/;" P interface:Fold +fold_meta vendor/syn/src/gen/fold.rs /^pub fn fold_meta(f: &mut F, node: Meta) -> Meta$/;" f +fold_meta_list vendor/syn/src/gen/fold.rs /^ fn fold_meta_list(&mut self, i: MetaList) -> MetaList {$/;" P interface:Fold +fold_meta_list vendor/syn/src/gen/fold.rs /^pub fn fold_meta_list(f: &mut F, node: MetaList) -> MetaList$/;" f +fold_meta_name_value vendor/syn/src/gen/fold.rs /^ fn fold_meta_name_value(&mut self, i: MetaNameValue) -> MetaNameValue {$/;" P interface:Fold +fold_meta_name_value vendor/syn/src/gen/fold.rs /^pub fn fold_meta_name_value(f: &mut F, node: MetaNameValue) -> MetaNameValue$/;" f +fold_method_turbofish vendor/syn/src/gen/fold.rs /^ fn fold_method_turbofish(&mut self, i: MethodTurbofish) -> MethodTurbofish {$/;" P interface:Fold +fold_method_turbofish vendor/syn/src/gen/fold.rs /^pub fn fold_method_turbofish(f: &mut F, node: MethodTurbofish) -> MethodTurbofish$/;" f +fold_nested_meta vendor/syn/src/gen/fold.rs /^ fn fold_nested_meta(&mut self, i: NestedMeta) -> NestedMeta {$/;" P interface:Fold +fold_nested_meta vendor/syn/src/gen/fold.rs /^pub fn fold_nested_meta(f: &mut F, node: NestedMeta) -> NestedMeta$/;" f +fold_parenthesized_generic_arguments vendor/syn/src/gen/fold.rs /^ fn fold_parenthesized_generic_arguments($/;" P interface:Fold +fold_parenthesized_generic_arguments vendor/syn/src/gen/fold.rs /^pub fn fold_parenthesized_generic_arguments($/;" f +fold_pat vendor/syn/src/gen/fold.rs /^ fn fold_pat(&mut self, i: Pat) -> Pat {$/;" P interface:Fold +fold_pat vendor/syn/src/gen/fold.rs /^pub fn fold_pat(f: &mut F, node: Pat) -> Pat$/;" f +fold_pat vendor/syn/tests/test_precedence.rs /^ fn fold_pat(&mut self, pat: Pat) -> Pat {$/;" P implementation:syn_brackets::ParenthesizeEveryExpr +fold_pat_box vendor/syn/src/gen/fold.rs /^ fn fold_pat_box(&mut self, i: PatBox) -> PatBox {$/;" P interface:Fold +fold_pat_box vendor/syn/src/gen/fold.rs /^pub fn fold_pat_box(f: &mut F, node: PatBox) -> PatBox$/;" f +fold_pat_ident vendor/syn/src/gen/fold.rs /^ fn fold_pat_ident(&mut self, i: PatIdent) -> PatIdent {$/;" P interface:Fold +fold_pat_ident vendor/syn/src/gen/fold.rs /^pub fn fold_pat_ident(f: &mut F, node: PatIdent) -> PatIdent$/;" f +fold_pat_lit vendor/syn/src/gen/fold.rs /^ fn fold_pat_lit(&mut self, i: PatLit) -> PatLit {$/;" P interface:Fold +fold_pat_lit vendor/syn/src/gen/fold.rs /^pub fn fold_pat_lit(f: &mut F, node: PatLit) -> PatLit$/;" f +fold_pat_macro vendor/syn/src/gen/fold.rs /^ fn fold_pat_macro(&mut self, i: PatMacro) -> PatMacro {$/;" P interface:Fold +fold_pat_macro vendor/syn/src/gen/fold.rs /^pub fn fold_pat_macro(f: &mut F, node: PatMacro) -> PatMacro$/;" f +fold_pat_or vendor/syn/src/gen/fold.rs /^ fn fold_pat_or(&mut self, i: PatOr) -> PatOr {$/;" P interface:Fold +fold_pat_or vendor/syn/src/gen/fold.rs /^pub fn fold_pat_or(f: &mut F, node: PatOr) -> PatOr$/;" f +fold_pat_path vendor/syn/src/gen/fold.rs /^ fn fold_pat_path(&mut self, i: PatPath) -> PatPath {$/;" P interface:Fold +fold_pat_path vendor/syn/src/gen/fold.rs /^pub fn fold_pat_path(f: &mut F, node: PatPath) -> PatPath$/;" f +fold_pat_range vendor/syn/src/gen/fold.rs /^ fn fold_pat_range(&mut self, i: PatRange) -> PatRange {$/;" P interface:Fold +fold_pat_range vendor/syn/src/gen/fold.rs /^pub fn fold_pat_range(f: &mut F, node: PatRange) -> PatRange$/;" f +fold_pat_reference vendor/syn/src/gen/fold.rs /^ fn fold_pat_reference(&mut self, i: PatReference) -> PatReference {$/;" P interface:Fold +fold_pat_reference vendor/syn/src/gen/fold.rs /^pub fn fold_pat_reference(f: &mut F, node: PatReference) -> PatReference$/;" f +fold_pat_rest vendor/syn/src/gen/fold.rs /^ fn fold_pat_rest(&mut self, i: PatRest) -> PatRest {$/;" P interface:Fold +fold_pat_rest vendor/syn/src/gen/fold.rs /^pub fn fold_pat_rest(f: &mut F, node: PatRest) -> PatRest$/;" f +fold_pat_slice vendor/syn/src/gen/fold.rs /^ fn fold_pat_slice(&mut self, i: PatSlice) -> PatSlice {$/;" P interface:Fold +fold_pat_slice vendor/syn/src/gen/fold.rs /^pub fn fold_pat_slice(f: &mut F, node: PatSlice) -> PatSlice$/;" f +fold_pat_struct vendor/syn/src/gen/fold.rs /^ fn fold_pat_struct(&mut self, i: PatStruct) -> PatStruct {$/;" P interface:Fold +fold_pat_struct vendor/syn/src/gen/fold.rs /^pub fn fold_pat_struct(f: &mut F, node: PatStruct) -> PatStruct$/;" f +fold_pat_tuple vendor/syn/src/gen/fold.rs /^ fn fold_pat_tuple(&mut self, i: PatTuple) -> PatTuple {$/;" P interface:Fold +fold_pat_tuple vendor/syn/src/gen/fold.rs /^pub fn fold_pat_tuple(f: &mut F, node: PatTuple) -> PatTuple$/;" f +fold_pat_tuple_struct vendor/syn/src/gen/fold.rs /^ fn fold_pat_tuple_struct(&mut self, i: PatTupleStruct) -> PatTupleStruct {$/;" P interface:Fold +fold_pat_tuple_struct vendor/syn/src/gen/fold.rs /^pub fn fold_pat_tuple_struct(f: &mut F, node: PatTupleStruct) -> PatTupleStruct$/;" f +fold_pat_type vendor/syn/src/gen/fold.rs /^ fn fold_pat_type(&mut self, i: PatType) -> PatType {$/;" P interface:Fold +fold_pat_type vendor/syn/src/gen/fold.rs /^pub fn fold_pat_type(f: &mut F, node: PatType) -> PatType$/;" f +fold_pat_wild vendor/syn/src/gen/fold.rs /^ fn fold_pat_wild(&mut self, i: PatWild) -> PatWild {$/;" P interface:Fold +fold_pat_wild vendor/syn/src/gen/fold.rs /^pub fn fold_pat_wild(f: &mut F, node: PatWild) -> PatWild$/;" f +fold_path vendor/syn/src/gen/fold.rs /^ fn fold_path(&mut self, i: Path) -> Path {$/;" P interface:Fold +fold_path vendor/syn/src/gen/fold.rs /^pub fn fold_path(f: &mut F, node: Path) -> Path$/;" f +fold_path vendor/syn/tests/test_precedence.rs /^ fn fold_path(&mut self, path: Path) -> Path {$/;" P implementation:collect_exprs::CollectExprs +fold_path_arguments vendor/syn/src/gen/fold.rs /^ fn fold_path_arguments(&mut self, i: PathArguments) -> PathArguments {$/;" P interface:Fold +fold_path_arguments vendor/syn/src/gen/fold.rs /^pub fn fold_path_arguments(f: &mut F, node: PathArguments) -> PathArguments$/;" f +fold_path_segment vendor/syn/src/gen/fold.rs /^ fn fold_path_segment(&mut self, i: PathSegment) -> PathSegment {$/;" P interface:Fold +fold_path_segment vendor/syn/src/gen/fold.rs /^pub fn fold_path_segment(f: &mut F, node: PathSegment) -> PathSegment$/;" f +fold_predicate_eq vendor/syn/src/gen/fold.rs /^ fn fold_predicate_eq(&mut self, i: PredicateEq) -> PredicateEq {$/;" P interface:Fold +fold_predicate_eq vendor/syn/src/gen/fold.rs /^pub fn fold_predicate_eq(f: &mut F, node: PredicateEq) -> PredicateEq$/;" f +fold_predicate_lifetime vendor/syn/src/gen/fold.rs /^ fn fold_predicate_lifetime(&mut self, i: PredicateLifetime) -> PredicateLifetime {$/;" P interface:Fold +fold_predicate_lifetime vendor/syn/src/gen/fold.rs /^pub fn fold_predicate_lifetime($/;" f +fold_predicate_type vendor/syn/src/gen/fold.rs /^ fn fold_predicate_type(&mut self, i: PredicateType) -> PredicateType {$/;" P interface:Fold +fold_predicate_type vendor/syn/src/gen/fold.rs /^pub fn fold_predicate_type(f: &mut F, node: PredicateType) -> PredicateType$/;" f +fold_qself vendor/syn/src/gen/fold.rs /^ fn fold_qself(&mut self, i: QSelf) -> QSelf {$/;" P interface:Fold +fold_qself vendor/syn/src/gen/fold.rs /^pub fn fold_qself(f: &mut F, node: QSelf) -> QSelf$/;" f +fold_range_limits vendor/syn/src/gen/fold.rs /^ fn fold_range_limits(&mut self, i: RangeLimits) -> RangeLimits {$/;" P interface:Fold +fold_range_limits vendor/syn/src/gen/fold.rs /^pub fn fold_range_limits(f: &mut F, node: RangeLimits) -> RangeLimits$/;" f +fold_receiver vendor/syn/src/gen/fold.rs /^ fn fold_receiver(&mut self, i: Receiver) -> Receiver {$/;" P interface:Fold +fold_receiver vendor/syn/src/gen/fold.rs /^pub fn fold_receiver(f: &mut F, node: Receiver) -> Receiver$/;" f +fold_return_type vendor/syn/src/gen/fold.rs /^ fn fold_return_type(&mut self, i: ReturnType) -> ReturnType {$/;" P interface:Fold +fold_return_type vendor/syn/src/gen/fold.rs /^pub fn fold_return_type(f: &mut F, node: ReturnType) -> ReturnType$/;" f +fold_signature vendor/syn/src/gen/fold.rs /^ fn fold_signature(&mut self, i: Signature) -> Signature {$/;" P interface:Fold +fold_signature vendor/syn/src/gen/fold.rs /^pub fn fold_signature(f: &mut F, node: Signature) -> Signature$/;" f +fold_span vendor/syn/src/gen/fold.rs /^ fn fold_span(&mut self, i: Span) -> Span {$/;" P interface:Fold +fold_span vendor/syn/src/gen/fold.rs /^pub fn fold_span(f: &mut F, node: Span) -> Span$/;" f +fold_stmt vendor/syn/src/gen/fold.rs /^ fn fold_stmt(&mut self, i: Stmt) -> Stmt {$/;" P interface:Fold +fold_stmt vendor/syn/src/gen/fold.rs /^pub fn fold_stmt(f: &mut F, node: Stmt) -> Stmt$/;" f +fold_stmt vendor/syn/tests/test_precedence.rs /^ fn fold_stmt(&mut self, stmt: Stmt) -> Stmt {$/;" P implementation:syn_brackets::ParenthesizeEveryExpr +fold_trait_bound vendor/syn/src/gen/fold.rs /^ fn fold_trait_bound(&mut self, i: TraitBound) -> TraitBound {$/;" P interface:Fold +fold_trait_bound vendor/syn/src/gen/fold.rs /^pub fn fold_trait_bound(f: &mut F, node: TraitBound) -> TraitBound$/;" f +fold_trait_bound_modifier vendor/syn/src/gen/fold.rs /^ fn fold_trait_bound_modifier($/;" P interface:Fold +fold_trait_bound_modifier vendor/syn/src/gen/fold.rs /^pub fn fold_trait_bound_modifier($/;" f +fold_trait_item vendor/syn/src/gen/fold.rs /^ fn fold_trait_item(&mut self, i: TraitItem) -> TraitItem {$/;" P interface:Fold +fold_trait_item vendor/syn/src/gen/fold.rs /^pub fn fold_trait_item(f: &mut F, node: TraitItem) -> TraitItem$/;" f +fold_trait_item_const vendor/syn/src/gen/fold.rs /^ fn fold_trait_item_const(&mut self, i: TraitItemConst) -> TraitItemConst {$/;" P interface:Fold +fold_trait_item_const vendor/syn/src/gen/fold.rs /^pub fn fold_trait_item_const(f: &mut F, node: TraitItemConst) -> TraitItemConst$/;" f +fold_trait_item_macro vendor/syn/src/gen/fold.rs /^ fn fold_trait_item_macro(&mut self, i: TraitItemMacro) -> TraitItemMacro {$/;" P interface:Fold +fold_trait_item_macro vendor/syn/src/gen/fold.rs /^pub fn fold_trait_item_macro(f: &mut F, node: TraitItemMacro) -> TraitItemMacro$/;" f +fold_trait_item_method vendor/syn/src/gen/fold.rs /^ fn fold_trait_item_method(&mut self, i: TraitItemMethod) -> TraitItemMethod {$/;" P interface:Fold +fold_trait_item_method vendor/syn/src/gen/fold.rs /^pub fn fold_trait_item_method(f: &mut F, node: TraitItemMethod) -> TraitItemMethod$/;" f +fold_trait_item_type vendor/syn/src/gen/fold.rs /^ fn fold_trait_item_type(&mut self, i: TraitItemType) -> TraitItemType {$/;" P interface:Fold +fold_trait_item_type vendor/syn/src/gen/fold.rs /^pub fn fold_trait_item_type(f: &mut F, node: TraitItemType) -> TraitItemType$/;" f +fold_type vendor/syn/src/gen/fold.rs /^ fn fold_type(&mut self, i: Type) -> Type {$/;" P interface:Fold +fold_type vendor/syn/src/gen/fold.rs /^pub fn fold_type(f: &mut F, node: Type) -> Type$/;" f +fold_type vendor/syn/tests/test_precedence.rs /^ fn fold_type(&mut self, ty: Type) -> Type {$/;" P implementation:syn_brackets::ParenthesizeEveryExpr +fold_type_array vendor/syn/src/gen/fold.rs /^ fn fold_type_array(&mut self, i: TypeArray) -> TypeArray {$/;" P interface:Fold +fold_type_array vendor/syn/src/gen/fold.rs /^pub fn fold_type_array(f: &mut F, node: TypeArray) -> TypeArray$/;" f +fold_type_bare_fn vendor/syn/src/gen/fold.rs /^ fn fold_type_bare_fn(&mut self, i: TypeBareFn) -> TypeBareFn {$/;" P interface:Fold +fold_type_bare_fn vendor/syn/src/gen/fold.rs /^pub fn fold_type_bare_fn(f: &mut F, node: TypeBareFn) -> TypeBareFn$/;" f +fold_type_group vendor/syn/src/gen/fold.rs /^ fn fold_type_group(&mut self, i: TypeGroup) -> TypeGroup {$/;" P interface:Fold +fold_type_group vendor/syn/src/gen/fold.rs /^pub fn fold_type_group(f: &mut F, node: TypeGroup) -> TypeGroup$/;" f +fold_type_impl_trait vendor/syn/src/gen/fold.rs /^ fn fold_type_impl_trait(&mut self, i: TypeImplTrait) -> TypeImplTrait {$/;" P interface:Fold +fold_type_impl_trait vendor/syn/src/gen/fold.rs /^pub fn fold_type_impl_trait(f: &mut F, node: TypeImplTrait) -> TypeImplTrait$/;" f +fold_type_infer vendor/syn/src/gen/fold.rs /^ fn fold_type_infer(&mut self, i: TypeInfer) -> TypeInfer {$/;" P interface:Fold +fold_type_infer vendor/syn/src/gen/fold.rs /^pub fn fold_type_infer(f: &mut F, node: TypeInfer) -> TypeInfer$/;" f +fold_type_macro vendor/syn/src/gen/fold.rs /^ fn fold_type_macro(&mut self, i: TypeMacro) -> TypeMacro {$/;" P interface:Fold +fold_type_macro vendor/syn/src/gen/fold.rs /^pub fn fold_type_macro(f: &mut F, node: TypeMacro) -> TypeMacro$/;" f +fold_type_never vendor/syn/src/gen/fold.rs /^ fn fold_type_never(&mut self, i: TypeNever) -> TypeNever {$/;" P interface:Fold +fold_type_never vendor/syn/src/gen/fold.rs /^pub fn fold_type_never(f: &mut F, node: TypeNever) -> TypeNever$/;" f +fold_type_param vendor/syn/src/gen/fold.rs /^ fn fold_type_param(&mut self, i: TypeParam) -> TypeParam {$/;" P interface:Fold +fold_type_param vendor/syn/src/gen/fold.rs /^pub fn fold_type_param(f: &mut F, node: TypeParam) -> TypeParam$/;" f +fold_type_param_bound vendor/syn/src/gen/fold.rs /^ fn fold_type_param_bound(&mut self, i: TypeParamBound) -> TypeParamBound {$/;" P interface:Fold +fold_type_param_bound vendor/syn/src/gen/fold.rs /^pub fn fold_type_param_bound(f: &mut F, node: TypeParamBound) -> TypeParamBound$/;" f +fold_type_paren vendor/syn/src/gen/fold.rs /^ fn fold_type_paren(&mut self, i: TypeParen) -> TypeParen {$/;" P interface:Fold +fold_type_paren vendor/syn/src/gen/fold.rs /^pub fn fold_type_paren(f: &mut F, node: TypeParen) -> TypeParen$/;" f +fold_type_path vendor/syn/src/gen/fold.rs /^ fn fold_type_path(&mut self, i: TypePath) -> TypePath {$/;" P interface:Fold +fold_type_path vendor/syn/src/gen/fold.rs /^pub fn fold_type_path(f: &mut F, node: TypePath) -> TypePath$/;" f +fold_type_ptr vendor/syn/src/gen/fold.rs /^ fn fold_type_ptr(&mut self, i: TypePtr) -> TypePtr {$/;" P interface:Fold +fold_type_ptr vendor/syn/src/gen/fold.rs /^pub fn fold_type_ptr(f: &mut F, node: TypePtr) -> TypePtr$/;" f +fold_type_reference vendor/syn/src/gen/fold.rs /^ fn fold_type_reference(&mut self, i: TypeReference) -> TypeReference {$/;" P interface:Fold +fold_type_reference vendor/syn/src/gen/fold.rs /^pub fn fold_type_reference(f: &mut F, node: TypeReference) -> TypeReference$/;" f +fold_type_slice vendor/syn/src/gen/fold.rs /^ fn fold_type_slice(&mut self, i: TypeSlice) -> TypeSlice {$/;" P interface:Fold +fold_type_slice vendor/syn/src/gen/fold.rs /^pub fn fold_type_slice(f: &mut F, node: TypeSlice) -> TypeSlice$/;" f +fold_type_trait_object vendor/syn/src/gen/fold.rs /^ fn fold_type_trait_object(&mut self, i: TypeTraitObject) -> TypeTraitObject {$/;" P interface:Fold +fold_type_trait_object vendor/syn/src/gen/fold.rs /^pub fn fold_type_trait_object(f: &mut F, node: TypeTraitObject) -> TypeTraitObject$/;" f +fold_type_tuple vendor/syn/src/gen/fold.rs /^ fn fold_type_tuple(&mut self, i: TypeTuple) -> TypeTuple {$/;" P interface:Fold +fold_type_tuple vendor/syn/src/gen/fold.rs /^pub fn fold_type_tuple(f: &mut F, node: TypeTuple) -> TypeTuple$/;" f +fold_un_op vendor/syn/src/gen/fold.rs /^ fn fold_un_op(&mut self, i: UnOp) -> UnOp {$/;" P interface:Fold +fold_un_op vendor/syn/src/gen/fold.rs /^pub fn fold_un_op(f: &mut F, node: UnOp) -> UnOp$/;" f +fold_use_glob vendor/syn/src/gen/fold.rs /^ fn fold_use_glob(&mut self, i: UseGlob) -> UseGlob {$/;" P interface:Fold +fold_use_glob vendor/syn/src/gen/fold.rs /^pub fn fold_use_glob(f: &mut F, node: UseGlob) -> UseGlob$/;" f +fold_use_group vendor/syn/src/gen/fold.rs /^ fn fold_use_group(&mut self, i: UseGroup) -> UseGroup {$/;" P interface:Fold +fold_use_group vendor/syn/src/gen/fold.rs /^pub fn fold_use_group(f: &mut F, node: UseGroup) -> UseGroup$/;" f +fold_use_name vendor/syn/src/gen/fold.rs /^ fn fold_use_name(&mut self, i: UseName) -> UseName {$/;" P interface:Fold +fold_use_name vendor/syn/src/gen/fold.rs /^pub fn fold_use_name(f: &mut F, node: UseName) -> UseName$/;" f +fold_use_path vendor/syn/src/gen/fold.rs /^ fn fold_use_path(&mut self, i: UsePath) -> UsePath {$/;" P interface:Fold +fold_use_path vendor/syn/src/gen/fold.rs /^pub fn fold_use_path(f: &mut F, node: UsePath) -> UsePath$/;" f +fold_use_rename vendor/syn/src/gen/fold.rs /^ fn fold_use_rename(&mut self, i: UseRename) -> UseRename {$/;" P interface:Fold +fold_use_rename vendor/syn/src/gen/fold.rs /^pub fn fold_use_rename(f: &mut F, node: UseRename) -> UseRename$/;" f +fold_use_tree vendor/syn/src/gen/fold.rs /^ fn fold_use_tree(&mut self, i: UseTree) -> UseTree {$/;" P interface:Fold +fold_use_tree vendor/syn/src/gen/fold.rs /^pub fn fold_use_tree(f: &mut F, node: UseTree) -> UseTree$/;" f +fold_variadic vendor/syn/src/gen/fold.rs /^ fn fold_variadic(&mut self, i: Variadic) -> Variadic {$/;" P interface:Fold +fold_variadic vendor/syn/src/gen/fold.rs /^pub fn fold_variadic(f: &mut F, node: Variadic) -> Variadic$/;" f +fold_variant vendor/syn/src/gen/fold.rs /^ fn fold_variant(&mut self, i: Variant) -> Variant {$/;" P interface:Fold +fold_variant vendor/syn/src/gen/fold.rs /^pub fn fold_variant(f: &mut F, node: Variant) -> Variant$/;" f +fold_vis_crate vendor/syn/src/gen/fold.rs /^ fn fold_vis_crate(&mut self, i: VisCrate) -> VisCrate {$/;" P interface:Fold +fold_vis_crate vendor/syn/src/gen/fold.rs /^pub fn fold_vis_crate(f: &mut F, node: VisCrate) -> VisCrate$/;" f +fold_vis_public vendor/syn/src/gen/fold.rs /^ fn fold_vis_public(&mut self, i: VisPublic) -> VisPublic {$/;" P interface:Fold +fold_vis_public vendor/syn/src/gen/fold.rs /^pub fn fold_vis_public(f: &mut F, node: VisPublic) -> VisPublic$/;" f +fold_vis_restricted vendor/syn/src/gen/fold.rs /^ fn fold_vis_restricted(&mut self, i: VisRestricted) -> VisRestricted {$/;" P interface:Fold +fold_vis_restricted vendor/syn/src/gen/fold.rs /^pub fn fold_vis_restricted(f: &mut F, node: VisRestricted) -> VisRestricted$/;" f +fold_visibility vendor/syn/src/gen/fold.rs /^ fn fold_visibility(&mut self, i: Visibility) -> Visibility {$/;" P interface:Fold +fold_visibility vendor/syn/src/gen/fold.rs /^pub fn fold_visibility(f: &mut F, node: Visibility) -> Visibility$/;" f +fold_where_clause vendor/syn/src/gen/fold.rs /^ fn fold_where_clause(&mut self, i: WhereClause) -> WhereClause {$/;" P interface:Fold +fold_where_clause vendor/syn/src/gen/fold.rs /^pub fn fold_where_clause(f: &mut F, node: WhereClause) -> WhereClause$/;" f +fold_where_predicate vendor/syn/src/gen/fold.rs /^ fn fold_where_predicate(&mut self, i: WherePredicate) -> WherePredicate {$/;" P interface:Fold +fold_where_predicate vendor/syn/src/gen/fold.rs /^pub fn fold_where_predicate(f: &mut F, node: WherePredicate) -> WherePredicate$/;" f +follows vendor/elsa/examples/mutable_arena.rs /^ pub follows: FrozenVec>,$/;" m struct:Person +font support/man2html.c /^ int size, align, valign, colspan, rowspan, font, vleft, vright, space,$/;" m struct:TABLEITEM typeref:typename:int file: +foo vendor/async-trait/tests/test.rs /^ async fn foo(&mut self, v: usize) {$/;" P implementation:issue45::Impl +foo vendor/async-trait/tests/test.rs /^ async fn foo(&mut self, v: usize);$/;" P interface:issue45::Parent +foo vendor/async-trait/tests/test.rs /^ async fn foo(&self, _callback: impl FnMut(&str) + Send) {}$/;" P implementation:issue177::Struct +foo vendor/async-trait/tests/test.rs /^ async fn foo(&self, _callback: impl FnMut(&str) + Send) {}$/;" P interface:issue177::Trait +foo vendor/async-trait/tests/test.rs /^ async fn foo(_n: i32) {}$/;" P interface:issue183::Foo +foo vendor/bitflags/src/lib.rs /^ mod foo {$/;" n module:tests::t1 +foo vendor/memoffset/src/offset_of.rs /^ fn foo(_: Pair) -> usize {$/;" f function:tests::inside_generic_method +foo vendor/memoffset/src/span_of.rs /^ foo: u32,$/;" m struct:tests::ig_test::Member +fop builtins_rust/wait/src/signal.rs /^ pub fop: __uint16_t,$/;" m struct:_fpstate +fop builtins_rust/wait/src/signal.rs /^ pub fop: __uint16_t,$/;" m struct:_libc_fpstate +fop r_bash/src/lib.rs /^ pub fop: __uint16_t,$/;" m struct:_fpstate +fop r_bash/src/lib.rs /^ pub fop: __uint16_t,$/;" m struct:_libc_fpstate +fop r_glob/src/lib.rs /^ pub fop: __uint16_t,$/;" m struct:_fpstate +fop r_glob/src/lib.rs /^ pub fop: __uint16_t,$/;" m struct:_libc_fpstate +fop r_readline/src/lib.rs /^ pub fop: __uint16_t,$/;" m struct:_fpstate +fop r_readline/src/lib.rs /^ pub fop: __uint16_t,$/;" m struct:_libc_fpstate +fopen r_bash/src/lib.rs /^ pub fn fopen($/;" f +fopen r_readline/src/lib.rs /^ pub fn fopen($/;" f +fopen vendor/libc/src/fuchsia/mod.rs /^ pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE;$/;" f +fopen vendor/libc/src/solid/mod.rs /^ pub fn fopen(arg1: *const c_char, arg2: *const c_char) -> *mut FILE;$/;" f +fopen vendor/libc/src/unix/mod.rs /^ pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE;$/;" f +fopen vendor/libc/src/vxworks/mod.rs /^ pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE;$/;" f +fopen vendor/libc/src/wasi.rs /^ pub fn fopen(a: *const c_char, b: *const c_char) -> *mut FILE;$/;" f +fopen vendor/libc/src/windows/mod.rs /^ pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE;$/;" f +fopen64 r_bash/src/lib.rs /^ pub fn fopen64($/;" f +fopen64 r_readline/src/lib.rs /^ pub fn fopen64($/;" f +fopen64 vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn fopen64(filename: *const c_char, mode: *const c_char) -> *mut ::FILE;$/;" f +fopen64 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn fopen64(filename: *const c_char, mode: *const c_char) -> *mut ::FILE;$/;" f +fopencookie r_bash/src/lib.rs /^ pub fn fopencookie($/;" f +fopencookie r_readline/src/lib.rs /^ pub fn fopencookie($/;" f +for_com builtins_rust/cd/src/lib.rs /^pub struct for_com {$/;" s +for_com builtins_rust/command/src/lib.rs /^pub struct for_com {$/;" s +for_com builtins_rust/common/src/lib.rs /^pub struct for_com {$/;" s +for_com builtins_rust/complete/src/lib.rs /^pub struct for_com {$/;" s +for_com builtins_rust/declare/src/lib.rs /^pub struct for_com {$/;" s +for_com builtins_rust/fc/src/lib.rs /^pub struct for_com {$/;" s +for_com builtins_rust/fg_bg/src/lib.rs /^pub struct for_com {$/;" s +for_com builtins_rust/getopts/src/lib.rs /^pub struct for_com {$/;" s +for_com builtins_rust/jobs/src/lib.rs /^pub struct for_com {$/;" s +for_com builtins_rust/kill/src/intercdep.rs /^pub struct for_com {$/;" s +for_com builtins_rust/pushd/src/lib.rs /^pub struct for_com {$/;" s +for_com builtins_rust/setattr/src/intercdep.rs /^pub struct for_com {$/;" s +for_com builtins_rust/source/src/lib.rs /^pub struct for_com {$/;" s +for_com builtins_rust/type/src/lib.rs /^pub struct for_com {$/;" s +for_com command.h /^typedef struct for_com {$/;" s +for_com r_bash/src/lib.rs /^pub struct for_com {$/;" s +for_com r_glob/src/lib.rs /^pub struct for_com {$/;" s +for_com r_readline/src/lib.rs /^pub struct for_com {$/;" s +for_command parse.y /^for_command: FOR WORD newline_list DO compound_list DONE$/;" l +for_each vendor/futures-util/src/stream/stream/mod.rs /^ fn for_each(self, f: F) -> ForEach$/;" P interface:StreamExt +for_each vendor/futures-util/src/stream/stream/mod.rs /^mod for_each;$/;" n +for_each_concurrent vendor/futures-util/src/stream/stream/mod.rs /^ fn for_each_concurrent($/;" P interface:StreamExt +for_each_concurrent vendor/futures-util/src/stream/stream/mod.rs /^mod for_each_concurrent;$/;" n +for_test vendor/autocfg/src/tests.rs /^ fn for_test() -> Result {$/;" P implementation:AutoCfg +force Makefile.in /^force:$/;" t +force lib/glob/Makefile.in /^force:$/;" t +force lib/readline/Makefile.in /^force:$/;" t +force lib/sh/Makefile.in /^force:$/;" t +force lib/tilde/Makefile.in /^force:$/;" t +force vendor/once_cell/src/lib.rs /^ pub fn force(this: &Lazy) -> &T {$/;" P implementation:sync::Lazy +force vendor/once_cell/src/lib.rs /^ pub fn force(this: &Lazy) -> &T {$/;" P implementation:unsync::Lazy +force vendor/proc-macro2/src/fallback.rs /^pub fn force() {$/;" f +force_append_history bashhist.c /^int force_append_history;$/;" v typeref:typename:int +force_append_history builtins_rust/history/src/intercdep.rs /^ pub static mut force_append_history: c_int;$/;" v +force_append_history builtins_rust/shopt/src/lib.rs /^ static mut force_append_history: i32;$/;" v +force_append_history r_bash/src/lib.rs /^ pub static mut force_append_history: ::std::os::raw::c_int;$/;" v +force_append_history r_bashhist/src/lib.rs /^pub static mut force_append_history:c_int = 0;$/;" v +force_execute_file builtins/evalfile.c /^force_execute_file (fname, force_noninteractive)$/;" f +force_execute_file r_bash/src/lib.rs /^ pub fn force_execute_file($/;" f +force_fallback vendor/proc-macro2/src/detection.rs /^pub(crate) fn force_fallback() {$/;" f +force_fignore bashline.c /^int force_fignore = 1;$/;" v typeref:typename:int +force_fignore builtins_rust/shopt/src/lib.rs /^ static mut force_fignore: i32;$/;" v +force_fignore r_bash/src/lib.rs /^ pub static mut force_fignore: ::std::os::raw::c_int;$/;" v +force_flush vendor/futures/tests/sink.rs /^ fn force_flush(&mut self) -> Vec {$/;" P implementation:ManualFlush +force_lock vendor/stdext/src/sync/mutex.rs /^ fn force_lock(&self) -> MutexGuard {$/;" P implementation:Mutex +force_lock vendor/stdext/src/sync/mutex.rs /^ fn force_lock(&self) -> MutexGuard;$/;" P interface:MutexExt +force_mut vendor/once_cell/src/lib.rs /^ pub fn force_mut(this: &mut Lazy) -> &mut T {$/;" P implementation:sync::Lazy +force_mut vendor/once_cell/src/lib.rs /^ pub fn force_mut(this: &mut Lazy) -> &mut T {$/;" P implementation:unsync::Lazy +force_read vendor/stdext/src/sync/rw_lock.rs /^ fn force_read(&self) -> RwLockReadGuard {$/;" P implementation:RwLock +force_read vendor/stdext/src/sync/rw_lock.rs /^ fn force_read(&self) -> RwLockReadGuard;$/;" P interface:RwLockExt +force_write vendor/stdext/src/sync/rw_lock.rs /^ fn force_write(&self) -> RwLockWriteGuard {$/;" P implementation:RwLock +force_write vendor/stdext/src/sync/rw_lock.rs /^ fn force_write(&self) -> RwLockWriteGuard;$/;" P interface:RwLockExt +forced_display lib/readline/display.c /^static int forced_display;$/;" v typeref:typename:int file: +forced_interactive flags.c /^int forced_interactive = 0;$/;" v typeref:typename:int +forced_interactive r_bash/src/lib.rs /^ pub static mut forced_interactive: ::std::os::raw::c_int;$/;" v +forget vendor/futures-util/src/future/future/remote_handle.rs /^ pub fn forget(self) {$/;" P implementation:RemoteHandle +fork r_bash/src/lib.rs /^ pub fn fork() -> __pid_t;$/;" f +fork r_glob/src/lib.rs /^ pub fn fork() -> __pid_t;$/;" f +fork r_readline/src/lib.rs /^ pub fn fork() -> __pid_t;$/;" f +fork vendor/libc/src/fuchsia/mod.rs /^ pub fn fork() -> pid_t;$/;" f +fork vendor/libc/src/unix/mod.rs /^ pub fn fork() -> pid_t;$/;" f +fork vendor/syn/src/parse.rs /^ pub fn fork(&self) -> Self {$/;" P implementation:ParseBuffer +forkpty vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn forkpty($/;" f +forkpty vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn forkpty($/;" f +forkpty vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn forkpty($/;" f +forkpty vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn forkpty($/;" f +forkpty vendor/libc/src/unix/haiku/mod.rs /^ pub fn forkpty($/;" f +forkpty vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn forkpty($/;" f +forkpty vendor/libc/src/unix/solarish/compat.rs /^pub unsafe fn forkpty($/;" f +format vendor/quote/src/lib.rs /^mod format;$/;" n +format_ident vendor/quote/src/format.rs /^macro_rules! format_ident {$/;" M +format_ident_impl vendor/quote/src/format.rs /^macro_rules! format_ident_impl {$/;" M +format_message_from_bundle vendor/fluent-fallback/src/bundles.rs /^ fn format_message_from_bundle<'l>($/;" f +format_messages vendor/fluent-fallback/src/bundles.rs /^ pub async fn format_messages<'l>($/;" f +format_messages_from_inner vendor/fluent-fallback/src/bundles.rs /^macro_rules! format_messages_from_inner {$/;" M +format_messages_from_iter vendor/fluent-fallback/src/bundles.rs /^ fn format_messages_from_iter<'l>($/;" f +format_messages_from_stream vendor/fluent-fallback/src/bundles.rs /^ async fn format_messages_from_stream<'l>($/;" f +format_messages_sync vendor/fluent-fallback/src/bundles.rs /^ pub fn format_messages_sync<'l>($/;" f +format_pattern vendor/fluent-bundle/src/bundle.rs /^ pub fn format_pattern<'bundle>($/;" P implementation:FluentBundle +format_value vendor/fluent-fallback/src/bundles.rs /^ pub async fn format_value<'l>($/;" f +format_value_from_inner vendor/fluent-fallback/src/bundles.rs /^macro_rules! format_value_from_inner {$/;" M +format_value_from_iter vendor/fluent-fallback/src/bundles.rs /^ fn format_value_from_iter<'l>($/;" f +format_value_from_stream vendor/fluent-fallback/src/bundles.rs /^ async fn format_value_from_stream<'l>($/;" f +format_value_sync vendor/fluent-fallback/src/bundles.rs /^ pub fn format_value_sync<'l>($/;" f +format_values vendor/fluent-fallback/src/bundles.rs /^ pub async fn format_values<'l>($/;" f +format_values_from_inner vendor/fluent-fallback/src/bundles.rs /^macro_rules! format_values_from_inner {$/;" M +format_values_from_iter vendor/fluent-fallback/src/bundles.rs /^ fn format_values_from_iter<'l>($/;" f +format_values_from_stream vendor/fluent-fallback/src/bundles.rs /^ async fn format_values_from_stream<'l>($/;" f +format_values_sync vendor/fluent-fallback/src/bundles.rs /^ pub fn format_values_sync<'l>($/;" f +formatter vendor/fluent-bundle/src/bundle.rs /^ pub(crate) formatter: Option Option>,$/;" m struct:FluentBundle +forward vendor/futures-util/src/stream/stream/mod.rs /^ fn forward(self, sink: S) -> Forward$/;" P interface:StreamExt +forward vendor/futures-util/src/stream/stream/mod.rs /^mod forward;$/;" n +forward vendor/futures/tests_disabled/stream.rs /^fn forward() {$/;" f +forward vendor/memchr/src/memmem/prefilter/mod.rs /^pub(crate) fn forward($/;" f +forward vendor/memchr/src/memmem/rabinkarp.rs /^ pub(crate) fn forward(needle: &[u8]) -> NeedleHash {$/;" P implementation:NeedleHash +forward vendor/memchr/src/memmem/rarebytes.rs /^ pub(crate) fn forward(needle: &[u8]) -> RareNeedleBytes {$/;" P implementation:RareNeedleBytes +forward vendor/memchr/src/memmem/twoway.rs /^ fn forward($/;" P implementation:Shift +forward vendor/memchr/src/memmem/twoway.rs /^ fn forward(needle: &[u8], kind: SuffixKind) -> Suffix {$/;" P implementation:Suffix +forward_pos vendor/memchr/src/memchr/x86/avx.rs /^fn forward_pos(mask: i32) -> usize {$/;" f +forward_pos vendor/memchr/src/memchr/x86/sse2.rs /^fn forward_pos(mask: i32) -> usize {$/;" f +forward_pos2 vendor/memchr/src/memchr/x86/avx.rs /^fn forward_pos2(mask1: i32, mask2: i32) -> usize {$/;" f +forward_pos2 vendor/memchr/src/memchr/x86/sse2.rs /^fn forward_pos2(mask1: i32, mask2: i32) -> usize {$/;" f +forward_pos3 vendor/memchr/src/memchr/x86/avx.rs /^fn forward_pos3(mask1: i32, mask2: i32, mask3: i32) -> usize {$/;" f +forward_pos3 vendor/memchr/src/memchr/x86/sse2.rs /^fn forward_pos3(mask1: i32, mask2: i32, mask3: i32) -> usize {$/;" f +forward_search vendor/memchr/src/memchr/fallback.rs /^unsafe fn forward_search bool>($/;" f +forward_search1 vendor/memchr/src/memchr/x86/avx.rs /^unsafe fn forward_search1($/;" f +forward_search1 vendor/memchr/src/memchr/x86/sse2.rs /^pub unsafe fn forward_search1($/;" f +forward_search2 vendor/memchr/src/memchr/x86/avx.rs /^unsafe fn forward_search2($/;" f +forward_search2 vendor/memchr/src/memchr/x86/sse2.rs /^unsafe fn forward_search2($/;" f +forward_search3 vendor/memchr/src/memchr/x86/avx.rs /^unsafe fn forward_search3($/;" f +forward_search3 vendor/memchr/src/memchr/x86/sse2.rs /^pub unsafe fn forward_search3($/;" f +foundp lib/intl/dcigettext.c /^ struct known_translation_t **foundp = NULL;$/;" v typeref:struct:known_translation_t ** +fp_ lib/sh/fpurge.c /^# define fp_ /;" d file: +fp_offset r_bash/src/lib.rs /^ pub fp_offset: ::std::os::raw::c_uint,$/;" m struct:__va_list_tag +fp_offset r_glob/src/lib.rs /^ pub fp_offset: ::std::os::raw::c_uint,$/;" m struct:__va_list_tag +fp_offset r_readline/src/lib.rs /^ pub fp_offset: ::std::os::raw::c_uint,$/;" m struct:__va_list_tag +fp_ub lib/sh/fpurge.c /^# define fp_ub /;" d file: +fparseln vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn fparseln($/;" f +fpathconf r_bash/src/lib.rs /^ pub fn fpathconf($/;" f +fpathconf r_glob/src/lib.rs /^ pub fn fpathconf($/;" f +fpathconf r_readline/src/lib.rs /^ pub fn fpathconf($/;" f +fpathconf vendor/libc/src/fuchsia/mod.rs /^ pub fn fpathconf(filedes: ::c_int, name: ::c_int) -> c_long;$/;" f +fpathconf vendor/libc/src/unix/mod.rs /^ pub fn fpathconf(filedes: ::c_int, name: ::c_int) -> c_long;$/;" f +fpathconf vendor/libc/src/vxworks/mod.rs /^ pub fn fpathconf(filedes: ::c_int, name: ::c_int) -> c_long;$/;" f +fpathconf vendor/libc/src/wasi.rs /^ pub fn fpathconf(filedes: ::c_int, name: ::c_int) -> c_long;$/;" f +fpos64_t r_bash/src/lib.rs /^pub type fpos64_t = __fpos64_t;$/;" t +fpos64_t r_readline/src/lib.rs /^pub type fpos64_t = __fpos64_t;$/;" t +fpos64_t vendor/libc/src/fuchsia/mod.rs /^impl ::Clone for fpos64_t {$/;" c +fpos64_t vendor/libc/src/fuchsia/mod.rs /^impl ::Copy for fpos64_t {}$/;" c +fpos64_t vendor/libc/src/fuchsia/mod.rs /^pub enum fpos64_t {} \/\/ FIXME: fill this out with a struct$/;" g +fpos64_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^impl ::Clone for fpos64_t {$/;" c +fpos64_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^impl ::Copy for fpos64_t {}$/;" c +fpos64_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub enum fpos64_t {} \/\/ FIXME: fill this out with a struct$/;" g +fpos64_t vendor/libc/src/unix/linux_like/linux/mod.rs /^impl ::Clone for fpos64_t {$/;" c +fpos64_t vendor/libc/src/unix/linux_like/linux/mod.rs /^impl ::Copy for fpos64_t {}$/;" c +fpos64_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub enum fpos64_t {} \/\/ FIXME: fill this out with a struct$/;" g +fpos_t r_bash/src/lib.rs /^pub type fpos_t = __fpos_t;$/;" t +fpos_t r_readline/src/lib.rs /^pub type fpos_t = __fpos_t;$/;" t +fpos_t vendor/libc/src/fuchsia/mod.rs /^impl ::Clone for fpos_t {$/;" c +fpos_t vendor/libc/src/fuchsia/mod.rs /^impl ::Copy for fpos_t {}$/;" c +fpos_t vendor/libc/src/fuchsia/mod.rs /^pub enum fpos_t {} \/\/ FIXME: fill this out with a struct$/;" g +fpos_t vendor/libc/src/solid/mod.rs /^impl ::Clone for fpos_t {$/;" c +fpos_t vendor/libc/src/solid/mod.rs /^impl ::Copy for fpos_t {}$/;" c +fpos_t vendor/libc/src/solid/mod.rs /^pub enum fpos_t {}$/;" g +fpos_t vendor/libc/src/unix/mod.rs /^impl ::Clone for fpos_t {$/;" c +fpos_t vendor/libc/src/unix/mod.rs /^impl ::Copy for fpos_t {}$/;" c +fpos_t vendor/libc/src/unix/mod.rs /^pub enum fpos_t {} \/\/ FIXME: fill this out with a struct$/;" g +fpos_t vendor/libc/src/vxworks/mod.rs /^impl ::Clone for fpos_t {$/;" c +fpos_t vendor/libc/src/vxworks/mod.rs /^impl ::Copy for fpos_t {}$/;" c +fpos_t vendor/libc/src/vxworks/mod.rs /^pub enum fpos_t {} \/\/ FIXME: fill this out with a struct$/;" g +fpos_t vendor/libc/src/windows/mod.rs /^impl ::Clone for fpos_t {$/;" c +fpos_t vendor/libc/src/windows/mod.rs /^impl ::Copy for fpos_t {}$/;" c +fpos_t vendor/libc/src/windows/mod.rs /^pub enum fpos_t {} \/\/ FIXME: fill this out with a struct$/;" g +fpregs builtins_rust/wait/src/signal.rs /^ pub fpregs: fpregset_t,$/;" m struct:mcontext_t +fpregs r_bash/src/lib.rs /^ pub fpregs: fpregset_t,$/;" m struct:mcontext_t +fpregs r_glob/src/lib.rs /^ pub fpregs: fpregset_t,$/;" m struct:mcontext_t +fpregs r_readline/src/lib.rs /^ pub fpregs: fpregset_t,$/;" m struct:mcontext_t +fpregset_t builtins_rust/wait/src/signal.rs /^pub type fpregset_t = *mut _libc_fpstate;$/;" t +fpregset_t r_bash/src/lib.rs /^pub type fpregset_t = *mut _libc_fpstate;$/;" t +fpregset_t r_glob/src/lib.rs /^pub type fpregset_t = *mut _libc_fpstate;$/;" t +fpregset_t r_readline/src/lib.rs /^pub type fpregset_t = *mut _libc_fpstate;$/;" t +fprint_malloc_stats lib/malloc/stats.c /^fprint_malloc_stats (s, fp)$/;" f +fprintf r_bash/src/lib.rs /^ pub fn fprintf($/;" f +fprintf r_readline/src/lib.rs /^ pub fn fprintf($/;" f +fprintf vendor/libc/src/fuchsia/mod.rs /^ pub fn fprintf(stream: *mut ::FILE, format: *const ::c_char, ...) -> ::c_int;$/;" f +fprintf vendor/libc/src/solid/mod.rs /^ pub fn fprintf(arg1: *mut FILE, arg2: *const c_char, ...) -> c_int;$/;" f +fprintf vendor/libc/src/unix/mod.rs /^ pub fn fprintf(stream: *mut ::FILE, format: *const ::c_char, ...) -> ::c_int;$/;" f +fprintf vendor/libc/src/vxworks/mod.rs /^ pub fn fprintf(stream: *mut ::FILE, format: *const ::c_char, ...) -> ::c_int;$/;" f +fprintf vendor/libc/src/wasi.rs /^ pub fn fprintf(stream: *mut ::FILE, format: *const ::c_char, ...) -> ::c_int;$/;" f +fprintf vendor/libc/src/windows/mod.rs /^ pub fn fprintf(stream: *mut FILE, format: *const c_char, ...) -> ::c_int;$/;" f +fpstate builtins_rust/wait/src/signal.rs /^ pub fpstate: _fpstate,$/;" m struct:_xstate +fpstate r_bash/src/lib.rs /^ pub fpstate: _fpstate,$/;" m struct:_xstate +fpstate r_glob/src/lib.rs /^ pub fpstate: _fpstate,$/;" m struct:_xstate +fpstate r_readline/src/lib.rs /^ pub fpstate: _fpstate,$/;" m struct:_xstate +fptr r_bash/src/lib.rs /^ pub fptr: *mut i32,$/;" m struct:random_data +fptr r_glob/src/lib.rs /^ pub fptr: *mut i32,$/;" m struct:random_data +fptr r_readline/src/lib.rs /^ pub fptr: *mut i32,$/;" m struct:random_data +fpurge builtins_rust/common/src/lib.rs /^ fn fpurge(stream: *mut FILE) -> i32;$/;" f +fpurge externs.h /^# define fpurge /;" d +fpurge lib/sh/fpurge.c /^# define fpurge /;" d file: +fpurge lib/sh/fpurge.c /^fpurge (FILE *fp)$/;" f typeref:typename:int +fpurge.o lib/sh/Makefile.in /^fpurge.o: ${BUILD_DIR}\/config.h$/;" t +fpurge.o lib/sh/Makefile.in /^fpurge.o: fpurge.c$/;" t +fputc r_bash/src/lib.rs /^ pub fn fputc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fputc r_readline/src/lib.rs /^ pub fn fputc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +fputc vendor/libc/src/fuchsia/mod.rs /^ pub fn fputc(c: c_int, stream: *mut FILE) -> c_int;$/;" f +fputc vendor/libc/src/solid/mod.rs /^ pub fn fputc(arg1: c_int, arg2: *mut FILE) -> c_int;$/;" f +fputc vendor/libc/src/unix/mod.rs /^ pub fn fputc(c: c_int, stream: *mut FILE) -> c_int;$/;" f +fputc vendor/libc/src/vxworks/mod.rs /^ pub fn fputc(c: c_int, stream: *mut FILE) -> c_int;$/;" f +fputc vendor/libc/src/wasi.rs /^ pub fn fputc(a: c_int, f: *mut FILE) -> c_int;$/;" f +fputc vendor/libc/src/windows/mod.rs /^ pub fn fputc(c: c_int, stream: *mut FILE) -> c_int;$/;" f +fputc_unlocked r_bash/src/lib.rs /^ pub fn fputc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE)$/;" f +fputc_unlocked r_readline/src/lib.rs /^ pub fn fputc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE)$/;" f +fputs r_bash/src/lib.rs /^ pub fn fputs(__s: *const ::std::os::raw::c_char, __stream: *mut FILE) -> ::std::os::raw::c_i/;" f +fputs r_readline/src/lib.rs /^ pub fn fputs(__s: *const ::std::os::raw::c_char, __stream: *mut FILE) -> ::std::os::raw::c_i/;" f +fputs vendor/libc/src/fuchsia/mod.rs /^ pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int;$/;" f +fputs vendor/libc/src/solid/mod.rs /^ pub fn fputs(arg1: *const c_char, arg2: *mut FILE) -> c_int;$/;" f +fputs vendor/libc/src/unix/mod.rs /^ pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int;$/;" f +fputs vendor/libc/src/vxworks/mod.rs /^ pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int;$/;" f +fputs vendor/libc/src/wasi.rs /^ pub fn fputs(a: *const c_char, f: *mut FILE) -> c_int;$/;" f +fputs vendor/libc/src/windows/mod.rs /^ pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int;$/;" f +fputs_unlocked r_bash/src/lib.rs /^ pub fn fputs_unlocked($/;" f +fputs_unlocked r_readline/src/lib.rs /^ pub fn fputs_unlocked($/;" f +fputwc r_bash/src/lib.rs /^ pub fn fputwc(__wc: wchar_t, __stream: *mut __FILE) -> wint_t;$/;" f +fputwc r_glob/src/lib.rs /^ pub fn fputwc(__wc: wchar_t, __stream: *mut __FILE) -> wint_t;$/;" f +fputwc r_readline/src/lib.rs /^ pub fn fputwc(__wc: wchar_t, __stream: *mut __FILE) -> wint_t;$/;" f +fputwc_unlocked r_bash/src/lib.rs /^ pub fn fputwc_unlocked(__wc: wchar_t, __stream: *mut __FILE) -> wint_t;$/;" f +fputwc_unlocked r_glob/src/lib.rs /^ pub fn fputwc_unlocked(__wc: wchar_t, __stream: *mut __FILE) -> wint_t;$/;" f +fputwc_unlocked r_readline/src/lib.rs /^ pub fn fputwc_unlocked(__wc: wchar_t, __stream: *mut __FILE) -> wint_t;$/;" f +fputws r_bash/src/lib.rs /^ pub fn fputws(__ws: *const wchar_t, __stream: *mut __FILE) -> ::std::os::raw::c_int;$/;" f +fputws r_glob/src/lib.rs /^ pub fn fputws(__ws: *const wchar_t, __stream: *mut __FILE) -> ::std::os::raw::c_int;$/;" f +fputws r_readline/src/lib.rs /^ pub fn fputws(__ws: *const wchar_t, __stream: *mut __FILE) -> ::std::os::raw::c_int;$/;" f +fputws_unlocked r_bash/src/lib.rs /^ pub fn fputws_unlocked(__ws: *const wchar_t, __stream: *mut __FILE) -> ::std::os::raw::c_int/;" f +fputws_unlocked r_glob/src/lib.rs /^ pub fn fputws_unlocked(__ws: *const wchar_t, __stream: *mut __FILE) -> ::std::os::raw::c_int/;" f +fputws_unlocked r_readline/src/lib.rs /^ pub fn fputws_unlocked(__ws: *const wchar_t, __stream: *mut __FILE) -> ::std::os::raw::c_int/;" f +frac_digits r_bash/src/lib.rs /^ pub frac_digits: ::std::os::raw::c_char,$/;" m struct:lconv +fragment_size vendor/nix/src/sys/statvfs.rs /^ pub fn fragment_size(&self) -> c_ulong {$/;" P implementation:Statvfs +fread r_bash/src/lib.rs /^ pub fn fread($/;" f +fread r_readline/src/lib.rs /^ pub fn fread($/;" f +fread vendor/libc/src/fuchsia/mod.rs /^ pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;$/;" f +fread vendor/libc/src/solid/mod.rs /^ pub fn fread(arg1: *mut c_void, arg2: size_t, arg3: size_t, arg4: *mut FILE) -> size_t;$/;" f +fread vendor/libc/src/unix/mod.rs /^ pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;$/;" f +fread vendor/libc/src/vxworks/mod.rs /^ pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;$/;" f +fread vendor/libc/src/wasi.rs /^ pub fn fread(buf: *mut c_void, a: size_t, b: size_t, f: *mut FILE) -> size_t;$/;" f +fread vendor/libc/src/windows/mod.rs /^ pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;$/;" f +fread_unlocked r_bash/src/lib.rs /^ pub fn fread_unlocked($/;" f +fread_unlocked r_readline/src/lib.rs /^ pub fn fread_unlocked($/;" f +fread_unlocked vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn fread_unlocked($/;" f +free builtins_rust/alias/src/lib.rs /^ fn free(__ptr: *mut libc::c_void);$/;" f +free builtins_rust/enable/src/lib.rs /^ fn free(__ptr: *mut libc::c_void);$/;" f +free builtins_rust/shopt/src/lib.rs /^ fn free(__ptr: *mut libc::c_void);$/;" f +free lib/malloc/malloc.c /^free (mem)$/;" f +free r_bash/src/lib.rs /^ pub fn free(__ptr: *mut ::std::os::raw::c_void);$/;" f +free r_glob/src/lib.rs /^ pub fn free(__ptr: *mut ::std::os::raw::c_void);$/;" f +free r_readline/src/lib.rs /^ pub fn free(__ptr: *mut ::std::os::raw::c_void);$/;" f +free vendor/libc/src/fuchsia/mod.rs /^ pub fn free(p: *mut c_void);$/;" f +free vendor/libc/src/solid/mod.rs /^ pub fn free(arg1: *mut c_void);$/;" f +free vendor/libc/src/unix/mod.rs /^ pub fn free(p: *mut c_void);$/;" f +free vendor/libc/src/vxworks/mod.rs /^ pub fn free(p: *mut c_void);$/;" f +free vendor/libc/src/wasi.rs /^ pub fn free(ptr: *mut c_void);$/;" f +free vendor/libc/src/windows/mod.rs /^ pub fn free(p: *mut c_void);$/;" f +free xmalloc.h /^#define free(/;" d +free_alias_data alias.c /^free_alias_data (data)$/;" f file: +free_buffered_stream input.c /^free_buffered_stream (bp)$/;" f +free_buffered_stream r_bash/src/lib.rs /^ pub fn free_buffered_stream(arg1: *mut BUFFERED_STREAM);$/;" f +free_builtin builtins/mkbuiltins.c /^free_builtin (builtin)$/;" f file: +free_defs builtins/mkbuiltins.c /^free_defs (defs)$/;" f +free_dollar_vars variables.c /^free_dollar_vars ()$/;" f typeref:typename:void file: +free_history_entry lib/readline/history.c /^free_history_entry (HIST_ENTRY *hist)$/;" f typeref:typename:histdata_t +free_history_entry r_bashhist/src/lib.rs /^ fn free_history_entry(_: *mut HIST_ENTRY) -> histdata_t;$/;" f +free_history_entry r_readline/src/lib.rs /^ pub fn free_history_entry(arg1: *mut HIST_ENTRY) -> histdata_t;$/;" f +free_lvalue expr.c /^free_lvalue (lv)$/;" f file: +free_mail_files mailcheck.c /^free_mail_files ()$/;" f typeref:typename:void +free_mail_files r_bash/src/lib.rs /^ pub fn free_mail_files();$/;" f +free_progcomp pcomplib.c /^free_progcomp (data)$/;" f file: +free_pushed_string_input r_bash/src/lib.rs /^ pub fn free_pushed_string_input();$/;" f +free_safely builtins/mkbuiltins.c /^#define free_safely(/;" d file: +free_saved_dollar_vars variables.c /^free_saved_dollar_vars (args)$/;" f file: +free_trap_command trap.c /^free_trap_command (sig)$/;" f file: +free_trap_string trap.c /^free_trap_string (sig)$/;" f file: +free_trap_strings builtins_rust/trap/src/intercdep.rs /^ pub fn free_trap_strings();$/;" f +free_trap_strings r_bash/src/lib.rs /^ pub fn free_trap_strings();$/;" f +free_trap_strings r_glob/src/lib.rs /^ pub fn free_trap_strings();$/;" f +free_trap_strings r_readline/src/lib.rs /^ pub fn free_trap_strings();$/;" f +free_trap_strings trap.c /^free_trap_strings ()$/;" f typeref:typename:void +free_undo_list lib/readline/compat.c /^free_undo_list (void)$/;" f typeref:typename:void +free_variable_hash_data variables.c /^free_variable_hash_data (data)$/;" f file: +freea lib/intl/dcigettext.c /^# define freea(/;" d file: +freea lib/intl/loadmsgcat.c /^# define freea(/;" d file: +freea lib/intl/localealias.c /^# define freea(/;" d file: +freeaddrinfo vendor/libc/src/fuchsia/mod.rs /^ pub fn freeaddrinfo(res: *mut addrinfo);$/;" f +freeaddrinfo vendor/libc/src/unix/mod.rs /^ pub fn freeaddrinfo(res: *mut addrinfo);$/;" f +freeaddrinfo vendor/libc/src/vxworks/mod.rs /^ pub fn freeaddrinfo(res: *mut addrinfo);$/;" f +freeaddrinfo vendor/winapi/src/um/ws2tcpip.rs /^ pub fn freeaddrinfo($/;" f +freebsd_ioctls vendor/nix/test/sys/test_ioctl.rs /^mod freebsd_ioctls {$/;" n +freeifaddrs vendor/libc/src/fuchsia/mod.rs /^ pub fn freeifaddrs(ifa: *mut ::ifaddrs);$/;" f +freeifaddrs vendor/libc/src/unix/bsd/mod.rs /^ pub fn freeifaddrs(ifa: *mut ::ifaddrs);$/;" f +freeifaddrs vendor/libc/src/unix/haiku/mod.rs /^ pub fn freeifaddrs(ifa: *mut ::ifaddrs);$/;" f +freeifaddrs vendor/libc/src/unix/linux_like/mod.rs /^ pub fn freeifaddrs(ifa: *mut ::ifaddrs);$/;" f +freeifaddrs vendor/libc/src/unix/solarish/mod.rs /^ pub fn freeifaddrs(ifa: *mut ::ifaddrs);$/;" f +freelocale r_bash/src/lib.rs /^ pub fn freelocale(__dataset: locale_t);$/;" f +freelocale vendor/libc/src/fuchsia/mod.rs /^ pub fn freelocale(loc: ::locale_t);$/;" f +freelocale vendor/libc/src/solid/mod.rs /^ pub fn freelocale(arg1: locale_t);$/;" f +freelocale vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn freelocale(loc: ::locale_t) -> ::c_int;$/;" f +freelocale vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn freelocale(loc: ::locale_t);$/;" f +freelocale vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs /^ pub fn freelocale(loc: ::locale_t) -> ::c_int;$/;" f +freelocale vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^ pub fn freelocale(loc: ::locale_t);$/;" f +freelocale vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn freelocale(loc: ::locale_t);$/;" f +freelocale vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn freelocale(loc: ::locale_t);$/;" f +freelocale vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn freelocale(loc: ::locale_t);$/;" f +freelocale vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn freelocale(loc: ::locale_t);$/;" f +freelocale vendor/libc/src/unix/linux_like/mod.rs /^ pub fn freelocale(loc: ::locale_t);$/;" f +freelocale vendor/libc/src/unix/solarish/mod.rs /^ pub fn freelocale(loc: ::locale_t);$/;" f +freelocale vendor/libc/src/wasi.rs /^ pub fn freelocale(loc: ::locale_t);$/;" f +freewords lib/readline/histexpand.c /^freewords (char **words, int start)$/;" f typeref:typename:void file: +freeze_jobs_list jobs.c /^freeze_jobs_list ()$/;" f typeref:typename:int +freeze_jobs_list nojobs.c /^freeze_jobs_list ()$/;" f typeref:typename:int +freeze_jobs_list r_bash/src/lib.rs /^ pub fn freeze_jobs_list() -> ::std::os::raw::c_int;$/;" f +freeze_jobs_list r_jobs/src/lib.rs /^pub unsafe extern "C" fn freeze_jobs_list() -> c_int {$/;" f +freezero vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn freezero(ptr: *mut ::c_void, size: ::size_t);$/;" f +freezero vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn freezero(ptr: *mut ::c_void, size: ::size_t);$/;" f +fremovexattr vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn fremovexattr(filedes: ::c_int, name: *const ::c_char, flags: ::c_int) -> ::c_int;$/;" f +fremovexattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn fremovexattr(fd: ::c_int, path: *const ::c_char, name: *const ::c_char) -> ::c_int;$/;" f +fremovexattr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn fremovexattr(filedes: ::c_int, name: *const c_char) -> ::c_int;$/;" f +fremovexattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn fremovexattr(filedes: ::c_int, name: *const c_char) -> ::c_int;$/;" f +freopen r_bash/src/lib.rs /^ pub fn freopen($/;" f +freopen r_readline/src/lib.rs /^ pub fn freopen($/;" f +freopen vendor/libc/src/fuchsia/mod.rs /^ pub fn freopen(filename: *const c_char, mode: *const c_char, file: *mut FILE) -> *mut FILE;$/;" f +freopen vendor/libc/src/solid/mod.rs /^ pub fn freopen(arg1: *const c_char, arg2: *const c_char, arg3: *mut FILE) -> *mut FILE;$/;" f +freopen vendor/libc/src/unix/mod.rs /^ pub fn freopen(filename: *const c_char, mode: *const c_char, file: *mut FILE) -> *mut FILE;$/;" f +freopen vendor/libc/src/vxworks/mod.rs /^ pub fn freopen(filename: *const c_char, mode: *const c_char, file: *mut FILE) -> *mut FILE;$/;" f +freopen vendor/libc/src/wasi.rs /^ pub fn freopen(a: *const c_char, b: *const c_char, f: *mut FILE) -> *mut FILE;$/;" f +freopen vendor/libc/src/windows/mod.rs /^ pub fn freopen(filename: *const c_char, mode: *const c_char, file: *mut FILE) -> *mut FILE;$/;" f +freopen64 r_bash/src/lib.rs /^ pub fn freopen64($/;" f +freopen64 r_readline/src/lib.rs /^ pub fn freopen64($/;" f +freopen64 vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn freopen64($/;" f +freopen64 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn freopen64($/;" f +freq r_bash/src/lib.rs /^ pub freq: __syscall_slong_t,$/;" m struct:timex +freq r_readline/src/lib.rs /^ pub freq: __syscall_slong_t,$/;" m struct:timex +freqy_find vendor/memchr/src/memmem/prefilter/fallback.rs /^ fn freqy_find(haystack: &[u8], needle: &[u8]) -> Option {$/;" f module:tests +freqy_forward vendor/memchr/src/memmem/prefilter/fallback.rs /^ fn freqy_forward() {$/;" f module:tests +friends vendor/elsa/examples/arena.rs /^ pub friends: Vec>,$/;" m struct:Thing +from vendor/bitflags/tests/compile-pass/impls/convert.rs /^ fn from(v: u32) -> Flags {$/;" P implementation:Flags +from vendor/elsa/src/index_map.rs /^ fn from(map: IndexMap) -> Self {$/;" P implementation:FrozenIndexMap +from vendor/elsa/src/index_set.rs /^ fn from(set: IndexSet) -> Self {$/;" P implementation:FrozenIndexSet +from vendor/elsa/src/map.rs /^ fn from(map: BTreeMap) -> Self {$/;" P implementation:FrozenBTreeMap +from vendor/elsa/src/map.rs /^ fn from(map: HashMap) -> Self {$/;" P implementation:FrozenMap +from vendor/elsa/src/sync.rs /^ fn from(map: BTreeMap) -> Self {$/;" P implementation:FrozenBTreeMap +from vendor/elsa/src/vec.rs /^ fn from(vec: Vec) -> Self {$/;" P implementation:FrozenVec +from vendor/fluent-bundle/src/errors.rs /^ fn from(error: ParserError) -> Self {$/;" P implementation:FluentError +from vendor/fluent-bundle/src/errors.rs /^ fn from(error: ResolverError) -> Self {$/;" P implementation:FluentError +from vendor/fluent-bundle/src/message.rs /^ fn from(attr: &'m ast::Attribute<&'m str>) -> Self {$/;" P implementation:FluentAttribute +from vendor/fluent-bundle/src/message.rs /^ fn from(msg: &'m ast::Message<&'m str>) -> Self {$/;" P implementation:FluentMessage +from vendor/fluent-bundle/src/resolver/errors.rs /^ fn from(exp: &InlineExpression) -> Self {$/;" f +from vendor/fluent-bundle/src/types/mod.rs /^ fn from(s: &'source str) -> Self {$/;" P implementation:FluentValue +from vendor/fluent-bundle/src/types/mod.rs /^ fn from(s: Cow<'source, str>) -> Self {$/;" P implementation:FluentValue +from vendor/fluent-bundle/src/types/mod.rs /^ fn from(s: String) -> Self {$/;" P implementation:FluentValue +from vendor/fluent-bundle/src/types/number.rs /^ fn from(input: &FluentNumber) -> Self {$/;" P implementation:PluralOperands +from vendor/fluent-bundle/src/types/number.rs /^ fn from(input: &str) -> Self {$/;" P implementation:FluentNumberCurrencyDisplayStyle +from vendor/fluent-bundle/src/types/number.rs /^ fn from(input: &str) -> Self {$/;" P implementation:FluentNumberStyle +from vendor/fluent-bundle/src/types/number.rs /^ fn from(input: FluentNumber) -> Self {$/;" P implementation:FluentValue +from vendor/fluent-fallback/src/errors.rs /^ fn from(error: FluentError) -> Self {$/;" P implementation:LocalizationError +from vendor/fluent-fallback/src/pin_cell/mod.rs /^ fn from(cell: RefCell) -> PinCell {$/;" P implementation:PinCell +from vendor/fluent-fallback/src/pin_cell/mod.rs /^ fn from(input: PinCell) -> Self {$/;" P implementation:RefCell +from vendor/fluent-fallback/src/pin_cell/mod.rs /^ fn from(value: T) -> PinCell {$/;" P implementation:PinCell +from vendor/fluent-fallback/src/types.rs /^ fn from(id: &'l str) -> Self {$/;" P implementation:L10nKey +from vendor/fluent-fallback/src/types.rs /^ fn from(id: S) -> Self {$/;" P implementation:ResourceId +from vendor/fluent-syntax/src/ast/helper.rs /^ fn from(input: CommentDef) -> Self {$/;" P implementation:Comment +from vendor/futures-task/src/future_obj.rs /^ fn from(boxed: Box) -> Self {$/;" P implementation:if_alloc::FutureObj +from vendor/futures-task/src/future_obj.rs /^ fn from(boxed: Box) -> Self {$/;" P implementation:if_alloc::LocalFutureObj +from vendor/futures-task/src/future_obj.rs /^ fn from(boxed: Box + 'a>) -> Self {$/;" P implementation:if_alloc::LocalFutureObj +from vendor/futures-task/src/future_obj.rs /^ fn from(boxed: Box + Send + 'a>) -> Self {$/;" P implementation:if_alloc::FutureObj +from vendor/futures-task/src/future_obj.rs /^ fn from(boxed: Pin>) -> Self {$/;" P implementation:if_alloc::FutureObj +from vendor/futures-task/src/future_obj.rs /^ fn from(boxed: Pin>) -> Self {$/;" P implementation:if_alloc::LocalFutureObj +from vendor/futures-task/src/future_obj.rs /^ fn from(boxed: Pin + 'a>>) -> Self {$/;" P implementation:if_alloc::LocalFutureObj +from vendor/futures-task/src/future_obj.rs /^ fn from(boxed: Pin + Send + 'a>>) -> Self {$/;" P implementation:if_alloc::FutureObj +from vendor/futures-task/src/future_obj.rs /^ fn from(f: FutureObj<'a, T>) -> Self {$/;" P implementation:LocalFutureObj +from vendor/futures-util/src/compat/compat01as03.rs /^ fn from(handle: WakerToHandle<'_>) -> Self {$/;" P implementation:NotifyHandle01 +from vendor/futures-util/src/future/option.rs /^ fn from(option: Option) -> Self {$/;" P implementation:OptionFuture +from vendor/futures-util/src/lock/mutex.rs /^ fn from(t: T) -> Self {$/;" P implementation:Mutex +from vendor/futures/tests/sink.rs /^ fn from(_: mpsc::SendError) -> Self {$/;" P implementation:err_into::ErrIntoTest +from vendor/futures/tests_disabled/stream.rs /^ fn from(i: u32) -> Self {$/;" P implementation:FromErrTest +from vendor/libloading/src/safe.rs /^ fn from(lib: Library) -> imp::Library {$/;" P implementation:Library +from vendor/libloading/src/safe.rs /^ fn from(lib: imp::Library) -> Library {$/;" P implementation:Library +from vendor/nix/src/dir.rs /^ pub fn from(fd: F) -> Result {$/;" P implementation:Dir +from vendor/nix/src/errno.rs /^ fn from(err: Errno) -> Self {$/;" P implementation:Error +from vendor/nix/src/mount/bsd.rs /^ fn from(err: NmountError) -> Self {$/;" P implementation:Error +from vendor/nix/src/sys/socket/addr.rs /^ fn from(addr: SockaddrIn) -> Self {$/;" P implementation:SocketAddrV4 +from vendor/nix/src/sys/socket/addr.rs /^ fn from(addr: SockaddrIn6) -> Self {$/;" P implementation:SocketAddrV6 +from vendor/nix/src/sys/socket/addr.rs /^ fn from(addr: net::SocketAddrV4) -> Self {$/;" P implementation:SockaddrIn +from vendor/nix/src/sys/socket/addr.rs /^ fn from(addr: net::SocketAddrV6) -> Self {$/;" P implementation:SockaddrIn6 +from vendor/nix/src/sys/socket/addr.rs /^ fn from(s: net::SocketAddr) -> Self {$/;" P implementation:SockaddrStorage +from vendor/nix/src/sys/socket/addr.rs /^ fn from(s: net::SocketAddrV4) -> Self {$/;" P implementation:SockaddrStorage +from vendor/nix/src/sys/socket/addr.rs /^ fn from(s: net::SocketAddrV6) -> Self {$/;" P implementation:SockaddrStorage +from vendor/nix/src/sys/termios.rs /^ fn from(b: BaudRate) -> u32 {$/;" P implementation:u32 +from vendor/nix/src/sys/termios.rs /^ fn from(b: BaudRate) -> u8 {$/;" P implementation:u8 +from vendor/nix/src/sys/termios.rs /^ fn from(termios: Termios) -> Self {$/;" P implementation:termios +from vendor/nix/src/sys/termios.rs /^ fn from(termios: libc::termios) -> Self {$/;" P implementation:Termios +from vendor/nix/src/sys/time.rs /^ fn from(expiration: Expiration) -> TimerSpec {$/;" P implementation:timer::TimerSpec +from vendor/nix/src/sys/time.rs /^ fn from(timerspec: TimerSpec) -> Expiration {$/;" P implementation:timer::Expiration +from vendor/nix/src/sys/time.rs /^ fn from(duration: Duration) -> Self {$/;" P implementation:TimeSpec +from vendor/nix/src/sys/time.rs /^ fn from(timespec: TimeSpec) -> Self {$/;" P implementation:Duration +from vendor/nix/src/sys/time.rs /^ fn from(ts: timespec) -> Self {$/;" P implementation:TimeSpec +from vendor/nix/src/sys/time.rs /^ fn from(tv: timeval) -> Self {$/;" P implementation:TimeVal +from vendor/nix/src/time.rs /^ fn from(clk_id: clockid_t) -> Self {$/;" P implementation:ClockId +from vendor/nix/src/time.rs /^ fn from(clock_id: ClockId) -> Self {$/;" P implementation:clockid_t +from vendor/once_cell/src/lib.rs /^ fn from(value: T) -> Self {$/;" P implementation:sync::OnceCell +from vendor/once_cell/src/lib.rs /^ fn from(value: T) -> Self {$/;" P implementation:unsync::OnceCell +from vendor/proc-macro2/src/fallback.rs /^ fn from(inner: TokenStream) -> proc_macro::TokenStream {$/;" P implementation:TokenStream +from vendor/proc-macro2/src/fallback.rs /^ fn from(inner: proc_macro::TokenStream) -> TokenStream {$/;" P implementation:TokenStream +from vendor/proc-macro2/src/fallback.rs /^ fn from(tree: TokenTree) -> TokenStream {$/;" P implementation:TokenStream +from vendor/proc-macro2/src/lib.rs /^ fn from(g: Group) -> TokenTree {$/;" P implementation:TokenTree +from vendor/proc-macro2/src/lib.rs /^ fn from(g: Ident) -> TokenTree {$/;" P implementation:TokenTree +from vendor/proc-macro2/src/lib.rs /^ fn from(g: Literal) -> TokenTree {$/;" P implementation:TokenTree +from vendor/proc-macro2/src/lib.rs /^ fn from(g: Punct) -> TokenTree {$/;" P implementation:TokenTree +from vendor/proc-macro2/src/lib.rs /^ fn from(inner: TokenStream) -> proc_macro::TokenStream {$/;" P implementation:TokenStream +from vendor/proc-macro2/src/lib.rs /^ fn from(inner: proc_macro::TokenStream) -> TokenStream {$/;" P implementation:TokenStream +from vendor/proc-macro2/src/lib.rs /^ fn from(token: TokenTree) -> Self {$/;" P implementation:TokenStream +from vendor/proc-macro2/src/wrapper.rs /^ fn from(e: fallback::LexError) -> LexError {$/;" P implementation:LexError +from vendor/proc-macro2/src/wrapper.rs /^ fn from(e: proc_macro::LexError) -> LexError {$/;" P implementation:LexError +from vendor/proc-macro2/src/wrapper.rs /^ fn from(g: fallback::Group) -> Self {$/;" P implementation:Group +from vendor/proc-macro2/src/wrapper.rs /^ fn from(inner: TokenStream) -> proc_macro::TokenStream {$/;" P implementation:TokenStream +from vendor/proc-macro2/src/wrapper.rs /^ fn from(inner: fallback::Span) -> Span {$/;" P implementation:Span +from vendor/proc-macro2/src/wrapper.rs /^ fn from(inner: fallback::TokenStream) -> TokenStream {$/;" P implementation:TokenStream +from vendor/proc-macro2/src/wrapper.rs /^ fn from(inner: proc_macro::TokenStream) -> TokenStream {$/;" P implementation:TokenStream +from vendor/proc-macro2/src/wrapper.rs /^ fn from(proc_span: proc_macro::Span) -> crate::Span {$/;" P implementation:Span +from vendor/proc-macro2/src/wrapper.rs /^ fn from(s: fallback::Literal) -> Literal {$/;" P implementation:Literal +from vendor/proc-macro2/src/wrapper.rs /^ fn from(token: TokenTree) -> TokenStream {$/;" P implementation:TokenStream +from vendor/smallvec/src/lib.rs /^ fn from(_: LayoutErr) -> Self {$/;" P implementation:CollectionAllocErr +from vendor/smallvec/src/lib.rs /^ fn from(array: A) -> SmallVec {$/;" P implementation:SmallVec +from vendor/smallvec/src/lib.rs /^ fn from(slice: &'a [A::Item]) -> SmallVec {$/;" f +from vendor/smallvec/src/lib.rs /^ fn from(vec: Vec) -> SmallVec {$/;" P implementation:SmallVec +from vendor/stdext/src/str.rs /^ fn from(data: &'a str) -> Self {$/;" P implementation:AltPattern +from vendor/stdext/src/str.rs /^ fn from(data: char) -> Self {$/;" P implementation:AltPattern +from vendor/syn/src/error.rs /^ fn from(err: LexError) -> Self {$/;" P implementation:Error +from vendor/syn/src/expr.rs /^ fn from(ident: Ident) -> Member {$/;" P implementation:Member +from vendor/syn/src/expr.rs /^ fn from(index: Index) -> Member {$/;" P implementation:Member +from vendor/syn/src/expr.rs /^ fn from(index: usize) -> Index {$/;" P implementation:Index +from vendor/syn/src/expr.rs /^ fn from(index: usize) -> Member {$/;" P implementation:Member +from vendor/syn/src/generics.rs /^ fn from(ident: Ident) -> Self {$/;" P implementation:TypeParam +from vendor/syn/src/ident.rs /^ fn from(token: Token![_]) -> Ident {$/;" P implementation:Ident +from vendor/syn/src/item.rs /^ fn from(input: DeriveInput) -> Item {$/;" P implementation:Item +from vendor/syn/src/item.rs /^ fn from(input: ItemEnum) -> DeriveInput {$/;" P implementation:DeriveInput +from vendor/syn/src/item.rs /^ fn from(input: ItemStruct) -> DeriveInput {$/;" P implementation:DeriveInput +from vendor/syn/src/item.rs /^ fn from(input: ItemUnion) -> DeriveInput {$/;" P implementation:DeriveInput +from vendor/syn/src/lit.rs /^ fn from(token: Literal) -> Self {$/;" P implementation:LitFloat +from vendor/syn/src/lit.rs /^ fn from(token: Literal) -> Self {$/;" P implementation:LitInt +from vendor/syn/src/path.rs /^ fn from(ident: T) -> Self {$/;" f +from vendor/syn/src/path.rs /^ fn from(segment: T) -> Self {$/;" f +from vendor/thiserror-impl/src/attr.rs /^ pub from: Option<&'a Attribute>,$/;" m struct:Attrs +from vendor/unic-langid-impl/src/errors.rs /^ fn from(error: ParserError) -> LanguageIdentifierError {$/;" P implementation:LanguageIdentifierError +from vendor/unic-langid-impl/src/subtags/language.rs /^ fn from(input: &Language) -> Self {$/;" P implementation:Option +from vendor/unic-langid-impl/src/subtags/language.rs /^ fn from(input: Language) -> Self {$/;" P implementation:Option +from vendor/unic-langid-impl/src/subtags/region.rs /^ fn from(input: &'l Region) -> Self {$/;" P implementation:str +from vendor/unic-langid-impl/src/subtags/region.rs /^ fn from(input: Region) -> Self {$/;" P implementation:u32 +from vendor/unic-langid-impl/src/subtags/script.rs /^ fn from(input: &'l Script) -> Self {$/;" P implementation:str +from vendor/unic-langid-impl/src/subtags/script.rs /^ fn from(input: Script) -> Self {$/;" P implementation:u32 +from vendor/unic-langid-impl/src/subtags/variant.rs /^ fn from(input: &Variant) -> Self {$/;" P implementation:u64 +from vendor/unic-langid-impl/src/subtags/variant.rs /^ fn from(input: Variant) -> Self {$/;" P implementation:u64 +from_be vendor/stdext/src/num/integer.rs /^ fn from_be(x: Self) -> Self;$/;" P interface:Integer +from_buf vendor/smallvec/src/lib.rs /^ pub fn from_buf(buf: A) -> SmallVec {$/;" P implementation:SmallVec +from_buf_and_len vendor/smallvec/src/lib.rs /^ pub fn from_buf_and_len(buf: A, len: usize) -> SmallVec {$/;" P implementation:SmallVec +from_buf_and_len_unchecked vendor/smallvec/src/lib.rs /^ pub unsafe fn from_buf_and_len_unchecked(buf: MaybeUninit, len: usize) -> SmallVec {$/;" P implementation:SmallVec +from_bytes vendor/tinystr/src/tinystr16.rs /^ pub fn from_bytes(bytes: &[u8]) -> Result {$/;" P implementation:TinyStr16 +from_bytes vendor/tinystr/src/tinystr4.rs /^ pub fn from_bytes(bytes: &[u8]) -> Result {$/;" P implementation:TinyStr4 +from_bytes vendor/tinystr/src/tinystr8.rs /^ pub fn from_bytes(bytes: &[u8]) -> Result {$/;" P implementation:TinyStr8 +from_bytes vendor/unic-langid-impl/src/lib.rs /^ pub fn from_bytes(v: &[u8]) -> Result {$/;" P implementation:LanguageIdentifier +from_bytes vendor/unic-langid-impl/src/subtags/language.rs /^ pub fn from_bytes(v: &[u8]) -> Result {$/;" P implementation:Language +from_bytes vendor/unic-langid-impl/src/subtags/region.rs /^ pub fn from_bytes(v: &[u8]) -> Result {$/;" P implementation:Region +from_bytes vendor/unic-langid-impl/src/subtags/script.rs /^ pub fn from_bytes(v: &[u8]) -> Result {$/;" P implementation:Script +from_bytes vendor/unic-langid-impl/src/subtags/variant.rs /^ pub fn from_bytes(v: &[u8]) -> Result {$/;" P implementation:Variant +from_bytes_fwd vendor/memchr/src/memmem/rabinkarp.rs /^ pub(crate) fn from_bytes_fwd(bytes: &[u8]) -> Hash {$/;" P implementation:Hash +from_bytes_rev vendor/memchr/src/memmem/rabinkarp.rs /^ fn from_bytes_rev(bytes: &[u8]) -> Hash {$/;" P implementation:Hash +from_const vendor/smallvec/src/lib.rs /^ const fn from_const(inline: MaybeUninit<[T; N]>) -> Self {$/;" P implementation:SmallVecData +from_const vendor/smallvec/src/lib.rs /^ pub const fn from_const(items: [T; N]) -> Self {$/;" P implementation:SmallVec +from_days vendor/stdext/src/duration.rs /^ fn from_days(days: u64) -> Duration;$/;" P interface:DurationExt +from_days vendor/stdext/src/duration.rs /^ fn from_days(days: u64) -> Self {$/;" P implementation:Duration +from_duration vendor/nix/src/sys/time.rs /^ pub const fn from_duration(duration: Duration) -> Self {$/;" P implementation:TimeSpec +from_elem vendor/smallvec/benches/bench.rs /^ fn from_elem(val: T, n: usize) -> Self {$/;" P implementation:SmallVec +from_elem vendor/smallvec/benches/bench.rs /^ fn from_elem(val: T, n: usize) -> Self {$/;" P implementation:Vec +from_elem vendor/smallvec/benches/bench.rs /^ fn from_elem(val: T, n: usize) -> Self;$/;" P interface:Vector +from_elem vendor/smallvec/src/lib.rs /^ pub fn from_elem(elem: A::Item, n: usize) -> Self {$/;" f +from_elems vendor/smallvec/benches/bench.rs /^ fn from_elems(val: &[T]) -> Self {$/;" P implementation:SmallVec +from_elems vendor/smallvec/benches/bench.rs /^ fn from_elems(val: &[T]) -> Self {$/;" P implementation:Vec +from_elems vendor/smallvec/benches/bench.rs /^ fn from_elems(val: &[T]) -> Self;$/;" P interface:Vector +from_err vendor/futures/tests_disabled/stream.rs /^fn from_err() {$/;" f +from_errno vendor/nix/src/errno.rs /^ pub fn from_errno(errno: Errno) -> Error {$/;" P implementation:Errno +from_fd vendor/nix/src/dir.rs /^ pub fn from_fd(fd: RawFd) -> Result {$/;" P implementation:Dir +from_field vendor/thiserror-impl/src/prop.rs /^ pub(crate) fn from_field(&self) -> Option<&Field> {$/;" P implementation:Struct +from_field vendor/thiserror-impl/src/prop.rs /^ pub(crate) fn from_field(&self) -> Option<&Field> {$/;" P implementation:Variant +from_field vendor/thiserror-impl/src/prop.rs /^fn from_field<'a, 'b>(fields: &'a [Field<'b>]) -> Option<&'a Field<'b>> {$/;" f +from_heap vendor/smallvec/src/lib.rs /^ fn from_heap(ptr: *mut A::Item, len: usize) -> SmallVecData {$/;" P implementation:SmallVecData +from_hours vendor/stdext/src/duration.rs /^ fn from_hours(hours: u64) -> Duration;$/;" P interface:DurationExt +from_hours vendor/stdext/src/duration.rs /^ fn from_hours(hours: u64) -> Self {$/;" P implementation:Duration +from_i32 vendor/nix/src/errno.rs /^ pub const fn from_i32(e: i32) -> Errno {$/;" f module:consts +from_i32 vendor/nix/src/errno.rs /^ pub const fn from_i32(err: i32) -> Errno {$/;" P implementation:Errno +from_i32 vendor/nix/src/sys/socket/addr.rs /^ pub const fn from_i32(family: i32) -> Option {$/;" P implementation:AddressFamily +from_impl vendor/once_cell/tests/it.rs /^ fn from_impl() {$/;" f module:sync +from_impl vendor/once_cell/tests/it.rs /^ fn from_impl() {$/;" f module:unsync +from_initializer vendor/thiserror-impl/src/expand.rs /^fn from_initializer(from_field: &Field, backtrace_field: Option<&Field>) -> TokenStream {$/;" f +from_inline vendor/smallvec/src/lib.rs /^ fn from_inline(inline: MaybeUninit) -> SmallVecData {$/;" P implementation:SmallVecData +from_io vendor/autocfg/src/error.rs /^pub fn from_io(e: io::Error) -> Error {$/;" f +from_iter vendor/elsa/src/index_map.rs /^ fn from_iter(iter: T) -> Self$/;" P implementation:FrozenIndexMap +from_iter vendor/elsa/src/index_set.rs /^ fn from_iter(iter: U) -> Self$/;" P implementation:FrozenIndexSet +from_iter vendor/elsa/src/map.rs /^ fn from_iter(iter: T) -> Self$/;" P implementation:FrozenBTreeMap +from_iter vendor/elsa/src/map.rs /^ fn from_iter(iter: T) -> Self$/;" P implementation:FrozenMap +from_iter vendor/elsa/src/sync.rs /^ fn from_iter(iter: T) -> Self$/;" P implementation:FrozenBTreeMap +from_iter vendor/elsa/src/vec.rs /^ fn from_iter(iter: T) -> Self$/;" P implementation:FrozenVec +from_iter vendor/fluent-bundle/src/args.rs /^ fn from_iter(iter: I) -> Self$/;" f +from_iter vendor/futures-util/src/future/join_all.rs /^ fn from_iter>(iter: T) -> Self {$/;" P implementation:JoinAll +from_iter vendor/futures-util/src/future/select_all.rs /^ fn from_iter>(iter: T) -> Self {$/;" P implementation:SelectAll +from_iter vendor/futures-util/src/future/select_ok.rs /^ fn from_iter>(iter: T) -> Self {$/;" P implementation:SelectOk +from_iter vendor/futures-util/src/future/try_join_all.rs /^ fn from_iter>(iter: T) -> Self {$/;" f +from_iter vendor/futures-util/src/stream/futures_ordered.rs /^ fn from_iter(iter: T) -> Self$/;" P implementation:FuturesOrdered +from_iter vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn from_iter(iter: I) -> Self$/;" P implementation:FuturesUnordered +from_iter vendor/futures-util/src/stream/select_all.rs /^ fn from_iter>(iter: T) -> Self {$/;" P implementation:SelectAll +from_iter vendor/proc-macro2/src/fallback.rs /^ fn from_iter>(streams: I) -> Self {$/;" P implementation:TokenStream +from_iter vendor/proc-macro2/src/fallback.rs /^ fn from_iter>(tokens: I) -> Self {$/;" P implementation:TokenStream +from_iter vendor/proc-macro2/src/lib.rs /^ fn from_iter>(streams: I) -> Self {$/;" P implementation:TokenStream +from_iter vendor/proc-macro2/src/lib.rs /^ fn from_iter>(streams: I) -> Self {$/;" P implementation:TokenStream +from_iter vendor/proc-macro2/src/wrapper.rs /^ fn from_iter>(streams: I) -> Self {$/;" P implementation:TokenStream +from_iter vendor/proc-macro2/src/wrapper.rs /^ fn from_iter>(trees: I) -> Self {$/;" P implementation:TokenStream +from_iter vendor/slab/src/lib.rs /^ fn from_iter(iterable: I) -> Self$/;" P implementation:Slab +from_iter vendor/smallvec/src/lib.rs /^ fn from_iter>(iterable: I) -> SmallVec {$/;" P implementation:SmallVec +from_iter vendor/syn/src/punctuated.rs /^ fn from_iter>>(i: I) -> Self {$/;" P implementation:Punctuated +from_iter vendor/syn/src/punctuated.rs /^ fn from_iter>(i: I) -> Self {$/;" f +from_iterator vendor/futures/tests/stream_futures_ordered.rs /^fn from_iterator() {$/;" f +from_iterator vendor/futures/tests/stream_futures_unordered.rs /^fn from_iterator() {$/;" f +from_iterator_issue_100 vendor/slab/tests/slab.rs /^fn from_iterator_issue_100() {$/;" f +from_iterator_new_in_order vendor/slab/tests/slab.rs /^fn from_iterator_new_in_order() {$/;" f +from_iterator_sorted vendor/slab/tests/slab.rs /^fn from_iterator_sorted() {$/;" f +from_iterator_unordered vendor/slab/tests/slab.rs /^fn from_iterator_unordered() {$/;" f +from_le vendor/stdext/src/num/integer.rs /^ fn from_le(x: Self) -> Self;$/;" P interface:Integer +from_libc_ifaddrs vendor/nix/src/ifaddrs.rs /^ fn from_libc_ifaddrs(info: &libc::ifaddrs) -> InterfaceAddress {$/;" P implementation:InterfaceAddress +from_libc_sockaddr vendor/nix/src/sys/socket/addr.rs /^ pub(crate) unsafe fn from_libc_sockaddr(addr: *const libc::sockaddr) -> Option {$/;" P implementation:SockAddr +from_methods vendor/stdext/src/duration.rs /^ fn from_methods() {$/;" f module:tests +from_minutes vendor/stdext/src/duration.rs /^ fn from_minutes(minutes: u64) -> Duration;$/;" P interface:DurationExt +from_minutes vendor/stdext/src/duration.rs /^ fn from_minutes(minutes: u64) -> Self {$/;" P implementation:Duration +from_mut_slice vendor/nix/src/sys/uio.rs /^ pub fn from_mut_slice(buf: &'a mut [u8]) -> IoVec<&'a mut [u8]> {$/;" P implementation:IoVec +from_num vendor/autocfg/src/error.rs /^pub fn from_num(e: num::ParseIntError) -> Error {$/;" f +from_num vendor/fluent-bundle/src/types/number.rs /^macro_rules! from_num {$/;" M +from_parts vendor/async-trait/tests/test.rs /^ async fn from_parts() -> Self;$/;" P interface:issue42::Context +from_parts vendor/async-trait/tests/test.rs /^ async fn from_parts() -> TokenContext {$/;" P implementation:issue42::TokenContext +from_parts vendor/unic-langid-impl/src/lib.rs /^ pub fn from_parts($/;" P implementation:LanguageIdentifier +from_raw vendor/libloading/src/os/unix/mod.rs /^ pub unsafe fn from_raw(handle: *mut raw::c_void) -> Library {$/;" P implementation:Library +from_raw vendor/libloading/src/os/windows/mod.rs /^ pub unsafe fn from_raw(handle: HMODULE) -> Library {$/;" P implementation:Library +from_raw vendor/libloading/src/safe.rs /^ pub unsafe fn from_raw(sym: imp::Symbol, library: &'lib L) -> Symbol<'lib, T> {$/;" P implementation:Symbol +from_raw vendor/nix/src/sys/socket/addr.rs /^ unsafe fn from_raw(addr: *const libc::sockaddr, l: Option)$/;" P implementation:alg::AlgAddr +from_raw vendor/nix/src/sys/socket/addr.rs /^ unsafe fn from_raw(addr: *const libc::sockaddr, len: Option)$/;" P implementation:netlink::NetlinkAddr +from_raw vendor/nix/src/sys/socket/addr.rs /^ unsafe fn from_raw(addr: *const libc::sockaddr, len: Option)$/;" P implementation:vsock::VsockAddr +from_raw vendor/nix/src/sys/socket/addr.rs /^ unsafe fn from_raw(_: *const libc::sockaddr, _: Option)$/;" P implementation:SockaddrLike +from_raw vendor/nix/src/sys/socket/addr.rs /^ unsafe fn from_raw(addr: *const libc::sockaddr, _len: Option)$/;" P implementation:SockAddr +from_raw vendor/nix/src/sys/socket/addr.rs /^ unsafe fn from_raw(addr: *const libc::sockaddr, l: Option)$/;" P implementation:SockaddrStorage +from_raw vendor/nix/src/sys/socket/addr.rs /^ unsafe fn from_raw(addr: *const libc::sockaddr, len: Option)$/;" P implementation:SockaddrIn +from_raw vendor/nix/src/sys/socket/addr.rs /^ unsafe fn from_raw(addr: *const libc::sockaddr, len: Option)$/;" P implementation:SockaddrIn6 +from_raw vendor/nix/src/sys/socket/addr.rs /^ unsafe fn from_raw(addr: *const libc::sockaddr, len: Option)$/;" P implementation:UnixAddr +from_raw vendor/nix/src/sys/socket/addr.rs /^ unsafe fn from_raw(addr: *const libc::sockaddr, len: Option)$/;" P interface:SockaddrLike +from_raw vendor/nix/src/sys/wait.rs /^ pub fn from_raw(pid: Pid, status: i32) -> Result {$/;" P implementation:WaitStatus +from_raw vendor/nix/src/time.rs /^ pub const fn from_raw(clk_id: clockid_t) -> Self {$/;" P implementation:ClockId +from_raw_fd vendor/nix/src/sys/inotify.rs /^ unsafe fn from_raw_fd(fd: RawFd) -> Self {$/;" P implementation:Inotify +from_raw_fd vendor/nix/src/sys/timerfd.rs /^ unsafe fn from_raw_fd(fd: RawFd) -> Self {$/;" P implementation:TimerFd +from_raw_parts vendor/nix/src/sys/socket/addr.rs /^ pub(crate) unsafe fn from_raw_parts(sun: libc::sockaddr_un, sun_len: u8) -> UnixAddr {$/;" P implementation:UnixAddr +from_raw_parts vendor/smallvec/src/lib.rs /^ pub unsafe fn from_raw_parts(ptr: *mut A::Item, length: usize, capacity: usize) -> SmallVec Self {$/;" P implementation:Language +from_raw_unchecked vendor/unic-langid-impl/src/subtags/region.rs /^ pub const unsafe fn from_raw_unchecked(v: u32) -> Self {$/;" P implementation:Region +from_raw_unchecked vendor/unic-langid-impl/src/subtags/script.rs /^ pub const unsafe fn from_raw_unchecked(v: u32) -> Self {$/;" P implementation:Script +from_raw_unchecked vendor/unic-langid-impl/src/subtags/variant.rs /^ pub const unsafe fn from_raw_unchecked(v: u64) -> Self {$/;" P implementation:Variant +from_return_trap execute_cmd.c /^volatile int from_return_trap = 0;$/;" v typeref:typename:volatile int +from_rustc vendor/autocfg/src/version.rs /^ pub fn from_rustc(rustc: &Path) -> Result {$/;" P implementation:Version +from_siginfo vendor/nix/src/sys/wait.rs /^ unsafe fn from_siginfo(siginfo: &libc::siginfo_t) -> Result {$/;" P implementation:WaitStatus +from_slice vendor/nix/src/sys/uio.rs /^ pub fn from_slice(buf: &'a [u8]) -> IoVec<&'a [u8]> {$/;" P implementation:IoVec +from_slice vendor/smallvec/src/lib.rs /^ pub fn from_slice(slice: &[A::Item]) -> Self {$/;" f +from_spans vendor/syn/src/span.rs /^ fn from_spans(spans: &[Span]) -> Self {$/;" P implementation:Span +from_spans vendor/syn/src/span.rs /^ fn from_spans(spans: &[Span]) -> Self;$/;" P interface:FromSpans +from_str vendor/autocfg/src/error.rs /^pub fn from_str(s: &'static str) -> Error {$/;" f +from_str vendor/fluent-bundle/src/types/number.rs /^ fn from_str(input: &str) -> Result {$/;" P implementation:FluentNumber +from_str vendor/nix/src/sys/signal.rs /^ fn from_str(s: &str) -> Result {$/;" P implementation:Signal +from_str vendor/nix/src/sys/socket/addr.rs /^ fn from_str(s: &str) -> std::result::Result {$/;" P implementation:SockaddrIn +from_str vendor/nix/src/sys/socket/addr.rs /^ fn from_str(s: &str) -> std::result::Result {$/;" P implementation:SockaddrIn6 +from_str vendor/proc-macro2/src/fallback.rs /^ fn from_str(mut repr: &str) -> Result {$/;" P implementation:Literal::byte_string::Literal +from_str vendor/proc-macro2/src/fallback.rs /^ fn from_str(src: &str) -> Result {$/;" P implementation:TokenStream +from_str vendor/proc-macro2/src/lib.rs /^ fn from_str(repr: &str) -> Result {$/;" P implementation:Literal +from_str vendor/proc-macro2/src/lib.rs /^ fn from_str(src: &str) -> Result {$/;" P implementation:TokenStream +from_str vendor/proc-macro2/src/wrapper.rs /^ fn from_str(repr: &str) -> Result {$/;" P implementation:Literal +from_str vendor/proc-macro2/src/wrapper.rs /^ fn from_str(src: &str) -> Result {$/;" P implementation:TokenStream +from_str vendor/tinystr/src/tinystr16.rs /^ fn from_str(text: &str) -> Result {$/;" P implementation:TinyStr16 +from_str vendor/tinystr/src/tinystr4.rs /^ fn from_str(text: &str) -> Result {$/;" P implementation:TinyStr4 +from_str vendor/tinystr/src/tinystr8.rs /^ fn from_str(text: &str) -> Result {$/;" P implementation:TinyStr8 +from_str vendor/tinystr/src/tinystrauto.rs /^ fn from_str(text: &str) -> Result {$/;" P implementation:TinyStrAuto +from_str vendor/unic-langid-impl/src/lib.rs /^ fn from_str(source: &str) -> Result {$/;" P implementation:LanguageIdentifier +from_str vendor/unic-langid-impl/src/subtags/language.rs /^ fn from_str(source: &str) -> Result {$/;" P implementation:Language +from_str vendor/unic-langid-impl/src/subtags/region.rs /^ fn from_str(source: &str) -> Result {$/;" P implementation:Region +from_str vendor/unic-langid-impl/src/subtags/script.rs /^ fn from_str(source: &str) -> Result {$/;" P implementation:Script +from_str vendor/unic-langid-impl/src/subtags/variant.rs /^ fn from_str(source: &str) -> Result {$/;" P implementation:Variant +from_str_radix vendor/stdext/src/num/integer.rs /^ fn from_str_radix(src: &str, radix: u32) -> Result;$/;" P interface:Integer +from_str_unchecked vendor/proc-macro2/src/fallback.rs /^ pub(crate) unsafe fn from_str_unchecked(repr: &str) -> Self {$/;" P implementation:Literal +from_str_unchecked vendor/proc-macro2/src/lib.rs /^ pub unsafe fn from_str_unchecked(repr: &str) -> Self {$/;" P implementation:Literal +from_str_unchecked vendor/proc-macro2/src/wrapper.rs /^ pub unsafe fn from_str_unchecked(repr: &str) -> Self {$/;" P implementation:Literal +from_syn vendor/thiserror-impl/src/ast.rs /^ fn from_syn($/;" P implementation:Field +from_syn vendor/thiserror-impl/src/ast.rs /^ fn from_syn(node: &'a DeriveInput, data: &'a DataEnum) -> Result {$/;" P implementation:Enum +from_syn vendor/thiserror-impl/src/ast.rs /^ fn from_syn(node: &'a DeriveInput, data: &'a DataStruct) -> Result {$/;" P implementation:Struct +from_syn vendor/thiserror-impl/src/ast.rs /^ fn from_syn(node: &'a syn::Variant, scope: &ParamsInScope<'a>, span: Span) -> Result {$/;" P implementation:Variant +from_syn vendor/thiserror-impl/src/ast.rs /^ pub fn from_syn(node: &'a DeriveInput) -> Result {$/;" P implementation:Input +from_timespec vendor/nix/src/sys/time.rs /^ pub const fn from_timespec(timespec: timespec) -> Self {$/;" P implementation:TimeSpec +from_usize vendor/once_cell/src/race.rs /^ fn from_usize(value: NonZeroUsize) -> bool {$/;" P implementation:OnceBool +from_utf8 vendor/autocfg/src/error.rs /^pub fn from_utf8(e: str::Utf8Error) -> Error {$/;" f +from_vec vendor/smallvec/src/lib.rs /^ pub fn from_vec(mut vec: Vec) -> SmallVec {$/;" P implementation:SmallVec +fs builtins_rust/wait/src/signal.rs /^ pub fs: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +fs r_bash/src/lib.rs /^ pub fs: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +fs r_glob/src/lib.rs /^ pub fs: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +fs r_readline/src/lib.rs /^ pub fs: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +fs_close_attr vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_close_attr(fd: ::c_int) -> ::c_int;$/;" f +fs_close_attr_dir vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_close_attr_dir(dir: *mut ::DIR) -> ::c_int;$/;" f +fs_close_index_dir vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_close_index_dir(indexDirectory: *mut ::DIR) -> ::c_int;$/;" f +fs_close_query vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_close_query(d: *mut ::DIR) -> ::c_int;$/;" f +fs_create_index vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_create_index($/;" f +fs_fopen_attr vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_fopen_attr($/;" f +fs_fopen_attr_dir vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_fopen_attr_dir(fd: ::c_int) -> *mut ::DIR;$/;" f +fs_lopen_attr_dir vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_lopen_attr_dir(path: *const ::c_char) -> *mut ::DIR;$/;" f +fs_mount_volume vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_mount_volume($/;" f +fs_open_attr vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_open_attr($/;" f +fs_open_attr_dir vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_open_attr_dir(path: *const ::c_char) -> *mut ::DIR;$/;" f +fs_open_index_dir vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_open_index_dir(device: ::dev_t) -> *mut ::DIR;$/;" f +fs_open_live_query vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_open_live_query($/;" f +fs_open_query vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_open_query(device: ::dev_t, query: *const ::c_char, flags: u32) -> *mut ::DIR;$/;" f +fs_read_attr vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_read_attr($/;" f +fs_read_attr_dir vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_read_attr_dir(dir: *mut ::DIR) -> *mut ::dirent;$/;" f +fs_read_index_dir vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_read_index_dir(indexDirectory: *mut ::DIR) -> *mut ::dirent;$/;" f +fs_read_query vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_read_query(d: *mut ::DIR) -> *mut ::dirent;$/;" f +fs_remove_attr vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_remove_attr(fd: ::c_int, attribute: *const ::c_char) -> ::c_int;$/;" f +fs_remove_index vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_remove_index(device: ::dev_t, name: *const ::c_char) -> ::c_int;$/;" f +fs_rewind_attr_dir vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_rewind_attr_dir(dir: *mut ::DIR);$/;" f +fs_rewind_index_dir vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_rewind_index_dir(indexDirectory: *mut ::DIR);$/;" f +fs_stat_attr vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_stat_attr($/;" f +fs_stat_dev vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_stat_dev(dev: ::dev_t, info: *mut fs_info) -> ::c_int;$/;" f +fs_stat_index vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_stat_index($/;" f +fs_type_t vendor/nix/src/sys/statfs.rs /^type fs_type_t = libc::__fsword_t;$/;" t +fs_type_t vendor/nix/src/sys/statfs.rs /^type fs_type_t = libc::c_int;$/;" t +fs_type_t vendor/nix/src/sys/statfs.rs /^type fs_type_t = libc::c_uint;$/;" t +fs_type_t vendor/nix/src/sys/statfs.rs /^type fs_type_t = libc::c_ulong;$/;" t +fs_type_t vendor/nix/src/sys/statfs.rs /^type fs_type_t = u32;$/;" t +fs_unmount_volume vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_unmount_volume(path: *const ::c_char, flags: u32) -> status_t;$/;" f +fs_write_attr vendor/libc/src/unix/haiku/native.rs /^ pub fn fs_write_attr($/;" f +fsblkcnt64_t r_bash/src/lib.rs /^pub type fsblkcnt64_t = __fsblkcnt64_t;$/;" t +fsblkcnt64_t r_glob/src/lib.rs /^pub type fsblkcnt64_t = __fsblkcnt64_t;$/;" t +fsblkcnt64_t r_readline/src/lib.rs /^pub type fsblkcnt64_t = __fsblkcnt64_t;$/;" t +fsblkcnt64_t vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type fsblkcnt64_t = u64;$/;" t +fsblkcnt64_t vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs /^pub type fsblkcnt64_t = ::c_ulong;$/;" t +fsblkcnt64_t vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs /^pub type fsblkcnt64_t = ::c_ulong;$/;" t +fsblkcnt64_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type fsblkcnt64_t = u64;$/;" t +fsblkcnt64_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type fsblkcnt64_t = u64;$/;" t +fsblkcnt64_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type fsblkcnt64_t = u64;$/;" t +fsblkcnt_t r_bash/src/lib.rs /^pub type fsblkcnt_t = __fsblkcnt_t;$/;" t +fsblkcnt_t r_glob/src/lib.rs /^pub type fsblkcnt_t = __fsblkcnt_t;$/;" t +fsblkcnt_t r_readline/src/lib.rs /^pub type fsblkcnt_t = __fsblkcnt_t;$/;" t +fsblkcnt_t vendor/libc/src/fuchsia/mod.rs /^pub type fsblkcnt_t = ::c_ulonglong;$/;" t +fsblkcnt_t vendor/libc/src/solid/mod.rs /^pub type fsblkcnt_t = __fsblkcnt_t;$/;" t +fsblkcnt_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type fsblkcnt_t = ::c_uint;$/;" t +fsblkcnt_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type fsblkcnt_t = u64;$/;" t +fsblkcnt_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type fsblkcnt_t = u64;$/;" t +fsblkcnt_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type fsblkcnt_t = u64;$/;" t +fsblkcnt_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type fsblkcnt_t = u64;$/;" t +fsblkcnt_t vendor/libc/src/unix/haiku/mod.rs /^pub type fsblkcnt_t = i64;$/;" t +fsblkcnt_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type fsblkcnt_t = ::c_ulong;$/;" t +fsblkcnt_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type fsblkcnt_t = u32;$/;" t +fsblkcnt_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mod.rs /^pub type fsblkcnt_t = u64;$/;" t +fsblkcnt_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type fsblkcnt_t = ::c_ulonglong;$/;" t +fsblkcnt_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type fsblkcnt_t = ::c_ulong;$/;" t +fsblkcnt_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type fsblkcnt_t = ::c_ulong;$/;" t +fsblkcnt_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs /^pub type fsblkcnt_t = ::c_ulong;$/;" t +fsblkcnt_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type fsblkcnt_t = ::c_ulong;$/;" t +fsblkcnt_t vendor/libc/src/unix/newlib/mod.rs /^pub type fsblkcnt_t = u64;$/;" t +fsblkcnt_t vendor/libc/src/unix/redox/mod.rs /^pub type fsblkcnt_t = ::c_ulong;$/;" t +fsblkcnt_t vendor/libc/src/unix/solarish/mod.rs /^pub type fsblkcnt_t = ::c_ulong;$/;" t +fscanf r_bash/src/lib.rs /^ pub fn fscanf($/;" f +fscanf r_readline/src/lib.rs /^ pub fn fscanf($/;" f +fscanf vendor/libc/src/fuchsia/mod.rs /^ pub fn fscanf(stream: *mut ::FILE, format: *const ::c_char, ...) -> ::c_int;$/;" f +fscanf vendor/libc/src/solid/mod.rs /^ pub fn fscanf(arg1: *mut FILE, arg2: *const c_char, ...) -> c_int;$/;" f +fscanf vendor/libc/src/unix/mod.rs /^ pub fn fscanf(stream: *mut ::FILE, format: *const ::c_char, ...) -> ::c_int;$/;" f +fscanf vendor/libc/src/vxworks/mod.rs /^ pub fn fscanf(stream: *mut ::FILE, format: *const ::c_char, ...) -> ::c_int;$/;" f +fscanf vendor/libc/src/wasi.rs /^ pub fn fscanf(stream: *mut ::FILE, format: *const ::c_char, ...) -> ::c_int;$/;" f +fseek r_bash/src/lib.rs /^ pub fn fseek($/;" f +fseek r_readline/src/lib.rs /^ pub fn fseek($/;" f +fseek vendor/libc/src/fuchsia/mod.rs /^ pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int;$/;" f +fseek vendor/libc/src/solid/mod.rs /^ pub fn fseek(arg1: *mut FILE, arg2: c_long, arg3: c_int) -> c_int;$/;" f +fseek vendor/libc/src/unix/mod.rs /^ pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int;$/;" f +fseek vendor/libc/src/vxworks/mod.rs /^ pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int;$/;" f +fseek vendor/libc/src/wasi.rs /^ pub fn fseek(f: *mut FILE, b: c_long, c: c_int) -> c_int;$/;" f +fseek vendor/libc/src/windows/mod.rs /^ pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int;$/;" f +fseeko r_bash/src/lib.rs /^ pub fn fseeko($/;" f +fseeko r_readline/src/lib.rs /^ pub fn fseeko($/;" f +fseeko vendor/libc/src/fuchsia/mod.rs /^ pub fn fseeko(stream: *mut ::FILE, offset: ::off_t, whence: ::c_int) -> ::c_int;$/;" f +fseeko vendor/libc/src/solid/mod.rs /^ pub fn fseeko(stream: *mut FILE, offset: off_t, whence: c_int) -> c_int;$/;" f +fseeko vendor/libc/src/unix/mod.rs /^ pub fn fseeko(stream: *mut ::FILE, offset: ::off_t, whence: ::c_int) -> ::c_int;$/;" f +fseeko vendor/libc/src/vxworks/mod.rs /^ pub fn fseeko(stream: *mut ::FILE, offset: ::off_t, whence: ::c_int) -> ::c_int;$/;" f +fseeko vendor/libc/src/wasi.rs /^ pub fn fseeko(stream: *mut ::FILE, offset: ::off_t, whence: ::c_int) -> ::c_int;$/;" f +fseeko64 r_bash/src/lib.rs /^ pub fn fseeko64($/;" f +fseeko64 r_readline/src/lib.rs /^ pub fn fseeko64($/;" f +fseeko64 vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn fseeko64(stream: *mut ::FILE, offset: ::off64_t, whence: ::c_int) -> ::c_int;$/;" f +fseeko64 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn fseeko64(stream: *mut ::FILE, offset: ::off64_t, whence: ::c_int) -> ::c_int;$/;" f +fsetattrlist vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn fsetattrlist($/;" f +fsetpos r_bash/src/lib.rs /^ pub fn fsetpos(__stream: *mut FILE, __pos: *const fpos_t) -> ::std::os::raw::c_int;$/;" f +fsetpos r_readline/src/lib.rs /^ pub fn fsetpos(__stream: *mut FILE, __pos: *const fpos_t) -> ::std::os::raw::c_int;$/;" f +fsetpos vendor/libc/src/fuchsia/mod.rs /^ pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int;$/;" f +fsetpos vendor/libc/src/solid/mod.rs /^ pub fn fsetpos(arg1: *mut FILE, arg2: *const fpos_t) -> c_int;$/;" f +fsetpos vendor/libc/src/unix/mod.rs /^ pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int;$/;" f +fsetpos vendor/libc/src/vxworks/mod.rs /^ pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int;$/;" f +fsetpos vendor/libc/src/wasi.rs /^ pub fn fsetpos(f: *mut FILE, pos: *const fpos_t) -> c_int;$/;" f +fsetpos vendor/libc/src/windows/mod.rs /^ pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int;$/;" f +fsetpos64 r_bash/src/lib.rs /^ pub fn fsetpos64(__stream: *mut FILE, __pos: *const fpos64_t) -> ::std::os::raw::c_int;$/;" f +fsetpos64 r_readline/src/lib.rs /^ pub fn fsetpos64(__stream: *mut FILE, __pos: *const fpos64_t) -> ::std::os::raw::c_int;$/;" f +fsetpos64 vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn fsetpos64(stream: *mut ::FILE, ptr: *const fpos64_t) -> ::c_int;$/;" f +fsetpos64 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn fsetpos64(stream: *mut ::FILE, ptr: *const fpos64_t) -> ::c_int;$/;" f +fsetxattr vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn fsetxattr($/;" f +fsetxattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn fsetxattr($/;" f +fsetxattr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn fsetxattr($/;" f +fsetxattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn fsetxattr($/;" f +fsfilcnt64_t r_bash/src/lib.rs /^pub type fsfilcnt64_t = __fsfilcnt64_t;$/;" t +fsfilcnt64_t r_glob/src/lib.rs /^pub type fsfilcnt64_t = __fsfilcnt64_t;$/;" t +fsfilcnt64_t r_readline/src/lib.rs /^pub type fsfilcnt64_t = __fsfilcnt64_t;$/;" t +fsfilcnt64_t vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type fsfilcnt64_t = u64;$/;" t +fsfilcnt64_t vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs /^pub type fsfilcnt64_t = ::c_ulong;$/;" t +fsfilcnt64_t vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs /^pub type fsfilcnt64_t = ::c_ulong;$/;" t +fsfilcnt64_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type fsfilcnt64_t = u64;$/;" t +fsfilcnt64_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type fsfilcnt64_t = u64;$/;" t +fsfilcnt64_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type fsfilcnt64_t = u64;$/;" t +fsfilcnt_t r_bash/src/lib.rs /^pub type fsfilcnt_t = __fsfilcnt_t;$/;" t +fsfilcnt_t r_glob/src/lib.rs /^pub type fsfilcnt_t = __fsfilcnt_t;$/;" t +fsfilcnt_t r_readline/src/lib.rs /^pub type fsfilcnt_t = __fsfilcnt_t;$/;" t +fsfilcnt_t vendor/libc/src/fuchsia/mod.rs /^pub type fsfilcnt_t = ::c_ulonglong;$/;" t +fsfilcnt_t vendor/libc/src/solid/mod.rs /^pub type fsfilcnt_t = __fsfilcnt_t;$/;" t +fsfilcnt_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type fsfilcnt_t = ::c_uint;$/;" t +fsfilcnt_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type fsfilcnt_t = u64;$/;" t +fsfilcnt_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type fsfilcnt_t = u64;$/;" t +fsfilcnt_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type fsfilcnt_t = u64;$/;" t +fsfilcnt_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type fsfilcnt_t = u64;$/;" t +fsfilcnt_t vendor/libc/src/unix/haiku/mod.rs /^pub type fsfilcnt_t = i64;$/;" t +fsfilcnt_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type fsfilcnt_t = ::c_ulong;$/;" t +fsfilcnt_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type fsfilcnt_t = u32;$/;" t +fsfilcnt_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mod.rs /^pub type fsfilcnt_t = u64;$/;" t +fsfilcnt_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type fsfilcnt_t = ::c_ulonglong;$/;" t +fsfilcnt_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type fsfilcnt_t = ::c_ulong;$/;" t +fsfilcnt_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type fsfilcnt_t = ::c_ulong;$/;" t +fsfilcnt_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs /^pub type fsfilcnt_t = ::c_ulong;$/;" t +fsfilcnt_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type fsfilcnt_t = ::c_ulong;$/;" t +fsfilcnt_t vendor/libc/src/unix/newlib/mod.rs /^pub type fsfilcnt_t = u32;$/;" t +fsfilcnt_t vendor/libc/src/unix/redox/mod.rs /^pub type fsfilcnt_t = ::c_ulong;$/;" t +fsfilcnt_t vendor/libc/src/unix/solarish/mod.rs /^pub type fsfilcnt_t = ::c_ulong;$/;" t +fsid_t r_bash/src/lib.rs /^pub type fsid_t = __fsid_t;$/;" t +fsid_t r_glob/src/lib.rs /^pub type fsid_t = __fsid_t;$/;" t +fsid_t r_readline/src/lib.rs /^pub type fsid_t = __fsid_t;$/;" t +fsid_t vendor/nix/src/sys/statfs.rs /^pub type fsid_t = libc::__fsid_t;$/;" t +fsid_t vendor/nix/src/sys/statfs.rs /^pub type fsid_t = libc::fsid_t;$/;" t +fsleep lib/sh/ufuncs.c /^fsleep(sec, usec)$/;" f +fsleep r_bash/src/lib.rs /^ pub fn fsleep($/;" f +fspacectl vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn fspacectl($/;" f +fst vendor/unicode-ident/README.md /^#### fst$/;" t section:Unicode ident""Comparison of data structures +fst vendor/unicode-ident/benches/xid.rs /^mod fst;$/;" n +fst vendor/unicode-ident/tests/compare.rs /^mod fst;$/;" n +fstat r_bash/src/lib.rs /^ pub fn fstat(__fd: ::std::os::raw::c_int, __buf: *mut stat) -> ::std::os::raw::c_int;$/;" f +fstat r_readline/src/lib.rs /^ pub fn fstat(__fd: ::std::os::raw::c_int, __buf: *mut stat) -> ::std::os::raw::c_int;$/;" f +fstat vendor/libc/src/fuchsia/mod.rs /^ pub fn fstat(fildes: ::c_int, buf: *mut stat) -> ::c_int;$/;" f +fstat vendor/libc/src/solid/mod.rs /^ pub fn fstat(arg1: c_int, arg2: *mut stat) -> c_int;$/;" f +fstat vendor/libc/src/unix/mod.rs /^ pub fn fstat(fildes: ::c_int, buf: *mut stat) -> ::c_int;$/;" f +fstat vendor/libc/src/vxworks/mod.rs /^ pub fn fstat(fildes: ::c_int, buf: *mut stat) -> ::c_int;$/;" f +fstat vendor/libc/src/wasi.rs /^ pub fn fstat(fildes: ::c_int, buf: *mut stat) -> ::c_int;$/;" f +fstat vendor/libc/src/windows/mod.rs /^ pub fn fstat(fildes: ::c_int, buf: *mut stat) -> ::c_int;$/;" f +fstat vendor/nix/src/sys/stat.rs /^pub fn fstat(fd: RawFd) -> Result {$/;" f +fstat64 r_bash/src/lib.rs /^ pub fn fstat64(__fd: ::std::os::raw::c_int, __buf: *mut stat64) -> ::std::os::raw::c_int;$/;" f +fstat64 r_readline/src/lib.rs /^ pub fn fstat64(__fd: ::std::os::raw::c_int, __buf: *mut stat64) -> ::std::os::raw::c_int;$/;" f +fstat64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn fstat64(fildes: ::c_int, buf: *mut stat64) -> ::c_int;$/;" f +fstatat r_bash/src/lib.rs /^ pub fn fstatat($/;" f +fstatat r_readline/src/lib.rs /^ pub fn fstatat($/;" f +fstatat vendor/libc/src/fuchsia/mod.rs /^ pub fn fstatat($/;" f +fstatat vendor/libc/src/unix/mod.rs /^ pub fn fstatat($/;" f +fstatat vendor/libc/src/wasi.rs /^ pub fn fstatat($/;" f +fstatat vendor/nix/src/sys/stat.rs /^pub fn fstatat(dirfd: RawFd, pathname: &P, f: AtFlags) -> Result /;" f +fstatat64 r_bash/src/lib.rs /^ pub fn fstatat64($/;" f +fstatat64 r_readline/src/lib.rs /^ pub fn fstatat64($/;" f +fstatat64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn fstatat64($/;" f +fstatfs vendor/libc/src/fuchsia/mod.rs /^ pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int;$/;" f +fstatfs vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int;$/;" f +fstatfs vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int;$/;" f +fstatfs vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int;$/;" f +fstatfs vendor/libc/src/unix/linux_like/mod.rs /^ pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int;$/;" f +fstatfs vendor/nix/src/sys/statfs.rs /^pub fn fstatfs(fd: &T) -> Result {$/;" f +fstatfs64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn fstatfs64(fd: ::c_int, buf: *mut statfs64) -> ::c_int;$/;" f +fstatfs_call vendor/nix/src/sys/statfs.rs /^ fn fstatfs_call() {$/;" f module:test +fstatfs_call_strict vendor/nix/src/sys/statfs.rs /^ fn fstatfs_call_strict() {$/;" f module:test +fstatvfs vendor/libc/src/fuchsia/mod.rs /^ pub fn fstatvfs(fd: ::c_int, buf: *mut statvfs) -> ::c_int;$/;" f +fstatvfs vendor/libc/src/unix/mod.rs /^ pub fn fstatvfs(fd: ::c_int, buf: *mut statvfs) -> ::c_int;$/;" f +fstatvfs vendor/nix/src/sys/statvfs.rs /^pub fn fstatvfs(fd: &T) -> Result {$/;" f +fstatvfs64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn fstatvfs64(fd: ::c_int, buf: *mut statvfs64) -> ::c_int;$/;" f +fstatvfs_call vendor/nix/src/sys/statvfs.rs /^ fn fstatvfs_call() {$/;" f module:test +fstr mksyntax.c /^ char *fstr;$/;" m struct:wordflag typeref:typename:char * file: +fsword_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type fsword_t = ::c_long;$/;" t +fsync r_bash/src/lib.rs /^ pub fn fsync(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fsync r_glob/src/lib.rs /^ pub fn fsync(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fsync r_readline/src/lib.rs /^ pub fn fsync(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fsync vendor/libc/src/fuchsia/mod.rs /^ pub fn fsync(fd: ::c_int) -> ::c_int;$/;" f +fsync vendor/libc/src/unix/mod.rs /^ pub fn fsync(fd: ::c_int) -> ::c_int;$/;" f +fsync vendor/libc/src/vxworks/mod.rs /^ pub fn fsync(fd: ::c_int) -> ::c_int;$/;" f +fsync vendor/libc/src/wasi.rs /^ pub fn fsync(fd: ::c_int) -> ::c_int;$/;" f +ftell r_bash/src/lib.rs /^ pub fn ftell(__stream: *mut FILE) -> ::std::os::raw::c_long;$/;" f +ftell r_readline/src/lib.rs /^ pub fn ftell(__stream: *mut FILE) -> ::std::os::raw::c_long;$/;" f +ftell vendor/libc/src/fuchsia/mod.rs /^ pub fn ftell(stream: *mut FILE) -> c_long;$/;" f +ftell vendor/libc/src/solid/mod.rs /^ pub fn ftell(arg1: *mut FILE) -> c_long;$/;" f +ftell vendor/libc/src/unix/mod.rs /^ pub fn ftell(stream: *mut FILE) -> c_long;$/;" f +ftell vendor/libc/src/vxworks/mod.rs /^ pub fn ftell(stream: *mut FILE) -> c_long;$/;" f +ftell vendor/libc/src/wasi.rs /^ pub fn ftell(f: *mut FILE) -> c_long;$/;" f +ftell vendor/libc/src/windows/mod.rs /^ pub fn ftell(stream: *mut FILE) -> c_long;$/;" f +ftello r_bash/src/lib.rs /^ pub fn ftello(__stream: *mut FILE) -> __off_t;$/;" f +ftello r_readline/src/lib.rs /^ pub fn ftello(__stream: *mut FILE) -> __off_t;$/;" f +ftello vendor/libc/src/fuchsia/mod.rs /^ pub fn ftello(stream: *mut ::FILE) -> ::off_t;$/;" f +ftello vendor/libc/src/solid/mod.rs /^ pub fn ftello(stream: *mut FILE) -> off_t;$/;" f +ftello vendor/libc/src/unix/mod.rs /^ pub fn ftello(stream: *mut ::FILE) -> ::off_t;$/;" f +ftello vendor/libc/src/vxworks/mod.rs /^ pub fn ftello(stream: *mut ::FILE) -> ::off_t;$/;" f +ftello vendor/libc/src/wasi.rs /^ pub fn ftello(stream: *mut ::FILE) -> ::off_t;$/;" f +ftello64 r_bash/src/lib.rs /^ pub fn ftello64(__stream: *mut FILE) -> __off64_t;$/;" f +ftello64 r_readline/src/lib.rs /^ pub fn ftello64(__stream: *mut FILE) -> __off64_t;$/;" f +ftello64 vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn ftello64(stream: *mut ::FILE) -> ::off64_t;$/;" f +ftello64 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn ftello64(stream: *mut ::FILE) -> ::off64_t;$/;" f +ftok vendor/libc/src/fuchsia/mod.rs /^ pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t;$/;" f +ftok vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn ftok(pathname: *const c_char, proj_id: ::c_int) -> key_t;$/;" f +ftok vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t;$/;" f +ftok vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn ftok(path: *const ::c_char, id: ::c_int) -> ::key_t;$/;" f +ftok vendor/libc/src/unix/haiku/mod.rs /^ pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t;$/;" f +ftok vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t;$/;" f +ftruncate r_bash/src/lib.rs /^ pub fn ftruncate(__fd: ::std::os::raw::c_int, __length: __off_t) -> ::std::os::raw::c_int;$/;" f +ftruncate r_glob/src/lib.rs /^ pub fn ftruncate(__fd: ::std::os::raw::c_int, __length: __off_t) -> ::std::os::raw::c_int;$/;" f +ftruncate r_readline/src/lib.rs /^ pub fn ftruncate(__fd: ::std::os::raw::c_int, __length: __off_t) -> ::std::os::raw::c_int;$/;" f +ftruncate vendor/libc/src/fuchsia/mod.rs /^ pub fn ftruncate(fd: ::c_int, length: off_t) -> ::c_int;$/;" f +ftruncate vendor/libc/src/unix/mod.rs /^ pub fn ftruncate(fd: ::c_int, length: off_t) -> ::c_int;$/;" f +ftruncate vendor/libc/src/vxworks/mod.rs /^ pub fn ftruncate(fd: ::c_int, length: off_t) -> ::c_int;$/;" f +ftruncate vendor/libc/src/wasi.rs /^ pub fn ftruncate(fd: ::c_int, length: off_t) -> ::c_int;$/;" f +ftruncate64 r_bash/src/lib.rs /^ pub fn ftruncate64(__fd: ::std::os::raw::c_int, __length: __off64_t) -> ::std::os::raw::c_in/;" f +ftruncate64 r_glob/src/lib.rs /^ pub fn ftruncate64(__fd: ::std::os::raw::c_int, __length: __off64_t) -> ::std::os::raw::c_in/;" f +ftruncate64 r_readline/src/lib.rs /^ pub fn ftruncate64(__fd: ::std::os::raw::c_int, __length: __off64_t) -> ::std::os::raw::c_in/;" f +ftruncate64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn ftruncate64(fd: ::c_int, length: off64_t) -> ::c_int;$/;" f +ftrylockfile r_bash/src/lib.rs /^ pub fn ftrylockfile(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +ftrylockfile r_readline/src/lib.rs /^ pub fn ftrylockfile(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +ftrylockfile vendor/libc/src/solid/mod.rs /^ pub fn ftrylockfile(arg1: *mut FILE) -> c_int;$/;" f +ftw builtins_rust/wait/src/signal.rs /^ pub ftw: __uint16_t,$/;" m struct:_fpstate +ftw builtins_rust/wait/src/signal.rs /^ pub ftw: __uint16_t,$/;" m struct:_libc_fpstate +ftw r_bash/src/lib.rs /^ pub ftw: __uint16_t,$/;" m struct:_fpstate +ftw r_bash/src/lib.rs /^ pub ftw: __uint16_t,$/;" m struct:_libc_fpstate +ftw r_glob/src/lib.rs /^ pub ftw: __uint16_t,$/;" m struct:_fpstate +ftw r_glob/src/lib.rs /^ pub ftw: __uint16_t,$/;" m struct:_libc_fpstate +ftw r_readline/src/lib.rs /^ pub ftw: __uint16_t,$/;" m struct:_fpstate +ftw r_readline/src/lib.rs /^ pub ftw: __uint16_t,$/;" m struct:_libc_fpstate +full lib/termcap/termcap.c /^ int full;$/;" m struct:buffer typeref:typename:int file: +full vendor/syn/src/gen/fold.rs /^macro_rules! full {$/;" M +full vendor/syn/src/gen/visit.rs /^macro_rules! full {$/;" M +full vendor/syn/src/gen/visit_mut.rs /^macro_rules! full {$/;" M +full_pathname builtins_rust/exec/src/lib.rs /^ fn full_pathname(file: *mut c_char) -> *mut c_char;$/;" f +full_pathname general.c /^full_pathname (file)$/;" f +full_pathname r_bash/src/lib.rs /^ pub fn full_pathname(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +full_pathname r_glob/src/lib.rs /^ pub fn full_pathname(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +full_pathname r_readline/src/lib.rs /^ pub fn full_pathname(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +full_swaps vendor/nix/src/sys/resource.rs /^ pub fn full_swaps(&self) -> c_long {$/;" P implementation:Usage +fully_consumed_drain vendor/slab/tests/slab.rs /^fn fully_consumed_drain() {$/;" f +fun vendor/futures/tests/io_read.rs /^ fun: Box Poll>>,$/;" m struct:MockReader +fun vendor/futures/tests/io_write.rs /^ fun: Box Poll>>,$/;" m struct:MockWriter +func lib/malloc/table.h /^ const char *func;$/;" m struct:mr_table typeref:typename:const char * +func lib/readline/examples/fileman.c /^ rl_icpfunc_t *func; \/* Function to call to do the job. *\/$/;" m struct:__anonbfd4ee390108 typeref:typename:rl_icpfunc_t * file: +func lib/readline/rlprivate.h /^ rl_command_func_t *func;$/;" m struct:_rl_cmd typeref:typename:rl_command_func_t * +func r_readline/src/lib.rs /^ pub func: rl_command_func_t,$/;" m struct:_rl_cmd +func1 vendor/async-trait/tests/test.rs /^ fn func1();$/;" P interface:issue92_2::Trait1 +func2 vendor/async-trait/tests/test.rs /^ async fn func2() {$/;" P interface:issue92_2::Trait2 +func_array_state execute_cmd.h /^struct func_array_state$/;" s +func_array_state r_bash/src/lib.rs /^pub struct func_array_state {$/;" s +func_dirname support/texi2dvi /^func_dirname ()$/;" f +funcname builtins_rust/complete/src/lib.rs /^ funcname: *mut c_char,$/;" m struct:COMPSPEC +funcname pcomplete.h /^ char *funcname;$/;" m struct:compspec typeref:typename:char * +funcname r_bash/src/lib.rs /^ pub funcname: *mut ::std::os::raw::c_char,$/;" m struct:compspec +funcname_a execute_cmd.h /^ ARRAY *funcname_a;$/;" m struct:func_array_state typeref:typename:ARRAY * +funcname_a r_bash/src/lib.rs /^ pub funcname_a: *mut ARRAY,$/;" m struct:func_array_state +funcname_v execute_cmd.h /^ SHELL_VAR *funcname_v;$/;" m struct:func_array_state typeref:typename:SHELL_VAR * +funcname_v r_bash/src/lib.rs /^ pub funcname_v: *mut SHELL_VAR,$/;" m struct:func_array_state +funcnest execute_cmd.c /^int funcnest = 0;$/;" v typeref:typename:int +funcnest r_bash/src/lib.rs /^ pub static mut funcnest: ::std::os::raw::c_int;$/;" v +funcnest_max execute_cmd.c /^int funcnest_max = 0;$/;" v typeref:typename:int +funcnest_max r_bash/src/lib.rs /^ pub static mut funcnest_max: ::std::os::raw::c_int;$/;" v +function builtins.h /^ sh_builtin_func_t *function; \/* The address of the invoked function. *\/$/;" m struct:builtin typeref:typename:sh_builtin_func_t * +function builtins/mkbuiltins.c /^ char *function; \/* The name of the function to call. *\/$/;" m struct:__anon69e836710208 typeref:typename:char * file: +function builtins/mkbuiltins.c /^ mk_handler_func_t *function;$/;" m struct:__anon69e836710408 typeref:typename:mk_handler_func_t * file: +function builtins_rust/bind/src/lib.rs /^ pub function: rl_command_func_t,$/;" m struct:_keymap_entry +function builtins_rust/common/src/lib.rs /^ pub function: *mut sh_builtin_func_t,$/;" m struct:builtin +function builtins_rust/enable/src/lib.rs /^ pub function: Option,$/;" m struct:builtin +function builtins_rust/help/src/lib.rs /^ function: *mut sh_builtin_func_t,$/;" m struct:builtin +function builtins_rust/read/src/intercdep.rs /^ pub function: rl_command_func_t,$/;" m struct:_keymap_entry +function lib/readline/bind.c /^ _rl_parser_func_t *function;$/;" m struct:__anon7144754c0108 typeref:typename:_rl_parser_func_t * file: +function lib/readline/keymaps.h /^ rl_command_func_t *function;$/;" m struct:_keymap_entry typeref:typename:rl_command_func_t * +function lib/readline/readline.h /^ rl_command_func_t *function;$/;" m struct:_funmap typeref:typename:rl_command_func_t * +function r_bash/src/lib.rs /^ pub function: sh_builtin_func_t,$/;" m struct:builtin +function r_readline/src/lib.rs /^ pub function: rl_command_func_t,$/;" m struct:_funmap +function r_readline/src/lib.rs /^ pub function: rl_command_func_t,$/;" m struct:_keymap_entry +function variables.c /^ sh_sv_func_t *function;$/;" m struct:name_and_function typeref:typename:sh_sv_func_t * file: +function vendor/intl_pluralrules/src/lib.rs /^ function: PluralRule,$/;" m struct:PluralRules +function-import configure.ac /^AC_ARG_ENABLE(function-import, AC_HELP_STRING([--enable-function-import], [allow utshell to impo/;" e +function_body parse.y /^function_body: shell_command$/;" l +function_cell builtins_rust/declare/src/lib.rs /^unsafe fn function_cell(var: *mut SHELL_VAR) -> *mut COMMAND {$/;" f +function_cell builtins_rust/type/src/lib.rs /^unsafe fn function_cell(var: *mut SHELL_VAR) -> *mut COMMAND {$/;" f +function_cell variables.h /^#define function_cell(/;" d +function_def builtins_rust/cd/src/lib.rs /^pub struct function_def {$/;" s +function_def builtins_rust/command/src/lib.rs /^pub struct function_def {$/;" s +function_def builtins_rust/common/src/lib.rs /^pub struct function_def {$/;" s +function_def builtins_rust/complete/src/lib.rs /^pub struct function_def {$/;" s +function_def builtins_rust/declare/src/lib.rs /^pub struct function_def {$/;" s +function_def builtins_rust/fc/src/lib.rs /^pub struct function_def {$/;" s +function_def builtins_rust/fg_bg/src/lib.rs /^pub struct function_def {$/;" s +function_def builtins_rust/getopts/src/lib.rs /^pub struct function_def {$/;" s +function_def builtins_rust/jobs/src/lib.rs /^pub struct function_def {$/;" s +function_def builtins_rust/kill/src/intercdep.rs /^pub struct function_def {$/;" s +function_def builtins_rust/pushd/src/lib.rs /^pub struct function_def {$/;" s +function_def builtins_rust/setattr/src/intercdep.rs /^pub struct function_def {$/;" s +function_def builtins_rust/source/src/lib.rs /^pub struct function_def {$/;" s +function_def builtins_rust/type/src/lib.rs /^pub struct function_def {$/;" s +function_def command.h /^typedef struct function_def {$/;" s +function_def parse.y /^function_def: WORD '(' ')' newline_list function_body$/;" l +function_def r_bash/src/lib.rs /^pub struct function_def {$/;" s +function_def r_glob/src/lib.rs /^pub struct function_def {$/;" s +function_def r_readline/src/lib.rs /^pub struct function_def {$/;" s +function_handler builtins/mkbuiltins.c /^function_handler (self, defs, arg)$/;" f +function_line_number execute_cmd.c /^static int function_line_number;$/;" v typeref:typename:int file: +function_p variables.h /^#define function_p(/;" d +function_trace_mode builtins_rust/shopt/src/lib.rs /^ static mut function_trace_mode: i32;$/;" v +function_trace_mode builtins_rust/source/src/lib.rs /^ static mut function_trace_mode: i32;$/;" v +function_trace_mode flags.c /^int function_trace_mode = 0;$/;" v typeref:typename:int +function_trace_mode r_bash/src/lib.rs /^ pub static mut function_trace_mode: ::std::os::raw::c_int;$/;" v +functiondiscoverykeys_devpkey vendor/winapi/src/um/mod.rs /^#[cfg(feature = "functiondiscoverykeys_devpkey")] pub mod functiondiscoverykeys_devpkey;$/;" n +funlockfile r_bash/src/lib.rs /^ pub fn funlockfile(__stream: *mut FILE);$/;" f +funlockfile r_readline/src/lib.rs /^ pub fn funlockfile(__stream: *mut FILE);$/;" f +funlockfile vendor/libc/src/solid/mod.rs /^ pub fn funlockfile(arg1: *mut FILE);$/;" f +funmap lib/readline/funmap.c /^FUNMAP **funmap;$/;" v typeref:typename:FUNMAP ** +funmap r_readline/src/lib.rs /^ pub static mut funmap: *mut *mut FUNMAP;$/;" v +funmap.o lib/readline/Makefile.in /^funmap.o: ${BUILD_DIR}\/config.h$/;" t +funmap.o lib/readline/Makefile.in /^funmap.o: funmap.c$/;" t +funmap.o lib/readline/Makefile.in /^funmap.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +funmap.o lib/readline/Makefile.in /^funmap.o: rlconf.h ansi_stdlib.h rlstdc.h$/;" t +funmap.o lib/readline/Makefile.in /^funmap.o: xmalloc.h$/;" t +funmap_entry lib/readline/funmap.c /^static int funmap_entry;$/;" v typeref:typename:int file: +funmap_initialized lib/readline/funmap.c /^static int funmap_initialized;$/;" v typeref:typename:int file: +funmap_program_specific_entry_start lib/readline/funmap.c /^int funmap_program_specific_entry_start;$/;" v typeref:typename:int +funmap_size lib/readline/funmap.c /^static int funmap_size;$/;" v typeref:typename:int file: +fuse vendor/futures-util/src/future/future/mod.rs /^ fn fuse(self) -> Fuse$/;" P interface:FutureExt +fuse vendor/futures-util/src/future/future/mod.rs /^mod fuse;$/;" n +fuse vendor/futures-util/src/stream/stream/mod.rs /^ fn fuse(self) -> Fuse$/;" P interface:StreamExt +fuse vendor/futures-util/src/stream/stream/mod.rs /^mod fuse;$/;" n +fuse vendor/futures/tests/future_fuse.rs /^fn fuse() {$/;" f +fuse vendor/futures/tests_disabled/stream.rs /^fn fuse() {$/;" f +fut_exprs vendor/futures-macro/src/join.rs /^ fut_exprs: Vec,$/;" m struct:Join +futex vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn futex($/;" f +futimens r_bash/src/lib.rs /^ pub fn futimens(__fd: ::std::os::raw::c_int, __times: *const timespec)$/;" f +futimens r_readline/src/lib.rs /^ pub fn futimens(__fd: ::std::os::raw::c_int, __times: *const timespec)$/;" f +futimens vendor/libc/src/fuchsia/mod.rs /^ pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;$/;" f +futimens vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;$/;" f +futimens vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;$/;" f +futimens vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;$/;" f +futimens vendor/libc/src/unix/haiku/mod.rs /^ pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;$/;" f +futimens vendor/libc/src/unix/linux_like/mod.rs /^ pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;$/;" f +futimens vendor/libc/src/unix/redox/mod.rs /^ pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;$/;" f +futimens vendor/libc/src/unix/solarish/mod.rs /^ pub fn futimens(dirfd: ::c_int, times: *const ::timespec) -> ::c_int;$/;" f +futimens vendor/libc/src/wasi.rs /^ pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;$/;" f +futimens vendor/nix/src/sys/stat.rs /^pub fn futimens(fd: RawFd, atime: &TimeSpec, mtime: &TimeSpec) -> Result<()> {$/;" f +futimes r_bash/src/lib.rs /^ pub fn futimes(__fd: ::std::os::raw::c_int, __tvp: *const timeval) -> ::std::os::raw::c_int;$/;" f +futimes r_glob/src/lib.rs /^ pub fn futimes(__fd: ::std::os::raw::c_int, __tvp: *const timeval) -> ::std::os::raw::c_int;$/;" f +futimes r_readline/src/lib.rs /^ pub fn futimes(__fd: ::std::os::raw::c_int, __tvp: *const timeval) -> ::std::os::raw::c_int;$/;" f +futimes vendor/libc/src/fuchsia/mod.rs /^ pub fn futimes(fd: ::c_int, times: *const ::timeval) -> ::c_int;$/;" f +futimes vendor/libc/src/unix/bsd/mod.rs /^ pub fn futimes(fd: ::c_int, times: *const ::timeval) -> ::c_int;$/;" f +futimesat r_bash/src/lib.rs /^ pub fn futimesat($/;" f +futimesat r_glob/src/lib.rs /^ pub fn futimesat($/;" f +futimesat r_readline/src/lib.rs /^ pub fn futimesat($/;" f +futimesat vendor/libc/src/unix/solarish/mod.rs /^ pub fn futimesat(fd: ::c_int, path: *const ::c_char, times: *const ::timeval) -> ::c_int;$/;" f +future vendor/futures-core/src/lib.rs /^pub mod future;$/;" n +future vendor/futures-executor/src/thread_pool.rs /^ future: FutureObj<'static, ()>,$/;" m struct:Task +future vendor/futures-task/src/future_obj.rs /^ future: *mut (dyn Future + 'static),$/;" m struct:LocalFutureObj +future vendor/futures-util/src/async_await/poll.rs /^ future: F,$/;" m struct:PollOnce +future vendor/futures-util/src/future/mod.rs /^mod future;$/;" n +future vendor/futures-util/src/lib.rs /^pub mod future;$/;" n +future vendor/futures-util/src/stream/futures_unordered/task.rs /^ pub(super) future: UnsafeCell>,$/;" m struct:Task +future vendor/futures/tests/auto_traits.rs /^pub mod future {$/;" n +future vendor/futures/tests/eager_drop.rs /^ future: F,$/;" m struct:FutureData +future vendor/futures/tests/object_safety.rs /^fn future() {$/;" f +future vendor/futures/tests/stream_futures_unordered.rs /^ future: F,$/;" m struct:iter_cancel::AtomicCancel +future_obj vendor/futures-task/src/lib.rs /^mod future_obj;$/;" n +future_or_output vendor/futures-util/src/future/future/shared.rs /^ future_or_output: UnsafeCell>,$/;" m struct:Inner +futures-channel vendor/futures-channel/README.md /^# futures-channel$/;" c +futures-core vendor/futures-core/README.md /^# futures-core$/;" c +futures-executor vendor/futures-executor/README.md /^# futures-executor$/;" c +futures-io vendor/futures-io/README.md /^# futures-io$/;" c +futures-sink vendor/futures-sink/README.md /^# futures-sink$/;" c +futures-task vendor/futures-task/README.md /^# futures-task$/;" c +futures-util vendor/futures-util/README.md /^# futures-util$/;" c +futures_not_moved_after_poll vendor/futures/tests/stream_futures_unordered.rs /^fn futures_not_moved_after_poll() {$/;" f +futures_ordered vendor/futures-util/src/stream/mod.rs /^mod futures_ordered;$/;" n +futures_unordered vendor/futures-util/src/stream/mod.rs /^pub mod futures_unordered;$/;" n +futures_util_select vendor/futures/tests/stream_select_next_some.rs /^fn futures_util_select() {$/;" f +fwd_find vendor/memchr/src/memmem/genericsimd.rs /^pub(crate) unsafe fn fwd_find($/;" f +fwd_find_in_chunk vendor/memchr/src/memmem/genericsimd.rs /^unsafe fn fwd_find_in_chunk($/;" f +fwide r_bash/src/lib.rs /^ pub fn fwide(__fp: *mut __FILE, __mode: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fwide r_glob/src/lib.rs /^ pub fn fwide(__fp: *mut __FILE, __mode: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fwide r_readline/src/lib.rs /^ pub fn fwide(__fp: *mut __FILE, __mode: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +fwprintf r_bash/src/lib.rs /^ pub fn fwprintf(__stream: *mut __FILE, __format: *const wchar_t, ...) -> ::std::os::raw::c_i/;" f +fwprintf r_glob/src/lib.rs /^ pub fn fwprintf(__stream: *mut __FILE, __format: *const wchar_t, ...) -> ::std::os::raw::c_i/;" f +fwprintf r_readline/src/lib.rs /^ pub fn fwprintf(__stream: *mut __FILE, __format: *const wchar_t, ...) -> ::std::os::raw::c_i/;" f +fwrite r_bash/src/lib.rs /^ pub fn fwrite($/;" f +fwrite r_readline/src/lib.rs /^ pub fn fwrite($/;" f +fwrite vendor/libc/src/fuchsia/mod.rs /^ pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;$/;" f +fwrite vendor/libc/src/solid/mod.rs /^ pub fn fwrite(arg1: *const c_void, arg2: size_t, arg3: size_t, arg4: *mut FILE) -> size_t;$/;" f +fwrite vendor/libc/src/unix/mod.rs /^ pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;$/;" f +fwrite vendor/libc/src/vxworks/mod.rs /^ pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;$/;" f +fwrite vendor/libc/src/wasi.rs /^ pub fn fwrite(buf: *const c_void, a: size_t, b: size_t, f: *mut FILE) -> size_t;$/;" f +fwrite vendor/libc/src/windows/mod.rs /^ pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;$/;" f +fwrite_unlocked r_bash/src/lib.rs /^ pub fn fwrite_unlocked($/;" f +fwrite_unlocked r_readline/src/lib.rs /^ pub fn fwrite_unlocked($/;" f +fwscanf r_bash/src/lib.rs /^ pub fn fwscanf(__stream: *mut __FILE, __format: *const wchar_t, ...) -> ::std::os::raw::c_in/;" f +fwscanf r_glob/src/lib.rs /^ pub fn fwscanf(__stream: *mut __FILE, __format: *const wchar_t, ...) -> ::std::os::raw::c_in/;" f +fwscanf r_readline/src/lib.rs /^ pub fn fwscanf(__stream: *mut __FILE, __format: *const wchar_t, ...) -> ::std::os::raw::c_in/;" f +g lib/intl/hash-string.h /^ unsigned long int hval, g;$/;" v typeref:typename:unsigned long int +g vendor/async-trait/tests/test.rs /^ async fn g(_: &'b ()); \/\/ chain 'b only$/;" P interface:issue28::Trait3 +g vendor/async-trait/tests/test.rs /^ async fn g(arg: *const impl Trait);$/;" P interface:issue204::Trait +g vendor/async-trait/tests/test.rs /^ async fn g(mut self)$/;" P interface:issue23::Issue23 +g vendor/async-trait/tests/test.rs /^ async fn g(self: &Self) {}$/;" P interface:issue83::Trait +g vendor/async-trait/tests/test.rs /^ async fn g(x: Str<'a>) -> &'a str {$/;" P interface:issue28::Trait1 +g_list builtins_rust/common/src/lib.rs /^pub struct g_list {$/;" s +g_list general.h /^typedef struct g_list {$/;" s +g_list r_bash/src/lib.rs /^pub struct g_list {$/;" s +g_list r_glob/src/lib.rs /^pub struct g_list {$/;" s +g_list r_readline/src/lib.rs /^pub struct g_list {$/;" s +gai_strerror vendor/libc/src/fuchsia/mod.rs /^ pub fn gai_strerror(errcode: ::c_int) -> *const ::c_char;$/;" f +gai_strerror vendor/libc/src/unix/mod.rs /^ pub fn gai_strerror(errcode: ::c_int) -> *const ::c_char;$/;" f +gai_strerror vendor/libc/src/vxworks/mod.rs /^ pub fn gai_strerror(errcode: ::c_int) -> *mut ::c_char;$/;" f +garglist builtins_rust/printf/src/lib.rs /^static mut garglist: *mut WordList = PT_NULL as *mut WordList;$/;" v +garglist subst.c /^static WORD_LIST *garglist = (WORD_LIST *)NULL;$/;" v typeref:typename:WORD_LIST * file: +gather_here_documents r_bash/src/lib.rs /^ pub fn gather_here_documents();$/;" f +gcov Makefile.in /^gcov:$/;" t +gcvt r_bash/src/lib.rs /^ pub fn gcvt($/;" f +gcvt r_glob/src/lib.rs /^ pub fn gcvt($/;" f +gcvt r_readline/src/lib.rs /^ pub fn gcvt($/;" f +gen vendor/syn/src/lib.rs /^mod gen {$/;" n +gen vendor/syn/tests/debug/mod.rs /^mod gen;$/;" n +gen-helpfiles builtins/Makefile.in /^gen-helpfiles: tmpbuiltins.o gen-helpfiles.o$/;" t +gen-helpfiles.o builtins/Makefile.in /^gen-helpfiles.o: ..\/config.h$/;" t +gen-helpfiles.o builtins/Makefile.in /^gen-helpfiles.o: gen-helpfiles.c$/;" t +gen_action_completions pcomplete.c /^gen_action_completions (cs, text)$/;" f file: +gen_command_matches pcomplete.c /^gen_command_matches (cs, cmd, text, line, ind, lwords, nw, cw)$/;" f file: +gen_completion_matches lib/readline/complete.c /^gen_completion_matches (char *text, int start, int end, rl_compentry_func_t *our_func, int found/;" f typeref:typename:char ** file: +gen_compspec_completions builtins_rust/complete/src/lib.rs /^ fn gen_compspec_completions($/;" f +gen_compspec_completions pcomplete.c /^gen_compspec_completions (cs, cmd, word, start, end, foundp)$/;" f +gen_compspec_completions r_bash/src/lib.rs /^ pub fn gen_compspec_completions($/;" f +gen_extend vendor/smallvec/benches/bench.rs /^fn gen_extend>(n: u64, b: &mut Bencher) {$/;" f +gen_extend_from_slice vendor/smallvec/benches/bench.rs /^fn gen_extend_from_slice>(n: u64, b: &mut Bencher) {$/;" f +gen_from_elem vendor/smallvec/benches/bench.rs /^fn gen_from_elem>(n: usize, b: &mut Bencher) {$/;" f +gen_from_iter vendor/smallvec/benches/bench.rs /^fn gen_from_iter>(n: u64, b: &mut Bencher) {$/;" f +gen_from_slice vendor/smallvec/benches/bench.rs /^fn gen_from_slice>(n: u64, b: &mut Bencher) {$/;" f +gen_globpat_matches pcomplete.c /^gen_globpat_matches (cs, text)$/;" f file: +gen_index vendor/futures-util/src/async_await/random.rs /^fn gen_index(n: usize) -> usize {$/;" f +gen_insert vendor/smallvec/benches/bench.rs /^fn gen_insert>(n: u64, b: &mut Bencher) {$/;" f +gen_insert_push vendor/smallvec/benches/bench.rs /^fn gen_insert_push>(n: u64, b: &mut Bencher) {$/;" f +gen_matches_from_itemlist pcomplete.c /^gen_matches_from_itemlist (itp, text)$/;" f file: +gen_progcomp_completions pcomplete.c /^gen_progcomp_completions (ocmd, cmd, word, start, end, foundp, retryp, lastcs)$/;" f file: +gen_push vendor/smallvec/benches/bench.rs /^fn gen_push>(n: u64, b: &mut Bencher) {$/;" f +gen_pushpop vendor/smallvec/benches/bench.rs /^fn gen_pushpop>(b: &mut Bencher) {$/;" f +gen_remove vendor/smallvec/benches/bench.rs /^fn gen_remove>(n: usize, b: &mut Bencher) {$/;" f +gen_shell_function_matches pcomplete.c /^gen_shell_function_matches (cs, cmd, text, line, ind, lwords, nw, cw, foundp)$/;" f file: +gen_string vendor/unicode-ident/benches/xid.rs /^fn gen_string(p_nonascii: u32) -> String {$/;" f +gen_wordlist_matches pcomplete.c /^gen_wordlist_matches (cs, text)$/;" f file: +general.o Makefile.in /^general.o: $(TILDE_LIBSRC)\/tilde.h$/;" t +general.o Makefile.in /^general.o: ${BASHINCDIR}\/chartypes.h$/;" t +general.o Makefile.in /^general.o: ${BASHINCDIR}\/maxpath.h ${BASHINCDIR}\/posixtime.h$/;" t +general.o Makefile.in /^general.o: ${BASHINCDIR}\/ocache.h $(DEFSRC)\/common.h$/;" t +general.o Makefile.in /^general.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +general.o Makefile.in /^general.o: config.h bashtypes.h ${BASHINCDIR}\/posixstat.h ${BASHINCDIR}\/filecntl.h bashansi.h /;" t +general.o Makefile.in /^general.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +general.o Makefile.in /^general.o: make_cmd.h subst.h sig.h pathnames.h externs.h flags.h parser.h$/;" t +general.o Makefile.in /^general.o: pathexp.h$/;" t +general.o Makefile.in /^general.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +general.o Makefile.in /^general.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}/;" t +general.o Makefile.in /^general.o: trap.h input.h assoc.h test.h findcmd.h $/;" t +generate vendor/futures-util/src/future/join.rs /^macro_rules! generate {$/;" M +generate vendor/futures-util/src/future/try_join.rs /^macro_rules! generate {$/;" M +generate vendor/memchr/src/memmem/prefilter/mod.rs /^ fn generate(self) -> impl Iterator {$/;" P implementation:tests::PrefilterTestSeed +generate vendor/winapi/build.rs /^ fn generate() -> Graph {$/;" P implementation:Graph +generate_fdset_bad_fd_tests vendor/nix/test/sys/test_select.rs /^macro_rules! generate_fdset_bad_fd_tests {$/;" M +generated_files_get support/texi2dvi /^generated_files_get ()$/;" f +generated_files_get_from_fls support/texi2dvi /^generated_files_get_from_fls ()$/;" f +generated_files_get_from_log support/texi2dvi /^generated_files_get_from_log ()$/;" f +generator vendor/fluent-fallback/src/lib.rs /^pub mod generator;$/;" n +generator vendor/fluent-fallback/src/localization.rs /^ generator: G,$/;" m struct:Localization +generic vendor/libc/src/unix/newlib/mod.rs /^mod generic;$/;" n +generic_type_param vendor/async-trait/tests/test.rs /^ async fn generic_type_param(x: Box) -> T {$/;" P implementation:Struct +generic_type_param vendor/async-trait/tests/test.rs /^ async fn generic_type_param(x: Box) -> T {$/;" P interface:Trait +generics vendor/syn/src/item.rs /^ generics: Generics,$/;" m struct:parsing::FlexibleItemType +generics vendor/syn/src/lib.rs /^mod generics;$/;" n +generics vendor/thiserror-impl/src/ast.rs /^ pub generics: &'a Generics,$/;" m struct:Enum +generics vendor/thiserror-impl/src/ast.rs /^ pub generics: &'a Generics,$/;" m struct:Struct +generics vendor/thiserror-impl/src/lib.rs /^mod generics;$/;" n +generics_wrapper_impls vendor/syn/src/generics.rs /^macro_rules! generics_wrapper_impls {$/;" M +genericsimd vendor/memchr/src/memmem/mod.rs /^mod genericsimd;$/;" n +genericsimd vendor/memchr/src/memmem/prefilter/mod.rs /^mod genericsimd;$/;" n +genindex builtins_rust/enable/src/lib.rs /^ pub genindex: libc::c_int,$/;" m struct:_list_of_items +genindex pcomplete.h /^ int genindex; \/* index of item last handed to completion code *\/$/;" m struct:_list_of_items typeref:typename:int +genindex r_bash/src/lib.rs /^ pub genindex: ::std::os::raw::c_int,$/;" m struct:_list_of_items +genlist builtins_rust/enable/src/lib.rs /^ pub genlist: *mut STRINGLIST,$/;" m struct:_list_of_items +genlist pcomplete.h /^ STRINGLIST *genlist; \/* for handing to the completion code one item at a time *\/$/;" m struct:_list_of_items typeref:typename:STRINGLIST * +genlist r_bash/src/lib.rs /^ pub genlist: *mut STRINGLIST,$/;" m struct:_list_of_items +genseed lib/sh/random.c /^genseed ()$/;" f typeref:typename:u_bits32_t file: +get r_bash/src/lib.rs /^ pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {$/;" f +get r_readline/src/lib.rs /^ pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {$/;" f +get vendor/chunky-vec/src/lib.rs /^ pub fn get(&self, index: usize) -> Option<&T> {$/;" P implementation:Chunk +get vendor/chunky-vec/src/lib.rs /^ pub fn get(&self, index: usize) -> Option<&T> {$/;" P implementation:ChunkyVec +get vendor/elsa/examples/string_interner.rs /^ fn get(&self, value: T) -> Option$/;" P implementation:StringInterner +get vendor/elsa/src/index_map.rs /^ pub fn get(&self, k: &Q) -> Option<&V::Target>$/;" P implementation:FrozenIndexMap +get vendor/elsa/src/index_set.rs /^ pub fn get(&self, k: &Q) -> Option<&T::Target>$/;" P implementation:FrozenIndexSet +get vendor/elsa/src/map.rs /^ pub fn get(&self, k: &Q) -> Option<&V::Target>$/;" P implementation:FrozenBTreeMap +get vendor/elsa/src/map.rs /^ pub fn get(&self, k: &Q) -> Option<&V::Target>$/;" P implementation:FrozenMap +get vendor/elsa/src/sync.rs /^ pub fn get(&self, index: usize) -> Option<&T::Target> {$/;" P implementation:FrozenVec +get vendor/elsa/src/sync.rs /^ pub fn get(&self, k: &Q) -> Option<&V::Target>$/;" P implementation:FrozenBTreeMap +get vendor/elsa/src/sync.rs /^ pub fn get(&self, k: &Q) -> Option<&V::Target>$/;" P implementation:FrozenMap +get vendor/elsa/src/vec.rs /^ pub fn get(&self, index: usize) -> Option<&T::Target> {$/;" P implementation:FrozenVec +get vendor/fluent-bundle/src/args.rs /^ pub fn get(&self, key: K) -> Option<&FluentValue<'args>>$/;" P implementation:FluentArgs +get vendor/fluent-fallback/src/cache.rs /^ pub fn get(&self, index: usize) -> Option<&I::Item> {$/;" f +get vendor/fluent-fallback/src/cache.rs /^ pub fn get(&self, index: usize) -> Poll> {$/;" f +get vendor/lazy_static/src/core_lazy.rs /^ pub fn get(&'static self, builder: F) -> &T$/;" P implementation:Lazy +get vendor/lazy_static/src/inline_lazy.rs /^ pub fn get(&'static self, f: F) -> &T$/;" P implementation:Lazy +get vendor/libloading/src/os/unix/mod.rs /^ pub unsafe fn get(&self, symbol: &[u8]) -> Result, crate::Error> {$/;" P implementation:Library +get vendor/libloading/src/os/windows/mod.rs /^ pub unsafe fn get(&self, symbol: &[u8]) -> Result, crate::Error> {$/;" P implementation:Library +get vendor/libloading/src/safe.rs /^ pub unsafe fn get<'lib, T>(&'lib self, symbol: &[u8]) -> Result, Error> {$/;" P implementation:Library +get vendor/libloading/tests/functions.rs /^ unsafe fn get<'a, T>(l: &'a Library, _: T) -> Result, libloading::Error> {$/;" f function:test_incompatible_type_named_fn +get vendor/nix/src/sys/personality.rs /^pub fn get() -> Result {$/;" f +get vendor/nix/src/sys/socket/addr.rs /^ unsafe fn get(sun: &'a libc::sockaddr_un, sun_len: u8) -> Self {$/;" P implementation:UnixAddrKind +get vendor/nix/src/sys/socket/mod.rs /^ fn get(&self, fd: RawFd) -> Result;$/;" P interface:GetSockOpt +get vendor/nix/src/sys/timer.rs /^ pub fn get(&self) -> Result> {$/;" P implementation:Timer +get vendor/nix/src/sys/timerfd.rs /^ pub fn get(&self) -> Result> {$/;" P implementation:TimerFd +get vendor/nix/src/ucontext.rs /^ pub fn get() -> Result {$/;" P implementation:UContext +get vendor/once_cell/src/lib.rs /^ pub fn get(&self) -> Option<&T> {$/;" P implementation:sync::OnceCell +get vendor/once_cell/src/lib.rs /^ pub fn get(&self) -> Option<&T> {$/;" P implementation:unsync::OnceCell +get vendor/once_cell/src/lib.rs /^ pub fn get(this: &Lazy) -> Option<&T> {$/;" P implementation:sync::Lazy +get vendor/once_cell/src/lib.rs /^ pub fn get(this: &Lazy) -> Option<&T> {$/;" P implementation:unsync::Lazy +get vendor/once_cell/src/race.rs /^ pub fn get(&self) -> Option<&T> {$/;" P implementation:once_box::OnceBox +get vendor/once_cell/src/race.rs /^ pub fn get(&self) -> Option {$/;" P implementation:OnceNonZeroUsize +get vendor/once_cell/src/race.rs /^ pub fn get(&self) -> Option {$/;" P implementation:OnceBool +get vendor/slab/src/lib.rs /^ pub fn get(&self, key: usize) -> Option<&T> {$/;" P implementation:Slab +get vendor/smallvec/src/lib.rs /^ fn get(&self) -> usize {$/;" P implementation:SetLenOnDrop +get vendor/syn/src/thread.rs /^ pub fn get(&self) -> Option<&T> {$/;" P implementation:ThreadBound +get vendor/thiserror-impl/src/attr.rs /^pub fn get(input: &[Attribute]) -> Result {$/;" f +get vendor/type-map/src/lib.rs /^ pub fn get(&self) -> &T {$/;" P implementation:concurrent::OccupiedEntry +get vendor/type-map/src/lib.rs /^ pub fn get(&self) -> Option<&T> {$/;" P implementation:concurrent::TypeMap +get vendor/type-map/src/lib.rs /^ pub fn get(&self) -> &T {$/;" P implementation:OccupiedEntry +get vendor/type-map/src/lib.rs /^ pub fn get(&self) -> Option<&T> {$/;" P implementation:TypeMap +get2_mut vendor/slab/src/lib.rs /^ pub fn get2_mut(&mut self, key1: usize, key2: usize) -> Option<(&mut T, &mut T)> {$/;" P implementation:Slab +get2_unchecked_mut vendor/slab/src/lib.rs /^ pub unsafe fn get2_unchecked_mut(&mut self, key1: usize, key2: usize) -> (&mut T, &mut T) {$/;" P implementation:Slab +getOptions support/texi2html /^sub getOptions$/;" s +get_alias_value alias.c /^get_alias_value (name)$/;" f +get_alias_value r_bash/src/lib.rs /^ pub fn get_alias_value(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +get_aliasvar variables.c /^get_aliasvar (self)$/;" f file: +get_all_original_signals builtins_rust/trap/src/intercdep.rs /^ pub fn get_all_original_signals();$/;" f +get_all_original_signals r_bash/src/lib.rs /^ pub fn get_all_original_signals();$/;" f +get_all_original_signals r_glob/src/lib.rs /^ pub fn get_all_original_signals();$/;" f +get_all_original_signals r_readline/src/lib.rs /^ pub fn get_all_original_signals();$/;" f +get_all_original_signals trap.c /^get_all_original_signals ()$/;" f typeref:typename:void +get_area_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_area_info(id: area_id, info: *mut area_info) -> status_t {$/;" f +get_arg builtins/mkbuiltins.c /^get_arg (for_whom, defs, string)$/;" f +get_args vendor/fluent-bundle/benches/resolver.rs /^fn get_args(name: &str) -> Option {$/;" f +get_args vendor/fluent-bundle/benches/resolver_iai.rs /^fn get_args(name: &str) -> Option {$/;" f +get_arguments vendor/fluent-bundle/src/resolver/scope.rs /^ pub fn get_arguments($/;" P implementation:Scope +get_array_value arrayfunc.c /^get_array_value (s, flags, rtype, indp)$/;" f +get_array_value r_bash/src/lib.rs /^ pub fn get_array_value($/;" f +get_attribute vendor/fluent-bundle/src/message.rs /^ pub fn get_attribute(&self, key: &str) -> Option> {$/;" P implementation:FluentMessage +get_attribute vendor/fluent-syntax/src/parser/core.rs /^ fn get_attribute(&mut self) -> Result> {$/;" f +get_attribute_accessor vendor/fluent-syntax/src/parser/core.rs /^ pub(super) fn get_attribute_accessor(&mut self) -> Result>> {$/;" f +get_attributes vendor/fluent-syntax/src/parser/core.rs /^ fn get_attributes(&mut self) -> Vec> {$/;" f +get_available_locales vendor/fluent-fallback/examples/simple-fallback.rs /^fn get_available_locales() -> io::Result> {$/;" f +get_available_locales vendor/fluent-resmgr/examples/simple-resmgr.rs /^fn get_available_locales() -> Result, io::Error> {$/;" f +get_bash_argv0 variables.c /^get_bash_argv0 (var)$/;" f file: +get_bash_command variables.c /^get_bash_command (var)$/;" f file: +get_bash_name variables.c /^get_bash_name ()$/;" f typeref:typename:char * file: +get_bashargcv variables.c /^get_bashargcv (self)$/;" f file: +get_bashpid variables.c /^get_bashpid (var)$/;" f file: +get_bit r_bash/src/lib.rs /^ pub fn get_bit(&self, index: usize) -> bool {$/;" f +get_bit r_readline/src/lib.rs /^ pub fn get_bit(&self, index: usize) -> bool {$/;" f +get_bundle vendor/fluent-bundle/benches/resolver.rs /^fn get_bundle(name: &'static str, source: &str) -> (FluentBundle, Vec) {$/;" f +get_bundle vendor/fluent-resmgr/src/resource_manager.rs /^ pub fn get_bundle($/;" P implementation:ResourceManager +get_bundles vendor/fluent-resmgr/src/resource_manager.rs /^ pub fn get_bundles($/;" P implementation:ResourceManager +get_call_arguments vendor/fluent-syntax/src/parser/expression.rs /^ pub fn get_call_arguments(&mut self) -> Result>> {$/;" f +get_charset_aliases lib/intl/localcharset.c /^get_charset_aliases ()$/;" f typeref:typename:const char * file: +get_clk_tck lib/sh/clktck.c /^get_clk_tck ()$/;" f typeref:typename:long +get_clk_tck r_bash/src/lib.rs /^ pub fn get_clk_tck() -> ::std::os::raw::c_long;$/;" f +get_cmd_enable builtins_rust/cmd/src/lib.rs /^pub fn get_cmd_enable(cmd: String) -> Result {$/;" f +get_cmd_type builtins_rust/exec_cmd/src/lib.rs /^unsafe fn get_cmd_type(command: *mut libc::c_char) -> CMDType {$/;" f +get_cmd_xmap_from_edit_mode bashline.c /^get_cmd_xmap_from_edit_mode ()$/;" f typeref:typename:Keymap file: +get_cmd_xmap_from_keymap bashline.c /^get_cmd_xmap_from_keymap (kmap)$/;" f file: +get_comment vendor/fluent-syntax/src/parser/comment.rs /^ pub(super) fn get_comment(&mut self) -> Result<(ast::Comment, Level)> {$/;" f +get_comment_level vendor/fluent-syntax/src/parser/comment.rs /^ fn get_comment_level(&mut self) -> Level {$/;" f +get_comment_line vendor/fluent-syntax/src/parser/comment.rs /^ fn get_comment_line(&mut self) -> S {$/;" f +get_comp_wordbreaks variables.c /^get_comp_wordbreaks (var)$/;" f file: +get_cpu_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_cpu_info(firstCPU: u32, cpuCount: u32, info: *mut cpu_info) -> status_t {$/;" f +get_ctxs vendor/fluent-syntax/benches/parser.rs /^fn get_ctxs(tests: &[&'static str]) -> HashMap<&'static str, Vec> {$/;" f +get_current_dir_name r_bash/src/lib.rs /^ pub fn get_current_dir_name() -> *mut ::std::os::raw::c_char;$/;" f +get_current_dir_name r_glob/src/lib.rs /^ pub fn get_current_dir_name() -> *mut ::std::os::raw::c_char;$/;" f +get_current_dir_name r_readline/src/lib.rs /^ pub fn get_current_dir_name() -> *mut ::std::os::raw::c_char;$/;" f +get_current_flags flags.c /^get_current_flags ()$/;" f typeref:typename:char * +get_current_flags r_bash/src/lib.rs /^ pub fn get_current_flags() -> *mut ::std::os::raw::c_char;$/;" f +get_current_options builtins_rust/declare/src/lib.rs /^ fn get_current_options() -> *mut c_char;$/;" f +get_current_options builtins_rust/set/src/lib.rs /^unsafe fn get_current_options() -> *mut libc::c_char {$/;" f +get_current_options r_bash/src/lib.rs /^ pub fn get_current_options() -> *mut ::std::os::raw::c_char;$/;" f +get_current_prompt_level r_bash/src/lib.rs /^ pub fn get_current_prompt_level() -> ::std::os::raw::c_int;$/;" f +get_current_user_info r_bash/src/lib.rs /^ pub fn get_current_user_info();$/;" f +get_current_user_info shell.c /^get_current_user_info ()$/;" f typeref:typename:void +get_cursor vendor/proc-macro2/src/fallback.rs /^fn get_cursor(src: &str) -> Cursor {$/;" f +get_directory_stack r_bash/src/lib.rs /^ pub fn get_directory_stack(arg1: ::std::os::raw::c_int) -> *mut WORD_LIST;$/;" f +get_dirstack variables.c /^get_dirstack (self)$/;" f file: +get_dirstack_element r_bash/src/lib.rs /^ pub fn get_dirstack_element($/;" f +get_dirstack_from_string r_bash/src/lib.rs /^ pub fn get_dirstack_from_string($/;" f +get_does_not_block vendor/once_cell/tests/it.rs /^ fn get_does_not_block() {$/;" f module:sync +get_dollar_var_value r_bash/src/lib.rs /^ pub fn get_dollar_var_value(arg1: intmax_t) -> *mut ::std::os::raw::c_char;$/;" f +get_dollar_var_value subst.c /^get_dollar_var_value (ind)$/;" f +get_edit_mode builtins_rust/set/src/lib.rs /^unsafe extern "C" fn get_edit_mode(name: *mut libc::c_char) -> i32 {$/;" f +get_enable builtins_rust/cmd/src/lib.rs /^ pub fn get_enable(&self) -> bool {$/;" P implementation:Cmd +get_entry vendor/fluent-bundle/src/resource.rs /^ pub fn get_entry(&self, idx: usize) -> Option<&ast::Entry<&str>> {$/;" P implementation:FluentResource +get_entry vendor/fluent-syntax/src/parser/core.rs /^ fn get_entry(&mut self, entry_start: usize) -> Result> {$/;" f +get_entry_function vendor/fluent-bundle/src/entry.rs /^ fn get_entry_function(&self, id: &str) -> Option<&FluentFunction> {$/;" P implementation:FluentBundle +get_entry_function vendor/fluent-bundle/src/entry.rs /^ fn get_entry_function(&self, id: &str) -> Option<&FluentFunction>;$/;" P interface:GetEntry +get_entry_message vendor/fluent-bundle/src/entry.rs /^ fn get_entry_message(&self, id: &str) -> Option<&ast::Message<&str>> {$/;" P implementation:FluentBundle +get_entry_message vendor/fluent-bundle/src/entry.rs /^ fn get_entry_message(&self, id: &str) -> Option<&ast::Message<&str>>;$/;" P interface:GetEntry +get_entry_runtime vendor/fluent-syntax/src/parser/runtime.rs /^ fn get_entry_runtime(&mut self, entry_start: usize) -> Result>> {$/;" f +get_entry_term vendor/fluent-bundle/src/entry.rs /^ fn get_entry_term(&self, id: &str) -> Option<&ast::Term<&str>> {$/;" P implementation:FluentBundle +get_entry_term vendor/fluent-bundle/src/entry.rs /^ fn get_entry_term(&self, id: &str) -> Option<&ast::Term<&str>>;$/;" P interface:GetEntry +get_env_value lib/tilde/shell.c /^get_env_value (char *varname)$/;" f typeref:typename:char * +get_epochrealtime variables.c /^get_epochrealtime (var)$/;" f file: +get_epochseconds variables.c /^get_epochseconds (var)$/;" f file: +get_exitstat builtins/common.c /^get_exitstat (list)$/;" f +get_exitstat builtins_rust/exit/src/lib.rs /^ fn get_exitstat(list: *mut WordList) -> i32;$/;" f +get_exitstat builtins_rust/rreturn/src/intercdep.rs /^ pub fn get_exitstat(list: *mut WordList) -> c_int;$/;" f +get_exitstat r_bash/src/lib.rs /^ pub fn get_exitstat(arg1: *mut WORD_LIST) -> ::std::os::raw::c_int;$/;" f +get_expression vendor/fluent-syntax/src/parser/expression.rs /^ pub(super) fn get_expression(&mut self) -> Result> {$/;" f +get_for_lang vendor/intl-memoizer/src/lib.rs /^ pub fn get_for_lang(&mut self, lang: LanguageIdentifier) -> Rc {$/;" P implementation:IntlMemoizer +get_full vendor/elsa/src/index_set.rs /^ pub fn get_full(&self, k: &Q) -> Option<(usize, &T::Target)>$/;" P implementation:FrozenIndexSet +get_func builtins_rust/set/src/lib.rs /^ get_func: Option,$/;" m struct:opp +get_funcname variables.c /^get_funcname (self)$/;" f file: +get_funky_string lib/readline/parse-colors.c /^get_funky_string (char **dest, const char **src, bool equals_end, size_t *output_count) {$/;" f typeref:typename:bool file: +get_group_array general.c /^get_group_array (ngp)$/;" f +get_group_array r_bash/src/lib.rs /^ pub fn get_group_array(arg1: *mut ::std::os::raw::c_int) -> *mut ::std::os::raw::c_int;$/;" f +get_group_array r_glob/src/lib.rs /^ pub fn get_group_array(arg1: *mut ::std::os::raw::c_int) -> *mut ::std::os::raw::c_int;$/;" f +get_group_array r_readline/src/lib.rs /^ pub fn get_group_array(arg1: *mut ::std::os::raw::c_int) -> *mut ::std::os::raw::c_int;$/;" f +get_group_list general.c /^get_group_list (ngp)$/;" f +get_group_list r_bash/src/lib.rs /^ pub fn get_group_list(arg1: *mut ::std::os::raw::c_int) -> *mut *mut ::std::os::raw::c_char;$/;" f +get_group_list r_glob/src/lib.rs /^ pub fn get_group_list(arg1: *mut ::std::os::raw::c_int) -> *mut *mut ::std::os::raw::c_char;$/;" f +get_group_list r_readline/src/lib.rs /^ pub fn get_group_list(arg1: *mut ::std::os::raw::c_int) -> *mut *mut ::std::os::raw::c_char;$/;" f +get_groupset variables.c /^get_groupset (self)$/;" f file: +get_hashcmd variables.c /^get_hashcmd (self)$/;" f file: +get_histcmd variables.c /^get_histcmd (var)$/;" f file: +get_history_event lib/readline/histexpand.c /^get_history_event (const char *string, int *caller_index, int delimiting_quote)$/;" f typeref:typename:char * +get_history_event r_readline/src/lib.rs /^ pub fn get_history_event($/;" f +get_history_word_specifier lib/readline/histexpand.c /^get_history_word_specifier (char *spec, char *from, int *caller_index)$/;" f typeref:typename:char * file: +get_home_dir lib/tilde/shell.c /^get_home_dir (void)$/;" f typeref:typename:char * +get_hostname_list bashline.c /^get_hostname_list ()$/;" f typeref:typename:char ** +get_hostname_list r_bash/src/lib.rs /^ pub fn get_hostname_list() -> *mut *mut ::std::os::raw::c_char;$/;" f +get_ident vendor/syn/src/path.rs /^ pub fn get_ident(&self) -> Option<&Ident> {$/;" P implementation:parsing::Path +get_identifier vendor/fluent-syntax/src/parser/core.rs /^ pub(super) fn get_identifier(&mut self) -> Result> {$/;" f +get_identifier_unchecked vendor/fluent-syntax/src/parser/core.rs /^ pub(super) fn get_identifier_unchecked(&mut self) -> ast::Identifier {$/;" f +get_ids vendor/fluent-bundle/benches/resolver.rs /^fn get_ids(res: &FluentResource) -> Vec {$/;" f +get_ids vendor/fluent-bundle/benches/resolver_iai.rs /^fn get_ids(res: &FluentResource) -> Vec {$/;" f +get_image_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_image_info(image: image_id, info: *mut image_info) -> status_t {$/;" f +get_image_symbol vendor/libc/src/unix/haiku/native.rs /^ pub fn get_image_symbol($/;" f +get_impl vendor/libloading/src/os/unix/mod.rs /^ unsafe fn get_impl(&self, symbol: &[u8], on_null: F) -> Result, crate::Error/;" P implementation:Library +get_index vendor/elsa/src/index_map.rs /^ pub fn get_index(&self, index: usize) -> Option<(&K::Target, &V::Target)>$/;" P implementation:FrozenIndexMap +get_index vendor/elsa/src/index_set.rs /^ pub fn get_index(&self, index: usize) -> Option<&T::Target> {$/;" P implementation:FrozenIndexSet +get_inline_expression vendor/fluent-syntax/src/parser/expression.rs /^ pub(super) fn get_inline_expression($/;" f +get_job_by_jid builtins_rust/common/src/lib.rs /^macro_rules! get_job_by_jid {$/;" M +get_job_by_jid builtins_rust/exit/src/lib.rs /^macro_rules! get_job_by_jid {$/;" M +get_job_by_jid builtins_rust/fg_bg/src/lib.rs /^macro_rules! get_job_by_jid {$/;" M +get_job_by_jid builtins_rust/jobs/src/lib.rs /^macro_rules! get_job_by_jid {$/;" M +get_job_by_jid builtins_rust/wait/src/lib.rs /^macro_rules! get_job_by_jid {$/;" M +get_job_by_jid jobs.h /^#define get_job_by_jid(/;" d +get_job_by_name builtins/common.c /^get_job_by_name (name, flags)$/;" f +get_job_by_name r_bash/src/lib.rs /^ pub fn get_job_by_name($/;" f +get_job_by_pid builtins_rust/jobs/src/lib.rs /^ fn get_job_by_pid(pid: i32, block: i32, ignore: *mut *mut PROCESS) -> i32;$/;" f +get_job_by_pid builtins_rust/wait/src/lib.rs /^ fn get_job_by_pid(pid: pid_t, block: i32, procp: *mut *mut PROCESS) -> i32;$/;" f +get_job_by_pid jobs.c /^get_job_by_pid (pid, block, procp)$/;" f +get_job_by_pid nojobs.c /^get_job_by_pid (pid, block, ignore)$/;" f +get_job_by_pid r_bash/src/lib.rs /^ pub fn get_job_by_pid($/;" f +get_job_by_pid r_jobs/src/lib.rs /^pub unsafe extern "C" fn get_job_by_pid( mut pid: pid_t, mut block: c_int, mut procp: *mut *mu/;" f +get_job_spec builtins/common.c /^get_job_spec (list)$/;" f +get_job_spec builtins_rust/fg_bg/src/lib.rs /^ fn get_job_spec(list: *mut WordList) -> i32;$/;" f +get_job_spec builtins_rust/jobs/src/lib.rs /^ fn get_job_spec(list: *mut WordList) -> i32;$/;" f +get_job_spec builtins_rust/kill/src/intercdep.rs /^ pub fn get_job_spec(list: *mut WordList) -> c_int;$/;" f +get_job_spec r_bash/src/lib.rs /^ pub fn get_job_spec(arg1: *mut WORD_LIST) -> ::std::os::raw::c_int;$/;" f +get_libc_termios vendor/nix/src/sys/termios.rs /^ pub(crate) fn get_libc_termios(&self) -> Ref {$/;" P implementation:Termios +get_libc_termios_mut vendor/nix/src/sys/termios.rs /^ pub(crate) unsafe fn get_libc_termios_mut(&mut self) -> *mut libc::termios {$/;" P implementation:Termios +get_limit builtins_rust/ulimit/src/lib.rs /^fn get_limit(ind: i32, softlim: *mut RLIMTYPE, hardlim: *mut RLIMTYPE) -> i32 {$/;" f +get_lineno variables.c /^get_lineno (var)$/;" f file: +get_local_str builtins_rust/common/src/lib.rs /^pub extern "C" fn get_local_str() -> Vec {$/;" f +get_locale vendor/intl_pluralrules/src/lib.rs /^ pub fn get_locale(&self) -> &LanguageIdentifier {$/;" P implementation:PluralRules +get_locale_var locale.c /^get_locale_var (var)$/;" f +get_locale_var r_bash/src/lib.rs /^ pub fn get_locale_var(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +get_locales vendor/intl_pluralrules/src/lib.rs /^ pub fn get_locales(prt: PluralRuleType) -> Vec {$/;" P implementation:PluralRules +get_message vendor/fluent-bundle/src/bundle.rs /^ pub fn get_message<'l>(&'l self, id: &str) -> Option>$/;" P implementation:FluentBundle +get_message vendor/fluent-syntax/src/parser/core.rs /^ pub fn get_message(&mut self, entry_start: usize) -> Result> {$/;" f +get_minus_o_opts builtins_rust/set/src/lib.rs /^unsafe fn get_minus_o_opts() -> *mut *mut libc::c_char {$/;" f +get_minus_o_opts r_bash/src/lib.rs /^ pub fn get_minus_o_opts() -> *mut *mut ::std::os::raw::c_char;$/;" f +get_mut vendor/chunky-vec/src/lib.rs /^ pub fn get_mut(&mut self, index: usize) -> Option<&mut T> {$/;" P implementation:Chunk +get_mut vendor/chunky-vec/src/lib.rs /^ pub fn get_mut(&mut self, index: usize) -> Option<&mut T> {$/;" P implementation:ChunkyVec +get_mut vendor/futures-util/src/compat/compat01as03.rs /^ pub fn get_mut(&mut self) -> &mut S {$/;" P implementation:Compat01As03Sink +get_mut vendor/futures-util/src/compat/compat01as03.rs /^ pub fn get_mut(&mut self) -> &mut T {$/;" P implementation:Compat01As03 +get_mut vendor/futures-util/src/compat/compat03as01.rs /^ pub fn get_mut(&mut self) -> &mut T {$/;" P implementation:Compat +get_mut vendor/futures-util/src/compat/compat03as01.rs /^ pub fn get_mut(&mut self) -> &mut T {$/;" P implementation:CompatSink +get_mut vendor/futures-util/src/io/allow_std.rs /^ pub fn get_mut(&mut self) -> &mut T {$/;" P implementation:AllowStdIo +get_mut vendor/futures-util/src/io/chain.rs /^ pub fn get_mut(&mut self) -> (&mut T, &mut U) {$/;" f +get_mut vendor/futures-util/src/io/cursor.rs /^ pub fn get_mut(&mut self) -> &mut T {$/;" P implementation:Cursor +get_mut vendor/futures-util/src/io/window.rs /^ pub fn get_mut(&mut self) -> &mut T {$/;" P implementation:Window +get_mut vendor/futures-util/src/lock/mutex.rs /^ pub fn get_mut(&mut self) -> &mut T {$/;" P implementation:Mutex +get_mut vendor/futures-util/src/sink/fanout.rs /^ pub fn get_mut(&mut self) -> (&mut Si1, &mut Si2) {$/;" P implementation:Fanout +get_mut vendor/futures-util/src/stream/select.rs /^ pub fn get_mut(&mut self) -> (&mut St1, &mut St2) {$/;" P implementation:Select +get_mut vendor/futures-util/src/stream/select_with_strategy.rs /^ pub fn get_mut(&mut self) -> (&mut St1, &mut St2) {$/;" P implementation:SelectWithStrategy +get_mut vendor/futures-util/src/stream/stream/into_future.rs /^ pub fn get_mut(&mut self) -> Option<&mut St> {$/;" P implementation:StreamFuture +get_mut vendor/futures-util/src/stream/stream/zip.rs /^ pub fn get_mut(&mut self) -> (&mut St1, &mut St2) {$/;" P implementation:Zip +get_mut vendor/once_cell/src/imp_pl.rs /^ pub(crate) fn get_mut(&mut self) -> Option<&mut T> {$/;" P implementation:OnceCell +get_mut vendor/once_cell/src/imp_std.rs /^ pub(crate) fn get_mut(&mut self) -> Option<&mut T> {$/;" P implementation:OnceCell +get_mut vendor/once_cell/src/lib.rs /^ pub fn get_mut(&mut self) -> Option<&mut T> {$/;" P implementation:sync::OnceCell +get_mut vendor/once_cell/src/lib.rs /^ pub fn get_mut(&mut self) -> Option<&mut T> {$/;" P implementation:unsync::OnceCell +get_mut vendor/once_cell/src/lib.rs /^ pub fn get_mut(this: &mut Lazy) -> Option<&mut T> {$/;" P implementation:sync::Lazy +get_mut vendor/once_cell/src/lib.rs /^ pub fn get_mut(this: &mut Lazy) -> Option<&mut T> {$/;" P implementation:unsync::Lazy +get_mut vendor/proc-macro2/src/rcvec.rs /^ pub fn get_mut(&mut self) -> Option> {$/;" P implementation:RcVec +get_mut vendor/slab/src/lib.rs /^ pub fn get_mut(&mut self, key: usize) -> Option<&mut T> {$/;" P implementation:Slab +get_mut vendor/type-map/src/lib.rs /^ pub fn get_mut(&mut self) -> &mut T {$/;" P implementation:concurrent::OccupiedEntry +get_mut vendor/type-map/src/lib.rs /^ pub fn get_mut(&mut self) -> Option<&mut T> {$/;" P implementation:concurrent::TypeMap +get_mut vendor/type-map/src/lib.rs /^ pub fn get_mut(&mut self) -> &mut T {$/;" P implementation:OccupiedEntry +get_mut vendor/type-map/src/lib.rs /^ pub fn get_mut(&mut self) -> Option<&mut T> {$/;" P implementation:TypeMap +get_name_for_error builtins_rust/common/src/lib.rs /^ fn get_name_for_error() -> *mut c_char;$/;" f +get_name_for_error error.c /^get_name_for_error ()$/;" f typeref:typename:char * +get_name_for_error r_bash/src/lib.rs /^ pub fn get_name_for_error() -> *mut ::std::os::raw::c_char;$/;" f +get_name_for_error r_jobs/src/lib.rs /^ fn get_name_for_error() -> *mut c_char;$/;" f +get_new_window_size lib/sh/winsize.c /^get_new_window_size (from_sig, rp, cp)$/;" f +get_new_window_size r_bash/src/lib.rs /^ pub fn get_new_window_size($/;" f +get_new_window_size r_jobs/src/lib.rs /^ fn get_new_window_size(_: c_int, _: *mut c_int, _: *mut c_int);$/;" f +get_next_area_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_next_area_info($/;" f +get_next_image_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_next_image_info($/;" f +get_next_path_element findcmd.c /^get_next_path_element (path_list, path_index_pointer)$/;" f file: +get_next_port_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_next_port_info($/;" f +get_next_sem_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_next_sem_info(team: team_id, cookie: *mut i32, info: *mut sem_info) -> status_/;" f +get_next_team_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_next_team_info(cookie: *mut i32, info: *mut team_info) -> status_t {$/;" f +get_next_thread_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_next_thread_info($/;" f +get_nth_image_symbol vendor/libc/src/unix/haiku/native.rs /^ pub fn get_nth_image_symbol($/;" f +get_number_literal vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn get_number_literal(&mut self) -> Result {$/;" f +get_numeric_arg builtins/common.c /^get_numeric_arg (list, fatal, count)$/;" f +get_numeric_arg builtins_rust/break_1/src/lib.rs /^ fn get_numeric_arg(list: *mut WordList, i: i32, intmax: *mut intmax_t) -> i32;$/;" f +get_numeric_arg builtins_rust/history/src/intercdep.rs /^ pub fn get_numeric_arg(list: *mut WordList, fatal: c_int, count: *mut c_long) -> c_int;$/;" f +get_numeric_arg builtins_rust/shift/src/intercdep.rs /^ pub fn get_numeric_arg(list: *mut WordList, fatal: c_int, count: c_long) -> c_int;$/;" f +get_numeric_arg r_bash/src/lib.rs /^ pub fn get_numeric_arg($/;" f +get_one vendor/async-trait/tests/test.rs /^ async fn get_one() -> u8 {$/;" P interface:issue44::StaticWithWhereSelf +get_or_init vendor/once_cell/src/lib.rs /^ pub fn get_or_init(&self, f: F) -> &T$/;" P implementation:sync::OnceCell +get_or_init vendor/once_cell/src/lib.rs /^ pub fn get_or_init(&self, f: F) -> &T$/;" P implementation:unsync::OnceCell +get_or_init vendor/once_cell/src/race.rs /^ pub fn get_or_init(&self, f: F) -> &T$/;" P implementation:once_box::OnceBox +get_or_init vendor/once_cell/src/race.rs /^ pub fn get_or_init(&self, f: F) -> NonZeroUsize$/;" P implementation:OnceNonZeroUsize +get_or_init vendor/once_cell/src/race.rs /^ pub fn get_or_init(&self, f: F) -> bool$/;" P implementation:OnceBool +get_or_init_stress vendor/once_cell/tests/it.rs /^ fn get_or_init_stress() {$/;" f module:sync +get_or_intern vendor/elsa/examples/string_interner.rs /^ fn get_or_intern(&self, value: T) -> usize$/;" P implementation:StringInterner +get_or_try_init vendor/once_cell/src/lib.rs /^ pub fn get_or_try_init(&self, f: F) -> Result<&T, E>$/;" P implementation:sync::OnceCell +get_or_try_init vendor/once_cell/src/lib.rs /^ pub fn get_or_try_init(&self, f: F) -> Result<&T, E>$/;" P implementation:unsync::OnceCell +get_or_try_init vendor/once_cell/src/race.rs /^ pub fn get_or_try_init(&self, f: F) -> Result<&T, E>$/;" P implementation:once_box::OnceBox +get_or_try_init vendor/once_cell/src/race.rs /^ pub fn get_or_try_init(&self, f: F) -> Result$/;" P implementation:OnceNonZeroUsize +get_or_try_init vendor/once_cell/src/race.rs /^ pub fn get_or_try_init(&self, f: F) -> Result$/;" P implementation:OnceBool +get_or_try_init vendor/once_cell/tests/it.rs /^ fn get_or_try_init() {$/;" f module:sync +get_ordinal vendor/libloading/src/os/windows/mod.rs /^ pub unsafe fn get_ordinal(&self, ordinal: WORD) -> Result, crate::Error> {$/;" P implementation:Library +get_original_signal r_bash/src/lib.rs /^ pub fn get_original_signal(arg1: ::std::os::raw::c_int);$/;" f +get_original_signal r_glob/src/lib.rs /^ pub fn get_original_signal(arg1: ::std::os::raw::c_int);$/;" f +get_original_signal r_jobs/src/lib.rs /^ fn get_original_signal(_: c_int);$/;" f +get_original_signal r_readline/src/lib.rs /^ pub fn get_original_signal(arg1: ::std::os::raw::c_int);$/;" f +get_original_signal trap.c /^get_original_signal (sig)$/;" f +get_original_tty_job_signals jobs.c /^get_original_tty_job_signals ()$/;" f typeref:typename:void +get_original_tty_job_signals nojobs.c /^get_original_tty_job_signals ()$/;" f typeref:typename:void +get_original_tty_job_signals r_bash/src/lib.rs /^ pub fn get_original_tty_job_signals();$/;" f +get_original_tty_job_signals r_jobs/src/lib.rs /^pub unsafe extern "C" fn get_original_tty_job_signals() {$/;" f +get_osfhandle vendor/libc/src/windows/mod.rs /^ pub fn get_osfhandle(fd: ::c_int) -> ::intptr_t;$/;" f +get_path_for_dirent vendor/libc/src/unix/haiku/native.rs /^ pub fn get_path_for_dirent(dent: *mut ::dirent, buf: *mut ::c_char, len: ::size_t) -> status/;" f +get_pattern vendor/fluent-syntax/src/parser/pattern.rs /^ pub(super) fn get_pattern(&mut self) -> Result>> {$/;" f +get_pid_flags nojobs.c /^get_pid_flags (pid)$/;" f file: +get_pin_mut vendor/futures-util/src/io/chain.rs /^ pub fn get_pin_mut(self: Pin<&mut Self>) -> (Pin<&mut T>, Pin<&mut U>) {$/;" f +get_pin_mut vendor/futures-util/src/sink/fanout.rs /^ pub fn get_pin_mut(self: Pin<&mut Self>) -> (Pin<&mut Si1>, Pin<&mut Si2>) {$/;" P implementation:Fanout +get_pin_mut vendor/futures-util/src/stream/select.rs /^ pub fn get_pin_mut(self: Pin<&mut Self>) -> (Pin<&mut St1>, Pin<&mut St2>) {$/;" P implementation:Select +get_pin_mut vendor/futures-util/src/stream/select_with_strategy.rs /^ pub fn get_pin_mut(self: Pin<&mut Self>) -> (Pin<&mut St1>, Pin<&mut St2>) {$/;" P implementation:SelectWithStrategy +get_pin_mut vendor/futures-util/src/stream/stream/into_future.rs /^ pub fn get_pin_mut(self: Pin<&mut Self>) -> Option> {$/;" P implementation:StreamFuture +get_pin_mut vendor/futures-util/src/stream/stream/zip.rs /^ pub fn get_pin_mut(self: Pin<&mut Self>) -> (Pin<&mut St1>, Pin<&mut St2>) {$/;" P implementation:Zip +get_pin_mut vendor/pin-project-lite/tests/test.rs /^ fn get_pin_mut<'a>(self: Pin<&'a mut Self>) -> Pin<&'a mut &'b T> {$/;" P implementation:lifetime_project::Struct2 +get_pin_mut vendor/pin-project-lite/tests/test.rs /^ fn get_pin_mut<'a>(self: Pin<&'a mut Self>) -> Pin<&'a mut T> {$/;" P implementation:lifetime_project::Enum +get_pin_mut vendor/pin-project-lite/tests/test.rs /^ fn get_pin_mut<'a>(self: Pin<&'a mut Self>) -> Pin<&'a mut T> {$/;" P implementation:lifetime_project::Struct1 +get_pin_mut_elided vendor/pin-project-lite/tests/test.rs /^ fn get_pin_mut_elided(self: Pin<&mut Self>) -> Pin<&mut &'b T> {$/;" P implementation:lifetime_project::Struct2 +get_pin_mut_elided vendor/pin-project-lite/tests/test.rs /^ fn get_pin_mut_elided(self: Pin<&mut Self>) -> Pin<&mut T> {$/;" P implementation:lifetime_project::Enum +get_pin_mut_elided vendor/pin-project-lite/tests/test.rs /^ fn get_pin_mut_elided(self: Pin<&mut Self>) -> Pin<&mut T> {$/;" P implementation:lifetime_project::Struct1 +get_pin_ref vendor/pin-project-lite/tests/test.rs /^ fn get_pin_ref<'a>(self: Pin<&'a Self>) -> Pin<&'a &'b T> {$/;" P implementation:lifetime_project::Struct2 +get_pin_ref vendor/pin-project-lite/tests/test.rs /^ fn get_pin_ref<'a>(self: Pin<&'a Self>) -> Pin<&'a T> {$/;" P implementation:lifetime_project::Enum +get_pin_ref vendor/pin-project-lite/tests/test.rs /^ fn get_pin_ref<'a>(self: Pin<&'a Self>) -> Pin<&'a T> {$/;" P implementation:lifetime_project::Struct1 +get_pin_ref_elided vendor/pin-project-lite/tests/test.rs /^ fn get_pin_ref_elided(self: Pin<&Self>) -> Pin<&&'b T> {$/;" P implementation:lifetime_project::Struct2 +get_pin_ref_elided vendor/pin-project-lite/tests/test.rs /^ fn get_pin_ref_elided(self: Pin<&Self>) -> Pin<&T> {$/;" P implementation:lifetime_project::Enum +get_pin_ref_elided vendor/pin-project-lite/tests/test.rs /^ fn get_pin_ref_elided(self: Pin<&Self>) -> Pin<&T> {$/;" P implementation:lifetime_project::Struct1 +get_placeable vendor/fluent-syntax/src/parser/core.rs /^ pub(super) fn get_placeable(&mut self) -> Result> {$/;" f +get_port_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_port_info(port: port_id, buf: *mut port_info) -> status_t {$/;" f +get_port_message_info_etc vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_port_message_info_etc($/;" f +get_posix_options builtins_rust/set/src/lib.rs /^ fn get_posix_options(_: *mut libc::c_char) -> *mut libc::c_char;$/;" f +get_posix_options general.c /^get_posix_options (bitmap)$/;" f +get_posix_options r_bash/src/lib.rs /^ pub fn get_posix_options(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +get_posix_options r_glob/src/lib.rs /^ pub fn get_posix_options(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +get_posix_options r_readline/src/lib.rs /^ pub fn get_posix_options(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +get_prompt lib/readline/examples/excallback.c /^get_prompt(void)$/;" f typeref:typename:char * +get_pthread_thread_id vendor/libc/src/unix/haiku/native.rs /^ pub fn get_pthread_thread_id(thread: ::pthread_t) -> thread_id;$/;" f +get_random variables.c /^get_random (var)$/;" f file: +get_random_number r_bash/src/lib.rs /^ pub fn get_random_number() -> ::std::os::raw::c_int;$/;" f +get_random_number variables.c /^get_random_number ()$/;" f typeref:typename:int +get_ref vendor/futures-util/src/compat/compat01as03.rs /^ pub fn get_ref(&self) -> &S {$/;" P implementation:Compat01As03Sink +get_ref vendor/futures-util/src/compat/compat01as03.rs /^ pub fn get_ref(&self) -> &T {$/;" P implementation:Compat01As03 +get_ref vendor/futures-util/src/compat/compat03as01.rs /^ pub fn get_ref(&self) -> &T {$/;" P implementation:Compat +get_ref vendor/futures-util/src/compat/compat03as01.rs /^ pub fn get_ref(&self) -> &T {$/;" P implementation:CompatSink +get_ref vendor/futures-util/src/io/allow_std.rs /^ pub fn get_ref(&self) -> &T {$/;" P implementation:AllowStdIo +get_ref vendor/futures-util/src/io/chain.rs /^ pub fn get_ref(&self) -> (&T, &U) {$/;" f +get_ref vendor/futures-util/src/io/cursor.rs /^ pub fn get_ref(&self) -> &T {$/;" P implementation:Cursor +get_ref vendor/futures-util/src/io/line_writer.rs /^ pub fn get_ref(&self) -> &W {$/;" P implementation:LineWriter +get_ref vendor/futures-util/src/io/window.rs /^ pub fn get_ref(&self) -> &T {$/;" P implementation:Window +get_ref vendor/futures-util/src/sink/fanout.rs /^ pub fn get_ref(&self) -> (&Si1, &Si2) {$/;" P implementation:Fanout +get_ref vendor/futures-util/src/stream/select.rs /^ pub fn get_ref(&self) -> (&St1, &St2) {$/;" P implementation:Select +get_ref vendor/futures-util/src/stream/select_with_strategy.rs /^ pub fn get_ref(&self) -> (&St1, &St2) {$/;" P implementation:SelectWithStrategy +get_ref vendor/futures-util/src/stream/stream/into_future.rs /^ pub fn get_ref(&self) -> Option<&St> {$/;" P implementation:StreamFuture +get_ref vendor/futures-util/src/stream/stream/zip.rs /^ pub fn get_ref(&self) -> (&St1, &St2) {$/;" P implementation:Zip +get_resource vendor/elsa/examples/fluentresource.rs /^ pub fn get_resource(&'mgr self, path: &str) -> &'mgr FluentResource<'mgr> {$/;" P implementation:ResourceManager +get_resource vendor/fluent-resmgr/src/resource_manager.rs /^ fn get_resource(&self, res_id: &str, locale: &str) -> &FluentResource {$/;" P implementation:ResourceManager +get_resource_manager vendor/fluent-fallback/examples/simple-fallback.rs /^fn get_resource_manager() -> Bundles {$/;" f +get_resources vendor/fluent-syntax/benches/parser.rs /^fn get_resources(tests: &[&'static str]) -> HashMap<&'static str, String> {$/;" f +get_scheduler_mode vendor/libc/src/unix/haiku/native.rs /^ pub fn get_scheduler_mode() -> i32;$/;" f +get_seconds variables.c /^get_seconds (var)$/;" f file: +get_self variables.c /^get_self (self)$/;" f file: +get_sem_count vendor/libc/src/unix/haiku/native.rs /^ pub fn get_sem_count(id: sem_id, threadCount: *mut i32) -> status_t;$/;" f +get_sem_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_sem_info(id: sem_id, info: *mut sem_info) -> status_t {$/;" f +get_shared_library_fullname lib/intl/relocatable.c /^get_shared_library_fullname ()$/;" f typeref:typename:char * file: +get_shopt_options r_bash/src/lib.rs /^ pub fn get_shopt_options() -> *mut *mut ::std::os::raw::c_char;$/;" f +get_singlethreaded vendor/libloading/src/os/unix/mod.rs /^ pub unsafe fn get_singlethreaded(&self, symbol: &[u8]) -> Result, crate::Error>/;" P implementation:Library +get_stat_atime include/stat-time.h /^get_stat_atime (struct stat const *st)$/;" f typeref:struct:timespec +get_stat_atime_ns include/stat-time.h /^get_stat_atime_ns (struct stat const *st)$/;" f typeref:typename:long int +get_stat_birthtime include/stat-time.h /^get_stat_birthtime (struct stat const *st)$/;" f typeref:struct:timespec +get_stat_birthtime_ns include/stat-time.h /^get_stat_birthtime_ns (struct stat const *st)$/;" f typeref:typename:long int +get_stat_ctime include/stat-time.h /^get_stat_ctime (struct stat const *st)$/;" f typeref:struct:timespec +get_stat_ctime_ns include/stat-time.h /^get_stat_ctime_ns (struct stat const *st)$/;" f typeref:typename:long int +get_stat_mtime include/stat-time.h /^get_stat_mtime (struct stat const *st)$/;" f typeref:struct:timespec +get_stat_mtime_ns include/stat-time.h /^get_stat_mtime_ns (struct stat const *st)$/;" f typeref:typename:long int +get_string_value builtins_rust/cd/src/lib.rs /^ fn get_string_value(var_name: *const c_char) -> *mut c_char;$/;" f +get_string_value builtins_rust/enable/src/lib.rs /^ fn get_string_value(_: *const libc::c_char) -> *mut libc::c_char;$/;" f +get_string_value builtins_rust/history/src/intercdep.rs /^ pub fn get_string_value(var_name: *const c_char) -> *mut c_char;$/;" f +get_string_value builtins_rust/pushd/src/lib.rs /^ fn get_string_value(w: *const c_char) -> *mut c_char;$/;" f +get_string_value builtins_rust/read/src/intercdep.rs /^ pub fn get_string_value(arg1: *const c_char) -> *mut c_char;$/;" f +get_string_value expr.c /^char *get_string_value () { return 0; }$/;" f typeref:typename:char * +get_string_value r_bash/src/lib.rs /^ pub fn get_string_value(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +get_string_value r_jobs/src/lib.rs /^ fn get_string_value(_:*const c_char) -> *mut c_char;$/;" f +get_string_value r_print_cmd/src/lib.rs /^ fn get_string_value(_:*const c_char)->*mut c_char;$/;" f +get_string_value variables.c /^get_string_value (var_name)$/;" f +get_strings vendor/fluent-bundle/benches/resolver.rs /^fn get_strings(tests: &[&'static str]) -> HashMap<&'static str, String> {$/;" f +get_subshell variables.c /^get_subshell (var)$/;" f file: +get_subst_pattern lib/readline/histexpand.c /^get_subst_pattern (char *str, int *iptr, int delimiter, int is_rhs, int *lenptr)$/;" f typeref:typename:char * file: +get_suffix vendor/syn/tests/test_lit.rs /^ fn get_suffix(token: &str) -> String {$/;" f function:suffix +get_suffix_forward vendor/memchr/src/memmem/twoway.rs /^ fn get_suffix_forward(needle: &[u8], kind: SuffixKind) -> (&[u8], usize) {$/;" f module:tests +get_suffix_reverse vendor/memchr/src/memmem/twoway.rs /^ fn get_suffix_reverse(needle: &[u8], kind: SuffixKind) -> (&[u8], usize) {$/;" f module:tests +get_sys_tmpdir lib/sh/tmpfile.c /^get_sys_tmpdir ()$/;" f typeref:typename:char * file: +get_sysdep_segment_value lib/intl/loadmsgcat.c /^get_sysdep_segment_value (name)$/;" f file: +get_system_info vendor/libc/src/unix/haiku/native.rs /^ pub fn get_system_info(info: *mut system_info) -> status_t;$/;" f +get_team_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_team_info(team: team_id, info: *mut team_info) -> status_t {$/;" f +get_team_usage_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_team_usage_info(team: team_id, who: i32, info: *mut team_usage_info) -> status/;" f +get_term vendor/fluent-syntax/src/parser/core.rs /^ pub fn get_term(&mut self, entry_start: usize) -> Result> {$/;" f +get_term_capabilities lib/readline/terminal.c /^get_term_capabilities (char **bp)$/;" f typeref:typename:void file: +get_termsig nojobs.c /^get_termsig (status)$/;" f file: +get_text_slice vendor/fluent-syntax/src/parser/pattern.rs /^ fn get_text_slice($/;" f +get_thread_info vendor/libc/src/unix/haiku/native.rs /^pub unsafe fn get_thread_info(id: thread_id, info: *mut thread_info) -> status_t {$/;" f +get_tmpdir lib/sh/tmpfile.c /^get_tmpdir (flags)$/;" f file: +get_tokens vendor/syn/benches/file.rs /^fn get_tokens() -> TokenStream {$/;" f +get_tty_settings lib/readline/rltty.c /^get_tty_settings (int tty, TIOTYPE *tiop)$/;" f typeref:typename:int file: +get_tty_state jobs.c /^get_tty_state ()$/;" f typeref:typename:int +get_tty_state nojobs.c /^get_tty_state ()$/;" f typeref:typename:int +get_tty_state r_bash/src/lib.rs /^ pub fn get_tty_state() -> ::std::os::raw::c_int;$/;" f +get_tty_state r_jobs/src/lib.rs /^pub unsafe extern "C" fn get_tty_state() -> c_int {$/;" f +get_unchecked vendor/elsa/src/vec.rs /^ pub unsafe fn get_unchecked(&self, index: usize) -> &T::Target {$/;" P implementation:FrozenVec +get_unchecked vendor/once_cell/src/imp_pl.rs /^ pub(crate) unsafe fn get_unchecked(&self) -> &T {$/;" P implementation:OnceCell +get_unchecked vendor/once_cell/src/imp_std.rs /^ pub(crate) unsafe fn get_unchecked(&self) -> &T {$/;" P implementation:OnceCell +get_unchecked vendor/once_cell/src/lib.rs /^ pub unsafe fn get_unchecked(&self) -> &T {$/;" P implementation:sync::OnceCell +get_unchecked vendor/slab/src/lib.rs /^ pub unsafe fn get_unchecked(&self, key: usize) -> &T {$/;" P implementation:Slab +get_unchecked_mut vendor/slab/src/lib.rs /^ pub unsafe fn get_unchecked_mut(&mut self, key: usize) -> &mut T {$/;" P implementation:Slab +get_unexpected vendor/syn/src/parse.rs /^pub(crate) fn get_unexpected(buffer: &ParseBuffer) -> Rc> {$/;" f +get_urandom variables.c /^get_urandom (var)$/;" f file: +get_urandom32 lib/sh/random.c /^get_urandom32 ()$/;" f typeref:typename:u_bits32_t +get_urandom32 r_bash/src/lib.rs /^ pub fn get_urandom32() -> ::std::os::raw::c_uint;$/;" f +get_vacant_entry_without_using vendor/slab/tests/slab.rs /^fn get_vacant_entry_without_using() {$/;" f +get_var_and_type subst.c /^get_var_and_type (varname, value, ind, quoted, flags, varp, valp)$/;" f file: +get_variable_value r_bash/src/lib.rs /^ pub fn get_variable_value(arg1: *mut SHELL_VAR) -> *mut ::std::os::raw::c_char;$/;" f +get_variable_value variables.c /^get_variable_value (var)$/;" f +get_variant_key vendor/fluent-syntax/src/parser/core.rs /^ fn get_variant_key(&mut self) -> Result> {$/;" f +get_variants vendor/fluent-syntax/src/parser/core.rs /^ pub(super) fn get_variants(&mut self) -> Result>> {$/;" f +get_word_from_string builtins_rust/read/src/intercdep.rs /^ pub fn get_word_from_string(stringp: *mut *mut c_char, separators: *mut c_char, endptr: *mut/;" f +get_word_from_string r_bash/src/lib.rs /^ pub fn get_word_from_string($/;" f +get_word_from_string subst.c /^get_word_from_string (stringp, separators, endptr)$/;" f +get_working_directory builtins/common.c /^get_working_directory (for_whom)$/;" f +get_working_directory builtins_rust/cd/src/lib.rs /^ fn get_working_directory(for_whom: *mut c_char) -> *mut c_char;$/;" f +get_working_directory builtins_rust/pushd/src/lib.rs /^ fn get_working_directory(path: *mut c_char) -> *mut c_char;$/;" f +get_working_directory r_bash/src/lib.rs /^ pub fn get_working_directory(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_ch/;" f +get_y_or_n lib/readline/complete.c /^get_y_or_n (int for_pager)$/;" f typeref:typename:int file: +getaddrinfo vendor/libc/src/fuchsia/mod.rs /^ pub fn getaddrinfo($/;" f +getaddrinfo vendor/libc/src/unix/mod.rs /^ pub fn getaddrinfo($/;" f +getaddrinfo vendor/libc/src/vxworks/mod.rs /^ pub fn getaddrinfo($/;" f +getaddrinfo vendor/winapi/src/um/ws2tcpip.rs /^ pub fn getaddrinfo($/;" f +getattrlist vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getattrlist($/;" f +getattrlistat vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getattrlistat($/;" f +getattrlistbulk vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getattrlistbulk($/;" f +getauxval vendor/libc/src/unix/linux_like/android/b64/mod.rs /^ pub fn getauxval(type_: ::c_ulong) -> ::c_ulong;$/;" f +getauxval vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getauxval(type_: ::c_ulong) -> ::c_ulong;$/;" f +getauxval vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn getauxval(type_: ::c_ulong) -> ::c_ulong;$/;" f +getbootfile vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getbootfile() -> *const ::c_char;$/;" f +getbyteorder vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getbyteorder() -> ::c_int;$/;" f +getc lib/intl/localcharset.c /^# define getc /;" d file: +getc r_bash/src/lib.rs /^ pub fn getc(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +getc r_readline/src/lib.rs /^ pub fn getc(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +getc vendor/libc/src/solid/mod.rs /^ pub fn getc(arg1: *mut FILE) -> c_int;$/;" f +getc vendor/libc/src/wasi.rs /^ pub fn getc(f: *mut FILE) -> c_int;$/;" f +getc_unlocked r_bash/src/lib.rs /^ pub fn getc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +getc_unlocked r_readline/src/lib.rs /^ pub fn getc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +getc_unlocked vendor/libc/src/solid/mod.rs /^ pub fn getc_unlocked(arg1: *mut FILE) -> c_int;$/;" f +getc_with_restart input.c /^getc_with_restart (stream)$/;" f +getc_with_restart r_bash/src/lib.rs /^ pub fn getc_with_restart(arg1: *mut FILE) -> ::std::os::raw::c_int;$/;" f +getcflag mksyntax.c /^getcflag (s)$/;" f file: +getchar r_bash/src/lib.rs /^ pub fn getchar() -> ::std::os::raw::c_int;$/;" f +getchar r_readline/src/lib.rs /^ pub fn getchar() -> ::std::os::raw::c_int;$/;" f +getchar vendor/libc/src/fuchsia/mod.rs /^ pub fn getchar() -> c_int;$/;" f +getchar vendor/libc/src/solid/mod.rs /^ pub fn getchar() -> c_int;$/;" f +getchar vendor/libc/src/unix/mod.rs /^ pub fn getchar() -> c_int;$/;" f +getchar vendor/libc/src/vxworks/mod.rs /^ pub fn getchar() -> c_int;$/;" f +getchar vendor/libc/src/wasi.rs /^ pub fn getchar() -> c_int;$/;" f +getchar vendor/libc/src/windows/mod.rs /^ pub fn getchar() -> c_int;$/;" f +getchar_unlocked r_bash/src/lib.rs /^ pub fn getchar_unlocked() -> ::std::os::raw::c_int;$/;" f +getchar_unlocked r_readline/src/lib.rs /^ pub fn getchar_unlocked() -> ::std::os::raw::c_int;$/;" f +getchar_unlocked vendor/libc/src/fuchsia/mod.rs /^ pub fn getchar_unlocked() -> ::c_int;$/;" f +getchar_unlocked vendor/libc/src/solid/mod.rs /^ pub fn getchar_unlocked() -> c_int;$/;" f +getchar_unlocked vendor/libc/src/unix/mod.rs /^ pub fn getchar_unlocked() -> ::c_int;$/;" f +getchar_unlocked vendor/libc/src/vxworks/mod.rs /^ pub fn getchar_unlocked() -> ::c_int;$/;" f +getchar_unlocked vendor/libc/src/wasi.rs /^ pub fn getchar_unlocked() -> ::c_int;$/;" f +getchr builtins_rust/printf/src/lib.rs /^unsafe fn getchr() -> c_int {$/;" f +getcontext vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs /^ pub fn getcontext(ucp: *mut ucontext_t) -> ::c_int;$/;" f +getcontext vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^ pub fn getcontext(ucp: *mut ::ucontext_t) -> ::c_int;$/;" f +getcontext vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^ pub fn getcontext(ucp: *mut ucontext_t) -> ::c_int;$/;" f +getcoprocbyname execute_cmd.c /^getcoprocbyname (name)$/;" f +getcoprocbyname r_bash/src/lib.rs /^ pub fn getcoprocbyname(arg1: *const ::std::os::raw::c_char) -> *mut coproc;$/;" f +getcoprocbypid execute_cmd.c /^getcoprocbypid (pid)$/;" f +getcoprocbypid r_bash/src/lib.rs /^ pub fn getcoprocbypid(arg1: pid_t) -> *mut coproc;$/;" f +getcstr mksyntax.c /^getcstr (f)$/;" f file: +getcwd builtins_rust/common/src/lib.rs /^ fn getcwd(buf: *mut c_char, size: size_t) -> *mut c_char;$/;" f +getcwd lib/intl/dcigettext.c /^# define getcwd(/;" d file: +getcwd lib/intl/dcigettext.c /^# define getcwd /;" d file: +getcwd lib/sh/getcwd.c /^getcwd (char *buf, size_t size)$/;" f typeref:typename:char * +getcwd r_bash/src/lib.rs /^ pub fn getcwd(__buf: *mut ::std::os::raw::c_char, __size: usize)$/;" f +getcwd r_glob/src/lib.rs /^ pub fn getcwd(__buf: *mut ::std::os::raw::c_char, __size: usize)$/;" f +getcwd r_readline/src/lib.rs /^ pub fn getcwd(__buf: *mut ::std::os::raw::c_char, __size: usize)$/;" f +getcwd support/texi2html /^sub getcwd {$/;" s +getcwd vendor/libc/src/fuchsia/mod.rs /^ pub fn getcwd(buf: *mut c_char, size: ::size_t) -> *mut c_char;$/;" f +getcwd vendor/libc/src/solid/mod.rs /^ pub fn getcwd(arg1: *mut c_char, arg2: size_t) -> *mut c_char;$/;" f +getcwd vendor/libc/src/unix/mod.rs /^ pub fn getcwd(buf: *mut c_char, size: ::size_t) -> *mut c_char;$/;" f +getcwd vendor/libc/src/vxworks/mod.rs /^ pub fn getcwd(buf: *mut ::c_char, size: ::size_t) -> *mut ::c_char;$/;" f +getcwd vendor/libc/src/wasi.rs /^ pub fn getcwd(buf: *mut c_char, size: ::size_t) -> *mut c_char;$/;" f +getcwd vendor/libc/src/windows/mod.rs /^ pub fn getcwd(buf: *mut c_char, size: ::c_int) -> *mut c_char;$/;" f +getcwd.o lib/sh/Makefile.in /^getcwd.o: ${BASHINCDIR}\/memalloc.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +getcwd.o lib/sh/Makefile.in /^getcwd.o: ${BASHINCDIR}\/posixstat.h ${BASHINCDIR}\/posixdir.h$/;" t +getcwd.o lib/sh/Makefile.in /^getcwd.o: ${BUILD_DIR}\/config.h$/;" t +getcwd.o lib/sh/Makefile.in /^getcwd.o: ${topdir}\/bashtypes.h ${topdir}\/bashansi.h ${BASHINCDIR}\/maxpath.h$/;" t +getcwd.o lib/sh/Makefile.in /^getcwd.o: getcwd.c$/;" t +getdate r_bash/src/lib.rs /^ pub fn getdate(__string: *const ::std::os::raw::c_char) -> *mut tm;$/;" f +getdate r_readline/src/lib.rs /^ pub fn getdate(__string: *const ::std::os::raw::c_char) -> *mut tm;$/;" f +getdate_err r_bash/src/lib.rs /^ pub static mut getdate_err: ::std::os::raw::c_int;$/;" v +getdate_err r_readline/src/lib.rs /^ pub static mut getdate_err: ::std::os::raw::c_int;$/;" v +getdate_r r_bash/src/lib.rs /^ pub fn getdate_r($/;" f +getdate_r r_readline/src/lib.rs /^ pub fn getdate_r($/;" f +getdelim r_bash/src/lib.rs /^ pub fn getdelim($/;" f +getdelim r_readline/src/lib.rs /^ pub fn getdelim($/;" f +getdirentries r_bash/src/lib.rs /^ pub fn getdirentries($/;" f +getdirentries r_readline/src/lib.rs /^ pub fn getdirentries($/;" f +getdirentries64 r_bash/src/lib.rs /^ pub fn getdirentries64($/;" f +getdirentries64 r_readline/src/lib.rs /^ pub fn getdirentries64($/;" f +getdiskcookedname vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getdiskcookedname($/;" f +getdiskrawname vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getdiskrawname($/;" f +getdomainname r_bash/src/lib.rs /^ pub fn getdomainname($/;" f +getdomainname r_glob/src/lib.rs /^ pub fn getdomainname($/;" f +getdomainname r_readline/src/lib.rs /^ pub fn getdomainname($/;" f +getdomainname vendor/libc/src/fuchsia/mod.rs /^ pub fn getdomainname(name: *mut ::c_char, len: ::size_t) -> ::c_int;$/;" f +getdomainname vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getdomainname(name: *mut ::c_char, len: ::c_int) -> ::c_int;$/;" f +getdomainname vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn getdomainname(name: *mut ::c_char, len: ::c_int) -> ::c_int;$/;" f +getdomainname vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn getdomainname(name: *mut ::c_char, len: ::size_t) -> ::c_int;$/;" f +getdomainname vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn getdomainname(name: *mut ::c_char, len: ::size_t) -> ::c_int;$/;" f +getdomainname vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getdomainname(name: *mut ::c_char, len: ::size_t) -> ::c_int;$/;" f +getdtablesize builtins_rust/ulimit/src/lib.rs /^ fn getdtablesize() -> i32;$/;" f +getdtablesize lib/sh/oslib.c /^getdtablesize ()$/;" f typeref:typename:int +getdtablesize r_bash/src/lib.rs /^ pub fn getdtablesize() -> ::std::os::raw::c_int;$/;" f +getdtablesize r_glob/src/lib.rs /^ pub fn getdtablesize() -> ::std::os::raw::c_int;$/;" f +getdtablesize r_readline/src/lib.rs /^ pub fn getdtablesize() -> ::std::os::raw::c_int;$/;" f +getdtablesize vendor/libc/src/fuchsia/mod.rs /^ pub fn getdtablesize() -> ::c_int;$/;" f +getdtablesize vendor/libc/src/unix/bsd/mod.rs /^ pub fn getdtablesize() -> ::c_int;$/;" f +getdtablesize vendor/libc/src/unix/haiku/mod.rs /^ pub fn getdtablesize() -> ::c_int;$/;" f +getdtablesize vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getdtablesize() -> ::c_int;$/;" f +getdtablesize vendor/libc/src/unix/newlib/mod.rs /^ pub fn getdtablesize() -> ::c_int;$/;" f +getdtablesize vendor/libc/src/unix/solarish/mod.rs /^ pub fn getdtablesize() -> ::c_int;$/;" f +getegid r_bash/src/lib.rs /^ pub fn getegid() -> __gid_t;$/;" f +getegid r_glob/src/lib.rs /^ pub fn getegid() -> __gid_t;$/;" f +getegid r_readline/src/lib.rs /^ pub fn getegid() -> __gid_t;$/;" f +getegid vendor/libc/src/fuchsia/mod.rs /^ pub fn getegid() -> gid_t;$/;" f +getegid vendor/libc/src/unix/mod.rs /^ pub fn getegid() -> gid_t;$/;" f +getegid vendor/libc/src/vxworks/mod.rs /^ pub fn getegid() -> gid_t;$/;" f +getentropy r_bash/src/lib.rs /^ pub fn getentropy($/;" f +getentropy r_glob/src/lib.rs /^ pub fn getentropy($/;" f +getentropy r_readline/src/lib.rs /^ pub fn getentropy($/;" f +getentropy vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int;$/;" f +getentropy vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int;$/;" f +getentropy vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int;$/;" f +getentropy vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int;$/;" f +getentropy vendor/libc/src/unix/solarish/mod.rs /^ pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int;$/;" f +getentropy vendor/libc/src/wasi.rs /^ pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int;$/;" f +getenv lib/intl/os2compat.h /^#define getenv /;" d +getenv lib/sh/getenv.c /^getenv (name)$/;" f +getenv r_bash/src/lib.rs /^ pub fn getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +getenv r_glob/src/lib.rs /^ pub fn getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +getenv r_readline/src/lib.rs /^ pub fn getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +getenv vendor/libc/src/fuchsia/mod.rs /^ pub fn getenv(s: *const c_char) -> *mut c_char;$/;" f +getenv vendor/libc/src/solid/mod.rs /^ pub fn getenv(arg1: *const c_char) -> *mut c_char;$/;" f +getenv vendor/libc/src/unix/mod.rs /^ pub fn getenv(s: *const c_char) -> *mut c_char;$/;" f +getenv vendor/libc/src/vxworks/mod.rs /^ pub fn getenv(s: *const c_char) -> *mut c_char;$/;" f +getenv vendor/libc/src/wasi.rs /^ pub fn getenv(s: *const c_char) -> *mut c_char;$/;" f +getenv vendor/libc/src/windows/mod.rs /^ pub fn getenv(s: *const c_char) -> *mut c_char;$/;" f +getenv.o lib/sh/Makefile.in /^getenv.o: ${BUILD_DIR}\/config.h$/;" t +getenv.o lib/sh/Makefile.in /^getenv.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +getenv.o lib/sh/Makefile.in /^getenv.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +getenv.o lib/sh/Makefile.in /^getenv.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +getenv.o lib/sh/Makefile.in /^getenv.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +getenv.o lib/sh/Makefile.in /^getenv.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/conftype/;" t +getenv.o lib/sh/Makefile.in /^getenv.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +getenv.o lib/sh/Makefile.in /^getenv.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp.h$/;" t +getenv.o lib/sh/Makefile.in /^getenv.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +getenv.o lib/sh/Makefile.in /^getenv.o: getenv.c$/;" t +getenv_r vendor/libc/src/solid/mod.rs /^ pub fn getenv_r(arg1: *const c_char, arg2: *mut c_char, arg3: size_t) -> c_int;$/;" f +geteuid r_bash/src/lib.rs /^ pub fn geteuid() -> __uid_t;$/;" f +geteuid r_glob/src/lib.rs /^ pub fn geteuid() -> __uid_t;$/;" f +geteuid r_readline/src/lib.rs /^ pub fn geteuid() -> __uid_t;$/;" f +geteuid vendor/libc/src/fuchsia/mod.rs /^ pub fn geteuid() -> uid_t;$/;" f +geteuid vendor/libc/src/unix/mod.rs /^ pub fn geteuid() -> uid_t;$/;" f +geteuid vendor/libc/src/vxworks/mod.rs /^ pub fn geteuid() -> uid_t;$/;" f +getevent vendor/nix/src/sys/ptrace/linux.rs /^pub fn getevent(pid: Pid) -> Result {$/;" f +getexecname vendor/libc/src/unix/solarish/mod.rs /^ pub fn getexecname() -> *const ::c_char;$/;" f +getfh vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn getfh(path: *const ::c_char, fhp: *mut fhandle_t) -> ::c_int;$/;" f +getfloatmax builtins_rust/printf/src/lib.rs /^unsafe fn getfloatmax() -> f64 {$/;" f +getfsspecname vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getfsspecname($/;" f +getfsstat vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getfsstat(mntbufp: *mut statfs, bufsize: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +getfsstat vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn getfsstat(buf: *mut ::statfs, bufsize: ::c_long, mode: ::c_int) -> ::c_int;$/;" f +getgid r_bash/src/lib.rs /^ pub fn getgid() -> __gid_t;$/;" f +getgid r_glob/src/lib.rs /^ pub fn getgid() -> __gid_t;$/;" f +getgid r_readline/src/lib.rs /^ pub fn getgid() -> __gid_t;$/;" f +getgid vendor/libc/src/fuchsia/mod.rs /^ pub fn getgid() -> gid_t;$/;" f +getgid vendor/libc/src/unix/mod.rs /^ pub fn getgid() -> gid_t;$/;" f +getgid vendor/libc/src/vxworks/mod.rs /^ pub fn getgid() -> ::gid_t;$/;" f +getgrent vendor/libc/src/fuchsia/mod.rs /^ pub fn getgrent() -> *mut ::group;$/;" f +getgrent vendor/libc/src/unix/bsd/mod.rs /^ pub fn getgrent() -> *mut ::group;$/;" f +getgrent vendor/libc/src/unix/haiku/mod.rs /^ pub fn getgrent() -> *mut ::group;$/;" f +getgrent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getgrent() -> *mut ::group;$/;" f +getgrent vendor/libc/src/unix/solarish/mod.rs /^ pub fn getgrent() -> *mut ::group;$/;" f +getgrent_r vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn getgrent_r($/;" f +getgrent_r vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getgrent_r($/;" f +getgrent_r vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getgrent_r($/;" f +getgrent_r vendor/libc/src/unix/solarish/mod.rs /^ pub fn getgrent_r($/;" f +getgrgid vendor/libc/src/fuchsia/mod.rs /^ pub fn getgrgid(gid: ::gid_t) -> *mut ::group;$/;" f +getgrgid vendor/libc/src/unix/bsd/mod.rs /^ pub fn getgrgid(gid: ::gid_t) -> *mut ::group;$/;" f +getgrgid vendor/libc/src/unix/haiku/mod.rs /^ pub fn getgrgid(gid: ::gid_t) -> *mut ::group;$/;" f +getgrgid vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getgrgid(gid: ::gid_t) -> *mut ::group;$/;" f +getgrgid vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getgrgid(gid: ::gid_t) -> *mut ::group;$/;" f +getgrgid vendor/libc/src/unix/newlib/mod.rs /^ pub fn getgrgid(gid: ::gid_t) -> *mut ::group;$/;" f +getgrgid vendor/libc/src/unix/solarish/mod.rs /^ pub fn getgrgid(gid: ::gid_t) -> *mut ::group;$/;" f +getgrgid_r vendor/libc/src/fuchsia/mod.rs /^ pub fn getgrgid_r($/;" f +getgrgid_r vendor/libc/src/unix/bsd/mod.rs /^ pub fn getgrgid_r($/;" f +getgrgid_r vendor/libc/src/unix/haiku/mod.rs /^ pub fn getgrgid_r($/;" f +getgrgid_r vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getgrgid_r($/;" f +getgrgid_r vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getgrgid_r($/;" f +getgrgid_r vendor/libc/src/unix/newlib/mod.rs /^ pub fn getgrgid_r($/;" f +getgrgid_r vendor/libc/src/unix/solarish/mod.rs /^ pub fn getgrgid_r($/;" f +getgrnam vendor/libc/src/fuchsia/mod.rs /^ pub fn getgrnam(name: *const ::c_char) -> *mut ::group;$/;" f +getgrnam vendor/libc/src/unix/bsd/mod.rs /^ pub fn getgrnam(name: *const ::c_char) -> *mut ::group;$/;" f +getgrnam vendor/libc/src/unix/haiku/mod.rs /^ pub fn getgrnam(name: *const ::c_char) -> *mut ::group;$/;" f +getgrnam vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getgrnam(name: *const ::c_char) -> *mut ::group;$/;" f +getgrnam vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getgrnam(name: *const ::c_char) -> *mut ::group;$/;" f +getgrnam vendor/libc/src/unix/newlib/mod.rs /^ pub fn getgrnam(name: *const ::c_char) -> *mut ::group;$/;" f +getgrnam vendor/libc/src/unix/solarish/mod.rs /^ pub fn getgrnam(name: *const ::c_char) -> *mut ::group;$/;" f +getgrnam_r vendor/libc/src/fuchsia/mod.rs /^ pub fn getgrnam_r($/;" f +getgrnam_r vendor/libc/src/unix/bsd/mod.rs /^ pub fn getgrnam_r($/;" f +getgrnam_r vendor/libc/src/unix/haiku/mod.rs /^ pub fn getgrnam_r($/;" f +getgrnam_r vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getgrnam_r($/;" f +getgrnam_r vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getgrnam_r($/;" f +getgrnam_r vendor/libc/src/unix/newlib/mod.rs /^ pub fn getgrnam_r($/;" f +getgrnam_r vendor/libc/src/unix/solarish/mod.rs /^ pub fn getgrnam_r($/;" f +getgrouplist vendor/libc/src/fuchsia/mod.rs /^ pub fn getgrouplist($/;" f +getgrouplist vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getgrouplist($/;" f +getgrouplist vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn getgrouplist($/;" f +getgrouplist vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn getgrouplist($/;" f +getgrouplist vendor/libc/src/unix/haiku/mod.rs /^ pub fn getgrouplist($/;" f +getgrouplist vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getgrouplist($/;" f +getgrouplist vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getgrouplist($/;" f +getgrouplist vendor/libc/src/unix/solarish/mod.rs /^ pub fn getgrouplist($/;" f +getgroups r_bash/src/lib.rs /^ pub fn getgroups(__size: ::std::os::raw::c_int, __list: *mut __gid_t) -> ::std::os::raw::c_i/;" f +getgroups r_glob/src/lib.rs /^ pub fn getgroups(__size: ::std::os::raw::c_int, __list: *mut __gid_t) -> ::std::os::raw::c_i/;" f +getgroups r_readline/src/lib.rs /^ pub fn getgroups(__size: ::std::os::raw::c_int, __list: *mut __gid_t) -> ::std::os::raw::c_i/;" f +getgroups vendor/libc/src/fuchsia/mod.rs /^ pub fn getgroups(ngroups_max: ::c_int, groups: *mut gid_t) -> ::c_int;$/;" f +getgroups vendor/libc/src/unix/mod.rs /^ pub fn getgroups(ngroups_max: ::c_int, groups: *mut gid_t) -> ::c_int;$/;" f +getgroups vendor/libc/src/vxworks/mod.rs /^ pub fn getgroups(ngroups_max: ::c_int, groups: *mut gid_t) -> ::c_int;$/;" f +gethostbyaddr vendor/winapi/src/um/winsock2.rs /^ pub fn gethostbyaddr($/;" f +gethostbyname vendor/winapi/src/um/winsock2.rs /^ pub fn gethostbyname($/;" f +gethostid r_bash/src/lib.rs /^ pub fn gethostid() -> ::std::os::raw::c_long;$/;" f +gethostid r_glob/src/lib.rs /^ pub fn gethostid() -> ::std::os::raw::c_long;$/;" f +gethostid r_readline/src/lib.rs /^ pub fn gethostid() -> ::std::os::raw::c_long;$/;" f +gethostid vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn gethostid() -> ::c_long;$/;" f +gethostid vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn gethostid() -> ::c_long;$/;" f +gethostid vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn gethostid() -> ::c_long;$/;" f +gethostid vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn gethostid() -> ::c_long;$/;" f +gethostid vendor/libc/src/unix/newlib/horizon/mod.rs /^ pub fn gethostid() -> ::c_long;$/;" f +gethostid vendor/libc/src/unix/solarish/mod.rs /^ pub fn gethostid() -> ::c_long;$/;" f +gethostname lib/sh/oslib.c /^gethostname (name, namelen)$/;" f +gethostname r_bash/src/lib.rs /^ pub fn gethostname(__name: *mut ::std::os::raw::c_char, __len: usize) -> ::std::os::raw::c_i/;" f +gethostname r_glob/src/lib.rs /^ pub fn gethostname(__name: *mut ::std::os::raw::c_char, __len: usize) -> ::std::os::raw::c_i/;" f +gethostname r_readline/src/lib.rs /^ pub fn gethostname(__name: *mut ::std::os::raw::c_char, __len: usize) -> ::std::os::raw::c_i/;" f +gethostname vendor/libc/src/fuchsia/mod.rs /^ pub fn gethostname(name: *mut ::c_char, len: ::size_t) -> ::c_int;$/;" f +gethostname vendor/libc/src/unix/mod.rs /^ pub fn gethostname(name: *mut ::c_char, len: ::size_t) -> ::c_int;$/;" f +gethostname vendor/libc/src/vxworks/mod.rs /^ pub fn gethostname(name: *mut ::c_char, len: ::size_t) -> ::c_int;$/;" f +gethostname vendor/winapi/src/um/winsock2.rs /^ pub fn gethostname($/;" f +gethostuuid vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn gethostuuid(id: *mut u8, timeout: *const ::timespec) -> ::c_int;$/;" f +getifaddrs vendor/libc/src/fuchsia/mod.rs /^ pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int;$/;" f +getifaddrs vendor/libc/src/unix/bsd/mod.rs /^ pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int;$/;" f +getifaddrs vendor/libc/src/unix/haiku/mod.rs /^ pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int;$/;" f +getifaddrs vendor/libc/src/unix/linux_like/mod.rs /^ pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int;$/;" f +getifaddrs vendor/libc/src/unix/solarish/mod.rs /^ pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int;$/;" f +getifaddrs vendor/nix/src/ifaddrs.rs /^pub fn getifaddrs() -> Result {$/;" f +getifs builtins_rust/read/src/intercdep.rs /^ pub fn getifs() -> *mut c_char;$/;" f +getifs r_bash/src/lib.rs /^ pub fn getifs() -> *mut ::std::os::raw::c_char;$/;" f +getifs subst.c /^getifs ()$/;" f typeref:typename:char * +getint builtins_rust/printf/src/lib.rs /^unsafe fn getint() -> c_int {$/;" f +getinterp execute_cmd.c /^getinterp (sample, sample_len, endp)$/;" f file: +getintmax builtins_rust/printf/src/lib.rs /^unsafe fn getintmax() -> c_long {$/;" f +getisax vendor/libc/src/unix/solarish/mod.rs /^ pub fn getisax(array: *mut u32, n: ::c_uint) -> ::c_uint;$/;" f +getitimer r_bash/src/lib.rs /^ pub fn getitimer(__which: __itimer_which_t, __value: *mut itimerval) -> ::std::os::raw::c_in/;" f +getitimer r_glob/src/lib.rs /^ pub fn getitimer(__which: __itimer_which_t, __value: *mut itimerval) -> ::std::os::raw::c_in/;" f +getitimer r_readline/src/lib.rs /^ pub fn getitimer(__which: __itimer_which_t, __value: *mut itimerval) -> ::std::os::raw::c_in/;" f +getitimer vendor/libc/src/unix/bsd/mod.rs /^ pub fn getitimer(which: ::c_int, curr_value: *mut ::itimerval) -> ::c_int;$/;" f +getitimer vendor/libc/src/unix/haiku/mod.rs /^ pub fn getitimer(which: ::c_int, curr_value: *mut ::itimerval) -> ::c_int;$/;" f +getlastlogx vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn getlastlogx(fname: *const ::c_char, uid: ::uid_t, ll: *mut lastlogx) -> *mut lastlogx/;" f +getlastlogx vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getlastlogx(fname: *const ::c_char, uid: ::uid_t, ll: *mut lastlogx) -> *mut lastlogx/;" f +getline r_bash/src/lib.rs /^ pub fn getline($/;" f +getline r_readline/src/lib.rs /^ pub fn getline($/;" f +getline vendor/libc/src/unix/mod.rs /^ pub fn getline(lineptr: *mut *mut c_char, n: *mut size_t, stream: *mut FILE) -> ssize_t;$/;" f +getline vendor/libc/src/vxworks/mod.rs /^ pub fn getline(lineptr: *mut *mut c_char, n: *mut size_t, stream: *mut FILE) -> ssize_t;$/;" f +getline vendor/libc/src/wasi.rs /^ pub fn getline(lineptr: *mut *mut c_char, n: *mut size_t, stream: *mut FILE) -> ssize_t;$/;" f +getloadavg r_bash/src/lib.rs /^ pub fn getloadavg(__loadavg: *mut f64, __nelem: ::std::os::raw::c_int)$/;" f +getloadavg r_glob/src/lib.rs /^ pub fn getloadavg(__loadavg: *mut f64, __nelem: ::std::os::raw::c_int)$/;" f +getloadavg r_readline/src/lib.rs /^ pub fn getloadavg(__loadavg: *mut f64, __nelem: ::std::os::raw::c_int)$/;" f +getloadavg vendor/libc/src/unix/bsd/mod.rs /^ pub fn getloadavg(loadavg: *mut ::c_double, nelem: ::c_int) -> ::c_int;$/;" f +getloadavg vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn getloadavg(loadavg: *mut ::c_double, nelem: ::c_int) -> ::c_int;$/;" f +getloadavg vendor/libc/src/unix/solarish/mod.rs /^ pub fn getloadavg(loadavg: *mut ::c_double, nelem: ::c_int) -> ::c_int;$/;" f +getlocalbase vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn getlocalbase() -> *const ::c_char;$/;" f +getlogin r_bash/src/lib.rs /^ pub fn getlogin() -> *mut ::std::os::raw::c_char;$/;" f +getlogin r_glob/src/lib.rs /^ pub fn getlogin() -> *mut ::std::os::raw::c_char;$/;" f +getlogin r_readline/src/lib.rs /^ pub fn getlogin() -> *mut ::std::os::raw::c_char;$/;" f +getlogin vendor/libc/src/fuchsia/mod.rs /^ pub fn getlogin() -> *mut c_char;$/;" f +getlogin vendor/libc/src/unix/mod.rs /^ pub fn getlogin() -> *mut c_char;$/;" f +getlogin vendor/libc/src/vxworks/mod.rs /^ pub fn getlogin() -> *mut c_char;$/;" f +getlogin_r r_bash/src/lib.rs /^ pub fn getlogin_r($/;" f +getlogin_r r_glob/src/lib.rs /^ pub fn getlogin_r($/;" f +getlogin_r r_readline/src/lib.rs /^ pub fn getlogin_r($/;" f +getmaxchild builtins_rust/ulimit/src/lib.rs /^ fn getmaxchild() -> i64;$/;" f +getmaxchild lib/sh/oslib.c /^getmaxchild ()$/;" f typeref:typename:long +getmaxchild r_bash/src/lib.rs /^ pub fn getmaxchild() -> ::std::os::raw::c_long;$/;" f +getmaxchild r_jobs/src/lib.rs /^ fn getmaxchild() -> libc::c_long;$/;" f +getmaxgroups lib/sh/oslib.c /^getmaxgroups ()$/;" f typeref:typename:int +getmaxgroups r_bash/src/lib.rs /^ pub fn getmaxgroups() -> ::std::os::raw::c_int;$/;" f +getmaxuprc builtins_rust/ulimit/src/lib.rs /^fn getmaxuprc(valuep: *mut rlim_t) -> i32 {$/;" f +getmaxvm builtins_rust/ulimit/src/lib.rs /^unsafe fn getmaxvm(softlim: *mut RLIMTYPE, hardlim: *mut libc::c_char) -> i32 {$/;" f +getmntent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getmntent(stream: *mut ::FILE) -> *mut ::mntent;$/;" f +getmntinfo vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getmntinfo(mntbufp: *mut *mut statfs, flags: ::c_int) -> ::c_int;$/;" f +getmntinfo vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn getmntinfo(mntbufp: *mut *mut ::statfs, mode: ::c_int) -> ::c_int;$/;" f +getnameinfo vendor/libc/src/fuchsia/mod.rs /^ pub fn getnameinfo($/;" f +getnameinfo vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getnameinfo($/;" f +getnameinfo vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn getnameinfo($/;" f +getnameinfo vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getnameinfo($/;" f +getnameinfo vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn getnameinfo($/;" f +getnameinfo vendor/libc/src/unix/haiku/mod.rs /^ pub fn getnameinfo($/;" f +getnameinfo vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getnameinfo($/;" f +getnameinfo vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn getnameinfo($/;" f +getnameinfo vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn getnameinfo($/;" f +getnameinfo vendor/libc/src/unix/newlib/mod.rs /^ pub fn getnameinfo($/;" f +getnameinfo vendor/libc/src/unix/redox/mod.rs /^ pub fn getnameinfo($/;" f +getnameinfo vendor/libc/src/unix/solarish/mod.rs /^ pub fn getnameinfo($/;" f +getnameinfo vendor/winapi/src/um/ws2tcpip.rs /^ pub fn getnameinfo($/;" f +getopt r_bash/src/lib.rs /^ pub fn getopt($/;" f +getopt r_glob/src/lib.rs /^ pub fn getopt($/;" f +getopt r_readline/src/lib.rs /^ pub fn getopt($/;" f +getopt vendor/libc/src/fuchsia/mod.rs /^ pub fn getopt(argc: ::c_int, argv: *const *mut c_char, optstr: *const c_char) -> ::c_int;$/;" f +getopt vendor/libc/src/solid/mod.rs /^ pub fn getopt(arg1: c_int, arg2: *mut *mut c_char, arg3: *const c_char) -> c_int;$/;" f +getopt vendor/libc/src/unix/mod.rs /^ pub fn getopt(argc: ::c_int, argv: *const *mut c_char, optstr: *const c_char) -> ::c_int;$/;" f +getopt vendor/libc/src/vxworks/mod.rs /^ pub fn getopt(argc: ::c_int, argv: *const *mut c_char, optstr: *const c_char) -> ::c_int;$/;" f +getopt vendor/libc/src/wasi.rs /^ pub fn getopt(argc: ::c_int, argv: *const *mut c_char, optstr: *const c_char) -> ::c_int;$/;" f +getopt.c builtins/Makefile.in /^getopt.c: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +getopt.o builtins/Makefile.in /^getopt.o: $(srcdir)\/getopt.h $/;" t +getopt.o builtins/Makefile.in /^getopt.o: $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/subst.h$/;" t +getopt.o builtins/Makefile.in /^getopt.o: $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/error.h $(topdir)\/variables.h $(/;" t +getopt.o builtins/Makefile.in /^getopt.o: $(topdir)\/quit.h $(BASHINCDIR)\/maxpath.h $(topdir)\/unwind_prot.h$/;" t +getopt.o builtins/Makefile.in /^getopt.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/bashjmp.h $(topdir)\/command.h$/;" t +getopt.o builtins/Makefile.in /^getopt.o: $(topdir)\/sig.h ..\/pathnames.h $(topdir)\/externs.h$/;" t +getopt.o builtins/Makefile.in /^getopt.o: ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +getopt.o builtins/Makefile.in /^getopt.o: getopt.c$/;" t +getopts.o builtins/Makefile.in /^getopts.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +getopts.o builtins/Makefile.in /^getopts.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +getopts.o builtins/Makefile.in /^getopts.o: $(topdir)\/execute_cmd.h$/;" t +getopts.o builtins/Makefile.in /^getopts.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +getopts.o builtins/Makefile.in /^getopts.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables./;" t +getopts.o builtins/Makefile.in /^getopts.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +getopts.o builtins/Makefile.in /^getopts.o: ..\/pathnames.h$/;" t +getopts.o builtins/Makefile.in /^getopts.o: getopts.def$/;" t +getopts_reset r_bash/src/lib.rs /^ pub fn getopts_reset(arg1: ::std::os::raw::c_int);$/;" f +getpagesize lib/malloc/getpagesize.h /^# define getpagesize(/;" d +getpagesize lib/malloc/getpagesize.h /^# define getpagesize(/;" d +getpagesize lib/malloc/getpagesize.h /^# define getpagesize(/;" d +getpagesize lib/malloc/getpagesize.h /^# define getpagesize(/;" d +getpagesize lib/malloc/getpagesize.h /^# define getpagesize(/;" d +getpagesize lib/malloc/getpagesize.h /^# define getpagesize(/;" d +getpagesize r_bash/src/lib.rs /^ pub fn getpagesize() -> ::std::os::raw::c_int;$/;" f +getpagesize r_glob/src/lib.rs /^ pub fn getpagesize() -> ::std::os::raw::c_int;$/;" f +getpagesize r_readline/src/lib.rs /^ pub fn getpagesize() -> ::std::os::raw::c_int;$/;" f +getpagesize vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn getpagesize() -> ::c_int;$/;" f +getpagesize vendor/libc/src/unix/haiku/mod.rs /^ pub fn getpagesize() -> ::c_int;$/;" f +getpagesize vendor/libc/src/unix/solarish/mod.rs /^ pub fn getpagesize() -> ::c_int;$/;" f +getpagesizes vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn getpagesizes(pagesize: *mut ::size_t, nelem: ::c_int) -> ::c_int;$/;" f +getpagesizes vendor/libc/src/unix/solarish/mod.rs /^ pub fn getpagesizes(pagesize: *mut ::size_t, nelem: ::c_int) -> ::c_int;$/;" f +getpagesizes2 vendor/libc/src/unix/solarish/illumos.rs /^ pub fn getpagesizes2(pagesize: *mut ::size_t, nelem: ::c_int) -> ::c_int;$/;" f +getpass r_bash/src/lib.rs /^ pub fn getpass(__prompt: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +getpass r_glob/src/lib.rs /^ pub fn getpass(__prompt: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +getpass r_readline/src/lib.rs /^ pub fn getpass(__prompt: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +getpass vendor/libc/src/unix/haiku/mod.rs /^ pub fn getpass(prompt: *const ::c_char) -> *mut ::c_char;$/;" f +getpatspec subst.c /^getpatspec (c, value)$/;" f file: +getpattern subst.c /^getpattern (value, quoted, expandpat)$/;" f file: +getpeereid vendor/libc/src/unix/bsd/mod.rs /^ pub fn getpeereid(socket: ::c_int, euid: *mut ::uid_t, egid: *mut ::gid_t) -> ::c_int;$/;" f +getpeername vendor/libc/src/fuchsia/mod.rs /^ pub fn getpeername($/;" f +getpeername vendor/libc/src/unix/mod.rs /^ pub fn getpeername($/;" f +getpeername vendor/libc/src/vxworks/mod.rs /^ pub fn getpeername(s: ::c_int, name: *mut ::sockaddr, namelen: *mut ::socklen_t) -> ::c_int;$/;" f +getpeername vendor/libc/src/windows/mod.rs /^ pub fn getpeername(s: SOCKET, name: *mut ::sockaddr, nameln: *mut ::c_int) -> ::c_int;$/;" f +getpeername vendor/nix/src/sys/socket/mod.rs /^pub fn getpeername(fd: RawFd) -> Result {$/;" f +getpeername vendor/winapi/src/um/winsock2.rs /^ pub fn getpeername($/;" f +getpeerucred vendor/libc/src/unix/solarish/mod.rs /^ pub fn getpeerucred(fd: ::c_int, ucred: *mut *mut ucred_t) -> ::c_int;$/;" f +getpflags vendor/libc/src/unix/solarish/mod.rs /^ pub fn getpflags(flags: ::c_uint) -> ::c_uint;$/;" f +getpgid jobs.c /^# define getpgid(/;" d file: +getpgid r_bash/src/lib.rs /^ pub fn getpgid(__pid: __pid_t) -> __pid_t;$/;" f +getpgid r_glob/src/lib.rs /^ pub fn getpgid(__pid: __pid_t) -> __pid_t;$/;" f +getpgid r_jobs/src/lib.rs /^macro_rules! getpgid {$/;" M +getpgid r_readline/src/lib.rs /^ pub fn getpgid(__pid: __pid_t) -> __pid_t;$/;" f +getpgid vendor/libc/src/fuchsia/mod.rs /^ pub fn getpgid(pid: pid_t) -> pid_t;$/;" f +getpgid vendor/libc/src/unix/mod.rs /^ pub fn getpgid(pid: pid_t) -> pid_t;$/;" f +getpgrp r_bash/src/lib.rs /^ pub fn getpgrp() -> __pid_t;$/;" f +getpgrp r_glob/src/lib.rs /^ pub fn getpgrp() -> __pid_t;$/;" f +getpgrp r_readline/src/lib.rs /^ pub fn getpgrp() -> __pid_t;$/;" f +getpgrp vendor/libc/src/fuchsia/mod.rs /^ pub fn getpgrp() -> pid_t;$/;" f +getpgrp vendor/libc/src/unix/mod.rs /^ pub fn getpgrp() -> pid_t;$/;" f +getpid r_bash/src/lib.rs /^ pub fn getpid() -> __pid_t;$/;" f +getpid r_glob/src/lib.rs /^ pub fn getpid() -> __pid_t;$/;" f +getpid r_jobs/src/lib.rs /^ fn getpid() -> __pid_t;$/;" f +getpid r_readline/src/lib.rs /^ pub fn getpid() -> __pid_t;$/;" f +getpid vendor/libc/src/fuchsia/mod.rs /^ pub fn getpid() -> pid_t;$/;" f +getpid vendor/libc/src/solid/mod.rs /^ pub fn getpid() -> pid_t;$/;" f +getpid vendor/libc/src/unix/mod.rs /^ pub fn getpid() -> pid_t;$/;" f +getpid vendor/libc/src/vxworks/mod.rs /^ pub fn getpid() -> pid_t;$/;" f +getpid vendor/libc/src/windows/mod.rs /^ pub fn getpid() -> ::c_int;$/;" f +getppid r_bash/src/lib.rs /^ pub fn getppid() -> __pid_t;$/;" f +getppid r_glob/src/lib.rs /^ pub fn getppid() -> __pid_t;$/;" f +getppid r_readline/src/lib.rs /^ pub fn getppid() -> __pid_t;$/;" f +getppid vendor/libc/src/fuchsia/mod.rs /^ pub fn getppid() -> pid_t;$/;" f +getppid vendor/libc/src/unix/mod.rs /^ pub fn getppid() -> pid_t;$/;" f +getppid vendor/libc/src/vxworks/mod.rs /^ pub fn getppid() -> pid_t;$/;" f +getpriority r_bash/src/lib.rs /^ pub fn getpriority(__which: __priority_which_t, __who: id_t) -> ::std::os::raw::c_int;$/;" f +getpriority r_glob/src/lib.rs /^ pub fn getpriority(__which: __priority_which_t, __who: id_t) -> ::std::os::raw::c_int;$/;" f +getpriority r_readline/src/lib.rs /^ pub fn getpriority(__which: __priority_which_t, __who: id_t) -> ::std::os::raw::c_int;$/;" f +getpriority vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int;$/;" f +getpriority vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn getpriority(which: ::c_int, who: ::c_int) -> ::c_int;$/;" f +getpriority vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int;$/;" f +getpriority vendor/libc/src/unix/haiku/mod.rs /^ pub fn getpriority(which: ::c_int, who: id_t) -> ::c_int;$/;" f +getpriority vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int;$/;" f +getpriority vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int;$/;" f +getpriority vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getpriority(which: ::__priority_which_t, who: ::id_t) -> ::c_int;$/;" f +getpriority vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int;$/;" f +getpriority vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn getpriority(which: ::__priority_which_t, who: ::id_t) -> ::c_int;$/;" f +getpriority vendor/libc/src/unix/solarish/mod.rs /^ pub fn getpriority(which: ::c_int, who: ::c_int) -> ::c_int;$/;" f +getprogname vendor/libc/src/solid/mod.rs /^ pub fn getprogname() -> *const c_char;$/;" f +getprogname vendor/libc/src/unix/bsd/mod.rs /^ pub fn getprogname() -> *const ::c_char;$/;" f +getprogname vendor/libc/src/unix/solarish/mod.rs /^ pub fn getprogname() -> *const ::c_char;$/;" f +getprotobyname vendor/libc/src/fuchsia/mod.rs /^ pub fn getprotobyname(name: *const ::c_char) -> *mut protoent;$/;" f +getprotobyname vendor/libc/src/unix/mod.rs /^ pub fn getprotobyname(name: *const ::c_char) -> *mut protoent;$/;" f +getprotobyname vendor/winapi/src/um/winsock2.rs /^ pub fn getprotobyname($/;" f +getprotobynumber vendor/libc/src/fuchsia/mod.rs /^ pub fn getprotobynumber(proto: ::c_int) -> *mut protoent;$/;" f +getprotobynumber vendor/libc/src/unix/mod.rs /^ pub fn getprotobynumber(proto: ::c_int) -> *mut protoent;$/;" f +getprotobynumber vendor/winapi/src/um/winsock2.rs /^ pub fn getprotobynumber($/;" f +getpt r_bash/src/lib.rs /^ pub fn getpt() -> ::std::os::raw::c_int;$/;" f +getpt r_glob/src/lib.rs /^ pub fn getpt() -> ::std::os::raw::c_int;$/;" f +getpt r_readline/src/lib.rs /^ pub fn getpt() -> ::std::os::raw::c_int;$/;" f +getpt vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getpt() -> ::c_int;$/;" f +getpwent vendor/libc/src/fuchsia/mod.rs /^ pub fn getpwent() -> *mut passwd;$/;" f +getpwent vendor/libc/src/unix/bsd/mod.rs /^ pub fn getpwent() -> *mut passwd;$/;" f +getpwent vendor/libc/src/unix/haiku/mod.rs /^ pub fn getpwent() -> *mut passwd;$/;" f +getpwent vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn getpwent() -> *mut passwd;$/;" f +getpwent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getpwent() -> *mut passwd;$/;" f +getpwent vendor/libc/src/unix/solarish/mod.rs /^ pub fn getpwent() -> *mut passwd;$/;" f +getpwent_r vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn getpwent_r($/;" f +getpwent_r vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getpwent_r($/;" f +getpwent_r vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getpwent_r($/;" f +getpwent_r vendor/libc/src/unix/solarish/mod.rs /^ pub fn getpwent_r($/;" f +getpwnam vendor/libc/src/fuchsia/mod.rs /^ pub fn getpwnam(name: *const ::c_char) -> *mut passwd;$/;" f +getpwnam vendor/libc/src/unix/mod.rs /^ pub fn getpwnam(name: *const ::c_char) -> *mut passwd;$/;" f +getpwnam_r vendor/libc/src/fuchsia/mod.rs /^ pub fn getpwnam_r($/;" f +getpwnam_r vendor/libc/src/unix/bsd/mod.rs /^ pub fn getpwnam_r($/;" f +getpwnam_r vendor/libc/src/unix/haiku/mod.rs /^ pub fn getpwnam_r($/;" f +getpwnam_r vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getpwnam_r($/;" f +getpwnam_r vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getpwnam_r($/;" f +getpwnam_r vendor/libc/src/unix/newlib/mod.rs /^ pub fn getpwnam_r($/;" f +getpwnam_r vendor/libc/src/unix/solarish/mod.rs /^ pub fn getpwnam_r($/;" f +getpwuid vendor/libc/src/fuchsia/mod.rs /^ pub fn getpwuid(uid: ::uid_t) -> *mut passwd;$/;" f +getpwuid vendor/libc/src/unix/mod.rs /^ pub fn getpwuid(uid: ::uid_t) -> *mut passwd;$/;" f +getpwuid_r vendor/libc/src/fuchsia/mod.rs /^ pub fn getpwuid_r($/;" f +getpwuid_r vendor/libc/src/unix/bsd/mod.rs /^ pub fn getpwuid_r($/;" f +getpwuid_r vendor/libc/src/unix/haiku/mod.rs /^ pub fn getpwuid_r($/;" f +getpwuid_r vendor/libc/src/unix/hermit/mod.rs /^ pub fn getpwuid_r($/;" f +getpwuid_r vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getpwuid_r($/;" f +getpwuid_r vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getpwuid_r($/;" f +getpwuid_r vendor/libc/src/unix/newlib/mod.rs /^ pub fn getpwuid_r($/;" f +getpwuid_r vendor/libc/src/unix/redox/mod.rs /^ pub fn getpwuid_r($/;" f +getpwuid_r vendor/libc/src/unix/solarish/mod.rs /^ pub fn getpwuid_r($/;" f +getrandom lib/sh/random.c /^getrandom (buf, len, flags)$/;" f file: +getrandom vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +getrandom vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +getrandom vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +getrandom vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +getrandom vendor/libc/src/unix/linux_like/linux/musl/b32/arm/mod.rs /^ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +getrandom vendor/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs /^ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +getrandom vendor/libc/src/unix/linux_like/linux/musl/b32/x86/mod.rs /^ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +getrandom vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs /^ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +getrandom vendor/libc/src/unix/newlib/espidf/mod.rs /^ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +getrandom vendor/libc/src/unix/newlib/horizon/mod.rs /^ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +getrandom vendor/libc/src/unix/solarish/mod.rs /^ pub fn getrandom(bbuf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +getregs vendor/nix/src/sys/ptrace/linux.rs /^pub fn getregs(pid: Pid) -> Result {$/;" f +getres vendor/nix/src/unistd.rs /^mod getres {$/;" n +getresgid r_bash/src/lib.rs /^ pub fn getresgid($/;" f +getresgid r_glob/src/lib.rs /^ pub fn getresgid($/;" f +getresgid r_readline/src/lib.rs /^ pub fn getresgid($/;" f +getresgid vendor/libc/src/fuchsia/mod.rs /^ pub fn getresgid(rgid: *mut ::gid_t, egid: *mut ::gid_t, sgid: *mut ::gid_t) -> ::c_int;$/;" f +getresgid vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn getresgid(rgid: *mut ::gid_t, egid: *mut ::gid_t, sgid: *mut ::gid_t) -> ::c_int;$/;" f +getresgid vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn getresgid(rgid: *mut ::gid_t, egid: *mut ::gid_t, sgid: *mut ::gid_t) -> ::c_int;$/;" f +getresgid vendor/libc/src/unix/linux_like/mod.rs /^ pub fn getresgid(rgid: *mut ::gid_t, egid: *mut ::gid_t, sgid: *mut ::gid_t) -> ::c_int;$/;" f +getresuid r_bash/src/lib.rs /^ pub fn getresuid($/;" f +getresuid r_glob/src/lib.rs /^ pub fn getresuid($/;" f +getresuid r_readline/src/lib.rs /^ pub fn getresuid($/;" f +getresuid vendor/libc/src/fuchsia/mod.rs /^ pub fn getresuid(ruid: *mut ::uid_t, euid: *mut ::uid_t, suid: *mut ::uid_t) -> ::c_int;$/;" f +getresuid vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn getresuid(ruid: *mut ::uid_t, euid: *mut ::uid_t, suid: *mut ::uid_t) -> ::c_int;$/;" f +getresuid vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn getresuid(ruid: *mut ::uid_t, euid: *mut ::uid_t, suid: *mut ::uid_t) -> ::c_int;$/;" f +getresuid vendor/libc/src/unix/linux_like/mod.rs /^ pub fn getresuid(ruid: *mut ::uid_t, euid: *mut ::uid_t, suid: *mut ::uid_t) -> ::c_int;$/;" f +getrlimit builtins_rust/ulimit/src/lib.rs /^ fn getrlimit(__resource: __rlimit_resource_t, __rlimits: *mut rlimit) -> i32;$/;" f +getrlimit r_bash/src/lib.rs /^ pub fn getrlimit($/;" f +getrlimit r_glob/src/lib.rs /^ pub fn getrlimit($/;" f +getrlimit r_readline/src/lib.rs /^ pub fn getrlimit($/;" f +getrlimit vendor/libc/src/unix/bsd/mod.rs /^ pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;$/;" f +getrlimit vendor/libc/src/unix/haiku/mod.rs /^ pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;$/;" f +getrlimit vendor/libc/src/unix/hermit/mod.rs /^ pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;$/;" f +getrlimit vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;$/;" f +getrlimit vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;$/;" f +getrlimit vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getrlimit(resource: ::__rlimit_resource_t, rlim: *mut ::rlimit) -> ::c_int;$/;" f +getrlimit vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;$/;" f +getrlimit vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn getrlimit(resource: ::__rlimit_resource_t, rlim: *mut ::rlimit) -> ::c_int;$/;" f +getrlimit vendor/libc/src/unix/newlib/mod.rs /^ pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;$/;" f +getrlimit vendor/libc/src/unix/redox/mod.rs /^ pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;$/;" f +getrlimit vendor/libc/src/unix/solarish/mod.rs /^ pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;$/;" f +getrlimit vendor/nix/src/sys/resource.rs /^pub fn getrlimit(resource: Resource) -> Result<(rlim_t, rlim_t)> {$/;" f +getrlimit64 r_bash/src/lib.rs /^ pub fn getrlimit64($/;" f +getrlimit64 r_glob/src/lib.rs /^ pub fn getrlimit64($/;" f +getrlimit64 r_readline/src/lib.rs /^ pub fn getrlimit64($/;" f +getrlimit64 vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getrlimit64(resource: ::c_int, rlim: *mut rlimit64) -> ::c_int;$/;" f +getrlimit64 vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn getrlimit64(resource: ::c_int, rlim: *mut rlimit64) -> ::c_int;$/;" f +getrlimit64 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getrlimit64(resource: ::__rlimit_resource_t, rlim: *mut ::rlimit64) -> ::c_int;$/;" f +getrlimit64 vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn getrlimit64(resource: ::c_int, rlim: *mut ::rlimit64) -> ::c_int;$/;" f +getrlimit64 vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn getrlimit64(resource: ::__rlimit_resource_t, rlim: *mut ::rlimit64) -> ::c_int;$/;" f +getrusage r_bash/src/lib.rs /^ pub fn getrusage(__who: __rusage_who_t, __usage: *mut rusage) -> ::std::os::raw::c_int;$/;" f +getrusage r_glob/src/lib.rs /^ pub fn getrusage(__who: __rusage_who_t, __usage: *mut rusage) -> ::std::os::raw::c_int;$/;" f +getrusage r_readline/src/lib.rs /^ pub fn getrusage(__who: __rusage_who_t, __usage: *mut rusage) -> ::std::os::raw::c_int;$/;" f +getrusage vendor/libc/src/unix/mod.rs /^ pub fn getrusage(resource: ::c_int, usage: *mut rusage) -> ::c_int;$/;" f +getrusage vendor/libc/src/wasi.rs /^ pub fn getrusage(resource: ::c_int, usage: *mut rusage) -> ::c_int;$/;" f +getrusage vendor/nix/src/sys/resource.rs /^pub fn getrusage(who: UsageWho) -> Result {$/;" f +gets vendor/libc/src/solid/mod.rs /^ pub fn gets(arg1: *mut c_char) -> *mut c_char;$/;" f +getservbyname vendor/libc/src/fuchsia/mod.rs /^ pub fn getservbyname(name: *const ::c_char, proto: *const ::c_char) -> *mut servent;$/;" f +getservbyname vendor/libc/src/unix/mod.rs /^ pub fn getservbyname(name: *const ::c_char, proto: *const ::c_char) -> *mut servent;$/;" f +getservbyname vendor/winapi/src/um/winsock2.rs /^ pub fn getservbyname($/;" f +getservbyport vendor/libc/src/unix/mod.rs /^ pub fn getservbyport(port: ::c_int, proto: *const ::c_char) -> *mut servent;$/;" f +getservbyport vendor/winapi/src/um/winsock2.rs /^ pub fn getservbyport($/;" f +getservent vendor/libc/src/unix/mod.rs /^ pub fn getservent() -> *mut servent;$/;" f +getsid r_bash/src/lib.rs /^ pub fn getsid(__pid: __pid_t) -> __pid_t;$/;" f +getsid r_glob/src/lib.rs /^ pub fn getsid(__pid: __pid_t) -> __pid_t;$/;" f +getsid r_readline/src/lib.rs /^ pub fn getsid(__pid: __pid_t) -> __pid_t;$/;" f +getsid vendor/libc/src/fuchsia/mod.rs /^ pub fn getsid(pid: pid_t) -> pid_t;$/;" f +getsiginfo vendor/nix/src/sys/ptrace/linux.rs /^pub fn getsiginfo(pid: Pid) -> Result {$/;" f +getsockname vendor/libc/src/fuchsia/mod.rs /^ pub fn getsockname($/;" f +getsockname vendor/libc/src/unix/mod.rs /^ pub fn getsockname($/;" f +getsockname vendor/libc/src/vxworks/mod.rs /^ pub fn getsockname($/;" f +getsockname vendor/libc/src/windows/mod.rs /^ pub fn getsockname(s: SOCKET, name: *mut ::sockaddr, nameln: *mut ::c_int) -> ::c_int;$/;" f +getsockname vendor/nix/src/sys/socket/mod.rs /^pub fn getsockname(fd: RawFd) -> Result {$/;" f +getsockname vendor/winapi/src/um/winsock2.rs /^ pub fn getsockname($/;" f +getsockopt vendor/libc/src/fuchsia/mod.rs /^ pub fn getsockopt($/;" f +getsockopt vendor/libc/src/unix/mod.rs /^ pub fn getsockopt($/;" f +getsockopt vendor/libc/src/vxworks/mod.rs /^ pub fn getsockopt($/;" f +getsockopt vendor/libc/src/windows/mod.rs /^ pub fn getsockopt($/;" f +getsockopt vendor/nix/src/sys/socket/mod.rs /^pub fn getsockopt(fd: RawFd, opt: O) -> Result {$/;" f +getsockopt vendor/winapi/src/um/winsock2.rs /^ pub fn getsockopt($/;" f +getsockopt_impl vendor/nix/src/sys/socket/sockopt.rs /^macro_rules! getsockopt_impl {$/;" M +getspent vendor/libc/src/unix/haiku/mod.rs /^ pub fn getspent() -> *mut spwd;$/;" f +getspent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getspent() -> *mut spwd;$/;" f +getspent_r vendor/libc/src/unix/haiku/mod.rs /^ pub fn getspent_r($/;" f +getspent_r vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getspent_r($/;" f +getspnam vendor/libc/src/unix/haiku/mod.rs /^ pub fn getspnam(name: *const ::c_char) -> *mut spwd;$/;" f +getspnam vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getspnam(name: *const ::c_char) -> *mut spwd;$/;" f +getspnam_r vendor/libc/src/unix/haiku/mod.rs /^ pub fn getspnam_r($/;" f +getspnam_r vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getspnam_r($/;" f +getstr builtins_rust/printf/src/lib.rs /^unsafe fn getstr() -> *mut c_char {$/;" f +getsubopt r_bash/src/lib.rs /^ pub fn getsubopt($/;" f +getsubopt r_glob/src/lib.rs /^ pub fn getsubopt($/;" f +getsubopt r_readline/src/lib.rs /^ pub fn getsubopt($/;" f +getsubopt vendor/libc/src/solid/mod.rs /^ pub fn getsubopt($/;" f +getter input.h /^ sh_cget_func_t *getter;$/;" m struct:__anon9f26d24b0208 typeref:typename:sh_cget_func_t * +getter r_bash/src/lib.rs /^ pub getter: sh_cget_func_t,$/;" m struct:BASH_INPUT +gettext include/gettext.h /^# define gettext(/;" d +gettext lib/intl/intl-compat.c /^gettext (msgid)$/;" f +gettext lib/intl/libgnuintl.h.in /^static inline char *gettext (const char *__msgid)$/;" f typeref:typename:char * file: +gettext r_bash/src/lib.rs /^ pub fn gettext(__msgid: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +gettext.$lo lib/intl/Makefile.in /^bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomai/;" t +gettext.lo lib/intl/Makefile.in /^gettext.lo: $(srcdir)\/gettext.c$/;" t +gettext_noop include/gettext.h /^#define gettext_noop(/;" d +gettextsrcdir lib/intl/Makefile.in /^gettextsrcdir = $(datadir)\/gettext\/intl$/;" m +getthrid vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn getthrid() -> ::pid_t;$/;" f +gettid vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn gettid() -> ::pid_t;$/;" f +gettid vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn gettid() -> ::pid_t;$/;" f +gettimeofday lib/sh/gettimeofday.c /^gettimeofday (struct timeval *tv, void *tz)$/;" f typeref:typename:int +gettimeofday r_bash/src/lib.rs /^ pub fn gettimeofday(__tv: *mut timeval, __tz: __timezone_ptr_t) -> ::std::os::raw::c_int;$/;" f +gettimeofday r_glob/src/lib.rs /^ pub fn gettimeofday(__tv: *mut timeval, __tz: __timezone_ptr_t) -> ::std::os::raw::c_int;$/;" f +gettimeofday r_readline/src/lib.rs /^ pub fn gettimeofday(__tv: *mut timeval, __tz: __timezone_ptr_t) -> ::std::os::raw::c_int;$/;" f +gettimeofday vendor/libc/src/fuchsia/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::timezone) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::timezone) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/haiku/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/hermit/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::timezone) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::timezone) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::timezone) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/newlib/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/redox/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::timezone) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/unix/solarish/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/vxworks/mod.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;$/;" f +gettimeofday vendor/libc/src/wasi.rs /^ pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;$/;" f +gettimeofday.o lib/sh/Makefile.in /^gettimeofday.o: ${BASHINCDIR}\/posixtime.h$/;" t +gettimeofday.o lib/sh/Makefile.in /^gettimeofday.o: ${BUILD_DIR}\/config.h$/;" t +gettimeofday.o lib/sh/Makefile.in /^gettimeofday.o: gettimeofday.c$/;" t +getuid r_bash/src/lib.rs /^ pub fn getuid() -> __uid_t;$/;" f +getuid r_glob/src/lib.rs /^ pub fn getuid() -> __uid_t;$/;" f +getuid r_readline/src/lib.rs /^ pub fn getuid() -> __uid_t;$/;" f +getuid vendor/libc/src/fuchsia/mod.rs /^ pub fn getuid() -> uid_t;$/;" f +getuid vendor/libc/src/unix/mod.rs /^ pub fn getuid() -> uid_t;$/;" f +getuid vendor/libc/src/vxworks/mod.rs /^ pub fn getuid() -> ::uid_t;$/;" f +getuintmax builtins_rust/printf/src/lib.rs /^unsafe fn getuintmax() -> c_ulong {$/;" f +getumask r_bash/src/lib.rs /^ pub fn getumask() -> __mode_t;$/;" f +getumask r_readline/src/lib.rs /^ pub fn getumask() -> __mode_t;$/;" f +getusershell r_bash/src/lib.rs /^ pub fn getusershell() -> *mut ::std::os::raw::c_char;$/;" f +getusershell r_glob/src/lib.rs /^ pub fn getusershell() -> *mut ::std::os::raw::c_char;$/;" f +getusershell r_readline/src/lib.rs /^ pub fn getusershell() -> *mut ::std::os::raw::c_char;$/;" f +getusershell vendor/libc/src/unix/haiku/mod.rs /^ pub fn getusershell() -> *mut ::c_char;$/;" f +getutent vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getutent() -> *mut utmp;$/;" f +getutent vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getutent() -> *mut utmp;$/;" f +getutent vendor/libc/src/unix/solarish/mod.rs /^ pub fn getutent() -> *mut utmp;$/;" f +getutid vendor/libc/src/unix/solarish/mod.rs /^ pub fn getutid(u: *const utmp) -> *mut utmp;$/;" f +getutline vendor/libc/src/unix/solarish/mod.rs /^ pub fn getutline(u: *const utmp) -> *mut utmp;$/;" f +getutmp vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getutmp(ux: *const utmpx, u: *mut utmp);$/;" f +getutmp vendor/libc/src/unix/solarish/mod.rs /^ pub fn getutmp(ux: *const utmpx, u: *mut utmp);$/;" f +getutmpx vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getutmpx(u: *const utmp, ux: *mut utmpx);$/;" f +getutmpx vendor/libc/src/unix/solarish/mod.rs /^ pub fn getutmpx(u: *const utmp, ux: *mut utmpx);$/;" f +getutxent vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getutxent() -> *mut utmpx;$/;" f +getutxent vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn getutxent() -> *mut utmpx;$/;" f +getutxent vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getutxent() -> *mut utmpx;$/;" f +getutxent vendor/libc/src/unix/haiku/mod.rs /^ pub fn getutxent() -> *mut utmpx;$/;" f +getutxent vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getutxent() -> *mut utmpx;$/;" f +getutxent vendor/libc/src/unix/solarish/mod.rs /^ pub fn getutxent() -> *mut utmpx;$/;" f +getutxid vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getutxid(ut: *const utmpx) -> *mut utmpx;$/;" f +getutxid vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn getutxid(ut: *const utmpx) -> *mut utmpx;$/;" f +getutxid vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getutxid(ut: *const utmpx) -> *mut utmpx;$/;" f +getutxid vendor/libc/src/unix/haiku/mod.rs /^ pub fn getutxid(ut: *const utmpx) -> *mut utmpx;$/;" f +getutxid vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getutxid(ut: *const utmpx) -> *mut utmpx;$/;" f +getutxid vendor/libc/src/unix/solarish/mod.rs /^ pub fn getutxid(ut: *const utmpx) -> *mut utmpx;$/;" f +getutxline vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getutxline(ut: *const utmpx) -> *mut utmpx;$/;" f +getutxline vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn getutxline(ut: *const utmpx) -> *mut utmpx;$/;" f +getutxline vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getutxline(ut: *const utmpx) -> *mut utmpx;$/;" f +getutxline vendor/libc/src/unix/haiku/mod.rs /^ pub fn getutxline(ut: *const utmpx) -> *mut utmpx;$/;" f +getutxline vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn getutxline(ut: *const utmpx) -> *mut utmpx;$/;" f +getutxline vendor/libc/src/unix/solarish/mod.rs /^ pub fn getutxline(ut: *const utmpx) -> *mut utmpx;$/;" f +getutxuser vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn getutxuser(name: *const ::c_char) -> utmpx;$/;" f +getutxuser vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn getutxuser(user: *const ::c_char) -> *mut utmpx;$/;" f +getw r_bash/src/lib.rs /^ pub fn getw(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +getw r_readline/src/lib.rs /^ pub fn getw(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +getw vendor/libc/src/solid/mod.rs /^ pub fn getw(arg1: *mut FILE) -> c_int;$/;" f +getwc r_bash/src/lib.rs /^ pub fn getwc(__stream: *mut __FILE) -> wint_t;$/;" f +getwc r_glob/src/lib.rs /^ pub fn getwc(__stream: *mut __FILE) -> wint_t;$/;" f +getwc r_readline/src/lib.rs /^ pub fn getwc(__stream: *mut __FILE) -> wint_t;$/;" f +getwc_unlocked r_bash/src/lib.rs /^ pub fn getwc_unlocked(__stream: *mut __FILE) -> wint_t;$/;" f +getwc_unlocked r_glob/src/lib.rs /^ pub fn getwc_unlocked(__stream: *mut __FILE) -> wint_t;$/;" f +getwc_unlocked r_readline/src/lib.rs /^ pub fn getwc_unlocked(__stream: *mut __FILE) -> wint_t;$/;" f +getwchar r_bash/src/lib.rs /^ pub fn getwchar() -> wint_t;$/;" f +getwchar r_glob/src/lib.rs /^ pub fn getwchar() -> wint_t;$/;" f +getwchar r_readline/src/lib.rs /^ pub fn getwchar() -> wint_t;$/;" f +getwchar_unlocked r_bash/src/lib.rs /^ pub fn getwchar_unlocked() -> wint_t;$/;" f +getwchar_unlocked r_glob/src/lib.rs /^ pub fn getwchar_unlocked() -> wint_t;$/;" f +getwchar_unlocked r_readline/src/lib.rs /^ pub fn getwchar_unlocked() -> wint_t;$/;" f +getwd r_bash/src/lib.rs /^ pub fn getwd(__buf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +getwd r_glob/src/lib.rs /^ pub fn getwd(__buf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +getwd r_readline/src/lib.rs /^ pub fn getwd(__buf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +getwd vendor/libc/src/solid/mod.rs /^ pub fn getwd(arg1: *mut c_char) -> *mut c_char;$/;" f +getxattr vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn getxattr($/;" f +getxattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn getxattr($/;" f +getxattr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn getxattr($/;" f +getxattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn getxattr($/;" f +ghost vendor/once_cell/src/race.rs /^ ghost: PhantomData>>,$/;" m struct:once_box::OnceBox +gid builtins_rust/ulimit/src/lib.rs /^ gid: gid_t,$/;" m struct:user_info +gid r_bash/src/lib.rs /^ pub gid: gid_t,$/;" m struct:user_info +gid shell.h /^ gid_t gid, egid;$/;" m struct:user_info typeref:typename:gid_t +gid_t builtins_rust/ulimit/src/lib.rs /^pub type gid_t = __gid_t;$/;" t +gid_t r_bash/src/lib.rs /^pub type gid_t = __gid_t;$/;" t +gid_t r_glob/src/lib.rs /^pub type gid_t = __gid_t;$/;" t +gid_t r_readline/src/lib.rs /^pub type gid_t = __gid_t;$/;" t +gid_t vendor/libc/src/fuchsia/mod.rs /^pub type gid_t = u32;$/;" t +gid_t vendor/libc/src/solid/mod.rs /^pub type gid_t = __gid_t;$/;" t +gid_t vendor/libc/src/vxworks/mod.rs /^pub type gid_t = ::c_ushort;$/;" t +gid_t vendor/libc/src/wasi.rs /^pub type gid_t = u32;$/;" t +give_terminal_to jobs.c /^give_terminal_to (pgrp, force)$/;" f +give_terminal_to nojobs.c /^give_terminal_to (pgrp, force)$/;" f +give_terminal_to r_bash/src/lib.rs /^ pub fn give_terminal_to(arg1: pid_t, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +give_terminal_to r_jobs/src/lib.rs /^pub unsafe extern "C" fn give_terminal_to(mut pgrp: pid_t,mut force: c_int) -> c_int $/;" f +gl vendor/winapi/src/um/gl/mod.rs /^#[cfg(feature = "gl-gl")] pub mod gl;$/;" n +gl vendor/winapi/src/um/mod.rs /^pub mod gl;$/;" n +glAccum vendor/winapi/src/um/gl/gl.rs /^ pub fn glAccum($/;" f +glAlphaFunc vendor/winapi/src/um/gl/gl.rs /^ pub fn glAlphaFunc($/;" f +gl_AC_HEADER_INTTYPES_H m4/inttypes_h.m4 /^AC_DEFUN([gl_AC_HEADER_INTTYPES_H],$/;" m +gl_AC_HEADER_STDINT_H m4/stdint_h.m4 /^AC_DEFUN([gl_AC_HEADER_STDINT_H],$/;" m +gl_AC_TYPE_UINTMAX_T m4/uintmax_t.m4 /^AC_DEFUN([gl_AC_TYPE_UINTMAX_T],$/;" m +gl_DISABLE_THREADS m4/threadlib.m4 /^AC_DEFUN([gl_DISABLE_THREADS], [$/;" m +gl_EXTERN_INLINE m4/extern-inline.m4 /^AC_DEFUN([gl_EXTERN_INLINE],$/;" m +gl_FCNTL_O_FLAGS m4/fcntl-o.m4 /^AC_DEFUN([gl_FCNTL_O_FLAGS],$/;" m +gl_GLIBC21 m4/glibc21.m4 /^AC_DEFUN([gl_GLIBC21],$/;" m +gl_HOST_CPU_C_ABI m4/host-cpu-c-abi.m4 /^AC_DEFUN([gl_HOST_CPU_C_ABI],$/;" m +gl_HOST_CPU_C_ABI_32BIT m4/host-cpu-c-abi.m4 /^AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT],$/;" m +gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION m4/inttypes.m4 /^AC_DEFUN([gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION],$/;" m +gl_INTTYPES_H m4/inttypes.m4 /^AC_DEFUN([gl_INTTYPES_H],$/;" m +gl_INTTYPES_H_DEFAULTS m4/inttypes.m4 /^AC_DEFUN([gl_INTTYPES_H_DEFAULTS],$/;" m +gl_INTTYPES_INCOMPLETE m4/inttypes.m4 /^AC_DEFUN_ONCE([gl_INTTYPES_INCOMPLETE],$/;" m +gl_INTTYPES_MODULE_INDICATOR m4/inttypes.m4 /^AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR],$/;" m +gl_INTTYPES_PRI_SCN m4/inttypes.m4 /^AC_DEFUN([gl_INTTYPES_PRI_SCN],$/;" m +gl_LOCK m4/lock.m4 /^AC_DEFUN([gl_LOCK],$/;" m +gl_PREREQ_LOCK m4/lock.m4 /^AC_DEFUN([gl_PREREQ_LOCK], [:])$/;" m +gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER m4/pthread_rwlock_rdlock.m4 /^AC_DEFUN([gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER],$/;" m +gl_SIZE_MAX m4/size_max.m4 /^AC_DEFUN([gl_SIZE_MAX],$/;" m +gl_THREADLIB m4/threadlib.m4 /^AC_DEFUN([gl_THREADLIB],$/;" m +gl_THREADLIB_BODY m4/threadlib.m4 /^AC_DEFUN([gl_THREADLIB_BODY],$/;" m +gl_THREADLIB_EARLY m4/threadlib.m4 /^AC_DEFUN([gl_THREADLIB_EARLY],$/;" m +gl_THREADLIB_EARLY_BODY m4/threadlib.m4 /^AC_DEFUN([gl_THREADLIB_EARLY_BODY],$/;" m +gl_TYPE_WINT_T_PREREQ m4/wint_t.m4 /^AC_DEFUN([gl_TYPE_WINT_T_PREREQ],$/;" m +gl_VISIBILITY m4/visibility.m4 /^AC_DEFUN([gl_VISIBILITY],$/;" m +gl_XSIZE m4/xsize.m4 /^AC_DEFUN([gl_XSIZE],$/;" m +gl_iconv_AC_DEFUN m4/iconv.m4 /^m4_define([gl_iconv_AC_DEFUN],$/;" d +glean_key_from_name lib/readline/bind.c /^glean_key_from_name (char *name)$/;" f typeref:typename:int file: +glob vendor/libc/src/fuchsia/mod.rs /^ pub fn glob($/;" f +glob vendor/libc/src/unix/bsd/mod.rs /^ pub fn glob($/;" f +glob vendor/libc/src/unix/haiku/mod.rs /^ pub fn glob($/;" f +glob vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn glob($/;" f +glob vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn glob($/;" f +glob vendor/libc/src/unix/solarish/mod.rs /^ pub fn glob($/;" f +glob-asciiranges-default configure.ac /^AC_ARG_ENABLE(glob-asciiranges-default, AC_HELP_STRING([--enable-glob-asciiranges-default], [for/;" e +glob.o lib/glob/Makefile.in /^glob.o: $(BASHINCDIR)\/posixstat.h $(BASHINCDIR)\/memalloc.h$/;" t +glob.o lib/glob/Makefile.in /^glob.o: $(BASHINCDIR)\/shmbutil.h$/;" t +glob.o lib/glob/Makefile.in /^glob.o: $(BUILD_DIR)\/config.h$/;" t +glob.o lib/glob/Makefile.in /^glob.o: $(topdir)\/bashtypes.h $(BASHINCDIR)\/ansi_stdlib.h $(topdir)\/bashansi.h$/;" t +glob.o lib/glob/Makefile.in /^glob.o: $(topdir)\/shell.h $(BUILD_DIR)\/pathnames.h$/;" t +glob.o lib/glob/Makefile.in /^glob.o: $(topdir)\/xmalloc.h$/;" t +glob.o lib/glob/Makefile.in /^glob.o: glob.c$/;" t +glob.o lib/glob/Makefile.in /^glob.o: glob_loop.c$/;" t +glob.o lib/glob/Makefile.in /^glob.o: strmatch.h glob.h$/;" t +glob64 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn glob64($/;" f +glob64 vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^ pub fn glob64($/;" f +glob_always_skip_dot_and_dotdot lib/glob/glob.c /^int glob_always_skip_dot_and_dotdot = 0;$/;" v typeref:typename:int +glob_asciirange builtins_rust/shopt/src/lib.rs /^ static mut glob_asciirange: i32;$/;" v +glob_asciirange lib/glob/smatch.c /^int glob_asciirange = GLOBASCII_DEFAULT;$/;" v typeref:typename:int +glob_char_p pathexp.c /^glob_char_p (s)$/;" f +glob_char_p r_bash/src/lib.rs /^ pub fn glob_char_p(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +glob_complete_word bashline.c /^glob_complete_word (text, state)$/;" f file: +glob_dir_to_array lib/glob/glob.c /^glob_dir_to_array (dir, array, flags)$/;" f file: +glob_dirscan lib/glob/gmisc.c /^glob_dirscan (pat, dirsep)$/;" f +glob_dot_filenames builtins_rust/shopt/src/lib.rs /^ static mut glob_dot_filenames: i32;$/;" v +glob_dot_filenames pathexp.c /^int glob_dot_filenames;$/;" v typeref:typename:int +glob_dot_filenames r_bash/src/lib.rs /^ pub static mut glob_dot_filenames: ::std::os::raw::c_int;$/;" v +glob_error_return lib/glob/glob.c /^char *glob_error_return;$/;" v typeref:typename:char * +glob_error_return r_bash/src/lib.rs /^ pub static mut glob_error_return: *mut ::std::os::raw::c_char;$/;" v +glob_error_return r_glob/src/lib.rs /^ pub static mut glob_error_return: *mut ::std::os::raw::c_char;$/;" v +glob_expand_word_list subst.c /^glob_expand_word_list (tlist, eflags)$/;" f file: +glob_filename lib/glob/glob.c /^glob_filename (pathname, flags)$/;" f +glob_filename r_glob/src/lib.rs /^ pub fn glob_filename($/;" f +glob_ignore_case builtins_rust/shopt/src/lib.rs /^ static mut glob_ignore_case: i32;$/;" v +glob_ignore_case lib/glob/glob.c /^int glob_ignore_case = 0;$/;" v typeref:typename:int +glob_ignore_case r_glob/src/lib.rs /^ pub static mut glob_ignore_case: ::std::os::raw::c_int;$/;" v +glob_name_is_acceptable pathexp.c /^glob_name_is_acceptable (name)$/;" f file: +glob_pattern_p builtins_rust/help/src/lib.rs /^ fn glob_pattern_p(pattern: *const c_char) -> i32;$/;" f +glob_pattern_p lib/glob/glob.c /^glob_pattern_p (pattern)$/;" f +glob_pattern_p r_glob/src/lib.rs /^ pub fn glob_pattern_p(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +glob_star builtins_rust/shopt/src/lib.rs /^ static mut glob_star: i32;$/;" v +glob_star pathexp.c /^int glob_star = 0;$/;" v typeref:typename:int +glob_star r_bash/src/lib.rs /^ pub static mut glob_star: ::std::os::raw::c_int;$/;" v +glob_testdir lib/glob/glob.c /^glob_testdir (dir, flags)$/;" f file: +glob_vector lib/glob/glob.c /^glob_vector (pat, dir, flags)$/;" f +glob_vector r_glob/src/lib.rs /^ pub fn glob_vector($/;" f +global_command r_bash/src/lib.rs /^ pub static mut global_command: *mut COMMAND;$/;" v +global_command r_glob/src/lib.rs /^ pub static mut global_command: *mut COMMAND;$/;" v +global_command r_readline/src/lib.rs /^ pub static mut global_command: *mut COMMAND;$/;" v +global_command shell.c /^COMMAND *global_command = (COMMAND *)NULL;$/;" v typeref:typename:COMMAND * +global_error_list list.c /^GENERIC_LIST global_error_list;$/;" v typeref:typename:GENERIC_LIST +global_variables builtins_rust/declare/src/lib.rs /^ static global_variables: *mut VAR_CONTEXT;$/;" v +global_variables r_bash/src/lib.rs /^ pub static mut global_variables: *mut VAR_CONTEXT;$/;" v +global_variables variables.c /^VAR_CONTEXT *global_variables = (VAR_CONTEXT *)NULL;$/;" v typeref:typename:VAR_CONTEXT * +globfree vendor/libc/src/fuchsia/mod.rs /^ pub fn globfree(pglob: *mut ::glob_t);$/;" f +globfree vendor/libc/src/unix/bsd/mod.rs /^ pub fn globfree(pglob: *mut ::glob_t);$/;" f +globfree vendor/libc/src/unix/haiku/mod.rs /^ pub fn globfree(pglob: *mut ::glob_t);$/;" f +globfree vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn globfree(pglob: *mut ::glob_t);$/;" f +globfree vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn globfree(pglob: *mut ::glob_t);$/;" f +globfree vendor/libc/src/unix/solarish/mod.rs /^ pub fn globfree(pglob: *mut ::glob_t);$/;" f +globfree64 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn globfree64(pglob: *mut glob64_t);$/;" f +globfree64 vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^ pub fn globfree64(pglob: *mut glob64_t);$/;" f +globignore pathexp.c /^static struct ignorevar globignore =$/;" v typeref:struct:ignorevar file: +globorig bashline.c /^static char *globorig;$/;" v typeref:typename:char * file: +globpat builtins_rust/complete/src/lib.rs /^ globpat: *mut c_char,$/;" m struct:COMPSPEC +globpat pcomplete.h /^ char *globpat;$/;" m struct:compspec typeref:typename:char * +globpat r_bash/src/lib.rs /^ pub globpat: *mut ::std::os::raw::c_char,$/;" m struct:compspec +globtext bashline.c /^static char *globtext;$/;" v typeref:typename:char * file: +globval lib/glob/glob.c /^struct globval$/;" s file: +glue_prefix_and_suffix lib/readline/tilde.c /^glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind)$/;" f typeref:typename:char * file: +glue_prefix_and_suffix lib/tilde/tilde.c /^glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind)$/;" f typeref:typename:char * file: +gmisc.o lib/glob/Makefile.in /^gmisc.o: $(BASHINCDIR)\/shmbutil.h$/;" t +gmisc.o lib/glob/Makefile.in /^gmisc.o: $(BUILD_DIR)\/config.h$/;" t +gmisc.o lib/glob/Makefile.in /^gmisc.o: $(topdir)\/bashtypes.h $(BASHINCDIR)\/ansi_stdlib.h $(topdir)\/bashansi.h$/;" t +gmisc.o lib/glob/Makefile.in /^gmisc.o: gm_loop.c$/;" t +gmisc.o lib/glob/Makefile.in /^gmisc.o: gmisc.c$/;" t +gmtime r_bash/src/lib.rs /^ pub fn gmtime(__timer: *const time_t) -> *mut tm;$/;" f +gmtime r_readline/src/lib.rs /^ pub fn gmtime(__timer: *const time_t) -> *mut tm;$/;" f +gmtime vendor/libc/src/fuchsia/mod.rs /^ pub fn gmtime(time_p: *const time_t) -> *mut tm;$/;" f +gmtime vendor/libc/src/solid/mod.rs /^ pub fn gmtime(arg1: *const time_t) -> *mut tm;$/;" f +gmtime vendor/libc/src/unix/mod.rs /^ pub fn gmtime(time_p: *const time_t) -> *mut tm;$/;" f +gmtime vendor/libc/src/vxworks/mod.rs /^ pub fn gmtime(time_p: *const time_t) -> *mut tm;$/;" f +gmtime vendor/libc/src/wasi.rs /^ pub fn gmtime(a: *const time_t) -> *mut tm;$/;" f +gmtime_r r_bash/src/lib.rs /^ pub fn gmtime_r(__timer: *const time_t, __tp: *mut tm) -> *mut tm;$/;" f +gmtime_r r_readline/src/lib.rs /^ pub fn gmtime_r(__timer: *const time_t, __tp: *mut tm) -> *mut tm;$/;" f +gmtime_r vendor/libc/src/fuchsia/mod.rs /^ pub fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;$/;" f +gmtime_r vendor/libc/src/solid/mod.rs /^ pub fn gmtime_r(arg1: *const time_t, arg2: *mut tm) -> *mut tm;$/;" f +gmtime_r vendor/libc/src/unix/mod.rs /^ pub fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;$/;" f +gmtime_r vendor/libc/src/vxworks/mod.rs /^ pub fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;$/;" f +gmtime_r vendor/libc/src/wasi.rs /^ pub fn gmtime_r(a: *const time_t, b: *mut tm) -> *mut tm;$/;" f +gmtime_s vendor/libc/src/windows/mod.rs /^ pub fn gmtime_s(destTime: *mut tm, srcTime: *const time_t) -> ::c_int;$/;" f +gnu-malloc configure.ac /^AC_ARG_WITH(gnu-malloc, AC_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), o/;" w +gnu_error_format builtins_rust/shopt/src/lib.rs /^ static mut gnu_error_format: i32;$/;" v +gnu_error_format error.c /^int gnu_error_format = 0;$/;" v typeref:typename:int +gnu_get_libc_release vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn gnu_get_libc_release() -> *const ::c_char;$/;" f +gnu_get_libc_version vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn gnu_get_libc_version() -> *const ::c_char;$/;" f +gobble_line lib/termcap/termcap.c /^gobble_line (fd, bufp, append_end)$/;" f file: +got_tty_state nojobs.c /^static int got_tty_state;$/;" v typeref:typename:int file: +gp_offset r_bash/src/lib.rs /^ pub gp_offset: ::std::os::raw::c_uint,$/;" m struct:__va_list_tag +gp_offset r_glob/src/lib.rs /^ pub gp_offset: ::std::os::raw::c_uint,$/;" m struct:__va_list_tag +gp_offset r_readline/src/lib.rs /^ pub gp_offset: ::std::os::raw::c_uint,$/;" m struct:__va_list_tag +grantpt r_bash/src/lib.rs /^ pub fn grantpt(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +grantpt r_glob/src/lib.rs /^ pub fn grantpt(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +grantpt r_readline/src/lib.rs /^ pub fn grantpt(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +grantpt vendor/libc/src/fuchsia/mod.rs /^ pub fn grantpt(fd: ::c_int) -> ::c_int;$/;" f +grantpt vendor/libc/src/unix/mod.rs /^ pub fn grantpt(fd: ::c_int) -> ::c_int;$/;" f +grantpt vendor/nix/src/pty.rs /^pub fn grantpt(fd: &PtyMaster) -> Result<()> {$/;" f +greater_or_equal lib/intl/plural-exp.h /^ greater_or_equal, \/* Comparison. *\/$/;" e enum:expression::__anon93874cf10103 +greater_than lib/intl/plural-exp.h /^ greater_than, \/* Comparison. *\/$/;" e enum:expression::__anon93874cf10103 +greg_t builtins_rust/wait/src/signal.rs /^pub type greg_t = ::std::os::raw::c_longlong;$/;" t +greg_t r_bash/src/lib.rs /^pub type greg_t = ::std::os::raw::c_longlong;$/;" t +greg_t r_glob/src/lib.rs /^pub type greg_t = ::std::os::raw::c_longlong;$/;" t +greg_t r_readline/src/lib.rs /^pub type greg_t = ::std::os::raw::c_longlong;$/;" t +greg_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/aarch64.rs /^pub type greg_t = u64;$/;" t +greg_t vendor/libc/src/unix/linux_like/android/b32/arm.rs /^pub type greg_t = i32;$/;" t +greg_t vendor/libc/src/unix/linux_like/android/b32/x86/mod.rs /^pub type greg_t = i32;$/;" t +greg_t vendor/libc/src/unix/linux_like/android/b64/riscv64/mod.rs /^pub type greg_t = i64;$/;" t +greg_t vendor/libc/src/unix/linux_like/android/b64/x86_64/mod.rs /^pub type greg_t = i64;$/;" t +greg_t vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs /^pub type greg_t = i32;$/;" t +greg_t vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^pub type greg_t = u64;$/;" t +greg_t vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^pub type greg_t = i64;$/;" t +greg_t vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs /^pub type greg_t = u64;$/;" t +greg_t vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs /^pub type greg_t = i64;$/;" t +greg_t vendor/libc/src/unix/solarish/x86_64.rs /^pub type greg_t = ::c_long;$/;" t +gregs builtins_rust/wait/src/signal.rs /^ pub gregs: gregset_t,$/;" m struct:mcontext_t +gregs r_bash/src/lib.rs /^ pub gregs: gregset_t,$/;" m struct:mcontext_t +gregs r_glob/src/lib.rs /^ pub gregs: gregset_t,$/;" m struct:mcontext_t +gregs r_readline/src/lib.rs /^ pub gregs: gregset_t,$/;" m struct:mcontext_t +gregset_t builtins_rust/wait/src/signal.rs /^pub type gregset_t = [greg_t; 23usize];$/;" t +gregset_t r_bash/src/lib.rs /^pub type gregset_t = [greg_t; 23usize];$/;" t +gregset_t r_glob/src/lib.rs /^pub type gregset_t = [greg_t; 23usize];$/;" t +gregset_t r_readline/src/lib.rs /^pub type gregset_t = [greg_t; 23usize];$/;" t +gro vendor/nix/test/sys/test_socket.rs /^ pub fn gro() {$/;" f module:recvfrom::udp_offload +group vendor/syn/src/buffer.rs /^ pub fn group(mut self, delim: Delimiter) -> Option<(Cursor<'a>, Span, Cursor<'a>)> {$/;" P implementation:Cursor +group vendor/syn/src/lib.rs /^mod group;$/;" n +group_array general.c /^static GETGROUPS_T *group_array = (GETGROUPS_T *)NULL;$/;" v typeref:typename:GETGROUPS_T * file: +group_com builtins_rust/cd/src/lib.rs /^pub struct group_com {$/;" s +group_com builtins_rust/command/src/lib.rs /^pub struct group_com {$/;" s +group_com builtins_rust/common/src/lib.rs /^pub struct group_com {$/;" s +group_com builtins_rust/complete/src/lib.rs /^pub struct group_com {$/;" s +group_com builtins_rust/declare/src/lib.rs /^pub struct group_com {$/;" s +group_com builtins_rust/fc/src/lib.rs /^pub struct group_com {$/;" s +group_com builtins_rust/fg_bg/src/lib.rs /^pub struct group_com {$/;" s +group_com builtins_rust/getopts/src/lib.rs /^pub struct group_com {$/;" s +group_com builtins_rust/jobs/src/lib.rs /^pub struct group_com {$/;" s +group_com builtins_rust/kill/src/intercdep.rs /^pub struct group_com {$/;" s +group_com builtins_rust/pushd/src/lib.rs /^pub struct group_com {$/;" s +group_com builtins_rust/setattr/src/intercdep.rs /^pub struct group_com {$/;" s +group_com builtins_rust/source/src/lib.rs /^pub struct group_com {$/;" s +group_com builtins_rust/type/src/lib.rs /^pub struct group_com {$/;" s +group_com command.h /^typedef struct group_com {$/;" s +group_com r_bash/src/lib.rs /^pub struct group_com {$/;" s +group_com r_glob/src/lib.rs /^pub struct group_com {$/;" s +group_com r_readline/src/lib.rs /^pub struct group_com {$/;" s +group_command parse.y /^group_command: '{' compound_list '}'$/;" l +group_command_nesting print_cmd.c /^static int group_command_nesting;$/;" v typeref:typename:int file: +group_command_nesting r_print_cmd/src/lib.rs /^static mut group_command_nesting:c_int = 0;$/;" v +group_member general.c /^group_member (gid_t gid)$/;" f typeref:typename:int +group_member r_bash/src/lib.rs /^ pub fn group_member(__gid: __gid_t) -> ::std::os::raw::c_int;$/;" f +group_member r_glob/src/lib.rs /^ pub fn group_member(__gid: __gid_t) -> ::std::os::raw::c_int;$/;" f +group_member r_readline/src/lib.rs /^ pub fn group_member(__gid: __gid_t) -> ::std::os::raw::c_int;$/;" f +grouping lib/sh/snprintf.c /^static char *grouping;$/;" v typeref:typename:char * file: +grouping r_bash/src/lib.rs /^ pub grouping: *mut ::std::os::raw::c_char,$/;" m struct:lconv +groupnum lib/sh/snprintf.c /^groupnum (s)$/;" f file: +groups vendor/nix/src/sys/socket/addr.rs /^ pub const fn groups(&self) -> u32 {$/;" P implementation:netlink::NetlinkAddr +grow vendor/smallvec/src/lib.rs /^ pub fn grow(&mut self, new_cap: usize) {$/;" P implementation:SmallVec +grow_spilled_same_size vendor/smallvec/src/tests.rs /^fn grow_spilled_same_size() {$/;" f +grow_to_shrink vendor/smallvec/src/tests.rs /^fn grow_to_shrink() {$/;" f +growth_rate builtins/mkbuiltins.c /^ int growth_rate; \/* How fast to grow. *\/$/;" m struct:__anon69e836710108 typeref:typename:int file: +gs builtins_rust/wait/src/signal.rs /^ pub gs: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +gs r_bash/src/lib.rs /^ pub gs: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +gs r_glob/src/lib.rs /^ pub gs: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +gs r_readline/src/lib.rs /^ pub gs: ::std::os::raw::c_ushort,$/;" m struct:sigcontext +gs_charindex builtins/getopt.h /^ int gs_charindex;$/;" m struct:sh_getopt_state typeref:typename:int +gs_charindex r_bash/src/lib.rs /^ pub gs_charindex: ::std::os::raw::c_int,$/;" m struct:sh_getopt_state +gs_curopt builtins/getopt.h /^ int gs_curopt;$/;" m struct:sh_getopt_state typeref:typename:int +gs_curopt r_bash/src/lib.rs /^ pub gs_curopt: ::std::os::raw::c_int,$/;" m struct:sh_getopt_state +gs_flags builtins/getopt.h /^ int gs_flags;$/;" m struct:sh_getopt_state typeref:typename:int +gs_flags r_bash/src/lib.rs /^ pub gs_flags: ::std::os::raw::c_int,$/;" m struct:sh_getopt_state +gs_nextchar builtins/getopt.h /^ char *gs_nextchar;$/;" m struct:sh_getopt_state typeref:typename:char * +gs_nextchar r_bash/src/lib.rs /^ pub gs_nextchar: *mut ::std::os::raw::c_char,$/;" m struct:sh_getopt_state +gs_optarg builtins/getopt.h /^ char *gs_optarg;$/;" m struct:sh_getopt_state typeref:typename:char * +gs_optarg r_bash/src/lib.rs /^ pub gs_optarg: *mut ::std::os::raw::c_char,$/;" m struct:sh_getopt_state +gs_optind builtins/getopt.h /^ int gs_optind;$/;" m struct:sh_getopt_state typeref:typename:int +gs_optind r_bash/src/lib.rs /^ pub gs_optind: ::std::os::raw::c_int,$/;" m struct:sh_getopt_state +gsignal builtins_rust/wait/src/signal.rs /^ pub fn gsignal(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +gsignal r_bash/src/lib.rs /^ pub fn gsignal(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +gsignal r_glob/src/lib.rs /^ pub fn gsignal(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +gsignal r_readline/src/lib.rs /^ pub fn gsignal(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +gso vendor/nix/test/sys/test_socket.rs /^ pub fn gso() {$/;" f module:recvfrom::udp_offload +gt_FUNC_USELOCALE m4/intl-thread-locale.m4 /^AC_DEFUN([gt_FUNC_USELOCALE],$/;" m +gt_GLIBC2 m4/glibc2.m4 /^AC_DEFUN([gt_GLIBC2],$/;" m +gt_GL_ATTRIBUTE m4/intl.m4 /^AC_DEFUN([gt_GL_ATTRIBUTE], [$/;" m +gt_INTDIV0 m4/intdiv0.m4 /^AC_DEFUN([gt_INTDIV0],$/;" m +gt_INTL_MACOSX m4/intlmacosx.m4 /^AC_DEFUN([gt_INTL_MACOSX],$/;" m +gt_INTL_SUBDIR_CORE m4/intl.m4 /^AC_DEFUN([gt_INTL_SUBDIR_CORE],$/;" m +gt_INTL_THREAD_LOCALE_NAME m4/intl-thread-locale.m4 /^AC_DEFUN([gt_INTL_THREAD_LOCALE_NAME],$/;" m +gt_INTTYPES_PRI m4/inttypes-pri.m4 /^AC_DEFUN([gt_INTTYPES_PRI],$/;" m +gt_LC_MESSAGES m4/lcmessage.m4 /^AC_DEFUN([gt_LC_MESSAGES],$/;" m +gt_NEEDS_INIT m4/gettext.m4 /^m4_define([gt_NEEDS_INIT],$/;" d +gt_PRINTF_POSIX m4/printf-posix.m4 /^AC_DEFUN([gt_PRINTF_POSIX],$/;" m +gt_TYPE_INTMAX_T m4/intmax.m4 /^AC_DEFUN([gt_TYPE_INTMAX_T],$/;" m +gt_TYPE_WCHAR_T m4/wchar_t.m4 /^AC_DEFUN([gt_TYPE_WCHAR_T],$/;" m +gt_TYPE_WINT_T m4/wint_t.m4 /^AC_DEFUN([gt_TYPE_WINT_T],$/;" m +guess_category_value lib/intl/dcigettext.c /^guess_category_value (category, categoryname)$/;" f file: +guiddef vendor/winapi/src/shared/mod.rs /^pub mod guiddef;$/;" n +h lib/malloc/alloca.c /^ } h;$/;" m union:hdr typeref:struct:hdr::__anond018e22f0108 file: +h variables.h /^ HASH_TABLE *h; \/* associative array *\/$/;" m union:_value typeref:typename:HASH_TABLE * +h vendor/async-trait/tests/test.rs /^ async fn h(); \/\/ do not chain$/;" P interface:issue28::Trait3 +h_errno vendor/winapi/src/um/winsock2.rs /^pub unsafe fn h_errno() -> c_int {$/;" f +hack_braces_completion bracecomp.c /^hack_braces_completion (names)$/;" f file: +hack_special_boolean_var lib/readline/bind.c /^hack_special_boolean_var (int i)$/;" f typeref:typename:void file: +haiku_constant vendor/libc/src/unix/haiku/native.rs /^macro_rules! haiku_constant {$/;" M +handle builtins.h /^ char *handle; \/* for future use *\/$/;" m struct:builtin typeref:typename:char * +handle builtins_rust/common/src/lib.rs /^ pub handle: *mut c_char,$/;" m struct:builtin +handle builtins_rust/enable/src/lib.rs /^ pub handle: *mut libc::c_char,$/;" m struct:builtin +handle builtins_rust/help/src/lib.rs /^ handle: *mut libc::c_char,$/;" m struct:builtin +handle r_bash/src/lib.rs /^ pub handle: *mut ::std::os::raw::c_char,$/;" m struct:builtin +handle vendor/async-trait/tests/test.rs /^ async fn handle(&self) {$/;" P implementation:issue81::Enum +handle vendor/async-trait/tests/test.rs /^ async fn handle(&self);$/;" P interface:issue81::Trait +handle vendor/futures-util/src/io/split.rs /^ handle: BiLock,$/;" m struct:ReadHalf +handle vendor/futures-util/src/io/split.rs /^ handle: BiLock,$/;" m struct:WriteHalf +handle vendor/libloading/src/os/unix/mod.rs /^ handle: *mut raw::c_void$/;" m struct:Library +handle_bytes r_bash/src/lib.rs /^ pub handle_bytes: ::std::os::raw::c_uint,$/;" m struct:file_handle +handle_parser_directive lib/readline/bind.c /^handle_parser_directive (char *statement)$/;" f typeref:typename:int file: +handle_sigalarm vendor/nix/test/test_timer.rs /^pub extern "C" fn handle_sigalarm(raw_signal: libc::c_int) {$/;" f +handle_t vendor/winapi/src/shared/rpcdce.rs /^pub type handle_t = RPC_BINDING_HANDLE;$/;" t +handle_type r_bash/src/lib.rs /^ pub handle_type: ::std::os::raw::c_int,$/;" m struct:file_handle +handleapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "handleapi")] pub mod handleapi;$/;" n +handler vendor/nix/test/sys/test_signal.rs /^ extern "C" fn handler(_: ::libc::c_int) {}$/;" f function:test_old_sigaction_flags +handlers builtins/mkbuiltins.c /^HANDLER_ENTRY handlers[] = {$/;" v typeref:typename:HANDLER_ENTRY[] +hangup_all_jobs jobs.c /^hangup_all_jobs ()$/;" f typeref:typename:void +hangup_all_jobs r_bash/src/lib.rs /^ pub fn hangup_all_jobs();$/;" f +hangup_all_jobs r_jobs/src/lib.rs /^pub unsafe extern "C" fn hangup_all_jobs() {$/;" f +harry_len bashline.c /^static int harry_len;$/;" v typeref:typename:int file: +harry_size bashline.c /^static int harry_size;$/;" v typeref:typename:int file: +has_backtrace vendor/thiserror-impl/src/prop.rs /^ pub(crate) fn has_backtrace(&self) -> bool {$/;" P implementation:Enum +has_bonus_display vendor/thiserror-impl/src/attr.rs /^ pub has_bonus_display: bool,$/;" m struct:Display +has_bound vendor/async-trait/src/expand.rs /^fn has_bound(supertraits: &Supertraits, marker: &Ident) -> bool {$/;" f +has_command vendor/pin-project-lite/tests/expandtest.rs /^fn has_command(command: &[&str]) -> bool {$/;" f +has_data vendor/libc/src/unix/haiku/native.rs /^ pub fn has_data(thread: thread_id) -> bool;$/;" f +has_display vendor/thiserror-impl/src/prop.rs /^ pub(crate) fn has_display(&self) -> bool {$/;" P implementation:Enum +has_message vendor/fluent-bundle/src/bundle.rs /^ pub fn has_message(&self, id: &str) -> bool$/;" P implementation:FluentBundle +has_self_in_block vendor/async-trait/src/receiver.rs /^pub fn has_self_in_block(block: &mut Block) -> bool {$/;" f +has_self_in_sig vendor/async-trait/src/receiver.rs /^pub fn has_self_in_sig(sig: &mut Signature) -> bool {$/;" f +has_self_in_token_stream vendor/async-trait/src/receiver.rs /^fn has_self_in_token_stream(tokens: TokenStream) -> bool {$/;" f +has_source vendor/thiserror-impl/src/prop.rs /^ pub(crate) fn has_source(&self) -> bool {$/;" P implementation:Enum +has_variant vendor/unic-langid-impl/src/lib.rs /^ pub fn has_variant(&self, variant: subtags::Variant) -> bool {$/;" P implementation:LanguageIdentifier +hash vendor/bitflags/src/lib.rs /^ fn hash(t: &T) -> u64 {$/;" f module:tests +hash vendor/memchr/src/memmem/rabinkarp.rs /^ hash: Hash,$/;" m struct:NeedleHash +hash vendor/nix/src/sys/socket/addr.rs /^ fn hash(&self, s: &mut H) {$/;" P implementation:alg::AlgAddr +hash vendor/nix/src/sys/socket/addr.rs /^ fn hash(&self, s: &mut H) {$/;" P implementation:vsock::VsockAddr +hash vendor/nix/src/sys/socket/addr.rs /^ fn hash(&self, s: &mut H) {$/;" P implementation:SockaddrStorage +hash vendor/nix/src/sys/socket/addr.rs /^ fn hash(&self, s: &mut H) {$/;" P implementation:UnixAddr +hash vendor/proc-macro2/src/lib.rs /^ fn hash(&self, hasher: &mut H) {$/;" P implementation:Ident +hash vendor/rustc-hash/src/lib.rs /^ hash: usize,$/;" m struct:FxHasher +hash vendor/smallvec/src/lib.rs /^ fn hash(&self, state: &mut H) {$/;" f +hash vendor/syn/src/expr.rs /^ fn hash(&self, state: &mut H) {$/;" P implementation:Index +hash vendor/syn/src/expr.rs /^ fn hash(&self, state: &mut H) {$/;" P implementation:Member +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, _state: &mut H)$/;" P implementation:TypeInfer +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, _state: &mut H)$/;" P implementation:TypeNever +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, _state: &mut H)$/;" P implementation:UseGlob +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, _state: &mut H)$/;" P implementation:VisCrate +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, _state: &mut H)$/;" P implementation:VisPublic +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Abi +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:AngleBracketedGenericArguments +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Arm +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:AttrStyle +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Attribute +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:BareFnArg +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:BinOp +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Binding +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Block +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:BoundLifetimes +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ConstParam +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Constraint +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Data +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:DataEnum +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:DataStruct +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:DataUnion +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:DeriveInput +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Expr +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprArray +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprAssign +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprAssignOp +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprAsync +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprAwait +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprBinary +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprBlock +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprBox +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprBreak +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprCall +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprCast +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprClosure +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprContinue +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprField +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprForLoop +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprGroup +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprIf +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprIndex +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprLet +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprLit +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprLoop +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprMacro +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprMatch +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprMethodCall +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprParen +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprPath +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprRange +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprReference +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprRepeat +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprReturn +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprStruct +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprTry +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprTryBlock +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprTuple +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprType +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprUnary +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprUnsafe +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprWhile +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ExprYield +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Field +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:FieldPat +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:FieldValue +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Fields +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:FieldsNamed +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:FieldsUnnamed +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:File +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:FnArg +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ForeignItem +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ForeignItemFn +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ForeignItemMacro +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ForeignItemStatic +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ForeignItemType +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:GenericArgument +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:GenericMethodArgument +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:GenericParam +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Generics +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ImplItem +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ImplItemConst +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ImplItemMacro +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ImplItemMethod +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ImplItemType +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Item +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemConst +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemEnum +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemExternCrate +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemFn +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemForeignMod +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemImpl +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemMacro +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemMacro2 +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemMod +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemStatic +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemStruct +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemTrait +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemTraitAlias +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemType +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemUnion +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ItemUse +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Label +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:LifetimeDef +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Lit +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:LitBool +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Local +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Macro +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:MacroDelimiter +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Meta +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:MetaList +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:MetaNameValue +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:MethodTurbofish +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:NestedMeta +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ParenthesizedGenericArguments +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Pat +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatBox +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatIdent +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatLit +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatMacro +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatOr +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatPath +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatRange +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatReference +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatRest +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatSlice +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatStruct +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatTuple +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatTupleStruct +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatType +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PatWild +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Path +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PathArguments +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PathSegment +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PredicateEq +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PredicateLifetime +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:PredicateType +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:QSelf +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:RangeLimits +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Receiver +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:ReturnType +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Signature +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Stmt +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TraitBound +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TraitBoundModifier +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TraitItem +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TraitItemConst +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TraitItemMacro +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TraitItemMethod +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TraitItemType +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Type +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypeArray +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypeBareFn +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypeGroup +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypeImplTrait +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypeMacro +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypeParam +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypeParamBound +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypeParen +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypePath +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypePtr +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypeReference +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypeSlice +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypeTraitObject +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:TypeTuple +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:UnOp +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:UseGroup +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:UseName +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:UsePath +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:UseRename +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:UseTree +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Variadic +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Variant +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:VisRestricted +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:Visibility +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:WhereClause +hash vendor/syn/src/gen/hash.rs /^ fn hash(&self, state: &mut H)$/;" P implementation:WherePredicate +hash vendor/syn/src/lib.rs /^ mod hash;$/;" n module:gen +hash vendor/syn/src/lifetime.rs /^ fn hash(&self, h: &mut H) {$/;" P implementation:Lifetime +hash vendor/syn/src/parse.rs /^ fn hash(&self, _state: &mut H) {}$/;" P implementation:Nothing +hash vendor/syn/src/punctuated.rs /^ fn hash(&self, state: &mut H) {$/;" f +hash vendor/syn/src/tt.rs /^ fn hash(&self, h: &mut H) {$/;" P implementation:TokenTreeHelper +hash vendor/syn/src/tt.rs /^ fn hash(&self, state: &mut H) {$/;" P implementation:TokenStreamHelper +hash.o builtins/Makefile.in /^hash.o: $(srcdir)\/common.h $(BASHINCDIR)\/maxpath.h ..\/pathnames.h$/;" t +hash.o builtins/Makefile.in /^hash.o: $(topdir)\/builtins.h $(topdir)\/command.h $(topdir)\/quit.h$/;" t +hash.o builtins/Makefile.in /^hash.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +hash.o builtins/Makefile.in /^hash.o: $(topdir)\/conftypes.h $(topdir)\/execute_cmd.h$/;" t +hash.o builtins/Makefile.in /^hash.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +hash.o builtins/Makefile.in /^hash.o: $(topdir)\/findcmd.h $(topdir)\/hashlib.h $(topdir)\/sig.h$/;" t +hash.o builtins/Makefile.in /^hash.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h$/;" t +hash.o builtins/Makefile.in /^hash.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +hash.o builtins/Makefile.in /^hash.o: hash.def$/;" t +hash_2pow vendor/memchr/src/memmem/rabinkarp.rs /^ hash_2pow: u32,$/;" m struct:NeedleHash +hash_bucket hashlib.c /^hash_bucket (string, table)$/;" f +hash_bucket r_bash/src/lib.rs /^ pub fn hash_bucket($/;" f +hash_copy hashlib.c /^hash_copy (table, cpdata)$/;" f +hash_copy r_bash/src/lib.rs /^ pub fn hash_copy(arg1: *mut HASH_TABLE, arg2: sh_string_func_t) -> *mut HASH_TABLE;$/;" f +hash_create hashlib.c /^hash_create (buckets)$/;" f +hash_create r_bash/src/lib.rs /^ pub fn hash_create(arg1: ::std::os::raw::c_int) -> *mut HASH_TABLE;$/;" f +hash_dispose hashlib.c /^hash_dispose (table)$/;" f +hash_dispose r_bash/src/lib.rs /^ pub fn hash_dispose(arg1: *mut HASH_TABLE);$/;" f +hash_entries builtins_rust/hash/src/lib.rs /^pub unsafe fn hash_entries(ht: *mut HASH_TABLE) -> i32 {$/;" f +hash_flush hashlib.c /^hash_flush (table, free_data)$/;" f +hash_flush r_bash/src/lib.rs /^ pub fn hash_flush(arg1: *mut HASH_TABLE, arg2: sh_free_func_t);$/;" f +hash_grow hashlib.c /^hash_grow (table)$/;" f file: +hash_insert hashlib.c /^hash_insert (string, table, flags)$/;" f +hash_insert r_bash/src/lib.rs /^ pub fn hash_insert($/;" f +hash_items hashlib.h /^#define hash_items(/;" d +hash_lookup variables.c /^hash_lookup (name, hashed_vars)$/;" f file: +hash_pstats hashlib.c /^hash_pstats (table, name)$/;" f +hash_receiver vendor/futures-channel/src/mpsc/mod.rs /^ pub fn hash_receiver(&self, hasher: &mut H)$/;" P implementation:Sender +hash_receiver vendor/futures-channel/src/mpsc/mod.rs /^ pub fn hash_receiver(&self, hasher: &mut H)$/;" P implementation:UnboundedSender +hash_receiver vendor/futures-channel/tests/mpsc.rs /^fn hash_receiver() {$/;" f +hash_rehash hashlib.c /^hash_rehash (table, nsize)$/;" f file: +hash_remove hashlib.c /^hash_remove (string, table, flags)$/;" f +hash_remove r_bash/src/lib.rs /^ pub fn hash_remove($/;" f +hash_search hashlib.c /^hash_search (string, table, flags)$/;" f +hash_search r_bash/src/lib.rs /^ pub fn hash_search($/;" f +hash_shrink hashlib.c /^hash_shrink (table)$/;" f file: +hash_size hashlib.c /^hash_size (table)$/;" f +hash_size lib/intl/gettextP.h /^ nls_uint32 hash_size;$/;" m struct:loaded_domain typeref:typename:nls_uint32 +hash_size r_bash/src/lib.rs /^ pub fn hash_size(arg1: *mut HASH_TABLE) -> ::std::os::raw::c_int;$/;" f +hash_string hashlib.c /^hash_string (s)$/;" f +hash_tab lib/intl/gettextP.h /^ const nls_uint32 *hash_tab;$/;" m struct:loaded_domain typeref:typename:const nls_uint32 * +hash_tab_offset lib/intl/gmo.h /^ nls_uint32 hash_tab_offset;$/;" m struct:mo_file_header typeref:typename:nls_uint32 +hash_tab_size lib/intl/gmo.h /^ nls_uint32 hash_tab_size;$/;" m struct:mo_file_header typeref:typename:nls_uint32 +hash_table builtins_rust/alias/src/lib.rs /^pub struct hash_table {$/;" s +hash_table builtins_rust/hash/src/lib.rs /^pub struct hash_table {$/;" s +hash_table hashlib.h /^typedef struct hash_table {$/;" s +hash_table r_bash/src/lib.rs /^pub struct hash_table {$/;" s +hash_table r_jobs/src/lib.rs /^pub struct hash_table {$/;" s +hash_walk builtins_rust/hash/src/lib.rs /^ fn hash_walk(table: *mut HASH_TABLE, func: *mut hash_wfunc);$/;" f +hash_walk hashlib.c /^hash_walk (table, func)$/;" f +hash_walk r_bash/src/lib.rs /^ pub fn hash_walk(arg1: *mut HASH_TABLE, arg2: hash_wfunc);$/;" f +hash_wfunc builtins_rust/hash/src/lib.rs /^type hash_wfunc = extern "C" fn(*mut BUCKET_CONTENTS) -> i32;$/;" t +hash_wfunc r_bash/src/lib.rs /^pub type hash_wfunc = ::core::option::Option<$/;" t +hashcmd.o Makefile.in /^hashcmd.o: config.h ${BASHINCDIR}\/posixstat.h bashtypes.h bashansi.h ${BASHINCDIR}\/ansi_stdlib/;" t +hashcmd.o Makefile.in /^hashcmd.o: execute_cmd.h findcmd.h ${BASHINCDIR}\/stdc.h pathnames.h hashlib.h$/;" t +hashcmd.o Makefile.in /^hashcmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashcmd.h$/;" t +hashcmd.o Makefile.in /^hashcmd.o: quit.h sig.h flags.h$/;" t +hashcmd.o Makefile.in /^hashcmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}/;" t +hashed_filenames builtins_rust/hash/src/lib.rs /^ static hashed_filenames: *mut HASH_TABLE;$/;" v +hashed_filenames hashcmd.c /^HASH_TABLE *hashed_filenames = (HASH_TABLE *)NULL;$/;" v typeref:typename:HASH_TABLE * +hashed_filenames r_bash/src/lib.rs /^ pub static mut hashed_filenames: *mut HASH_TABLE;$/;" v +hashing_enabled builtins_rust/hash/src/lib.rs /^ static hashing_enabled: i32;$/;" v +hashing_enabled flags.c /^int hashing_enabled = 1;$/;" v typeref:typename:int +hashing_enabled r_bash/src/lib.rs /^ pub static mut hashing_enabled: ::std::os::raw::c_int;$/;" v +hashlib.o Makefile.in /^hashlib.o: assoc.h ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h$/;" t +hashlib.o Makefile.in /^hashlib.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +hashlib.o Makefile.in /^hashlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +hashlib.o Makefile.in /^hashlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h $/;" t +hashlib.o Makefile.in /^hashlib.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +hashlib.o Makefile.in /^hashlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}/;" t +hashmap vendor/once_cell/examples/lazy_static.rs /^fn hashmap() -> &'static HashMap {$/;" f +hashtest Makefile.in /^hashtest: hashlib.c$/;" t +hasmntopt vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn hasmntopt(mnt: *const ::mntent, opt: *const ::c_char) -> *mut ::c_char;$/;" f +have_devfd shell.c /^int have_devfd = 0;$/;" v typeref:typename:int +have_devfd shell.c /^int have_devfd = HAVE_DEV_FD;$/;" v typeref:typename:int +have_unwind_protects r_bash/src/lib.rs /^ pub fn have_unwind_protects() -> ::std::os::raw::c_int;$/;" f +have_unwind_protects unwind_prot.c /^have_unwind_protects ()$/;" f typeref:typename:int +haystack vendor/memchr/src/memchr/iter.rs /^ haystack: &'a [u8],$/;" m struct:Memchr +haystack vendor/memchr/src/memchr/iter.rs /^ haystack: &'a [u8],$/;" m struct:Memchr2 +haystack vendor/memchr/src/memchr/iter.rs /^ haystack: &'a [u8],$/;" m struct:Memchr3 +haystack vendor/memchr/src/memmem/mod.rs /^ haystack: &'h [u8],$/;" m struct:FindIter +haystack vendor/memchr/src/memmem/mod.rs /^ haystack: &'h [u8],$/;" m struct:FindRevIter +haystack vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) haystack: Vec,$/;" m struct:tests::PrefilterTest +hc_erasedups bashhist.c /^hc_erasedups (line)$/;" f file: +hc_erasedups r_bashhist/src/lib.rs /^unsafe extern "C" fn hc_erasedups(mut line: *mut c_char) {$/;" f +hcreate vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn hcreate(nelt: ::size_t) -> ::c_int;$/;" f +hcreate vendor/libc/src/unix/haiku/mod.rs /^ pub fn hcreate(nelt: ::size_t) -> ::c_int;$/;" f +hdestroy vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn hdestroy();$/;" f +hdestroy vendor/libc/src/unix/haiku/mod.rs /^ pub fn hdestroy();$/;" f +hdr lib/malloc/alloca.c /^typedef union hdr$/;" u file: +head array.h /^ struct array_element *head;$/;" m struct:array typeref:struct:array_element * +head builtins_rust/mapfile/src/intercdep.rs /^ pub head: *mut array_element,$/;" m struct:array +head builtins_rust/read/src/intercdep.rs /^ pub head: *mut array_element,$/;" m struct:array +head execute_cmd.c /^ struct cpelement *head;$/;" m struct:cplist typeref:struct:cpelement * file: +head jobs.h /^ PROCESS *head;$/;" m struct:procchain typeref:typename:PROCESS * +head jobs.h /^ ps_index_t head;$/;" m struct:bgpids typeref:typename:ps_index_t +head r_bash/src/lib.rs /^ pub head: *mut PROCESS,$/;" m struct:procchain +head r_bash/src/lib.rs /^ pub head: *mut array_element,$/;" m struct:array +head r_bash/src/lib.rs /^ pub head: ps_index_t,$/;" m struct:bgpids +head r_glob/src/lib.rs /^ pub head: *mut array_element,$/;" m struct:array +head r_readline/src/lib.rs /^ pub head: *mut array_element,$/;" m struct:array +head unwind_prot.c /^ } head;$/;" m union:uwp typeref:struct:uwp::uwp_head file: +head vendor/futures-channel/src/mpsc/queue.rs /^ head: AtomicPtr>,$/;" m struct:Queue +head vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^ pub(super) head: AtomicPtr>,$/;" m struct:ReadyToRunQueue +head_all vendor/futures-util/src/stream/futures_unordered/mod.rs /^ head_all: AtomicPtr>,$/;" m struct:FuturesUnordered +header lib/malloc/alloca.c /^} header;$/;" t typeref:union:hdr file: +headersdir Makefile.in /^headersdir = @headersdir@$/;" m +headersdir configure.ac /^AC_SUBST(headersdir)$/;" s +heap vendor/smallvec/src/lib.rs /^ unsafe fn heap(&self) -> (*mut A::Item, usize) {$/;" P implementation:SmallVecData +heap_mut vendor/smallvec/src/lib.rs /^ unsafe fn heap_mut(&mut self) -> &mut (*mut A::Item, usize) {$/;" P implementation:SmallVecData +heapapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "heapapi")] pub mod heapapi;$/;" n +heapsort vendor/libc/src/solid/mod.rs /^ pub fn heapsort($/;" f +hello vendor/async-trait/tests/test.rs /^ async fn hello(thing: Struct<'a>) -> String;$/;" P interface:issue31::Trait +hello_twice vendor/async-trait/tests/test.rs /^ async fn hello_twice(one: Struct<'a>, two: Struct<'a>) -> String {$/;" P interface:issue31::Trait +help vendor/syn/src/export.rs /^mod help {$/;" n +help-builtin configure.ac /^AC_ARG_ENABLE(help-builtin, AC_HELP_STRING([--enable-help-builtin], [include the help builtin]),/;" e +help.o builtins/Makefile.in /^help.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +help.o builtins/Makefile.in /^help.o: $(topdir)\/conftypes.h $(topdir)\/execute_cmd.h$/;" t +help.o builtins/Makefile.in /^help.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +help.o builtins/Makefile.in /^help.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h$/;" t +help.o builtins/Makefile.in /^help.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h$/;" t +help.o builtins/Makefile.in /^help.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +help.o builtins/Makefile.in /^help.o: ${srcdir}\/common.h $(topdir)\/sig.h ..\/pathnames.h$/;" t +help.o builtins/Makefile.in /^help.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +help.o builtins/Makefile.in /^help.o: help.def$/;" t +helpOptions support/texi2html /^sub helpOptions$/;" s +helpdoc builtins/Makefile.in /^helpdoc: gen-helpfiles$/;" t +helper vendor/fluent-syntax/src/ast/mod.rs /^mod helper;$/;" n +helper vendor/fluent-syntax/src/parser/mod.rs /^mod helper;$/;" n +helper vendor/syn/src/lib.rs /^ mod helper;$/;" n module:gen +helpers vendor/tinystr/src/lib.rs /^mod helpers;$/;" n +helpfile_directory builtins/gen-helpfiles.c /^char *helpfile_directory;$/;" v typeref:typename:char * +helpfile_directory builtins/mkbuiltins.c /^char *helpfile_directory;$/;" v typeref:typename:char * +here_doc_eof builtins_rust/command/src/lib.rs /^ pub here_doc_eof: *mut libc::c_char,$/;" m struct:redirect +here_doc_eof builtins_rust/exec/src/lib.rs /^ here_doc_eof: *mut c_char,$/;" m struct:redirect +here_doc_eof builtins_rust/kill/src/intercdep.rs /^ pub here_doc_eof: *mut c_char,$/;" m struct:redirect +here_doc_eof builtins_rust/setattr/src/intercdep.rs /^ pub here_doc_eof: *mut c_char,$/;" m struct:redirect +here_doc_eof command.h /^ char *here_doc_eof; \/* The word that appeared in < c_int {$/;" f +hi vendor/proc-macro2/src/fallback.rs /^ pub(crate) hi: u32,$/;" m struct:Span +hidclass vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "hidclass")] pub mod hidclass;$/;" n +hide_from_stable_parser vendor/async-trait/tests/test.rs /^ macro_rules! hide_from_stable_parser {$/;" M module:issue25 +hidpi vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "hidpi")] pub mod hidpi;$/;" n +hidsdi vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "hidsdi")] pub mod hidsdi;$/;" n +hidusage vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "hidusage")] pub mod hidusage;$/;" n +high_water lib/malloc/alloca.c /^ long high_water; \/* Stack high-water mark. *\/$/;" m struct:stk_stat typeref:typename:long file: +highest vendor/nix/src/sys/select.rs /^ pub fn highest(&self) -> Option {$/;" P implementation:FdSet +highlevelmonitorconfigurationapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "highlevelmonitorconfigurationapi")] pub mod highlevelmonitorconfigurationapi;$/;" n +hindex lib/readline/rlprivate.h /^ int hindex;$/;" m struct:__rl_search_context typeref:typename:int +hindex r_readline/src/lib.rs /^ pub hindex: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +hint vendor/smallvec/src/tests.rs /^ hint: usize,$/;" m struct:insert_many_panic::BadIter +hint vendor/smallvec/src/tests.rs /^ hint: usize,$/;" m struct:MockHintIter +hist_error lib/readline/histexpand.c /^hist_error(char *s, int start, int current, int errtype)$/;" f typeref:typename:char * file: +hist_inittime lib/readline/history.c /^hist_inittime (void)$/;" f typeref:typename:char * file: +hist_last_line_added bashhist.c /^int hist_last_line_added;$/;" v typeref:typename:int +hist_last_line_added builtins_rust/fc/src/lib.rs /^ static mut hist_last_line_added: i32;$/;" v +hist_last_line_added builtins_rust/history/src/intercdep.rs /^ pub static mut hist_last_line_added: c_int;$/;" v +hist_last_line_added r_bash/src/lib.rs /^ pub static mut hist_last_line_added: ::std::os::raw::c_int;$/;" v +hist_last_line_added r_bashhist/src/lib.rs /^pub static mut hist_last_line_added:c_int = 0;$/;" v +hist_last_line_pushed bashhist.c /^int hist_last_line_pushed;$/;" v typeref:typename:int +hist_last_line_pushed builtins_rust/history/src/intercdep.rs /^ pub static mut hist_last_line_pushed: c_int;$/;" v +hist_last_line_pushed r_bash/src/lib.rs /^ pub static mut hist_last_line_pushed: ::std::os::raw::c_int;$/;" v +hist_last_line_pushed r_bashhist/src/lib.rs /^pub static mut hist_last_line_pushed:c_int = 0;$/;" v +hist_string_extract_single_quoted lib/readline/histexpand.c /^hist_string_extract_single_quoted (char *string, int *sindex, int flags)$/;" f typeref:typename:void file: +hist_verify bashhist.c /^int hist_verify;$/;" v typeref:typename:int +hist_verify builtins_rust/shopt/src/lib.rs /^ static mut hist_verify: i32;$/;" v +hist_verify r_bash/src/lib.rs /^ pub static mut hist_verify: ::std::os::raw::c_int;$/;" v +hist_verify r_bashhist/src/lib.rs /^pub static mut hist_verify:c_int = 0;$/;" v +histdata_t builtins_rust/history/src/intercdep.rs /^pub type histdata_t = *mut libc::c_void;$/;" t +histdata_t builtins_rust/rlet/src/intercdep.rs /^pub type histdata_t = *mut libc::c_void;$/;" t +histdata_t lib/readline/history.h /^typedef void *histdata_t;$/;" t typeref:typename:void * +histdata_t r_bashhist/src/lib.rs /^pub type histdata_t = *mut c_void;$/;" t +histdata_t r_readline/src/lib.rs /^pub type histdata_t = *mut ::std::os::raw::c_void;$/;" t +histexp_flag flags.c /^int histexp_flag = 0;$/;" v typeref:typename:int +histexp_flag r_bash/src/lib.rs /^ pub static mut histexp_flag: ::std::os::raw::c_int;$/;" v +histexpand.o lib/readline/Makefile.in /^histexpand.o: ${BUILD_DIR}\/config.h$/;" t +histexpand.o lib/readline/Makefile.in /^histexpand.o: ansi_stdlib.h$/;" t +histexpand.o lib/readline/Makefile.in /^histexpand.o: histexpand.c$/;" t +histexpand.o lib/readline/Makefile.in /^histexpand.o: history.h histlib.h rlstdc.h$/;" t +histexpand.o lib/readline/Makefile.in /^histexpand.o: rlmbutil.h$/;" t +histexpand.o lib/readline/Makefile.in /^histexpand.o: rlshell.h$/;" t +histexpand.o lib/readline/Makefile.in /^histexpand.o: xmalloc.h $/;" t +histfile.o lib/readline/Makefile.in /^histfile.o: ${BUILD_DIR}\/config.h$/;" t +histfile.o lib/readline/Makefile.in /^histfile.o: ansi_stdlib.h$/;" t +histfile.o lib/readline/Makefile.in /^histfile.o: histfile.c$/;" t +histfile.o lib/readline/Makefile.in /^histfile.o: history.h histlib.h rlstdc.h$/;" t +histfile.o lib/readline/Makefile.in /^histfile.o: rlshell.h$/;" t +histfile.o lib/readline/Makefile.in /^histfile.o: xmalloc.h$/;" t +histfile_backup lib/readline/histfile.c /^histfile_backup (const char *filename, const char *back)$/;" f typeref:typename:int file: +histfile_restore lib/readline/histfile.c /^histfile_restore (const char *backup, const char *orig)$/;" f typeref:typename:int file: +histignore bashhist.c /^static struct ignorevar histignore =$/;" v typeref:struct:ignorevar file: +histignore r_bashhist/src/lib.rs /^static mut histignore: ignorevar = unsafe {$/;" v +histignore_item_func bashhist.c /^histignore_item_func (ign)$/;" f file: +histignore_item_func r_bashhist/src/lib.rs /^unsafe extern "C" fn histignore_item_func(mut ign: *mut ign) -> c_int {$/;" f +history configure.ac /^AC_ARG_ENABLE(history, AC_HELP_STRING([--enable-history], [turn on command history]), opt_histor/;" e +history.o builtins/Makefile.in /^history.o: $(topdir)\/bashtypes.h$/;" t +history.o builtins/Makefile.in /^history.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +history.o builtins/Makefile.in /^history.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +history.o builtins/Makefile.in /^history.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h$/;" t +history.o builtins/Makefile.in /^history.o: $(topdir)\/subst.h $(topdir)\/externs.h $(topdir)\/sig.h $(topdir)\/parser.h$/;" t +history.o builtins/Makefile.in /^history.o: $(topdir)\/variables.h $(topdir)\/conftypes.h $(topdir)\/bashhist.h $(BASHINCDIR)\/ma/;" t +history.o builtins/Makefile.in /^history.o: ${BASHINCDIR}\/filecntl.h $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_pr/;" t +history.o builtins/Makefile.in /^history.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +history.o builtins/Makefile.in /^history.o: ..\/pathnames.h$/;" t +history.o builtins/Makefile.in /^history.o: history.def$/;" t +history.o lib/readline/Makefile.in /^history.o: ${BUILD_DIR}\/config.h$/;" t +history.o lib/readline/Makefile.in /^history.o: ansi_stdlib.h$/;" t +history.o lib/readline/Makefile.in /^history.o: history.c$/;" t +history.o lib/readline/Makefile.in /^history.o: history.h histlib.h rlstdc.h$/;" t +history.o lib/readline/Makefile.in /^history.o: xmalloc.h$/;" t +history_and_alias_expand_line bashline.c /^history_and_alias_expand_line (count, ignore)$/;" f file: +history_arg_extract lib/readline/histexpand.c /^history_arg_extract (int first, int last, const char *string)$/;" f typeref:typename:char * +history_arg_extract r_readline/src/lib.rs /^ pub fn history_arg_extract($/;" f +history_backupfile lib/readline/histfile.c /^history_backupfile (const char *filename)$/;" f typeref:typename:char * file: +history_base builtins_rust/fc/src/lib.rs /^ static mut history_base: i32;$/;" v +history_base builtins_rust/history/src/intercdep.rs /^ pub static mut history_base: c_int;$/;" v +history_base lib/readline/history.c /^int history_base = 1;$/;" v typeref:typename:int +history_base r_bashhist/src/lib.rs /^ static mut history_base: c_int;$/;" v +history_base r_readline/src/lib.rs /^ pub static mut history_base: ::std::os::raw::c_int;$/;" v +history_comment_char lib/readline/histexpand.c /^char history_comment_char = '\\0';$/;" v typeref:typename:char +history_comment_char r_readline/src/lib.rs /^ pub static mut history_comment_char: ::std::os::raw::c_char;$/;" v +history_completion_array bashline.c /^static char **history_completion_array = (char **)NULL;$/;" v typeref:typename:char ** file: +history_completion_generator bashline.c /^history_completion_generator (hint_text, state)$/;" f file: +history_control bashhist.c /^int history_control;$/;" v typeref:typename:int +history_control r_bash/src/lib.rs /^ pub static mut history_control: ::std::os::raw::c_int;$/;" v +history_control r_bashhist/src/lib.rs /^pub static mut history_control:c_int = 0;$/;" v +history_delimiting_chars r_bash/src/lib.rs /^ pub fn history_delimiting_chars($/;" f +history_do_write lib/readline/histfile.c /^history_do_write (const char *filename, int nelements, int overwrite)$/;" f typeref:typename:int file: +history_event_delimiter_chars lib/readline/histexpand.c /^static char *history_event_delimiter_chars = HISTORY_EVENT_DELIMITERS;$/;" v typeref:typename:char * file: +history_expand builtins_rust/history/src/intercdep.rs /^ pub fn history_expand (hstring: *mut c_char, output: *mut *mut c_char) -> c_int;$/;" f +history_expand lib/readline/histexpand.c /^history_expand (char *hstring, char **output)$/;" f typeref:typename:int +history_expand r_bashhist/src/lib.rs /^ fn history_expand(_: *mut c_char, _: *mut *mut c_char) -> c_int;$/;" f +history_expand r_readline/src/lib.rs /^ pub fn history_expand($/;" f +history_expand_internal lib/readline/histexpand.c /^history_expand_internal (char *string, int start, int qc, int *end_index_ptr, char **ret_string,/;" f typeref:typename:int file: +history_expand_line bashline.c /^history_expand_line (count, ignore)$/;" f file: +history_expand_line_internal bashline.c /^history_expand_line_internal (line)$/;" f file: +history_expansion flags.c /^int history_expansion = HISTEXPAND_DEFAULT;$/;" v typeref:typename:int +history_expansion r_bash/src/lib.rs /^ pub static mut history_expansion: ::std::os::raw::c_int;$/;" v +history_expansion_char lib/readline/histexpand.c /^char history_expansion_char = '!';$/;" v typeref:typename:char +history_expansion_char r_bashhist/src/lib.rs /^ static mut history_expansion_char:c_char;$/;" v +history_expansion_char r_readline/src/lib.rs /^ pub static mut history_expansion_char: ::std::os::raw::c_char;$/;" v +history_expansion_inhibited bashhist.c /^int history_expansion_inhibited;$/;" v typeref:typename:int +history_expansion_inhibited r_bash/src/lib.rs /^ pub history_expansion_inhibited: ::std::os::raw::c_int,$/;" m struct:_sh_parser_state_t +history_expansion_inhibited r_bash/src/lib.rs /^ pub static mut history_expansion_inhibited: ::std::os::raw::c_int;$/;" v +history_expansion_inhibited r_bashhist/src/lib.rs /^pub static mut history_expansion_inhibited:c_int = 0;$/;" v +history_expansion_inhibited shell.h /^ int history_expansion_inhibited;$/;" m struct:_sh_parser_state_t typeref:typename:int +history_expansion_p bashhist.c /^history_expansion_p (line)$/;" f file: +history_expansion_p r_bashhist/src/lib.rs /^unsafe extern "C" fn history_expansion_p(mut line: *mut c_char) -> c_int {$/;" f +history_file_version lib/readline/histfile.c /^int history_file_version = 1;$/;" v typeref:typename:int +history_file_version r_readline/src/lib.rs /^ pub static mut history_file_version: ::std::os::raw::c_int;$/;" v +history_filename lib/readline/histfile.c /^history_filename (const char *filename)$/;" f typeref:typename:char * file: +history_find_word lib/readline/histexpand.c /^history_find_word (char *line, int ind)$/;" f typeref:typename:char * file: +history_get lib/readline/history.c /^history_get (int offset)$/;" f typeref:typename:HIST_ENTRY * +history_get r_bashhist/src/lib.rs /^ fn history_get(_: c_int) -> *mut HIST_ENTRY;$/;" f +history_get r_readline/src/lib.rs /^ pub fn history_get(arg1: ::std::os::raw::c_int) -> *mut HIST_ENTRY;$/;" f +history_get_history_state lib/readline/history.c /^history_get_history_state (void)$/;" f typeref:typename:HISTORY_STATE * +history_get_history_state r_readline/src/lib.rs /^ pub fn history_get_history_state() -> *mut HISTORY_STATE;$/;" f +history_get_time builtins_rust/history/src/intercdep.rs /^ pub fn history_get_time(hist: *mut HIST_ENTRY) -> libc::time_t;$/;" f +history_get_time lib/readline/history.c /^history_get_time (HIST_ENTRY *hist)$/;" f typeref:typename:time_t +history_get_time r_readline/src/lib.rs /^ pub fn history_get_time(arg1: *mut HIST_ENTRY) -> time_t;$/;" f +history_inhibit_expansion_function lib/readline/histexpand.c /^rl_linebuf_func_t *history_inhibit_expansion_function;$/;" v typeref:typename:rl_linebuf_func_t * +history_inhibit_expansion_function r_bashhist/src/lib.rs /^ static mut history_inhibit_expansion_function:Option;$/;" v +history_inhibit_expansion_function r_readline/src/lib.rs /^ pub static mut history_inhibit_expansion_function: rl_linebuf_func_t;$/;" v +history_is_stifled lib/readline/history.c /^history_is_stifled (void)$/;" f typeref:typename:int +history_is_stifled r_bashhist/src/lib.rs /^ fn history_is_stifled() -> c_int;$/;" f +history_is_stifled r_readline/src/lib.rs /^ pub fn history_is_stifled() -> ::std::os::raw::c_int;$/;" f +history_length builtins_rust/history/src/intercdep.rs /^ pub static mut history_length: c_int;$/;" v +history_length lib/readline/history.c /^int history_length;$/;" v typeref:typename:int +history_length r_bashhist/src/lib.rs /^ static mut history_length: c_int;$/;" v +history_length r_readline/src/lib.rs /^ pub static mut history_length: ::std::os::raw::c_int;$/;" v +history_lines_in_file bashhist.c /^int history_lines_in_file;$/;" v typeref:typename:int +history_lines_in_file builtins_rust/history/src/intercdep.rs /^ pub static mut history_lines_in_file: c_int;$/;" v +history_lines_in_file r_bash/src/lib.rs /^ pub static mut history_lines_in_file: ::std::os::raw::c_int;$/;" v +history_lines_read_from_file builtins_rust/history/src/intercdep.rs /^ pub static mut history_lines_read_from_file: c_int;$/;" v +history_lines_read_from_file lib/readline/histfile.c /^int history_lines_read_from_file = 0;$/;" v typeref:typename:int +history_lines_read_from_file r_bashhist/src/lib.rs /^ static mut history_lines_read_from_file:c_int;$/;" v +history_lines_read_from_file r_readline/src/lib.rs /^ pub static mut history_lines_read_from_file: ::std::os::raw::c_int;$/;" v +history_lines_this_session bashhist.c /^int history_lines_this_session;$/;" v typeref:typename:int +history_lines_this_session builtins_rust/history/src/intercdep.rs /^ pub static mut history_lines_this_session: c_int;$/;" v +history_lines_this_session builtins_rust/set/src/lib.rs /^ static mut history_lines_this_session: i32;$/;" v +history_lines_this_session r_bash/src/lib.rs /^ pub static mut history_lines_this_session: ::std::os::raw::c_int;$/;" v +history_lines_this_session r_bashhist/src/lib.rs /^pub static mut history_lines_this_session:c_int = 0;$/;" v +history_lines_written_to_file lib/readline/histfile.c /^int history_lines_written_to_file = 0;$/;" v typeref:typename:int +history_lines_written_to_file r_bashhist/src/lib.rs /^ static mut history_lines_written_to_file: c_int;$/;" v +history_lines_written_to_file r_readline/src/lib.rs /^ pub static mut history_lines_written_to_file: ::std::os::raw::c_int;$/;" v +history_list builtins_rust/fc/src/lib.rs /^ fn history_list() -> *mut *mut HIST_ENTRY;$/;" f +history_list builtins_rust/history/src/intercdep.rs /^ pub fn history_list() -> *mut *mut HIST_ENTRY;$/;" f +history_list lib/readline/history.c /^history_list (void)$/;" f typeref:typename:HIST_ENTRY ** +history_list r_bashhist/src/lib.rs /^ fn history_list() -> *mut *mut HIST_ENTRY;$/;" f +history_list r_readline/src/lib.rs /^ pub fn history_list() -> *mut *mut HIST_ENTRY;$/;" f +history_max_entries lib/readline/history.c /^int history_max_entries;$/;" v typeref:typename:int +history_max_entries r_bashhist/src/lib.rs /^ static mut history_max_entries: c_int;$/;" v +history_max_entries r_readline/src/lib.rs /^ pub static mut history_max_entries: ::std::os::raw::c_int;$/;" v +history_multiline_entries lib/readline/histfile.c /^int history_multiline_entries = 0;$/;" v typeref:typename:int +history_multiline_entries r_readline/src/lib.rs /^ pub static mut history_multiline_entries: ::std::os::raw::c_int;$/;" v +history_no_expand_chars lib/readline/histexpand.c /^char *history_no_expand_chars = " \\t\\n\\r=";$/;" v typeref:typename:char * +history_no_expand_chars r_readline/src/lib.rs /^ pub static mut history_no_expand_chars: *mut ::std::os::raw::c_char;$/;" v +history_number bashhist.c /^history_number ()$/;" f typeref:typename:int +history_number r_bash/src/lib.rs /^ pub fn history_number() -> ::std::os::raw::c_int;$/;" f +history_number r_bashhist/src/lib.rs /^pub unsafe extern "C" fn history_number() -> c_int {$/;" f +history_offset lib/readline/history.c /^int history_offset;$/;" v typeref:typename:int +history_offset r_readline/src/lib.rs /^ pub static mut history_offset: ::std::os::raw::c_int;$/;" v +history_pos lib/readline/rlprivate.h /^ int history_pos;$/;" m struct:__rl_search_context typeref:typename:int +history_pos r_readline/src/lib.rs /^ pub history_pos: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +history_quotes_inhibit_expansion lib/readline/histexpand.c /^int history_quotes_inhibit_expansion = 0;$/;" v typeref:typename:int +history_quotes_inhibit_expansion r_bashhist/src/lib.rs /^ static mut history_quotes_inhibit_expansion:c_int;$/;" v +history_quotes_inhibit_expansion r_readline/src/lib.rs /^ pub static mut history_quotes_inhibit_expansion: ::std::os::raw::c_int;$/;" v +history_quoting_state lib/readline/histexpand.c /^int history_quoting_state = 0;$/;" v typeref:typename:int +history_quoting_state r_bashhist/src/lib.rs /^ static mut history_quoting_state:c_int;$/;" v +history_quoting_state r_readline/src/lib.rs /^ pub static mut history_quoting_state: ::std::os::raw::c_int;$/;" v +history_reediting bashhist.c /^int history_reediting;$/;" v typeref:typename:int +history_reediting builtins_rust/shopt/src/lib.rs /^ static mut history_reediting: i32;$/;" v +history_reediting r_bashhist/src/lib.rs /^pub static mut history_reediting:c_int = 0;$/;" v +history_rename lib/readline/histfile.c /^history_rename (const char *old, const char *new)$/;" f typeref:typename:int file: +history_search lib/readline/histsearch.c /^history_search (const char *string, int direction)$/;" f typeref:typename:int +history_search r_readline/src/lib.rs /^ pub fn history_search($/;" f +history_search_delimiter_chars lib/readline/histsearch.c /^char *history_search_delimiter_chars = (char *)NULL;$/;" v typeref:typename:char * +history_search_delimiter_chars r_bashhist/src/lib.rs /^ static mut history_search_delimiter_chars:*mut c_char;$/;" v +history_search_delimiter_chars r_readline/src/lib.rs /^ pub static mut history_search_delimiter_chars: *mut ::std::os::raw::c_char;$/;" v +history_search_internal lib/readline/histsearch.c /^history_search_internal (const char *string, int direction, int flags)$/;" f typeref:typename:int file: +history_search_pos lib/readline/histsearch.c /^history_search_pos (const char *string, int dir, int pos)$/;" f typeref:typename:int +history_search_pos r_readline/src/lib.rs /^ pub fn history_search_pos($/;" f +history_search_prefix lib/readline/histsearch.c /^history_search_prefix (const char *string, int direction)$/;" f typeref:typename:int +history_search_prefix r_readline/src/lib.rs /^ pub fn history_search_prefix($/;" f +history_search_string lib/readline/search.c /^static char *history_search_string;$/;" v typeref:typename:char * file: +history_set_history_state lib/readline/history.c /^history_set_history_state (HISTORY_STATE *state)$/;" f typeref:typename:void +history_set_history_state r_readline/src/lib.rs /^ pub fn history_set_history_state(arg1: *mut HISTORY_STATE);$/;" f +history_set_pos builtins_rust/history/src/intercdep.rs /^ pub fn history_set_pos(pos: c_int) -> c_int;$/;" f +history_set_pos lib/readline/history.c /^history_set_pos (int pos)$/;" f typeref:typename:int +history_set_pos r_bashhist/src/lib.rs /^ fn history_set_pos(_: c_int) -> c_int;$/;" f +history_set_pos r_readline/src/lib.rs /^ pub fn history_set_pos(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +history_should_ignore bashhist.c /^history_should_ignore (line)$/;" f file: +history_should_ignore r_bashhist/src/lib.rs /^unsafe extern "C" fn history_should_ignore(mut line: *mut c_char) -> c_int {$/;" f +history_size lib/readline/history.c /^static int history_size;$/;" v typeref:typename:int file: +history_stifled lib/readline/history.c /^static int history_stifled;$/;" v typeref:typename:int file: +history_string_size lib/readline/search.c /^static int history_string_size;$/;" v typeref:typename:int file: +history_subst_char lib/readline/histexpand.c /^char history_subst_char = '^';$/;" v typeref:typename:char +history_subst_char r_bashhist/src/lib.rs /^ static mut history_subst_char: c_char;$/;" v +history_subst_char r_readline/src/lib.rs /^ pub static mut history_subst_char: ::std::os::raw::c_char;$/;" v +history_substring lib/readline/histexpand.c /^history_substring (const char *string, int start, int end)$/;" f typeref:typename:char * file: +history_tempfile lib/readline/histfile.c /^history_tempfile (const char *filename)$/;" f typeref:typename:char * file: +history_tokenize lib/readline/histexpand.c /^history_tokenize (const char *string)$/;" f typeref:typename:char ** +history_tokenize r_readline/src/lib.rs /^ pub fn history_tokenize($/;" f +history_tokenize_internal lib/readline/histexpand.c /^history_tokenize_internal (const char *string, int wind, int *indp)$/;" f typeref:typename:char ** file: +history_tokenize_word lib/readline/histexpand.c /^history_tokenize_word (const char *string, int ind)$/;" f typeref:typename:int file: +history_total_bytes lib/readline/history.c /^history_total_bytes (void)$/;" f typeref:typename:int +history_total_bytes r_readline/src/lib.rs /^ pub fn history_total_bytes() -> ::std::os::raw::c_int;$/;" f +history_truncate_file lib/readline/histfile.c /^history_truncate_file (const char *fname, int lines)$/;" f typeref:typename:int +history_truncate_file r_readline/src/lib.rs /^ pub fn history_truncate_file($/;" f +history_word_delimiters lib/readline/histexpand.c /^char *history_word_delimiters = HISTORY_WORD_DELIMITERS;$/;" v typeref:typename:char * +history_word_delimiters r_readline/src/lib.rs /^ pub static mut history_word_delimiters: *mut ::std::os::raw::c_char;$/;" v +history_write_timestamps lib/readline/histfile.c /^int history_write_timestamps = 0;$/;" v typeref:typename:int +history_write_timestamps r_readline/src/lib.rs /^ pub static mut history_write_timestamps: ::std::os::raw::c_int;$/;" v +histsearch.o lib/readline/Makefile.in /^histsearch.o: ${BUILD_DIR}\/config.h$/;" t +histsearch.o lib/readline/Makefile.in /^histsearch.o: ansi_stdlib.h$/;" t +histsearch.o lib/readline/Makefile.in /^histsearch.o: history.h histlib.h rlstdc.h$/;" t +histsearch.o lib/readline/Makefile.in /^histsearch.o: histsearch.c$/;" t +histtime builtins_rust/history/src/lib.rs /^fn histtime(hlist: *mut HIST_ENTRY, histtimefmt: *const c_char) -> *mut c_char {$/;" f +hits lib/malloc/alloca.c /^ long hits; \/* Number of internal buffer hits. *\/$/;" m struct:stk_stat typeref:typename:long file: +hlen lib/readline/rlprivate.h /^ int hlen;$/;" m struct:__rl_search_context typeref:typename:int +hlen r_readline/src/lib.rs /^ pub hlen: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +holder lib/sh/snprintf.c /^ char *holder;$/;" m struct:DATA typeref:typename:char * file: +home_dir builtins_rust/ulimit/src/lib.rs /^ home_dir: *mut libc::c_char,$/;" m struct:user_info +home_dir r_bash/src/lib.rs /^ pub home_dir: *mut ::std::os::raw::c_char,$/;" m struct:user_info +home_dir shell.h /^ char *home_dir;$/;" m struct:user_info typeref:typename:char * +horizontal_scrolling_autoset lib/readline/display.c /^static int horizontal_scrolling_autoset = 0; \/* explicit initialization *\/$/;" v typeref:typename:int file: +host_cpu configure.ac /^AC_SUBST(host_cpu)$/;" s +host_flavor_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type host_flavor_t = integer_t;$/;" t +host_info64_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type host_info64_t = *mut integer_t;$/;" t +host_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type host_info_t = *mut integer_t;$/;" t +host_os configure.ac /^AC_SUBST(host_os)$/;" s +host_processor_info vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn host_processor_info($/;" f +host_statistics vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn host_statistics($/;" f +host_statistics64 vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn host_statistics64($/;" f +host_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type host_t = ::c_uint;$/;" t +host_vendor configure.ac /^AC_SUBST(host_vendor)$/;" s +hostname_completion_function bashline.c /^hostname_completion_function (text, state)$/;" f file: +hostname_list bashline.c /^static char **hostname_list = (char **)NULL;$/;" v typeref:typename:char ** file: +hostname_list_initialized bashline.c /^int hostname_list_initialized = 0;$/;" v typeref:typename:int +hostname_list_initialized r_bash/src/lib.rs /^ pub static mut hostname_list_initialized: ::std::os::raw::c_int;$/;" v +hostname_list_length bashline.c /^static int hostname_list_length;$/;" v typeref:typename:int file: +hostname_list_size bashline.c /^static int hostname_list_size;$/;" v typeref:typename:int file: +hostnames_matching bashline.c /^hostnames_matching (text)$/;" f file: +hours vendor/nix/src/sys/time.rs /^ fn hours(hours: i64) -> Self {$/;" P interface:TimeValLike +hsearch vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn hsearch(entry: ::ENTRY, action: ::ACTION) -> *mut ::ENTRY;$/;" f +hsearch vendor/libc/src/unix/haiku/mod.rs /^ pub fn hsearch(entry: ::ENTRY, action: ::ACTION) -> *mut ::ENTRY;$/;" f +hstrerror vendor/libc/src/unix/mod.rs /^ pub fn hstrerror(errcode: ::c_int) -> *const ::c_char;$/;" f +hstring vendor/winapi/src/winrt/mod.rs /^#[cfg(feature = "hstring")] pub mod hstring;$/;" n +html lib/intl/Makefile.in /^info dvi ps pdf html:$/;" t +html_debug support/texi2html /^sub html_debug {$/;" s +html_pop support/texi2html /^sub html_pop {$/;" s +html_pop_if support/texi2html /^sub html_pop_if {$/;" s +html_push support/texi2html /^sub html_push {$/;" s +html_push_if support/texi2html /^sub html_push_if {$/;" s +html_reset support/texi2html /^sub html_reset {$/;" s +htmldir Makefile.in /^htmldir = @htmldir@$/;" m +htmldir configure.ac /^AC_SUBST(htmldir)$/;" s +htond vendor/winapi/src/um/winsock2.rs /^pub fn htond(Value: c_double) -> __uint64 {$/;" f +htonf vendor/winapi/src/um/winsock2.rs /^pub fn htonf(Value: c_float) -> __uint32 {$/;" f +htonl vendor/winapi/src/um/winsock2.rs /^ pub fn htonl($/;" f +htonll vendor/winapi/src/um/winsock2.rs /^pub fn htonll(Value: __uint64) -> __uint64 {$/;" f +htons vendor/winapi/src/um/winsock2.rs /^ pub fn htons($/;" f +http support/texi2html /^http:\/\/www.mathematik.uni-kl.de\/~obachman\/Texi2html$/;" l +http vendor/winapi/src/um/mod.rs /^#[cfg(feature = "http")] pub mod http;$/;" n +humanize_number vendor/libc/src/solid/mod.rs /^ pub fn humanize_number($/;" f +humanize_number vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn humanize_number($/;" f +hup_on_exit builtins_rust/shopt/src/lib.rs /^ static mut hup_on_exit: i32;$/;" v +hup_on_exit r_bash/src/lib.rs /^ pub static mut hup_on_exit: ::std::os::raw::c_int;$/;" v +hup_on_exit shell.c /^int hup_on_exit = 0;$/;" v typeref:typename:int +hval lib/intl/hash-string.h /^ unsigned long int hval, g;$/;" v typeref:typename:unsigned long int +hyper vendor/winapi/src/shared/rpcndr.rs /^pub type hyper = __int64;$/;" t +i lib/malloc/malloc.c /^ u_bits32_t i;$/;" m union:_malloc_guard typeref:typename:u_bits32_t file: +i variables.h /^ intmax_t i; \/* int value *\/$/;" m union:_value typeref:typename:intmax_t +i vendor/intl_pluralrules/src/operands.rs /^ pub i: u64,$/;" m struct:PluralOperands +i00afunc lib/malloc/alloca.c /^i00afunc (long *address)$/;" f typeref:typename:long file: +i00afunc lib/malloc/alloca.c /^i00afunc (long address)$/;" f typeref:typename:long file: +i1 lib/readline/rlprivate.h /^ int i1, i2;$/;" m struct:__rl_callback_generic_arg typeref:typename:int +i1 r_readline/src/lib.rs /^ pub i1: ::std::os::raw::c_int,$/;" m struct:__rl_callback_generic_arg +i2 lib/readline/rlprivate.h /^ int i1, i2;$/;" m struct:__rl_callback_generic_arg typeref:typename:int +i2 r_readline/src/lib.rs /^ pub i2: ::std::os::raw::c_int,$/;" m struct:__rl_callback_generic_arg +i32 vendor/nix/src/errno.rs /^impl ErrnoSentinel for i32 {$/;" c +i64 vendor/nix/src/errno.rs /^impl ErrnoSentinel for i64 {$/;" c +iai_parse_ctx_runtime vendor/fluent-syntax/benches/parser_iai.rs /^fn iai_parse_ctx_runtime() {$/;" f +iai_resolve_preferences vendor/fluent-bundle/benches/resolver_iai.rs /^fn iai_resolve_preferences() {$/;" f +ibuffer lib/readline/input.c /^static unsigned char ibuffer[512];$/;" v typeref:typename:unsigned char[512] file: +ibuffer_len lib/readline/input.c /^static int ibuffer_len = sizeof (ibuffer) - 1;$/;" v typeref:typename:int file: +ibuffer_space lib/readline/input.c /^ibuffer_space (void)$/;" f typeref:typename:int file: +iconv vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn iconv($/;" f +iconv vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn iconv($/;" f +iconv vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn iconv($/;" f +iconv vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn iconv($/;" f +iconv_close vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn iconv_close(cd: iconv_t) -> ::c_int;$/;" f +iconv_close vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn iconv_close(cd: iconv_t) -> ::c_int;$/;" f +iconv_close vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn iconv_close(cd: iconv_t) -> ::c_int;$/;" f +iconv_close vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn iconv_close(cd: iconv_t) -> ::c_int;$/;" f +iconv_open vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn iconv_open(tocode: *const ::c_char, fromcode: *const ::c_char) -> iconv_t;$/;" f +iconv_open vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn iconv_open(tocode: *const ::c_char, fromcode: *const ::c_char) -> iconv_t;$/;" f +iconv_open vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn iconv_open(tocode: *const ::c_char, fromcode: *const ::c_char) -> iconv_t;$/;" f +iconv_open vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn iconv_open(tocode: *const ::c_char, fromcode: *const ::c_char) -> iconv_t;$/;" f +iconv_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type iconv_t = *mut ::c_void;$/;" t +iconv_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type iconv_t = *mut ::c_void;$/;" t +iconv_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type iconv_t = *mut ::c_void;$/;" t +iconv_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type iconv_t = *mut ::c_void;$/;" t +id lib/intl/Makefile.in /^id: ID$/;" t +id target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" n object:reports.0 +id target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" n object:reports.1 +id target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" n object:reports.2 +id vendor/async-trait/tests/test.rs /^ async fn id(&self) -> i32;$/;" P interface:issue104::T1 +id vendor/fluent-bundle/src/message.rs /^ pub fn id(&self) -> &'m str {$/;" P implementation:FluentAttribute +id vendor/fluent-fallback/src/types.rs /^ pub id: Cow<'l, str>,$/;" m struct:L10nKey +id vendor/fluent-syntax/src/ast/mod.rs /^ pub id: Identifier,$/;" m struct:Attribute +id vendor/fluent-syntax/src/ast/mod.rs /^ pub id: Identifier,$/;" m struct:Message +id vendor/fluent-syntax/src/ast/mod.rs /^ pub id: Identifier,$/;" m struct:Term +id vendor/thiserror/tests/test_display.rs /^ id: &'static str,$/;" m struct:test_constants::Error +id_t r_bash/src/lib.rs /^pub type id_t = __id_t;$/;" t +id_t r_glob/src/lib.rs /^pub type id_t = __id_t;$/;" t +id_t r_readline/src/lib.rs /^pub type id_t = __id_t;$/;" t +id_t vendor/libc/src/fuchsia/mod.rs /^pub type id_t = ::c_uint;$/;" t +id_t vendor/libc/src/solid/mod.rs /^pub type id_t = u32;$/;" t +id_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type id_t = ::c_uint;$/;" t +id_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type id_t = i64;$/;" t +id_t vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type id_t = u32;$/;" t +id_t vendor/libc/src/unix/haiku/mod.rs /^pub type id_t = i32;$/;" t +id_t vendor/libc/src/unix/linux_like/mod.rs /^pub type id_t = ::c_uint;$/;" t +id_t vendor/libc/src/unix/newlib/mod.rs /^pub type id_t = u32;$/;" t +id_t vendor/libc/src/unix/solarish/mod.rs /^pub type id_t = ::c_int;$/;" t +ident vendor/nix/src/sys/event.rs /^ pub fn ident(&self) -> uintptr_t {$/;" P implementation:KEvent +ident vendor/proc-macro2/src/parse.rs /^fn ident(input: Cursor) -> PResult {$/;" f +ident vendor/syn/src/buffer.rs /^ pub fn ident(mut self) -> Option<(Ident, Cursor<'a>)> {$/;" P implementation:Cursor +ident vendor/syn/src/item.rs /^ ident: Ident,$/;" m struct:parsing::FlexibleItemType +ident vendor/syn/src/lib.rs /^mod ident;$/;" n +ident vendor/syn/src/lifetime.rs /^ pub ident: Ident,$/;" m struct:Lifetime +ident vendor/thiserror-impl/src/ast.rs /^ pub ident: Ident,$/;" m struct:Enum +ident vendor/thiserror-impl/src/ast.rs /^ pub ident: Ident,$/;" m struct:Struct +ident vendor/thiserror-impl/src/ast.rs /^ pub ident: Ident,$/;" m struct:Variant +ident_any vendor/proc-macro2/src/parse.rs /^fn ident_any(input: Cursor) -> PResult {$/;" f +ident_empty vendor/proc-macro2/tests/test.rs /^fn ident_empty() {$/;" f +ident_fragment vendor/quote/src/lib.rs /^mod ident_fragment;$/;" n +ident_fragment_display vendor/quote/src/ident_fragment.rs /^macro_rules! ident_fragment_display {$/;" M +ident_from_token vendor/syn/src/ident.rs /^macro_rules! ident_from_token {$/;" M +ident_invalid vendor/proc-macro2/tests/test.rs /^fn ident_invalid() {$/;" f +ident_maybe_raw vendor/quote/src/runtime.rs /^fn ident_maybe_raw(id: &str, span: Span) -> Ident {$/;" f +ident_new vendor/syn/tests/test_ident.rs /^fn ident_new() {$/;" f +ident_new_empty vendor/syn/tests/test_ident.rs /^fn ident_new_empty() {$/;" f +ident_new_invalid vendor/syn/tests/test_ident.rs /^fn ident_new_invalid() {$/;" f +ident_new_keyword vendor/syn/tests/test_ident.rs /^fn ident_new_keyword() {$/;" f +ident_new_lifetime vendor/syn/tests/test_ident.rs /^fn ident_new_lifetime() {$/;" f +ident_new_number vendor/syn/tests/test_ident.rs /^fn ident_new_number() {$/;" f +ident_new_underscore vendor/syn/tests/test_ident.rs /^fn ident_new_underscore() {$/;" f +ident_not_raw vendor/proc-macro2/src/parse.rs /^fn ident_not_raw(input: Cursor) -> PResult<&str> {$/;" f +ident_number vendor/proc-macro2/tests/test.rs /^fn ident_number() {$/;" f +ident_ok vendor/proc-macro2/src/fallback.rs /^ fn ident_ok(string: &str) -> bool {$/;" f function:validate_ident +ident_parse vendor/syn/tests/test_ident.rs /^fn ident_parse() {$/;" f +ident_parse_empty vendor/syn/tests/test_ident.rs /^fn ident_parse_empty() {$/;" f +ident_parse_invalid vendor/syn/tests/test_ident.rs /^fn ident_parse_invalid() {$/;" f +ident_parse_keyword vendor/syn/tests/test_ident.rs /^fn ident_parse_keyword() {$/;" f +ident_parse_lifetime vendor/syn/tests/test_ident.rs /^fn ident_parse_lifetime() {$/;" f +ident_parse_number vendor/syn/tests/test_ident.rs /^fn ident_parse_number() {$/;" f +ident_parse_underscore vendor/syn/tests/test_ident.rs /^fn ident_parse_underscore() {$/;" f +ident_raw_reserved vendor/proc-macro2/tests/test.rs /^fn ident_raw_reserved() {$/;" f +ident_raw_underscore vendor/proc-macro2/tests/test.rs /^fn ident_raw_underscore() {$/;" f +identify_required vendor/winapi/build.rs /^ fn identify_required(&mut self) {$/;" P implementation:Graph +idents vendor/proc-macro2/tests/test.rs /^fn idents() {$/;" f +idtype_t r_bash/src/lib.rs /^pub type idtype_t = u32;$/;" t +idtype_t r_glob/src/lib.rs /^pub type idtype_t = u32;$/;" t +idtype_t r_readline/src/lib.rs /^pub type idtype_t = u32;$/;" t +idtype_t vendor/libc/src/fuchsia/mod.rs /^pub type idtype_t = ::c_uint;$/;" t +idtype_t vendor/libc/src/solid/mod.rs /^pub type idtype_t = c_int;$/;" t +idtype_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type idtype_t = ::c_uint;$/;" t +idtype_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type idtype_t = ::c_uint;$/;" t +idtype_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type idtype_t = ::c_uint;$/;" t +idtype_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type idtype_t = ::c_int;$/;" t +idtype_t vendor/libc/src/unix/haiku/mod.rs /^pub type idtype_t = ::c_int;$/;" t +idtype_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type idtype_t = ::c_int;$/;" t +idtype_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type idtype_t = ::c_uint;$/;" t +idtype_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type idtype_t = ::c_uint;$/;" t +idtype_t vendor/libc/src/unix/solarish/mod.rs /^pub type idtype_t = ::c_uint;$/;" t +idx vendor/elsa/src/vec.rs /^ idx: usize,$/;" m struct:Iter +idx vendor/futures-executor/tests/local_pool.rs /^ idx: usize,$/;" m struct:tasks_are_scheduled_fairly::Spin +idxfile support/man2html.c /^static FILE *idxfile;$/;" v typeref:typename:FILE * file: +idxlabel support/man2html.c /^static char idxlabel[6] = "ixAAA";$/;" v typeref:typename:char[6] file: +if_ vendor/nix/src/net/mod.rs /^pub mod if_;$/;" n +if_alloc vendor/futures-core/src/future.rs /^mod if_alloc {$/;" n +if_alloc vendor/futures-core/src/stream.rs /^mod if_alloc {$/;" n +if_alloc vendor/futures-sink/src/lib.rs /^mod if_alloc {$/;" n +if_alloc vendor/futures-task/src/future_obj.rs /^mod if_alloc {$/;" n +if_alloc vendor/futures-task/src/spawn.rs /^mod if_alloc {$/;" n +if_com builtins_rust/cd/src/lib.rs /^pub struct if_com {$/;" s +if_com builtins_rust/command/src/lib.rs /^pub struct if_com {$/;" s +if_com builtins_rust/common/src/lib.rs /^pub struct if_com {$/;" s +if_com builtins_rust/complete/src/lib.rs /^pub struct if_com {$/;" s +if_com builtins_rust/declare/src/lib.rs /^pub struct if_com {$/;" s +if_com builtins_rust/fc/src/lib.rs /^pub struct if_com {$/;" s +if_com builtins_rust/fg_bg/src/lib.rs /^pub struct if_com {$/;" s +if_com builtins_rust/getopts/src/lib.rs /^pub struct if_com {$/;" s +if_com builtins_rust/jobs/src/lib.rs /^pub struct if_com {$/;" s +if_com builtins_rust/kill/src/intercdep.rs /^pub struct if_com {$/;" s +if_com builtins_rust/pushd/src/lib.rs /^pub struct if_com {$/;" s +if_com builtins_rust/setattr/src/intercdep.rs /^pub struct if_com {$/;" s +if_com builtins_rust/source/src/lib.rs /^pub struct if_com {$/;" s +if_com builtins_rust/type/src/lib.rs /^pub struct if_com {$/;" s +if_com command.h /^typedef struct if_com {$/;" s +if_com r_bash/src/lib.rs /^pub struct if_com {$/;" s +if_com r_glob/src/lib.rs /^pub struct if_com {$/;" s +if_com r_readline/src/lib.rs /^pub struct if_com {$/;" s +if_command parse.y /^if_command: IF compound_list THEN compound_list FI$/;" l +if_freenameindex vendor/libc/src/fuchsia/mod.rs /^ pub fn if_freenameindex(ptr: *mut if_nameindex);$/;" f +if_freenameindex vendor/libc/src/unix/bsd/mod.rs /^ pub fn if_freenameindex(ptr: *mut if_nameindex);$/;" f +if_freenameindex vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn if_freenameindex(ptr: *mut if_nameindex);$/;" f +if_freenameindex vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn if_freenameindex(ptr: *mut if_nameindex);$/;" f +if_freenameindex vendor/libc/src/unix/solarish/mod.rs /^ pub fn if_freenameindex(ptr: *mut if_nameindex);$/;" f +if_indextoname vendor/libc/src/fuchsia/mod.rs /^ pub fn if_indextoname(ifindex: ::c_uint, ifname: *mut ::c_char) -> *mut ::c_char;$/;" f +if_indextoname vendor/libc/src/unix/mod.rs /^ pub fn if_indextoname(ifindex: ::c_uint, ifname: *mut ::c_char) -> *mut ::c_char;$/;" f +if_indextoname vendor/winapi/src/shared/netioapi.rs /^ pub fn if_indextoname($/;" f +if_nameindex vendor/libc/src/fuchsia/mod.rs /^ pub fn if_nameindex() -> *mut if_nameindex;$/;" f +if_nameindex vendor/libc/src/unix/bsd/mod.rs /^ pub fn if_nameindex() -> *mut if_nameindex;$/;" f +if_nameindex vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn if_nameindex() -> *mut if_nameindex;$/;" f +if_nameindex vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn if_nameindex() -> *mut if_nameindex;$/;" f +if_nameindex vendor/libc/src/unix/solarish/mod.rs /^ pub fn if_nameindex() -> *mut if_nameindex;$/;" f +if_nameindex vendor/nix/src/net/if_.rs /^ pub fn if_nameindex() -> Result {$/;" f module:if_nameindex +if_nameindex vendor/nix/src/net/if_.rs /^mod if_nameindex {$/;" n +if_nametoindex vendor/libc/src/fuchsia/mod.rs /^ pub fn if_nametoindex(ifname: *const c_char) -> ::c_uint;$/;" f +if_nametoindex vendor/libc/src/unix/mod.rs /^ pub fn if_nametoindex(ifname: *const c_char) -> ::c_uint;$/;" f +if_nametoindex vendor/nix/src/net/if_.rs /^pub fn if_nametoindex(name: &P) -> Result {$/;" f +if_nametoindex vendor/winapi/src/shared/netioapi.rs /^ pub fn if_nametoindex($/;" f +if_stack lib/readline/bind.c /^static unsigned char *if_stack = (unsigned char *)NULL;$/;" v typeref:typename:unsigned char * file: +if_stack_depth lib/readline/bind.c /^static int if_stack_depth;$/;" v typeref:typename:int file: +if_stack_size lib/readline/bind.c /^static int if_stack_size;$/;" v typeref:typename:int file: +if_std vendor/futures-io/src/lib.rs /^mod if_std {$/;" n +if_std vendor/futures-util/src/future/either.rs /^mod if_std {$/;" n +ifdef vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "ifdef")] pub mod ifdef;$/;" n +ifelseval support/man2html.c /^static int ifelseval = 0;$/;" v typeref:typename:int file: +ifmib vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "ifmib")] pub mod ifmib;$/;" n +ifs_cmap builtins_rust/read/src/intercdep.rs /^ pub static mut ifs_cmap: [u8; 256];$/;" v +ifs_cmap r_bash/src/lib.rs /^ pub static mut ifs_cmap: [::std::os::raw::c_uchar; 0usize];$/;" v +ifs_cmap subst.c /^unsigned char ifs_cmap[UCHAR_MAX + 1];$/;" v typeref:typename:unsigned char[] +ifs_firstc r_bash/src/lib.rs /^ pub static mut ifs_firstc: [::std::os::raw::c_uchar; 0usize];$/;" v +ifs_firstc subst.c /^unsigned char ifs_firstc;$/;" v typeref:typename:unsigned char +ifs_firstc subst.c /^unsigned char ifs_firstc[MB_LEN_MAX];$/;" v typeref:typename:unsigned char[] +ifs_firstc_len r_bash/src/lib.rs /^ pub static mut ifs_firstc_len: usize;$/;" v +ifs_firstc_len subst.c /^size_t ifs_firstc_len;$/;" v typeref:typename:size_t +ifs_firstchar r_bash/src/lib.rs /^ pub fn ifs_firstchar(arg1: *mut ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +ifs_firstchar subst.c /^ifs_firstchar (lenp)$/;" f +ifs_is_null r_bash/src/lib.rs /^ pub static mut ifs_is_null: ::std::os::raw::c_int;$/;" v +ifs_is_null subst.c /^int ifs_is_set, ifs_is_null;$/;" v typeref:typename:int +ifs_is_set r_bash/src/lib.rs /^ pub static mut ifs_is_set: ::std::os::raw::c_int;$/;" v +ifs_is_set subst.c /^int ifs_is_set, ifs_is_null;$/;" v typeref:typename:int +ifs_value r_bash/src/lib.rs /^ pub static mut ifs_value: *mut ::std::os::raw::c_char;$/;" v +ifs_value subst.c /^char *ifs_value;$/;" v typeref:typename:char * +ifs_var r_bash/src/lib.rs /^ pub static mut ifs_var: *mut SHELL_VAR;$/;" v +ifs_var subst.c /^SHELL_VAR *ifs_var;$/;" v typeref:typename:SHELL_VAR * +ifs_whitesep subst.c /^#define ifs_whitesep(/;" d file: +ifs_whitespace subst.c /^#define ifs_whitespace(/;" d file: +ifsname variables.h /^#define ifsname(/;" d +ig_test vendor/memoffset/src/span_of.rs /^ fn ig_test() {$/;" f module:tests +ign pathexp.h /^struct ign {$/;" s +ign r_bash/src/lib.rs /^pub struct ign {$/;" s +ignore builtins_rust/cd/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:connection +ignore builtins_rust/cd/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:group_com +ignore builtins_rust/command/src/lib.rs /^ pub ignore: libc::c_int,$/;" m struct:connection +ignore builtins_rust/command/src/lib.rs /^ pub ignore: libc::c_int,$/;" m struct:group_com +ignore builtins_rust/common/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:connection +ignore builtins_rust/common/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:group_com +ignore builtins_rust/complete/src/lib.rs /^ ignore: c_int,$/;" m struct:connection +ignore builtins_rust/complete/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:group_com +ignore builtins_rust/declare/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:connection +ignore builtins_rust/declare/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:group_com +ignore builtins_rust/fc/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:connection +ignore builtins_rust/fc/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:group_com +ignore builtins_rust/fg_bg/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:connection +ignore builtins_rust/fg_bg/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:group_com +ignore builtins_rust/getopts/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:connection +ignore builtins_rust/getopts/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:group_com +ignore builtins_rust/jobs/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:connection +ignore builtins_rust/jobs/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:group_com +ignore builtins_rust/kill/src/intercdep.rs /^ pub ignore: c_int,$/;" m struct:group_com +ignore builtins_rust/pushd/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:connection +ignore builtins_rust/pushd/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:group_com +ignore builtins_rust/setattr/src/intercdep.rs /^ pub ignore: c_int,$/;" m struct:group_com +ignore builtins_rust/source/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:connection +ignore builtins_rust/source/src/lib.rs /^ ignore: libc::c_int,$/;" m struct:group_com +ignore builtins_rust/type/src/lib.rs /^ ignore: i32,$/;" m struct:connection +ignore builtins_rust/type/src/lib.rs /^ ignore: i32,$/;" m struct:group_com +ignore command.h /^ int ignore; \/* See description of CMD flags. *\/$/;" m struct:group_com typeref:typename:int +ignore command.h /^ int ignore; \/* Unused; simplifies make_command (). *\/$/;" m struct:connection typeref:typename:int +ignore r_bash/src/lib.rs /^ pub ignore: ::std::os::raw::c_int,$/;" m struct:connection +ignore r_bash/src/lib.rs /^ pub ignore: ::std::os::raw::c_int,$/;" m struct:group_com +ignore r_glob/src/lib.rs /^ pub ignore: ::std::os::raw::c_int,$/;" m struct:connection +ignore r_glob/src/lib.rs /^ pub ignore: ::std::os::raw::c_int,$/;" m struct:group_com +ignore r_readline/src/lib.rs /^ pub ignore: ::std::os::raw::c_int,$/;" m struct:connection +ignore r_readline/src/lib.rs /^ pub ignore: ::std::os::raw::c_int,$/;" m struct:group_com +ignore_err vendor/futures/tests/future_select_ok.rs /^fn ignore_err() {$/;" f +ignore_glob_matches pathexp.c /^ignore_glob_matches (names)$/;" f +ignore_glob_matches r_bash/src/lib.rs /^ pub fn ignore_glob_matches(arg1: *mut *mut ::std::os::raw::c_char);$/;" f +ignore_globbed_names pathexp.c /^ignore_globbed_names (names, name_func)$/;" f file: +ignore_none vendor/syn/src/buffer.rs /^ fn ignore_none(&mut self) {$/;" P implementation:Cursor +ignore_signal builtins_rust/trap/src/intercdep.rs /^ pub fn ignore_signal(sig: c_int);$/;" f +ignore_signal r_bash/src/lib.rs /^ pub fn ignore_signal(arg1: ::std::os::raw::c_int);$/;" f +ignore_signal r_glob/src/lib.rs /^ pub fn ignore_signal(arg1: ::std::os::raw::c_int);$/;" f +ignore_signal r_readline/src/lib.rs /^ pub fn ignore_signal(arg1: ::std::os::raw::c_int);$/;" f +ignore_signal trap.c /^ignore_signal (sig)$/;" f +ignore_tty_job_signals jobs.c /^ignore_tty_job_signals ()$/;" f typeref:typename:void +ignore_tty_job_signals nojobs.c /^ignore_tty_job_signals ()$/;" f typeref:typename:void +ignore_tty_job_signals r_bash/src/lib.rs /^ pub fn ignore_tty_job_signals();$/;" f +ignore_tty_job_signals r_jobs/src/lib.rs /^pub unsafe extern "C" fn ignore_tty_job_signals() {$/;" f +ignoreeof builtins_rust/set/src/lib.rs /^ static mut ignoreeof: i32;$/;" v +ignoreeof r_bash/src/lib.rs /^ pub static mut ignoreeof: ::std::os::raw::c_int;$/;" v +ignorefunc lib/readline/readline.h /^ rl_compignore_func_t *ignorefunc;$/;" m struct:readline_state typeref:typename:rl_compignore_func_t * +ignorefunc r_readline/src/lib.rs /^ pub ignorefunc: rl_compignore_func_t,$/;" m struct:readline_state +ignores pathexp.h /^ struct ign *ignores; \/* Store the ignore strings here *\/$/;" m struct:ignorevar typeref:struct:ign * +ignores r_bash/src/lib.rs /^ pub ignores: *mut ign,$/;" m struct:ignorevar +ignorevar pathexp.h /^struct ignorevar {$/;" s +ignorevar r_bash/src/lib.rs /^pub struct ignorevar {$/;" s +illumos_tap vendor/nix/src/sys/socket/addr.rs /^ fn illumos_tap() {$/;" f module:tests::link +image_id vendor/libc/src/unix/haiku/native.rs /^pub type image_id = i32;$/;" t +imaxabs r_bash/src/lib.rs /^ pub fn imaxabs(__n: intmax_t) -> intmax_t;$/;" f +imaxabs r_glob/src/lib.rs /^ pub fn imaxabs(__n: intmax_t) -> intmax_t;$/;" f +imaxabs r_readline/src/lib.rs /^ pub fn imaxabs(__n: intmax_t) -> intmax_t;$/;" f +imaxdiv r_bash/src/lib.rs /^ pub fn imaxdiv(__numer: intmax_t, __denom: intmax_t) -> imaxdiv_t;$/;" f +imaxdiv r_glob/src/lib.rs /^ pub fn imaxdiv(__numer: intmax_t, __denom: intmax_t) -> imaxdiv_t;$/;" f +imaxdiv r_readline/src/lib.rs /^ pub fn imaxdiv(__numer: intmax_t, __denom: intmax_t) -> imaxdiv_t;$/;" f +imaxdiv_t r_bash/src/lib.rs /^pub struct imaxdiv_t {$/;" s +imaxdiv_t r_glob/src/lib.rs /^pub struct imaxdiv_t {$/;" s +imaxdiv_t r_readline/src/lib.rs /^pub struct imaxdiv_t {$/;" s +imm vendor/winapi/src/um/mod.rs /^#[cfg(feature = "imm")] pub mod imm;$/;" n +immediate_fail vendor/syn/benches/file.rs /^ fn immediate_fail(_input: ParseStream) -> syn::Result<()> {$/;" f function:create_token_buffer +imp vendor/memchr/src/memchr/mod.rs /^ fn imp(n1: u8, haystack: &[u8]) -> Option {$/;" f function:memchr +imp vendor/memchr/src/memchr/mod.rs /^ fn imp(n1: u8, haystack: &[u8]) -> Option {$/;" f function:memrchr +imp vendor/memchr/src/memchr/mod.rs /^ fn imp(n1: u8, n2: u8, haystack: &[u8]) -> Option {$/;" f function:memchr2 +imp vendor/memchr/src/memchr/mod.rs /^ fn imp(n1: u8, n2: u8, haystack: &[u8]) -> Option {$/;" f function:memrchr2 +imp vendor/memchr/src/memchr/mod.rs /^ fn imp(n1: u8, n2: u8, n3: u8, haystack: &[u8]) -> Option {$/;" f function:memchr3 +imp vendor/memchr/src/memchr/mod.rs /^ fn imp(n1: u8, n2: u8, n3: u8, haystack: &[u8]) -> Option {$/;" f function:memrchr3 +imp vendor/once_cell/src/lib.rs /^mod imp;$/;" n +imp vendor/proc-macro2/src/lib.rs /^mod imp;$/;" n +impl_array vendor/smallvec/src/lib.rs /^macro_rules! impl_array($/;" M +impl_by_parsing_expr vendor/syn/src/expr.rs /^ macro_rules! impl_by_parsing_expr {$/;" M module:parsing +impl_clone_for_custom_keyword vendor/syn/src/custom_keyword.rs /^macro_rules! impl_clone_for_custom_keyword {$/;" M +impl_clone_for_custom_punctuation vendor/syn/src/custom_punctuation.rs /^macro_rules! impl_clone_for_custom_punctuation {$/;" M +impl_convert_type vendor/intl_pluralrules/src/operands.rs /^macro_rules! impl_convert_type {$/;" M +impl_deref_if_len_is_1 vendor/syn/src/token.rs /^macro_rules! impl_deref_if_len_is_1 {$/;" M +impl_enum vendor/thiserror-impl/src/expand.rs /^fn impl_enum(input: Enum) -> TokenStream {$/;" f +impl_extra_traits_for_custom_keyword vendor/syn/src/custom_keyword.rs /^macro_rules! impl_extra_traits_for_custom_keyword {$/;" M +impl_extra_traits_for_custom_punctuation vendor/syn/src/custom_punctuation.rs /^macro_rules! impl_extra_traits_for_custom_punctuation {$/;" M +impl_float_convert vendor/stdext/src/num/float_convert.rs /^macro_rules! impl_float_convert {$/;" M +impl_integer vendor/stdext/src/num/integer.rs /^macro_rules! impl_integer {$/;" M +impl_integer_type vendor/intl_pluralrules/src/operands.rs /^macro_rules! impl_integer_type {$/;" M +impl_low_level_token vendor/syn/src/token.rs /^macro_rules! impl_low_level_token {$/;" M +impl_parse_for_custom_keyword vendor/syn/src/custom_keyword.rs /^macro_rules! impl_parse_for_custom_keyword {$/;" M +impl_parse_for_custom_punctuation vendor/syn/src/custom_punctuation.rs /^macro_rules! impl_parse_for_custom_punctuation {$/;" M +impl_signed_integer_type vendor/intl_pluralrules/src/operands.rs /^macro_rules! impl_signed_integer_type {$/;" M +impl_struct vendor/thiserror-impl/src/expand.rs /^fn impl_struct(input: Struct) -> TokenStream {$/;" f +impl_t1 vendor/async-trait/tests/test.rs /^ macro_rules! impl_t1 {$/;" M module:issue104 +impl_to_tokens_for_custom_keyword vendor/syn/src/custom_keyword.rs /^macro_rules! impl_to_tokens_for_custom_keyword {$/;" M +impl_to_tokens_for_custom_punctuation vendor/syn/src/custom_punctuation.rs /^macro_rules! impl_to_tokens_for_custom_punctuation {$/;" M +impl_token vendor/syn/src/token.rs /^macro_rules! impl_token {$/;" M +implement_commands vendor/async-trait/tests/test.rs /^ macro_rules! implement_commands {$/;" M module:issue46 +implement_commands_workaround vendor/async-trait/tests/test.rs /^ macro_rules! implement_commands_workaround {$/;" M module:issue46 +implied_bounds vendor/thiserror-impl/src/attr.rs /^ pub implied_bounds: Set<(usize, Trait)>,$/;" m struct:Display +importable_function_name general.c /^importable_function_name (string, len)$/;" f +importable_function_name r_bash/src/lib.rs /^ pub fn importable_function_name($/;" f +importable_function_name r_glob/src/lib.rs /^ pub fn importable_function_name($/;" f +importable_function_name r_readline/src/lib.rs /^ pub fn importable_function_name($/;" f +imported_p builtins_rust/set/src/lib.rs /^macro_rules! imported_p {$/;" M +imported_p variables.h /^#define imported_p(/;" d +in6addr vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "in6addr")] pub mod in6addr;$/;" n +in_addr_t vendor/libc/src/fuchsia/mod.rs /^pub type in_addr_t = u32;$/;" t +in_addr_t vendor/libc/src/unix/mod.rs /^pub type in_addr_t = u32;$/;" t +in_addr_t vendor/libc/src/vxworks/mod.rs /^pub type in_addr_t = u32;$/;" t +in_handler lib/readline/callback.c /^static int in_handler; \/* terminal_prepped and signals set? *\/$/;" v typeref:typename:int file: +in_notify vendor/futures-util/src/compat/compat01as03.rs /^ fn in_notify(&mut self, cx: &mut Context<'_>, f: impl FnOnce(&mut S) -> R) -> R {$/;" P implementation:Compat01As03Sink +in_notify vendor/futures-util/src/compat/compat01as03.rs /^ fn in_notify(&mut self, cx: &mut Context<'_>, f: impl FnOnce(&mut T) -> R) -> R {$/;" P implementation:Compat01As03 +in_port_t vendor/libc/src/fuchsia/mod.rs /^pub type in_port_t = u16;$/;" t +in_port_t vendor/libc/src/unix/mod.rs /^pub type in_port_t = u16;$/;" t +in_progress vendor/nix/src/sys/aio.rs /^ fn in_progress(&self) -> bool {$/;" P implementation:AioCb +in_progress vendor/nix/src/sys/aio.rs /^ fn in_progress(&self) -> bool;$/;" P interface:Aio +in_progress vendor/nix/src/sys/aio.rs /^ in_progress: bool,$/;" m struct:AioCb +in_progress_queue vendor/futures-util/src/stream/futures_ordered.rs /^ in_progress_queue: FuturesUnordered>,$/;" m struct:FuturesOrdered +in_use vendor/elsa/src/index_map.rs /^ in_use: Cell,$/;" m struct:FrozenIndexMap +in_use vendor/elsa/src/index_set.rs /^ in_use: Cell,$/;" m struct:FrozenIndexSet +in_use vendor/elsa/src/map.rs /^ in_use: Cell,$/;" m struct:FrozenBTreeMap +in_use vendor/elsa/src/map.rs /^ in_use: Cell,$/;" m struct:FrozenMap +inaddr vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "inaddr")] pub mod inaddr;$/;" n +inc_num_messages vendor/futures-channel/src/mpsc/mod.rs /^ fn inc_num_messages(&self) -> Option {$/;" P implementation:BoundedSenderInner +inc_num_messages vendor/futures-channel/src/mpsc/mod.rs /^ fn inc_num_messages(&self) -> Option {$/;" P implementation:UnboundedSenderInner +incdir configure.ac /^AC_SUBST(incdir)$/;" s +included vendor/winapi/build.rs /^ included: Cell,$/;" m struct:Header +includedir Makefile.in /^includedir = @includedir@$/;" m +includedir builtins/Makefile.in /^includedir = @includedir@$/;" m +includedir lib/intl/Makefile.in /^includedir = @includedir@$/;" m +includes mksyntax.c /^char includes[] = "\\$/;" v typeref:typename:char[] +incoming vendor/futures-executor/src/local_pool.rs /^ incoming: Rc,$/;" m struct:LocalPool +incoming vendor/futures-executor/src/local_pool.rs /^ incoming: Weak,$/;" m struct:LocalSpawner +incomplete vendor/proc-macro2/tests/comments.rs /^fn incomplete() {$/;" f +incr support/man2html.c /^ int incr;$/;" m struct:INTDEF typeref:typename:int file: +incr_sec_num support/texi2html /^sub incr_sec_num {$/;" s +increase_refcount vendor/futures-task/src/waker.rs /^unsafe fn increase_refcount(data: *const ()) {$/;" f +increment_len vendor/smallvec/src/lib.rs /^ fn increment_len(&mut self, increment: usize) {$/;" P implementation:SetLenOnDrop +ind array.h /^ arrayind_t ind;$/;" m struct:array_element typeref:typename:arrayind_t +ind builtins_rust/mapfile/src/intercdep.rs /^ pub ind: arrayind_t,$/;" m struct:array_element +ind builtins_rust/read/src/intercdep.rs /^ pub ind: arrayind_t,$/;" m struct:array_element +ind expr.c /^ intmax_t ind; \/* array index if not -1 *\/$/;" m struct:lvalue typeref:typename:intmax_t file: +ind r_bash/src/lib.rs /^ pub ind: arrayind_t,$/;" m struct:array_element +ind r_glob/src/lib.rs /^ pub ind: arrayind_t,$/;" m struct:array_element +ind r_readline/src/lib.rs /^ pub ind: arrayind_t,$/;" m struct:array_element +indent execute_cmd.c /^indent (from, to)$/;" f file: +indent print_cmd.c /^indent (amount)$/;" f file: +indent r_print_cmd/src/lib.rs /^unsafe extern "C" fn indent(mut amount:c_int)$/;" f +indentation print_cmd.c /^static int indentation;$/;" v typeref:typename:int file: +indentation r_print_cmd/src/lib.rs /^pub static mut indentation:c_int = 0;$/;" v +indentation_amount print_cmd.c /^static int indentation_amount = 4;$/;" v typeref:typename:int file: +indentation_amount r_print_cmd/src/lib.rs /^pub static mut indentation_amount:c_int = 4;$/;" v +indentation_size print_cmd.c /^static int indentation_size;$/;" v typeref:typename:int file: +indentation_size r_print_cmd/src/lib.rs /^static mut indentation_size:c_int = 0;$/;" v +indentation_string print_cmd.c /^static char *indentation_string;$/;" v typeref:typename:char * file: +indentation_string r_print_cmd/src/lib.rs /^static mut indentation_string:*mut c_char = std::ptr::null_mut();$/;" v +index r_bash/src/lib.rs /^ pub fn index($/;" f +index r_glob/src/lib.rs /^ pub fn index($/;" f +index r_readline/src/lib.rs /^ pub fn index($/;" f +index vendor/chunky-vec/src/lib.rs /^ fn index(&self, index: usize) -> &Self::Output {$/;" P implementation:Chunk +index vendor/chunky-vec/src/lib.rs /^ fn index(&self, index: usize) -> &Self::Output {$/;" P implementation:ChunkyVec +index vendor/elsa/src/index_map.rs /^ fn index(&self, idx: K) -> &V::Target {$/;" P implementation:FrozenIndexMap +index vendor/elsa/src/index_set.rs /^ fn index(&self, idx: usize) -> &T::Target {$/;" P implementation:FrozenIndexSet +index vendor/elsa/src/map.rs /^ fn index(&self, idx: K) -> &V::Target {$/;" P implementation:FrozenBTreeMap +index vendor/elsa/src/map.rs /^ fn index(&self, idx: K) -> &V::Target {$/;" P implementation:FrozenMap +index vendor/elsa/src/sync.rs /^ fn index(&self, idx: K) -> &V::Target {$/;" P implementation:FrozenBTreeMap +index vendor/elsa/src/vec.rs /^ fn index(&self, idx: usize) -> &T::Target {$/;" P implementation:FrozenVec +index vendor/nix/src/net/if_.rs /^ pub fn index(&self) -> c_uint {$/;" P implementation:if_nameindex::Interface +index vendor/nix/test/sys/test_ioctl.rs /^ index: u32,$/;" m struct:linux_ioctls::v4l2_audio +index vendor/slab/src/lib.rs /^ fn index(&self, key: usize) -> &T {$/;" P implementation:Slab +index vendor/smallvec/src/lib.rs /^ fn index(&self, index: I) -> &I::Output {$/;" P implementation:SmallVec +index vendor/syn/src/punctuated.rs /^ fn index(&self, index: usize) -> &Self::Output {$/;" P implementation:Punctuated +index_file_p support/texi2dvi /^index_file_p ()$/;" f +index_map vendor/elsa/src/lib.rs /^pub mod index_map;$/;" n +index_multiple_chunks vendor/chunky-vec/src/lib.rs /^ fn index_multiple_chunks() {$/;" f module:tests +index_mut vendor/chunky-vec/src/lib.rs /^ fn index_mut(&mut self, index: usize) -> &mut Self::Output {$/;" P implementation:Chunk +index_mut vendor/chunky-vec/src/lib.rs /^ fn index_mut(&mut self, index: usize) -> &mut Self::Output {$/;" P implementation:ChunkyVec +index_mut vendor/slab/src/lib.rs /^ fn index_mut(&mut self, key: usize) -> &mut T {$/;" P implementation:Slab +index_mut vendor/smallvec/src/lib.rs /^ fn index_mut(&mut self, index: I) -> &mut I::Output {$/;" P implementation:SmallVec +index_mut vendor/syn/src/punctuated.rs /^ fn index_mut(&mut self, index: usize) -> &mut Self::Output {$/;" P implementation:Punctuated +index_set vendor/elsa/src/lib.rs /^pub mod index_set;$/;" n +indicator_name lib/readline/parse-colors.h /^static const char *const indicator_name[]=$/;" v typeref:typename:const char * const[] +indicator_name r_readline/src/lib.rs /^ pub static mut indicator_name: [*const ::std::os::raw::c_char; 25usize];$/;" v +indicator_no lib/readline/colors.h /^enum indicator_no$/;" g +indicator_no r_readline/src/lib.rs /^pub type indicator_no = u32;$/;" t +indirection_level r_bash/src/lib.rs /^ pub static mut indirection_level: ::std::os::raw::c_int;$/;" v +indirection_level r_print_cmd/src/lib.rs /^ static indirection_level:c_int;$/;" v +indirection_level shell.c /^int indirection_level = 0;$/;" v typeref:typename:int +indirection_level_string print_cmd.c /^indirection_level_string ()$/;" f typeref:typename:char * +indirection_level_string r_bash/src/lib.rs /^ pub fn indirection_level_string() -> *mut ::std::os::raw::c_char;$/;" f +indirection_string print_cmd.c /^static char *indirection_string = 0;$/;" v typeref:typename:char * file: +indirection_string r_print_cmd/src/lib.rs /^static mut indirection_string:*mut c_char = 0 as *mut c_char;$/;" v +indirection_stringsiz print_cmd.c /^static int indirection_stringsiz = 0;$/;" v typeref:typename:int file: +indirection_stringsiz r_print_cmd/src/lib.rs /^static mut indirection_stringsiz:c_int = 0;$/;" v +inert vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) fn inert() -> PrefilterState {$/;" P implementation:PrefilterState +inet_addr vendor/winapi/src/um/winsock2.rs /^ pub fn inet_addr($/;" f +inet_aton lib/sh/inet_aton.c /^inet_aton(cp, addr)$/;" f +inet_aton.o lib/sh/Makefile.in /^inet_aton.o: ${BASHINCDIR}\/stdc.h$/;" t +inet_aton.o lib/sh/Makefile.in /^inet_aton.o: ${BUILD_DIR}\/config.h$/;" t +inet_aton.o lib/sh/Makefile.in /^inet_aton.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +inet_aton.o lib/sh/Makefile.in /^inet_aton.o: inet_aton.c$/;" t +inet_ntoa vendor/winapi/src/um/winsock2.rs /^ pub fn inet_ntoa($/;" f +inet_ntop vendor/winapi/src/um/ws2tcpip.rs /^ pub fn inet_ntop($/;" f +inet_pton vendor/winapi/src/um/ws2tcpip.rs /^ pub fn inet_pton($/;" f +inf lib/readline/readline.h /^ FILE *inf;$/;" m struct:readline_state typeref:typename:FILE * +inf r_readline/src/lib.rs /^ pub inf: *mut FILE,$/;" m struct:readline_state +infallible vendor/smallvec/src/lib.rs /^fn infallible(result: Result) -> T {$/;" f +info lib/intl/Makefile.in /^info dvi ps pdf html:$/;" t +infodir Makefile.in /^infodir = @infodir@$/;" m +inherit_errexit builtins_rust/shopt/src/lib.rs /^ static mut inherit_errexit: i32;$/;" v +inherit_errexit r_bash/src/lib.rs /^ pub static mut inherit_errexit: ::std::os::raw::c_int;$/;" v +inherit_errexit subst.c /^int inherit_errexit = 0;$/;" v typeref:typename:int +inhibit_functions builtins/mkbuiltins.c /^int inhibit_functions = 0;$/;" v typeref:typename:int +inhibit_production builtins/mkbuiltins.c /^int inhibit_production = 0;$/;" v typeref:typename:int +init builtins_rust/cd/src/lib.rs /^ init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/command/src/lib.rs /^ pub init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/common/src/lib.rs /^ init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/complete/src/lib.rs /^ init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/declare/src/lib.rs /^ init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/fc/src/lib.rs /^ init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/fg_bg/src/lib.rs /^ init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/getopts/src/lib.rs /^ init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/jobs/src/lib.rs /^ init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/kill/src/intercdep.rs /^ pub init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/pushd/src/lib.rs /^ init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/setattr/src/intercdep.rs /^ pub init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/source/src/lib.rs /^ init: *mut WordList,$/;" m struct:arith_for_com +init builtins_rust/type/src/lib.rs /^ init: *mut WordList,$/;" m struct:arith_for_com +init command.h /^ WORD_LIST *init;$/;" m struct:arith_for_com typeref:typename:WORD_LIST * +init r_bash/src/lib.rs /^ pub init: *mut WORD_LIST,$/;" m struct:arith_for_com +init r_glob/src/lib.rs /^ pub init: *mut WORD_LIST,$/;" m struct:arith_for_com +init r_readline/src/lib.rs /^ pub init: *mut WORD_LIST,$/;" m struct:arith_for_com +init vendor/nix/src/sys/inotify.rs /^ pub fn init(flags: InitFlags) -> Result {$/;" P implementation:Inotify +init vendor/once_cell/src/imp_std.rs /^ fn init(&self, f: impl FnOnce() -> T) {$/;" P implementation:tests::OnceCell +init vendor/once_cell/src/lib.rs /^ init: Cell>,$/;" m struct:sync::Lazy +init vendor/once_cell/src/lib.rs /^ init: Cell>,$/;" m struct:unsync::Lazy +init_bash_argv builtins_rust/shopt/src/lib.rs /^ fn init_bash_argv();$/;" f +init_bash_argv builtins_rust/source/src/lib.rs /^ fn init_bash_argv();$/;" f +init_bash_argv r_bash/src/lib.rs /^ pub fn init_bash_argv();$/;" f +init_bash_argv variables.c /^init_bash_argv ()$/;" f typeref:typename:void +init_cmd_table builtins_rust/cmd/src/lib.rs /^fn init_cmd_table() {}$/;" f +init_conv_flag lib/sh/snprintf.c /^init_conv_flag (p)$/;" f file: +init_data lib/sh/snprintf.c /^init_data (p, string, length, format, mode)$/;" f file: +init_dynamic_array_var variables.c /^init_dynamic_array_var (name, getfunc, setfunc, attrs)$/;" f file: +init_dynamic_assoc_var variables.c /^init_dynamic_assoc_var (name, getfunc, setfunc, attrs)$/;" f file: +init_fromfs lib/sh/fnxform.c /^init_fromfs ()$/;" f typeref:typename:void file: +init_funcname_var variables.c /^init_funcname_var ()$/;" f typeref:typename:SHELL_VAR * file: +init_germanic_plural lib/intl/plural-exp.c /^init_germanic_plural ()$/;" f typeref:typename:void file: +init_input support/texi2html /^sub init_input {$/;" s +init_interactive shell.c /^init_interactive ()$/;" f typeref:typename:void file: +init_interactive_script shell.c /^init_interactive_script ()$/;" f typeref:typename:void file: +init_itemlist_from_varlist pcomplete.c /^init_itemlist_from_varlist (itp, svfunc)$/;" f file: +init_job_stats jobs.c /^init_job_stats ()$/;" f typeref:typename:void +init_job_stats r_bash/src/lib.rs /^ pub fn init_job_stats();$/;" f +init_job_stats r_jobs/src/lib.rs /^pub unsafe extern "C" fn init_job_stats() $/;" f +init_line_structures lib/readline/display.c /^init_line_structures (int minsize)$/;" f typeref:typename:void file: +init_lvalue expr.c /^init_lvalue (lv)$/;" f file: +init_mail_dates mailcheck.c /^init_mail_dates ()$/;" f typeref:typename:void +init_mail_dates r_bash/src/lib.rs /^ pub fn init_mail_dates();$/;" f +init_mail_file mailcheck.c /^init_mail_file (i)$/;" f file: +init_module vendor/nix/src/kmod.rs /^pub fn init_module(module_image: &[u8], param_values: &CStr) -> Result<()> {$/;" f +init_module vendor/nix/test/test_kmod/hello_mod/hello.c /^int init_module(void)$/;" f typeref:typename:int +init_noninteractive shell.c /^init_noninteractive ()$/;" f typeref:typename:void file: +init_seconds_var variables.c /^init_seconds_var ()$/;" f typeref:typename:SHELL_VAR * file: +init_signames CWRU/misc/sigstat.c /^init_signames()$/;" f +init_tofs lib/sh/fnxform.c /^init_tofs ()$/;" f typeref:typename:void file: +init_unix_command_map bashline.c /^init_unix_command_map ()$/;" f typeref:typename:void file: +init_yy_io input.c /^init_yy_io ()$/;" f typeref:typename:void +init_yy_io r_bash/src/lib.rs /^ pub fn init_yy_io($/;" f +initgroups vendor/libc/src/fuchsia/mod.rs /^ pub fn initgroups(user: *const ::c_char, group: ::gid_t) -> ::c_int;$/;" f +initgroups vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn initgroups(user: *const ::c_char, basegroup: ::c_int) -> ::c_int;$/;" f +initgroups vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn initgroups(name: *const ::c_char, basegid: ::gid_t) -> ::c_int;$/;" f +initgroups vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn initgroups(name: *const ::c_char, basegid: ::gid_t) -> ::c_int;$/;" f +initgroups vendor/libc/src/unix/haiku/mod.rs /^ pub fn initgroups(name: *const ::c_char, basegid: ::gid_t) -> ::c_int;$/;" f +initgroups vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn initgroups(user: *const ::c_char, group: ::gid_t) -> ::c_int;$/;" f +initgroups vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn initgroups(user: *const ::c_char, group: ::gid_t) -> ::c_int;$/;" f +initgroups vendor/libc/src/unix/solarish/mod.rs /^ pub fn initgroups(name: *const ::c_char, basegid: ::gid_t) -> ::c_int;$/;" f +initial_address lib/malloc/alloca.c /^ long initial_address; \/* Address of initial segment. *\/$/;" m struct:stk_stat typeref:typename:long file: +initial_size lib/malloc/alloca.c /^ long initial_size; \/* Size of initial segment. *\/$/;" m struct:stk_stat typeref:typename:long file: +initialize vendor/futures-util/src/io/mod.rs /^unsafe fn initialize(_reader: &R, buf: &mut [u8]) {$/;" f +initialize vendor/lazy_static/src/lib.rs /^ fn initialize(lazy: &Self);$/;" P interface:LazyStatic +initialize vendor/lazy_static/src/lib.rs /^pub fn initialize(lazy: &T) {$/;" f +initialize vendor/once_cell/src/imp_pl.rs /^ pub(crate) fn initialize(&self, f: F) -> Result<(), E>$/;" P implementation:OnceCell +initialize vendor/once_cell/src/imp_std.rs /^ pub(crate) fn initialize(&self, f: F) -> Result<(), E>$/;" P implementation:OnceCell +initialize vendor/proc-macro2/src/detection.rs /^fn initialize() {$/;" f +initialize_aliases alias.c /^initialize_aliases ()$/;" f typeref:typename:void +initialize_aliases r_bash/src/lib.rs /^ pub fn initialize_aliases();$/;" f +initialize_bash_input r_bash/src/lib.rs /^ pub fn initialize_bash_input();$/;" f +initialize_bashopts r_bash/src/lib.rs /^ pub fn initialize_bashopts(arg1: ::std::os::raw::c_int);$/;" f +initialize_dynamic_variables variables.c /^initialize_dynamic_variables ()$/;" f typeref:typename:void file: +initialize_flags flags.c /^initialize_flags ()$/;" f typeref:typename:void +initialize_flags r_bash/src/lib.rs /^ pub fn initialize_flags();$/;" f +initialize_group_array general.c /^initialize_group_array ()$/;" f typeref:typename:void file: +initialize_hostname_list bashline.c /^initialize_hostname_list ()$/;" f typeref:typename:void file: +initialize_inner vendor/once_cell/src/imp_pl.rs /^fn initialize_inner(state: &AtomicU8, init: &mut dyn FnMut() -> bool) {$/;" f +initialize_itemlist pcomplete.c /^initialize_itemlist (itp)$/;" f +initialize_job_control jobs.c /^initialize_job_control (force)$/;" f +initialize_job_control nojobs.c /^initialize_job_control (force)$/;" f +initialize_job_control r_bash/src/lib.rs /^ pub fn initialize_job_control(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +initialize_job_control r_jobs/src/lib.rs /^pub unsafe extern "C" fn initialize_job_control(mut force: c_int) -> c_int {$/;" f +initialize_job_signals jobs.c /^initialize_job_signals ()$/;" f typeref:typename:void +initialize_job_signals nojobs.c /^initialize_job_signals ()$/;" f typeref:typename:void +initialize_job_signals r_bash/src/lib.rs /^ pub fn initialize_job_signals();$/;" f +initialize_job_signals r_jobs/src/lib.rs /^pub unsafe extern "C" fn initialize_job_signals() {$/;" f +initialize_or_wait vendor/once_cell/src/imp_std.rs /^fn initialize_or_wait(queue: &AtomicPtr, mut init: Option<&mut dyn FnMut() -> bool>) {$/;" f +initialize_readline bashline.c /^initialize_readline ()$/;" f typeref:typename:void +initialize_readline builtins_rust/bind/src/lib.rs /^ fn initialize_readline();$/;" f +initialize_readline builtins_rust/read/src/intercdep.rs /^ pub fn initialize_readline() -> c_void;$/;" f +initialize_readline lib/readline/examples/fileman.c /^initialize_readline ()$/;" f typeref:typename:void +initialize_readline r_bash/src/lib.rs /^ pub fn initialize_readline();$/;" f +initialize_shell_builtins builtins/common.c /^initialize_shell_builtins ()$/;" f typeref:typename:void +initialize_shell_builtins builtins_rust/enable/src/lib.rs /^ fn initialize_shell_builtins();$/;" f +initialize_shell_builtins r_bash/src/lib.rs /^ pub fn initialize_shell_builtins();$/;" f +initialize_shell_level variables.c /^initialize_shell_level ()$/;" f typeref:typename:void file: +initialize_shell_options builtins_rust/set/src/lib.rs /^unsafe fn initialize_shell_options(no_shellopts: i32) {$/;" f +initialize_shell_options r_bash/src/lib.rs /^ pub fn initialize_shell_options(arg1: ::std::os::raw::c_int);$/;" f +initialize_shell_signals sig.c /^initialize_shell_signals ()$/;" f typeref:typename:void file: +initialize_shell_variables r_bash/src/lib.rs /^ pub fn initialize_shell_variables($/;" f +initialize_shell_variables variables.c /^initialize_shell_variables (env, privmode)$/;" f +initialize_siglist siglist.c /^initialize_siglist ()$/;" f typeref:typename:void +initialize_signals builtins_rust/exec/src/lib.rs /^ fn initialize_signals(reinit: i32);$/;" f +initialize_signals r_bash/src/lib.rs /^ pub fn initialize_signals(arg1: ::std::os::raw::c_int);$/;" f +initialize_signals sig.c /^initialize_signals (reinit)$/;" f +initialize_signames support/signames.c /^initialize_signames ()$/;" f typeref:typename:void +initialize_subshell execute_cmd.c /^initialize_subshell ()$/;" f typeref:typename:void file: +initialize_terminating_signals builtins_rust/read/src/intercdep.rs /^ pub fn initialize_terminating_signals();$/;" f +initialize_terminating_signals builtins_rust/trap/src/intercdep.rs /^ pub fn initialize_terminating_signals();$/;" f +initialize_terminating_signals r_bash/src/lib.rs /^ pub fn initialize_terminating_signals();$/;" f +initialize_terminating_signals sig.c /^initialize_terminating_signals ()$/;" f typeref:typename:void +initialize_traps builtins_rust/exec/src/lib.rs /^ fn initialize_traps();$/;" f +initialize_traps r_bash/src/lib.rs /^ pub fn initialize_traps();$/;" f +initialize_traps r_glob/src/lib.rs /^ pub fn initialize_traps();$/;" f +initialize_traps r_jobs/src/lib.rs /^ fn initialize_traps();$/;" f +initialize_traps r_readline/src/lib.rs /^ pub fn initialize_traps();$/;" f +initialize_traps trap.c /^initialize_traps ()$/;" f typeref:typename:void +initializer vendor/futures-util/src/io/cursor.rs /^ unsafe fn initializer(&self) -> Initializer {$/;" P implementation:Cursor +initstate r_bash/src/lib.rs /^ pub fn initstate($/;" f +initstate r_glob/src/lib.rs /^ pub fn initstate($/;" f +initstate r_readline/src/lib.rs /^ pub fn initstate($/;" f +initstate vendor/libc/src/solid/mod.rs /^ pub fn initstate(arg1: c_uint, arg2: *mut c_char, arg3: size_t) -> *mut c_char;$/;" f +initstate_r r_bash/src/lib.rs /^ pub fn initstate_r($/;" f +initstate_r r_glob/src/lib.rs /^ pub fn initstate_r($/;" f +initstate_r r_readline/src/lib.rs /^ pub fn initstate_r($/;" f +inlib.o builtins/Makefile.in /^inlib.o: $(BASHINCDIR)\/maxpath.h $(topdir)\/subst.h $(topdir)\/externs.h$/;" t +inlib.o builtins/Makefile.in /^inlib.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +inlib.o builtins/Makefile.in /^inlib.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +inlib.o builtins/Makefile.in /^inlib.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h ..\/pathnames.h$/;" t +inlib.o builtins/Makefile.in /^inlib.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h /;" t +inlib.o builtins/Makefile.in /^inlib.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +inline include/stdc.h /^# define inline$/;" d +inline lib/sh/strftime.c /^#define inline /;" d file: +inline vendor/smallvec/src/lib.rs /^ unsafe fn inline(&self) -> *const A::Item {$/;" P implementation:SmallVecData +inline_capacity vendor/smallvec/src/lib.rs /^ fn inline_capacity() -> usize {$/;" P implementation:SmallVec +inline_expression vendor/fluent-bundle/src/resolver/mod.rs /^mod inline_expression;$/;" n +inline_mut vendor/smallvec/src/lib.rs /^ unsafe fn inline_mut(&mut self) -> *mut A::Item {$/;" P implementation:SmallVecData +inline_size vendor/smallvec/src/lib.rs /^ pub fn inline_size(&self) -> usize {$/;" P implementation:SmallVec +inner vendor/async-trait/tests/test.rs /^ inner: Arc,$/;" m struct:issue45::TestSubscriber +inner vendor/fluent-fallback/src/pin_cell/mod.rs /^ inner: RefCell,$/;" m struct:PinCell +inner vendor/fluent-fallback/src/pin_cell/pin_mut.rs /^ pub(crate) inner: Pin>,$/;" m struct:PinMut +inner vendor/fluent-fallback/src/pin_cell/pin_ref.rs /^ pub(crate) inner: Pin>,$/;" m struct:PinRef +inner vendor/fluent-fallback/tests/localization_test.rs /^ inner: Rc,$/;" m struct:Locales +inner vendor/futures-channel/src/mpsc/mod.rs /^ inner: Arc>,$/;" m struct:BoundedSenderInner +inner vendor/futures-channel/src/mpsc/mod.rs /^ inner: Arc>,$/;" m struct:UnboundedSenderInner +inner vendor/futures-channel/src/mpsc/mod.rs /^ inner: Option>>,$/;" m struct:Receiver +inner vendor/futures-channel/src/mpsc/mod.rs /^ inner: Option>>,$/;" m struct:UnboundedReceiver +inner vendor/futures-channel/src/oneshot.rs /^ inner: &'a mut Sender,$/;" m struct:Cancellation +inner vendor/futures-channel/src/oneshot.rs /^ inner: Arc>,$/;" m struct:Receiver +inner vendor/futures-channel/src/oneshot.rs /^ inner: Arc>,$/;" m struct:Sender +inner vendor/futures-executor/src/unpark_mutex.rs /^ inner: UnsafeCell>,$/;" m struct:UnparkMutex +inner vendor/futures-util/src/abortable.rs /^ inner: Arc,$/;" m struct:AbortHandle +inner vendor/futures-util/src/abortable.rs /^ pub(crate) inner: Arc,$/;" m struct:AbortRegistration +inner vendor/futures-util/src/compat/compat01as03.rs /^ pub(crate) inner: Spawn01,$/;" m struct:Compat01As03Sink +inner vendor/futures-util/src/compat/compat01as03.rs /^ pub(crate) inner: Spawn01,$/;" m struct:Compat01As03 +inner vendor/futures-util/src/compat/compat03as01.rs /^ inner: T,$/;" m struct:CompatSink +inner vendor/futures-util/src/compat/compat03as01.rs /^ pub(crate) inner: T,$/;" m struct:Compat +inner vendor/futures-util/src/future/future/shared.rs /^ inner: Option>>,$/;" m struct:Shared +inner vendor/futures-util/src/future/select.rs /^ inner: Option<(A, B)>,$/;" m struct:Select +inner vendor/futures-util/src/future/select_all.rs /^ inner: Vec,$/;" m struct:SelectAll +inner vendor/futures-util/src/future/select_ok.rs /^ inner: Vec,$/;" m struct:SelectOk +inner vendor/futures-util/src/future/try_select.rs /^ inner: Option<(A, B)>,$/;" m struct:TrySelect +inner vendor/futures-util/src/io/buf_reader.rs /^ inner: Pin<&'a mut BufReader>,$/;" m struct:SeeKRelative +inner vendor/futures-util/src/io/cursor.rs /^ inner: io::Cursor,$/;" m struct:Cursor +inner vendor/futures-util/src/io/window.rs /^ inner: T,$/;" m struct:Window +inner vendor/futures-util/src/stream/futures_unordered/iter.rs /^ pub(super) inner: FuturesUnordered,$/;" m struct:IntoIter +inner vendor/futures/tests/io_buf_reader.rs /^ inner: Cursor<&'a [u8]>,$/;" m struct:maybe_pending_seek::MaybePendingSeek +inner vendor/futures/tests/io_buf_reader.rs /^ inner: &'a [u8],$/;" m struct:MaybePending +inner vendor/futures/tests/io_buf_reader.rs /^ inner: futures::io::Cursor,$/;" m struct:Cursor +inner vendor/futures/tests/io_buf_writer.rs /^ inner: Cursor>,$/;" m struct:maybe_pending_buf_writer_seek::MaybePendingSeek +inner vendor/futures/tests/io_buf_writer.rs /^ inner: Vec,$/;" m struct:MaybePending +inner vendor/futures/tests/io_read_to_end.rs /^ inner: Vec,$/;" m struct:issue2310::VecWrapper +inner vendor/futures/tests_disabled/stream.rs /^ inner: Peekable + Send>>,$/;" m struct:peek::Peek +inner vendor/lazy_static/tests/test.rs /^ pub mod inner {$/;" n module:visibility +inner vendor/libloading/src/safe.rs /^ inner: imp::Symbol,$/;" m struct:Symbol +inner vendor/nix/src/sys/termios.rs /^ inner: RefCell,$/;" m struct:Termios +inner vendor/once_cell/src/lib.rs /^ inner: UnsafeCell>,$/;" m struct:unsync::OnceCell +inner vendor/once_cell/src/race.rs /^ inner: AtomicPtr,$/;" m struct:once_box::OnceBox +inner vendor/once_cell/src/race.rs /^ inner: AtomicUsize,$/;" m struct:OnceNonZeroUsize +inner vendor/once_cell/src/race.rs /^ inner: OnceNonZeroUsize,$/;" m struct:OnceBool +inner vendor/proc-macro2/src/fallback.rs /^ inner: RcVec,$/;" m struct:TokenStream +inner vendor/proc-macro2/src/fallback.rs /^ inner: RcVecBuilder,$/;" m struct:TokenStreamBuilder +inner vendor/proc-macro2/src/lib.rs /^ inner: imp::TokenTreeIter,$/;" m struct:token_stream::IntoIter +inner vendor/proc-macro2/src/lib.rs /^ inner: imp::Group,$/;" m struct:Group +inner vendor/proc-macro2/src/lib.rs /^ inner: imp::Ident,$/;" m struct:Ident +inner vendor/proc-macro2/src/lib.rs /^ inner: imp::LexError,$/;" m struct:LexError +inner vendor/proc-macro2/src/lib.rs /^ inner: imp::Literal,$/;" m struct:Literal +inner vendor/proc-macro2/src/lib.rs /^ inner: imp::SourceFile,$/;" m struct:SourceFile +inner vendor/proc-macro2/src/lib.rs /^ inner: imp::Span,$/;" m struct:Span +inner vendor/proc-macro2/src/lib.rs /^ inner: imp::TokenStream,$/;" m struct:TokenStream +inner vendor/proc-macro2/src/rcvec.rs /^ inner: &'a mut Vec,$/;" m struct:RcVecMut +inner vendor/proc-macro2/src/rcvec.rs /^ inner: Rc>,$/;" m struct:RcVec +inner vendor/proc-macro2/src/rcvec.rs /^ inner: Vec,$/;" m struct:RcVecBuilder +inner vendor/proc-macro2/src/rcvec.rs /^ inner: vec::IntoIter,$/;" m struct:RcVecIntoIter +inner vendor/slab/src/lib.rs /^ inner: vec::Drain<'a, Entry>,$/;" m struct:Drain +inner vendor/syn/src/attr.rs /^ fn inner(self) -> Self::Ret {$/;" P implementation:Attribute +inner vendor/syn/src/attr.rs /^ fn inner(self) -> Self::Ret;$/;" P interface:FilterAttrs +inner vendor/syn/src/punctuated.rs /^ inner: Box + 'a>,$/;" m struct:IterMut +inner vendor/syn/src/punctuated.rs /^ inner: Box + 'a>,$/;" m struct:Iter +inner vendor/syn/src/punctuated.rs /^ inner: Vec<(T, P)>,$/;" m struct:Punctuated +inner vendor/syn/src/punctuated.rs /^ inner: slice::Iter<'a, (T, P)>,$/;" m struct:Pairs +inner vendor/syn/src/punctuated.rs /^ inner: slice::Iter<'a, (T, P)>,$/;" m struct:PrivateIter +inner vendor/syn/src/punctuated.rs /^ inner: slice::IterMut<'a, (T, P)>,$/;" m struct:PairsMut +inner vendor/syn/src/punctuated.rs /^ inner: slice::IterMut<'a, (T, P)>,$/;" m struct:PrivateIterMut +inner vendor/syn/src/punctuated.rs /^ inner: vec::IntoIter<(T, P)>,$/;" m struct:IntoPairs +inner vendor/syn/src/punctuated.rs /^ inner: vec::IntoIter,$/;" m struct:IntoIter +inner vendor/thiserror/tests/test_transparent.rs /^ inner: ErrorKind<'a>,$/;" m struct:test_non_static::Error +inner vendor/thiserror/tests/ui/transparent-struct-many.rs /^ inner: anyhow::Error,$/;" m struct:Error +inner_attrs_to_tokens vendor/syn/src/expr.rs /^ fn inner_attrs_to_tokens(attrs: &[Attribute], tokens: &mut TokenStream) {$/;" f module:printing +inner_poll_write vendor/futures-util/src/io/buf_writer.rs /^ pub(super) fn inner_poll_write($/;" P implementation:BufWriter +inner_poll_write_vectored vendor/futures-util/src/io/buf_writer.rs /^ pub(super) fn inner_poll_write_vectored($/;" P implementation:BufWriter +inner_unexpected vendor/syn/src/parse.rs /^fn inner_unexpected(buffer: &ParseBuffer) -> (Rc>, Option) {$/;" f +inner_waker vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ inner_waker: UnsafeCell>,$/;" m struct:InnerWaker +ino vendor/nix/src/dir.rs /^ pub fn ino(&self) -> u64 {$/;" P implementation:Entry +ino64_t r_bash/src/lib.rs /^pub type ino64_t = __ino64_t;$/;" t +ino64_t r_glob/src/lib.rs /^pub type ino64_t = __ino64_t;$/;" t +ino64_t r_readline/src/lib.rs /^pub type ino64_t = __ino64_t;$/;" t +ino64_t vendor/libc/src/fuchsia/mod.rs /^pub type ino64_t = u64;$/;" t +ino64_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type ino64_t = u64;$/;" t +ino64_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type ino64_t = u64;$/;" t +ino64_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type ino64_t = u64;$/;" t +ino_t r_bash/src/lib.rs /^pub type ino_t = __ino_t;$/;" t +ino_t r_glob/src/lib.rs /^pub type ino_t = __ino_t;$/;" t +ino_t r_readline/src/lib.rs /^pub type ino_t = __ino_t;$/;" t +ino_t vendor/libc/src/fuchsia/mod.rs /^pub type ino_t = u64;$/;" t +ino_t vendor/libc/src/solid/mod.rs /^pub type ino_t = u64;$/;" t +ino_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type ino_t = u64;$/;" t +ino_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type ino_t = u64;$/;" t +ino_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs /^pub type ino_t = u32;$/;" t +ino_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^pub type ino_t = ::c_ulong;$/;" t +ino_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^pub type ino_t = ::c_ulong;$/;" t +ino_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^pub type ino_t = ::c_ulong;$/;" t +ino_t vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type ino_t = u64;$/;" t +ino_t vendor/libc/src/unix/haiku/mod.rs /^pub type ino_t = i64;$/;" t +ino_t vendor/libc/src/unix/hermit/mod.rs /^pub type ino_t = u16;$/;" t +ino_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type ino_t = ::c_ulong;$/;" t +ino_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type ino_t = u64;$/;" t +ino_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mod.rs /^pub type ino_t = u64;$/;" t +ino_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type ino_t = u64;$/;" t +ino_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type ino_t = ::c_ulong;$/;" t +ino_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type ino_t = u32;$/;" t +ino_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs /^pub type ino_t = u64;$/;" t +ino_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type ino_t = ::c_ulong;$/;" t +ino_t vendor/libc/src/unix/redox/mod.rs /^pub type ino_t = ::c_ulong;$/;" t +ino_t vendor/libc/src/unix/solarish/mod.rs /^pub type ino_t = ::c_ulong;$/;" t +ino_t vendor/libc/src/vxworks/mod.rs /^pub type ino_t = ::c_ulong;$/;" t +ino_t vendor/libc/src/wasi.rs /^pub type ino_t = u64;$/;" t +ino_t vendor/libc/src/windows/mod.rs /^pub type ino_t = u16;$/;" t +inode_time_limit vendor/nix/src/sys/quota.rs /^ pub fn inode_time_limit(&self) -> Option {$/;" P implementation:Dqblk +inodes_hard_limit vendor/nix/src/sys/quota.rs /^ pub fn inodes_hard_limit(&self) -> Option {$/;" P implementation:Dqblk +inodes_soft_limit vendor/nix/src/sys/quota.rs /^ pub fn inodes_soft_limit(&self) -> Option {$/;" P implementation:Dqblk +inotify_add_watch vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn inotify_add_watch(fd: ::c_int, path: *const ::c_char, mask: u32) -> ::c_int;$/;" f +inotify_add_watch vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn inotify_add_watch(fd: ::c_int, path: *const ::c_char, mask: u32) -> ::c_int;$/;" f +inotify_init vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn inotify_init() -> ::c_int;$/;" f +inotify_init vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn inotify_init() -> ::c_int;$/;" f +inotify_init1 vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn inotify_init1(flags: ::c_int) -> ::c_int;$/;" f +inotify_init1 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn inotify_init1(flags: ::c_int) -> ::c_int;$/;" f +inotify_rm_watch vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn inotify_rm_watch(fd: ::c_int, wd: u32) -> ::c_int;$/;" f +inotify_rm_watch vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn inotify_rm_watch(fd: ::c_int, wd: ::c_int) -> ::c_int;$/;" f +input.o Makefile.in /^input.o: $(srcdir)\/config-top.h$/;" t +input.o Makefile.in /^input.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +input.o Makefile.in /^input.o: command.h ${BASHINCDIR}\/stdc.h general.h xmalloc.h input.h error.h externs.h$/;" t +input.o Makefile.in /^input.o: config.h bashtypes.h ${BASHINCDIR}\/filecntl.h ${BASHINCDIR}\/posixstat.h bashansi.h ${/;" t +input.o Makefile.in /^input.o: quit.h shell.h pathnames.h$/;" t +input.o lib/readline/Makefile.in /^input.o: ansi_stdlib.h$/;" t +input.o lib/readline/Makefile.in /^input.o: input.c$/;" t +input.o lib/readline/Makefile.in /^input.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h$/;" t +input.o lib/readline/Makefile.in /^input.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +input.o lib/readline/Makefile.in /^input.o: rlmbutil.h$/;" t +input.o lib/readline/Makefile.in /^input.o: rlprivate.h$/;" t +input.o lib/readline/Makefile.in /^input.o: xmalloc.h$/;" t +input_avail builtins_rust/read/src/intercdep.rs /^ pub fn input_avail(arg1: c_int) -> c_int;$/;" f +input_avail lib/sh/input_avail.c /^input_avail (fd)$/;" f +input_avail r_bash/src/lib.rs /^ pub fn input_avail(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +input_avail.o lib/sh/Makefile.in /^input_avail.o: ${BASHINCDIR}\/stdc.h$/;" t +input_avail.o lib/sh/Makefile.in /^input_avail.o: ${BUILD_DIR}\/config.h$/;" t +input_avail.o lib/sh/Makefile.in /^input_avail.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +input_avail.o lib/sh/Makefile.in /^input_avail.o: ${topdir}\/xmalloc.h ${BASHINCDIR}\/posixselect.h$/;" t +input_avail.o lib/sh/Makefile.in /^input_avail.o: input_avail.c$/;" t +input_file_name_decode support/texi2dvi /^input_file_name_decode ()$/;" f +input_flags vendor/nix/src/sys/termios.rs /^ pub input_flags: InputFlags,$/;" m struct:Termios +input_line r_bash/src/lib.rs /^ pub input_line: *mut ::std::os::raw::c_char,$/;" m struct:_sh_input_line_state_t +input_line shell.h /^ char *input_line;$/;" m struct:_sh_input_line_state_t typeref:typename:char * +input_line_index r_bash/src/lib.rs /^ pub input_line_index: usize,$/;" m struct:_sh_input_line_state_t +input_line_index shell.h /^ size_t input_line_index;$/;" m struct:_sh_input_line_state_t typeref:typename:size_t +input_line_len r_bash/src/lib.rs /^ pub input_line_len: usize,$/;" m struct:_sh_input_line_state_t +input_line_len shell.h /^ size_t input_line_len;$/;" m struct:_sh_input_line_state_t typeref:typename:size_t +input_line_size r_bash/src/lib.rs /^ pub input_line_size: usize,$/;" m struct:_sh_input_line_state_t +input_line_size shell.h /^ size_t input_line_size;$/;" m struct:_sh_input_line_state_t typeref:typename:size_t +input_line_terminator r_bash/src/lib.rs /^ pub input_line_terminator: ::std::os::raw::c_int,$/;" m struct:_sh_parser_state_t +input_line_terminator shell.h /^ int input_line_terminator;$/;" m struct:_sh_parser_state_t typeref:typename:int +input_property r_bash/src/lib.rs /^ pub input_property: *mut ::std::os::raw::c_char,$/;" m struct:_sh_input_line_state_t +input_property shell.h /^ char *input_property;$/;" m struct:_sh_input_line_state_t typeref:typename:char * +input_propsize r_bash/src/lib.rs /^ pub input_propsize: usize,$/;" m struct:_sh_input_line_state_t +input_propsize shell.h /^ size_t input_propsize;$/;" m struct:_sh_input_line_state_t typeref:typename:size_t +input_tty jobs.c /^#define input_tty(/;" d file: +input_tty lib/sh/winsize.c /^#define input_tty(/;" d file: +input_tty nojobs.c /^#define input_tty(/;" d file: +input_tty r_jobs/src/lib.rs /^macro_rules! input_tty {$/;" M +inputunit parse.y /^inputunit: simple_list simple_list_terminator$/;" l +insert vendor/elsa/src/index_map.rs /^ pub fn insert(&self, k: K, v: V) -> &V::Target {$/;" P implementation:FrozenIndexMap +insert vendor/elsa/src/index_set.rs /^ pub fn insert(&self, value: T) -> &T::Target {$/;" P implementation:FrozenIndexSet +insert vendor/elsa/src/map.rs /^ pub fn insert(&self, k: K, v: V) -> &V::Target {$/;" P implementation:FrozenBTreeMap +insert vendor/elsa/src/map.rs /^ pub fn insert(&self, k: K, v: V) -> &V::Target {$/;" P implementation:FrozenMap +insert vendor/elsa/src/sync.rs /^ pub fn insert(&self, k: K, v: V) -> &V::Target {$/;" P implementation:FrozenBTreeMap +insert vendor/elsa/src/sync.rs /^ pub fn insert(&self, k: K, v: V) -> &V::Target {$/;" P implementation:FrozenMap +insert vendor/fluent-fallback/tests/localization_test.rs /^ pub fn insert(&mut self, index: usize, element: LanguageIdentifier) {$/;" P implementation:Locales +insert vendor/fluent-fallback/tests/localization_test.rs /^ pub fn insert(&self, index: usize, element: LanguageIdentifier) {$/;" P implementation:InnerLocales +insert vendor/nix/src/sys/select.rs /^ pub fn insert(&mut self, fd: RawFd) {$/;" P implementation:FdSet +insert vendor/slab/src/lib.rs /^ pub fn insert(&mut self, val: T) -> usize {$/;" P implementation:Slab +insert vendor/slab/src/lib.rs /^ pub fn insert(self, val: T) -> &'a mut T {$/;" P implementation:VacantEntry +insert vendor/smallvec/benches/bench.rs /^ fn insert(&mut self, n: usize, val: T) {$/;" P implementation:SmallVec +insert vendor/smallvec/benches/bench.rs /^ fn insert(&mut self, n: usize, val: T) {$/;" P implementation:Vec +insert vendor/smallvec/benches/bench.rs /^ fn insert(&mut self, n: usize, val: T);$/;" P interface:Vector +insert vendor/smallvec/src/lib.rs /^ pub fn insert(&mut self, index: usize, element: A::Item) {$/;" P implementation:SmallVec +insert vendor/syn/src/punctuated.rs /^ pub fn insert(&mut self, index: usize, value: T)$/;" P implementation:Punctuated +insert vendor/thiserror-impl/src/generics.rs /^ pub fn insert(&mut self, ty: impl ToTokens, bound: impl ToTokens) {$/;" P implementation:InferredBounds +insert vendor/type-map/src/lib.rs /^ pub fn insert(&mut self, value: T) -> T {$/;" P implementation:concurrent::OccupiedEntry +insert vendor/type-map/src/lib.rs /^ pub fn insert(self, value: T) -> &'a mut T {$/;" P implementation:concurrent::VacantEntry +insert vendor/type-map/src/lib.rs /^ pub fn insert(&mut self, val: T) -> Option {$/;" P implementation:concurrent::TypeMap +insert vendor/type-map/src/lib.rs /^ pub fn insert(&mut self, value: T) -> T {$/;" P implementation:OccupiedEntry +insert vendor/type-map/src/lib.rs /^ pub fn insert(self, value: T) -> &'a mut T {$/;" P implementation:VacantEntry +insert vendor/type-map/src/lib.rs /^ pub fn insert(&mut self, val: T) -> Option {$/;" P implementation:TypeMap +insert_all_matches lib/readline/complete.c /^insert_all_matches (char **matches, int point, char *qc)$/;" f typeref:typename:void file: +insert_at vendor/slab/src/lib.rs /^ fn insert_at(&mut self, key: usize, val: T) {$/;" P implementation:Slab +insert_cmd builtins_rust/cmd/src/lib.rs /^pub fn insert_cmd(cmd: &str, item: Box) -> Option> {$/;" f +insert_commands support/texi2dvi /^insert_commands ()$/;" f +insert_empty_cmd builtins_rust/cmd/src/lib.rs /^pub fn insert_empty_cmd(cmd: String) -> bool {$/;" f +insert_from_slice vendor/smallvec/src/lib.rs /^ pub fn insert_from_slice(&mut self, index: usize, slice: &[A::Item]) {$/;" f +insert_full vendor/elsa/src/index_map.rs /^ pub fn insert_full(&self, k: K, v: V) -> (usize, &V::Target) {$/;" P implementation:FrozenIndexMap +insert_full vendor/elsa/src/index_set.rs /^ pub fn insert_full(&self, value: T) -> (usize, &T::Target) {$/;" P implementation:FrozenIndexSet +insert_get_many vendor/slab/tests/slab.rs /^fn insert_get_many() {$/;" f +insert_get_remove_many vendor/slab/tests/slab.rs /^fn insert_get_remove_many() {$/;" f +insert_get_remove_one vendor/slab/tests/slab.rs /^fn insert_get_remove_one() {$/;" f +insert_many vendor/smallvec/src/lib.rs /^ pub fn insert_many>(&mut self, index: usize, iterable: I) {$/;" P implementation:SmallVec +insert_many_noinline vendor/smallvec/benches/bench.rs /^ fn insert_many_noinline>($/;" f function:bench_insert_many +insert_many_panic vendor/smallvec/src/tests.rs /^mod insert_many_panic {$/;" n +insert_match lib/readline/complete.c /^insert_match (char *match, int start, int mtype, char *qc)$/;" f typeref:typename:void file: +insert_noinline vendor/smallvec/benches/bench.rs /^ fn insert_noinline>(vec: &mut V, p: usize, x: u64) {$/;" f function:gen_insert +insert_push_noinline vendor/smallvec/benches/bench.rs /^ fn insert_push_noinline>(vec: &mut V, x: u64) {$/;" f function:gen_insert_push +insert_some_chars lib/readline/display.c /^insert_some_chars (char *string, int count, int col)$/;" f typeref:typename:void file: +insert_with_vacant_entry vendor/slab/tests/slab.rs /^fn insert_with_vacant_entry() {$/;" f +inside_function_def print_cmd.c /^static int inside_function_def;$/;" v typeref:typename:int file: +inside_function_def r_print_cmd/src/lib.rs /^static mut inside_function_def:c_int = 0;$/;" v +inside_generic_method vendor/memoffset/src/offset_of.rs /^ fn inside_generic_method() {$/;" f module:tests +inside_proc_macro vendor/proc-macro2/src/detection.rs /^pub(crate) fn inside_proc_macro() -> bool {$/;" f +insmode lib/readline/readline.h /^ int insmode;$/;" m struct:readline_state typeref:typename:int +insmode r_readline/src/lib.rs /^ pub insmode: ::std::os::raw::c_int,$/;" m struct:readline_state +inspect vendor/futures-util/src/future/future/mod.rs /^ fn inspect(self, f: F) -> Inspect$/;" P interface:FutureExt +inspect vendor/futures-util/src/stream/stream/mod.rs /^ fn inspect(self, f: F) -> Inspect$/;" P interface:StreamExt +inspect vendor/futures/tests_disabled/stream.rs /^fn inspect() {$/;" f +inspect_err vendor/futures-util/src/future/try_future/mod.rs /^ fn inspect_err(self, f: F) -> InspectErr$/;" P interface:TryFutureExt +inspect_err vendor/futures-util/src/stream/try_stream/mod.rs /^ fn inspect_err(self, f: F) -> InspectErr$/;" P interface:TryStreamExt +inspect_err vendor/futures/tests_disabled/stream.rs /^fn inspect_err() {$/;" f +inspect_err_fn vendor/futures-util/src/fns.rs /^pub(crate) fn inspect_err_fn(f: F) -> InspectErrFn {$/;" f +inspect_fn vendor/futures-util/src/fns.rs /^pub(crate) fn inspect_fn(f: F) -> InspectFn {$/;" f +inspect_ok vendor/futures-util/src/future/try_future/mod.rs /^ fn inspect_ok(self, f: F) -> InspectOk$/;" P interface:TryFutureExt +inspect_ok vendor/futures-util/src/stream/try_stream/mod.rs /^ fn inspect_ok(self, f: F) -> InspectOk$/;" P interface:TryStreamExt +inspect_ok_fn vendor/futures-util/src/fns.rs /^pub(crate) fn inspect_ok_fn(f: F) -> InspectOkFn {$/;" f +inspectable vendor/winapi/src/winrt/mod.rs /^#[cfg(feature = "inspectable")] pub mod inspectable;$/;" n +install Makefile.in /^install: .made installdirs$/;" t +install builtins/Makefile.in /^install: @HELPINSTALL@$/;" t +install lib/glob/Makefile.in /^install:$/;" t +install lib/intl/Makefile.in /^install: install-exec install-data$/;" t +install lib/readline/Makefile.in /^install:$/;" t +install lib/sh/Makefile.in /^install:$/;" t +install lib/termcap/Makefile.in /^install: $/;" t +install lib/tilde/Makefile.in /^install:$/;" t +install-data lib/intl/Makefile.in /^install-data: all$/;" t +install-exec lib/intl/Makefile.in /^install-exec: all$/;" t +install-headers Makefile.in /^install-headers: install-headers-dirs$/;" t +install-headers-dirs Makefile.in /^install-headers-dirs:$/;" t +install-help builtins/Makefile.in /^install-help:$/;" t +install-strip Makefile.in /^install-strip:$/;" t +install-strip lib/intl/Makefile.in /^install-strip: install$/;" t +installcheck lib/intl/Makefile.in /^installcheck:$/;" t +installdirs Makefile.in /^installdirs:$/;" t +installdirs lib/intl/Makefile.in /^installdirs:$/;" t +installed-readline configure.ac /^AC_ARG_WITH(installed-readline, AC_HELP_STRING([--with-installed-readline], [use a version of th/;" w +instruction builtins_rust/command/src/lib.rs /^ pub instruction: r_instruction,$/;" m struct:redirect +instruction builtins_rust/kill/src/intercdep.rs /^ pub instruction: r_instruction,$/;" m struct:redirect +instruction builtins_rust/setattr/src/intercdep.rs /^ pub instruction: r_instruction,$/;" m struct:redirect +instruction command.h /^ enum r_instruction instruction; \/* What to do with the information. *\/$/;" m struct:redirect typeref:enum:r_instruction +instruction r_bash/src/lib.rs /^ pub instruction: r_instruction,$/;" m struct:redirect +instruction r_glob/src/lib.rs /^ pub instruction: r_instruction,$/;" m struct:redirect +instruction r_readline/src/lib.rs /^ pub instruction: r_instruction,$/;" m struct:redirect +insturction builtins_rust/exec/src/lib.rs /^ insturction: r_instruction,$/;" m struct:redirect +int vendor/proc-macro2/src/parse.rs /^fn int(input: Cursor) -> Result {$/;" f +int16_t vendor/libc/src/fixed_width_ints.rs /^pub type int16_t = i16;$/;" t +int32_t vendor/libc/src/fixed_width_ints.rs /^pub type int32_t = i32;$/;" t +int64_t vendor/libc/src/fixed_width_ints.rs /^pub type int64_t = i64;$/;" t +int8_t vendor/libc/src/fixed_width_ints.rs /^pub type int8_t = i8;$/;" t +int_curr_symbol r_bash/src/lib.rs /^ pub int_curr_symbol: *mut ::std::os::raw::c_char,$/;" m struct:lconv +int_fast16_t r_bash/src/lib.rs /^pub type int_fast16_t = ::std::os::raw::c_long;$/;" t +int_fast16_t r_glob/src/lib.rs /^pub type int_fast16_t = ::std::os::raw::c_long;$/;" t +int_fast16_t r_readline/src/lib.rs /^pub type int_fast16_t = ::std::os::raw::c_long;$/;" t +int_fast32_t r_bash/src/lib.rs /^pub type int_fast32_t = ::std::os::raw::c_long;$/;" t +int_fast32_t r_glob/src/lib.rs /^pub type int_fast32_t = ::std::os::raw::c_long;$/;" t +int_fast32_t r_readline/src/lib.rs /^pub type int_fast32_t = ::std::os::raw::c_long;$/;" t +int_fast64_t r_bash/src/lib.rs /^pub type int_fast64_t = ::std::os::raw::c_long;$/;" t +int_fast64_t r_glob/src/lib.rs /^pub type int_fast64_t = ::std::os::raw::c_long;$/;" t +int_fast64_t r_readline/src/lib.rs /^pub type int_fast64_t = ::std::os::raw::c_long;$/;" t +int_fast8_t r_bash/src/lib.rs /^pub type int_fast8_t = ::std::os::raw::c_schar;$/;" t +int_fast8_t r_glob/src/lib.rs /^pub type int_fast8_t = ::std::os::raw::c_schar;$/;" t +int_fast8_t r_readline/src/lib.rs /^pub type int_fast8_t = ::std::os::raw::c_schar;$/;" t +int_frac_digits r_bash/src/lib.rs /^ pub int_frac_digits: ::std::os::raw::c_char,$/;" m struct:lconv +int_least16_t r_bash/src/lib.rs /^pub type int_least16_t = __int_least16_t;$/;" t +int_least16_t r_glob/src/lib.rs /^pub type int_least16_t = __int_least16_t;$/;" t +int_least16_t r_readline/src/lib.rs /^pub type int_least16_t = __int_least16_t;$/;" t +int_least32_t r_bash/src/lib.rs /^pub type int_least32_t = __int_least32_t;$/;" t +int_least32_t r_glob/src/lib.rs /^pub type int_least32_t = __int_least32_t;$/;" t +int_least32_t r_readline/src/lib.rs /^pub type int_least32_t = __int_least32_t;$/;" t +int_least64_t r_bash/src/lib.rs /^pub type int_least64_t = __int_least64_t;$/;" t +int_least64_t r_glob/src/lib.rs /^pub type int_least64_t = __int_least64_t;$/;" t +int_least64_t r_readline/src/lib.rs /^pub type int_least64_t = __int_least64_t;$/;" t +int_least8_t r_bash/src/lib.rs /^pub type int_least8_t = __int_least8_t;$/;" t +int_least8_t r_glob/src/lib.rs /^pub type int_least8_t = __int_least8_t;$/;" t +int_least8_t r_readline/src/lib.rs /^pub type int_least8_t = __int_least8_t;$/;" t +int_n_cs_precedes r_bash/src/lib.rs /^ pub int_n_cs_precedes: ::std::os::raw::c_char,$/;" m struct:lconv +int_n_sep_by_space r_bash/src/lib.rs /^ pub int_n_sep_by_space: ::std::os::raw::c_char,$/;" m struct:lconv +int_n_sign_posn r_bash/src/lib.rs /^ pub int_n_sign_posn: ::std::os::raw::c_char,$/;" m struct:lconv +int_p_cs_precedes r_bash/src/lib.rs /^ pub int_p_cs_precedes: ::std::os::raw::c_char,$/;" m struct:lconv +int_p_sep_by_space r_bash/src/lib.rs /^ pub int_p_sep_by_space: ::std::os::raw::c_char,$/;" m struct:lconv +int_p_sign_posn r_bash/src/lib.rs /^ pub int_p_sign_posn: ::std::os::raw::c_char,$/;" m struct:lconv +int_value shell.c /^ int *int_value;$/;" m struct:__anon92221f0e0108 typeref:typename:int * file: +intbuf lib/sh/snprintf.c /^static char intbuf[INT_STRLEN_BOUND(unsigned long) + 1];$/;" v typeref:typename:char[] file: +intdef support/man2html.c /^static INTDEF *intdef;$/;" v typeref:typename:INTDEF * file: +integer vendor/stdext/src/num/mod.rs /^pub mod integer;$/;" n +integer_expected_error test.c /^integer_expected_error (pch)$/;" f file: +integer_p variables.h /^#define integer_p(/;" d +integer_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type integer_t = ::c_int;$/;" t +integral lib/sh/snprintf.c /^integral(real, ip)$/;" f file: +interactive builtins_rust/cd/src/lib.rs /^ static interactive: i32;$/;" v +interactive builtins_rust/exec/src/lib.rs /^ static interactive: i32;$/;" v +interactive builtins_rust/exit/src/lib.rs /^ static mut interactive: i32;$/;" v +interactive builtins_rust/read/src/lib.rs /^static mut interactive: c_int = 0;$/;" v +interactive builtins_rust/set/src/lib.rs /^ static mut interactive: i32;$/;" v +interactive builtins_rust/trap/src/intercdep.rs /^ pub static interactive: c_int;$/;" v +interactive r_bash/src/lib.rs /^ pub static mut interactive: ::std::os::raw::c_int;$/;" v +interactive r_jobs/src/lib.rs /^ static mut interactive: c_int;$/;" v +interactive shell.c /^int interactive = 0;$/;" v typeref:typename:int +interactive_comments builtins_rust/set/src/lib.rs /^ static mut interactive_comments: i32;$/;" v +interactive_comments builtins_rust/shopt/src/lib.rs /^ static mut interactive_comments: i32;$/;" v +interactive_comments flags.c /^int interactive_comments = 1;$/;" v typeref:typename:int +interactive_comments r_bash/src/lib.rs /^ pub static mut interactive_comments: ::std::os::raw::c_int;$/;" v +interactive_shell builtins_rust/common/src/lib.rs /^ static interactive_shell: i32;$/;" v +interactive_shell builtins_rust/exec/src/lib.rs /^ static interactive_shell: i32;$/;" v +interactive_shell builtins_rust/read/src/intercdep.rs /^ pub static mut interactive_shell : c_int;$/;" v +interactive_shell builtins_rust/set/src/lib.rs /^ static mut interactive_shell: i32;$/;" v +interactive_shell builtins_rust/source/src/lib.rs /^ static mut interactive_shell: i32;$/;" v +interactive_shell builtins_rust/trap/src/intercdep.rs /^ pub static interactive_shell: c_int;$/;" v +interactive_shell r_bash/src/lib.rs /^ pub static mut interactive_shell: ::std::os::raw::c_int;$/;" v +interactive_shell r_jobs/src/lib.rs /^ static mut interactive_shell: c_int;$/;" v +interactive_shell shell.c /^int interactive_shell = 0;$/;" v typeref:typename:int +interface_name vendor/nix/src/ifaddrs.rs /^ pub interface_name: String,$/;" m struct:InterfaceAddress +interior_null_fails vendor/libloading/tests/functions.rs /^fn interior_null_fails() {$/;" f +interleave_pending vendor/futures/tests/io_read_to_string.rs /^fn interleave_pending() {$/;" f +interlockedapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "interlockedapi")] pub mod interlockedapi;$/;" n +internal_calloc lib/malloc/malloc.c /^internal_calloc (n, s, file, line, flags)$/;" f file: +internal_cfree lib/malloc/malloc.c /^internal_cfree (p, file, line, flags)$/;" f file: +internal_error braces.c /^internal_error (format, arg1, arg2)$/;" f +internal_error builtins_rust/common/src/lib.rs /^ fn internal_error(format: *const c_char, ...);$/;" f +internal_error error.c /^internal_error (const char *format, ...)$/;" f typeref:typename:void +internal_error r_bash/src/lib.rs /^ pub fn internal_error(arg1: *const ::std::os::raw::c_char, ...);$/;" f +internal_error r_jobs/src/lib.rs /^ fn internal_error(_: *const c_char, _: ...);$/;" f +internal_error r_print_cmd/src/lib.rs /^ fn internal_error(format:*const c_char, _:...);$/;" f +internal_free lib/malloc/malloc.c /^internal_free (mem, file, line, flags)$/;" f file: +internal_function lib/intl/gettextP.h /^# define internal_function$/;" d +internal_function lib/intl/loadinfo.h /^# define internal_function$/;" d +internal_function lib/intl/localealias.c /^# define internal_function$/;" d file: +internal_function lib/intl/plural-exp.h /^# define internal_function$/;" d +internal_getopt builtins/bashgetopt.c /^internal_getopt(list, opts)$/;" f +internal_getopt builtins_rust/alias/src/lib.rs /^ fn internal_getopt(_: *mut WordList, _: *mut libc::c_char) -> libc::c_int;$/;" f +internal_getopt builtins_rust/bind/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt builtins_rust/cd/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt builtins_rust/command/src/lib.rs /^ fn internal_getopt(_: *mut WordList, _: *const libc::c_char) -> libc::c_int;$/;" f +internal_getopt builtins_rust/common/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt builtins_rust/complete/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt builtins_rust/declare/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt builtins_rust/enable/src/lib.rs /^ fn internal_getopt(_: *const WordList, _: *const libc::c_char) -> i32;$/;" f +internal_getopt builtins_rust/exec/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt builtins_rust/fc/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt builtins_rust/getopts/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt builtins_rust/hash/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt builtins_rust/help/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt builtins_rust/history/src/intercdep.rs /^ pub fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> c_int;$/;" f +internal_getopt builtins_rust/jobs/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt builtins_rust/kill/src/intercdep.rs /^ pub fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> c_int;$/;" f +internal_getopt builtins_rust/mapfile/src/intercdep.rs /^ pub fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> c_int;$/;" f +internal_getopt builtins_rust/printf/src/intercdep.rs /^ pub fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> c_int;$/;" f +internal_getopt builtins_rust/read/src/intercdep.rs /^ pub fn internal_getopt($/;" f +internal_getopt builtins_rust/set/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut libc::c_char) -> i32;$/;" f +internal_getopt builtins_rust/setattr/src/intercdep.rs /^ pub fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> c_int;$/;" f +internal_getopt builtins_rust/shopt/src/lib.rs /^ fn internal_getopt(_: *mut WordList, _: *mut libc::c_char) -> i32;$/;" f +internal_getopt builtins_rust/suspend/src/intercdep.rs /^ pub fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> c_int;$/;" f +internal_getopt builtins_rust/trap/src/intercdep.rs /^ pub fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> c_int;$/;" f +internal_getopt builtins_rust/type/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut libc::c_char) -> i32;$/;" f +internal_getopt builtins_rust/ulimit/src/lib.rs /^ fn internal_getopt(_: *mut WordList, _: *mut libc::c_char) -> i32;$/;" f +internal_getopt builtins_rust/umask/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt builtins_rust/wait/src/lib.rs /^ fn internal_getopt(list: *mut WordList, opts: *mut c_char) -> i32;$/;" f +internal_getopt r_bash/src/lib.rs /^ pub fn internal_getopt($/;" f +internal_inform error.c /^internal_inform (const char *format, ...)$/;" f typeref:typename:void +internal_inform r_bash/src/lib.rs /^ pub fn internal_inform(arg1: *const ::std::os::raw::c_char, ...);$/;" f +internal_malloc lib/malloc/malloc.c /^internal_malloc (n, file, line, flags) \/* get a block *\/$/;" f file: +internal_memalign lib/malloc/malloc.c /^internal_memalign (alignment, size, file, line, flags)$/;" f file: +internal_realloc lib/malloc/malloc.c /^internal_realloc (mem, n, file, line, flags)$/;" f file: +internal_valloc lib/malloc/malloc.c /^internal_valloc (size, file, line, flags)$/;" f file: +internal_warning builtins_rust/declare/src/lib.rs /^ fn internal_warning(format: *const c_char, ...);$/;" f +internal_warning error.c /^internal_warning (const char *format, ...)$/;" f typeref:typename:void +internal_warning hashlib.c /^internal_warning (const char *format, ...)$/;" f typeref:typename:void +internal_warning r_bash/src/lib.rs /^ pub fn internal_warning(arg1: *const ::std::os::raw::c_char, ...);$/;" f +internal_warning r_jobs/src/lib.rs /^ fn internal_warning(_: *const c_char, _: ...);$/;" f +internal_warning r_print_cmd/src/lib.rs /^ fn internal_warning(_:*const c_char, _:...);$/;" f +interrupt vendor/nix/src/sys/ptrace/linux.rs /^pub fn interrupt(pid: Pid) -> Result<()> {$/;" f +interrupt_immediately array.c /^int interrupt_immediately = 0;$/;" v typeref:typename:int +interrupt_immediately hashlib.c /^int interrupt_immediately = 0;$/;" v typeref:typename:int +interrupt_immediately r_bash/src/lib.rs /^ pub static mut interrupt_immediately: ::std::os::raw::c_int;$/;" v +interrupt_immediately sig.c /^int interrupt_immediately = 0;$/;" v typeref:typename:int +interrupt_state builtins_rust/common/src/lib.rs /^ static interrupt_state: c_int;$/;" v +interrupt_state builtins_rust/echo/src/lib.rs /^ static interrupt_state: c_int;$/;" v +interrupt_state builtins_rust/fc/src/lib.rs /^ static mut interrupt_state: i32;$/;" v +interrupt_state builtins_rust/help/src/lib.rs /^ static mut interrupt_state: i32;$/;" v +interrupt_state builtins_rust/history/src/intercdep.rs /^ pub static mut interrupt_state: c_int;$/;" v +interrupt_state builtins_rust/printf/src/intercdep.rs /^ pub static interrupt_state : c_int;$/;" v +interrupt_state builtins_rust/read/src/intercdep.rs /^ pub static interrupt_state : c_int;$/;" v +interrupt_state r_bash/src/lib.rs /^ pub static mut interrupt_state: sig_atomic_t;$/;" v +interrupt_state sig.c /^volatile sig_atomic_t interrupt_state = 0;$/;" v typeref:typename:volatile sig_atomic_t +intersects vendor/thiserror-impl/src/generics.rs /^ pub fn intersects(&self, ty: &Type) -> bool {$/;" P implementation:ParamsInScope +intl-compat.$lo lib/intl/Makefile.in /^bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomai/;" t +intl-compat.lo lib/intl/Makefile.in /^intl-compat.lo: $(srcdir)\/intl-compat.c$/;" t +intls vendor/fluent-bundle/src/bundle.rs /^ pub(crate) intls: M,$/;" m struct:FluentBundle +intmax_t builtins_rust/break_1/src/lib.rs /^type intmax_t = c_long;$/;" t +intmax_t builtins_rust/printf/src/intercdep.rs /^pub type intmax_t = __intmax_t;$/;" t +intmax_t builtins_rust/read/src/intercdep.rs /^pub type intmax_t = __intmax_t;$/;" t +intmax_t builtins_rust/setattr/src/intercdep.rs /^pub type intmax_t = __intmax_t;$/;" t +intmax_t lib/sh/snprintf.c /^#define intmax_t /;" d file: +intmax_t r_bash/src/lib.rs /^pub type intmax_t = __intmax_t;$/;" t +intmax_t r_glob/src/lib.rs /^pub type intmax_t = __intmax_t;$/;" t +intmax_t r_readline/src/lib.rs /^pub type intmax_t = __intmax_t;$/;" t +intmax_t vendor/libc/src/fuchsia/mod.rs /^pub type intmax_t = i64;$/;" t +intmax_t vendor/libc/src/hermit/mod.rs /^pub type intmax_t = i64;$/;" t +intmax_t vendor/libc/src/psp.rs /^pub type intmax_t = i64;$/;" t +intmax_t vendor/libc/src/sgx.rs /^pub type intmax_t = i64;$/;" t +intmax_t vendor/libc/src/solid/mod.rs /^pub type intmax_t = i64;$/;" t +intmax_t vendor/libc/src/switch.rs /^pub type intmax_t = i64;$/;" t +intmax_t vendor/libc/src/unix/mod.rs /^pub type intmax_t = i64;$/;" t +intmax_t vendor/libc/src/vxworks/mod.rs /^pub type intmax_t = i64;$/;" t +intmax_t vendor/libc/src/wasi.rs /^pub type intmax_t = i64;$/;" t +intmax_t vendor/libc/src/windows/mod.rs /^pub type intmax_t = i64;$/;" t +into vendor/tinystr/src/tinystr16.rs /^ fn into(self) -> u128 {$/;" P implementation:TinyStr16 +into vendor/tinystr/src/tinystr4.rs /^ fn into(self) -> u32 {$/;" P implementation:TinyStr4 +into vendor/tinystr/src/tinystr8.rs /^ fn into(self) -> u64 {$/;" P implementation:TinyStr8 +into_async_read vendor/futures-util/src/stream/try_stream/mod.rs /^ fn into_async_read(self) -> IntoAsyncRead$/;" P interface:TryStreamExt +into_async_read vendor/futures-util/src/stream/try_stream/mod.rs /^mod into_async_read;$/;" n +into_boxed_slice vendor/smallvec/src/lib.rs /^ pub fn into_boxed_slice(self) -> Box<[A::Item]> {$/;" P implementation:SmallVec +into_compile_error vendor/syn/src/error.rs /^ pub fn into_compile_error(self) -> TokenStream {$/;" P implementation:Error +into_compiler_token vendor/proc-macro2/src/wrapper.rs /^fn into_compiler_token(token: TokenTree) -> proc_macro::TokenTree {$/;" f +into_future vendor/futures-util/src/future/try_future/mod.rs /^ fn into_future(self) -> IntoFuture$/;" P interface:TryFutureExt +into_future vendor/futures-util/src/future/try_future/mod.rs /^mod into_future;$/;" n +into_future vendor/futures-util/src/stream/stream/mod.rs /^ fn into_future(self) -> StreamFuture$/;" P interface:StreamExt +into_future vendor/futures-util/src/stream/stream/mod.rs /^mod into_future;$/;" n +into_future_obj vendor/futures-task/src/future_obj.rs /^ pub unsafe fn into_future_obj(self) -> FutureObj<'a, T> {$/;" P implementation:LocalFutureObj +into_inline vendor/smallvec/src/lib.rs /^ unsafe fn into_inline(self) -> MaybeUninit {$/;" P implementation:SmallVecData +into_inner vendor/futures-channel/src/mpsc/mod.rs /^ pub fn into_inner(self) -> T {$/;" P implementation:TrySendError +into_inner vendor/futures-executor/src/local_pool.rs /^ pub fn into_inner(self) -> S {$/;" P implementation:BlockingStream +into_inner vendor/futures-util/src/compat/compat01as03.rs /^ pub fn into_inner(self) -> S {$/;" P implementation:Compat01As03Sink +into_inner vendor/futures-util/src/compat/compat01as03.rs /^ pub fn into_inner(self) -> T {$/;" P implementation:Compat01As03 +into_inner vendor/futures-util/src/compat/compat03as01.rs /^ pub fn into_inner(self) -> T {$/;" P implementation:Compat +into_inner vendor/futures-util/src/compat/compat03as01.rs /^ pub fn into_inner(self) -> T {$/;" P implementation:CompatSink +into_inner vendor/futures-util/src/future/either.rs /^ pub fn into_inner(self) -> T {$/;" P implementation:Either +into_inner vendor/futures-util/src/future/ready.rs /^ pub fn into_inner(mut self) -> T {$/;" P implementation:Ready +into_inner vendor/futures-util/src/future/select_all.rs /^ pub fn into_inner(self) -> Vec {$/;" P implementation:SelectAll +into_inner vendor/futures-util/src/io/allow_std.rs /^ pub fn into_inner(self) -> T {$/;" P implementation:AllowStdIo +into_inner vendor/futures-util/src/io/chain.rs /^ pub fn into_inner(self) -> (T, U) {$/;" f +into_inner vendor/futures-util/src/io/cursor.rs /^ pub fn into_inner(self) -> T {$/;" P implementation:Cursor +into_inner vendor/futures-util/src/io/window.rs /^ pub fn into_inner(self) -> T {$/;" P implementation:Window +into_inner vendor/futures-util/src/lock/mutex.rs /^ pub fn into_inner(self) -> T {$/;" P implementation:Mutex +into_inner vendor/futures-util/src/sink/fanout.rs /^ pub fn into_inner(self) -> (Si1, Si2) {$/;" P implementation:Fanout +into_inner vendor/futures-util/src/stream/select.rs /^ pub fn into_inner(self) -> (St1, St2) {$/;" P implementation:Select +into_inner vendor/futures-util/src/stream/select_with_strategy.rs /^ pub fn into_inner(self) -> (St1, St2) {$/;" P implementation:SelectWithStrategy +into_inner vendor/futures-util/src/stream/stream/into_future.rs /^ pub fn into_inner(self) -> Option {$/;" P implementation:StreamFuture +into_inner vendor/futures-util/src/stream/stream/zip.rs /^ pub fn into_inner(self) -> (St1, St2) {$/;" P implementation:Zip +into_inner vendor/once_cell/src/imp_pl.rs /^ pub(crate) fn into_inner(self) -> Option {$/;" P implementation:OnceCell +into_inner vendor/once_cell/src/imp_std.rs /^ pub(crate) fn into_inner(self) -> Option {$/;" P implementation:OnceCell +into_inner vendor/once_cell/src/lib.rs /^ pub fn into_inner(self) -> Option {$/;" P implementation:sync::OnceCell +into_inner vendor/once_cell/src/lib.rs /^ pub fn into_inner(self) -> Option {$/;" P implementation:unsync::OnceCell +into_inner vendor/once_cell/tests/it.rs /^ fn into_inner() {$/;" f module:sync +into_inner vendor/once_cell/tests/it.rs /^ fn into_inner() {$/;" f module:unsync +into_inner vendor/smallvec/src/lib.rs /^ pub fn into_inner(self) -> Result {$/;" P implementation:SmallVec +into_iter vendor/chunky-vec/src/lib.rs /^ fn into_iter(self) -> Iter<'a, T> {$/;" P implementation:ChunkyVec +into_iter vendor/chunky-vec/src/lib.rs /^ fn into_iter(self) -> IterMut<'a, T> {$/;" P implementation:ChunkyVec +into_iter vendor/elsa/src/vec.rs /^ fn into_iter(self) -> Iter<'a, T> {$/;" P implementation:FrozenVec +into_iter vendor/fluent-bundle/src/args.rs /^ fn into_iter(self) -> Self::IntoIter {$/;" P implementation:FluentArgs +into_iter vendor/fluent-fallback/src/cache.rs /^ fn into_iter(self) -> Self::IntoIter {$/;" f +into_iter vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn into_iter(mut self) -> Self::IntoIter {$/;" P implementation:FuturesUnordered +into_iter vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn into_iter(self) -> Self::IntoIter {$/;" P implementation:FuturesUnordered +into_iter vendor/futures-util/src/stream/select_all.rs /^ fn into_iter(self) -> Self::IntoIter {$/;" P implementation:SelectAll +into_iter vendor/futures/tests/stream_select_all.rs /^fn into_iter() {$/;" f +into_iter vendor/nix/src/dir.rs /^ fn into_iter(self) -> Self::IntoIter {$/;" P implementation:Dir +into_iter vendor/nix/src/net/if_.rs /^ fn into_iter(self) -> Self::IntoIter {$/;" P implementation:if_nameindex::Interfaces +into_iter vendor/proc-macro2/src/fallback.rs /^ fn into_iter(self) -> TokenTreeIter {$/;" P implementation:TokenStream +into_iter vendor/proc-macro2/src/lib.rs /^ fn into_iter(self) -> IntoIter {$/;" P implementation:token_stream::TokenStream +into_iter vendor/proc-macro2/src/rcvec.rs /^ fn into_iter(self) -> Self::IntoIter {$/;" P implementation:RcVecBuilder +into_iter vendor/proc-macro2/src/wrapper.rs /^ fn into_iter(self) -> TokenTreeIter {$/;" P implementation:TokenStream +into_iter vendor/slab/src/lib.rs /^ fn into_iter(self) -> IntoIter {$/;" P implementation:Slab +into_iter vendor/slab/src/lib.rs /^ fn into_iter(self) -> Iter<'a, T> {$/;" P implementation:Slab +into_iter vendor/slab/src/lib.rs /^ fn into_iter(self) -> IterMut<'a, T> {$/;" P implementation:Slab +into_iter vendor/slab/tests/slab.rs /^fn into_iter() {$/;" f +into_iter vendor/smallvec/src/lib.rs /^ fn into_iter(mut self) -> Self::IntoIter {$/;" P implementation:SmallVec +into_iter vendor/smallvec/src/lib.rs /^ fn into_iter(self) -> Self::IntoIter {$/;" P implementation:SmallVec +into_iter vendor/smallvec/src/tests.rs /^fn into_iter() {$/;" f +into_iter vendor/syn/src/data.rs /^ fn into_iter(self) -> Self::IntoIter {$/;" P implementation:Fields +into_iter vendor/syn/src/error.rs /^ fn into_iter(self) -> Self::IntoIter {$/;" P implementation:Error +into_iter vendor/syn/src/punctuated.rs /^ fn into_iter(self) -> Self::IntoIter {$/;" P implementation:Punctuated +into_iter_cancel vendor/futures/tests/stream_futures_unordered.rs /^fn into_iter_cancel() {$/;" f +into_iter_drop vendor/smallvec/src/tests.rs /^fn into_iter_drop() {$/;" f +into_iter_len vendor/futures/tests/stream_futures_unordered.rs /^fn into_iter_len() {$/;" f +into_iter_partial vendor/futures/tests/stream_futures_unordered.rs /^fn into_iter_partial() {$/;" f +into_iter_rev vendor/slab/tests/slab.rs /^fn into_iter_rev() {$/;" f +into_iter_rev vendor/smallvec/src/tests.rs /^fn into_iter_rev() {$/;" f +into_map vendor/elsa/src/index_map.rs /^ pub fn into_map(self) -> IndexMap {$/;" P implementation:FrozenIndexMap +into_map vendor/elsa/src/map.rs /^ pub fn into_map(self) -> BTreeMap {$/;" P implementation:FrozenBTreeMap +into_map vendor/elsa/src/map.rs /^ pub fn into_map(self) -> HashMap {$/;" P implementation:FrozenMap +into_mut vendor/type-map/src/lib.rs /^ pub fn into_mut(self) -> &'a mut T {$/;" P implementation:concurrent::OccupiedEntry +into_mut vendor/type-map/src/lib.rs /^ pub fn into_mut(self) -> &'a mut T {$/;" P implementation:OccupiedEntry +into_owned vendor/memchr/src/cow.rs /^ pub fn into_owned(self) -> CowBytes<'static> {$/;" P implementation:CowBytes +into_owned vendor/memchr/src/memmem/mod.rs /^ fn into_owned(self) -> Searcher<'static> {$/;" P implementation:Searcher +into_owned vendor/memchr/src/memmem/mod.rs /^ fn into_owned(self) -> SearcherRev<'static> {$/;" P implementation:SearcherRev +into_owned vendor/memchr/src/memmem/mod.rs /^ pub fn into_owned(self) -> FindIter<'h, 'static> {$/;" P implementation:FindIter +into_owned vendor/memchr/src/memmem/mod.rs /^ pub fn into_owned(self) -> FindRevIter<'h, 'static> {$/;" P implementation:FindRevIter +into_owned vendor/memchr/src/memmem/mod.rs /^ pub fn into_owned(self) -> Finder<'static> {$/;" P implementation:Finder +into_owned vendor/memchr/src/memmem/mod.rs /^ pub fn into_owned(self) -> FinderRev<'static> {$/;" P implementation:FinderRev +into_owner vendor/self_cell/src/unsafe_self_cell.rs /^ pub unsafe fn into_owner(self) -> Owner {$/;" P implementation:UnsafeSelfCell +into_pairs vendor/syn/src/punctuated.rs /^ pub fn into_pairs(self) -> IntoPairs {$/;" P implementation:Punctuated +into_parts vendor/unic-langid-impl/src/lib.rs /^ pub fn into_parts(self) -> PartsTuple {$/;" P implementation:LanguageIdentifier +into_raw vendor/futures-task/src/future_obj.rs /^ fn into_raw(self) -> *mut (dyn Future + 'a) {$/;" P implementation:if_alloc::Box +into_raw vendor/futures-task/src/future_obj.rs /^ fn into_raw(self) -> *mut (dyn Future + 'a) {$/;" P implementation:if_alloc::Pin +into_raw vendor/futures-task/src/future_obj.rs /^ fn into_raw(self) -> *mut (dyn Future + 'a) {$/;" f module:if_alloc +into_raw vendor/futures-task/src/future_obj.rs /^ fn into_raw(self) -> *mut (dyn Future + 'a) {$/;" P implementation:Pin +into_raw vendor/futures-task/src/future_obj.rs /^ fn into_raw(self) -> *mut (dyn Future + 'a) {$/;" f +into_raw vendor/futures-task/src/future_obj.rs /^ fn into_raw(self) -> *mut (dyn Future + 'a);$/;" P interface:UnsafeFutureObj +into_raw vendor/libloading/src/os/unix/mod.rs /^ pub fn into_raw(self) -> *mut raw::c_void {$/;" P implementation:Library +into_raw vendor/libloading/src/os/unix/mod.rs /^ pub fn into_raw(self) -> *mut raw::c_void {$/;" P implementation:Symbol +into_raw vendor/libloading/src/os/windows/mod.rs /^ pub fn into_raw(self) -> FARPROC {$/;" P implementation:Symbol +into_raw vendor/libloading/src/os/windows/mod.rs /^ pub fn into_raw(self) -> HMODULE {$/;" P implementation:Library +into_raw vendor/libloading/src/safe.rs /^ pub unsafe fn into_raw(self) -> imp::Symbol {$/;" P implementation:Symbol +into_raw_fd vendor/nix/src/pty.rs /^ fn into_raw_fd(self) -> RawFd {$/;" P implementation:PtyMaster +into_send_error vendor/futures-channel/src/mpsc/mod.rs /^ pub fn into_send_error(self) -> SendError {$/;" P implementation:TrySendError +into_set vendor/elsa/src/index_set.rs /^ pub fn into_set(self) -> IndexSet {$/;" P implementation:FrozenIndexSet +into_sink vendor/futures-util/src/io/mod.rs /^ fn into_sink>(self) -> IntoSink$/;" P interface:AsyncWriteExt +into_sink vendor/futures-util/src/io/mod.rs /^mod into_sink;$/;" n +into_spans vendor/syn/src/lookahead.rs /^ fn into_spans(self) -> S {$/;" P implementation:TokenMarker +into_spans vendor/syn/src/span.rs /^ fn into_spans(self) -> S;$/;" P interface:IntoSpans +into_spans vendor/syn/src/span.rs /^ fn into_spans(self) -> [Span; 1] {$/;" P implementation:Span +into_spans vendor/syn/src/span.rs /^ fn into_spans(self) -> [Span; 2] {$/;" P implementation:Span +into_spans vendor/syn/src/span.rs /^ fn into_spans(self) -> [Span; 3] {$/;" P implementation:Span +into_stream vendor/futures-util/src/future/future/mod.rs /^ fn into_stream(self) -> IntoStream$/;" P interface:FutureExt +into_stream vendor/futures-util/src/stream/try_stream/mod.rs /^ fn into_stream(self) -> IntoStream$/;" P interface:TryStreamExt +into_stream vendor/futures-util/src/stream/try_stream/mod.rs /^mod into_stream;$/;" n +into_token_stream vendor/proc-macro2/src/wrapper.rs /^ fn into_token_stream(mut self) -> proc_macro::TokenStream {$/;" P implementation:DeferredTokenStream +into_token_stream vendor/quote/src/to_tokens.rs /^ fn into_token_stream(self) -> TokenStream {$/;" P implementation:TokenStream +into_token_stream vendor/quote/src/to_tokens.rs /^ fn into_token_stream(self) -> TokenStream$/;" P interface:ToTokens +into_tuple vendor/syn/src/punctuated.rs /^ pub fn into_tuple(self) -> (T, Option

    ) {$/;" P implementation:Pair +into_value vendor/futures-util/src/lock/bilock.rs /^ unsafe fn into_value(mut self) -> T {$/;" P implementation:Inner +into_value vendor/once_cell/src/lib.rs /^ pub fn into_value(this: Lazy) -> Result {$/;" P implementation:sync::Lazy +into_value vendor/once_cell/src/lib.rs /^ pub fn into_value(this: Lazy) -> Result {$/;" P implementation:unsync::Lazy +into_value vendor/syn/src/punctuated.rs /^ pub fn into_value(self) -> T {$/;" P implementation:Pair +into_vec vendor/elsa/src/vec.rs /^ pub fn into_vec(self) -> Vec {$/;" P implementation:FrozenVec +into_vec vendor/smallvec/src/lib.rs /^ pub fn into_vec(self) -> Vec {$/;" P implementation:SmallVec +intptr_t vendor/libc/src/fuchsia/mod.rs /^pub type intptr_t = isize;$/;" t +intptr_t vendor/libc/src/hermit/mod.rs /^pub type intptr_t = isize;$/;" t +intptr_t vendor/libc/src/psp.rs /^pub type intptr_t = isize;$/;" t +intptr_t vendor/libc/src/sgx.rs /^pub type intptr_t = isize;$/;" t +intptr_t vendor/libc/src/solid/mod.rs /^pub type intptr_t = isize;$/;" t +intptr_t vendor/libc/src/switch.rs /^pub type intptr_t = isize;$/;" t +intptr_t vendor/libc/src/unix/mod.rs /^pub type intptr_t = isize;$/;" t +intptr_t vendor/libc/src/vxworks/mod.rs /^pub type intptr_t = isize;$/;" t +intptr_t vendor/libc/src/wasi.rs /^pub type intptr_t = isize;$/;" t +intptr_t vendor/libc/src/windows/mod.rs /^pub type intptr_t = isize;$/;" t +intptr_t vendor/winapi/src/vc/vcruntime.rs /^pub type intptr_t = isize;$/;" t +intrand32 lib/sh/random.c /^intrand32 (last)$/;" f file: +intresult support/man2html.c /^static int intresult = 0;$/;" v typeref:typename:int file: +ints vendor/syn/tests/test_lit.rs /^fn ints() {$/;" f +intsafe vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "intsafe")] pub mod intsafe;$/;" n +inttostr lib/sh/itos.c /^inttostr (i, buf, len)$/;" f +inttostr r_bash/src/lib.rs /^ pub fn inttostr($/;" f +inv_face lib/readline/display.c /^#define inv_face /;" d file: +inv_lbreaks lib/readline/display.c /^#define inv_lbreaks /;" d file: +inv_lbsize lib/readline/display.c /^#define inv_lbsize /;" d file: +invalid_argument vendor/nix/src/errno.rs /^ pub const fn invalid_argument() -> Error {$/;" P implementation:Errno +invalid_completion bashline.c /^invalid_completion (text, ind)$/;" f file: +invalid_env variables.c /^HASH_TABLE *invalid_env = (HASH_TABLE *)NULL;$/;" v typeref:typename:HASH_TABLE * +invalid_get_mut_panics vendor/slab/tests/slab.rs /^fn invalid_get_mut_panics() {$/;" f +invalid_get_panics vendor/slab/tests/slab.rs /^fn invalid_get_panics() {$/;" f +invalid_remove_panics vendor/slab/tests/slab.rs /^fn invalid_remove_panics() {$/;" f +invalid_subtag vendor/unic-langid-impl/src/lib.rs /^fn invalid_subtag() {$/;" f +invalidate_cached_quoted_dollar_at builtins_rust/common/src/lib.rs /^ fn invalidate_cached_quoted_dollar_at();$/;" f +invalidate_cached_quoted_dollar_at builtins_rust/shift/src/intercdep.rs /^ pub fn invalidate_cached_quoted_dollar_at();$/;" f +invalidate_cached_quoted_dollar_at builtins_rust/source/src/lib.rs /^ fn invalidate_cached_quoted_dollar_at();$/;" f +invalidate_cached_quoted_dollar_at r_bash/src/lib.rs /^ pub fn invalidate_cached_quoted_dollar_at();$/;" f +invalidate_cached_quoted_dollar_at subst.c /^invalidate_cached_quoted_dollar_at ()$/;" f typeref:typename:void +invert_case_line lib/readline/examples/manexamp.c /^invert_case_line (count, key)$/;" f +invis_addc lib/readline/display.c /^invis_addc (int *outp, char c, char face)$/;" f typeref:typename:void file: +invis_adds lib/readline/display.c /^invis_adds (int *outp, const char *str, int n, char face)$/;" f typeref:typename:void file: +invis_nul lib/readline/display.c /^invis_nul (int *outp)$/;" f typeref:typename:void file: +invisible_line lib/readline/display.c /^#define invisible_line /;" d file: +invisible_p variables.h /^#define invisible_p(/;" d +involuntary_context_switches vendor/nix/src/sys/resource.rs /^ pub fn involuntary_context_switches(&self) -> c_long {$/;" P implementation:Usage +io vendor/futures-util/src/compat/compat01as03.rs /^mod io {$/;" n +io vendor/futures-util/src/compat/compat03as01.rs /^mod io {$/;" n +io vendor/futures-util/src/lib.rs /^pub mod io;$/;" n +io vendor/futures/tests/auto_traits.rs /^pub mod io {$/;" n +io vendor/futures/tests/object_safety.rs /^fn io() {$/;" f +io vendor/thiserror/tests/test_source.rs /^ io: io::Error,$/;" m struct:ExplicitSource +ioapiset vendor/winapi/src/um/mod.rs /^#[cfg(feature = "ioapiset")] pub mod ioapiset;$/;" n +ioc vendor/nix/src/sys/ioctl/bsd.rs /^macro_rules! ioc {$/;" M +ioc vendor/nix/src/sys/ioctl/linux.rs /^macro_rules! ioc {$/;" M +ioctl r_readline/src/lib.rs /^ pub fn ioctl($/;" f +ioctl vendor/libc/src/fuchsia/mod.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/unix/bsd/mod.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/unix/haiku/mod.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/unix/hermit/mod.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/unix/newlib/mod.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/unix/redox/mod.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/unix/solarish/mod.rs /^ pub fn ioctl(fildes: ::c_int, request: ::c_int, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/vxworks/mod.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;$/;" f +ioctl vendor/libc/src/wasi.rs /^ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;$/;" f +ioctl vendor/nix/src/sys/mod.rs /^pub mod ioctl;$/;" n +ioctl_none vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! ioctl_none {$/;" M +ioctl_none_bad vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! ioctl_none_bad {$/;" M +ioctl_num_type vendor/nix/src/sys/ioctl/bsd.rs /^pub type ioctl_num_type = ::libc::c_int;$/;" t +ioctl_num_type vendor/nix/src/sys/ioctl/bsd.rs /^pub type ioctl_num_type = ::libc::c_ulong;$/;" t +ioctl_num_type vendor/nix/src/sys/ioctl/linux.rs /^pub type ioctl_num_type = ::libc::c_int;$/;" t +ioctl_num_type vendor/nix/src/sys/ioctl/linux.rs /^pub type ioctl_num_type = ::libc::c_ulong;$/;" t +ioctl_param_type vendor/nix/src/sys/ioctl/bsd.rs /^pub type ioctl_param_type = ::libc::c_int;$/;" t +ioctl_param_type vendor/nix/src/sys/ioctl/linux.rs /^pub type ioctl_param_type = ::libc::c_ulong;$/;" t +ioctl_read vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! ioctl_read {$/;" M +ioctl_read_bad vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! ioctl_read_bad {$/;" M +ioctl_read_buf vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! ioctl_read_buf {$/;" M +ioctl_readwrite vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! ioctl_readwrite {$/;" M +ioctl_readwrite_bad vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! ioctl_readwrite_bad {$/;" M +ioctl_readwrite_buf vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! ioctl_readwrite_buf {$/;" M +ioctl_write_buf vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! ioctl_write_buf {$/;" M +ioctl_write_int_bad vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! ioctl_write_int_bad {$/;" M +ioctl_write_ptr vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! ioctl_write_ptr {$/;" M +ioctl_write_ptr_bad vendor/nix/src/sys/ioctl/mod.rs /^macro_rules! ioctl_write_ptr_bad {$/;" M +ioctlsocket vendor/winapi/src/um/winsock2.rs /^ pub fn ioctlsocket($/;" f +ioperm vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^ pub fn ioperm(from: ::c_ulong, num: ::c_ulong, turn_on: ::c_int) -> ::c_int;$/;" f +iopl vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^ pub fn iopl(level: ::c_int) -> ::c_int;$/;" f +iov vendor/nix/src/mount/bsd.rs /^ iov: Vec,$/;" m struct:Nmount +iov_base r_bash/src/lib.rs /^ pub iov_base: *mut ::std::os::raw::c_void,$/;" m struct:iovec +iov_len r_bash/src/lib.rs /^ pub iov_len: usize,$/;" m struct:iovec +iovec r_bash/src/lib.rs /^pub struct iovec {$/;" s +iovlen vendor/nix/src/sys/aio.rs /^ pub fn iovlen(&self) -> usize {$/;" P implementation:AioReadv +iovlen vendor/nix/src/sys/aio.rs /^ pub fn iovlen(&self) -> usize {$/;" P implementation:AioWritev +ip vendor/nix/src/sys/socket/addr.rs /^ pub const fn ip(&self) -> libc::in_addr_t {$/;" P implementation:SockaddrIn +ip vendor/nix/src/sys/socket/addr.rs /^ pub fn ip(&self) -> net::Ipv6Addr {$/;" P implementation:SockaddrIn6 +ipc_receives vendor/nix/src/sys/resource.rs /^ pub fn ipc_receives(&self) -> c_long {$/;" P implementation:Usage +ipc_sends vendor/nix/src/sys/resource.rs /^ pub fn ipc_sends(&self) -> c_long {$/;" P implementation:Usage +ipexport vendor/winapi/src/um/mod.rs /^#[cfg(feature = "ipexport")] pub mod ipexport;$/;" n +iphlpapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "iphlpapi")] pub mod iphlpapi;$/;" n +ipifcons vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "ipifcons")] pub mod ipifcons;$/;" n +ipmib vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "ipmib")] pub mod ipmib;$/;" n +ipow expr.c /^ipow (base, exp)$/;" f file: +iprintf vendor/libc/src/solid/mod.rs /^ pub fn iprintf(arg1: *const c_char, ...) -> c_int;$/;" f +iprtrmib vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "iprtrmib")] pub mod iprtrmib;$/;" n +iptypes vendor/winapi/src/um/mod.rs /^#[cfg(feature = "iptypes")] pub mod iptypes;$/;" n +ipv4addr_to_libc vendor/nix/src/sys/socket/addr.rs /^pub(crate) fn ipv4addr_to_libc(addr: net::Ipv4Addr) -> libc::in_addr {$/;" f +ipv6addr_to_libc vendor/nix/src/sys/socket/addr.rs /^pub(crate) const fn ipv6addr_to_libc(addr: &net::Ipv6Addr) -> libc::in6_addr {$/;" f +is_aborted vendor/futures-util/src/abortable.rs /^ pub fn is_aborted(&self) -> bool {$/;" P implementation:Abortable +is_ascii_alphabetic vendor/tinystr/src/tinystr16.rs /^ pub fn is_ascii_alphabetic(self) -> bool {$/;" P implementation:TinyStr16 +is_ascii_alphabetic vendor/tinystr/src/tinystr4.rs /^ pub fn is_ascii_alphabetic(self) -> bool {$/;" P implementation:TinyStr4 +is_ascii_alphabetic vendor/tinystr/src/tinystr8.rs /^ pub fn is_ascii_alphabetic(self) -> bool {$/;" P implementation:TinyStr8 +is_ascii_alphanumeric vendor/tinystr/benches/tinystr.rs /^ fn is_ascii_alphanumeric(&self) -> bool {$/;" P implementation:str +is_ascii_alphanumeric vendor/tinystr/benches/tinystr.rs /^ fn is_ascii_alphanumeric(&self) -> bool;$/;" P interface:ExtIsAsciiAlphanumeric +is_ascii_alphanumeric vendor/tinystr/src/tinystr16.rs /^ pub fn is_ascii_alphanumeric(self) -> bool {$/;" P implementation:TinyStr16 +is_ascii_alphanumeric vendor/tinystr/src/tinystr4.rs /^ pub fn is_ascii_alphanumeric(self) -> bool {$/;" P implementation:TinyStr4 +is_ascii_alphanumeric vendor/tinystr/src/tinystr8.rs /^ pub fn is_ascii_alphanumeric(self) -> bool {$/;" P implementation:TinyStr8 +is_ascii_numeric vendor/tinystr/src/tinystr16.rs /^ pub fn is_ascii_numeric(self) -> bool {$/;" P implementation:TinyStr16 +is_ascii_numeric vendor/tinystr/src/tinystr4.rs /^ pub fn is_ascii_numeric(self) -> bool {$/;" P implementation:TinyStr4 +is_ascii_numeric vendor/tinystr/src/tinystr8.rs /^ pub fn is_ascii_numeric(self) -> bool {$/;" P implementation:TinyStr8 +is_assignment_builtin builtins/mkbuiltins.c /^is_assignment_builtin (name)$/;" f file: +is_backtrace vendor/thiserror-impl/src/prop.rs /^ pub(crate) fn is_backtrace(&self) -> bool {$/;" P implementation:Field +is_basic builtins_rust/read/src/lib.rs /^unsafe extern "C" fn is_basic(c: libc::c_char) -> libc::c_int {$/;" f +is_basic include/shmbchar.h /^is_basic (char c)$/;" f typeref:typename:int +is_basic_table builtins_rust/read/src/intercdep.rs /^ static is_basic_table:[libc::c_uint;0];$/;" v +is_basic_table lib/sh/shmbchar.c /^const unsigned int is_basic_table [UCHAR_MAX \/ 32 + 1] =$/;" v typeref:typename:const unsigned int[] +is_basic_table r_bash/src/lib.rs /^ pub static mut is_basic_table: [::std::os::raw::c_uint; 0usize];$/;" v +is_bluetooth_le_uuid vendor/winapi/src/um/bthledef.rs /^ fn is_bluetooth_le_uuid(uuid: &GUID) -> bool {$/;" f function:IsBthLEUuidMatch +is_brace vendor/syn/src/item.rs /^ fn is_brace(&self) -> bool {$/;" P implementation:parsing::MacroDelimiter +is_byte_at vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn is_byte_at(&self, b: u8, pos: usize) -> bool {$/;" f +is_byte_pattern_continuation vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn is_byte_pattern_continuation(b: u8) -> bool {$/;" f +is_callee vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn is_callee(name: &S) -> bool {$/;" f +is_canceled vendor/futures-channel/src/oneshot.rs /^ fn is_canceled(&self) -> bool {$/;" P implementation:Inner +is_canceled vendor/futures-channel/src/oneshot.rs /^ pub fn is_canceled(&self) -> bool {$/;" P implementation:Sender +is_canceled vendor/futures-channel/tests/oneshot.rs /^fn is_canceled() {$/;" f +is_cclass lib/glob/smatch.c /^is_cclass (c, name)$/;" f file: +is_closed vendor/futures-channel/src/mpsc/mod.rs /^ fn is_closed(&self) -> bool {$/;" P implementation:BoundedSenderInner +is_closed vendor/futures-channel/src/mpsc/mod.rs /^ fn is_closed(&self) -> bool {$/;" P implementation:State +is_closed vendor/futures-channel/src/mpsc/mod.rs /^ fn is_closed(&self) -> bool {$/;" P implementation:UnboundedSenderInner +is_closed vendor/futures-channel/src/mpsc/mod.rs /^ pub fn is_closed(&self) -> bool {$/;" P implementation:Sender +is_closed vendor/futures-channel/src/mpsc/mod.rs /^ pub fn is_closed(&self) -> bool {$/;" P implementation:UnboundedSender +is_colored lib/readline/colors.c /^is_colored (enum indicator_no colored_filetype)$/;" f typeref:typename:bool file: +is_computer_on vendor/libc/src/unix/haiku/native.rs /^ pub fn is_computer_on() -> i32;$/;" f +is_computer_on_fire vendor/libc/src/unix/haiku/native.rs /^ pub fn is_computer_on_fire() -> ::c_double;$/;" f +is_connected_to vendor/futures-channel/src/mpsc/mod.rs /^ fn is_connected_to(&self, inner: &Arc>) -> bool {$/;" P implementation:UnboundedSenderInner +is_connected_to vendor/futures-channel/src/mpsc/mod.rs /^ fn is_connected_to(&self, receiver: &Arc>) -> bool {$/;" P implementation:BoundedSenderInner +is_connected_to vendor/futures-channel/src/mpsc/mod.rs /^ pub fn is_connected_to(&self, receiver: &Receiver) -> bool {$/;" P implementation:Sender +is_connected_to vendor/futures-channel/src/mpsc/mod.rs /^ pub fn is_connected_to(&self, receiver: &UnboundedReceiver) -> bool {$/;" P implementation:UnboundedSender +is_connected_to vendor/futures-channel/src/oneshot.rs /^ pub fn is_connected_to(&self, receiver: &Receiver) -> bool {$/;" P implementation:Sender +is_connected_to vendor/futures-channel/tests/mpsc.rs /^fn is_connected_to() {$/;" f +is_copy vendor/pin-project-lite/tests/test.rs /^ fn is_copy() {}$/;" f function:derive_copy +is_current_byte vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn is_current_byte(&self, b: u8) -> bool {$/;" f +is_delimiter vendor/syn/src/lookahead.rs /^pub fn is_delimiter(cursor: Cursor, delimiter: Delimiter) -> bool {$/;" f +is_directory builtins_rust/hash/src/lib.rs /^ fn is_directory(file: *const c_char) -> i32;$/;" f +is_directory findcmd.c /^is_directory (file)$/;" f +is_directory r_bash/src/lib.rs /^ pub fn is_directory(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +is_dirname execute_cmd.c /^is_dirname (pathname)$/;" f file: +is_disconnected vendor/futures-channel/src/mpsc/mod.rs /^ pub fn is_disconnected(&self) -> bool {$/;" P implementation:SendError +is_disconnected vendor/futures-channel/src/mpsc/mod.rs /^ pub fn is_disconnected(&self) -> bool {$/;" P implementation:TrySendError +is_done vendor/futures-util/src/stream/stream/fuse.rs /^ pub fn is_done(&self) -> bool {$/;" P implementation:Fuse +is_done_taking vendor/futures-util/src/stream/stream/scan.rs /^ fn is_done_taking(&self) -> bool {$/;" P implementation:Scan +is_effective vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) fn is_effective(&mut self) -> bool {$/;" P implementation:PrefilterState +is_empty vendor/chunky-vec/src/lib.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:ChunkyVec +is_empty vendor/elsa/src/index_map.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:FrozenIndexMap +is_empty vendor/elsa/src/vec.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:FrozenVec +is_empty vendor/futures-util/src/stream/futures_ordered.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:FuturesOrdered +is_empty vendor/futures-util/src/stream/futures_unordered/mod.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:FuturesUnordered +is_empty vendor/futures-util/src/stream/select_all.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:SelectAll +is_empty vendor/nix/src/lib.rs /^ fn is_empty(&self) -> bool {$/;" P implementation:CStr +is_empty vendor/nix/src/lib.rs /^ fn is_empty(&self) -> bool {$/;" P implementation:OsStr +is_empty vendor/nix/src/lib.rs /^ fn is_empty(&self) -> bool {$/;" P implementation:Path +is_empty vendor/nix/src/lib.rs /^ fn is_empty(&self) -> bool {$/;" P implementation:PathBuf +is_empty vendor/nix/src/lib.rs /^ fn is_empty(&self) -> bool {$/;" P implementation:str +is_empty vendor/nix/src/lib.rs /^ fn is_empty(&self) -> bool {$/;" P implementation:u8 +is_empty vendor/nix/src/lib.rs /^ fn is_empty(&self) -> bool;$/;" P interface:NixPath +is_empty vendor/proc-macro2/src/fallback.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:TokenStream +is_empty vendor/proc-macro2/src/lib.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:TokenStream +is_empty vendor/proc-macro2/src/parse.rs /^ fn is_empty(&self) -> bool {$/;" P implementation:Cursor +is_empty vendor/proc-macro2/src/rcvec.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:RcVec +is_empty vendor/proc-macro2/src/wrapper.rs /^ fn is_empty(&self) -> bool {$/;" P implementation:DeferredTokenStream +is_empty vendor/proc-macro2/src/wrapper.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:TokenStream +is_empty vendor/slab/src/lib.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:Slab +is_empty vendor/smallvec/src/lib.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:SmallVec +is_empty vendor/syn/src/data.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:Fields +is_empty vendor/syn/src/parse.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:ParseBuffer +is_empty vendor/syn/src/path.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:PathArguments +is_empty vendor/syn/src/punctuated.rs /^ pub fn is_empty(&self) -> bool {$/;" P implementation:Punctuated +is_empty vendor/unic-langid-impl/src/subtags/language.rs /^ pub fn is_empty(self) -> bool {$/;" P implementation:Language +is_env_set vendor/memchr/build.rs /^fn is_env_set(name: &str) -> bool {$/;" f +is_eol vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn is_eol(&self) -> bool {$/;" f +is_escaped_literal vendor/syn/tests/common/eq.rs /^fn is_escaped_literal(lit: &Lit, unescaped: Symbol) -> bool {$/;" f +is_escaped_literal_macro_arg vendor/syn/tests/common/eq.rs /^fn is_escaped_literal_macro_arg(arg: &MacArgsEq, unescaped: Symbol) -> bool {$/;" f +is_escaped_literal_token vendor/syn/tests/common/eq.rs /^fn is_escaped_literal_token(token: &Token, unescaped: Symbol) -> bool {$/;" f +is_exceeded_limit vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn is_exceeded_limit(&self) -> bool {$/;" f +is_fast vendor/memchr/src/memmem/rabinkarp.rs /^pub(crate) fn is_fast(haystack: &[u8], _needle: &[u8]) -> bool {$/;" f +is_feature_set vendor/memchr/build.rs /^fn is_feature_set(name: &str) -> bool {$/;" f +is_full vendor/futures-channel/src/mpsc/mod.rs /^ pub fn is_full(&self) -> bool {$/;" P implementation:SendError +is_full vendor/futures-channel/src/mpsc/mod.rs /^ pub fn is_full(&self) -> bool {$/;" P implementation:TrySendError +is_future_v vendor/futures/tests_disabled/all.rs /^ fn is_future_v(_: C)$/;" f function:result_smoke +is_ident vendor/syn/src/path.rs /^ pub fn is_ident(&self, ident: &I) -> bool$/;" P implementation:parsing::Path +is_ident_continue vendor/proc-macro2/src/fallback.rs /^pub(crate) fn is_ident_continue(c: char) -> bool {$/;" f +is_ident_start vendor/proc-macro2/src/fallback.rs /^pub(crate) fn is_ident_start(c: char) -> bool {$/;" f +is_identifier_start vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn is_identifier_start(&self) -> bool {$/;" f +is_inert vendor/memchr/src/memmem/prefilter/mod.rs /^ fn is_inert(&self) -> bool {$/;" P implementation:PrefilterState +is_inherited vendor/syn/src/item.rs /^ fn is_inherited(&self) -> bool {$/;" P implementation:parsing::Visibility +is_initialized vendor/once_cell/src/imp_pl.rs /^ pub(crate) fn is_initialized(&self) -> bool {$/;" P implementation:OnceCell +is_initialized vendor/once_cell/src/imp_std.rs /^ pub(crate) fn is_initialized(&self) -> bool {$/;" P implementation:OnceCell +is_inner vendor/syn/src/attr.rs /^ fn is_inner(attr: &&Attribute) -> bool {$/;" f method:Attribute::inner +is_item_pending vendor/futures-util/src/sink/feed.rs /^ pub(super) fn is_item_pending(&self) -> bool {$/;" P implementation:Feed +is_localvar_builtin builtins/mkbuiltins.c /^is_localvar_builtin (name)$/;" f file: +is_named vendor/syn/src/expr.rs /^ fn is_named(&self) -> bool {$/;" P implementation:parsing::Member +is_none vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) fn is_none(&self) -> bool {$/;" P implementation:Prefilter +is_none vendor/syn/src/path.rs /^ fn is_none(&self) -> bool {$/;" P implementation:PathArguments +is_number_start vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn is_number_start(&self) -> bool {$/;" f +is_open vendor/futures-channel/src/mpsc/mod.rs /^ is_open: bool,$/;" m struct:State +is_option builtins_rust/kill/src/lib.rs /^unsafe fn is_option(s: *mut c_char, c: u8) -> bool {$/;" f +is_option builtins_rust/rlet/src/lib.rs /^unsafe fn is_option(s: *mut c_char, c: u8) -> bool {$/;" f +is_option_empty vendor/unic-langid-impl/src/lib.rs /^fn is_option_empty(subtag: &Option>) -> bool {$/;" f +is_optional vendor/fluent-fallback/src/types.rs /^ pub fn is_optional(&self) -> bool {$/;" P implementation:ResourceId +is_outer vendor/syn/src/attr.rs /^ fn is_outer(attr: &&Attribute) -> bool {$/;" f method:Attribute::outer +is_owned vendor/nix/src/mount/bsd.rs /^ is_owned: Vec,$/;" m struct:Nmount +is_parked vendor/futures-channel/src/mpsc/mod.rs /^ is_parked: bool,$/;" m struct:SenderTask +is_posix_builtin builtins/mkbuiltins.c /^is_posix_builtin (name)$/;" f file: +is_prefix vendor/memchr/src/memmem/rabinkarp.rs /^fn is_prefix(haystack: &[u8], needle: &[u8]) -> bool {$/;" f +is_prefix vendor/memchr/src/memmem/util.rs /^pub(crate) fn is_prefix(haystack: &[u8], needle: &[u8]) -> bool {$/;" f +is_ready vendor/futures-util/src/async_await/pending.rs /^ is_ready: bool,$/;" m struct:PendingOnce +is_real vendor/proc-macro2/src/fallback.rs /^ pub fn is_real(&self) -> bool {$/;" P implementation:SourceFile +is_real vendor/proc-macro2/src/lib.rs /^ pub fn is_real(&self) -> bool {$/;" P implementation:SourceFile +is_real vendor/proc-macro2/src/wrapper.rs /^ pub fn is_real(&self) -> bool {$/;" P implementation:SourceFile +is_required vendor/fluent-fallback/src/types.rs /^ pub fn is_required(&self) -> bool {$/;" P implementation:ResourceId +is_requires_builtin builtins/mkbuiltins.c /^is_requires_builtin (name)$/;" f file: +is_set vendor/nix/src/sched.rs /^ pub fn is_set(&self, field: usize) -> Result {$/;" P implementation:sched_affinity::CpuSet +is_shutdown vendor/futures-task/src/spawn.rs /^ pub fn is_shutdown(&self) -> bool {$/;" P implementation:SpawnError +is_so_mark_functional vendor/nix/test/sys/test_sockopt.rs /^fn is_so_mark_functional() {$/;" f +is_socket_type_dgram vendor/nix/src/sys/socket/sockopt.rs /^ fn is_socket_type_dgram() {$/;" f module:test +is_socket_type_unix vendor/nix/src/sys/socket/sockopt.rs /^ fn is_socket_type_unix() {$/;" f module:test +is_some vendor/syn/src/data.rs /^ pub(crate) fn is_some(&self) -> bool {$/;" P implementation:parsing::Visibility +is_special_builtin builtins/mkbuiltins.c /^is_special_builtin (name)$/;" f file: +is_stopped vendor/futures-util/src/stream/stream/take_until.rs /^ pub fn is_stopped(&self) -> bool {$/;" f +is_suffix vendor/memchr/src/memmem/rabinkarp.rs /^fn is_suffix(haystack: &[u8], needle: &[u8]) -> bool {$/;" f +is_suffix vendor/memchr/src/memmem/util.rs /^pub(crate) fn is_suffix(haystack: &[u8], needle: &[u8]) -> bool {$/;" f +is_sync vendor/fluent-fallback/src/localization.rs /^ pub fn is_sync(&self) -> bool {$/;" f +is_terminated vendor/futures-channel/src/mpsc/mod.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Receiver +is_terminated vendor/futures-channel/src/mpsc/mod.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:UnboundedReceiver +is_terminated vendor/futures-channel/src/oneshot.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Receiver +is_terminated vendor/futures-core/src/future.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:if_alloc::AssertUnwindSafe +is_terminated vendor/futures-core/src/future.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:if_alloc::Box +is_terminated vendor/futures-core/src/future.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:F +is_terminated vendor/futures-core/src/future.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-core/src/future.rs /^ fn is_terminated(&self) -> bool;$/;" P interface:FusedFuture +is_terminated vendor/futures-core/src/stream.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:if_alloc::Box +is_terminated vendor/futures-core/src/stream.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:F +is_terminated vendor/futures-core/src/stream.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-core/src/stream.rs /^ fn is_terminated(&self) -> bool;$/;" P interface:FusedStream +is_terminated vendor/futures-util/src/future/either.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/future/future/flatten.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/future/future/fuse.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Fuse +is_terminated vendor/futures-util/src/future/future/map.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/future/future/shared.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/future/lazy.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/future/maybe_done.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:MaybeDone +is_terminated vendor/futures-util/src/future/option.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:OptionFuture +is_terminated vendor/futures-util/src/future/pending.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Pending +is_terminated vendor/futures-util/src/future/poll_immediate.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:PollImmediate +is_terminated vendor/futures-util/src/future/ready.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Ready +is_terminated vendor/futures-util/src/future/select.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/future/try_future/into_future.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:IntoFuture +is_terminated vendor/futures-util/src/future/try_future/try_flatten.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/future/try_future/try_flatten_err.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/future/try_maybe_done.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:TryMaybeDone +is_terminated vendor/futures-util/src/lock/mutex.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:MutexLockFuture +is_terminated vendor/futures-util/src/lock/mutex.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:OwnedMutexLockFuture +is_terminated vendor/futures-util/src/sink/buffer.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/sink/err_into.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/sink/map_err.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:SinkMapErr +is_terminated vendor/futures-util/src/sink/with_flat_map.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/empty.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Empty +is_terminated vendor/futures-util/src/stream/futures_ordered.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:FuturesOrdered +is_terminated vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:FuturesUnordered +is_terminated vendor/futures-util/src/stream/futures_unordered/mod.rs /^ is_terminated: AtomicBool,$/;" m struct:FuturesUnordered +is_terminated vendor/futures-util/src/stream/once.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Once +is_terminated vendor/futures-util/src/stream/pending.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Pending +is_terminated vendor/futures-util/src/stream/poll_immediate.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:PollImmediate +is_terminated vendor/futures-util/src/stream/repeat.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/repeat_with.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:RepeatWith +is_terminated vendor/futures-util/src/stream/select.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/select_all.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:SelectAll +is_terminated vendor/futures-util/src/stream/select_with_strategy.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/all.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/any.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/buffer_unordered.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/catch_unwind.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:CatchUnwind +is_terminated vendor/futures-util/src/stream/stream/chain.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/chunks.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Chunks +is_terminated vendor/futures-util/src/stream/stream/collect.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/concat.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/count.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Count +is_terminated vendor/futures-util/src/stream/stream/cycle.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/enumerate.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Enumerate +is_terminated vendor/futures-util/src/stream/stream/filter.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/filter_map.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/flatten.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/fold.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/for_each.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/for_each_concurrent.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/forward.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/fuse.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Fuse +is_terminated vendor/futures-util/src/stream/stream/into_future.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:StreamFuture +is_terminated vendor/futures-util/src/stream/stream/map.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/next.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Next +is_terminated vendor/futures-util/src/stream/stream/peek.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Peek +is_terminated vendor/futures-util/src/stream/stream/peek.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:PeekMut +is_terminated vendor/futures-util/src/stream/stream/peek.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Peekable +is_terminated vendor/futures-util/src/stream/stream/peek.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/ready_chunks.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:ReadyChunks +is_terminated vendor/futures-util/src/stream/stream/scan.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/select_next_some.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:SelectNextSome +is_terminated vendor/futures-util/src/stream/stream/skip.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:Skip +is_terminated vendor/futures-util/src/stream/stream/skip_while.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/take.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/take_until.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/take_while.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/then.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/unzip.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/stream/zip.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/try_stream/and_then.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/try_stream/into_stream.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:IntoStream +is_terminated vendor/futures-util/src/stream/try_stream/or_else.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/try_stream/try_chunks.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:TryChunks +is_terminated vendor/futures-util/src/stream/try_stream/try_collect.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/try_stream/try_filter.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/try_stream/try_filter_map.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/try_stream/try_flatten.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/try_stream/try_fold.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/try_stream/try_for_each_concurrent.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/try_stream/try_next.rs /^ fn is_terminated(&self) -> bool {$/;" P implementation:TryNext +is_terminated vendor/futures-util/src/stream/try_stream/try_skip_while.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/try_stream/try_take_while.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures-util/src/stream/unfold.rs /^ fn is_terminated(&self) -> bool {$/;" f +is_terminated vendor/futures/tests/stream_futures_unordered.rs /^fn is_terminated() {$/;" f +is_terminated vendor/futures/tests/stream_select_all.rs /^fn is_terminated() {$/;" f +is_terminated vendor/futures/tests/stream_select_next_some.rs /^fn is_terminated() {$/;" f +is_unnamed vendor/syn/src/pat.rs /^ fn is_unnamed(&self) -> bool {$/;" P implementation:parsing::Member +is_unpin vendor/pin-project-lite/tests/ui/pin_project/overlapping_unpin_struct.rs /^fn is_unpin() {}$/;" f +is_valid_cclass lib/glob/smatch.c /^is_valid_cclass (name)$/;" f file: +is_wcclass lib/glob/smatch.c /^is_wcclass (wc, name)$/;" f file: +is_whitespace vendor/proc-macro2/src/parse.rs /^fn is_whitespace(ch: char) -> bool {$/;" f +is_whitespace vendor/syn/src/whitespace.rs /^fn is_whitespace(ch: char) -> bool {$/;" f +is_xid_continue vendor/unicode-ident/src/lib.rs /^pub fn is_xid_continue(ch: char) -> bool {$/;" f +is_xid_start vendor/unicode-ident/src/lib.rs /^pub fn is_xid_start(ch: char) -> bool {$/;" f +isalnum r_bash/src/lib.rs /^ pub fn isalnum(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isalnum r_glob/src/lib.rs /^ pub fn isalnum(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isalnum r_readline/src/lib.rs /^ pub fn isalnum(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isalnum vendor/libc/src/fuchsia/mod.rs /^ pub fn isalnum(c: c_int) -> c_int;$/;" f +isalnum vendor/libc/src/solid/mod.rs /^ pub fn isalnum(c: c_int) -> c_int;$/;" f +isalnum vendor/libc/src/unix/mod.rs /^ pub fn isalnum(c: c_int) -> c_int;$/;" f +isalnum vendor/libc/src/vxworks/mod.rs /^ pub fn isalnum(c: c_int) -> c_int;$/;" f +isalnum vendor/libc/src/wasi.rs /^ pub fn isalnum(c: c_int) -> c_int;$/;" f +isalnum vendor/libc/src/windows/mod.rs /^ pub fn isalnum(c: c_int) -> c_int;$/;" f +isalnum_l r_bash/src/lib.rs /^ pub fn isalnum_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isalnum_l r_glob/src/lib.rs /^ pub fn isalnum_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isalnum_l r_readline/src/lib.rs /^ pub fn isalnum_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isalpha r_bash/src/lib.rs /^ pub fn isalpha(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isalpha r_glob/src/lib.rs /^ pub fn isalpha(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isalpha r_readline/src/lib.rs /^ pub fn isalpha(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isalpha vendor/libc/src/fuchsia/mod.rs /^ pub fn isalpha(c: c_int) -> c_int;$/;" f +isalpha vendor/libc/src/solid/mod.rs /^ pub fn isalpha(c: c_int) -> c_int;$/;" f +isalpha vendor/libc/src/unix/mod.rs /^ pub fn isalpha(c: c_int) -> c_int;$/;" f +isalpha vendor/libc/src/vxworks/mod.rs /^ pub fn isalpha(c: c_int) -> c_int;$/;" f +isalpha vendor/libc/src/wasi.rs /^ pub fn isalpha(c: c_int) -> c_int;$/;" f +isalpha vendor/libc/src/windows/mod.rs /^ pub fn isalpha(c: c_int) -> c_int;$/;" f +isalpha_l r_bash/src/lib.rs /^ pub fn isalpha_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isalpha_l r_glob/src/lib.rs /^ pub fn isalpha_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isalpha_l r_readline/src/lib.rs /^ pub fn isalpha_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isascii lib/glob/smatch.c /^# define isascii(/;" d file: +isascii r_bash/src/lib.rs /^ pub fn isascii(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isascii r_glob/src/lib.rs /^ pub fn isascii(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isascii r_readline/src/lib.rs /^ pub fn isascii(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isatty lib/readline/input.c /^#define isatty(/;" d file: +isatty r_bash/src/lib.rs /^ pub fn isatty(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isatty r_glob/src/lib.rs /^ pub fn isatty(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isatty r_readline/src/lib.rs /^ pub fn isatty(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isatty vendor/libc/src/fuchsia/mod.rs /^ pub fn isatty(fd: ::c_int) -> ::c_int;$/;" f +isatty vendor/libc/src/unix/mod.rs /^ pub fn isatty(fd: ::c_int) -> ::c_int;$/;" f +isatty vendor/libc/src/vxworks/mod.rs /^ pub fn isatty(fd: ::c_int) -> ::c_int;$/;" f +isatty vendor/libc/src/wasi.rs /^ pub fn isatty(fd: ::c_int) -> ::c_int;$/;" f +isatty vendor/libc/src/windows/mod.rs /^ pub fn isatty(fd: ::c_int) -> ::c_int;$/;" f +isblank r_bash/src/lib.rs /^ pub fn isblank(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isblank r_glob/src/lib.rs /^ pub fn isblank(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isblank r_readline/src/lib.rs /^ pub fn isblank(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isblank syntax.h /^# define isblank(/;" d +isblank vendor/libc/src/fuchsia/mod.rs /^ pub fn isblank(c: c_int) -> c_int;$/;" f +isblank vendor/libc/src/solid/mod.rs /^ pub fn isblank(c: c_int) -> c_int;$/;" f +isblank vendor/libc/src/unix/mod.rs /^ pub fn isblank(c: c_int) -> c_int;$/;" f +isblank vendor/libc/src/vxworks/mod.rs /^ pub fn isblank(c: c_int) -> c_int;$/;" f +isblank vendor/libc/src/wasi.rs /^ pub fn isblank(c: c_int) -> c_int;$/;" f +isblank vendor/libc/src/windows/mod.rs /^ pub fn isblank(c: c_int) -> c_int;$/;" f +isblank_l r_bash/src/lib.rs /^ pub fn isblank_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isblank_l r_glob/src/lib.rs /^ pub fn isblank_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isblank_l r_readline/src/lib.rs /^ pub fn isblank_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +iscanf vendor/libc/src/solid/mod.rs /^ pub fn iscanf(arg1: *const c_char, ...) -> c_int;$/;" f +iscntrl r_bash/src/lib.rs /^ pub fn iscntrl(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +iscntrl r_glob/src/lib.rs /^ pub fn iscntrl(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +iscntrl r_readline/src/lib.rs /^ pub fn iscntrl(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +iscntrl vendor/libc/src/fuchsia/mod.rs /^ pub fn iscntrl(c: c_int) -> c_int;$/;" f +iscntrl vendor/libc/src/solid/mod.rs /^ pub fn iscntrl(c: c_int) -> c_int;$/;" f +iscntrl vendor/libc/src/unix/mod.rs /^ pub fn iscntrl(c: c_int) -> c_int;$/;" f +iscntrl vendor/libc/src/vxworks/mod.rs /^ pub fn iscntrl(c: c_int) -> c_int;$/;" f +iscntrl vendor/libc/src/wasi.rs /^ pub fn iscntrl(c: c_int) -> c_int;$/;" f +iscntrl vendor/libc/src/windows/mod.rs /^ pub fn iscntrl(c: c_int) -> c_int;$/;" f +iscntrl_l r_bash/src/lib.rs /^ pub fn iscntrl_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +iscntrl_l r_glob/src/lib.rs /^ pub fn iscntrl_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +iscntrl_l r_readline/src/lib.rs /^ pub fn iscntrl_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isctype r_bash/src/lib.rs /^ pub fn isctype($/;" f +isctype r_glob/src/lib.rs /^ pub fn isctype($/;" f +isctype r_readline/src/lib.rs /^ pub fn isctype($/;" f +isdigit r_bash/src/lib.rs /^ pub fn isdigit(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isdigit r_glob/src/lib.rs /^ pub fn isdigit(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isdigit r_readline/src/lib.rs /^ pub fn isdigit(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isdigit vendor/libc/src/fuchsia/mod.rs /^ pub fn isdigit(c: c_int) -> c_int;$/;" f +isdigit vendor/libc/src/solid/mod.rs /^ pub fn isdigit(c: c_int) -> c_int;$/;" f +isdigit vendor/libc/src/unix/mod.rs /^ pub fn isdigit(c: c_int) -> c_int;$/;" f +isdigit vendor/libc/src/vxworks/mod.rs /^ pub fn isdigit(c: c_int) -> c_int;$/;" f +isdigit vendor/libc/src/wasi.rs /^ pub fn isdigit(c: c_int) -> c_int;$/;" f +isdigit vendor/libc/src/windows/mod.rs /^ pub fn isdigit(c: c_int) -> c_int;$/;" f +isdigit_l r_bash/src/lib.rs /^ pub fn isdigit_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isdigit_l r_glob/src/lib.rs /^ pub fn isdigit_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isdigit_l r_readline/src/lib.rs /^ pub fn isdigit_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isearch.o lib/readline/Makefile.in /^isearch.o: ansi_stdlib.h history.h rlstdc.h$/;" t +isearch.o lib/readline/Makefile.in /^isearch.o: isearch.c$/;" t +isearch.o lib/readline/Makefile.in /^isearch.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +isearch.o lib/readline/Makefile.in /^isearch.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +isearch.o lib/readline/Makefile.in /^isearch.o: rlmbutil.h$/;" t +isearch.o lib/readline/Makefile.in /^isearch.o: rlprivate.h$/;" t +isearch.o lib/readline/Makefile.in /^isearch.o: xmalloc.h$/;" t +isgraph r_bash/src/lib.rs /^ pub fn isgraph(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isgraph r_glob/src/lib.rs /^ pub fn isgraph(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isgraph r_readline/src/lib.rs /^ pub fn isgraph(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isgraph vendor/libc/src/fuchsia/mod.rs /^ pub fn isgraph(c: c_int) -> c_int;$/;" f +isgraph vendor/libc/src/solid/mod.rs /^ pub fn isgraph(c: c_int) -> c_int;$/;" f +isgraph vendor/libc/src/unix/mod.rs /^ pub fn isgraph(c: c_int) -> c_int;$/;" f +isgraph vendor/libc/src/vxworks/mod.rs /^ pub fn isgraph(c: c_int) -> c_int;$/;" f +isgraph vendor/libc/src/wasi.rs /^ pub fn isgraph(c: c_int) -> c_int;$/;" f +isgraph vendor/libc/src/windows/mod.rs /^ pub fn isgraph(c: c_int) -> c_int;$/;" f +isgraph_l r_bash/src/lib.rs /^ pub fn isgraph_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isgraph_l r_glob/src/lib.rs /^ pub fn isgraph_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isgraph_l r_readline/src/lib.rs /^ pub fn isgraph_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isifs subst.h /^#define isifs(/;" d +isinf lib/sh/snprintf.c /^ # define isinf(/;" d file: +isinf_d lib/sh/snprintf.c /^ static inline int isinf_d (double x) { return !isnan (x) && isnan (x - x); }$/;" f typeref:typename:int file: +isinf_f lib/sh/snprintf.c /^ static inline int isinf_f (float x) { return !isnan (x) && isnan (x - x); }$/;" f typeref:typename:int file: +isinf_ld lib/sh/snprintf.c /^ static inline int isinf_ld (LONGDOUBLE x) { return !isnan (x) && isnan (x - x); }$/;" f typeref:typename:int file: +isize vendor/nix/src/errno.rs /^impl ErrnoSentinel for isize {$/;" c +isleap lib/sh/strftime.c /^isleap(long year)$/;" f typeref:typename:int file: +islocalsep subst.c /^#define islocalsep(/;" d file: +islower r_bash/src/lib.rs /^ pub fn islower(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +islower r_glob/src/lib.rs /^ pub fn islower(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +islower r_readline/src/lib.rs /^ pub fn islower(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +islower vendor/libc/src/fuchsia/mod.rs /^ pub fn islower(c: c_int) -> c_int;$/;" f +islower vendor/libc/src/solid/mod.rs /^ pub fn islower(c: c_int) -> c_int;$/;" f +islower vendor/libc/src/unix/mod.rs /^ pub fn islower(c: c_int) -> c_int;$/;" f +islower vendor/libc/src/vxworks/mod.rs /^ pub fn islower(c: c_int) -> c_int;$/;" f +islower vendor/libc/src/wasi.rs /^ pub fn islower(c: c_int) -> c_int;$/;" f +islower vendor/libc/src/windows/mod.rs /^ pub fn islower(c: c_int) -> c_int;$/;" f +islower_l r_bash/src/lib.rs /^ pub fn islower_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +islower_l r_glob/src/lib.rs /^ pub fn islower_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +islower_l r_readline/src/lib.rs /^ pub fn islower_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isnan lib/sh/snprintf.c /^ # define isnan(/;" d file: +isnan_d lib/sh/snprintf.c /^ static inline int isnan_d (double x) { return x != x; }$/;" f typeref:typename:int file: +isnan_f lib/sh/snprintf.c /^ static inline int isnan_f (float x) { return x != x; }$/;" f typeref:typename:int file: +isnan_ld lib/sh/snprintf.c /^ static inline int isnan_ld (LONGDOUBLE x) { return x != x; }$/;" f typeref:typename:int file: +isnetconn lib/sh/netconn.c /^isnetconn (fd)$/;" f +isnetconn r_bash/src/lib.rs /^ pub fn isnetconn(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +iso8601wknum lib/sh/strftime.c /^iso8601wknum(const struct tm *timeptr)$/;" f typeref:typename:int file: +iso_8601_2000_year lib/sh/strftime.c /^iso_8601_2000_year(char *buf, int year, size_t fw)$/;" f typeref:typename:void file: +isolate_sequence bashline.c /^isolate_sequence (string, ind, need_dquote, startp)$/;" f file: +isolate_tilde_prefix lib/readline/tilde.c /^isolate_tilde_prefix (const char *fname, int *lenp)$/;" f typeref:typename:char * file: +isolate_tilde_prefix lib/tilde/tilde.c /^isolate_tilde_prefix (const char *fname, int *lenp)$/;" f typeref:typename:char * file: +isprint include/chartypes.h /^# define isprint(/;" d +isprint r_bash/src/lib.rs /^ pub fn isprint(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isprint r_glob/src/lib.rs /^ pub fn isprint(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isprint r_readline/src/lib.rs /^ pub fn isprint(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isprint vendor/libc/src/fuchsia/mod.rs /^ pub fn isprint(c: c_int) -> c_int;$/;" f +isprint vendor/libc/src/solid/mod.rs /^ pub fn isprint(c: c_int) -> c_int;$/;" f +isprint vendor/libc/src/unix/mod.rs /^ pub fn isprint(c: c_int) -> c_int;$/;" f +isprint vendor/libc/src/vxworks/mod.rs /^ pub fn isprint(c: c_int) -> c_int;$/;" f +isprint vendor/libc/src/wasi.rs /^ pub fn isprint(c: c_int) -> c_int;$/;" f +isprint vendor/libc/src/windows/mod.rs /^ pub fn isprint(c: c_int) -> c_int;$/;" f +isprint_l r_bash/src/lib.rs /^ pub fn isprint_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isprint_l r_glob/src/lib.rs /^ pub fn isprint_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isprint_l r_readline/src/lib.rs /^ pub fn isprint_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +ispunct r_bash/src/lib.rs /^ pub fn ispunct(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +ispunct r_glob/src/lib.rs /^ pub fn ispunct(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +ispunct r_readline/src/lib.rs /^ pub fn ispunct(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +ispunct vendor/libc/src/fuchsia/mod.rs /^ pub fn ispunct(c: c_int) -> c_int;$/;" f +ispunct vendor/libc/src/solid/mod.rs /^ pub fn ispunct(c: c_int) -> c_int;$/;" f +ispunct vendor/libc/src/unix/mod.rs /^ pub fn ispunct(c: c_int) -> c_int;$/;" f +ispunct vendor/libc/src/vxworks/mod.rs /^ pub fn ispunct(c: c_int) -> c_int;$/;" f +ispunct vendor/libc/src/wasi.rs /^ pub fn ispunct(c: c_int) -> c_int;$/;" f +ispunct vendor/libc/src/windows/mod.rs /^ pub fn ispunct(c: c_int) -> c_int;$/;" f +ispunct_l r_bash/src/lib.rs /^ pub fn ispunct_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +ispunct_l r_glob/src/lib.rs /^ pub fn ispunct_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +ispunct_l r_readline/src/lib.rs /^ pub fn ispunct_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +issep subst.c /^#define issep(/;" d file: +issetugid vendor/libc/src/unix/haiku/mod.rs /^ pub fn issetugid() -> ::c_int;$/;" f +isspace include/chartypes.h /^# define isspace(/;" d +isspace r_bash/src/lib.rs /^ pub fn isspace(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isspace r_glob/src/lib.rs /^ pub fn isspace(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isspace r_readline/src/lib.rs /^ pub fn isspace(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isspace vendor/libc/src/fuchsia/mod.rs /^ pub fn isspace(c: c_int) -> c_int;$/;" f +isspace vendor/libc/src/solid/mod.rs /^ pub fn isspace(c: c_int) -> c_int;$/;" f +isspace vendor/libc/src/unix/mod.rs /^ pub fn isspace(c: c_int) -> c_int;$/;" f +isspace vendor/libc/src/vxworks/mod.rs /^ pub fn isspace(c: c_int) -> c_int;$/;" f +isspace vendor/libc/src/wasi.rs /^ pub fn isspace(c: c_int) -> c_int;$/;" f +isspace vendor/libc/src/windows/mod.rs /^ pub fn isspace(c: c_int) -> c_int;$/;" f +isspace_l r_bash/src/lib.rs /^ pub fn isspace_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isspace_l r_glob/src/lib.rs /^ pub fn isspace_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isspace_l r_readline/src/lib.rs /^ pub fn isspace_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +issue1 vendor/async-trait/tests/test.rs /^pub mod issue1 {$/;" n +issue104 vendor/async-trait/tests/test.rs /^pub mod issue104 {$/;" n +issue106 vendor/async-trait/tests/test.rs /^pub mod issue106 {$/;" n +issue11 vendor/async-trait/tests/test.rs /^pub mod issue11 {$/;" n +issue110 vendor/async-trait/tests/test.rs /^pub mod issue110 {$/;" n +issue1108 vendor/syn/tests/regression/issue1108.rs /^fn issue1108() {$/;" f +issue120 vendor/async-trait/tests/test.rs /^pub mod issue120 {$/;" n +issue123 vendor/async-trait/tests/test.rs /^pub mod issue123 {$/;" n +issue129 vendor/async-trait/tests/test.rs /^pub mod issue129 {$/;" n +issue134 vendor/async-trait/tests/test.rs /^pub mod issue134 {$/;" n +issue145 vendor/async-trait/tests/test.rs /^pub mod issue145 {$/;" n +issue147 vendor/async-trait/tests/test.rs /^pub mod issue147 {$/;" n +issue149 vendor/async-trait/tests/test.rs /^pub mod issue149 {$/;" n +issue15 vendor/async-trait/tests/test.rs /^pub mod issue15 {$/;" n +issue152 vendor/async-trait/tests/test.rs /^pub mod issue152 {$/;" n +issue154 vendor/async-trait/tests/test.rs /^pub mod issue154 {$/;" n +issue158 vendor/async-trait/tests/test.rs /^pub mod issue158 {$/;" n +issue161 vendor/async-trait/tests/test.rs /^pub mod issue161 {$/;" n +issue169 vendor/async-trait/tests/test.rs /^pub mod issue169 {$/;" n +issue17 vendor/async-trait/tests/test.rs /^pub mod issue17 {$/;" n +issue177 vendor/async-trait/tests/test.rs /^pub mod issue177 {$/;" n +issue183 vendor/async-trait/tests/test.rs /^pub mod issue183 {$/;" n +issue199 vendor/async-trait/tests/test.rs /^pub mod issue199 {$/;" n +issue2 vendor/async-trait/tests/test.rs /^pub mod issue2 {$/;" n +issue204 vendor/async-trait/tests/test.rs /^pub mod issue204 {$/;" n +issue23 vendor/async-trait/tests/test.rs /^pub mod issue23 {$/;" n +issue2310 vendor/futures/tests/io_read_to_end.rs /^fn issue2310() {$/;" f +issue25 vendor/async-trait/tests/test.rs /^pub mod issue25 {$/;" n +issue28 vendor/async-trait/tests/test.rs /^pub mod issue28 {$/;" n +issue31 vendor/async-trait/tests/test.rs /^pub mod issue31 {$/;" n +issue42 vendor/async-trait/tests/test.rs /^pub mod issue42 {$/;" n +issue44 vendor/async-trait/tests/test.rs /^pub mod issue44 {$/;" n +issue45 vendor/async-trait/tests/test.rs /^pub mod issue45 {$/;" n +issue46 vendor/async-trait/tests/test.rs /^pub mod issue46 {$/;" n +issue53 vendor/async-trait/tests/test.rs /^pub mod issue53 {$/;" n +issue57 vendor/async-trait/tests/test.rs /^pub mod issue57 {$/;" n +issue68 vendor/async-trait/tests/test.rs /^pub mod issue68 {$/;" n +issue73 vendor/async-trait/tests/test.rs /^pub mod issue73 {$/;" n +issue81 vendor/async-trait/tests/test.rs /^pub mod issue81 {$/;" n +issue83 vendor/async-trait/tests/test.rs /^pub mod issue83 {$/;" n +issue85 vendor/async-trait/tests/test.rs /^pub mod issue85 {$/;" n +issue87 vendor/async-trait/tests/test.rs /^pub mod issue87 {$/;" n +issue89 vendor/async-trait/tests/test.rs /^pub mod issue89 {$/;" n +issue9 vendor/async-trait/tests/test.rs /^pub mod issue9 {$/;" n +issue92 vendor/async-trait/tests/test.rs /^pub mod issue92 {$/;" n +issue92_2 vendor/async-trait/tests/test.rs /^pub mod issue92_2 {$/;" n +issue_1626 vendor/futures/tests/stream_select_all.rs /^fn issue_1626() {$/;" f +issue_2091_cross_thread_segfault vendor/futures-task/src/noop_waker.rs /^ fn issue_2091_cross_thread_segfault() {$/;" f module:tests +issue_4 vendor/smallvec/src/tests.rs /^fn issue_4() {$/;" f +issue_5 vendor/smallvec/src/tests.rs /^fn issue_5() {$/;" f +issyntype syntax.h /^#define issyntype(/;" d +isupper r_bash/src/lib.rs /^ pub fn isupper(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isupper r_glob/src/lib.rs /^ pub fn isupper(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isupper r_readline/src/lib.rs /^ pub fn isupper(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isupper vendor/libc/src/fuchsia/mod.rs /^ pub fn isupper(c: c_int) -> c_int;$/;" f +isupper vendor/libc/src/solid/mod.rs /^ pub fn isupper(c: c_int) -> c_int;$/;" f +isupper vendor/libc/src/unix/mod.rs /^ pub fn isupper(c: c_int) -> c_int;$/;" f +isupper vendor/libc/src/vxworks/mod.rs /^ pub fn isupper(c: c_int) -> c_int;$/;" f +isupper vendor/libc/src/wasi.rs /^ pub fn isupper(c: c_int) -> c_int;$/;" f +isupper vendor/libc/src/windows/mod.rs /^ pub fn isupper(c: c_int) -> c_int;$/;" f +isupper_l r_bash/src/lib.rs /^ pub fn isupper_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isupper_l r_glob/src/lib.rs /^ pub fn isupper_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isupper_l r_readline/src/lib.rs /^ pub fn isupper_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +iswalnum lib/sh/casemod.c /^# define iswalnum(/;" d file: +iswalnum r_bash/src/lib.rs /^ pub fn iswalnum(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswalnum r_glob/src/lib.rs /^ pub fn iswalnum(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswalnum r_readline/src/lib.rs /^ pub fn iswalnum(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswalnum_l r_bash/src/lib.rs /^ pub fn iswalnum_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswalnum_l r_glob/src/lib.rs /^ pub fn iswalnum_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswalnum_l r_readline/src/lib.rs /^ pub fn iswalnum_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswalpha r_bash/src/lib.rs /^ pub fn iswalpha(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswalpha r_glob/src/lib.rs /^ pub fn iswalpha(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswalpha r_readline/src/lib.rs /^ pub fn iswalpha(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswalpha_l r_bash/src/lib.rs /^ pub fn iswalpha_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswalpha_l r_glob/src/lib.rs /^ pub fn iswalpha_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswalpha_l r_readline/src/lib.rs /^ pub fn iswalpha_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswblank r_bash/src/lib.rs /^ pub fn iswblank(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswblank r_glob/src/lib.rs /^ pub fn iswblank(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswblank r_readline/src/lib.rs /^ pub fn iswblank(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswblank_l r_bash/src/lib.rs /^ pub fn iswblank_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswblank_l r_glob/src/lib.rs /^ pub fn iswblank_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswblank_l r_readline/src/lib.rs /^ pub fn iswblank_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswcntrl r_bash/src/lib.rs /^ pub fn iswcntrl(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswcntrl r_glob/src/lib.rs /^ pub fn iswcntrl(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswcntrl r_readline/src/lib.rs /^ pub fn iswcntrl(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswcntrl_l r_bash/src/lib.rs /^ pub fn iswcntrl_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswcntrl_l r_glob/src/lib.rs /^ pub fn iswcntrl_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswcntrl_l r_readline/src/lib.rs /^ pub fn iswcntrl_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswctype r_bash/src/lib.rs /^ pub fn iswctype(__wc: wint_t, __desc: wctype_t) -> ::std::os::raw::c_int;$/;" f +iswctype r_glob/src/lib.rs /^ pub fn iswctype(__wc: wint_t, __desc: wctype_t) -> ::std::os::raw::c_int;$/;" f +iswctype r_readline/src/lib.rs /^ pub fn iswctype(__wc: wint_t, __desc: wctype_t) -> ::std::os::raw::c_int;$/;" f +iswctype_l r_bash/src/lib.rs /^ pub fn iswctype_l(__wc: wint_t, __desc: wctype_t, __locale: locale_t) -> ::std::os::raw::c_i/;" f +iswctype_l r_glob/src/lib.rs /^ pub fn iswctype_l(__wc: wint_t, __desc: wctype_t, __locale: locale_t) -> ::std::os::raw::c_i/;" f +iswctype_l r_readline/src/lib.rs /^ pub fn iswctype_l(__wc: wint_t, __desc: wctype_t, __locale: locale_t) -> ::std::os::raw::c_i/;" f +iswdigit r_bash/src/lib.rs /^ pub fn iswdigit(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswdigit r_glob/src/lib.rs /^ pub fn iswdigit(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswdigit r_readline/src/lib.rs /^ pub fn iswdigit(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswdigit_l r_bash/src/lib.rs /^ pub fn iswdigit_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswdigit_l r_glob/src/lib.rs /^ pub fn iswdigit_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswdigit_l r_readline/src/lib.rs /^ pub fn iswdigit_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswgraph r_bash/src/lib.rs /^ pub fn iswgraph(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswgraph r_glob/src/lib.rs /^ pub fn iswgraph(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswgraph r_readline/src/lib.rs /^ pub fn iswgraph(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswgraph_l r_bash/src/lib.rs /^ pub fn iswgraph_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswgraph_l r_glob/src/lib.rs /^ pub fn iswgraph_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswgraph_l r_readline/src/lib.rs /^ pub fn iswgraph_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswlower r_bash/src/lib.rs /^ pub fn iswlower(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswlower r_glob/src/lib.rs /^ pub fn iswlower(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswlower r_readline/src/lib.rs /^ pub fn iswlower(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswlower_l r_bash/src/lib.rs /^ pub fn iswlower_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswlower_l r_glob/src/lib.rs /^ pub fn iswlower_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswlower_l r_readline/src/lib.rs /^ pub fn iswlower_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswprint r_bash/src/lib.rs /^ pub fn iswprint(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswprint r_glob/src/lib.rs /^ pub fn iswprint(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswprint r_readline/src/lib.rs /^ pub fn iswprint(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswprint_l r_bash/src/lib.rs /^ pub fn iswprint_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswprint_l r_glob/src/lib.rs /^ pub fn iswprint_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswprint_l r_readline/src/lib.rs /^ pub fn iswprint_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswpunct r_bash/src/lib.rs /^ pub fn iswpunct(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswpunct r_glob/src/lib.rs /^ pub fn iswpunct(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswpunct r_readline/src/lib.rs /^ pub fn iswpunct(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswpunct_l r_bash/src/lib.rs /^ pub fn iswpunct_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswpunct_l r_glob/src/lib.rs /^ pub fn iswpunct_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswpunct_l r_readline/src/lib.rs /^ pub fn iswpunct_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswspace r_bash/src/lib.rs /^ pub fn iswspace(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswspace r_glob/src/lib.rs /^ pub fn iswspace(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswspace r_readline/src/lib.rs /^ pub fn iswspace(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswspace_l r_bash/src/lib.rs /^ pub fn iswspace_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswspace_l r_glob/src/lib.rs /^ pub fn iswspace_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswspace_l r_readline/src/lib.rs /^ pub fn iswspace_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswupper r_bash/src/lib.rs /^ pub fn iswupper(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswupper r_glob/src/lib.rs /^ pub fn iswupper(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswupper r_readline/src/lib.rs /^ pub fn iswupper(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswupper_l r_bash/src/lib.rs /^ pub fn iswupper_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswupper_l r_glob/src/lib.rs /^ pub fn iswupper_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswupper_l r_readline/src/lib.rs /^ pub fn iswupper_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswxdigit r_bash/src/lib.rs /^ pub fn iswxdigit(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswxdigit r_glob/src/lib.rs /^ pub fn iswxdigit(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswxdigit r_readline/src/lib.rs /^ pub fn iswxdigit(__wc: wint_t) -> ::std::os::raw::c_int;$/;" f +iswxdigit_l r_bash/src/lib.rs /^ pub fn iswxdigit_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswxdigit_l r_glob/src/lib.rs /^ pub fn iswxdigit_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +iswxdigit_l r_readline/src/lib.rs /^ pub fn iswxdigit_l(__wc: wint_t, __locale: locale_t) -> ::std::os::raw::c_int;$/;" f +isxdigit include/chartypes.h /^# define isxdigit(/;" d +isxdigit lib/readline/chardefs.h /^# define isxdigit(/;" d +isxdigit r_bash/src/lib.rs /^ pub fn isxdigit(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isxdigit r_glob/src/lib.rs /^ pub fn isxdigit(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isxdigit r_readline/src/lib.rs /^ pub fn isxdigit(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +isxdigit vendor/libc/src/fuchsia/mod.rs /^ pub fn isxdigit(c: c_int) -> c_int;$/;" f +isxdigit vendor/libc/src/solid/mod.rs /^ pub fn isxdigit(c: c_int) -> c_int;$/;" f +isxdigit vendor/libc/src/unix/mod.rs /^ pub fn isxdigit(c: c_int) -> c_int;$/;" f +isxdigit vendor/libc/src/vxworks/mod.rs /^ pub fn isxdigit(c: c_int) -> c_int;$/;" f +isxdigit vendor/libc/src/wasi.rs /^ pub fn isxdigit(c: c_int) -> c_int;$/;" f +isxdigit vendor/libc/src/windows/mod.rs /^ pub fn isxdigit(c: c_int) -> c_int;$/;" f +isxdigit_l r_bash/src/lib.rs /^ pub fn isxdigit_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isxdigit_l r_glob/src/lib.rs /^ pub fn isxdigit_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +isxdigit_l r_readline/src/lib.rs /^ pub fn isxdigit_l(arg1: ::std::os::raw::c_int, arg2: locale_t) -> ::std::os::raw::c_int;$/;" f +it_aliases pcomplete.c /^ITEMLIST it_aliases = { 0, it_init_aliases, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_aliases r_bash/src/lib.rs /^ pub static mut it_aliases: ITEMLIST;$/;" v +it_arrayvars pcomplete.c /^ITEMLIST it_arrayvars = { LIST_DYNAMIC, it_init_arrayvars, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_arrayvars r_bash/src/lib.rs /^ pub static mut it_arrayvars: ITEMLIST;$/;" v +it_bindings pcomplete.c /^ITEMLIST it_bindings = { 0, it_init_bindings, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_bindings r_bash/src/lib.rs /^ pub static mut it_bindings: ITEMLIST;$/;" v +it_builtins builtins_rust/enable/src/lib.rs /^ static mut it_builtins: ITEMLIST;$/;" v +it_builtins pcomplete.c /^ITEMLIST it_builtins = { 0, it_init_builtins, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_builtins r_bash/src/lib.rs /^ pub static mut it_builtins: ITEMLIST;$/;" v +it_commands pcomplete.c /^ITEMLIST it_commands = { LIST_DYNAMIC }; \/* unused *\/$/;" v typeref:typename:ITEMLIST +it_commands r_bash/src/lib.rs /^ pub static mut it_commands: ITEMLIST;$/;" v +it_directories pcomplete.c /^ITEMLIST it_directories = { LIST_DYNAMIC }; \/* unused *\/$/;" v typeref:typename:ITEMLIST +it_directories r_bash/src/lib.rs /^ pub static mut it_directories: ITEMLIST;$/;" v +it_disabled builtins_rust/enable/src/lib.rs /^ static mut it_disabled: ITEMLIST;$/;" v +it_disabled pcomplete.c /^ITEMLIST it_disabled = { 0, it_init_disabled, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_disabled r_bash/src/lib.rs /^ pub static mut it_disabled: ITEMLIST;$/;" v +it_enabled builtins_rust/enable/src/lib.rs /^ static mut it_enabled: ITEMLIST;$/;" v +it_enabled pcomplete.c /^ITEMLIST it_enabled = { 0, it_init_enabled, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_enabled r_bash/src/lib.rs /^ pub static mut it_enabled: ITEMLIST;$/;" v +it_exports pcomplete.c /^ITEMLIST it_exports = { LIST_DYNAMIC, it_init_exported, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_exports r_bash/src/lib.rs /^ pub static mut it_exports: ITEMLIST;$/;" v +it_files pcomplete.c /^ITEMLIST it_files = { LIST_DYNAMIC }; \/* unused *\/$/;" v typeref:typename:ITEMLIST +it_files r_bash/src/lib.rs /^ pub static mut it_files: ITEMLIST;$/;" v +it_functions pcomplete.c /^ITEMLIST it_functions = { 0, it_init_functions, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_functions r_bash/src/lib.rs /^ pub static mut it_functions: ITEMLIST;$/;" v +it_groups pcomplete.c /^ITEMLIST it_groups = { LIST_DYNAMIC }; \/* unused *\/$/;" v typeref:typename:ITEMLIST +it_groups r_bash/src/lib.rs /^ pub static mut it_groups: ITEMLIST;$/;" v +it_helptopics pcomplete.c /^ITEMLIST it_helptopics = { 0, it_init_helptopics, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_helptopics r_bash/src/lib.rs /^ pub static mut it_helptopics: ITEMLIST;$/;" v +it_hostnames pcomplete.c /^ITEMLIST it_hostnames = { LIST_DYNAMIC, it_init_hostnames, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_hostnames r_bash/src/lib.rs /^ pub static mut it_hostnames: ITEMLIST;$/;" v +it_init_aliases pcomplete.c /^it_init_aliases (itp)$/;" f file: +it_init_arrayvars pcomplete.c /^it_init_arrayvars (itp)$/;" f file: +it_init_bindings pcomplete.c /^it_init_bindings (itp)$/;" f file: +it_init_builtins pcomplete.c /^it_init_builtins (itp)$/;" f file: +it_init_disabled pcomplete.c /^it_init_disabled (itp)$/;" f file: +it_init_enabled pcomplete.c /^it_init_enabled (itp)$/;" f file: +it_init_exported pcomplete.c /^it_init_exported (itp)$/;" f file: +it_init_functions pcomplete.c /^it_init_functions (itp)$/;" f file: +it_init_helptopics pcomplete.c /^it_init_helptopics (itp)$/;" f file: +it_init_hostnames pcomplete.c /^it_init_hostnames (itp)$/;" f file: +it_init_joblist pcomplete.c /^it_init_joblist (itp, jstate)$/;" f file: +it_init_jobs pcomplete.c /^it_init_jobs (itp)$/;" f file: +it_init_keywords pcomplete.c /^it_init_keywords (itp)$/;" f file: +it_init_running pcomplete.c /^it_init_running (itp)$/;" f file: +it_init_setopts pcomplete.c /^it_init_setopts (itp)$/;" f file: +it_init_shopts pcomplete.c /^it_init_shopts (itp)$/;" f file: +it_init_signals pcomplete.c /^it_init_signals (itp)$/;" f file: +it_init_stopped pcomplete.c /^it_init_stopped (itp)$/;" f file: +it_init_variables pcomplete.c /^it_init_variables (itp)$/;" f file: +it_interval r_bash/src/lib.rs /^ pub it_interval: timespec,$/;" m struct:itimerspec +it_interval r_bash/src/lib.rs /^ pub it_interval: timeval,$/;" m struct:itimerval +it_interval r_glob/src/lib.rs /^ pub it_interval: timeval,$/;" m struct:itimerval +it_interval r_readline/src/lib.rs /^ pub it_interval: timespec,$/;" m struct:itimerspec +it_interval r_readline/src/lib.rs /^ pub it_interval: timeval,$/;" m struct:itimerval +it_is_being_run vendor/futures/tests/test_macro.rs /^async fn it_is_being_run() {$/;" f +it_jobs pcomplete.c /^ITEMLIST it_jobs = { LIST_DYNAMIC, it_init_jobs, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_jobs r_bash/src/lib.rs /^ pub static mut it_jobs: ITEMLIST;$/;" v +it_keywords pcomplete.c /^ITEMLIST it_keywords = { 0, it_init_keywords, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_keywords r_bash/src/lib.rs /^ pub static mut it_keywords: ITEMLIST;$/;" v +it_running pcomplete.c /^ITEMLIST it_running = { LIST_DYNAMIC, it_init_running, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_running r_bash/src/lib.rs /^ pub static mut it_running: ITEMLIST;$/;" v +it_services pcomplete.c /^ITEMLIST it_services = { LIST_DYNAMIC }; \/* unused *\/$/;" v typeref:typename:ITEMLIST +it_services r_bash/src/lib.rs /^ pub static mut it_services: ITEMLIST;$/;" v +it_setopts pcomplete.c /^ITEMLIST it_setopts = { 0, it_init_setopts, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_setopts r_bash/src/lib.rs /^ pub static mut it_setopts: ITEMLIST;$/;" v +it_shopts pcomplete.c /^ITEMLIST it_shopts = { 0, it_init_shopts, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_shopts r_bash/src/lib.rs /^ pub static mut it_shopts: ITEMLIST;$/;" v +it_signals pcomplete.c /^ITEMLIST it_signals = { 0, it_init_signals, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_signals r_bash/src/lib.rs /^ pub static mut it_signals: ITEMLIST;$/;" v +it_stopped pcomplete.c /^ITEMLIST it_stopped = { LIST_DYNAMIC, it_init_stopped, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_stopped r_bash/src/lib.rs /^ pub static mut it_stopped: ITEMLIST;$/;" v +it_users pcomplete.c /^ITEMLIST it_users = { LIST_DYNAMIC }; \/* unused *\/$/;" v typeref:typename:ITEMLIST +it_users r_bash/src/lib.rs /^ pub static mut it_users: ITEMLIST;$/;" v +it_value r_bash/src/lib.rs /^ pub it_value: timespec,$/;" m struct:itimerspec +it_value r_bash/src/lib.rs /^ pub it_value: timeval,$/;" m struct:itimerval +it_value r_glob/src/lib.rs /^ pub it_value: timeval,$/;" m struct:itimerval +it_value r_readline/src/lib.rs /^ pub it_value: timespec,$/;" m struct:itimerspec +it_value r_readline/src/lib.rs /^ pub it_value: timeval,$/;" m struct:itimerval +it_variables pcomplete.c /^ITEMLIST it_variables = { LIST_DYNAMIC, it_init_variables, (STRINGLIST *)0 };$/;" v typeref:typename:ITEMLIST +it_variables r_bash/src/lib.rs /^ pub static mut it_variables: ITEMLIST;$/;" v +it_works builtins_rust/colon/src/lib.rs /^ fn it_works() {$/;" f module:tests +it_works builtins_rust/echo/src/lib.rs /^ fn it_works() {$/;" f module:tests +it_works builtins_rust/eval/src/lib.rs /^ fn it_works() {$/;" f module:tests +it_works builtins_rust/umask/src/lib.rs /^ fn it_works() {$/;" f module:tests +it_works builtins_rust/wait/src/lib.rs /^ fn it_works() {$/;" f module:tests +it_works vendor/cfg-if/src/lib.rs /^ fn it_works() {$/;" f module:tests +it_works vendor/futures/tests/sink_fanout.rs /^fn it_works() {$/;" f +it_works vendor/futures/tests/test_macro.rs /^async fn it_works() {$/;" f +it_works vendor/intl-memoizer/src/lib.rs /^ fn it_works() {$/;" f module:tests +item vendor/futures-util/src/sink/feed.rs /^ item: Option,$/;" m struct:Feed +item vendor/futures-util/src/stream/repeat.rs /^ item: T,$/;" m struct:Repeat +item vendor/syn/src/lib.rs /^mod item;$/;" n +item_func pathexp.h /^ sh_iv_item_func_t *item_func; \/* Called when each item is parsed from $`varname' *\/$/;" m struct:ignorevar typeref:typename:sh_iv_item_func_t * +item_func r_bash/src/lib.rs /^ pub item_func: sh_iv_item_func_t,$/;" m struct:ignorevar +item_name_shadowing vendor/lazy_static/tests/test.rs /^fn item_name_shadowing() {$/;" f +itemdepth support/man2html.c /^static int itemdepth = 0;$/;" v typeref:typename:int file: +itemreset support/man2html.c /^static char itemreset[20] = "\\\\fR\\\\s0";$/;" v typeref:typename:char[20] file: +items vendor/fluent-fallback/src/cache.rs /^ items: UnsafeCell>,$/;" m struct:Cache +items vendor/fluent-fallback/src/cache.rs /^ items: UnsafeCell>,$/;" m struct:AsyncCache +iter vendor/chunky-vec/src/lib.rs /^ iter: Option>,$/;" m struct:Iter +iter vendor/chunky-vec/src/lib.rs /^ iter: Option>,$/;" m struct:IterMut +iter vendor/chunky-vec/src/lib.rs /^ pub fn iter(&self) -> Iter {$/;" P implementation:ChunkyVec +iter vendor/chunky-vec/src/lib.rs /^ pub fn iter(&self) -> slice::Iter {$/;" P implementation:Chunk +iter vendor/elsa/src/vec.rs /^ pub fn iter(&self) -> Iter {$/;" P implementation:FrozenVec +iter vendor/fluent-bundle/src/args.rs /^ pub fn iter(&self) -> impl Iterator {$/;" P implementation:FluentArgs +iter vendor/fluent-fallback/src/cache.rs /^ iter: RefCell,$/;" m struct:Cache +iter vendor/futures-util/src/stream/futures_unordered/mod.rs /^ pub fn iter(&self) -> Iter<'_, Fut>$/;" P implementation:FuturesUnordered +iter vendor/futures-util/src/stream/futures_unordered/mod.rs /^mod iter;$/;" n +iter vendor/futures-util/src/stream/iter.rs /^ iter: I,$/;" m struct:Iter +iter vendor/futures-util/src/stream/iter.rs /^pub fn iter(i: I) -> Iter$/;" f +iter vendor/futures-util/src/stream/mod.rs /^mod iter;$/;" n +iter vendor/futures-util/src/stream/select_all.rs /^ pub fn iter(&self) -> Iter<'_, St> {$/;" P implementation:SelectAll +iter vendor/futures/tests/stream_select_all.rs /^fn iter() {$/;" f +iter vendor/futures/tests_disabled/stream.rs /^ iter: I,$/;" m struct:Iter +iter vendor/futures/tests_disabled/stream.rs /^pub fn iter(i: J) -> Iter$/;" f +iter vendor/memchr/src/memchr/mod.rs /^mod iter;$/;" n +iter vendor/memchr/src/tests/memchr/mod.rs /^mod iter;$/;" n +iter vendor/memchr/src/tests/memchr/testdata.rs /^ fn iter>(&self, reverse: bool, it: I) {$/;" P implementation:MemchrTest +iter vendor/nix/src/dir.rs /^ pub fn iter(&mut self) -> Iter {$/;" P implementation:Dir +iter vendor/nix/src/net/if_.rs /^ pub fn iter(&self) -> InterfacesIter<'_> {$/;" P implementation:if_nameindex::Interfaces +iter vendor/proc-macro2/src/rcvec.rs /^ pub fn iter(&self) -> slice::Iter {$/;" P implementation:RcVec +iter vendor/slab/src/lib.rs /^ pub fn iter(&self) -> Iter<'_, T> {$/;" P implementation:Slab +iter vendor/slab/tests/slab.rs /^fn iter() {$/;" f +iter vendor/smallvec/src/lib.rs /^ iter: slice::Iter<'a, T::Item>,$/;" m struct:Drain +iter vendor/syn/src/data.rs /^ pub fn iter(&self) -> punctuated::Iter {$/;" P implementation:Fields +iter vendor/syn/src/punctuated.rs /^ pub fn iter(&self) -> Iter {$/;" P implementation:Punctuated +iter vendor/syn/tests/test_iterators.rs /^fn iter() {$/;" f +iter_cancel vendor/futures/tests/stream_futures_unordered.rs /^fn iter_cancel() {$/;" f +iter_len vendor/futures/tests/stream_futures_unordered.rs /^fn iter_len() {$/;" f +iter_mut vendor/chunky-vec/src/lib.rs /^ pub fn iter_mut(&mut self) -> IterMut {$/;" P implementation:ChunkyVec +iter_mut vendor/chunky-vec/src/lib.rs /^ pub fn iter_mut(&mut self) -> slice::IterMut {$/;" P implementation:Chunk +iter_mut vendor/futures-util/src/stream/futures_unordered/mod.rs /^ pub fn iter_mut(&mut self) -> IterMut<'_, Fut>$/;" P implementation:FuturesUnordered +iter_mut vendor/futures-util/src/stream/select_all.rs /^ pub fn iter_mut(&mut self) -> IterMut<'_, St> {$/;" P implementation:SelectAll +iter_mut vendor/futures/tests/stream_select_all.rs /^fn iter_mut() {$/;" f +iter_mut vendor/slab/src/lib.rs /^ pub fn iter_mut(&mut self) -> IterMut<'_, T> {$/;" P implementation:Slab +iter_mut vendor/slab/tests/slab.rs /^fn iter_mut() {$/;" f +iter_mut vendor/syn/src/data.rs /^ pub fn iter_mut(&mut self) -> punctuated::IterMut {$/;" P implementation:Fields +iter_mut vendor/syn/src/punctuated.rs /^ pub fn iter_mut(&mut self) -> IterMut {$/;" P implementation:Punctuated +iter_mut_cancel vendor/futures/tests/stream_futures_unordered.rs /^fn iter_mut_cancel() {$/;" f +iter_mut_len vendor/futures/tests/stream_futures_unordered.rs /^fn iter_mut_len() {$/;" f +iter_mut_rev vendor/slab/tests/slab.rs /^fn iter_mut_rev() {$/;" f +iter_next vendor/memchr/src/memchr/iter.rs /^macro_rules! iter_next {$/;" M +iter_next_back vendor/memchr/src/memchr/iter.rs /^macro_rules! iter_next_back {$/;" M +iter_one vendor/memchr/src/tests/memchr/testdata.rs /^ pub fn iter_one<'a, I, F>(&'a self, reverse: bool, f: F)$/;" P implementation:MemchrTest +iter_pin_mut vendor/futures-util/src/future/join_all.rs /^pub(crate) fn iter_pin_mut(slice: Pin<&mut [T]>) -> impl Iterator> {$/;" f +iter_pin_mut vendor/futures-util/src/stream/futures_unordered/mod.rs /^ pub fn iter_pin_mut(mut self: Pin<&mut Self>) -> IterPinMut<'_, Fut> {$/;" P implementation:FuturesUnordered +iter_pin_ref vendor/futures-util/src/stream/futures_unordered/mod.rs /^ pub fn iter_pin_ref(self: Pin<&Self>) -> IterPinRef<'_, Fut> {$/;" P implementation:FuturesUnordered +iter_rev vendor/slab/tests/slab.rs /^fn iter_rev() {$/;" f +iter_three vendor/memchr/src/tests/memchr/testdata.rs /^ pub fn iter_three<'a, I, F>(&'a self, reverse: bool, f: F)$/;" P implementation:MemchrTest +iter_two vendor/memchr/src/tests/memchr/testdata.rs /^ pub fn iter_two<'a, I, F>(&'a self, reverse: bool, f: F)$/;" P implementation:MemchrTest +iterate_empty vendor/chunky-vec/src/lib.rs /^ fn iterate_empty() {$/;" f module:tests +iterate_multiple_chunks vendor/chunky-vec/src/lib.rs /^ fn iterate_multiple_chunks() {$/;" f module:tests +itimerspec r_bash/src/lib.rs /^pub struct itimerspec {$/;" s +itimerspec r_readline/src/lib.rs /^pub struct itimerspec {$/;" s +itimerval r_bash/src/lib.rs /^pub struct itimerval {$/;" s +itimerval r_glob/src/lib.rs /^pub struct itimerval {$/;" s +itimerval r_readline/src/lib.rs /^pub struct itimerval {$/;" s +itoa lib/sh/snprintf.c /^#define itoa(/;" d file: +itoa vendor/libc/src/solid/mod.rs /^ pub fn itoa(arg1: c_int, arg2: *mut c_char, arg3: c_int) -> *mut c_char;$/;" f +itos builtins_rust/shopt/src/lib.rs /^ fn itos(_: intmax_t) -> *mut libc::c_char;$/;" f +itos expr.c /^itos (n)$/;" f +itos lib/sh/itos.c /^itos (i)$/;" f +itos r_bash/src/lib.rs /^ pub fn itos(arg1: intmax_t) -> *mut ::std::os::raw::c_char;$/;" f +itos.o lib/sh/Makefile.in /^itos.o: ${BUILD_DIR}\/config.h$/;" t +itos.o lib/sh/Makefile.in /^itos.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +itos.o lib/sh/Makefile.in /^itos.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +itos.o lib/sh/Makefile.in /^itos.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +itos.o lib/sh/Makefile.in /^itos.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +itos.o lib/sh/Makefile.in /^itos.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/conftypes./;" t +itos.o lib/sh/Makefile.in /^itos.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +itos.o lib/sh/Makefile.in /^itos.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp.h$/;" t +itos.o lib/sh/Makefile.in /^itos.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +itos.o lib/sh/Makefile.in /^itos.o: itos.c$/;" t +itrace error.c /^itrace (const char *format, ...)$/;" f typeref:typename:void +itrace r_bash/src/lib.rs /^ pub fn itrace(arg1: *const ::std::os::raw::c_char, ...);$/;" f +j_cleanup builtins_rust/cd/src/lib.rs /^ j_cleanup: *mut fn(),$/;" m struct:JOB +j_cleanup builtins_rust/common/src/lib.rs /^ j_cleanup: *mut fn(),$/;" m struct:JOB +j_cleanup builtins_rust/exit/src/lib.rs /^ j_cleanup: *mut fn(),$/;" m struct:JOB +j_cleanup builtins_rust/fc/src/lib.rs /^ j_cleanup: *mut fn(),$/;" m struct:JOB +j_cleanup builtins_rust/fg_bg/src/lib.rs /^ j_cleanup: *mut fn(),$/;" m struct:JOB +j_cleanup builtins_rust/jobs/src/lib.rs /^ j_cleanup: *mut fn(),$/;" m struct:JOB +j_cleanup builtins_rust/kill/src/intercdep.rs /^ pub j_cleanup: sh_vptrfunc_t,$/;" m struct:job +j_cleanup builtins_rust/setattr/src/intercdep.rs /^ pub j_cleanup: sh_vptrfunc_t,$/;" m struct:job +j_cleanup builtins_rust/wait/src/lib.rs /^ j_cleanup: *mut fn(),$/;" m struct:JOB +j_cleanup jobs.h /^ sh_vptrfunc_t *j_cleanup; \/* Cleanup function to call when job marked JDEAD *\/$/;" m struct:job typeref:typename:sh_vptrfunc_t * +j_cleanup r_bash/src/lib.rs /^ pub j_cleanup: sh_vptrfunc_t,$/;" m struct:job +j_current builtins_rust/common/src/lib.rs /^ j_current: libc::c_int, \/* current job *\/$/;" m struct:jobstats +j_current builtins_rust/exit/src/lib.rs /^ j_current: libc::c_int, \/* current job *\/$/;" m struct:jobstats +j_current builtins_rust/fg_bg/src/lib.rs /^ j_current: libc::c_int, \/* current job *\/$/;" m struct:jobstats +j_current builtins_rust/jobs/src/lib.rs /^ j_current: libc::c_int, \/* current job *\/$/;" m struct:jobstats +j_current builtins_rust/kill/src/intercdep.rs /^ pub j_current: c_int,$/;" m struct:jobstats +j_current builtins_rust/setattr/src/intercdep.rs /^ pub j_current: c_int,$/;" m struct:jobstats +j_current builtins_rust/wait/src/lib.rs /^ j_current: libc::c_int, \/* current job *\/$/;" m struct:jobstats +j_current jobs.h /^ int j_current; \/* current job *\/$/;" m struct:jobstats typeref:typename:int +j_current r_bash/src/lib.rs /^ pub j_current: ::std::os::raw::c_int,$/;" m struct:jobstats +j_firstj builtins_rust/common/src/lib.rs /^ j_firstj: libc::c_int, \/* first (oldest) job allocated *\/$/;" m struct:jobstats +j_firstj builtins_rust/exit/src/lib.rs /^ j_firstj: libc::c_int, \/* first (oldest) job allocated *\/$/;" m struct:jobstats +j_firstj builtins_rust/fg_bg/src/lib.rs /^ j_firstj: libc::c_int, \/* first (oldest) job allocated *\/$/;" m struct:jobstats +j_firstj builtins_rust/jobs/src/lib.rs /^ j_firstj: libc::c_int, \/* first (oldest) job allocated *\/$/;" m struct:jobstats +j_firstj builtins_rust/kill/src/intercdep.rs /^ pub j_firstj: c_int,$/;" m struct:jobstats +j_firstj builtins_rust/setattr/src/intercdep.rs /^ pub j_firstj: c_int,$/;" m struct:jobstats +j_firstj builtins_rust/wait/src/lib.rs /^ j_firstj: libc::c_int, \/* first (oldest) job allocated *\/$/;" m struct:jobstats +j_firstj jobs.h /^ int j_firstj; \/* first (oldest) job allocated *\/$/;" m struct:jobstats typeref:typename:int +j_firstj r_bash/src/lib.rs /^ pub j_firstj: ::std::os::raw::c_int,$/;" m struct:jobstats +j_jobslots builtins_rust/common/src/lib.rs /^ j_jobslots: libc::c_int, \/* total size of jobs array *\/$/;" m struct:jobstats +j_jobslots builtins_rust/exit/src/lib.rs /^ j_jobslots: libc::c_int, \/* total size of jobs array *\/$/;" m struct:jobstats +j_jobslots builtins_rust/fg_bg/src/lib.rs /^ j_jobslots: libc::c_int, \/* total size of jobs array *\/$/;" m struct:jobstats +j_jobslots builtins_rust/jobs/src/lib.rs /^ j_jobslots: libc::c_int, \/* total size of jobs array *\/$/;" m struct:jobstats +j_jobslots builtins_rust/kill/src/intercdep.rs /^ pub j_jobslots: c_int,$/;" m struct:jobstats +j_jobslots builtins_rust/setattr/src/intercdep.rs /^ pub j_jobslots: c_int,$/;" m struct:jobstats +j_jobslots builtins_rust/wait/src/lib.rs /^ j_jobslots: libc::c_int, \/* total size of jobs array *\/$/;" m struct:jobstats +j_jobslots jobs.h /^ int j_jobslots; \/* total size of jobs array *\/$/;" m struct:jobstats typeref:typename:int +j_jobslots r_bash/src/lib.rs /^ pub j_jobslots: ::std::os::raw::c_int,$/;" m struct:jobstats +j_lastasync builtins_rust/common/src/lib.rs /^ j_lastasync: *mut JOB, \/* last async job allocated by stop_pipeline *\/$/;" m struct:jobstats +j_lastasync builtins_rust/exit/src/lib.rs /^ j_lastasync: *mut JOB, \/* last async job allocated by stop_pipeline *\/$/;" m struct:jobstats +j_lastasync builtins_rust/fg_bg/src/lib.rs /^ j_lastasync: *mut JOB, \/* last async job allocated by stop_pipeline *\/$/;" m struct:jobstats +j_lastasync builtins_rust/jobs/src/lib.rs /^ j_lastasync: *mut JOB, \/* last async job allocated by stop_pipeline *\/$/;" m struct:jobstats +j_lastasync builtins_rust/kill/src/intercdep.rs /^ pub j_lastasync: *mut JOB,$/;" m struct:jobstats +j_lastasync builtins_rust/setattr/src/intercdep.rs /^ pub j_lastasync: *mut JOB,$/;" m struct:jobstats +j_lastasync builtins_rust/wait/src/lib.rs /^ j_lastasync: *mut JOB, \/* last async job allocated by stop_pipeline *\/$/;" m struct:jobstats +j_lastasync jobs.h /^ JOB *j_lastasync; \/* last async job allocated by stop_pipeline *\/$/;" m struct:jobstats typeref:typename:JOB * +j_lastasync r_bash/src/lib.rs /^ pub j_lastasync: *mut JOB,$/;" m struct:jobstats +j_lastj builtins_rust/common/src/lib.rs /^ j_lastj: libc::c_int, \/* last (newest) job allocated *\/$/;" m struct:jobstats +j_lastj builtins_rust/exit/src/lib.rs /^ j_lastj: libc::c_int, \/* last (newest) job allocated *\/$/;" m struct:jobstats +j_lastj builtins_rust/fg_bg/src/lib.rs /^ j_lastj: libc::c_int, \/* last (newest) job allocated *\/$/;" m struct:jobstats +j_lastj builtins_rust/jobs/src/lib.rs /^ j_lastj: libc::c_int, \/* last (newest) job allocated *\/$/;" m struct:jobstats +j_lastj builtins_rust/kill/src/intercdep.rs /^ pub j_lastj: c_int,$/;" m struct:jobstats +j_lastj builtins_rust/setattr/src/intercdep.rs /^ pub j_lastj: c_int,$/;" m struct:jobstats +j_lastj builtins_rust/wait/src/lib.rs /^ j_lastj: libc::c_int, \/* last (newest) job allocated *\/$/;" m struct:jobstats +j_lastj jobs.h /^ int j_lastj; \/* last (newest) job allocated *\/$/;" m struct:jobstats typeref:typename:int +j_lastj r_bash/src/lib.rs /^ pub j_lastj: ::std::os::raw::c_int,$/;" m struct:jobstats +j_lastmade builtins_rust/common/src/lib.rs /^ j_lastmade: *mut JOB, \/* last job allocated by stop_pipeline *\/$/;" m struct:jobstats +j_lastmade builtins_rust/exit/src/lib.rs /^ j_lastmade: *mut JOB, \/* last job allocated by stop_pipeline *\/$/;" m struct:jobstats +j_lastmade builtins_rust/fg_bg/src/lib.rs /^ j_lastmade: *mut JOB, \/* last job allocated by stop_pipeline *\/$/;" m struct:jobstats +j_lastmade builtins_rust/jobs/src/lib.rs /^ j_lastmade: *mut JOB, \/* last job allocated by stop_pipeline *\/$/;" m struct:jobstats +j_lastmade builtins_rust/kill/src/intercdep.rs /^ pub j_lastmade: *mut JOB,$/;" m struct:jobstats +j_lastmade builtins_rust/setattr/src/intercdep.rs /^ pub j_lastmade: *mut JOB,$/;" m struct:jobstats +j_lastmade builtins_rust/wait/src/lib.rs /^ j_lastmade: *mut JOB, \/* last job allocated by stop_pipeline *\/$/;" m struct:jobstats +j_lastmade jobs.h /^ JOB *j_lastmade; \/* last job allocated by stop_pipeline *\/$/;" m struct:jobstats typeref:typename:JOB * +j_lastmade r_bash/src/lib.rs /^ pub j_lastmade: *mut JOB,$/;" m struct:jobstats +j_ndead builtins_rust/common/src/lib.rs /^ j_ndead: libc::c_int, \/* number of JDEAD jobs in jobs array *\/$/;" m struct:jobstats +j_ndead builtins_rust/exit/src/lib.rs /^ j_ndead: libc::c_int, \/* number of JDEAD jobs in jobs array *\/$/;" m struct:jobstats +j_ndead builtins_rust/fg_bg/src/lib.rs /^ j_ndead: libc::c_int, \/* number of JDEAD jobs in jobs array *\/$/;" m struct:jobstats +j_ndead builtins_rust/jobs/src/lib.rs /^ j_ndead: libc::c_int, \/* number of JDEAD jobs in jobs array *\/$/;" m struct:jobstats +j_ndead builtins_rust/kill/src/intercdep.rs /^ pub j_ndead: c_int,$/;" m struct:jobstats +j_ndead builtins_rust/setattr/src/intercdep.rs /^ pub j_ndead: c_int,$/;" m struct:jobstats +j_ndead builtins_rust/wait/src/lib.rs /^ j_ndead: libc::c_int, \/* number of JDEAD jobs in jobs array *\/$/;" m struct:jobstats +j_ndead jobs.h /^ int j_ndead; \/* number of JDEAD jobs in jobs array *\/$/;" m struct:jobstats typeref:typename:int +j_ndead r_bash/src/lib.rs /^ pub j_ndead: ::std::os::raw::c_int,$/;" m struct:jobstats +j_njobs builtins_rust/common/src/lib.rs /^ j_njobs: libc::c_int, \/* number of non-NULL jobs in jobs array *\/$/;" m struct:jobstats +j_njobs builtins_rust/exit/src/lib.rs /^ j_njobs: libc::c_int, \/* number of non-NULL jobs in jobs array *\/$/;" m struct:jobstats +j_njobs builtins_rust/fg_bg/src/lib.rs /^ j_njobs: libc::c_int, \/* number of non-NULL jobs in jobs array *\/$/;" m struct:jobstats +j_njobs builtins_rust/jobs/src/lib.rs /^ j_njobs: libc::c_int, \/* number of non-NULL jobs in jobs array *\/$/;" m struct:jobstats +j_njobs builtins_rust/kill/src/intercdep.rs /^ pub j_njobs: c_int,$/;" m struct:jobstats +j_njobs builtins_rust/setattr/src/intercdep.rs /^ pub j_njobs: c_int,$/;" m struct:jobstats +j_njobs builtins_rust/wait/src/lib.rs /^ j_njobs: libc::c_int, \/* number of non-NULL jobs in jobs array *\/$/;" m struct:jobstats +j_njobs jobs.h /^ int j_njobs; \/* number of non-NULL jobs in jobs array *\/$/;" m struct:jobstats typeref:typename:int +j_njobs r_bash/src/lib.rs /^ pub j_njobs: ::std::os::raw::c_int,$/;" m struct:jobstats +j_previous builtins_rust/common/src/lib.rs /^ j_previous: libc::c_int, \/* previous job *\/$/;" m struct:jobstats +j_previous builtins_rust/exit/src/lib.rs /^ j_previous: libc::c_int, \/* previous job *\/$/;" m struct:jobstats +j_previous builtins_rust/fg_bg/src/lib.rs /^ j_previous: libc::c_int, \/* previous job *\/$/;" m struct:jobstats +j_previous builtins_rust/jobs/src/lib.rs /^ j_previous: libc::c_int, \/* previous job *\/$/;" m struct:jobstats +j_previous builtins_rust/kill/src/intercdep.rs /^ pub j_previous: c_int,$/;" m struct:jobstats +j_previous builtins_rust/setattr/src/intercdep.rs /^ pub j_previous: c_int,$/;" m struct:jobstats +j_previous builtins_rust/wait/src/lib.rs /^ j_previous: libc::c_int, \/* previous job *\/$/;" m struct:jobstats +j_previous jobs.h /^ int j_previous; \/* previous job *\/$/;" m struct:jobstats typeref:typename:int +j_previous r_bash/src/lib.rs /^ pub j_previous: ::std::os::raw::c_int,$/;" m struct:jobstats +j_strsignal jobs.c /^j_strsignal (s)$/;" f file: +j_strsignal nojobs.c /^j_strsignal (s)$/;" f file: +j_strsignal r_jobs/src/lib.rs /^unsafe extern "C" fn j_strsignal(mut s: c_int) -> *mut c_char $/;" f +jail vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn jail(jail: *mut ::jail) -> ::c_int;$/;" f +jail_attach vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn jail_attach(jid: ::c_int) -> ::c_int;$/;" f +jail_get vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn jail_get(iov: *mut ::iovec, niov: ::c_uint, flags: ::c_int) -> ::c_int;$/;" f +jail_remove vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn jail_remove(jid: ::c_int) -> ::c_int;$/;" f +jail_set vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn jail_set(iov: *mut ::iovec, niov: ::c_uint, flags: ::c_int) -> ::c_int;$/;" f +jitcnt r_bash/src/lib.rs /^ pub jitcnt: __syscall_slong_t,$/;" m struct:timex +jitcnt r_readline/src/lib.rs /^ pub jitcnt: __syscall_slong_t,$/;" m struct:timex +jitter r_bash/src/lib.rs /^ pub jitter: __syscall_slong_t,$/;" m struct:timex +jitter r_readline/src/lib.rs /^ pub jitter: __syscall_slong_t,$/;" m struct:timex +jmp_buf r_bash/src/lib.rs /^pub type jmp_buf = [__jmp_buf_tag; 1usize];$/;" t +jmp_buf r_readline/src/lib.rs /^pub type jmp_buf = [__jmp_buf_tag; 1usize];$/;" t +job builtins_rust/kill/src/intercdep.rs /^pub struct job {$/;" s +job builtins_rust/setattr/src/intercdep.rs /^pub struct job {$/;" s +job jobs.h /^typedef struct job {$/;" s +job r_bash/src/lib.rs /^pub struct job {$/;" s +job-control configure.ac /^AC_ARG_ENABLE(job-control, AC_HELP_STRING([--enable-job-control], [enable job control features])/;" e +job_control builtins_rust/exec/src/lib.rs /^ static job_control: i32;$/;" v +job_control builtins_rust/fg_bg/src/lib.rs /^ static mut job_control: i32;$/;" v +job_control builtins_rust/suspend/src/intercdep.rs /^ pub static mut job_control: c_int;$/;" v +job_control jobs.c /^int job_control = 1;$/;" v typeref:typename:int +job_control nojobs.c /^int job_control = 0;$/;" v typeref:typename:int +job_control r_bash/src/lib.rs /^ pub static mut job_control: ::std::os::raw::c_int;$/;" v +job_control r_jobs/src/lib.rs /^pub static mut job_control: c_int = 1;$/;" v +job_exit_signal jobs.c /^job_exit_signal (job)$/;" f +job_exit_signal r_bash/src/lib.rs /^ pub fn job_exit_signal(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +job_exit_signal r_jobs/src/lib.rs /^pub unsafe extern "C" fn job_exit_signal(mut job: c_int) -> c_int {$/;" f +job_exit_status jobs.c /^job_exit_status (job)$/;" f +job_exit_status r_bash/src/lib.rs /^ pub fn job_exit_status(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +job_exit_status r_jobs/src/lib.rs /^pub unsafe extern "C" fn job_exit_status(mut job: c_int) -> c_int {$/;" f +job_last_running jobs.c /^job_last_running (job)$/;" f file: +job_last_running r_jobs/src/lib.rs /^unsafe extern "C" fn job_last_running(mut job: c_int) -> c_int {$/;" f +job_last_stopped jobs.c /^job_last_stopped (job)$/;" f file: +job_last_stopped r_jobs/src/lib.rs /^unsafe extern "C" fn job_last_stopped(mut job: c_int) -> c_int {$/;" f +job_signal_status jobs.c /^job_signal_status (job)$/;" f file: +job_signal_status r_jobs/src/lib.rs /^unsafe extern "C" fn job_signal_status(mut job: c_int) -> WAIT {$/;" f +job_working_directory jobs.c /^job_working_directory ()$/;" f typeref:typename:char * file: +job_working_directory r_jobs/src/lib.rs /^unsafe extern "C" fn job_working_directory() -> *mut c_char$/;" f +jobapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "jobapi")] pub mod jobapi;$/;" n +jobapi2 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "jobapi2")] pub mod jobapi2;$/;" n +jobs builtins_rust/common/src/lib.rs /^ static jobs: *mut *mut JOB;$/;" v +jobs builtins_rust/exit/src/lib.rs /^ static mut jobs: *mut *mut JOB;$/;" v +jobs builtins_rust/fg_bg/src/lib.rs /^ static jobs: *mut *mut JOB;$/;" v +jobs builtins_rust/jobs/src/lib.rs /^ static jobs: *mut *mut JOB;$/;" v +jobs builtins_rust/kill/src/intercdep.rs /^ pub static mut jobs: *mut *mut JOB;$/;" v +jobs builtins_rust/wait/src/lib.rs /^ static mut jobs: *mut *mut JOB;$/;" v +jobs jobs.c /^JOB **jobs = (JOB **)NULL;$/;" v typeref:typename:JOB ** +jobs r_bash/src/lib.rs /^ pub static mut jobs: *mut *mut JOB;$/;" v +jobs r_jobs/src/lib.rs /^pub static mut jobs: *mut *mut JOB = 0 as *const c_void as *mut c_void as *mut *mut JOB;$/;" v +jobs.o builtins/Makefile.in /^jobs.o: $(BASHINCDIR)\/maxpath.h $(topdir)\/externs.h $(topdir)\/jobs.h$/;" t +jobs.o builtins/Makefile.in /^jobs.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h $(topdir)\/error.h$/;" t +jobs.o builtins/Makefile.in /^jobs.o: $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/subst.h$/;" t +jobs.o builtins/Makefile.in /^jobs.o: $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/quit.h $(srcdir)\/bashgetopt.h$/;" t +jobs.o builtins/Makefile.in /^jobs.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $/;" t +jobs.o builtins/Makefile.in /^jobs.o: $(topdir)\/sig.h ..\/pathnames.h$/;" t +jobs.o builtins/Makefile.in /^jobs.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +jobs.o builtins/Makefile.in /^jobs.o: jobs.def$/;" t +jobs_list_frozen jobs.c /^static int jobs_list_frozen;$/;" v typeref:typename:int file: +jobs_list_frozen r_jobs/src/lib.rs /^pub static mut jobs_list_frozen:c_int = 0;$/;" v +jobs_m_flag flags.c /^int jobs_m_flag = 0;$/;" v typeref:typename:int +jobs_m_flag r_bash/src/lib.rs /^ pub static mut jobs_m_flag: ::std::os::raw::c_int;$/;" v +jobstats builtins_rust/common/src/lib.rs /^pub struct jobstats {$/;" s +jobstats builtins_rust/exit/src/lib.rs /^pub struct jobstats {$/;" s +jobstats builtins_rust/fg_bg/src/lib.rs /^pub struct jobstats {$/;" s +jobstats builtins_rust/jobs/src/lib.rs /^pub struct jobstats {$/;" s +jobstats builtins_rust/kill/src/intercdep.rs /^pub struct jobstats {$/;" s +jobstats builtins_rust/setattr/src/intercdep.rs /^pub struct jobstats {$/;" s +jobstats builtins_rust/wait/src/lib.rs /^pub struct jobstats {$/;" s +jobstats jobs.h /^struct jobstats {$/;" s +jobstats r_bash/src/lib.rs /^pub struct jobstats {$/;" s +join vendor/futures-macro/src/join.rs /^pub(crate) fn join(input: TokenStream) -> TokenStream {$/;" f +join vendor/futures-macro/src/lib.rs /^mod join;$/;" n +join vendor/futures-util/src/future/join.rs /^pub fn join(future1: Fut1, future2: Fut2) -> Join$/;" f +join vendor/futures-util/src/future/mod.rs /^mod join;$/;" n +join vendor/futures/tests/async_await_macros.rs /^fn join() {$/;" f +join vendor/futures/tests/macro_comma_support.rs /^fn join() {$/;" f +join vendor/proc-macro2/src/fallback.rs /^ pub fn join(&self, _other: Span) -> Option {$/;" P implementation:Span +join vendor/proc-macro2/src/fallback.rs /^ pub fn join(&self, other: Span) -> Option {$/;" P implementation:Span +join vendor/proc-macro2/src/lib.rs /^ pub fn join(&self, other: Span) -> Option {$/;" P implementation:Span +join vendor/proc-macro2/src/wrapper.rs /^ pub fn join(&self, other: Span) -> Option {$/;" P implementation:Span +join1 vendor/futures/tests/eventual.rs /^fn join1() {$/;" f +join2 vendor/futures/tests/eventual.rs /^fn join2() {$/;" f +join3 vendor/futures-util/src/future/join.rs /^pub fn join3($/;" f +join3 vendor/futures/tests/eventual.rs /^fn join3() {$/;" f +join4 vendor/futures-util/src/future/join.rs /^pub fn join4($/;" f +join4 vendor/futures/tests/eventual.rs /^fn join4() {$/;" f +join5 vendor/futures-util/src/future/join.rs /^pub fn join5($/;" f +join5 vendor/futures/tests/eventual.rs /^fn join5() {$/;" f +join_all vendor/futures-util/src/future/join_all.rs /^pub fn join_all(iter: I) -> JoinAll$/;" f +join_all vendor/futures-util/src/future/mod.rs /^mod join_all;$/;" n +join_all_from_iter vendor/futures/tests/future_join_all.rs /^fn join_all_from_iter() {$/;" f +join_all_iter_lifetime vendor/futures/tests/future_join_all.rs /^fn join_all_iter_lifetime() {$/;" f +join_cancels vendor/futures/tests_disabled/all.rs /^fn join_cancels() {$/;" f +join_doesnt_require_unpin vendor/futures/tests/async_await_macros.rs /^fn join_doesnt_require_unpin() {$/;" f +join_incomplete vendor/futures/tests_disabled/all.rs /^fn join_incomplete() {$/;" f +join_internal vendor/futures-macro/src/lib.rs /^pub fn join_internal(input: TokenStream) -> TokenStream {$/;" f +join_mod vendor/futures-util/src/async_await/mod.rs /^mod join_mod;$/;" n +join_size vendor/futures/tests/async_await_macros.rs /^fn join_size() {$/;" f +join_spans vendor/quote/src/spanned.rs /^fn join_spans(tokens: TokenStream) -> Span {$/;" f +joined_ptr vendor/self_cell/src/unsafe_self_cell.rs /^ joined_ptr: NonNull>,$/;" m struct:OwnerAndCellDropGuard +joined_void_ptr vendor/self_cell/src/unsafe_self_cell.rs /^ joined_void_ptr: NonNull,$/;" m struct:UnsafeSelfCell +joint_last_token vendor/proc-macro2/tests/test.rs /^fn joint_last_token() {$/;" f +jrand48 r_bash/src/lib.rs /^ pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;$/;" f +jrand48 r_glob/src/lib.rs /^ pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;$/;" f +jrand48 r_readline/src/lib.rs /^ pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;$/;" f +jrand48 vendor/libc/src/solid/mod.rs /^ pub fn jrand48(arg1: *mut c_ushort) -> c_long;$/;" f +jrand48 vendor/libc/src/unix/bsd/mod.rs /^ pub fn jrand48(xseed: *mut ::c_ushort) -> ::c_long;$/;" f +jrand48 vendor/libc/src/unix/haiku/mod.rs /^ pub fn jrand48(xseed: *mut ::c_ushort) -> ::c_long;$/;" f +jrand48_r r_bash/src/lib.rs /^ pub fn jrand48_r($/;" f +jrand48_r r_glob/src/lib.rs /^ pub fn jrand48_r($/;" f +jrand48_r r_readline/src/lib.rs /^ pub fn jrand48_r($/;" f +js builtins_rust/common/src/lib.rs /^ static js: jobstats;$/;" v +js builtins_rust/exit/src/lib.rs /^ static js: jobstats;$/;" v +js builtins_rust/fg_bg/src/lib.rs /^ static js: jobstats;$/;" v +js builtins_rust/jobs/src/lib.rs /^ static js: jobstats;$/;" v +js builtins_rust/kill/src/intercdep.rs /^ pub static mut js: jobstats;$/;" v +js builtins_rust/wait/src/lib.rs /^ static js: jobstats;$/;" v +js jobs.c /^struct jobstats js = { -1L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NO_JOB, NO_JOB, 0, 0 };$/;" v typeref:struct:jobstats +js r_bash/src/lib.rs /^ pub static mut js: jobstats;$/;" v +js r_jobs/src/lib.rs /^pub static mut js: jobstats = {$/;" v +jump_to_top_level builtins_rust/common/src/lib.rs /^ fn jump_to_top_level(value: i32);$/;" f +jump_to_top_level builtins_rust/exit/src/lib.rs /^ fn jump_to_top_level(level: i32);$/;" f +jump_to_top_level builtins_rust/source/src/lib.rs /^ fn jump_to_top_level(level: i32);$/;" f +jump_to_top_level r_bash/src/lib.rs /^ pub fn jump_to_top_level(arg1: ::std::os::raw::c_int);$/;" f +jump_to_top_level sig.c /^jump_to_top_level (value)$/;" f +just_one_command flags.c /^int just_one_command = 0;$/;" v typeref:typename:int +just_one_command r_bash/src/lib.rs /^ pub static mut just_one_command: ::std::os::raw::c_int;$/;" v +justify lib/sh/snprintf.c /^ int justify;$/;" m struct:DATA typeref:typename:int file: +keep_running vendor/futures-util/src/future/future/remote_handle.rs /^ keep_running: Arc,$/;" m struct:RemoteHandle +kern_return_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type kern_return_t = ::c_int;$/;" t +kernel_version vendor/nix/src/features.rs /^ fn kernel_version() -> Result {$/;" f module:os +kevent vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn kevent($/;" f +kevent vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn kevent($/;" f +kevent vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn kevent($/;" f +kevent vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn kevent($/;" f +kevent vendor/nix/src/sys/event.rs /^ kevent: libc::kevent,$/;" m struct:KEvent +kevent vendor/nix/src/sys/event.rs /^pub fn kevent(kq: RawFd,$/;" f +kevent64 vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn kevent64($/;" f +kevent_ts vendor/nix/src/sys/event.rs /^pub fn kevent_ts(kq: RawFd,$/;" f +key builtins_rust/alias/src/lib.rs /^ pub key: *mut libc::c_char,$/;" m struct:bucket_contents +key builtins_rust/complete/src/lib.rs /^ key: *mut c_char, \/* What we look up. *\/$/;" m struct:BUCKET_CONTENTS +key builtins_rust/declare/src/lib.rs /^ key: *mut c_char, \/* What we look up. *\/$/;" m struct:BUCKET_CONTENTS +key builtins_rust/hash/src/lib.rs /^ pub key: *mut c_char,$/;" m struct:bucket_contents +key builtins_rust/setattr/src/intercdep.rs /^ key:* mut c_char, \/* What we look up. *\/$/;" m struct:BUCKET_CONTENTS +key hashlib.h /^ char *key; \/* What we look up. *\/$/;" m struct:bucket_contents typeref:typename:char * +key lib/readline/rlprivate.h /^ int key, motion; \/* initial key, motion command *\/$/;" m struct:__rl_vimotion_context typeref:typename:int +key lib/readline/rlprivate.h /^ int key;$/;" m struct:_rl_cmd typeref:typename:int +key r_bash/src/lib.rs /^ pub key: *mut ::std::os::raw::c_char,$/;" m struct:bucket_contents +key r_jobs/src/lib.rs /^ pub key: *mut c_char,$/;" m struct:bucket_contents +key r_readline/src/lib.rs /^ pub key: ::std::os::raw::c_int,$/;" m struct:__rl_vimotion_context +key r_readline/src/lib.rs /^ pub key: ::std::os::raw::c_int,$/;" m struct:_rl_cmd +key vendor/fluent-syntax/src/ast/mod.rs /^ pub key: VariantKey,$/;" m struct:Variant +key vendor/slab/src/lib.rs /^ key: usize,$/;" m struct:VacantEntry +key vendor/slab/src/lib.rs /^ pub fn key(&self) -> usize {$/;" P implementation:VacantEntry +key_of vendor/slab/src/lib.rs /^ pub fn key_of(&self, present_element: &T) -> usize {$/;" P implementation:Slab +key_of_layout_optimizable vendor/slab/tests/slab.rs /^fn key_of_layout_optimizable() {$/;" f +key_of_tagged vendor/slab/tests/slab.rs /^fn key_of_tagged() {$/;" f +key_of_zst vendor/slab/tests/slab.rs /^fn key_of_zst() {$/;" f +key_t r_bash/src/lib.rs /^pub type key_t = __key_t;$/;" t +key_t r_glob/src/lib.rs /^pub type key_t = __key_t;$/;" t +key_t r_readline/src/lib.rs /^pub type key_t = __key_t;$/;" t +key_t vendor/libc/src/fuchsia/mod.rs /^pub type key_t = ::c_int;$/;" t +key_t vendor/libc/src/solid/mod.rs /^pub type key_t = c_long;$/;" t +key_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type key_t = ::c_int;$/;" t +key_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type key_t = ::c_long;$/;" t +key_t vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type key_t = c_long;$/;" t +key_t vendor/libc/src/unix/haiku/mod.rs /^pub type key_t = i32;$/;" t +key_t vendor/libc/src/unix/linux_like/mod.rs /^pub type key_t = ::c_int;$/;" t +key_t vendor/libc/src/unix/newlib/mod.rs /^pub type key_t = ::c_int;$/;" t +key_t vendor/libc/src/unix/solarish/mod.rs /^pub type key_t = ::c_int;$/;" t +key_t vendor/libc/src/vxworks/mod.rs /^pub type key_t = ::c_long;$/;" t +keybd_event vendor/winapi/src/um/winuser.rs /^ pub fn keybd_event($/;" f +keymap lib/readline/rlprivate.h /^ Keymap keymap; \/* used when dispatching commands in search string *\/$/;" m struct:__rl_search_context typeref:typename:Keymap +keymap r_readline/src/lib.rs /^ pub keymap: Keymap,$/;" m struct:__rl_search_context +keymap_names lib/readline/bind.c /^static struct name_and_keymap *keymap_names = builtin_keymap_names;$/;" v typeref:struct:name_and_keymap * file: +keymaps.o lib/readline/Makefile.in /^keymaps.o: ${BUILD_DIR}\/config.h rlstdc.h$/;" t +keymaps.o lib/readline/Makefile.in /^keymaps.o: emacs_keymap.c vi_keymap.c$/;" t +keymaps.o lib/readline/Makefile.in /^keymaps.o: keymaps.c emacs_keymap.c vi_keymap.c$/;" t +keymaps.o lib/readline/Makefile.in /^keymaps.o: keymaps.h rltypedefs.h chardefs.h rlconf.h ansi_stdlib.h$/;" t +keymaps.o lib/readline/Makefile.in /^keymaps.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +keymaps.o lib/readline/Makefile.in /^keymaps.o: xmalloc.h$/;" t +keyword vendor/syn/src/token.rs /^ pub fn keyword(input: ParseStream, token: &str) -> Result {$/;" f module:parsing +keyword vendor/syn/src/token.rs /^ pub fn keyword(s: &str, span: Span, tokens: &mut TokenStream) {$/;" f module:printing +khash builtins_rust/alias/src/lib.rs /^ pub khash: libc::c_uint,$/;" m struct:bucket_contents +khash builtins_rust/complete/src/lib.rs /^ khash: libc::c_uint, \/* What key hashes to *\/$/;" m struct:BUCKET_CONTENTS +khash builtins_rust/declare/src/lib.rs /^ khash: u32, \/* What key hashes to *\/$/;" m struct:BUCKET_CONTENTS +khash builtins_rust/hash/src/lib.rs /^ pub khash: u32,$/;" m struct:bucket_contents +khash builtins_rust/setattr/src/intercdep.rs /^ khash:u32, \/* What key hashes to *\/$/;" m struct:BUCKET_CONTENTS +khash hashlib.h /^ unsigned int khash; \/* What key hashes to *\/$/;" m struct:bucket_contents typeref:typename:unsigned int +khash r_bash/src/lib.rs /^ pub khash: ::std::os::raw::c_uint,$/;" m struct:bucket_contents +khash r_jobs/src/lib.rs /^ pub khash: libc::c_uint,$/;" m struct:bucket_contents +kill builtins_rust/wait/src/signal.rs /^ pub fn kill(__pid: __pid_t, __sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +kill r_bash/src/lib.rs /^ pub fn kill(__pid: __pid_t, __sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +kill r_glob/src/lib.rs /^ pub fn kill(__pid: __pid_t, __sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +kill r_readline/src/lib.rs /^ pub fn kill(__pid: __pid_t, __sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +kill vendor/libc/src/fuchsia/mod.rs /^ pub fn kill(pid: pid_t, sig: ::c_int) -> ::c_int;$/;" f +kill vendor/libc/src/unix/mod.rs /^ pub fn kill(pid: pid_t, sig: ::c_int) -> ::c_int;$/;" f +kill vendor/libc/src/vxworks/mod.rs /^ pub fn kill(__pid: pid_t, __signo: ::c_int) -> ::c_int;$/;" f +kill vendor/nix/src/sys/ptrace/bsd.rs /^pub fn kill(pid: Pid) -> Result<()> {$/;" f +kill vendor/nix/src/sys/ptrace/linux.rs /^pub fn kill(pid: Pid) -> Result<()> {$/;" f +kill.o builtins/Makefile.in /^kill.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h $(topdir)\/error.h$/;" t +kill.o builtins/Makefile.in /^kill.o: $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/subst.h $(topdir)\/externs.h$/;" t +kill.o builtins/Makefile.in /^kill.o: $(topdir)\/jobs.h ..\/pathnames.h$/;" t +kill.o builtins/Makefile.in /^kill.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +kill.o builtins/Makefile.in /^kill.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/trap.h $(topdir)\/unwind_prot.h$/;" t +kill.o builtins/Makefile.in /^kill.o: $(topdir)\/variables.h $(topdir)\/conftypes.h $(BASHINCDIR)\/maxpath.h$/;" t +kill.o builtins/Makefile.in /^kill.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +kill.o builtins/Makefile.in /^kill.o: kill.def$/;" t +kill.o lib/readline/Makefile.in /^kill.o: ansi_stdlib.h$/;" t +kill.o lib/readline/Makefile.in /^kill.o: history.h rlstdc.h$/;" t +kill.o lib/readline/Makefile.in /^kill.o: kill.c$/;" t +kill.o lib/readline/Makefile.in /^kill.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +kill.o lib/readline/Makefile.in /^kill.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +kill.o lib/readline/Makefile.in /^kill.o: rlprivate.h$/;" t +kill.o lib/readline/Makefile.in /^kill.o: xmalloc.h$/;" t +kill_all_local_variables r_bash/src/lib.rs /^ pub fn kill_all_local_variables();$/;" f +kill_all_local_variables variables.c /^kill_all_local_variables ()$/;" f typeref:typename:void +kill_builtin builtins_rust/common/src/lib.rs /^ fn kill_builtin(list: *mut WordList) -> i32;$/;" f +kill_current_pipeline jobs.c /^kill_current_pipeline ()$/;" f typeref:typename:void +kill_current_pipeline r_bash/src/lib.rs /^ pub fn kill_current_pipeline();$/;" f +kill_current_pipeline r_jobs/src/lib.rs /^pub unsafe extern "C" fn kill_current_pipeline() {$/;" f +kill_error builtins_rust/kill/src/lib.rs /^unsafe fn kill_error(pid: libc::pid_t, e: c_int) {$/;" f +kill_local_variable r_bash/src/lib.rs /^ pub fn kill_local_variable(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +kill_pid builtins_rust/kill/src/intercdep.rs /^ pub fn kill_pid(pid: libc::pid_t, sig: c_int, group: c_int) -> c_int;$/;" f +kill_pid jobs.c /^kill_pid (pid, sig, group)$/;" f +kill_pid nojobs.c /^kill_pid (pid, signal, group)$/;" f +kill_pid r_bash/src/lib.rs /^ pub fn kill_pid($/;" f +kill_pid r_jobs/src/lib.rs /^pub unsafe extern "C" fn kill_pid(mut pid: pid_t, mut sig: c_int, mut group: c_int) -> c_int $/;" f +kill_team vendor/libc/src/unix/haiku/native.rs /^ pub fn kill_team(team: team_id) -> status_t;$/;" f +kill_thread vendor/libc/src/unix/haiku/native.rs /^ pub fn kill_thread(thread: thread_id) -> status_t;$/;" f +killpg builtins_rust/suspend/src/intercdep.rs /^ pub fn killpg(pgrp: libc::pid_t, sig: c_int) -> c_int;$/;" f +killpg builtins_rust/wait/src/signal.rs /^ pub fn killpg(__pgrp: __pid_t, __sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +killpg lib/sh/oslib.c /^killpg (pgrp, sig)$/;" f +killpg nojobs.c /^# define killpg(/;" d file: +killpg r_bash/src/lib.rs /^ pub fn killpg(__pgrp: __pid_t, __sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +killpg r_glob/src/lib.rs /^ pub fn killpg(__pgrp: __pid_t, __sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +killpg r_readline/src/lib.rs /^ pub fn killpg(__pgrp: __pid_t, __sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +killpg vendor/libc/src/unix/mod.rs /^ pub fn killpg(pgrp: pid_t, sig: ::c_int) -> ::c_int;$/;" f +kind vendor/autocfg/src/error.rs /^ kind: ErrorKind,$/;" m struct:Error +kind vendor/fluent-syntax/src/parser/errors.rs /^ pub kind: ErrorKind,$/;" m struct:ParserError +kind vendor/futures-channel/src/mpsc/mod.rs /^ kind: SendErrorKind,$/;" m struct:SendError +kind vendor/futures-util/src/future/join_all.rs /^ kind: JoinAllKind,$/;" m struct:JoinAll +kind vendor/futures-util/src/future/try_join_all.rs /^ kind: TryJoinAllKind,$/;" m struct:TryJoinAll +kind vendor/memchr/src/memmem/mod.rs /^ kind: SearcherKind,$/;" m struct:Searcher +kind vendor/memchr/src/memmem/mod.rs /^ kind: SearcherRevKind,$/;" m struct:SearcherRev +kind vendor/nix/src/sys/socket/addr.rs /^ fn kind(&self) -> UnixAddrKind<'_> {$/;" P implementation:UnixAddr +kinfo_getvmmap vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kinfo_getvmmap(pid: ::pid_t, cntp: *mut ::c_int) -> *mut kinfo_vmentry;$/;" f +kinfo_getvmmap vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn kinfo_getvmmap(pid: ::pid_t, cntp: *mut ::size_t) -> *mut kinfo_vmentry;$/;" f +kld_isloaded vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kld_isloaded(name: *const ::c_char) -> ::c_int;$/;" f +kld_load vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kld_load(name: *const ::c_char) -> ::c_int;$/;" f +km vendor/winapi/src/lib.rs /^pub mod km;$/;" n +kmap lib/readline/readline.h /^ Keymap kmap;$/;" m struct:readline_state typeref:typename:Keymap +kmap r_readline/src/lib.rs /^ pub kmap: Keymap,$/;" m struct:readline_state +known_translation_t lib/intl/dcigettext.c /^struct known_translation_t$/;" s file: +knownfolders vendor/winapi/src/um/mod.rs /^#[cfg(feature = "knownfolders")] pub mod knownfolders;$/;" n +kpaddr_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^pub type kpaddr_t = u64;$/;" t +kpaddr_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^pub type kpaddr_t = u64;$/;" t +kqueue vendor/libc/src/unix/bsd/mod.rs /^ pub fn kqueue() -> ::c_int;$/;" f +kqueue vendor/nix/src/sys/event.rs /^pub fn kqueue() -> Result {$/;" f +kqueue1 vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn kqueue1(flags: ::c_int) -> ::c_int;$/;" f +ks vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "ks")] pub mod ks;$/;" n +kseq lib/readline/readline.h /^ char *kseq;$/;" m struct:readline_state typeref:typename:char * +kseq r_readline/src/lib.rs /^ pub kseq: *mut ::std::os::raw::c_char,$/;" m struct:readline_state +kseqlen lib/readline/readline.h /^ int kseqlen;$/;" m struct:readline_state typeref:typename:int +kseqlen r_readline/src/lib.rs /^ pub kseqlen: ::std::os::raw::c_int,$/;" m struct:readline_state +ksmedia vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "ksmedia")] pub mod ksmedia;$/;" n +ksrflow lib/readline/rltty.c /^static int ksrflow;$/;" v typeref:typename:int file: +kssize_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^pub type kssize_t = i64;$/;" t +kssize_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^pub type kssize_t = i64;$/;" t +ktmtypes vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "ktmtypes")] pub mod ktmtypes;$/;" n +ktmw32 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "ktmw32")] pub mod ktmw32;$/;" n +kvaddr_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type kvaddr_t = u64;$/;" t +kvm_close vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn kvm_close(kd: *mut ::kvm_t) -> ::c_int;$/;" f +kvm_counter_u64_fetch vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_counter_u64_fetch(kd: *mut ::kvm_t, base: ::c_ulong) -> u64;$/;" f +kvm_dpcpu_setcpu vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_dpcpu_setcpu(kd: *mut ::kvm_t, cpu: ::c_uint) -> ::c_int;$/;" f +kvm_getargv vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_getargv(kd: *mut ::kvm_t, p: *const kinfo_proc, nchr: ::c_int)$/;" f +kvm_getcptime vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_getcptime(kd: *mut ::kvm_t, cp_time: *mut ::c_long) -> ::c_int;$/;" f +kvm_getenvv vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_getenvv(kd: *mut ::kvm_t, p: *const kinfo_proc, nchr: ::c_int)$/;" f +kvm_geterr vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_geterr(kd: *mut ::kvm_t) -> *mut ::c_char;$/;" f +kvm_getloadavg vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn kvm_getloadavg(kd: *mut kvm_t, loadavg: *mut ::c_double, nelem: ::c_int) -> ::c_int;$/;" f +kvm_getmaxcpu vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_getmaxcpu(kd: *mut ::kvm_t) -> ::c_int;$/;" f +kvm_getncpus vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_getncpus(kd: *mut ::kvm_t) -> ::c_int;$/;" f +kvm_getpcpu vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_getpcpu(kd: *mut ::kvm_t, cpu: ::c_int) -> *mut ::c_void;$/;" f +kvm_getprocs vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn kvm_getprocs($/;" f +kvm_getswapinfo vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_getswapinfo($/;" f +kvm_kerndisp vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;$/;" f +kvm_kerndisp vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;$/;" f +kvm_native vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_native(kd: *mut ::kvm_t) -> ::c_int;$/;" f +kvm_nlist vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_nlist(kd: *mut ::kvm_t, nl: *mut nlist) -> ::c_int;$/;" f +kvm_nlist2 vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_nlist2(kd: *mut ::kvm_t, nl: *mut kvm_nlist) -> ::c_int;$/;" f +kvm_open vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn kvm_open($/;" f +kvm_openfiles vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn kvm_openfiles($/;" f +kvm_read vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn kvm_read($/;" f +kvm_read2 vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_read2($/;" f +kvm_read_zpcpu vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn kvm_read_zpcpu($/;" f +kvm_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type kvm_t = ::c_void;$/;" t +kvm_vm_map_entry_first vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn kvm_vm_map_entry_first($/;" f +kvm_vm_map_entry_next vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn kvm_vm_map_entry_next($/;" f +kvm_write vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn kvm_write($/;" f +kvpair_assignment_p arrayfunc.c /^kvpair_assignment_p (l)$/;" f +kvpair_assignment_p r_bash/src/lib.rs /^ pub fn kvpair_assignment_p(arg1: *mut WORD_LIST) -> ::std::os::raw::c_int;$/;" f +kw vendor/async-trait/src/args.rs /^mod kw {$/;" n +kw vendor/futures-macro/src/select.rs /^mod kw {$/;" n +l lib/intl/Makefile.in /^l = @INTL_LIBTOOL_SUFFIX_PREFIX@$/;" m +l10nflist.$lo lib/intl/Makefile.in /^explodename.$lo l10nflist.$lo: $(srcdir)\/loadinfo.h$/;" t +l10nflist.lo lib/intl/Makefile.in /^l10nflist.lo: $(srcdir)\/l10nflist.c$/;" t +l2cmn vendor/winapi/src/um/mod.rs /^#[cfg(feature = "l2cmn")] pub mod l2cmn;$/;" n +l2h_ExtractFromHtml support/texi2html /^sub l2h_ExtractFromHtml$/;" s +l2h_Finish support/texi2html /^sub l2h_Finish$/;" s +l2h_FinishFromHtml support/texi2html /^sub l2h_FinishFromHtml$/;" s +l2h_FinishToLatex support/texi2html /^sub l2h_FinishToLatex$/;" s +l2h_FromCache support/texi2html /^sub l2h_FromCache$/;" s +l2h_FromHtml support/texi2html /^sub l2h_FromHtml$/;" s +l2h_Init support/texi2html /^sub l2h_Init $/;" s +l2h_InitCache support/texi2html /^sub l2h_InitCache$/;" s +l2h_InitFromHtml support/texi2html /^sub l2h_InitFromHtml$/;" s +l2h_InitToLatex support/texi2html /^sub l2h_InitToLatex$/;" s +l2h_StoreCache support/texi2html /^sub l2h_StoreCache$/;" s +l2h_ToCache support/texi2html /^sub l2h_ToCache$/;" s +l2h_ToHtml support/texi2html /^sub l2h_ToHtml$/;" s +l2h_ToLatex support/texi2html /^sub l2h_ToLatex$/;" s +l4_umword_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^pub type l4_umword_t = ::c_ulong; \/\/ Unsigned machine word.$/;" t +l64a r_bash/src/lib.rs /^ pub fn l64a(__n: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char;$/;" f +l64a r_glob/src/lib.rs /^ pub fn l64a(__n: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char;$/;" f +l64a r_readline/src/lib.rs /^ pub fn l64a(__n: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char;$/;" f +l64a vendor/libc/src/solid/mod.rs /^ pub fn l64a(arg1: c_long) -> *mut c_char;$/;" f +l64a_r vendor/libc/src/solid/mod.rs /^ pub fn l64a_r(arg1: c_long, arg2: *mut c_char, arg3: c_int) -> c_int;$/;" f +l_len r_bash/src/lib.rs /^ pub l_len: __off64_t,$/;" m struct:flock64 +l_len r_bash/src/lib.rs /^ pub l_len: __off_t,$/;" m struct:flock +l_pid r_bash/src/lib.rs /^ pub l_pid: __pid_t,$/;" m struct:flock +l_pid r_bash/src/lib.rs /^ pub l_pid: __pid_t,$/;" m struct:flock64 +l_start r_bash/src/lib.rs /^ pub l_start: __off64_t,$/;" m struct:flock64 +l_start r_bash/src/lib.rs /^ pub l_start: __off_t,$/;" m struct:flock +l_type r_bash/src/lib.rs /^ pub l_type: ::std::os::raw::c_short,$/;" m struct:flock +l_type r_bash/src/lib.rs /^ pub l_type: ::std::os::raw::c_short,$/;" m struct:flock64 +l_whence r_bash/src/lib.rs /^ pub l_whence: ::std::os::raw::c_short,$/;" m struct:flock +l_whence r_bash/src/lib.rs /^ pub l_whence: ::std::os::raw::c_short,$/;" m struct:flock64 +label support/man2html.c /^static char label[5] = "lbAA";$/;" v typeref:typename:char[5] file: +labs r_bash/src/lib.rs /^ pub fn labs(__x: ::std::os::raw::c_long) -> ::std::os::raw::c_long;$/;" f +labs r_glob/src/lib.rs /^ pub fn labs(__x: ::std::os::raw::c_long) -> ::std::os::raw::c_long;$/;" f +labs r_readline/src/lib.rs /^ pub fn labs(__x: ::std::os::raw::c_long) -> ::std::os::raw::c_long;$/;" f +labs vendor/libc/src/fuchsia/mod.rs /^ pub fn labs(i: c_long) -> c_long;$/;" f +labs vendor/libc/src/solid/mod.rs /^ pub fn labs(arg1: c_long) -> c_long;$/;" f +labs vendor/libc/src/unix/bsd/mod.rs /^ pub fn labs(i: ::c_long) -> ::c_long;$/;" f +labs vendor/libc/src/unix/haiku/mod.rs /^ pub fn labs(i: ::c_long) -> ::c_long;$/;" f +labs vendor/libc/src/unix/hermit/mod.rs /^ pub fn labs(i: ::c_long) -> ::c_long;$/;" f +labs vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn labs(i: ::c_long) -> ::c_long;$/;" f +labs vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn labs(i: ::c_long) -> ::c_long;$/;" f +labs vendor/libc/src/unix/newlib/mod.rs /^ pub fn labs(i: ::c_long) -> ::c_long;$/;" f +labs vendor/libc/src/unix/solarish/mod.rs /^ pub fn labs(i: ::c_long) -> ::c_long;$/;" f +labs vendor/libc/src/wasi.rs /^ pub fn labs(i: c_long) -> c_long;$/;" f +labs vendor/libc/src/windows/mod.rs /^ pub fn labs(i: c_long) -> c_long;$/;" f +land lib/intl/plural-exp.h /^ land, \/* Logical AND. *\/$/;" e enum:expression::__anon93874cf10103 +lang locale.c /^static char *lang;$/;" v typeref:typename:char * file: +lang vendor/intl-memoizer/src/concurrent.rs /^ lang: LanguageIdentifier,$/;" m struct:IntlLangMemoizer +lang vendor/intl-memoizer/src/lib.rs /^ lang: LanguageIdentifier,$/;" m struct:IntlLangMemoizer +lang_from_parts vendor/unic-langid-impl/src/likelysubtags/mod.rs /^unsafe fn lang_from_parts($/;" f +langid vendor/intl_pluralrules/src/rules.rs /^macro_rules! langid {$/;" M +langid_canonicalize_bench vendor/unic-langid-impl/benches/canonicalize.rs /^fn langid_canonicalize_bench(c: &mut Criterion) {$/;" f +langid_to_direction_map vendor/unic-langid-impl/src/bin/generate_layout.rs /^fn langid_to_direction_map(path: &str) -> HashMap {$/;" f +langids vendor/unic-langid/src/lib.rs /^macro_rules! langids {$/;" M +language vendor/unic-langid-impl/src/lib.rs /^ pub language: subtags::Language,$/;" m struct:LanguageIdentifier +language vendor/unic-langid-impl/src/subtags/mod.rs /^mod language;$/;" n +language_identifier_construct_bench vendor/unic-langid-impl/benches/langid.rs /^fn language_identifier_construct_bench(c: &mut Criterion) {$/;" f +language_identifier_parser_bench vendor/unic-langid-impl/benches/parser.rs /^fn language_identifier_parser_bench(c: &mut Criterion) {$/;" f +language_identifier_parser_casing_bench vendor/unic-langid-impl/benches/parser.rs /^fn language_identifier_parser_casing_bench(c: &mut Criterion) {$/;" f +largest_char lib/readline/chardefs.h /^#define largest_char /;" d +last vendor/elsa/src/vec.rs /^ pub fn last(&self) -> Option<&T::Target> {$/;" P implementation:FrozenVec +last vendor/futures-channel/benches/sync_mpsc.rs /^ last: u32, \/\/ Last number sent$/;" m struct:TestSender +last vendor/nix/src/errno.rs /^ pub fn last() -> Self {$/;" P implementation:Errno +last vendor/nix/src/errno.rs /^fn last() -> Errno {$/;" f +last vendor/syn/src/punctuated.rs /^ last: Option>,$/;" m struct:Punctuated +last vendor/syn/src/punctuated.rs /^ last: option::IntoIter<&'a T>,$/;" m struct:Pairs +last vendor/syn/src/punctuated.rs /^ last: option::IntoIter<&'a T>,$/;" m struct:PrivateIter +last vendor/syn/src/punctuated.rs /^ last: option::IntoIter<&'a mut T>,$/;" m struct:PairsMut +last vendor/syn/src/punctuated.rs /^ last: option::IntoIter<&'a mut T>,$/;" m struct:PrivateIterMut +last vendor/syn/src/punctuated.rs /^ last: option::IntoIter,$/;" m struct:IntoPairs +last vendor/syn/src/punctuated.rs /^ pub fn last(&self) -> Option<&T> {$/;" P implementation:Punctuated +last_alloca_header lib/malloc/alloca.c /^static header *last_alloca_header = NULL; \/* -> last alloca header. *\/$/;" v typeref:typename:header * file: +last_asynchronous_pid builtins_rust/fg_bg/src/lib.rs /^ static mut last_asynchronous_pid: i32;$/;" v +last_asynchronous_pid jobs.c /^volatile pid_t last_asynchronous_pid = NO_PID;$/;" v typeref:typename:volatile pid_t +last_asynchronous_pid nojobs.c /^volatile pid_t last_asynchronous_pid = NO_PID;$/;" v typeref:typename:volatile pid_t +last_asynchronous_pid r_bash/src/lib.rs /^ pub static mut last_asynchronous_pid: pid_t;$/;" v +last_asynchronous_pid r_jobs/src/lib.rs /^pub static mut last_asynchronous_pid: pid_t = -1;$/;" v +last_byte vendor/proc-macro2/src/fallback.rs /^ fn last_byte(self) -> Self {$/;" P implementation:Span +last_command_exit_signal builtins_rust/wait/src/lib.rs /^ static mut last_command_exit_signal: i32;$/;" v +last_command_exit_signal execute_cmd.c /^int last_command_exit_signal;$/;" v typeref:typename:int +last_command_exit_signal r_bash/src/lib.rs /^ pub static mut last_command_exit_signal: ::std::os::raw::c_int;$/;" v +last_command_exit_signal r_jobs/src/lib.rs /^ static mut last_command_exit_signal: c_int;$/;" v +last_command_exit_value builtins_rust/common/src/lib.rs /^ static last_command_exit_value: i32;$/;" v +last_command_exit_value builtins_rust/exit/src/lib.rs /^ static mut last_command_exit_value: i32;$/;" v +last_command_exit_value builtins_rust/source/src/lib.rs /^ static mut last_command_exit_value: i32;$/;" v +last_command_exit_value execute_cmd.c /^volatile int last_command_exit_value;$/;" v typeref:typename:volatile int +last_command_exit_value r_bash/src/lib.rs /^ pub last_command_exit_value: ::std::os::raw::c_int,$/;" m struct:_sh_parser_state_t +last_command_exit_value r_bash/src/lib.rs /^ pub static mut last_command_exit_value: ::std::os::raw::c_int;$/;" v +last_command_exit_value r_jobs/src/lib.rs /^ static mut last_command_exit_value: c_int;$/;" v +last_command_exit_value shell.h /^ int last_command_exit_value;$/;" m struct:_sh_parser_state_t typeref:typename:int +last_command_subst_pid r_bash/src/lib.rs /^ pub static mut last_command_subst_pid: pid_t;$/;" v +last_command_subst_pid subst.c /^pid_t last_command_subst_pid = NO_PID;$/;" v typeref:typename:pid_t +last_completion_failed lib/readline/complete.c /^static int last_completion_failed = 0;$/;" v typeref:typename:int file: +last_context_searched variables.c /^static VAR_CONTEXT *last_context_searched;$/;" v typeref:typename:VAR_CONTEXT * file: +last_err vendor/futures/tests/future_select_ok.rs /^fn last_err() {$/;" f +last_found_line lib/readline/rlprivate.h /^ int last_found_line;$/;" m struct:__rl_search_context typeref:typename:int +last_found_line r_readline/src/lib.rs /^ pub last_found_line: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +last_history_entry bashhist.c /^last_history_entry ()$/;" f typeref:typename:HIST_ENTRY * file: +last_history_entry r_bashhist/src/lib.rs /^unsafe extern "C" fn last_history_entry() -> *mut HIST_ENTRY {$/;" f +last_history_line bashhist.c /^last_history_line ()$/;" f typeref:typename:char * +last_history_line r_bash/src/lib.rs /^ pub fn last_history_line() -> *mut ::std::os::raw::c_char;$/;" f +last_history_line r_bashhist/src/lib.rs /^pub unsafe extern "C" fn last_history_line() -> *mut c_char {$/;" f +last_ignoreval pathexp.h /^ char *last_ignoreval; \/* Last value of variable - cached for speed *\/$/;" m struct:ignorevar typeref:typename:char * +last_ignoreval r_bash/src/lib.rs /^ pub last_ignoreval: *mut ::std::os::raw::c_char,$/;" m struct:ignorevar +last_isearch_string lib/readline/isearch.c /^static char *last_isearch_string;$/;" v typeref:typename:char * file: +last_isearch_string_len lib/readline/isearch.c /^static int last_isearch_string_len;$/;" v typeref:typename:int file: +last_lmargin lib/readline/display.c /^static int last_lmargin;$/;" v typeref:typename:int file: +last_made_pid jobs.c /^volatile pid_t last_made_pid = NO_PID;$/;" v typeref:typename:volatile pid_t +last_made_pid nojobs.c /^volatile pid_t last_made_pid = NO_PID;$/;" v typeref:typename:volatile pid_t +last_made_pid r_bash/src/lib.rs /^ pub static mut last_made_pid: pid_t;$/;" v +last_made_pid r_jobs/src/lib.rs /^pub static mut last_made_pid:pid_t = -1;$/;" v +last_mut vendor/syn/src/punctuated.rs /^ pub fn last_mut(&mut self) -> Option<&mut T> {$/;" P implementation:Punctuated +last_procsub_child jobs.c /^PROCESS *last_procsub_child = (PROCESS *)NULL;$/;" v typeref:typename:PROCESS * +last_procsub_child r_bash/src/lib.rs /^ pub static mut last_procsub_child: *mut PROCESS;$/;" v +last_procsub_child r_jobs/src/lib.rs /^pub static mut last_procsub_child:*mut PROCESS = 0 as *const c_void as *mut c_void as *mut PROCE/;" v +last_rand32 lib/sh/random.c /^static int last_rand32;$/;" v typeref:typename:int file: +last_random_value variables.c /^int last_random_value;$/;" v typeref:typename:int +last_readline_init_file lib/readline/bind.c /^static char *last_readline_init_file = (char *)NULL;$/;" v typeref:typename:char * file: +last_shell_builtin builtins/common.c /^sh_builtin_func_t *last_shell_builtin = (sh_builtin_func_t *)NULL;$/;" v typeref:typename:sh_builtin_func_t * +last_shell_builtin builtins_rust/common/src/lib.rs /^pub static mut last_shell_builtin: *mut sh_builtin_func_t = std::ptr::null_mut();$/;" v +last_shell_builtin builtins_rust/exit/src/lib.rs /^ static mut last_shell_builtin: extern "C" fn(v: *mut WordList) -> i32;$/;" v +last_shell_builtin r_bash/src/lib.rs /^ pub last_shell_builtin: sh_builtin_func_t,$/;" m struct:_sh_parser_state_t +last_shell_builtin r_bash/src/lib.rs /^ pub static mut last_shell_builtin: sh_builtin_func_t;$/;" v +last_shell_builtin shell.h /^ sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;$/;" m struct:_sh_parser_state_t typeref:typename:sh_builtin_func_t * +last_table_searched variables.c /^static HASH_TABLE *last_table_searched; \/* hash_lookup sets this *\/$/;" v typeref:typename:HASH_TABLE * file: +last_tempenv_value lib/sh/getenv.c /^static char *last_tempenv_value = (char *)NULL;$/;" v typeref:typename:char * file: +last_time_mail_checked mailcheck.c /^static time_t last_time_mail_checked = 0;$/;" v typeref:typename:time_t file: +lastc lib/readline/rlprivate.h /^ int lastc;$/;" m struct:__rl_search_context typeref:typename:int +lastc r_readline/src/lib.rs /^ pub lastc: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +lastfunc lib/readline/readline.h /^ rl_command_func_t *lastfunc;$/;" m struct:readline_state typeref:typename:rl_command_func_t * +lastfunc r_readline/src/lib.rs /^ pub lastfunc: rl_command_func_t,$/;" m struct:readline_state +lastlval expr.c /^static struct lvalue lastlval = {0, 0, 0, -1};$/;" v typeref:struct:lvalue file: +lastpipe_cleanup execute_cmd.c /^lastpipe_cleanup (s)$/;" f file: +lastpipe_opt builtins_rust/shopt/src/lib.rs /^ static mut lastpipe_opt: i32;$/;" v +lastpipe_opt execute_cmd.c /^int lastpipe_opt = 0;$/;" v typeref:typename:int +lastref array.h /^ struct array_element *lastref;$/;" m struct:array typeref:struct:array_element * +lastref builtins_rust/mapfile/src/intercdep.rs /^ pub lastref: *mut array_element,$/;" m struct:array +lastref builtins_rust/read/src/intercdep.rs /^ pub lastref: *mut array_element,$/;" m struct:array +lastref r_bash/src/lib.rs /^ pub lastref: *mut array_element,$/;" m struct:array +lastref r_glob/src/lib.rs /^ pub lastref: *mut array_element,$/;" m struct:array +lastref r_readline/src/lib.rs /^ pub lastref: *mut array_element,$/;" m struct:array +lasttok expr.c /^ int curtok, lasttok;$/;" m struct:__anonfc32de750108 typeref:typename:int file: +lasttok expr.c /^static int lasttok; \/* the previous token *\/$/;" v typeref:typename:int file: +lasttp expr.c /^ char *expression, *tp, *lasttp;$/;" m struct:__anonfc32de750108 typeref:typename:char * file: +lasttp expr.c /^static char *lasttp; \/* pointer to last token position *\/$/;" v typeref:typename:char * file: +layout vendor/self_cell/src/unsafe_self_cell.rs /^ layout: Layout,$/;" m struct:OwnerAndCellDropGuard::drop::DeallocGuard +layout_array vendor/smallvec/src/lib.rs /^fn layout_array(n: usize) -> Result {$/;" f +layout_table vendor/unic-langid-impl/src/lib.rs /^mod layout_table;$/;" n +lazy vendor/futures-util/src/future/lazy.rs /^pub fn lazy(f: F) -> Lazy$/;" f +lazy vendor/futures-util/src/future/mod.rs /^mod lazy;$/;" n +lazy vendor/lazy_static/src/lib.rs /^pub mod lazy;$/;" n +lazy-static.rs vendor/lazy_static/README.md /^lazy-static.rs$/;" c +lazy_default vendor/once_cell/tests/it.rs /^ fn lazy_default() {$/;" f module:sync +lazy_default vendor/once_cell/tests/it.rs /^ fn lazy_default() {$/;" f module:unsync +lazy_deref_mut vendor/once_cell/tests/it.rs /^ fn lazy_deref_mut() {$/;" f module:sync +lazy_deref_mut vendor/once_cell/tests/it.rs /^ fn lazy_deref_mut() {$/;" f module:unsync +lazy_force_mut vendor/once_cell/tests/it.rs /^ fn lazy_force_mut() {$/;" f module:unsync +lazy_get_mut vendor/once_cell/tests/it.rs /^ fn lazy_get_mut() {$/;" f module:unsync +lazy_into_value vendor/once_cell/tests/it.rs /^ fn lazy_into_value() {$/;" f module:sync +lazy_into_value vendor/once_cell/tests/it.rs /^ fn lazy_into_value() {$/;" f module:unsync +lazy_new vendor/once_cell/tests/it.rs /^ fn lazy_new() {$/;" f module:sync +lazy_new vendor/once_cell/tests/it.rs /^ fn lazy_new() {$/;" f module:unsync +lazy_poisoning vendor/once_cell/tests/it.rs /^ fn lazy_poisoning() {$/;" f module:sync +lazy_poisoning vendor/once_cell/tests/it.rs /^ fn lazy_poisoning() {$/;" f module:unsync +lazy_static vendor/lazy_static/src/lib.rs /^macro_rules! lazy_static {$/;" M +lbreak xmalloc.c /^static PTR_T lbreak;$/;" v typeref:typename:PTR_T file: +lbreaks lib/readline/display.c /^ int *lbreaks;$/;" m struct:line_state typeref:typename:int * file: +lbsize lib/readline/display.c /^ int lbsize;$/;" m struct:line_state typeref:typename:int file: +lbuf lib/sh/zread.c /^static char lbuf[ZBUFSIZ];$/;" v typeref:typename:char[] file: +lc_all locale.c /^static char *lc_all;$/;" v typeref:typename:char * file: +lchflags vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn lchflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int;$/;" f +lchflags vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn lchflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int;$/;" f +lchmod r_bash/src/lib.rs /^ pub fn lchmod(__file: *const ::std::os::raw::c_char, __mode: __mode_t)$/;" f +lchmod r_readline/src/lib.rs /^ pub fn lchmod(__file: *const ::std::os::raw::c_char, __mode: __mode_t)$/;" f +lchown r_bash/src/lib.rs /^ pub fn lchown($/;" f +lchown r_glob/src/lib.rs /^ pub fn lchown($/;" f +lchown r_readline/src/lib.rs /^ pub fn lchown($/;" f +lchown vendor/libc/src/fuchsia/mod.rs /^ pub fn lchown(path: *const c_char, uid: uid_t, gid: gid_t) -> ::c_int;$/;" f +lchown vendor/libc/src/unix/mod.rs /^ pub fn lchown(path: *const c_char, uid: uid_t, gid: gid_t) -> ::c_int;$/;" f +lcommand builtins_rust/complete/src/lib.rs /^ lcommand: *mut c_char,$/;" m struct:COMPSPEC +lcommand pcomplete.h /^ char *lcommand;$/;" m struct:compspec typeref:typename:char * +lcommand r_bash/src/lib.rs /^ pub lcommand: *mut ::std::os::raw::c_char,$/;" m struct:compspec +lcong48 r_bash/src/lib.rs /^ pub fn lcong48(__param: *mut ::std::os::raw::c_ushort);$/;" f +lcong48 r_glob/src/lib.rs /^ pub fn lcong48(__param: *mut ::std::os::raw::c_ushort);$/;" f +lcong48 r_readline/src/lib.rs /^ pub fn lcong48(__param: *mut ::std::os::raw::c_ushort);$/;" f +lcong48 vendor/libc/src/solid/mod.rs /^ pub fn lcong48(arg1: *mut c_ushort);$/;" f +lcong48 vendor/libc/src/unix/bsd/mod.rs /^ pub fn lcong48(p: *mut ::c_ushort);$/;" f +lcong48 vendor/libc/src/unix/haiku/mod.rs /^ pub fn lcong48(p: *mut ::c_ushort);$/;" f +lcong48_deterministic vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn lcong48_deterministic(p: *mut ::c_ushort);$/;" f +lcong48_r r_bash/src/lib.rs /^ pub fn lcong48_r($/;" f +lcong48_r r_glob/src/lib.rs /^ pub fn lcong48_r($/;" f +lcong48_r r_readline/src/lib.rs /^ pub fn lcong48_r($/;" f +lconv r_bash/src/lib.rs /^pub struct lconv {$/;" s +lcurrent builtins/bashgetopt.c /^WORD_LIST *lcurrent = (WORD_LIST *)NULL;$/;" v typeref:typename:WORD_LIST * +lcurrent builtins_rust/fc/src/lib.rs /^ static mut lcurrent: *mut WordList;$/;" v +lcurrent r_bash/src/lib.rs /^ pub static mut lcurrent: *mut WORD_LIST;$/;" v +ld variables.h /^ long double ld; \/* long double *\/$/;" m union:_value typeref:typename:long double +ldfallback lib/sh/snprintf.c /^ldfallback (data, fs, fe, ld)$/;" f file: +ldiv r_bash/src/lib.rs /^ pub fn ldiv(__numer: ::std::os::raw::c_long, __denom: ::std::os::raw::c_long) -> ldiv_t;$/;" f +ldiv r_glob/src/lib.rs /^ pub fn ldiv(__numer: ::std::os::raw::c_long, __denom: ::std::os::raw::c_long) -> ldiv_t;$/;" f +ldiv r_readline/src/lib.rs /^ pub fn ldiv(__numer: ::std::os::raw::c_long, __denom: ::std::os::raw::c_long) -> ldiv_t;$/;" f +ldiv vendor/libc/src/solid/mod.rs /^ pub fn ldiv(arg1: c_long, arg2: c_long) -> ldiv_t;$/;" f +ldiv_t r_bash/src/lib.rs /^pub struct ldiv_t {$/;" s +ldiv_t r_glob/src/lib.rs /^pub struct ldiv_t {$/;" s +ldiv_t r_readline/src/lib.rs /^pub struct ldiv_t {$/;" s +leading_ones vendor/stdext/src/num/integer.rs /^ fn leading_ones(self) -> u32;$/;" P interface:Integer +leading_zeros vendor/stdext/src/num/integer.rs /^ fn leading_zeros(self) -> u32;$/;" P interface:Integer +leaf_token vendor/proc-macro2/src/parse.rs /^fn leaf_token(input: Cursor) -> PResult {$/;" f +ledger_array_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type ledger_array_t = *mut ::ledger_t;$/;" t +ledger_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type ledger_t = ::mach_port_t;$/;" t +left builtins_rust/command/src/lib.rs /^ pub left: *mut cond_com,$/;" m struct:cond_com +left builtins_rust/kill/src/intercdep.rs /^ pub left: *mut cond_com,$/;" m struct:cond_com +left builtins_rust/setattr/src/intercdep.rs /^ pub left: *mut cond_com,$/;" m struct:cond_com +left command.h /^ struct cond_com *left, *right;$/;" m struct:cond_com typeref:struct:cond_com * +left r_bash/src/lib.rs /^ pub left: *mut cond_com,$/;" m struct:cond_com +left r_glob/src/lib.rs /^ pub left: *mut cond_com,$/;" m struct:cond_com +left r_readline/src/lib.rs /^ pub left: *mut cond_com,$/;" m struct:cond_com +left_future vendor/futures-util/src/future/future/mod.rs /^ fn left_future(self) -> Either$/;" P interface:FutureExt +left_sink vendor/futures-util/src/sink/mod.rs /^ fn left_sink(self) -> Either$/;" P interface:SinkExt +left_stream vendor/futures-util/src/stream/stream/mod.rs /^ fn left_stream(self) -> Either$/;" P interface:StreamExt +leftarg lib/intl/eval-plural.h /^ unsigned long int leftarg = plural_eval (pexp->val.args[0], n);$/;" v typeref:typename:unsigned long int +legal_alias_name builtins_rust/alias/src/lib.rs /^ fn legal_alias_name(_: *const libc::c_char, _: libc::c_int) -> libc::c_int;$/;" f +legal_alias_name general.c /^legal_alias_name (string, flags)$/;" f +legal_alias_name r_bash/src/lib.rs /^ pub fn legal_alias_name($/;" f +legal_alias_name r_glob/src/lib.rs /^ pub fn legal_alias_name($/;" f +legal_alias_name r_readline/src/lib.rs /^ pub fn legal_alias_name($/;" f +legal_alias_rust builtins_rust/alias/src/lib.rs /^unsafe fn legal_alias_rust(name: *mut libc::c_char, value: *mut libc::c_char) -> libc::c_int {$/;" f +legal_hash_rust builtins_rust/hash/src/lib.rs /^unsafe fn legal_hash_rust(name: *mut libc::c_char, value: *mut libc::c_char) -> libc::c_int {$/;" f +legal_identifier builtins_rust/declare/src/lib.rs /^ fn legal_identifier(name: *const c_char) -> i32;$/;" f +legal_identifier builtins_rust/getopts/src/lib.rs /^ fn legal_identifier(name: *const c_char) -> i32;$/;" f +legal_identifier builtins_rust/mapfile/src/intercdep.rs /^ pub fn legal_identifier(arg1: *const c_char) -> c_int;$/;" f +legal_identifier builtins_rust/printf/src/intercdep.rs /^ pub fn legal_identifier(arg1: *const c_char) -> c_int;$/;" f +legal_identifier builtins_rust/read/src/intercdep.rs /^ pub fn legal_identifier(arg1: *const c_char) -> c_int;$/;" f +legal_identifier builtins_rust/set/src/lib.rs /^ fn legal_identifier(_: *const libc::c_char) -> i32;$/;" f +legal_identifier builtins_rust/setattr/src/intercdep.rs /^ pub fn legal_identifier(arg1: *const c_char) -> c_int;$/;" f +legal_identifier builtins_rust/wait/src/lib.rs /^ fn legal_identifier(name: *const c_char) -> i32;$/;" f +legal_identifier general.c /^legal_identifier (name)$/;" f +legal_identifier r_bash/src/lib.rs /^ pub fn legal_identifier(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +legal_identifier r_glob/src/lib.rs /^ pub fn legal_identifier(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +legal_identifier r_readline/src/lib.rs /^ pub fn legal_identifier(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +legal_lang_values lib/readline/nls.c /^static char *legal_lang_values[] =$/;" v typeref:typename:char * [] file: +legal_number builtins_rust/caller/src/lib.rs /^ fn legal_number(string: *mut c_char, result: *mut c_long) -> i32;$/;" f +legal_number builtins_rust/common/src/lib.rs /^ fn legal_number(string: *mut c_char, result: *mut c_long) -> i32;$/;" f +legal_number builtins_rust/fc/src/lib.rs /^ fn legal_number(str1: *const c_char, result: *mut c_long) -> i32;$/;" f +legal_number builtins_rust/history/src/intercdep.rs /^ pub fn legal_number (str1:*const c_char,result:* mut c_long) -> i32;$/;" f +legal_number builtins_rust/jobs/src/lib.rs /^ fn legal_number(str: *const c_char, result: *mut c_long) -> i32;$/;" f +legal_number builtins_rust/kill/src/intercdep.rs /^ pub fn legal_number(string: *mut c_char, result: c_long) -> c_int;$/;" f +legal_number builtins_rust/mapfile/src/intercdep.rs /^ pub fn legal_number (str1:*const c_char,result:* mut c_long) -> i32;$/;" f +legal_number builtins_rust/printf/src/intercdep.rs /^ pub fn legal_number (str1:*const c_char,result:* mut c_long) -> i32;$/;" f +legal_number builtins_rust/pushd/src/lib.rs /^ fn legal_number(str1: *const c_char, num: *mut libc::c_long) -> i32;$/;" f +legal_number builtins_rust/read/src/intercdep.rs /^ pub fn legal_number($/;" f +legal_number builtins_rust/wait/src/lib.rs /^ fn legal_number(string: *const c_char, result: *mut c_long) -> i32;$/;" f +legal_number general.c /^legal_number (string, result)$/;" f +legal_number r_bash/src/lib.rs /^ pub fn legal_number($/;" f +legal_number r_glob/src/lib.rs /^ pub fn legal_number($/;" f +legal_number r_readline/src/lib.rs /^ pub fn legal_number($/;" f +legal_variable_char general.h /^#define legal_variable_char(/;" d +legal_variable_starter general.h /^#define legal_variable_starter(/;" d +len lib/readline/colors.h /^ size_t len;$/;" m struct:bin_str typeref:typename:size_t +len pathexp.h /^ int len, flags;$/;" m struct:ign typeref:typename:int +len r_bash/src/lib.rs /^ pub len: ::std::os::raw::c_int,$/;" m struct:ign +len r_readline/src/lib.rs /^ pub len: usize,$/;" m struct:bin_str +len vendor/chunky-vec/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:Chunk +len vendor/chunky-vec/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:Iter +len vendor/chunky-vec/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:IterMut +len vendor/chunky-vec/src/lib.rs /^ len: usize,$/;" m struct:Iter +len vendor/chunky-vec/src/lib.rs /^ len: usize,$/;" m struct:IterMut +len vendor/chunky-vec/src/lib.rs /^ pub fn len(&self) -> usize {$/;" P implementation:ChunkyVec +len vendor/elsa/src/vec.rs /^ pub fn len(&self) -> usize {$/;" P implementation:FrozenVec +len vendor/fluent-fallback/src/cache.rs /^ pub fn len(&self) -> usize {$/;" f +len vendor/futures-util/src/io/read_to_end.rs /^ len: usize,$/;" m struct:Guard +len vendor/futures-util/src/stream/futures_ordered.rs /^ pub fn len(&self) -> usize {$/;" P implementation:FuturesOrdered +len vendor/futures-util/src/stream/futures_unordered/iter.rs /^ pub(super) len: usize,$/;" m struct:IntoIter +len vendor/futures-util/src/stream/futures_unordered/iter.rs /^ pub(super) len: usize,$/;" m struct:IterPinMut +len vendor/futures-util/src/stream/futures_unordered/iter.rs /^ pub(super) len: usize,$/;" m struct:IterPinRef +len vendor/futures-util/src/stream/futures_unordered/mod.rs /^ pub fn len(&self) -> usize {$/;" P implementation:FuturesUnordered +len vendor/futures-util/src/stream/select_all.rs /^ pub fn len(&self) -> usize {$/;" P implementation:SelectAll +len vendor/nix/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:CStr +len vendor/nix/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:OsStr +len vendor/nix/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:Path +len vendor/nix/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:PathBuf +len vendor/nix/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:str +len vendor/nix/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:u8 +len vendor/nix/src/lib.rs /^ fn len(&self) -> usize;$/;" P interface:NixPath +len vendor/nix/src/sys/socket/addr.rs /^ fn len(&self) -> libc::socklen_t {$/;" P implementation:SockaddrLike +len vendor/nix/src/sys/socket/addr.rs /^ fn len(&self) -> libc::socklen_t {$/;" P implementation:UnixAddr +len vendor/nix/src/sys/socket/sockopt.rs /^ len: socklen_t,$/;" m struct:GetBool +len vendor/nix/src/sys/socket/sockopt.rs /^ len: socklen_t,$/;" m struct:GetOsString +len vendor/nix/src/sys/socket/sockopt.rs /^ len: socklen_t,$/;" m struct:GetStruct +len vendor/nix/src/sys/socket/sockopt.rs /^ len: socklen_t,$/;" m struct:GetU8 +len vendor/nix/src/sys/socket/sockopt.rs /^ len: socklen_t,$/;" m struct:GetUsize +len vendor/nix/src/sys/uio.rs /^ pub len: usize,$/;" m struct:RemoteIoVec +len vendor/nix/test/sys/test_ioctl.rs /^ len: u32,$/;" m struct:linux_ioctls::spi_ioc_transfer +len vendor/proc-macro2/src/parse.rs /^ fn len(&self) -> usize {$/;" P implementation:Cursor +len vendor/proc-macro2/src/rcvec.rs /^ pub fn len(&self) -> usize {$/;" P implementation:RcVec +len vendor/slab/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:Drain +len vendor/slab/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:IntoIter +len vendor/slab/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:Iter +len vendor/slab/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:IterMut +len vendor/slab/src/lib.rs /^ len: usize,$/;" m struct:Drain +len vendor/slab/src/lib.rs /^ len: usize,$/;" m struct:IntoIter +len vendor/slab/src/lib.rs /^ len: usize,$/;" m struct:Iter +len vendor/slab/src/lib.rs /^ len: usize,$/;" m struct:IterMut +len vendor/slab/src/lib.rs /^ len: usize,$/;" m struct:Slab +len vendor/slab/src/lib.rs /^ pub fn len(&self) -> usize {$/;" P implementation:Slab +len vendor/smallvec/src/lib.rs /^ len: usize,$/;" m struct:SmallVec::insert_many::DropOnPanic +len vendor/smallvec/src/lib.rs /^ fn len(&self) -> usize {$/;" P implementation:Drain +len vendor/smallvec/src/lib.rs /^ len: &'a mut usize,$/;" m struct:SetLenOnDrop +len vendor/smallvec/src/lib.rs /^ pub fn len(&self) -> usize {$/;" P implementation:SmallVec +len vendor/syn/src/data.rs /^ pub fn len(&self) -> usize {$/;" P implementation:Fields +len vendor/syn/src/punctuated.rs /^ fn len(&self) -> usize {$/;" P implementation:IntoIter +len vendor/syn/src/punctuated.rs /^ fn len(&self) -> usize {$/;" P implementation:IntoPairs +len vendor/syn/src/punctuated.rs /^ fn len(&self) -> usize {$/;" P implementation:Iter +len vendor/syn/src/punctuated.rs /^ fn len(&self) -> usize {$/;" P implementation:IterMut +len vendor/syn/src/punctuated.rs /^ fn len(&self) -> usize {$/;" P implementation:Pairs +len vendor/syn/src/punctuated.rs /^ fn len(&self) -> usize {$/;" P implementation:PairsMut +len vendor/syn/src/punctuated.rs /^ fn len(&self) -> usize {$/;" P implementation:PrivateIter +len vendor/syn/src/punctuated.rs /^ fn len(&self) -> usize {$/;" P implementation:PrivateIterMut +len vendor/syn/src/punctuated.rs /^ pub fn len(&self) -> usize {$/;" P implementation:Punctuated +len_all vendor/futures-util/src/stream/futures_unordered/task.rs /^ pub(super) len_all: UnsafeCell,$/;" m struct:Task +len_valid_during_out_of_order_completion vendor/futures/tests/stream_futures_unordered.rs /^fn len_valid_during_out_of_order_completion() {$/;" f +length lib/intl/gettextP.h /^ size_t length;$/;" m struct:sysdep_string_desc typeref:typename:size_t +length lib/intl/gmo.h /^ nls_uint32 length;$/;" m struct:string_desc typeref:typename:nls_uint32 +length lib/intl/gmo.h /^ nls_uint32 length;$/;" m struct:sysdep_segment typeref:typename:nls_uint32 +length lib/readline/history.h /^ int length; \/* Number of elements within this array. *\/$/;" m struct:_hist_state typeref:typename:int +length lib/sh/snprintf.c /^ int length;$/;" m struct:DATA typeref:typename:int file: +length r_readline/src/lib.rs /^ pub length: ::std::os::raw::c_int,$/;" m struct:_hist_state +length vendor/fluent-syntax/src/parser/core.rs /^ pub(super) length: usize,$/;" m struct:Parser +lengths vendor/futures/tests/io_buf_reader.rs /^ lengths: Vec,$/;" m struct:test_short_reads::ShortReader +less_or_equal lib/intl/plural-exp.h /^ less_or_equal, \/* Comparison. *\/$/;" e enum:expression::__anon93874cf10103 +less_than lib/intl/plural-exp.h /^ less_than, \/* Comparison. *\/$/;" e enum:expression::__anon93874cf10103 +lesscore lib/malloc/malloc.c /^lesscore (nu) \/* give system back some memory *\/$/;" f file: +let.o builtins/Makefile.in /^let.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +let.o builtins/Makefile.in /^let.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +let.o builtins/Makefile.in /^let.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +let.o builtins/Makefile.in /^let.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $(/;" t +let.o builtins/Makefile.in /^let.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +let.o builtins/Makefile.in /^let.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +let.o builtins/Makefile.in /^let.o: ..\/pathnames.h$/;" t +let.o builtins/Makefile.in /^let.o: let.def$/;" t +letter builtins_rust/set/src/lib.rs /^ letter: i32,$/;" m struct:opp +lex_error vendor/proc-macro2/src/parse.rs /^fn lex_error(cursor: Cursor) -> LexError {$/;" f +lface lib/readline/display.c /^ char *lface;$/;" m struct:line_state typeref:typename:char * file: +lfind vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn lfind($/;" f +lfind vendor/libc/src/unix/haiku/mod.rs /^ pub fn lfind($/;" f +lflag lib/readline/rltty.c /^ int lflag; \/* Local mode flags, like LPASS8. *\/$/;" m struct:bsdtty typeref:typename:int file: +lgetfh vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn lgetfh(path: *const ::c_char, fhp: *mut fhandle_t) -> ::c_int;$/;" f +lgetxattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn lgetxattr($/;" f +lgetxattr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn lgetxattr($/;" f +lgetxattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn lgetxattr($/;" f +lgrp_affinity_get vendor/libc/src/unix/solarish/mod.rs /^ pub fn lgrp_affinity_get($/;" f +lgrp_affinity_set vendor/libc/src/unix/solarish/mod.rs /^ pub fn lgrp_affinity_set($/;" f +lgrp_affinity_t vendor/libc/src/unix/solarish/mod.rs /^pub type lgrp_affinity_t = ::c_int;$/;" t +lgrp_content_t vendor/libc/src/unix/solarish/mod.rs /^pub type lgrp_content_t = ::c_uint;$/;" t +lgrp_cookie_t vendor/libc/src/unix/solarish/mod.rs /^pub type lgrp_cookie_t = ::uintptr_t;$/;" t +lgrp_cpus vendor/libc/src/unix/solarish/mod.rs /^ pub fn lgrp_cpus($/;" f +lgrp_fini vendor/libc/src/unix/solarish/mod.rs /^ pub fn lgrp_fini(cookie: lgrp_cookie_t) -> ::c_int;$/;" f +lgrp_home vendor/libc/src/unix/solarish/mod.rs /^ pub fn lgrp_home(idtype: ::idtype_t, id: ::id_t) -> ::lgrp_id_t;$/;" f +lgrp_id_t vendor/libc/src/unix/solarish/mod.rs /^pub type lgrp_id_t = ::id_t;$/;" t +lgrp_init vendor/libc/src/unix/solarish/mod.rs /^ pub fn lgrp_init(view: lgrp_view_t) -> lgrp_cookie_t;$/;" f +lgrp_lat_between_t vendor/libc/src/unix/solarish/mod.rs /^pub type lgrp_lat_between_t = ::c_uint;$/;" t +lgrp_mem_size vendor/libc/src/unix/solarish/mod.rs /^ pub fn lgrp_mem_size($/;" f +lgrp_mem_size_flag_t vendor/libc/src/unix/solarish/mod.rs /^pub type lgrp_mem_size_flag_t = ::c_uint;$/;" t +lgrp_mem_size_t vendor/libc/src/unix/solarish/mod.rs /^pub type lgrp_mem_size_t = ::c_longlong;$/;" t +lgrp_nlgrps vendor/libc/src/unix/solarish/mod.rs /^ pub fn lgrp_nlgrps(cookie: ::lgrp_cookie_t) -> ::c_int;$/;" f +lgrp_resources vendor/libc/src/unix/solarish/mod.rs /^ pub fn lgrp_resources($/;" f +lgrp_root vendor/libc/src/unix/solarish/mod.rs /^ pub fn lgrp_root(cookie: ::lgrp_cookie_t) -> ::lgrp_id_t;$/;" f +lgrp_rsrc_t vendor/libc/src/unix/solarish/mod.rs /^pub type lgrp_rsrc_t = ::c_int;$/;" t +lgrp_version vendor/libc/src/unix/solarish/mod.rs /^ pub fn lgrp_version(version: ::c_int) -> ::c_int;$/;" f +lgrp_view vendor/libc/src/unix/solarish/mod.rs /^ pub fn lgrp_view(cookie: ::lgrp_cookie_t) -> ::lgrp_view_t;$/;" f +lgrp_view_t vendor/libc/src/unix/solarish/mod.rs /^pub type lgrp_view_t = ::c_uint;$/;" t +lhead builtins/bashgetopt.c /^static WORD_LIST *lhead = (WORD_LIST *)NULL;$/;" v typeref:typename:WORD_LIST * file: +lib/libwinapi_aclui.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_aclui.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_activeds.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_activeds.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_advapi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_advapi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_advpack.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_advpack.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_amsi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_amsi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_api-ms-win-net-isolation-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_api-ms-win-net-isolation-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_apidll.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_appmgmts.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_appmgmts.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_appnotify.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_appnotify.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_asycfilt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_audioeng.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_audioeng.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_authz.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_authz.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_avifil32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_avifil32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_avrt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_avrt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_basesrv.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_basesrv.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_bcrypt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_bcrypt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_bluetoothapis.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_bluetoothapis.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_bthprops.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_bthprops.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_cabinet.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_cabinet.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_certadm.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_certadm.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_certpoleng.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_certpoleng.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_cfgmgr32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_cfgmgr32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_chakrart.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_chakrart.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_cldapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_cldapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_clfsw32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_clfsw32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_clusapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_clusapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_comctl32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_comctl32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_comdlg32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_comdlg32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_comppkgsup.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_comppkgsup.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_compstui.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_compstui.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_comsvcs.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_comsvcs.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_coremessaging.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_coremessaging.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_credui.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_credui.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_crypt32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_crypt32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_cryptdll.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_cryptdll.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_cryptnet.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_cryptnet.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_cryptui.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_cryptui.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_cryptxml.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_cryptxml.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_cscapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_cscapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_cscdll.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_cscdll.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_d2d1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_d2d1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_d3d10.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_d3d10.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_d3d10_1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_d3d10_1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_d3d11.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_d3d11.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_d3d12.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_d3d12.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_d3d9.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_d3d9.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_d3dcompiler.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_d3dcompiler.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_d3dcsx.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_d3dcsx.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_d3dcsxd.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_d3dcsxd.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_davclnt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_davclnt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dbgeng.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dbgeng.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dbghelp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dbghelp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dciman32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dciman32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dcomp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dcomp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ddraw.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ddraw.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_deviceaccess.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_deviceaccess.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_devmgr.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_devmgr.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dflayout.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dflayout.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dhcpcsvc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dhcpcsvc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dhcpcsvc6.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dhcpcsvc6.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dhcpsapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dhcpsapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_difxapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_difxapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dinput8.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dinput8.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dmprocessxmlfiltered.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dmprocessxmlfiltered.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dnsapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dnsapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dnsperf.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dnsperf.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dnsrslvr.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dnsrslvr.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dpx.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dpx.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_drt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_drt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_drtprov.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_drtprov.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_drttransport.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_drttransport.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dsound.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dsound.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dsprop.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dsprop.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dssec.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dssec.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dststlog.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dststlog.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dsuiext.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dsuiext.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dwmapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dwmapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dwrite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dwrite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dxgi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dxgi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_dxva2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_dxva2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_eappcfg.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_eappcfg.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_eappprxy.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_eappprxy.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_easregprov.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_easregprov.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_efswrt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_efswrt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_elscore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_elscore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_esent.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_esent.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_evr.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_evr.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_faultrep.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_faultrep.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_feclient.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_feclient.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_fhsvcctl.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_fhsvcctl.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_fltlib.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_fltlib.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_fontsub.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_fontsub.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_framedyd.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_framedyd.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_framedyn.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_framedyn.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_fwpuclnt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_fwpuclnt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_fxsutility.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_fxsutility.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_gdi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_gdi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_gdiplus.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_gdiplus.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_glmf32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_glmf32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_glu32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_glu32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_gpedit.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_gpedit.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_hbaapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_hbaapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_hid.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_hid.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_hlink.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_hlink.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_hrtfapo.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_hrtfapo.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_httpapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_httpapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_iashlpr.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_iashlpr.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_icm32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_icm32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_icmui.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_icmui.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_icuin.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_icuin.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_icuuc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_icuuc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_imagehlp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_imagehlp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_imgutil.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_imgutil.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_imm32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_imm32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_infocardapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_infocardapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_inkobjcore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_inkobjcore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_inseng.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_inseng.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_iphlpapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_iphlpapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_iprop.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_iprop.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_irprops.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_irprops.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_iscsidsc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_iscsidsc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_jsrt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_jsrt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_kernel32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_kernel32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ksproxy.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ksproxy.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ksuser.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ksuser.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ktmw32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ktmw32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_loadperf.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_loadperf.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_lz32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_lz32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_magnification.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_magnification.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mapi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mapi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mciole32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mciole32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mdmlocalmanagement.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mdmlocalmanagement.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mdmregistration.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mdmregistration.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mf.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mf.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mfcore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mfcore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mfplat.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mfplat.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mfplay.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mfplay.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mfreadwrite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mfreadwrite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mfsensorgroup.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mfsensorgroup.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mfsrcsnk.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mfsrcsnk.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mgmtapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mgmtapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-com-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-com-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-com-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-com-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-com-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-com-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-com-midlproxystub-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-com-midlproxystub-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-comm-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-comm-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-comm-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-comm-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-console-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-console-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-console-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-console-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-datetime-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-datetime-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-datetime-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-datetime-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-datetime-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-datetime-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-debug-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-debug-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-debug-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-debug-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-debug-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-debug-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-delayload-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-delayload-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-delayload-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-delayload-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-errorhandling-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-errorhandling-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-errorhandling-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-errorhandling-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-errorhandling-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-errorhandling-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-errorhandling-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-errorhandling-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-fibers-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-fibers-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-fibers-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-fibers-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l2-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l2-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l2-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-file-l2-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-firmware-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-firmware-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-handle-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-handle-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-heap-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-heap-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-heap-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-heap-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-interlocked-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-interlocked-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-interlocked-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-interlocked-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-io-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-io-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-io-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-io-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-job-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-job-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-libraryloader-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-libraryloader-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-libraryloader-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-libraryloader-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-libraryloader-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-libraryloader-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-libraryloader-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-libraryloader-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-localization-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-localization-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-localization-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-localization-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-localization-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-localization-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-localization-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-localization-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-memory-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-memory-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-memory-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-memory-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-memory-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-memory-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-memory-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-memory-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-memory-l1-1-4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-memory-l1-1-4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-memory-l1-1-5.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-memory-l1-1-5.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-namedpipe-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-namedpipe-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-namedpipe-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-namedpipe-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-namedpipe-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-namedpipe-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-namespace-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-namespace-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-path-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-path-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processenvironment-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processenvironment-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processenvironment-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processenvironment-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processsnapshot-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processsnapshot-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processthreads-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processthreads-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processthreads-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processthreads-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processthreads-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processthreads-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processthreads-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processthreads-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processtopology-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-processtopology-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-profile-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-profile-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-psapi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-psapi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-quirks-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-quirks-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-quirks-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-quirks-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-realtime-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-realtime-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-realtime-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-realtime-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-realtime-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-realtime-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-registry-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-registry-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-registry-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-registry-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-registry-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-registry-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-rtlsupport-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-rtlsupport-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-rtlsupport-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-rtlsupport-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-shutdown-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-shutdown-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-shutdown-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-shutdown-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-string-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-string-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-string-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-string-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-string-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-string-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-synch-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-synch-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-synch-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-synch-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-synch-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-synch-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-sysinfo-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-sysinfo-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-sysinfo-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-sysinfo-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-sysinfo-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-sysinfo-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-sysinfo-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-sysinfo-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-sysinfo-l1-2-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-sysinfo-l1-2-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-systemtopology-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-systemtopology-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-systemtopology-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-systemtopology-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-threadpool-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-threadpool-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-timezone-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-timezone-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-util-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-util-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-util-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-util-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-version-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-version-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-version-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-version-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-winrt-error-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-winrt-error-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-winrt-error-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-winrt-error-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-winrt-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-winrt-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-winrt-string-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-winrt-string-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-winrt-string-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-winrt-string-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-wow64-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-wow64-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-wow64-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-wow64-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-wow64-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-wow64-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-xstate-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-xstate-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-xstate-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-xstate-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-xstate-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-xstate-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-xstate-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-core-xstate-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-devices-config-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-devices-config-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-devices-config-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-devices-config-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-devices-swdevice-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-devices-swdevice-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-devices-swdevice-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-devices-swdevice-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-eventing-classicprovider-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-eventing-classicprovider-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-eventing-consumer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-eventing-consumer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-eventing-consumer-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-eventing-consumer-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-eventing-controller-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-eventing-controller-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-eventing-provider-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-eventing-provider-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-power-base-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-power-base-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-power-setting-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-power-setting-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-appcontainer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-appcontainer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-base-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-base-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-base-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-base-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-base-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-base-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-base-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-base-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-credentials-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-credentials-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-lsalookup-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-lsalookup-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-lsalookup-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-lsalookup-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-sddl-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-security-sddl-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-service-core-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-service-core-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-service-core-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-service-core-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-service-core-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-service-core-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-service-management-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-service-management-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-service-management-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-service-management-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-service-winsvc-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-api-ms-win-service-winsvc-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-authz.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-authz.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-bcrypt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-bcrypt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-cabinet.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-cabinet.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-crypt32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-crypt32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-cryptbase.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-cryptbase.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-cryptnet.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-cryptnet.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-dfscli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-dfscli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-dnsapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-dnsapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-dsparse.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-dsparse.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-dsrole.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-dsrole.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-iphlpapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-iphlpapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-logoncli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-logoncli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-mpr.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-mpr.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-mswsock.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-mswsock.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-ncrypt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-ncrypt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-netutils.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-netutils.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-oleaut32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-oleaut32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-rpcrt4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-rpcrt4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-samcli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-samcli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-schedcli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-schedcli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-srvcli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-srvcli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-sspicli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-sspicli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-userenv.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-userenv.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-websocket.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-websocket.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-winhttp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-winhttp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-wkscli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-wkscli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-wldap32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-wldap32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore-ws2_32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore-ws2_32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-advapi32-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-advapi32-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-advapi32-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-advapi32-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-normaliz-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-normaliz-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-ole32-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-ole32-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-shell32-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-shell32-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-shlwapi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-shlwapi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-shlwapi-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-shlwapi-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-user32-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-user32-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-version-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore_downlevel-api-ms-win-downlevel-version-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mincore_downlevel.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mincore_downlevel.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mmdevapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mmdevapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mpr.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mpr.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mprapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mprapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mprsnap.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mprsnap.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mqrt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mqrt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mrmsupport.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mrmsupport.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_msacm32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_msacm32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_msajapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_msajapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mscms.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mscms.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_msctfmonitor.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_msctfmonitor.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_msdelta.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_msdelta.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_msdmo.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_msdmo.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_msdrm.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_msdrm.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_msi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_msi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_msimg32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_msimg32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mspatcha.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mspatcha.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mspatchc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mspatchc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_msports.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_msports.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_msrating.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_msrating.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mstask.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mstask.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_msv1_0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_msv1_0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_msvfw32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_msvfw32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mswsock.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mswsock.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mtx.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mtx.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_mtxdm.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_mtxdm.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-api-ms-win-net-isolation-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-api-ms-win-net-isolation-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-clfsw32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-clusapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-cryptxml.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-dbgeng.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-dbghelp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-dnsperf.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-esent.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-faultrep.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-framedynos.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-fwpuclnt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-hbaapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-httpapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-iscsidsc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-ktmw32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-loadperf.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-mprapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-netsh.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-ntdsapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-ntlanman.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-pdh.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-resutils.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-snmpapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-tbs.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-traffic.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-virtdisk.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-vssapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-webservices.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-wer.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-wevtapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-wintrust.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-wnvapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv-wsmsvc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nanosrv.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ncrypt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ncrypt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_nddeapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_nddeapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ndfapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ndfapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_netapi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_netapi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_netsh.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_netsh.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_newdev.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_newdev.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ninput.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ninput.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_normaliz.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_normaliz.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ntdll.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ntdll.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ntdsa.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ntdsa.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ntdsapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ntdsapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ntdsatq.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ntdsatq.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ntdsetup.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ntdsetup.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ntfrsapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ntfrsapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ntlanman.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ntlanman.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ntmarta.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ntmarta.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ntquery.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ntquery.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ntvdm.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_odbc32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_odbc32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_odbcbcp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_odbcbcp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_oemlicense.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_oemlicense.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ole32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ole32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_oleacc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_oleacc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_oleaut32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_oleaut32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_olecli32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_olecli32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_oledlg.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_oledlg.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_olepro32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_olesvr32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_olesvr32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ondemandconnroutehelper.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ondemandconnroutehelper.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-atoms-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-atoms-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-calendar-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-calendar-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-com-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-com-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-com-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-com-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-com-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-com-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-com-midlproxystub-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-com-midlproxystub-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-comm-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-comm-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-comm-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-comm-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-console-ansi-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-console-ansi-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-console-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-console-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-console-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-console-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-console-l3-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-console-l3-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-datetime-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-datetime-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-datetime-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-datetime-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-datetime-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-datetime-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-debug-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-debug-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-debug-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-debug-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-debug-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-debug-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-delayload-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-delayload-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-delayload-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-delayload-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-enclave-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-enclave-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-enclave-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-enclave-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-errorhandling-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-errorhandling-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-errorhandling-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-errorhandling-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-errorhandling-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-errorhandling-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-errorhandling-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-errorhandling-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-featurestaging-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-featurestaging-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-featurestaging-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-featurestaging-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-fibers-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-fibers-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-fibers-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-fibers-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-fibers-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-fibers-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-fibers-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-fibers-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-ansi-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-ansi-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l2-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l2-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l2-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-file-l2-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-firmware-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-firmware-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-handle-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-handle-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-heap-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-heap-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-heap-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-heap-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-heap-obsolete-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-heap-obsolete-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-interlocked-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-interlocked-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-interlocked-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-interlocked-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-io-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-io-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-io-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-io-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-job-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-job-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-job-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-job-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-job-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-job-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-5.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-5.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-6.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-kernel32-legacy-l1-1-6.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-largeinteger-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-largeinteger-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-libraryloader-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-libraryloader-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-libraryloader-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-libraryloader-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-libraryloader-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-libraryloader-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-libraryloader-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-libraryloader-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-localization-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-localization-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-localization-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-localization-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-localization-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-localization-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-localization-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-localization-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-localization-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-localization-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-localization-obsolete-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-localization-obsolete-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-memory-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-memory-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-memory-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-memory-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-memory-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-memory-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-memory-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-memory-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-memory-l1-1-4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-memory-l1-1-4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-memory-l1-1-5.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-memory-l1-1-5.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namedpipe-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namedpipe-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namedpipe-ansi-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namedpipe-ansi-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namedpipe-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namedpipe-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namedpipe-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namedpipe-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namedpipe-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namedpipe-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namespace-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namespace-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namespace-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-namespace-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-normalization-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-normalization-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-path-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-path-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-perfcounters-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-perfcounters-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-privateprofile-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-privateprofile-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-privateprofile-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-privateprofile-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processenvironment-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processenvironment-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processenvironment-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processenvironment-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processenvironment-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processenvironment-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processsnapshot-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processsnapshot-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processthreads-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processthreads-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processthreads-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processthreads-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processthreads-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processthreads-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processthreads-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processthreads-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processtopology-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processtopology-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processtopology-obsolete-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processtopology-obsolete-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processtopology-obsolete-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-processtopology-obsolete-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-profile-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-profile-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-psapi-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-psapi-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-psapi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-psapi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-quirks-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-quirks-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-quirks-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-quirks-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-realtime-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-realtime-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-realtime-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-realtime-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-realtime-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-realtime-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-registry-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-registry-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-registry-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-registry-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-registry-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-registry-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-registry-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-registry-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-rtlsupport-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-rtlsupport-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-rtlsupport-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-rtlsupport-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-shutdown-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-shutdown-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-shutdown-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-shutdown-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-shutdown-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-shutdown-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sidebyside-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sidebyside-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sidebyside-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sidebyside-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-string-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-string-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-string-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-string-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-string-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-string-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-string-obsolete-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-string-obsolete-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-string-obsolete-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-string-obsolete-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-stringansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-stringansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-synch-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-synch-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-synch-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-synch-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-synch-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-synch-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-synch-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-synch-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sysinfo-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sysinfo-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sysinfo-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sysinfo-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sysinfo-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sysinfo-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sysinfo-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sysinfo-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sysinfo-l1-2-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-sysinfo-l1-2-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-systemtopology-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-systemtopology-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-systemtopology-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-systemtopology-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-threadpool-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-threadpool-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-threadpool-legacy-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-threadpool-legacy-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-timezone-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-timezone-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-toolhelp-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-toolhelp-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-toolhelp-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-toolhelp-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-url-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-url-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-util-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-util-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-util-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-util-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-version-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-version-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-version-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-version-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-versionansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-versionansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-versionansi-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-versionansi-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-windowsceip-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-windowsceip-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-windowserrorreporting-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-windowserrorreporting-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-windowserrorreporting-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-windowserrorreporting-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-windowserrorreporting-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-windowserrorreporting-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-error-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-error-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-error-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-error-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-registration-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-registration-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-robuffer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-robuffer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-roparameterizediid-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-roparameterizediid-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-string-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-string-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-string-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-winrt-string-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-wow64-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-wow64-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-wow64-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-wow64-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-wow64-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-wow64-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-xstate-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-core-xstate-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-devices-config-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-devices-config-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-devices-config-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-devices-config-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-devices-swdevice-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-devices-swdevice-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-devices-swdevice-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-devices-swdevice-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-classicprovider-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-classicprovider-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-consumer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-consumer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-consumer-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-consumer-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-controller-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-controller-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-legacy-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-legacy-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-obsolete-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-obsolete-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-provider-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-provider-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-tdh-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-eventing-tdh-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-gaming-deviceinformation-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-gaming-deviceinformation-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-mm-time-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-mm-time-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-oobe-notification-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-oobe-notification-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-perf-legacy-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-perf-legacy-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-power-base-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-power-base-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-power-limitsmanagement-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-power-limitsmanagement-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-power-setting-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-power-setting-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-ro-typeresolution-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-ro-typeresolution-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-appcontainer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-appcontainer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-base-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-base-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-base-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-base-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-base-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-base-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-base-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-base-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-base-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-base-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-credentials-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-credentials-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-cryptoapi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-cryptoapi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-isolatedcontainer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-isolatedcontainer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-lsalookup-ansi-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-lsalookup-ansi-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-lsalookup-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-lsalookup-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-lsalookup-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-lsalookup-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-provider-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-provider-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-provider-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-provider-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-sddl-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-sddl-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-sddl-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-sddl-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-systemfunctions-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-security-systemfunctions-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-core-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-core-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-core-ansi-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-core-ansi-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-core-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-core-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-core-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-core-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-core-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-core-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-management-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-management-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-management-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-management-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-winsvc-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-service-winsvc-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-path-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-path-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-registry-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-registry-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-registry-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-registry-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-scaling-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-scaling-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-scaling-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-scaling-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-scaling-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-scaling-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-stream-winrt-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-stream-winrt-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-sysinfo-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-sysinfo-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-unicodeansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shcore-unicodeansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shell-shdirectory-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-api-ms-win-shell-shdirectory-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-authz.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-authz.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-bcrypt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-bcrypt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-cabinet.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-cabinet.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-crypt32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-crypt32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-cryptbase.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-cryptbase.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-cryptnet.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-cryptnet.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-dfscli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-dfscli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-dnsapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-dnsapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-dsparse.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-dsparse.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-dsrole.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-dsrole.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-fltlib.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-fltlib.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-iphlpapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-iphlpapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-logoncli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-logoncli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-mpr.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-mpr.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-mswsock.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-mswsock.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-ncrypt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-ncrypt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-netutils.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-netutils.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-ntdll.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-ntdll.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-oleaut32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-oleaut32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-powrprof.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-powrprof.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-profapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-profapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-rpcrt4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-rpcrt4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-samcli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-samcli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-schedcli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-schedcli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-srvcli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-srvcli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-sspicli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-sspicli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-tokenbinding.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-tokenbinding.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-userenv.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-userenv.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-websocket.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-websocket.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-winhttp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-winhttp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-wkscli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-wkscli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-wldap32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-wldap32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-ws2_32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-ws2_32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore-xmllite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore-xmllite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-advapi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-advapi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-apphelp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-apphelp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-comctl32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-comctl32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-comdlg32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-comdlg32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-d3d10.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-d3d10.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-d3d9.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-d3d9.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-d3dx10_47.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-d3dx10_47.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-difxapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-difxapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-gdi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-gdi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-input.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-input.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-kernel32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-kernel32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-msi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-msi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-newdev.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-newdev.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-ole32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-ole32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-oleacc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-oleacc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-oleaut32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-oleaut32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-oledlg.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-oledlg.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-pdh.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-pdh.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-psapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-psapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-resutils.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-resutils.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-rstrtmgr.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-rstrtmgr.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-secur32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-secur32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-setupapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-setupapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-shell32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-shell32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-shlwapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-shlwapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-tdh.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-tdh.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-twinapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-twinapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-user32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-user32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-uxtheme.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-uxtheme.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-version.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-version.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-winmm.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-winmm.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-winspool.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-winspool.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-wtsapi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-wtsapi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel-xinput1_4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel-xinput1_4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecore_downlevel.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecore_downlevel.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-appmodel-runtime-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-appmodel-runtime-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-appmodel-runtime-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-appmodel-runtime-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-appmodel-runtime-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-appmodel-runtime-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-atoms-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-atoms-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-calendar-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-calendar-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-com-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-com-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-com-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-com-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-com-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-com-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-com-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-com-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-com-midlproxystub-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-com-midlproxystub-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-comm-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-comm-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-comm-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-comm-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-console-ansi-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-console-ansi-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-console-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-console-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-console-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-console-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-console-l3-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-console-l3-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-datetime-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-datetime-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-datetime-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-datetime-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-datetime-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-datetime-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-debug-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-debug-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-debug-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-debug-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-debug-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-debug-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-delayload-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-delayload-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-delayload-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-delayload-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-enclave-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-enclave-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-enclave-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-enclave-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-errorhandling-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-errorhandling-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-errorhandling-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-errorhandling-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-errorhandling-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-errorhandling-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-errorhandling-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-errorhandling-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-featurestaging-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-featurestaging-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-featurestaging-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-featurestaging-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-fibers-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-fibers-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-fibers-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-fibers-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-fibers-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-fibers-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-fibers-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-fibers-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-ansi-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-ansi-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l2-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l2-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l2-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-file-l2-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-firmware-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-firmware-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-handle-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-handle-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-heap-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-heap-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-heap-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-heap-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-heap-obsolete-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-heap-obsolete-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-interlocked-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-interlocked-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-interlocked-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-interlocked-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-io-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-io-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-io-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-io-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-job-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-job-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-job-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-job-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-job-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-job-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-5.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-5.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-6.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-kernel32-legacy-l1-1-6.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-largeinteger-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-largeinteger-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-libraryloader-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-libraryloader-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-libraryloader-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-libraryloader-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-libraryloader-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-libraryloader-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-libraryloader-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-libraryloader-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-localization-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-localization-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-localization-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-localization-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-localization-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-localization-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-localization-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-localization-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-localization-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-localization-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-localization-obsolete-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-localization-obsolete-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-memory-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-memory-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-memory-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-memory-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-memory-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-memory-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-memory-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-memory-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-memory-l1-1-4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-memory-l1-1-4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-memory-l1-1-5.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-memory-l1-1-5.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namedpipe-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namedpipe-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namedpipe-ansi-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namedpipe-ansi-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namedpipe-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namedpipe-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namedpipe-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namedpipe-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namedpipe-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namedpipe-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namespace-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namespace-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namespace-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-namespace-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-normalization-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-normalization-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-path-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-path-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-perfcounters-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-perfcounters-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-privateprofile-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-privateprofile-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-privateprofile-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-privateprofile-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processenvironment-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processenvironment-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processenvironment-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processenvironment-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processenvironment-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processenvironment-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processsnapshot-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processsnapshot-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processthreads-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processthreads-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processthreads-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processthreads-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processthreads-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processthreads-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processthreads-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processthreads-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processtopology-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processtopology-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processtopology-obsolete-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processtopology-obsolete-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processtopology-obsolete-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-processtopology-obsolete-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-profile-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-profile-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-psapi-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-psapi-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-psapi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-psapi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-psm-appnotify-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-psm-appnotify-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-quirks-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-quirks-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-quirks-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-quirks-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-realtime-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-realtime-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-realtime-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-realtime-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-realtime-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-realtime-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-registry-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-registry-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-registry-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-registry-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-registry-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-registry-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-registry-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-registry-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-rtlsupport-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-rtlsupport-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-rtlsupport-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-rtlsupport-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-shutdown-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-shutdown-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-shutdown-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-shutdown-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-shutdown-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-shutdown-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sidebyside-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sidebyside-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sidebyside-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sidebyside-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-slapi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-slapi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-string-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-string-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-string-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-string-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-string-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-string-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-string-obsolete-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-string-obsolete-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-string-obsolete-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-string-obsolete-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-stringansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-stringansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-synch-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-synch-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-synch-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-synch-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-synch-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-synch-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-synch-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-synch-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sysinfo-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sysinfo-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sysinfo-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sysinfo-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sysinfo-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sysinfo-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sysinfo-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sysinfo-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sysinfo-l1-2-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-sysinfo-l1-2-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-systemtopology-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-systemtopology-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-systemtopology-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-systemtopology-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-threadpool-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-threadpool-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-threadpool-legacy-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-threadpool-legacy-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-timezone-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-timezone-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-toolhelp-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-toolhelp-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-toolhelp-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-toolhelp-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-url-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-url-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-util-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-util-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-util-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-util-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-version-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-version-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-version-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-version-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-versionansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-versionansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-versionansi-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-versionansi-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-windowsceip-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-windowsceip-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-windowserrorreporting-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-windowserrorreporting-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-windowserrorreporting-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-windowserrorreporting-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-windowserrorreporting-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-windowserrorreporting-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-error-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-error-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-error-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-error-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-registration-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-registration-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-robuffer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-robuffer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-roparameterizediid-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-roparameterizediid-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-string-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-string-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-string-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-winrt-string-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-wow64-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-wow64-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-wow64-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-wow64-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-wow64-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-wow64-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-xstate-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-core-xstate-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-devices-config-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-devices-config-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-devices-config-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-devices-config-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-devices-swdevice-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-devices-swdevice-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-devices-swdevice-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-devices-swdevice-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-dx-d3dkmt-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-dx-d3dkmt-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-dx-d3dkmt-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-dx-d3dkmt-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-dx-d3dkmt-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-dx-d3dkmt-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-dx-d3dkmt-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-dx-d3dkmt-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-dx-d3dkmt-l1-1-4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-dx-d3dkmt-l1-1-4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-classicprovider-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-classicprovider-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-consumer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-consumer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-consumer-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-consumer-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-controller-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-controller-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-legacy-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-legacy-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-obsolete-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-obsolete-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-provider-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-provider-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-tdh-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-eventing-tdh-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-deviceinformation-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-deviceinformation-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-expandedresources-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-expandedresources-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-gamemonitor-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-gamemonitor-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-gamemonitor-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-gamemonitor-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-tcui-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-tcui-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-tcui-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-tcui-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-tcui-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-tcui-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-tcui-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-tcui-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-tcui-l1-1-4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-gaming-tcui-l1-1-4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-mm-misc-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-mm-misc-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-mm-misc-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-mm-misc-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-mm-mme-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-mm-mme-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-mm-playsound-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-mm-playsound-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-mm-time-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-mm-time-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-ntuser-sysparams-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-ntuser-sysparams-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-oobe-notification-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-oobe-notification-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-perf-legacy-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-perf-legacy-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-power-base-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-power-base-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-power-limitsmanagement-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-power-limitsmanagement-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-power-setting-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-power-setting-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-ro-typeresolution-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-ro-typeresolution-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-appcontainer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-appcontainer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-base-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-base-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-base-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-base-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-base-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-base-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-base-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-base-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-base-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-base-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-credentials-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-credentials-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-cryptoapi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-cryptoapi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-isolatedcontainer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-isolatedcontainer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-lsalookup-ansi-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-lsalookup-ansi-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-lsalookup-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-lsalookup-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-lsalookup-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-lsalookup-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-provider-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-provider-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-provider-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-provider-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-sddl-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-sddl-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-sddl-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-sddl-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-systemfunctions-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-security-systemfunctions-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-core-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-core-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-core-ansi-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-core-ansi-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-core-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-core-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-core-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-core-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-core-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-core-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-management-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-management-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-management-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-management-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-winsvc-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-service-winsvc-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-path-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-path-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-registry-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-registry-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-registry-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-registry-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-scaling-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-scaling-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-scaling-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-scaling-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-scaling-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-scaling-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-stream-winrt-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-stream-winrt-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-sysinfo-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-sysinfo-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-unicodeansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shcore-unicodeansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shell-namespace-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shell-namespace-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shell-shdirectory-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-api-ms-win-shell-shdirectory-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-authz.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-authz.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-bcrypt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-bcrypt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-cabinet.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-cabinet.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-chakra.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-chakra.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-coremessaging.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-coremessaging.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-crypt32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-crypt32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-cryptbase.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-cryptbase.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-cryptnet.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-cryptnet.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-d2d1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-d2d1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-d3d11.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-d3d11.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-d3d12.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-d3d12.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-d3dcompiler_47.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-d3dcompiler_47.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-deviceaccess.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-deviceaccess.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-dfscli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-dfscli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-dhcpcsvc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-dhcpcsvc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-dhcpcsvc6.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-dhcpcsvc6.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-dnsapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-dnsapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-dsparse.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-dsparse.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-dsrole.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-dsrole.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-dwrite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-dwrite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-dxgi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-dxgi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-esent.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-esent.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-core-iuri-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-core-iuri-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-gaming-xinput-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-gaming-xinput-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-networking-wlanapi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-networking-wlanapi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-shell32-shellfolders-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-shell32-shellfolders-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-shell32-shellfolders-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-shell32-shellfolders-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-uiacore-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-uiacore-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-uiacore-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-uiacore-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-uiacore-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-uiacore-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-uiacore-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-ext-ms-win-uiacore-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-fltlib.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-fltlib.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-hid.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-hid.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-hrtfapo.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-hrtfapo.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-inkobjcore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-inkobjcore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-iphlpapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-iphlpapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-logoncli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-logoncli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-mf.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-mf.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-mfplat.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-mfplat.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-mfreadwrite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-mfreadwrite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-mfsensorgroup.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-mfsensorgroup.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-mmdevapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-mmdevapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-mpr.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-mpr.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-msajapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-msajapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-mswsock.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-mswsock.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-ncrypt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-ncrypt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-netutils.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-netutils.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-ntdll.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-ntdll.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-oleaut32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-oleaut32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-powrprof.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-powrprof.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-profapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-profapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-propsys.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-propsys.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-rometadata.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-rometadata.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-rpcrt4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-rpcrt4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-samcli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-samcli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-schedcli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-schedcli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-srvcli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-srvcli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-sspicli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-sspicli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-tokenbinding.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-tokenbinding.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-uiautomationcore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-uiautomationcore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-urlmon.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-urlmon.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-userenv.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-userenv.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-webservices.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-webservices.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-websocket.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-websocket.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-windows.data.pdf.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-windows.data.pdf.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-windows.networking.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-windows.networking.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-windowscodecs.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-windowscodecs.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-winhttp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-winhttp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-wintrust.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-wintrust.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-wkscli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-wkscli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-wlanapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-wlanapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-wldap32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-wldap32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-wpprecorderum.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-wpprecorderum.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-ws2_32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-ws2_32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-xaudio2_9.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-xaudio2_9.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap-xmllite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap-xmllite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-advapi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-advapi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-apphelp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-apphelp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-comctl32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-comctl32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-comdlg32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-comdlg32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-d3d10.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-d3d10.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-d3d9.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-d3d9.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-d3dx10_47.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-d3dx10_47.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-difxapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-difxapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-gdi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-gdi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-input.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-input.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-kernel32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-kernel32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-msi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-msi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-newdev.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-newdev.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-ole32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-ole32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-oleacc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-oleacc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-oleaut32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-oleaut32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-oledlg.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-oledlg.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-pdh.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-pdh.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-psapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-psapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-resutils.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-resutils.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-rstrtmgr.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-rstrtmgr.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-secur32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-secur32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-setupapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-setupapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-shell32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-shell32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-shlwapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-shlwapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-tdh.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-tdh.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-twinapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-twinapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-user32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-user32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-uxtheme.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-uxtheme.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-version.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-version.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-winmm.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-winmm.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-winspool.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-winspool.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-wtsapi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-wtsapi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-xinput1_4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel-xinput1_4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_onecoreuap_downlevel.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_opengl32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_opengl32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_opmxbox.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_p2p.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_p2p.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_p2pgraph.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_p2pgraph.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_pathcch.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_pathcch.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_pdh.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_pdh.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_peerdist.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_peerdist.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_powrprof.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_powrprof.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_prntvpt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_prntvpt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_propsys.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_propsys.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_psapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_psapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_quartz.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_quartz.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_query.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_query.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_qwave.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_qwave.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_rasapi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_rasapi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_rasdlg.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_rasdlg.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_resutils.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_resutils.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_rometadata.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_rometadata.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_rpcexts.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_rpcexts.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_rpcns4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_rpcns4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_rpcproxy.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_rpcproxy.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_rpcrt4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_rpcrt4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_rstrtmgr.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_rstrtmgr.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_rtm.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_rtm.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_rtutils.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_rtutils.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_rtworkq.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_rtworkq.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-error-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-error-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-error-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-error-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-registration-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-registration-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-robuffer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-robuffer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-roparameterizediid-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-roparameterizediid-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-string-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-core-winrt-string-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-ro-typeresolution-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_runtimeobject-api-ms-win-ro-typeresolution-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_runtimeobject.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_runtimeobject.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_samlib.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_samlib.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_samsrv.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_samsrv.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_sas.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_sas.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_scarddlg.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_scarddlg.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_scecli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_scecli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_scesrv.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_scesrv.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_schannel.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_schannel.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_secur32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_secur32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_security.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_security.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_sens.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_sens.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_sensapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_sensapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_sensorsutils.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_sensorsutils.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_setupapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_setupapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_sfc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_sfc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_shcore-api-ms-win-core-featurestaging-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_shcore-api-ms-win-core-featurestaging-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_shcore-api-ms-win-core-featurestaging-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_shcore-api-ms-win-core-featurestaging-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_shcore-api-ms-win-shcore-scaling-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_shcore-api-ms-win-shcore-scaling-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_shcore-api-ms-win-shcore-scaling-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_shcore-api-ms-win-shcore-scaling-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_shcore-api-ms-win-shcore-scaling-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_shcore-api-ms-win-shcore-scaling-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_shcore-api-ms-win-shcore-stream-winrt-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_shcore-api-ms-win-shcore-stream-winrt-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_shcore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_shcore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_shdocvw.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_shdocvw.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_shell32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_shell32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_shfolder.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_shfolder.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_shlwapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_shlwapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_slc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_slc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_slcext.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_slcext.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_slwga.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_slwga.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_snmpapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_snmpapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_spoolss.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_spoolss.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_sporder.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_sporder.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_srpapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_srpapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ssdpapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ssdpapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_sti.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_sti.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_swdevice.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_swdevice.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_synchronization.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_synchronization.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_t2embed.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_t2embed.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_tapi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_tapi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_tbs.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_tbs.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_tdh.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_tdh.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_thunk32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_tokenbinding.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_tokenbinding.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_traffic.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_traffic.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_tsec.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_tsec.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_twain_32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_txfw32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_txfw32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_ualapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ualapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_uiautomationcore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_uiautomationcore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_umpdddi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_umpdddi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_urlmon.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_urlmon.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_user32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_user32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_userenv.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_userenv.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_usp10.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_usp10.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_uxtheme.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_uxtheme.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_vdmdbg.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_version.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_version.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_vertdll.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_vfw32-avicap32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_vfw32-avicap32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_vfw32-avifil32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_vfw32-avifil32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_vfw32-msvfw32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_vfw32-msvfw32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_vfw32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_vfw32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_virtdisk.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_virtdisk.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_vssapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_vssapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wcmapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wcmapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wdsbp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wdsbp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wdsclientapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wdsclientapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wdsmc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wdsmc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wdspxe.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wdspxe.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wdstptc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wdstptc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_webservices.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_webservices.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_websocket.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_websocket.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wecapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wecapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wer.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wer.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wevtapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wevtapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wiaservc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wiaservc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_winbio.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_winbio.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windows.data.pdf.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windows.data.pdf.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windows.networking.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windows.networking.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windows.ui.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windows.ui.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-appmodel-runtime-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-appmodel-runtime-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-appmodel-runtime-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-appmodel-runtime-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-com-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-com-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-com-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-com-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-com-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-com-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-com-midlproxystub-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-com-midlproxystub-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-comm-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-comm-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-comm-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-comm-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-console-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-console-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-console-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-console-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-datetime-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-datetime-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-datetime-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-datetime-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-debug-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-debug-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-delayload-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-delayload-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-delayload-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-delayload-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-enclave-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-enclave-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-errorhandling-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-errorhandling-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-errorhandling-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-errorhandling-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-errorhandling-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-errorhandling-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-featurestaging-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-featurestaging-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-featurestaging-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-featurestaging-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-fibers-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-fibers-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-fibers-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-fibers-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-fibers-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-fibers-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-fibers-l2-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-fibers-l2-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-ansi-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-ansi-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-l2-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-file-l2-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-handle-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-handle-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-heap-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-heap-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-heap-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-heap-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-heap-obsolete-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-heap-obsolete-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-interlocked-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-interlocked-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-interlocked-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-interlocked-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-io-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-io-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-io-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-io-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-kernel32-legacy-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-kernel32-legacy-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-kernel32-legacy-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-kernel32-legacy-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-largeinteger-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-largeinteger-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-libraryloader-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-libraryloader-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-libraryloader-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-libraryloader-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-localization-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-localization-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-localization-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-localization-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-localization-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-localization-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-localization-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-localization-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-localization-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-localization-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-localization-obsolete-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-localization-obsolete-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-memory-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-memory-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-memory-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-memory-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-memory-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-memory-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-memory-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-memory-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namedpipe-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namedpipe-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namedpipe-ansi-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namedpipe-ansi-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namedpipe-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namedpipe-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namedpipe-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namedpipe-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namedpipe-l1-2-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namedpipe-l1-2-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namespace-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namespace-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namespace-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-namespace-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-normalization-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-normalization-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-path-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-path-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-processenvironment-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-processenvironment-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-processthreads-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-processthreads-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-processthreads-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-processthreads-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-processthreads-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-processthreads-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-processthreads-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-processthreads-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-processtopology-obsolete-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-processtopology-obsolete-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-profile-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-profile-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-psapi-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-psapi-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-psapi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-psapi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-psm-appnotify-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-psm-appnotify-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-realtime-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-realtime-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-realtime-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-realtime-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-realtime-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-realtime-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-rtlsupport-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-rtlsupport-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-rtlsupport-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-slapi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-slapi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-string-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-string-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-synch-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-synch-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-synch-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-synch-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-synch-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-synch-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-synch-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-synch-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-sysinfo-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-sysinfo-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-sysinfo-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-sysinfo-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-sysinfo-l1-2-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-sysinfo-l1-2-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-threadpool-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-threadpool-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-timezone-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-timezone-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-url-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-url-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-util-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-util-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-version-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-version-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-versionansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-versionansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-windowsceip-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-windowsceip-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-windowserrorreporting-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-windowserrorreporting-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-windowserrorreporting-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-windowserrorreporting-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-windowserrorreporting-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-windowserrorreporting-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-error-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-error-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-error-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-error-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-registration-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-registration-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-robuffer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-robuffer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-roparameterizediid-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-roparameterizediid-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-string-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-winrt-string-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-wow64-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-wow64-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-xstate-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-core-xstate-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-eventing-classicprovider-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-eventing-classicprovider-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-eventing-consumer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-eventing-consumer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-eventing-controller-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-eventing-controller-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-eventing-legacy-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-eventing-legacy-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-eventing-provider-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-eventing-provider-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-deviceinformation-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-deviceinformation-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-expandedresources-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-expandedresources-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-gamemonitor-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-gamemonitor-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-gamemonitor-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-gamemonitor-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-tcui-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-tcui-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-tcui-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-tcui-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-tcui-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-tcui-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-tcui-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-tcui-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-tcui-l1-1-4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-gaming-tcui-l1-1-4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-ro-typeresolution-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-ro-typeresolution-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-base-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-base-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-base-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-base-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-base-l1-2-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-base-l1-2-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-cryptoapi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-cryptoapi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-isolatedcontainer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-isolatedcontainer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-lsalookup-ansi-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-lsalookup-ansi-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-lsalookup-l2-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-lsalookup-l2-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-provider-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-provider-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-provider-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-provider-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-sddl-ansi-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-sddl-ansi-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-sddl-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-security-sddl-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-shcore-stream-winrt-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-api-ms-win-shcore-stream-winrt-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-bcrypt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-bcrypt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-cabinet.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-cabinet.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-chakra.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-chakra.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-coremessaging.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-coremessaging.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-crypt32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-crypt32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-d2d1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-d2d1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-d3d11.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-d3d11.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-d3d12.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-d3d12.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-d3dcompiler_47.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-d3dcompiler_47.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-deviceaccess.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-deviceaccess.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-dhcpcsvc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-dhcpcsvc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-dhcpcsvc6.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-dhcpcsvc6.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-dwrite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-dwrite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-dxgi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-dxgi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-esent.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-esent.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-ext-ms-win-core-iuri-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-ext-ms-win-core-iuri-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-ext-ms-win-gaming-xinput-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-ext-ms-win-gaming-xinput-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-ext-ms-win-uiacore-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-ext-ms-win-uiacore-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-ext-ms-win-uiacore-l1-1-1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-ext-ms-win-uiacore-l1-1-1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-ext-ms-win-uiacore-l1-1-2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-ext-ms-win-uiacore-l1-1-2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-ext-ms-win-uiacore-l1-1-3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-ext-ms-win-uiacore-l1-1-3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-hrtfapo.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-hrtfapo.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-inkobjcore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-inkobjcore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-iphlpapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-iphlpapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-mf.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-mf.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-mfplat.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-mfplat.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-mfreadwrite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-mfreadwrite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-mfsensorgroup.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-mfsensorgroup.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-mmdevapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-mmdevapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-msajapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-msajapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-mswsock.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-mswsock.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-ncrypt.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-ncrypt.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-ntdll.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-ntdll.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-oleaut32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-oleaut32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-propsys.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-propsys.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-rometadata.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-rometadata.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-rpcrt4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-rpcrt4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-sspicli.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-sspicli.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-uiautomationcore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-uiautomationcore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-urlmon.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-urlmon.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-webservices.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-webservices.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-windows.data.pdf.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-windows.data.pdf.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-windows.networking.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-windows.networking.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-windowscodecs.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-windowscodecs.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-ws2_32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-ws2_32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-xaudio2_9.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-xaudio2_9.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp-xmllite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp-xmllite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-advapi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-advapi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-api-ms-win-core-localization-l1-2-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-api-ms-win-core-localization-l1-2-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-api-ms-win-core-winrt-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-api-ms-win-core-winrt-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-api-ms-win-core-winrt-robuffer-l1-1-0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-api-ms-win-core-winrt-robuffer-l1-1-0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-cabinet.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-cabinet.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-d2d1.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-d2d1.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-d3d11.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-d3d11.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-d3dcompiler_47.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-d3dcompiler_47.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-deviceaccess.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-deviceaccess.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-dhcpcsvc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-dhcpcsvc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-dhcpcsvc6.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-dhcpcsvc6.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-dwrite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-dwrite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-dxgi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-dxgi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-esent.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-esent.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-kernel32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-kernel32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-mf.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-mf.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-mfplat.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-mfplat.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-mfreadwrite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-mfreadwrite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-mmdevapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-mmdevapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-msajapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-msajapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-mscoree.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-mscoree.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-mswsock.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-mswsock.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-ole32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-ole32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-oleaut32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-oleaut32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-propsys.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-propsys.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-rpcrt4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-rpcrt4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-uiautomationcore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-uiautomationcore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-urlmon.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-urlmon.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-webservices.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-webservices.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-windows.data.pdf.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-windows.data.pdf.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-windows.networking.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-windows.networking.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-windowscodecs.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-windowscodecs.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-ws2_32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-ws2_32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-xaudio2_8.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-xaudio2_8.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-xinput1_4.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-xinput1_4.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-xmllite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel-xmllite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowsapp_downlevel.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowsapp_downlevel.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_windowscodecs.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_windowscodecs.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_winfax.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_winfax.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_winhttp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_winhttp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wininet.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wininet.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_winmm.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_winmm.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_winscard.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_winscard.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_winspool.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_winspool.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_winsqlite3.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_winsqlite3.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_winsta.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_winsta.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wintrust.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wintrust.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_winusb.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_winusb.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wlanapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wlanapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wlanui.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wlanui.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wldap32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wldap32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wmip.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wmip.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wmvcore.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wmvcore.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wnvapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wofutil.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wofutil.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wow32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ws2_32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_ws2_32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wscapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wscapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wsclient.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wsclient.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wsdapi.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wsdapi.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wsmsvc.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wsmsvc.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wsnmp32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wsnmp32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wsock32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wsock32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_wtsapi32.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_wtsapi32.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_xaudio2.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_xaudio2.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_xaudio2_8.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_xaudio2_8.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_xinput.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_xinput.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_xinput9_1_0.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_xinput9_1_0.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_xinputuap.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_xinputuap.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_xmllite.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_xmllite.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_xolehlp.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_xolehlp.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_xpsdocumenttargetprint.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_xpsdocumenttargetprint.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +lib/libwinapi_xpsprint.a vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +lib/libwinapi_xpsprint.a vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +libbuiltins.a builtins/Makefile.in /^libbuiltins.a: $(MKBUILTINS) $(OFILES) builtins.o$/;" t +libc - Raw FFI bindings to platforms' system libraries vendor/libc/README.md /^# libc - Raw FFI bindings to platforms' system libraries$/;" c +libc_freeres_fn lib/intl/dcigettext.c /^libc_freeres_fn (free_mem)$/;" f +libc_freeres_fn lib/intl/finddomain.c /^libc_freeres_fn (free_mem)$/;" f +libc_freeres_ptr lib/intl/localealias.c /^# define libc_freeres_ptr(/;" d file: +libdir Makefile.in /^libdir = @libdir@$/;" m +libdir lib/intl/Makefile.in /^libdir = @libdir@$/;" m +libdir lib/termcap/Makefile.in /^libdir = @libdir@$/;" m +libgnuintl.a lib/intl/Makefile.in /^libintl.a libgnuintl.a: $(OBJECTS)$/;" t +libgnuintl.h lib/intl/Makefile.in /^libgnuintl.h: $(srcdir)\/libgnuintl.h.in$/;" t +libgnuintl.la lib/intl/Makefile.in /^libintl.la libgnuintl.la: $(OBJECTS)$/;" t +libhistory.a lib/readline/Makefile.in /^libhistory.a: $(HISTOBJ) xmalloc.o xfree.o$/;" t +libintl.a lib/intl/Makefile.in /^libintl.a libgnuintl.a: $(OBJECTS)$/;" t +libintl.h lib/intl/Makefile.in /^libintl.h: libgnuintl.h$/;" t +libintl.la lib/intl/Makefile.in /^libintl.la libgnuintl.la: $(OBJECTS)$/;" t +libintl_nl_default_dirname lib/intl/os2compat.c /^char libintl_nl_default_dirname[MAXPATHLEN+1];$/;" v typeref:typename:char[] +libintl_set_relocation_prefix lib/intl/libgnuintl.h.in /^#define libintl_set_relocation_prefix /;" d file: +libloaderapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "libloaderapi")] pub mod libloaderapi;$/;" n +libraries vendor/winapi/build.rs /^ libraries: &'static [&'static str],$/;" m struct:Header +library_filename vendor/libloading/src/lib.rs /^pub fn library_filename>(name: S) -> OsString {$/;" f +library_kind vendor/winapi/build.rs /^fn library_kind() -> &'static str {$/;" f +library_open_already_loaded vendor/libloading/tests/functions.rs /^fn library_open_already_loaded() {$/;" f +library_prefix vendor/winapi/build.rs /^fn library_prefix() -> &'static str {$/;" f +library_this vendor/libloading/tests/functions.rs /^fn library_this() {$/;" f +library_this_get vendor/libloading/tests/functions.rs /^fn library_this_get() {$/;" f +libreadline.a lib/readline/Makefile.in /^libreadline.a: $(OBJECTS)$/;" t +librustc_brackets vendor/syn/tests/test_precedence.rs /^fn librustc_brackets(mut librustc_expr: P) -> Option> {$/;" f +librustc_expr vendor/syn/tests/common/parse.rs /^pub fn librustc_expr(input: &str) -> Option> {$/;" f +librustc_parse vendor/syn/benches/rust.rs /^mod librustc_parse {$/;" n +librustc_parse vendor/syn/tests/test_round_trip.rs /^fn librustc_parse(content: String, sess: &ParseSess) -> PResult {$/;" f +librustc_parse_and_rewrite vendor/syn/tests/test_precedence.rs /^fn librustc_parse_and_rewrite(input: &str) -> Option> {$/;" f +libtermcap.a lib/termcap/Makefile.in /^libtermcap.a: $(OBJECTS)$/;" t +lifetime vendor/async-trait/src/lib.rs /^mod lifetime;$/;" n +lifetime vendor/syn/src/buffer.rs /^ pub fn lifetime(mut self) -> Option<(Lifetime, Cursor<'a>)> {$/;" P implementation:Cursor +lifetime vendor/syn/src/item.rs /^ pub fn lifetime(&self) -> Option<&Lifetime> {$/;" P implementation:Receiver +lifetime vendor/syn/src/lib.rs /^mod lifetime;$/;" n +lifetime_empty vendor/proc-macro2/tests/test.rs /^fn lifetime_empty() {$/;" f +lifetime_invalid vendor/proc-macro2/tests/test.rs /^fn lifetime_invalid() {$/;" f +lifetime_name vendor/lazy_static/tests/test.rs /^fn lifetime_name() {$/;" f +lifetime_number vendor/proc-macro2/tests/test.rs /^fn lifetime_number() {$/;" f +lifetime_project vendor/pin-project-lite/tests/test.rs /^fn lifetime_project() {$/;" f +lifetimes vendor/async-trait/src/expand.rs /^ fn lifetimes<'a>(&'a self, used: &'a [Lifetime]) -> impl Iterator {$/;" P implementation:Context +lifetimes vendor/syn/src/generics.rs /^ pub fn lifetimes(&self) -> Lifetimes {$/;" P implementation:Generics +lifetimes_mut vendor/syn/src/generics.rs /^ pub fn lifetimes_mut(&mut self) -> LifetimesMut {$/;" P implementation:Generics +lift vendor/syn/src/gen_helper.rs /^ fn lift(self, f: F) -> Self$/;" P implementation:fold::Vec +lift vendor/syn/src/gen_helper.rs /^ fn lift(self, f: F) -> Self$/;" P interface:fold::FoldHelper +lift vendor/syn/src/gen_helper.rs /^ fn lift(self, mut f: F) -> Self$/;" P implementation:fold::Punctuated +lift_option vendor/libloading/src/os/unix/mod.rs /^ pub fn lift_option(self) -> Option> {$/;" P implementation:Symbol +lift_option vendor/libloading/src/os/windows/mod.rs /^ pub fn lift_option(self) -> Option> {$/;" P implementation:Symbol +lift_option vendor/libloading/src/safe.rs /^ pub fn lift_option(self) -> Option> {$/;" P implementation:Symbol +likely_subtags vendor/fluent-langneg/src/negotiate/mod.rs /^mod likely_subtags;$/;" n +likelysubtags vendor/unic-langid-impl/src/lib.rs /^pub mod likelysubtags;$/;" n +limit vendor/futures-util/src/io/take.rs /^ pub fn limit(&self) -> u64 {$/;" P implementation:Take +limits vendor/winapi/src/vc/mod.rs /^#[cfg(feature = "limits")] pub mod limits;$/;" n +lind lib/sh/zread.c /^static size_t lind, lused;$/;" v typeref:typename:size_t file: +line builtins_rust/cd/src/lib.rs /^ line: i32,$/;" m struct:COMMAND +line builtins_rust/cd/src/lib.rs /^ line: i32,$/;" m struct:subshell_com +line builtins_rust/cd/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_com +line builtins_rust/cd/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_for_com +line builtins_rust/cd/src/lib.rs /^ line: libc::c_int,$/;" m struct:case_com +line builtins_rust/cd/src/lib.rs /^ line: libc::c_int,$/;" m struct:cond_com +line builtins_rust/cd/src/lib.rs /^ line: libc::c_int,$/;" m struct:for_com +line builtins_rust/cd/src/lib.rs /^ line: libc::c_int,$/;" m struct:function_def +line builtins_rust/cd/src/lib.rs /^ line: libc::c_int,$/;" m struct:select_com +line builtins_rust/cd/src/lib.rs /^ line: libc::c_int,$/;" m struct:simple_com +line builtins_rust/command/src/lib.rs /^ pub line: libc::c_int,$/;" m struct:arith_com +line builtins_rust/command/src/lib.rs /^ pub line: libc::c_int,$/;" m struct:arith_for_com +line builtins_rust/command/src/lib.rs /^ pub line: libc::c_int,$/;" m struct:case_com +line builtins_rust/command/src/lib.rs /^ pub line: libc::c_int,$/;" m struct:command +line builtins_rust/command/src/lib.rs /^ pub line: libc::c_int,$/;" m struct:cond_com +line builtins_rust/command/src/lib.rs /^ pub line: libc::c_int,$/;" m struct:for_com +line builtins_rust/command/src/lib.rs /^ pub line: libc::c_int,$/;" m struct:function_def +line builtins_rust/command/src/lib.rs /^ pub line: libc::c_int,$/;" m struct:select_com +line builtins_rust/command/src/lib.rs /^ pub line: libc::c_int,$/;" m struct:simple_com +line builtins_rust/command/src/lib.rs /^ pub line: libc::c_int,$/;" m struct:subshell_com +line builtins_rust/common/src/lib.rs /^ line: i32,$/;" m struct:COMMAND +line builtins_rust/common/src/lib.rs /^ line: i32,$/;" m struct:subshell_com +line builtins_rust/common/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_com +line builtins_rust/common/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_for_com +line builtins_rust/common/src/lib.rs /^ line: libc::c_int,$/;" m struct:case_com +line builtins_rust/common/src/lib.rs /^ line: libc::c_int,$/;" m struct:cond_com +line builtins_rust/common/src/lib.rs /^ line: libc::c_int,$/;" m struct:for_com +line builtins_rust/common/src/lib.rs /^ line: libc::c_int,$/;" m struct:function_def +line builtins_rust/common/src/lib.rs /^ line: libc::c_int,$/;" m struct:select_com +line builtins_rust/common/src/lib.rs /^ line: libc::c_int,$/;" m struct:simple_com +line builtins_rust/complete/src/lib.rs /^ line: c_int,$/;" m struct:arith_com +line builtins_rust/complete/src/lib.rs /^ line: c_int,$/;" m struct:arith_for_com +line builtins_rust/complete/src/lib.rs /^ line: c_int,$/;" m struct:case_com +line builtins_rust/complete/src/lib.rs /^ line: c_int,$/;" m struct:cond_com +line builtins_rust/complete/src/lib.rs /^ line: c_int,$/;" m struct:for_com +line builtins_rust/complete/src/lib.rs /^ line: c_int,$/;" m struct:function_def +line builtins_rust/complete/src/lib.rs /^ line: c_int,$/;" m struct:select_com +line builtins_rust/complete/src/lib.rs /^ line: c_int,$/;" m struct:simple_com +line builtins_rust/complete/src/lib.rs /^ line: i32,$/;" m struct:COMMAND +line builtins_rust/complete/src/lib.rs /^ line: i32,$/;" m struct:subshell_com +line builtins_rust/declare/src/lib.rs /^ line: i32,$/;" m struct:COMMAND +line builtins_rust/declare/src/lib.rs /^ line: i32,$/;" m struct:subshell_com +line builtins_rust/declare/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_com +line builtins_rust/declare/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_for_com +line builtins_rust/declare/src/lib.rs /^ line: libc::c_int,$/;" m struct:case_com +line builtins_rust/declare/src/lib.rs /^ line: libc::c_int,$/;" m struct:cond_com +line builtins_rust/declare/src/lib.rs /^ line: libc::c_int,$/;" m struct:for_com +line builtins_rust/declare/src/lib.rs /^ line: libc::c_int,$/;" m struct:function_def +line builtins_rust/declare/src/lib.rs /^ line: libc::c_int,$/;" m struct:select_com +line builtins_rust/declare/src/lib.rs /^ line: libc::c_int,$/;" m struct:simple_com +line builtins_rust/fc/src/lib.rs /^ line: *mut c_char,$/;" m struct:HIST_ENTRY +line builtins_rust/fc/src/lib.rs /^ line: i32,$/;" m struct:COMMAND +line builtins_rust/fc/src/lib.rs /^ line: i32,$/;" m struct:subshell_com +line builtins_rust/fc/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_com +line builtins_rust/fc/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_for_com +line builtins_rust/fc/src/lib.rs /^ line: libc::c_int,$/;" m struct:case_com +line builtins_rust/fc/src/lib.rs /^ line: libc::c_int,$/;" m struct:cond_com +line builtins_rust/fc/src/lib.rs /^ line: libc::c_int,$/;" m struct:for_com +line builtins_rust/fc/src/lib.rs /^ line: libc::c_int,$/;" m struct:function_def +line builtins_rust/fc/src/lib.rs /^ line: libc::c_int,$/;" m struct:select_com +line builtins_rust/fc/src/lib.rs /^ line: libc::c_int,$/;" m struct:simple_com +line builtins_rust/fg_bg/src/lib.rs /^ line: i32,$/;" m struct:COMMAND +line builtins_rust/fg_bg/src/lib.rs /^ line: i32,$/;" m struct:subshell_com +line builtins_rust/fg_bg/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_com +line builtins_rust/fg_bg/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_for_com +line builtins_rust/fg_bg/src/lib.rs /^ line: libc::c_int,$/;" m struct:case_com +line builtins_rust/fg_bg/src/lib.rs /^ line: libc::c_int,$/;" m struct:cond_com +line builtins_rust/fg_bg/src/lib.rs /^ line: libc::c_int,$/;" m struct:for_com +line builtins_rust/fg_bg/src/lib.rs /^ line: libc::c_int,$/;" m struct:function_def +line builtins_rust/fg_bg/src/lib.rs /^ line: libc::c_int,$/;" m struct:select_com +line builtins_rust/fg_bg/src/lib.rs /^ line: libc::c_int,$/;" m struct:simple_com +line builtins_rust/getopts/src/lib.rs /^ line: i32,$/;" m struct:COMMAND +line builtins_rust/getopts/src/lib.rs /^ line: i32,$/;" m struct:subshell_com +line builtins_rust/getopts/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_com +line builtins_rust/getopts/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_for_com +line builtins_rust/getopts/src/lib.rs /^ line: libc::c_int,$/;" m struct:case_com +line builtins_rust/getopts/src/lib.rs /^ line: libc::c_int,$/;" m struct:cond_com +line builtins_rust/getopts/src/lib.rs /^ line: libc::c_int,$/;" m struct:for_com +line builtins_rust/getopts/src/lib.rs /^ line: libc::c_int,$/;" m struct:function_def +line builtins_rust/getopts/src/lib.rs /^ line: libc::c_int,$/;" m struct:select_com +line builtins_rust/getopts/src/lib.rs /^ line: libc::c_int,$/;" m struct:simple_com +line builtins_rust/history/src/intercdep.rs /^ pub line: *mut c_char,$/;" m struct:_hist_entry +line builtins_rust/jobs/src/lib.rs /^ line: i32,$/;" m struct:COMMAND +line builtins_rust/jobs/src/lib.rs /^ line: i32,$/;" m struct:subshell_com +line builtins_rust/jobs/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_com +line builtins_rust/jobs/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_for_com +line builtins_rust/jobs/src/lib.rs /^ line: libc::c_int,$/;" m struct:case_com +line builtins_rust/jobs/src/lib.rs /^ line: libc::c_int,$/;" m struct:cond_com +line builtins_rust/jobs/src/lib.rs /^ line: libc::c_int,$/;" m struct:for_com +line builtins_rust/jobs/src/lib.rs /^ line: libc::c_int,$/;" m struct:function_def +line builtins_rust/jobs/src/lib.rs /^ line: libc::c_int,$/;" m struct:select_com +line builtins_rust/jobs/src/lib.rs /^ line: libc::c_int,$/;" m struct:simple_com +line builtins_rust/kill/src/intercdep.rs /^ pub line: c_int,$/;" m struct:arith_com +line builtins_rust/kill/src/intercdep.rs /^ pub line: c_int,$/;" m struct:arith_for_com +line builtins_rust/kill/src/intercdep.rs /^ pub line: c_int,$/;" m struct:case_com +line builtins_rust/kill/src/intercdep.rs /^ pub line: c_int,$/;" m struct:command +line builtins_rust/kill/src/intercdep.rs /^ pub line: c_int,$/;" m struct:cond_com +line builtins_rust/kill/src/intercdep.rs /^ pub line: c_int,$/;" m struct:for_com +line builtins_rust/kill/src/intercdep.rs /^ pub line: c_int,$/;" m struct:function_def +line builtins_rust/kill/src/intercdep.rs /^ pub line: c_int,$/;" m struct:select_com +line builtins_rust/kill/src/intercdep.rs /^ pub line: c_int,$/;" m struct:simple_com +line builtins_rust/kill/src/intercdep.rs /^ pub line: c_int,$/;" m struct:subshell_com +line builtins_rust/pushd/src/lib.rs /^ line: i32,$/;" m struct:COMMAND +line builtins_rust/pushd/src/lib.rs /^ line: i32,$/;" m struct:subshell_com +line builtins_rust/pushd/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_com +line builtins_rust/pushd/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_for_com +line builtins_rust/pushd/src/lib.rs /^ line: libc::c_int,$/;" m struct:case_com +line builtins_rust/pushd/src/lib.rs /^ line: libc::c_int,$/;" m struct:cond_com +line builtins_rust/pushd/src/lib.rs /^ line: libc::c_int,$/;" m struct:for_com +line builtins_rust/pushd/src/lib.rs /^ line: libc::c_int,$/;" m struct:function_def +line builtins_rust/pushd/src/lib.rs /^ line: libc::c_int,$/;" m struct:select_com +line builtins_rust/pushd/src/lib.rs /^ line: libc::c_int,$/;" m struct:simple_com +line builtins_rust/rlet/src/intercdep.rs /^ pub line: *mut c_char,$/;" m struct:_hist_entry +line builtins_rust/setattr/src/intercdep.rs /^ pub line: c_int,$/;" m struct:arith_com +line builtins_rust/setattr/src/intercdep.rs /^ pub line: c_int,$/;" m struct:arith_for_com +line builtins_rust/setattr/src/intercdep.rs /^ pub line: c_int,$/;" m struct:case_com +line builtins_rust/setattr/src/intercdep.rs /^ pub line: c_int,$/;" m struct:command +line builtins_rust/setattr/src/intercdep.rs /^ pub line: c_int,$/;" m struct:cond_com +line builtins_rust/setattr/src/intercdep.rs /^ pub line: c_int,$/;" m struct:for_com +line builtins_rust/setattr/src/intercdep.rs /^ pub line: c_int,$/;" m struct:function_def +line builtins_rust/setattr/src/intercdep.rs /^ pub line: c_int,$/;" m struct:select_com +line builtins_rust/setattr/src/intercdep.rs /^ pub line: c_int,$/;" m struct:simple_com +line builtins_rust/setattr/src/intercdep.rs /^ pub line: c_int,$/;" m struct:subshell_com +line builtins_rust/source/src/lib.rs /^ line: i32,$/;" m struct:COMMAND +line builtins_rust/source/src/lib.rs /^ line: i32,$/;" m struct:subshell_com +line builtins_rust/source/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_com +line builtins_rust/source/src/lib.rs /^ line: libc::c_int,$/;" m struct:arith_for_com +line builtins_rust/source/src/lib.rs /^ line: libc::c_int,$/;" m struct:case_com +line builtins_rust/source/src/lib.rs /^ line: libc::c_int,$/;" m struct:cond_com +line builtins_rust/source/src/lib.rs /^ line: libc::c_int,$/;" m struct:for_com +line builtins_rust/source/src/lib.rs /^ line: libc::c_int,$/;" m struct:function_def +line builtins_rust/source/src/lib.rs /^ line: libc::c_int,$/;" m struct:select_com +line builtins_rust/source/src/lib.rs /^ line: libc::c_int,$/;" m struct:simple_com +line builtins_rust/type/src/lib.rs /^ line: i32,$/;" m struct:COMMAND +line builtins_rust/type/src/lib.rs /^ line: i32,$/;" m struct:arith_com +line builtins_rust/type/src/lib.rs /^ line: i32,$/;" m struct:arith_for_com +line builtins_rust/type/src/lib.rs /^ line: i32,$/;" m struct:case_com +line builtins_rust/type/src/lib.rs /^ line: i32,$/;" m struct:cond_com +line builtins_rust/type/src/lib.rs /^ line: i32,$/;" m struct:for_com +line builtins_rust/type/src/lib.rs /^ line: i32,$/;" m struct:function_def +line builtins_rust/type/src/lib.rs /^ line: i32,$/;" m struct:select_com +line builtins_rust/type/src/lib.rs /^ line: i32,$/;" m struct:simple_com +line builtins_rust/type/src/lib.rs /^ line: i32,$/;" m struct:subshell_com +line command.h /^ int line; \/* Line number the function def starts on. *\/$/;" m struct:function_def typeref:typename:int +line command.h /^ int line; \/* line number the `case' keyword appears on *\/$/;" m struct:case_com typeref:typename:int +line command.h /^ int line; \/* line number the command starts on *\/$/;" m struct:command typeref:typename:int +line command.h /^ int line; \/* line number the command starts on *\/$/;" m struct:simple_com typeref:typename:int +line command.h /^ int line; \/* line number the `for' keyword appears on *\/$/;" m struct:for_com typeref:typename:int +line command.h /^ int line; \/* line number the `select' keyword appears on *\/$/;" m struct:select_com typeref:typename:int +line command.h /^ int line; \/* generally used for error messages *\/$/;" m struct:arith_for_com typeref:typename:int +line command.h /^ int line;$/;" m struct:arith_com typeref:typename:int +line command.h /^ int line;$/;" m struct:cond_com typeref:typename:int +line command.h /^ int line;$/;" m struct:subshell_com typeref:typename:int +line lib/malloc/table.h /^ int line;$/;" m struct:ma_table typeref:typename:int +line lib/malloc/table.h /^ int line;$/;" m struct:mr_table typeref:typename:int +line lib/readline/display.c /^ char *line;$/;" m struct:line_state typeref:typename:char * file: +line lib/readline/history.h /^ char *line;$/;" m struct:_hist_entry typeref:typename:char * +line r_bash/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:arith_com +line r_bash/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:arith_for_com +line r_bash/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:case_com +line r_bash/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:command +line r_bash/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:cond_com +line r_bash/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:for_com +line r_bash/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:function_def +line r_bash/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:select_com +line r_bash/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:simple_com +line r_bash/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:subshell_com +line r_bashhist/src/lib.rs /^ pub line: *mut c_char,$/;" m struct:_hist_entry +line r_glob/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:arith_com +line r_glob/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:arith_for_com +line r_glob/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:case_com +line r_glob/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:command +line r_glob/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:cond_com +line r_glob/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:for_com +line r_glob/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:function_def +line r_glob/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:select_com +line r_glob/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:simple_com +line r_glob/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:subshell_com +line r_readline/src/lib.rs /^ pub line: *mut ::std::os::raw::c_char,$/;" m struct:_hist_entry +line r_readline/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:arith_com +line r_readline/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:arith_for_com +line r_readline/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:case_com +line r_readline/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:command +line r_readline/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:cond_com +line r_readline/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:for_com +line r_readline/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:function_def +line r_readline/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:select_com +line r_readline/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:simple_com +line r_readline/src/lib.rs /^ pub line: ::std::os::raw::c_int,$/;" m struct:subshell_com +line vendor/proc-macro2/src/fallback.rs /^ pub line: usize,$/;" m struct:LineColumn +line vendor/proc-macro2/src/lib.rs /^ pub line: usize,$/;" m struct:LineColumn +line vendor/proc-macro2/src/wrapper.rs /^ pub line: usize,$/;" m struct:LineColumn +line_buf lib/readline/examples/excallback.c /^char prompt_buf[40], line_buf[256];$/;" v typeref:typename:char[256] +line_error builtins/mkbuiltins.c /^line_error (defs, format, arg1, arg2)$/;" f +line_isblank general.c /^line_isblank (line)$/;" f +line_isblank r_bash/src/lib.rs /^ pub fn line_isblank(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +line_isblank r_glob/src/lib.rs /^ pub fn line_isblank(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +line_isblank r_readline/src/lib.rs /^ pub fn line_isblank(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +line_number builtins/mkbuiltins.c /^ int line_number; \/* The current line number. *\/$/;" m struct:__anon69e836710308 typeref:typename:int file: +line_number r_bash/src/lib.rs /^ pub static mut line_number: ::std::os::raw::c_int;$/;" v +line_number r_jobs/src/lib.rs /^ static mut line_number: c_int;$/;" v +line_number_base r_bash/src/lib.rs /^ pub static mut line_number_base: ::std::os::raw::c_int;$/;" v +line_number_for_err_trap execute_cmd.c /^int line_number_for_err_trap;$/;" v typeref:typename:int +line_number_for_err_trap r_bash/src/lib.rs /^ pub static mut line_number_for_err_trap: ::std::os::raw::c_int;$/;" v +line_read lib/readline/examples/manexamp.c /^static char *line_read = (char *)NULL;$/;" v typeref:typename:char * file: +line_size lib/readline/display.c /^static int line_size = 0;$/;" v typeref:typename:int file: +line_state lib/readline/display.c /^struct line_state$/;" s file: +line_state_array lib/readline/display.c /^static struct line_state line_state_array[2];$/;" v typeref:struct:line_state[2] file: +line_state_invisible lib/readline/display.c /^static struct line_state *line_state_invisible = &line_state_array[1];$/;" v typeref:struct:line_state * file: +line_state_visible lib/readline/display.c /^static struct line_state *line_state_visible = &line_state_array[0];$/;" v typeref:struct:line_state * file: +line_structures_initialized lib/readline/display.c /^static int line_structures_initialized = 0;$/;" v typeref:typename:int file: +line_totbytes lib/readline/display.c /^static int line_totbytes;$/;" v typeref:typename:int file: +line_vectored vendor/futures/tests/io_line_writer.rs /^fn line_vectored() {$/;" f +line_writer vendor/futures-util/src/io/mod.rs /^mod line_writer;$/;" n +line_writer vendor/futures/tests/io_line_writer.rs /^fn line_writer() {$/;" f +lineno_a execute_cmd.h /^ ARRAY *lineno_a;$/;" m struct:func_array_state typeref:typename:ARRAY * +lineno_a r_bash/src/lib.rs /^ pub lineno_a: *mut ARRAY,$/;" m struct:func_array_state +lineno_v execute_cmd.h /^ SHELL_VAR *lineno_v;$/;" m struct:func_array_state typeref:typename:SHELL_VAR * +lineno_v r_bash/src/lib.rs /^ pub lineno_v: *mut SHELL_VAR,$/;" m struct:func_array_state +lines builtins/mkbuiltins.c /^ ARRAY *lines; \/* The contents of the file. *\/$/;" m struct:__anon69e836710308 typeref:typename:ARRAY * file: +lines lib/readline/rlprivate.h /^ char **lines;$/;" m struct:__rl_search_context typeref:typename:char ** +lines r_readline/src/lib.rs /^ pub lines: *mut *mut ::std::os::raw::c_char,$/;" m struct:__rl_search_context +lines vendor/futures-util/src/io/mod.rs /^ fn lines(self) -> Lines$/;" P interface:AsyncBufReadExt +lines vendor/futures-util/src/io/mod.rs /^mod lines;$/;" n +lines vendor/futures/tests/io_lines.rs /^fn lines() {$/;" f +lines vendor/proc-macro2/src/fallback.rs /^ lines: Vec,$/;" m struct:FileInfo +lines_offsets vendor/proc-macro2/src/fallback.rs /^fn lines_offsets(s: &str) -> (usize, Vec) {$/;" f +link lib/malloc/alloca.c /^ long link; \/* Address of trailer block of previous$/;" m struct:stk_trailer typeref:typename:long file: +link r_bash/src/lib.rs /^ pub fn link($/;" f +link r_glob/src/lib.rs /^ pub fn link($/;" f +link r_readline/src/lib.rs /^ pub fn link($/;" f +link vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn link(&self, task: Arc>) -> *const Task {$/;" P implementation:FuturesUnordered +link vendor/libc/src/fuchsia/mod.rs /^ pub fn link(src: *const c_char, dst: *const c_char) -> ::c_int;$/;" f +link vendor/libc/src/unix/mod.rs /^ pub fn link(src: *const c_char, dst: *const c_char) -> ::c_int;$/;" f +link vendor/libc/src/vxworks/mod.rs /^ pub fn link(src: *const ::c_char, dst: *const ::c_char) -> ::c_int;$/;" f +link vendor/libc/src/wasi.rs /^ pub fn link(src: *const c_char, dst: *const c_char) -> ::c_int;$/;" f +link vendor/nix/src/sys/socket/addr.rs /^ mod link {$/;" n module:tests +linkat r_bash/src/lib.rs /^ pub fn linkat($/;" f +linkat r_glob/src/lib.rs /^ pub fn linkat($/;" f +linkat r_readline/src/lib.rs /^ pub fn linkat($/;" f +linkat vendor/libc/src/fuchsia/mod.rs /^ pub fn linkat($/;" f +linkat vendor/libc/src/unix/mod.rs /^ pub fn linkat($/;" f +linkat vendor/libc/src/wasi.rs /^ pub fn linkat($/;" f +linker vendor/memchr/src/tests/x86_64-soft_float.json /^ "linker": "rust-lld",$/;" s +linker-flavor vendor/memchr/src/tests/x86_64-soft_float.json /^ "linker-flavor": "ld.lld",$/;" s +lint Makefile.in /^lint:$/;" t +lint_suppress_with_body vendor/async-trait/src/expand.rs /^fn lint_suppress_with_body() -> Attribute {$/;" f +lint_suppress_without_body vendor/async-trait/src/expand.rs /^fn lint_suppress_without_body() -> Attribute {$/;" f +linux vendor/nix/src/mount/mod.rs /^mod linux;$/;" n +linux vendor/nix/src/sys/ioctl/mod.rs /^mod linux;$/;" n +linux vendor/nix/src/sys/ptrace/mod.rs /^mod linux;$/;" n +linux vendor/nix/test/sys/test_ioctl.rs /^mod linux {$/;" n +linux_android vendor/nix/test/test_fcntl.rs /^mod linux_android {$/;" n +linux_android vendor/nix/test/test_unistd.rs /^mod linux_android {$/;" n +linux_errqueue vendor/nix/test/sys/test_socket.rs /^mod linux_errqueue {$/;" n +linux_ioctls vendor/nix/test/sys/test_ioctl.rs /^mod linux_ioctls {$/;" n +linux_loopback vendor/nix/src/sys/socket/addr.rs /^ fn linux_loopback() {$/;" f module:tests::link +lio_listio vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn lio_listio($/;" f +lio_listio vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn lio_listio($/;" f +lio_listio vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn lio_listio($/;" f +lio_listio vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn lio_listio($/;" f +lio_listio vendor/nix/src/sys/aio.rs /^pub fn lio_listio($/;" f +list builtins_rust/complete/src/lib.rs /^ list: *mut *mut c_char,$/;" m struct:STRINGLIST +list builtins_rust/enable/src/lib.rs /^ pub list: *mut *mut libc::c_char,$/;" m struct:_list_of_strings +list externs.h /^ char **list;$/;" m struct:_list_of_strings typeref:typename:char ** +list parse.y /^list: newline_list list0$/;" l +list r_bash/src/lib.rs /^ pub list: *mut *mut ::std::os::raw::c_char,$/;" m struct:_list_of_strings +list r_bash/src/lib.rs /^ pub list: *mut *mut SHELL_VAR,$/;" m struct:_vlist +list variables.h /^ SHELL_VAR **list;$/;" m struct:_vlist typeref:typename:SHELL_VAR ** +list vendor/futures-channel/tests/mpsc.rs /^ fn list() -> impl Stream {$/;" f function:stress_drop_sender +list vendor/futures/tests_disabled/stream.rs /^fn list() -> Box + Send> {$/;" f +list.o Makefile.in /^list.o: ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h bashansi.h assoc.h$/;" t +list.o Makefile.in /^list.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +list.o Makefile.in /^list.o: make_cmd.h subst.h sig.h pathnames.h externs.h $/;" t +list.o Makefile.in /^list.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +list.o Makefile.in /^list.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\/s/;" t +list0 parse.y /^list0: list1 '\\n' newline_list$/;" l +list1 parse.y /^list1: list1 AND_AND newline_list list1$/;" l +list_all_jobs builtins_rust/exit/src/lib.rs /^ fn list_all_jobs(form: i32);$/;" f +list_all_jobs builtins_rust/jobs/src/lib.rs /^ fn list_all_jobs(form: i32);$/;" f +list_all_jobs jobs.c /^list_all_jobs (format)$/;" f +list_all_jobs r_bash/src/lib.rs /^ pub fn list_all_jobs(arg1: ::std::os::raw::c_int);$/;" f +list_all_jobs r_jobs/src/lib.rs /^pub unsafe extern "C" fn list_all_jobs(mut format: c_int) {$/;" f +list_append list.c /^list_append (head, tail)$/;" f +list_append r_bash/src/lib.rs /^ pub fn list_append() -> *mut GENERIC_LIST;$/;" f +list_append support/texi2dvi /^list_append ()$/;" f +list_concat_dirs support/texi2dvi /^list_concat_dirs ()$/;" f +list_dequote_escapes subst.c /^list_dequote_escapes (list)$/;" f file: +list_dir_to_abs support/texi2dvi /^list_dir_to_abs ()$/;" f +list_getter builtins_rust/enable/src/lib.rs /^ pub list_getter: Option libc::c_int>,$/;" m struct:_list_of_items +list_getter pcomplete.h /^ int (*list_getter) PARAMS((struct _list_of_items *)); \/* function to call to get the list *\/$/;" m struct:_list_of_items typeref:typename:int (*) +list_getter r_bash/src/lib.rs /^ pub list_getter: ::core::option::Option<$/;" m struct:_list_of_items +list_infix support/texi2dvi /^list_infix ()$/;" f +list_len builtins_rust/complete/src/lib.rs /^ list_len: c_int,$/;" m struct:STRINGLIST +list_len builtins_rust/enable/src/lib.rs /^ pub list_len: libc::c_int,$/;" m struct:_list_of_strings +list_len externs.h /^ int list_len;$/;" m struct:_list_of_strings typeref:typename:int +list_len r_bash/src/lib.rs /^ pub list_len: ::std::os::raw::c_int,$/;" m struct:_list_of_strings +list_len r_bash/src/lib.rs /^ pub list_len: usize,$/;" m struct:_vlist +list_len variables.h /^ size_t list_len; \/* current number of entries *\/$/;" m struct:_vlist typeref:typename:size_t +list_length builtins_rust/common/src/lib.rs /^ fn list_length(list: *mut GENERIC_LIST) -> i32;$/;" f +list_length list.c /^list_length (list)$/;" f +list_length r_bash/src/lib.rs /^ pub fn list_length() -> ::std::os::raw::c_int;$/;" f +list_minus_o_opts builtins_rust/set/src/lib.rs /^unsafe fn list_minus_o_opts(mode: i32, reusable: i32) {$/;" f +list_minus_o_opts builtins_rust/shopt/src/lib.rs /^ fn list_minus_o_opts(_: i32, _: i32);$/;" f +list_minus_o_opts r_bash/src/lib.rs /^ pub fn list_minus_o_opts(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int);$/;" f +list_one_job builtins_rust/jobs/src/lib.rs /^ fn list_one_job(jjob: *mut JOB, format: i32, ignore: i32, job_index: i32);$/;" f +list_one_job jobs.c /^list_one_job (job, format, ignore, job_index)$/;" f +list_one_job r_bash/src/lib.rs /^ pub fn list_one_job($/;" f +list_one_job r_jobs/src/lib.rs /^pub unsafe extern "C" fn list_one_job(mut job: *mut JOB, mut format: c_int, mut ignore: c_int,/;" f +list_optarg builtins/bashgetopt.c /^char *list_optarg;$/;" v typeref:typename:char * +list_optarg builtins_rust/bind/src/lib.rs /^ static list_optarg: *mut c_char;$/;" v +list_optarg builtins_rust/complete/src/lib.rs /^ static list_optarg: *mut c_char;$/;" v +list_optarg builtins_rust/enable/src/lib.rs /^ static mut list_optarg: *mut libc::c_char;$/;" v +list_optarg builtins_rust/exec/src/lib.rs /^ static list_optarg: *mut c_char;$/;" v +list_optarg builtins_rust/fc/src/lib.rs /^ static list_optarg: *mut c_char;$/;" v +list_optarg builtins_rust/hash/src/lib.rs /^ static list_optarg: *mut c_char;$/;" v +list_optarg builtins_rust/history/src/intercdep.rs /^ pub static mut list_optarg : *mut libc::c_char;$/;" v +list_optarg builtins_rust/kill/src/intercdep.rs /^ pub static mut list_optarg : *mut libc::c_char;$/;" v +list_optarg builtins_rust/mapfile/src/intercdep.rs /^ pub static mut list_optarg : *mut libc::c_char;$/;" v +list_optarg builtins_rust/printf/src/intercdep.rs /^ pub static mut list_optarg : *mut libc::c_char;$/;" v +list_optarg builtins_rust/read/src/intercdep.rs /^ pub static mut list_optarg : *mut libc::c_char;$/;" v +list_optarg builtins_rust/rlet/src/intercdep.rs /^ pub static mut list_optarg : *mut libc::c_char;$/;" v +list_optarg builtins_rust/rreturn/src/intercdep.rs /^ pub static mut list_optarg : *mut libc::c_char;$/;" v +list_optarg builtins_rust/shift/src/intercdep.rs /^ pub static mut list_optarg : *mut libc::c_char;$/;" v +list_optarg builtins_rust/suspend/src/intercdep.rs /^ pub static mut list_optarg : *mut libc::c_char;$/;" v +list_optarg builtins_rust/test/src/intercdep.rs /^ pub static mut list_optarg : *mut libc::c_char;$/;" v +list_optarg builtins_rust/trap/src/intercdep.rs /^ pub static mut list_optarg : *mut libc::c_char;$/;" v +list_optarg builtins_rust/ulimit/src/lib.rs /^ static mut list_optarg: *mut libc::c_char;$/;" v +list_optarg builtins_rust/wait/src/lib.rs /^ static list_optarg: *mut c_char;$/;" v +list_optarg r_bash/src/lib.rs /^ pub static mut list_optarg: *mut ::std::os::raw::c_char;$/;" v +list_optopt builtins/bashgetopt.c /^int list_optopt;$/;" v typeref:typename:int +list_optopt builtins_rust/set/src/lib.rs /^ static mut list_optopt: i8;$/;" v +list_optopt r_bash/src/lib.rs /^ pub static mut list_optopt: ::std::os::raw::c_int;$/;" v +list_opttype builtins/bashgetopt.c /^int list_opttype;$/;" v typeref:typename:int +list_opttype builtins_rust/complete/src/lib.rs /^ static mut list_opttype: i32;$/;" v +list_opttype builtins_rust/declare/src/lib.rs /^ static mut list_opttype: i32;$/;" v +list_opttype builtins_rust/set/src/lib.rs /^ static mut list_opttype: i32;$/;" v +list_opttype r_bash/src/lib.rs /^ pub static mut list_opttype: ::std::os::raw::c_int;$/;" v +list_prefix support/texi2dvi /^list_prefix ()$/;" f +list_quote_escapes subst.c /^list_quote_escapes (list)$/;" f file: +list_remove list.c /^list_remove (list, comparer, arg)$/;" f +list_remove r_bash/src/lib.rs /^ pub fn list_remove() -> *mut GENERIC_LIST;$/;" f +list_remove_pattern subst.c /^list_remove_pattern (list, pattern, patspec, itype, quoted)$/;" f file: +list_rest_of_args r_bash/src/lib.rs /^ pub fn list_rest_of_args() -> *mut WORD_LIST;$/;" f +list_rest_of_args subst.c /^list_rest_of_args ()$/;" f typeref:typename:WORD_LIST * +list_reverse array.c /^list_reverse (list)$/;" f +list_reverse builtins_rust/fc/src/lib.rs /^ fn list_reverse(list: *mut GENERIC_LIST) -> *mut GENERIC_LIST;$/;" f +list_reverse list.c /^list_reverse (list)$/;" f +list_reverse r_bash/src/lib.rs /^ pub fn list_reverse() -> *mut GENERIC_LIST;$/;" f +list_reverse r_jobs/src/lib.rs /^ fn list_reverse(list:*mut GENERIC_LIST) -> *mut GENERIC_LIST;$/;" f +list_running_jobs builtins_rust/jobs/src/lib.rs /^ fn list_running_jobs(format: i32);$/;" f +list_running_jobs jobs.c /^list_running_jobs (format)$/;" f +list_running_jobs r_bash/src/lib.rs /^ pub fn list_running_jobs(arg1: ::std::os::raw::c_int);$/;" f +list_running_jobs r_jobs/src/lib.rs /^pub unsafe extern "C" fn list_running_jobs(mut format: c_int) {$/;" f +list_size builtins_rust/complete/src/lib.rs /^ list_size: c_int,$/;" m struct:STRINGLIST +list_size builtins_rust/enable/src/lib.rs /^ pub list_size: libc::c_int,$/;" m struct:_list_of_strings +list_size externs.h /^ int list_size;$/;" m struct:_list_of_strings typeref:typename:int +list_size r_bash/src/lib.rs /^ pub list_size: ::std::os::raw::c_int,$/;" m struct:_list_of_strings +list_size r_bash/src/lib.rs /^ pub list_size: usize,$/;" m struct:_vlist +list_size variables.h /^ size_t list_size; \/* allocated size *\/$/;" m struct:_vlist typeref:typename:size_t +list_some_builtins builtins_rust/enable/src/lib.rs /^unsafe extern "C" fn list_some_builtins(mut filter: libc::c_int) {$/;" f +list_some_o_options builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn list_some_o_options(mode: i32, flags: i32) -> i32 {$/;" f +list_some_shopts builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn list_some_shopts(mode: i32, flags: i32) -> i32 {$/;" f +list_stopped_jobs builtins_rust/jobs/src/lib.rs /^ fn list_stopped_jobs(form: i32);$/;" f +list_stopped_jobs jobs.c /^list_stopped_jobs (format)$/;" f +list_stopped_jobs r_bash/src/lib.rs /^ pub fn list_stopped_jobs(arg1: ::std::os::raw::c_int);$/;" f +list_stopped_jobs r_jobs/src/lib.rs /^pub unsafe extern "C" fn list_stopped_jobs(mut format: c_int) {$/;" f +list_string array.c /^list_string(s, t, i)$/;" f +list_string builtins_rust/read/src/intercdep.rs /^ pub fn list_string(s: *mut c_char, t: *mut c_char, i: c_int) -> *mut WordList;$/;" f +list_string r_bash/src/lib.rs /^ pub fn list_string($/;" f +list_string subst.c /^list_string (string, separators, quoted)$/;" f +list_string_with_quotes r_bash/src/lib.rs /^ pub fn list_string_with_quotes(arg1: *mut ::std::os::raw::c_char) -> *mut WORD_LIST;$/;" f +list_terminator parse.y /^list_terminator:'\\n'$/;" l +list_transform subst.c /^list_transform (xc, v, list, itype, quoted)$/;" f file: +list_walk list.c /^list_walk (list, function)$/;" f +list_walk r_bash/src/lib.rs /^ pub fn list_walk(arg1: *mut GENERIC_LIST, arg2: sh_glist_func_t);$/;" f +listen vendor/libc/src/fuchsia/mod.rs /^ pub fn listen(socket: ::c_int, backlog: ::c_int) -> ::c_int;$/;" f +listen vendor/libc/src/unix/mod.rs /^ pub fn listen(socket: ::c_int, backlog: ::c_int) -> ::c_int;$/;" f +listen vendor/libc/src/vxworks/mod.rs /^ pub fn listen(socket: ::c_int, backlog: ::c_int) -> ::c_int;$/;" f +listen vendor/libc/src/windows/mod.rs /^ pub fn listen(s: SOCKET, backlog: ::c_int) -> ::c_int;$/;" f +listen vendor/nix/src/sys/socket/mod.rs /^pub fn listen(sockfd: RawFd, backlog: usize) -> Result<()> {$/;" f +listen vendor/winapi/src/um/winsock2.rs /^ pub fn listen($/;" f +listxattr vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn listxattr($/;" f +listxattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn listxattr(path: *const ::c_char, list: *mut ::c_char, size: ::size_t) -> ::ssize_t;$/;" f +listxattr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn listxattr(path: *const c_char, list: *mut c_char, size: ::size_t) -> ::ssize_t;$/;" f +listxattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn listxattr(path: *const c_char, list: *mut c_char, size: ::size_t) -> ::ssize_t;$/;" f +lit vendor/proc-macro2/tests/comments.rs /^fn lit() {$/;" f +lit vendor/syn/src/lib.rs /^mod lit;$/;" n +lit vendor/syn/tests/test_lit.rs /^fn lit(s: &str) -> Lit {$/;" f +lit_extra_traits vendor/syn/src/lit.rs /^macro_rules! lit_extra_traits {$/;" M +lit_of_doc_comment vendor/proc-macro2/tests/comments.rs /^fn lit_of_doc_comment(tokens: &TokenStream, inner: bool) -> Literal {$/;" f +lit_of_inner_doc_comment vendor/proc-macro2/tests/comments.rs /^fn lit_of_inner_doc_comment(tokens: &TokenStream) -> Literal {$/;" f +lit_of_outer_doc_comment vendor/proc-macro2/tests/comments.rs /^fn lit_of_outer_doc_comment(tokens: &TokenStream) -> Literal {$/;" f +literal vendor/proc-macro2/src/parse.rs /^pub(crate) fn literal(input: Cursor) -> PResult {$/;" f +literal vendor/syn/src/buffer.rs /^ pub fn literal(mut self) -> Option<(Literal, Cursor<'a>)> {$/;" P implementation:Cursor +literal_byte_string vendor/proc-macro2/tests/test.rs /^fn literal_byte_string() {$/;" f +literal_character vendor/proc-macro2/tests/test.rs /^fn literal_character() {$/;" f +literal_float vendor/proc-macro2/tests/test.rs /^fn literal_float() {$/;" f +literal_history bashhist.c /^int literal_history;$/;" v typeref:typename:int +literal_history builtins_rust/shopt/src/lib.rs /^ static mut literal_history: i32;$/;" v +literal_history r_bash/src/lib.rs /^ pub static mut literal_history: ::std::os::raw::c_int;$/;" v +literal_history r_bashhist/src/lib.rs /^pub static mut literal_history:c_int = 0;$/;" v +literal_integer vendor/proc-macro2/tests/test.rs /^fn literal_integer() {$/;" f +literal_iter_negative vendor/proc-macro2/tests/test.rs /^fn literal_iter_negative() {$/;" f +literal_nocapture vendor/proc-macro2/src/parse.rs /^fn literal_nocapture(input: Cursor) -> Result {$/;" f +literal_parse vendor/proc-macro2/tests/test.rs /^fn literal_parse() {$/;" f +literal_raw_string vendor/proc-macro2/tests/test.rs /^fn literal_raw_string() {$/;" f +literal_string vendor/proc-macro2/tests/test.rs /^fn literal_string() {$/;" f +literal_suffix vendor/proc-macro2/src/parse.rs /^fn literal_suffix(input: Cursor) -> Cursor {$/;" f +literal_suffix vendor/proc-macro2/tests/test.rs /^fn literal_suffix() {$/;" f +llabs r_bash/src/lib.rs /^ pub fn llabs(__x: ::std::os::raw::c_longlong) -> ::std::os::raw::c_longlong;$/;" f +llabs r_glob/src/lib.rs /^ pub fn llabs(__x: ::std::os::raw::c_longlong) -> ::std::os::raw::c_longlong;$/;" f +llabs r_readline/src/lib.rs /^ pub fn llabs(__x: ::std::os::raw::c_longlong) -> ::std::os::raw::c_longlong;$/;" f +llabs vendor/libc/src/solid/mod.rs /^ pub fn llabs(arg1: c_longlong) -> c_longlong;$/;" f +lldiv r_bash/src/lib.rs /^ pub fn lldiv($/;" f +lldiv r_glob/src/lib.rs /^ pub fn lldiv($/;" f +lldiv r_readline/src/lib.rs /^ pub fn lldiv($/;" f +lldiv vendor/libc/src/solid/mod.rs /^ pub fn lldiv(arg1: c_longlong, arg2: c_longlong) -> lldiv_t;$/;" f +lldiv_t r_bash/src/lib.rs /^pub struct lldiv_t {$/;" s +lldiv_t r_glob/src/lib.rs /^pub struct lldiv_t {$/;" s +lldiv_t r_readline/src/lib.rs /^pub struct lldiv_t {$/;" s +llistxattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn llistxattr(path: *const ::c_char, list: *mut ::c_char, size: ::size_t) -> ::ssize_t;$/;" f +llistxattr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn llistxattr(path: *const c_char, list: *mut c_char, size: ::size_t) -> ::ssize_t;$/;" f +llistxattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn llistxattr(path: *const c_char, list: *mut c_char, size: ::size_t) -> ::ssize_t;$/;" f +llvm-target vendor/memchr/src/tests/x86_64-soft_float.json /^ "llvm-target": "x86_64-unknown-none",$/;" s +lmaccess vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmaccess")] pub mod lmaccess;$/;" n +lmalert vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmalert")] pub mod lmalert;$/;" n +lmapibuf vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmapibuf")] pub mod lmapibuf;$/;" n +lmat vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmat")] pub mod lmat;$/;" n +lmaxchild r_jobs/src/lib.rs /^ static mut lmaxchild: c_int =-1;$/;" v function:set_maxchild +lmcons vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "lmcons")] pub mod lmcons;$/;" n +lmdfs vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmdfs")] pub mod lmdfs;$/;" n +lmerrlog vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmerrlog")] pub mod lmerrlog;$/;" n +lmjoin vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmjoin")] pub mod lmjoin;$/;" n +lmmsg vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmmsg")] pub mod lmmsg;$/;" n +lmremutl vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmremutl")] pub mod lmremutl;$/;" n +lmrepl vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmrepl")] pub mod lmrepl;$/;" n +lmserver vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmserver")] pub mod lmserver;$/;" n +lmshare vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmshare")] pub mod lmshare;$/;" n +lmstats vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmstats")] pub mod lmstats;$/;" n +lmsvc vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmsvc")] pub mod lmsvc;$/;" n +lmuse vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmuse")] pub mod lmuse;$/;" n +lmwksta vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lmwksta")] pub mod lmwksta;$/;" n +lnot lib/intl/plural-exp.h /^ lnot, \/* Logical NOT. *\/$/;" e enum:expression::__anon93874cf10103 +lnumber lib/sh/snprintf.c /^lnumber(p, d, base)$/;" f file: +lo vendor/proc-macro2/src/fallback.rs /^ pub(crate) lo: u32,$/;" m struct:Span +load vendor/async-trait/tests/test.rs /^ async fn load(&self, _key: &str) {}$/;" P implementation:issue110::AwsEc2MetadataLoader +load vendor/async-trait/tests/test.rs /^ async fn load(&self, key: &str);$/;" P interface:issue110::Loader +load_add_on vendor/libc/src/unix/haiku/native.rs /^ pub fn load_add_on(path: *const ::c_char) -> image_id;$/;" f +load_average vendor/nix/src/sys/sysinfo.rs /^ pub fn load_average(&self) -> (f64, f64, f64) {$/;" P implementation:SysInfo +load_history bashhist.c /^load_history ()$/;" f typeref:typename:void +load_history builtins_rust/set/src/lib.rs /^ fn load_history();$/;" f +load_history r_bash/src/lib.rs /^ pub fn load_history();$/;" f +load_history r_bashhist/src/lib.rs /^pub unsafe extern "C" fn load_history()$/;" f +load_image vendor/libc/src/unix/haiku/native.rs /^ pub fn load_image($/;" f +load_lsyntax mksyntax.c /^load_lsyntax ()$/;" f typeref:typename:void file: +load_ordinal_lib vendor/libloading/tests/windows.rs /^fn load_ordinal_lib() -> Library {$/;" f +load_unaligned vendor/memchr/src/memmem/vector.rs /^ unsafe fn load_unaligned(data: *const u8) -> __m128i {$/;" P implementation:x86sse::__m128i +load_unaligned vendor/memchr/src/memmem/vector.rs /^ unsafe fn load_unaligned(data: *const u8) -> __m256i {$/;" P implementation:x86avx::__m256i +load_unaligned vendor/memchr/src/memmem/vector.rs /^ unsafe fn load_unaligned(data: *const u8) -> v128 {$/;" P implementation:wasm_simd128::v128 +load_unaligned vendor/memchr/src/memmem/vector.rs /^ unsafe fn load_unaligned(data: *const u8) -> Self;$/;" P interface:Vector +load_with_flags vendor/libloading/src/os/windows/mod.rs /^ pub unsafe fn load_with_flags>(filename: P, flags: DWORD) -> Result>,$/;" m struct:Scope +local_bufused input.c /^static int local_index = 0, local_bufused = 0;$/;" v typeref:typename:int file: +local_dlclose builtins_rust/enable/src/lib.rs /^unsafe extern "C" fn local_dlclose(mut handle: *mut libc::c_void) -> libc::c_int {$/;" f +local_exported_variables r_bash/src/lib.rs /^ pub fn local_exported_variables() -> *mut *mut SHELL_VAR;$/;" f +local_exported_variables variables.c /^local_exported_variables ()$/;" f typeref:typename:SHELL_VAR ** +local_flags vendor/nix/src/sys/termios.rs /^ pub local_flags: LocalFlags,$/;" m struct:Termios +local_index input.c /^static int local_index = 0, local_bufused = 0;$/;" v typeref:typename:int file: +local_len vendor/smallvec/src/lib.rs /^ local_len: usize,$/;" m struct:SetLenOnDrop +local_p builtins_rust/declare/src/lib.rs /^unsafe fn local_p(varr: *mut SHELL_VAR) -> i32 {$/;" f +local_p variables.h /^#define local_p(/;" d +local_pool vendor/futures-executor/src/lib.rs /^mod local_pool;$/;" n +local_prompt lib/readline/display.c /^static char *local_prompt, *local_prompt_prefix;$/;" v typeref:typename:char * file: +local_prompt_len lib/readline/display.c /^static int local_prompt_len;$/;" v typeref:typename:int file: +local_prompt_newlines lib/readline/display.c /^static int *local_prompt_newlines;$/;" v typeref:typename:int * file: +local_prompt_prefix lib/readline/display.c /^static char *local_prompt, *local_prompt_prefix;$/;" v typeref:typename:char * file: +local_state lib/glob/xmbsrtowcs.c /^static mbstate_t local_state;$/;" v typeref:typename:mbstate_t file: +local_state_use lib/glob/xmbsrtowcs.c /^static int local_state_use = 0;$/;" v typeref:typename:int file: +localbuf input.c /^static char localbuf[1024];$/;" v typeref:typename:char[1024] file: +localcharset.$lo lib/intl/Makefile.in /^localcharset.$lo: $(srcdir)\/localcharset.h$/;" t +localcharset.$lo lib/intl/Makefile.in /^localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)\/relocatable.h$/;" t +localcharset.lo lib/intl/Makefile.in /^localcharset.lo: $(srcdir)\/localcharset.c$/;" t +localconv lib/sh/unicode.c /^static iconv_t localconv;$/;" v typeref:typename:iconv_t file: +locale vendor/intl_pluralrules/src/lib.rs /^ locale: LanguageIdentifier,$/;" m struct:PluralRules +locale.o Makefile.in /^locale.o: ${BASHINCDIR}\/chartypes.h$/;" t +locale.o Makefile.in /^locale.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +locale.o Makefile.in /^locale.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +locale.o Makefile.in /^locale.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +locale.o Makefile.in /^locale.o: input.h assoc.h ${BASHINCDIR}\/ocache.h$/;" t +locale.o Makefile.in /^locale.o: make_cmd.h subst.h sig.h pathnames.h externs.h $/;" t +locale.o Makefile.in /^locale.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +locale.o Makefile.in /^locale.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\//;" t +locale_charset lib/intl/localcharset.c /^locale_charset ()$/;" f typeref:typename:STATIC const char * +locale_decpoint bashintl.h /^# define locale_decpoint(/;" d +locale_decpoint locale.c /^locale_decpoint ()$/;" f typeref:typename:int +locale_decpoint r_bash/src/lib.rs /^ pub fn locale_decpoint() -> ::std::os::raw::c_int;$/;" f +locale_isutf8 locale.c /^locale_isutf8 (lspec)$/;" f file: +locale_mb_cur_max locale.c /^int locale_mb_cur_max; \/* value of MB_CUR_MAX for current locale (LC_CTYPE) *\/$/;" v typeref:typename:int +locale_mb_cur_max r_bash/src/lib.rs /^ pub static mut locale_mb_cur_max: ::std::os::raw::c_int;$/;" v +locale_setblanks locale.c /^locale_setblanks ()$/;" f typeref:typename:void file: +locale_shiftstates locale.c /^int locale_shiftstates = 0;$/;" v typeref:typename:int +locale_t r_bash/src/lib.rs /^pub type locale_t = __locale_t;$/;" t +locale_t r_glob/src/lib.rs /^pub type locale_t = __locale_t;$/;" t +locale_t r_readline/src/lib.rs /^pub type locale_t = __locale_t;$/;" t +locale_t vendor/libc/src/fuchsia/mod.rs /^pub type locale_t = *mut ::c_void;$/;" t +locale_t vendor/libc/src/solid/mod.rs /^pub type locale_t = usize;$/;" t +locale_t vendor/libc/src/unix/mod.rs /^pub type locale_t = *mut ::c_void;$/;" t +locale_t vendor/libc/src/wasi.rs /^pub type locale_t = *mut __locale_struct;$/;" t +locale_test vendor/intl_pluralrules/src/lib.rs /^ fn locale_test() {$/;" f module:tests +locale_utf8locale builtins_rust/read/src/intercdep.rs /^ pub static locale_utf8locale: c_int;$/;" v +locale_utf8locale locale.c /^int locale_utf8locale;$/;" v typeref:typename:int +locale_utf8locale r_bash/src/lib.rs /^ pub static mut locale_utf8locale: ::std::os::raw::c_int;$/;" v +localealias.$lo lib/intl/Makefile.in /^bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomai/;" t +localealias.$lo lib/intl/Makefile.in /^localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)\/relocatable.h$/;" t +localealias.lo lib/intl/Makefile.in /^localealias.lo: $(srcdir)\/localealias.c$/;" t +localeconv r_bash/src/lib.rs /^ pub fn localeconv() -> *mut lconv;$/;" f +localeconv vendor/libc/src/fuchsia/mod.rs /^ pub fn localeconv() -> *mut lconv;$/;" f +localeconv vendor/libc/src/solid/mod.rs /^ pub fn localeconv() -> *mut lconv;$/;" f +localeconv vendor/libc/src/unix/mod.rs /^ pub fn localeconv() -> *mut lconv;$/;" f +localeconv vendor/libc/src/wasi.rs /^ pub fn localeconv() -> *mut lconv;$/;" f +localeconv_l vendor/libc/src/solid/mod.rs /^ pub fn localeconv_l(arg1: locale_t) -> *mut lconv;$/;" f +localeconv_l vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn localeconv_l(loc: ::locale_t) -> *mut lconv;$/;" f +localeconv_l vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn localeconv_l(loc: ::locale_t) -> *mut lconv;$/;" f +localedir Makefile.in /^localedir = @localedir@$/;" m +localedir builtins/Makefile.in /^localedir = @localedir@$/;" m +localedir configure.ac /^AC_SUBST(localedir)$/;" s +localedir lib/intl/Makefile.in /^localedir = @localedir@$/;" m +localeexpand locale.c /^localeexpand (string, start, end, lineno, lenp)$/;" f +localeexpand r_bash/src/lib.rs /^ pub fn localeexpand($/;" f +localename.lo lib/intl/Makefile.in /^localename.lo: $(srcdir)\/localename.c$/;" t +locales vendor/fluent-bundle/src/bundle.rs /^ pub locales: Vec,$/;" m struct:FluentBundle +locales vendor/fluent-fallback/examples/simple-fallback.rs /^ locales: as IntoIterator>::IntoIter,$/;" m struct:BundleIter +locales vendor/fluent-fallback/src/env.rs /^ fn locales(&self) -> Self::Iter {$/;" P implementation:Vec +locales vendor/fluent-fallback/src/env.rs /^ fn locales(&self) -> Self::Iter;$/;" P interface:LocalesProvider +locales vendor/fluent-fallback/tests/localization_test.rs /^ fn locales(&self) -> Self::Iter {$/;" P implementation:Locales +locales vendor/fluent-fallback/tests/localization_test.rs /^ locales: as IntoIterator>::IntoIter,$/;" m struct:BundleIter +locales vendor/fluent-fallback/tests/localization_test.rs /^ locales: RefCell>,$/;" m struct:InnerLocales +locales vendor/fluent-resmgr/src/resource_manager.rs /^ locales: as IntoIterator>::IntoIter,$/;" m struct:BundleIter +localetrans locale.c /^localetrans (string, len, lenp)$/;" f +localetrans r_bash/src/lib.rs /^ pub fn localetrans($/;" f +localization vendor/fluent-fallback/src/lib.rs /^mod localization;$/;" n +localization_format vendor/fluent-fallback/tests/localization_test.rs /^fn localization_format() {$/;" f +localization_format_messages_sync_missing_errors vendor/fluent-fallback/tests/localization_test.rs /^fn localization_format_messages_sync_missing_errors() {$/;" f +localization_format_missing_argument_error vendor/fluent-fallback/tests/localization_test.rs /^fn localization_format_missing_argument_error() {$/;" f +localization_format_value vendor/fluent-resmgr/tests/localization_test.rs /^fn localization_format_value() {$/;" f +localization_format_value_missing_errors vendor/fluent-fallback/tests/localization_test.rs /^fn localization_format_value_missing_errors() {$/;" f +localization_format_value_sync_missing_errors vendor/fluent-fallback/tests/localization_test.rs /^fn localization_format_value_sync_missing_errors() {$/;" f +localization_format_values_sync_missing_errors vendor/fluent-fallback/tests/localization_test.rs /^fn localization_format_values_sync_missing_errors() {$/;" f +localization_handle_state_changes_mid_async vendor/fluent-fallback/tests/localization_test.rs /^async fn localization_handle_state_changes_mid_async() {$/;" f +localization_on_change vendor/fluent-fallback/tests/localization_test.rs /^fn localization_on_change() {$/;" f +localtime r_bash/src/lib.rs /^ pub fn localtime(__timer: *const time_t) -> *mut tm;$/;" f +localtime r_readline/src/lib.rs /^ pub fn localtime(__timer: *const time_t) -> *mut tm;$/;" f +localtime vendor/libc/src/fuchsia/mod.rs /^ pub fn localtime(time_p: *const time_t) -> *mut tm;$/;" f +localtime vendor/libc/src/solid/mod.rs /^ pub fn localtime(arg1: *const time_t) -> *mut tm;$/;" f +localtime vendor/libc/src/unix/mod.rs /^ pub fn localtime(time_p: *const time_t) -> *mut tm;$/;" f +localtime vendor/libc/src/vxworks/mod.rs /^ pub fn localtime(time_p: *const time_t) -> *mut tm;$/;" f +localtime vendor/libc/src/wasi.rs /^ pub fn localtime(a: *const time_t) -> *mut tm;$/;" f +localtime_offset lib/sh/mktime.c /^static time_t localtime_offset;$/;" v typeref:typename:time_t file: +localtime_r r_bash/src/lib.rs /^ pub fn localtime_r(__timer: *const time_t, __tp: *mut tm) -> *mut tm;$/;" f +localtime_r r_readline/src/lib.rs /^ pub fn localtime_r(__timer: *const time_t, __tp: *mut tm) -> *mut tm;$/;" f +localtime_r vendor/libc/src/fuchsia/mod.rs /^ pub fn localtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;$/;" f +localtime_r vendor/libc/src/solid/mod.rs /^ pub fn localtime_r(arg1: *const time_t, arg2: *mut tm) -> *mut tm;$/;" f +localtime_r vendor/libc/src/unix/mod.rs /^ pub fn localtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;$/;" f +localtime_r vendor/libc/src/vxworks/mod.rs /^ pub fn localtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;$/;" f +localtime_r vendor/libc/src/wasi.rs /^ pub fn localtime_r(a: *const time_t, b: *mut tm) -> *mut tm;$/;" f +localtime_s vendor/libc/src/windows/mod.rs /^ pub fn localtime_s(tmDest: *mut tm, sourceTime: *const time_t) -> ::errno_t;$/;" f +localvar_builtins builtins/mkbuiltins.c /^char *localvar_builtins[] =$/;" v typeref:typename:char * [] +localvar_inherit builtins_rust/shopt/src/lib.rs /^ static mut localvar_inherit: i32;$/;" v +localvar_inherit r_bash/src/lib.rs /^ pub static mut localvar_inherit: ::std::os::raw::c_int;$/;" v +localvar_inherit variables.c /^int localvar_inherit = 0;$/;" v typeref:typename:int +localvar_unset builtins_rust/shopt/src/lib.rs /^ static mut localvar_unset: i32;$/;" v +localvar_unset variables.c /^int localvar_unset = 0;$/;" v typeref:typename:int +located_at vendor/proc-macro2/src/fallback.rs /^ pub fn located_at(&self, other: Span) -> Span {$/;" P implementation:Span +located_at vendor/proc-macro2/src/lib.rs /^ pub fn located_at(&self, other: Span) -> Span {$/;" P implementation:Span +located_at vendor/proc-macro2/src/wrapper.rs /^ pub fn located_at(&self, other: Span) -> Span {$/;" P implementation:Span +location input.h /^ INPUT_STREAM location;$/;" m struct:__anon9f26d24b0208 typeref:typename:INPUT_STREAM +location r_bash/src/lib.rs /^ pub location: INPUT_STREAM,$/;" m struct:BASH_INPUT +location_base support/man2html.c /^static char location_base[NULL_TERMINATED(MED_STR_MAX)] = "";$/;" v typeref:typename:char[] file: +location_table_count lib/malloc/table.c /^static int location_table_count = 0;$/;" v typeref:typename:int file: +location_table_index lib/malloc/table.c /^static int location_table_index = 0;$/;" v typeref:typename:int file: +lock execute_cmd.c /^ int lock;$/;" m struct:cplist typeref:typename:int file: +lock vendor/futures-channel/src/lib.rs /^mod lock;$/;" n +lock vendor/futures-util/benches_disabled/bilock.rs /^ lock: BiLockAcquire,$/;" m struct:bench::LockStream +lock vendor/futures-util/src/lib.rs /^pub mod lock;$/;" n +lock vendor/futures-util/src/lock/bilock.rs /^ pub fn lock(&self) -> BiLockAcquire<'_, T> {$/;" P implementation:BiLock +lock vendor/futures-util/src/lock/mutex.rs /^ pub fn lock(&self) -> MutexLockFuture<'_, T> {$/;" P implementation:Mutex +lock vendor/futures-util/src/stream/stream/split.rs /^ lock: BiLock,$/;" m struct:SplitSink +lock vendor/futures/tests/auto_traits.rs /^pub mod lock {$/;" n +lock_and_then vendor/futures-util/src/io/split.rs /^fn lock_and_then(lock: &BiLock, cx: &mut Context<'_>, f: F) -> Poll>$/;" f +lock_info vendor/nix/test/test_fcntl.rs /^ fn lock_info(inode: usize) -> Option<(String, String)> {$/;" f module:linux_android +lock_owned vendor/futures-util/src/lock/mutex.rs /^ pub fn lock_owned(self: Arc) -> OwnedMutexLockFuture {$/;" P implementation:Mutex +lock_unlock vendor/futures-util/benches_disabled/bilock.rs /^ fn lock_unlock(b: &mut Bencher) {$/;" f module:bench +locked vendor/futures-channel/src/lock.rs /^ locked: AtomicBool,$/;" m struct:Lock +lockf r_bash/src/lib.rs /^ pub fn lockf($/;" f +lockf r_glob/src/lib.rs /^ pub fn lockf($/;" f +lockf r_readline/src/lib.rs /^ pub fn lockf($/;" f +lockf vendor/libc/src/unix/mod.rs /^ pub fn lockf(fd: ::c_int, cmd: ::c_int, len: ::off_t) -> ::c_int;$/;" f +lockf64 r_bash/src/lib.rs /^ pub fn lockf64($/;" f +lockf64 r_glob/src/lib.rs /^ pub fn lockf64($/;" f +lockf64 r_readline/src/lib.rs /^ pub fn lockf64($/;" f +loff_t r_bash/src/lib.rs /^pub type loff_t = __loff_t;$/;" t +loff_t r_glob/src/lib.rs /^pub type loff_t = __loff_t;$/;" t +loff_t r_readline/src/lib.rs /^pub type loff_t = __loff_t;$/;" t +loff_t vendor/libc/src/fuchsia/mod.rs /^pub type loff_t = ::c_longlong;$/;" t +loff_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type loff_t = ::c_longlong;$/;" t +loff_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type loff_t = i64;$/;" t +loff_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type loff_t = ::c_longlong;$/;" t +loff_t vendor/libc/src/unix/newlib/mod.rs /^pub type loff_t = ::c_longlong;$/;" t +log.lo lib/intl/Makefile.in /^log.lo: $(srcdir)\/log.c$/;" t +log_10 lib/sh/snprintf.c /^log_10(r)$/;" f file: +logfilename lib/intl/dcigettext.c /^ const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED");$/;" v typeref:typename:const char * +login vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn login(ut: *const utmp);$/;" f +login_shell builtins_rust/exit/src/lib.rs /^ static mut login_shell: i32;$/;" v +login_shell builtins_rust/shopt/src/lib.rs /^ static mut login_shell: i32;$/;" v +login_shell builtins_rust/suspend/src/intercdep.rs /^ pub static mut login_shell: c_int;$/;" v +login_shell r_bash/src/lib.rs /^ pub static mut login_shell: ::std::os::raw::c_int;$/;" v +login_shell shell.c /^int login_shell = 0;$/;" v typeref:typename:int +login_tty vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn login_tty(fd: ::c_int) -> ::c_int;$/;" f +login_tty vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn login_tty(fd: ::c_int) -> ::c_int;$/;" f +login_tty vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn login_tty(fd: ::c_int) -> ::c_int;$/;" f +login_tty vendor/libc/src/unix/haiku/mod.rs /^ pub fn login_tty(_fd: ::c_int) -> ::c_int;$/;" f +login_tty vendor/libc/src/unix/linux_like/mod.rs /^ pub fn login_tty(fd: ::c_int) -> ::c_int;$/;" f +loginx vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn loginx(ut: *const utmpx);$/;" f +logout vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn logout(line: *const ::c_char);$/;" f +logoutx vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn logoutx(line: *const ::c_char, status: ::c_int, tpe: ::c_int);$/;" f +logwtmp vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn logwtmp(line: *const ::c_char, name: *const ::c_char, host: *const ::c_char);$/;" f +logwtmpx vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn logwtmpx($/;" f +long_args shell.c /^} long_args[] = {$/;" v typeref:typename:const struct __anon92221f0e0108[] +long_doc builtins.h /^ char * const *long_doc; \/* NULL terminated array of strings. *\/$/;" m struct:builtin typeref:typename:char * const * +long_doc builtins_rust/common/src/lib.rs /^ pub long_doc: *const *mut c_char,$/;" m struct:builtin +long_doc builtins_rust/enable/src/lib.rs /^ pub long_doc: *const *mut libc::c_char,$/;" m struct:builtin +long_doc builtins_rust/help/src/lib.rs /^ long_doc: *mut *mut c_char,$/;" m struct:builtin +long_doc r_bash/src/lib.rs /^ pub long_doc: *const *mut ::std::os::raw::c_char,$/;" m struct:builtin +longdoc builtins/mkbuiltins.c /^ ARRAY *longdoc; \/* The long documentation for this builtin. *\/$/;" m struct:__anon69e836710208 typeref:typename:ARRAY * file: +longjmp r_bash/src/lib.rs /^ pub fn longjmp(__env: *mut __jmp_buf_tag, __val: ::std::os::raw::c_int);$/;" f +longjmp r_readline/src/lib.rs /^ pub fn longjmp(__env: *mut __jmp_buf_tag, __val: ::std::os::raw::c_int);$/;" f +longlong_t vendor/libc/src/solid/mod.rs /^pub type longlong_t = i64;$/;" t +lookahead vendor/syn/src/lib.rs /^mod lookahead;$/;" n +lookahead vendor/syn/src/sealed.rs /^pub mod lookahead {$/;" n +lookahead1 vendor/syn/src/parse.rs /^ pub fn lookahead1(&self) -> Lookahead1<'a> {$/;" P implementation:ParseBuffer +lookup_abbrev support/man2html.c /^lookup_abbrev(char *c)$/;" f typeref:typename:char * file: +loop_level builtins_rust/break_1/src/lib.rs /^ static mut loop_level: i32;$/;" v +loop_level r_bash/src/lib.rs /^ pub static mut loop_level: ::std::os::raw::c_int;$/;" v +loop_level r_jobs/src/lib.rs /^ static mut loop_level: c_int;$/;" v +loop_while_eintr vendor/nix/test/test_poll.rs /^macro_rules! loop_while_eintr {$/;" M +loopback_address vendor/nix/test/sys/test_socket.rs /^fn loopback_address($/;" f +loptend builtins/bashgetopt.c /^WORD_LIST *loptend; \/* Points to the first non-option argument in the list *\/$/;" v typeref:typename:WORD_LIST * +loptend builtins_rust/alias/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/bind/src/lib.rs /^ static loptend: *mut WordList;$/;" v +loptend builtins_rust/builtin/src/intercdep.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/caller/src/lib.rs /^ static loptend: *mut WordList;$/;" v +loptend builtins_rust/cd/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/command/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/complete/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/declare/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/enable/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/eval/src/lib.rs /^ static loptend: *mut WordList;$/;" v +loptend builtins_rust/exec/src/lib.rs /^ static loptend: *mut WordList;$/;" v +loptend builtins_rust/fc/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/fg_bg/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/getopts/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/hash/src/lib.rs /^ static loptend: *mut WordList;$/;" v +loptend builtins_rust/help/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/history/src/intercdep.rs /^ pub static mut loptend : *mut WordList;$/;" v +loptend builtins_rust/jobs/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/kill/src/intercdep.rs /^ pub static mut loptend : *mut WordList;$/;" v +loptend builtins_rust/mapfile/src/intercdep.rs /^ pub static mut loptend : *mut WordList;$/;" v +loptend builtins_rust/printf/src/intercdep.rs /^ pub static mut loptend : *mut WordList;$/;" v +loptend builtins_rust/read/src/intercdep.rs /^ pub static mut loptend : *mut WordList;$/;" v +loptend builtins_rust/rlet/src/intercdep.rs /^ pub static mut loptend : *mut WordList;$/;" v +loptend builtins_rust/rreturn/src/intercdep.rs /^ pub static mut loptend : *mut WordList;$/;" v +loptend builtins_rust/set/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/setattr/src/intercdep.rs /^ pub static mut loptend : *mut WordList;$/;" v +loptend builtins_rust/shift/src/intercdep.rs /^ pub static mut loptend : *mut WordList;$/;" v +loptend builtins_rust/shopt/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/source/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/suspend/src/intercdep.rs /^ pub static mut loptend : *mut WordList;$/;" v +loptend builtins_rust/test/src/intercdep.rs /^ pub static mut loptend : *mut WordList;$/;" v +loptend builtins_rust/trap/src/intercdep.rs /^ pub static mut loptend : *mut WordList;$/;" v +loptend builtins_rust/type/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/ulimit/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/umask/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend builtins_rust/wait/src/lib.rs /^ static mut loptend: *mut WordList;$/;" v +loptend r_bash/src/lib.rs /^ pub static mut loptend: *mut WORD_LIST;$/;" v +loption builtins_rust/builtin/src/intercdep.rs /^ static mut loption :*mut WordList;$/;" v +lor lib/intl/plural-exp.h /^ lor, \/* Logical OR. *\/$/;" e enum:expression::__anon93874cf10103 +lots vendor/futures/tests/recurse.rs /^fn lots() {$/;" f +lowercase_p variables.h /^#define lowercase_p(/;" d +lowlevelmonitorconfigurationapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lowlevelmonitorconfigurationapi")] pub mod lowlevelmonitorconfigurationapi;$/;" n +lpVtbl vendor/winapi/src/um/vsbackup.rs /^ pub lpVtbl: *const IVssWriterComponentsExtVtbl,$/;" m struct:IVssWriterComponentsExt +lrand48 r_bash/src/lib.rs /^ pub fn lrand48() -> ::std::os::raw::c_long;$/;" f +lrand48 r_glob/src/lib.rs /^ pub fn lrand48() -> ::std::os::raw::c_long;$/;" f +lrand48 r_readline/src/lib.rs /^ pub fn lrand48() -> ::std::os::raw::c_long;$/;" f +lrand48 vendor/libc/src/solid/mod.rs /^ pub fn lrand48() -> c_long;$/;" f +lrand48 vendor/libc/src/unix/bsd/mod.rs /^ pub fn lrand48() -> ::c_long;$/;" f +lrand48 vendor/libc/src/unix/haiku/mod.rs /^ pub fn lrand48() -> ::c_long;$/;" f +lrand48_r r_bash/src/lib.rs /^ pub fn lrand48_r($/;" f +lrand48_r r_glob/src/lib.rs /^ pub fn lrand48_r($/;" f +lrand48_r r_readline/src/lib.rs /^ pub fn lrand48_r($/;" f +lremovexattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn lremovexattr(path: *const ::c_char, name: *const ::c_char) -> ::c_int;$/;" f +lremovexattr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn lremovexattr(path: *const c_char, name: *const c_char) -> ::c_int;$/;" f +lremovexattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn lremovexattr(path: *const c_char, name: *const c_char) -> ::c_int;$/;" f +lsalookup vendor/winapi/src/um/mod.rs /^#[cfg(feature = "lsalookup")] pub mod lsalookup;$/;" n +lsearch vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn lsearch($/;" f +lsearch vendor/libc/src/unix/haiku/mod.rs /^ pub fn lsearch($/;" f +lseek r_bash/src/lib.rs /^ pub fn lseek($/;" f +lseek r_glob/src/lib.rs /^ pub fn lseek($/;" f +lseek r_readline/src/lib.rs /^ pub fn lseek($/;" f +lseek vendor/libc/src/fuchsia/mod.rs /^ pub fn lseek(fd: ::c_int, offset: off_t, whence: ::c_int) -> off_t;$/;" f +lseek vendor/libc/src/solid/mod.rs /^ pub fn lseek(arg1: c_int, arg2: __off_t, arg3: c_int) -> __off_t;$/;" f +lseek vendor/libc/src/unix/mod.rs /^ pub fn lseek(fd: ::c_int, offset: off_t, whence: ::c_int) -> off_t;$/;" f +lseek vendor/libc/src/vxworks/mod.rs /^ pub fn lseek(fd: ::c_int, offset: off_t, whence: ::c_int) -> off_t;$/;" f +lseek vendor/libc/src/wasi.rs /^ pub fn lseek(fd: ::c_int, offset: off_t, whence: ::c_int) -> off_t;$/;" f +lseek vendor/libc/src/windows/mod.rs /^ pub fn lseek(fd: ::c_int, offset: c_long, origin: ::c_int) -> c_long;$/;" f +lseek64 r_bash/src/lib.rs /^ pub fn lseek64($/;" f +lseek64 r_glob/src/lib.rs /^ pub fn lseek64($/;" f +lseek64 r_readline/src/lib.rs /^ pub fn lseek64($/;" f +lseek64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn lseek64(fd: ::c_int, offset: off64_t, whence: ::c_int) -> off64_t;$/;" f +lseek64 vendor/libc/src/windows/mod.rs /^ pub fn lseek64(fd: ::c_int, offset: c_longlong, origin: ::c_int) -> c_longlong;$/;" f +lsetxattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn lsetxattr($/;" f +lsetxattr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn lsetxattr($/;" f +lsetxattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn lsetxattr($/;" f +lsignames.h Makefile.in /^lsignames.h: mksignames$(EXEEXT)$/;" t +lstat lib/sh/getcwd.c /^# define lstat /;" d file: +lstat r_bash/src/lib.rs /^ pub fn lstat(__file: *const ::std::os::raw::c_char, __buf: *mut stat) -> ::std::os::raw::c_i/;" f +lstat r_readline/src/lib.rs /^ pub fn lstat(__file: *const ::std::os::raw::c_char, __buf: *mut stat) -> ::std::os::raw::c_i/;" f +lstat vendor/libc/src/fuchsia/mod.rs /^ pub fn lstat(path: *const c_char, buf: *mut stat) -> ::c_int;$/;" f +lstat vendor/libc/src/solid/mod.rs /^ pub fn lstat(arg1: *const c_char, arg2: *mut stat) -> c_int;$/;" f +lstat vendor/libc/src/unix/mod.rs /^ pub fn lstat(path: *const c_char, buf: *mut stat) -> ::c_int;$/;" f +lstat vendor/libc/src/vxworks/mod.rs /^ pub fn lstat(path: *const ::c_char, buf: *mut stat) -> ::c_int;$/;" f +lstat vendor/libc/src/wasi.rs /^ pub fn lstat(path: *const c_char, buf: *mut stat) -> ::c_int;$/;" f +lstat vendor/nix/src/sys/stat.rs /^pub fn lstat(path: &P) -> Result {$/;" f +lstat64 r_bash/src/lib.rs /^ pub fn lstat64($/;" f +lstat64 r_readline/src/lib.rs /^ pub fn lstat64($/;" f +lstat64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn lstat64(path: *const c_char, buf: *mut stat64) -> ::c_int;$/;" f +lstrcatA vendor/winapi/src/um/winbase.rs /^ pub fn lstrcatA($/;" f +lstrcatW vendor/winapi/src/um/winbase.rs /^ pub fn lstrcatW($/;" f +lstrcmpA vendor/winapi/src/um/winbase.rs /^ pub fn lstrcmpA($/;" f +lstrcmpW vendor/winapi/src/um/winbase.rs /^ pub fn lstrcmpW($/;" f +lstrcmpiA vendor/winapi/src/um/winbase.rs /^ pub fn lstrcmpiA($/;" f +lstrcmpiW vendor/winapi/src/um/winbase.rs /^ pub fn lstrcmpiW($/;" f +lstrcpyA vendor/winapi/src/um/winbase.rs /^ pub fn lstrcpyA($/;" f +lstrcpyW vendor/winapi/src/um/winbase.rs /^ pub fn lstrcpyW($/;" f +lstrcpynA vendor/winapi/src/um/winbase.rs /^ pub fn lstrcpynA($/;" f +lstrcpynW vendor/winapi/src/um/winbase.rs /^ pub fn lstrcpynW($/;" f +lstrlenA vendor/winapi/src/um/winbase.rs /^ pub fn lstrlenA($/;" f +lstrlenW vendor/winapi/src/um/winbase.rs /^ pub fn lstrlenW($/;" f +lsyntax mksyntax.c /^int lsyntax[SYNSIZE];$/;" v typeref:typename:int[] +ltchars lib/readline/rltty.c /^ struct ltchars ltchars; \/* 4.2 BSD editing characters *\/$/;" m struct:bsdtty typeref:struct:ltchars file: +ltoa vendor/libc/src/solid/mod.rs /^ pub fn ltoa(arg1: c_long, arg2: *mut c_char, arg3: c_int) -> *mut c_char;$/;" f +lused lib/sh/zread.c /^static size_t lind, lused;$/;" v typeref:typename:size_t file: +lutimes r_bash/src/lib.rs /^ pub fn lutimes($/;" f +lutimes r_glob/src/lib.rs /^ pub fn lutimes($/;" f +lutimes r_readline/src/lib.rs /^ pub fn lutimes($/;" f +lutimes vendor/libc/src/fuchsia/mod.rs /^ pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;$/;" f +lutimes vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;$/;" f +lutimes vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;$/;" f +lutimes vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;$/;" f +lutimes vendor/libc/src/unix/haiku/mod.rs /^ pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;$/;" f +lutimes vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;$/;" f +lutimes vendor/nix/src/sys/stat.rs /^pub fn lutimes(path: &P, atime: &TimeVal, mtime: &TimeVal) -> Result<()> {$/;" f +lval expr.c /^ struct lvalue lval;$/;" m struct:__anonfc32de750108 typeref:struct:lvalue file: +lvalue expr.c /^struct lvalue$/;" s file: +lwp_rtprio vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn lwp_rtprio($/;" f +lwpid_t vendor/libc/src/solid/mod.rs /^pub type lwpid_t = i32;$/;" t +lwpid_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type lwpid_t = i32;$/;" t +lwpid_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type lwpid_t = __lwpid_t;$/;" t +lwpid_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type lwpid_t = ::c_uint;$/;" t +m vendor/quote/tests/test.rs /^ macro_rules! m {$/;" M function:test_interpolated_literal +ma_table lib/malloc/table.h /^typedef struct ma_table {$/;" s +ma_table_t lib/malloc/table.h /^} ma_table_t;$/;" t typeref:struct:ma_table +mac vendor/async-trait/tests/test.rs /^ macro_rules! mac {$/;" M module:issue92 +mac vendor/async-trait/tests/test.rs /^ macro_rules! mac {$/;" M module:issue92_2 +mac vendor/syn/src/lib.rs /^mod mac;$/;" n +mac2 vendor/async-trait/tests/test.rs /^ macro_rules! mac2 {$/;" M method:issue92_2::Trait2::func2 +mach_absolute_time vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn mach_absolute_time() -> u64;$/;" f +mach_host_self vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn mach_host_self() -> mach_port_t;$/;" f +mach_msg_type_number_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type mach_msg_type_number_t = natural_t;$/;" t +mach_port_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type mach_port_t = ::c_uint;$/;" t +mach_task_basic_info_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type mach_task_basic_info_data_t = mach_task_basic_info;$/;" t +mach_task_basic_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type mach_task_basic_info_t = *mut mach_task_basic_info;$/;" t +mach_task_self vendor/libc/src/unix/bsd/apple/mod.rs /^pub unsafe fn mach_task_self() -> ::mach_port_t {$/;" f +mach_task_self_ vendor/libc/src/unix/bsd/apple/mod.rs /^ pub static mut mach_task_self_: ::mach_port_t;$/;" v +mach_thread_self vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn mach_thread_self() -> mach_port_t;$/;" f +mach_timebase_info vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn mach_timebase_info(info: *mut ::mach_timebase_info) -> ::c_int;$/;" f +mach_vm_address_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type mach_vm_address_t = u64;$/;" t +mach_vm_map vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn mach_vm_map($/;" f +mach_vm_offset_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type mach_vm_offset_t = u64;$/;" t +mach_vm_size_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type mach_vm_size_t = u64;$/;" t +machine vendor/nix/src/sys/utsname.rs /^ pub fn machine(&self) -> &OsStr {$/;" P implementation:UtsName +macos_loopback vendor/nix/src/sys/socket/addr.rs /^ fn macos_loopback() {$/;" f module:tests::link +macos_tap vendor/nix/src/sys/socket/addr.rs /^ fn macos_tap() {$/;" f module:tests::link +macro lib/readline/readline.h /^ char *macro;$/;" m struct:readline_state typeref:typename:char * +macro.o lib/readline/Makefile.in /^macro.o: ansi_stdlib.h$/;" t +macro.o lib/readline/Makefile.in /^macro.o: history.h rlstdc.h$/;" t +macro.o lib/readline/Makefile.in /^macro.o: macro.c$/;" t +macro.o lib/readline/Makefile.in /^macro.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +macro.o lib/readline/Makefile.in /^macro.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +macro.o lib/readline/Makefile.in /^macro.o: rlprivate.h$/;" t +macro.o lib/readline/Makefile.in /^macro.o: xmalloc.h$/;" t +macro_ r_readline/src/lib.rs /^ pub macro_: *mut ::std::os::raw::c_char,$/;" m struct:readline_state +macro_level lib/readline/macro.c /^static int macro_level = 0;$/;" v typeref:typename:int file: +macro_list lib/readline/macro.c /^static struct saved_macro *macro_list = (struct saved_macro *)NULL;$/;" v typeref:struct:saved_macro * file: +macros vendor/fluent-syntax/src/parser/mod.rs /^mod macros;$/;" n +macros vendor/libc/src/lib.rs /^mod macros;$/;" n +macros vendor/nix/src/lib.rs /^mod macros;$/;" n +macros vendor/stdext/src/lib.rs /^pub mod macros;$/;" n +macros vendor/syn/benches/file.rs /^mod macros;$/;" n +macros vendor/syn/benches/rust.rs /^mod macros;$/;" n +macros vendor/syn/src/lib.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_asyncness.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_attribute.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_derive_input.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_expr.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_generics.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_grouping.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_item.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_iterators.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_lit.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_meta.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_pat.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_path.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_precedence.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_round_trip.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_shebang.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_stmt.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_token_trees.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_ty.rs /^mod macros;$/;" n +macros vendor/syn/tests/test_visibility.rs /^mod macros;$/;" n +macros vendor/winapi/src/lib.rs /^mod macros;$/;" n +madvise vendor/libc/src/fuchsia/mod.rs /^ pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +madvise vendor/libc/src/unix/bsd/mod.rs /^ pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +madvise vendor/libc/src/unix/haiku/mod.rs /^ pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +madvise vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +madvise vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +madvise vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +madvise vendor/libc/src/unix/solarish/mod.rs /^ pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +madvise vendor/nix/src/sys/mman.rs /^pub unsafe fn madvise(addr: *mut c_void, length: size_t, advise: MmapAdvise) -> Result<()> {$/;" f +magic lib/intl/gmo.h /^ nls_uint32 magic;$/;" m struct:mo_file_header typeref:typename:nls_uint32 +magic1 builtins_rust/wait/src/signal.rs /^ pub magic1: __uint32_t,$/;" m struct:_fpx_sw_bytes +magic1 r_bash/src/lib.rs /^ pub magic1: __uint32_t,$/;" m struct:_fpx_sw_bytes +magic1 r_glob/src/lib.rs /^ pub magic1: __uint32_t,$/;" m struct:_fpx_sw_bytes +magic1 r_readline/src/lib.rs /^ pub magic1: __uint32_t,$/;" m struct:_fpx_sw_bytes +mail_warning builtins_rust/shopt/src/lib.rs /^ static mut mail_warning: i32;$/;" v +mail_warning mailcheck.c /^int mail_warning;$/;" v typeref:typename:int +mailcheck.o Makefile.in /^mailcheck.o: $(TILDE_LIBSRC)\/tilde.h$/;" t +mailcheck.o Makefile.in /^mailcheck.o: ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h assoc.h$/;" t +mailcheck.o Makefile.in /^mailcheck.o: ${BASHINCDIR}\/posixtime.h$/;" t +mailcheck.o Makefile.in /^mailcheck.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +mailcheck.o Makefile.in /^mailcheck.o: config.h bashtypes.h ${BASHINCDIR}\/posixstat.h bashansi.h ${BASHINCDIR}\/ansi_stdl/;" t +mailcheck.o Makefile.in /^mailcheck.o: execute_cmd.h mailcheck.h $/;" t +mailcheck.o Makefile.in /^mailcheck.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib/;" t +mailcheck.o Makefile.in /^mailcheck.o: make_cmd.h subst.h sig.h pathnames.h externs.h$/;" t +mailcheck.o Makefile.in /^mailcheck.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +mailcheck.o Makefile.in /^mailcheck.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDI/;" t +mailfiles mailcheck.c /^static FILEINFO **mailfiles = (FILEINFO **)NULL;$/;" v typeref:typename:FILEINFO ** file: +mailfiles_count mailcheck.c /^static int mailfiles_count;$/;" v typeref:typename:int file: +mailstat lib/sh/mailstat.c /^mailstat(path, st)$/;" f +mailstat.o lib/sh/Makefile.in /^mailstat.o: ${BASHINCDIR}\/ansi_stdlib.h$/;" t +mailstat.o lib/sh/Makefile.in /^mailstat.o: ${BASHINCDIR}\/maxpath.h$/;" t +mailstat.o lib/sh/Makefile.in /^mailstat.o: ${BASHINCDIR}\/posixdir.h$/;" t +mailstat.o lib/sh/Makefile.in /^mailstat.o: ${BASHINCDIR}\/posixstat.h$/;" t +mailstat.o lib/sh/Makefile.in /^mailstat.o: ${BUILD_DIR}\/config.h$/;" t +mailstat.o lib/sh/Makefile.in /^mailstat.o: ${topdir}\/bashansi.h$/;" t +mailstat.o lib/sh/Makefile.in /^mailstat.o: ${topdir}\/bashtypes.h$/;" t +mailstat.o lib/sh/Makefile.in /^mailstat.o: mailstat.c$/;" t +main CWRU/misc/errlist.c /^main(c, v)$/;" f +main CWRU/misc/open-files.c /^main()$/;" f +main CWRU/misc/sigs.c /^main(argc, argv)$/;" f +main CWRU/misc/sigstat.c /^main(argc, argv)$/;" f +main array.c /^main()$/;" f +main braces.c /^main ()$/;" f +main builtins/gen-helpfiles.c /^main (argc, argv)$/;" f +main builtins/getopt.c /^main (argc, argv)$/;" f +main builtins/mkbuiltins.c /^main (argc, argv)$/;" f +main builtins/psize.c /^main (argc, argv)$/;" f +main builtins_rust/build.rs /^fn main() {$/;" f +main expr.c /^main (argc, argv)$/;" f +main hashlib.c /^main ()$/;" f typeref:typename:int +main input.c /^main(argc, argv)$/;" f +main lib/glob/glob.c /^main (argc, argv)$/;" f +main lib/glob/strmatch.c /^main (c, v)$/;" f +main lib/readline/examples/excallback.c /^main()$/;" f typeref:typename:int +main lib/readline/examples/fileman.c /^main (argc, argv)$/;" f +main lib/readline/examples/histexamp.c /^main (argc, argv)$/;" f +main lib/readline/examples/rl-callbacktest.c /^main (int c, char **v)$/;" f typeref:typename:int +main lib/readline/examples/rl.c /^main (argc, argv)$/;" f +main lib/readline/examples/rlcat.c /^main (argc, argv)$/;" f +main lib/readline/examples/rltest.c /^main ()$/;" f typeref:typename:int +main lib/readline/tilde.c /^main (int argc, char **argv)$/;" f +main lib/sh/getcwd.c /^main (argc, argv)$/;" f +main lib/sh/mktime.c /^main (argc, argv)$/;" f +main lib/sh/snprintf.c /^main()$/;" f +main lib/sh/strftime.c /^main(argc, argv)$/;" f +main lib/sh/strtoimax.c /^main ()$/;" f typeref:typename:int +main lib/sh/strtoumax.c /^main ()$/;" f typeref:typename:int +main lib/termcap/termcap.c /^main (argc, argv)$/;" f +main lib/termcap/tparam.c /^main (argc, argv)$/;" f +main lib/tilde/tilde.c /^main (int argc, char **argv)$/;" f +main mksyntax.c /^main(argc, argv)$/;" f +main shell.c /^main (argc, argv)$/;" f +main src/main.rs /^fn main() {$/;" f +main support/man2html.c /^main(int argc, char **argv)$/;" f typeref:typename:int +main support/mksignames.c /^main (argc, argv)$/;" f +main support/printenv.c /^main (argc, argv) $/;" f +main support/recho.c /^main(argc, argv)$/;" f +main support/texi2html /^package main;$/;" p +main support/utshellversion.c /^main (argc, argv)$/;" f +main support/xcase.c /^main(ac, av)$/;" f +main support/zecho.c /^main(argc, argv)$/;" f +main vendor/async-trait/build.rs /^fn main() {$/;" f +main vendor/async-trait/tests/ui/arg-implementation-detail.rs /^fn main() {}$/;" f +main vendor/async-trait/tests/ui/bare-trait-object.rs /^fn main() {}$/;" f +main vendor/async-trait/tests/ui/consider-restricting.rs /^fn main() {}$/;" f +main vendor/async-trait/tests/ui/delimiter-span.rs /^fn main() {}$/;" f +main vendor/async-trait/tests/ui/lifetime-span.rs /^fn main() {}$/;" f +main vendor/async-trait/tests/ui/missing-async-in-impl.rs /^fn main() {}$/;" f +main vendor/async-trait/tests/ui/missing-async-in-trait.rs /^fn main() {}$/;" f +main vendor/async-trait/tests/ui/missing-body.rs /^fn main() {}$/;" f +main vendor/async-trait/tests/ui/must-use.rs /^fn main() {}$/;" f +main vendor/async-trait/tests/ui/self-span.rs /^fn main() {}$/;" f +main vendor/async-trait/tests/ui/send-not-implemented.rs /^fn main() {}$/;" f +main vendor/async-trait/tests/ui/unreachable.rs /^fn main() {}$/;" f +main vendor/async-trait/tests/ui/unsupported-self.rs /^fn main() {}$/;" f +main vendor/autocfg/examples/integers.rs /^fn main() {$/;" f +main vendor/autocfg/examples/paths.rs /^fn main() {$/;" f +main vendor/autocfg/examples/traits.rs /^fn main() {$/;" f +main vendor/autocfg/examples/versions.rs /^fn main() {$/;" f +main vendor/bitflags/tests/compile-fail/impls/copy.rs /^fn main() {}$/;" f +main vendor/bitflags/tests/compile-fail/impls/eq.rs /^fn main() {}$/;" f +main vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^fn main() {}$/;" f +main vendor/bitflags/tests/compile-fail/non_integer_base/all_missing.rs /^fn main() {}$/;" f +main vendor/bitflags/tests/compile-fail/visibility/private_field.rs /^fn main() {$/;" f +main vendor/bitflags/tests/compile-fail/visibility/private_flags.rs /^fn main() {$/;" f +main vendor/bitflags/tests/compile-fail/visibility/pub_const.rs /^fn main() {}$/;" f +main vendor/bitflags/tests/compile-pass/impls/convert.rs /^fn main() {$/;" f +main vendor/bitflags/tests/compile-pass/impls/default.rs /^fn main() {}$/;" f +main vendor/bitflags/tests/compile-pass/impls/inherent_methods.rs /^fn main() {}$/;" f +main vendor/bitflags/tests/compile-pass/redefinition/core.rs /^fn main() {}$/;" f +main vendor/bitflags/tests/compile-pass/redefinition/stringify.rs /^fn main() {$/;" f +main vendor/bitflags/tests/compile-pass/repr/c.rs /^fn main() {}$/;" f +main vendor/bitflags/tests/compile-pass/repr/transparent.rs /^fn main() {}$/;" f +main vendor/bitflags/tests/compile-pass/visibility/bits_field.rs /^fn main() {$/;" f +main vendor/bitflags/tests/compile-pass/visibility/pub_in.rs /^fn main() {$/;" f +main vendor/elsa/examples/arena.rs /^fn main() {$/;" f +main vendor/elsa/examples/fluentresource.rs /^fn main() {$/;" f +main vendor/elsa/examples/mutable_arena.rs /^fn main() {$/;" f +main vendor/elsa/examples/string_interner.rs /^fn main() {$/;" f +main vendor/elsa/examples/sync.rs /^fn main() {$/;" f +main vendor/fluent-fallback/examples/simple-fallback.rs /^fn main() {$/;" f +main vendor/fluent-resmgr/examples/simple-resmgr.rs /^fn main() {$/;" f +main vendor/fluent-syntax/src/bin/parser.rs /^fn main() {$/;" f +main vendor/fluent-syntax/src/bin/update_fixtures.rs /^fn main() {$/;" f +main vendor/futures-channel/build.rs /^fn main() {$/;" f +main vendor/futures-core/build.rs /^fn main() {$/;" f +main vendor/futures-task/build.rs /^fn main() {$/;" f +main vendor/futures-util/build.rs /^fn main() {$/;" f +main vendor/libc/build.rs /^fn main() {$/;" f +main vendor/memchr/build.rs /^fn main() {$/;" f +main vendor/memchr/scripts/make-byte-frequency-table /^def main():$/;" f +main vendor/memoffset/build.rs /^fn main() {$/;" f +main vendor/nix/test/test_mount.rs /^fn main() {$/;" f +main vendor/nix/test/test_mount.rs /^fn main() {}$/;" f +main vendor/once_cell/examples/bench.rs /^fn main() {$/;" f +main vendor/once_cell/examples/bench_acquire.rs /^fn main() {$/;" f +main vendor/once_cell/examples/bench_vs_lazy_static.rs /^fn main() {$/;" f +main vendor/once_cell/examples/lazy_static.rs /^fn main() {$/;" f +main vendor/once_cell/examples/reentrant_init_deadlocks.rs /^fn main() {$/;" f +main vendor/once_cell/examples/regex.rs /^fn main() {$/;" f +main vendor/once_cell/examples/test_synchronization.rs /^fn main() {$/;" f +main vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/default/enum.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/default/struct.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/multifields/enum.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/multifields/struct.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/enum-all.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/enum-mut.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/enum-none.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/enum-none.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/enum-ref.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/struct-all.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/struct-mut.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/struct-none.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/naming/struct-ref.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/pinned_drop/enum.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/pinned_drop/struct.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/pub/enum.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/expand/pub/struct.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/ui/pin_project/conflict-drop.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/ui/pin_project/conflict-unpin.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/ui/pin_project/invalid-bounds.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/ui/pin_project/invalid.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/ui/pin_project/overlapping_lifetime_names.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/ui/pin_project/overlapping_unpin_struct.rs /^fn main() {$/;" f +main vendor/pin-project-lite/tests/ui/pin_project/packed.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/ui/pin_project/unpin_sneaky.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/ui/pin_project/unsupported.rs /^fn main() {}$/;" f +main vendor/pin-project-lite/tests/ui/pinned_drop/call-drop-inner.rs /^fn main() {$/;" f +main vendor/pin-project-lite/tests/ui/pinned_drop/conditional-drop-impl.rs /^fn main() {}$/;" f +main vendor/proc-macro2/build.rs /^fn main() {$/;" f +main vendor/quote/build.rs /^fn main() {$/;" f +main vendor/quote/tests/ui/does-not-have-iter-interpolated-dup.rs /^fn main() {$/;" f +main vendor/quote/tests/ui/does-not-have-iter-interpolated.rs /^fn main() {$/;" f +main vendor/quote/tests/ui/does-not-have-iter-separated.rs /^fn main() {$/;" f +main vendor/quote/tests/ui/does-not-have-iter.rs /^fn main() {$/;" f +main vendor/quote/tests/ui/not-quotable.rs /^fn main() {$/;" f +main vendor/quote/tests/ui/not-repeatable.rs /^fn main() {$/;" f +main vendor/quote/tests/ui/wrong-type-span.rs /^fn main() {$/;" f +main vendor/slab/build.rs /^fn main() {$/;" f +main vendor/syn/benches/rust.rs /^fn main() {$/;" f +main vendor/syn/build.rs /^fn main() {$/;" f +main vendor/thiserror/build.rs /^fn main() {$/;" f +main vendor/thiserror/tests/ui/bad-field-attr.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/concat-display.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/duplicate-enum-source.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/duplicate-fmt.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/duplicate-struct-source.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/duplicate-transparent.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/from-backtrace-backtrace.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/from-not-source.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/lifetime.rs /^fn main() -> Result<(), Error<'static>> {$/;" f +main vendor/thiserror/tests/ui/missing-fmt.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/no-display.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/source-enum-not-error.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/source-struct-not-error.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/transparent-display.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/transparent-enum-many.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/transparent-enum-source.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/transparent-struct-many.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/transparent-struct-source.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/unexpected-field-fmt.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/unexpected-struct-source.rs /^fn main() {}$/;" f +main vendor/thiserror/tests/ui/union.rs /^fn main() {}$/;" f +main vendor/tinystr/examples/main.rs /^fn main() {$/;" f +main vendor/unic-langid-impl/src/bin/generate_layout.rs /^fn main() {$/;" f +main vendor/unic-langid-impl/src/bin/generate_likelysubtags.rs /^fn main() {$/;" f +main vendor/winapi-i686-pc-windows-gnu/build.rs /^fn main() {$/;" f +main vendor/winapi-x86_64-pc-windows-gnu/build.rs /^fn main() {$/;" f +main vendor/winapi/build.rs /^fn main() {$/;" f +maintainer-clean Makefile.in /^maintainer-clean: basic-clean$/;" t +maintainer-clean builtins/Makefile.in /^distclean maintainer-clean: clean$/;" t +maintainer-clean lib/glob/Makefile.in /^realclean distclean maintainer-clean: clean$/;" t +maintainer-clean lib/glob/doc/Makefile /^clean distclean mostlyclean maintainer-clean:$/;" t +maintainer-clean lib/intl/Makefile.in /^maintainer-clean: distclean$/;" t +maintainer-clean lib/malloc/Makefile.in /^distclean realclean maintainer-clean: clean$/;" t +maintainer-clean lib/readline/Makefile.in /^distclean maintainer-clean: clean$/;" t +maintainer-clean lib/sh/Makefile.in /^realclean distclean maintainer-clean: clean$/;" t +maintainer-clean lib/termcap/Makefile.in /^distclean maintainer-clean: clean$/;" t +maintainer-clean lib/tilde/Makefile.in /^realclean distclean maintainer-clean: clean$/;" t +maintainer-clean support/Makefile.in /^distclean maintainer-clean mostlyclean: clean$/;" t +major vendor/autocfg/src/version.rs /^ major: usize,$/;" m struct:Version +major vendor/nix/src/sys/stat.rs /^pub const fn major(dev: dev_t) -> u64 {$/;" f +major_page_faults vendor/nix/src/sys/resource.rs /^ pub fn major_page_faults(&self) -> c_long {$/;" P implementation:Usage +major_t vendor/libc/src/unix/solarish/mod.rs /^pub type major_t = ::c_uint;$/;" t +make_4byte_bytes vendor/tinystr/src/helpers.rs /^pub(crate) unsafe fn make_4byte_bytes($/;" f +make_absolute builtins_rust/cd/src/lib.rs /^ fn make_absolute(str1: *const c_char, dot_path: *const c_char) -> *mut c_char;$/;" f +make_absolute general.c /^make_absolute (string, dot_path)$/;" f +make_absolute r_bash/src/lib.rs /^ pub fn make_absolute($/;" f +make_absolute r_glob/src/lib.rs /^ pub fn make_absolute($/;" f +make_absolute r_readline/src/lib.rs /^ pub fn make_absolute($/;" f +make_arith_command make_cmd.c /^make_arith_command (exp)$/;" f +make_arith_command r_bash/src/lib.rs /^ pub fn make_arith_command(arg1: *mut WORD_LIST) -> *mut COMMAND;$/;" f +make_arith_for_command make_cmd.c /^make_arith_for_command (exprs, action, lineno)$/;" f +make_arith_for_command r_bash/src/lib.rs /^ pub fn make_arith_for_command($/;" f +make_arith_for_expr make_cmd.c /^make_arith_for_expr (s)$/;" f file: +make_array_variable_value arrayfunc.c /^make_array_variable_value (entry, ind, key, value, flags)$/;" f +make_array_variable_value r_bash/src/lib.rs /^ pub fn make_array_variable_value($/;" f +make_bare_simple_command builtins_rust/command/src/lib.rs /^ fn make_bare_simple_command() -> *mut COMMAND;$/;" f +make_bare_simple_command builtins_rust/jobs/src/lib.rs /^ fn make_bare_simple_command() -> *mut COMMAND;$/;" f +make_bare_simple_command make_cmd.c /^make_bare_simple_command ()$/;" f typeref:typename:COMMAND * +make_bare_simple_command r_bash/src/lib.rs /^ pub fn make_bare_simple_command() -> *mut COMMAND;$/;" f +make_bare_word array.c /^make_bare_word (s)$/;" f +make_bare_word builtins_rust/complete/src/lib.rs /^ fn make_bare_word(w: *const c_char) -> *mut WordDesc;$/;" f +make_bare_word make_cmd.c /^make_bare_word (string)$/;" f +make_bare_word r_bash/src/lib.rs /^ pub fn make_bare_word(arg1: *const ::std::os::raw::c_char) -> *mut WORD_DESC;$/;" f +make_benches vendor/smallvec/benches/bench.rs /^macro_rules! make_benches {$/;" M +make_buffered_stream input.c /^make_buffered_stream (fd, buffer, bufsize)$/;" f file: +make_builtin_argv builtins/common.c /^make_builtin_argv (list, ip)$/;" f +make_builtin_argv builtins_rust/getopts/src/lib.rs /^ fn make_builtin_argv(list: *mut WordList, ac: *mut i32) -> *mut *mut c_char;$/;" f +make_builtin_argv builtins_rust/test/src/intercdep.rs /^ pub fn make_builtin_argv(list: *mut WordList, ip: *mut c_int) -> *mut *mut c_char;$/;" f +make_builtin_argv r_bash/src/lib.rs /^ pub fn make_builtin_argv($/;" f +make_case_command make_cmd.c /^make_case_command (word, clauses, lineno)$/;" f +make_case_command r_bash/src/lib.rs /^ pub fn make_case_command($/;" f +make_child jobs.c /^make_child (command, flags)$/;" f +make_child nojobs.c /^make_child (command, flags)$/;" f +make_child r_jobs/src/lib.rs /^pub unsafe extern "C" fn make_child($/;" f +make_cmd.o Makefile.in /^make_cmd.o: $(BASHINCDIR)\/maxpath.h make_cmd.c assoc.h $(BASHINCDIR)\/chartypes.h$/;" t +make_cmd.o Makefile.in /^make_cmd.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h ${BASHINCDIR}\/ocache.h$/;" t +make_cmd.o Makefile.in /^make_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +make_cmd.o Makefile.in /^make_cmd.o: command.h ${BASHINCDIR}\/stdc.h general.h xmalloc.h error.h flags.h make_cmd.h$/;" t +make_cmd.o Makefile.in /^make_cmd.o: config.h bashtypes.h ${BASHINCDIR}\/filecntl.h bashansi.h$/;" t +make_cmd.o Makefile.in /^make_cmd.o: jobs.h quit.h sig.h siglist.h syntax.h dispose_cmd.h parser.h$/;" t +make_cmd.o Makefile.in /^make_cmd.o: shell.h execute_cmd.h pathnames.h$/;" t +make_cmd.o Makefile.in /^make_cmd.o: unwind_prot.h $(BASHINCDIR)\/posixjmp.h bashjmp.h $(BASHINCDIR)\/posixwait.h$/;" t +make_cmd.o Makefile.in /^make_cmd.o: variables.h arrayfunc.h conftypes.h array.h hashlib.h subst.h input.h externs.h$/;" t +make_command make_cmd.c /^make_command (type, pointer)$/;" f +make_command r_bash/src/lib.rs /^ pub fn make_command(arg1: command_type, arg2: *mut SIMPLE_COM) -> *mut COMMAND;$/;" f +make_command_string print_cmd.c /^make_command_string (command)$/;" f +make_command_string r_bash/src/lib.rs /^ pub fn make_command_string(arg1: *mut COMMAND) -> *mut ::std::os::raw::c_char;$/;" f +make_command_string_internal print_cmd.c /^make_command_string_internal (command)$/;" f file: +make_command_string_internal r_print_cmd/src/lib.rs /^unsafe fn make_command_string_internal(command:*mut COMMAND)$/;" f +make_cond_command make_cmd.c /^make_cond_command (cond_node)$/;" f +make_cond_command r_bash/src/lib.rs /^ pub fn make_cond_command(arg1: *mut COND_COM) -> *mut COMMAND;$/;" f +make_cond_node make_cmd.c /^make_cond_node (type, op, left, right)$/;" f +make_cond_node r_bash/src/lib.rs /^ pub fn make_cond_node($/;" f +make_coproc_command make_cmd.c /^make_coproc_command (name, command)$/;" f +make_coproc_command r_bash/src/lib.rs /^ pub fn make_coproc_command($/;" f +make_default_mailpath mailcheck.c /^make_default_mailpath ()$/;" f typeref:typename:char * +make_default_mailpath r_bash/src/lib.rs /^ pub fn make_default_mailpath() -> *mut ::std::os::raw::c_char;$/;" f +make_dev_fd_filename subst.c /^make_dev_fd_filename (fd)$/;" f file: +make_env_array_from_var_list variables.c /^make_env_array_from_var_list (vars)$/;" f file: +make_for_command make_cmd.c /^make_for_command (name, map_list, action, lineno)$/;" f +make_for_command r_bash/src/lib.rs /^ pub fn make_for_command($/;" f +make_for_or_select make_cmd.c /^make_for_or_select (type, name, map_list, action, lineno)$/;" f file: +make_func_export_array variables.c /^make_func_export_array ()$/;" f typeref:typename:char ** file: +make_funcname_visible r_bash/src/lib.rs /^ pub fn make_funcname_visible(arg1: ::std::os::raw::c_int);$/;" f +make_funcname_visible variables.c /^make_funcname_visible (on_or_off)$/;" f +make_function_def make_cmd.c /^make_function_def (name, command, lineno, lstart)$/;" f +make_function_def r_bash/src/lib.rs /^ pub fn make_function_def($/;" f +make_group_command make_cmd.c /^make_group_command (command)$/;" f +make_group_command r_bash/src/lib.rs /^ pub fn make_group_command(arg1: *mut COMMAND) -> *mut COMMAND;$/;" f +make_helpers vendor/libloading/tests/functions.rs /^fn make_helpers() {$/;" f +make_here_document make_cmd.c /^make_here_document (temp, lineno)$/;" f +make_here_document r_bash/src/lib.rs /^ pub fn make_here_document(arg1: *mut REDIRECT, arg2: ::std::os::raw::c_int);$/;" f +make_history_line_current lib/readline/search.c /^make_history_line_current (HIST_ENTRY *entry)$/;" f typeref:typename:void file: +make_if_command make_cmd.c /^make_if_command (test, true_case, false_case)$/;" f +make_if_command r_bash/src/lib.rs /^ pub fn make_if_command($/;" f +make_internal_declare subst.c /^make_internal_declare (word, option, cmd)$/;" f file: +make_local_array_variable builtins_rust/declare/src/lib.rs /^ fn make_local_array_variable(value: *mut c_char, flags: i32) -> *mut SHELL_VAR;$/;" f +make_local_array_variable r_bash/src/lib.rs /^ pub fn make_local_array_variable($/;" f +make_local_array_variable variables.c /^make_local_array_variable (name, flags)$/;" f +make_local_assoc_variable builtins_rust/declare/src/lib.rs /^ fn make_local_assoc_variable(value: *mut c_char, flags: i32) -> *mut SHELL_VAR;$/;" f +make_local_assoc_variable r_bash/src/lib.rs /^ pub fn make_local_assoc_variable($/;" f +make_local_assoc_variable variables.c /^make_local_assoc_variable (name, flags)$/;" f +make_local_variable builtins_rust/declare/src/lib.rs /^ fn make_local_variable(name: *const c_char, flags: i32) -> *mut SHELL_VAR;$/;" f +make_local_variable r_bash/src/lib.rs /^ pub fn make_local_variable($/;" f +make_local_variable variables.c /^make_local_variable (name, flags)$/;" f +make_login_shell shell.c /^static int make_login_shell; \/* Make this shell be a `-bash' shell. *\/$/;" v typeref:typename:int file: +make_mut vendor/proc-macro2/src/rcvec.rs /^ pub fn make_mut(&mut self) -> RcVecMut$/;" P implementation:RcVec +make_named_pipe subst.c /^make_named_pipe ()$/;" f typeref:typename:char * file: +make_new_array_variable builtins_rust/declare/src/lib.rs /^ fn make_new_array_variable(name: *mut c_char) -> *mut SHELL_VAR;$/;" f +make_new_array_variable r_bash/src/lib.rs /^ pub fn make_new_array_variable(arg1: *mut ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +make_new_array_variable variables.c /^make_new_array_variable (name)$/;" f +make_new_assoc_variable builtins_rust/declare/src/lib.rs /^ fn make_new_assoc_variable(name: *mut c_char) -> *mut SHELL_VAR;$/;" f +make_new_assoc_variable r_bash/src/lib.rs /^ pub fn make_new_assoc_variable(arg1: *mut ::std::os::raw::c_char) -> *mut SHELL_VAR;$/;" f +make_new_assoc_variable variables.c /^make_new_assoc_variable (name)$/;" f +make_new_variable variables.c /^make_new_variable (name, table)$/;" f file: +make_openout_test support/texi2dvi /^make_openout_test ()$/;" f +make_owned vendor/proc-macro2/src/rcvec.rs /^ pub fn make_owned(mut self) -> RcVecBuilder$/;" P implementation:RcVec +make_pattern_list make_cmd.c /^make_pattern_list (patterns, action)$/;" f +make_pattern_list r_bash/src/lib.rs /^ pub fn make_pattern_list(arg1: *mut WORD_LIST, arg2: *mut COMMAND) -> *mut PATTERN_LIST;$/;" f +make_product builtins_rust/exec_cmd/src/lib.rs /^ fn make_product(&self, cmd_type: CMDType) -> Box {$/;" P implementation:SimpleFactory +make_product builtins_rust/exec_cmd/src/lib.rs /^ fn make_product(&self, product_type: CMDType) -> Box;$/;" P interface:Factory +make_quoted_char subst.c /^make_quoted_char (c)$/;" f file: +make_quoted_replacement lib/readline/complete.c /^make_quoted_replacement (char *match, int mtype, char *qc)$/;" f typeref:typename:char * file: +make_raw vendor/nix/test/test_pty.rs /^fn make_raw(fd: RawFd) {$/;" f +make_redirection make_cmd.c /^make_redirection (source, instruction, dest_and_filename, flags)$/;" f +make_redirection r_bash/src/lib.rs /^ pub fn make_redirection($/;" f +make_select_command make_cmd.c /^make_select_command (name, map_list, action, lineno)$/;" f +make_select_command r_bash/src/lib.rs /^ pub fn make_select_command($/;" f +make_simple_command make_cmd.c /^make_simple_command (element, command)$/;" f +make_simple_command r_bash/src/lib.rs /^ pub fn make_simple_command(arg1: ELEMENT, arg2: *mut COMMAND) -> *mut COMMAND;$/;" f +make_stop_fut vendor/futures/tests/stream.rs /^ fn make_stop_fut(stop_on: u32) -> impl Future {$/;" f function:take_until +make_subshell_command make_cmd.c /^make_subshell_command (command)$/;" f +make_subshell_command r_bash/src/lib.rs /^ pub fn make_subshell_command(arg1: *mut COMMAND) -> *mut COMMAND;$/;" f +make_sure_no_proc_macro vendor/proc-macro2/tests/features.rs /^fn make_sure_no_proc_macro() {$/;" f +make_tex_cmd support/texi2dvi /^make_tex_cmd ()$/;" f +make_until_command make_cmd.c /^make_until_command (test, action)$/;" f +make_until_command r_bash/src/lib.rs /^ pub fn make_until_command(arg1: *mut COMMAND, arg2: *mut COMMAND) -> *mut COMMAND;$/;" f +make_until_or_while make_cmd.c /^make_until_or_while (which, test, action)$/;" f file: +make_var_array r_bash/src/lib.rs /^ pub fn make_var_array(arg1: *mut HASH_TABLE) -> *mut *mut ::std::os::raw::c_char;$/;" f +make_var_export_array variables.c /^make_var_export_array (vcxt)$/;" f file: +make_variable_value r_bash/src/lib.rs /^ pub fn make_variable_value($/;" f +make_variable_value variables.c /^make_variable_value (var, value, flags)$/;" f +make_vers_array variables.c /^make_vers_array ()$/;" f typeref:typename:void file: +make_where_clause vendor/syn/src/generics.rs /^ pub fn make_where_clause(&mut self) -> &mut WhereClause {$/;" P implementation:Generics +make_while_command make_cmd.c /^make_while_command (test, action)$/;" f +make_while_command r_bash/src/lib.rs /^ pub fn make_while_command(arg1: *mut COMMAND, arg2: *mut COMMAND) -> *mut COMMAND;$/;" f +make_word builtins_rust/pushd/src/lib.rs /^ fn make_word(w: *const c_char) -> *mut WordDesc;$/;" f +make_word builtins_rust/setattr/src/intercdep.rs /^ pub fn make_word(string: *const c_char) -> *mut WordDesc;$/;" f +make_word builtins_rust/shopt/src/lib.rs /^ fn make_word(_: *const libc::c_char) -> *mut WordDesc;$/;" f +make_word make_cmd.c /^make_word (string)$/;" f +make_word r_bash/src/lib.rs /^ pub fn make_word(arg1: *const ::std::os::raw::c_char) -> *mut WORD_DESC;$/;" f +make_word_flags make_cmd.c /^make_word_flags (w, string)$/;" f +make_word_flags r_bash/src/lib.rs /^ pub fn make_word_flags($/;" f +make_word_from_token make_cmd.c /^make_word_from_token (token)$/;" f +make_word_from_token r_bash/src/lib.rs /^ pub fn make_word_from_token(arg1: ::std::os::raw::c_int) -> *mut WORD_DESC;$/;" f +make_word_list array.c /^make_word_list(x, l)$/;" f +make_word_list builtins_rust/complete/src/lib.rs /^ fn make_word_list(w: *mut WordDesc, list: *mut WordList) -> *mut WordList;$/;" f +make_word_list builtins_rust/pushd/src/lib.rs /^ fn make_word_list(w: *mut WordDesc, l: *mut WordList) -> *mut WordList;$/;" f +make_word_list builtins_rust/setattr/src/intercdep.rs /^ pub fn make_word_list(word: *mut WordDesc, wlink: *mut WordList) -> *mut WordList;$/;" f +make_word_list builtins_rust/shopt/src/lib.rs /^ fn make_word_list(_: *mut WordDesc, _: *mut WordList) -> *mut WordList;$/;" f +make_word_list make_cmd.c /^make_word_list (word, wlink)$/;" f +make_word_list r_bash/src/lib.rs /^ pub fn make_word_list(arg1: *mut WORD_DESC, arg2: *mut WORD_LIST) -> *mut WORD_LIST;$/;" f +makecontext vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs /^ pub fn makecontext(ucp: *mut ucontext_t, func: extern "C" fn(), argc: ::c_int, ...);$/;" f +makecontext vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^ pub fn makecontext(ucp: *mut ::ucontext_t, func: extern "C" fn(), argc: ::c_int, ...);$/;" f +makecontext vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^ pub fn makecontext(ucp: *mut ucontext_t, func: extern "C" fn(), argc: ::c_int, ...);$/;" f +makedev vendor/nix/src/sys/stat.rs /^pub const fn makedev(major: u64, minor: u64) -> dev_t {$/;" f +makefile Makefile.in /^Makefile makefile: config.status $(srcdir)\/Makefile.in$/;" t +makefiles Makefile.in /^Makefiles makefiles: config.status $(srcdir)\/Makefile.in$/;" t +makepath.o lib/sh/Makefile.in /^makepath.o: ${BUILD_DIR}\/config.h$/;" t +makepath.o lib/sh/Makefile.in /^makepath.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +makepath.o lib/sh/Makefile.in /^makepath.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +makepath.o lib/sh/Makefile.in /^makepath.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +makepath.o lib/sh/Makefile.in /^makepath.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +makepath.o lib/sh/Makefile.in /^makepath.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/confty/;" t +makepath.o lib/sh/Makefile.in /^makepath.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +makepath.o lib/sh/Makefile.in /^makepath.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp./;" t +makepath.o lib/sh/Makefile.in /^makepath.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +makepath.o lib/sh/Makefile.in /^makepath.o: makepath.c$/;" t +makeutx vendor/libc/src/unix/solarish/mod.rs /^ pub fn makeutx(ux: *const utmpx) -> *mut utmpx;$/;" f +making_children jobs.c /^making_children ()$/;" f typeref:typename:void +making_children r_bash/src/lib.rs /^ pub fn making_children();$/;" f +making_children r_jobs/src/lib.rs /^pub unsafe extern "C" fn making_children()$/;" f +makunbound r_bash/src/lib.rs /^ pub fn makunbound($/;" f +makunbound variables.c /^makunbound (name, vc)$/;" f +mallctl vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn mallctl($/;" f +mallctlbymib vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn mallctlbymib($/;" f +mallctlnametomib vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn mallctlnametomib($/;" f +mallinfo vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn mallinfo() -> ::mallinfo;$/;" f +mallinfo vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn mallinfo() -> ::mallinfo;$/;" f +mallinfo2 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn mallinfo2() -> ::mallinfo2;$/;" f +malloc lib/malloc/Makefile.in /^malloc: ${MALLOC_OBJS}$/;" t +malloc lib/malloc/alloca.c /^#define malloc /;" d file: +malloc lib/malloc/malloc.c /^malloc (size)$/;" f +malloc r_bash/src/lib.rs /^ pub fn malloc(__size: usize) -> *mut ::std::os::raw::c_void;$/;" f +malloc r_glob/src/lib.rs /^ pub fn malloc(__size: usize) -> *mut ::std::os::raw::c_void;$/;" f +malloc r_readline/src/lib.rs /^ pub fn malloc(__size: usize) -> *mut ::std::os::raw::c_void;$/;" f +malloc vendor/libc/src/fuchsia/mod.rs /^ pub fn malloc(size: size_t) -> *mut c_void;$/;" f +malloc vendor/libc/src/solid/mod.rs /^ pub fn malloc(arg1: size_t) -> *mut c_void;$/;" f +malloc vendor/libc/src/unix/mod.rs /^ pub fn malloc(size: size_t) -> *mut c_void;$/;" f +malloc vendor/libc/src/vxworks/mod.rs /^ pub fn malloc(size: size_t) -> *mut c_void;$/;" f +malloc vendor/libc/src/wasi.rs /^ pub fn malloc(amt: size_t) -> *mut c_void;$/;" f +malloc vendor/libc/src/windows/mod.rs /^ pub fn malloc(size: size_t) -> *mut c_void;$/;" f +malloc xmalloc.h /^#define malloc(/;" d +malloc.o lib/malloc/Makefile.in /^malloc.o: $(BUILD_DIR)\/config.h $(topdir)\/bashtypes.h getpagesize.h$/;" t +malloc.o lib/malloc/Makefile.in /^malloc.o: ${srcdir}\/imalloc.h ${srcdir}\/mstats.h$/;" t +malloc.o lib/malloc/Makefile.in /^malloc.o: ${srcdir}\/table.h ${srcdir}\/watch.h$/;" t +malloc.o lib/malloc/Makefile.in /^malloc.o: ${topdir}\/bashintl.h ${LIBINTL_H} ${BASHINCDIR}\/gettext.h$/;" t +malloc.o lib/malloc/Makefile.in /^malloc.o: malloc.c$/;" t +malloc_bucket_stats lib/malloc/stats.c /^malloc_bucket_stats (size)$/;" f +malloc_conceal vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn malloc_conceal(size: ::size_t) -> *mut ::c_void;$/;" f +malloc_debug_dummy lib/malloc/malloc.c /^malloc_debug_dummy ()$/;" f typeref:typename:void file: +malloc_default_zone vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_default_zone() -> *mut ::malloc_zone_t;$/;" f +malloc_flags lib/malloc/malloc.c /^int malloc_flags = 0; \/* future use *\/$/;" v typeref:typename:int +malloc_free_blocks lib/malloc/malloc.c /^malloc_free_blocks (size)$/;" f +malloc_good_size vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_good_size(size: ::size_t) -> ::size_t;$/;" f +malloc_info vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn malloc_info(options: ::c_int, stream: *mut ::FILE) -> ::c_int;$/;" f +malloc_info vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn malloc_info(options: ::c_int, stream: *mut ::FILE) -> ::c_int;$/;" f +malloc_mmap_threshold lib/malloc/malloc.c /^int malloc_mmap_threshold = MMAP_THRESHOLD;$/;" v typeref:typename:int +malloc_printf vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_printf(format: *const ::c_char, ...);$/;" f +malloc_register lib/malloc/malloc.c /^int malloc_register = 0; \/* future use *\/$/;" v typeref:typename:int +malloc_set_register lib/malloc/table.c /^malloc_set_register(n)$/;" f +malloc_set_trace lib/malloc/trace.c /^malloc_set_trace (n)$/;" f +malloc_set_tracefn lib/malloc/trace.c /^malloc_set_tracefn (s, fn)$/;" f +malloc_set_tracefp lib/malloc/trace.c /^malloc_set_tracefp (fp)$/;" f +malloc_size vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_size(ptr: *const ::c_void) -> ::size_t;$/;" f +malloc_stats lib/malloc/stats.c /^malloc_stats ()$/;" f typeref:struct:_malstats +malloc_stats_print vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn malloc_stats_print($/;" f +malloc_trace lib/malloc/malloc.c /^int malloc_trace = 0; \/* trace allocations and frees to stderr *\/$/;" v typeref:typename:int +malloc_trace_at_exit shell.c /^int malloc_trace_at_exit = 0;$/;" v typeref:typename:int +malloc_trace_bin lib/malloc/trace.c /^malloc_trace_bin (n)$/;" f +malloc_trim vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn malloc_trim(__pad: ::size_t) -> ::c_int;$/;" f +malloc_unwatch lib/malloc/watch.c /^malloc_unwatch (addr)$/;" f +malloc_usable_size lib/malloc/malloc.c /^malloc_usable_size (mem)$/;" f +malloc_usable_size vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn malloc_usable_size(ptr: *const ::c_void) -> ::size_t;$/;" f +malloc_usable_size vendor/libc/src/unix/haiku/mod.rs /^ pub fn malloc_usable_size(ptr: *mut ::c_void) -> ::size_t;$/;" f +malloc_usable_size vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn malloc_usable_size(ptr: *const ::c_void) -> ::size_t;$/;" f +malloc_usable_size vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn malloc_usable_size(ptr: *mut ::c_void) -> ::size_t;$/;" f +malloc_usable_size vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn malloc_usable_size(ptr: *mut ::c_void) -> ::size_t;$/;" f +malloc_usable_size vendor/libc/src/wasi.rs /^ pub fn malloc_usable_size(ptr: *mut c_void) -> size_t;$/;" f +malloc_watch lib/malloc/watch.c /^malloc_watch (addr)$/;" f +malloc_zone_calloc vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_zone_calloc($/;" f +malloc_zone_check vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_zone_check(zone: *mut ::malloc_zone_t) -> ::boolean_t;$/;" f +malloc_zone_free vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_zone_free(zone: *mut ::malloc_zone_t, ptr: *mut ::c_void);$/;" f +malloc_zone_from_ptr vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_zone_from_ptr(ptr: *const ::c_void) -> *mut ::malloc_zone_t;$/;" f +malloc_zone_log vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_zone_log(zone: *mut ::malloc_zone_t, address: *mut ::c_void);$/;" f +malloc_zone_malloc vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_zone_malloc(zone: *mut ::malloc_zone_t, size: ::size_t) -> *mut ::c_void;$/;" f +malloc_zone_print vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_zone_print(zone: *mut ::malloc_zone_t, verbose: ::boolean_t);$/;" f +malloc_zone_print_ptr_info vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_zone_print_ptr_info(ptr: *mut ::c_void);$/;" f +malloc_zone_realloc vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_zone_realloc($/;" f +malloc_zone_statistics vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_zone_statistics(zone: *mut ::malloc_zone_t, stats: *mut malloc_statistics_t);$/;" f +malloc_zone_valloc vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn malloc_zone_valloc(zone: *mut ::malloc_zone_t, size: ::size_t) -> *mut ::c_void;$/;" f +malloced lib/intl/gettextP.h /^ void *malloced;$/;" m struct:loaded_domain typeref:typename:void * +mallocx vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn mallocx(size: ::size_t, flags: ::c_int) -> *mut ::c_void;$/;" f +mallopt vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn mallopt(param: ::c_int, value: ::c_int) -> ::c_int;$/;" f +man1dir Makefile.in /^man1dir = $(mandir)\/$(manpfx)1$/;" m +man1ext Makefile.in /^man1ext = .1$/;" m +man2html$(EXEEXT) support/Makefile.in /^man2html$(EXEEXT): $(OBJ1)$/;" t +man2html.o support/Makefile.in /^man2html.o: man2html.c$/;" t +man3dir Makefile.in /^man3dir = $(mandir)\/$(manpfx)3$/;" m +man3ext Makefile.in /^man3ext = .3$/;" m +mandir Makefile.in /^mandir = @mandir@$/;" m +mandoc_line support/man2html.c /^static int mandoc_line = 0; \/* Signals whether to look for embedded$/;" v typeref:typename:int file: +mangle vendor/autocfg/src/lib.rs /^fn mangle(s: &str) -> String {$/;" f +manidx support/man2html.c /^static char manidx[NULL_TERMINATED(HUGE_STR_MAX)];$/;" v typeref:typename:char[] file: +manpage support/man2html.c /^char *manpage;$/;" v typeref:typename:char * +manpfx Makefile.in /^manpfx = man$/;" m +manual_allow vendor/futures/tests/sink.rs /^fn manual_allow() -> (ManualAllow, Rc) {$/;" f +manual_close_many_times vendor/libloading/tests/functions.rs /^fn manual_close_many_times() {$/;" f +many_threads vendor/futures/tests/future_shared.rs /^fn many_threads() {$/;" f +map lib/readline/bind.c /^ Keymap map;$/;" m struct:name_and_keymap typeref:typename:Keymap file: +map lib/readline/rlprivate.h /^ Keymap map;$/;" m struct:_rl_cmd typeref:typename:Keymap +map r_readline/src/lib.rs /^ pub map: Keymap,$/;" m struct:_rl_cmd +map vendor/elsa/src/index_map.rs /^ map: UnsafeCell>,$/;" m struct:FrozenIndexMap +map vendor/elsa/src/lib.rs /^pub mod map;$/;" n +map vendor/elsa/src/map.rs /^ map: UnsafeCell>,$/;" m struct:FrozenBTreeMap +map vendor/elsa/src/map.rs /^ map: UnsafeCell>,$/;" m struct:FrozenMap +map vendor/elsa/src/sync.rs /^ map: RwLock>,$/;" m struct:FrozenMap +map vendor/futures-util/src/future/future/mod.rs /^ fn map(self, f: F) -> Map$/;" P interface:FutureExt +map vendor/futures-util/src/future/future/mod.rs /^mod map;$/;" n +map vendor/futures-util/src/lock/mutex.rs /^ pub fn map(this: Self, f: F) -> MappedMutexGuard<'a, T, U>$/;" P implementation:MutexGuard +map vendor/futures-util/src/lock/mutex.rs /^ pub fn map(this: Self, f: F) -> MappedMutexGuard<'a, T, V>$/;" P implementation:MappedMutexGuard +map vendor/futures-util/src/stream/stream/mod.rs /^ fn map(self, f: F) -> Map$/;" P interface:StreamExt +map vendor/futures-util/src/stream/stream/mod.rs /^mod map;$/;" n +map vendor/futures/tests_disabled/stream.rs /^fn map() {$/;" f +map vendor/intl-memoizer/src/concurrent.rs /^ map: Mutex,$/;" m struct:IntlLangMemoizer +map vendor/intl-memoizer/src/lib.rs /^ map: HashMap>,$/;" m struct:IntlMemoizer +map vendor/intl-memoizer/src/lib.rs /^ map: RefCell,$/;" m struct:IntlLangMemoizer +map vendor/type-map/src/lib.rs /^ map: Option>>,$/;" m struct:concurrent::TypeMap +map vendor/type-map/src/lib.rs /^ map: Option>>,$/;" m struct:TypeMap +map_addr vendor/once_cell/src/imp_std.rs /^ pub(crate) fn map_addr(ptr: *mut T, f: impl FnOnce(usize) -> usize) -> *mut T$/;" f module:strict +map_err vendor/futures-util/src/future/try_future/mod.rs /^ fn map_err(self, f: F) -> MapErr$/;" P interface:TryFutureExt +map_err vendor/futures-util/src/sink/mod.rs /^mod map_err;$/;" n +map_err vendor/futures-util/src/stream/try_stream/mod.rs /^ fn map_err(self, f: F) -> MapErr$/;" P interface:TryStreamExt +map_err vendor/futures/tests/eager_drop.rs /^fn map_err() {$/;" f +map_err vendor/futures/tests_disabled/stream.rs /^fn map_err() {$/;" f +map_err_fn vendor/futures-util/src/fns.rs /^pub(crate) fn map_err_fn(f: F) -> MapErrFn {$/;" f +map_get vendor/elsa/src/index_map.rs /^ pub fn map_get(&self, k: &Q, f: F) -> Option$/;" P implementation:FrozenIndexMap +map_get vendor/elsa/src/map.rs /^ pub fn map_get(&self, k: &Q, f: F) -> Option$/;" P implementation:FrozenBTreeMap +map_get vendor/elsa/src/map.rs /^ pub fn map_get(&self, k: &Q, f: F) -> Option$/;" P implementation:FrozenMap +map_get vendor/elsa/src/sync.rs /^ pub fn map_get(&self, k: &Q, f: F) -> Option$/;" P implementation:FrozenBTreeMap +map_get vendor/elsa/src/sync.rs /^ pub fn map_get(&self, k: &Q, f: F) -> Option$/;" P implementation:FrozenMap +map_into vendor/futures-util/src/future/future/mod.rs /^ fn map_into(self) -> MapInto$/;" P interface:FutureExt +map_list builtins_rust/cd/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/cd/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/command/src/lib.rs /^ pub map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/command/src/lib.rs /^ pub map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/common/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/common/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/complete/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/complete/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/declare/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/declare/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/fc/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/fc/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/fg_bg/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/fg_bg/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/getopts/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/getopts/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/jobs/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/jobs/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/kill/src/intercdep.rs /^ pub map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/kill/src/intercdep.rs /^ pub map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/pushd/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/pushd/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/setattr/src/intercdep.rs /^ pub map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/setattr/src/intercdep.rs /^ pub map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/source/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/source/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:select_com +map_list builtins_rust/type/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:for_com +map_list builtins_rust/type/src/lib.rs /^ map_list: *mut WordList,$/;" m struct:select_com +map_list command.h /^ WORD_LIST *map_list; \/* The things to map over. This is never NULL. *\/$/;" m struct:for_com typeref:typename:WORD_LIST * +map_list command.h /^ WORD_LIST *map_list; \/* The things to map over. This is never NULL. *\/$/;" m struct:select_com typeref:typename:WORD_LIST * +map_list r_bash/src/lib.rs /^ pub map_list: *mut WORD_LIST,$/;" m struct:for_com +map_list r_bash/src/lib.rs /^ pub map_list: *mut WORD_LIST,$/;" m struct:select_com +map_list r_glob/src/lib.rs /^ pub map_list: *mut WORD_LIST,$/;" m struct:for_com +map_list r_glob/src/lib.rs /^ pub map_list: *mut WORD_LIST,$/;" m struct:select_com +map_list r_readline/src/lib.rs /^ pub map_list: *mut WORD_LIST,$/;" m struct:for_com +map_list r_readline/src/lib.rs /^ pub map_list: *mut WORD_LIST,$/;" m struct:select_com +map_ok vendor/futures-util/src/future/try_future/mod.rs /^ fn map_ok(self, f: F) -> MapOk$/;" P interface:TryFutureExt +map_ok vendor/futures-util/src/stream/try_stream/mod.rs /^ fn map_ok(self, f: F) -> MapOk$/;" P interface:TryStreamExt +map_ok vendor/futures/tests/eager_drop.rs /^fn map_ok() {$/;" f +map_ok_fn vendor/futures-util/src/fns.rs /^pub(crate) fn map_ok_fn(f: F) -> MapOkFn {$/;" f +map_ok_or_else vendor/futures-util/src/future/try_future/mod.rs /^ fn map_ok_or_else(self, e: E, f: F) -> MapOkOrElse$/;" P interface:TryFutureExt +map_ok_or_else_fn vendor/futures-util/src/fns.rs /^pub(crate) fn map_ok_or_else_fn(f: F, g: G) -> MapOkOrElseFn {$/;" f +map_over r_bash/src/lib.rs /^ pub fn map_over(arg1: sh_var_map_func_t, arg2: *mut VAR_CONTEXT) -> *mut *mut SHELL_VAR;$/;" f +map_over variables.c /^map_over (function, vc)$/;" f +map_over_aliases alias.c /^map_over_aliases (function)$/;" f file: +map_over_funcs r_bash/src/lib.rs /^ pub fn map_over_funcs(arg1: sh_var_map_func_t) -> *mut *mut SHELL_VAR;$/;" f +map_over_funcs variables.c /^map_over_funcs (function)$/;" f +map_over_jobs jobs.c /^map_over_jobs (func, arg1, arg2)$/;" f file: +map_over_jobs r_jobs/src/lib.rs /^unsafe extern "C" fn map_over_jobs($/;" f +mapfile builtins_rust/mapfile/src/lib.rs /^unsafe fn mapfile($/;" f +mapfile.o builtins/Makefile.in /^mapfile.o: $(topdir)\/arrayfunc.h ..\/pathnames.h$/;" t +mapfile.o builtins/Makefile.in /^mapfile.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +mapfile.o builtins/Makefile.in /^mapfile.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +mapfile.o builtins/Makefile.in /^mapfile.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +mapfile.o builtins/Makefile.in /^mapfile.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/variables.h $(topdir)\/conftypes.h$/;" t +mapfile.o builtins/Makefile.in /^mapfile.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +mapfile.o builtins/Makefile.in /^mapfile.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +mapfile.o builtins/Makefile.in /^mapfile.o: mapfile.def$/;" t +mark lib/readline/readline.h /^ int mark;$/;" m struct:readline_state typeref:typename:int +mark r_readline/src/lib.rs /^ pub mark: ::std::os::raw::c_int,$/;" m struct:readline_state +mark_active lib/readline/text.c /^static int mark_active = 0;$/;" v typeref:typename:int file: +mark_all_jobs_as_dead jobs.c /^mark_all_jobs_as_dead ()$/;" f typeref:typename:void file: +mark_all_jobs_as_dead r_jobs/src/lib.rs /^unsafe extern "C" fn mark_all_jobs_as_dead() {$/;" f +mark_dead_jobs_as_notified jobs.c /^mark_dead_jobs_as_notified (force)$/;" f file: +mark_dead_jobs_as_notified nojobs.c /^mark_dead_jobs_as_notified (force)$/;" f file: +mark_dead_jobs_as_notified r_jobs/src/lib.rs /^unsafe extern "C" fn mark_dead_jobs_as_notified(mut force: c_int) {$/;" f +mark_modified_vars builtins_rust/set/src/lib.rs /^ static mut mark_modified_vars: i32;$/;" v +mark_modified_vars builtins_rust/shopt/src/lib.rs /^ static mut mark_modified_vars: i32;$/;" v +mark_modified_vars flags.c /^int mark_modified_vars = 0;$/;" v typeref:typename:int +mark_modified_vars r_bash/src/lib.rs /^ pub static mut mark_modified_vars: ::std::os::raw::c_int;$/;" v +marker vendor/async-trait/tests/test.rs /^ marker: PhantomData<&'a ()>,$/;" m struct:issue110::AwsEc2MetadataLoader +marker vendor/futures-util/src/sink/drain.rs /^ marker: PhantomData,$/;" m struct:Drain +marker vendor/nix/src/mount/bsd.rs /^ marker: PhantomData<&'a ()>,$/;" m struct:Nmount +marker vendor/proc-macro2/src/lib.rs /^mod marker;$/;" n +marker vendor/syn/src/buffer.rs /^ marker: PhantomData<&'a Entry>,$/;" m struct:Cursor +marker vendor/syn/src/parse.rs /^ marker: PhantomData>,$/;" m struct:ParseBuffer +marker vendor/syn/src/parse.rs /^ marker: PhantomData) -> Cursor<'a>>,$/;" m struct:StepCursor +marker vendor/type-map/src/lib.rs /^ marker: PhantomData,$/;" m struct:concurrent::OccupiedEntry +marker vendor/type-map/src/lib.rs /^ marker: PhantomData,$/;" m struct:concurrent::VacantEntry +marker vendor/type-map/src/lib.rs /^ marker: PhantomData,$/;" m struct:OccupiedEntry +marker vendor/type-map/src/lib.rs /^ marker: PhantomData,$/;" m struct:VacantEntry +mask vendor/nix/src/sys/inotify.rs /^ pub mask: AddWatchFlags,$/;" m struct:InotifyEvent +master vendor/nix/src/pty.rs /^ pub master: RawFd,$/;" m struct:OpenptyResult +match_ignore_case builtins_rust/shopt/src/lib.rs /^ static mut match_ignore_case: i32;$/;" v +match_ignore_case execute_cmd.c /^int match_ignore_case = 0;$/;" v typeref:typename:int +match_ignore_case r_bash/src/lib.rs /^ pub static mut match_ignore_case: ::std::os::raw::c_int;$/;" v +match_pattern subst.c /^match_pattern (string, pat, mtype, sp, ep)$/;" f file: +match_pattern_char r_bash/src/lib.rs /^ pub fn match_pattern_char($/;" f +match_pattern_wchar r_bash/src/lib.rs /^ pub fn match_pattern_wchar($/;" f +match_upattern subst.c /^match_upattern (string, pat, mtype, sp, ep)$/;" f file: +match_wpattern subst.c /^match_wpattern (wstring, indices, wstrlen, wpat, mtype, sp, ep)$/;" f file: +matched vendor/memchr/src/memchr/x86/avx.rs /^ unsafe fn matched($/;" f function:memchr +matched vendor/memchr/src/memchr/x86/avx.rs /^ unsafe fn matched($/;" f function:memchr2 +matched vendor/memchr/src/memchr/x86/avx.rs /^ unsafe fn matched($/;" f function:memchr3 +matched vendor/memchr/src/memmem/genericsimd.rs /^fn matched(start_ptr: *const u8, ptr: *const u8, chunki: usize) -> usize {$/;" f +matched vendor/memchr/src/memmem/prefilter/genericsimd.rs /^fn matched($/;" f +matches vendor/fluent-bundle/src/types/mod.rs /^ pub fn matches, M>($/;" P implementation:FluentValue +matches vendor/unic-langid-impl/src/lib.rs /^ pub fn matches>($/;" P implementation:LanguageIdentifier +matches vendor/unic-langid-impl/src/subtags/language.rs /^ pub fn matches>($/;" P implementation:Language +matches_naive vendor/memchr/src/memmem/mod.rs /^ pub(crate) fn matches_naive($/;" f module:proptests +math builtins_rust/type/src/lib.rs /^pub fn math(op: fn(i32, i32) -> i32, a: i32, b: i32) -> i32 {$/;" f +max input.c /^#define max(/;" d file: +max lib/sh/strftime.c /^max(int a, int b)$/;" f typeref:typename:int file: +max_depth vendor/async-trait/tests/test.rs /^ max_depth: AtomicU64,$/;" m struct:issue45::SubscriberInner +max_index array.h /^ arrayind_t max_index;$/;" m struct:array typeref:typename:arrayind_t +max_index builtins_rust/mapfile/src/intercdep.rs /^ pub max_index: arrayind_t,$/;" m struct:array +max_index builtins_rust/read/src/intercdep.rs /^ pub max_index: arrayind_t,$/;" m struct:array +max_index r_bash/src/lib.rs /^ pub max_index: arrayind_t,$/;" m struct:array +max_index r_glob/src/lib.rs /^ pub max_index: arrayind_t,$/;" m struct:array +max_index r_readline/src/lib.rs /^ pub max_index: arrayind_t,$/;" m struct:array +max_input_history lib/readline/history.c /^int max_input_history; \/* backwards compatibility *\/$/;" v typeref:typename:int +max_input_history r_readline/src/lib.rs /^ pub static mut max_input_history: ::std::os::raw::c_int;$/;" v +max_rss vendor/nix/src/sys/resource.rs /^ pub fn max_rss(&self) -> c_long {$/;" P implementation:Usage +max_senders vendor/futures-channel/src/mpsc/mod.rs /^ fn max_senders(&self) -> usize {$/;" P implementation:BoundedInner +max_span_id vendor/async-trait/tests/test.rs /^ max_span_id: AtomicU64,$/;" m struct:issue45::SubscriberInner +maxbuck lib/malloc/malloc.c /^static int maxbuck; \/* highest bucket receiving allocation request. *\/$/;" v typeref:typename:int file: +maxc lib/malloc/alloca.c /^ long maxc; \/* Amount of contiguous space which would$/;" m struct:stk_stat typeref:typename:long file: +maxerror r_bash/src/lib.rs /^ pub maxerror: __syscall_slong_t,$/;" m struct:timex +maxerror r_readline/src/lib.rs /^ pub maxerror: __syscall_slong_t,$/;" m struct:timex +maxgroups general.c /^static int ngroups, maxgroups;$/;" v typeref:typename:int file: +maximize vendor/fluent-langneg/src/negotiate/likely_subtags.rs /^ fn maximize(&mut self) -> bool {$/;" P implementation:LanguageIdentifier +maximize vendor/fluent-langneg/src/negotiate/likely_subtags.rs /^ fn maximize(&mut self) -> bool;$/;" P interface:MockLikelySubtags +maximize vendor/unic-langid-impl/src/lib.rs /^ pub fn maximize(&mut self) -> bool {$/;" P implementation:LanguageIdentifier +maximize vendor/unic-langid-impl/src/likelysubtags/mod.rs /^pub fn maximize($/;" f +maximize_bench vendor/unic-langid-impl/benches/likely_subtags.rs /^fn maximize_bench(c: &mut Criterion) {$/;" f +maximum_fraction_digits vendor/fluent-bundle/src/types/number.rs /^ pub maximum_fraction_digits: Option,$/;" m struct:FluentNumberOptions +maximum_name_length vendor/nix/src/sys/statfs.rs /^ pub fn maximum_name_length(&self) -> libc::__fsword_t {$/;" P implementation:Statfs +maximum_name_length vendor/nix/src/sys/statfs.rs /^ pub fn maximum_name_length(&self) -> libc::c_int {$/;" P implementation:Statfs +maximum_name_length vendor/nix/src/sys/statfs.rs /^ pub fn maximum_name_length(&self) -> libc::c_ulong {$/;" P implementation:Statfs +maximum_name_length vendor/nix/src/sys/statfs.rs /^ pub fn maximum_name_length(&self) -> u32 {$/;" P implementation:Statfs +maximum_significant_digits vendor/fluent-bundle/src/types/number.rs /^ pub maximum_significant_digits: Option,$/;" m struct:FluentNumberOptions +maxmap lib/intl/localealias.c /^static size_t maxmap;$/;" v typeref:typename:size_t file: +maxmsg vendor/nix/src/mqueue.rs /^ pub const fn maxmsg(&self) -> mq_attr_member_t {$/;" P implementation:MqAttr +maxpath_param_h include/maxpath.h /^# define maxpath_param_h$/;" d +maxquad include/typemax.h /^static const unsigned long long int maxquad = ULLONG_MAX;$/;" v typeref:typename:const unsigned long long int +maxs lib/malloc/alloca.c /^ long maxs; \/* Maximum number of stack segments so far. *\/$/;" m struct:stk_stat typeref:typename:long file: +maxtstop support/man2html.c /^static int maxtstop = 12;$/;" v typeref:typename:int file: +maybe-clean Makefile.in /^maybe-clean:$/;" t +maybe_add_history bashhist.c /^maybe_add_history (line)$/;" f +maybe_add_history builtins_rust/fc/src/lib.rs /^ fn maybe_add_history(line: *mut c_char);$/;" f +maybe_add_history r_bash/src/lib.rs /^ pub fn maybe_add_history(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_add_history r_bashhist/src/lib.rs /^pub unsafe extern "C" fn maybe_add_history(mut line: *mut c_char) {$/;" f +maybe_append_history bashhist.c /^maybe_append_history (filename)$/;" f +maybe_append_history builtins_rust/history/src/intercdep.rs /^ pub fn maybe_append_history(filename: *mut c_char) -> c_int;$/;" f +maybe_append_history r_bash/src/lib.rs /^ pub fn maybe_append_history(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +maybe_append_history r_bashhist/src/lib.rs /^pub unsafe extern "C" fn maybe_append_history(mut filename: *mut c_char) -> c_int $/;" f +maybe_call_trap_handler r_bash/src/lib.rs /^ pub fn maybe_call_trap_handler(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +maybe_call_trap_handler r_glob/src/lib.rs /^ pub fn maybe_call_trap_handler(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +maybe_call_trap_handler r_jobs/src/lib.rs /^ fn maybe_call_trap_handler(_: c_int) -> c_int;$/;" f +maybe_call_trap_handler r_readline/src/lib.rs /^ pub fn maybe_call_trap_handler(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +maybe_call_trap_handler trap.c /^maybe_call_trap_handler (sig)$/;" f +maybe_done vendor/futures-util/src/future/maybe_done.rs /^pub fn maybe_done(future: Fut) -> MaybeDone {$/;" f +maybe_done vendor/futures-util/src/future/mod.rs /^mod maybe_done;$/;" n +maybe_execute_file builtins/evalfile.c /^maybe_execute_file (fname, force_noninteractive)$/;" f +maybe_execute_file builtins_rust/exit/src/lib.rs /^ fn maybe_execute_file(fname: *const c_char, force_noninteractive: i32) -> i32;$/;" f +maybe_execute_file r_bash/src/lib.rs /^ pub fn maybe_execute_file($/;" f +maybe_give_terminal_to jobs.c /^maybe_give_terminal_to (opgrp, npgrp, flags)$/;" f file: +maybe_give_terminal_to r_jobs/src/lib.rs /^unsafe extern "C" fn maybe_give_terminal_to(mut opgrp: pid_t, mut npgrp: pid_t, mut flags: c_int/;" f +maybe_make_export_env builtins_rust/exec/src/lib.rs /^ fn maybe_make_export_env();$/;" f +maybe_make_export_env r_bash/src/lib.rs /^ pub fn maybe_make_export_env();$/;" f +maybe_make_export_env variables.c /^maybe_make_export_env ()$/;" f typeref:typename:void +maybe_make_readline_line bashline.c /^maybe_make_readline_line (new_line)$/;" f file: +maybe_make_restricted r_bash/src/lib.rs /^ pub fn maybe_make_restricted(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +maybe_make_restricted shell.c /^maybe_make_restricted (name)$/;" f +maybe_parked vendor/futures-channel/src/mpsc/mod.rs /^ maybe_parked: bool,$/;" m struct:BoundedSenderInner +maybe_pending vendor/futures/tests/io_buf_reader.rs /^fn maybe_pending() {$/;" f +maybe_pending vendor/futures/tests/io_lines.rs /^fn maybe_pending() {$/;" f +maybe_pending vendor/futures/tests/io_read_line.rs /^fn maybe_pending() {$/;" f +maybe_pending vendor/futures/tests/io_read_until.rs /^fn maybe_pending() {$/;" f +maybe_pending_buf_read vendor/futures/tests/io_buf_reader.rs /^fn maybe_pending_buf_read() {$/;" f +maybe_pending_buf_writer vendor/futures/tests/io_buf_writer.rs /^fn maybe_pending_buf_writer() {$/;" f +maybe_pending_buf_writer_inner_flushes vendor/futures/tests/io_buf_writer.rs /^fn maybe_pending_buf_writer_inner_flushes() {$/;" f +maybe_pending_buf_writer_seek vendor/futures/tests/io_buf_writer.rs /^fn maybe_pending_buf_writer_seek() {$/;" f +maybe_pending_seek vendor/futures/tests/io_buf_reader.rs /^fn maybe_pending_seek() {$/;" f +maybe_replace_line lib/readline/compat.c /^maybe_replace_line (void)$/;" f typeref:typename:int +maybe_restore_getopt_state execute_cmd.c /^maybe_restore_getopt_state (gs)$/;" f file: +maybe_restore_tilde bashline.c /^maybe_restore_tilde (val, directory_part)$/;" f file: +maybe_save_line lib/readline/compat.c /^maybe_save_line (void)$/;" f typeref:typename:int +maybe_save_shell_history bashhist.c /^maybe_save_shell_history ()$/;" f typeref:typename:int +maybe_save_shell_history builtins_rust/exec/src/lib.rs /^ fn maybe_save_shell_history() -> i32;$/;" f +maybe_save_shell_history r_bash/src/lib.rs /^ pub fn maybe_save_shell_history() -> ::std::os::raw::c_int;$/;" f +maybe_save_shell_history r_bashhist/src/lib.rs /^pub unsafe extern "C" fn maybe_save_shell_history() -> c_int {$/;" f +maybe_set_debug_trap builtins_rust/source/src/lib.rs /^ fn maybe_set_debug_trap(str: *mut c_char);$/;" f +maybe_set_debug_trap r_bash/src/lib.rs /^ pub fn maybe_set_debug_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_set_debug_trap r_glob/src/lib.rs /^ pub fn maybe_set_debug_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_set_debug_trap r_readline/src/lib.rs /^ pub fn maybe_set_debug_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_set_debug_trap trap.c /^maybe_set_debug_trap (command)$/;" f +maybe_set_error_trap r_bash/src/lib.rs /^ pub fn maybe_set_error_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_set_error_trap r_glob/src/lib.rs /^ pub fn maybe_set_error_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_set_error_trap r_readline/src/lib.rs /^ pub fn maybe_set_error_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_set_error_trap trap.c /^maybe_set_error_trap (command)$/;" f +maybe_set_return_trap r_bash/src/lib.rs /^ pub fn maybe_set_return_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_set_return_trap r_glob/src/lib.rs /^ pub fn maybe_set_return_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_set_return_trap r_readline/src/lib.rs /^ pub fn maybe_set_return_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_set_return_trap trap.c /^maybe_set_return_trap (command)$/;" f +maybe_set_sigchld_trap r_bash/src/lib.rs /^ pub fn maybe_set_sigchld_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_set_sigchld_trap r_glob/src/lib.rs /^ pub fn maybe_set_sigchld_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_set_sigchld_trap r_jobs/src/lib.rs /^ fn maybe_set_sigchld_trap(_: *mut c_char);$/;" f +maybe_set_sigchld_trap r_readline/src/lib.rs /^ pub fn maybe_set_sigchld_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +maybe_set_sigchld_trap trap.c /^maybe_set_sigchld_trap (command_string)$/;" f +maybe_track vendor/fluent-bundle/src/resolver/scope.rs /^ pub fn maybe_track($/;" P implementation:Scope +maybe_unsave_line lib/readline/compat.c /^maybe_unsave_line (void)$/;" f typeref:typename:int +maybe_variadic_to_tokens vendor/syn/src/item.rs /^ fn maybe_variadic_to_tokens(arg: &FnArg, tokens: &mut TokenStream) -> bool {$/;" f module:printing +maybe_wrap_else vendor/syn/src/expr.rs /^ fn maybe_wrap_else(tokens: &mut TokenStream, else_: &Option<(Token![else], Box)>) {$/;" f module:printing +mb lib/readline/rlprivate.h /^ char mb[MB_LEN_MAX];$/;" m struct:__rl_search_context typeref:typename:char[] +mb r_readline/src/lib.rs /^ pub mb: [::std::os::raw::c_char; 16usize],$/;" m struct:__rl_search_context +mb_getcharlens subst.c /^mb_getcharlens (string, len)$/;" f file: +mb_substring subst.c /^mb_substring (string, s, e)$/;" f file: +mblen r_bash/src/lib.rs /^ pub fn mblen(__s: *const ::std::os::raw::c_char, __n: usize) -> ::std::os::raw::c_int;$/;" f +mblen r_glob/src/lib.rs /^ pub fn mblen(__s: *const ::std::os::raw::c_char, __n: usize) -> ::std::os::raw::c_int;$/;" f +mblen r_print_cmd/src/lib.rs /^ fn mblen(s:*const c_char, n:size_t)->c_int;$/;" f +mblen r_readline/src/lib.rs /^ pub fn mblen(__s: *const ::std::os::raw::c_char, __n: usize) -> ::std::os::raw::c_int;$/;" f +mblen vendor/libc/src/solid/mod.rs /^ pub fn mblen(arg1: *const c_char, arg2: size_t) -> c_int;$/;" f +mblen_l vendor/libc/src/solid/mod.rs /^ pub fn mblen_l(arg1: *const c_char, arg2: size_t, arg3: locale_t) -> c_int;$/;" f +mbrlen builtins_rust/read/src/intercdep.rs /^ pub fn mbrlen(mbstr: *const c_char, count: size_t, mbstate: *mut mbstate_t) -> c_int;$/;" f +mbrlen config-bot.h /^# define mbrlen(/;" d +mbrlen lib/readline/rlmbutil.h /^# define mbrlen(/;" d +mbrlen r_bash/src/lib.rs /^ pub fn mbrlen(__s: *const ::std::os::raw::c_char, __n: usize, __ps: *mut mbstate_t) -> usize/;" f +mbrlen r_glob/src/lib.rs /^ pub fn mbrlen(__s: *const ::std::os::raw::c_char, __n: usize, __ps: *mut mbstate_t) -> usize/;" f +mbrlen r_readline/src/lib.rs /^ pub fn mbrlen(__s: *const ::std::os::raw::c_char, __n: usize, __ps: *mut mbstate_t) -> usize/;" f +mbrtowc builtins_rust/read/src/intercdep.rs /^ pub fn mbrtowc(pwc: *mut libc::wchar_t, s: *mut c_char, n: libc::size_t, ps: *mut mbstate_t)/;" f +mbrtowc config-bot.h /^# define mbrtowc(/;" d +mbrtowc lib/readline/rlmbutil.h /^# define mbrtowc(/;" d +mbrtowc r_bash/src/lib.rs /^ pub fn mbrtowc($/;" f +mbrtowc r_glob/src/lib.rs /^ pub fn mbrtowc($/;" f +mbrtowc r_readline/src/lib.rs /^ pub fn mbrtowc($/;" f +mbscasecmp lib/sh/mbscasecmp.c /^mbscasecmp (mbs1, mbs2)$/;" f +mbscasecmp r_bash/src/lib.rs /^ pub fn mbscasecmp($/;" f +mbscasecmp.o lib/sh/Makefile.in /^mbscasecmp.o: ${BASHINCDIR}\/stdc.h$/;" t +mbscasecmp.o lib/sh/Makefile.in /^mbscasecmp.o: ${BUILD_DIR}\/config.h$/;" t +mbscasecmp.o lib/sh/Makefile.in /^mbscasecmp.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +mbscasecmp.o lib/sh/Makefile.in /^mbscasecmp.o: ${topdir}\/xmalloc.h$/;" t +mbscasecmp.o lib/sh/Makefile.in /^mbscasecmp.o: mbscasecmp.c$/;" t +mbschr lib/sh/mbschr.c /^mbschr (const char *s, int c)$/;" f typeref:typename:char * +mbschr r_bash/src/lib.rs /^ pub fn mbschr($/;" f +mbschr r_bashhist/src/lib.rs /^ fn mbschr(_: *const c_char, _: c_int) -> *mut c_char;$/;" f +mbschr.o lib/sh/Makefile.in /^mbschr.o: ${BASHINCDIR}\/ansi_stdlib.h$/;" t +mbschr.o lib/sh/Makefile.in /^mbschr.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +mbschr.o lib/sh/Makefile.in /^mbschr.o: ${BUILD_DIR}\/config.h$/;" t +mbschr.o lib/sh/Makefile.in /^mbschr.o: ${topdir}\/bashansi.h$/;" t +mbschr.o lib/sh/Makefile.in /^mbschr.o: mbschr.c$/;" t +mbscmp lib/sh/mbscmp.c /^mbscmp (mbs1, mbs2)$/;" f +mbscmp r_bash/src/lib.rs /^ pub fn mbscmp($/;" f +mbscmp.o lib/sh/Makefile.in /^mbscmp.o: ${BASHINCDIR}\/stdc.h$/;" t +mbscmp.o lib/sh/Makefile.in /^mbscmp.o: ${BUILD_DIR}\/config.h$/;" t +mbscmp.o lib/sh/Makefile.in /^mbscmp.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +mbscmp.o lib/sh/Makefile.in /^mbscmp.o: ${topdir}\/xmalloc.h$/;" t +mbscmp.o lib/sh/Makefile.in /^mbscmp.o: mbscmp.c$/;" t +mbsinit r_bash/src/lib.rs /^ pub fn mbsinit(__ps: *const mbstate_t) -> ::std::os::raw::c_int;$/;" f +mbsinit r_glob/src/lib.rs /^ pub fn mbsinit(__ps: *const mbstate_t) -> ::std::os::raw::c_int;$/;" f +mbsinit r_readline/src/lib.rs /^ pub fn mbsinit(__ps: *const mbstate_t) -> ::std::os::raw::c_int;$/;" f +mbskipname lib/glob/glob.c /^mbskipname (pat, dname, flags)$/;" f file: +mbsmbchar lib/sh/shmbchar.c /^mbsmbchar (s)$/;" f +mbsmbchar r_bash/src/lib.rs /^ pub fn mbsmbchar(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +mbsnrtowcs r_bash/src/lib.rs /^ pub fn mbsnrtowcs($/;" f +mbsnrtowcs r_glob/src/lib.rs /^ pub fn mbsnrtowcs($/;" f +mbsnrtowcs r_readline/src/lib.rs /^ pub fn mbsnrtowcs($/;" f +mbsrtowcs config-bot.h /^# define mbsrtowcs(/;" d +mbsrtowcs lib/readline/rlmbutil.h /^# define mbsrtowcs(/;" d +mbsrtowcs r_bash/src/lib.rs /^ pub fn mbsrtowcs($/;" f +mbsrtowcs r_glob/src/lib.rs /^ pub fn mbsrtowcs($/;" f +mbsrtowcs r_readline/src/lib.rs /^ pub fn mbsrtowcs($/;" f +mbstate_t builtins_rust/printf/src/intercdep.rs /^pub type mbstate_t = __mbstate_t;$/;" t +mbstate_t builtins_rust/read/src/intercdep.rs /^pub type mbstate_t = __mbstate_t;$/;" t +mbstate_t config-bot.h /^# define mbstate_t /;" d +mbstate_t lib/readline/rlmbutil.h /^# define mbstate_t /;" d +mbstate_t r_bash/src/lib.rs /^pub type mbstate_t = __mbstate_t;$/;" t +mbstate_t r_glob/src/lib.rs /^pub type mbstate_t = __mbstate_t;$/;" t +mbstate_t r_readline/src/lib.rs /^pub type mbstate_t = __mbstate_t;$/;" t +mbstowcs r_bash/src/lib.rs /^ pub fn mbstowcs(__pwcs: *mut wchar_t, __s: *const ::std::os::raw::c_char, __n: usize) -> usi/;" f +mbstowcs r_glob/src/lib.rs /^ pub fn mbstowcs(__pwcs: *mut wchar_t, __s: *const ::std::os::raw::c_char, __n: usize) -> usi/;" f +mbstowcs r_readline/src/lib.rs /^ pub fn mbstowcs(__pwcs: *mut wchar_t, __s: *const ::std::os::raw::c_char, __n: usize) -> usi/;" f +mbstowcs vendor/libc/src/solid/mod.rs /^ pub fn mbstowcs(arg1: *mut wchar_t, arg2: *const c_char, arg3: size_t) -> size_t;$/;" f +mbstowcs_l vendor/libc/src/solid/mod.rs /^ pub fn mbstowcs_l($/;" f +mbstrlen lib/sh/shmbchar.c /^mbstrlen (s)$/;" f +mbstrlen r_bash/src/lib.rs /^ pub fn mbstrlen(arg1: *const ::std::os::raw::c_char) -> usize;$/;" f +mbtowc builtins_rust/printf/src/intercdep.rs /^ pub fn mbtowc(pwc: *mut libc::wchar_t, s: *const c_char, n: size_t) -> size_t;$/;" f +mbtowc r_bash/src/lib.rs /^ pub fn mbtowc($/;" f +mbtowc r_glob/src/lib.rs /^ pub fn mbtowc($/;" f +mbtowc r_readline/src/lib.rs /^ pub fn mbtowc($/;" f +mbtowc vendor/libc/src/solid/mod.rs /^ pub fn mbtowc(arg1: *mut wchar_t, arg2: *const c_char, arg3: size_t) -> c_int;$/;" f +mbtowc_l vendor/libc/src/solid/mod.rs /^ pub fn mbtowc_l(arg1: *mut wchar_t, arg2: *const c_char, arg3: size_t, arg4: locale_t)$/;" f +mbutil.o lib/readline/Makefile.in /^mbutil.o: mbutil.c$/;" t +mbutil.o lib/readline/Makefile.in /^mbutil.o: readline.h keymaps.h rltypedefs.h chardefs.h rlstdc.h$/;" t +mbutil.o lib/readline/Makefile.in /^mbutil.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h rlmbutil.h$/;" t +mbutil.o lib/readline/Makefile.in /^mbutil.o: rlmbutil.h$/;" t +mbutil.o lib/readline/Makefile.in /^mbutil.o: rlprivate.h$/;" t +mbutil.o lib/readline/Makefile.in /^mbutil.o: xmalloc.h$/;" t +mcontext_t builtins_rust/wait/src/signal.rs /^pub struct mcontext_t {$/;" s +mcontext_t r_bash/src/lib.rs /^pub struct mcontext_t {$/;" s +mcontext_t r_glob/src/lib.rs /^pub struct mcontext_t {$/;" s +mcontext_t r_readline/src/lib.rs /^pub struct mcontext_t {$/;" s +mcontext_t vendor/libc/src/unix/bsd/apple/b64/aarch64/align.rs /^pub type mcontext_t = *mut __darwin_mcontext64;$/;" t +mcontext_t vendor/libc/src/unix/bsd/apple/b64/x86_64/mod.rs /^pub type mcontext_t = *mut __darwin_mcontext64;$/;" t +mcontext_t vendor/libc/src/unix/linux_like/android/b32/arm.rs /^pub type mcontext_t = sigcontext;$/;" t +mem lib/malloc/table.h /^ PTR_T mem;$/;" m struct:mr_table typeref:typename:PTR_T +mem-scramble configure.ac /^AC_ARG_ENABLE(mem-scramble, AC_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to/;" e +mem_blocks_t vendor/nix/src/sys/sysinfo.rs /^type mem_blocks_t = libc::c_ulong;$/;" t +mem_blocks_t vendor/nix/src/sys/sysinfo.rs /^type mem_blocks_t = u64;$/;" t +mem_entry_name_port_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type mem_entry_name_port_t = ::mach_port_t;$/;" t +mem_overflow lib/malloc/table.c /^static mr_table_t mem_overflow;$/;" v typeref:typename:mr_table_t file: +mem_table lib/malloc/table.c /^static mr_table_t mem_table[REG_TABLE_SIZE];$/;" v typeref:typename:mr_table_t[] file: +memalign lib/malloc/malloc.c /^memalign (alignment, size)$/;" f +memalign vendor/libc/src/fuchsia/mod.rs /^ pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +memalign vendor/libc/src/solid/mod.rs /^ pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +memalign vendor/libc/src/unix/haiku/mod.rs /^ pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +memalign vendor/libc/src/unix/hermit/mod.rs /^ pub fn memalign(align: ::size_t, nbytes: ::size_t) -> *mut ::c_void;$/;" f +memalign vendor/libc/src/unix/linux_like/mod.rs /^ pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +memalign vendor/libc/src/unix/newlib/mod.rs /^ pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +memalign vendor/libc/src/unix/redox/mod.rs /^ pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +memalign vendor/libc/src/unix/solarish/mod.rs /^ pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +memalign vendor/libc/src/vxworks/mod.rs /^ pub fn memalign(block_size: ::size_t, size_arg: ::size_t) -> *mut ::c_void;$/;" f +member builtins_rust/umask/src/lib.rs /^unsafe fn member(c: *mut c_char, s: *mut c_char) -> bool {$/;" f +member general.h /^# define member(/;" d +member lib/readline/histlib.h /^#define member(/;" d +member lib/readline/vi_mode.c /^#define member(/;" d file: +member r_bashhist/src/lib.rs /^unsafe extern "C" fn member(c:i32, s:*const c_char) -> bool$/;" f +member vendor/thiserror-impl/src/ast.rs /^ pub member: Member,$/;" m struct:Field +memccpy r_bash/src/lib.rs /^ pub fn memccpy($/;" f +memccpy r_glob/src/lib.rs /^ pub fn memccpy($/;" f +memccpy r_readline/src/lib.rs /^ pub fn memccpy($/;" f +memccpy vendor/libc/src/solid/mod.rs /^ pub fn memccpy($/;" f +memccpy vendor/libc/src/windows/msvc/mod.rs /^ pub fn memccpy($/;" f +memchr r_bash/src/lib.rs /^ pub fn memchr($/;" f +memchr r_glob/src/lib.rs /^ pub fn memchr($/;" f +memchr r_readline/src/lib.rs /^ pub fn memchr($/;" f +memchr vendor/libc/src/fuchsia/mod.rs /^ pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void;$/;" f +memchr vendor/libc/src/solid/mod.rs /^ pub fn memchr(arg1: *const c_void, arg2: c_int, arg3: size_t) -> *mut c_void;$/;" f +memchr vendor/libc/src/unix/mod.rs /^ pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void;$/;" f +memchr vendor/libc/src/vxworks/mod.rs /^ pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void;$/;" f +memchr vendor/libc/src/wasi.rs /^ pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void;$/;" f +memchr vendor/libc/src/windows/mod.rs /^ pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void;$/;" f +memchr vendor/memchr/README.md /^memchr$/;" c +memchr vendor/memchr/src/lib.rs /^mod memchr;$/;" n +memchr vendor/memchr/src/memchr/c.rs /^pub fn memchr(needle: u8, haystack: &[u8]) -> Option {$/;" f +memchr vendor/memchr/src/memchr/fallback.rs /^pub fn memchr(n1: u8, haystack: &[u8]) -> Option {$/;" f +memchr vendor/memchr/src/memchr/mod.rs /^pub fn memchr(needle: u8, haystack: &[u8]) -> Option {$/;" f +memchr vendor/memchr/src/memchr/naive.rs /^pub fn memchr(n1: u8, haystack: &[u8]) -> Option {$/;" f +memchr vendor/memchr/src/memchr/x86/avx.rs /^pub unsafe fn memchr(n1: u8, haystack: &[u8]) -> Option {$/;" f +memchr vendor/memchr/src/memchr/x86/mod.rs /^pub fn memchr(n1: u8, haystack: &[u8]) -> Option {$/;" f +memchr vendor/memchr/src/memchr/x86/sse2.rs /^pub unsafe fn memchr(n1: u8, haystack: &[u8]) -> Option {$/;" f +memchr vendor/memchr/src/tests/memchr/mod.rs /^mod memchr;$/;" n +memchr vendor/memchr/src/tests/mod.rs /^mod memchr;$/;" n +memchr1_fallback_find vendor/memchr/src/tests/memchr/memchr.rs /^fn memchr1_fallback_find() {$/;" f +memchr1_find vendor/memchr/src/tests/memchr/memchr.rs /^fn memchr1_find() {$/;" f +memchr1_iter vendor/memchr/src/tests/memchr/iter.rs /^fn memchr1_iter() {$/;" f +memchr2 vendor/memchr/src/memchr/fallback.rs /^pub fn memchr2(n1: u8, n2: u8, haystack: &[u8]) -> Option {$/;" f +memchr2 vendor/memchr/src/memchr/mod.rs /^pub fn memchr2(needle1: u8, needle2: u8, haystack: &[u8]) -> Option {$/;" f +memchr2 vendor/memchr/src/memchr/naive.rs /^pub fn memchr2(n1: u8, n2: u8, haystack: &[u8]) -> Option {$/;" f +memchr2 vendor/memchr/src/memchr/x86/avx.rs /^pub unsafe fn memchr2(n1: u8, n2: u8, haystack: &[u8]) -> Option {$/;" f +memchr2 vendor/memchr/src/memchr/x86/mod.rs /^pub fn memchr2(n1: u8, n2: u8, haystack: &[u8]) -> Option {$/;" f +memchr2 vendor/memchr/src/memchr/x86/sse2.rs /^pub unsafe fn memchr2(n1: u8, n2: u8, haystack: &[u8]) -> Option {$/;" f +memchr2_fallback_find vendor/memchr/src/tests/memchr/memchr.rs /^fn memchr2_fallback_find() {$/;" f +memchr2_find vendor/memchr/src/tests/memchr/memchr.rs /^fn memchr2_find() {$/;" f +memchr2_iter vendor/memchr/src/memchr/mod.rs /^pub fn memchr2_iter(needle1: u8, needle2: u8, haystack: &[u8]) -> Memchr2<'_> {$/;" f +memchr2_iter vendor/memchr/src/tests/memchr/iter.rs /^fn memchr2_iter() {$/;" f +memchr3 vendor/memchr/src/memchr/fallback.rs /^pub fn memchr3(n1: u8, n2: u8, n3: u8, haystack: &[u8]) -> Option {$/;" f +memchr3 vendor/memchr/src/memchr/mod.rs /^pub fn memchr3($/;" f +memchr3 vendor/memchr/src/memchr/naive.rs /^pub fn memchr3(n1: u8, n2: u8, n3: u8, haystack: &[u8]) -> Option {$/;" f +memchr3 vendor/memchr/src/memchr/x86/avx.rs /^pub unsafe fn memchr3($/;" f +memchr3 vendor/memchr/src/memchr/x86/mod.rs /^pub fn memchr3(n1: u8, n2: u8, n3: u8, haystack: &[u8]) -> Option {$/;" f +memchr3 vendor/memchr/src/memchr/x86/sse2.rs /^pub unsafe fn memchr3($/;" f +memchr3 vendor/memchr/src/memchr/x86/sse42.rs /^pub unsafe fn memchr3($/;" f +memchr3_fallback_find vendor/memchr/src/tests/memchr/memchr.rs /^fn memchr3_fallback_find() {$/;" f +memchr3_find vendor/memchr/src/tests/memchr/memchr.rs /^fn memchr3_find() {$/;" f +memchr3_iter vendor/memchr/src/memchr/mod.rs /^pub fn memchr3_iter($/;" f +memchr3_iter vendor/memchr/src/tests/memchr/iter.rs /^fn memchr3_iter() {$/;" f +memchr_iter vendor/memchr/src/memchr/mod.rs /^pub fn memchr_iter(needle: u8, haystack: &[u8]) -> Memchr<'_> {$/;" f +memchr_tests vendor/memchr/src/tests/memchr/testdata.rs /^pub fn memchr_tests() -> Vec {$/;" f +memcmp r_bash/src/lib.rs /^ pub fn memcmp($/;" f +memcmp r_glob/src/lib.rs /^ pub fn memcmp($/;" f +memcmp r_readline/src/lib.rs /^ pub fn memcmp($/;" f +memcmp vendor/libc/src/fuchsia/mod.rs /^ pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int;$/;" f +memcmp vendor/libc/src/solid/mod.rs /^ pub fn memcmp(arg1: *const c_void, arg2: *const c_void, arg3: size_t) -> c_int;$/;" f +memcmp vendor/libc/src/unix/mod.rs /^ pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int;$/;" f +memcmp vendor/libc/src/vxworks/mod.rs /^ pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int;$/;" f +memcmp vendor/libc/src/wasi.rs /^ pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int;$/;" f +memcmp vendor/libc/src/windows/mod.rs /^ pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int;$/;" f +memcmp vendor/memchr/src/memmem/util.rs /^pub(crate) fn memcmp(x: &[u8], y: &[u8]) -> bool {$/;" f +memcpy r_bash/src/lib.rs /^ pub fn memcpy($/;" f +memcpy r_glob/src/lib.rs /^ pub fn memcpy($/;" f +memcpy r_readline/src/lib.rs /^ pub fn memcpy($/;" f +memcpy vendor/libc/src/fuchsia/mod.rs /^ pub fn memcpy(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;$/;" f +memcpy vendor/libc/src/solid/mod.rs /^ pub fn memcpy(arg1: *mut c_void, arg2: *const c_void, arg3: size_t) -> *mut c_void;$/;" f +memcpy vendor/libc/src/unix/mod.rs /^ pub fn memcpy(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;$/;" f +memcpy vendor/libc/src/vxworks/mod.rs /^ pub fn memcpy(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;$/;" f +memcpy vendor/libc/src/wasi.rs /^ pub fn memcpy(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;$/;" f +memcpy vendor/libc/src/windows/mod.rs /^ pub fn memcpy(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;$/;" f +memfd_create vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn memfd_create(name: *const ::c_char, flags: ::c_uint) -> ::c_int;$/;" f +memfd_create vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn memfd_create(name: *const ::c_char, flags: ::c_uint) -> ::c_int;$/;" f +memfd_create vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn memfd_create(name: *const ::c_char, flags: ::c_uint) -> ::c_int;$/;" f +memfd_create vendor/nix/src/sys/memfd.rs /^pub fn memfd_create(name: &CStr, flags: MemFdCreateFlag) -> Result {$/;" f +memfrob r_bash/src/lib.rs /^ pub fn memfrob(__s: *mut ::std::os::raw::c_void, __n: usize) -> *mut ::std::os::raw::c_void;$/;" f +memfrob r_glob/src/lib.rs /^ pub fn memfrob(__s: *mut ::std::os::raw::c_void, __n: usize) -> *mut ::std::os::raw::c_void;$/;" f +memfrob r_readline/src/lib.rs /^ pub fn memfrob(__s: *mut ::std::os::raw::c_void, __n: usize) -> *mut ::std::os::raw::c_void;$/;" f +meminfo vendor/libc/src/unix/solarish/mod.rs /^ pub fn meminfo($/;" f +memmem r_bash/src/lib.rs /^ pub fn memmem($/;" f +memmem r_glob/src/lib.rs /^ pub fn memmem($/;" f +memmem r_readline/src/lib.rs /^ pub fn memmem($/;" f +memmem vendor/libc/src/solid/mod.rs /^ pub fn memmem($/;" f +memmem vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn memmem($/;" f +memmem vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn memmem($/;" f +memmem vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn memmem($/;" f +memmem vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn memmem($/;" f +memmem vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn memmem($/;" f +memmem vendor/memchr/src/lib.rs /^pub mod memmem;$/;" n +memmove r_bash/src/lib.rs /^ pub fn memmove($/;" f +memmove r_glob/src/lib.rs /^ pub fn memmove($/;" f +memmove r_readline/src/lib.rs /^ pub fn memmove($/;" f +memmove vendor/libc/src/fuchsia/mod.rs /^ pub fn memmove(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;$/;" f +memmove vendor/libc/src/solid/mod.rs /^ pub fn memmove(arg1: *mut c_void, arg2: *const c_void, arg3: size_t) -> *mut c_void;$/;" f +memmove vendor/libc/src/unix/mod.rs /^ pub fn memmove(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;$/;" f +memmove vendor/libc/src/vxworks/mod.rs /^ pub fn memmove(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;$/;" f +memmove vendor/libc/src/wasi.rs /^ pub fn memmove(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;$/;" f +memmove vendor/libc/src/windows/mod.rs /^ pub fn memmove(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;$/;" f +memoffset vendor/memoffset/README.md /^# memoffset #$/;" c +memoizer vendor/fluent-bundle/src/lib.rs /^pub mod memoizer;$/;" n +memory_error_and_abort builtins/mkbuiltins.c /^memory_error_and_abort ()$/;" f typeref:typename:void file: +memory_error_and_abort lib/malloc/xmalloc.c /^memory_error_and_abort (fname)$/;" f file: +memory_error_and_abort lib/readline/tilde.c /^memory_error_and_abort (void)$/;" f typeref:typename:void file: +memory_error_and_abort lib/readline/xmalloc.c /^memory_error_and_abort (char *fname)$/;" f typeref:typename:void file: +memory_error_and_abort lib/sh/snprintf.c /^memory_error_and_abort ()$/;" f typeref:typename:void file: +memory_error_and_abort lib/tilde/tilde.c /^memory_error_and_abort (void)$/;" f typeref:typename:void file: +memory_object_offset_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type memory_object_offset_t = ::c_ulonglong;$/;" t +memory_object_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type memory_object_t = ::mach_port_t;$/;" t +memory_out lib/termcap/termcap.c /^memory_out ()$/;" f typeref:typename:void file: +memory_out lib/termcap/tparam.c /^memory_out ()$/;" f typeref:typename:void file: +memoryapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "memoryapi")] pub mod memoryapi;$/;" n +mempcpy lib/intl/dcigettext.c /^mempcpy (dest, src, n)$/;" f file: +mempcpy lib/intl/localealias.c /^# define mempcpy /;" d file: +mempcpy r_bash/src/lib.rs /^ pub fn mempcpy($/;" f +mempcpy r_glob/src/lib.rs /^ pub fn mempcpy($/;" f +mempcpy r_readline/src/lib.rs /^ pub fn mempcpy($/;" f +memrchr r_bash/src/lib.rs /^ pub fn memrchr($/;" f +memrchr r_glob/src/lib.rs /^ pub fn memrchr($/;" f +memrchr r_readline/src/lib.rs /^ pub fn memrchr($/;" f +memrchr vendor/libc/src/fuchsia/mod.rs /^ pub fn memrchr(cx: *const ::c_void, c: ::c_int, n: ::size_t) -> *mut ::c_void;$/;" f +memrchr vendor/libc/src/solid/mod.rs /^ pub fn memrchr(arg1: *const c_void, arg2: c_int, arg3: size_t) -> *mut c_void;$/;" f +memrchr vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn memrchr(cx: *const ::c_void, c: ::c_int, n: ::size_t) -> *mut ::c_void;$/;" f +memrchr vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn memrchr(cx: *const ::c_void, c: ::c_int, n: ::size_t) -> *mut ::c_void;$/;" f +memrchr vendor/libc/src/unix/haiku/mod.rs /^ pub fn memrchr(cx: *const ::c_void, c: ::c_int, n: ::size_t) -> *mut ::c_void;$/;" f +memrchr vendor/libc/src/unix/linux_like/mod.rs /^ pub fn memrchr(cx: *const ::c_void, c: ::c_int, n: ::size_t) -> *mut ::c_void;$/;" f +memrchr vendor/libc/src/wasi.rs /^ pub fn memrchr(cx: *const ::c_void, c: ::c_int, n: ::size_t) -> *mut ::c_void;$/;" f +memrchr vendor/memchr/src/memchr/c.rs /^pub fn memrchr(needle: u8, haystack: &[u8]) -> Option {$/;" f +memrchr vendor/memchr/src/memchr/fallback.rs /^pub fn memrchr(n1: u8, haystack: &[u8]) -> Option {$/;" f +memrchr vendor/memchr/src/memchr/mod.rs /^pub fn memrchr(needle: u8, haystack: &[u8]) -> Option {$/;" f +memrchr vendor/memchr/src/memchr/naive.rs /^pub fn memrchr(n1: u8, haystack: &[u8]) -> Option {$/;" f +memrchr vendor/memchr/src/memchr/x86/avx.rs /^pub unsafe fn memrchr(n1: u8, haystack: &[u8]) -> Option {$/;" f +memrchr vendor/memchr/src/memchr/x86/mod.rs /^pub fn memrchr(n1: u8, haystack: &[u8]) -> Option {$/;" f +memrchr vendor/memchr/src/memchr/x86/sse2.rs /^pub unsafe fn memrchr(n1: u8, haystack: &[u8]) -> Option {$/;" f +memrchr1_fallback_find vendor/memchr/src/tests/memchr/memchr.rs /^fn memrchr1_fallback_find() {$/;" f +memrchr1_find vendor/memchr/src/tests/memchr/memchr.rs /^fn memrchr1_find() {$/;" f +memrchr1_iter vendor/memchr/src/tests/memchr/iter.rs /^fn memrchr1_iter() {$/;" f +memrchr2 vendor/memchr/src/memchr/fallback.rs /^pub fn memrchr2(n1: u8, n2: u8, haystack: &[u8]) -> Option {$/;" f +memrchr2 vendor/memchr/src/memchr/mod.rs /^pub fn memrchr2(needle1: u8, needle2: u8, haystack: &[u8]) -> Option {$/;" f +memrchr2 vendor/memchr/src/memchr/naive.rs /^pub fn memrchr2(n1: u8, n2: u8, haystack: &[u8]) -> Option {$/;" f +memrchr2 vendor/memchr/src/memchr/x86/avx.rs /^pub unsafe fn memrchr2(n1: u8, n2: u8, haystack: &[u8]) -> Option {$/;" f +memrchr2 vendor/memchr/src/memchr/x86/mod.rs /^pub fn memrchr2(n1: u8, n2: u8, haystack: &[u8]) -> Option {$/;" f +memrchr2 vendor/memchr/src/memchr/x86/sse2.rs /^pub unsafe fn memrchr2(n1: u8, n2: u8, haystack: &[u8]) -> Option {$/;" f +memrchr2_fallback_find vendor/memchr/src/tests/memchr/memchr.rs /^fn memrchr2_fallback_find() {$/;" f +memrchr2_find vendor/memchr/src/tests/memchr/memchr.rs /^fn memrchr2_find() {$/;" f +memrchr2_iter vendor/memchr/src/memchr/mod.rs /^pub fn memrchr2_iter($/;" f +memrchr2_iter vendor/memchr/src/tests/memchr/iter.rs /^fn memrchr2_iter() {$/;" f +memrchr3 vendor/memchr/src/memchr/fallback.rs /^pub fn memrchr3(n1: u8, n2: u8, n3: u8, haystack: &[u8]) -> Option {$/;" f +memrchr3 vendor/memchr/src/memchr/mod.rs /^pub fn memrchr3($/;" f +memrchr3 vendor/memchr/src/memchr/naive.rs /^pub fn memrchr3(n1: u8, n2: u8, n3: u8, haystack: &[u8]) -> Option {$/;" f +memrchr3 vendor/memchr/src/memchr/x86/avx.rs /^pub unsafe fn memrchr3($/;" f +memrchr3 vendor/memchr/src/memchr/x86/mod.rs /^pub fn memrchr3(n1: u8, n2: u8, n3: u8, haystack: &[u8]) -> Option {$/;" f +memrchr3 vendor/memchr/src/memchr/x86/sse2.rs /^pub unsafe fn memrchr3($/;" f +memrchr3_fallback_find vendor/memchr/src/tests/memchr/memchr.rs /^fn memrchr3_fallback_find() {$/;" f +memrchr3_find vendor/memchr/src/tests/memchr/memchr.rs /^fn memrchr3_find() {$/;" f +memrchr3_iter vendor/memchr/src/memchr/mod.rs /^pub fn memrchr3_iter($/;" f +memrchr3_iter vendor/memchr/src/tests/memchr/iter.rs /^fn memrchr3_iter() {$/;" f +memrchr_iter vendor/memchr/src/memchr/mod.rs /^pub fn memrchr_iter(needle: u8, haystack: &[u8]) -> Rev> {$/;" f +memset lib/sh/memset.c /^memset (char *str, int c, unsigned int len)$/;" f typeref:typename:char * +memset r_bash/src/lib.rs /^ pub fn memset($/;" f +memset r_glob/src/lib.rs /^ pub fn memset($/;" f +memset r_readline/src/lib.rs /^ pub fn memset($/;" f +memset vendor/libc/src/fuchsia/mod.rs /^ pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void;$/;" f +memset vendor/libc/src/solid/mod.rs /^ pub fn memset(arg1: *mut c_void, arg2: c_int, arg3: size_t) -> *mut c_void;$/;" f +memset vendor/libc/src/unix/mod.rs /^ pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void;$/;" f +memset vendor/libc/src/vxworks/mod.rs /^ pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void;$/;" f +memset vendor/libc/src/wasi.rs /^ pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void;$/;" f +memset vendor/libc/src/windows/mod.rs /^ pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void;$/;" f +memset.o lib/sh/Makefile.in /^memset.o: ${BUILD_DIR}\/config.h$/;" t +memset.o lib/sh/Makefile.in /^memset.o: memset.c$/;" t +memset_pattern16 vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn memset_pattern16(b: *mut ::c_void, pattern16: *const ::c_void, len: ::size_t);$/;" f +memset_pattern4 vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn memset_pattern4(b: *mut ::c_void, pattern4: *const ::c_void, len: ::size_t);$/;" f +memset_pattern8 vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn memset_pattern8(b: *mut ::c_void, pattern8: *const ::c_void, len: ::size_t);$/;" f +memset_s vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn memset_s(s: *mut ::c_void, smax: ::size_t, c: ::c_int, n: ::size_t) -> ::c_int;$/;" f +memset_s vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn memset_s(s: *mut ::c_void, smax: ::size_t, c: ::c_int, n: ::size_t) -> ::c_int;$/;" f +memtop lib/malloc/malloc.c /^static char *memtop; \/* top of heap *\/$/;" v typeref:typename:char * file: +menu_entry support/texi2html /^sub menu_entry $/;" s +menuentryfunc lib/readline/readline.h /^ rl_compentry_func_t *menuentryfunc;$/;" m struct:readline_state typeref:typename:rl_compentry_func_t * +menuentryfunc r_readline/src/lib.rs /^ pub menuentryfunc: rl_compentry_func_t,$/;" m struct:readline_state +merge vendor/fluent-bundle/src/types/number.rs /^ pub fn merge(&mut self, opts: &FluentArgs) {$/;" P implementation:FluentNumberOptions +merge_builtin_env r_bash/src/lib.rs /^ pub fn merge_builtin_env();$/;" f +merge_function_temporary_env variables.c /^merge_function_temporary_env ()$/;" f typeref:typename:void +merge_temporary_env r_bash/src/lib.rs /^ pub fn merge_temporary_env();$/;" f +merge_temporary_env variables.c /^merge_temporary_env ()$/;" f typeref:typename:void +mergesort vendor/libc/src/solid/mod.rs /^ pub fn mergesort($/;" f +message vendor/fluent-bundle/src/lib.rs /^mod message;$/;" n +message vendor/syn/src/error.rs /^ message: String,$/;" m struct:ErrorMessage +message_queue vendor/futures-channel/src/mpsc/mod.rs /^ message_queue: Queue,$/;" m struct:BoundedInner +message_queue vendor/futures-channel/src/mpsc/mod.rs /^ message_queue: Queue,$/;" m struct:UnboundedInner +messages vendor/syn/src/error.rs /^ messages: Vec,$/;" m struct:Error +messages vendor/syn/src/error.rs /^ messages: slice::Iter<'a, ErrorMessage>,$/;" m struct:Iter +messages vendor/syn/src/error.rs /^ messages: vec::IntoIter,$/;" m struct:IntoIter +meta_character_bit lib/readline/chardefs.h /^#define meta_character_bit /;" d +meta_character_threshold lib/readline/chardefs.h /^#define meta_character_threshold /;" d +metadata target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n +metadata target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" n +metadata target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +metadata target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" n +metadata target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" n +metadata target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" n +metadata target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" n +metadata target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n +metadata target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" n +metadata target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n +metadata target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" n +metadata target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n +metadata target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" n +metadata target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n +metadata target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" n +metadata target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n +metadata target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +metadata target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +metadata target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" n +metadata target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +metadata target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" n +metadata target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" n +metadata target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n +metadata target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" n +metadata target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n +metadata target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" n +metadata target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" n +metadata target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" n +metadata target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +metadata target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +metadata target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +metadata target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" n +metadata target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" n +metadata target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" n +metadata target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" n +metadata target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +metadata target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" n +metadata target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +metadata target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +metadata target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" n +metadata target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +metadata target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" n +metadata target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +metadata target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" n +metadata target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" n +metadata target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" n +metadata target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" n +metadata target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" n +metadata target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n +metadata target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" n +metadata target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" n +metadata target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" n +metadata target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" n +metadata target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +metadata target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" n +metadata target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +metadata target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" n +metadata target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" n +metadata target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +metadata target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +metadata target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" n +metadata target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n +metadata target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" n +metadata target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" n +metadata target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" n +metadata target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +metadata target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n +metadata target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n +metadata target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n +metadata target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n +metadata target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n +metadata target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" n +metadata target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +metadata target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n +metadata target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n +metadata target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n +metadata target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" n +metadata target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n +metadata target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" n +metadata target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +metadata target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" n +metadata target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" n +metadata target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" n +metadata target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" n +metadata target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" n +metadata target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +metadata target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +metadata target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" n +metadata target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +metadata target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" n +metadata target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" n +metadata target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n +metadata target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" n +metadata target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" n +metadata target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" n +metadata target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" n +metadata target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" n +method vendor/async-trait/tests/test.rs /^ async fn method(&self) {$/;" P interface:issue68::Example +method vendor/async-trait/tests/test.rs /^ async fn method() {$/;" P implementation:issue53::PhantomData +method vendor/async-trait/tests/test.rs /^ async fn method() {$/;" P implementation:issue53::Struct +method vendor/async-trait/tests/test.rs /^ async fn method() {$/;" P implementation:issue53::Tuple +method vendor/async-trait/tests/test.rs /^ async fn method() {$/;" P implementation:issue53::Unit +method vendor/async-trait/tests/test.rs /^ async fn method();$/;" P interface:issue53::Trait +method vendor/async-trait/tests/ui/delimiter-span.rs /^ async fn method() {$/;" P implementation:Struct +method vendor/async-trait/tests/ui/delimiter-span.rs /^ async fn method();$/;" P interface:Trait +method vendor/async-trait/tests/ui/lifetime-span.rs /^ async fn method(&'r self) {}$/;" P implementation:B +method vendor/async-trait/tests/ui/lifetime-span.rs /^ async fn method(&'r self);$/;" P interface:Trait +method vendor/async-trait/tests/ui/lifetime-span.rs /^ async fn method(&self) {}$/;" P implementation:A +method vendor/async-trait/tests/ui/lifetime-span.rs /^ async fn method(&self) {}$/;" P implementation:B +method vendor/async-trait/tests/ui/lifetime-span.rs /^ async fn method<'r>(&'r self);$/;" P interface:Trait2 +method vendor/async-trait/tests/ui/missing-async-in-impl.rs /^ async fn method();$/;" P interface:Trait +method vendor/async-trait/tests/ui/missing-async-in-impl.rs /^ fn method() {}$/;" P implementation:Struct +method vendor/async-trait/tests/ui/missing-async-in-trait.rs /^ async fn method() {}$/;" P implementation:Struct +method vendor/async-trait/tests/ui/missing-async-in-trait.rs /^ fn method();$/;" P interface:Trait +method vendor/async-trait/tests/ui/self-span.rs /^ async fn method(self) {$/;" P implementation:E +method vendor/async-trait/tests/ui/self-span.rs /^ async fn method(self) {$/;" P implementation:S +method vendor/async-trait/tests/ui/self-span.rs /^ async fn method(self);$/;" P interface:Trait +method vendor/async-trait/tests/ui/unsupported-self.rs /^ async fn method() {$/;" P implementation:str +method vendor/async-trait/tests/ui/unsupported-self.rs /^ async fn method();$/;" P interface:Trait +mguard_t lib/malloc/malloc.c /^} mguard_t;$/;" t typeref:union:_malloc_guard file: +mh_align lib/malloc/malloc.c /^ bits64_t mh_align[2]; \/* 16 *\/$/;" m union:mhead typeref:typename:bits64_t[2] file: +mh_alloc lib/malloc/malloc.c /^#define mh_alloc /;" d file: +mh_index lib/malloc/malloc.c /^#define mh_index /;" d file: +mh_magic2 lib/malloc/malloc.c /^#define mh_magic2 /;" d file: +mh_magic8 lib/malloc/malloc.c /^#define mh_magic8 /;" d file: +mh_nbytes lib/malloc/malloc.c /^#define mh_nbytes /;" d file: +mhead lib/malloc/malloc.c /^union mhead {$/;" u file: +mi_alloc lib/malloc/malloc.c /^ char mi_alloc; \/* ISALLOC or ISFREE *\/ \/* 1 *\/$/;" m struct:mhead::__anon943e93fb0108 typeref:typename:char file: +mi_index lib/malloc/malloc.c /^ char mi_index; \/* index in nextf[] *\/ \/* 1 *\/$/;" m struct:mhead::__anon943e93fb0108 typeref:typename:char file: +mi_magic2 lib/malloc/malloc.c /^ u_bits16_t mi_magic2; \/* should be == MAGIC2 *\/ \/* 2 *\/$/;" m struct:mhead::__anon943e93fb0108 typeref:typename:u_bits16_t file: +mi_magic8 lib/malloc/malloc.c /^ char mi_magic8[8]; \/* MAGIC1 guard bytes *\/ \/* 8 *\/$/;" m struct:mhead::__anon943e93fb0108 typeref:typename:char[8] file: +mi_nbytes lib/malloc/malloc.c /^ u_bits32_t mi_nbytes; \/* # of bytes allocated *\/ \/* 4 *\/$/;" m struct:mhead::__anon943e93fb0108 typeref:typename:u_bits32_t file: +micros_mod_sec vendor/nix/src/sys/time.rs /^ fn micros_mod_sec(&self) -> suseconds_t {$/;" P implementation:TimeVal +microseconds vendor/nix/src/sys/time.rs /^ fn microseconds(microseconds: i64) -> Self;$/;" P interface:TimeValLike +microseconds vendor/nix/src/sys/time.rs /^ fn microseconds(microseconds: i64) -> TimeSpec {$/;" P implementation:TimeSpec +microseconds vendor/nix/src/sys/time.rs /^ fn microseconds(microseconds: i64) -> TimeVal {$/;" P implementation:TimeVal +midiConnect vendor/winapi/src/um/mmeapi.rs /^ pub fn midiConnect($/;" f +midiDisconnect vendor/winapi/src/um/mmeapi.rs /^ pub fn midiDisconnect($/;" f +midiInAddBuffer vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInAddBuffer($/;" f +midiInClose vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInClose($/;" f +midiInGetDevCapsW vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInGetDevCapsW($/;" f +midiInGetErrorTextW vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInGetErrorTextW($/;" f +midiInGetID vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInGetID($/;" f +midiInGetNumDevs vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInGetNumDevs() -> UINT;$/;" f +midiInMessage vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInMessage($/;" f +midiInOpen vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInOpen($/;" f +midiInPrepareHeader vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInPrepareHeader($/;" f +midiInReset vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInReset($/;" f +midiInStart vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInStart($/;" f +midiInStop vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInStop($/;" f +midiInUnprepareHeader vendor/winapi/src/um/mmeapi.rs /^ pub fn midiInUnprepareHeader($/;" f +midiOutCacheDrumPatches vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutCacheDrumPatches($/;" f +midiOutCachePatches vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutCachePatches($/;" f +midiOutClose vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutClose($/;" f +midiOutGetDevCapsW vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutGetDevCapsW($/;" f +midiOutGetErrorTextW vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutGetErrorTextW($/;" f +midiOutGetID vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutGetID($/;" f +midiOutGetNumDevs vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutGetNumDevs() -> UINT;$/;" f +midiOutGetVolume vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutGetVolume($/;" f +midiOutLongMsg vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutLongMsg($/;" f +midiOutMessage vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutMessage($/;" f +midiOutOpen vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutOpen($/;" f +midiOutPrepareHeader vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutPrepareHeader($/;" f +midiOutReset vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutReset($/;" f +midiOutSetVolume vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutSetVolume($/;" f +midiOutShortMsg vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutShortMsg($/;" f +midiOutUnprepareHeader vendor/winapi/src/um/mmeapi.rs /^ pub fn midiOutUnprepareHeader($/;" f +midiStreamClose vendor/winapi/src/um/mmeapi.rs /^ pub fn midiStreamClose($/;" f +midiStreamOpen vendor/winapi/src/um/mmeapi.rs /^ pub fn midiStreamOpen($/;" f +midiStreamOut vendor/winapi/src/um/mmeapi.rs /^ pub fn midiStreamOut($/;" f +midiStreamPause vendor/winapi/src/um/mmeapi.rs /^ pub fn midiStreamPause($/;" f +midiStreamPosition vendor/winapi/src/um/mmeapi.rs /^ pub fn midiStreamPosition($/;" f +midiStreamProperty vendor/winapi/src/um/mmeapi.rs /^ pub fn midiStreamProperty($/;" f +midiStreamRestart vendor/winapi/src/um/mmeapi.rs /^ pub fn midiStreamRestart($/;" f +midiStreamStop vendor/winapi/src/um/mmeapi.rs /^ pub fn midiStreamStop($/;" f +milliseconds vendor/nix/src/sys/time.rs /^ fn milliseconds(milliseconds: i64) -> Self;$/;" P interface:TimeValLike +milliseconds vendor/nix/src/sys/time.rs /^ fn milliseconds(milliseconds: i64) -> TimeSpec {$/;" P implementation:TimeSpec +milliseconds vendor/nix/src/sys/time.rs /^ fn milliseconds(milliseconds: i64) -> TimeVal {$/;" P implementation:TimeVal +min input.c /^#define min(/;" d file: +min lib/sh/strftime.c /^min(int a, int b)$/;" f typeref:typename:int file: +min_haystack_len vendor/memchr/src/memmem/genericsimd.rs /^ pub(crate) fn min_haystack_len(&self) -> usize {$/;" P implementation:Forward +min_haystack_len vendor/memchr/src/memmem/wasm.rs /^ pub(crate) fn min_haystack_len(&self) -> usize {$/;" P implementation:Forward +min_haystack_len vendor/memchr/src/memmem/x86/avx.rs /^ pub(crate) fn min_haystack_len(&self) -> usize {$/;" P implementation:nostd::Forward +min_haystack_len vendor/memchr/src/memmem/x86/avx.rs /^ pub(crate) fn min_haystack_len(&self) -> usize {$/;" P implementation:std::Forward +min_haystack_len vendor/memchr/src/memmem/x86/sse.rs /^ pub(crate) fn min_haystack_len(&self) -> usize {$/;" P implementation:Forward +mincore vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn mincore(addr: *const ::c_void, len: ::size_t, vec: *mut ::c_char) -> ::c_int;$/;" f +mincore vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mincore(addr: *const ::c_void, len: ::size_t, vec: *mut ::c_char) -> ::c_int;$/;" f +mincore vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn mincore(addr: *mut ::c_void, len: ::size_t, vec: *mut ::c_char) -> ::c_int;$/;" f +mincore vendor/libc/src/unix/linux_like/mod.rs /^ pub fn mincore(addr: *mut ::c_void, len: ::size_t, vec: *mut ::c_uchar) -> ::c_int;$/;" f +mincore vendor/libc/src/unix/solarish/illumos.rs /^ pub fn mincore(addr: ::caddr_t, len: ::size_t, vec: *mut ::c_char) -> ::c_int;$/;" f +mincore vendor/libc/src/unix/solarish/solaris.rs /^ pub fn mincore(addr: *const ::c_void, len: ::size_t, vec: *mut ::c_char) -> ::c_int;$/;" f +mindist lib/sh/spell.c /^mindist(dir, guess, best)$/;" f file: +minfo lib/malloc/malloc.c /^ } minfo;$/;" m union:mhead typeref:struct:mhead::__anon943e93fb0108 file: +minimal-config configure.ac /^AC_ARG_ENABLE(minimal-config, AC_HELP_STRING([--enable-minimal-config], [a minimal sh-like confi/;" e +minimize vendor/unic-langid-impl/src/lib.rs /^ pub fn minimize(&mut self) -> bool {$/;" P implementation:LanguageIdentifier +minimize vendor/unic-langid-impl/src/likelysubtags/mod.rs /^pub fn minimize($/;" f +minimum_fraction_digits vendor/fluent-bundle/src/types/number.rs /^ pub minimum_fraction_digits: Option,$/;" m struct:FluentNumberOptions +minimum_integer_digits vendor/fluent-bundle/src/types/number.rs /^ pub minimum_integer_digits: Option,$/;" m struct:FluentNumberOptions +minimum_len vendor/memchr/src/memmem/prefilter/mod.rs /^pub(crate) fn minimum_len(_haystack: &[u8], needle: &[u8]) -> usize {$/;" f +minimum_significant_digits vendor/fluent-bundle/src/types/number.rs /^ pub minimum_significant_digits: Option,$/;" m struct:FluentNumberOptions +minor vendor/autocfg/src/version.rs /^ minor: usize,$/;" m struct:Version +minor vendor/nix/src/sys/stat.rs /^pub const fn minor(dev: dev_t) -> u64 {$/;" f +minor vendor/proc-macro2/build.rs /^ minor: u32,$/;" m struct:RustcVersion +minor vendor/quote/build.rs /^ minor: u32,$/;" m struct:RustcVersion +minor vendor/syn/build.rs /^ minor: u32,$/;" m struct:Compiler +minor_page_faults vendor/nix/src/sys/resource.rs /^ pub fn minor_page_faults(&self) -> c_long {$/;" P implementation:Usage +minor_t vendor/libc/src/unix/solarish/mod.rs /^pub type minor_t = ::c_uint;$/;" t +minschannel vendor/winapi/src/um/mod.rs /^#[cfg(feature = "minschannel")] pub mod minschannel;$/;" n +minus lib/intl/plural-exp.h /^ minus, \/* Subtraction. *\/$/;" e enum:expression::__anon93874cf10103 +minus_o_option_value builtins_rust/set/src/lib.rs /^unsafe fn minus_o_option_value(name: *mut libc::c_char) -> i32 {$/;" f +minus_o_option_value builtins_rust/shopt/src/lib.rs /^ fn minus_o_option_value(_: *mut libc::c_char) -> i32;$/;" f +minus_o_option_value r_bash/src/lib.rs /^ pub fn minus_o_option_value(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +minutes vendor/nix/src/sys/time.rs /^ fn minutes(minutes: i64) -> Self {$/;" P interface:TimeValLike +minwinbase vendor/winapi/src/um/mod.rs /^#[cfg(feature = "minwinbase")] pub mod minwinbase;$/;" n +minwindef vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "minwindef")] pub mod minwindef;$/;" n +mip support/man2html.c /^static int mip = 0;$/;" v typeref:typename:int file: +misc.o lib/readline/Makefile.in /^misc.o: history.h rlstdc.h ansi_stdlib.h$/;" t +misc.o lib/readline/Makefile.in /^misc.o: misc.c$/;" t +misc.o lib/readline/Makefile.in /^misc.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +misc.o lib/readline/Makefile.in /^misc.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +misc.o lib/readline/Makefile.in /^misc.o: rlmbutil.h$/;" t +misc.o lib/readline/Makefile.in /^misc.o: rlprivate.h$/;" t +misc.o lib/readline/Makefile.in /^misc.o: xmalloc.h $/;" t +mismatch vendor/proc-macro2/src/wrapper.rs /^fn mismatch() -> ! {$/;" f +missing_symbol_fails vendor/libloading/tests/functions.rs /^fn missing_symbol_fails() {$/;" f +mitos lib/sh/itos.c /^mitos (i)$/;" f +mitos r_bash/src/lib.rs /^ pub fn mitos(arg1: intmax_t) -> *mut ::std::os::raw::c_char;$/;" f +mixed_site vendor/proc-macro2/src/fallback.rs /^ pub fn mixed_site() -> Self {$/;" P implementation:Span +mixed_site vendor/proc-macro2/src/lib.rs /^ pub fn mixed_site() -> Self {$/;" P implementation:Span +mixed_site vendor/proc-macro2/src/wrapper.rs /^ pub fn mixed_site() -> Self {$/;" P implementation:Span +mk_env_string variables.c /^mk_env_string (name, value, isfunc)$/;" f file: +mk_ident vendor/quote/src/runtime.rs /^pub fn mk_ident(id: &str, span: Option) -> Ident {$/;" f +mk_msgstr locale.c /^mk_msgstr (string, foundnlp)$/;" f +mk_msgstr r_bash/src/lib.rs /^ pub fn mk_msgstr($/;" f +mkbuiltins$(EXEEXT) builtins/Makefile.in /^mkbuiltins$(EXEEXT): mkbuiltins.o$/;" t +mkbuiltins.o builtins/Makefile.in /^mkbuiltins.o: $(topdir)\/bashansi.h $(BASHINCDIR)\/ansi_stdlib.h$/;" t +mkbuiltins.o builtins/Makefile.in /^mkbuiltins.o: ${BASHINCDIR}\/filecntl.h$/;" t +mkbuiltins.o builtins/Makefile.in /^mkbuiltins.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +mkbuiltins.o builtins/Makefile.in /^mkbuiltins.o: ..\/config.h $(topdir)\/bashtypes.h $(BASHINCDIR)\/posixstat.h$/;" t +mkbuiltins.o builtins/Makefile.in /^mkbuiltins.o: ..\/config.h$/;" t +mkbuiltins.o builtins/Makefile.in /^mkbuiltins.o: mkbuiltins.c$/;" t +mkdir r_bash/src/lib.rs /^ pub fn mkdir(__path: *const ::std::os::raw::c_char, __mode: __mode_t) -> ::std::os::raw::c_i/;" f +mkdir r_readline/src/lib.rs /^ pub fn mkdir(__path: *const ::std::os::raw::c_char, __mode: __mode_t) -> ::std::os::raw::c_i/;" f +mkdir vendor/libc/src/fuchsia/mod.rs /^ pub fn mkdir(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +mkdir vendor/libc/src/solid/mod.rs /^ pub fn mkdir(arg1: *const c_char, arg2: __mode_t) -> c_int;$/;" f +mkdir vendor/libc/src/unix/mod.rs /^ pub fn mkdir(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +mkdir vendor/libc/src/vxworks/mod.rs /^ pub fn mkdir(dirName: *const ::c_char, mode: ::mode_t) -> ::c_int;$/;" f +mkdir vendor/libc/src/wasi.rs /^ pub fn mkdir(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +mkdir vendor/libc/src/windows/mod.rs /^ pub fn mkdir(path: *const c_char) -> ::c_int;$/;" f +mkdirat r_bash/src/lib.rs /^ pub fn mkdirat($/;" f +mkdirat r_readline/src/lib.rs /^ pub fn mkdirat($/;" f +mkdirat vendor/libc/src/fuchsia/mod.rs /^ pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char, mode: ::mode_t) -> ::c_int;$/;" f +mkdirat vendor/libc/src/wasi.rs /^ pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char, mode: ::mode_t) -> ::c_int;$/;" f +mkdirat vendor/nix/src/sys/stat.rs /^pub fn mkdirat(fd: RawFd, path: &P, mode: Mode) -> Result<()> {$/;" f +mkdtemp r_bash/src/lib.rs /^ pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +mkdtemp r_glob/src/lib.rs /^ pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +mkdtemp r_readline/src/lib.rs /^ pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +mkdtemp vendor/libc/src/fuchsia/mod.rs /^ pub fn mkdtemp(template: *mut ::c_char) -> *mut ::c_char;$/;" f +mkdtemp vendor/libc/src/solid/mod.rs /^ pub fn mkdtemp(arg1: *mut c_char) -> *mut c_char;$/;" f +mkdtemp vendor/libc/src/unix/mod.rs /^ pub fn mkdtemp(template: *mut ::c_char) -> *mut ::c_char;$/;" f +mkfifo lib/sh/oslib.c /^mkfifo (path, mode)$/;" f +mkfifo r_bash/src/lib.rs /^ pub fn mkfifo(__path: *const ::std::os::raw::c_char, __mode: __mode_t)$/;" f +mkfifo r_readline/src/lib.rs /^ pub fn mkfifo(__path: *const ::std::os::raw::c_char, __mode: __mode_t)$/;" f +mkfifo vendor/libc/src/fuchsia/mod.rs /^ pub fn mkfifo(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +mkfifo vendor/libc/src/unix/mod.rs /^ pub fn mkfifo(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +mkfifo vendor/libc/src/vxworks/mod.rs /^ pub fn mkfifo(path: *const c_char, mode: mode_t) -> ::c_int;$/;" f +mkfifoat r_bash/src/lib.rs /^ pub fn mkfifoat($/;" f +mkfifoat r_readline/src/lib.rs /^ pub fn mkfifoat($/;" f +mkfifoat vendor/libc/src/fuchsia/mod.rs /^ pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, mode: ::mode_t) -> ::c_int;$/;" f +mkfifoat vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, mode: ::mode_t) -> ::c_int;$/;" f +mkfifoat vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, mode: ::mode_t) -> ::c_int;$/;" f +mkfifoat vendor/libc/src/unix/haiku/mod.rs /^ pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, mode: ::mode_t) -> ::c_int;$/;" f +mkfifoat vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, mode: ::mode_t) -> ::c_int;$/;" f +mkfifoat vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, mode: ::mode_t) -> ::c_int;$/;" f +mkfifoat vendor/libc/src/unix/solarish/mod.rs /^ pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, mode: ::mode_t) -> ::c_int;$/;" f +mkfmt execute_cmd.c /^mkfmt (buf, prec, lng, sec, sec_fraction)$/;" f file: +mkinstalldirs lib/intl/Makefile.in /^mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)$/;" m +mklong builtins_rust/printf/src/lib.rs /^unsafe fn mklong(str: *mut c_char, modifiers: *mut c_char, mlen: size_t) -> *mut c_char {$/;" f +mknod r_bash/src/lib.rs /^ pub fn mknod($/;" f +mknod r_readline/src/lib.rs /^ pub fn mknod($/;" f +mknod vendor/libc/src/fuchsia/mod.rs /^ pub fn mknod(pathname: *const ::c_char, mode: ::mode_t, dev: ::dev_t) -> ::c_int;$/;" f +mknod vendor/libc/src/unix/mod.rs /^ pub fn mknod(pathname: *const ::c_char, mode: ::mode_t, dev: ::dev_t) -> ::c_int;$/;" f +mknod vendor/nix/src/sys/stat.rs /^pub fn mknod(path: &P, kind: SFlag, perm: Mode, dev: dev_t) -> Result<()> {$/;" f +mknodat r_bash/src/lib.rs /^ pub fn mknodat($/;" f +mknodat r_readline/src/lib.rs /^ pub fn mknodat($/;" f +mknodat vendor/libc/src/fuchsia/mod.rs /^ pub fn mknodat($/;" f +mknodat vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mknodat($/;" f +mknodat vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn mknodat($/;" f +mknodat vendor/libc/src/unix/haiku/mod.rs /^ pub fn mknodat($/;" f +mknodat vendor/libc/src/unix/linux_like/mod.rs /^ pub fn mknodat($/;" f +mknodat vendor/libc/src/unix/solarish/mod.rs /^ pub fn mknodat($/;" f +mknodat vendor/nix/src/sys/stat.rs /^pub fn mknodat($/;" f +mkostemp r_bash/src/lib.rs /^ pub fn mkostemp($/;" f +mkostemp r_glob/src/lib.rs /^ pub fn mkostemp($/;" f +mkostemp r_readline/src/lib.rs /^ pub fn mkostemp($/;" f +mkostemp vendor/libc/src/fuchsia/mod.rs /^ pub fn mkostemp(template: *mut ::c_char, flags: ::c_int) -> ::c_int;$/;" f +mkostemp vendor/libc/src/solid/mod.rs /^ pub fn mkostemp(arg1: *mut c_char, arg2: c_int) -> c_int;$/;" f +mkostemp vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn mkostemp(template: *mut ::c_char, flags: ::c_int) -> ::c_int;$/;" f +mkostemp vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn mkostemp(template: *mut ::c_char, flags: ::c_int) -> ::c_int;$/;" f +mkostemp vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn mkostemp(template: *mut ::c_char, flags: ::c_int) -> ::c_int;$/;" f +mkostemp vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mkostemp(template: *mut ::c_char, flags: ::c_int) -> ::c_int;$/;" f +mkostemp64 r_bash/src/lib.rs /^ pub fn mkostemp64($/;" f +mkostemp64 r_glob/src/lib.rs /^ pub fn mkostemp64($/;" f +mkostemp64 r_readline/src/lib.rs /^ pub fn mkostemp64($/;" f +mkostemps r_bash/src/lib.rs /^ pub fn mkostemps($/;" f +mkostemps r_glob/src/lib.rs /^ pub fn mkostemps($/;" f +mkostemps r_readline/src/lib.rs /^ pub fn mkostemps($/;" f +mkostemps vendor/libc/src/fuchsia/mod.rs /^ pub fn mkostemps(template: *mut ::c_char, suffixlen: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +mkostemps vendor/libc/src/solid/mod.rs /^ pub fn mkostemps(arg1: *mut c_char, arg2: c_int, arg3: c_int) -> c_int;$/;" f +mkostemps vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn mkostemps(template: *mut ::c_char, suffixlen: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +mkostemps vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn mkostemps(template: *mut ::c_char, suffixlen: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +mkostemps vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn mkostemps(template: *mut ::c_char, suffixlen: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +mkostemps vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mkostemps(template: *mut ::c_char, suffixlen: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +mkostemps64 r_bash/src/lib.rs /^ pub fn mkostemps64($/;" f +mkostemps64 r_glob/src/lib.rs /^ pub fn mkostemps64($/;" f +mkostemps64 r_readline/src/lib.rs /^ pub fn mkostemps64($/;" f +mkseq braces.c /^mkseq (start, end, incr, type, width)$/;" f file: +mksignames$(EXEEXT) Makefile.in /^mksignames$(EXEEXT): mksignames.o buildsignames.o$/;" t +mksignames.o Makefile.in /^mksignames.o: $(SUPPORT_SRC)mksignames.c$/;" t +mkstemp r_bash/src/lib.rs /^ pub fn mkstemp(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +mkstemp r_glob/src/lib.rs /^ pub fn mkstemp(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +mkstemp r_readline/src/lib.rs /^ pub fn mkstemp(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +mkstemp vendor/libc/src/fuchsia/mod.rs /^ pub fn mkstemp(template: *mut ::c_char) -> ::c_int;$/;" f +mkstemp vendor/libc/src/solid/mod.rs /^ pub fn mkstemp(arg1: *mut c_char) -> c_int;$/;" f +mkstemp vendor/libc/src/unix/mod.rs /^ pub fn mkstemp(template: *mut ::c_char) -> ::c_int;$/;" f +mkstemp vendor/libc/src/vxworks/mod.rs /^ pub fn mkstemp(template: *mut ::c_char) -> ::c_int;$/;" f +mkstemp64 r_bash/src/lib.rs /^ pub fn mkstemp64(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +mkstemp64 r_glob/src/lib.rs /^ pub fn mkstemp64(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +mkstemp64 r_readline/src/lib.rs /^ pub fn mkstemp64(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +mkstemps r_bash/src/lib.rs /^ pub fn mkstemps($/;" f +mkstemps r_glob/src/lib.rs /^ pub fn mkstemps($/;" f +mkstemps r_readline/src/lib.rs /^ pub fn mkstemps($/;" f +mkstemps vendor/libc/src/fuchsia/mod.rs /^ pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int;$/;" f +mkstemps vendor/libc/src/unix/bsd/mod.rs /^ pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int;$/;" f +mkstemps vendor/libc/src/unix/haiku/mod.rs /^ pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int;$/;" f +mkstemps vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int;$/;" f +mkstemps vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int;$/;" f +mkstemps vendor/libc/src/unix/solarish/mod.rs /^ pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int;$/;" f +mkstemps64 r_bash/src/lib.rs /^ pub fn mkstemps64($/;" f +mkstemps64 r_glob/src/lib.rs /^ pub fn mkstemps64($/;" f +mkstemps64 r_readline/src/lib.rs /^ pub fn mkstemps64($/;" f +mksyntax$(EXEEXT) Makefile.in /^mksyntax$(EXEEXT): ${srcdir}\/mksyntax.c config.h syntax.h ${BASHINCDIR}\/chartypes.h bashansi.h$/;" t +mktemp r_bash/src/lib.rs /^ pub fn mktemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +mktemp r_glob/src/lib.rs /^ pub fn mktemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +mktemp r_readline/src/lib.rs /^ pub fn mktemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +mktemp vendor/libc/src/solid/mod.rs /^ pub fn mktemp(arg1: *mut c_char) -> *mut c_char;$/;" f +mktime lib/sh/mktime.c /^#define mktime /;" d file: +mktime lib/sh/mktime.c /^mktime (tp)$/;" f +mktime r_bash/src/lib.rs /^ pub fn mktime(__tp: *mut tm) -> time_t;$/;" f +mktime r_readline/src/lib.rs /^ pub fn mktime(__tp: *mut tm) -> time_t;$/;" f +mktime vendor/libc/src/fuchsia/mod.rs /^ pub fn mktime(tm: *mut tm) -> time_t;$/;" f +mktime vendor/libc/src/solid/mod.rs /^ pub fn mktime(arg1: *mut tm) -> time_t;$/;" f +mktime vendor/libc/src/unix/mod.rs /^ pub fn mktime(tm: *mut tm) -> time_t;$/;" f +mktime vendor/libc/src/vxworks/mod.rs /^ pub fn mktime(tm: *mut tm) -> time_t;$/;" f +mktime vendor/libc/src/wasi.rs /^ pub fn mktime(a: *mut tm) -> time_t;$/;" f +mktime.o lib/sh/Makefile.in /^mktime.o: ${BASHINCDIR}\/stdc.h$/;" t +mktime.o lib/sh/Makefile.in /^mktime.o: ${BUILD_DIR}\/config.h$/;" t +mktime.o lib/sh/Makefile.in /^mktime.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +mktime.o lib/sh/Makefile.in /^mktime.o: mktime.c$/;" t +mlocation_dump_table lib/malloc/table.c /^mlocation_dump_table ()$/;" f typeref:typename:void +mlocation_register_alloc lib/malloc/table.c /^mlocation_register_alloc (file, line)$/;" f +mlocation_table lib/malloc/table.c /^static ma_table_t mlocation_table[REG_TABLE_SIZE];$/;" v typeref:typename:ma_table_t[] file: +mlocation_table_init lib/malloc/table.c /^mlocation_table_init ()$/;" f typeref:typename:void +mlocation_write_table lib/malloc/table.c /^mlocation_write_table ()$/;" f typeref:typename:void +mlock vendor/libc/src/fuchsia/mod.rs /^ pub fn mlock(addr: *const ::c_void, len: ::size_t) -> ::c_int;$/;" f +mlock vendor/libc/src/unix/mod.rs /^ pub fn mlock(addr: *const ::c_void, len: ::size_t) -> ::c_int;$/;" f +mlock vendor/libc/src/vxworks/mod.rs /^ pub fn mlock(addr: *const ::c_void, len: ::size_t) -> ::c_int;$/;" f +mlock vendor/nix/src/sys/mman.rs /^pub unsafe fn mlock(addr: *const c_void, length: size_t) -> Result<()> {$/;" f +mlock2 vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn mlock2(addr: *const ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int;$/;" f +mlock2 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn mlock2(addr: *const ::c_void, len: ::size_t, flags: ::c_uint) -> ::c_int;$/;" f +mlock2 vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn mlock2(addr: *const ::c_void, len: ::size_t, flags: ::c_uint) -> ::c_int;$/;" f +mlockall vendor/libc/src/fuchsia/mod.rs /^ pub fn mlockall(flags: ::c_int) -> ::c_int;$/;" f +mlockall vendor/libc/src/unix/mod.rs /^ pub fn mlockall(flags: ::c_int) -> ::c_int;$/;" f +mlockall vendor/libc/src/vxworks/mod.rs /^ pub fn mlockall(flags: ::c_int) -> ::c_int;$/;" f +mlockall vendor/nix/src/sys/mman.rs /^pub fn mlockall(flags: MlockAllFlags) -> Result<()> {$/;" f +mmap lib/intl/loadmsgcat.c /^# define mmap /;" d file: +mmap vendor/libc/src/fuchsia/mod.rs /^ pub fn mmap($/;" f +mmap vendor/libc/src/unix/mod.rs /^ pub fn mmap($/;" f +mmap vendor/libc/src/vxworks/mod.rs /^ pub fn mmap($/;" f +mmap vendor/nix/src/sys/mman.rs /^pub unsafe fn mmap(addr: *mut c_void, length: size_t, prot: ProtFlags, flags: MapFlags, fd: RawF/;" f +mmap64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn mmap64($/;" f +mmap_size lib/intl/gettextP.h /^ size_t mmap_size;$/;" m struct:loaded_domain typeref:typename:size_t +mmapobj vendor/libc/src/unix/solarish/mod.rs /^ pub fn mmapobj($/;" f +mmdeviceapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "mmdeviceapi")] pub mod mmdeviceapi;$/;" n +mmeapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "mmeapi")] pub mod mmeapi;$/;" n +mmreg vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "mmreg")] pub mod mmreg;$/;" n +mmsystem vendor/winapi/src/um/mod.rs /^#[cfg(feature = "mmsystem")] pub mod mmsystem;$/;" n +mo_file_header lib/intl/gmo.h /^struct mo_file_header$/;" s +mod_floor_64 vendor/nix/src/sys/time.rs /^fn mod_floor_64(this: i64, other: i64) -> i64 {$/;" f +mod_time mailcheck.c /^ time_t mod_time;$/;" m struct:_fileinfo typeref:typename:time_t file: +mode vendor/nix/src/sys/aio.rs /^ pub fn mode(&self) -> AioFsyncMode {$/;" P implementation:AioFsync +mode vendor/nix/test/sys/test_ioctl.rs /^ mode: u32,$/;" m struct:linux_ioctls::v4l2_audio +mode_t builtins_rust/umask/src/lib.rs /^macro_rules! mode_t {$/;" M +mode_t r_bash/src/lib.rs /^pub type mode_t = __mode_t;$/;" t +mode_t r_glob/src/lib.rs /^pub type mode_t = __mode_t;$/;" t +mode_t r_readline/src/lib.rs /^pub type mode_t = __mode_t;$/;" t +mode_t vendor/libc/src/fuchsia/mod.rs /^pub type mode_t = u32;$/;" t +mode_t vendor/libc/src/solid/mod.rs /^pub type mode_t = __mode_t;$/;" t +mode_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type mode_t = u16;$/;" t +mode_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type mode_t = u16;$/;" t +mode_t vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type mode_t = u32;$/;" t +mode_t vendor/libc/src/unix/haiku/mod.rs /^pub type mode_t = u32;$/;" t +mode_t vendor/libc/src/unix/hermit/mod.rs /^pub type mode_t = u32;$/;" t +mode_t vendor/libc/src/unix/linux_like/android/b32/mod.rs /^pub type mode_t = u16;$/;" t +mode_t vendor/libc/src/unix/linux_like/android/b64/mod.rs /^pub type mode_t = u32;$/;" t +mode_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type mode_t = u32;$/;" t +mode_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type mode_t = u32;$/;" t +mode_t vendor/libc/src/unix/newlib/mod.rs /^pub type mode_t = ::c_uint;$/;" t +mode_t vendor/libc/src/unix/redox/mod.rs /^pub type mode_t = ::c_int;$/;" t +mode_t vendor/libc/src/unix/solarish/mod.rs /^pub type mode_t = ::c_uint;$/;" t +mode_t vendor/libc/src/vxworks/mod.rs /^pub type mode_t = ::c_int;$/;" t +mode_t vendor/libc/src/wasi.rs /^pub type mode_t = u32;$/;" t +modes r_bash/src/lib.rs /^ pub modes: ::std::os::raw::c_uint,$/;" m struct:timex +modes r_readline/src/lib.rs /^ pub modes: ::std::os::raw::c_uint,$/;" m struct:timex +modmark lib/readline/display.c /^static int modmark;$/;" v typeref:typename:int file: +module lib/intl/plural-exp.h /^ module, \/* Modulo operation. *\/$/;" e enum:expression::__anon93874cf10103 +module vendor/bitflags/src/lib.rs /^ mod module {$/;" n function:tests::test_pub_crate +module vendor/bitflags/src/lib.rs /^ mod module {$/;" n function:tests::test_pub_in_module +modutx vendor/libc/src/unix/solarish/mod.rs /^ pub fn modutx(ux: *const utmpx) -> *mut utmpx;$/;" f +mon_decimal_point r_bash/src/lib.rs /^ pub mon_decimal_point: *mut ::std::os::raw::c_char,$/;" m struct:lconv +mon_grouping r_bash/src/lib.rs /^ pub mon_grouping: *mut ::std::os::raw::c_char,$/;" m struct:lconv +mon_thousands_sep r_bash/src/lib.rs /^ pub mon_thousands_sep: *mut ::std::os::raw::c_char,$/;" m struct:lconv +morecore lib/malloc/malloc.c /^morecore (nu)$/;" f file: +most_recent_job_in_state jobs.c /^most_recent_job_in_state (job, state)$/;" f file: +most_recent_job_in_state r_jobs/src/lib.rs /^unsafe extern "C" fn most_recent_job_in_state($/;" f +mostly_clean support/texi2dvi /^mostly_clean ()$/;" f +mostlyclean Makefile.in /^mostlyclean: basic-clean$/;" t +mostlyclean builtins/Makefile.in /^mostlyclean: $/;" t +mostlyclean lib/glob/Makefile.in /^mostlyclean: clean$/;" t +mostlyclean lib/glob/doc/Makefile /^clean distclean mostlyclean maintainer-clean:$/;" t +mostlyclean lib/intl/Makefile.in /^mostlyclean:$/;" t +mostlyclean lib/malloc/Makefile.in /^mostlyclean clean:$/;" t +mostlyclean lib/readline/Makefile.in /^mostlyclean: clean$/;" t +mostlyclean lib/sh/Makefile.in /^mostlyclean: clean$/;" t +mostlyclean lib/termcap/Makefile.in /^mostlyclean: clean$/;" t +mostlyclean lib/tilde/Makefile.in /^mostlyclean: clean$/;" t +mostlyclean support/Makefile.in /^distclean maintainer-clean mostlyclean: clean$/;" t +motion lib/readline/rlprivate.h /^ int key, motion; \/* initial key, motion command *\/$/;" m struct:__rl_vimotion_context typeref:typename:int +motion r_readline/src/lib.rs /^ pub motion: ::std::os::raw::c_int,$/;" m struct:__rl_vimotion_context +mount vendor/libc/src/fuchsia/mod.rs /^ pub fn mount($/;" f +mount vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn mount($/;" f +mount vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn mount($/;" f +mount vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mount($/;" f +mount vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn mount($/;" f +mount vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mount($/;" f +mount vendor/nix/src/mount/linux.rs /^pub fn mount u32 {$/;" P implementation:wasm_simd128::v128 +movemask vendor/memchr/src/memmem/vector.rs /^ unsafe fn movemask(self) -> u32 {$/;" P implementation:x86avx::__m256i +movemask vendor/memchr/src/memmem/vector.rs /^ unsafe fn movemask(self) -> u32 {$/;" P implementation:x86sse::__m128i +movemask vendor/memchr/src/memmem/vector.rs /^ unsafe fn movemask(self) -> u32;$/;" P interface:Vector +mprapidef vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "mprapidef")] pub mod mprapidef;$/;" n +mprotect vendor/libc/src/fuchsia/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs /^ pub fn mprotect(addr: *const ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/haiku/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/redox/mod.rs /^ pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/libc/src/unix/solarish/mod.rs /^ pub fn mprotect(addr: *const ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;$/;" f +mprotect vendor/nix/src/sys/mman.rs /^pub unsafe fn mprotect(addr: *mut c_void, length: size_t, prot: ProtFlags) -> Result<()> {$/;" f +mpsc vendor/futures-channel/src/lib.rs /^pub mod mpsc;$/;" n +mpsc_blocking_start_send vendor/futures/tests/sink.rs /^fn mpsc_blocking_start_send() {$/;" f +mq_attr vendor/nix/src/mqueue.rs /^ mq_attr: libc::mq_attr,$/;" m struct:MqAttr +mq_attr_member_t vendor/nix/src/mqueue.rs /^pub type mq_attr_member_t = i64;$/;" t +mq_attr_member_t vendor/nix/src/mqueue.rs /^pub type mq_attr_member_t = libc::c_long;$/;" t +mq_close vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mq_close(mqd: ::mqd_t) -> ::c_int;$/;" f +mq_close vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mq_close(mqd: ::mqd_t) -> ::c_int;$/;" f +mq_close vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mq_close(mqd: ::mqd_t) -> ::c_int;$/;" f +mq_close vendor/libc/src/unix/solarish/mod.rs /^ pub fn mq_close(mqd: ::mqd_t) -> ::c_int;$/;" f +mq_close vendor/libc/src/vxworks/mod.rs /^ pub fn mq_close(mqd: ::mqd_t) -> ::c_int;$/;" f +mq_close vendor/nix/src/mqueue.rs /^pub fn mq_close(mqdes: MqdT) -> Result<()> {$/;" f +mq_getattr vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;$/;" f +mq_getattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;$/;" f +mq_getattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;$/;" f +mq_getattr vendor/libc/src/unix/solarish/mod.rs /^ pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;$/;" f +mq_getattr vendor/libc/src/vxworks/mod.rs /^ pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;$/;" f +mq_getattr vendor/nix/src/mqueue.rs /^pub fn mq_getattr(mqd: &MqdT) -> Result {$/;" f +mq_getfd_np vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn mq_getfd_np(mqd: ::mqd_t) -> ::c_int;$/;" f +mq_notify vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mq_notify(mqd: ::mqd_t, notification: *const ::sigevent) -> ::c_int;$/;" f +mq_notify vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mq_notify(mqd: ::mqd_t, notification: *const ::sigevent) -> ::c_int;$/;" f +mq_open vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t;$/;" f +mq_open vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t;$/;" f +mq_open vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t;$/;" f +mq_open vendor/libc/src/unix/solarish/mod.rs /^ pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t;$/;" f +mq_open vendor/libc/src/vxworks/mod.rs /^ pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t;$/;" f +mq_open vendor/nix/src/mqueue.rs /^pub fn mq_open(name: &CStr,$/;" f +mq_receive vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mq_receive($/;" f +mq_receive vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mq_receive($/;" f +mq_receive vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mq_receive($/;" f +mq_receive vendor/libc/src/unix/solarish/mod.rs /^ pub fn mq_receive($/;" f +mq_receive vendor/libc/src/vxworks/mod.rs /^ pub fn mq_receive($/;" f +mq_receive vendor/nix/src/mqueue.rs /^pub fn mq_receive(mqdes: &MqdT, message: &mut [u8], msg_prio: &mut u32) -> Result {$/;" f +mq_remove_nonblock vendor/nix/src/mqueue.rs /^pub fn mq_remove_nonblock(mqd: &MqdT) -> Result {$/;" f +mq_send vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mq_send($/;" f +mq_send vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mq_send($/;" f +mq_send vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mq_send($/;" f +mq_send vendor/libc/src/unix/solarish/mod.rs /^ pub fn mq_send($/;" f +mq_send vendor/libc/src/vxworks/mod.rs /^ pub fn mq_send($/;" f +mq_send vendor/nix/src/mqueue.rs /^pub fn mq_send(mqdes: &MqdT, message: &[u8], msq_prio: u32) -> Result<()> {$/;" f +mq_set_nonblock vendor/nix/src/mqueue.rs /^pub fn mq_set_nonblock(mqd: &MqdT) -> Result {$/;" f +mq_setattr vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mq_setattr(mqd: ::mqd_t, newattr: *const ::mq_attr, oldattr: *mut ::mq_attr) -> ::c_i/;" f +mq_setattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mq_setattr(mqd: ::mqd_t, newattr: *const ::mq_attr, oldattr: *mut ::mq_attr) -> ::c_i/;" f +mq_setattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mq_setattr(mqd: ::mqd_t, newattr: *const ::mq_attr, oldattr: *mut ::mq_attr) -> ::c_i/;" f +mq_setattr vendor/libc/src/unix/solarish/mod.rs /^ pub fn mq_setattr(mqd: ::mqd_t, newattr: *const ::mq_attr, oldattr: *mut ::mq_attr) -> ::c_i/;" f +mq_setattr vendor/libc/src/vxworks/mod.rs /^ pub fn mq_setattr(mqd: ::mqd_t, newattr: *const ::mq_attr, oldattr: *mut ::mq_attr) -> ::c_i/;" f +mq_setattr vendor/nix/src/mqueue.rs /^pub fn mq_setattr(mqd: &MqdT, newattr: &MqAttr) -> Result {$/;" f +mq_timedreceive vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mq_timedreceive($/;" f +mq_timedreceive vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mq_timedreceive($/;" f +mq_timedreceive vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mq_timedreceive($/;" f +mq_timedreceive vendor/libc/src/unix/solarish/mod.rs /^ pub fn mq_timedreceive($/;" f +mq_timedreceive vendor/libc/src/vxworks/mod.rs /^ pub fn mq_timedreceive($/;" f +mq_timedsend vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mq_timedsend($/;" f +mq_timedsend vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mq_timedsend($/;" f +mq_timedsend vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mq_timedsend($/;" f +mq_timedsend vendor/libc/src/unix/solarish/mod.rs /^ pub fn mq_timedsend($/;" f +mq_timedsend vendor/libc/src/vxworks/mod.rs /^ pub fn mq_timedsend($/;" f +mq_unlink vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn mq_unlink(name: *const ::c_char) -> ::c_int;$/;" f +mq_unlink vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mq_unlink(name: *const ::c_char) -> ::c_int;$/;" f +mq_unlink vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mq_unlink(name: *const ::c_char) -> ::c_int;$/;" f +mq_unlink vendor/libc/src/unix/solarish/mod.rs /^ pub fn mq_unlink(name: *const ::c_char) -> ::c_int;$/;" f +mq_unlink vendor/libc/src/vxworks/mod.rs /^ pub fn mq_unlink(name: *const ::c_char) -> ::c_int;$/;" f +mq_unlink vendor/nix/src/mqueue.rs /^pub fn mq_unlink(name: &CStr) -> Result<()> {$/;" f +mqd_t vendor/libc/src/fuchsia/mod.rs /^pub type mqd_t = ::c_int;$/;" t +mqd_t vendor/libc/src/solid/mod.rs /^pub type mqd_t = c_int;$/;" t +mqd_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type mqd_t = ::c_int;$/;" t +mqd_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type mqd_t = *mut ::c_void;$/;" t +mqd_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type mqd_t = ::c_int;$/;" t +mqd_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type mqd_t = ::c_int;$/;" t +mqd_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type mqd_t = ::c_int;$/;" t +mqd_t vendor/libc/src/unix/solarish/mod.rs /^pub type mqd_t = *mut ::c_void;$/;" t +mqd_t vendor/libc/src/vxworks/mod.rs /^pub type mqd_t = ::c_int;$/;" t +mr_table lib/malloc/table.h /^typedef struct mr_table {$/;" s +mr_table_entry lib/malloc/table.c /^mr_table_entry (mem)$/;" f +mr_table_t lib/malloc/table.h /^} mr_table_t;$/;" t typeref:struct:mr_table +mrand48 r_bash/src/lib.rs /^ pub fn mrand48() -> ::std::os::raw::c_long;$/;" f +mrand48 r_glob/src/lib.rs /^ pub fn mrand48() -> ::std::os::raw::c_long;$/;" f +mrand48 r_readline/src/lib.rs /^ pub fn mrand48() -> ::std::os::raw::c_long;$/;" f +mrand48 vendor/libc/src/solid/mod.rs /^ pub fn mrand48() -> c_long;$/;" f +mrand48 vendor/libc/src/unix/bsd/mod.rs /^ pub fn mrand48() -> ::c_long;$/;" f +mrand48 vendor/libc/src/unix/haiku/mod.rs /^ pub fn mrand48() -> ::c_long;$/;" f +mrand48_r r_bash/src/lib.rs /^ pub fn mrand48_r($/;" f +mrand48_r r_glob/src/lib.rs /^ pub fn mrand48_r($/;" f +mrand48_r r_readline/src/lib.rs /^ pub fn mrand48_r($/;" f +mregister_alloc lib/malloc/table.c /^mregister_alloc (tag, mem, size, file, line)$/;" f +mregister_describe_mem lib/malloc/table.c /^mregister_describe_mem (mem, fp)$/;" f +mregister_dump_table lib/malloc/table.c /^mregister_dump_table()$/;" f typeref:typename:void +mregister_free lib/malloc/table.c /^mregister_free (mem, size, file, line)$/;" f +mregister_table_init lib/malloc/table.c /^mregister_table_init ()$/;" f typeref:typename:void +mremap vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn mremap($/;" f +mremap vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn mremap($/;" f +mremap vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn mremap($/;" f +mremap vendor/nix/src/sys/mman.rs /^pub unsafe fn mremap($/;" f +msaatext vendor/winapi/src/um/mod.rs /^#[cfg(feature = "msaatext")] pub mod msaatext;$/;" n +mscat vendor/winapi/src/um/mod.rs /^#[cfg(feature = "mscat")] pub mod mscat;$/;" n +mschapp vendor/winapi/src/um/mod.rs /^#[cfg(feature = "mschapp")] pub mod mschapp;$/;" n +msg mailcheck.c /^ char *msg;$/;" m struct:_fileinfo typeref:typename:char * file: +msg vendor/thiserror/tests/test_display.rs /^ msg: String,$/;" m struct:test_braced::Error +msg vendor/thiserror/tests/test_error.rs /^ msg: String,$/;" m struct:BracedError +msg_buf lib/readline/display.c /^static char *msg_buf = 0;$/;" v typeref:typename:char * file: +msg_bufsiz lib/readline/display.c /^static int msg_bufsiz = 0;$/;" v typeref:typename:int file: +msg_saved_prompt lib/readline/display.c /^static int msg_saved_prompt = 0;$/;" v typeref:typename:int file: +msgctl vendor/libc/src/fuchsia/mod.rs /^ pub fn msgctl(msqid: ::c_int, cmd: ::c_int, buf: *mut msqid_ds) -> ::c_int;$/;" f +msgctl vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn msgctl(msqid: ::c_int, cmd: ::c_int, buf: *mut ::msqid_ds) -> ::c_int;$/;" f +msgctl vendor/libc/src/unix/haiku/mod.rs /^ pub fn msgctl(msqid: ::c_int, cmd: ::c_int, buf: *mut msqid_ds) -> ::c_int;$/;" f +msgctl vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn msgctl(msqid: ::c_int, cmd: ::c_int, buf: *mut msqid_ds) -> ::c_int;$/;" f +msgget vendor/libc/src/fuchsia/mod.rs /^ pub fn msgget(key: ::key_t, msgflg: ::c_int) -> ::c_int;$/;" f +msgget vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn msgget(key: ::key_t, msgflg: ::c_int) -> ::c_int;$/;" f +msgget vendor/libc/src/unix/haiku/mod.rs /^ pub fn msgget(key: ::key_t, msgflg: ::c_int) -> ::c_int;$/;" f +msgget vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn msgget(key: ::key_t, msgflg: ::c_int) -> ::c_int;$/;" f +msgid lib/intl/dcigettext.c /^ char msgid[ZERO];$/;" m struct:known_translation_t typeref:typename:char[] file: +msgid1 lib/intl/dcigettext.c /^ const char *msgid1;$/;" v typeref:typename:const char * +msgid2 lib/intl/dcigettext.c /^ const char *msgid2;$/;" v typeref:typename:const char * +msgid_len lib/intl/dcigettext.c /^ size_t msgid_len;$/;" v typeref:typename:size_t +msglen_t vendor/libc/src/fuchsia/mod.rs /^pub type msglen_t = ::c_ulong;$/;" t +msglen_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type msglen_t = ::c_ulong;$/;" t +msglen_t vendor/libc/src/unix/haiku/mod.rs /^pub type msglen_t = u32;$/;" t +msglen_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type msglen_t = ::c_ulong;$/;" t +msglen_t vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type msglen_t = ::c_ulong;$/;" t +msglen_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mod.rs /^pub type msglen_t = u64;$/;" t +msglen_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type msglen_t = ::c_ulong;$/;" t +msglen_t vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^pub type msglen_t = ::c_ulong;$/;" t +msgqnum_t vendor/libc/src/fuchsia/mod.rs /^pub type msgqnum_t = ::c_ulong;$/;" t +msgqnum_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type msgqnum_t = ::c_ulong;$/;" t +msgqnum_t vendor/libc/src/unix/haiku/mod.rs /^pub type msgqnum_t = u32;$/;" t +msgqnum_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type msgqnum_t = ::c_ulong;$/;" t +msgqnum_t vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type msgqnum_t = ::c_ulong;$/;" t +msgqnum_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mod.rs /^pub type msgqnum_t = u64;$/;" t +msgqnum_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type msgqnum_t = ::c_ulong;$/;" t +msgqnum_t vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^pub type msgqnum_t = ::c_ulong;$/;" t +msgrcv vendor/libc/src/fuchsia/mod.rs /^ pub fn msgrcv($/;" f +msgrcv vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs /^ pub fn msgrcv($/;" f +msgrcv vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^ pub fn msgrcv($/;" f +msgrcv vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn msgrcv($/;" f +msgrcv vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn msgrcv($/;" f +msgrcv vendor/libc/src/unix/haiku/mod.rs /^ pub fn msgrcv($/;" f +msgrcv vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn msgrcv($/;" f +msgsize vendor/nix/src/mqueue.rs /^ pub const fn msgsize(&self) -> mq_attr_member_t {$/;" P implementation:MqAttr +msgsnd vendor/libc/src/fuchsia/mod.rs /^ pub fn msgsnd($/;" f +msgsnd vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn msgsnd($/;" f +msgsnd vendor/libc/src/unix/haiku/mod.rs /^ pub fn msgsnd($/;" f +msgsnd vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn msgsnd($/;" f +mssip vendor/winapi/src/um/mod.rs /^#[cfg(feature = "mssip")] pub mod mssip;$/;" n +mstats vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn mstats() -> mstats;$/;" f +mstcpip vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "mstcpip")] pub mod mstcpip;$/;" n +mswsock vendor/winapi/src/um/mod.rs /^#[cfg(feature = "mswsock")] pub mod mswsock;$/;" n +mswsockdef vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "mswsockdef")] pub mod mswsockdef;$/;" n +msync vendor/libc/src/fuchsia/mod.rs /^ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int;$/;" f +msync vendor/libc/src/unix/bsd/mod.rs /^ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int;$/;" f +msync vendor/libc/src/unix/haiku/mod.rs /^ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int;$/;" f +msync vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int;$/;" f +msync vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int;$/;" f +msync vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int;$/;" f +msync vendor/libc/src/unix/redox/mod.rs /^ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int;$/;" f +msync vendor/libc/src/unix/solarish/mod.rs /^ pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int;$/;" f +msync vendor/nix/src/sys/mman.rs /^pub unsafe fn msync(addr: *mut c_void, length: size_t, flags: MsFlags) -> Result<()> {$/;" f +mt_hash lib/malloc/table.c /^mt_hash (key)$/;" f file: +mtime mailcheck.c /^#define mtime /;" d file: +mtrace_alloc lib/malloc/trace.c /^mtrace_alloc (tag, mem, size, file, line)$/;" f +mtrace_free lib/malloc/trace.c /^mtrace_free (mem, size, file, line)$/;" f +mul vendor/nix/src/sys/time.rs /^ fn mul(self, rhs: i32) -> TimeSpec {$/;" P implementation:TimeSpec +mul vendor/nix/src/sys/time.rs /^ fn mul(self, rhs: i32) -> TimeVal {$/;" P implementation:TimeVal +mul_assign vendor/syn/src/bigint.rs /^ fn mul_assign(&mut self, base: u8) {$/;" P implementation:BigInt +mult lib/intl/plural-exp.h /^ mult, \/* Multiplication. *\/$/;" e enum:expression::__anon93874cf10103 +multi_index vendor/syn/src/expr.rs /^ fn multi_index(e: &mut Expr, dot_token: &mut Token![.], float: LitFloat) -> Result {$/;" f module:parsing +multi_pat vendor/syn/src/pat.rs /^ pub fn multi_pat(input: ParseStream) -> Result {$/;" f module:parsing +multi_pat_impl vendor/syn/src/pat.rs /^ fn multi_pat_impl(input: ParseStream, leading_vert: Option) -> Result {$/;" f module:parsing +multi_pat_with_leading_vert vendor/syn/src/pat.rs /^ pub fn multi_pat_with_leading_vert(input: ParseStream) -> Result {$/;" f module:parsing +multibyte configure.ac /^AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS/;" e +multimeval lib/sh/timeval.c /^multimeval (d, m)$/;" f +multiple_from_syn vendor/thiserror-impl/src/ast.rs /^ fn multiple_from_syn($/;" P implementation:Field +multiple_senders_close_channel vendor/futures-channel/tests/mpsc-close.rs /^fn multiple_senders_close_channel() {$/;" f +multiple_senders_disconnect vendor/futures-channel/tests/mpsc-close.rs /^fn multiple_senders_disconnect() {$/;" f +multiplier lib/sh/uconvert.c /^static int multiplier[7] = { 1, 100000, 10000, 1000, 100, 10, 1 };$/;" v typeref:typename:int[7] file: +munlock vendor/libc/src/fuchsia/mod.rs /^ pub fn munlock(addr: *const ::c_void, len: ::size_t) -> ::c_int;$/;" f +munlock vendor/libc/src/unix/mod.rs /^ pub fn munlock(addr: *const ::c_void, len: ::size_t) -> ::c_int;$/;" f +munlock vendor/nix/src/sys/mman.rs /^pub unsafe fn munlock(addr: *const c_void, length: size_t) -> Result<()> {$/;" f +munlockall vendor/libc/src/fuchsia/mod.rs /^ pub fn munlockall() -> ::c_int;$/;" f +munlockall vendor/libc/src/unix/mod.rs /^ pub fn munlockall() -> ::c_int;$/;" f +munlockall vendor/libc/src/vxworks/mod.rs /^ pub fn munlockall() -> ::c_int;$/;" f +munlockall vendor/nix/src/sys/mman.rs /^pub fn munlockall() -> Result<()> {$/;" f +munmap lib/intl/loadmsgcat.c /^# define munmap /;" d file: +munmap vendor/libc/src/fuchsia/mod.rs /^ pub fn munmap(addr: *mut ::c_void, len: ::size_t) -> ::c_int;$/;" f +munmap vendor/libc/src/unix/mod.rs /^ pub fn munmap(addr: *mut ::c_void, len: ::size_t) -> ::c_int;$/;" f +munmap vendor/libc/src/vxworks/mod.rs /^ pub fn munmap(addr: *mut ::c_void, len: ::size_t) -> ::c_int;$/;" f +munmap vendor/nix/src/sys/mman.rs /^pub unsafe fn munmap(addr: *mut c_void, len: size_t) -> Result<()> {$/;" f +must_be_building builtins/mkbuiltins.c /^must_be_building (directive, defs)$/;" f +must_swap lib/intl/gettextP.h /^ int must_swap;$/;" m struct:loaded_domain typeref:typename:int +must_swap_hash_tab lib/intl/gettextP.h /^ int must_swap_hash_tab;$/;" m struct:loaded_domain typeref:typename:int +mut_pat vendor/async-trait/src/receiver.rs /^pub fn mut_pat(pat: &mut Pat) -> Option {$/;" f +mut_ptr_opt vendor/nix/src/mount/bsd.rs /^ pub unsafe fn mut_ptr_opt($/;" P implementation:Nmount +mutex vendor/futures-executor/src/thread_pool.rs /^ mutex: UnparkMutex,$/;" m struct:WakeHandle +mutex vendor/futures-util/src/lock/mod.rs /^mod mutex;$/;" n +mutex vendor/futures-util/src/lock/mutex.rs /^ mutex: &'a Mutex,$/;" m struct:MappedMutexGuard +mutex vendor/futures-util/src/lock/mutex.rs /^ mutex: &'a Mutex,$/;" m struct:MutexGuard +mutex vendor/futures-util/src/lock/mutex.rs /^ mutex: Arc>,$/;" m struct:OwnedMutexGuard +mutex vendor/futures-util/src/lock/mutex.rs /^ mutex: Option<&'a Mutex>,$/;" m struct:MutexLockFuture +mutex vendor/futures-util/src/lock/mutex.rs /^ mutex: Option>>,$/;" m struct:OwnedMutexLockFuture +mutex vendor/stdext/src/sync/mod.rs /^pub mod mutex;$/;" n +mutex_acquire_uncontested vendor/futures/tests/lock_mutex.rs /^fn mutex_acquire_uncontested() {$/;" f +mutex_contested vendor/futures/tests/lock_mutex.rs /^fn mutex_contested() {$/;" f +mutex_wakes_waiters vendor/futures/tests/lock_mutex.rs /^fn mutex_wakes_waiters() {$/;" f +mxcr_mask builtins_rust/wait/src/signal.rs /^ pub mxcr_mask: __uint32_t,$/;" m struct:_fpstate +mxcr_mask builtins_rust/wait/src/signal.rs /^ pub mxcr_mask: __uint32_t,$/;" m struct:_libc_fpstate +mxcr_mask r_bash/src/lib.rs /^ pub mxcr_mask: __uint32_t,$/;" m struct:_fpstate +mxcr_mask r_bash/src/lib.rs /^ pub mxcr_mask: __uint32_t,$/;" m struct:_libc_fpstate +mxcr_mask r_glob/src/lib.rs /^ pub mxcr_mask: __uint32_t,$/;" m struct:_fpstate +mxcr_mask r_glob/src/lib.rs /^ pub mxcr_mask: __uint32_t,$/;" m struct:_libc_fpstate +mxcr_mask r_readline/src/lib.rs /^ pub mxcr_mask: __uint32_t,$/;" m struct:_fpstate +mxcr_mask r_readline/src/lib.rs /^ pub mxcr_mask: __uint32_t,$/;" m struct:_libc_fpstate +mxcsr builtins_rust/wait/src/signal.rs /^ pub mxcsr: __uint32_t,$/;" m struct:_fpstate +mxcsr builtins_rust/wait/src/signal.rs /^ pub mxcsr: __uint32_t,$/;" m struct:_libc_fpstate +mxcsr r_bash/src/lib.rs /^ pub mxcsr: __uint32_t,$/;" m struct:_fpstate +mxcsr r_bash/src/lib.rs /^ pub mxcsr: __uint32_t,$/;" m struct:_libc_fpstate +mxcsr r_glob/src/lib.rs /^ pub mxcsr: __uint32_t,$/;" m struct:_fpstate +mxcsr r_glob/src/lib.rs /^ pub mxcsr: __uint32_t,$/;" m struct:_libc_fpstate +mxcsr r_readline/src/lib.rs /^ pub mxcsr: __uint32_t,$/;" m struct:_fpstate +mxcsr r_readline/src/lib.rs /^ pub mxcsr: __uint32_t,$/;" m struct:_libc_fpstate +my_localtime_r lib/sh/mktime.c /^my_localtime_r (t, tp)$/;" f file: +myfn vendor/async-trait/tests/test.rs /^ async fn myfn(&self, _: PhantomData) {}$/;" P interface:issue15::Issue15 +n lib/intl/dcigettext.c /^ unsigned long int n;$/;" v typeref:typename:unsigned long int +n lib/intl/eval-plural.h /^ unsigned long int n;$/;" v typeref:typename:unsigned long int +n vendor/intl_pluralrules/src/operands.rs /^ pub n: f64,$/;" m struct:PluralOperands +n_bufs vendor/futures-util/src/io/write_all_vectored.rs /^ n_bufs: usize,$/;" m struct:tests::TestWriter +n_cs_precedes r_bash/src/lib.rs /^ pub n_cs_precedes: ::std::os::raw::c_char,$/;" m struct:lconv +n_sep_by_space r_bash/src/lib.rs /^ pub n_sep_by_space: ::std::os::raw::c_char,$/;" m struct:lconv +n_shell_variables variables.c /^n_shell_variables ()$/;" f typeref:typename:int file: +n_sign_posn r_bash/src/lib.rs /^ pub n_sign_posn: ::std::os::raw::c_char,$/;" m struct:lconv +n_sysdep_segments lib/intl/gmo.h /^ nls_uint32 n_sysdep_segments;$/;" m struct:mo_file_header typeref:typename:nls_uint32 +n_sysdep_strings lib/intl/gettextP.h /^ nls_uint32 n_sysdep_strings;$/;" m struct:loaded_domain typeref:typename:nls_uint32 +n_sysdep_strings lib/intl/gmo.h /^ nls_uint32 n_sysdep_strings;$/;" m struct:mo_file_header typeref:typename:nls_uint32 +naive vendor/memchr/src/memchr/mod.rs /^pub mod naive;$/;" n +naive_find vendor/memchr/src/memmem/mod.rs /^ fn naive_find(haystack: &[u8], needle: &[u8]) -> Option {$/;" f module:proptests +naive_maximal_suffix_forward vendor/memchr/src/memmem/twoway.rs /^ fn naive_maximal_suffix_forward(needle: &[u8]) -> &[u8] {$/;" f module:tests +naive_maximal_suffix_reverse vendor/memchr/src/memmem/twoway.rs /^ fn naive_maximal_suffix_reverse(needle: &[u8]) -> Vec {$/;" f module:tests +naive_rfind vendor/memchr/src/memmem/mod.rs /^ fn naive_rfind(haystack: &[u8], needle: &[u8]) -> Option {$/;" f module:proptests +nalloc jobs.h /^ ps_index_t nalloc;$/;" m struct:bgpids typeref:typename:ps_index_t +nalloc lib/malloc/table.h /^ int nalloc, nfree;$/;" m struct:mr_table typeref:typename:int +nalloc lib/malloc/table.h /^ int nalloc;$/;" m struct:ma_table typeref:typename:int +nalloc r_bash/src/lib.rs /^ pub nalloc: ps_index_t,$/;" m struct:bgpids +nallocx vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn nallocx(size: ::size_t, flags: ::c_int) -> ::size_t;$/;" f +name alias.h /^ char *name;$/;" m struct:alias typeref:typename:char * +name builtins.h /^ char *name; \/* The name that the user types. *\/$/;" m struct:builtin typeref:typename:char * +name builtins/mkbuiltins.c /^ char *name; \/* The name of this builtin. *\/$/;" m struct:__anon69e836710208 typeref:typename:char * file: +name builtins_rust/alias/src/lib.rs /^ pub name: *mut libc::c_char,$/;" m struct:alias +name builtins_rust/cd/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/cd/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/cd/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/cd/src/lib.rs /^ name: *mut c_char, \/* Symbol that the user types. *\/$/;" m struct:SHELL_VAR +name builtins_rust/cd/src/lib.rs /^ name: *mut c_char,$/;" m struct:coproc_com +name builtins_rust/cmd/src/lib.rs /^ name: String,$/;" m struct:Cmd +name builtins_rust/command/src/lib.rs /^ pub name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/command/src/lib.rs /^ pub name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/command/src/lib.rs /^ pub name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/command/src/lib.rs /^ pub name: *mut libc::c_char,$/;" m struct:coproc_com +name builtins_rust/common/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/common/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/common/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/common/src/lib.rs /^ name: *mut c_char,$/;" m struct:coproc_com +name builtins_rust/common/src/lib.rs /^ pub name: *mut c_char, \/* Symbol that the user types. *\/$/;" m struct:SHELL_VAR +name builtins_rust/common/src/lib.rs /^ pub name: *mut c_char,$/;" m struct:builtin +name builtins_rust/complete/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/complete/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/complete/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/complete/src/lib.rs /^ name: *mut c_char,$/;" m struct:coproc_com +name builtins_rust/declare/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/declare/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/declare/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/declare/src/lib.rs /^ name: *mut c_char, \/* Symbol that the user types. *\/$/;" m struct:SHELL_VAR +name builtins_rust/declare/src/lib.rs /^ name: *mut c_char, \/* empty or NULL means global context *\/$/;" m struct:VAR_CONTEXT +name builtins_rust/declare/src/lib.rs /^ name: *mut c_char,$/;" m struct:coproc_com +name builtins_rust/enable/src/lib.rs /^ pub name: *mut libc::c_char,$/;" m struct:builtin +name builtins_rust/fc/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/fc/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/fc/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/fc/src/lib.rs /^ name: *mut c_char,$/;" m struct:SHELL_VAR +name builtins_rust/fc/src/lib.rs /^ name: *mut c_char,$/;" m struct:coproc_com +name builtins_rust/fg_bg/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/fg_bg/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/fg_bg/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/fg_bg/src/lib.rs /^ name: *mut c_char,$/;" m struct:coproc_com +name builtins_rust/getopts/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/getopts/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/getopts/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/getopts/src/lib.rs /^ name: *mut c_char,$/;" m struct:SHELL_VAR +name builtins_rust/getopts/src/lib.rs /^ name: *mut c_char,$/;" m struct:coproc_com +name builtins_rust/hash/src/lib.rs /^ pub name: *mut libc::c_char,$/;" m struct:alias +name builtins_rust/help/src/lib.rs /^ name: *mut c_char,$/;" m struct:FieldStruct +name builtins_rust/help/src/lib.rs /^ name: *mut libc::c_char,$/;" m struct:builtin +name builtins_rust/jobs/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/jobs/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/jobs/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/jobs/src/lib.rs /^ name: *mut c_char,$/;" m struct:coproc_com +name builtins_rust/kill/src/intercdep.rs /^ pub name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/kill/src/intercdep.rs /^ pub name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/kill/src/intercdep.rs /^ pub name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/kill/src/intercdep.rs /^ pub name: *mut c_char,$/;" m struct:coproc_com +name builtins_rust/mapfile/src/intercdep.rs /^ pub name: *mut c_char,$/;" m struct:variable +name builtins_rust/printf/src/intercdep.rs /^ pub name: *mut c_char,$/;" m struct:variable +name builtins_rust/pushd/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/pushd/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/pushd/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/pushd/src/lib.rs /^ name: *mut c_char,$/;" m struct:coproc_com +name builtins_rust/read/src/intercdep.rs /^ pub name: *mut c_char,$/;" m struct:variable +name builtins_rust/set/src/lib.rs /^ name: *mut libc::c_char,$/;" m struct:opp +name builtins_rust/set/src/lib.rs /^ pub name: *mut libc::c_char,$/;" m struct:variable +name builtins_rust/setattr/src/intercdep.rs /^ pub name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/setattr/src/intercdep.rs /^ pub name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/setattr/src/intercdep.rs /^ pub name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/setattr/src/intercdep.rs /^ pub name: *mut c_char,$/;" m struct:coproc_com +name builtins_rust/setattr/src/intercdep.rs /^ pub name: *mut c_char,$/;" m struct:variable +name builtins_rust/shopt/src/lib.rs /^ pub name: *mut libc::c_char,$/;" m struct:RShoptVars +name builtins_rust/shopt/src/lib.rs /^ pub name: *mut libc::c_char,$/;" m struct:variable +name builtins_rust/source/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/source/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/source/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/source/src/lib.rs /^ name: *mut c_char,$/;" m struct:coproc_com +name builtins_rust/type/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:for_com +name builtins_rust/type/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:function_def +name builtins_rust/type/src/lib.rs /^ name: *mut WordDesc,$/;" m struct:select_com +name builtins_rust/type/src/lib.rs /^ name: *mut libc::c_char,$/;" m struct:SHELL_VAR +name builtins_rust/type/src/lib.rs /^ name: *mut libc::c_char,$/;" m struct:alias +name builtins_rust/type/src/lib.rs /^ name: *mut libc::c_char,$/;" m struct:coproc_com +name builtins_rust/wait/src/lib.rs /^ pub name: *mut c_char,$/;" m struct:variable +name command.h /^ WORD_DESC *name; \/* The name of the function. *\/$/;" m struct:function_def typeref:typename:WORD_DESC * +name command.h /^ WORD_DESC *name; \/* The variable name to get mapped over. *\/$/;" m struct:for_com typeref:typename:WORD_DESC * +name command.h /^ WORD_DESC *name; \/* The variable name to get mapped over. *\/$/;" m struct:select_com typeref:typename:WORD_DESC * +name command.h /^ char *name;$/;" m struct:coproc_com typeref:typename:char * +name flags.h /^ char name;$/;" m struct:flags_alist typeref:typename:char +name input.h /^ char *name;$/;" m struct:__anon9f26d24b0208 typeref:typename:char * +name lib/glob/collsyms.h /^ XCHAR *name;$/;" m struct:_COLLSYM typeref:typename:XCHAR * +name lib/glob/glob.c /^ char *name;$/;" m struct:globval typeref:typename:char * file: +name lib/readline/bind.c /^ char *name;$/;" m struct:name_and_keymap typeref:typename:char * file: +name lib/readline/bind.c /^ const char * const name;$/;" m struct:__anon7144754c0108 typeref:typename:const char * const file: +name lib/readline/bind.c /^ const char * const name;$/;" m struct:__anon7144754c0208 typeref:typename:const char * const file: +name lib/readline/bind.c /^ const char * const name;$/;" m struct:__anon7144754c0308 typeref:typename:const char * const file: +name lib/readline/bind.c /^ const char * const name;$/;" m struct:__anon7144754c0408 typeref:typename:const char * const file: +name lib/readline/examples/fileman.c /^ char *name; \/* User printable name of the function. *\/$/;" m struct:__anonbfd4ee390108 typeref:typename:char * file: +name lib/readline/readline.h /^ const char *name;$/;" m struct:_funmap typeref:typename:const char * +name mailcheck.c /^ char *name;$/;" m struct:_fileinfo typeref:typename:char * file: +name r_bash/src/lib.rs /^ pub name: *mut ::std::os::raw::c_char,$/;" m struct:BASH_INPUT +name r_bash/src/lib.rs /^ pub name: *mut ::std::os::raw::c_char,$/;" m struct:alias +name r_bash/src/lib.rs /^ pub name: *mut ::std::os::raw::c_char,$/;" m struct:builtin +name r_bash/src/lib.rs /^ pub name: *mut ::std::os::raw::c_char,$/;" m struct:coproc_com +name r_bash/src/lib.rs /^ pub name: *mut ::std::os::raw::c_char,$/;" m struct:var_context +name r_bash/src/lib.rs /^ pub name: *mut ::std::os::raw::c_char,$/;" m struct:variable +name r_bash/src/lib.rs /^ pub name: *mut WORD_DESC,$/;" m struct:for_com +name r_bash/src/lib.rs /^ pub name: *mut WORD_DESC,$/;" m struct:function_def +name r_bash/src/lib.rs /^ pub name: *mut WORD_DESC,$/;" m struct:select_com +name r_bash/src/lib.rs /^ pub name: ::std::os::raw::c_char,$/;" m struct:flags_alist +name r_glob/src/lib.rs /^ pub name: *mut ::std::os::raw::c_char,$/;" m struct:_COLLSYM +name r_glob/src/lib.rs /^ pub name: *mut ::std::os::raw::c_char,$/;" m struct:coproc_com +name r_glob/src/lib.rs /^ pub name: *mut WORD_DESC,$/;" m struct:for_com +name r_glob/src/lib.rs /^ pub name: *mut WORD_DESC,$/;" m struct:function_def +name r_glob/src/lib.rs /^ pub name: *mut WORD_DESC,$/;" m struct:select_com +name r_readline/src/lib.rs /^ pub name: *const ::std::os::raw::c_char,$/;" m struct:_funmap +name r_readline/src/lib.rs /^ pub name: *mut ::std::os::raw::c_char,$/;" m struct:coproc_com +name r_readline/src/lib.rs /^ pub name: *mut WORD_DESC,$/;" m struct:for_com +name r_readline/src/lib.rs /^ pub name: *mut WORD_DESC,$/;" m struct:function_def +name r_readline/src/lib.rs /^ pub name: *mut WORD_DESC,$/;" m struct:select_com +name shell.c /^ const char *name;$/;" m struct:__anon92221f0e0108 typeref:typename:const char * file: +name variables.c /^ char *name;$/;" m struct:name_and_function typeref:typename:char * file: +name variables.h /^ char *name; \/* Symbol that the user types. *\/$/;" m struct:variable typeref:typename:char * +name variables.h /^ char *name; \/* empty or NULL means global context *\/$/;" m struct:var_context typeref:typename:char * +name vendor/async-trait/src/lifetime.rs /^ pub name: &'static str,$/;" m struct:CollectLifetimes +name vendor/async-trait/tests/test.rs /^ pub name: &'a str,$/;" m struct:issue31::Struct +name vendor/elsa/examples/arena.rs /^ pub name: &'static str,$/;" m struct:Thing +name vendor/elsa/examples/mutable_arena.rs /^ pub name: &'static str,$/;" m struct:Person +name vendor/fluent-fallback/src/types.rs /^ pub name: Cow<'l, str>,$/;" m struct:L10nAttribute +name vendor/fluent-syntax/src/ast/mod.rs /^ pub name: Identifier,$/;" m struct:NamedArgument +name vendor/fluent-syntax/src/ast/mod.rs /^ pub name: S,$/;" m struct:Identifier +name vendor/nix/src/net/if_.rs /^ pub fn name(&self) -> &CStr {$/;" P implementation:if_nameindex::Interface +name vendor/nix/src/sys/inotify.rs /^ pub name: Option$/;" m struct:InotifyEvent +name vendor/nix/test/sys/test_ioctl.rs /^ name: [u8; 32],$/;" m struct:linux_ioctls::v4l2_audio +name vendor/proc-macro2/src/fallback.rs /^ name: String,$/;" m struct:FileInfo +name vendor/quote/src/runtime.rs /^ name: &'a str,$/;" m struct:push_lifetime::Lifetime +name vendor/quote/src/runtime.rs /^ name: &'a str,$/;" m struct:push_lifetime_spanned::Lifetime +name_and_function variables.c /^struct name_and_function {$/;" s file: +name_and_keymap lib/readline/bind.c /^struct name_and_keymap {$/;" s file: +name_cell builtins_rust/set/src/lib.rs /^macro_rules! name_cell {$/;" M +name_cell variables.h /^#define name_cell(/;" d +name_is_acceptable bashline.c /^name_is_acceptable (name)$/;" f file: +name_key_alist lib/readline/bind.c /^static const assoc_list name_key_alist[] = {$/;" v typeref:typename:const assoc_list[] file: +name_match lib/termcap/termcap.c /^name_match (line, name)$/;" f file: +name_max vendor/nix/src/sys/statvfs.rs /^ pub fn name_max(&self) -> c_ulong {$/;" P implementation:Statvfs +name_prefix vendor/futures-executor/src/thread_pool.rs /^ name_prefix: Option,$/;" m struct:ThreadPoolBuilder +name_prefix vendor/futures-executor/src/thread_pool.rs /^ pub fn name_prefix>(&mut self, name_prefix: S) -> &mut Self {$/;" P implementation:ThreadPoolBuilder +name_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type name_t = u64;$/;" t +name_to_handle_at r_bash/src/lib.rs /^ pub fn name_to_handle_at($/;" f +named vendor/fluent-syntax/src/ast/mod.rs /^ pub named: Vec>,$/;" m struct:CallArguments +named_function_string builtins_rust/declare/src/lib.rs /^ fn named_function_string(name: *mut c_char, cmd: *mut COMMAND, i: i32) -> *mut c_char;$/;" f +named_function_string builtins_rust/setattr/src/intercdep.rs /^ pub fn named_function_string (name: *mut c_char, command: *mut COMMAND, flags: c_int) -> *mu/;" f +named_function_string builtins_rust/type/src/lib.rs /^ fn named_function_string($/;" f +named_function_string print_cmd.c /^named_function_string (name, command, flags)$/;" f +named_function_string r_bash/src/lib.rs /^ pub fn named_function_string($/;" f +namedpipeapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "namedpipeapi")] pub mod namedpipeapi;$/;" n +nameref_cell builtins_rust/declare/src/lib.rs /^unsafe fn nameref_cell(var: *mut SHELL_VAR) -> *mut c_char {$/;" f +nameref_cell builtins_rust/set/src/lib.rs /^macro_rules! nameref_cell {$/;" M +nameref_cell variables.h /^#define nameref_cell(/;" d +nameref_invalid_value builtins_rust/setattr/src/intercdep.rs /^ pub static mut nameref_invalid_value: SHELL_VAR;$/;" v +nameref_invalid_value r_bash/src/lib.rs /^ pub static mut nameref_invalid_value: SHELL_VAR;$/;" v +nameref_invalid_value variables.c /^SHELL_VAR nameref_invalid_value;$/;" v typeref:typename:SHELL_VAR +nameref_maxloop_value variables.c /^static SHELL_VAR nameref_maxloop_value;$/;" v typeref:typename:SHELL_VAR file: +nameref_p builtins_rust/declare/src/lib.rs /^unsafe fn nameref_p(var: *mut SHELL_VAR) -> i32 {$/;" f +nameref_p builtins_rust/set/src/lib.rs /^macro_rules! nameref_p {$/;" M +nameref_p variables.h /^#define nameref_p(/;" d +nameref_transform_name builtins_rust/declare/src/lib.rs /^ fn nameref_transform_name(name: *mut c_char, flags: i32) -> *mut c_char;$/;" f +nameref_transform_name r_bash/src/lib.rs /^ pub fn nameref_transform_name($/;" f +nameref_transform_name variables.c /^nameref_transform_name (name, flags)$/;" f +names vendor/thiserror-impl/src/generics.rs /^ names: Set<&'a Ident>,$/;" m struct:ParamsInScope +namespaceapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "namespaceapi")] pub mod namespaceapi;$/;" n +nanos_mod_sec vendor/nix/src/sys/time.rs /^ fn nanos_mod_sec(&self) -> timespec_tv_nsec_t {$/;" P implementation:TimeSpec +nanoseconds vendor/nix/src/sys/time.rs /^ fn nanoseconds(nanoseconds: i64) -> Self;$/;" P interface:TimeValLike +nanoseconds vendor/nix/src/sys/time.rs /^ fn nanoseconds(nanoseconds: i64) -> TimeSpec {$/;" P implementation:TimeSpec +nanoseconds vendor/nix/src/sys/time.rs /^ fn nanoseconds(nanoseconds: i64) -> TimeVal {$/;" P implementation:TimeVal +nanosleep r_bash/src/lib.rs /^ pub fn nanosleep($/;" f +nanosleep r_readline/src/lib.rs /^ pub fn nanosleep($/;" f +nanosleep vendor/libc/src/fuchsia/mod.rs /^ pub fn nanosleep(rqtp: *const timespec, rmtp: *mut timespec) -> ::c_int;$/;" f +nanosleep vendor/libc/src/unix/mod.rs /^ pub fn nanosleep(rqtp: *const timespec, rmtp: *mut timespec) -> ::c_int;$/;" f +nanosleep vendor/libc/src/vxworks/mod.rs /^ pub fn nanosleep(rqtp: *const ::timespec, rmtp: *mut ::timespec) -> ::c_int;$/;" f +nanosleep vendor/libc/src/wasi.rs /^ pub fn nanosleep(a: *const timespec, b: *mut timespec) -> c_int;$/;" f +nanotime_t vendor/libc/src/unix/haiku/native.rs /^pub type nanotime_t = i64;$/;" t +nargs lib/intl/plural-exp.h /^ int nargs; \/* Number of arguments. *\/$/;" m struct:expression typeref:typename:int +native vendor/libc/src/unix/haiku/mod.rs /^mod native;$/;" n +natural_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type natural_t = u32;$/;" t +nb30 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "nb30")] pub mod nb30;$/;" n +nbucjets builtins_rust/hash/src/lib.rs /^ pub nbucjets: i32,$/;" m struct:hash_table +nbuckets builtins_rust/alias/src/lib.rs /^ pub nbuckets: libc::c_int,$/;" m struct:hash_table +nbuckets builtins_rust/declare/src/lib.rs /^ nbuckets: i32, \/* How many buckets does this table have. *\/$/;" m struct:HASH_TABLE +nbuckets builtins_rust/setattr/src/intercdep.rs /^ nbuckets:i32, \/* How many buckets does this table have. *\/$/;" m struct:HASH_TABLE +nbuckets hashlib.h /^ int nbuckets; \/* How many buckets does this table have. *\/$/;" m struct:hash_table typeref:typename:int +nbuckets r_bash/src/lib.rs /^ pub nbuckets: ::std::os::raw::c_int,$/;" m struct:hash_table +nbuckets r_jobs/src/lib.rs /^ pub nbuckets: c_int,$/;" m struct:hash_table +nbuffers input.c /^static int nbuffers;$/;" v typeref:typename:int file: +nbytes vendor/nix/src/sys/aio.rs /^ pub fn nbytes(&self) -> usize {$/;" P implementation:AioRead +nbytes vendor/nix/src/sys/aio.rs /^ pub fn nbytes(&self) -> usize {$/;" P implementation:AioWrite +nc include/ocache.h /^ int nc; \/* number of cache entries *\/$/;" m struct:objcache typeref:typename:int +nc r_bash/src/lib.rs /^ pub nc: ::std::os::raw::c_int,$/;" m struct:objcache +nchars_avail lib/sh/input_avail.c /^nchars_avail (fd, nchars)$/;" f +ncmd builtins_rust/ulimit/src/lib.rs /^static mut ncmd: i32 = 0;$/;" v +ncoalesce lib/malloc/mstats.h /^ int ncoalesce;$/;" m struct:bucket_stats typeref:typename:int +ncoalesce lib/malloc/mstats.h /^ int ncoalesce[NBUCKETS];$/;" m struct:_malstats typeref:typename:int[] +ncoproc execute_cmd.c /^ int ncoproc;$/;" m struct:cplist typeref:typename:int file: +ncrypt vendor/winapi/src/um/mod.rs /^#[cfg(feature = "ncrypt")] pub mod ncrypt;$/;" n +ncxt lib/readline/rlprivate.h /^ _rl_arg_cxt ncxt;$/;" m struct:__rl_vimotion_context typeref:typename:_rl_arg_cxt +ncxt r_readline/src/lib.rs /^ pub ncxt: _rl_arg_cxt,$/;" m struct:__rl_vimotion_context +need_here_doc r_bash/src/lib.rs /^ pub need_here_doc: ::std::os::raw::c_int,$/;" m struct:_sh_parser_state_t +need_here_doc r_bash/src/lib.rs /^ pub static mut need_here_doc: ::std::os::raw::c_int;$/;" v +need_here_doc shell.h /^ int need_here_doc;$/;" m struct:_sh_parser_state_t typeref:typename:int +need_to_poll vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ need_to_poll: u8,$/;" m struct:InnerWaker +needle vendor/memchr/src/memchr/iter.rs /^ needle: u8,$/;" m struct:Memchr +needle vendor/memchr/src/memmem/mod.rs /^ fn needle(&self) -> &[u8] {$/;" P implementation:Searcher +needle vendor/memchr/src/memmem/mod.rs /^ fn needle(&self) -> &[u8] {$/;" P implementation:SearcherRev +needle vendor/memchr/src/memmem/mod.rs /^ needle: CowBytes<'n>,$/;" m struct:Searcher +needle vendor/memchr/src/memmem/mod.rs /^ needle: CowBytes<'n>,$/;" m struct:SearcherRev +needle vendor/memchr/src/memmem/mod.rs /^ pub fn needle(&self) -> &[u8] {$/;" P implementation:Finder +needle vendor/memchr/src/memmem/mod.rs /^ pub fn needle(&self) -> &[u8] {$/;" P implementation:FinderRev +needle vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) needle: Vec,$/;" m struct:tests::PrefilterTest +needle1 vendor/memchr/src/memchr/iter.rs /^ needle1: u8,$/;" m struct:Memchr2 +needle1 vendor/memchr/src/memchr/iter.rs /^ needle1: u8,$/;" m struct:Memchr3 +needle2 vendor/memchr/src/memchr/iter.rs /^ needle2: u8,$/;" m struct:Memchr2 +needle2 vendor/memchr/src/memchr/iter.rs /^ needle2: u8,$/;" m struct:Memchr3 +needle3 vendor/memchr/src/memchr/iter.rs /^ needle3: u8,$/;" m struct:Memchr3 +needles vendor/memchr/src/tests/memchr/testdata.rs /^ fn needles(&self, count: usize) -> Option> {$/;" P implementation:MemchrTest +needles vendor/memchr/src/tests/memchr/testdata.rs /^ needles: &'static [u8],$/;" m struct:MemchrTestStatic +needles vendor/memchr/src/tests/memchr/testdata.rs /^ needles: Vec,$/;" m struct:MemchrTest +neg vendor/nix/src/sys/time.rs /^ fn neg(self) -> TimeSpec {$/;" P implementation:TimeSpec +neg vendor/nix/src/sys/time.rs /^ fn neg(self) -> TimeVal {$/;" P implementation:TimeVal +negative vendor/syn/tests/test_lit.rs /^fn negative() {$/;" f +negative_sign r_bash/src/lib.rs /^ pub negative_sign: *mut ::std::os::raw::c_char,$/;" m struct:lconv +negotiate vendor/fluent-langneg/src/lib.rs /^pub mod negotiate;$/;" n +negotiate_bench vendor/fluent-langneg/benches/negotiate.rs /^fn negotiate_bench(c: &mut Criterion) {$/;" f +negotiate_languages vendor/fluent-langneg/src/negotiate/mod.rs /^pub fn negotiate_languages<$/;" f +nentries builtins_rust/alias/src/lib.rs /^ pub nentries: libc::c_int,$/;" m struct:hash_table +nentries builtins_rust/declare/src/lib.rs /^ nentries: i32, \/* How many entries does this table have. *\/$/;" m struct:HASH_TABLE +nentries builtins_rust/hash/src/lib.rs /^ pub nentries: i32,$/;" m struct:hash_table +nentries builtins_rust/setattr/src/intercdep.rs /^ nentries:i32 \/* How many entries does this table have. *\/$/;" m struct:HASH_TABLE +nentries hashlib.h /^ int nentries; \/* How many entries does this table have. *\/$/;" m struct:hash_table typeref:typename:int +nentries r_bash/src/lib.rs /^ pub nentries: ::std::os::raw::c_int,$/;" m struct:hash_table +nentries r_jobs/src/lib.rs /^ pub nentries: c_int,$/;" m struct:hash_table +nesting_run vendor/futures-executor/tests/local_pool.rs /^fn nesting_run() {$/;" f +nesting_run_run_until_stalled vendor/futures-executor/tests/local_pool.rs /^fn nesting_run_run_until_stalled() {$/;" f +net-redirections configure.ac /^AC_ARG_ENABLE(net-redirections, AC_HELP_STRING([--enable-net-redirections], [enable \/dev\/tcp\//;" e +netconn.o lib/sh/Makefile.in /^netconn.o: ${BASHINCDIR}\/posixstat.h ${BASHINCDIR}\/filecntl.h$/;" t +netconn.o lib/sh/Makefile.in /^netconn.o: ${BUILD_DIR}\/config.h$/;" t +netconn.o lib/sh/Makefile.in /^netconn.o: ${topdir}\/bashtypes.h$/;" t +netconn.o lib/sh/Makefile.in /^netconn.o: netconn.c$/;" t +netioapi vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "netioapi")] pub mod netioapi;$/;" n +netlink vendor/nix/src/sys/socket/addr.rs /^pub mod netlink {$/;" n +netmask vendor/nix/src/ifaddrs.rs /^ pub netmask: Option,$/;" m struct:InterfaceAddress +netopen lib/sh/netopen.c /^netopen (path)$/;" f +netopen r_bash/src/lib.rs /^ pub fn netopen(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +netopen.o lib/sh/Makefile.in /^netopen.o: ${BUILD_DIR}\/config.h$/;" t +netopen.o lib/sh/Makefile.in /^netopen.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +netopen.o lib/sh/Makefile.in /^netopen.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +netopen.o lib/sh/Makefile.in /^netopen.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h ${topdir}\/xmalloc.h$/;" t +netopen.o lib/sh/Makefile.in /^netopen.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +netopen.o lib/sh/Makefile.in /^netopen.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +netopen.o lib/sh/Makefile.in /^netopen.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/conftyp/;" t +netopen.o lib/sh/Makefile.in /^netopen.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +netopen.o lib/sh/Makefile.in /^netopen.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp.h$/;" t +netopen.o lib/sh/Makefile.in /^netopen.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +netopen.o lib/sh/Makefile.in /^netopen.o: netopen.c$/;" t +never vendor/futures-util/src/lib.rs /^pub mod never;$/;" n +never_error vendor/futures-util/src/future/future/mod.rs /^ fn never_error(self) -> NeverError$/;" P interface:FutureExt +new builtins_rust/complete/src/lib.rs /^ pub fn new() -> CompactsArray {$/;" P implementation:CompactsArray +new builtins_rust/complete/src/lib.rs /^ pub fn new() -> CompoptArray {$/;" P implementation:CompoptArray +new builtins_rust/exec_cmd/src/lib.rs /^ fn new() -> Self {$/;" P implementation:SimpleFactory +new r_bash/src/lib.rs /^ pub fn new() -> Self {$/;" P implementation:__IncompleteArrayField +new r_bash/src/lib.rs /^ pub fn new(storage: Storage) -> Self {$/;" f +new r_readline/src/lib.rs /^ pub fn new(storage: Storage) -> Self {$/;" f +new support/texi2html /^sub new$/;" s +new vendor/async-trait/src/lifetime.rs /^ pub fn new(name: &'static str, default_span: Span) -> Self {$/;" P implementation:CollectLifetimes +new vendor/async-trait/tests/test.rs /^ fn new() -> Self {$/;" P implementation:issue45::TestSubscriber +new vendor/autocfg/src/lib.rs /^ pub fn new() -> Result {$/;" P implementation:AutoCfg +new vendor/autocfg/src/lib.rs /^pub fn new() -> AutoCfg {$/;" f +new vendor/autocfg/src/version.rs /^ pub fn new(major: usize, minor: usize, patch: usize) -> Self {$/;" P implementation:Version +new vendor/bitflags/tests/compile-pass/impls/inherent_methods.rs /^ pub fn new() -> Flags {$/;" P implementation:Flags +new vendor/chunky-vec/src/lib.rs /^ pub(crate) fn new(vec: &'a ChunkyVec) -> Self {$/;" P implementation:Iter +new vendor/chunky-vec/src/lib.rs /^ pub(crate) fn new(vec: &'a mut ChunkyVec) -> Self {$/;" P implementation:IterMut +new vendor/elsa/examples/arena.rs /^ fn new() -> Arena<'arena> {$/;" P implementation:Arena +new vendor/elsa/examples/fluentresource.rs /^ pub fn new() -> Self {$/;" P implementation:ResourceManager +new vendor/elsa/examples/fluentresource.rs /^ pub fn new(s: &'mgr str) -> Self {$/;" P implementation:FluentResource +new vendor/elsa/examples/mutable_arena.rs /^ fn new() -> Arena<'arena> {$/;" P implementation:Arena +new vendor/elsa/examples/string_interner.rs /^ fn new() -> Self {$/;" P implementation:StringInterner +new vendor/elsa/src/index_map.rs /^ pub fn new() -> Self {$/;" P implementation:FrozenIndexMap +new vendor/elsa/src/index_set.rs /^ pub fn new() -> Self {$/;" P implementation:FrozenIndexSet +new vendor/elsa/src/map.rs /^ pub fn new() -> Self {$/;" P implementation:FrozenBTreeMap +new vendor/elsa/src/map.rs /^ pub fn new() -> Self {$/;" P implementation:FrozenMap +new vendor/elsa/src/sync.rs /^ pub fn new() -> Self {$/;" P implementation:FrozenBTreeMap +new vendor/elsa/src/sync.rs /^ pub fn new() -> Self {$/;" P implementation:FrozenMap +new vendor/elsa/src/sync.rs /^ pub fn new() -> Self {$/;" P implementation:FrozenVec +new vendor/elsa/src/vec.rs /^ pub fn new() -> Self {$/;" P implementation:FrozenVec +new vendor/fluent-bundle/src/args.rs /^ pub fn new() -> Self {$/;" P implementation:FluentArgs +new vendor/fluent-bundle/src/bundle.rs /^ fn new(lang: LanguageIdentifier) -> Self$/;" P implementation:IntlLangMemoizer +new vendor/fluent-bundle/src/bundle.rs /^ pub fn new(locales: Vec) -> Self {$/;" P implementation:FluentBundle +new vendor/fluent-bundle/src/concurrent.rs /^ fn new(lang: LanguageIdentifier) -> Self$/;" P implementation:IntlLangMemoizer +new vendor/fluent-bundle/src/memoizer.rs /^ fn new(lang: LanguageIdentifier) -> Self$/;" P interface:MemoizerKind +new vendor/fluent-bundle/src/resolver/scope.rs /^ pub fn new($/;" P implementation:Scope +new vendor/fluent-bundle/src/types/number.rs /^ pub const fn new(value: f64, options: FluentNumberOptions) -> Self {$/;" P implementation:FluentNumber +new vendor/fluent-fallback/src/bundles.rs /^ pub fn new

    (sync: bool, res_ids: Vec, generator: &G, provider: &P) -> Self$/;" f +new vendor/fluent-fallback/src/cache.rs /^ pub fn new(iter: I) -> Self {$/;" f +new vendor/fluent-fallback/src/cache.rs /^ pub fn new(stream: S) -> Self {$/;" f +new vendor/fluent-fallback/src/localization.rs /^ pub fn new(res_ids: Vec, sync: bool) -> Self {$/;" f +new vendor/fluent-fallback/src/pin_cell/mod.rs /^ pub const fn new(value: T) -> PinCell {$/;" P implementation:PinCell +new vendor/fluent-fallback/src/types.rs /^ pub fn new>(value: S, resource_type: ResourceType) -> Self {$/;" P implementation:ResourceId +new vendor/fluent-fallback/tests/localization_test.rs /^ pub fn new(locales: Vec) -> Self {$/;" P implementation:Locales +new vendor/fluent-resmgr/src/resource_manager.rs /^ pub fn new(path_scheme: String) -> Self {$/;" P implementation:ResourceManager +new vendor/fluent-syntax/src/parser/core.rs /^ pub fn new(source: S) -> Self {$/;" f +new vendor/futures-channel/src/lock.rs /^ pub(crate) fn new(t: T) -> Self {$/;" P implementation:Lock +new vendor/futures-channel/src/mpsc/mod.rs /^ fn new() -> Self {$/;" P implementation:SenderTask +new vendor/futures-channel/src/mpsc/queue.rs /^ pub(super) fn new() -> Self {$/;" P implementation:Queue +new vendor/futures-channel/src/mpsc/queue.rs /^ unsafe fn new(v: Option) -> *mut Self {$/;" P implementation:Node +new vendor/futures-channel/src/oneshot.rs /^ fn new() -> Self {$/;" P implementation:Inner +new vendor/futures-channel/tests/mpsc-close.rs /^ fn new() -> (TestTask, mpsc::Sender) {$/;" P implementation:stress_try_send_as_receiver_closes::TestTask +new vendor/futures-core/src/task/__internal/atomic_waker.rs /^ pub const fn new() -> Self {$/;" P implementation:AtomicWaker +new vendor/futures-executor/src/local_pool.rs /^ pub fn new() -> Self {$/;" P implementation:LocalPool +new vendor/futures-executor/src/thread_pool.rs /^ pub fn new() -> Result {$/;" P implementation:ThreadPool +new vendor/futures-executor/src/thread_pool.rs /^ pub fn new() -> Self {$/;" P implementation:ThreadPoolBuilder +new vendor/futures-executor/src/unpark_mutex.rs /^ pub(crate) fn new() -> Self {$/;" P implementation:UnparkMutex +new vendor/futures-task/src/future_obj.rs /^ pub fn new + 'a>(f: F) -> Self {$/;" P implementation:LocalFutureObj +new vendor/futures-task/src/future_obj.rs /^ pub fn new + Send>(f: F) -> Self {$/;" P implementation:FutureObj +new vendor/futures-task/src/waker_ref.rs /^ pub fn new(waker: &'a Waker) -> Self {$/;" P implementation:WakerRef +new vendor/futures-util/benches_disabled/bilock.rs /^ fn new(lock: BiLock) -> Self {$/;" P implementation:bench::LockStream +new vendor/futures-util/src/abortable.rs /^ pub fn new(task: T, reg: AbortRegistration) -> Self {$/;" P implementation:Abortable +new vendor/futures-util/src/compat/compat01as03.rs /^ pub fn new(inner: S) -> Self {$/;" P implementation:Compat01As03Sink +new vendor/futures-util/src/compat/compat01as03.rs /^ pub fn new(object: T) -> Self {$/;" P implementation:Compat01As03 +new vendor/futures-util/src/compat/compat03as01.rs /^ fn new() -> Self {$/;" P implementation:Current +new vendor/futures-util/src/compat/compat03as01.rs /^ pub fn new(inner: T) -> Self {$/;" P implementation:Compat +new vendor/futures-util/src/compat/compat03as01.rs /^ pub fn new(inner: T) -> Self {$/;" P implementation:CompatSink +new vendor/futures-util/src/future/future/catch_unwind.rs /^ pub(super) fn new(future: Fut) -> Self {$/;" f +new vendor/futures-util/src/future/future/flatten.rs /^ pub(crate) fn new(future: Fut1) -> Self {$/;" P implementation:Flatten +new vendor/futures-util/src/future/future/fuse.rs /^ pub(super) fn new(f: Fut) -> Self {$/;" P implementation:Fuse +new vendor/futures-util/src/future/future/map.rs /^ pub(crate) fn new(future: Fut, f: F) -> Self {$/;" P implementation:Map +new vendor/futures-util/src/future/future/shared.rs /^ pub(super) fn new(future: Fut) -> Self {$/;" P implementation:Shared +new vendor/futures-util/src/future/try_future/into_future.rs /^ pub(crate) fn new(future: Fut) -> Self {$/;" P implementation:IntoFuture +new vendor/futures-util/src/future/try_future/try_flatten.rs /^ pub(crate) fn new(future: Fut1) -> Self {$/;" P implementation:TryFlatten +new vendor/futures-util/src/future/try_future/try_flatten_err.rs /^ pub(crate) fn new(future: Fut1) -> Self {$/;" P implementation:TryFlattenErr +new vendor/futures-util/src/io/allow_std.rs /^ pub fn new(io: T) -> Self {$/;" P implementation:AllowStdIo +new vendor/futures-util/src/io/buf_reader.rs /^ pub fn new(inner: R) -> Self {$/;" P implementation:BufReader +new vendor/futures-util/src/io/buf_writer.rs /^ pub fn new(inner: W) -> Self {$/;" P implementation:BufWriter +new vendor/futures-util/src/io/chain.rs /^ pub(super) fn new(first: T, second: U) -> Self {$/;" f +new vendor/futures-util/src/io/close.rs /^ pub(super) fn new(writer: &'a mut W) -> Self {$/;" P implementation:Close +new vendor/futures-util/src/io/cursor.rs /^ pub fn new(inner: T) -> Self {$/;" P implementation:Cursor +new vendor/futures-util/src/io/fill_buf.rs /^ pub(super) fn new(reader: &'a mut R) -> Self {$/;" P implementation:FillBuf +new vendor/futures-util/src/io/flush.rs /^ pub(super) fn new(writer: &'a mut W) -> Self {$/;" P implementation:Flush +new vendor/futures-util/src/io/into_sink.rs /^ pub(super) fn new(writer: W) -> Self {$/;" P implementation:IntoSink +new vendor/futures-util/src/io/line_writer.rs /^ pub fn new(inner: W) -> LineWriter {$/;" P implementation:LineWriter +new vendor/futures-util/src/io/lines.rs /^ pub(super) fn new(reader: R) -> Self {$/;" P implementation:Lines +new vendor/futures-util/src/io/read.rs /^ pub(super) fn new(reader: &'a mut R, buf: &'a mut [u8]) -> Self {$/;" P implementation:Read +new vendor/futures-util/src/io/read_exact.rs /^ pub(super) fn new(reader: &'a mut R, buf: &'a mut [u8]) -> Self {$/;" P implementation:ReadExact +new vendor/futures-util/src/io/read_line.rs /^ pub(super) fn new(reader: &'a mut R, buf: &'a mut String) -> Self {$/;" P implementation:ReadLine +new vendor/futures-util/src/io/read_to_end.rs /^ pub(super) fn new(reader: &'a mut R, buf: &'a mut Vec) -> Self {$/;" P implementation:ReadToEnd +new vendor/futures-util/src/io/read_to_string.rs /^ pub(super) fn new(reader: &'a mut R, buf: &'a mut String) -> Self {$/;" P implementation:ReadToString +new vendor/futures-util/src/io/read_until.rs /^ pub(super) fn new(reader: &'a mut R, byte: u8, buf: &'a mut Vec) -> Self {$/;" P implementation:ReadUntil +new vendor/futures-util/src/io/read_vectored.rs /^ pub(super) fn new(reader: &'a mut R, bufs: &'a mut [IoSliceMut<'a>]) -> Self {$/;" P implementation:ReadVectored +new vendor/futures-util/src/io/seek.rs /^ pub(super) fn new(seek: &'a mut S, pos: SeekFrom) -> Self {$/;" P implementation:Seek +new vendor/futures-util/src/io/take.rs /^ pub(super) fn new(inner: R, limit: u64) -> Self {$/;" P implementation:Take +new vendor/futures-util/src/io/window.rs /^ pub fn new(t: T) -> Self {$/;" P implementation:Window +new vendor/futures-util/src/io/write.rs /^ pub(super) fn new(writer: &'a mut W, buf: &'a [u8]) -> Self {$/;" P implementation:Write +new vendor/futures-util/src/io/write_all.rs /^ pub(super) fn new(writer: &'a mut W, buf: &'a [u8]) -> Self {$/;" P implementation:WriteAll +new vendor/futures-util/src/io/write_all_vectored.rs /^ pub(super) fn new(writer: &'a mut W, mut bufs: &'a mut [IoSlice<'a>]) -> Self {$/;" P implementation:WriteAllVectored +new vendor/futures-util/src/io/write_vectored.rs /^ pub(super) fn new(writer: &'a mut W, bufs: &'a [IoSlice<'a>]) -> Self {$/;" P implementation:WriteVectored +new vendor/futures-util/src/lock/bilock.rs /^ pub fn new(t: T) -> (Self, Self) {$/;" P implementation:BiLock +new vendor/futures-util/src/lock/mutex.rs /^ pub fn new(t: T) -> Self {$/;" P implementation:Mutex +new vendor/futures-util/src/sink/buffer.rs /^ pub(super) fn new(sink: Si, capacity: usize) -> Self {$/;" P implementation:Buffer +new vendor/futures-util/src/sink/close.rs /^ pub(super) fn new(sink: &'a mut Si) -> Self {$/;" P implementation:Close +new vendor/futures-util/src/sink/err_into.rs /^ pub(super) fn new(sink: Si) -> Self {$/;" f +new vendor/futures-util/src/sink/fanout.rs /^ pub(super) fn new(sink1: Si1, sink2: Si2) -> Self {$/;" P implementation:Fanout +new vendor/futures-util/src/sink/feed.rs /^ pub(super) fn new(sink: &'a mut Si, item: Item) -> Self {$/;" P implementation:Feed +new vendor/futures-util/src/sink/flush.rs /^ pub(super) fn new(sink: &'a mut Si) -> Self {$/;" P implementation:Flush +new vendor/futures-util/src/sink/map_err.rs /^ pub(super) fn new(sink: Si, f: F) -> Self {$/;" P implementation:SinkMapErr +new vendor/futures-util/src/sink/send.rs /^ pub(super) fn new(sink: &'a mut Si, item: Item) -> Self {$/;" P implementation:Send +new vendor/futures-util/src/sink/send_all.rs /^ pub(super) fn new(sink: &'a mut Si, stream: &'a mut St) -> Self {$/;" f +new vendor/futures-util/src/sink/with.rs /^ pub(super) fn new(sink: Si, f: F) -> Self$/;" f +new vendor/futures-util/src/sink/with_flat_map.rs /^ pub(super) fn new(sink: Si, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/futures_ordered.rs /^ pub fn new() -> Self {$/;" P implementation:FuturesOrdered +new vendor/futures-util/src/stream/futures_unordered/mod.rs /^ pub fn new() -> Self {$/;" P implementation:FuturesUnordered +new vendor/futures-util/src/stream/once.rs /^ pub(crate) fn new(future: Fut) -> Self {$/;" P implementation:Once +new vendor/futures-util/src/stream/select_all.rs /^ pub fn new() -> Self {$/;" P implementation:SelectAll +new vendor/futures-util/src/stream/stream/all.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/any.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/buffer_unordered.rs /^ pub(super) fn new(stream: St, n: usize) -> Self$/;" f +new vendor/futures-util/src/stream/stream/buffered.rs /^ pub(super) fn new(stream: St, n: usize) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/catch_unwind.rs /^ pub(super) fn new(stream: St) -> Self {$/;" P implementation:CatchUnwind +new vendor/futures-util/src/stream/stream/chain.rs /^ pub(super) fn new(stream1: St1, stream2: St2) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/chunks.rs /^ pub(super) fn new(stream: St, capacity: usize) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/collect.rs /^ pub(super) fn new(stream: St) -> Self {$/;" P implementation:Collect +new vendor/futures-util/src/stream/stream/concat.rs /^ pub(super) fn new(stream: St) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/count.rs /^ pub(super) fn new(stream: St) -> Self {$/;" P implementation:Count +new vendor/futures-util/src/stream/stream/cycle.rs /^ pub(super) fn new(stream: St) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/enumerate.rs /^ pub(super) fn new(stream: St) -> Self {$/;" P implementation:Enumerate +new vendor/futures-util/src/stream/stream/filter.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/filter_map.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/flatten.rs /^ pub(super) fn new(stream: St) -> Self {$/;" P implementation:Flatten +new vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn new(state: &'a SharedPollState, drop: F) -> Self {$/;" P implementation:PollStateBomb +new vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn new(stream: impl Into>) -> Self {$/;" P implementation:PollStreamFut +new vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn new(value: u8) -> SharedPollState {$/;" P implementation:SharedPollState +new vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ pub(super) fn new(stream: St, limit: Option) -> FlattenUnordered {$/;" f +new vendor/futures-util/src/stream/stream/fold.rs /^ pub(super) fn new(stream: St, f: F, t: T) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/for_each.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/for_each_concurrent.rs /^ pub(super) fn new(stream: St, limit: Option, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/forward.rs /^ pub(crate) fn new(stream: St, sink: Si) -> Self {$/;" P implementation:Forward +new vendor/futures-util/src/stream/stream/fuse.rs /^ pub(super) fn new(stream: St) -> Self {$/;" P implementation:Fuse +new vendor/futures-util/src/stream/stream/into_future.rs /^ pub(super) fn new(stream: St) -> Self {$/;" P implementation:StreamFuture +new vendor/futures-util/src/stream/stream/map.rs /^ pub(crate) fn new(stream: St, f: F) -> Self {$/;" P implementation:Map +new vendor/futures-util/src/stream/stream/next.rs /^ pub(super) fn new(stream: &'a mut St) -> Self {$/;" P implementation:Next +new vendor/futures-util/src/stream/stream/peek.rs /^ pub(super) fn new(stream: St) -> Self {$/;" P implementation:Peekable +new vendor/futures-util/src/stream/stream/ready_chunks.rs /^ pub(super) fn new(stream: St, capacity: usize) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/scan.rs /^ pub(super) fn new(stream: St, initial_state: S, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/select_next_some.rs /^ pub(super) fn new(stream: &'a mut St) -> Self {$/;" P implementation:SelectNextSome +new vendor/futures-util/src/stream/stream/skip.rs /^ pub(super) fn new(stream: St, n: usize) -> Self {$/;" P implementation:Skip +new vendor/futures-util/src/stream/stream/skip_while.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/take.rs /^ pub(super) fn new(stream: St, n: usize) -> Self {$/;" P implementation:Take +new vendor/futures-util/src/stream/stream/take_until.rs /^ pub(super) fn new(stream: St, fut: Fut) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/take_while.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/then.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/stream/unzip.rs /^ pub(super) fn new(stream: St) -> Self {$/;" P implementation:Unzip +new vendor/futures-util/src/stream/stream/zip.rs /^ pub(super) fn new(stream1: St1, stream2: St2) -> Self {$/;" P implementation:Zip +new vendor/futures-util/src/stream/try_stream/and_then.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/try_stream/into_async_read.rs /^ pub(super) fn new(stream: St) -> Self {$/;" f +new vendor/futures-util/src/stream/try_stream/into_stream.rs /^ pub(super) fn new(stream: St) -> Self {$/;" P implementation:IntoStream +new vendor/futures-util/src/stream/try_stream/or_else.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/try_stream/try_buffer_unordered.rs /^ pub(super) fn new(stream: St, n: usize) -> Self {$/;" f +new vendor/futures-util/src/stream/try_stream/try_buffered.rs /^ pub(super) fn new(stream: St, n: usize) -> Self {$/;" f +new vendor/futures-util/src/stream/try_stream/try_chunks.rs /^ pub(super) fn new(stream: St, capacity: usize) -> Self {$/;" P implementation:TryChunks +new vendor/futures-util/src/stream/try_stream/try_collect.rs /^ pub(super) fn new(s: St) -> Self {$/;" P implementation:TryCollect +new vendor/futures-util/src/stream/try_stream/try_concat.rs /^ pub(super) fn new(stream: St) -> Self {$/;" f +new vendor/futures-util/src/stream/try_stream/try_filter.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/try_stream/try_filter_map.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" P implementation:TryFilterMap +new vendor/futures-util/src/stream/try_stream/try_flatten.rs /^ pub(super) fn new(stream: St) -> Self {$/;" f +new vendor/futures-util/src/stream/try_stream/try_fold.rs /^ pub(super) fn new(stream: St, f: F, t: T) -> Self {$/;" f +new vendor/futures-util/src/stream/try_stream/try_for_each.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/try_stream/try_for_each_concurrent.rs /^ pub(super) fn new(stream: St, limit: Option, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/try_stream/try_next.rs /^ pub(super) fn new(stream: &'a mut St) -> Self {$/;" P implementation:TryNext +new vendor/futures-util/src/stream/try_stream/try_skip_while.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures-util/src/stream/try_stream/try_take_while.rs /^ pub(super) fn new(stream: St, f: F) -> Self {$/;" f +new vendor/futures/tests/io_buf_reader.rs /^ fn new(inner: &'a [u8]) -> Self {$/;" P implementation:maybe_pending_seek::MaybePendingSeek +new vendor/futures/tests/io_buf_reader.rs /^ fn new(inner: &'a [u8]) -> Self {$/;" P implementation:MaybePending +new vendor/futures/tests/io_buf_reader.rs /^ fn new(inner: T) -> Self {$/;" P implementation:Cursor +new vendor/futures/tests/io_buf_writer.rs /^ fn new(inner: Vec) -> Self {$/;" P implementation:maybe_pending_buf_writer_seek::MaybePendingSeek +new vendor/futures/tests/io_buf_writer.rs /^ fn new(inner: Vec) -> Self {$/;" P implementation:MaybePending +new vendor/futures/tests/io_read.rs /^ fn new(fun: impl FnMut(&mut [u8]) -> Poll> + 'static) -> Self {$/;" P implementation:MockReader +new vendor/futures/tests/io_read_to_end.rs /^ fn new() -> Self {$/;" P implementation:issue2310::MyRead +new vendor/futures/tests/io_read_to_end.rs /^ fn new() -> Self {$/;" P implementation:issue2310::VecWrapper +new vendor/futures/tests/io_write.rs /^ fn new(fun: impl FnMut(&[u8]) -> Poll> + 'static) -> Self {$/;" P implementation:MockWriter +new vendor/futures/tests/sink.rs /^ fn new() -> Arc {$/;" P implementation:Flag +new vendor/futures/tests/sink.rs /^ fn new() -> Self {$/;" P implementation:Allow +new vendor/futures/tests/sink.rs /^ fn new() -> Self {$/;" P implementation:ManualFlush +new vendor/futures/tests/sink.rs /^ fn new(sink: S, item: Item) -> Self {$/;" P implementation:StartSendFut +new vendor/futures/tests/stream_futures_unordered.rs /^ fn new(future: F) -> Self {$/;" P implementation:iter_cancel::AtomicCancel +new vendor/futures/tests/task_arc_wake.rs /^ fn new() -> Self {$/;" P implementation:CountingWaker +new vendor/intl-memoizer/src/concurrent.rs /^ pub fn new(lang: LanguageIdentifier) -> Self {$/;" P implementation:IntlLangMemoizer +new vendor/intl-memoizer/src/lib.rs /^ pub fn new($/;" P implementation:tests::PluralRules +new vendor/intl-memoizer/src/lib.rs /^ pub fn new(lang: LanguageIdentifier) -> Self {$/;" P implementation:IntlLangMemoizer +new vendor/libloading/src/os/unix/mod.rs /^ pub unsafe fn new>(filename: P) -> Result {$/;" P implementation:Library +new vendor/libloading/src/os/windows/mod.rs /^ fn new() -> Option {$/;" P implementation:ErrorModeGuard +new vendor/libloading/src/os/windows/mod.rs /^ pub unsafe fn new>(filename: P) -> Result {$/;" P implementation:Library +new vendor/libloading/src/safe.rs /^ pub unsafe fn new>(filename: P) -> Result {$/;" P implementation:Library +new vendor/memchr/src/cow.rs /^ pub fn new(bytes: &'a [u8]) -> Imp<'a> {$/;" P implementation:Imp +new vendor/memchr/src/cow.rs /^ pub fn new>(bytes: &'a B) -> CowBytes<'a> {$/;" P implementation:CowBytes +new vendor/memchr/src/memchr/iter.rs /^ pub fn new($/;" P implementation:Memchr3 +new vendor/memchr/src/memchr/iter.rs /^ pub fn new(needle1: u8, needle2: u8, haystack: &[u8]) -> Memchr2<'_> {$/;" P implementation:Memchr2 +new vendor/memchr/src/memchr/iter.rs /^ pub fn new(needle: u8, haystack: &[u8]) -> Memchr<'_> {$/;" P implementation:Memchr +new vendor/memchr/src/memmem/genericsimd.rs /^ pub(crate) fn new(ninfo: &NeedleInfo, needle: &[u8]) -> Option {$/;" P implementation:Forward +new vendor/memchr/src/memmem/mod.rs /^ fn new(config: SearcherConfig, needle: &'n [u8]) -> Searcher<'n> {$/;" P implementation:Searcher +new vendor/memchr/src/memmem/mod.rs /^ fn new(needle: &'n [u8]) -> SearcherRev<'n> {$/;" P implementation:SearcherRev +new vendor/memchr/src/memmem/mod.rs /^ pub fn new() -> FinderBuilder {$/;" P implementation:FinderBuilder +new vendor/memchr/src/memmem/mod.rs /^ pub fn new>(needle: &'n B) -> Finder<'n> {$/;" P implementation:Finder +new vendor/memchr/src/memmem/mod.rs /^ pub fn new>(needle: &'n B) -> FinderRev<'n> {$/;" P implementation:FinderRev +new vendor/memchr/src/memmem/mod.rs /^ pub(crate) fn new($/;" P implementation:FindIter +new vendor/memchr/src/memmem/mod.rs /^ pub(crate) fn new($/;" P implementation:FindRevIter +new vendor/memchr/src/memmem/mod.rs /^ pub(crate) fn new(needle: &[u8]) -> NeedleInfo {$/;" P implementation:NeedleInfo +new vendor/memchr/src/memmem/prefilter/mod.rs /^ fn new($/;" P implementation:tests::PrefilterTest +new vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) fn new() -> PrefilterState {$/;" P implementation:PrefilterState +new vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) unsafe fn new(prefn: PrefilterFnTy) -> PrefilterFn {$/;" P implementation:PrefilterFn +new vendor/memchr/src/memmem/rabinkarp.rs /^ pub(crate) fn new() -> Hash {$/;" P implementation:Hash +new vendor/memchr/src/memmem/rarebytes.rs /^ pub(crate) fn new(rare1i: u8, rare2i: u8) -> RareNeedleBytes {$/;" P implementation:RareNeedleBytes +new vendor/memchr/src/memmem/twoway.rs /^ fn new(needle: &[u8]) -> ApproximateByteSet {$/;" P implementation:ApproximateByteSet +new vendor/memchr/src/memmem/twoway.rs /^ pub(crate) fn new(needle: &[u8]) -> Forward {$/;" P implementation:Forward +new vendor/memchr/src/memmem/twoway.rs /^ pub(crate) fn new(needle: &[u8]) -> Reverse {$/;" P implementation:Reverse +new vendor/memchr/src/memmem/wasm.rs /^ pub(crate) fn new(ninfo: &NeedleInfo, needle: &[u8]) -> Option {$/;" P implementation:Forward +new vendor/memchr/src/memmem/x86/avx.rs /^ pub(crate) fn new($/;" P implementation:nostd::Forward +new vendor/memchr/src/memmem/x86/avx.rs /^ pub(crate) fn new($/;" P implementation:std::Forward +new vendor/memchr/src/memmem/x86/sse.rs /^ pub(crate) fn new(ninfo: &NeedleInfo, needle: &[u8]) -> Option {$/;" P implementation:Forward +new vendor/nix/src/mount/bsd.rs /^ fn new(error: Error, errmsg: Option<&CStr>) -> Self {$/;" P implementation:NmountError +new vendor/nix/src/mount/bsd.rs /^ pub fn new() -> Self {$/;" P implementation:Nmount +new vendor/nix/src/mqueue.rs /^ pub fn new(mq_flags: mq_attr_member_t,$/;" P implementation:MqAttr +new vendor/nix/src/poll.rs /^ pub const fn new(fd: RawFd, events: PollFlags) -> PollFd {$/;" P implementation:PollFd +new vendor/nix/src/sched.rs /^ pub fn new() -> CpuSet {$/;" P implementation:sched_affinity::CpuSet +new vendor/nix/src/sys/aio.rs /^ pub fn new($/;" P implementation:AioFsync +new vendor/nix/src/sys/aio.rs /^ pub fn new($/;" P implementation:AioRead +new vendor/nix/src/sys/aio.rs /^ pub fn new($/;" P implementation:AioReadv +new vendor/nix/src/sys/aio.rs /^ pub fn new($/;" P implementation:AioWrite +new vendor/nix/src/sys/aio.rs /^ pub fn new($/;" P implementation:AioWritev +new vendor/nix/src/sys/epoll.rs /^ pub fn new(events: EpollFlags, data: u64) -> Self {$/;" P implementation:EpollEvent +new vendor/nix/src/sys/event.rs /^ pub fn new(ident: uintptr_t, filter: EventFilter, flags: EventFlag,$/;" P implementation:KEvent +new vendor/nix/src/sys/select.rs /^ pub fn new() -> FdSet {$/;" P implementation:FdSet +new vendor/nix/src/sys/signalfd.rs /^ pub fn new(mask: &SigSet) -> Result {$/;" P implementation:SignalFd +new vendor/nix/src/sys/socket/addr.rs /^ pub fn new(alg_type: &str, alg_name: &str) -> AlgAddr {$/;" P implementation:alg::AlgAddr +new vendor/nix/src/sys/socket/addr.rs /^ pub fn new(cid: u32, port: u32) -> VsockAddr {$/;" P implementation:vsock::VsockAddr +new vendor/nix/src/sys/socket/addr.rs /^ pub fn new(pid: u32, groups: u32) -> NetlinkAddr {$/;" P implementation:netlink::NetlinkAddr +new vendor/nix/src/sys/socket/addr.rs /^ pub fn new(a: u8, b: u8, c: u8, d: u8, port: u16) -> Self {$/;" P implementation:SockaddrIn +new vendor/nix/src/sys/socket/addr.rs /^ pub fn new(path: &P) -> Result {$/;" P implementation:UnixAddr +new vendor/nix/src/sys/socket/sockopt.rs /^ fn new(ptr: &'a T) -> SetStruct<'a, T> {$/;" P implementation:SetStruct +new vendor/nix/src/sys/socket/sockopt.rs /^ fn new(val: &'a OsString) -> SetOsString {$/;" P implementation:SetOsString +new vendor/nix/src/sys/socket/sockopt.rs /^ fn new(val: &'a T) -> Self;$/;" P interface:Set +new vendor/nix/src/sys/socket/sockopt.rs /^ fn new(val: &'a bool) -> SetBool {$/;" P implementation:SetBool +new vendor/nix/src/sys/socket/sockopt.rs /^ fn new(val: &'a u8) -> SetU8 {$/;" P implementation:SetU8 +new vendor/nix/src/sys/socket/sockopt.rs /^ fn new(val: &'a usize) -> SetUsize {$/;" P implementation:SetUsize +new vendor/nix/src/sys/time.rs /^ pub const fn new(seconds: time_t, microseconds: suseconds_t) -> Self {$/;" P implementation:TimeVal +new vendor/nix/src/sys/time.rs /^ pub const fn new(seconds: time_t, nanoseconds: timespec_tv_nsec_t) -> Self {$/;" P implementation:TimeSpec +new vendor/nix/src/sys/timer.rs /^ pub fn new(clockid: ClockId, mut sigevent: SigEvent) -> Result {$/;" P implementation:Timer +new vendor/nix/src/sys/timerfd.rs /^ pub fn new(clockid: ClockId, flags: TimerFlags) -> Result {$/;" P implementation:TimerFd +new vendor/nix/test/test.rs /^ fn new() -> Self {$/;" P implementation:DirRestore +new vendor/once_cell/src/imp_pl.rs /^ pub(crate) const fn new() -> OnceCell {$/;" P implementation:OnceCell +new vendor/once_cell/src/imp_std.rs /^ pub(crate) const fn new() -> OnceCell {$/;" P implementation:OnceCell +new vendor/once_cell/src/lib.rs /^ pub const fn new() -> OnceCell {$/;" P implementation:sync::OnceCell +new vendor/once_cell/src/lib.rs /^ pub const fn new() -> OnceCell {$/;" P implementation:unsync::OnceCell +new vendor/once_cell/src/lib.rs /^ pub const fn new(f: F) -> Lazy {$/;" P implementation:sync::Lazy +new vendor/once_cell/src/lib.rs /^ pub const fn new(init: F) -> Lazy {$/;" P implementation:unsync::Lazy +new vendor/once_cell/src/race.rs /^ pub const fn new() -> OnceBox {$/;" P implementation:once_box::OnceBox +new vendor/once_cell/src/race.rs /^ pub const fn new() -> OnceBool {$/;" P implementation:OnceBool +new vendor/once_cell/src/race.rs /^ pub const fn new() -> OnceNonZeroUsize {$/;" P implementation:OnceNonZeroUsize +new vendor/pin-project-lite/src/lib.rs /^ pub unsafe fn new(ptr: *mut T) -> Self {$/;" P implementation:__private::UnsafeDropInPlaceGuard +new vendor/pin-project-lite/src/lib.rs /^ pub unsafe fn new(target: *mut T, value: T) -> Self {$/;" P implementation:__private::UnsafeOverwriteGuard +new vendor/proc-macro2/src/fallback.rs /^ pub fn new() -> Self {$/;" P implementation:TokenStream +new vendor/proc-macro2/src/fallback.rs /^ pub fn new() -> Self {$/;" P implementation:TokenStreamBuilder +new vendor/proc-macro2/src/fallback.rs /^ pub fn new(delimiter: Delimiter, stream: TokenStream) -> Self {$/;" P implementation:Group +new vendor/proc-macro2/src/fallback.rs /^ pub fn new(string: &str, span: Span) -> Self {$/;" P implementation:Ident +new vendor/proc-macro2/src/lib.rs /^ pub fn new() -> Self {$/;" P implementation:TokenStream +new vendor/proc-macro2/src/lib.rs /^ pub fn new(ch: char, spacing: Spacing) -> Self {$/;" P implementation:Punct +new vendor/proc-macro2/src/lib.rs /^ pub fn new(delimiter: Delimiter, stream: TokenStream) -> Self {$/;" P implementation:Group +new vendor/proc-macro2/src/lib.rs /^ pub fn new(string: &str, span: Span) -> Self {$/;" P implementation:Ident +new vendor/proc-macro2/src/rcvec.rs /^ pub fn new() -> Self {$/;" P implementation:RcVecBuilder +new vendor/proc-macro2/src/wrapper.rs /^ fn new(stream: proc_macro::TokenStream) -> Self {$/;" P implementation:DeferredTokenStream +new vendor/proc-macro2/src/wrapper.rs /^ pub fn new() -> Self {$/;" P implementation:TokenStream +new vendor/proc-macro2/src/wrapper.rs /^ pub fn new(delimiter: Delimiter, stream: TokenStream) -> Self {$/;" P implementation:Group +new vendor/proc-macro2/src/wrapper.rs /^ pub fn new(string: &str, span: Span) -> Self {$/;" P implementation:Ident +new vendor/self_cell/src/unsafe_self_cell.rs /^ pub unsafe fn new(joined_ptr: NonNull>) -> Self {$/;" P implementation:OwnerAndCellDropGuard +new vendor/self_cell/src/unsafe_self_cell.rs /^ pub unsafe fn new(joined_void_ptr: NonNull) -> Self {$/;" P implementation:UnsafeSelfCell +new vendor/slab/src/lib.rs /^ pub const fn new() -> Self {$/;" P implementation:Slab +new vendor/slab/src/lib.rs /^ pub fn new() -> Self {$/;" P implementation:Slab +new vendor/smallvec/benches/bench.rs /^ fn new() -> Self {$/;" P implementation:SmallVec +new vendor/smallvec/benches/bench.rs /^ fn new() -> Self {$/;" P implementation:Vec +new vendor/smallvec/benches/bench.rs /^ fn new() -> Self;$/;" P interface:Vector +new vendor/smallvec/src/lib.rs /^ fn new(len: &'a mut usize) -> Self {$/;" P implementation:SetLenOnDrop +new vendor/smallvec/src/lib.rs /^ pub fn new() -> SmallVec {$/;" P implementation:SmallVec +new vendor/smallvec/src/tests.rs /^ fn new() -> Self {$/;" P implementation:insert_many_panic::PanicOnDoubleDrop +new vendor/syn/src/bigint.rs /^ pub fn new() -> Self {$/;" P implementation:BigInt +new vendor/syn/src/buffer.rs /^ pub fn new(stream: pm::TokenStream) -> Self {$/;" P implementation:TokenBuffer +new vendor/syn/src/error.rs /^ pub fn new(span: Span, message: T) -> Self {$/;" P implementation:Error +new vendor/syn/src/generics.rs /^ pub fn new(lifetime: Lifetime) -> Self {$/;" P implementation:LifetimeDef +new vendor/syn/src/lifetime.rs /^ pub fn new(symbol: &str, span: Span) -> Self {$/;" P implementation:Lifetime +new vendor/syn/src/lit.rs /^ pub fn new(token: Literal) -> Self {$/;" P implementation:value::Lit +new vendor/syn/src/lit.rs /^ pub fn new(repr: &str, span: Span) -> Self {$/;" P implementation:LitFloat +new vendor/syn/src/lit.rs /^ pub fn new(repr: &str, span: Span) -> Self {$/;" P implementation:LitInt +new vendor/syn/src/lit.rs /^ pub fn new(value: &[u8], span: Span) -> Self {$/;" P implementation:LitByteStr +new vendor/syn/src/lit.rs /^ pub fn new(value: &str, span: Span) -> Self {$/;" P implementation:LitStr +new vendor/syn/src/lit.rs /^ pub fn new(value: bool, span: Span) -> Self {$/;" P implementation:LitBool +new vendor/syn/src/lit.rs /^ pub fn new(value: char, span: Span) -> Self {$/;" P implementation:LitChar +new vendor/syn/src/lit.rs /^ pub fn new(value: u8, span: Span) -> Self {$/;" P implementation:LitByte +new vendor/syn/src/lookahead.rs /^pub fn new(scope: Span, cursor: Cursor) -> Lookahead1 {$/;" f +new vendor/syn/src/punctuated.rs /^ pub const fn new() -> Self {$/;" P implementation:Punctuated +new vendor/syn/src/punctuated.rs /^ pub fn new() -> Self {$/;" P implementation:Punctuated +new vendor/syn/src/punctuated.rs /^ pub fn new(t: T, p: Option

    ) -> Self {$/;" P implementation:Pair +new vendor/syn/src/thread.rs /^ pub fn new(value: T) -> Self {$/;" P implementation:ThreadBound +new vendor/syn/tests/repo/progress.rs /^ pub fn new(stream: R) -> Self {$/;" P implementation:Progress +new vendor/syn/tests/test_ident.rs /^fn new(s: &str) -> Ident {$/;" f +new vendor/thiserror-impl/src/generics.rs /^ pub fn new() -> Self {$/;" P implementation:InferredBounds +new vendor/thiserror-impl/src/generics.rs /^ pub fn new(generics: &'a Generics) -> Self {$/;" P implementation:ParamsInScope +new vendor/type-map/src/lib.rs /^ pub fn new() -> Self {$/;" P implementation:concurrent::TypeMap +new vendor/type-map/src/lib.rs /^ pub fn new() -> Self {$/;" P implementation:TypeMap +new2 vendor/syn/src/buffer.rs /^ pub fn new2(stream: TokenStream) -> Self {$/;" P implementation:TokenBuffer +new2 vendor/syn/src/error.rs /^pub fn new2(start: Span, end: Span, message: T) -> Error {$/;" f +new_abstract vendor/nix/src/sys/socket/addr.rs /^ pub fn new_abstract(path: &[u8]) -> Result {$/;" P implementation:UnixAddr +new_alg vendor/nix/src/sys/socket/addr.rs /^ pub fn new_alg(alg_type: &str, alg_name: &str) -> SockAddr {$/;" P implementation:SockAddr +new_at vendor/syn/src/error.rs /^pub fn new_at(scope: Span, cursor: Cursor, message: T) -> Error {$/;" f +new_bitfield_1 r_bash/src/lib.rs /^ pub fn new_bitfield_1($/;" P implementation:wait__bindgen_ty_1 +new_bitfield_1 r_bash/src/lib.rs /^ pub fn new_bitfield_1($/;" P implementation:wait__bindgen_ty_2 +new_concurrent vendor/fluent-bundle/src/concurrent.rs /^ pub fn new_concurrent(locales: Vec) -> Self {$/;" P implementation:FluentBundle +new_const vendor/smallvec/src/lib.rs /^ pub const fn new_const() -> Self {$/;" P implementation:SmallVec +new_domain lib/intl/textdomain.c /^ char *new_domain;$/;" v typeref:typename:char * +new_exp lib/intl/plural.c /^new_exp (nargs, op, args)$/;" f file: +new_exp_0 lib/intl/plural.c /^new_exp_0 (op)$/;" f file: +new_exp_1 lib/intl/plural.c /^new_exp_1 (op, right)$/;" f file: +new_exp_2 lib/intl/plural.c /^new_exp_2 (op, left, right)$/;" f file: +new_exp_3 lib/intl/plural.c /^new_exp_3 (op, bexp, tbranch, fbranch)$/;" f file: +new_fd_bitmap execute_cmd.c /^new_fd_bitmap (size)$/;" f +new_fd_bitmap r_bash/src/lib.rs /^ pub fn new_fd_bitmap(arg1: ::std::os::raw::c_int) -> *mut fd_bitmap;$/;" f +new_netlink vendor/nix/src/sys/socket/addr.rs /^ pub fn new_netlink(pid: u32, groups: u32) -> SockAddr {$/;" P implementation:SockAddr +new_owned vendor/memchr/src/cow.rs /^ pub fn new_owned(bytes: Box<[u8]>) -> CowBytes<'static> {$/;" P implementation:CowBytes +new_pair vendor/futures-util/src/abortable.rs /^ pub fn new_pair() -> (Self, AbortRegistration) {$/;" P implementation:AbortHandle +new_parse_buffer vendor/syn/src/parse.rs /^pub(crate) fn new_parse_buffer($/;" f +new_pebble vendor/once_cell/tests/it.rs /^ fn new_pebble(&self, val: T) -> Pebble {$/;" P implementation:race_once_box::Heap +new_queue vendor/once_cell/src/imp_std.rs /^ new_queue: *mut Waiter,$/;" m struct:Guard +new_raw vendor/proc-macro2/src/fallback.rs /^ pub fn new_raw(string: &str, span: Span) -> Self {$/;" P implementation:Ident +new_raw vendor/proc-macro2/src/lib.rs /^ pub fn new_raw(string: &str, span: Span) -> Self {$/;" P implementation:Ident +new_raw vendor/proc-macro2/src/wrapper.rs /^ pub fn new_raw(string: &str, span: Span) -> Self {$/;" P implementation:Ident +new_shell_variable variables.c /^new_shell_variable (name)$/;" f file: +new_span vendor/async-trait/tests/test.rs /^ fn new_span(&self, _span: &Attributes) -> Id {$/;" P implementation:issue45::TestSubscriber +new_spanned vendor/syn/src/error.rs /^ pub fn new_spanned(tokens: T, message: U) -> Self {$/;" P implementation:Error +new_state vendor/once_cell/src/imp_pl.rs /^ new_state: u8,$/;" m struct:Guard +new_unchecked vendor/tinystr/src/tinystr16.rs /^ pub const unsafe fn new_unchecked(text: u128) -> Self {$/;" P implementation:TinyStr16 +new_unchecked vendor/tinystr/src/tinystr4.rs /^ pub const unsafe fn new_unchecked(text: u32) -> Self {$/;" P implementation:TinyStr4 +new_unchecked vendor/tinystr/src/tinystr8.rs /^ pub const unsafe fn new_unchecked(text: u64) -> Self {$/;" P implementation:TinyStr8 +new_unix vendor/nix/src/sys/socket/addr.rs /^ pub fn new_unix(path: &P) -> Result {$/;" P implementation:SockAddr +new_unowned vendor/futures-task/src/waker_ref.rs /^ pub fn new_unowned(waker: ManuallyDrop) -> Self {$/;" P implementation:WakerRef +new_var_context r_bash/src/lib.rs /^ pub fn new_var_context($/;" f +new_var_context variables.c /^new_var_context (name, flags)$/;" f +new_vsock vendor/nix/src/sys/socket/addr.rs /^ pub fn new_vsock(cid: u32, port: u32) -> SockAddr {$/;" P implementation:SockAddr +newline print_cmd.c /^newline (string)$/;" f file: +newline r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn newline(string: *mut c_char)$/;" f +newline_for_fun support/man2html.c /^static int newline_for_fun = 0;$/;" v typeref:typename:int file: +newline_list parse.y /^newline_list:$/;" l +newlocale r_bash/src/lib.rs /^ pub fn newlocale($/;" f +newlocale vendor/libc/src/fuchsia/mod.rs /^ pub fn newlocale(mask: ::c_int, locale: *const ::c_char, base: ::locale_t) -> ::locale_t;$/;" f +newlocale vendor/libc/src/solid/mod.rs /^ pub fn newlocale(arg1: c_int, arg2: *const c_char, arg3: locale_t) -> locale_t;$/;" f +newlocale vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn newlocale(mask: ::c_int, locale: *const ::c_char, base: ::locale_t) -> ::locale_t;$/;" f +newlocale vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn newlocale(mask: ::c_int, locale: *const ::c_char, base: ::locale_t) -> ::locale_t;$/;" f +newlocale vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn newlocale(mask: ::c_int, locale: *const ::c_char, base: ::locale_t) -> ::locale_t;$/;" f +newlocale vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn newlocale(mask: ::c_int, locale: *const ::c_char, base: ::locale_t) -> ::locale_t;$/;" f +newlocale vendor/libc/src/unix/linux_like/mod.rs /^ pub fn newlocale(mask: ::c_int, locale: *const ::c_char, base: ::locale_t) -> ::locale_t;$/;" f +newlocale vendor/libc/src/unix/solarish/mod.rs /^ pub fn newlocale(mask: ::c_int, locale: *const ::c_char, base: ::locale_t) -> ::locale_t;$/;" f +newlocale vendor/libc/src/wasi.rs /^ pub fn newlocale(mask: ::c_int, locale: *const ::c_char, base: ::locale_t) -> ::locale_t;$/;" f +newp lib/intl/dcigettext.c /^ struct known_translation_t *newp;$/;" v typeref:struct:known_translation_t * +next array.h /^ struct array_element *next, *prev;$/;" m struct:array_element typeref:struct:array_element * +next builtins_rust/alias/src/lib.rs /^ pub next: *mut bucket_contents,$/;" m struct:bucket_contents +next builtins_rust/cd/src/lib.rs /^ next: *mut PATTERN_LIST,$/;" m struct:PATTERN_LIST +next builtins_rust/cd/src/lib.rs /^ next: *mut PROCESS,$/;" m struct:PROCESS +next builtins_rust/command/src/lib.rs /^ pub next: *mut pattern_list,$/;" m struct:pattern_list +next builtins_rust/command/src/lib.rs /^ pub next: *mut redirect,$/;" m struct:redirect +next builtins_rust/common/src/lib.rs /^ next: *mut PATTERN_LIST,$/;" m struct:PATTERN_LIST +next builtins_rust/common/src/lib.rs /^ pub next: *mut g_list,$/;" m struct:g_list +next builtins_rust/common/src/lib.rs /^ pub next: *mut process,$/;" m struct:process +next builtins_rust/common/src/lib.rs /^ pub next: *mut word_list,$/;" m struct:word_list +next builtins_rust/complete/src/lib.rs /^ next: *mut BUCKET_CONTENTS, \/* Link to next hashed key in this bucket. *\/$/;" m struct:BUCKET_CONTENTS +next builtins_rust/complete/src/lib.rs /^ next: *mut PATTERN_LIST,$/;" m struct:PATTERN_LIST +next builtins_rust/declare/src/lib.rs /^ next: *mut BUCKET_CONTENTS, \/* Link to next hashed key in this bucket. *\/$/;" m struct:BUCKET_CONTENTS +next builtins_rust/declare/src/lib.rs /^ next: *mut PATTERN_LIST,$/;" m struct:PATTERN_LIST +next builtins_rust/exec/src/lib.rs /^ next: *mut redirect,$/;" m struct:redirect +next builtins_rust/fc/src/lib.rs /^ next: *mut GENERIC_LIST,$/;" m struct:GENERIC_LIST +next builtins_rust/fc/src/lib.rs /^ next: *mut PATTERN_LIST,$/;" m struct:PATTERN_LIST +next builtins_rust/fc/src/lib.rs /^ next: *mut PROCESS,$/;" m struct:PROCESS +next builtins_rust/fc/src/lib.rs /^ next: *mut REPL,$/;" m struct:REPL +next builtins_rust/fg_bg/src/lib.rs /^ next: *mut PATTERN_LIST,$/;" m struct:PATTERN_LIST +next builtins_rust/fg_bg/src/lib.rs /^ next: *mut PROCESS,$/;" m struct:PROCESS +next builtins_rust/getopts/src/lib.rs /^ next: *mut PATTERN_LIST,$/;" m struct:PATTERN_LIST +next builtins_rust/hash/src/lib.rs /^ pub next: *mut bucket_contents,$/;" m struct:bucket_contents +next builtins_rust/jobs/src/lib.rs /^ next: *mut PATTERN_LIST,$/;" m struct:PATTERN_LIST +next builtins_rust/jobs/src/lib.rs /^ next: *mut PROCESS,$/;" m struct:PROCESS +next builtins_rust/kill/src/intercdep.rs /^ pub next: *mut pattern_list,$/;" m struct:pattern_list +next builtins_rust/kill/src/intercdep.rs /^ pub next: *mut process,$/;" m struct:process +next builtins_rust/kill/src/intercdep.rs /^ pub next: *mut redirect,$/;" m struct:redirect +next builtins_rust/mapfile/src/intercdep.rs /^ pub next: *mut array_element,$/;" m struct:array_element +next builtins_rust/pushd/src/lib.rs /^ next: *mut PATTERN_LIST,$/;" m struct:PATTERN_LIST +next builtins_rust/read/src/intercdep.rs /^ pub next: *mut array_element,$/;" m struct:array_element +next builtins_rust/setattr/src/intercdep.rs /^ next:* mut BUCKET_CONTENTS, \/* Link to next hashed key in this bucket. *\/$/;" m struct:BUCKET_CONTENTS +next builtins_rust/setattr/src/intercdep.rs /^ pub next: *mut pattern_list,$/;" m struct:pattern_list +next builtins_rust/setattr/src/intercdep.rs /^ pub next: *mut process,$/;" m struct:process +next builtins_rust/setattr/src/intercdep.rs /^ pub next: *mut redirect,$/;" m struct:redirect +next builtins_rust/source/src/lib.rs /^ next: *mut PATTERN_LIST,$/;" m struct:PATTERN_LIST +next builtins_rust/type/src/lib.rs /^ next: *mut PATTERN_LIST,$/;" m struct:PATTERN_LIST +next command.h /^ struct pattern_list *next; \/* Clause to try in case this one failed. *\/$/;" m struct:pattern_list typeref:struct:pattern_list * +next command.h /^ struct redirect *next; \/* Next element, or NULL. *\/$/;" m struct:redirect typeref:struct:redirect * +next command.h /^ struct word_list *next;$/;" m struct:word_list typeref:struct:word_list * +next execute_cmd.c /^ struct cpelement *next;$/;" m struct:cpelement typeref:struct:cpelement * file: +next general.h /^ struct g_list *next;$/;" m struct:g_list typeref:struct:g_list * +next hashlib.h /^ struct bucket_contents *next; \/* Link to next hashed key in this bucket. *\/$/;" m struct:bucket_contents typeref:struct:bucket_contents * +next jobs.h /^ struct pipeline_saver *next;$/;" m struct:pipeline_saver typeref:struct:pipeline_saver * +next jobs.h /^ struct process *next; \/* Next process in the pipeline. A circular chain. *\/$/;" m struct:process typeref:struct:process * +next lib/glob/glob.c /^ struct globval *next;$/;" m struct:globval typeref:struct:globval * file: +next lib/intl/dcigettext.c /^ struct block_list *next;$/;" m struct:block_list typeref:struct:block_list * file: +next lib/intl/dcigettext.c /^ struct transmem_list *next;$/;" m struct:transmem_list typeref:struct:transmem_list * file: +next lib/intl/gettextP.h /^ struct binding *next;$/;" m struct:binding typeref:struct:binding * +next lib/intl/loadinfo.h /^ struct loaded_l10nfile *next;$/;" m struct:loaded_l10nfile typeref:struct:loaded_l10nfile * +next lib/malloc/alloca.c /^ union hdr *next; \/* For chaining headers. *\/$/;" m struct:hdr::__anond018e22f0108 typeref:union:hdr * file: +next lib/readline/colors.h /^ struct _color_ext_type *next; \/* Next in list *\/$/;" m struct:_color_ext_type typeref:struct:_color_ext_type * +next lib/readline/macro.c /^ struct saved_macro *next;$/;" m struct:saved_macro typeref:struct:saved_macro * file: +next lib/readline/readline.h /^ struct undo_list *next;$/;" m struct:undo_list typeref:struct:undo_list * +next r_bash/src/lib.rs /^ pub next: *mut array_element,$/;" m struct:array_element +next r_bash/src/lib.rs /^ pub next: *mut bucket_contents,$/;" m struct:bucket_contents +next r_bash/src/lib.rs /^ pub next: *mut g_list,$/;" m struct:g_list +next r_bash/src/lib.rs /^ pub next: *mut pattern_list,$/;" m struct:pattern_list +next r_bash/src/lib.rs /^ pub next: *mut pipeline_saver,$/;" m struct:pipeline_saver +next r_bash/src/lib.rs /^ pub next: *mut process,$/;" m struct:process +next r_bash/src/lib.rs /^ pub next: *mut redirect,$/;" m struct:redirect +next r_bash/src/lib.rs /^ pub next: *mut word_list,$/;" m struct:word_list +next r_glob/src/lib.rs /^ pub next: *mut array_element,$/;" m struct:array_element +next r_glob/src/lib.rs /^ pub next: *mut g_list,$/;" m struct:g_list +next r_glob/src/lib.rs /^ pub next: *mut pattern_list,$/;" m struct:pattern_list +next r_glob/src/lib.rs /^ pub next: *mut redirect,$/;" m struct:redirect +next r_glob/src/lib.rs /^ pub next: *mut word_list,$/;" m struct:word_list +next r_jobs/src/lib.rs /^ pub next: *mut bucket_contents,$/;" m struct:bucket_contents +next r_readline/src/lib.rs /^ pub next: *mut _color_ext_type,$/;" m struct:_color_ext_type +next r_readline/src/lib.rs /^ pub next: *mut array_element,$/;" m struct:array_element +next r_readline/src/lib.rs /^ pub next: *mut g_list,$/;" m struct:g_list +next r_readline/src/lib.rs /^ pub next: *mut pattern_list,$/;" m struct:pattern_list +next r_readline/src/lib.rs /^ pub next: *mut redirect,$/;" m struct:redirect +next r_readline/src/lib.rs /^ pub next: *mut undo_list,$/;" m struct:undo_list +next r_readline/src/lib.rs /^ pub next: *mut word_list,$/;" m struct:word_list +next src/lib.rs /^ next : *mut WORD_LIST,$/;" m struct:WORD_LIST +next support/man2html.c /^ INTDEF *next;$/;" m struct:INTDEF typeref:typename:INTDEF * file: +next support/man2html.c /^ STRDEF *next;$/;" m struct:STRDEF typeref:typename:STRDEF * file: +next support/man2html.c /^ TABLEITEM *next;$/;" m struct:TABLEITEM typeref:typename:TABLEITEM * file: +next support/man2html.c /^ TABLEROW *prev, *next;$/;" m struct:TABLEROW typeref:typename:TABLEROW * file: +next unwind_prot.c /^ union uwp *next;$/;" m struct:uwp::uwp_head typeref:union:uwp * file: +next vendor/chunky-vec/src/lib.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Iter +next vendor/chunky-vec/src/lib.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IterMut +next vendor/elsa/src/vec.rs /^ fn next(&mut self) -> Option<&'a T::Target> {$/;" P implementation:Iter +next vendor/fluent-fallback/examples/simple-fallback.rs /^ fn next(&mut self) -> Option {$/;" P implementation:BundleIter +next vendor/fluent-fallback/src/cache.rs /^ fn next(&mut self) -> Option {$/;" f +next vendor/fluent-fallback/tests/localization_test.rs /^ fn next(&mut self) -> Option {$/;" P implementation:BundleIter +next vendor/fluent-resmgr/src/resource_manager.rs /^ fn next(&mut self) -> Option {$/;" P implementation:BundleIter +next vendor/futures-channel/src/mpsc/queue.rs /^ next: AtomicPtr,$/;" m struct:Node +next vendor/futures-executor/src/local_pool.rs /^ fn next(&mut self) -> Option {$/;" P implementation:BlockingStream +next vendor/futures-util/src/stream/futures_unordered/iter.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IntoIter +next vendor/futures-util/src/stream/futures_unordered/iter.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Iter +next vendor/futures-util/src/stream/futures_unordered/iter.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IterMut +next vendor/futures-util/src/stream/futures_unordered/iter.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IterPinMut +next vendor/futures-util/src/stream/futures_unordered/iter.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IterPinRef +next vendor/futures-util/src/stream/select_all.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IntoIter +next vendor/futures-util/src/stream/select_all.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Iter +next vendor/futures-util/src/stream/select_all.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IterMut +next vendor/futures-util/src/stream/stream/mod.rs /^ fn next(&mut self) -> Next<'_, Self>$/;" P interface:StreamExt +next vendor/futures-util/src/stream/stream/mod.rs /^mod next;$/;" n +next vendor/memchr/src/memchr/iter.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Memchr +next vendor/memchr/src/memchr/iter.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Memchr2 +next vendor/memchr/src/memchr/iter.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Memchr3 +next vendor/memchr/src/memmem/mod.rs /^ fn next(&mut self) -> Option {$/;" P implementation:FindIter +next vendor/memchr/src/memmem/mod.rs /^ fn next(&mut self) -> Option {$/;" P implementation:FindRevIter +next vendor/nix/src/dir.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Iter +next vendor/nix/src/dir.rs /^ fn next(&mut self) -> Option {$/;" P implementation:OwningIter +next vendor/nix/src/dir.rs /^fn next(dir: &mut Dir) -> Option> {$/;" f +next vendor/nix/src/ifaddrs.rs /^ fn next(&mut self) -> Option<::Item> {$/;" P implementation:InterfaceAddressIterator +next vendor/nix/src/ifaddrs.rs /^ next: *mut libc::ifaddrs,$/;" m struct:InterfaceAddressIterator +next vendor/nix/src/net/if_.rs /^ fn next(&mut self) -> Option {$/;" P implementation:if_nameindex::InterfacesIter +next vendor/nix/src/sys/select.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Fds +next vendor/nix/src/sys/signalfd.rs /^ fn next(&mut self) -> Option {$/;" P implementation:SignalFd +next vendor/once_cell/src/imp_std.rs /^ next: *mut Waiter,$/;" m struct:Waiter +next vendor/proc-macro2/src/lib.rs /^ fn next(&mut self) -> Option {$/;" P implementation:token_stream::IntoIter +next vendor/proc-macro2/src/rcvec.rs /^ fn next(&mut self) -> Option {$/;" P implementation:RcVecIntoIter +next vendor/proc-macro2/src/wrapper.rs /^ fn next(&mut self) -> Option {$/;" P implementation:TokenTreeIter +next vendor/quote/src/runtime.rs /^ fn next(&mut self) -> Option {$/;" P implementation:push_lifetime::Lifetime +next vendor/quote/src/runtime.rs /^ fn next(&mut self) -> Option {$/;" P implementation:push_lifetime_spanned::Lifetime +next vendor/quote/src/runtime.rs /^ fn next(&self) -> Option<&Self> {$/;" P interface:ext::RepToTokensExt +next vendor/quote/src/runtime.rs /^ fn next(&mut self) -> Option {$/;" P implementation:RepInterp +next vendor/quote/src/runtime.rs /^ pub fn next(self) -> Option {$/;" P implementation:RepInterp +next vendor/slab/src/lib.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Drain +next vendor/slab/src/lib.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IntoIter +next vendor/slab/src/lib.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Iter +next vendor/slab/src/lib.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IterMut +next vendor/slab/src/lib.rs /^ next: usize,$/;" m struct:Slab +next vendor/smallvec/src/lib.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IntoIter +next vendor/smallvec/src/lib.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Drain +next vendor/smallvec/src/tests.rs /^ fn next(&mut self) -> Option {$/;" P implementation:insert_many_panic::BadIter +next vendor/smallvec/src/tests.rs /^ fn next(&mut self) -> Option {$/;" P implementation:MockHintIter +next vendor/syn/src/error.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IntoIter +next vendor/syn/src/error.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Iter +next vendor/syn/src/generics.rs /^ fn next(&mut self) -> Option {$/;" P implementation:ConstParams +next vendor/syn/src/generics.rs /^ fn next(&mut self) -> Option {$/;" P implementation:ConstParamsMut +next vendor/syn/src/generics.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Lifetimes +next vendor/syn/src/generics.rs /^ fn next(&mut self) -> Option {$/;" P implementation:LifetimesMut +next vendor/syn/src/generics.rs /^ fn next(&mut self) -> Option {$/;" P implementation:TypeParams +next vendor/syn/src/generics.rs /^ fn next(&mut self) -> Option {$/;" P implementation:TypeParamsMut +next vendor/syn/src/punctuated.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IntoIter +next vendor/syn/src/punctuated.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IntoPairs +next vendor/syn/src/punctuated.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Iter +next vendor/syn/src/punctuated.rs /^ fn next(&mut self) -> Option {$/;" P implementation:IterMut +next vendor/syn/src/punctuated.rs /^ fn next(&mut self) -> Option {$/;" P implementation:Pairs +next vendor/syn/src/punctuated.rs /^ fn next(&mut self) -> Option {$/;" P implementation:PairsMut +next vendor/syn/src/punctuated.rs /^ fn next(&mut self) -> Option {$/;" P implementation:PrivateIter +next vendor/syn/src/punctuated.rs /^ fn next(&mut self) -> Option {$/;" P implementation:PrivateIterMut +next_all vendor/futures-util/src/stream/futures_unordered/task.rs /^ pub(super) next_all: AtomicPtr>,$/;" m struct:Task +next_back vendor/memchr/src/memchr/iter.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:Memchr +next_back vendor/memchr/src/memchr/iter.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:Memchr2 +next_back vendor/memchr/src/memchr/iter.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:Memchr3 +next_back vendor/nix/src/sys/select.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:Fds +next_back vendor/slab/src/lib.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:Drain +next_back vendor/slab/src/lib.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:IntoIter +next_back vendor/slab/src/lib.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:Iter +next_back vendor/slab/src/lib.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:IterMut +next_back vendor/smallvec/src/lib.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:IntoIter +next_back vendor/smallvec/src/lib.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:Drain +next_back vendor/syn/src/punctuated.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:IntoIter +next_back vendor/syn/src/punctuated.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:IntoPairs +next_back vendor/syn/src/punctuated.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:Iter +next_back vendor/syn/src/punctuated.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:IterMut +next_back vendor/syn/src/punctuated.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:Pairs +next_back vendor/syn/src/punctuated.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:PairsMut +next_back vendor/syn/src/punctuated.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:PrivateIter +next_back vendor/syn/src/punctuated.rs /^ fn next_back(&mut self) -> Option {$/;" P implementation:PrivateIterMut +next_bucket lib/malloc/table.c /^#define next_bucket(/;" d file: +next_ch vendor/proc-macro2/src/parse.rs /^macro_rules! next_ch {$/;" M +next_chr vendor/syn/src/lit.rs /^ fn next_chr(s: &str) -> char {$/;" f module:value +next_dev vendor/libc/src/unix/haiku/native.rs /^ pub fn next_dev(pos: *mut i32) -> ::dev_t;$/;" f +next_doc support/texi2html /^sub next_doc {$/;" s +next_entry lib/malloc/table.c /^#define next_entry(/;" d file: +next_history lib/readline/history.c /^next_history (void)$/;" f typeref:typename:HIST_ENTRY * +next_history r_readline/src/lib.rs /^ pub fn next_history() -> *mut HIST_ENTRY;$/;" f +next_id target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" n +next_if vendor/futures-util/src/stream/stream/peek.rs /^ pub fn next_if(self: Pin<&mut Self>, func: F) -> NextIf<'_, St, F>$/;" P implementation:Peekable +next_if_eq vendor/futures-util/src/stream/stream/peek.rs /^ pub fn next_if_eq<'a, T>(self: Pin<&'a mut Self>, expected: &'a T) -> NextIfEq<'a, St, T>$/;" P implementation:Peekable +next_incoming_index vendor/futures-util/src/stream/futures_ordered.rs /^ next_incoming_index: usize,$/;" m struct:FuturesOrdered +next_lifetime vendor/async-trait/src/lifetime.rs /^ fn next_lifetime>>(&mut self, span: S) -> Lifetime {$/;" P implementation:CollectLifetimes +next_line support/texi2html /^sub next_line {$/;" s +next_message vendor/futures-channel/src/mpsc/mod.rs /^ fn next_message(&mut self) -> Poll> {$/;" P implementation:Receiver +next_message vendor/futures-channel/src/mpsc/mod.rs /^ fn next_message(&mut self) -> Poll> {$/;" P implementation:UnboundedReceiver +next_outgoing_index vendor/futures-util/src/stream/futures_ordered.rs /^ next_outgoing_index: usize,$/;" m struct:FuturesOrdered +next_pending_trap builtins_rust/wait/src/lib.rs /^ fn next_pending_trap(start: i32) -> i32;$/;" f +next_pending_trap r_bash/src/lib.rs /^ pub fn next_pending_trap(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +next_pending_trap r_glob/src/lib.rs /^ pub fn next_pending_trap(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +next_pending_trap r_readline/src/lib.rs /^ pub fn next_pending_trap(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +next_pending_trap trap.c /^next_pending_trap (start)$/;" f +next_ready_to_run vendor/futures-util/src/stream/futures_unordered/task.rs /^ pub(super) next_ready_to_run: AtomicPtr>,$/;" m struct:Task +next_row support/man2html.c /^next_row(TABLEROW * tr)$/;" f typeref:typename:TABLEROW * file: +next_start_pos vendor/proc-macro2/src/fallback.rs /^ fn next_start_pos(&self) -> u32 {$/;" P implementation:SourceMap +nextchar builtins/getopt.c /^static char *nextchar;$/;" v typeref:typename:char * file: +nextf lib/malloc/malloc.c /^static union mhead *nextf[NBUCKETS];$/;" v typeref:union:mhead * [] file: +nfds subst.c /^static int nfds;$/;" v typeref:typename:int file: +nfds_t vendor/libc/src/fuchsia/mod.rs /^pub type nfds_t = ::c_ulong;$/;" t +nfds_t vendor/libc/src/unix/bsd/mod.rs /^pub type nfds_t = ::c_uint;$/;" t +nfds_t vendor/libc/src/unix/haiku/mod.rs /^pub type nfds_t = ::c_ulong;$/;" t +nfds_t vendor/libc/src/unix/hermit/mod.rs /^pub type nfds_t = ::c_ulong;$/;" t +nfds_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type nfds_t = ::c_uint;$/;" t +nfds_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type nfds_t = ::c_ulong;$/;" t +nfds_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type nfds_t = ::c_ulong;$/;" t +nfds_t vendor/libc/src/unix/newlib/mod.rs /^pub type nfds_t = u32;$/;" t +nfds_t vendor/libc/src/unix/redox/mod.rs /^pub type nfds_t = ::c_ulong;$/;" t +nfds_t vendor/libc/src/unix/solarish/mod.rs /^pub type nfds_t = ::c_ulong;$/;" t +nfds_t vendor/libc/src/vxworks/mod.rs /^pub type nfds_t = ::c_uint;$/;" t +nfds_t vendor/libc/src/wasi.rs /^pub type nfds_t = c_ulong;$/;" t +nfifo subst.c /^static int nfifo;$/;" v typeref:typename:int file: +nfre lib/malloc/mstats.h /^ int nfre;$/;" m struct:_malstats typeref:typename:int +nfree lib/malloc/mstats.h /^ int nfree;$/;" m struct:bucket_stats typeref:typename:int +nfree lib/malloc/table.h /^ int nalloc, nfree;$/;" m struct:mr_table typeref:typename:int +nfsstat vendor/libc/src/vxworks/mod.rs /^enum nfsstat {$/;" g +ngettext include/gettext.h /^# define ngettext(/;" d +ngettext lib/intl/intl-compat.c /^ngettext (msgid1, msgid2, n)$/;" f +ngettext lib/intl/libgnuintl.h.in /^# define ngettext /;" d file: +ngettext lib/intl/libgnuintl.h.in /^static inline char *ngettext (const char *__msgid1, const char *__msgid2,$/;" f typeref:typename:char * file: +ngettext r_bash/src/lib.rs /^ pub fn ngettext($/;" f +ngettext.$lo lib/intl/Makefile.in /^bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomai/;" t +ngettext.lo lib/intl/Makefile.in /^ngettext.lo: $(srcdir)\/ngettext.c$/;" t +ngroups general.c /^static int ngroups, maxgroups;$/;" v typeref:typename:int file: +nhash vendor/memchr/src/memmem/mod.rs /^ nhash: NeedleHash,$/;" m struct:SearcherRev +nhash vendor/memchr/src/memmem/mod.rs /^ pub(crate) nhash: NeedleHash,$/;" m struct:NeedleInfo +nice r_bash/src/lib.rs /^ pub fn nice(__inc: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +nice r_glob/src/lib.rs /^ pub fn nice(__inc: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +nice r_readline/src/lib.rs /^ pub fn nice(__inc: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +nice vendor/libc/src/unix/mod.rs /^ pub fn nice(incr: ::c_int) -> ::c_int;$/;" f +nightly vendor/proc-macro2/build.rs /^ nightly: bool,$/;" m struct:RustcVersion +nightly vendor/proc-macro2/src/wrapper.rs /^ fn nightly(sf: proc_macro::SourceFile) -> Self {$/;" P implementation:SourceFile +nightly vendor/syn/build.rs /^ nightly: bool,$/;" m struct:Compiler +ninfo vendor/memchr/src/memmem/mod.rs /^ ninfo: NeedleInfo,$/;" m struct:Searcher +ninfo vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) ninfo: NeedleInfo,$/;" m struct:tests::PrefilterTest +ninfo vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) ninfo: &'a NeedleInfo,$/;" m struct:Pre +nl_item vendor/libc/src/fuchsia/mod.rs /^pub type nl_item = ::c_int;$/;" t +nl_item vendor/libc/src/solid/mod.rs /^pub type nl_item = c_long;$/;" t +nl_item vendor/libc/src/unix/bsd/apple/mod.rs /^pub type nl_item = ::c_int;$/;" t +nl_item vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type nl_item = ::c_int;$/;" t +nl_item vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type nl_item = c_long;$/;" t +nl_item vendor/libc/src/unix/haiku/mod.rs /^pub type nl_item = ::c_int;$/;" t +nl_item vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type nl_item = ::c_int;$/;" t +nl_item vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type nl_item = ::c_int;$/;" t +nl_item vendor/libc/src/unix/solarish/mod.rs /^pub type nl_item = ::c_int;$/;" t +nl_item vendor/libc/src/wasi.rs /^pub type nl_item = c_int;$/;" t +nl_langinfo vendor/libc/src/fuchsia/mod.rs /^ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;$/;" f +nl_langinfo vendor/libc/src/solid/mod.rs /^ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;$/;" f +nl_langinfo vendor/libc/src/unix/bsd/mod.rs /^ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;$/;" f +nl_langinfo vendor/libc/src/unix/haiku/mod.rs /^ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;$/;" f +nl_langinfo vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;$/;" f +nl_langinfo vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;$/;" f +nl_langinfo vendor/libc/src/unix/solarish/mod.rs /^ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;$/;" f +nl_langinfo vendor/libc/src/wasi.rs /^ pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;$/;" f +nl_langinfo_l vendor/libc/src/fuchsia/mod.rs /^ pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char;$/;" f +nl_langinfo_l vendor/libc/src/solid/mod.rs /^ pub fn nl_langinfo_l(item: ::nl_item, locale: locale_t) -> *mut ::c_char;$/;" f +nl_langinfo_l vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char;$/;" f +nl_langinfo_l vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char;$/;" f +nl_langinfo_l vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char;$/;" f +nl_langinfo_l vendor/libc/src/unix/solarish/mod.rs /^ pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char;$/;" f +nl_langinfo_l vendor/libc/src/wasi.rs /^ pub fn nl_langinfo_l(item: ::nl_item, loc: ::locale_t) -> *mut ::c_char;$/;" f +nldef vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "nldef")] pub mod nldef;$/;" n +nlesscore lib/malloc/mstats.h /^ int nlesscore;$/;" m struct:bucket_stats typeref:typename:int +nlesscore lib/malloc/mstats.h /^ int nlesscore[NBUCKETS];$/;" m struct:_malstats typeref:typename:int[] +nlink_t r_bash/src/lib.rs /^pub type nlink_t = __nlink_t;$/;" t +nlink_t r_glob/src/lib.rs /^pub type nlink_t = __nlink_t;$/;" t +nlink_t r_readline/src/lib.rs /^pub type nlink_t = __nlink_t;$/;" t +nlink_t vendor/libc/src/fuchsia/aarch64.rs /^pub type nlink_t = ::c_ulong;$/;" t +nlink_t vendor/libc/src/fuchsia/x86_64.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/solid/mod.rs /^pub type nlink_t = u32;$/;" t +nlink_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type nlink_t = u16;$/;" t +nlink_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type nlink_t = u32;$/;" t +nlink_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs /^pub type nlink_t = u16;$/;" t +nlink_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type nlink_t = u32;$/;" t +nlink_t vendor/libc/src/unix/haiku/mod.rs /^pub type nlink_t = i32;$/;" t +nlink_t vendor/libc/src/unix/hermit/mod.rs /^pub type nlink_t = u16;$/;" t +nlink_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type nlink_t = u32;$/;" t +nlink_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type nlink_t = u32;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type nlink_t = u32;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs /^pub type nlink_t = u32;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs /^pub type nlink_t = u32;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs /^pub type nlink_t = ::c_uint;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs /^pub type nlink_t = u32;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/musl/b32/mod.rs /^pub type nlink_t = u32;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs /^pub type nlink_t = u32;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs /^pub type nlink_t = ::c_uint;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type nlink_t = ::c_uint;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type nlink_t = u32;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs /^pub type nlink_t = u64;$/;" t +nlink_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type nlink_t = ::c_uint;$/;" t +nlink_t vendor/libc/src/unix/newlib/mod.rs /^pub type nlink_t = ::c_ushort;$/;" t +nlink_t vendor/libc/src/unix/redox/mod.rs /^pub type nlink_t = ::c_ulong;$/;" t +nlink_t vendor/libc/src/unix/solarish/mod.rs /^pub type nlink_t = ::c_uint;$/;" t +nlink_t vendor/libc/src/vxworks/mod.rs /^pub type nlink_t = ::c_ulong;$/;" t +nlink_t vendor/libc/src/wasi.rs /^pub type nlink_t = u64;$/;" t +nlos2_initialize lib/intl/os2compat.c /^nlos2_initialize ()$/;" f typeref:typename:void file: +nls.o lib/readline/Makefile.in /^nls.o: ansi_stdlib.h$/;" t +nls.o lib/readline/Makefile.in /^nls.o: history.h rlstdc.h$/;" t +nls.o lib/readline/Makefile.in /^nls.o: nls.c$/;" t +nls.o lib/readline/Makefile.in /^nls.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +nls.o lib/readline/Makefile.in /^nls.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +nls.o lib/readline/Makefile.in /^nls.o: rlprivate.h$/;" t +nls.o lib/readline/Makefile.in /^nls.o: rlshell.h$/;" t +nls_uint32 lib/intl/gmo.h /^typedef unsigned long nls_uint32;$/;" t typeref:typename:unsigned long +nls_uint32 lib/intl/gmo.h /^typedef unsigned nls_uint32;$/;" t typeref:typename:unsigned +nls_uint32 lib/intl/gmo.h /^typedef unsigned short nls_uint32;$/;" t typeref:typename:unsigned short +nmal lib/malloc/mstats.h /^ int nmal;$/;" m struct:_malstats typeref:typename:int +nmal lib/malloc/mstats.h /^ int nmal;$/;" m struct:bucket_stats typeref:typename:int +nmalloc lib/malloc/mstats.h /^ int nmalloc[NBUCKETS];$/;" m struct:_malstats typeref:typename:int[] +nmap lib/intl/localealias.c /^static size_t nmap;$/;" v typeref:typename:size_t file: +nmmap lib/malloc/mstats.h /^ int nmmap; \/* currently unused *\/$/;" m struct:bucket_stats typeref:typename:int +nmmap lib/malloc/mstats.h /^ int nmmap;$/;" m struct:_malstats typeref:typename:int +nmorecore lib/malloc/mstats.h /^ int nmorecore;$/;" m struct:bucket_stats typeref:typename:int +nmorecore lib/malloc/mstats.h /^ int nmorecore[NBUCKETS];$/;" m struct:_malstats typeref:typename:int[] +nmount vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn nmount(iov: *mut ::iovec, niov: ::c_uint, flags: ::c_int) -> ::c_int;$/;" f +nmount vendor/nix/src/mount/bsd.rs /^ pub fn nmount(&mut self, flags: MntFlags) -> NmountResult {$/;" P implementation:Nmount +no_args builtins/common.c /^no_args (list)$/;" f +no_args builtins_rust/suspend/src/intercdep.rs /^ pub fn no_args(list: *mut WordList);$/;" f +no_args r_bash/src/lib.rs /^ pub fn no_args(arg1: *mut WORD_LIST);$/;" f +no_atomic_cas.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +no_atomic_cas.rs vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +no_atomic_cas.rs vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +no_atomic_cas.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +no_empty_command_completion bashline.c /^int no_empty_command_completion;$/;" v typeref:typename:int +no_empty_command_completion builtins_rust/shopt/src/lib.rs /^ static mut no_empty_command_completion: i32;$/;" v +no_empty_command_completion r_bash/src/lib.rs /^ pub static mut no_empty_command_completion: ::std::os::raw::c_int;$/;" v +no_exit_on_failed_exec builtins_rust/exec/src/lib.rs /^ static no_exit_on_failed_exec: i32;$/;" v +no_exit_on_failed_exec builtins_rust/shopt/src/lib.rs /^ static mut no_exit_on_failed_exec: i32;$/;" v +no_infer_outlives vendor/pin-project-lite/tests/test.rs /^fn no_infer_outlives() {$/;" f +no_line_editing builtins_rust/bind/src/lib.rs /^ static no_line_editing: i32;$/;" v +no_line_editing builtins_rust/set/src/lib.rs /^ static mut no_line_editing: i32;$/;" v +no_line_editing r_bash/src/lib.rs /^ pub static mut no_line_editing: ::std::os::raw::c_int;$/;" v +no_line_editing shell.c /^int no_line_editing = 0; \/* non-zero -> don't do fancy line editing. *\/$/;" v typeref:typename:int +no_line_editing shell.c /^int no_line_editing = 1; \/* can't have line editing without readline *\/$/;" v typeref:typename:int +no_longjmp_on_fatal_error r_bash/src/lib.rs /^ pub static mut no_longjmp_on_fatal_error: ::std::os::raw::c_int;$/;" v +no_longjmp_on_fatal_error subst.c /^int no_longjmp_on_fatal_error = 0;$/;" v typeref:typename:int +no_mode lib/readline/rldefs.h /^# define no_mode /;" d +no_newline_output support/man2html.c /^static int no_newline_output = 0;$/;" v typeref:typename:int file: +no_options builtins/common.c /^no_options (list)$/;" f +no_options builtins_rust/builtin/src/intercdep.rs /^ pub fn no_options(list: *mut WordList) -> c_int;$/;" f +no_options builtins_rust/caller/src/lib.rs /^ fn no_options(list: *mut WordList) -> i32;$/;" f +no_options builtins_rust/fg_bg/src/lib.rs /^ fn no_options(list: *mut WordList) -> i32;$/;" f +no_options builtins_rust/source/src/lib.rs /^ fn no_options(list: *mut WordList) -> i32;$/;" f +no_options builtins_rust/times/src/intercdep.rs /^ pub fn no_options(list: *mut WordList) -> c_int;$/;" f +no_options r_bash/src/lib.rs /^ pub fn no_options(arg1: *mut WORD_LIST) -> ::std::os::raw::c_int;$/;" f +no_panic vendor/futures/tests/stream_catch_unwind.rs /^fn no_panic() {$/;" f +no_panic vendor/proc-macro2/tests/test.rs /^fn no_panic() {$/;" f +no_profile shell.c /^static int no_profile; \/* Don't execute .profile *\/$/;" v typeref:typename:int file: +no_rc shell.c /^static int no_rc; \/* Don't execute ~\/.bashrc *\/$/;" v typeref:typename:int file: +no_std vendor/autocfg/src/lib.rs /^ no_std: bool,$/;" m struct:AutoCfg +no_std vendor/tinystr/README.md /^no_std$/;" s chapter:tinystr [![crates.io](http://meritbadge.herokuapp.com/tinystr)](https://crates.io/crates/tinystr) [![Build Status](https://travis-ci.org/zbraniecki/tinystr.svg?branch=master)](https://travis-ci.org/zbraniecki/tinystr) [![Coverage Status](https://coveralls.io/repos/github/zbraniecki/tinystr/badge.svg?branch=master)](https://coveralls.io/github/zbraniecki/tinystr?branch=master) +no_symbolic_links builtins_rust/cd/src/lib.rs /^ static no_symbolic_links: i32;$/;" v +no_symbolic_links builtins_rust/common/src/lib.rs /^ static no_symbolic_links: i32;$/;" v +no_symbolic_links flags.c /^int no_symbolic_links = 0;$/;" v typeref:typename:int +no_symbolic_links r_bash/src/lib.rs /^ pub static mut no_symbolic_links: ::std::os::raw::c_int;$/;" v +noassign_p builtins_rust/common/src/lib.rs /^macro_rules! noassign_p {$/;" M +noassign_p builtins_rust/declare/src/lib.rs /^unsafe fn noassign_p(var: *mut SHELL_VAR) -> i32 {$/;" f +noassign_p builtins_rust/getopts/src/lib.rs /^fn noassign_p(va: *mut SHELL_VAR) -> i32 {$/;" f +noassign_p variables.h /^#define noassign_p(/;" d +nobreaksym support/man2html.c /^static char escapesym = '\\\\', nobreaksym = '\\'', controlsym = '.', fieldsym = 0, padsym = 0;$/;" v typeref:typename:char file: +noclobber flags.c /^int noclobber = 0;$/;" v typeref:typename:int +noclobber r_bash/src/lib.rs /^ pub static mut noclobber: ::std::os::raw::c_int;$/;" v +noclobber_open redir.c /^noclobber_open (filename, flags, mode, ri)$/;" f file: +node vendor/fluent-bundle/src/message.rs /^ node: &'m ast::Attribute<&'m str>,$/;" m struct:FluentAttribute +node vendor/fluent-bundle/src/message.rs /^ node: &'m ast::Message<&'m str>,$/;" m struct:FluentMessage +nodename vendor/nix/src/sys/utsname.rs /^ pub fn nodename(&self) -> &OsStr {$/;" P implementation:UtsName +noeval expr.c /^ int noeval;$/;" m struct:__anonfc32de750108 typeref:typename:int file: +noeval expr.c /^static int noeval; \/* set to 1 if no assignment to be done *\/$/;" v typeref:typename:int file: +noeval test.c /^static int noeval;$/;" v typeref:typename:int file: +noext support/texi2dvi /^noext ()$/;" f +nofree_p variables.h /^#define nofree_p(/;" d +noglob_dot_filenames lib/glob/glob.c /^int noglob_dot_filenames = 1;$/;" v typeref:typename:int +noglob_dot_filenames r_bash/src/lib.rs /^ pub static mut noglob_dot_filenames: ::std::os::raw::c_int;$/;" v +noglob_dot_filenames r_glob/src/lib.rs /^ pub static mut noglob_dot_filenames: ::std::os::raw::c_int;$/;" v +nohup_all_jobs builtins_rust/jobs/src/lib.rs /^ fn nohup_all_jobs(running_only: i32);$/;" f +nohup_all_jobs jobs.c /^nohup_all_jobs (running_only)$/;" f +nohup_all_jobs r_bash/src/lib.rs /^ pub fn nohup_all_jobs(arg1: ::std::os::raw::c_int);$/;" f +nohup_all_jobs r_jobs/src/lib.rs /^pub unsafe extern "C" fn nohup_all_jobs(mut running_only: c_int) {$/;" f +nohup_job builtins_rust/jobs/src/lib.rs /^ fn nohup_job(job_index: i32);$/;" f +nohup_job jobs.c /^nohup_job (job_index)$/;" f +nohup_job r_bash/src/lib.rs /^ pub fn nohup_job(arg1: ::std::os::raw::c_int);$/;" f +nohup_job r_jobs/src/lib.rs /^pub unsafe extern "C" fn nohup_job(mut job_index: c_int) {$/;" f +nojobs.o Makefile.in /^nojobs.o: $(BASHINCDIR)\/ocache.h $(BASHINCDIR)\/chartypes.h $(BASHINCDIR)\/typemax.h$/;" t +nojobs.o Makefile.in /^nojobs.o: $(DEFDIR)\/builtext.h$/;" t +nojobs.o Makefile.in /^nojobs.o: $(srcdir)\/config-top.h$/;" t +nojobs.o Makefile.in /^nojobs.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +nojobs.o Makefile.in /^nojobs.o: command.h ${BASHINCDIR}\/stdc.h general.h xmalloc.h jobs.h quit.h siglist.h externs.h$/;" t +nojobs.o Makefile.in /^nojobs.o: config.h bashtypes.h ${BASHINCDIR}\/filecntl.h bashjmp.h ${BASHINCDIR}\/posixjmp.h$/;" t +nojobs.o Makefile.in /^nojobs.o: sig.h error.h ${BASHINCDIR}\/shtty.h input.h parser.h$/;" t +non_ascii_tokens vendor/proc-macro2/tests/test.rs /^fn non_ascii_tokens() {$/;" f +non_unsettable r_bash/src/lib.rs /^ pub fn non_unsettable(arg1: *mut ::std::os::raw::c_char);$/;" f +non_unsettable_p builtins_rust/common/src/lib.rs /^macro_rules! non_unsettable_p {$/;" M +non_unsettable_p builtins_rust/set/src/lib.rs /^macro_rules! non_unsettable_p {$/;" M +non_unsettable_p variables.h /^#define non_unsettable_p(/;" d +none vendor/nix/src/sys/time.rs /^ pub const fn none() -> Self {$/;" P implementation:timer::TimerSpec +noninc_dosearch lib/readline/search.c /^noninc_dosearch (char *string, int dir, int flags)$/;" f typeref:typename:int file: +noninc_history_pos lib/readline/search.c /^static int noninc_history_pos;$/;" v typeref:typename:int file: +noninc_search lib/readline/search.c /^noninc_search (int dir, int pchar)$/;" f typeref:typename:int file: +noninc_search_from_pos lib/readline/search.c /^noninc_search_from_pos (char *string, int pos, int dir, int flags, int *ncp)$/;" f typeref:typename:int file: +noninc_search_string lib/readline/search.c /^static char *noninc_search_string = (char *) NULL;$/;" v typeref:typename:char * file: +noop vendor/futures-task/src/noop_waker.rs /^unsafe fn noop(_data: *const ()) {}$/;" f +noop_clone vendor/futures-task/src/noop_waker.rs /^unsafe fn noop_clone(_data: *const ()) -> RawWaker {$/;" f +noop_raw_waker vendor/futures-task/src/noop_waker.rs /^const fn noop_raw_waker() -> RawWaker {$/;" f +noop_visit_expr vendor/syn/tests/test_precedence.rs /^ fn noop_visit_expr(e: &mut Expr, vis: &mut T) {$/;" f function:librustc_brackets +noop_waker vendor/futures-task/src/lib.rs /^mod noop_waker;$/;" n +noop_waker vendor/futures-task/src/noop_waker.rs /^pub fn noop_waker() -> Waker {$/;" f +noop_waker_ref vendor/futures-task/src/noop_waker.rs /^pub fn noop_waker_ref() -> &'static Waker {$/;" f +norm_face lib/readline/display.c /^norm_face (char *face, int n)$/;" f typeref:typename:void file: +normal lib/readline/colors.h /^ normal,$/;" e enum:filetype +normal_fut_exprs vendor/futures-macro/src/select.rs /^ normal_fut_exprs: Vec,$/;" m struct:Select +normal_fut_handlers vendor/futures-macro/src/select.rs /^ normal_fut_handlers: Vec<(Pat, Expr)>,$/;" m struct:Select +normalise_node support/texi2html /^sub normalise_node {$/;" s +normalize vendor/syn/tests/test_round_trip.rs /^fn normalize(krate: &mut Crate) {$/;" f +normalize_codeset lib/readline/nls.c /^normalize_codeset (char *codeset)$/;" f typeref:typename:char * file: +nosigstty lib/readline/rltty.c /^static TIOTYPE sigstty, nosigstty;$/;" v typeref:typename:TIOTYPE file: +nostd vendor/memchr/src/memmem/x86/avx.rs /^mod nostd {$/;" n +not vendor/bitflags/tests/compile-fail/non_integer_base/all_defined.rs /^ fn not(self) -> Self {$/;" P implementation:MyInt +not vendor/thiserror/tests/test_display.rs /^ fn not(bool: &bool) -> bool {$/;" f function:test_nested +not_equal lib/intl/plural-exp.h /^ not_equal, \/* Comparison for inequality. *\/$/;" e enum:expression::__anon93874cf10103 +notice vendor/syn/tests/zzz_stable.rs /^fn notice() -> io::Result<()> {$/;" f +notifier vendor/futures-util/src/future/future/shared.rs /^ notifier: Arc,$/;" m struct:Inner +notify vendor/futures-channel/src/mpsc/mod.rs /^ fn notify(&mut self) {$/;" P implementation:SenderTask +notify vendor/futures-executor/src/unpark_mutex.rs /^ pub(crate) fn notify(&self) -> Result {$/;" P implementation:UnparkMutex +notify vendor/futures-util/src/compat/compat01as03.rs /^ fn notify(&self, _: usize) {$/;" P implementation:NotifyWaker +notify_and_cleanup jobs.c /^notify_and_cleanup ()$/;" f typeref:typename:void +notify_and_cleanup r_bash/src/lib.rs /^ pub fn notify_and_cleanup();$/;" f +notify_and_cleanup r_jobs/src/lib.rs /^pub unsafe extern "C" fn notify_and_cleanup() {$/;" f +notify_noop vendor/futures-util/benches_disabled/bilock.rs /^ fn notify_noop() -> Waker {$/;" f module:bench +notify_of_job_status jobs.c /^notify_of_job_status ()$/;" f typeref:typename:void file: +notify_of_job_status r_jobs/src/lib.rs /^unsafe extern "C" fn notify_of_job_status() {$/;" f +notsyntype syntax.h /^#define notsyntype(/;" d +now lib/malloc/alloca.c /^ long now; \/* Current total stack size. *\/$/;" m struct:stk_stat typeref:typename:long file: +now vendor/nix/src/time.rs /^ pub fn now(self) -> Result {$/;" P implementation:ClockId +now_or_never vendor/futures-util/src/future/future/mod.rs /^ fn now_or_never(self) -> Option$/;" P interface:FutureExt +npid jobs.h /^ int npid;$/;" m struct:bgpids typeref:typename:int +npid r_bash/src/lib.rs /^ pub npid: ::std::os::raw::c_int,$/;" m struct:bgpids +nplurals lib/intl/gettextP.h /^ unsigned long int nplurals;$/;" m struct:loaded_domain typeref:typename:unsigned long int +nproc jobs.h /^ int nproc;$/;" m struct:procchain typeref:typename:int +nproc r_bash/src/lib.rs /^ pub nproc: ::std::os::raw::c_int,$/;" m struct:procchain +nr support/man2html.c /^ int nr, slen;$/;" m struct:STRDEF typeref:typename:int file: +nr support/man2html.c /^ int nr;$/;" m struct:INTDEF typeref:typename:int file: +nr_wake vendor/futures/tests/task_arc_wake.rs /^ nr_wake: Mutex,$/;" m struct:CountingWaker +nrand48 r_bash/src/lib.rs /^ pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;$/;" f +nrand48 r_glob/src/lib.rs /^ pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;$/;" f +nrand48 r_readline/src/lib.rs /^ pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;$/;" f +nrand48 vendor/libc/src/solid/mod.rs /^ pub fn nrand48(arg1: *mut c_ushort) -> c_long;$/;" f +nrand48 vendor/libc/src/unix/bsd/mod.rs /^ pub fn nrand48(xseed: *mut ::c_ushort) -> ::c_long;$/;" f +nrand48 vendor/libc/src/unix/haiku/mod.rs /^ pub fn nrand48(xseed: *mut ::c_ushort) -> ::c_long;$/;" f +nrand48_r r_bash/src/lib.rs /^ pub fn nrand48_r($/;" f +nrand48_r r_glob/src/lib.rs /^ pub fn nrand48_r($/;" f +nrand48_r r_readline/src/lib.rs /^ pub fn nrand48_r($/;" f +nrcopy lib/malloc/mstats.h /^ int nrcopy;$/;" m struct:_malstats typeref:typename:int +nrealloc lib/malloc/mstats.h /^ int nrealloc;$/;" m struct:_malstats typeref:typename:int +nrecurse lib/malloc/mstats.h /^ int nrecurse;$/;" m struct:_malstats typeref:typename:int +nsbrk lib/malloc/mstats.h /^ int nsbrk;$/;" m struct:_malstats typeref:typename:int +nsplit lib/malloc/mstats.h /^ int nsplit;$/;" m struct:bucket_stats typeref:typename:int +nsplit lib/malloc/mstats.h /^ int nsplit[NBUCKETS];$/;" m struct:_malstats typeref:typename:int[] +nstrings lib/intl/gettextP.h /^ nls_uint32 nstrings;$/;" m struct:loaded_domain typeref:typename:nls_uint32 +nstrings lib/intl/gmo.h /^ nls_uint32 nstrings;$/;" m struct:mo_file_header typeref:typename:nls_uint32 +ntable hashlib.c /^HASH_TABLE *table, *ntable;$/;" v typeref:typename:HASH_TABLE * +ntddndis vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "ntddndis")] pub mod ntddndis;$/;" n +ntddscsi vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "ntddscsi")] pub mod ntddscsi;$/;" n +ntddser vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "ntddser")] pub mod ntddser;$/;" n +ntdef vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "ntdef")] pub mod ntdef;$/;" n +ntlsa vendor/winapi/src/um/mod.rs /^#[cfg(feature = "ntlsa")] pub mod ntlsa;$/;" n +ntmpfiles lib/sh/tmpfile.c /^static int ntmpfiles;$/;" v typeref:typename:int file: +ntohd vendor/winapi/src/um/winsock2.rs /^pub fn ntohd(Value: __uint64) -> c_double {$/;" f +ntohf vendor/winapi/src/um/winsock2.rs /^pub fn ntohf(Value: __uint32) -> c_float {$/;" f +ntohl vendor/winapi/src/um/winsock2.rs /^ pub fn ntohl($/;" f +ntohll vendor/winapi/src/um/winsock2.rs /^pub fn ntohll(Value: __uint64) -> __uint64 {$/;" f +ntohs vendor/winapi/src/um/winsock2.rs /^ pub fn ntohs($/;" f +ntp_adjtime vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn ntp_adjtime(buf: *mut timex) -> ::c_int;$/;" f +ntp_adjtime vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn ntp_adjtime(buf: *mut timex) -> ::c_int;$/;" f +ntp_adjtime vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn ntp_adjtime(buf: *mut timex) -> ::c_int;$/;" f +ntp_adjtime vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn ntp_adjtime(buf: *mut timex) -> ::c_int;$/;" f +ntp_adjtime vendor/libc/src/unix/solarish/mod.rs /^ pub fn ntp_adjtime(buf: *mut timex) -> ::c_int;$/;" f +ntp_gettime vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn ntp_gettime(buf: *mut ntptimeval) -> ::c_int;$/;" f +ntp_gettime vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn ntp_gettime(buf: *mut ntptimeval) -> ::c_int;$/;" f +ntp_gettime vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn ntp_gettime(buf: *mut ntptimeval) -> ::c_int;$/;" f +ntp_gettime vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn ntp_gettime(buf: *mut ntptimeval) -> ::c_int;$/;" f +ntp_gettime vendor/libc/src/unix/solarish/mod.rs /^ pub fn ntp_gettime(buf: *mut ntptimeval) -> ::c_int;$/;" f +ntsecapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "ntsecapi")] pub mod ntsecapi;$/;" n +ntstatus vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "ntstatus")] pub mod ntstatus;$/;" n +null_array_assign variables.c /^null_array_assign (self, value, ind, key)$/;" f file: +null_assign variables.c /^null_assign (self, value, unused, key)$/;" f file: +null_opt vendor/nix/src/mount/bsd.rs /^ pub fn null_opt(&mut self, name: &'a CStr) -> &mut Self {$/;" P implementation:Nmount +null_opt_owned vendor/nix/src/mount/bsd.rs /^ pub fn null_opt_owned(&mut self, name: &P) -> &mut Self$/;" P implementation:Nmount +nullpath lib/sh/makepath.c /^static char *nullpath = "";$/;" v typeref:typename:char * file: +nullstr execute_cmd.c /^static char * const nullstr = "";$/;" v typeref:typename:char * const file: +num lib/intl/plural-exp.h /^ num, \/* Decimal number. *\/$/;" e enum:expression::__anon93874cf10103 +num lib/intl/plural-exp.h /^ unsigned long int num; \/* Number value for `num'. *\/$/;" m union:expression::__anon93874cf1020a typeref:typename:unsigned long int +num lib/intl/plural.c /^ unsigned long int num;$/;" m union:YYSTYPE typeref:typename:unsigned long int file: +num vendor/stdext/src/lib.rs /^pub mod num;$/;" n +num_elements array.h /^ int num_elements;$/;" m struct:array typeref:typename:int +num_elements builtins_rust/mapfile/src/intercdep.rs /^ pub num_elements: c_int,$/;" m struct:array +num_elements builtins_rust/read/src/intercdep.rs /^ pub num_elements: c_int,$/;" m struct:array +num_elements r_bash/src/lib.rs /^ pub num_elements: ::std::os::raw::c_int,$/;" m struct:array +num_elements r_glob/src/lib.rs /^ pub num_elements: ::std::os::raw::c_int,$/;" m struct:array +num_elements r_readline/src/lib.rs /^ pub num_elements: ::std::os::raw::c_int,$/;" m struct:array +num_fifos r_bash/src/lib.rs /^ pub fn num_fifos() -> ::std::os::raw::c_int;$/;" f +num_fifos subst.c /^num_fifos ()$/;" f typeref:typename:int +num_hours vendor/nix/src/sys/time.rs /^ fn num_hours(&self) -> i64 {$/;" P interface:TimeValLike +num_ignores pathexp.h /^ int num_ignores; \/* How many are there? *\/$/;" m struct:ignorevar typeref:typename:int +num_ignores r_bash/src/lib.rs /^ pub num_ignores: ::std::os::raw::c_int,$/;" m struct:ignorevar +num_messages vendor/futures-channel/src/mpsc/mod.rs /^ num_messages: usize,$/;" m struct:State +num_microseconds vendor/nix/src/sys/time.rs /^ fn num_microseconds(&self) -> i64 {$/;" P implementation:TimeSpec +num_microseconds vendor/nix/src/sys/time.rs /^ fn num_microseconds(&self) -> i64 {$/;" P implementation:TimeVal +num_microseconds vendor/nix/src/sys/time.rs /^ fn num_microseconds(&self) -> i64;$/;" P interface:TimeValLike +num_milliseconds vendor/nix/src/sys/time.rs /^ fn num_milliseconds(&self) -> i64 {$/;" P implementation:TimeSpec +num_milliseconds vendor/nix/src/sys/time.rs /^ fn num_milliseconds(&self) -> i64 {$/;" P implementation:TimeVal +num_milliseconds vendor/nix/src/sys/time.rs /^ fn num_milliseconds(&self) -> i64;$/;" P interface:TimeValLike +num_minutes vendor/nix/src/sys/time.rs /^ fn num_minutes(&self) -> i64 {$/;" P interface:TimeValLike +num_nanoseconds vendor/nix/src/sys/time.rs /^ fn num_nanoseconds(&self) -> i64 {$/;" P implementation:TimeSpec +num_nanoseconds vendor/nix/src/sys/time.rs /^ fn num_nanoseconds(&self) -> i64 {$/;" P implementation:TimeVal +num_nanoseconds vendor/nix/src/sys/time.rs /^ fn num_nanoseconds(&self) -> i64;$/;" P interface:TimeValLike +num_posix_options builtins_rust/set/src/lib.rs /^ fn num_posix_options() -> i32;$/;" f +num_posix_options general.c /^num_posix_options ()$/;" f typeref:typename:int +num_posix_options r_bash/src/lib.rs /^ pub fn num_posix_options() -> ::std::os::raw::c_int;$/;" f +num_posix_options r_glob/src/lib.rs /^ pub fn num_posix_options() -> ::std::os::raw::c_int;$/;" f +num_posix_options r_readline/src/lib.rs /^ pub fn num_posix_options() -> ::std::os::raw::c_int;$/;" f +num_seconds vendor/nix/src/sys/time.rs /^ fn num_seconds(&self) -> i64 {$/;" P implementation:TimeSpec +num_seconds vendor/nix/src/sys/time.rs /^ fn num_seconds(&self) -> i64 {$/;" P implementation:TimeVal +num_seconds vendor/nix/src/sys/time.rs /^ fn num_seconds(&self) -> i64;$/;" P interface:TimeValLike +num_senders vendor/futures-channel/src/mpsc/mod.rs /^ num_senders: AtomicUsize,$/;" m struct:BoundedInner +num_senders vendor/futures-channel/src/mpsc/mod.rs /^ num_senders: AtomicUsize,$/;" m struct:UnboundedInner +num_shell_builtins builtins_rust/common/src/lib.rs /^ static mut num_shell_builtins: i32;$/;" v +num_shell_builtins builtins_rust/enable/src/lib.rs /^ static mut num_shell_builtins: libc::c_int;$/;" v +num_shell_builtins builtins_rust/help/src/lib.rs /^ static mut num_shell_builtins: i32;$/;" v +num_shell_builtins r_bash/src/lib.rs /^ pub static mut num_shell_builtins: ::std::os::raw::c_int;$/;" v +number lib/sh/snprintf.c /^number(p, d, base)$/;" f file: +number vendor/fluent-bundle/src/types/mod.rs /^mod number;$/;" n +number vendor/nix/test/test_kmod/hello_mod/hello.c /^static int number= 1;$/;" v typeref:typename:int file: +number_of_args builtins/common.c /^number_of_args ()$/;" f typeref:typename:int +number_of_args builtins_rust/getopts/src/lib.rs /^ fn number_of_args() -> i32;$/;" f +number_of_args builtins_rust/shift/src/intercdep.rs /^ pub fn number_of_args() -> c_int;$/;" f +number_of_args r_bash/src/lib.rs /^ pub fn number_of_args() -> ::std::os::raw::c_int;$/;" f +numeric_arg lib/readline/rlprivate.h /^ int numeric_arg;$/;" m struct:__rl_vimotion_context typeref:typename:int +numeric_arg r_readline/src/lib.rs /^ pub numeric_arg: ::std::os::raw::c_int,$/;" m struct:__rl_vimotion_context +numtoa lib/sh/snprintf.c /^numtoa(number, base, precision, fract)$/;" f file: +nused lib/malloc/mstats.h /^ int nused;$/;" m struct:bucket_stats typeref:typename:int +nw builtins/psize.c /^int nw;$/;" v typeref:typename:int +o_options builtins_rust/set/src/lib.rs /^pub static mut o_options: [opp; 28] = unsafe {$/;" v +oaidl vendor/winapi/src/um/mod.rs /^#[cfg(feature = "oaidl")] pub mod oaidl;$/;" n +objbase vendor/winapi/src/um/mod.rs /^#[cfg(feature = "objbase")] pub mod objbase;$/;" n +objcache include/ocache.h /^typedef struct objcache {$/;" s +objcache r_bash/src/lib.rs /^pub struct objcache {$/;" s +objidl vendor/winapi/src/um/mod.rs /^#[cfg(feature = "objidl")] pub mod objidl;$/;" n +objidlbase vendor/winapi/src/um/mod.rs /^#[cfg(feature = "objidlbase")] pub mod objidlbase;$/;" n +obp support/man2html.c /^static int obp = 0;$/;" v typeref:typename:int file: +obstack r_bash/src/lib.rs /^pub struct obstack {$/;" s +obstack r_readline/src/lib.rs /^pub struct obstack {$/;" s +obstack_printf r_bash/src/lib.rs /^ pub fn obstack_printf($/;" f +obstack_printf r_readline/src/lib.rs /^ pub fn obstack_printf($/;" f +obstack_vprintf r_bash/src/lib.rs /^ pub fn obstack_vprintf($/;" f +obstack_vprintf r_readline/src/lib.rs /^ pub fn obstack_vprintf($/;" f +ocache_alloc include/ocache.h /^#define ocache_alloc(/;" d +ocache_create include/ocache.h /^#define ocache_create(/;" d +ocache_destroy include/ocache.h /^#define ocache_destroy(/;" d +ocache_flush include/ocache.h /^#define ocache_flush(/;" d +ocache_free include/ocache.h /^#define ocache_free(/;" d +occupied_space vendor/nix/src/sys/quota.rs /^ pub fn occupied_space(&self) -> Option {$/;" P implementation:Dqblk +ocidl vendor/winapi/src/um/mod.rs /^#[cfg(feature = "ocidl")] pub mod ocidl;$/;" n +ocxt lib/readline/rlprivate.h /^ struct __rl_keyseq_context *ocxt;$/;" m struct:__rl_keyseq_context typeref:struct:__rl_keyseq_context * +ocxt r_readline/src/lib.rs /^ pub ocxt: *mut __rl_keyseq_context,$/;" m struct:__rl_keyseq_context +of vendor/syn/src/expr.rs /^ fn of(op: &BinOp) -> Self {$/;" P implementation:parsing::Precedence +off builtins_rust/set/src/lib.rs /^static mut off: *const libc::c_char = b"off\\0" as *const u8 as *const libc::c_char;$/;" v +off vendor/proc-macro2/src/parse.rs /^ pub off: u32,$/;" m struct:Cursor +off64_t r_bash/src/lib.rs /^pub type off64_t = __off64_t;$/;" t +off64_t r_glob/src/lib.rs /^pub type off64_t = __off64_t;$/;" t +off64_t r_readline/src/lib.rs /^pub type off64_t = __off64_t;$/;" t +off64_t vendor/libc/src/fuchsia/mod.rs /^pub type off64_t = i64;$/;" t +off64_t vendor/libc/src/unix/linux_like/android/b32/mod.rs /^pub type off64_t = ::c_longlong;$/;" t +off64_t vendor/libc/src/unix/linux_like/android/b64/mod.rs /^pub type off64_t = i64;$/;" t +off64_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type off64_t = i64;$/;" t +off64_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type off64_t = i64;$/;" t +off64_t vendor/libc/src/vxworks/mod.rs /^pub type off64_t = off_t;$/;" t +off_t r_bash/src/lib.rs /^pub type off_t = __off_t;$/;" t +off_t r_glob/src/lib.rs /^pub type off_t = __off_t;$/;" t +off_t r_readline/src/lib.rs /^pub type off_t = __off_t;$/;" t +off_t vendor/libc/src/fuchsia/mod.rs /^pub type off_t = i64;$/;" t +off_t vendor/libc/src/hermit/mod.rs /^pub type off_t = c_long;$/;" t +off_t vendor/libc/src/solid/mod.rs /^pub type off_t = __off_t;$/;" t +off_t vendor/libc/src/switch.rs /^pub type off_t = i64;$/;" t +off_t vendor/libc/src/unix/bsd/mod.rs /^pub type off_t = i64;$/;" t +off_t vendor/libc/src/unix/haiku/mod.rs /^pub type off_t = i64;$/;" t +off_t vendor/libc/src/unix/hermit/mod.rs /^pub type off_t = i64;$/;" t +off_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type off_t = ::c_long;$/;" t +off_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type off_t = i64;$/;" t +off_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mod.rs /^pub type off_t = i64;$/;" t +off_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type off_t = i64;$/;" t +off_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type off_t = ::c_long;$/;" t +off_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type off_t = i32;$/;" t +off_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs /^pub type off_t = i64;$/;" t +off_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type off_t = ::c_long;$/;" t +off_t vendor/libc/src/unix/redox/mod.rs /^pub type off_t = ::c_long;$/;" t +off_t vendor/libc/src/unix/solarish/mod.rs /^pub type off_t = ::c_long;$/;" t +off_t vendor/libc/src/vxworks/mod.rs /^pub type off_t = ::c_longlong;$/;" t +off_t vendor/libc/src/wasi.rs /^pub type off_t = i64;$/;" t +off_t vendor/libc/src/windows/mod.rs /^pub type off_t = i32;$/;" t +offset lib/intl/gmo.h /^ nls_uint32 offset;$/;" m struct:string_desc typeref:typename:nls_uint32 +offset lib/intl/gmo.h /^ nls_uint32 offset;$/;" m struct:sysdep_segment typeref:typename:nls_uint32 +offset lib/intl/gmo.h /^ nls_uint32 offset;$/;" m struct:sysdep_string typeref:typename:nls_uint32 +offset lib/readline/history.h /^ int offset; \/* The location pointer within this array. *\/$/;" m struct:_hist_state typeref:typename:int +offset r_bash/src/lib.rs /^ pub offset: __syscall_slong_t,$/;" m struct:timex +offset r_readline/src/lib.rs /^ pub offset: ::std::os::raw::c_int,$/;" m struct:_hist_state +offset r_readline/src/lib.rs /^ pub offset: __syscall_slong_t,$/;" m struct:timex +offset vendor/futures-util/src/io/buf_reader.rs /^ offset: i64,$/;" m struct:SeeKRelative +offset vendor/futures-util/src/io/into_sink.rs /^ offset: usize,$/;" m struct:Block +offset vendor/nix/src/sys/aio.rs /^ pub fn offset(&self) -> off_t {$/;" P implementation:AioRead +offset vendor/nix/src/sys/aio.rs /^ pub fn offset(&self) -> off_t {$/;" P implementation:AioReadv +offset vendor/nix/src/sys/aio.rs /^ pub fn offset(&self) -> off_t {$/;" P implementation:AioWrite +offset vendor/nix/src/sys/aio.rs /^ pub fn offset(&self) -> off_t {$/;" P implementation:AioWritev +offset_line_column vendor/proc-macro2/src/fallback.rs /^ fn offset_line_column(&self, offset: usize) -> LineColumn {$/;" P implementation:FileInfo +offset_of vendor/memoffset/src/lib.rs /^mod offset_of;$/;" n +offset_of vendor/memoffset/src/offset_of.rs /^macro_rules! offset_of {$/;" M +offset_of_tuple vendor/memoffset/src/offset_of.rs /^macro_rules! offset_of_tuple {$/;" M +offset_simple vendor/memoffset/src/offset_of.rs /^ fn offset_simple() {$/;" f module:tests +offset_simple_packed vendor/memoffset/src/offset_of.rs /^ fn offset_simple_packed() {$/;" f module:tests +offsetof lib/intl/bindtextdom.c /^# define offsetof(/;" d file: +offsetof lib/intl/dcigettext.c /^# define offsetof(/;" d file: +offsetof unwind_prot.c /^# define offsetof(/;" d file: +ok vendor/async-trait/tests/test.rs /^ pub async fn ok() -> &'static dyn Ret {$/;" f module:issue149 +ok vendor/futures-util/src/future/ready.rs /^pub fn ok(t: T) -> Ready> {$/;" f +ok vendor/futures/tests_disabled/all.rs /^ fn ok(a: T) -> FutureResult {$/;" f function:flatten +ok vendor/nix/test/sys/test_aio.rs /^ fn ok() {$/;" f module:aio_fsync +ok vendor/nix/test/sys/test_aio.rs /^ fn ok() {$/;" f module:aio_read +ok vendor/nix/test/sys/test_aio.rs /^ fn ok() {$/;" f module:aio_readv +ok vendor/nix/test/sys/test_aio.rs /^ fn ok() {$/;" f module:aio_write +ok vendor/nix/test/sys/test_aio.rs /^ fn ok() {$/;" f module:aio_writev +ok vendor/nix/test/test_nmount.rs /^fn ok() {$/;" f +ok_into vendor/futures-util/src/future/try_future/mod.rs /^ fn ok_into(self) -> OkInto$/;" P interface:TryFutureExt +okey lib/readline/rlprivate.h /^ int okey;$/;" m struct:__rl_keyseq_context typeref:typename:int +okey r_readline/src/lib.rs /^ pub okey: ::std::os::raw::c_int,$/;" m struct:__rl_keyseq_context +okeymap lib/readline/rlprivate.h /^ Keymap okeymap; \/* original keymap *\/$/;" m struct:__rl_search_context typeref:typename:Keymap +okeymap r_readline/src/lib.rs /^ pub okeymap: Keymap,$/;" m struct:__rl_search_context +old_alrm builtins_rust/read/src/lib.rs /^static mut old_alrm: *mut SigHandler = PT_NULL as *mut SigHandler;$/;" v +old_alrm lib/readline/signals.c /^static sighandler_cxt old_int, old_term, old_hup, old_alrm, old_quit;$/;" v typeref:typename:sighandler_cxt file: +old_attempted_completion_function builtins_rust/read/src/lib.rs /^static mut old_attempted_completion_function: usize = 0;$/;" v +old_cont builtins_rust/suspend/src/lib.rs /^pub static mut old_cont: *mut SigHandler = PT_NULL as *mut SigHandler;$/;" v +old_cont jobs.c /^static SigHandler *old_cont = (SigHandler *)SIG_DFL;$/;" v typeref:typename:SigHandler * file: +old_cont r_jobs/src/lib.rs /^pub static mut old_cont:*mut SigHandler = 0 as *mut SigHandler; \/\/SIG_DFL $/;" v +old_delim_ctype builtins_rust/read/src/lib.rs /^static mut old_delim_ctype: c_int = 0;$/;" v +old_delim_func builtins_rust/read/src/lib.rs /^static mut old_delim_func: usize = 0;$/;" v +old_domain lib/intl/textdomain.c /^ char *old_domain;$/;" v typeref:typename:char * +old_hup lib/readline/signals.c /^static sighandler_cxt old_int, old_term, old_hup, old_alrm, old_quit;$/;" v typeref:typename:sighandler_cxt file: +old_int lib/readline/signals.c /^static sighandler_cxt old_int, old_term, old_hup, old_alrm, old_quit;$/;" v typeref:typename:sighandler_cxt file: +old_lflag lib/readline/examples/excallback.c /^tcflag_t old_lflag;$/;" v typeref:typename:tcflag_t +old_newline_ctype builtins_rust/read/src/lib.rs /^static mut old_newline_ctype: c_int = 0;$/;" v +old_newline_func builtins_rust/read/src/lib.rs /^static mut old_newline_func: usize = 0;$/;" v +old_quit lib/readline/signals.c /^static sighandler_cxt old_int, old_term, old_hup, old_alrm, old_quit;$/;" v typeref:typename:sighandler_cxt file: +old_rl_startup_hook bashline.c /^static rl_hook_func_t *old_rl_startup_hook = (rl_hook_func_t *)NULL;$/;" v typeref:typename:rl_hook_func_t * file: +old_sigint_handler jobs.c /^static SigHandler *old_sigint_handler = INVALID_SIGNAL_HANDLER;$/;" v typeref:typename:SigHandler * file: +old_sigint_handler nojobs.c /^static SigHandler *old_sigint_handler = INVALID_SIGNAL_HANDLER;$/;" v typeref:typename:SigHandler * file: +old_sigint_handler r_jobs/src/lib.rs /^static mut old_sigint_handler:*mut SigHandler = INVALID_SIGNAL_HANDLER!();$/;" v +old_startup_hook builtins_rust/read/src/lib.rs /^static mut old_startup_hook: usize = 0;$/;" v +old_term lib/readline/signals.c /^static sighandler_cxt old_int, old_term, old_hup, old_alrm, old_quit;$/;" v typeref:typename:sighandler_cxt file: +old_tstp jobs.c /^static SigHandler *old_tstp, *old_ttou, *old_ttin;$/;" v typeref:typename:SigHandler * file: +old_tstp lib/readline/signals.c /^static sighandler_cxt old_tstp, old_ttou, old_ttin;$/;" v typeref:typename:sighandler_cxt file: +old_tstp r_jobs/src/lib.rs /^pub static mut old_tstp:*mut SigHandler = 0 as *mut SigHandler;$/;" v +old_ttin jobs.c /^static SigHandler *old_tstp, *old_ttou, *old_ttin;$/;" v typeref:typename:SigHandler * file: +old_ttin lib/readline/signals.c /^static sighandler_cxt old_tstp, old_ttou, old_ttin;$/;" v typeref:typename:sighandler_cxt file: +old_ttin r_jobs/src/lib.rs /^pub static mut old_ttin:*mut SigHandler = 0 as *mut SigHandler;$/;" v +old_ttou jobs.c /^static SigHandler *old_tstp, *old_ttou, *old_ttin;$/;" v typeref:typename:SigHandler * file: +old_ttou lib/readline/signals.c /^static sighandler_cxt old_tstp, old_ttou, old_ttin;$/;" v typeref:typename:sighandler_cxt file: +old_ttou r_jobs/src/lib.rs /^pub static mut old_ttou:*mut SigHandler = 0 as *mut SigHandler;$/;" v +old_vtime lib/readline/examples/excallback.c /^cc_t old_vtime;$/;" v typeref:typename:cc_t +old_winch lib/readline/signals.c /^static sighandler_cxt old_winch;$/;" v typeref:typename:sighandler_cxt file: +old_winch sig.c /^static SigHandler *old_winch = (SigHandler *)SIG_DFL;$/;" v typeref:typename:SigHandler * file: +oldmap lib/readline/rlprivate.h /^ Keymap oldmap;$/;" m struct:__rl_keyseq_context typeref:typename:Keymap +oldmap r_readline/src/lib.rs /^ pub oldmap: Keymap,$/;" m struct:__rl_keyseq_context +oldmask builtins_rust/wait/src/signal.rs /^ pub oldmask: __uint64_t,$/;" m struct:sigcontext +oldmask r_bash/src/lib.rs /^ pub oldmask: __uint64_t,$/;" m struct:sigcontext +oldmask r_glob/src/lib.rs /^ pub oldmask: __uint64_t,$/;" m struct:sigcontext +oldmask r_readline/src/lib.rs /^ pub oldmask: __uint64_t,$/;" m struct:sigcontext +ole2 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "ole2")] pub mod ole2;$/;" n +oleauto vendor/winapi/src/um/mod.rs /^#[cfg(feature = "oleauto")] pub mod oleauto;$/;" n +olectl vendor/winapi/src/um/mod.rs /^#[cfg(feature = "olectl")] pub mod olectl;$/;" n +oleidl vendor/winapi/src/um/mod.rs /^#[cfg(feature = "oleidl")] pub mod oleidl;$/;" n +on builtins_rust/set/src/lib.rs /^static mut on: *const libc::c_char = b"on\\0" as *const u8 as *const libc::c_char;$/;" v +on_change vendor/fluent-fallback/src/localization.rs /^ pub fn on_change(&mut self) {$/;" f +on_exit r_bash/src/lib.rs /^ pub fn on_exit($/;" f +on_exit r_glob/src/lib.rs /^ pub fn on_exit($/;" f +on_exit r_readline/src/lib.rs /^ pub fn on_exit($/;" f +on_exit_thread vendor/libc/src/unix/haiku/native.rs /^ pub fn on_exit_thread(callback: extern "C" fn(*mut ::c_void), data: *mut ::c_void) -> status/;" f +on_stack vendor/nix/test/sys/test_aio.rs /^ fn on_stack() {$/;" f module:aio_read +on_stack vendor/nix/test/sys/test_aio.rs /^ fn on_stack() {$/;" f module:aio_write +once vendor/futures-util/src/stream/mod.rs /^mod once;$/;" n +once vendor/futures-util/src/stream/once.rs /^pub fn once(future: Fut) -> Once {$/;" f +once_bool_set vendor/once_cell/tests/it.rs /^ fn once_bool_set() {$/;" f module:race +once_bool_smoke_test vendor/once_cell/tests/it.rs /^ fn once_bool_smoke_test() {$/;" f module:race +once_box vendor/once_cell/src/race.rs /^mod once_box {$/;" n +once_box_default vendor/once_cell/tests/it.rs /^ fn once_box_default() {$/;" f module:race_once_box +once_box_first_wins vendor/once_cell/tests/it.rs /^ fn once_box_first_wins() {$/;" f module:race_once_box +once_box_reentrant vendor/once_cell/tests/it.rs /^ fn once_box_reentrant() {$/;" f module:race_once_box +once_box_set vendor/once_cell/tests/it.rs /^ fn once_box_set() {$/;" f module:race_once_box +once_box_smoke_test vendor/once_cell/tests/it.rs /^ fn once_box_smoke_test() {$/;" f module:race_once_box +once_cell vendor/once_cell/tests/it.rs /^ fn once_cell() {$/;" f module:sync +once_cell vendor/once_cell/tests/it.rs /^ fn once_cell() {$/;" f module:unsync +once_cell_does_not_leak_partially_constructed_boxes vendor/once_cell/tests/it.rs /^ fn once_cell_does_not_leak_partially_constructed_boxes() {$/;" f module:sync +once_cell_drop vendor/once_cell/tests/it.rs /^ fn once_cell_drop() {$/;" f module:sync +once_cell_drop vendor/once_cell/tests/it.rs /^ fn once_cell_drop() {$/;" f module:unsync +once_cell_drop_empty vendor/once_cell/tests/it.rs /^ fn once_cell_drop_empty() {$/;" f module:sync +once_cell_get_mut vendor/once_cell/tests/it.rs /^ fn once_cell_get_mut() {$/;" f module:sync +once_cell_get_mut vendor/once_cell/tests/it.rs /^ fn once_cell_get_mut() {$/;" f module:unsync +once_cell_get_unchecked vendor/once_cell/tests/it.rs /^ fn once_cell_get_unchecked() {$/;" f module:sync +once_cell_is_sync_send vendor/once_cell/tests/it.rs /^ fn once_cell_is_sync_send() {$/;" f module:sync +once_cell_with_value vendor/once_cell/tests/it.rs /^ fn once_cell_with_value() {$/;" f module:sync +once_cell_with_value vendor/once_cell/tests/it.rs /^ fn once_cell_with_value() {$/;" f module:unsync +once_non_zero_usize_first_wins vendor/once_cell/tests/it.rs /^ fn once_non_zero_usize_first_wins() {$/;" f module:race +once_non_zero_usize_set vendor/once_cell/tests/it.rs /^ fn once_non_zero_usize_set() {$/;" f module:race +once_non_zero_usize_smoke_test vendor/once_cell/tests/it.rs /^ fn once_non_zero_usize_smoke_test() {$/;" f module:race +one vendor/memchr/src/tests/memchr/testdata.rs /^ pub fn one Option>(&self, reverse: bool, f: F) {$/;" P implementation:MemchrTest +one_thread vendor/futures/tests/future_shared.rs /^fn one_thread() {$/;" f +oneshot vendor/futures-channel/src/lib.rs /^pub mod oneshot;$/;" n +oneshot_debug vendor/futures/tests/oneshot.rs /^fn oneshot_debug() {$/;" f +oneshot_drop_rx vendor/futures/tests/oneshot.rs /^fn oneshot_drop_rx() {$/;" f +oneshot_drop_tx1 vendor/futures/tests/oneshot.rs /^fn oneshot_drop_tx1() {$/;" f +oneshot_drop_tx2 vendor/futures/tests/oneshot.rs /^fn oneshot_drop_tx2() {$/;" f +oneshot_send1 vendor/futures/tests/oneshot.rs /^fn oneshot_send1() {$/;" f +oneshot_send2 vendor/futures/tests/oneshot.rs /^fn oneshot_send2() {$/;" f +oneshot_send3 vendor/futures/tests/oneshot.rs /^fn oneshot_send3() {$/;" f +oneshot_streams vendor/futures-util/benches/flatten_unordered.rs /^fn oneshot_streams(b: &mut Bencher) {$/;" f +oneshots vendor/futures-util/benches/futures_unordered.rs /^fn oneshots(b: &mut Bencher) {$/;" f +only_documentation builtins/mkbuiltins.c /^int only_documentation = 0;$/;" v typeref:typename:int +op builtins_rust/command/src/lib.rs /^ pub op: *mut WordDesc,$/;" m struct:cond_com +op builtins_rust/kill/src/intercdep.rs /^ pub op: *mut WordDesc,$/;" m struct:cond_com +op builtins_rust/setattr/src/intercdep.rs /^ pub op: *mut WordDesc,$/;" m struct:cond_com +op command.h /^ WORD_DESC *op;$/;" m struct:cond_com typeref:typename:WORD_DESC * +op lib/intl/plural.c /^ enum operator op;$/;" m union:YYSTYPE typeref:enum:operator file: +op lib/readline/rlprivate.h /^ int op;$/;" m struct:__rl_vimotion_context typeref:typename:int +op r_bash/src/lib.rs /^ pub op: *mut WORD_DESC,$/;" m struct:cond_com +op r_glob/src/lib.rs /^ pub op: *mut WORD_DESC,$/;" m struct:cond_com +op r_readline/src/lib.rs /^ pub op: *mut WORD_DESC,$/;" m struct:cond_com +op r_readline/src/lib.rs /^ pub op: ::std::os::raw::c_int,$/;" m struct:__rl_vimotion_context +op vendor/syn/src/lib.rs /^mod op;$/;" n +opaque variables.h /^ void *opaque; \/* opaque data for future use *\/$/;" m union:_value typeref:typename:void * +open builtins_rust/help/src/lib.rs /^ fn open(pathname: *const libc::c_char, oflag: i32) -> i32;$/;" f +open lib/intl/loadmsgcat.c /^# define open /;" d file: +open r_bash/src/lib.rs /^ pub fn open($/;" f +open support/texi2html /^sub open {$/;" s +open vendor/libc/src/fuchsia/mod.rs /^ pub fn open(path: *const c_char, oflag: ::c_int, ...) -> ::c_int;$/;" f +open vendor/libc/src/solid/mod.rs /^ pub fn open(arg1: *const c_char, arg2: c_int, ...) -> c_int;$/;" f +open vendor/libc/src/unix/mod.rs /^ pub fn open(path: *const c_char, oflag: ::c_int, ...) -> ::c_int;$/;" f +open vendor/libc/src/vxworks/mod.rs /^ pub fn open(path: *const ::c_char, oflag: ::c_int, ...) -> ::c_int;$/;" f +open vendor/libc/src/wasi.rs /^ pub fn open(path: *const c_char, oflag: ::c_int, ...) -> ::c_int;$/;" f +open vendor/libc/src/windows/mod.rs /^ pub fn open(path: *const c_char, oflag: ::c_int, ...) -> ::c_int;$/;" f +open vendor/libloading/src/os/unix/mod.rs /^ pub unsafe fn open

    (filename: Option

    , flags: raw::c_int) -> Result(path: &P, oflag: OFlag,$/;" P implementation:Dir +open64 r_bash/src/lib.rs /^ pub fn open64($/;" f +open64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn open64(path: *const c_char, oflag: ::c_int, ...) -> ::c_int;$/;" f +open_already_loaded vendor/libloading/src/os/windows/mod.rs /^ pub fn open_already_loaded>(filename: P) -> Result {$/;" P implementation:Library +open_buffered_stream input.c /^open_buffered_stream (file)$/;" f +open_buffered_stream r_bash/src/lib.rs /^ pub fn open_buffered_stream(arg1: *mut ::std::os::raw::c_char) -> *mut BUFFERED_STREAM;$/;" f +open_by_handle_at r_bash/src/lib.rs /^ pub fn open_by_handle_at($/;" f +open_files execute_cmd.c /^open_files ()$/;" f typeref:typename:void +open_helpfile builtins_rust/help/src/lib.rs /^fn open_helpfile(name: *mut c_char) -> i32 {$/;" f +open_memstream r_bash/src/lib.rs /^ pub fn open_memstream($/;" f +open_memstream r_readline/src/lib.rs /^ pub fn open_memstream($/;" f +open_memstream vendor/libc/src/unix/mod.rs /^ pub fn open_memstream(ptr: *mut *mut c_char, sizeloc: *mut size_t) -> *mut FILE;$/;" f +open_osfhandle vendor/libc/src/windows/mod.rs /^ pub fn open_osfhandle(osfhandle: ::intptr_t, flags: ::c_int) -> ::c_int;$/;" f +open_ptty_pair vendor/nix/test/test_pty.rs /^fn open_ptty_pair() -> (PtyMaster, File) {$/;" f +open_shell_script shell.c /^open_shell_script (script_name)$/;" f file: +open_some_spaces lib/readline/display.c /^open_some_spaces (int col)$/;" f typeref:typename:void file: +open_span_of_group vendor/syn/src/buffer.rs /^pub(crate) fn open_span_of_group(cursor: Cursor) -> Span {$/;" f +open_wmemstream r_bash/src/lib.rs /^ pub fn open_wmemstream(__bufloc: *mut *mut wchar_t, __sizeloc: *mut usize) -> *mut __FILE;$/;" f +open_wmemstream r_glob/src/lib.rs /^ pub fn open_wmemstream(__bufloc: *mut *mut wchar_t, __sizeloc: *mut usize) -> *mut __FILE;$/;" f +open_wmemstream r_readline/src/lib.rs /^ pub fn open_wmemstream(__bufloc: *mut *mut wchar_t, __sizeloc: *mut usize) -> *mut __FILE;$/;" f +openat r_bash/src/lib.rs /^ pub fn openat($/;" f +openat vendor/libc/src/fuchsia/mod.rs /^ pub fn openat(dirfd: ::c_int, pathname: *const ::c_char, flags: ::c_int, ...) -> ::c_int;$/;" f +openat vendor/libc/src/wasi.rs /^ pub fn openat(dirfd: ::c_int, pathname: *const ::c_char, flags: ::c_int, ...) -> ::c_int;$/;" f +openat vendor/nix/src/dir.rs /^ pub fn openat(dirfd: RawFd, path: &P, oflag: OFlag,$/;" P implementation:Dir +openat64 r_bash/src/lib.rs /^ pub fn openat64($/;" f +openat64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn openat64(fd: ::c_int, path: *const c_char, oflag: ::c_int, ...) -> ::c_int;$/;" f +opendir r_bash/src/lib.rs /^ pub fn opendir(__name: *const ::std::os::raw::c_char) -> *mut DIR;$/;" f +opendir r_glob/src/lib.rs /^ pub fn opendir() -> *mut DIR;$/;" f +opendir r_readline/src/lib.rs /^ pub fn opendir(__name: *const ::std::os::raw::c_char) -> *mut DIR;$/;" f +opendir vendor/libc/src/fuchsia/mod.rs /^ pub fn opendir(dirname: *const c_char) -> *mut ::DIR;$/;" f +opendir vendor/libc/src/unix/mod.rs /^ pub fn opendir(dirname: *const c_char) -> *mut ::DIR;$/;" f +opendir vendor/libc/src/vxworks/mod.rs /^ pub fn opendir(name: *const ::c_char) -> *mut ::DIR;$/;" f +opendir vendor/libc/src/wasi.rs /^ pub fn opendir(dirname: *const c_char) -> *mut ::DIR;$/;" f +openlog vendor/libc/src/fuchsia/mod.rs /^ pub fn openlog(ident: *const ::c_char, logopt: ::c_int, facility: ::c_int);$/;" f +openlog vendor/libc/src/unix/mod.rs /^ pub fn openlog(ident: *const ::c_char, logopt: ::c_int, facility: ::c_int);$/;" f +openlog vendor/libc/src/vxworks/mod.rs /^ pub fn openlog(ident: *const ::c_char, logopt: ::c_int, facility: ::c_int);$/;" f +openpty vendor/libc/src/fuchsia/mod.rs /^ pub fn openpty($/;" f +openpty vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn openpty($/;" f +openpty vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn openpty($/;" f +openpty vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn openpty($/;" f +openpty vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn openpty($/;" f +openpty vendor/libc/src/unix/haiku/mod.rs /^ pub fn openpty($/;" f +openpty vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn openpty($/;" f +openpty vendor/libc/src/unix/solarish/compat.rs /^pub unsafe fn openpty($/;" f +openpty vendor/nix/src/pty.rs /^pub fn openpty<'a, 'b, T: Into>, U: Into>>(winsize: T, t/;" f +operands vendor/intl_pluralrules/src/lib.rs /^pub mod operands;$/;" n +operation lib/intl/plural-exp.h /^ } operation;$/;" m struct:expression typeref:enum:expression::__anon93874cf10103 +opmapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "opmapi")] pub mod opmapi;$/;" n +opp builtins_rust/set/src/lib.rs /^pub struct opp {$/;" s +optarg r_bash/src/lib.rs /^ pub static mut optarg: *mut ::std::os::raw::c_char;$/;" v +optarg r_glob/src/lib.rs /^ pub static mut optarg: *mut ::std::os::raw::c_char;$/;" v +optarg r_readline/src/lib.rs /^ pub static mut optarg: *mut ::std::os::raw::c_char;$/;" v +optarg vendor/libc/src/solid/mod.rs /^ pub static mut optarg: *mut c_char;$/;" v +opterr r_bash/src/lib.rs /^ pub static mut opterr: ::std::os::raw::c_int;$/;" v +opterr r_glob/src/lib.rs /^ pub static mut opterr: ::std::os::raw::c_int;$/;" v +opterr r_readline/src/lib.rs /^ pub static mut opterr: ::std::os::raw::c_int;$/;" v +opterr vendor/libc/src/solid/mod.rs /^ pub static mut opterr: c_int;$/;" v +optflag builtins_rust/complete/src/lib.rs /^ optflag: libc::c_ulong,$/;" m struct:_compopt +optflags builtins_rust/set/src/lib.rs /^ static mut optflags: [libc::c_char; 0];$/;" v +optflags flags.c /^char optflags[NUM_SHELL_FLAGS+4] = { '+' };$/;" v typeref:typename:char[] +optflags r_bash/src/lib.rs /^ pub static mut optflags: [::std::os::raw::c_char; 0usize];$/;" v +optimal_transfer_size vendor/nix/src/sys/statfs.rs /^ pub fn optimal_transfer_size(&self) -> i32 {$/;" P implementation:Statfs +optimal_transfer_size vendor/nix/src/sys/statfs.rs /^ pub fn optimal_transfer_size(&self) -> libc::__fsword_t {$/;" P implementation:Statfs +optimal_transfer_size vendor/nix/src/sys/statfs.rs /^ pub fn optimal_transfer_size(&self) -> libc::c_int {$/;" P implementation:Statfs +optimal_transfer_size vendor/nix/src/sys/statfs.rs /^ pub fn optimal_transfer_size(&self) -> libc::c_long {$/;" P implementation:Statfs +optimal_transfer_size vendor/nix/src/sys/statfs.rs /^ pub fn optimal_transfer_size(&self) -> libc::c_ulong {$/;" P implementation:Statfs +optimal_transfer_size vendor/nix/src/sys/statfs.rs /^ pub fn optimal_transfer_size(&self) -> u32 {$/;" P implementation:Statfs +optimal_transfer_size vendor/nix/src/sys/statfs.rs /^ pub fn optimal_transfer_size(&self) -> u64 {$/;" P implementation:Statfs +optimize_fork builtins/evalstring.c /^optimize_fork (command)$/;" f +optimize_fork r_bash/src/lib.rs /^ pub fn optimize_fork(arg1: *mut COMMAND);$/;" f +optimize_shell_function builtins/evalstring.c /^optimize_shell_function (command)$/;" f +optimize_shell_function r_bash/src/lib.rs /^ pub fn optimize_shell_function(arg1: *mut COMMAND);$/;" f +optimize_subshell_command builtins/evalstring.c /^optimize_subshell_command (command)$/;" f +optimize_subshell_command r_bash/src/lib.rs /^ pub fn optimize_subshell_command(arg1: *mut COMMAND);$/;" f +optimized_assignment variables.c /^optimized_assignment (entry, value, aflags)$/;" f file: +optind r_bash/src/lib.rs /^ pub static mut optind: ::std::os::raw::c_int;$/;" v +optind r_glob/src/lib.rs /^ pub static mut optind: ::std::os::raw::c_int;$/;" v +optind r_readline/src/lib.rs /^ pub static mut optind: ::std::os::raw::c_int;$/;" v +optind vendor/libc/src/solid/mod.rs /^ pub static mut optind: c_int;$/;" v +option builtins_rust/ulimit/src/lib.rs /^ option: i32, \/* The ulimit option for this limit. *\/$/;" m struct:RESOURCE_LIMITS +option vendor/futures-util/src/future/mod.rs /^mod option;$/;" n +option vendor/futures/tests_disabled/all.rs /^fn option() {$/;" f +option vendor/stdext/src/lib.rs /^pub mod option;$/;" n +options builtins_rust/complete/src/lib.rs /^ options: c_ulong,$/;" m struct:COMPSPEC +options pcomplete.h /^ unsigned long options;$/;" m struct:compspec typeref:typename:unsigned long +options r_bash/src/lib.rs /^ pub options: ::std::os::raw::c_ulong,$/;" m struct:compspec +options vendor/fluent-bundle/src/types/number.rs /^ pub options: FluentNumberOptions,$/;" m struct:FluentNumber +optname builtins_rust/complete/src/lib.rs /^ optname: *const c_char,$/;" m struct:_compopt +optopt r_bash/src/lib.rs /^ pub static mut optopt: ::std::os::raw::c_int;$/;" v +optopt r_glob/src/lib.rs /^ pub static mut optopt: ::std::os::raw::c_int;$/;" v +optopt r_readline/src/lib.rs /^ pub static mut optopt: ::std::os::raw::c_int;$/;" v +optopt vendor/libc/src/solid/mod.rs /^ pub static mut optopt: c_int;$/;" v +optreset vendor/libc/src/solid/mod.rs /^ pub static mut optreset: c_int;$/;" v +optstring builtins_rust/ulimit/src/lib.rs /^static mut optstring: [libc::c_char; 4 + 2 * NCMDS!() as usize] = [0; 4 + 2 * NCMDS!() as usize]/;" v +or support/checkbashisms /^ or: $progname --help$/;" l +or support/checkbashisms /^ or: $progname --version$/;" l +or test.c /^or ()$/;" f typeref:typename:int file: +or_else vendor/futures-util/src/future/try_future/mod.rs /^ fn or_else(self, f: F) -> OrElse$/;" P interface:TryFutureExt +or_else vendor/futures-util/src/stream/try_stream/mod.rs /^ fn or_else(self, f: F) -> OrElse$/;" P interface:TryStreamExt +or_else vendor/futures-util/src/stream/try_stream/mod.rs /^mod or_else;$/;" n +or_else vendor/futures/tests_disabled/stream.rs /^fn or_else() {$/;" f +or_else_drops_eagerly vendor/futures/tests/eager_drop.rs /^fn or_else_drops_eagerly() {$/;" f +or_insert vendor/type-map/src/lib.rs /^ pub fn or_insert(self, default: T) -> &'a mut T {$/;" P implementation:concurrent::Entry +or_insert vendor/type-map/src/lib.rs /^ pub fn or_insert(self, default: T) -> &'a mut T {$/;" P implementation:Entry +or_insert_with vendor/type-map/src/lib.rs /^ pub fn or_insert_with T>(self, default: F) -> &'a mut T {$/;" P implementation:concurrent::Entry +or_insert_with vendor/type-map/src/lib.rs /^ pub fn or_insert_with T>(self, default: F) -> &'a mut T {$/;" P implementation:Entry +order vendor/thiserror-impl/src/generics.rs /^ order: Vec,$/;" m struct:InferredBounds +ordinals_rules vendor/intl_pluralrules/src/lib.rs /^ fn ordinals_rules() {$/;" f module:tests +orig_arglist builtins_rust/printf/src/lib.rs /^static mut orig_arglist: *mut WordList = PT_NULL as *mut WordList;$/;" v +orig_flags sig.c /^ int orig_flags;$/;" m struct:termsig typeref:typename:int file: +orig_handler sig.c /^ SigHandler *orig_handler;$/;" m struct:termsig typeref:typename:SigHandler * file: +orig_prefix lib/intl/relocatable.c /^static char *orig_prefix;$/;" v typeref:typename:char * file: +orig_prefix_len lib/intl/relocatable.c /^static size_t orig_prefix_len;$/;" v typeref:typename:size_t file: +orig_sysdep_tab lib/intl/gettextP.h /^ const struct sysdep_string_desc *orig_sysdep_tab;$/;" m struct:loaded_domain typeref:typename:const struct sysdep_string_desc * +orig_sysdep_tab_offset lib/intl/gmo.h /^ nls_uint32 orig_sysdep_tab_offset;$/;" m struct:mo_file_header typeref:typename:nls_uint32 +orig_tab lib/intl/gettextP.h /^ const struct string_desc *orig_tab;$/;" m struct:loaded_domain typeref:typename:const struct string_desc * +orig_tab_offset lib/intl/gmo.h /^ nls_uint32 orig_tab_offset;$/;" m struct:mo_file_header typeref:typename:nls_uint32 +original vendor/thiserror-impl/src/ast.rs /^ pub original: &'a DeriveInput,$/;" m struct:Enum +original vendor/thiserror-impl/src/ast.rs /^ pub original: &'a DeriveInput,$/;" m struct:Struct +original vendor/thiserror-impl/src/ast.rs /^ pub original: &'a syn::Field,$/;" m struct:Field +original vendor/thiserror-impl/src/ast.rs /^ pub original: &'a syn::Variant,$/;" m struct:Variant +original vendor/thiserror-impl/src/attr.rs /^ pub original: &'a Attribute,$/;" m struct:Display +original vendor/thiserror-impl/src/attr.rs /^ pub original: &'a Attribute,$/;" m struct:Transparent +original_pgrp jobs.c /^pid_t original_pgrp = NO_PID;$/;" v typeref:typename:pid_t +original_pgrp r_bash/src/lib.rs /^ pub static mut original_pgrp: pid_t;$/;" v +original_pgrp r_jobs/src/lib.rs /^pub static mut original_pgrp:pid_t = -1;$/;" v +original_signals trap.c /^SigHandler *original_signals[NSIG];$/;" v typeref:typename:SigHandler * [] +os vendor/libloading/src/lib.rs /^pub mod os;$/;" n +os vendor/memchr/src/tests/x86_64-soft_float.json /^ "os": "none",$/;" s +os vendor/nix/src/features.rs /^mod os {$/;" n +os_log_create vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn os_log_create(subsystem: *const ::c_char, category: *const ::c_char) -> ::os_log_t;$/;" f +os_log_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type os_log_t = *mut ::c_void;$/;" t +os_log_type_enabled vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn os_log_type_enabled(oslog: ::os_log_t, tpe: ::os_log_type_t) -> bool;$/;" f +os_log_type_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type os_log_type_t = u8;$/;" t +os_signpost_enabled vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn os_signpost_enabled(log: ::os_log_t) -> bool;$/;" f +os_signpost_id_generate vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn os_signpost_id_generate(log: ::os_log_t) -> ::os_signpost_id_t;$/;" f +os_signpost_id_make_with_pointer vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn os_signpost_id_make_with_pointer($/;" f +os_signpost_id_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type os_signpost_id_t = u64;$/;" t +os_signpost_type_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type os_signpost_type_t = u8;$/;" t +os_unfair_lock vendor/libc/src/unix/bsd/apple/mod.rs /^pub type os_unfair_lock = os_unfair_lock_s;$/;" t +os_unfair_lock_assert_not_owner vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn os_unfair_lock_assert_not_owner(lock: os_unfair_lock_t);$/;" f +os_unfair_lock_assert_owner vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn os_unfair_lock_assert_owner(lock: os_unfair_lock_t);$/;" f +os_unfair_lock_lock vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn os_unfair_lock_lock(lock: os_unfair_lock_t);$/;" f +os_unfair_lock_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type os_unfair_lock_t = *mut os_unfair_lock;$/;" t +os_unfair_lock_trylock vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn os_unfair_lock_trylock(lock: os_unfair_lock_t) -> bool;$/;" f +os_unfair_lock_unlock vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn os_unfair_lock_unlock(lock: os_unfair_lock_t);$/;" f +osdep.lo lib/intl/Makefile.in /^osdep.lo: $(srcdir)\/osdep.c$/;" t +oslib.o lib/sh/Makefile.in /^oslib.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/chartypes.h$/;" t +oslib.o lib/sh/Makefile.in /^oslib.o: ${BASHINCDIR}\/posixstat.h ${BASHINCDIR}\/filecntl.h$/;" t +oslib.o lib/sh/Makefile.in /^oslib.o: ${BUILD_DIR}\/config.h$/;" t +oslib.o lib/sh/Makefile.in /^oslib.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +oslib.o lib/sh/Makefile.in /^oslib.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +oslib.o lib/sh/Makefile.in /^oslib.o: ${topdir}\/bashtypes.h ${topdir}\/bashansi.h ${BASHINCDIR}\/maxpath.h$/;" t +oslib.o lib/sh/Makefile.in /^oslib.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +oslib.o lib/sh/Makefile.in /^oslib.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/conftypes/;" t +oslib.o lib/sh/Makefile.in /^oslib.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +oslib.o lib/sh/Makefile.in /^oslib.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp.h$/;" t +oslib.o lib/sh/Makefile.in /^oslib.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +oslib.o lib/sh/Makefile.in /^oslib.o: oslib.c$/;" t +ospeed lib/termcap/termcap.c /^short ospeed;$/;" v typeref:typename:short +ospeed r_readline/src/lib.rs /^ pub static mut ospeed: ::std::os::raw::c_short;$/;" v +other vendor/futures-util/src/stream/select_with_strategy.rs /^ fn other(&self) -> PollNext {$/;" P implementation:PollNext +other vendor/thiserror/tests/ui/from-not-source.rs /^ other: anyhow::Error,$/;" m struct:Error +otio lib/readline/rltty.c /^static TIOTYPE otio;$/;" v typeref:typename:TIOTYPE file: +otry vendor/libc/build.rs /^ macro_rules! otry {$/;" M function:rustc_minor_nightly +out_dir vendor/autocfg/src/lib.rs /^ out_dir: PathBuf,$/;" m struct:AutoCfg +out_html support/man2html.c /^out_html(char *c)$/;" f typeref:typename:void file: +out_lang_ext support/texi2dvi /^out_lang_ext ()$/;" f +out_lang_set support/texi2dvi /^out_lang_set ()$/;" f +out_lang_tex support/texi2dvi /^out_lang_tex ()$/;" f +out_length support/man2html.c /^static int out_length = 0;$/;" v typeref:typename:int file: +outbuf lib/sh/fnxform.c /^static char *outbuf = 0;$/;" v typeref:typename:char * file: +outbuffer support/man2html.c /^static char outbuffer[NULL_TERMINATED(HUGE_STR_MAX)];$/;" v typeref:typename:char[] file: +outer vendor/syn/src/attr.rs /^ fn outer(self) -> Self::Ret {$/;" P implementation:Attribute +outer vendor/syn/src/attr.rs /^ fn outer(self) -> Self::Ret;$/;" P interface:FilterAttrs +outer_attrs_to_tokens vendor/syn/src/expr.rs /^ pub(crate) fn outer_attrs_to_tokens(_attrs: &[Attribute], _tokens: &mut TokenStream) {}$/;" f module:printing +outer_attrs_to_tokens vendor/syn/src/expr.rs /^ pub(crate) fn outer_attrs_to_tokens(attrs: &[Attribute], tokens: &mut TokenStream) {$/;" f module:printing +outf lib/readline/readline.h /^ FILE *outf;$/;" m struct:readline_state typeref:typename:FILE * +outf r_readline/src/lib.rs /^ pub outf: *mut FILE,$/;" m struct:readline_state +outlen lib/sh/fnxform.c /^static size_t outlen = 0;$/;" v typeref:typename:size_t file: +output builtins/mkbuiltins.c /^ FILE *output; \/* Open file stream for PRODUCTION. *\/$/;" m struct:__anon69e836710308 typeref:typename:FILE * file: +output target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" s object:local.0.RerunIfChanged +output target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" s object:local.0.RerunIfChanged +output target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" s object:local.0.RerunIfChanged +output target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" s object:local.0.RerunIfChanged +output target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" s object:local.0.RerunIfChanged +output target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" s object:local.0.RerunIfChanged +output target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" s object:local.0.RerunIfChanged +output target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" s object:local.0.RerunIfChanged +output vendor/futures-util/src/future/future/shared.rs /^ unsafe fn output(&self) -> &Fut::Output {$/;" f +output vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) output: Option,$/;" m struct:tests::PrefilterTest +outputPageFooter support/man2html.c /^outputPageFooter(char *l, char *c, char *r)$/;" f typeref:typename:void file: +outputPageHeader support/man2html.c /^outputPageHeader(char *l, char *c, char *r)$/;" f typeref:typename:void file: +output_base_name support/texi2dvi /^output_base_name ()$/;" f +output_cpp_line_info builtins/mkbuiltins.c /^int output_cpp_line_info = 0;$/;" v typeref:typename:int +output_flags vendor/nix/src/sys/termios.rs /^ pub output_flags: OutputFlags,$/;" m struct:Termios +output_mut vendor/futures-util/src/future/maybe_done.rs /^ pub fn output_mut(self: Pin<&mut Self>) -> Option<&mut Fut::Output> {$/;" P implementation:MaybeDone +output_mut vendor/futures-util/src/future/try_maybe_done.rs /^ pub fn output_mut(self: Pin<&mut Self>) -> Option<&mut Fut::Ok> {$/;" P implementation:TryMaybeDone +output_possible support/man2html.c /^static int output_possible = 0;$/;" v typeref:typename:int file: +output_requirement make_cmd.c /^output_requirement (deptype, filename)$/;" f file: +outputs target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" o +overflow_arg_area r_bash/src/lib.rs /^ pub overflow_arg_area: *mut ::std::os::raw::c_void,$/;" m struct:__va_list_tag +overflow_arg_area r_glob/src/lib.rs /^ pub overflow_arg_area: *mut ::std::os::raw::c_void,$/;" m struct:__va_list_tag +overflow_arg_area r_readline/src/lib.rs /^ pub overflow_arg_area: *mut ::std::os::raw::c_void,$/;" m struct:__va_list_tag +overflowing_add vendor/stdext/src/num/integer.rs /^ fn overflowing_add(self, rhs: Self) -> (Self, bool);$/;" P interface:Integer +overflowing_div vendor/stdext/src/num/integer.rs /^ fn overflowing_div(self, rhs: Self) -> (Self, bool);$/;" P interface:Integer +overflowing_div_euclid vendor/stdext/src/num/integer.rs /^ fn overflowing_div_euclid(self, rhs: Self) -> (Self, bool);$/;" P interface:Integer +overflowing_mul vendor/stdext/src/num/integer.rs /^ fn overflowing_mul(self, rhs: Self) -> (Self, bool);$/;" P interface:Integer +overflowing_neg vendor/stdext/src/num/integer.rs /^ fn overflowing_neg(self) -> (Self, bool);$/;" P interface:Integer +overflowing_pow vendor/stdext/src/num/integer.rs /^ fn overflowing_pow(self, exp: u32) -> (Self, bool);$/;" P interface:Integer +overflowing_rem vendor/stdext/src/num/integer.rs /^ fn overflowing_rem(self, rhs: Self) -> (Self, bool);$/;" P interface:Integer +overflowing_rem_euclid vendor/stdext/src/num/integer.rs /^ fn overflowing_rem_euclid(self, rhs: Self) -> (Self, bool);$/;" P interface:Integer +overflowing_shr vendor/stdext/src/num/integer.rs /^ fn overflowing_shr(self, rhs: u32) -> (Self, bool);$/;" P interface:Integer +overflowing_sub vendor/stdext/src/num/integer.rs /^ fn overflowing_sub(self, rhs: Self) -> (Self, bool);$/;" P interface:Integer +overflows lib/malloc/alloca.c /^ long overflows; \/* Number of stack overflow ($STKOFEN) calls. *\/$/;" m struct:stk_stat typeref:typename:long file: +overruns vendor/nix/src/sys/timer.rs /^ pub fn overruns(&self) -> i32 {$/;" P implementation:Timer +owner vendor/self_cell/src/unsafe_self_cell.rs /^ pub owner: Owner,$/;" m struct:JoinedCell +owner_marker vendor/self_cell/src/unsafe_self_cell.rs /^ owner_marker: PhantomData,$/;" m struct:UnsafeSelfCell +pVolLockBroadcast vendor/winapi/src/um/dbt.rs /^pub type pVolLockBroadcast = *mut VolLockBroadcast;$/;" t +p_cs_precedes r_bash/src/lib.rs /^ pub p_cs_precedes: ::std::os::raw::c_char,$/;" m struct:lconv +p_online vendor/libc/src/unix/solarish/mod.rs /^ pub fn p_online(processorid: ::processorid_t, flag: ::c_int) -> ::c_int;$/;" f +p_sep_by_space r_bash/src/lib.rs /^ pub p_sep_by_space: ::std::os::raw::c_char,$/;" m struct:lconv +p_sign_posn r_bash/src/lib.rs /^ pub p_sign_posn: ::std::os::raw::c_char,$/;" m struct:lconv +package vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s +package vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s +package vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s +package vendor/cfg-if/.cargo-checksum.json /^{"files":{"Cargo.toml":"5b2a8f6e5256957c029cf3a8912d51438e7faa5891c5c102c312f6d4599c1f00","LICEN/;" s +package vendor/chunky-vec/.cargo-checksum.json /^{"files":{"Cargo.toml":"3ab88cdacffa2756abe4460dda1ef403b304e79f814a2ec71b9c9a013dce2bf6","LICEN/;" s +package vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s +package vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s +package vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s +package vendor/fluent-langneg/.cargo-checksum.json /^{"files":{"Cargo.toml":"1b11d8d30fe978704012e27981f8d50a3462319594b54ed2e71eaf85284d61eb","READM/;" s +package vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s +package vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s +package vendor/fluent/.cargo-checksum.json /^{"files":{"Cargo.toml":"90672342000bb7f84bee3d9517ddf6d3f32f8e4b4fd38271c67855112456db05","LICEN/;" s +package vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s +package vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s +package vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" s +package vendor/futures-io/.cargo-checksum.json /^{"files":{"Cargo.toml":"e54d638578924483b00b5b20bbd8bf29b5166de08d8176122a7c07b04ff314fd","LICEN/;" s +package vendor/futures-macro/.cargo-checksum.json /^{"files":{"Cargo.toml":"0af05d99a0144689032178763c2a88016e428451fae7a9d0d8fdca3063514783","LICEN/;" s +package vendor/futures-sink/.cargo-checksum.json /^{"files":{"Cargo.toml":"8e37d96331ae8a6db64a6aab22e9924ceeacc4f07595c1ea81ea086c002ebd2f","LICEN/;" s +package vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s +package vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s +package vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s +package vendor/intl-memoizer/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f28af47927c54fd8ff3adbfcc4b0e9ea849a3b2a544289dd6be64a7aafb8ca6","LICEN/;" s +package vendor/intl_pluralrules/.cargo-checksum.json /^{"files":{"Cargo.toml":"3b7451d96ed662827dd4163d64d96840fee1c4241c2480b8cdd91ef156ad7896","READM/;" s +package vendor/lazy_static/.cargo-checksum.json /^{"files":{"Cargo.toml":"05e37a4e63dc4a495998bb5133252a51d671c4e99061a6342089ed6eab43978a","LICEN/;" s +package vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s +package vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s +package vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s +package vendor/memoffset/.cargo-checksum.json /^{"files":{"Cargo.toml":"2556143c764ef2315fe44ff0ec43af47ca70b260fd64aa53f57dc42760d7132d","LICEN/;" s +package vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s +package vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s +package vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s +package vendor/pin-utils/.cargo-checksum.json /^{"files":{"Cargo.toml":"0f8296bda5b928d57bb84443422f21db3aa35d6873ce651297634d80c183dc6b","LICEN/;" s +package vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s +package vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s +package vendor/rustc-hash/.cargo-checksum.json /^{"files":{"CODE_OF_CONDUCT.md":"edca092fde496419a9f1ba640048aa0270b62dfea576cd3175f0b53e3c230470/;" s +package vendor/self_cell/.cargo-checksum.json /^{"files":{"Cargo.toml":"ab60ad0024cea3e0c60fc4d116adc7fae35d5f85b042d285bba65f22c42407d5","LICEN/;" s +package vendor/slab/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"ae4c54789e1055543317a6812ac11644d0586883dee8f790119e4cef244b1b8e","Car/;" s +package vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s +package vendor/stable_deref_trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"5a8352eba01791ecee28b37cfe1324fa48db52e35023b23a4f07ca84267abfd6","LICEN/;" s +package vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s +package vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s +package vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" s +package vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s +package vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s +package vendor/type-map/.cargo-checksum.json /^{"files":{"Cargo.toml":"b9de957b7180f3784f79522b1a108b6c9e9f6bb16a2d089b4d0ca924d92387ae","READM/;" s +package vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s +package vendor/unic-langid/.cargo-checksum.json /^{"files":{"Cargo.toml":"927c0bc2dea454aab20d550b4ab728ee5c3803ac12f95a89f518b8a56633e941","READM/;" s +package vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s +package vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s +package vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s +package vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s +pad lib/sh/snprintf.c /^ char pad;$/;" m struct:DATA typeref:typename:char file: +pad vendor/nix/test/sys/test_ioctl.rs /^ pad: u16,$/;" m struct:linux_ioctls::spi_ioc_transfer +pad_size lib/malloc/alloca.c /^ long pad_size; \/* Stack pad size. *\/$/;" m struct:stk_stat typeref:typename:long file: +padsym support/man2html.c /^static char escapesym = '\\\\', nobreaksym = '\\'', controlsym = '.', fieldsym = 0, padsym = 0;$/;" v typeref:typename:char file: +pagealign lib/malloc/malloc.c /^pagealign ()$/;" f typeref:typename:int file: +pagebucket lib/malloc/malloc.c /^static int pagebucket; \/* bucket for requests a page in size *\/$/;" v typeref:typename:int file: +pagesz lib/malloc/malloc.c /^static int pagesz; \/* system page size. *\/$/;" v typeref:typename:int file: +pairs vendor/syn/src/punctuated.rs /^ pub fn pairs(&self) -> Pairs {$/;" P implementation:Punctuated +pairs vendor/syn/tests/test_iterators.rs /^fn pairs() {$/;" f +pairs_mut vendor/syn/src/punctuated.rs /^ pub fn pairs_mut(&mut self) -> PairsMut {$/;" P implementation:Punctuated +panic-strategy vendor/memchr/src/tests/x86_64-soft_float.json /^ "panic-strategy": "abort"$/;" s +panic_early_at_end vendor/smallvec/src/tests.rs /^ fn panic_early_at_end() {$/;" f module:insert_many_panic +panic_early_at_start vendor/smallvec/src/tests.rs /^ fn panic_early_at_start() {$/;" f module:insert_many_panic +panic_early_in_middle vendor/smallvec/src/tests.rs /^ fn panic_early_in_middle() {$/;" f module:insert_many_panic +panic_in_the_middle_of_the_stream vendor/futures/tests/stream_catch_unwind.rs /^fn panic_in_the_middle_of_the_stream() {$/;" f +panic_late_at_end vendor/smallvec/src/tests.rs /^ fn panic_late_at_end() {$/;" f module:insert_many_panic +panic_late_at_start vendor/smallvec/src/tests.rs /^ fn panic_late_at_start() {$/;" f module:insert_many_panic +panic_while_poll vendor/futures/tests/future_shared.rs /^fn panic_while_poll() {$/;" f +panicking_future_dropped vendor/futures/tests/ready_queue.rs /^fn panicking_future_dropped() {$/;" f +param_expand subst.c /^param_expand (string, sindex, quoted, expanded_something,$/;" f file: +parameter builtins_rust/ulimit/src/lib.rs /^ parameter: i32, \/* Parameter to pass to get_limit (). *\/$/;" m struct:RESOURCE_LIMITS +parameter_brace_casemod subst.c /^parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, pflags, flags)$/;" f file: +parameter_brace_expand subst.c /^parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, contains_dollar_at)$/;" f file: +parameter_brace_expand_error subst.c /^parameter_brace_expand_error (name, value, check_null)$/;" f file: +parameter_brace_expand_indir subst.c /^parameter_brace_expand_indir (name, var_is_special, quoted, pflags, quoted_dollar_atp, contains_/;" f file: +parameter_brace_expand_length subst.c /^parameter_brace_expand_length (name)$/;" f file: +parameter_brace_expand_rhs subst.c /^parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdollarat)$/;" f file: +parameter_brace_expand_word subst.c /^parameter_brace_expand_word (name, var_is_special, quoted, pflags, indp)$/;" f file: +parameter_brace_find_indir subst.c /^parameter_brace_find_indir (name, var_is_special, quoted, find_nameref)$/;" f file: +parameter_brace_patsub subst.c /^parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags)$/;" f file: +parameter_brace_remove_pattern subst.c /^parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flags)$/;" f file: +parameter_brace_substring subst.c /^parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags)$/;" f file: +parameter_brace_transform subst.c /^parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, flags)$/;" f file: +parameter_list_remove_pattern subst.c /^parameter_list_remove_pattern (itype, pattern, patspec, quoted)$/;" f file: +parameter_list_transform subst.c /^parameter_list_transform (xc, itype, quoted)$/;" f file: +paren_or_tuple vendor/syn/src/expr.rs /^ fn paren_or_tuple(input: ParseStream) -> Result {$/;" f module:parsing +parens.o lib/readline/Makefile.in /^parens.o: ${BUILD_DIR}\/config.h$/;" t +parens.o lib/readline/Makefile.in /^parens.o: parens.c$/;" t +parens.o lib/readline/Makefile.in /^parens.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h$/;" t +parens.o lib/readline/Makefile.in /^parens.o: rlconf.h$/;" t +parens.o lib/readline/Makefile.in /^parens.o: rlprivate.h$/;" t +parent1 vendor/winapi/src/um/vsbackup.rs /^ pub parent1: IVssWriterComponentsVtbl,$/;" m struct:IVssWriterComponentsExtVtbl +parent2 vendor/winapi/src/um/vsbackup.rs /^ pub parent2: IUnknownVtbl,$/;" m struct:IVssWriterComponentsExtVtbl +parenthesize_impl_trait vendor/async-trait/src/lifetime.rs /^fn parenthesize_impl_trait(elem: &mut Type, paren_span: Span) {$/;" f +parenthesized vendor/syn/src/group.rs /^macro_rules! parenthesized {$/;" M +park vendor/futures-channel/src/mpsc/mod.rs /^ fn park(&mut self) {$/;" P implementation:BoundedSenderInner +park_unpark_independence vendor/futures-executor/tests/local_pool.rs /^fn park_unpark_independence() {$/;" f +parked_queue vendor/futures-channel/src/mpsc/mod.rs /^ parked_queue: Queue>>,$/;" m struct:BoundedInner +parse vendor/async-trait/src/args.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:Args +parse vendor/async-trait/src/lib.rs /^mod parse;$/;" n +parse vendor/async-trait/src/parse.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:Item +parse vendor/fluent-langneg/src/accepted_languages.rs /^pub fn parse(s: &str) -> Vec {$/;" f +parse vendor/fluent-syntax/src/parser/core.rs /^ pub fn parse($/;" f +parse vendor/fluent-syntax/src/parser/mod.rs /^pub fn parse<'s, S>(input: S) -> Result$/;" f +parse vendor/futures-macro/src/join.rs /^ fn parse(input: ParseStream<'_>) -> syn::Result {$/;" P implementation:Join +parse vendor/futures-macro/src/select.rs /^ fn parse(input: ParseStream<'_>) -> syn::Result {$/;" P implementation:Select +parse vendor/proc-macro2/src/lib.rs /^mod parse;$/;" n +parse vendor/proc-macro2/src/parse.rs /^ fn parse(&self, tag: &str) -> Result, Reject> {$/;" P implementation:Cursor +parse vendor/quote/src/runtime.rs /^pub fn parse(tokens: &mut TokenStream, s: &str) {$/;" f +parse vendor/syn/src/attr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Meta +parse vendor/syn/src/attr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::MetaList +parse vendor/syn/src/attr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::MetaNameValue +parse vendor/syn/src/attr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::NestedMeta +parse vendor/syn/src/data.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::FieldsNamed +parse vendor/syn/src/data.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::FieldsUnnamed +parse vendor/syn/src/data.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Variant +parse vendor/syn/src/data.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Visibility +parse vendor/syn/src/derive.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::DeriveInput +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Arm +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Expr +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprArray +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprAsync +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprBlock +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprBox +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprBreak +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprClosure +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprContinue +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprForLoop +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprIf +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprLet +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprLit +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprLoop +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprMacro +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprMatch +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprParen +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprPath +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprReference +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprRepeat +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprReturn +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprStruct +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprTryBlock +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprUnary +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprUnsafe +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprWhile +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ExprYield +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::FieldValue +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::GenericMethodArgument +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Index +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Label +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Member +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::MethodTurbofish +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Option +parse vendor/syn/src/expr.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::RangeLimits +parse vendor/syn/src/file.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::File +parse vendor/syn/src/generics.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::BoundLifetimes +parse vendor/syn/src/generics.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ConstParam +parse vendor/syn/src/generics.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::GenericParam +parse vendor/syn/src/generics.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Generics +parse vendor/syn/src/generics.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::LifetimeDef +parse vendor/syn/src/generics.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Option +parse vendor/syn/src/generics.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TraitBound +parse vendor/syn/src/generics.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TraitBoundModifier +parse vendor/syn/src/generics.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeParam +parse vendor/syn/src/generics.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeParamBound +parse vendor/syn/src/generics.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::WhereClause +parse vendor/syn/src/generics.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::WherePredicate +parse vendor/syn/src/ident.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:Ident +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::FnArg +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ForeignItem +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ForeignItemFn +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ForeignItemMacro +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ForeignItemStatic +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ForeignItemType +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ImplItem +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ImplItemConst +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ImplItemMacro +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ImplItemMethod +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ImplItemType +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Item +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemConst +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemEnum +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemExternCrate +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemFn +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemForeignMod +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemImpl +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemMacro +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemMacro2 +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemMod +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemStatic +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemStruct +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemTrait +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemTraitAlias +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemType +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemUnion +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ItemUse +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Receiver +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Signature +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TraitItem +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TraitItemConst +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TraitItemMacro +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TraitItemMethod +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TraitItemType +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::UseTree +parse vendor/syn/src/item.rs /^ fn parse(input: ParseStream, where_clause_location: WhereClauseLocation) -> Result/;" P implementation:parsing::FlexibleItemType +parse vendor/syn/src/lib.rs /^pub fn parse(tokens: proc_macro::TokenStream) -> Result {$/;" f +parse vendor/syn/src/lib.rs /^pub mod parse;$/;" n +parse vendor/syn/src/lifetime.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Lifetime +parse vendor/syn/src/lit.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Lit +parse vendor/syn/src/lit.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::LitBool +parse vendor/syn/src/lit.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::LitByte +parse vendor/syn/src/lit.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::LitByteStr +parse vendor/syn/src/lit.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::LitChar +parse vendor/syn/src/lit.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::LitFloat +parse vendor/syn/src/lit.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::LitInt +parse vendor/syn/src/lit.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::LitStr +parse vendor/syn/src/lit.rs /^ pub fn parse(&self) -> Result {$/;" P implementation:LitStr +parse vendor/syn/src/mac.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Macro +parse vendor/syn/src/op.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::BinOp +parse vendor/syn/src/op.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::UnOp +parse vendor/syn/src/parse.rs /^ fn parse(_input: ParseStream) -> Result {$/;" P implementation:Nothing +parse vendor/syn/src/parse.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:Box +parse vendor/syn/src/parse.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:Group +parse vendor/syn/src/parse.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:Literal +parse vendor/syn/src/parse.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:Option +parse vendor/syn/src/parse.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:Punct +parse vendor/syn/src/parse.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:TokenStream +parse vendor/syn/src/parse.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:TokenTree +parse vendor/syn/src/parse.rs /^ fn parse(input: ParseStream) -> Result;$/;" P interface:Parse +parse vendor/syn/src/parse.rs /^ fn parse(self, tokens: proc_macro::TokenStream) -> Result {$/;" P interface:Parser +parse vendor/syn/src/parse.rs /^ pub fn parse(&self) -> Result {$/;" P implementation:ParseBuffer +parse vendor/syn/src/parse_macro_input.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:AttributeArgs +parse vendor/syn/src/parse_macro_input.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:T +parse vendor/syn/src/parse_macro_input.rs /^ fn parse(input: ParseStream) -> Result;$/;" P interface:ParseMacroInput +parse vendor/syn/src/parse_macro_input.rs /^pub fn parse(token_stream: TokenStream) -> Result {$/;" f +parse vendor/syn/src/parse_quote.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:Attribute +parse vendor/syn/src/parse_quote.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:Punctuated +parse vendor/syn/src/parse_quote.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:T +parse vendor/syn/src/parse_quote.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:Vec +parse vendor/syn/src/parse_quote.rs /^ fn parse(input: ParseStream) -> Result;$/;" P interface:ParseQuote +parse vendor/syn/src/parse_quote.rs /^pub fn parse(token_stream: TokenStream) -> T {$/;" f +parse vendor/syn/src/pat.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Pat +parse vendor/syn/src/path.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::AngleBracketedGenericArguments +parse vendor/syn/src/path.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Binding +parse vendor/syn/src/path.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Constraint +parse vendor/syn/src/path.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::GenericArgument +parse vendor/syn/src/path.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ParenthesizedGenericArguments +parse vendor/syn/src/path.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Path +parse vendor/syn/src/path.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::PathSegment +parse vendor/syn/src/stmt.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Block +parse vendor/syn/src/stmt.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Stmt +parse vendor/syn/src/token.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:Underscore +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Abi +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::BareFnArg +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Option +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::ReturnType +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::Type +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeArray +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeBareFn +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeGroup +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeImplTrait +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeInfer +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeMacro +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeNever +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeParen +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypePath +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypePtr +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeReference +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeSlice +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeTraitObject +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:parsing::TypeTuple +parse vendor/syn/src/ty.rs /^ fn parse(input: ParseStream, allow_plus: bool) -> Result {$/;" P implementation:parsing::TypeParen +parse vendor/syn/src/ty.rs /^ pub(crate) fn parse(input: ParseStream, allow_plus: bool) -> Result {$/;" P implementation:parsing::ReturnType +parse vendor/syn/src/ty.rs /^ pub(crate) fn parse(input: ParseStream, allow_plus: bool) -> Result {$/;" P implementation:parsing::TypeImplTrait +parse vendor/syn/src/ty.rs /^ pub(crate) fn parse(input: ParseStream, allow_plus: bool) -> Result {$/;" P implementation:parsing::TypeTraitObject +parse vendor/syn/tests/common/mod.rs /^pub mod parse;$/;" n +parse vendor/syn/tests/macros/mod.rs /^ fn parse(self) -> Result {$/;" P implementation:TokenStream +parse vendor/syn/tests/macros/mod.rs /^ fn parse(self) -> Result {$/;" P implementation:str +parse vendor/syn/tests/macros/mod.rs /^ fn parse(self) -> Result;$/;" P interface:Tokens +parse vendor/syn/tests/test_ident.rs /^fn parse(s: &str) -> Result {$/;" f +parse vendor/syn/tests/test_parse_buffer.rs /^ fn parse(input1: ParseStream) -> Result {$/;" P implementation:smuggled_speculative_cursor_between_sources::BreakRules +parse vendor/syn/tests/test_parse_buffer.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:smuggled_speculative_cursor_between_brackets::BreakRules +parse vendor/syn/tests/test_parse_buffer.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:smuggled_speculative_cursor_into_brackets::BreakRules +parse vendor/syn/tests/test_parse_buffer.rs /^ fn parse(input: ParseStream) -> Result<()> {$/;" f function:trailing_empty_none_group +parse vendor/syn/tests/test_visibility.rs /^ fn parse(input: ParseStream) -> Result {$/;" P implementation:VisRest +parse-colors.o lib/readline/Makefile.in /^parse-colors.o: ${BUILD_DIR}\/config.h colors.h parse-colors.h$/;" t +parse-colors.o lib/readline/Makefile.in /^parse-colors.o: parse-colors.c$/;" t +parse-colors.o lib/readline/Makefile.in /^parse-colors.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h$/;" t +parse-colors.o lib/readline/Makefile.in /^parse-colors.o: rldefs.h rlconf.h$/;" t +parse-colors.o lib/readline/Makefile.in /^parse-colors.o: rlmbutil.h$/;" t +parse-colors.o lib/readline/Makefile.in /^parse-colors.o: rlprivate.h$/;" t +parse-colors.o lib/readline/Makefile.in /^parse-colors.o: xmalloc.h$/;" t +parse2 vendor/syn/src/lib.rs /^pub fn parse2(tokens: proc_macro2::TokenStream) -> Result {$/;" f +parse2 vendor/syn/src/parse.rs /^ fn parse2(self, tokens: TokenStream) -> Result;$/;" P interface:Parser +parse2 vendor/syn/src/parse.rs /^ fn parse2(self, tokens: TokenStream) -> Result {$/;" f +parse_and_execute builtins/evalstring.c /^parse_and_execute (string, from_file, flags)$/;" f +parse_and_execute builtins_rust/fc/src/lib.rs /^ fn parse_and_execute(str1: *mut c_char, from_file: *const c_char, flags: i32) -> i32;$/;" f +parse_and_execute r_bash/src/lib.rs /^ pub fn parse_and_execute($/;" f +parse_and_execute r_jobs/src/lib.rs /^ fn parse_and_execute($/;" f +parse_and_execute_cleanup builtins/evalstring.c /^parse_and_execute_cleanup (old_running_trap)$/;" f +parse_and_execute_cleanup r_bash/src/lib.rs /^ pub fn parse_and_execute_cleanup(arg1: ::std::os::raw::c_int);$/;" f +parse_and_execute_level builtins/evalstring.c /^int parse_and_execute_level = 0;$/;" v typeref:typename:int +parse_and_execute_level builtins_rust/trap/src/intercdep.rs /^ pub static parse_and_execute_level: c_int;$/;" v +parse_and_execute_level r_bash/src/lib.rs /^ pub static mut parse_and_execute_level: ::std::os::raw::c_int;$/;" v +parse_any vendor/syn/src/ext.rs /^ fn parse_any(input: ParseStream) -> Result {$/;" P implementation:Ident +parse_any vendor/syn/src/ext.rs /^ fn parse_any(input: ParseStream) -> Result;$/;" P interface:IdentExt +parse_args lib/intl/plural-exp.h /^struct parse_args$/;" s +parse_args vendor/syn/src/attr.rs /^ pub fn parse_args(&self) -> Result {$/;" P implementation:Attribute +parse_args_with vendor/syn/src/attr.rs /^ pub fn parse_args_with(&self, parser: F) -> Result {$/;" P implementation:Attribute +parse_bare_fn vendor/syn/src/ty.rs /^ fn parse_bare_fn(input: ParseStream, allow_mut_self: bool) -> Result> {$/;" f module:parsing +parse_bare_fn_arg vendor/syn/src/ty.rs /^ fn parse_bare_fn_arg($/;" f module:parsing +parse_bashopts r_bash/src/lib.rs /^ pub fn parse_bashopts(arg1: *mut ::std::os::raw::c_char);$/;" f +parse_bench vendor/fluent-syntax/benches/parser.rs /^fn parse_bench(c: &mut Criterion) {$/;" f +parse_binop vendor/syn/src/op.rs /^ fn parse_binop(input: ParseStream) -> Result {$/;" f module:parsing +parse_body vendor/syn/src/mac.rs /^ pub fn parse_body(&self) -> Result {$/;" P implementation:Macro +parse_body_with vendor/syn/src/mac.rs /^ pub fn parse_body_with(&self, parser: F) -> Result {$/;" P implementation:Macro +parse_bounds vendor/syn/src/ty.rs /^ fn parse_bounds($/;" P implementation:parsing::TypeTraitObject +parse_braces vendor/syn/src/group.rs /^pub fn parse_braces<'a>(input: &ParseBuffer<'a>) -> Result> {$/;" f +parse_brackets vendor/syn/src/group.rs /^pub fn parse_brackets<'a>(input: &ParseBuffer<'a>) -> Result> {$/;" f +parse_command eval.c /^parse_command ()$/;" f typeref:typename:int +parse_command r_bash/src/lib.rs /^ pub fn parse_command() -> ::std::os::raw::c_int;$/;" f +parse_comparison_op lib/readline/bind.c /^parse_comparison_op (s, indp)$/;" f file: +parse_crate vendor/syn/src/data.rs /^ fn parse_crate(input: ParseStream) -> Result {$/;" P implementation:parsing::Visibility +parse_delimited vendor/syn/src/group.rs /^fn parse_delimited<'a>($/;" f +parse_delimiter vendor/syn/src/mac.rs /^pub fn parse_delimiter(input: ParseStream) -> Result<(MacroDelimiter, TokenStream)> {$/;" f +parse_error_attribute vendor/thiserror-impl/src/attr.rs /^fn parse_error_attribute<'a>(attrs: &mut Attrs<'a>, attr: &'a Attribute) -> Result<()> {$/;" f +parse_expr vendor/syn/src/expr.rs /^ fn parse_expr($/;" f module:parsing +parse_file vendor/syn/benches/file.rs /^fn parse_file(b: &mut Bencher) {$/;" f +parse_file vendor/syn/src/lib.rs /^pub fn parse_file(mut content: &str) -> Result {$/;" f +parse_fn_args vendor/syn/src/item.rs /^ fn parse_fn_args(input: ParseStream) -> Result> {$/;" f module:parsing +parse_foreign_item_type vendor/syn/src/item.rs /^ fn parse_foreign_item_type(begin: ParseBuffer, input: ParseStream) -> Result {$/;" f module:parsing +parse_group vendor/syn/src/group.rs /^pub(crate) fn parse_group<'a>(input: &ParseBuffer<'a>) -> Result> {$/;" f +parse_helper vendor/syn/src/path.rs /^ fn parse_helper(input: ParseStream, expr_style: bool) -> Result {$/;" P implementation:parsing::PathSegment +parse_helper vendor/syn/src/path.rs /^ pub(crate) fn parse_helper(input: ParseStream, expr_style: bool) -> Result {$/;" P implementation:parsing::Path +parse_impl vendor/syn/src/item.rs /^ fn parse_impl(input: ParseStream, allow_verbatim_impl: bool) -> Result> {$/;" f module:parsing +parse_impl_item_type vendor/syn/src/item.rs /^ fn parse_impl_item_type(begin: ParseBuffer, input: ParseStream) -> Result {$/;" f module:parsing +parse_inner vendor/syn/src/attr.rs /^ pub fn parse_inner(input: ParseStream) -> Result> {$/;" P implementation:Attribute +parse_inner vendor/syn/src/attr.rs /^ pub fn parse_inner(input: ParseStream, attrs: &mut Vec) -> Result<()> {$/;" f module:parsing +parse_interpolated_leading_component vendor/syn/tests/test_path.rs /^fn parse_interpolated_leading_component() {$/;" f +parse_item_type vendor/syn/src/item.rs /^ fn parse_item_type(begin: ParseBuffer, input: ParseStream) -> Result {$/;" f module:parsing +parse_kernel_version vendor/nix/src/features.rs /^ fn parse_kernel_version() -> Result {$/;" f module:os +parse_language_identifier vendor/unic-langid-impl/src/parser/mod.rs /^pub fn parse_language_identifier(t: &[u8]) -> Result {$/;" f +parse_language_identifier_from_iter vendor/unic-langid-impl/src/parser/mod.rs /^pub fn parse_language_identifier_from_iter<'a>($/;" f +parse_lit_byte vendor/syn/src/lit.rs /^ pub fn parse_lit_byte(s: &str) -> (u8, Box) {$/;" f module:value +parse_lit_byte_str vendor/syn/src/lit.rs /^ pub fn parse_lit_byte_str(s: &str) -> (Vec, Box) {$/;" f module:value +parse_lit_byte_str_cooked vendor/syn/src/lit.rs /^ fn parse_lit_byte_str_cooked(mut s: &str) -> (Vec, Box) {$/;" f module:value +parse_lit_byte_str_raw vendor/syn/src/lit.rs /^ fn parse_lit_byte_str_raw(s: &str) -> (Vec, Box) {$/;" f module:value +parse_lit_char vendor/syn/src/lit.rs /^ pub fn parse_lit_char(mut s: &str) -> (char, Box) {$/;" f module:value +parse_lit_float vendor/syn/src/lit.rs /^ pub fn parse_lit_float(input: &str) -> Option<(Box, Box)> {$/;" f module:value +parse_lit_int vendor/syn/src/lit.rs /^ pub fn parse_lit_int(mut s: &str) -> Option<(Box, Box)> {$/;" f module:value +parse_lit_str vendor/syn/src/lit.rs /^ pub fn parse_lit_str(s: &str) -> (Box, Box) {$/;" f module:value +parse_lit_str_cooked vendor/syn/src/lit.rs /^ fn parse_lit_str_cooked(mut s: &str) -> (Box, Box) {$/;" f module:value +parse_lit_str_raw vendor/syn/src/lit.rs /^ fn parse_lit_str_raw(mut s: &str) -> (Box, Box) {$/;" f module:value +parse_long_options shell.c /^parse_long_options (argv, arg_start, arg_end)$/;" f file: +parse_macro_input vendor/syn/src/lib.rs /^pub mod parse_macro_input;$/;" n +parse_macro_input vendor/syn/src/parse_macro_input.rs /^macro_rules! parse_macro_input {$/;" M +parse_mailpath_spec mailcheck.c /^parse_mailpath_spec (str)$/;" f file: +parse_meta vendor/syn/src/attr.rs /^ pub fn parse_meta(&self) -> Result {$/;" P implementation:Attribute +parse_meta_after_path vendor/syn/src/attr.rs /^ pub fn parse_meta_after_path(path: Path, input: ParseStream) -> Result {$/;" f module:parsing +parse_meta_list_after_path vendor/syn/src/attr.rs /^ fn parse_meta_list_after_path(path: Path, input: ParseStream) -> Result {$/;" f module:parsing +parse_meta_name_value_after_path vendor/syn/src/attr.rs /^ fn parse_meta_name_value_after_path(path: Path, input: ParseStream) -> Result/;" f module:parsing +parse_meta_path vendor/syn/src/attr.rs /^ fn parse_meta_path(input: ParseStream) -> Result {$/;" f module:parsing +parse_mod_style vendor/syn/src/path.rs /^ pub fn parse_mod_style(input: ParseStream) -> Result {$/;" P implementation:parsing::Path +parse_named vendor/syn/src/data.rs /^ pub fn parse_named(input: ParseStream) -> Result {$/;" P implementation:parsing::Field +parse_negative_lit vendor/syn/src/lit.rs /^ fn parse_negative_lit(neg: Punct, cursor: Cursor) -> Option<(Lit, Cursor)> {$/;" f module:parsing +parse_outer vendor/syn/src/attr.rs /^ pub fn parse_outer(input: ParseStream) -> Result> {$/;" P implementation:Attribute +parse_parens vendor/syn/src/group.rs /^pub fn parse_parens<'a>(input: &ParseBuffer<'a>) -> Result> {$/;" f +parse_parenthesized_path_arguments_with_disambiguator vendor/syn/tests/test_path.rs /^fn parse_parenthesized_path_arguments_with_disambiguator() {$/;" f +parse_prologue builtins/evalstring.c /^parse_prologue (string, flags, tag)$/;" f file: +parse_pub vendor/syn/src/data.rs /^ fn parse_pub(input: ParseStream) -> Result {$/;" P implementation:parsing::Visibility +parse_quote vendor/syn/src/lib.rs /^pub mod parse_quote;$/;" n +parse_quote vendor/syn/src/parse_quote.rs /^macro_rules! parse_quote {$/;" M +parse_quote_spanned vendor/syn/src/parse_quote.rs /^macro_rules! parse_quote_spanned {$/;" M +parse_rest vendor/syn/src/path.rs /^ pub(crate) fn parse_rest($/;" P implementation:parsing::Path +parse_rest_of_fn vendor/syn/src/item.rs /^ fn parse_rest_of_fn($/;" f module:parsing +parse_rest_of_trait vendor/syn/src/item.rs /^ fn parse_rest_of_trait($/;" f module:parsing +parse_rest_of_trait_alias vendor/syn/src/item.rs /^ fn parse_rest_of_trait_alias($/;" f module:parsing +parse_runtime vendor/fluent-syntax/src/parser/mod.rs /^pub fn parse_runtime<'s, S>(input: S) -> Result$/;" f +parse_runtime vendor/fluent-syntax/src/parser/runtime.rs /^ pub fn parse_runtime($/;" f +parse_scoped vendor/syn/src/parse.rs /^pub(crate) fn parse_scoped(f: F, scope: Span, tokens: TokenStream) -> Result Result$/;" P implementation:Punctuated +parse_separated_nonempty_with vendor/syn/src/punctuated.rs /^ pub fn parse_separated_nonempty_with($/;" P implementation:Punctuated +parse_shell_options shell.c /^parse_shell_options (argv, arg_start, arg_end)$/;" f file: +parse_shellopts builtins_rust/set/src/lib.rs /^unsafe fn parse_shellopts(value: *mut libc::c_char) {$/;" f +parse_shellopts r_bash/src/lib.rs /^ pub fn parse_shellopts(arg1: *mut ::std::os::raw::c_char);$/;" f +parse_spanned vendor/quote/src/runtime.rs /^pub fn parse_spanned(tokens: &mut TokenStream, span: Span, s: &str) {$/;" f +parse_start_of_trait_alias vendor/syn/src/item.rs /^ fn parse_start_of_trait_alias($/;" f module:parsing +parse_stmt vendor/syn/src/stmt.rs /^ fn parse_stmt(input: ParseStream, allow_nosemi: bool) -> Result {$/;" f module:parsing +parse_str vendor/syn/src/lib.rs /^pub fn parse_str(s: &str) -> Result {$/;" f +parse_str vendor/syn/src/parse.rs /^ fn parse_str(self, s: &str) -> Result {$/;" P interface:Parser +parse_stream vendor/syn/src/parse.rs /^pub(crate) fn parse_stream(f: F, input: ParseStream) -> Result {$/;" f +parse_string builtins/evalstring.c /^parse_string (string, from_file, flags, endp)$/;" f +parse_string r_bash/src/lib.rs /^ pub fn parse_string($/;" f +parse_string_to_word_list r_bash/src/lib.rs /^ pub fn parse_string_to_word_list($/;" f +parse_terminated vendor/syn/src/parse.rs /^ pub fn parse_terminated($/;" P implementation:ParseBuffer +parse_terminated vendor/syn/src/punctuated.rs /^ pub fn parse_terminated(input: ParseStream) -> Result$/;" P implementation:Punctuated +parse_terminated_with vendor/syn/src/punctuated.rs /^ pub fn parse_terminated_with($/;" P implementation:Punctuated +parse_token_expr vendor/thiserror-impl/src/attr.rs /^fn parse_token_expr(input: ParseStream, mut begin_expr: bool) -> Result {$/;" f +parse_trait_item_type vendor/syn/src/item.rs /^ fn parse_trait_item_type(begin: ParseBuffer, input: ParseStream) -> Result {$/;" f module:parsing +parse_trait_or_trait_alias vendor/syn/src/item.rs /^ fn parse_trait_or_trait_alias(input: ParseStream) -> Result {$/;" f module:parsing +parse_unnamed vendor/syn/src/data.rs /^ pub fn parse_unnamed(input: ParseStream) -> Result {$/;" P implementation:parsing::Field +parse_with vendor/syn/src/lit.rs /^ pub fn parse_with(&self, parser: F) -> Result {$/;" P implementation:LitStr +parse_within vendor/syn/src/stmt.rs /^ pub fn parse_within(input: ParseStream) -> Result> {$/;" P implementation:parsing::Block +parse_without_eager_brace vendor/syn/src/expr.rs /^ pub fn parse_without_eager_brace(input: ParseStream) -> Result {$/;" P implementation:parsing::Expr +parser vendor/fluent-syntax/src/lib.rs /^pub mod parser;$/;" n +parser vendor/unic-langid-impl/src/lib.rs /^pub mod parser;$/;" n +parser_directives lib/readline/bind.c /^} parser_directives [] = {$/;" v typeref:typename:const struct __anon7144754c0108[] +parser_else lib/readline/bind.c /^parser_else (char *args)$/;" f typeref:typename:int file: +parser_endif lib/readline/bind.c /^parser_endif (char *args)$/;" f typeref:typename:int file: +parser_error error.c /^parser_error (int lineno, const char *format, ...)$/;" f typeref:typename:void +parser_error r_bash/src/lib.rs /^ pub fn parser_error(arg1: ::std::os::raw::c_int, arg2: *const ::std::os::raw::c_char, ...);$/;" f +parser_expanding_alias r_bash/src/lib.rs /^ pub fn parser_expanding_alias() -> ::std::os::raw::c_int;$/;" f +parser_if lib/readline/bind.c /^parser_if (char *args)$/;" f typeref:typename:int file: +parser_in_command_position r_bash/src/lib.rs /^ pub fn parser_in_command_position() -> ::std::os::raw::c_int;$/;" f +parser_include lib/readline/bind.c /^parser_include (char *args)$/;" f typeref:typename:int file: +parser_remaining_input r_bash/src/lib.rs /^ pub fn parser_remaining_input() -> *mut ::std::os::raw::c_char;$/;" f +parser_restore_alias r_bash/src/lib.rs /^ pub fn parser_restore_alias();$/;" f +parser_save_alias r_bash/src/lib.rs /^ pub fn parser_save_alias();$/;" f +parser_state r_bash/src/lib.rs /^ pub parser_state: ::std::os::raw::c_int,$/;" m struct:_sh_parser_state_t +parser_state r_bash/src/lib.rs /^ pub static mut parser_state: ::std::os::raw::c_int;$/;" v +parser_state shell.h /^ int parser_state;$/;" m struct:_sh_parser_state_t typeref:typename:int +parser_will_prompt r_bash/src/lib.rs /^ pub fn parser_will_prompt() -> ::std::os::raw::c_int;$/;" f +parserblank syntax.h /^#define parserblank(/;" d +parsing vendor/syn/src/attr.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/data.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/derive.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/expr.rs /^pub(crate) mod parsing {$/;" n +parsing vendor/syn/src/file.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/generics.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/item.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/lifetime.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/lit.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/mac.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/op.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/pat.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/path.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/stmt.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/token.rs /^pub mod parsing {$/;" n +parsing vendor/syn/src/ty.rs /^pub mod parsing {$/;" n +partial_cmp vendor/futures-util/src/stream/futures_ordered.rs /^ fn partial_cmp(&self, other: &Self) -> Option {$/;" P implementation:OrderWrapper +partial_cmp vendor/nix/src/sys/time.rs /^ fn partial_cmp(&self, other: &TimeSpec) -> Option {$/;" P implementation:TimeSpec +partial_cmp vendor/nix/src/sys/time.rs /^ fn partial_cmp(&self, other: &TimeVal) -> Option {$/;" P implementation:TimeVal +partial_cmp vendor/proc-macro2/src/lib.rs /^ fn partial_cmp(&self, other: &Ident) -> Option {$/;" P implementation:Ident +partial_cmp vendor/proc-macro2/src/lib.rs /^ fn partial_cmp(&self, other: &Self) -> Option {$/;" P implementation:LineColumn +partial_cmp vendor/smallvec/src/lib.rs /^ fn partial_cmp(&self, other: &SmallVec) -> Option {$/;" f +partial_cmp vendor/syn/src/expr.rs /^ fn partial_cmp(&self, other: &Self) -> Option {$/;" P implementation:parsing::Precedence +partial_cmp vendor/syn/src/lifetime.rs /^ fn partial_cmp(&self, other: &Lifetime) -> Option {$/;" P implementation:Lifetime +partial_cmp vendor/tinystr/src/tinystr16.rs /^ fn partial_cmp(&self, other: &Self) -> Option {$/;" P implementation:TinyStr16 +partial_cmp vendor/tinystr/src/tinystr4.rs /^ fn partial_cmp(&self, other: &Self) -> Option {$/;" P implementation:TinyStr4 +partial_cmp vendor/tinystr/src/tinystr8.rs /^ fn partial_cmp(&self, other: &Self) -> Option {$/;" P implementation:TinyStr8 +partialeq_impl vendor/once_cell/tests/it.rs /^ fn partialeq_impl() {$/;" f module:sync +partialeq_impl vendor/once_cell/tests/it.rs /^ fn partialeq_impl() {$/;" f module:unsync +partially_consumed_drain vendor/slab/tests/slab.rs /^fn partially_consumed_drain() {$/;" f +partition_point vendor/elsa/src/vec.rs /^ pub fn partition_point

    (&self, mut pred: P) -> usize$/;" P implementation:FrozenVec +pass vendor/bitflags/tests/compile.rs /^fn pass() {$/;" f +pat builtins_rust/fc/src/lib.rs /^ pat: *mut c_char,$/;" m struct:REPL +pat vendor/syn/src/lib.rs /^mod pat;$/;" n +pat_box vendor/syn/src/pat.rs /^ fn pat_box(input: ParseStream) -> Result {$/;" f module:parsing +pat_const vendor/syn/src/pat.rs /^ fn pat_const(input: ParseStream) -> Result {$/;" f module:parsing +pat_ident vendor/syn/src/pat.rs /^ fn pat_ident(input: ParseStream) -> Result {$/;" f module:parsing +pat_lit_expr vendor/syn/src/pat.rs /^ fn pat_lit_expr(input: ParseStream) -> Result>> {$/;" f module:parsing +pat_lit_or_range vendor/syn/src/pat.rs /^ fn pat_lit_or_range(input: ParseStream) -> Result {$/;" f module:parsing +pat_path_or_macro_or_struct_or_range vendor/syn/src/pat.rs /^ fn pat_path_or_macro_or_struct_or_range(input: ParseStream) -> Result {$/;" f module:parsing +pat_range vendor/syn/src/pat.rs /^ fn pat_range($/;" f module:parsing +pat_range_half_open vendor/syn/src/pat.rs /^ fn pat_range_half_open(input: ParseStream, begin: ParseBuffer) -> Result {$/;" f module:parsing +pat_reference vendor/syn/src/pat.rs /^ fn pat_reference(input: ParseStream) -> Result {$/;" f module:parsing +pat_slice vendor/syn/src/pat.rs /^ fn pat_slice(input: ParseStream) -> Result {$/;" f module:parsing +pat_struct vendor/syn/src/pat.rs /^ fn pat_struct(begin: ParseBuffer, input: ParseStream, path: Path) -> Result {$/;" f module:parsing +pat_subst array.c /^pat_subst(s, t, u, i)$/;" f +pat_subst r_bash/src/lib.rs /^ pub fn pat_subst($/;" f +pat_subst subst.c /^pat_subst (string, pat, rep, mflags)$/;" f +pat_tuple vendor/syn/src/pat.rs /^ fn pat_tuple(input: ParseStream) -> Result {$/;" f module:parsing +pat_tuple_struct vendor/syn/src/pat.rs /^ fn pat_tuple_struct(input: ParseStream, path: Path) -> Result {$/;" f module:parsing +pat_wild vendor/syn/src/pat.rs /^ fn pat_wild(input: ParseStream) -> Result {$/;" f module:parsing +patch vendor/autocfg/src/version.rs /^ patch: usize,$/;" m struct:Version +patch_level r_bash/src/lib.rs /^ pub static mut patch_level: ::std::os::raw::c_int;$/;" v +patch_level version.c /^const int patch_level = PATCHLEVEL;$/;" v typeref:typename:const int +patcomp test.c /^patcomp (string, pat, op)$/;" f file: +path builtins_rust/hash/src/lib.rs /^ pub path: *mut c_char,$/;" m struct:_pathdata +path hashcmd.h /^ char *path; \/* The full pathname of the file. *\/$/;" m struct:_pathdata typeref:typename:char * +path r_bash/src/lib.rs /^ pub path: *mut ::std::os::raw::c_char,$/;" m struct:_pathdata +path target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n +path target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" n +path target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +path target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" n +path target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" n +path target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" n +path target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" n +path target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n +path target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" n +path target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n +path target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" n +path target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n +path target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" n +path target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n +path target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" n +path target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n +path target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +path target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +path target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" n +path target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +path target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" n +path target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" n +path target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n +path target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" n +path target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n +path target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" n +path target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" n +path target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" n +path target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +path target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +path target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +path target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" n +path target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" n +path target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" n +path target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" n +path target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +path target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" n +path target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +path target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +path target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" n +path target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +path target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" n +path target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +path target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" n +path target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" n +path target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" n +path target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" n +path target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" n +path target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n +path target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" n +path target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" n +path target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" n +path target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" n +path target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +path target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" n +path target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +path target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" n +path target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" n +path target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +path target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +path target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" n +path target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n +path target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" n +path target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" n +path target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n +path target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n +path target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n +path target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n +path target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n +path target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" n +path target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n +path target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +path target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" n +path target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n +path target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n +path target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n +path target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n +path target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n +path target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n +path target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n +path target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n +path target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n +path target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n +path target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n +path target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n +path target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n +path target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n +path target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n +path target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n +path target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n +path target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n +path target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n +path target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" n +path target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n +path target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +path target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n +path target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n +path target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n +path target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n +path target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n +path target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n +path target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n +path target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n +path target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n +path target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n +path target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n +path target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n +path target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n +path target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n +path target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n +path target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n +path target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" n +path target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n +path target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" n +path target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +path target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" n +path target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" n +path target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" n +path target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" n +path target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" n +path target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +path target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +path target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" n +path target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +path target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" n +path target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" n +path target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n +path target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" n +path target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" n +path target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" n +path target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" n +path target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" n +path vendor/memoffset/src/offset_of.rs /^ fn path() {$/;" f module:tests +path vendor/nix/src/sys/socket/addr.rs /^ pub fn path(&self) -> Option<&Path> {$/;" P implementation:UnixAddr +path vendor/proc-macro2/src/fallback.rs /^ path: PathBuf,$/;" m struct:SourceFile +path vendor/proc-macro2/src/fallback.rs /^ pub fn path(&self) -> PathBuf {$/;" P implementation:SourceFile +path vendor/proc-macro2/src/lib.rs /^ pub fn path(&self) -> PathBuf {$/;" P implementation:SourceFile +path vendor/proc-macro2/src/wrapper.rs /^ pub fn path(&self) -> PathBuf {$/;" P implementation:SourceFile +path vendor/syn/src/attr.rs /^ pub fn path(&self) -> &Path {$/;" P implementation:Meta +path vendor/syn/src/lib.rs /^mod path;$/;" n +path_dot_or_dotdot general.c /^path_dot_or_dotdot (string)$/;" f +path_dot_or_dotdot r_bash/src/lib.rs /^ pub fn path_dot_or_dotdot(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +path_dot_or_dotdot r_glob/src/lib.rs /^ pub fn path_dot_or_dotdot(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +path_dot_or_dotdot r_readline/src/lib.rs /^ pub fn path_dot_or_dotdot(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +path_is_devfd lib/sh/eaccess.c /^path_is_devfd (path)$/;" f file: +path_isdir lib/readline/complete.c /^path_isdir (const char *filename)$/;" f typeref:typename:int file: +path_len vendor/nix/src/sys/socket/addr.rs /^ pub fn path_len(&self) -> usize {$/;" P implementation:UnixAddr +path_max lib/intl/dcigettext.c /^ size_t path_max;$/;" v typeref:typename:size_t +path_or_macro_or_struct vendor/syn/src/expr.rs /^ fn path_or_macro_or_struct(input: ParseStream, allow_struct: AllowStruct) -> Result {$/;" f module:parsing +path_scheme vendor/fluent-resmgr/src/resource_manager.rs /^ path_scheme: String,$/;" m struct:ResourceManager +pathcanon.o lib/sh/Makefile.in /^pathcanon.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/chartypes.h$/;" t +pathcanon.o lib/sh/Makefile.in /^pathcanon.o: ${BASHINCDIR}\/posixstat.h ${BASHINCDIR}\/filecntl.h$/;" t +pathcanon.o lib/sh/Makefile.in /^pathcanon.o: ${BUILD_DIR}\/config.h$/;" t +pathcanon.o lib/sh/Makefile.in /^pathcanon.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +pathcanon.o lib/sh/Makefile.in /^pathcanon.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +pathcanon.o lib/sh/Makefile.in /^pathcanon.o: ${topdir}\/bashtypes.h ${topdir}\/bashansi.h ${BASHINCDIR}\/maxpath.h$/;" t +pathcanon.o lib/sh/Makefile.in /^pathcanon.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +pathcanon.o lib/sh/Makefile.in /^pathcanon.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/conft/;" t +pathcanon.o lib/sh/Makefile.in /^pathcanon.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +pathcanon.o lib/sh/Makefile.in /^pathcanon.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp/;" t +pathcanon.o lib/sh/Makefile.in /^pathcanon.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +pathcanon.o lib/sh/Makefile.in /^pathcanon.o: pathcanon.c$/;" t +pathconf r_bash/src/lib.rs /^ pub fn pathconf($/;" f +pathconf r_glob/src/lib.rs /^ pub fn pathconf($/;" f +pathconf r_readline/src/lib.rs /^ pub fn pathconf($/;" f +pathconf vendor/libc/src/fuchsia/mod.rs /^ pub fn pathconf(path: *const c_char, name: ::c_int) -> c_long;$/;" f +pathconf vendor/libc/src/unix/mod.rs /^ pub fn pathconf(path: *const c_char, name: ::c_int) -> c_long;$/;" f +pathconf vendor/libc/src/vxworks/mod.rs /^ pub fn pathconf(path: *const c_char, name: ::c_int) -> c_long;$/;" f +pathconf vendor/libc/src/wasi.rs /^ pub fn pathconf(path: *const c_char, name: ::c_int) -> c_long;$/;" f +pathdata builtins_rust/hash/src/lib.rs /^macro_rules! pathdata {$/;" M +pathdata hashcmd.h /^#define pathdata(/;" d +pathexp.o Makefile.in /^pathexp.o: $(GLOB_LIBSRC)\/glob.h $(GLOB_LIBSRC)\/strmatch.h$/;" t +pathexp.o Makefile.in /^pathexp.o: ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h assoc.h$/;" t +pathexp.o Makefile.in /^pathexp.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +pathexp.o Makefile.in /^pathexp.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +pathexp.o Makefile.in /^pathexp.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +pathexp.o Makefile.in /^pathexp.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +pathexp.o Makefile.in /^pathexp.o: make_cmd.h subst.h sig.h pathnames.h externs.h$/;" t +pathexp.o Makefile.in /^pathexp.o: pathexp.h flags.h $/;" t +pathexp.o Makefile.in /^pathexp.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +pathexp.o Makefile.in /^pathexp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}/;" t +pathname_alphabetic_chars lib/readline/util.c /^static const char * const pathname_alphabetic_chars = "\/-_=~.#$";$/;" v typeref:typename:const char * const file: +pathnames.h Makefile.in /^pathnames.h: Makefile $(srcdir)\/pathnames.h.in$/;" t +pathphys.o lib/sh/Makefile.in /^pathphys.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/chartypes.h$/;" t +pathphys.o lib/sh/Makefile.in /^pathphys.o: ${BASHINCDIR}\/posixstat.h ${BASHINCDIR}\/filecntl.h$/;" t +pathphys.o lib/sh/Makefile.in /^pathphys.o: ${BUILD_DIR}\/config.h$/;" t +pathphys.o lib/sh/Makefile.in /^pathphys.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +pathphys.o lib/sh/Makefile.in /^pathphys.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +pathphys.o lib/sh/Makefile.in /^pathphys.o: ${topdir}\/bashtypes.h ${topdir}\/bashansi.h ${BASHINCDIR}\/maxpath.h$/;" t +pathphys.o lib/sh/Makefile.in /^pathphys.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +pathphys.o lib/sh/Makefile.in /^pathphys.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/confty/;" t +pathphys.o lib/sh/Makefile.in /^pathphys.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +pathphys.o lib/sh/Makefile.in /^pathphys.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp./;" t +pathphys.o lib/sh/Makefile.in /^pathphys.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +pathphys.o lib/sh/Makefile.in /^pathphys.o: pathphys.c$/;" t +paths target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" a object:local.0.RerunIfChanged +paths target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" a object:local.0.RerunIfChanged +paths target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" a object:local.0.RerunIfChanged +paths target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" a object:local.0.RerunIfChanged +paths target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" a object:local.0.RerunIfChanged +paths target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" a object:local.0.RerunIfChanged +paths target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" a object:local.0.RerunIfChanged +paths target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" a object:local.0.RerunIfChanged +pattern lib/glob/sm_loop.c /^ CHAR *pattern;$/;" m struct:STRUCT typeref:typename:CHAR * file: +pattern parse.y /^pattern: WORD$/;" l +pattern vendor/fluent-bundle/src/resolver/mod.rs /^mod pattern;$/;" n +pattern vendor/fluent-syntax/src/parser/mod.rs /^mod pattern;$/;" n +pattern_list builtins_rust/command/src/lib.rs /^pub struct pattern_list {$/;" s +pattern_list builtins_rust/kill/src/intercdep.rs /^pub struct pattern_list {$/;" s +pattern_list builtins_rust/setattr/src/intercdep.rs /^pub struct pattern_list {$/;" s +pattern_list command.h /^typedef struct pattern_list {$/;" s +pattern_list parse.y /^pattern_list: newline_list pattern ')' compound_list$/;" l +pattern_list r_bash/src/lib.rs /^pub struct pattern_list {$/;" s +pattern_list r_glob/src/lib.rs /^pub struct pattern_list {$/;" s +pattern_list r_readline/src/lib.rs /^pub struct pattern_list {$/;" s +patterns builtins_rust/cd/src/lib.rs /^ patterns: *mut WordList,$/;" m struct:PATTERN_LIST +patterns builtins_rust/command/src/lib.rs /^ pub patterns: *mut WordList,$/;" m struct:pattern_list +patterns builtins_rust/common/src/lib.rs /^ patterns: *mut WordList,$/;" m struct:PATTERN_LIST +patterns builtins_rust/complete/src/lib.rs /^ patterns: *mut WordList,$/;" m struct:PATTERN_LIST +patterns builtins_rust/declare/src/lib.rs /^ patterns: *mut WordList,$/;" m struct:PATTERN_LIST +patterns builtins_rust/fc/src/lib.rs /^ patterns: *mut WordList,$/;" m struct:PATTERN_LIST +patterns builtins_rust/fg_bg/src/lib.rs /^ patterns: *mut WordList,$/;" m struct:PATTERN_LIST +patterns builtins_rust/getopts/src/lib.rs /^ patterns: *mut WordList,$/;" m struct:PATTERN_LIST +patterns builtins_rust/jobs/src/lib.rs /^ patterns: *mut WordList,$/;" m struct:PATTERN_LIST +patterns builtins_rust/kill/src/intercdep.rs /^ pub patterns: *mut WordList,$/;" m struct:pattern_list +patterns builtins_rust/pushd/src/lib.rs /^ patterns: *mut WordList,$/;" m struct:PATTERN_LIST +patterns builtins_rust/setattr/src/intercdep.rs /^ pub patterns: *mut WordList,$/;" m struct:pattern_list +patterns builtins_rust/source/src/lib.rs /^ patterns: *mut WordList,$/;" m struct:PATTERN_LIST +patterns builtins_rust/type/src/lib.rs /^ patterns: *mut WordList,$/;" m struct:PATTERN_LIST +patterns command.h /^ WORD_LIST *patterns; \/* Linked list of patterns to test. *\/$/;" m struct:pattern_list typeref:typename:WORD_LIST * +patterns r_bash/src/lib.rs /^ pub patterns: *mut WORD_LIST,$/;" m struct:pattern_list +patterns r_glob/src/lib.rs /^ pub patterns: *mut WORD_LIST,$/;" m struct:pattern_list +patterns r_readline/src/lib.rs /^ pub patterns: *mut WORD_LIST,$/;" m struct:pattern_list +pause r_bash/src/lib.rs /^ pub fn pause() -> ::std::os::raw::c_int;$/;" f +pause r_glob/src/lib.rs /^ pub fn pause() -> ::std::os::raw::c_int;$/;" f +pause r_readline/src/lib.rs /^ pub fn pause() -> ::std::os::raw::c_int;$/;" f +pause vendor/libc/src/fuchsia/mod.rs /^ pub fn pause() -> ::c_int;$/;" f +pause vendor/libc/src/vxworks/mod.rs /^ pub fn pause() -> ::c_int;$/;" f +pc vendor/libc/src/unix/solarish/mod.rs /^ pc: *mut ::caddr_t,$/;" m struct:siginfo_fault +pclose r_bash/src/lib.rs /^ pub fn pclose(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +pclose r_readline/src/lib.rs /^ pub fn pclose(__stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +pclose vendor/libc/src/fuchsia/mod.rs /^ pub fn pclose(stream: *mut ::FILE) -> ::c_int;$/;" f +pclose vendor/libc/src/unix/mod.rs /^ pub fn pclose(stream: *mut ::FILE) -> ::c_int;$/;" f +pclose vendor/libc/src/windows/mod.rs /^ pub fn pclose(stream: *mut ::FILE) -> ::c_int;$/;" f +pcomp_curcmd builtins_rust/complete/src/lib.rs /^ static pcomp_curcmd: *mut c_char;$/;" v +pcomp_curcmd pcomplete.c /^const char *pcomp_curcmd;$/;" v typeref:typename:const char * +pcomp_curcmd r_bash/src/lib.rs /^ pub static mut pcomp_curcmd: *const ::std::os::raw::c_char;$/;" v +pcomp_curcs builtins_rust/complete/src/lib.rs /^ static mut pcomp_curcs: *mut COMPSPEC;$/;" v +pcomp_curcs pcomplete.c /^COMPSPEC *pcomp_curcs;$/;" v typeref:typename:COMPSPEC * +pcomp_curcs r_bash/src/lib.rs /^ pub static mut pcomp_curcs: *mut COMPSPEC;$/;" v +pcomp_curtxt pcomplete.c /^const char *pcomp_curtxt;$/;" v typeref:typename:const char * +pcomp_filename_completion_function pcomplete.c /^pcomp_filename_completion_function (text, state)$/;" f file: +pcomp_ind builtins_rust/complete/src/lib.rs /^ static mut pcomp_ind: c_int;$/;" v +pcomp_ind pcomplete.c /^int pcomp_ind;$/;" v typeref:typename:int +pcomp_ind r_bash/src/lib.rs /^ pub static mut pcomp_ind: ::std::os::raw::c_int;$/;" v +pcomp_line builtins_rust/complete/src/lib.rs /^ static mut pcomp_line: *mut c_char;$/;" v +pcomp_line pcomplete.c /^char *pcomp_line;$/;" v typeref:typename:char * +pcomp_line r_bash/src/lib.rs /^ pub static mut pcomp_line: *mut ::std::os::raw::c_char;$/;" v +pcomp_set_compspec_options builtins_rust/complete/src/lib.rs /^ fn pcomp_set_compspec_options(cs: *mut COMPSPEC, flags: i32, set_or_unset: i32);$/;" f +pcomp_set_compspec_options pcomplete.c /^pcomp_set_compspec_options (cs, flags, set_or_unset)$/;" f +pcomp_set_compspec_options r_bash/src/lib.rs /^ pub fn pcomp_set_compspec_options($/;" f +pcomp_set_readline_variables builtins_rust/complete/src/lib.rs /^ fn pcomp_set_readline_variables(flags: i32, nval: i32);$/;" f +pcomp_set_readline_variables pcomplete.c /^pcomp_set_readline_variables (flags, nval)$/;" f +pcomp_set_readline_variables r_bash/src/lib.rs /^ pub fn pcomp_set_readline_variables(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int/;" f +pcomplete.o Makefile.in /^pcomplete.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +pcomplete.o Makefile.in /^pcomplete.o: ${BASHINCDIR}\/stdc.h hashlib.h pcomplete.h shell.h syntax.h$/;" t +pcomplete.o Makefile.in /^pcomplete.o: ${DEFDIR}\/builtext.h$/;" t +pcomplete.o Makefile.in /^pcomplete.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +pcomplete.o Makefile.in /^pcomplete.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h/;" t +pcomplete.o Makefile.in /^pcomplete.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h bashtypes.h$/;" t +pcomplete.o Makefile.in /^pcomplete.o: externs.h ${BASHINCDIR}\/maxpath.h execute_cmd.h $/;" t +pcomplete.o Makefile.in /^pcomplete.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h$/;" t +pcomplib.o Makefile.in /^pcomplib.o: ${BASHINCDIR}\/posixjmp.h ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h$/;" t +pcomplib.o Makefile.in /^pcomplib.o: ${BASHINCDIR}\/stdc.h hashlib.h pcomplete.h shell.h syntax.h$/;" t +pcomplib.o Makefile.in /^pcomplib.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +pcomplib.o Makefile.in /^pcomplib.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h /;" t +pcomplib.o Makefile.in /^pcomplib.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h bashtypes.h$/;" t +pcomplib.o Makefile.in /^pcomplib.o: externs.h ${BASHINCDIR}\/maxpath.h assoc.h array.h$/;" t +pcomplib.o Makefile.in /^pcomplib.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h$/;" t +pd vendor/libloading/src/os/unix/mod.rs /^ pd: marker::PhantomData$/;" m struct:Symbol +pd vendor/libloading/src/os/windows/mod.rs /^ pd: marker::PhantomData$/;" m struct:Symbol +pd vendor/libloading/src/safe.rs /^ pd: marker::PhantomData<&'lib T>,$/;" m struct:Symbol +pdf lib/intl/Makefile.in /^info dvi ps pdf html:$/;" t +pdfork vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pdfork(fdp: *mut ::c_int, flags: ::c_int) -> ::pid_t;$/;" f +pdgetpid vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pdgetpid(fd: ::c_int, pidp: *mut ::pid_t) -> ::c_int;$/;" f +pdh vendor/winapi/src/um/mod.rs /^#[cfg(feature = "pdh")] pub mod pdh;$/;" n +pdkill vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pdkill(fd: ::c_int, signum: ::c_int) -> ::c_int;$/;" f +peek vendor/futures-util/src/future/future/shared.rs /^ pub fn peek(&self) -> Option<&Fut::Output> {$/;" f +peek vendor/futures-util/src/stream/stream/mod.rs /^mod peek;$/;" n +peek vendor/futures-util/src/stream/stream/peek.rs /^ pub fn peek(self: Pin<&mut Self>) -> Peek<'_, St> {$/;" P implementation:Peekable +peek vendor/futures/tests/future_shared.rs /^fn peek() {$/;" f +peek vendor/futures/tests_disabled/stream.rs /^fn peek() {$/;" f +peek vendor/syn/src/ext.rs /^ fn peek(cursor: Cursor) -> bool {$/;" P implementation:IdentAny +peek vendor/syn/src/ident.rs /^ fn peek(cursor: Cursor) -> bool {$/;" P implementation:Ident +peek vendor/syn/src/lookahead.rs /^ pub fn peek(&self, token: T) -> bool {$/;" P implementation:Lookahead1 +peek vendor/syn/src/parse.rs /^ pub fn peek(&self, token: T) -> bool {$/;" P implementation:ParseBuffer +peek vendor/syn/src/token.rs /^ fn peek(cursor: Cursor) -> bool {$/;" P implementation:Brace +peek vendor/syn/src/token.rs /^ fn peek(cursor: Cursor) -> bool {$/;" P implementation:Bracket +peek vendor/syn/src/token.rs /^ fn peek(cursor: Cursor) -> bool {$/;" P implementation:Group +peek vendor/syn/src/token.rs /^ fn peek(cursor: Cursor) -> bool {$/;" P implementation:Paren +peek vendor/syn/src/token.rs /^ fn peek(cursor: Cursor) -> bool {$/;" P implementation:T +peek vendor/syn/src/token.rs /^ fn peek(cursor: Cursor) -> bool {$/;" P implementation:Underscore +peek vendor/syn/src/token.rs /^ fn peek(cursor: Cursor) -> bool;$/;" P interface:CustomToken +peek vendor/syn/src/token.rs /^ fn peek(cursor: Cursor) -> bool;$/;" P interface:Token +peek2 vendor/syn/src/parse.rs /^ fn peek2(buffer: &ParseBuffer, peek: fn(Cursor) -> bool) -> bool {$/;" f method:ParseBuffer::peek2 +peek2 vendor/syn/src/parse.rs /^ pub fn peek2(&self, token: T) -> bool {$/;" P implementation:ParseBuffer +peek3 vendor/syn/src/parse.rs /^ fn peek3(buffer: &ParseBuffer, peek: fn(Cursor) -> bool) -> bool {$/;" f method:ParseBuffer::peek3 +peek3 vendor/syn/src/parse.rs /^ pub fn peek3(&self, token: T) -> bool {$/;" P implementation:ParseBuffer +peek_impl vendor/syn/src/lookahead.rs /^fn peek_impl($/;" f +peek_impl vendor/syn/src/token.rs /^fn peek_impl(cursor: Cursor, peek: fn(ParseStream) -> bool) -> bool {$/;" f +peek_keyword vendor/syn/src/token.rs /^ pub fn peek_keyword(cursor: Cursor, token: &str) -> bool {$/;" f module:parsing +peek_mut vendor/futures-util/src/stream/stream/peek.rs /^ pub fn peek_mut(self: Pin<&mut Self>) -> PeekMut<'_, St> {$/;" P implementation:Peekable +peek_precedence vendor/syn/src/expr.rs /^ fn peek_precedence(input: ParseStream) -> Precedence {$/;" f module:parsing +peek_punct vendor/syn/src/token.rs /^ pub fn peek_punct(mut cursor: Cursor, token: &str) -> bool {$/;" f module:parsing +peek_signature vendor/syn/src/item.rs /^ fn peek_signature(input: ParseStream) -> bool {$/;" f module:parsing +peekable vendor/futures-util/src/stream/stream/mod.rs /^ fn peekable(self) -> Peekable$/;" P interface:StreamExt +peekable vendor/futures/tests/stream_peekable.rs /^fn peekable() {$/;" f +peekable vendor/futures/tests_disabled/stream.rs /^fn peekable() {$/;" f +peekable_mut vendor/futures/tests/stream_peekable.rs /^fn peekable_mut() {$/;" f +peekable_next_if_eq vendor/futures/tests/stream_peekable.rs /^fn peekable_next_if_eq() {$/;" f +pending vendor/futures-executor/tests/local_pool.rs /^fn pending() -> Pending {$/;" f +pending vendor/futures-util/src/async_await/mod.rs /^mod pending;$/;" n +pending vendor/futures-util/src/async_await/pending.rs /^macro_rules! pending {$/;" M +pending vendor/futures-util/src/future/mod.rs /^mod pending;$/;" n +pending vendor/futures-util/src/future/pending.rs /^pub fn pending() -> Pending {$/;" f +pending vendor/futures-util/src/stream/mod.rs /^mod pending;$/;" n +pending vendor/futures-util/src/stream/pending.rs /^pub fn pending() -> Pending {$/;" f +pending_bytes lib/readline/text.c /^static char pending_bytes[MB_LEN_MAX];$/;" v typeref:typename:char[] file: +pending_bytes_length lib/readline/text.c /^static int pending_bytes_length = 0;$/;" v typeref:typename:int file: +pending_next_all vendor/futures-util/src/stream/futures_unordered/iter.rs /^ pub(super) pending_next_all: *mut Task,$/;" m struct:IterPinRef +pending_next_all vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn pending_next_all(&self) -> *mut Task {$/;" P implementation:FuturesUnordered +pending_once vendor/futures-util/src/async_await/pending.rs /^pub fn pending_once() -> PendingOnce {$/;" f +pending_traps trap.c /^int pending_traps[NSIG];$/;" v typeref:typename:int[] +pending_wakes vendor/fluent-fallback/src/cache.rs /^ pending_wakes: RefCell>,$/;" m struct:AsyncCache +pendingin lib/readline/readline.h /^ int pendingin;$/;" m struct:readline_state typeref:typename:int +pendingin r_readline/src/lib.rs /^ pub pendingin: ::std::os::raw::c_int,$/;" m struct:readline_state +people vendor/elsa/examples/mutable_arena.rs /^ people: FrozenVec>>,$/;" m struct:Arena +per_call vendor/futures-util/src/io/write_all_vectored.rs /^ per_call: usize,$/;" m struct:tests::TestWriter +per_package target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" o object:reports.0 +per_package target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" o object:reports.1 +per_package target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" o object:reports.2 +perflib vendor/winapi/src/um/mod.rs /^#[cfg(feature = "perflib")] pub mod perflib;$/;" n +perform_code vendor/libc/src/unix/haiku/native.rs /^pub type perform_code = u32;$/;" t +perform_hostname_completion bashline.c /^int perform_hostname_completion = 1;$/;" v typeref:typename:int +perform_hostname_completion builtins_rust/shopt/src/lib.rs /^ static mut perform_hostname_completion: i32;$/;" v +perform_hostname_completion r_bash/src/lib.rs /^ pub static mut perform_hostname_completion: ::std::os::raw::c_int;$/;" v +period vendor/memchr/src/memmem/twoway.rs /^ period: usize,$/;" m struct:Suffix +perror r_bash/src/lib.rs /^ pub fn perror(__s: *const ::std::os::raw::c_char);$/;" f +perror r_readline/src/lib.rs /^ pub fn perror(__s: *const ::std::os::raw::c_char);$/;" f +perror vendor/libc/src/fuchsia/mod.rs /^ pub fn perror(s: *const c_char);$/;" f +perror vendor/libc/src/solid/mod.rs /^ pub fn perror(arg1: *const c_char);$/;" f +perror vendor/libc/src/unix/mod.rs /^ pub fn perror(s: *const c_char);$/;" f +perror vendor/libc/src/vxworks/mod.rs /^ pub fn perror(s: *const c_char);$/;" f +perror vendor/libc/src/wasi.rs /^ pub fn perror(a: *const c_char);$/;" f +perror vendor/libc/src/windows/mod.rs /^ pub fn perror(s: *const c_char);$/;" f +personality vendor/libc/src/fuchsia/mod.rs /^ pub fn personality(persona: ::c_ulong) -> ::c_int;$/;" f +personality vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn personality(persona: ::c_uint) -> ::c_int;$/;" f +personality vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn personality(persona: ::c_ulong) -> ::c_int;$/;" f +perturb_rand32 lib/sh/random.c /^perturb_rand32 ()$/;" f typeref:typename:void file: +pexp lib/intl/eval-plural.h /^ struct expression *pexp;$/;" v typeref:struct:expression * +pf lib/sh/snprintf.c /^ const char *pf;$/;" m struct:DATA typeref:typename:const char * file: +pflag builtins_rust/complete/src/lib.rs /^ pflag: c_int,$/;" m struct:_optflags +pgn_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type pgn_t = u32;$/;" t +pgrp builtins_rust/cd/src/lib.rs /^ pgrp: i32,$/;" m struct:JOB +pgrp builtins_rust/common/src/lib.rs /^ pgrp: i32,$/;" m struct:JOB +pgrp builtins_rust/exit/src/lib.rs /^ pgrp: i32,$/;" m struct:JOB +pgrp builtins_rust/fc/src/lib.rs /^ pgrp: i32,$/;" m struct:JOB +pgrp builtins_rust/fg_bg/src/lib.rs /^ pgrp: i32,$/;" m struct:JOB +pgrp builtins_rust/jobs/src/lib.rs /^ pgrp: i32,$/;" m struct:JOB +pgrp builtins_rust/kill/src/intercdep.rs /^ pub pgrp: pid_t,$/;" m struct:job +pgrp builtins_rust/setattr/src/intercdep.rs /^ pub pgrp: pid_t,$/;" m struct:job +pgrp builtins_rust/wait/src/lib.rs /^ pgrp: i32,$/;" m struct:JOB +pgrp jobs.h /^ pid_t pgrp; \/* The process ID of the process group (necessary). *\/$/;" m struct:job typeref:typename:pid_t +pgrp r_bash/src/lib.rs /^ pub pgrp: pid_t,$/;" m struct:job +pgrp_pipe jobs.c /^int pgrp_pipe[2] = { -1, -1 };$/;" v typeref:typename:int[2] +pgrp_pipe r_jobs/src/lib.rs /^pub static mut pgrp_pipe:[c_int; 2] = [-1 as c_int, -1 as c_int];$/;" v +phantom vendor/smallvec/src/lib.rs /^ phantom: PhantomData,$/;" m struct:SmallVecVisitor +phash_create hashcmd.c /^phash_create ()$/;" f typeref:typename:void +phash_create r_bash/src/lib.rs /^ pub fn phash_create();$/;" f +phash_flush builtins_rust/hash/src/lib.rs /^ fn phash_flush();$/;" f +phash_flush hashcmd.c /^phash_flush ()$/;" f typeref:typename:void +phash_flush r_bash/src/lib.rs /^ pub fn phash_flush();$/;" f +phash_freedata hashcmd.c /^phash_freedata (data)$/;" f file: +phash_insert builtins_rust/hash/src/lib.rs /^ fn phash_insert(filename: *mut c_char, full_path: *mut c_char, check_dot: i32, found: i32);$/;" f +phash_insert hashcmd.c /^phash_insert (filename, full_path, check_dot, found)$/;" f +phash_insert r_bash/src/lib.rs /^ pub fn phash_insert($/;" f +phash_remove builtins_rust/hash/src/lib.rs /^ fn phash_remove(filename: *const c_char) -> i32;$/;" f +phash_remove hashcmd.c /^phash_remove (filename)$/;" f +phash_remove r_bash/src/lib.rs /^ pub fn phash_remove(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +phash_search builtins_rust/hash/src/lib.rs /^ fn phash_search(filename: *const c_char) -> *mut c_char;$/;" f +phash_search builtins_rust/type/src/lib.rs /^ fn phash_search(search: *const libc::c_char) -> *mut libc::c_char;$/;" f +phash_search hashcmd.c /^phash_search (filename)$/;" f +phash_search r_bash/src/lib.rs /^ pub fn phash_search(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +physicalmonitorenumerationapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "physicalmonitorenumerationapi")] pub mod physicalmonitorenumerationapi;$/;" n +picky vendor/async-trait/tests/ui/delimiter-span.rs /^macro_rules! picky {$/;" M +pid builtins_rust/cd/src/lib.rs /^ pid: libc::c_int,$/;" m struct:PROCESS +pid builtins_rust/common/src/lib.rs /^ pub pid: pid_t,$/;" m struct:process +pid builtins_rust/fc/src/lib.rs /^ pid: libc::c_int,$/;" m struct:PROCESS +pid builtins_rust/fg_bg/src/lib.rs /^ pid: libc::c_int,$/;" m struct:PROCESS +pid builtins_rust/jobs/src/lib.rs /^ pid: libc::c_int,$/;" m struct:PROCESS +pid builtins_rust/kill/src/intercdep.rs /^ pub pid: pid_t,$/;" m struct:process +pid builtins_rust/setattr/src/intercdep.rs /^ pub pid: pid_t,$/;" m struct:process +pid builtins_rust/wait/src/lib.rs /^ pub pid: pid_t,$/;" m struct:procstat +pid execute_cmd.h /^ pid_t pid;$/;" m struct:execstate typeref:typename:pid_t +pid jobs.h /^ pid_t pid; \/* Process ID. *\/$/;" m struct:process typeref:typename:pid_t +pid jobs.h /^ pid_t pid;$/;" m struct:pidstat typeref:typename:pid_t +pid jobs.h /^ pid_t pid;$/;" m struct:procstat typeref:typename:pid_t +pid nojobs.c /^ pid_t pid;$/;" m struct:proc_status typeref:typename:pid_t file: +pid r_bash/src/lib.rs /^ pub pid: __pid_t,$/;" m struct:f_owner_ex +pid r_bash/src/lib.rs /^ pub pid: pid_t,$/;" m struct:execstate +pid r_bash/src/lib.rs /^ pub pid: pid_t,$/;" m struct:pidstat +pid r_bash/src/lib.rs /^ pub pid: pid_t,$/;" m struct:process +pid r_bash/src/lib.rs /^ pub pid: pid_t,$/;" m struct:procstat +pid vendor/libc/src/unix/solarish/mod.rs /^ pid: ::pid_t,$/;" m struct:siginfo_kill +pid vendor/libc/src/unix/solarish/mod.rs /^ pid: ::pid_t,$/;" m struct:siginfo_sigcld +pid vendor/nix/src/sys/socket/addr.rs /^ pub const fn pid(&self) -> u32 {$/;" P implementation:netlink::NetlinkAddr +pid vendor/nix/src/sys/wait.rs /^ pub fn pid(&self) -> Option {$/;" P implementation:WaitStatus +pid_list nojobs.c /^static struct proc_status *pid_list = (struct proc_status *)NULL;$/;" v typeref:struct:proc_status * file: +pid_list_size nojobs.c /^static int pid_list_size;$/;" v typeref:typename:int file: +pid_t builtins_rust/common/src/lib.rs /^type pid_t = c_int;$/;" t +pid_t builtins_rust/kill/src/intercdep.rs /^pub type pid_t = c_int;$/;" t +pid_t builtins_rust/setattr/src/intercdep.rs /^pub type pid_t = c_int;$/;" t +pid_t builtins_rust/wait/src/signal.rs /^pub type pid_t = __pid_t;$/;" t +pid_t r_bash/src/lib.rs /^pub type pid_t = __pid_t;$/;" t +pid_t r_glob/src/lib.rs /^pub type pid_t = __pid_t;$/;" t +pid_t r_readline/src/lib.rs /^pub type pid_t = __pid_t;$/;" t +pid_t vendor/libc/src/fuchsia/mod.rs /^pub type pid_t = i32;$/;" t +pid_t vendor/libc/src/solid/mod.rs /^pub type pid_t = __pid_t;$/;" t +pid_t vendor/libc/src/unix/mod.rs /^pub type pid_t = i32;$/;" t +pid_t vendor/libc/src/vxworks/mod.rs /^pub type pid_t = ::c_int;$/;" t +pid_t vendor/libc/src/wasi.rs /^pub type pid_t = i32;$/;" t +pidstat jobs.h /^struct pidstat {$/;" s +pidstat r_bash/src/lib.rs /^pub struct pidstat {$/;" s +pidstat_table jobs.c /^ps_index_t pidstat_table[PIDSTAT_TABLE_SZ];$/;" v typeref:typename:ps_index_t[] +pin-project-lite vendor/pin-project-lite/README.md /^# pin-project-lite$/;" c +pin-utils vendor/pin-utils/README.md /^# pin-utils$/;" c +pin_cell vendor/fluent-fallback/src/lib.rs /^mod pin_cell;$/;" n +pin_mut vendor/fluent-fallback/src/pin_cell/mod.rs /^mod pin_mut;$/;" n +pin_mut vendor/pin-utils/src/stack_pin.rs /^macro_rules! pin_mut {$/;" M +pin_project vendor/pin-project-lite/src/lib.rs /^macro_rules! pin_project {$/;" M +pin_ref vendor/fluent-fallback/src/pin_cell/mod.rs /^mod pin_ref;$/;" n +pinned vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>,$/;" m struct:ProjectionRef +pinned vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,$/;" m struct:Projection +pinned vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ pinned: T,$/;" m struct:__Origin +pinned vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ pinned: T,$/;" m struct:Struct +pinned vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ pinned: T,$/;" m struct:__Origin +pinned vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ pinned: ::pin_project_lite::__private::PhantomData,$/;" m struct:StructProjReplace +pinned vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>,$/;" m struct:StructProjRef +pinned vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,$/;" m struct:StructProj +pinned vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ pinned: T,$/;" m struct:Struct +pinned vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>,$/;" m struct:ProjectionRef +pinned vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ pinned: T,$/;" m struct:__Origin +pinned vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,$/;" m struct:StructProj +pinned vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ pinned: T,$/;" m struct:Struct +pinned vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>,$/;" m struct:ProjectionRef +pinned vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,$/;" m struct:Projection +pinned vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ pinned: T,$/;" m struct:__Origin +pinned vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ pinned: T,$/;" m struct:Struct +pinned vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,$/;" m struct:Projection +pinned vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ pinned: T,$/;" m struct:__Origin +pinned vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>,$/;" m struct:StructProjRef +pinned vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ pinned: T,$/;" m struct:Struct +pinned vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>,$/;" m struct:ProjectionRef +pinned vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,$/;" m struct:Projection +pinned vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ pinned: T,$/;" m struct:__Origin +pinned vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ pinned: T,$/;" m struct:Struct +pinned vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ pinned: T,$/;" m struct:__Origin +pinned vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ pub pinned: ::pin_project_lite::__private::Pin<&'__pin (T)>,$/;" m struct:ProjectionRef +pinned vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ pub pinned: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,$/;" m struct:Projection +pinned vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ pub pinned: T,$/;" m struct:Struct +pinned1 vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ pinned1: ::pin_project_lite::__private::Pin<&'__pin (T)>,$/;" m struct:ProjectionRef +pinned1 vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ pinned1: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,$/;" m struct:Projection +pinned1 vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ pinned1: T,$/;" m struct:__Origin +pinned1 vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ pinned1: ::pin_project_lite::__private::PhantomData,$/;" m struct:StructProjReplace +pinned1 vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ pinned1: T,$/;" m struct:Struct +pinned2 vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ pinned2: ::pin_project_lite::__private::Pin<&'__pin (T)>,$/;" m struct:ProjectionRef +pinned2 vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ pinned2: ::pin_project_lite::__private::Pin<&'__pin mut (T)>,$/;" m struct:Projection +pinned2 vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ pinned2: T,$/;" m struct:__Origin +pinned2 vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ pinned2: ::pin_project_lite::__private::PhantomData,$/;" m struct:StructProjReplace +pinned2 vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ pinned2: T,$/;" m struct:Struct +pinned_drop vendor/pin-project-lite/tests/test.rs /^fn pinned_drop() {$/;" f +pipe builtins_rust/cd/src/lib.rs /^ pipe: *mut PROCESS,$/;" m struct:JOB +pipe builtins_rust/common/src/lib.rs /^ pipe: *mut PROCESS,$/;" m struct:JOB +pipe builtins_rust/exit/src/lib.rs /^ pipe: *mut PROCESS,$/;" m struct:JOB +pipe builtins_rust/fc/src/lib.rs /^ pipe: *mut PROCESS,$/;" m struct:JOB +pipe builtins_rust/fg_bg/src/lib.rs /^ pipe: *mut PROCESS,$/;" m struct:JOB +pipe builtins_rust/jobs/src/lib.rs /^ pipe: *mut PROCESS,$/;" m struct:JOB +pipe builtins_rust/kill/src/intercdep.rs /^ pub pipe: *mut PROCESS,$/;" m struct:job +pipe builtins_rust/setattr/src/intercdep.rs /^ pub pipe: *mut PROCESS,$/;" m struct:job +pipe builtins_rust/wait/src/lib.rs /^ pipe: *mut PROCESS,$/;" m struct:JOB +pipe jobs.h /^ PROCESS *pipe; \/* The pipeline of processes that make up this job. *\/$/;" m struct:job typeref:typename:PROCESS * +pipe r_bash/src/lib.rs /^ pub fn pipe(__pipedes: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +pipe r_bash/src/lib.rs /^ pub pipe: *mut PROCESS,$/;" m struct:job +pipe r_glob/src/lib.rs /^ pub fn pipe(__pipedes: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +pipe r_readline/src/lib.rs /^ pub fn pipe(__pipedes: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +pipe vendor/libc/src/fuchsia/mod.rs /^ pub fn pipe(fds: *mut ::c_int) -> ::c_int;$/;" f +pipe vendor/libc/src/unix/mod.rs /^ pub fn pipe(fds: *mut ::c_int) -> ::c_int;$/;" f +pipe vendor/libc/src/vxworks/mod.rs /^ pub fn pipe(fds: *mut ::c_int) -> ::c_int;$/;" f +pipe vendor/libc/src/windows/mod.rs /^ pub fn pipe(fds: *mut ::c_int, psize: ::c_uint, textmode: ::c_int) -> ::c_int;$/;" f +pipe vendor/nix/src/unistd.rs /^pub fn pipe() -> std::result::Result<(RawFd, RawFd), Error> {$/;" f +pipe2 r_bash/src/lib.rs /^ pub fn pipe2($/;" f +pipe2 r_glob/src/lib.rs /^ pub fn pipe2($/;" f +pipe2 r_readline/src/lib.rs /^ pub fn pipe2($/;" f +pipe2 vendor/libc/src/fuchsia/mod.rs /^ pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int;$/;" f +pipe2 vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int;$/;" f +pipe2 vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int;$/;" f +pipe2 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int;$/;" f +pipe2 vendor/libc/src/unix/redox/mod.rs /^ pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int;$/;" f +pipe2 vendor/libc/src/unix/solarish/mod.rs /^ pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int;$/;" f +pipe_read jobs.c /^pipe_read (pp)$/;" f file: +pipe_read r_jobs/src/lib.rs /^unsafe extern "C" fn pipe_read(mut pp: *mut c_int) {$/;" f +pipefail_opt builtins_rust/set/src/lib.rs /^ static mut pipefail_opt: i32;$/;" v +pipefail_opt flags.c /^int pipefail_opt = 0;$/;" v typeref:typename:int +pipefail_opt r_bash/src/lib.rs /^ pub static mut pipefail_opt: ::std::os::raw::c_int;$/;" v +pipeline jobs.h /^ struct process *pipeline;$/;" m struct:pipeline_saver typeref:struct:process * +pipeline parse.y /^pipeline: pipeline '|' newline_list pipeline$/;" l +pipeline r_bash/src/lib.rs /^ pub pipeline: *mut process,$/;" m struct:pipeline_saver +pipeline_command parse.y /^pipeline_command: pipeline$/;" l +pipeline_pgrp jobs.c /^pid_t pipeline_pgrp = (pid_t)0;$/;" v typeref:typename:pid_t +pipeline_pgrp r_bash/src/lib.rs /^ pub static mut pipeline_pgrp: pid_t;$/;" v +pipeline_pgrp r_jobs/src/lib.rs /^pub static mut pipeline_pgrp:pid_t = 0 as pid_t;$/;" v +pipeline_saver jobs.h /^struct pipeline_saver {$/;" s +pipeline_saver r_bash/src/lib.rs /^pub struct pipeline_saver {$/;" s +pipesize builtins_rust/ulimit/src/lib.rs /^unsafe fn pipesize(valuep: *mut rlim_t) -> i32 {$/;" f +pipesize.h builtins/Makefile.in /^pipesize.h: psize.aux$/;" t +pipestatus r_bash/src/lib.rs /^ pub pipestatus: *mut ARRAY,$/;" m struct:_sh_parser_state_t +pipestatus shell.h /^ ARRAY *pipestatus;$/;" m struct:_sh_parser_state_t typeref:typename:ARRAY * +pkgconfigdir Makefile.in /^pkgconfigdir = ${libdir}\/pkgconfig$/;" m +place_keywords_in_env flags.c /^int place_keywords_in_env = 0;$/;" v typeref:typename:int +place_keywords_in_env r_bash/src/lib.rs /^ pub static mut place_keywords_in_env: ::std::os::raw::c_int;$/;" v +placeables vendor/fluent-bundle/src/resolver/scope.rs /^ pub(super) placeables: u8,$/;" m struct:Scope +playsoundapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "playsoundapi")] pub mod playsoundapi;$/;" n +pledge vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn pledge(promises: *const ::c_char, execpromises: *const ::c_char) -> ::c_int;$/;" f +plone lib/intl/plural-exp.c /^static const struct expression plone =$/;" v typeref:typename:const struct expression file: +plone lib/intl/plural-exp.c /^static struct expression plone;$/;" v typeref:struct:expression file: +plural lib/intl/dcigettext.c /^ int plural;$/;" v typeref:typename:int +plural lib/intl/gettextP.h /^ struct expression *plural;$/;" m struct:loaded_domain typeref:struct:expression * +plural vendor/fluent-bundle/src/types/mod.rs /^mod plural;$/;" n +plural-exp.$lo lib/intl/Makefile.in /^dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)\/plural-exp.h$/;" t +plural-exp.lo lib/intl/Makefile.in /^plural-exp.lo: $(srcdir)\/plural-exp.c$/;" t +plural.$lo lib/intl/Makefile.in /^dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)\/plural-exp.h$/;" t +plural.lo lib/intl/Makefile.in /^plural.lo: $(srcdir)\/plural.c$/;" t +plural_lookup lib/intl/dcigettext.c /^plural_lookup (domain, n, translation, translation_len)$/;" f file: +plural_rules vendor/intl_pluralrules/benches/pluralrules.rs /^fn plural_rules(c: &mut Criterion) {$/;" f +plus lib/intl/plural-exp.h /^ plus, \/* Addition. *\/$/;" e enum:expression::__anon93874cf10103 +plvar lib/intl/plural-exp.c /^static const struct expression plvar =$/;" v typeref:typename:const struct expression file: +plvar lib/intl/plural-exp.c /^static struct expression plvar;$/;" v typeref:struct:expression file: +pmap vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type pmap = __c_anonymous_pmap;$/;" t +pmb lib/readline/rlprivate.h /^ char pmb[MB_LEN_MAX];$/;" m struct:__rl_search_context typeref:typename:char[] +pmb r_readline/src/lib.rs /^ pub pmb: [::std::os::raw::c_char; 16usize],$/;" m struct:__rl_search_context +po builtins/Makefile.in /^po: builtins.c$/;" t +point lib/readline/readline.h /^ int point;$/;" m struct:readline_state typeref:typename:int +point r_readline/src/lib.rs /^ pub point: ::std::os::raw::c_int,$/;" m struct:readline_state +pointer lib/intl/gettextP.h /^ const char *pointer;$/;" m struct:sysdep_string_desc typeref:typename:const char * +pointer lib/malloc/alloca.c /^typedef char *pointer;$/;" t typeref:typename:char * file: +pointer lib/malloc/alloca.c /^typedef void *pointer;$/;" t typeref:typename:void * file: +pointer lib/sh/snprintf.c /^pointer(p, d)$/;" f file: +pointer vendor/libloading/src/os/unix/mod.rs /^ pointer: *mut raw::c_void,$/;" m struct:Symbol +pointer vendor/libloading/src/os/windows/mod.rs /^ pointer: FARPROC,$/;" m struct:Symbol +pointer_to_int general.h /^#define pointer_to_int(/;" d +pointer_to_self builtins_rust/help/src/lib.rs /^ pointer_to_self: *mut Thing,$/;" m struct:Thing +poison_bad vendor/once_cell/src/imp_std.rs /^ fn poison_bad() {$/;" f module:tests +policy_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type policy_t = ::c_int;$/;" t +polite_directory_format builtins_rust/pushd/src/lib.rs /^ fn polite_directory_format(path: *mut c_char) -> *mut c_char;$/;" f +polite_directory_format general.c /^polite_directory_format (name)$/;" f +polite_directory_format r_bash/src/lib.rs /^ pub fn polite_directory_format($/;" f +polite_directory_format r_glob/src/lib.rs /^ pub fn polite_directory_format($/;" f +polite_directory_format r_readline/src/lib.rs /^ pub fn polite_directory_format($/;" f +poll vendor/futures-channel/src/oneshot.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()> {$/;" P implementation:Cancellation +poll vendor/futures-channel/src/oneshot.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Receiver +poll vendor/futures-channel/tests/mpsc-close.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:stress_try_send_as_receiver_closes::TestTask +poll vendor/futures-core/src/task/mod.rs /^mod poll;$/;" n +poll vendor/futures-executor/benches/thread_notify.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:thread_yield_multi_thread::Yield +poll vendor/futures-executor/benches/thread_notify.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:thread_yield_single_thread_many_wait::Yield +poll vendor/futures-executor/benches/thread_notify.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:thread_yield_single_thread_one_wait::Yield +poll vendor/futures-executor/tests/local_pool.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()> {$/;" P implementation:tasks_are_scheduled_fairly::Spin +poll vendor/futures-executor/tests/local_pool.rs /^ fn poll(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<()> {$/;" P implementation:Pending +poll vendor/futures-executor/tests/local_pool.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:SelfWaking +poll vendor/futures-task/src/future_obj.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:FutureObj +poll vendor/futures-task/src/future_obj.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:LocalFutureObj +poll vendor/futures-util/src/abortable.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/async_await/mod.rs /^mod poll;$/;" n +poll vendor/futures-util/src/async_await/pending.rs /^ fn poll(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll {$/;" P implementation:PendingOnce +poll vendor/futures-util/src/async_await/poll.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:PollOnce +poll vendor/futures-util/src/async_await/poll.rs /^macro_rules! poll {$/;" M +poll vendor/futures-util/src/async_await/poll.rs /^pub fn poll(future: F) -> PollOnce {$/;" f +poll vendor/futures-util/src/compat/compat01as03.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> task03::Poll {$/;" P implementation:Compat01As03 +poll vendor/futures-util/src/compat/compat03as01.rs /^ fn poll(&mut self) -> Poll01, Self::Error> {$/;" f +poll vendor/futures-util/src/compat/compat03as01.rs /^ fn poll(&mut self) -> Poll01 {$/;" f +poll vendor/futures-util/src/future/either.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/future/future/catch_unwind.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/future/future/flatten.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/future/future/fuse.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:Fuse +poll vendor/futures-util/src/future/future/map.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/future/future/remote_handle.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:RemoteHandle +poll vendor/futures-util/src/future/future/remote_handle.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()> {$/;" P implementation:Remote +poll vendor/futures-util/src/future/future/shared.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/future/join_all.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/future/lazy.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/future/maybe_done.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:MaybeDone +poll vendor/futures-util/src/future/option.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:OptionFuture +poll vendor/futures-util/src/future/pending.rs /^ fn poll(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll {$/;" P implementation:Pending +poll vendor/futures-util/src/future/poll_fn.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/future/poll_immediate.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll vendor/futures-util/src/future/ready.rs /^ fn poll(mut self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll {$/;" P implementation:Ready +poll vendor/futures-util/src/future/select.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/future/select_all.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:SelectAll +poll vendor/futures-util/src/future/select_ok.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:SelectOk +poll vendor/futures-util/src/future/try_future/into_future.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:IntoFuture +poll vendor/futures-util/src/future/try_future/try_flatten.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/future/try_future/try_flatten_err.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/future/try_join_all.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/future/try_maybe_done.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:TryMaybeDone +poll vendor/futures-util/src/future/try_select.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/io/buf_reader.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/io/close.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:Close +poll vendor/futures-util/src/io/copy.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:Copy +poll vendor/futures-util/src/io/copy_buf.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/io/copy_buf_abortable.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/io/fill_buf.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/io/flush.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/io/read.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:Read +poll vendor/futures-util/src/io/read_exact.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:ReadExact +poll vendor/futures-util/src/io/read_line.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:ReadLine +poll vendor/futures-util/src/io/read_to_end.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/io/read_to_string.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/io/read_until.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:ReadUntil +poll vendor/futures-util/src/io/read_vectored.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:ReadVectored +poll vendor/futures-util/src/io/seek.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:Seek +poll vendor/futures-util/src/io/write.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:Write +poll vendor/futures-util/src/io/write_all.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:WriteAll +poll vendor/futures-util/src/io/write_all_vectored.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:WriteAllVectored +poll vendor/futures-util/src/io/write_vectored.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:WriteVectored +poll vendor/futures-util/src/lock/bilock.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:BiLockAcquire +poll vendor/futures-util/src/lock/mutex.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:MutexLockFuture +poll vendor/futures-util/src/lock/mutex.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:OwnedMutexLockFuture +poll vendor/futures-util/src/sink/close.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:Close +poll vendor/futures-util/src/sink/feed.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:Feed +poll vendor/futures-util/src/sink/flush.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:Flush +poll vendor/futures-util/src/sink/send.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:Send +poll vendor/futures-util/src/sink/send_all.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/sink/with.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll vendor/futures-util/src/stream/futures_ordered.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/stream/all.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/stream/any.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/stream/collect.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/stream/concat.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/stream/count.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:Count +poll vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:PollStreamFut +poll vendor/futures-util/src/stream/stream/fold.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/stream/for_each.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()> {$/;" f +poll vendor/futures-util/src/stream/stream/for_each_concurrent.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<()> {$/;" f +poll vendor/futures-util/src/stream/stream/forward.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/stream/into_future.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:StreamFuture +poll vendor/futures-util/src/stream/stream/next.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:Next +poll vendor/futures-util/src/stream/stream/peek.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/stream/select_next_some.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:SelectNextSome +poll vendor/futures-util/src/stream/stream/unzip.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<(FromA, FromB)> {$/;" f +poll vendor/futures-util/src/stream/try_stream/try_collect.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/try_stream/try_concat.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/try_stream/try_fold.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/try_stream/try_for_each.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/try_stream/try_for_each_concurrent.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" f +poll vendor/futures-util/src/stream/try_stream/try_next.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:TryNext +poll vendor/futures/tests/auto_traits.rs /^ fn poll(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll {$/;" P implementation:PinnedFuture +poll vendor/futures/tests/eager_drop.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:FutureData +poll vendor/futures/tests/future_obj.rs /^ fn poll(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<()> {$/;" P implementation:dropping_drops_the_future::Inc +poll vendor/futures/tests/macro_comma_support.rs /^fn poll() {$/;" f +poll vendor/futures/tests/sink.rs /^ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:StartSendFut +poll vendor/futures/tests/stream_futures_unordered.rs /^ fn poll(mut self: Pin<&mut Self>, _: &mut Context) -> Poll {$/;" P implementation:polled_only_once_at_most_per_iteration::F +poll vendor/futures/tests/stream_futures_unordered.rs /^ fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll {$/;" P implementation:iter_cancel::AtomicCancel +poll vendor/futures/tests_disabled/bilock.rs /^ fn poll(&mut self) -> Poll, ()> {$/;" P implementation:concurrent::Increment +poll vendor/futures/tests_disabled/stream.rs /^ fn poll(&mut self, cx: &mut Context<'_>) -> Poll<(), u32> {$/;" P implementation:peek::Peek +poll vendor/libc/src/fuchsia/mod.rs /^ pub fn poll(fds: *mut pollfd, nfds: nfds_t, timeout: ::c_int) -> ::c_int;$/;" f +poll vendor/libc/src/unix/mod.rs /^ pub fn poll(fds: *mut pollfd, nfds: nfds_t, timeout: ::c_int) -> ::c_int;$/;" f +poll vendor/libc/src/vxworks/mod.rs /^ pub fn poll(fds: *mut pollfd, nfds: nfds_t, timeout: ::c_int) -> ::c_int;$/;" f +poll vendor/libc/src/wasi.rs /^ pub fn poll(fds: *mut pollfd, nfds: nfds_t, timeout: ::c_int) -> ::c_int;$/;" f +poll vendor/nix/src/poll.rs /^pub fn poll(fds: &mut [PollFd], timeout: libc::c_int) -> Result {$/;" f +poll_01_to_03 vendor/futures-util/src/compat/compat01as03.rs /^fn poll_01_to_03(x: Result, E>) -> task03::Poll> {$/;" f +poll_03_to_01 vendor/futures-util/src/compat/compat03as01.rs /^fn poll_03_to_01(x: task03::Poll>) -> Result, E> {$/;" f +poll_03_to_io vendor/futures-util/src/compat/compat03as01.rs /^ fn poll_03_to_io(x: task03::Poll>) -> Result/;" f module:io +poll_aio vendor/nix/test/sys/test_aio.rs /^macro_rules! poll_aio {$/;" M +poll_always_pending vendor/futures/tests/async_await_macros.rs /^ fn poll_always_pending(_cx: &mut Context<'_>) -> Poll {$/;" f function:select_with_default_can_be_used_as_expression +poll_and_pending vendor/futures/tests/async_await_macros.rs /^fn poll_and_pending() {$/;" f +poll_canceled vendor/futures-channel/src/oneshot.rs /^ fn poll_canceled(&self, cx: &mut Context<'_>) -> Poll<()> {$/;" P implementation:Inner +poll_canceled vendor/futures-channel/src/oneshot.rs /^ pub fn poll_canceled(&mut self, cx: &mut Context<'_>) -> Poll<()> {$/;" P implementation:Sender +poll_close vendor/futures-channel/src/mpsc/sink_impl.rs /^ fn poll_close(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll/;" P implementation:Sender +poll_close vendor/futures-channel/src/mpsc/sink_impl.rs /^ fn poll_close(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll/;" P implementation:UnboundedSender +poll_close vendor/futures-channel/src/mpsc/sink_impl.rs /^ fn poll_close(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:UnboundedSender +poll_close vendor/futures-io/src/lib.rs /^ fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f module:if_std +poll_close vendor/futures-io/src/lib.rs /^ fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll>;$/;" P interface:if_std::AsyncWrite +poll_close vendor/futures-sink/src/lib.rs /^ fn poll_close($/;" P implementation:if_alloc::Box +poll_close vendor/futures-sink/src/lib.rs /^ fn poll_close(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll/;" P implementation:if_alloc::Vec +poll_close vendor/futures-sink/src/lib.rs /^ fn poll_close(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll/;" P implementation:if_alloc::VecDeque +poll_close vendor/futures-sink/src/lib.rs /^ fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_close vendor/futures-sink/src/lib.rs /^ fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll>;$/;" P interface:Sink +poll_close vendor/futures-util/src/compat/compat01as03.rs /^ fn poll_close($/;" P implementation:io::Compat01As03 +poll_close vendor/futures-util/src/compat/compat01as03.rs /^ fn poll_close($/;" f +poll_close vendor/futures-util/src/future/either.rs /^ fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f module:if_std +poll_close vendor/futures-util/src/future/either.rs /^ fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_close vendor/futures-util/src/future/future/flatten.rs /^ fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_close vendor/futures-util/src/io/buf_writer.rs /^ fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:BufWriter +poll_close vendor/futures-util/src/io/into_sink.rs /^ fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:LineWriter +poll_close vendor/futures-util/src/io/sink.rs /^ fn poll_close(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:Sink +poll_close vendor/futures-util/src/io/split.rs /^ fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:WriteHalf +poll_close vendor/futures-util/src/io/write_all_vectored.rs /^ fn poll_close(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> {$/;" P implementation:tests::TestWriter +poll_close vendor/futures-util/src/sink/buffer.rs /^ fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, _cx: &mut Context<'_>) -> Poll> /;" P implementation:Drain +poll_close vendor/futures-util/src/sink/fanout.rs /^ fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_close vendor/futures-util/src/sink/map_err.rs /^ fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_close vendor/futures-util/src/sink/with.rs /^ fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> /;" P implementation:SplitSink +poll_close vendor/futures-util/src/stream/try_stream/into_async_read.rs /^ fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_close vendor/futures/tests/auto_traits.rs /^ fn poll_close(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:PinnedSink +poll_close vendor/futures/tests/future_try_flatten_stream.rs /^ fn poll_close(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll/;" P implementation:assert_impls::StreamSink +poll_close vendor/futures/tests/io_buf_writer.rs /^ fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:maybe_pending_buf_writer_seek::MaybePendingSeek +poll_close vendor/futures/tests/io_buf_writer.rs /^ fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:MaybePending +poll_close vendor/futures/tests/io_write.rs /^ fn poll_close(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> {$/;" P implementation:MockWriter +poll_close vendor/futures/tests/sink.rs /^ fn poll_close(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:ManualAllow +poll_close vendor/futures/tests/sink.rs /^ fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:ManualFlush +poll_close vendor/futures/tests/stream_split.rs /^ fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll) -> Poll>$/;" P interface:SinkExt +poll_complete vendor/futures-util/src/compat/compat03as01.rs /^ fn poll_complete(&mut self) -> Poll01<(), Self::SinkError> {$/;" f +poll_count vendor/futures-channel/tests/mpsc-close.rs /^ poll_count: usize,$/;" m struct:stress_try_send_as_receiver_closes::TestRx +poll_fill_buf vendor/futures-io/src/lib.rs /^ fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f module:if_std +poll_fill_buf vendor/futures-io/src/lib.rs /^ fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll>;$/;" P interface:if_std::AsyncBufRead +poll_fill_buf vendor/futures-util/src/future/either.rs /^ fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f module:if_std +poll_fill_buf vendor/futures-util/src/io/allow_std.rs /^ fn poll_fill_buf(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" f +poll_fill_buf vendor/futures-util/src/io/buf_reader.rs /^ fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:BufReader +poll_fill_buf vendor/futures-util/src/io/chain.rs /^ fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_fill_buf vendor/futures-util/src/io/cursor.rs /^ fn poll_fill_buf(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" f +poll_fill_buf vendor/futures-util/src/io/empty.rs /^ fn poll_fill_buf(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:Empty +poll_fill_buf vendor/futures-util/src/io/take.rs /^ fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Take +poll_fill_buf vendor/futures-util/src/stream/try_stream/into_async_read.rs /^ fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_fill_buf vendor/futures/tests/io_buf_reader.rs /^ fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> /;" P implementation:maybe_pending_seek::MaybePendingSeek +poll_fill_buf vendor/futures/tests/io_buf_reader.rs /^ fn poll_fill_buf(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:MaybePending +poll_fill_buf vendor/futures/tests/io_buf_reader.rs /^ fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Cursor +poll_flush vendor/futures-channel/src/mpsc/sink_impl.rs /^ fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, _: &mut Context<'_>) -> Poll> {$/;" P implementation:UnboundedSender +poll_flush vendor/futures-io/src/lib.rs /^ fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f module:if_std +poll_flush vendor/futures-io/src/lib.rs /^ fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll>;$/;" P interface:if_std::AsyncWrite +poll_flush vendor/futures-sink/src/lib.rs /^ fn poll_flush($/;" P implementation:if_alloc::Box +poll_flush vendor/futures-sink/src/lib.rs /^ fn poll_flush(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll/;" P implementation:if_alloc::Vec +poll_flush vendor/futures-sink/src/lib.rs /^ fn poll_flush(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll/;" P implementation:if_alloc::VecDeque +poll_flush vendor/futures-sink/src/lib.rs /^ fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_flush vendor/futures-sink/src/lib.rs /^ fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll>;$/;" P interface:Sink +poll_flush vendor/futures-util/src/compat/compat01as03.rs /^ fn poll_flush($/;" P implementation:io::Compat01As03 +poll_flush vendor/futures-util/src/compat/compat01as03.rs /^ fn poll_flush($/;" f +poll_flush vendor/futures-util/src/future/either.rs /^ fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f module:if_std +poll_flush vendor/futures-util/src/future/either.rs /^ fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_flush vendor/futures-util/src/future/future/flatten.rs /^ fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_flush vendor/futures-util/src/future/try_future/try_flatten.rs /^ fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_flush vendor/futures-util/src/io/allow_std.rs /^ fn poll_flush(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" f +poll_flush vendor/futures-util/src/io/buf_writer.rs /^ fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:BufWriter +poll_flush vendor/futures-util/src/io/into_sink.rs /^ fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:LineWriter +poll_flush vendor/futures-util/src/io/sink.rs /^ fn poll_flush(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:Sink +poll_flush vendor/futures-util/src/io/split.rs /^ fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:WriteHalf +poll_flush vendor/futures-util/src/io/write_all_vectored.rs /^ fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> {$/;" P implementation:tests::TestWriter +poll_flush vendor/futures-util/src/sink/buffer.rs /^ fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, _cx: &mut Context<'_>) -> Poll> /;" P implementation:Drain +poll_flush vendor/futures-util/src/sink/fanout.rs /^ fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_flush vendor/futures-util/src/sink/map_err.rs /^ fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_flush vendor/futures-util/src/sink/with.rs /^ fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> /;" P implementation:SplitSink +poll_flush vendor/futures-util/src/stream/try_stream/into_async_read.rs /^ fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_flush vendor/futures/tests/auto_traits.rs /^ fn poll_flush(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:PinnedSink +poll_flush vendor/futures/tests/future_try_flatten_stream.rs /^ fn poll_flush(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll/;" P implementation:assert_impls::StreamSink +poll_flush vendor/futures/tests/io_buf_writer.rs /^ fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:maybe_pending_buf_writer_seek::MaybePendingSeek +poll_flush vendor/futures/tests/io_buf_writer.rs /^ fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:MaybePending +poll_flush vendor/futures/tests/io_write.rs /^ fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> {$/;" P implementation:MockWriter +poll_flush vendor/futures/tests/sink.rs /^ fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, _: &mut Context<'_>) -> Poll> {$/;" P implementation:ManualAllow +poll_flush vendor/futures/tests/stream_split.rs /^ fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll) -> Poll>$/;" P interface:SinkExt +poll_fn vendor/futures-util/src/future/mod.rs /^mod poll_fn;$/;" n +poll_fn vendor/futures-util/src/future/poll_fn.rs /^pub fn poll_fn(f: F) -> PollFn$/;" f +poll_fn vendor/futures-util/src/stream/mod.rs /^mod poll_fn;$/;" n +poll_fn vendor/futures-util/src/stream/poll_fn.rs /^pub fn poll_fn(f: F) -> PollFn$/;" f +poll_immediate vendor/futures-util/src/future/mod.rs /^mod poll_immediate;$/;" n +poll_immediate vendor/futures-util/src/future/poll_immediate.rs /^pub fn poll_immediate(f: F) -> PollImmediate {$/;" f +poll_immediate vendor/futures-util/src/stream/mod.rs /^mod poll_immediate;$/;" n +poll_immediate vendor/futures-util/src/stream/poll_immediate.rs /^pub fn poll_immediate(s: S) -> PollImmediate {$/;" f +poll_inner vendor/futures-util/src/stream/select_with_strategy.rs /^fn poll_inner($/;" f +poll_lock vendor/futures-util/src/lock/bilock.rs /^ pub fn poll_lock(&self, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:BiLock +poll_lock_and_flush_slot vendor/futures-util/src/stream/stream/split.rs /^ fn poll_lock_and_flush_slot($/;" P implementation:SplitSink +poll_next vendor/fluent-fallback/examples/simple-fallback.rs /^ fn poll_next($/;" P implementation:BundleIter +poll_next vendor/fluent-fallback/src/cache.rs /^ fn poll_next($/;" f +poll_next vendor/fluent-fallback/tests/localization_test.rs /^ fn poll_next($/;" P implementation:BundleIter +poll_next vendor/fluent-resmgr/src/resource_manager.rs /^ fn poll_next($/;" P implementation:BundleIter +poll_next vendor/futures-channel/benches/sync_mpsc.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:TestSender +poll_next vendor/futures-channel/src/mpsc/mod.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Receiver +poll_next vendor/futures-channel/src/mpsc/mod.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:UnboundedReceiver +poll_next vendor/futures-core/src/stream.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll>/;" P implementation:if_alloc::Box +poll_next vendor/futures-core/src/stream.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:if_alloc::AssertUnwindSafe +poll_next vendor/futures-core/src/stream.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:S +poll_next vendor/futures-core/src/stream.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-core/src/stream.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll>;$/;" P interface:Stream +poll_next vendor/futures-util/benches_disabled/bilock.rs /^ fn poll_next(&mut self, cx: &mut Context<'_>) -> Poll, Self::Error> {$/;" P implementation:bench::LockStream +poll_next vendor/futures-util/src/abortable.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/compat/compat01as03.rs /^ fn poll_next($/;" P implementation:Compat01As03 +poll_next vendor/futures-util/src/compat/compat01as03.rs /^ fn poll_next($/;" f +poll_next vendor/futures-util/src/future/either.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/future/future/flatten.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/future/poll_immediate.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/future/try_future/try_flatten.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/io/lines.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Lines +poll_next vendor/futures-util/src/sink/buffer.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/empty.rs /^ fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:Empty +poll_next vendor/futures-util/src/stream/futures_ordered.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:FuturesOrdered +poll_next vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:FuturesUnordered +poll_next vendor/futures-util/src/stream/iter.rs /^ fn poll_next(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/once.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Once +poll_next vendor/futures-util/src/stream/pending.rs /^ fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:Pending +poll_next vendor/futures-util/src/stream/poll_fn.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/poll_immediate.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/repeat.rs /^ fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/repeat_with.rs /^ fn poll_next(mut self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:RepeatWith +poll_next vendor/futures-util/src/stream/select.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/select_all.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:SelectAll +poll_next vendor/futures-util/src/stream/select_with_strategy.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/buffer_unordered.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/buffered.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/catch_unwind.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:CatchUnwind +poll_next vendor/futures-util/src/stream/stream/chain.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/chunks.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Chunks +poll_next vendor/futures-util/src/stream/stream/cycle.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/enumerate.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Enumerate +poll_next vendor/futures-util/src/stream/stream/filter.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/filter_map.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/flatten.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/fuse.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Fuse +poll_next vendor/futures-util/src/stream/stream/map.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/peek.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Peekable +poll_next vendor/futures-util/src/stream/stream/ready_chunks.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:ReadyChunks +poll_next vendor/futures-util/src/stream/stream/scan.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/skip.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Skip +poll_next vendor/futures-util/src/stream/stream/skip_while.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/split.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:SplitStream +poll_next vendor/futures-util/src/stream/stream/take.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/take_until.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/take_while.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/then.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/stream/zip.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/try_stream/and_then.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/try_stream/into_stream.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:IntoStream +poll_next vendor/futures-util/src/stream/try_stream/or_else.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/try_stream/try_buffer_unordered.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/try_stream/try_buffered.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/try_stream/try_chunks.rs /^ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:TryChunks +poll_next vendor/futures-util/src/stream/try_stream/try_filter.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/try_stream/try_filter_map.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/try_stream/try_flatten.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/try_stream/try_skip_while.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/try_stream/try_take_while.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/try_stream/try_unfold.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures-util/src/stream/unfold.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next vendor/futures/tests/auto_traits.rs /^ fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:PinnedStream +poll_next vendor/futures/tests/future_try_flatten_stream.rs /^ fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:assert_impls::StreamSink +poll_next vendor/futures/tests/future_try_flatten_stream.rs /^ fn poll_next(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:failed_future::PanickingStream +poll_next vendor/futures/tests/stream.rs /^ fn poll_next(mut self: Pin<&mut Self>, ctx: &mut Context) -> Poll> {$/;" P implementation:flatten_unordered::DataStream +poll_next vendor/futures/tests/stream.rs /^ fn poll_next(mut self: Pin<&mut Self>, ctx: &mut Context) -> Poll> {$/;" P implementation:flatten_unordered::Interchanger +poll_next vendor/futures/tests/stream.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:SlowStream +poll_next vendor/futures/tests/stream_split.rs /^ fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:test_split::Join +poll_next vendor/futures/tests_disabled/stream.rs /^ fn poll_next(&mut self, _: &mut Context<'_>) -> Poll, E> {$/;" f +poll_next_item vendor/fluent-fallback/src/cache.rs /^ fn poll_next_item(&self, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_next_unpin vendor/futures-util/src/stream/stream/mod.rs /^ fn poll_next_unpin(&mut self, cx: &mut Context<'_>) -> Poll>$/;" P interface:StreamExt +poll_peek vendor/futures-util/src/stream/stream/peek.rs /^ pub fn poll_peek(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Peekable +poll_peek_mut vendor/futures-util/src/stream/stream/peek.rs /^ pub fn poll_peek_mut($/;" P implementation:Peekable +poll_pool vendor/futures-executor/src/local_pool.rs /^ fn poll_pool(&mut self, cx: &mut Context<'_>) -> Poll<()> {$/;" P implementation:LocalPool +poll_read vendor/futures-io/src/lib.rs /^ fn poll_read($/;" P interface:if_std::AsyncRead +poll_read vendor/futures-io/src/lib.rs /^ fn poll_read($/;" f module:if_std +poll_read vendor/futures-util/src/compat/compat01as03.rs /^ fn poll_read($/;" P implementation:io::Compat01As03 +poll_read vendor/futures-util/src/future/either.rs /^ fn poll_read($/;" f module:if_std +poll_read vendor/futures-util/src/io/allow_std.rs /^ fn poll_read($/;" f +poll_read vendor/futures-util/src/io/buf_reader.rs /^ fn poll_read($/;" P implementation:BufReader +poll_read vendor/futures-util/src/io/chain.rs /^ fn poll_read($/;" f +poll_read vendor/futures-util/src/io/cursor.rs /^ fn poll_read($/;" P implementation:Cursor +poll_read vendor/futures-util/src/io/empty.rs /^ fn poll_read($/;" P implementation:Empty +poll_read vendor/futures-util/src/io/repeat.rs /^ fn poll_read($/;" P implementation:Repeat +poll_read vendor/futures-util/src/io/split.rs /^ fn poll_read($/;" P implementation:ReadHalf +poll_read vendor/futures-util/src/io/take.rs /^ fn poll_read($/;" P implementation:Take +poll_read vendor/futures-util/src/stream/try_stream/into_async_read.rs /^ fn poll_read($/;" f +poll_read vendor/futures/tests/io_buf_reader.rs /^ fn poll_read($/;" P implementation:maybe_pending_seek::MaybePendingSeek +poll_read vendor/futures/tests/io_buf_reader.rs /^ fn poll_read($/;" P implementation:Cursor +poll_read vendor/futures/tests/io_buf_reader.rs /^ fn poll_read($/;" P implementation:MaybePending +poll_read vendor/futures/tests/io_read.rs /^ fn poll_read($/;" P implementation:MockReader +poll_read vendor/futures/tests/io_read_to_end.rs /^ fn poll_read($/;" P implementation:issue2310::MyRead +poll_read_vectored vendor/futures-io/src/lib.rs /^ fn poll_read_vectored($/;" P interface:if_std::AsyncRead +poll_read_vectored vendor/futures-io/src/lib.rs /^ fn poll_read_vectored($/;" f module:if_std +poll_read_vectored vendor/futures-util/src/future/either.rs /^ fn poll_read_vectored($/;" f module:if_std +poll_read_vectored vendor/futures-util/src/io/allow_std.rs /^ fn poll_read_vectored($/;" f +poll_read_vectored vendor/futures-util/src/io/buf_reader.rs /^ fn poll_read_vectored($/;" P implementation:BufReader +poll_read_vectored vendor/futures-util/src/io/chain.rs /^ fn poll_read_vectored($/;" f +poll_read_vectored vendor/futures-util/src/io/cursor.rs /^ fn poll_read_vectored($/;" P implementation:Cursor +poll_read_vectored vendor/futures-util/src/io/repeat.rs /^ fn poll_read_vectored($/;" P implementation:Repeat +poll_read_vectored vendor/futures-util/src/io/split.rs /^ fn poll_read_vectored($/;" P implementation:ReadHalf +poll_ready vendor/futures-channel/src/mpsc/mod.rs /^ fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:BoundedSenderInner +poll_ready vendor/futures-channel/src/mpsc/mod.rs /^ pub fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Sender +poll_ready vendor/futures-channel/src/mpsc/mod.rs /^ pub fn poll_ready(&self, _: &mut Context<'_>) -> Poll> {$/;" P implementation:UnboundedSender +poll_ready vendor/futures-channel/src/mpsc/sink_impl.rs /^ fn poll_ready(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:UnboundedSender +poll_ready vendor/futures-sink/src/lib.rs /^ fn poll_ready($/;" P implementation:if_alloc::Box +poll_ready vendor/futures-sink/src/lib.rs /^ fn poll_ready(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll/;" P implementation:if_alloc::Vec +poll_ready vendor/futures-sink/src/lib.rs /^ fn poll_ready(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll/;" P implementation:if_alloc::VecDeque +poll_ready vendor/futures-sink/src/lib.rs /^ fn poll_ready(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_ready vendor/futures-sink/src/lib.rs /^ fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll>;$/;" P interface:Sink +poll_ready vendor/futures-util/src/compat/compat01as03.rs /^ fn poll_ready($/;" f +poll_ready vendor/futures-util/src/future/either.rs /^ fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_ready vendor/futures-util/src/future/future/flatten.rs /^ fn poll_ready(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:IntoSink +poll_ready vendor/futures-util/src/sink/buffer.rs /^ fn poll_ready(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, _cx: &mut Context<'_>) -> Poll> /;" P implementation:Drain +poll_ready vendor/futures-util/src/sink/fanout.rs /^ fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_ready vendor/futures-util/src/sink/map_err.rs /^ fn poll_ready(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_ready vendor/futures-util/src/sink/with.rs /^ fn poll_ready(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll> {$/;" f +poll_ready vendor/futures-util/src/stream/stream/split.rs /^ fn poll_ready(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> /;" P implementation:SplitSink +poll_ready vendor/futures/tests/auto_traits.rs /^ fn poll_ready(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:PinnedSink +poll_ready vendor/futures/tests/future_try_flatten_stream.rs /^ fn poll_ready(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll/;" P implementation:assert_impls::StreamSink +poll_ready vendor/futures/tests/sink.rs /^ fn poll_ready(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll> {$/;" P implementation:ManualFlush +poll_ready vendor/futures/tests/sink.rs /^ fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:ManualAllow +poll_ready vendor/futures/tests/stream_split.rs /^ fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll Poll> {$/;" P implementation:UnboundedSenderInner +poll_ready_unpin vendor/futures-util/src/sink/mod.rs /^ fn poll_ready_unpin(&mut self, cx: &mut Context<'_>) -> Poll>$/;" P interface:SinkExt +poll_seek vendor/futures-io/src/lib.rs /^ fn poll_seek($/;" P interface:if_std::AsyncSeek +poll_seek vendor/futures-io/src/lib.rs /^ fn poll_seek($/;" f module:if_std +poll_seek vendor/futures-util/src/future/either.rs /^ fn poll_seek($/;" f module:if_std +poll_seek vendor/futures-util/src/io/allow_std.rs /^ fn poll_seek($/;" f +poll_seek vendor/futures-util/src/io/buf_reader.rs /^ fn poll_seek($/;" P implementation:BufReader +poll_seek vendor/futures-util/src/io/buf_writer.rs /^ fn poll_seek($/;" P implementation:BufWriter +poll_seek vendor/futures-util/src/io/cursor.rs /^ fn poll_seek($/;" f +poll_seek vendor/futures/tests/io_buf_reader.rs /^ fn poll_seek($/;" P implementation:maybe_pending_seek::MaybePendingSeek +poll_seek vendor/futures/tests/io_buf_reader.rs /^ fn poll_seek($/;" P implementation:Cursor +poll_seek vendor/futures/tests/io_buf_writer.rs /^ fn poll_seek($/;" P implementation:maybe_pending_buf_writer_seek::MaybePendingSeek +poll_seek_relative vendor/futures-util/src/io/buf_reader.rs /^ pub fn poll_seek_relative($/;" P implementation:BufReader +poll_side vendor/futures-util/src/stream/select_with_strategy.rs /^fn poll_side($/;" f +poll_state vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ poll_state: SharedPollState,$/;" m struct:InnerWaker +poll_unparked vendor/futures-channel/src/mpsc/mod.rs /^ fn poll_unparked(&mut self, cx: Option<&mut Context<'_>>) -> Poll<()> {$/;" P implementation:BoundedSenderInner +poll_unpin vendor/futures-util/src/future/future/mod.rs /^ fn poll_unpin(&mut self, cx: &mut Context<'_>) -> Poll$/;" P interface:FutureExt +poll_while_panic vendor/futures/tests/future_shared.rs /^fn poll_while_panic() {$/;" f +poll_write vendor/futures-io/src/lib.rs /^ fn poll_write($/;" P interface:if_std::AsyncWrite +poll_write vendor/futures-io/src/lib.rs /^ fn poll_write($/;" f module:if_std +poll_write vendor/futures-util/src/compat/compat01as03.rs /^ fn poll_write($/;" P implementation:io::Compat01As03 +poll_write vendor/futures-util/src/future/either.rs /^ fn poll_write($/;" f module:if_std +poll_write vendor/futures-util/src/io/allow_std.rs /^ fn poll_write($/;" f +poll_write vendor/futures-util/src/io/buf_writer.rs /^ fn poll_write($/;" P implementation:BufWriter +poll_write vendor/futures-util/src/io/line_writer.rs /^ fn poll_write($/;" P implementation:LineWriter +poll_write vendor/futures-util/src/io/sink.rs /^ fn poll_write($/;" P implementation:Sink +poll_write vendor/futures-util/src/io/split.rs /^ fn poll_write($/;" P implementation:WriteHalf +poll_write vendor/futures-util/src/io/write_all_vectored.rs /^ fn poll_write($/;" P implementation:tests::TestWriter +poll_write vendor/futures-util/src/stream/try_stream/into_async_read.rs /^ fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll>/;" f +poll_write vendor/futures/tests/io_buf_writer.rs /^ fn poll_write($/;" P implementation:maybe_pending_buf_writer_seek::MaybePendingSeek +poll_write vendor/futures/tests/io_buf_writer.rs /^ fn poll_write($/;" P implementation:MaybePending +poll_write vendor/futures/tests/io_write.rs /^ fn poll_write($/;" P implementation:MockWriter +poll_write_vectored vendor/futures-io/src/lib.rs /^ fn poll_write_vectored($/;" P interface:if_std::AsyncWrite +poll_write_vectored vendor/futures-io/src/lib.rs /^ fn poll_write_vectored($/;" f module:if_std +poll_write_vectored vendor/futures-util/src/future/either.rs /^ fn poll_write_vectored($/;" f module:if_std +poll_write_vectored vendor/futures-util/src/io/allow_std.rs /^ fn poll_write_vectored($/;" f +poll_write_vectored vendor/futures-util/src/io/buf_writer.rs /^ fn poll_write_vectored($/;" P implementation:BufWriter +poll_write_vectored vendor/futures-util/src/io/line_writer.rs /^ fn poll_write_vectored($/;" P implementation:LineWriter +poll_write_vectored vendor/futures-util/src/io/sink.rs /^ fn poll_write_vectored($/;" P implementation:Sink +poll_write_vectored vendor/futures-util/src/io/split.rs /^ fn poll_write_vectored($/;" P implementation:WriteHalf +poll_write_vectored vendor/futures-util/src/io/write_all_vectored.rs /^ fn poll_write_vectored($/;" P implementation:tests::TestWriter +polled vendor/futures/tests/stream.rs /^ polled: bool,$/;" m struct:flatten_unordered::DataStream +polled vendor/futures/tests/stream.rs /^ polled: bool,$/;" m struct:flatten_unordered::Interchanger +polled vendor/futures/tests/stream_futures_unordered.rs /^ polled: bool,$/;" m struct:polled_only_once_at_most_per_iteration::F +polled_only_once_at_most_per_iteration vendor/futures/tests/stream_futures_unordered.rs /^fn polled_only_once_at_most_per_iteration() {$/;" f +pollfd vendor/nix/src/poll.rs /^ pollfd: libc::pollfd,$/;" m struct:PollFd +pollts vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn pollts($/;" f +pool vendor/futures-executor/src/local_pool.rs /^ pool: FuturesUnordered>,$/;" m struct:LocalPool +pool_size vendor/futures-executor/src/thread_pool.rs /^ pool_size: usize,$/;" m struct:ThreadPoolBuilder +pool_size vendor/futures-executor/src/thread_pool.rs /^ pub fn pool_size(&mut self, size: usize) -> &mut Self {$/;" P implementation:ThreadPoolBuilder +pop lib/intl/l10nflist.c /^pop (x)$/;" f file: +pop vendor/futures-channel/src/mpsc/queue.rs /^ pub(super) unsafe fn pop(&self) -> PopResult {$/;" P implementation:Queue +pop vendor/proc-macro2/src/rcvec.rs /^ pub fn pop(&mut self) -> Option {$/;" P implementation:RcVecMut +pop vendor/smallvec/benches/bench.rs /^ fn pop(&mut self) -> Option {$/;" P implementation:SmallVec +pop vendor/smallvec/benches/bench.rs /^ fn pop(&mut self) -> Option {$/;" P implementation:Vec +pop vendor/smallvec/benches/bench.rs /^ fn pop(&mut self) -> Option;$/;" P interface:Vector +pop vendor/smallvec/src/lib.rs /^ pub fn pop(&mut self) -> Option {$/;" P implementation:SmallVec +pop vendor/syn/src/punctuated.rs /^ pub fn pop(&mut self) -> Option> {$/;" P implementation:Punctuated +pop_args builtins_rust/source/src/lib.rs /^ fn pop_args();$/;" f +pop_args r_bash/src/lib.rs /^ pub fn pop_args();$/;" f +pop_args variables.c /^pop_args ()$/;" f typeref:typename:void +pop_context r_bash/src/lib.rs /^ pub fn pop_context();$/;" f +pop_context variables.c /^pop_context ()$/;" f typeref:typename:void +pop_dollar_vars builtins_rust/source/src/lib.rs /^ fn pop_dollar_vars();$/;" f +pop_dollar_vars r_bash/src/lib.rs /^ pub fn pop_dollar_vars();$/;" f +pop_dollar_vars variables.c /^pop_dollar_vars ()$/;" f typeref:typename:void +pop_index lib/readline/input.c /^static int pop_index, push_index;$/;" v typeref:typename:int file: +pop_scope r_bash/src/lib.rs /^ pub fn pop_scope(arg1: ::std::os::raw::c_int);$/;" f +pop_scope variables.c /^pop_scope (is_special)$/;" f +pop_spin vendor/futures-channel/src/mpsc/queue.rs /^ pub(super) unsafe fn pop_spin(&self) -> Option {$/;" P implementation:Queue +pop_stream r_bash/src/lib.rs /^ pub fn pop_stream();$/;" f +pop_var_context r_bash/src/lib.rs /^ pub fn pop_var_context();$/;" f +pop_var_context variables.c /^pop_var_context ()$/;" f typeref:typename:void +pop_variadic vendor/syn/src/item.rs /^ fn pop_variadic(args: &mut Punctuated) -> Option {$/;" f module:parsing +popcount vendor/libc/src/solid/mod.rs /^ pub fn popcount(arg1: c_uint) -> c_uint;$/;" f +popcount32 vendor/libc/src/solid/mod.rs /^ pub fn popcount32(arg1: u32) -> c_uint;$/;" f +popcount64 vendor/libc/src/solid/mod.rs /^ pub fn popcount64(arg1: u64) -> c_uint;$/;" f +popcountl vendor/libc/src/solid/mod.rs /^ pub fn popcountl(arg1: c_ulong) -> c_uint;$/;" f +popcountll vendor/libc/src/solid/mod.rs /^ pub fn popcountll(arg1: c_ulonglong) -> c_uint;$/;" f +popen r_bash/src/lib.rs /^ pub fn popen($/;" f +popen r_readline/src/lib.rs /^ pub fn popen($/;" f +popen vendor/libc/src/fuchsia/mod.rs /^ pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE;$/;" f +popen vendor/libc/src/unix/bsd/mod.rs /^ pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE;$/;" f +popen vendor/libc/src/unix/haiku/mod.rs /^ pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE;$/;" f +popen vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE;$/;" f +popen vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE;$/;" f +popen vendor/libc/src/unix/newlib/mod.rs /^ pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE;$/;" f +popen vendor/libc/src/unix/solarish/mod.rs /^ pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE;$/;" f +popen vendor/libc/src/windows/mod.rs /^ pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE;$/;" f +popexp expr.c /^popexp ()$/;" f typeref:typename:void file: +port vendor/nix/src/sys/socket/addr.rs /^ pub fn port(&self) -> u32 {$/;" P implementation:vsock::VsockAddr +port vendor/nix/src/sys/socket/addr.rs /^ pub const fn port(&self) -> u16 {$/;" P implementation:SockaddrIn +port vendor/nix/src/sys/socket/addr.rs /^ pub const fn port(&self) -> u16 {$/;" P implementation:SockaddrIn6 +port_associate vendor/libc/src/unix/solarish/mod.rs /^ pub fn port_associate($/;" f +port_buffer_size vendor/libc/src/unix/haiku/native.rs /^ pub fn port_buffer_size(port: port_id) -> ::ssize_t;$/;" f +port_buffer_size_etc vendor/libc/src/unix/haiku/native.rs /^ pub fn port_buffer_size_etc(port: port_id, flags: u32, timeout: bigtime_t) -> ::ssize_t;$/;" f +port_count vendor/libc/src/unix/haiku/native.rs /^ pub fn port_count(port: port_id) -> ::ssize_t;$/;" f +port_create vendor/libc/src/unix/solarish/mod.rs /^ pub fn port_create() -> ::c_int;$/;" f +port_dissociate vendor/libc/src/unix/solarish/mod.rs /^ pub fn port_dissociate(port: ::c_int, source: ::c_int, object: ::uintptr_t) -> ::c_int;$/;" f +port_get vendor/libc/src/unix/solarish/mod.rs /^ pub fn port_get(port: ::c_int, pe: *mut port_event, timeout: *mut ::timespec) -> ::c_int;$/;" f +port_getn vendor/libc/src/unix/solarish/mod.rs /^ pub fn port_getn($/;" f +port_id vendor/libc/src/unix/haiku/native.rs /^pub type port_id = i32;$/;" t +port_send vendor/libc/src/unix/solarish/mod.rs /^ pub fn port_send(port: ::c_int, events: ::c_int, user: *mut ::c_void) -> ::c_int;$/;" f +port_sendn vendor/libc/src/unix/solarish/mod.rs /^ pub fn port_sendn($/;" f +portabledevice vendor/winapi/src/um/mod.rs /^#[cfg(feature = "portabledevice")] pub mod portabledevice;$/;" n +portabledeviceapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "portabledeviceapi")] pub mod portabledeviceapi;$/;" n +portabledevicetypes vendor/winapi/src/um/mod.rs /^#[cfg(feature = "portabledevicetypes")] pub mod portabledevicetypes;$/;" n +pos test.c /^static int pos; \/* The offset of the current argument in ARGV. *\/$/;" v typeref:typename:int file: +pos vendor/fluent-syntax/src/parser/errors.rs /^ pub pos: Range,$/;" m struct:ParserError +pos vendor/futures-util/src/io/seek.rs /^ pos: SeekFrom,$/;" m struct:Seek +pos vendor/futures/tests/io_buf_reader.rs /^ pos: u64,$/;" m struct:test_buffered_reader_seek_underflow::PositionReader +pos vendor/memchr/src/memmem/mod.rs /^ pos: Option,$/;" m struct:FindRevIter +pos vendor/memchr/src/memmem/mod.rs /^ pos: usize,$/;" m struct:FindIter +pos vendor/memchr/src/memmem/twoway.rs /^ pos: usize,$/;" m struct:Suffix +pos vendor/thiserror/tests/test_error.rs /^ pos: usize,$/;" m struct:BracedError +pos_params subst.c /^pos_params (string, start, end, quoted, pflags)$/;" f file: +pos_params_assignment subst.c /^pos_params_assignment (list, itype, quoted)$/;" f file: +pos_params_modcase subst.c /^pos_params_modcase (string, pat, modop, mflags)$/;" f file: +pos_params_pat_subst subst.c /^pos_params_pat_subst (string, pat, rep, mflags)$/;" f file: +position vendor/futures-util/src/io/cursor.rs /^ pub fn position(&self) -> u64 {$/;" P implementation:Cursor +position vendor/memchr/src/memchr/iter.rs /^ position: usize,$/;" m struct:Memchr +position vendor/memchr/src/memchr/iter.rs /^ position: usize,$/;" m struct:Memchr2 +position vendor/memchr/src/memchr/iter.rs /^ position: usize,$/;" m struct:Memchr3 +positional vendor/fluent-syntax/src/ast/mod.rs /^ pub positional: Vec>,$/;" m struct:CallArguments +positional_arg vendor/async-trait/src/expand.rs /^fn positional_arg(i: usize, pat: &Pat) -> Ident {$/;" f +positions vendor/memchr/src/tests/memchr/testdata.rs /^ fn positions(&self, align: usize, reverse: bool) -> Vec {$/;" P implementation:MemchrTest +positions vendor/memchr/src/tests/memchr/testdata.rs /^ positions: &'static [usize],$/;" m struct:MemchrTestStatic +positions vendor/memchr/src/tests/memchr/testdata.rs /^ positions: Vec,$/;" m struct:MemchrTest +positions1 vendor/memchr/src/tests/memchr/iter.rs /^fn positions1<'a>($/;" f +positions2 vendor/memchr/src/tests/memchr/iter.rs /^fn positions2<'a>($/;" f +positions3 vendor/memchr/src/tests/memchr/iter.rs /^fn positions3<'a>($/;" f +positive_sign r_bash/src/lib.rs /^ pub positive_sign: *mut ::std::os::raw::c_char,$/;" m struct:lconv +posix vendor/libloading/src/os/unix/consts.rs /^mod posix {$/;" n +posix_builtins builtins/mkbuiltins.c /^char *posix_builtins[] =$/;" v typeref:typename:char * [] +posix_cclass_only lib/glob/smatch.c /^posix_cclass_only (pattern)$/;" f file: +posix_edit_macros bashline.c /^posix_edit_macros (count, key)$/;" f file: +posix_fadvise r_bash/src/lib.rs /^ pub fn posix_fadvise($/;" f +posix_fadvise vendor/libc/src/fuchsia/mod.rs /^ pub fn posix_fadvise(fd: ::c_int, offset: ::off_t, len: ::off_t, advise: ::c_int) -> ::c_int/;" f +posix_fadvise vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn posix_fadvise(fd: ::c_int, offset: ::off_t, len: ::off_t, advise: ::c_int) -> ::c_int/;" f +posix_fadvise vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_fadvise(fd: ::c_int, offset: ::off_t, len: ::off_t, advice: ::c_int) -> ::c_int/;" f +posix_fadvise vendor/libc/src/unix/linux_like/mod.rs /^ pub fn posix_fadvise(fd: ::c_int, offset: ::off_t, len: ::off_t, advise: ::c_int) -> ::c_int/;" f +posix_fadvise vendor/libc/src/wasi.rs /^ pub fn posix_fadvise(fd: ::c_int, offset: ::off_t, len: ::off_t, advise: ::c_int) -> ::c_int/;" f +posix_fadvise64 r_bash/src/lib.rs /^ pub fn posix_fadvise64($/;" f +posix_fadvise64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn posix_fadvise64($/;" f +posix_fallocate r_bash/src/lib.rs /^ pub fn posix_fallocate($/;" f +posix_fallocate vendor/libc/src/fuchsia/mod.rs /^ pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;$/;" f +posix_fallocate vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;$/;" f +posix_fallocate vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;$/;" f +posix_fallocate vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;$/;" f +posix_fallocate vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;$/;" f +posix_fallocate vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;$/;" f +posix_fallocate vendor/libc/src/wasi.rs /^ pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;$/;" f +posix_fallocate64 r_bash/src/lib.rs /^ pub fn posix_fallocate64($/;" f +posix_fallocate64 vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn posix_fallocate64(fd: ::c_int, offset: ::off64_t, len: ::off64_t) -> ::c_int;$/;" f +posix_fallocate64 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_fallocate64(fd: ::c_int, offset: ::off64_t, len: ::off64_t) -> ::c_int;$/;" f +posix_initialize general.c /^posix_initialize (on)$/;" f +posix_initialize r_bash/src/lib.rs /^ pub fn posix_initialize(arg1: ::std::os::raw::c_int);$/;" f +posix_initialize r_glob/src/lib.rs /^ pub fn posix_initialize(arg1: ::std::os::raw::c_int);$/;" f +posix_initialize r_readline/src/lib.rs /^ pub fn posix_initialize(arg1: ::std::os::raw::c_int);$/;" f +posix_madvise vendor/libc/src/fuchsia/mod.rs /^ pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +posix_madvise vendor/libc/src/unix/bsd/mod.rs /^ pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +posix_madvise vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +posix_madvise vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +posix_madvise vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +posix_madvise vendor/libc/src/unix/solarish/mod.rs /^ pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int) -> ::c_int;$/;" f +posix_memalign lib/malloc/malloc.c /^posix_memalign (memptr, alignment, size)$/;" f +posix_memalign r_bash/src/lib.rs /^ pub fn posix_memalign($/;" f +posix_memalign r_glob/src/lib.rs /^ pub fn posix_memalign($/;" f +posix_memalign r_readline/src/lib.rs /^ pub fn posix_memalign($/;" f +posix_memalign vendor/libc/src/fuchsia/mod.rs /^ pub fn posix_memalign(memptr: *mut *mut ::c_void, align: ::size_t, size: ::size_t) -> ::c_in/;" f +posix_memalign vendor/libc/src/unix/mod.rs /^ pub fn posix_memalign(memptr: *mut *mut ::c_void, align: ::size_t, size: ::size_t) -> ::c_in/;" f +posix_memalign vendor/libc/src/vxworks/mod.rs /^pub fn posix_memalign(memptr: *mut *mut ::c_void, align: ::size_t, size: ::size_t) -> ::c_int {$/;" f +posix_memalign vendor/libc/src/wasi.rs /^ pub fn posix_memalign(a: *mut *mut c_void, b: size_t, c: size_t) -> c_int;$/;" f +posix_mode_var general.c /^ int *posix_mode_var;$/;" m struct:__anon0d8c0d340108 typeref:typename:int * file: +posix_openpt r_bash/src/lib.rs /^ pub fn posix_openpt(__oflag: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +posix_openpt r_glob/src/lib.rs /^ pub fn posix_openpt(__oflag: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +posix_openpt r_readline/src/lib.rs /^ pub fn posix_openpt(__oflag: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +posix_openpt vendor/libc/src/fuchsia/mod.rs /^ pub fn posix_openpt(flags: ::c_int) -> ::c_int;$/;" f +posix_openpt vendor/libc/src/unix/mod.rs /^ pub fn posix_openpt(flags: ::c_int) -> ::c_int;$/;" f +posix_openpt vendor/nix/src/pty.rs /^pub fn posix_openpt(flags: fcntl::OFlag) -> Result {$/;" f +posix_readline_initialize bashline.c /^posix_readline_initialize (on_or_off)$/;" f +posix_readline_initialize r_bash/src/lib.rs /^ pub fn posix_readline_initialize(arg1: ::std::os::raw::c_int);$/;" f +posix_spawn vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawn($/;" f +posix_spawn vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawn($/;" f +posix_spawn vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawn($/;" f +posix_spawn vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawn($/;" f +posix_spawn vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawn($/;" f +posix_spawn_file_actions_addclose vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawn_file_actions_addclose($/;" f +posix_spawn_file_actions_addclose vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawn_file_actions_addclose($/;" f +posix_spawn_file_actions_addclose vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawn_file_actions_addclose($/;" f +posix_spawn_file_actions_addclose vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawn_file_actions_addclose($/;" f +posix_spawn_file_actions_addclose vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawn_file_actions_addclose($/;" f +posix_spawn_file_actions_adddup2 vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawn_file_actions_adddup2($/;" f +posix_spawn_file_actions_adddup2 vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawn_file_actions_adddup2($/;" f +posix_spawn_file_actions_adddup2 vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawn_file_actions_adddup2($/;" f +posix_spawn_file_actions_adddup2 vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawn_file_actions_adddup2($/;" f +posix_spawn_file_actions_adddup2 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawn_file_actions_adddup2($/;" f +posix_spawn_file_actions_addopen vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawn_file_actions_addopen($/;" f +posix_spawn_file_actions_addopen vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawn_file_actions_addopen($/;" f +posix_spawn_file_actions_addopen vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawn_file_actions_addopen($/;" f +posix_spawn_file_actions_addopen vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawn_file_actions_addopen($/;" f +posix_spawn_file_actions_addopen vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawn_file_actions_addopen($/;" f +posix_spawn_file_actions_destroy vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawn_file_actions_destroy(actions: *mut posix_spawn_file_actions_t) -> ::c_int/;" f +posix_spawn_file_actions_destroy vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawn_file_actions_destroy(actions: *mut posix_spawn_file_actions_t) -> ::c_int/;" f +posix_spawn_file_actions_destroy vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawn_file_actions_destroy(actions: *mut posix_spawn_file_actions_t) -> ::c_int/;" f +posix_spawn_file_actions_destroy vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawn_file_actions_destroy($/;" f +posix_spawn_file_actions_destroy vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawn_file_actions_destroy(actions: *mut posix_spawn_file_actions_t) -> ::c_int/;" f +posix_spawn_file_actions_init vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawn_file_actions_init(actions: *mut posix_spawn_file_actions_t) -> ::c_int;$/;" f +posix_spawn_file_actions_init vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawn_file_actions_init(actions: *mut posix_spawn_file_actions_t) -> ::c_int;$/;" f +posix_spawn_file_actions_init vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawn_file_actions_init(actions: *mut posix_spawn_file_actions_t) -> ::c_int;$/;" f +posix_spawn_file_actions_init vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawn_file_actions_init(file_actions: *mut posix_spawn_file_actions_t) -> ::c_i/;" f +posix_spawn_file_actions_init vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawn_file_actions_init(actions: *mut posix_spawn_file_actions_t) -> ::c_int;$/;" f +posix_spawn_file_actions_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type posix_spawn_file_actions_t = *mut ::c_void;$/;" t +posix_spawn_file_actions_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type posix_spawn_file_actions_t = *mut ::c_void;$/;" t +posix_spawn_file_actions_t vendor/libc/src/unix/haiku/mod.rs /^pub type posix_spawn_file_actions_t = *mut ::c_void;$/;" t +posix_spawnattr_destroy vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnattr_destroy(attr: *mut posix_spawnattr_t) -> ::c_int;$/;" f +posix_spawnattr_destroy vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_destroy(attr: *mut posix_spawnattr_t) -> ::c_int;$/;" f +posix_spawnattr_destroy vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_destroy(attr: *mut posix_spawnattr_t) -> ::c_int;$/;" f +posix_spawnattr_destroy vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawnattr_destroy(attr: *mut posix_spawnattr_t) -> ::c_int;$/;" f +posix_spawnattr_destroy vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_destroy(attr: *mut posix_spawnattr_t) -> ::c_int;$/;" f +posix_spawnattr_getarchpref_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnattr_getarchpref_np($/;" f +posix_spawnattr_getflags vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnattr_getflags($/;" f +posix_spawnattr_getflags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_getflags($/;" f +posix_spawnattr_getflags vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_getflags($/;" f +posix_spawnattr_getflags vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawnattr_getflags($/;" f +posix_spawnattr_getflags vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_getflags($/;" f +posix_spawnattr_getpgroup vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnattr_getpgroup($/;" f +posix_spawnattr_getpgroup vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_getpgroup($/;" f +posix_spawnattr_getpgroup vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_getpgroup($/;" f +posix_spawnattr_getpgroup vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawnattr_getpgroup($/;" f +posix_spawnattr_getpgroup vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_getpgroup($/;" f +posix_spawnattr_getschedparam vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_getschedparam($/;" f +posix_spawnattr_getschedparam vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_getschedparam($/;" f +posix_spawnattr_getschedparam vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_getschedparam($/;" f +posix_spawnattr_getschedpolicy vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_getschedpolicy($/;" f +posix_spawnattr_getschedpolicy vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_getschedpolicy($/;" f +posix_spawnattr_getschedpolicy vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_getschedpolicy($/;" f +posix_spawnattr_getsigdefault vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnattr_getsigdefault($/;" f +posix_spawnattr_getsigdefault vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_getsigdefault($/;" f +posix_spawnattr_getsigdefault vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_getsigdefault($/;" f +posix_spawnattr_getsigdefault vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawnattr_getsigdefault($/;" f +posix_spawnattr_getsigdefault vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_getsigdefault($/;" f +posix_spawnattr_getsigmask vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnattr_getsigmask($/;" f +posix_spawnattr_getsigmask vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_getsigmask($/;" f +posix_spawnattr_getsigmask vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_getsigmask($/;" f +posix_spawnattr_getsigmask vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawnattr_getsigmask($/;" f +posix_spawnattr_getsigmask vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_getsigmask($/;" f +posix_spawnattr_init vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnattr_init(attr: *mut posix_spawnattr_t) -> ::c_int;$/;" f +posix_spawnattr_init vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_init(attr: *mut posix_spawnattr_t) -> ::c_int;$/;" f +posix_spawnattr_init vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_init(attr: *mut posix_spawnattr_t) -> ::c_int;$/;" f +posix_spawnattr_init vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawnattr_init(attr: *mut posix_spawnattr_t) -> ::c_int;$/;" f +posix_spawnattr_init vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_init(attr: *mut posix_spawnattr_t) -> ::c_int;$/;" f +posix_spawnattr_setarchpref_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnattr_setarchpref_np($/;" f +posix_spawnattr_setflags vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnattr_setflags(attr: *mut posix_spawnattr_t, flags: ::c_short) -> ::c_int;$/;" f +posix_spawnattr_setflags vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_setflags(attr: *mut posix_spawnattr_t, flags: ::c_short) -> ::c_int;$/;" f +posix_spawnattr_setflags vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_setflags(attr: *mut posix_spawnattr_t, flags: ::c_short) -> ::c_int;$/;" f +posix_spawnattr_setflags vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawnattr_setflags(attr: *mut posix_spawnattr_t, flags: ::c_short) -> ::c_int;$/;" f +posix_spawnattr_setflags vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_setflags(attr: *mut posix_spawnattr_t, flags: ::c_short) -> ::c_int;$/;" f +posix_spawnattr_setpgroup vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnattr_setpgroup(attr: *mut posix_spawnattr_t, flags: ::pid_t) -> ::c_int;$/;" f +posix_spawnattr_setpgroup vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_setpgroup(attr: *mut posix_spawnattr_t, flags: ::pid_t) -> ::c_int;$/;" f +posix_spawnattr_setpgroup vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_setpgroup(attr: *mut posix_spawnattr_t, flags: ::pid_t) -> ::c_int;$/;" f +posix_spawnattr_setpgroup vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawnattr_setpgroup(attr: *mut posix_spawnattr_t, pgroup: ::pid_t) -> ::c_int;$/;" f +posix_spawnattr_setpgroup vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_setpgroup(attr: *mut posix_spawnattr_t, flags: ::pid_t) -> ::c_int;$/;" f +posix_spawnattr_setschedparam vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_setschedparam($/;" f +posix_spawnattr_setschedparam vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_setschedparam($/;" f +posix_spawnattr_setschedparam vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_setschedparam($/;" f +posix_spawnattr_setschedpolicy vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_setschedpolicy(attr: *mut posix_spawnattr_t, flags: ::c_int) -> ::c_i/;" f +posix_spawnattr_setschedpolicy vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_setschedpolicy(attr: *mut posix_spawnattr_t, flags: ::c_int) -> ::c_i/;" f +posix_spawnattr_setschedpolicy vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_setschedpolicy(attr: *mut posix_spawnattr_t, flags: ::c_int) -> ::c_i/;" f +posix_spawnattr_setsigdefault vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnattr_setsigdefault($/;" f +posix_spawnattr_setsigdefault vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_setsigdefault($/;" f +posix_spawnattr_setsigdefault vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_setsigdefault($/;" f +posix_spawnattr_setsigdefault vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawnattr_setsigdefault($/;" f +posix_spawnattr_setsigdefault vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_setsigdefault($/;" f +posix_spawnattr_setsigmask vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnattr_setsigmask($/;" f +posix_spawnattr_setsigmask vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnattr_setsigmask($/;" f +posix_spawnattr_setsigmask vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnattr_setsigmask($/;" f +posix_spawnattr_setsigmask vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawnattr_setsigmask($/;" f +posix_spawnattr_setsigmask vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnattr_setsigmask($/;" f +posix_spawnattr_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type posix_spawnattr_t = *mut ::c_void;$/;" t +posix_spawnattr_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type posix_spawnattr_t = *mut ::c_void;$/;" t +posix_spawnattr_t vendor/libc/src/unix/haiku/mod.rs /^pub type posix_spawnattr_t = *mut ::c_void;$/;" t +posix_spawnp vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn posix_spawnp($/;" f +posix_spawnp vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn posix_spawnp($/;" f +posix_spawnp vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn posix_spawnp($/;" f +posix_spawnp vendor/libc/src/unix/haiku/mod.rs /^ pub fn posix_spawnp($/;" f +posix_spawnp vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn posix_spawnp($/;" f +posix_vars general.c /^} posix_vars[] = $/;" v typeref:struct:__anon0d8c0d340108[] +posixly_correct builtins_rust/alias/src/lib.rs /^ static mut posixly_correct: libc::c_int;$/;" v +posixly_correct builtins_rust/break_1/src/lib.rs /^ pub static posixly_correct: i32;$/;" v +posixly_correct builtins_rust/cd/src/lib.rs /^ static posixly_correct: i32;$/;" v +posixly_correct builtins_rust/common/src/lib.rs /^ static posixly_correct: i32;$/;" v +posixly_correct builtins_rust/complete/src/lib.rs /^ static mut posixly_correct: i32;$/;" v +posixly_correct builtins_rust/declare/src/lib.rs /^ static mut posixly_correct: i32;$/;" v +posixly_correct builtins_rust/fc/src/lib.rs /^ static mut posixly_correct: i32;$/;" v +posixly_correct builtins_rust/hash/src/lib.rs /^ static posixly_correct: i32;$/;" v +posixly_correct builtins_rust/kill/src/intercdep.rs /^ pub static posixly_correct: c_int;$/;" v +posixly_correct builtins_rust/read/src/intercdep.rs /^ pub static posixly_correct: c_int;$/;" v +posixly_correct builtins_rust/set/src/lib.rs /^ static mut posixly_correct: i32;$/;" v +posixly_correct builtins_rust/setattr/src/intercdep.rs /^ pub static mut posixly_correct: c_int;$/;" v +posixly_correct builtins_rust/source/src/lib.rs /^ static mut posixly_correct: i32;$/;" v +posixly_correct builtins_rust/trap/src/intercdep.rs /^ pub static posixly_correct: c_int;$/;" v +posixly_correct builtins_rust/type/src/lib.rs /^ static posixly_correct: i32;$/;" v +posixly_correct builtins_rust/ulimit/src/lib.rs /^ static mut posixly_correct: i32;$/;" v +posixly_correct builtins_rust/wait/src/lib.rs /^ static posixly_correct: i32;$/;" v +posixly_correct r_bash/src/lib.rs /^ pub static mut posixly_correct: ::std::os::raw::c_int;$/;" v +posixly_correct r_jobs/src/lib.rs /^ static mut posixly_correct:c_int;$/;" v +posixly_correct r_print_cmd/src/lib.rs /^ static posixly_correct:c_int;$/;" v +posixly_correct shell.c /^int posixly_correct = 0; \/* Non-zero means posix.2 superset. *\/$/;" v typeref:typename:int +posixly_correct shell.c /^int posixly_correct = 1; \/* Non-zero means posix.2 superset. *\/$/;" v typeref:typename:int +posixtest test.c /^posixtest ()$/;" f typeref:typename:int file: +posparam_count builtins_rust/common/src/lib.rs /^ static mut posparam_count: i32;$/;" v +posparam_count r_bash/src/lib.rs /^ pub static mut posparam_count: ::std::os::raw::c_int;$/;" v +posparam_count variables.c /^int posparam_count = 0;$/;" v typeref:typename:int +postproc_subst_rhs lib/readline/histexpand.c /^postproc_subst_rhs (void)$/;" f typeref:typename:void file: +postprocess_matches lib/readline/complete.c /^postprocess_matches (char ***matchesp, int matching_filenames)$/;" f typeref:typename:int file: +pounded_var_names vendor/quote/src/lib.rs /^macro_rules! pounded_var_names {$/;" M +pounded_var_names_with_context vendor/quote/src/lib.rs /^macro_rules! pounded_var_names_with_context {$/;" M +pounded_var_with_context vendor/quote/src/lib.rs /^macro_rules! pounded_var_with_context {$/;" M +pow vendor/stdext/src/num/integer.rs /^ fn pow(self, exp: u32) -> Self;$/;" P interface:Integer +pow_10 lib/sh/snprintf.c /^pow_10(n)$/;" f file: +powerbase vendor/winapi/src/um/mod.rs /^#[cfg(feature = "powerbase")] pub mod powerbase;$/;" n +powerof2 lib/malloc/malloc.c /^#define powerof2(/;" d file: +powersetting vendor/winapi/src/um/mod.rs /^#[cfg(feature = "powersetting")] pub mod powersetting;$/;" n +powrprof vendor/winapi/src/um/mod.rs /^#[cfg(feature = "powrprof")] pub mod powrprof;$/;" n +ppoll vendor/libc/src/fuchsia/mod.rs /^ pub fn ppoll($/;" f +ppoll vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn ppoll($/;" f +ppoll vendor/libc/src/unix/haiku/mod.rs /^ pub fn ppoll($/;" f +ppoll vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn ppoll($/;" f +ppoll vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn ppoll($/;" f +ppsfreq r_bash/src/lib.rs /^ pub ppsfreq: __syscall_slong_t,$/;" m struct:timex +ppsfreq r_readline/src/lib.rs /^ pub ppsfreq: __syscall_slong_t,$/;" m struct:timex +prctl vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn prctl(option: ::c_int, ...) -> ::c_int;$/;" f +prctl vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn prctl(option: ::c_int, ...) -> ::c_int;$/;" f +pre_init vendor/lazy_static/tests/test.rs /^fn pre_init() {$/;" f +pre_process_line bashhist.c /^pre_process_line (line, print_changes, addit)$/;" f +pre_process_line r_bash/src/lib.rs /^ pub fn pre_process_line($/;" f +pre_process_line r_bashhist/src/lib.rs /^pub unsafe extern "C" fn pre_process_line(mut line: *mut c_char, mut print_changes: c_int, mut a/;" f +pread r_bash/src/lib.rs /^ pub fn pread($/;" f +pread r_glob/src/lib.rs /^ pub fn pread($/;" f +pread r_readline/src/lib.rs /^ pub fn pread($/;" f +pread vendor/libc/src/fuchsia/mod.rs /^ pub fn pread(fd: ::c_int, buf: *mut ::c_void, count: ::size_t, offset: off_t) -> ::ssize_t;$/;" f +pread vendor/libc/src/unix/mod.rs /^ pub fn pread(fd: ::c_int, buf: *mut ::c_void, count: ::size_t, offset: off_t) -> ::ssize_t;$/;" f +pread vendor/libc/src/vxworks/mod.rs /^pub fn pread(_fd: ::c_int, _buf: *mut ::c_void, _count: ::size_t, _offset: off64_t) -> ::ssize_t/;" f +pread vendor/libc/src/wasi.rs /^ pub fn pread(fd: ::c_int, buf: *mut ::c_void, count: ::size_t, offset: off_t) -> ::ssize_t;$/;" f +pread vendor/nix/src/sys/uio.rs /^pub fn pread(fd: RawFd, buf: &mut [u8], offset: off_t) -> Result{$/;" f +pread64 r_bash/src/lib.rs /^ pub fn pread64($/;" f +pread64 r_glob/src/lib.rs /^ pub fn pread64($/;" f +pread64 r_readline/src/lib.rs /^ pub fn pread64($/;" f +pread64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn pread64(fd: ::c_int, buf: *mut ::c_void, count: ::size_t, offset: off64_t) -> ::ssize/;" f +preadv vendor/libc/src/fuchsia/mod.rs /^ pub fn preadv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t) -> ::ssize/;" f +preadv vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn preadv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t) -> ::ssize/;" f +preadv vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn preadv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t) -> ::ssize/;" f +preadv vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn preadv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t) -> ::ssize/;" f +preadv vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn preadv(fd: ::c_int, iov: *const ::iovec, count: ::c_int, offset: ::off_t) -> ::ssize_/;" f +preadv vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn preadv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t) -> ::ssize/;" f +preadv vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn preadv($/;" f +preadv vendor/libc/src/unix/solarish/illumos.rs /^ pub fn preadv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t) -> ::ssize/;" f +preadv vendor/libc/src/wasi.rs /^ pub fn preadv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t) -> ::ssize/;" f +preadv vendor/nix/src/sys/uio.rs /^pub fn preadv(fd: RawFd, iov: &mut [IoSliceMut<'_>],$/;" f +preadv2 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn preadv2($/;" f +preadv64v2 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn preadv64v2($/;" f +preamble mksyntax.c /^char preamble[] = "\\$/;" v typeref:typename:char[] +preamble vendor/memchr/scripts/make-byte-frequency-table /^preamble = '''$/;" v +precision lib/sh/snprintf.c /^ int width, precision;$/;" m struct:DATA typeref:typename:int file: +precision r_bash/src/lib.rs /^ pub precision: __syscall_slong_t,$/;" m struct:timex +precision r_readline/src/lib.rs /^ pub precision: __syscall_slong_t,$/;" m struct:timex +precs execute_cmd.c /^static const int precs[] = { 0, 100, 10, 1 };$/;" v typeref:typename:const int[] file: +prefetch vendor/fluent-fallback/src/cache.rs /^ pub async fn prefetch(&self) {$/;" f +prefetch vendor/fluent-fallback/src/cache.rs /^ pub fn prefetch(&self) {$/;" f +prefetch_async vendor/fluent-fallback/src/bundles.rs /^ pub async fn prefetch_async(&self) {$/;" f +prefetch_async vendor/fluent-fallback/src/generator.rs /^ async fn prefetch_async(&mut self) {}$/;" P interface:BundleStream +prefetch_async vendor/fluent-fallback/src/localization.rs /^ pub async fn prefetch_async(&mut self) {$/;" f +prefetch_sync vendor/fluent-fallback/src/bundles.rs /^ pub fn prefetch_sync(&self) {$/;" f +prefetch_sync vendor/fluent-fallback/src/generator.rs /^ fn prefetch_sync(&mut self) {}$/;" P interface:BundleIterator +prefetch_sync vendor/fluent-fallback/src/localization.rs /^ pub fn prefetch_sync(&mut self) {$/;" f +prefilter vendor/memchr/src/memmem/mod.rs /^ prefilter: Prefilter,$/;" m struct:SearcherConfig +prefilter vendor/memchr/src/memmem/mod.rs /^ pub fn prefilter(&mut self, prefilter: Prefilter) -> &mut FinderBuilder {$/;" P implementation:FinderBuilder +prefilter vendor/memchr/src/memmem/mod.rs /^mod prefilter;$/;" n +prefilter_permutations vendor/memchr/src/memmem/prefilter/fallback.rs /^ fn prefilter_permutations() {$/;" f module:tests +prefilter_permutations vendor/memchr/src/memmem/prefilter/wasm.rs /^ fn prefilter_permutations() {$/;" f module:tests +prefilter_permutations vendor/memchr/src/memmem/prefilter/x86/avx.rs /^ fn prefilter_permutations() {$/;" f module:tests +prefilter_permutations vendor/memchr/src/memmem/prefilter/x86/sse.rs /^ fn prefilter_permutations() {$/;" f module:tests +prefilter_permutations vendor/memchr/src/memmem/wasm.rs /^ fn prefilter_permutations() {$/;" f module:tests +prefilter_permutations vendor/memchr/src/memmem/x86/avx.rs /^ fn prefilter_permutations() {$/;" f module:tests +prefilter_permutations vendor/memchr/src/memmem/x86/sse.rs /^ fn prefilter_permutations() {$/;" f module:tests +prefilter_state vendor/memchr/src/memmem/mod.rs /^ fn prefilter_state(&self) -> PrefilterState {$/;" P implementation:Searcher +prefix Makefile.in /^prefix = @prefix@$/;" m +prefix builtins/Makefile.in /^prefix = @prefix@$/;" m +prefix builtins_rust/complete/src/lib.rs /^ prefix: *mut c_char,$/;" m struct:COMPSPEC +prefix lib/intl/Makefile.in /^prefix = @prefix@$/;" m +prefix pcomplete.h /^ char *prefix;$/;" m struct:compspec typeref:typename:char * +prefix r_bash/src/lib.rs /^ pub prefix: *mut ::std::os::raw::c_char,$/;" m struct:compspec +prefix_is_substring vendor/memchr/src/memmem/mod.rs /^ pub(crate) fn prefix_is_substring($/;" f module:proptests +prefn vendor/memchr/src/memmem/mod.rs /^ prefn: Option,$/;" m struct:Searcher +prefn vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) prefn: PrefilterFn,$/;" m struct:Pre +prelude vendor/futures/src/lib.rs /^pub mod prelude {$/;" n +prelude vendor/stdext/src/lib.rs /^pub mod prelude {$/;" n +prepare_stderr_files vendor/bitflags/tests/compile.rs /^fn prepare_stderr_files(path: impl AsRef) -> io::Result<()> {$/;" f +prepare_terminal_settings lib/readline/rltty.c /^prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop)$/;" f typeref:typename:void file: +prepend_underscore_to_self vendor/async-trait/src/receiver.rs /^ fn prepend_underscore_to_self(&self, ident: &mut Ident) -> bool {$/;" P implementation:ReplaceSelf +preproc_filterpat pcomplete.c /^preproc_filterpat (pat, text)$/;" f file: +prestate vendor/memchr/src/memmem/mod.rs /^ prestate: PrefilterState,$/;" m struct:FindIter +pretty_date support/texi2html /^sub pretty_date {$/;" s +pretty_print_job jobs.c /^pretty_print_job (job_index, format, stream)$/;" f file: +pretty_print_job r_jobs/src/lib.rs /^unsafe extern "C" fn pretty_print_job($/;" f +pretty_print_loop eval.c /^pretty_print_loop ()$/;" f typeref:typename:int +pretty_print_loop r_bash/src/lib.rs /^ pub fn pretty_print_loop() -> ::std::os::raw::c_int;$/;" f +pretty_print_mode shell.c /^int pretty_print_mode = 0; \/* pretty-print a shell script *\/$/;" v typeref:typename:int +prev array.h /^ struct array_element *next, *prev;$/;" m struct:array_element typeref:struct:array_element * +prev builtins_rust/mapfile/src/intercdep.rs /^ pub prev: *mut array_element,$/;" m struct:array_element +prev builtins_rust/read/src/intercdep.rs /^ pub prev: *mut array_element,$/;" m struct:array_element +prev r_bash/src/lib.rs /^ pub prev: *mut array_element,$/;" m struct:array_element +prev r_glob/src/lib.rs /^ pub prev: *mut array_element,$/;" m struct:array_element +prev r_readline/src/lib.rs /^ pub prev: *mut array_element,$/;" m struct:array_element +prev support/man2html.c /^ TABLEROW *prev, *next;$/;" m struct:TABLEROW typeref:typename:TABLEROW * file: +prev_all vendor/futures-util/src/stream/futures_unordered/task.rs /^ pub(super) prev_all: UnsafeCell<*const Task>,$/;" m struct:Task +prev_bucket lib/malloc/table.c /^#define prev_bucket(/;" d file: +prev_entry lib/malloc/table.c /^#define prev_entry(/;" d file: +prev_line_found lib/readline/rlprivate.h /^ char *prev_line_found;$/;" m struct:__rl_search_context typeref:typename:char * +prev_line_found lib/readline/search.c /^static char *prev_line_found = (char *) NULL;$/;" v typeref:typename:char * file: +prev_line_found r_readline/src/lib.rs /^ pub prev_line_found: *mut ::std::os::raw::c_char,$/;" m struct:__rl_search_context +prevc lib/readline/rlprivate.h /^ int prevc;$/;" m struct:__rl_search_context typeref:typename:int +prevc r_readline/src/lib.rs /^ pub prevc: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +previous_history lib/readline/history.c /^previous_history (void)$/;" f typeref:typename:HIST_ENTRY * +previous_history r_bashhist/src/lib.rs /^ fn previous_history() -> *mut HIST_ENTRY;$/;" f +previous_history r_readline/src/lib.rs /^ pub fn previous_history() -> *mut HIST_ENTRY;$/;" f +previous_option_value builtins_rust/set/src/lib.rs /^static mut previous_option_value: i32 = 0;$/;" v +primary_prompt r_bash/src/lib.rs /^ pub static mut primary_prompt: *mut ::std::os::raw::c_char;$/;" v +primitive vendor/quote/src/to_tokens.rs /^macro_rules! primitive {$/;" M +print vendor/syn/src/lib.rs /^mod print;$/;" n +printToStderr builtins_rust/fc/src/lib.rs /^unsafe fn printToStderr(str: *mut c_char) -> std::io::Result<()> {$/;" f +printToStdout builtins_rust/fc/src/lib.rs /^unsafe fn printToStdout(str: *mut c_char) -> std::io::Result<()> {$/;" f +printToStdoutflush builtins_rust/fc/src/lib.rs /^unsafe fn printToStdoutflush() -> std::io::Result<()> {$/;" f +print_alias builtins_rust/alias/src/lib.rs /^unsafe extern "C" fn print_alias(alias: *mut AliasT, flags: libc::c_int) {$/;" f +print_all_limits builtins_rust/ulimit/src/lib.rs /^fn print_all_limits(mut mode: i32) {$/;" f +print_all_shell_variables builtins_rust/set/src/lib.rs /^unsafe fn print_all_shell_variables() {$/;" f +print_arith_command print_cmd.c /^print_arith_command (arith_cmd_list)$/;" f +print_arith_command r_bash/src/lib.rs /^ pub fn print_arith_command(arg1: *mut WORD_LIST);$/;" f +print_arith_for_command print_cmd.c /^print_arith_for_command (arith_for_command)$/;" f file: +print_arith_for_command r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_arith_for_command(arith_for_command:*mut ARITH_FOR_COM)$/;" f +print_array array.c /^print_array(a)$/;" f +print_array_assignment arrayfunc.c /^print_array_assignment (var, quoted)$/;" f +print_array_assignment builtins_rust/setattr/src/intercdep.rs /^ pub fn print_array_assignment (var: *mut SHELL_VAR, quoted: c_int);$/;" f +print_array_assignment r_bash/src/lib.rs /^ pub fn print_array_assignment(arg1: *mut SHELL_VAR, arg2: ::std::os::raw::c_int);$/;" f +print_assignment r_bash/src/lib.rs /^ pub fn print_assignment(arg1: *mut SHELL_VAR);$/;" f +print_assignment variables.c /^print_assignment (var)$/;" f +print_assoc_assignment arrayfunc.c /^print_assoc_assignment (var, quoted)$/;" f +print_assoc_assignment builtins_rust/setattr/src/intercdep.rs /^ pub fn print_assoc_assignment (var: *mut SHELL_VAR, quoted: c_int);$/;" f +print_assoc_assignment r_bash/src/lib.rs /^ pub fn print_assoc_assignment(arg1: *mut SHELL_VAR, arg2: ::std::os::raw::c_int);$/;" f +print_case_clauses print_cmd.c /^print_case_clauses (clauses)$/;" f file: +print_case_clauses r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_case_clauses(mut clauses:*mut PATTERN_LIST)$/;" f +print_case_command print_cmd.c /^print_case_command (case_command)$/;" f file: +print_case_command r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_case_command(case_command:*mut CASE_COM)$/;" f +print_case_command_head print_cmd.c /^print_case_command_head (case_command)$/;" f +print_case_command_head r_bash/src/lib.rs /^ pub fn print_case_command_head(arg1: *mut CASE_COM);$/;" f +print_clock_t lib/sh/clock.c /^print_clock_t (fp, t)$/;" f +print_clock_t r_bash/src/lib.rs /^ pub fn print_clock_t();$/;" f +print_cmd.o Makefile.in /^print_cmd.o: $(BASHINCDIR)\/ocache.h $(BASHINCDIR)\/chartypes.h$/;" t +print_cmd.o Makefile.in /^print_cmd.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +print_cmd.o Makefile.in /^print_cmd.o: ${GRAM_H} $(DEFSRC)\/common.h$/;" t +print_cmd.o Makefile.in /^print_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +print_cmd.o Makefile.in /^print_cmd.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +print_cmd.o Makefile.in /^print_cmd.o: flags.h input.h assoc.h$/;" t +print_cmd.o Makefile.in /^print_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib/;" t +print_cmd.o Makefile.in /^print_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h $/;" t +print_cmd.o Makefile.in /^print_cmd.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +print_cmd.o Makefile.in /^print_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDI/;" t +print_command print_cmd.c /^print_command (command)$/;" f +print_command r_bash/src/lib.rs /^ pub fn print_command(arg1: *mut COMMAND);$/;" f +print_cond_command print_cmd.c /^print_cond_command (cond)$/;" f +print_cond_command r_bash/src/lib.rs /^ pub fn print_cond_command(arg1: *mut COND_COM);$/;" f +print_cond_node print_cmd.c /^print_cond_node (cond)$/;" f file: +print_cond_node r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_cond_node(cond:*mut COND_COM)$/;" f +print_deferred_heredocs print_cmd.c /^print_deferred_heredocs (cstring)$/;" f file: +print_deferred_heredocs r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_deferred_heredocs(cstring:*const c_char)$/;" f +print_dev_fd_list subst.c /^print_dev_fd_list ()$/;" f +print_element array.c /^print_element(ae)$/;" f +print_escaped lib/intl/log.c /^print_escaped (stream, str)$/;" f file: +print_filename lib/readline/complete.c /^print_filename (char *to_print, char *full_pathname, int prefix_bytes)$/;" f typeref:typename:int file: +print_for_command print_cmd.c /^print_for_command (for_command)$/;" f file: +print_for_command r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_for_command(for_command:*mut FOR_COM)$/;" f +print_for_command_head print_cmd.c /^print_for_command_head (for_command)$/;" f +print_for_command_head r_bash/src/lib.rs /^ pub fn print_for_command_head(arg1: *mut FOR_COM);$/;" f +print_formatted_time execute_cmd.c /^print_formatted_time (fp, format, rs, rsf, us, usf, ss, ssf, cpu)$/;" f file: +print_func_list builtins_rust/set/src/lib.rs /^ fn print_func_list(_: *mut *mut SHELL_VAR);$/;" f +print_func_list r_bash/src/lib.rs /^ pub fn print_func_list(arg1: *mut *mut SHELL_VAR);$/;" f +print_func_list variables.c /^print_func_list (list)$/;" f +print_function_def print_cmd.c /^print_function_def (func)$/;" f file: +print_function_def r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_function_def(func: *mut FUNCTION_DEF)$/;" f +print_group_command print_cmd.c /^print_group_command (group_command)$/;" f file: +print_group_command r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_group_command(group_command:*mut GROUP_COM)$/;" f +print_heredoc_bodies print_cmd.c /^print_heredoc_bodies (heredocs)$/;" f file: +print_heredoc_bodies r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_heredoc_bodies(heredocs:*mut REDIRECT)$/;" f +print_heredoc_body print_cmd.c /^print_heredoc_body (redirect)$/;" f file: +print_heredoc_body r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_heredoc_body(redirect:*mut REDIRECT)$/;" f +print_heredoc_header print_cmd.c /^print_heredoc_header (redirect)$/;" f file: +print_heredoc_header r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_heredoc_header(redirect:*mut REDIRECT)$/;" f +print_heredocs print_cmd.c /^print_heredocs (heredocs)$/;" f file: +print_heredocs r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_heredocs(heredocs:*mut REDIRECT)$/;" f +print_if_command print_cmd.c /^print_if_command (if_command)$/;" f file: +print_if_command r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_if_command(if_command:*mut IF_COM)$/;" f +print_incomplete_qpath vendor/syn/tests/test_path.rs /^fn print_incomplete_qpath() {$/;" f +print_index_and_element execute_cmd.c /^print_index_and_element (len, ind, list)$/;" f file: +print_job jobs.c /^print_job (job, format, state, job_index)$/;" f file: +print_job r_jobs/src/lib.rs /^unsafe extern "C" fn print_job(mut job: *mut JOB, mut format: c_int, mut state: c_int, mut job_i/;" f +print_malloc_stats lib/malloc/stats.c /^print_malloc_stats (s)$/;" f +print_minus_o_option builtins_rust/set/src/lib.rs /^unsafe fn print_minus_o_option(name: *mut libc::c_char, value: i32, pflag: i32) {$/;" f +print_path vendor/syn/src/path.rs /^ pub(crate) fn print_path(tokens: &mut TokenStream, qself: &Option, path: &Path) {$/;" f module:printing +print_pipeline jobs.c /^print_pipeline (p, job_index, format, stream)$/;" f file: +print_pipeline r_jobs/src/lib.rs /^unsafe extern "C" fn print_pipeline($/;" f +print_redirection print_cmd.c /^print_redirection (redirect)$/;" f file: +print_redirection r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_redirection(redirect:*mut REDIRECT)$/;" f +print_redirection_list print_cmd.c /^print_redirection_list (redirects)$/;" f file: +print_redirection_list r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_redirection_list(mut redirects:*mut REDIRECT)$/;" f +print_rlimtype builtins_rust/ulimit/src/lib.rs /^fn print_rlimtype(num: u64, nl: i32) {$/;" f +print_rlimtype general.c /^print_rlimtype (n, addnl)$/;" f +print_rlimtype r_bash/src/lib.rs /^ pub fn print_rlimtype(arg1: rlim_t, arg2: ::std::os::raw::c_int);$/;" f +print_rlimtype r_glob/src/lib.rs /^ pub fn print_rlimtype(arg1: rlim_t, arg2: ::std::os::raw::c_int);$/;" f +print_rlimtype r_readline/src/lib.rs /^ pub fn print_rlimtype(arg1: rlim_t, arg2: ::std::os::raw::c_int);$/;" f +print_select_command print_cmd.c /^print_select_command (select_command)$/;" f file: +print_select_command r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_select_command(select_command:*mut SELECT_COM)$/;" f +print_select_command_head print_cmd.c /^print_select_command_head (select_command)$/;" f +print_select_command_head r_bash/src/lib.rs /^ pub fn print_select_command_head(arg1: *mut SELECT_COM);$/;" f +print_select_list execute_cmd.c /^print_select_list (list, list_len, max_elem_len, indices_len)$/;" f file: +print_shift_error builtins_rust/shift/src/lib.rs /^pub static print_shift_error: c_int = 0;$/;" v +print_shift_error builtins_rust/shopt/src/lib.rs /^ static mut print_shift_error: i32;$/;" v +print_shift_error r_bash/src/lib.rs /^ pub static mut print_shift_error: ::std::os::raw::c_int;$/;" v +print_shopt builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn print_shopt(name: *mut libc::c_char, val: i32, flags: i32) {$/;" f +print_sig support/man2html.c /^print_sig(void)$/;" f typeref:typename:void file: +print_simple_command print_cmd.c /^print_simple_command (simple_command)$/;" f +print_simple_command r_bash/src/lib.rs /^ pub fn print_simple_command(arg1: *mut SIMPLE_COM);$/;" f +print_timeval builtins_rust/times/src/intercdep.rs /^ pub fn print_timeval(fp: *mut libc::FILE, tvp: *mut libc::timeval);$/;" f +print_timeval lib/sh/timeval.c /^print_timeval (fp, tvp)$/;" f +print_timeval r_bash/src/lib.rs /^ pub fn print_timeval();$/;" f +print_tm lib/sh/mktime.c /^print_tm (tp)$/;" f file: +print_unix_command_map bashline.c /^print_unix_command_map ()$/;" f typeref:typename:int +print_unix_command_map builtins_rust/bind/src/lib.rs /^ fn print_unix_command_map() -> i32;$/;" f +print_unix_command_map r_bash/src/lib.rs /^ pub fn print_unix_command_map() -> ::std::os::raw::c_int;$/;" f +print_until_command print_cmd.c /^print_until_command (while_command)$/;" f file: +print_until_command r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_until_command(while_command:*mut WHILE_COM)$/;" f +print_until_or_while print_cmd.c /^print_until_or_while (while_command, which)$/;" f file: +print_until_or_while r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_until_or_while(while_command:*mut WHILE_COM, which:*mut c_char)$/;" f +print_unwind_protect_tags unwind_prot.c /^print_unwind_protect_tags ()$/;" f typeref:typename:void +print_var_function r_bash/src/lib.rs /^ pub fn print_var_function(arg1: *mut SHELL_VAR);$/;" f +print_var_function variables.c /^print_var_function (var)$/;" f +print_var_list builtins_rust/set/src/lib.rs /^ fn print_var_list(_: *mut *mut SHELL_VAR);$/;" f +print_var_list r_bash/src/lib.rs /^ pub fn print_var_list(arg1: *mut *mut SHELL_VAR);$/;" f +print_var_list variables.c /^print_var_list (list)$/;" f +print_var_value r_bash/src/lib.rs /^ pub fn print_var_value(arg1: *mut SHELL_VAR, arg2: ::std::os::raw::c_int);$/;" f +print_var_value variables.c /^print_var_value (var, quote)$/;" f +print_while_command print_cmd.c /^print_while_command (while_command)$/;" f file: +print_while_command r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn print_while_command(while_command:*mut WHILE_COM)$/;" f +print_word_list print_cmd.c /^print_word_list (list, separator)$/;" f +print_word_list r_bash/src/lib.rs /^ pub fn print_word_list(arg1: *mut WORD_LIST, arg2: *mut ::std::os::raw::c_char);$/;" f +printable_filename builtins_rust/bind/src/lib.rs /^ fn printable_filename(Fn: *mut c_char, flags: i32) -> *mut c_char;$/;" f +printable_filename builtins_rust/cd/src/lib.rs /^ fn printable_filename(fnc: *mut c_char, flags: i32) -> *mut c_char;$/;" f +printable_filename builtins_rust/enable/src/lib.rs /^ fn printable_filename(_: *mut libc::c_char, _: libc::c_int) -> *mut libc::c_char;$/;" f +printable_filename builtins_rust/hash/src/lib.rs /^ fn printable_filename(f: *mut c_char, flage: i32) -> *mut c_char;$/;" f +printable_filename builtins_rust/source/src/lib.rs /^ fn printable_filename(path: *mut c_char, tab: i32) -> *mut c_char;$/;" f +printable_filename general.c /^printable_filename (fn, flags)$/;" f +printable_filename r_bash/src/lib.rs /^ pub fn printable_filename($/;" f +printable_filename r_glob/src/lib.rs /^ pub fn printable_filename($/;" f +printable_filename r_readline/src/lib.rs /^ pub fn printable_filename($/;" f +printable_job_status jobs.c /^printable_job_status (j, p, format)$/;" f file: +printable_job_status r_jobs/src/lib.rs /^unsafe extern "C" fn printable_job_status(mut j: c_int, mut p: *mut PROCESS, mut format: c_int,)/;" f +printable_part lib/readline/complete.c /^printable_part (char *pathname)$/;" f typeref:typename:char * file: +printenv$(EXEEXT) Makefile.in /^printenv$(EXEEXT): $(SUPPORT_SRC)printenv.c$/;" t +printf builtins_rust/alias/src/lib.rs /^ fn printf(_: *const libc::c_char, _: ...) -> libc::c_int;$/;" f +printf builtins_rust/enable/src/lib.rs /^ fn printf(_: *const libc::c_char, _: ...) -> libc::c_int;$/;" f +printf builtins_rust/history/src/intercdep.rs /^ pub fn printf(_: *const libc::c_char, _: ...) -> libc::c_int;$/;" f +printf builtins_rust/shopt/src/lib.rs /^ fn printf(_: *const libc::c_char, _: ...) -> i32;$/;" f +printf r_bash/src/lib.rs /^ pub fn printf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;$/;" f +printf r_readline/src/lib.rs /^ pub fn printf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;$/;" f +printf vendor/libc/src/fuchsia/mod.rs /^ pub fn printf(format: *const ::c_char, ...) -> ::c_int;$/;" f +printf vendor/libc/src/solid/mod.rs /^ pub fn printf(arg1: *const c_char, ...) -> c_int;$/;" f +printf vendor/libc/src/unix/mod.rs /^ pub fn printf(format: *const ::c_char, ...) -> ::c_int;$/;" f +printf vendor/libc/src/vxworks/mod.rs /^ pub fn printf(format: *const ::c_char, ...) -> ::c_int;$/;" f +printf vendor/libc/src/wasi.rs /^ pub fn printf(format: *const ::c_char, ...) -> ::c_int;$/;" f +printf vendor/libc/src/windows/mod.rs /^ pub fn printf(format: *const c_char, ...) -> ::c_int;$/;" f +printf.o builtins/Makefile.in /^printf.o: $(topdir)\/bashtypes.h ${srcdir}\/common.h $(BASHINCDIR)\/chartypes.h$/;" t +printf.o builtins/Makefile.in /^printf.o: $(topdir)\/command.h $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +printf.o builtins/Makefile.in /^printf.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h$/;" t +printf.o builtins/Makefile.in /^printf.o: $(topdir)\/subst.h $(topdir)\/externs.h $(topdir)\/sig.h$/;" t +printf.o builtins/Makefile.in /^printf.o: $(topdir)\/variables.h $(topdir)\/conftypes.h $(BASHINCDIR)\/stdc.h $(srcdir)\/bashget/;" t +printf.o builtins/Makefile.in /^printf.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +printf.o builtins/Makefile.in /^printf.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +printf.o builtins/Makefile.in /^printf.o: ..\/config.h $(BASHINCDIR)\/memalloc.h $(topdir)\/bashjmp.h$/;" t +printf.o builtins/Makefile.in /^printf.o: ..\/pathnames.h $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h$/;" t +printf.o builtins/Makefile.in /^printf.o: ..\/pathnames.h$/;" t +printf.o builtins/Makefile.in /^printf.o: printf.def$/;" t +printf_erange builtins_rust/printf/src/lib.rs /^unsafe fn printf_erange(s: *mut c_char) {$/;" f +printing vendor/syn/src/attr.rs /^mod printing {$/;" n +printing vendor/syn/src/data.rs /^mod printing {$/;" n +printing vendor/syn/src/derive.rs /^mod printing {$/;" n +printing vendor/syn/src/expr.rs /^pub(crate) mod printing {$/;" n +printing vendor/syn/src/file.rs /^mod printing {$/;" n +printing vendor/syn/src/generics.rs /^mod printing {$/;" n +printing vendor/syn/src/item.rs /^mod printing {$/;" n +printing vendor/syn/src/lifetime.rs /^mod printing {$/;" n +printing vendor/syn/src/lit.rs /^mod printing {$/;" n +printing vendor/syn/src/mac.rs /^mod printing {$/;" n +printing vendor/syn/src/op.rs /^mod printing {$/;" n +printing vendor/syn/src/pat.rs /^mod printing {$/;" n +printing vendor/syn/src/path.rs /^pub(crate) mod printing {$/;" n +printing vendor/syn/src/punctuated.rs /^mod printing {$/;" n +printing vendor/syn/src/stmt.rs /^mod printing {$/;" n +printing vendor/syn/src/token.rs /^pub mod printing {$/;" n +printing vendor/syn/src/ty.rs /^mod printing {$/;" n +printing_connection print_cmd.c /^static int printing_connection;$/;" v typeref:typename:int file: +printing_connection r_print_cmd/src/lib.rs /^static mut printing_connection:c_int = 0;$/;" v +printone builtins_rust/ulimit/src/lib.rs /^fn printone(limind: i32, curlim: RLIMTYPE, pdesc: i32) {$/;" f +printstr builtins_rust/printf/src/lib.rs /^unsafe fn printstr($/;" f +priority vendor/nix/src/sys/aio.rs /^ fn priority(&self) -> i32;$/;" P interface:Aio +priority_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type priority_t = u8;$/;" t +private vendor/nix/src/sys/socket/addr.rs /^mod private {$/;" n +private vendor/quote/src/ext.rs /^mod private {$/;" n +private vendor/syn/src/export.rs /^pub struct private(pub(crate) ());$/;" s +private vendor/syn/src/ext.rs /^mod private {$/;" n +private vendor/syn/src/token.rs /^mod private {$/;" n +private_try_future vendor/futures-core/src/future.rs /^mod private_try_future {$/;" n +private_try_stream vendor/futures-core/src/stream.rs /^mod private_try_stream {$/;" n +private_type_in_public_type vendor/pin-project-lite/tests/test.rs /^fn private_type_in_public_type() {$/;" f +privileged_mode builtins_rust/cd/src/lib.rs /^ static privileged_mode: i32;$/;" v +privileged_mode flags.c /^int privileged_mode = 0;$/;" v typeref:typename:int +privileged_mode r_bash/src/lib.rs /^ pub static mut privileged_mode: ::std::os::raw::c_int;$/;" v +prlimit r_bash/src/lib.rs /^ pub fn prlimit($/;" f +prlimit r_glob/src/lib.rs /^ pub fn prlimit($/;" f +prlimit r_readline/src/lib.rs /^ pub fn prlimit($/;" f +prlimit vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn prlimit($/;" f +prlimit vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn prlimit($/;" f +prlimit vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn prlimit($/;" f +prlimit64 r_bash/src/lib.rs /^ pub fn prlimit64($/;" f +prlimit64 r_glob/src/lib.rs /^ pub fn prlimit64($/;" f +prlimit64 r_readline/src/lib.rs /^ pub fn prlimit64($/;" f +prlimit64 vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn prlimit64($/;" f +prlimit64 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn prlimit64($/;" f +prlimit64 vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn prlimit64($/;" f +prng_seed vendor/futures-util/src/async_await/random.rs /^ fn prng_seed() -> u64 {$/;" f function:random +probe vendor/autocfg/src/lib.rs /^ fn probe>(&self, code: T) -> Result {$/;" P implementation:AutoCfg +probe_add vendor/autocfg/src/tests.rs /^fn probe_add() {$/;" f +probe_alloc vendor/autocfg/src/tests.rs /^fn probe_alloc() {$/;" f +probe_as_ref vendor/autocfg/src/tests.rs /^fn probe_as_ref() {$/;" f +probe_bad_sysroot_crate vendor/autocfg/src/tests.rs /^fn probe_bad_sysroot_crate() {$/;" f +probe_constant vendor/autocfg/src/lib.rs /^ pub fn probe_constant(&self, expr: &str) -> bool {$/;" P implementation:AutoCfg +probe_constant vendor/autocfg/src/tests.rs /^fn probe_constant() {$/;" f +probe_expression vendor/autocfg/src/lib.rs /^ pub fn probe_expression(&self, expr: &str) -> bool {$/;" P implementation:AutoCfg +probe_expression vendor/autocfg/src/tests.rs /^fn probe_expression() {$/;" f +probe_i128 vendor/autocfg/src/tests.rs /^fn probe_i128() {$/;" f +probe_no_std vendor/autocfg/src/tests.rs /^fn probe_no_std() {$/;" f +probe_path vendor/autocfg/src/lib.rs /^ pub fn probe_path(&self, path: &str) -> bool {$/;" P implementation:AutoCfg +probe_rustc_version vendor/autocfg/src/lib.rs /^ pub fn probe_rustc_version(&self, major: usize, minor: usize) -> bool {$/;" P implementation:AutoCfg +probe_std vendor/autocfg/src/tests.rs /^fn probe_std() {$/;" f +probe_sum vendor/autocfg/src/tests.rs /^fn probe_sum() {$/;" f +probe_sysroot_crate vendor/autocfg/src/lib.rs /^ pub fn probe_sysroot_crate(&self, name: &str) -> bool {$/;" P implementation:AutoCfg +probe_trait vendor/autocfg/src/lib.rs /^ pub fn probe_trait(&self, name: &str) -> bool {$/;" P implementation:AutoCfg +probe_type vendor/autocfg/src/lib.rs /^ pub fn probe_type(&self, name: &str) -> bool {$/;" P implementation:AutoCfg +proc subst.c /^ pid_t proc;$/;" m struct:temp_fifo typeref:typename:pid_t file: +proc-macro2 vendor/proc-macro2/README.md /^# proc-macro2$/;" c +proc_kmsgbuf vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_kmsgbuf(buffer: *mut ::c_void, buffersize: u32) -> ::c_int;$/;" f +proc_libversion vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_libversion(major: *mut ::c_int, mintor: *mut ::c_int) -> ::c_int;$/;" f +proc_listallpids vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_listallpids(buffer: *mut ::c_void, buffersize: ::c_int) -> ::c_int;$/;" f +proc_listchildpids vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_listchildpids(ppid: ::pid_t, buffer: *mut ::c_void, buffersize: ::c_int)$/;" f +proc_listpgrppids vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_listpgrppids($/;" f +proc_listpids vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_listpids($/;" f +proc_macro_parse vendor/proc-macro2/src/wrapper.rs /^fn proc_macro_parse(src: &str) -> Result {$/;" f +proc_name vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_name(pid: ::c_int, buffer: *mut ::c_void, buffersize: u32) -> ::c_int;$/;" f +proc_pid_rusage vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_pid_rusage(pid: ::c_int, flavor: ::c_int, buffer: *mut rusage_info_t) -> ::c_int/;" f +proc_pidfdinfo vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_pidfdinfo($/;" f +proc_pidfileportinfo vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_pidfileportinfo($/;" f +proc_pidinfo vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_pidinfo($/;" f +proc_pidpath vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_pidpath(pid: ::c_int, buffer: *mut ::c_void, buffersize: u32) -> ::c_int;$/;" f +proc_regionfilename vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_regionfilename($/;" f +proc_set_csm vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_set_csm(flags: u32) -> ::c_int;$/;" f +proc_set_no_smt vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_set_no_smt() -> ::c_int;$/;" f +proc_setthread_csm vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_setthread_csm(flags: u32) -> ::c_int;$/;" f +proc_setthread_no_smt vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn proc_setthread_no_smt() -> ::c_int;$/;" f +proc_status nojobs.c /^struct proc_status {$/;" s file: +procchain jobs.h /^struct procchain {$/;" s +procchain r_bash/src/lib.rs /^pub struct procchain {$/;" s +procctl vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn procctl(idtype: ::idtype_t, id: ::id_t, cmd: ::c_int, data: *mut ::c_void) -> ::c_int/;" f +procctl vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procctl(idtype: ::idtype_t, id: ::id_t, cmd: ::c_int, data: *mut ::c_void) -> ::c_int/;" f +procenv_t builtins_rust/wait/src/lib.rs /^pub type procenv_t = __jmp_buf_tag;$/;" t +procenv_t include/posixjmp.h /^# define procenv_t /;" d +procenv_t lib/readline/posixjmp.h /^# define procenv_t /;" d +process builtins_rust/common/src/lib.rs /^pub struct process {$/;" s +process builtins_rust/kill/src/intercdep.rs /^pub struct process {$/;" s +process builtins_rust/setattr/src/intercdep.rs /^pub struct process {$/;" s +process input.c /^process(bp)$/;" f +process jobs.h /^typedef struct process {$/;" s +process r_bash/src/lib.rs /^pub struct process {$/;" s +process-substitution configure.ac /^AC_ARG_ENABLE(process-substitution, AC_HELP_STRING([--enable-process-substitution], [enable proc/;" e +process_count vendor/nix/src/sys/sysinfo.rs /^ pub fn process_count(&self) -> u16 {$/;" P implementation:SysInfo +process_exit_signal jobs.c /^process_exit_signal (status)$/;" f file: +process_exit_signal r_jobs/src/lib.rs /^unsafe extern "C" fn process_exit_signal(mut status: WAIT) -> c_int {$/;" f +process_exit_status jobs.c /^process_exit_status (status)$/;" f file: +process_exit_status nojobs.c /^process_exit_status (status)$/;" f file: +process_exit_status r_jobs/src/lib.rs /^unsafe extern "C" fn process_exit_status(mut status: WAIT) -> c_int {$/;" f +process_line lib/readline/examples/excallback.c /^process_line(char *line)$/;" f typeref:typename:void +process_substitute subst.c /^process_substitute (string, open_for_read_in_child)$/;" f file: +process_vm_readv vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn process_vm_readv($/;" f +process_vm_writev vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn process_vm_writev($/;" f +processenv vendor/winapi/src/um/mod.rs /^#[cfg(feature = "processenv")] pub mod processenv;$/;" n +processes_in_job jobs.c /^processes_in_job (job)$/;" f file: +processes_in_job r_jobs/src/lib.rs /^unsafe extern "C" fn processes_in_job(mut job: c_int) -> c_int {$/;" f +processor_basic_info_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type processor_basic_info_data_t = processor_basic_info;$/;" t +processor_basic_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type processor_basic_info_t = *mut processor_basic_info;$/;" t +processor_bind vendor/libc/src/unix/solarish/mod.rs /^ pub fn processor_bind($/;" f +processor_cpu_load_info_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type processor_cpu_load_info_data_t = processor_cpu_load_info;$/;" t +processor_cpu_load_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type processor_cpu_load_info_t = *mut processor_cpu_load_info;$/;" t +processor_flavor_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type processor_flavor_t = ::c_int;$/;" t +processor_info vendor/libc/src/unix/solarish/mod.rs /^ pub fn processor_info(processorid: ::processorid_t, infop: *mut processor_info_t) -> ::c_int/;" f +processor_info_array_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type processor_info_array_t = *mut integer_t;$/;" t +processor_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type processor_info_t = *mut integer_t;$/;" t +processor_set_basic_info_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type processor_set_basic_info_data_t = processor_set_basic_info;$/;" t +processor_set_basic_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type processor_set_basic_info_t = *mut processor_set_basic_info;$/;" t +processor_set_load_info_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type processor_set_load_info_data_t = processor_set_load_info;$/;" t +processor_set_load_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type processor_set_load_info_t = *mut processor_set_load_info;$/;" t +processorid_t vendor/libc/src/unix/solarish/mod.rs /^pub type processorid_t = ::c_int;$/;" t +processsnapshot vendor/winapi/src/um/mod.rs /^#[cfg(feature = "processsnapshot")] pub mod processsnapshot;$/;" n +processthreadsapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "processthreadsapi")] pub mod processthreadsapi;$/;" n +processtopologyapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "processtopologyapi")] pub mod processtopologyapi;$/;" n +procstat builtins_rust/wait/src/lib.rs /^pub struct procstat {$/;" s +procstat jobs.h /^struct procstat {$/;" s +procstat r_bash/src/lib.rs /^pub struct procstat {$/;" s +procstat_close vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_close(procstat: *mut procstat);$/;" f +procstat_freeargv vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_freeargv(procstat: *mut procstat);$/;" f +procstat_freeenvv vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_freeenvv(procstat: *mut procstat);$/;" f +procstat_freefiles vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_freefiles(procstat: *mut procstat, head: *mut filestat_list);$/;" f +procstat_freegroups vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_freegroups(procstat: *mut procstat, groups: *mut ::gid_t);$/;" f +procstat_freeprocs vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_freeprocs(procstat: *mut procstat, p: *mut kinfo_proc);$/;" f +procstat_freeptlwpinfo vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_freeptlwpinfo(procstat: *mut procstat, pl: *mut ptrace_lwpinfo);$/;" f +procstat_freevmmap vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_freevmmap(procstat: *mut procstat, vmmap: *mut kinfo_vmentry);$/;" f +procstat_get_pts_info vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_get_pts_info($/;" f +procstat_get_shm_info vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_get_shm_info($/;" f +procstat_get_socket_info vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_get_socket_info($/;" f +procstat_get_vnode_info vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_get_vnode_info($/;" f +procstat_getargv vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_getargv($/;" f +procstat_getenvv vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_getenvv($/;" f +procstat_getfiles vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_getfiles($/;" f +procstat_getgroups vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_getgroups($/;" f +procstat_getosrel vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_getosrel($/;" f +procstat_getpathname vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_getpathname($/;" f +procstat_getprocs vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_getprocs($/;" f +procstat_getrlimit vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_getrlimit($/;" f +procstat_getumask vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_getumask($/;" f +procstat_getvmmap vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_getvmmap($/;" f +procstat_open_core vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_open_core(filename: *const ::c_char) -> *mut procstat;$/;" f +procstat_open_kvm vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_open_kvm(nlistf: *const ::c_char, memf: *const ::c_char) -> *mut procstat;$/;" f +procstat_open_sysctl vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn procstat_open_sysctl() -> *mut procstat;$/;" f +procsub_add jobs.c /^procsub_add (p)$/;" f +procsub_add r_bash/src/lib.rs /^ pub fn procsub_add(arg1: *mut PROCESS) -> *mut PROCESS;$/;" f +procsub_add r_jobs/src/lib.rs /^pub unsafe extern "C" fn procsub_add(mut p: *mut PROCESS) -> *mut PROCESS {$/;" f +procsub_clear jobs.c /^procsub_clear ()$/;" f typeref:typename:void +procsub_clear r_bash/src/lib.rs /^ pub fn procsub_clear();$/;" f +procsub_clear r_jobs/src/lib.rs /^pub unsafe extern "C" fn procsub_clear() {$/;" f +procsub_delete jobs.c /^procsub_delete (pid)$/;" f +procsub_delete r_bash/src/lib.rs /^ pub fn procsub_delete(arg1: pid_t) -> *mut PROCESS;$/;" f +procsub_delete r_jobs/src/lib.rs /^pub unsafe extern "C" fn procsub_delete(mut pid: pid_t) -> *mut PROCESS {$/;" f +procsub_free jobs.c /^procsub_free (p)$/;" f file: +procsub_free r_jobs/src/lib.rs /^unsafe extern "C" fn procsub_free(mut p: *mut PROCESS) $/;" f +procsub_prune jobs.c /^procsub_prune ()$/;" f typeref:typename:void +procsub_prune r_bash/src/lib.rs /^ pub fn procsub_prune();$/;" f +procsub_prune r_jobs/src/lib.rs /^pub unsafe extern "C" fn procsub_prune() {$/;" f +procsub_search jobs.c /^procsub_search (pid)$/;" f +procsub_search r_bash/src/lib.rs /^ pub fn procsub_search(arg1: pid_t) -> *mut PROCESS;$/;" f +procsub_search r_jobs/src/lib.rs /^pub unsafe extern "C" fn procsub_search(mut pid: pid_t) -> *mut PROCESS {$/;" f +procsub_waitall jobs.c /^procsub_waitall ()$/;" f typeref:typename:void +procsub_waitall r_bash/src/lib.rs /^ pub fn procsub_waitall();$/;" f +procsub_waitall r_jobs/src/lib.rs /^pub unsafe extern "C" fn procsub_waitall() {$/;" f +procsub_waitpid jobs.c /^procsub_waitpid (pid)$/;" f +procsub_waitpid r_bash/src/lib.rs /^ pub fn procsub_waitpid(arg1: pid_t) -> ::std::os::raw::c_int;$/;" f +procsub_waitpid r_jobs/src/lib.rs /^pub unsafe extern "C" fn procsub_waitpid(mut pid: pid_t) -> c_int {$/;" f +procsubs jobs.c /^struct procchain procsubs = { 0, 0, 0 };$/;" v typeref:struct:procchain +procsubs r_jobs/src/lib.rs /^pub static mut procsubs:procchain = {$/;" v +produces_handler builtins/mkbuiltins.c /^produces_handler (self, defs, arg)$/;" f +production builtins/mkbuiltins.c /^ char *production; \/* The name of the production file. *\/$/;" m struct:__anon69e836710308 typeref:typename:char * file: +profil r_bash/src/lib.rs /^ pub fn profil($/;" f +profil r_glob/src/lib.rs /^ pub fn profil($/;" f +profil r_readline/src/lib.rs /^ pub fn profil($/;" f +profile target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n +profile target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" n +profile target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +profile target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" n +profile target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" n +profile target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" n +profile target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" n +profile target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n +profile target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" n +profile target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n +profile target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" n +profile target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n +profile target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" n +profile target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n +profile target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" n +profile target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n +profile target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +profile target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +profile target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" n +profile target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +profile target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" n +profile target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" n +profile target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n +profile target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" n +profile target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n +profile target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" n +profile target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" n +profile target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" n +profile target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +profile target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +profile target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +profile target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" n +profile target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" n +profile target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" n +profile target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" n +profile target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +profile target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" n +profile target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +profile target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +profile target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" n +profile target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +profile target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" n +profile target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +profile target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" n +profile target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" n +profile target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" n +profile target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" n +profile target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" n +profile target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n +profile target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" n +profile target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" n +profile target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" n +profile target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" n +profile target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +profile target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" n +profile target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +profile target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" n +profile target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" n +profile target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +profile target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +profile target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" n +profile target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n +profile target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" n +profile target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" n +profile target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n +profile target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n +profile target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n +profile target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n +profile target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n +profile target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" n +profile target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n +profile target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +profile target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" n +profile target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n +profile target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n +profile target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n +profile target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n +profile target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n +profile target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n +profile target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n +profile target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n +profile target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n +profile target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n +profile target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n +profile target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n +profile target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n +profile target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n +profile target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n +profile target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n +profile target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n +profile target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n +profile target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n +profile target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" n +profile target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n +profile target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +profile target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n +profile target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n +profile target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n +profile target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n +profile target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n +profile target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n +profile target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n +profile target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n +profile target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n +profile target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n +profile target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n +profile target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n +profile target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n +profile target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n +profile target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n +profile target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n +profile target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" n +profile target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n +profile target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" n +profile target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +profile target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" n +profile target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" n +profile target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" n +profile target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" n +profile target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" n +profile target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +profile target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +profile target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" n +profile target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +profile target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" n +profile target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" n +profile target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n +profile target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" n +profile target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" n +profile target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" n +profile target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" n +profile target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" n +profileapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "profileapi")] pub mod profileapi;$/;" n +profiling configure.ac /^AC_ARG_ENABLE(profiling, AC_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt/;" e +profiling-tests Makefile.in /^profiling-tests: ${PROGRAM}$/;" t +prog_complete_matches bashline.c /^static char **prog_complete_matches;$/;" v typeref:typename:char ** file: +prog_complete_return bashline.c /^prog_complete_return (text, matchnum)$/;" f file: +prog_completes pcomplib.c /^HASH_TABLE *prog_completes = (HASH_TABLE *)NULL;$/;" v typeref:typename:HASH_TABLE * +prog_completes r_bash/src/lib.rs /^ pub static mut prog_completes: *mut HASH_TABLE;$/;" v +prog_completion_enabled builtins_rust/shopt/src/lib.rs /^ static mut prog_completion_enabled: i32;$/;" v +prog_completion_enabled pcomplete.c /^int prog_completion_enabled = 1;$/;" v typeref:typename:int +prog_completion_enabled r_bash/src/lib.rs /^ pub static mut prog_completion_enabled: ::std::os::raw::c_int;$/;" v +progcomp configure.ac /^AC_ARG_ENABLE(progcomp, AC_HELP_STRING([--enable-progcomp], [enable programmable completion and /;" e +progcomp_alias builtins_rust/shopt/src/lib.rs /^ static mut progcomp_alias: i32;$/;" v +progcomp_alias pcomplete.c /^int progcomp_alias = 0; \/* unavailable to user code for now *\/$/;" v typeref:typename:int +progcomp_alias r_bash/src/lib.rs /^ pub static mut progcomp_alias: ::std::os::raw::c_int;$/;" v +progcomp_create pcomplib.c /^progcomp_create ()$/;" f typeref:typename:void +progcomp_create r_bash/src/lib.rs /^ pub fn progcomp_create();$/;" f +progcomp_debug pcomplete.c /^static int progcomp_debug = 0;$/;" v typeref:typename:int file: +progcomp_dispose pcomplib.c /^progcomp_dispose ()$/;" f typeref:typename:void +progcomp_dispose r_bash/src/lib.rs /^ pub fn progcomp_dispose();$/;" f +progcomp_flush builtins_rust/complete/src/lib.rs /^ fn progcomp_flush();$/;" f +progcomp_flush pcomplib.c /^progcomp_flush ()$/;" f typeref:typename:void +progcomp_flush r_bash/src/lib.rs /^ pub fn progcomp_flush();$/;" f +progcomp_insert builtins_rust/complete/src/lib.rs /^ fn progcomp_insert(str: *mut c_char, c: *mut COMPSPEC) -> i32;$/;" f +progcomp_insert pcomplib.c /^progcomp_insert (cmd, cs)$/;" f +progcomp_insert r_bash/src/lib.rs /^ pub fn progcomp_insert($/;" f +progcomp_remove builtins_rust/complete/src/lib.rs /^ fn progcomp_remove(str: *mut c_char) -> i32;$/;" f +progcomp_remove pcomplib.c /^progcomp_remove (cmd)$/;" f +progcomp_remove r_bash/src/lib.rs /^ pub fn progcomp_remove(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +progcomp_search builtins_rust/complete/src/lib.rs /^ fn progcomp_search(w: *const c_char) -> *mut COMPSPEC;$/;" f +progcomp_search pcomplib.c /^progcomp_search (cmd)$/;" f +progcomp_search r_bash/src/lib.rs /^ pub fn progcomp_search(arg1: *const ::std::os::raw::c_char) -> *mut COMPSPEC;$/;" f +progcomp_size pcomplib.c /^progcomp_size ()$/;" f typeref:typename:int +progcomp_size r_bash/src/lib.rs /^ pub fn progcomp_size() -> ::std::os::raw::c_int;$/;" f +progcomp_walk builtins_rust/complete/src/lib.rs /^ fn progcomp_walk(func: unsafe extern "C" fn(item: *mut BUCKET_CONTENTS) -> i32);$/;" f +progcomp_walk pcomplib.c /^progcomp_walk (pfunc)$/;" f +progcomp_walk r_bash/src/lib.rs /^ pub fn progcomp_walk(arg1: hash_wfunc);$/;" f +progname CWRU/misc/sigstat.c /^char *progname;$/;" v typeref:typename:char * +progname lib/readline/examples/fileman.c /^char *progname;$/;" v typeref:typename:char * +progname lib/readline/examples/rl.c /^static char *progname;$/;" v typeref:typename:char * file: +progname lib/readline/examples/rlcat.c /^static char *progname;$/;" v typeref:typename:char * file: +progname mksyntax.c /^char *progname;$/;" v typeref:typename:char * +progname support/mksignames.c /^char *progname;$/;" v typeref:typename:char * +progname support/utshellversion.c /^char *progname;$/;" v typeref:typename:char * +programmable_completions pcomplete.c /^programmable_completions (cmd, word, start, end, foundp)$/;" f +programmable_completions r_bash/src/lib.rs /^ pub fn programmable_completions($/;" f +programming_error CWRU/misc/errlist.c /^programming_error(a, b)$/;" f +programming_error array.c /^programming_error(const char *s, ...)$/;" f typeref:typename:void +programming_error error.c /^programming_error (const char *format, ...)$/;" f typeref:typename:void +programming_error hashlib.c /^programming_error (const char *format, ...)$/;" f typeref:typename:void +programming_error r_bash/src/lib.rs /^ pub fn programming_error(arg1: *const ::std::os::raw::c_char, ...);$/;" f +programming_error r_jobs/src/lib.rs /^ fn programming_error(_: *const c_char, _: ...);$/;" f +progress vendor/syn/tests/repo/mod.rs /^mod progress;$/;" n +project vendor/futures-util/src/future/either.rs /^ fn project(self: Pin<&mut Self>) -> Either, Pin<&mut B>> {$/;" P implementation:Either +project vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ fn project<'__pin>($/;" P implementation:Enum +project vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ fn project<'__pin>($/;" P implementation:Struct +project vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ fn project<'__pin>($/;" P implementation:Struct +project vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ fn project<'__pin>($/;" P implementation:Enum +project vendor/pin-project-lite/tests/expand/naming/enum-mut.expanded.rs /^ fn project<'__pin>($/;" P implementation:Enum +project vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ fn project<'__pin>($/;" P implementation:Struct +project vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ fn project<'__pin>($/;" P implementation:Struct +project vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ fn project<'__pin>($/;" P implementation:Struct +project vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ fn project<'__pin>($/;" P implementation:Struct +project vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ fn project<'__pin>($/;" P implementation:Enum +project vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ fn project<'__pin>($/;" P implementation:Struct +project vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ pub(crate) fn project<'__pin>($/;" P implementation:Enum +project vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ pub(crate) fn project<'__pin>($/;" P implementation:Struct +project_future vendor/futures-util/src/unfold_state.rs /^ pub(crate) fn project_future(self: Pin<&mut Self>) -> Option> {$/;" P implementation:UnfoldState +project_ref vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ fn project_ref<'__pin>($/;" P implementation:Enum +project_ref vendor/pin-project-lite/tests/expand/default/struct.expanded.rs /^ fn project_ref<'__pin>($/;" P implementation:Struct +project_ref vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ fn project_ref<'__pin>($/;" P implementation:Struct +project_ref vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ fn project_ref<'__pin>($/;" P implementation:Enum +project_ref vendor/pin-project-lite/tests/expand/naming/enum-ref.expanded.rs /^ fn project_ref<'__pin>($/;" P implementation:Enum +project_ref vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ fn project_ref<'__pin>($/;" P implementation:Struct +project_ref vendor/pin-project-lite/tests/expand/naming/struct-mut.expanded.rs /^ fn project_ref<'__pin>($/;" P implementation:Struct +project_ref vendor/pin-project-lite/tests/expand/naming/struct-none.expanded.rs /^ fn project_ref<'__pin>($/;" P implementation:Struct +project_ref vendor/pin-project-lite/tests/expand/naming/struct-ref.expanded.rs /^ fn project_ref<'__pin>($/;" P implementation:Struct +project_ref vendor/pin-project-lite/tests/expand/pinned_drop/enum.expanded.rs /^ fn project_ref<'__pin>($/;" P implementation:Enum +project_ref vendor/pin-project-lite/tests/expand/pinned_drop/struct.expanded.rs /^ fn project_ref<'__pin>($/;" P implementation:Struct +project_ref vendor/pin-project-lite/tests/expand/pub/enum.expanded.rs /^ pub(crate) fn project_ref<'__pin>($/;" P implementation:Enum +project_ref vendor/pin-project-lite/tests/expand/pub/struct.expanded.rs /^ pub(crate) fn project_ref<'__pin>($/;" P implementation:Struct +project_replace vendor/pin-project-lite/tests/expand/default/enum.expanded.rs /^ fn project_replace($/;" P implementation:Enum +project_replace vendor/pin-project-lite/tests/expand/multifields/enum.expanded.rs /^ fn project_replace($/;" P implementation:Enum +project_replace vendor/pin-project-lite/tests/expand/multifields/struct.expanded.rs /^ fn project_replace($/;" P implementation:Struct +project_replace vendor/pin-project-lite/tests/expand/naming/enum-all.expanded.rs /^ fn project_replace($/;" P implementation:Enum +project_replace vendor/pin-project-lite/tests/expand/naming/struct-all.expanded.rs /^ fn project_replace($/;" P implementation:Struct +project_replace_panic vendor/pin-project-lite/tests/drop_order.rs /^fn project_replace_panic() {$/;" f +projection vendor/pin-project-lite/tests/test.rs /^fn projection() {$/;" f +projection vendor/pin-utils/src/lib.rs /^mod projection;$/;" n +projection vendor/pin-utils/tests/projection.rs /^fn projection() {$/;" f +projid_t vendor/libc/src/unix/solarish/mod.rs /^pub type projid_t = ::c_int;$/;" t +prompt lib/readline/examples/excallback.c /^int prompt = 1;$/;" v typeref:typename:int +prompt lib/readline/examples/rl-callbacktest.c /^const char *prompt = "rltest$ ";$/;" v typeref:typename:const char * +prompt lib/readline/readline.h /^ char *prompt;$/;" m struct:readline_state typeref:typename:char * +prompt r_readline/src/lib.rs /^ pub prompt: *mut ::std::os::raw::c_char,$/;" m struct:readline_state +prompt-string-decoding configure.ac /^AC_ARG_ENABLE(prompt-string-decoding, AC_HELP_STRING([--enable-prompt-string-decoding], [turn on/;" e +prompt_buf lib/readline/examples/excallback.c /^char prompt_buf[40], line_buf[256];$/;" v typeref:typename:char[40] +prompt_invis_chars_first_line lib/readline/display.c /^static int prompt_invis_chars_first_line;$/;" v typeref:typename:int file: +prompt_last_invisible lib/readline/display.c /^static int prompt_last_invisible;$/;" v typeref:typename:int file: +prompt_last_screen_line lib/readline/display.c /^static int prompt_last_screen_line;$/;" v typeref:typename:int file: +prompt_modestr lib/readline/display.c /^prompt_modestr (int *lenp)$/;" f typeref:typename:char * file: +prompt_multibyte_chars lib/readline/display.c /^static int prompt_multibyte_chars;$/;" v typeref:typename:int file: +prompt_physical_chars lib/readline/display.c /^static int prompt_physical_chars;$/;" v typeref:typename:int file: +prompt_prefix_length lib/readline/display.c /^static int prompt_prefix_length;$/;" v typeref:typename:int file: +prompt_string_pointer r_bash/src/lib.rs /^ pub prompt_string_pointer: *mut *mut ::std::os::raw::c_char,$/;" m struct:_sh_parser_state_t +prompt_string_pointer shell.h /^ char **prompt_string_pointer;$/;" m struct:_sh_parser_state_t typeref:typename:char ** +prompt_visible_length lib/readline/display.c /^static int prompt_visible_length;$/;" v typeref:typename:int file: +promptvars builtins_rust/shopt/src/lib.rs /^ static mut promptvars: i32;$/;" v +prop vendor/thiserror-impl/src/lib.rs /^mod prop;$/;" n +propagate_p variables.h /^#define propagate_p(/;" d +propagate_temp_var variables.c /^propagate_temp_var (data)$/;" f file: +proper_refcount_on_wake_panic vendor/futures/tests/task_arc_wake.rs /^fn proper_refcount_on_wake_panic() {$/;" f +propidl vendor/winapi/src/um/mod.rs /^#[cfg(feature = "propidl")] pub mod propidl;$/;" n +propkey vendor/winapi/src/um/mod.rs /^#[cfg(feature = "propkey")] pub mod propkey;$/;" n +propkeydef vendor/winapi/src/um/mod.rs /^#[cfg(feature = "propkeydef")] pub mod propkeydef;$/;" n +propsys vendor/winapi/src/um/mod.rs /^#[cfg(feature = "propsys")] pub mod propsys;$/;" n +proptests vendor/memchr/src/memmem/mod.rs /^mod proptests {$/;" n +proptests vendor/memchr/src/memmem/rabinkarp.rs /^mod proptests {$/;" n +protect_html support/texi2html /^sub protect_html {$/;" s +protect_texi support/texi2html /^sub protect_texi {$/;" s +protected_mode shell.c /^int protected_mode = 0; \/* No command substitution with --wordexp *\/$/;" v typeref:typename:int +provide vendor/thiserror/src/lib.rs /^mod provide;$/;" n +provider vendor/fluent-fallback/src/localization.rs /^ provider: P,$/;" m struct:Localization +prsht vendor/winapi/src/um/mod.rs /^#[cfg(feature = "prsht")] pub mod prsht;$/;" n +ps lib/intl/Makefile.in /^info dvi ps pdf html:$/;" t +ps lib/readline/text.c /^static mbstate_t ps = {0};$/;" v typeref:typename:mbstate_t file: +ps0_prompt r_bash/src/lib.rs /^ pub static mut ps0_prompt: *mut ::std::os::raw::c_char;$/;" v +ps1_prompt r_bash/src/lib.rs /^ pub static mut ps1_prompt: *mut ::std::os::raw::c_char;$/;" v +ps2_prompt r_bash/src/lib.rs /^ pub static mut ps2_prompt: *mut ::std::os::raw::c_char;$/;" v +ps_index_t jobs.h /^typedef pid_t ps_index_t;$/;" t typeref:typename:pid_t +ps_index_t r_bash/src/lib.rs /^pub type ps_index_t = pid_t;$/;" t +psapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "psapi")] pub mod psapi;$/;" n +pselect r_bash/src/lib.rs /^ pub fn pselect($/;" f +pselect r_glob/src/lib.rs /^ pub fn pselect($/;" f +pselect r_readline/src/lib.rs /^ pub fn pselect($/;" f +pselect vendor/libc/src/fuchsia/mod.rs /^ pub fn pselect($/;" f +pselect vendor/libc/src/unix/mod.rs /^ pub fn pselect($/;" f +pset_assign vendor/libc/src/unix/solarish/mod.rs /^ pub fn pset_assign(pset: ::psetid_t, cpu: ::processorid_t, opset: *mut psetid_t) -> ::c_int;$/;" f +pset_bind vendor/libc/src/unix/solarish/mod.rs /^ pub fn pset_bind($/;" f +pset_bind_lwp vendor/libc/src/unix/solarish/illumos.rs /^ pub fn pset_bind_lwp($/;" f +pset_create vendor/libc/src/unix/solarish/mod.rs /^ pub fn pset_create(newpset: *mut ::psetid_t) -> ::c_int;$/;" f +pset_destroy vendor/libc/src/unix/solarish/mod.rs /^ pub fn pset_destroy(pset: ::psetid_t) -> ::c_int;$/;" f +pset_getattr vendor/libc/src/unix/solarish/mod.rs /^ pub fn pset_getattr(pset: psetid_t, attr: *mut ::c_uint) -> ::c_int;$/;" f +pset_getloadavg vendor/libc/src/unix/solarish/illumos.rs /^ pub fn pset_getloadavg(pset: ::psetid_t, load: *mut ::c_double, num: ::c_int) -> ::c_int;$/;" f +pset_info vendor/libc/src/unix/solarish/mod.rs /^ pub fn pset_info($/;" f +pset_list vendor/libc/src/unix/solarish/mod.rs /^ pub fn pset_list(pset: *mut psetid_t, numpsets: *mut ::c_uint) -> ::c_int;$/;" f +pset_setattr vendor/libc/src/unix/solarish/mod.rs /^ pub fn pset_setattr(pset: psetid_t, attr: ::c_uint) -> ::c_int;$/;" f +psetid_t vendor/libc/src/solid/mod.rs /^pub type psetid_t = c_int;$/;" t +psetid_t vendor/libc/src/unix/solarish/mod.rs /^pub type psetid_t = ::c_int;$/;" t +pshash_delindex jobs.c /^pshash_delindex (psi)$/;" f file: +pshash_delindex r_jobs/src/lib.rs /^unsafe extern "C" fn pshash_delindex(mut psi: ps_index_t) {$/;" f +pshash_getbucket jobs.c /^pshash_getbucket (pid)$/;" f file: +pshash_getbucket r_jobs/src/lib.rs /^unsafe extern "C" fn pshash_getbucket (pid:pid_t) -> *mut ps_index_t$/;" f +psiginfo builtins_rust/wait/src/signal.rs /^ pub fn psiginfo(__pinfo: *const siginfo_t, __s: *const ::std::os::raw::c_char);$/;" f +psiginfo r_bash/src/lib.rs /^ pub fn psiginfo(__pinfo: *const siginfo_t, __s: *const ::std::os::raw::c_char);$/;" f +psiginfo r_glob/src/lib.rs /^ pub fn psiginfo(__pinfo: *const siginfo_t, __s: *const ::std::os::raw::c_char);$/;" f +psiginfo r_readline/src/lib.rs /^ pub fn psiginfo(__pinfo: *const siginfo_t, __s: *const ::std::os::raw::c_char);$/;" f +psignal builtins_rust/wait/src/signal.rs /^ pub fn psignal(__sig: ::std::os::raw::c_int, __s: *const ::std::os::raw::c_char);$/;" f +psignal r_bash/src/lib.rs /^ pub fn psignal(__sig: ::std::os::raw::c_int, __s: *const ::std::os::raw::c_char);$/;" f +psignal r_glob/src/lib.rs /^ pub fn psignal(__sig: ::std::os::raw::c_int, __s: *const ::std::os::raw::c_char);$/;" f +psignal r_readline/src/lib.rs /^ pub fn psignal(__sig: ::std::os::raw::c_int, __s: *const ::std::os::raw::c_char);$/;" f +psize.aux builtins/Makefile.in /^psize.aux: psize.c$/;" t +pstatuses jobs.c /^static int *pstatuses; \/* list of pipeline statuses *\/$/;" v typeref:typename:int * file: +pstatuses r_jobs/src/lib.rs /^pub static mut pstatuses:*mut c_int = 0 as *mut c_int;$/;" v +pthread_atfork vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_atfork($/;" f +pthread_atfork vendor/libc/src/unix/bsd/mod.rs /^ pub fn pthread_atfork($/;" f +pthread_atfork vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_atfork($/;" f +pthread_atfork vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_atfork($/;" f +pthread_atfork vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_atfork($/;" f +pthread_atfork vendor/libc/src/unix/newlib/mod.rs /^ pub fn pthread_atfork($/;" f +pthread_atfork vendor/libc/src/unix/redox/mod.rs /^ pub fn pthread_atfork($/;" f +pthread_atfork vendor/libc/src/unix/solarish/mod.rs /^ pub fn pthread_atfork($/;" f +pthread_atfork vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_atfork($/;" f +pthread_attr_destroy vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_attr_destroy(attr: *mut ::pthread_attr_t) -> ::c_int;$/;" f +pthread_attr_destroy vendor/libc/src/unix/mod.rs /^ pub fn pthread_attr_destroy(attr: *mut ::pthread_attr_t) -> ::c_int;$/;" f +pthread_attr_destroy vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_attr_destroy(thread: *mut ::pthread_attr_t) -> ::c_int;$/;" f +pthread_attr_get_np vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_attr_get_np(tid: ::pthread_t, attr: *mut ::pthread_attr_t) -> ::c_int;$/;" f +pthread_attr_get_np vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn pthread_attr_get_np(thread: ::pthread_t, attr: *mut ::pthread_attr_t) -> ::c_int;$/;" f +pthread_attr_get_qos_class_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_attr_get_qos_class_np($/;" f +pthread_attr_getaffinity_np vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn pthread_attr_getaffinity_np($/;" f +pthread_attr_getaffinity_np vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^ pub fn pthread_attr_getaffinity_np($/;" f +pthread_attr_getguardsize vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_attr_getguardsize($/;" f +pthread_attr_getguardsize vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_attr_getguardsize($/;" f +pthread_attr_getguardsize vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn pthread_attr_getguardsize($/;" f +pthread_attr_getguardsize vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn pthread_attr_getguardsize($/;" f +pthread_attr_getguardsize vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_attr_getguardsize($/;" f +pthread_attr_getguardsize vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_attr_getguardsize($/;" f +pthread_attr_getguardsize vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_attr_getguardsize($/;" f +pthread_attr_getname vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_attr_getname(attr: *mut ::pthread_attr_t, name: *mut *mut ::c_char) -> ::c_in/;" f +pthread_attr_getprocessorid_np vendor/libc/src/unix/newlib/horizon/mod.rs /^ pub fn pthread_attr_getprocessorid_np($/;" f +pthread_attr_getschedparam vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_attr_getschedparam($/;" f +pthread_attr_getschedparam vendor/libc/src/unix/newlib/horizon/mod.rs /^ pub fn pthread_attr_getschedparam($/;" f +pthread_attr_getstack vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_attr_getstack($/;" f +pthread_attr_getstack vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_attr_getstack($/;" f +pthread_attr_getstack vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn pthread_attr_getstack($/;" f +pthread_attr_getstack vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn pthread_attr_getstack($/;" f +pthread_attr_getstack vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_attr_getstack($/;" f +pthread_attr_getstack vendor/libc/src/unix/linux_like/mod.rs /^ pub fn pthread_attr_getstack($/;" f +pthread_attr_getstack vendor/libc/src/unix/solarish/mod.rs /^ pub fn pthread_attr_getstack($/;" f +pthread_attr_getstacksize vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_attr_getstacksize(attr: *const ::pthread_attr_t, size: *mut ::size_t)$/;" f +pthread_attr_init vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_attr_init(attr: *mut ::pthread_attr_t) -> ::c_int;$/;" f +pthread_attr_init vendor/libc/src/unix/mod.rs /^ pub fn pthread_attr_init(attr: *mut ::pthread_attr_t) -> ::c_int;$/;" f +pthread_attr_init vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_attr_init(attr: *mut ::pthread_attr_t) -> ::c_int;$/;" f +pthread_attr_set_qos_class_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_attr_set_qos_class_np($/;" f +pthread_attr_setaffinity_np vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn pthread_attr_setaffinity_np($/;" f +pthread_attr_setaffinity_np vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^ pub fn pthread_attr_setaffinity_np($/;" f +pthread_attr_setdetachstate vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_attr_setdetachstate(attr: *mut ::pthread_attr_t, state: ::c_int) -> ::c_int;$/;" f +pthread_attr_setdetachstate vendor/libc/src/unix/mod.rs /^ pub fn pthread_attr_setdetachstate(attr: *mut ::pthread_attr_t, state: ::c_int) -> ::c_int;$/;" f +pthread_attr_setdetachstate vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_attr_setdetachstate(attr: *mut ::pthread_attr_t, state: ::c_int) -> ::c_int;$/;" f +pthread_attr_setname vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_attr_setname(pAttr: *mut ::pthread_attr_t, name: *mut ::c_char) -> ::c_int;$/;" f +pthread_attr_setprocessorid_np vendor/libc/src/unix/newlib/horizon/mod.rs /^ pub fn pthread_attr_setprocessorid_np($/;" f +pthread_attr_setschedparam vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_attr_setschedparam($/;" f +pthread_attr_setschedparam vendor/libc/src/unix/newlib/horizon/mod.rs /^ pub fn pthread_attr_setschedparam($/;" f +pthread_attr_setstacksize vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_attr_setstacksize(attr: *mut ::pthread_attr_t, stack_size: ::size_t) -> ::c_i/;" f +pthread_attr_setstacksize vendor/libc/src/unix/mod.rs /^ pub fn pthread_attr_setstacksize(attr: *mut ::pthread_attr_t, stack_size: ::size_t) -> ::c_i/;" f +pthread_attr_setstacksize vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_attr_setstacksize(attr: *mut ::pthread_attr_t, stacksize: ::size_t) -> ::c_in/;" f +pthread_attr_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type pthread_attr_t = *mut ::c_void;$/;" t +pthread_attr_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type pthread_attr_t = *mut ::c_void;$/;" t +pthread_attr_t vendor/libc/src/unix/haiku/mod.rs /^pub type pthread_attr_t = *mut ::c_void;$/;" t +pthread_attr_t vendor/libc/src/unix/hermit/mod.rs /^pub type pthread_attr_t = usize;$/;" t +pthread_attr_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^pub struct pthread_attr_t {$/;" s +pthread_attr_t vendor/libc/src/unix/redox/mod.rs /^pub type pthread_attr_t = *mut ::c_void;$/;" t +pthread_barrier_destroy vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_barrier_destroy(barrier: *mut pthread_barrier_t) -> ::c_int;$/;" f +pthread_barrier_destroy vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_barrier_destroy(barrier: *mut pthread_barrier_t) -> ::c_int;$/;" f +pthread_barrier_init vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_barrier_init($/;" f +pthread_barrier_init vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_barrier_init($/;" f +pthread_barrier_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type pthread_barrier_t = ::uintptr_t;$/;" t +pthread_barrier_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type pthread_barrier_t = *mut __c_anonymous_pthread_barrier;$/;" t +pthread_barrier_wait vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_barrier_wait(barrier: *mut pthread_barrier_t) -> ::c_int;$/;" f +pthread_barrier_wait vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_barrier_wait(barrier: *mut pthread_barrier_t) -> ::c_int;$/;" f +pthread_barrierattr_destroy vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_barrierattr_destroy(attr: *mut ::pthread_barrierattr_t) -> ::c_int;$/;" f +pthread_barrierattr_destroy vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_barrierattr_destroy(attr: *mut ::pthread_barrierattr_t) -> ::c_int;$/;" f +pthread_barrierattr_getpshared vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_barrierattr_getpshared($/;" f +pthread_barrierattr_getpshared vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_barrierattr_getpshared($/;" f +pthread_barrierattr_init vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_barrierattr_init(attr: *mut ::pthread_barrierattr_t) -> ::c_int;$/;" f +pthread_barrierattr_init vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_barrierattr_init(attr: *mut ::pthread_barrierattr_t) -> ::c_int;$/;" f +pthread_barrierattr_setpshared vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_barrierattr_setpshared($/;" f +pthread_barrierattr_setpshared vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_barrierattr_setpshared($/;" f +pthread_barrierattr_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type pthread_barrierattr_t = ::c_int;$/;" t +pthread_barrierattr_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type pthread_barrierattr_t = *mut __c_anonymous_pthread_barrierattr;$/;" t +pthread_barrierattr_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type pthread_barrierattr_t = ::c_int;$/;" t +pthread_cancel vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_cancel(thread: ::pthread_t) -> ::c_int;$/;" f +pthread_cancel vendor/libc/src/unix/bsd/mod.rs /^ pub fn pthread_cancel(thread: ::pthread_t) -> ::c_int;$/;" f +pthread_cancel vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_cancel(thread: ::pthread_t) -> ::c_int;$/;" f +pthread_cancel vendor/libc/src/unix/redox/mod.rs /^ pub fn pthread_cancel(thread: ::pthread_t) -> ::c_int;$/;" f +pthread_cond_broadcast vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_cond_broadcast(cond: *mut pthread_cond_t) -> ::c_int;$/;" f +pthread_cond_broadcast vendor/libc/src/unix/mod.rs /^ pub fn pthread_cond_broadcast(cond: *mut pthread_cond_t) -> ::c_int;$/;" f +pthread_cond_broadcast vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_cond_broadcast(cond: *mut ::pthread_cond_t) -> ::c_int;$/;" f +pthread_cond_destroy vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_cond_destroy(cond: *mut pthread_cond_t) -> ::c_int;$/;" f +pthread_cond_destroy vendor/libc/src/unix/mod.rs /^ pub fn pthread_cond_destroy(cond: *mut pthread_cond_t) -> ::c_int;$/;" f +pthread_cond_destroy vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_cond_destroy(cond: *mut pthread_cond_t) -> ::c_int;$/;" f +pthread_cond_init vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_cond_init(cond: *mut pthread_cond_t, attr: *const pthread_condattr_t)$/;" f +pthread_cond_init vendor/libc/src/unix/mod.rs /^ pub fn pthread_cond_init(cond: *mut pthread_cond_t, attr: *const pthread_condattr_t)$/;" f +pthread_cond_init vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_cond_init($/;" f +pthread_cond_signal vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_cond_signal(cond: *mut pthread_cond_t) -> ::c_int;$/;" f +pthread_cond_signal vendor/libc/src/unix/mod.rs /^ pub fn pthread_cond_signal(cond: *mut pthread_cond_t) -> ::c_int;$/;" f +pthread_cond_signal vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_cond_signal(cond: *mut ::pthread_cond_t) -> ::c_int;$/;" f +pthread_cond_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type pthread_cond_t = *mut ::c_void;$/;" t +pthread_cond_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type pthread_cond_t = *mut ::c_void;$/;" t +pthread_cond_t vendor/libc/src/unix/hermit/mod.rs /^pub type pthread_cond_t = usize;$/;" t +pthread_cond_t vendor/libc/src/unix/redox/mod.rs /^pub type pthread_cond_t = *mut ::c_void;$/;" t +pthread_cond_timedwait vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_cond_timedwait($/;" f +pthread_cond_timedwait vendor/libc/src/unix/mod.rs /^ pub fn pthread_cond_timedwait($/;" f +pthread_cond_timedwait vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_cond_timedwait($/;" f +pthread_cond_wait vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_cond_wait(cond: *mut pthread_cond_t, lock: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_cond_wait vendor/libc/src/unix/mod.rs /^ pub fn pthread_cond_wait(cond: *mut pthread_cond_t, lock: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_cond_wait vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_cond_wait(cond: *mut ::pthread_cond_t, mutex: *mut ::pthread_mutex_t)$/;" f +pthread_condattr_destroy vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_condattr_destroy(attr: *mut pthread_condattr_t) -> ::c_int;$/;" f +pthread_condattr_destroy vendor/libc/src/unix/mod.rs /^ pub fn pthread_condattr_destroy(attr: *mut pthread_condattr_t) -> ::c_int;$/;" f +pthread_condattr_destroy vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_condattr_destroy(attr: *mut ::pthread_condattr_t) -> ::c_int;$/;" f +pthread_condattr_getclock vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_condattr_getclock($/;" f +pthread_condattr_getclock vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_condattr_getclock($/;" f +pthread_condattr_getclock vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_condattr_getclock($/;" f +pthread_condattr_getclock vendor/libc/src/unix/linux_like/mod.rs /^ pub fn pthread_condattr_getclock($/;" f +pthread_condattr_getclock vendor/libc/src/unix/newlib/horizon/mod.rs /^ pub fn pthread_condattr_getclock($/;" f +pthread_condattr_getclock vendor/libc/src/unix/solarish/mod.rs /^ pub fn pthread_condattr_getclock($/;" f +pthread_condattr_getclock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_condattr_getclock($/;" f +pthread_condattr_getpshared vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_condattr_getpshared($/;" f +pthread_condattr_getpshared vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_condattr_getpshared($/;" f +pthread_condattr_getpshared vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_condattr_getpshared($/;" f +pthread_condattr_getpshared vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_condattr_getpshared($/;" f +pthread_condattr_init vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_condattr_init(attr: *mut pthread_condattr_t) -> ::c_int;$/;" f +pthread_condattr_init vendor/libc/src/unix/mod.rs /^ pub fn pthread_condattr_init(attr: *mut pthread_condattr_t) -> ::c_int;$/;" f +pthread_condattr_init vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_condattr_init(attr: *mut ::pthread_condattr_t) -> ::c_int;$/;" f +pthread_condattr_setclock vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_condattr_setclock($/;" f +pthread_condattr_setclock vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_condattr_setclock($/;" f +pthread_condattr_setclock vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn pthread_condattr_setclock($/;" f +pthread_condattr_setclock vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_condattr_setclock($/;" f +pthread_condattr_setclock vendor/libc/src/unix/linux_like/mod.rs /^ pub fn pthread_condattr_setclock($/;" f +pthread_condattr_setclock vendor/libc/src/unix/newlib/horizon/mod.rs /^ pub fn pthread_condattr_setclock($/;" f +pthread_condattr_setclock vendor/libc/src/unix/redox/mod.rs /^ pub fn pthread_condattr_setclock($/;" f +pthread_condattr_setclock vendor/libc/src/unix/solarish/mod.rs /^ pub fn pthread_condattr_setclock($/;" f +pthread_condattr_setclock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_condattr_setclock($/;" f +pthread_condattr_setpshared vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t, pshared: ::c_int) -> ::c_i/;" f +pthread_condattr_setpshared vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t, pshared: ::c_int) -> ::c_i/;" f +pthread_condattr_setpshared vendor/libc/src/unix/linux_like/mod.rs /^ pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t, pshared: ::c_int) -> ::c_i/;" f +pthread_condattr_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type pthread_condattr_t = *mut ::c_void;$/;" t +pthread_condattr_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type pthread_condattr_t = *mut ::c_void;$/;" t +pthread_condattr_t vendor/libc/src/unix/haiku/mod.rs /^pub type pthread_condattr_t = ::uintptr_t;$/;" t +pthread_condattr_t vendor/libc/src/unix/hermit/mod.rs /^pub type pthread_condattr_t = usize;$/;" t +pthread_condattr_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type pthread_condattr_t = ::c_long;$/;" t +pthread_condattr_t vendor/libc/src/unix/redox/mod.rs /^pub type pthread_condattr_t = *mut ::c_void;$/;" t +pthread_cpu_number_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_cpu_number_np(cpu_number_out: *mut ::size_t) -> ::c_int;$/;" f +pthread_create vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_create($/;" f +pthread_create vendor/libc/src/unix/bsd/mod.rs /^ pub fn pthread_create($/;" f +pthread_create vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_create($/;" f +pthread_create vendor/libc/src/unix/hermit/mod.rs /^ pub fn pthread_create($/;" f +pthread_create vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_create($/;" f +pthread_create vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn pthread_create($/;" f +pthread_create vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_create($/;" f +pthread_create vendor/libc/src/unix/newlib/espidf/mod.rs /^ pub fn pthread_create($/;" f +pthread_create vendor/libc/src/unix/newlib/horizon/mod.rs /^ pub fn pthread_create($/;" f +pthread_create vendor/libc/src/unix/redox/mod.rs /^ pub fn pthread_create($/;" f +pthread_create vendor/libc/src/unix/solarish/mod.rs /^ pub fn pthread_create($/;" f +pthread_create vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_create($/;" f +pthread_create_from_mach_thread vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_create_from_mach_thread($/;" f +pthread_detach vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_detach(thread: ::pthread_t) -> ::c_int;$/;" f +pthread_detach vendor/libc/src/unix/mod.rs /^ pub fn pthread_detach(thread: ::pthread_t) -> ::c_int;$/;" f +pthread_detach vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_detach(thread: ::pthread_t) -> ::c_int;$/;" f +pthread_exit vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_exit(value: *mut ::c_void) -> !;$/;" f +pthread_exit vendor/libc/src/unix/mod.rs /^ pub fn pthread_exit(value: *mut ::c_void) -> !;$/;" f +pthread_exit vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_exit(value: *mut ::c_void) -> !;$/;" f +pthread_from_mach_thread_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_from_mach_thread_np(port: ::mach_port_t) -> ::pthread_t;$/;" f +pthread_get_name_np vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_get_name_np(tid: ::pthread_t, name: *mut ::c_char, len: ::size_t);$/;" f +pthread_get_name_np vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn pthread_get_name_np(tid: ::pthread_t, name: *mut ::c_char, len: ::size_t);$/;" f +pthread_get_qos_class_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_get_qos_class_np($/;" f +pthread_get_stackaddr_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_get_stackaddr_np(thread: ::pthread_t) -> *mut ::c_void;$/;" f +pthread_get_stacksize_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_get_stacksize_np(thread: ::pthread_t) -> ::size_t;$/;" f +pthread_getaffinity_np vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pthread_getaffinity_np($/;" f +pthread_getaffinity_np vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn pthread_getaffinity_np($/;" f +pthread_getaffinity_np vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_getaffinity_np($/;" f +pthread_getattr_np vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_getattr_np(native: ::pthread_t, attr: *mut ::pthread_attr_t) -> ::c_int;$/;" f +pthread_getattr_np vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn pthread_getattr_np(native: ::pthread_t, attr: *mut ::pthread_attr_t) -> ::c_int;$/;" f +pthread_getattr_np vendor/libc/src/unix/linux_like/mod.rs /^ pub fn pthread_getattr_np(native: ::pthread_t, attr: *mut ::pthread_attr_t) -> ::c_int;$/;" f +pthread_getattr_np vendor/libc/src/unix/solarish/solaris.rs /^ pub fn pthread_getattr_np(thread: ::pthread_t, attr: *mut ::pthread_attr_t) -> ::c_int;$/;" f +pthread_getcpuclockid vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_getcpuclockid(thread: ::pthread_t, clk_id: *mut ::clockid_t) -> ::c_int;$/;" f +pthread_getcpuclockid vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_getcpuclockid(thread: ::pthread_t, clk_id: *mut ::clockid_t) -> ::c_int;$/;" f +pthread_getcpuclockid vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_getcpuclockid(thread: ::pthread_t, clk_id: *mut ::clockid_t) -> ::c_int;$/;" f +pthread_getname_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_getname_np(thread: ::pthread_t, name: *mut ::c_char, len: ::size_t) -> ::c_in/;" f +pthread_getname_np vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn pthread_getname_np(t: ::pthread_t, name: *mut ::c_char, len: ::size_t) -> ::c_int;$/;" f +pthread_getname_np vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_getname_np(thread: ::pthread_t, name: *mut ::c_char, len: ::size_t) -> ::c_in/;" f +pthread_getname_np vendor/libc/src/unix/solarish/mod.rs /^ pub fn pthread_getname_np(tid: ::pthread_t, name: *mut ::c_char, len: ::size_t) -> ::c_int;$/;" f +pthread_getprocessorid_np vendor/libc/src/unix/newlib/horizon/mod.rs /^ pub fn pthread_getprocessorid_np() -> ::c_int;$/;" f +pthread_getschedparam vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_getschedparam($/;" f +pthread_getschedparam vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_getschedparam($/;" f +pthread_getschedparam vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn pthread_getschedparam($/;" f +pthread_getschedparam vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_getschedparam($/;" f +pthread_getschedparam vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_getschedparam($/;" f +pthread_getschedparam vendor/libc/src/unix/newlib/horizon/mod.rs /^ pub fn pthread_getschedparam($/;" f +pthread_getspecific vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_getspecific(key: pthread_key_t) -> *mut ::c_void;$/;" f +pthread_getspecific vendor/libc/src/unix/mod.rs /^ pub fn pthread_getspecific(key: pthread_key_t) -> *mut ::c_void;$/;" f +pthread_getspecific vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_getspecific(key: ::pthread_key_t) -> *mut ::c_void;$/;" f +pthread_getthreadid_np vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pthread_getthreadid_np() -> ::c_int;$/;" f +pthread_introspection_getspecific_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_introspection_getspecific_np($/;" f +pthread_introspection_hook_install vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_introspection_hook_install($/;" f +pthread_introspection_hook_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type pthread_introspection_hook_t =$/;" t +pthread_introspection_setspecific_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_introspection_setspecific_np($/;" f +pthread_jit_write_callback_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type pthread_jit_write_callback_t = ::Option ::c_int>;$/;" t +pthread_jit_write_freeze_callbacks_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_jit_write_freeze_callbacks_np();$/;" f +pthread_jit_write_protect_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_jit_write_protect_np(enabled: ::c_int);$/;" f +pthread_jit_write_protect_supported_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_jit_write_protect_supported_np() -> ::c_int;$/;" f +pthread_jit_write_with_callback_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_jit_write_with_callback_np($/;" f +pthread_join vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_join(native: ::pthread_t, value: *mut *mut ::c_void) -> ::c_int;$/;" f +pthread_join vendor/libc/src/unix/mod.rs /^ pub fn pthread_join(native: ::pthread_t, value: *mut *mut ::c_void) -> ::c_int;$/;" f +pthread_join vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_join(thread: ::pthread_t, status: *mut *mut ::c_void) -> ::c_int;$/;" f +pthread_key_create vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_key_create($/;" f +pthread_key_create vendor/libc/src/unix/mod.rs /^ pub fn pthread_key_create($/;" f +pthread_key_create vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_key_create($/;" f +pthread_key_delete vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_key_delete(key: pthread_key_t) -> ::c_int;$/;" f +pthread_key_delete vendor/libc/src/unix/mod.rs /^ pub fn pthread_key_delete(key: pthread_key_t) -> ::c_int;$/;" f +pthread_key_delete vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_key_delete(key: ::pthread_key_t) -> ::c_int;$/;" f +pthread_key_t builtins_rust/wait/src/signal.rs /^pub type pthread_key_t = ::std::os::raw::c_uint;$/;" t +pthread_key_t r_bash/src/lib.rs /^pub type pthread_key_t = ::std::os::raw::c_uint;$/;" t +pthread_key_t r_glob/src/lib.rs /^pub type pthread_key_t = ::std::os::raw::c_uint;$/;" t +pthread_key_t r_readline/src/lib.rs /^pub type pthread_key_t = ::std::os::raw::c_uint;$/;" t +pthread_key_t vendor/libc/src/fuchsia/mod.rs /^pub type pthread_key_t = ::c_uint;$/;" t +pthread_key_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type pthread_key_t = c_ulong;$/;" t +pthread_key_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type pthread_key_t = ::c_int;$/;" t +pthread_key_t vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type pthread_key_t = ::c_int;$/;" t +pthread_key_t vendor/libc/src/unix/haiku/mod.rs /^pub type pthread_key_t = ::c_int;$/;" t +pthread_key_t vendor/libc/src/unix/hermit/mod.rs /^pub type pthread_key_t = usize;$/;" t +pthread_key_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type pthread_key_t = ::c_int;$/;" t +pthread_key_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type pthread_key_t = ::c_uint;$/;" t +pthread_key_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type pthread_key_t = ::c_uint;$/;" t +pthread_key_t vendor/libc/src/unix/newlib/mod.rs /^pub type pthread_key_t = ::c_uint;$/;" t +pthread_key_t vendor/libc/src/unix/redox/mod.rs /^pub type pthread_key_t = usize;$/;" t +pthread_key_t vendor/libc/src/unix/solarish/mod.rs /^pub type pthread_key_t = ::c_uint;$/;" t +pthread_key_t vendor/libc/src/vxworks/mod.rs /^pub type pthread_key_t = ::c_ulong;$/;" t +pthread_kill builtins_rust/wait/src/signal.rs /^ pub fn pthread_kill($/;" f +pthread_kill r_bash/src/lib.rs /^ pub fn pthread_kill($/;" f +pthread_kill r_glob/src/lib.rs /^ pub fn pthread_kill($/;" f +pthread_kill r_readline/src/lib.rs /^ pub fn pthread_kill($/;" f +pthread_kill vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int;$/;" f +pthread_kill vendor/libc/src/unix/bsd/mod.rs /^ pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int;$/;" f +pthread_kill vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int;$/;" f +pthread_kill vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int;$/;" f +pthread_kill vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int;$/;" f +pthread_kill vendor/libc/src/unix/newlib/mod.rs /^ pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int;$/;" f +pthread_kill vendor/libc/src/unix/redox/mod.rs /^ pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int;$/;" f +pthread_kill vendor/libc/src/unix/solarish/mod.rs /^ pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int;$/;" f +pthread_mach_thread_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_mach_thread_np(thread: ::pthread_t) -> ::mach_port_t;$/;" f +pthread_main_np vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_main_np() -> ::c_int;$/;" f +pthread_main_np vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn pthread_main_np() -> ::c_int;$/;" f +pthread_mutex_consistent vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pthread_mutex_consistent(mutex: *mut ::pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_consistent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_mutex_consistent(mutex: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_destroy vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_mutex_destroy(lock: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_destroy vendor/libc/src/unix/mod.rs /^ pub fn pthread_mutex_destroy(lock: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_destroy vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_mutex_destroy(mutex: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_init vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_mutex_init($/;" f +pthread_mutex_init vendor/libc/src/unix/mod.rs /^ pub fn pthread_mutex_init($/;" f +pthread_mutex_init vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_mutex_init($/;" f +pthread_mutex_lock vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_mutex_lock(lock: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_lock vendor/libc/src/unix/mod.rs /^ pub fn pthread_mutex_lock(lock: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_lock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_mutex_lock(mutex: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type pthread_mutex_t = *mut ::c_void;$/;" t +pthread_mutex_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type pthread_mutex_t = *mut ::c_void;$/;" t +pthread_mutex_t vendor/libc/src/unix/hermit/mod.rs /^pub type pthread_mutex_t = usize;$/;" t +pthread_mutex_t vendor/libc/src/unix/redox/mod.rs /^pub type pthread_mutex_t = *mut ::c_void;$/;" t +pthread_mutex_timedlock vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_mutex_timedlock($/;" f +pthread_mutex_timedlock vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_mutex_timedlock($/;" f +pthread_mutex_timedlock vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn pthread_mutex_timedlock($/;" f +pthread_mutex_timedlock vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_mutex_timedlock($/;" f +pthread_mutex_timedlock vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_mutex_timedlock($/;" f +pthread_mutex_timedlock vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_mutex_timedlock($/;" f +pthread_mutex_timedlock vendor/libc/src/unix/solarish/mod.rs /^ pub fn pthread_mutex_timedlock($/;" f +pthread_mutex_timedlock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_mutex_timedlock(attr: *mut pthread_mutex_t, spec: *const timespec) -> ::c_int/;" f +pthread_mutex_trylock vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_mutex_trylock(lock: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_trylock vendor/libc/src/unix/mod.rs /^ pub fn pthread_mutex_trylock(lock: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_trylock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_mutex_trylock(mutex: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_unlock vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_mutex_unlock(lock: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_unlock vendor/libc/src/unix/mod.rs /^ pub fn pthread_mutex_unlock(lock: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutex_unlock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_mutex_unlock(mutex: *mut pthread_mutex_t) -> ::c_int;$/;" f +pthread_mutexattr_destroy vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_mutexattr_destroy(attr: *mut pthread_mutexattr_t) -> ::c_int;$/;" f +pthread_mutexattr_destroy vendor/libc/src/unix/mod.rs /^ pub fn pthread_mutexattr_destroy(attr: *mut pthread_mutexattr_t) -> ::c_int;$/;" f +pthread_mutexattr_destroy vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_mutexattr_destroy(attr: *mut pthread_mutexattr_t) -> ::c_int;$/;" f +pthread_mutexattr_getprotocol vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_mutexattr_getprotocol($/;" f +pthread_mutexattr_getpshared vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_mutexattr_getpshared($/;" f +pthread_mutexattr_getpshared vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_mutexattr_getpshared($/;" f +pthread_mutexattr_getpshared vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_mutexattr_getpshared($/;" f +pthread_mutexattr_getpshared vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_mutexattr_getpshared($/;" f +pthread_mutexattr_getrobust vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pthread_mutexattr_getrobust($/;" f +pthread_mutexattr_getrobust vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_mutexattr_getrobust($/;" f +pthread_mutexattr_init vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_mutexattr_init(attr: *mut pthread_mutexattr_t) -> ::c_int;$/;" f +pthread_mutexattr_init vendor/libc/src/unix/mod.rs /^ pub fn pthread_mutexattr_init(attr: *mut pthread_mutexattr_t) -> ::c_int;$/;" f +pthread_mutexattr_init vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_mutexattr_init(attr: *mut pthread_mutexattr_t) -> ::c_int;$/;" f +pthread_mutexattr_setprotocol vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_mutexattr_setprotocol($/;" f +pthread_mutexattr_setpshared vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_mutexattr_setpshared($/;" f +pthread_mutexattr_setpshared vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_mutexattr_setpshared($/;" f +pthread_mutexattr_setpshared vendor/libc/src/unix/linux_like/mod.rs /^ pub fn pthread_mutexattr_setpshared($/;" f +pthread_mutexattr_setrobust vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pthread_mutexattr_setrobust($/;" f +pthread_mutexattr_setrobust vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_mutexattr_setrobust($/;" f +pthread_mutexattr_settype vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_mutexattr_settype(attr: *mut pthread_mutexattr_t, _type: ::c_int) -> ::c_int;$/;" f +pthread_mutexattr_settype vendor/libc/src/unix/mod.rs /^ pub fn pthread_mutexattr_settype(attr: *mut pthread_mutexattr_t, _type: ::c_int) -> ::c_int;$/;" f +pthread_mutexattr_settype vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_mutexattr_settype(pAttr: *mut ::pthread_mutexattr_t, pType: ::c_int) -> ::c_i/;" f +pthread_mutexattr_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type pthread_mutexattr_t = *mut ::c_void;$/;" t +pthread_mutexattr_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type pthread_mutexattr_t = *mut ::c_void;$/;" t +pthread_mutexattr_t vendor/libc/src/unix/haiku/mod.rs /^pub type pthread_mutexattr_t = ::uintptr_t;$/;" t +pthread_mutexattr_t vendor/libc/src/unix/hermit/mod.rs /^pub type pthread_mutexattr_t = usize;$/;" t +pthread_mutexattr_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type pthread_mutexattr_t = ::c_long;$/;" t +pthread_mutexattr_t vendor/libc/src/unix/redox/mod.rs /^pub type pthread_mutexattr_t = *mut ::c_void;$/;" t +pthread_once_t builtins_rust/wait/src/signal.rs /^pub type pthread_once_t = ::std::os::raw::c_int;$/;" t +pthread_once_t r_bash/src/lib.rs /^pub type pthread_once_t = ::std::os::raw::c_int;$/;" t +pthread_once_t r_glob/src/lib.rs /^pub type pthread_once_t = ::std::os::raw::c_int;$/;" t +pthread_once_t r_readline/src/lib.rs /^pub type pthread_once_t = ::std::os::raw::c_int;$/;" t +pthread_rwlock_destroy vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_rwlock_destroy(lock: *mut pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_destroy vendor/libc/src/unix/mod.rs /^ pub fn pthread_rwlock_destroy(lock: *mut pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_destroy vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_rwlock_destroy(attr: *mut ::pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_init vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_rwlock_init($/;" f +pthread_rwlock_init vendor/libc/src/unix/mod.rs /^ pub fn pthread_rwlock_init($/;" f +pthread_rwlock_init vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_rwlock_init($/;" f +pthread_rwlock_rdlock vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_rwlock_rdlock(lock: *mut pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_rdlock vendor/libc/src/unix/mod.rs /^ pub fn pthread_rwlock_rdlock(lock: *mut pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_rdlock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_rwlock_rdlock(attr: *mut ::pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type pthread_rwlock_t = *mut ::c_void;$/;" t +pthread_rwlock_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type pthread_rwlock_t = *mut ::c_void;$/;" t +pthread_rwlock_t vendor/libc/src/unix/hermit/mod.rs /^pub type pthread_rwlock_t = usize;$/;" t +pthread_rwlock_t vendor/libc/src/unix/redox/mod.rs /^pub type pthread_rwlock_t = *mut ::c_void;$/;" t +pthread_rwlock_timedrdlock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_rwlock_timedrdlock($/;" f +pthread_rwlock_timedwrlock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_rwlock_timedwrlock($/;" f +pthread_rwlock_tryrdlock vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_rwlock_tryrdlock(lock: *mut pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_tryrdlock vendor/libc/src/unix/mod.rs /^ pub fn pthread_rwlock_tryrdlock(lock: *mut pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_tryrdlock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_rwlock_tryrdlock(attr: *mut ::pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_trywrlock vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_rwlock_trywrlock(lock: *mut pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_trywrlock vendor/libc/src/unix/mod.rs /^ pub fn pthread_rwlock_trywrlock(lock: *mut pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_trywrlock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_rwlock_trywrlock(attr: *mut ::pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_unlock vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_rwlock_unlock(lock: *mut pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_unlock vendor/libc/src/unix/mod.rs /^ pub fn pthread_rwlock_unlock(lock: *mut pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_unlock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_rwlock_unlock(attr: *mut ::pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_wrlock vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_rwlock_wrlock(lock: *mut pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_wrlock vendor/libc/src/unix/mod.rs /^ pub fn pthread_rwlock_wrlock(lock: *mut pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlock_wrlock vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_rwlock_wrlock(attr: *mut ::pthread_rwlock_t) -> ::c_int;$/;" f +pthread_rwlockattr_destroy vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_rwlockattr_destroy(attr: *mut pthread_rwlockattr_t) -> ::c_int;$/;" f +pthread_rwlockattr_destroy vendor/libc/src/unix/mod.rs /^ pub fn pthread_rwlockattr_destroy(attr: *mut pthread_rwlockattr_t) -> ::c_int;$/;" f +pthread_rwlockattr_destroy vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_rwlockattr_destroy(attr: *mut ::pthread_rwlockattr_t) -> ::c_int;$/;" f +pthread_rwlockattr_getkind_np vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn pthread_rwlockattr_getkind_np($/;" f +pthread_rwlockattr_getkind_np vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn pthread_rwlockattr_getkind_np($/;" f +pthread_rwlockattr_getpshared vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_rwlockattr_getpshared($/;" f +pthread_rwlockattr_getpshared vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_rwlockattr_getpshared($/;" f +pthread_rwlockattr_getpshared vendor/libc/src/unix/linux_like/mod.rs /^ pub fn pthread_rwlockattr_getpshared($/;" f +pthread_rwlockattr_init vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_rwlockattr_init(attr: *mut pthread_rwlockattr_t) -> ::c_int;$/;" f +pthread_rwlockattr_init vendor/libc/src/unix/mod.rs /^ pub fn pthread_rwlockattr_init(attr: *mut pthread_rwlockattr_t) -> ::c_int;$/;" f +pthread_rwlockattr_init vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_rwlockattr_init(attr: *mut ::pthread_rwlockattr_t) -> ::c_int;$/;" f +pthread_rwlockattr_setkind_np vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn pthread_rwlockattr_setkind_np($/;" f +pthread_rwlockattr_setkind_np vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn pthread_rwlockattr_setkind_np($/;" f +pthread_rwlockattr_setmaxreaders vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_rwlockattr_setmaxreaders($/;" f +pthread_rwlockattr_setpshared vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_rwlockattr_setpshared(attr: *mut pthread_rwlockattr_t, val: ::c_int) -> ::c_i/;" f +pthread_rwlockattr_setpshared vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_rwlockattr_setpshared(attr: *mut pthread_rwlockattr_t, val: ::c_int) -> ::c_i/;" f +pthread_rwlockattr_setpshared vendor/libc/src/unix/linux_like/mod.rs /^ pub fn pthread_rwlockattr_setpshared(attr: *mut pthread_rwlockattr_t, val: ::c_int) -> ::c_i/;" f +pthread_rwlockattr_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type pthread_rwlockattr_t = *mut ::c_void;$/;" t +pthread_rwlockattr_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type pthread_rwlockattr_t = *mut ::c_void;$/;" t +pthread_rwlockattr_t vendor/libc/src/unix/haiku/mod.rs /^pub type pthread_rwlockattr_t = ::uintptr_t;$/;" t +pthread_rwlockattr_t vendor/libc/src/unix/hermit/mod.rs /^pub type pthread_rwlockattr_t = usize;$/;" t +pthread_rwlockattr_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type pthread_rwlockattr_t = ::c_long;$/;" t +pthread_rwlockattr_t vendor/libc/src/unix/redox/mod.rs /^pub type pthread_rwlockattr_t = *mut ::c_void;$/;" t +pthread_self vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_self() -> ::pthread_t;$/;" f +pthread_self vendor/libc/src/unix/mod.rs /^ pub fn pthread_self() -> ::pthread_t;$/;" f +pthread_self vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_self() -> ::pthread_t;$/;" f +pthread_self vendor/nix/src/sys/pthread.rs /^pub fn pthread_self() -> Pthread {$/;" f +pthread_set_name_np vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_set_name_np(tid: ::pthread_t, name: *const ::c_char);$/;" f +pthread_set_name_np vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn pthread_set_name_np(tid: ::pthread_t, name: *const ::c_char);$/;" f +pthread_set_qos_class_self_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_set_qos_class_self_np(class: qos_class_t, priority: ::c_int) -> ::c_int;$/;" f +pthread_setaffinity_np vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pthread_setaffinity_np($/;" f +pthread_setaffinity_np vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn pthread_setaffinity_np($/;" f +pthread_setaffinity_np vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_setaffinity_np($/;" f +pthread_setname_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_setname_np(name: *const ::c_char) -> ::c_int;$/;" f +pthread_setname_np vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn pthread_setname_np($/;" f +pthread_setname_np vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_setname_np(thread: ::pthread_t, name: *const ::c_char) -> ::c_int;$/;" f +pthread_setname_np vendor/libc/src/unix/solarish/mod.rs /^ pub fn pthread_setname_np(tid: ::pthread_t, name: *const ::c_char) -> ::c_int;$/;" f +pthread_setschedparam vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_setschedparam($/;" f +pthread_setschedparam vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pthread_setschedparam($/;" f +pthread_setschedparam vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn pthread_setschedparam($/;" f +pthread_setschedparam vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_setschedparam($/;" f +pthread_setschedparam vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_setschedparam($/;" f +pthread_setschedparam vendor/libc/src/unix/newlib/horizon/mod.rs /^ pub fn pthread_setschedparam($/;" f +pthread_setschedprio vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_setschedprio(native: ::pthread_t, priority: ::c_int) -> ::c_int;$/;" f +pthread_setspecific vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_setspecific(key: pthread_key_t, value: *const ::c_void) -> ::c_int;$/;" f +pthread_setspecific vendor/libc/src/unix/mod.rs /^ pub fn pthread_setspecific(key: pthread_key_t, value: *const ::c_void) -> ::c_int;$/;" f +pthread_setspecific vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_setspecific(key: ::pthread_key_t, value: *const ::c_void) -> ::c_int;$/;" f +pthread_sigmask builtins_rust/wait/src/signal.rs /^ pub fn pthread_sigmask($/;" f +pthread_sigmask r_bash/src/lib.rs /^ pub fn pthread_sigmask($/;" f +pthread_sigmask r_glob/src/lib.rs /^ pub fn pthread_sigmask($/;" f +pthread_sigmask r_readline/src/lib.rs /^ pub fn pthread_sigmask($/;" f +pthread_sigmask vendor/libc/src/fuchsia/mod.rs /^ pub fn pthread_sigmask(how: ::c_int, set: *const sigset_t, oldset: *mut sigset_t) -> ::c_int/;" f +pthread_sigmask vendor/libc/src/unix/bsd/mod.rs /^ pub fn pthread_sigmask(how: ::c_int, set: *const sigset_t, oldset: *mut sigset_t) -> ::c_int/;" f +pthread_sigmask vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_sigmask(how: ::c_int, set: *const sigset_t, oldset: *mut sigset_t) -> ::c_int/;" f +pthread_sigmask vendor/libc/src/unix/hermit/mod.rs /^ pub fn pthread_sigmask(how: ::c_int, set: *const ::sigset_t, oset: *mut ::sigset_t) -> ::c_i/;" f +pthread_sigmask vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_sigmask(how: ::c_int, set: *const sigset_t, oldset: *mut sigset_t) -> ::c_int/;" f +pthread_sigmask vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_sigmask(how: ::c_int, set: *const sigset_t, oldset: *mut sigset_t) -> ::c_int/;" f +pthread_sigmask vendor/libc/src/unix/newlib/mod.rs /^ pub fn pthread_sigmask(how: ::c_int, set: *const sigset_t, oldset: *mut sigset_t) -> ::c_int/;" f +pthread_sigmask vendor/libc/src/unix/redox/mod.rs /^ pub fn pthread_sigmask($/;" f +pthread_sigmask vendor/libc/src/unix/solarish/mod.rs /^ pub fn pthread_sigmask(how: ::c_int, set: *const sigset_t, oldset: *mut sigset_t) -> ::c_int/;" f +pthread_sigmask vendor/libc/src/vxworks/mod.rs /^ pub fn pthread_sigmask($/;" f +pthread_sigqueue r_bash/src/lib.rs /^ pub fn pthread_sigqueue($/;" f +pthread_sigqueue r_glob/src/lib.rs /^ pub fn pthread_sigqueue($/;" f +pthread_sigqueue r_readline/src/lib.rs /^ pub fn pthread_sigqueue($/;" f +pthread_sigqueue vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn pthread_sigqueue(thread: ::pthread_t, sig: ::c_int, value: ::sigval) -> ::c_int;$/;" f +pthread_spin_destroy vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn pthread_spin_destroy(lock: *mut pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_destroy vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pthread_spin_destroy(lock: *mut pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_destroy vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn pthread_spin_destroy(lock: *mut pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_destroy vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_spin_destroy(lock: *mut ::pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_destroy vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_spin_destroy(lock: *mut ::pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_destroy vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_spin_destroy(lock: *mut ::pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_init vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn pthread_spin_init(lock: *mut pthread_spinlock_t, pshared: ::c_int) -> ::c_int;$/;" f +pthread_spin_init vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pthread_spin_init(lock: *mut pthread_spinlock_t, pshared: ::c_int) -> ::c_int;$/;" f +pthread_spin_init vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn pthread_spin_init(lock: *mut pthread_spinlock_t, pshared: ::c_int) -> ::c_int;$/;" f +pthread_spin_init vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_spin_init(lock: *mut ::pthread_spinlock_t, pshared: ::c_int) -> ::c_int;$/;" f +pthread_spin_init vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_spin_init(lock: *mut ::pthread_spinlock_t, pshared: ::c_int) -> ::c_int;$/;" f +pthread_spin_init vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_spin_init(lock: *mut ::pthread_spinlock_t, pshared: ::c_int) -> ::c_int;$/;" f +pthread_spin_lock vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn pthread_spin_lock(lock: *mut pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_lock vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pthread_spin_lock(lock: *mut pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_lock vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn pthread_spin_lock(lock: *mut pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_lock vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_spin_lock(lock: *mut ::pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_lock vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_spin_lock(lock: *mut ::pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_lock vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_spin_lock(lock: *mut ::pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type pthread_spin_t = ::c_uchar;$/;" t +pthread_spin_trylock vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn pthread_spin_trylock(lock: *mut pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_trylock vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pthread_spin_trylock(lock: *mut pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_trylock vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn pthread_spin_trylock(lock: *mut pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_trylock vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_spin_trylock(lock: *mut ::pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_trylock vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_spin_trylock(lock: *mut ::pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_trylock vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_spin_trylock(lock: *mut ::pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_unlock vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn pthread_spin_unlock(lock: *mut pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_unlock vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn pthread_spin_unlock(lock: *mut pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_unlock vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn pthread_spin_unlock(lock: *mut pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_unlock vendor/libc/src/unix/haiku/mod.rs /^ pub fn pthread_spin_unlock(lock: *mut ::pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_unlock vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pthread_spin_unlock(lock: *mut ::pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spin_unlock vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn pthread_spin_unlock(lock: *mut ::pthread_spinlock_t) -> ::c_int;$/;" f +pthread_spinlock_t builtins_rust/wait/src/signal.rs /^pub type pthread_spinlock_t = ::std::os::raw::c_int;$/;" t +pthread_spinlock_t r_bash/src/lib.rs /^pub type pthread_spinlock_t = ::std::os::raw::c_int;$/;" t +pthread_spinlock_t r_glob/src/lib.rs /^pub type pthread_spinlock_t = ::std::os::raw::c_int;$/;" t +pthread_spinlock_t r_readline/src/lib.rs /^pub type pthread_spinlock_t = ::std::os::raw::c_int;$/;" t +pthread_spinlock_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type pthread_spinlock_t = ::uintptr_t;$/;" t +pthread_spinlock_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type pthread_spinlock_t = *mut __c_anonymous_pthread_spinlock;$/;" t +pthread_spinlock_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type pthread_spinlock_t = ::uintptr_t;$/;" t +pthread_spinlock_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type pthread_spinlock_t = ::c_int;$/;" t +pthread_stackseg_np vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn pthread_stackseg_np(thread: ::pthread_t, sinfo: *mut ::stack_t) -> ::c_int;$/;" f +pthread_t builtins_rust/wait/src/signal.rs /^pub type pthread_t = ::std::os::raw::c_ulong;$/;" t +pthread_t r_bash/src/lib.rs /^pub type pthread_t = ::std::os::raw::c_ulong;$/;" t +pthread_t r_glob/src/lib.rs /^pub type pthread_t = ::std::os::raw::c_ulong;$/;" t +pthread_t r_readline/src/lib.rs /^pub type pthread_t = ::std::os::raw::c_ulong;$/;" t +pthread_t vendor/libc/src/fuchsia/mod.rs /^pub type pthread_t = c_ulong;$/;" t +pthread_t vendor/libc/src/unix/bsd/mod.rs /^pub type pthread_t = ::uintptr_t;$/;" t +pthread_t vendor/libc/src/unix/haiku/mod.rs /^pub type pthread_t = ::uintptr_t;$/;" t +pthread_t vendor/libc/src/unix/hermit/mod.rs /^pub type pthread_t = pte_handle_t;$/;" t +pthread_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type pthread_t = ::c_long;$/;" t +pthread_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type pthread_t = c_ulong;$/;" t +pthread_t vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^pub type pthread_t = c_ulong;$/;" t +pthread_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type pthread_t = *mut ::c_void;$/;" t +pthread_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type pthread_t = ::c_ulong;$/;" t +pthread_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mod.rs /^pub type pthread_t = ::c_ulong;$/;" t +pthread_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs /^pub type pthread_t = *mut ::c_void;$/;" t +pthread_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/other.rs /^pub type pthread_t = ::c_ulong;$/;" t +pthread_t vendor/libc/src/unix/newlib/mod.rs /^pub type pthread_t = ::c_ulong;$/;" t +pthread_t vendor/libc/src/unix/redox/mod.rs /^pub type pthread_t = *mut ::c_void;$/;" t +pthread_t vendor/libc/src/unix/solarish/mod.rs /^pub type pthread_t = ::c_uint;$/;" t +pthread_t vendor/libc/src/vxworks/mod.rs /^pub type pthread_t = ::c_ulong;$/;" t +pthread_threadid_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pthread_threadid_np(thread: ::pthread_t, thread_id: *mut u64) -> ::c_int;$/;" f +ptr lib/termcap/termcap.c /^ char *ptr;$/;" m struct:buffer typeref:typename:char * file: +ptr vendor/fluent-syntax/src/parser/core.rs /^ pub(super) ptr: usize,$/;" m struct:Parser +ptr vendor/futures-channel/src/mpsc/mod.rs /^ fn ptr(&self) -> *const BoundedInner {$/;" P implementation:BoundedSenderInner +ptr vendor/futures-channel/src/mpsc/mod.rs /^ fn ptr(&self) -> *const UnboundedInner {$/;" P implementation:UnboundedSenderInner +ptr vendor/nix/src/net/if_.rs /^ ptr: *const libc::if_nameindex,$/;" m struct:if_nameindex::InterfacesIter +ptr vendor/nix/src/net/if_.rs /^ ptr: NonNull,$/;" m struct:if_nameindex::Interfaces +ptr vendor/nix/src/sys/socket/sockopt.rs /^ ptr: &'a T,$/;" m struct:SetStruct +ptr vendor/self_cell/src/unsafe_self_cell.rs /^ ptr: *mut u8,$/;" m struct:OwnerAndCellDropGuard::drop::DeallocGuard +ptr vendor/syn/src/buffer.rs /^ ptr: *const Entry,$/;" m struct:Cursor +ptr_to_current vendor/futures-util/src/compat/compat03as01.rs /^ unsafe fn ptr_to_current<'a>(ptr: *const ()) -> &'a Current {$/;" f method:Current::as_waker +ptrace vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn ptrace(request: ::c_int, pid: ::pid_t, addr: *mut ::c_char, data: ::c_int) -> ::c_int/;" f +ptrace vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn ptrace(request: ::c_int, pid: ::pid_t, addr: *mut ::c_char, data: ::c_int) -> ::c_int/;" f +ptrace vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn ptrace(request: ::c_int, pid: ::pid_t, addr: *mut ::c_void, data: ::c_int) -> ::c_int/;" f +ptrace vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn ptrace(request: ::c_int, pid: ::pid_t, addr: caddr_t, data: ::c_int) -> ::c_int;$/;" f +ptrace vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn ptrace(request: ::c_int, ...) -> ::c_long;$/;" f +ptrace vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn ptrace(request: ::c_uint, ...) -> ::c_long;$/;" f +ptrace vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn ptrace(request: ::c_int, ...) -> ::c_long;$/;" f +ptrace vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn ptrace(request: ::c_uint, ...) -> ::c_long;$/;" f +ptrace vendor/nix/test/sys/test_wait.rs /^mod ptrace {$/;" n +ptrace_child vendor/nix/test/sys/test_wait.rs /^ fn ptrace_child() -> ! {$/;" f module:ptrace +ptrace_get_data vendor/nix/src/sys/ptrace/linux.rs /^fn ptrace_get_data(request: Request, pid: Pid) -> Result {$/;" f +ptrace_other vendor/nix/src/sys/ptrace/bsd.rs /^unsafe fn ptrace_other($/;" f +ptrace_other vendor/nix/src/sys/ptrace/linux.rs /^unsafe fn ptrace_other(request: Request, pid: Pid, addr: AddressType, data: *mut c_void) -> Resu/;" f +ptrace_peek vendor/nix/src/sys/ptrace/linux.rs /^fn ptrace_peek(request: Request, pid: Pid, addr: AddressType, data: *mut c_void) -> Result *mut ::std::os::raw::c_char;$/;" f +ptsname r_glob/src/lib.rs /^ pub fn ptsname(__fd: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +ptsname r_readline/src/lib.rs /^ pub fn ptsname(__fd: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +ptsname vendor/libc/src/fuchsia/mod.rs /^ pub fn ptsname(fd: ::c_int) -> *mut ::c_char;$/;" f +ptsname vendor/libc/src/unix/mod.rs /^ pub fn ptsname(fd: ::c_int) -> *mut ::c_char;$/;" f +ptsname vendor/nix/src/pty.rs /^pub unsafe fn ptsname(fd: &PtyMaster) -> Result {$/;" f +ptsname_r r_bash/src/lib.rs /^ pub fn ptsname_r($/;" f +ptsname_r r_glob/src/lib.rs /^ pub fn ptsname_r($/;" f +ptsname_r r_readline/src/lib.rs /^ pub fn ptsname_r($/;" f +ptsname_r vendor/libc/src/fuchsia/mod.rs /^ pub fn ptsname_r(fd: ::c_int, buf: *mut ::c_char, buflen: ::size_t) -> ::c_int;$/;" f +ptsname_r vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn ptsname_r(fd: ::c_int, buf: *mut ::c_char, buflen: ::size_t) -> ::c_int;$/;" f +ptsname_r vendor/libc/src/unix/linux_like/mod.rs /^ pub fn ptsname_r(fd: ::c_int, buf: *mut ::c_char, buflen: ::size_t) -> ::c_int;$/;" f +ptsname_r vendor/nix/src/pty.rs /^pub fn ptsname_r(fd: &PtyMaster) -> Result {$/;" f +publish vendor/async-trait/tests/ui/consider-restricting.rs /^ async fn publish(&self, url: T) {}$/;" P implementation:Client +publish vendor/async-trait/tests/ui/consider-restricting.rs /^ async fn publish(&self, url: T);$/;" P interface:ClientExt +publish vendor/async-trait/tests/ui/consider-restricting.rs /^ async fn publish(&self, url: T) {}$/;" P implementation:Client2 +punct vendor/proc-macro2/src/parse.rs /^fn punct(input: Cursor) -> PResult {$/;" f +punct vendor/syn/src/buffer.rs /^ pub fn punct(mut self) -> Option<(Punct, Cursor<'a>)> {$/;" P implementation:Cursor +punct vendor/syn/src/punctuated.rs /^ pub fn punct(&self) -> Option<&P> {$/;" P implementation:Pair +punct vendor/syn/src/token.rs /^ pub fn punct(s: &str, spans: &[Span], tokens: &mut TokenStream) {$/;" f module:printing +punct vendor/syn/src/token.rs /^ pub fn punct(input: ParseStream, token: &str) -> Result {$/;" f module:parsing +punct_before_comment vendor/proc-macro2/tests/test.rs /^fn punct_before_comment() {$/;" f +punct_char vendor/proc-macro2/src/parse.rs /^fn punct_char(input: Cursor) -> PResult {$/;" f +punct_helper vendor/syn/src/token.rs /^ fn punct_helper(input: ParseStream, token: &str, spans: &mut [Span; 3]) -> Result<()> {$/;" f module:parsing +punct_mut vendor/syn/src/punctuated.rs /^ pub fn punct_mut(&mut self) -> Option<&mut P> {$/;" P implementation:Pair +punctuated vendor/syn/src/lib.rs /^pub mod punctuated;$/;" n +punctuated vendor/syn/tests/macros/mod.rs /^macro_rules! punctuated {$/;" M +push vendor/chunky-vec/src/lib.rs /^ pub fn push(&mut self, new_value: T) {$/;" P implementation:Chunk +push vendor/chunky-vec/src/lib.rs /^ pub fn push(&mut self, new_value: T) {$/;" P implementation:ChunkyVec +push vendor/elsa/src/sync.rs /^ pub fn push(&self, val: T) {$/;" P implementation:FrozenVec +push vendor/elsa/src/vec.rs /^ pub fn push(&self, val: T) {$/;" P implementation:FrozenVec +push vendor/futures-channel/src/mpsc/queue.rs /^ pub(super) fn push(&self, t: T) {$/;" P implementation:Queue +push vendor/futures-util/src/stream/futures_ordered.rs /^ pub fn push(&mut self, future: Fut) {$/;" P implementation:FuturesOrdered +push vendor/futures-util/src/stream/futures_unordered/mod.rs /^ pub fn push(&self, future: Fut) {$/;" P implementation:FuturesUnordered +push vendor/futures-util/src/stream/select_all.rs /^ pub fn push(&mut self, stream: St) {$/;" P implementation:SelectAll +push vendor/proc-macro2/src/rcvec.rs /^ pub fn push(&mut self, element: T) {$/;" P implementation:RcVecBuilder +push vendor/proc-macro2/src/rcvec.rs /^ pub fn push(&mut self, element: T) {$/;" P implementation:RcVecMut +push vendor/smallvec/benches/bench.rs /^ fn push(&mut self, val: T) {$/;" P implementation:SmallVec +push vendor/smallvec/benches/bench.rs /^ fn push(&mut self, val: T) {$/;" P implementation:Vec +push vendor/smallvec/benches/bench.rs /^ fn push(&mut self, val: T);$/;" P interface:Vector +push vendor/smallvec/src/lib.rs /^ pub fn push(&mut self, value: A::Item) {$/;" P implementation:SmallVec +push vendor/syn/src/punctuated.rs /^ pub fn push(&mut self, value: T)$/;" P implementation:Punctuated +push_args builtins_rust/source/src/lib.rs /^ fn push_args(list: *mut WordList);$/;" f +push_args r_bash/src/lib.rs /^ pub fn push_args(arg1: *mut WORD_LIST);$/;" f +push_args variables.c /^push_args (list)$/;" f +push_back vendor/futures-util/src/stream/futures_ordered.rs /^ pub fn push_back(&mut self, future: Fut) {$/;" P implementation:FuturesOrdered +push_builtin_var variables.c /^push_builtin_var (data)$/;" f file: +push_context r_bash/src/lib.rs /^ pub fn push_context($/;" f +push_context variables.c /^push_context (name, is_subshell, tempvars)$/;" f +push_dollar_vars builtins_rust/source/src/lib.rs /^ fn push_dollar_vars();$/;" f +push_dollar_vars r_bash/src/lib.rs /^ pub fn push_dollar_vars();$/;" f +push_dollar_vars variables.c /^push_dollar_vars ()$/;" f typeref:typename:void +push_exported_var variables.c /^push_exported_var (data)$/;" f file: +push_front vendor/futures-util/src/stream/futures_ordered.rs /^ pub fn push_front(&mut self, future: Fut) {$/;" P implementation:FuturesOrdered +push_func_var variables.c /^push_func_var (data)$/;" f file: +push_get vendor/chunky-vec/src/lib.rs /^ pub fn push_get(&mut self, new_value: T) -> &mut T {$/;" P implementation:Chunk +push_get vendor/chunky-vec/src/lib.rs /^ pub fn push_get(&mut self, new_value: T) -> &mut T {$/;" P implementation:ChunkyVec +push_get vendor/elsa/src/sync.rs /^ pub fn push_get(&self, val: T) -> &T::Target {$/;" P implementation:FrozenVec +push_get vendor/elsa/src/vec.rs /^ pub fn push_get(&self, val: T) -> &T::Target {$/;" P implementation:FrozenVec +push_get vendor/fluent-fallback/src/cache.rs /^ pub fn push_get(&self, new_value: I::Item) -> &I::Item {$/;" f +push_get vendor/fluent-fallback/src/cache.rs /^ pub fn push_get(&self, new_value: S::Item) -> &S::Item {$/;" f +push_get_index vendor/elsa/src/sync.rs /^ pub fn push_get_index(&self, val: T) -> usize {$/;" P implementation:FrozenVec +push_group vendor/quote/src/runtime.rs /^pub fn push_group(tokens: &mut TokenStream, delimiter: Delimiter, inner: TokenStream) {$/;" f +push_group_spanned vendor/quote/src/runtime.rs /^pub fn push_group_spanned($/;" f +push_history builtins_rust/history/src/lib.rs /^fn push_history(list: *mut WordList) {$/;" f +push_ident vendor/quote/src/runtime.rs /^pub fn push_ident(tokens: &mut TokenStream, s: &str) {$/;" f +push_ident_spanned vendor/quote/src/runtime.rs /^pub fn push_ident_spanned(tokens: &mut TokenStream, span: Span, s: &str) {$/;" f +push_index lib/readline/input.c /^static int pop_index, push_index;$/;" v typeref:typename:int file: +push_lifetime vendor/quote/src/runtime.rs /^pub fn push_lifetime(tokens: &mut TokenStream, lifetime: &str) {$/;" f +push_lifetime_spanned vendor/quote/src/runtime.rs /^pub fn push_lifetime_spanned(tokens: &mut TokenStream, span: Span, lifetime: &str) {$/;" f +push_negative_literal vendor/proc-macro2/src/fallback.rs /^ fn push_negative_literal(mut vec: RcVecMut, mut literal: Literal) {$/;" f function:push_token_from_proc_macro +push_nix_path vendor/nix/src/mount/bsd.rs /^ fn push_nix_path(&mut self, val: &P) {$/;" P implementation:Nmount +push_noinline vendor/smallvec/benches/bench.rs /^ fn push_noinline>(vec: &mut V, x: u64) {$/;" f function:gen_push +push_pointer_and_length vendor/nix/src/mount/bsd.rs /^ fn push_pointer_and_length(&mut self, val: *const u8, len: usize, is_owned: bool) {$/;" P implementation:Nmount +push_posix_temp_var variables.c /^push_posix_temp_var (data)$/;" f file: +push_posix_tempvar_internal variables.c /^push_posix_tempvar_internal (var, isbltin)$/;" f file: +push_punct vendor/quote/src/runtime.rs /^macro_rules! push_punct {$/;" M +push_punct vendor/syn/src/punctuated.rs /^ pub fn push_punct(&mut self, punctuation: P) {$/;" P implementation:Punctuated +push_scope r_bash/src/lib.rs /^ pub fn push_scope(arg1: ::std::os::raw::c_int, arg2: *mut HASH_TABLE) -> *mut VAR_CONTEXT;$/;" f +push_scope variables.c /^push_scope (flags, tmpvars)$/;" f +push_slice vendor/nix/src/mount/bsd.rs /^ fn push_slice(&mut self, val: &'a [u8], is_owned: bool) {$/;" P implementation:Nmount +push_stream r_bash/src/lib.rs /^ pub fn push_stream(arg1: ::std::os::raw::c_int);$/;" f +push_temp_var variables.c /^push_temp_var (data)$/;" f file: +push_to_readline bashline.c /^static char *push_to_readline = (char *)NULL;$/;" v typeref:typename:char * file: +push_token r_bash/src/lib.rs /^ pub fn push_token(arg1: ::std::os::raw::c_int);$/;" f +push_token_from_parser vendor/proc-macro2/src/fallback.rs /^ pub fn push_token_from_parser(&mut self, tt: TokenTree) {$/;" P implementation:TokenStreamBuilder +push_token_from_proc_macro vendor/proc-macro2/src/fallback.rs /^fn push_token_from_proc_macro(mut vec: RcVecMut, token: TokenTree) {$/;" f +push_underscore vendor/quote/src/runtime.rs /^pub fn push_underscore(tokens: &mut TokenStream) {$/;" f +push_underscore_spanned vendor/quote/src/runtime.rs /^pub fn push_underscore_spanned(tokens: &mut TokenStream, span: Span) {$/;" f +push_value vendor/syn/src/punctuated.rs /^ pub fn push_value(&mut self, value: T) {$/;" P implementation:Punctuated +push_var_context r_bash/src/lib.rs /^ pub fn push_var_context($/;" f +push_var_context variables.c /^push_var_context (name, flags, tempvars)$/;" f +pushd.o builtins/Makefile.in /^pushd.o: $(BASHINCDIR)\/maxpath.h $(srcdir)\/common.h .\/builtext.h$/;" t +pushd.o builtins/Makefile.in /^pushd.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +pushd.o builtins/Makefile.in /^pushd.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +pushd.o builtins/Makefile.in /^pushd.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h$/;" t +pushd.o builtins/Makefile.in /^pushd.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h /;" t +pushd.o builtins/Makefile.in /^pushd.o: $(topdir)\/subst.h $(topdir)\/externs.h $(topdir)\/sig.h$/;" t +pushd.o builtins/Makefile.in /^pushd.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +pushd.o builtins/Makefile.in /^pushd.o: ..\/pathnames.h$/;" t +pushd.o builtins/Makefile.in /^pushd.o: pushd.def$/;" t +pushd_directory_list builtins_rust/pushd/src/lib.rs /^pub static mut pushd_directory_list: *mut *mut c_char = std::ptr::null_mut();$/;" v +pushexp expr.c /^pushexp ()$/;" f typeref:typename:void file: +pushpop_noinline vendor/smallvec/benches/bench.rs /^ fn pushpop_noinline>(vec: &mut V, x: u64) -> Option {$/;" f function:gen_pushpop +put_command_name_into_env r_bash/src/lib.rs /^ pub fn put_command_name_into_env(arg1: *mut ::std::os::raw::c_char);$/;" f +put_command_name_into_env variables.c /^put_command_name_into_env (command_name)$/;" f +put_gnu_argv_flags_into_env r_bash/src/lib.rs /^ pub fn put_gnu_argv_flags_into_env(arg1: intmax_t, arg2: *mut ::std::os::raw::c_char);$/;" f +putc r_bash/src/lib.rs /^ pub fn putc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +putc r_readline/src/lib.rs /^ pub fn putc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +putc vendor/libc/src/solid/mod.rs /^ pub fn putc(arg1: c_int, arg2: *mut FILE) -> c_int;$/;" f +putc vendor/libc/src/wasi.rs /^ pub fn putc(a: c_int, f: *mut FILE) -> c_int;$/;" f +putc_face lib/readline/display.c /^putc_face (int c, int face, char *cur_face)$/;" f typeref:typename:void file: +putc_unlocked r_bash/src/lib.rs /^ pub fn putc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_i/;" f +putc_unlocked r_readline/src/lib.rs /^ pub fn putc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_i/;" f +putc_unlocked vendor/libc/src/solid/mod.rs /^ pub fn putc_unlocked(arg1: c_int, arg2: *mut FILE) -> c_int;$/;" f +putchar r_bash/src/lib.rs /^ pub fn putchar(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +putchar r_readline/src/lib.rs /^ pub fn putchar(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +putchar vendor/libc/src/fuchsia/mod.rs /^ pub fn putchar(c: c_int) -> c_int;$/;" f +putchar vendor/libc/src/solid/mod.rs /^ pub fn putchar(arg1: c_int) -> c_int;$/;" f +putchar vendor/libc/src/unix/mod.rs /^ pub fn putchar(c: c_int) -> c_int;$/;" f +putchar vendor/libc/src/vxworks/mod.rs /^ pub fn putchar(c: c_int) -> c_int;$/;" f +putchar vendor/libc/src/wasi.rs /^ pub fn putchar(a: c_int) -> c_int;$/;" f +putchar vendor/libc/src/windows/mod.rs /^ pub fn putchar(c: c_int) -> c_int;$/;" f +putchar_unlocked r_bash/src/lib.rs /^ pub fn putchar_unlocked(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +putchar_unlocked r_readline/src/lib.rs /^ pub fn putchar_unlocked(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +putchar_unlocked vendor/libc/src/fuchsia/mod.rs /^ pub fn putchar_unlocked(c: ::c_int) -> ::c_int;$/;" f +putchar_unlocked vendor/libc/src/solid/mod.rs /^ pub fn putchar_unlocked(arg1: c_int) -> c_int;$/;" f +putchar_unlocked vendor/libc/src/unix/mod.rs /^ pub fn putchar_unlocked(c: ::c_int) -> ::c_int;$/;" f +putchar_unlocked vendor/libc/src/vxworks/mod.rs /^ pub fn putchar_unlocked(c: ::c_int) -> ::c_int;$/;" f +putchar_unlocked vendor/libc/src/wasi.rs /^ pub fn putchar_unlocked(c: ::c_int) -> ::c_int;$/;" f +putenv lib/sh/getenv.c /^putenv (str)$/;" f +putenv r_bash/src/lib.rs /^ pub fn putenv(__string: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +putenv r_glob/src/lib.rs /^ pub fn putenv(__string: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +putenv r_readline/src/lib.rs /^ pub fn putenv(__string: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +putenv vendor/libc/src/fuchsia/mod.rs /^ pub fn putenv(string: *mut c_char) -> ::c_int;$/;" f +putenv vendor/libc/src/solid/mod.rs /^ pub fn putenv(arg1: *mut c_char) -> c_int;$/;" f +putenv vendor/libc/src/unix/mod.rs /^ pub fn putenv(string: *mut c_char) -> ::c_int;$/;" f +putenv vendor/libc/src/vxworks/mod.rs /^ pub fn putenv(string: *mut c_char) -> ::c_int;$/;" f +putenv vendor/libc/src/wasi.rs /^ pub fn putenv(a: *mut c_char) -> c_int;$/;" f +putenv_buf1 lib/readline/shell.c /^static char putenv_buf1[INT_STRLEN_BOUND (int) + 6 + 1]; \/* sizeof("LINES=") == 6 *\/$/;" v typeref:typename:char[] file: +putenv_buf2 lib/readline/shell.c /^static char putenv_buf2[INT_STRLEN_BOUND (int) + 8 + 1]; \/* sizeof("COLUMNS=") == 8 *\/$/;" v typeref:typename:char[] file: +puts r_bash/src/lib.rs /^ pub fn puts(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +puts r_readline/src/lib.rs /^ pub fn puts(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +puts vendor/libc/src/fuchsia/mod.rs /^ pub fn puts(s: *const c_char) -> c_int;$/;" f +puts vendor/libc/src/solid/mod.rs /^ pub fn puts(arg1: *const c_char) -> c_int;$/;" f +puts vendor/libc/src/unix/mod.rs /^ pub fn puts(s: *const c_char) -> c_int;$/;" f +puts vendor/libc/src/vxworks/mod.rs /^ pub fn puts(s: *const c_char) -> c_int;$/;" f +puts vendor/libc/src/wasi.rs /^ pub fn puts(a: *const c_char) -> c_int;$/;" f +puts vendor/libc/src/windows/mod.rs /^ pub fn puts(s: *const c_char) -> c_int;$/;" f +puts_face lib/readline/display.c /^puts_face (const char *str, const char *face, int n)$/;" f typeref:typename:void file: +pututline vendor/libc/src/unix/solarish/mod.rs /^ pub fn pututline(u: *const utmp) -> *mut utmp;$/;" f +pututxline vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pututxline(ut: *const utmpx) -> *mut utmpx;$/;" f +pututxline vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pututxline(ut: *const utmpx) -> *mut utmpx;$/;" f +pututxline vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn pututxline(ut: *const utmpx) -> *mut utmpx;$/;" f +pututxline vendor/libc/src/unix/haiku/mod.rs /^ pub fn pututxline(ut: *const utmpx) -> *mut utmpx;$/;" f +pututxline vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn pututxline(ut: *const utmpx) -> *mut utmpx;$/;" f +pututxline vendor/libc/src/unix/solarish/mod.rs /^ pub fn pututxline(ut: *const utmpx) -> *mut utmpx;$/;" f +putw r_bash/src/lib.rs /^ pub fn putw(__w: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +putw r_readline/src/lib.rs /^ pub fn putw(__w: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;$/;" f +putw vendor/libc/src/solid/mod.rs /^ pub fn putw(arg1: c_int, arg2: *mut FILE) -> c_int;$/;" f +putwc r_bash/src/lib.rs /^ pub fn putwc(__wc: wchar_t, __stream: *mut __FILE) -> wint_t;$/;" f +putwc r_glob/src/lib.rs /^ pub fn putwc(__wc: wchar_t, __stream: *mut __FILE) -> wint_t;$/;" f +putwc r_readline/src/lib.rs /^ pub fn putwc(__wc: wchar_t, __stream: *mut __FILE) -> wint_t;$/;" f +putwc_unlocked r_bash/src/lib.rs /^ pub fn putwc_unlocked(__wc: wchar_t, __stream: *mut __FILE) -> wint_t;$/;" f +putwc_unlocked r_glob/src/lib.rs /^ pub fn putwc_unlocked(__wc: wchar_t, __stream: *mut __FILE) -> wint_t;$/;" f +putwc_unlocked r_readline/src/lib.rs /^ pub fn putwc_unlocked(__wc: wchar_t, __stream: *mut __FILE) -> wint_t;$/;" f +putwchar r_bash/src/lib.rs /^ pub fn putwchar(__wc: wchar_t) -> wint_t;$/;" f +putwchar r_glob/src/lib.rs /^ pub fn putwchar(__wc: wchar_t) -> wint_t;$/;" f +putwchar r_readline/src/lib.rs /^ pub fn putwchar(__wc: wchar_t) -> wint_t;$/;" f +putwchar_unlocked r_bash/src/lib.rs /^ pub fn putwchar_unlocked(__wc: wchar_t) -> wint_t;$/;" f +putwchar_unlocked r_glob/src/lib.rs /^ pub fn putwchar_unlocked(__wc: wchar_t) -> wint_t;$/;" f +putwchar_unlocked r_readline/src/lib.rs /^ pub fn putwchar_unlocked(__wc: wchar_t) -> wint_t;$/;" f +putx bashline.c /^putx(c)$/;" f file: +pwrite r_bash/src/lib.rs /^ pub fn pwrite($/;" f +pwrite r_glob/src/lib.rs /^ pub fn pwrite($/;" f +pwrite r_readline/src/lib.rs /^ pub fn pwrite($/;" f +pwrite vendor/libc/src/fuchsia/mod.rs /^ pub fn pwrite(fd: ::c_int, buf: *const ::c_void, count: ::size_t, offset: off_t) -> ::ssize_/;" f +pwrite vendor/libc/src/unix/mod.rs /^ pub fn pwrite(fd: ::c_int, buf: *const ::c_void, count: ::size_t, offset: off_t) -> ::ssize_/;" f +pwrite vendor/libc/src/vxworks/mod.rs /^pub fn pwrite($/;" f +pwrite vendor/libc/src/wasi.rs /^ pub fn pwrite(fd: ::c_int, buf: *const ::c_void, count: ::size_t, offset: off_t) -> ::ssize_/;" f +pwrite vendor/nix/src/sys/uio.rs /^pub fn pwrite(fd: RawFd, buf: &[u8], offset: off_t) -> Result {$/;" f +pwrite64 r_bash/src/lib.rs /^ pub fn pwrite64($/;" f +pwrite64 r_glob/src/lib.rs /^ pub fn pwrite64($/;" f +pwrite64 r_readline/src/lib.rs /^ pub fn pwrite64($/;" f +pwrite64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn pwrite64($/;" f +pwritev vendor/libc/src/fuchsia/mod.rs /^ pub fn pwritev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t)$/;" f +pwritev vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn pwritev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t)$/;" f +pwritev vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn pwritev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t)$/;" f +pwritev vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn pwritev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t)$/;" f +pwritev vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn pwritev(fd: ::c_int, iov: *const ::iovec, count: ::c_int, offset: ::off_t) -> ::ssize/;" f +pwritev vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn pwritev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t)$/;" f +pwritev vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn pwritev($/;" f +pwritev vendor/libc/src/unix/solarish/illumos.rs /^ pub fn pwritev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t)$/;" f +pwritev vendor/libc/src/wasi.rs /^ pub fn pwritev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t)$/;" f +pwritev vendor/nix/src/sys/uio.rs /^pub fn pwritev(fd: RawFd, iov: &[IoSlice<'_>],$/;" f +pwritev2 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn pwritev2($/;" f +pwritev64v2 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn pwritev64v2($/;" f +qabs vendor/libc/src/solid/mod.rs /^ pub fn qabs(arg1: quad_t) -> quad_t;$/;" f +qaddr_t vendor/libc/src/solid/mod.rs /^pub type qaddr_t = *mut quad_t;$/;" t +qdiv vendor/libc/src/solid/mod.rs /^ pub fn qdiv(arg1: quad_t, arg2: quad_t) -> qdiv_t;$/;" f +qecvt r_bash/src/lib.rs /^ pub fn qecvt($/;" f +qecvt r_glob/src/lib.rs /^ pub fn qecvt($/;" f +qecvt r_readline/src/lib.rs /^ pub fn qecvt($/;" f +qecvt_r r_bash/src/lib.rs /^ pub fn qecvt_r($/;" f +qecvt_r r_glob/src/lib.rs /^ pub fn qecvt_r($/;" f +qecvt_r r_readline/src/lib.rs /^ pub fn qecvt_r($/;" f +qfcvt r_bash/src/lib.rs /^ pub fn qfcvt($/;" f +qfcvt r_glob/src/lib.rs /^ pub fn qfcvt($/;" f +qfcvt r_readline/src/lib.rs /^ pub fn qfcvt($/;" f +qfcvt_r r_bash/src/lib.rs /^ pub fn qfcvt_r($/;" f +qfcvt_r r_glob/src/lib.rs /^ pub fn qfcvt_r($/;" f +qfcvt_r r_readline/src/lib.rs /^ pub fn qfcvt_r($/;" f +qgcvt r_bash/src/lib.rs /^ pub fn qgcvt($/;" f +qgcvt r_glob/src/lib.rs /^ pub fn qgcvt($/;" f +qgcvt r_readline/src/lib.rs /^ pub fn qgcvt($/;" f +qmop lib/intl/plural-exp.h /^ qmop \/* Question mark operator. *\/$/;" e enum:expression::__anon93874cf10103 +qos vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "qos")] pub mod qos;$/;" n +qos_class_t vendor/libc/src/unix/bsd/apple/mod.rs /^impl ::Clone for qos_class_t {$/;" c +qos_class_t vendor/libc/src/unix/bsd/apple/mod.rs /^impl ::Copy for qos_class_t {}$/;" c +qos_class_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub enum qos_class_t {$/;" g +qpath vendor/syn/src/path.rs /^ pub fn qpath(input: ParseStream, expr_style: bool) -> Result<(Option, Path)> {$/;" f module:parsing +qsort r_bash/src/lib.rs /^ pub fn qsort($/;" f +qsort r_glob/src/lib.rs /^ pub fn qsort($/;" f +qsort r_readline/src/lib.rs /^ pub fn qsort($/;" f +qsort vendor/libc/src/solid/mod.rs /^ pub fn qsort($/;" f +qsort vendor/libc/src/unix/mod.rs /^ pub fn qsort($/;" f +qsort_alias_compare alias.c /^qsort_alias_compare (as1, as2)$/;" f file: +qsort_r r_bash/src/lib.rs /^ pub fn qsort_r($/;" f +qsort_r r_glob/src/lib.rs /^ pub fn qsort_r($/;" f +qsort_r r_readline/src/lib.rs /^ pub fn qsort_r($/;" f +qsort_r vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn qsort_r($/;" f +qsort_var_comp variables.c /^qsort_var_comp (var1, var2)$/;" f file: +quad_t r_bash/src/lib.rs /^pub type quad_t = __quad_t;$/;" t +quad_t r_glob/src/lib.rs /^pub type quad_t = __quad_t;$/;" t +quad_t r_readline/src/lib.rs /^pub type quad_t = __quad_t;$/;" t +quad_t vendor/libc/src/solid/mod.rs /^pub type quad_t = i64;$/;" t +querylocale vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn querylocale(mask: ::c_int, loc: ::locale_t) -> *const ::c_char;$/;" f +querylocale vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn querylocale(mask: ::c_int, loc: ::locale_t) -> *const ::c_char;$/;" f +queue vendor/futures-channel/src/mpsc/mod.rs /^mod queue;$/;" n +queue vendor/futures-util/src/stream/futures_unordered/mod.rs /^ queue: &'a mut FuturesUnordered,$/;" m struct:FuturesUnordered::poll_next::Bomb +queue vendor/once_cell/src/imp_std.rs /^ queue: &'a AtomicPtr,$/;" m struct:Guard +queue vendor/once_cell/src/imp_std.rs /^ queue: AtomicPtr,$/;" m struct:OnceCell +queue_never_unblocked vendor/futures/tests/stream_futures_ordered.rs /^fn queue_never_unblocked() {$/;" f +queue_push_and_signal vendor/futures-channel/src/mpsc/mod.rs /^ fn queue_push_and_signal(&self, msg: T) {$/;" P implementation:BoundedSenderInner +queue_push_and_signal vendor/futures-channel/src/mpsc/mod.rs /^ fn queue_push_and_signal(&self, msg: T) {$/;" P implementation:UnboundedSenderInner +queue_sigchld jobs.c /^static int queue_sigchld;$/;" v typeref:typename:int file: +queue_sigchld nojobs.c /^static int queue_sigchld; \/* dummy declaration *\/$/;" v typeref:typename:int file: +queue_sigchld r_jobs/src/lib.rs /^pub static mut queue_sigchld:c_int = 0;$/;" v +queue_sigchld_trap r_bash/src/lib.rs /^ pub fn queue_sigchld_trap(arg1: ::std::os::raw::c_int);$/;" f +queue_sigchld_trap r_glob/src/lib.rs /^ pub fn queue_sigchld_trap(arg1: ::std::os::raw::c_int);$/;" f +queue_sigchld_trap r_jobs/src/lib.rs /^ fn queue_sigchld_trap(_: c_int);$/;" f +queue_sigchld_trap r_readline/src/lib.rs /^ pub fn queue_sigchld_trap(arg1: ::std::os::raw::c_int);$/;" f +queue_sigchld_trap trap.c /^queue_sigchld_trap (nchild)$/;" f +queued vendor/futures-util/src/stream/futures_unordered/task.rs /^ pub(super) queued: AtomicBool,$/;" m struct:Task +queued_outputs vendor/futures-util/src/stream/futures_ordered.rs /^ queued_outputs: BinaryHeap>,$/;" m struct:FuturesOrdered +quick_exit r_bash/src/lib.rs /^ pub fn quick_exit(__status: ::std::os::raw::c_int);$/;" f +quick_exit r_glob/src/lib.rs /^ pub fn quick_exit(__status: ::std::os::raw::c_int);$/;" f +quick_exit r_readline/src/lib.rs /^ pub fn quick_exit(__status: ::std::os::raw::c_int);$/;" f +quick_exit vendor/libc/src/solid/mod.rs /^ pub fn quick_exit(arg1: c_int);$/;" f +quick_exit vendor/libc/src/wasi.rs /^ pub fn quick_exit(a: c_int) -> !;$/;" f +quit builtins_rust/history/src/lib.rs /^unsafe fn quit() {$/;" f +quit builtins_rust/read/src/lib.rs /^fn quit() {$/;" f +quot r_bash/src/lib.rs /^ pub quot: ::std::os::raw::c_int,$/;" m struct:div_t +quot r_bash/src/lib.rs /^ pub quot: ::std::os::raw::c_long,$/;" m struct:imaxdiv_t +quot r_bash/src/lib.rs /^ pub quot: ::std::os::raw::c_long,$/;" m struct:ldiv_t +quot r_bash/src/lib.rs /^ pub quot: ::std::os::raw::c_longlong,$/;" m struct:lldiv_t +quot r_glob/src/lib.rs /^ pub quot: ::std::os::raw::c_int,$/;" m struct:div_t +quot r_glob/src/lib.rs /^ pub quot: ::std::os::raw::c_long,$/;" m struct:imaxdiv_t +quot r_glob/src/lib.rs /^ pub quot: ::std::os::raw::c_long,$/;" m struct:ldiv_t +quot r_glob/src/lib.rs /^ pub quot: ::std::os::raw::c_longlong,$/;" m struct:lldiv_t +quot r_readline/src/lib.rs /^ pub quot: ::std::os::raw::c_int,$/;" m struct:div_t +quot r_readline/src/lib.rs /^ pub quot: ::std::os::raw::c_long,$/;" m struct:imaxdiv_t +quot r_readline/src/lib.rs /^ pub quot: ::std::os::raw::c_long,$/;" m struct:ldiv_t +quot r_readline/src/lib.rs /^ pub quot: ::std::os::raw::c_longlong,$/;" m struct:lldiv_t +quotactl vendor/libc/src/fuchsia/mod.rs /^ pub fn quotactl($/;" f +quotactl vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn quotactl($/;" f +quotactl vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn quotactl($/;" f +quotactl vendor/nix/src/sys/quota.rs /^fn quotactl(cmd: QuotaCmd, special: Option<&P>, id: c_int, addr: *mut c_cha/;" f +quotactl_get vendor/nix/src/sys/quota.rs /^pub fn quotactl_get(which: QuotaType, special: &P, id: c_int) -> Result(which: QuotaType, special: &P) -> Result<()> {$/;" f +quotactl_on vendor/nix/src/sys/quota.rs /^pub fn quotactl_on(which: QuotaType, special: &P, format: QuotaFmt, quota_f/;" f +quotactl_set vendor/nix/src/sys/quota.rs /^pub fn quotactl_set(which: QuotaType, special: &P, id: c_int, dqblk: &Dqblk/;" f +quotactl_sync vendor/nix/src/sys/quota.rs /^pub fn quotactl_sync(which: QuotaType, special: Option<&P>) -> Result<()> {$/;" f +quote vendor/quote/src/lib.rs /^macro_rules! quote {$/;" M +quote_array_assignment_chars arrayfunc.c /^quote_array_assignment_chars (list)$/;" f file: +quote_assign arrayfunc.c /^quote_assign (string)$/;" f file: +quote_bind_into_iter vendor/quote/src/lib.rs /^macro_rules! quote_bind_into_iter {$/;" M +quote_bind_next_or_break vendor/quote/src/lib.rs /^macro_rules! quote_bind_next_or_break {$/;" M +quote_breaks lib/readline/histexpand.c /^quote_breaks (char *s)$/;" f typeref:typename:char * file: +quote_char alias.c /^#define quote_char(/;" d file: +quote_compound_array_list arrayfunc.c /^quote_compound_array_list (list, type)$/;" f +quote_compound_array_list r_bash/src/lib.rs /^ pub fn quote_compound_array_list(arg1: *mut WORD_LIST, arg2: ::std::os::raw::c_int);$/;" f +quote_compound_array_word arrayfunc.c /^quote_compound_array_word (w, type)$/;" f file: +quote_each_token vendor/quote/src/lib.rs /^macro_rules! quote_each_token {$/;" M +quote_each_token_spanned vendor/quote/src/lib.rs /^macro_rules! quote_each_token_spanned {$/;" M +quote_escapes r_bash/src/lib.rs /^ pub fn quote_escapes(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +quote_escapes subst.c /^quote_escapes (string)$/;" f +quote_escapes_internal subst.c /^quote_escapes_internal (string, flags)$/;" f file: +quote_globbing_chars pathexp.c /^quote_globbing_chars (string)$/;" f +quote_globbing_chars r_bash/src/lib.rs /^ pub fn quote_globbing_chars(arg1: *const ::std::os::raw::c_char)$/;" f +quote_into_iter vendor/quote/src/runtime.rs /^ fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {$/;" P implementation:ext::BTreeSet +quote_into_iter vendor/quote/src/runtime.rs /^ fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {$/;" P implementation:ext::RepInterp +quote_into_iter vendor/quote/src/runtime.rs /^ fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {$/;" P implementation:ext::T +quote_into_iter vendor/quote/src/runtime.rs /^ fn quote_into_iter(&'q self) -> (Self::Iter, HasIter) {$/;" P implementation:ext::Vec +quote_into_iter vendor/quote/src/runtime.rs /^ fn quote_into_iter(&'q self) -> (Self::Iter, HasIter);$/;" P interface:ext::RepAsIteratorExt +quote_into_iter vendor/quote/src/runtime.rs /^ fn quote_into_iter(&self) -> (&Self, DoesNotHaveIter) {$/;" P interface:ext::RepToTokensExt +quote_into_iter vendor/quote/src/runtime.rs /^ fn quote_into_iter(self) -> (Self, HasIter) {$/;" P interface:ext::RepIteratorExt +quote_list subst.c /^quote_list (list)$/;" f file: +quote_rhs subst.c /^quote_rhs (string)$/;" f +quote_spanned vendor/quote/src/lib.rs /^macro_rules! quote_spanned {$/;" M +quote_string array.c /^quote_string(s)$/;" f +quote_string r_bash/src/lib.rs /^ pub fn quote_string(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +quote_string subst.c /^quote_string (string)$/;" f +quote_string_for_globbing pathexp.c /^quote_string_for_globbing (pathname, qflags)$/;" f +quote_string_for_globbing r_bash/src/lib.rs /^ pub fn quote_string_for_globbing($/;" f +quote_token vendor/quote/src/lib.rs /^macro_rules! quote_token {$/;" M +quote_token_spanned vendor/quote/src/lib.rs /^macro_rules! quote_token_spanned {$/;" M +quote_token_with_context vendor/quote/src/lib.rs /^macro_rules! quote_token_with_context {$/;" M +quote_token_with_context_spanned vendor/quote/src/lib.rs /^macro_rules! quote_token_with_context_spanned {$/;" M +quote_tokens_with_context vendor/quote/src/lib.rs /^macro_rules! quote_tokens_with_context {$/;" M +quote_tokens_with_context_spanned vendor/quote/src/lib.rs /^macro_rules! quote_tokens_with_context_spanned {$/;" M +quote_word_break_chars bashline.c /^quote_word_break_chars (text)$/;" f file: +quoted_strchr subst.c /^quoted_strchr (s, c, flags)$/;" f file: +quoted_strlen subst.c /^quoted_strlen (s)$/;" f file: +quoted_substring subst.c /^quoted_substring (string, start, end)$/;" f file: +r0_3_0 vendor/libloading/src/changelog.rs /^pub mod r0_3_0 {}$/;" n +r0_3_1 vendor/libloading/src/changelog.rs /^pub mod r0_3_1 {}$/;" n +r0_3_2 vendor/libloading/src/changelog.rs /^pub mod r0_3_2 {}$/;" n +r0_3_3 vendor/libloading/src/changelog.rs /^pub mod r0_3_3 {}$/;" n +r0_3_4 vendor/libloading/src/changelog.rs /^pub mod r0_3_4 {}$/;" n +r0_4_0 vendor/libloading/src/changelog.rs /^pub mod r0_4_0 {}$/;" n +r0_4_1 vendor/libloading/src/changelog.rs /^pub mod r0_4_1 {}$/;" n +r0_4_2 vendor/libloading/src/changelog.rs /^pub mod r0_4_2 {}$/;" n +r0_4_3 vendor/libloading/src/changelog.rs /^pub mod r0_4_3 {}$/;" n +r0_5_0 vendor/libloading/src/changelog.rs /^pub mod r0_5_0 {}$/;" n +r0_5_1 vendor/libloading/src/changelog.rs /^pub mod r0_5_1 {}$/;" n +r0_5_2 vendor/libloading/src/changelog.rs /^pub mod r0_5_2 {}$/;" n +r0_6_0 vendor/libloading/src/changelog.rs /^pub mod r0_6_0 {}$/;" n +r0_6_1 vendor/libloading/src/changelog.rs /^pub mod r0_6_1 {}$/;" n +r0_6_2 vendor/libloading/src/changelog.rs /^pub mod r0_6_2 {}$/;" n +r0_6_3 vendor/libloading/src/changelog.rs /^pub mod r0_6_3 {}$/;" n +r0_6_4 vendor/libloading/src/changelog.rs /^pub mod r0_6_4 {}$/;" n +r0_6_5 vendor/libloading/src/changelog.rs /^pub mod r0_6_5 {}$/;" n +r0_6_6 vendor/libloading/src/changelog.rs /^pub mod r0_6_6 {}$/;" n +r0_6_7 vendor/libloading/src/changelog.rs /^pub mod r0_6_7 {}$/;" n +r0_7_0 vendor/libloading/src/changelog.rs /^pub mod r0_7_0 {}$/;" n +r0_7_1 vendor/libloading/src/changelog.rs /^pub mod r0_7_1 {}$/;" n +r0_7_2 vendor/libloading/src/changelog.rs /^pub mod r0_7_2 {}$/;" n +r0_7_3 vendor/libloading/src/changelog.rs /^pub mod r0_7_3 {}$/;" n +r10 builtins_rust/wait/src/signal.rs /^ pub r10: __uint64_t,$/;" m struct:sigcontext +r10 r_bash/src/lib.rs /^ pub r10: __uint64_t,$/;" m struct:sigcontext +r10 r_glob/src/lib.rs /^ pub r10: __uint64_t,$/;" m struct:sigcontext +r10 r_readline/src/lib.rs /^ pub r10: __uint64_t,$/;" m struct:sigcontext +r11 builtins_rust/wait/src/signal.rs /^ pub r11: __uint64_t,$/;" m struct:sigcontext +r11 r_bash/src/lib.rs /^ pub r11: __uint64_t,$/;" m struct:sigcontext +r11 r_glob/src/lib.rs /^ pub r11: __uint64_t,$/;" m struct:sigcontext +r11 r_readline/src/lib.rs /^ pub r11: __uint64_t,$/;" m struct:sigcontext +r12 builtins_rust/wait/src/signal.rs /^ pub r12: __uint64_t,$/;" m struct:sigcontext +r12 r_bash/src/lib.rs /^ pub r12: __uint64_t,$/;" m struct:sigcontext +r12 r_glob/src/lib.rs /^ pub r12: __uint64_t,$/;" m struct:sigcontext +r12 r_readline/src/lib.rs /^ pub r12: __uint64_t,$/;" m struct:sigcontext +r13 builtins_rust/wait/src/signal.rs /^ pub r13: __uint64_t,$/;" m struct:sigcontext +r13 r_bash/src/lib.rs /^ pub r13: __uint64_t,$/;" m struct:sigcontext +r13 r_glob/src/lib.rs /^ pub r13: __uint64_t,$/;" m struct:sigcontext +r13 r_readline/src/lib.rs /^ pub r13: __uint64_t,$/;" m struct:sigcontext +r14 builtins_rust/wait/src/signal.rs /^ pub r14: __uint64_t,$/;" m struct:sigcontext +r14 r_bash/src/lib.rs /^ pub r14: __uint64_t,$/;" m struct:sigcontext +r14 r_glob/src/lib.rs /^ pub r14: __uint64_t,$/;" m struct:sigcontext +r14 r_readline/src/lib.rs /^ pub r14: __uint64_t,$/;" m struct:sigcontext +r15 builtins_rust/wait/src/signal.rs /^ pub r15: __uint64_t,$/;" m struct:sigcontext +r15 r_bash/src/lib.rs /^ pub r15: __uint64_t,$/;" m struct:sigcontext +r15 r_glob/src/lib.rs /^ pub r15: __uint64_t,$/;" m struct:sigcontext +r15 r_readline/src/lib.rs /^ pub r15: __uint64_t,$/;" m struct:sigcontext +r8 builtins_rust/wait/src/signal.rs /^ pub r8: __uint64_t,$/;" m struct:sigcontext +r8 r_bash/src/lib.rs /^ pub r8: __uint64_t,$/;" m struct:sigcontext +r8 r_glob/src/lib.rs /^ pub r8: __uint64_t,$/;" m struct:sigcontext +r8 r_readline/src/lib.rs /^ pub r8: __uint64_t,$/;" m struct:sigcontext +r9 builtins_rust/wait/src/signal.rs /^ pub r9: __uint64_t,$/;" m struct:sigcontext +r9 r_bash/src/lib.rs /^ pub r9: __uint64_t,$/;" m struct:sigcontext +r9 r_glob/src/lib.rs /^ pub r9: __uint64_t,$/;" m struct:sigcontext +r9 r_readline/src/lib.rs /^ pub r9: __uint64_t,$/;" m struct:sigcontext +r_add_dirstack_element builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_add_dirstack_element(dir: *mut c_char) {$/;" f +r_add_hashed_command builtins_rust/hash/src/lib.rs /^extern "C" fn r_add_hashed_command(w: *mut c_char, quiet: i32) -> i32 {$/;" f +r_alias_builtin builtins_rust/alias/src/lib.rs /^pub unsafe extern "C" fn r_alias_builtin(mut list: *mut WordList) -> libc::c_int {$/;" f +r_append_err_and_out builtins_rust/cd/src/lib.rs /^ r_append_err_and_out,$/;" e enum:r_instruction +r_append_err_and_out builtins_rust/common/src/lib.rs /^ r_append_err_and_out,$/;" e enum:r_instruction +r_append_err_and_out builtins_rust/complete/src/lib.rs /^ r_append_err_and_out,$/;" e enum:r_instruction +r_append_err_and_out builtins_rust/declare/src/lib.rs /^ r_append_err_and_out,$/;" e enum:r_instruction +r_append_err_and_out builtins_rust/fc/src/lib.rs /^ r_append_err_and_out,$/;" e enum:r_instruction +r_append_err_and_out builtins_rust/fg_bg/src/lib.rs /^ r_append_err_and_out,$/;" e enum:r_instruction +r_append_err_and_out builtins_rust/getopts/src/lib.rs /^ r_append_err_and_out,$/;" e enum:r_instruction +r_append_err_and_out builtins_rust/jobs/src/lib.rs /^ r_append_err_and_out,$/;" e enum:r_instruction +r_append_err_and_out builtins_rust/pushd/src/lib.rs /^ r_append_err_and_out,$/;" e enum:r_instruction +r_append_err_and_out builtins_rust/source/src/lib.rs /^ r_append_err_and_out,$/;" e enum:r_instruction +r_append_err_and_out builtins_rust/type/src/lib.rs /^ r_append_err_and_out,$/;" e enum:r_instruction +r_append_err_and_out command.h /^ r_append_err_and_out$/;" e enum:r_instruction +r_appending_to builtins_rust/cd/src/lib.rs /^ r_appending_to,$/;" e enum:r_instruction +r_appending_to builtins_rust/common/src/lib.rs /^ r_appending_to,$/;" e enum:r_instruction +r_appending_to builtins_rust/complete/src/lib.rs /^ r_appending_to,$/;" e enum:r_instruction +r_appending_to builtins_rust/declare/src/lib.rs /^ r_appending_to,$/;" e enum:r_instruction +r_appending_to builtins_rust/fc/src/lib.rs /^ r_appending_to,$/;" e enum:r_instruction +r_appending_to builtins_rust/fg_bg/src/lib.rs /^ r_appending_to,$/;" e enum:r_instruction +r_appending_to builtins_rust/getopts/src/lib.rs /^ r_appending_to,$/;" e enum:r_instruction +r_appending_to builtins_rust/jobs/src/lib.rs /^ r_appending_to,$/;" e enum:r_instruction +r_appending_to builtins_rust/pushd/src/lib.rs /^ r_appending_to,$/;" e enum:r_instruction +r_appending_to builtins_rust/source/src/lib.rs /^ r_appending_to,$/;" e enum:r_instruction +r_appending_to builtins_rust/type/src/lib.rs /^ r_appending_to,$/;" e enum:r_instruction +r_appending_to command.h /^ r_appending_to, r_reading_until, r_reading_string,$/;" e enum:r_instruction +r_bash_logout builtins_rust/exit/src/lib.rs /^pub fn r_bash_logout() {$/;" f +r_bg_builtin builtins_rust/fg_bg/src/lib.rs /^pub extern "C" fn r_bg_builtin(list: *mut WordList) -> i32 {$/;" f +r_bind_builtin builtins_rust/bind/src/lib.rs /^pub extern "C" fn r_bind_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_bindpwd builtins_rust/cd/src/lib.rs /^pub extern "C" fn r_bindpwd(no_symlinks: i32) -> i32 {$/;" f +r_break_builtin builtins_rust/break_1/src/lib.rs /^pub extern "C" fn r_break_builtin(list: *mut WordList) -> i32 {$/;" f +r_build_actions builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_build_actions($/;" f +r_builitin_error_prolog builtins_rust/common/src/lib.rs /^fn r_builitin_error_prolog() {$/;" f +r_builtin_address builtins_rust/common/src/lib.rs /^pub extern "C" fn r_builtin_address(name: *mut c_char) -> *mut sh_builtin_func_t {$/;" f +r_builtin_address_internal builtins_rust/common/src/lib.rs /^extern "C" fn r_builtin_address_internal(name: *mut c_char, disabled_okay: i32) -> *mut builtin /;" f +r_builtin_bind_variable builtins_rust/common/src/lib.rs /^pub extern "C" fn r_builtin_bind_variable($/;" f +r_builtin_builtin builtins_rust/builtin/src/lib.rs /^pub extern "C" fn r_builtin_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_builtin_help builtins_rust/help/src/lib.rs /^pub extern "C" fn r_builtin_help() {$/;" f +r_builtin_unbind_variable builtins_rust/common/src/lib.rs /^pub extern "C" fn r_builtin_unbind_variable(vname: *const c_char) -> i32 {$/;" f +r_builtin_usage builtins_rust/common/src/lib.rs /^pub extern "C" fn r_builtin_usage() {$/;" f +r_caller_builtin builtins_rust/caller/src/lib.rs /^pub extern "C" fn r_caller_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_cd_builtin builtins_rust/cd/src/lib.rs /^pub extern "C" fn r_cd_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_cd_to_string builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_cd_to_string(name: *mut c_char) -> i32 {$/;" f +r_cdxattr builtins_rust/cd/src/lib.rs /^pub extern "C" fn r_cdxattr(dir: *mut c_char, ndirp: *mut c_char) -> i32 {$/;" f +r_change_to_directory builtins_rust/cd/src/lib.rs /^pub extern "C" fn r_change_to_directory(newdir: *mut c_char, nolinks: i32, xattr: i32) -> i32 {$/;" f +r_change_to_temp builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_change_to_temp(temp: *mut c_char) -> i32 {$/;" f +r_clear_directory_stack builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_clear_directory_stack() {$/;" f +r_close_this builtins_rust/cd/src/lib.rs /^ r_close_this,$/;" e enum:r_instruction +r_close_this builtins_rust/common/src/lib.rs /^ r_close_this,$/;" e enum:r_instruction +r_close_this builtins_rust/complete/src/lib.rs /^ r_close_this,$/;" e enum:r_instruction +r_close_this builtins_rust/declare/src/lib.rs /^ r_close_this,$/;" e enum:r_instruction +r_close_this builtins_rust/fc/src/lib.rs /^ r_close_this,$/;" e enum:r_instruction +r_close_this builtins_rust/fg_bg/src/lib.rs /^ r_close_this,$/;" e enum:r_instruction +r_close_this builtins_rust/getopts/src/lib.rs /^ r_close_this,$/;" e enum:r_instruction +r_close_this builtins_rust/jobs/src/lib.rs /^ r_close_this,$/;" e enum:r_instruction +r_close_this builtins_rust/pushd/src/lib.rs /^ r_close_this,$/;" e enum:r_instruction +r_close_this builtins_rust/source/src/lib.rs /^ r_close_this,$/;" e enum:r_instruction +r_close_this builtins_rust/type/src/lib.rs /^ r_close_this,$/;" e enum:r_instruction +r_close_this command.h /^ r_close_this, r_err_and_out, r_input_output, r_output_force,$/;" e enum:r_instruction +r_colon_builtin builtins_rust/colon/src/lib.rs /^pub extern "C" fn r_colon_builtin(_ignore: *mut WordList) -> i32 {$/;" f +r_command_builtin builtins_rust/command/src/lib.rs /^pub unsafe extern "C" fn r_command_builtin(mut list: *mut WordList) -> libc::c_int {$/;" f +r_compgen_builtin builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_compgen_builtin(listt: *mut WordList) -> i32 {$/;" f +r_complete_builtin builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_complete_builtin(listt: *mut WordList) -> i32 {$/;" f +r_compopt_builtin builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_compopt_builtin(listt: *mut WordList) -> i32 {$/;" f +r_continue_builtin builtins_rust/break_1/src/lib.rs /^pub extern "C" fn r_continue_builtin(list: *mut WordList) -> i32 {$/;" f +r_deblank_reading_until builtins_rust/cd/src/lib.rs /^ r_deblank_reading_until,$/;" e enum:r_instruction +r_deblank_reading_until builtins_rust/common/src/lib.rs /^ r_deblank_reading_until,$/;" e enum:r_instruction +r_deblank_reading_until builtins_rust/complete/src/lib.rs /^ r_deblank_reading_until,$/;" e enum:r_instruction +r_deblank_reading_until builtins_rust/declare/src/lib.rs /^ r_deblank_reading_until,$/;" e enum:r_instruction +r_deblank_reading_until builtins_rust/fc/src/lib.rs /^ r_deblank_reading_until,$/;" e enum:r_instruction +r_deblank_reading_until builtins_rust/fg_bg/src/lib.rs /^ r_deblank_reading_until,$/;" e enum:r_instruction +r_deblank_reading_until builtins_rust/getopts/src/lib.rs /^ r_deblank_reading_until,$/;" e enum:r_instruction +r_deblank_reading_until builtins_rust/jobs/src/lib.rs /^ r_deblank_reading_until,$/;" e enum:r_instruction +r_deblank_reading_until builtins_rust/pushd/src/lib.rs /^ r_deblank_reading_until,$/;" e enum:r_instruction +r_deblank_reading_until builtins_rust/source/src/lib.rs /^ r_deblank_reading_until,$/;" e enum:r_instruction +r_deblank_reading_until builtins_rust/type/src/lib.rs /^ r_deblank_reading_until,$/;" e enum:r_instruction +r_deblank_reading_until command.h /^ r_duplicating_input, r_duplicating_output, r_deblank_reading_until,$/;" e enum:r_instruction +r_declare_builtin builtins_rust/declare/src/lib.rs /^pub extern "C" fn r_declare_builtin(list: *mut WordList) -> i32 {$/;" f +r_declare_find_variable builtins_rust/declare/src/lib.rs /^pub extern "C" fn r_declare_find_variable($/;" f +r_declare_internal builtins_rust/declare/src/lib.rs /^pub extern "C" fn r_declare_internal(mut list: *mut WordList, local_var: i32) -> i32 {$/;" f +r_dirs_builtin builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_dirs_builtin(listt: *mut WordList) -> i32 {$/;" f +r_disown_builtin builtins_rust/jobs/src/lib.rs /^pub extern "C" fn r_disown_builtin(list: *mut WordList) -> libc::c_int {$/;" f +r_display_signal_list builtins_rust/common/src/lib.rs /^pub extern "C" fn r_display_signal_list(mut list: *mut WordList, forcecols: i32) -> i32 {$/;" f +r_dogetopts builtins_rust/getopts/src/lib.rs /^pub extern "C" fn r_dogetopts(argc: i32, argv: *mut *mut c_char) -> i32 {$/;" f +r_dollar_vars_changed builtins_rust/common/src/lib.rs /^pub extern "C" fn r_dollar_vars_changed() -> i32 {$/;" f +r_duplicating_input builtins_rust/cd/src/lib.rs /^ r_duplicating_input,$/;" e enum:r_instruction +r_duplicating_input builtins_rust/common/src/lib.rs /^ r_duplicating_input,$/;" e enum:r_instruction +r_duplicating_input builtins_rust/complete/src/lib.rs /^ r_duplicating_input,$/;" e enum:r_instruction +r_duplicating_input builtins_rust/declare/src/lib.rs /^ r_duplicating_input,$/;" e enum:r_instruction +r_duplicating_input builtins_rust/fc/src/lib.rs /^ r_duplicating_input,$/;" e enum:r_instruction +r_duplicating_input builtins_rust/fg_bg/src/lib.rs /^ r_duplicating_input,$/;" e enum:r_instruction +r_duplicating_input builtins_rust/getopts/src/lib.rs /^ r_duplicating_input,$/;" e enum:r_instruction +r_duplicating_input builtins_rust/jobs/src/lib.rs /^ r_duplicating_input,$/;" e enum:r_instruction +r_duplicating_input builtins_rust/pushd/src/lib.rs /^ r_duplicating_input,$/;" e enum:r_instruction +r_duplicating_input builtins_rust/source/src/lib.rs /^ r_duplicating_input,$/;" e enum:r_instruction +r_duplicating_input builtins_rust/type/src/lib.rs /^ r_duplicating_input,$/;" e enum:r_instruction +r_duplicating_input command.h /^ r_duplicating_input, r_duplicating_output, r_deblank_reading_until,$/;" e enum:r_instruction +r_duplicating_input_word builtins_rust/cd/src/lib.rs /^ r_duplicating_input_word,$/;" e enum:r_instruction +r_duplicating_input_word builtins_rust/common/src/lib.rs /^ r_duplicating_input_word,$/;" e enum:r_instruction +r_duplicating_input_word builtins_rust/complete/src/lib.rs /^ r_duplicating_input_word,$/;" e enum:r_instruction +r_duplicating_input_word builtins_rust/declare/src/lib.rs /^ r_duplicating_input_word,$/;" e enum:r_instruction +r_duplicating_input_word builtins_rust/fc/src/lib.rs /^ r_duplicating_input_word,$/;" e enum:r_instruction +r_duplicating_input_word builtins_rust/fg_bg/src/lib.rs /^ r_duplicating_input_word,$/;" e enum:r_instruction +r_duplicating_input_word builtins_rust/getopts/src/lib.rs /^ r_duplicating_input_word,$/;" e enum:r_instruction +r_duplicating_input_word builtins_rust/jobs/src/lib.rs /^ r_duplicating_input_word,$/;" e enum:r_instruction +r_duplicating_input_word builtins_rust/pushd/src/lib.rs /^ r_duplicating_input_word,$/;" e enum:r_instruction +r_duplicating_input_word builtins_rust/source/src/lib.rs /^ r_duplicating_input_word,$/;" e enum:r_instruction +r_duplicating_input_word builtins_rust/type/src/lib.rs /^ r_duplicating_input_word,$/;" e enum:r_instruction +r_duplicating_input_word command.h /^ r_duplicating_input_word, r_duplicating_output_word,$/;" e enum:r_instruction +r_duplicating_output builtins_rust/cd/src/lib.rs /^ r_duplicating_output,$/;" e enum:r_instruction +r_duplicating_output builtins_rust/common/src/lib.rs /^ r_duplicating_output,$/;" e enum:r_instruction +r_duplicating_output builtins_rust/complete/src/lib.rs /^ r_duplicating_output,$/;" e enum:r_instruction +r_duplicating_output builtins_rust/declare/src/lib.rs /^ r_duplicating_output,$/;" e enum:r_instruction +r_duplicating_output builtins_rust/fc/src/lib.rs /^ r_duplicating_output,$/;" e enum:r_instruction +r_duplicating_output builtins_rust/fg_bg/src/lib.rs /^ r_duplicating_output,$/;" e enum:r_instruction +r_duplicating_output builtins_rust/getopts/src/lib.rs /^ r_duplicating_output,$/;" e enum:r_instruction +r_duplicating_output builtins_rust/jobs/src/lib.rs /^ r_duplicating_output,$/;" e enum:r_instruction +r_duplicating_output builtins_rust/pushd/src/lib.rs /^ r_duplicating_output,$/;" e enum:r_instruction +r_duplicating_output builtins_rust/source/src/lib.rs /^ r_duplicating_output,$/;" e enum:r_instruction +r_duplicating_output builtins_rust/type/src/lib.rs /^ r_duplicating_output,$/;" e enum:r_instruction +r_duplicating_output command.h /^ r_duplicating_input, r_duplicating_output, r_deblank_reading_until,$/;" e enum:r_instruction +r_duplicating_output_word builtins_rust/cd/src/lib.rs /^ r_duplicating_output_word,$/;" e enum:r_instruction +r_duplicating_output_word builtins_rust/common/src/lib.rs /^ r_duplicating_output_word,$/;" e enum:r_instruction +r_duplicating_output_word builtins_rust/complete/src/lib.rs /^ r_duplicating_output_word,$/;" e enum:r_instruction +r_duplicating_output_word builtins_rust/declare/src/lib.rs /^ r_duplicating_output_word,$/;" e enum:r_instruction +r_duplicating_output_word builtins_rust/fc/src/lib.rs /^ r_duplicating_output_word,$/;" e enum:r_instruction +r_duplicating_output_word builtins_rust/fg_bg/src/lib.rs /^ r_duplicating_output_word,$/;" e enum:r_instruction +r_duplicating_output_word builtins_rust/getopts/src/lib.rs /^ r_duplicating_output_word,$/;" e enum:r_instruction +r_duplicating_output_word builtins_rust/jobs/src/lib.rs /^ r_duplicating_output_word,$/;" e enum:r_instruction +r_duplicating_output_word builtins_rust/pushd/src/lib.rs /^ r_duplicating_output_word,$/;" e enum:r_instruction +r_duplicating_output_word builtins_rust/source/src/lib.rs /^ r_duplicating_output_word,$/;" e enum:r_instruction +r_duplicating_output_word builtins_rust/type/src/lib.rs /^ r_duplicating_output_word,$/;" e enum:r_instruction +r_duplicating_output_word command.h /^ r_duplicating_input_word, r_duplicating_output_word,$/;" e enum:r_instruction +r_echo_builtin builtins_rust/echo/src/lib.rs /^pub extern "C" fn r_echo_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_enable_builtin builtins_rust/enable/src/lib.rs /^pub unsafe extern "C" fn r_enable_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_err_and_out builtins_rust/cd/src/lib.rs /^ r_err_and_out,$/;" e enum:r_instruction +r_err_and_out builtins_rust/common/src/lib.rs /^ r_err_and_out,$/;" e enum:r_instruction +r_err_and_out builtins_rust/complete/src/lib.rs /^ r_err_and_out,$/;" e enum:r_instruction +r_err_and_out builtins_rust/declare/src/lib.rs /^ r_err_and_out,$/;" e enum:r_instruction +r_err_and_out builtins_rust/fc/src/lib.rs /^ r_err_and_out,$/;" e enum:r_instruction +r_err_and_out builtins_rust/fg_bg/src/lib.rs /^ r_err_and_out,$/;" e enum:r_instruction +r_err_and_out builtins_rust/getopts/src/lib.rs /^ r_err_and_out,$/;" e enum:r_instruction +r_err_and_out builtins_rust/jobs/src/lib.rs /^ r_err_and_out,$/;" e enum:r_instruction +r_err_and_out builtins_rust/pushd/src/lib.rs /^ r_err_and_out,$/;" e enum:r_instruction +r_err_and_out builtins_rust/source/src/lib.rs /^ r_err_and_out,$/;" e enum:r_instruction +r_err_and_out builtins_rust/type/src/lib.rs /^ r_err_and_out,$/;" e enum:r_instruction +r_err_and_out command.h /^ r_close_this, r_err_and_out, r_input_output, r_output_force,$/;" e enum:r_instruction +r_eval_builtin builtins_rust/eval/src/lib.rs /^pub extern "C" fn r_eval_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_exec_builtin builtins_rust/exec/src/lib.rs /^pub extern "C" fn r_exec_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_exec_cmd builtins_rust/exec_cmd/src/lib.rs /^pub extern "C" fn r_exec_cmd(command: *mut libc::c_char, list: *mut WordList) -> i32 {$/;" f +r_execute_cmd r_bash/src/lib.rs /^ pub fn r_execute_cmd() -> ::std::os::raw::c_int;$/;" f +r_execute_cmd src/lib.rs /^pub extern "C" fn r_execute_cmd() {$/;" f +r_execute_cmd2 r_bash/src/lib.rs /^ pub fn r_execute_cmd2(l: *mut WORD_LIST) -> ::std::os::raw::c_int;$/;" f +r_execute_cmd2 src/lib.rs /^pub extern "C" fn r_execute_cmd2(l : *mut WORD_LIST) -> i32 {$/;" f +r_execute_list_with_replacements builtins_rust/jobs/src/lib.rs /^pub extern "C" fn r_execute_list_with_replacements(list: *mut WordList) -> i32 {$/;" f +r_exit_builtin builtins_rust/exit/src/lib.rs /^pub extern "C" fn r_exit_builtin(list: *mut WordList) -> i32 {$/;" f +r_exit_or_logout builtins_rust/exit/src/lib.rs /^pub fn r_exit_or_logout(list: *mut WordList) -> i32 {$/;" f +r_exp_builtin builtins_rust/rlet/src/lib.rs /^pub extern "C" fn r_exp_builtin(list: *mut WordList) -> i32 {$/;" f +r_export_builtin builtins_rust/setattr/src/lib.rs /^pub extern "C" fn r_export_builtin(list: *mut WordList) -> c_int {$/;" f +r_false_builtin builtins_rust/colon/src/lib.rs /^pub extern "C" fn r_false_builtin(_ignore: *mut WordList) -> i32 {$/;" f +r_fc_builtin builtins_rust/fc/src/lib.rs /^pub extern "C" fn r_fc_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_fc_dosubs builtins_rust/fc/src/lib.rs /^pub extern "C" fn r_fc_dosubs(command: *mut c_char, subs: *mut REPL) -> *mut c_char {$/;" f +r_fc_gethist builtins_rust/fc/src/lib.rs /^pub extern "C" fn r_fc_gethist($/;" f +r_fc_gethnum builtins_rust/fc/src/lib.rs /^pub extern "C" fn r_fc_gethnum($/;" f +r_fc_number builtins_rust/fc/src/lib.rs /^pub extern "C" fn r_fc_number(list: *mut WordList) -> i32 {$/;" f +r_fc_replhist builtins_rust/fc/src/lib.rs /^pub extern "C" fn r_fc_replhist(command: *mut c_char) {$/;" f +r_fg_bg builtins_rust/fg_bg/src/lib.rs /^pub extern "C" fn r_fg_bg(list: *mut WordList, foreground: i32) -> i32 {$/;" f +r_fg_builtin builtins_rust/fg_bg/src/lib.rs /^pub extern "C" fn r_fg_builtin(list: *mut WordList) -> i32 {$/;" f +r_find_compact builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_find_compact(name: *mut c_char) -> i32 {$/;" f +r_find_compopt builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_find_compopt(name: *mut c_char) -> i32 {$/;" f +r_find_shell_builtin builtins_rust/common/src/lib.rs /^pub extern "C" fn r_find_shell_builtin(name: *mut c_char) -> *mut sh_builtin_func_t {$/;" f +r_find_special_builtin builtins_rust/common/src/lib.rs /^pub extern "C" fn r_find_special_builtin(name: *mut c_char) -> *mut sh_builtin_func_t {$/;" f +r_get_directory_stack builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_get_directory_stack(flags: i32) -> *mut WordList {$/;" f +r_get_dirstack_element builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_get_dirstack_element(ind: libc::c_long, sign: i32) -> *mut c_char {$/;" f +r_get_dirstack_from_string builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_get_dirstack_from_string(strt: *mut c_char) -> *mut c_char {$/;" f +r_get_dirstack_index builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_get_dirstack_index(ind: libc::c_long, sign: i32, indexp: *mut i32) -> i32 {$/;" f +r_get_exitstat builtins_rust/common/src/lib.rs /^pub extern "C" fn r_get_exitstat(mut list: *mut WordList) -> i32 {$/;" f +r_get_job_by_name builtins_rust/common/src/lib.rs /^pub extern "C" fn r_get_job_by_name(name: *const c_char, flags: i32) -> i32 {$/;" f +r_get_job_spec builtins_rust/common/src/lib.rs /^pub extern "C" fn r_get_job_spec(list: *mut WordList) -> i32 {$/;" f +r_get_numeric_arg builtins_rust/common/src/lib.rs /^pub extern "C" fn r_get_numeric_arg($/;" f +r_get_shopt_options builtins_rust/shopt/src/lib.rs /^pub unsafe extern "C" fn r_get_shopt_options() -> *mut *mut libc::c_char {$/;" f +r_get_working_directory builtins_rust/common/src/lib.rs /^pub extern "C" fn r_get_working_directory(for_whom: *mut c_char) -> *mut c_char {$/;" f +r_getopts_bind_variable builtins_rust/getopts/src/lib.rs /^pub extern "C" fn r_getopts_bind_variable(name: *mut c_char, value: *mut c_char) -> i32 {$/;" f +r_getopts_builtin builtins_rust/getopts/src/lib.rs /^pub extern "C" fn r_getopts_builtin(list: *mut WordList) -> i32 {$/;" f +r_getopts_reset builtins_rust/getopts/src/lib.rs /^pub extern "C" fn r_getopts_reset(newind: i32) {$/;" f +r_getopts_unbind_variable builtins_rust/getopts/src/lib.rs /^pub extern "C" fn r_getopts_unbind_variable(name: *mut c_char) -> i32 {$/;" f +r_hash_builtin builtins_rust/hash/src/lib.rs /^pub extern "C" fn r_hash_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_help_builtin builtins_rust/help/src/lib.rs /^pub extern "C" fn r_help_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_help_null_builtin builtins_rust/help/src/lib.rs /^pub extern "C" fn r_help_null_builtin(_list: *mut WordList) -> i32 {$/;" f +r_history_builtin builtins_rust/history/src/lib.rs /^pub extern "C" fn r_history_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_indirection_level_string r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_indirection_level_string()->*mut c_char$/;" f +r_initialize_bashopts builtins_rust/shopt/src/lib.rs /^pub unsafe extern "C" fn r_initialize_bashopts(no_bashopts: i32) {$/;" f +r_initialize_shell_builtins builtins_rust/common/src/lib.rs /^pub extern "C" fn r_initialize_shell_builtins() {$/;" f +r_input_direction builtins_rust/cd/src/lib.rs /^ r_input_direction,$/;" e enum:r_instruction +r_input_direction builtins_rust/common/src/lib.rs /^ r_input_direction,$/;" e enum:r_instruction +r_input_direction builtins_rust/complete/src/lib.rs /^ r_input_direction,$/;" e enum:r_instruction +r_input_direction builtins_rust/declare/src/lib.rs /^ r_input_direction,$/;" e enum:r_instruction +r_input_direction builtins_rust/fc/src/lib.rs /^ r_input_direction,$/;" e enum:r_instruction +r_input_direction builtins_rust/fg_bg/src/lib.rs /^ r_input_direction,$/;" e enum:r_instruction +r_input_direction builtins_rust/getopts/src/lib.rs /^ r_input_direction,$/;" e enum:r_instruction +r_input_direction builtins_rust/jobs/src/lib.rs /^ r_input_direction,$/;" e enum:r_instruction +r_input_direction builtins_rust/pushd/src/lib.rs /^ r_input_direction,$/;" e enum:r_instruction +r_input_direction builtins_rust/source/src/lib.rs /^ r_input_direction,$/;" e enum:r_instruction +r_input_direction builtins_rust/type/src/lib.rs /^ r_input_direction,$/;" e enum:r_instruction +r_input_direction command.h /^ r_output_direction, r_input_direction, r_inputa_direction,$/;" e enum:r_instruction +r_input_output builtins_rust/cd/src/lib.rs /^ r_input_output,$/;" e enum:r_instruction +r_input_output builtins_rust/common/src/lib.rs /^ r_input_output,$/;" e enum:r_instruction +r_input_output builtins_rust/complete/src/lib.rs /^ r_input_output,$/;" e enum:r_instruction +r_input_output builtins_rust/declare/src/lib.rs /^ r_input_output,$/;" e enum:r_instruction +r_input_output builtins_rust/fc/src/lib.rs /^ r_input_output,$/;" e enum:r_instruction +r_input_output builtins_rust/fg_bg/src/lib.rs /^ r_input_output,$/;" e enum:r_instruction +r_input_output builtins_rust/getopts/src/lib.rs /^ r_input_output,$/;" e enum:r_instruction +r_input_output builtins_rust/jobs/src/lib.rs /^ r_input_output,$/;" e enum:r_instruction +r_input_output builtins_rust/pushd/src/lib.rs /^ r_input_output,$/;" e enum:r_instruction +r_input_output builtins_rust/source/src/lib.rs /^ r_input_output,$/;" e enum:r_instruction +r_input_output builtins_rust/type/src/lib.rs /^ r_input_output,$/;" e enum:r_instruction +r_input_output command.h /^ r_close_this, r_err_and_out, r_input_output, r_output_force,$/;" e enum:r_instruction +r_inputa_direction builtins_rust/cd/src/lib.rs /^ r_inputa_direction,$/;" e enum:r_instruction +r_inputa_direction builtins_rust/common/src/lib.rs /^ r_inputa_direction,$/;" e enum:r_instruction +r_inputa_direction builtins_rust/complete/src/lib.rs /^ r_inputa_direction,$/;" e enum:r_instruction +r_inputa_direction builtins_rust/declare/src/lib.rs /^ r_inputa_direction,$/;" e enum:r_instruction +r_inputa_direction builtins_rust/fc/src/lib.rs /^ r_inputa_direction,$/;" e enum:r_instruction +r_inputa_direction builtins_rust/fg_bg/src/lib.rs /^ r_inputa_direction,$/;" e enum:r_instruction +r_inputa_direction builtins_rust/getopts/src/lib.rs /^ r_inputa_direction,$/;" e enum:r_instruction +r_inputa_direction builtins_rust/jobs/src/lib.rs /^ r_inputa_direction,$/;" e enum:r_instruction +r_inputa_direction builtins_rust/pushd/src/lib.rs /^ r_inputa_direction,$/;" e enum:r_instruction +r_inputa_direction builtins_rust/source/src/lib.rs /^ r_inputa_direction,$/;" e enum:r_instruction +r_inputa_direction builtins_rust/type/src/lib.rs /^ r_inputa_direction,$/;" e enum:r_instruction +r_inputa_direction command.h /^ r_output_direction, r_input_direction, r_inputa_direction,$/;" e enum:r_instruction +r_instruction builtins_rust/cd/src/lib.rs /^enum r_instruction {$/;" g +r_instruction builtins_rust/command/src/lib.rs /^pub type r_instruction = libc::c_uint;$/;" t +r_instruction builtins_rust/common/src/lib.rs /^enum r_instruction {$/;" g +r_instruction builtins_rust/complete/src/lib.rs /^enum r_instruction {$/;" g +r_instruction builtins_rust/declare/src/lib.rs /^enum r_instruction {$/;" g +r_instruction builtins_rust/exec/src/lib.rs /^pub type r_instruction = libc::c_uint;$/;" t +r_instruction builtins_rust/fc/src/lib.rs /^enum r_instruction {$/;" g +r_instruction builtins_rust/fg_bg/src/lib.rs /^enum r_instruction {$/;" g +r_instruction builtins_rust/getopts/src/lib.rs /^enum r_instruction {$/;" g +r_instruction builtins_rust/jobs/src/lib.rs /^enum r_instruction {$/;" g +r_instruction builtins_rust/kill/src/intercdep.rs /^pub type r_instruction = c_uint;$/;" t +r_instruction builtins_rust/pushd/src/lib.rs /^enum r_instruction {$/;" g +r_instruction builtins_rust/setattr/src/intercdep.rs /^pub type r_instruction = c_uint;$/;" t +r_instruction builtins_rust/source/src/lib.rs /^enum r_instruction {$/;" g +r_instruction builtins_rust/type/src/lib.rs /^enum r_instruction {$/;" g +r_instruction command.h /^enum r_instruction {$/;" g +r_instruction r_bash/src/lib.rs /^pub type r_instruction = u32;$/;" t +r_instruction r_glob/src/lib.rs /^pub type r_instruction = u32;$/;" t +r_instruction r_readline/src/lib.rs /^pub type r_instruction = u32;$/;" t +r_jobs_builtin builtins_rust/jobs/src/lib.rs /^pub extern "C" fn r_jobs_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_kill_builtin builtins_rust/kill/src/lib.rs /^pub extern "C" fn r_kill_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_let_builtin builtins_rust/rlet/src/lib.rs /^pub extern "C" fn r_let_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_list_hashed_filename_targets builtins_rust/hash/src/lib.rs /^extern "C" fn r_list_hashed_filename_targets(list: *mut WordList, fmt: i32) -> i32 {$/;" f +r_list_shopt_o_options builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn r_list_shopt_o_options(list: *mut WordList, flags: i32) -> i32 {$/;" f +r_list_shopts builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn r_list_shopts(list: *mut WordList, flags: i32) -> i32 {$/;" f +r_local_builtin builtins_rust/declare/src/lib.rs /^pub extern "C" fn r_local_builtin(list: *mut WordList) -> i32 {$/;" f +r_logout_builtin builtins_rust/exit/src/lib.rs /^pub extern "C" fn r_logout_builtin(list: *mut WordList) -> i32 {$/;" f +r_make_builtin_argv builtins_rust/common/src/lib.rs /^pub extern "C" fn r_make_builtin_argv(list: *mut WordList, ip: *mut i32) -> *mut *mut c_char {$/;" f +r_make_command_string r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_make_command_string(command:*mut COMMAND) -> *mut c_char$/;" f +r_mapfile_builtin builtins_rust/mapfile/src/lib.rs /^pub extern "C" fn r_mapfile_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_maybe_pop_dollar_vars builtins_rust/source/src/lib.rs /^pub extern "C" fn r_maybe_pop_dollar_vars() {$/;" f +r_mkdashname builtins_rust/exec/src/lib.rs /^extern "C" fn r_mkdashname(name: *mut c_char) -> *mut c_char {$/;" f +r_move_input builtins_rust/cd/src/lib.rs /^ r_move_input,$/;" e enum:r_instruction +r_move_input builtins_rust/common/src/lib.rs /^ r_move_input,$/;" e enum:r_instruction +r_move_input builtins_rust/complete/src/lib.rs /^ r_move_input,$/;" e enum:r_instruction +r_move_input builtins_rust/declare/src/lib.rs /^ r_move_input,$/;" e enum:r_instruction +r_move_input builtins_rust/fc/src/lib.rs /^ r_move_input,$/;" e enum:r_instruction +r_move_input builtins_rust/fg_bg/src/lib.rs /^ r_move_input,$/;" e enum:r_instruction +r_move_input builtins_rust/getopts/src/lib.rs /^ r_move_input,$/;" e enum:r_instruction +r_move_input builtins_rust/jobs/src/lib.rs /^ r_move_input,$/;" e enum:r_instruction +r_move_input builtins_rust/pushd/src/lib.rs /^ r_move_input,$/;" e enum:r_instruction +r_move_input builtins_rust/source/src/lib.rs /^ r_move_input,$/;" e enum:r_instruction +r_move_input builtins_rust/type/src/lib.rs /^ r_move_input,$/;" e enum:r_instruction +r_move_input command.h /^ r_move_input, r_move_output, r_move_input_word, r_move_output_word,$/;" e enum:r_instruction +r_move_input_word builtins_rust/cd/src/lib.rs /^ r_move_input_word,$/;" e enum:r_instruction +r_move_input_word builtins_rust/common/src/lib.rs /^ r_move_input_word,$/;" e enum:r_instruction +r_move_input_word builtins_rust/complete/src/lib.rs /^ r_move_input_word,$/;" e enum:r_instruction +r_move_input_word builtins_rust/declare/src/lib.rs /^ r_move_input_word,$/;" e enum:r_instruction +r_move_input_word builtins_rust/fc/src/lib.rs /^ r_move_input_word,$/;" e enum:r_instruction +r_move_input_word builtins_rust/fg_bg/src/lib.rs /^ r_move_input_word,$/;" e enum:r_instruction +r_move_input_word builtins_rust/getopts/src/lib.rs /^ r_move_input_word,$/;" e enum:r_instruction +r_move_input_word builtins_rust/jobs/src/lib.rs /^ r_move_input_word,$/;" e enum:r_instruction +r_move_input_word builtins_rust/pushd/src/lib.rs /^ r_move_input_word,$/;" e enum:r_instruction +r_move_input_word builtins_rust/source/src/lib.rs /^ r_move_input_word,$/;" e enum:r_instruction +r_move_input_word builtins_rust/type/src/lib.rs /^ r_move_input_word,$/;" e enum:r_instruction +r_move_input_word command.h /^ r_move_input, r_move_output, r_move_input_word, r_move_output_word,$/;" e enum:r_instruction +r_move_output builtins_rust/cd/src/lib.rs /^ r_move_output,$/;" e enum:r_instruction +r_move_output builtins_rust/common/src/lib.rs /^ r_move_output,$/;" e enum:r_instruction +r_move_output builtins_rust/complete/src/lib.rs /^ r_move_output,$/;" e enum:r_instruction +r_move_output builtins_rust/declare/src/lib.rs /^ r_move_output,$/;" e enum:r_instruction +r_move_output builtins_rust/fc/src/lib.rs /^ r_move_output,$/;" e enum:r_instruction +r_move_output builtins_rust/fg_bg/src/lib.rs /^ r_move_output,$/;" e enum:r_instruction +r_move_output builtins_rust/getopts/src/lib.rs /^ r_move_output,$/;" e enum:r_instruction +r_move_output builtins_rust/jobs/src/lib.rs /^ r_move_output,$/;" e enum:r_instruction +r_move_output builtins_rust/pushd/src/lib.rs /^ r_move_output,$/;" e enum:r_instruction +r_move_output builtins_rust/source/src/lib.rs /^ r_move_output,$/;" e enum:r_instruction +r_move_output builtins_rust/type/src/lib.rs /^ r_move_output,$/;" e enum:r_instruction +r_move_output command.h /^ r_move_input, r_move_output, r_move_input_word, r_move_output_word,$/;" e enum:r_instruction +r_move_output_word builtins_rust/cd/src/lib.rs /^ r_move_output_word,$/;" e enum:r_instruction +r_move_output_word builtins_rust/common/src/lib.rs /^ r_move_output_word,$/;" e enum:r_instruction +r_move_output_word builtins_rust/complete/src/lib.rs /^ r_move_output_word,$/;" e enum:r_instruction +r_move_output_word builtins_rust/declare/src/lib.rs /^ r_move_output_word,$/;" e enum:r_instruction +r_move_output_word builtins_rust/fc/src/lib.rs /^ r_move_output_word,$/;" e enum:r_instruction +r_move_output_word builtins_rust/fg_bg/src/lib.rs /^ r_move_output_word,$/;" e enum:r_instruction +r_move_output_word builtins_rust/getopts/src/lib.rs /^ r_move_output_word,$/;" e enum:r_instruction +r_move_output_word builtins_rust/jobs/src/lib.rs /^ r_move_output_word,$/;" e enum:r_instruction +r_move_output_word builtins_rust/pushd/src/lib.rs /^ r_move_output_word,$/;" e enum:r_instruction +r_move_output_word builtins_rust/source/src/lib.rs /^ r_move_output_word,$/;" e enum:r_instruction +r_move_output_word builtins_rust/type/src/lib.rs /^ r_move_output_word,$/;" e enum:r_instruction +r_move_output_word command.h /^ r_move_input, r_move_output, r_move_input_word, r_move_output_word,$/;" e enum:r_instruction +r_named_function_string r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_named_function_string(name:*mut c_char, command:*mut COMMAND, flags:c/;" f +r_no_args builtins_rust/common/src/lib.rs /^pub extern "C" fn r_no_args(list: *mut WordList) {$/;" f +r_no_options builtins_rust/common/src/lib.rs /^pub extern "C" fn r_no_options(list: *mut WordList) -> i32 {$/;" f +r_number_of_args builtins_rust/common/src/lib.rs /^pub extern "C" fn r_number_of_args() -> i32 {$/;" f +r_output_direction builtins_rust/cd/src/lib.rs /^ r_output_direction,$/;" e enum:r_instruction +r_output_direction builtins_rust/common/src/lib.rs /^ r_output_direction,$/;" e enum:r_instruction +r_output_direction builtins_rust/complete/src/lib.rs /^ r_output_direction,$/;" e enum:r_instruction +r_output_direction builtins_rust/declare/src/lib.rs /^ r_output_direction,$/;" e enum:r_instruction +r_output_direction builtins_rust/fc/src/lib.rs /^ r_output_direction,$/;" e enum:r_instruction +r_output_direction builtins_rust/fg_bg/src/lib.rs /^ r_output_direction,$/;" e enum:r_instruction +r_output_direction builtins_rust/getopts/src/lib.rs /^ r_output_direction,$/;" e enum:r_instruction +r_output_direction builtins_rust/jobs/src/lib.rs /^ r_output_direction,$/;" e enum:r_instruction +r_output_direction builtins_rust/pushd/src/lib.rs /^ r_output_direction,$/;" e enum:r_instruction +r_output_direction builtins_rust/source/src/lib.rs /^ r_output_direction,$/;" e enum:r_instruction +r_output_direction builtins_rust/type/src/lib.rs /^ r_output_direction,$/;" e enum:r_instruction +r_output_direction command.h /^ r_output_direction, r_input_direction, r_inputa_direction,$/;" e enum:r_instruction +r_output_force builtins_rust/cd/src/lib.rs /^ r_output_force,$/;" e enum:r_instruction +r_output_force builtins_rust/common/src/lib.rs /^ r_output_force,$/;" e enum:r_instruction +r_output_force builtins_rust/complete/src/lib.rs /^ r_output_force,$/;" e enum:r_instruction +r_output_force builtins_rust/declare/src/lib.rs /^ r_output_force,$/;" e enum:r_instruction +r_output_force builtins_rust/fc/src/lib.rs /^ r_output_force,$/;" e enum:r_instruction +r_output_force builtins_rust/fg_bg/src/lib.rs /^ r_output_force,$/;" e enum:r_instruction +r_output_force builtins_rust/getopts/src/lib.rs /^ r_output_force,$/;" e enum:r_instruction +r_output_force builtins_rust/jobs/src/lib.rs /^ r_output_force,$/;" e enum:r_instruction +r_output_force builtins_rust/pushd/src/lib.rs /^ r_output_force,$/;" e enum:r_instruction +r_output_force builtins_rust/source/src/lib.rs /^ r_output_force,$/;" e enum:r_instruction +r_output_force builtins_rust/type/src/lib.rs /^ r_output_force,$/;" e enum:r_instruction +r_output_force command.h /^ r_close_this, r_err_and_out, r_input_output, r_output_force,$/;" e enum:r_instruction +r_parse_bashopts builtins_rust/shopt/src/lib.rs /^pub unsafe extern "C" fn r_parse_bashopts(value: *mut libc::c_char) {$/;" f +r_parse_symbolic_mode builtins_rust/umask/src/lib.rs /^extern "C" fn r_parse_symbolic_mode(mode: *mut c_char, initial_bits: i32) -> i32 {$/;" f +r_pidstat_table r_jobs/src/lib.rs /^pub static mut r_pidstat_table:[ps_index_t; 4096] = [0; 4096];$/;" v +r_popd_builtin builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_popd_builtin(listt: *mut WordList) -> i32 {$/;" f +r_print_all_completions builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_print_all_completions() {$/;" f +r_print_arg builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_print_arg(arg: *const c_char, flag: *const c_char, quote: i32) {$/;" f +r_print_arith_command r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_print_arith_command(arith_cmd_list:*mut WORD_LIST)$/;" f +r_print_array_assignment builtins_rust/setattr/src/lib.rs /^pub unsafe extern "C" fn r_print_array_assignment(var: *mut SHELL_VAR, quote: c_int) {$/;" f +r_print_assoc_assignment builtins_rust/setattr/src/lib.rs /^pub unsafe extern "C" fn r_print_assoc_assignment(var: *mut SHELL_VAR, quote: c_int) {$/;" f +r_print_builtin_name builtins_rust/common/src/lib.rs /^extern "C" fn r_print_builtin_name() {$/;" f +r_print_case_command_head r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_print_case_command_head(case_command:*mut CASE_COM)$/;" f +r_print_cmd_completions builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_print_cmd_completions(list: *mut WordList) -> i32 {$/;" f +r_print_cmd_name builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_print_cmd_name(cmd: *const c_char) {$/;" f +r_print_command r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_print_command(command:*mut COMMAND)$/;" f +r_print_compactions builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_print_compactions(acts: c_ulong) {$/;" f +r_print_compitem builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_print_compitem(item: *mut BUCKET_CONTENTS) -> i32 {$/;" f +r_print_compoptions builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_print_compoptions(copts: c_ulong, full: i32) {$/;" f +r_print_compopts builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_print_compopts(cmd: *mut c_char, cs: *mut COMPSPEC, full: i32) {$/;" f +r_print_cond_command r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_print_cond_command(cond:*mut COND_COM)$/;" f +r_print_for_command_head r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_print_for_command_head(for_command:*mut FOR_COM)$/;" f +r_print_hash_info builtins_rust/hash/src/lib.rs /^extern "C" fn r_print_hash_info(item: *mut BUCKET_CONTENTS) -> i32 {$/;" f +r_print_hashed_commands builtins_rust/hash/src/lib.rs /^extern "C" fn r_print_hashed_commands(fmt: i32) -> i32 {$/;" f +r_print_one_completion builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_print_one_completion(cmd: *mut c_char, cs: *mut COMPSPEC) -> i32 {$/;" f +r_print_portable_hash_info builtins_rust/hash/src/lib.rs /^extern "C" fn r_print_portable_hash_info(item: *mut BUCKET_CONTENTS) -> i32 {$/;" f +r_print_select_command_head r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_print_select_command_head(select_command:*mut SELECT_COM)$/;" f +r_print_simple_command r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_print_simple_command(simple_command:*mut SIMPLE_COM)$/;" f +r_print_symbolic_umask builtins_rust/umask/src/lib.rs /^extern "C" fn r_print_symbolic_umask(um: mode_t!()) {$/;" f +r_print_word_list r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_print_word_list(list:*mut WORD_LIST, separator:*mut c_char)$/;" f +r_printf_builtin builtins_rust/printf/src/lib.rs /^pub extern "C" fn r_printf_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_pushd_builtin builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_pushd_builtin(listt: *mut WordList) -> i32 {$/;" f +r_pushd_error builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_pushd_error(offset: i32, arg: *mut c_char) {$/;" f +r_pwd_builtin builtins_rust/cd/src/lib.rs /^pub extern "C" fn r_pwd_builtin(list: *mut WordList) -> i32 {$/;" f +r_query_bindings builtins_rust/bind/src/lib.rs /^extern "C" fn r_query_bindings(name: *mut c_char) -> i32 {$/;" f +r_read_builtin builtins_rust/read/src/lib.rs /^pub extern "C" fn r_read_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_read_octal builtins_rust/common/src/lib.rs /^pub extern "C" fn r_read_octal(mut string: *mut c_char) -> i32 {$/;" f +r_reading_string builtins_rust/cd/src/lib.rs /^ r_reading_string,$/;" e enum:r_instruction +r_reading_string builtins_rust/common/src/lib.rs /^ r_reading_string,$/;" e enum:r_instruction +r_reading_string builtins_rust/complete/src/lib.rs /^ r_reading_string,$/;" e enum:r_instruction +r_reading_string builtins_rust/declare/src/lib.rs /^ r_reading_string,$/;" e enum:r_instruction +r_reading_string builtins_rust/fc/src/lib.rs /^ r_reading_string,$/;" e enum:r_instruction +r_reading_string builtins_rust/fg_bg/src/lib.rs /^ r_reading_string,$/;" e enum:r_instruction +r_reading_string builtins_rust/getopts/src/lib.rs /^ r_reading_string,$/;" e enum:r_instruction +r_reading_string builtins_rust/jobs/src/lib.rs /^ r_reading_string,$/;" e enum:r_instruction +r_reading_string builtins_rust/pushd/src/lib.rs /^ r_reading_string,$/;" e enum:r_instruction +r_reading_string builtins_rust/source/src/lib.rs /^ r_reading_string,$/;" e enum:r_instruction +r_reading_string builtins_rust/type/src/lib.rs /^ r_reading_string,$/;" e enum:r_instruction +r_reading_string command.h /^ r_appending_to, r_reading_until, r_reading_string,$/;" e enum:r_instruction +r_reading_until builtins_rust/cd/src/lib.rs /^ r_reading_until,$/;" e enum:r_instruction +r_reading_until builtins_rust/common/src/lib.rs /^ r_reading_until,$/;" e enum:r_instruction +r_reading_until builtins_rust/complete/src/lib.rs /^ r_reading_until,$/;" e enum:r_instruction +r_reading_until builtins_rust/declare/src/lib.rs /^ r_reading_until,$/;" e enum:r_instruction +r_reading_until builtins_rust/fc/src/lib.rs /^ r_reading_until,$/;" e enum:r_instruction +r_reading_until builtins_rust/fg_bg/src/lib.rs /^ r_reading_until,$/;" e enum:r_instruction +r_reading_until builtins_rust/getopts/src/lib.rs /^ r_reading_until,$/;" e enum:r_instruction +r_reading_until builtins_rust/jobs/src/lib.rs /^ r_reading_until,$/;" e enum:r_instruction +r_reading_until builtins_rust/pushd/src/lib.rs /^ r_reading_until,$/;" e enum:r_instruction +r_reading_until builtins_rust/source/src/lib.rs /^ r_reading_until,$/;" e enum:r_instruction +r_reading_until builtins_rust/type/src/lib.rs /^ r_reading_until,$/;" e enum:r_instruction +r_reading_until command.h /^ r_appending_to, r_reading_until, r_reading_string,$/;" e enum:r_instruction +r_readonly_builtin builtins_rust/setattr/src/lib.rs /^pub extern "C" fn r_readonly_builtin(list: *mut WordList) -> c_int {$/;" f +r_remember_args builtins_rust/common/src/lib.rs /^pub extern "C" fn r_remember_args(mut list: *mut WordList, destructive: i32) {$/;" f +r_remove_cmd_completions builtins_rust/complete/src/lib.rs /^pub extern "C" fn r_remove_cmd_completions(list: *mut WordList) -> i32 {$/;" f +r_reset_shopt_options builtins_rust/shopt/src/lib.rs /^pub unsafe extern "C" fn r_reset_shopt_options() {$/;" f +r_resetpwd builtins_rust/cd/src/lib.rs /^pub extern "C" fn r_resetpwd(caller: *mut c_char) -> *mut c_char {$/;" f +r_resetxattr builtins_rust/cd/src/lib.rs /^pub extern "C" fn r_resetxattr() {$/;" f +r_return_builtin builtins_rust/rreturn/src/lib.rs /^pub extern "C" fn r_return_builtin(list: *mut WordList) -> i32 {$/;" f +r_savestring builtins_rust/common/src/lib.rs /^pub unsafe fn r_savestring(x: *const c_char) -> *mut c_char {$/;" f +r_set_bashopts builtins_rust/shopt/src/lib.rs /^pub unsafe extern "C" fn r_set_bashopts() {$/;" f +r_set_builtin builtins_rust/set/src/lib.rs /^pub extern "C" fn r_set_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_set_compatibility_opts builtins_rust/shopt/src/lib.rs /^pub unsafe extern "C" fn r_set_compatibility_opts() {$/;" f +r_set_dirstack_element builtins_rust/pushd/src/lib.rs /^pub extern "C" fn r_set_dirstack_element(ind: libc::c_long, sign: i32, value: *mut c_char) {$/;" f +r_set_dollar_vars_changed builtins_rust/common/src/lib.rs /^pub extern "C" fn r_set_dollar_vars_changed() {$/;" f +r_set_dollar_vars_unchanged builtins_rust/common/src/lib.rs /^pub extern "C" fn r_set_dollar_vars_unchanged() {$/;" f +r_set_login_shell builtins_rust/shopt/src/lib.rs /^pub unsafe extern "C" fn r_set_login_shell(_option_name: *mut libc::c_char, _mode: i32) -> i32 {$/;" f +r_set_shellopts builtins_rust/set/src/lib.rs /^pub unsafe fn r_set_shellopts() {$/;" f +r_set_verbose_flag builtins_rust/fc/src/lib.rs /^pub extern "C" fn r_set_verbose_flag() {$/;" f +r_set_waitlist builtins_rust/wait/src/lib.rs /^extern "C" fn r_set_waitlist(list: *mut WordList) -> i32 {$/;" f +r_set_working_dierctory builtins_rust/common/src/lib.rs /^pub extern "C" fn r_set_working_dierctory(name: *mut c_char) {$/;" f +r_setpwd builtins_rust/cd/src/lib.rs /^pub extern "C" fn r_setpwd(dirname: *mut c_char) -> i32 {$/;" f +r_sh_badjob builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_badjob(s: *mut c_char) {$/;" f +r_sh_badpid builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_badpid(s: *mut c_char) {$/;" f +r_sh_chkwrite builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_chkwrite(s: i32) -> i32 {$/;" f +r_sh_erange builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_erange(s: *mut c_char, desc: *mut c_char) {$/;" f +r_sh_invalidid builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_invalidid(s: *mut c_char) {$/;" f +r_sh_invalidnum builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_invalidnum(s: *mut c_char) {$/;" f +r_sh_invalidopt builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_invalidopt(s: *mut c_char) {$/;" f +r_sh_invalidoptname builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_invalidoptname(s: *mut c_char) {$/;" f +r_sh_invalidsig builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_invalidsig(s: *mut c_char) {$/;" f +r_sh_needarg builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_needarg(s: *mut c_char) {$/;" f +r_sh_neednumarg builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_neednumarg(s: *mut c_char) {$/;" f +r_sh_nojobs builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_nojobs(s: *mut c_char) {$/;" f +r_sh_notbuiltin builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_notbuiltin(s: *mut c_char) {$/;" f +r_sh_notfound builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_notfound(s: *mut c_char) {$/;" f +r_sh_readonly builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_readonly(s: *mut c_char) {$/;" f +r_sh_restricted builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_restricted(s: *mut c_char) {$/;" f +r_sh_ttyerror builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_ttyerror(set: i32) {$/;" f +r_sh_wrerror builtins_rust/common/src/lib.rs /^pub extern "C" fn r_sh_wrerror() {$/;" f +r_shell_builtin_compare builtins_rust/common/src/lib.rs /^extern "C" fn r_shell_builtin_compare(sbp1: *mut builtin, sbp2: *mut builtin) -> i32 {$/;" f +r_shift_args builtins_rust/common/src/lib.rs /^pub extern "C" fn r_shift_args(mut times: i32) {$/;" f +r_shift_builtin builtins_rust/shift/src/lib.rs /^pub extern "C" fn r_shift_builtin(list: *mut WordList) -> i32 {$/;" f +r_shopt_builtin builtins_rust/shopt/src/lib.rs /^pub unsafe extern "C" fn r_shopt_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_shopt_listopt builtins_rust/shopt/src/lib.rs /^pub unsafe extern "C" fn r_shopt_listopt(name: *mut libc::c_char, reusable: i32) -> i32 {$/;" f +r_shopt_setopt builtins_rust/shopt/src/lib.rs /^pub unsafe extern "C" fn r_shopt_setopt(name: *mut libc::c_char, mode: i32) -> i32 {$/;" f +r_source_builtin builtins_rust/source/src/lib.rs /^pub extern "C" fn r_source_builtin(list: *mut WordList) -> i32 {$/;" f +r_suspend_builtin builtins_rust/suspend/src/lib.rs /^pub extern "C" fn r_suspend_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_symbolic_umask builtins_rust/umask/src/lib.rs /^extern "C" fn r_symbolic_umask(list: *mut WordList) -> i32 {$/;" f +r_test_builtin builtins_rust/test/src/lib.rs /^pub extern "C" fn r_test_builtin(list: *mut WordList) -> i32 {$/;" f +r_times_builtin builtins_rust/times/src/lib.rs /^pub extern "C" fn r_times_builtin(list: *mut WordList) -> i32 {$/;" f +r_trap_builtin builtins_rust/trap/src/lib.rs /^pub extern "C" fn r_trap_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_type_builtin builtins_rust/type/src/lib.rs /^pub unsafe extern "C" fn r_type_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_ulimit_builtin builtins_rust/ulimit/src/lib.rs /^pub unsafe extern "C" fn r_ulimit_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_umask_builtin builtins_rust/umask/src/lib.rs /^pub extern "C" fn r_umask_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_unalias_builtin builtins_rust/alias/src/lib.rs /^pub unsafe extern "C" fn r_unalias_builtin(mut list: *mut WordList) -> libc::c_int {$/;" f +r_unbind_command builtins_rust/bind/src/lib.rs /^extern "C" fn r_unbind_command(name: *mut c_char) -> i32 {$/;" f +r_unbind_keyseq builtins_rust/bind/src/lib.rs /^extern "C" fn r_unbind_keyseq(seq: *mut c_char) -> i32 {$/;" f +r_unset_builtin builtins_rust/set/src/lib.rs /^pub extern "C" fn r_unset_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_unset_waitlist builtins_rust/wait/src/lib.rs /^extern "C" fn r_unset_waitlist() {$/;" f +r_wait_builtin builtins_rust/wait/src/lib.rs /^pub extern "C" fn r_wait_builtin(mut list: *mut WordList) -> i32 {$/;" f +r_xtrace_fdchk r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_xtrace_fdchk(fd:c_int)$/;" f +r_xtrace_init r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_xtrace_init()$/;" f +r_xtrace_print_arith_cmd r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_xtrace_print_arith_cmd(list:*mut WORD_LIST)$/;" f +r_xtrace_print_assignment r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_xtrace_print_assignment(name:*mut c_char, value:*mut c_char, assign_/;" f +r_xtrace_print_case_command_head r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_xtrace_print_case_command_head(case_command:*mut CASE_COM)$/;" f +r_xtrace_print_cond_term r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_xtrace_print_cond_term(type_0:c_int, invert:c_int, op:*mut WORD_DESC,/;" f +r_xtrace_print_for_command_head r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_xtrace_print_for_command_head(for_command:*mut FOR_COM){$/;" f +r_xtrace_print_select_command_head r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_xtrace_print_select_command_head(select_command:*mut SELECT_COM)$/;" f +r_xtrace_print_word_list r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_xtrace_print_word_list(list:*mut WORD_LIST, xtflags: c_int) $/;" f +r_xtrace_reset r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_xtrace_reset()$/;" f +r_xtrace_set r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn r_xtrace_set(fd:c_int, fp:*mut FILE)$/;" f +rabinkarp vendor/memchr/src/memmem/mod.rs /^mod rabinkarp;$/;" n +race vendor/once_cell/src/lib.rs /^pub mod race;$/;" n +race vendor/once_cell/tests/it.rs /^mod race {$/;" n +race_once_box vendor/once_cell/tests/it.rs /^mod race_once_box {$/;" n +radixsort vendor/libc/src/solid/mod.rs /^ pub fn radixsort($/;" f +raise builtins_rust/wait/src/signal.rs /^ pub fn raise(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +raise lib/intl/dcigettext.c /^# define raise(/;" d file: +raise r_bash/src/lib.rs /^ pub fn raise(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +raise r_glob/src/lib.rs /^ pub fn raise(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +raise r_readline/src/lib.rs /^ pub fn raise(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +raise vendor/libc/src/fuchsia/mod.rs /^ pub fn raise(signum: ::c_int) -> ::c_int;$/;" f +raise vendor/libc/src/solid/mod.rs /^ pub fn raise(arg1: c_int) -> c_int;$/;" f +raise vendor/libc/src/unix/mod.rs /^ pub fn raise(signum: ::c_int) -> ::c_int;$/;" f +raise vendor/libc/src/vxworks/mod.rs /^ pub fn raise(__signo: ::c_int) -> ::c_int;$/;" f +raise vendor/libc/src/windows/mod.rs /^ pub fn raise(signum: c_int) -> c_int;$/;" f +rallocx vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn rallocx(ptr: *mut ::c_void, size: ::size_t, flags: ::c_int) -> *mut ::c_void;$/;" f +ram_total vendor/nix/src/sys/sysinfo.rs /^ pub fn ram_total(&self) -> u64 {$/;" P implementation:SysInfo +ram_unused vendor/nix/src/sys/sysinfo.rs /^ pub fn ram_unused(&self) -> u64 {$/;" P implementation:SysInfo +rand r_bash/src/lib.rs /^ pub fn rand() -> ::std::os::raw::c_int;$/;" f +rand r_glob/src/lib.rs /^ pub fn rand() -> ::std::os::raw::c_int;$/;" f +rand r_readline/src/lib.rs /^ pub fn rand() -> ::std::os::raw::c_int;$/;" f +rand vendor/libc/src/fuchsia/mod.rs /^ pub fn rand() -> c_int;$/;" f +rand vendor/libc/src/solid/mod.rs /^ pub fn rand() -> c_int;$/;" f +rand vendor/libc/src/unix/bsd/mod.rs /^ pub fn rand() -> ::c_int;$/;" f +rand vendor/libc/src/unix/haiku/mod.rs /^ pub fn rand() -> ::c_int;$/;" f +rand vendor/libc/src/unix/hermit/mod.rs /^ pub fn rand() -> ::c_int;$/;" f +rand vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn rand() -> ::c_int;$/;" f +rand vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn rand() -> ::c_int;$/;" f +rand vendor/libc/src/unix/newlib/mod.rs /^ pub fn rand() -> ::c_int;$/;" f +rand vendor/libc/src/unix/solarish/mod.rs /^ pub fn rand() -> ::c_int;$/;" f +rand vendor/libc/src/wasi.rs /^ pub fn rand() -> c_int;$/;" f +rand vendor/libc/src/windows/mod.rs /^ pub fn rand() -> c_int;$/;" f +randABytes vendor/libc/src/vxworks/mod.rs /^ pub fn randABytes(buf: *mut c_uchar, length: c_int) -> c_int;$/;" f +randBytes vendor/libc/src/vxworks/mod.rs /^ pub fn randBytes(buf: *mut c_uchar, length: c_int) -> c_int;$/;" f +randSecure vendor/libc/src/vxworks/mod.rs /^ pub fn randSecure() -> c_int;$/;" f +randUBytes vendor/libc/src/vxworks/mod.rs /^ pub fn randUBytes(buf: *mut c_uchar, length: c_int) -> c_int;$/;" f +rand_deg r_bash/src/lib.rs /^ pub rand_deg: ::std::os::raw::c_int,$/;" m struct:random_data +rand_deg r_glob/src/lib.rs /^ pub rand_deg: ::std::os::raw::c_int,$/;" m struct:random_data +rand_deg r_readline/src/lib.rs /^ pub rand_deg: ::std::os::raw::c_int,$/;" m struct:random_data +rand_r r_bash/src/lib.rs /^ pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) -> ::std::os::raw::c_int;$/;" f +rand_r r_glob/src/lib.rs /^ pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) -> ::std::os::raw::c_int;$/;" f +rand_r r_readline/src/lib.rs /^ pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) -> ::std::os::raw::c_int;$/;" f +rand_r vendor/libc/src/solid/mod.rs /^ pub fn rand_r(arg1: *mut c_uint) -> c_int;$/;" f +rand_r vendor/libc/src/wasi.rs /^ pub fn rand_r(a: *mut c_uint) -> c_int;$/;" f +rand_sep r_bash/src/lib.rs /^ pub rand_sep: ::std::os::raw::c_int,$/;" m struct:random_data +rand_sep r_glob/src/lib.rs /^ pub rand_sep: ::std::os::raw::c_int,$/;" m struct:random_data +rand_sep r_readline/src/lib.rs /^ pub rand_sep: ::std::os::raw::c_int,$/;" m struct:random_data +rand_type r_bash/src/lib.rs /^ pub rand_type: ::std::os::raw::c_int,$/;" m struct:random_data +rand_type r_glob/src/lib.rs /^ pub rand_type: ::std::os::raw::c_int,$/;" m struct:random_data +rand_type r_readline/src/lib.rs /^ pub rand_type: ::std::os::raw::c_int,$/;" m struct:random_data +random lib/sh/tmpfile.c /^#define random(/;" d file: +random r_bash/src/lib.rs /^ pub fn random() -> ::std::os::raw::c_long;$/;" f +random r_glob/src/lib.rs /^ pub fn random() -> ::std::os::raw::c_long;$/;" f +random r_readline/src/lib.rs /^ pub fn random() -> ::std::os::raw::c_long;$/;" f +random vendor/futures-util/src/async_await/mod.rs /^mod random;$/;" n +random vendor/futures-util/src/async_await/random.rs /^fn random() -> u64 {$/;" f +random vendor/libc/src/solid/mod.rs /^ pub fn random() -> c_long;$/;" f +random vendor/libc/src/wasi.rs /^ pub fn random() -> c_long;$/;" f +random.o lib/sh/Makefile.in /^random.o: ${BASHINCDIR}\/filecntl.h$/;" t +random.o lib/sh/Makefile.in /^random.o: ${BUILD_DIR}\/config.h$/;" t +random.o lib/sh/Makefile.in /^random.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +random.o lib/sh/Makefile.in /^random.o: ${topdir}\/bashtypes.h ${BASHINCDIR}\/stdc.h$/;" t +random.o lib/sh/Makefile.in /^random.o: random.c$/;" t +random_data r_bash/src/lib.rs /^pub struct random_data {$/;" s +random_data r_glob/src/lib.rs /^pub struct random_data {$/;" s +random_data r_readline/src/lib.rs /^pub struct random_data {$/;" s +random_r r_bash/src/lib.rs /^ pub fn random_r(__buf: *mut random_data, __result: *mut i32) -> ::std::os::raw::c_int;$/;" f +random_r r_glob/src/lib.rs /^ pub fn random_r(__buf: *mut random_data, __result: *mut i32) -> ::std::os::raw::c_int;$/;" f +random_r r_readline/src/lib.rs /^ pub fn random_r(__buf: *mut random_data, __result: *mut i32) -> ::std::os::raw::c_int;$/;" f +range lib/sh/strftime.c /^#define range(/;" d file: +range vendor/futures-util/src/io/window.rs /^ range: Range,$/;" m struct:Window +range vendor/nix/src/sys/select.rs /^ range: Range,$/;" m struct:Fds +rangecmp lib/glob/smatch.c /^# define rangecmp(/;" d file: +rangecmp lib/glob/smatch.c /^rangecmp (c1, c2, forcecoll)$/;" f file: +rangecmp_wc lib/glob/smatch.c /^rangecmp_wc (c1, c2, forcecoll)$/;" f file: +rank vendor/memchr/src/memmem/rarebytes.rs /^fn rank(b: u8) -> usize {$/;" f +rare1 vendor/memchr/src/memmem/prefilter/mod.rs /^ rare1: u8,$/;" m struct:tests::PrefilterTestSeed +rare1i vendor/memchr/src/memmem/genericsimd.rs /^ rare1i: u8,$/;" m struct:Forward +rare1i vendor/memchr/src/memmem/rarebytes.rs /^ rare1i: u8,$/;" m struct:RareNeedleBytes +rare2 vendor/memchr/src/memmem/prefilter/mod.rs /^ rare2: u8,$/;" m struct:tests::PrefilterTestSeed +rare2i vendor/memchr/src/memmem/genericsimd.rs /^ rare2i: u8,$/;" m struct:Forward +rare2i vendor/memchr/src/memmem/rarebytes.rs /^ rare2i: u8,$/;" m struct:RareNeedleBytes +rarebytes vendor/memchr/src/memmem/mod.rs /^ pub(crate) rarebytes: RareNeedleBytes,$/;" m struct:NeedleInfo +rarebytes vendor/memchr/src/memmem/mod.rs /^mod rarebytes;$/;" n +raw vendor/proc-macro2/src/fallback.rs /^ raw: bool,$/;" m struct:Ident +raw_field vendor/memoffset/src/lib.rs /^mod raw_field;$/;" n +raw_field vendor/memoffset/src/raw_field.rs /^macro_rules! raw_field {$/;" M +raw_field_tuple vendor/memoffset/src/raw_field.rs /^macro_rules! raw_field_tuple {$/;" M +raw_ident_empty vendor/proc-macro2/tests/test.rs /^fn raw_ident_empty() {$/;" f +raw_ident_invalid vendor/proc-macro2/tests/test.rs /^fn raw_ident_invalid() {$/;" f +raw_ident_number vendor/proc-macro2/tests/test.rs /^fn raw_ident_number() {$/;" f +raw_identifier vendor/proc-macro2/tests/test.rs /^fn raw_identifier() {$/;" f +raw_idents vendor/proc-macro2/tests/test.rs /^fn raw_idents() {$/;" f +raw_job_exit_status jobs.c /^raw_job_exit_status (job)$/;" f file: +raw_job_exit_status r_jobs/src/lib.rs /^unsafe extern "C" fn raw_job_exit_status(mut job: c_int) -> WAIT {$/;" f +raw_maximize_bench vendor/unic-langid-impl/benches/likely_subtags.rs /^fn raw_maximize_bench(c: &mut Criterion) {$/;" f +raw_string vendor/proc-macro2/src/parse.rs /^fn raw_string(input: Cursor) -> Result {$/;" f +rawmemchr r_bash/src/lib.rs /^ pub fn rawmemchr($/;" f +rawmemchr r_glob/src/lib.rs /^ pub fn rawmemchr($/;" f +rawmemchr r_readline/src/lib.rs /^ pub fn rawmemchr($/;" f +rax builtins_rust/wait/src/signal.rs /^ pub rax: __uint64_t,$/;" m struct:sigcontext +rax r_bash/src/lib.rs /^ pub rax: __uint64_t,$/;" m struct:sigcontext +rax r_glob/src/lib.rs /^ pub rax: __uint64_t,$/;" m struct:sigcontext +rax r_readline/src/lib.rs /^ pub rax: __uint64_t,$/;" m struct:sigcontext +rayon_init vendor/syn/tests/common/mod.rs /^pub fn rayon_init() {$/;" f +rbp builtins_rust/wait/src/signal.rs /^ pub rbp: __uint64_t,$/;" m struct:sigcontext +rbp r_bash/src/lib.rs /^ pub rbp: __uint64_t,$/;" m struct:sigcontext +rbp r_glob/src/lib.rs /^ pub rbp: __uint64_t,$/;" m struct:sigcontext +rbp r_readline/src/lib.rs /^ pub rbp: __uint64_t,$/;" m struct:sigcontext +rbx builtins_rust/wait/src/signal.rs /^ pub rbx: __uint64_t,$/;" m struct:sigcontext +rbx r_bash/src/lib.rs /^ pub rbx: __uint64_t,$/;" m struct:sigcontext +rbx r_glob/src/lib.rs /^ pub rbx: __uint64_t,$/;" m struct:sigcontext +rbx r_readline/src/lib.rs /^ pub rbx: __uint64_t,$/;" m struct:sigcontext +rcsid lib/sh/inet_aton.c /^static char rcsid[] = "$Id: inet_addr.c,v 1.5 1996\/08\/14 03:48:37 drepper Exp $";$/;" v typeref:typename:char[] file: +rcvec vendor/proc-macro2/src/lib.rs /^mod rcvec;$/;" n +rcx builtins_rust/wait/src/signal.rs /^ pub rcx: __uint64_t,$/;" m struct:sigcontext +rcx r_bash/src/lib.rs /^ pub rcx: __uint64_t,$/;" m struct:sigcontext +rcx r_glob/src/lib.rs /^ pub rcx: __uint64_t,$/;" m struct:sigcontext +rcx r_readline/src/lib.rs /^ pub rcx: __uint64_t,$/;" m struct:sigcontext +rd redir.c /^static REDIRECTEE rd;$/;" v typeref:typename:REDIRECTEE file: +rd_token alias.c /^rd_token (string, start)$/;" f file: +rdi builtins_rust/wait/src/signal.rs /^ pub rdi: __uint64_t,$/;" m struct:sigcontext +rdi r_bash/src/lib.rs /^ pub rdi: __uint64_t,$/;" m struct:sigcontext +rdi r_glob/src/lib.rs /^ pub rdi: __uint64_t,$/;" m struct:sigcontext +rdi r_readline/src/lib.rs /^ pub rdi: __uint64_t,$/;" m struct:sigcontext +rdp builtins_rust/wait/src/signal.rs /^ pub rdp: __uint64_t,$/;" m struct:_fpstate +rdp builtins_rust/wait/src/signal.rs /^ pub rdp: __uint64_t,$/;" m struct:_libc_fpstate +rdp r_bash/src/lib.rs /^ pub rdp: __uint64_t,$/;" m struct:_fpstate +rdp r_bash/src/lib.rs /^ pub rdp: __uint64_t,$/;" m struct:_libc_fpstate +rdp r_glob/src/lib.rs /^ pub rdp: __uint64_t,$/;" m struct:_fpstate +rdp r_glob/src/lib.rs /^ pub rdp: __uint64_t,$/;" m struct:_libc_fpstate +rdp r_readline/src/lib.rs /^ pub rdp: __uint64_t,$/;" m struct:_fpstate +rdp r_readline/src/lib.rs /^ pub rdp: __uint64_t,$/;" m struct:_libc_fpstate +rdx builtins_rust/wait/src/signal.rs /^ pub rdx: __uint64_t,$/;" m struct:sigcontext +rdx r_bash/src/lib.rs /^ pub rdx: __uint64_t,$/;" m struct:sigcontext +rdx r_glob/src/lib.rs /^ pub rdx: __uint64_t,$/;" m struct:sigcontext +rdx r_readline/src/lib.rs /^ pub rdx: __uint64_t,$/;" m struct:sigcontext +re_edit bashhist.c /^re_edit (text)$/;" f file: +re_edit r_bashhist/src/lib.rs /^unsafe extern "C" fn re_edit(mut text: *mut c_char) {$/;" f +read lib/intl/loadmsgcat.c /^# define read /;" d file: +read r_bash/src/lib.rs /^ pub fn read($/;" f +read r_bash/src/lib.rs /^ pub read: cookie_read_function_t,$/;" m struct:_IO_cookie_io_functions_t +read r_glob/src/lib.rs /^ pub fn read($/;" f +read r_readline/src/lib.rs /^ pub fn read($/;" f +read r_readline/src/lib.rs /^ pub read: cookie_read_function_t,$/;" m struct:_IO_cookie_io_functions_t +read vendor/futures-util/src/compat/compat03as01.rs /^ fn read(&mut self, buf: &mut [u8]) -> std::io::Result {$/;" P implementation:io::Compat +read vendor/futures-util/src/io/allow_std.rs /^ fn read(&mut self, buf: &mut [u8]) -> io::Result {$/;" f +read vendor/futures-util/src/io/mod.rs /^ fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>$/;" P interface:AsyncReadExt +read vendor/futures-util/src/io/mod.rs /^mod read;$/;" n +read vendor/futures-util/src/io/read_line.rs /^ read: usize,$/;" m struct:ReadLine +read vendor/futures-util/src/io/read_until.rs /^ read: usize,$/;" m struct:ReadUntil +read vendor/futures/tests/io_buf_reader.rs /^ fn read(&mut self, _: &mut [u8]) -> io::Result {$/;" P implementation:test_short_reads::ShortReader +read vendor/futures/tests/io_buf_reader.rs /^ fn read(&mut self, buf: &mut [u8]) -> io::Result {$/;" P implementation:test_buffered_reader_seek_underflow::PositionReader +read vendor/libc/src/fuchsia/mod.rs /^ pub fn read(fd: ::c_int, buf: *mut ::c_void, count: ::size_t) -> ::ssize_t;$/;" f +read vendor/libc/src/solid/mod.rs /^ pub fn read(arg1: c_int, arg2: *mut c_void, arg3: c_int) -> c_int;$/;" f +read vendor/libc/src/unix/mod.rs /^ pub fn read(fd: ::c_int, buf: *mut ::c_void, count: ::size_t) -> ::ssize_t;$/;" f +read vendor/libc/src/vxworks/mod.rs /^ pub fn read(fd: ::c_int, buf: *mut ::c_void, count: ::size_t) -> ::ssize_t;$/;" f +read vendor/libc/src/wasi.rs /^ pub fn read(fd: c_int, ptr: *mut c_void, size: size_t) -> ssize_t;$/;" f +read vendor/libc/src/windows/mod.rs /^ pub fn read(fd: ::c_int, buf: *mut ::c_void, count: ::c_uint) -> ::c_int;$/;" f +read vendor/nix/src/pty.rs /^ fn read(&mut self, buf: &mut [u8]) -> io::Result {$/;" P implementation:PtyMaster +read vendor/nix/src/sys/ptrace/bsd.rs /^pub fn read(pid: Pid, addr: AddressType) -> Result {$/;" f +read vendor/nix/src/sys/ptrace/linux.rs /^pub fn read(pid: Pid, addr: AddressType) -> Result {$/;" f +read vendor/nix/src/unistd.rs /^pub fn read(fd: RawFd, buf: &mut [u8]) -> Result {$/;" f +read vendor/nix/test/test_dir.rs /^fn read() {$/;" f +read vendor/syn/tests/repo/progress.rs /^ fn read(&mut self, buf: &mut [u8]) -> Result {$/;" P implementation:Progress +read.o builtins/Makefile.in /^read.o: $(BASHINCDIR)\/shtty.h $(topdir)\/sig.h$/;" t +read.o builtins/Makefile.in /^read.o: $(topdir)\/arrayfunc.h ..\/pathnames.h$/;" t +read.o builtins/Makefile.in /^read.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +read.o builtins/Makefile.in /^read.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +read.o builtins/Makefile.in /^read.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h$/;" t +read.o builtins/Makefile.in /^read.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $/;" t +read.o builtins/Makefile.in /^read.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +read.o builtins/Makefile.in /^read.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +read.o builtins/Makefile.in /^read.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +read.o builtins/Makefile.in /^read.o: read.def$/;" t +read_alias_file lib/intl/localealias.c /^read_alias_file (fname, fname_len)$/;" f file: +read_but_dont_execute flags.c /^int read_but_dont_execute = 0;$/;" v typeref:typename:int +read_but_dont_execute r_bash/src/lib.rs /^ pub static mut read_but_dont_execute: ::std::os::raw::c_int;$/;" v +read_command eval.c /^read_command ()$/;" f typeref:typename:int +read_command r_bash/src/lib.rs /^ pub fn read_command() -> ::std::os::raw::c_int;$/;" f +read_comsub subst.c /^read_comsub (fd, quoted, flags, rflag)$/;" f file: +read_empty_signalfd vendor/nix/src/sys/signalfd.rs /^ fn read_empty_signalfd() {$/;" f module:tests +read_events vendor/nix/src/sys/inotify.rs /^ pub fn read_events(self) -> Result> {$/;" P implementation:Inotify +read_exact vendor/futures-util/src/io/allow_std.rs /^ fn read_exact(&mut self, buf: &mut [u8]) -> io::Result<()> {$/;" f +read_exact vendor/futures-util/src/io/mod.rs /^ fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>$/;" P interface:AsyncReadExt +read_exact vendor/futures-util/src/io/mod.rs /^mod read_exact;$/;" n +read_exact vendor/futures/tests/io_read_exact.rs /^fn read_exact() {$/;" f +read_exact vendor/nix/test/test.rs /^fn read_exact(f: RawFd, buf: &mut [u8]) {$/;" f +read_file vendor/fluent-bundle/benches/resolver.rs /^fn read_file(path: &str) -> Result {$/;" f +read_file vendor/fluent-resmgr/src/resource_manager.rs /^fn read_file(path: &str) -> Result {$/;" f +read_file vendor/fluent-syntax/benches/parser.rs /^fn read_file(path: &str) -> Result {$/;" f +read_file vendor/fluent-syntax/src/bin/parser.rs /^fn read_file(path: &str) -> Result {$/;" f +read_file vendor/fluent-syntax/src/bin/update_fixtures.rs /^fn read_file(path: &str) -> Result {$/;" f +read_from_disk vendor/syn/benches/rust.rs /^mod read_from_disk {$/;" n +read_from_stdin r_bash/src/lib.rs /^ pub static mut read_from_stdin: ::std::os::raw::c_int;$/;" v +read_from_stdin shell.c /^int read_from_stdin; \/* -s flag supplied *\/$/;" v typeref:typename:int +read_history builtins_rust/history/src/intercdep.rs /^ pub fn read_history(filename: *const c_char) -> c_int;$/;" f +read_history lib/readline/histfile.c /^read_history (const char *filename)$/;" f typeref:typename:int +read_history r_bashhist/src/lib.rs /^ fn read_history(_:*const c_char) -> c_int;$/;" f +read_history r_readline/src/lib.rs /^ pub fn read_history(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +read_history_range builtins_rust/history/src/intercdep.rs /^ pub fn read_history_range(filename: *const c_char, from: c_int, to: c_int) -> c_int;$/;" f +read_history_range lib/readline/histfile.c /^read_history_range (const char *filename, int from, int to)$/;" f typeref:typename:int +read_history_range r_readline/src/lib.rs /^ pub fn read_history_range($/;" f +read_line vendor/futures-util/src/io/mod.rs /^ fn read_line<'a>(&'a mut self, buf: &'a mut String) -> ReadLine<'a, Self>$/;" P interface:AsyncBufReadExt +read_line vendor/futures-util/src/io/mod.rs /^mod read_line;$/;" n +read_line vendor/futures/tests/io_read_line.rs /^fn read_line() {$/;" f +read_line_internal vendor/futures-util/src/io/read_line.rs /^pub(super) fn read_line_internal($/;" f +read_man_page support/man2html.c /^read_man_page(char *filename)$/;" f typeref:typename:char * file: +read_mbchar builtins_rust/read/src/lib.rs /^fn read_mbchar(fd: c_int, string: *mut c_char, ind: c_int, ch: c_int, unbuffered: c_int) -> c_in/;" f +read_octal builtins/common.c /^read_octal (string)$/;" f +read_octal r_bash/src/lib.rs /^ pub fn read_octal(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +read_port vendor/libc/src/unix/haiku/native.rs /^ pub fn read_port($/;" f +read_port_etc vendor/libc/src/unix/haiku/native.rs /^ pub fn read_port_etc($/;" f +read_secondary_line r_bash/src/lib.rs /^ pub fn read_secondary_line(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +read_signal vendor/nix/src/sys/signalfd.rs /^ pub fn read_signal(&mut self) -> Result> {$/;" P implementation:SignalFd +read_to_end vendor/futures-util/src/io/allow_std.rs /^ fn read_to_end(&mut self, buf: &mut Vec) -> io::Result {$/;" f +read_to_end vendor/futures-util/src/io/mod.rs /^ fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec) -> ReadToEnd<'a, Self>$/;" P interface:AsyncReadExt +read_to_end vendor/futures-util/src/io/mod.rs /^mod read_to_end;$/;" n +read_to_end_internal vendor/futures-util/src/io/read_to_end.rs /^pub(super) fn read_to_end_internal($/;" f +read_to_string vendor/futures-util/src/io/allow_std.rs /^ fn read_to_string(&mut self, buf: &mut String) -> io::Result {$/;" f +read_to_string vendor/futures-util/src/io/mod.rs /^ fn read_to_string<'a>(&'a mut self, buf: &'a mut String) -> ReadToString<'a, Self>$/;" P interface:AsyncReadExt +read_to_string vendor/futures-util/src/io/mod.rs /^mod read_to_string;$/;" n +read_to_string vendor/futures/tests/io_read_to_string.rs /^fn read_to_string() {$/;" f +read_to_string_internal vendor/futures-util/src/io/read_to_string.rs /^fn read_to_string_internal($/;" f +read_tty_cleanup builtins_rust/read/src/lib.rs /^pub extern "C" fn read_tty_cleanup() {$/;" f +read_tty_cleanup r_bash/src/lib.rs /^ pub fn read_tty_cleanup();$/;" f +read_tty_modified builtins_rust/read/src/lib.rs /^pub extern "C" fn read_tty_modified() -> c_int {$/;" f +read_tty_modified r_bash/src/lib.rs /^ pub fn read_tty_modified() -> ::std::os::raw::c_int;$/;" f +read_unaligned vendor/winapi/src/um/evntcons.rs /^unsafe fn read_unaligned(src: *const T) -> T {$/;" f +read_until vendor/futures-util/src/io/mod.rs /^ fn read_until<'a>(&'a mut self, byte: u8, buf: &'a mut Vec) -> ReadUntil<'a, Self>$/;" P interface:AsyncBufReadExt +read_until vendor/futures-util/src/io/mod.rs /^mod read_until;$/;" n +read_until vendor/futures/tests/io_read_until.rs /^fn read_until() {$/;" f +read_until_internal vendor/futures-util/src/io/read_until.rs /^pub(super) fn read_until_internal($/;" f +read_user vendor/nix/src/sys/ptrace/linux.rs /^pub fn read_user(pid: Pid, offset: AddressType) -> Result {$/;" f +read_vectored vendor/futures-util/src/io/allow_std.rs /^ fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result {$/;" f +read_vectored vendor/futures-util/src/io/mod.rs /^ fn read_vectored<'a>(&'a mut self, bufs: &'a mut [IoSliceMut<'a>]) -> ReadVectored<'a, Self>$/;" P interface:AsyncReadExt +read_vectored vendor/futures-util/src/io/mod.rs /^mod read_vectored;$/;" n +read_vectored_first_non_empty vendor/futures/tests/io_read.rs /^fn read_vectored_first_non_empty() {$/;" f +read_vectored_no_buffers vendor/futures/tests/io_read.rs /^fn read_vectored_no_buffers() {$/;" f +readahead r_bash/src/lib.rs /^ pub fn readahead(__fd: ::std::os::raw::c_int, __offset: __off64_t, __count: usize)$/;" f +readahead vendor/libc/src/fuchsia/mod.rs /^ pub fn readahead(fd: ::c_int, offset: ::off64_t, count: ::size_t) -> ::ssize_t;$/;" f +readahead vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn readahead(fd: ::c_int, offset: ::off64_t, count: ::size_t) -> ::ssize_t;$/;" f +readdir r_bash/src/lib.rs /^ pub fn readdir(__dirp: *mut DIR) -> *mut dirent;$/;" f +readdir r_glob/src/lib.rs /^ pub fn readdir() -> *mut direct;$/;" f +readdir r_readline/src/lib.rs /^ pub fn readdir(__dirp: *mut DIR) -> *mut dirent;$/;" f +readdir vendor/libc/src/fuchsia/mod.rs /^ pub fn readdir(dirp: *mut ::DIR) -> *mut ::dirent;$/;" f +readdir vendor/libc/src/unix/mod.rs /^ pub fn readdir(dirp: *mut ::DIR) -> *mut ::dirent;$/;" f +readdir vendor/libc/src/vxworks/mod.rs /^ pub fn readdir(pDir: *mut ::DIR) -> *mut ::dirent;$/;" f +readdir vendor/libc/src/wasi.rs /^ pub fn readdir(dirp: *mut ::DIR) -> *mut ::dirent;$/;" f +readdir64 r_bash/src/lib.rs /^ pub fn readdir64(__dirp: *mut DIR) -> *mut dirent64;$/;" f +readdir64 r_readline/src/lib.rs /^ pub fn readdir64(__dirp: *mut DIR) -> *mut dirent64;$/;" f +readdir64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn readdir64(dirp: *mut ::DIR) -> *mut ::dirent64;$/;" f +readdir64_r r_bash/src/lib.rs /^ pub fn readdir64_r($/;" f +readdir64_r r_readline/src/lib.rs /^ pub fn readdir64_r($/;" f +readdir64_r vendor/libc/src/unix/linux_like/mod.rs /^ pub fn readdir64_r($/;" f +readdir_r r_bash/src/lib.rs /^ pub fn readdir_r($/;" f +readdir_r r_readline/src/lib.rs /^ pub fn readdir_r($/;" f +readdir_r vendor/libc/src/fuchsia/mod.rs /^ pub fn readdir_r(dirp: *mut ::DIR, entry: *mut ::dirent, result: *mut *mut ::dirent)$/;" f +readdir_r vendor/libc/src/vxworks/mod.rs /^ pub fn readdir_r(pDir: *mut ::DIR, entry: *mut ::dirent, result: *mut *mut ::dirent)$/;" f +reader vendor/futures-util/src/io/fill_buf.rs /^ reader: Option<&'a mut R>,$/;" m struct:FillBuf +reader vendor/futures-util/src/io/read.rs /^ reader: &'a mut R,$/;" m struct:Read +reader vendor/futures-util/src/io/read_exact.rs /^ reader: &'a mut R,$/;" m struct:ReadExact +reader vendor/futures-util/src/io/read_line.rs /^ reader: &'a mut R,$/;" m struct:ReadLine +reader vendor/futures-util/src/io/read_to_end.rs /^ reader: &'a mut R,$/;" m struct:ReadToEnd +reader vendor/futures-util/src/io/read_to_string.rs /^ reader: &'a mut R,$/;" m struct:ReadToString +reader vendor/futures-util/src/io/read_until.rs /^ reader: &'a mut R,$/;" m struct:ReadUntil +reader vendor/futures-util/src/io/read_vectored.rs /^ reader: &'a mut R,$/;" m struct:ReadVectored +reader_loop eval.c /^reader_loop ()$/;" f typeref:typename:int +reader_loop r_bash/src/lib.rs /^ pub fn reader_loop() -> ::std::os::raw::c_int;$/;" f +reading builtins_rust/read/src/lib.rs /^static mut reading: c_int = 0;$/;" v +reading_shell_script r_bash/src/lib.rs /^ pub static mut reading_shell_script: ::std::os::raw::c_int;$/;" v +reading_shell_script shell.c /^int reading_shell_script = 0;$/;" v typeref:typename:int +readline builtins_rust/read/src/intercdep.rs /^ pub fn readline(p : *const c_char) -> *mut c_char;$/;" f +readline configure.ac /^AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [turn on command line editing]), opt/;" e +readline lib/readline/readline.c /^readline (const char *prompt)$/;" f typeref:typename:char * +readline r_readline/src/lib.rs /^ pub fn readline(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +readline.o lib/readline/Makefile.in /^readline.o: history.h rlstdc.h$/;" t +readline.o lib/readline/Makefile.in /^readline.o: posixstat.h ansi_stdlib.h posixjmp.h$/;" t +readline.o lib/readline/Makefile.in /^readline.o: readline.c$/;" t +readline.o lib/readline/Makefile.in /^readline.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +readline.o lib/readline/Makefile.in /^readline.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +readline.o lib/readline/Makefile.in /^readline.o: rlmbutil.h$/;" t +readline.o lib/readline/Makefile.in /^readline.o: rlprivate.h$/;" t +readline.o lib/readline/Makefile.in /^readline.o: rlshell.h$/;" t +readline.o lib/readline/Makefile.in /^readline.o: xmalloc.h $/;" t +readline_default_bindings lib/readline/readline.c /^readline_default_bindings (void)$/;" f typeref:typename:void file: +readline_get_char_offset bashline.c /^readline_get_char_offset (ind)$/;" f file: +readline_initialize_everything lib/readline/readline.c /^readline_initialize_everything (void)$/;" f typeref:typename:void file: +readline_internal lib/readline/readline.c /^readline_internal (void)$/;" f typeref:typename:char * file: +readline_internal_char lib/readline/readline.c /^readline_internal_char (void)$/;" f typeref:typename:STATIC_CALLBACK int +readline_internal_char r_readline/src/lib.rs /^ pub fn readline_internal_char() -> ::std::os::raw::c_int;$/;" f +readline_internal_charloop lib/readline/readline.c /^readline_internal_charloop (void)$/;" f typeref:typename:int file: +readline_internal_setup lib/readline/readline.c /^readline_internal_setup (void)$/;" f typeref:typename:STATIC_CALLBACK void +readline_internal_setup r_readline/src/lib.rs /^ pub fn readline_internal_setup();$/;" f +readline_internal_teardown lib/readline/readline.c /^readline_internal_teardown (int eof)$/;" f typeref:typename:STATIC_CALLBACK char * +readline_internal_teardown r_readline/src/lib.rs /^ pub fn readline_internal_teardown(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_cha/;" f +readline_set_char_offset bashline.c /^readline_set_char_offset (ind, varp)$/;" f file: +readline_state lib/readline/readline.h /^struct readline_state {$/;" s +readline_state r_readline/src/lib.rs /^pub struct readline_state {$/;" s +readlink r_bash/src/lib.rs /^ pub fn readlink($/;" f +readlink r_glob/src/lib.rs /^ pub fn readlink($/;" f +readlink r_readline/src/lib.rs /^ pub fn readlink($/;" f +readlink vendor/libc/src/fuchsia/mod.rs /^ pub fn readlink(path: *const c_char, buf: *mut c_char, bufsz: ::size_t) -> ::ssize_t;$/;" f +readlink vendor/libc/src/unix/mod.rs /^ pub fn readlink(path: *const c_char, buf: *mut c_char, bufsz: ::size_t) -> ::ssize_t;$/;" f +readlink vendor/libc/src/vxworks/mod.rs /^ pub fn readlink(path: *const ::c_char, buf: *mut ::c_char, bufsize: ::size_t) -> ::ssize_t;$/;" f +readlink vendor/libc/src/wasi.rs /^ pub fn readlink(path: *const c_char, buf: *mut c_char, bufsz: ::size_t) -> ::ssize_t;$/;" f +readlinkat r_bash/src/lib.rs /^ pub fn readlinkat($/;" f +readlinkat r_glob/src/lib.rs /^ pub fn readlinkat($/;" f +readlinkat r_readline/src/lib.rs /^ pub fn readlinkat($/;" f +readlinkat vendor/libc/src/fuchsia/mod.rs /^ pub fn readlinkat($/;" f +readlinkat vendor/libc/src/wasi.rs /^ pub fn readlinkat($/;" f +readonly_p builtins_rust/cd/src/lib.rs /^macro_rules! readonly_p {$/;" M +readonly_p builtins_rust/common/src/lib.rs /^macro_rules! readonly_p {$/;" M +readonly_p builtins_rust/declare/src/lib.rs /^unsafe fn readonly_p(var: *mut SHELL_VAR) -> i32 {$/;" f +readonly_p builtins_rust/getopts/src/lib.rs /^fn readonly_p(va: *mut SHELL_VAR) -> i32 {$/;" f +readonly_p builtins_rust/set/src/lib.rs /^macro_rules! readonly_p {$/;" M +readonly_p variables.h /^#define readonly_p(/;" d +readtok expr.c /^readtok ()$/;" f typeref:typename:void file: +readv vendor/libc/src/fuchsia/mod.rs /^ pub fn readv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;$/;" f +readv vendor/libc/src/unix/bsd/mod.rs /^ pub fn readv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;$/;" f +readv vendor/libc/src/unix/haiku/mod.rs /^ pub fn readv(fd: ::c_int, iov: *const ::iovec, count: ::c_int) -> ::ssize_t;$/;" f +readv vendor/libc/src/unix/linux_like/mod.rs /^ pub fn readv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;$/;" f +readv vendor/libc/src/unix/redox/mod.rs /^ pub fn readv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;$/;" f +readv vendor/libc/src/unix/solarish/mod.rs /^ pub fn readv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;$/;" f +readv vendor/libc/src/vxworks/mod.rs /^ pub fn readv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;$/;" f +readv vendor/libc/src/wasi.rs /^ pub fn readv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;$/;" f +readv vendor/nix/src/sys/uio.rs /^pub fn readv(fd: RawFd, iov: &mut [IoSliceMut<'_>]) -> Result {$/;" f +ready vendor/futures-core/src/task/poll.rs /^macro_rules! ready {$/;" M +ready vendor/futures-util/src/future/mod.rs /^mod ready;$/;" n +ready vendor/futures-util/src/future/ready.rs /^pub fn ready(t: T) -> Ready {$/;" f +ready vendor/futures/tests/io_buf_reader.rs /^ ready: bool,$/;" m struct:maybe_pending_seek::MaybePendingSeek +ready vendor/futures/tests/io_buf_writer.rs /^ ready: bool,$/;" m struct:MaybePending +ready vendor/futures/tests/macro_comma_support.rs /^fn ready() {$/;" f +ready_chunks vendor/futures-util/src/stream/stream/mod.rs /^ fn ready_chunks(self, capacity: usize) -> ReadyChunks$/;" P interface:StreamExt +ready_chunks vendor/futures-util/src/stream/stream/mod.rs /^mod ready_chunks;$/;" n +ready_chunks vendor/futures/tests/stream.rs /^fn ready_chunks() {$/;" f +ready_chunks_panic_on_cap_zero vendor/futures/tests/stream.rs /^fn ready_chunks_panic_on_cap_zero() {$/;" f +ready_fill_buf vendor/futures/tests/io_buf_reader.rs /^ ready_fill_buf: bool,$/;" m struct:MaybePending +ready_or_break vendor/futures-util/src/io/copy_buf_abortable.rs /^macro_rules! ready_or_break {$/;" M +ready_read vendor/futures/tests/io_buf_reader.rs /^ ready_read: bool,$/;" m struct:MaybePending +ready_seek vendor/futures/tests/io_buf_writer.rs /^ ready_seek: bool,$/;" m struct:maybe_pending_buf_writer_seek::MaybePendingSeek +ready_to_run_queue vendor/futures-util/src/stream/futures_unordered/mod.rs /^ ready_to_run_queue: Arc>,$/;" m struct:FuturesUnordered +ready_to_run_queue vendor/futures-util/src/stream/futures_unordered/mod.rs /^mod ready_to_run_queue;$/;" n +ready_to_run_queue vendor/futures-util/src/stream/futures_unordered/task.rs /^ pub(super) ready_to_run_queue: Weak>,$/;" m struct:Task +ready_write vendor/futures/tests/io_buf_writer.rs /^ ready_write: bool,$/;" m struct:maybe_pending_buf_writer_seek::MaybePendingSeek +real_time_clock vendor/libc/src/unix/haiku/native.rs /^ pub fn real_time_clock() -> ::c_ulong;$/;" f +real_time_clock_usecs vendor/libc/src/unix/haiku/native.rs /^ pub fn real_time_clock_usecs() -> bigtime_t;$/;" f +realclean lib/glob/Makefile.in /^realclean distclean maintainer-clean: clean$/;" t +realclean lib/malloc/Makefile.in /^distclean realclean maintainer-clean: clean$/;" t +realclean lib/sh/Makefile.in /^realclean distclean maintainer-clean: clean$/;" t +realclean lib/tilde/Makefile.in /^realclean distclean maintainer-clean: clean$/;" t +realhostname vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn realhostname(host: *mut ::c_char, hsize: ::size_t, ip: *const ::in_addr) -> ::c_int;$/;" f +realhostname_sa vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn realhostname_sa($/;" f +realloc lib/malloc/malloc.c /^realloc (mem, nbytes)$/;" f +realloc r_bash/src/lib.rs /^ pub fn realloc($/;" f +realloc r_glob/src/lib.rs /^ pub fn realloc($/;" f +realloc r_readline/src/lib.rs /^ pub fn realloc($/;" f +realloc vendor/libc/src/fuchsia/mod.rs /^ pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;$/;" f +realloc vendor/libc/src/solid/mod.rs /^ pub fn realloc(arg1: *mut c_void, arg2: size_t) -> *mut c_void;$/;" f +realloc vendor/libc/src/unix/mod.rs /^ pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;$/;" f +realloc vendor/libc/src/vxworks/mod.rs /^ pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;$/;" f +realloc vendor/libc/src/wasi.rs /^ pub fn realloc(ptr: *mut c_void, amt: size_t) -> *mut c_void;$/;" f +realloc vendor/libc/src/windows/mod.rs /^ pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;$/;" f +realloc_jobs_list jobs.c /^realloc_jobs_list ()$/;" f typeref:typename:void file: +realloc_jobs_list r_jobs/src/lib.rs /^unsafe extern "C" fn realloc_jobs_list() {$/;" f +realloc_line lib/readline/display.c /^realloc_line (int minsize)$/;" f typeref:typename:void file: +reallocarr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn reallocarr(ptr: *mut ::c_void, number: ::size_t, size: ::size_t) -> ::c_int;$/;" f +reallocarray r_bash/src/lib.rs /^ pub fn reallocarray($/;" f +reallocarray r_glob/src/lib.rs /^ pub fn reallocarray($/;" f +reallocarray r_readline/src/lib.rs /^ pub fn reallocarray($/;" f +reallocarray vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn reallocarray(ptr: *mut ::c_void, nmemb: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +reallocarray vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn reallocarray(ptr: *mut ::c_void, nmemb: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +reallocarray vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn reallocarray(ptr: *mut ::c_void, nmemb: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +reallocarray vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn reallocarray(ptr: *mut ::c_void, nmemb: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +reallocarray vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn reallocarray(ptr: *mut ::c_void, nmemb: ::size_t, size: ::size_t) -> *mut ::c_void;$/;" f +reallocf vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn reallocf(ptr: *mut ::c_void, size: ::size_t) -> *mut ::c_void;$/;" f +really_add_history bashhist.c /^really_add_history (line)$/;" f file: +really_add_history r_bashhist/src/lib.rs /^unsafe extern "C" fn really_add_history(mut line: *mut c_char) {$/;" f +really_munge_braces bracecomp.c /^really_munge_braces (array, real_start, real_end, gcd_zero)$/;" f file: +realpath r_bash/src/lib.rs /^ pub fn realpath($/;" f +realpath r_glob/src/lib.rs /^ pub fn realpath($/;" f +realpath r_readline/src/lib.rs /^ pub fn realpath($/;" f +realpath vendor/libc/src/fuchsia/mod.rs /^ pub fn realpath(pathname: *const ::c_char, resolved: *mut ::c_char) -> *mut ::c_char;$/;" f +realpath vendor/libc/src/unix/mod.rs /^ pub fn realpath(pathname: *const ::c_char, resolved: *mut ::c_char) -> *mut ::c_char;$/;" f +realpath vendor/libc/src/vxworks/mod.rs /^ pub fn realpath(fileName: *const ::c_char, resolvedName: *mut ::c_char) -> *mut ::c_char;$/;" f +realtimeapiset vendor/winapi/src/um/mod.rs /^#[cfg(feature = "realtimeapiset")] pub mod realtimeapiset;$/;" n +reap_dead_jobs jobs.c /^reap_dead_jobs ()$/;" f typeref:typename:void +reap_dead_jobs nojobs.c /^reap_dead_jobs ()$/;" f typeref:typename:void +reap_dead_jobs r_bash/src/lib.rs /^ pub fn reap_dead_jobs();$/;" f +reap_dead_jobs r_jobs/src/lib.rs /^pub unsafe extern "C" fn reap_dead_jobs() {$/;" f +reap_procsubs r_bash/src/lib.rs /^ pub fn reap_procsubs();$/;" f +reap_procsubs subst.c /^reap_procsubs ()$/;" f typeref:typename:void +reap_some_procsubs subst.c /^reap_some_procsubs (max)$/;" f file: +reap_zombie_children nojobs.c /^reap_zombie_children ()$/;" f typeref:typename:void file: +reason vendor/winapi/src/um/mod.rs /^#[cfg(feature = "reason")] pub mod reason;$/;" n +reboot vendor/libc/src/fuchsia/mod.rs /^ pub fn reboot(how_to: ::c_int) -> ::c_int;$/;" f +reboot vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn reboot(how_to: ::c_int) -> ::c_int;$/;" f +reboot vendor/nix/src/sys/reboot.rs /^pub fn reboot(how: RebootMode) -> Result {$/;" f +receive_data vendor/libc/src/unix/haiku/native.rs /^ pub fn receive_data(sender: *mut thread_id, buffer: *mut ::c_void, bufferSize: ::size_t)$/;" f +receiver vendor/async-trait/src/lib.rs /^mod receiver;$/;" n +receiver vendor/syn/src/item.rs /^ pub fn receiver(&self) -> Option<&FnArg> {$/;" P implementation:Signature +recho$(EXEEXT) Makefile.in /^recho$(EXEEXT): $(SUPPORT_SRC)recho.c$/;" t +reconfig Makefile.in /^reconfig: force$/;" t +record vendor/async-trait/tests/test.rs /^ fn record(&self, _span: &Id, _values: &Record) {}$/;" P implementation:issue45::TestSubscriber +record_debug vendor/async-trait/tests/test.rs /^ fn record_debug(&mut self, _field: &Field, _value: &dyn Debug) {}$/;" P implementation:issue45::U64Visitor +record_follows_from vendor/async-trait/tests/test.rs /^ fn record_follows_from(&self, _span: &Id, _follows: &Id) {}$/;" P implementation:issue45::TestSubscriber +record_u64 vendor/async-trait/tests/test.rs /^ fn record_u64(&mut self, field: &Field, value: u64) {$/;" P implementation:issue45::U64Visitor +record_waker vendor/futures-util/src/future/future/shared.rs /^ fn record_waker(&self, waker_key: &mut usize, cx: &mut Context<'_>) {$/;" f +recreate_vacant_list vendor/slab/src/lib.rs /^ fn recreate_vacant_list(&mut self) {$/;" P implementation:Slab +recursive_new vendor/syn/src/buffer.rs /^ fn recursive_new(entries: &mut Vec, stream: TokenStream) {$/;" P implementation:TokenBuffer +recv vendor/futures-channel/src/oneshot.rs /^ fn recv(&self, cx: &mut Context<'_>) -> Poll> {$/;" P implementation:Inner +recv vendor/libc/src/fuchsia/mod.rs /^ pub fn recv(socket: ::c_int, buf: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::ssize_t/;" f +recv vendor/libc/src/unix/mod.rs /^ pub fn recv(socket: ::c_int, buf: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::ssize_t/;" f +recv vendor/libc/src/vxworks/mod.rs /^ pub fn recv(s: ::c_int, buf: *mut ::c_void, bufLen: ::size_t, flags: ::c_int) -> ::ssize_t;$/;" f +recv vendor/libc/src/wasi.rs /^ pub fn recv(socket: ::c_int, buf: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::ssize_t/;" f +recv vendor/nix/src/sys/socket/mod.rs /^pub fn recv(sockfd: RawFd, buf: &mut [u8], flags: MsgFlags) -> Result {$/;" f +recv vendor/winapi/src/um/winsock2.rs /^ pub fn recv($/;" f +recv_close_gets_none vendor/futures-channel/tests/mpsc.rs /^fn recv_close_gets_none() {$/;" f +recv_task vendor/futures-channel/src/mpsc/mod.rs /^ recv_task: AtomicWaker,$/;" m struct:BoundedInner +recv_task vendor/futures-channel/src/mpsc/mod.rs /^ recv_task: AtomicWaker,$/;" m struct:UnboundedInner +recvfrom vendor/libc/src/fuchsia/mod.rs /^ pub fn recvfrom($/;" f +recvfrom vendor/libc/src/unix/bsd/mod.rs /^ pub fn recvfrom($/;" f +recvfrom vendor/libc/src/unix/haiku/mod.rs /^ pub fn recvfrom($/;" f +recvfrom vendor/libc/src/unix/hermit/mod.rs /^ pub fn recvfrom($/;" f +recvfrom vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn recvfrom($/;" f +recvfrom vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn recvfrom($/;" f +recvfrom vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn recvfrom($/;" f +recvfrom vendor/libc/src/unix/newlib/mod.rs /^ pub fn recvfrom($/;" f +recvfrom vendor/libc/src/unix/redox/mod.rs /^ pub fn recvfrom($/;" f +recvfrom vendor/libc/src/unix/solarish/mod.rs /^ pub fn recvfrom($/;" f +recvfrom vendor/libc/src/vxworks/mod.rs /^ pub fn recvfrom($/;" f +recvfrom vendor/libc/src/windows/mod.rs /^ pub fn recvfrom($/;" f +recvfrom vendor/nix/src/sys/socket/mod.rs /^pub fn recvfrom(sockfd: RawFd, buf: &mut [u8])$/;" f +recvfrom vendor/nix/test/sys/test_socket.rs /^mod recvfrom {$/;" n +recvfrom vendor/winapi/src/um/winsock2.rs /^ pub fn recvfrom($/;" f +recvmmsg vendor/libc/src/fuchsia/mod.rs /^ pub fn recvmmsg($/;" f +recvmmsg vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn recvmmsg($/;" f +recvmmsg vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn recvmmsg($/;" f +recvmmsg vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn recvmmsg($/;" f +recvmmsg vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn recvmmsg($/;" f +recvmmsg vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn recvmmsg($/;" f +recvmmsg vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn recvmmsg($/;" f +recvmmsg vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn recvmmsg($/;" f +recvmsg vendor/libc/src/fuchsia/mod.rs /^ pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +recvmsg vendor/libc/src/unix/bsd/mod.rs /^ pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +recvmsg vendor/libc/src/unix/haiku/mod.rs /^ pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +recvmsg vendor/libc/src/unix/linux_like/mod.rs /^ pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +recvmsg vendor/libc/src/unix/newlib/espidf/mod.rs /^ pub fn recvmsg(s: ::c_int, msg: *mut ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +recvmsg vendor/libc/src/unix/solarish/mod.rs /^ pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +recvmsg vendor/libc/src/vxworks/mod.rs /^ pub fn recvmsg(socket: ::c_int, mp: *mut ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +redir.o Makefile.in /^redir.o: ${BASHINCDIR}\/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command./;" t +redir.o Makefile.in /^redir.o: ${DEFDIR}\/pipesize.h$/;" t +redir.o Makefile.in /^redir.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +redir.o Makefile.in /^redir.o: config.h bashtypes.h ${BASHINCDIR}\/posixstat.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h/;" t +redir.o Makefile.in /^redir.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h $/;" t +redir.o Makefile.in /^redir.o: flags.h execute_cmd.h redir.h input.h$/;" t +redir.o Makefile.in /^redir.o: general.h xmalloc.h variables.h arrayfunc.h conftypes.h array.h hashlib.h quit.h ${BASH/;" t +redir.o Makefile.in /^redir.o: trap.h assoc.h $(BASHINCDIR)\/ocache.h $(BASHINCDIR)\/chartypes.h$/;" t +redir_open redir.c /^redir_open (filename, flags, mode, ri)$/;" f file: +redir_special_open redir.c /^redir_special_open (spec, filename, flags, mode, ri)$/;" f file: +redir_stack r_bash/src/lib.rs /^ pub redir_stack: [*mut REDIRECT; 16usize],$/;" m struct:_sh_parser_state_t +redir_stack shell.h /^ REDIRECT *redir_stack[HEREDOC_MAX];$/;" m struct:_sh_parser_state_t typeref:typename:REDIRECT * [] +redir_varassign redir.c /^redir_varassign (redir, fd)$/;" f file: +redir_varvalue redir.c /^redir_varvalue (redir)$/;" f file: +redirect builtins_rust/command/src/lib.rs /^pub struct redirect {$/;" s +redirect builtins_rust/exec/src/lib.rs /^struct redirect {$/;" s +redirect builtins_rust/kill/src/intercdep.rs /^pub struct redirect {$/;" s +redirect builtins_rust/setattr/src/intercdep.rs /^pub struct redirect {$/;" s +redirect command.h /^ REDIRECT *redirect;$/;" m struct:element typeref:typename:REDIRECT * +redirect command.h /^typedef struct redirect {$/;" s +redirect r_bash/src/lib.rs /^ pub redirect: *mut REDIRECT,$/;" m struct:element +redirect r_bash/src/lib.rs /^pub struct redirect {$/;" s +redirect r_glob/src/lib.rs /^ pub redirect: *mut REDIRECT,$/;" m struct:element +redirect r_glob/src/lib.rs /^pub struct redirect {$/;" s +redirect r_readline/src/lib.rs /^ pub redirect: *mut REDIRECT,$/;" m struct:element +redirect r_readline/src/lib.rs /^pub struct redirect {$/;" s +redirectee builtins_rust/command/src/lib.rs /^ pub redirectee: REDIRECTEE,$/;" m struct:redirect +redirectee builtins_rust/exec/src/lib.rs /^ redirectee: REDIRECTEE,$/;" m struct:redirect +redirectee builtins_rust/kill/src/intercdep.rs /^ pub redirectee: REDIRECTEE,$/;" m struct:redirect +redirectee builtins_rust/setattr/src/intercdep.rs /^ pub redirectee: REDIRECTEE,$/;" m struct:redirect +redirectee command.h /^ REDIRECTEE redirectee; \/* File descriptor or filename *\/$/;" m struct:redirect typeref:typename:REDIRECTEE +redirectee r_bash/src/lib.rs /^ pub redirectee: REDIRECTEE,$/;" m struct:redirect +redirectee r_glob/src/lib.rs /^ pub redirectee: REDIRECTEE,$/;" m struct:redirect +redirectee r_readline/src/lib.rs /^ pub redirectee: REDIRECTEE,$/;" m struct:redirect +redirection parse.y /^redirection: '>' WORD$/;" l +redirection_error r_bash/src/lib.rs /^ pub fn redirection_error($/;" f +redirection_error redir.c /^redirection_error (temp, error, fn)$/;" f +redirection_expand r_bash/src/lib.rs /^ pub fn redirection_expand(arg1: *mut WORD_DESC) -> *mut ::std::os::raw::c_char;$/;" f +redirection_expand redir.c /^redirection_expand (word)$/;" f +redirection_list parse.y /^redirection_list: redirection$/;" l +redirection_undo_list builtins_rust/exec/src/lib.rs /^ static mut redirection_undo_list: *mut REDIRECT;$/;" v +redirection_undo_list execute_cmd.c /^REDIRECT *redirection_undo_list = (REDIRECT *)NULL;$/;" v typeref:typename:REDIRECT * +redirector builtins_rust/command/src/lib.rs /^ pub redirector: REDIRECTEE,$/;" m struct:redirect +redirector builtins_rust/exec/src/lib.rs /^ redirector: REDIRECTEE,$/;" m struct:redirect +redirector builtins_rust/kill/src/intercdep.rs /^ pub redirector: REDIRECTEE,$/;" m struct:redirect +redirector builtins_rust/setattr/src/intercdep.rs /^ pub redirector: REDIRECTEE,$/;" m struct:redirect +redirector command.h /^ REDIRECTEE redirector; \/* Descriptor or varname to be redirected. *\/$/;" m struct:redirect typeref:typename:REDIRECTEE +redirector r_bash/src/lib.rs /^ pub redirector: REDIRECTEE,$/;" m struct:redirect +redirector r_glob/src/lib.rs /^ pub redirector: REDIRECTEE,$/;" m struct:redirect +redirector r_readline/src/lib.rs /^ pub redirector: REDIRECTEE,$/;" m struct:redirect +redirects builtins_rust/cd/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:COMMAND +redirects builtins_rust/cd/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/command/src/lib.rs /^ pub redirects: *mut REDIRECT,$/;" m struct:command +redirects builtins_rust/command/src/lib.rs /^ pub redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/common/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:COMMAND +redirects builtins_rust/common/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/complete/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:COMMAND +redirects builtins_rust/complete/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/declare/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:COMMAND +redirects builtins_rust/declare/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/fc/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:COMMAND +redirects builtins_rust/fc/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/fg_bg/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:COMMAND +redirects builtins_rust/fg_bg/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/getopts/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:COMMAND +redirects builtins_rust/getopts/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/jobs/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:COMMAND +redirects builtins_rust/jobs/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/kill/src/intercdep.rs /^ pub redirects: *mut REDIRECT,$/;" m struct:command +redirects builtins_rust/kill/src/intercdep.rs /^ pub redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/pushd/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:COMMAND +redirects builtins_rust/pushd/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/setattr/src/intercdep.rs /^ pub redirects: *mut REDIRECT,$/;" m struct:command +redirects builtins_rust/setattr/src/intercdep.rs /^ pub redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/source/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:COMMAND +redirects builtins_rust/source/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects builtins_rust/type/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:COMMAND +redirects builtins_rust/type/src/lib.rs /^ redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects command.h /^ REDIRECT *redirects; \/* Redirections to perform. *\/$/;" m struct:simple_com typeref:typename:REDIRECT * +redirects command.h /^ REDIRECT *redirects; \/* Special redirects for FOR CASE, etc. *\/$/;" m struct:command typeref:typename:REDIRECT * +redirects r_bash/src/lib.rs /^ pub redirects: *mut REDIRECT,$/;" m struct:command +redirects r_bash/src/lib.rs /^ pub redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects r_glob/src/lib.rs /^ pub redirects: *mut REDIRECT,$/;" m struct:command +redirects r_glob/src/lib.rs /^ pub redirects: *mut REDIRECT,$/;" m struct:simple_com +redirects r_readline/src/lib.rs /^ pub redirects: *mut REDIRECT,$/;" m struct:command +redirects r_readline/src/lib.rs /^ pub redirects: *mut REDIRECT,$/;" m struct:simple_com +redraw_prompt lib/readline/display.c /^redraw_prompt (char *t)$/;" f typeref:typename:void file: +reentrant_init vendor/once_cell/tests/it.rs /^ fn reentrant_init() {$/;" f module:sync +reentrant_init vendor/once_cell/tests/it.rs /^ fn reentrant_init() {$/;" f module:unsync +ref-add.sed lib/intl/Makefile.in /^ref-add.sed: $(srcdir)\/ref-add.sin$/;" t +ref-del.sed lib/intl/Makefile.in /^ref-del.sed: $(srcdir)\/ref-del.sin$/;" t +ref_wake_same vendor/futures/tests/task_arc_wake.rs /^fn ref_wake_same() {$/;" f +refcount builtins_rust/complete/src/lib.rs /^ refcount: c_int,$/;" m struct:COMPSPEC +refcount pcomplete.h /^ int refcount;$/;" m struct:compspec typeref:typename:int +refcount r_bash/src/lib.rs /^ pub refcount: ::std::os::raw::c_int,$/;" m struct:compspec +reg_save_area r_bash/src/lib.rs /^ pub reg_save_area: *mut ::std::os::raw::c_void,$/;" m struct:__va_list_tag +reg_save_area r_glob/src/lib.rs /^ pub reg_save_area: *mut ::std::os::raw::c_void,$/;" m struct:__va_list_tag +reg_save_area r_readline/src/lib.rs /^ pub reg_save_area: *mut ::std::os::raw::c_void,$/;" m struct:__va_list_tag +regcomp vendor/libc/src/unix/bsd/mod.rs /^ pub fn regcomp(preg: *mut regex_t, pattern: *const ::c_char, cflags: ::c_int) -> ::c_int;$/;" f +regcomp vendor/libc/src/unix/haiku/mod.rs /^ pub fn regcomp(preg: *mut regex_t, pattern: *const ::c_char, cflags: ::c_int) -> ::c_int;$/;" f +regcomp vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn regcomp(preg: *mut ::regex_t, pattern: *const ::c_char, cflags: ::c_int) -> ::c_int;$/;" f +regcomp vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn regcomp(preg: *mut ::regex_t, pattern: *const ::c_char, cflags: ::c_int) -> ::c_int;$/;" f +regen_p variables.h /^#define regen_p(/;" d +regerror vendor/libc/src/unix/bsd/mod.rs /^ pub fn regerror($/;" f +regerror vendor/libc/src/unix/haiku/mod.rs /^ pub fn regerror($/;" f +regerror vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn regerror($/;" f +regerror vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn regerror($/;" f +regex vendor/once_cell/examples/regex.rs /^macro_rules! regex {$/;" M +regexec vendor/libc/src/unix/bsd/mod.rs /^ pub fn regexec($/;" f +regexec vendor/libc/src/unix/haiku/mod.rs /^ pub fn regexec($/;" f +regexec vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn regexec($/;" f +regexec vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn regexec($/;" f +regfree vendor/libc/src/unix/bsd/mod.rs /^ pub fn regfree(preg: *mut regex_t);$/;" f +regfree vendor/libc/src/unix/haiku/mod.rs /^ pub fn regfree(preg: *mut regex_t);$/;" f +regfree vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn regfree(preg: *mut ::regex_t);$/;" f +regfree vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn regfree(preg: *mut ::regex_t);$/;" f +region vendor/unic-langid-impl/src/lib.rs /^ pub region: Option,$/;" m struct:LanguageIdentifier +region vendor/unic-langid-impl/src/subtags/mod.rs /^mod region;$/;" n +region_kill_internal lib/readline/kill.c /^region_kill_internal (int delete)$/;" f typeref:typename:int file: +register vendor/futures-core/src/task/__internal/atomic_waker.rs /^ pub fn register(&self, waker: &Waker) {$/;" P implementation:AtomicWaker +register vendor/futures-util/src/lock/mutex.rs /^ fn register(&mut self, waker: &Waker) {$/;" P implementation:Waiter +register_t r_bash/src/lib.rs /^pub type register_t = ::std::os::raw::c_long;$/;" t +register_t r_glob/src/lib.rs /^pub type register_t = ::std::os::raw::c_long;$/;" t +register_t r_readline/src/lib.rs /^pub type register_t = ::std::os::raw::c_long;$/;" t +register_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type register_t = ::c_long;$/;" t +register_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/aarch64.rs /^pub type register_t = i64;$/;" t +register_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/arm.rs /^pub type register_t = i32;$/;" t +register_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc.rs /^pub type register_t = i32;$/;" t +register_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs /^pub type register_t = i64;$/;" t +register_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/riscv64.rs /^pub type register_t = i64;$/;" t +register_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86.rs /^pub type register_t = i32;$/;" t +register_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs /^pub type register_t = i64;$/;" t +regoff_t vendor/libc/src/hermit/mod.rs /^pub type regoff_t = size_t;$/;" t +regoff_t vendor/libc/src/unix/bsd/mod.rs /^pub type regoff_t = off_t;$/;" t +regoff_t vendor/libc/src/unix/haiku/mod.rs /^pub type regoff_t = ::c_int;$/;" t +regoff_t vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^pub type regoff_t = ::c_int;$/;" t +regoff_t vendor/libc/src/unix/linux_like/linux/musl/b32/mod.rs /^pub type regoff_t = ::c_int;$/;" t +regoff_t vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs /^pub type regoff_t = ::c_long;$/;" t +regoff_t vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^pub type regoff_t = ::c_int;$/;" t +regression vendor/syn/tests/regression.rs /^mod regression {$/;" n +regression_rev_small_period vendor/memchr/src/memmem/twoway.rs /^ fn regression_rev_small_period() {$/;" f module:simpletests +reinit_special_variables r_bash/src/lib.rs /^ pub fn reinit_special_variables();$/;" f +reinit_special_variables variables.c /^reinit_special_variables ()$/;" f typeref:typename:void +release vendor/nix/src/sys/utsname.rs /^ pub fn release(&self) -> &OsStr {$/;" P implementation:UtsName +release_lock vendor/futures-util/benches_disabled/bilock.rs /^ fn release_lock(&mut self, guard: BiLockAcquired) {$/;" P implementation:bench::LockStream +release_sem vendor/libc/src/unix/haiku/native.rs /^ pub fn release_sem(id: sem_id) -> status_t;$/;" f +release_sem_etc vendor/libc/src/unix/haiku/native.rs /^ pub fn release_sem_etc(id: sem_id, count: i32, flags: u32) -> status_t;$/;" f +release_status r_bash/src/lib.rs /^ pub static mut release_status: *mut ::std::os::raw::c_char;$/;" v +release_status version.c /^const char * const release_status = (char *)0;$/;" v typeref:typename:const char * const +release_status version.c /^const char * const release_status = RELSTATUS;$/;" v typeref:typename:const char * const +release_task vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn release_task(&mut self, task: Arc>) {$/;" P implementation:FuturesUnordered +relocatable.$lo lib/intl/Makefile.in /^localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)\/relocatable.h$/;" t +relocatable.lo lib/intl/Makefile.in /^relocatable.lo: $(srcdir)\/relocatable.c$/;" t +relocate lib/intl/localcharset.c /^# define relocate(/;" d file: +relocate lib/intl/localealias.c /^# define relocate(/;" d file: +relocate lib/intl/relocatable.c /^relocate (const char *pathname)$/;" f typeref:typename:const char * +relocate lib/intl/relocatable.h /^#define relocate(/;" d +relstatus configure.ac /^define(relstatus, release)$/;" d +rem r_bash/src/lib.rs /^ pub rem: ::std::os::raw::c_int,$/;" m struct:div_t +rem r_bash/src/lib.rs /^ pub rem: ::std::os::raw::c_long,$/;" m struct:imaxdiv_t +rem r_bash/src/lib.rs /^ pub rem: ::std::os::raw::c_long,$/;" m struct:ldiv_t +rem r_bash/src/lib.rs /^ pub rem: ::std::os::raw::c_longlong,$/;" m struct:lldiv_t +rem r_glob/src/lib.rs /^ pub rem: ::std::os::raw::c_int,$/;" m struct:div_t +rem r_glob/src/lib.rs /^ pub rem: ::std::os::raw::c_long,$/;" m struct:imaxdiv_t +rem r_glob/src/lib.rs /^ pub rem: ::std::os::raw::c_long,$/;" m struct:ldiv_t +rem r_glob/src/lib.rs /^ pub rem: ::std::os::raw::c_longlong,$/;" m struct:lldiv_t +rem r_readline/src/lib.rs /^ pub rem: ::std::os::raw::c_int,$/;" m struct:div_t +rem r_readline/src/lib.rs /^ pub rem: ::std::os::raw::c_long,$/;" m struct:imaxdiv_t +rem r_readline/src/lib.rs /^ pub rem: ::std::os::raw::c_long,$/;" m struct:ldiv_t +rem r_readline/src/lib.rs /^ pub rem: ::std::os::raw::c_longlong,$/;" m struct:lldiv_t +rem vendor/futures-executor/benches/thread_notify.rs /^ rem: usize,$/;" m struct:thread_yield_multi_thread::Yield +rem vendor/futures-executor/benches/thread_notify.rs /^ rem: usize,$/;" m struct:thread_yield_single_thread_many_wait::Yield +rem vendor/futures-executor/benches/thread_notify.rs /^ rem: usize,$/;" m struct:thread_yield_single_thread_one_wait::Yield +rem_euclid vendor/stdext/src/num/integer.rs /^ fn rem_euclid(self, rhs: Self) -> Self;$/;" P interface:Integer +remaining vendor/futures/tests_disabled/bilock.rs /^ remaining: usize,$/;" m struct:concurrent::Increment +remap_file_pages vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn remap_file_pages($/;" f +remember_args builtins/common.c /^remember_args (list, destructive)$/;" f +remember_args builtins_rust/set/src/lib.rs /^ fn remember_args(list: *mut WordList, argc: i32);$/;" f +remember_args builtins_rust/source/src/lib.rs /^ fn remember_args(list: *mut WordList, argc: i32);$/;" f +remember_args r_bash/src/lib.rs /^ pub fn remember_args(arg1: *mut WORD_LIST, arg2: ::std::os::raw::c_int);$/;" f +remember_mail_dates mailcheck.c /^remember_mail_dates ()$/;" f typeref:typename:void +remember_mail_dates r_bash/src/lib.rs /^ pub fn remember_mail_dates();$/;" f +remember_on_history bashhist.c /^int remember_on_history = 0;$/;" v typeref:typename:int +remember_on_history builtins_rust/fc/src/lib.rs /^ static mut remember_on_history: i32;$/;" v +remember_on_history builtins_rust/history/src/intercdep.rs /^ pub static mut remember_on_history: c_int;$/;" v +remember_on_history builtins_rust/set/src/lib.rs /^ static mut remember_on_history: i32;$/;" v +remember_on_history r_bash/src/lib.rs /^ pub remember_on_history: ::std::os::raw::c_int,$/;" m struct:_sh_parser_state_t +remember_on_history r_bash/src/lib.rs /^ pub static mut remember_on_history: ::std::os::raw::c_int;$/;" v +remember_on_history r_bashhist/src/lib.rs /^pub static mut remember_on_history:c_int = 0;$/;" v +remember_on_history shell.h /^ int remember_on_history;$/;" m struct:_sh_parser_state_t typeref:typename:int +remote_handle vendor/futures-util/src/future/future/mod.rs /^ fn remote_handle(self) -> (Remote, RemoteHandle)$/;" P interface:FutureExt +remote_handle vendor/futures-util/src/future/future/mod.rs /^mod remote_handle;$/;" n +remote_handle vendor/futures-util/src/future/future/remote_handle.rs /^pub(super) fn remote_handle(future: Fut) -> (Remote, RemoteHandle/;" f +remove r_bash/src/lib.rs /^ pub fn remove(__filename: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +remove r_readline/src/lib.rs /^ pub fn remove(__filename: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +remove support/texi2dvi /^remove ()$/;" f +remove vendor/libc/src/fuchsia/mod.rs /^ pub fn remove(filename: *const c_char) -> c_int;$/;" f +remove vendor/libc/src/solid/mod.rs /^ pub fn remove(arg1: *const c_char) -> c_int;$/;" f +remove vendor/libc/src/unix/mod.rs /^ pub fn remove(filename: *const c_char) -> c_int;$/;" f +remove vendor/libc/src/vxworks/mod.rs /^ pub fn remove(filename: *const c_char) -> c_int;$/;" f +remove vendor/libc/src/wasi.rs /^ pub fn remove(a: *const c_char) -> c_int;$/;" f +remove vendor/libc/src/windows/mod.rs /^ pub fn remove(filename: *const c_char) -> c_int;$/;" f +remove vendor/nix/src/sys/select.rs /^ pub fn remove(&mut self, fd: RawFd) {$/;" P implementation:FdSet +remove vendor/slab/src/lib.rs /^ pub fn remove(&mut self, key: usize) -> T {$/;" P implementation:Slab +remove vendor/smallvec/benches/bench.rs /^ fn remove(&mut self, p: usize) -> T {$/;" P implementation:SmallVec +remove vendor/smallvec/benches/bench.rs /^ fn remove(&mut self, p: usize) -> T {$/;" P implementation:Vec +remove vendor/smallvec/benches/bench.rs /^ fn remove(&mut self, p: usize) -> T;$/;" P interface:Vector +remove vendor/smallvec/src/lib.rs /^ pub fn remove(&mut self, index: usize) -> A::Item {$/;" P implementation:SmallVec +remove vendor/type-map/src/lib.rs /^ pub fn remove(self) -> T {$/;" P implementation:concurrent::OccupiedEntry +remove vendor/type-map/src/lib.rs /^ pub fn remove(&mut self) -> Option {$/;" P implementation:concurrent::TypeMap +remove vendor/type-map/src/lib.rs /^ pub fn remove(self) -> T {$/;" P implementation:OccupiedEntry +remove vendor/type-map/src/lib.rs /^ pub fn remove(&mut self) -> Option {$/;" P implementation:TypeMap +remove_alias alias.c /^remove_alias (name)$/;" f +remove_alias builtins_rust/alias/src/lib.rs /^ fn remove_alias(_: *mut libc::c_char) -> libc::c_int;$/;" f +remove_alias r_bash/src/lib.rs /^ pub fn remove_alias(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +remove_backslashes r_bash/src/lib.rs /^ pub fn remove_backslashes(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +remove_backslashes subst.c /^remove_backslashes (string)$/;" f +remove_drop_lifetime vendor/futures-task/src/future_obj.rs /^unsafe fn remove_drop_lifetime<'a, T>($/;" f +remove_duplicate_matches lib/readline/complete.c /^remove_duplicate_matches (char **matches)$/;" f typeref:typename:char ** file: +remove_future_lifetime vendor/futures-task/src/future_obj.rs /^unsafe fn remove_future_lifetime<'a, T>($/;" f +remove_history lib/readline/history.c /^remove_history (int which)$/;" f typeref:typename:HIST_ENTRY * +remove_history r_bashhist/src/lib.rs /^ fn remove_history(_:c_int) -> *mut HIST_ENTRY;$/;" f +remove_history r_readline/src/lib.rs /^ pub fn remove_history(arg1: ::std::os::raw::c_int) -> *mut HIST_ENTRY;$/;" f +remove_history_range lib/readline/history.c /^remove_history_range (int first, int last)$/;" f typeref:typename:HIST_ENTRY ** +remove_history_range r_bashhist/src/lib.rs /^ fn remove_history_range(_:c_int, _:c_int) -> *mut *mut HIST_ENTRY;$/;" f +remove_history_range r_readline/src/lib.rs /^ pub fn remove_history_range($/;" f +remove_item vendor/stdext/src/vec.rs /^ fn remove_item(&mut self, item: &V) -> Option$/;" P implementation:Vec +remove_item vendor/stdext/src/vec.rs /^ fn remove_item(&mut self, item: &V) -> Option$/;" P interface:VecExt +remove_noinline vendor/smallvec/benches/bench.rs /^ fn remove_noinline>(vec: &mut V, p: usize) -> u64 {$/;" f function:gen_remove +remove_pattern subst.c /^remove_pattern (param, pattern, op)$/;" f file: +remove_quoted_escapes r_bash/src/lib.rs /^ pub fn remove_quoted_escapes(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_ch/;" f +remove_quoted_escapes r_print_cmd/src/lib.rs /^ fn remove_quoted_escapes(string:*mut c_char)->*mut c_char;$/;" f +remove_quoted_escapes subst.c /^remove_quoted_escapes (string)$/;" f +remove_quoted_ifs subst.c /^remove_quoted_ifs (string)$/;" f +remove_quoted_nulls r_bash/src/lib.rs /^ pub fn remove_quoted_nulls(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char/;" f +remove_quoted_nulls subst.c /^remove_quoted_nulls (string)$/;" f +remove_resource_id vendor/fluent-fallback/src/localization.rs /^ pub fn remove_resource_id>(&mut self, res_id: T) -> usize {$/;" f +remove_resource_ids vendor/fluent-fallback/src/localization.rs /^ pub fn remove_resource_ids(&mut self, res_ids: Vec) -> usize {$/;" f +remove_style support/texi2html /^sub remove_style {$/;" s +remove_things support/texi2html /^sub remove_things$/;" s +remove_trailing_whitespace builtins/mkbuiltins.c /^remove_trailing_whitespace (string)$/;" f +remove_unwind_protect builtins_rust/read/src/intercdep.rs /^ pub fn remove_unwind_protect() -> c_void;$/;" f +remove_unwind_protect r_bash/src/lib.rs /^ pub fn remove_unwind_protect();$/;" f +remove_unwind_protect r_print_cmd/src/lib.rs /^ fn remove_unwind_protect();$/;" f +remove_unwind_protect unwind_prot.c /^remove_unwind_protect ()$/;" f typeref:typename:void +remove_unwind_protect_internal unwind_prot.c /^remove_unwind_protect_internal (ignore1, ignore2)$/;" f file: +remove_upattern subst.c /^remove_upattern (param, pattern, op)$/;" f file: +remove_waker vendor/futures-util/src/lock/mutex.rs /^ fn remove_waker(&self, wait_key: usize, wake_another: bool) {$/;" P implementation:Mutex +remove_wpattern subst.c /^remove_wpattern (wparam, wstrlen, wpattern, op)$/;" f file: +removexattr vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn removexattr(path: *const ::c_char, name: *const ::c_char, flags: ::c_int) -> ::c_int;$/;" f +removexattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn removexattr(path: *const ::c_char, name: *const ::c_char) -> ::c_int;$/;" f +removexattr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn removexattr(path: *const c_char, name: *const c_char) -> ::c_int;$/;" f +removexattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn removexattr(path: *const c_char, name: *const c_char) -> ::c_int;$/;" f +rename builtins/mkbuiltins.c /^rename (from, to)$/;" f file: +rename lib/sh/rename.c /^rename (from, to)$/;" f +rename r_bash/src/lib.rs /^ pub fn rename($/;" f +rename r_readline/src/lib.rs /^ pub fn rename($/;" f +rename vendor/libc/src/fuchsia/mod.rs /^ pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int;$/;" f +rename vendor/libc/src/solid/mod.rs /^ pub fn rename(arg1: *const c_char, arg2: *const c_char) -> c_int;$/;" f +rename vendor/libc/src/unix/mod.rs /^ pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int;$/;" f +rename vendor/libc/src/vxworks/mod.rs /^ pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int;$/;" f +rename vendor/libc/src/wasi.rs /^ pub fn rename(a: *const c_char, b: *const c_char) -> c_int;$/;" f +rename vendor/libc/src/windows/mod.rs /^ pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int;$/;" f +rename.o lib/sh/Makefile.in /^rename.o: ${BASHINCDIR}\/posixstat.h$/;" t +rename.o lib/sh/Makefile.in /^rename.o: ${BUILD_DIR}\/config.h$/;" t +rename.o lib/sh/Makefile.in /^rename.o: ${topdir}\/bashtypes.h ${BASHINCDIR}\/stdc.h$/;" t +rename.o lib/sh/Makefile.in /^rename.o: rename.c$/;" t +rename_beta_stderr vendor/bitflags/tests/compile.rs /^fn rename_beta_stderr(_: impl AsRef, _: impl AsRef) -> io::Result<()> {$/;" f +rename_beta_stderr vendor/bitflags/tests/compile.rs /^fn rename_beta_stderr(from: impl AsRef, to: impl AsRef) -> io::Result<()> {$/;" f +rename_thread vendor/libc/src/unix/haiku/native.rs /^ pub fn rename_thread(thread: thread_id, newName: *const ::c_char) -> status_t;$/;" f +renameat r_bash/src/lib.rs /^ pub fn renameat($/;" f +renameat r_readline/src/lib.rs /^ pub fn renameat($/;" f +renameat vendor/libc/src/fuchsia/mod.rs /^ pub fn renameat($/;" f +renameat vendor/libc/src/unix/mod.rs /^ pub fn renameat($/;" f +renameat vendor/libc/src/wasi.rs /^ pub fn renameat($/;" f +renameat2 r_bash/src/lib.rs /^ pub fn renameat2($/;" f +renameat2 r_readline/src/lib.rs /^ pub fn renameat2($/;" f +renameat2 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn renameat2($/;" f +renameatx_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn renameatx_np($/;" f +renamex_np vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn renamex_np(from: *const ::c_char, to: *const ::c_char, flags: ::c_uint) -> ::c_int;$/;" f +rep builtins_rust/fc/src/lib.rs /^ rep: *mut c_char,$/;" m struct:REPL +repeat vendor/futures-util/src/io/mod.rs /^mod repeat;$/;" n +repeat vendor/futures-util/src/io/repeat.rs /^pub fn repeat(byte: u8) -> Repeat {$/;" f +repeat vendor/futures-util/src/stream/mod.rs /^mod repeat;$/;" n +repeat vendor/futures-util/src/stream/repeat.rs /^pub fn repeat(item: T) -> Repeat$/;" f +repeat_byte vendor/memchr/src/memchr/fallback.rs /^fn repeat_byte(b: u8) -> usize {$/;" f +repeat_with vendor/futures-util/src/stream/mod.rs /^mod repeat_with;$/;" n +repeat_with vendor/futures-util/src/stream/repeat_with.rs /^pub fn repeat_with A>(repeater: F) -> RepeatWith {$/;" f +repeater vendor/futures-util/src/stream/repeat_with.rs /^ repeater: F,$/;" m struct:RepeatWith +replace_attrs vendor/syn/src/expr.rs /^ pub(crate) fn replace_attrs(&mut self, new: Vec) -> Vec {$/;" P implementation:Expr +replace_attrs vendor/syn/src/item.rs /^ pub(crate) fn replace_attrs(&mut self, new: Vec) -> Vec {$/;" P implementation:Item +replace_history_entry lib/readline/history.c /^replace_history_entry (int which, const char *line, histdata_t data)$/;" f typeref:typename:HIST_ENTRY * +replace_history_entry r_bashhist/src/lib.rs /^ fn replace_history_entry(_: c_int, _: *const c_char, _: histdata_t) -> *mut HIST_ENTRY;$/;" f +replace_history_entry r_readline/src/lib.rs /^ pub fn replace_history_entry($/;" f +replace_waker vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ unsafe fn replace_waker(self_arc: &mut Arc, cx: &Context<'_>) -> Waker {$/;" P implementation:InnerWaker +repo vendor/syn/benches/file.rs /^pub mod repo;$/;" n +repo vendor/syn/benches/rust.rs /^mod repo;$/;" n +repo vendor/syn/tests/test_precedence.rs /^mod repo;$/;" n +repo vendor/syn/tests/test_round_trip.rs /^mod repo;$/;" n +report support/texi2dvi /^report ()$/;" f +report_error error.c /^report_error (const char *format, ...)$/;" f typeref:typename:void +report_error r_bash/src/lib.rs /^ pub fn report_error(arg1: *const ::std::os::raw::c_char, ...);$/;" f +reports target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" a +repr vendor/proc-macro2/src/fallback.rs /^ repr: String,$/;" m struct:Literal +request_code_none vendor/nix/src/sys/ioctl/bsd.rs /^macro_rules! request_code_none {$/;" M +request_code_none vendor/nix/src/sys/ioctl/linux.rs /^macro_rules! request_code_none {$/;" M +request_code_read vendor/nix/src/sys/ioctl/bsd.rs /^macro_rules! request_code_read {$/;" M +request_code_read vendor/nix/src/sys/ioctl/linux.rs /^macro_rules! request_code_read {$/;" M +request_code_readwrite vendor/nix/src/sys/ioctl/bsd.rs /^macro_rules! request_code_readwrite {$/;" M +request_code_readwrite vendor/nix/src/sys/ioctl/linux.rs /^macro_rules! request_code_readwrite {$/;" M +request_code_write vendor/nix/src/sys/ioctl/bsd.rs /^macro_rules! request_code_write {$/;" M +request_code_write vendor/nix/src/sys/ioctl/linux.rs /^macro_rules! request_code_write {$/;" M +request_code_write_int vendor/nix/src/sys/ioctl/bsd.rs /^macro_rules! request_code_write_int {$/;" M +require_empty_attribute vendor/thiserror-impl/src/attr.rs /^fn require_empty_attribute(attr: &Attribute) -> Result<()> {$/;" f +require_mount vendor/nix/test/common/mod.rs /^macro_rules! require_mount {$/;" M +require_mutable vendor/futures/tests/async_await_macros.rs /^ async fn require_mutable(_: &mut i32) {}$/;" f function:select_on_mutable_borrowing_future_with_same_borrow_in_block +require_mutable vendor/futures/tests/async_await_macros.rs /^ async fn require_mutable(_: &mut i32) {}$/;" f function:select_on_mutable_borrowing_future_with_same_borrow_in_block_and_default +require_sync vendor/lazy_static/tests/test.rs /^fn require_sync() -> X { X }$/;" f +required vendor/async-trait/tests/test.rs /^ async fn required() -> Self::Assoc {}$/;" P implementation:Struct +required vendor/async-trait/tests/test.rs /^ async fn required() -> Self::Assoc;$/;" P interface:Trait +required vendor/winapi/build.rs /^ required: bool,$/;" m struct:Header +requires_builtins builtins/mkbuiltins.c /^static char *requires_builtins[] =$/;" v typeref:typename:char * [] file: +requires_terminator vendor/syn/src/expr.rs /^pub(crate) fn requires_terminator(expr: &Expr) -> bool {$/;" f +rerun_env vendor/autocfg/src/lib.rs /^pub fn rerun_env(var: &str) {$/;" f +rerun_path vendor/autocfg/src/lib.rs /^pub fn rerun_path(path: &str) {$/;" f +res lib/intl/plural-exp.h /^ struct expression *res;$/;" m struct:parse_args typeref:struct:expression * +res vendor/fluent-fallback/src/cache.rs /^ res: std::marker::PhantomData,$/;" m struct:AsyncCache +res vendor/fluent-fallback/src/cache.rs /^ res: std::marker::PhantomData,$/;" m struct:Cache +res vendor/nix/src/time.rs /^ pub fn res(self) -> Result {$/;" P implementation:ClockId +res_ids vendor/fluent-fallback/examples/simple-fallback.rs /^ res_ids: Vec,$/;" m struct:BundleIter +res_ids vendor/fluent-fallback/src/localization.rs /^ res_ids: Vec,$/;" m struct:Localization +res_ids vendor/fluent-fallback/tests/localization_test.rs /^ res_ids: Vec,$/;" m struct:BundleIter +res_ids vendor/fluent-resmgr/src/resource_manager.rs /^ res_ids: Vec,$/;" m struct:BundleIter +res_init vendor/libc/src/fuchsia/mod.rs /^ pub fn res_init() -> ::c_int;$/;" f +res_init vendor/libc/src/unix/mod.rs /^ pub fn res_init() -> ::c_int;$/;" f +res_path_scheme vendor/fluent-fallback/examples/simple-fallback.rs /^ res_path_scheme: PathBuf,$/;" m struct:Bundles +res_path_scheme vendor/fluent-fallback/examples/simple-fallback.rs /^ res_path_scheme: String,$/;" m struct:BundleIter +reserve vendor/slab/src/lib.rs /^ pub fn reserve(&mut self, additional: usize) {$/;" P implementation:Slab +reserve vendor/smallvec/src/lib.rs /^ pub fn reserve(&mut self, additional: usize) {$/;" P implementation:SmallVec +reserve_does_not_allocate_if_available vendor/slab/tests/slab.rs /^fn reserve_does_not_allocate_if_available() {$/;" f +reserve_does_panic_with_capacity_overflow vendor/slab/tests/slab.rs /^fn reserve_does_panic_with_capacity_overflow() {$/;" f +reserve_double_buffer_size vendor/nix/src/unistd.rs /^fn reserve_double_buffer_size(buf: &mut Vec, limit: usize) -> Result<()> {$/;" f +reserve_exact vendor/slab/src/lib.rs /^ pub fn reserve_exact(&mut self, additional: usize) {$/;" P implementation:Slab +reserve_exact vendor/smallvec/src/lib.rs /^ pub fn reserve_exact(&mut self, additional: usize) {$/;" P implementation:SmallVec +reserve_exact_does_not_allocate_if_available vendor/slab/tests/slab.rs /^fn reserve_exact_does_not_allocate_if_available() {$/;" f +reserve_exact_does_panic_with_capacity_overflow vendor/slab/tests/slab.rs /^fn reserve_exact_does_panic_with_capacity_overflow() {$/;" f +reserve_two_digits vendor/syn/src/bigint.rs /^ fn reserve_two_digits(&mut self) {$/;" P implementation:BigInt +reserved lib/readline/readline.h /^ char reserved[64];$/;" m struct:readline_state typeref:typename:char[64] +reserved r_readline/src/lib.rs /^ pub reserved: [::std::os::raw::c_char; 64usize],$/;" m struct:readline_state +reserved vendor/nix/test/sys/test_ioctl.rs /^ reserved: [u32; 2],$/;" m struct:linux_ioctls::v4l2_audio +reserved vendor/syn/src/lib.rs /^mod reserved;$/;" n +reserved.o builtins/Makefile.in /^reserved.o: reserved.def$/;" t +reset vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn reset(&self) -> u8 {$/;" P implementation:SharedPollState +reset_alarm builtins_rust/read/src/lib.rs /^fn reset_alarm() {$/;" f +reset_attempted_completion_function builtins_rust/read/src/lib.rs /^pub fn reset_attempted_completion_function(_cp: *mut c_char) {$/;" f +reset_completer_word_break_chars bashline.c /^reset_completer_word_break_chars ()$/;" f typeref:typename:void +reset_completer_word_break_chars r_bash/src/lib.rs /^ pub fn reset_completer_word_break_chars();$/;" f +reset_current jobs.c /^reset_current ()$/;" f typeref:typename:void file: +reset_current r_jobs/src/lib.rs /^unsafe extern "C" fn reset_current() {$/;" f +reset_default_bindings lib/readline/readline.c /^reset_default_bindings (void)$/;" f typeref:typename:void file: +reset_eol_delim builtins_rust/read/src/lib.rs /^fn reset_eol_delim(_cp: *mut c_char) {$/;" f +reset_internal_getopt builtins/bashgetopt.c /^reset_internal_getopt ()$/;" f typeref:typename:void +reset_internal_getopt builtins_rust/alias/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/bind/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/cd/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/command/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/common/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/complete/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/declare/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/enable/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/exec/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/fc/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/getopts/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/hash/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/help/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/history/src/intercdep.rs /^ pub fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/jobs/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/kill/src/intercdep.rs /^ pub fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/mapfile/src/intercdep.rs /^ pub fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/printf/src/intercdep.rs /^ pub fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/read/src/intercdep.rs /^ pub fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/set/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/setattr/src/intercdep.rs /^ pub fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/shopt/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/suspend/src/intercdep.rs /^ pub fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/trap/src/intercdep.rs /^ pub fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/type/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/ulimit/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/umask/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt builtins_rust/wait/src/lib.rs /^ fn reset_internal_getopt();$/;" f +reset_internal_getopt r_bash/src/lib.rs /^ pub fn reset_internal_getopt();$/;" f +reset_job_indices jobs.c /^reset_job_indices ()$/;" f typeref:typename:void file: +reset_job_indices r_jobs/src/lib.rs /^unsafe extern "C" fn reset_job_indices() {$/;" f +reset_locale_vars locale.c /^reset_locale_vars ()$/;" f typeref:typename:int file: +reset_locals print_cmd.c /^reset_locals ()$/;" f typeref:typename:void file: +reset_locals r_print_cmd/src/lib.rs /^pub unsafe extern "C" fn reset_locals()$/;" f +reset_mail_files mailcheck.c /^reset_mail_files ()$/;" f typeref:typename:void +reset_mail_files r_bash/src/lib.rs /^ pub fn reset_mail_files();$/;" f +reset_mail_timer mailcheck.c /^reset_mail_timer ()$/;" f typeref:typename:void +reset_mail_timer r_bash/src/lib.rs /^ pub fn reset_mail_timer();$/;" f +reset_option_defaults shell.c /^reset_option_defaults ()$/;" f typeref:typename:void file: +reset_or_restore_signal_handlers trap.c /^reset_or_restore_signal_handlers (reset)$/;" f file: +reset_parser r_bash/src/lib.rs /^ pub fn reset_parser();$/;" f +reset_readahead_token r_bash/src/lib.rs /^ pub fn reset_readahead_token();$/;" f +reset_shell_flags flags.c /^reset_shell_flags ()$/;" f typeref:typename:void +reset_shell_flags r_bash/src/lib.rs /^ pub fn reset_shell_flags();$/;" f +reset_shell_options builtins_rust/set/src/lib.rs /^unsafe fn reset_shell_options() {$/;" f +reset_shell_options r_bash/src/lib.rs /^ pub fn reset_shell_options();$/;" f +reset_shopt_options r_bash/src/lib.rs /^ pub fn reset_shopt_options();$/;" f +reset_signal trap.c /^reset_signal (sig)$/;" f file: +reset_signal_handlers r_bash/src/lib.rs /^ pub fn reset_signal_handlers();$/;" f +reset_signal_handlers r_glob/src/lib.rs /^ pub fn reset_signal_handlers();$/;" f +reset_signal_handlers r_readline/src/lib.rs /^ pub fn reset_signal_handlers();$/;" f +reset_signal_handlers trap.c /^reset_signal_handlers ()$/;" f typeref:typename:void +reset_terminating_signals r_bash/src/lib.rs /^ pub fn reset_terminating_signals();$/;" f +reset_terminating_signals sig.c /^reset_terminating_signals ()$/;" f typeref:typename:void +resize vendor/smallvec/src/lib.rs /^ pub fn resize(&mut self, len: usize, value: A::Item) {$/;" f +resize_area vendor/libc/src/unix/haiku/native.rs /^ pub fn resize_area(id: area_id, newSize: usize) -> status_t;$/;" f +resize_up vendor/stdext/src/vec.rs /^ fn resize_up(&mut self, new_len: usize, value: T) {$/;" P implementation:Vec +resize_up vendor/stdext/src/vec.rs /^ fn resize_up(&mut self, new_len: usize, value: T);$/;" P interface:VecExtClone +resize_up_with vendor/stdext/src/vec.rs /^ fn resize_up_with(&mut self, new_len: usize, f: F)$/;" P implementation:Vec +resize_up_with vendor/stdext/src/vec.rs /^ fn resize_up_with(&mut self, new_len: usize, f: F)$/;" P interface:VecExt +resize_with vendor/smallvec/src/lib.rs /^ pub fn resize_with(&mut self, new_len: usize, f: F)$/;" P implementation:SmallVec +resmgr_get_bundle vendor/fluent-resmgr/tests/localization_test.rs /^fn resmgr_get_bundle() {$/;" f +resolve vendor/elsa/examples/string_interner.rs /^ fn resolve(&self, index: usize) -> Option<&str> {$/;" P implementation:StringInterner +resolve vendor/fluent-bundle/src/resolver/inline_expression.rs /^ fn resolve<'source, 'errors, R, M>($/;" P implementation:InlineExpression +resolve vendor/fluent-bundle/src/resolver/mod.rs /^ fn resolve<'source, 'errors, R, M>($/;" P interface:ResolveValue +resolve vendor/fluent-bundle/src/resolver/pattern.rs /^ fn resolve<'source, 'errors, R, M>($/;" P implementation:Pattern +resolve_app_locales vendor/fluent-fallback/examples/simple-fallback.rs /^fn resolve_app_locales<'l>(args: &[String]) -> Vec {$/;" f +resolve_dependencies vendor/winapi/build.rs /^ fn resolve_dependencies(&self) {$/;" P implementation:Graph +resolved_at vendor/proc-macro2/src/fallback.rs /^ pub fn resolved_at(&self, _other: Span) -> Span {$/;" P implementation:Span +resolved_at vendor/proc-macro2/src/lib.rs /^ pub fn resolved_at(&self, other: Span) -> Span {$/;" P implementation:Span +resolved_at vendor/proc-macro2/src/wrapper.rs /^ pub fn resolved_at(&self, other: Span) -> Span {$/;" P implementation:Span +resolver vendor/fluent-bundle/src/lib.rs /^pub mod resolver;$/;" n +resolver_bench vendor/fluent-bundle/benches/resolver.rs /^fn resolver_bench(c: &mut Criterion) {$/;" f +resolving_errors vendor/futures/tests/ready_queue.rs /^fn resolving_errors() {$/;" f +resource vendor/fluent-bundle/src/lib.rs /^mod resource;$/;" n +resource_manager vendor/fluent-resmgr/src/lib.rs /^pub mod resource_manager;$/;" n +resource_type vendor/fluent-fallback/src/types.rs /^ pub resource_type: ResourceType,$/;" m struct:ResourceId +resources vendor/elsa/examples/fluentresource.rs /^ resources: FrozenMap>>,$/;" m struct:ResourceManager +resources vendor/fluent-bundle/src/bundle.rs /^ pub(crate) resources: Vec,$/;" m struct:FluentBundle +resources vendor/fluent-resmgr/src/resource_manager.rs /^ resources: FrozenMap>,$/;" m struct:ResourceManager +respan_token_stream vendor/syn/src/lit.rs /^ fn respan_token_stream(stream: TokenStream, span: Span) -> TokenStream {$/;" f method:LitStr::parse_with +respan_token_tree vendor/quote/src/runtime.rs /^fn respan_token_tree(mut token: TokenTree, span: Span) -> TokenTree {$/;" f +respan_token_tree vendor/syn/src/lit.rs /^ fn respan_token_tree(mut token: TokenTree, span: Span) -> TokenTree {$/;" f method:LitStr::parse_with +rest variables.c /^ WORD_LIST *rest;$/;" m struct:saved_dollar_vars typeref:typename:WORD_LIST * file: +rest vendor/proc-macro2/src/parse.rs /^ pub rest: &'a str,$/;" m struct:Cursor +rest vendor/syn/tests/test_visibility.rs /^ rest: TokenStream,$/;" m struct:VisRest +rest_of_args builtins_rust/common/src/lib.rs /^ static mut rest_of_args: *mut WordList;$/;" v +rest_of_args builtins_rust/getopts/src/lib.rs /^ static rest_of_args: *mut WordList;$/;" v +rest_of_args r_bash/src/lib.rs /^ pub static mut rest_of_args: *mut WORD_LIST;$/;" v +rest_of_args variables.c /^WORD_LIST *rest_of_args = (WORD_LIST *)NULL;$/;" v typeref:typename:WORD_LIST * +restart_job_control builtins_rust/exec/src/lib.rs /^ fn restart_job_control();$/;" f +restart_job_control jobs.c /^restart_job_control ()$/;" f typeref:typename:void +restart_job_control r_bash/src/lib.rs /^ pub fn restart_job_control();$/;" f +restart_job_control r_jobs/src/lib.rs /^pub unsafe extern "C" fn restart_job_control() {$/;" f +restartmanager vendor/winapi/src/um/mod.rs /^#[cfg(feature = "restartmanager")] pub mod restartmanager;$/;" n +restore_default_color lib/readline/colors.c /^restore_default_color (void)$/;" f typeref:typename:void file: +restore_default_signal builtins_rust/source/src/lib.rs /^ fn restore_default_signal(sig: i32);$/;" f +restore_default_signal builtins_rust/trap/src/intercdep.rs /^ pub fn restore_default_signal(sig: c_int);$/;" f +restore_default_signal r_bash/src/lib.rs /^ pub fn restore_default_signal(arg1: ::std::os::raw::c_int);$/;" f +restore_default_signal r_glob/src/lib.rs /^ pub fn restore_default_signal(arg1: ::std::os::raw::c_int);$/;" f +restore_default_signal r_readline/src/lib.rs /^ pub fn restore_default_signal(arg1: ::std::os::raw::c_int);$/;" f +restore_default_signal trap.c /^restore_default_signal (sig)$/;" f +restore_directory_hook bashline.c /^restore_directory_hook (hookf)$/;" f file: +restore_dollar_vars variables.c /^restore_dollar_vars (args)$/;" f file: +restore_funcarray_state execute_cmd.c /^restore_funcarray_state (fa)$/;" f +restore_funcarray_state r_bash/src/lib.rs /^ pub fn restore_funcarray_state(arg1: *mut func_array_state);$/;" f +restore_input_line_state r_bash/src/lib.rs /^ pub fn restore_input_line_state(arg1: *mut sh_input_line_state_t);$/;" f +restore_lastcom builtins/evalstring.c /^restore_lastcom (x)$/;" f file: +restore_original_signals builtins_rust/exec/src/lib.rs /^ fn restore_original_signals();$/;" f +restore_original_signals r_bash/src/lib.rs /^ pub fn restore_original_signals();$/;" f +restore_original_signals r_glob/src/lib.rs /^ pub fn restore_original_signals();$/;" f +restore_original_signals r_readline/src/lib.rs /^ pub fn restore_original_signals();$/;" f +restore_original_signals trap.c /^restore_original_signals ()$/;" f typeref:typename:void +restore_parser_state r_bash/src/lib.rs /^ pub fn restore_parser_state(arg1: *mut sh_parser_state_t);$/;" f +restore_pgrp_pipe jobs.c /^restore_pgrp_pipe (p)$/;" f +restore_pgrp_pipe r_bash/src/lib.rs /^ pub fn restore_pgrp_pipe(arg1: *mut ::std::os::raw::c_int);$/;" f +restore_pgrp_pipe r_jobs/src/lib.rs /^pub unsafe extern "C" fn restore_pgrp_pipe(mut p: *mut c_int) {$/;" f +restore_pipeline jobs.c /^restore_pipeline (discard)$/;" f +restore_pipeline r_bash/src/lib.rs /^ pub fn restore_pipeline(arg1: ::std::os::raw::c_int) -> *mut PROCESS;$/;" f +restore_pipeline r_jobs/src/lib.rs /^pub unsafe extern "C" fn restore_pipeline(discard:c_int) -> *mut PROCESS$/;" f +restore_pipestatus_array r_bash/src/lib.rs /^ pub fn restore_pipestatus_array(arg1: *mut ARRAY);$/;" f +restore_pipestatus_array variables.c /^restore_pipestatus_array (a)$/;" f +restore_sigint_handler jobs.c /^restore_sigint_handler ()$/;" f typeref:typename:void file: +restore_sigint_handler nojobs.c /^restore_sigint_handler ()$/;" f typeref:typename:void file: +restore_sigint_handler r_jobs/src/lib.rs /^unsafe extern "C" fn restore_sigint_handler() {$/;" f +restore_sigmask r_bash/src/lib.rs /^ pub fn restore_sigmask();$/;" f +restore_sigmask sig.c /^restore_sigmask ()$/;" f typeref:typename:void +restore_signal trap.c /^restore_signal (sig)$/;" f file: +restore_signal_mask execute_cmd.c /^restore_signal_mask (set)$/;" f file: +restore_stdin execute_cmd.c /^restore_stdin (s)$/;" f file: +restore_tilde bashline.c /^restore_tilde (val, directory_part)$/;" f file: +restore_token_state r_bash/src/lib.rs /^ pub fn restore_token_state(arg1: *mut ::std::os::raw::c_int);$/;" f +restore_variable unwind_prot.c /^restore_variable (sv)$/;" f file: +restricted builtins_rust/cd/src/lib.rs /^ static mut restricted: i32;$/;" v +restricted builtins_rust/command/src/lib.rs /^ static mut restricted: libc::c_int;$/;" v +restricted builtins_rust/enable/src/lib.rs /^ static mut restricted: libc::c_int;$/;" v +restricted builtins_rust/exec/src/lib.rs /^ static restricted: i32;$/;" v +restricted builtins_rust/hash/src/lib.rs /^ static restricted: i32;$/;" v +restricted builtins_rust/history/src/intercdep.rs /^ pub static mut restricted: c_int;$/;" v +restricted builtins_rust/source/src/lib.rs /^ static mut restricted: i32;$/;" v +restricted configure.ac /^AC_ARG_ENABLE(restricted, AC_HELP_STRING([--enable-restricted], [enable a restricted shell]), op/;" e +restricted flags.c /^int restricted = 0; \/* currently restricted *\/$/;" v typeref:typename:int +restricted r_bash/src/lib.rs /^ pub static mut restricted: ::std::os::raw::c_int;$/;" v +restricted_shell builtins_rust/shopt/src/lib.rs /^ static mut restricted_shell: i32;$/;" v +restricted_shell flags.c /^int restricted_shell = 0; \/* shell was started in restricted mode. *\/$/;" v typeref:typename:int +restricted_shell r_bash/src/lib.rs /^ pub static mut restricted_shell: ::std::os::raw::c_int;$/;" v +restrictederrorinfo vendor/winapi/src/um/mod.rs /^#[cfg(feature = "restrictederrorinfo")] pub mod restrictederrorinfo;$/;" n +result vendor/nix/src/errno.rs /^ pub fn result>(value: S) -> Result {$/;" P implementation:Errno +result vendor/stdext/src/lib.rs /^pub mod result;$/;" n +result_smoke vendor/futures/tests_disabled/all.rs /^fn result_smoke() {$/;" f +resumable_extend vendor/smallvec/src/tests.rs /^fn resumable_extend() {$/;" f +resume_thread vendor/libc/src/unix/haiku/native.rs /^ pub fn resume_thread(thread: thread_id) -> status_t;$/;" f +ret lib/intl/dcigettext.c /^ char *ret;$/;" v typeref:typename:char * +retain vendor/slab/src/lib.rs /^ pub fn retain(&mut self, mut f: F)$/;" P implementation:Slab +retain vendor/slab/tests/slab.rs /^fn retain() {$/;" f +retain vendor/smallvec/src/lib.rs /^ pub fn retain bool>(&mut self, mut f: F) {$/;" P implementation:SmallVec +retain_mut vendor/smallvec/src/lib.rs /^ pub fn retain_mut bool>(&mut self, f: F) {$/;" P implementation:SmallVec +retcode_name_buffer jobs.c /^static char retcode_name_buffer[64];$/;" v typeref:typename:char[64] file: +retcode_name_buffer r_jobs/src/lib.rs /^pub static mut retcode_name_buffer:[c_char; 64] = [0; 64];$/;" v +retlen lib/intl/dcigettext.c /^ size_t retlen;$/;" v typeref:typename:size_t +return.o builtins/Makefile.in /^return.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +return.o builtins/Makefile.in /^return.o: $(topdir)\/conftypes.h $(topdir)\/execute_cmd.h$/;" t +return.o builtins/Makefile.in /^return.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +return.o builtins/Makefile.in /^return.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +return.o builtins/Makefile.in /^return.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h$/;" t +return.o builtins/Makefile.in /^return.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +return.o builtins/Makefile.in /^return.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +return.o builtins/Makefile.in /^return.o: ..\/pathnames.h$/;" t +return.o builtins/Makefile.in /^return.o: return.def$/;" t +return_EOF r_bash/src/lib.rs /^ pub fn return_EOF() -> ::std::os::raw::c_int;$/;" f +return_builtin builtins_rust/common/src/lib.rs /^ fn return_builtin(list: *mut WordList) -> i32;$/;" f +return_catch builtins_rust/rreturn/src/intercdep.rs /^ pub static return_catch: sigjmp_buf;$/;" v +return_catch execute_cmd.c /^procenv_t return_catch;$/;" v typeref:typename:procenv_t +return_catch r_bash/src/lib.rs /^ pub static mut return_catch: sigjmp_buf;$/;" v +return_catch_flag builtins_rust/rreturn/src/intercdep.rs /^ pub static return_catch_flag: c_int;$/;" v +return_catch_flag execute_cmd.c /^int return_catch_flag;$/;" v typeref:typename:int +return_catch_flag r_bash/src/lib.rs /^ pub static mut return_catch_flag: ::std::os::raw::c_int;$/;" v +return_catch_value builtins_rust/rreturn/src/intercdep.rs /^ pub static mut return_catch_value: c_int;$/;" v +return_catch_value execute_cmd.c /^int return_catch_value;$/;" v typeref:typename:int +return_catch_value r_bash/src/lib.rs /^ pub static mut return_catch_value: ::std::os::raw::c_int;$/;" v +return_ty vendor/futures/tests/test_macro.rs /^async fn return_ty() -> Result<(), ()> {$/;" f +return_zero bashline.c /^return_zero (name)$/;" f file: +retval builtins_rust/printf/src/lib.rs /^static mut retval: c_int = 0;$/;" v +retval lib/intl/dcigettext.c /^ char *retval;$/;" v typeref:typename:char * +reunite vendor/futures-util/src/io/split.rs /^ pub fn reunite(self, other: ReadHalf) -> Result> {$/;" P implementation:WriteHalf +reunite vendor/futures-util/src/io/split.rs /^ pub fn reunite(self, other: WriteHalf) -> Result> {$/;" P implementation:ReadHalf +reunite vendor/futures-util/src/lock/bilock.rs /^ pub fn reunite(self, other: Self) -> Result>$/;" P implementation:BiLock +reunite vendor/futures-util/src/stream/stream/split.rs /^ pub fn reunite(self, other: SplitStream) -> Result> {$/;" P implementation:SplitSink +reunite vendor/futures-util/src/stream/stream/split.rs /^ pub fn reunite(self, other: SplitSink) -> Result>$/;" P implementation:SplitStream +revents vendor/nix/src/poll.rs /^ pub fn revents(self) -> Option {$/;" P implementation:PollFd +reverse vendor/memchr/src/memmem/rabinkarp.rs /^ pub(crate) fn reverse(needle: &[u8]) -> NeedleHash {$/;" P implementation:NeedleHash +reverse vendor/memchr/src/memmem/twoway.rs /^ fn reverse($/;" P implementation:Shift +reverse vendor/memchr/src/memmem/twoway.rs /^ fn reverse(needle: &[u8], kind: SuffixKind) -> Suffix {$/;" P implementation:Suffix +reverse_bits vendor/stdext/src/num/integer.rs /^ fn reverse_bits(self) -> Self;$/;" P interface:Integer +reverse_follows vendor/elsa/examples/mutable_arena.rs /^ pub reverse_follows: FrozenVec>,$/;" m struct:Person +reverse_pos vendor/memchr/src/memchr/x86/avx.rs /^fn reverse_pos(mask: i32) -> usize {$/;" f +reverse_pos vendor/memchr/src/memchr/x86/sse2.rs /^fn reverse_pos(mask: i32) -> usize {$/;" f +reverse_pos2 vendor/memchr/src/memchr/x86/avx.rs /^fn reverse_pos2(mask1: i32, mask2: i32) -> usize {$/;" f +reverse_pos2 vendor/memchr/src/memchr/x86/sse2.rs /^fn reverse_pos2(mask1: i32, mask2: i32) -> usize {$/;" f +reverse_pos3 vendor/memchr/src/memchr/x86/avx.rs /^fn reverse_pos3(mask1: i32, mask2: i32, mask3: i32) -> usize {$/;" f +reverse_pos3 vendor/memchr/src/memchr/x86/sse2.rs /^fn reverse_pos3(mask1: i32, mask2: i32, mask3: i32) -> usize {$/;" f +reverse_search vendor/memchr/src/memchr/fallback.rs /^unsafe fn reverse_search bool>($/;" f +reverse_search1 vendor/memchr/src/memchr/x86/avx.rs /^unsafe fn reverse_search1($/;" f +reverse_search1 vendor/memchr/src/memchr/x86/sse2.rs /^unsafe fn reverse_search1($/;" f +reverse_search2 vendor/memchr/src/memchr/x86/avx.rs /^unsafe fn reverse_search2($/;" f +reverse_search2 vendor/memchr/src/memchr/x86/sse2.rs /^unsafe fn reverse_search2($/;" f +reverse_search3 vendor/memchr/src/memchr/x86/avx.rs /^unsafe fn reverse_search3($/;" f +reverse_search3 vendor/memchr/src/memchr/x86/sse2.rs /^unsafe fn reverse_search3($/;" f +revision lib/intl/gmo.h /^ nls_uint32 revision;$/;" m struct:mo_file_header typeref:typename:nls_uint32 +revoke r_bash/src/lib.rs /^ pub fn revoke(__file: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +revoke r_glob/src/lib.rs /^ pub fn revoke(__file: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +revoke r_readline/src/lib.rs /^ pub fn revoke(__file: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rewind r_bash/src/lib.rs /^ pub fn rewind(__stream: *mut FILE);$/;" f +rewind r_readline/src/lib.rs /^ pub fn rewind(__stream: *mut FILE);$/;" f +rewind vendor/libc/src/fuchsia/mod.rs /^ pub fn rewind(stream: *mut FILE);$/;" f +rewind vendor/libc/src/solid/mod.rs /^ pub fn rewind(arg1: *mut FILE);$/;" f +rewind vendor/libc/src/unix/mod.rs /^ pub fn rewind(stream: *mut FILE);$/;" f +rewind vendor/libc/src/vxworks/mod.rs /^ pub fn rewind(stream: *mut FILE);$/;" f +rewind vendor/libc/src/wasi.rs /^ pub fn rewind(f: *mut FILE);$/;" f +rewind vendor/libc/src/windows/mod.rs /^ pub fn rewind(stream: *mut FILE);$/;" f +rewind vendor/nix/test/test_dir.rs /^fn rewind() {$/;" f +rewinddir lib/glob/ndir.h /^#define rewinddir(/;" d +rewinddir r_bash/src/lib.rs /^ pub fn rewinddir(__dirp: *mut DIR);$/;" f +rewinddir r_readline/src/lib.rs /^ pub fn rewinddir(__dirp: *mut DIR);$/;" f +rewinddir vendor/libc/src/fuchsia/mod.rs /^ pub fn rewinddir(dirp: *mut ::DIR);$/;" f +rewinddir vendor/libc/src/unix/mod.rs /^ pub fn rewinddir(dirp: *mut ::DIR);$/;" f +rewinddir vendor/libc/src/vxworks/mod.rs /^ pub fn rewinddir(dirp: *mut ::DIR);$/;" f +rewinddir vendor/libc/src/wasi.rs /^ pub fn rewinddir(dirp: *mut ::DIR);$/;" f +rfind vendor/memchr/src/memmem/mod.rs /^ fn rfind(&self, haystack: &[u8]) -> Option {$/;" P implementation:SearcherRev +rfind vendor/memchr/src/memmem/mod.rs /^ pub fn rfind>(&self, haystack: B) -> Option {$/;" P implementation:FinderRev +rfind vendor/memchr/src/memmem/mod.rs /^pub fn rfind(haystack: &[u8], needle: &[u8]) -> Option {$/;" f +rfind vendor/memchr/src/memmem/rabinkarp.rs /^pub(crate) fn rfind(haystack: &[u8], needle: &[u8]) -> Option {$/;" f +rfind vendor/memchr/src/memmem/twoway.rs /^ pub(crate) fn rfind($/;" P implementation:Reverse +rfind_general vendor/memchr/src/memmem/twoway.rs /^ fn rfind_general(&self, haystack: &[u8], needle: &[u8]) -> Option {$/;" P implementation:Reverse +rfind_iter vendor/memchr/src/memmem/mod.rs /^ pub fn rfind_iter<'a, 'h>($/;" P implementation:FinderRev +rfind_iter vendor/memchr/src/memmem/mod.rs /^pub fn rfind_iter<'h, 'n, N: 'n + ?Sized + AsRef<[u8]>>($/;" f +rfind_large_imp vendor/memchr/src/memmem/twoway.rs /^ fn rfind_large_imp($/;" P implementation:Reverse +rfind_small_imp vendor/memchr/src/memmem/twoway.rs /^ fn rfind_small_imp($/;" P implementation:Reverse +rfind_with vendor/memchr/src/memmem/rabinkarp.rs /^pub(crate) fn rfind_with($/;" f +rflag builtins_rust/complete/src/lib.rs /^ rflag: c_int,$/;" m struct:_optflags +rflags builtins_rust/command/src/lib.rs /^ pub rflags: libc::c_int,$/;" m struct:redirect +rflags builtins_rust/exec/src/lib.rs /^ rflags: i32,$/;" m struct:redirect +rflags builtins_rust/kill/src/intercdep.rs /^ pub rflags: c_int,$/;" m struct:redirect +rflags builtins_rust/setattr/src/intercdep.rs /^ pub rflags: c_int,$/;" m struct:redirect +rflags command.h /^ int rflags; \/* Private flags for this redirection *\/$/;" m struct:redirect typeref:typename:int +rflags r_bash/src/lib.rs /^ pub rflags: ::std::os::raw::c_int,$/;" m struct:redirect +rflags r_glob/src/lib.rs /^ pub rflags: ::std::os::raw::c_int,$/;" m struct:redirect +rflags r_readline/src/lib.rs /^ pub rflags: ::std::os::raw::c_int,$/;" m struct:redirect +rfork vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn rfork(flags: ::c_int) -> ::c_int;$/;" f +right builtins_rust/command/src/lib.rs /^ pub right: *mut cond_com,$/;" m struct:cond_com +right builtins_rust/kill/src/intercdep.rs /^ pub right: *mut cond_com,$/;" m struct:cond_com +right builtins_rust/setattr/src/intercdep.rs /^ pub right: *mut cond_com,$/;" m struct:cond_com +right command.h /^ struct cond_com *left, *right;$/;" m struct:cond_com typeref:struct:cond_com * +right r_bash/src/lib.rs /^ pub right: *mut cond_com,$/;" m struct:cond_com +right r_glob/src/lib.rs /^ pub right: *mut cond_com,$/;" m struct:cond_com +right r_readline/src/lib.rs /^ pub right: *mut cond_com,$/;" m struct:cond_com +right_future vendor/futures-util/src/future/future/mod.rs /^ fn right_future(self) -> Either$/;" P interface:FutureExt +right_sink vendor/futures-util/src/sink/mod.rs /^ fn right_sink(self) -> Either$/;" P interface:SinkExt +right_stream vendor/futures-util/src/stream/stream/mod.rs /^ fn right_stream(self) -> Either$/;" P interface:StreamExt +rightarg lib/intl/eval-plural.h /^ unsigned long int rightarg = plural_eval (pexp->val.args[1], n);$/;" v typeref:typename:unsigned long int +rindex r_bash/src/lib.rs /^ pub fn rindex($/;" f +rindex r_glob/src/lib.rs /^ pub fn rindex($/;" f +rindex r_readline/src/lib.rs /^ pub fn rindex($/;" f +rindex vendor/libc/src/solid/mod.rs /^ pub fn rindex(arg1: *const c_char, arg2: c_int) -> *mut c_char;$/;" f +rip builtins_rust/wait/src/signal.rs /^ pub rip: __uint64_t,$/;" m struct:_fpstate +rip builtins_rust/wait/src/signal.rs /^ pub rip: __uint64_t,$/;" m struct:_libc_fpstate +rip builtins_rust/wait/src/signal.rs /^ pub rip: __uint64_t,$/;" m struct:sigcontext +rip r_bash/src/lib.rs /^ pub rip: __uint64_t,$/;" m struct:_fpstate +rip r_bash/src/lib.rs /^ pub rip: __uint64_t,$/;" m struct:_libc_fpstate +rip r_bash/src/lib.rs /^ pub rip: __uint64_t,$/;" m struct:sigcontext +rip r_glob/src/lib.rs /^ pub rip: __uint64_t,$/;" m struct:_fpstate +rip r_glob/src/lib.rs /^ pub rip: __uint64_t,$/;" m struct:_libc_fpstate +rip r_glob/src/lib.rs /^ pub rip: __uint64_t,$/;" m struct:sigcontext +rip r_readline/src/lib.rs /^ pub rip: __uint64_t,$/;" m struct:_fpstate +rip r_readline/src/lib.rs /^ pub rip: __uint64_t,$/;" m struct:_libc_fpstate +rip r_readline/src/lib.rs /^ pub rip: __uint64_t,$/;" m struct:sigcontext +rl lib/readline/examples/Makefile /^rl: rl.o$/;" t +rl.o lib/readline/examples/Makefile /^rl.o: rl.c$/;" t +rl_abort lib/readline/util.c /^rl_abort (int count, int key)$/;" f typeref:typename:int +rl_abort r_readline/src/lib.rs /^ pub fn rl_abort($/;" f +rl_activate_mark lib/readline/text.c /^rl_activate_mark (void)$/;" f typeref:typename:void +rl_activate_mark r_readline/src/lib.rs /^ pub fn rl_activate_mark();$/;" f +rl_add_defun lib/readline/bind.c /^rl_add_defun (const char *name, rl_command_func_t *function, int key)$/;" f typeref:typename:int +rl_add_defun r_readline/src/lib.rs /^ pub fn rl_add_defun($/;" f +rl_add_funmap_entry lib/readline/funmap.c /^rl_add_funmap_entry (const char *name, rl_command_func_t *function)$/;" f typeref:typename:int +rl_add_funmap_entry r_readline/src/lib.rs /^ pub fn rl_add_funmap_entry($/;" f +rl_add_undo lib/readline/undo.c /^rl_add_undo (enum undo_code what, int start, int end, char *text)$/;" f typeref:typename:void +rl_add_undo r_readline/src/lib.rs /^ pub fn rl_add_undo($/;" f +rl_alphabetic lib/readline/util.c /^rl_alphabetic (int c)$/;" f typeref:typename:int +rl_alphabetic r_readline/src/lib.rs /^ pub fn rl_alphabetic(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +rl_already_prompted lib/readline/readline.c /^int rl_already_prompted = 0;$/;" v typeref:typename:int +rl_already_prompted r_readline/src/lib.rs /^ pub static mut rl_already_prompted: ::std::os::raw::c_int;$/;" v +rl_arg_sign lib/readline/readline.c /^int rl_arg_sign = 1;$/;" v typeref:typename:int +rl_arg_sign r_readline/src/lib.rs /^ pub static mut rl_arg_sign: ::std::os::raw::c_int;$/;" v +rl_arrow_keys lib/readline/text.c /^rl_arrow_keys (int count, int key)$/;" f typeref:typename:int +rl_arrow_keys r_readline/src/lib.rs /^ pub fn rl_arrow_keys($/;" f +rl_attempted_completion_function builtins_rust/read/src/intercdep.rs /^ pub static mut rl_attempted_completion_function : rl_completion_func_t;$/;" v +rl_attempted_completion_function lib/readline/complete.c /^rl_completion_func_t *rl_attempted_completion_function = (rl_completion_func_t *)NULL;$/;" v typeref:typename:rl_completion_func_t * +rl_attempted_completion_function r_readline/src/lib.rs /^ pub static mut rl_attempted_completion_function: rl_completion_func_t;$/;" v +rl_attempted_completion_over lib/readline/complete.c /^int rl_attempted_completion_over = 0;$/;" v typeref:typename:int +rl_attempted_completion_over r_readline/src/lib.rs /^ pub static mut rl_attempted_completion_over: ::std::os::raw::c_int;$/;" v +rl_backward lib/readline/text.c /^rl_backward (int count, int key)$/;" f typeref:typename:int +rl_backward r_readline/src/lib.rs /^ pub fn rl_backward($/;" f +rl_backward_byte lib/readline/text.c /^rl_backward_byte (int count, int key)$/;" f typeref:typename:int +rl_backward_byte r_readline/src/lib.rs /^ pub fn rl_backward_byte($/;" f +rl_backward_char lib/readline/text.c /^rl_backward_char (int count, int key)$/;" f typeref:typename:int +rl_backward_char r_readline/src/lib.rs /^ pub fn rl_backward_char($/;" f +rl_backward_char_search lib/readline/text.c /^rl_backward_char_search (int count, int key)$/;" f typeref:typename:int +rl_backward_char_search r_readline/src/lib.rs /^ pub fn rl_backward_char_search($/;" f +rl_backward_kill_line lib/readline/kill.c /^rl_backward_kill_line (int direction, int key)$/;" f typeref:typename:int +rl_backward_kill_line r_readline/src/lib.rs /^ pub fn rl_backward_kill_line($/;" f +rl_backward_kill_word lib/readline/kill.c /^rl_backward_kill_word (int count, int key)$/;" f typeref:typename:int +rl_backward_kill_word r_readline/src/lib.rs /^ pub fn rl_backward_kill_word($/;" f +rl_backward_menu_complete lib/readline/complete.c /^rl_backward_menu_complete (int count, int key)$/;" f typeref:typename:int +rl_backward_menu_complete r_readline/src/lib.rs /^ pub fn rl_backward_menu_complete($/;" f +rl_backward_word lib/readline/text.c /^rl_backward_word (int count, int key)$/;" f typeref:typename:int +rl_backward_word r_readline/src/lib.rs /^ pub fn rl_backward_word($/;" f +rl_basic_quote_characters lib/readline/complete.c /^const char *rl_basic_quote_characters = "\\"'";$/;" v typeref:typename:const char * +rl_basic_quote_characters r_readline/src/lib.rs /^ pub static mut rl_basic_quote_characters: *const ::std::os::raw::c_char;$/;" v +rl_basic_word_break_characters lib/readline/complete.c /^const char *rl_basic_word_break_characters = " \\t\\n\\"\\\\'`@$><=;|&{("; \/* }) *\/$/;" v typeref:typename:const char * +rl_basic_word_break_characters r_readline/src/lib.rs /^ pub static mut rl_basic_word_break_characters: *const ::std::os::raw::c_char;$/;" v +rl_beg_of_line lib/readline/text.c /^rl_beg_of_line (int count, int key)$/;" f typeref:typename:int +rl_beg_of_line r_readline/src/lib.rs /^ pub fn rl_beg_of_line($/;" f +rl_begin_undo_group lib/readline/undo.c /^rl_begin_undo_group (void)$/;" f typeref:typename:int +rl_begin_undo_group r_readline/src/lib.rs /^ pub fn rl_begin_undo_group() -> ::std::os::raw::c_int;$/;" f +rl_beginning_of_history lib/readline/misc.c /^rl_beginning_of_history (int count, int key)$/;" f typeref:typename:int +rl_beginning_of_history r_readline/src/lib.rs /^ pub fn rl_beginning_of_history($/;" f +rl_bind_key lib/readline/bind.c /^rl_bind_key (int key, rl_command_func_t *function)$/;" f typeref:typename:int +rl_bind_key r_readline/src/lib.rs /^ pub fn rl_bind_key($/;" f +rl_bind_key_if_unbound lib/readline/bind.c /^rl_bind_key_if_unbound (int key, rl_command_func_t *default_func)$/;" f typeref:typename:int +rl_bind_key_if_unbound r_readline/src/lib.rs /^ pub fn rl_bind_key_if_unbound($/;" f +rl_bind_key_if_unbound_in_map lib/readline/bind.c /^rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *default_func, Keymap kmap)$/;" f typeref:typename:int +rl_bind_key_if_unbound_in_map r_readline/src/lib.rs /^ pub fn rl_bind_key_if_unbound_in_map($/;" f +rl_bind_key_in_map lib/readline/bind.c /^rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map)$/;" f typeref:typename:int +rl_bind_key_in_map r_readline/src/lib.rs /^ pub fn rl_bind_key_in_map($/;" f +rl_bind_keyseq builtins_rust/bind/src/lib.rs /^ fn rl_bind_keyseq(keyseq: *const c_char, function: *mut rl_command_func_t) -> i32;$/;" f +rl_bind_keyseq lib/readline/bind.c /^rl_bind_keyseq (const char *keyseq, rl_command_func_t *function)$/;" f typeref:typename:int +rl_bind_keyseq r_readline/src/lib.rs /^ pub fn rl_bind_keyseq($/;" f +rl_bind_keyseq_if_unbound lib/readline/bind.c /^rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *default_func)$/;" f typeref:typename:int +rl_bind_keyseq_if_unbound r_readline/src/lib.rs /^ pub fn rl_bind_keyseq_if_unbound($/;" f +rl_bind_keyseq_if_unbound_in_map lib/readline/bind.c /^rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *default_func, Keymap km/;" f typeref:typename:int +rl_bind_keyseq_if_unbound_in_map r_readline/src/lib.rs /^ pub fn rl_bind_keyseq_if_unbound_in_map($/;" f +rl_bind_keyseq_in_map lib/readline/bind.c /^rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map)$/;" f typeref:typename:int +rl_bind_keyseq_in_map r_readline/src/lib.rs /^ pub fn rl_bind_keyseq_in_map($/;" f +rl_binding_keymap lib/readline/bind.c /^Keymap rl_binding_keymap;$/;" v typeref:typename:Keymap +rl_binding_keymap r_readline/src/lib.rs /^ pub static mut rl_binding_keymap: Keymap;$/;" v +rl_blink_matching_paren lib/readline/parens.c /^int rl_blink_matching_paren = 0;$/;" v typeref:typename:int +rl_blink_matching_paren r_readline/src/lib.rs /^ pub static mut rl_blink_matching_paren: ::std::os::raw::c_int;$/;" v +rl_bracketed_paste_begin lib/readline/kill.c /^rl_bracketed_paste_begin (int count, int key)$/;" f typeref:typename:int +rl_bracketed_paste_begin r_readline/src/lib.rs /^ pub fn rl_bracketed_paste_begin($/;" f +rl_byte_oriented lib/readline/mbutil.c /^int rl_byte_oriented = 0;$/;" v typeref:typename:int +rl_byte_oriented lib/readline/mbutil.c /^int rl_byte_oriented = 1;$/;" v typeref:typename:int +rl_byte_oriented r_readline/src/lib.rs /^ pub static mut rl_byte_oriented: ::std::os::raw::c_int;$/;" v +rl_call_last_kbd_macro lib/readline/macro.c /^rl_call_last_kbd_macro (int count, int ignore)$/;" f typeref:typename:int +rl_call_last_kbd_macro r_readline/src/lib.rs /^ pub fn rl_call_last_kbd_macro($/;" f +rl_callback_handler_install lib/readline/callback.c /^rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *linefunc)$/;" f typeref:typename:void +rl_callback_handler_install r_readline/src/lib.rs /^ pub fn rl_callback_handler_install(arg1: *const ::std::os::raw::c_char, arg2: rl_vcpfunc_t);$/;" f +rl_callback_handler_remove lib/readline/callback.c /^rl_callback_handler_remove (void)$/;" f typeref:typename:void +rl_callback_handler_remove r_readline/src/lib.rs /^ pub fn rl_callback_handler_remove();$/;" f +rl_callback_read_char lib/readline/callback.c /^rl_callback_read_char (void)$/;" f typeref:typename:void +rl_callback_read_char r_readline/src/lib.rs /^ pub fn rl_callback_read_char();$/;" f +rl_callback_sigcleanup lib/readline/callback.c /^rl_callback_sigcleanup (void)$/;" f typeref:typename:void +rl_callback_sigcleanup r_readline/src/lib.rs /^ pub fn rl_callback_sigcleanup();$/;" f +rl_capitalize_word lib/readline/text.c /^rl_capitalize_word (int count, int key)$/;" f typeref:typename:int +rl_capitalize_word r_readline/src/lib.rs /^ pub fn rl_capitalize_word($/;" f +rl_catch_signals lib/readline/signals.c /^int rl_catch_signals = 1;$/;" v typeref:typename:int +rl_catch_signals r_readline/src/lib.rs /^ pub static mut rl_catch_signals: ::std::os::raw::c_int;$/;" v +rl_catch_sigwinch lib/readline/signals.c /^int rl_catch_sigwinch = 0; \/* for the readline state struct in readline.c *\/$/;" v typeref:typename:int +rl_catch_sigwinch lib/readline/signals.c /^int rl_catch_sigwinch = 1;$/;" v typeref:typename:int +rl_catch_sigwinch r_readline/src/lib.rs /^ pub static mut rl_catch_sigwinch: ::std::os::raw::c_int;$/;" v +rl_change_case lib/readline/text.c /^rl_change_case (int count, int op)$/;" f typeref:typename:int file: +rl_change_environment lib/readline/terminal.c /^int rl_change_environment = 1;$/;" v typeref:typename:int +rl_change_environment r_readline/src/lib.rs /^ pub static mut rl_change_environment: ::std::os::raw::c_int;$/;" v +rl_char_is_quoted_p lib/readline/complete.c /^rl_linebuf_func_t *rl_char_is_quoted_p = (rl_linebuf_func_t *)NULL;$/;" v typeref:typename:rl_linebuf_func_t * +rl_char_is_quoted_p r_readline/src/lib.rs /^ pub static mut rl_char_is_quoted_p: rl_linebuf_func_t;$/;" v +rl_char_search lib/readline/text.c /^rl_char_search (int count, int key)$/;" f typeref:typename:int +rl_char_search r_readline/src/lib.rs /^ pub fn rl_char_search($/;" f +rl_character_len lib/readline/display.c /^rl_character_len (int c, int pos)$/;" f typeref:typename:int +rl_character_len r_readline/src/lib.rs /^ pub fn rl_character_len($/;" f +rl_check_signals lib/readline/signals.c /^rl_check_signals (void)$/;" f typeref:typename:void +rl_check_signals r_readline/src/lib.rs /^ pub fn rl_check_signals();$/;" f +rl_cleanup_after_signal lib/readline/signals.c /^rl_cleanup_after_signal (void)$/;" f typeref:typename:void +rl_cleanup_after_signal r_readline/src/lib.rs /^ pub fn rl_cleanup_after_signal();$/;" f +rl_clear_display lib/readline/text.c /^rl_clear_display (int count, int key)$/;" f typeref:typename:int +rl_clear_display r_readline/src/lib.rs /^ pub fn rl_clear_display($/;" f +rl_clear_history lib/readline/misc.c /^rl_clear_history (void)$/;" f typeref:typename:void +rl_clear_history r_readline/src/lib.rs /^ pub fn rl_clear_history();$/;" f +rl_clear_message lib/readline/display.c /^rl_clear_message (void)$/;" f typeref:typename:int +rl_clear_message r_readline/src/lib.rs /^ pub fn rl_clear_message() -> ::std::os::raw::c_int;$/;" f +rl_clear_pending_input lib/readline/input.c /^rl_clear_pending_input (void)$/;" f typeref:typename:int +rl_clear_pending_input r_readline/src/lib.rs /^ pub fn rl_clear_pending_input() -> ::std::os::raw::c_int;$/;" f +rl_clear_screen lib/readline/text.c /^rl_clear_screen (int count, int key)$/;" f typeref:typename:int +rl_clear_screen r_readline/src/lib.rs /^ pub fn rl_clear_screen($/;" f +rl_clear_signals lib/readline/signals.c /^rl_clear_signals (void)$/;" f typeref:typename:int +rl_clear_signals r_readline/src/lib.rs /^ pub fn rl_clear_signals() -> ::std::os::raw::c_int;$/;" f +rl_clear_visible_line lib/readline/display.c /^rl_clear_visible_line (void)$/;" f typeref:typename:int +rl_clear_visible_line r_readline/src/lib.rs /^ pub fn rl_clear_visible_line() -> ::std::os::raw::c_int;$/;" f +rl_command_func_t builtins_rust/bind/src/lib.rs /^type rl_command_func_t = extern "C" fn(c_int, c_int) -> c_int;$/;" t +rl_command_func_t builtins_rust/read/src/intercdep.rs /^pub type rl_command_func_t = unsafe extern "C" fn(c_int, c_int) -> c_int;$/;" t +rl_command_func_t r_readline/src/lib.rs /^pub type rl_command_func_t = ::core::option::Option<$/;" t +rl_compdisp_func_t r_readline/src/lib.rs /^pub type rl_compdisp_func_t = ::core::option::Option<$/;" t +rl_compentry_func_t r_readline/src/lib.rs /^pub type rl_compentry_func_t = ::core::option::Option<$/;" t +rl_compignore_func_t r_readline/src/lib.rs /^pub type rl_compignore_func_t = ::core::option::Option<$/;" t +rl_complete lib/readline/complete.c /^rl_complete (int ignore, int invoking_key)$/;" f typeref:typename:int +rl_complete r_readline/src/lib.rs /^ pub fn rl_complete($/;" f +rl_complete_internal lib/readline/complete.c /^rl_complete_internal (int what_to_do)$/;" f typeref:typename:int +rl_complete_internal r_readline/src/lib.rs /^ pub fn rl_complete_internal(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +rl_complete_with_tilde_expansion lib/readline/complete.c /^int rl_complete_with_tilde_expansion = 0;$/;" v typeref:typename:int +rl_complete_with_tilde_expansion r_readline/src/lib.rs /^ pub static mut rl_complete_with_tilde_expansion: ::std::os::raw::c_int;$/;" v +rl_completer_quote_characters lib/readline/complete.c /^const char *rl_completer_quote_characters = (const char *)NULL;$/;" v typeref:typename:const char * +rl_completer_quote_characters r_readline/src/lib.rs /^ pub static mut rl_completer_quote_characters: *const ::std::os::raw::c_char;$/;" v +rl_completer_word_break_characters lib/readline/complete.c /^\/*const*\/ char *rl_completer_word_break_characters = (\/*const*\/ char *)NULL;$/;" v typeref:typename:char * +rl_completer_word_break_characters r_readline/src/lib.rs /^ pub static mut rl_completer_word_break_characters: *mut ::std::os::raw::c_char;$/;" v +rl_completion_append_character lib/readline/complete.c /^int rl_completion_append_character = ' ';$/;" v typeref:typename:int +rl_completion_append_character r_readline/src/lib.rs /^ pub static mut rl_completion_append_character: ::std::os::raw::c_int;$/;" v +rl_completion_display_matches_hook lib/readline/complete.c /^rl_compdisp_func_t *rl_completion_display_matches_hook = (rl_compdisp_func_t *)NULL;$/;" v typeref:typename:rl_compdisp_func_t * +rl_completion_display_matches_hook r_readline/src/lib.rs /^ pub static mut rl_completion_display_matches_hook: rl_compdisp_func_t;$/;" v +rl_completion_entry_function lib/readline/complete.c /^rl_compentry_func_t *rl_completion_entry_function = (rl_compentry_func_t *)NULL;$/;" v typeref:typename:rl_compentry_func_t * +rl_completion_entry_function r_readline/src/lib.rs /^ pub static mut rl_completion_entry_function: rl_compentry_func_t;$/;" v +rl_completion_found_quote lib/readline/complete.c /^int rl_completion_found_quote;$/;" v typeref:typename:int +rl_completion_found_quote r_readline/src/lib.rs /^ pub static mut rl_completion_found_quote: ::std::os::raw::c_int;$/;" v +rl_completion_func_t builtins_rust/read/src/intercdep.rs /^pub type rl_completion_func_t = fn(args1 : *const c_char, args2 : c_int) -> *mut *mut c_char;$/;" t +rl_completion_func_t r_readline/src/lib.rs /^pub type rl_completion_func_t = ::core::option::Option<$/;" t +rl_completion_invoking_key lib/readline/complete.c /^int rl_completion_invoking_key;$/;" v typeref:typename:int +rl_completion_invoking_key r_readline/src/lib.rs /^ pub static mut rl_completion_invoking_key: ::std::os::raw::c_int;$/;" v +rl_completion_mark_symlink_dirs lib/readline/complete.c /^int rl_completion_mark_symlink_dirs;$/;" v typeref:typename:int +rl_completion_mark_symlink_dirs r_readline/src/lib.rs /^ pub static mut rl_completion_mark_symlink_dirs: ::std::os::raw::c_int;$/;" v +rl_completion_matches builtins_rust/complete/src/lib.rs /^ fn rl_completion_matches($/;" f +rl_completion_matches lib/readline/complete.c /^rl_completion_matches (const char *text, rl_compentry_func_t *entry_function)$/;" f typeref:typename:char ** +rl_completion_matches r_readline/src/lib.rs /^ pub fn rl_completion_matches($/;" f +rl_completion_mode lib/readline/complete.c /^rl_completion_mode (rl_command_func_t *cfunc)$/;" f typeref:typename:int +rl_completion_mode r_readline/src/lib.rs /^ pub fn rl_completion_mode(arg1: rl_command_func_t) -> ::std::os::raw::c_int;$/;" f +rl_completion_query_items lib/readline/complete.c /^int rl_completion_query_items = 100;$/;" v typeref:typename:int +rl_completion_query_items r_readline/src/lib.rs /^ pub static mut rl_completion_query_items: ::std::os::raw::c_int;$/;" v +rl_completion_quote_character lib/readline/complete.c /^int rl_completion_quote_character;$/;" v typeref:typename:int +rl_completion_quote_character r_readline/src/lib.rs /^ pub static mut rl_completion_quote_character: ::std::os::raw::c_int;$/;" v +rl_completion_suppress_append lib/readline/complete.c /^int rl_completion_suppress_append = 0;$/;" v typeref:typename:int +rl_completion_suppress_append r_readline/src/lib.rs /^ pub static mut rl_completion_suppress_append: ::std::os::raw::c_int;$/;" v +rl_completion_suppress_quote lib/readline/complete.c /^int rl_completion_suppress_quote = 0;$/;" v typeref:typename:int +rl_completion_suppress_quote r_readline/src/lib.rs /^ pub static mut rl_completion_suppress_quote: ::std::os::raw::c_int;$/;" v +rl_completion_type lib/readline/complete.c /^int rl_completion_type = 0;$/;" v typeref:typename:int +rl_completion_type r_readline/src/lib.rs /^ pub static mut rl_completion_type: ::std::os::raw::c_int;$/;" v +rl_completion_word_break_hook lib/readline/complete.c /^rl_cpvfunc_t *rl_completion_word_break_hook = (rl_cpvfunc_t *)NULL;$/;" v typeref:typename:rl_cpvfunc_t * +rl_completion_word_break_hook r_readline/src/lib.rs /^ pub static mut rl_completion_word_break_hook: rl_cpvfunc_t;$/;" v +rl_copy_backward_word lib/readline/kill.c /^rl_copy_backward_word (int count, int key)$/;" f typeref:typename:int +rl_copy_backward_word r_readline/src/lib.rs /^ pub fn rl_copy_backward_word($/;" f +rl_copy_forward_word lib/readline/kill.c /^rl_copy_forward_word (int count, int key)$/;" f typeref:typename:int +rl_copy_forward_word r_readline/src/lib.rs /^ pub fn rl_copy_forward_word($/;" f +rl_copy_keymap lib/readline/keymaps.c /^rl_copy_keymap (Keymap map)$/;" f typeref:typename:Keymap +rl_copy_keymap r_readline/src/lib.rs /^ pub fn rl_copy_keymap(arg1: Keymap) -> Keymap;$/;" f +rl_copy_region_to_kill lib/readline/kill.c /^rl_copy_region_to_kill (int count, int key)$/;" f typeref:typename:int +rl_copy_region_to_kill r_readline/src/lib.rs /^ pub fn rl_copy_region_to_kill($/;" f +rl_copy_text lib/readline/util.c /^rl_copy_text (int from, int to)$/;" f typeref:typename:char * +rl_copy_text r_readline/src/lib.rs /^ pub fn rl_copy_text($/;" f +rl_cpcpfunc_t r_readline/src/lib.rs /^pub type rl_cpcpfunc_t = ::core::option::Option<$/;" t +rl_cpcppfunc_t r_readline/src/lib.rs /^pub type rl_cpcppfunc_t = ::core::option::Option<$/;" t +rl_cpifunc_t r_readline/src/lib.rs /^pub type rl_cpifunc_t = ::core::option::Option<$/;" t +rl_cpvfunc_t r_readline/src/lib.rs /^pub type rl_cpvfunc_t =$/;" t +rl_crlf lib/readline/terminal.c /^rl_crlf (void)$/;" f typeref:typename:int +rl_crlf r_readline/src/lib.rs /^ pub fn rl_crlf() -> ::std::os::raw::c_int;$/;" f +rl_deactivate_mark lib/readline/text.c /^rl_deactivate_mark (void)$/;" f typeref:typename:void +rl_deactivate_mark r_readline/src/lib.rs /^ pub fn rl_deactivate_mark();$/;" f +rl_delete lib/readline/text.c /^rl_delete (int count, int key)$/;" f typeref:typename:int +rl_delete r_readline/src/lib.rs /^ pub fn rl_delete($/;" f +rl_delete_horizontal_space lib/readline/text.c /^rl_delete_horizontal_space (int count, int ignore)$/;" f typeref:typename:int +rl_delete_horizontal_space r_readline/src/lib.rs /^ pub fn rl_delete_horizontal_space($/;" f +rl_delete_or_show_completions lib/readline/text.c /^rl_delete_or_show_completions (int count, int key)$/;" f typeref:typename:int +rl_delete_or_show_completions r_readline/src/lib.rs /^ pub fn rl_delete_or_show_completions($/;" f +rl_delete_text lib/readline/text.c /^rl_delete_text (int from, int to)$/;" f typeref:typename:int +rl_delete_text r_readline/src/lib.rs /^ pub fn rl_delete_text($/;" f +rl_deprep_term_function lib/readline/rltty.c /^rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal;$/;" v typeref:typename:rl_voidfunc_t * +rl_deprep_term_function r_readline/src/lib.rs /^ pub static mut rl_deprep_term_function: rl_voidfunc_t;$/;" v +rl_deprep_terminal lib/readline/rltty.c /^rl_deprep_terminal (void)$/;" f typeref:typename:void +rl_deprep_terminal r_readline/src/lib.rs /^ pub fn rl_deprep_terminal();$/;" f +rl_dequote_func_t r_readline/src/lib.rs /^pub type rl_dequote_func_t = ::core::option::Option<$/;" t +rl_digit_argument lib/readline/misc.c /^rl_digit_argument (int ignore, int key)$/;" f typeref:typename:int +rl_digit_argument r_readline/src/lib.rs /^ pub fn rl_digit_argument($/;" f +rl_digit_loop lib/readline/misc.c /^rl_digit_loop (void)$/;" f typeref:typename:int file: +rl_digit_loop1 lib/readline/vi_mode.c /^rl_digit_loop1 (void)$/;" f typeref:typename:int file: +rl_ding lib/readline/terminal.c /^rl_ding (void)$/;" f typeref:typename:int +rl_ding r_readline/src/lib.rs /^ pub fn rl_ding() -> ::std::os::raw::c_int;$/;" f +rl_directory_completion_hook lib/readline/complete.c /^rl_icppfunc_t *rl_directory_completion_hook = (rl_icppfunc_t *)NULL;$/;" v typeref:typename:rl_icppfunc_t * +rl_directory_completion_hook r_readline/src/lib.rs /^ pub static mut rl_directory_completion_hook: rl_icppfunc_t;$/;" v +rl_directory_rewrite_hook lib/readline/complete.c /^rl_icppfunc_t *rl_directory_rewrite_hook = (rl_icppfunc_t *)NULL;$/;" v typeref:typename:rl_icppfunc_t * +rl_directory_rewrite_hook r_readline/src/lib.rs /^ pub static mut rl_directory_rewrite_hook: rl_icppfunc_t;$/;" v +rl_discard_argument lib/readline/misc.c /^rl_discard_argument (void)$/;" f typeref:typename:int +rl_discard_argument r_readline/src/lib.rs /^ pub fn rl_discard_argument() -> ::std::os::raw::c_int;$/;" f +rl_discard_keymap lib/readline/keymaps.c /^rl_discard_keymap (Keymap map)$/;" f typeref:typename:void +rl_discard_keymap r_readline/src/lib.rs /^ pub fn rl_discard_keymap(arg1: Keymap);$/;" f +rl_dispatching lib/readline/readline.c /^int rl_dispatching;$/;" v typeref:typename:int +rl_dispatching r_bashhist/src/lib.rs /^ static mut rl_dispatching: c_int;$/;" v +rl_dispatching r_readline/src/lib.rs /^ pub static mut rl_dispatching: ::std::os::raw::c_int;$/;" v +rl_display_fixed lib/readline/display.c /^int rl_display_fixed = 0;$/;" v typeref:typename:int +rl_display_fixed r_readline/src/lib.rs /^ pub static mut rl_display_fixed: ::std::os::raw::c_int;$/;" v +rl_display_match_list lib/readline/complete.c /^rl_display_match_list (char **matches, int len, int max)$/;" f typeref:typename:void +rl_display_match_list r_readline/src/lib.rs /^ pub fn rl_display_match_list($/;" f +rl_display_prompt lib/readline/display.c /^char *rl_display_prompt = (char *)NULL;$/;" v typeref:typename:char * +rl_display_prompt r_readline/src/lib.rs /^ pub static mut rl_display_prompt: *mut ::std::os::raw::c_char;$/;" v +rl_display_search lib/readline/isearch.c /^rl_display_search (char *search_string, int flags, int where)$/;" f typeref:typename:void file: +rl_do_lowercase_version lib/readline/text.c /^rl_do_lowercase_version (int ignore1, int ignore2)$/;" f typeref:typename:int +rl_do_lowercase_version r_readline/src/lib.rs /^ pub fn rl_do_lowercase_version($/;" f +rl_do_undo lib/readline/undo.c /^rl_do_undo (void)$/;" f typeref:typename:int +rl_do_undo r_readline/src/lib.rs /^ pub fn rl_do_undo() -> ::std::os::raw::c_int;$/;" f +rl_domove_motion_callback lib/readline/vi_mode.c /^rl_domove_motion_callback (_rl_vimotion_cxt *m)$/;" f typeref:typename:int file: +rl_domove_read_callback lib/readline/vi_mode.c /^rl_domove_read_callback (_rl_vimotion_cxt *m)$/;" f typeref:typename:int file: +rl_done lib/readline/readline.c /^int rl_done;$/;" v typeref:typename:int +rl_done r_bashhist/src/lib.rs /^ static mut rl_done: c_int;$/;" v +rl_done r_readline/src/lib.rs /^ pub static mut rl_done: ::std::os::raw::c_int;$/;" v +rl_downcase_word lib/readline/text.c /^rl_downcase_word (int count, int key)$/;" f typeref:typename:int +rl_downcase_word r_readline/src/lib.rs /^ pub fn rl_downcase_word($/;" f +rl_dump_functions lib/readline/bind.c /^rl_dump_functions (int count, int key)$/;" f typeref:typename:int +rl_dump_functions r_readline/src/lib.rs /^ pub fn rl_dump_functions($/;" f +rl_dump_macros lib/readline/bind.c /^rl_dump_macros (int count, int key)$/;" f typeref:typename:int +rl_dump_macros r_readline/src/lib.rs /^ pub fn rl_dump_macros($/;" f +rl_dump_variables lib/readline/bind.c /^rl_dump_variables (int count, int key)$/;" f typeref:typename:int +rl_dump_variables r_readline/src/lib.rs /^ pub fn rl_dump_variables($/;" f +rl_echo_signal_char lib/readline/signals.c /^rl_echo_signal_char (int sig)$/;" f typeref:typename:void +rl_echo_signal_char r_readline/src/lib.rs /^ pub fn rl_echo_signal_char(arg1: ::std::os::raw::c_int);$/;" f +rl_editing_mode builtins_rust/set/src/lib.rs /^ static mut rl_editing_mode: i32;$/;" v +rl_editing_mode lib/readline/readline.c /^int rl_editing_mode = emacs_mode;$/;" v typeref:typename:int +rl_editing_mode r_readline/src/lib.rs /^ pub static mut rl_editing_mode: ::std::os::raw::c_int;$/;" v +rl_emacs_editing_mode lib/readline/misc.c /^rl_emacs_editing_mode (int count, int key)$/;" f typeref:typename:int +rl_emacs_editing_mode r_readline/src/lib.rs /^ pub fn rl_emacs_editing_mode($/;" f +rl_empty_keymap lib/readline/keymaps.c /^rl_empty_keymap (Keymap keymap)$/;" f typeref:typename:int +rl_empty_keymap r_readline/src/lib.rs /^ pub fn rl_empty_keymap(arg1: Keymap) -> ::std::os::raw::c_int;$/;" f +rl_end lib/readline/readline.c /^int rl_end;$/;" v typeref:typename:int +rl_end r_readline/src/lib.rs /^ pub static mut rl_end: ::std::os::raw::c_int;$/;" v +rl_end_kbd_macro lib/readline/macro.c /^rl_end_kbd_macro (int count, int ignore)$/;" f typeref:typename:int +rl_end_kbd_macro r_readline/src/lib.rs /^ pub fn rl_end_kbd_macro($/;" f +rl_end_of_history lib/readline/misc.c /^rl_end_of_history (int count, int key)$/;" f typeref:typename:int +rl_end_of_history r_readline/src/lib.rs /^ pub fn rl_end_of_history($/;" f +rl_end_of_line lib/readline/text.c /^rl_end_of_line (int count, int key)$/;" f typeref:typename:int +rl_end_of_line r_readline/src/lib.rs /^ pub fn rl_end_of_line($/;" f +rl_end_undo_group lib/readline/undo.c /^rl_end_undo_group (void)$/;" f typeref:typename:int +rl_end_undo_group r_readline/src/lib.rs /^ pub fn rl_end_undo_group() -> ::std::os::raw::c_int;$/;" f +rl_erase_empty_line lib/readline/readline.c /^int rl_erase_empty_line = 0;$/;" v typeref:typename:int +rl_erase_empty_line r_readline/src/lib.rs /^ pub static mut rl_erase_empty_line: ::std::os::raw::c_int;$/;" v +rl_event_hook lib/readline/input.c /^rl_hook_func_t *rl_event_hook = (rl_hook_func_t *)NULL;$/;" v typeref:typename:rl_hook_func_t * +rl_event_hook r_readline/src/lib.rs /^ pub static mut rl_event_hook: rl_hook_func_t;$/;" v +rl_exchange_point_and_mark lib/readline/text.c /^rl_exchange_point_and_mark (int count, int key)$/;" f typeref:typename:int +rl_exchange_point_and_mark r_readline/src/lib.rs /^ pub fn rl_exchange_point_and_mark($/;" f +rl_execute_next lib/readline/input.c /^rl_execute_next (int c)$/;" f typeref:typename:int +rl_execute_next r_readline/src/lib.rs /^ pub fn rl_execute_next(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +rl_executing_key lib/readline/readline.c /^int rl_executing_key;$/;" v typeref:typename:int +rl_executing_key r_readline/src/lib.rs /^ pub static mut rl_executing_key: ::std::os::raw::c_int;$/;" v +rl_executing_keymap lib/readline/readline.c /^Keymap rl_executing_keymap;$/;" v typeref:typename:Keymap +rl_executing_keymap r_readline/src/lib.rs /^ pub static mut rl_executing_keymap: Keymap;$/;" v +rl_executing_keyseq lib/readline/readline.c /^char *rl_executing_keyseq = 0;$/;" v typeref:typename:char * +rl_executing_keyseq r_readline/src/lib.rs /^ pub static mut rl_executing_keyseq: *mut ::std::os::raw::c_char;$/;" v +rl_executing_macro lib/readline/macro.c /^char *rl_executing_macro = (char *)NULL;$/;" v typeref:typename:char * +rl_executing_macro r_readline/src/lib.rs /^ pub static mut rl_executing_macro: *mut ::std::os::raw::c_char;$/;" v +rl_expand_prompt lib/readline/display.c /^rl_expand_prompt (char *prompt)$/;" f typeref:typename:int +rl_expand_prompt r_readline/src/lib.rs /^ pub fn rl_expand_prompt(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rl_explicit_arg lib/readline/readline.c /^int rl_explicit_arg = 0;$/;" v typeref:typename:int +rl_explicit_arg r_readline/src/lib.rs /^ pub static mut rl_explicit_arg: ::std::os::raw::c_int;$/;" v +rl_extend_line_buffer lib/readline/util.c /^rl_extend_line_buffer (int len)$/;" f typeref:typename:void +rl_extend_line_buffer r_readline/src/lib.rs /^ pub fn rl_extend_line_buffer(arg1: ::std::os::raw::c_int);$/;" f +rl_filename_completion_desired lib/readline/complete.c /^int rl_filename_completion_desired = 0;$/;" v typeref:typename:int +rl_filename_completion_desired r_readline/src/lib.rs /^ pub static mut rl_filename_completion_desired: ::std::os::raw::c_int;$/;" v +rl_filename_completion_function builtins_rust/complete/src/lib.rs /^ fn rl_filename_completion_function(text: *const c_char, state: i32) -> *mut c_char;$/;" f +rl_filename_completion_function lib/readline/complete.c /^rl_filename_completion_function (const char *text, int state)$/;" f typeref:typename:char * +rl_filename_completion_function r_readline/src/lib.rs /^ pub fn rl_filename_completion_function($/;" f +rl_filename_dequoting_function lib/readline/complete.c /^rl_dequote_func_t *rl_filename_dequoting_function = (rl_dequote_func_t *)NULL;$/;" v typeref:typename:rl_dequote_func_t * +rl_filename_dequoting_function r_readline/src/lib.rs /^ pub static mut rl_filename_dequoting_function: rl_dequote_func_t;$/;" v +rl_filename_quote_characters lib/readline/complete.c /^const char *rl_filename_quote_characters = (const char *)NULL;$/;" v typeref:typename:const char * +rl_filename_quote_characters r_readline/src/lib.rs /^ pub static mut rl_filename_quote_characters: *const ::std::os::raw::c_char;$/;" v +rl_filename_quoting_desired lib/readline/complete.c /^int rl_filename_quoting_desired = 1;$/;" v typeref:typename:int +rl_filename_quoting_desired r_readline/src/lib.rs /^ pub static mut rl_filename_quoting_desired: ::std::os::raw::c_int;$/;" v +rl_filename_quoting_function lib/readline/complete.c /^rl_quote_func_t *rl_filename_quoting_function = rl_quote_filename;$/;" v typeref:typename:rl_quote_func_t * +rl_filename_quoting_function r_readline/src/lib.rs /^ pub static mut rl_filename_quoting_function: rl_quote_func_t;$/;" v +rl_filename_rewrite_hook lib/readline/complete.c /^rl_dequote_func_t *rl_filename_rewrite_hook = (rl_dequote_func_t *)NULL;$/;" v typeref:typename:rl_dequote_func_t * +rl_filename_rewrite_hook r_readline/src/lib.rs /^ pub static mut rl_filename_rewrite_hook: rl_dequote_func_t;$/;" v +rl_filename_stat_hook lib/readline/complete.c /^rl_icppfunc_t *rl_filename_stat_hook = (rl_icppfunc_t *)NULL;$/;" v typeref:typename:rl_icppfunc_t * +rl_filename_stat_hook r_readline/src/lib.rs /^ pub static mut rl_filename_stat_hook: rl_icppfunc_t;$/;" v +rl_forced_update_display lib/readline/display.c /^rl_forced_update_display (void)$/;" f typeref:typename:int +rl_forced_update_display r_readline/src/lib.rs /^ pub fn rl_forced_update_display() -> ::std::os::raw::c_int;$/;" f +rl_forward lib/readline/text.c /^rl_forward (int count, int key)$/;" f typeref:typename:int +rl_forward r_readline/src/lib.rs /^ pub fn rl_forward($/;" f +rl_forward_byte lib/readline/text.c /^rl_forward_byte (int count, int key)$/;" f typeref:typename:int +rl_forward_byte r_readline/src/lib.rs /^ pub fn rl_forward_byte($/;" f +rl_forward_char lib/readline/text.c /^rl_forward_char (int count, int key)$/;" f typeref:typename:int +rl_forward_char r_readline/src/lib.rs /^ pub fn rl_forward_char($/;" f +rl_forward_search_history lib/readline/isearch.c /^rl_forward_search_history (int sign, int key)$/;" f typeref:typename:int +rl_forward_search_history r_readline/src/lib.rs /^ pub fn rl_forward_search_history($/;" f +rl_forward_word lib/readline/text.c /^rl_forward_word (int count, int key)$/;" f typeref:typename:int +rl_forward_word r_readline/src/lib.rs /^ pub fn rl_forward_word($/;" f +rl_free r_readline/src/lib.rs /^ pub fn rl_free(arg1: *mut ::std::os::raw::c_void);$/;" f +rl_free_keymap lib/readline/keymaps.c /^rl_free_keymap (Keymap map)$/;" f typeref:typename:void +rl_free_keymap r_readline/src/lib.rs /^ pub fn rl_free_keymap(arg1: Keymap);$/;" f +rl_free_line_state lib/readline/signals.c /^rl_free_line_state (void)$/;" f typeref:typename:void +rl_free_line_state r_readline/src/lib.rs /^ pub fn rl_free_line_state();$/;" f +rl_free_undo_list lib/readline/undo.c /^rl_free_undo_list (void)$/;" f typeref:typename:void +rl_free_undo_list r_readline/src/lib.rs /^ pub fn rl_free_undo_list();$/;" f +rl_function_dumper builtins_rust/bind/src/lib.rs /^ fn rl_function_dumper(print_readably: i32);$/;" f +rl_function_dumper lib/readline/bind.c /^rl_function_dumper (int print_readably)$/;" f typeref:typename:void +rl_function_dumper r_readline/src/lib.rs /^ pub fn rl_function_dumper(arg1: ::std::os::raw::c_int);$/;" f +rl_function_of_keyseq lib/readline/bind.c /^rl_function_of_keyseq (const char *keyseq, Keymap map, int *type)$/;" f typeref:typename:rl_command_func_t * +rl_function_of_keyseq r_readline/src/lib.rs /^ pub fn rl_function_of_keyseq($/;" f +rl_function_of_keyseq_len builtins_rust/bind/src/lib.rs /^ fn rl_function_of_keyseq_len($/;" f +rl_function_of_keyseq_len lib/readline/bind.c /^rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type)$/;" f typeref:typename:rl_command_func_t * +rl_function_of_keyseq_len r_readline/src/lib.rs /^ pub fn rl_function_of_keyseq_len($/;" f +rl_funmap_names lib/readline/funmap.c /^rl_funmap_names (void)$/;" f typeref:typename:const char ** +rl_funmap_names r_readline/src/lib.rs /^ pub fn rl_funmap_names() -> *mut *const ::std::os::raw::c_char;$/;" f +rl_gather_tyi lib/readline/input.c /^rl_gather_tyi (void)$/;" f typeref:typename:int file: +rl_generic_bind lib/readline/bind.c /^rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)$/;" f typeref:typename:int +rl_generic_bind r_readline/src/lib.rs /^ pub fn rl_generic_bind($/;" f +rl_get_char lib/readline/input.c /^rl_get_char (int *key)$/;" f typeref:typename:int file: +rl_get_keymap builtins_rust/bind/src/lib.rs /^ fn rl_get_keymap() -> Keymap;$/;" f +rl_get_keymap builtins_rust/read/src/intercdep.rs /^ pub fn rl_get_keymap() -> Keymap;$/;" f +rl_get_keymap lib/readline/bind.c /^rl_get_keymap (void)$/;" f typeref:typename:Keymap +rl_get_keymap r_readline/src/lib.rs /^ pub fn rl_get_keymap() -> Keymap;$/;" f +rl_get_keymap_by_name builtins_rust/bind/src/lib.rs /^ fn rl_get_keymap_by_name(name: *const c_char) -> Keymap;$/;" f +rl_get_keymap_by_name lib/readline/bind.c /^rl_get_keymap_by_name (const char *name)$/;" f typeref:typename:Keymap +rl_get_keymap_by_name r_readline/src/lib.rs /^ pub fn rl_get_keymap_by_name(arg1: *const ::std::os::raw::c_char) -> Keymap;$/;" f +rl_get_keymap_name lib/readline/bind.c /^rl_get_keymap_name (Keymap map)$/;" f typeref:typename:char * +rl_get_keymap_name r_readline/src/lib.rs /^ pub fn rl_get_keymap_name(arg1: Keymap) -> *mut ::std::os::raw::c_char;$/;" f +rl_get_keymap_name_from_edit_mode lib/readline/bind.c /^rl_get_keymap_name_from_edit_mode (void)$/;" f typeref:typename:char * +rl_get_keymap_name_from_edit_mode r_readline/src/lib.rs /^ pub fn rl_get_keymap_name_from_edit_mode() -> *mut ::std::os::raw::c_char;$/;" f +rl_get_next_history lib/readline/misc.c /^rl_get_next_history (int count, int key)$/;" f typeref:typename:int +rl_get_next_history r_readline/src/lib.rs /^ pub fn rl_get_next_history($/;" f +rl_get_previous_history lib/readline/misc.c /^rl_get_previous_history (int count, int key)$/;" f typeref:typename:int +rl_get_previous_history r_readline/src/lib.rs /^ pub fn rl_get_previous_history($/;" f +rl_get_screen_size lib/readline/terminal.c /^rl_get_screen_size (int *rows, int *cols)$/;" f typeref:typename:void +rl_get_screen_size r_readline/src/lib.rs /^ pub fn rl_get_screen_size(arg1: *mut ::std::os::raw::c_int, arg2: *mut ::std::os::raw::c_int/;" f +rl_get_termcap lib/readline/terminal.c /^rl_get_termcap (const char *cap)$/;" f typeref:typename:char * +rl_get_termcap r_readline/src/lib.rs /^ pub fn rl_get_termcap(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +rl_getc lib/readline/input.c /^rl_getc (FILE *stream)$/;" f typeref:typename:int +rl_getc r_readline/src/lib.rs /^ pub fn rl_getc(arg1: *mut FILE) -> ::std::os::raw::c_int;$/;" f +rl_getc_func_t r_readline/src/lib.rs /^pub type rl_getc_func_t =$/;" t +rl_getc_function lib/readline/input.c /^rl_getc_func_t *rl_getc_function = rl_getc;$/;" v typeref:typename:rl_getc_func_t * +rl_getc_function r_readline/src/lib.rs /^ pub static mut rl_getc_function: rl_getc_func_t;$/;" v +rl_gets lib/readline/examples/manexamp.c /^rl_gets ()$/;" f typeref:typename:char * +rl_gnu_readline_p lib/readline/readline.c /^int rl_gnu_readline_p = 1;$/;" v typeref:typename:int +rl_gnu_readline_p r_readline/src/lib.rs /^ pub static mut rl_gnu_readline_p: ::std::os::raw::c_int;$/;" v +rl_history_search_backward lib/readline/search.c /^rl_history_search_backward (int count, int ignore)$/;" f typeref:typename:int +rl_history_search_backward r_readline/src/lib.rs /^ pub fn rl_history_search_backward($/;" f +rl_history_search_flags lib/readline/search.c /^static int rl_history_search_flags;$/;" v typeref:typename:int file: +rl_history_search_forward lib/readline/search.c /^rl_history_search_forward (int count, int ignore)$/;" f typeref:typename:int +rl_history_search_forward r_readline/src/lib.rs /^ pub fn rl_history_search_forward($/;" f +rl_history_search_internal lib/readline/search.c /^rl_history_search_internal (int count, int dir)$/;" f typeref:typename:int file: +rl_history_search_len lib/readline/search.c /^static int rl_history_search_len;$/;" v typeref:typename:int file: +rl_history_search_pos lib/readline/search.c /^static int rl_history_search_pos;$/;" v typeref:typename:int file: +rl_history_search_reinit lib/readline/search.c /^rl_history_search_reinit (int flags)$/;" f typeref:typename:void file: +rl_history_substr_search_backward lib/readline/search.c /^rl_history_substr_search_backward (int count, int ignore)$/;" f typeref:typename:int +rl_history_substr_search_backward r_readline/src/lib.rs /^ pub fn rl_history_substr_search_backward($/;" f +rl_history_substr_search_forward lib/readline/search.c /^rl_history_substr_search_forward (int count, int ignore)$/;" f typeref:typename:int +rl_history_substr_search_forward r_readline/src/lib.rs /^ pub fn rl_history_substr_search_forward($/;" f +rl_hook_func_t builtins_rust/read/src/intercdep.rs /^pub type rl_hook_func_t = fn() -> c_int;$/;" t +rl_hook_func_t r_readline/src/lib.rs /^pub type rl_hook_func_t = ::core::option::Option ::std::os::raw::c_int/;" t +rl_icpfunc_t r_readline/src/lib.rs /^pub type rl_icpfunc_t = ::core::option::Option<$/;" t +rl_icppfunc_t r_readline/src/lib.rs /^pub type rl_icppfunc_t = ::core::option::Option<$/;" t +rl_ignore_completion_duplicates lib/readline/complete.c /^int rl_ignore_completion_duplicates = 1;$/;" v typeref:typename:int +rl_ignore_completion_duplicates r_readline/src/lib.rs /^ pub static mut rl_ignore_completion_duplicates: ::std::os::raw::c_int;$/;" v +rl_ignore_some_completions_function lib/readline/complete.c /^rl_compignore_func_t *rl_ignore_some_completions_function = (rl_compignore_func_t *)NULL;$/;" v typeref:typename:rl_compignore_func_t * +rl_ignore_some_completions_function r_readline/src/lib.rs /^ pub static mut rl_ignore_some_completions_function: rl_compignore_func_t;$/;" v +rl_inhibit_completion lib/readline/complete.c /^int rl_inhibit_completion;$/;" v typeref:typename:int +rl_inhibit_completion r_readline/src/lib.rs /^ pub static mut rl_inhibit_completion: ::std::os::raw::c_int;$/;" v +rl_initialize lib/readline/readline.c /^rl_initialize (void)$/;" f typeref:typename:int +rl_initialize r_readline/src/lib.rs /^ pub fn rl_initialize() -> ::std::os::raw::c_int;$/;" f +rl_initialize_funmap lib/readline/funmap.c /^rl_initialize_funmap (void)$/;" f typeref:typename:void +rl_initialize_funmap r_readline/src/lib.rs /^ pub fn rl_initialize_funmap();$/;" f +rl_initialized lib/readline/readline.c /^static int rl_initialized;$/;" v typeref:typename:int file: +rl_input_available_hook lib/readline/input.c /^rl_hook_func_t *rl_input_available_hook = (rl_hook_func_t *)NULL;$/;" v typeref:typename:rl_hook_func_t * +rl_input_available_hook r_readline/src/lib.rs /^ pub static mut rl_input_available_hook: rl_hook_func_t;$/;" v +rl_insert builtins_rust/read/src/intercdep.rs /^ pub fn rl_insert(count: c_int, key: c_int) -> c_int;$/;" f +rl_insert lib/readline/text.c /^rl_insert (int count, int c)$/;" f typeref:typename:int +rl_insert r_readline/src/lib.rs /^ pub fn rl_insert($/;" f +rl_insert_close lib/readline/parens.c /^rl_insert_close (int count, int invoking_key)$/;" f typeref:typename:int +rl_insert_close r_readline/src/lib.rs /^ pub fn rl_insert_close($/;" f +rl_insert_comment lib/readline/text.c /^rl_insert_comment (int count, int key)$/;" f typeref:typename:int +rl_insert_comment r_readline/src/lib.rs /^ pub fn rl_insert_comment($/;" f +rl_insert_completions lib/readline/complete.c /^rl_insert_completions (int ignore, int invoking_key)$/;" f typeref:typename:int +rl_insert_completions r_readline/src/lib.rs /^ pub fn rl_insert_completions($/;" f +rl_insert_mode lib/readline/readline.c /^int rl_insert_mode = RL_IM_DEFAULT;$/;" v typeref:typename:int +rl_insert_mode r_readline/src/lib.rs /^ pub static mut rl_insert_mode: ::std::os::raw::c_int;$/;" v +rl_insert_text builtins_rust/read/src/intercdep.rs /^ pub fn rl_insert_text(p : *const c_char) -> c_int;$/;" f +rl_insert_text lib/readline/text.c /^rl_insert_text (const char *string)$/;" f typeref:typename:int +rl_insert_text r_readline/src/lib.rs /^ pub fn rl_insert_text(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rl_instream builtins_rust/read/src/intercdep.rs /^ pub static mut rl_instream: *mut libc::FILE;$/;" v +rl_instream lib/readline/readline.c /^FILE *rl_instream = (FILE *)NULL;$/;" v typeref:typename:FILE * +rl_instream r_readline/src/lib.rs /^ pub static mut rl_instream: *mut FILE;$/;" v +rl_intfunc_t r_readline/src/lib.rs /^pub type rl_intfunc_t = ::core::option::Option<$/;" t +rl_invoking_keyseqs builtins_rust/bind/src/lib.rs /^ fn rl_invoking_keyseqs(function: *mut rl_command_func_t) -> *mut *mut c_char;$/;" f +rl_invoking_keyseqs lib/readline/bind.c /^rl_invoking_keyseqs (rl_command_func_t *function)$/;" f typeref:typename:char ** +rl_invoking_keyseqs r_readline/src/lib.rs /^ pub fn rl_invoking_keyseqs(arg1: rl_command_func_t) -> *mut *mut ::std::os::raw::c_char;$/;" f +rl_invoking_keyseqs_in_map lib/readline/bind.c /^rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)$/;" f typeref:typename:char ** +rl_invoking_keyseqs_in_map r_readline/src/lib.rs /^ pub fn rl_invoking_keyseqs_in_map($/;" f +rl_ivoidfunc_t lib/readline/rltypedefs.h /^#define rl_ivoidfunc_t /;" d +rl_keep_mark_active lib/readline/text.c /^rl_keep_mark_active (void)$/;" f typeref:typename:void +rl_keep_mark_active r_readline/src/lib.rs /^ pub fn rl_keep_mark_active();$/;" f +rl_key_sequence_length lib/readline/readline.c /^int rl_key_sequence_length = 0;$/;" v typeref:typename:int +rl_key_sequence_length r_readline/src/lib.rs /^ pub static mut rl_key_sequence_length: ::std::os::raw::c_int;$/;" v +rl_kill_full_line lib/readline/kill.c /^rl_kill_full_line (int count, int key)$/;" f typeref:typename:int +rl_kill_full_line r_readline/src/lib.rs /^ pub fn rl_kill_full_line($/;" f +rl_kill_index lib/readline/kill.c /^static int rl_kill_index;$/;" v typeref:typename:int file: +rl_kill_line lib/readline/kill.c /^rl_kill_line (int direction, int key)$/;" f typeref:typename:int +rl_kill_line r_readline/src/lib.rs /^ pub fn rl_kill_line($/;" f +rl_kill_region lib/readline/kill.c /^rl_kill_region (int count, int key)$/;" f typeref:typename:int +rl_kill_region r_readline/src/lib.rs /^ pub fn rl_kill_region($/;" f +rl_kill_ring lib/readline/kill.c /^static char **rl_kill_ring = (char **)NULL;$/;" v typeref:typename:char ** file: +rl_kill_ring_length lib/readline/kill.c /^static int rl_kill_ring_length;$/;" v typeref:typename:int file: +rl_kill_text lib/readline/kill.c /^rl_kill_text (int from, int to)$/;" f typeref:typename:int +rl_kill_text r_readline/src/lib.rs /^ pub fn rl_kill_text($/;" f +rl_kill_word lib/readline/kill.c /^rl_kill_word (int count, int key)$/;" f typeref:typename:int +rl_kill_word r_readline/src/lib.rs /^ pub fn rl_kill_word($/;" f +rl_last_func lib/readline/readline.c /^rl_command_func_t *rl_last_func = (rl_command_func_t *)NULL;$/;" v typeref:typename:rl_command_func_t * +rl_last_func r_readline/src/lib.rs /^ pub static mut rl_last_func: rl_command_func_t;$/;" v +rl_library_version lib/readline/readline.c /^const char *rl_library_version = RL_LIBRARY_VERSION;$/;" v typeref:typename:const char * +rl_library_version r_readline/src/lib.rs /^ pub static mut rl_library_version: *const ::std::os::raw::c_char;$/;" v +rl_line_buffer lib/readline/readline.c /^char *rl_line_buffer = (char *)NULL;$/;" v typeref:typename:char * +rl_line_buffer r_readline/src/lib.rs /^ pub static mut rl_line_buffer: *mut ::std::os::raw::c_char;$/;" v +rl_line_buffer_len lib/readline/readline.c /^int rl_line_buffer_len = 0;$/;" v typeref:typename:int +rl_line_buffer_len r_readline/src/lib.rs /^ pub static mut rl_line_buffer_len: ::std::os::raw::c_int;$/;" v +rl_linebuf_func_t r_bashhist/src/lib.rs /^pub type rl_linebuf_func_t = unsafe extern "C" fn(*mut c_char, c_int) -> c_int;$/;" t +rl_linebuf_func_t r_readline/src/lib.rs /^pub type rl_linebuf_func_t = ::core::option::Option<$/;" t +rl_linefunc lib/readline/callback.c /^rl_vcpfunc_t *rl_linefunc; \/* user callback function *\/$/;" v typeref:typename:rl_vcpfunc_t * +rl_list_funmap_names builtins_rust/bind/src/lib.rs /^ fn rl_list_funmap_names();$/;" f +rl_list_funmap_names lib/readline/bind.c /^rl_list_funmap_names (void)$/;" f typeref:typename:void +rl_list_funmap_names r_readline/src/lib.rs /^ pub fn rl_list_funmap_names();$/;" f +rl_macro_bind lib/readline/bind.c /^rl_macro_bind (const char *keyseq, const char *macro, Keymap map)$/;" f typeref:typename:int +rl_macro_bind r_readline/src/lib.rs /^ pub fn rl_macro_bind($/;" f +rl_macro_dumper builtins_rust/bind/src/lib.rs /^ fn rl_macro_dumper(print_readably: i32);$/;" f +rl_macro_dumper lib/readline/bind.c /^rl_macro_dumper (int print_readably)$/;" f typeref:typename:void +rl_macro_dumper r_readline/src/lib.rs /^ pub fn rl_macro_dumper(arg1: ::std::os::raw::c_int);$/;" f +rl_make_bare_keymap lib/readline/keymaps.c /^rl_make_bare_keymap (void)$/;" f typeref:typename:Keymap +rl_make_bare_keymap r_readline/src/lib.rs /^ pub fn rl_make_bare_keymap() -> Keymap;$/;" f +rl_make_keymap lib/readline/keymaps.c /^rl_make_keymap (void)$/;" f typeref:typename:Keymap +rl_make_keymap r_readline/src/lib.rs /^ pub fn rl_make_keymap() -> Keymap;$/;" f +rl_mark lib/readline/readline.c /^int rl_mark;$/;" v typeref:typename:int +rl_mark r_readline/src/lib.rs /^ pub static mut rl_mark: ::std::os::raw::c_int;$/;" v +rl_mark_active_p lib/readline/text.c /^rl_mark_active_p (void)$/;" f typeref:typename:int +rl_mark_active_p r_readline/src/lib.rs /^ pub fn rl_mark_active_p() -> ::std::os::raw::c_int;$/;" f +rl_max_kills lib/readline/kill.c /^static int rl_max_kills = DEFAULT_MAX_KILLS;$/;" v typeref:typename:int file: +rl_maybe_replace_line lib/readline/misc.c /^rl_maybe_replace_line (void)$/;" f typeref:typename:int +rl_maybe_replace_line r_readline/src/lib.rs /^ pub fn rl_maybe_replace_line() -> ::std::os::raw::c_int;$/;" f +rl_maybe_restore_sighandler lib/readline/signals.c /^rl_maybe_restore_sighandler (int sig, sighandler_cxt *handler)$/;" f typeref:typename:void file: +rl_maybe_save_line lib/readline/misc.c /^rl_maybe_save_line (void)$/;" f typeref:typename:int +rl_maybe_save_line r_readline/src/lib.rs /^ pub fn rl_maybe_save_line() -> ::std::os::raw::c_int;$/;" f +rl_maybe_set_sighandler lib/readline/signals.c /^rl_maybe_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler)$/;" f typeref:typename:void file: +rl_maybe_unsave_line lib/readline/misc.c /^rl_maybe_unsave_line (void)$/;" f typeref:typename:int +rl_maybe_unsave_line r_readline/src/lib.rs /^ pub fn rl_maybe_unsave_line() -> ::std::os::raw::c_int;$/;" f +rl_menu_complete lib/readline/complete.c /^rl_menu_complete (int count, int ignore)$/;" f typeref:typename:int +rl_menu_complete r_readline/src/lib.rs /^ pub fn rl_menu_complete($/;" f +rl_menu_completion_entry_function lib/readline/complete.c /^rl_compentry_func_t *rl_menu_completion_entry_function = (rl_compentry_func_t *)NULL;$/;" v typeref:typename:rl_compentry_func_t * +rl_menu_completion_entry_function r_readline/src/lib.rs /^ pub static mut rl_menu_completion_entry_function: rl_compentry_func_t;$/;" v +rl_message lib/readline/display.c /^rl_message (const char *format, ...)$/;" f typeref:typename:int +rl_message lib/readline/display.c /^rl_message (format, arg1, arg2)$/;" f +rl_message r_readline/src/lib.rs /^ pub fn rl_message(arg1: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;$/;" f +rl_modifying lib/readline/undo.c /^rl_modifying (int start, int end)$/;" f typeref:typename:int +rl_modifying r_readline/src/lib.rs /^ pub fn rl_modifying($/;" f +rl_named_function builtins_rust/bind/src/lib.rs /^ fn rl_named_function(string: *const c_char) -> *mut rl_command_func_t;$/;" f +rl_named_function lib/readline/bind.c /^rl_named_function (const char *string)$/;" f typeref:typename:rl_command_func_t * +rl_named_function r_readline/src/lib.rs /^ pub fn rl_named_function(arg1: *const ::std::os::raw::c_char) -> rl_command_func_t;$/;" f +rl_newline builtins_rust/read/src/intercdep.rs /^ pub fn rl_newline(count: c_int, key: c_int) -> c_int;$/;" f +rl_newline lib/readline/text.c /^rl_newline (int count, int key)$/;" f typeref:typename:int +rl_newline r_readline/src/lib.rs /^ pub fn rl_newline($/;" f +rl_next_screen_line lib/readline/text.c /^rl_next_screen_line (int count, int key)$/;" f typeref:typename:int +rl_next_screen_line r_readline/src/lib.rs /^ pub fn rl_next_screen_line($/;" f +rl_noninc_forward_search lib/readline/search.c /^rl_noninc_forward_search (int count, int key)$/;" f typeref:typename:int +rl_noninc_forward_search r_readline/src/lib.rs /^ pub fn rl_noninc_forward_search($/;" f +rl_noninc_forward_search_again lib/readline/search.c /^rl_noninc_forward_search_again (int count, int key)$/;" f typeref:typename:int +rl_noninc_forward_search_again r_readline/src/lib.rs /^ pub fn rl_noninc_forward_search_again($/;" f +rl_noninc_reverse_search lib/readline/search.c /^rl_noninc_reverse_search (int count, int key)$/;" f typeref:typename:int +rl_noninc_reverse_search r_readline/src/lib.rs /^ pub fn rl_noninc_reverse_search($/;" f +rl_noninc_reverse_search_again lib/readline/search.c /^rl_noninc_reverse_search_again (int count, int key)$/;" f typeref:typename:int +rl_noninc_reverse_search_again r_readline/src/lib.rs /^ pub fn rl_noninc_reverse_search_again($/;" f +rl_num_chars_to_read builtins_rust/read/src/intercdep.rs /^ pub static mut rl_num_chars_to_read: c_int;$/;" v +rl_num_chars_to_read lib/readline/readline.c /^int rl_num_chars_to_read = 0;$/;" v typeref:typename:int +rl_num_chars_to_read r_readline/src/lib.rs /^ pub static mut rl_num_chars_to_read: ::std::os::raw::c_int;$/;" v +rl_numeric_arg lib/readline/readline.c /^int rl_numeric_arg = 1;$/;" v typeref:typename:int +rl_numeric_arg r_readline/src/lib.rs /^ pub static mut rl_numeric_arg: ::std::os::raw::c_int;$/;" v +rl_old_menu_complete lib/readline/complete.c /^rl_old_menu_complete (int count, int invoking_key)$/;" f typeref:typename:int +rl_old_menu_complete r_readline/src/lib.rs /^ pub fn rl_old_menu_complete($/;" f +rl_on_new_line lib/readline/display.c /^rl_on_new_line (void)$/;" f typeref:typename:int +rl_on_new_line r_readline/src/lib.rs /^ pub fn rl_on_new_line() -> ::std::os::raw::c_int;$/;" f +rl_on_new_line_with_prompt lib/readline/display.c /^rl_on_new_line_with_prompt (void)$/;" f typeref:typename:int +rl_on_new_line_with_prompt r_readline/src/lib.rs /^ pub fn rl_on_new_line_with_prompt() -> ::std::os::raw::c_int;$/;" f +rl_operate_and_get_next lib/readline/misc.c /^rl_operate_and_get_next (count, c)$/;" f +rl_operate_and_get_next r_readline/src/lib.rs /^ pub fn rl_operate_and_get_next($/;" f +rl_outstream builtins_rust/bind/src/lib.rs /^ static mut rl_outstream: *mut File;$/;" v +rl_outstream lib/readline/readline.c /^FILE *rl_outstream = (FILE *)NULL;$/;" v typeref:typename:FILE * +rl_outstream r_readline/src/lib.rs /^ pub static mut rl_outstream: *mut FILE;$/;" v +rl_overwrite_mode lib/readline/misc.c /^rl_overwrite_mode (int count, int key)$/;" f typeref:typename:int +rl_overwrite_mode r_readline/src/lib.rs /^ pub fn rl_overwrite_mode($/;" f +rl_parse_and_bind builtins_rust/bind/src/lib.rs /^ fn rl_parse_and_bind(string: *mut c_char) -> i32;$/;" f +rl_parse_and_bind lib/readline/bind.c /^rl_parse_and_bind (char *string)$/;" f typeref:typename:int +rl_parse_and_bind r_readline/src/lib.rs /^ pub fn rl_parse_and_bind(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rl_paste_from_clipboard lib/readline/kill.c /^rl_paste_from_clipboard (int count, int key)$/;" f typeref:typename:int +rl_pending_input lib/readline/readline.c /^int rl_pending_input = 0;$/;" v typeref:typename:int +rl_pending_input r_readline/src/lib.rs /^ pub static mut rl_pending_input: ::std::os::raw::c_int;$/;" v +rl_pending_signal lib/readline/signals.c /^rl_pending_signal (void)$/;" f typeref:typename:int +rl_pending_signal r_readline/src/lib.rs /^ pub fn rl_pending_signal() -> ::std::os::raw::c_int;$/;" f +rl_persistent_signal_handlers lib/readline/callback.c /^int rl_persistent_signal_handlers = 0;$/;" v typeref:typename:int +rl_persistent_signal_handlers r_readline/src/lib.rs /^ pub static mut rl_persistent_signal_handlers: ::std::os::raw::c_int;$/;" v +rl_point lib/readline/readline.c /^int rl_point;$/;" v typeref:typename:int +rl_point r_readline/src/lib.rs /^ pub static mut rl_point: ::std::os::raw::c_int;$/;" v +rl_possible_completions lib/readline/complete.c /^rl_possible_completions (int ignore, int invoking_key)$/;" f typeref:typename:int +rl_possible_completions r_readline/src/lib.rs /^ pub fn rl_possible_completions($/;" f +rl_pre_input_hook lib/readline/readline.c /^rl_hook_func_t *rl_pre_input_hook = (rl_hook_func_t *)NULL;$/;" v typeref:typename:rl_hook_func_t * +rl_pre_input_hook r_readline/src/lib.rs /^ pub static mut rl_pre_input_hook: rl_hook_func_t;$/;" v +rl_prefer_env_winsize lib/readline/terminal.c /^int rl_prefer_env_winsize = 0;$/;" v typeref:typename:int +rl_prefer_env_winsize r_readline/src/lib.rs /^ pub static mut rl_prefer_env_winsize: ::std::os::raw::c_int;$/;" v +rl_prep_term_function lib/readline/rltty.c /^rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal;$/;" v typeref:typename:rl_vintfunc_t * +rl_prep_term_function r_readline/src/lib.rs /^ pub static mut rl_prep_term_function: rl_vintfunc_t;$/;" v +rl_prep_terminal lib/readline/rltty.c /^rl_prep_terminal (int meta_flag)$/;" f typeref:typename:void +rl_prep_terminal r_readline/src/lib.rs /^ pub fn rl_prep_terminal(arg1: ::std::os::raw::c_int);$/;" f +rl_previous_screen_line lib/readline/text.c /^rl_previous_screen_line (int count, int key)$/;" f typeref:typename:int +rl_previous_screen_line r_readline/src/lib.rs /^ pub fn rl_previous_screen_line($/;" f +rl_print_last_kbd_macro lib/readline/macro.c /^rl_print_last_kbd_macro (int count, int ignore)$/;" f typeref:typename:int +rl_print_last_kbd_macro r_readline/src/lib.rs /^ pub fn rl_print_last_kbd_macro($/;" f +rl_prompt lib/readline/readline.c /^char *rl_prompt = (char *)NULL;$/;" v typeref:typename:char * +rl_prompt r_readline/src/lib.rs /^ pub static mut rl_prompt: *mut ::std::os::raw::c_char;$/;" v +rl_push_macro_input lib/readline/macro.c /^rl_push_macro_input (char *macro)$/;" f typeref:typename:void +rl_push_macro_input r_readline/src/lib.rs /^ pub fn rl_push_macro_input(arg1: *mut ::std::os::raw::c_char);$/;" f +rl_quote_filename lib/readline/complete.c /^rl_quote_filename (char *s, int rtype, char *qcp)$/;" f typeref:typename:char * file: +rl_quote_func_t r_readline/src/lib.rs /^pub type rl_quote_func_t = ::core::option::Option<$/;" t +rl_quoted_insert lib/readline/text.c /^rl_quoted_insert (int count, int key)$/;" f typeref:typename:int +rl_quoted_insert r_readline/src/lib.rs /^ pub fn rl_quoted_insert($/;" f +rl_re_read_init_file lib/readline/bind.c /^rl_re_read_init_file (int count, int ignore)$/;" f typeref:typename:int +rl_re_read_init_file r_readline/src/lib.rs /^ pub fn rl_re_read_init_file($/;" f +rl_read_init_file builtins_rust/bind/src/lib.rs /^ fn rl_read_init_file(filename: *const c_char) -> i32;$/;" f +rl_read_init_file lib/readline/bind.c /^rl_read_init_file (const char *filename)$/;" f typeref:typename:int +rl_read_init_file r_readline/src/lib.rs /^ pub fn rl_read_init_file(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rl_read_key lib/readline/input.c /^rl_read_key (void)$/;" f typeref:typename:int +rl_read_key r_readline/src/lib.rs /^ pub fn rl_read_key() -> ::std::os::raw::c_int;$/;" f +rl_readline_name lib/readline/bind.c /^const char *rl_readline_name = "other";$/;" v typeref:typename:const char * +rl_readline_name r_readline/src/lib.rs /^ pub static mut rl_readline_name: *const ::std::os::raw::c_char;$/;" v +rl_readline_state builtins_rust/complete/src/lib.rs /^ static mut rl_readline_state: c_ulong;$/;" v +rl_readline_state lib/readline/readline.c /^unsigned long rl_readline_state = RL_STATE_NONE;$/;" v typeref:typename:unsigned long +rl_readline_state r_jobs/src/lib.rs /^ static mut rl_readline_state: libc::c_ulong;$/;" v +rl_readline_state r_readline/src/lib.rs /^ pub static mut rl_readline_state: ::std::os::raw::c_ulong;$/;" v +rl_readline_version lib/readline/readline.c /^int rl_readline_version = RL_READLINE_VERSION;$/;" v typeref:typename:int +rl_readline_version r_readline/src/lib.rs /^ pub static mut rl_readline_version: ::std::os::raw::c_int;$/;" v +rl_redisplay lib/readline/display.c /^rl_redisplay (void)$/;" f typeref:typename:void +rl_redisplay r_readline/src/lib.rs /^ pub fn rl_redisplay();$/;" f +rl_redisplay_function lib/readline/display.c /^rl_voidfunc_t *rl_redisplay_function = rl_redisplay;$/;" v typeref:typename:rl_voidfunc_t * +rl_redisplay_function r_readline/src/lib.rs /^ pub static mut rl_redisplay_function: rl_voidfunc_t;$/;" v +rl_redraw_prompt_last_line lib/readline/display.c /^rl_redraw_prompt_last_line (void)$/;" f typeref:typename:void +rl_redraw_prompt_last_line r_readline/src/lib.rs /^ pub fn rl_redraw_prompt_last_line();$/;" f +rl_refresh_line lib/readline/text.c /^rl_refresh_line (int ignore1, int ignore2)$/;" f typeref:typename:int +rl_refresh_line r_readline/src/lib.rs /^ pub fn rl_refresh_line($/;" f +rl_replace_from_history lib/readline/misc.c /^rl_replace_from_history (HIST_ENTRY *entry, int flags)$/;" f typeref:typename:void +rl_replace_line lib/readline/text.c /^rl_replace_line (const char *text, int clear_undo)$/;" f typeref:typename:void +rl_replace_line r_readline/src/lib.rs /^ pub fn rl_replace_line(arg1: *const ::std::os::raw::c_char, arg2: ::std::os::raw::c_int);$/;" f +rl_reset_after_signal lib/readline/signals.c /^rl_reset_after_signal (void)$/;" f typeref:typename:void +rl_reset_after_signal r_readline/src/lib.rs /^ pub fn rl_reset_after_signal();$/;" f +rl_reset_line_state lib/readline/display.c /^rl_reset_line_state (void)$/;" f typeref:typename:int +rl_reset_line_state r_readline/src/lib.rs /^ pub fn rl_reset_line_state() -> ::std::os::raw::c_int;$/;" f +rl_reset_screen_size lib/readline/terminal.c /^rl_reset_screen_size (void)$/;" f typeref:typename:void +rl_reset_screen_size r_readline/src/lib.rs /^ pub fn rl_reset_screen_size();$/;" f +rl_reset_terminal lib/readline/terminal.c /^rl_reset_terminal (const char *terminal_name)$/;" f typeref:typename:int +rl_reset_terminal r_readline/src/lib.rs /^ pub fn rl_reset_terminal(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rl_resize_terminal lib/readline/terminal.c /^rl_resize_terminal (void)$/;" f typeref:typename:void +rl_resize_terminal r_readline/src/lib.rs /^ pub fn rl_resize_terminal();$/;" f +rl_restart_output lib/readline/rltty.c /^rl_restart_output (int count, int key)$/;" f typeref:typename:int +rl_restart_output r_readline/src/lib.rs /^ pub fn rl_restart_output($/;" f +rl_restore_prompt lib/readline/display.c /^rl_restore_prompt (void)$/;" f typeref:typename:void +rl_restore_prompt r_readline/src/lib.rs /^ pub fn rl_restore_prompt();$/;" f +rl_restore_state lib/readline/readline.c /^rl_restore_state (struct readline_state *sp)$/;" f typeref:typename:int +rl_restore_state r_readline/src/lib.rs /^ pub fn rl_restore_state(arg1: *mut readline_state) -> ::std::os::raw::c_int;$/;" f +rl_reverse_search_history lib/readline/isearch.c /^rl_reverse_search_history (int sign, int key)$/;" f typeref:typename:int +rl_reverse_search_history r_readline/src/lib.rs /^ pub fn rl_reverse_search_history($/;" f +rl_revert_line lib/readline/undo.c /^rl_revert_line (int count, int key)$/;" f typeref:typename:int +rl_revert_line r_readline/src/lib.rs /^ pub fn rl_revert_line($/;" f +rl_rubout lib/readline/text.c /^rl_rubout (int count, int key)$/;" f typeref:typename:int +rl_rubout r_readline/src/lib.rs /^ pub fn rl_rubout($/;" f +rl_rubout_or_delete lib/readline/text.c /^rl_rubout_or_delete (int count, int key)$/;" f typeref:typename:int +rl_rubout_or_delete r_readline/src/lib.rs /^ pub fn rl_rubout_or_delete($/;" f +rl_save_prompt lib/readline/display.c /^rl_save_prompt (void)$/;" f typeref:typename:void +rl_save_prompt r_readline/src/lib.rs /^ pub fn rl_save_prompt();$/;" f +rl_save_state lib/readline/readline.c /^rl_save_state (struct readline_state *sp)$/;" f typeref:typename:int +rl_save_state r_readline/src/lib.rs /^ pub fn rl_save_state(arg1: *mut readline_state) -> ::std::os::raw::c_int;$/;" f +rl_search_history lib/readline/isearch.c /^rl_search_history (int direction, int invoking_key)$/;" f typeref:typename:int file: +rl_set_key lib/readline/bind.c /^rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map)$/;" f typeref:typename:int +rl_set_key r_readline/src/lib.rs /^ pub fn rl_set_key($/;" f +rl_set_keyboard_input_timeout lib/readline/input.c /^rl_set_keyboard_input_timeout (int u)$/;" f typeref:typename:int +rl_set_keyboard_input_timeout r_readline/src/lib.rs /^ pub fn rl_set_keyboard_input_timeout(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +rl_set_keymap builtins_rust/bind/src/lib.rs /^ fn rl_set_keymap(map: Keymap);$/;" f +rl_set_keymap lib/readline/bind.c /^rl_set_keymap (Keymap map)$/;" f typeref:typename:void +rl_set_keymap r_readline/src/lib.rs /^ pub fn rl_set_keymap(arg1: Keymap);$/;" f +rl_set_keymap_from_edit_mode lib/readline/bind.c /^rl_set_keymap_from_edit_mode (void)$/;" f typeref:typename:void +rl_set_keymap_from_edit_mode r_readline/src/lib.rs /^ pub fn rl_set_keymap_from_edit_mode();$/;" f +rl_set_keymap_name lib/readline/bind.c /^rl_set_keymap_name (const char *name, Keymap map)$/;" f typeref:typename:int +rl_set_keymap_name r_readline/src/lib.rs /^ pub fn rl_set_keymap_name($/;" f +rl_set_mark lib/readline/text.c /^rl_set_mark (int count, int key)$/;" f typeref:typename:int +rl_set_mark r_readline/src/lib.rs /^ pub fn rl_set_mark($/;" f +rl_set_paren_blink_timeout lib/readline/parens.c /^rl_set_paren_blink_timeout (int u)$/;" f typeref:typename:int +rl_set_paren_blink_timeout r_readline/src/lib.rs /^ pub fn rl_set_paren_blink_timeout(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +rl_set_prompt lib/readline/readline.c /^rl_set_prompt (const char *prompt)$/;" f typeref:typename:int +rl_set_prompt r_readline/src/lib.rs /^ pub fn rl_set_prompt(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rl_set_retained_kills lib/readline/kill.c /^rl_set_retained_kills (int num)$/;" f typeref:typename:int +rl_set_retained_kills r_readline/src/lib.rs /^ pub fn rl_set_retained_kills(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +rl_set_screen_size lib/readline/terminal.c /^rl_set_screen_size (int rows, int cols)$/;" f typeref:typename:void +rl_set_screen_size r_readline/src/lib.rs /^ pub fn rl_set_screen_size(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int);$/;" f +rl_set_sighandler lib/readline/signals.c /^rl_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler)$/;" f typeref:typename:SigHandler * file: +rl_set_signals lib/readline/signals.c /^rl_set_signals (void)$/;" f typeref:typename:int +rl_set_signals r_readline/src/lib.rs /^ pub fn rl_set_signals() -> ::std::os::raw::c_int;$/;" f +rl_show_char lib/readline/display.c /^rl_show_char (int c)$/;" f typeref:typename:int +rl_show_char r_readline/src/lib.rs /^ pub fn rl_show_char(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +rl_sigaction lib/readline/signals.c /^# define rl_sigaction(/;" d file: +rl_sigaction lib/readline/signals.c /^rl_sigaction (int sig, sighandler_cxt *nh, sighandler_cxt *oh)$/;" f typeref:typename:int file: +rl_signal_event_hook lib/readline/input.c /^rl_hook_func_t *rl_signal_event_hook = (rl_hook_func_t *)NULL;$/;" v typeref:typename:rl_hook_func_t * +rl_signal_event_hook r_readline/src/lib.rs /^ pub static mut rl_signal_event_hook: rl_hook_func_t;$/;" v +rl_signal_handler lib/readline/signals.c /^rl_signal_handler (int sig)$/;" f typeref:typename:RETSIGTYPE file: +rl_sigwinch_handler lib/readline/signals.c /^rl_sigwinch_handler (int sig)$/;" f typeref:typename:RETSIGTYPE file: +rl_skip_csi_sequence lib/readline/text.c /^rl_skip_csi_sequence (int count, int key)$/;" f typeref:typename:int +rl_skip_csi_sequence r_readline/src/lib.rs /^ pub fn rl_skip_csi_sequence($/;" f +rl_sort_completion_matches lib/readline/complete.c /^int rl_sort_completion_matches = 1;$/;" v typeref:typename:int +rl_sort_completion_matches r_readline/src/lib.rs /^ pub static mut rl_sort_completion_matches: ::std::os::raw::c_int;$/;" v +rl_special_prefixes lib/readline/complete.c /^const char *rl_special_prefixes = (const char *)NULL;$/;" v typeref:typename:const char * +rl_special_prefixes r_readline/src/lib.rs /^ pub static mut rl_special_prefixes: *const ::std::os::raw::c_char;$/;" v +rl_start_kbd_macro lib/readline/macro.c /^rl_start_kbd_macro (int ignore1, int ignore2)$/;" f typeref:typename:int +rl_start_kbd_macro r_readline/src/lib.rs /^ pub fn rl_start_kbd_macro($/;" f +rl_startup_hook builtins_rust/read/src/intercdep.rs /^ pub static mut rl_startup_hook: *mut rl_hook_func_t;$/;" v +rl_startup_hook lib/readline/readline.c /^rl_hook_func_t *rl_startup_hook = (rl_hook_func_t *)NULL;$/;" v typeref:typename:rl_hook_func_t * +rl_startup_hook r_readline/src/lib.rs /^ pub static mut rl_startup_hook: rl_hook_func_t;$/;" v +rl_stop_output lib/readline/rltty.c /^rl_stop_output (int count, int key)$/;" f typeref:typename:int +rl_stop_output r_readline/src/lib.rs /^ pub fn rl_stop_output($/;" f +rl_stuff_char lib/readline/input.c /^rl_stuff_char (int key)$/;" f typeref:typename:int +rl_stuff_char r_readline/src/lib.rs /^ pub fn rl_stuff_char(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +rl_symbolic_link_hook lib/readline/readline.h /^#define rl_symbolic_link_hook /;" d +rl_tab_insert lib/readline/text.c /^rl_tab_insert (int count, int key)$/;" f typeref:typename:int +rl_tab_insert r_readline/src/lib.rs /^ pub fn rl_tab_insert($/;" f +rl_terminal_name lib/readline/readline.c /^const char *rl_terminal_name = (const char *)NULL;$/;" v typeref:typename:const char * +rl_terminal_name r_readline/src/lib.rs /^ pub static mut rl_terminal_name: *const ::std::os::raw::c_char;$/;" v +rl_tilde_expand lib/readline/util.c /^rl_tilde_expand (int ignore, int key)$/;" f typeref:typename:int +rl_tilde_expand r_readline/src/lib.rs /^ pub fn rl_tilde_expand($/;" f +rl_translate_keyseq builtins_rust/bind/src/lib.rs /^ fn rl_translate_keyseq(seq: *const c_char, array: *mut c_char, len: *mut i32) -> i32;$/;" f +rl_translate_keyseq lib/readline/bind.c /^rl_translate_keyseq (const char *seq, char *array, int *len)$/;" f typeref:typename:int +rl_translate_keyseq r_readline/src/lib.rs /^ pub fn rl_translate_keyseq($/;" f +rl_transpose_chars lib/readline/text.c /^rl_transpose_chars (int count, int key)$/;" f typeref:typename:int +rl_transpose_chars r_readline/src/lib.rs /^ pub fn rl_transpose_chars($/;" f +rl_transpose_words lib/readline/text.c /^rl_transpose_words (int count, int key)$/;" f typeref:typename:int +rl_transpose_words r_readline/src/lib.rs /^ pub fn rl_transpose_words($/;" f +rl_tty_set_default_bindings lib/readline/rltty.c /^rl_tty_set_default_bindings (Keymap kmap)$/;" f typeref:typename:void +rl_tty_set_default_bindings r_readline/src/lib.rs /^ pub fn rl_tty_set_default_bindings(arg1: Keymap);$/;" f +rl_tty_set_echoing lib/readline/rltty.c /^rl_tty_set_echoing (int u)$/;" f typeref:typename:int +rl_tty_set_echoing r_readline/src/lib.rs /^ pub fn rl_tty_set_echoing(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +rl_tty_status lib/readline/util.c /^rl_tty_status (int count, int key)$/;" f typeref:typename:int +rl_tty_status r_readline/src/lib.rs /^ pub fn rl_tty_status($/;" f +rl_tty_unset_default_bindings lib/readline/rltty.c /^rl_tty_unset_default_bindings (Keymap kmap)$/;" f typeref:typename:void +rl_tty_unset_default_bindings r_readline/src/lib.rs /^ pub fn rl_tty_unset_default_bindings(arg1: Keymap);$/;" f +rl_unbind_command_in_map lib/readline/bind.c /^rl_unbind_command_in_map (const char *command, Keymap map)$/;" f typeref:typename:int +rl_unbind_command_in_map r_readline/src/lib.rs /^ pub fn rl_unbind_command_in_map($/;" f +rl_unbind_function_in_map builtins_rust/bind/src/lib.rs /^ fn rl_unbind_function_in_map(func: *mut rl_command_func_t, map: Keymap) -> i32;$/;" f +rl_unbind_function_in_map lib/readline/bind.c /^rl_unbind_function_in_map (rl_command_func_t *func, Keymap map)$/;" f typeref:typename:int +rl_unbind_function_in_map r_readline/src/lib.rs /^ pub fn rl_unbind_function_in_map($/;" f +rl_unbind_key lib/readline/bind.c /^rl_unbind_key (int key)$/;" f typeref:typename:int +rl_unbind_key r_readline/src/lib.rs /^ pub fn rl_unbind_key(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +rl_unbind_key_in_map lib/readline/bind.c /^rl_unbind_key_in_map (int key, Keymap map)$/;" f typeref:typename:int +rl_unbind_key_in_map r_readline/src/lib.rs /^ pub fn rl_unbind_key_in_map(arg1: ::std::os::raw::c_int, arg2: Keymap)$/;" f +rl_undo_command lib/readline/undo.c /^rl_undo_command (int count, int key)$/;" f typeref:typename:int +rl_undo_command r_readline/src/lib.rs /^ pub fn rl_undo_command($/;" f +rl_undo_list lib/readline/undo.c /^UNDO_LIST *rl_undo_list = (UNDO_LIST *)NULL;$/;" v typeref:typename:UNDO_LIST * +rl_undo_list r_readline/src/lib.rs /^ pub static mut rl_undo_list: *mut UNDO_LIST;$/;" v +rl_universal_argument lib/readline/misc.c /^rl_universal_argument (int count, int key)$/;" f typeref:typename:int +rl_universal_argument r_readline/src/lib.rs /^ pub fn rl_universal_argument($/;" f +rl_unix_filename_rubout lib/readline/kill.c /^rl_unix_filename_rubout (int count, int key)$/;" f typeref:typename:int +rl_unix_filename_rubout r_readline/src/lib.rs /^ pub fn rl_unix_filename_rubout($/;" f +rl_unix_line_discard lib/readline/kill.c /^rl_unix_line_discard (int count, int key)$/;" f typeref:typename:int +rl_unix_line_discard r_readline/src/lib.rs /^ pub fn rl_unix_line_discard($/;" f +rl_unix_word_rubout lib/readline/kill.c /^rl_unix_word_rubout (int count, int key)$/;" f typeref:typename:int +rl_unix_word_rubout r_readline/src/lib.rs /^ pub fn rl_unix_word_rubout($/;" f +rl_untranslate_keyseq lib/readline/bind.c /^rl_untranslate_keyseq (int seq)$/;" f typeref:typename:char * +rl_untranslate_keyseq r_readline/src/lib.rs /^ pub fn rl_untranslate_keyseq(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +rl_upcase_word lib/readline/text.c /^rl_upcase_word (int count, int key)$/;" f typeref:typename:int +rl_upcase_word r_readline/src/lib.rs /^ pub fn rl_upcase_word($/;" f +rl_username_completion_function lib/readline/complete.c /^rl_username_completion_function (const char *text, int state)$/;" f typeref:typename:char * +rl_username_completion_function r_readline/src/lib.rs /^ pub fn rl_username_completion_function($/;" f +rl_variable_bind builtins_rust/set/src/lib.rs /^ fn rl_variable_bind(_: *const libc::c_char, _: *const libc::c_char) -> i32;$/;" f +rl_variable_bind lib/readline/bind.c /^rl_variable_bind (const char *name, const char *value)$/;" f typeref:typename:int +rl_variable_bind r_readline/src/lib.rs /^ pub fn rl_variable_bind($/;" f +rl_variable_dumper builtins_rust/bind/src/lib.rs /^ fn rl_variable_dumper(print_readably: i32);$/;" f +rl_variable_dumper lib/readline/bind.c /^rl_variable_dumper (int print_readably)$/;" f typeref:typename:void +rl_variable_dumper r_readline/src/lib.rs /^ pub fn rl_variable_dumper(arg1: ::std::os::raw::c_int);$/;" f +rl_variable_value lib/readline/bind.c /^rl_variable_value (const char *name)$/;" f typeref:typename:char * +rl_variable_value r_readline/src/lib.rs /^ pub fn rl_variable_value(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char/;" f +rl_vcpfunc_t r_readline/src/lib.rs /^pub type rl_vcpfunc_t =$/;" t +rl_vcppfunc_t r_readline/src/lib.rs /^pub type rl_vcppfunc_t =$/;" t +rl_vi_append_eol lib/readline/vi_mode.c /^rl_vi_append_eol (int count, int key)$/;" f typeref:typename:int +rl_vi_append_eol r_readline/src/lib.rs /^ pub fn rl_vi_append_eol($/;" f +rl_vi_append_mode lib/readline/vi_mode.c /^rl_vi_append_mode (int count, int key)$/;" f typeref:typename:int +rl_vi_append_mode r_readline/src/lib.rs /^ pub fn rl_vi_append_mode($/;" f +rl_vi_arg_digit lib/readline/vi_mode.c /^rl_vi_arg_digit (int count, int c)$/;" f typeref:typename:int +rl_vi_arg_digit r_readline/src/lib.rs /^ pub fn rl_vi_arg_digit($/;" f +rl_vi_bWord lib/readline/vi_mode.c /^rl_vi_bWord (int count, int ignore)$/;" f typeref:typename:int +rl_vi_bWord r_readline/src/lib.rs /^ pub fn rl_vi_bWord($/;" f +rl_vi_back_to_indent lib/readline/vi_mode.c /^rl_vi_back_to_indent (int count, int key)$/;" f typeref:typename:int +rl_vi_back_to_indent r_readline/src/lib.rs /^ pub fn rl_vi_back_to_indent($/;" f +rl_vi_bracktype lib/readline/vi_mode.c /^rl_vi_bracktype (int c)$/;" f typeref:typename:int +rl_vi_bracktype r_readline/src/lib.rs /^ pub fn rl_vi_bracktype(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +rl_vi_bword lib/readline/vi_mode.c /^rl_vi_bword (int count, int ignore)$/;" f typeref:typename:int +rl_vi_bword r_readline/src/lib.rs /^ pub fn rl_vi_bword($/;" f +rl_vi_change_case lib/readline/vi_mode.c /^rl_vi_change_case (int count, int ignore)$/;" f typeref:typename:int +rl_vi_change_case r_readline/src/lib.rs /^ pub fn rl_vi_change_case($/;" f +rl_vi_change_char lib/readline/vi_mode.c /^rl_vi_change_char (int count, int key)$/;" f typeref:typename:int +rl_vi_change_char r_readline/src/lib.rs /^ pub fn rl_vi_change_char($/;" f +rl_vi_change_to lib/readline/vi_mode.c /^rl_vi_change_to (int count, int key)$/;" f typeref:typename:int +rl_vi_change_to r_readline/src/lib.rs /^ pub fn rl_vi_change_to($/;" f +rl_vi_char_search lib/readline/vi_mode.c /^rl_vi_char_search (int count, int key)$/;" f typeref:typename:int +rl_vi_char_search r_readline/src/lib.rs /^ pub fn rl_vi_char_search($/;" f +rl_vi_check lib/readline/vi_mode.c /^rl_vi_check (void)$/;" f typeref:typename:int +rl_vi_check r_readline/src/lib.rs /^ pub fn rl_vi_check() -> ::std::os::raw::c_int;$/;" f +rl_vi_column lib/readline/vi_mode.c /^rl_vi_column (int count, int key)$/;" f typeref:typename:int +rl_vi_column r_readline/src/lib.rs /^ pub fn rl_vi_column($/;" f +rl_vi_complete lib/readline/vi_mode.c /^rl_vi_complete (int ignore, int key)$/;" f typeref:typename:int +rl_vi_complete r_readline/src/lib.rs /^ pub fn rl_vi_complete($/;" f +rl_vi_delete lib/readline/vi_mode.c /^rl_vi_delete (int count, int key)$/;" f typeref:typename:int +rl_vi_delete r_readline/src/lib.rs /^ pub fn rl_vi_delete($/;" f +rl_vi_delete_to lib/readline/vi_mode.c /^rl_vi_delete_to (int count, int key)$/;" f typeref:typename:int +rl_vi_delete_to r_readline/src/lib.rs /^ pub fn rl_vi_delete_to($/;" f +rl_vi_domove lib/readline/vi_mode.c /^rl_vi_domove (int x, int *ignore)$/;" f typeref:typename:int +rl_vi_domove r_readline/src/lib.rs /^ pub fn rl_vi_domove($/;" f +rl_vi_domove_getchar lib/readline/vi_mode.c /^rl_vi_domove_getchar (_rl_vimotion_cxt *m)$/;" f typeref:typename:int file: +rl_vi_eWord lib/readline/vi_mode.c /^rl_vi_eWord (int count, int ignore)$/;" f typeref:typename:int +rl_vi_eWord r_readline/src/lib.rs /^ pub fn rl_vi_eWord($/;" f +rl_vi_editing_mode lib/readline/misc.c /^rl_vi_editing_mode (int count, int key)$/;" f typeref:typename:int +rl_vi_editing_mode r_readline/src/lib.rs /^ pub fn rl_vi_editing_mode($/;" f +rl_vi_end_word lib/readline/vi_mode.c /^rl_vi_end_word (int count, int key)$/;" f typeref:typename:int +rl_vi_end_word r_readline/src/lib.rs /^ pub fn rl_vi_end_word($/;" f +rl_vi_eof_maybe lib/readline/vi_mode.c /^rl_vi_eof_maybe (int count, int c)$/;" f typeref:typename:int +rl_vi_eof_maybe r_readline/src/lib.rs /^ pub fn rl_vi_eof_maybe($/;" f +rl_vi_eword lib/readline/vi_mode.c /^rl_vi_eword (int count, int ignore)$/;" f typeref:typename:int +rl_vi_eword r_readline/src/lib.rs /^ pub fn rl_vi_eword($/;" f +rl_vi_fWord lib/readline/vi_mode.c /^rl_vi_fWord (int count, int ignore)$/;" f typeref:typename:int +rl_vi_fWord r_readline/src/lib.rs /^ pub fn rl_vi_fWord($/;" f +rl_vi_fetch_history lib/readline/vi_mode.c /^rl_vi_fetch_history (int count, int c)$/;" f typeref:typename:int +rl_vi_fetch_history r_readline/src/lib.rs /^ pub fn rl_vi_fetch_history($/;" f +rl_vi_first_print lib/readline/vi_mode.c /^rl_vi_first_print (int count, int key)$/;" f typeref:typename:int +rl_vi_first_print r_readline/src/lib.rs /^ pub fn rl_vi_first_print($/;" f +rl_vi_fword lib/readline/vi_mode.c /^rl_vi_fword (int count, int ignore)$/;" f typeref:typename:int +rl_vi_fword r_readline/src/lib.rs /^ pub fn rl_vi_fword($/;" f +rl_vi_goto_mark lib/readline/vi_mode.c /^rl_vi_goto_mark (int count, int key)$/;" f typeref:typename:int +rl_vi_goto_mark r_readline/src/lib.rs /^ pub fn rl_vi_goto_mark($/;" f +rl_vi_insert_beg lib/readline/vi_mode.c /^rl_vi_insert_beg (int count, int key)$/;" f typeref:typename:int +rl_vi_insert_beg r_readline/src/lib.rs /^ pub fn rl_vi_insert_beg($/;" f +rl_vi_insert_mode lib/readline/vi_mode.c /^rl_vi_insert_mode (int count, int key)$/;" f typeref:typename:int +rl_vi_insert_mode r_readline/src/lib.rs /^ pub fn rl_vi_insert_mode($/;" f +rl_vi_insertion_mode lib/readline/vi_mode.c /^rl_vi_insertion_mode (int count, int key)$/;" f typeref:typename:int +rl_vi_insertion_mode r_readline/src/lib.rs /^ pub fn rl_vi_insertion_mode($/;" f +rl_vi_match lib/readline/vi_mode.c /^rl_vi_match (int ignore, int key)$/;" f typeref:typename:int +rl_vi_match r_readline/src/lib.rs /^ pub fn rl_vi_match($/;" f +rl_vi_movement_mode lib/readline/vi_mode.c /^rl_vi_movement_mode (int count, int key)$/;" f typeref:typename:int +rl_vi_movement_mode r_readline/src/lib.rs /^ pub fn rl_vi_movement_mode($/;" f +rl_vi_next_word lib/readline/vi_mode.c /^rl_vi_next_word (int count, int key)$/;" f typeref:typename:int +rl_vi_next_word r_readline/src/lib.rs /^ pub fn rl_vi_next_word($/;" f +rl_vi_overstrike lib/readline/vi_mode.c /^rl_vi_overstrike (int count, int key)$/;" f typeref:typename:int +rl_vi_overstrike r_readline/src/lib.rs /^ pub fn rl_vi_overstrike($/;" f +rl_vi_overstrike_bracketed_paste lib/readline/vi_mode.c /^rl_vi_overstrike_bracketed_paste (int count, int key)$/;" f typeref:typename:int file: +rl_vi_overstrike_delete lib/readline/vi_mode.c /^rl_vi_overstrike_delete (int count, int key)$/;" f typeref:typename:int +rl_vi_overstrike_delete r_readline/src/lib.rs /^ pub fn rl_vi_overstrike_delete($/;" f +rl_vi_overstrike_kill_line lib/readline/vi_mode.c /^rl_vi_overstrike_kill_line (int count, int key)$/;" f typeref:typename:int file: +rl_vi_overstrike_kill_word lib/readline/vi_mode.c /^rl_vi_overstrike_kill_word (int count, int key)$/;" f typeref:typename:int file: +rl_vi_overstrike_yank lib/readline/vi_mode.c /^rl_vi_overstrike_yank (int count, int key)$/;" f typeref:typename:int file: +rl_vi_prev_word lib/readline/vi_mode.c /^rl_vi_prev_word (int count, int key)$/;" f typeref:typename:int +rl_vi_prev_word r_readline/src/lib.rs /^ pub fn rl_vi_prev_word($/;" f +rl_vi_put lib/readline/vi_mode.c /^rl_vi_put (int count, int key)$/;" f typeref:typename:int +rl_vi_put r_readline/src/lib.rs /^ pub fn rl_vi_put($/;" f +rl_vi_redo lib/readline/vi_mode.c /^rl_vi_redo (int count, int c)$/;" f typeref:typename:int +rl_vi_redo r_readline/src/lib.rs /^ pub fn rl_vi_redo($/;" f +rl_vi_replace lib/readline/vi_mode.c /^rl_vi_replace (int count, int key)$/;" f typeref:typename:int +rl_vi_replace r_readline/src/lib.rs /^ pub fn rl_vi_replace($/;" f +rl_vi_rubout lib/readline/vi_mode.c /^rl_vi_rubout (int count, int key)$/;" f typeref:typename:int +rl_vi_rubout r_readline/src/lib.rs /^ pub fn rl_vi_rubout($/;" f +rl_vi_search lib/readline/vi_mode.c /^rl_vi_search (int count, int key)$/;" f typeref:typename:int +rl_vi_search r_readline/src/lib.rs /^ pub fn rl_vi_search($/;" f +rl_vi_search_again lib/readline/vi_mode.c /^rl_vi_search_again (int count, int key)$/;" f typeref:typename:int +rl_vi_search_again r_readline/src/lib.rs /^ pub fn rl_vi_search_again($/;" f +rl_vi_set_mark lib/readline/vi_mode.c /^rl_vi_set_mark (int count, int key)$/;" f typeref:typename:int +rl_vi_set_mark r_readline/src/lib.rs /^ pub fn rl_vi_set_mark($/;" f +rl_vi_start_inserting lib/readline/vi_mode.c /^rl_vi_start_inserting (int key, int repeat, int sign)$/;" f typeref:typename:void +rl_vi_start_inserting r_readline/src/lib.rs /^ pub fn rl_vi_start_inserting($/;" f +rl_vi_subst lib/readline/vi_mode.c /^rl_vi_subst (int count, int key)$/;" f typeref:typename:int +rl_vi_subst r_readline/src/lib.rs /^ pub fn rl_vi_subst($/;" f +rl_vi_tilde_expand lib/readline/vi_mode.c /^rl_vi_tilde_expand (int ignore, int key)$/;" f typeref:typename:int +rl_vi_tilde_expand r_readline/src/lib.rs /^ pub fn rl_vi_tilde_expand($/;" f +rl_vi_undo lib/readline/vi_mode.c /^rl_vi_undo (int count, int key)$/;" f typeref:typename:int +rl_vi_undo r_readline/src/lib.rs /^ pub fn rl_vi_undo($/;" f +rl_vi_unix_word_rubout lib/readline/vi_mode.c /^rl_vi_unix_word_rubout (int count, int key)$/;" f typeref:typename:int +rl_vi_unix_word_rubout r_readline/src/lib.rs /^ pub fn rl_vi_unix_word_rubout($/;" f +rl_vi_yank_arg lib/readline/vi_mode.c /^rl_vi_yank_arg (int count, int key)$/;" f typeref:typename:int +rl_vi_yank_arg r_readline/src/lib.rs /^ pub fn rl_vi_yank_arg($/;" f +rl_vi_yank_pop lib/readline/kill.c /^rl_vi_yank_pop (int count, int key)$/;" f typeref:typename:int +rl_vi_yank_pop r_readline/src/lib.rs /^ pub fn rl_vi_yank_pop($/;" f +rl_vi_yank_to lib/readline/vi_mode.c /^rl_vi_yank_to (int count, int key)$/;" f typeref:typename:int +rl_vi_yank_to r_readline/src/lib.rs /^ pub fn rl_vi_yank_to($/;" f +rl_vintfunc_t r_readline/src/lib.rs /^pub type rl_vintfunc_t = ::core::option::Option;$/;" t +rl_yank lib/readline/kill.c /^rl_yank (int count, int key)$/;" f typeref:typename:int +rl_yank r_readline/src/lib.rs /^ pub fn rl_yank($/;" f +rl_yank_last_arg lib/readline/kill.c /^rl_yank_last_arg (int count, int key)$/;" f typeref:typename:int +rl_yank_last_arg r_readline/src/lib.rs /^ pub fn rl_yank_last_arg($/;" f +rl_yank_nth_arg lib/readline/kill.c /^rl_yank_nth_arg (int count, int key)$/;" f typeref:typename:int +rl_yank_nth_arg r_readline/src/lib.rs /^ pub fn rl_yank_nth_arg($/;" f +rl_yank_nth_arg_internal lib/readline/kill.c /^rl_yank_nth_arg_internal (int count, int key, int history_skip)$/;" f typeref:typename:int file: +rl_yank_pop lib/readline/kill.c /^rl_yank_pop (int count, int key)$/;" f typeref:typename:int +rl_yank_pop r_readline/src/lib.rs /^ pub fn rl_yank_pop($/;" f +rlcat lib/readline/examples/Makefile /^rlcat: rlcat.o$/;" t +rlcat.o lib/readline/examples/Makefile /^rlcat.o: rlcat.c$/;" t +rlim64_t r_bash/src/lib.rs /^pub type rlim64_t = __rlim64_t;$/;" t +rlim64_t r_glob/src/lib.rs /^pub type rlim64_t = __rlim64_t;$/;" t +rlim64_t r_readline/src/lib.rs /^pub type rlim64_t = __rlim64_t;$/;" t +rlim64_t vendor/libc/src/fuchsia/mod.rs /^pub type rlim64_t = u64;$/;" t +rlim64_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type rlim64_t = u64;$/;" t +rlim64_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type rlim64_t = u64;$/;" t +rlim_cur builtins_rust/ulimit/src/lib.rs /^ pub rlim_cur: rlim_t,$/;" m struct:rlimit +rlim_cur r_bash/src/lib.rs /^ pub rlim_cur: rlim64_t,$/;" m struct:rlimit64 +rlim_cur r_bash/src/lib.rs /^ pub rlim_cur: rlim_t,$/;" m struct:rlimit +rlim_cur r_glob/src/lib.rs /^ pub rlim_cur: rlim64_t,$/;" m struct:rlimit64 +rlim_cur r_glob/src/lib.rs /^ pub rlim_cur: rlim_t,$/;" m struct:rlimit +rlim_cur r_readline/src/lib.rs /^ pub rlim_cur: rlim64_t,$/;" m struct:rlimit64 +rlim_cur r_readline/src/lib.rs /^ pub rlim_cur: rlim_t,$/;" m struct:rlimit +rlim_max builtins_rust/ulimit/src/lib.rs /^ pub rlim_max: rlim_t,$/;" m struct:rlimit +rlim_max r_bash/src/lib.rs /^ pub rlim_max: rlim64_t,$/;" m struct:rlimit64 +rlim_max r_bash/src/lib.rs /^ pub rlim_max: rlim_t,$/;" m struct:rlimit +rlim_max r_glob/src/lib.rs /^ pub rlim_max: rlim64_t,$/;" m struct:rlimit64 +rlim_max r_glob/src/lib.rs /^ pub rlim_max: rlim_t,$/;" m struct:rlimit +rlim_max r_readline/src/lib.rs /^ pub rlim_max: rlim64_t,$/;" m struct:rlimit64 +rlim_max r_readline/src/lib.rs /^ pub rlim_max: rlim_t,$/;" m struct:rlimit +rlim_t builtins_rust/ulimit/src/lib.rs /^pub type rlim_t = __rlim_t;$/;" t +rlim_t r_bash/src/lib.rs /^pub type rlim_t = __rlim_t;$/;" t +rlim_t r_glob/src/lib.rs /^pub type rlim_t = __rlim_t;$/;" t +rlim_t r_readline/src/lib.rs /^pub type rlim_t = __rlim_t;$/;" t +rlim_t vendor/libc/src/fuchsia/mod.rs /^pub type rlim_t = ::c_ulonglong;$/;" t +rlim_t vendor/libc/src/solid/mod.rs /^pub type rlim_t = u64;$/;" t +rlim_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type rlim_t = u64;$/;" t +rlim_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type rlim_t = i64;$/;" t +rlim_t vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type rlim_t = u64;$/;" t +rlim_t vendor/libc/src/unix/haiku/mod.rs /^pub type rlim_t = ::uintptr_t;$/;" t +rlim_t vendor/libc/src/unix/hermit/mod.rs /^pub type rlim_t = ::c_ulonglong;$/;" t +rlim_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type rlim_t = ::c_ulong;$/;" t +rlim_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type rlim_t = ::c_ulonglong;$/;" t +rlim_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mod.rs /^pub type rlim_t = u64;$/;" t +rlim_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type rlim_t = ::c_ulonglong;$/;" t +rlim_t vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^pub type rlim_t = ::c_ulong;$/;" t +rlim_t vendor/libc/src/unix/newlib/mod.rs /^pub type rlim_t = u32;$/;" t +rlim_t vendor/libc/src/unix/redox/mod.rs /^pub type rlim_t = ::c_ulonglong;$/;" t +rlim_t vendor/libc/src/unix/solarish/mod.rs /^pub type rlim_t = ::c_ulong;$/;" t +rlim_t vendor/libc/src/vxworks/mod.rs /^pub type rlim_t = ::c_ulong;$/;" t +rlimit builtins_rust/ulimit/src/lib.rs /^pub struct rlimit {$/;" s +rlimit r_bash/src/lib.rs /^pub struct rlimit {$/;" s +rlimit r_glob/src/lib.rs /^pub struct rlimit {$/;" s +rlimit r_readline/src/lib.rs /^pub struct rlimit {$/;" s +rlimit64 r_bash/src/lib.rs /^pub struct rlimit64 {$/;" s +rlimit64 r_glob/src/lib.rs /^pub struct rlimit64 {$/;" s +rlimit64 r_readline/src/lib.rs /^pub struct rlimit64 {$/;" s +rlstate lib/readline/readline.h /^ int rlstate;$/;" m struct:readline_state typeref:typename:int +rlstate r_readline/src/lib.rs /^ pub rlstate: ::std::os::raw::c_int,$/;" m struct:readline_state +rltest lib/readline/examples/Makefile /^rltest: rltest.o$/;" t +rltest.o lib/readline/examples/Makefile /^rltest.o: rltest.c$/;" t +rltty.o lib/readline/Makefile.in /^rltty.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h$/;" t +rltty.o lib/readline/Makefile.in /^rltty.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +rltty.o lib/readline/Makefile.in /^rltty.o: rlprivate.h$/;" t +rltty.o lib/readline/Makefile.in /^rltty.o: rltty.c$/;" t +rltty.o lib/readline/Makefile.in /^rltty.o: rltty.h$/;" t +rltty_set_default_bindings lib/readline/rltty.c /^rltty_set_default_bindings (Keymap kmap)$/;" f typeref:typename:void +rltty_warning lib/readline/rltty.c /^rltty_warning (char *msg)$/;" f typeref:typename:void file: +rm_watch vendor/nix/src/sys/inotify.rs /^ pub fn rm_watch(self, wd: WatchDescriptor) -> Result<()> {$/;" P implementation:Inotify +rmdir r_bash/src/lib.rs /^ pub fn rmdir(__path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rmdir r_glob/src/lib.rs /^ pub fn rmdir(__path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rmdir r_readline/src/lib.rs /^ pub fn rmdir(__path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rmdir vendor/libc/src/fuchsia/mod.rs /^ pub fn rmdir(path: *const c_char) -> ::c_int;$/;" f +rmdir vendor/libc/src/solid/mod.rs /^ pub fn rmdir(arg1: *const c_char) -> c_int;$/;" f +rmdir vendor/libc/src/unix/mod.rs /^ pub fn rmdir(path: *const c_char) -> ::c_int;$/;" f +rmdir vendor/libc/src/vxworks/mod.rs /^ pub fn rmdir(path: *const ::c_char) -> ::c_int;$/;" f +rmdir vendor/libc/src/wasi.rs /^ pub fn rmdir(path: *const c_char) -> ::c_int;$/;" f +rmdir vendor/libc/src/windows/mod.rs /^ pub fn rmdir(path: *const c_char) -> ::c_int;$/;" f +rmxfguid vendor/winapi/src/um/mod.rs /^#[cfg(feature = "rmxfguid")] pub mod rmxfguid;$/;" n +roapi vendor/winapi/src/winrt/mod.rs /^#[cfg(feature = "roapi")] pub mod roapi;$/;" n +roaring vendor/unicode-ident/README.md /^#### roaring$/;" t section:Unicode ident""Comparison of data structures +roaring vendor/unicode-ident/benches/xid.rs /^mod roaring;$/;" n +roaring vendor/unicode-ident/tests/compare.rs /^mod roaring;$/;" n +roaring vendor/unicode-ident/tests/static_size.rs /^ mod roaring;$/;" n function:test_roaring_size +robuffer vendor/winapi/src/winrt/mod.rs /^#[cfg(feature = "robuffer")] pub mod robuffer;$/;" n +roerrorapi vendor/winapi/src/winrt/mod.rs /^#[cfg(feature = "roerrorapi")] pub mod roerrorapi;$/;" n +roll vendor/memchr/src/memmem/rabinkarp.rs /^ fn roll(&mut self, nhash: &NeedleHash, old: u8, new: u8) {$/;" P implementation:Hash +root lib/intl/dcigettext.c /^static void *root;$/;" v typeref:typename:void * file: +rotate_left vendor/stdext/src/num/integer.rs /^ fn rotate_left(self, n: u32) -> Self;$/;" P interface:Integer +rotate_right vendor/stdext/src/num/integer.rs /^ fn rotate_right(self, n: u32) -> Self;$/;" P interface:Integer +round_robin vendor/futures-util/src/stream/select.rs /^ fn round_robin(last: &mut PollNext) -> PollNext {$/;" f function:select +roundtrip vendor/proc-macro2/tests/test.rs /^ fn roundtrip(p: &str) {$/;" f function:roundtrip +roundtrip vendor/proc-macro2/tests/test.rs /^fn roundtrip() {$/;" f +rowspan support/man2html.c /^ int size, align, valign, colspan, rowspan, font, vleft, vright, space,$/;" m struct:TABLEITEM typeref:typename:int file: +rpc vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "rpc")] pub mod rpc;$/;" n +rpc_binding_handle_t vendor/winapi/src/shared/rpcdce.rs /^pub type rpc_binding_handle_t = RPC_BINDING_HANDLE;$/;" t +rpc_binding_vector_t vendor/winapi/src/shared/rpcdce.rs /^pub type rpc_binding_vector_t = RPC_BINDING_VECTOR;$/;" t +rpcdce vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "rpcdce")] pub mod rpcdce;$/;" n +rpcndr vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "rpcndr")] pub mod rpcndr;$/;" n +rpm_requires r_bash/src/lib.rs /^ pub static mut rpm_requires: ::std::os::raw::c_int;$/;" v +rpm_requires shell.c /^int rpm_requires;$/;" v typeref:typename:int +rpmatch r_bash/src/lib.rs /^ pub fn rpmatch(__response: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rpmatch r_glob/src/lib.rs /^ pub fn rpmatch(__response: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rpmatch r_readline/src/lib.rs /^ pub fn rpmatch(__response: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +rptr r_bash/src/lib.rs /^ pub rptr: *mut i32,$/;" m struct:random_data +rptr r_glob/src/lib.rs /^ pub rptr: *mut i32,$/;" m struct:random_data +rptr r_readline/src/lib.rs /^ pub rptr: *mut i32,$/;" m struct:random_data +rseed lib/sh/random.c /^static u_bits32_t rseed = 1;$/;" v typeref:typename:u_bits32_t file: +rseed32 lib/sh/random.c /^static u_bits32_t rseed32 = 1073741823;$/;" v typeref:typename:u_bits32_t file: +rsi builtins_rust/wait/src/signal.rs /^ pub rsi: __uint64_t,$/;" m struct:sigcontext +rsi r_bash/src/lib.rs /^ pub rsi: __uint64_t,$/;" m struct:sigcontext +rsi r_glob/src/lib.rs /^ pub rsi: __uint64_t,$/;" m struct:sigcontext +rsi r_readline/src/lib.rs /^ pub rsi: __uint64_t,$/;" m struct:sigcontext +rsp builtins_rust/wait/src/signal.rs /^ pub rsp: __uint64_t,$/;" m struct:sigcontext +rsp r_bash/src/lib.rs /^ pub rsp: __uint64_t,$/;" m struct:sigcontext +rsp r_glob/src/lib.rs /^ pub rsp: __uint64_t,$/;" m struct:sigcontext +rsp r_readline/src/lib.rs /^ pub rsp: __uint64_t,$/;" m struct:sigcontext +rtinfo vendor/winapi/src/um/mod.rs /^#[cfg(feature = "rtinfo")] pub mod rtinfo;$/;" n +rtpInfoGet vendor/libc/src/vxworks/mod.rs /^ pub fn rtpInfoGet(rtpId: ::RTP_ID, rtpStruct: *mut ::RTP_DESC) -> ::c_int;$/;" f +rtpSpawn vendor/libc/src/vxworks/mod.rs /^ pub fn rtpSpawn($/;" f +rtprio vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn rtprio(function: ::c_int, pid: ::pid_t, rtp: *mut rtprio) -> ::c_int;$/;" f +rtprio_thread vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn rtprio_thread(function: ::c_int, lwpid: ::lwpid_t, rtp: *mut super::rtprio) -> ::c_in/;" f +rtype@0.0.1 target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" s object:reports.0.per_package +rtype@0.0.1 target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" s object:reports.2.per_package +ru_stime r_bash/src/lib.rs /^ pub ru_stime: timeval,$/;" m struct:rusage +ru_stime r_glob/src/lib.rs /^ pub ru_stime: timeval,$/;" m struct:rusage +ru_stime r_readline/src/lib.rs /^ pub ru_stime: timeval,$/;" m struct:rusage +ru_utime r_bash/src/lib.rs /^ pub ru_utime: timeval,$/;" m struct:rusage +ru_utime r_glob/src/lib.rs /^ pub ru_utime: timeval,$/;" m struct:rusage +ru_utime r_readline/src/lib.rs /^ pub ru_utime: timeval,$/;" m struct:rusage +rules vendor/intl_pluralrules/src/lib.rs /^mod rules;$/;" n +rulimit@0.0.1 target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" s object:reports.1.per_package +rulimit@0.0.1 target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" s object:reports.2.per_package +run support/texi2dvi /^run ()$/;" f +run vendor/async-trait/tests/test.rs /^ async fn run(self)$/;" P implementation:issue134::TestStruct +run vendor/async-trait/tests/test.rs /^ async fn run(self)$/;" P interface:issue134::TestTrait +run vendor/futures-executor/src/local_pool.rs /^ pub fn run(&mut self) {$/;" P implementation:LocalPool +run vendor/futures-executor/src/thread_pool.rs /^ fn run(self) {$/;" P implementation:Task +run vendor/futures/tests/eventual.rs /^fn run(future: F) {$/;" f +run vendor/futures/tests/io_buf_reader.rs /^fn run(mut f: F) -> F::Output {$/;" f +run vendor/futures/tests/io_buf_writer.rs /^fn run(mut f: F) -> F::Output {$/;" f +run vendor/futures/tests/io_lines.rs /^fn run(mut f: F) -> F::Output {$/;" f +run vendor/futures/tests/io_read_line.rs /^fn run(mut f: F) -> F::Output {$/;" f +run vendor/futures/tests/io_read_to_string.rs /^ fn run(mut f: F) -> F::Output {$/;" f function:interleave_pending +run vendor/futures/tests/io_read_until.rs /^fn run(mut f: F) -> F::Output {$/;" f +run vendor/memchr/src/memmem/prefilter/mod.rs /^ unsafe fn run(&self, prefn: PrefilterFnTy) {$/;" P implementation:tests::PrefilterTest +run_all_tests vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) unsafe fn run_all_tests(prefn: PrefilterFnTy) {$/;" P implementation:tests::PrefilterTest +run_all_tests_filter vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) unsafe fn run_all_tests_filter($/;" P implementation:tests::PrefilterTest +run_bibtex support/texi2dvi /^run_bibtex ()$/;" f +run_callback builtins_rust/mapfile/src/lib.rs /^unsafe fn run_callback(callback: *const c_char, curindex: c_uint, curline: *mut c_char) -> c_int/;" f +run_core_conversion support/texi2dvi /^run_core_conversion ()$/;" f +run_debug_trap r_bash/src/lib.rs /^ pub fn run_debug_trap() -> ::std::os::raw::c_int;$/;" f +run_debug_trap r_glob/src/lib.rs /^ pub fn run_debug_trap() -> ::std::os::raw::c_int;$/;" f +run_debug_trap r_readline/src/lib.rs /^ pub fn run_debug_trap() -> ::std::os::raw::c_int;$/;" f +run_debug_trap trap.c /^run_debug_trap ()$/;" f typeref:typename:int +run_dvipdf support/texi2dvi /^run_dvipdf ()$/;" f +run_error_trap r_bash/src/lib.rs /^ pub fn run_error_trap();$/;" f +run_error_trap r_glob/src/lib.rs /^ pub fn run_error_trap();$/;" f +run_error_trap r_readline/src/lib.rs /^ pub fn run_error_trap();$/;" f +run_error_trap trap.c /^run_error_trap ()$/;" f typeref:typename:void +run_executes_spawned vendor/futures-executor/tests/local_pool.rs /^fn run_executes_spawned() {$/;" f +run_executor vendor/futures-executor/src/local_pool.rs /^fn run_executor) -> Poll>(mut f: F) -> T {$/;" f +run_exit_trap r_bash/src/lib.rs /^ pub fn run_exit_trap() -> ::std::os::raw::c_int;$/;" f +run_exit_trap r_glob/src/lib.rs /^ pub fn run_exit_trap() -> ::std::os::raw::c_int;$/;" f +run_exit_trap r_readline/src/lib.rs /^ pub fn run_exit_trap() -> ::std::os::raw::c_int;$/;" f +run_exit_trap trap.c /^run_exit_trap ()$/;" f typeref:typename:int +run_hevea support/texi2dvi /^run_hevea ()$/;" f +run_index support/texi2dvi /^run_index ()$/;" f +run_interrupt_trap r_bash/src/lib.rs /^ pub fn run_interrupt_trap(arg1: ::std::os::raw::c_int);$/;" f +run_interrupt_trap r_glob/src/lib.rs /^ pub fn run_interrupt_trap(arg1: ::std::os::raw::c_int);$/;" f +run_interrupt_trap r_readline/src/lib.rs /^ pub fn run_interrupt_trap(arg1: ::std::os::raw::c_int);$/;" f +run_interrupt_trap trap.c /^run_interrupt_trap (will_throw)$/;" f +run_makeinfo support/texi2dvi /^run_makeinfo ()$/;" f +run_next vendor/futures/tests/io_lines.rs /^macro_rules! run_next {$/;" M +run_one_command shell.c /^run_one_command (command)$/;" f file: +run_pending_traps r_bash/src/lib.rs /^ pub fn run_pending_traps();$/;" f +run_pending_traps r_glob/src/lib.rs /^ pub fn run_pending_traps();$/;" f +run_pending_traps r_readline/src/lib.rs /^ pub fn run_pending_traps();$/;" f +run_pending_traps trap.c /^run_pending_traps ()$/;" f typeref:typename:void +run_return_trap r_bash/src/lib.rs /^ pub fn run_return_trap();$/;" f +run_return_trap r_glob/src/lib.rs /^ pub fn run_return_trap();$/;" f +run_return_trap r_readline/src/lib.rs /^ pub fn run_return_trap();$/;" f +run_return_trap trap.c /^run_return_trap ()$/;" f typeref:typename:void +run_returns_if_empty vendor/futures-executor/tests/local_pool.rs /^fn run_returns_if_empty() {$/;" f +run_search_tests_fwd vendor/memchr/src/memmem/mod.rs /^ pub(crate) fn run_search_tests_fwd($/;" f module:testsimples +run_search_tests_rev vendor/memchr/src/memmem/mod.rs /^ pub(crate) fn run_search_tests_rev($/;" f module:testsimples +run_shopt_alist shell.c /^run_shopt_alist ()$/;" f typeref:typename:void file: +run_sigchld_trap jobs.c /^run_sigchld_trap (nchild)$/;" f +run_sigchld_trap r_bash/src/lib.rs /^ pub fn run_sigchld_trap(arg1: ::std::os::raw::c_int);$/;" f +run_sigchld_trap r_jobs/src/lib.rs /^pub unsafe extern "C" fn run_sigchld_trap(mut nchild: c_int) {$/;" f +run_spawn_many vendor/futures-executor/tests/local_pool.rs /^fn run_spawn_many() {$/;" f +run_startup_files shell.c /^run_startup_files ()$/;" f typeref:typename:void file: +run_tests vendor/nix/test/test_mount.rs /^macro_rules! run_tests {$/;" M +run_tex support/texi2dvi /^run_tex ()$/;" f +run_tex4ht support/texi2dvi /^run_tex4ht ()$/;" f +run_tex_suite support/texi2dvi /^run_tex_suite ()$/;" f +run_thumbpdf support/texi2dvi /^run_thumbpdf ()$/;" f +run_trap_cleanup r_bash/src/lib.rs /^ pub fn run_trap_cleanup(arg1: ::std::os::raw::c_int);$/;" f +run_trap_cleanup r_glob/src/lib.rs /^ pub fn run_trap_cleanup(arg1: ::std::os::raw::c_int);$/;" f +run_trap_cleanup r_readline/src/lib.rs /^ pub fn run_trap_cleanup(arg1: ::std::os::raw::c_int);$/;" f +run_trap_cleanup trap.c /^run_trap_cleanup (sig)$/;" f +run_until vendor/futures-executor/src/local_pool.rs /^ pub fn run_until(&mut self, future: F) -> F::Output {$/;" P implementation:LocalPool +run_until_executes_spawned vendor/futures-executor/tests/local_pool.rs /^fn run_until_executes_spawned() {$/;" f +run_until_ignores_spawned vendor/futures-executor/tests/local_pool.rs /^fn run_until_ignores_spawned() {$/;" f +run_until_single_future vendor/futures-executor/tests/local_pool.rs /^fn run_until_single_future() {$/;" f +run_until_stalled vendor/futures-executor/src/local_pool.rs /^ pub fn run_until_stalled(&mut self) {$/;" P implementation:LocalPool +run_until_stalled_executes_all_ready vendor/futures-executor/tests/local_pool.rs /^fn run_until_stalled_executes_all_ready() {$/;" f +run_until_stalled_returns_if_empty vendor/futures-executor/tests/local_pool.rs /^fn run_until_stalled_returns_if_empty() {$/;" f +run_until_stalled_returns_multiple_times vendor/futures-executor/tests/local_pool.rs /^fn run_until_stalled_returns_multiple_times() {$/;" f +run_until_stalled_runs_spawned_sub_futures vendor/futures-executor/tests/local_pool.rs /^fn run_until_stalled_runs_spawned_sub_futures() {$/;" f +run_unwind_frame builtins_rust/bind/src/lib.rs /^ fn run_unwind_frame(tag: *mut c_char);$/;" f +run_unwind_frame builtins_rust/command/src/lib.rs /^ fn run_unwind_frame(_: *mut libc::c_char);$/;" f +run_unwind_frame builtins_rust/fc/src/lib.rs /^ fn run_unwind_frame(filename: *mut c_char);$/;" f +run_unwind_frame builtins_rust/read/src/intercdep.rs /^ pub fn run_unwind_frame(arg1: *mut c_char);$/;" f +run_unwind_frame builtins_rust/source/src/lib.rs /^ fn run_unwind_frame(filename: *mut c_char);$/;" f +run_unwind_frame r_bash/src/lib.rs /^ pub fn run_unwind_frame(arg1: *mut ::std::os::raw::c_char);$/;" f +run_unwind_frame r_jobs/src/lib.rs /^ fn run_unwind_frame(_: *mut c_char);$/;" f +run_unwind_frame unwind_prot.c /^run_unwind_frame (tag)$/;" f +run_unwind_protects r_bash/src/lib.rs /^ pub fn run_unwind_protects();$/;" f +run_unwind_protects unwind_prot.c /^run_unwind_protects ()$/;" f typeref:typename:void +run_unwind_protects_internal unwind_prot.c /^run_unwind_protects_internal (ignore1, ignore2)$/;" f file: +run_wordexp shell.c /^run_wordexp (words)$/;" f file: +running builtins_rust/cd/src/lib.rs /^ running: libc::c_int,$/;" m struct:PROCESS +running builtins_rust/common/src/lib.rs /^ pub running: i32,$/;" m struct:process +running builtins_rust/fc/src/lib.rs /^ running: libc::c_int,$/;" m struct:PROCESS +running builtins_rust/fg_bg/src/lib.rs /^ running: libc::c_int,$/;" m struct:PROCESS +running builtins_rust/jobs/src/lib.rs /^ running: libc::c_int,$/;" m struct:PROCESS +running builtins_rust/kill/src/intercdep.rs /^ pub running: c_int,$/;" m struct:process +running builtins_rust/setattr/src/intercdep.rs /^ pub running: c_int,$/;" m struct:process +running jobs.h /^ int running; \/* Non-zero if this process is running. *\/$/;" m struct:process typeref:typename:int +running lib/readline/examples/rl-callbacktest.c /^int running;$/;" v typeref:typename:int +running r_bash/src/lib.rs /^ pub running: ::std::os::raw::c_int,$/;" m struct:process +running_in_background jobs.c /^int running_in_background = 0;$/;" v typeref:typename:int +running_in_background nojobs.c /^int running_in_background = 0; \/* can't tell without job control *\/$/;" v typeref:typename:int +running_in_background r_bash/src/lib.rs /^ pub static mut running_in_background: ::std::os::raw::c_int;$/;" v +running_in_background r_jobs/src/lib.rs /^pub static mut running_in_background: c_int = 0;$/;" v +running_setuid shell.c /^static int running_setuid;$/;" v typeref:typename:int file: +running_trap builtins_rust/common/src/lib.rs /^ static running_trap: i32;$/;" v +running_trap builtins_rust/exit/src/lib.rs /^ static mut running_trap: i32;$/;" v +running_trap builtins_rust/trap/src/intercdep.rs /^ pub static running_trap: c_int;$/;" v +running_trap hashlib.c /^int running_trap = 0;$/;" v typeref:typename:int +running_trap r_bash/src/lib.rs /^ pub static mut running_trap: ::std::os::raw::c_int;$/;" v +running_trap r_glob/src/lib.rs /^ pub static mut running_trap: ::std::os::raw::c_int;$/;" v +running_trap r_jobs/src/lib.rs /^ static mut running_trap: c_int;$/;" v +running_trap r_readline/src/lib.rs /^ pub static mut running_trap: ::std::os::raw::c_int;$/;" v +running_trap trap.c /^int running_trap;$/;" v typeref:typename:int +running_under_emacs r_bash/src/lib.rs /^ pub static mut running_under_emacs: ::std::os::raw::c_int;$/;" v +running_under_emacs shell.c /^int running_under_emacs;$/;" v typeref:typename:int +runtime vendor/fluent-syntax/src/parser/mod.rs /^mod runtime;$/;" n +rusage r_bash/src/lib.rs /^pub struct rusage {$/;" s +rusage r_glob/src/lib.rs /^pub struct rusage {$/;" s +rusage r_readline/src/lib.rs /^pub struct rusage {$/;" s +rusage_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type rusage_info_t = *mut ::c_void;$/;" t +rust-smallvec vendor/smallvec/README.md /^rust-smallvec$/;" c +rust-toolchain.toml vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +rust-toolchain.toml vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +rust_builtins_lib Makefile.in /^rust_builtins_lib:$/;" t +rustc target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n +rustc target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" n +rustc target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +rustc target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" n +rustc target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" n +rustc target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" n +rustc target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" n +rustc target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n +rustc target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" n +rustc target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n +rustc target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" n +rustc target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n +rustc target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" n +rustc target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n +rustc target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" n +rustc target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n +rustc target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +rustc target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +rustc target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" n +rustc target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +rustc target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" n +rustc target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" n +rustc target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n +rustc target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" n +rustc target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n +rustc target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" n +rustc target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" n +rustc target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" n +rustc target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +rustc target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +rustc target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +rustc target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" n +rustc target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" n +rustc target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" n +rustc target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" n +rustc target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +rustc target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" n +rustc target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +rustc target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +rustc target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" n +rustc target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +rustc target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" n +rustc target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +rustc target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" n +rustc target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" n +rustc target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" n +rustc target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" n +rustc target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" n +rustc target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n +rustc target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" n +rustc target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" n +rustc target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" n +rustc target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" n +rustc target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +rustc target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" n +rustc target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +rustc target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" n +rustc target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" n +rustc target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +rustc target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +rustc target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" n +rustc target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n +rustc target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" n +rustc target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" n +rustc target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" n +rustc target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +rustc target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n +rustc target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n +rustc target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n +rustc target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n +rustc target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n +rustc target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" n +rustc target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +rustc target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n +rustc target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n +rustc target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n +rustc target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" n +rustc target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n +rustc target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" n +rustc target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +rustc target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" n +rustc target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" n +rustc target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" n +rustc target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" n +rustc target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" n +rustc target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +rustc target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +rustc target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" n +rustc target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +rustc target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" n +rustc target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" n +rustc target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n +rustc target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" n +rustc target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" n +rustc target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" n +rustc target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" n +rustc target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" n +rustc vendor/autocfg/src/lib.rs /^ rustc: PathBuf,$/;" m struct:AutoCfg +rustc-hash vendor/rustc-hash/README.md /^# rustc-hash$/;" c +rustc_fingerprint target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" n +rustc_minor_nightly vendor/libc/build.rs /^fn rustc_minor_nightly() -> Option<(u32, bool)> {$/;" f +rustc_minor_version vendor/async-trait/build.rs /^fn rustc_minor_version() -> Option {$/;" f +rustc_version vendor/autocfg/src/lib.rs /^ rustc_version: Version,$/;" m struct:AutoCfg +rustc_version vendor/proc-macro2/build.rs /^fn rustc_version() -> Option {$/;" f +rustc_version vendor/quote/build.rs /^fn rustc_version() -> Option {$/;" f +rustc_version vendor/syn/build.rs /^fn rustc_version() -> Option {$/;" f +rustflags target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" a +rustflags target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" a +rustflags target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" a +rustflags target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" a +rustflags target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" a +rustflags target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" a +rustflags target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" a +rustflags target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" a +rustflags target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" a +rustflags target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" a +rustflags target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" a +rustflags target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" a +rustflags target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" a +rustflags target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" a +rustflags target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" a +rustflags target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" a +rustflags target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" a +rustflags target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" a +rustflags target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" a +rustflags target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" a +rustflags target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" a +rustflags target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" a +rustflags target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" a +rustflags target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" a +rustflags target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" a +rustflags target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" a +rustflags target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" a +rustflags target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" a +rustflags target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a +rustflags target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" a +rustflags target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" a +rustflags target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" a +rustflags target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" a +rustflags target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" a +rustflags target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" a +rustflags target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" a +rustflags target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" a +rustflags target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" a +rustflags target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" a +rustflags target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" a +rustflags target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" a +rustflags target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" a +rustflags target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" a +rustflags target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" a +rustflags target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" a +rustflags target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" a +rustflags target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" a +rustflags target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" a +rustflags target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" a +rustflags target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" a +rustflags target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" a +rustflags target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" a +rustflags target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" a +rustflags target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" a +rustflags target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" a +rustflags target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" a +rustflags target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" a +rustflags target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" a +rustflags target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" a +rustflags target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" a +rustflags target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" a +rustflags target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" a +rustflags target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" a +rustflags target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" a +rustflags target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" a +rustflags target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" a +rustflags target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" a +rustflags target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" a +rustflags target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" a +rustflags target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" a +rustflags target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" a +rustflags target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" a +rustflags target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" a +rustflags target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" a +rustflags target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" a +rustflags target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" a +rustflags target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" a +rustflags target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" a +rustflags target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" a +rustflags target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" a +rustflags target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" a +rustflags target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" a +rustflags target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" a +rustflags target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" a +rustflags target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" a +rustflags target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" a +rustflags vendor/autocfg/src/lib.rs /^ rustflags: Vec,$/;" m struct:AutoCfg +rustflags vendor/autocfg/src/lib.rs /^fn rustflags(target: &Option, dir: &Path) -> Vec {$/;" f +rustfmt.toml vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +rustfmt.toml vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +rw_lock vendor/stdext/src/sync/mod.rs /^pub mod rw_lock;$/;" n +rx vendor/futures-channel/tests/mpsc-close.rs /^ rx: mpsc::Receiver>,$/;" m struct:stress_try_send_as_receiver_closes::TestRx +rx vendor/futures-executor/src/thread_pool.rs /^ rx: Mutex>,$/;" m struct:PoolState +rx vendor/futures-util/src/future/future/remote_handle.rs /^ rx: Receiver>,$/;" m struct:RemoteHandle +rx_buf vendor/nix/test/sys/test_ioctl.rs /^ rx_buf: u64,$/;" m struct:linux_ioctls::spi_ioc_transfer +rx_nbits vendor/nix/test/sys/test_ioctl.rs /^ rx_nbits: u8,$/;" m struct:linux_ioctls::spi_ioc_transfer +rx_task vendor/futures-channel/src/oneshot.rs /^ rx_task: Lock>,$/;" m struct:Inner +s lib/malloc/malloc.c /^ char s[4];$/;" m union:_malloc_guard typeref:typename:char[4] file: +s variables.h /^ char *s; \/* string value *\/$/;" m union:_value typeref:typename:char * +s3 vendor/lazy_static/tests/test.rs /^fn s3() {$/;" f +sa_family_t vendor/libc/src/fuchsia/mod.rs /^pub type sa_family_t = u16;$/;" t +sa_family_t vendor/libc/src/unix/bsd/mod.rs /^pub type sa_family_t = u8;$/;" t +sa_family_t vendor/libc/src/unix/haiku/mod.rs /^pub type sa_family_t = u8;$/;" t +sa_family_t vendor/libc/src/unix/hermit/mod.rs /^pub type sa_family_t = u8;$/;" t +sa_family_t vendor/libc/src/unix/linux_like/mod.rs /^pub type sa_family_t = u16;$/;" t +sa_family_t vendor/libc/src/unix/redox/mod.rs /^pub type sa_family_t = u16;$/;" t +sa_family_t vendor/libc/src/unix/solarish/mod.rs /^pub type sa_family_t = u16;$/;" t +sa_family_t vendor/libc/src/vxworks/mod.rs /^pub type sa_family_t = ::c_uchar;$/;" t +sa_flags builtins_rust/wait/src/signal.rs /^ pub sa_flags: ::std::os::raw::c_int,$/;" m struct:sigaction +sa_flags lib/readline/signals.c /^typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt;$/;" m struct:__anon177730800108 typeref:typename:int file: +sa_flags r_bash/src/lib.rs /^ pub sa_flags: ::std::os::raw::c_int,$/;" m struct:sigaction +sa_flags r_glob/src/lib.rs /^ pub sa_flags: ::std::os::raw::c_int,$/;" m struct:sigaction +sa_flags r_readline/src/lib.rs /^ pub sa_flags: ::std::os::raw::c_int,$/;" m struct:sigaction +sa_handler lib/readline/signals.c /^typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt;$/;" m struct:__anon177730800108 typeref:typename:SigHandler * file: +sa_mask builtins_rust/wait/src/signal.rs /^ pub sa_mask: __sigset_t,$/;" m struct:sigaction +sa_mask lib/readline/signals.c /^typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt;$/;" m struct:__anon177730800108 typeref:typename:int file: +sa_mask r_bash/src/lib.rs /^ pub sa_mask: __sigset_t,$/;" m struct:sigaction +sa_mask r_glob/src/lib.rs /^ pub sa_mask: __sigset_t,$/;" m struct:sigaction +sa_mask r_readline/src/lib.rs /^ pub sa_mask: __sigset_t,$/;" m struct:sigaction +sa_restorer builtins_rust/wait/src/signal.rs /^ pub sa_restorer: ::std::option::Option,$/;" m struct:sigaction +sa_restorer r_bash/src/lib.rs /^ pub sa_restorer: ::core::option::Option,$/;" m struct:sigaction +sa_restorer r_glob/src/lib.rs /^ pub sa_restorer: ::core::option::Option,$/;" m struct:sigaction +sa_restorer r_readline/src/lib.rs /^ pub sa_restorer: ::core::option::Option,$/;" m struct:sigaction +sae_associd_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type sae_associd_t = u32;$/;" t +sae_connid_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type sae_connid_t = u32;$/;" t +safe vendor/libloading/src/lib.rs /^mod safe;$/;" n +sallocx vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn sallocx(ptr: *const ::c_void, flags: ::c_int) -> ::size_t;$/;" f +same_file builtins_rust/cd/src/lib.rs /^ fn same_file($/;" f +same_file general.c /^same_file (path1, path2, stp1, stp2)$/;" f +same_member vendor/thiserror-impl/src/valid.rs /^fn same_member(one: &Field, two: &Field) -> bool {$/;" f +same_receiver vendor/futures-channel/src/mpsc/mod.rs /^ fn same_receiver(&self, other: &Self) -> bool {$/;" P implementation:BoundedSenderInner +same_receiver vendor/futures-channel/src/mpsc/mod.rs /^ fn same_receiver(&self, other: &Self) -> bool {$/;" P implementation:UnboundedSenderInner +same_receiver vendor/futures-channel/src/mpsc/mod.rs /^ pub fn same_receiver(&self, other: &Self) -> bool {$/;" P implementation:Sender +same_receiver vendor/futures-channel/src/mpsc/mod.rs /^ pub fn same_receiver(&self, other: &Self) -> bool {$/;" P implementation:UnboundedSender +same_receiver vendor/futures-channel/tests/mpsc.rs /^fn same_receiver() {$/;" f +same_scope vendor/syn/src/buffer.rs /^pub(crate) fn same_scope(a: Cursor, b: Cursor) -> bool {$/;" f +sapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "sapi")] pub mod sapi;$/;" n +sapi51 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "sapi51")] pub mod sapi51;$/;" n +sapi53 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "sapi53")] pub mod sapi53;$/;" n +sapiddk vendor/winapi/src/um/mod.rs /^#[cfg(feature = "sapiddk")] pub mod sapiddk;$/;" n +sapiddk51 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "sapiddk51")] pub mod sapiddk51;$/;" n +sassert_next vendor/futures/tests/sink.rs /^fn sassert_next(s: &mut S, item: S::Item)$/;" f +saturated_ceil vendor/stdext/src/num/float_convert.rs /^ fn saturated_ceil(self) -> Int;$/;" P interface:FloatConvert +saturated_floor vendor/stdext/src/num/float_convert.rs /^ fn saturated_floor(self) -> Int;$/;" P interface:FloatConvert +saturated_impl vendor/stdext/src/num/float_convert.rs /^macro_rules! saturated_impl {$/;" M +saturated_round vendor/stdext/src/num/float_convert.rs /^ fn saturated_round(self) -> Int;$/;" P interface:FloatConvert +saturating_add vendor/stdext/src/num/integer.rs /^ fn saturating_add(self, rhs: Self) -> Self;$/;" P interface:Integer +saturating_mul vendor/stdext/src/num/integer.rs /^ fn saturating_mul(self, rhs: Self) -> Self;$/;" P interface:Integer +saturating_pow vendor/stdext/src/num/integer.rs /^ fn saturating_pow(self, exp: u32) -> Self;$/;" P interface:Integer +saturating_sub vendor/stdext/src/num/integer.rs /^ fn saturating_sub(self, rhs: Self) -> Self;$/;" P interface:Integer +save_bash_argv r_bash/src/lib.rs /^ pub fn save_bash_argv();$/;" f +save_bash_argv variables.c /^save_bash_argv ()$/;" f typeref:typename:void +save_bash_input input.c /^save_bash_input (fd, new_fd)$/;" f +save_bash_input r_bash/src/lib.rs /^ pub fn save_bash_input($/;" f +save_builtin builtins/mkbuiltins.c /^save_builtin (builtin)$/;" f +save_directory_hook bashline.c /^save_directory_hook ()$/;" f typeref:typename:rl_icppfunc_t * file: +save_dollar_vars variables.c /^save_dollar_vars ()$/;" f typeref:typename:char ** file: +save_history bashhist.c /^save_history ()$/;" f typeref:typename:void +save_history r_bash/src/lib.rs /^ pub fn save_history();$/;" f +save_input_line_state r_bash/src/lib.rs /^ pub fn save_input_line_state(arg1: *mut sh_input_line_state_t) -> *mut sh_input_line_state_t/;" f +save_line lib/readline/rlprivate.h /^ int save_line;$/;" m struct:__rl_search_context typeref:typename:int +save_line r_readline/src/lib.rs /^ pub save_line: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +save_mark lib/readline/rlprivate.h /^ int save_mark;$/;" m struct:__rl_search_context typeref:typename:int +save_mark r_readline/src/lib.rs /^ pub save_mark: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +save_parser_state r_bash/src/lib.rs /^ pub fn save_parser_state(arg1: *mut sh_parser_state_t) -> *mut sh_parser_state_t;$/;" f +save_pgrp_pipe jobs.c /^save_pgrp_pipe (p, clear)$/;" f +save_pgrp_pipe r_bash/src/lib.rs /^ pub fn save_pgrp_pipe(arg1: *mut ::std::os::raw::c_int, arg2: ::std::os::raw::c_int);$/;" f +save_pgrp_pipe r_jobs/src/lib.rs /^pub unsafe extern "C" fn save_pgrp_pipe(mut p: *mut c_int, mut clear: c_int,) $/;" f +save_pipeline jobs.c /^save_pipeline (clear)$/;" f +save_pipeline r_bash/src/lib.rs /^ pub fn save_pipeline(arg1: ::std::os::raw::c_int);$/;" f +save_pipeline r_jobs/src/lib.rs /^pub unsafe extern "C" fn save_pipeline(clear:c_int) $/;" f +save_pipestatus_array r_bash/src/lib.rs /^ pub fn save_pipestatus_array() -> *mut ARRAY;$/;" f +save_pipestatus_array variables.c /^save_pipestatus_array ()$/;" f typeref:typename:ARRAY * +save_point lib/readline/rlprivate.h /^ int save_point;$/;" m struct:__rl_search_context typeref:typename:int +save_point r_readline/src/lib.rs /^ pub save_point: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +save_posix_options general.c /^save_posix_options ()$/;" f typeref:typename:void +save_posix_options r_bash/src/lib.rs /^ pub fn save_posix_options();$/;" f +save_posix_options r_glob/src/lib.rs /^ pub fn save_posix_options();$/;" f +save_posix_options r_readline/src/lib.rs /^ pub fn save_posix_options();$/;" f +save_proc_status jobs.c /^save_proc_status (pid, status)$/;" f +save_proc_status r_bash/src/lib.rs /^ pub fn save_proc_status(arg1: pid_t, arg2: ::std::os::raw::c_int);$/;" f +save_proc_status r_jobs/src/lib.rs /^pub unsafe extern "C" fn save_proc_status(mut pid: pid_t, mut status: c_int) {$/;" f +save_stty r_jobs/src/lib.rs /^ static mut save_stty: libc::termios = libc::termios {$/;" v function:start_job +save_token_state r_bash/src/lib.rs /^ pub fn save_token_state() -> *mut ::std::os::raw::c_int;$/;" f +save_tty_chars lib/readline/rltty.c /^save_tty_chars (TIOTYPE *tiop)$/;" f typeref:typename:void file: +save_undo_list lib/readline/rlprivate.h /^ UNDO_LIST *save_undo_list;$/;" m struct:__rl_search_context typeref:typename:UNDO_LIST * +save_undo_list r_readline/src/lib.rs /^ pub save_undo_list: *mut UNDO_LIST,$/;" m struct:__rl_search_context +saved_already_making_children jobs.c /^static int saved_already_making_children;$/;" v typeref:typename:int file: +saved_already_making_children r_jobs/src/lib.rs /^pub static mut saved_already_making_children:c_int = 0;$/;" v +saved_builtins builtins/mkbuiltins.c /^ARRAY *saved_builtins = (ARRAY *)NULL;$/;" v typeref:typename:ARRAY * +saved_command_line_count r_bash/src/lib.rs /^ pub static mut saved_command_line_count: ::std::os::raw::c_int;$/;" v +saved_dollar_vars variables.c /^struct saved_dollar_vars {$/;" s file: +saved_errno lib/intl/dcigettext.c /^ int saved_errno;$/;" v typeref:typename:int +saved_history_logical_offset lib/readline/misc.c /^static int saved_history_logical_offset = -1;$/;" v typeref:typename:int file: +saved_invis_chars_first_line lib/readline/display.c /^static int saved_invis_chars_first_line;$/;" v typeref:typename:int file: +saved_last_invisible lib/readline/display.c /^static int saved_last_invisible;$/;" v typeref:typename:int file: +saved_local_length lib/readline/display.c /^static int saved_local_length;$/;" v typeref:typename:int file: +saved_local_prefix lib/readline/display.c /^static char *saved_local_prefix;$/;" v typeref:typename:char * file: +saved_local_prompt lib/readline/display.c /^static char *saved_local_prompt;$/;" v typeref:typename:char * file: +saved_local_prompt_newlines lib/readline/display.c /^static int *saved_local_prompt_newlines;$/;" v typeref:typename:int * file: +saved_macro lib/readline/macro.c /^struct saved_macro {$/;" s file: +saved_physical_chars lib/readline/display.c /^static int saved_physical_chars;$/;" v typeref:typename:int file: +saved_pipeline jobs.c /^static struct pipeline_saver *saved_pipeline;$/;" v typeref:struct:pipeline_saver * file: +saved_pipeline r_jobs/src/lib.rs /^pub static mut saved_pipeline:*mut pipeline_saver = 0 as *mut pipeline_saver;$/;" v +saved_posix_vars general.c /^static char *saved_posix_vars = 0;$/;" v typeref:typename:char * file: +saved_prefix_length lib/readline/display.c /^static int saved_prefix_length;$/;" v typeref:typename:int file: +saved_visible_length lib/readline/display.c /^static int saved_visible_length;$/;" v typeref:typename:int file: +savestring builtins/mkbuiltins.c /^#define savestring(/;" d file: +savestring general.h /^# define savestring(/;" d +savestring lib/readline/histlib.h /^#define savestring(/;" d +savestring lib/readline/rldefs.h /^#define savestring(/;" d +savestring lib/readline/savestring.c /^savestring (const char *s)$/;" f typeref:typename:char * +savestring lib/readline/tilde.c /^#define savestring(/;" d file: +savestring lib/tilde/tilde.c /^#define savestring(/;" d file: +savestring r_bashhist/src/lib.rs /^macro_rules! savestring {$/;" M +savestring r_jobs/src/lib.rs /^macro_rules! savestring {$/;" M +savestring.o lib/readline/Makefile.in /^savestring.o: ${BUILD_DIR}\/config.h$/;" t +savestring.o lib/readline/Makefile.in /^savestring.o: savestring.c$/;" t +savestring.o lib/readline/Makefile.in /^savestring.o: xmalloc.h$/;" t +sbintime_t vendor/libc/src/unix/newlib/horizon/mod.rs /^pub type sbintime_t = ::c_longlong;$/;" t +sbrand lib/sh/random.c /^sbrand (seed)$/;" f +sbrand r_bash/src/lib.rs /^ pub fn sbrand(arg1: ::std::os::raw::c_ulong);$/;" f +sbrand32 lib/sh/random.c /^sbrand32 (seed)$/;" f file: +sbrk r_bash/src/lib.rs /^ pub fn sbrk(__delta: isize) -> *mut ::std::os::raw::c_void;$/;" f +sbrk r_glob/src/lib.rs /^ pub fn sbrk(__delta: isize) -> *mut ::std::os::raw::c_void;$/;" f +sbrk r_readline/src/lib.rs /^ pub fn sbrk(__delta: isize) -> *mut ::std::os::raw::c_void;$/;" f +sbrk vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn sbrk(increment: ::c_int) -> *mut ::c_void;$/;" f +sbrk vendor/libc/src/unix/haiku/mod.rs /^ pub fn sbrk(increment: ::intptr_t) -> *mut ::c_void;$/;" f +sbrk vendor/libc/src/unix/linux_like/mod.rs /^ pub fn sbrk(increment: ::intptr_t) -> *mut ::c_void;$/;" f +sbrk vendor/libc/src/wasi.rs /^ pub fn sbrk(increment: ::intptr_t) -> *mut ::c_void;$/;" f +scale_mem vendor/nix/src/sys/sysinfo.rs /^ fn scale_mem(&self, units: mem_blocks_t) -> u64 {$/;" P implementation:SysInfo +scan vendor/futures-util/src/stream/stream/mod.rs /^ fn scan(self, initial_state: S, f: F) -> Scan$/;" P interface:StreamExt +scan vendor/futures-util/src/stream/stream/mod.rs /^mod scan;$/;" n +scan vendor/futures/tests/stream.rs /^fn scan() {$/;" f +scan_escape support/man2html.c /^scan_escape(char *c)$/;" f typeref:typename:char * file: +scan_expression support/man2html.c /^scan_expression(char *c, int *result)$/;" f typeref:typename:char * file: +scan_file lib/termcap/termcap.c /^scan_file (str, fd, bufp)$/;" f file: +scan_format support/man2html.c /^scan_format(char *c, TABLEROW ** result, int *maxcol)$/;" f typeref:typename:char * file: +scan_request support/man2html.c /^scan_request(char *c)$/;" f typeref:typename:char * file: +scan_table support/man2html.c /^scan_table(char *c)$/;" f typeref:typename:char * file: +scan_troff support/man2html.c /^scan_troff(char *c, int san, char **result)$/;" f typeref:typename:char * file: +scan_troff_mandoc support/man2html.c /^scan_troff_mandoc(char *c, int san, char **result)$/;" f typeref:typename:char * file: +scandir r_bash/src/lib.rs /^ pub fn scandir($/;" f +scandir r_readline/src/lib.rs /^ pub fn scandir($/;" f +scandir64 r_bash/src/lib.rs /^ pub fn scandir64($/;" f +scandir64 r_readline/src/lib.rs /^ pub fn scandir64($/;" f +scandirat r_bash/src/lib.rs /^ pub fn scandirat($/;" f +scandirat r_readline/src/lib.rs /^ pub fn scandirat($/;" f +scandirat64 r_bash/src/lib.rs /^ pub fn scandirat64($/;" f +scandirat64 r_readline/src/lib.rs /^ pub fn scandirat64($/;" f +scanf r_bash/src/lib.rs /^ pub fn scanf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;$/;" f +scanf r_readline/src/lib.rs /^ pub fn scanf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;$/;" f +scanf vendor/libc/src/fuchsia/mod.rs /^ pub fn scanf(format: *const ::c_char, ...) -> ::c_int;$/;" f +scanf vendor/libc/src/solid/mod.rs /^ pub fn scanf(arg1: *const c_char, ...) -> c_int;$/;" f +scanf vendor/libc/src/unix/mod.rs /^ pub fn scanf(format: *const ::c_char, ...) -> ::c_int;$/;" f +scanf vendor/libc/src/vxworks/mod.rs /^ pub fn scanf(format: *const ::c_char, ...) -> ::c_int;$/;" f +scanf vendor/libc/src/wasi.rs /^ pub fn scanf(format: *const ::c_char, ...) -> ::c_int;$/;" f +scaninbuff support/man2html.c /^static int scaninbuff = 0;$/;" v typeref:typename:int file: +sccs_version version.c /^const char * const sccs_version = SCCSVERSION;$/;" v typeref:typename:const char * const +sccsid lib/sh/inet_aton.c /^static char sccsid[] = "@(#)inet_addr.c 8.1 (Berkeley) 6\/17\/93";$/;" v typeref:typename:char[] file: +sceAtracAddStreamData vendor/libc/src/psp.rs /^ pub fn sceAtracAddStreamData(atrac_id: i32, bytes_to_add: u32) -> i32;$/;" f +sceAtracDecodeData vendor/libc/src/psp.rs /^ pub fn sceAtracDecodeData($/;" f +sceAtracGetAtracID vendor/libc/src/psp.rs /^ pub fn sceAtracGetAtracID(ui_codec_type: u32) -> i32;$/;" f +sceAtracGetBitrate vendor/libc/src/psp.rs /^ pub fn sceAtracGetBitrate(atrac_id: i32, out_bitrate: *mut i32) -> i32;$/;" f +sceAtracGetBufferInfoForReseting vendor/libc/src/psp.rs /^ pub fn sceAtracGetBufferInfoForReseting($/;" f +sceAtracGetChannel vendor/libc/src/psp.rs /^ pub fn sceAtracGetChannel(atrac_id: i32, pui_channel: *mut u32) -> i32;$/;" f +sceAtracGetInternalErrorInfo vendor/libc/src/psp.rs /^ pub fn sceAtracGetInternalErrorInfo(atrac_id: i32, pi_result: *mut i32) -> i32;$/;" f +sceAtracGetLoopStatus vendor/libc/src/psp.rs /^ pub fn sceAtracGetLoopStatus($/;" f +sceAtracGetMaxSample vendor/libc/src/psp.rs /^ pub fn sceAtracGetMaxSample(atrac_id: i32, out_max: *mut i32) -> i32;$/;" f +sceAtracGetNextDecodePosition vendor/libc/src/psp.rs /^ pub fn sceAtracGetNextDecodePosition(atrac_id: i32, pui_sample_position: *mut u32) -> i32;$/;" f +sceAtracGetNextSample vendor/libc/src/psp.rs /^ pub fn sceAtracGetNextSample(atrac_id: i32, out_n: *mut i32) -> i32;$/;" f +sceAtracGetRemainFrame vendor/libc/src/psp.rs /^ pub fn sceAtracGetRemainFrame(atrac_id: i32, out_remain_frame: *mut i32) -> i32;$/;" f +sceAtracGetSecondBufferInfo vendor/libc/src/psp.rs /^ pub fn sceAtracGetSecondBufferInfo($/;" f +sceAtracGetSoundSample vendor/libc/src/psp.rs /^ pub fn sceAtracGetSoundSample($/;" f +sceAtracGetStreamDataInfo vendor/libc/src/psp.rs /^ pub fn sceAtracGetStreamDataInfo($/;" f +sceAtracReleaseAtracID vendor/libc/src/psp.rs /^ pub fn sceAtracReleaseAtracID(atrac_id: i32) -> i32;$/;" f +sceAtracResetPlayPosition vendor/libc/src/psp.rs /^ pub fn sceAtracResetPlayPosition($/;" f +sceAtracSetData vendor/libc/src/psp.rs /^ pub fn sceAtracSetData(atrac_id: i32, puc_buffer_addr: *mut u8, ui_buffer_byte: u32) -> i32;$/;" f +sceAtracSetDataAndGetID vendor/libc/src/psp.rs /^ pub fn sceAtracSetDataAndGetID(buf: *mut c_void, bufsize: usize) -> i32;$/;" f +sceAtracSetHalfwayBuffer vendor/libc/src/psp.rs /^ pub fn sceAtracSetHalfwayBuffer($/;" f +sceAtracSetHalfwayBufferAndGetID vendor/libc/src/psp.rs /^ pub fn sceAtracSetHalfwayBufferAndGetID($/;" f +sceAtracSetLoopNum vendor/libc/src/psp.rs /^ pub fn sceAtracSetLoopNum(atrac_id: i32, nloops: i32) -> i32;$/;" f +sceAtracSetSecondBuffer vendor/libc/src/psp.rs /^ pub fn sceAtracSetSecondBuffer($/;" f +sceAudioChRelease vendor/libc/src/psp.rs /^ pub fn sceAudioChRelease(channel: i32) -> i32;$/;" f +sceAudioChReserve vendor/libc/src/psp.rs /^ pub fn sceAudioChReserve(channel: i32, sample_count: i32, format: AudioFormat) -> i32;$/;" f +sceAudioChangeChannelConfig vendor/libc/src/psp.rs /^ pub fn sceAudioChangeChannelConfig(channel: i32, format: AudioFormat) -> i32;$/;" f +sceAudioChangeChannelVolume vendor/libc/src/psp.rs /^ pub fn sceAudioChangeChannelVolume(channel: i32, left_vol: i32, right_vol: i32) -> i32;$/;" f +sceAudioGetChannelRestLen vendor/libc/src/psp.rs /^ pub fn sceAudioGetChannelRestLen(channel: i32) -> i32;$/;" f +sceAudioGetChannelRestLength vendor/libc/src/psp.rs /^ pub fn sceAudioGetChannelRestLength(channel: i32) -> i32;$/;" f +sceAudioGetInputLength vendor/libc/src/psp.rs /^ pub fn sceAudioGetInputLength() -> i32;$/;" f +sceAudioInput vendor/libc/src/psp.rs /^ pub fn sceAudioInput(sample_count: i32, freq: AudioInputFrequency, buf: *mut c_void);$/;" f +sceAudioInputBlocking vendor/libc/src/psp.rs /^ pub fn sceAudioInputBlocking(sample_count: i32, freq: AudioInputFrequency, buf: *mut c_void)/;" f +sceAudioInputInit vendor/libc/src/psp.rs /^ pub fn sceAudioInputInit(unknown1: i32, gain: i32, unknown2: i32) -> i32;$/;" f +sceAudioInputInitEx vendor/libc/src/psp.rs /^ pub fn sceAudioInputInitEx(params: *mut AudioInputParams) -> i32;$/;" f +sceAudioOutput vendor/libc/src/psp.rs /^ pub fn sceAudioOutput(channel: i32, vol: i32, buf: *mut c_void) -> i32;$/;" f +sceAudioOutput2ChangeLength vendor/libc/src/psp.rs /^ pub fn sceAudioOutput2ChangeLength(sample_count: i32) -> i32;$/;" f +sceAudioOutput2GetRestSample vendor/libc/src/psp.rs /^ pub fn sceAudioOutput2GetRestSample() -> i32;$/;" f +sceAudioOutput2OutputBlocking vendor/libc/src/psp.rs /^ pub fn sceAudioOutput2OutputBlocking(vol: i32, buf: *mut c_void) -> i32;$/;" f +sceAudioOutput2Release vendor/libc/src/psp.rs /^ pub fn sceAudioOutput2Release() -> i32;$/;" f +sceAudioOutput2Reserve vendor/libc/src/psp.rs /^ pub fn sceAudioOutput2Reserve(sample_count: i32) -> i32;$/;" f +sceAudioOutputBlocking vendor/libc/src/psp.rs /^ pub fn sceAudioOutputBlocking(channel: i32, vol: i32, buf: *mut c_void) -> i32;$/;" f +sceAudioOutputPanned vendor/libc/src/psp.rs /^ pub fn sceAudioOutputPanned($/;" f +sceAudioOutputPannedBlocking vendor/libc/src/psp.rs /^ pub fn sceAudioOutputPannedBlocking($/;" f +sceAudioPollInputEnd vendor/libc/src/psp.rs /^ pub fn sceAudioPollInputEnd() -> i32;$/;" f +sceAudioSRCChRelease vendor/libc/src/psp.rs /^ pub fn sceAudioSRCChRelease() -> i32;$/;" f +sceAudioSRCChReserve vendor/libc/src/psp.rs /^ pub fn sceAudioSRCChReserve($/;" f +sceAudioSRCOutputBlocking vendor/libc/src/psp.rs /^ pub fn sceAudioSRCOutputBlocking(vol: i32, buf: *mut c_void) -> i32;$/;" f +sceAudioSetChannelDataLen vendor/libc/src/psp.rs /^ pub fn sceAudioSetChannelDataLen(channel: i32, sample_count: i32) -> i32;$/;" f +sceAudioWaitInputEnd vendor/libc/src/psp.rs /^ pub fn sceAudioWaitInputEnd() -> i32;$/;" f +sceCtrlGetIdleCancelThreshold vendor/libc/src/psp.rs /^ pub fn sceCtrlGetIdleCancelThreshold(idlereset: *mut i32, idleback: *mut i32) -> i32;$/;" f +sceCtrlGetSamplingCycle vendor/libc/src/psp.rs /^ pub fn sceCtrlGetSamplingCycle(pcycle: *mut i32) -> i32;$/;" f +sceCtrlGetSamplingMode vendor/libc/src/psp.rs /^ pub fn sceCtrlGetSamplingMode(pmode: *mut i32) -> i32;$/;" f +sceCtrlPeekBufferNegative vendor/libc/src/psp.rs /^ pub fn sceCtrlPeekBufferNegative(pad_data: *mut SceCtrlData, count: i32) -> i32;$/;" f +sceCtrlPeekBufferPositive vendor/libc/src/psp.rs /^ pub fn sceCtrlPeekBufferPositive(pad_data: *mut SceCtrlData, count: i32) -> i32;$/;" f +sceCtrlPeekLatch vendor/libc/src/psp.rs /^ pub fn sceCtrlPeekLatch(latch_data: *mut SceCtrlLatch) -> i32;$/;" f +sceCtrlReadBufferNegative vendor/libc/src/psp.rs /^ pub fn sceCtrlReadBufferNegative(pad_data: *mut SceCtrlData, count: i32) -> i32;$/;" f +sceCtrlReadBufferPositive vendor/libc/src/psp.rs /^ pub fn sceCtrlReadBufferPositive(pad_data: *mut SceCtrlData, count: i32) -> i32;$/;" f +sceCtrlReadLatch vendor/libc/src/psp.rs /^ pub fn sceCtrlReadLatch(latch_data: *mut SceCtrlLatch) -> i32;$/;" f +sceCtrlSetIdleCancelThreshold vendor/libc/src/psp.rs /^ pub fn sceCtrlSetIdleCancelThreshold(idlereset: i32, idleback: i32) -> i32;$/;" f +sceCtrlSetSamplingCycle vendor/libc/src/psp.rs /^ pub fn sceCtrlSetSamplingCycle(cycle: i32) -> i32;$/;" f +sceCtrlSetSamplingMode vendor/libc/src/psp.rs /^ pub fn sceCtrlSetSamplingMode(mode: CtrlMode) -> i32;$/;" f +sceDisplayGetAccumulatedHcount vendor/libc/src/psp.rs /^ pub fn sceDisplayGetAccumulatedHcount() -> i32;$/;" f +sceDisplayGetCurrentHcount vendor/libc/src/psp.rs /^ pub fn sceDisplayGetCurrentHcount() -> i32;$/;" f +sceDisplayGetFrameBuf vendor/libc/src/psp.rs /^ pub fn sceDisplayGetFrameBuf($/;" f +sceDisplayGetFramePerSec vendor/libc/src/psp.rs /^ pub fn sceDisplayGetFramePerSec() -> f32;$/;" f +sceDisplayGetMode vendor/libc/src/psp.rs /^ pub fn sceDisplayGetMode(pmode: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> i32;$/;" f +sceDisplayGetVcount vendor/libc/src/psp.rs /^ pub fn sceDisplayGetVcount() -> u32;$/;" f +sceDisplayIsForeground vendor/libc/src/psp.rs /^ pub fn sceDisplayIsForeground() -> i32;$/;" f +sceDisplayIsVblank vendor/libc/src/psp.rs /^ pub fn sceDisplayIsVblank() -> i32;$/;" f +sceDisplaySetFrameBuf vendor/libc/src/psp.rs /^ pub fn sceDisplaySetFrameBuf($/;" f +sceDisplaySetMode vendor/libc/src/psp.rs /^ pub fn sceDisplaySetMode(mode: DisplayMode, width: usize, height: usize) -> u32;$/;" f +sceDisplayWaitVblank vendor/libc/src/psp.rs /^ pub fn sceDisplayWaitVblank() -> i32;$/;" f +sceDisplayWaitVblankCB vendor/libc/src/psp.rs /^ pub fn sceDisplayWaitVblankCB() -> i32;$/;" f +sceDisplayWaitVblankStart vendor/libc/src/psp.rs /^ pub fn sceDisplayWaitVblankStart() -> i32;$/;" f +sceDisplayWaitVblankStartCB vendor/libc/src/psp.rs /^ pub fn sceDisplayWaitVblankStartCB() -> i32;$/;" f +sceGeBreak vendor/libc/src/psp.rs /^ pub fn sceGeBreak(mode: i32, p_param: *mut GeBreakParam) -> i32;$/;" f +sceGeContinue vendor/libc/src/psp.rs /^ pub fn sceGeContinue() -> i32;$/;" f +sceGeDrawSync vendor/libc/src/psp.rs /^ pub fn sceGeDrawSync(sync_type: i32) -> GeListState;$/;" f +sceGeEdramGetAddr vendor/libc/src/psp.rs /^ pub fn sceGeEdramGetAddr() -> *mut u8;$/;" f +sceGeEdramGetSize vendor/libc/src/psp.rs /^ pub fn sceGeEdramGetSize() -> u32;$/;" f +sceGeEdramSetAddrTranslation vendor/libc/src/psp.rs /^ pub fn sceGeEdramSetAddrTranslation(width: i32) -> i32;$/;" f +sceGeGetCmd vendor/libc/src/psp.rs /^ pub fn sceGeGetCmd(cmd: i32) -> u32;$/;" f +sceGeGetMtx vendor/libc/src/psp.rs /^ pub fn sceGeGetMtx(type_: GeMatrixType, matrix: *mut c_void) -> i32;$/;" f +sceGeGetStack vendor/libc/src/psp.rs /^ pub fn sceGeGetStack(stack_id: i32, stack: *mut GeStack) -> i32;$/;" f +sceGeListDeQueue vendor/libc/src/psp.rs /^ pub fn sceGeListDeQueue(qid: i32) -> i32;$/;" f +sceGeListEnQueue vendor/libc/src/psp.rs /^ pub fn sceGeListEnQueue($/;" f +sceGeListEnQueueHead vendor/libc/src/psp.rs /^ pub fn sceGeListEnQueueHead($/;" f +sceGeListSync vendor/libc/src/psp.rs /^ pub fn sceGeListSync(qid: i32, sync_type: i32) -> GeListState;$/;" f +sceGeListUpdateStallAddr vendor/libc/src/psp.rs /^ pub fn sceGeListUpdateStallAddr(qid: i32, stall: *mut c_void) -> i32;$/;" f +sceGeRestoreContext vendor/libc/src/psp.rs /^ pub fn sceGeRestoreContext(context: *const GeContext) -> i32;$/;" f +sceGeSaveContext vendor/libc/src/psp.rs /^ pub fn sceGeSaveContext(context: *mut GeContext) -> i32;$/;" f +sceGeSetCallback vendor/libc/src/psp.rs /^ pub fn sceGeSetCallback(cb: *mut GeCallbackData) -> i32;$/;" f +sceGeUnsetCallback vendor/libc/src/psp.rs /^ pub fn sceGeUnsetCallback(cbid: i32) -> i32;$/;" f +sceGuAlphaFunc vendor/libc/src/psp.rs /^ pub fn sceGuAlphaFunc(func: AlphaFunc, value: i32, mask: i32);$/;" f +sceGuAmbient vendor/libc/src/psp.rs /^ pub fn sceGuAmbient(color: u32);$/;" f +sceGuAmbientColor vendor/libc/src/psp.rs /^ pub fn sceGuAmbientColor(color: u32);$/;" f +sceGuBeginObject vendor/libc/src/psp.rs /^ pub fn sceGuBeginObject($/;" f +sceGuBlendFunc vendor/libc/src/psp.rs /^ pub fn sceGuBlendFunc(op: BlendOp, src: BlendSrc, dest: BlendDst, src_fix: u32, dest_fix: u3/;" f +sceGuBoneMatrix vendor/libc/src/psp.rs /^ pub fn sceGuBoneMatrix(index: u32, matrix: &ScePspFMatrix4);$/;" f +sceGuBreak vendor/libc/src/psp.rs /^ pub fn sceGuBreak(mode: i32);$/;" f +sceGuCallList vendor/libc/src/psp.rs /^ pub fn sceGuCallList(list: *const c_void);$/;" f +sceGuCallMode vendor/libc/src/psp.rs /^ pub fn sceGuCallMode(mode: i32);$/;" f +sceGuCheckList vendor/libc/src/psp.rs /^ pub fn sceGuCheckList() -> i32;$/;" f +sceGuClear vendor/libc/src/psp.rs /^ pub fn sceGuClear(flags: i32);$/;" f +sceGuClearColor vendor/libc/src/psp.rs /^ pub fn sceGuClearColor(color: u32);$/;" f +sceGuClearDepth vendor/libc/src/psp.rs /^ pub fn sceGuClearDepth(depth: u32);$/;" f +sceGuClearStencil vendor/libc/src/psp.rs /^ pub fn sceGuClearStencil(stencil: u32);$/;" f +sceGuClutLoad vendor/libc/src/psp.rs /^ pub fn sceGuClutLoad(num_blocks: i32, cbp: *const c_void);$/;" f +sceGuClutMode vendor/libc/src/psp.rs /^ pub fn sceGuClutMode(cpsm: ClutPixelFormat, shift: u32, mask: u32, a3: u32);$/;" f +sceGuColor vendor/libc/src/psp.rs /^ pub fn sceGuColor(color: u32);$/;" f +sceGuColorFunc vendor/libc/src/psp.rs /^ pub fn sceGuColorFunc(func: ColorFunc, color: u32, mask: u32);$/;" f +sceGuColorMaterial vendor/libc/src/psp.rs /^ pub fn sceGuColorMaterial(components: i32);$/;" f +sceGuContinue vendor/libc/src/psp.rs /^ pub fn sceGuContinue();$/;" f +sceGuCopyImage vendor/libc/src/psp.rs /^ pub fn sceGuCopyImage($/;" f +sceGuDepthBuffer vendor/libc/src/psp.rs /^ pub fn sceGuDepthBuffer(zbp: *mut c_void, zbw: i32);$/;" f +sceGuDepthFunc vendor/libc/src/psp.rs /^ pub fn sceGuDepthFunc(function: DepthFunc);$/;" f +sceGuDepthMask vendor/libc/src/psp.rs /^ pub fn sceGuDepthMask(mask: i32);$/;" f +sceGuDepthOffset vendor/libc/src/psp.rs /^ pub fn sceGuDepthOffset(offset: i32);$/;" f +sceGuDepthRange vendor/libc/src/psp.rs /^ pub fn sceGuDepthRange(near: i32, far: i32);$/;" f +sceGuDisable vendor/libc/src/psp.rs /^ pub fn sceGuDisable(state: GuState);$/;" f +sceGuDispBuffer vendor/libc/src/psp.rs /^ pub fn sceGuDispBuffer(width: i32, height: i32, dispbp: *mut c_void, dispbw: i32);$/;" f +sceGuDisplay vendor/libc/src/psp.rs /^ pub fn sceGuDisplay(state: bool) -> bool;$/;" f +sceGuDrawArray vendor/libc/src/psp.rs /^ pub fn sceGuDrawArray($/;" f +sceGuDrawArrayN vendor/libc/src/psp.rs /^ pub fn sceGuDrawArrayN($/;" f +sceGuDrawBezier vendor/libc/src/psp.rs /^ pub fn sceGuDrawBezier($/;" f +sceGuDrawBuffer vendor/libc/src/psp.rs /^ pub fn sceGuDrawBuffer(psm: DisplayPixelFormat, fbp: *mut c_void, fbw: i32);$/;" f +sceGuDrawBufferList vendor/libc/src/psp.rs /^ pub fn sceGuDrawBufferList(psm: DisplayPixelFormat, fbp: *mut c_void, fbw: i32);$/;" f +sceGuDrawSpline vendor/libc/src/psp.rs /^ pub fn sceGuDrawSpline($/;" f +sceGuEnable vendor/libc/src/psp.rs /^ pub fn sceGuEnable(state: GuState);$/;" f +sceGuEndObject vendor/libc/src/psp.rs /^ pub fn sceGuEndObject();$/;" f +sceGuFinish vendor/libc/src/psp.rs /^ pub fn sceGuFinish() -> i32;$/;" f +sceGuFinishId vendor/libc/src/psp.rs /^ pub fn sceGuFinishId(id: u32) -> i32;$/;" f +sceGuFog vendor/libc/src/psp.rs /^ pub fn sceGuFog(near: f32, far: f32, color: u32);$/;" f +sceGuFrontFace vendor/libc/src/psp.rs /^ pub fn sceGuFrontFace(order: FrontFaceDirection);$/;" f +sceGuGetAllStatus vendor/libc/src/psp.rs /^ pub fn sceGuGetAllStatus() -> i32;$/;" f +sceGuGetMemory vendor/libc/src/psp.rs /^ pub fn sceGuGetMemory(size: i32) -> *mut c_void;$/;" f +sceGuGetStatus vendor/libc/src/psp.rs /^ pub fn sceGuGetStatus(state: GuState) -> bool;$/;" f +sceGuInit vendor/libc/src/psp.rs /^ pub fn sceGuInit();$/;" f +sceGuLight vendor/libc/src/psp.rs /^ pub fn sceGuLight(light: i32, type_: LightType, components: i32, position: &ScePspFVector3);$/;" f +sceGuLightAtt vendor/libc/src/psp.rs /^ pub fn sceGuLightAtt(light: i32, atten0: f32, atten1: f32, atten2: f32);$/;" f +sceGuLightColor vendor/libc/src/psp.rs /^ pub fn sceGuLightColor(light: i32, component: i32, color: u32);$/;" f +sceGuLightMode vendor/libc/src/psp.rs /^ pub fn sceGuLightMode(mode: LightMode);$/;" f +sceGuLightSpot vendor/libc/src/psp.rs /^ pub fn sceGuLightSpot(light: i32, direction: &ScePspFVector3, exponent: f32, cutoff: f32);$/;" f +sceGuLogicalOp vendor/libc/src/psp.rs /^ pub fn sceGuLogicalOp(op: LogicalOperation);$/;" f +sceGuMaterial vendor/libc/src/psp.rs /^ pub fn sceGuMaterial(components: i32, color: u32);$/;" f +sceGuModelColor vendor/libc/src/psp.rs /^ pub fn sceGuModelColor(emissive: u32, ambient: u32, diffuse: u32, specular: u32);$/;" f +sceGuMorphWeight vendor/libc/src/psp.rs /^ pub fn sceGuMorphWeight(index: i32, weight: f32);$/;" f +sceGuOffset vendor/libc/src/psp.rs /^ pub fn sceGuOffset(x: u32, y: u32);$/;" f +sceGuPatchDivide vendor/libc/src/psp.rs /^ pub fn sceGuPatchDivide(ulevel: u32, vlevel: u32);$/;" f +sceGuPatchFrontFace vendor/libc/src/psp.rs /^ pub fn sceGuPatchFrontFace(a0: u32);$/;" f +sceGuPatchPrim vendor/libc/src/psp.rs /^ pub fn sceGuPatchPrim(prim: PatchPrimitive);$/;" f +sceGuPixelMask vendor/libc/src/psp.rs /^ pub fn sceGuPixelMask(mask: u32);$/;" f +sceGuScissor vendor/libc/src/psp.rs /^ pub fn sceGuScissor(x: i32, y: i32, w: i32, h: i32);$/;" f +sceGuSendCommandf vendor/libc/src/psp.rs /^ pub fn sceGuSendCommandf(cmd: GeCommand, argument: f32);$/;" f +sceGuSendCommandi vendor/libc/src/psp.rs /^ pub fn sceGuSendCommandi(cmd: GeCommand, argument: i32);$/;" f +sceGuSendList vendor/libc/src/psp.rs /^ pub fn sceGuSendList(mode: GuQueueMode, list: *const c_void, context: *mut GeContext);$/;" f +sceGuSetAllStatus vendor/libc/src/psp.rs /^ pub fn sceGuSetAllStatus(status: i32);$/;" f +sceGuSetCallback vendor/libc/src/psp.rs /^ pub fn sceGuSetCallback(signal: GuCallbackId, callback: GuCallback) -> GuCallback;$/;" f +sceGuSetDither vendor/libc/src/psp.rs /^ pub fn sceGuSetDither(matrix: &ScePspIMatrix4);$/;" f +sceGuSetMatrix vendor/libc/src/psp.rs /^ pub fn sceGuSetMatrix(type_: MatrixMode, matrix: &ScePspFMatrix4);$/;" f +sceGuSetStatus vendor/libc/src/psp.rs /^ pub fn sceGuSetStatus(state: GuState, status: i32);$/;" f +sceGuShadeModel vendor/libc/src/psp.rs /^ pub fn sceGuShadeModel(mode: ShadingModel);$/;" f +sceGuSignal vendor/libc/src/psp.rs /^ pub fn sceGuSignal(behavior: SignalBehavior, signal: i32);$/;" f +sceGuSpecular vendor/libc/src/psp.rs /^ pub fn sceGuSpecular(power: f32);$/;" f +sceGuStart vendor/libc/src/psp.rs /^ pub fn sceGuStart(context_type: GuContextType, list: *mut c_void);$/;" f +sceGuStencilFunc vendor/libc/src/psp.rs /^ pub fn sceGuStencilFunc(func: StencilFunc, ref_: i32, mask: i32);$/;" f +sceGuStencilOp vendor/libc/src/psp.rs /^ pub fn sceGuStencilOp(fail: StencilOperation, zfail: StencilOperation, zpass: StencilOperati/;" f +sceGuSwapBuffers vendor/libc/src/psp.rs /^ pub fn sceGuSwapBuffers() -> *mut c_void;$/;" f +sceGuSync vendor/libc/src/psp.rs /^ pub fn sceGuSync(mode: GuSyncMode, behavior: GuSyncBehavior) -> GeListState;$/;" f +sceGuTerm vendor/libc/src/psp.rs /^ pub fn sceGuTerm();$/;" f +sceGuTexEnvColor vendor/libc/src/psp.rs /^ pub fn sceGuTexEnvColor(color: u32);$/;" f +sceGuTexFilter vendor/libc/src/psp.rs /^ pub fn sceGuTexFilter(min: TextureFilter, mag: TextureFilter);$/;" f +sceGuTexFlush vendor/libc/src/psp.rs /^ pub fn sceGuTexFlush();$/;" f +sceGuTexFunc vendor/libc/src/psp.rs /^ pub fn sceGuTexFunc(tfx: TextureEffect, tcc: TextureColorComponent);$/;" f +sceGuTexImage vendor/libc/src/psp.rs /^ pub fn sceGuTexImage($/;" f +sceGuTexLevelMode vendor/libc/src/psp.rs /^ pub fn sceGuTexLevelMode(mode: TextureLevelMode, bias: f32);$/;" f +sceGuTexMapMode vendor/libc/src/psp.rs /^ pub fn sceGuTexMapMode(mode: TextureMapMode, a1: u32, a2: u32);$/;" f +sceGuTexMode vendor/libc/src/psp.rs /^ pub fn sceGuTexMode(tpsm: TexturePixelFormat, maxmips: i32, a2: i32, swizzle: i32);$/;" f +sceGuTexOffset vendor/libc/src/psp.rs /^ pub fn sceGuTexOffset(u: f32, v: f32);$/;" f +sceGuTexProjMapMode vendor/libc/src/psp.rs /^ pub fn sceGuTexProjMapMode(mode: TextureProjectionMapMode);$/;" f +sceGuTexScale vendor/libc/src/psp.rs /^ pub fn sceGuTexScale(u: f32, v: f32);$/;" f +sceGuTexSlope vendor/libc/src/psp.rs /^ pub fn sceGuTexSlope(slope: f32);$/;" f +sceGuTexSync vendor/libc/src/psp.rs /^ pub fn sceGuTexSync();$/;" f +sceGuTexWrap vendor/libc/src/psp.rs /^ pub fn sceGuTexWrap(u: GuTexWrapMode, v: GuTexWrapMode);$/;" f +sceGuViewport vendor/libc/src/psp.rs /^ pub fn sceGuViewport(cx: i32, cy: i32, width: i32, height: i32);$/;" f +sceGumDrawArray vendor/libc/src/psp.rs /^ pub fn sceGumDrawArray($/;" f +sceGumDrawArrayN vendor/libc/src/psp.rs /^ pub fn sceGumDrawArrayN($/;" f +sceGumDrawBezier vendor/libc/src/psp.rs /^ pub fn sceGumDrawBezier($/;" f +sceGumDrawSpline vendor/libc/src/psp.rs /^ pub fn sceGumDrawSpline($/;" f +sceGumFastInverse vendor/libc/src/psp.rs /^ pub fn sceGumFastInverse();$/;" f +sceGumFullInverse vendor/libc/src/psp.rs /^ pub fn sceGumFullInverse();$/;" f +sceGumLoadIdentity vendor/libc/src/psp.rs /^ pub fn sceGumLoadIdentity();$/;" f +sceGumLoadMatrix vendor/libc/src/psp.rs /^ pub fn sceGumLoadMatrix(m: &ScePspFMatrix4);$/;" f +sceGumLookAt vendor/libc/src/psp.rs /^ pub fn sceGumLookAt(eye: &ScePspFVector3, center: &ScePspFVector3, up: &ScePspFVector3);$/;" f +sceGumMatrixMode vendor/libc/src/psp.rs /^ pub fn sceGumMatrixMode(mode: MatrixMode);$/;" f +sceGumMultMatrix vendor/libc/src/psp.rs /^ pub fn sceGumMultMatrix(m: &ScePspFMatrix4);$/;" f +sceGumOrtho vendor/libc/src/psp.rs /^ pub fn sceGumOrtho(left: f32, right: f32, bottom: f32, top: f32, near: f32, far: f32);$/;" f +sceGumPerspective vendor/libc/src/psp.rs /^ pub fn sceGumPerspective(fovy: f32, aspect: f32, near: f32, far: f32);$/;" f +sceGumPopMatrix vendor/libc/src/psp.rs /^ pub fn sceGumPopMatrix();$/;" f +sceGumPushMatrix vendor/libc/src/psp.rs /^ pub fn sceGumPushMatrix();$/;" f +sceGumRotateX vendor/libc/src/psp.rs /^ pub fn sceGumRotateX(angle: f32);$/;" f +sceGumRotateXYZ vendor/libc/src/psp.rs /^ pub fn sceGumRotateXYZ(v: &ScePspFVector3);$/;" f +sceGumRotateY vendor/libc/src/psp.rs /^ pub fn sceGumRotateY(angle: f32);$/;" f +sceGumRotateZ vendor/libc/src/psp.rs /^ pub fn sceGumRotateZ(angle: f32);$/;" f +sceGumRotateZYX vendor/libc/src/psp.rs /^ pub fn sceGumRotateZYX(v: &ScePspFVector3);$/;" f +sceGumScale vendor/libc/src/psp.rs /^ pub fn sceGumScale(v: &ScePspFVector3);$/;" f +sceGumStoreMatrix vendor/libc/src/psp.rs /^ pub fn sceGumStoreMatrix(m: &mut ScePspFMatrix4);$/;" f +sceGumTranslate vendor/libc/src/psp.rs /^ pub fn sceGumTranslate(v: &ScePspFVector3);$/;" f +sceGumUpdateMatrix vendor/libc/src/psp.rs /^ pub fn sceGumUpdateMatrix();$/;" f +sceHprmIsHeadphoneExist vendor/libc/src/psp.rs /^ pub fn sceHprmIsHeadphoneExist() -> i32;$/;" f +sceHprmIsMicrophoneExist vendor/libc/src/psp.rs /^ pub fn sceHprmIsMicrophoneExist() -> i32;$/;" f +sceHprmIsRemoteExist vendor/libc/src/psp.rs /^ pub fn sceHprmIsRemoteExist() -> i32;$/;" f +sceHprmPeekCurrentKey vendor/libc/src/psp.rs /^ pub fn sceHprmPeekCurrentKey(key: *mut i32) -> i32;$/;" f +sceHprmPeekLatch vendor/libc/src/psp.rs /^ pub fn sceHprmPeekLatch(latch: *mut [u32; 4]) -> i32;$/;" f +sceHprmReadLatch vendor/libc/src/psp.rs /^ pub fn sceHprmReadLatch(latch: *mut [u32; 4]) -> i32;$/;" f +sceHttpAbortRequest vendor/libc/src/psp.rs /^ pub fn sceHttpAbortRequest(request_id: i32) -> i32;$/;" f +sceHttpAddExtraHeader vendor/libc/src/psp.rs /^ pub fn sceHttpAddExtraHeader(id: i32, name: *mut u8, value: *mut u8, unknown1: i32) -> i32;$/;" f +sceHttpCreateConnection vendor/libc/src/psp.rs /^ pub fn sceHttpCreateConnection($/;" f +sceHttpCreateConnectionWithURL vendor/libc/src/psp.rs /^ pub fn sceHttpCreateConnectionWithURL(templateid: i32, url: *const u8, unknown1: i32) -> i32/;" f +sceHttpCreateRequest vendor/libc/src/psp.rs /^ pub fn sceHttpCreateRequest($/;" f +sceHttpCreateRequestWithURL vendor/libc/src/psp.rs /^ pub fn sceHttpCreateRequestWithURL($/;" f +sceHttpCreateTemplate vendor/libc/src/psp.rs /^ pub fn sceHttpCreateTemplate(agent: *mut u8, unknown1: i32, unknown2: i32) -> i32;$/;" f +sceHttpDeleteConnection vendor/libc/src/psp.rs /^ pub fn sceHttpDeleteConnection(connection_id: i32) -> i32;$/;" f +sceHttpDeleteHeader vendor/libc/src/psp.rs /^ pub fn sceHttpDeleteHeader(id: i32, name: *const u8) -> i32;$/;" f +sceHttpDeleteRequest vendor/libc/src/psp.rs /^ pub fn sceHttpDeleteRequest(request_id: i32) -> i32;$/;" f +sceHttpDeleteTemplate vendor/libc/src/psp.rs /^ pub fn sceHttpDeleteTemplate(templateid: i32) -> i32;$/;" f +sceHttpDisableAuth vendor/libc/src/psp.rs /^ pub fn sceHttpDisableAuth(id: i32) -> i32;$/;" f +sceHttpDisableCache vendor/libc/src/psp.rs /^ pub fn sceHttpDisableCache(id: i32) -> i32;$/;" f +sceHttpDisableCookie vendor/libc/src/psp.rs /^ pub fn sceHttpDisableCookie(id: i32) -> i32;$/;" f +sceHttpDisableKeepAlive vendor/libc/src/psp.rs /^ pub fn sceHttpDisableKeepAlive(id: i32) -> i32;$/;" f +sceHttpDisableRedirect vendor/libc/src/psp.rs /^ pub fn sceHttpDisableRedirect(id: i32) -> i32;$/;" f +sceHttpEnableAuth vendor/libc/src/psp.rs /^ pub fn sceHttpEnableAuth(id: i32) -> i32;$/;" f +sceHttpEnableCache vendor/libc/src/psp.rs /^ pub fn sceHttpEnableCache(id: i32) -> i32;$/;" f +sceHttpEnableCookie vendor/libc/src/psp.rs /^ pub fn sceHttpEnableCookie(id: i32) -> i32;$/;" f +sceHttpEnableKeepAlive vendor/libc/src/psp.rs /^ pub fn sceHttpEnableKeepAlive(id: i32) -> i32;$/;" f +sceHttpEnableRedirect vendor/libc/src/psp.rs /^ pub fn sceHttpEnableRedirect(id: i32) -> i32;$/;" f +sceHttpEnd vendor/libc/src/psp.rs /^ pub fn sceHttpEnd() -> i32;$/;" f +sceHttpEndCache vendor/libc/src/psp.rs /^ pub fn sceHttpEndCache() -> i32;$/;" f +sceHttpGetAllHeader vendor/libc/src/psp.rs /^ pub fn sceHttpGetAllHeader(request: i32, header: *mut *mut u8, header_size: *mut u32) -> i32/;" f +sceHttpGetContentLength vendor/libc/src/psp.rs /^ pub fn sceHttpGetContentLength(request_id: i32, content_length: *mut u64) -> i32;$/;" f +sceHttpGetNetworkErrno vendor/libc/src/psp.rs /^ pub fn sceHttpGetNetworkErrno(request: i32, err_num: *mut i32) -> i32;$/;" f +sceHttpGetProxy vendor/libc/src/psp.rs /^ pub fn sceHttpGetProxy($/;" f +sceHttpGetStatusCode vendor/libc/src/psp.rs /^ pub fn sceHttpGetStatusCode(request_id: i32, status_code: *mut i32) -> i32;$/;" f +sceHttpInit vendor/libc/src/psp.rs /^ pub fn sceHttpInit(unknown1: u32) -> i32;$/;" f +sceHttpInitCache vendor/libc/src/psp.rs /^ pub fn sceHttpInitCache(max_size: usize) -> i32;$/;" f +sceHttpLoadSystemCookie vendor/libc/src/psp.rs /^ pub fn sceHttpLoadSystemCookie() -> i32;$/;" f +sceHttpReadData vendor/libc/src/psp.rs /^ pub fn sceHttpReadData(request_id: i32, data: *mut c_void, data_size: u32) -> i32;$/;" f +sceHttpSaveSystemCookie vendor/libc/src/psp.rs /^ pub fn sceHttpSaveSystemCookie() -> i32;$/;" f +sceHttpSendRequest vendor/libc/src/psp.rs /^ pub fn sceHttpSendRequest(request_id: i32, data: *mut c_void, data_size: u32) -> i32;$/;" f +sceHttpSetAuthInfoCB vendor/libc/src/psp.rs /^ pub fn sceHttpSetAuthInfoCB(id: i32, cbfunc: HttpPasswordCB) -> i32;$/;" f +sceHttpSetConnectTimeOut vendor/libc/src/psp.rs /^ pub fn sceHttpSetConnectTimeOut(id: i32, timeout: u32) -> i32;$/;" f +sceHttpSetMallocFunction vendor/libc/src/psp.rs /^ pub fn sceHttpSetMallocFunction($/;" f +sceHttpSetProxy vendor/libc/src/psp.rs /^ pub fn sceHttpSetProxy($/;" f +sceHttpSetRecvTimeOut vendor/libc/src/psp.rs /^ pub fn sceHttpSetRecvTimeOut(id: i32, timeout: u32) -> i32;$/;" f +sceHttpSetResHeaderMaxSize vendor/libc/src/psp.rs /^ pub fn sceHttpSetResHeaderMaxSize(id: i32, header_size: u32) -> i32;$/;" f +sceHttpSetResolveRetry vendor/libc/src/psp.rs /^ pub fn sceHttpSetResolveRetry(id: i32, count: i32) -> i32;$/;" f +sceHttpSetResolveTimeOut vendor/libc/src/psp.rs /^ pub fn sceHttpSetResolveTimeOut(id: i32, timeout: u32) -> i32;$/;" f +sceHttpSetSendTimeOut vendor/libc/src/psp.rs /^ pub fn sceHttpSetSendTimeOut(id: i32, timeout: u32) -> i32;$/;" f +sceHttpsEnd vendor/libc/src/psp.rs /^ pub fn sceHttpsEnd() -> i32;$/;" f +sceHttpsInit vendor/libc/src/psp.rs /^ pub fn sceHttpsInit(unknown1: i32, unknown2: i32, unknown3: i32, unknown4: i32) -> i32;$/;" f +sceHttpsLoadDefaultCert vendor/libc/src/psp.rs /^ pub fn sceHttpsLoadDefaultCert(unknown1: i32, unknown2: i32) -> i32;$/;" f +sceIoAssign vendor/libc/src/psp.rs /^ pub fn sceIoAssign($/;" f +sceIoCancel vendor/libc/src/psp.rs /^ pub fn sceIoCancel(fd: SceUid) -> i32;$/;" f +sceIoChangeAsyncPriority vendor/libc/src/psp.rs /^ pub fn sceIoChangeAsyncPriority(fd: SceUid, pri: i32) -> i32;$/;" f +sceIoChdir vendor/libc/src/psp.rs /^ pub fn sceIoChdir(path: *const u8) -> i32;$/;" f +sceIoChstat vendor/libc/src/psp.rs /^ pub fn sceIoChstat(file: *const u8, stat: *mut SceIoStat, bits: i32) -> i32;$/;" f +sceIoClose vendor/libc/src/psp.rs /^ pub fn sceIoClose(fd: SceUid) -> i32;$/;" f +sceIoCloseAsync vendor/libc/src/psp.rs /^ pub fn sceIoCloseAsync(fd: SceUid) -> i32;$/;" f +sceIoDclose vendor/libc/src/psp.rs /^ pub fn sceIoDclose(fd: SceUid) -> i32;$/;" f +sceIoDevctl vendor/libc/src/psp.rs /^ pub fn sceIoDevctl($/;" f +sceIoDopen vendor/libc/src/psp.rs /^ pub fn sceIoDopen(dirname: *const u8) -> SceUid;$/;" f +sceIoDread vendor/libc/src/psp.rs /^ pub fn sceIoDread(fd: SceUid, dir: *mut SceIoDirent) -> i32;$/;" f +sceIoGetAsyncStat vendor/libc/src/psp.rs /^ pub fn sceIoGetAsyncStat(fd: SceUid, poll: i32, res: *mut i64) -> i32;$/;" f +sceIoGetDevType vendor/libc/src/psp.rs /^ pub fn sceIoGetDevType(fd: SceUid) -> i32;$/;" f +sceIoGetstat vendor/libc/src/psp.rs /^ pub fn sceIoGetstat(file: *const u8, stat: *mut SceIoStat) -> i32;$/;" f +sceIoIoctl vendor/libc/src/psp.rs /^ pub fn sceIoIoctl($/;" f +sceIoIoctlAsync vendor/libc/src/psp.rs /^ pub fn sceIoIoctlAsync($/;" f +sceIoLseek vendor/libc/src/psp.rs /^ pub fn sceIoLseek(fd: SceUid, offset: i64, whence: IoWhence) -> i64;$/;" f +sceIoLseek32 vendor/libc/src/psp.rs /^ pub fn sceIoLseek32(fd: SceUid, offset: i32, whence: IoWhence) -> i32;$/;" f +sceIoLseek32Async vendor/libc/src/psp.rs /^ pub fn sceIoLseek32Async(fd: SceUid, offset: i32, whence: IoWhence) -> i32;$/;" f +sceIoLseekAsync vendor/libc/src/psp.rs /^ pub fn sceIoLseekAsync(fd: SceUid, offset: i64, whence: IoWhence) -> i32;$/;" f +sceIoMkdir vendor/libc/src/psp.rs /^ pub fn sceIoMkdir(dir: *const u8, mode: IoPermissions) -> i32;$/;" f +sceIoOpen vendor/libc/src/psp.rs /^ pub fn sceIoOpen(file: *const u8, flags: i32, permissions: IoPermissions) -> SceUid;$/;" f +sceIoOpenAsync vendor/libc/src/psp.rs /^ pub fn sceIoOpenAsync(file: *const u8, flags: i32, permissions: IoPermissions) -> SceUid;$/;" f +sceIoPollAsync vendor/libc/src/psp.rs /^ pub fn sceIoPollAsync(fd: SceUid, res: *mut i64) -> i32;$/;" f +sceIoRead vendor/libc/src/psp.rs /^ pub fn sceIoRead(fd: SceUid, data: *mut c_void, size: u32) -> i32;$/;" f +sceIoReadAsync vendor/libc/src/psp.rs /^ pub fn sceIoReadAsync(fd: SceUid, data: *mut c_void, size: u32) -> i32;$/;" f +sceIoRemove vendor/libc/src/psp.rs /^ pub fn sceIoRemove(file: *const u8) -> i32;$/;" f +sceIoRename vendor/libc/src/psp.rs /^ pub fn sceIoRename(oldname: *const u8, newname: *const u8) -> i32;$/;" f +sceIoRmdir vendor/libc/src/psp.rs /^ pub fn sceIoRmdir(path: *const u8) -> i32;$/;" f +sceIoSetAsyncCallback vendor/libc/src/psp.rs /^ pub fn sceIoSetAsyncCallback(fd: SceUid, cb: SceUid, argp: *mut c_void) -> i32;$/;" f +sceIoSync vendor/libc/src/psp.rs /^ pub fn sceIoSync(device: *const u8, unk: u32) -> i32;$/;" f +sceIoUnassign vendor/libc/src/psp.rs /^ pub fn sceIoUnassign(dev: *const u8) -> i32;$/;" f +sceIoWaitAsync vendor/libc/src/psp.rs /^ pub fn sceIoWaitAsync(fd: SceUid, res: *mut i64) -> i32;$/;" f +sceIoWaitAsyncCB vendor/libc/src/psp.rs /^ pub fn sceIoWaitAsyncCB(fd: SceUid, res: *mut i64) -> i32;$/;" f +sceIoWrite vendor/libc/src/psp.rs /^ pub fn sceIoWrite(fd: SceUid, data: *const c_void, size: usize) -> i32;$/;" f +sceIoWriteAsync vendor/libc/src/psp.rs /^ pub fn sceIoWriteAsync(fd: SceUid, data: *const c_void, size: u32) -> i32;$/;" f +sceJpegCreateMJpeg vendor/libc/src/psp.rs /^ pub fn sceJpegCreateMJpeg(width: i32, height: i32) -> i32;$/;" f +sceJpegDecodeMJpeg vendor/libc/src/psp.rs /^ pub fn sceJpegDecodeMJpeg(jpeg_buf: *mut u8, size: usize, rgba: *mut c_void, unk: u32) -> i3/;" f +sceJpegDeleteMJpeg vendor/libc/src/psp.rs /^ pub fn sceJpegDeleteMJpeg() -> i32;$/;" f +sceJpegFinishMJpeg vendor/libc/src/psp.rs /^ pub fn sceJpegFinishMJpeg() -> i32;$/;" f +sceJpegInitMJpeg vendor/libc/src/psp.rs /^ pub fn sceJpegInitMJpeg() -> i32;$/;" f +sceKernelAllocPartitionMemory vendor/libc/src/psp.rs /^ pub fn sceKernelAllocPartitionMemory($/;" f +sceKernelAllocateFpl vendor/libc/src/psp.rs /^ pub fn sceKernelAllocateFpl(uid: SceUid, data: *mut *mut c_void, timeout: *mut u32) -> i32;$/;" f +sceKernelAllocateFplCB vendor/libc/src/psp.rs /^ pub fn sceKernelAllocateFplCB(uid: SceUid, data: *mut *mut c_void, timeout: *mut u32) -> i32/;" f +sceKernelAllocateVpl vendor/libc/src/psp.rs /^ pub fn sceKernelAllocateVpl($/;" f +sceKernelAllocateVplCB vendor/libc/src/psp.rs /^ pub fn sceKernelAllocateVplCB($/;" f +sceKernelCancelAlarm vendor/libc/src/psp.rs /^ pub fn sceKernelCancelAlarm(alarm_id: SceUid) -> i32;$/;" f +sceKernelCancelCallback vendor/libc/src/psp.rs /^ pub fn sceKernelCancelCallback(cb: SceUid) -> i32;$/;" f +sceKernelCancelFpl vendor/libc/src/psp.rs /^ pub fn sceKernelCancelFpl(uid: SceUid, pnum: *mut i32) -> i32;$/;" f +sceKernelCancelMsgPipe vendor/libc/src/psp.rs /^ pub fn sceKernelCancelMsgPipe(uid: SceUid, send: *mut i32, recv: *mut i32) -> i32;$/;" f +sceKernelCancelReceiveMbx vendor/libc/src/psp.rs /^ pub fn sceKernelCancelReceiveMbx(mbx_id: SceUid, num: *mut i32) -> i32;$/;" f +sceKernelCancelVTimerHandler vendor/libc/src/psp.rs /^ pub fn sceKernelCancelVTimerHandler(uid: SceUid) -> i32;$/;" f +sceKernelCancelVpl vendor/libc/src/psp.rs /^ pub fn sceKernelCancelVpl(uid: SceUid, num: *mut i32) -> i32;$/;" f +sceKernelCancelWakeupThread vendor/libc/src/psp.rs /^ pub fn sceKernelCancelWakeupThread(thid: SceUid) -> i32;$/;" f +sceKernelChangeCurrentThreadAttr vendor/libc/src/psp.rs /^ pub fn sceKernelChangeCurrentThreadAttr(unknown: i32, attr: i32) -> i32;$/;" f +sceKernelChangeThreadPriority vendor/libc/src/psp.rs /^ pub fn sceKernelChangeThreadPriority(thid: SceUid, priority: i32) -> i32;$/;" f +sceKernelCheckCallback vendor/libc/src/psp.rs /^ pub fn sceKernelCheckCallback() -> i32;$/;" f +sceKernelCheckThreadStack vendor/libc/src/psp.rs /^ pub fn sceKernelCheckThreadStack() -> i32;$/;" f +sceKernelClearEventFlag vendor/libc/src/psp.rs /^ pub fn sceKernelClearEventFlag(ev_id: SceUid, bits: u32) -> i32;$/;" f +sceKernelCpuResumeIntr vendor/libc/src/psp.rs /^ pub fn sceKernelCpuResumeIntr(flags: u32);$/;" f +sceKernelCpuResumeIntrWithSync vendor/libc/src/psp.rs /^ pub fn sceKernelCpuResumeIntrWithSync(flags: u32);$/;" f +sceKernelCpuSuspendIntr vendor/libc/src/psp.rs /^ pub fn sceKernelCpuSuspendIntr() -> u32;$/;" f +sceKernelCreateCallback vendor/libc/src/psp.rs /^ pub fn sceKernelCreateCallback($/;" f +sceKernelCreateEventFlag vendor/libc/src/psp.rs /^ pub fn sceKernelCreateEventFlag($/;" f +sceKernelCreateFpl vendor/libc/src/psp.rs /^ pub fn sceKernelCreateFpl($/;" f +sceKernelCreateMbx vendor/libc/src/psp.rs /^ pub fn sceKernelCreateMbx($/;" f +sceKernelCreateMsgPipe vendor/libc/src/psp.rs /^ pub fn sceKernelCreateMsgPipe($/;" f +sceKernelCreateSema vendor/libc/src/psp.rs /^ pub fn sceKernelCreateSema($/;" f +sceKernelCreateThread vendor/libc/src/psp.rs /^ pub fn sceKernelCreateThread($/;" f +sceKernelCreateVTimer vendor/libc/src/psp.rs /^ pub fn sceKernelCreateVTimer(name: *const u8, opt: *mut SceKernelVTimerOptParam) -> SceUid;$/;" f +sceKernelCreateVpl vendor/libc/src/psp.rs /^ pub fn sceKernelCreateVpl($/;" f +sceKernelDcacheInvalidateRange vendor/libc/src/psp.rs /^ pub fn sceKernelDcacheInvalidateRange(p: *const c_void, size: u32);$/;" f +sceKernelDcacheWritebackAll vendor/libc/src/psp.rs /^ pub fn sceKernelDcacheWritebackAll();$/;" f +sceKernelDcacheWritebackInvalidateAll vendor/libc/src/psp.rs /^ pub fn sceKernelDcacheWritebackInvalidateAll();$/;" f +sceKernelDcacheWritebackInvalidateRange vendor/libc/src/psp.rs /^ pub fn sceKernelDcacheWritebackInvalidateRange(p: *const c_void, size: u32);$/;" f +sceKernelDcacheWritebackRange vendor/libc/src/psp.rs /^ pub fn sceKernelDcacheWritebackRange(p: *const c_void, size: u32);$/;" f +sceKernelDelaySysClockThread vendor/libc/src/psp.rs /^ pub fn sceKernelDelaySysClockThread(delay: *mut SceKernelSysClock) -> i32;$/;" f +sceKernelDelaySysClockThreadCB vendor/libc/src/psp.rs /^ pub fn sceKernelDelaySysClockThreadCB(delay: *mut SceKernelSysClock) -> i32;$/;" f +sceKernelDelayThread vendor/libc/src/psp.rs /^ pub fn sceKernelDelayThread(delay: u32) -> i32;$/;" f +sceKernelDelayThreadCB vendor/libc/src/psp.rs /^ pub fn sceKernelDelayThreadCB(delay: u32) -> i32;$/;" f +sceKernelDeleteCallback vendor/libc/src/psp.rs /^ pub fn sceKernelDeleteCallback(cb: SceUid) -> i32;$/;" f +sceKernelDeleteEventFlag vendor/libc/src/psp.rs /^ pub fn sceKernelDeleteEventFlag(ev_id: SceUid) -> i32;$/;" f +sceKernelDeleteFpl vendor/libc/src/psp.rs /^ pub fn sceKernelDeleteFpl(uid: SceUid) -> i32;$/;" f +sceKernelDeleteMbx vendor/libc/src/psp.rs /^ pub fn sceKernelDeleteMbx(mbx_id: SceUid) -> i32;$/;" f +sceKernelDeleteMsgPipe vendor/libc/src/psp.rs /^ pub fn sceKernelDeleteMsgPipe(uid: SceUid) -> i32;$/;" f +sceKernelDeleteSema vendor/libc/src/psp.rs /^ pub fn sceKernelDeleteSema(sema_id: SceUid) -> i32;$/;" f +sceKernelDeleteThread vendor/libc/src/psp.rs /^ pub fn sceKernelDeleteThread(thid: SceUid) -> i32;$/;" f +sceKernelDeleteVTimer vendor/libc/src/psp.rs /^ pub fn sceKernelDeleteVTimer(uid: SceUid) -> i32;$/;" f +sceKernelDeleteVpl vendor/libc/src/psp.rs /^ pub fn sceKernelDeleteVpl(uid: SceUid) -> i32;$/;" f +sceKernelDevkitVersion vendor/libc/src/psp.rs /^ pub fn sceKernelDevkitVersion() -> u32;$/;" f +sceKernelDisableSubIntr vendor/libc/src/psp.rs /^ pub fn sceKernelDisableSubIntr(int_no: i32, no: i32) -> i32;$/;" f +sceKernelEnableSubIntr vendor/libc/src/psp.rs /^ pub fn sceKernelEnableSubIntr(int_no: i32, no: i32) -> i32;$/;" f +sceKernelExitDeleteThread vendor/libc/src/psp.rs /^ pub fn sceKernelExitDeleteThread(status: i32) -> i32;$/;" f +sceKernelExitGame vendor/libc/src/psp.rs /^ pub fn sceKernelExitGame();$/;" f +sceKernelExitThread vendor/libc/src/psp.rs /^ pub fn sceKernelExitThread(status: i32) -> i32;$/;" f +sceKernelFreeFpl vendor/libc/src/psp.rs /^ pub fn sceKernelFreeFpl(uid: SceUid, data: *mut c_void) -> i32;$/;" f +sceKernelFreePartitionMemory vendor/libc/src/psp.rs /^ pub fn sceKernelFreePartitionMemory(blockid: SceUid) -> i32;$/;" f +sceKernelFreeVpl vendor/libc/src/psp.rs /^ pub fn sceKernelFreeVpl(uid: SceUid, data: *mut c_void) -> i32;$/;" f +sceKernelGetBlockHeadAddr vendor/libc/src/psp.rs /^ pub fn sceKernelGetBlockHeadAddr(blockid: SceUid) -> *mut c_void;$/;" f +sceKernelGetCallbackCount vendor/libc/src/psp.rs /^ pub fn sceKernelGetCallbackCount(cb: SceUid) -> i32;$/;" f +sceKernelGetCompiledSdkVersion vendor/libc/src/psp.rs /^ pub fn sceKernelGetCompiledSdkVersion() -> u32;$/;" f +sceKernelGetModuleIdList vendor/libc/src/psp.rs /^ pub fn sceKernelGetModuleIdList($/;" f +sceKernelGetSystemTime vendor/libc/src/psp.rs /^ pub fn sceKernelGetSystemTime(time: *mut SceKernelSysClock) -> i32;$/;" f +sceKernelGetSystemTimeLow vendor/libc/src/psp.rs /^ pub fn sceKernelGetSystemTimeLow() -> u32;$/;" f +sceKernelGetSystemTimeWide vendor/libc/src/psp.rs /^ pub fn sceKernelGetSystemTimeWide() -> i64;$/;" f +sceKernelGetThreadCurrentPriority vendor/libc/src/psp.rs /^ pub fn sceKernelGetThreadCurrentPriority() -> i32;$/;" f +sceKernelGetThreadExitStatus vendor/libc/src/psp.rs /^ pub fn sceKernelGetThreadExitStatus(thid: SceUid) -> i32;$/;" f +sceKernelGetThreadId vendor/libc/src/psp.rs /^ pub fn sceKernelGetThreadId() -> i32;$/;" f +sceKernelGetThreadStackFreeSize vendor/libc/src/psp.rs /^ pub fn sceKernelGetThreadStackFreeSize(thid: SceUid) -> i32;$/;" f +sceKernelGetThreadmanIdList vendor/libc/src/psp.rs /^ pub fn sceKernelGetThreadmanIdList($/;" f +sceKernelGetThreadmanIdType vendor/libc/src/psp.rs /^ pub fn sceKernelGetThreadmanIdType(uid: SceUid) -> SceKernelIdListType;$/;" f +sceKernelGetVTimerBase vendor/libc/src/psp.rs /^ pub fn sceKernelGetVTimerBase(uid: SceUid, base: *mut SceKernelSysClock) -> i32;$/;" f +sceKernelGetVTimerBaseWide vendor/libc/src/psp.rs /^ pub fn sceKernelGetVTimerBaseWide(uid: SceUid) -> i64;$/;" f +sceKernelGetVTimerTime vendor/libc/src/psp.rs /^ pub fn sceKernelGetVTimerTime(uid: SceUid, time: *mut SceKernelSysClock) -> i32;$/;" f +sceKernelGetVTimerTimeWide vendor/libc/src/psp.rs /^ pub fn sceKernelGetVTimerTimeWide(uid: SceUid) -> i64;$/;" f +sceKernelIcacheInvalidateAll vendor/libc/src/psp.rs /^ pub fn sceKernelIcacheInvalidateAll();$/;" f +sceKernelIcacheInvalidateRange vendor/libc/src/psp.rs /^ pub fn sceKernelIcacheInvalidateRange(p: *const c_void, size: u32);$/;" f +sceKernelIsCpuIntrEnable vendor/libc/src/psp.rs /^ pub fn sceKernelIsCpuIntrEnable() -> i32;$/;" f +sceKernelIsCpuIntrSuspended vendor/libc/src/psp.rs /^ pub fn sceKernelIsCpuIntrSuspended(flags: u32) -> i32;$/;" f +sceKernelLibcClock vendor/libc/src/psp.rs /^ pub fn sceKernelLibcClock() -> u32;$/;" f +sceKernelLibcGettimeofday vendor/libc/src/psp.rs /^ pub fn sceKernelLibcGettimeofday(tp: *mut timeval, tzp: *mut timezone) -> i32;$/;" f +sceKernelLibcTime vendor/libc/src/psp.rs /^ pub fn sceKernelLibcTime(t: *mut i32) -> i32;$/;" f +sceKernelLoadExec vendor/libc/src/psp.rs /^ pub fn sceKernelLoadExec(file: *const u8, param: *mut SceKernelLoadExecParam) -> i32;$/;" f +sceKernelLoadModule vendor/libc/src/psp.rs /^ pub fn sceKernelLoadModule($/;" f +sceKernelLoadModuleBufferUsbWlan vendor/libc/src/psp.rs /^ pub fn sceKernelLoadModuleBufferUsbWlan($/;" f +sceKernelLoadModuleByID vendor/libc/src/psp.rs /^ pub fn sceKernelLoadModuleByID($/;" f +sceKernelLoadModuleMs vendor/libc/src/psp.rs /^ pub fn sceKernelLoadModuleMs($/;" f +sceKernelMaxFreeMemSize vendor/libc/src/psp.rs /^ pub fn sceKernelMaxFreeMemSize() -> usize;$/;" f +sceKernelNotifyCallback vendor/libc/src/psp.rs /^ pub fn sceKernelNotifyCallback(cb: SceUid, arg2: i32) -> i32;$/;" f +sceKernelPollEventFlag vendor/libc/src/psp.rs /^ pub fn sceKernelPollEventFlag(ev_id: SceUid, bits: u32, wait: i32, out_bits: *mut u32) -> i3/;" f +sceKernelPollMbx vendor/libc/src/psp.rs /^ pub fn sceKernelPollMbx(mbx_id: SceUid, pmessage: *mut *mut c_void) -> i32;$/;" f +sceKernelPollSema vendor/libc/src/psp.rs /^ pub fn sceKernelPollSema(sema_id: SceUid, signal: i32) -> i32;$/;" f +sceKernelQueryModuleInfo vendor/libc/src/psp.rs /^ pub fn sceKernelQueryModuleInfo(mod_id: SceUid, info: *mut SceKernelModuleInfo) -> i32;$/;" f +sceKernelReceiveMbx vendor/libc/src/psp.rs /^ pub fn sceKernelReceiveMbx(mbx_id: SceUid, message: *mut *mut c_void, timeout: *mut u32)$/;" f +sceKernelReceiveMbxCB vendor/libc/src/psp.rs /^ pub fn sceKernelReceiveMbxCB($/;" f +sceKernelReceiveMsgPipe vendor/libc/src/psp.rs /^ pub fn sceKernelReceiveMsgPipe($/;" f +sceKernelReceiveMsgPipeCB vendor/libc/src/psp.rs /^ pub fn sceKernelReceiveMsgPipeCB($/;" f +sceKernelReferAlarmStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferAlarmStatus(alarm_id: SceUid, info: *mut SceKernelAlarmInfo) -> i32;$/;" f +sceKernelReferCallbackStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferCallbackStatus(cb: SceUid, status: *mut SceKernelCallbackInfo) -> i32;$/;" f +sceKernelReferEventFlagStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferEventFlagStatus(event: SceUid, status: *mut SceKernelEventFlagInfo)$/;" f +sceKernelReferFplStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferFplStatus(uid: SceUid, info: *mut SceKernelFplInfo) -> i32;$/;" f +sceKernelReferGlobalProfiler vendor/libc/src/psp.rs /^ pub fn sceKernelReferGlobalProfiler() -> *mut DebugProfilerRegs;$/;" f +sceKernelReferMbxStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferMbxStatus(mbx_id: SceUid, info: *mut SceKernelMbxInfo) -> i32;$/;" f +sceKernelReferMsgPipeStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferMsgPipeStatus(uid: SceUid, info: *mut SceKernelMppInfo) -> i32;$/;" f +sceKernelReferSemaStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferSemaStatus(sema_id: SceUid, info: *mut SceKernelSemaInfo) -> i32;$/;" f +sceKernelReferSystemStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferSystemStatus(status: *mut SceKernelSystemStatus) -> i32;$/;" f +sceKernelReferThreadEventHandlerStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferThreadEventHandlerStatus($/;" f +sceKernelReferThreadProfiler vendor/libc/src/psp.rs /^ pub fn sceKernelReferThreadProfiler() -> *mut DebugProfilerRegs;$/;" f +sceKernelReferThreadRunStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferThreadRunStatus($/;" f +sceKernelReferThreadStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferThreadStatus(thid: SceUid, info: *mut SceKernelThreadInfo) -> i32;$/;" f +sceKernelReferVTimerStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferVTimerStatus(uid: SceUid, info: *mut SceKernelVTimerInfo) -> i32;$/;" f +sceKernelReferVplStatus vendor/libc/src/psp.rs /^ pub fn sceKernelReferVplStatus(uid: SceUid, info: *mut SceKernelVplInfo) -> i32;$/;" f +sceKernelRegisterExitCallback vendor/libc/src/psp.rs /^ pub fn sceKernelRegisterExitCallback(id: SceUid) -> i32;$/;" f +sceKernelRegisterSubIntrHandler vendor/libc/src/psp.rs /^ pub fn sceKernelRegisterSubIntrHandler($/;" f +sceKernelRegisterThreadEventHandler vendor/libc/src/psp.rs /^ pub fn sceKernelRegisterThreadEventHandler($/;" f +sceKernelReleaseSubIntrHandler vendor/libc/src/psp.rs /^ pub fn sceKernelReleaseSubIntrHandler(int_no: i32, no: i32) -> i32;$/;" f +sceKernelReleaseThreadEventHandler vendor/libc/src/psp.rs /^ pub fn sceKernelReleaseThreadEventHandler(uid: SceUid) -> i32;$/;" f +sceKernelReleaseWaitThread vendor/libc/src/psp.rs /^ pub fn sceKernelReleaseWaitThread(thid: SceUid) -> i32;$/;" f +sceKernelResumeDispatchThread vendor/libc/src/psp.rs /^ pub fn sceKernelResumeDispatchThread(state: i32) -> i32;$/;" f +sceKernelResumeThread vendor/libc/src/psp.rs /^ pub fn sceKernelResumeThread(thid: SceUid) -> i32;$/;" f +sceKernelRotateThreadReadyQueue vendor/libc/src/psp.rs /^ pub fn sceKernelRotateThreadReadyQueue(priority: i32) -> i32;$/;" f +sceKernelSelfStopUnloadModule vendor/libc/src/psp.rs /^ pub fn sceKernelSelfStopUnloadModule(unknown: i32, arg_size: usize, argp: *mut c_void) -> i3/;" f +sceKernelSendMbx vendor/libc/src/psp.rs /^ pub fn sceKernelSendMbx(mbx_id: SceUid, message: *mut c_void) -> i32;$/;" f +sceKernelSendMsgPipe vendor/libc/src/psp.rs /^ pub fn sceKernelSendMsgPipe($/;" f +sceKernelSendMsgPipeCB vendor/libc/src/psp.rs /^ pub fn sceKernelSendMsgPipeCB($/;" f +sceKernelSetAlarm vendor/libc/src/psp.rs /^ pub fn sceKernelSetAlarm($/;" f +sceKernelSetCompiledSdkVersion vendor/libc/src/psp.rs /^ pub fn sceKernelSetCompiledSdkVersion(version: u32) -> i32;$/;" f +sceKernelSetEventFlag vendor/libc/src/psp.rs /^ pub fn sceKernelSetEventFlag(ev_id: SceUid, bits: u32) -> i32;$/;" f +sceKernelSetSysClockAlarm vendor/libc/src/psp.rs /^ pub fn sceKernelSetSysClockAlarm($/;" f +sceKernelSetVTimerHandler vendor/libc/src/psp.rs /^ pub fn sceKernelSetVTimerHandler($/;" f +sceKernelSetVTimerHandlerWide vendor/libc/src/psp.rs /^ pub fn sceKernelSetVTimerHandlerWide($/;" f +sceKernelSetVTimerTime vendor/libc/src/psp.rs /^ pub fn sceKernelSetVTimerTime(uid: SceUid, time: *mut SceKernelSysClock) -> i32;$/;" f +sceKernelSetVTimerTimeWide vendor/libc/src/psp.rs /^ pub fn sceKernelSetVTimerTimeWide(uid: SceUid, time: i64) -> i64;$/;" f +sceKernelSignalSema vendor/libc/src/psp.rs /^ pub fn sceKernelSignalSema(sema_id: SceUid, signal: i32) -> i32;$/;" f +sceKernelSleepThread vendor/libc/src/psp.rs /^ pub fn sceKernelSleepThread() -> i32;$/;" f +sceKernelSleepThreadCB vendor/libc/src/psp.rs /^ pub fn sceKernelSleepThreadCB() -> i32;$/;" f +sceKernelStartModule vendor/libc/src/psp.rs /^ pub fn sceKernelStartModule($/;" f +sceKernelStartThread vendor/libc/src/psp.rs /^ pub fn sceKernelStartThread(id: SceUid, arg_len: usize, arg_p: *mut c_void) -> i32;$/;" f +sceKernelStartVTimer vendor/libc/src/psp.rs /^ pub fn sceKernelStartVTimer(uid: SceUid) -> i32;$/;" f +sceKernelStderr vendor/libc/src/psp.rs /^ pub fn sceKernelStderr() -> SceUid;$/;" f +sceKernelStdin vendor/libc/src/psp.rs /^ pub fn sceKernelStdin() -> SceUid;$/;" f +sceKernelStdout vendor/libc/src/psp.rs /^ pub fn sceKernelStdout() -> SceUid;$/;" f +sceKernelStopModule vendor/libc/src/psp.rs /^ pub fn sceKernelStopModule($/;" f +sceKernelStopUnloadSelfModule vendor/libc/src/psp.rs /^ pub fn sceKernelStopUnloadSelfModule($/;" f +sceKernelStopVTimer vendor/libc/src/psp.rs /^ pub fn sceKernelStopVTimer(uid: SceUid) -> i32;$/;" f +sceKernelSuspendDispatchThread vendor/libc/src/psp.rs /^ pub fn sceKernelSuspendDispatchThread() -> i32;$/;" f +sceKernelSuspendThread vendor/libc/src/psp.rs /^ pub fn sceKernelSuspendThread(thid: SceUid) -> i32;$/;" f +sceKernelSysClock2USec vendor/libc/src/psp.rs /^ pub fn sceKernelSysClock2USec($/;" f +sceKernelSysClock2USecWide vendor/libc/src/psp.rs /^ pub fn sceKernelSysClock2USecWide(clock: i64, low: *mut u32, high: *mut u32) -> i32;$/;" f +sceKernelTerminateDeleteThread vendor/libc/src/psp.rs /^ pub fn sceKernelTerminateDeleteThread(thid: SceUid) -> i32;$/;" f +sceKernelTerminateThread vendor/libc/src/psp.rs /^ pub fn sceKernelTerminateThread(thid: SceUid) -> i32;$/;" f +sceKernelTotalFreeMemSize vendor/libc/src/psp.rs /^ pub fn sceKernelTotalFreeMemSize() -> usize;$/;" f +sceKernelTryAllocateFpl vendor/libc/src/psp.rs /^ pub fn sceKernelTryAllocateFpl(uid: SceUid, data: *mut *mut c_void) -> i32;$/;" f +sceKernelTryAllocateVpl vendor/libc/src/psp.rs /^ pub fn sceKernelTryAllocateVpl(uid: SceUid, size: u32, data: *mut *mut c_void) -> i32;$/;" f +sceKernelTryReceiveMsgPipe vendor/libc/src/psp.rs /^ pub fn sceKernelTryReceiveMsgPipe($/;" f +sceKernelTrySendMsgPipe vendor/libc/src/psp.rs /^ pub fn sceKernelTrySendMsgPipe($/;" f +sceKernelUSec2SysClock vendor/libc/src/psp.rs /^ pub fn sceKernelUSec2SysClock(usec: u32, clock: *mut SceKernelSysClock) -> i32;$/;" f +sceKernelUSec2SysClockWide vendor/libc/src/psp.rs /^ pub fn sceKernelUSec2SysClockWide(usec: u32) -> i64;$/;" f +sceKernelUnloadModule vendor/libc/src/psp.rs /^ pub fn sceKernelUnloadModule(mod_id: SceUid) -> i32;$/;" f +sceKernelUtilsMd5BlockInit vendor/libc/src/psp.rs /^ pub fn sceKernelUtilsMd5BlockInit(ctx: *mut SceKernelUtilsMd5Context) -> i32;$/;" f +sceKernelUtilsMd5BlockResult vendor/libc/src/psp.rs /^ pub fn sceKernelUtilsMd5BlockResult(ctx: *mut SceKernelUtilsMd5Context, digest: *mut u8)$/;" f +sceKernelUtilsMd5BlockUpdate vendor/libc/src/psp.rs /^ pub fn sceKernelUtilsMd5BlockUpdate($/;" f +sceKernelUtilsMd5Digest vendor/libc/src/psp.rs /^ pub fn sceKernelUtilsMd5Digest(data: *mut u8, size: u32, digest: *mut u8) -> i32;$/;" f +sceKernelUtilsMt19937Init vendor/libc/src/psp.rs /^ pub fn sceKernelUtilsMt19937Init(ctx: *mut SceKernelUtilsMt19937Context, seed: u32) -> i32;$/;" f +sceKernelUtilsMt19937UInt vendor/libc/src/psp.rs /^ pub fn sceKernelUtilsMt19937UInt(ctx: *mut SceKernelUtilsMt19937Context) -> u32;$/;" f +sceKernelUtilsSha1BlockInit vendor/libc/src/psp.rs /^ pub fn sceKernelUtilsSha1BlockInit(ctx: *mut SceKernelUtilsSha1Context) -> i32;$/;" f +sceKernelUtilsSha1BlockResult vendor/libc/src/psp.rs /^ pub fn sceKernelUtilsSha1BlockResult($/;" f +sceKernelUtilsSha1BlockUpdate vendor/libc/src/psp.rs /^ pub fn sceKernelUtilsSha1BlockUpdate($/;" f +sceKernelUtilsSha1Digest vendor/libc/src/psp.rs /^ pub fn sceKernelUtilsSha1Digest(data: *mut u8, size: u32, digest: *mut u8) -> i32;$/;" f +sceKernelVolatileMemLock vendor/libc/src/psp.rs /^ pub fn sceKernelVolatileMemLock(unk: i32, ptr: *mut *mut c_void, size: *mut i32) -> i32;$/;" f +sceKernelVolatileMemTryLock vendor/libc/src/psp.rs /^ pub fn sceKernelVolatileMemTryLock(unk: i32, ptr: *mut *mut c_void, size: *mut i32) -> i32;$/;" f +sceKernelVolatileMemUnlock vendor/libc/src/psp.rs /^ pub fn sceKernelVolatileMemUnlock(unk: i32) -> i32;$/;" f +sceKernelWaitEventFlag vendor/libc/src/psp.rs /^ pub fn sceKernelWaitEventFlag($/;" f +sceKernelWaitEventFlagCB vendor/libc/src/psp.rs /^ pub fn sceKernelWaitEventFlagCB($/;" f +sceKernelWaitSema vendor/libc/src/psp.rs /^ pub fn sceKernelWaitSema(sema_id: SceUid, signal: i32, timeout: *mut u32) -> i32;$/;" f +sceKernelWaitSemaCB vendor/libc/src/psp.rs /^ pub fn sceKernelWaitSemaCB(sema_id: SceUid, signal: i32, timeout: *mut u32) -> i32;$/;" f +sceKernelWaitThreadEnd vendor/libc/src/psp.rs /^ pub fn sceKernelWaitThreadEnd(thid: SceUid, timeout: *mut u32) -> i32;$/;" f +sceKernelWaitThreadEndCB vendor/libc/src/psp.rs /^ pub fn sceKernelWaitThreadEndCB(thid: SceUid, timeout: *mut u32) -> i32;$/;" f +sceKernelWakeupThread vendor/libc/src/psp.rs /^ pub fn sceKernelWakeupThread(thid: SceUid) -> i32;$/;" f +sceMp3CheckStreamDataNeeded vendor/libc/src/psp.rs /^ pub fn sceMp3CheckStreamDataNeeded(handle: Mp3Handle) -> i32;$/;" f +sceMp3Decode vendor/libc/src/psp.rs /^ pub fn sceMp3Decode(handle: Mp3Handle, dst: *mut *mut i16) -> i32;$/;" f +sceMp3GetBitRate vendor/libc/src/psp.rs /^ pub fn sceMp3GetBitRate(handle: Mp3Handle) -> i32;$/;" f +sceMp3GetInfoToAddStreamData vendor/libc/src/psp.rs /^ pub fn sceMp3GetInfoToAddStreamData($/;" f +sceMp3GetLoopNum vendor/libc/src/psp.rs /^ pub fn sceMp3GetLoopNum(handle: Mp3Handle) -> i32;$/;" f +sceMp3GetMaxOutputSample vendor/libc/src/psp.rs /^ pub fn sceMp3GetMaxOutputSample(handle: Mp3Handle) -> i32;$/;" f +sceMp3GetMp3ChannelNum vendor/libc/src/psp.rs /^ pub fn sceMp3GetMp3ChannelNum(handle: Mp3Handle) -> i32;$/;" f +sceMp3GetSamplingRate vendor/libc/src/psp.rs /^ pub fn sceMp3GetSamplingRate(handle: Mp3Handle) -> i32;$/;" f +sceMp3GetSumDecodedSample vendor/libc/src/psp.rs /^ pub fn sceMp3GetSumDecodedSample(handle: Mp3Handle) -> i32;$/;" f +sceMp3Init vendor/libc/src/psp.rs /^ pub fn sceMp3Init(handle: Mp3Handle) -> i32;$/;" f +sceMp3InitResource vendor/libc/src/psp.rs /^ pub fn sceMp3InitResource() -> i32;$/;" f +sceMp3NotifyAddStreamData vendor/libc/src/psp.rs /^ pub fn sceMp3NotifyAddStreamData(handle: Mp3Handle, size: i32) -> i32;$/;" f +sceMp3ReleaseMp3Handle vendor/libc/src/psp.rs /^ pub fn sceMp3ReleaseMp3Handle(handle: Mp3Handle) -> i32;$/;" f +sceMp3ReserveMp3Handle vendor/libc/src/psp.rs /^ pub fn sceMp3ReserveMp3Handle(args: *mut SceMp3InitArg) -> i32;$/;" f +sceMp3ResetPlayPosition vendor/libc/src/psp.rs /^ pub fn sceMp3ResetPlayPosition(handle: Mp3Handle) -> i32;$/;" f +sceMp3SetLoopNum vendor/libc/src/psp.rs /^ pub fn sceMp3SetLoopNum(handle: Mp3Handle, loop_: i32) -> i32;$/;" f +sceMp3TermResource vendor/libc/src/psp.rs /^ pub fn sceMp3TermResource() -> i32;$/;" f +sceMpegAtracDecode vendor/libc/src/psp.rs /^ pub fn sceMpegAtracDecode($/;" f +sceMpegAvcDecode vendor/libc/src/psp.rs /^ pub fn sceMpegAvcDecode($/;" f +sceMpegAvcDecodeMode vendor/libc/src/psp.rs /^ pub fn sceMpegAvcDecodeMode(handle: SceMpeg, mode: *mut SceMpegAvcMode) -> i32;$/;" f +sceMpegAvcDecodeStop vendor/libc/src/psp.rs /^ pub fn sceMpegAvcDecodeStop($/;" f +sceMpegBaseCscInit vendor/libc/src/psp.rs /^ pub fn sceMpegBaseCscInit(width: i32) -> i32;$/;" f +sceMpegBaseCscVme vendor/libc/src/psp.rs /^ pub fn sceMpegBaseCscVme($/;" f +sceMpegBaseYCrCbCopyVme vendor/libc/src/psp.rs /^ pub fn sceMpegBaseYCrCbCopyVme(yuv_buffer: *mut c_void, buffer: *mut i32, type_: i32) -> i32/;" f +sceMpegCreate vendor/libc/src/psp.rs /^ pub fn sceMpegCreate($/;" f +sceMpegDelete vendor/libc/src/psp.rs /^ pub fn sceMpegDelete(handle: SceMpeg);$/;" f +sceMpegFinish vendor/libc/src/psp.rs /^ pub fn sceMpegFinish();$/;" f +sceMpegFlushAllStream vendor/libc/src/psp.rs /^ pub fn sceMpegFlushAllStream(handle: SceMpeg) -> i32;$/;" f +sceMpegFreeAvcEsBuf vendor/libc/src/psp.rs /^ pub fn sceMpegFreeAvcEsBuf(handle: SceMpeg, buf: *mut c_void);$/;" f +sceMpegGetAtracAu vendor/libc/src/psp.rs /^ pub fn sceMpegGetAtracAu($/;" f +sceMpegGetAvcAu vendor/libc/src/psp.rs /^ pub fn sceMpegGetAvcAu($/;" f +sceMpegInit vendor/libc/src/psp.rs /^ pub fn sceMpegInit() -> i32;$/;" f +sceMpegInitAu vendor/libc/src/psp.rs /^ pub fn sceMpegInitAu(handle: SceMpeg, es_buffer: *mut c_void, au: *mut SceMpegAu) -> i32;$/;" f +sceMpegMallocAvcEsBuf vendor/libc/src/psp.rs /^ pub fn sceMpegMallocAvcEsBuf(handle: SceMpeg) -> *mut c_void;$/;" f +sceMpegQueryAtracEsSize vendor/libc/src/psp.rs /^ pub fn sceMpegQueryAtracEsSize(handle: SceMpeg, es_size: *mut i32, out_size: *mut i32) -> i3/;" f +sceMpegQueryMemSize vendor/libc/src/psp.rs /^ pub fn sceMpegQueryMemSize(unk: i32) -> i32;$/;" f +sceMpegQueryStreamOffset vendor/libc/src/psp.rs /^ pub fn sceMpegQueryStreamOffset(handle: SceMpeg, buffer: *mut c_void, offset: *mut i32) -> i/;" f +sceMpegQueryStreamSize vendor/libc/src/psp.rs /^ pub fn sceMpegQueryStreamSize(buffer: *mut c_void, size: *mut i32) -> i32;$/;" f +sceMpegRegistStream vendor/libc/src/psp.rs /^ pub fn sceMpegRegistStream(handle: SceMpeg, stream_id: i32, unk: i32) -> SceMpegStream;$/;" f +sceMpegRingbufferAvailableSize vendor/libc/src/psp.rs /^ pub fn sceMpegRingbufferAvailableSize(ringbuffer: *mut SceMpegRingbuffer) -> i32;$/;" f +sceMpegRingbufferConstruct vendor/libc/src/psp.rs /^ pub fn sceMpegRingbufferConstruct($/;" f +sceMpegRingbufferDestruct vendor/libc/src/psp.rs /^ pub fn sceMpegRingbufferDestruct(ringbuffer: *mut SceMpegRingbuffer);$/;" f +sceMpegRingbufferPut vendor/libc/src/psp.rs /^ pub fn sceMpegRingbufferPut($/;" f +sceMpegRingbufferQueryMemSize vendor/libc/src/psp.rs /^ pub fn sceMpegRingbufferQueryMemSize(packets: i32) -> i32;$/;" f +sceMpegUnRegistStream vendor/libc/src/psp.rs /^ pub fn sceMpegUnRegistStream(handle: SceMpeg, stream: SceMpegStream);$/;" f +sceMpegbase_BEA18F91 vendor/libc/src/psp.rs /^ pub fn sceMpegbase_BEA18F91(lli: *mut SceMpegLLI) -> i32;$/;" f +sceNetAdhocGameModeCreateMaster vendor/libc/src/psp.rs /^ pub fn sceNetAdhocGameModeCreateMaster(data: *mut c_void, size: i32) -> i32;$/;" f +sceNetAdhocGameModeCreateReplica vendor/libc/src/psp.rs /^ pub fn sceNetAdhocGameModeCreateReplica(mac: *mut u8, data: *mut c_void, size: i32) -> i32;$/;" f +sceNetAdhocGameModeDeleteMaster vendor/libc/src/psp.rs /^ pub fn sceNetAdhocGameModeDeleteMaster() -> i32;$/;" f +sceNetAdhocGameModeDeleteReplica vendor/libc/src/psp.rs /^ pub fn sceNetAdhocGameModeDeleteReplica(id: i32) -> i32;$/;" f +sceNetAdhocGameModeUpdateMaster vendor/libc/src/psp.rs /^ pub fn sceNetAdhocGameModeUpdateMaster() -> i32;$/;" f +sceNetAdhocGameModeUpdateReplica vendor/libc/src/psp.rs /^ pub fn sceNetAdhocGameModeUpdateReplica(id: i32, unk1: i32) -> i32;$/;" f +sceNetAdhocGetPdpStat vendor/libc/src/psp.rs /^ pub fn sceNetAdhocGetPdpStat(size: *mut i32, stat: *mut SceNetAdhocPdpStat) -> i32;$/;" f +sceNetAdhocGetPtpStat vendor/libc/src/psp.rs /^ pub fn sceNetAdhocGetPtpStat(size: *mut i32, stat: *mut SceNetAdhocPtpStat) -> i32;$/;" f +sceNetAdhocInit vendor/libc/src/psp.rs /^ pub fn sceNetAdhocInit() -> i32;$/;" f +sceNetAdhocMatchingAbortSendData vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingAbortSendData(matching_id: i32, mac: *mut u8) -> i32;$/;" f +sceNetAdhocMatchingCancelTarget vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingCancelTarget(matching_id: i32, mac: *mut u8) -> i32;$/;" f +sceNetAdhocMatchingCancelTargetWithOpt vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingCancelTargetWithOpt($/;" f +sceNetAdhocMatchingCreate vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingCreate($/;" f +sceNetAdhocMatchingDelete vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingDelete(matching_id: i32) -> i32;$/;" f +sceNetAdhocMatchingGetHelloOpt vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingGetHelloOpt($/;" f +sceNetAdhocMatchingGetMembers vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingGetMembers($/;" f +sceNetAdhocMatchingGetPoolMaxAlloc vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingGetPoolMaxAlloc() -> i32;$/;" f +sceNetAdhocMatchingGetPoolStat vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingGetPoolStat(poolstat: *mut AdhocPoolStat) -> i32;$/;" f +sceNetAdhocMatchingInit vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingInit(memsize: i32) -> i32;$/;" f +sceNetAdhocMatchingSelectTarget vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingSelectTarget($/;" f +sceNetAdhocMatchingSendData vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingSendData($/;" f +sceNetAdhocMatchingSetHelloOpt vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingSetHelloOpt($/;" f +sceNetAdhocMatchingStart vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingStart($/;" f +sceNetAdhocMatchingStop vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingStop(matching_id: i32) -> i32;$/;" f +sceNetAdhocMatchingTerm vendor/libc/src/psp.rs /^ pub fn sceNetAdhocMatchingTerm() -> i32;$/;" f +sceNetAdhocPdpCreate vendor/libc/src/psp.rs /^ pub fn sceNetAdhocPdpCreate(mac: *mut u8, port: u16, buf_size: u32, unk1: i32) -> i32;$/;" f +sceNetAdhocPdpDelete vendor/libc/src/psp.rs /^ pub fn sceNetAdhocPdpDelete(id: i32, unk1: i32) -> i32;$/;" f +sceNetAdhocPdpRecv vendor/libc/src/psp.rs /^ pub fn sceNetAdhocPdpRecv($/;" f +sceNetAdhocPdpSend vendor/libc/src/psp.rs /^ pub fn sceNetAdhocPdpSend($/;" f +sceNetAdhocPtpAccept vendor/libc/src/psp.rs /^ pub fn sceNetAdhocPtpAccept($/;" f +sceNetAdhocPtpClose vendor/libc/src/psp.rs /^ pub fn sceNetAdhocPtpClose(id: i32, unk1: i32) -> i32;$/;" f +sceNetAdhocPtpConnect vendor/libc/src/psp.rs /^ pub fn sceNetAdhocPtpConnect(id: i32, timeout: u32, nonblock: i32) -> i32;$/;" f +sceNetAdhocPtpFlush vendor/libc/src/psp.rs /^ pub fn sceNetAdhocPtpFlush(id: i32, timeout: u32, nonblock: i32) -> i32;$/;" f +sceNetAdhocPtpListen vendor/libc/src/psp.rs /^ pub fn sceNetAdhocPtpListen($/;" f +sceNetAdhocPtpOpen vendor/libc/src/psp.rs /^ pub fn sceNetAdhocPtpOpen($/;" f +sceNetAdhocPtpRecv vendor/libc/src/psp.rs /^ pub fn sceNetAdhocPtpRecv($/;" f +sceNetAdhocPtpSend vendor/libc/src/psp.rs /^ pub fn sceNetAdhocPtpSend($/;" f +sceNetAdhocTerm vendor/libc/src/psp.rs /^ pub fn sceNetAdhocTerm() -> i32;$/;" f +sceNetAdhocctlAddHandler vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlAddHandler(handler: SceNetAdhocctlHandler, unknown: *mut c_void) -> i32/;" f +sceNetAdhocctlConnect vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlConnect(name: *const u8) -> i32;$/;" f +sceNetAdhocctlCreate vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlCreate(name: *const u8) -> i32;$/;" f +sceNetAdhocctlCreateEnterGameMode vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlCreateEnterGameMode($/;" f +sceNetAdhocctlDelHandler vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlDelHandler(id: i32) -> i32;$/;" f +sceNetAdhocctlDisconnect vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlDisconnect() -> i32;$/;" f +sceNetAdhocctlExitGameMode vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlExitGameMode() -> i32;$/;" f +sceNetAdhocctlGetAddrByName vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlGetAddrByName($/;" f +sceNetAdhocctlGetAdhocId vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlGetAdhocId(id: *mut SceNetAdhocctlAdhocId) -> i32;$/;" f +sceNetAdhocctlGetGameModeInfo vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlGetGameModeInfo(gamemodeinfo: *mut SceNetAdhocctlGameModeInfo) -> i32;$/;" f +sceNetAdhocctlGetNameByAddr vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlGetNameByAddr(mac: *mut u8, nickname: *mut u8) -> i32;$/;" f +sceNetAdhocctlGetParameter vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlGetParameter(params: *mut SceNetAdhocctlParams) -> i32;$/;" f +sceNetAdhocctlGetPeerInfo vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlGetPeerInfo($/;" f +sceNetAdhocctlGetPeerList vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlGetPeerList(length: *mut i32, buf: *mut c_void) -> i32;$/;" f +sceNetAdhocctlGetScanInfo vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlGetScanInfo(length: *mut i32, buf: *mut c_void) -> i32;$/;" f +sceNetAdhocctlGetState vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlGetState(event: *mut i32) -> i32;$/;" f +sceNetAdhocctlInit vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlInit($/;" f +sceNetAdhocctlJoin vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlJoin(scaninfo: *mut SceNetAdhocctlScanInfo) -> i32;$/;" f +sceNetAdhocctlJoinEnterGameMode vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlJoinEnterGameMode($/;" f +sceNetAdhocctlScan vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlScan() -> i32;$/;" f +sceNetAdhocctlTerm vendor/libc/src/psp.rs /^ pub fn sceNetAdhocctlTerm() -> i32;$/;" f +sceNetApctlAddHandler vendor/libc/src/psp.rs /^ pub fn sceNetApctlAddHandler(handler: SceNetApctlHandler, parg: *mut c_void) -> i32;$/;" f +sceNetApctlConnect vendor/libc/src/psp.rs /^ pub fn sceNetApctlConnect(conn_index: i32) -> i32;$/;" f +sceNetApctlDelHandler vendor/libc/src/psp.rs /^ pub fn sceNetApctlDelHandler(handler_id: i32) -> i32;$/;" f +sceNetApctlDisconnect vendor/libc/src/psp.rs /^ pub fn sceNetApctlDisconnect() -> i32;$/;" f +sceNetApctlGetInfo vendor/libc/src/psp.rs /^ pub fn sceNetApctlGetInfo(code: ApctlInfo, pinfo: *mut SceNetApctlInfo) -> i32;$/;" f +sceNetApctlGetState vendor/libc/src/psp.rs /^ pub fn sceNetApctlGetState(pstate: *mut ApctlState) -> i32;$/;" f +sceNetApctlInit vendor/libc/src/psp.rs /^ pub fn sceNetApctlInit(stack_size: i32, init_priority: i32) -> i32;$/;" f +sceNetApctlTerm vendor/libc/src/psp.rs /^ pub fn sceNetApctlTerm() -> i32;$/;" f +sceNetEtherNtostr vendor/libc/src/psp.rs /^ pub fn sceNetEtherNtostr(mac: *mut u8, name: *mut u8);$/;" f +sceNetEtherStrton vendor/libc/src/psp.rs /^ pub fn sceNetEtherStrton(name: *mut u8, mac: *mut u8);$/;" f +sceNetFreeThreadinfo vendor/libc/src/psp.rs /^ pub fn sceNetFreeThreadinfo(thid: i32) -> i32;$/;" f +sceNetGetLocalEtherAddr vendor/libc/src/psp.rs /^ pub fn sceNetGetLocalEtherAddr(mac: *mut u8) -> i32;$/;" f +sceNetGetMallocStat vendor/libc/src/psp.rs /^ pub fn sceNetGetMallocStat(stat: *mut SceNetMallocStat) -> i32;$/;" f +sceNetInetAccept vendor/libc/src/psp.rs /^ pub fn sceNetInetAccept(s: i32, addr: *mut sockaddr, addr_len: *mut socklen_t) -> i32;$/;" f +sceNetInetBind vendor/libc/src/psp.rs /^ pub fn sceNetInetBind(s: i32, my_addr: *const sockaddr, addr_len: socklen_t) -> i32;$/;" f +sceNetInetClose vendor/libc/src/psp.rs /^ pub fn sceNetInetClose(s: i32) -> i32;$/;" f +sceNetInetConnect vendor/libc/src/psp.rs /^ pub fn sceNetInetConnect(s: i32, serv_addr: *const sockaddr, addr_len: socklen_t) -> i32;$/;" f +sceNetInetGetErrno vendor/libc/src/psp.rs /^ pub fn sceNetInetGetErrno() -> i32;$/;" f +sceNetInetGetsockopt vendor/libc/src/psp.rs /^ pub fn sceNetInetGetsockopt($/;" f +sceNetInetInit vendor/libc/src/psp.rs /^ pub fn sceNetInetInit() -> i32;$/;" f +sceNetInetListen vendor/libc/src/psp.rs /^ pub fn sceNetInetListen(s: i32, backlog: i32) -> i32;$/;" f +sceNetInetRecv vendor/libc/src/psp.rs /^ pub fn sceNetInetRecv(s: i32, buf: *mut c_void, len: usize, flags: i32) -> usize;$/;" f +sceNetInetRecvfrom vendor/libc/src/psp.rs /^ pub fn sceNetInetRecvfrom($/;" f +sceNetInetSend vendor/libc/src/psp.rs /^ pub fn sceNetInetSend(s: i32, buf: *const c_void, len: usize, flags: i32) -> usize;$/;" f +sceNetInetSendto vendor/libc/src/psp.rs /^ pub fn sceNetInetSendto($/;" f +sceNetInetSetsockopt vendor/libc/src/psp.rs /^ pub fn sceNetInetSetsockopt($/;" f +sceNetInetShutdown vendor/libc/src/psp.rs /^ pub fn sceNetInetShutdown(s: i32, how: i32) -> i32;$/;" f +sceNetInetSocket vendor/libc/src/psp.rs /^ pub fn sceNetInetSocket(domain: i32, type_: i32, protocol: i32) -> i32;$/;" f +sceNetInetTerm vendor/libc/src/psp.rs /^ pub fn sceNetInetTerm() -> i32;$/;" f +sceNetInit vendor/libc/src/psp.rs /^ pub fn sceNetInit($/;" f +sceNetResolverCreate vendor/libc/src/psp.rs /^ pub fn sceNetResolverCreate(rid: *mut i32, buf: *mut c_void, buf_length: u32) -> i32;$/;" f +sceNetResolverDelete vendor/libc/src/psp.rs /^ pub fn sceNetResolverDelete(rid: i32) -> i32;$/;" f +sceNetResolverInit vendor/libc/src/psp.rs /^ pub fn sceNetResolverInit() -> i32;$/;" f +sceNetResolverStartAtoN vendor/libc/src/psp.rs /^ pub fn sceNetResolverStartAtoN($/;" f +sceNetResolverStartNtoA vendor/libc/src/psp.rs /^ pub fn sceNetResolverStartNtoA($/;" f +sceNetResolverStop vendor/libc/src/psp.rs /^ pub fn sceNetResolverStop(rid: i32) -> i32;$/;" f +sceNetResolverTerm vendor/libc/src/psp.rs /^ pub fn sceNetResolverTerm() -> i32;$/;" f +sceNetTerm vendor/libc/src/psp.rs /^ pub fn sceNetTerm() -> i32;$/;" f +sceNetThreadAbort vendor/libc/src/psp.rs /^ pub fn sceNetThreadAbort(thid: i32) -> i32;$/;" f +sceOpenPSIDGetOpenPSID vendor/libc/src/psp.rs /^ pub fn sceOpenPSIDGetOpenPSID(openpsid: *mut OpenPSID) -> i32;$/;" f +scePowerGetBatteryChargingStatus vendor/libc/src/psp.rs /^ pub fn scePowerGetBatteryChargingStatus() -> i32;$/;" f +scePowerGetBatteryElec vendor/libc/src/psp.rs /^ pub fn scePowerGetBatteryElec() -> i32;$/;" f +scePowerGetBatteryLifePercent vendor/libc/src/psp.rs /^ pub fn scePowerGetBatteryLifePercent() -> i32;$/;" f +scePowerGetBatteryLifeTime vendor/libc/src/psp.rs /^ pub fn scePowerGetBatteryLifeTime() -> i32;$/;" f +scePowerGetBatteryTemp vendor/libc/src/psp.rs /^ pub fn scePowerGetBatteryTemp() -> i32;$/;" f +scePowerGetBatteryVolt vendor/libc/src/psp.rs /^ pub fn scePowerGetBatteryVolt() -> i32;$/;" f +scePowerGetBusClockFrequency vendor/libc/src/psp.rs /^ pub fn scePowerGetBusClockFrequency() -> i32;$/;" f +scePowerGetBusClockFrequencyFloat vendor/libc/src/psp.rs /^ pub fn scePowerGetBusClockFrequencyFloat() -> f32;$/;" f +scePowerGetBusClockFrequencyInt vendor/libc/src/psp.rs /^ pub fn scePowerGetBusClockFrequencyInt() -> i32;$/;" f +scePowerGetCpuClockFrequency vendor/libc/src/psp.rs /^ pub fn scePowerGetCpuClockFrequency() -> i32;$/;" f +scePowerGetCpuClockFrequencyFloat vendor/libc/src/psp.rs /^ pub fn scePowerGetCpuClockFrequencyFloat() -> f32;$/;" f +scePowerGetCpuClockFrequencyInt vendor/libc/src/psp.rs /^ pub fn scePowerGetCpuClockFrequencyInt() -> i32;$/;" f +scePowerGetIdleTimer vendor/libc/src/psp.rs /^ pub fn scePowerGetIdleTimer() -> i32;$/;" f +scePowerIdleTimerDisable vendor/libc/src/psp.rs /^ pub fn scePowerIdleTimerDisable(unknown: i32) -> i32;$/;" f +scePowerIdleTimerEnable vendor/libc/src/psp.rs /^ pub fn scePowerIdleTimerEnable(unknown: i32) -> i32;$/;" f +scePowerIsBatteryCharging vendor/libc/src/psp.rs /^ pub fn scePowerIsBatteryCharging() -> i32;$/;" f +scePowerIsBatteryExist vendor/libc/src/psp.rs /^ pub fn scePowerIsBatteryExist() -> i32;$/;" f +scePowerIsLowBattery vendor/libc/src/psp.rs /^ pub fn scePowerIsLowBattery() -> i32;$/;" f +scePowerIsPowerOnline vendor/libc/src/psp.rs /^ pub fn scePowerIsPowerOnline() -> i32;$/;" f +scePowerLock vendor/libc/src/psp.rs /^ pub fn scePowerLock(unknown: i32) -> i32;$/;" f +scePowerRegisterCallback vendor/libc/src/psp.rs /^ pub fn scePowerRegisterCallback(slot: i32, cbid: SceUid) -> i32;$/;" f +scePowerRequestStandby vendor/libc/src/psp.rs /^ pub fn scePowerRequestStandby() -> i32;$/;" f +scePowerRequestSuspend vendor/libc/src/psp.rs /^ pub fn scePowerRequestSuspend() -> i32;$/;" f +scePowerSetBusClockFrequency vendor/libc/src/psp.rs /^ pub fn scePowerSetBusClockFrequency(busfreq: i32) -> i32;$/;" f +scePowerSetClockFrequency vendor/libc/src/psp.rs /^ pub fn scePowerSetClockFrequency(pllfreq: i32, cpufreq: i32, busfreq: i32) -> i32;$/;" f +scePowerSetCpuClockFrequency vendor/libc/src/psp.rs /^ pub fn scePowerSetCpuClockFrequency(cpufreq: i32) -> i32;$/;" f +scePowerTick vendor/libc/src/psp.rs /^ pub fn scePowerTick(t: PowerTick) -> i32;$/;" f +scePowerUnlock vendor/libc/src/psp.rs /^ pub fn scePowerUnlock(unknown: i32) -> i32;$/;" f +scePowerUnregisterCallback vendor/libc/src/psp.rs /^ pub fn scePowerUnregisterCallback(slot: i32) -> i32;$/;" f +sceRegCloseCategory vendor/libc/src/psp.rs /^ pub fn sceRegCloseCategory(dir_handle: RegHandle) -> i32;$/;" f +sceRegCloseRegistry vendor/libc/src/psp.rs /^ pub fn sceRegCloseRegistry(handle: RegHandle) -> i32;$/;" f +sceRegCreateKey vendor/libc/src/psp.rs /^ pub fn sceRegCreateKey(dir_handle: RegHandle, name: *const u8, type_: i32, size: usize) -> i/;" f +sceRegFlushCategory vendor/libc/src/psp.rs /^ pub fn sceRegFlushCategory(dir_handle: RegHandle) -> i32;$/;" f +sceRegFlushRegistry vendor/libc/src/psp.rs /^ pub fn sceRegFlushRegistry(handle: RegHandle) -> i32;$/;" f +sceRegGetKeyInfo vendor/libc/src/psp.rs /^ pub fn sceRegGetKeyInfo($/;" f +sceRegGetKeyInfoByName vendor/libc/src/psp.rs /^ pub fn sceRegGetKeyInfoByName($/;" f +sceRegGetKeyValue vendor/libc/src/psp.rs /^ pub fn sceRegGetKeyValue($/;" f +sceRegGetKeyValueByName vendor/libc/src/psp.rs /^ pub fn sceRegGetKeyValueByName($/;" f +sceRegGetKeys vendor/libc/src/psp.rs /^ pub fn sceRegGetKeys(dir_handle: RegHandle, buf: *mut u8, num: i32) -> i32;$/;" f +sceRegGetKeysNum vendor/libc/src/psp.rs /^ pub fn sceRegGetKeysNum(dir_handle: RegHandle, num: *mut i32) -> i32;$/;" f +sceRegOpenCategory vendor/libc/src/psp.rs /^ pub fn sceRegOpenCategory($/;" f +sceRegOpenRegistry vendor/libc/src/psp.rs /^ pub fn sceRegOpenRegistry(reg: *mut Key, mode: i32, handle: *mut RegHandle) -> i32;$/;" f +sceRegRemoveCategory vendor/libc/src/psp.rs /^ pub fn sceRegRemoveCategory(handle: RegHandle, name: *const u8) -> i32;$/;" f +sceRegRemoveRegistry vendor/libc/src/psp.rs /^ pub fn sceRegRemoveRegistry(key: *mut Key) -> i32;$/;" f +sceRegSetKeyValue vendor/libc/src/psp.rs /^ pub fn sceRegSetKeyValue($/;" f +sceRtcCheckValid vendor/libc/src/psp.rs /^ pub fn sceRtcCheckValid(date: *const ScePspDateTime) -> i32;$/;" f +sceRtcCompareTick vendor/libc/src/psp.rs /^ pub fn sceRtcCompareTick(tick1: *const u64, tick2: *const u64) -> i32;$/;" f +sceRtcConvertLocalTimeToUTC vendor/libc/src/psp.rs /^ pub fn sceRtcConvertLocalTimeToUTC(tick_local: *const u64, tick_utc: *mut u64) -> i32;$/;" f +sceRtcConvertUtcToLocalTime vendor/libc/src/psp.rs /^ pub fn sceRtcConvertUtcToLocalTime(tick_utc: *const u64, tick_local: *mut u64) -> i32;$/;" f +sceRtcFormatRFC2822 vendor/libc/src/psp.rs /^ pub fn sceRtcFormatRFC2822($/;" f +sceRtcFormatRFC2822LocalTime vendor/libc/src/psp.rs /^ pub fn sceRtcFormatRFC2822LocalTime(psz_date_time: *mut char, p_utc: *const u64) -> i32;$/;" f +sceRtcFormatRFC3339 vendor/libc/src/psp.rs /^ pub fn sceRtcFormatRFC3339($/;" f +sceRtcFormatRFC3339LocalTime vendor/libc/src/psp.rs /^ pub fn sceRtcFormatRFC3339LocalTime(psz_date_time: *mut char, p_utc: *const u64) -> i32;$/;" f +sceRtcGetCurrentClock vendor/libc/src/psp.rs /^ pub fn sceRtcGetCurrentClock(tm: *mut ScePspDateTime, tz: i32) -> i32;$/;" f +sceRtcGetCurrentClockLocalTime vendor/libc/src/psp.rs /^ pub fn sceRtcGetCurrentClockLocalTime(tm: *mut ScePspDateTime) -> i32;$/;" f +sceRtcGetCurrentTick vendor/libc/src/psp.rs /^ pub fn sceRtcGetCurrentTick(tick: *mut u64) -> i32;$/;" f +sceRtcGetDayOfWeek vendor/libc/src/psp.rs /^ pub fn sceRtcGetDayOfWeek(year: i32, month: i32, day: i32) -> i32;$/;" f +sceRtcGetDaysInMonth vendor/libc/src/psp.rs /^ pub fn sceRtcGetDaysInMonth(year: i32, month: i32) -> i32;$/;" f +sceRtcGetDosTime vendor/libc/src/psp.rs /^ pub fn sceRtcGetDosTime(date: *mut ScePspDateTime, dos_time: u32) -> i32;$/;" f +sceRtcGetTick vendor/libc/src/psp.rs /^ pub fn sceRtcGetTick(date: *const ScePspDateTime, tick: *mut u64) -> i32;$/;" f +sceRtcGetTickResolution vendor/libc/src/psp.rs /^ pub fn sceRtcGetTickResolution() -> u32;$/;" f +sceRtcGetTime64_t vendor/libc/src/psp.rs /^ pub fn sceRtcGetTime64_t(date: *const ScePspDateTime, time: *mut u64) -> i32;$/;" f +sceRtcGetTime_t vendor/libc/src/psp.rs /^ pub fn sceRtcGetTime_t(date: *const ScePspDateTime, time: *mut u32) -> i32;$/;" f +sceRtcGetWin32FileTime vendor/libc/src/psp.rs /^ pub fn sceRtcGetWin32FileTime(date: *mut ScePspDateTime, time: *mut u64) -> i32;$/;" f +sceRtcIsLeapYear vendor/libc/src/psp.rs /^ pub fn sceRtcIsLeapYear(year: i32) -> i32;$/;" f +sceRtcParseDateTime vendor/libc/src/psp.rs /^ pub fn sceRtcParseDateTime(dest_tick: *mut u64, date_string: *const u8) -> i32;$/;" f +sceRtcParseRFC3339 vendor/libc/src/psp.rs /^ pub fn sceRtcParseRFC3339(p_utc: *mut u64, psz_date_time: *const u8) -> i32;$/;" f +sceRtcSetDosTime vendor/libc/src/psp.rs /^ pub fn sceRtcSetDosTime(date: *mut ScePspDateTime, dos_time: u32) -> i32;$/;" f +sceRtcSetTick vendor/libc/src/psp.rs /^ pub fn sceRtcSetTick(date: *mut ScePspDateTime, tick: *const u64) -> i32;$/;" f +sceRtcSetTime64_t vendor/libc/src/psp.rs /^ pub fn sceRtcSetTime64_t(date: *mut ScePspDateTime, time: u64) -> i32;$/;" f +sceRtcSetTime_t vendor/libc/src/psp.rs /^ pub fn sceRtcSetTime_t(date: *mut ScePspDateTime, time: u32) -> i32;$/;" f +sceRtcSetWin32FileTime vendor/libc/src/psp.rs /^ pub fn sceRtcSetWin32FileTime(date: *mut ScePspDateTime, time: *mut u64) -> i32;$/;" f +sceRtcTickAddDays vendor/libc/src/psp.rs /^ pub fn sceRtcTickAddDays(dest_tick: *mut u64, src_tick: *const u64, num_days: u64) -> i32;$/;" f +sceRtcTickAddHours vendor/libc/src/psp.rs /^ pub fn sceRtcTickAddHours(dest_tick: *mut u64, src_tick: *const u64, num_hours: u64) -> i32;$/;" f +sceRtcTickAddMicroseconds vendor/libc/src/psp.rs /^ pub fn sceRtcTickAddMicroseconds(dest_tick: *mut u64, src_tick: *const u64, num_ms: u64)$/;" f +sceRtcTickAddMinutes vendor/libc/src/psp.rs /^ pub fn sceRtcTickAddMinutes(dest_tick: *mut u64, src_tick: *const u64, num_minutes: u64)$/;" f +sceRtcTickAddMonths vendor/libc/src/psp.rs /^ pub fn sceRtcTickAddMonths(dest_tick: *mut u64, src_tick: *const u64, num_months: u64) -> i3/;" f +sceRtcTickAddSeconds vendor/libc/src/psp.rs /^ pub fn sceRtcTickAddSeconds(dest_tick: *mut u64, src_tick: *const u64, num_seconds: u64)$/;" f +sceRtcTickAddTicks vendor/libc/src/psp.rs /^ pub fn sceRtcTickAddTicks(dest_tick: *mut u64, src_tick: *const u64, num_ticks: u64) -> i32;$/;" f +sceRtcTickAddWeeks vendor/libc/src/psp.rs /^ pub fn sceRtcTickAddWeeks(dest_tick: *mut u64, src_tick: *const u64, num_weeks: u64) -> i32;$/;" f +sceRtcTickAddYears vendor/libc/src/psp.rs /^ pub fn sceRtcTickAddYears(dest_tick: *mut u64, src_tick: *const u64, num_years: u64) -> i32;$/;" f +sceSslEnd vendor/libc/src/psp.rs /^ pub fn sceSslEnd() -> i32;$/;" f +sceSslGetUsedMemoryCurrent vendor/libc/src/psp.rs /^ pub fn sceSslGetUsedMemoryCurrent(memory: *mut u32) -> i32;$/;" f +sceSslGetUsedMemoryMax vendor/libc/src/psp.rs /^ pub fn sceSslGetUsedMemoryMax(memory: *mut u32) -> i32;$/;" f +sceSslInit vendor/libc/src/psp.rs /^ pub fn sceSslInit(unknown1: i32) -> i32;$/;" f +sceUmdActivate vendor/libc/src/psp.rs /^ pub fn sceUmdActivate(unit: i32, drive: *const u8) -> i32;$/;" f +sceUmdCancelWaitDriveStat vendor/libc/src/psp.rs /^ pub fn sceUmdCancelWaitDriveStat() -> i32;$/;" f +sceUmdCheckMedium vendor/libc/src/psp.rs /^ pub fn sceUmdCheckMedium() -> i32;$/;" f +sceUmdDeactivate vendor/libc/src/psp.rs /^ pub fn sceUmdDeactivate(unit: i32, drive: *const u8) -> i32;$/;" f +sceUmdGetDiscInfo vendor/libc/src/psp.rs /^ pub fn sceUmdGetDiscInfo(info: *mut UmdInfo) -> i32;$/;" f +sceUmdGetDriveStat vendor/libc/src/psp.rs /^ pub fn sceUmdGetDriveStat() -> i32;$/;" f +sceUmdGetErrorStat vendor/libc/src/psp.rs /^ pub fn sceUmdGetErrorStat() -> i32;$/;" f +sceUmdRegisterUMDCallBack vendor/libc/src/psp.rs /^ pub fn sceUmdRegisterUMDCallBack(cbid: i32) -> i32;$/;" f +sceUmdReplacePermit vendor/libc/src/psp.rs /^ pub fn sceUmdReplacePermit() -> i32;$/;" f +sceUmdReplaceProhibit vendor/libc/src/psp.rs /^ pub fn sceUmdReplaceProhibit() -> i32;$/;" f +sceUmdUnRegisterUMDCallBack vendor/libc/src/psp.rs /^ pub fn sceUmdUnRegisterUMDCallBack(cbid: i32) -> i32;$/;" f +sceUmdWaitDriveStat vendor/libc/src/psp.rs /^ pub fn sceUmdWaitDriveStat(state: i32) -> i32;$/;" f +sceUmdWaitDriveStatCB vendor/libc/src/psp.rs /^ pub fn sceUmdWaitDriveStatCB(state: i32, timeout: u32) -> i32;$/;" f +sceUmdWaitDriveStatWithTimer vendor/libc/src/psp.rs /^ pub fn sceUmdWaitDriveStatWithTimer(state: i32, timeout: u32) -> i32;$/;" f +sceUsbActivate vendor/libc/src/psp.rs /^ pub fn sceUsbActivate(pid: u32) -> i32;$/;" f +sceUsbCamAutoImageReverseSW vendor/libc/src/psp.rs /^ pub fn sceUsbCamAutoImageReverseSW(on: i32) -> i32;$/;" f +sceUsbCamGetAutoImageReverseState vendor/libc/src/psp.rs /^ pub fn sceUsbCamGetAutoImageReverseState() -> i32;$/;" f +sceUsbCamGetBrightness vendor/libc/src/psp.rs /^ pub fn sceUsbCamGetBrightness(brightness: *mut i32) -> i32;$/;" f +sceUsbCamGetContrast vendor/libc/src/psp.rs /^ pub fn sceUsbCamGetContrast(contrast: *mut i32) -> i32;$/;" f +sceUsbCamGetEvLevel vendor/libc/src/psp.rs /^ pub fn sceUsbCamGetEvLevel(exposure_level: *mut UsbCamEvLevel) -> i32;$/;" f +sceUsbCamGetImageEffectMode vendor/libc/src/psp.rs /^ pub fn sceUsbCamGetImageEffectMode(effect_mode: *mut UsbCamEffectMode) -> i32;$/;" f +sceUsbCamGetLensDirection vendor/libc/src/psp.rs /^ pub fn sceUsbCamGetLensDirection() -> i32;$/;" f +sceUsbCamGetReadVideoFrameSize vendor/libc/src/psp.rs /^ pub fn sceUsbCamGetReadVideoFrameSize() -> i32;$/;" f +sceUsbCamGetReverseMode vendor/libc/src/psp.rs /^ pub fn sceUsbCamGetReverseMode(reverse_flags: *mut i32) -> i32;$/;" f +sceUsbCamGetSaturation vendor/libc/src/psp.rs /^ pub fn sceUsbCamGetSaturation(saturation: *mut i32) -> i32;$/;" f +sceUsbCamGetSharpness vendor/libc/src/psp.rs /^ pub fn sceUsbCamGetSharpness(sharpness: *mut i32) -> i32;$/;" f +sceUsbCamGetZoom vendor/libc/src/psp.rs /^ pub fn sceUsbCamGetZoom(zoom: *mut i32) -> i32;$/;" f +sceUsbCamPollReadVideoFrameEnd vendor/libc/src/psp.rs /^ pub fn sceUsbCamPollReadVideoFrameEnd() -> i32;$/;" f +sceUsbCamReadVideoFrame vendor/libc/src/psp.rs /^ pub fn sceUsbCamReadVideoFrame(buf: *mut u8, size: usize) -> i32;$/;" f +sceUsbCamReadVideoFrameBlocking vendor/libc/src/psp.rs /^ pub fn sceUsbCamReadVideoFrameBlocking(buf: *mut u8, size: usize) -> i32;$/;" f +sceUsbCamSetBrightness vendor/libc/src/psp.rs /^ pub fn sceUsbCamSetBrightness(brightness: i32) -> i32;$/;" f +sceUsbCamSetContrast vendor/libc/src/psp.rs /^ pub fn sceUsbCamSetContrast(contrast: i32) -> i32;$/;" f +sceUsbCamSetEvLevel vendor/libc/src/psp.rs /^ pub fn sceUsbCamSetEvLevel(exposure_level: UsbCamEvLevel) -> i32;$/;" f +sceUsbCamSetImageEffectMode vendor/libc/src/psp.rs /^ pub fn sceUsbCamSetImageEffectMode(effect_mode: UsbCamEffectMode) -> i32;$/;" f +sceUsbCamSetReverseMode vendor/libc/src/psp.rs /^ pub fn sceUsbCamSetReverseMode(reverse_flags: i32) -> i32;$/;" f +sceUsbCamSetSaturation vendor/libc/src/psp.rs /^ pub fn sceUsbCamSetSaturation(saturation: i32) -> i32;$/;" f +sceUsbCamSetSharpness vendor/libc/src/psp.rs /^ pub fn sceUsbCamSetSharpness(sharpness: i32) -> i32;$/;" f +sceUsbCamSetZoom vendor/libc/src/psp.rs /^ pub fn sceUsbCamSetZoom(zoom: i32) -> i32;$/;" f +sceUsbCamSetupStill vendor/libc/src/psp.rs /^ pub fn sceUsbCamSetupStill(param: *mut UsbCamSetupStillParam) -> i32;$/;" f +sceUsbCamSetupStillEx vendor/libc/src/psp.rs /^ pub fn sceUsbCamSetupStillEx(param: *mut UsbCamSetupStillExParam) -> i32;$/;" f +sceUsbCamSetupVideo vendor/libc/src/psp.rs /^ pub fn sceUsbCamSetupVideo($/;" f +sceUsbCamSetupVideoEx vendor/libc/src/psp.rs /^ pub fn sceUsbCamSetupVideoEx($/;" f +sceUsbCamStartVideo vendor/libc/src/psp.rs /^ pub fn sceUsbCamStartVideo() -> i32;$/;" f +sceUsbCamStillCancelInput vendor/libc/src/psp.rs /^ pub fn sceUsbCamStillCancelInput() -> i32;$/;" f +sceUsbCamStillGetInputLength vendor/libc/src/psp.rs /^ pub fn sceUsbCamStillGetInputLength() -> i32;$/;" f +sceUsbCamStillInput vendor/libc/src/psp.rs /^ pub fn sceUsbCamStillInput(buf: *mut u8, size: usize) -> i32;$/;" f +sceUsbCamStillInputBlocking vendor/libc/src/psp.rs /^ pub fn sceUsbCamStillInputBlocking(buf: *mut u8, size: usize) -> i32;$/;" f +sceUsbCamStillPollInputEnd vendor/libc/src/psp.rs /^ pub fn sceUsbCamStillPollInputEnd() -> i32;$/;" f +sceUsbCamStillWaitInputEnd vendor/libc/src/psp.rs /^ pub fn sceUsbCamStillWaitInputEnd() -> i32;$/;" f +sceUsbCamStopVideo vendor/libc/src/psp.rs /^ pub fn sceUsbCamStopVideo() -> i32;$/;" f +sceUsbCamWaitReadVideoFrameEnd vendor/libc/src/psp.rs /^ pub fn sceUsbCamWaitReadVideoFrameEnd() -> i32;$/;" f +sceUsbDeactivate vendor/libc/src/psp.rs /^ pub fn sceUsbDeactivate(pid: u32) -> i32;$/;" f +sceUsbGetDrvState vendor/libc/src/psp.rs /^ pub fn sceUsbGetDrvState(driver_name: *const u8) -> i32;$/;" f +sceUsbGetState vendor/libc/src/psp.rs /^ pub fn sceUsbGetState() -> i32;$/;" f +sceUsbStart vendor/libc/src/psp.rs /^ pub fn sceUsbStart(driver_name: *const u8, size: i32, args: *mut c_void) -> i32;$/;" f +sceUsbStop vendor/libc/src/psp.rs /^ pub fn sceUsbStop(driver_name: *const u8, size: i32, args: *mut c_void) -> i32;$/;" f +sceUsbstorBootRegisterNotify vendor/libc/src/psp.rs /^ pub fn sceUsbstorBootRegisterNotify(event_flag: SceUid) -> i32;$/;" f +sceUsbstorBootSetCapacity vendor/libc/src/psp.rs /^ pub fn sceUsbstorBootSetCapacity(size: u32) -> i32;$/;" f +sceUsbstorBootUnregisterNotify vendor/libc/src/psp.rs /^ pub fn sceUsbstorBootUnregisterNotify(event_flag: u32) -> i32;$/;" f +sceUtilityCheckNetParam vendor/libc/src/psp.rs /^ pub fn sceUtilityCheckNetParam(id: i32) -> i32;$/;" f +sceUtilityCopyNetParam vendor/libc/src/psp.rs /^ pub fn sceUtilityCopyNetParam(src: i32, dest: i32) -> i32;$/;" f +sceUtilityCreateNetParam vendor/libc/src/psp.rs /^ pub fn sceUtilityCreateNetParam(conf: i32) -> i32;$/;" f +sceUtilityDeleteNetParam vendor/libc/src/psp.rs /^ pub fn sceUtilityDeleteNetParam(conf: i32) -> i32;$/;" f +sceUtilityGameSharingGetStatus vendor/libc/src/psp.rs /^ pub fn sceUtilityGameSharingGetStatus() -> i32;$/;" f +sceUtilityGameSharingInitStart vendor/libc/src/psp.rs /^ pub fn sceUtilityGameSharingInitStart(params: *mut UtilityGameSharingParams) -> i32;$/;" f +sceUtilityGameSharingShutdownStart vendor/libc/src/psp.rs /^ pub fn sceUtilityGameSharingShutdownStart();$/;" f +sceUtilityGameSharingUpdate vendor/libc/src/psp.rs /^ pub fn sceUtilityGameSharingUpdate(n: i32);$/;" f +sceUtilityGetNetParam vendor/libc/src/psp.rs /^ pub fn sceUtilityGetNetParam(conf: i32, param: NetParam, data: *mut UtilityNetData) -> i32;$/;" f +sceUtilityGetSystemParamInt vendor/libc/src/psp.rs /^ pub fn sceUtilityGetSystemParamInt(id: SystemParamId, value: *mut i32) -> i32;$/;" f +sceUtilityGetSystemParamString vendor/libc/src/psp.rs /^ pub fn sceUtilityGetSystemParamString(id: SystemParamId, str: *mut u8, len: i32) -> i32;$/;" f +sceUtilityHtmlViewerGetStatus vendor/libc/src/psp.rs /^ pub fn sceUtilityHtmlViewerGetStatus() -> i32;$/;" f +sceUtilityHtmlViewerInitStart vendor/libc/src/psp.rs /^ pub fn sceUtilityHtmlViewerInitStart(params: *mut UtilityHtmlViewerParam) -> i32;$/;" f +sceUtilityHtmlViewerShutdownStart vendor/libc/src/psp.rs /^ pub fn sceUtilityHtmlViewerShutdownStart() -> i32;$/;" f +sceUtilityHtmlViewerUpdate vendor/libc/src/psp.rs /^ pub fn sceUtilityHtmlViewerUpdate(n: i32) -> i32;$/;" f +sceUtilityLoadAvModule vendor/libc/src/psp.rs /^ pub fn sceUtilityLoadAvModule(module: AvModule) -> i32;$/;" f +sceUtilityLoadModule vendor/libc/src/psp.rs /^ pub fn sceUtilityLoadModule(module: Module) -> i32;$/;" f +sceUtilityLoadNetModule vendor/libc/src/psp.rs /^ pub fn sceUtilityLoadNetModule(module: NetModule) -> i32;$/;" f +sceUtilityLoadUsbModule vendor/libc/src/psp.rs /^ pub fn sceUtilityLoadUsbModule(module: UsbModule) -> i32;$/;" f +sceUtilityMsgDialogAbort vendor/libc/src/psp.rs /^ pub fn sceUtilityMsgDialogAbort() -> i32;$/;" f +sceUtilityMsgDialogGetStatus vendor/libc/src/psp.rs /^ pub fn sceUtilityMsgDialogGetStatus() -> i32;$/;" f +sceUtilityMsgDialogInitStart vendor/libc/src/psp.rs /^ pub fn sceUtilityMsgDialogInitStart(params: *mut UtilityMsgDialogParams) -> i32;$/;" f +sceUtilityMsgDialogShutdownStart vendor/libc/src/psp.rs /^ pub fn sceUtilityMsgDialogShutdownStart();$/;" f +sceUtilityMsgDialogUpdate vendor/libc/src/psp.rs /^ pub fn sceUtilityMsgDialogUpdate(n: i32);$/;" f +sceUtilityNetconfGetStatus vendor/libc/src/psp.rs /^ pub fn sceUtilityNetconfGetStatus() -> i32;$/;" f +sceUtilityNetconfInitStart vendor/libc/src/psp.rs /^ pub fn sceUtilityNetconfInitStart(data: *mut UtilityNetconfData) -> i32;$/;" f +sceUtilityNetconfShutdownStart vendor/libc/src/psp.rs /^ pub fn sceUtilityNetconfShutdownStart() -> i32;$/;" f +sceUtilityNetconfUpdate vendor/libc/src/psp.rs /^ pub fn sceUtilityNetconfUpdate(unknown: i32) -> i32;$/;" f +sceUtilityOskGetStatus vendor/libc/src/psp.rs /^ pub fn sceUtilityOskGetStatus() -> i32;$/;" f +sceUtilityOskInitStart vendor/libc/src/psp.rs /^ pub fn sceUtilityOskInitStart(params: *mut SceUtilityOskParams) -> i32;$/;" f +sceUtilityOskShutdownStart vendor/libc/src/psp.rs /^ pub fn sceUtilityOskShutdownStart() -> i32;$/;" f +sceUtilityOskUpdate vendor/libc/src/psp.rs /^ pub fn sceUtilityOskUpdate(n: i32) -> i32;$/;" f +sceUtilitySavedataGetStatus vendor/libc/src/psp.rs /^ pub fn sceUtilitySavedataGetStatus() -> i32;$/;" f +sceUtilitySavedataInitStart vendor/libc/src/psp.rs /^ pub fn sceUtilitySavedataInitStart(params: *mut SceUtilitySavedataParam) -> i32;$/;" f +sceUtilitySavedataShutdownStart vendor/libc/src/psp.rs /^ pub fn sceUtilitySavedataShutdownStart() -> i32;$/;" f +sceUtilitySavedataUpdate vendor/libc/src/psp.rs /^ pub fn sceUtilitySavedataUpdate(unknown: i32);$/;" f +sceUtilitySetNetParam vendor/libc/src/psp.rs /^ pub fn sceUtilitySetNetParam(param: NetParam, val: *const c_void) -> i32;$/;" f +sceUtilitySetSystemParamInt vendor/libc/src/psp.rs /^ pub fn sceUtilitySetSystemParamInt(id: SystemParamId, value: i32) -> i32;$/;" f +sceUtilitySetSystemParamString vendor/libc/src/psp.rs /^ pub fn sceUtilitySetSystemParamString(id: SystemParamId, str: *const u8) -> i32;$/;" f +sceUtilityUnloadAvModule vendor/libc/src/psp.rs /^ pub fn sceUtilityUnloadAvModule(module: AvModule) -> i32;$/;" f +sceUtilityUnloadModule vendor/libc/src/psp.rs /^ pub fn sceUtilityUnloadModule(module: Module) -> i32;$/;" f +sceUtilityUnloadNetModule vendor/libc/src/psp.rs /^ pub fn sceUtilityUnloadNetModule(module: NetModule) -> i32;$/;" f +sceUtilityUnloadUsbModule vendor/libc/src/psp.rs /^ pub fn sceUtilityUnloadUsbModule(module: UsbModule) -> i32;$/;" f +sceWlanDevAttach vendor/libc/src/psp.rs /^ pub fn sceWlanDevAttach() -> i32;$/;" f +sceWlanDevDetach vendor/libc/src/psp.rs /^ pub fn sceWlanDevDetach() -> i32;$/;" f +sceWlanDevIsPowerOn vendor/libc/src/psp.rs /^ pub fn sceWlanDevIsPowerOn() -> i32;$/;" f +sceWlanGetEtherAddr vendor/libc/src/psp.rs /^ pub fn sceWlanGetEtherAddr(ether_addr: *mut u8) -> i32;$/;" f +sceWlanGetSwitchState vendor/libc/src/psp.rs /^ pub fn sceWlanGetSwitchState() -> i32;$/;" f +schannel vendor/winapi/src/um/mod.rs /^#[cfg(feature = "schannel")] pub mod schannel;$/;" n +sched_affinity vendor/nix/src/sched.rs /^mod sched_affinity {$/;" n +sched_get_priority_max vendor/libc/src/fuchsia/mod.rs /^ pub fn sched_get_priority_max(policy: ::c_int) -> ::c_int;$/;" f +sched_get_priority_max vendor/libc/src/unix/bsd/mod.rs /^ pub fn sched_get_priority_max(policy: ::c_int) -> ::c_int;$/;" f +sched_get_priority_max vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sched_get_priority_max(policy: ::c_int) -> ::c_int;$/;" f +sched_get_priority_max vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sched_get_priority_max(policy: ::c_int) -> ::c_int;$/;" f +sched_get_priority_max vendor/libc/src/unix/solarish/mod.rs /^ pub fn sched_get_priority_max(policy: ::c_int) -> ::c_int;$/;" f +sched_get_priority_min vendor/libc/src/fuchsia/mod.rs /^ pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;$/;" f +sched_get_priority_min vendor/libc/src/unix/bsd/mod.rs /^ pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;$/;" f +sched_get_priority_min vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;$/;" f +sched_get_priority_min vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;$/;" f +sched_get_priority_min vendor/libc/src/unix/solarish/mod.rs /^ pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;$/;" f +sched_getaffinity vendor/libc/src/fuchsia/mod.rs /^ pub fn sched_getaffinity(pid: ::pid_t, cpusetsize: ::size_t, cpuset: *mut cpu_set_t)$/;" f +sched_getaffinity vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn sched_getaffinity(pid: ::pid_t, cpusetsize: ::size_t, mask: *mut cpu_set_t) -> ::c_in/;" f +sched_getaffinity vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn sched_getaffinity(pid: ::pid_t, cpusetsz: ::size_t, cpuset: *mut ::cpuset_t) -> ::c_i/;" f +sched_getaffinity vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sched_getaffinity(pid: ::pid_t, cpusetsize: ::size_t, cpuset: *mut cpu_set_t)$/;" f +sched_getaffinity vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sched_getaffinity(pid: ::pid_t, cpusetsize: ::size_t, cpuset: *mut cpu_set_t)$/;" f +sched_getaffinity vendor/nix/src/sched.rs /^ pub fn sched_getaffinity(pid: Pid) -> Result {$/;" f module:sched_affinity +sched_getcpu vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn sched_getcpu() -> ::c_int;$/;" f +sched_getcpu vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn sched_getcpu() -> ::c_int;$/;" f +sched_getcpu vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sched_getcpu() -> ::c_int;$/;" f +sched_getcpu vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sched_getcpu() -> ::c_int;$/;" f +sched_getparam vendor/libc/src/fuchsia/mod.rs /^ pub fn sched_getparam(pid: ::pid_t, param: *mut ::sched_param) -> ::c_int;$/;" f +sched_getparam vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sched_getparam(pid: ::pid_t, param: *mut sched_param) -> ::c_int;$/;" f +sched_getparam vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn sched_getparam(pid: ::pid_t, param: *mut ::sched_param) -> ::c_int;$/;" f +sched_getparam vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sched_getparam(pid: ::pid_t, param: *mut ::sched_param) -> ::c_int;$/;" f +sched_getparam vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sched_getparam(pid: ::pid_t, param: *mut ::sched_param) -> ::c_int;$/;" f +sched_getparam vendor/libc/src/unix/solarish/mod.rs /^ pub fn sched_getparam(pid: ::pid_t, param: *mut sched_param) -> ::c_int;$/;" f +sched_getscheduler vendor/libc/src/fuchsia/mod.rs /^ pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int;$/;" f +sched_getscheduler vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int;$/;" f +sched_getscheduler vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int;$/;" f +sched_getscheduler vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int;$/;" f +sched_getscheduler vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int;$/;" f +sched_getscheduler vendor/libc/src/unix/solarish/mod.rs /^ pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int;$/;" f +sched_linux_like vendor/nix/src/sched.rs /^mod sched_linux_like {$/;" n +sched_rr_get_interval vendor/libc/src/fuchsia/mod.rs /^ pub fn sched_rr_get_interval(pid: ::pid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +sched_rr_get_interval vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sched_rr_get_interval(pid: ::pid_t, t: *mut ::timespec) -> ::c_int;$/;" f +sched_rr_get_interval vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn sched_rr_get_interval(pid: ::pid_t, t: *mut ::timespec) -> ::c_int;$/;" f +sched_rr_get_interval vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sched_rr_get_interval(pid: ::pid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +sched_rr_get_interval vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sched_rr_get_interval(pid: ::pid_t, tp: *mut ::timespec) -> ::c_int;$/;" f +sched_setaffinity vendor/libc/src/fuchsia/mod.rs /^ pub fn sched_setaffinity($/;" f +sched_setaffinity vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn sched_setaffinity(pid: ::pid_t, cpusetsize: ::size_t, mask: *const cpu_set_t)$/;" f +sched_setaffinity vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn sched_setaffinity($/;" f +sched_setaffinity vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sched_setaffinity($/;" f +sched_setaffinity vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sched_setaffinity($/;" f +sched_setaffinity vendor/nix/src/sched.rs /^ pub fn sched_setaffinity(pid: Pid, cpuset: &CpuSet) -> Result<()> {$/;" f module:sched_affinity +sched_setparam vendor/libc/src/fuchsia/mod.rs /^ pub fn sched_setparam(pid: ::pid_t, param: *const ::sched_param) -> ::c_int;$/;" f +sched_setparam vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sched_setparam(pid: ::pid_t, param: *const sched_param) -> ::c_int;$/;" f +sched_setparam vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn sched_setparam(pid: ::pid_t, param: *const ::sched_param) -> ::c_int;$/;" f +sched_setparam vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sched_setparam(pid: ::pid_t, param: *const ::sched_param) -> ::c_int;$/;" f +sched_setparam vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sched_setparam(pid: ::pid_t, param: *const ::sched_param) -> ::c_int;$/;" f +sched_setparam vendor/libc/src/unix/solarish/mod.rs /^ pub fn sched_setparam(pid: ::pid_t, param: *const sched_param) -> ::c_int;$/;" f +sched_setscheduler vendor/libc/src/fuchsia/mod.rs /^ pub fn sched_setscheduler($/;" f +sched_setscheduler vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sched_setscheduler($/;" f +sched_setscheduler vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn sched_setscheduler($/;" f +sched_setscheduler vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sched_setscheduler($/;" f +sched_setscheduler vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sched_setscheduler($/;" f +sched_setscheduler vendor/libc/src/unix/solarish/mod.rs /^ pub fn sched_setscheduler($/;" f +sched_yield vendor/libc/src/fuchsia/mod.rs /^ pub fn sched_yield() -> ::c_int;$/;" f +sched_yield vendor/libc/src/unix/mod.rs /^ pub fn sched_yield() -> ::c_int;$/;" f +sched_yield vendor/libc/src/vxworks/mod.rs /^ pub fn sched_yield() -> ::c_int;$/;" f +sched_yield vendor/libc/src/wasi.rs /^ pub fn sched_yield() -> ::c_int;$/;" f +sched_yield vendor/nix/src/sched.rs /^pub fn sched_yield() -> Result<()> {$/;" f +scope builtins_rust/declare/src/lib.rs /^ scope: i32, \/* 0 means global context *\/$/;" m struct:VAR_CONTEXT +scope r_bash/src/lib.rs /^ pub scope: ::std::os::raw::c_int,$/;" m struct:var_context +scope variables.h /^ int scope; \/* 0 means global context *\/$/;" m struct:var_context typeref:typename:int +scope vendor/fluent-bundle/src/resolver/mod.rs /^mod scope;$/;" n +scope vendor/syn/src/buffer.rs /^ scope: *const Entry,$/;" m struct:Cursor +scope vendor/syn/src/lookahead.rs /^ scope: Span,$/;" m struct:Lookahead1 +scope vendor/syn/src/parse.rs /^ scope: Span,$/;" m struct:ParseBuffer +scope vendor/syn/src/parse.rs /^ scope: Span,$/;" m struct:StepCursor +scope_id vendor/nix/src/sys/socket/addr.rs /^ pub const fn scope_id(&self) -> u32 {$/;" P implementation:SockaddrIn6 +script vendor/unic-langid-impl/src/lib.rs /^ pub script: Option,$/;" m struct:LanguageIdentifier +script vendor/unic-langid-impl/src/subtags/mod.rs /^mod script;$/;" n +scripts/make-byte-frequency-table vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +scripts/run_miri.sh vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +sdallocx vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn sdallocx(ptr: *mut ::c_void, size: ::size_t, flags: ::c_int);$/;" f +sddl vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "sddl")] pub mod sddl;$/;" n +sealed vendor/syn/src/lib.rs /^mod sealed;$/;" n +search lib/intl/dcigettext.c /^ struct known_translation_t *search;$/;" v typeref:struct:known_translation_t * +search.o lib/readline/Makefile.in /^search.o: ansi_stdlib.h history.h rlstdc.h$/;" t +search.o lib/readline/Makefile.in /^search.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +search.o lib/readline/Makefile.in /^search.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +search.o lib/readline/Makefile.in /^search.o: rlmbutil.h$/;" t +search.o lib/readline/Makefile.in /^search.o: rlprivate.h$/;" t +search.o lib/readline/Makefile.in /^search.o: search.c$/;" t +search.o lib/readline/Makefile.in /^search.o: xmalloc.h$/;" t +search_for_command builtins_rust/exec/src/lib.rs /^ fn search_for_command(pathname: *const c_char, flags: i32) -> *mut c_char;$/;" f +search_for_command findcmd.c /^search_for_command (pathname, flags)$/;" f +search_for_command r_bash/src/lib.rs /^ pub fn search_for_command($/;" f +search_match lib/readline/histexpand.c /^static char *search_match;$/;" v typeref:typename:char * file: +search_string lib/readline/histexpand.c /^static char *search_string;$/;" v typeref:typename:char * file: +search_string lib/readline/rlprivate.h /^ char *search_string;$/;" m struct:__rl_search_context typeref:typename:char * +search_string r_readline/src/lib.rs /^ pub search_string: *mut ::std::os::raw::c_char,$/;" m struct:__rl_search_context +search_string_index lib/readline/rlprivate.h /^ int search_string_index;$/;" m struct:__rl_search_context typeref:typename:int +search_string_index r_readline/src/lib.rs /^ pub search_string_index: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +search_string_size lib/readline/rlprivate.h /^ int search_string_size;$/;" m struct:__rl_search_context typeref:typename:int +search_string_size r_readline/src/lib.rs /^ pub search_string_size: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +search_terminators lib/readline/rlprivate.h /^ char *search_terminators;$/;" m struct:__rl_search_context typeref:typename:char * +search_terminators r_readline/src/lib.rs /^ pub search_terminators: *mut ::std::os::raw::c_char,$/;" m struct:__rl_search_context +searcher vendor/memchr/src/memmem/mod.rs /^ searcher: Searcher<'n>,$/;" m struct:Finder +searcher vendor/memchr/src/memmem/mod.rs /^ searcher: SearcherRev<'n>,$/;" m struct:FinderRev +sec_href support/texi2html /^sub sec_href$/;" s +second builtins_rust/cd/src/lib.rs /^ second: *mut COMMAND,$/;" m struct:connection +second builtins_rust/command/src/lib.rs /^ pub second: *mut COMMAND,$/;" m struct:connection +second builtins_rust/common/src/lib.rs /^ second: *mut COMMAND,$/;" m struct:connection +second builtins_rust/complete/src/lib.rs /^ second: *mut COMMAND,$/;" m struct:connection +second builtins_rust/declare/src/lib.rs /^ second: *mut COMMAND,$/;" m struct:connection +second builtins_rust/fc/src/lib.rs /^ second: *mut COMMAND,$/;" m struct:connection +second builtins_rust/fg_bg/src/lib.rs /^ second: *mut COMMAND,$/;" m struct:connection +second builtins_rust/getopts/src/lib.rs /^ second: *mut COMMAND,$/;" m struct:connection +second builtins_rust/jobs/src/lib.rs /^ second: *mut COMMAND,$/;" m struct:connection +second builtins_rust/pushd/src/lib.rs /^ second: *mut COMMAND,$/;" m struct:connection +second builtins_rust/source/src/lib.rs /^ second: *mut COMMAND,$/;" m struct:connection +second builtins_rust/type/src/lib.rs /^ second: *mut COMMAND,$/;" m struct:connection +second command.h /^ COMMAND *second; \/* Pointer to the second command. *\/$/;" m struct:connection typeref:typename:COMMAND * +second r_bash/src/lib.rs /^ pub second: *mut COMMAND,$/;" m struct:connection +second r_glob/src/lib.rs /^ pub second: *mut COMMAND,$/;" m struct:connection +second r_readline/src/lib.rs /^ pub second: *mut COMMAND,$/;" m struct:connection +secondary_prompt r_bash/src/lib.rs /^ pub static mut secondary_prompt: *mut ::std::os::raw::c_char;$/;" v +seconds vendor/nix/src/sys/time.rs /^ fn seconds(seconds: i64) -> Self;$/;" P interface:TimeValLike +seconds vendor/nix/src/sys/time.rs /^ fn seconds(seconds: i64) -> TimeSpec {$/;" P implementation:TimeSpec +seconds vendor/nix/src/sys/time.rs /^ fn seconds(seconds: i64) -> TimeVal {$/;" P implementation:TimeVal +seconds_value_assigned variables.c /^static intmax_t seconds_value_assigned;$/;" v typeref:typename:intmax_t file: +secure_getenv r_bash/src/lib.rs /^ pub fn secure_getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +secure_getenv r_glob/src/lib.rs /^ pub fn secure_getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +secure_getenv r_readline/src/lib.rs /^ pub fn secure_getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +secure_path vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn secure_path(path: *const ::c_char) -> ::c_int;$/;" f +securityappcontainer vendor/winapi/src/um/mod.rs /^#[cfg(feature = "securityappcontainer")] pub mod securityappcontainer;$/;" n +securitybaseapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "securitybaseapi")] pub mod securitybaseapi;$/;" n +seed48 r_bash/src/lib.rs /^ pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort;$/;" f +seed48 r_glob/src/lib.rs /^ pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort;$/;" f +seed48 r_readline/src/lib.rs /^ pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort;$/;" f +seed48 vendor/libc/src/solid/mod.rs /^ pub fn seed48(arg1: *mut c_ushort) -> *mut c_ushort;$/;" f +seed48 vendor/libc/src/unix/bsd/mod.rs /^ pub fn seed48(xseed: *mut ::c_ushort) -> *mut ::c_ushort;$/;" f +seed48 vendor/libc/src/unix/haiku/mod.rs /^ pub fn seed48(xseed: *mut ::c_ushort) -> *mut ::c_ushort;$/;" f +seed48_deterministic vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn seed48_deterministic(xseed: *mut ::c_ushort) -> *mut ::c_ushort;$/;" f +seed48_r r_bash/src/lib.rs /^ pub fn seed48_r($/;" f +seed48_r r_glob/src/lib.rs /^ pub fn seed48_r($/;" f +seed48_r r_readline/src/lib.rs /^ pub fn seed48_r($/;" f +seeded_subshell variables.c /^static int seeded_subshell = 0;$/;" v typeref:typename:int file: +seedrand lib/sh/random.c /^seedrand ()$/;" f typeref:typename:void +seedrand r_bash/src/lib.rs /^ pub fn seedrand();$/;" f +seedrand32 lib/sh/random.c /^seedrand32 ()$/;" f typeref:typename:void +seedrand32 r_bash/src/lib.rs /^ pub fn seedrand32();$/;" f +seek r_bash/src/lib.rs /^ pub seek: cookie_seek_function_t,$/;" m struct:_IO_cookie_io_functions_t +seek r_readline/src/lib.rs /^ pub seek: cookie_seek_function_t,$/;" m struct:_IO_cookie_io_functions_t +seek vendor/futures-util/src/io/allow_std.rs /^ fn seek(&mut self, pos: SeekFrom) -> io::Result {$/;" f +seek vendor/futures-util/src/io/mod.rs /^ fn seek(&mut self, pos: SeekFrom) -> Seek<'_, Self>$/;" P interface:AsyncSeekExt +seek vendor/futures-util/src/io/mod.rs /^mod seek;$/;" n +seek vendor/futures-util/src/io/seek.rs /^ seek: &'a mut S,$/;" m struct:Seek +seek vendor/futures/tests/io_buf_reader.rs /^ fn seek(&mut self, pos: SeekFrom) -> io::Result {$/;" P implementation:test_buffered_reader_seek_underflow::PositionReader +seek_relative vendor/futures-util/src/io/buf_reader.rs /^ pub fn seek_relative(self: Pin<&mut Self>, offset: i64) -> SeeKRelative<'_, R> {$/;" P implementation:BufReader +seekdir r_bash/src/lib.rs /^ pub fn seekdir(__dirp: *mut DIR, __pos: ::std::os::raw::c_long);$/;" f +seekdir r_glob/src/lib.rs /^ pub fn seekdir();$/;" f +seekdir r_readline/src/lib.rs /^ pub fn seekdir(__dirp: *mut DIR, __pos: ::std::os::raw::c_long);$/;" f +seekdir vendor/libc/src/fuchsia/mod.rs /^ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long);$/;" f +seekdir vendor/libc/src/unix/bsd/mod.rs /^ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long);$/;" f +seekdir vendor/libc/src/unix/haiku/mod.rs /^ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long);$/;" f +seekdir vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long);$/;" f +seekdir vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long);$/;" f +seekdir vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long);$/;" f +seekdir vendor/libc/src/unix/solarish/mod.rs /^ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long);$/;" f +seekdir vendor/libc/src/wasi.rs /^ pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long);$/;" f +segment_pair lib/intl/gmo.h /^ struct segment_pair$/;" s struct:sysdep_string +segments lib/intl/gmo.h /^ } segments[1];$/;" m struct:sysdep_string typeref:struct:sysdep_string::segment_pair[1] +segments lib/malloc/alloca.c /^ long segments; \/* Current number of stack segments. *\/$/;" m struct:stk_stat typeref:typename:long file: +segsize lib/intl/gmo.h /^ nls_uint32 segsize;$/;" m struct:sysdep_string::segment_pair typeref:typename:nls_uint32 +segsz_t vendor/libc/src/solid/mod.rs /^pub type segsz_t = i32;$/;" t +segsz_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type segsz_t = usize;$/;" t +segsz_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type segsz_t = isize;$/;" t +seize vendor/nix/src/sys/ptrace/linux.rs /^pub fn seize(pid: Pid, options: Options) -> Result<()> {$/;" f +select configure.ac /^AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select], [include select command]), opt_select=$e/;" e +select r_bash/src/lib.rs /^ pub fn select($/;" f +select r_glob/src/lib.rs /^ pub fn select($/;" f +select r_readline/src/lib.rs /^ pub fn select($/;" f +select vendor/futures-macro/src/lib.rs /^mod select;$/;" n +select vendor/futures-macro/src/select.rs /^pub(crate) fn select(input: TokenStream) -> TokenStream {$/;" f +select vendor/futures-util/src/future/mod.rs /^mod select;$/;" n +select vendor/futures-util/src/future/select.rs /^pub fn select(future1: A, future2: B) -> Select$/;" f +select vendor/futures-util/src/stream/mod.rs /^mod select;$/;" n +select vendor/futures-util/src/stream/select.rs /^pub fn select(stream1: St1, stream2: St2) -> Select$/;" f +select vendor/futures/tests/async_await_macros.rs /^fn select() {$/;" f +select vendor/futures/tests/stream.rs /^fn select() {$/;" f +select vendor/futures/tests/stream_select_next_some.rs /^fn select() {$/;" f +select vendor/intl_pluralrules/src/lib.rs /^ pub fn select>($/;" P implementation:PluralRules +select vendor/libc/src/fuchsia/mod.rs /^ pub fn select($/;" f +select vendor/libc/src/unix/mod.rs /^ pub fn select($/;" f +select vendor/nix/src/sys/select.rs /^pub fn select<'a, N, R, W, E, T>(nfds: N,$/;" f +select vendor/winapi/src/um/winsock2.rs /^ pub fn select($/;" f +select1 vendor/futures/tests/eventual.rs /^fn select1() {$/;" f +select2 vendor/futures/tests/eventual.rs /^fn select2() {$/;" f +select2 vendor/futures/tests_disabled/all.rs /^fn select2() {$/;" f +select3 vendor/futures/tests/eventual.rs /^fn select3() {$/;" f +select4 vendor/futures/tests/eventual.rs /^fn select4() {$/;" f +select_all vendor/futures-util/src/future/mod.rs /^mod select_all;$/;" n +select_all vendor/futures-util/src/future/select_all.rs /^pub fn select_all(iter: I) -> SelectAll$/;" f +select_all vendor/futures-util/src/stream/mod.rs /^pub mod select_all;$/;" n +select_all vendor/futures-util/src/stream/select_all.rs /^pub fn select_all(streams: I) -> SelectAll$/;" f +select_and_compare vendor/futures/tests/stream.rs /^ fn select_and_compare(a: Vec, b: Vec, expected: Vec) {$/;" f function:select +select_biased vendor/futures-macro/src/select.rs /^pub(crate) fn select_biased(input: TokenStream) -> TokenStream {$/;" f +select_biased vendor/futures/tests/async_await_macros.rs /^fn select_biased() {$/;" f +select_biased_internal vendor/futures-macro/src/lib.rs /^pub fn select_biased_internal(input: TokenStream) -> TokenStream {$/;" f +select_can_be_used_as_expression vendor/futures/tests/async_await_macros.rs /^fn select_can_be_used_as_expression() {$/;" f +select_can_move_uncompleted_futures vendor/futures/tests/async_await_macros.rs /^fn select_can_move_uncompleted_futures() {$/;" f +select_cancels vendor/futures/tests_disabled/all.rs /^fn select_cancels() {$/;" f +select_com builtins_rust/cd/src/lib.rs /^pub struct select_com {$/;" s +select_com builtins_rust/command/src/lib.rs /^pub struct select_com {$/;" s +select_com builtins_rust/common/src/lib.rs /^pub struct select_com {$/;" s +select_com builtins_rust/complete/src/lib.rs /^pub struct select_com {$/;" s +select_com builtins_rust/declare/src/lib.rs /^pub struct select_com {$/;" s +select_com builtins_rust/fc/src/lib.rs /^pub struct select_com {$/;" s +select_com builtins_rust/fg_bg/src/lib.rs /^pub struct select_com {$/;" s +select_com builtins_rust/getopts/src/lib.rs /^pub struct select_com {$/;" s +select_com builtins_rust/jobs/src/lib.rs /^pub struct select_com {$/;" s +select_com builtins_rust/kill/src/intercdep.rs /^pub struct select_com {$/;" s +select_com builtins_rust/pushd/src/lib.rs /^pub struct select_com {$/;" s +select_com builtins_rust/setattr/src/intercdep.rs /^pub struct select_com {$/;" s +select_com builtins_rust/source/src/lib.rs /^pub struct select_com {$/;" s +select_com builtins_rust/type/src/lib.rs /^pub struct select_com {$/;" s +select_com command.h /^typedef struct select_com {$/;" s +select_com r_bash/src/lib.rs /^pub struct select_com {$/;" s +select_com r_glob/src/lib.rs /^pub struct select_com {$/;" s +select_com r_readline/src/lib.rs /^pub struct select_com {$/;" s +select_command parse.y /^select_command: SELECT WORD newline_list DO list DONE$/;" l +select_inner vendor/futures-macro/src/select.rs /^fn select_inner(input: TokenStream, random: bool) -> TokenStream {$/;" f +select_internal vendor/futures-macro/src/lib.rs /^pub fn select_internal(input: TokenStream) -> TokenStream {$/;" f +select_mod vendor/futures-util/src/async_await/mod.rs /^mod select_mod;$/;" n +select_nested vendor/futures/tests/async_await_macros.rs /^fn select_nested() {$/;" f +select_next_some vendor/futures-util/src/stream/stream/mod.rs /^ fn select_next_some(&mut self) -> SelectNextSome<'_, Self>$/;" P interface:StreamExt +select_next_some vendor/futures-util/src/stream/stream/mod.rs /^mod select_next_some;$/;" n +select_ok vendor/futures-util/src/future/mod.rs /^mod select_ok;$/;" n +select_ok vendor/futures-util/src/future/select_ok.rs /^pub fn select_ok(iter: I) -> SelectOk$/;" f +select_on_mutable_borrowing_future_with_same_borrow_in_block vendor/futures/tests/async_await_macros.rs /^fn select_on_mutable_borrowing_future_with_same_borrow_in_block() {$/;" f +select_on_mutable_borrowing_future_with_same_borrow_in_block_and_default vendor/futures/tests/async_await_macros.rs /^fn select_on_mutable_borrowing_future_with_same_borrow_in_block_and_default() {$/;" f +select_on_non_unpin_expressions vendor/futures/tests/async_await_macros.rs /^fn select_on_non_unpin_expressions() {$/;" f +select_on_non_unpin_expressions_with_default vendor/futures/tests/async_await_macros.rs /^fn select_on_non_unpin_expressions_with_default() {$/;" f +select_on_non_unpin_size vendor/futures/tests/async_await_macros.rs /^fn select_on_non_unpin_size() {$/;" f +select_query execute_cmd.c /^select_query (list, list_len, prompt, print_menu)$/;" f file: +select_size vendor/futures/tests/async_await_macros.rs /^fn select_size() {$/;" f +select_streams vendor/futures-util/benches/select.rs /^fn select_streams(b: &mut Bencher) {$/;" f +select_streams vendor/futures/tests/async_await_macros.rs /^fn select_streams() {$/;" f +select_with_complete_can_be_used_as_expression vendor/futures/tests/async_await_macros.rs /^fn select_with_complete_can_be_used_as_expression() {$/;" f +select_with_default_can_be_used_as_expression vendor/futures/tests/async_await_macros.rs /^fn select_with_default_can_be_used_as_expression() {$/;" f +select_with_strategy vendor/futures-util/src/stream/mod.rs /^mod select_with_strategy;$/;" n +select_with_strategy vendor/futures-util/src/stream/select_with_strategy.rs /^pub fn select_with_strategy($/;" f +select_with_strategy_doesnt_terminate_early vendor/futures/tests/stream.rs /^fn select_with_strategy_doesnt_terminate_early() {$/;" f +self_cell vendor/self_cell/src/lib.rs /^macro_rules! self_cell {$/;" M +self_delimiting alias.c /^#define self_delimiting(/;" d file: +self_waking_run_until_stalled vendor/futures-executor/tests/local_pool.rs /^fn self_waking_run_until_stalled() {$/;" f +self_waking_try_run_one vendor/futures-executor/tests/local_pool.rs /^fn self_waking_try_run_one() {$/;" f +selfmut vendor/async-trait/tests/test.rs /^ async fn selfmut(&mut self) {}$/;" P implementation:Struct +selfmut vendor/async-trait/tests/test.rs /^ async fn selfmut(&mut self) {}$/;" P interface:Trait +selfref vendor/async-trait/tests/test.rs /^ async fn selfref(&self) {}$/;" P implementation:Struct +selfref vendor/async-trait/tests/test.rs /^ async fn selfref(&self) {}$/;" P interface:Trait +selfvalue vendor/async-trait/tests/test.rs /^ async fn selfvalue(self) {}$/;" P implementation:Struct +selfvalue vendor/async-trait/tests/test.rs /^ async fn selfvalue(self)$/;" P interface:Trait +sem vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^impl ::Clone for sem {$/;" c +sem vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^impl ::Copy for sem {}$/;" c +sem vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub enum sem {}$/;" g +sem vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^impl ::Clone for sem {$/;" c +sem vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^impl ::Copy for sem {}$/;" c +sem vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub enum sem {}$/;" g +sem_close vendor/libc/src/fuchsia/mod.rs /^ pub fn sem_close(sem: *mut sem_t) -> ::c_int;$/;" f +sem_close vendor/libc/src/unix/bsd/mod.rs /^ pub fn sem_close(sem: *mut sem_t) -> ::c_int;$/;" f +sem_close vendor/libc/src/unix/haiku/mod.rs /^ pub fn sem_close(sem: *mut sem_t) -> ::c_int;$/;" f +sem_close vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sem_close(sem: *mut sem_t) -> ::c_int;$/;" f +sem_close vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sem_close(sem: *mut sem_t) -> ::c_int;$/;" f +sem_close vendor/libc/src/unix/newlib/mod.rs /^ pub fn sem_close(sem: *mut sem_t) -> ::c_int;$/;" f +sem_close vendor/libc/src/unix/solarish/mod.rs /^ pub fn sem_close(sem: *mut sem_t) -> ::c_int;$/;" f +sem_destroy vendor/libc/src/fuchsia/mod.rs /^ pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;$/;" f +sem_destroy vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;$/;" f +sem_destroy vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;$/;" f +sem_destroy vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;$/;" f +sem_destroy vendor/libc/src/unix/haiku/mod.rs /^ pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;$/;" f +sem_destroy vendor/libc/src/unix/hermit/mod.rs /^ pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;$/;" f +sem_destroy vendor/libc/src/unix/linux_like/mod.rs /^ pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;$/;" f +sem_destroy vendor/libc/src/unix/newlib/mod.rs /^ pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;$/;" f +sem_destroy vendor/libc/src/unix/solarish/mod.rs /^ pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;$/;" f +sem_getvalue vendor/libc/src/fuchsia/mod.rs /^ pub fn sem_getvalue(sem: *mut sem_t, sval: *mut ::c_int) -> ::c_int;$/;" f +sem_getvalue vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sem_getvalue(sem: *mut sem_t, sval: *mut ::c_int) -> ::c_int;$/;" f +sem_getvalue vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn sem_getvalue(sem: *mut sem_t, sval: *mut ::c_int) -> ::c_int;$/;" f +sem_getvalue vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sem_getvalue(sem: *mut sem_t, sval: *mut ::c_int) -> ::c_int;$/;" f +sem_getvalue vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sem_getvalue(sem: *mut sem_t, sval: *mut ::c_int) -> ::c_int;$/;" f +sem_getvalue vendor/libc/src/unix/solarish/mod.rs /^ pub fn sem_getvalue(sem: *mut sem_t, sval: *mut ::c_int) -> ::c_int;$/;" f +sem_id vendor/libc/src/unix/haiku/native.rs /^pub type sem_id = i32;$/;" t +sem_init vendor/libc/src/fuchsia/mod.rs /^ pub fn sem_init(sem: *mut sem_t, pshared: ::c_int, value: ::c_uint) -> ::c_int;$/;" f +sem_init vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn sem_init(sem: *mut sem_t, pshared: ::c_int, value: ::c_uint) -> ::c_int;$/;" f +sem_init vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sem_init(sem: *mut sem_t, pshared: ::c_int, value: ::c_uint) -> ::c_int;$/;" f +sem_init vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn sem_init(sem: *mut sem_t, pshared: ::c_int, value: ::c_uint) -> ::c_int;$/;" f +sem_init vendor/libc/src/unix/haiku/mod.rs /^ pub fn sem_init(sem: *mut sem_t, pshared: ::c_int, value: ::c_uint) -> ::c_int;$/;" f +sem_init vendor/libc/src/unix/hermit/mod.rs /^ pub fn sem_init(sem: *mut sem_t, pshared: ::c_int, value: ::c_uint) -> ::c_int;$/;" f +sem_init vendor/libc/src/unix/linux_like/mod.rs /^ pub fn sem_init(sem: *mut sem_t, pshared: ::c_int, value: ::c_uint) -> ::c_int;$/;" f +sem_init vendor/libc/src/unix/newlib/mod.rs /^ pub fn sem_init(sem: *mut sem_t, pshared: ::c_int, value: ::c_uint) -> ::c_int;$/;" f +sem_init vendor/libc/src/unix/solarish/mod.rs /^ pub fn sem_init(sem: *mut sem_t, pshared: ::c_int, value: ::c_uint) -> ::c_int;$/;" f +sem_open vendor/libc/src/fuchsia/mod.rs /^ pub fn sem_open(name: *const ::c_char, oflag: ::c_int, ...) -> *mut sem_t;$/;" f +sem_open vendor/libc/src/unix/bsd/mod.rs /^ pub fn sem_open(name: *const ::c_char, oflag: ::c_int, ...) -> *mut sem_t;$/;" f +sem_open vendor/libc/src/unix/haiku/mod.rs /^ pub fn sem_open(name: *const ::c_char, oflag: ::c_int, ...) -> *mut sem_t;$/;" f +sem_open vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sem_open(name: *const ::c_char, oflag: ::c_int, ...) -> *mut sem_t;$/;" f +sem_open vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sem_open(name: *const ::c_char, oflag: ::c_int, ...) -> *mut sem_t;$/;" f +sem_open vendor/libc/src/unix/newlib/mod.rs /^ pub fn sem_open(name: *const ::c_char, oflag: ::c_int, ...) -> *mut sem_t;$/;" f +sem_open vendor/libc/src/unix/solarish/mod.rs /^ pub fn sem_open(name: *const ::c_char, oflag: ::c_int, ...) -> *mut sem_t;$/;" f +sem_post vendor/libc/src/fuchsia/mod.rs /^ pub fn sem_post(sem: *mut sem_t) -> ::c_int;$/;" f +sem_post vendor/libc/src/unix/mod.rs /^ pub fn sem_post(sem: *mut sem_t) -> ::c_int;$/;" f +sem_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type sem_t = ::c_int;$/;" t +sem_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type sem_t = *mut sem;$/;" t +sem_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type sem_t = _sem;$/;" t +sem_t vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type sem_t = *mut sem;$/;" t +sem_t vendor/libc/src/unix/redox/mod.rs /^pub type sem_t = *mut ::c_void;$/;" t +sem_timedwait vendor/libc/src/fuchsia/mod.rs /^ pub fn sem_timedwait(sem: *mut sem_t, abstime: *const ::timespec) -> ::c_int;$/;" f +sem_timedwait vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sem_timedwait(sem: *mut sem_t, abstime: *const ::timespec) -> ::c_int;$/;" f +sem_timedwait vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn sem_timedwait(sem: *mut sem_t, abstime: *const ::timespec) -> ::c_int;$/;" f +sem_timedwait vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sem_timedwait(sem: *mut sem_t, abstime: *const ::timespec) -> ::c_int;$/;" f +sem_timedwait vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sem_timedwait(sem: *mut sem_t, abstime: *const ::timespec) -> ::c_int;$/;" f +sem_timedwait vendor/libc/src/unix/solarish/mod.rs /^ pub fn sem_timedwait(sem: *mut sem_t, abstime: *const ::timespec) -> ::c_int;$/;" f +sem_trywait vendor/libc/src/fuchsia/mod.rs /^ pub fn sem_trywait(sem: *mut sem_t) -> ::c_int;$/;" f +sem_trywait vendor/libc/src/unix/mod.rs /^ pub fn sem_trywait(sem: *mut sem_t) -> ::c_int;$/;" f +sem_unlink vendor/libc/src/fuchsia/mod.rs /^ pub fn sem_unlink(name: *const ::c_char) -> ::c_int;$/;" f +sem_unlink vendor/libc/src/unix/bsd/mod.rs /^ pub fn sem_unlink(name: *const ::c_char) -> ::c_int;$/;" f +sem_unlink vendor/libc/src/unix/haiku/mod.rs /^ pub fn sem_unlink(name: *const ::c_char) -> ::c_int;$/;" f +sem_unlink vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sem_unlink(name: *const ::c_char) -> ::c_int;$/;" f +sem_unlink vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sem_unlink(name: *const ::c_char) -> ::c_int;$/;" f +sem_unlink vendor/libc/src/unix/newlib/mod.rs /^ pub fn sem_unlink(name: *const ::c_char) -> ::c_int;$/;" f +sem_unlink vendor/libc/src/unix/solarish/mod.rs /^ pub fn sem_unlink(name: *const ::c_char) -> ::c_int;$/;" f +sem_wait vendor/libc/src/fuchsia/mod.rs /^ pub fn sem_wait(sem: *mut sem_t) -> ::c_int;$/;" f +sem_wait vendor/libc/src/unix/mod.rs /^ pub fn sem_wait(sem: *mut sem_t) -> ::c_int;$/;" f +semctl vendor/libc/src/fuchsia/mod.rs /^ pub fn semctl(semid: ::c_int, semnum: ::c_int, cmd: ::c_int, ...) -> ::c_int;$/;" f +semctl vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn semctl(semid: ::c_int, semnum: ::c_int, cmd: ::c_int, ...) -> ::c_int;$/;" f +semctl vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn semctl(semid: ::c_int, semnum: ::c_int, cmd: ::c_int, ...) -> ::c_int;$/;" f +semctl vendor/libc/src/unix/haiku/mod.rs /^ pub fn semctl(semid: ::c_int, semnum: ::c_int, cmd: ::c_int, ...) -> ::c_int;$/;" f +semctl vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn semctl(semid: ::c_int, semnum: ::c_int, cmd: ::c_int, ...) -> ::c_int;$/;" f +semget vendor/libc/src/fuchsia/mod.rs /^ pub fn semget(key: ::key_t, nsems: ::c_int, semflag: ::c_int) -> ::c_int;$/;" f +semget vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn semget(key: key_t, nsems: ::c_int, semflg: ::c_int) -> ::c_int;$/;" f +semget vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn semget(key: ::key_t, nsems: ::c_int, semflg: ::c_int) -> ::c_int;$/;" f +semget vendor/libc/src/unix/haiku/mod.rs /^ pub fn semget(key: ::key_t, nsems: ::c_int, semflg: ::c_int) -> ::c_int;$/;" f +semget vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn semget(key: ::key_t, nsems: ::c_int, semflag: ::c_int) -> ::c_int;$/;" f +semi_token vendor/syn/src/item.rs /^ semi_token: Token![;],$/;" m struct:parsing::FlexibleItemType +semicolon print_cmd.c /^semicolon ()$/;" f typeref:typename:void file: +semicolon r_print_cmd/src/lib.rs /^unsafe extern "C" fn semicolon()$/;" f +semop vendor/libc/src/fuchsia/mod.rs /^ pub fn semop(semid: ::c_int, sops: *mut ::sembuf, nsops: ::size_t) -> ::c_int;$/;" f +semop vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn semop(semid: ::c_int, sops: *mut sembuf, nsops: ::size_t) -> ::c_int;$/;" f +semop vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn semop(semid: ::c_int, sops: *mut sembuf, nsops: ::size_t) -> ::c_int;$/;" f +semop vendor/libc/src/unix/haiku/mod.rs /^ pub fn semop(semid: ::c_int, sops: *mut sembuf, nsops: ::size_t) -> ::c_int;$/;" f +semop vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn semop(semid: ::c_int, sops: *mut ::sembuf, nsops: ::size_t) -> ::c_int;$/;" f +semver_exempt vendor/proc-macro2/tests/marker.rs /^mod semver_exempt {$/;" n +send vendor/futures-channel/src/oneshot.rs /^ fn send(&self, t: T) -> Result<(), T> {$/;" P implementation:Inner +send vendor/futures-channel/src/oneshot.rs /^ pub fn send(self, t: T) -> Result<(), T> {$/;" P implementation:Sender +send vendor/futures-executor/src/thread_pool.rs /^ fn send(&self, msg: Message) {$/;" P implementation:PoolState +send vendor/futures-util/src/sink/mod.rs /^ fn send(&mut self, item: Item) -> Send<'_, Self, Item>$/;" P interface:SinkExt +send vendor/futures-util/src/sink/mod.rs /^mod send;$/;" n +send vendor/futures/tests/sink.rs /^fn send() {$/;" f +send vendor/libc/src/fuchsia/mod.rs /^ pub fn send(socket: ::c_int, buf: *const ::c_void, len: ::size_t, flags: ::c_int) -> ::ssize/;" f +send vendor/libc/src/unix/mod.rs /^ pub fn send(socket: ::c_int, buf: *const ::c_void, len: ::size_t, flags: ::c_int) -> ::ssize/;" f +send vendor/libc/src/vxworks/mod.rs /^ pub fn send(socket: ::c_int, buf: *const ::c_void, len: ::size_t, flags: ::c_int) -> ::ssize/;" f +send vendor/libc/src/wasi.rs /^ pub fn send(socket: ::c_int, buf: *const ::c_void, len: ::size_t, flags: ::c_int) -> ::ssize/;" f +send vendor/nix/src/sys/socket/mod.rs /^pub fn send(fd: RawFd, buf: &[u8], flags: MsgFlags) -> Result {$/;" f +send vendor/winapi/src/um/winsock2.rs /^ pub fn send($/;" f +send_all vendor/futures-util/src/sink/mod.rs /^ fn send_all<'a, St>(&'a mut self, stream: &'a mut St) -> SendAll<'a, Self, St>$/;" P interface:SinkExt +send_all vendor/futures-util/src/sink/mod.rs /^mod send_all;$/;" n +send_all vendor/futures/tests/sink.rs /^fn send_all() {$/;" f +send_backpressure vendor/futures-channel/tests/mpsc.rs /^fn send_backpressure() {$/;" f +send_backpressure_multi_senders vendor/futures-channel/tests/mpsc.rs /^fn send_backpressure_multi_senders() {$/;" f +send_data vendor/libc/src/unix/haiku/native.rs /^ pub fn send_data($/;" f +send_one_two_three vendor/futures-channel/tests/mpsc.rs /^async fn send_one_two_three(mut tx: mpsc::Sender) {$/;" f +send_pwd_to_eterm eval.c /^send_pwd_to_eterm ()$/;" f typeref:typename:void file: +send_recv vendor/futures-channel/tests/mpsc.rs /^fn send_recv() {$/;" f +send_recv_no_buffer vendor/futures-channel/tests/mpsc.rs /^fn send_recv_no_buffer() {$/;" f +send_recv_threads vendor/futures-channel/tests/mpsc.rs /^fn send_recv_threads() {$/;" f +send_recv_threads_no_capacity vendor/futures-channel/tests/mpsc.rs /^fn send_recv_threads_no_capacity() {$/;" f +send_sequence vendor/futures-channel/tests/channel.rs /^async fn send_sequence(n: u32, mut sender: mpsc::Sender) {$/;" f +send_shared_oneshot_and_wait_on_multiple_threads vendor/futures/tests/future_shared.rs /^fn send_shared_oneshot_and_wait_on_multiple_threads(threads_number: u32) {$/;" f +send_shared_recv vendor/futures-channel/tests/mpsc.rs /^fn send_shared_recv() {$/;" f +send_signal vendor/libc/src/unix/haiku/native.rs /^ pub fn send_signal(threadID: thread_id, signal: ::c_uint) -> ::c_int;$/;" f +sender_task vendor/futures-channel/src/mpsc/mod.rs /^ sender_task: Arc>,$/;" m struct:BoundedSenderInner +sendfile vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn sendfile($/;" f +sendfile vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sendfile($/;" f +sendfile vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sendfile($/;" f +sendfile vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sendfile($/;" f +sendfile vendor/libc/src/unix/solarish/mod.rs /^ pub fn sendfile(out_fd: ::c_int, in_fd: ::c_int, off: *mut ::off_t, len: ::size_t)$/;" f +sendfile vendor/nix/src/sys/sendfile.rs /^pub fn sendfile($/;" f +sendfile64 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sendfile64($/;" f +sendfile64 vendor/nix/src/sys/sendfile.rs /^pub fn sendfile64($/;" f +sendfilev vendor/libc/src/unix/solarish/mod.rs /^ pub fn sendfilev($/;" f +sendmmsg vendor/libc/src/fuchsia/mod.rs /^ pub fn sendmmsg($/;" f +sendmmsg vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn sendmmsg($/;" f +sendmmsg vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn sendmmsg($/;" f +sendmmsg vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sendmmsg($/;" f +sendmmsg vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn sendmmsg($/;" f +sendmmsg vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn sendmmsg($/;" f +sendmmsg vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn sendmmsg($/;" f +sendmmsg vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn sendmmsg($/;" f +sendmsg vendor/libc/src/fuchsia/mod.rs /^ pub fn sendmsg(fd: ::c_int, msg: *const ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +sendmsg vendor/libc/src/unix/bsd/mod.rs /^ pub fn sendmsg(fd: ::c_int, msg: *const ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +sendmsg vendor/libc/src/unix/haiku/mod.rs /^ pub fn sendmsg(fd: ::c_int, msg: *const ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +sendmsg vendor/libc/src/unix/linux_like/mod.rs /^ pub fn sendmsg(fd: ::c_int, msg: *const ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +sendmsg vendor/libc/src/unix/newlib/espidf/mod.rs /^ pub fn sendmsg(s: ::c_int, msg: *const ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +sendmsg vendor/libc/src/unix/solarish/mod.rs /^ pub fn sendmsg(fd: ::c_int, msg: *const ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +sendmsg vendor/libc/src/vxworks/mod.rs /^ pub fn sendmsg(socket: ::c_int, mp: *const ::msghdr, flags: ::c_int) -> ::ssize_t;$/;" f +sendrecv vendor/nix/test/sys/test_socket.rs /^ fn sendrecv($/;" f module:recvfrom +sendto vendor/libc/src/fuchsia/mod.rs /^ pub fn sendto($/;" f +sendto vendor/libc/src/unix/mod.rs /^ pub fn sendto($/;" f +sendto vendor/libc/src/vxworks/mod.rs /^ pub fn sendto($/;" f +sendto vendor/libc/src/windows/mod.rs /^ pub fn sendto($/;" f +sendto vendor/nix/src/sys/socket/mod.rs /^pub fn sendto(fd: RawFd, buf: &[u8], addr: &dyn SockaddrLike, flags: MsgFlags) -> Result /;" f +sendto vendor/winapi/src/um/winsock2.rs /^ pub fn sendto($/;" f +sentinel vendor/nix/src/errno.rs /^ fn sentinel() -> Self {$/;" P implementation:c_void +sentinel vendor/nix/src/errno.rs /^ fn sentinel() -> Self {$/;" P implementation:i32 +sentinel vendor/nix/src/errno.rs /^ fn sentinel() -> Self {$/;" P implementation:i64 +sentinel vendor/nix/src/errno.rs /^ fn sentinel() -> Self {$/;" P implementation:isize +sentinel vendor/nix/src/errno.rs /^ fn sentinel() -> Self {$/;" P implementation:sighandler_t +sentinel vendor/nix/src/errno.rs /^ fn sentinel() -> Self;$/;" P interface:ErrnoSentinel +separate-helpfiles configure.ac /^AC_ARG_ENABLE(separate-helpfiles, AC_HELP_STRING([--enable-separate-helpfiles], [use external fi/;" e +separate_helpfiles builtins/gen-helpfiles.c /^int separate_helpfiles = 0;$/;" v typeref:typename:int +separate_helpfiles builtins/mkbuiltins.c /^int separate_helpfiles = 0;$/;" v typeref:typename:int +separate_out_assignments subst.c /^separate_out_assignments (tlist)$/;" f file: +seq lib/readline/colors.h /^ struct bin_str seq; \/* The sequence to output when we do *\/$/;" m struct:_color_ext_type typeref:struct:bin_str +seq r_readline/src/lib.rs /^ pub seq: bin_str,$/;" m struct:_color_ext_type +sequence vendor/futures-channel/tests/channel.rs /^fn sequence() {$/;" f +serde vendor/slab/src/lib.rs /^mod serde;$/;" n +serde vendor/unic-langid-impl/src/lib.rs /^mod serde;$/;" n +serialize vendor/slab/src/serde.rs /^ fn serialize(&self, serializer: S) -> Result$/;" f +serialize vendor/smallvec/src/lib.rs /^ fn serialize(&self, serializer: S) -> Result {$/;" f +serialize vendor/unic-langid-impl/src/serde.rs /^ fn serialize(&self, serializer: S) -> Result$/;" P implementation:LanguageIdentifier +serialize vendor/unic-langid-impl/src/serde.rs /^fn serialize() -> Result<(), Box> {$/;" f +serialize_lang_option vendor/unic-langid-impl/src/bin/generate_likelysubtags.rs /^fn serialize_lang_option(l: Option) -> String {$/;" f +serialize_region_option vendor/unic-langid-impl/src/bin/generate_likelysubtags.rs /^fn serialize_region_option(r: Option) -> String {$/;" f +serialize_script_option vendor/unic-langid-impl/src/bin/generate_likelysubtags.rs /^fn serialize_script_option(r: Option) -> String {$/;" f +serialize_val vendor/unic-langid-impl/src/bin/generate_likelysubtags.rs /^fn serialize_val(input: LangIdSubTags) -> String {$/;" f +servprov vendor/winapi/src/um/mod.rs /^#[cfg(feature = "servprov")] pub mod servprov;$/;" n +set r_bash/src/lib.rs /^ pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {$/;" f +set r_readline/src/lib.rs /^ pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {$/;" f +set vendor/async-trait/src/expand.rs /^ set: &'a Set,$/;" m struct:contains_associated_type_impl_trait::AssociatedTypeImplTraits +set vendor/elsa/examples/string_interner.rs /^ set: FrozenIndexSet,$/;" m struct:StringInterner +set vendor/elsa/src/index_set.rs /^ set: UnsafeCell>,$/;" m struct:FrozenIndexSet +set vendor/fluent-bundle/src/args.rs /^ pub fn set(&mut self, key: K, value: V)$/;" P implementation:FluentArgs +set vendor/futures-util/src/io/window.rs /^ pub fn set>(&mut self, range: R) {$/;" P implementation:Window +set vendor/futures/tests/io_window.rs /^fn set() {$/;" f +set vendor/futures/tests/sink.rs /^ fn set(&self, v: bool) {$/;" P implementation:Flag +set vendor/nix/src/sched.rs /^ pub fn set(&mut self, field: usize) -> Result<()> {$/;" P implementation:sched_affinity::CpuSet +set vendor/nix/src/sys/personality.rs /^pub fn set(persona: Persona) -> Result {$/;" f +set vendor/nix/src/sys/select.rs /^ set: &'a FdSet,$/;" m struct:Fds +set vendor/nix/src/sys/socket/mod.rs /^ fn set(&self, fd: RawFd, val: &Self::Val) -> Result<()>;$/;" P interface:SetSockOpt +set vendor/nix/src/sys/socket/sockopt.rs /^ fn set(&self, fd: RawFd, val: &T) -> Result<()> {$/;" f +set vendor/nix/src/sys/socket/sockopt.rs /^ fn set(&self, fd: RawFd, val: &usize) -> Result<()> {$/;" P implementation:AlgSetAeadAuthSize +set vendor/nix/src/sys/timer.rs /^ pub fn set(&mut self, expiration: Expiration, flags: TimerSetTimeFlags) -> Result<()> {$/;" P implementation:Timer +set vendor/nix/src/sys/timerfd.rs /^ pub fn set(&self, expiration: Expiration, flags: TimerSetTimeFlags) -> Result<()> {$/;" P implementation:TimerFd +set vendor/nix/src/ucontext.rs /^ pub fn set(&self) -> Result<()> {$/;" P implementation:UContext +set vendor/once_cell/src/lib.rs /^ pub fn set(&self, value: T) -> Result<(), T> {$/;" P implementation:sync::OnceCell +set vendor/once_cell/src/lib.rs /^ pub fn set(&self, value: T) -> Result<(), T> {$/;" P implementation:unsync::OnceCell +set vendor/once_cell/src/race.rs /^ pub fn set(&self, value: Box) -> Result<(), Box> {$/;" P implementation:once_box::OnceBox +set vendor/once_cell/src/race.rs /^ pub fn set(&self, value: NonZeroUsize) -> Result<(), ()> {$/;" P implementation:OnceNonZeroUsize +set vendor/once_cell/src/race.rs /^ pub fn set(&self, value: bool) -> Result<(), ()> {$/;" P implementation:OnceBool +set.o builtins/Makefile.in /^set.o: $(BASHINCDIR)\/maxpath.h $(topdir)\/error.h $(topdir)\/sig.h$/;" t +set.o builtins/Makefile.in /^set.o: $(topdir)\/arrayfunc.h ..\/pathnames.h $(topdir)\/parser.h$/;" t +set.o builtins/Makefile.in /^set.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +set.o builtins/Makefile.in /^set.o: $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/subst.h $(topdir)\/externs.h$/;" t +set.o builtins/Makefile.in /^set.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h$/;" t +set.o builtins/Makefile.in /^set.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $(/;" t +set.o builtins/Makefile.in /^set.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +set.o builtins/Makefile.in /^set.o: set.def$/;" t +set_active_region lib/readline/display.c /^set_active_region (int *beg, int *end)$/;" f typeref:typename:void file: +set_alarm vendor/libc/src/unix/haiku/native.rs /^ pub fn set_alarm(when: bigtime_t, flags: u32) -> bigtime_t;$/;" f +set_all_limits builtins_rust/ulimit/src/lib.rs /^fn set_all_limits(mut mode: i32, newlim: RLIMTYPE) -> i32 {$/;" f +set_area_protection vendor/libc/src/unix/haiku/native.rs /^ pub fn set_area_protection(id: area_id, newProtection: u32) -> status_t;$/;" f +set_argv0 variables.c /^set_argv0 ()$/;" f typeref:typename:void file: +set_async vendor/fluent-fallback/src/localization.rs /^ pub fn set_async(&mut self) {$/;" f +set_auto_export variables.h /^#define set_auto_export(/;" d +set_aux_files_from_fls support/texi2dvi /^set_aux_files_from_fls ()$/;" f +set_aux_files_from_log support/texi2dvi /^set_aux_files_from_log ()$/;" f +set_bash_input shell.c /^set_bash_input ()$/;" f typeref:typename:void file: +set_bash_input_fd input.c /^set_bash_input_fd (fd)$/;" f +set_bash_input_fd r_bash/src/lib.rs /^ pub fn set_bash_input_fd(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +set_bashopts r_bash/src/lib.rs /^ pub fn set_bashopts();$/;" f +set_binding_values lib/intl/bindtextdom.c /^set_binding_values (domainname, dirnamep, codesetp)$/;" f file: +set_bit r_bash/src/lib.rs /^ pub fn set_bit(&mut self, index: usize, val: bool) {$/;" f +set_bit r_readline/src/lib.rs /^ pub fn set_bit(&mut self, index: usize, val: bool) {$/;" f +set_block_time_limit vendor/nix/src/sys/quota.rs /^ pub fn set_block_time_limit(&mut self, limit: u64) {$/;" P implementation:Dqblk +set_blocks_hard_limit vendor/nix/src/sys/quota.rs /^ pub fn set_blocks_hard_limit(&mut self, limit: u64) {$/;" P implementation:Dqblk +set_blocks_soft_limit vendor/nix/src/sys/quota.rs /^ pub fn set_blocks_soft_limit(&mut self, limit: u64) {$/;" P implementation:Dqblk +set_buffered_stream input.c /^set_buffered_stream (fd, bp)$/;" f +set_buffered_stream r_bash/src/lib.rs /^ pub fn set_buffered_stream($/;" f +set_builtin builtins_rust/common/src/lib.rs /^ fn set_builtin(list: *mut WordList) -> i32;$/;" f +set_builtin builtins_rust/declare/src/lib.rs /^ fn set_builtin(list: *mut WordList) -> i32;$/;" f +set_cad_enabled vendor/nix/src/sys/reboot.rs /^pub fn set_cad_enabled(enable: bool) -> Result<()> {$/;" f +set_closed vendor/futures-channel/src/mpsc/mod.rs /^ fn set_closed(&self) {$/;" P implementation:BoundedInner +set_closed vendor/futures-channel/src/mpsc/mod.rs /^ fn set_closed(&self) {$/;" P implementation:UnboundedInner +set_cmd_enable builtins_rust/cmd/src/lib.rs /^pub fn set_cmd_enable(cmd: String, is_enable: bool) -> bool {$/;" f +set_compatibility_level builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn set_compatibility_level(option_name: *mut libc::c_char, mode: i32) -> i32 {$/;" f +set_compatibility_opts r_bash/src/lib.rs /^ pub fn set_compatibility_opts();$/;" f +set_completion_defaults lib/readline/complete.c /^set_completion_defaults (int what_to_do)$/;" f typeref:typename:void file: +set_context variables.c /^set_context (var)$/;" f file: +set_current_flags flags.c /^set_current_flags (bitmap)$/;" f +set_current_flags r_bash/src/lib.rs /^ pub fn set_current_flags(arg1: *const ::std::os::raw::c_char);$/;" f +set_current_job jobs.c /^set_current_job (job)$/;" f file: +set_current_job r_jobs/src/lib.rs /^unsafe extern "C" fn set_current_job(mut job: c_int) {$/;" f +set_current_options builtins_rust/set/src/lib.rs /^unsafe fn set_current_options(bitmap: *const libc::c_char) {$/;" f +set_current_options r_bash/src/lib.rs /^ pub fn set_current_options(arg1: *const ::std::os::raw::c_char);$/;" f +set_current_prompt_level r_bash/src/lib.rs /^ pub fn set_current_prompt_level(arg1: ::std::os::raw::c_int);$/;" f +set_debug_trap r_bash/src/lib.rs /^ pub fn set_debug_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_debug_trap r_glob/src/lib.rs /^ pub fn set_debug_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_debug_trap r_readline/src/lib.rs /^ pub fn set_debug_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_debug_trap trap.c /^set_debug_trap (command)$/;" f +set_default_lang locale.c /^set_default_lang ()$/;" f typeref:typename:void +set_default_lang r_bash/src/lib.rs /^ pub fn set_default_lang();$/;" f +set_default_locale locale.c /^set_default_locale ()$/;" f typeref:typename:void +set_default_locale r_bash/src/lib.rs /^ pub fn set_default_locale();$/;" f +set_default_locale_vars locale.c /^set_default_locale_vars ()$/;" f typeref:typename:void +set_default_locale_vars r_bash/src/lib.rs /^ pub fn set_default_locale_vars();$/;" f +set_deftext lib/readline/examples/rl.c /^set_deftext ()$/;" f typeref:typename:int file: +set_directory_hook bashline.c /^set_directory_hook ()$/;" f typeref:typename:void +set_directory_hook builtins_rust/shopt/src/lib.rs /^ fn set_directory_hook();$/;" f +set_directory_hook r_bash/src/lib.rs /^ pub fn set_directory_hook();$/;" f +set_dirstack_element r_bash/src/lib.rs /^ pub fn set_dirstack_element($/;" f +set_dollar_vars_changed builtins/common.c /^set_dollar_vars_changed ()$/;" f typeref:typename:void +set_dollar_vars_changed r_bash/src/lib.rs /^ pub fn set_dollar_vars_changed();$/;" f +set_dollar_vars_unchanged builtins/common.c /^set_dollar_vars_unchanged ()$/;" f typeref:typename:void +set_dollar_vars_unchanged builtins_rust/source/src/lib.rs /^ fn set_dollar_vars_unchanged();$/;" f +set_dollar_vars_unchanged r_bash/src/lib.rs /^ pub fn set_dollar_vars_unchanged();$/;" f +set_edit_mode builtins_rust/set/src/lib.rs /^unsafe extern "C" fn set_edit_mode(on_or_off: i32, option_name: *mut libc::c_char) -> i32 {$/;" f +set_element_value array.h /^#define set_element_value(/;" d +set_enable builtins_rust/cmd/src/lib.rs /^ pub fn set_enable(&mut self, is_enable: bool) -> &Cmd {$/;" P implementation:Cmd +set_eol_delim builtins_rust/read/src/lib.rs /^fn set_eol_delim(c: c_int) {$/;" f +set_error_trap r_bash/src/lib.rs /^ pub fn set_error_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_error_trap r_glob/src/lib.rs /^ pub fn set_error_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_error_trap r_readline/src/lib.rs /^ pub fn set_error_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_error_trap trap.c /^set_error_trap (command)$/;" f +set_events vendor/nix/src/poll.rs /^ pub fn set_events(&mut self, events: PollFlags) {$/;" P implementation:PollFd +set_exit_status r_bash/src/lib.rs /^ pub fn set_exit_status(arg1: ::std::os::raw::c_int);$/;" f +set_exit_status r_jobs/src/lib.rs /^ fn set_exit_status(_: c_int);$/;" f +set_exit_status shell.c /^set_exit_status (s)$/;" f +set_filename_bstab bashline.c /^set_filename_bstab (string)$/;" f file: +set_formatter vendor/fluent-bundle/src/bundle.rs /^ pub fn set_formatter(&mut self, func: Option Option>) {$/;" P implementation:FluentBundle +set_func builtins_rust/set/src/lib.rs /^ set_func: Option,$/;" m struct:opp +set_func builtins_rust/shopt/src/lib.rs /^ pub set_func: Option,$/;" m struct:RShoptVars +set_func lib/readline/bind.c /^ _rl_sv_func_t *set_func;$/;" m struct:__anon7144754c0308 typeref:typename:_rl_sv_func_t * file: +set_func_auto_export r_bash/src/lib.rs /^ pub fn set_func_auto_export(arg1: *const ::std::os::raw::c_char);$/;" f +set_func_auto_export variables.c /^set_func_auto_export (name)$/;" f +set_func_read_only r_bash/src/lib.rs /^ pub fn set_func_read_only(arg1: *const ::std::os::raw::c_char);$/;" f +set_func_read_only variables.c /^set_func_read_only (name)$/;" f +set_history_remembering builtins/evalstring.c /^set_history_remembering ()$/;" f typeref:typename:void file: +set_home_var variables.c /^set_home_var ()$/;" f typeref:typename:void file: +set_if_not r_bash/src/lib.rs /^ pub fn set_if_not($/;" f +set_if_not variables.c /^set_if_not (name, value)$/;" f +set_ignoreeof builtins_rust/set/src/lib.rs /^unsafe extern "C" fn set_ignoreeof(on_or_off: i32, option_name: *mut libc::c_char) -> i32 {$/;" f +set_impossible_sigchld_trap r_bash/src/lib.rs /^ pub fn set_impossible_sigchld_trap();$/;" f +set_impossible_sigchld_trap r_glob/src/lib.rs /^ pub fn set_impossible_sigchld_trap();$/;" f +set_impossible_sigchld_trap r_jobs/src/lib.rs /^ fn set_impossible_sigchld_trap();$/;" f +set_impossible_sigchld_trap r_readline/src/lib.rs /^ pub fn set_impossible_sigchld_trap();$/;" f +set_impossible_sigchld_trap trap.c /^set_impossible_sigchld_trap ()$/;" f typeref:typename:void +set_in_progress vendor/nix/src/sys/aio.rs /^ fn set_in_progress(mut self: Pin<&mut Self>) {$/;" P implementation:AioCb +set_inode_time_limit vendor/nix/src/sys/quota.rs /^ pub fn set_inode_time_limit(&mut self, limit: u64) {$/;" P implementation:Dqblk +set_inodes_hard_limit vendor/nix/src/sys/quota.rs /^ pub fn set_inodes_hard_limit(&mut self, limit: u64) {$/;" P implementation:Dqblk +set_inodes_soft_limit vendor/nix/src/sys/quota.rs /^ pub fn set_inodes_soft_limit(&mut self, limit: u64) {$/;" P implementation:Dqblk +set_itemlist_dirty builtins_rust/enable/src/lib.rs /^ fn set_itemlist_dirty(_: *mut ITEMLIST);$/;" f +set_itemlist_dirty pcomplete.c /^set_itemlist_dirty (it)$/;" f +set_itemlist_dirty r_bash/src/lib.rs /^ pub fn set_itemlist_dirty(arg1: *mut ITEMLIST);$/;" f +set_itext builtins_rust/read/src/lib.rs /^fn set_itext() -> c_int {$/;" f +set_job_control jobs.c /^set_job_control (arg)$/;" f +set_job_control r_bash/src/lib.rs /^ pub fn set_job_control(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +set_job_control r_jobs/src/lib.rs /^pub unsafe extern "C" fn set_job_control(mut arg: c_int) -> c_int {$/;" f +set_job_running jobs.c /^set_job_running (job)$/;" f file: +set_job_running r_jobs/src/lib.rs /^unsafe extern "C" fn set_job_running(mut job: c_int) {$/;" f +set_job_status_and_cleanup jobs.c /^set_job_status_and_cleanup (job)$/;" f file: +set_job_status_and_cleanup r_jobs/src/lib.rs /^unsafe extern "C" fn set_job_status_and_cleanup(mut job: c_int) -> c_int {$/;" f +set_jobs_list_frozen jobs.c /^set_jobs_list_frozen (s)$/;" f +set_jobs_list_frozen nojobs.c /^set_jobs_list_frozen (s)$/;" f +set_jobs_list_frozen r_bash/src/lib.rs /^ pub fn set_jobs_list_frozen(arg1: ::std::os::raw::c_int);$/;" f +set_jobs_list_frozen r_jobs/src/lib.rs /^pub unsafe extern "C" fn set_jobs_list_frozen(mut s: c_int) {$/;" f +set_lang locale.c /^set_lang (var, value)$/;" f +set_lang r_bash/src/lib.rs /^ pub fn set_lang($/;" f +set_len vendor/smallvec/src/lib.rs /^ pub unsafe fn set_len(&mut self, new_len: usize) {$/;" P implementation:SmallVec +set_limit builtins_rust/ulimit/src/lib.rs /^fn set_limit(ind: i32, newlim: RLIMTYPE, mode: i32) -> i32 {$/;" f +set_limit vendor/futures-util/src/io/take.rs /^ pub fn set_limit(&mut self, limit: u64) {$/;" P implementation:Take +set_locale_var locale.c /^set_locale_var (var, value)$/;" f +set_locale_var r_bash/src/lib.rs /^ pub fn set_locale_var($/;" f +set_login_shell r_bash/src/lib.rs /^ pub fn set_login_shell($/;" f +set_machine_vars variables.c /^set_machine_vars ()$/;" f typeref:typename:void file: +set_mask vendor/nix/src/sys/signalfd.rs /^ pub fn set_mask(&mut self, mask: &SigSet) -> Result<()> {$/;" P implementation:SignalFd +set_maxchild jobs.c /^set_maxchild (nchild)$/;" f +set_maxchild r_bash/src/lib.rs /^ pub fn set_maxchild(arg1: ::std::os::raw::c_int);$/;" f +set_maxchild r_jobs/src/lib.rs /^pub unsafe extern "C" fn set_maxchild(mut nchild: c_int) {$/;" f +set_minus_o_option builtins_rust/set/src/lib.rs /^unsafe fn set_minus_o_option(on_or_off: i32, option_name: *mut libc::c_char) -> i32 {$/;" f +set_minus_o_option builtins_rust/shopt/src/lib.rs /^ fn set_minus_o_option(_: i32, _: *mut libc::c_char) -> libc::c_int;$/;" f +set_minus_o_option r_bash/src/lib.rs /^ pub fn set_minus_o_option($/;" f +set_new_line_discipline jobs.c /^set_new_line_discipline (tty)$/;" f file: +set_new_line_discipline r_jobs/src/lib.rs /^unsafe extern "C" fn set_new_line_discipline(mut tty: c_int) -> c_int {$/;" f +set_option_defaults shell.c /^set_option_defaults ()$/;" f typeref:typename:void file: +set_or_show_attributes builtins_rust/setattr/src/lib.rs /^pub extern "C" fn set_or_show_attributes($/;" f +set_or_show_attributes r_bash/src/lib.rs /^ pub fn set_or_show_attributes($/;" f +set_original_signal r_jobs/src/lib.rs /^ fn set_original_signal(_: c_int, _: Option::);$/;" f +set_original_signal trap.c /^set_original_signal (sig, handler)$/;" f +set_panic_out_of_bounds vendor/futures/tests/io_window.rs /^fn set_panic_out_of_bounds() {$/;" f +set_panic_start_is_greater_than_end vendor/futures/tests/io_window.rs /^fn set_panic_start_is_greater_than_end() {$/;" f +set_pid_flags nojobs.c /^set_pid_flags (pid, flags)$/;" f file: +set_pid_status nojobs.c /^set_pid_status (pid, status)$/;" f file: +set_pipestatus_array r_bash/src/lib.rs /^ pub fn set_pipestatus_array(arg1: *mut ::std::os::raw::c_int, arg2: ::std::os::raw::c_int);$/;" f +set_pipestatus_array r_jobs/src/lib.rs /^ fn set_pipestatus_array(_: *mut c_int, _: c_int);$/;" f +set_pipestatus_array variables.c /^set_pipestatus_array (ps, nproc)$/;" f +set_pipestatus_from_exit r_bash/src/lib.rs /^ pub fn set_pipestatus_from_exit(arg1: ::std::os::raw::c_int);$/;" f +set_pipestatus_from_exit variables.c /^set_pipestatus_from_exit (s)$/;" f +set_port_owner vendor/libc/src/unix/haiku/native.rs /^ pub fn set_port_owner(port: port_id, team: team_id) -> status_t;$/;" f +set_position vendor/futures-util/src/io/cursor.rs /^ pub fn set_position(&mut self, pos: u64) {$/;" P implementation:Cursor +set_posix_mode builtins_rust/set/src/lib.rs /^unsafe extern "C" fn set_posix_mode(on_or_off: i32, option_name: *mut libc::c_char) -> i32 {$/;" f +set_posix_options general.c /^set_posix_options (bitmap)$/;" f +set_posix_options r_bash/src/lib.rs /^ pub fn set_posix_options(arg1: *const ::std::os::raw::c_char);$/;" f +set_posix_options r_glob/src/lib.rs /^ pub fn set_posix_options(arg1: *const ::std::os::raw::c_char);$/;" f +set_posix_options r_readline/src/lib.rs /^ pub fn set_posix_options(arg1: *const ::std::os::raw::c_char);$/;" f +set_ppid r_bash/src/lib.rs /^ pub fn set_ppid();$/;" f +set_ppid variables.c /^set_ppid ()$/;" f typeref:typename:void +set_procsub_status r_bash/src/lib.rs /^ pub fn set_procsub_status($/;" f +set_procsub_status r_jobs/src/lib.rs /^ fn set_procsub_status(_: c_int, _: pid_t, _: c_int);$/;" f +set_procsub_status subst.c /^set_procsub_status (ind, pid, status)$/;" f +set_pwd r_bash/src/lib.rs /^ pub fn set_pwd();$/;" f +set_pwd variables.c /^set_pwd ()$/;" f typeref:typename:void +set_real_time_clock vendor/libc/src/unix/haiku/native.rs /^ pub fn set_real_time_clock(secsSinceJan1st1970: ::c_ulong);$/;" f +set_relocation_prefix lib/intl/relocatable.c /^set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg)$/;" f typeref:typename:void +set_restricted_shell builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn set_restricted_shell(_option_name: *mut libc::c_char, _mode: i32) -> i32 {$/;" f +set_return_trap r_bash/src/lib.rs /^ pub fn set_return_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_return_trap r_glob/src/lib.rs /^ pub fn set_return_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_return_trap r_readline/src/lib.rs /^ pub fn set_return_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_return_trap trap.c /^set_return_trap (command)$/;" f +set_saved_history lib/readline/misc.c /^set_saved_history ()$/;" f typeref:typename:int file: +set_scheduler_mode vendor/libc/src/unix/haiku/native.rs /^ pub fn set_scheduler_mode(mode: i32) -> status_t;$/;" f +set_sem_owner vendor/libc/src/unix/haiku/native.rs /^ pub fn set_sem_owner(id: sem_id, team: team_id) -> status_t;$/;" f +set_shell_name shell.c /^set_shell_name (argv0)$/;" f file: +set_shell_var variables.c /^set_shell_var ()$/;" f typeref:typename:void file: +set_shellopts r_bash/src/lib.rs /^ pub fn set_shellopts();$/;" f +set_shellopts_after_change builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn set_shellopts_after_change($/;" f +set_shopt_o_options builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn set_shopt_o_options(mode: i32, list: *mut WordList, _quiet: i32) -> i32 {$/;" f +set_sigchld_handler jobs.c /^set_sigchld_handler ()$/;" f typeref:typename:void +set_sigchld_handler r_bash/src/lib.rs /^ pub fn set_sigchld_handler();$/;" f +set_sigchld_handler r_jobs/src/lib.rs /^pub unsafe extern "C" fn set_sigchld_handler() {$/;" f +set_sigchld_trap r_bash/src/lib.rs /^ pub fn set_sigchld_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_sigchld_trap r_glob/src/lib.rs /^ pub fn set_sigchld_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_sigchld_trap r_readline/src/lib.rs /^ pub fn set_sigchld_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_sigchld_trap trap.c /^set_sigchld_trap (command_string)$/;" f +set_sigev_notify vendor/nix/src/sys/aio.rs /^ fn set_sigev_notify(&mut self, sev: SigevNotify);$/;" P interface:Aio +set_sigev_notify vendor/nix/src/sys/aio.rs /^ fn set_sigev_notify(&mut self, sigev_notify: SigevNotify) {$/;" P implementation:AioCb +set_sigint_handler r_bash/src/lib.rs /^ pub fn set_sigint_handler() -> SigHandler;$/;" f +set_sigint_handler trap.c /^set_sigint_handler ()$/;" f typeref:typename:SigHandler * +set_sigint_trap r_bash/src/lib.rs /^ pub fn set_sigint_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_sigint_trap r_glob/src/lib.rs /^ pub fn set_sigint_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_sigint_trap r_readline/src/lib.rs /^ pub fn set_sigint_trap(arg1: *mut ::std::os::raw::c_char);$/;" f +set_sigint_trap trap.c /^set_sigint_trap (command)$/;" f +set_signal builtins_rust/trap/src/intercdep.rs /^ pub fn set_signal(sig: c_int, s: *mut c_char);$/;" f +set_signal r_bash/src/lib.rs /^ pub fn set_signal(arg1: ::std::os::raw::c_int, arg2: *mut ::std::os::raw::c_char);$/;" f +set_signal r_glob/src/lib.rs /^ pub fn set_signal(arg1: ::std::os::raw::c_int, arg2: *mut ::std::os::raw::c_char);$/;" f +set_signal r_readline/src/lib.rs /^ pub fn set_signal(arg1: ::std::os::raw::c_int, arg2: *mut ::std::os::raw::c_char);$/;" f +set_signal trap.c /^set_signal (sig, string)$/;" f +set_signal_handler builtins_rust/read/src/intercdep.rs /^ pub fn set_signal_handler(arg1: c_int, arg2: *mut SigHandler) -> *mut SigHandler;$/;" f +set_signal_handler builtins_rust/suspend/src/intercdep.rs /^ pub fn set_signal_handler(arg1: c_int, arg2: *mut SigHandler) -> *mut SigHandler;$/;" f +set_signal_handler builtins_rust/trap/src/intercdep.rs /^ pub fn set_signal_handler(arg1: c_int, arg2: *mut SigHandler) -> *mut SigHandler;$/;" f +set_signal_handler r_bash/src/lib.rs /^ pub fn set_signal_handler(arg1: libc::c_int, arg2: *mut SigHandler) -> *mut SigHandler;$/;" f +set_signal_handler sig.c /^set_signal_handler (sig, handler)$/;" f +set_signal_handler sig.h /^# define set_signal_handler(/;" d +set_signal_hard_ignored r_bash/src/lib.rs /^ pub fn set_signal_hard_ignored(arg1: ::std::os::raw::c_int);$/;" f +set_signal_hard_ignored r_glob/src/lib.rs /^ pub fn set_signal_hard_ignored(arg1: ::std::os::raw::c_int);$/;" f +set_signal_hard_ignored r_readline/src/lib.rs /^ pub fn set_signal_hard_ignored(arg1: ::std::os::raw::c_int);$/;" f +set_signal_hard_ignored trap.c /^set_signal_hard_ignored (sig)$/;" f +set_signal_ignored r_bash/src/lib.rs /^ pub fn set_signal_ignored(arg1: ::std::os::raw::c_int);$/;" f +set_signal_ignored r_glob/src/lib.rs /^ pub fn set_signal_ignored(arg1: ::std::os::raw::c_int);$/;" f +set_signal_ignored r_readline/src/lib.rs /^ pub fn set_signal_ignored(arg1: ::std::os::raw::c_int);$/;" f +set_signal_ignored trap.c /^set_signal_ignored (sig)$/;" f +set_signal_stack vendor/libc/src/unix/haiku/native.rs /^ pub fn set_signal_stack(base: *mut ::c_void, size: ::size_t);$/;" f +set_sigwinch_handler r_bash/src/lib.rs /^ pub fn set_sigwinch_handler();$/;" f +set_sigwinch_handler sig.c /^set_sigwinch_handler ()$/;" f typeref:typename:void +set_span vendor/proc-macro2/src/fallback.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:Group +set_span vendor/proc-macro2/src/fallback.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:Ident +set_span vendor/proc-macro2/src/fallback.rs /^ pub fn set_span(&mut self, span: Span) {$/;" f method:Literal::byte_string +set_span vendor/proc-macro2/src/lib.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:Group +set_span vendor/proc-macro2/src/lib.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:Ident +set_span vendor/proc-macro2/src/lib.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:Literal +set_span vendor/proc-macro2/src/lib.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:Punct +set_span vendor/proc-macro2/src/lib.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:TokenTree +set_span vendor/proc-macro2/src/wrapper.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:Group +set_span vendor/proc-macro2/src/wrapper.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:Ident +set_span vendor/proc-macro2/src/wrapper.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:Literal +set_span vendor/syn/src/lifetime.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:Lifetime +set_span vendor/syn/src/lit.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:value::Lit +set_span vendor/syn/src/lit.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:LitBool +set_span vendor/syn/src/lit.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:LitByte +set_span vendor/syn/src/lit.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:LitByteStr +set_span vendor/syn/src/lit.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:LitChar +set_span vendor/syn/src/lit.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:LitFloat +set_span vendor/syn/src/lit.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:LitInt +set_span vendor/syn/src/lit.rs /^ pub fn set_span(&mut self, span: Span) {$/;" P implementation:LitStr +set_special_char lib/readline/rltty.c /^set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func)$/;" f typeref:typename:void file: +set_this_relocation_prefix lib/intl/relocatable.c /^set_this_relocation_prefix (const char *orig_prefix_arg,$/;" f typeref:typename:void file: +set_thread_priority vendor/libc/src/unix/haiku/native.rs /^ pub fn set_thread_priority(thread: thread_id, newPriority: i32) -> status_t;$/;" f +set_time vendor/nix/src/time.rs /^ pub fn set_time(self, timespec: TimeSpec) -> Result<()> {$/;" P implementation:ClockId +set_transform vendor/fluent-bundle/src/bundle.rs /^ pub fn set_transform(&mut self, func: Option Cow>) {$/;" P implementation:FluentBundle +set_trap_state r_bash/src/lib.rs /^ pub fn set_trap_state(arg1: ::std::os::raw::c_int);$/;" f +set_trap_state r_glob/src/lib.rs /^ pub fn set_trap_state(arg1: ::std::os::raw::c_int);$/;" f +set_trap_state r_readline/src/lib.rs /^ pub fn set_trap_state(arg1: ::std::os::raw::c_int);$/;" f +set_trap_state trap.c /^set_trap_state (sig)$/;" f +set_tty_settings lib/readline/rltty.c /^set_tty_settings (int tty, TIOTYPE *tiop)$/;" f typeref:typename:int file: +set_tty_state jobs.c /^set_tty_state ()$/;" f typeref:typename:int +set_tty_state nojobs.c /^set_tty_state ()$/;" f typeref:typename:int +set_tty_state r_bash/src/lib.rs /^ pub fn set_tty_state() -> ::std::os::raw::c_int;$/;" f +set_tty_state r_jobs/src/lib.rs /^pub unsafe extern "C" fn set_tty_state() -> c_int {$/;" f +set_up_new_line bashline.c /^set_up_new_line (new_line)$/;" f file: +set_use_isolating vendor/fluent-bundle/src/bundle.rs /^ pub fn set_use_isolating(&mut self, value: bool) {$/;" P implementation:FluentBundle +set_var_attribute builtins_rust/setattr/src/lib.rs /^pub extern "C" fn set_var_attribute(name: *mut c_char, attribute: c_int, undo: c_int) {$/;" f +set_var_attribute r_bash/src/lib.rs /^ pub fn set_var_attribute($/;" f +set_var_auto_export r_bash/src/lib.rs /^ pub fn set_var_auto_export(arg1: *mut ::std::os::raw::c_char);$/;" f +set_var_auto_export variables.c /^set_var_auto_export (name)$/;" f +set_var_read_only r_bash/src/lib.rs /^ pub fn set_var_read_only(arg1: *mut ::std::os::raw::c_char);$/;" f +set_var_read_only variables.c /^set_var_read_only (name)$/;" f +set_variants vendor/unic-langid-impl/src/lib.rs /^ pub fn set_variants(&mut self, variants: &[subtags::Variant]) {$/;" P implementation:LanguageIdentifier +set_w_Coredump r_bash/src/lib.rs /^ pub fn set_w_Coredump(&mut self, val: ::std::os::raw::c_ushort) {$/;" P implementation:wait__bindgen_ty_1 +set_w_Fill1 r_bash/src/lib.rs /^ pub fn set_w_Fill1(&mut self, val: ::std::os::raw::c_ushort) {$/;" P implementation:wait__bindgen_ty_1 +set_w_Fill2 r_bash/src/lib.rs /^ pub fn set_w_Fill2(&mut self, val: ::std::os::raw::c_ushort) {$/;" P implementation:wait__bindgen_ty_2 +set_w_Retcode r_bash/src/lib.rs /^ pub fn set_w_Retcode(&mut self, val: ::std::os::raw::c_ushort) {$/;" P implementation:wait__bindgen_ty_1 +set_w_Stopsig r_bash/src/lib.rs /^ pub fn set_w_Stopsig(&mut self, val: ::std::os::raw::c_ushort) {$/;" P implementation:wait__bindgen_ty_2 +set_w_Stopval r_bash/src/lib.rs /^ pub fn set_w_Stopval(&mut self, val: ::std::os::raw::c_ushort) {$/;" P implementation:wait__bindgen_ty_2 +set_w_Termsig r_bash/src/lib.rs /^ pub fn set_w_Termsig(&mut self, val: ::std::os::raw::c_ushort) {$/;" P implementation:wait__bindgen_ty_1 +set_winsize lib/readline/rltty.c /^set_winsize (tty)$/;" f file: +set_working_directory builtins/common.c /^set_working_directory (name)$/;" f +set_working_directory builtins_rust/cd/src/lib.rs /^ fn set_working_directory(path: *mut c_char);$/;" f +set_working_directory r_bash/src/lib.rs /^ pub fn set_working_directory(arg1: *mut ::std::os::raw::c_char);$/;" f +setattr.o builtins/Makefile.in /^setattr.o: $(topdir)\/arrayfunc.h ..\/pathnames.h$/;" t +setattr.o builtins/Makefile.in /^setattr.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +setattr.o builtins/Makefile.in /^setattr.o: $(topdir)\/conftypes.h $(topdir)\/execute_cmd.h$/;" t +setattr.o builtins/Makefile.in /^setattr.o: $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/subst.h$/;" t +setattr.o builtins/Makefile.in /^setattr.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h $(BASHINCDIR)\/maxpath.h$/;" t +setattr.o builtins/Makefile.in /^setattr.o: $(topdir)\/externs.h $(topdir)\/flags.h $(topdir)\/sig.h$/;" t +setattr.o builtins/Makefile.in /^setattr.o: $(topdir)\/quit.h $(srcdir)\/common.h $(srcdir)\/bashgetopt.h$/;" t +setattr.o builtins/Makefile.in /^setattr.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables./;" t +setattr.o builtins/Makefile.in /^setattr.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +setattr.o builtins/Makefile.in /^setattr.o: setattr.def$/;" t +setattrlist vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn setattrlist($/;" f +setattrlistat vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn setattrlistat($/;" f +setaudit vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn setaudit(auditinfo: *const auditinfo_t) -> ::c_int;$/;" f +setbuf r_bash/src/lib.rs /^ pub fn setbuf(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char);$/;" f +setbuf r_readline/src/lib.rs /^ pub fn setbuf(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char);$/;" f +setbuf vendor/libc/src/fuchsia/mod.rs /^ pub fn setbuf(stream: *mut FILE, buf: *mut c_char);$/;" f +setbuf vendor/libc/src/solid/mod.rs /^ pub fn setbuf(arg1: *mut FILE, arg2: *mut c_char);$/;" f +setbuf vendor/libc/src/unix/mod.rs /^ pub fn setbuf(stream: *mut FILE, buf: *mut c_char);$/;" f +setbuf vendor/libc/src/vxworks/mod.rs /^ pub fn setbuf(stream: *mut FILE, buf: *mut c_char);$/;" f +setbuf vendor/libc/src/wasi.rs /^ pub fn setbuf(stream: *mut FILE, buf: *mut c_char);$/;" f +setbuf vendor/libc/src/windows/mod.rs /^ pub fn setbuf(stream: *mut FILE, buf: *mut c_char);$/;" f +setbuffer r_bash/src/lib.rs /^ pub fn setbuffer(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char, __size: usize);$/;" f +setbuffer r_readline/src/lib.rs /^ pub fn setbuffer(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char, __size: usize);$/;" f +setcontext vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs /^ pub fn setcontext(ucp: *const ucontext_t) -> ::c_int;$/;" f +setcontext vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^ pub fn setcontext(ucp: *const ::ucontext_t) -> ::c_int;$/;" f +setcontext vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^ pub fn setcontext(ucp: *const ucontext_t) -> ::c_int;$/;" f +setdomainname r_bash/src/lib.rs /^ pub fn setdomainname($/;" f +setdomainname r_glob/src/lib.rs /^ pub fn setdomainname($/;" f +setdomainname r_readline/src/lib.rs /^ pub fn setdomainname($/;" f +setdomainname vendor/libc/src/fuchsia/mod.rs /^ pub fn setdomainname(name: *const ::c_char, len: ::size_t) -> ::c_int;$/;" f +setdomainname vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn setdomainname(name: *const ::c_char, len: ::c_int) -> ::c_int;$/;" f +setdomainname vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn setdomainname(name: *const ::c_char, len: ::c_int) -> ::c_int;$/;" f +setdomainname vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn setdomainname(name: *const ::c_char, len: ::size_t) -> ::c_int;$/;" f +setdomainname vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn setdomainname(name: *const ::c_char, len: ::size_t) -> ::c_int;$/;" f +setdomainname vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn setdomainname(name: *const ::c_char, len: ::size_t) -> ::c_int;$/;" f +setegid r_bash/src/lib.rs /^ pub fn setegid(__gid: __gid_t) -> ::std::os::raw::c_int;$/;" f +setegid r_glob/src/lib.rs /^ pub fn setegid(__gid: __gid_t) -> ::std::os::raw::c_int;$/;" f +setegid r_readline/src/lib.rs /^ pub fn setegid(__gid: __gid_t) -> ::std::os::raw::c_int;$/;" f +setegid vendor/libc/src/fuchsia/mod.rs /^ pub fn setegid(gid: gid_t) -> ::c_int;$/;" f +setegid vendor/libc/src/unix/mod.rs /^ pub fn setegid(gid: gid_t) -> ::c_int;$/;" f +setegid vendor/libc/src/vxworks/mod.rs /^ pub fn setegid(gid: gid_t) -> ::c_int;$/;" f +setenv lib/sh/getenv.c /^setenv (name, value, rewrite)$/;" f +setenv r_bash/src/lib.rs /^ pub fn setenv($/;" f +setenv r_glob/src/lib.rs /^ pub fn setenv($/;" f +setenv r_readline/src/lib.rs /^ pub fn setenv($/;" f +setenv vendor/libc/src/fuchsia/mod.rs /^ pub fn setenv(name: *const c_char, val: *const c_char, overwrite: ::c_int) -> ::c_int;$/;" f +setenv vendor/libc/src/solid/mod.rs /^ pub fn setenv(arg1: *const c_char, arg2: *const c_char, arg3: c_int) -> c_int;$/;" f +setenv vendor/libc/src/unix/mod.rs /^ pub fn setenv(name: *const c_char, val: *const c_char, overwrite: ::c_int) -> ::c_int;$/;" f +setenv vendor/libc/src/vxworks/mod.rs /^ pub fn setenv($/;" f +setenv vendor/libc/src/wasi.rs /^ pub fn setenv(k: *const c_char, v: *const c_char, a: c_int) -> c_int;$/;" f +setenv_buf lib/readline/shell.c /^static char setenv_buf[INT_STRLEN_BOUND (int) + 1];$/;" v typeref:typename:char[] file: +seteuid r_bash/src/lib.rs /^ pub fn seteuid(__uid: __uid_t) -> ::std::os::raw::c_int;$/;" f +seteuid r_glob/src/lib.rs /^ pub fn seteuid(__uid: __uid_t) -> ::std::os::raw::c_int;$/;" f +seteuid r_readline/src/lib.rs /^ pub fn seteuid(__uid: __uid_t) -> ::std::os::raw::c_int;$/;" f +seteuid vendor/libc/src/fuchsia/mod.rs /^ pub fn seteuid(uid: uid_t) -> ::c_int;$/;" f +seteuid vendor/libc/src/unix/mod.rs /^ pub fn seteuid(uid: uid_t) -> ::c_int;$/;" f +seteuid vendor/libc/src/vxworks/mod.rs /^ pub fn seteuid(uid: uid_t) -> ::c_int;$/;" f +setfsgid vendor/libc/src/fuchsia/mod.rs /^ pub fn setfsgid(gid: ::gid_t) -> ::c_int;$/;" f +setfsgid vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn setfsgid(gid: ::gid_t) -> ::c_int;$/;" f +setfsgid vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn setfsgid(gid: ::gid_t) -> ::c_int;$/;" f +setfsuid vendor/libc/src/fuchsia/mod.rs /^ pub fn setfsuid(uid: ::uid_t) -> ::c_int;$/;" f +setfsuid vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn setfsuid(uid: ::uid_t) -> ::c_int;$/;" f +setfsuid vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn setfsuid(uid: ::uid_t) -> ::c_int;$/;" f +setgid r_bash/src/lib.rs /^ pub fn setgid(__gid: __gid_t) -> ::std::os::raw::c_int;$/;" f +setgid r_glob/src/lib.rs /^ pub fn setgid(__gid: __gid_t) -> ::std::os::raw::c_int;$/;" f +setgid r_readline/src/lib.rs /^ pub fn setgid(__gid: __gid_t) -> ::std::os::raw::c_int;$/;" f +setgid vendor/libc/src/fuchsia/mod.rs /^ pub fn setgid(gid: gid_t) -> ::c_int;$/;" f +setgid vendor/libc/src/unix/mod.rs /^ pub fn setgid(gid: gid_t) -> ::c_int;$/;" f +setgid vendor/libc/src/vxworks/mod.rs /^ pub fn setgid(gid: ::gid_t) -> ::c_int;$/;" f +setgrent vendor/libc/src/fuchsia/mod.rs /^ pub fn setgrent();$/;" f +setgrent vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn setgrent();$/;" f +setgrent vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn setgrent();$/;" f +setgrent vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs /^ pub fn setgrent() -> ::c_int;$/;" f +setgrent vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^ pub fn setgrent();$/;" f +setgrent vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn setgrent();$/;" f +setgrent vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn setgrent();$/;" f +setgrent vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn setgrent();$/;" f +setgrent vendor/libc/src/unix/haiku/mod.rs /^ pub fn setgrent();$/;" f +setgrent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn setgrent();$/;" f +setgrent vendor/libc/src/unix/solarish/mod.rs /^ pub fn setgrent();$/;" f +setgroups vendor/libc/src/fuchsia/mod.rs /^ pub fn setgroups(ngroups: ::size_t, ptr: *const ::gid_t) -> ::c_int;$/;" f +setgroups vendor/libc/src/unix/bsd/mod.rs /^ pub fn setgroups(ngroups: ::c_int, ptr: *const ::gid_t) -> ::c_int;$/;" f +setgroups vendor/libc/src/unix/haiku/mod.rs /^ pub fn setgroups(ngroups: ::c_int, ptr: *const ::gid_t) -> ::c_int;$/;" f +setgroups vendor/libc/src/unix/hermit/mod.rs /^ pub fn setgroups(ngroups: ::c_int, grouplist: *const ::gid_t) -> ::c_int;$/;" f +setgroups vendor/libc/src/unix/linux_like/mod.rs /^ pub fn setgroups(ngroups: ::size_t, ptr: *const ::gid_t) -> ::c_int;$/;" f +setgroups vendor/libc/src/unix/solarish/mod.rs /^ pub fn setgroups(ngroups: ::c_int, ptr: *const ::gid_t) -> ::c_int;$/;" f +sethostid r_bash/src/lib.rs /^ pub fn sethostid(__id: ::std::os::raw::c_long) -> ::std::os::raw::c_int;$/;" f +sethostid r_glob/src/lib.rs /^ pub fn sethostid(__id: ::std::os::raw::c_long) -> ::std::os::raw::c_int;$/;" f +sethostid r_readline/src/lib.rs /^ pub fn sethostid(__id: ::std::os::raw::c_long) -> ::std::os::raw::c_int;$/;" f +sethostid vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn sethostid(hostid: ::c_long);$/;" f +sethostid vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sethostid(hostid: ::c_long);$/;" f +sethostid vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn sethostid(hostid: ::c_long) -> ::c_int;$/;" f +sethostid vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn sethostid(hostid: ::c_long) -> ::c_int;$/;" f +sethostid vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn sethostid(hostid: ::c_long) -> ::c_int;$/;" f +sethostname r_bash/src/lib.rs /^ pub fn sethostname($/;" f +sethostname r_glob/src/lib.rs /^ pub fn sethostname($/;" f +sethostname r_readline/src/lib.rs /^ pub fn sethostname($/;" f +sethostname vendor/libc/src/fuchsia/mod.rs /^ pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;$/;" f +sethostname vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn sethostname(name: *const ::c_char, len: ::c_int) -> ::c_int;$/;" f +sethostname vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sethostname(name: *const ::c_char, len: ::c_int) -> ::c_int;$/;" f +sethostname vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;$/;" f +sethostname vendor/libc/src/unix/haiku/mod.rs /^ pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;$/;" f +sethostname vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;$/;" f +sethostname vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;$/;" f +sethostname vendor/libc/src/unix/solarish/mod.rs /^ pub fn sethostname(name: *const ::c_char, len: ::c_int) -> ::c_int;$/;" f +setifs r_bash/src/lib.rs /^ pub fn setifs(arg1: *mut SHELL_VAR);$/;" f +setifs subst.c /^setifs (v)$/;" f +setitimer r_bash/src/lib.rs /^ pub fn setitimer($/;" f +setitimer r_glob/src/lib.rs /^ pub fn setitimer($/;" f +setitimer r_readline/src/lib.rs /^ pub fn setitimer($/;" f +setitimer vendor/libc/src/unix/bsd/mod.rs /^ pub fn setitimer($/;" f +setitimer vendor/libc/src/unix/haiku/mod.rs /^ pub fn setitimer($/;" f +setjmp builtins_rust/wait/src/lib.rs /^ pub fn setjmp(__env: *mut __jmp_buf_tag) -> ::std::os::raw::c_int;$/;" f +setjmp r_bash/src/lib.rs /^ pub fn setjmp(__env: *mut __jmp_buf_tag) -> ::std::os::raw::c_int;$/;" f +setjmp r_readline/src/lib.rs /^ pub fn setjmp(__env: *mut __jmp_buf_tag) -> ::std::os::raw::c_int;$/;" f +setjmp_nosigs include/posixjmp.h /^# define setjmp_nosigs /;" d +setjmp_nosigs include/posixjmp.h /^# define setjmp_nosigs(/;" d +setjmp_nosigs lib/readline/posixjmp.h /^# define setjmp_nosigs /;" d +setjmp_nosigs lib/readline/posixjmp.h /^# define setjmp_nosigs(/;" d +setjmp_sigs include/posixjmp.h /^# define setjmp_sigs /;" d +setjmp_sigs include/posixjmp.h /^# define setjmp_sigs(/;" d +setjmp_sigs lib/readline/posixjmp.h /^# define setjmp_sigs /;" d +setjmp_sigs lib/readline/posixjmp.h /^# define setjmp_sigs(/;" d +setjstatus jobs.c /^setjstatus (j)$/;" f file: +setjstatus r_jobs/src/lib.rs /^unsafe extern "C" fn setjstatus(mut j: c_int) {$/;" f +setlinebuf r_bash/src/lib.rs /^ pub fn setlinebuf(__stream: *mut FILE);$/;" f +setlinebuf r_readline/src/lib.rs /^ pub fn setlinebuf(__stream: *mut FILE);$/;" f +setlinebuf.o lib/sh/Makefile.in /^setlinebuf.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/stdc.h$/;" t +setlinebuf.o lib/sh/Makefile.in /^setlinebuf.o: ${BUILD_DIR}\/config.h$/;" t +setlinebuf.o lib/sh/Makefile.in /^setlinebuf.o: ${topdir}\/xmalloc.h ${topdir}\/bashansi.h$/;" t +setlinebuf.o lib/sh/Makefile.in /^setlinebuf.o: setlinebuf.c$/;" t +setlocale bashintl.h /^# define setlocale(/;" d +setlocale r_bash/src/lib.rs /^ pub fn setlocale($/;" f +setlocale vendor/libc/src/fuchsia/mod.rs /^ pub fn setlocale(category: ::c_int, locale: *const ::c_char) -> *mut ::c_char;$/;" f +setlocale vendor/libc/src/solid/mod.rs /^ pub fn setlocale(arg1: c_int, arg2: *const c_char) -> *mut c_char;$/;" f +setlocale vendor/libc/src/unix/mod.rs /^ pub fn setlocale(category: ::c_int, locale: *const ::c_char) -> *mut ::c_char;$/;" f +setlocale vendor/libc/src/vxworks/mod.rs /^ pub fn setlocale(category: ::c_int, locale: *const ::c_char) -> *mut ::c_char;$/;" f +setlocale vendor/libc/src/wasi.rs /^ pub fn setlocale(category: ::c_int, locale: *const ::c_char) -> *mut ::c_char;$/;" f +setlocale vendor/libc/src/windows/mod.rs /^ pub fn setlocale(category: ::c_int, locale: *const c_char) -> *mut c_char;$/;" f +setlogin r_bash/src/lib.rs /^ pub fn setlogin(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +setlogin r_glob/src/lib.rs /^ pub fn setlogin(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +setlogin r_readline/src/lib.rs /^ pub fn setlogin(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +setlogmask vendor/libc/src/fuchsia/mod.rs /^ pub fn setlogmask(maskpri: ::c_int) -> ::c_int;$/;" f +setlogmask vendor/libc/src/unix/mod.rs /^ pub fn setlogmask(maskpri: ::c_int) -> ::c_int;$/;" f +setlogmask vendor/libc/src/vxworks/mod.rs /^ pub fn setlogmask(maskpri: ::c_int) -> ::c_int;$/;" f +setmntent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn setmntent(filename: *const ::c_char, ty: *const ::c_char) -> *mut ::FILE;$/;" f +setns vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn setns(fd: ::c_int, nstype: ::c_int) -> ::c_int;$/;" f +setns vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn setns(fd: ::c_int, nstype: ::c_int) -> ::c_int;$/;" f +setns vendor/nix/src/sched.rs /^ pub fn setns(fd: RawFd, nstype: CloneFlags) -> Result<()> {$/;" f module:sched_linux_like +setopost lib/readline/rltty.c /^setopost (TIOTYPE *tp)$/;" f typeref:typename:void +setopt_get_func_t builtins_rust/set/src/lib.rs /^ fn setopt_get_func_t(name: *mut libc::c_char) -> i32;$/;" f +setopt_get_func_t builtins_rust/set/src/lib.rs /^type setopt_get_func_t = unsafe extern "C" fn(name: *mut libc::c_char) -> i32;$/;" t +setopt_set_func_t builtins_rust/set/src/lib.rs /^ fn setopt_set_func_t(i: i32, name: *mut libc::c_char) -> i32;$/;" f +setopt_set_func_t builtins_rust/set/src/lib.rs /^type setopt_set_func_t = unsafe extern "C" fn(i: i32, name: *mut libc::c_char) -> i32;$/;" t +setoptions vendor/nix/src/sys/ptrace/linux.rs /^pub fn setoptions(pid: Pid, options: Options) -> Result<()> {$/;" f +setpflags vendor/libc/src/unix/solarish/mod.rs /^ pub fn setpflags(flags: ::c_uint, value: ::c_uint) -> ::c_int;$/;" f +setpgid jobs.c /^#define setpgid(/;" d file: +setpgid r_bash/src/lib.rs /^ pub fn setpgid(__pid: __pid_t, __pgid: __pid_t) -> ::std::os::raw::c_int;$/;" f +setpgid r_glob/src/lib.rs /^ pub fn setpgid(__pid: __pid_t, __pgid: __pid_t) -> ::std::os::raw::c_int;$/;" f +setpgid r_jobs/src/lib.rs /^ fn setpgid(__pid: __pid_t, __pgid: __pid_t) -> c_int;$/;" f +setpgid r_readline/src/lib.rs /^ pub fn setpgid(__pid: __pid_t, __pgid: __pid_t) -> ::std::os::raw::c_int;$/;" f +setpgid vendor/libc/src/fuchsia/mod.rs /^ pub fn setpgid(pid: pid_t, pgid: pid_t) -> ::c_int;$/;" f +setpgid vendor/libc/src/unix/mod.rs /^ pub fn setpgid(pid: pid_t, pgid: pid_t) -> ::c_int;$/;" f +setpgrp r_bash/src/lib.rs /^ pub fn setpgrp() -> ::std::os::raw::c_int;$/;" f +setpgrp r_glob/src/lib.rs /^ pub fn setpgrp() -> ::std::os::raw::c_int;$/;" f +setpgrp r_readline/src/lib.rs /^ pub fn setpgrp() -> ::std::os::raw::c_int;$/;" f +setpriority r_bash/src/lib.rs /^ pub fn setpriority($/;" f +setpriority r_glob/src/lib.rs /^ pub fn setpriority($/;" f +setpriority r_readline/src/lib.rs /^ pub fn setpriority($/;" f +setpriority vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int;$/;" f +setpriority vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn setpriority(which: ::c_int, who: ::c_int, prio: ::c_int) -> ::c_int;$/;" f +setpriority vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int;$/;" f +setpriority vendor/libc/src/unix/haiku/mod.rs /^ pub fn setpriority(which: ::c_int, who: id_t, priority: ::c_int) -> ::c_int;$/;" f +setpriority vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int;$/;" f +setpriority vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int;$/;" f +setpriority vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn setpriority(which: ::__priority_which_t, who: ::id_t, prio: ::c_int) -> ::c_int;$/;" f +setpriority vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int;$/;" f +setpriority vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn setpriority(which: ::__priority_which_t, who: ::id_t, prio: ::c_int) -> ::c_int;$/;" f +setpriority vendor/libc/src/unix/solarish/mod.rs /^ pub fn setpriority(which: ::c_int, who: ::c_int, prio: ::c_int) -> ::c_int;$/;" f +setproctitle vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn setproctitle(fmt: *const ::c_char, ...);$/;" f +setproctitle vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn setproctitle(fmt: *const ::c_char, ...);$/;" f +setproctitle vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn setproctitle(fmt: *const ::c_char, ...);$/;" f +setproctitle vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn setproctitle(fmt: *const ::c_char, ...);$/;" f +setproctitle_fast vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^ pub fn setproctitle_fast(fmt: *const ::c_char, ...);$/;" f +setproctitle_fast vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn setproctitle_fast(fmt: *const ::c_char, ...);$/;" f +setproctitle_fast vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn setproctitle_fast(fmt: *const ::c_char, ...);$/;" f +setprogname vendor/libc/src/solid/mod.rs /^ pub fn setprogname(arg1: *const c_char);$/;" f +setprogname vendor/libc/src/unix/bsd/mod.rs /^ pub fn setprogname(name: *const ::c_char);$/;" f +setprogname vendor/libc/src/unix/solarish/mod.rs /^ pub fn setprogname(name: *const ::c_char);$/;" f +setpwent vendor/libc/src/fuchsia/mod.rs /^ pub fn setpwent();$/;" f +setpwent vendor/libc/src/unix/bsd/mod.rs /^ pub fn setpwent();$/;" f +setpwent vendor/libc/src/unix/haiku/mod.rs /^ pub fn setpwent();$/;" f +setpwent vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn setpwent();$/;" f +setpwent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn setpwent();$/;" f +setpwent vendor/libc/src/unix/solarish/mod.rs /^ pub fn setpwent();$/;" f +setregid r_bash/src/lib.rs /^ pub fn setregid(__rgid: __gid_t, __egid: __gid_t) -> ::std::os::raw::c_int;$/;" f +setregid r_glob/src/lib.rs /^ pub fn setregid(__rgid: __gid_t, __egid: __gid_t) -> ::std::os::raw::c_int;$/;" f +setregid r_readline/src/lib.rs /^ pub fn setregid(__rgid: __gid_t, __egid: __gid_t) -> ::std::os::raw::c_int;$/;" f +setregid vendor/libc/src/fuchsia/mod.rs /^ pub fn setregid(rgid: ::gid_t, egid: ::gid_t) -> ::c_int;$/;" f +setregid vendor/libc/src/unix/mod.rs /^ pub fn setregid(rgid: gid_t, egid: gid_t) -> ::c_int;$/;" f +setregs vendor/nix/src/sys/ptrace/linux.rs /^pub fn setregs(pid: Pid, regs: user_regs_struct) -> Result<()> {$/;" f +setres vendor/nix/src/unistd.rs /^mod setres {$/;" n +setresgid r_bash/src/lib.rs /^ pub fn setresgid(__rgid: __gid_t, __egid: __gid_t, __sgid: __gid_t) -> ::std::os::raw::c_int/;" f +setresgid r_glob/src/lib.rs /^ pub fn setresgid(__rgid: __gid_t, __egid: __gid_t, __sgid: __gid_t) -> ::std::os::raw::c_int/;" f +setresgid r_readline/src/lib.rs /^ pub fn setresgid(__rgid: __gid_t, __egid: __gid_t, __sgid: __gid_t) -> ::std::os::raw::c_int/;" f +setresgid vendor/libc/src/fuchsia/mod.rs /^ pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int;$/;" f +setresgid vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int;$/;" f +setresgid vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int;$/;" f +setresgid vendor/libc/src/unix/linux_like/mod.rs /^ pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int;$/;" f +setresuid r_bash/src/lib.rs /^ pub fn setresuid(__ruid: __uid_t, __euid: __uid_t, __suid: __uid_t) -> ::std::os::raw::c_int/;" f +setresuid r_glob/src/lib.rs /^ pub fn setresuid(__ruid: __uid_t, __euid: __uid_t, __suid: __uid_t) -> ::std::os::raw::c_int/;" f +setresuid r_readline/src/lib.rs /^ pub fn setresuid(__ruid: __uid_t, __euid: __uid_t, __suid: __uid_t) -> ::std::os::raw::c_int/;" f +setresuid vendor/libc/src/fuchsia/mod.rs /^ pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int;$/;" f +setresuid vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int;$/;" f +setresuid vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int;$/;" f +setresuid vendor/libc/src/unix/linux_like/mod.rs /^ pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int;$/;" f +setreuid r_bash/src/lib.rs /^ pub fn setreuid(__ruid: __uid_t, __euid: __uid_t) -> ::std::os::raw::c_int;$/;" f +setreuid r_glob/src/lib.rs /^ pub fn setreuid(__ruid: __uid_t, __euid: __uid_t) -> ::std::os::raw::c_int;$/;" f +setreuid r_readline/src/lib.rs /^ pub fn setreuid(__ruid: __uid_t, __euid: __uid_t) -> ::std::os::raw::c_int;$/;" f +setreuid vendor/libc/src/fuchsia/mod.rs /^ pub fn setreuid(ruid: ::uid_t, euid: ::uid_t) -> ::c_int;$/;" f +setreuid vendor/libc/src/unix/mod.rs /^ pub fn setreuid(ruid: uid_t, euid: uid_t) -> ::c_int;$/;" f +setrlimit builtins_rust/ulimit/src/lib.rs /^ fn setrlimit(__resource: __rlimit_resource_t, __rlimits: *const rlimit) -> i32;$/;" f +setrlimit r_bash/src/lib.rs /^ pub fn setrlimit($/;" f +setrlimit r_glob/src/lib.rs /^ pub fn setrlimit($/;" f +setrlimit r_readline/src/lib.rs /^ pub fn setrlimit($/;" f +setrlimit vendor/libc/src/unix/bsd/mod.rs /^ pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;$/;" f +setrlimit vendor/libc/src/unix/haiku/mod.rs /^ pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;$/;" f +setrlimit vendor/libc/src/unix/hermit/mod.rs /^ pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;$/;" f +setrlimit vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;$/;" f +setrlimit vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;$/;" f +setrlimit vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn setrlimit(resource: ::__rlimit_resource_t, rlim: *const ::rlimit) -> ::c_int;$/;" f +setrlimit vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;$/;" f +setrlimit vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn setrlimit(resource: ::__rlimit_resource_t, rlim: *const ::rlimit) -> ::c_int;$/;" f +setrlimit vendor/libc/src/unix/newlib/mod.rs /^ pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;$/;" f +setrlimit vendor/libc/src/unix/redox/mod.rs /^ pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;$/;" f +setrlimit vendor/libc/src/unix/solarish/mod.rs /^ pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;$/;" f +setrlimit vendor/nix/src/sys/resource.rs /^pub fn setrlimit(resource: Resource, soft_limit: rlim_t, hard_limit: rlim_t) -> Result<()> {$/;" f +setrlimit64 r_bash/src/lib.rs /^ pub fn setrlimit64($/;" f +setrlimit64 r_glob/src/lib.rs /^ pub fn setrlimit64($/;" f +setrlimit64 r_readline/src/lib.rs /^ pub fn setrlimit64($/;" f +setrlimit64 vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn setrlimit64(resource: ::c_int, rlim: *const rlimit64) -> ::c_int;$/;" f +setrlimit64 vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn setrlimit64(resource: ::c_int, rlim: *const rlimit64) -> ::c_int;$/;" f +setrlimit64 vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn setrlimit64(resource: ::__rlimit_resource_t, rlim: *const ::rlimit64) -> ::c_int;$/;" f +setrlimit64 vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub fn setrlimit64(resource: ::c_int, rlim: *const ::rlimit64) -> ::c_int;$/;" f +setrlimit64 vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub fn setrlimit64(resource: ::__rlimit_resource_t, rlim: *const ::rlimit64) -> ::c_int;$/;" f +setservent vendor/libc/src/unix/mod.rs /^ pub fn setservent(stayopen: ::c_int);$/;" f +setsid r_bash/src/lib.rs /^ pub fn setsid() -> __pid_t;$/;" f +setsid r_glob/src/lib.rs /^ pub fn setsid() -> __pid_t;$/;" f +setsid r_readline/src/lib.rs /^ pub fn setsid() -> __pid_t;$/;" f +setsid vendor/libc/src/fuchsia/mod.rs /^ pub fn setsid() -> pid_t;$/;" f +setsid vendor/libc/src/unix/mod.rs /^ pub fn setsid() -> pid_t;$/;" f +setsiginfo vendor/nix/src/sys/ptrace/linux.rs /^pub fn setsiginfo(pid: Pid, sig: &siginfo_t) -> Result<()> {$/;" f +setsockopt vendor/libc/src/fuchsia/mod.rs /^ pub fn setsockopt($/;" f +setsockopt vendor/libc/src/unix/mod.rs /^ pub fn setsockopt($/;" f +setsockopt vendor/libc/src/vxworks/mod.rs /^ pub fn setsockopt($/;" f +setsockopt vendor/libc/src/windows/mod.rs /^ pub fn setsockopt($/;" f +setsockopt vendor/nix/src/sys/socket/mod.rs /^pub fn setsockopt(fd: RawFd, opt: O, val: &O::Val) -> Result<()> {$/;" f +setsockopt vendor/winapi/src/um/winsock2.rs /^ pub fn setsockopt($/;" f +setsockopt_impl vendor/nix/src/sys/socket/sockopt.rs /^macro_rules! setsockopt_impl {$/;" M +setspent vendor/libc/src/unix/haiku/mod.rs /^ pub fn setspent();$/;" f +setspent vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn setspent();$/;" f +setstate r_bash/src/lib.rs /^ pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +setstate r_glob/src/lib.rs /^ pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +setstate r_readline/src/lib.rs /^ pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +setstate vendor/libc/src/solid/mod.rs /^ pub fn setstate(arg1: *mut c_char) -> *mut c_char;$/;" f +setstate_r r_bash/src/lib.rs /^ pub fn setstate_r($/;" f +setstate_r r_glob/src/lib.rs /^ pub fn setstate_r($/;" f +setstate_r r_readline/src/lib.rs /^ pub fn setstate_r($/;" f +settimeofday r_bash/src/lib.rs /^ pub fn settimeofday(__tv: *const timeval, __tz: *const timezone) -> ::std::os::raw::c_int;$/;" f +settimeofday r_glob/src/lib.rs /^ pub fn settimeofday(__tv: *const timeval, __tz: *const timezone) -> ::std::os::raw::c_int;$/;" f +settimeofday r_readline/src/lib.rs /^ pub fn settimeofday(__tv: *const timeval, __tz: *const timezone) -> ::std::os::raw::c_int;$/;" f +settimeofday vendor/libc/src/fuchsia/mod.rs /^ pub fn settimeofday(tv: *const ::timeval, tz: *const ::timezone) -> ::c_int;$/;" f +settimeofday vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn settimeofday(tv: *const ::timeval, tz: *const ::timezone) -> ::c_int;$/;" f +settimeofday vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn settimeofday(tv: *const ::timeval, tz: *const ::timezone) -> ::c_int;$/;" f +settimeofday vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn settimeofday(tv: *const ::timeval, tz: *const ::c_void) -> ::c_int;$/;" f +settimeofday vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn settimeofday(tp: *const ::timeval, tz: *const ::timezone) -> ::c_int;$/;" f +settimeofday vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn settimeofday(tv: *const ::timeval, tz: *const ::timezone) -> ::c_int;$/;" f +settimeofday vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn settimeofday(tv: *const ::timeval, tz: *const ::timezone) -> ::c_int;$/;" f +settimeofday vendor/libc/src/unix/solarish/mod.rs /^ pub fn settimeofday(tp: *const ::timeval, tz: *const ::c_void) -> ::c_int;$/;" f +setuid r_bash/src/lib.rs /^ pub fn setuid(__uid: __uid_t) -> ::std::os::raw::c_int;$/;" f +setuid r_glob/src/lib.rs /^ pub fn setuid(__uid: __uid_t) -> ::std::os::raw::c_int;$/;" f +setuid r_readline/src/lib.rs /^ pub fn setuid(__uid: __uid_t) -> ::std::os::raw::c_int;$/;" f +setuid vendor/libc/src/fuchsia/mod.rs /^ pub fn setuid(uid: uid_t) -> ::c_int;$/;" f +setuid vendor/libc/src/unix/mod.rs /^ pub fn setuid(uid: uid_t) -> ::c_int;$/;" f +setuid vendor/libc/src/vxworks/mod.rs /^ pub fn setuid(uid: ::uid_t) -> ::c_int;$/;" f +setup_async_signals execute_cmd.c /^setup_async_signals ()$/;" f typeref:typename:void +setup_async_signals r_bash/src/lib.rs /^ pub fn setup_async_signals();$/;" f +setup_exec_ignore findcmd.c /^setup_exec_ignore (varname)$/;" f +setup_exec_ignore r_bash/src/lib.rs /^ pub fn setup_exec_ignore(arg1: *mut ::std::os::raw::c_char);$/;" f +setup_glob_ignore pathexp.c /^setup_glob_ignore (name)$/;" f +setup_glob_ignore r_bash/src/lib.rs /^ pub fn setup_glob_ignore(arg1: *mut ::std::os::raw::c_char);$/;" f +setup_history_ignore bashhist.c /^setup_history_ignore (varname)$/;" f +setup_history_ignore r_bash/src/lib.rs /^ pub fn setup_history_ignore(arg1: *mut ::std::os::raw::c_char);$/;" f +setup_history_ignore r_bashhist/src/lib.rs /^pub unsafe extern "C" fn setup_history_ignore(mut varname: *mut c_char) {$/;" f +setup_ignore_patterns pathexp.c /^setup_ignore_patterns (ivp)$/;" f +setup_ignore_patterns r_bash/src/lib.rs /^ pub fn setup_ignore_patterns(arg1: *mut ignorevar);$/;" f +setup_namespaces vendor/nix/test/test_mount.rs /^ pub fn setup_namespaces() {$/;" f module:test_mount +setupapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "setupapi")] pub mod setupapi;$/;" n +setusershell r_bash/src/lib.rs /^ pub fn setusershell();$/;" f +setusershell r_glob/src/lib.rs /^ pub fn setusershell();$/;" f +setusershell r_readline/src/lib.rs /^ pub fn setusershell();$/;" f +setusershell vendor/libc/src/unix/haiku/mod.rs /^ pub fn setusershell();$/;" f +setutent vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn setutent();$/;" f +setutent vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn setutent();$/;" f +setutent vendor/libc/src/unix/solarish/mod.rs /^ pub fn setutent();$/;" f +setutxdb vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn setutxdb(_type: ::c_uint, file: *mut ::c_char) -> ::c_int;$/;" f +setutxdb vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn setutxdb(_type: ::c_int, file: *const ::c_char) -> ::c_int;$/;" f +setutxent vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn setutxent();$/;" f +setutxent vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn setutxent();$/;" f +setutxent vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn setutxent();$/;" f +setutxent vendor/libc/src/unix/haiku/mod.rs /^ pub fn setutxent();$/;" f +setutxent vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn setutxent();$/;" f +setutxent vendor/libc/src/unix/solarish/mod.rs /^ pub fn setutxent();$/;" f +setvbuf r_bash/src/lib.rs /^ pub fn setvbuf($/;" f +setvbuf r_readline/src/lib.rs /^ pub fn setvbuf($/;" f +setvbuf vendor/libc/src/fuchsia/mod.rs /^ pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, size: size_t) -> c_int;$/;" f +setvbuf vendor/libc/src/solid/mod.rs /^ pub fn setvbuf(arg1: *mut FILE, arg2: *mut c_char, arg3: c_int, arg4: size_t) -> c_int;$/;" f +setvbuf vendor/libc/src/unix/mod.rs /^ pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, size: size_t) -> c_int;$/;" f +setvbuf vendor/libc/src/vxworks/mod.rs /^ pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, size: size_t) -> c_int;$/;" f +setvbuf vendor/libc/src/wasi.rs /^ pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, size: size_t) -> c_int;$/;" f +setvbuf vendor/libc/src/windows/mod.rs /^ pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, size: size_t) -> c_int;$/;" f +setxattr vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn setxattr($/;" f +setxattr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn setxattr($/;" f +setxattr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn setxattr($/;" f +setxattr vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn setxattr($/;" f +sflags lib/readline/rlprivate.h /^ int sflags;$/;" m struct:__rl_search_context typeref:typename:int +sflags r_readline/src/lib.rs /^ pub sflags: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +sgetspent vendor/libc/src/unix/haiku/mod.rs /^ pub fn sgetspent(line: *const ::c_char) -> *mut spwd;$/;" f +sgetspent_r vendor/libc/src/unix/haiku/mod.rs /^ pub fn sgetspent_r($/;" f +sgetspent_r vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn sgetspent_r($/;" f +sgttyb lib/readline/rltty.c /^ struct sgttyb sgttyb; \/* Basic BSD tty driver information. *\/$/;" m struct:bsdtty typeref:struct:sgttyb file: +sh_ae_map_func_t r_bash/src/lib.rs /^pub type sh_ae_map_func_t = ::core::option::Option<$/;" t +sh_ae_map_func_t r_glob/src/lib.rs /^pub type sh_ae_map_func_t = ::core::option::Option<$/;" t +sh_ae_map_func_t r_readline/src/lib.rs /^pub type sh_ae_map_func_t = ::core::option::Option<$/;" t +sh_allocerr xmalloc.c /^sh_allocerr (func, bytes, file, line)$/;" f file: +sh_assign_func_t r_bash/src/lib.rs /^pub type sh_assign_func_t = ::core::option::Option<$/;" t +sh_assign_func_t r_glob/src/lib.rs /^pub type sh_assign_func_t = ::core::option::Option<$/;" t +sh_assign_func_t r_readline/src/lib.rs /^pub type sh_assign_func_t = ::core::option::Option<$/;" t +sh_backslash_quote builtins_rust/printf/src/intercdep.rs /^ pub fn sh_backslash_quote(string: *mut c_char, table: *mut c_char, flags: c_int) -> *mut c_c/;" f +sh_backslash_quote lib/sh/shquote.c /^sh_backslash_quote (string, table, flags)$/;" f +sh_backslash_quote r_bash/src/lib.rs /^ pub fn sh_backslash_quote($/;" f +sh_backslash_quote_for_double_quotes lib/sh/shquote.c /^sh_backslash_quote_for_double_quotes (string)$/;" f +sh_backslash_quote_for_double_quotes r_bash/src/lib.rs /^ pub fn sh_backslash_quote_for_double_quotes($/;" f +sh_badjob builtins/common.c /^sh_badjob (s)$/;" f +sh_badjob builtins_rust/fg_bg/src/lib.rs /^ fn sh_badjob(str: *mut c_char);$/;" f +sh_badjob builtins_rust/jobs/src/lib.rs /^ fn sh_badjob(str: *mut c_char);$/;" f +sh_badjob builtins_rust/kill/src/intercdep.rs /^ pub fn sh_badjob(s: *mut c_char) -> c_void;$/;" f +sh_badjob builtins_rust/wait/src/lib.rs /^ fn sh_badjob(str: *mut c_char);$/;" f +sh_badjob r_bash/src/lib.rs /^ pub fn sh_badjob(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_badopt builtins/getopt.c /^int sh_badopt = 0;$/;" v typeref:typename:int +sh_badopt builtins_rust/getopts/src/lib.rs /^ static mut sh_badopt: i32;$/;" v +sh_badopt r_bash/src/lib.rs /^ pub static mut sh_badopt: ::std::os::raw::c_int;$/;" v +sh_badpid builtins/common.c /^sh_badpid (s)$/;" f +sh_badpid builtins_rust/kill/src/intercdep.rs /^ pub fn sh_badpid(s: *mut c_char) -> c_void;$/;" f +sh_badpid r_bash/src/lib.rs /^ pub fn sh_badpid(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_builtin_func_t builtins_rust/builtin/src/intercdep.rs /^pub type sh_builtin_func_t = unsafe extern "C" fn(*mut WordList) -> i32;$/;" t +sh_builtin_func_t builtins_rust/common/src/lib.rs /^pub type sh_builtin_func_t = fn(*mut WordList) -> i32;$/;" t +sh_builtin_func_t builtins_rust/enable/src/lib.rs /^pub type sh_builtin_func_t = unsafe extern "C" fn(*mut WordList) -> libc::c_int;$/;" t +sh_builtin_func_t builtins_rust/hash/src/lib.rs /^type sh_builtin_func_t = extern "C" fn(*mut WordList) -> i32;$/;" t +sh_builtin_func_t builtins_rust/help/src/lib.rs /^ fn sh_builtin_func_t(list: *mut WordList) -> i32;$/;" f +sh_builtin_func_t builtins_rust/help/src/lib.rs /^type sh_builtin_func_t = fn(WordList) -> i32;$/;" t +sh_builtin_func_t builtins_rust/setattr/src/intercdep.rs /^pub type sh_builtin_func_t =$/;" t +sh_builtin_func_t builtins_rust/type/src/lib.rs /^type sh_builtin_func_t = fn(WordList) -> i32;$/;" t +sh_builtin_func_t r_bash/src/lib.rs /^pub type sh_builtin_func_t =$/;" t +sh_builtin_func_t r_glob/src/lib.rs /^pub type sh_builtin_func_t =$/;" t +sh_builtin_func_t r_readline/src/lib.rs /^pub type sh_builtin_func_t =$/;" t +sh_calloc lib/malloc/malloc.c /^sh_calloc (n, s, file, line)$/;" f +sh_canonpath builtins_rust/cd/src/lib.rs /^ fn sh_canonpath(path: *mut c_char, flags: i32) -> *mut c_char;$/;" f +sh_canonpath lib/sh/pathcanon.c /^sh_canonpath (path, flags)$/;" f +sh_canonpath r_bash/src/lib.rs /^ pub fn sh_canonpath($/;" f +sh_cfree lib/malloc/malloc.c /^sh_cfree (mem, file, line)$/;" f +sh_cget_func_t r_bash/src/lib.rs /^pub type sh_cget_func_t = ::core::option::Option ::std::os::raw::c_int/;" t +sh_charindex builtins/getopt.c /^static int sh_charindex;$/;" v typeref:typename:int file: +sh_chkwrite builtins/common.c /^sh_chkwrite (s)$/;" f +sh_chkwrite builtins_rust/alias/src/lib.rs /^ fn sh_chkwrite(_: libc::c_int) -> libc::c_int;$/;" f +sh_chkwrite builtins_rust/cd/src/lib.rs /^ fn sh_chkwrite(s: i32) -> i32;$/;" f +sh_chkwrite builtins_rust/complete/src/lib.rs /^ fn sh_chkwrite(i: i32) -> i32;$/;" f +sh_chkwrite builtins_rust/declare/src/lib.rs /^ fn sh_chkwrite(ret: i32) -> i32;$/;" f +sh_chkwrite builtins_rust/echo/src/lib.rs /^ fn sh_chkwrite(s: i32) -> i32;$/;" f +sh_chkwrite builtins_rust/fc/src/lib.rs /^ fn sh_chkwrite(s: i32) -> i32;$/;" f +sh_chkwrite builtins_rust/history/src/intercdep.rs /^ pub fn sh_chkwrite(s: c_int) -> c_int;$/;" f +sh_chkwrite builtins_rust/pushd/src/lib.rs /^ fn sh_chkwrite(i: i32) -> i32;$/;" f +sh_chkwrite builtins_rust/set/src/lib.rs /^ fn sh_chkwrite(_: i32) -> i32;$/;" f +sh_chkwrite builtins_rust/setattr/src/intercdep.rs /^ pub fn sh_chkwrite(s: c_int) -> c_int;$/;" f +sh_chkwrite builtins_rust/shopt/src/lib.rs /^ fn sh_chkwrite(_: i32) -> libc::c_int;$/;" f +sh_chkwrite builtins_rust/times/src/intercdep.rs /^ pub fn sh_chkwrite(s: c_int) -> c_int;$/;" f +sh_chkwrite builtins_rust/trap/src/intercdep.rs /^ pub fn sh_chkwrite(s: c_int) -> c_int;$/;" f +sh_chkwrite builtins_rust/type/src/lib.rs /^ fn sh_chkwrite(ret: i32) -> i32;$/;" f +sh_chkwrite builtins_rust/ulimit/src/lib.rs /^ fn sh_chkwrite(_: i32) -> i32;$/;" f +sh_chkwrite builtins_rust/umask/src/lib.rs /^ fn sh_chkwrite(s: i32) -> i32;$/;" f +sh_chkwrite r_bash/src/lib.rs /^ pub fn sh_chkwrite(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_closepipe general.c /^sh_closepipe (pv)$/;" f +sh_closepipe r_bash/src/lib.rs /^ pub fn sh_closepipe(arg1: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_closepipe r_glob/src/lib.rs /^ pub fn sh_closepipe(arg1: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_closepipe r_readline/src/lib.rs /^ pub fn sh_closepipe(arg1: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_contains_quotes lib/sh/shquote.c /^sh_contains_quotes (string)$/;" f +sh_contains_quotes r_bash/src/lib.rs /^ pub fn sh_contains_quotes(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +sh_contains_shell_metas lib/sh/shquote.c /^sh_contains_shell_metas (string)$/;" f +sh_contains_shell_metas r_bash/src/lib.rs /^ pub fn sh_contains_shell_metas(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int/;" f +sh_contains_shell_metas r_print_cmd/src/lib.rs /^ fn sh_contains_shell_metas(string:*const c_char)->c_int;$/;" f +sh_coproc execute_cmd.c /^Coproc sh_coproc = { 0, NO_PID, -1, -1, 0, 0, 0, 0, 0 };$/;" v typeref:typename:Coproc +sh_coproc r_bash/src/lib.rs /^ pub static mut sh_coproc: Coproc;$/;" v +sh_coproc r_glob/src/lib.rs /^ pub static mut sh_coproc: Coproc;$/;" v +sh_coproc r_readline/src/lib.rs /^ pub static mut sh_coproc: Coproc;$/;" v +sh_cunget_func_t r_bash/src/lib.rs /^pub type sh_cunget_func_t = ::core::option::Option<$/;" t +sh_curopt builtins/getopt.c /^static int sh_curopt;$/;" v typeref:typename:int file: +sh_double_quote builtins_rust/setattr/src/intercdep.rs /^ pub fn sh_double_quote(string: *const c_char) -> *mut c_char;$/;" f +sh_double_quote lib/sh/shquote.c /^sh_double_quote (string)$/;" f +sh_double_quote r_bash/src/lib.rs /^ pub fn sh_double_quote(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +sh_eaccess lib/sh/eaccess.c /^sh_eaccess (path, mode)$/;" f +sh_eaccess r_bash/src/lib.rs /^ pub fn sh_eaccess($/;" f +sh_erange builtins/common.c /^sh_erange (s, desc)$/;" f +sh_erange builtins_rust/break_1/src/lib.rs /^ fn sh_erange(s: *mut libc::c_char, desc: *mut libc::c_char);$/;" f +sh_erange builtins_rust/fc/src/lib.rs /^ fn sh_erange(s: *mut c_char, desc: *mut c_char);$/;" f +sh_erange builtins_rust/history/src/intercdep.rs /^ pub fn sh_erange(s: *mut c_char, desc: *mut c_char);$/;" f +sh_erange builtins_rust/pushd/src/lib.rs /^ fn sh_erange(str1: *mut c_char, str2: *mut c_char);$/;" f +sh_erange builtins_rust/shift/src/intercdep.rs /^ pub fn sh_erange(s: *mut c_char, desc: *mut c_char);$/;" f +sh_erange builtins_rust/ulimit/src/lib.rs /^ fn sh_erange(s: *mut libc::c_char, desc: *mut libc::c_char);$/;" f +sh_erange builtins_rust/umask/src/lib.rs /^ fn sh_erange(s: *mut c_char, desc: *mut c_char);$/;" f +sh_erange r_bash/src/lib.rs /^ pub fn sh_erange(arg1: *mut ::std::os::raw::c_char, arg2: *mut ::std::os::raw::c_char);$/;" f +sh_euidaccess lib/sh/eaccess.c /^sh_euidaccess (path, mode)$/;" f file: +sh_exit r_bash/src/lib.rs /^ pub fn sh_exit(arg1: ::std::os::raw::c_int);$/;" f +sh_exit shell.c /^sh_exit (s)$/;" f +sh_free lib/malloc/malloc.c /^sh_free (mem, file, line)$/;" f +sh_free_func_t r_bash/src/lib.rs /^pub type sh_free_func_t =$/;" t +sh_free_func_t r_glob/src/lib.rs /^pub type sh_free_func_t =$/;" t +sh_free_func_t r_readline/src/lib.rs /^pub type sh_free_func_t =$/;" t +sh_get_env_value lib/readline/shell.c /^sh_get_env_value (const char *varname)$/;" f typeref:typename:char * +sh_get_env_value r_bash/src/lib.rs /^ pub fn sh_get_env_value(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +sh_get_env_value variables.c /^sh_get_env_value (v)$/;" f +sh_get_home_dir lib/readline/shell.c /^sh_get_home_dir (void)$/;" f typeref:typename:char * +sh_get_home_dir variables.c /^sh_get_home_dir ()$/;" f typeref:typename:char * +sh_getopt builtins/getopt.c /^sh_getopt (argc, argv, optstring)$/;" f +sh_getopt builtins_rust/getopts/src/lib.rs /^ fn sh_getopt(argc: i32, argv: *const *mut c_char, optstring: *const c_char) -> i32;$/;" f +sh_getopt r_bash/src/lib.rs /^ pub fn sh_getopt($/;" f +sh_getopt_alloc_istate builtins/getopt.c /^sh_getopt_alloc_istate ()$/;" f typeref:typename:sh_getopt_state_t * +sh_getopt_alloc_istate r_bash/src/lib.rs /^ pub fn sh_getopt_alloc_istate() -> *mut sh_getopt_state_t;$/;" f +sh_getopt_dispose_istate builtins/getopt.c /^sh_getopt_dispose_istate (gs)$/;" f +sh_getopt_dispose_istate r_bash/src/lib.rs /^ pub fn sh_getopt_dispose_istate(arg1: *mut sh_getopt_state_t);$/;" f +sh_getopt_restore_istate builtins/getopt.c /^sh_getopt_restore_istate (state)$/;" f +sh_getopt_restore_istate r_bash/src/lib.rs /^ pub fn sh_getopt_restore_istate(arg1: *mut sh_getopt_state_t);$/;" f +sh_getopt_restore_state builtins/getopt.c /^sh_getopt_restore_state (argv)$/;" f +sh_getopt_restore_state builtins_rust/getopts/src/lib.rs /^ fn sh_getopt_restore_state(argv: *mut *mut c_char);$/;" f +sh_getopt_restore_state r_bash/src/lib.rs /^ pub fn sh_getopt_restore_state(arg1: *mut *mut ::std::os::raw::c_char);$/;" f +sh_getopt_save_istate builtins/getopt.c /^sh_getopt_save_istate ()$/;" f typeref:typename:sh_getopt_state_t * +sh_getopt_save_istate r_bash/src/lib.rs /^ pub fn sh_getopt_save_istate() -> *mut sh_getopt_state_t;$/;" f +sh_getopt_state builtins/getopt.h /^typedef struct sh_getopt_state$/;" s +sh_getopt_state r_bash/src/lib.rs /^pub struct sh_getopt_state {$/;" s +sh_getopt_state_t builtins/getopt.h /^} sh_getopt_state_t;$/;" t typeref:struct:sh_getopt_state +sh_getopt_state_t r_bash/src/lib.rs /^pub type sh_getopt_state_t = sh_getopt_state;$/;" t +sh_glist_func_t r_bash/src/lib.rs /^pub type sh_glist_func_t =$/;" t +sh_glist_func_t r_glob/src/lib.rs /^pub type sh_glist_func_t =$/;" t +sh_glist_func_t r_readline/src/lib.rs /^pub type sh_glist_func_t =$/;" t +sh_icpfunc_t r_bash/src/lib.rs /^pub type sh_icpfunc_t = ::core::option::Option<$/;" t +sh_icpfunc_t r_glob/src/lib.rs /^pub type sh_icpfunc_t = ::core::option::Option<$/;" t +sh_icpfunc_t r_readline/src/lib.rs /^pub type sh_icpfunc_t = ::core::option::Option<$/;" t +sh_icppfunc_t r_bash/src/lib.rs /^pub type sh_icppfunc_t = ::core::option::Option<$/;" t +sh_icppfunc_t r_glob/src/lib.rs /^pub type sh_icppfunc_t = ::core::option::Option<$/;" t +sh_icppfunc_t r_readline/src/lib.rs /^pub type sh_icppfunc_t = ::core::option::Option<$/;" t +sh_ignore_func_t r_bash/src/lib.rs /^pub type sh_ignore_func_t = ::core::option::Option<$/;" t +sh_ignore_func_t r_glob/src/lib.rs /^pub type sh_ignore_func_t = ::core::option::Option<$/;" t +sh_ignore_func_t r_readline/src/lib.rs /^pub type sh_ignore_func_t = ::core::option::Option<$/;" t +sh_imaxabs include/typemax.h /^# define sh_imaxabs(/;" d +sh_input_line_state_t r_bash/src/lib.rs /^pub type sh_input_line_state_t = _sh_input_line_state_t;$/;" t +sh_input_line_state_t shell.h /^} sh_input_line_state_t;$/;" t typeref:struct:_sh_input_line_state_t +sh_intfunc_t r_bash/src/lib.rs /^pub type sh_intfunc_t = ::core::option::Option<$/;" t +sh_intfunc_t r_glob/src/lib.rs /^pub type sh_intfunc_t = ::core::option::Option<$/;" t +sh_intfunc_t r_readline/src/lib.rs /^pub type sh_intfunc_t = ::core::option::Option<$/;" t +sh_invalidid builtins/common.c /^sh_invalidid (s)$/;" f +sh_invalidid builtins_rust/complete/src/lib.rs /^ fn sh_invalidid(value: *mut c_char);$/;" f +sh_invalidid builtins_rust/declare/src/lib.rs /^ fn sh_invalidid(value: *mut c_char);$/;" f +sh_invalidid builtins_rust/getopts/src/lib.rs /^ fn sh_invalidid(name: *mut c_char);$/;" f +sh_invalidid builtins_rust/mapfile/src/intercdep.rs /^ pub fn sh_invalidid(arg1: *mut c_char);$/;" f +sh_invalidid builtins_rust/printf/src/intercdep.rs /^ pub fn sh_invalidid(arg1: *mut c_char);$/;" f +sh_invalidid builtins_rust/read/src/intercdep.rs /^ pub fn sh_invalidid(arg1: *mut c_char);$/;" f +sh_invalidid builtins_rust/set/src/lib.rs /^ fn sh_invalidid(value: *mut libc::c_char);$/;" f +sh_invalidid builtins_rust/setattr/src/intercdep.rs /^ pub fn sh_invalidid(s: *mut c_char);$/;" f +sh_invalidid builtins_rust/wait/src/lib.rs /^ fn sh_invalidid(s: *mut c_char);$/;" f +sh_invalidid r_bash/src/lib.rs /^ pub fn sh_invalidid(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_invalidnum builtins/common.c /^sh_invalidnum (s)$/;" f +sh_invalidnum builtins_rust/caller/src/lib.rs /^ fn sh_invalidnum(s: *mut c_char);$/;" f +sh_invalidnum builtins_rust/printf/src/intercdep.rs /^ pub fn sh_invalidnum(s: *mut c_char) -> c_void;$/;" f +sh_invalidnum builtins_rust/pushd/src/lib.rs /^ fn sh_invalidnum(value: *mut c_char);$/;" f +sh_invalidnum builtins_rust/read/src/intercdep.rs /^ pub fn sh_invalidnum(arg1: *mut c_char);$/;" f +sh_invalidnum builtins_rust/ulimit/src/lib.rs /^ fn sh_invalidnum(arg1: *mut libc::c_char);$/;" f +sh_invalidnum r_bash/src/lib.rs /^ pub fn sh_invalidnum(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_invalidopt builtins/common.c /^sh_invalidopt (s)$/;" f +sh_invalidopt builtins_rust/complete/src/lib.rs /^ fn sh_invalidopt(value: *mut c_char);$/;" f +sh_invalidopt builtins_rust/declare/src/lib.rs /^ fn sh_invalidopt(value: *mut c_char);$/;" f +sh_invalidopt builtins_rust/pushd/src/lib.rs /^ fn sh_invalidopt(value: *mut c_char);$/;" f +sh_invalidopt builtins_rust/set/src/lib.rs /^ fn sh_invalidopt(value: *mut libc::c_char);$/;" f +sh_invalidopt r_bash/src/lib.rs /^ pub fn sh_invalidopt(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_invalidoptname builtins/common.c /^sh_invalidoptname (s)$/;" f +sh_invalidoptname builtins_rust/complete/src/lib.rs /^ fn sh_invalidoptname(value: *mut c_char);$/;" f +sh_invalidoptname builtins_rust/set/src/lib.rs /^ fn sh_invalidoptname(value: *mut libc::c_char);$/;" f +sh_invalidoptname builtins_rust/shopt/src/lib.rs /^ fn sh_invalidoptname(_: *mut libc::c_char);$/;" f +sh_invalidoptname r_bash/src/lib.rs /^ pub fn sh_invalidoptname(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_invalidsig builtins/common.c /^sh_invalidsig (s)$/;" f +sh_invalidsig builtins_rust/kill/src/intercdep.rs /^ pub fn sh_invalidsig(s: *mut c_char) -> c_void;$/;" f +sh_invalidsig builtins_rust/trap/src/intercdep.rs /^ pub fn sh_invalidsig(s: *mut c_char);$/;" f +sh_invalidsig r_bash/src/lib.rs /^ pub fn sh_invalidsig(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_iptrfunc_t r_bash/src/lib.rs /^pub type sh_iptrfunc_t = ::core::option::Option<$/;" t +sh_iptrfunc_t r_glob/src/lib.rs /^pub type sh_iptrfunc_t = ::core::option::Option<$/;" t +sh_iptrfunc_t r_readline/src/lib.rs /^pub type sh_iptrfunc_t = ::core::option::Option<$/;" t +sh_iv_item_func_t r_bash/src/lib.rs /^pub type sh_iv_item_func_t =$/;" t +sh_ivoidfunc_t r_bash/src/lib.rs /^pub type sh_ivoidfunc_t = ::core::option::Option ::std::os::raw::c_int/;" t +sh_ivoidfunc_t r_glob/src/lib.rs /^pub type sh_ivoidfunc_t = ::core::option::Option ::std::os::raw::c_int/;" t +sh_ivoidfunc_t r_readline/src/lib.rs /^pub type sh_ivoidfunc_t = ::core::option::Option ::std::os::raw::c_int/;" t +sh_job_map_func_t r_jobs/src/lib.rs /^pub type sh_job_map_func_t = unsafe extern "C" fn(*mut JOB, c_int, c_int, c_int) -> c_int;$/;" t +sh_load_func_t builtins_rust/enable/src/lib.rs /^pub type sh_load_func_t = unsafe extern "C" fn(*mut libc::c_char) -> libc::c_int;$/;" t +sh_load_func_t r_bash/src/lib.rs /^pub type sh_load_func_t = ::core::option::Option<$/;" t +sh_load_func_t r_glob/src/lib.rs /^pub type sh_load_func_t = ::core::option::Option<$/;" t +sh_load_func_t r_readline/src/lib.rs /^pub type sh_load_func_t = ::core::option::Option<$/;" t +sh_longjmp include/posixjmp.h /^# define sh_longjmp(/;" d +sh_longjmp lib/readline/posixjmp.h /^# define sh_longjmp(/;" d +sh_longjmp r_jobs/src/lib.rs /^macro_rules! sh_longjmp {$/;" M +sh_makepath builtins_rust/cd/src/lib.rs /^ fn sh_makepath(path: *const c_char, dir: *const c_char, flags: i32) -> *mut c_char;$/;" f +sh_makepath builtins_rust/type/src/lib.rs /^ fn sh_makepath($/;" f +sh_makepath lib/sh/makepath.c /^sh_makepath (path, dir, flags)$/;" f +sh_makepath r_bash/src/lib.rs /^ pub fn sh_makepath($/;" f +sh_malloc lib/malloc/malloc.c /^sh_malloc (bytes, file, line)$/;" f +sh_mbsnlen lib/sh/shmbchar.c /^sh_mbsnlen(src, srclen, maxlen)$/;" f +sh_mbsnlen r_bash/src/lib.rs /^ pub fn sh_mbsnlen($/;" f +sh_memalign lib/malloc/malloc.c /^sh_memalign (alignment, size, file, line)$/;" f +sh_mkdoublequoted lib/sh/shquote.c /^sh_mkdoublequoted (s, slen, flags)$/;" f +sh_mkdoublequoted r_bash/src/lib.rs /^ pub fn sh_mkdoublequoted($/;" f +sh_mktmpdir lib/sh/tmpfile.c /^sh_mktmpdir (nameroot, flags)$/;" f +sh_mktmpdir r_bash/src/lib.rs /^ pub fn sh_mktmpdir($/;" f +sh_mktmpfd lib/sh/tmpfile.c /^sh_mktmpfd (nameroot, flags, namep)$/;" f +sh_mktmpfd r_bash/src/lib.rs /^ pub fn sh_mktmpfd($/;" f +sh_mktmpfp builtins_rust/fc/src/lib.rs /^ fn sh_mktmpfp(nameroot: *mut c_char, flags: i32, namep: &mut *mut c_char) -> *mut libc::FILE/;" f +sh_mktmpfp lib/sh/tmpfile.c /^sh_mktmpfp (nameroot, flags, namep)$/;" f +sh_mktmpname lib/sh/tmpfile.c /^sh_mktmpname (nameroot, flags)$/;" f +sh_mktmpname r_bash/src/lib.rs /^ pub fn sh_mktmpname($/;" f +sh_modcase lib/sh/casemod.c /^sh_modcase (string, pat, flags)$/;" f +sh_modcase r_bash/src/lib.rs /^ pub fn sh_modcase($/;" f +sh_msg_func_t r_bash/src/lib.rs /^pub type sh_msg_func_t = ::core::option::Option<$/;" t +sh_msg_func_t r_glob/src/lib.rs /^pub type sh_msg_func_t = ::core::option::Option<$/;" t +sh_msg_func_t r_readline/src/lib.rs /^pub type sh_msg_func_t = ::core::option::Option<$/;" t +sh_needarg builtins/common.c /^sh_needarg (s)$/;" f +sh_needarg builtins_rust/hash/src/lib.rs /^ fn sh_needarg(s: *mut c_char);$/;" f +sh_needarg builtins_rust/kill/src/intercdep.rs /^ pub fn sh_needarg(s: *mut c_char) -> c_void;$/;" f +sh_needarg r_bash/src/lib.rs /^ pub fn sh_needarg(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_neednumarg builtins/common.c /^sh_neednumarg (s)$/;" f +sh_neednumarg r_bash/src/lib.rs /^ pub fn sh_neednumarg(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_nojobs builtins/common.c /^sh_nojobs (s)$/;" f +sh_nojobs builtins_rust/fg_bg/src/lib.rs /^ fn sh_nojobs(str: *mut c_char);$/;" f +sh_nojobs builtins_rust/suspend/src/intercdep.rs /^ pub fn sh_nojobs(s: *mut c_char);$/;" f +sh_nojobs r_bash/src/lib.rs /^ pub fn sh_nojobs(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_notbuiltin builtins/common.c /^sh_notbuiltin (s)$/;" f +sh_notbuiltin builtins_rust/builtin/src/intercdep.rs /^ fn sh_notbuiltin(_: *mut libc::c_char);$/;" f +sh_notbuiltin builtins_rust/enable/src/lib.rs /^ fn sh_notbuiltin(_: *mut libc::c_char);$/;" f +sh_notbuiltin r_bash/src/lib.rs /^ pub fn sh_notbuiltin(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_notfound builtins/common.c /^sh_notfound (s)$/;" f +sh_notfound builtins_rust/alias/src/lib.rs /^ fn sh_notfound(_: *mut libc::c_char);$/;" f +sh_notfound builtins_rust/command/src/lib.rs /^ fn sh_notfound(_: *mut libc::c_char);$/;" f +sh_notfound builtins_rust/declare/src/lib.rs /^ fn sh_notfound(name: *mut c_char);$/;" f +sh_notfound builtins_rust/exec/src/lib.rs /^ fn sh_notfound(s: *mut c_char);$/;" f +sh_notfound builtins_rust/hash/src/lib.rs /^ fn sh_notfound(s: *mut c_char);$/;" f +sh_notfound builtins_rust/type/src/lib.rs /^ fn sh_notfound(name: *mut libc::c_char);$/;" f +sh_notfound r_bash/src/lib.rs /^ pub fn sh_notfound(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_obj_cache_t include/ocache.h /^} sh_obj_cache_t;$/;" t typeref:struct:objcache +sh_obj_cache_t r_bash/src/lib.rs /^pub type sh_obj_cache_t = objcache;$/;" t +sh_openpipe general.c /^sh_openpipe (pv)$/;" f +sh_openpipe r_bash/src/lib.rs /^ pub fn sh_openpipe(arg1: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_openpipe r_glob/src/lib.rs /^ pub fn sh_openpipe(arg1: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_openpipe r_readline/src/lib.rs /^ pub fn sh_openpipe(arg1: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_optarg builtins/getopt.c /^char *sh_optarg = 0;$/;" v typeref:typename:char * +sh_optarg builtins_rust/getopts/src/lib.rs /^ static sh_optarg: *mut c_char;$/;" v +sh_optarg r_bash/src/lib.rs /^ pub static mut sh_optarg: *mut ::std::os::raw::c_char;$/;" v +sh_opterr builtins/getopt.c /^int sh_opterr = 1;$/;" v typeref:typename:int +sh_opterr builtins_rust/getopts/src/lib.rs /^ static mut sh_opterr: i32;$/;" v +sh_opterr r_bash/src/lib.rs /^ pub static mut sh_opterr: ::std::os::raw::c_int;$/;" v +sh_optind builtins/getopt.c /^int sh_optind = 0;$/;" v typeref:typename:int +sh_optind builtins_rust/getopts/src/lib.rs /^ static mut sh_optind: i32;$/;" v +sh_optind r_bash/src/lib.rs /^ pub static mut sh_optind: ::std::os::raw::c_int;$/;" v +sh_optopt builtins/getopt.c /^int sh_optopt = '?';$/;" v typeref:typename:int +sh_optopt builtins_rust/getopts/src/lib.rs /^ static sh_optopt: i32;$/;" v +sh_optopt r_bash/src/lib.rs /^ pub static mut sh_optopt: ::std::os::raw::c_int;$/;" v +sh_parser_state_t r_bash/src/lib.rs /^pub type sh_parser_state_t = _sh_parser_state_t;$/;" t +sh_parser_state_t shell.h /^} sh_parser_state_t;$/;" t typeref:struct:_sh_parser_state_t +sh_physpath builtins_rust/cd/src/lib.rs /^ fn sh_physpath(path: *mut c_char, flags: i32) -> *mut c_char;$/;" f +sh_physpath lib/sh/pathphys.c /^sh_physpath (path, flags)$/;" f +sh_physpath r_bash/src/lib.rs /^ pub fn sh_physpath($/;" f +sh_quote_reusable lib/sh/shquote.c /^sh_quote_reusable (s, flags)$/;" f +sh_quote_reusable r_bash/src/lib.rs /^ pub fn sh_quote_reusable($/;" f +sh_readonly builtins/common.c /^sh_readonly (s)$/;" f +sh_readonly builtins_rust/declare/src/lib.rs /^ fn sh_readonly(name: *const c_char);$/;" f +sh_readonly r_bash/src/lib.rs /^ pub fn sh_readonly(arg1: *const ::std::os::raw::c_char);$/;" f +sh_realloc lib/malloc/malloc.c /^sh_realloc (ptr, size, file, line)$/;" f +sh_realpath lib/sh/pathphys.c /^sh_realpath (pathname, resolved)$/;" f +sh_realpath r_bash/src/lib.rs /^ pub fn sh_realpath($/;" f +sh_regmatch lib/sh/shmatch.c /^sh_regmatch (string, pattern, flags)$/;" f +sh_regmatch r_bash/src/lib.rs /^ pub fn sh_regmatch($/;" f +sh_resetsig_func_t r_bash/src/lib.rs /^pub type sh_resetsig_func_t =$/;" t +sh_resetsig_func_t r_glob/src/lib.rs /^pub type sh_resetsig_func_t =$/;" t +sh_resetsig_func_t r_readline/src/lib.rs /^pub type sh_resetsig_func_t =$/;" t +sh_restricted builtins/common.c /^sh_restricted (s)$/;" f +sh_restricted builtins_rust/cd/src/lib.rs /^ fn sh_restricted(s: *mut c_char);$/;" f +sh_restricted builtins_rust/command/src/lib.rs /^ fn sh_restricted(_: *mut libc::c_char);$/;" f +sh_restricted builtins_rust/enable/src/lib.rs /^ fn sh_restricted(_: *mut libc::c_char);$/;" f +sh_restricted builtins_rust/hash/src/lib.rs /^ fn sh_restricted(s: *mut c_char);$/;" f +sh_restricted builtins_rust/history/src/intercdep.rs /^ pub fn sh_restricted(s: *mut c_char) -> c_void;$/;" f +sh_restricted builtins_rust/source/src/lib.rs /^ fn sh_restricted(word: *mut c_char);$/;" f +sh_restricted r_bash/src/lib.rs /^ pub fn sh_restricted(arg1: *mut ::std::os::raw::c_char);$/;" f +sh_seedrand lib/sh/tmpfile.c /^sh_seedrand ()$/;" f typeref:typename:void file: +sh_set_lines_and_columns lib/readline/shell.c /^sh_set_lines_and_columns (int lines, int cols)$/;" f typeref:typename:void +sh_set_lines_and_columns r_bash/src/lib.rs /^ pub fn sh_set_lines_and_columns(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int);$/;" f +sh_set_lines_and_columns variables.c /^sh_set_lines_and_columns (lines, cols)$/;" f +sh_setclexec general.c /^sh_setclexec (fd)$/;" f +sh_setclexec r_bash/src/lib.rs /^ pub fn sh_setclexec(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_setclexec r_glob/src/lib.rs /^ pub fn sh_setclexec(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_setclexec r_readline/src/lib.rs /^ pub fn sh_setclexec(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_setlinebuf lib/sh/setlinebuf.c /^sh_setlinebuf (stream)$/;" f +sh_single_quote builtins_rust/alias/src/lib.rs /^ fn sh_single_quote(_: *const libc::c_char) -> *mut libc::c_char;$/;" f +sh_single_quote builtins_rust/complete/src/lib.rs /^ fn sh_single_quote(str: *mut c_char) -> *mut c_char;$/;" f +sh_single_quote builtins_rust/mapfile/src/intercdep.rs /^ pub fn sh_single_quote(s: *mut c_char) -> *mut c_char;$/;" f +sh_single_quote builtins_rust/trap/src/intercdep.rs /^ pub fn sh_single_quote(s: *const c_char) -> *mut c_char;$/;" f +sh_single_quote builtins_rust/type/src/lib.rs /^ fn sh_single_quote(quote: *const libc::c_char) -> *mut libc::c_char;$/;" f +sh_single_quote lib/readline/shell.c /^sh_single_quote (char *string)$/;" f typeref:typename:char * +sh_single_quote lib/sh/shquote.c /^sh_single_quote (string)$/;" f +sh_single_quote r_bash/src/lib.rs /^ pub fn sh_single_quote(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +sh_single_quote r_print_cmd/src/lib.rs /^ fn sh_single_quote(string:*mut c_char)->*mut c_char;$/;" f +sh_stat lib/sh/eaccess.c /^sh_stat (path, finfo)$/;" f +sh_stataccess lib/sh/eaccess.c /^sh_stataccess (path, mode)$/;" f file: +sh_string_func_t r_bash/src/lib.rs /^pub type sh_string_func_t = ::core::option::Option<$/;" t +sh_string_func_t r_glob/src/lib.rs /^pub type sh_string_func_t = ::core::option::Option<$/;" t +sh_string_func_t r_readline/src/lib.rs /^pub type sh_string_func_t = ::core::option::Option<$/;" t +sh_strlist_map_func_t r_bash/src/lib.rs /^pub type sh_strlist_map_func_t = ::core::option::Option<$/;" t +sh_sv_func_t r_bash/src/lib.rs /^pub type sh_sv_func_t =$/;" t +sh_sv_func_t r_glob/src/lib.rs /^pub type sh_sv_func_t =$/;" t +sh_sv_func_t r_readline/src/lib.rs /^pub type sh_sv_func_t =$/;" t +sh_syntabsiz r_bash/src/lib.rs /^ pub static mut sh_syntabsiz: ::std::os::raw::c_int;$/;" v +sh_syntaxtab r_bash/src/lib.rs /^ pub static mut sh_syntaxtab: [::std::os::raw::c_int; 0usize];$/;" v +sh_ttyerror builtins/common.c /^sh_ttyerror (set)$/;" f +sh_ttyerror builtins_rust/read/src/intercdep.rs /^ pub fn sh_ttyerror(arg1: c_int);$/;" f +sh_ttyerror r_bash/src/lib.rs /^ pub fn sh_ttyerror(arg1: ::std::os::raw::c_int);$/;" f +sh_un_double_quote lib/sh/shquote.c /^sh_un_double_quote (string)$/;" f +sh_un_double_quote r_bash/src/lib.rs /^ pub fn sh_un_double_quote(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +sh_unload_func_t builtins_rust/enable/src/lib.rs /^pub type sh_unload_func_t = unsafe extern "C" fn(*mut libc::c_char) -> ();$/;" t +sh_unload_func_t r_bash/src/lib.rs /^pub type sh_unload_func_t =$/;" t +sh_unload_func_t r_glob/src/lib.rs /^pub type sh_unload_func_t =$/;" t +sh_unload_func_t r_readline/src/lib.rs /^pub type sh_unload_func_t =$/;" t +sh_unset_nodelay_mode general.c /^sh_unset_nodelay_mode (fd)$/;" f +sh_unset_nodelay_mode lib/readline/shell.c /^sh_unset_nodelay_mode (int fd)$/;" f typeref:typename:int +sh_unset_nodelay_mode r_bash/src/lib.rs /^ pub fn sh_unset_nodelay_mode(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_unset_nodelay_mode r_glob/src/lib.rs /^ pub fn sh_unset_nodelay_mode(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_validfd builtins_rust/mapfile/src/intercdep.rs /^ pub fn sh_validfd(arg1: c_int) -> c_int;$/;" f +sh_validfd builtins_rust/read/src/intercdep.rs /^ pub fn sh_validfd(arg1: c_int) -> c_int;$/;" f +sh_validfd general.c /^sh_validfd (fd)$/;" f +sh_validfd r_bash/src/lib.rs /^ pub fn sh_validfd(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_validfd r_glob/src/lib.rs /^ pub fn sh_validfd(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_validfd r_print_cmd/src/lib.rs /^ fn sh_validfd(fd:c_int)->c_int;$/;" f +sh_validfd r_readline/src/lib.rs /^ pub fn sh_validfd(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sh_valloc lib/malloc/malloc.c /^sh_valloc (size, file, line)$/;" f +sh_var_assign_func_t builtins_rust/mapfile/src/intercdep.rs /^ pub type sh_var_assign_func_t = ::std::option::Option<$/;" t +sh_var_assign_func_t builtins_rust/printf/src/intercdep.rs /^ pub type sh_var_assign_func_t = ::std::option::Option<$/;" t +sh_var_assign_func_t builtins_rust/read/src/intercdep.rs /^ pub type sh_var_assign_func_t = ::std::option::Option<$/;" t +sh_var_assign_func_t builtins_rust/set/src/lib.rs /^type sh_var_assign_func_t = unsafe extern "C" fn($/;" t +sh_var_assign_func_t builtins_rust/setattr/src/intercdep.rs /^ pub type sh_var_assign_func_t = ::std::option::Option<$/;" t +sh_var_assign_func_t r_bash/src/lib.rs /^pub type sh_var_assign_func_t = ::core::option::Option<$/;" t +sh_var_map_func_t r_bash/src/lib.rs /^pub type sh_var_map_func_t =$/;" t +sh_var_value_func_t builtins_rust/mapfile/src/intercdep.rs /^pub type sh_var_value_func_t =$/;" t +sh_var_value_func_t builtins_rust/printf/src/intercdep.rs /^pub type sh_var_value_func_t =$/;" t +sh_var_value_func_t builtins_rust/read/src/intercdep.rs /^pub type sh_var_value_func_t =$/;" t +sh_var_value_func_t builtins_rust/set/src/lib.rs /^type sh_var_value_func_t = unsafe extern "C" fn(_: *mut SHELL_VAR) -> *mut SHELL_VAR;$/;" t +sh_var_value_func_t builtins_rust/setattr/src/intercdep.rs /^pub type sh_var_value_func_t =$/;" t +sh_var_value_func_t r_bash/src/lib.rs /^pub type sh_var_value_func_t =$/;" t +sh_vcpfunc_t r_bash/src/lib.rs /^pub type sh_vcpfunc_t =$/;" t +sh_vcpfunc_t r_glob/src/lib.rs /^pub type sh_vcpfunc_t =$/;" t +sh_vcpfunc_t r_readline/src/lib.rs /^pub type sh_vcpfunc_t =$/;" t +sh_vcppfunc_t r_bash/src/lib.rs /^pub type sh_vcppfunc_t =$/;" t +sh_vcppfunc_t r_glob/src/lib.rs /^pub type sh_vcppfunc_t =$/;" t +sh_vcppfunc_t r_readline/src/lib.rs /^pub type sh_vcppfunc_t =$/;" t +sh_vintfunc_t r_bash/src/lib.rs /^pub type sh_vintfunc_t = ::core::option::Option;$/;" t +sh_voidfunc_t r_glob/src/lib.rs /^pub type sh_voidfunc_t = ::core::option::Option;$/;" t +sh_voidfunc_t r_readline/src/lib.rs /^pub type sh_voidfunc_t = ::core::option::Option;$/;" t +sh_vptrfunc_t builtins_rust/kill/src/intercdep.rs /^pub type sh_vptrfunc_t = *mut fn();$/;" t +sh_vptrfunc_t builtins_rust/setattr/src/intercdep.rs /^pub type sh_vptrfunc_t = *mut fn();$/;" t +sh_vptrfunc_t r_bash/src/lib.rs /^pub type sh_vptrfunc_t =$/;" t +sh_vptrfunc_t r_glob/src/lib.rs /^pub type sh_vptrfunc_t =$/;" t +sh_vptrfunc_t r_readline/src/lib.rs /^pub type sh_vptrfunc_t =$/;" t +sh_wassign_func_t r_bash/src/lib.rs /^pub type sh_wassign_func_t = ::core::option::Option<$/;" t +sh_wassign_func_t r_glob/src/lib.rs /^pub type sh_wassign_func_t = ::core::option::Option<$/;" t +sh_wassign_func_t r_readline/src/lib.rs /^pub type sh_wassign_func_t = ::core::option::Option<$/;" t +sh_wdesc_func_t r_bash/src/lib.rs /^pub type sh_wdesc_func_t =$/;" t +sh_wdesc_func_t r_glob/src/lib.rs /^pub type sh_wdesc_func_t =$/;" t +sh_wdesc_func_t r_readline/src/lib.rs /^pub type sh_wdesc_func_t =$/;" t +sh_wlist_func_t r_bash/src/lib.rs /^pub type sh_wlist_func_t =$/;" t +sh_wlist_func_t r_glob/src/lib.rs /^pub type sh_wlist_func_t =$/;" t +sh_wlist_func_t r_readline/src/lib.rs /^pub type sh_wlist_func_t =$/;" t +sh_wrerror builtins/common.c /^sh_wrerror ()$/;" f typeref:typename:void +sh_wrerror builtins_rust/fc/src/lib.rs /^ fn sh_wrerror();$/;" f +sh_wrerror builtins_rust/printf/src/intercdep.rs /^ pub fn sh_wrerror() -> c_void;$/;" f +sh_wrerror r_bash/src/lib.rs /^ pub fn sh_wrerror();$/;" f +sh_xfree xmalloc.c /^sh_xfree (string, file, line)$/;" f +sh_xmalloc r_jobs/src/lib.rs /^ fn sh_xmalloc($/;" f +sh_xmalloc xmalloc.c /^sh_xmalloc (bytes, file, line)$/;" f +sh_xrealloc r_jobs/src/lib.rs /^ fn sh_xrealloc($/;" f +sh_xrealloc xmalloc.c /^sh_xrealloc (pointer, bytes, file, line)$/;" f +shared vendor/futures-util/src/future/future/mod.rs /^ fn shared(self) -> Shared$/;" P interface:FutureExt +shared vendor/futures-util/src/future/future/mod.rs /^mod shared;$/;" n +shared vendor/winapi/src/lib.rs /^pub mod shared;$/;" n +shared_future_that_wakes_itself_until_pending_is_returned vendor/futures/tests/future_shared.rs /^fn shared_future_that_wakes_itself_until_pending_is_returned() {$/;" f +shared_integral vendor/nix/src/sys/resource.rs /^ pub fn shared_integral(&self) -> c_long {$/;" P implementation:Usage +shared_library_fullname lib/intl/relocatable.c /^static char *shared_library_fullname;$/;" v typeref:typename:char * file: +shaseg lib/malloc/alloca.c /^ long shaseg:32; \/* Size of increments to stack. *\/$/;" m struct:stack_control_header typeref:typename:long:32 file: +shell builtins_rust/ulimit/src/lib.rs /^ shell: *mut libc::c_char,$/;" m struct:user_info +shell r_bash/src/lib.rs /^ pub shell: *mut ::std::os::raw::c_char,$/;" m struct:user_info +shell shell.h /^ char *shell; \/* shell from the password file *\/$/;" m struct:user_info typeref:typename:char * +shell.o Makefile.in /^shell.o: $(HIST_LIBSRC)\/history.h $(HIST_LIBSRC)\/rlstdc.h$/;" t +shell.o Makefile.in /^shell.o: $(RL_LIBSRC)\/keymaps.h $(RL_LIBSRC)\/chardefs.h$/;" t +shell.o Makefile.in /^shell.o: $(RL_LIBSRC)\/readline.h $(RL_LIBSRC)\/rlstdc.h$/;" t +shell.o Makefile.in /^shell.o: $(RL_LIBSRC)\/rltypedefs.h$/;" t +shell.o Makefile.in /^shell.o: $(TILDE_LIBSRC)\/tilde.h$/;" t +shell.o Makefile.in /^shell.o: $(srcdir)\/config-top.h$/;" t +shell.o Makefile.in /^shell.o: ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h assoc.h alias.h$/;" t +shell.o Makefile.in /^shell.o: ${GLOB_LIBSRC}\/strmatch.h ${BASHINCDIR}\/posixtime.h ${BASHINCDIR}\/posixwait.h$/;" t +shell.o Makefile.in /^shell.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +shell.o Makefile.in /^shell.o: config.h bashtypes.h ${BASHINCDIR}\/posixstat.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h/;" t +shell.o Makefile.in /^shell.o: flags.h trap.h mailcheck.h builtins.h $(DEFSRC)\/common.h$/;" t +shell.o Makefile.in /^shell.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +shell.o Makefile.in /^shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h bashline.h$/;" t +shell.o Makefile.in /^shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h$/;" t +shell.o Makefile.in /^shell.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +shell.o Makefile.in /^shell.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\//;" t +shell.o lib/readline/Makefile.in /^shell.o: ${BUILD_DIR}\/config.h ansi_stdlib.h$/;" t +shell.o lib/readline/Makefile.in /^shell.o: rlshell.h$/;" t +shell.o lib/readline/Makefile.in /^shell.o: shell.c$/;" t +shell.o lib/readline/Makefile.in /^shell.o: xmalloc.h $/;" t +shell_break_chars builtins_rust/complete/src/lib.rs /^unsafe fn shell_break_chars() -> *const c_char {$/;" f +shell_break_chars syntax.h /^#define shell_break_chars /;" d +shell_builtin_compare builtins/common.c /^shell_builtin_compare (sbp1, sbp2)$/;" f file: +shell_builtins builtins_rust/common/src/lib.rs /^ static shell_builtins: *mut builtin;$/;" v +shell_builtins builtins_rust/enable/src/lib.rs /^ static mut shell_builtins: *mut builtin;$/;" v +shell_builtins builtins_rust/help/src/lib.rs /^ static shell_builtins: *mut builtin;$/;" v +shell_builtins r_bash/src/lib.rs /^ pub static mut shell_builtins: *mut builtin;$/;" v +shell_command parse.y /^shell_command: for_command$/;" l +shell_comment bashhist.c /^shell_comment (line)$/;" f file: +shell_comment r_bashhist/src/lib.rs /^unsafe extern "C" fn shell_comment(mut line: *mut c_char) -> c_int {$/;" f +shell_compatibility_level builtins_rust/declare/src/lib.rs /^ static mut shell_compatibility_level: i32;$/;" v +shell_compatibility_level builtins_rust/hash/src/lib.rs /^ static shell_compatibility_level: i32;$/;" v +shell_compatibility_level builtins_rust/setattr/src/intercdep.rs /^ pub static mut shell_compatibility_level: c_int;$/;" v +shell_compatibility_level builtins_rust/shopt/src/lib.rs /^ static mut shell_compatibility_level: i32;$/;" v +shell_compatibility_level builtins_rust/source/src/lib.rs /^ static shell_compatibility_level: i32;$/;" v +shell_compatibility_level r_bash/src/lib.rs /^ pub static mut shell_compatibility_level: ::std::os::raw::c_int;$/;" v +shell_compatibility_level r_jobs/src/lib.rs /^ static mut shell_compatibility_level: c_int;$/;" v +shell_compatibility_level version.c /^int shell_compatibility_level = DEFAULT_COMPAT_LEVEL;$/;" v typeref:typename:int +shell_control_structure execute_cmd.c /^shell_control_structure (type)$/;" f file: +shell_environment r_bash/src/lib.rs /^ pub static mut shell_environment: *mut *mut ::std::os::raw::c_char;$/;" v +shell_environment shell.c /^char **shell_environment;$/;" v typeref:typename:char ** +shell_eof_token r_bash/src/lib.rs /^ pub static mut shell_eof_token: ::std::os::raw::c_int;$/;" v +shell_execve builtins_rust/exec/src/lib.rs /^ fn shell_execve(command: *mut c_char, args: *mut *mut c_char, env: *mut *mut c_char) -> i32;$/;" f +shell_execve execute_cmd.c /^shell_execve (command, args, env)$/;" f +shell_execve r_bash/src/lib.rs /^ pub fn shell_execve($/;" f +shell_exp_chars syntax.h /^# define shell_exp_chars /;" d +shell_expand_line bashline.c /^shell_expand_line (count, ignore)$/;" f file: +shell_expand_word_list subst.c /^shell_expand_word_list (tlist, eflags)$/;" f file: +shell_flags flags.c /^const struct flags_alist shell_flags[] = {$/;" v typeref:typename:const struct flags_alist[] +shell_flags r_bash/src/lib.rs /^ pub static mut shell_flags: [flags_alist; 0usize];$/;" v +shell_function_defs variables.c /^HASH_TABLE *shell_function_defs = (HASH_TABLE *)NULL;$/;" v typeref:typename:HASH_TABLE * +shell_functions r_bash/src/lib.rs /^ pub static mut shell_functions: *mut HASH_TABLE;$/;" v +shell_functions variables.c /^HASH_TABLE *shell_functions = (HASH_TABLE *)NULL;$/;" v typeref:typename:HASH_TABLE * +shell_glob_chars syntax.h /^#define shell_glob_chars /;" d +shell_glob_filename pathexp.c /^shell_glob_filename (pathname, qflags)$/;" f +shell_glob_filename r_bash/src/lib.rs /^ pub fn shell_glob_filename($/;" f +shell_initialize shell.c /^shell_initialize ()$/;" f typeref:typename:void file: +shell_initialized r_bash/src/lib.rs /^ pub static mut shell_initialized: ::std::os::raw::c_int;$/;" v +shell_initialized shell.c /^int shell_initialized = 0;$/;" v typeref:typename:int +shell_is_restricted builtins_rust/shopt/src/lib.rs /^ fn shell_is_restricted(_: *mut libc::c_char) -> i32;$/;" f +shell_is_restricted r_bash/src/lib.rs /^ pub fn shell_is_restricted(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +shell_is_restricted shell.c /^shell_is_restricted (name)$/;" f +shell_level r_bash/src/lib.rs /^ pub static mut shell_level: ::std::os::raw::c_int;$/;" v +shell_level r_jobs/src/lib.rs /^ static mut shell_level: c_int;$/;" v +shell_level variables.c /^int shell_level = 0;$/;" v typeref:typename:int +shell_ltchars jobs.c /^static struct ltchars shell_ltchars;$/;" v typeref:struct:ltchars file: +shell_meta_chars syntax.h /^#define shell_meta_chars /;" d +shell_name builtins_rust/shopt/src/lib.rs /^ static mut shell_name: *mut libc::c_char;$/;" v +shell_name r_bash/src/lib.rs /^ pub static mut shell_name: *mut ::std::os::raw::c_char;$/;" v +shell_name shell.c /^char *shell_name = (char *)NULL;$/;" v typeref:typename:char * +shell_name support/utshellversion.c /^char *shell_name = "rash";$/;" v typeref:typename:char * +shell_pgrp builtins_rust/suspend/src/intercdep.rs /^ pub static mut shell_pgrp: libc::pid_t;$/;" v +shell_pgrp jobs.c /^pid_t shell_pgrp = NO_PID;$/;" v typeref:typename:pid_t +shell_pgrp r_bash/src/lib.rs /^ pub static mut shell_pgrp: pid_t;$/;" v +shell_pgrp r_jobs/src/lib.rs /^pub static mut shell_pgrp:pid_t = -1 as c_int; $/;" v +shell_quote_chars syntax.h /^#define shell_quote_chars /;" d +shell_reinitialize shell.c /^shell_reinitialize ()$/;" f typeref:typename:void file: +shell_reinitialized shell.c /^static int shell_reinitialized = 0;$/;" v typeref:typename:int file: +shell_script_filename shell.c /^char *shell_script_filename; \/* shell script *\/$/;" v typeref:typename:char * +shell_start_time builtins_rust/printf/src/intercdep.rs /^ pub static shell_start_time: libc::time_t;$/;" v +shell_start_time shell.c /^time_t shell_start_time;$/;" v typeref:typename:time_t +shell_tchars jobs.c /^static struct tchars shell_tchars;$/;" v typeref:struct:tchars file: +shell_tty jobs.c /^int shell_tty = -1;$/;" v typeref:typename:int +shell_tty nojobs.c /^int shell_tty = -1;$/;" v typeref:typename:int +shell_tty r_jobs/src/lib.rs /^pub static mut shell_tty:c_int = -1;$/;" v +shell_tty_info jobs.c /^static TTYSTRUCT shell_tty_info;$/;" v typeref:typename:TTYSTRUCT file: +shell_tty_info nojobs.c /^static TTYSTRUCT shell_tty_info;$/;" v typeref:typename:TTYSTRUCT file: +shell_tty_info r_jobs/src/lib.rs /^static mut shell_tty_info: libc::termios = libc::termios {$/;" v +shell_variables builtins_rust/declare/src/lib.rs /^ static shell_variables: *mut VAR_CONTEXT;$/;" v +shell_variables r_bash/src/lib.rs /^ pub static mut shell_variables: *mut VAR_CONTEXT;$/;" v +shell_variables variables.c /^VAR_CONTEXT *shell_variables = (VAR_CONTEXT *)NULL;$/;" v typeref:typename:VAR_CONTEXT * +shell_version_string r_bash/src/lib.rs /^ pub fn shell_version_string() -> *mut ::std::os::raw::c_char;$/;" f +shell_version_string version.c /^shell_version_string ()$/;" f typeref:typename:char * +shellapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "shellapi")] pub mod shellapi;$/;" n +shellblank syntax.h /^#define shellblank(/;" d +shellbreak syntax.h /^#define shellbreak(/;" d +shellexp syntax.h /^# define shellexp(/;" d +shellmeta syntax.h /^#define shellmeta(/;" d +shellquote syntax.h /^#define shellquote(/;" d +shellscalingapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "shellscalingapi")] pub mod shellscalingapi;$/;" n +shellstart shell.c /^struct timeval shellstart;$/;" v typeref:struct:timeval +shellxquote syntax.h /^#define shellxquote(/;" d +shgrow lib/malloc/alloca.c /^ long shgrow:32; \/* Number of times stack has grown. *\/$/;" m struct:stack_control_header typeref:typename:long:32 file: +shhwm lib/malloc/alloca.c /^ long shhwm:32; \/* High water mark of stack. *\/$/;" m struct:stack_control_header typeref:typename:long:32 file: +shift r_bash/src/lib.rs /^ pub shift: ::std::os::raw::c_int,$/;" m struct:timex +shift r_readline/src/lib.rs /^ pub shift: ::std::os::raw::c_int,$/;" m struct:timex +shift vendor/memchr/src/memmem/twoway.rs /^ shift: Shift,$/;" m struct:TwoWay +shift.o builtins/Makefile.in /^shift.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +shift.o builtins/Makefile.in /^shift.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +shift.o builtins/Makefile.in /^shift.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +shift.o builtins/Makefile.in /^shift.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h /;" t +shift.o builtins/Makefile.in /^shift.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +shift.o builtins/Makefile.in /^shift.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +shift.o builtins/Makefile.in /^shift.o: ..\/pathnames.h$/;" t +shift.o builtins/Makefile.in /^shift.o: shift.def$/;" t +shift_args builtins/common.c /^shift_args (times)$/;" f +shift_args builtins_rust/shift/src/intercdep.rs /^ pub fn shift_args(times: c_int);$/;" f +shift_args r_bash/src/lib.rs /^ pub fn shift_args(arg1: ::std::os::raw::c_int);$/;" f +shlobj vendor/winapi/src/um/mod.rs /^#[cfg(feature = "shlobj")] pub mod shlobj;$/;" n +shm_create_largepage vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn shm_create_largepage($/;" f +shm_open vendor/libc/src/fuchsia/mod.rs /^ pub fn shm_open(name: *const c_char, oflag: ::c_int, mode: mode_t) -> ::c_int;$/;" f +shm_open vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn shm_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::c_int;$/;" f +shm_open vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn shm_open(name: *const ::c_char, oflag: ::c_int, mode: ::mode_t) -> ::c_int;$/;" f +shm_open vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn shm_open(name: *const ::c_char, oflag: ::c_int, mode: ::mode_t) -> ::c_int;$/;" f +shm_open vendor/libc/src/unix/haiku/mod.rs /^ pub fn shm_open(name: *const ::c_char, oflag: ::c_int, mode: ::mode_t) -> ::c_int;$/;" f +shm_open vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn shm_open(name: *const c_char, oflag: ::c_int, mode: mode_t) -> ::c_int;$/;" f +shm_open vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn shm_open(name: *const c_char, oflag: ::c_int, mode: mode_t) -> ::c_int;$/;" f +shm_open vendor/libc/src/unix/redox/mod.rs /^ pub fn shm_open(name: *const c_char, oflag: ::c_int, mode: mode_t) -> ::c_int;$/;" f +shm_open vendor/libc/src/unix/solarish/mod.rs /^ pub fn shm_open(name: *const ::c_char, oflag: ::c_int, mode: ::mode_t) -> ::c_int;$/;" f +shm_rename vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn shm_rename($/;" f +shm_unlink vendor/libc/src/fuchsia/mod.rs /^ pub fn shm_unlink(name: *const ::c_char) -> ::c_int;$/;" f +shm_unlink vendor/libc/src/unix/bsd/mod.rs /^ pub fn shm_unlink(name: *const ::c_char) -> ::c_int;$/;" f +shm_unlink vendor/libc/src/unix/haiku/mod.rs /^ pub fn shm_unlink(name: *const ::c_char) -> ::c_int;$/;" f +shm_unlink vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn shm_unlink(name: *const ::c_char) -> ::c_int;$/;" f +shm_unlink vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn shm_unlink(name: *const ::c_char) -> ::c_int;$/;" f +shm_unlink vendor/libc/src/unix/redox/mod.rs /^ pub fn shm_unlink(name: *const ::c_char) -> ::c_int;$/;" f +shm_unlink vendor/libc/src/unix/solarish/mod.rs /^ pub fn shm_unlink(name: *const ::c_char) -> ::c_int;$/;" f +shm_unlink vendor/nix/src/sys/mman.rs /^pub fn shm_unlink(name: &P) -> Result<()> {$/;" f +shmat vendor/libc/src/fuchsia/mod.rs /^ pub fn shmat(shmid: ::c_int, shmaddr: *const ::c_void, shmflg: ::c_int) -> *mut ::c_void;$/;" f +shmat vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn shmat(shmid: ::c_int, shmaddr: *const ::c_void, shmflg: ::c_int) -> *mut ::c_void;$/;" f +shmat vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn shmat(shmid: ::c_int, shmaddr: *const ::c_void, shmflg: ::c_int) -> *mut ::c_void;$/;" f +shmat vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn shmat(shmid: ::c_int, shmaddr: *const ::c_void, shmflg: ::c_int) -> *mut ::c_void;$/;" f +shmat vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn shmat(shmid: ::c_int, shmaddr: *const ::c_void, shmflg: ::c_int) -> *mut ::c_void;$/;" f +shmat vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn shmat(shmid: ::c_int, shmaddr: *const ::c_void, shmflg: ::c_int) -> *mut ::c_void;$/;" f +shmat vendor/libc/src/unix/solarish/mod.rs /^ pub fn shmat(shmid: ::c_int, shmaddr: *const ::c_void, shmflg: ::c_int) -> *mut ::c_void;$/;" f +shmatch.o lib/sh/Makefile.in /^shmatch.o: ${BASHINCDIR}\/ansi_stdlib.h ${topdir}\/xmalloc.h$/;" t +shmatch.o lib/sh/Makefile.in /^shmatch.o: ${BASHINCDIR}\/stdc.h ${topdir}\/bashansi.h$/;" t +shmatch.o lib/sh/Makefile.in /^shmatch.o: ${BUILD_DIR}\/config.h$/;" t +shmatch.o lib/sh/Makefile.in /^shmatch.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +shmatch.o lib/sh/Makefile.in /^shmatch.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +shmatch.o lib/sh/Makefile.in /^shmatch.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +shmatch.o lib/sh/Makefile.in /^shmatch.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/conftyp/;" t +shmatch.o lib/sh/Makefile.in /^shmatch.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +shmatch.o lib/sh/Makefile.in /^shmatch.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp.h$/;" t +shmatch.o lib/sh/Makefile.in /^shmatch.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +shmatch.o lib/sh/Makefile.in /^shmatch.o: shmatch.c$/;" t +shmatt_t vendor/libc/src/fuchsia/mod.rs /^pub type shmatt_t = ::c_ulong;$/;" t +shmatt_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type shmatt_t = ::c_ushort;$/;" t +shmatt_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type shmatt_t = ::c_uint;$/;" t +shmatt_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^pub type shmatt_t = ::c_uint;$/;" t +shmatt_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^pub type shmatt_t = ::c_uint;$/;" t +shmatt_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^pub type shmatt_t = ::c_uint;$/;" t +shmatt_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type shmatt_t = ::c_uint;$/;" t +shmatt_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type shmatt_t = ::c_ulong;$/;" t +shmatt_t vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^pub type shmatt_t = ::c_ulong;$/;" t +shmatt_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mod.rs /^pub type shmatt_t = u64;$/;" t +shmatt_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type shmatt_t = ::c_ulong;$/;" t +shmatt_t vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^pub type shmatt_t = ::c_ulong;$/;" t +shmatt_t vendor/libc/src/unix/solarish/mod.rs /^pub type shmatt_t = ::c_ulong;$/;" t +shmbchar.o lib/sh/Makefile.in /^shmbchar.o: ${BASHINCDIR}\/shmbchar.h$/;" t +shmbchar.o lib/sh/Makefile.in /^shmbchar.o: ${BASHINCDIR}\/shmbutil.h$/;" t +shmbchar.o lib/sh/Makefile.in /^shmbchar.o: ${BUILD_DIR}\/config.h$/;" t +shmbchar.o lib/sh/Makefile.in /^shmbchar.o: shmbchar.c$/;" t +shmctl vendor/libc/src/fuchsia/mod.rs /^ pub fn shmctl(shmid: ::c_int, cmd: ::c_int, buf: *mut ::shmid_ds) -> ::c_int;$/;" f +shmctl vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn shmctl(shmid: ::c_int, cmd: ::c_int, buf: *mut ::shmid_ds) -> ::c_int;$/;" f +shmctl vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn shmctl(shmid: ::c_int, cmd: ::c_int, buf: *mut ::shmid_ds) -> ::c_int;$/;" f +shmctl vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn shmctl(shmid: ::c_int, cmd: ::c_int, buf: *mut ::shmid_ds) -> ::c_int;$/;" f +shmctl vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn shmctl(shmid: ::c_int, cmd: ::c_int, buf: *mut ::shmid_ds) -> ::c_int;$/;" f +shmctl vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn shmctl(shmid: ::c_int, cmd: ::c_int, buf: *mut ::shmid_ds) -> ::c_int;$/;" f +shmctl vendor/libc/src/unix/solarish/mod.rs /^ pub fn shmctl(shmid: ::c_int, cmd: ::c_int, buf: *mut ::shmid_ds) -> ::c_int;$/;" f +shmdt vendor/libc/src/fuchsia/mod.rs /^ pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int;$/;" f +shmdt vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int;$/;" f +shmdt vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int;$/;" f +shmdt vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int;$/;" f +shmdt vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int;$/;" f +shmdt vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int;$/;" f +shmdt vendor/libc/src/unix/solarish/mod.rs /^ pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int;$/;" f +shmget vendor/libc/src/fuchsia/mod.rs /^ pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;$/;" f +shmget vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn shmget(key: key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;$/;" f +shmget vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;$/;" f +shmget vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;$/;" f +shmget vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^ pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;$/;" f +shmget vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;$/;" f +shmget vendor/libc/src/unix/solarish/mod.rs /^ pub fn shmget(key: key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;$/;" f +shobjidl vendor/winapi/src/um/mod.rs /^#[cfg(feature = "shobjidl")] pub mod shobjidl;$/;" n +shobjidl_core vendor/winapi/src/um/mod.rs /^#[cfg(feature = "shobjidl_core")] pub mod shobjidl_core;$/;" n +shopt.o builtins/Makefile.in /^shopt.o: $(srcdir)\/common.h $(srcdir)\/bashgetopt.h ..\/pathnames.h$/;" t +shopt.o builtins/Makefile.in /^shopt.o: $(topdir)\/bashhist.h $(topdir)\/bashline.h $(topdir)\/sig.h$/;" t +shopt.o builtins/Makefile.in /^shopt.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +shopt.o builtins/Makefile.in /^shopt.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h $/;" t +shopt.o builtins/Makefile.in /^shopt.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h$/;" t +shopt.o builtins/Makefile.in /^shopt.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h /;" t +shopt.o builtins/Makefile.in /^shopt.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +shopt.o builtins/Makefile.in /^shopt.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +shopt.o builtins/Makefile.in /^shopt.o: shopt.def$/;" t +shopt_alist shell.c /^static STRING_INT_ALIST *shopt_alist;$/;" v typeref:typename:STRING_INT_ALIST * file: +shopt_enable_hostname_completion builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn shopt_enable_hostname_completion($/;" f +shopt_error builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn shopt_error(s: *mut libc::c_char) {$/;" f +shopt_ind shell.c /^static int shopt_ind = 0, shopt_len = 0;$/;" v typeref:typename:int file: +shopt_len shell.c /^static int shopt_ind = 0, shopt_len = 0;$/;" v typeref:typename:int file: +shopt_listopt r_bash/src/lib.rs /^ pub fn shopt_listopt($/;" f +shopt_set_complete_direxpand builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn shopt_set_complete_direxpand($/;" f +shopt_set_debug_mode builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn shopt_set_debug_mode(_option_name: *mut libc::c_char, _mode: i32) -> i32 {$/;" f +shopt_setopt r_bash/src/lib.rs /^ pub fn shopt_setopt($/;" f +short_doc builtins.h /^ const char *short_doc; \/* Short version of documentation. *\/$/;" m struct:builtin typeref:typename:const char * +short_doc builtins_rust/common/src/lib.rs /^ pub short_doc: *const c_char,$/;" m struct:builtin +short_doc builtins_rust/enable/src/lib.rs /^ pub short_doc: *const libc::c_char,$/;" m struct:builtin +short_doc builtins_rust/help/src/lib.rs /^ short_doc: *mut libc::c_char,$/;" m struct:builtin +short_doc r_bash/src/lib.rs /^ pub short_doc: *const ::std::os::raw::c_char,$/;" m struct:builtin +short_doc_handler builtins/mkbuiltins.c /^short_doc_handler (self, defs, arg)$/;" f +shortdoc builtins/mkbuiltins.c /^ char *shortdoc; \/* The short documentation for this builtin. *\/$/;" m struct:__anon69e836710208 typeref:typename:char * file: +should_call vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) fn should_call(&mut self) -> bool {$/;" P implementation:Pre +should_expand bashhist.c /^should_expand (s)$/;" f file: +should_expand r_bashhist/src/lib.rs /^unsafe extern "C" fn should_expand(mut s: *mut c_char) -> c_int {$/;" f +should_ignore_glob_matches pathexp.c /^should_ignore_glob_matches ()$/;" f typeref:typename:int +should_ignore_glob_matches r_bash/src/lib.rs /^ pub fn should_ignore_glob_matches() -> ::std::os::raw::c_int;$/;" f +should_parse vendor/syn/tests/test_should_parse.rs /^macro_rules! should_parse {$/;" M +should_suppress_fork builtins/evalstring.c /^should_suppress_fork (command)$/;" f +should_suppress_fork r_bash/src/lib.rs /^ pub fn should_suppress_fork(arg1: *mut COMMAND) -> ::std::os::raw::c_int;$/;" f +shouldexp_filterpat pcomplete.c /^shouldexp_filterpat (s)$/;" f file: +shouldexp_replacement subst.c /^shouldexp_replacement (s)$/;" f file: +show_all_var_attributes builtins_rust/setattr/src/lib.rs /^pub extern "C" fn show_all_var_attributes(v: c_int, nodefs: c_int) -> c_int {$/;" f +show_all_var_attributes r_bash/src/lib.rs /^ pub fn show_all_var_attributes($/;" f +show_builtin_command_help builtins_rust/help/src/lib.rs /^fn show_builtin_command_help() {$/;" f +show_desc builtins_rust/help/src/lib.rs /^fn show_desc(i: i32) {$/;" f +show_func_attributes builtins_rust/declare/src/lib.rs /^ fn show_func_attributes(name: *mut c_char, nodefs: i32) -> i32;$/;" f +show_func_attributes builtins_rust/setattr/src/lib.rs /^pub extern "C" fn show_func_attributes(name: *mut c_char, nodefs: c_int) -> c_int {$/;" f +show_func_attributes r_bash/src/lib.rs /^ pub fn show_func_attributes($/;" f +show_helpsynopsis builtins_rust/help/src/lib.rs /^fn show_helpsynopsis(i: i32) {$/;" f +show_local_var_attributes builtins_rust/declare/src/lib.rs /^ fn show_local_var_attributes(v: i32, nodefs: i32) -> i32;$/;" f +show_local_var_attributes builtins_rust/setattr/src/lib.rs /^pub extern "C" fn show_local_var_attributes(_v: c_int, nodefs: c_int) -> c_int {$/;" f +show_local_var_attributes r_bash/src/lib.rs /^ pub fn show_local_var_attributes($/;" f +show_localname_attributes builtins_rust/declare/src/lib.rs /^ fn show_localname_attributes(name: *mut c_char, nodefs: i32) -> i32;$/;" f +show_localname_attributes builtins_rust/setattr/src/lib.rs /^pub extern "C" fn show_localname_attributes(name: *mut c_char, nodefs: c_int) -> c_int {$/;" f +show_localname_attributes r_bash/src/lib.rs /^ pub fn show_localname_attributes($/;" f +show_longdoc builtins_rust/help/src/lib.rs /^fn show_longdoc(i: i32) {$/;" f +show_manpage builtins_rust/help/src/lib.rs /^fn show_manpage(_name: *mut c_char, i: i32) {$/;" f +show_name_attributes builtins_rust/setattr/src/lib.rs /^pub extern "C" fn show_name_attributes(name: *mut c_char, nodefs: c_int) -> c_int {$/;" f +show_name_attributes r_bash/src/lib.rs /^ pub fn show_name_attributes($/;" f +show_shell_usage shell.c /^show_shell_usage (fp, extra)$/;" f file: +show_shell_version builtins_rust/help/src/lib.rs /^ fn show_shell_version(ver: i32);$/;" f +show_shell_version r_bash/src/lib.rs /^ pub fn show_shell_version(arg1: ::std::os::raw::c_int);$/;" f +show_shell_version version.c /^show_shell_version (extended)$/;" f +show_var_attributes builtins_rust/setattr/src/lib.rs /^pub unsafe extern "C" fn show_var_attributes($/;" f +show_var_attributes r_bash/src/lib.rs /^ pub fn show_var_attributes($/;" f +showing_function_line execute_cmd.c /^static int showing_function_line;$/;" v typeref:typename:int file: +showtrap builtins_rust/trap/src/lib.rs /^unsafe fn showtrap(i: c_int, show_default: c_int) {$/;" f +shquote.o lib/sh/Makefile.in /^shquote.o: ${BASHINCDIR}\/ansi_stdlib.h ${topdir}\/xmalloc.h$/;" t +shquote.o lib/sh/Makefile.in /^shquote.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +shquote.o lib/sh/Makefile.in /^shquote.o: ${BASHINCDIR}\/stdc.h ${topdir}\/bashansi.h$/;" t +shquote.o lib/sh/Makefile.in /^shquote.o: ${BUILD_DIR}\/config.h$/;" t +shquote.o lib/sh/Makefile.in /^shquote.o: shquote.c$/;" t +shrink_to_fit vendor/slab/src/lib.rs /^ pub fn shrink_to_fit(&mut self) {$/;" P implementation:Slab +shrink_to_fit vendor/smallvec/src/lib.rs /^ pub fn shrink_to_fit(&mut self) {$/;" P implementation:SmallVec +shrink_to_fit_doesnt_move vendor/slab/tests/slab.rs /^fn shrink_to_fit_doesnt_move() {$/;" f +shrink_to_fit_doesnt_recreate_list_when_nothing_can_be_done vendor/slab/tests/slab.rs /^fn shrink_to_fit_doesnt_recreate_list_when_nothing_can_be_done() {$/;" f +shrink_to_fit_empty vendor/slab/tests/slab.rs /^fn shrink_to_fit_empty() {$/;" f +shrink_to_fit_no_vacant vendor/slab/tests/slab.rs /^fn shrink_to_fit_no_vacant() {$/;" f +shrink_to_fit_unspill vendor/smallvec/src/tests.rs /^fn shrink_to_fit_unspill() {$/;" f +shsize lib/malloc/alloca.c /^ long shsize:32; \/* Current size of stack (all segments). *\/$/;" m struct:stack_control_header typeref:typename:long:32 file: +shtty.o lib/sh/Makefile.in /^shtty.o: ${BASHINCDIR}\/shtty.h$/;" t +shtty.o lib/sh/Makefile.in /^shtty.o: ${BASHINCDIR}\/stdc.h$/;" t +shtty.o lib/sh/Makefile.in /^shtty.o: ${BUILD_DIR}\/config.h$/;" t +shtty.o lib/sh/Makefile.in /^shtty.o: shtty.c$/;" t +shtypes vendor/winapi/src/um/mod.rs /^#[cfg(feature = "shtypes")] pub mod shtypes;$/;" n +shuffle vendor/futures-util/src/async_await/random.rs /^pub fn shuffle(slice: &mut [T]) {$/;" f +shutdown vendor/futures-task/src/spawn.rs /^ pub fn shutdown() -> Self {$/;" P implementation:SpawnError +shutdown vendor/futures-util/src/compat/compat03as01.rs /^ fn shutdown(&mut self) -> std::io::Result> {$/;" P implementation:io::Compat +shutdown vendor/libc/src/fuchsia/mod.rs /^ pub fn shutdown(socket: ::c_int, how: ::c_int) -> ::c_int;$/;" f +shutdown vendor/libc/src/unix/mod.rs /^ pub fn shutdown(socket: ::c_int, how: ::c_int) -> ::c_int;$/;" f +shutdown vendor/libc/src/vxworks/mod.rs /^ pub fn shutdown(s: ::c_int, how: ::c_int) -> ::c_int;$/;" f +shutdown vendor/libc/src/wasi.rs /^ pub fn shutdown(socket: ::c_int, how: ::c_int) -> ::c_int;$/;" f +shutdown vendor/nix/src/sys/socket/mod.rs /^pub fn shutdown(df: RawFd, how: Shutdown) -> Result<()> {$/;" f +shutdown vendor/winapi/src/um/winsock2.rs /^ pub fn shutdown($/;" f +si_addr builtins_rust/wait/src/signal.rs /^ pub si_addr: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5 +si_addr r_bash/src/lib.rs /^ pub si_addr: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5 +si_addr r_glob/src/lib.rs /^ pub si_addr: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5 +si_addr r_readline/src/lib.rs /^ pub si_addr: *mut ::std::os::raw::c_void,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5 +si_addr vendor/libc/src/unix/bsd/apple/mod.rs /^ pub unsafe fn si_addr(&self) -> *mut ::c_void {$/;" P implementation:siginfo_t +si_addr vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub unsafe fn si_addr(&self) -> *mut ::c_void {$/;" P implementation:siginfo_t +si_addr vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub unsafe fn si_addr(&self) -> *mut ::c_void {$/;" P implementation:siginfo_t +si_addr vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub unsafe fn si_addr(&self) -> *mut ::c_char {$/;" P implementation:siginfo_t +si_addr vendor/libc/src/unix/haiku/mod.rs /^ pub unsafe fn si_addr(&self) -> *mut ::c_void {$/;" P implementation:siginfo_t +si_addr vendor/libc/src/unix/linux_like/android/mod.rs /^ si_addr: *mut ::c_void,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +si_addr vendor/libc/src/unix/linux_like/android/mod.rs /^ pub unsafe fn si_addr(&self) -> *mut ::c_void {$/;" P implementation:siginfo_t +si_addr vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ si_addr: *mut ::c_void,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +si_addr vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub unsafe fn si_addr(&self) -> *mut ::c_void {$/;" P implementation:siginfo_t +si_addr vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ si_addr: *mut ::c_void,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +si_addr vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub unsafe fn si_addr(&self) -> *mut ::c_void {$/;" P implementation:siginfo_t +si_addr vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ si_addr: *mut ::c_void,$/;" m struct:siginfo_t::si_addr::siginfo_sigfault +si_addr vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub unsafe fn si_addr(&self) -> *mut ::c_void {$/;" P implementation:siginfo_t +si_addr vendor/libc/src/unix/solarish/mod.rs /^ pub unsafe fn si_addr(&self) -> *mut ::c_void {$/;" P implementation:siginfo_t +si_addr vendor/libc/src/vxworks/mod.rs /^ pub unsafe fn si_addr(&self) -> *mut ::c_void {$/;" P implementation:siginfo_t +si_addr_lsb builtins_rust/wait/src/signal.rs /^ pub si_addr_lsb: ::std::os::raw::c_short,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5 +si_addr_lsb r_bash/src/lib.rs /^ pub si_addr_lsb: ::std::os::raw::c_short,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5 +si_addr_lsb r_glob/src/lib.rs /^ pub si_addr_lsb: ::std::os::raw::c_short,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5 +si_addr_lsb r_readline/src/lib.rs /^ pub si_addr_lsb: ::std::os::raw::c_short,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_5 +si_band builtins_rust/wait/src/signal.rs /^ pub si_band: ::std::os::raw::c_long,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_6 +si_band r_bash/src/lib.rs /^ pub si_band: ::std::os::raw::c_long,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_6 +si_band r_glob/src/lib.rs /^ pub si_band: ::std::os::raw::c_long,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_6 +si_band r_readline/src/lib.rs /^ pub si_band: ::std::os::raw::c_long,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_6 +si_code builtins_rust/wait/src/signal.rs /^ pub si_code: ::std::os::raw::c_int,$/;" m struct:siginfo_t +si_code r_bash/src/lib.rs /^ pub si_code: ::std::os::raw::c_int,$/;" m struct:siginfo_t +si_code r_glob/src/lib.rs /^ pub si_code: ::std::os::raw::c_int,$/;" m struct:siginfo_t +si_code r_readline/src/lib.rs /^ pub si_code: ::std::os::raw::c_int,$/;" m struct:siginfo_t +si_errno builtins_rust/wait/src/signal.rs /^ pub si_errno: ::std::os::raw::c_int,$/;" m struct:siginfo_t +si_errno r_bash/src/lib.rs /^ pub si_errno: ::std::os::raw::c_int,$/;" m struct:siginfo_t +si_errno r_glob/src/lib.rs /^ pub si_errno: ::std::os::raw::c_int,$/;" m struct:siginfo_t +si_errno r_readline/src/lib.rs /^ pub si_errno: ::std::os::raw::c_int,$/;" m struct:siginfo_t +si_fd builtins_rust/wait/src/signal.rs /^ pub si_fd: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_6 +si_fd r_bash/src/lib.rs /^ pub si_fd: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_6 +si_fd r_glob/src/lib.rs /^ pub si_fd: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_6 +si_fd r_readline/src/lib.rs /^ pub si_fd: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_6 +si_overrun builtins_rust/wait/src/signal.rs /^ pub si_overrun: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_2 +si_overrun r_bash/src/lib.rs /^ pub si_overrun: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_2 +si_overrun r_glob/src/lib.rs /^ pub si_overrun: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_2 +si_overrun r_readline/src/lib.rs /^ pub si_overrun: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_2 +si_pid builtins_rust/wait/src/signal.rs /^ pub si_pid: __pid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_1 +si_pid builtins_rust/wait/src/signal.rs /^ pub si_pid: __pid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_3 +si_pid builtins_rust/wait/src/signal.rs /^ pub si_pid: __pid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_pid r_bash/src/lib.rs /^ pub si_pid: __pid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_1 +si_pid r_bash/src/lib.rs /^ pub si_pid: __pid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_3 +si_pid r_bash/src/lib.rs /^ pub si_pid: __pid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_pid r_glob/src/lib.rs /^ pub si_pid: __pid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_1 +si_pid r_glob/src/lib.rs /^ pub si_pid: __pid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_3 +si_pid r_glob/src/lib.rs /^ pub si_pid: __pid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_pid r_readline/src/lib.rs /^ pub si_pid: __pid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_1 +si_pid r_readline/src/lib.rs /^ pub si_pid: __pid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_3 +si_pid r_readline/src/lib.rs /^ pub si_pid: __pid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_pid vendor/libc/src/unix/bsd/apple/mod.rs /^ pub unsafe fn si_pid(&self) -> ::pid_t {$/;" P implementation:siginfo_t +si_pid vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub unsafe fn si_pid(&self) -> ::pid_t {$/;" P implementation:siginfo_t +si_pid vendor/libc/src/unix/haiku/mod.rs /^ pub unsafe fn si_pid(&self) -> ::pid_t {$/;" P implementation:siginfo_t +si_pid vendor/libc/src/unix/solarish/mod.rs /^ pub unsafe fn si_pid(&self) -> ::pid_t {$/;" P implementation:siginfo_t +si_pid vendor/libc/src/vxworks/mod.rs /^ pub unsafe fn si_pid(&self) -> ::pid_t {$/;" P implementation:siginfo_t +si_signo builtins_rust/wait/src/signal.rs /^ pub si_signo: ::std::os::raw::c_int,$/;" m struct:siginfo_t +si_signo r_bash/src/lib.rs /^ pub si_signo: ::std::os::raw::c_int,$/;" m struct:siginfo_t +si_signo r_glob/src/lib.rs /^ pub si_signo: ::std::os::raw::c_int,$/;" m struct:siginfo_t +si_signo r_readline/src/lib.rs /^ pub si_signo: ::std::os::raw::c_int,$/;" m struct:siginfo_t +si_sigval builtins_rust/wait/src/signal.rs /^ pub si_sigval: __sigval_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_2 +si_sigval builtins_rust/wait/src/signal.rs /^ pub si_sigval: __sigval_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_3 +si_sigval r_bash/src/lib.rs /^ pub si_sigval: __sigval_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_2 +si_sigval r_bash/src/lib.rs /^ pub si_sigval: __sigval_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_3 +si_sigval r_glob/src/lib.rs /^ pub si_sigval: __sigval_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_2 +si_sigval r_glob/src/lib.rs /^ pub si_sigval: __sigval_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_3 +si_sigval r_readline/src/lib.rs /^ pub si_sigval: __sigval_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_2 +si_sigval r_readline/src/lib.rs /^ pub si_sigval: __sigval_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_3 +si_sigval vendor/libc/src/unix/linux_like/android/mod.rs /^ si_sigval: ::sigval,$/;" m struct:siginfo_t::si_value::siginfo_timer +si_sigval vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ si_sigval: ::sigval,$/;" m struct:siginfo_t::si_value::siginfo_timer +si_status builtins_rust/wait/src/signal.rs /^ pub si_status: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_status r_bash/src/lib.rs /^ pub si_status: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_status r_glob/src/lib.rs /^ pub si_status: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_status r_readline/src/lib.rs /^ pub si_status: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_status vendor/libc/src/unix/bsd/apple/mod.rs /^ pub unsafe fn si_status(&self) -> ::c_int {$/;" P implementation:siginfo_t +si_status vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub unsafe fn si_status(&self) -> ::c_int {$/;" P implementation:siginfo_t +si_status vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub unsafe fn si_status(&self) -> ::c_int {$/;" P implementation:siginfo_t +si_status vendor/libc/src/unix/haiku/mod.rs /^ pub unsafe fn si_status(&self) -> ::c_int {$/;" P implementation:siginfo_t +si_status vendor/libc/src/unix/solarish/mod.rs /^ pub unsafe fn si_status(&self) -> ::c_int {$/;" P implementation:siginfo_t +si_status vendor/libc/src/vxworks/mod.rs /^ pub unsafe fn si_status(&self) -> ::c_int {$/;" P implementation:siginfo_t +si_stime builtins_rust/wait/src/signal.rs /^ pub si_stime: __clock_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_stime r_bash/src/lib.rs /^ pub si_stime: __clock_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_stime r_glob/src/lib.rs /^ pub si_stime: __clock_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_stime r_readline/src/lib.rs /^ pub si_stime: __clock_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_stime vendor/libc/src/unix/solarish/mod.rs /^ pub unsafe fn si_stime(&self) -> ::c_long {$/;" P implementation:siginfo_t +si_tid builtins_rust/wait/src/signal.rs /^ pub si_tid: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_2 +si_tid r_bash/src/lib.rs /^ pub si_tid: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_2 +si_tid r_glob/src/lib.rs /^ pub si_tid: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_2 +si_tid r_readline/src/lib.rs /^ pub si_tid: ::std::os::raw::c_int,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_2 +si_uid builtins_rust/wait/src/signal.rs /^ pub si_uid: __uid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_1 +si_uid builtins_rust/wait/src/signal.rs /^ pub si_uid: __uid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_3 +si_uid builtins_rust/wait/src/signal.rs /^ pub si_uid: __uid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_uid r_bash/src/lib.rs /^ pub si_uid: __uid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_1 +si_uid r_bash/src/lib.rs /^ pub si_uid: __uid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_3 +si_uid r_bash/src/lib.rs /^ pub si_uid: __uid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_uid r_glob/src/lib.rs /^ pub si_uid: __uid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_1 +si_uid r_glob/src/lib.rs /^ pub si_uid: __uid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_3 +si_uid r_glob/src/lib.rs /^ pub si_uid: __uid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_uid r_readline/src/lib.rs /^ pub si_uid: __uid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_1 +si_uid r_readline/src/lib.rs /^ pub si_uid: __uid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_3 +si_uid r_readline/src/lib.rs /^ pub si_uid: __uid_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_uid vendor/libc/src/unix/bsd/apple/mod.rs /^ pub unsafe fn si_uid(&self) -> ::uid_t {$/;" P implementation:siginfo_t +si_uid vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub unsafe fn si_uid(&self) -> ::uid_t {$/;" P implementation:siginfo_t +si_uid vendor/libc/src/unix/haiku/mod.rs /^ pub unsafe fn si_uid(&self) -> ::uid_t {$/;" P implementation:siginfo_t +si_uid vendor/libc/src/unix/solarish/mod.rs /^ pub unsafe fn si_uid(&self) -> ::uid_t {$/;" P implementation:siginfo_t +si_uid vendor/libc/src/vxworks/mod.rs /^ pub unsafe fn si_uid(&self) -> ::uid_t {$/;" P implementation:siginfo_t +si_utime builtins_rust/wait/src/signal.rs /^ pub si_utime: __clock_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_utime r_bash/src/lib.rs /^ pub si_utime: __clock_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_utime r_glob/src/lib.rs /^ pub si_utime: __clock_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_utime r_readline/src/lib.rs /^ pub si_utime: __clock_t,$/;" m struct:siginfo_t__bindgen_ty_1__bindgen_ty_4 +si_utime vendor/libc/src/unix/solarish/mod.rs /^ pub unsafe fn si_utime(&self) -> ::c_long {$/;" P implementation:siginfo_t +si_value vendor/libc/src/unix/bsd/apple/mod.rs /^ si_value: ::sigval,$/;" m struct:siginfo_t::si_value::siginfo_timer +si_value vendor/libc/src/unix/bsd/apple/mod.rs /^ pub unsafe fn si_value(&self) -> ::sigval {$/;" P implementation:siginfo_t +si_value vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub unsafe fn si_value(&self) -> ::sigval {$/;" P implementation:siginfo_t +si_value vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub unsafe fn si_value(&self) -> ::sigval {$/;" P implementation:siginfo_t +si_value vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub unsafe fn si_value(&self) -> ::sigval {$/;" P implementation:siginfo_t +si_value vendor/libc/src/unix/linux_like/android/mod.rs /^ pub unsafe fn si_value(&self) -> ::sigval {$/;" P implementation:siginfo_t +si_value vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub unsafe fn si_value(&self) -> ::sigval {$/;" P implementation:siginfo_t +si_value vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ si_value: ::sigval,$/;" m struct:siginfo_t::si_value::siginfo_si_value +si_value vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ pub unsafe fn si_value(&self) -> ::sigval {$/;" P implementation:siginfo_t +si_value vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ si_value: ::sigval,$/;" m struct:siginfo_t::si_value::siginfo_si_value +si_value vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ pub unsafe fn si_value(&self) -> ::sigval {$/;" P implementation:siginfo_t +si_value vendor/libc/src/unix/solarish/mod.rs /^ pub unsafe fn si_value(&self) -> ::sigval {$/;" P implementation:siginfo_t +si_value vendor/libc/src/vxworks/mod.rs /^ pub unsafe fn si_value(&self) -> ::sigval {$/;" P implementation:siginfo_t +sidata vendor/libc/src/unix/solarish/mod.rs /^ unsafe fn sidata(&self) -> T {$/;" P implementation:siginfo_t +sig.o Makefile.in /^sig.o: ${DEFDIR}\/builtext.h$/;" t +sig.o Makefile.in /^sig.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +sig.o Makefile.in /^sig.o: config.h bashtypes.h$/;" t +sig.o Makefile.in /^sig.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +sig.o Makefile.in /^sig.o: jobs.h siglist.h trap.h $(DEFSRC)\/common.h bashline.h bashhist.h$/;" t +sig.o Makefile.in /^sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h$/;" t +sig.o Makefile.in /^sig.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +sig.o Makefile.in /^sig.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\/st/;" t +sig_atomic_t builtins_rust/wait/src/signal.rs /^pub type sig_atomic_t = __sig_atomic_t;$/;" t +sig_atomic_t r_bash/src/lib.rs /^pub type sig_atomic_t = __sig_atomic_t;$/;" t +sig_atomic_t r_glob/src/lib.rs /^pub type sig_atomic_t = __sig_atomic_t;$/;" t +sig_atomic_t r_readline/src/lib.rs /^pub type sig_atomic_t = __sig_atomic_t;$/;" t +sig_t builtins_rust/wait/src/signal.rs /^pub type sig_t = __sighandler_t;$/;" t +sig_t r_bash/src/lib.rs /^pub type sig_t = __sighandler_t;$/;" t +sig_t r_glob/src/lib.rs /^pub type sig_t = __sighandler_t;$/;" t +sig_t r_readline/src/lib.rs /^pub type sig_t = __sighandler_t;$/;" t +sigaction builtins_rust/wait/src/signal.rs /^ pub fn sigaction($/;" f +sigaction builtins_rust/wait/src/signal.rs /^pub struct sigaction {$/;" s +sigaction r_bash/src/lib.rs /^ pub fn sigaction($/;" f +sigaction r_bash/src/lib.rs /^pub struct sigaction {$/;" s +sigaction r_glob/src/lib.rs /^ pub fn sigaction($/;" f +sigaction r_glob/src/lib.rs /^pub struct sigaction {$/;" s +sigaction r_readline/src/lib.rs /^ pub fn sigaction($/;" f +sigaction r_readline/src/lib.rs /^pub struct sigaction {$/;" s +sigaction vendor/libc/src/fuchsia/mod.rs /^ pub fn sigaction(signum: ::c_int, act: *const sigaction, oldact: *mut sigaction) -> ::c_int;$/;" f +sigaction vendor/libc/src/unix/mod.rs /^ pub fn sigaction(signum: ::c_int, act: *const sigaction, oldact: *mut sigaction) -> ::c_int;$/;" f +sigaction vendor/libc/src/vxworks/mod.rs /^ pub fn sigaction(signum: ::c_int, act: *const sigaction, oldact: *mut sigaction) -> ::c_int;$/;" f +sigaddset builtins_rust/wait/src/signal.rs /^ pub fn sigaddset(__set: *mut sigset_t, __signo: ::std::os::raw::c_int)$/;" f +sigaddset r_bash/src/lib.rs /^ pub fn sigaddset(__set: *mut sigset_t, __signo: ::std::os::raw::c_int)$/;" f +sigaddset r_glob/src/lib.rs /^ pub fn sigaddset(__set: *mut sigset_t, __signo: ::std::os::raw::c_int)$/;" f +sigaddset r_readline/src/lib.rs /^ pub fn sigaddset(__set: *mut sigset_t, __signo: ::std::os::raw::c_int)$/;" f +sigaddset sig.h /^# define sigaddset(/;" d +sigaddset vendor/libc/src/fuchsia/mod.rs /^ pub fn sigaddset(set: *mut sigset_t, signum: ::c_int) -> ::c_int;$/;" f +sigaddset vendor/libc/src/unix/mod.rs /^ pub fn sigaddset(set: *mut sigset_t, signum: ::c_int) -> ::c_int;$/;" f +sigaddset vendor/libc/src/vxworks/mod.rs /^ pub fn sigaddset(set: *mut sigset_t, signum: ::c_int) -> ::c_int;$/;" f +sigalrm builtins_rust/read/src/lib.rs /^fn sigalrm(_s: c_int) {$/;" f +sigalrm_seen builtins_rust/read/src/intercdep.rs /^ static mut sigalrm_seen:libc::c_int;$/;" v +sigalrm_seen r_bash/src/lib.rs /^ pub static mut sigalrm_seen: ::std::os::raw::c_int;$/;" v +sigaltstack builtins_rust/wait/src/signal.rs /^ pub fn sigaltstack(__ss: *const stack_t, __oss: *mut stack_t) -> ::std::os::raw::c_int;$/;" f +sigaltstack r_bash/src/lib.rs /^ pub fn sigaltstack(__ss: *const stack_t, __oss: *mut stack_t) -> ::std::os::raw::c_int;$/;" f +sigaltstack r_glob/src/lib.rs /^ pub fn sigaltstack(__ss: *const stack_t, __oss: *mut stack_t) -> ::std::os::raw::c_int;$/;" f +sigaltstack r_readline/src/lib.rs /^ pub fn sigaltstack(__ss: *const stack_t, __oss: *mut stack_t) -> ::std::os::raw::c_int;$/;" f +sigaltstack vendor/libc/src/fuchsia/mod.rs /^ pub fn sigaltstack(ss: *const stack_t, oss: *mut stack_t) -> ::c_int;$/;" f +sigaltstack vendor/libc/src/unix/bsd/mod.rs /^ pub fn sigaltstack(ss: *const stack_t, oss: *mut stack_t) -> ::c_int;$/;" f +sigaltstack vendor/libc/src/unix/haiku/mod.rs /^ pub fn sigaltstack(ss: *const stack_t, oss: *mut stack_t) -> ::c_int;$/;" f +sigaltstack vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sigaltstack(ss: *const stack_t, oss: *mut stack_t) -> ::c_int;$/;" f +sigaltstack vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sigaltstack(ss: *const stack_t, oss: *mut stack_t) -> ::c_int;$/;" f +sigaltstack vendor/libc/src/unix/newlib/mod.rs /^ pub fn sigaltstack(ss: *const stack_t, oss: *mut stack_t) -> ::c_int;$/;" f +sigaltstack vendor/libc/src/unix/solarish/mod.rs /^ pub fn sigaltstack(ss: *const stack_t, oss: *mut stack_t) -> ::c_int;$/;" f +sigandset r_bash/src/lib.rs /^ pub fn sigandset($/;" f +sigandset r_glob/src/lib.rs /^ pub fn sigandset($/;" f +sigandset r_readline/src/lib.rs /^ pub fn sigandset($/;" f +sigblock builtins_rust/wait/src/signal.rs /^ pub fn sigblock(__mask: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigblock r_bash/src/lib.rs /^ pub fn sigblock(__mask: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigblock r_glob/src/lib.rs /^ pub fn sigblock(__mask: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigblock r_readline/src/lib.rs /^ pub fn sigblock(__mask: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigchld jobs.c /^static int sigchld;$/;" v typeref:typename:int file: +sigchld r_jobs/src/lib.rs /^pub static mut sigchld:c_int = 0;$/;" v +sigchld_handler jobs.c /^sigchld_handler (sig)$/;" f file: +sigchld_handler r_jobs/src/lib.rs /^unsafe extern "C" fn sigchld_handler(mut sig: c_int) {$/;" f +sigcont_sighandler jobs.c /^sigcont_sighandler (sig)$/;" f file: +sigcont_sighandler r_jobs/src/lib.rs /^unsafe extern "C" fn sigcont_sighandler(mut sig: c_int) {$/;" f +sigcontext builtins_rust/wait/src/signal.rs /^pub struct sigcontext {$/;" s +sigcontext r_bash/src/lib.rs /^pub struct sigcontext {$/;" s +sigcontext r_glob/src/lib.rs /^pub struct sigcontext {$/;" s +sigcontext r_readline/src/lib.rs /^pub struct sigcontext {$/;" s +sigdelset builtins_rust/wait/src/signal.rs /^ pub fn sigdelset(__set: *mut sigset_t, __signo: ::std::os::raw::c_int)$/;" f +sigdelset r_bash/src/lib.rs /^ pub fn sigdelset(__set: *mut sigset_t, __signo: ::std::os::raw::c_int)$/;" f +sigdelset r_glob/src/lib.rs /^ pub fn sigdelset(__set: *mut sigset_t, __signo: ::std::os::raw::c_int)$/;" f +sigdelset r_readline/src/lib.rs /^ pub fn sigdelset(__set: *mut sigset_t, __signo: ::std::os::raw::c_int)$/;" f +sigdelset sig.h /^# define sigdelset(/;" d +sigdelset vendor/libc/src/fuchsia/mod.rs /^ pub fn sigdelset(set: *mut sigset_t, signum: ::c_int) -> ::c_int;$/;" f +sigdelset vendor/libc/src/unix/mod.rs /^ pub fn sigdelset(set: *mut sigset_t, signum: ::c_int) -> ::c_int;$/;" f +sigemptyset builtins_rust/wait/src/signal.rs /^ pub fn sigemptyset(__set: *mut sigset_t) -> ::std::os::raw::c_int;$/;" f +sigemptyset lib/readline/signals.c /^# define sigemptyset(/;" d file: +sigemptyset r_bash/src/lib.rs /^ pub fn sigemptyset(__set: *mut sigset_t) -> ::std::os::raw::c_int;$/;" f +sigemptyset r_glob/src/lib.rs /^ pub fn sigemptyset(__set: *mut sigset_t) -> ::std::os::raw::c_int;$/;" f +sigemptyset r_readline/src/lib.rs /^ pub fn sigemptyset(__set: *mut sigset_t) -> ::std::os::raw::c_int;$/;" f +sigemptyset sig.h /^# define sigemptyset(/;" d +sigemptyset vendor/libc/src/fuchsia/mod.rs /^ pub fn sigemptyset(set: *mut sigset_t) -> ::c_int;$/;" f +sigemptyset vendor/libc/src/unix/mod.rs /^ pub fn sigemptyset(set: *mut sigset_t) -> ::c_int;$/;" f +sigemptyset vendor/libc/src/vxworks/mod.rs /^ pub fn sigemptyset(__set: *mut sigset_t) -> ::c_int;$/;" f +sigev_notify builtins_rust/wait/src/signal.rs /^ pub sigev_notify: ::std::os::raw::c_int,$/;" m struct:sigevent +sigev_notify r_bash/src/lib.rs /^ pub sigev_notify: ::std::os::raw::c_int,$/;" m struct:sigevent +sigev_notify r_glob/src/lib.rs /^ pub sigev_notify: ::std::os::raw::c_int,$/;" m struct:sigevent +sigev_notify r_readline/src/lib.rs /^ pub sigev_notify: ::std::os::raw::c_int,$/;" m struct:sigevent +sigev_signal vendor/nix/test/sys/test_aio.rs /^fn sigev_signal() {$/;" f +sigev_signo builtins_rust/wait/src/signal.rs /^ pub sigev_signo: ::std::os::raw::c_int,$/;" m struct:sigevent +sigev_signo r_bash/src/lib.rs /^ pub sigev_signo: ::std::os::raw::c_int,$/;" m struct:sigevent +sigev_signo r_glob/src/lib.rs /^ pub sigev_signo: ::std::os::raw::c_int,$/;" m struct:sigevent +sigev_signo r_readline/src/lib.rs /^ pub sigev_signo: ::std::os::raw::c_int,$/;" m struct:sigevent +sigev_value builtins_rust/wait/src/signal.rs /^ pub sigev_value: __sigval_t,$/;" m struct:sigevent +sigev_value r_bash/src/lib.rs /^ pub sigev_value: __sigval_t,$/;" m struct:sigevent +sigev_value r_glob/src/lib.rs /^ pub sigev_value: __sigval_t,$/;" m struct:sigevent +sigev_value r_readline/src/lib.rs /^ pub sigev_value: __sigval_t,$/;" m struct:sigevent +sigevent builtins_rust/wait/src/signal.rs /^pub struct sigevent {$/;" s +sigevent r_bash/src/lib.rs /^pub struct sigevent {$/;" s +sigevent r_glob/src/lib.rs /^pub struct sigevent {$/;" s +sigevent r_readline/src/lib.rs /^pub struct sigevent {$/;" s +sigevent vendor/nix/src/sys/aio.rs /^ fn sigevent(&self) -> SigEvent;$/;" P interface:Aio +sigevent vendor/nix/src/sys/signal.rs /^mod sigevent {$/;" n +sigevent__bindgen_ty_1__bindgen_ty_1 builtins_rust/wait/src/signal.rs /^pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {$/;" s +sigevent__bindgen_ty_1__bindgen_ty_1 r_bash/src/lib.rs /^pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {$/;" s +sigevent__bindgen_ty_1__bindgen_ty_1 r_glob/src/lib.rs /^pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {$/;" s +sigevent__bindgen_ty_1__bindgen_ty_1 r_readline/src/lib.rs /^pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {$/;" s +sigevent_t builtins_rust/wait/src/signal.rs /^pub type sigevent_t = sigevent;$/;" t +sigevent_t r_bash/src/lib.rs /^pub type sigevent_t = sigevent;$/;" t +sigevent_t r_glob/src/lib.rs /^pub type sigevent_t = sigevent;$/;" t +sigevent_t r_readline/src/lib.rs /^pub type sigevent_t = sigevent;$/;" t +sigfillset builtins_rust/wait/src/signal.rs /^ pub fn sigfillset(__set: *mut sigset_t) -> ::std::os::raw::c_int;$/;" f +sigfillset r_bash/src/lib.rs /^ pub fn sigfillset(__set: *mut sigset_t) -> ::std::os::raw::c_int;$/;" f +sigfillset r_glob/src/lib.rs /^ pub fn sigfillset(__set: *mut sigset_t) -> ::std::os::raw::c_int;$/;" f +sigfillset r_readline/src/lib.rs /^ pub fn sigfillset(__set: *mut sigset_t) -> ::std::os::raw::c_int;$/;" f +sigfillset sig.h /^# define sigfillset(/;" d +sigfillset vendor/libc/src/fuchsia/mod.rs /^ pub fn sigfillset(set: *mut sigset_t) -> ::c_int;$/;" f +sigfillset vendor/libc/src/unix/mod.rs /^ pub fn sigfillset(set: *mut sigset_t) -> ::c_int;$/;" f +sigfunc vendor/nix/test/sys/test_aio.rs /^extern "C" fn sigfunc(_: c_int) {$/;" f +siggetmask builtins_rust/wait/src/signal.rs /^ pub fn siggetmask() -> ::std::os::raw::c_int;$/;" f +siggetmask r_bash/src/lib.rs /^ pub fn siggetmask() -> ::std::os::raw::c_int;$/;" f +siggetmask r_glob/src/lib.rs /^ pub fn siggetmask() -> ::std::os::raw::c_int;$/;" f +siggetmask r_readline/src/lib.rs /^ pub fn siggetmask() -> ::std::os::raw::c_int;$/;" f +sighandler CWRU/misc/sigs.c /^typedef void sighandler();$/;" t typeref:typename:void ()() file: +sighandler sig.h /^#define sighandler /;" d +sighandler_cxt lib/readline/signals.c /^typedef struct sigaction sighandler_cxt;$/;" t typeref:struct:sigaction file: +sighandler_cxt lib/readline/signals.c /^typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt;$/;" t typeref:struct:__anon177730800108 file: +sighandler_t r_bash/src/lib.rs /^pub type sighandler_t = __sighandler_t;$/;" t +sighandler_t r_glob/src/lib.rs /^pub type sighandler_t = __sighandler_t;$/;" t +sighandler_t r_readline/src/lib.rs /^pub type sighandler_t = __sighandler_t;$/;" t +sighandler_t vendor/libc/src/fuchsia/mod.rs /^pub type sighandler_t = ::size_t;$/;" t +sighandler_t vendor/libc/src/solid/mod.rs /^pub type sighandler_t = size_t;$/;" t +sighandler_t vendor/libc/src/unix/mod.rs /^pub type sighandler_t = ::size_t;$/;" t +sighandler_t vendor/libc/src/vxworks/mod.rs /^pub type sighandler_t = ::size_t;$/;" t +sighandler_t vendor/libc/src/windows/mod.rs /^pub type sighandler_t = usize;$/;" t +sighandler_t vendor/nix/src/errno.rs /^impl ErrnoSentinel for libc::sighandler_t {$/;" c +sighold r_bash/src/lib.rs /^ pub fn sighold(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sighold r_glob/src/lib.rs /^ pub fn sighold(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sighold r_readline/src/lib.rs /^ pub fn sighold(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigignore r_bash/src/lib.rs /^ pub fn sigignore(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigignore r_glob/src/lib.rs /^ pub fn sigignore(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigignore r_readline/src/lib.rs /^ pub fn sigignore(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +siginfo_cldval vendor/libc/src/unix/solarish/mod.rs /^impl ::Clone for siginfo_cldval {$/;" c +siginfo_cldval vendor/libc/src/unix/solarish/mod.rs /^impl ::Copy for siginfo_cldval {}$/;" c +siginfo_cldval vendor/libc/src/unix/solarish/mod.rs /^struct siginfo_cldval {$/;" s +siginfo_fault vendor/libc/src/unix/solarish/mod.rs /^impl ::Clone for siginfo_fault {$/;" c +siginfo_fault vendor/libc/src/unix/solarish/mod.rs /^impl ::Copy for siginfo_fault {}$/;" c +siginfo_fault vendor/libc/src/unix/solarish/mod.rs /^struct siginfo_fault {$/;" s +siginfo_kill vendor/libc/src/unix/solarish/mod.rs /^impl ::Clone for siginfo_kill {$/;" c +siginfo_kill vendor/libc/src/unix/solarish/mod.rs /^impl ::Copy for siginfo_kill {}$/;" c +siginfo_kill vendor/libc/src/unix/solarish/mod.rs /^struct siginfo_kill {$/;" s +siginfo_killval vendor/libc/src/unix/solarish/mod.rs /^impl ::Clone for siginfo_killval {$/;" c +siginfo_killval vendor/libc/src/unix/solarish/mod.rs /^impl ::Copy for siginfo_killval {}$/;" c +siginfo_killval vendor/libc/src/unix/solarish/mod.rs /^struct siginfo_killval {$/;" s +siginfo_si_value vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ struct siginfo_si_value {$/;" s method:siginfo_t::si_value +siginfo_si_value vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ struct siginfo_si_value {$/;" s method:siginfo_t::si_value +siginfo_sigcld vendor/libc/src/unix/solarish/mod.rs /^impl ::Clone for siginfo_sigcld {$/;" c +siginfo_sigcld vendor/libc/src/unix/solarish/mod.rs /^impl ::Copy for siginfo_sigcld {}$/;" c +siginfo_sigcld vendor/libc/src/unix/solarish/mod.rs /^struct siginfo_sigcld {$/;" s +siginfo_sigfault vendor/libc/src/unix/linux_like/android/mod.rs /^ struct siginfo_sigfault {$/;" s method:siginfo_t::si_addr +siginfo_sigfault vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ struct siginfo_sigfault {$/;" s method:siginfo_t::si_addr +siginfo_sigfault vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^ struct siginfo_sigfault {$/;" s method:siginfo_t::si_addr +siginfo_sigfault vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^ struct siginfo_sigfault {$/;" s method:siginfo_t::si_addr +siginfo_t builtins_rust/wait/src/signal.rs /^pub struct siginfo_t {$/;" s +siginfo_t r_bash/src/lib.rs /^pub struct siginfo_t {$/;" s +siginfo_t r_glob/src/lib.rs /^pub struct siginfo_t {$/;" s +siginfo_t r_readline/src/lib.rs /^pub struct siginfo_t {$/;" s +siginfo_t vendor/libc/src/unix/bsd/apple/mod.rs /^impl siginfo_t {$/;" c +siginfo_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^impl siginfo_t {$/;" c +siginfo_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^impl siginfo_t {$/;" c +siginfo_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^impl siginfo_t {$/;" c +siginfo_t vendor/libc/src/unix/haiku/mod.rs /^impl siginfo_t {$/;" c +siginfo_t vendor/libc/src/unix/linux_like/android/mod.rs /^impl siginfo_t {$/;" c +siginfo_t vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^impl siginfo_t {$/;" c +siginfo_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^impl siginfo_t {$/;" c +siginfo_t vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs /^impl siginfo_t {$/;" c +siginfo_t vendor/libc/src/unix/solarish/mod.rs /^impl siginfo_t {$/;" c +siginfo_t vendor/libc/src/vxworks/mod.rs /^impl siginfo_t {$/;" c +siginfo_t__bindgen_ty_1__bindgen_ty_1 builtins_rust/wait/src/signal.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_1 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_1 r_bash/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_1 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_1 r_glob/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_1 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_1 r_readline/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_1 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_2 builtins_rust/wait/src/signal.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_2 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_2 r_bash/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_2 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_2 r_glob/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_2 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_2 r_readline/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_2 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_3 builtins_rust/wait/src/signal.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_3 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_3 r_bash/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_3 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_3 r_glob/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_3 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_3 r_readline/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_3 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_4 builtins_rust/wait/src/signal.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_4 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_4 r_bash/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_4 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_4 r_glob/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_4 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_4 r_readline/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_4 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_5 builtins_rust/wait/src/signal.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_5 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_5 r_bash/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_5 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_5 r_glob/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_5 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_5 r_readline/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_5 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 builtins_rust/wait/src/signal.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 r_bash/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 r_glob/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 r_readline/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_6 builtins_rust/wait/src/signal.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_6 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_6 r_bash/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_6 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_6 r_glob/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_6 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_6 r_readline/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_6 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_7 builtins_rust/wait/src/signal.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_7 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_7 r_bash/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_7 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_7 r_glob/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_7 {$/;" s +siginfo_t__bindgen_ty_1__bindgen_ty_7 r_readline/src/lib.rs /^pub struct siginfo_t__bindgen_ty_1__bindgen_ty_7 {$/;" s +siginfo_timer vendor/libc/src/unix/bsd/apple/mod.rs /^ struct siginfo_timer {$/;" s method:siginfo_t::si_value +siginfo_timer vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ struct siginfo_timer {$/;" s method:siginfo_t::si_status +siginfo_timer vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ struct siginfo_timer {$/;" s method:siginfo_t::si_value +siginfo_timer vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ struct siginfo_timer {$/;" s method:siginfo_t::si_value +siginfo_timer vendor/libc/src/unix/linux_like/android/mod.rs /^ struct siginfo_timer {$/;" s method:siginfo_t::si_value +siginfo_timer vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ struct siginfo_timer {$/;" s method:siginfo_t::si_value +sigint_blocked lib/readline/signals.c /^static int sigint_blocked;$/;" v typeref:typename:int file: +sigint_oldmask lib/readline/signals.c /^static int sigint_oldmask;$/;" v typeref:typename:int file: +sigint_oset lib/readline/signals.c /^static sigset_t sigint_set, sigint_oset;$/;" v typeref:typename:sigset_t file: +sigint_set lib/readline/signals.c /^static sigset_t sigint_set, sigint_oset;$/;" v typeref:typename:sigset_t file: +sigint_sighandler builtins_rust/trap/src/intercdep.rs /^ pub fn sigint_sighandler(sig: c_int);$/;" f +sigint_sighandler r_bash/src/lib.rs /^ pub fn sigint_sighandler(arg1: ::std::os::raw::c_int);$/;" f +sigint_sighandler sig.c /^sigint_sighandler (sig)$/;" f +siginterrupt builtins_rust/wait/src/signal.rs /^ pub fn siginterrupt($/;" f +siginterrupt nojobs.c /^# define siginterrupt(/;" d file: +siginterrupt nojobs.c /^siginterrupt (sig, flag)$/;" f file: +siginterrupt r_bash/src/lib.rs /^ pub fn siginterrupt($/;" f +siginterrupt r_glob/src/lib.rs /^ pub fn siginterrupt($/;" f +siginterrupt r_readline/src/lib.rs /^ pub fn siginterrupt($/;" f +sigisemptyset r_bash/src/lib.rs /^ pub fn sigisemptyset(__set: *const sigset_t) -> ::std::os::raw::c_int;$/;" f +sigisemptyset r_glob/src/lib.rs /^ pub fn sigisemptyset(__set: *const sigset_t) -> ::std::os::raw::c_int;$/;" f +sigisemptyset r_readline/src/lib.rs /^ pub fn sigisemptyset(__set: *const sigset_t) -> ::std::os::raw::c_int;$/;" f +sigismember builtins_rust/wait/src/signal.rs /^ pub fn sigismember($/;" f +sigismember r_bash/src/lib.rs /^ pub fn sigismember($/;" f +sigismember r_glob/src/lib.rs /^ pub fn sigismember($/;" f +sigismember r_readline/src/lib.rs /^ pub fn sigismember($/;" f +sigismember sig.h /^# define sigismember(/;" d +sigismember vendor/libc/src/fuchsia/mod.rs /^ pub fn sigismember(set: *const sigset_t, signum: ::c_int) -> ::c_int;$/;" f +sigismember vendor/libc/src/unix/mod.rs /^ pub fn sigismember(set: *const sigset_t, signum: ::c_int) -> ::c_int;$/;" f +sigjmp_buf builtins_rust/read/src/intercdep.rs /^pub type sigjmp_buf = [__jmp_buf_tag; 1usize];$/;" t +sigjmp_buf builtins_rust/rreturn/src/intercdep.rs /^pub type sigjmp_buf = [__jmp_buf_tag; 1usize];$/;" t +sigjmp_buf r_bash/src/lib.rs /^pub type sigjmp_buf = [__jmp_buf_tag; 1usize];$/;" t +sigjmp_buf r_jobs/src/lib.rs /^pub type sigjmp_buf = [__jmp_buf_tag; 1];$/;" t +sigjmp_buf r_readline/src/lib.rs /^pub type sigjmp_buf = [__jmp_buf_tag; 1usize];$/;" t +siglist.o Makefile.in /^siglist.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +siglist.o Makefile.in /^siglist.o: config.h bashtypes.h siglist.h trap.h $/;" t +siglongjmp builtins_rust/read/src/intercdep.rs /^ pub fn siglongjmp(__env: *mut __jmp_buf_tag, __val: c_int);$/;" f +siglongjmp builtins_rust/rreturn/src/intercdep.rs /^ pub fn siglongjmp(__env: *mut __jmp_buf_tag, __val: c_int);$/;" f +siglongjmp r_bash/src/lib.rs /^ pub fn siglongjmp(__env: *mut __jmp_buf_tag, __val: ::std::os::raw::c_int);$/;" f +siglongjmp r_jobs/src/lib.rs /^ fn siglongjmp(_: *mut __jmp_buf_tag, _: c_int) -> !;$/;" f +siglongjmp r_readline/src/lib.rs /^ pub fn siglongjmp(__env: *mut __jmp_buf_tag, __val: ::std::os::raw::c_int);$/;" f +sigmask sig.h /^# define sigmask(/;" d +sigmask vendor/nix/src/ucontext.rs /^ pub fn sigmask(&self) -> &SigSet {$/;" P implementation:UContext +sigmask_mut vendor/nix/src/ucontext.rs /^ pub fn sigmask_mut(&mut self) -> &mut SigSet {$/;" P implementation:UContext +sigmodes trap.c /^static int sigmodes[BASH_NSIG];$/;" v typeref:typename:int[] file: +signal builtins_rust/wait/src/signal.rs /^ pub fn signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_t;$/;" f +signal r_bash/src/lib.rs /^ pub fn signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_t;$/;" f +signal r_glob/src/lib.rs /^ pub fn signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_t;$/;" f +signal r_readline/src/lib.rs /^ pub fn signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_t;$/;" f +signal vendor/libc/src/fuchsia/mod.rs /^ pub fn signal(signum: ::c_int, handler: sighandler_t) -> sighandler_t;$/;" f +signal vendor/libc/src/solid/mod.rs /^ pub fn signal(arg1: c_int, arg2: sighandler_t) -> sighandler_t;$/;" f +signal vendor/libc/src/unix/mod.rs /^ pub fn signal(signum: ::c_int, handler: sighandler_t) -> sighandler_t;$/;" f +signal vendor/libc/src/vxworks/mod.rs /^ pub fn signal(signum: ::c_int, handler: sighandler_t) -> sighandler_t;$/;" f +signal vendor/libc/src/windows/mod.rs /^ pub fn signal(signum: c_int, handler: sighandler_t) -> sighandler_t;$/;" f +signal vendor/nix/src/sys/mod.rs /^pub mod signal;$/;" n +signal_in_progress r_bash/src/lib.rs /^ pub fn signal_in_progress(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_in_progress r_glob/src/lib.rs /^ pub fn signal_in_progress(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_in_progress r_jobs/src/lib.rs /^ fn signal_in_progress(_: c_int) -> c_int;$/;" f +signal_in_progress r_readline/src/lib.rs /^ pub fn signal_in_progress(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_in_progress trap.c /^signal_in_progress (sig)$/;" f +signal_is_hard_ignored builtins_rust/trap/src/intercdep.rs /^ pub fn signal_is_hard_ignored(sig: c_int) -> c_int;$/;" f +signal_is_hard_ignored r_bash/src/lib.rs /^ pub fn signal_is_hard_ignored(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_hard_ignored r_glob/src/lib.rs /^ pub fn signal_is_hard_ignored(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_hard_ignored r_jobs/src/lib.rs /^ fn signal_is_hard_ignored(_: c_int) -> c_int;$/;" f +signal_is_hard_ignored r_readline/src/lib.rs /^ pub fn signal_is_hard_ignored(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_hard_ignored trap.c /^signal_is_hard_ignored (sig)$/;" f +signal_is_ignored builtins_rust/source/src/lib.rs /^ fn signal_is_ignored(sig: i32) -> i32;$/;" f +signal_is_ignored r_bash/src/lib.rs /^ pub fn signal_is_ignored(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_ignored r_glob/src/lib.rs /^ pub fn signal_is_ignored(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_ignored r_readline/src/lib.rs /^ pub fn signal_is_ignored(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_ignored trap.c /^signal_is_ignored (sig)$/;" f +signal_is_pending r_bash/src/lib.rs /^ pub fn signal_is_pending(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_pending r_glob/src/lib.rs /^ pub fn signal_is_pending(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_pending r_readline/src/lib.rs /^ pub fn signal_is_pending(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_pending trap.c /^signal_is_pending (sig)$/;" f +signal_is_special r_bash/src/lib.rs /^ pub fn signal_is_special(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_special r_glob/src/lib.rs /^ pub fn signal_is_special(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_special r_readline/src/lib.rs /^ pub fn signal_is_special(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_special trap.c /^signal_is_special (sig)$/;" f +signal_is_trapped array.c /^signal_is_trapped(s)$/;" f +signal_is_trapped builtins_rust/source/src/lib.rs /^ fn signal_is_trapped(sig: i32) -> i32;$/;" f +signal_is_trapped hashlib.c /^signal_is_trapped (s)$/;" f +signal_is_trapped r_bash/src/lib.rs /^ pub fn signal_is_trapped(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_trapped r_glob/src/lib.rs /^ pub fn signal_is_trapped(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_trapped r_jobs/src/lib.rs /^ fn signal_is_trapped(_: c_int) -> c_int;$/;" f +signal_is_trapped r_readline/src/lib.rs /^ pub fn signal_is_trapped(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +signal_is_trapped trap.c /^signal_is_trapped (sig)$/;" f +signal_name builtins_rust/common/src/lib.rs /^ fn signal_name(sig: i32) -> *mut c_char;$/;" f +signal_name builtins_rust/trap/src/intercdep.rs /^ pub fn signal_name(sig: c_int) -> *mut c_char;$/;" f +signal_name r_bash/src/lib.rs /^ pub fn signal_name(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +signal_name r_glob/src/lib.rs /^ pub fn signal_name(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +signal_name r_jobs/src/lib.rs /^ fn signal_name(_: c_int) -> *mut c_char;$/;" f +signal_name r_readline/src/lib.rs /^ pub fn signal_name(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +signal_name trap.c /^signal_name (sig)$/;" f +signal_names support/signames.c /^char *signal_names[2 * (LASTSIG)];$/;" v typeref:typename:char * [] +signal_names_size support/signames.c /^#define signal_names_size /;" d file: +signal_object_p trap.h /^#define signal_object_p(/;" d +signaled vendor/nix/src/sys/wait.rs /^fn signaled(status: i32) -> bool {$/;" f +signaled vendor/once_cell/src/imp_std.rs /^ signaled: AtomicBool,$/;" m struct:Waiter +signalfd vendor/libc/src/fuchsia/mod.rs /^ pub fn signalfd(fd: ::c_int, mask: *const ::sigset_t, flags: ::c_int) -> ::c_int;$/;" f +signalfd vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn signalfd(fd: ::c_int, mask: *const ::sigset_t, flags: ::c_int) -> ::c_int;$/;" f +signalfd vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn signalfd(fd: ::c_int, mask: *const ::sigset_t, flags: ::c_int) -> ::c_int;$/;" f +signalfd vendor/nix/src/sys/signalfd.rs /^pub fn signalfd(fd: RawFd, mask: &SigSet, flags: SfdFlags) -> Result {$/;" f +signals vendor/nix/src/sys/resource.rs /^ pub fn signals(&self) -> c_long {$/;" P implementation:Usage +signals.o lib/readline/Makefile.in /^signals.o: history.h rlstdc.h$/;" t +signals.o lib/readline/Makefile.in /^signals.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +signals.o lib/readline/Makefile.in /^signals.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +signals.o lib/readline/Makefile.in /^signals.o: rlprivate.h$/;" t +signals.o lib/readline/Makefile.in /^signals.o: signals.c$/;" t +signals_set_flag lib/readline/signals.c /^static int signals_set_flag;$/;" v typeref:typename:int file: +signames CWRU/misc/sigstat.c /^static char *signames[NSIG];$/;" v typeref:typename:char * [] file: +signames.h Makefile.in /^signames.h: $(SIGNAMES_H)$/;" t +signames.o Makefile.in /^signames.o: $(SUPPORT_SRC)signames.c$/;" t +signames.o Makefile.in /^signames.o: config.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +signature support/man2html.c /^char *signature = "


    \\nThis document was created by man2html from %s.
    \\nTime: %s\\n";$/;" v typeref:typename:char * +signed include/stdc.h /^# define signed /;" d +signed include/stdc.h /^# define signed$/;" d +significand builtins_rust/wait/src/signal.rs /^ pub significand: [::std::os::raw::c_ushort; 4usize],$/;" m struct:_fpreg +significand builtins_rust/wait/src/signal.rs /^ pub significand: [::std::os::raw::c_ushort; 4usize],$/;" m struct:_fpxreg +significand builtins_rust/wait/src/signal.rs /^ pub significand: [::std::os::raw::c_ushort; 4usize],$/;" m struct:_libc_fpxreg +significand r_bash/src/lib.rs /^ pub significand: [::std::os::raw::c_ushort; 4usize],$/;" m struct:_fpreg +significand r_bash/src/lib.rs /^ pub significand: [::std::os::raw::c_ushort; 4usize],$/;" m struct:_fpxreg +significand r_bash/src/lib.rs /^ pub significand: [::std::os::raw::c_ushort; 4usize],$/;" m struct:_libc_fpxreg +significand r_glob/src/lib.rs /^ pub significand: [::std::os::raw::c_ushort; 4usize],$/;" m struct:_fpreg +significand r_glob/src/lib.rs /^ pub significand: [::std::os::raw::c_ushort; 4usize],$/;" m struct:_fpxreg +significand r_glob/src/lib.rs /^ pub significand: [::std::os::raw::c_ushort; 4usize],$/;" m struct:_libc_fpxreg +significand r_readline/src/lib.rs /^ pub significand: [::std::os::raw::c_ushort; 4usize],$/;" m struct:_fpreg +significand r_readline/src/lib.rs /^ pub significand: [::std::os::raw::c_ushort; 4usize],$/;" m struct:_fpxreg +significand r_readline/src/lib.rs /^ pub significand: [::std::os::raw::c_ushort; 4usize],$/;" m struct:_libc_fpxreg +signum sig.c /^ int signum;$/;" m struct:termsig typeref:typename:int file: +sigorset r_bash/src/lib.rs /^ pub fn sigorset($/;" f +sigorset r_glob/src/lib.rs /^ pub fn sigorset($/;" f +sigorset r_readline/src/lib.rs /^ pub fn sigorset($/;" f +sigpause r_bash/src/lib.rs /^ pub fn sigpause(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigpause r_glob/src/lib.rs /^ pub fn sigpause(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigpause r_readline/src/lib.rs /^ pub fn sigpause(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigpending builtins_rust/wait/src/signal.rs /^ pub fn sigpending(__set: *mut sigset_t) -> ::std::os::raw::c_int;$/;" f +sigpending r_bash/src/lib.rs /^ pub fn sigpending(__set: *mut sigset_t) -> ::std::os::raw::c_int;$/;" f +sigpending r_glob/src/lib.rs /^ pub fn sigpending(__set: *mut sigset_t) -> ::std::os::raw::c_int;$/;" f +sigpending r_readline/src/lib.rs /^ pub fn sigpending(__set: *mut sigset_t) -> ::std::os::raw::c_int;$/;" f +sigpending vendor/libc/src/fuchsia/mod.rs /^ pub fn sigpending(set: *mut sigset_t) -> ::c_int;$/;" f +sigpending vendor/libc/src/unix/mod.rs /^ pub fn sigpending(set: *mut sigset_t) -> ::c_int;$/;" f +sigpending vendor/libc/src/vxworks/mod.rs /^ pub fn sigpending(set: *mut sigset_t) -> ::c_int;$/;" f +sigpipe builtins/psize.c /^sigpipe (sig)$/;" f +sigprocmask builtins_rust/wait/src/signal.rs /^ pub fn sigprocmask($/;" f +sigprocmask r_bash/src/lib.rs /^ pub fn sigprocmask($/;" f +sigprocmask r_glob/src/lib.rs /^ pub fn sigprocmask($/;" f +sigprocmask r_readline/src/lib.rs /^ pub fn sigprocmask($/;" f +sigprocmask sig.c /^sigprocmask (operation, newset, oldset)$/;" f +sigprocmask vendor/libc/src/fuchsia/mod.rs /^ pub fn sigprocmask(how: ::c_int, set: *const sigset_t, oldset: *mut sigset_t) -> ::c_int;$/;" f +sigprocmask vendor/libc/src/unix/mod.rs /^ pub fn sigprocmask(how: ::c_int, set: *const sigset_t, oldset: *mut sigset_t) -> ::c_int;$/;" f +sigprocmask vendor/libc/src/vxworks/mod.rs /^ pub fn sigprocmask(how: ::c_int, set: *const sigset_t, oldset: *mut sigset_t) -> ::c_int;$/;" f +sigqueue builtins_rust/wait/src/signal.rs /^ pub fn sigqueue($/;" f +sigqueue r_bash/src/lib.rs /^ pub fn sigqueue($/;" f +sigqueue r_glob/src/lib.rs /^ pub fn sigqueue($/;" f +sigqueue r_readline/src/lib.rs /^ pub fn sigqueue($/;" f +sigqueue vendor/libc/src/vxworks/mod.rs /^ pub fn sigqueue(__pid: pid_t, __signo: ::c_int, __value: ::sigval) -> ::c_int;$/;" f +sigrelse r_bash/src/lib.rs /^ pub fn sigrelse(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigrelse r_glob/src/lib.rs /^ pub fn sigrelse(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigrelse r_readline/src/lib.rs /^ pub fn sigrelse(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigreturn builtins_rust/wait/src/signal.rs /^ pub fn sigreturn(__scp: *mut sigcontext) -> ::std::os::raw::c_int;$/;" f +sigreturn r_bash/src/lib.rs /^ pub fn sigreturn(__scp: *mut sigcontext) -> ::std::os::raw::c_int;$/;" f +sigreturn r_glob/src/lib.rs /^ pub fn sigreturn(__scp: *mut sigcontext) -> ::std::os::raw::c_int;$/;" f +sigreturn r_readline/src/lib.rs /^ pub fn sigreturn(__scp: *mut sigcontext) -> ::std::os::raw::c_int;$/;" f +sigset r_bash/src/lib.rs /^ pub fn sigset(__sig: ::std::os::raw::c_int, __disp: __sighandler_t) -> __sighandler_t;$/;" f +sigset r_glob/src/lib.rs /^ pub fn sigset(__sig: ::std::os::raw::c_int, __disp: __sighandler_t) -> __sighandler_t;$/;" f +sigset r_readline/src/lib.rs /^ pub fn sigset(__sig: ::std::os::raw::c_int, __disp: __sighandler_t) -> __sighandler_t;$/;" f +sigset_t builtins_rust/wait/src/signal.rs /^pub type sigset_t = __sigset_t;$/;" t +sigset_t r_bash/src/lib.rs /^pub type sigset_t = __sigset_t;$/;" t +sigset_t r_glob/src/lib.rs /^pub type sigset_t = __sigset_t;$/;" t +sigset_t r_readline/src/lib.rs /^pub type sigset_t = __sigset_t;$/;" t +sigset_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type sigset_t = u32;$/;" t +sigset_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type sigset_t = ::c_uint;$/;" t +sigset_t vendor/libc/src/unix/haiku/mod.rs /^pub type sigset_t = u64;$/;" t +sigset_t vendor/libc/src/unix/hermit/mod.rs /^pub type sigset_t = ::c_ulong;$/;" t +sigset_t vendor/libc/src/unix/linux_like/android/b32/mod.rs /^pub type sigset_t = ::c_ulong;$/;" t +sigset_t vendor/libc/src/unix/newlib/horizon/mod.rs /^pub type sigset_t = ::c_ulong;$/;" t +sigset_t vendor/libc/src/unix/redox/mod.rs /^pub type sigset_t = ::c_ulong;$/;" t +sigset_t vendor/libc/src/vxworks/mod.rs /^pub type sigset_t = ::c_ulonglong;$/;" t +sigset_t vendor/libc/src/wasi.rs /^pub type sigset_t = c_uchar;$/;" t +sigsetmask builtins_rust/wait/src/signal.rs /^ pub fn sigsetmask(__mask: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigsetmask r_bash/src/lib.rs /^ pub fn sigsetmask(__mask: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigsetmask r_glob/src/lib.rs /^ pub fn sigsetmask(__mask: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigsetmask r_readline/src/lib.rs /^ pub fn sigsetmask(__mask: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sigstack builtins_rust/wait/src/signal.rs /^ pub fn sigstack(__ss: *mut sigstack, __oss: *mut sigstack) -> ::std::os::raw::c_int;$/;" f +sigstack builtins_rust/wait/src/signal.rs /^pub struct sigstack {$/;" s +sigstack r_bash/src/lib.rs /^ pub fn sigstack(__ss: *mut sigstack, __oss: *mut sigstack) -> ::std::os::raw::c_int;$/;" f +sigstack r_bash/src/lib.rs /^pub struct sigstack {$/;" s +sigstack r_glob/src/lib.rs /^ pub fn sigstack(__ss: *mut sigstack, __oss: *mut sigstack) -> ::std::os::raw::c_int;$/;" f +sigstack r_glob/src/lib.rs /^pub struct sigstack {$/;" s +sigstack r_readline/src/lib.rs /^ pub fn sigstack(__ss: *mut sigstack, __oss: *mut sigstack) -> ::std::os::raw::c_int;$/;" f +sigstack r_readline/src/lib.rs /^pub struct sigstack {$/;" s +sigstat CWRU/misc/sigstat.c /^sigstat(sig)$/;" f +sigstop_sighandler jobs.c /^sigstop_sighandler (sig)$/;" f file: +sigstop_sighandler r_jobs/src/lib.rs /^unsafe extern "C" fn sigstop_sighandler(mut sig: c_int) {$/;" f +sigstty lib/readline/rltty.c /^static TIOTYPE sigstty, nosigstty;$/;" v typeref:typename:TIOTYPE file: +sigsuspend builtins_rust/wait/src/signal.rs /^ pub fn sigsuspend(__set: *const sigset_t) -> ::std::os::raw::c_int;$/;" f +sigsuspend r_bash/src/lib.rs /^ pub fn sigsuspend(__set: *const sigset_t) -> ::std::os::raw::c_int;$/;" f +sigsuspend r_glob/src/lib.rs /^ pub fn sigsuspend(__set: *const sigset_t) -> ::std::os::raw::c_int;$/;" f +sigsuspend r_readline/src/lib.rs /^ pub fn sigsuspend(__set: *const sigset_t) -> ::std::os::raw::c_int;$/;" f +sigsuspend sig.h /^# define sigsuspend(/;" d +sigsuspend vendor/libc/src/fuchsia/mod.rs /^ pub fn sigsuspend(mask: *const ::sigset_t) -> ::c_int;$/;" f +sigsuspend vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sigsuspend(mask: *const ::sigset_t) -> ::c_int;$/;" f +sigsuspend vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sigsuspend(mask: *const ::sigset_t) -> ::c_int;$/;" f +sigterm_received r_bash/src/lib.rs /^ pub static mut sigterm_received: sig_atomic_t;$/;" v +sigterm_received sig.c /^volatile sig_atomic_t sigterm_received = 0;$/;" v typeref:typename:volatile sig_atomic_t +sigterm_sighandler r_bash/src/lib.rs /^ pub fn sigterm_sighandler(arg1: ::std::os::raw::c_int);$/;" f +sigterm_sighandler sig.c /^sigterm_sighandler (sig)$/;" f +sigtimedwait builtins_rust/wait/src/signal.rs /^ pub fn sigtimedwait($/;" f +sigtimedwait r_bash/src/lib.rs /^ pub fn sigtimedwait($/;" f +sigtimedwait r_glob/src/lib.rs /^ pub fn sigtimedwait($/;" f +sigtimedwait r_readline/src/lib.rs /^ pub fn sigtimedwait($/;" f +sigtimedwait vendor/libc/src/fuchsia/mod.rs /^ pub fn sigtimedwait($/;" f +sigtimedwait vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sigtimedwait($/;" f +sigtimedwait vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn sigtimedwait($/;" f +sigtimedwait vendor/libc/src/unix/haiku/mod.rs /^ pub fn sigtimedwait($/;" f +sigtimedwait vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sigtimedwait($/;" f +sigtimedwait vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sigtimedwait($/;" f +sigval_t builtins_rust/wait/src/signal.rs /^pub type sigval_t = __sigval_t;$/;" t +sigval_t r_bash/src/lib.rs /^pub type sigval_t = __sigval_t;$/;" t +sigval_t r_glob/src/lib.rs /^pub type sigval_t = __sigval_t;$/;" t +sigval_t r_readline/src/lib.rs /^pub type sigval_t = __sigval_t;$/;" t +sigwait builtins_rust/wait/src/signal.rs /^ pub fn sigwait($/;" f +sigwait r_bash/src/lib.rs /^ pub fn sigwait($/;" f +sigwait r_glob/src/lib.rs /^ pub fn sigwait($/;" f +sigwait r_readline/src/lib.rs /^ pub fn sigwait($/;" f +sigwait vendor/libc/src/fuchsia/mod.rs /^ pub fn sigwait(set: *const sigset_t, sig: *mut ::c_int) -> ::c_int;$/;" f +sigwait vendor/libc/src/unix/bsd/mod.rs /^ pub fn sigwait(set: *const sigset_t, sig: *mut ::c_int) -> ::c_int;$/;" f +sigwait vendor/libc/src/unix/haiku/mod.rs /^ pub fn sigwait(set: *const sigset_t, sig: *mut ::c_int) -> ::c_int;$/;" f +sigwait vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sigwait(set: *const sigset_t, sig: *mut ::c_int) -> ::c_int;$/;" f +sigwait vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sigwait(set: *const sigset_t, sig: *mut ::c_int) -> ::c_int;$/;" f +sigwait vendor/libc/src/unix/newlib/mod.rs /^ pub fn sigwait(set: *const sigset_t, sig: *mut ::c_int) -> ::c_int;$/;" f +sigwait vendor/libc/src/unix/solarish/mod.rs /^ pub fn sigwait(set: *const sigset_t, sig: *mut ::c_int) -> ::c_int;$/;" f +sigwaitinfo builtins_rust/wait/src/signal.rs /^ pub fn sigwaitinfo(__set: *const sigset_t, __info: *mut siginfo_t) -> ::std::os::raw::c_int;$/;" f +sigwaitinfo r_bash/src/lib.rs /^ pub fn sigwaitinfo(__set: *const sigset_t, __info: *mut siginfo_t) -> ::std::os::raw::c_int;$/;" f +sigwaitinfo r_glob/src/lib.rs /^ pub fn sigwaitinfo(__set: *const sigset_t, __info: *mut siginfo_t) -> ::std::os::raw::c_int;$/;" f +sigwaitinfo r_readline/src/lib.rs /^ pub fn sigwaitinfo(__set: *const sigset_t, __info: *mut siginfo_t) -> ::std::os::raw::c_int;$/;" f +sigwaitinfo vendor/libc/src/fuchsia/mod.rs /^ pub fn sigwaitinfo(set: *const sigset_t, info: *mut siginfo_t) -> ::c_int;$/;" f +sigwaitinfo vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sigwaitinfo(set: *const sigset_t, info: *mut siginfo_t) -> ::c_int;$/;" f +sigwaitinfo vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn sigwaitinfo(set: *const sigset_t, info: *mut siginfo_t) -> ::c_int;$/;" f +sigwaitinfo vendor/libc/src/unix/haiku/mod.rs /^ pub fn sigwaitinfo(set: *const sigset_t, info: *mut siginfo_t) -> ::c_int;$/;" f +sigwaitinfo vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sigwaitinfo(set: *const sigset_t, info: *mut siginfo_t) -> ::c_int;$/;" f +sigwinch_blocked lib/readline/signals.c /^static int sigwinch_blocked;$/;" v typeref:typename:int file: +sigwinch_oldmask lib/readline/signals.c /^static int sigwinch_oldmask;$/;" v typeref:typename:int file: +sigwinch_oset lib/readline/signals.c /^static sigset_t sigwinch_set, sigwinch_oset;$/;" v typeref:typename:sigset_t file: +sigwinch_received r_bash/src/lib.rs /^ pub static mut sigwinch_received: sig_atomic_t;$/;" v +sigwinch_received sig.c /^volatile sig_atomic_t sigwinch_received = 0;$/;" v typeref:typename:volatile sig_atomic_t +sigwinch_set lib/readline/signals.c /^static sigset_t sigwinch_set, sigwinch_oset;$/;" v typeref:typename:sigset_t file: +sigwinch_set_flag lib/readline/signals.c /^static int sigwinch_set_flag;$/;" v typeref:typename:int file: +sigwinch_sighandler r_bash/src/lib.rs /^ pub fn sigwinch_sighandler(arg1: ::std::os::raw::c_int);$/;" f +sigwinch_sighandler sig.c /^sigwinch_sighandler (sig)$/;" f +simple vendor/memchr/src/tests/memchr/mod.rs /^mod simple;$/;" n +simple vendor/memchr/src/tests/memchr/simple.rs /^fn simple() {$/;" f +simple_com builtins_rust/cd/src/lib.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/command/src/lib.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/common/src/lib.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/complete/src/lib.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/declare/src/lib.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/fc/src/lib.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/fg_bg/src/lib.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/getopts/src/lib.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/jobs/src/lib.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/kill/src/intercdep.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/pushd/src/lib.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/setattr/src/intercdep.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/source/src/lib.rs /^pub struct simple_com {$/;" s +simple_com builtins_rust/type/src/lib.rs /^pub struct simple_com {$/;" s +simple_com command.h /^typedef struct simple_com {$/;" s +simple_com r_bash/src/lib.rs /^pub struct simple_com {$/;" s +simple_com r_glob/src/lib.rs /^pub struct simple_com {$/;" s +simple_com r_readline/src/lib.rs /^pub struct simple_com {$/;" s +simple_command parse.y /^simple_command: simple_command_element$/;" l +simple_command_element parse.y /^simple_command_element: WORD$/;" l +simple_list parse.y /^simple_list: simple_list1$/;" l +simple_list1 parse.y /^simple_list1: simple_list1 AND_AND newline_list simple_list1$/;" l +simple_list_terminator parse.y /^simple_list_terminator: '\\n'$/;" l +simple_memchr_fallback vendor/memchr/src/memmem/prefilter/mod.rs /^fn simple_memchr_fallback($/;" f +simpletests vendor/memchr/src/memmem/rabinkarp.rs /^mod simpletests {$/;" n +simpletests vendor/memchr/src/memmem/twoway.rs /^mod simpletests {$/;" n +sindex builtins/mkbuiltins.c /^ int sindex; \/* Current location in array. *\/$/;" m struct:__anon69e836710108 typeref:typename:int file: +sindex lib/readline/macro.c /^ int sindex;$/;" m struct:saved_macro typeref:typename:int file: +single-help-strings configure.ac /^AC_ARG_ENABLE(single-help-strings, AC_HELP_STRING([--enable-single-help-strings], [store help do/;" e +single_escape support/man2html.c /^static int single_escape = 0;$/;" v typeref:typename:int file: +single_locale lib/intl/dcigettext.c /^ char *single_locale;$/;" v typeref:typename:char * +single_longdoc_strings builtins/gen-helpfiles.c /^int single_longdoc_strings = 1;$/;" v typeref:typename:int +single_longdoc_strings builtins/mkbuiltins.c /^int single_longdoc_strings = 1;$/;" v typeref:typename:int +single_parse_inner vendor/syn/src/attr.rs /^ pub fn single_parse_inner(input: ParseStream) -> Result {$/;" f module:parsing +single_parse_outer vendor/syn/src/attr.rs /^ pub fn single_parse_outer(input: ParseStream) -> Result {$/;" f module:parsing +single_receiver_drop_closes_channel_and_drains vendor/futures-channel/tests/mpsc-close.rs /^fn single_receiver_drop_closes_channel_and_drains() {$/;" f +sink vendor/futures-util/src/io/mod.rs /^mod sink;$/;" n +sink vendor/futures-util/src/io/sink.rs /^pub fn sink() -> Sink {$/;" f +sink vendor/futures-util/src/lib.rs /^pub mod sink;$/;" n +sink vendor/futures-util/src/sink/close.rs /^ sink: &'a mut Si,$/;" m struct:Close +sink vendor/futures-util/src/sink/feed.rs /^ sink: &'a mut Si,$/;" m struct:Feed +sink vendor/futures-util/src/sink/flush.rs /^ sink: &'a mut Si,$/;" m struct:Flush +sink vendor/futures-util/src/sink/send_all.rs /^ sink: &'a mut Si,$/;" m struct:SendAll +sink vendor/futures/tests/auto_traits.rs /^pub mod sink {$/;" n +sink vendor/futures/tests/object_safety.rs /^fn sink() {$/;" f +sink vendor/futures/tests/stream_split.rs /^ sink: U,$/;" m struct:test_split::Join +sink_compat vendor/futures-util/src/compat/compat01as03.rs /^ fn sink_compat(self) -> Compat01As03Sink$/;" P interface:Sink01CompatExt +sink_err_into vendor/futures-util/src/sink/mod.rs /^ fn sink_err_into(self) -> err_into::SinkErrInto$/;" P interface:SinkExt +sink_impl vendor/futures-channel/src/mpsc/mod.rs /^mod sink_impl;$/;" n +sink_map_err vendor/futures-util/src/sink/mod.rs /^ fn sink_map_err(self, f: F) -> SinkMapErr$/;" P interface:SinkExt +sink_map_err vendor/futures/tests/sink.rs /^fn sink_map_err() {$/;" f +sink_pin_mut vendor/futures-util/src/sink/feed.rs /^ pub(super) fn sink_pin_mut(&mut self) -> Pin<&mut Si> {$/;" P implementation:Feed +sink_unfold vendor/futures/tests/sink.rs /^fn sink_unfold() {$/;" f +siprintf vendor/libc/src/solid/mod.rs /^ pub fn siprintf(arg1: *mut c_char, arg2: *const c_char, ...) -> c_int;$/;" f +siscanf vendor/libc/src/solid/mod.rs /^ pub fn siscanf(arg1: *mut c_char, arg2: *const c_char, ...) -> c_int;$/;" f +size builtins/mkbuiltins.c /^ int size; \/* Number of slots allocated to array. *\/$/;" m struct:__anon69e836710108 typeref:typename:int file: +size lib/malloc/table.h /^ size_t size;$/;" m struct:mr_table typeref:typename:size_t +size lib/readline/history.h /^ int size; \/* Number of slots allocated to this array. *\/$/;" m struct:_hist_state typeref:typename:int +size lib/termcap/termcap.c /^ int size;$/;" m struct:buffer typeref:typename:int file: +size r_bash/src/lib.rs /^ pub size: ::std::os::raw::c_int,$/;" m struct:fd_bitmap +size r_readline/src/lib.rs /^ pub size: ::std::os::raw::c_int,$/;" m struct:_hist_state +size shell.h /^ int size;$/;" m struct:fd_bitmap typeref:typename:int +size support/man2html.c /^ int size, align, valign, colspan, rowspan, font, vleft, vright, space,$/;" m struct:TABLEITEM typeref:typename:int file: +size unwind_prot.c /^ int size;$/;" m struct:__anon5806582f0108 typeref:typename:int file: +size vendor/futures-executor/src/thread_pool.rs /^ size: usize,$/;" m struct:PoolState +size vendor/nix/src/sys/socket/addr.rs /^ fn size() {$/;" f module:tests::link +size vendor/nix/src/sys/socket/addr.rs /^ fn size() {$/;" f module:tests::sockaddr_in +size vendor/nix/src/sys/socket/addr.rs /^ fn size() {$/;" f module:tests::sockaddr_in6 +size vendor/nix/src/sys/socket/addr.rs /^ fn size() {$/;" f module:tests::unixaddr +size vendor/nix/src/sys/socket/addr.rs /^ fn size() -> libc::socklen_t where Self: Sized {$/;" P implementation:UnixAddr +size vendor/nix/src/sys/socket/addr.rs /^ fn size() -> libc::socklen_t where Self: Sized {$/;" P interface:SockaddrLike +size vendor/smallvec/src/lib.rs /^ fn size() -> usize {$/;" P implementation:N +size vendor/smallvec/src/lib.rs /^ fn size() -> usize;$/;" P interface:Array +size_hint vendor/chunky-vec/src/lib.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Iter +size_hint vendor/chunky-vec/src/lib.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IterMut +size_hint vendor/futures-core/src/stream.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:if_alloc::AssertUnwindSafe +size_hint vendor/futures-core/src/stream.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:if_alloc::Box +size_hint vendor/futures-core/src/stream.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:S +size_hint vendor/futures-core/src/stream.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P interface:Stream +size_hint vendor/futures-core/src/stream.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-executor/src/local_pool.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:BlockingStream +size_hint vendor/futures-util/src/future/either.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/sink/buffer.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/empty.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Empty +size_hint vendor/futures-util/src/stream/futures_ordered.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:FuturesOrdered +size_hint vendor/futures-util/src/stream/futures_unordered/iter.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IntoIter +size_hint vendor/futures-util/src/stream/futures_unordered/iter.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Iter +size_hint vendor/futures-util/src/stream/futures_unordered/iter.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IterMut +size_hint vendor/futures-util/src/stream/futures_unordered/iter.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IterPinMut +size_hint vendor/futures-util/src/stream/futures_unordered/iter.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IterPinRef +size_hint vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:FuturesUnordered +size_hint vendor/futures-util/src/stream/iter.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/once.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Once +size_hint vendor/futures-util/src/stream/pending.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Pending +size_hint vendor/futures-util/src/stream/poll_immediate.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/repeat.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/repeat_with.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:RepeatWith +size_hint vendor/futures-util/src/stream/select_all.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IntoIter +size_hint vendor/futures-util/src/stream/select_all.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Iter +size_hint vendor/futures-util/src/stream/select_all.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IterMut +size_hint vendor/futures-util/src/stream/stream/buffer_unordered.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/buffered.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/catch_unwind.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:CatchUnwind +size_hint vendor/futures-util/src/stream/stream/chain.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/chunks.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Chunks +size_hint vendor/futures-util/src/stream/stream/cycle.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/enumerate.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Enumerate +size_hint vendor/futures-util/src/stream/stream/filter.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/filter_map.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/fuse.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Fuse +size_hint vendor/futures-util/src/stream/stream/map.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/peek.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Peekable +size_hint vendor/futures-util/src/stream/stream/ready_chunks.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:ReadyChunks +size_hint vendor/futures-util/src/stream/stream/scan.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/skip.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Skip +size_hint vendor/futures-util/src/stream/stream/skip_while.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/take.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/take_until.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/take_while.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/then.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/stream/zip.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/try_stream/and_then.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/try_stream/into_stream.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IntoStream +size_hint vendor/futures-util/src/stream/try_stream/or_else.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/try_stream/try_chunks.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:TryChunks +size_hint vendor/futures-util/src/stream/try_stream/try_filter.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/try_stream/try_filter_map.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/try_stream/try_skip_while.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/futures-util/src/stream/try_stream/try_take_while.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" f +size_hint vendor/memchr/src/memchr/iter.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Memchr +size_hint vendor/memchr/src/memchr/iter.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Memchr2 +size_hint vendor/memchr/src/memchr/iter.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Memchr3 +size_hint vendor/nix/src/sys/select.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Fds +size_hint vendor/proc-macro2/src/lib.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:token_stream::IntoIter +size_hint vendor/proc-macro2/src/rcvec.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:RcVecIntoIter +size_hint vendor/proc-macro2/src/wrapper.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:TokenTreeIter +size_hint vendor/slab/src/lib.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Drain +size_hint vendor/slab/src/lib.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IntoIter +size_hint vendor/slab/src/lib.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Iter +size_hint vendor/slab/src/lib.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IterMut +size_hint vendor/smallvec/src/arbitrary.rs /^ fn size_hint(depth: usize) -> (usize, Option) {$/;" f +size_hint vendor/smallvec/src/lib.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Drain +size_hint vendor/smallvec/src/lib.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IntoIter +size_hint vendor/smallvec/src/tests.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:insert_many_panic::BadIter +size_hint vendor/smallvec/src/tests.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:MockHintIter +size_hint vendor/syn/src/punctuated.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IntoIter +size_hint vendor/syn/src/punctuated.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IntoPairs +size_hint vendor/syn/src/punctuated.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Iter +size_hint vendor/syn/src/punctuated.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:IterMut +size_hint vendor/syn/src/punctuated.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:Pairs +size_hint vendor/syn/src/punctuated.rs /^ fn size_hint(&self) -> (usize, Option) {$/;" P implementation:PairsMut +size_of_pointee vendor/memoffset/src/lib.rs /^ pub fn size_of_pointee(_ptr: *const T) -> usize {$/;" f module:__priv +size_t builtins_rust/enable/src/lib.rs /^pub type size_t = libc::c_ulong;$/;" t +size_t vendor/libc/src/fuchsia/mod.rs /^pub type size_t = usize;$/;" t +size_t vendor/libc/src/hermit/mod.rs /^pub type size_t = usize;$/;" t +size_t vendor/libc/src/psp.rs /^pub type size_t = usize;$/;" t +size_t vendor/libc/src/sgx.rs /^pub type size_t = usize;$/;" t +size_t vendor/libc/src/solid/mod.rs /^pub type size_t = ::uintptr_t;$/;" t +size_t vendor/libc/src/switch.rs /^pub type size_t = usize;$/;" t +size_t vendor/libc/src/unix/mod.rs /^pub type size_t = usize;$/;" t +size_t vendor/libc/src/vxworks/mod.rs /^pub type size_t = ::uintptr_t;$/;" t +size_t vendor/libc/src/wasi.rs /^pub type size_t = usize;$/;" t +size_t vendor/libc/src/windows/mod.rs /^pub type size_t = usize;$/;" t +size_t vendor/winapi/src/vc/vcruntime.rs /^pub type size_t = usize;$/;" t +sizebuf support/man2html.c /^static char sizebuf[200];$/;" v typeref:typename:char[200] file: +sizes vendor/futures/tests/future_join_all.rs /^ fn sizes(bufs: Vec<&[u8]>) -> impl Future> {$/;" f function:join_all_iter_lifetime +sizes vendor/futures/tests/future_try_join_all.rs /^ fn sizes(bufs: Vec<&[u8]>) -> impl Future, ()>> {$/;" f function:try_join_all_iter_lifetime +skip vendor/futures-util/src/stream/stream/mod.rs /^ fn skip(self, n: usize) -> Skip$/;" P interface:StreamExt +skip vendor/futures-util/src/stream/stream/mod.rs /^mod skip;$/;" n +skip vendor/futures/tests_disabled/stream.rs /^fn skip() {$/;" f +skip vendor/nix/test/common/mod.rs /^macro_rules! skip {$/;" M +skip vendor/smallvec/src/lib.rs /^ skip: Range, \/\/ Space we copied-out-of, but haven't written-to yet.$/;" m struct:SmallVec::insert_many::DropOnPanic +skip vendor/syn/src/buffer.rs /^ pub(crate) fn skip(self) -> Option> {$/;" P implementation:Cursor +skip vendor/syn/src/gen/visit.rs /^macro_rules! skip {$/;" M +skip vendor/syn/src/gen/visit_mut.rs /^macro_rules! skip {$/;" M +skip vendor/syn/src/whitespace.rs /^pub fn skip(mut s: &str) -> &str {$/;" f +skip_blank vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn skip_blank(&mut self) {$/;" f +skip_blank_block vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn skip_blank_block(&mut self) -> usize {$/;" f +skip_blank_inline vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn skip_blank_inline(&mut self) -> usize {$/;" f +skip_comment vendor/fluent-syntax/src/parser/comment.rs /^ pub(super) fn skip_comment(&mut self) {$/;" f +skip_digits vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn skip_digits(&mut self) -> Result<()> {$/;" f +skip_double_quoted subst.c /^skip_double_quoted (string, slen, sind, flags)$/;" f file: +skip_eol vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn skip_eol(&mut self) -> bool {$/;" f +skip_escape support/man2html.c /^static int skip_escape = 0;$/;" v typeref:typename:int file: +skip_if_cirrus vendor/nix/test/common/mod.rs /^macro_rules! skip_if_cirrus {$/;" M +skip_if_jailed vendor/nix/test/common/mod.rs /^macro_rules! skip_if_jailed {$/;" M +skip_if_not_root vendor/nix/test/common/mod.rs /^macro_rules! skip_if_not_root {$/;" M +skip_matched_pair subst.c /^skip_matched_pair (string, start, open, close, flags)$/;" f file: +skip_passes_errors_through vendor/futures/tests_disabled/stream.rs /^fn skip_passes_errors_through() {$/;" f +skip_single_quoted subst.c /^skip_single_quoted (string, slen, sind, flags)$/;" f file: +skip_this_indent print_cmd.c /^static int skip_this_indent;$/;" v typeref:typename:int file: +skip_this_indent r_print_cmd/src/lib.rs /^static mut skip_this_indent:c_int = 0;$/;" v +skip_till_newline support/man2html.c /^skip_till_newline(char *c)$/;" f typeref:typename:char * file: +skip_to_delim r_bash/src/lib.rs /^ pub fn skip_to_delim($/;" f +skip_to_delim subst.c /^skip_to_delim (string, start, delims, flags)$/;" f +skip_to_histexp r_bash/src/lib.rs /^ pub fn skip_to_histexp($/;" f +skip_to_histexp subst.c /^skip_to_histexp (string, start, delims, flags)$/;" f +skip_to_next_entry_start vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn skip_to_next_entry_start(&mut self) {$/;" f +skip_unicode_escape_sequence vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn skip_unicode_escape_sequence(&mut self, length: usize) -> Result<()> {$/;" f +skip_until support/texi2html /^sub skip_until {$/;" s +skip_while vendor/futures-util/src/stream/stream/mod.rs /^ fn skip_while(self, f: F) -> SkipWhile$/;" P interface:StreamExt +skip_while vendor/futures-util/src/stream/stream/mod.rs /^mod skip_while;$/;" n +skip_while vendor/futures/tests_disabled/stream.rs /^fn skip_while() {$/;" f +skip_whitespace vendor/proc-macro2/src/parse.rs /^fn skip_whitespace(input: Cursor) -> Cursor {$/;" f +skiparith subst.c /^skiparith (substr, delim)$/;" f file: +skipname lib/glob/glob.c /^skipname (pat, dname, flags)$/;" f file: +skipped vendor/memchr/src/memmem/prefilter/mod.rs /^ skipped: u32,$/;" m struct:PrefilterState +skipquotes alias.c /^skipquotes (string, start)$/;" f file: +skips vendor/memchr/src/memmem/prefilter/mod.rs /^ fn skips(&self) -> u32 {$/;" P implementation:PrefilterState +skips vendor/memchr/src/memmem/prefilter/mod.rs /^ skips: u32,$/;" m struct:PrefilterState +skipsubscript r_bash/src/lib.rs /^ pub fn skipsubscript($/;" f +skipsubscript subst.c /^skipsubscript (string, start, flags)$/;" f +skipws alias.c /^skipws (string, start)$/;" f file: +slab vendor/slab/src/lib.rs /^ slab: &'a mut Slab,$/;" m struct:Slab::compact::CleanupGuard +slab vendor/slab/src/lib.rs /^ slab: &'a mut Slab,$/;" m struct:VacantEntry +slab_get_mut vendor/slab/tests/slab.rs /^fn slab_get_mut() {$/;" f +slashify_in_here_document syntax.h /^#define slashify_in_here_document /;" d +slashify_in_quotes lib/readline/histexpand.c /^#define slashify_in_quotes /;" d file: +slashify_in_quotes syntax.h /^#define slashify_in_quotes /;" d +slave vendor/nix/src/pty.rs /^ pub slave: RawFd,$/;" m struct:OpenptyResult +sleep r_bash/src/lib.rs /^ pub fn sleep(__seconds: ::std::os::raw::c_uint) -> ::std::os::raw::c_uint;$/;" f +sleep r_glob/src/lib.rs /^ pub fn sleep(__seconds: ::std::os::raw::c_uint) -> ::std::os::raw::c_uint;$/;" f +sleep r_readline/src/lib.rs /^ pub fn sleep(__seconds: ::std::os::raw::c_uint) -> ::std::os::raw::c_uint;$/;" f +sleep vendor/libc/src/fuchsia/mod.rs /^ pub fn sleep(secs: ::c_uint) -> ::c_uint;$/;" f +sleep vendor/libc/src/solid/mod.rs /^ pub fn sleep(arg1: c_uint) -> c_uint;$/;" f +sleep vendor/libc/src/unix/mod.rs /^ pub fn sleep(secs: ::c_uint) -> ::c_uint;$/;" f +sleep vendor/libc/src/vxworks/mod.rs /^ pub fn sleep(secs: ::c_uint) -> ::c_uint;$/;" f +sleep vendor/libc/src/wasi.rs /^ pub fn sleep(secs: ::c_uint) -> ::c_uint;$/;" f +sleep vendor/nix/src/unistd.rs /^pub fn sleep(seconds: c_uint) -> c_uint {$/;" f +slen support/man2html.c /^ int nr, slen;$/;" m struct:STRDEF typeref:typename:int file: +slice vendor/fluent-syntax/src/parser/errors.rs /^ pub slice: Option>,$/;" m struct:ParserError +slice vendor/fluent-syntax/src/parser/mod.rs /^mod slice;$/;" n +slice vendor/fluent-syntax/src/parser/slice.rs /^ fn slice(&self, range: Range) -> Self {$/;" P implementation:String +slice vendor/fluent-syntax/src/parser/slice.rs /^ fn slice(&self, range: Range) -> Self {$/;" P implementation:str +slice vendor/fluent-syntax/src/parser/slice.rs /^ fn slice(&self, range: Range) -> Self;$/;" P interface:Slice +sline lib/readline/rlprivate.h /^ char *sline;$/;" m struct:__rl_search_context typeref:typename:char * +sline r_readline/src/lib.rs /^ pub sline: *mut ::std::os::raw::c_char,$/;" m struct:__rl_search_context +sline_index lib/readline/rlprivate.h /^ int sline_index;$/;" m struct:__rl_search_context typeref:typename:int +sline_index r_readline/src/lib.rs /^ pub sline_index: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +sline_len lib/readline/rlprivate.h /^ int sline_len;$/;" m struct:__rl_search_context typeref:typename:int +sline_len r_readline/src/lib.rs /^ pub sline_len: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +slist builtins_rust/enable/src/lib.rs /^ pub slist: *mut STRINGLIST,$/;" m struct:_list_of_items +slist pcomplete.h /^ STRINGLIST *slist;$/;" m struct:_list_of_items typeref:typename:STRINGLIST * +slist r_bash/src/lib.rs /^ pub slist: *mut STRINGLIST,$/;" m struct:_list_of_items +slot vendor/futures-util/src/stream/stream/split.rs /^ slot: Option,$/;" m struct:SplitSink +slow vendor/once_cell/examples/regex.rs /^fn slow() {$/;" f +small vendor/winapi/src/shared/rpcndr.rs /^pub type small = c_char;$/;" t +smallvec vendor/smallvec/src/lib.rs /^macro_rules! smallvec {$/;" M +smallvec vendor/smallvec/tests/macro.rs /^fn smallvec() {$/;" f +smallvec_inline vendor/smallvec/src/lib.rs /^macro_rules! smallvec_inline {$/;" M +smatch.o lib/glob/Makefile.in /^smatch.o: $(BASHINCDIR)\/ansi_stdlib.h $(topdir)\/bashansi.h$/;" t +smatch.o lib/glob/Makefile.in /^smatch.o: $(BASHINCDIR)\/chartypes.h$/;" t +smatch.o lib/glob/Makefile.in /^smatch.o: $(BASHINCDIR)\/shmbutil.h$/;" t +smatch.o lib/glob/Makefile.in /^smatch.o: $(BUILD_DIR)\/config.h$/;" t +smatch.o lib/glob/Makefile.in /^smatch.o: $(topdir)\/xmalloc.h$/;" t +smatch.o lib/glob/Makefile.in /^smatch.o: sm_loop.c$/;" t +smatch.o lib/glob/Makefile.in /^smatch.o: smatch.c$/;" t +smatch.o lib/glob/Makefile.in /^smatch.o: strmatch.h$/;" t +smoke vendor/cfg-if/tests/xcrate.rs /^fn smoke() {$/;" f +smoke vendor/futures-channel/src/lock.rs /^ fn smoke() {$/;" f module:tests +smoke vendor/futures-channel/tests/mpsc-close.rs /^fn smoke() {$/;" f +smoke vendor/futures/tests/future_inspect.rs /^fn smoke() {$/;" f +smoke vendor/futures/tests/future_select_all.rs /^fn smoke() {$/;" f +smoke vendor/futures/tests_disabled/bilock.rs /^fn smoke() {$/;" f +smoke_once vendor/once_cell/src/imp_std.rs /^ fn smoke_once() {$/;" f module:tests +smoke_oneshot vendor/futures/tests_disabled/all.rs /^fn smoke_oneshot() {$/;" f +smoke_poll vendor/futures-channel/tests/oneshot.rs /^fn smoke_poll() {$/;" f +smuggled_speculative_cursor_between_brackets vendor/syn/tests/test_parse_buffer.rs /^fn smuggled_speculative_cursor_between_brackets() {$/;" f +smuggled_speculative_cursor_between_sources vendor/syn/tests/test_parse_buffer.rs /^fn smuggled_speculative_cursor_between_sources() {$/;" f +smuggled_speculative_cursor_into_brackets vendor/syn/tests/test_parse_buffer.rs /^fn smuggled_speculative_cursor_into_brackets() {$/;" f +snapshot vendor/syn/tests/macros/mod.rs /^macro_rules! snapshot {$/;" M +snapshot_impl vendor/syn/tests/macros/mod.rs /^macro_rules! snapshot_impl {$/;" M +snarf_hosts_from_file bashline.c /^snarf_hosts_from_file (filename)$/;" f file: +sndPlaySoundA vendor/winapi/src/um/playsoundapi.rs /^ pub fn sndPlaySoundA($/;" f +sndPlaySoundW vendor/winapi/src/um/playsoundapi.rs /^ pub fn sndPlaySoundW($/;" f +sniprintf vendor/libc/src/solid/mod.rs /^ pub fn sniprintf(arg1: *mut c_char, arg2: size_t, arg3: *const c_char, ...) -> c_int;$/;" f +snooze vendor/libc/src/unix/haiku/native.rs /^ pub fn snooze(amount: bigtime_t) -> status_t;$/;" f +snooze_etc vendor/libc/src/unix/haiku/native.rs /^ pub fn snooze_etc(amount: bigtime_t, timeBase: ::c_int, flags: u32) -> status_t;$/;" f +snooze_until vendor/libc/src/unix/haiku/native.rs /^ pub fn snooze_until(time: bigtime_t, timeBase: ::c_int) -> status_t;$/;" f +snprintb vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn snprintb($/;" f +snprintb_m vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn snprintb_m($/;" f +snprintf lib/sh/snprintf.c /^snprintf(char *string, size_t length, const char * format, ...)$/;" f typeref:typename:int +snprintf r_bash/src/lib.rs /^ pub fn snprintf($/;" f +snprintf r_readline/src/lib.rs /^ pub fn snprintf($/;" f +snprintf vendor/libc/src/fuchsia/mod.rs /^ pub fn snprintf(s: *mut ::c_char, n: ::size_t, format: *const ::c_char, ...) -> ::c_int;$/;" f +snprintf vendor/libc/src/solid/mod.rs /^ pub fn snprintf(arg1: *mut c_char, arg2: size_t, arg3: *const c_char, ...) -> c_int;$/;" f +snprintf vendor/libc/src/unix/mod.rs /^ pub fn snprintf(s: *mut ::c_char, n: ::size_t, format: *const ::c_char, ...) -> ::c_int;$/;" f +snprintf vendor/libc/src/vxworks/mod.rs /^ pub fn snprintf(s: *mut ::c_char, n: ::size_t, format: *const ::c_char, ...) -> ::c_int;$/;" f +snprintf vendor/libc/src/wasi.rs /^ pub fn snprintf(s: *mut ::c_char, n: ::size_t, format: *const ::c_char, ...) -> ::c_int;$/;" f +snprintf.o lib/sh/Makefile.in /^snprintf.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/chartypes.h$/;" t +snprintf.o lib/sh/Makefile.in /^snprintf.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +snprintf.o lib/sh/Makefile.in /^snprintf.o: ${BASHINCDIR}\/stdc.h ${topdir}\/bashansi.h ${topdir}\/xmalloc.h$/;" t +snprintf.o lib/sh/Makefile.in /^snprintf.o: ${BASHINCDIR}\/typemax.h$/;" t +snprintf.o lib/sh/Makefile.in /^snprintf.o: ${BUILD_DIR}\/config.h$/;" t +snprintf.o lib/sh/Makefile.in /^snprintf.o: snprintf.c$/;" t +sock lib/readline/colors.h /^ sock,$/;" e enum:filetype +sockaddr_in vendor/nix/src/sys/socket/addr.rs /^ mod sockaddr_in {$/;" n module:tests +sockaddr_in6 vendor/nix/src/sys/socket/addr.rs /^ mod sockaddr_in6 {$/;" n module:tests +sockaddr_storage_to_addr vendor/nix/src/sys/socket/mod.rs /^pub fn sockaddr_storage_to_addr($/;" f +socket vendor/libc/src/fuchsia/mod.rs /^ pub fn socket(domain: ::c_int, ty: ::c_int, protocol: ::c_int) -> ::c_int;$/;" f +socket vendor/libc/src/unix/mod.rs /^ pub fn socket(domain: ::c_int, ty: ::c_int, protocol: ::c_int) -> ::c_int;$/;" f +socket vendor/libc/src/vxworks/mod.rs /^ pub fn socket(domain: ::c_int, _type: ::c_int, protocol: ::c_int) -> ::c_int;$/;" f +socket vendor/libc/src/windows/mod.rs /^ pub fn socket(af: ::c_int, socket_type: ::c_int, protocol: ::c_int) -> SOCKET;$/;" f +socket vendor/nix/src/sys/socket/mod.rs /^pub fn socket>>(domain: AddressFamily, ty: SockType, flags: SockFla/;" f +socket vendor/winapi/src/um/winsock2.rs /^ pub fn socket($/;" f +socket_atomic_cloexec vendor/nix/src/features.rs /^ pub const fn socket_atomic_cloexec() -> bool {$/;" f module:os +socket_atomic_cloexec vendor/nix/src/features.rs /^ pub fn socket_atomic_cloexec() -> bool {$/;" f module:os +socketpair vendor/libc/src/fuchsia/mod.rs /^ pub fn socketpair($/;" f +socketpair vendor/libc/src/unix/mod.rs /^ pub fn socketpair($/;" f +socketpair vendor/nix/src/sys/socket/mod.rs /^pub fn socketpair>>(domain: AddressFamily, ty: SockType, protocol: /;" f +socklen_t r_bash/src/lib.rs /^pub type socklen_t = __socklen_t;$/;" t +socklen_t r_glob/src/lib.rs /^pub type socklen_t = __socklen_t;$/;" t +socklen_t r_readline/src/lib.rs /^pub type socklen_t = __socklen_t;$/;" t +socklen_t vendor/libc/src/fuchsia/mod.rs /^pub type socklen_t = u32;$/;" t +socklen_t vendor/libc/src/psp.rs /^pub type socklen_t = u32;$/;" t +socklen_t vendor/libc/src/unix/bsd/mod.rs /^pub type socklen_t = u32;$/;" t +socklen_t vendor/libc/src/unix/haiku/mod.rs /^pub type socklen_t = u32;$/;" t +socklen_t vendor/libc/src/unix/hermit/mod.rs /^pub type socklen_t = u32;$/;" t +socklen_t vendor/libc/src/unix/linux_like/android/b32/mod.rs /^pub type socklen_t = i32;$/;" t +socklen_t vendor/libc/src/unix/linux_like/android/b64/mod.rs /^pub type socklen_t = u32;$/;" t +socklen_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type socklen_t = u32;$/;" t +socklen_t vendor/libc/src/unix/linux_like/linux/mod.rs /^pub type socklen_t = u32;$/;" t +socklen_t vendor/libc/src/unix/newlib/mod.rs /^pub type socklen_t = u32;$/;" t +socklen_t vendor/libc/src/unix/redox/mod.rs /^pub type socklen_t = u32;$/;" t +socklen_t vendor/libc/src/unix/solarish/mod.rs /^pub type socklen_t = ::c_uint;$/;" t +socklen_t vendor/libc/src/vxworks/mod.rs /^pub type socklen_t = ::c_uint;$/;" t +socklen_t vendor/winapi/src/um/ws2tcpip.rs /^pub type socklen_t = c_int;$/;" t +sockopt vendor/nix/src/sys/socket/mod.rs /^pub mod sockopt;$/;" n +sockopt_impl vendor/nix/src/sys/socket/sockopt.rs /^macro_rules! sockopt_impl {$/;" M +softpub vendor/winapi/src/um/mod.rs /^#[cfg(feature = "softpub")] pub mod softpub;$/;" n +sort_aliases alias.c /^sort_aliases (array)$/;" f file: +sort_variables r_bash/src/lib.rs /^ pub fn sort_variables(arg1: *mut *mut SHELL_VAR);$/;" f +sort_variables variables.c /^sort_variables (array)$/;" f +sorted_index_files support/texi2dvi /^sorted_index_files ()$/;" f +sorted_index_filter support/texi2dvi /^sorted_index_filter ()$/;" f +source vendor/fluent-bundle/src/resource.rs /^ pub fn source(&self) -> &str {$/;" P implementation:FluentResource +source vendor/fluent-syntax/src/parser/core.rs /^ pub(super) source: S,$/;" m struct:Parser +source vendor/libloading/src/error.rs /^ fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {$/;" P implementation:Error +source vendor/thiserror-impl/src/attr.rs /^ pub source: Option<&'a Attribute>,$/;" m struct:Attrs +source vendor/thiserror/tests/test_backtrace.rs /^ source: Box,$/;" m struct:structs::BoxDynErrorBacktrace +source vendor/thiserror/tests/test_backtrace.rs /^ source: Inner,$/;" m struct:structs::ArcBacktraceFrom +source vendor/thiserror/tests/test_backtrace.rs /^ source: Inner,$/;" m struct:structs::BacktraceFrom +source vendor/thiserror/tests/test_backtrace.rs /^ source: Inner,$/;" m struct:structs::OptBacktraceFrom +source vendor/thiserror/tests/test_backtrace.rs /^ source: InnerBacktrace,$/;" m struct:structs::CombinedBacktraceFrom +source vendor/thiserror/tests/test_backtrace.rs /^ source: anyhow::Error,$/;" m struct:structs::AnyhowBacktrace +source vendor/thiserror/tests/test_from.rs /^ source: Option,$/;" m struct:ErrorStructOptional +source vendor/thiserror/tests/test_from.rs /^ source: io::Error,$/;" m struct:ErrorStruct +source vendor/thiserror/tests/test_generics.rs /^ pub source: StructDebugGeneric,$/;" m struct:StructFromGeneric +source vendor/thiserror/tests/test_option.rs /^ source: Option,$/;" m struct:structs::OptSourceAlwaysBacktrace +source vendor/thiserror/tests/test_option.rs /^ source: Option,$/;" m struct:structs::OptSourceNoBacktrace +source vendor/thiserror/tests/test_option.rs /^ source: Option,$/;" m struct:structs::OptSourceOptBacktrace +source vendor/thiserror/tests/test_option.rs /^ source: anyhow::Error,$/;" m struct:structs::AlwaysSourceOptBacktrace +source vendor/thiserror/tests/test_source.rs /^ source: Box,$/;" m struct:BoxedSource +source vendor/thiserror/tests/test_source.rs /^ source: String,$/;" m struct:ExplicitSource +source vendor/thiserror/tests/test_source.rs /^ source: io::Error,$/;" m struct:ImplicitSource +source vendor/thiserror/tests/ui/from-not-source.rs /^ source: std::io::Error,$/;" m struct:Error +source vendor/thiserror/tests/ui/source-struct-not-error.rs /^ source: NotError,$/;" m struct:ErrorStruct +source.o builtins/Makefile.in /^source.o: $(srcdir)\/bashgetopt.h $(topdir)\/flags.h $(topdir)\/trap.h$/;" t +source.o builtins/Makefile.in /^source.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +source.o builtins/Makefile.in /^source.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/findcmd.h$/;" t +source.o builtins/Makefile.in /^source.o: $(topdir)\/execute_cmd.h$/;" t +source.o builtins/Makefile.in /^source.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +source.o builtins/Makefile.in /^source.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h/;" t +source.o builtins/Makefile.in /^source.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +source.o builtins/Makefile.in /^source.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +source.o builtins/Makefile.in /^source.o: ..\/pathnames.h$/;" t +source.o builtins/Makefile.in /^source.o: source.def$/;" t +source_a execute_cmd.h /^ ARRAY *source_a;$/;" m struct:func_array_state typeref:typename:ARRAY * +source_a r_bash/src/lib.rs /^ pub source_a: *mut ARRAY,$/;" m struct:func_array_state +source_field vendor/thiserror-impl/src/prop.rs /^ pub(crate) fn source_field(&self) -> Option<&Field> {$/;" P implementation:Struct +source_field vendor/thiserror-impl/src/prop.rs /^ pub(crate) fn source_field(&self) -> Option<&Field> {$/;" P implementation:Variant +source_field vendor/thiserror-impl/src/prop.rs /^fn source_field<'a, 'b>(fields: &'a [Field<'b>]) -> Option<&'a Field<'b>> {$/;" f +source_file builtins/evalfile.c /^source_file (filename, sflags)$/;" f +source_file builtins_rust/cd/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:function_def +source_file builtins_rust/cd/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:group_com +source_file builtins_rust/command/src/lib.rs /^ pub source_file: *mut libc::c_char,$/;" m struct:function_def +source_file builtins_rust/common/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:function_def +source_file builtins_rust/common/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:group_com +source_file builtins_rust/complete/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:function_def +source_file builtins_rust/complete/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:group_com +source_file builtins_rust/declare/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:function_def +source_file builtins_rust/declare/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:group_com +source_file builtins_rust/fc/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:function_def +source_file builtins_rust/fc/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:group_com +source_file builtins_rust/fg_bg/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:function_def +source_file builtins_rust/fg_bg/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:group_com +source_file builtins_rust/getopts/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:function_def +source_file builtins_rust/getopts/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:group_com +source_file builtins_rust/jobs/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:function_def +source_file builtins_rust/jobs/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:group_com +source_file builtins_rust/kill/src/intercdep.rs /^ pub source_file: *mut c_char,$/;" m struct:function_def +source_file builtins_rust/pushd/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:function_def +source_file builtins_rust/pushd/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:group_com +source_file builtins_rust/setattr/src/intercdep.rs /^ pub source_file: *mut c_char,$/;" m struct:function_def +source_file builtins_rust/source/src/lib.rs /^ fn source_file(name: *const c_char, sflags: i32) -> i32;$/;" f +source_file builtins_rust/source/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:function_def +source_file builtins_rust/source/src/lib.rs /^ source_file: *mut c_char,$/;" m struct:group_com +source_file builtins_rust/type/src/lib.rs /^ source_file: *mut libc::c_char,$/;" m struct:function_def +source_file builtins_rust/type/src/lib.rs /^ source_file: *mut libc::c_char,$/;" m struct:group_com +source_file command.h /^ char *source_file; \/* file in which function was defined, if any *\/$/;" m struct:function_def typeref:typename:char * +source_file r_bash/src/lib.rs /^ pub fn source_file($/;" f +source_file r_bash/src/lib.rs /^ pub source_file: *mut ::std::os::raw::c_char,$/;" m struct:function_def +source_file r_glob/src/lib.rs /^ pub source_file: *mut ::std::os::raw::c_char,$/;" m struct:function_def +source_file r_readline/src/lib.rs /^ pub source_file: *mut ::std::os::raw::c_char,$/;" m struct:function_def +source_file vendor/proc-macro2/src/fallback.rs /^ pub fn source_file(&self) -> SourceFile {$/;" P implementation:Span +source_file vendor/proc-macro2/src/lib.rs /^ pub fn source_file(&self) -> SourceFile {$/;" P implementation:Span +source_file vendor/proc-macro2/src/wrapper.rs /^ pub fn source_file(&self) -> SourceFile {$/;" P implementation:Span +source_map vendor/syn/benches/rust.rs /^ fn source_map(&self) -> Option<&Lrc> {$/;" P implementation:librustc_parse::bench::SilentEmitter +source_searches_cwd builtins_rust/source/src/lib.rs /^ static mut source_searches_cwd: i32;$/;" v +source_searches_cwd r_bash/src/lib.rs /^ pub static mut source_searches_cwd: ::std::os::raw::c_int;$/;" v +source_uses_path builtins_rust/shopt/src/lib.rs /^ static mut source_uses_path: i32;$/;" v +source_uses_path builtins_rust/source/src/lib.rs /^ static source_uses_path: i32;$/;" v +source_uses_path r_bash/src/lib.rs /^ pub static mut source_uses_path: ::std::os::raw::c_int;$/;" v +source_v execute_cmd.h /^ SHELL_VAR *source_v;$/;" m struct:func_array_state typeref:typename:SHELL_VAR * +source_v r_bash/src/lib.rs /^ pub source_v: *mut SHELL_VAR,$/;" m struct:func_array_state +sourced_env shell.c /^static int sourced_env;$/;" v typeref:typename:int file: +sourced_logout builtins_rust/exit/src/lib.rs /^static mut sourced_logout: i32 = 0;$/;" v +sourcelevel builtins/evalfile.c /^int sourcelevel = 0;$/;" v typeref:typename:int +sourcelevel builtins_rust/trap/src/intercdep.rs /^ pub static sourcelevel: c_int;$/;" v +sourcelevel r_bash/src/lib.rs /^ pub static mut sourcelevel: ::std::os::raw::c_int;$/;" v +sourcelevel r_jobs/src/lib.rs /^ static mut sourcelevel: c_int;$/;" v +sourcenest execute_cmd.c /^int sourcenest = 0;$/;" v typeref:typename:int +sourcenest r_bash/src/lib.rs /^ pub static mut sourcenest: ::std::os::raw::c_int;$/;" v +sourcenest_max execute_cmd.c /^int sourcenest_max = SOURCENEST_MAX;$/;" v typeref:typename:int +sourcenest_max r_bash/src/lib.rs /^ pub static mut sourcenest_max: ::std::os::raw::c_int;$/;" v +sp builtins/bashgetopt.c /^static int sp;$/;" v typeref:typename:int file: +space support/man2html.c /^ int size, align, valign, colspan, rowspan, font, vleft, vright, space,$/;" m struct:TABLEITEM typeref:typename:int file: +space_to_eol lib/readline/display.c /^space_to_eol (int count)$/;" f typeref:typename:void file: +spacesep array.c /^static char *spacesep = " ";$/;" v typeref:typename:char * file: +spacing vendor/proc-macro2/src/lib.rs /^ pub fn spacing(&self) -> Spacing {$/;" P implementation:Punct +spacing vendor/proc-macro2/src/lib.rs /^ spacing: Spacing,$/;" m struct:Punct +span vendor/proc-macro2/src/fallback.rs /^ pub fn span(&self) -> Span {$/;" P implementation:Group +span vendor/proc-macro2/src/fallback.rs /^ pub fn span(&self) -> Span {$/;" P implementation:Ident +span vendor/proc-macro2/src/fallback.rs /^ pub fn span(&self) -> Span {$/;" f method:Literal::byte_string +span vendor/proc-macro2/src/fallback.rs /^ pub(crate) fn span(&self) -> Span {$/;" P implementation:LexError +span vendor/proc-macro2/src/fallback.rs /^ pub(crate) span: Span,$/;" m struct:LexError +span vendor/proc-macro2/src/fallback.rs /^ span: Span,$/;" m struct:FileInfo +span vendor/proc-macro2/src/fallback.rs /^ span: Span,$/;" m struct:Group +span vendor/proc-macro2/src/fallback.rs /^ span: Span,$/;" m struct:Ident +span vendor/proc-macro2/src/fallback.rs /^ span: Span,$/;" m struct:Literal +span vendor/proc-macro2/src/lib.rs /^ pub fn span(&self) -> Span {$/;" P implementation:Group +span vendor/proc-macro2/src/lib.rs /^ pub fn span(&self) -> Span {$/;" P implementation:Ident +span vendor/proc-macro2/src/lib.rs /^ pub fn span(&self) -> Span {$/;" P implementation:LexError +span vendor/proc-macro2/src/lib.rs /^ pub fn span(&self) -> Span {$/;" P implementation:Literal +span vendor/proc-macro2/src/lib.rs /^ pub fn span(&self) -> Span {$/;" P implementation:Punct +span vendor/proc-macro2/src/lib.rs /^ pub fn span(&self) -> Span {$/;" P implementation:TokenTree +span vendor/proc-macro2/src/lib.rs /^ span: Span,$/;" m struct:Punct +span vendor/proc-macro2/src/wrapper.rs /^ pub fn span(&self) -> Span {$/;" P implementation:Group +span vendor/proc-macro2/src/wrapper.rs /^ pub fn span(&self) -> Span {$/;" P implementation:Ident +span vendor/proc-macro2/src/wrapper.rs /^ pub fn span(&self) -> Span {$/;" P implementation:Literal +span vendor/proc-macro2/src/wrapper.rs /^ pub(crate) fn span(&self) -> Span {$/;" P implementation:LexError +span vendor/quote/src/ident_fragment.rs /^ fn span(&self) -> Option {$/;" P implementation:Ident +span vendor/quote/src/ident_fragment.rs /^ fn span(&self) -> Option {$/;" P implementation:T +span vendor/quote/src/ident_fragment.rs /^ fn span(&self) -> Option {$/;" P interface:IdentFragment +span vendor/quote/src/ident_fragment.rs /^ fn span(&self) -> Option {$/;" f +span vendor/quote/src/runtime.rs /^ span: Span,$/;" m struct:push_lifetime_spanned::Lifetime +span vendor/quote/src/runtime.rs /^ pub fn span(&self) -> Option {$/;" P implementation:IdentFragmentAdapter +span vendor/syn/src/buffer.rs /^ pub fn span(self) -> Span {$/;" P implementation:Cursor +span vendor/syn/src/error.rs /^ pub fn span(&self) -> Span {$/;" P implementation:Error +span vendor/syn/src/expr.rs /^ fn span(&self) -> Option {$/;" P implementation:Index +span vendor/syn/src/expr.rs /^ fn span(&self) -> Option {$/;" P implementation:Member +span vendor/syn/src/lib.rs /^mod span;$/;" n +span vendor/syn/src/lifetime.rs /^ pub fn span(&self) -> Span {$/;" P implementation:Lifetime +span vendor/syn/src/lit.rs /^ pub fn span(&self) -> Span {$/;" P implementation:value::Lit +span vendor/syn/src/lit.rs /^ pub fn span(&self) -> Span {$/;" P implementation:LitBool +span vendor/syn/src/lit.rs /^ pub fn span(&self) -> Span {$/;" P implementation:LitByte +span vendor/syn/src/lit.rs /^ pub fn span(&self) -> Span {$/;" P implementation:LitByteStr +span vendor/syn/src/lit.rs /^ pub fn span(&self) -> Span {$/;" P implementation:LitChar +span vendor/syn/src/lit.rs /^ pub fn span(&self) -> Span {$/;" P implementation:LitFloat +span vendor/syn/src/lit.rs /^ pub fn span(&self) -> Span {$/;" P implementation:LitInt +span vendor/syn/src/lit.rs /^ pub fn span(&self) -> Span {$/;" P implementation:LitStr +span vendor/syn/src/parse.rs /^ pub fn span(&self) -> Span {$/;" P implementation:ParseBuffer +span vendor/syn/src/spanned.rs /^ fn span(&self) -> Span {$/;" P implementation:T +span vendor/syn/src/spanned.rs /^ fn span(&self) -> Span;$/;" P interface:Spanned +span vendor/syn/src/token.rs /^ pub span: Span,$/;" m struct:private::WithSpan +span vendor/thiserror-impl/src/ast.rs /^ pub fn span(&self) -> Option {$/;" P implementation:Attrs +span vendor/thiserror-impl/src/attr.rs /^ pub span: Span,$/;" m struct:Transparent +span_close vendor/proc-macro2/src/fallback.rs /^ pub fn span_close(&self) -> Span {$/;" P implementation:Group +span_close vendor/proc-macro2/src/lib.rs /^ pub fn span_close(&self) -> Span {$/;" P implementation:Group +span_close vendor/proc-macro2/src/wrapper.rs /^ pub fn span_close(&self) -> Span {$/;" P implementation:Group +span_forms vendor/memoffset/src/span_of.rs /^ fn span_forms() {$/;" f module:tests +span_join vendor/proc-macro2/tests/test.rs /^fn span_join() {$/;" f +span_of vendor/memoffset/src/lib.rs /^mod span_of;$/;" n +span_of vendor/memoffset/src/span_of.rs /^macro_rules! span_of {$/;" M +span_of_unexpected_ignoring_nones vendor/syn/src/parse.rs /^fn span_of_unexpected_ignoring_nones(mut cursor: Cursor) -> Option {$/;" f +span_open vendor/proc-macro2/src/fallback.rs /^ pub fn span_open(&self) -> Span {$/;" P implementation:Group +span_open vendor/proc-macro2/src/lib.rs /^ pub fn span_open(&self) -> Span {$/;" P implementation:Group +span_open vendor/proc-macro2/src/wrapper.rs /^ pub fn span_open(&self) -> Span {$/;" P implementation:Group +span_simple vendor/memoffset/src/span_of.rs /^ fn span_simple() {$/;" f module:tests +span_simple_packed vendor/memoffset/src/span_of.rs /^ fn span_simple_packed() {$/;" f module:tests +span_test vendor/proc-macro2/tests/test.rs /^fn span_test() {$/;" f +span_within vendor/proc-macro2/src/fallback.rs /^ fn span_within(&self, span: Span) -> bool {$/;" P implementation:FileInfo +spanless_eq_enum vendor/syn/tests/common/eq.rs /^macro_rules! spanless_eq_enum {$/;" M +spanless_eq_partial_eq vendor/syn/tests/common/eq.rs /^macro_rules! spanless_eq_partial_eq {$/;" M +spanless_eq_struct vendor/syn/tests/common/eq.rs /^macro_rules! spanless_eq_struct {$/;" M +spanless_eq_true vendor/syn/tests/common/eq.rs /^macro_rules! spanless_eq_true {$/;" M +spanned vendor/quote/src/lib.rs /^pub mod spanned;$/;" n +spanned vendor/syn/src/lib.rs /^pub mod spanned;$/;" n +spanned_error_trait vendor/thiserror-impl/src/expand.rs /^fn spanned_error_trait(input: &DeriveInput) -> TokenStream {$/;" f +spapidef vendor/winapi/src/um/mod.rs /^#[cfg(feature = "spapidef")] pub mod spapidef;$/;" n +spare_capacity vendor/futures-util/src/io/buf_writer.rs /^ pub(super) fn spare_capacity(&self) -> usize {$/;" P implementation:BufWriter +spawn vendor/async-trait/tests/test.rs /^ async fn spawn(&self, work: F) -> T$/;" P interface:issue106::ProcessPool +spawn vendor/async-trait/tests/test.rs /^ async fn spawn(&self, work: F) -> T$/;" f module:issue106 +spawn vendor/futures-task/src/lib.rs /^mod spawn;$/;" n +spawn vendor/futures-util/src/task/mod.rs /^mod spawn;$/;" n +spawn vendor/futures-util/src/task/spawn.rs /^ fn spawn(&self, future: Fut) -> Result<(), SpawnError>$/;" P interface:SpawnExt +spawn_local vendor/futures-util/src/task/spawn.rs /^ fn spawn_local(&self, future: Fut) -> Result<(), SpawnError>$/;" P interface:LocalSpawnExt +spawn_local_obj vendor/futures-executor/src/local_pool.rs /^ fn spawn_local_obj(&self, future: LocalFutureObj<'static, ()>) -> Result<(), SpawnError> {$/;" P implementation:LocalSpawner +spawn_local_obj vendor/futures-task/src/spawn.rs /^ fn spawn_local_obj(&self, future: LocalFutureObj<'static, ()>) -> Result<(), SpawnError>/;" P implementation:if_alloc::Arc +spawn_local_obj vendor/futures-task/src/spawn.rs /^ fn spawn_local_obj(&self, future: LocalFutureObj<'static, ()>) -> Result<(), SpawnError>/;" P implementation:if_alloc::Box +spawn_local_obj vendor/futures-task/src/spawn.rs /^ fn spawn_local_obj(&self, future: LocalFutureObj<'static, ()>) -> Result<(), SpawnError>/;" P implementation:if_alloc::Rc +spawn_local_obj vendor/futures-task/src/spawn.rs /^ fn spawn_local_obj(&self, future: LocalFutureObj<'static, ()>) -> Result<(), SpawnError> {$/;" P implementation:Sp +spawn_local_obj vendor/futures-task/src/spawn.rs /^ fn spawn_local_obj(&self, future: LocalFutureObj<'static, ()>) -> Result<(), SpawnError>;$/;" P interface:LocalSpawn +spawn_local_obj vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn spawn_local_obj(&self, future_obj: LocalFutureObj<'static, ()>) -> Result<(), SpawnError>/;" P implementation:FuturesUnordered +spawn_local_with_handle vendor/futures-util/src/task/spawn.rs /^ fn spawn_local_with_handle($/;" P interface:LocalSpawnExt +spawn_obj vendor/futures-executor/src/local_pool.rs /^ fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError> {$/;" P implementation:LocalSpawner +spawn_obj vendor/futures-executor/src/thread_pool.rs /^ fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError> {$/;" P implementation:ThreadPool +spawn_obj vendor/futures-task/src/spawn.rs /^ fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError> {$/;" P implementation:if_alloc::Arc +spawn_obj vendor/futures-task/src/spawn.rs /^ fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError> {$/;" P implementation:if_alloc::Box +spawn_obj vendor/futures-task/src/spawn.rs /^ fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError> {$/;" P implementation:if_alloc::Rc +spawn_obj vendor/futures-task/src/spawn.rs /^ fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError> {$/;" P implementation:Sp +spawn_obj vendor/futures-task/src/spawn.rs /^ fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError>;$/;" P interface:Spawn +spawn_obj vendor/futures-util/src/compat/executor.rs /^ fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError03> {$/;" f +spawn_obj vendor/futures-util/src/stream/futures_unordered/mod.rs /^ fn spawn_obj(&self, future_obj: FutureObj<'static, ()>) -> Result<(), SpawnError> {$/;" P implementation:FuturesUnordered +spawn_obj_ok vendor/futures-executor/src/thread_pool.rs /^ pub fn spawn_obj_ok(&self, future: FutureObj<'static, ()>) {$/;" P implementation:ThreadPool +spawn_ok vendor/futures-executor/src/thread_pool.rs /^ pub fn spawn_ok(&self, future: Fut)$/;" P implementation:ThreadPool +spawn_thread vendor/libc/src/unix/haiku/native.rs /^ pub fn spawn_thread($/;" f +spawn_with_handle vendor/futures-util/src/task/spawn.rs /^ fn spawn_with_handle(&self, future: Fut) -> Result, SpawnErro/;" P interface:SpawnExt +spawner vendor/futures-executor/src/local_pool.rs /^ pub fn spawner(&self) -> LocalSpawner {$/;" P implementation:LocalPool +spctabnl general.h /^#define spctabnl(/;" d +spdist lib/sh/spell.c /^spdist(cur, new)$/;" f file: +spec_from vendor/smallvec/src/lib.rs /^ fn spec_from(slice: &'a [A::Item]) -> SmallVec
    {$/;" f +spec_from vendor/smallvec/src/lib.rs /^ fn spec_from(slice: S) -> SmallVec;$/;" P interface:SpecFrom +spec_from vendor/smallvec/src/specialization.rs /^ default fn spec_from(slice: &'a [A::Item]) -> SmallVec {$/;" f +special_builtin_failed execute_cmd.c /^static int special_builtin_failed;$/;" v typeref:typename:int file: +special_builtins builtins/mkbuiltins.c /^char *special_builtins[] =$/;" v typeref:typename:char * [] +special_vars variables.c /^static struct name_and_function special_vars[] = {$/;" v typeref:struct:name_and_function[] file: +specialization vendor/smallvec/src/lib.rs /^mod specialization;$/;" n +specialvar_p variables.h /^#define specialvar_p(/;" d +speed_hz vendor/nix/test/sys/test_ioctl.rs /^ speed_hz: u32,$/;" m struct:linux_ioctls::spi_ioc_transfer +speed_t r_bash/src/lib.rs /^pub type speed_t = ::std::os::raw::c_uint;$/;" t +speed_t r_jobs/src/lib.rs /^pub type speed_t = libc::c_uint;$/;" t +speed_t vendor/libc/src/fuchsia/mod.rs /^pub type speed_t = ::c_uint;$/;" t +speed_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type speed_t = ::c_ulong;$/;" t +speed_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type speed_t = ::c_uint;$/;" t +speed_t vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type speed_t = ::c_uint;$/;" t +speed_t vendor/libc/src/unix/haiku/mod.rs /^pub type speed_t = ::c_uchar;$/;" t +speed_t vendor/libc/src/unix/hermit/mod.rs /^pub type speed_t = ::c_uint;$/;" t +speed_t vendor/libc/src/unix/linux_like/mod.rs /^pub type speed_t = ::c_uint;$/;" t +speed_t vendor/libc/src/unix/newlib/mod.rs /^pub type speed_t = u32;$/;" t +speed_t vendor/libc/src/unix/redox/mod.rs /^pub type speed_t = u32;$/;" t +speed_t vendor/libc/src/unix/solarish/mod.rs /^pub type speed_t = ::c_uint;$/;" t +speeds lib/termcap/termcap.c /^static int speeds[] =$/;" v typeref:typename:int[] file: +spell.o lib/sh/Makefile.in /^spell.o: ${BASHINCDIR}\/ansi_stdlib.h$/;" t +spell.o lib/sh/Makefile.in /^spell.o: ${BASHINCDIR}\/posixstat.h ${BASHINCDIR}\/posixdir.h$/;" t +spell.o lib/sh/Makefile.in /^spell.o: ${BUILD_DIR}\/config.h$/;" t +spell.o lib/sh/Makefile.in /^spell.o: ${topdir}\/bashtypes.h$/;" t +spell.o lib/sh/Makefile.in /^spell.o: spell.c$/;" t +spellcheck vendor/winapi/src/um/mod.rs /^#[cfg(feature = "spellcheck")] pub mod spellcheck;$/;" n +spi_ioc_transfer vendor/nix/test/sys/test_ioctl.rs /^ pub struct spi_ioc_transfer {$/;" s module:linux_ioctls +spilled vendor/smallvec/src/lib.rs /^ pub fn spilled(&self) -> bool {$/;" P implementation:SmallVec +spin_next_all vendor/futures-util/src/stream/futures_unordered/task.rs /^ pub(super) fn spin_next_all($/;" P implementation:Task +splat vendor/memchr/src/memmem/vector.rs /^ unsafe fn splat(byte: u8) -> __m128i {$/;" P implementation:x86sse::__m128i +splat vendor/memchr/src/memmem/vector.rs /^ unsafe fn splat(byte: u8) -> __m256i {$/;" P implementation:x86avx::__m256i +splat vendor/memchr/src/memmem/vector.rs /^ unsafe fn splat(byte: u8) -> v128 {$/;" P implementation:wasm_simd128::v128 +splat vendor/memchr/src/memmem/vector.rs /^ unsafe fn splat(byte: u8) -> Self;$/;" P interface:Vector +splice r_bash/src/lib.rs /^ pub fn splice($/;" f +splice vendor/libc/src/fuchsia/mod.rs /^ pub fn splice($/;" f +splice vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn splice($/;" f +splice vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn splice($/;" f +split vendor/futures-util/src/io/mod.rs /^ fn split(self) -> (ReadHalf, WriteHalf)$/;" P interface:AsyncReadExt +split vendor/futures-util/src/io/mod.rs /^mod split;$/;" n +split vendor/futures-util/src/io/split.rs /^pub(super) fn split(t: T) -> (ReadHalf, WriteHalf) {$/;" f +split vendor/futures-util/src/stream/stream/mod.rs /^ fn split(self) -> (SplitSink, SplitStream)$/;" P interface:StreamExt +split vendor/futures-util/src/stream/stream/mod.rs /^mod split;$/;" n +split vendor/futures-util/src/stream/stream/split.rs /^pub(super) fn split, Item>(s: S) -> (SplitSink, SplitStream) /;" f +split_at_delims r_bash/src/lib.rs /^ pub fn split_at_delims($/;" f +split_at_delims subst.c /^split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp)$/;" f +split_for_impl vendor/syn/src/generics.rs /^ pub fn split_for_impl(&self) -> (ImplGenerics, TypeGenerics, Option<&WhereClause>) {$/;" P implementation:Generics +split_ignorespec pathexp.c /^split_ignorespec (s, ip)$/;" f file: +splitn_exact vendor/stdext/src/str.rs /^ fn splitn_exact<'a, P: Into>>($/;" P implementation:str +splitn_exact vendor/stdext/src/str.rs /^ fn splitn_exact<'a, P: Into>>($/;" P interface:StrExt +spname lib/sh/spell.c /^spname(oldname, newname)$/;" f +spname r_bash/src/lib.rs /^ pub fn spname($/;" f +sporder vendor/winapi/src/um/mod.rs /^#[cfg(feature = "sporder")] pub mod sporder;$/;" n +sprintf builtins_rust/ulimit/src/lib.rs /^ fn sprintf(_: *mut libc::c_char, _: *const libc::c_char, _: ...) -> i32;$/;" f +sprintf r_bash/src/lib.rs /^ pub fn sprintf($/;" f +sprintf r_readline/src/lib.rs /^ pub fn sprintf($/;" f +sprintf vendor/libc/src/fuchsia/mod.rs /^ pub fn sprintf(s: *mut ::c_char, format: *const ::c_char, ...) -> ::c_int;$/;" f +sprintf vendor/libc/src/solid/mod.rs /^ pub fn sprintf(arg1: *mut c_char, arg2: *const c_char, ...) -> c_int;$/;" f +sprintf vendor/libc/src/unix/mod.rs /^ pub fn sprintf(s: *mut ::c_char, format: *const ::c_char, ...) -> ::c_int;$/;" f +sprintf vendor/libc/src/vxworks/mod.rs /^ pub fn sprintf(s: *mut ::c_char, format: *const ::c_char, ...) -> ::c_int;$/;" f +sprintf vendor/libc/src/wasi.rs /^ pub fn sprintf(s: *mut ::c_char, format: *const ::c_char, ...) -> ::c_int;$/;" f +sql vendor/winapi/src/um/mod.rs /^#[cfg(feature = "sql")] pub mod sql;$/;" n +sqlext vendor/winapi/src/um/mod.rs /^#[cfg(feature = "sqlext")] pub mod sqlext;$/;" n +sqltypes vendor/winapi/src/um/mod.rs /^#[cfg(feature = "sqltypes")] pub mod sqltypes;$/;" n +sqlucode vendor/winapi/src/um/mod.rs /^#[cfg(feature = "sqlucode")] pub mod sqlucode;$/;" n +sradixsort vendor/libc/src/solid/mod.rs /^ pub fn sradixsort($/;" f +srand r_bash/src/lib.rs /^ pub fn srand(__seed: ::std::os::raw::c_uint);$/;" f +srand r_glob/src/lib.rs /^ pub fn srand(__seed: ::std::os::raw::c_uint);$/;" f +srand r_readline/src/lib.rs /^ pub fn srand(__seed: ::std::os::raw::c_uint);$/;" f +srand vendor/libc/src/fuchsia/mod.rs /^ pub fn srand(seed: c_uint);$/;" f +srand vendor/libc/src/solid/mod.rs /^ pub fn srand(arg1: c_uint);$/;" f +srand vendor/libc/src/unix/bsd/mod.rs /^ pub fn srand(seed: ::c_uint);$/;" f +srand vendor/libc/src/unix/haiku/mod.rs /^ pub fn srand(seed: ::c_uint);$/;" f +srand vendor/libc/src/unix/hermit/mod.rs /^ pub fn srand(seed: ::c_uint);$/;" f +srand vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn srand(seed: ::c_uint);$/;" f +srand vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn srand(seed: ::c_uint);$/;" f +srand vendor/libc/src/unix/newlib/mod.rs /^ pub fn srand(seed: ::c_uint);$/;" f +srand vendor/libc/src/unix/solarish/mod.rs /^ pub fn srand(seed: ::c_uint);$/;" f +srand vendor/libc/src/wasi.rs /^ pub fn srand(a: c_uint);$/;" f +srand vendor/libc/src/windows/mod.rs /^ pub fn srand(seed: c_uint);$/;" f +srand48 r_bash/src/lib.rs /^ pub fn srand48(__seedval: ::std::os::raw::c_long);$/;" f +srand48 r_glob/src/lib.rs /^ pub fn srand48(__seedval: ::std::os::raw::c_long);$/;" f +srand48 r_readline/src/lib.rs /^ pub fn srand48(__seedval: ::std::os::raw::c_long);$/;" f +srand48 vendor/libc/src/solid/mod.rs /^ pub fn srand48(arg1: c_long);$/;" f +srand48 vendor/libc/src/unix/bsd/mod.rs /^ pub fn srand48(seed: ::c_long);$/;" f +srand48 vendor/libc/src/unix/haiku/mod.rs /^ pub fn srand48(seed: ::c_long);$/;" f +srand48_deterministic vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn srand48_deterministic(seed: ::c_long);$/;" f +srand48_r r_bash/src/lib.rs /^ pub fn srand48_r($/;" f +srand48_r r_glob/src/lib.rs /^ pub fn srand48_r($/;" f +srand48_r r_readline/src/lib.rs /^ pub fn srand48_r($/;" f +srandom r_bash/src/lib.rs /^ pub fn srandom(__seed: ::std::os::raw::c_uint);$/;" f +srandom r_glob/src/lib.rs /^ pub fn srandom(__seed: ::std::os::raw::c_uint);$/;" f +srandom r_readline/src/lib.rs /^ pub fn srandom(__seed: ::std::os::raw::c_uint);$/;" f +srandom vendor/libc/src/solid/mod.rs /^ pub fn srandom(arg1: c_uint);$/;" f +srandom vendor/libc/src/wasi.rs /^ pub fn srandom(a: c_uint);$/;" f +srandom_r r_bash/src/lib.rs /^ pub fn srandom_r($/;" f +srandom_r r_glob/src/lib.rs /^ pub fn srandom_r($/;" f +srandom_r r_readline/src/lib.rs /^ pub fn srandom_r($/;" f +src/abortable.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/accepted_languages.rs vendor/fluent-langneg/.cargo-checksum.json /^{"files":{"Cargo.toml":"1b11d8d30fe978704012e27981f8d50a3462319594b54ed2e71eaf85284d61eb","READM/;" s object:files +src/arbitrary.rs vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +src/arc_wake.rs vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +src/args.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +src/args.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/aserror.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +src/ast.rs vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" s object:files +src/ast/helper.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/ast/mod.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/async_await/join_mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/async_await/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/async_await/pending.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/async_await/poll.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/async_await/random.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/async_await/select_mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/async_await/stream_select_mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/attr.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/attr.rs vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" s object:files +src/await.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/bigint.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/bin/generate_layout.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/bin/generate_likelysubtags.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/bin/parser.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/bin/update_fixtures.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/buffer.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/bundle.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/bundles.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +src/cache.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +src/changelog.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +src/compat/compat01as03.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/compat/compat03as01.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/compat/executor.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/compat/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/concurrent.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/concurrent.rs vendor/intl-memoizer/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f28af47927c54fd8ff3adbfcc4b0e9ea849a3b2a544289dd6be64a7aafb8ca6","LICEN/;" s object:files +src/core_lazy.rs vendor/lazy_static/.cargo-checksum.json /^{"files":{"Cargo.toml":"05e37a4e63dc4a495998bb5133252a51d671c4e99061a6342089ed6eab43978a","LICEN/;" s object:files +src/cow.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/custom_keyword.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/custom_punctuation.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/data.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/derive.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/detection.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +src/dir.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/discouraged.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/display.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +src/duration.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/enter.rs vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" s object:files +src/entry.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/env.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +src/env.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/errno.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/error.rs vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +src/error.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +src/error.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/errors.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/errors.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +src/errors.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/example_generated.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +src/executor.rs vendor/futures-macro/.cargo-checksum.json /^{"files":{"Cargo.toml":"0af05d99a0144689032178763c2a88016e428451fae7a9d0d8fdca3063514783","LICEN/;" s object:files +src/expand.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +src/expand.rs vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" s object:files +src/export.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/expr.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/ext.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +src/ext.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/fallback.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +src/fcntl.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/features.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/file.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/fixed_width_ints.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/fmt.rs vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" s object:files +src/fns.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/format.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +src/fuchsia/aarch64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/fuchsia/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/fuchsia/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/fuchsia/no_align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/fuchsia/x86_64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/future.rs vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +src/future/abortable.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/either.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/future/catch_unwind.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/future/flatten.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/future/fuse.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/future/map.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/future/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/future/remote_handle.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/future/shared.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/join.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/join_all.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/lazy.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/maybe_done.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/option.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/pending.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/poll_fn.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/poll_immediate.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/ready.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/select.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/select_all.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/select_ok.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/try_future/into_future.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/try_future/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/try_future/try_flatten.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/try_future/try_flatten_err.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/try_join.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/try_join_all.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/try_maybe_done.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future/try_select.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/future_obj.rs vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +src/gen/clone.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/gen/debug.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/gen/eq.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/gen/fold.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/gen/hash.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/gen/visit.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/gen/visit_mut.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/gen_helper.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/generator.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +src/generics.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/generics.rs vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" s object:files +src/group.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/helpers.rs vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +src/hermit/aarch64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/hermit/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/hermit/x86_64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/ident.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/ident_fragment.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +src/ifaddrs.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/imp_pl.rs vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +src/imp_std.rs vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +src/index_map.rs vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +src/index_set.rs vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +src/inline_lazy.rs vendor/lazy_static/.cargo-checksum.json /^{"files":{"Cargo.toml":"05e37a4e63dc4a495998bb5133252a51d671c4e99061a6342089ed6eab43978a","LICEN/;" s object:files +src/io/allow_std.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/buf_reader.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/buf_writer.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/chain.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/close.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/copy.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/copy_buf.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/copy_buf_abortable.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/cursor.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/empty.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/fill_buf.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/flush.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/into_sink.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/line_writer.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/lines.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/read.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/read_exact.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/read_line.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/read_to_end.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/read_to_string.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/read_until.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/read_vectored.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/repeat.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/seek.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/sink.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/split.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/take.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/window.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/write.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/write_all.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/write_all_vectored.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/io/write_vectored.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/item.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/join.rs vendor/futures-macro/.cargo-checksum.json /^{"files":{"Cargo.toml":"0af05d99a0144689032178763c2a88016e428451fae7a9d0d8fdca3063514783","LICEN/;" s object:files +src/km/d3dkmthk.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/km/mod.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/kmod.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/layout_table.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/lib.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +src/lib.rs vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +src/lib.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +src/lib.rs vendor/cfg-if/.cargo-checksum.json /^{"files":{"Cargo.toml":"5b2a8f6e5256957c029cf3a8912d51438e7faa5891c5c102c312f6d4599c1f00","LICEN/;" s object:files +src/lib.rs vendor/chunky-vec/.cargo-checksum.json /^{"files":{"Cargo.toml":"3ab88cdacffa2756abe4460dda1ef403b304e79f814a2ec71b9c9a013dce2bf6","LICEN/;" s object:files +src/lib.rs vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +src/lib.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/lib.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +src/lib.rs vendor/fluent-langneg/.cargo-checksum.json /^{"files":{"Cargo.toml":"1b11d8d30fe978704012e27981f8d50a3462319594b54ed2e71eaf85284d61eb","READM/;" s object:files +src/lib.rs vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +src/lib.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/lib.rs vendor/fluent/.cargo-checksum.json /^{"files":{"Cargo.toml":"90672342000bb7f84bee3d9517ddf6d3f32f8e4b4fd38271c67855112456db05","LICEN/;" s object:files +src/lib.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +src/lib.rs vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +src/lib.rs vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" s object:files +src/lib.rs vendor/futures-io/.cargo-checksum.json /^{"files":{"Cargo.toml":"e54d638578924483b00b5b20bbd8bf29b5166de08d8176122a7c07b04ff314fd","LICEN/;" s object:files +src/lib.rs vendor/futures-macro/.cargo-checksum.json /^{"files":{"Cargo.toml":"0af05d99a0144689032178763c2a88016e428451fae7a9d0d8fdca3063514783","LICEN/;" s object:files +src/lib.rs vendor/futures-sink/.cargo-checksum.json /^{"files":{"Cargo.toml":"8e37d96331ae8a6db64a6aab22e9924ceeacc4f07595c1ea81ea086c002ebd2f","LICEN/;" s object:files +src/lib.rs vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +src/lib.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/lib.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +src/lib.rs vendor/intl-memoizer/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f28af47927c54fd8ff3adbfcc4b0e9ea849a3b2a544289dd6be64a7aafb8ca6","LICEN/;" s object:files +src/lib.rs vendor/intl_pluralrules/.cargo-checksum.json /^{"files":{"Cargo.toml":"3b7451d96ed662827dd4163d64d96840fee1c4241c2480b8cdd91ef156ad7896","READM/;" s object:files +src/lib.rs vendor/lazy_static/.cargo-checksum.json /^{"files":{"Cargo.toml":"05e37a4e63dc4a495998bb5133252a51d671c4e99061a6342089ed6eab43978a","LICEN/;" s object:files +src/lib.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/lib.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +src/lib.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/lib.rs vendor/memoffset/.cargo-checksum.json /^{"files":{"Cargo.toml":"2556143c764ef2315fe44ff0ec43af47ca70b260fd64aa53f57dc42760d7132d","LICEN/;" s object:files +src/lib.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/lib.rs vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +src/lib.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +src/lib.rs vendor/pin-utils/.cargo-checksum.json /^{"files":{"Cargo.toml":"0f8296bda5b928d57bb84443422f21db3aa35d6873ce651297634d80c183dc6b","LICEN/;" s object:files +src/lib.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +src/lib.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +src/lib.rs vendor/rustc-hash/.cargo-checksum.json /^{"files":{"CODE_OF_CONDUCT.md":"edca092fde496419a9f1ba640048aa0270b62dfea576cd3175f0b53e3c230470/;" s object:files +src/lib.rs vendor/self_cell/.cargo-checksum.json /^{"files":{"Cargo.toml":"ab60ad0024cea3e0c60fc4d116adc7fae35d5f85b042d285bba65f22c42407d5","LICEN/;" s object:files +src/lib.rs vendor/slab/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"ae4c54789e1055543317a6812ac11644d0586883dee8f790119e4cef244b1b8e","Car/;" s object:files +src/lib.rs vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +src/lib.rs vendor/stable_deref_trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"5a8352eba01791ecee28b37cfe1324fa48db52e35023b23a4f07ca84267abfd6","LICEN/;" s object:files +src/lib.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/lib.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/lib.rs vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" s object:files +src/lib.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +src/lib.rs vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +src/lib.rs vendor/type-map/.cargo-checksum.json /^{"files":{"Cargo.toml":"b9de957b7180f3784f79522b1a108b6c9e9f6bb16a2d089b4d0ca924d92387ae","READM/;" s object:files +src/lib.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/lib.rs vendor/unic-langid/.cargo-checksum.json /^{"files":{"Cargo.toml":"927c0bc2dea454aab20d550b4ab728ee5c3803ac12f95a89f518b8a56633e941","READM/;" s object:files +src/lib.rs vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +src/lib.rs vendor/winapi-i686-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"9652222664ffc7e2a26fdcdebdce0917a455b39d8fbcbf451bf0b011a3067bf7","build/;" s object:files +src/lib.rs vendor/winapi-x86_64-pc-windows-gnu/.cargo-checksum.json /^{"files":{"Cargo.toml":"a88605a11db5def9b6cf73398e83b3edb72228cb43ea935729fac5cd33cec22c","build/;" s object:files +src/lib.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/lifetime.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +src/lifetime.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/likelysubtags/mod.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/likelysubtags/tables.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/lit.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/local_pool.rs vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" s object:files +src/localization.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +src/lock.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +src/lock/bilock.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/lock/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/lock/mutex.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/lookahead.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/mac.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/macros.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/macros.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/macros.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/macros.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/macros.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/map.rs vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +src/marker.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +src/memchr/c.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memchr/fallback.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memchr/iter.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memchr/mod.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memchr/naive.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memchr/x86/avx.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memchr/x86/mod.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memchr/x86/sse2.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memchr/x86/sse42.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/byte_frequencies.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/genericsimd.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/mod.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/prefilter/fallback.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/prefilter/genericsimd.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/prefilter/mod.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/prefilter/wasm.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/prefilter/x86/avx.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/prefilter/x86/mod.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/prefilter/x86/sse.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/rabinkarp.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/rarebytes.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/twoway.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/util.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/vector.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/wasm.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/x86/avx.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/x86/mod.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memmem/x86/sse.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/memoizer.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/message.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/mount/bsd.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/mount/linux.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/mount/mod.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/mpsc/mod.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +src/mpsc/queue.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +src/mpsc/sink_impl.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +src/mqueue.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/negotiate/likely_subtags.rs vendor/fluent-langneg/.cargo-checksum.json /^{"files":{"Cargo.toml":"1b11d8d30fe978704012e27981f8d50a3462319594b54ed2e71eaf85284d61eb","READM/;" s object:files +src/negotiate/mod.rs vendor/fluent-langneg/.cargo-checksum.json /^{"files":{"Cargo.toml":"1b11d8d30fe978704012e27981f8d50a3462319594b54ed2e71eaf85284d61eb","READM/;" s object:files +src/net/if_.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/net/mod.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/never.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/noop_waker.rs vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +src/num/float_convert.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/num/integer.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/num/mod.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/offset_of.rs vendor/memoffset/.cargo-checksum.json /^{"files":{"Cargo.toml":"2556143c764ef2315fe44ff0ec43af47ca70b260fd64aa53f57dc42760d7132d","LICEN/;" s object:files +src/oneshot.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +src/op.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/operands.rs vendor/intl_pluralrules/.cargo-checksum.json /^{"files":{"Cargo.toml":"3b7451d96ed662827dd4163d64d96840fee1c4241c2480b8cdd91ef156ad7896","READM/;" s object:files +src/option.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/os/mod.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +src/os/unix/consts.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +src/os/unix/mod.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +src/os/windows/mod.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +src/parse.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +src/parse.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +src/parse.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/parse_macro_input.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/parse_quote.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/parser/comment.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/parser/core.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/parser/errors.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/parser/errors.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/parser/expression.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/parser/helper.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/parser/macros.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/parser/mod.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/parser/mod.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/parser/pattern.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/parser/runtime.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/parser/slice.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/pat.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/path.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/pin_cell/README.md vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +src/pin_cell/mod.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +src/pin_cell/pin_mut.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +src/pin_cell/pin_ref.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +src/poll.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/print.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/projection.rs vendor/pin-utils/.cargo-checksum.json /^{"files":{"Cargo.toml":"0f8296bda5b928d57bb84443422f21db3aa35d6873ce651297634d80c183dc6b","LICEN/;" s object:files +src/prop.rs vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" s object:files +src/provide.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +src/psp.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/pty.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/punctuated.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/race.rs vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +src/raw_field.rs vendor/memoffset/.cargo-checksum.json /^{"files":{"Cargo.toml":"2556143c764ef2315fe44ff0ec43af47ca70b260fd64aa53f57dc42760d7132d","LICEN/;" s object:files +src/rcvec.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +src/receiver.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +src/reserved.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/resolver/errors.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/resolver/expression.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/resolver/inline_expression.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/resolver/mod.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/resolver/pattern.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/resolver/scope.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/resource.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/resource_manager.rs vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +src/result.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/rules.rs vendor/intl_pluralrules/.cargo-checksum.json /^{"files":{"Cargo.toml":"3b7451d96ed662827dd4163d64d96840fee1c4241c2480b8cdd91ef156ad7896","READM/;" s object:files +src/runtime.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +src/safe.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +src/sched.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sealed.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/select.rs vendor/futures-macro/.cargo-checksum.json /^{"files":{"Cargo.toml":"0af05d99a0144689032178763c2a88016e428451fae7a9d0d8fdca3063514783","LICEN/;" s object:files +src/serde.rs vendor/slab/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"ae4c54789e1055543317a6812ac11644d0586883dee8f790119e4cef244b1b8e","Car/;" s object:files +src/serde.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/sgx.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/shared/basetsd.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/bcrypt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/bthdef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/bthioctl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/bthsdpdef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/bugcodes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/cderr.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/cfg.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/d3d9.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/d3d9caps.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/d3d9types.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/d3dkmdt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/d3dukmdt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/dcomptypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/devguid.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/devpkey.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/devpropdef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/dinputd.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/dxgi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/dxgi1_2.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/dxgi1_3.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/dxgi1_4.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/dxgi1_5.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/dxgi1_6.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/dxgiformat.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/dxgitype.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/evntprov.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/evntrace.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/guiddef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/hidclass.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/hidpi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/hidsdi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/hidusage.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ifdef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ifmib.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/in6addr.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/inaddr.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/intsafe.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ipifcons.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ipmib.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/iprtrmib.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ks.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ksmedia.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ktmtypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/lmcons.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/minwindef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/mmreg.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/mod.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/mprapidef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/mstcpip.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/mswsockdef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/netioapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/nldef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ntddndis.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ntddscsi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ntddser.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ntdef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ntstatus.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/qos.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/rpc.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/rpcdce.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/rpcndr.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/sddl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/sspi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/stralign.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/tcpestats.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/tcpmib.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/transportsettingcommon.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/tvout.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/udpmib.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/usb.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/usbioctl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/usbiodef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/usbscan.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/usbspec.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/windef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/windot11.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/windowsx.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/winerror.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/winusbio.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/wlantypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/wmistr.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/wnnc.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ws2def.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/ws2ipdef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/wtypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/shared/wtypesbase.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/sink/buffer.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/close.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/drain.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/err_into.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/fanout.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/feed.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/flush.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/map_err.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/send.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/send_all.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/unfold.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/with.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/sink/with_flat_map.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/solid/aarch64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/solid/arm.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/solid/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/span.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/span_of.rs vendor/memoffset/.cargo-checksum.json /^{"files":{"Cargo.toml":"2556143c764ef2315fe44ff0ec43af47ca70b260fd64aa53f57dc42760d7132d","LICEN/;" s object:files +src/spanned.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +src/spanned.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/spawn.rs vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +src/specialization.rs vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +src/stack_pin.rs vendor/pin-utils/.cargo-checksum.json /^{"files":{"Cargo.toml":"0f8296bda5b928d57bb84443422f21db3aa35d6873ce651297634d80c183dc6b","LICEN/;" s object:files +src/stmt.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/str.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/stream.rs vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +src/stream/abortable.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/empty.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/futures_ordered.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/futures_unordered/abort.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/futures_unordered/iter.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/futures_unordered/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/futures_unordered/ready_to_run_queue.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/futures_unordered/task.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/iter.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/once.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/pending.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/poll_fn.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/poll_immediate.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/repeat.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/repeat_with.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/select.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/select_all.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/select_with_strategy.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/all.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/any.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/buffer_unordered.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/buffered.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/catch_unwind.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/chain.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/chunks.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/collect.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/concat.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/count.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/cycle.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/enumerate.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/filter.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/filter_map.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/flatten.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/flatten_unordered.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/fold.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/for_each.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/for_each_concurrent.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/forward.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/fuse.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/into_future.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/map.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/next.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/peek.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/ready_chunks.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/scan.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/select_next_some.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/skip.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/skip_while.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/split.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/take.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/take_until.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/take_while.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/then.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/unzip.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/stream/zip.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/and_then.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/into_async_read.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/into_stream.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/or_else.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_buffer_unordered.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_buffered.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_chunks.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_collect.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_concat.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_filter.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_filter_map.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_flatten.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_fold.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_for_each.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_for_each_concurrent.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_next.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_skip_while.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_take_while.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/try_stream/try_unfold.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream/unfold.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/stream_select.rs vendor/futures-macro/.cargo-checksum.json /^{"files":{"Cargo.toml":"0af05d99a0144689032178763c2a88016e428451fae7a9d0d8fdca3063514783","LICEN/;" s object:files +src/subtags/language.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/subtags/mod.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/subtags/region.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/subtags/script.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/subtags/variant.rs vendor/unic-langid-impl/.cargo-checksum.json /^{"files":{"Cargo.lock":"7a6bb71d558693114436f11f7089237447a936cc8365f8afe0305e0b68dae07b","Cargo/;" s object:files +src/switch.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/sync.rs vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +src/sync/mod.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/sync/mutex.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/sync/rw_lock.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/sys/aio.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/epoll.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/event.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/eventfd.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/inotify.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/ioctl/bsd.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/ioctl/linux.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/ioctl/mod.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/memfd.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/mman.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/mod.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/personality.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/pthread.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/ptrace/bsd.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/ptrace/linux.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/ptrace/mod.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/quota.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/reboot.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/resource.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/select.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/sendfile.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/signal.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/signalfd.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/socket/addr.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/socket/mod.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/socket/sockopt.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/stat.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/statfs.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/statvfs.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/sysinfo.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/termios.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/time.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/timer.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/timerfd.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/uio.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/utsname.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/sys/wait.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/tables.rs vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +src/task/__internal/atomic_waker.rs vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +src/task/__internal/mod.rs vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +src/task/mod.rs vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +src/task/mod.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/task/poll.rs vendor/futures-core/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ee02d0bf79bbb33071503435f66fa1f62cf9aa022e12e928b2ee37e057d7d45","LICEN/;" s object:files +src/task/spawn.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/test_helpers.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +src/tests.rs vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +src/tests.rs vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +src/tests/memchr/iter.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/tests/memchr/memchr.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/tests/memchr/mod.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/tests/memchr/simple.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/tests/memchr/testdata.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/tests/mod.rs vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/tests/x86_64-soft_float.json vendor/memchr/.cargo-checksum.json /^{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.to/;" s object:files +src/thread.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/thread_pool.rs vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" s object:files +src/time.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/tinystr16.rs vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +src/tinystr4.rs vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +src/tinystr8.rs vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +src/tinystrauto.rs vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +src/to_tokens.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +src/token.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/tt.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/ty.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/types.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +src/types/mod.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/types/number.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/types/plural.rs vendor/fluent-bundle/.cargo-checksum.json /^{"files":{"Cargo.toml":"87a01e2e130c153cac13b916dba613ff4d9dde0795ebc607932d9ea9c960cf77","LICEN/;" s object:files +src/ucontext.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/ucrt/corecrt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/ucrt/mod.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/accctrl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/aclapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/adhoc.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/appmgmt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/audioclient.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/audiosessiontypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/avrt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bits.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bits10_1.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bits1_5.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bits2_0.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bits2_5.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bits3_0.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bits4_0.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bits5_0.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bitscfg.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bitsmsg.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bluetoothapis.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bluetoothleapis.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/bthledef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/cfgmgr32.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/cguid.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/combaseapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/coml2api.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/commapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/commctrl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/commdlg.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/commoncontrols.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/consoleapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/corsym.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d2d1.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d2d1_1.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d2d1_2.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d2d1_3.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d2d1effectauthor.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d2d1effects.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d2d1effects_1.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d2d1effects_2.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d2d1svg.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d2dbasetypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d10.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d10_1.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d10_1shader.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d10effect.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d10misc.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d10sdklayers.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d10shader.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d11.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d11_1.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d11_2.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d11_3.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d11_4.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d11on12.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d11sdklayers.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d11shader.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d11tokenizedprogramformat.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d12.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d12sdklayers.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3d12shader.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3dcommon.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3dcompiler.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3dcsx.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3dx10core.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3dx10math.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/d3dx10mesh.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/datetimeapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/davclnt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dbghelp.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dbt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dcommon.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dcomp.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dcompanimation.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dde.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ddraw.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ddrawi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ddrawint.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/debugapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/devicetopology.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dinput.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dispex.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dmksctl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dmusicc.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/docobj.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/documenttarget.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dot1x.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dpa_dsa.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dpapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dsgetdc.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dsound.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dsrole.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dvp.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dwmapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dwrite.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dwrite_1.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dwrite_2.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dwrite_3.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dxdiag.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dxfile.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dxgidebug.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dxva2api.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/dxvahd.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/eaptypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/enclaveapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/endpointvolume.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/errhandlingapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/evntcons.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/exdisp.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/fibersapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/fileapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/functiondiscoverykeys_devpkey.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/gl/gl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/gl/mod.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/handleapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/heapapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/highlevelmonitorconfigurationapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/http.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/imm.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/interlockedapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ioapiset.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ipexport.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/iphlpapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/iptypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/jobapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/jobapi2.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/knownfolders.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ktmw32.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/l2cmn.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/libloaderapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmaccess.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmalert.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmapibuf.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmat.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmdfs.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmerrlog.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmjoin.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmmsg.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmremutl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmrepl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmserver.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmshare.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmstats.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmsvc.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmuse.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lmwksta.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lowlevelmonitorconfigurationapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/lsalookup.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/memoryapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/minschannel.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/minwinbase.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/mmdeviceapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/mmeapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/mmsystem.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/mod.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/msaatext.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/mscat.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/mschapp.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/mssip.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/mswsock.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/namedpipeapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/namespaceapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/nb30.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ncrypt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ntlsa.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ntsecapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/oaidl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/objbase.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/objidl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/objidlbase.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ocidl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ole2.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/oleauto.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/olectl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/oleidl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/opmapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/pdh.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/perflib.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/physicalmonitorenumerationapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/playsoundapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/portabledevice.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/portabledeviceapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/portabledevicetypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/powerbase.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/powersetting.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/powrprof.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/processenv.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/processsnapshot.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/processthreadsapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/processtopologyapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/profileapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/propidl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/propkey.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/propkeydef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/propsys.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/prsht.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/psapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/realtimeapiset.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/reason.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/restartmanager.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/restrictederrorinfo.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/rmxfguid.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/rtinfo.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/sapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/sapi51.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/sapi53.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/sapiddk.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/sapiddk51.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/schannel.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/securityappcontainer.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/securitybaseapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/servprov.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/setupapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/shellapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/shellscalingapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/shlobj.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/shobjidl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/shobjidl_core.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/shtypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/softpub.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/spapidef.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/spellcheck.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/sporder.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/sql.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/sqlext.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/sqltypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/sqlucode.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/sspi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/stringapiset.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/strmif.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/subauth.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/synchapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/sysinfoapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/systemtopologyapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/taskschd.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/textstor.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/threadpoolapiset.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/threadpoollegacyapiset.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/timeapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/timezoneapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/tlhelp32.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/unknwnbase.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/urlhist.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/urlmon.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/userenv.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/usp10.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/utilapiset.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/uxtheme.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/vsbackup.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/vss.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/vsserror.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/vswriter.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wbemads.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wbemcli.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wbemdisp.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wbemprov.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wbemtran.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wct.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/werapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winbase.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wincodec.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wincodecsdk.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wincon.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wincontypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wincred.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wincrypt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/windowsceip.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winefs.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winevt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wingdi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winhttp.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wininet.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winineti.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winioctl.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winnetwk.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winnls.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winnt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winreg.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winsafer.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winscard.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winsmcrd.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winsock2.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winspool.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winsvc.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wintrust.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winusb.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winuser.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/winver.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wlanapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wlanihv.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wlanihvtypes.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wlclient.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wow64apiset.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wpdmtpextensions.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ws2bth.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ws2spi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/ws2tcpip.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/wtsapi32.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/um/xinput.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/unfold_state.rs vendor/futures-util/.cargo-checksum.json /^{"files":{"Cargo.toml":"8f0dcae90536603b215fddc67c7231a66d1b8dc78be1ae5936709aec30e70bdc","LICEN/;" s object:files +src/unicode.rs vendor/fluent-syntax/.cargo-checksum.json /^{"files":{"Cargo.lock":"3fd2bd8414b6f818747e28ac2e78d0d99795946f2b4c74ca5e5ca9ce1bc8f8e2","Cargo/;" s object:files +src/unistd.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +src/unix/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/apple/b32/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/apple/b32/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/apple/b64/aarch64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/apple/b64/aarch64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/apple/b64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/apple/b64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/apple/b64/x86_64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/apple/b64/x86_64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/apple/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/dragonfly/errno.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/dragonfly/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/aarch64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/arm.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/powerpc.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/powerpc64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/riscv64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/x86.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/freebsdlike/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/netbsd/aarch64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/netbsd/arm.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/netbsd/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/netbsd/powerpc.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/netbsd/sparc64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/netbsd/x86.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/netbsd/x86_64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/openbsd/aarch64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/openbsd/arm.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/openbsd/mips64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/openbsd/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/openbsd/powerpc.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/openbsd/powerpc64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/openbsd/riscv64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/openbsd/sparc64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/openbsd/x86.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/bsd/netbsdlike/openbsd/x86_64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/haiku/b32.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/haiku/b64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/haiku/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/haiku/native.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/haiku/x86_64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/hermit/aarch64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/hermit/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/hermit/x86_64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/b32/arm.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/b32/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/b32/x86/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/b32/x86/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/b64/aarch64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/b64/aarch64/int128.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/b64/aarch64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/b64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/b64/riscv64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/b64/riscv64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/b64/x86_64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/b64/x86_64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/android/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/emscripten/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/emscripten/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/emscripten/no_align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/arch/generic/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/arch/mips/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/arch/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/arch/powerpc/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/arch/sparc/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/arm/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/arm/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/m68k/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/m68k/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/mips/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/mips/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/powerpc.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/riscv32/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/sparc/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/sparc/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/x86/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b32/x86/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/aarch64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/aarch64/int128.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/loongarch64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/mips64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/mips64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/riscv64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/s390x.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/sparc64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/x86_64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/gnu/no_align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b32/arm/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b32/arm/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b32/hexagon.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b32/mips/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b32/mips/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b32/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b32/powerpc.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b32/riscv32/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b32/riscv32/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b32/x86/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b32/x86/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b64/aarch64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b64/aarch64/int128.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b64/aarch64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b64/mips64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b64/powerpc64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b64/riscv64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b64/riscv64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b64/s390x.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b64/x86_64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/b64/x86_64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/musl/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/no_align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/non_exhaustive.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/arm/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/arm/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/arm/no_align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/mips/mips32/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/mips/mips64/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/mips/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/no_align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/x86_64/l4re.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/x86_64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/linux/uclibc/x86_64/other.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/linux_like/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/newlib/aarch64/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/newlib/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/newlib/arm/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/newlib/espidf/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/newlib/generic.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/newlib/horizon/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/newlib/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/newlib/no_align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/newlib/powerpc/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/no_align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/redox/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/solarish/compat.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/solarish/illumos.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/solarish/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/solarish/solaris.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/solarish/x86.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/solarish/x86_64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unix/solarish/x86_common.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/unpark_mutex.rs vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" s object:files +src/unsafe_self_cell.rs vendor/self_cell/.cargo-checksum.json /^{"files":{"Cargo.toml":"ab60ad0024cea3e0c60fc4d116adc7fae35d5f85b042d285bba65f22c42407d5","LICEN/;" s object:files +src/util.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +src/valid.rs vendor/thiserror-impl/.cargo-checksum.json /^{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICEN/;" s object:files +src/vc/excpt.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/vc/limits.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/vc/mod.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/vc/vadefs.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/vc/vcruntime.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/vec.rs vendor/elsa/.cargo-checksum.json /^{"files":{"Cargo.lock":"a37ad080f39cbb8e587a2da24559b56e4e4564e69bfbb67233090733d38932ef","Cargo/;" s object:files +src/vec.rs vendor/stdext/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"25083d6f00a303ea6b34e65ca809ecd2cd7a5e5dfea94456a38d70b6d6833f74","CON/;" s object:files +src/verbatim.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/version.rs vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +src/vxworks/aarch64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/vxworks/arm.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/vxworks/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/vxworks/powerpc.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/vxworks/powerpc64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/vxworks/x86.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/vxworks/x86_64.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/waker.rs vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +src/waker_ref.rs vendor/futures-task/.cargo-checksum.json /^{"files":{"Cargo.toml":"f46508048cddac80bccda985ab488232fa533c860c680802f1a488b9a2e80a9b","LICEN/;" s object:files +src/wasi.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/whitespace.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +src/windows/gnu/align.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/windows/gnu/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/windows/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/windows/msvc/mod.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +src/winrt/activation.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/winrt/hstring.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/winrt/inspectable.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/winrt/mod.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/winrt/roapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/winrt/robuffer.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/winrt/roerrorapi.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/winrt/winstring.rs vendor/winapi/.cargo-checksum.json /^{"files":{"Cargo.toml":"d25b7c71c515a1869c75b3ff957bf845386bec03bcb407532e3726919f0b36c7","LICEN/;" s object:files +src/wrapper.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +srcdir Makefile.in /^srcdir = @srcdir@$/;" m +srcdir builtins/Makefile.in /^srcdir = @srcdir@$/;" m +srcdir lib/glob/Makefile.in /^srcdir = @srcdir@$/;" m +srcdir lib/intl/Makefile.in /^srcdir = @srcdir@$/;" m +srcdir lib/malloc/Makefile.in /^srcdir = @srcdir@$/;" m +srcdir lib/readline/Makefile.in /^srcdir = @srcdir@$/;" m +srcdir lib/sh/Makefile.in /^srcdir = @srcdir@$/;" m +srcdir lib/termcap/Makefile.in /^srcdir = @srcdir@$/;" m +srcdir lib/tilde/Makefile.in /^srcdir = @srcdir@$/;" m +srcdir support/Makefile.in /^srcdir = @srcdir@$/;" m +ss lib/malloc/alloca.c /^ long ss[0200]; \/* 0200 overflow words. *\/$/;" m struct:stack_segment_linkage typeref:typename:long[0200] file: +ss_flags builtins_rust/wait/src/signal.rs /^ pub ss_flags: ::std::os::raw::c_int,$/;" m struct:stack_t +ss_flags r_bash/src/lib.rs /^ pub ss_flags: ::std::os::raw::c_int,$/;" m struct:stack_t +ss_flags r_glob/src/lib.rs /^ pub ss_flags: ::std::os::raw::c_int,$/;" m struct:stack_t +ss_flags r_readline/src/lib.rs /^ pub ss_flags: ::std::os::raw::c_int,$/;" m struct:stack_t +ss_onstack builtins_rust/wait/src/signal.rs /^ pub ss_onstack: ::std::os::raw::c_int,$/;" m struct:sigstack +ss_onstack r_bash/src/lib.rs /^ pub ss_onstack: ::std::os::raw::c_int,$/;" m struct:sigstack +ss_onstack r_glob/src/lib.rs /^ pub ss_onstack: ::std::os::raw::c_int,$/;" m struct:sigstack +ss_onstack r_readline/src/lib.rs /^ pub ss_onstack: ::std::os::raw::c_int,$/;" m struct:sigstack +ss_size builtins_rust/wait/src/signal.rs /^ pub ss_size: usize,$/;" m struct:stack_t +ss_size r_bash/src/lib.rs /^ pub ss_size: usize,$/;" m struct:stack_t +ss_size r_glob/src/lib.rs /^ pub ss_size: usize,$/;" m struct:stack_t +ss_size r_readline/src/lib.rs /^ pub ss_size: usize,$/;" m struct:stack_t +ss_sp builtins_rust/wait/src/signal.rs /^ pub ss_sp: *mut ::std::os::raw::c_void,$/;" m struct:sigstack +ss_sp builtins_rust/wait/src/signal.rs /^ pub ss_sp: *mut ::std::os::raw::c_void,$/;" m struct:stack_t +ss_sp r_bash/src/lib.rs /^ pub ss_sp: *mut ::std::os::raw::c_void,$/;" m struct:sigstack +ss_sp r_bash/src/lib.rs /^ pub ss_sp: *mut ::std::os::raw::c_void,$/;" m struct:stack_t +ss_sp r_glob/src/lib.rs /^ pub ss_sp: *mut ::std::os::raw::c_void,$/;" m struct:sigstack +ss_sp r_glob/src/lib.rs /^ pub ss_sp: *mut ::std::os::raw::c_void,$/;" m struct:stack_t +ss_sp r_readline/src/lib.rs /^ pub ss_sp: *mut ::std::os::raw::c_void,$/;" m struct:sigstack +ss_sp r_readline/src/lib.rs /^ pub ss_sp: *mut ::std::os::raw::c_void,$/;" m struct:stack_t +ssa0 lib/malloc/alloca.c /^ long ssa0;$/;" m struct:stack_segment_linkage typeref:typename:long file: +ssa1 lib/malloc/alloca.c /^ long ssa1;$/;" m struct:stack_segment_linkage typeref:typename:long file: +ssa2 lib/malloc/alloca.c /^ long ssa2;$/;" m struct:stack_segment_linkage typeref:typename:long file: +ssa3 lib/malloc/alloca.c /^ long ssa3;$/;" m struct:stack_segment_linkage typeref:typename:long file: +ssa4 lib/malloc/alloca.c /^ long ssa4;$/;" m struct:stack_segment_linkage typeref:typename:long file: +ssa5 lib/malloc/alloca.c /^ long ssa5;$/;" m struct:stack_segment_linkage typeref:typename:long file: +ssa6 lib/malloc/alloca.c /^ long ssa6;$/;" m struct:stack_segment_linkage typeref:typename:long file: +ssa7 lib/malloc/alloca.c /^ long ssa7;$/;" m struct:stack_segment_linkage typeref:typename:long file: +ssbase lib/malloc/alloca.c /^ long ssbase:32; \/* Offset to stack base. *\/$/;" m struct:stack_segment_linkage typeref:typename:long:32 file: +sscanf r_bash/src/lib.rs /^ pub fn sscanf($/;" f +sscanf r_readline/src/lib.rs /^ pub fn sscanf($/;" f +sscanf vendor/libc/src/fuchsia/mod.rs /^ pub fn sscanf(s: *const ::c_char, format: *const ::c_char, ...) -> ::c_int;$/;" f +sscanf vendor/libc/src/solid/mod.rs /^ pub fn sscanf(arg1: *const c_char, arg2: *const c_char, ...) -> c_int;$/;" f +sscanf vendor/libc/src/unix/mod.rs /^ pub fn sscanf(s: *const ::c_char, format: *const ::c_char, ...) -> ::c_int;$/;" f +sscanf vendor/libc/src/vxworks/mod.rs /^ pub fn sscanf(s: *const ::c_char, format: *const ::c_char, ...) -> ::c_int;$/;" f +sscanf vendor/libc/src/wasi.rs /^ pub fn sscanf(s: *const ::c_char, format: *const ::c_char, ...) -> ::c_int;$/;" f +sscray lib/malloc/alloca.c /^ long sscray[7]; \/* Reserved for Cray Research. *\/$/;" m struct:stack_segment_linkage typeref:typename:long[7] file: +sscsnm lib/malloc/alloca.c /^ long sscsnm; \/* Private control structure number for$/;" m struct:stack_segment_linkage typeref:typename:long file: +sse vendor/memchr/src/memmem/prefilter/x86/mod.rs /^pub(crate) mod sse;$/;" n +sse vendor/memchr/src/memmem/x86/mod.rs /^pub(crate) mod sse;$/;" n +sse2 vendor/memchr/src/memchr/x86/mod.rs /^mod sse2;$/;" n +ssgvup lib/malloc/alloca.c /^ long ssgvup; \/* Pointer to multitasking thread giveup. *\/$/;" m struct:stack_segment_linkage typeref:typename:long file: +ssignal builtins_rust/wait/src/signal.rs /^ pub fn ssignal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_t;$/;" f +ssignal r_bash/src/lib.rs /^ pub fn ssignal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_t;$/;" f +ssignal r_glob/src/lib.rs /^ pub fn ssignal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_t;$/;" f +ssignal r_readline/src/lib.rs /^ pub fn ssignal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_t;$/;" f +ssize_t vendor/libc/src/fuchsia/mod.rs /^pub type ssize_t = isize;$/;" t +ssize_t vendor/libc/src/hermit/mod.rs /^pub type ssize_t = isize;$/;" t +ssize_t vendor/libc/src/psp.rs /^pub type ssize_t = isize;$/;" t +ssize_t vendor/libc/src/sgx.rs /^pub type ssize_t = isize;$/;" t +ssize_t vendor/libc/src/solid/mod.rs /^pub type ssize_t = ::intptr_t;$/;" t +ssize_t vendor/libc/src/switch.rs /^pub type ssize_t = isize;$/;" t +ssize_t vendor/libc/src/unix/mod.rs /^pub type ssize_t = isize;$/;" t +ssize_t vendor/libc/src/vxworks/mod.rs /^pub type ssize_t = ::intptr_t;$/;" t +ssize_t vendor/libc/src/wasi.rs /^pub type ssize_t = isize;$/;" t +ssize_t vendor/libc/src/windows/mod.rs /^pub type ssize_t = isize;$/;" t +sspi vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "sspi")] pub mod sspi;$/;" n +sspi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "sspi")] pub mod sspi;$/;" n +sspseg lib/malloc/alloca.c /^ long sspseg:32; \/* Offset to linkage control of previous$/;" m struct:stack_segment_linkage typeref:typename:long:32 file: +sss0 lib/malloc/alloca.c /^ long sss0;$/;" m struct:stack_segment_linkage typeref:typename:long file: +sss1 lib/malloc/alloca.c /^ long sss1;$/;" m struct:stack_segment_linkage typeref:typename:long file: +sss2 lib/malloc/alloca.c /^ long sss2;$/;" m struct:stack_segment_linkage typeref:typename:long file: +sss3 lib/malloc/alloca.c /^ long sss3;$/;" m struct:stack_segment_linkage typeref:typename:long file: +sss4 lib/malloc/alloca.c /^ long sss4;$/;" m struct:stack_segment_linkage typeref:typename:long file: +sss5 lib/malloc/alloca.c /^ long sss5;$/;" m struct:stack_segment_linkage typeref:typename:long file: +sss6 lib/malloc/alloca.c /^ long sss6;$/;" m struct:stack_segment_linkage typeref:typename:long file: +sss7 lib/malloc/alloca.c /^ long sss7;$/;" m struct:stack_segment_linkage typeref:typename:long file: +sssize lib/malloc/alloca.c /^ long sssize:32; \/* Number of words in this segment. *\/$/;" m struct:stack_segment_linkage typeref:typename:long:32 file: +sstcpt lib/malloc/alloca.c /^ long sstcpt:32; \/* Pointer to task common address block. *\/$/;" m struct:stack_segment_linkage typeref:typename:long:32 file: +sstpid lib/malloc/alloca.c /^ long sstpid; \/* Process ID for pid based multi-tasking. *\/$/;" m struct:stack_segment_linkage typeref:typename:long file: +ssusr1 lib/malloc/alloca.c /^ long ssusr1; \/* Reserved for user. *\/$/;" m struct:stack_segment_linkage typeref:typename:long file: +ssusr2 lib/malloc/alloca.c /^ long ssusr2; \/* Reserved for user. *\/$/;" m struct:stack_segment_linkage typeref:typename:long file: +st support/man2html.c /^ char *st;$/;" m struct:STRDEF typeref:typename:char * file: +st_atim r_bash/src/lib.rs /^ pub st_atim: timespec,$/;" m struct:stat +st_atim r_bash/src/lib.rs /^ pub st_atim: timespec,$/;" m struct:stat64 +st_atim r_readline/src/lib.rs /^ pub st_atim: timespec,$/;" m struct:stat +st_atim r_readline/src/lib.rs /^ pub st_atim: timespec,$/;" m struct:stat64 +st_atime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_atime: ::time_t,$/;" m struct:stat +st_atime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_atime: ::time_t,$/;" m struct:stat +st_atime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_atime: ::time_t,$/;" m struct:stat +st_atime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_atime: ::time_t,$/;" m struct:stat +st_atime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_atime_nsec: ::c_long,$/;" m struct:stat +st_atime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_atime_nsec: ::c_long,$/;" m struct:stat +st_atime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_atime_nsec: ::c_long,$/;" m struct:stat +st_atime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_atime_nsec: ::c_long,$/;" m struct:stat +st_birthtime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_birthtime: ::time_t,$/;" m struct:stat +st_birthtime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_birthtime: ::time_t,$/;" m struct:stat +st_birthtime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_birthtime: ::time_t,$/;" m struct:stat +st_birthtime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_birthtime: ::time_t,$/;" m struct:stat +st_birthtime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_birthtime_nsec: ::c_long,$/;" m struct:stat +st_birthtime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_birthtime_nsec: ::c_long,$/;" m struct:stat +st_birthtime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_birthtime_nsec: ::c_long,$/;" m struct:stat +st_birthtime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_birthtime_nsec: ::c_long,$/;" m struct:stat +st_blksize r_bash/src/lib.rs /^ pub st_blksize: __blksize_t,$/;" m struct:stat +st_blksize r_bash/src/lib.rs /^ pub st_blksize: __blksize_t,$/;" m struct:stat64 +st_blksize r_readline/src/lib.rs /^ pub st_blksize: __blksize_t,$/;" m struct:stat +st_blksize r_readline/src/lib.rs /^ pub st_blksize: __blksize_t,$/;" m struct:stat64 +st_blksize vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_blksize: ::blksize_t,$/;" m struct:stat +st_blksize vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_blksize: ::blksize_t,$/;" m struct:stat +st_blksize vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_blksize: ::blksize_t,$/;" m struct:stat +st_blksize vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_blksize: ::blksize_t,$/;" m struct:stat +st_blocks r_bash/src/lib.rs /^ pub st_blocks: __blkcnt64_t,$/;" m struct:stat64 +st_blocks r_bash/src/lib.rs /^ pub st_blocks: __blkcnt_t,$/;" m struct:stat +st_blocks r_readline/src/lib.rs /^ pub st_blocks: __blkcnt64_t,$/;" m struct:stat64 +st_blocks r_readline/src/lib.rs /^ pub st_blocks: __blkcnt_t,$/;" m struct:stat +st_blocks vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_blocks: ::blkcnt_t,$/;" m struct:stat +st_blocks vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_blocks: ::blkcnt_t,$/;" m struct:stat +st_blocks vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_blocks: ::blkcnt_t,$/;" m struct:stat +st_blocks vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_blocks: ::blkcnt_t,$/;" m struct:stat +st_bstream input.h /^enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream};$/;" e enum:stream_type +st_ctim r_bash/src/lib.rs /^ pub st_ctim: timespec,$/;" m struct:stat +st_ctim r_bash/src/lib.rs /^ pub st_ctim: timespec,$/;" m struct:stat64 +st_ctim r_readline/src/lib.rs /^ pub st_ctim: timespec,$/;" m struct:stat +st_ctim r_readline/src/lib.rs /^ pub st_ctim: timespec,$/;" m struct:stat64 +st_ctime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_ctime: ::time_t,$/;" m struct:stat +st_ctime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_ctime: ::time_t,$/;" m struct:stat +st_ctime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_ctime: ::time_t,$/;" m struct:stat +st_ctime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_ctime: ::time_t,$/;" m struct:stat +st_ctime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_ctime_nsec: ::c_long,$/;" m struct:stat +st_ctime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_ctime_nsec: ::c_long,$/;" m struct:stat +st_ctime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_ctime_nsec: ::c_long,$/;" m struct:stat +st_ctime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_ctime_nsec: ::c_long,$/;" m struct:stat +st_dev r_bash/src/lib.rs /^ pub st_dev: __dev_t,$/;" m struct:stat +st_dev r_bash/src/lib.rs /^ pub st_dev: __dev_t,$/;" m struct:stat64 +st_dev r_readline/src/lib.rs /^ pub st_dev: __dev_t,$/;" m struct:stat +st_dev r_readline/src/lib.rs /^ pub st_dev: __dev_t,$/;" m struct:stat64 +st_dev vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_dev: ::dev_t,$/;" m struct:stat +st_dev vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_dev: ::dev_t,$/;" m struct:stat +st_dev vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_dev: ::dev_t,$/;" m struct:stat +st_dev vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_dev: ::dev_t,$/;" m struct:stat +st_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_flags: ::fflags_t,$/;" m struct:stat +st_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_flags: ::fflags_t,$/;" m struct:stat +st_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_flags: ::fflags_t,$/;" m struct:stat +st_flags vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_flags: ::fflags_t,$/;" m struct:stat +st_gen vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_gen: u32,$/;" m struct:stat +st_gen vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_gen: u64,$/;" m struct:stat +st_gen vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_gen: u64,$/;" m struct:stat +st_gen vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_gen: u64,$/;" m struct:stat +st_gid r_bash/src/lib.rs /^ pub st_gid: __gid_t,$/;" m struct:stat +st_gid r_bash/src/lib.rs /^ pub st_gid: __gid_t,$/;" m struct:stat64 +st_gid r_readline/src/lib.rs /^ pub st_gid: __gid_t,$/;" m struct:stat +st_gid r_readline/src/lib.rs /^ pub st_gid: __gid_t,$/;" m struct:stat64 +st_gid vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_gid: ::gid_t,$/;" m struct:stat +st_gid vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_gid: ::gid_t,$/;" m struct:stat +st_gid vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_gid: ::gid_t,$/;" m struct:stat +st_gid vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_gid: ::gid_t,$/;" m struct:stat +st_ino r_bash/src/lib.rs /^ pub st_ino: __ino64_t,$/;" m struct:stat64 +st_ino r_bash/src/lib.rs /^ pub st_ino: __ino_t,$/;" m struct:stat +st_ino r_readline/src/lib.rs /^ pub st_ino: __ino64_t,$/;" m struct:stat64 +st_ino r_readline/src/lib.rs /^ pub st_ino: __ino_t,$/;" m struct:stat +st_ino vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_ino: ::ino_t,$/;" m struct:stat +st_ino vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_ino: ::ino_t,$/;" m struct:stat +st_ino vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_ino: ::ino_t,$/;" m struct:stat +st_ino vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_ino: ::ino_t,$/;" m struct:stat +st_lspare vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_lspare: i32,$/;" m struct:stat +st_mode r_bash/src/lib.rs /^ pub st_mode: __mode_t,$/;" m struct:stat +st_mode r_bash/src/lib.rs /^ pub st_mode: __mode_t,$/;" m struct:stat64 +st_mode r_readline/src/lib.rs /^ pub st_mode: __mode_t,$/;" m struct:stat +st_mode r_readline/src/lib.rs /^ pub st_mode: __mode_t,$/;" m struct:stat64 +st_mode vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_mode: ::mode_t,$/;" m struct:stat +st_mode vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_mode: ::mode_t,$/;" m struct:stat +st_mode vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_mode: ::mode_t,$/;" m struct:stat +st_mode vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_mode: ::mode_t,$/;" m struct:stat +st_mtim r_bash/src/lib.rs /^ pub st_mtim: timespec,$/;" m struct:stat +st_mtim r_bash/src/lib.rs /^ pub st_mtim: timespec,$/;" m struct:stat64 +st_mtim r_readline/src/lib.rs /^ pub st_mtim: timespec,$/;" m struct:stat +st_mtim r_readline/src/lib.rs /^ pub st_mtim: timespec,$/;" m struct:stat64 +st_mtime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_mtime: ::time_t,$/;" m struct:stat +st_mtime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_mtime: ::time_t,$/;" m struct:stat +st_mtime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_mtime: ::time_t,$/;" m struct:stat +st_mtime vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_mtime: ::time_t,$/;" m struct:stat +st_mtime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_mtime_nsec: ::c_long,$/;" m struct:stat +st_mtime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_mtime_nsec: ::c_long,$/;" m struct:stat +st_mtime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_mtime_nsec: ::c_long,$/;" m struct:stat +st_mtime_nsec vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_mtime_nsec: ::c_long,$/;" m struct:stat +st_nlink r_bash/src/lib.rs /^ pub st_nlink: __nlink_t,$/;" m struct:stat +st_nlink r_bash/src/lib.rs /^ pub st_nlink: __nlink_t,$/;" m struct:stat64 +st_nlink r_readline/src/lib.rs /^ pub st_nlink: __nlink_t,$/;" m struct:stat +st_nlink r_readline/src/lib.rs /^ pub st_nlink: __nlink_t,$/;" m struct:stat64 +st_nlink vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_nlink: ::nlink_t,$/;" m struct:stat +st_nlink vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_nlink: ::nlink_t,$/;" m struct:stat +st_nlink vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_nlink: ::nlink_t,$/;" m struct:stat +st_nlink vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_nlink: ::nlink_t,$/;" m struct:stat +st_none input.h /^enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream};$/;" e enum:stream_type +st_padding0 vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ st_padding0: i16,$/;" m struct:stat +st_padding0 vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ st_padding0: i16,$/;" m struct:stat +st_padding0 vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ st_padding0: i16,$/;" m struct:stat +st_padding1 vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ st_padding1: i32,$/;" m struct:stat +st_padding1 vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ st_padding1: i32,$/;" m struct:stat +st_padding1 vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ st_padding1: i32,$/;" m struct:stat +st_rdev r_bash/src/lib.rs /^ pub st_rdev: __dev_t,$/;" m struct:stat +st_rdev r_bash/src/lib.rs /^ pub st_rdev: __dev_t,$/;" m struct:stat64 +st_rdev r_readline/src/lib.rs /^ pub st_rdev: __dev_t,$/;" m struct:stat +st_rdev r_readline/src/lib.rs /^ pub st_rdev: __dev_t,$/;" m struct:stat64 +st_rdev vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_rdev: ::dev_t,$/;" m struct:stat +st_rdev vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_rdev: ::dev_t,$/;" m struct:stat +st_rdev vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_rdev: ::dev_t,$/;" m struct:stat +st_rdev vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_rdev: ::dev_t,$/;" m struct:stat +st_size r_bash/src/lib.rs /^ pub st_size: __off_t,$/;" m struct:stat +st_size r_bash/src/lib.rs /^ pub st_size: __off_t,$/;" m struct:stat64 +st_size r_readline/src/lib.rs /^ pub st_size: __off_t,$/;" m struct:stat +st_size r_readline/src/lib.rs /^ pub st_size: __off_t,$/;" m struct:stat64 +st_size vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_size: ::off_t,$/;" m struct:stat +st_size vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_size: ::off_t,$/;" m struct:stat +st_size vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_size: ::off_t,$/;" m struct:stat +st_size vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_size: ::off_t,$/;" m struct:stat +st_spare vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_spare: [u64; 10],$/;" m struct:stat +st_spare vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_spare: [u64; 10],$/;" m struct:stat +st_spare vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_spare: [u64; 10],$/;" m struct:stat +st_stdin input.h /^enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream};$/;" e enum:stream_type +st_stream input.h /^enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream};$/;" e enum:stream_type +st_string input.h /^enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream};$/;" e enum:stream_type +st_uid r_bash/src/lib.rs /^ pub st_uid: __uid_t,$/;" m struct:stat +st_uid r_bash/src/lib.rs /^ pub st_uid: __uid_t,$/;" m struct:stat64 +st_uid r_readline/src/lib.rs /^ pub st_uid: __uid_t,$/;" m struct:stat +st_uid r_readline/src/lib.rs /^ pub st_uid: __uid_t,$/;" m struct:stat64 +st_uid vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^ pub st_uid: ::uid_t,$/;" m struct:stat +st_uid vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^ pub st_uid: ::uid_t,$/;" m struct:stat +st_uid vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^ pub st_uid: ::uid_t,$/;" m struct:stat +st_uid vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^ pub st_uid: ::uid_t,$/;" m struct:stat +stabil r_bash/src/lib.rs /^ pub stabil: __syscall_slong_t,$/;" m struct:timex +stabil r_readline/src/lib.rs /^ pub stabil: __syscall_slong_t,$/;" m struct:timex +stack_control_header lib/malloc/alloca.c /^struct stack_control_header$/;" s file: +stack_dir lib/malloc/alloca.c /^static int stack_dir; \/* 1 or -1 once known. *\/$/;" v typeref:typename:int file: +stack_getbounds vendor/libc/src/unix/solarish/mod.rs /^ pub fn stack_getbounds(sp: *mut ::stack_t) -> ::c_int;$/;" f +stack_pin vendor/pin-utils/src/lib.rs /^mod stack_pin;$/;" n +stack_pin vendor/pin-utils/tests/stack_pin.rs /^fn stack_pin() {$/;" f +stack_segment_linkage lib/malloc/alloca.c /^struct stack_segment_linkage$/;" s file: +stack_size vendor/futures-executor/src/thread_pool.rs /^ pub fn stack_size(&mut self, stack_size: usize) -> &mut Self {$/;" P implementation:ThreadPoolBuilder +stack_size vendor/futures-executor/src/thread_pool.rs /^ stack_size: usize,$/;" m struct:ThreadPoolBuilder +stack_t builtins_rust/wait/src/signal.rs /^pub struct stack_t {$/;" s +stack_t r_bash/src/lib.rs /^pub struct stack_t {$/;" s +stack_t r_glob/src/lib.rs /^pub struct stack_t {$/;" s +stack_t r_readline/src/lib.rs /^pub struct stack_t {$/;" s +stamp-h Makefile.in /^stamp-h: config.status $(srcdir)\/config.h.in $(srcdir)\/config-top.h $(srcdir)\/config-bot.h$/;" t +stampede_once vendor/once_cell/src/imp_std.rs /^ fn stampede_once() {$/;" f module:tests +standalone vendor/async-trait/tests/test.rs /^ async fn standalone(_: Flagger<'_>, flag: &AtomicBool) {$/;" f module:drop_order +standardchar support/man2html.c /^static STRDEF standardchar[] = {$/;" v typeref:typename:STRDEF[] file: +standardint support/man2html.c /^static INTDEF standardint[] = {$/;" v typeref:typename:INTDEF[] file: +standardstring support/man2html.c /^static STRDEF standardstring[] = {$/;" v typeref:typename:STRDEF[] file: +start lib/intl/plural.y /^start: exp$/;" l +start lib/readline/readline.h /^ int start, end; \/* Where the change took place. *\/$/;" m struct:undo_list typeref:typename:int +start lib/readline/rlprivate.h /^ int start, end; \/* rl_point, rl_end *\/$/;" m struct:__rl_vimotion_context typeref:typename:int +start r_readline/src/lib.rs /^ pub start: ::std::os::raw::c_int,$/;" m struct:__rl_vimotion_context +start r_readline/src/lib.rs /^ pub start: ::std::os::raw::c_int,$/;" m struct:undo_list +start vendor/futures-util/src/io/window.rs /^ pub fn start(&self) -> usize {$/;" P implementation:Window +start vendor/futures/tests/sink.rs /^ fn start(&self) {$/;" P implementation:Allow +start vendor/proc-macro2/src/fallback.rs /^ pub fn start(&self) -> LineColumn {$/;" P implementation:Span +start vendor/proc-macro2/src/lib.rs /^ pub fn start(&self) -> LineColumn {$/;" P implementation:Span +start vendor/proc-macro2/src/wrapper.rs /^ pub fn start(&self) -> LineColumn {$/;" P implementation:Span +start vendor/smallvec/src/lib.rs /^ start: *mut T,$/;" m struct:SmallVec::insert_many::DropOnPanic +start_debugger shell.c /^start_debugger ()$/;" f typeref:typename:void file: +start_job builtins_rust/fg_bg/src/lib.rs /^ fn start_job(job: i32, foreground: i32) -> i32;$/;" f +start_job jobs.c /^start_job (job, foreground)$/;" f +start_job r_bash/src/lib.rs /^ pub fn start_job($/;" f +start_job r_jobs/src/lib.rs /^pub unsafe extern "C" fn start_job(mut job: c_int, mut foreground: c_int) -> c_int $/;" f +start_len vendor/futures-util/src/io/read_to_end.rs /^ start_len: usize,$/;" m struct:ReadToEnd +start_len vendor/futures-util/src/io/read_to_string.rs /^ start_len: usize,$/;" m struct:ReadToString +start_pipeline jobs.c /^start_pipeline ()$/;" f typeref:typename:void +start_pipeline nojobs.c /^start_pipeline ()$/;" f typeref:typename:void +start_pipeline r_bash/src/lib.rs /^ pub fn start_pipeline();$/;" f +start_pipeline r_jobs/src/lib.rs /^pub unsafe extern "C" fn start_pipeline ()$/;" f +start_poll vendor/futures-executor/src/unpark_mutex.rs /^ pub(crate) unsafe fn start_poll(&self) {$/;" P implementation:UnparkMutex +start_polling vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn start_polling($/;" P implementation:SharedPollState +start_send vendor/futures-channel/src/mpsc/mod.rs /^ pub fn start_send(&mut self, msg: T) -> Result<(), SendError> {$/;" P implementation:Sender +start_send vendor/futures-channel/src/mpsc/mod.rs /^ pub fn start_send(&mut self, msg: T) -> Result<(), SendError> {$/;" P implementation:UnboundedSender +start_send vendor/futures-channel/src/mpsc/sink_impl.rs /^ fn start_send(mut self: Pin<&mut Self>, msg: T) -> Result<(), Self::Error> {$/;" P implementation:Sender +start_send vendor/futures-channel/src/mpsc/sink_impl.rs /^ fn start_send(mut self: Pin<&mut Self>, msg: T) -> Result<(), Self::Error> {$/;" P implementation:UnboundedSender +start_send vendor/futures-channel/src/mpsc/sink_impl.rs /^ fn start_send(self: Pin<&mut Self>, msg: T) -> Result<(), Self::Error> {$/;" P implementation:UnboundedSender +start_send vendor/futures-sink/src/lib.rs /^ fn start_send(mut self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error> {$/;" P implementation:if_alloc::Box +start_send vendor/futures-sink/src/lib.rs /^ fn start_send(self: Pin<&mut Self>, item: T) -> Result<(), Self::Error> {$/;" P implementation:if_alloc::Vec +start_send vendor/futures-sink/src/lib.rs /^ fn start_send(self: Pin<&mut Self>, item: T) -> Result<(), Self::Error> {$/;" P implementation:if_alloc::VecDeque +start_send vendor/futures-sink/src/lib.rs /^ fn start_send(mut self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error> {$/;" P implementation:S +start_send vendor/futures-sink/src/lib.rs /^ fn start_send(self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error> {$/;" f +start_send vendor/futures-sink/src/lib.rs /^ fn start_send(self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error>;$/;" P interface:Sink +start_send vendor/futures-util/src/compat/compat01as03.rs /^ fn start_send(mut self: Pin<&mut Self>, item: SinkItem) -> Result<(), Self::Error> {$/;" f +start_send vendor/futures-util/src/compat/compat03as01.rs /^ fn start_send(&mut self, item: Self::SinkItem) -> StartSend01, item: Item) -> Result<(), Self::Error> {$/;" f +start_send vendor/futures-util/src/future/future/flatten.rs /^ fn start_send(self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error> {$/;" f +start_send vendor/futures-util/src/future/try_future/try_flatten.rs /^ fn start_send(self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error> {$/;" f +start_send vendor/futures-util/src/io/into_sink.rs /^ fn start_send(self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error> {$/;" P implementation:IntoSink +start_send vendor/futures-util/src/sink/buffer.rs /^ fn start_send(self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error> {$/;" P implementation:Buffer +start_send vendor/futures-util/src/sink/drain.rs /^ fn start_send(self: Pin<&mut Self>, _item: T) -> Result<(), Self::Error> {$/;" P implementation:Drain +start_send vendor/futures-util/src/sink/fanout.rs /^ fn start_send(self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error> {$/;" f +start_send vendor/futures-util/src/sink/map_err.rs /^ fn start_send(mut self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error> {$/;" f +start_send vendor/futures-util/src/sink/unfold.rs /^ fn start_send(self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error> {$/;" f +start_send vendor/futures-util/src/sink/with.rs /^ fn start_send(self: Pin<&mut Self>, item: U) -> Result<(), Self::Error> {$/;" f +start_send vendor/futures-util/src/sink/with_flat_map.rs /^ fn start_send(self: Pin<&mut Self>, item: U) -> Result<(), Self::Error> {$/;" f +start_send vendor/futures-util/src/stream/stream/split.rs /^ fn start_send(mut self: Pin<&mut Self>, item: Item) -> Result<(), S::Error> {$/;" P implementation:SplitSink +start_send vendor/futures/tests/auto_traits.rs /^ fn start_send(self: Pin<&mut Self>, _: T) -> Result<(), Self::Error> {$/;" P implementation:PinnedSink +start_send vendor/futures/tests/future_try_flatten_stream.rs /^ fn start_send(self: Pin<&mut Self>, _: Item) -> Result<(), Self::Error> {$/;" P implementation:assert_impls::StreamSink +start_send vendor/futures/tests/sink.rs /^ fn start_send(mut self: Pin<&mut Self>, item: Option) -> Result<(), Self::Error> {$/;" P implementation:ManualFlush +start_send vendor/futures/tests/sink.rs /^ fn start_send(mut self: Pin<&mut Self>, item: T) -> Result<(), Self::Error> {$/;" P implementation:ManualAllow +start_send vendor/futures/tests/stream_split.rs /^ fn start_send(self: Pin<&mut Self>, item: Item) -> Result<(), Self::Error> {$/;" P implementation:test_split::Join +start_send_unpin vendor/futures-util/src/sink/mod.rs /^ fn start_send_unpin(&mut self, item: Item) -> Result<(), Self::Error>$/;" P interface:SinkExt +start_span vendor/syn/src/error.rs /^ start_span: ThreadBound,$/;" m struct:ErrorMessage +start_waking vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn start_waking($/;" P implementation:SharedPollState +start_waking vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn start_waking(&self) -> Option<(u8, PollStateBomb<'_, impl FnOnce(&SharedPollState) -> u8>/;" P implementation:InnerWaker +starts_with vendor/proc-macro2/src/parse.rs /^ pub fn starts_with(&self, s: &str) -> bool {$/;" P implementation:Cursor +startup_state r_bash/src/lib.rs /^ pub static mut startup_state: ::std::os::raw::c_int;$/;" v +startup_state r_jobs/src/lib.rs /^ static mut startup_state: c_int;$/;" v +startup_state shell.c /^int startup_state = 0;$/;" v typeref:typename:int +stat r_bash/src/lib.rs /^ pub fn stat(__file: *const ::std::os::raw::c_char, __buf: *mut stat) -> ::std::os::raw::c_in/;" f +stat r_bash/src/lib.rs /^pub struct stat {$/;" s +stat r_readline/src/lib.rs /^ pub fn stat(__file: *const ::std::os::raw::c_char, __buf: *mut stat) -> ::std::os::raw::c_in/;" f +stat r_readline/src/lib.rs /^pub struct stat {$/;" s +stat vendor/libc/src/fuchsia/mod.rs /^ pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;$/;" f +stat vendor/libc/src/solid/mod.rs /^ pub fn stat(arg1: *const c_char, arg2: *mut stat) -> c_int;$/;" f +stat vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^impl ::Clone for ::stat {$/;" c +stat vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^impl ::Copy for ::stat {}$/;" c +stat vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs /^pub struct stat {$/;" s +stat vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^impl ::Clone for ::stat {$/;" c +stat vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^impl ::Copy for ::stat {}$/;" c +stat vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs /^pub struct stat {$/;" s +stat vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^impl ::Clone for ::stat {$/;" c +stat vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^impl ::Copy for ::stat {}$/;" c +stat vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs /^pub struct stat {$/;" s +stat vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^impl ::Clone for ::stat {$/;" c +stat vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^impl ::Copy for ::stat {}$/;" c +stat vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs /^pub struct stat {$/;" s +stat vendor/libc/src/unix/mod.rs /^ pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;$/;" f +stat vendor/libc/src/vxworks/mod.rs /^ pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;$/;" f +stat vendor/libc/src/wasi.rs /^ pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;$/;" f +stat vendor/libc/src/windows/mod.rs /^ pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;$/;" f +stat vendor/nix/src/sys/stat.rs /^pub fn stat(path: &P) -> Result {$/;" f +stat64 r_bash/src/lib.rs /^ pub fn stat64($/;" f +stat64 r_bash/src/lib.rs /^pub struct stat64 {$/;" s +stat64 r_readline/src/lib.rs /^ pub fn stat64($/;" f +stat64 r_readline/src/lib.rs /^pub struct stat64 {$/;" s +stat64 vendor/libc/src/unix/hermit/mod.rs /^pub type stat64 = stat;$/;" t +stat64 vendor/libc/src/unix/linux_like/linux/musl/b32/hexagon.rs /^pub type stat64 = ::stat;$/;" t +stat64 vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type stat64 = stat;$/;" t +stat64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn stat64(path: *const c_char, buf: *mut stat64) -> ::c_int;$/;" f +stat64 vendor/libc/src/vxworks/mod.rs /^pub type stat64 = ::stat;$/;" t +stat_char lib/readline/complete.c /^stat_char (char *filename)$/;" f typeref:typename:int file: +stat_mtime test.c /^stat_mtime (fn, st, ts)$/;" f file: +state builtins_rust/cd/src/lib.rs /^ state: JOB_STATE,$/;" m struct:JOB +state builtins_rust/common/src/lib.rs /^ state: JOB_STATE,$/;" m struct:JOB +state builtins_rust/exit/src/lib.rs /^ state: JOB_STATE,$/;" m struct:JOB +state builtins_rust/fc/src/lib.rs /^ state: JOB_STATE,$/;" m struct:JOB +state builtins_rust/fg_bg/src/lib.rs /^ state: JOB_STATE,$/;" m struct:JOB +state builtins_rust/jobs/src/lib.rs /^ state: JOB_STATE,$/;" m struct:JOB +state builtins_rust/kill/src/intercdep.rs /^ pub state: JOB_STATE,$/;" m struct:job +state builtins_rust/setattr/src/intercdep.rs /^ pub state: JOB_STATE,$/;" m struct:job +state builtins_rust/wait/src/lib.rs /^ state: JOB_STATE,$/;" m struct:JOB +state jobs.h /^ JOB_STATE state; \/* The state that this job is in. *\/$/;" m struct:job typeref:typename:JOB_STATE +state lib/readline/rlprivate.h /^ int state;$/;" m struct:__rl_vimotion_context typeref:typename:int +state r_bash/src/lib.rs /^ pub state: *mut i32,$/;" m struct:random_data +state r_bash/src/lib.rs /^ pub state: JOB_STATE,$/;" m struct:job +state r_glob/src/lib.rs /^ pub state: *mut i32,$/;" m struct:random_data +state r_readline/src/lib.rs /^ pub state: *mut i32,$/;" m struct:random_data +state r_readline/src/lib.rs /^ pub state: ::std::os::raw::c_int,$/;" m struct:__rl_vimotion_context +state vendor/futures-channel/src/mpsc/mod.rs /^ state: AtomicUsize,$/;" m struct:BoundedInner +state vendor/futures-channel/src/mpsc/mod.rs /^ state: AtomicUsize,$/;" m struct:UnboundedInner +state vendor/futures-core/src/task/__internal/atomic_waker.rs /^ state: AtomicUsize,$/;" m struct:AtomicWaker +state vendor/futures-executor/src/thread_pool.rs /^ state: Arc,$/;" m struct:ThreadPool +state vendor/futures-executor/tests/local_pool.rs /^ state: Rc>,$/;" m struct:tasks_are_scheduled_fairly::Spin +state vendor/futures-util/src/future/future/shared.rs /^ state: &'a AtomicUsize,$/;" m struct:poll::Reset +state vendor/futures-util/src/future/future/shared.rs /^ state: AtomicUsize,$/;" m struct:Notifier +state vendor/futures-util/src/lock/bilock.rs /^ state: AtomicUsize,$/;" m struct:Inner +state vendor/futures-util/src/lock/mutex.rs /^ state: AtomicUsize,$/;" m struct:Mutex +state vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ state: &'a SharedPollState,$/;" m struct:PollStateBomb +state vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ state: Arc,$/;" m struct:SharedPollState +state vendor/futures-util/src/stream/stream/scan.rs /^ state: S,$/;" m struct:StateFn +state vendor/memchr/src/memmem/prefilter/mod.rs /^ pub(crate) state: &'a mut PrefilterState,$/;" m struct:Pre +state vendor/once_cell/src/imp_pl.rs /^ state: &'a AtomicU8,$/;" m struct:Guard +state vendor/once_cell/src/imp_pl.rs /^ state: AtomicU8,$/;" m struct:OnceCell +state vendor/quote/src/runtime.rs /^ state: u8,$/;" m struct:push_lifetime::Lifetime +state vendor/quote/src/runtime.rs /^ state: u8,$/;" m struct:push_lifetime_spanned::Lifetime +statfs vendor/libc/src/fuchsia/mod.rs /^ pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int;$/;" f +statfs vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int;$/;" f +statfs vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int;$/;" f +statfs vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int;$/;" f +statfs vendor/libc/src/unix/linux_like/mod.rs /^ pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int;$/;" f +statfs vendor/nix/src/sys/statfs.rs /^pub fn statfs(path: &P) -> Result {$/;" f +statfs64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn statfs64(path: *const ::c_char, buf: *mut statfs64) -> ::c_int;$/;" f +statfs_call vendor/nix/src/sys/statfs.rs /^ fn statfs_call() {$/;" f module:test +statfs_call_strict vendor/nix/src/sys/statfs.rs /^ fn statfs_call_strict() {$/;" f module:test +static-link configure.ac /^AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link utshell statically, for /;" e +static_lazy vendor/once_cell/tests/it.rs /^ fn static_lazy() {$/;" f module:sync +static_lazy_via_fn vendor/once_cell/tests/it.rs /^ fn static_lazy_via_fn() {$/;" f module:sync +static_shell_builtin builtins_rust/help/src/lib.rs /^ static mut static_shell_builtin: [builtin; 100];$/;" v +static_shell_builtins builtins_rust/enable/src/lib.rs /^ static mut static_shell_builtins: [builtin; 0];$/;" v +static_shell_builtins r_bash/src/lib.rs /^ pub static mut static_shell_builtins: [builtin; 0usize];$/;" v +static_shell_name variables.c /^static char *static_shell_name = 0;$/;" v typeref:typename:char * file: +stats.o lib/malloc/Makefile.in /^stats.o: ${BUILD_DIR}\/config.h$/;" t +stats.o lib/malloc/Makefile.in /^stats.o: ${srcdir}\/imalloc.h ${srcdir}\/mstats.h$/;" t +stats.o lib/malloc/Makefile.in /^stats.o: ${topdir}\/bashintl.h ${LIBINTL_H} ${BASHINCDIR}\/gettext.h$/;" t +stats.o lib/malloc/Makefile.in /^stats.o: stats.c$/;" t +statsize jobs.c /^static int statsize;$/;" v typeref:typename:int file: +statsize r_jobs/src/lib.rs /^pub static mut statsize:c_int = 0;$/;" v +status builtins_rust/cd/src/lib.rs /^ status: libc::c_int,$/;" m struct:PROCESS +status builtins_rust/common/src/lib.rs /^ pub status: WAIT,$/;" m struct:process +status builtins_rust/fc/src/lib.rs /^ status: libc::c_int,$/;" m struct:PROCESS +status builtins_rust/fg_bg/src/lib.rs /^ status: libc::c_int,$/;" m struct:PROCESS +status builtins_rust/jobs/src/lib.rs /^ status: libc::c_int,$/;" m struct:PROCESS +status builtins_rust/kill/src/intercdep.rs /^ pub status: WAIT,$/;" m struct:process +status builtins_rust/setattr/src/intercdep.rs /^ pub status: WAIT,$/;" m struct:process +status builtins_rust/wait/src/lib.rs /^ pub status: c_short,$/;" m struct:procstat +status jobs.h /^ WAIT status; \/* The status of this command as returned by wait. *\/$/;" m struct:process typeref:typename:WAIT +status jobs.h /^ bits16_t status; \/* only 8 bits really needed *\/$/;" m struct:pidstat typeref:typename:bits16_t +status jobs.h /^ bits16_t status;$/;" m struct:procstat typeref:typename:bits16_t +status nojobs.c /^ int status; \/* Exit status of PID or 128 + fatal signal number *\/$/;" m struct:proc_status typeref:typename:int file: +status r_bash/src/lib.rs /^ pub status: ::std::os::raw::c_int,$/;" m struct:timex +status r_bash/src/lib.rs /^ pub status: ::std::os::raw::c_short,$/;" m struct:pidstat +status r_bash/src/lib.rs /^ pub status: ::std::os::raw::c_short,$/;" m struct:procstat +status r_bash/src/lib.rs /^ pub status: WAIT,$/;" m struct:process +status r_readline/src/lib.rs /^ pub status: ::std::os::raw::c_int,$/;" m struct:timex +status target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" s object:outputs.15729799797837862367 +status target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" s object:outputs.4614504638168534921 +status vendor/futures-executor/src/local_pool.rs /^ fn status(&self) -> Result<(), SpawnError> {$/;" P implementation:LocalSpawner +status vendor/futures-executor/src/unpark_mutex.rs /^ status: AtomicUsize,$/;" m struct:UnparkMutex +status vendor/futures-task/src/spawn.rs /^ fn status(&self) -> Result<(), SpawnError> {$/;" P implementation:if_alloc::Arc +status vendor/futures-task/src/spawn.rs /^ fn status(&self) -> Result<(), SpawnError> {$/;" P implementation:if_alloc::Box +status vendor/futures-task/src/spawn.rs /^ fn status(&self) -> Result<(), SpawnError> {$/;" P implementation:if_alloc::Rc +status vendor/futures-task/src/spawn.rs /^ fn status(&self) -> Result<(), SpawnError> {$/;" P implementation:Sp +status vendor/futures-task/src/spawn.rs /^ fn status(&self) -> Result<(), SpawnError> {$/;" P interface:Spawn +status vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ status: ::c_int,$/;" m struct:siginfo_t::si_status::siginfo_timer +status vendor/libc/src/unix/solarish/mod.rs /^ status: ::c_int,$/;" m struct:siginfo_cldval +status_local vendor/futures-executor/src/local_pool.rs /^ fn status_local(&self) -> Result<(), SpawnError> {$/;" P implementation:LocalSpawner +status_local vendor/futures-task/src/spawn.rs /^ fn status_local(&self) -> Result<(), SpawnError> {$/;" P implementation:if_alloc::Arc +status_local vendor/futures-task/src/spawn.rs /^ fn status_local(&self) -> Result<(), SpawnError> {$/;" P implementation:if_alloc::Box +status_local vendor/futures-task/src/spawn.rs /^ fn status_local(&self) -> Result<(), SpawnError> {$/;" P implementation:if_alloc::Rc +status_local vendor/futures-task/src/spawn.rs /^ fn status_local(&self) -> Result<(), SpawnError> {$/;" P implementation:Sp +status_local vendor/futures-task/src/spawn.rs /^ fn status_local(&self) -> Result<(), SpawnError> {$/;" P interface:LocalSpawn +status_t vendor/libc/src/unix/haiku/native.rs /^pub type status_t = i32;$/;" t +statvfs vendor/libc/src/fuchsia/mod.rs /^ pub fn statvfs(path: *const c_char, buf: *mut statvfs) -> ::c_int;$/;" f +statvfs vendor/libc/src/unix/mod.rs /^ pub fn statvfs(path: *const c_char, buf: *mut statvfs) -> ::c_int;$/;" f +statvfs vendor/nix/src/sys/statvfs.rs /^pub fn statvfs(path: &P) -> Result {$/;" f +statvfs64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn statvfs64(path: *const ::c_char, buf: *mut statvfs64) -> ::c_int;$/;" f +statvfs_call vendor/nix/src/sys/statvfs.rs /^ fn statvfs_call() {$/;" f module:test +statx r_bash/src/lib.rs /^ pub fn statx($/;" f +statx r_bash/src/lib.rs /^pub struct statx {$/;" s +statx r_readline/src/lib.rs /^ pub fn statx($/;" f +statx r_readline/src/lib.rs /^pub struct statx {$/;" s +statx vendor/libc/src/unix/linux_like/linux/gnu/mod.rs /^ pub fn statx($/;" f +statx_timestamp r_bash/src/lib.rs /^pub struct statx_timestamp {$/;" s +statx_timestamp r_readline/src/lib.rs /^pub struct statx_timestamp {$/;" s +stbcnt r_bash/src/lib.rs /^ pub stbcnt: __syscall_slong_t,$/;" m struct:timex +stbcnt r_readline/src/lib.rs /^ pub stbcnt: __syscall_slong_t,$/;" m struct:timex +std vendor/memchr/src/memmem/x86/avx.rs /^mod std {$/;" n +stdcat lib/readline/examples/rlcat.c /^stdcat (argc, argv)$/;" f +stderr r_bash/src/lib.rs /^ pub static mut stderr: *mut FILE;$/;" v +stderr r_jobs/src/lib.rs /^ static mut stderr: *mut libc::FILE;$/;" v +stderr r_print_cmd/src/lib.rs /^ static mut stderr: *mut FILE;$/;" v +stderr r_readline/src/lib.rs /^ pub static mut stderr: *mut FILE;$/;" v +stderr target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" s object:outputs.15729799797837862367 +stderr target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" s object:outputs.4614504638168534921 +stdin builtins_rust/set/src/lib.rs /^ static mut stdin: libc::FILE;$/;" v +stdin r_bash/src/lib.rs /^ pub static mut stdin: *mut FILE;$/;" v +stdin r_readline/src/lib.rs /^ pub static mut stdin: *mut FILE;$/;" v +stdin_redir execute_cmd.c /^int stdin_redir;$/;" v typeref:typename:int +stdin_redir r_bash/src/lib.rs /^ pub static mut stdin_redir: ::std::os::raw::c_int;$/;" v +stdin_redirection redir.c /^stdin_redirection (ri, redirector)$/;" f file: +stdin_redirects r_bash/src/lib.rs /^ pub fn stdin_redirects(arg1: *mut REDIRECT) -> ::std::os::raw::c_int;$/;" f +stdin_redirects redir.c /^stdin_redirects (redirs)$/;" f +stdout builtins_rust/bind/src/lib.rs /^ static stdout: *mut File;$/;" v +stdout builtins_rust/common/src/lib.rs /^ static stdout: *mut FILE;$/;" v +stdout builtins_rust/echo/src/lib.rs /^ static stdout: *mut FILE;$/;" v +stdout builtins_rust/printf/src/intercdep.rs /^ pub static stdout: *mut libc::FILE;$/;" v +stdout builtins_rust/times/src/intercdep.rs /^ pub static stdout: *mut libc::FILE;$/;" v +stdout r_bash/src/lib.rs /^ pub static mut stdout: *mut FILE;$/;" v +stdout r_jobs/src/lib.rs /^ static mut stdout: *mut libc::FILE;$/;" v +stdout r_print_cmd/src/lib.rs /^ static mut stdout: *mut FILE;$/;" v +stdout r_readline/src/lib.rs /^ pub static mut stdout: *mut FILE;$/;" v +stdout target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" s object:outputs.15729799797837862367 +stdout target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" s object:outputs.4614504638168534921 +step builtins_rust/cd/src/lib.rs /^ step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/command/src/lib.rs /^ pub step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/common/src/lib.rs /^ step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/complete/src/lib.rs /^ step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/declare/src/lib.rs /^ step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/fc/src/lib.rs /^ step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/fg_bg/src/lib.rs /^ step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/getopts/src/lib.rs /^ step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/jobs/src/lib.rs /^ step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/kill/src/intercdep.rs /^ pub step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/pushd/src/lib.rs /^ step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/setattr/src/intercdep.rs /^ pub step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/source/src/lib.rs /^ step: *mut WordList,$/;" m struct:arith_for_com +step builtins_rust/type/src/lib.rs /^ step: *mut WordList,$/;" m struct:arith_for_com +step command.h /^ WORD_LIST *step;$/;" m struct:arith_for_com typeref:typename:WORD_LIST * +step r_bash/src/lib.rs /^ pub step: *mut WORD_LIST,$/;" m struct:arith_for_com +step r_glob/src/lib.rs /^ pub step: *mut WORD_LIST,$/;" m struct:arith_for_com +step r_readline/src/lib.rs /^ pub step: *mut WORD_LIST,$/;" m struct:arith_for_com +step vendor/nix/src/sys/ptrace/bsd.rs /^pub fn step>>(pid: Pid, sig: T) -> Result<()> {$/;" f +step vendor/nix/src/sys/ptrace/linux.rs /^pub fn step>>(pid: Pid, sig: T) -> Result<()> {$/;" f +step vendor/syn/src/parse.rs /^ pub fn step(&self, function: F) -> Result$/;" P implementation:ParseBuffer +stifle_history lib/readline/history.c /^stifle_history (int max)$/;" f typeref:typename:void +stifle_history r_readline/src/lib.rs /^ pub fn stifle_history(arg1: ::std::os::raw::c_int);$/;" f +still_dd support/man2html.c /^static int still_dd = 0;$/;" v typeref:typename:int file: +stime r_bash/src/lib.rs /^ pub fn stime(__when: *const time_t) -> ::std::os::raw::c_int;$/;" f +stime r_readline/src/lib.rs /^ pub fn stime(__when: *const time_t) -> ::std::os::raw::c_int;$/;" f +stime vendor/libc/src/unix/solarish/mod.rs /^ stime: ::clock_t,$/;" m struct:siginfo_cldval +stk_stat lib/malloc/alloca.c /^struct stk_stat$/;" s file: +stk_trailer lib/malloc/alloca.c /^struct stk_trailer$/;" s file: +stkm_free lib/malloc/alloca.c /^ long stkm_free; \/* Number of deallocations by $STKMRET. *\/$/;" m struct:stk_stat typeref:typename:long file: +stko_free lib/malloc/alloca.c /^ long stko_free; \/* Number of deallocations by $STKRETN. *\/$/;" m struct:stk_stat typeref:typename:long file: +stko_mallocs lib/malloc/alloca.c /^ long stko_mallocs; \/* Block allocations by $STKOFEN. *\/$/;" m struct:stk_stat typeref:typename:long file: +stmt vendor/syn/src/lib.rs /^mod stmt;$/;" n +stmt_expr vendor/syn/src/stmt.rs /^ fn stmt_expr($/;" f module:parsing +stmt_local vendor/syn/src/stmt.rs /^ fn stmt_local(input: ParseStream, attrs: Vec, begin: ParseBuffer) -> Result/;" f module:parsing +stmt_mac vendor/syn/src/stmt.rs /^ fn stmt_mac(input: ParseStream, attrs: Vec, path: Path) -> Result {$/;" f module:parsing +stop_additional vendor/nix/src/sys/wait.rs /^fn stop_additional(status: i32) -> c_int {$/;" f +stop_making_children jobs.c /^stop_making_children ()$/;" f typeref:typename:void +stop_making_children nojobs.c /^stop_making_children ()$/;" f typeref:typename:void +stop_making_children r_bash/src/lib.rs /^ pub fn stop_making_children();$/;" f +stop_making_children r_jobs/src/lib.rs /^pub unsafe extern "C" fn stop_making_children()$/;" f +stop_pipeline jobs.c /^stop_pipeline (async, deferred)$/;" f +stop_pipeline nojobs.c /^stop_pipeline (async, ignore)$/;" f +stop_pipeline r_bash/src/lib.rs /^ pub fn stop_pipeline(arg1: ::std::os::raw::c_int, arg2: *mut COMMAND) -> ::std::os::raw::c_i/;" f +stop_pipeline r_jobs/src/lib.rs /^pub unsafe extern "C" fn stop_pipeline(mut async_0:c_int, mut deferred:*mut COMMAND) -> c_int$/;" f +stop_polling vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn stop_polling(&self, to_poll: u8, will_be_woken: bool) -> u8 {$/;" P implementation:SharedPollState +stop_signal vendor/nix/src/sys/wait.rs /^fn stop_signal(status: i32) -> Result {$/;" f +stop_waking vendor/futures-util/src/stream/stream/flatten_unordered.rs /^ fn stop_waking(&self, waking: u8) -> u8 {$/;" P implementation:SharedPollState +stopped vendor/nix/src/sys/wait.rs /^fn stopped(status: i32) -> bool {$/;" f +storage jobs.h /^ struct pidstat *storage; \/* storage arena *\/$/;" m struct:bgpids typeref:struct:pidstat * +storage r_bash/src/lib.rs /^ pub storage: *mut pidstat,$/;" m struct:bgpids +storage r_bash/src/lib.rs /^ storage: Storage,$/;" m struct:__BindgenBitfieldUnit +storage r_readline/src/lib.rs /^ storage: Storage,$/;" m struct:__BindgenBitfieldUnit +stpcpy lib/intl/dcigettext.c /^# define stpcpy /;" d file: +stpcpy lib/intl/dcigettext.c /^stpcpy (dest, src)$/;" f file: +stpcpy lib/intl/l10nflist.c /^# define stpcpy(/;" d file: +stpcpy lib/intl/l10nflist.c /^stpcpy (dest, src)$/;" f file: +stpcpy r_bash/src/lib.rs /^ pub fn stpcpy($/;" f +stpcpy r_glob/src/lib.rs /^ pub fn stpcpy($/;" f +stpcpy r_readline/src/lib.rs /^ pub fn stpcpy($/;" f +stpcpy vendor/libc/src/solid/mod.rs /^ pub fn stpcpy(arg1: *mut c_char, arg2: *const c_char) -> *mut c_char;$/;" f +stpcpy vendor/libc/src/unix/mod.rs /^ pub fn stpcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;$/;" f +stpncpy r_bash/src/lib.rs /^ pub fn stpncpy($/;" f +stpncpy r_glob/src/lib.rs /^ pub fn stpncpy($/;" f +stpncpy r_readline/src/lib.rs /^ pub fn stpncpy($/;" f +stpncpy vendor/libc/src/solid/mod.rs /^ pub fn stpncpy(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> *mut c_char;$/;" f +str lib/intl/hash-string.h /^ const char *str = str_param;$/;" v typeref:typename:const char * +str vendor/async-trait/tests/test.rs /^ const ASSOCIATED1: &'static str = "1";$/;" v implementation:issue92::Struct +str vendor/async-trait/tests/test.rs /^ const ASSOCIATED2: &'static str = "2";$/;" v implementation:issue92::Unit +str vendor/async-trait/tests/test.rs /^ const ASSOCIATED2: &'static str = "2";$/;" v module:issue92 +str vendor/async-trait/tests/test.rs /^ const ASSOCIATED2: &'static str;$/;" v interface:issue92::Trait +str vendor/async-trait/tests/test.rs /^ const ASSOCIATED: &'static str;$/;" v interface:issue73::Example +str vendor/async-trait/tests/test.rs /^ impl<'a> Trait1<'a> for str {$/;" c module:issue28 +str vendor/async-trait/tests/ui/unsupported-self.rs /^impl Trait for &'static str {$/;" c +str vendor/fluent-bundle/src/types/plural.rs /^ type Error = &'static str;$/;" v implementation:PluralRules +str vendor/fluent-syntax/src/parser/slice.rs /^impl<'s> Slice<'s> for &'s str {$/;" c +str vendor/intl-memoizer/src/lib.rs /^ type Error = &'static str;$/;" v implementation:tests::PluralRules +str vendor/intl_pluralrules/src/operands.rs /^ type Error = &'static str;$/;" v implementation:PluralOperands +str vendor/libloading/tests/functions.rs /^const LIBPATH: &'static str = "target\/libtest_helpers.module";$/;" v +str vendor/memchr/build.rs /^ const NO_ARCH: &'static [&'static str] = &["wasm32", "windows"];$/;" v function:enable_libc +str vendor/memchr/build.rs /^ const NO_ENV: &'static [&'static str] = &["sgx"];$/;" v function:enable_libc +str vendor/memchr/src/memmem/mod.rs /^ (&'static str, &'static str, Option, Option);$/;" v module:testsimples +str vendor/nix/src/lib.rs /^impl NixPath for str {$/;" c +str vendor/once_cell/examples/lazy_static.rs /^ static INSTANCE: OnceCell> = OnceCell::new();$/;" v function:hashmap +str vendor/once_cell/examples/lazy_static.rs /^static HASHMAP: Lazy> = Lazy::new(|| {$/;" v +str vendor/quote/src/to_tokens.rs /^impl ToTokens for str {$/;" c +str vendor/stdext/src/lib.rs /^pub mod str;$/;" n +str vendor/stdext/src/str.rs /^impl StrExt for &str {$/;" c +str vendor/syn/src/export.rs /^pub type str = help::Str;$/;" t +str vendor/syn/tests/macros/mod.rs /^impl<'a> Tokens for &'a str {$/;" c +str vendor/thiserror/tests/ui/union.rs /^ msg: &'static str,$/;" v +str vendor/tinystr/benches/tinystr.rs /^impl ExtIsAsciiAlphanumeric for str {$/;" c +str vendor/tinystr/benches/tinystr.rs /^impl ExtToAsciiTitlecase for str {$/;" c +str vendor/unic-langid-impl/src/subtags/region.rs /^impl<'l> From<&'l Region> for &'l str {$/;" c +str vendor/unic-langid-impl/src/subtags/script.rs /^impl<'l> From<&'l Script> for &'l str {$/;" c +str vendor/unicode-ident/tests/trie/trie.rs /^pub const BY_NAME: &'static [(&'static str, &'static ::ucd_trie::TrieSet)] = &[$/;" v +str vendor/winapi/build.rs /^const DATA: &'static [(&'static str, &'static [&'static str], &'static [&'static str])] = &[$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_3DES_112_ALGORITHM: &'static str = "3DES_112";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_3DES_ALGORITHM: &'static str = "3DES";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_AES_ALGORITHM: &'static str = "AES";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_AES_CMAC_ALGORITHM: &'static str = "AES-CMAC";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_AES_GMAC_ALGORITHM: &'static str = "AES-GMAC";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_AES_WRAP_KEY_BLOB: &'static str = "Rfc3565KeyWrapBlob";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ALGORITHM_NAME: &'static str = "AlgorithmName";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_AUTH_TAG_LENGTH: &'static str = "AuthTagLength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_BLOCK_LENGTH: &'static str = "BlockLength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_BLOCK_SIZE_LIST: &'static str = "BlockSizeList";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_CAPI_KDF_ALGORITHM: &'static str = "CAPI_KDF";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_CHAINING_MODE: &'static str = "ChainingMode";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_CHAIN_MODE_CBC: &'static str = "ChainingModeCBC";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_CHAIN_MODE_CCM: &'static str = "ChainingModeCCM";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_CHAIN_MODE_CFB: &'static str = "ChainingModeCFB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_CHAIN_MODE_ECB: &'static str = "ChainingModeECB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_CHAIN_MODE_GCM: &'static str = "ChainingModeGCM";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_CHAIN_MODE_NA: &'static str = "ChainingModeN\/A";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_DESX_ALGORITHM: &'static str = "DESX";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_DES_ALGORITHM: &'static str = "DES";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_DH_ALGORITHM: &'static str = "DH";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_DH_PARAMETERS: &'static str = "DHParameters";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_DH_PRIVATE_BLOB: &'static str = "DHPRIVATEBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_DH_PUBLIC_BLOB: &'static str = "DHPUBLICBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_DSA_ALGORITHM: &'static str = "DSA";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_DSA_PARAMETERS: &'static str = "DSAParameters";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_DSA_PRIVATE_BLOB: &'static str = "DSAPRIVATEBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_DSA_PUBLIC_BLOB: &'static str = "DSAPUBLICBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECCFULLPRIVATE_BLOB: &'static str = "ECCFULLPRIVATEBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECCFULLPUBLIC_BLOB: &'static str = "ECCFULLPUBLICBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECCPRIVATE_BLOB: &'static str = "ECCPRIVATEBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECCPUBLIC_BLOB: &'static str = "ECCPUBLICBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_25519: &'static str = "curve25519";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP160R1: &'static str = "brainpoolP160r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP160T1: &'static str = "brainpoolP160t1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP192R1: &'static str = "brainpoolP192r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP192T1: &'static str = "brainpoolP192t1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP224R1: &'static str = "brainpoolP224r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP224T1: &'static str = "brainpoolP224t1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP256R1: &'static str = "brainpoolP256r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP256T1: &'static str = "brainpoolP256t1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP320R1: &'static str = "brainpoolP320r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP320T1: &'static str = "brainpoolP320t1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP384R1: &'static str = "brainpoolP384r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP384T1: &'static str = "brainpoolP384t1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP512R1: &'static str = "brainpoolP512r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_BRAINPOOLP512T1: &'static str = "brainpoolP512t1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_EC192WAPI: &'static str = "ec192wapi";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_NAME: &'static str = "ECCCurveName";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_NAME_LIST: &'static str = "ECCCurveNameList";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_NISTP192: &'static str = "nistP192";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_NISTP224: &'static str = "nistP224";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_NISTP256: &'static str = "nistP256";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_NISTP384: &'static str = "nistP384";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_NISTP521: &'static str = "nistP521";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_NUMSP256T1: &'static str = "numsP256t1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_NUMSP384T1: &'static str = "numsP384t1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_NUMSP512T1: &'static str = "numsP512t1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_SECP160K1: &'static str = "secP160k1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_SECP160R1: &'static str = "secP160r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_SECP160R2: &'static str = "secP160r2";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_SECP192K1: &'static str = "secP192k1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_SECP192R1: &'static str = "secP192r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_SECP224K1: &'static str = "secP224k1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_SECP224R1: &'static str = "secP224r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_SECP256K1: &'static str = "secP256k1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_SECP256R1: &'static str = "secP256r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_SECP384R1: &'static str = "secP384r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_SECP521R1: &'static str = "secP521r1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_WTLS12: &'static str = "wtls12";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_WTLS7: &'static str = "wtls7";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_WTLS9: &'static str = "wtls9";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_X962P192V1: &'static str = "x962P192v1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_X962P192V2: &'static str = "x962P192v2";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_X962P192V3: &'static str = "x962P192v3";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_X962P239V1: &'static str = "x962P239v1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_X962P239V2: &'static str = "x962P239v2";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_X962P239V3: &'static str = "x962P239v3";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_CURVE_X962P256V1: &'static str = "x962P256v1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECC_PARAMETERS: &'static str = "ECCParameters";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECDH_ALGORITHM: &'static str = "ECDH";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECDH_P256_ALGORITHM: &'static str = "ECDH_P256";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECDH_P384_ALGORITHM: &'static str = "ECDH_P384";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECDH_P521_ALGORITHM: &'static str = "ECDH_P521";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECDSA_ALGORITHM: &'static str = "ECDSA";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECDSA_P256_ALGORITHM: &'static str = "ECDSA_P256";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECDSA_P384_ALGORITHM: &'static str = "ECDSA_P384";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_ECDSA_P521_ALGORITHM: &'static str = "ECDSA_P521";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_EFFECTIVE_KEY_LENGTH: &'static str = "EffectiveKeyLength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_GLOBAL_PARAMETERS: &'static str = "SecretAgreementParam";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_HASH_BLOCK_LENGTH: &'static str = "HashBlockLength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_HASH_LENGTH: &'static str = "HashDigestLength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_HASH_OID_LIST: &'static str = "HashOIDList";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_INITIALIZATION_VECTOR: &'static str = "IV";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_IS_KEYED_HASH: &'static str = "IsKeyedHash";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_IS_REUSABLE_HASH: &'static str = "IsReusableHash";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_KDF_HASH: &'static str = "HASH";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_KDF_HMAC: &'static str = "HMAC";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_KDF_RAW_SECRET: &'static str = "TRUNCATE";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_KDF_SP80056A_CONCAT: &'static str = "SP800_56A_CONCAT";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_KDF_TLS_PRF: &'static str = "TLS_PRF";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_KEY_DATA_BLOB: &'static str = "KeyDataBlob";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_KEY_LENGTH: &'static str = "KeyLength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_KEY_LENGTHS: &'static str = "KeyLengths";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_KEY_OBJECT_LENGTH: &'static str = "KeyObjectLength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_KEY_STRENGTH: &'static str = "KeyStrength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_MD2_ALGORITHM: &'static str = "MD2";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_MD4_ALGORITHM: &'static str = "MD4";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_MD5_ALGORITHM: &'static str = "MD5";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_MESSAGE_BLOCK_LENGTH: &'static str = "MessageBlockLength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_MULTI_OBJECT_LENGTH: &'static str = "MultiObjectLength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_OBJECT_LENGTH: &'static str = "ObjectLength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_OPAQUE_KEY_BLOB: &'static str = "OpaqueKeyBlob";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_PADDING_SCHEMES: &'static str = "PaddingSchemes";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_PBKDF2_ALGORITHM: &'static str = "PBKDF2";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_PCP_PLATFORM_TYPE_PROPERTY: &'static str = "PCP_PLATFORM_TYPE";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_PCP_PROVIDER_VERSION_PROPERTY: &'static str = "PCP_PROVIDER_VERSION";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_PRIMITIVE_TYPE: &'static str = "PrimitiveType";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_PRIVATE_KEY: &'static str = "PrivKeyVal";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_PRIVATE_KEY_BLOB: &'static str = "PRIVATEBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_PROVIDER_HANDLE: &'static str = "ProviderHandle";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_PUBLIC_KEY_BLOB: &'static str = "PUBLICBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_PUBLIC_KEY_LENGTH: &'static str = "PublicKeyLength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_RC2_ALGORITHM: &'static str = "RC2";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_RC4_ALGORITHM: &'static str = "RC4";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_RNG_ALGORITHM: &'static str = "RNG";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_RNG_DUAL_EC_ALGORITHM: &'static str = "DUALECRNG";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_RNG_FIPS186_DSA_ALGORITHM: &'static str = "FIPS186DSARNG";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_RSAFULLPRIVATE_BLOB: &'static str = "RSAFULLPRIVATEBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_RSAPRIVATE_BLOB: &'static str = "RSAPRIVATEBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_RSAPUBLIC_BLOB: &'static str = "RSAPUBLICBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_RSA_ALGORITHM: &'static str = "RSA";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_RSA_SIGN_ALGORITHM: &'static str = "RSA_SIGN";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_SHA1_ALGORITHM: &'static str = "SHA1";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_SHA256_ALGORITHM: &'static str = "SHA256";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_SHA384_ALGORITHM: &'static str = "SHA384";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_SHA512_ALGORITHM: &'static str = "SHA512";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_SIGNATURE_LENGTH: &'static str = "SignatureLength";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_SP800108_CTR_HMAC_ALGORITHM: &'static str = "SP800_108_CTR_HMAC";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_SP80056A_CONCAT_ALGORITHM: &'static str = "SP800_56A_CONCAT";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_TLS1_1_KDF_ALGORITHM: &'static str = "TLS1_1_KDF";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_TLS1_2_KDF_ALGORITHM: &'static str = "TLS1_2_KDF";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const BCRYPT_XTS_AES_ALGORITHM: &'static str = "XTS-AES";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const CRYPT_DEFAULT_CONTEXT: &'static str = "Default";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const LEGACY_DH_PRIVATE_BLOB: &'static str = "CAPIDHPRIVATEBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const LEGACY_DH_PUBLIC_BLOB: &'static str = "CAPIDHPUBLICBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const LEGACY_DSA_PRIVATE_BLOB: &'static str = "CAPIDSAPRIVATEBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const LEGACY_DSA_PUBLIC_BLOB: &'static str = "CAPIDSAPUBLICBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const LEGACY_DSA_V2_PRIVATE_BLOB: &'static str = "V2CAPIDSAPRIVATEBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const LEGACY_DSA_V2_PUBLIC_BLOB: &'static str = "V2CAPIDSAPUBLICBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const LEGACY_RSAPRIVATE_BLOB: &'static str = "CAPIPRIVATEBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const LEGACY_RSAPUBLIC_BLOB: &'static str = "CAPIPUBLICBLOB";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const MS_PLATFORM_CRYPTO_PROVIDER: &'static str = "Microsoft Platform Crypto Provider";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const MS_PRIMITIVE_PROVIDER: &'static str = "Microsoft Primitive Provider";$/;" v +str vendor/winapi/src/shared/bcrypt.rs /^pub const SSL_ECCPUBLIC_BLOB: &'static str = "SSLECCPUBLICBLOB";$/;" v +str vendor/winapi/src/shared/bthdef.rs /^pub const STR_ADDR_FMTA: &'static str = "(%02x:%02x:%02x:%02x:%02x:%02x)\\0";$/;" v +str vendor/winapi/src/shared/bthdef.rs /^pub const STR_ADDR_SHORT_FMTA: &'static str = "%04x%08x\\0";$/;" v +str vendor/winapi/src/shared/bthdef.rs /^pub const STR_USBHCI_CLASS_HARDWAREIDA: &'static str = "USB\\\\Class_E0&SubClass_01&Prot_01\\0";$/;" v +str vendor/winapi/src/shared/evntrace.rs /^pub const DIAG_LOGGER_NAME: &'static str = "DiagLog";$/;" v +str vendor/winapi/src/shared/evntrace.rs /^pub const EVENT_LOGGER_NAME: &'static str = "EventLog";$/;" v +str vendor/winapi/src/shared/evntrace.rs /^pub const GLOBAL_LOGGER_NAME: &'static str = "GlobalLogger";$/;" v +str vendor/winapi/src/shared/evntrace.rs /^pub const KERNEL_LOGGER_NAME: &'static str = "NT Kernel Logger";$/;" v +str vendor/winapi/src/shared/ktmtypes.rs /^pub const TRANSACTIONMANAGER_OBJECT_PATH: &'static str = "\\\\TransactionManager\\\\";$/;" v +str vendor/winapi/src/shared/ntddscsi.rs /^pub const DD_SCSI_DEVICE_NAME: &'static str = "\\\\Device\\\\ScsiPort";$/;" v +str vendor/winapi/src/shared/ntddscsi.rs /^pub const IOCTL_MINIPORT_SIGNATURE_DSM_GENERAL: &'static str = "MPDSMGEN";$/;" v +str vendor/winapi/src/shared/ntddscsi.rs /^pub const IOCTL_MINIPORT_SIGNATURE_DSM_NOTIFICATION: &'static str = "MPDSM ";$/;" v +str vendor/winapi/src/shared/ntddscsi.rs /^pub const IOCTL_MINIPORT_SIGNATURE_FIRMWARE: &'static str = "FIRMWARE";$/;" v +str vendor/winapi/src/shared/ntddscsi.rs /^pub const IOCTL_MINIPORT_SIGNATURE_HYBRDISK: &'static str = "HYBRDISK";$/;" v +str vendor/winapi/src/shared/ntddscsi.rs /^pub const IOCTL_MINIPORT_SIGNATURE_QUERY_PHYSICAL_TOPOLOGY: &'static str = "TOPOLOGY";$/;" v +str vendor/winapi/src/shared/ntddscsi.rs /^pub const IOCTL_MINIPORT_SIGNATURE_QUERY_PROTOCOL: &'static str = "PROTOCOL";$/;" v +str vendor/winapi/src/shared/ntddscsi.rs /^pub const IOCTL_MINIPORT_SIGNATURE_QUERY_TEMPERATURE: &'static str = "TEMPERAT";$/;" v +str vendor/winapi/src/shared/ntddscsi.rs /^pub const IOCTL_MINIPORT_SIGNATURE_SCSIDISK: &'static str = "SCSIDISK";$/;" v +str vendor/winapi/src/shared/ntddscsi.rs /^pub const IOCTL_MINIPORT_SIGNATURE_SET_TEMPERATURE_THRESHOLD: &'static str = "SETTEMPT";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACCESS_ALLOWED: &'static str = "A";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACCESS_CONTROL_ASSISTANCE_OPS: &'static str = "AA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACCESS_DENIED: &'static str = "D";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACCESS_FILTER: &'static str = "FL";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACCOUNT_OPERATORS: &'static str = "AO";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACE_BEGIN: &'static str = "(";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACE_COND_ATTRIBUTE_PREFIX: &'static str = "@";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACE_COND_BEGIN: &'static str = "(";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACE_COND_BLOB_PREFIX: &'static str = "#";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACE_COND_DEVICE_ATTRIBUTE_PREFIX: &'static str = "@DEVICE.";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACE_COND_END: &'static str = ")";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACE_COND_RESOURCE_ATTRIBUTE_PREFIX: &'static str = "@RESOURCE.";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACE_COND_SID_PREFIX: &'static str = "SID";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACE_COND_TOKEN_ATTRIBUTE_PREFIX: &'static str = "@TOKEN.";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACE_COND_USER_ATTRIBUTE_PREFIX: &'static str = "@USER.";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ACE_END: &'static str = ")";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ALARM: &'static str = "AL";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ALIAS_PREW2KCOMPACC: &'static str = "RU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ALL_APP_PACKAGES: &'static str = "AC";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ANONYMOUS: &'static str = "AN";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_AUDIT: &'static str = "AU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_AUDIT_FAILURE: &'static str = "FA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_AUDIT_SUCCESS: &'static str = "SA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_AUTHENTICATED_USERS: &'static str = "AU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_AUTHORITY_ASSERTED: &'static str = "AS";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_AUTO_INHERITED: &'static str = "AI";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_AUTO_INHERIT_REQ: &'static str = "AR";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_BACKUP_OPERATORS: &'static str = "BO";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_BLOB: &'static str = "TX";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_BOOLEAN: &'static str = "TB";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_BUILTIN_ADMINISTRATORS: &'static str = "BA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_BUILTIN_GUESTS: &'static str = "BG";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_BUILTIN_USERS: &'static str = "BU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CALLBACK_ACCESS_ALLOWED: &'static str = "XA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CALLBACK_ACCESS_DENIED: &'static str = "XD";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CALLBACK_AUDIT: &'static str = "XU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CALLBACK_OBJECT_ACCESS_ALLOWED: &'static str = "ZA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CERTSVC_DCOM_ACCESS: &'static str = "CD";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CERT_SERV_ADMINISTRATORS: &'static str = "CA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CLONEABLE_CONTROLLERS: &'static str = "CN";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CONTAINER_INHERIT: &'static str = "CI";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CONTROL_ACCESS: &'static str = "CR";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CREATE_CHILD: &'static str = "CC";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CREATOR_GROUP: &'static str = "CG";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CREATOR_OWNER: &'static str = "CO";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_CRYPTO_OPERATORS: &'static str = "CY";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_DACL: &'static str = "D";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_DELETE_CHILD: &'static str = "DC";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_DELETE_TREE: &'static str = "DT";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_DELIMINATOR: &'static str = ":";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_DOMAIN_ADMINISTRATORS: &'static str = "DA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_DOMAIN_COMPUTERS: &'static str = "DC";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_DOMAIN_DOMAIN_CONTROLLERS: &'static str = "DD";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_DOMAIN_GUESTS: &'static str = "DG";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_DOMAIN_USERS: &'static str = "DU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ENTERPRISE_ADMINS: &'static str = "EA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ENTERPRISE_DOMAIN_CONTROLLERS: &'static str = "ED";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ENTERPRISE_KEY_ADMINS: &'static str = "EK";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ENTERPRISE_RO_DCs: &'static str = "RO";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_EVENT_LOG_READERS: &'static str = "ER";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_EVERYONE: &'static str = "WD";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_FILE_ALL: &'static str = "FA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_FILE_EXECUTE: &'static str = "FX";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_FILE_READ: &'static str = "FR";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_FILE_WRITE: &'static str = "FW";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_GENERIC_ALL: &'static str = "GA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_GENERIC_EXECUTE: &'static str = "GX";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_GENERIC_READ: &'static str = "GR";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_GENERIC_WRITE: &'static str = "GW";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_GROUP: &'static str = "G";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_GROUP_POLICY_ADMINS: &'static str = "PA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_HYPER_V_ADMINS: &'static str = "HA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_IIS_USERS: &'static str = "IS";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_INHERITED: &'static str = "ID";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_INHERIT_ONLY: &'static str = "IO";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_INT: &'static str = "TI";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_INTERACTIVE: &'static str = "IU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_KEY_ADMINS: &'static str = "KA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_KEY_ALL: &'static str = "KA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_KEY_EXECUTE: &'static str = "KX";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_KEY_READ: &'static str = "KR";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_KEY_WRITE: &'static str = "KW";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_LIST_CHILDREN: &'static str = "LC";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_LIST_OBJECT: &'static str = "LO";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_LOCAL_ADMIN: &'static str = "LA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_LOCAL_GUEST: &'static str = "LG";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_LOCAL_SERVICE: &'static str = "LS";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_LOCAL_SYSTEM: &'static str = "SY";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_MANDATORY_LABEL: &'static str = "ML";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ML_HIGH: &'static str = "HI";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ML_LOW: &'static str = "LW";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ML_MEDIUM: &'static str = "ME";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ML_MEDIUM_PLUS: &'static str = "MP";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_ML_SYSTEM: &'static str = "SI";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_NETWORK: &'static str = "NU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_NETWORK_CONFIGURATION_OPS: &'static str = "NO";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_NETWORK_SERVICE: &'static str = "NS";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_NO_EXECUTE_UP: &'static str = "NX";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_NO_PROPAGATE: &'static str = "NP";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_NO_READ_UP: &'static str = "NR";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_NO_WRITE_UP: &'static str = "NW";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_NULL_ACL: &'static str = "NO_ACCESS_CONTROL";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_OBJECT_ACCESS_ALLOWED: &'static str = "OA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_OBJECT_ACCESS_DENIED: &'static str = "OD";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_OBJECT_ALARM: &'static str = "OL";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_OBJECT_AUDIT: &'static str = "OU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_OBJECT_INHERIT: &'static str = "OI";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_OWNER: &'static str = "O";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_OWNER_RIGHTS: &'static str = "OW";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_PERFLOG_USERS: &'static str = "LU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_PERFMON_USERS: &'static str = "MU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_PERSONAL_SELF: &'static str = "PS";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_POWER_USERS: &'static str = "PU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_PRINTER_OPERATORS: &'static str = "PO";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_PROCESS_TRUST_LABEL: &'static str = "TL";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_PROTECTED: &'static str = "P";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_PROTECTED_USERS: &'static str = "AP";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_RAS_SERVERS: &'static str = "RS";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_RDS_ENDPOINT_SERVERS: &'static str = "ES";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_RDS_MANAGEMENT_SERVERS: &'static str = "MS";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_RDS_REMOTE_ACCESS_SERVERS: &'static str = "RA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_READ_CONTROL: &'static str = "RC";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_READ_PROPERTY: &'static str = "RP";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_REMOTE_DESKTOP: &'static str = "RD";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_REMOTE_MANAGEMENT_USERS: &'static str = "RM";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_REPLICATOR: &'static str = "RE";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_RESOURCE_ATTRIBUTE: &'static str = "RA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_RESTRICTED_CODE: &'static str = "RC";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_SACL: &'static str = "S";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_SCHEMA_ADMINISTRATORS: &'static str = "SA";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_SCOPED_POLICY_ID: &'static str = "SP";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_SELF_WRITE: &'static str = "SW";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_SEPERATOR: &'static str = ";";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_SERVER_OPERATORS: &'static str = "SO";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_SERVICE: &'static str = "SU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_SERVICE_ASSERTED: &'static str = "SS";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_SID: &'static str = "TD";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_SPACE: &'static str = " ";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_STANDARD_DELETE: &'static str = "SD";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_TRUST_PROTECTED_FILTER: &'static str = "TP";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_UINT: &'static str = "TU";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_USER_MODE_DRIVERS: &'static str = "UD";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_WRITE_DAC: &'static str = "WD";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_WRITE_OWNER: &'static str = "WO";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_WRITE_PROPERTY: &'static str = "WP";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_WRITE_RESTRICTED_CODE: &'static str = "WR";$/;" v +str vendor/winapi/src/shared/sddl.rs /^pub const SDDL_WSTRING: &'static str = "TS";$/;" v +str vendor/winapi/src/shared/usb.rs /^pub const MS_OS_STRING_SIGNATURE: &'static str = "MSFT100";$/;" v +str vendor/winapi/src/um/accctrl.rs /^pub const ACCCTRL_DEFAULT_PROVIDER: &'static str = "Windows NT Access Provider";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const ANIMATE_CLASS: &'static str = "SysAnimate32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const DATETIMEPICK_CLASS: &'static str = "SysDateTimePick32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const DRAGLISTMSGSTRING: &'static str = "commctrl_DragListMsg";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const HOTKEY_CLASS: &'static str = "msctls_hotkey32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const MONTHCAL_CLASS: &'static str = "SysMonthCal32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const PROGRESS_CLASS: &'static str = "msctls_progress32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const REBARCLASSNAME: &'static str = "ReBarWindow32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const STATUSCLASSNAME: &'static str = "msctls_statusbar32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const TOOLBARCLASSNAME: &'static str = "ToolbarWindow32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const TOOLTIPS_CLASS: &'static str = "tooltips_class32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const TRACKBAR_CLASS: &'static str = "msctls_trackbar32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const UPDOWN_CLASS: &'static str = "msctls_updown32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_BUTTONA: &'static str = "Button";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_COMBOBOX: &'static str = "ComboBox";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_COMBOBOXEX: &'static str = "ComboBoxEx32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_EDIT: &'static str = "Edit";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_HEADER: &'static str = "SysHeader32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_IPADDRESS: &'static str = "SysIPAddress32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_LINK: &'static str = "SysLink";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_LISTBOX: &'static str = "ListBox";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_LISTVIEW: &'static str = "SysListView32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_NATIVEFONTCTL: &'static str = "NativeFontCtl";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_PAGESCROLLER: &'static str = "SysPager";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_SCROLLBAR: &'static str = "ScrollBar";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_STATIC: &'static str = "Static";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_TABCONTROL: &'static str = "SysTabControl32";$/;" v +str vendor/winapi/src/um/commctrl.rs /^pub const WC_TREEVIEW: &'static str = "SysTreeView32";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_APPNAME_STRING: &'static str = "Name";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_APPSIZE_STRING: &'static str = "Size";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_BREAKON_CATEGORY: &'static str = "BreakOn_CATEGORY_%s";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_BREAKON_ID_DECIMAL: &'static str = "BreakOn_ID_%d";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_BREAKON_ID_STRING: &'static str = "BreakOn_ID_%s";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_BREAKON_SEVERITY: &'static str = "BreakOn_SEVERITY_%s";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_ENABLE_BREAK_ON_MESSAGE: &'static str = "EnableBreakOnMessage";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_FORCE_DEBUGGABLE: &'static str = "ForceDebuggable";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_FORCE_SHADER_SKIP_OPTIMIZATION: &'static str = "ForceShaderSkipOptimization";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_INFOQUEUE_STORAGE_FILTER_OVERRIDE: &'static str = "InfoQueueStorageFilterOverrid/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_MUTE_CATEGORY: &'static str = "Mute_CATEGORY_%s";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_MUTE_DEBUG_OUTPUT: &'static str = "MuteDebugOutput";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_MUTE_ID_DECIMAL: &'static str = "Mute_ID_%d";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_MUTE_ID_STRING: &'static str = "Mute_ID_%s";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_MUTE_SEVERITY: &'static str = "Mute_SEVERITY_%s";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_REGKEY_PATH: &'static str = "Software\\\\Microsoft\\\\Direct3D";$/;" v +str vendor/winapi/src/um/d3d11sdklayers.rs /^pub const D3D11_UNMUTE_SEVERITY_INFO: &'static str = "Unmute_SEVERITY_INFO";$/;" v +str vendor/winapi/src/um/d3dcompiler.rs /^pub const D3DCOMPILER_DLL: &'static str = "d3dcompiler_47.dll";$/;" v +str vendor/winapi/src/um/dpapi.rs /^pub const szFORCE_KEY_PROTECTION: &'static str = "ForceKeyProtection";$/;" v +str vendor/winapi/src/um/eaptypes.rs /^pub const EAP_VALUENAME_PROPERTIES: &'static str = "Properties";$/;" v +str vendor/winapi/src/um/lmaccess.rs /^pub const ACCESS_LETTERS: &'static str = "RWCXDAP ";$/;" v +str vendor/winapi/src/um/lmaccess.rs /^pub const GROUP_SPECIALGRP_ADMINS: &'static str = "ADMINS";$/;" v +str vendor/winapi/src/um/lmaccess.rs /^pub const GROUP_SPECIALGRP_GUESTS: &'static str = "GUESTS";$/;" v +str vendor/winapi/src/um/lmaccess.rs /^pub const GROUP_SPECIALGRP_LOCAL: &'static str = "LOCAL";$/;" v +str vendor/winapi/src/um/lmaccess.rs /^pub const GROUP_SPECIALGRP_USERS: &'static str = "USERS";$/;" v +str vendor/winapi/src/um/lmaccess.rs /^pub const NULL_USERSETINFO_PASSWD: &'static str = " ";$/;" v +str vendor/winapi/src/um/lmaccess.rs /^pub const SERVICE_ACCOUNT_PASSWORD: &'static str = "_SA_{262E99C9-6160-4871-ACEC-4E61736B6F21}";$/;" v +str vendor/winapi/src/um/lmaccess.rs /^pub const SERVICE_ACCOUNT_SECRET_PREFIX: &'static str$/;" v +str vendor/winapi/src/um/lmalert.rs /^pub const ALERTER_MAILSLOT: &'static str = "\\\\\\\\.\\\\MAILSLOT\\\\Alerter";$/;" v +str vendor/winapi/src/um/lmalert.rs /^pub const ALERT_ADMIN_EVENT: &'static str = "ADMIN";$/;" v +str vendor/winapi/src/um/lmalert.rs /^pub const ALERT_ERRORLOG_EVENT: &'static str = "ERRORLOG";$/;" v +str vendor/winapi/src/um/lmalert.rs /^pub const ALERT_MESSAGE_EVENT: &'static str = "MESSAGE";$/;" v +str vendor/winapi/src/um/lmalert.rs /^pub const ALERT_PRINT_EVENT: &'static str = "PRINTING";$/;" v +str vendor/winapi/src/um/lmalert.rs /^pub const ALERT_USER_EVENT: &'static str = "USER";$/;" v +str vendor/winapi/src/um/lmsvc.rs /^pub const SERVICE_DOS_ENCRYPTION: &'static str = "ENCRYPT";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const LSA_ADT_LEGACY_SECURITY_SOURCE_NAME: &'static str = "Security";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const LSA_ADT_SECURITY_SOURCE_NAME: &'static str = "Microsoft-Windows-Security-Auditing";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const LSA_AP_NAME_CALL_PACKAGE: &'static str = "LsaApCallPackage";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const LSA_AP_NAME_CALL_PACKAGE_PASSTHROUGH: &'static str = "LsaApCallPackagePassthrough";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const LSA_AP_NAME_CALL_PACKAGE_UNTRUSTED: &'static str = "LsaApCallPackageUntrusted";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const LSA_AP_NAME_INITIALIZE_PACKAGE: &'static str = "LsaApInitializePackage";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const LSA_AP_NAME_LOGON_TERMINATED: &'static str = "LsaApLogonTerminated";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const LSA_AP_NAME_LOGON_USER: &'static str = "LsaApLogonUser";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const LSA_AP_NAME_LOGON_USER_EX: &'static str = "LsaApLogonUserEx";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const LSA_GLOBAL_SECRET_PREFIX: &'static str = "G$";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const LSA_LOCAL_SECRET_PREFIX: &'static str = "L$";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const LSA_MACHINE_SECRET_PREFIX: &'static str = "M$";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const SE_BATCH_LOGON_NAME: &'static str = "SeBatchLogonRight";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const SE_DENY_BATCH_LOGON_NAME: &'static str = "SeDenyBatchLogonRight";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const SE_DENY_INTERACTIVE_LOGON_NAME: &'static str = "SeDenyInteractiveLogonRight";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const SE_DENY_NETWORK_LOGON_NAME: &'static str = "SeDenyNetworkLogonRight";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const SE_DENY_REMOTE_INTERACTIVE_LOGON_NAME: &'static str =$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const SE_DENY_SERVICE_LOGON_NAME: &'static str = "SeDenyServiceLogonRight";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const SE_INTERACTIVE_LOGON_NAME: &'static str = "SeInteractiveLogonRight";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const SE_NETWORK_LOGON_NAME: &'static str = "SeNetworkLogonRight";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const SE_REMOTE_INTERACTIVE_LOGON_NAME: &'static str = "SeRemoteInteractiveLogonRight";$/;" v +str vendor/winapi/src/um/ntlsa.rs /^pub const SE_SERVICE_LOGON_NAME: &'static str = "SeServiceLogonRight";$/;" v +str vendor/winapi/src/um/perflib.rs /^pub const PERF_AGGREGATE_INSTANCE: &'static str = "_Total";$/;" v +str vendor/winapi/src/um/perflib.rs /^pub const PERF_WILDCARD_INSTANCE: &'static str = "*";$/;" v +str vendor/winapi/src/um/portabledevice.rs /^pub const PORTABLE_DEVICE_DRM_SCHEME_PDDRM: &'static str = "PDDRM";$/;" v +str vendor/winapi/src/um/portabledevice.rs /^pub const PORTABLE_DEVICE_DRM_SCHEME_WMDRM10_PD: &'static str = "WMDRM10-PD";$/;" v +str vendor/winapi/src/um/portabledevice.rs /^pub const PORTABLE_DEVICE_ICON: &'static str = "Icons";$/;" v +str vendor/winapi/src/um/portabledevice.rs /^pub const PORTABLE_DEVICE_IS_MASS_STORAGE: &'static str = "PortableDeviceIsMassStorage";$/;" v +str vendor/winapi/src/um/portabledevice.rs /^pub const PORTABLE_DEVICE_NAMESPACE_EXCLUDE_FROM_SHELL: &'static str$/;" v +str vendor/winapi/src/um/portabledevice.rs /^pub const PORTABLE_DEVICE_NAMESPACE_THUMBNAIL_CONTENT_TYPES: &'static str$/;" v +str vendor/winapi/src/um/portabledevice.rs /^pub const PORTABLE_DEVICE_NAMESPACE_TIMEOUT: &'static str = "PortableDeviceNameSpaceTimeout";$/;" v +str vendor/winapi/src/um/portabledevice.rs /^pub const PORTABLE_DEVICE_TYPE: &'static str = "PortableDeviceType";$/;" v +str vendor/winapi/src/um/portabledevice.rs /^pub const WPD_DEVICE_OBJECT_ID: &'static str = "DEVICE";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_CALENDAR: &'static str = "calendar";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_COMMUNICATION: &'static str = "communication";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_CONTACT: &'static str = "contact";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_DOCUMENT: &'static str = "document";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_EMAIL: &'static str = "email";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_FEED: &'static str = "feed";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_FOLDER: &'static str = "folder";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_GAME: &'static str = "game";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_INSTANTMESSAGE: &'static str = "instantmessage";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_JOURNAL: &'static str = "journal";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_LINK: &'static str = "link";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_MOVIE: &'static str = "movie";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_MUSIC: &'static str = "music";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_NOTE: &'static str = "note";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_PICTURE: &'static str = "picture";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_PLAYLIST: &'static str = "playlist";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_PROGRAM: &'static str = "program";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_RECORDEDTV: &'static str = "recordedtv";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_SEARCHFOLDER: &'static str = "searchfolder";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_TASK: &'static str = "task";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_UNKNOWN: &'static str = "unknown";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_VIDEO: &'static str = "video";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const KIND_WEBHISTORY: &'static str = "webhistory";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const LAYOUTPATTERN_CVMFB_ALPHA: &'static str = "alpha";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const LAYOUTPATTERN_CVMFB_BETA: &'static str = "beta";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const LAYOUTPATTERN_CVMFB_DELTA: &'static str = "delta";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const LAYOUTPATTERN_CVMFB_GAMMA: &'static str = "gamma";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const LAYOUTPATTERN_CVMFS_ALPHA: &'static str = "alpha";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const LAYOUTPATTERN_CVMFS_BETA: &'static str = "beta";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const LAYOUTPATTERN_CVMFS_DELTA: &'static str = "delta";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const LAYOUTPATTERN_CVMFS_GAMMA: &'static str = "gamma";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const SFGAOSTR_BROWSABLE: &'static str = "browsable";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const SFGAOSTR_FILEANC: &'static str = "fileanc";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const SFGAOSTR_FILESYS: &'static str = "filesys";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const SFGAOSTR_FOLDER: &'static str = "folder";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const SFGAOSTR_HIDDEN: &'static str = "hidden";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const SFGAOSTR_LINK: &'static str = "link";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const SFGAOSTR_NONENUM: &'static str = "nonenum";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const SFGAOSTR_STORAGEANC: &'static str = "storageanc";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const SFGAOSTR_STREAM: &'static str = "stream";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const SFGAOSTR_SUPERHIDDEN: &'static str = "superhidden";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const SFGAOSTR_SYSTEM: &'static str = "system";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const STORAGE_PROVIDER_SHARE_STATUS_GROUP: &'static str = "Group";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const STORAGE_PROVIDER_SHARE_STATUS_OWNER: &'static str = "Owner";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const STORAGE_PROVIDER_SHARE_STATUS_PRIVATE: &'static str = "Private";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const STORAGE_PROVIDER_SHARE_STATUS_PUBLIC: &'static str = "Public";$/;" v +str vendor/winapi/src/um/propkey.rs /^pub const STORAGE_PROVIDER_SHARE_STATUS_SHARED: &'static str = "Shared";$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPCAT_APPLEXICONS: &'static str$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPCAT_AUDIOIN: &'static str$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPCAT_AUDIOOUT: &'static str$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPCAT_PHONECONVERTERS: &'static str$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPCAT_RECOGNIZERS: &'static str$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPCAT_RECOPROFILES: &'static str$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPCAT_TEXTNORMALIZERS: &'static str$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPCAT_VOICES: &'static str = "HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPDUI_AddRemoveWord: &'static str = "AddRemoveWord";$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPDUI_AudioProperties: &'static str = "AudioProperties";$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPDUI_AudioVolume: &'static str = "AudioVolume";$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPDUI_EngineProperties: &'static str = "EngineProperties";$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPDUI_MicTraining: &'static str = "MicTraining";$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPDUI_RecoProfileProperties: &'static str = "RecoProfileProperties";$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPDUI_ShareData: &'static str = "ShareData";$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPDUI_Tutorial: &'static str = "Tutorial";$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPDUI_UserEnrollment: &'static str = "UserEnrollment";$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPDUI_UserTraining: &'static str = "UserTraining";$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPMMSYS_AUDIO_IN_TOKEN_ID: &'static str$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPREG_LOCAL_MACHINE_ROOT: &'static str$/;" v +str vendor/winapi/src/um/sapi51.rs /^pub const SPREG_USER_ROOT: &'static str = "HKEY_CURRENT_USER\\\\SOFTWARE\\\\Microsoft\\\\Speech"/;" v +str vendor/winapi/src/um/sapi53.rs /^pub const SPREG_SAFE_USER_TOKENS: &'static str$/;" v +str vendor/winapi/src/um/sapi53.rs /^pub const SPTOKENKEY_AUDIO_LATENCY_TRUNCATE: &'static str = "LatencyTruncateThreshold";$/;" v +str vendor/winapi/src/um/sapi53.rs /^pub const SPTOKENKEY_AUDIO_LATENCY_UPDATE_INTERVAL: &'static str = "LatencyUpdateInterval";$/;" v +str vendor/winapi/src/um/sapi53.rs /^pub const SPTOKENKEY_AUDIO_LATENCY_WARNING: &'static str = "LatencyWarningThreshold";$/;" v +str vendor/winapi/src/um/sapi53.rs /^pub const SPTOKENKEY_RETAINEDAUDIO: &'static str = "SecondsPerRetainedAudioEvent";$/;" v +str vendor/winapi/src/um/sapiddk.rs /^pub const SR_LOCALIZED_DESCRIPTION: &'static str = "Description";$/;" v +str vendor/winapi/src/um/sapiddk51.rs /^pub const SPALTERNATESCLSID: &'static str = "AlternatesCLSID";$/;" v +str vendor/winapi/src/um/sapiddk51.rs /^pub const SPRECOEXTENSION: &'static str = "RecoExtension";$/;" v +str vendor/winapi/src/um/schannel.rs /^pub const PCT1SP_NAME: &'static str = "Microsoft PCT 1.0";$/;" v +str vendor/winapi/src/um/schannel.rs /^pub const SCHANNEL_NAME: &'static str = "Schannel";$/;" v +str vendor/winapi/src/um/schannel.rs /^pub const SSL2SP_NAME: &'static str = "Microsoft SSL 2.0";$/;" v +str vendor/winapi/src/um/schannel.rs /^pub const SSL3SP_NAME: &'static str = "Microsoft SSL 3.0";$/;" v +str vendor/winapi/src/um/schannel.rs /^pub const SSL_CRACK_CERTIFICATE_NAME: &'static str = "SslCrackCertificate";$/;" v +str vendor/winapi/src/um/schannel.rs /^pub const SSL_FREE_CERTIFICATE_NAME: &'static str = "SslFreeCertificate";$/;" v +str vendor/winapi/src/um/schannel.rs /^pub const TLS1SP_NAME: &'static str = "Microsoft TLS 1.0";$/;" v +str vendor/winapi/src/um/schannel.rs /^pub const UNISP_NAME: &'static str = "Microsoft Unified Security Protocol Provider";$/;" v +str vendor/winapi/src/um/shellapi.rs /^pub const WC_NETADDRESS: &'static str = "msctls_netaddress";$/;" v +str vendor/winapi/src/um/uxtheme.rs /^pub const SZ_THDOCPROP_AUTHOR: &'static str = "author";$/;" v +str vendor/winapi/src/um/uxtheme.rs /^pub const SZ_THDOCPROP_CANONICALNAME: &'static str = "ThemeName";$/;" v +str vendor/winapi/src/um/uxtheme.rs /^pub const SZ_THDOCPROP_DISPLAYNAME: &'static str = "DisplayName";$/;" v +str vendor/winapi/src/um/uxtheme.rs /^pub const SZ_THDOCPROP_TOOLTIP: &'static str = "ToolTip";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^ &'static str = "CryptnetPreFetchMaxAfterNextUpdatePreFetchPeriodSeconds";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^ &'static str = "CryptnetPreFetchMinAfterNextUpdatePreFetchPeriodSeconds";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^ &'static str = "CryptnetPreFetchMinBeforeNextUpdatePreFetchSeconds";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^ &'static str = "CryptnetPreFetchValidityPeriodAfterNextUpdatePreFetchDivisor";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTH_ROOT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME: &'static str = "EncodedCt";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTH_ROOT_AUTO_UPDATE_FLAGS_VALUE_NAME: &'static str = "Flags";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTH_ROOT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME: &'static str = "LastSyncTime";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTH_ROOT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTH_ROOT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTH_ROOT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME: &'static str = "SyncDeltaTime";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTH_ROOT_CAB_FILENAME: &'static str = "authrootstl.cab";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTH_ROOT_CERT_EXT: &'static str = ".crt";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTH_ROOT_CTL_FILENAME: &'static str = "authroot.st";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTH_ROOT_CTL_FILENAME_A: &'static str = "authroot.st";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTH_ROOT_SEQ_FILENAME: &'static str = "authrootseq.txt";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME: &'static str = "RootDirUrl";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_AUTO_UPDATE_SYNC_FROM_DIR_URL_VALUE_NAME: &'static str = "SyncFromDirUrl";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_AUTO_FLAGS_VALUE_NAME: &'static str = "AutoFlags";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_AUTO_FLUSH_FIRST_DELTA_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_AUTO_FLUSH_NEXT_DELTA_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_AUTO_LOG_FILE_NAME_VALUE_NAME: &'static str = "AutoLogFileName";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_CACHE_RESYNC_FILETIME_VALUE_NAME: &'static str = "ChainCacheResyncFiletime"/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_CONFIG_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_DEFAULT_CONFIG_SUBDIR: &'static str = "Default";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_DISABLE_AIA_URL_RETRIEVAL_VALUE_NAME: &'static str = "DisableAIAUrlRetrieva/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_DISABLE_AUTO_FLUSH_PROCESS_NAME_LIST_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_DISABLE_CA_NAME_CONSTRAINTS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_DISABLE_MANDATORY_BASIC_CONSTRAINTS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_DISABLE_SERIAL_CHAIN_VALUE_NAME: &'static str = "DisableSerialChain";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_DISABLE_SYNC_WITH_SSL_TIME_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_DISABLE_UNSUPPORTED_CRITICAL_EXTENSIONS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_ENABLE_WEAK_SIGNATURE_FLAGS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_VALUE_NAME: &'static str = "MaxAIAUrlCountInCert"/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_VALUE_NAME: &'static str = "MinRsaPubKeyBitLengt/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_OCSP_VALIDITY_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_OPTIONS_VALUE_NAME: &'static str = "Options";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME: &'static st/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_SERIAL_CHAIN_LOG_FILE_NAME_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_SSL_HANDSHAKE_LOG_FILE_NAME_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_WEAK_AFTER_TIME_NAME: &'static str = "AfterTime";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_WEAK_ALL_CONFIG_NAME: &'static str = "Al";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_WEAK_FILE_HASH_AFTER_TIME_NAME: &'static str = "FileHashAfterTime";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_WEAK_FLAGS_NAME: &'static str = "Flags";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_WEAK_HYGIENE_NAME: &'static str = "Hygiene";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_WEAK_MIN_BIT_LENGTH_NAME: &'static str = "MinBitLength";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_WEAK_PREFIX_NAME: &'static str = "Weak";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_WEAK_RSA_PUB_KEY_TIME_VALUE_NAME: &'static str = "WeakRsaPubKeyTime";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_WEAK_SHA256_ALLOW_NAME: &'static str = "Sha256Allow";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_WEAK_SIGNATURE_LOG_DIR_VALUE_NAME: &'static str = "WeakSignatureLogDir";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_WEAK_THIRD_PARTY_CONFIG_NAME: &'static str = "ThirdParty";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_CHAIN_WEAK_TIMESTAMP_HASH_AFTER_TIME_NAME: &'static str = "TimestampHashAfterTime/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_DEFAULT_OID_PUBLIC_KEY_SIGN: &'static str = szOID_RSA_RSA;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_DEFAULT_OID_PUBLIC_KEY_XCHG: &'static str = szOID_RSA_RSA;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_DISABLE_PIN_RULES_AUTO_UPDATE_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_DISABLE_ROOT_AUTO_UPDATE_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_DISABLE_ROOT_AUTO_UPDATE_VALUE_NAME: &'static str = "DisableRootAutoUpdate";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_DISALLOWED_CERT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_DISALLOWED_CERT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_DISALLOWED_CERT_AUTO_UPDATE_LIST_IDENTIFIER: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_DISALLOWED_CERT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_DISALLOWED_CERT_CAB_FILENAME: &'static str = "disallowedcertstl.cab";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_DISALLOWED_CERT_CTL_FILENAME: &'static str = "disallowedcert.st";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_DISALLOWED_CERT_CTL_FILENAME_A: &'static str = "disallowedcert.st";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_EFSBLOB_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_EFSBLOB_VALUE_NAME: &'static str = "EFSBlob";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_ENABLE_DISALLOWED_CERT_AUTO_UPDATE_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_GROUP_POLICY_CHAIN_CONFIG_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_IE_DIRTY_FLAGS_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_OCM_SUBCOMPONENTS_LOCAL_MACHINE_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_OCM_SUBCOMPONENTS_ROOT_AUTO_UPDATE_VALUE_NAME: &'static str = "RootAutoUpdate";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PHYSICAL_STORE_AUTH_ROOT_NAME: &'static str = ".AuthRoot";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PHYSICAL_STORE_DEFAULT_NAME: &'static str = ".Default";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME: &'static str = ".UserCertificate";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PHYSICAL_STORE_ENTERPRISE_NAME: &'static str = ".Enterprise";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PHYSICAL_STORE_GROUP_POLICY_NAME: &'static str = ".GroupPolicy";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME: &'static str = ".LocalMachine";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PHYSICAL_STORE_SMART_CARD_NAME: &'static str = ".SmartCard";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PIN_RULES_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME: &'static str = "PinRulesEncodedCt";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PIN_RULES_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PIN_RULES_AUTO_UPDATE_LIST_IDENTIFIER: &'static str = "PinRules_AutoUpdate_1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PIN_RULES_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PIN_RULES_CAB_FILENAME: &'static str = "pinrulesstl.cab";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PIN_RULES_CTL_FILENAME: &'static str = "pinrules.st";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PIN_RULES_CTL_FILENAME_A: &'static str = "pinrules.st";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PROT_ROOT_FLAGS_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PROT_ROOT_FLAGS_VALUE_NAME: &'static str = "Flags";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PROT_ROOT_PEER_USAGES_DEFAULT_A: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PROT_ROOT_PEER_USAGES_VALUE_NAME: &'static str = "PeerUsages";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_PROT_ROOT_PEER_USAGES_VALUE_NAME_A: &'static str = "PeerUsages";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_RETR_BEHAVIOR_FILE_VALUE_NAME: &'static str = "AllowFileUrlScheme";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_RETR_BEHAVIOR_INET_AUTH_VALUE_NAME: &'static str = "EnableInetUnknownAuth";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_RETR_BEHAVIOR_INET_STATUS_VALUE_NAME: &'static str = "EnableInetLocal";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_RETR_BEHAVIOR_LDAP_VALUE_NAME: &'static str = "DisableLDAPSignAndEncrypt";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_RSA_PUBLIC_KEY_OBJID: &'static str = szOID_RSA_RSA;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_SRV_OCSP_RESP_MAX_SYNC_CERT_FILE_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_SRV_OCSP_RESP_MIN_SYNC_CERT_FILE_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_STRONG_SIGN_ECDSA_ALGORITHM: &'static str = "ECDSA";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME: &'static str = "AuthenticodeFlags";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC: &'static str = CMSG_OID_EXPORT_KEY_AGREE_FUNC;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CAPI1_EXPORT_KEY_TRANS_FUNC: &'static str = CMSG_OID_EXPORT_KEY_TRANS_FUNC;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CAPI1_EXPORT_MAIL_LIST_FUNC: &'static str = CMSG_OID_EXPORT_MAIL_LIST_FUNC;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CAPI1_GEN_CONTENT_ENCRYPT_KEY_FUNC: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CAPI1_IMPORT_KEY_AGREE_FUNC: &'static str = CMSG_OID_IMPORT_KEY_AGREE_FUNC;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CAPI1_IMPORT_KEY_TRANS_FUNC: &'static str = CMSG_OID_IMPORT_KEY_TRANS_FUNC;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CAPI1_IMPORT_MAIL_LIST_FUNC: &'static str = CMSG_OID_IMPORT_MAIL_LIST_FUNC;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC: &'static str = "CryptMsgDllCNGExportKeyAgree";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CNG_EXPORT_KEY_TRANS_FUNC: &'static str = "CryptMsgDllCNGExportKeyTrans";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CNG_IMPORT_CONTENT_ENCRYPT_KEY_FUNC: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CNG_IMPORT_KEY_AGREE_FUNC: &'static str = "CryptMsgDllCNGImportKeyAgree";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_CNG_IMPORT_KEY_TRANS_FUNC: &'static str = "CryptMsgDllCNGImportKeyTrans";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_EXPORT_ENCRYPT_KEY_FUNC: &'static str = "CryptMsgDllExportEncryptKey";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_EXPORT_KEY_AGREE_FUNC: &'static str = "CryptMsgDllExportKeyAgree";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_EXPORT_KEY_TRANS_FUNC: &'static str = "CryptMsgDllExportKeyTrans";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_EXPORT_MAIL_LIST_FUNC: &'static str = "CryptMsgDllExportMailList";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC: &'static str = "CryptMsgDllGenContentEncryptKey/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_GEN_ENCRYPT_KEY_FUNC: &'static str = "CryptMsgDllGenEncryptKey";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_IMPORT_ENCRYPT_KEY_FUNC: &'static str = "CryptMsgDllImportEncryptKey";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_IMPORT_KEY_AGREE_FUNC: &'static str = "CryptMsgDllImportKeyAgree";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_IMPORT_KEY_TRANS_FUNC: &'static str = "CryptMsgDllImportKeyTrans";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CMSG_OID_IMPORT_MAIL_LIST_FUNC: &'static str = "CryptMsgDllImportMailList";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CONTEXT_OID_CREATE_OBJECT_CONTEXT_FUNC: &'static str = "ContextDllCreateObjectContext"/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_CRL_PRE_FETCH_CONFIG_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_CRL_PRE_FETCH_DISABLE_INFORMATION_EVENTS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_CRL_PRE_FETCH_LOG_FILE_NAME_VALUE_NAME: &'static str = "LogFileName";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_VALUE_NAME: &'static str = "MaxAgeSeconds";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_CRL_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_CRL_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_CRL_PRE_FETCH_PROCESS_NAME_LIST_VALUE_NAME: &'static str = "ProcessNameList";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_CRL_PRE_FETCH_PUBLISH_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_CRL_PRE_FETCH_PUBLISH_RANDOM_INTERVAL_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_CRL_PRE_FETCH_TIMEOUT_SECONDS_VALUE_NAME: &'static str = "TimeoutSeconds";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_CRL_PRE_FETCH_URL_LIST_VALUE_NAME: &'static str = "PreFetchUrlList";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME: &'static st/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_VALUE_NAME: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_DEFAULT_OID: &'static str = "DEFAULT";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_LOCALIZED_NAME_OID: &'static str = "LocalizedNames";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_CREATE_COM_OBJECT_FUNC: &'static str = "CryptDllCreateCOMObject";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_DECODE_OBJECT_EX_FUNC: &'static str = "CryptDllDecodeObjectEx";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_DECODE_OBJECT_FUNC: &'static str = "CryptDllDecodeObject";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_ENCODE_OBJECT_EX_FUNC: &'static str = "CryptDllEncodeObjectEx";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_ENCODE_OBJECT_FUNC: &'static str = "CryptDllEncodeObject";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_ENUM_PHYSICAL_STORE_FUNC: &'static str = "CertDllEnumPhysicalStore";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_ENUM_SYSTEM_STORE_FUNC: &'static str = "CertDllEnumSystemStore";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC: &'static str = "CryptDllExportPrivateKeyInfoEx/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC: &'static str = "CryptDllExportPublicKeyInfoEx";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_FIND_LOCALIZED_NAME_FUNC: &'static str = "CryptDllFindLocalizedName";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_FIND_OID_INFO_FUNC: &'static str = "CryptDllFindOIDInfo";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_FORMAT_OBJECT_FUNC: &'static str = "CryptDllFormatObject";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_IMPORT_PRIVATE_KEY_INFO_FUNC: &'static str = "CryptDllImportPrivateKeyInfoEx/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC: &'static str = "CryptDllImportPublicKeyInfoEx";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM: &'static str = "CryptOIDInfoECCParameters";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM: &'static str = "CryptOIDInfoHashParameters";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM: &'static str = "CryptOIDInfoMgf1Parameters";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM: &'static str = "CryptOIDInfoNoParameters";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_INFO_NO_SIGN_ALGORITHM: &'static str = "CryptOIDInfoNoSign";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM: &'static str = "CryptOIDInfoOAEPParameters";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_OPEN_STORE_PROV_FUNC: &'static str = "CertDllOpenStoreProv";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_OPEN_SYSTEM_STORE_PROV_FUNC: &'static str = "CertDllOpenSystemStoreProv";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_REGISTER_PHYSICAL_STORE_FUNC: &'static str = "CertDllRegisterPhysicalStore";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_REGISTER_SYSTEM_STORE_FUNC: &'static str = "CertDllRegisterSystemStore";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_REGPATH: &'static str = "Software\\\\Microsoft\\\\Cryptography\\\\OID";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_REG_DLL_VALUE_NAME: &'static str = "Dll";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_REG_ENCODING_TYPE_PREFIX: &'static str = "EncodingType ";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_REG_FLAGS_VALUE_NAME: &'static str = "CryptFlags";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_REG_FUNC_NAME_VALUE_NAME: &'static str = "FuncName";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_SIGN_AND_ENCODE_HASH_FUNC: &'static str = "CryptDllSignAndEncodeHash";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_SYSTEM_STORE_LOCATION_VALUE_NAME: &'static str = "SystemStoreLocation";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_UNREGISTER_PHYSICAL_STORE_FUNC: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_UNREGISTER_SYSTEM_STORE_FUNC: &'static str = "CertDllUnregisterSystemStore";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_VERIFY_CERTIFICATE_CHAIN_POLICY_FUNC: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_VERIFY_CTL_USAGE_FUNC: &'static str = "CertDllVerifyCTLUsage";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_VERIFY_ENCODED_SIGNATURE_FUNC: &'static str = "CryptDllVerifyEncodedSignatur/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const CRYPT_OID_VERIFY_REVOCATION_FUNC: &'static str = "CertDllVerifyRevocation";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const EXPO_OFFLOAD_FUNC_NAME: &'static str = "OffloadModExpo";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const EXPO_OFFLOAD_REG_VALUE: &'static str = "ExpoOffload";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const MS_DEF_DH_SCHANNEL_PROV: &'static str = "Microsoft DH SChannel Cryptographic Provider"/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const MS_DEF_DSS_DH_PROV: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const MS_DEF_DSS_PROV: &'static str = "Microsoft Base DSS Cryptographic Provider";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const MS_DEF_PROV: &'static str = "Microsoft Base Cryptographic Provider v1.0";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const MS_DEF_RSA_SCHANNEL_PROV: &'static str = "Microsoft RSA SChannel Cryptographic Provide/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const MS_DEF_RSA_SIG_PROV: &'static str = "Microsoft RSA Signature Cryptographic Provider";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const MS_ENHANCED_PROV: &'static str = "Microsoft Enhanced Cryptographic Provider v1.0";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const MS_ENH_DSS_DH_PROV: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const MS_ENH_RSA_AES_PROV: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const MS_ENH_RSA_AES_PROV_XP: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const MS_SCARD_PROV: &'static str = "Microsoft Base Smart Card Crypto Provider";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const MS_STRONG_PROV: &'static str = "Microsoft Strong Cryptographic Provider";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const PKCS12_CONFIG_REGPATH: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const PKCS12_ENCRYPT_CERTIFICATES_VALUE_NAME: &'static str = "EncryptCertificates";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const PKCS12_ONLY_CERTIFICATES_CONTAINER_NAME: &'static str = "PfxContainer";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const PKCS12_ONLY_CERTIFICATES_PROVIDER_NAME: &'static str = "PfxProvider";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const SCHEME_OID_RETRIEVE_ENCODED_OBJECTW_FUNC: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC: &'static str = "SchemeDllRetrieveEncodedObjec/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const SSL_OBJECT_LOCATOR_CERT_VALIDATION_CONFIG_FUNC: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const SSL_OBJECT_LOCATOR_ISSUER_LIST_FUNC: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const SSL_OBJECT_LOCATOR_PFX_FUNC: &'static str = "SslObjectLocatorInitializePfx";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const TIME_VALID_OID_FLUSH_OBJECT_FUNC: &'static str = "TimeValidDllFlushObject";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const TIME_VALID_OID_GET_OBJECT_FUNC: &'static str = "TimeValidDllGetObject";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const URL_OID_GET_OBJECT_URL_FUNC: &'static str = "UrlDllGetObjectUrl";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szKEY_CACHE_ENABLED: &'static str = "CachePrivateKeys";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szKEY_CACHE_SECONDS: &'static str = "PrivateKeyLifetimeSeconds";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szKEY_CRYPTOAPI_PRIVATE_KEY_OPTIONS: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOIDVerisign_FailInfo: &'static str = "2.16.840.1.113733.1.9.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOIDVerisign_MessageType: &'static str = "2.16.840.1.113733.1.9.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOIDVerisign_PkiStatus: &'static str = "2.16.840.1.113733.1.9.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOIDVerisign_RecipientNonce: &'static str = "2.16.840.1.113733.1.9.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOIDVerisign_SenderNonce: &'static str = "2.16.840.1.113733.1.9.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOIDVerisign_TransactionID: &'static str = "2.16.840.1.113733.1.9.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ANSI_X942: &'static str = "1.2.840.10046";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ANSI_X942_DH: &'static str = "1.2.840.10046.2.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ANY_APPLICATION_POLICY: &'static str = "1.3.6.1.4.1.311.10.12.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ANY_CERT_POLICY: &'static str = "2.5.29.32.0";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ANY_ENHANCED_KEY_USAGE: &'static str = "2.5.29.37.0";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_APPLICATION_CERT_POLICIES: &'static str = "1.3.6.1.4.1.311.21.10";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_APPLICATION_POLICY_CONSTRAINTS: &'static str = "1.3.6.1.4.1.311.21.12";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_APPLICATION_POLICY_MAPPINGS: &'static str = "1.3.6.1.4.1.311.21.11";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ARCHIVED_KEY_ATTR: &'static str = "1.3.6.1.4.1.311.21.13";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ARCHIVED_KEY_CERT_HASH: &'static str = "1.3.6.1.4.1.311.21.16";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ATTEST_WHQL_CRYPTO: &'static str = "1.3.6.1.4.1.311.10.3.5.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ATTR_PLATFORM_SPECIFICATION: &'static str = "2.23.133.2.17";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ATTR_SUPPORTED_ALGORITHMS: &'static str = "2.5.4.52";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ATTR_TPM_SECURITY_ASSERTIONS: &'static str = "2.23.133.2.18";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ATTR_TPM_SPECIFICATION: &'static str = "2.23.133.2.16";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_AUTHORITY_INFO_ACCESS: &'static str = "1.3.6.1.5.5.7.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_AUTHORITY_KEY_IDENTIFIER2: &'static str = "2.5.29.35";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_AUTHORITY_KEY_IDENTIFIER: &'static str = "2.5.29.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_AUTHORITY_REVOCATION_LIST: &'static str = "2.5.4.38";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_AUTO_ENROLL_CTL_USAGE: &'static str = "1.3.6.1.4.1.311.20.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_BACKGROUND_OTHER_LOGOTYPE: &'static str = "1.3.6.1.5.5.7.20.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_BASIC_CONSTRAINTS2: &'static str = "2.5.29.19";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_BASIC_CONSTRAINTS: &'static str = "2.5.29.10";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_BIOMETRIC_EXT: &'static str = "1.3.6.1.5.5.7.1.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_BUSINESS_CATEGORY: &'static str = "2.5.4.15";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CA_CERTIFICATE: &'static str = "2.5.4.37";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERTIFICATE_REVOCATION_LIST: &'static str = "2.5.4.39";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERTIFICATE_TEMPLATE: &'static str = "1.3.6.1.4.1.311.21.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERTSRV_CA_VERSION: &'static str = "1.3.6.1.4.1.311.21.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERTSRV_CROSSCA_VERSION: &'static str = "1.3.6.1.4.1.311.21.22";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERTSRV_PREVIOUS_CERT_HASH: &'static str = "1.3.6.1.4.1.311.21.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_DISALLOWED_FILETIME_PROP_ID: &'static str = "1.3.6.1.4.1.311.10.11.104";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_EXTENSIONS: &'static str = "1.3.6.1.4.1.311.2.1.14";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_KEY_IDENTIFIER_PROP_ID: &'static str = "1.3.6.1.4.1.311.10.11.20";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_MANIFOLD: &'static str = "1.3.6.1.4.1.311.20.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_MD5_HASH_PROP_ID: &'static str = "1.3.6.1.4.1.311.10.11.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_POLICIES: &'static str = "2.5.29.32";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_POLICIES_95: &'static str = "2.5.29.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_POLICIES_95_QUALIFIER1: &'static str = "2.16.840.1.113733.1.7.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_PROP_ID_PREFIX: &'static str = "1.3.6.1.4.1.311.10.11.";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_SIGNATURE_HASH_PROP_ID: &'static str = "1.3.6.1.4.1.311.10.11.15";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_STRONG_KEY_OS_1: &'static str = "1.3.6.1.4.1.311.72.2.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_STRONG_KEY_OS_CURRENT: &'static str = szOID_CERT_STRONG_KEY_OS_1;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_STRONG_KEY_OS_PREFIX: &'static str = "1.3.6.1.4.1.311.72.2.";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_STRONG_SIGN_OS_1: &'static str = "1.3.6.1.4.1.311.72.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_STRONG_SIGN_OS_CURRENT: &'static str = szOID_CERT_STRONG_SIGN_OS_1;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_STRONG_SIGN_OS_PREFIX: &'static str = "1.3.6.1.4.1.311.72.1.";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID: &'static str = "1.3.6.1.4.1.311.10.11.29";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC: &'static str = "1.3.6.1.5.5.7.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_ADD_ATTRIBUTES: &'static str = "1.3.6.1.4.1.311.10.10.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_ADD_EXTENSIONS: &'static str = "1.3.6.1.5.5.7.7.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_DATA_RETURN: &'static str = "1.3.6.1.5.5.7.7.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_DECRYPTED_POP: &'static str = "1.3.6.1.5.5.7.7.10";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_ENCRYPTED_POP: &'static str = "1.3.6.1.5.5.7.7.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_GET_CERT: &'static str = "1.3.6.1.5.5.7.7.15";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_GET_CRL: &'static str = "1.3.6.1.5.5.7.7.16";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_IDENTIFICATION: &'static str = "1.3.6.1.5.5.7.7.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_IDENTITY_PROOF: &'static str = "1.3.6.1.5.5.7.7.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_ID_CONFIRM_CERT_ACCEPTANCE: &'static str = "1.3.6.1.5.5.7.7.24";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_ID_POP_LINK_RANDOM: &'static str = "1.3.6.1.5.5.7.7.22";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_ID_POP_LINK_WITNESS: &'static str = "1.3.6.1.5.5.7.7.23";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_LRA_POP_WITNESS: &'static str = "1.3.6.1.5.5.7.7.11";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_QUERY_PENDING: &'static str = "1.3.6.1.5.5.7.7.21";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_RECIPIENT_NONCE: &'static str = "1.3.6.1.5.5.7.7.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_REG_INFO: &'static str = "1.3.6.1.5.5.7.7.18";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_RESPONSE_INFO: &'static str = "1.3.6.1.5.5.7.7.19";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_REVOKE_REQUEST: &'static str = "1.3.6.1.5.5.7.7.17";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_SENDER_NONCE: &'static str = "1.3.6.1.5.5.7.7.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_STATUS_INFO: &'static str = "1.3.6.1.5.5.7.7.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CMC_TRANSACTION_ID: &'static str = "1.3.6.1.5.5.7.7.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CN_ECDSA_SHA256: &'static str = "1.2.156.11235.1.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_COMMON_NAME: &'static str = "2.5.4.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_COUNTRY_NAME: &'static str = "2.5.4.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CRL_DIST_POINTS: &'static str = "2.5.29.31";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CRL_NEXT_PUBLISH: &'static str = "1.3.6.1.4.1.311.21.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CRL_NUMBER: &'static str = "2.5.29.20";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CRL_REASON_CODE: &'static str = "2.5.29.21";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CRL_SELF_CDP: &'static str = "1.3.6.1.4.1.311.21.14";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CRL_VIRTUAL_BASE: &'static str = "1.3.6.1.4.1.311.21.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CROSS_CERTIFICATE_PAIR: &'static str = "2.5.4.40";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CROSS_CERT_DIST_POINTS: &'static str = "1.3.6.1.4.1.311.10.9.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CTL: &'static str = "1.3.6.1.4.1.311.10.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CT_PKI_DATA: &'static str = "1.3.6.1.5.5.7.12.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_CT_PKI_RESPONSE: &'static str = "1.3.6.1.5.5.7.12.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DELTA_CRL_INDICATOR: &'static str = "2.5.29.27";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DESCRIPTION: &'static str = "2.5.4.13";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DESTINATION_INDICATOR: &'static str = "2.5.4.27";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DEVICE_SERIAL_NUMBER: &'static str = "2.5.4.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DH_SINGLE_PASS_STDDH_SHA1_KDF: &'static str = "1.3.133.16.840.63.0.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF: &'static str = "1.3.132.1.11.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF: &'static str = "1.3.132.1.11.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DISALLOWED_HASH: &'static str = szOID_CERT_SIGNATURE_HASH_PROP_ID;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DISALLOWED_LIST: &'static str = "1.3.6.1.4.1.311.10.3.30";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DN_QUALIFIER: &'static str = "2.5.4.46";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DOMAIN_COMPONENT: &'static str = "0.9.2342.19200300.100.1.25";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DRM: &'static str = "1.3.6.1.4.1.311.10.5.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DRM_INDIVIDUALIZATION: &'static str = "1.3.6.1.4.1.311.10.5.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DS: &'static str = "2.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DSALG: &'static str = "2.5.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DSALG_CRPT: &'static str = "2.5.8.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DSALG_HASH: &'static str = "2.5.8.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DSALG_RSA: &'static str = "2.5.8.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DSALG_SIGN: &'static str = "2.5.8.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DS_EMAIL_REPLICATION: &'static str = "1.3.6.1.4.1.311.21.19";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_DYNAMIC_CODE_GEN_SIGNER: &'static str = "1.3.6.1.4.1.311.76.5.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP160R1: &'static str = "1.3.36.3.3.2.8.1.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP160T1: &'static str = "1.3.36.3.3.2.8.1.1.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP192R1: &'static str = "1.3.36.3.3.2.8.1.1.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP192T1: &'static str = "1.3.36.3.3.2.8.1.1.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP224R1: &'static str = "1.3.36.3.3.2.8.1.1.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP224T1: &'static str = "1.3.36.3.3.2.8.1.1.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP256R1: &'static str = "1.3.36.3.3.2.8.1.1.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP256T1: &'static str = "1.3.36.3.3.2.8.1.1.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP320R1: &'static str = "1.3.36.3.3.2.8.1.1.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP320T1: &'static str = "1.3.36.3.3.2.8.1.1.10";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP384R1: &'static str = "1.3.36.3.3.2.8.1.1.11";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP384T1: &'static str = "1.3.36.3.3.2.8.1.1.12";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP512R1: &'static str = "1.3.36.3.3.2.8.1.1.13";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_BRAINPOOLP512T1: &'static str = "1.3.36.3.3.2.8.1.1.14";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_EC192WAPI: &'static str = "1.2.156.11235.1.1.2.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_NISTP192: &'static str = "1.2.840.10045.3.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_NISTP224: &'static str = "1.3.132.0.33";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_NISTP256: &'static str = szOID_ECC_CURVE_P256;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_NISTP384: &'static str = szOID_ECC_CURVE_P384;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_NISTP521: &'static str = szOID_ECC_CURVE_P521;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_P256: &'static str = "1.2.840.10045.3.1.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_P384: &'static str = "1.3.132.0.34";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_P521: &'static str = "1.3.132.0.35";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_SECP160K1: &'static str = "1.3.132.0.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_SECP160R1: &'static str = "1.3.132.0.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_SECP160R2: &'static str = "1.3.132.0.30";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_SECP192K1: &'static str = "1.3.132.0.31";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_SECP192R1: &'static str = szOID_ECC_CURVE_NISTP192;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_SECP224K1: &'static str = "1.3.132.0.32";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_SECP224R1: &'static str = szOID_ECC_CURVE_NISTP224;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_SECP256K1: &'static str = "1.3.132.0.10";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_SECP256R1: &'static str = szOID_ECC_CURVE_P256;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_SECP384R1: &'static str = szOID_ECC_CURVE_P384;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_SECP521R1: &'static str = szOID_ECC_CURVE_P521;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_WTLS12: &'static str = szOID_ECC_CURVE_NISTP224;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_WTLS7: &'static str = szOID_ECC_CURVE_SECP160R2;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_WTLS9: &'static str = "2.23.43.1.4.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_X962P192V1: &'static str = "1.2.840.10045.3.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_X962P192V2: &'static str = "1.2.840.10045.3.1.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_X962P192V3: &'static str = "1.2.840.10045.3.1.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_X962P239V1: &'static str = "1.2.840.10045.3.1.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_X962P239V2: &'static str = "1.2.840.10045.3.1.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_X962P239V3: &'static str = "1.2.840.10045.3.1.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_CURVE_X962P256V1: &'static str = szOID_ECC_CURVE_P256;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECC_PUBLIC_KEY: &'static str = "1.2.840.10045.2.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECDSA_SHA1: &'static str = "1.2.840.10045.4.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECDSA_SHA256: &'static str = "1.2.840.10045.4.3.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECDSA_SHA384: &'static str = "1.2.840.10045.4.3.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECDSA_SHA512: &'static str = "1.2.840.10045.4.3.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ECDSA_SPECIFIED: &'static str = "1.2.840.10045.4.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_EFS_RECOVERY: &'static str = "1.3.6.1.4.1.311.10.3.4.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_EMBEDDED_NT_CRYPTO: &'static str = "1.3.6.1.4.1.311.10.3.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENCRYPTED_KEY_HASH: &'static str = "1.3.6.1.4.1.311.21.21";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENHANCED_KEY_USAGE: &'static str = "2.5.29.37";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLLMENT_AGENT: &'static str = "1.3.6.1.4.1.311.20.2.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLLMENT_CSP_PROVIDER: &'static str = "1.3.6.1.4.1.311.13.2.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLLMENT_NAME_VALUE_PAIR: &'static str = "1.3.6.1.4.1.311.13.2.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_AIK_INFO: &'static str = "1.3.6.1.4.1.311.21.39";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_ATTESTATION_CHALLENGE: &'static str = "1.3.6.1.4.1.311.21.28";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_ATTESTATION_STATEMENT: &'static str = "1.3.6.1.4.1.311.21.24";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_CAXCHGCERT_HASH: &'static str = "1.3.6.1.4.1.311.21.27";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_CERTTYPE_EXTENSION: &'static str = "1.3.6.1.4.1.311.20.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_EKPUB_CHALLENGE: &'static str = "1.3.6.1.4.1.311.21.26";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_EKVERIFYCERT: &'static str = "1.3.6.1.4.1.311.21.31";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_EKVERIFYCREDS: &'static str = "1.3.6.1.4.1.311.21.32";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_EKVERIFYKEY: &'static str = "1.3.6.1.4.1.311.21.30";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_EK_CA_KEYID: &'static str = "1.3.6.1.4.1.311.21.43";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_EK_INFO: &'static str = "1.3.6.1.4.1.311.21.23";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_ENCRYPTION_ALGORITHM: &'static str = "1.3.6.1.4.1.311.21.29";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_KEY_AFFINITY: &'static str = "1.3.6.1.4.1.311.21.41";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_KSP_NAME: &'static str = "1.3.6.1.4.1.311.21.25";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_SCEP_CHALLENGE_ANSWER: &'static str = "1.3.6.1.4.1.311.21.35";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_SCEP_CLIENT_REQUEST: &'static str = "1.3.6.1.4.1.311.21.37";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_SCEP_ERROR: &'static str = "1.3.6.1.4.1.311.21.33";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_SCEP_SERVER_MESSAGE: &'static str = "1.3.6.1.4.1.311.21.38";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_SCEP_SERVER_SECRET: &'static str = "1.3.6.1.4.1.311.21.40";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_SCEP_SERVER_STATE: &'static str = "1.3.6.1.4.1.311.21.34";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENROLL_SCEP_SIGNER_HASH: &'static str = "1.3.6.1.4.1.311.21.42";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ENTERPRISE_OID_ROOT: &'static str = "1.3.6.1.4.1.311.21.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_EV_RDN_COUNTRY: &'static str = "1.3.6.1.4.1.311.60.2.1.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_EV_RDN_LOCALE: &'static str = "1.3.6.1.4.1.311.60.2.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_EV_RDN_STATE_OR_PROVINCE: &'static str = "1.3.6.1.4.1.311.60.2.1.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_EV_WHQL_CRYPTO: &'static str = "1.3.6.1.4.1.311.10.3.39";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_FACSIMILE_TELEPHONE_NUMBER: &'static str = "2.5.4.23";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_FRESHEST_CRL: &'static str = "2.5.29.46";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_GIVEN_NAME: &'static str = "2.5.4.42";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_HPKP_DOMAIN_NAME_CTL: &'static str = "1.3.6.1.4.1.311.10.3.60";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_HPKP_HEADER_VALUE_CTL: &'static str = "1.3.6.1.4.1.311.10.3.61";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC: &'static str = "2.16.840.1.101.2.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_SuiteAConfidentiality: &'static str = "2.16.840.1.101.2.1.1.14";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_SuiteAIntegrity: &'static str = "2.16.840.1.101.2.1.1.15";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_SuiteAKMandSig: &'static str = "2.16.840.1.101.2.1.1.18";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_SuiteAKeyManagement: &'static str = "2.16.840.1.101.2.1.1.17";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_SuiteASignature: &'static str = "2.16.840.1.101.2.1.1.13";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_SuiteATokenProtection: &'static str = "2.16.840.1.101.2.1.1.16";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_mosaicConfidentiality: &'static str = "2.16.840.1.101.2.1.1.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_mosaicIntegrity: &'static str = "2.16.840.1.101.2.1.1.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_mosaicKMandSig: &'static str = "2.16.840.1.101.2.1.1.12";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_mosaicKMandUpdSig: &'static str = "2.16.840.1.101.2.1.1.20";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_mosaicKeyManagement: &'static str = "2.16.840.1.101.2.1.1.10";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_mosaicSignature: &'static str = "2.16.840.1.101.2.1.1.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_mosaicTokenProtection: &'static str = "2.16.840.1.101.2.1.1.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_mosaicUpdatedInteg: &'static str = "2.16.840.1.101.2.1.1.21";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_mosaicUpdatedSig: &'static str = "2.16.840.1.101.2.1.1.19";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_sdnsConfidentiality: &'static str = "2.16.840.1.101.2.1.1.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_sdnsIntegrity: &'static str = "2.16.840.1.101.2.1.1.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_sdnsKMandSig: &'static str = "2.16.840.1.101.2.1.1.11";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_sdnsKeyManagement: &'static str = "2.16.840.1.101.2.1.1.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_sdnsSignature: &'static str = "2.16.840.1.101.2.1.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INFOSEC_sdnsTokenProtection: &'static str = "2.16.840.1.101.2.1.1.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INHIBIT_ANY_POLICY: &'static str = "2.5.29.54";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INITIALS: &'static str = "2.5.4.43";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INTERNATIONALIZED_EMAIL_ADDRESS: &'static str = "1.3.6.1.4.1.311.20.2.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_INTERNATIONAL_ISDN_NUMBER: &'static str = "2.5.4.25";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_IPSEC_KP_IKE_INTERMEDIATE: &'static str = "1.3.6.1.5.5.8.2.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ISSUED_CERT_HASH: &'static str = "1.3.6.1.4.1.311.21.17";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ISSUER_ALT_NAME2: &'static str = "2.5.29.18";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ISSUER_ALT_NAME: &'static str = "2.5.29.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ISSUING_DIST_POINT: &'static str = "2.5.29.28";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_IUM_SIGNING: &'static str = "1.3.6.1.4.1.311.10.3.37";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KEYID_RDN: &'static str = "1.3.6.1.4.1.311.10.7.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KEY_ATTRIBUTES: &'static str = "2.5.29.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KEY_USAGE: &'static str = "2.5.29.15";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KEY_USAGE_RESTRICTION: &'static str = "2.5.29.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_CA_EXCHANGE: &'static str = "1.3.6.1.4.1.311.21.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_CSP_SIGNATURE: &'static str = "1.3.6.1.4.1.311.10.3.16";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_CTL_USAGE_SIGNING: &'static str = "1.3.6.1.4.1.311.10.3.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_DOCUMENT_SIGNING: &'static str = "1.3.6.1.4.1.311.10.3.12";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_EFS: &'static str = "1.3.6.1.4.1.311.10.3.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_FLIGHT_SIGNING: &'static str = "1.3.6.1.4.1.311.10.3.27";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_KERNEL_MODE_CODE_SIGNING: &'static str = "1.3.6.1.4.1.311.61.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_KERNEL_MODE_HAL_EXTENSION_SIGNING: &'static str = "1.3.6.1.4.1.311.61.5.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_KERNEL_MODE_TRUSTED_BOOT_SIGNING: &'static str = "1.3.6.1.4.1.311.61.4.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_KEY_RECOVERY: &'static str = "1.3.6.1.4.1.311.10.3.11";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_KEY_RECOVERY_AGENT: &'static str = "1.3.6.1.4.1.311.21.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_LIFETIME_SIGNING: &'static str = "1.3.6.1.4.1.311.10.3.13";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_MOBILE_DEVICE_SOFTWARE: &'static str = "1.3.6.1.4.1.311.10.3.14";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_PRIVACY_CA: &'static str = "1.3.6.1.4.1.311.21.36";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_QUALIFIED_SUBORDINATION: &'static str = "1.3.6.1.4.1.311.10.3.10";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_SMARTCARD_LOGON: &'static str = "1.3.6.1.4.1.311.20.2.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_SMART_DISPLAY: &'static str = "1.3.6.1.4.1.311.10.3.15";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_TIME_STAMP_SIGNING: &'static str = "1.3.6.1.4.1.311.10.3.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_TPM_AIK_CERTIFICATE: &'static str = "2.23.133.8.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_TPM_EK_CERTIFICATE: &'static str = "2.23.133.8.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_KP_TPM_PLATFORM_CERTIFICATE: &'static str = "2.23.133.8.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_LEGACY_POLICY_MAPPINGS: &'static str = "2.5.29.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_LICENSES: &'static str = "1.3.6.1.4.1.311.10.6.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_LICENSE_SERVER: &'static str = "1.3.6.1.4.1.311.10.6.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_LOCALITY_NAME: &'static str = "2.5.4.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_LOCAL_MACHINE_KEYSET: &'static str = "1.3.6.1.4.1.311.17.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_LOGOTYPE_EXT: &'static str = "1.3.6.1.5.5.7.1.12";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_LOYALTY_OTHER_LOGOTYPE: &'static str = "1.3.6.1.5.5.7.20.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_MEMBER: &'static str = "2.5.4.31";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_MICROSOFT_PUBLISHER_SIGNER: &'static str = "1.3.6.1.4.1.311.76.8.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NAME_CONSTRAINTS: &'static str = "2.5.29.30";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NETSCAPE: &'static str = "2.16.840.1.113730";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NETSCAPE_BASE_URL: &'static str = "2.16.840.1.113730.1.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NETSCAPE_CA_POLICY_URL: &'static str = "2.16.840.1.113730.1.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NETSCAPE_CA_REVOCATION_URL: &'static str = "2.16.840.1.113730.1.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NETSCAPE_CERT_EXTENSION: &'static str = "2.16.840.1.113730.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NETSCAPE_CERT_RENEWAL_URL: &'static str = "2.16.840.1.113730.1.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NETSCAPE_CERT_SEQUENCE: &'static str = "2.16.840.1.113730.2.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NETSCAPE_CERT_TYPE: &'static str = "2.16.840.1.113730.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NETSCAPE_COMMENT: &'static str = "2.16.840.1.113730.1.13";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NETSCAPE_DATA_TYPE: &'static str = "2.16.840.1.113730.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NETSCAPE_REVOCATION_URL: &'static str = "2.16.840.1.113730.1.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NETSCAPE_SSL_SERVER_NAME: &'static str = "2.16.840.1.113730.1.12";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NEXT_UPDATE_LOCATION: &'static str = "1.3.6.1.4.1.311.10.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NIST_AES128_CBC: &'static str = "2.16.840.1.101.3.4.1.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NIST_AES128_WRAP: &'static str = "2.16.840.1.101.3.4.1.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NIST_AES192_CBC: &'static str = "2.16.840.1.101.3.4.1.22";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NIST_AES192_WRAP: &'static str = "2.16.840.1.101.3.4.1.25";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NIST_AES256_CBC: &'static str = "2.16.840.1.101.3.4.1.42";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NIST_AES256_WRAP: &'static str = "2.16.840.1.101.3.4.1.45";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NIST_sha256: &'static str = "2.16.840.1.101.3.4.2.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NIST_sha384: &'static str = "2.16.840.1.101.3.4.2.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NIST_sha512: &'static str = "2.16.840.1.101.3.4.2.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NT5_CRYPTO: &'static str = "1.3.6.1.4.1.311.10.3.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NTDS_REPLICATION: &'static str = "1.3.6.1.4.1.311.25.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_NT_PRINCIPAL_NAME: &'static str = "1.3.6.1.4.1.311.20.2.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OEM_WHQL_CRYPTO: &'static str = "1.3.6.1.4.1.311.10.3.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIW: &'static str = "1.3.14";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWDIR: &'static str = "1.3.14.7.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWDIR_CRPT: &'static str = "1.3.14.7.2.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWDIR_HASH: &'static str = "1.3.14.7.2.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWDIR_SIGN: &'static str = "1.3.14.7.2.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWDIR_md2: &'static str = "1.3.14.7.2.2.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWDIR_md2RSA: &'static str = "1.3.14.7.2.3.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC: &'static str = "1.3.14.3.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_desCBC: &'static str = "1.3.14.3.2.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_desCFB: &'static str = "1.3.14.3.2.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_desECB: &'static str = "1.3.14.3.2.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_desEDE: &'static str = "1.3.14.3.2.17";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_desMAC: &'static str = "1.3.14.3.2.10";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_desOFB: &'static str = "1.3.14.3.2.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_dhCommMod: &'static str = "1.3.14.3.2.16";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_dsa: &'static str = "1.3.14.3.2.12";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_dsaComm: &'static str = "1.3.14.3.2.20";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_dsaCommSHA1: &'static str = "1.3.14.3.2.28";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_dsaCommSHA: &'static str = "1.3.14.3.2.21";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_dsaSHA1: &'static str = "1.3.14.3.2.27";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_keyHashSeal: &'static str = "1.3.14.3.2.23";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_md2RSASign: &'static str = "1.3.14.3.2.24";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_md4RSA2: &'static str = "1.3.14.3.2.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_md4RSA: &'static str = "1.3.14.3.2.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_md5RSA: &'static str = "1.3.14.3.2.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_md5RSASign: &'static str = "1.3.14.3.2.25";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_mdc2: &'static str = "1.3.14.3.2.19";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_mdc2RSA: &'static str = "1.3.14.3.2.14";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_rsaSign: &'static str = "1.3.14.3.2.11";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_rsaXchg: &'static str = "1.3.14.3.2.22";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_sha1: &'static str = "1.3.14.3.2.26";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_sha1RSASign: &'static str = "1.3.14.3.2.29";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_sha: &'static str = "1.3.14.3.2.18";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_shaDSA: &'static str = "1.3.14.3.2.13";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OIWSEC_shaRSA: &'static str = "1.3.14.3.2.15";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ORGANIZATIONAL_UNIT_NAME: &'static str = "2.5.4.11";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ORGANIZATION_NAME: &'static str = "2.5.4.10";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OS_VERSION: &'static str = "1.3.6.1.4.1.311.13.2.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_OWNER: &'static str = "2.5.4.32";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PHYSICAL_DELIVERY_OFFICE_NAME: &'static str = "2.5.4.19";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PIN_RULES_CTL: &'static str = "1.3.6.1.4.1.311.10.3.32";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PIN_RULES_DOMAIN_NAME: &'static str = "1.3.6.1.4.1.311.10.3.34";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PIN_RULES_EXT: &'static str = "1.3.6.1.4.1.311.10.3.33";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PIN_RULES_LOG_END_DATE_EXT: &'static str = "1.3.6.1.4.1.311.10.3.35";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PIN_RULES_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.31";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS: &'static str = "1.2.840.113549.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_10: &'static str = "1.2.840.113549.1.10";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12: &'static str = "1.2.840.113549.1.12";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12_EXTENDED_ATTRIBUTES: &'static str = "1.3.6.1.4.1.311.17.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12_FRIENDLY_NAME_ATTR: &'static str = "1.2.840.113549.1.9.20";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12_KEY_PROVIDER_NAME_ATTR: &'static str = "1.3.6.1.4.1.311.17.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12_LOCAL_KEY_ID: &'static str = "1.2.840.113549.1.9.21";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12_PROTECTED_PASSWORD_SECRET_BAG_TYPE_ID: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12_PbeIds: &'static str = "1.2.840.113549.1.12.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12_pbeWithSHA1And128BitRC2: &'static str = "1.2.840.113549.1.12.1.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12_pbeWithSHA1And128BitRC4: &'static str = "1.2.840.113549.1.12.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12_pbeWithSHA1And2KeyTripleDES: &'static str = "1.2.840.113549.1.12.1.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12_pbeWithSHA1And3KeyTripleDES: &'static str = "1.2.840.113549.1.12.1.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12_pbeWithSHA1And40BitRC2: &'static str = "1.2.840.113549.1.12.1.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_12_pbeWithSHA1And40BitRC4: &'static str = "1.2.840.113549.1.12.1.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_1: &'static str = "1.2.840.113549.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_2: &'static str = "1.2.840.113549.1.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_3: &'static str = "1.2.840.113549.1.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_4: &'static str = "1.2.840.113549.1.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_5: &'static str = "1.2.840.113549.1.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_6: &'static str = "1.2.840.113549.1.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_7: &'static str = "1.2.840.113549.1.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_7_DATA: &'static str = "1.2.840.113549.1.7.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_7_DIGESTED: &'static str = "1.2.840.113549.1.7.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_7_ENCRYPTED: &'static str = "1.2.840.113549.1.7.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_7_ENVELOPED: &'static str = "1.2.840.113549.1.7.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_7_SIGNED: &'static str = "1.2.840.113549.1.7.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_7_SIGNEDANDENVELOPED: &'static str = "1.2.840.113549.1.7.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_8: &'static str = "1.2.840.113549.1.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_9: &'static str = "1.2.840.113549.1.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_9_CONTENT_TYPE: &'static str = "1.2.840.113549.1.9.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKCS_9_MESSAGE_DIGEST: &'static str = "1.2.840.113549.1.9.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKINIT_KP_KDC: &'static str = "1.3.6.1.5.2.3.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX: &'static str = "1.3.6.1.5.5.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_ACC_DESCR: &'static str = "1.3.6.1.5.5.7.48";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_CA_ISSUERS: &'static str = "1.3.6.1.5.5.7.48.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_CA_REPOSITORY: &'static str = "1.3.6.1.5.5.7.48.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_KP: &'static str = "1.3.6.1.5.5.7.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_KP_CLIENT_AUTH: &'static str = "1.3.6.1.5.5.7.3.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_KP_CODE_SIGNING: &'static str = "1.3.6.1.5.5.7.3.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_KP_EMAIL_PROTECTION: &'static str = "1.3.6.1.5.5.7.3.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_KP_IPSEC_END_SYSTEM: &'static str = "1.3.6.1.5.5.7.3.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_KP_IPSEC_TUNNEL: &'static str = "1.3.6.1.5.5.7.3.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_KP_IPSEC_USER: &'static str = "1.3.6.1.5.5.7.3.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_KP_OCSP_SIGNING: &'static str = "1.3.6.1.5.5.7.3.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_KP_SERVER_AUTH: &'static str = "1.3.6.1.5.5.7.3.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_KP_TIMESTAMP_SIGNING: &'static str = "1.3.6.1.5.5.7.3.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_NO_SIGNATURE: &'static str = "1.3.6.1.5.5.7.6.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_OCSP: &'static str = "1.3.6.1.5.5.7.48.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_OCSP_BASIC_SIGNED_RESPONSE: &'static str = "1.3.6.1.5.5.7.48.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_OCSP_NOCHECK: &'static str = "1.3.6.1.5.5.7.48.1.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_OCSP_NONCE: &'static str = "1.3.6.1.5.5.7.48.1.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_PE: &'static str = "1.3.6.1.5.5.7.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_POLICY_QUALIFIER_CPS: &'static str = "1.3.6.1.5.5.7.2.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_POLICY_QUALIFIER_USERNOTICE: &'static str = "1.3.6.1.5.5.7.2.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PKIX_TIME_STAMPING: &'static str = "1.3.6.1.5.5.7.48.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PLATFORM_MANIFEST_BINARY_ID: &'static str = "1.3.6.1.4.1.311.10.3.28";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_POLICY_CONSTRAINTS: &'static str = "2.5.29.36";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_POLICY_MAPPINGS: &'static str = "2.5.29.33";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_POSTAL_ADDRESS: &'static str = "2.5.4.16";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_POSTAL_CODE: &'static str = "2.5.4.17";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_POST_OFFICE_BOX: &'static str = "2.5.4.18";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PREFERRED_DELIVERY_METHOD: &'static str = "2.5.4.28";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PRESENTATION_ADDRESS: &'static str = "2.5.4.29";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PRIVATEKEY_USAGE_PERIOD: &'static str = "2.5.29.16";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PRODUCT_UPDATE: &'static str = "1.3.6.1.4.1.311.31.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PROTECTED_PROCESS_LIGHT_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.22";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_PROTECTED_PROCESS_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.24";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_QC_EU_COMPLIANCE: &'static str = "0.4.0.1862.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_QC_SSCD: &'static str = "0.4.0.1862.1.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_QC_STATEMENTS_EXT: &'static str = "1.3.6.1.5.5.7.1.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RDN_DUMMY_SIGNER: &'static str = "1.3.6.1.4.1.311.21.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RDN_TCG_PLATFORM_MANUFACTURER: &'static str = "2.23.133.2.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RDN_TCG_PLATFORM_MODEL: &'static str = "2.23.133.2.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RDN_TCG_PLATFORM_VERSION: &'static str = "2.23.133.2.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RDN_TPM_MANUFACTURER: &'static str = "2.23.133.2.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RDN_TPM_MODEL: &'static str = "2.23.133.2.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RDN_TPM_VERSION: &'static str = "2.23.133.2.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_REASON_CODE_HOLD: &'static str = "2.5.29.23";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_REGISTERED_ADDRESS: &'static str = "2.5.4.26";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_REMOVE_CERTIFICATE: &'static str = "1.3.6.1.4.1.311.10.8.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RENEWAL_CERTIFICATE: &'static str = "1.3.6.1.4.1.311.13.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_REQUEST_CLIENT_INFO: &'static str = "1.3.6.1.4.1.311.21.20";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_REQUIRE_CERT_CHAIN_POLICY: &'static str = "1.3.6.1.4.1.311.21.15";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_REVOKED_LIST_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.19";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RFC3161_counterSign: &'static str = "1.3.6.1.4.1.311.3.3.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ROLE_OCCUPANT: &'static str = "2.5.4.33";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ROOT_LIST_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION: &'static str = "1.3.6.1.4.1.311.60.3.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION: &'static str = "1.3.6.1.4.1.311.60.3.2"/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ROOT_PROGRAM_FLAGS: &'static str = "1.3.6.1.4.1.311.60.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_ROOT_PROGRAM_NO_OCSP_FAILOVER_TO_CRL: &'static str = "1.3.6.1.4.1.311.60.3.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA: &'static str = "1.2.840.113549";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSAES_OAEP: &'static str = "1.2.840.113549.1.1.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_DES_EDE3_CBC: &'static str = "1.2.840.113549.3.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_DH: &'static str = "1.2.840.113549.1.3.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_ENCRYPT: &'static str = "1.2.840.113549.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_HASH: &'static str = "1.2.840.113549.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_MD2: &'static str = "1.2.840.113549.2.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_MD2RSA: &'static str = "1.2.840.113549.1.1.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_MD4: &'static str = "1.2.840.113549.2.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_MD4RSA: &'static str = "1.2.840.113549.1.1.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_MD5: &'static str = "1.2.840.113549.2.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_MD5RSA: &'static str = "1.2.840.113549.1.1.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_MGF1: &'static str = "1.2.840.113549.1.1.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_PSPECIFIED: &'static str = "1.2.840.113549.1.1.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_RC2CBC: &'static str = "1.2.840.113549.3.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_RC4: &'static str = "1.2.840.113549.3.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_RC5_CBCPad: &'static str = "1.2.840.113549.3.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_RSA: &'static str = "1.2.840.113549.1.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_SETOAEP_RSA: &'static str = "1.2.840.113549.1.1.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_SHA1RSA: &'static str = "1.2.840.113549.1.1.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_SHA256RSA: &'static str = "1.2.840.113549.1.1.11";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_SHA384RSA: &'static str = "1.2.840.113549.1.1.12";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_SHA512RSA: &'static str = "1.2.840.113549.1.1.13";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_SMIMECapabilities: &'static str = "1.2.840.113549.1.9.15";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_SMIMEalg: &'static str = "1.2.840.113549.1.9.16.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_SMIMEalgCMS3DESwrap: &'static str = "1.2.840.113549.1.9.16.3.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_SMIMEalgCMSRC2wrap: &'static str = "1.2.840.113549.1.9.16.3.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_SMIMEalgESDH: &'static str = "1.2.840.113549.1.9.16.3.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_SSA_PSS: &'static str = "1.2.840.113549.1.1.10";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_certExtensions: &'static str = "1.2.840.113549.1.9.14";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_challengePwd: &'static str = "1.2.840.113549.1.9.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_contentType: &'static str = "1.2.840.113549.1.9.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_counterSign: &'static str = "1.2.840.113549.1.9.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_data: &'static str = "1.2.840.113549.1.7.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_digestedData: &'static str = "1.2.840.113549.1.7.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_emailAddr: &'static str = "1.2.840.113549.1.9.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_encryptedData: &'static str = "1.2.840.113549.1.7.6";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_envelopedData: &'static str = "1.2.840.113549.1.7.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_extCertAttrs: &'static str = "1.2.840.113549.1.9.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_hashedData: &'static str = "1.2.840.113549.1.7.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_messageDigest: &'static str = "1.2.840.113549.1.9.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_preferSignedData: &'static str = "1.2.840.113549.1.9.15.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_signEnvData: &'static str = "1.2.840.113549.1.7.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_signedData: &'static str = "1.2.840.113549.1.7.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_signingTime: &'static str = "1.2.840.113549.1.9.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_unstructAddr: &'static str = "1.2.840.113549.1.9.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_RSA_unstructName: &'static str = "1.2.840.113549.1.9.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SEARCH_GUIDE: &'static str = "2.5.4.14";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SEE_ALSO: &'static str = "2.5.4.34";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SERIALIZED: &'static str = "1.3.6.1.4.1.311.10.3.3.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SERVER_GATED_CRYPTO: &'static str = "1.3.6.1.4.1.311.10.3.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SGC_NETSCAPE: &'static str = "2.16.840.1.113730.4.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SITE_PIN_RULES_FLAGS_ATTR: &'static str = "1.3.6.1.4.1.311.10.4.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SITE_PIN_RULES_INDEX_ATTR: &'static str = "1.3.6.1.4.1.311.10.4.2";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SORTED_CTL: &'static str = "1.3.6.1.4.1.311.10.1.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_STATE_OR_PROVINCE_NAME: &'static str = "2.5.4.8";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_STREET_ADDRESS: &'static str = "2.5.4.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SUBJECT_ALT_NAME2: &'static str = "2.5.29.17";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SUBJECT_ALT_NAME: &'static str = "2.5.29.7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SUBJECT_DIR_ATTRS: &'static str = "2.5.29.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SUBJECT_INFO_ACCESS: &'static str = "1.3.6.1.5.5.7.1.11";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SUBJECT_KEY_IDENTIFIER: &'static str = "2.5.29.14";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SUPPORTED_APPLICATION_CONTEXT: &'static str = "2.5.4.30";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SUR_NAME: &'static str = "2.5.4.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_SYNC_ROOT_CTL_EXT: &'static str = "1.3.6.1.4.1.311.10.3.50";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_TELEPHONE_NUMBER: &'static str = "2.5.4.20";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_TELETEXT_TERMINAL_IDENTIFIER: &'static str = "2.5.4.22";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_TELEX_NUMBER: &'static str = "2.5.4.21";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_TIMESTAMP_TOKEN: &'static str = "1.2.840.113549.1.9.16.1.4";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_TITLE: &'static str = "2.5.4.12";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_TLS_FEATURES_EXT: &'static str = "1.3.6.1.5.5.7.1.24";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_USER_CERTIFICATE: &'static str = "2.5.4.36";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_USER_PASSWORD: &'static str = "2.5.4.35";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_VERISIGN_BITSTRING_6_13: &'static str = "2.16.840.1.113733.1.6.13";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_VERISIGN_ISS_STRONG_CRYPTO: &'static str = "2.16.840.1.113733.1.8.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_VERISIGN_ONSITE_JURISDICTION_HASH: &'static str = "2.16.840.1.113733.1.6.11";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_VERISIGN_PRIVATE_6_9: &'static str = "2.16.840.1.113733.1.6.9";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_WHQL_CRYPTO: &'static str = "1.3.6.1.4.1.311.10.3.5";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_WINDOWS_KITS_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.20";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_WINDOWS_RT_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.21";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_WINDOWS_SOFTWARE_EXTENSION_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.26";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_WINDOWS_STORE_SIGNER: &'static str = "1.3.6.1.4.1.311.76.3.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_WINDOWS_TCB_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.23";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_WINDOWS_THIRD_PARTY_COMPONENT_SIGNER: &'static str = "1.3.6.1.4.1.311.10.3.25";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_X21_ADDRESS: &'static str = "2.5.4.24";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_X957: &'static str = "1.2.840.10040";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_X957_DSA: &'static str = "1.2.840.10040.4.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_X957_SHA1DSA: &'static str = "1.2.840.10040.4.3";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szOID_YESNO_TRUST_ATTR: &'static str = "1.3.6.1.4.1.311.10.4.1";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szPRIV_KEY_CACHE_MAX_ITEMS: &'static str = "PrivKeyCacheMaxItems";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const szPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS: &'static str$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_COLLECTION: &'static str = "Collection";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_FILENAME: &'static str = sz_CERT_STORE_PROV_FILENAME_W;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_FILENAME_W: &'static str = "File";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_LDAP: &'static str = sz_CERT_STORE_PROV_LDAP_W;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_LDAP_W: &'static str = "Ldap";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_MEMORY: &'static str = "Memory";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_PHYSICAL: &'static str = sz_CERT_STORE_PROV_PHYSICAL_W;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_PHYSICAL_W: &'static str = "Physical";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_PKCS12: &'static str = "PKCS12";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_PKCS7: &'static str = "PKCS7";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_SERIALIZED: &'static str = "Serialized";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_SMART_CARD: &'static str = sz_CERT_STORE_PROV_SMART_CARD_W;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_SMART_CARD_W: &'static str = "SmartCard";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_SYSTEM: &'static str = sz_CERT_STORE_PROV_SYSTEM_W;$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_SYSTEM_REGISTRY: &'static str = sz_CERT_STORE_PROV_SYSTEM_REGISTRY_/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W: &'static str = "SystemRegistry";$/;" v +str vendor/winapi/src/um/wincrypt.rs /^pub const sz_CERT_STORE_PROV_SYSTEM_W: &'static str = "System";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_ABSTRACT_ATTRIBUTE: &'static str = "Abstract";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_ABSTRACT_CATEGORY: &'static str = " + ABSTRACT";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_ADMIN_ATTRIBUTE: &'static str = "Admin";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_ADMIN_CATEGORY: &'static str = " + ADMIN";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_GEOG_ATTRIBUTE: &'static str = "Geog";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_INFO_CATEGORY: &'static str = " + INFO";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_LOCATION_ATTRIBUTE: &'static str = "Loc";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_MOD_DATE_ATTRIBUTE: &'static str = "Mod-Date";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_ORG_ATTRIBUTE: &'static str = "Org";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_PROVIDER_ATTRIBUTE: &'static str = "Provider";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_RANGE_ATTRIBUTE: &'static str = "Score-range";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_SCORE_ATTRIBUTE: &'static str = "Score";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_SITE_ATTRIBUTE: &'static str = "Site";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_TIMEZONE_ATTRIBUTE: &'static str = "TZ";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_TREEWALK_ATTRIBUTE: &'static str = "treewalk";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_TTL_ATTRIBUTE: &'static str = "TTL";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_VERONICA_CATEGORY: &'static str = " + VERONICA";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_VERSION_ATTRIBUTE: &'static str = "Version";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_VIEWS_CATEGORY: &'static str = " + VIEWS";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const GOPHER_VIEW_ATTRIBUTE: &'static str = "View";$/;" v +str vendor/winapi/src/um/wininet.rs /^pub const HTTP_VERSION: &'static str = "HTTP\/1.0";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const ACCESS_DS_OBJECT_TYPE_NAME: &'static str = "Directory Service Object";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const ACCESS_DS_SOURCE: &'static str = "DS";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const DEVICEFAMILYDEVICEFORM_KEY: &'static str$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const DEVICEFAMILYDEVICEFORM_VALUE: &'static str = "DeviceForm";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const IMAGE_ARCHIVE_END: &'static str = "`\\n";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const IMAGE_ARCHIVE_HYBRIDMAP_MEMBER: &'static str = "\/\/ ";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const IMAGE_ARCHIVE_LINKER_MEMBER: &'static str = "\/ ";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const IMAGE_ARCHIVE_LONGNAMES_MEMBER: &'static str = "\/\/ ";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const IMAGE_ARCHIVE_PAD: &'static str = "\\n";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const IMAGE_ARCHIVE_START: &'static str = "!\\n";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_ACTIVATE_AS_USER_CAPABILITY: &'static str = "activateAsUser";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_ASSIGNPRIMARYTOKEN_NAME: &'static str = "SeAssignPrimaryTokenPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_AUDIT_NAME: &'static str = "SeAuditPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_BACKUP_NAME: &'static str = "SeBackupPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_CHANGE_NOTIFY_NAME: &'static str = "SeChangeNotifyPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_CONSTRAINED_IMPERSONATION_CAPABILITY: &'static str = "constrainedImpersonation";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_CREATE_GLOBAL_NAME: &'static str = "SeCreateGlobalPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_CREATE_PAGEFILE_NAME: &'static str = "SeCreatePagefilePrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_CREATE_PERMANENT_NAME: &'static str = "SeCreatePermanentPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_CREATE_SYMBOLIC_LINK_NAME: &'static str = "SeCreateSymbolicLinkPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_CREATE_TOKEN_NAME: &'static str = "SeCreateTokenPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_DEBUG_NAME: &'static str = "SeDebugPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_DELEGATE_SESSION_USER_IMPERSONATE_NAME: &'static str$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_DEVELOPMENT_MODE_NETWORK_CAPABILITY: &'static str = "developmentModeNetwork";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_ENABLE_DELEGATION_NAME: &'static str = "SeEnableDelegationPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_IMPERSONATE_NAME: &'static str = "SeImpersonatePrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_INCREASE_QUOTA_NAME: &'static str = "SeIncreaseQuotaPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_INC_BASE_PRIORITY_NAME: &'static str = "SeIncreaseBasePriorityPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_INC_WORKING_SET_NAME: &'static str = "SeIncreaseWorkingSetPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_LOAD_DRIVER_NAME: &'static str = "SeLoadDriverPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_LOCK_MEMORY_NAME: &'static str = "SeLockMemoryPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_MACHINE_ACCOUNT_NAME: &'static str = "SeMachineAccountPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_MANAGE_VOLUME_NAME: &'static str = "SeManageVolumePrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_MUMA_CAPABILITY: &'static str = "muma";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_PROF_SINGLE_PROCESS_NAME: &'static str = "SeProfileSingleProcessPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_RELABEL_NAME: &'static str = "SeRelabelPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_REMOTE_SHUTDOWN_NAME: &'static str = "SeRemoteShutdownPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_RESTORE_NAME: &'static str = "SeRestorePrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_SECURITY_NAME: &'static str = "SeSecurityPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_SESSION_IMPERSONATION_CAPABILITY: &'static str = "sessionImpersonation";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_SHUTDOWN_NAME: &'static str = "SeShutdownPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_SYNC_AGENT_NAME: &'static str = "SeSyncAgentPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_SYSTEMTIME_NAME: &'static str = "SeSystemtimePrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_SYSTEM_ENVIRONMENT_NAME: &'static str = "SeSystemEnvironmentPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_SYSTEM_PROFILE_NAME: &'static str = "SeSystemProfilePrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_TAKE_OWNERSHIP_NAME: &'static str = "SeTakeOwnershipPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_TCB_NAME: &'static str = "SeTcbPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_TIME_ZONE_NAME: &'static str = "SeTimeZonePrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_TRUSTED_CREDMAN_ACCESS_NAME: &'static str = "SeTrustedCredManAccessPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_UNDOCK_NAME: &'static str = "SeUndockPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SE_UNSOLICITED_INPUT_NAME: &'static str = "SeUnsolicitedInputPrivilege";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const SMB_CCF_APP_INSTANCE_EA_NAME: &'static str = "ClusteredApplicationInstance";$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const UNIFIEDBUILDREVISION_KEY: &'static str$/;" v +str vendor/winapi/src/um/winnt.rs /^pub const UNIFIEDBUILDREVISION_VALUE: &'static str = "UBR";$/;" v +str vendor/winapi/src/um/winsafer.rs /^pub const SRP_POLICY_APPX: &'static str = "APPX";$/;" v +str vendor/winapi/src/um/winsafer.rs /^pub const SRP_POLICY_DLL: &'static str = "DLL";$/;" v +str vendor/winapi/src/um/winsafer.rs /^pub const SRP_POLICY_EXE: &'static str = "EXE";$/;" v +str vendor/winapi/src/um/winsafer.rs /^pub const SRP_POLICY_MANAGEDINSTALLER: &'static str = "MANAGEDINSTALLER";$/;" v +str vendor/winapi/src/um/winsafer.rs /^pub const SRP_POLICY_MSI: &'static str = "MSI";$/;" v +str vendor/winapi/src/um/winsafer.rs /^pub const SRP_POLICY_NOV2: &'static str = "IGNORESRPV2";$/;" v +str vendor/winapi/src/um/winsafer.rs /^pub const SRP_POLICY_SCRIPT: &'static str = "SCRIPT";$/;" v +str vendor/winapi/src/um/winsafer.rs /^pub const SRP_POLICY_SHELL: &'static str = "SHELL";$/;" v +str vendor/winapi/src/um/winsafer.rs /^pub const SRP_POLICY_WLDPCONFIGCI: &'static str = "WLDPCONFIGCI";$/;" v +str vendor/winapi/src/um/winsafer.rs /^pub const SRP_POLICY_WLDPMSI: &'static str = "WLDPMSI";$/;" v +str vendor/winapi/src/um/winsafer.rs /^pub const SRP_POLICY_WLDPSCRIPT: &'static str = "WLDPSCRIPT";$/;" v +str vendor/winapi/src/um/winsock2.rs /^pub const SERVICE_TYPE_VALUE_IPXPORT: &'static str = "IpxSocket";$/;" v +str vendor/winapi/src/um/winsock2.rs /^pub const SERVICE_TYPE_VALUE_OBJECTID: &'static str = "ObjectId";$/;" v +str vendor/winapi/src/um/winsock2.rs /^pub const SERVICE_TYPE_VALUE_SAPID: &'static str = "SapId";$/;" v +str vendor/winapi/src/um/winsock2.rs /^pub const SERVICE_TYPE_VALUE_TCPPORT: &'static str = "TcpPort";$/;" v +str vendor/winapi/src/um/winsock2.rs /^pub const SERVICE_TYPE_VALUE_UDPPORT: &'static str = "UdpPort";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const BIDI_ACTION_ENUM_SCHEMA: &'static str = "EnumSchema";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const BIDI_ACTION_GET: &'static str = "Get";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const BIDI_ACTION_GET_ALL: &'static str = "GetAll";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const BIDI_ACTION_GET_WITH_ARGUMENT: &'static str = "GetWithArgument";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const BIDI_ACTION_SET: &'static str = "Set";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_ALLOW_USER_MANAGEFORMS: &'static str = "AllowUserManageForms";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_ARCHITECTURE: &'static str = "Architecture";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_BEEP_ENABLED: &'static str = "BeepEnabled";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_DEFAULT_SPOOL_DIRECTORY: &'static str = "DefaultSpoolDirectory";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_DNS_MACHINE_NAME: &'static str = "DNSMachineName";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_DS_PRESENT: &'static str = "DsPresent";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_DS_PRESENT_FOR_USER: &'static str = "DsPresentForUser";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_EVENT_LOG: &'static str = "EventLog";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_MAJOR_VERSION: &'static str = "MajorVersion";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_MINOR_VERSION: &'static str = "MinorVersion";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_NET_POPUP: &'static str = "NetPopup";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_NET_POPUP_TO_COMPUTER: &'static str = "NetPopupToComputer";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_OS_VERSION: &'static str = "OSVersion";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_OS_VERSIONEX: &'static str = "OSVersionEx";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_PORT_THREAD_PRIORITY: &'static str = "PortThreadPriority";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_PORT_THREAD_PRIORITY_DEFAULT: &'static str = "PortThreadPriorityDefault";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_PRINT_DRIVER_ISOLATION_GROUPS_SEPARATOR: &'static str = "\\\\";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_REMOTE_FAX: &'static str = "RemoteFax";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_RESTART_JOB_ON_POOL_ENABLED: &'static str = "RestartJobOnPoolEnabled";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_RESTART_JOB_ON_POOL_ERROR: &'static str = "RestartJobOnPoolError";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_RETRY_POPUP: &'static str = "RetryPopup";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_SCHEDULER_THREAD_PRIORITY: &'static str = "SchedulerThreadPriority";$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT: &'static str$/;" v +str vendor/winapi/src/um/winspool.rs /^pub const SPLREG_WEBSHAREMGMT: &'static str = "WebShareMgmt";$/;" v +str vendor/winapi/src/um/wlanihv.rs /^pub const IHV_INIT_FUNCTION_NAME: &'static str = "Dot11ExtIhvInitService";$/;" v +str vendor/winapi/src/um/wlanihv.rs /^pub const IHV_INIT_VS_FUNCTION_NAME: &'static str = "Dot11ExtIhvInitVirtualStation";$/;" v +str vendor/winapi/src/um/wlanihv.rs /^pub const IHV_VERSION_FUNCTION_NAME: &'static str = "Dot11ExtIhvGetVersionInfo";$/;" v +str_opt vendor/nix/src/mount/bsd.rs /^ pub fn str_opt($/;" P implementation:Nmount +str_opt_owned vendor/nix/src/mount/bsd.rs /^ pub fn str_opt_owned(&mut self, name: &P1, val: &P2) -> &mut Self$/;" P implementation:Nmount +stralign vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "stralign")] pub mod stralign;$/;" n +stralloc support/man2html.c /^stralloc(int len)$/;" f typeref:typename:char * file: +strcasecmp lib/intl/localealias.c /^# define strcasecmp /;" d file: +strcasecmp lib/intl/os2compat.h /^#define strcasecmp /;" d +strcasecmp lib/sh/strcasecmp.c /^strcasecmp (string1, string2)$/;" f +strcasecmp r_bash/src/lib.rs /^ pub fn strcasecmp($/;" f +strcasecmp r_glob/src/lib.rs /^ pub fn strcasecmp($/;" f +strcasecmp r_readline/src/lib.rs /^ pub fn strcasecmp($/;" f +strcasecmp vendor/libc/src/solid/mod.rs /^ pub fn strcasecmp(arg1: *const c_char, arg2: *const c_char) -> c_int;$/;" f +strcasecmp vendor/libc/src/unix/mod.rs /^ pub fn strcasecmp(s1: *const c_char, s2: *const c_char) -> c_int;$/;" f +strcasecmp vendor/libc/src/vxworks/mod.rs /^ pub fn strcasecmp(s1: *const c_char, s2: *const c_char) -> c_int;$/;" f +strcasecmp vendor/libc/src/wasi.rs /^ pub fn strcasecmp(s1: *const c_char, s2: *const c_char) -> c_int;$/;" f +strcasecmp vendor/libc/src/windows/gnu/mod.rs /^ pub fn strcasecmp(s1: *const ::c_char, s2: *const ::c_char) -> ::c_int;$/;" f +strcasecmp.o lib/sh/Makefile.in /^strcasecmp.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/chartypes.h$/;" t +strcasecmp.o lib/sh/Makefile.in /^strcasecmp.o: ${BASHINCDIR}\/stdc.h ${topdir}\/bashansi.h$/;" t +strcasecmp.o lib/sh/Makefile.in /^strcasecmp.o: ${BUILD_DIR}\/config.h$/;" t +strcasecmp.o lib/sh/Makefile.in /^strcasecmp.o: strcasecmp.c$/;" t +strcasecmp_l r_bash/src/lib.rs /^ pub fn strcasecmp_l($/;" f +strcasecmp_l r_glob/src/lib.rs /^ pub fn strcasecmp_l($/;" f +strcasecmp_l r_readline/src/lib.rs /^ pub fn strcasecmp_l($/;" f +strcasecmp_l vendor/libc/src/unix/solarish/mod.rs /^ pub fn strcasecmp_l(s1: *const ::c_char, s2: *const ::c_char, loc: ::locale_t) -> ::c_int;$/;" f +strcasestr builtins_rust/common/src/lib.rs /^ fn strcasestr(s1: *const c_char, s2: *const c_char) -> *mut c_char;$/;" f +strcasestr lib/sh/strcasestr.c /^strcasestr (s1, s2)$/;" f +strcasestr r_bash/src/lib.rs /^ pub fn strcasestr($/;" f +strcasestr r_glob/src/lib.rs /^ pub fn strcasestr($/;" f +strcasestr r_readline/src/lib.rs /^ pub fn strcasestr($/;" f +strcasestr vendor/libc/src/solid/mod.rs /^ pub fn strcasestr(arg1: *const c_char, arg2: *const c_char) -> *mut c_char;$/;" f +strcasestr vendor/libc/src/unix/mod.rs /^ pub fn strcasestr(cs: *const c_char, ct: *const c_char) -> *mut c_char;$/;" f +strcasestr vendor/libc/src/wasi.rs /^ pub fn strcasestr(cs: *const c_char, ct: *const c_char) -> *mut c_char;$/;" f +strcasestr.o lib/sh/Makefile.in /^strcasestr.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/chartypes.h$/;" t +strcasestr.o lib/sh/Makefile.in /^strcasestr.o: ${BASHINCDIR}\/stdc.h ${topdir}\/bashansi.h$/;" t +strcasestr.o lib/sh/Makefile.in /^strcasestr.o: ${BUILD_DIR}\/config.h$/;" t +strcasestr.o lib/sh/Makefile.in /^strcasestr.o: strcasestr.c$/;" t +strcat r_bash/src/lib.rs /^ pub fn strcat($/;" f +strcat r_glob/src/lib.rs /^ pub fn strcat($/;" f +strcat r_readline/src/lib.rs /^ pub fn strcat($/;" f +strcat vendor/libc/src/fuchsia/mod.rs /^ pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;$/;" f +strcat vendor/libc/src/solid/mod.rs /^ pub fn strcat(arg1: *mut c_char, arg2: *const c_char) -> *mut c_char;$/;" f +strcat vendor/libc/src/unix/mod.rs /^ pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;$/;" f +strcat vendor/libc/src/vxworks/mod.rs /^ pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;$/;" f +strcat vendor/libc/src/wasi.rs /^ pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;$/;" f +strcat vendor/libc/src/windows/mod.rs /^ pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;$/;" f +strchr lib/sh/oslib.c /^strchr (string, c)$/;" f +strchr r_bash/src/lib.rs /^ pub fn strchr($/;" f +strchr r_glob/src/lib.rs /^ pub fn strchr($/;" f +strchr r_readline/src/lib.rs /^ pub fn strchr($/;" f +strchr vendor/libc/src/fuchsia/mod.rs /^ pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;$/;" f +strchr vendor/libc/src/solid/mod.rs /^ pub fn strchr(arg1: *const c_char, arg2: c_int) -> *mut c_char;$/;" f +strchr vendor/libc/src/unix/mod.rs /^ pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;$/;" f +strchr vendor/libc/src/vxworks/mod.rs /^ pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;$/;" f +strchr vendor/libc/src/wasi.rs /^ pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;$/;" f +strchr vendor/libc/src/windows/mod.rs /^ pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;$/;" f +strchrnul lib/sh/strchrnul.c /^strchrnul (s, c_in)$/;" f +strchrnul r_bash/src/lib.rs /^ pub fn strchrnul($/;" f +strchrnul r_glob/src/lib.rs /^ pub fn strchrnul($/;" f +strchrnul r_readline/src/lib.rs /^ pub fn strchrnul($/;" f +strchrnul.o lib/sh/Makefile.in /^strchrnul.o: ${BUILD_DIR}\/config.h$/;" t +strchrnul.o lib/sh/Makefile.in /^strchrnul.o: strchrnul.c$/;" t +strcmp builtins_rust/shopt/src/lib.rs /^ fn strcmp(_: *const libc::c_char, _: *const libc::c_char) -> i32;$/;" f +strcmp r_bash/src/lib.rs /^ pub fn strcmp($/;" f +strcmp r_glob/src/lib.rs /^ pub fn strcmp($/;" f +strcmp r_readline/src/lib.rs /^ pub fn strcmp($/;" f +strcmp vendor/libc/src/fuchsia/mod.rs /^ pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;$/;" f +strcmp vendor/libc/src/solid/mod.rs /^ pub fn strcmp(arg1: *const c_char, arg2: *const c_char) -> c_int;$/;" f +strcmp vendor/libc/src/unix/mod.rs /^ pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;$/;" f +strcmp vendor/libc/src/vxworks/mod.rs /^ pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;$/;" f +strcmp vendor/libc/src/wasi.rs /^ pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;$/;" f +strcmp vendor/libc/src/windows/mod.rs /^ pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;$/;" f +strcoll r_bash/src/lib.rs /^ pub fn strcoll($/;" f +strcoll r_glob/src/lib.rs /^ pub fn strcoll($/;" f +strcoll r_readline/src/lib.rs /^ pub fn strcoll($/;" f +strcoll vendor/libc/src/fuchsia/mod.rs /^ pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;$/;" f +strcoll vendor/libc/src/solid/mod.rs /^ pub fn strcoll(arg1: *const c_char, arg2: *const c_char) -> c_int;$/;" f +strcoll vendor/libc/src/unix/mod.rs /^ pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;$/;" f +strcoll vendor/libc/src/vxworks/mod.rs /^ pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;$/;" f +strcoll vendor/libc/src/wasi.rs /^ pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;$/;" f +strcoll vendor/libc/src/windows/mod.rs /^ pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;$/;" f +strcoll_l r_bash/src/lib.rs /^ pub fn strcoll_l($/;" f +strcoll_l r_glob/src/lib.rs /^ pub fn strcoll_l($/;" f +strcoll_l r_readline/src/lib.rs /^ pub fn strcoll_l($/;" f +strcoll_l vendor/libc/src/solid/mod.rs /^ pub fn strcoll_l(arg1: *const c_char, arg2: *const c_char, arg3: locale_t) -> c_int;$/;" f +strcpy builtins_rust/enable/src/lib.rs /^ fn strcpy(_: *mut libc::c_char, _: *const libc::c_char) -> *mut libc::c_char;$/;" f +strcpy builtins_rust/shopt/src/lib.rs /^ fn strcpy(_: *mut libc::c_char, _: *const libc::c_char) -> *mut libc::c_char;$/;" f +strcpy r_bash/src/lib.rs /^ pub fn strcpy($/;" f +strcpy r_glob/src/lib.rs /^ pub fn strcpy($/;" f +strcpy r_readline/src/lib.rs /^ pub fn strcpy($/;" f +strcpy vendor/libc/src/fuchsia/mod.rs /^ pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;$/;" f +strcpy vendor/libc/src/solid/mod.rs /^ pub fn strcpy(arg1: *mut c_char, arg2: *const c_char) -> *mut c_char;$/;" f +strcpy vendor/libc/src/unix/mod.rs /^ pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;$/;" f +strcpy vendor/libc/src/vxworks/mod.rs /^ pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;$/;" f +strcpy vendor/libc/src/wasi.rs /^ pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;$/;" f +strcpy vendor/libc/src/windows/mod.rs /^ pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;$/;" f +strcreplace r_bash/src/lib.rs /^ pub fn strcreplace($/;" f +strcreplace stringlib.c /^strcreplace (string, c, text, do_glob)$/;" f +strcspn r_bash/src/lib.rs /^ pub fn strcspn($/;" f +strcspn r_glob/src/lib.rs /^ pub fn strcspn($/;" f +strcspn r_readline/src/lib.rs /^ pub fn strcspn($/;" f +strcspn vendor/libc/src/fuchsia/mod.rs /^ pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;$/;" f +strcspn vendor/libc/src/solid/mod.rs /^ pub fn strcspn(arg1: *const c_char, arg2: *const c_char) -> size_t;$/;" f +strcspn vendor/libc/src/unix/mod.rs /^ pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;$/;" f +strcspn vendor/libc/src/vxworks/mod.rs /^ pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;$/;" f +strcspn vendor/libc/src/wasi.rs /^ pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;$/;" f +strcspn vendor/libc/src/windows/mod.rs /^ pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;$/;" f +strdef support/man2html.c /^static STRDEF *chardef, *strdef, *defdef;$/;" v typeref:typename:STRDEF * file: +strdup lib/intl/bindtextdom.c /^# define strdup(/;" d file: +strdup lib/intl/textdomain.c /^# define strdup(/;" d file: +strdup lib/sh/strdup.c /^strdup (s)$/;" f +strdup r_bash/src/lib.rs /^ pub fn strdup(__s: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +strdup r_glob/src/lib.rs /^ pub fn strdup(__s: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +strdup r_readline/src/lib.rs /^ pub fn strdup(__s: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +strdup vendor/libc/src/fuchsia/mod.rs /^ pub fn strdup(cs: *const c_char) -> *mut c_char;$/;" f +strdup vendor/libc/src/solid/mod.rs /^ pub fn strdup(arg1: *const c_char) -> *mut c_char;$/;" f +strdup vendor/libc/src/unix/mod.rs /^ pub fn strdup(cs: *const c_char) -> *mut c_char;$/;" f +strdup vendor/libc/src/vxworks/mod.rs /^ pub fn strdup(cs: *const c_char) -> *mut c_char;$/;" f +strdup vendor/libc/src/wasi.rs /^ pub fn strdup(cs: *const c_char) -> *mut c_char;$/;" f +strdup vendor/libc/src/windows/mod.rs /^ pub fn strdup(cs: *const c_char) -> *mut c_char;$/;" f +strduplicate support/man2html.c /^strduplicate(char *from)$/;" f typeref:typename:char * file: +stream vendor/fluent-fallback/src/cache.rs /^ pub fn stream(&self) -> AsyncCacheStream<'_, S, R> {$/;" f +stream vendor/fluent-fallback/src/cache.rs /^ stream: PinCell,$/;" m struct:AsyncCache +stream vendor/futures-core/src/lib.rs /^pub mod stream;$/;" n +stream vendor/futures-executor/src/local_pool.rs /^ stream: S,$/;" m struct:BlockingStream +stream vendor/futures-util/src/lib.rs /^pub mod stream;$/;" n +stream vendor/futures-util/src/sink/send_all.rs /^ stream: Fuse<&'a mut St>,$/;" m struct:SendAll +stream vendor/futures-util/src/stream/mod.rs /^mod stream;$/;" n +stream vendor/futures-util/src/stream/stream/into_future.rs /^ stream: Option,$/;" m struct:StreamFuture +stream vendor/futures-util/src/stream/stream/next.rs /^ stream: &'a mut St,$/;" m struct:Next +stream vendor/futures-util/src/stream/stream/select_next_some.rs /^ stream: &'a mut St,$/;" m struct:SelectNextSome +stream vendor/futures-util/src/stream/try_stream/try_next.rs /^ stream: &'a mut St,$/;" m struct:TryNext +stream vendor/futures/tests/auto_traits.rs /^pub mod stream {$/;" n +stream vendor/futures/tests/object_safety.rs /^fn stream() {$/;" f +stream vendor/futures/tests/stream_split.rs /^ stream: T,$/;" m struct:test_split::Join +stream vendor/nix/test/sys/test_socket.rs /^ pub fn stream() {$/;" f module:recvfrom +stream vendor/proc-macro2/src/fallback.rs /^ pub fn stream(&self) -> TokenStream {$/;" P implementation:Group +stream vendor/proc-macro2/src/fallback.rs /^ stream: TokenStream,$/;" m struct:Group +stream vendor/proc-macro2/src/lib.rs /^ pub fn stream(&self) -> TokenStream {$/;" P implementation:Group +stream vendor/proc-macro2/src/wrapper.rs /^ pub fn stream(&self) -> TokenStream {$/;" P implementation:Group +stream vendor/proc-macro2/src/wrapper.rs /^ stream: proc_macro::TokenStream,$/;" m struct:DeferredTokenStream +stream vendor/syn/tests/repo/progress.rs /^ stream: R,$/;" m struct:Progress +stream_on_stack r_bash/src/lib.rs /^ pub fn stream_on_stack(arg1: stream_type) -> ::std::os::raw::c_int;$/;" f +stream_poll_fn vendor/futures/tests_disabled/stream.rs /^fn stream_poll_fn() {$/;" f +stream_position vendor/futures-util/src/io/mod.rs /^ fn stream_position(&mut self) -> Seek<'_, Self>$/;" P interface:AsyncSeekExt +stream_select vendor/futures-macro/src/lib.rs /^mod stream_select;$/;" n +stream_select vendor/futures-macro/src/stream_select.rs /^pub(crate) fn stream_select(input: TokenStream) -> Result {$/;" f +stream_select vendor/futures-util/src/async_await/stream_select_mod.rs /^macro_rules! stream_select {$/;" M +stream_select vendor/futures/tests/async_await_macros.rs /^fn stream_select() {$/;" f +stream_select_internal vendor/futures-macro/src/lib.rs /^pub fn stream_select_internal(input: TokenStream) -> TokenStream {$/;" f +stream_select_mod vendor/futures-util/src/async_await/mod.rs /^mod stream_select_mod;$/;" n +stream_type input.h /^enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream};$/;" g +stream_type r_bash/src/lib.rs /^pub type stream_type = u32;$/;" t +strerror builtins_rust/exec/src/lib.rs /^ fn strerror(e: i32) -> *mut c_char;$/;" f +strerror builtins_rust/fc/src/lib.rs /^ fn strerror(e: i32) -> *mut c_char;$/;" f +strerror builtins_rust/ulimit/src/lib.rs /^ fn strerror(_: i32) -> *mut libc::c_char;$/;" f +strerror lib/sh/strerror.c /^strerror (e)$/;" f +strerror mksyntax.c /^strerror (e)$/;" f +strerror r_bash/src/lib.rs /^ pub fn strerror(__errnum: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +strerror r_glob/src/lib.rs /^ pub fn strerror(__errnum: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +strerror r_readline/src/lib.rs /^ pub fn strerror(__errnum: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +strerror support/man2html.c /^strerror(int e)$/;" f typeref:typename:char * file: +strerror vendor/libc/src/fuchsia/mod.rs /^ pub fn strerror(n: c_int) -> *mut c_char;$/;" f +strerror vendor/libc/src/solid/mod.rs /^ pub fn strerror(arg1: c_int) -> *mut c_char;$/;" f +strerror vendor/libc/src/unix/mod.rs /^ pub fn strerror(n: c_int) -> *mut c_char;$/;" f +strerror vendor/libc/src/vxworks/mod.rs /^ pub fn strerror(n: c_int) -> *mut c_char;$/;" f +strerror vendor/libc/src/wasi.rs /^ pub fn strerror(n: c_int) -> *mut c_char;$/;" f +strerror vendor/libc/src/windows/mod.rs /^ pub fn strerror(n: c_int) -> *mut c_char;$/;" f +strerror.o lib/sh/Makefile.in /^strerror.o: ${BUILD_DIR}\/config.h$/;" t +strerror.o lib/sh/Makefile.in /^strerror.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +strerror.o lib/sh/Makefile.in /^strerror.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +strerror.o lib/sh/Makefile.in /^strerror.o: ${topdir}\/bashtypes.h$/;" t +strerror.o lib/sh/Makefile.in /^strerror.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +strerror.o lib/sh/Makefile.in /^strerror.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/confty/;" t +strerror.o lib/sh/Makefile.in /^strerror.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +strerror.o lib/sh/Makefile.in /^strerror.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp./;" t +strerror.o lib/sh/Makefile.in /^strerror.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +strerror.o lib/sh/Makefile.in /^strerror.o: strerror.c$/;" t +strerror_l r_bash/src/lib.rs /^ pub fn strerror_l($/;" f +strerror_l r_glob/src/lib.rs /^ pub fn strerror_l($/;" f +strerror_l r_readline/src/lib.rs /^ pub fn strerror_l($/;" f +strerror_l vendor/libc/src/solid/mod.rs /^ pub fn strerror_l(arg1: c_int, arg2: locale_t) -> *mut c_char;$/;" f +strerror_r r_bash/src/lib.rs /^ pub fn strerror_r($/;" f +strerror_r r_glob/src/lib.rs /^ pub fn strerror_r($/;" f +strerror_r r_readline/src/lib.rs /^ pub fn strerror_r($/;" f +strerror_r vendor/libc/src/fuchsia/mod.rs /^ pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +strerror_r vendor/libc/src/solid/mod.rs /^ pub fn strerror_r(arg1: c_int, arg2: *mut c_char, arg3: size_t) -> c_int;$/;" f +strerror_r vendor/libc/src/unix/bsd/mod.rs /^ pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +strerror_r vendor/libc/src/unix/haiku/mod.rs /^ pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +strerror_r vendor/libc/src/unix/hermit/mod.rs /^ pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +strerror_r vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +strerror_r vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +strerror_r vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +strerror_r vendor/libc/src/unix/newlib/mod.rs /^ pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +strerror_r vendor/libc/src/unix/redox/mod.rs /^ pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +strerror_r vendor/libc/src/unix/solarish/mod.rs /^ pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +strerror_r vendor/libc/src/vxworks/mod.rs /^ pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +strerror_r vendor/libc/src/wasi.rs /^ pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +strescape error.c /^strescape (str)$/;" f +strescape r_bash/src/lib.rs /^ pub fn strescape(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +stresep vendor/libc/src/solid/mod.rs /^ pub fn stresep(arg1: *mut *mut c_char, arg2: *const c_char, arg3: c_int) -> *mut c_char;$/;" f +stress vendor/futures-channel/tests/mpsc.rs /^ fn stress(capacity: usize) {$/;" f function:stress_poll_ready +stress vendor/futures/tests/ready_queue.rs /^fn stress() {$/;" f +stress_close_receiver vendor/futures-channel/tests/mpsc.rs /^fn stress_close_receiver() {$/;" f +stress_close_receiver_iter vendor/futures-channel/tests/mpsc.rs /^fn stress_close_receiver_iter() {$/;" f +stress_drop_sender vendor/futures-channel/tests/mpsc.rs /^fn stress_drop_sender() {$/;" f +stress_poll_ready vendor/futures-channel/tests/mpsc.rs /^fn stress_poll_ready() {$/;" f +stress_poll_ready_sender vendor/futures-channel/tests/mpsc.rs /^async fn stress_poll_ready_sender(mut sender: mpsc::Sender, count: u32) {$/;" f +stress_receiver_multi_task_bounded_hard vendor/futures-channel/tests/mpsc.rs /^fn stress_receiver_multi_task_bounded_hard() {$/;" f +stress_shared_bounded_hard vendor/futures-channel/tests/mpsc.rs /^fn stress_shared_bounded_hard() {$/;" f +stress_shared_unbounded vendor/futures-channel/tests/mpsc.rs /^fn stress_shared_unbounded() {$/;" f +stress_try_send_as_receiver_closes vendor/futures-channel/tests/mpsc-close.rs /^fn stress_try_send_as_receiver_closes() {$/;" f +strfromd r_bash/src/lib.rs /^ pub fn strfromd($/;" f +strfromd r_glob/src/lib.rs /^ pub fn strfromd($/;" f +strfromd r_readline/src/lib.rs /^ pub fn strfromd($/;" f +strfromf r_bash/src/lib.rs /^ pub fn strfromf($/;" f +strfromf r_glob/src/lib.rs /^ pub fn strfromf($/;" f +strfromf r_readline/src/lib.rs /^ pub fn strfromf($/;" f +strfromf32 r_bash/src/lib.rs /^ pub fn strfromf32($/;" f +strfromf32 r_glob/src/lib.rs /^ pub fn strfromf32($/;" f +strfromf32 r_readline/src/lib.rs /^ pub fn strfromf32($/;" f +strfromf32x r_bash/src/lib.rs /^ pub fn strfromf32x($/;" f +strfromf32x r_glob/src/lib.rs /^ pub fn strfromf32x($/;" f +strfromf32x r_readline/src/lib.rs /^ pub fn strfromf32x($/;" f +strfromf64 r_bash/src/lib.rs /^ pub fn strfromf64($/;" f +strfromf64 r_glob/src/lib.rs /^ pub fn strfromf64($/;" f +strfromf64 r_readline/src/lib.rs /^ pub fn strfromf64($/;" f +strfromf64x r_bash/src/lib.rs /^ pub fn strfromf64x($/;" f +strfromf64x r_glob/src/lib.rs /^ pub fn strfromf64x($/;" f +strfromf64x r_readline/src/lib.rs /^ pub fn strfromf64x($/;" f +strfroml r_bash/src/lib.rs /^ pub fn strfroml($/;" f +strfroml r_glob/src/lib.rs /^ pub fn strfroml($/;" f +strfroml r_readline/src/lib.rs /^ pub fn strfroml($/;" f +strfry r_bash/src/lib.rs /^ pub fn strfry(__string: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +strfry r_glob/src/lib.rs /^ pub fn strfry(__string: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +strfry r_readline/src/lib.rs /^ pub fn strfry(__string: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +strftime builtins_rust/history/src/intercdep.rs /^ pub fn strftime(s: *mut c_char, maxsize:size_t, format: *const c_char, timeptr: *const libc:/;" f +strftime builtins_rust/printf/src/intercdep.rs /^ pub fn strftime(s: *mut c_char, maxsize: size_t, format: *const c_char, timeptr: *const libc/;" f +strftime lib/sh/strftime.c /^strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)$/;" f typeref:typename:size_t +strftime r_bash/src/lib.rs /^ pub fn strftime($/;" f +strftime r_readline/src/lib.rs /^ pub fn strftime($/;" f +strftime vendor/libc/src/solid/mod.rs /^ pub fn strftime($/;" f +strftime vendor/libc/src/wasi.rs /^ pub fn strftime(a: *mut c_char, b: size_t, c: *const c_char, d: *const tm) -> size_t;$/;" f +strftime.o lib/sh/Makefile.in /^strftime.o: ${BUILD_DIR}\/config.h$/;" t +strftime.o lib/sh/Makefile.in /^strftime.o: strftime.c$/;" t +strftime_l r_bash/src/lib.rs /^ pub fn strftime_l($/;" f +strftime_l r_readline/src/lib.rs /^ pub fn strftime_l($/;" f +strgrow support/man2html.c /^strgrow(char *old, int len)$/;" f typeref:typename:char * file: +stricmp vendor/libc/src/windows/msvc/mod.rs /^ pub fn stricmp(s1: *const ::c_char, s2: *const ::c_char) -> ::c_int;$/;" f +strict vendor/once_cell/src/imp_std.rs /^mod strict {$/;" n +strict-posix-default configure.ac /^AC_ARG_ENABLE(strict-posix-default, AC_HELP_STRING([--enable-strict-posix-default], [configure u/;" e +string input.h /^ char *string;$/;" m union:__anon9f26d24b010a typeref:typename:char * +string lib/glob/sm_loop.c /^ CHAR *string;$/;" m struct:STRUCT typeref:typename:CHAR * file: +string lib/readline/colors.h /^ const char *string;$/;" m struct:bin_str typeref:typename:const char * +string lib/readline/macro.c /^ char *string;$/;" m struct:saved_macro typeref:typename:char * file: +string r_readline/src/lib.rs /^ pub string: *const ::std::os::raw::c_char,$/;" m struct:bin_str +string vendor/async-trait/tests/test.rs /^ string: String,$/;" m struct:issue17::Struct +string vendor/proc-macro2/src/fallback.rs /^ pub fn string(t: &str) -> Literal {$/;" P implementation:Literal +string vendor/proc-macro2/src/lib.rs /^ pub fn string(string: &str) -> Literal {$/;" P implementation:Literal +string vendor/proc-macro2/src/parse.rs /^fn string(input: Cursor) -> Result {$/;" f +string vendor/proc-macro2/src/wrapper.rs /^ pub fn string(t: &str) -> Literal {$/;" P implementation:Literal +string_desc lib/intl/gmo.h /^struct string_desc$/;" s +string_extract subst.c /^string_extract (string, sindex, charlist, flags)$/;" f file: +string_extract_double_quoted subst.c /^string_extract_double_quoted (string, sindex, flags)$/;" f file: +string_extract_single_quoted subst.c /^string_extract_single_quoted (string, sindex)$/;" f file: +string_extract_verbatim subst.c /^string_extract_verbatim (string, slen, sindex, charlist, flags)$/;" f file: +string_gcd bracecomp.c /^string_gcd (s1, s2)$/;" f file: +string_list builtins_rust/eval/src/lib.rs /^ fn string_list(list: *mut WordList) -> *mut c_char;$/;" f +string_list builtins_rust/history/src/intercdep.rs /^ pub fn string_list(list: *mut WordList) -> *mut c_char;$/;" f +string_list builtins_rust/rlet/src/intercdep.rs /^ pub fn string_list(list: *mut WordList) -> *mut c_char;$/;" f +string_list r_bash/src/lib.rs /^ pub fn string_list(arg1: *mut WORD_LIST) -> *mut ::std::os::raw::c_char;$/;" f +string_list subst.c /^string_list (list)$/;" f +string_list_dollar_at r_bash/src/lib.rs /^ pub fn string_list_dollar_at($/;" f +string_list_dollar_at subst.c /^string_list_dollar_at (list, quoted, flags)$/;" f +string_list_dollar_star r_bash/src/lib.rs /^ pub fn string_list_dollar_star($/;" f +string_list_dollar_star subst.c /^string_list_dollar_star (list, quoted, flags)$/;" f +string_list_internal r_bash/src/lib.rs /^ pub fn string_list_internal($/;" f +string_list_internal subst.c /^string_list_internal (list, sep)$/;" f +string_list_pos_params r_bash/src/lib.rs /^ pub fn string_list_pos_params($/;" f +string_list_pos_params subst.c /^string_list_pos_params (pchar, list, quoted, pflags)$/;" f +string_quote_removal r_bash/src/lib.rs /^ pub fn string_quote_removal($/;" f +string_quote_removal subst.c /^string_quote_removal (string, quoted)$/;" f +string_rest_of_args r_bash/src/lib.rs /^ pub fn string_rest_of_args(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +string_rest_of_args subst.c /^string_rest_of_args (dollar_star)$/;" f +string_space_act lib/intl/localealias.c /^static size_t string_space_act;$/;" v typeref:typename:size_t file: +string_space_max lib/intl/localealias.c /^static size_t string_space_max;$/;" v typeref:typename:size_t file: +string_to_flags vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn string_to_flags($/;" f +string_to_rlimtype builtins_rust/ulimit/src/lib.rs /^ fn string_to_rlimtype(_: *mut libc::c_char) -> rlim_t;$/;" f +string_to_rlimtype general.c /^string_to_rlimtype (s)$/;" f +string_to_rlimtype r_bash/src/lib.rs /^ pub fn string_to_rlimtype(arg1: *mut ::std::os::raw::c_char) -> rlim_t;$/;" f +string_to_rlimtype r_glob/src/lib.rs /^ pub fn string_to_rlimtype(arg1: *mut ::std::os::raw::c_char) -> rlim_t;$/;" f +string_to_rlimtype r_readline/src/lib.rs /^ pub fn string_to_rlimtype(arg1: *mut ::std::os::raw::c_char) -> rlim_t;$/;" f +string_transform subst.c /^string_transform (xc, v, s)$/;" f file: +string_until support/texi2html /^sub string_until {$/;" s +string_var_assignment subst.c /^string_var_assignment (v, s)$/;" f file: +string_varlist lib/readline/bind.c /^} string_varlist[] = {$/;" v typeref:typename:const struct __anon7144754c0308[] +string_varname lib/readline/bind.c /^string_varname (int i)$/;" f typeref:typename:const char * file: +stringapiset vendor/winapi/src/um/mod.rs /^#[cfg(feature = "stringapiset")] pub mod stringapiset;$/;" n +stringify vendor/bitflags/tests/compile-pass/redefinition/stringify.rs /^macro_rules! stringify {$/;" M +stringify_punct vendor/syn/src/custom_punctuation.rs /^macro_rules! stringify_punct {$/;" M +stringify_value vendor/fluent-bundle/src/bundle.rs /^ fn stringify_value($/;" P implementation:IntlLangMemoizer +stringify_value vendor/fluent-bundle/src/concurrent.rs /^ fn stringify_value(&self, value: &dyn FluentType) -> std::borrow::Cow<'static, str> {$/;" P implementation:IntlLangMemoizer +stringify_value vendor/fluent-bundle/src/memoizer.rs /^ fn stringify_value(&self, value: &dyn FluentType) -> std::borrow::Cow<'static, str>;$/;" P interface:MemoizerKind +stringlib.o Makefile.in /^stringlib.o: ${GLOB_LIBSRC}\/glob.h ${GLOB_LIBSRC}\/strmatch.h$/;" t +stringlib.o Makefile.in /^stringlib.o: bashansi.h pathexp.h assoc.h $(BASHINCDIR)\/ocache.h$/;" t +stringlib.o Makefile.in /^stringlib.o: bashtypes.h ${BASHINCDIR}\/chartypes.h$/;" t +stringlib.o Makefile.in /^stringlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib/;" t +stringlib.o Makefile.in /^stringlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h $/;" t +stringlib.o Makefile.in /^stringlib.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +stringlib.o Makefile.in /^stringlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDI/;" t +stringlist.o lib/sh/Makefile.in /^stringlist.o: ${BUILD_DIR}\/config.h$/;" t +stringlist.o lib/sh/Makefile.in /^stringlist.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +stringlist.o lib/sh/Makefile.in /^stringlist.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +stringlist.o lib/sh/Makefile.in /^stringlist.o: ${topdir}\/bashansi.h$/;" t +stringlist.o lib/sh/Makefile.in /^stringlist.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +stringlist.o lib/sh/Makefile.in /^stringlist.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/conf/;" t +stringlist.o lib/sh/Makefile.in /^stringlist.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +stringlist.o lib/sh/Makefile.in /^stringlist.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjm/;" t +stringlist.o lib/sh/Makefile.in /^stringlist.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +stringlist.o lib/sh/Makefile.in /^stringlist.o: stringlist.c$/;" t +strings lib/sh/snprintf.c /^strings(p, tmp)$/;" f file: +strings vendor/elsa/examples/fluentresource.rs /^ strings: FrozenMap,$/;" m struct:ResourceManager +strings vendor/syn/tests/test_lit.rs /^fn strings() {$/;" f +stringvec.o lib/sh/Makefile.in /^stringvec.o: ${BUILD_DIR}\/config.h$/;" t +stringvec.o lib/sh/Makefile.in /^stringvec.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +stringvec.o lib/sh/Makefile.in /^stringvec.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +stringvec.o lib/sh/Makefile.in /^stringvec.o: ${topdir}\/bashansi.h ${BASHINCDIR}\/chartypes.h$/;" t +stringvec.o lib/sh/Makefile.in /^stringvec.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +stringvec.o lib/sh/Makefile.in /^stringvec.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/conft/;" t +stringvec.o lib/sh/Makefile.in /^stringvec.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +stringvec.o lib/sh/Makefile.in /^stringvec.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp/;" t +stringvec.o lib/sh/Makefile.in /^stringvec.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +stringvec.o lib/sh/Makefile.in /^stringvec.o: stringvec.c$/;" t +strip Makefile.in /^strip: $(Program) .made$/;" t +strip_leading r_bash/src/lib.rs /^ pub fn strip_leading(arg1: *mut ::std::os::raw::c_char);$/;" f +strip_leading stringlib.c /^strip_leading (string)$/;" f +strip_trailing r_bash/src/lib.rs /^ pub fn strip_trailing($/;" f +strip_trailing stringlib.c /^strip_trailing (string, len, newlines_only)$/;" f +strip_trailing_ifs_whitespace builtins_rust/read/src/intercdep.rs /^ pub fn strip_trailing_ifs_whitespace(s: *mut c_char, sep: *mut c_char, es: c_int) -> *mut c_/;" f +strip_trailing_ifs_whitespace r_bash/src/lib.rs /^ pub fn strip_trailing_ifs_whitespace($/;" f +strip_trailing_ifs_whitespace subst.c /^strip_trailing_ifs_whitespace (string, separators, saw_escape)$/;" f +strip_whitespace builtins/mkbuiltins.c /^strip_whitespace (string)$/;" f +stripwhite lib/readline/examples/fileman.c /^stripwhite (string)$/;" f +strlcat vendor/libc/src/solid/mod.rs /^ pub fn strlcat(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> size_t;$/;" f +strlcpy vendor/libc/src/solid/mod.rs /^ pub fn strlcpy(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> size_t;$/;" f +strlen builtins_rust/enable/src/lib.rs /^ fn strlen(_: *const libc::c_char) -> libc::c_ulong;$/;" f +strlen builtins_rust/set/src/lib.rs /^ fn strlen(_: *const libc::c_char) -> u64;$/;" f +strlen builtins_rust/shopt/src/lib.rs /^ fn strlen(_: *const libc::c_char) -> libc::c_ulong;$/;" f +strlen r_bash/src/lib.rs /^ pub fn strlen(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_ulong;$/;" f +strlen r_glob/src/lib.rs /^ pub fn strlen(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_ulong;$/;" f +strlen r_readline/src/lib.rs /^ pub fn strlen(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_ulong;$/;" f +strlen vendor/libc/src/fuchsia/mod.rs /^ pub fn strlen(cs: *const c_char) -> size_t;$/;" f +strlen vendor/libc/src/solid/mod.rs /^ pub fn strlen(arg1: *const c_char) -> size_t;$/;" f +strlen vendor/libc/src/unix/mod.rs /^ pub fn strlen(cs: *const c_char) -> size_t;$/;" f +strlen vendor/libc/src/vxworks/mod.rs /^ pub fn strlen(cs: *const c_char) -> size_t;$/;" f +strlen vendor/libc/src/wasi.rs /^ pub fn strlen(cs: *const c_char) -> size_t;$/;" f +strlen vendor/libc/src/windows/mod.rs /^ pub fn strlen(cs: *const c_char) -> size_t;$/;" f +strlimitcpy support/man2html.c /^strlimitcpy(char *to, char *from, int n, int limit)$/;" f typeref:typename:char * file: +strlist_append lib/sh/stringlist.c /^strlist_append (m1, m2)$/;" f +strlist_append r_bash/src/lib.rs /^ pub fn strlist_append(arg1: *mut STRINGLIST, arg2: *mut STRINGLIST) -> *mut STRINGLIST;$/;" f +strlist_copy lib/sh/stringlist.c /^strlist_copy (sl)$/;" f +strlist_copy r_bash/src/lib.rs /^ pub fn strlist_copy(arg1: *mut STRINGLIST) -> *mut STRINGLIST;$/;" f +strlist_create lib/sh/stringlist.c /^strlist_create (n)$/;" f +strlist_create r_bash/src/lib.rs /^ pub fn strlist_create(arg1: ::std::os::raw::c_int) -> *mut STRINGLIST;$/;" f +strlist_dispose builtins_rust/complete/src/lib.rs /^ fn strlist_dispose(strlist: *mut STRINGLIST);$/;" f +strlist_dispose lib/sh/stringlist.c /^strlist_dispose (sl)$/;" f +strlist_dispose r_bash/src/lib.rs /^ pub fn strlist_dispose(arg1: *mut STRINGLIST);$/;" f +strlist_flush lib/sh/stringlist.c /^strlist_flush (sl)$/;" f +strlist_flush r_bash/src/lib.rs /^ pub fn strlist_flush(arg1: *mut STRINGLIST);$/;" f +strlist_from_word_list lib/sh/stringlist.c /^strlist_from_word_list (list, alloc, starting_index, ip)$/;" f +strlist_merge lib/sh/stringlist.c /^strlist_merge (m1, m2)$/;" f +strlist_merge r_bash/src/lib.rs /^ pub fn strlist_merge(arg1: *mut STRINGLIST, arg2: *mut STRINGLIST) -> *mut STRINGLIST;$/;" f +strlist_prefix_suffix lib/sh/stringlist.c /^strlist_prefix_suffix (sl, prefix, suffix)$/;" f +strlist_prefix_suffix r_bash/src/lib.rs /^ pub fn strlist_prefix_suffix($/;" f +strlist_print builtins_rust/complete/src/lib.rs /^ fn strlist_print(strlist: *mut STRINGLIST, text: *mut c_char);$/;" f +strlist_print lib/sh/stringlist.c /^strlist_print (sl, prefix)$/;" f +strlist_print r_bash/src/lib.rs /^ pub fn strlist_print(arg1: *mut STRINGLIST, arg2: *mut ::std::os::raw::c_char);$/;" f +strlist_remove lib/sh/stringlist.c /^strlist_remove (sl, s)$/;" f +strlist_remove r_bash/src/lib.rs /^ pub fn strlist_remove($/;" f +strlist_resize lib/sh/stringlist.c /^strlist_resize (sl, n)$/;" f +strlist_resize r_bash/src/lib.rs /^ pub fn strlist_resize(arg1: *mut STRINGLIST, arg2: ::std::os::raw::c_int) -> *mut STRINGLIST/;" f +strlist_sort lib/sh/stringlist.c /^strlist_sort (sl)$/;" f +strlist_sort r_bash/src/lib.rs /^ pub fn strlist_sort(arg1: *mut STRINGLIST);$/;" f +strlist_to_word_list lib/sh/stringlist.c /^strlist_to_word_list (sl, alloc, starting_index)$/;" f +strlist_walk lib/sh/stringlist.c /^strlist_walk (sl, func)$/;" f +strlist_walk r_bash/src/lib.rs /^ pub fn strlist_walk(arg1: *mut STRINGLIST, arg2: sh_strlist_map_func_t);$/;" f +strlong expr.c /^strlong (num)$/;" f file: +strmatch builtins_rust/help/src/lib.rs /^fn strmatch($/;" f +strmatch lib/glob/strmatch.c /^strmatch (pattern, string, flags)$/;" f +strmatch r_bashhist/src/lib.rs /^ fn strmatch( _: *mut c_char, _: *mut c_char, _: c_int) -> c_int;$/;" f +strmatch r_glob/src/lib.rs /^ pub fn strmatch($/;" f +strmatch.o lib/glob/Makefile.in /^strmatch.o: $(BASHINCDIR)\/stdc.h$/;" t +strmatch.o lib/glob/Makefile.in /^strmatch.o: $(BUILD_DIR)\/config.h$/;" t +strmatch.o lib/glob/Makefile.in /^strmatch.o: strmatch.c$/;" t +strmatch.o lib/glob/Makefile.in /^strmatch.o: strmatch.h$/;" t +strmaxcat support/man2html.c /^strmaxcat(char *to, char *from, int n)$/;" f typeref:typename:char * file: +strmaxcpy support/man2html.c /^strmaxcpy(char *to, char *from, int n)$/;" f typeref:typename:char * file: +strmif vendor/winapi/src/um/mod.rs /^#[cfg(feature = "strmif")] pub mod strmif;$/;" n +strncasecmp lib/intl/os2compat.h /^#define strncasecmp /;" d +strncasecmp lib/sh/strcasecmp.c /^strncasecmp (string1, string2, count)$/;" f +strncasecmp r_bash/src/lib.rs /^ pub fn strncasecmp($/;" f +strncasecmp r_glob/src/lib.rs /^ pub fn strncasecmp($/;" f +strncasecmp r_readline/src/lib.rs /^ pub fn strncasecmp($/;" f +strncasecmp vendor/libc/src/solid/mod.rs /^ pub fn strncasecmp(arg1: *const c_char, arg2: *const c_char, arg3: size_t) -> c_int;$/;" f +strncasecmp vendor/libc/src/unix/mod.rs /^ pub fn strncasecmp(s1: *const c_char, s2: *const c_char, n: size_t) -> c_int;$/;" f +strncasecmp vendor/libc/src/vxworks/mod.rs /^ pub fn strncasecmp(s1: *const c_char, s2: *const c_char, n: size_t) -> c_int;$/;" f +strncasecmp vendor/libc/src/wasi.rs /^ pub fn strncasecmp(s1: *const c_char, s2: *const c_char, n: size_t) -> c_int;$/;" f +strncasecmp vendor/libc/src/windows/gnu/mod.rs /^ pub fn strncasecmp(s1: *const ::c_char, s2: *const ::c_char, n: ::size_t) -> ::c_int;$/;" f +strncasecmp_l r_bash/src/lib.rs /^ pub fn strncasecmp_l($/;" f +strncasecmp_l r_glob/src/lib.rs /^ pub fn strncasecmp_l($/;" f +strncasecmp_l r_readline/src/lib.rs /^ pub fn strncasecmp_l($/;" f +strncasecmp_l vendor/libc/src/unix/solarish/mod.rs /^ pub fn strncasecmp_l($/;" f +strncat r_bash/src/lib.rs /^ pub fn strncat($/;" f +strncat r_glob/src/lib.rs /^ pub fn strncat($/;" f +strncat r_readline/src/lib.rs /^ pub fn strncat($/;" f +strncat vendor/libc/src/fuchsia/mod.rs /^ pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;$/;" f +strncat vendor/libc/src/solid/mod.rs /^ pub fn strncat(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> *mut c_char;$/;" f +strncat vendor/libc/src/unix/mod.rs /^ pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;$/;" f +strncat vendor/libc/src/vxworks/mod.rs /^ pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;$/;" f +strncat vendor/libc/src/wasi.rs /^ pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;$/;" f +strncat vendor/libc/src/windows/mod.rs /^ pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;$/;" f +strncmp r_bash/src/lib.rs /^ pub fn strncmp($/;" f +strncmp r_glob/src/lib.rs /^ pub fn strncmp($/;" f +strncmp r_readline/src/lib.rs /^ pub fn strncmp($/;" f +strncmp vendor/libc/src/fuchsia/mod.rs /^ pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;$/;" f +strncmp vendor/libc/src/solid/mod.rs /^ pub fn strncmp(arg1: *const c_char, arg2: *const c_char, arg3: size_t) -> c_int;$/;" f +strncmp vendor/libc/src/unix/mod.rs /^ pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;$/;" f +strncmp vendor/libc/src/vxworks/mod.rs /^ pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;$/;" f +strncmp vendor/libc/src/wasi.rs /^ pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;$/;" f +strncmp vendor/libc/src/windows/mod.rs /^ pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;$/;" f +strncpy r_bash/src/lib.rs /^ pub fn strncpy($/;" f +strncpy r_glob/src/lib.rs /^ pub fn strncpy($/;" f +strncpy r_readline/src/lib.rs /^ pub fn strncpy($/;" f +strncpy vendor/libc/src/fuchsia/mod.rs /^ pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;$/;" f +strncpy vendor/libc/src/solid/mod.rs /^ pub fn strncpy(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> *mut c_char;$/;" f +strncpy vendor/libc/src/unix/mod.rs /^ pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;$/;" f +strncpy vendor/libc/src/vxworks/mod.rs /^ pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;$/;" f +strncpy vendor/libc/src/wasi.rs /^ pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;$/;" f +strncpy vendor/libc/src/windows/mod.rs /^ pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;$/;" f +strndup r_bash/src/lib.rs /^ pub fn strndup($/;" f +strndup r_glob/src/lib.rs /^ pub fn strndup($/;" f +strndup r_readline/src/lib.rs /^ pub fn strndup($/;" f +strndup vendor/libc/src/solid/mod.rs /^ pub fn strndup(arg1: *const c_char, arg2: size_t) -> *mut c_char;$/;" f +strndup vendor/libc/src/unix/mod.rs /^ pub fn strndup(cs: *const c_char, n: size_t) -> *mut c_char;$/;" f +strndup vendor/libc/src/wasi.rs /^ pub fn strndup(cs: *const c_char, n: size_t) -> *mut c_char;$/;" f +strnicmp vendor/libc/src/windows/msvc/mod.rs /^ pub fn strnicmp(s1: *const ::c_char, s2: *const ::c_char, n: ::size_t) -> ::c_int;$/;" f +strnlen lib/sh/strnlen.c /^strnlen (s, maxlen)$/;" f +strnlen r_bash/src/lib.rs /^ pub fn strnlen(__string: *const ::std::os::raw::c_char, __maxlen: usize) -> usize;$/;" f +strnlen r_glob/src/lib.rs /^ pub fn strnlen(__string: *const ::std::os::raw::c_char, __maxlen: usize) -> usize;$/;" f +strnlen r_readline/src/lib.rs /^ pub fn strnlen(__string: *const ::std::os::raw::c_char, __maxlen: usize) -> usize;$/;" f +strnlen vendor/libc/src/fuchsia/mod.rs /^ pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t;$/;" f +strnlen vendor/libc/src/solid/mod.rs /^ pub fn strnlen(arg1: *const c_char, arg2: size_t) -> size_t;$/;" f +strnlen vendor/libc/src/unix/mod.rs /^ pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t;$/;" f +strnlen vendor/libc/src/wasi.rs /^ pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t;$/;" f +strnlen vendor/libc/src/windows/mod.rs /^ pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t;$/;" f +strnlen vendor/winapi/src/um/evntcons.rs /^unsafe fn strnlen(s: PCSTR, max_len: isize) -> isize {$/;" f +strnlen.o lib/sh/Makefile.in /^strnlen.o: ${BASHINCDIR}\/stdc.h$/;" t +strnlen.o lib/sh/Makefile.in /^strnlen.o: ${BUILD_DIR}\/config.h$/;" t +strnlen.o lib/sh/Makefile.in /^strnlen.o: strnlen.c$/;" t +strong_count vendor/futures-util/src/future/future/shared.rs /^ pub fn strong_count(&self) -> Option {$/;" f +strpbrk lib/sh/strpbrk.c /^strpbrk (s, accept)$/;" f +strpbrk r_bash/src/lib.rs /^ pub fn strpbrk($/;" f +strpbrk r_glob/src/lib.rs /^ pub fn strpbrk($/;" f +strpbrk r_readline/src/lib.rs /^ pub fn strpbrk($/;" f +strpbrk vendor/libc/src/fuchsia/mod.rs /^ pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;$/;" f +strpbrk vendor/libc/src/solid/mod.rs /^ pub fn strpbrk(arg1: *const c_char, arg2: *const c_char) -> *mut c_char;$/;" f +strpbrk vendor/libc/src/unix/mod.rs /^ pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;$/;" f +strpbrk vendor/libc/src/vxworks/mod.rs /^ pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;$/;" f +strpbrk vendor/libc/src/wasi.rs /^ pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;$/;" f +strpbrk vendor/libc/src/windows/mod.rs /^ pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;$/;" f +strpbrk.o lib/sh/Makefile.in /^strpbrk.o: ${BASHINCDIR}\/stdc.h$/;" t +strpbrk.o lib/sh/Makefile.in /^strpbrk.o: ${BUILD_DIR}\/config.h$/;" t +strpbrk.o lib/sh/Makefile.in /^strpbrk.o: strpbrk.c$/;" t +strpct vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn strpct($/;" f +strprint support/recho.c /^strprint(str)$/;" f +strptime r_bash/src/lib.rs /^ pub fn strptime($/;" f +strptime r_readline/src/lib.rs /^ pub fn strptime($/;" f +strptime_l r_bash/src/lib.rs /^ pub fn strptime_l($/;" f +strptime_l r_readline/src/lib.rs /^ pub fn strptime_l($/;" f +strrchr lib/sh/oslib.c /^strrchr (string, c)$/;" f +strrchr r_bash/src/lib.rs /^ pub fn strrchr($/;" f +strrchr r_glob/src/lib.rs /^ pub fn strrchr($/;" f +strrchr r_readline/src/lib.rs /^ pub fn strrchr($/;" f +strrchr vendor/libc/src/fuchsia/mod.rs /^ pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;$/;" f +strrchr vendor/libc/src/solid/mod.rs /^ pub fn strrchr(arg1: *const c_char, arg2: c_int) -> *mut c_char;$/;" f +strrchr vendor/libc/src/unix/mod.rs /^ pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;$/;" f +strrchr vendor/libc/src/vxworks/mod.rs /^ pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;$/;" f +strrchr vendor/libc/src/wasi.rs /^ pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;$/;" f +strrchr vendor/libc/src/windows/mod.rs /^ pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;$/;" f +strsep r_bash/src/lib.rs /^ pub fn strsep($/;" f +strsep r_glob/src/lib.rs /^ pub fn strsep($/;" f +strsep r_readline/src/lib.rs /^ pub fn strsep($/;" f +strsep vendor/libc/src/solid/mod.rs /^ pub fn strsep(arg1: *mut *mut c_char, arg2: *const c_char) -> *mut c_char;$/;" f +strsep vendor/libc/src/unix/haiku/mod.rs /^ pub fn strsep(string: *mut *mut ::c_char, delimiters: *const ::c_char) -> *mut ::c_char;$/;" f +strsep vendor/libc/src/unix/solarish/mod.rs /^ pub fn strsep(string: *mut *mut ::c_char, delim: *const ::c_char) -> *mut ::c_char;$/;" f +strsignal r_bash/src/lib.rs /^ pub fn strsignal(__sig: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +strsignal r_glob/src/lib.rs /^ pub fn strsignal(__sig: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +strsignal r_readline/src/lib.rs /^ pub fn strsignal(__sig: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +strsignal siglist.h /^# define strsignal(/;" d +strsignal vendor/libc/src/unix/mod.rs /^ pub fn strsignal(sig: c_int) -> *mut c_char;$/;" f +strspct vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn strspct($/;" f +strspn r_bash/src/lib.rs /^ pub fn strspn($/;" f +strspn r_glob/src/lib.rs /^ pub fn strspn($/;" f +strspn r_readline/src/lib.rs /^ pub fn strspn($/;" f +strspn vendor/libc/src/fuchsia/mod.rs /^ pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;$/;" f +strspn vendor/libc/src/solid/mod.rs /^ pub fn strspn(arg1: *const c_char, arg2: *const c_char) -> size_t;$/;" f +strspn vendor/libc/src/unix/mod.rs /^ pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;$/;" f +strspn vendor/libc/src/vxworks/mod.rs /^ pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;$/;" f +strspn vendor/libc/src/wasi.rs /^ pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;$/;" f +strspn vendor/libc/src/windows/mod.rs /^ pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;$/;" f +strstr lib/sh/strstr.c /^strstr (const char *phaystack, const char *pneedle)$/;" f typeref:typename:char * +strstr r_bash/src/lib.rs /^ pub fn strstr($/;" f +strstr r_glob/src/lib.rs /^ pub fn strstr($/;" f +strstr r_readline/src/lib.rs /^ pub fn strstr($/;" f +strstr vendor/libc/src/fuchsia/mod.rs /^ pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;$/;" f +strstr vendor/libc/src/solid/mod.rs /^ pub fn strstr(arg1: *const c_char, arg2: *const c_char) -> *mut c_char;$/;" f +strstr vendor/libc/src/unix/mod.rs /^ pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;$/;" f +strstr vendor/libc/src/vxworks/mod.rs /^ pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;$/;" f +strstr vendor/libc/src/wasi.rs /^ pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;$/;" f +strstr vendor/libc/src/windows/mod.rs /^ pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;$/;" f +strsub builtins_rust/fc/src/lib.rs /^ fn strsub(str1: *mut c_char, pat: *mut c_char, rep: *mut c_char, global: i32) -> *mut c_char/;" f +strsub r_bash/src/lib.rs /^ pub fn strsub($/;" f +strsub stringlib.c /^strsub (string, pat, rep, global)$/;" f +strsuftoll vendor/libc/src/solid/mod.rs /^ pub fn strsuftoll($/;" f +strsuftollx vendor/libc/src/solid/mod.rs /^ pub fn strsuftollx($/;" f +strtod lib/sh/strtod.c /^strtod (nptr, endptr)$/;" f +strtod r_bash/src/lib.rs /^ pub fn strtod($/;" f +strtod r_glob/src/lib.rs /^ pub fn strtod($/;" f +strtod r_readline/src/lib.rs /^ pub fn strtod($/;" f +strtod vendor/libc/src/fuchsia/mod.rs /^ pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;$/;" f +strtod vendor/libc/src/solid/mod.rs /^ pub fn strtod(arg1: *const c_char, arg2: *mut *mut c_char) -> f64;$/;" f +strtod vendor/libc/src/unix/mod.rs /^ pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;$/;" f +strtod vendor/libc/src/vxworks/mod.rs /^ pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;$/;" f +strtod vendor/libc/src/wasi.rs /^ pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;$/;" f +strtod vendor/libc/src/windows/mod.rs /^ pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;$/;" f +strtod.o lib/sh/Makefile.in /^strtod.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/chartypes.h$/;" t +strtod.o lib/sh/Makefile.in /^strtod.o: ${BUILD_DIR}\/config.h$/;" t +strtod.o lib/sh/Makefile.in /^strtod.o: ${topdir}\/bashansi.h$/;" t +strtod.o lib/sh/Makefile.in /^strtod.o: strtod.c$/;" t +strtod_l r_bash/src/lib.rs /^ pub fn strtod_l($/;" f +strtod_l r_glob/src/lib.rs /^ pub fn strtod_l($/;" f +strtod_l r_readline/src/lib.rs /^ pub fn strtod_l($/;" f +strtod_l vendor/libc/src/solid/mod.rs /^ pub fn strtod_l(arg1: *const c_char, arg2: *mut *mut c_char, arg3: locale_t) -> f64;$/;" f +strtof r_bash/src/lib.rs /^ pub fn strtof($/;" f +strtof r_glob/src/lib.rs /^ pub fn strtof($/;" f +strtof r_readline/src/lib.rs /^ pub fn strtof($/;" f +strtof vendor/libc/src/fuchsia/mod.rs /^ pub fn strtof(s: *const c_char, endp: *mut *mut c_char) -> c_float;$/;" f +strtof vendor/libc/src/solid/mod.rs /^ pub fn strtof(arg1: *const c_char, arg2: *mut *mut c_char) -> f32;$/;" f +strtof vendor/libc/src/unix/mod.rs /^ pub fn strtof(s: *const c_char, endp: *mut *mut c_char) -> c_float;$/;" f +strtof vendor/libc/src/vxworks/mod.rs /^ pub fn strtof(s: *const c_char, endp: *mut *mut c_char) -> c_float;$/;" f +strtof vendor/libc/src/wasi.rs /^ pub fn strtof(s: *const c_char, endp: *mut *mut c_char) -> c_float;$/;" f +strtof vendor/libc/src/windows/mod.rs /^ pub fn strtof(s: *const c_char, endp: *mut *mut c_char) -> c_float;$/;" f +strtof32 r_bash/src/lib.rs /^ pub fn strtof32($/;" f +strtof32 r_glob/src/lib.rs /^ pub fn strtof32($/;" f +strtof32 r_readline/src/lib.rs /^ pub fn strtof32($/;" f +strtof32_l r_bash/src/lib.rs /^ pub fn strtof32_l($/;" f +strtof32_l r_glob/src/lib.rs /^ pub fn strtof32_l($/;" f +strtof32_l r_readline/src/lib.rs /^ pub fn strtof32_l($/;" f +strtof32x r_bash/src/lib.rs /^ pub fn strtof32x($/;" f +strtof32x r_glob/src/lib.rs /^ pub fn strtof32x($/;" f +strtof32x r_readline/src/lib.rs /^ pub fn strtof32x($/;" f +strtof32x_l r_bash/src/lib.rs /^ pub fn strtof32x_l($/;" f +strtof32x_l r_glob/src/lib.rs /^ pub fn strtof32x_l($/;" f +strtof32x_l r_readline/src/lib.rs /^ pub fn strtof32x_l($/;" f +strtof64 r_bash/src/lib.rs /^ pub fn strtof64($/;" f +strtof64 r_glob/src/lib.rs /^ pub fn strtof64($/;" f +strtof64 r_readline/src/lib.rs /^ pub fn strtof64($/;" f +strtof64_l r_bash/src/lib.rs /^ pub fn strtof64_l($/;" f +strtof64_l r_glob/src/lib.rs /^ pub fn strtof64_l($/;" f +strtof64_l r_readline/src/lib.rs /^ pub fn strtof64_l($/;" f +strtof64x r_bash/src/lib.rs /^ pub fn strtof64x($/;" f +strtof64x r_glob/src/lib.rs /^ pub fn strtof64x($/;" f +strtof64x r_readline/src/lib.rs /^ pub fn strtof64x($/;" f +strtof64x_l r_bash/src/lib.rs /^ pub fn strtof64x_l($/;" f +strtof64x_l r_glob/src/lib.rs /^ pub fn strtof64x_l($/;" f +strtof64x_l r_readline/src/lib.rs /^ pub fn strtof64x_l($/;" f +strtof_l r_bash/src/lib.rs /^ pub fn strtof_l($/;" f +strtof_l r_glob/src/lib.rs /^ pub fn strtof_l($/;" f +strtof_l r_readline/src/lib.rs /^ pub fn strtof_l($/;" f +strtof_l vendor/libc/src/solid/mod.rs /^ pub fn strtof_l(arg1: *const c_char, arg2: *mut *mut c_char, arg3: locale_t) -> f32;$/;" f +strtoimax lib/sh/strtoimax.c /^strtoimax (ptr, endptr, base)$/;" f +strtoimax r_bash/src/lib.rs /^ pub fn strtoimax($/;" f +strtoimax r_glob/src/lib.rs /^ pub fn strtoimax($/;" f +strtoimax r_readline/src/lib.rs /^ pub fn strtoimax($/;" f +strtoimax.o lib/sh/Makefile.in /^strtoimax.o: ${BASHINCDIR}\/stdc.h$/;" t +strtoimax.o lib/sh/Makefile.in /^strtoimax.o: ${BUILD_DIR}\/config.h$/;" t +strtoimax.o lib/sh/Makefile.in /^strtoimax.o: strtoimax.c$/;" t +strtok r_bash/src/lib.rs /^ pub fn strtok($/;" f +strtok r_glob/src/lib.rs /^ pub fn strtok($/;" f +strtok r_readline/src/lib.rs /^ pub fn strtok($/;" f +strtok vendor/libc/src/fuchsia/mod.rs /^ pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;$/;" f +strtok vendor/libc/src/solid/mod.rs /^ pub fn strtok(arg1: *mut c_char, arg2: *const c_char) -> *mut c_char;$/;" f +strtok vendor/libc/src/unix/mod.rs /^ pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;$/;" f +strtok vendor/libc/src/vxworks/mod.rs /^ pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;$/;" f +strtok vendor/libc/src/wasi.rs /^ pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;$/;" f +strtok vendor/libc/src/windows/mod.rs /^ pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;$/;" f +strtok_r r_bash/src/lib.rs /^ pub fn strtok_r($/;" f +strtok_r r_glob/src/lib.rs /^ pub fn strtok_r($/;" f +strtok_r r_readline/src/lib.rs /^ pub fn strtok_r($/;" f +strtok_r vendor/libc/src/solid/mod.rs /^ pub fn strtok_r(arg1: *mut c_char, arg2: *const c_char, arg3: *mut *mut c_char) -> *mut c_ch/;" f +strtok_r vendor/libc/src/unix/mod.rs /^ pub fn strtok_r(s: *mut c_char, t: *const c_char, p: *mut *mut c_char) -> *mut c_char;$/;" f +strtol lib/sh/strtol.c /^# define strtol /;" d file: +strtol lib/sh/strtol.c /^strtol (nptr, endptr, base)$/;" f +strtol r_bash/src/lib.rs /^ pub fn strtol($/;" f +strtol r_glob/src/lib.rs /^ pub fn strtol($/;" f +strtol r_readline/src/lib.rs /^ pub fn strtol($/;" f +strtol vendor/libc/src/fuchsia/mod.rs /^ pub fn strtol(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_long;$/;" f +strtol vendor/libc/src/solid/mod.rs /^ pub fn strtol(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_long;$/;" f +strtol vendor/libc/src/unix/mod.rs /^ pub fn strtol(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_long;$/;" f +strtol vendor/libc/src/vxworks/mod.rs /^ pub fn strtol(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_long;$/;" f +strtol vendor/libc/src/wasi.rs /^ pub fn strtol(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_long;$/;" f +strtol vendor/libc/src/windows/mod.rs /^ pub fn strtol(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_long;$/;" f +strtol.o lib/sh/Makefile.in /^strtol.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/chartypes.h$/;" t +strtol.o lib/sh/Makefile.in /^strtol.o: ${BASHINCDIR}\/typemax.h$/;" t +strtol.o lib/sh/Makefile.in /^strtol.o: ${BUILD_DIR}\/config.h$/;" t +strtol.o lib/sh/Makefile.in /^strtol.o: ${topdir}\/bashansi.h$/;" t +strtol.o lib/sh/Makefile.in /^strtol.o: strtol.c$/;" t +strtol_l r_bash/src/lib.rs /^ pub fn strtol_l($/;" f +strtol_l r_glob/src/lib.rs /^ pub fn strtol_l($/;" f +strtol_l r_readline/src/lib.rs /^ pub fn strtol_l($/;" f +strtol_l vendor/libc/src/solid/mod.rs /^ pub fn strtol_l($/;" f +strtold r_bash/src/lib.rs /^ pub fn strtold($/;" f +strtold r_glob/src/lib.rs /^ pub fn strtold($/;" f +strtold r_readline/src/lib.rs /^ pub fn strtold($/;" f +strtold vendor/libc/src/solid/mod.rs /^ pub fn strtold(arg1: *const c_char, arg2: *mut *mut c_char) -> f64;$/;" f +strtold_l r_bash/src/lib.rs /^ pub fn strtold_l($/;" f +strtold_l r_glob/src/lib.rs /^ pub fn strtold_l($/;" f +strtold_l r_readline/src/lib.rs /^ pub fn strtold_l($/;" f +strtold_l vendor/libc/src/solid/mod.rs /^ pub fn strtold_l(arg1: *const c_char, arg2: *mut *mut c_char, arg3: locale_t) -> f64;$/;" f +strtoll r_bash/src/lib.rs /^ pub fn strtoll($/;" f +strtoll r_glob/src/lib.rs /^ pub fn strtoll($/;" f +strtoll r_readline/src/lib.rs /^ pub fn strtoll($/;" f +strtoll vendor/libc/src/solid/mod.rs /^ pub fn strtoll(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_longlong;$/;" f +strtoll.o lib/sh/Makefile.in /^strtoll.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/chartypes.h$/;" t +strtoll.o lib/sh/Makefile.in /^strtoll.o: ${BASHINCDIR}\/typemax.h$/;" t +strtoll.o lib/sh/Makefile.in /^strtoll.o: ${BUILD_DIR}\/config.h$/;" t +strtoll.o lib/sh/Makefile.in /^strtoll.o: ${topdir}\/bashansi.h$/;" t +strtoll.o lib/sh/Makefile.in /^strtoll.o: strtol.c$/;" t +strtoll.o lib/sh/Makefile.in /^strtoll.o: strtoll.c$/;" t +strtoll_l r_bash/src/lib.rs /^ pub fn strtoll_l($/;" f +strtoll_l r_glob/src/lib.rs /^ pub fn strtoll_l($/;" f +strtoll_l r_readline/src/lib.rs /^ pub fn strtoll_l($/;" f +strtoll_l vendor/libc/src/solid/mod.rs /^ pub fn strtoll_l($/;" f +strtonum vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn strtonum($/;" f +strtonum vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn strtonum($/;" f +strtoq r_bash/src/lib.rs /^ pub fn strtoq($/;" f +strtoq r_glob/src/lib.rs /^ pub fn strtoq($/;" f +strtoq r_readline/src/lib.rs /^ pub fn strtoq($/;" f +strtoq vendor/libc/src/solid/mod.rs /^ pub fn strtoq(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> quad_t;$/;" f +strtoq_l vendor/libc/src/solid/mod.rs /^ pub fn strtoq_l($/;" f +strtoul r_bash/src/lib.rs /^ pub fn strtoul($/;" f +strtoul r_glob/src/lib.rs /^ pub fn strtoul($/;" f +strtoul r_readline/src/lib.rs /^ pub fn strtoul($/;" f +strtoul vendor/libc/src/fuchsia/mod.rs /^ pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulong;$/;" f +strtoul vendor/libc/src/solid/mod.rs /^ pub fn strtoul(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_ulong;$/;" f +strtoul vendor/libc/src/unix/mod.rs /^ pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulong;$/;" f +strtoul vendor/libc/src/vxworks/mod.rs /^ pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulong;$/;" f +strtoul vendor/libc/src/wasi.rs /^ pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulong;$/;" f +strtoul vendor/libc/src/windows/mod.rs /^ pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulong;$/;" f +strtoul.o lib/sh/Makefile.in /^strtoul.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/chartypes.h$/;" t +strtoul.o lib/sh/Makefile.in /^strtoul.o: ${BASHINCDIR}\/typemax.h$/;" t +strtoul.o lib/sh/Makefile.in /^strtoul.o: ${BUILD_DIR}\/config.h$/;" t +strtoul.o lib/sh/Makefile.in /^strtoul.o: ${topdir}\/bashansi.h$/;" t +strtoul.o lib/sh/Makefile.in /^strtoul.o: strtol.c$/;" t +strtoul.o lib/sh/Makefile.in /^strtoul.o: strtoul.c$/;" t +strtoul_l r_bash/src/lib.rs /^ pub fn strtoul_l($/;" f +strtoul_l r_glob/src/lib.rs /^ pub fn strtoul_l($/;" f +strtoul_l r_readline/src/lib.rs /^ pub fn strtoul_l($/;" f +strtoul_l vendor/libc/src/solid/mod.rs /^ pub fn strtoul_l($/;" f +strtoull r_bash/src/lib.rs /^ pub fn strtoull($/;" f +strtoull r_glob/src/lib.rs /^ pub fn strtoull($/;" f +strtoull r_readline/src/lib.rs /^ pub fn strtoull($/;" f +strtoull vendor/libc/src/solid/mod.rs /^ pub fn strtoull(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_ulonglong;$/;" f +strtoull.o lib/sh/Makefile.in /^strtoull.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/chartypes.h$/;" t +strtoull.o lib/sh/Makefile.in /^strtoull.o: ${BASHINCDIR}\/typemax.h$/;" t +strtoull.o lib/sh/Makefile.in /^strtoull.o: ${BUILD_DIR}\/config.h$/;" t +strtoull.o lib/sh/Makefile.in /^strtoull.o: ${topdir}\/bashansi.h$/;" t +strtoull.o lib/sh/Makefile.in /^strtoull.o: strtol.c$/;" t +strtoull.o lib/sh/Makefile.in /^strtoull.o: strtoull.c$/;" t +strtoull_l r_bash/src/lib.rs /^ pub fn strtoull_l($/;" f +strtoull_l r_glob/src/lib.rs /^ pub fn strtoull_l($/;" f +strtoull_l r_readline/src/lib.rs /^ pub fn strtoull_l($/;" f +strtoull_l vendor/libc/src/solid/mod.rs /^ pub fn strtoull_l($/;" f +strtoumax lib/sh/strtoumax.c /^strtoumax (ptr, endptr, base)$/;" f +strtoumax r_bash/src/lib.rs /^ pub fn strtoumax($/;" f +strtoumax r_glob/src/lib.rs /^ pub fn strtoumax($/;" f +strtoumax r_readline/src/lib.rs /^ pub fn strtoumax($/;" f +strtoumax.o lib/sh/Makefile.in /^strtoumax.o: ${BASHINCDIR}\/stdc.h$/;" t +strtoumax.o lib/sh/Makefile.in /^strtoumax.o: ${BUILD_DIR}\/config.h$/;" t +strtoumax.o lib/sh/Makefile.in /^strtoumax.o: strtoumax.c$/;" t +strtouq r_bash/src/lib.rs /^ pub fn strtouq($/;" f +strtouq r_glob/src/lib.rs /^ pub fn strtouq($/;" f +strtouq r_readline/src/lib.rs /^ pub fn strtouq($/;" f +strtouq vendor/libc/src/solid/mod.rs /^ pub fn strtouq(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> u_quad_t;$/;" f +strtouq_l vendor/libc/src/solid/mod.rs /^ pub fn strtouq_l($/;" f +strtrans.o lib/sh/Makefile.in /^strtrans.o: ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/chartypes.h$/;" t +strtrans.o lib/sh/Makefile.in /^strtrans.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +strtrans.o lib/sh/Makefile.in /^strtrans.o: ${BUILD_DIR}\/config.h$/;" t +strtrans.o lib/sh/Makefile.in /^strtrans.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +strtrans.o lib/sh/Makefile.in /^strtrans.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +strtrans.o lib/sh/Makefile.in /^strtrans.o: ${topdir}\/bashansi.h$/;" t +strtrans.o lib/sh/Makefile.in /^strtrans.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +strtrans.o lib/sh/Makefile.in /^strtrans.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/confty/;" t +strtrans.o lib/sh/Makefile.in /^strtrans.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +strtrans.o lib/sh/Makefile.in /^strtrans.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp./;" t +strtrans.o lib/sh/Makefile.in /^strtrans.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +strtrans.o lib/sh/Makefile.in /^strtrans.o: strtrans.c$/;" t +struct_filename builtins/mkbuiltins.c /^char *struct_filename = (char *)NULL;$/;" v typeref:typename:char * +struct_pinned vendor/pin-project-lite/tests/drop_order.rs /^fn struct_pinned() {$/;" f +struct_unpinned vendor/pin-project-lite/tests/drop_order.rs /^fn struct_unpinned() {$/;" f +structfile_footer builtins/mkbuiltins.c /^char *structfile_footer[] = {$/;" v typeref:typename:char * [] +structfile_header builtins/mkbuiltins.c /^char *structfile_header[] = {$/;" v typeref:typename:char * [] +structs vendor/thiserror/tests/test_backtrace.rs /^pub mod structs {$/;" n +structs vendor/thiserror/tests/test_option.rs /^pub mod structs {$/;" n +strvec_copy lib/sh/stringvec.c /^strvec_copy (array)$/;" f +strvec_copy r_bash/src/lib.rs /^ pub fn strvec_copy(arg1: *mut *mut ::std::os::raw::c_char) -> *mut *mut ::std::os::raw::c_ch/;" f +strvec_create builtins_rust/exec/src/lib.rs /^ fn strvec_create(n: i32) -> *mut *mut c_char;$/;" f +strvec_create builtins_rust/getopts/src/lib.rs /^ fn strvec_create(i: i32) -> *mut *mut c_char;$/;" f +strvec_create builtins_rust/set/src/lib.rs /^ fn strvec_create(_: i32) -> *mut *mut libc::c_char;$/;" f +strvec_create builtins_rust/shopt/src/lib.rs /^ fn strvec_create(_: i32) -> *mut *mut libc::c_char;$/;" f +strvec_create lib/sh/stringvec.c /^strvec_create (n)$/;" f +strvec_create r_bash/src/lib.rs /^ pub fn strvec_create(arg1: ::std::os::raw::c_int) -> *mut *mut ::std::os::raw::c_char;$/;" f +strvec_dispose builtins_rust/bind/src/lib.rs /^ fn strvec_dispose(array: *mut *mut c_char);$/;" f +strvec_dispose builtins_rust/complete/src/lib.rs /^ fn strvec_dispose(matches: *mut *mut c_char);$/;" f +strvec_dispose builtins_rust/exec/src/lib.rs /^ fn strvec_dispose(array: *mut *mut c_char);$/;" f +strvec_dispose lib/sh/stringvec.c /^strvec_dispose (array)$/;" f +strvec_dispose r_bash/src/lib.rs /^ pub fn strvec_dispose(arg1: *mut *mut ::std::os::raw::c_char);$/;" f +strvec_flush lib/sh/stringvec.c /^strvec_flush (array)$/;" f +strvec_flush r_bash/src/lib.rs /^ pub fn strvec_flush(arg1: *mut *mut ::std::os::raw::c_char);$/;" f +strvec_from_word_list builtins_rust/common/src/lib.rs /^ fn strvec_from_word_list($/;" f +strvec_from_word_list builtins_rust/exec/src/lib.rs /^ fn strvec_from_word_list($/;" f +strvec_from_word_list lib/sh/stringvec.c /^strvec_from_word_list (list, alloc, starting_index, ip)$/;" f +strvec_from_word_list r_bash/src/lib.rs /^ pub fn strvec_from_word_list($/;" f +strvec_len builtins_rust/bind/src/lib.rs /^ fn strvec_len(array: *mut *mut c_char) -> i32;$/;" f +strvec_len lib/sh/stringvec.c /^strvec_len (array)$/;" f +strvec_len r_bash/src/lib.rs /^ pub fn strvec_len(arg1: *mut *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +strvec_mcreate lib/sh/stringvec.c /^strvec_mcreate (n)$/;" f +strvec_mcreate r_bash/src/lib.rs /^ pub fn strvec_mcreate(arg1: ::std::os::raw::c_int) -> *mut *mut ::std::os::raw::c_char;$/;" f +strvec_mresize lib/sh/stringvec.c /^strvec_mresize (array, nsize)$/;" f +strvec_mresize r_bash/src/lib.rs /^ pub fn strvec_mresize($/;" f +strvec_posixcmp lib/sh/stringvec.c /^strvec_posixcmp (s1, s2)$/;" f +strvec_posixcmp r_bash/src/lib.rs /^ pub fn strvec_posixcmp($/;" f +strvec_remove lib/sh/stringvec.c /^strvec_remove (array, name)$/;" f +strvec_remove r_bash/src/lib.rs /^ pub fn strvec_remove($/;" f +strvec_resize builtins_rust/pushd/src/lib.rs /^ fn strvec_resize(c: *mut *mut c_char, s: i32) -> *mut *mut c_char;$/;" f +strvec_resize lib/sh/stringvec.c /^strvec_resize (array, nsize)$/;" f +strvec_resize r_bash/src/lib.rs /^ pub fn strvec_resize($/;" f +strvec_search builtins_rust/bind/src/lib.rs /^ fn strvec_search(array: *mut *mut c_char, name: *mut c_char) -> i32;$/;" f +strvec_search lib/sh/stringvec.c /^strvec_search (array, name)$/;" f +strvec_search r_bash/src/lib.rs /^ pub fn strvec_search($/;" f +strvec_sort lib/sh/stringvec.c /^strvec_sort (array, posix)$/;" f +strvec_sort r_bash/src/lib.rs /^ pub fn strvec_sort(arg1: *mut *mut ::std::os::raw::c_char, arg2: ::std::os::raw::c_int);$/;" f +strvec_strcmp lib/sh/stringvec.c /^strvec_strcmp (s1, s2)$/;" f +strvec_strcmp r_bash/src/lib.rs /^ pub fn strvec_strcmp($/;" f +strvec_to_word_list lib/sh/stringvec.c /^strvec_to_word_list (array, alloc, starting_index)$/;" f +strvec_to_word_list r_bash/src/lib.rs /^ pub fn strvec_to_word_list($/;" f +strverscmp r_bash/src/lib.rs /^ pub fn strverscmp($/;" f +strverscmp r_glob/src/lib.rs /^ pub fn strverscmp($/;" f +strverscmp r_readline/src/lib.rs /^ pub fn strverscmp($/;" f +strxfrm r_bash/src/lib.rs /^ pub fn strxfrm($/;" f +strxfrm r_glob/src/lib.rs /^ pub fn strxfrm($/;" f +strxfrm r_readline/src/lib.rs /^ pub fn strxfrm($/;" f +strxfrm vendor/libc/src/fuchsia/mod.rs /^ pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;$/;" f +strxfrm vendor/libc/src/solid/mod.rs /^ pub fn strxfrm(arg1: *mut c_char, arg2: *const c_char, arg3: size_t) -> size_t;$/;" f +strxfrm vendor/libc/src/unix/mod.rs /^ pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;$/;" f +strxfrm vendor/libc/src/vxworks/mod.rs /^ pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;$/;" f +strxfrm vendor/libc/src/wasi.rs /^ pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;$/;" f +strxfrm vendor/libc/src/windows/mod.rs /^ pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;$/;" f +strxfrm_l r_bash/src/lib.rs /^ pub fn strxfrm_l($/;" f +strxfrm_l r_glob/src/lib.rs /^ pub fn strxfrm_l($/;" f +strxfrm_l r_readline/src/lib.rs /^ pub fn strxfrm_l($/;" f +strxfrm_l vendor/libc/src/solid/mod.rs /^ pub fn strxfrm_l($/;" f +stub vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^ pub(super) fn stub(&self) -> *const Task {$/;" P implementation:ReadyToRunQueue +stub vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^ pub(super) stub: Arc>,$/;" m struct:ReadyToRunQueue +stub.o lib/malloc/Makefile.in /^stub.o: stub.c$/;" t +stub_charset lib/sh/unicode.c /^stub_charset ()$/;" f typeref:typename:char * file: +stubmalloc lib/malloc/Makefile.in /^stubmalloc: ${STUB_OBJS}$/;" t +stupidly_hack_special_variables builtins_rust/declare/src/lib.rs /^ fn stupidly_hack_special_variables(name: *mut c_char);$/;" f +stupidly_hack_special_variables builtins_rust/printf/src/intercdep.rs /^ pub fn stupidly_hack_special_variables(name: *const c_char) -> c_void;$/;" f +stupidly_hack_special_variables builtins_rust/read/src/intercdep.rs /^ pub fn stupidly_hack_special_variables(name: *mut c_char);$/;" f +stupidly_hack_special_variables builtins_rust/set/src/lib.rs /^ fn stupidly_hack_special_variables(_: *mut libc::c_char);$/;" f +stupidly_hack_special_variables builtins_rust/setattr/src/intercdep.rs /^ pub fn stupidly_hack_special_variables(name: *mut c_char);$/;" f +stupidly_hack_special_variables r_bash/src/lib.rs /^ pub fn stupidly_hack_special_variables(arg1: *mut ::std::os::raw::c_char);$/;" f +stupidly_hack_special_variables variables.c /^stupidly_hack_special_variables (name)$/;" f +stx_atime r_bash/src/lib.rs /^ pub stx_atime: statx_timestamp,$/;" m struct:statx +stx_atime r_readline/src/lib.rs /^ pub stx_atime: statx_timestamp,$/;" m struct:statx +stx_attributes r_bash/src/lib.rs /^ pub stx_attributes: __uint64_t,$/;" m struct:statx +stx_attributes r_readline/src/lib.rs /^ pub stx_attributes: __uint64_t,$/;" m struct:statx +stx_attributes_mask r_bash/src/lib.rs /^ pub stx_attributes_mask: __uint64_t,$/;" m struct:statx +stx_attributes_mask r_readline/src/lib.rs /^ pub stx_attributes_mask: __uint64_t,$/;" m struct:statx +stx_blksize r_bash/src/lib.rs /^ pub stx_blksize: __uint32_t,$/;" m struct:statx +stx_blksize r_readline/src/lib.rs /^ pub stx_blksize: __uint32_t,$/;" m struct:statx +stx_blocks r_bash/src/lib.rs /^ pub stx_blocks: __uint64_t,$/;" m struct:statx +stx_blocks r_readline/src/lib.rs /^ pub stx_blocks: __uint64_t,$/;" m struct:statx +stx_btime r_bash/src/lib.rs /^ pub stx_btime: statx_timestamp,$/;" m struct:statx +stx_btime r_readline/src/lib.rs /^ pub stx_btime: statx_timestamp,$/;" m struct:statx +stx_ctime r_bash/src/lib.rs /^ pub stx_ctime: statx_timestamp,$/;" m struct:statx +stx_ctime r_readline/src/lib.rs /^ pub stx_ctime: statx_timestamp,$/;" m struct:statx +stx_dev_major r_bash/src/lib.rs /^ pub stx_dev_major: __uint32_t,$/;" m struct:statx +stx_dev_major r_readline/src/lib.rs /^ pub stx_dev_major: __uint32_t,$/;" m struct:statx +stx_dev_minor r_bash/src/lib.rs /^ pub stx_dev_minor: __uint32_t,$/;" m struct:statx +stx_dev_minor r_readline/src/lib.rs /^ pub stx_dev_minor: __uint32_t,$/;" m struct:statx +stx_gid r_bash/src/lib.rs /^ pub stx_gid: __uint32_t,$/;" m struct:statx +stx_gid r_readline/src/lib.rs /^ pub stx_gid: __uint32_t,$/;" m struct:statx +stx_ino r_bash/src/lib.rs /^ pub stx_ino: __uint64_t,$/;" m struct:statx +stx_ino r_readline/src/lib.rs /^ pub stx_ino: __uint64_t,$/;" m struct:statx +stx_mask r_bash/src/lib.rs /^ pub stx_mask: __uint32_t,$/;" m struct:statx +stx_mask r_readline/src/lib.rs /^ pub stx_mask: __uint32_t,$/;" m struct:statx +stx_mode r_bash/src/lib.rs /^ pub stx_mode: __uint16_t,$/;" m struct:statx +stx_mode r_readline/src/lib.rs /^ pub stx_mode: __uint16_t,$/;" m struct:statx +stx_mtime r_bash/src/lib.rs /^ pub stx_mtime: statx_timestamp,$/;" m struct:statx +stx_mtime r_readline/src/lib.rs /^ pub stx_mtime: statx_timestamp,$/;" m struct:statx +stx_nlink r_bash/src/lib.rs /^ pub stx_nlink: __uint32_t,$/;" m struct:statx +stx_nlink r_readline/src/lib.rs /^ pub stx_nlink: __uint32_t,$/;" m struct:statx +stx_rdev_major r_bash/src/lib.rs /^ pub stx_rdev_major: __uint32_t,$/;" m struct:statx +stx_rdev_major r_readline/src/lib.rs /^ pub stx_rdev_major: __uint32_t,$/;" m struct:statx +stx_rdev_minor r_bash/src/lib.rs /^ pub stx_rdev_minor: __uint32_t,$/;" m struct:statx +stx_rdev_minor r_readline/src/lib.rs /^ pub stx_rdev_minor: __uint32_t,$/;" m struct:statx +stx_size r_bash/src/lib.rs /^ pub stx_size: __uint64_t,$/;" m struct:statx +stx_size r_readline/src/lib.rs /^ pub stx_size: __uint64_t,$/;" m struct:statx +stx_uid r_bash/src/lib.rs /^ pub stx_uid: __uint32_t,$/;" m struct:statx +stx_uid r_readline/src/lib.rs /^ pub stx_uid: __uint32_t,$/;" m struct:statx +style vendor/fluent-bundle/src/types/number.rs /^ pub style: FluentNumberStyle,$/;" m struct:FluentNumberOptions +su_shell shell.c /^static int su_shell;$/;" v typeref:typename:int file: +sub vendor/memchr/src/memchr/fallback.rs /^fn sub(a: *const u8, b: *const u8) -> usize {$/;" f +sub vendor/memchr/src/memchr/x86/avx.rs /^fn sub(a: *const u8, b: *const u8) -> usize {$/;" f +sub vendor/memchr/src/memchr/x86/sse2.rs /^fn sub(a: *const u8, b: *const u8) -> usize {$/;" f +sub vendor/memchr/src/memchr/x86/sse42.rs /^fn sub(a: *const u8, b: *const u8) -> usize {$/;" f +sub vendor/memoffset/src/offset_of.rs /^ mod sub {$/;" n function:tests::path +sub vendor/nix/src/sys/time.rs /^ fn sub(self, rhs: TimeSpec) -> TimeSpec {$/;" P implementation:TimeSpec +sub vendor/nix/src/sys/time.rs /^ fn sub(self, rhs: TimeVal) -> TimeVal {$/;" P implementation:TimeVal +sub_append_number r_bash/src/lib.rs /^ pub fn sub_append_number($/;" f +sub_append_string r_bash/src/lib.rs /^ pub fn sub_append_string($/;" f +sub_append_string subst.c /^sub_append_string (source, target, indx, size)$/;" f +sub_test vendor/lazy_static/tests/test.rs /^ fn sub_test() {$/;" f module:visibility +subauth vendor/winapi/src/um/mod.rs /^#[cfg(feature = "subauth")] pub mod subauth;$/;" n +subdir lib/intl/Makefile.in /^subdir = intl$/;" m +subexpr expr.c /^subexpr (expr)$/;" f file: +submit vendor/nix/src/sys/aio.rs /^ fn submit(mut self: Pin<&mut Self>) -> Result<()> {$/;" P implementation:AioFsync +submit vendor/nix/src/sys/aio.rs /^ fn submit(self: Pin<&mut Self>) -> Result<()>;$/;" P interface:Aio +submodule vendor/bitflags/src/lib.rs /^ mod submodule {$/;" n module:tests::test_pub_in_module::module +submodule vendor/bitflags/src/lib.rs /^ mod submodule {$/;" n module:tests +suboptarg vendor/libc/src/solid/mod.rs /^ pub static mut suboptarg: *mut c_char;$/;" v +subs support/man2html.c /^static int subs = 0;$/;" v typeref:typename:int file: +subseq_arg lib/readline/rlprivate.h /^ int subseq_arg;$/;" m struct:__rl_keyseq_context typeref:typename:int +subseq_arg r_readline/src/lib.rs /^ pub subseq_arg: ::std::os::raw::c_int,$/;" m struct:__rl_keyseq_context +subseq_retval lib/readline/rlprivate.h /^ int subseq_retval; \/* XXX *\/$/;" m struct:__rl_keyseq_context typeref:typename:int +subseq_retval r_readline/src/lib.rs /^ pub subseq_retval: ::std::os::raw::c_int,$/;" m struct:__rl_keyseq_context +subshell parse.y /^subshell: '(' compound_list ')'$/;" l +subshell_argc r_bash/src/lib.rs /^ pub static mut subshell_argc: ::std::os::raw::c_int;$/;" v +subshell_argc shell.c /^int subshell_argc;$/;" v typeref:typename:int +subshell_argv r_bash/src/lib.rs /^ pub static mut subshell_argv: *mut *mut ::std::os::raw::c_char;$/;" v +subshell_argv shell.c /^char **subshell_argv;$/;" v typeref:typename:char ** +subshell_com builtins_rust/cd/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/command/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/common/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/complete/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/declare/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/fc/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/fg_bg/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/getopts/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/jobs/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/kill/src/intercdep.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/pushd/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/setattr/src/intercdep.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/source/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com builtins_rust/type/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com command.h /^typedef struct subshell_com {$/;" s +subshell_com r_bash/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com r_glob/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_com r_readline/src/lib.rs /^pub struct subshell_com {$/;" s +subshell_env execute_cmd.h /^ int subshell_env;$/;" m struct:execstate typeref:typename:int +subshell_env r_bash/src/lib.rs /^ pub subshell_env: ::std::os::raw::c_int,$/;" m struct:execstate +subshell_environment builtins_rust/exec/src/lib.rs /^ static subshell_environment: i32;$/;" v +subshell_environment builtins_rust/exit/src/lib.rs /^ static subshell_environment: i32;$/;" v +subshell_environment builtins_rust/fc/src/lib.rs /^ static subshell_environment: i32;$/;" v +subshell_environment builtins_rust/trap/src/intercdep.rs /^ pub static mut subshell_environment: c_int;$/;" v +subshell_environment execute_cmd.c /^int subshell_environment;$/;" v typeref:typename:int +subshell_environment r_bash/src/lib.rs /^ pub static mut subshell_environment: ::std::os::raw::c_int;$/;" v +subshell_environment r_jobs/src/lib.rs /^ static mut subshell_environment: c_int;$/;" v +subshell_envp r_bash/src/lib.rs /^ pub static mut subshell_envp: *mut *mut ::std::os::raw::c_char;$/;" v +subshell_envp shell.c /^char **subshell_envp;$/;" v typeref:typename:char ** +subshell_exit r_bash/src/lib.rs /^ pub fn subshell_exit(arg1: ::std::os::raw::c_int);$/;" f +subshell_exit shell.c /^subshell_exit (s)$/;" f +subshell_level execute_cmd.c /^int subshell_level = 0;$/;" v typeref:typename:int +subshell_level r_bash/src/lib.rs /^ pub static mut subshell_level: ::std::os::raw::c_int;$/;" v +subshell_top_level r_bash/src/lib.rs /^ pub static mut subshell_top_level: sigjmp_buf;$/;" v +subshell_top_level shell.c /^procenv_t subshell_top_level;$/;" v typeref:typename:procenv_t +subspan vendor/proc-macro2/src/fallback.rs /^ pub fn subspan>(&self, _range: R) -> Option {$/;" f method:Literal::byte_string +subspan vendor/proc-macro2/src/lib.rs /^ pub fn subspan>(&self, range: R) -> Option {$/;" P implementation:Literal +subspan vendor/proc-macro2/src/wrapper.rs /^ pub fn subspan>(&self, range: R) -> Option {$/;" P implementation:Literal +subst.o Makefile.in /^subst.o: $(HIST_LIBSRC)\/history.h $(HIST_LIBSRC)\/rlstdc.h$/;" t +subst.o Makefile.in /^subst.o: $(RL_LIBSRC)\/keymaps.h $(RL_LIBSRC)\/chardefs.h$/;" t +subst.o Makefile.in /^subst.o: $(RL_LIBSRC)\/readline.h $(RL_LIBSRC)\/rlstdc.h$/;" t +subst.o Makefile.in /^subst.o: $(TILDE_LIBSRC)\/tilde.h$/;" t +subst.o Makefile.in /^subst.o: $(srcdir)\/config-top.h$/;" t +subst.o Makefile.in /^subst.o: ${BASHINCDIR}\/chartypes.h$/;" t +subst.o Makefile.in /^subst.o: ${BASHINCDIR}\/shmbutil.h ${BASHINCDIR}\/shmbchar.h$/;" t +subst.o Makefile.in /^subst.o: ${DEFDIR}\/builtext.h$/;" t +subst.o Makefile.in /^subst.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +subst.o Makefile.in /^subst.o: bashline.h bashhist.h ${GLOB_LIBSRC}\/strmatch.h$/;" t +subst.o Makefile.in /^subst.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h ${BASHINCDIR}\/posixstat.h$/;" t +subst.o Makefile.in /^subst.o: flags.h jobs.h siglist.h execute_cmd.h ${BASHINCDIR}\/filecntl.h trap.h pathexp.h$/;" t +subst.o Makefile.in /^subst.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +subst.o Makefile.in /^subst.o: mailcheck.h input.h $(DEFSRC)\/getopt.h $(DEFSRC)\/common.h$/;" t +subst.o Makefile.in /^subst.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h$/;" t +subst.o Makefile.in /^subst.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +subst.o Makefile.in /^subst.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\//;" t +subst_assign_varlist r_jobs/src/lib.rs /^ static mut subst_assign_varlist: *mut WORD_LIST;$/;" v +subst_assign_varlist subst.c /^WORD_LIST *subst_assign_varlist = (WORD_LIST *)NULL;$/;" v typeref:typename:WORD_LIST * +subst_lhs lib/readline/histexpand.c /^static char *subst_lhs;$/;" v typeref:typename:char * file: +subst_lhs_len lib/readline/histexpand.c /^static int subst_lhs_len;$/;" v typeref:typename:int file: +subst_rhs lib/readline/histexpand.c /^static char *subst_rhs;$/;" v typeref:typename:char * file: +subst_rhs_len lib/readline/histexpand.c /^static int subst_rhs_len;$/;" v typeref:typename:int file: +substitute_style support/texi2html /^sub substitute_style {$/;" s +substring r_bash/src/lib.rs /^ pub fn substring($/;" f +substring stringlib.c /^substring (string, start, end)$/;" f +substring_member_of_array lib/readline/bind.c /^substring_member_of_array (const char *string, const char * const *array)$/;" f typeref:typename:int file: +subtag_matches vendor/unic-langid-impl/src/lib.rs /^fn subtag_matches($/;" f +subtags vendor/unic-langid-impl/src/lib.rs /^pub mod subtags;$/;" n +subtags_match vendor/unic-langid-impl/src/lib.rs /^fn subtags_match($/;" f +success target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" b object:outputs.15729799797837862367 +success target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" b object:outputs.4614504638168534921 +success vendor/nix/test/test_fcntl.rs /^ fn success() {$/;" f module:test_posix_fallocate +successes target/.rustc_info.json /^{"rustc_fingerprint":3041392922643922404,"outputs":{"4614504638168534921":{"success":true,"statu/;" o +successful_future vendor/futures/tests/future_try_flatten_stream.rs /^fn successful_future() {$/;" f +successor lib/intl/loadinfo.h /^ struct loaded_l10nfile *successor[1];$/;" m struct:loaded_l10nfile typeref:struct:loaded_l10nfile * [1] +suffix builtins_rust/complete/src/lib.rs /^ suffix: *mut c_char,$/;" m struct:COMPSPEC +suffix pcomplete.h /^ char *suffix;$/;" m struct:compspec typeref:typename:char * +suffix r_bash/src/lib.rs /^ pub suffix: *mut ::std::os::raw::c_char,$/;" m struct:compspec +suffix vendor/syn/src/lit.rs /^ pub fn suffix(&self) -> &str {$/;" P implementation:value::Lit +suffix vendor/syn/src/lit.rs /^ pub fn suffix(&self) -> &str {$/;" P implementation:LitByte +suffix vendor/syn/src/lit.rs /^ pub fn suffix(&self) -> &str {$/;" P implementation:LitByteStr +suffix vendor/syn/src/lit.rs /^ pub fn suffix(&self) -> &str {$/;" P implementation:LitChar +suffix vendor/syn/src/lit.rs /^ pub fn suffix(&self) -> &str {$/;" P implementation:LitFloat +suffix vendor/syn/src/lit.rs /^ pub fn suffix(&self) -> &str {$/;" P implementation:LitInt +suffix vendor/syn/src/lit.rs /^ pub fn suffix(&self) -> &str {$/;" P implementation:LitStr +suffix vendor/syn/src/lit.rs /^ suffix: Box,$/;" m struct:LitFloatRepr +suffix vendor/syn/src/lit.rs /^ suffix: Box,$/;" m struct:LitIntRepr +suffix vendor/syn/src/lit.rs /^ suffix: Box,$/;" m struct:LitRepr +suffix vendor/syn/tests/test_lit.rs /^fn suffix() {$/;" f +suffix_forward vendor/memchr/src/memmem/twoway.rs /^ fn suffix_forward() {$/;" f module:tests +suffix_is_substring vendor/memchr/src/memmem/mod.rs /^ pub(crate) fn suffix_is_substring($/;" f module:proptests +suffix_reverse vendor/memchr/src/memmem/twoway.rs /^ fn suffix_reverse() {$/;" f module:tests +suffixed_int_literals vendor/proc-macro2/src/lib.rs /^macro_rules! suffixed_int_literals {$/;" M +suffixed_numbers vendor/proc-macro2/src/fallback.rs /^macro_rules! suffixed_numbers {$/;" M +suffixed_numbers vendor/proc-macro2/src/wrapper.rs /^macro_rules! suffixed_numbers {$/;" M +suffixes vendor/memchr/src/memmem/twoway.rs /^ fn suffixes(bytes: &[u8]) -> Vec<&[u8]> {$/;" f module:tests +suggest_thread_priority vendor/libc/src/unix/haiku/native.rs /^ pub fn suggest_thread_priority($/;" f +suggestion_message target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" s object:reports.0 +suggestion_message target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" s object:reports.1 +suggestion_message target/.future-incompat-report.json /^{"version":0,"next_id":4,"reports":[{"id":1,"suggestion_message":"\\nTo solve this problem, you /;" s object:reports.2 +sun vendor/nix/src/sys/socket/addr.rs /^ sun: libc::sockaddr_un,$/;" m struct:UnixAddr +sun_len vendor/nix/src/sys/socket/addr.rs /^ fn sun_len(&self)-> u8 {$/;" P implementation:UnixAddr +sun_len vendor/nix/src/sys/socket/addr.rs /^ sun_len: u8$/;" m struct:UnixAddr +suppress_debug_trap_verbose builtins_rust/fc/src/lib.rs /^ static mut suppress_debug_trap_verbose: i32;$/;" v +suppress_debug_trap_verbose r_bash/src/lib.rs /^ pub static mut suppress_debug_trap_verbose: ::std::os::raw::c_int;$/;" v +suppress_debug_trap_verbose r_glob/src/lib.rs /^ pub static mut suppress_debug_trap_verbose: ::std::os::raw::c_int;$/;" v +suppress_debug_trap_verbose r_readline/src/lib.rs /^ pub static mut suppress_debug_trap_verbose: ::std::os::raw::c_int;$/;" v +suppress_debug_trap_verbose trap.c /^int suppress_debug_trap_verbose = 0;$/;" v typeref:typename:int +suseconds_t r_bash/src/lib.rs /^pub type suseconds_t = __suseconds_t;$/;" t +suseconds_t r_glob/src/lib.rs /^pub type suseconds_t = __suseconds_t;$/;" t +suseconds_t r_readline/src/lib.rs /^pub type suseconds_t = __suseconds_t;$/;" t +suseconds_t vendor/libc/src/fuchsia/mod.rs /^pub type suseconds_t = c_long;$/;" t +suseconds_t vendor/libc/src/solid/mod.rs /^pub type suseconds_t = c_int;$/;" t +suseconds_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type suseconds_t = i32;$/;" t +suseconds_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type suseconds_t = i64;$/;" t +suseconds_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/aarch64.rs /^pub type suseconds_t = i64;$/;" t +suseconds_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/arm.rs /^pub type suseconds_t = i32;$/;" t +suseconds_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc.rs /^pub type suseconds_t = i32;$/;" t +suseconds_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs /^pub type suseconds_t = i64;$/;" t +suseconds_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/riscv64.rs /^pub type suseconds_t = ::c_long;$/;" t +suseconds_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86.rs /^pub type suseconds_t = i32;$/;" t +suseconds_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs /^pub type suseconds_t = i64;$/;" t +suseconds_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type suseconds_t = ::c_int;$/;" t +suseconds_t vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^pub type suseconds_t = ::c_long;$/;" t +suseconds_t vendor/libc/src/unix/haiku/mod.rs /^pub type suseconds_t = i32;$/;" t +suseconds_t vendor/libc/src/unix/hermit/mod.rs /^pub type suseconds_t = c_long;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type suseconds_t = ::c_long;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type suseconds_t = c_long;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs /^pub type suseconds_t = i64;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs /^pub type suseconds_t = i64;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs /^pub type suseconds_t = i64;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs /^pub type suseconds_t = i64;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs /^pub type suseconds_t = i64;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^pub type suseconds_t = i64;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs /^pub type suseconds_t = i32;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^pub type suseconds_t = i64;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type suseconds_t = c_long;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type suseconds_t = ::c_long;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type suseconds_t = i32;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs /^pub type suseconds_t = i64;$/;" t +suseconds_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type suseconds_t = ::c_long;$/;" t +suseconds_t vendor/libc/src/unix/newlib/mod.rs /^pub type suseconds_t = i32;$/;" t +suseconds_t vendor/libc/src/unix/redox/mod.rs /^pub type suseconds_t = ::c_int;$/;" t +suseconds_t vendor/libc/src/unix/solarish/mod.rs /^pub type suseconds_t = ::c_long;$/;" t +suseconds_t vendor/libc/src/vxworks/mod.rs /^pub type suseconds_t = ::c_long;$/;" t +suseconds_t vendor/libc/src/wasi.rs /^pub type suseconds_t = c_longlong;$/;" t +suspend.o builtins/Makefile.in /^suspend.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +suspend.o builtins/Makefile.in /^suspend.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +suspend.o builtins/Makefile.in /^suspend.o: $(topdir)\/jobs.h ..\/pathnames.h$/;" t +suspend.o builtins/Makefile.in /^suspend.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +suspend.o builtins/Makefile.in /^suspend.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables./;" t +suspend.o builtins/Makefile.in /^suspend.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +suspend.o builtins/Makefile.in /^suspend.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +suspend.o builtins/Makefile.in /^suspend.o: suspend.def$/;" t +suspend_continue builtins_rust/suspend/src/lib.rs /^unsafe fn suspend_continue(sig: c_int) {$/;" f +suspend_thread vendor/libc/src/unix/haiku/native.rs /^ pub fn suspend_thread(thread: thread_id) -> status_t;$/;" f +sv unwind_prot.c /^ } sv;$/;" m union:uwp typeref:struct:uwp::__anon5806582f0308 file: +sv_bell_style lib/readline/bind.c /^sv_bell_style (const char *value)$/;" f typeref:typename:int file: +sv_childmax r_bash/src/lib.rs /^ pub fn sv_childmax(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_childmax variables.c /^sv_childmax (name)$/;" f +sv_combegin lib/readline/bind.c /^sv_combegin (const char *value)$/;" f typeref:typename:int file: +sv_comp_wordbreaks r_bash/src/lib.rs /^ pub fn sv_comp_wordbreaks(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_comp_wordbreaks variables.c /^sv_comp_wordbreaks (name)$/;" f +sv_compare variables.c /^sv_compare (sv1, sv2)$/;" f file: +sv_compquery lib/readline/bind.c /^sv_compquery (const char *value)$/;" f typeref:typename:int file: +sv_compwidth lib/readline/bind.c /^sv_compwidth (const char *value)$/;" f typeref:typename:int file: +sv_dispprefix lib/readline/bind.c /^sv_dispprefix (const char *value)$/;" f typeref:typename:int file: +sv_editmode lib/readline/bind.c /^sv_editmode (const char *value)$/;" f typeref:typename:int file: +sv_emacs_modestr lib/readline/bind.c /^sv_emacs_modestr (const char *value)$/;" f typeref:typename:int file: +sv_execignore r_bash/src/lib.rs /^ pub fn sv_execignore(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_execignore variables.c /^sv_execignore (name)$/;" f +sv_funcnest r_bash/src/lib.rs /^ pub fn sv_funcnest(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_funcnest variables.c /^sv_funcnest (name)$/;" f +sv_globignore r_bash/src/lib.rs /^ pub fn sv_globignore(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_globignore variables.c /^sv_globignore (name)$/;" f +sv_histchars r_bash/src/lib.rs /^ pub fn sv_histchars(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_histchars variables.c /^sv_histchars (name)$/;" f +sv_histignore r_bash/src/lib.rs /^ pub fn sv_histignore(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_histignore variables.c /^sv_histignore (name)$/;" f +sv_history_control r_bash/src/lib.rs /^ pub fn sv_history_control(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_history_control variables.c /^sv_history_control (name)$/;" f +sv_histsize lib/readline/bind.c /^sv_histsize (const char *value)$/;" f typeref:typename:int file: +sv_histsize r_bash/src/lib.rs /^ pub fn sv_histsize(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_histsize variables.c /^sv_histsize (name)$/;" f +sv_histtimefmt r_bash/src/lib.rs /^ pub fn sv_histtimefmt(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_histtimefmt variables.c /^sv_histtimefmt (name)$/;" f +sv_home variables.c /^sv_home (name)$/;" f +sv_hostfile r_bash/src/lib.rs /^ pub fn sv_hostfile(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_hostfile variables.c /^sv_hostfile (name)$/;" f +sv_ifs r_bash/src/lib.rs /^ pub fn sv_ifs(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_ifs variables.c /^sv_ifs (name)$/;" f +sv_ignoreeof builtins_rust/set/src/lib.rs /^ fn sv_ignoreeof(_: *mut libc::c_char);$/;" f +sv_ignoreeof r_bash/src/lib.rs /^ pub fn sv_ignoreeof(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_ignoreeof variables.c /^sv_ignoreeof (name)$/;" f +sv_isrchterm lib/readline/bind.c /^sv_isrchterm (const char *value)$/;" f typeref:typename:int file: +sv_keymap lib/readline/bind.c /^sv_keymap (const char *value)$/;" f typeref:typename:int file: +sv_locale r_bash/src/lib.rs /^ pub fn sv_locale(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_locale variables.c /^sv_locale (name)$/;" f +sv_mail r_bash/src/lib.rs /^ pub fn sv_mail(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_mail variables.c /^sv_mail (name)$/;" f +sv_opterr r_bash/src/lib.rs /^ pub fn sv_opterr(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_opterr variables.c /^sv_opterr (name)$/;" f +sv_optind r_bash/src/lib.rs /^ pub fn sv_optind(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_optind variables.c /^sv_optind (name)$/;" f +sv_path r_bash/src/lib.rs /^ pub fn sv_path(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_path variables.c /^sv_path (name)$/;" f +sv_seqtimeout lib/readline/bind.c /^sv_seqtimeout (const char *value)$/;" f typeref:typename:int file: +sv_shcompat r_bash/src/lib.rs /^ pub fn sv_shcompat(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_shcompat variables.c /^sv_shcompat (name)$/;" f +sv_strict_posix builtins_rust/set/src/lib.rs /^ fn sv_strict_posix(_: *mut libc::c_char);$/;" f +sv_strict_posix r_bash/src/lib.rs /^ pub fn sv_strict_posix(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_strict_posix variables.c /^sv_strict_posix (name)$/;" f +sv_terminal r_bash/src/lib.rs /^ pub fn sv_terminal(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_terminal variables.c /^sv_terminal (name)$/;" f +sv_tz builtins_rust/printf/src/intercdep.rs /^ pub fn sv_tz(name: *mut c_char) -> c_void;$/;" f +sv_tz r_bash/src/lib.rs /^ pub fn sv_tz(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_tz variables.c /^sv_tz (name)$/;" f +sv_vicmd_modestr lib/readline/bind.c /^sv_vicmd_modestr (const char *value)$/;" f typeref:typename:int file: +sv_viins_modestr lib/readline/bind.c /^sv_viins_modestr (const char *value)$/;" f typeref:typename:int file: +sv_winsize r_bash/src/lib.rs /^ pub fn sv_winsize(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_winsize variables.c /^sv_winsize (name)$/;" f +sv_xtracefd r_bash/src/lib.rs /^ pub fn sv_xtracefd(arg1: *mut ::std::os::raw::c_char);$/;" f +sv_xtracefd variables.c /^sv_xtracefd (name)$/;" f +swab r_bash/src/lib.rs /^ pub fn swab($/;" f +swab r_glob/src/lib.rs /^ pub fn swab($/;" f +swab r_readline/src/lib.rs /^ pub fn swab($/;" f +swap_bytes vendor/stdext/src/num/integer.rs /^ fn swap_bytes(self) -> Self;$/;" P interface:Integer +swap_free vendor/nix/src/sys/sysinfo.rs /^ pub fn swap_free(&self) -> u64 {$/;" P implementation:SysInfo +swap_remove vendor/smallvec/src/lib.rs /^ pub fn swap_remove(&mut self, index: usize) -> A::Item {$/;" P implementation:SmallVec +swap_total vendor/nix/src/sys/sysinfo.rs /^ pub fn swap_total(&self) -> u64 {$/;" P implementation:SysInfo +swapcontext vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs /^ pub fn swapcontext(uocp: *mut ucontext_t, ucp: *const ucontext_t) -> ::c_int;$/;" f +swapcontext vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^ pub fn swapcontext(uocp: *mut ::ucontext_t, ucp: *const ::ucontext_t) -> ::c_int;$/;" f +swapcontext vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs /^ pub fn swapcontext(uocp: *mut ucontext_t, ucp: *const ucontext_t) -> ::c_int;$/;" f +swapoff vendor/libc/src/fuchsia/mod.rs /^ pub fn swapoff(puath: *const ::c_char) -> ::c_int;$/;" f +swapoff vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn swapoff(puath: *const ::c_char) -> ::c_int;$/;" f +swapoff vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn swapoff(path: *const ::c_char) -> ::c_int;$/;" f +swapon vendor/libc/src/fuchsia/mod.rs /^ pub fn swapon(path: *const ::c_char, swapflags: ::c_int) -> ::c_int;$/;" f +swapon vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn swapon(path: *const ::c_char, swapflags: ::c_int) -> ::c_int;$/;" f +swapon vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn swapon(path: *const ::c_char, swapflags: ::c_int) -> ::c_int;$/;" f +swblk_t vendor/libc/src/solid/mod.rs /^pub type swblk_t = i32;$/;" t +swd builtins_rust/wait/src/signal.rs /^ pub swd: __uint16_t,$/;" m struct:_fpstate +swd builtins_rust/wait/src/signal.rs /^ pub swd: __uint16_t,$/;" m struct:_libc_fpstate +swd r_bash/src/lib.rs /^ pub swd: __uint16_t,$/;" m struct:_fpstate +swd r_bash/src/lib.rs /^ pub swd: __uint16_t,$/;" m struct:_libc_fpstate +swd r_glob/src/lib.rs /^ pub swd: __uint16_t,$/;" m struct:_fpstate +swd r_glob/src/lib.rs /^ pub swd: __uint16_t,$/;" m struct:_libc_fpstate +swd r_readline/src/lib.rs /^ pub swd: __uint16_t,$/;" m struct:_fpstate +swd r_readline/src/lib.rs /^ pub swd: __uint16_t,$/;" m struct:_libc_fpstate +switch_sem vendor/libc/src/unix/haiku/native.rs /^ pub fn switch_sem(semToBeReleased: sem_id, id: sem_id) -> status_t;$/;" f +switch_sem_etc vendor/libc/src/unix/haiku/native.rs /^ pub fn switch_sem_etc($/;" f +switchfont support/man2html.c /^static char *switchfont[16] = {$/;" v typeref:typename:char * [16] file: +swprintf r_bash/src/lib.rs /^ pub fn swprintf($/;" f +swprintf r_glob/src/lib.rs /^ pub fn swprintf($/;" f +swprintf r_readline/src/lib.rs /^ pub fn swprintf($/;" f +swscanf r_bash/src/lib.rs /^ pub fn swscanf(__s: *const wchar_t, __format: *const wchar_t, ...) -> ::std::os::raw::c_int;$/;" f +swscanf r_glob/src/lib.rs /^ pub fn swscanf(__s: *const wchar_t, __format: *const wchar_t, ...) -> ::std::os::raw::c_int;$/;" f +swscanf r_readline/src/lib.rs /^ pub fn swscanf(__s: *const wchar_t, __format: *const wchar_t, ...) -> ::std::os::raw::c_int;$/;" f +sym vendor/proc-macro2/src/fallback.rs /^ sym: String,$/;" m struct:Ident +symbolic_link lib/readline/colors.h /^ symbolic_link,$/;" e enum:filetype +symlink r_bash/src/lib.rs /^ pub fn symlink($/;" f +symlink r_glob/src/lib.rs /^ pub fn symlink($/;" f +symlink r_readline/src/lib.rs /^ pub fn symlink($/;" f +symlink vendor/libc/src/fuchsia/mod.rs /^ pub fn symlink(path1: *const c_char, path2: *const c_char) -> ::c_int;$/;" f +symlink vendor/libc/src/unix/mod.rs /^ pub fn symlink(path1: *const c_char, path2: *const c_char) -> ::c_int;$/;" f +symlink vendor/libc/src/vxworks/mod.rs /^ pub fn symlink(path1: *const ::c_char, path2: *const ::c_char) -> ::c_int;$/;" f +symlink vendor/libc/src/wasi.rs /^ pub fn symlink(path1: *const c_char, path2: *const c_char) -> ::c_int;$/;" f +symlinkat r_bash/src/lib.rs /^ pub fn symlinkat($/;" f +symlinkat r_glob/src/lib.rs /^ pub fn symlinkat($/;" f +symlinkat r_readline/src/lib.rs /^ pub fn symlinkat($/;" f +symlinkat vendor/libc/src/fuchsia/mod.rs /^ pub fn symlinkat($/;" f +symlinkat vendor/libc/src/unix/mod.rs /^ pub fn symlinkat($/;" f +symlinkat vendor/libc/src/wasi.rs /^ pub fn symlinkat($/;" f +symlinks Makefile.in /^symlinks:$/;" t +syn_brackets vendor/syn/tests/test_precedence.rs /^fn syn_brackets(syn_expr: syn::Expr) -> syn::Expr {$/;" f +syn_expr vendor/syn/tests/common/parse.rs /^pub fn syn_expr(input: &str) -> Option {$/;" f +syn_parse vendor/syn/benches/rust.rs /^mod syn_parse {$/;" n +sync r_bash/src/lib.rs /^ pub fn sync();$/;" f +sync r_glob/src/lib.rs /^ pub fn sync();$/;" f +sync r_readline/src/lib.rs /^ pub fn sync();$/;" f +sync vendor/elsa/src/lib.rs /^pub mod sync;$/;" n +sync vendor/fluent-fallback/src/localization.rs /^ sync: bool,$/;" m struct:Localization +sync vendor/libc/src/fuchsia/mod.rs /^ pub fn sync();$/;" f +sync vendor/libc/src/unix/bsd/mod.rs /^ pub fn sync();$/;" f +sync vendor/libc/src/unix/haiku/mod.rs /^ pub fn sync();$/;" f +sync vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn sync();$/;" f +sync vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sync();$/;" f +sync vendor/once_cell/src/lib.rs /^pub mod sync {$/;" n +sync vendor/once_cell/tests/it.rs /^mod sync {$/;" n +sync vendor/stdext/src/lib.rs /^pub mod sync;$/;" n +sync_buffered_stream builtins_rust/exec/src/lib.rs /^ fn sync_buffered_stream(bfd: i32) -> i32;$/;" f +sync_buffered_stream builtins_rust/read/src/intercdep.rs /^ pub fn sync_buffered_stream(arg1: c_int) -> c_int;$/;" f +sync_buffered_stream input.c /^sync_buffered_stream (bfd)$/;" f +sync_buffered_stream r_bash/src/lib.rs /^ pub fn sync_buffered_stream(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +sync_buffered_stream r_jobs/src/lib.rs /^ fn sync_buffered_stream(_: c_int) -> c_int;$/;" f +sync_file_range r_bash/src/lib.rs /^ pub fn sync_file_range($/;" f +sync_file_range vendor/libc/src/fuchsia/mod.rs /^ pub fn sync_file_range($/;" f +sync_file_range vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sync_file_range($/;" f +syncfs r_bash/src/lib.rs /^ pub fn syncfs(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +syncfs r_glob/src/lib.rs /^ pub fn syncfs(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +syncfs r_readline/src/lib.rs /^ pub fn syncfs(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +syncfs vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn syncfs(fd: ::c_int) -> ::c_int;$/;" f +synchapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "synchapi")] pub mod synchapi;$/;" n +syntax.c Makefile.in /^syntax.c: mksyntax${EXEEXT} $(srcdir)\/syntax.h $/;" t +sys vendor/nix/src/lib.rs /^pub mod sys;$/;" n +sys vendor/nix/test/test.rs /^mod sys;$/;" n +sys_checkpoint vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^ pub fn sys_checkpoint(tpe: ::c_int, fd: ::c_int, pid: ::pid_t, retval: ::c_int) -> ::c_int;$/;" f +sys_errlist r_bash/src/lib.rs /^ pub static mut sys_errlist: [*const ::std::os::raw::c_char; 0usize];$/;" v +sys_errlist r_readline/src/lib.rs /^ pub static mut sys_errlist: [*const ::std::os::raw::c_char; 0usize];$/;" v +sys_error error.c /^sys_error (const char *format, ...)$/;" f typeref:typename:void +sys_error r_bash/src/lib.rs /^ pub fn sys_error(arg1: *const ::std::os::raw::c_char, ...);$/;" f +sys_error r_jobs/src/lib.rs /^ fn sys_error(format:*const c_char, ...);$/;" f +sys_nerr r_bash/src/lib.rs /^ pub static mut sys_nerr: ::std::os::raw::c_int;$/;" v +sys_nerr r_readline/src/lib.rs /^ pub static mut sys_nerr: ::std::os::raw::c_int;$/;" v +sys_siglist builtins_rust/wait/src/signal.rs /^ pub static mut sys_siglist: [*const ::std::os::raw::c_char; 65usize];$/;" v +sys_siglist r_bash/src/lib.rs /^ pub static mut sys_siglist: [*const ::std::os::raw::c_char; 65usize];$/;" v +sys_siglist r_glob/src/lib.rs /^ pub static mut sys_siglist: [*const ::std::os::raw::c_char; 65usize];$/;" v +sys_siglist r_readline/src/lib.rs /^ pub static mut sys_siglist: [*const ::std::os::raw::c_char; 65usize];$/;" v +sys_siglist siglist.c /^char *sys_siglist[NSIG];$/;" v typeref:typename:char * [] +sys_siglist siglist.h /^# define sys_siglist /;" d +sys_tmpdir lib/sh/tmpfile.c /^static char *sys_tmpdir = (char *)NULL;$/;" v typeref:typename:char * file: +syscall r_bash/src/lib.rs /^ pub fn syscall(__sysno: ::std::os::raw::c_long, ...) -> ::std::os::raw::c_long;$/;" f +syscall r_glob/src/lib.rs /^ pub fn syscall(__sysno: ::std::os::raw::c_long, ...) -> ::std::os::raw::c_long;$/;" f +syscall r_readline/src/lib.rs /^ pub fn syscall(__sysno: ::std::os::raw::c_long, ...) -> ::std::os::raw::c_long;$/;" f +syscall vendor/libc/src/fuchsia/mod.rs /^ pub fn syscall(num: ::c_long, ...) -> ::c_long;$/;" f +syscall vendor/libc/src/unix/bsd/mod.rs /^ pub fn syscall(num: ::c_int, ...) -> ::c_int;$/;" f +syscall vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn syscall(num: ::c_long, ...) -> ::c_long;$/;" f +syscall vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn syscall(num: ::c_long, ...) -> ::c_long;$/;" f +syscall vendor/nix/src/sys/ptrace/linux.rs /^pub fn syscall>>(pid: Pid, sig: T) -> Result<()> {$/;" f +syscall_stop vendor/nix/src/sys/wait.rs /^fn syscall_stop(status: i32) -> bool {$/;" f +syscom lib/readline/examples/fileman.c /^static char syscom[1024];$/;" v typeref:typename:char[1024] file: +sysconf r_bash/src/lib.rs /^ pub fn sysconf(__name: ::std::os::raw::c_int) -> ::std::os::raw::c_long;$/;" f +sysconf r_glob/src/lib.rs /^ pub fn sysconf(__name: ::std::os::raw::c_int) -> ::std::os::raw::c_long;$/;" f +sysconf r_readline/src/lib.rs /^ pub fn sysconf(__name: ::std::os::raw::c_int) -> ::std::os::raw::c_long;$/;" f +sysconf vendor/libc/src/fuchsia/mod.rs /^ pub fn sysconf(name: ::c_int) -> ::c_long;$/;" f +sysconf vendor/libc/src/unix/mod.rs /^ pub fn sysconf(name: ::c_int) -> ::c_long;$/;" f +sysconf vendor/libc/src/vxworks/mod.rs /^ pub fn sysconf(attr: ::c_int) -> ::c_long;$/;" f +sysconf vendor/libc/src/wasi.rs /^ pub fn sysconf(name: ::c_int) -> ::c_long;$/;" f +sysctl vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn sysctl($/;" f +sysctl vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sysctl($/;" f +sysctl vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn sysctl($/;" f +sysctl vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs /^ pub fn sysctl($/;" f +sysctl vendor/libc/src/unix/linux_like/linux/gnu/b32/mod.rs /^ pub fn sysctl($/;" f +sysctl vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs /^ pub fn sysctl($/;" f +sysctl vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs /^ pub fn sysctl($/;" f +sysctl vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs /^ pub fn sysctl($/;" f +sysctl vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs /^ pub fn sysctl($/;" f +sysctl vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs /^ pub fn sysctl($/;" f +sysctl vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs /^ pub fn sysctl($/;" f +sysctl vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs /^ pub fn sysctl($/;" f +sysctl vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^ pub fn sysctl($/;" f +sysctlbyname vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn sysctlbyname($/;" f +sysctlbyname vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sysctlbyname($/;" f +sysctlbyname vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn sysctlbyname($/;" f +sysctlnametomib vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn sysctlnametomib($/;" f +sysctlnametomib vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^ pub fn sysctlnametomib($/;" f +sysdep_segment lib/intl/gmo.h /^struct sysdep_segment$/;" s +sysdep_segments_offset lib/intl/gmo.h /^ nls_uint32 sysdep_segments_offset;$/;" m struct:mo_file_header typeref:typename:nls_uint32 +sysdep_string lib/intl/gmo.h /^struct sysdep_string$/;" s +sysdep_string_desc lib/intl/gettextP.h /^struct sysdep_string_desc$/;" s +sysdepref lib/intl/gmo.h /^ nls_uint32 sysdepref;$/;" m struct:sysdep_string::segment_pair typeref:typename:nls_uint32 +sysdir_get_next_search_path_enumeration vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn sysdir_get_next_search_path_enumeration($/;" f +sysdir_search_path_directory_t vendor/libc/src/unix/bsd/apple/mod.rs /^impl ::Clone for sysdir_search_path_directory_t {$/;" c +sysdir_search_path_directory_t vendor/libc/src/unix/bsd/apple/mod.rs /^impl ::Copy for sysdir_search_path_directory_t {}$/;" c +sysdir_search_path_directory_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub enum sysdir_search_path_directory_t {$/;" g +sysdir_search_path_domain_mask_t vendor/libc/src/unix/bsd/apple/mod.rs /^impl ::Clone for sysdir_search_path_domain_mask_t {$/;" c +sysdir_search_path_domain_mask_t vendor/libc/src/unix/bsd/apple/mod.rs /^impl ::Copy for sysdir_search_path_domain_mask_t {}$/;" c +sysdir_search_path_domain_mask_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub enum sysdir_search_path_domain_mask_t {$/;" g +sysdir_search_path_enumeration_state vendor/libc/src/unix/bsd/apple/mod.rs /^pub type sysdir_search_path_enumeration_state = ::c_uint;$/;" t +sysdir_start_search_path_enumeration vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn sysdir_start_search_path_enumeration($/;" f +sysemu vendor/nix/src/sys/ptrace/linux.rs /^pub fn sysemu>>(pid: Pid, sig: T) -> Result<()> {$/;" f +sysemu_step vendor/nix/src/sys/ptrace/linux.rs /^pub fn sysemu_step>>(pid: Pid, sig: T) -> Result<()> {$/;" f +sysinfo vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn sysinfo(info: *mut ::sysinfo) -> ::c_int;$/;" f +sysinfo vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn sysinfo(info: *mut ::sysinfo) -> ::c_int;$/;" f +sysinfo vendor/libc/src/unix/solarish/mod.rs /^ pub fn sysinfo(command: ::c_int, buf: *mut ::c_char, count: ::c_long) -> ::c_int;$/;" f +sysinfo vendor/nix/src/sys/mod.rs /^pub mod sysinfo;$/;" n +sysinfo vendor/nix/src/sys/sysinfo.rs /^pub fn sysinfo() -> Result {$/;" f +sysinfo_works vendor/nix/test/sys/test_sysinfo.rs /^fn sysinfo_works() {$/;" f +sysinfoapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "sysinfoapi")] pub mod sysinfoapi;$/;" n +syslog vendor/libc/src/fuchsia/mod.rs /^ pub fn syslog(priority: ::c_int, message: *const ::c_char, ...);$/;" f +syslog vendor/libc/src/unix/mod.rs /^ pub fn syslog(priority: ::c_int, message: *const ::c_char, ...);$/;" f +syslog vendor/libc/src/vxworks/mod.rs /^ pub fn syslog(priority: ::c_int, message: *const ::c_char, ...);$/;" f +syslog_history bashhist.c /^int syslog_history = 1;$/;" v typeref:typename:int +syslog_history bashhist.c /^int syslog_history = SYSLOG_SHOPT;$/;" v typeref:typename:int +sysname vendor/nix/src/sys/utsname.rs /^ pub fn sysname(&self) -> &OsStr {$/;" P implementation:UtsName +system r_bash/src/lib.rs /^ pub fn system(__command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +system r_glob/src/lib.rs /^ pub fn system(__command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +system r_readline/src/lib.rs /^ pub fn system(__command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +system vendor/libc/src/fuchsia/mod.rs /^ pub fn system(s: *const c_char) -> c_int;$/;" f +system vendor/libc/src/unix/mod.rs /^ pub fn system(s: *const c_char) -> c_int;$/;" f +system vendor/libc/src/vxworks/mod.rs /^ pub fn system(s: *const c_char) -> c_int;$/;" f +system vendor/libc/src/windows/mod.rs /^ pub fn system(s: *const c_char) -> c_int;$/;" f +system_time vendor/libc/src/unix/haiku/native.rs /^ pub fn system_time() -> bigtime_t;$/;" f +system_time vendor/nix/src/sys/resource.rs /^ pub fn system_time(&self) -> TimeVal {$/;" P implementation:Usage +system_time_nsecs vendor/libc/src/unix/haiku/native.rs /^ pub fn system_time_nsecs() -> nanotime_t;$/;" f +systemtopologyapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "systemtopologyapi")] pub mod systemtopologyapi;$/;" n +sysv_signal r_bash/src/lib.rs /^ pub fn sysv_signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_/;" f +sysv_signal r_glob/src/lib.rs /^ pub fn sysv_signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_/;" f +sysv_signal r_readline/src/lib.rs /^ pub fn sysv_signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_/;" f +t vendor/async-trait/tests/test.rs /^ macro_rules! t {$/;" M method:issue68::Example::method +t vendor/intl_pluralrules/src/operands.rs /^ pub t: u64,$/;" m struct:PluralOperands +t vendor/nix/src/sys/aio.rs /^mod t {$/;" n +t vendor/nix/test/test_ptymaster_drop.rs /^mod t {$/;" n +t1 vendor/bitflags/src/lib.rs /^ mod t1 {$/;" n module:tests +t2h_anchor support/texi2html /^sub t2h_anchor {$/;" s +t2h_print_label support/texi2html /^sub t2h_print_label$/;" s +t2h_print_lines support/texi2html /^sub t2h_print_lines {$/;" s +t_dsusp lib/readline/rltty.h /^ unsigned char t_dsusp;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_dsusp r_readline/src/lib.rs /^ pub t_dsusp: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_eof lib/readline/rltty.h /^ unsigned char t_eof;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_eof r_readline/src/lib.rs /^ pub t_eof: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_eol lib/readline/rltty.h /^ unsigned char t_eol;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_eol r_readline/src/lib.rs /^ pub t_eol: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_eol2 lib/readline/rltty.h /^ unsigned char t_eol2;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_eol2 r_readline/src/lib.rs /^ pub t_eol2: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_erase lib/readline/rltty.h /^ unsigned char t_erase;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_erase r_readline/src/lib.rs /^ pub t_erase: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_flush lib/readline/rltty.h /^ unsigned char t_flush;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_flush r_readline/src/lib.rs /^ pub t_flush: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_intr lib/readline/rltty.h /^ unsigned char t_intr;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_intr r_readline/src/lib.rs /^ pub t_intr: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_kill lib/readline/rltty.h /^ unsigned char t_kill;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_kill r_readline/src/lib.rs /^ pub t_kill: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_lnext lib/readline/rltty.h /^ unsigned char t_lnext;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_lnext r_readline/src/lib.rs /^ pub t_lnext: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_quit lib/readline/rltty.h /^ unsigned char t_quit;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_quit r_readline/src/lib.rs /^ pub t_quit: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_reprint lib/readline/rltty.h /^ unsigned char t_reprint;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_reprint r_readline/src/lib.rs /^ pub t_reprint: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_start lib/readline/rltty.h /^ unsigned char t_start;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_start r_readline/src/lib.rs /^ pub t_start: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_status lib/readline/rltty.h /^ unsigned char t_status;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_status r_readline/src/lib.rs /^ pub t_status: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_stop lib/readline/rltty.h /^ unsigned char t_stop;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_stop r_readline/src/lib.rs /^ pub t_stop: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_susp lib/readline/rltty.h /^ unsigned char t_susp;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_susp r_readline/src/lib.rs /^ pub t_susp: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +t_werase lib/readline/rltty.h /^ unsigned char t_werase;$/;" m struct:_rl_tty_chars typeref:typename:unsigned char +t_werase r_readline/src/lib.rs /^ pub t_werase: ::std::os::raw::c_uchar,$/;" m struct:_rl_tty_chars +table builtins_rust/declare/src/lib.rs /^ table: *mut HASH_TABLE, \/* variables at this scope *\/$/;" m struct:VAR_CONTEXT +table hashlib.c /^HASH_TABLE *table, *ntable;$/;" v typeref:typename:HASH_TABLE * +table r_bash/src/lib.rs /^ pub table: *mut HASH_TABLE,$/;" m struct:var_context +table variables.h /^ HASH_TABLE *table; \/* variables at this scope *\/$/;" m struct:var_context typeref:typename:HASH_TABLE * +table.o lib/malloc/Makefile.in /^table.o: ${BUILD_DIR}\/config.h$/;" t +table.o lib/malloc/Makefile.in /^table.o: ${srcdir}\/imalloc.h ${srcdir}\/table.h$/;" t +table.o lib/malloc/Makefile.in /^table.o: ${topdir}\/bashintl.h ${LIBINTL_H} ${BASHINCDIR}\/gettext.h$/;" t +table.o lib/malloc/Makefile.in /^table.o: table.c$/;" t +table_allocated lib/malloc/table.c /^static int table_allocated = 0;$/;" v typeref:typename:int file: +table_bucket_index lib/malloc/table.c /^static int table_bucket_index = REG_TABLE_SIZE-1;$/;" v typeref:typename:int file: +table_count lib/malloc/table.c /^static int table_count = 0;$/;" v typeref:typename:int file: +tableopt support/man2html.c /^static char *tableopt[] = {$/;" v typeref:typename:char * [] file: +tableoptl support/man2html.c /^static int tableoptl[] = {6, 6, 3, 6, 9, 3, 8, 5, 0};$/;" v typeref:typename:int[] file: +tables vendor/unic-langid-impl/src/likelysubtags/mod.rs /^mod tables;$/;" n +tables vendor/unicode-ident/src/lib.rs /^mod tables;$/;" n +tables vendor/unicode-ident/tests/static_size.rs /^ mod tables;$/;" n function:test_size +tabsize execute_cmd.c /^static int LINES, COLS, tabsize;$/;" v typeref:typename:int file: +tabstops support/man2html.c /^static int tabstops[20] = {8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96};$/;" v typeref:typename:int[20] file: +tags Makefile.in /^tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE)$/;" t +tags lib/intl/Makefile.in /^tags: TAGS$/;" t +tags lib/readline/Makefile.in /^tags: force$/;" t +tai r_bash/src/lib.rs /^ pub tai: ::std::os::raw::c_int,$/;" m struct:timex +tai r_readline/src/lib.rs /^ pub tai: ::std::os::raw::c_int,$/;" m struct:timex +tail execute_cmd.c /^ struct cpelement *tail;$/;" m struct:cplist typeref:struct:cpelement * file: +tail vendor/futures-channel/src/mpsc/queue.rs /^ tail: UnsafeCell<*mut Node>,$/;" m struct:Queue +tail vendor/futures-util/src/stream/futures_unordered/ready_to_run_queue.rs /^ pub(super) tail: UnsafeCell<*const Task>,$/;" m struct:ReadyToRunQueue +tail_len vendor/smallvec/src/lib.rs /^ tail_len: usize,$/;" m struct:Drain +tail_start vendor/smallvec/src/lib.rs /^ tail_start: usize,$/;" m struct:Drain +take vendor/futures-core/src/task/__internal/atomic_waker.rs /^ pub fn take(&self) -> Option {$/;" P implementation:AtomicWaker +take vendor/futures-util/src/io/mod.rs /^ fn take(self, limit: u64) -> Take$/;" P interface:AsyncReadExt +take vendor/futures-util/src/io/mod.rs /^mod take;$/;" n +take vendor/futures-util/src/stream/stream/chunks.rs /^ fn take(self: Pin<&mut Self>) -> Vec {$/;" f +take vendor/futures-util/src/stream/stream/mod.rs /^ fn take(self, n: usize) -> Take$/;" P interface:StreamExt +take vendor/futures-util/src/stream/stream/mod.rs /^mod take;$/;" n +take vendor/futures-util/src/stream/try_stream/try_chunks.rs /^ fn take(self: Pin<&mut Self>) -> Vec {$/;" P implementation:TryChunks +take vendor/futures/tests/sink.rs /^ fn take(&self) -> bool {$/;" P implementation:Flag +take vendor/futures/tests_disabled/stream.rs /^fn take() {$/;" f +take vendor/once_cell/src/lib.rs /^ pub fn take(&mut self) -> Option {$/;" P implementation:sync::OnceCell +take vendor/once_cell/src/lib.rs /^ pub fn take(&mut self) -> Option {$/;" P implementation:unsync::OnceCell +take_byte_if vendor/fluent-syntax/src/parser/helper.rs /^ pub(super) fn take_byte_if(&mut self, b: u8) -> bool {$/;" f +take_f vendor/futures-util/src/sink/map_err.rs /^ fn take_f(self: Pin<&mut Self>) -> F {$/;" P implementation:SinkMapErr +take_future vendor/futures-util/src/stream/stream/take_until.rs /^ pub fn take_future(&mut self) -> Option {$/;" f +take_ident vendor/thiserror-impl/src/fmt.rs /^fn take_ident(read: &mut &str) -> Ident {$/;" f +take_inner vendor/proc-macro2/src/fallback.rs /^ fn take_inner(self) -> RcVecBuilder {$/;" P implementation:TokenStream +take_int vendor/thiserror-impl/src/fmt.rs /^fn take_int(read: &mut &str) -> String {$/;" f +take_or_clone_output vendor/futures-util/src/future/future/shared.rs /^ unsafe fn take_or_clone_output(self: Arc) -> Fut::Output {$/;" f +take_output vendor/futures-util/src/future/maybe_done.rs /^ pub fn take_output(self: Pin<&mut Self>) -> Option {$/;" P implementation:MaybeDone +take_output vendor/futures-util/src/future/try_maybe_done.rs /^ pub fn take_output(self: Pin<&mut Self>) -> Option {$/;" P implementation:TryMaybeDone +take_passes_errors_through vendor/futures/tests_disabled/stream.rs /^fn take_passes_errors_through() {$/;" f +take_result vendor/futures-util/src/stream/stream/take_until.rs /^ pub fn take_result(&mut self) -> Option {$/;" f +take_unchecked vendor/once_cell/src/lib.rs /^unsafe fn take_unchecked(val: &mut Option) -> T {$/;" f +take_until vendor/futures-util/src/stream/stream/mod.rs /^ fn take_until(self, fut: Fut) -> TakeUntil$/;" P interface:StreamExt +take_until vendor/futures-util/src/stream/stream/mod.rs /^mod take_until;$/;" n +take_until vendor/futures/tests/stream.rs /^fn take_until() {$/;" f +take_until_newline_or_eof vendor/proc-macro2/src/parse.rs /^fn take_until_newline_or_eof(input: Cursor) -> (Cursor, &str) {$/;" f +take_value vendor/futures-util/src/unfold_state.rs /^ pub(crate) fn take_value(self: Pin<&mut Self>) -> Option {$/;" P implementation:UnfoldState +take_while vendor/futures-util/src/stream/stream/mod.rs /^ fn take_while(self, f: F) -> TakeWhile$/;" P interface:StreamExt +take_while vendor/futures-util/src/stream/stream/mod.rs /^mod take_while;$/;" n +take_while vendor/futures/tests_disabled/stream.rs /^fn take_while() {$/;" f +target target/debug/.fingerprint/async-trait-53075c5c8959b32a/lib-async-trait.json /^{"rustc":12970975996024363646,"features":"[]","target":551322312977613315,"profile":975340450542/;" n +target target/debug/.fingerprint/async-trait-7c4672464f0388fc/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11798141446/;" n +target target/debug/.fingerprint/async-trait-dc7795157b39085b/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +target target/debug/.fingerprint/autocfg-81babb8c7645e162/lib-autocfg.json /^{"rustc":12970975996024363646,"features":"[]","target":14886237245231788030,"profile":9753404505/;" n +target target/debug/.fingerprint/bitflags-a3f52adafbe7bd15/lib-bitflags.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15712369643656012375,"profil/;" n +target target/debug/.fingerprint/cfg-if-3f62c4595cfb0baa/lib-cfg-if.json /^{"rustc":12970975996024363646,"features":"[]","target":10623512480563079566,"profile":1263731873/;" n +target target/debug/.fingerprint/chunky-vec-25c8080c5552d67d/lib-chunky-vec.json /^{"rustc":12970975996024363646,"features":"[]","target":12860975341646606932,"profile":1263731873/;" n +target target/debug/.fingerprint/command-3f2301a0b8319dd7/lib-command.json /^{"rustc":12970975996024363646,"features":"[]","target":5417082428695666398,"profile":92510136562/;" n +target target/debug/.fingerprint/elsa-581c602fdb79e601/lib-elsa.json /^{"rustc":12970975996024363646,"features":"[]","target":13141045837529244029,"profile":1263731873/;" n +target target/debug/.fingerprint/fluent-bundle-b9ebda6aa0541467/lib-fluent-bundle.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":14493079221408245091,"profil/;" n +target target/debug/.fingerprint/fluent-f96ab7bf14eb4220/lib-fluent.json /^{"rustc":12970975996024363646,"features":"[]","target":17950714941898373641,"profile":1263731873/;" n +target target/debug/.fingerprint/fluent-fallback-849c6dc43b71db90/lib-fluent-fallback.json /^{"rustc":12970975996024363646,"features":"[]","target":10820359435063943760,"profile":1263731873/;" n +target target/debug/.fingerprint/fluent-langneg-037c0f02a420ee68/lib-fluent-langneg.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":16225366920304407114,"profil/;" n +target target/debug/.fingerprint/fluent-resmgr-5162a7694062fd9e/lib-fluent-resmgr.json /^{"rustc":12970975996024363646,"features":"[]","target":3379522019595233024,"profile":12637318739/;" n +target target/debug/.fingerprint/fluent-syntax-68480c608f261690/lib-fluent-syntax.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":15798133207960287220,"profil/;" n +target target/debug/.fingerprint/futures-ad9f11efbe7a170e/lib-futures.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"default\\", \\"exe/;" n +target target/debug/.fingerprint/futures-channel-0b91dc9850f95b2f/lib-futures-channel.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +target target/debug/.fingerprint/futures-channel-2f83488af33bd2e0/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"futures-sink\\", \\"sink\\", \\"std\\/;" n +target target/debug/.fingerprint/futures-channel-d074534b2d4cda4f/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[10391698814/;" n +target target/debug/.fingerprint/futures-core-2d18c38c48df44e8/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +target target/debug/.fingerprint/futures-core-3960e88f418eb2a4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[44542323624/;" n +target target/debug/.fingerprint/futures-core-d2a88a7b5a7f0ee1/lib-futures-core.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1668537259044220187/;" n +target target/debug/.fingerprint/futures-executor-d8614d73ef5d7dc0/lib-futures-executor.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":8602152076983097671,"profile":12/;" n +target target/debug/.fingerprint/futures-io-325fddbe3e627f56/lib-futures-io.json /^{"rustc":12970975996024363646,"features":"[\\"std\\"]","target":5197339021387283783,"profile":12/;" n +target target/debug/.fingerprint/futures-macro-96d297ffb9151a0d/lib-futures-macro.json /^{"rustc":12970975996024363646,"features":"[]","target":12910862548246813326,"profile":9753404505/;" n +target target/debug/.fingerprint/futures-sink-61351f3385883401/lib-futures-sink.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":9344696541055699610/;" n +target target/debug/.fingerprint/futures-task-3c8f1348a371290d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[47291172302/;" n +target target/debug/.fingerprint/futures-task-a7a3baedef7e46b6/lib-futures-task.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":1561065093389343149/;" n +target target/debug/.fingerprint/futures-task-ec548f96845ad85c/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"std\\"]","target":2297296889237502566/;" n +target target/debug/.fingerprint/futures-util-6560aa3d3eff342f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +target target/debug/.fingerprint/futures-util-b90979fbd2cc829d/lib-futures-util.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"async-await\\", \\"async-await-macro\\/;" n +target target/debug/.fingerprint/futures-util-c5291a11800e8f30/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14011134057/;" n +target target/debug/.fingerprint/intl-memoizer-8f36effb14f2df4a/lib-intl-memoizer.json /^{"rustc":12970975996024363646,"features":"[]","target":13310433329757558784,"profile":1263731873/;" n +target target/debug/.fingerprint/intl_pluralrules-f0b4fe5fbda30542/lib-intl_pluralrules.json /^{"rustc":12970975996024363646,"features":"[]","target":6726524826640776999,"profile":12637318739/;" n +target target/debug/.fingerprint/lazy_static-e10fac4985e6b56c/lib-lazy_static.json /^{"rustc":12970975996024363646,"features":"[]","target":1623840821729021818,"profile":12637318739/;" n +target target/debug/.fingerprint/libc-077bf50fed000020/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +target target/debug/.fingerprint/libc-22c7bb9830eb1818/lib-libc.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":13077156443491956/;" n +target target/debug/.fingerprint/libc-24b43990676739e5/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"extra_traits\\", \\"std\\"]","targe/;" n +target target/debug/.fingerprint/libc-43b4d7c092e52669/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +target target/debug/.fingerprint/libc-a3e2dfc50e81dc79/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":81882161317594862/;" n +target target/debug/.fingerprint/libc-b00d50ac0138cacb/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[94433654076/;" n +target target/debug/.fingerprint/libloading-2d821d070c2be217/lib-libloading.json /^{"rustc":12970975996024363646,"features":"[]","target":3904882595153906123,"profile":12637318739/;" n +target target/debug/.fingerprint/memchr-33a6d58283ffc500/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +target target/debug/.fingerprint/memchr-e0b256fa500870a8/lib-memchr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":31226917920764820/;" n +target target/debug/.fingerprint/memchr-efe1a6443f5407c4/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[68932605086/;" n +target target/debug/.fingerprint/memoffset-1aadb1b9cb2faeff/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[64588881620/;" n +target target/debug/.fingerprint/memoffset-2718cd98d475b0c4/lib-memoffset.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":1229535848872979174,"profile/;" n +target target/debug/.fingerprint/memoffset-a57355c586d82b3f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":8188216131759486267,"profile/;" n +target target/debug/.fingerprint/nix-e93eb91097a1177d/lib-nix.json /^{"rustc":12970975996024363646,"features":"[\\"acct\\", \\"aio\\", \\"default\\", \\"dir\\", \\"e/;" n +target target/debug/.fingerprint/once_cell-41cc6c3bd22dc203/lib-once_cell.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"race\\", \\"std\\"]","/;" n +target target/debug/.fingerprint/pin-project-lite-5626122b1355b3ac/lib-pin-project-lite.json /^{"rustc":12970975996024363646,"features":"[]","target":924339747855814199,"profile":126373187397/;" n +target target/debug/.fingerprint/pin-utils-694d56b65e5a6e1a/lib-pin-utils.json /^{"rustc":12970975996024363646,"features":"[]","target":5471337654911496821,"profile":12637318739/;" n +target target/debug/.fingerprint/proc-macro2-644c0cdf04a23eb2/lib-proc-macro2.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1524382475/;" n +target target/debug/.fingerprint/proc-macro2-8651356e32f0c664/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +target target/debug/.fingerprint/proc-macro2-df8d93ee78a6010d/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[53794251369/;" n +target target/debug/.fingerprint/quote-40021ac0c5554f56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":2297296889/;" n +target target/debug/.fingerprint/quote-433a16073a4a5919/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[46586679685/;" n +target target/debug/.fingerprint/quote-73a2dfb0523dad29/lib-quote.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"proc-macro\\"]","target":1098128212/;" n +target target/debug/.fingerprint/r_bash-bf87d39e8ead1c99/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +target target/debug/.fingerprint/r_bash-f93fa277ec8c4d4c/lib-r_bash.json /^{"rustc":12970975996024363646,"features":"[]","target":9993114014920538264,"profile":92510136562/;" n +target target/debug/.fingerprint/r_glob-6b4b809fb790d461/lib-r_glob.json /^{"rustc":12970975996024363646,"features":"[]","target":10280238122671593723,"profile":9251013656/;" n +target target/debug/.fingerprint/r_jobs-f16639c7f8651379/lib-r_jobs.json /^{"rustc":12970975996024363646,"features":"[]","target":16922106121771119498,"profile":9251013656/;" n +target target/debug/.fingerprint/r_print_cmd-abe54c38387da493/lib-r_print_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":6663345184965337804,"profile":92510136562/;" n +target target/debug/.fingerprint/r_readline-f5bf32e827cfc7f8/lib-r_readline.json /^{"rustc":12970975996024363646,"features":"[]","target":1522013064282883413,"profile":92510136562/;" n +target target/debug/.fingerprint/ralias-56bbc25368028fd6/lib-ralias.json /^{"rustc":12970975996024363646,"features":"[]","target":16563785476216050989,"profile":9251013656/;" n +target target/debug/.fingerprint/rbind-d2f2f532fe839d35/lib-rbind.json /^{"rustc":12970975996024363646,"features":"[]","target":9779056153128789778,"profile":92510136562/;" n +target target/debug/.fingerprint/rbreak-d1b423e487d5b180/lib-rbreak.json /^{"rustc":12970975996024363646,"features":"[]","target":2410210003434527994,"profile":92510136562/;" n +target target/debug/.fingerprint/rbuiltin-becdafc4c7a43686/lib-rbuiltin.json /^{"rustc":12970975996024363646,"features":"[]","target":5910595313198825855,"profile":92510136562/;" n +target target/debug/.fingerprint/rcaller-f0f639532dfc4c52/lib-rcaller.json /^{"rustc":12970975996024363646,"features":"[]","target":9005724114437148711,"profile":92510136562/;" n +target target/debug/.fingerprint/rcd-1b27961e5dcc94b7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[14095985514/;" n +target target/debug/.fingerprint/rcd-47bbbd9b98203648/lib-rcd.json /^{"rustc":12970975996024363646,"features":"[]","target":12656326440267849743,"profile":9251013656/;" n +target target/debug/.fingerprint/rcd-4d7859c9e3ec3bd2/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +target target/debug/.fingerprint/rcmd-5ca75a0c0ebfc49a/lib-rcmd.json /^{"rustc":12970975996024363646,"features":"[]","target":2511252906684920568,"profile":92510136562/;" n +target target/debug/.fingerprint/rcolon-9b12520373fda9a9/lib-rcolon.json /^{"rustc":12970975996024363646,"features":"[]","target":5064290437853679191,"profile":92510136562/;" n +target target/debug/.fingerprint/rcommon-4b8ffe4949364845/lib-rcommon.json /^{"rustc":12970975996024363646,"features":"[]","target":3586215673770705851,"profile":92510136562/;" n +target target/debug/.fingerprint/rcomplete-17f1c15455226fe5/lib-rcomplete.json /^{"rustc":12970975996024363646,"features":"[]","target":3682102348064110310,"profile":92510136562/;" n +target target/debug/.fingerprint/rdeclare-1cbf383481bfb901/lib-rdeclare.json /^{"rustc":12970975996024363646,"features":"[]","target":4611354109076334304,"profile":92510136562/;" n +target target/debug/.fingerprint/recho-3486a836fbdd314a/lib-recho.json /^{"rustc":12970975996024363646,"features":"[]","target":11813974817777519623,"profile":9251013656/;" n +target target/debug/.fingerprint/renable-36489b632101985a/lib-renable.json /^{"rustc":12970975996024363646,"features":"[]","target":5273990991384741914,"profile":92510136562/;" n +target target/debug/.fingerprint/reval-119adbc1a84bd962/lib-reval.json /^{"rustc":12970975996024363646,"features":"[]","target":13644452643348308458,"profile":9251013656/;" n +target target/debug/.fingerprint/rexec-132ae60d912c6144/lib-rexec.json /^{"rustc":12970975996024363646,"features":"[]","target":11102983266783299865,"profile":9251013656/;" n +target target/debug/.fingerprint/rexec_cmd-bbb44ef657ecbdf7/lib-rexec_cmd.json /^{"rustc":12970975996024363646,"features":"[]","target":585090294168320570,"profile":925101365624/;" n +target target/debug/.fingerprint/rexit-3573efda9823793a/lib-rexit.json /^{"rustc":12970975996024363646,"features":"[]","target":3859555116326935549,"profile":92510136562/;" n +target target/debug/.fingerprint/rfc-8bc086dd56927adc/lib-rfc.json /^{"rustc":12970975996024363646,"features":"[]","target":833055423489702652,"profile":925101365624/;" n +target target/debug/.fingerprint/rfg_bg-668938ab7e763aff/lib-rfg_bg.json /^{"rustc":12970975996024363646,"features":"[]","target":2917472131068253319,"profile":92510136562/;" n +target target/debug/.fingerprint/rgetopts-1cc16e14152bdf22/lib-rgetopts.json /^{"rustc":12970975996024363646,"features":"[]","target":7737420621469522746,"profile":92510136562/;" n +target target/debug/.fingerprint/rhash-22261f5a1cb15c0a/lib-rhash.json /^{"rustc":12970975996024363646,"features":"[]","target":12261063930230884348,"profile":9251013656/;" n +target target/debug/.fingerprint/rhelp-982893304a98f822/lib-rhelp.json /^{"rustc":12970975996024363646,"features":"[]","target":17560455061510146931,"profile":9251013656/;" n +target target/debug/.fingerprint/rhistory-ac7a5497e567e7bf/lib-rhistory.json /^{"rustc":12970975996024363646,"features":"[]","target":7743567649321627175,"profile":92510136562/;" n +target target/debug/.fingerprint/rjobs-7cc59574883fed2b/lib-rjobs.json /^{"rustc":12970975996024363646,"features":"[]","target":17539667434677996889,"profile":9251013656/;" n +target target/debug/.fingerprint/rkill-e547639a811f6d8c/lib-rkill.json /^{"rustc":12970975996024363646,"features":"[]","target":4029560370716944882,"profile":92510136562/;" n +target target/debug/.fingerprint/rlet-7345d7c2ce3466cf/lib-rlet.json /^{"rustc":12970975996024363646,"features":"[]","target":1813043559431923632,"profile":92510136562/;" n +target target/debug/.fingerprint/rmapfile-0083802924ad7f26/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[11147785670/;" n +target target/debug/.fingerprint/rmapfile-29b29cd82f4bcadb/lib-rmapfile.json /^{"rustc":12970975996024363646,"features":"[]","target":15272956125224668654,"profile":9251013656/;" n +target target/debug/.fingerprint/rmapfile-667f5e08b80deb29/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":14691309153/;" n +target target/debug/.fingerprint/rprintf-640af4023da67fde/lib-rprintf.json /^{"rustc":12970975996024363646,"features":"[]","target":12011134403147061849,"profile":9251013656/;" n +target target/debug/.fingerprint/rpushd-cbb079699a2faf73/lib-rpushd.json /^{"rustc":12970975996024363646,"features":"[]","target":15916069765975312183,"profile":9251013656/;" n +target target/debug/.fingerprint/rread-4239a183ab7e13f7/lib-rread.json /^{"rustc":12970975996024363646,"features":"[]","target":5388697579648841453,"profile":92510136562/;" n +target target/debug/.fingerprint/rreturn-efe6a56bb0706dff/lib-rreturn.json /^{"rustc":12970975996024363646,"features":"[]","target":16799849222352697796,"profile":9251013656/;" n +target target/debug/.fingerprint/rset-9685598cea468e08/lib-rset.json /^{"rustc":12970975996024363646,"features":"[]","target":11900073911511630591,"profile":9251013656/;" n +target target/debug/.fingerprint/rsetattr-2ccfe4aac0835163/lib-rsetattr.json /^{"rustc":12970975996024363646,"features":"[]","target":16663995704894914970,"profile":9251013656/;" n +target target/debug/.fingerprint/rshift-967eeed59a476416/lib-rshift.json /^{"rustc":12970975996024363646,"features":"[]","target":785215846086165858,"profile":925101365624/;" n +target target/debug/.fingerprint/rshopt-5771fa49a4492af8/lib-rshopt.json /^{"rustc":12970975996024363646,"features":"[]","target":5070213748955630814,"profile":92510136562/;" n +target target/debug/.fingerprint/rsource-993b2597938bccf0/lib-rsource.json /^{"rustc":12970975996024363646,"features":"[]","target":9169411060049109353,"profile":92510136562/;" n +target target/debug/.fingerprint/rsuspend-7a8832e8d85cb9a3/lib-rsuspend.json /^{"rustc":12970975996024363646,"features":"[]","target":5186214511564817777,"profile":92510136562/;" n +target target/debug/.fingerprint/rtest-87b0b75689bafbdd/lib-rtest.json /^{"rustc":12970975996024363646,"features":"[]","target":15190381904762373745,"profile":9251013656/;" n +target target/debug/.fingerprint/rtimes-ec6bb2bcdba58409/lib-rtimes.json /^{"rustc":12970975996024363646,"features":"[]","target":12727629096831894111,"profile":9251013656/;" n +target target/debug/.fingerprint/rtrap-016933fa2922cdda/lib-rtrap.json /^{"rustc":12970975996024363646,"features":"[]","target":8123269979450382979,"profile":92510136562/;" n +target target/debug/.fingerprint/rtype-d60108d2d57c6663/lib-rtype.json /^{"rustc":12970975996024363646,"features":"[]","target":4740858349710465455,"profile":92510136562/;" n +target target/debug/.fingerprint/rulimit-fa7b9baa12bc2f07/lib-rulimit.json /^{"rustc":12970975996024363646,"features":"[]","target":9992600795616851653,"profile":92510136562/;" n +target target/debug/.fingerprint/rumask-b851090bf7b2f4d2/lib-rumask.json /^{"rustc":12970975996024363646,"features":"[]","target":3592502331588643349,"profile":92510136562/;" n +target target/debug/.fingerprint/rustc-hash-8aaf6fc8e2d835aa/lib-rustc-hash.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":15096661004575481/;" n +target target/debug/.fingerprint/rwait-1eb578e531aa0027/lib-rwait.json /^{"rustc":12970975996024363646,"features":"[]","target":16898272642349460714,"profile":9251013656/;" n +target target/debug/.fingerprint/self_cell-7fb8e37aa015f455/lib-self_cell.json /^{"rustc":12970975996024363646,"features":"[]","target":5611257680490292887,"profile":12637318739/;" n +target target/debug/.fingerprint/slab-8a7ecdc6779c6f1f/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":22972968892375025/;" n +target target/debug/.fingerprint/slab-9868c1f1222b3180/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[15180098575/;" n +target target/debug/.fingerprint/slab-b5ab8113da0c8dec/lib-slab.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":68870313052338554/;" n +target target/debug/.fingerprint/smallvec-2f752574f121737e/lib-smallvec.json /^{"rustc":12970975996024363646,"features":"[]","target":15021638563153388439,"profile":1263731873/;" n +target target/debug/.fingerprint/stable_deref_trait-7d7a4d5467c2d017/lib-stable_deref_trait.json /^{"rustc":12970975996024363646,"features":"[\\"alloc\\", \\"default\\", \\"std\\"]","target":1373/;" n +target target/debug/.fingerprint/stdext-8ff10a56eb999e72/lib-stdext.json /^{"rustc":12970975996024363646,"features":"[]","target":7255375872481938229,"profile":12637318739/;" n +target target/debug/.fingerprint/syn-2b84a9c5edb7ed56/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +target target/debug/.fingerprint/syn-87f5b7ccae672e30/lib-syn.json /^{"rustc":12970975996024363646,"features":"[\\"clone-impls\\", \\"default\\", \\"derive\\", \\"fu/;" n +target target/debug/.fingerprint/syn-c30c92a7130ed581/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[37530936936/;" n +target target/debug/.fingerprint/thiserror-08e69d8e9ce80f41/build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"[]","target":2297296889237502566,"profile":97534045054/;" n +target target/debug/.fingerprint/thiserror-370ee8694a12dea7/run-build-script-build-script-build.json /^{"rustc":12970975996024363646,"features":"","target":0,"profile":0,"path":0,"deps":[[88810743117/;" n +target target/debug/.fingerprint/thiserror-54d2df446404826f/lib-thiserror.json /^{"rustc":12970975996024363646,"features":"[]","target":8157378315893091620,"profile":12637318739/;" n +target target/debug/.fingerprint/thiserror-impl-1ba3bf67bf961d29/lib-thiserror-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":1479381930127311920,"profile":97534045054/;" n +target target/debug/.fingerprint/tinystr-1a91dd5c64efd158/lib-tinystr.json /^{"rustc":12970975996024363646,"features":"[\\"default\\", \\"std\\"]","target":83170331729842466/;" n +target target/debug/.fingerprint/type-map-fbc261c248aed942/lib-type-map.json /^{"rustc":12970975996024363646,"features":"[]","target":17599011683367212518,"profile":1263731873/;" n +target target/debug/.fingerprint/unic-langid-f3885c746e58e97f/lib-unic-langid.json /^{"rustc":12970975996024363646,"features":"[\\"default\\"]","target":2921629880234357215,"profile/;" n +target target/debug/.fingerprint/unic-langid-impl-e74573c7137dc787/lib-unic-langid-impl.json /^{"rustc":12970975996024363646,"features":"[]","target":14033275720697303396,"profile":1263731873/;" n +target target/debug/.fingerprint/unicode-ident-c5ad04ff65641340/lib-unicode-ident.json /^{"rustc":12970975996024363646,"features":"[]","target":18016288022221096693,"profile":9753404505/;" n +target vendor/autocfg/src/lib.rs /^ target: Option,$/;" m struct:AutoCfg +target vendor/pin-project-lite/src/lib.rs /^ target: *mut T,$/;" m struct:__private::UnsafeOverwriteGuard +target-c-int-width vendor/memchr/src/tests/x86_64-soft_float.json /^ "target-c-int-width": "32",$/;" s +target-endian vendor/memchr/src/tests/x86_64-soft_float.json /^ "target-endian": "little",$/;" s +target-pointer-width vendor/memchr/src/tests/x86_64-soft_float.json /^ "target-pointer-width": "64",$/;" s +target_has_feature vendor/memchr/build.rs /^fn target_has_feature(feature: &str) -> bool {$/;" f +targets builtins/Makefile.in /^targets: libbuiltins.a $(HELPFILES_TARGET)$/;" t +task vendor/futures-channel/src/mpsc/mod.rs /^ task: Option,$/;" m struct:SenderTask +task vendor/futures-core/src/lib.rs /^pub mod task;$/;" n +task vendor/futures-util/src/lib.rs /^pub mod task;$/;" n +task vendor/futures-util/src/stream/futures_unordered/iter.rs /^ pub(super) task: *const Task,$/;" m struct:IterPinMut +task vendor/futures-util/src/stream/futures_unordered/iter.rs /^ pub(super) task: *const Task,$/;" m struct:IterPinRef +task vendor/futures-util/src/stream/futures_unordered/mod.rs /^ task: Option>>,$/;" m struct:FuturesUnordered::poll_next::Bomb +task vendor/futures-util/src/stream/futures_unordered/mod.rs /^mod task;$/;" n +task vendor/futures/tests/auto_traits.rs /^pub mod task {$/;" n +task vendor/futures/tests/object_safety.rs /^fn task() {$/;" f +taskDelay vendor/libc/src/vxworks/mod.rs /^ pub fn taskDelay(ticks: ::_Vx_ticks_t) -> ::c_int;$/;" f +taskIdSelf vendor/libc/src/vxworks/mod.rs /^ pub fn taskIdSelf() -> ::TASK_ID;$/;" f +taskKill vendor/libc/src/vxworks/mod.rs /^ pub fn taskKill(taskId: ::TASK_ID, signo: ::c_int) -> ::c_int;$/;" f +task_create vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn task_create($/;" f +task_flavor_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type task_flavor_t = natural_t;$/;" t +task_for_pid vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn task_for_pid($/;" f +task_info vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn task_info($/;" f +task_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type task_info_t = *mut integer_t;$/;" t +task_inspect_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type task_inspect_t = ::mach_port_t;$/;" t +task_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type task_t = ::mach_port_t;$/;" t +task_terminate vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn task_terminate(target_task: ::task_t) -> ::kern_return_t;$/;" f +task_thread_times_info_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type task_thread_times_info_data_t = task_thread_times_info;$/;" t +task_thread_times_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type task_thread_times_info_t = *mut task_thread_times_info;$/;" t +task_threads vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn task_threads($/;" f +tasks vendor/futures/tests/sink.rs /^ tasks: RefCell>,$/;" m struct:Allow +tasks_are_scheduled_fairly vendor/futures-executor/tests/local_pool.rs /^fn tasks_are_scheduled_fairly() {$/;" f +taskschd vendor/winapi/src/um/mod.rs /^#[cfg(feature = "taskschd")] pub mod taskschd;$/;" n +tbcoalesce lib/malloc/mstats.h /^ int tbcoalesce;$/;" m struct:_malstats typeref:typename:int +tbsplit lib/malloc/mstats.h /^ int tbsplit;$/;" m struct:_malstats typeref:typename:int +tc_strings lib/readline/terminal.c /^static const struct _tc_string tc_strings[] =$/;" v typeref:typename:const struct _tc_string[] file: +tc_value lib/readline/terminal.c /^ char **tc_value;$/;" m struct:_tc_string typeref:typename:char ** file: +tc_var lib/readline/terminal.c /^ const char * const tc_var;$/;" m struct:_tc_string typeref:typename:const char * const file: +tcap_initialized lib/readline/terminal.c /^static int tcap_initialized;$/;" v typeref:typename:int file: +tcdrain r_bash/src/lib.rs /^ pub fn tcdrain(__fd: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +tcdrain vendor/libc/src/fuchsia/mod.rs /^ pub fn tcdrain(fd: ::c_int) -> ::c_int;$/;" f +tcdrain vendor/libc/src/unix/mod.rs /^ pub fn tcdrain(fd: ::c_int) -> ::c_int;$/;" f +tcdrain vendor/nix/src/sys/termios.rs /^pub fn tcdrain(fd: RawFd) -> Result<()> {$/;" f +tcflag_t r_bash/src/lib.rs /^pub type tcflag_t = ::std::os::raw::c_uint;$/;" t +tcflag_t r_jobs/src/lib.rs /^pub type tcflag_t = libc::c_uint;$/;" t +tcflag_t vendor/libc/src/fuchsia/mod.rs /^pub type tcflag_t = ::c_uint;$/;" t +tcflag_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type tcflag_t = ::c_ulong;$/;" t +tcflag_t vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub type tcflag_t = ::c_uint;$/;" t +tcflag_t vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type tcflag_t = ::c_uint;$/;" t +tcflag_t vendor/libc/src/unix/haiku/mod.rs /^pub type tcflag_t = ::c_uint;$/;" t +tcflag_t vendor/libc/src/unix/linux_like/mod.rs /^pub type tcflag_t = ::c_uint;$/;" t +tcflag_t vendor/libc/src/unix/newlib/mod.rs /^pub type tcflag_t = ::c_uint;$/;" t +tcflag_t vendor/libc/src/unix/redox/mod.rs /^pub type tcflag_t = u32;$/;" t +tcflag_t vendor/libc/src/unix/solarish/mod.rs /^pub type tcflag_t = ::c_uint;$/;" t +tcflow lib/readline/rlwinsize.h /^# define tcflow(/;" d +tcflow r_bash/src/lib.rs /^ pub fn tcflow($/;" f +tcflow vendor/libc/src/fuchsia/mod.rs /^ pub fn tcflow(fd: ::c_int, action: ::c_int) -> ::c_int;$/;" f +tcflow vendor/libc/src/unix/mod.rs /^ pub fn tcflow(fd: ::c_int, action: ::c_int) -> ::c_int;$/;" f +tcflow vendor/nix/src/sys/termios.rs /^pub fn tcflow(fd: RawFd, action: FlowArg) -> Result<()> {$/;" f +tcflush r_bash/src/lib.rs /^ pub fn tcflush($/;" f +tcflush vendor/libc/src/fuchsia/mod.rs /^ pub fn tcflush(fd: ::c_int, action: ::c_int) -> ::c_int;$/;" f +tcflush vendor/libc/src/unix/mod.rs /^ pub fn tcflush(fd: ::c_int, action: ::c_int) -> ::c_int;$/;" f +tcflush vendor/nix/src/sys/termios.rs /^pub fn tcflush(fd: RawFd, action: FlushArg) -> Result<()> {$/;" f +tcgetattr r_bash/src/lib.rs /^ pub fn tcgetattr($/;" f +tcgetattr vendor/libc/src/fuchsia/mod.rs /^ pub fn tcgetattr(fd: ::c_int, termios: *mut ::termios) -> ::c_int;$/;" f +tcgetattr vendor/libc/src/unix/mod.rs /^ pub fn tcgetattr(fd: ::c_int, termios: *mut ::termios) -> ::c_int;$/;" f +tcgetattr vendor/nix/src/sys/termios.rs /^pub fn tcgetattr(fd: RawFd) -> Result {$/;" f +tcgetpgrp jobs.c /^tcgetpgrp (fd)$/;" f +tcgetpgrp r_bash/src/lib.rs /^ pub fn tcgetpgrp(__fd: ::std::os::raw::c_int) -> __pid_t;$/;" f +tcgetpgrp r_glob/src/lib.rs /^ pub fn tcgetpgrp(__fd: ::std::os::raw::c_int) -> __pid_t;$/;" f +tcgetpgrp r_readline/src/lib.rs /^ pub fn tcgetpgrp(__fd: ::std::os::raw::c_int) -> __pid_t;$/;" f +tcgetpgrp vendor/libc/src/fuchsia/mod.rs /^ pub fn tcgetpgrp(fd: ::c_int) -> pid_t;$/;" f +tcgetpgrp vendor/libc/src/unix/mod.rs /^ pub fn tcgetpgrp(fd: ::c_int) -> pid_t;$/;" f +tcgetsid r_bash/src/lib.rs /^ pub fn tcgetsid(__fd: ::std::os::raw::c_int) -> __pid_t;$/;" f +tcgetsid vendor/libc/src/fuchsia/mod.rs /^ pub fn tcgetsid(fd: ::c_int) -> ::pid_t;$/;" f +tcgetsid vendor/libc/src/unix/mod.rs /^ pub fn tcgetsid(fd: ::c_int) -> ::pid_t;$/;" f +tchars lib/readline/rltty.c /^ struct tchars tchars; \/* Terminal special characters, including ^S and ^Q. *\/$/;" m struct:bsdtty typeref:struct:tchars file: +tcpestats vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "tcpestats")] pub mod tcpestats;$/;" n +tcpmib vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "tcpmib")] pub mod tcpmib;$/;" n +tcsendbreak r_bash/src/lib.rs /^ pub fn tcsendbreak($/;" f +tcsendbreak vendor/libc/src/fuchsia/mod.rs /^ pub fn tcsendbreak(fd: ::c_int, duration: ::c_int) -> ::c_int;$/;" f +tcsendbreak vendor/libc/src/unix/mod.rs /^ pub fn tcsendbreak(fd: ::c_int, duration: ::c_int) -> ::c_int;$/;" f +tcsendbreak vendor/nix/src/sys/termios.rs /^pub fn tcsendbreak(fd: RawFd, duration: c_int) -> Result<()> {$/;" f +tcsetattr r_bash/src/lib.rs /^ pub fn tcsetattr($/;" f +tcsetattr vendor/libc/src/fuchsia/mod.rs /^ pub fn tcsetattr(fd: ::c_int, optional_actions: ::c_int, termios: *const ::termios) -> ::c_i/;" f +tcsetattr vendor/libc/src/unix/mod.rs /^ pub fn tcsetattr(fd: ::c_int, optional_actions: ::c_int, termios: *const ::termios) -> ::c_i/;" f +tcsetattr vendor/nix/src/sys/termios.rs /^pub fn tcsetattr(fd: RawFd, actions: SetArg, termios: &Termios) -> Result<()> {$/;" f +tcsetpgrp jobs.c /^#define tcsetpgrp(/;" d file: +tcsetpgrp r_bash/src/lib.rs /^ pub fn tcsetpgrp(__fd: ::std::os::raw::c_int, __pgrp_id: __pid_t) -> ::std::os::raw::c_int;$/;" f +tcsetpgrp r_glob/src/lib.rs /^ pub fn tcsetpgrp(__fd: ::std::os::raw::c_int, __pgrp_id: __pid_t) -> ::std::os::raw::c_int;$/;" f +tcsetpgrp r_readline/src/lib.rs /^ pub fn tcsetpgrp(__fd: ::std::os::raw::c_int, __pgrp_id: __pid_t) -> ::std::os::raw::c_int;$/;" f +tcsetpgrp vendor/libc/src/fuchsia/mod.rs /^ pub fn tcsetpgrp(fd: ::c_int, pgrp: ::pid_t) -> ::c_int;$/;" f +tcsetpgrp vendor/libc/src/unix/mod.rs /^ pub fn tcsetpgrp(fd: ::c_int, pgrp: ::pid_t) -> ::c_int;$/;" f +tcsh_magic_space bashline.c /^tcsh_magic_space (count, ignore)$/;" f file: +tdir general.c /^static char tdir[PATH_MAX];$/;" v typeref:typename:char[] file: +te vendor/tinystr/benches/tinystr.rs /^ macro_rules! te {$/;" M function:test_eq +team_id vendor/libc/src/unix/haiku/native.rs /^pub type team_id = i32;$/;" t +tee r_bash/src/lib.rs /^ pub fn tee($/;" f +tee vendor/libc/src/fuchsia/mod.rs /^ pub fn tee(fd_in: ::c_int, fd_out: ::c_int, len: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +tee vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn tee(fd_in: ::c_int, fd_out: ::c_int, len: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +tee vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn tee(fd_in: ::c_int, fd_out: ::c_int, len: ::size_t, flags: ::c_uint) -> ::ssize_t;$/;" f +tell vendor/libc/src/solid/mod.rs /^ pub fn tell(arg1: c_int) -> c_long;$/;" f +telldir r_bash/src/lib.rs /^ pub fn telldir(__dirp: *mut DIR) -> ::std::os::raw::c_long;$/;" f +telldir r_glob/src/lib.rs /^ pub fn telldir() -> ::std::os::raw::c_long;$/;" f +telldir r_readline/src/lib.rs /^ pub fn telldir(__dirp: *mut DIR) -> ::std::os::raw::c_long;$/;" f +telldir vendor/libc/src/fuchsia/mod.rs /^ pub fn telldir(dirp: *mut ::DIR) -> ::c_long;$/;" f +telldir vendor/libc/src/unix/bsd/mod.rs /^ pub fn telldir(dirp: *mut ::DIR) -> ::c_long;$/;" f +telldir vendor/libc/src/unix/haiku/mod.rs /^ pub fn telldir(dirp: *mut ::DIR) -> ::c_long;$/;" f +telldir vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn telldir(dirp: *mut ::DIR) -> ::c_long;$/;" f +telldir vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn telldir(dirp: *mut ::DIR) -> ::c_long;$/;" f +telldir vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn telldir(dirp: *mut ::DIR) -> ::c_long;$/;" f +telldir vendor/libc/src/unix/solarish/mod.rs /^ pub fn telldir(dirp: *mut ::DIR) -> ::c_long;$/;" f +telldir vendor/libc/src/wasi.rs /^ pub fn telldir(dirp: *mut ::DIR) -> ::c_long;$/;" f +temp r_jobs/src/lib.rs /^ static mut temp: *mut c_char = 0 as *const c_char as *mut c_char;$/;" v function:printable_job_status +temp_fifo subst.c /^struct temp_fifo {$/;" s file: +tempenv_assign_error r_bash/src/lib.rs /^ pub static mut tempenv_assign_error: ::std::os::raw::c_int;$/;" v +tempenv_assign_error variables.c /^int tempenv_assign_error;$/;" v typeref:typename:int +tempnam r_bash/src/lib.rs /^ pub fn tempnam($/;" f +tempnam r_readline/src/lib.rs /^ pub fn tempnam($/;" f +tempnam vendor/libc/src/solid/mod.rs /^ pub fn tempnam(arg1: *const c_char, arg2: *const c_char) -> *mut c_char;$/;" f +temporary_env r_bash/src/lib.rs /^ pub static mut temporary_env: *mut HASH_TABLE;$/;" v +temporary_env r_jobs/src/lib.rs /^ static mut temporary_env: *mut HASH_TABLE;$/;" v +temporary_env variables.c /^HASH_TABLE *temporary_env = (HASH_TABLE *)NULL;$/;" v typeref:typename:HASH_TABLE * +tempvar_list variables.c /^char **tempvar_list;$/;" v typeref:typename:char ** +tempvar_p builtins_rust/declare/src/lib.rs /^unsafe fn tempvar_p(var: *mut SHELL_VAR) -> i32 {$/;" f +tempvar_p variables.h /^#define tempvar_p(/;" d +term lib/readline/examples/excallback.c /^struct termios term;$/;" v typeref:struct:termios +term test.c /^term ()$/;" f typeref:typename:int file: +term_buffer lib/readline/terminal.c /^static char *term_buffer = (char *)NULL;$/;" v typeref:typename:char * file: +term_entry lib/termcap/termcap.c /^static char *term_entry;$/;" v typeref:typename:char * file: +term_has_meta lib/readline/terminal.c /^static int term_has_meta;$/;" v typeref:typename:int file: +term_signal vendor/nix/src/sys/wait.rs /^fn term_signal(status: i32) -> Result {$/;" f +term_string_buffer lib/readline/terminal.c /^static char *term_string_buffer = (char *)NULL;$/;" v typeref:typename:char * file: +termcap.o lib/termcap/Makefile.in /^termcap.o: $(BUILD_DIR)\/config.h$/;" t +termcap_version_string lib/termcap/version.c /^static char *termcap_version_string = "\\n$Version: GNU termcap 1.3 $\\n";$/;" v typeref:typename:char * file: +terminal.o lib/readline/Makefile.in /^terminal.o: history.h rlstdc.h$/;" t +terminal.o lib/readline/Makefile.in /^terminal.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +terminal.o lib/readline/Makefile.in /^terminal.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +terminal.o lib/readline/Makefile.in /^terminal.o: rlprivate.h$/;" t +terminal.o lib/readline/Makefile.in /^terminal.o: rlshell.h$/;" t +terminal.o lib/readline/Makefile.in /^terminal.o: tcap.h$/;" t +terminal.o lib/readline/Makefile.in /^terminal.o: terminal.c$/;" t +terminal.o lib/readline/Makefile.in /^terminal.o: xmalloc.h $/;" t +terminal_pgrp jobs.c /^pid_t terminal_pgrp = NO_PID;$/;" v typeref:typename:pid_t +terminal_pgrp r_jobs/src/lib.rs /^pub static mut terminal_pgrp:pid_t = -1;$/;" v +terminal_prepped lib/readline/rltty.c /^static int terminal_prepped;$/;" v typeref:typename:int file: +terminate_current_pipeline jobs.c /^terminate_current_pipeline ()$/;" f typeref:typename:void +terminate_current_pipeline r_bash/src/lib.rs /^ pub fn terminate_current_pipeline();$/;" f +terminate_current_pipeline r_jobs/src/lib.rs /^pub unsafe extern "C" fn terminate_current_pipeline() {$/;" f +terminate_immediately r_bash/src/lib.rs /^ pub static mut terminate_immediately: ::std::os::raw::c_int;$/;" v +terminate_immediately sig.c /^int terminate_immediately = 0;$/;" v typeref:typename:int +terminate_stopped_jobs jobs.c /^terminate_stopped_jobs ()$/;" f typeref:typename:void +terminate_stopped_jobs r_bash/src/lib.rs /^ pub fn terminate_stopped_jobs();$/;" f +terminate_stopped_jobs r_jobs/src/lib.rs /^pub unsafe extern "C" fn terminate_stopped_jobs() {$/;" f +terminated vendor/futures-util/src/future/future/fuse.rs /^ pub fn terminated() -> Self {$/;" P implementation:Fuse +terminating_signal builtins_rust/common/src/lib.rs /^ static terminating_signal: c_int;$/;" v +terminating_signal builtins_rust/echo/src/lib.rs /^ static terminating_signal: c_int;$/;" v +terminating_signal builtins_rust/fc/src/lib.rs /^ static mut terminating_signal: i32;$/;" v +terminating_signal builtins_rust/help/src/lib.rs /^ static mut terminating_signal: i32;$/;" v +terminating_signal builtins_rust/history/src/intercdep.rs /^ pub static mut terminating_signal: c_int;$/;" v +terminating_signal builtins_rust/printf/src/intercdep.rs /^ pub static terminating_signal : c_int;$/;" v +terminating_signal builtins_rust/read/src/intercdep.rs /^ pub static terminating_signal : c_int;$/;" v +terminating_signal r_bash/src/lib.rs /^ pub static mut terminating_signal: sig_atomic_t;$/;" v +terminating_signal sig.c /^volatile sig_atomic_t terminating_signal = 0;$/;" v typeref:typename:volatile sig_atomic_t +terminating_signals sig.c /^static struct termsig terminating_signals[] = {$/;" v typeref:struct:termsig[] file: +termio r_readline/src/lib.rs /^pub struct termio {$/;" s +termios r_bash/src/lib.rs /^pub struct termios {$/;" s +termios vendor/nix/src/sys/termios.rs /^impl From for libc::termios {$/;" c +termsave builtins_rust/read/src/lib.rs /^static mut termsave: tty_save = tty_save {$/;" v +termsig sig.c /^struct termsig {$/;" s file: +termsig_handler builtins_rust/common/src/lib.rs /^ fn termsig_handler(sig: i32);$/;" f +termsig_handler builtins_rust/echo/src/lib.rs /^ fn termsig_handler(sig: i32);$/;" f +termsig_handler builtins_rust/fc/src/lib.rs /^ fn termsig_handler(sig: i32);$/;" f +termsig_handler builtins_rust/help/src/lib.rs /^ fn termsig_handler(sig: i32);$/;" f +termsig_handler builtins_rust/history/src/intercdep.rs /^ pub fn termsig_handler(sig: c_int) -> c_int;$/;" f +termsig_handler builtins_rust/printf/src/intercdep.rs /^ pub fn termsig_handler(arg1: c_int) -> c_void;$/;" f +termsig_handler builtins_rust/read/src/intercdep.rs /^ pub fn termsig_handler(arg1: c_int) -> c_void;$/;" f +termsig_handler r_bash/src/lib.rs /^ pub fn termsig_handler(arg1: ::std::os::raw::c_int);$/;" f +termsig_handler sig.c /^termsig_handler (sig)$/;" f +termsig_sighandler builtins_rust/trap/src/intercdep.rs /^ pub fn termsig_sighandler(sig: c_int);$/;" f +termsig_sighandler r_bash/src/lib.rs /^ pub fn termsig_sighandler(arg1: ::std::os::raw::c_int);$/;" f +termsig_sighandler sig.c /^termsig_sighandler (sig)$/;" f +termsigs_initialized sig.c /^static int termsigs_initialized = 0;$/;" v typeref:typename:int file: +tescape builtins_rust/printf/src/lib.rs /^unsafe fn tescape($/;" f +test Makefile.in /^test tests check: force $(Program) $(TESTS_SUPPORT)$/;" t +test builtins_rust/cd/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/cd/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/cd/src/lib.rs /^ test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/command/src/lib.rs /^ pub test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/command/src/lib.rs /^ pub test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/command/src/lib.rs /^ pub test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/common/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/common/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/common/src/lib.rs /^ test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/complete/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/complete/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/complete/src/lib.rs /^ test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/declare/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/declare/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/declare/src/lib.rs /^ test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/fc/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/fc/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/fc/src/lib.rs /^ test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/fg_bg/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/fg_bg/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/fg_bg/src/lib.rs /^ test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/getopts/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/getopts/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/getopts/src/lib.rs /^ test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/jobs/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/jobs/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/jobs/src/lib.rs /^ test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/kill/src/intercdep.rs /^ pub test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/kill/src/intercdep.rs /^ pub test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/kill/src/intercdep.rs /^ pub test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/pushd/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/pushd/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/pushd/src/lib.rs /^ test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/setattr/src/intercdep.rs /^ pub test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/setattr/src/intercdep.rs /^ pub test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/setattr/src/intercdep.rs /^ pub test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/source/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/source/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/source/src/lib.rs /^ test: *mut WordList,$/;" m struct:arith_for_com +test builtins_rust/type/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:if_com +test builtins_rust/type/src/lib.rs /^ test: *mut COMMAND,$/;" m struct:while_com +test builtins_rust/type/src/lib.rs /^ test: *mut WordList,$/;" m struct:arith_for_com +test command.h /^ COMMAND *test; \/* Thing to test. *\/$/;" m struct:if_com typeref:typename:COMMAND * +test command.h /^ COMMAND *test; \/* Thing to test. *\/$/;" m struct:while_com typeref:typename:COMMAND * +test command.h /^ WORD_LIST *test;$/;" m struct:arith_for_com typeref:typename:WORD_LIST * +test r_bash/src/lib.rs /^ pub test: *mut COMMAND,$/;" m struct:if_com +test r_bash/src/lib.rs /^ pub test: *mut COMMAND,$/;" m struct:while_com +test r_bash/src/lib.rs /^ pub test: *mut WORD_LIST,$/;" m struct:arith_for_com +test r_glob/src/lib.rs /^ pub test: *mut COMMAND,$/;" m struct:if_com +test r_glob/src/lib.rs /^ pub test: *mut COMMAND,$/;" m struct:while_com +test r_glob/src/lib.rs /^ pub test: *mut WORD_LIST,$/;" m struct:arith_for_com +test r_readline/src/lib.rs /^ pub test: *mut COMMAND,$/;" m struct:if_com +test r_readline/src/lib.rs /^ pub test: *mut COMMAND,$/;" m struct:while_com +test r_readline/src/lib.rs /^ pub test: *mut WORD_LIST,$/;" m struct:arith_for_com +test vendor/async-trait/tests/test.rs /^ fn test() {$/;" f module:issue199 +test vendor/async-trait/tests/test.rs /^ fn test() {$/;" f module:issue25 +test vendor/async-trait/tests/test.rs /^ fn test() {$/;" f module:issue57 +test vendor/async-trait/tests/test.rs /^ pub fn test(_t: &dyn Trait) {}$/;" f module:issue169 +test vendor/async-trait/tests/test.rs /^pub async fn test() {$/;" f +test vendor/async-trait/tests/ui/send-not-implemented.rs /^ async fn test(&self) {$/;" P interface:Test +test vendor/bitflags/src/lib.rs /^ mod test {$/;" n module:tests::test_pub_in_module::module +test vendor/futures-macro/src/executor.rs /^pub(crate) fn test(args: TokenStream, item: TokenStream) -> TokenStream {$/;" f +test vendor/lazy_static/tests/test.rs /^fn test(_: Vec) -> X { X }$/;" f +test vendor/nix/src/sys/resource.rs /^mod test {$/;" n +test vendor/nix/src/sys/socket/sockopt.rs /^mod test {$/;" n +test vendor/nix/src/sys/statfs.rs /^mod test {$/;" n +test vendor/nix/src/sys/statvfs.rs /^mod test {$/;" n +test vendor/nix/src/sys/termios.rs /^mod test {$/;" n +test vendor/nix/src/sys/time.rs /^mod test {$/;" n +test vendor/nix/src/sys/utsname.rs /^mod test {$/;" n +test vendor/syn/tests/test_attribute.rs /^fn test(input: &str) -> Meta {$/;" f +test vendor/syn/tests/test_round_trip.rs /^fn test(path: &Path, failed: &AtomicUsize, abort_after: usize) {$/;" f +test.o Makefile.in /^test.o: $(GLOB_LIBSRC)\/strmatch.h bashansi.h pathexp.h assoc.h$/;" t +test.o Makefile.in /^test.o: ${BASHINCDIR}\/stat-time.h ${BASHINCDIR}\/ocache.h ${BASHINCDIR}\/chartypes.h$/;" t +test.o Makefile.in /^test.o: ${DEFSRC}\/common.h $/;" t +test.o Makefile.in /^test.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +test.o Makefile.in /^test.o: bashtypes.h ${BASHINCDIR}\/posixstat.h ${BASHINCDIR}\/filecntl.h$/;" t +test.o Makefile.in /^test.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +test.o Makefile.in /^test.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h$/;" t +test.o Makefile.in /^test.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h$/;" t +test.o Makefile.in /^test.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\/s/;" t +test.o builtins/Makefile.in /^test.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +test.o builtins/Makefile.in /^test.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +test.o builtins/Makefile.in /^test.o: $(topdir)\/execute_cmd.h $(topdir)\/test.h ..\/pathnames.h$/;" t +test.o builtins/Makefile.in /^test.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +test.o builtins/Makefile.in /^test.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $/;" t +test.o builtins/Makefile.in /^test.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +test.o builtins/Makefile.in /^test.o: test.def$/;" t +test/common/mod.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/mod.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_aio.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_aio_drop.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_epoll.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_inotify.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_ioctl.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_mman.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_pthread.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_ptrace.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_select.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_signal.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_signalfd.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_socket.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_sockopt.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_stat.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_sysinfo.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_termios.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_timerfd.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_uio.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/sys/test_wait.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_clearenv.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_dir.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_fcntl.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_kmod/hello_mod/Makefile vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_kmod/hello_mod/hello.c vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_kmod/mod.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_mount.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_mq.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_net.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_nix_path.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_nmount.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_poll.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_pty.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_ptymaster_drop.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_resource.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_sched.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_sendfile.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_stat.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_time.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_timer.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test/test_unistd.rs vendor/nix/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"e20b4f5f1db072fdc61fd1ec040fea9f6fc6664b1d6a93cf5dc5cf00f027993f","Car/;" s object:files +test_0_no_0 vendor/libloading/tests/functions.rs /^fn test_0_no_0() {$/;" f +test_abstract_sun_path_too_long vendor/nix/test/sys/test_socket.rs /^pub fn test_abstract_sun_path_too_long() {$/;" f +test_abstract_uds_addr vendor/nix/test/sys/test_socket.rs /^pub fn test_abstract_uds_addr() {$/;" f +test_access_file_exists vendor/nix/test/test_unistd.rs /^fn test_access_file_exists() {$/;" f +test_access_not_existing vendor/nix/test/test_unistd.rs /^fn test_access_not_existing() {$/;" f +test_accessors vendor/elsa/src/vec.rs /^fn test_accessors() {$/;" f +test_accessors vendor/nix/test/sys/test_aio.rs /^ fn test_accessors() {$/;" f module:aio_fsync +test_accessors vendor/nix/test/sys/test_aio.rs /^ fn test_accessors() {$/;" f module:aio_read +test_accessors vendor/nix/test/sys/test_aio.rs /^ fn test_accessors() {$/;" f module:aio_readv +test_accessors vendor/nix/test/sys/test_aio.rs /^ fn test_accessors() {$/;" f module:aio_write +test_accessors vendor/nix/test/sys/test_aio.rs /^ fn test_accessors() {$/;" f module:aio_writev +test_acct vendor/nix/test/test_unistd.rs /^fn test_acct() {$/;" f +test_addr_equality_abstract vendor/nix/test/sys/test_socket.rs /^pub fn test_addr_equality_abstract() {$/;" f +test_addr_equality_path vendor/nix/test/sys/test_socket.rs /^pub fn test_addr_equality_path() {$/;" f +test_advanced vendor/quote/tests/test.rs /^fn test_advanced() {$/;" f +test_af_alg_aead vendor/nix/test/sys/test_socket.rs /^pub fn test_af_alg_aead() {$/;" f +test_af_alg_cipher vendor/nix/test/sys/test_socket.rs /^pub fn test_af_alg_cipher() {$/;" f +test_aio vendor/nix/test/sys/mod.rs /^mod test_aio;$/;" n +test_aio_cancel_all vendor/nix/test/sys/test_aio.rs /^fn test_aio_cancel_all() {$/;" f +test_aio_suspend vendor/nix/test/sys/test_aio.rs /^fn test_aio_suspend() {$/;" f +test_alarm vendor/nix/test/test_unistd.rs /^fn test_alarm() {$/;" f +test_ambiguous_crate vendor/syn/tests/test_derive_input.rs /^fn test_ambiguous_crate() {$/;" f +test_anyhow vendor/thiserror/tests/test_transparent.rs /^fn test_anyhow() {$/;" f +test_append_tokens vendor/quote/tests/test.rs /^fn test_append_tokens() {$/;" f +test_array vendor/quote/tests/test.rs /^fn test_array() {$/;" f +test_as_mut vendor/smallvec/src/tests.rs /^fn test_as_mut() {$/;" f +test_as_ref vendor/smallvec/src/tests.rs /^fn test_as_ref() {$/;" f +test_assignment_operators vendor/bitflags/src/lib.rs /^ fn test_assignment_operators() {$/;" f module:tests +test_async_closure vendor/syn/tests/test_asyncness.rs /^fn test_async_closure() {$/;" f +test_async_fn vendor/syn/tests/test_asyncness.rs /^fn test_async_fn() {$/;" f +test_attr_with_mod_style_path_with_self vendor/syn/tests/test_derive_input.rs /^fn test_attr_with_mod_style_path_with_self() {$/;" f +test_attr_with_non_mod_style_path vendor/syn/tests/test_derive_input.rs /^fn test_attr_with_non_mod_style_path() {$/;" f +test_attr_with_path vendor/syn/tests/test_derive_input.rs /^fn test_attr_with_path() {$/;" f +test_await vendor/syn/tests/test_expr.rs /^fn test_await() {$/;" f +test_backtrace vendor/thiserror/tests/test_backtrace.rs /^ fn test_backtrace() {$/;" f module:enums +test_backtrace vendor/thiserror/tests/test_backtrace.rs /^ fn test_backtrace() {$/;" f module:structs +test_backtrace vendor/thiserror/tests/test_backtrace.rs /^fn test_backtrace() {}$/;" f +test_basic vendor/lazy_static/tests/no_std.rs /^fn test_basic() {$/;" f +test_basic vendor/lazy_static/tests/test.rs /^fn test_basic() {$/;" f +test_basic vendor/syn/tests/test_shebang.rs /^fn test_basic() {$/;" f +test_binary vendor/bitflags/src/lib.rs /^ fn test_binary() {$/;" f module:tests +test_binary_search vendor/elsa/src/vec.rs /^fn test_binary_search() {$/;" f +test_bindtodevice vendor/nix/test/sys/test_sockopt.rs /^fn test_bindtodevice() {$/;" f +test_binop r_bash/src/lib.rs /^ pub fn test_binop(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +test_binop test.c /^test_binop (op)$/;" f +test_bits vendor/bitflags/src/lib.rs /^ fn test_bits() {$/;" f module:tests +test_bool_lit vendor/syn/tests/test_attribute.rs /^fn test_bool_lit() {$/;" f +test_borrow vendor/smallvec/src/tests.rs /^fn test_borrow() {$/;" f +test_borrow_mut vendor/smallvec/src/tests.rs /^fn test_borrow_mut() {$/;" f +test_box_str vendor/quote/tests/test.rs /^fn test_box_str() {$/;" f +test_boxed_source vendor/thiserror/tests/test_source.rs /^fn test_boxed_source() {$/;" f +test_brace_escape vendor/thiserror/tests/test_display.rs /^fn test_brace_escape() {$/;" f +test_braced vendor/thiserror/tests/test_display.rs /^fn test_braced() {$/;" f +test_braced_unused vendor/thiserror/tests/test_display.rs /^fn test_braced_unused() {$/;" f +test_btreeset_repetition vendor/quote/tests/test.rs /^fn test_btreeset_repetition() {$/;" f +test_buffered_reader vendor/futures/tests/io_buf_reader.rs /^fn test_buffered_reader() {$/;" f +test_buffered_reader_invalidated_after_read vendor/futures/tests/io_buf_reader.rs /^fn test_buffered_reader_invalidated_after_read() {$/;" f +test_buffered_reader_invalidated_after_seek vendor/futures/tests/io_buf_reader.rs /^fn test_buffered_reader_invalidated_after_seek() {$/;" f +test_buffered_reader_seek vendor/futures/tests/io_buf_reader.rs /^fn test_buffered_reader_seek() {$/;" f +test_buffered_reader_seek_relative vendor/futures/tests/io_buf_reader.rs /^fn test_buffered_reader_seek_relative() {$/;" f +test_buffered_reader_seek_underflow vendor/futures/tests/io_buf_reader.rs /^fn test_buffered_reader_seek_underflow() {$/;" f +test_by_box vendor/syn/tests/test_receiver.rs /^fn test_by_box() {$/;" f +test_by_mut_value vendor/syn/tests/test_receiver.rs /^fn test_by_mut_value() {$/;" f +test_by_pin vendor/syn/tests/test_receiver.rs /^fn test_by_pin() {$/;" f +test_by_ref vendor/syn/tests/test_receiver.rs /^fn test_by_ref() {$/;" f +test_by_value vendor/syn/tests/test_receiver.rs /^fn test_by_value() {$/;" f +test_byte vendor/syn/tests/test_lit.rs /^ fn test_byte(s: &str, value: u8) {$/;" f function:bytes +test_byte_string vendor/syn/tests/test_lit.rs /^ fn test_byte_string(s: &str, value: &[u8]) {$/;" f function:byte_strings +test_can_destruct vendor/async-trait/tests/test.rs /^pub async fn test_can_destruct() {$/;" f +test_canceling_alarm vendor/nix/test/test_unistd.rs /^fn test_canceling_alarm() {$/;" f +test_capacity vendor/smallvec/src/tests.rs /^fn test_capacity() {$/;" f +test_char vendor/quote/tests/test.rs /^fn test_char() {$/;" f +test_char vendor/syn/tests/test_lit.rs /^ fn test_char(s: &str, value: char) {$/;" f function:chars +test_check_static_ptr vendor/libloading/src/test_helpers.rs /^pub unsafe extern "C" fn test_check_static_ptr() -> bool {$/;" f +test_chflags vendor/nix/test/sys/test_stat.rs /^fn test_chflags() {$/;" f +test_chown vendor/nix/test/test_unistd.rs /^fn test_chown() {$/;" f +test_clear vendor/nix/src/sys/signal.rs /^ fn test_clear() {$/;" f module:tests +test_clock_getcpuclockid vendor/nix/test/test_time.rs /^pub fn test_clock_getcpuclockid() {$/;" f +test_clock_getres vendor/nix/test/test_time.rs /^pub fn test_clock_getres() {$/;" f +test_clock_gettime vendor/nix/test/test_time.rs /^pub fn test_clock_gettime() {$/;" f +test_clock_id_now vendor/nix/test/test_time.rs /^pub fn test_clock_id_now() {$/;" f +test_clock_id_pid_cpu_clock_id vendor/nix/test/test_time.rs /^pub fn test_clock_id_pid_cpu_clock_id() {$/;" f +test_clock_id_res vendor/nix/test/test_time.rs /^pub fn test_clock_id_res() {$/;" f +test_clone_from vendor/smallvec/src/tests.rs /^fn test_clone_from() {$/;" f +test_closure vendor/quote/tests/test.rs /^fn test_closure() {$/;" f +test_closure_vs_rangefull vendor/syn/tests/test_expr.rs /^fn test_closure_vs_rangefull() {$/;" f +test_command builtins_rust/test/src/intercdep.rs /^ pub fn test_command (margc: c_int, margv: *mut *mut c_char) -> c_int;$/;" f +test_command r_bash/src/lib.rs /^ pub fn test_command($/;" f +test_command test.c /^test_command (margc, margv)$/;" f +test_comment vendor/syn/tests/test_shebang.rs /^fn test_comment() {$/;" f +test_const_fn vendor/bitflags/src/lib.rs /^ fn test_const_fn() {$/;" f module:tests +test_constants vendor/thiserror/tests/test_display.rs /^fn test_constants() {$/;" f +test_contains vendor/bitflags/src/lib.rs /^ fn test_contains() {$/;" f module:tests +test_contains vendor/nix/src/sys/signal.rs /^ fn test_contains() {$/;" f module:tests +test_copy_file_range vendor/nix/test/test_fcntl.rs /^ fn test_copy_file_range() {$/;" f module:linux_android +test_cow vendor/quote/tests/test.rs /^fn test_cow() {$/;" f +test_crate vendor/syn/tests/test_visibility.rs /^fn test_crate() {$/;" f +test_crate_path vendor/syn/tests/test_visibility.rs /^fn test_crate_path() {$/;" f +test_datalink_display vendor/nix/src/sys/socket/addr.rs /^ fn test_datalink_display() {$/;" f module:tests::link +test_debug vendor/bitflags/src/lib.rs /^ fn test_debug() {$/;" f module:tests +test_debug_ident vendor/proc-macro2/tests/test.rs /^fn test_debug_ident() {$/;" f +test_debug_tokenstream vendor/proc-macro2/tests/test.rs /^fn test_debug_tokenstream() {$/;" f +test_debugger_visualizer vendor/smallvec/tests/debugger_visualizer.rs /^fn test_debugger_visualizer() {$/;" f +test_dedup vendor/smallvec/src/tests.rs /^fn test_dedup() {$/;" f +test_deep_group_empty vendor/syn/tests/test_lit.rs /^fn test_deep_group_empty() {$/;" f +test_default vendor/bitflags/src/lib.rs /^ fn test_default() {$/;" f module:tests +test_delete_module_not_loaded vendor/nix/test/test_kmod/mod.rs /^fn test_delete_module_not_loaded() {$/;" f +test_deprecated vendor/bitflags/src/lib.rs /^ fn test_deprecated() {$/;" f module:tests +test_dir vendor/nix/test/test.rs /^mod test_dir;$/;" n +test_disjoint_intersects vendor/bitflags/src/lib.rs /^ fn test_disjoint_intersects() {$/;" f module:tests +test_display vendor/thiserror/tests/test_path.rs /^fn test_display() {$/;" f +test_display_enum_compound vendor/thiserror/tests/test_generics.rs /^fn test_display_enum_compound() {$/;" f +test_dontfrag_opts vendor/nix/test/sys/test_sockopt.rs /^fn test_dontfrag_opts() {$/;" f +test_double_close vendor/nix/test/test_ptymaster_drop.rs /^ fn test_double_close() {$/;" f module:t +test_double_spill vendor/smallvec/src/tests.rs /^pub fn test_double_spill() {$/;" f +test_drop vendor/nix/test/sys/test_aio_drop.rs /^fn test_drop() {$/;" f +test_drop_after_start vendor/futures-executor/src/thread_pool.rs /^ fn test_drop_after_start() {$/;" f module:tests +test_drop_order vendor/async-trait/tests/test.rs /^ fn test_drop_order() {$/;" f module:drop_order +test_drop_panic_smallvec vendor/smallvec/src/tests.rs /^fn test_drop_panic_smallvec() {$/;" f +test_duplicate vendor/quote/tests/test.rs /^fn test_duplicate() {$/;" f +test_duplicate_name_repetition vendor/quote/tests/test.rs /^fn test_duplicate_name_repetition() {$/;" f +test_duplicate_name_repetition_no_copy vendor/quote/tests/test.rs /^fn test_duplicate_name_repetition_no_copy() {$/;" f +test_empty vendor/futures/tests_disabled/all.rs /^fn test_empty() {$/;" f +test_empty_bitflags vendor/bitflags/src/lib.rs /^ fn test_empty_bitflags() {$/;" f module:tests +test_empty_does_not_intersect_with_full vendor/bitflags/src/lib.rs /^ fn test_empty_does_not_intersect_with_full() {$/;" f module:tests +test_empty_group_vis vendor/syn/tests/test_visibility.rs /^fn test_empty_group_vis() {$/;" f +test_empty_quote vendor/quote/tests/test.rs /^fn test_empty_quote() {$/;" f +test_enum vendor/syn/tests/test_derive_input.rs /^fn test_enum() {$/;" f +test_enum vendor/thiserror/tests/test_display.rs /^fn test_enum() {$/;" f +test_epoll vendor/nix/test/sys/mod.rs /^mod test_epoll;$/;" n +test_epoll_ctl vendor/nix/test/sys/test_epoll.rs /^pub fn test_epoll_ctl() {$/;" f +test_epoll_errno vendor/nix/test/sys/test_epoll.rs /^pub fn test_epoll_errno() {$/;" f +test_eq vendor/smallvec/src/tests.rs /^fn test_eq() {$/;" f +test_eq vendor/tinystr/benches/tinystr.rs /^fn test_eq(c: &mut Criterion) {$/;" f +test_errno vendor/nix/test/test_fcntl.rs /^ fn test_errno() {$/;" f module:test_posix_fadvise +test_error vendor/syn/tests/test_lit.rs /^fn test_error() {$/;" f +test_error_return test.c /^static int test_error_return;$/;" v typeref:typename:int file: +test_exact_size_iterator vendor/smallvec/src/tests.rs /^fn test_exact_size_iterator() {$/;" f +test_exit test.c /^#define test_exit(/;" d file: +test_exit_buf test.c /^static procenv_t test_exit_buf;$/;" v typeref:typename:procenv_t file: +test_explicit_close vendor/nix/test/test_pty.rs /^fn test_explicit_close() {$/;" f +test_explicit_source vendor/thiserror/tests/test_source.rs /^fn test_explicit_source() {$/;" f +test_explicit_type vendor/syn/tests/test_receiver.rs /^fn test_explicit_type() {$/;" f +test_expr vendor/thiserror/tests/test_display.rs /^fn test_expr() {$/;" f +test_expr_parse vendor/syn/tests/test_expr.rs /^fn test_expr_parse() {$/;" f +test_expr_size vendor/syn/tests/test_size.rs /^fn test_expr_size() {$/;" f +test_expressions vendor/syn/tests/test_precedence.rs /^fn test_expressions(edition: Edition, exprs: Vec) -> (usize, usize) {$/;" f +test_extend vendor/bitflags/src/lib.rs /^ fn test_extend() {$/;" f module:tests +test_extend vendor/nix/src/sys/signal.rs /^ fn test_extend() {$/;" f module:tests +test_extend_from_slice vendor/smallvec/src/tests.rs /^fn test_extend_from_slice() {$/;" f +test_faccessat_file_exists vendor/nix/test/test_unistd.rs /^fn test_faccessat_file_exists() {$/;" f +test_faccessat_none_file_exists vendor/nix/test/test_unistd.rs /^fn test_faccessat_none_file_exists() {$/;" f +test_faccessat_none_not_existing vendor/nix/test/test_unistd.rs /^fn test_faccessat_none_not_existing() {$/;" f +test_faccessat_not_existing vendor/nix/test/test_unistd.rs /^fn test_faccessat_not_existing() {$/;" f +test_fallocate vendor/nix/test/test_fcntl.rs /^ fn test_fallocate() {$/;" f module:linux_android +test_fancy_repetition vendor/quote/tests/test.rs /^fn test_fancy_repetition() {$/;" f +test_fchdir vendor/nix/test/test_unistd.rs /^fn test_fchdir() {$/;" f +test_fchmod vendor/nix/test/test_stat.rs /^fn test_fchmod() {$/;" f +test_fchmodat vendor/nix/test/test_stat.rs /^fn test_fchmodat() {$/;" f +test_fchown vendor/nix/test/test_unistd.rs /^fn test_fchown() {$/;" f +test_fchownat vendor/nix/test/test_unistd.rs /^fn test_fchownat() {$/;" f +test_fcntl vendor/nix/test/test.rs /^mod test_fcntl;$/;" n +test_fdset_negative_fd vendor/nix/test/sys/test_select.rs /^mod test_fdset_negative_fd {$/;" n +test_fdset_too_large_fd vendor/nix/test/sys/test_select.rs /^mod test_fdset_too_large_fd {$/;" n +test_field vendor/thiserror/tests/test_display.rs /^fn test_field() {$/;" f +test_fields_on_named_struct vendor/syn/tests/test_derive_input.rs /^fn test_fields_on_named_struct() {$/;" f +test_fields_on_tuple_struct vendor/syn/tests/test_derive_input.rs /^fn test_fields_on_tuple_struct() {$/;" f +test_fields_on_unit_struct vendor/syn/tests/test_derive_input.rs /^fn test_fields_on_unit_struct() {$/;" f +test_finit_and_delete_module vendor/nix/test/test_kmod/mod.rs /^fn test_finit_and_delete_module() {$/;" f +test_finit_and_delete_module_with_params vendor/nix/test/test_kmod/mod.rs /^fn test_finit_and_delete_module_with_params() {$/;" f +test_finit_module_invalid vendor/nix/test/test_kmod/mod.rs /^fn test_finit_module_invalid() {$/;" f +test_finit_module_twice_and_delete_module vendor/nix/test/test_kmod/mod.rs /^fn test_finit_module_twice_and_delete_module() {$/;" f +test_float vendor/syn/tests/test_lit.rs /^ fn test_float(s: &str, value: f64, suffix: &str) {$/;" f function:floats +test_floating vendor/quote/tests/test.rs /^fn test_floating() {$/;" f +test_fmt_group vendor/proc-macro2/tests/test_fmt.rs /^fn test_fmt_group() {$/;" f +test_fn vendor/memoffset/src/offset_of.rs /^ const fn test_fn() -> usize {$/;" f function:tests::const_fn_offset +test_fn_precedence_in_where_clause vendor/syn/tests/test_generics.rs /^fn test_fn_precedence_in_where_clause() {$/;" f +test_for_canon_directory bashline.c /^test_for_canon_directory (name)$/;" f file: +test_for_directory bashline.c /^test_for_directory (name)$/;" f file: +test_fork_and_waitpid vendor/nix/test/test_unistd.rs /^fn test_fork_and_waitpid() {$/;" f +test_forkpty vendor/nix/test/test_pty.rs /^fn test_forkpty() {$/;" f +test_format_ident vendor/quote/tests/test.rs /^fn test_format_ident() {$/;" f +test_format_ident_strip_raw vendor/quote/tests/test.rs /^fn test_format_ident_strip_raw() {$/;" f +test_fpathconf_limited vendor/nix/test/test_unistd.rs /^fn test_fpathconf_limited() {$/;" f +test_from vendor/smallvec/src/tests.rs /^fn test_from() {$/;" f +test_from vendor/thiserror/tests/test_from.rs /^fn test_from() {$/;" f +test_from_and_into_iterator vendor/nix/src/sys/signal.rs /^ fn test_from_and_into_iterator() {$/;" f module:tests +test_from_bits vendor/bitflags/src/lib.rs /^ fn test_from_bits() {$/;" f module:tests +test_from_bits_truncate vendor/bitflags/src/lib.rs /^ fn test_from_bits_truncate() {$/;" f module:tests +test_from_bits_unchecked vendor/bitflags/src/lib.rs /^ fn test_from_bits_unchecked() {$/;" f module:tests +test_from_iterator vendor/bitflags/src/lib.rs /^ fn test_from_iterator() {$/;" f module:tests +test_from_sigset_t_unchecked vendor/nix/src/sys/signal.rs /^ fn test_from_sigset_t_unchecked() {$/;" f module:tests +test_from_slice vendor/smallvec/src/tests.rs /^fn test_from_slice() {$/;" f +test_from_str_invalid_value vendor/nix/src/sys/signal.rs /^ fn test_from_str_invalid_value() {$/;" f module:tests +test_from_str_round_trips vendor/nix/src/sys/signal.rs /^ fn test_from_str_round_trips() {$/;" f module:tests +test_from_vec vendor/smallvec/src/tests.rs /^fn test_from_vec() {$/;" f +test_fst_size vendor/unicode-ident/tests/static_size.rs /^fn test_fst_size() {$/;" f +test_fstatat vendor/nix/test/test_stat.rs /^fn test_fstatat() {$/;" f +test_ftruncate vendor/nix/test/test_unistd.rs /^fn test_ftruncate() {$/;" f +test_futimens vendor/nix/test/test_stat.rs /^fn test_futimens() {$/;" f +test_get_static_u32 vendor/libloading/src/test_helpers.rs /^pub unsafe extern "C" fn test_get_static_u32() -> u32 {$/;" f +test_getcwd vendor/nix/test/test_unistd.rs /^fn test_getcwd() {$/;" f +test_getifaddrs vendor/nix/src/ifaddrs.rs /^ fn test_getifaddrs() {$/;" f module:tests +test_getpeereid vendor/nix/test/test_unistd.rs /^fn test_getpeereid() {$/;" f +test_getpeereid_invalid_fd vendor/nix/test/test_unistd.rs /^fn test_getpeereid_invalid_fd() {$/;" f +test_getpid vendor/nix/test/test_unistd.rs /^fn test_getpid() {$/;" f +test_getresgid vendor/nix/test/test_unistd.rs /^fn test_getresgid() {$/;" f +test_getresuid vendor/nix/test/test_unistd.rs /^fn test_getresuid() {$/;" f +test_getsid vendor/nix/test/test_unistd.rs /^fn test_getsid() {$/;" f +test_getsockname vendor/nix/test/sys/test_socket.rs /^pub fn test_getsockname() {$/;" f +test_gettid vendor/nix/test/test_unistd.rs /^ fn test_gettid() {$/;" f module:linux_android +test_group vendor/syn/tests/test_pat.rs /^fn test_group() {$/;" f +test_group_angle_brackets vendor/syn/tests/test_ty.rs /^fn test_group_angle_brackets() {$/;" f +test_group_colons vendor/syn/tests/test_ty.rs /^fn test_group_colons() {$/;" f +test_grouping vendor/syn/tests/test_grouping.rs /^fn test_grouping() {$/;" f +test_hash vendor/bitflags/src/lib.rs /^ fn test_hash() {$/;" f module:tests +test_hash vendor/smallvec/src/tests.rs /^fn test_hash() {$/;" f +test_id_struct vendor/libloading/tests/functions.rs /^fn test_id_struct() {$/;" f +test_id_u32 vendor/libloading/tests/functions.rs /^fn test_id_u32() {$/;" f +test_ident vendor/quote/tests/test.rs /^fn test_ident() {$/;" f +test_identity_struct vendor/libloading/src/test_helpers.rs /^pub extern "C" fn test_identity_struct(x: S) -> S {$/;" f +test_identity_u32 vendor/libloading/src/test_helpers.rs /^pub extern "C" fn test_identity_u32(x: u32) -> u32 {$/;" f +test_if_nametoindex vendor/nix/test/test_net.rs /^fn test_if_nametoindex() {$/;" f +test_impl_scm_credentials_and_rights vendor/nix/test/sys/test_socket.rs /^fn test_impl_scm_credentials_and_rights(mut space: Vec) {$/;" f +test_impl_trait_trailing_plus vendor/syn/tests/test_item.rs /^fn test_impl_trait_trailing_plus() {$/;" f +test_impl_type_parameter_defaults vendor/syn/tests/test_item.rs /^fn test_impl_type_parameter_defaults() {$/;" f +test_impl_visibility vendor/syn/tests/test_item.rs /^fn test_impl_visibility() {$/;" f +test_implicit_source vendor/thiserror/tests/test_source.rs /^fn test_implicit_source() {$/;" f +test_in vendor/syn/tests/test_visibility.rs /^fn test_in() {$/;" f +test_in_function vendor/bitflags/src/lib.rs /^ fn test_in_function() {$/;" f module:tests +test_incompatible_type vendor/libloading/tests/functions.rs /^fn test_incompatible_type() {$/;" f +test_incompatible_type_named_fn vendor/libloading/tests/functions.rs /^fn test_incompatible_type_named_fn() {$/;" f +test_inetv4_addr_roundtrip_sockaddr_storage_to_addr vendor/nix/test/sys/test_socket.rs /^pub fn test_inetv4_addr_roundtrip_sockaddr_storage_to_addr() {$/;" f +test_inetv4_addr_to_sock_addr vendor/nix/test/sys/test_socket.rs /^pub fn test_inetv4_addr_to_sock_addr() {$/;" f +test_inetv6_addr_roundtrip_sockaddr_storage_to_addr vendor/nix/test/sys/test_socket.rs /^pub fn test_inetv6_addr_roundtrip_sockaddr_storage_to_addr() {$/;" f +test_inference vendor/async-trait/tests/test.rs /^pub async fn test_inference() {$/;" f +test_inherit vendor/thiserror/tests/test_display.rs /^fn test_inherit() {$/;" f +test_inherited vendor/syn/tests/test_visibility.rs /^fn test_inherited() {$/;" f +test_init_and_delete_module vendor/nix/test/test_kmod/mod.rs /^fn test_init_and_delete_module() {$/;" f +test_init_and_delete_module_with_params vendor/nix/test/test_kmod/mod.rs /^fn test_init_and_delete_module_with_params() {$/;" f +test_initgroups vendor/nix/test/test_unistd.rs /^fn test_initgroups() {$/;" f +test_inline vendor/smallvec/src/tests.rs /^pub fn test_inline() {$/;" f +test_inner_attr vendor/quote/tests/test.rs /^fn test_inner_attr() {$/;" f +test_inner_block_comment vendor/quote/tests/test.rs /^fn test_inner_block_comment() {$/;" f +test_inner_line_comment vendor/quote/tests/test.rs /^fn test_inner_line_comment() {$/;" f +test_inotify vendor/nix/test/sys/mod.rs /^mod test_inotify;$/;" n +test_inotify vendor/nix/test/sys/test_inotify.rs /^pub fn test_inotify() {$/;" f +test_inotify_multi_events vendor/nix/test/sys/test_inotify.rs /^pub fn test_inotify_multi_events() {$/;" f +test_insert vendor/bitflags/src/lib.rs /^ fn test_insert() {$/;" f module:tests +test_insert_from_slice vendor/smallvec/src/tests.rs /^fn test_insert_from_slice() {$/;" f +test_insert_many vendor/smallvec/src/tests.rs /^fn test_insert_many() {$/;" f +test_insert_many_long_hint vendor/smallvec/src/tests.rs /^fn test_insert_many_long_hint() {$/;" f +test_insert_many_overflow vendor/smallvec/src/tests.rs /^fn test_insert_many_overflow() {$/;" f +test_insert_many_short_hint vendor/smallvec/src/tests.rs /^fn test_insert_many_short_hint() {$/;" f +test_int vendor/syn/tests/test_lit.rs /^ fn test_int(s: &str, value: u64, suffix: &str) {$/;" f function:ints +test_integer vendor/quote/tests/test.rs /^fn test_integer() {$/;" f +test_internal vendor/futures-macro/src/lib.rs /^pub fn test_internal(input: TokenStream, item: TokenStream) -> TokenStream {$/;" f +test_internal_items vendor/async-trait/tests/test.rs /^pub async fn test_internal_items() {$/;" f +test_interpolated_literal vendor/quote/tests/test.rs /^fn test_interpolated_literal() {$/;" f +test_into_async_bufread vendor/futures/tests/stream_into_async_read.rs /^fn test_into_async_bufread() {$/;" f +test_into_async_read vendor/futures/tests/stream_into_async_read.rs /^fn test_into_async_read() {$/;" f +test_into_inner vendor/smallvec/src/tests.rs /^fn test_into_inner() {$/;" f +test_into_iter_as_slice vendor/smallvec/src/tests.rs /^fn test_into_iter_as_slice() {$/;" f +test_into_iter_clone vendor/smallvec/src/tests.rs /^fn test_into_iter_clone() {$/;" f +test_into_iter_clone_empty_smallvec vendor/smallvec/src/tests.rs /^fn test_into_iter_clone_empty_smallvec() {$/;" f +test_into_iter_clone_partially_consumed_iterator vendor/smallvec/src/tests.rs /^fn test_into_iter_clone_partially_consumed_iterator() {$/;" f +test_into_vec vendor/smallvec/src/tests.rs /^fn test_into_vec() {$/;" f +test_ints vendor/thiserror/tests/test_display.rs /^fn test_ints() {$/;" f +test_invalid_grow vendor/smallvec/src/tests.rs /^fn test_invalid_grow() {$/;" f +test_ioctl vendor/nix/test/sys/mod.rs /^mod test_ioctl;$/;" n +test_ioctl_none vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_none() {$/;" f module:freebsd_ioctls +test_ioctl_none vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_none() {$/;" f module:linux_ioctls +test_ioctl_none_bad vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_none_bad() {$/;" f module:linux_ioctls +test_ioctl_read vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_read() {$/;" f module:freebsd_ioctls +test_ioctl_read vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_read() {$/;" f module:linux_ioctls +test_ioctl_read_bad vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_read_bad() {$/;" f module:linux_ioctls +test_ioctl_readwrite vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_readwrite() {$/;" f module:linux_ioctls +test_ioctl_write_buf vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_write_buf() {$/;" f module:linux_ioctls +test_ioctl_write_int vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_write_int() {$/;" f module:linux_ioctls +test_ioctl_write_int_bad vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_write_int_bad() {$/;" f module:linux_ioctls +test_ioctl_write_ptr vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_write_ptr() {$/;" f module:freebsd_ioctls +test_ioctl_write_ptr vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_write_ptr() {$/;" f module:linux_ioctls +test_ioctl_write_ptr_bad vendor/nix/test/sys/test_ioctl.rs /^ fn test_ioctl_write_ptr_bad() {$/;" f module:linux_ioctls +test_ipv4addr_to_libc vendor/nix/src/sys/socket/addr.rs /^ fn test_ipv4addr_to_libc() {$/;" f module:tests::types +test_ipv6addr_to_libc vendor/nix/src/sys/socket/addr.rs /^ fn test_ipv6addr_to_libc() {$/;" f module:tests::types +test_is_all vendor/bitflags/src/lib.rs /^ fn test_is_all() {$/;" f module:tests +test_is_ascii_alphanumeric vendor/tinystr/benches/tinystr.rs /^fn test_is_ascii_alphanumeric(c: &mut Criterion) {$/;" f +test_is_empty vendor/bitflags/src/lib.rs /^ fn test_is_empty() {$/;" f module:tests +test_item_size vendor/syn/tests/test_size.rs /^fn test_item_size() {$/;" f +test_iter vendor/quote/tests/test.rs /^fn test_iter() {$/;" f +test_iteration vendor/elsa/src/vec.rs /^fn test_iteration() {$/;" f +test_junk_after_in vendor/syn/tests/test_visibility.rs /^fn test_junk_after_in() {$/;" f +test_kevent_filter vendor/nix/src/sys/event.rs /^fn test_kevent_filter() {$/;" f +test_keyword vendor/thiserror/tests/test_display.rs /^fn test_keyword() {$/;" f +test_kill_none vendor/nix/test/sys/test_signal.rs /^fn test_kill_none() {$/;" f +test_killpg_none vendor/nix/test/sys/test_signal.rs /^fn test_killpg_none() {$/;" f +test_kmod vendor/nix/test/test.rs /^mod test_kmod;$/;" n +test_leading_vert vendor/syn/tests/test_pat.rs /^fn test_leading_vert() {$/;" f +test_let_dot_dot vendor/syn/tests/test_stmt.rs /^fn test_let_dot_dot() {$/;" f +test_library_filename vendor/libloading/tests/library_filename.rs /^fn test_library_filename() {$/;" f +test_linkat_file vendor/nix/test/test_unistd.rs /^fn test_linkat_file() {$/;" f +test_linkat_follow_symlink vendor/nix/test/test_unistd.rs /^fn test_linkat_follow_symlink() {$/;" f +test_linkat_newdirfd_none vendor/nix/test/test_unistd.rs /^fn test_linkat_newdirfd_none() {$/;" f +test_linkat_no_follow_symlink vendor/nix/test/test_unistd.rs /^fn test_linkat_no_follow_symlink() {$/;" f +test_linkat_olddirfd_none vendor/nix/test/test_unistd.rs /^fn test_linkat_olddirfd_none() {$/;" f +test_lit_size vendor/syn/tests/test_size.rs /^fn test_lit_size() {$/;" f +test_literal_mangling vendor/syn/tests/test_token_trees.rs /^fn test_literal_mangling() {$/;" f +test_local_flags vendor/nix/test/sys/test_termios.rs /^fn test_local_flags() {$/;" f +test_local_peercred_seqpacket vendor/nix/test/sys/test_sockopt.rs /^pub fn test_local_peercred_seqpacket() {$/;" f +test_local_peercred_stream vendor/nix/test/sys/test_sockopt.rs /^pub fn test_local_peercred_stream() {$/;" f +test_lowerhex vendor/bitflags/src/lib.rs /^ fn test_lowerhex() {$/;" f module:tests +test_lseek vendor/nix/test/test_unistd.rs /^fn test_lseek() {$/;" f +test_lseek64 vendor/nix/test/test_unistd.rs /^fn test_lseek64() {$/;" f +test_lt vendor/bitflags/src/lib.rs /^ fn test_lt() {$/;" f module:tests +test_lutimes vendor/nix/test/test_stat.rs /^fn test_lutimes() {$/;" f +test_macro_rules vendor/thiserror/tests/test_display.rs /^fn test_macro_rules() {$/;" f +test_macro_variable_attr vendor/syn/tests/test_item.rs /^fn test_macro_variable_attr() {$/;" f +test_macro_variable_func vendor/syn/tests/test_expr.rs /^fn test_macro_variable_func() {$/;" f +test_macro_variable_impl vendor/syn/tests/test_item.rs /^fn test_macro_variable_impl() {$/;" f +test_macro_variable_macro vendor/syn/tests/test_expr.rs /^fn test_macro_variable_macro() {$/;" f +test_macro_variable_match_arm vendor/syn/tests/test_expr.rs /^fn test_macro_variable_match_arm() {$/;" f +test_macro_variable_struct vendor/syn/tests/test_expr.rs /^fn test_macro_variable_struct() {$/;" f +test_macro_variable_type vendor/syn/tests/test_ty.rs /^fn test_macro_variable_type() {$/;" f +test_match vendor/thiserror/tests/test_display.rs /^fn test_match() {$/;" f +test_meta vendor/lazy_static/tests/test.rs /^fn test_meta() {$/;" f +test_meta_item_bool_value vendor/syn/tests/test_attribute.rs /^fn test_meta_item_bool_value() {$/;" f +test_meta_item_list_bool_value vendor/syn/tests/test_attribute.rs /^fn test_meta_item_list_bool_value() {$/;" f +test_meta_item_list_lit vendor/syn/tests/test_attribute.rs /^fn test_meta_item_list_lit() {$/;" f +test_meta_item_list_name_value vendor/syn/tests/test_attribute.rs /^fn test_meta_item_list_name_value() {$/;" f +test_meta_item_list_word vendor/syn/tests/test_attribute.rs /^fn test_meta_item_list_word() {$/;" f +test_meta_item_multiple vendor/syn/tests/test_attribute.rs /^fn test_meta_item_multiple() {$/;" f +test_meta_item_name_value vendor/syn/tests/test_attribute.rs /^fn test_meta_item_name_value() {$/;" f +test_meta_item_word vendor/syn/tests/test_attribute.rs /^fn test_meta_item_word() {$/;" f +test_missing_in vendor/syn/tests/test_visibility.rs /^fn test_missing_in() {$/;" f +test_missing_in_path vendor/syn/tests/test_visibility.rs /^fn test_missing_in_path() {$/;" f +test_mixed vendor/thiserror/tests/test_display.rs /^fn test_mixed() {$/;" f +test_mkdirat_fail vendor/nix/test/test_stat.rs /^fn test_mkdirat_fail() {$/;" f +test_mkdirat_success_mode vendor/nix/test/test_stat.rs /^fn test_mkdirat_success_mode() {$/;" f +test_mkdirat_success_path vendor/nix/test/test_stat.rs /^fn test_mkdirat_success_path() {$/;" f +test_mkfifo vendor/nix/test/test_unistd.rs /^fn test_mkfifo() {$/;" f +test_mkfifo_directory vendor/nix/test/test_unistd.rs /^fn test_mkfifo_directory() {$/;" f +test_mkfifoat vendor/nix/test/test_unistd.rs /^fn test_mkfifoat() {$/;" f +test_mkfifoat_directory vendor/nix/test/test_unistd.rs /^fn test_mkfifoat_directory() {$/;" f +test_mkfifoat_directory_none vendor/nix/test/test_unistd.rs /^fn test_mkfifoat_directory_none() {$/;" f +test_mkfifoat_none vendor/nix/test/test_unistd.rs /^fn test_mkfifoat_none() {$/;" f +test_mknod vendor/nix/test/test_stat.rs /^fn test_mknod() {$/;" f +test_mknodat vendor/nix/test/test_stat.rs /^fn test_mknodat() {$/;" f +test_mkstemp vendor/nix/test/test_unistd.rs /^fn test_mkstemp() {$/;" f +test_mkstemp_directory vendor/nix/test/test_unistd.rs /^fn test_mkstemp_directory() {$/;" f +test_mman vendor/nix/test/sys/mod.rs /^mod test_mman;$/;" n +test_mmap_anonymous vendor/nix/test/sys/test_mman.rs /^fn test_mmap_anonymous() {$/;" f +test_mount vendor/nix/test/test_mount.rs /^mod test_mount {$/;" n +test_mount_bind vendor/nix/test/test_mount.rs /^ pub fn test_mount_bind() {$/;" f module:test_mount +test_mount_noexec_disallows_exec vendor/nix/test/test_mount.rs /^ pub fn test_mount_noexec_disallows_exec() {$/;" f module:test_mount +test_mount_rdonly_disallows_write vendor/nix/test/test_mount.rs /^ pub fn test_mount_rdonly_disallows_write() {$/;" f module:test_mount +test_mount_tmpfs_without_flags_allows_rwx vendor/nix/test/test_mount.rs /^ pub fn test_mount_tmpfs_without_flags_allows_rwx() {$/;" f module:test_mount +test_mq vendor/nix/test/test.rs /^mod test_mq;$/;" n +test_mq_getattr vendor/nix/test/test_mq.rs /^fn test_mq_getattr() {$/;" f +test_mq_send_and_receive vendor/nix/test/test_mq.rs /^fn test_mq_send_and_receive() {$/;" f +test_mq_set_nonblocking vendor/nix/test/test_mq.rs /^fn test_mq_set_nonblocking() {$/;" f +test_mq_setattr vendor/nix/test/test_mq.rs /^fn test_mq_setattr() {$/;" f +test_mq_unlink vendor/nix/test/test_mq.rs /^fn test_mq_unlink() {$/;" f +test_mremap_grow vendor/nix/test/sys/test_mman.rs /^fn test_mremap_grow() {$/;" f +test_mremap_shrink vendor/nix/test/sys/test_mman.rs /^fn test_mremap_shrink() {$/;" f +test_mut_self vendor/syn/tests/test_ty.rs /^fn test_mut_self() {$/;" f +test_mut_value_shorthand vendor/syn/tests/test_receiver.rs /^fn test_mut_value_shorthand() {$/;" f +test_mutex_guard_debug_not_recurse vendor/futures-util/src/lock/mutex.rs /^fn test_mutex_guard_debug_not_recurse() {$/;" f +test_negative_impl vendor/syn/tests/test_item.rs /^fn test_negative_impl() {$/;" f +test_negative_lit vendor/syn/tests/test_attribute.rs /^fn test_negative_lit() {$/;" f +test_nested vendor/thiserror/tests/test_display.rs /^fn test_nested() {$/;" f +test_nested_fancy_repetition vendor/quote/tests/test.rs /^fn test_nested_fancy_repetition() {$/;" f +test_net vendor/nix/test/test.rs /^mod test_net;$/;" n +test_new_kernel23 vendor/libloading/tests/windows.rs /^fn test_new_kernel23() {$/;" f +test_new_kernel32_no_ext vendor/libloading/tests/windows.rs /^fn test_new_kernel32_no_ext() {$/;" f +test_nix_path vendor/nix/test/test.rs /^mod test_nix_path;$/;" n +test_nmount vendor/nix/test/test.rs /^mod test_nmount;$/;" n +test_non_static vendor/thiserror/tests/test_transparent.rs /^fn test_non_static() {$/;" f +test_none_group vendor/syn/tests/test_stmt.rs /^fn test_none_group() {$/;" f +test_nonrep_in_repetition vendor/quote/tests/test.rs /^fn test_nonrep_in_repetition() {$/;" f +test_object_no_send vendor/async-trait/tests/test.rs /^pub async fn test_object_no_send() {$/;" f +test_object_safe_with_default vendor/async-trait/tests/test.rs /^pub async fn test_object_safe_with_default() {$/;" f +test_object_safe_without_default vendor/async-trait/tests/test.rs /^pub async fn test_object_safe_without_default() {$/;" f +test_octal vendor/bitflags/src/lib.rs /^ fn test_octal() {$/;" f module:tests +test_ofd_read_lock vendor/nix/test/test_fcntl.rs /^ fn test_ofd_read_lock() {$/;" f module:linux_android +test_ofd_write_lock vendor/nix/test/test_fcntl.rs /^ fn test_ofd_write_lock() {$/;" f module:linux_android +test_ok vendor/futures/tests_disabled/all.rs /^fn test_ok() {$/;" f +test_old_sigaction_flags vendor/nix/test/sys/test_signal.rs /^fn test_old_sigaction_flags() {$/;" f +test_op_none vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_none() {$/;" f module:bsd +test_op_none vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_none() {$/;" f module:linux +test_op_read vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_read() {$/;" f module:bsd +test_op_read vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_read() {$/;" f module:linux +test_op_read_64 vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_read_64() {$/;" f module:bsd +test_op_read_64 vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_read_64() {$/;" f module:linux +test_op_read_write vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_read_write() {$/;" f module:bsd +test_op_read_write vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_read_write() {$/;" f module:linux +test_op_read_write_64 vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_read_write_64() {$/;" f module:bsd +test_op_read_write_64 vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_read_write_64() {$/;" f module:linux +test_op_write vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_write() {$/;" f module:bsd +test_op_write vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_write() {$/;" f module:linux +test_op_write_64 vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_write_64() {$/;" f module:bsd +test_op_write_64 vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_write_64() {$/;" f module:linux +test_op_write_int vendor/nix/test/sys/test_ioctl.rs /^ fn test_op_write_int() {$/;" f module:bsd +test_open_ptty_pair vendor/nix/test/test_pty.rs /^fn test_open_ptty_pair() {$/;" f +test_openat vendor/nix/test/test_fcntl.rs /^fn test_openat() {$/;" f +test_openpty vendor/nix/test/test_pty.rs /^fn test_openpty() {$/;" f +test_openpty_with_termios vendor/nix/test/test_pty.rs /^fn test_openpty_with_termios() {$/;" f +test_operators vendor/bitflags/src/lib.rs /^ fn test_operators() {$/;" f module:tests +test_operators_unchecked vendor/bitflags/src/lib.rs /^ fn test_operators_unchecked() {$/;" f module:tests +test_option vendor/thiserror/tests/test_option.rs /^fn test_option() {}$/;" f +test_ord vendor/bitflags/src/lib.rs /^ fn test_ord() {$/;" f module:tests +test_ord vendor/smallvec/src/tests.rs /^fn test_ord() {$/;" f +test_ordinal vendor/libloading/tests/windows.rs /^fn test_ordinal() {$/;" f +test_ordinal_missing_fails vendor/libloading/tests/windows.rs /^fn test_ordinal_missing_fails() {$/;" f +test_outer_attr vendor/quote/tests/test.rs /^fn test_outer_attr() {$/;" f +test_outer_block_comment vendor/quote/tests/test.rs /^fn test_outer_block_comment() {$/;" f +test_outer_line_comment vendor/quote/tests/test.rs /^fn test_outer_line_comment() {$/;" f +test_output_flags vendor/nix/test/sys/test_termios.rs /^fn test_output_flags() {$/;" f +test_overlapping_intersects vendor/bitflags/src/lib.rs /^ fn test_overlapping_intersects() {$/;" f module:tests +test_parse_meta_item_list_lit vendor/syn/tests/test_meta.rs /^fn test_parse_meta_item_list_lit() {$/;" f +test_parse_meta_item_multiple vendor/syn/tests/test_meta.rs /^fn test_parse_meta_item_multiple() {$/;" f +test_parse_meta_item_word vendor/syn/tests/test_meta.rs /^fn test_parse_meta_item_word() {$/;" f +test_parse_meta_name_value vendor/syn/tests/test_meta.rs /^fn test_parse_meta_name_value() {$/;" f +test_parse_meta_name_value_with_bool vendor/syn/tests/test_meta.rs /^fn test_parse_meta_name_value_with_bool() {$/;" f +test_parse_meta_name_value_with_keyword vendor/syn/tests/test_meta.rs /^fn test_parse_meta_name_value_with_keyword() {$/;" f +test_parse_nested_meta vendor/syn/tests/test_meta.rs /^fn test_parse_nested_meta() {$/;" f +test_parse_path vendor/syn/tests/test_meta.rs /^fn test_parse_path() {$/;" f +test_parsing_kernel_version vendor/nix/src/features.rs /^ pub fn test_parsing_kernel_version() {$/;" f module:os +test_pat_ident vendor/syn/tests/test_pat.rs /^fn test_pat_ident() {$/;" f +test_pat_path vendor/syn/tests/test_pat.rs /^fn test_pat_path() {$/;" f +test_pat_size vendor/syn/tests/test_size.rs /^fn test_pat_size() {$/;" f +test_path_to_sock_addr vendor/nix/test/sys/test_socket.rs /^pub fn test_path_to_sock_addr() {$/;" f +test_pathconf_limited vendor/nix/test/test_unistd.rs /^fn test_pathconf_limited() {$/;" f +test_peek vendor/syn/tests/test_parse_stream.rs /^fn test_peek() {$/;" f +test_pipe vendor/nix/test/test_unistd.rs /^fn test_pipe() {$/;" f +test_pipe2 vendor/nix/test/test_unistd.rs /^fn test_pipe2() {$/;" f +test_poll vendor/nix/test/test.rs /^mod test_poll;$/;" n +test_poll vendor/nix/test/test_poll.rs /^fn test_poll() {$/;" f +test_pollfd_events vendor/nix/test/test_poll.rs /^fn test_pollfd_events() {$/;" f +test_pollfd_fd vendor/nix/test/test_poll.rs /^fn test_pollfd_fd() {$/;" f +test_posix_fadvise vendor/nix/test/test_fcntl.rs /^mod test_posix_fadvise {$/;" n +test_posix_fallocate vendor/nix/test/test_fcntl.rs /^mod test_posix_fallocate {$/;" n +test_postfix_operator_after_cast vendor/syn/tests/test_expr.rs /^fn test_postfix_operator_after_cast() {$/;" f +test_ppoll vendor/nix/test/test_poll.rs /^fn test_ppoll() {$/;" f +test_pread vendor/nix/test/sys/test_uio.rs /^fn test_pread() {$/;" f +test_preadv vendor/nix/test/sys/test_uio.rs /^fn test_preadv() {$/;" f +test_private vendor/bitflags/src/lib.rs /^ fn test_private() {$/;" f module:tests::submodule +test_process_vm_readv vendor/nix/test/sys/test_uio.rs /^fn test_process_vm_readv() {$/;" f +test_provide_name_collision vendor/thiserror/tests/test_backtrace.rs /^ fn test_provide_name_collision() {$/;" f module:structs +test_pselect vendor/nix/test/sys/test_select.rs /^pub fn test_pselect() {$/;" f +test_pselect_nfds2 vendor/nix/test/sys/test_select.rs /^pub fn test_pselect_nfds2() {$/;" f +test_pthread vendor/nix/test/sys/mod.rs /^mod test_pthread;$/;" n +test_pthread_kill_none vendor/nix/test/sys/test_pthread.rs /^fn test_pthread_kill_none() {$/;" f +test_pthread_self vendor/nix/test/sys/test_pthread.rs /^fn test_pthread_self() {$/;" f +test_ptrace vendor/nix/test/sys/mod.rs /^mod test_ptrace;$/;" n +test_ptrace vendor/nix/test/sys/test_ptrace.rs /^fn test_ptrace() {$/;" f +test_ptrace_cont vendor/nix/test/sys/test_ptrace.rs /^fn test_ptrace_cont() {$/;" f +test_ptrace_getevent vendor/nix/test/sys/test_ptrace.rs /^fn test_ptrace_getevent() {$/;" f +test_ptrace_getsiginfo vendor/nix/test/sys/test_ptrace.rs /^fn test_ptrace_getsiginfo() {$/;" f +test_ptrace_interrupt vendor/nix/test/sys/test_ptrace.rs /^fn test_ptrace_interrupt() {$/;" f +test_ptrace_setoptions vendor/nix/test/sys/test_ptrace.rs /^fn test_ptrace_setoptions() {$/;" f +test_ptrace_setsiginfo vendor/nix/test/sys/test_ptrace.rs /^fn test_ptrace_setsiginfo() {$/;" f +test_ptrace_syscall vendor/nix/test/sys/test_ptrace.rs /^fn test_ptrace_syscall() {$/;" f +test_ptsname_copy vendor/nix/test/test_pty.rs /^fn test_ptsname_copy() {$/;" f +test_ptsname_equivalence vendor/nix/test/test_pty.rs /^fn test_ptsname_equivalence() {$/;" f +test_ptsname_r_copy vendor/nix/test/test_pty.rs /^fn test_ptsname_r_copy() {$/;" f +test_ptsname_unique vendor/nix/test/test_pty.rs /^fn test_ptsname_unique() {$/;" f +test_pty vendor/nix/test/test.rs /^mod test_pty;$/;" n +test_pub vendor/syn/tests/test_visibility.rs /^fn test_pub() {$/;" f +test_pub_crate vendor/bitflags/src/lib.rs /^ fn test_pub_crate() {$/;" f module:tests +test_pub_crate vendor/syn/tests/test_visibility.rs /^fn test_pub_crate() {$/;" f +test_pub_in_module vendor/bitflags/src/lib.rs /^ fn test_pub_in_module() {$/;" f module:tests +test_pub_restricted vendor/syn/tests/test_derive_input.rs /^fn test_pub_restricted() {$/;" f +test_pub_restricted_crate vendor/syn/tests/test_derive_input.rs /^fn test_pub_restricted_crate() {$/;" f +test_pub_restricted_in_super vendor/syn/tests/test_derive_input.rs /^fn test_pub_restricted_in_super() {$/;" f +test_pub_restricted_super vendor/syn/tests/test_derive_input.rs /^fn test_pub_restricted_super() {$/;" f +test_pub_self vendor/syn/tests/test_visibility.rs /^fn test_pub_self() {$/;" f +test_pub_super vendor/syn/tests/test_visibility.rs /^fn test_pub_super() {$/;" f +test_public vendor/bitflags/src/lib.rs /^ fn test_public() {$/;" f module:tests +test_push_back vendor/futures/tests/stream_futures_ordered.rs /^fn test_push_back() {$/;" f +test_push_front vendor/futures/tests/stream_futures_ordered.rs /^fn test_push_front() {$/;" f +test_pwrite vendor/nix/test/sys/test_uio.rs /^fn test_pwrite() {$/;" f +test_pwritev vendor/nix/test/sys/test_uio.rs /^fn test_pwritev() {$/;" f +test_quote_impl vendor/quote/tests/test.rs /^fn test_quote_impl() {$/;" f +test_quote_raw_id vendor/quote/tests/test.rs /^fn test_quote_raw_id() {$/;" f +test_quote_spanned_impl vendor/quote/tests/test.rs /^fn test_quote_spanned_impl() {$/;" f +test_raw vendor/thiserror/tests/test_display.rs /^fn test_raw() {$/;" f +test_raw_conflict vendor/thiserror/tests/test_display.rs /^fn test_raw_conflict() {$/;" f +test_raw_enum vendor/thiserror/tests/test_display.rs /^fn test_raw_enum() {$/;" f +test_raw_field vendor/memoffset/src/offset_of.rs /^ fn test_raw_field() {$/;" f module:tests +test_raw_field_tuple vendor/memoffset/src/offset_of.rs /^ fn test_raw_field_tuple() {$/;" f module:tests +test_raw_invalid vendor/syn/tests/test_stmt.rs /^fn test_raw_invalid() {$/;" f +test_raw_operator vendor/syn/tests/test_stmt.rs /^fn test_raw_operator() {$/;" f +test_raw_variable vendor/syn/tests/test_stmt.rs /^fn test_raw_variable() {$/;" f +test_read_ptty_pair vendor/nix/test/test_pty.rs /^fn test_read_ptty_pair() {$/;" f +test_readlink vendor/nix/test/test_fcntl.rs /^fn test_readlink() {$/;" f +test_readv vendor/nix/test/sys/test_uio.rs /^fn test_readv() {$/;" f +test_recv_ipv4pktinfo vendor/nix/test/sys/test_socket.rs /^pub fn test_recv_ipv4pktinfo() {$/;" f +test_recv_ipv6pktinfo vendor/nix/test/sys/test_socket.rs /^pub fn test_recv_ipv6pktinfo() {$/;" f +test_recverr_impl vendor/nix/test/sys/test_socket.rs /^ fn test_recverr_impl($/;" f module:linux_errqueue +test_recverr_v4 vendor/nix/test/sys/test_socket.rs /^ fn test_recverr_v4() {$/;" f module:linux_errqueue +test_recverr_v6 vendor/nix/test/sys/test_socket.rs /^ fn test_recverr_v6() {$/;" f module:linux_errqueue +test_recvif vendor/nix/test/sys/test_socket.rs /^pub fn test_recvif() {$/;" f +test_recvif_ipv4 vendor/nix/test/sys/test_socket.rs /^pub fn test_recvif_ipv4() {$/;" f +test_recvif_ipv6 vendor/nix/test/sys/test_socket.rs /^pub fn test_recvif_ipv6() {$/;" f +test_recvmmsg_timestampns vendor/nix/test/sys/test_socket.rs /^fn test_recvmmsg_timestampns() {$/;" f +test_recvmsg_ebadf vendor/nix/test/sys/test_socket.rs /^pub fn test_recvmsg_ebadf() {$/;" f +test_recvmsg_rxq_ovfl vendor/nix/test/sys/test_socket.rs /^fn test_recvmsg_rxq_ovfl() {$/;" f +test_recvmsg_timestampns vendor/nix/test/sys/test_socket.rs /^fn test_recvmsg_timestampns() {$/;" f +test_ref_mut_shorthand vendor/syn/tests/test_receiver.rs /^fn test_ref_mut_shorthand() {$/;" f +test_ref_shorthand vendor/syn/tests/test_receiver.rs /^fn test_ref_shorthand() {$/;" f +test_remove vendor/bitflags/src/lib.rs /^ fn test_remove() {$/;" f module:tests +test_renameat vendor/nix/test/test_fcntl.rs /^fn test_renameat() {$/;" f +test_renameat2_behaves_like_renameat_with_no_flags vendor/nix/test/test_fcntl.rs /^fn test_renameat2_behaves_like_renameat_with_no_flags() {$/;" f +test_renameat2_exchange vendor/nix/test/test_fcntl.rs /^fn test_renameat2_exchange() {$/;" f +test_renameat2_noreplace vendor/nix/test/test_fcntl.rs /^fn test_renameat2_noreplace() {$/;" f +test_repeat vendor/lazy_static/tests/test.rs /^fn test_repeat() {$/;" f +test_resize vendor/smallvec/src/tests.rs /^fn test_resize() {$/;" f +test_resource vendor/nix/test/test.rs /^mod test_resource;$/;" n +test_resource_limits_nofile vendor/nix/test/test_resource.rs /^pub fn test_resource_limits_nofile() {$/;" f +test_ret vendor/async-trait/tests/ui/send-not-implemented.rs /^ async fn test_ret(&self) -> bool {$/;" P interface:Test +test_retain vendor/smallvec/src/tests.rs /^fn test_retain() {$/;" f +test_roaring_size vendor/unicode-ident/tests/static_size.rs /^fn test_roaring_size() {$/;" f +test_round_trip vendor/syn/tests/test_round_trip.rs /^fn test_round_trip() {$/;" f +test_rustc_precedence vendor/syn/tests/test_precedence.rs /^fn test_rustc_precedence() {$/;" f +test_rx vendor/futures-channel/tests/mpsc-close.rs /^ test_rx: Option>>,$/;" m struct:stress_try_send_as_receiver_closes::TestTask +test_sched vendor/nix/test/test.rs /^mod test_sched;$/;" n +test_sched_affinity vendor/nix/test/test_sched.rs /^fn test_sched_affinity() {$/;" f +test_scm_credentials vendor/nix/test/sys/test_socket.rs /^fn test_scm_credentials() {$/;" f +test_scm_credentials_and_rights vendor/nix/test/sys/test_socket.rs /^fn test_scm_credentials_and_rights() {$/;" f +test_scm_rights vendor/nix/test/sys/test_socket.rs /^pub fn test_scm_rights() {$/;" f +test_scm_rights_single_cmsg_multiple_fds vendor/nix/test/sys/test_socket.rs /^fn test_scm_rights_single_cmsg_multiple_fds() {$/;" f +test_select vendor/nix/src/sys/select.rs /^ fn test_select() {$/;" f module:tests +test_select vendor/nix/test/sys/mod.rs /^mod test_select;$/;" n +test_select_nfds vendor/nix/src/sys/select.rs /^ fn test_select_nfds() {$/;" f module:tests +test_select_nfds2 vendor/nix/src/sys/select.rs /^ fn test_select_nfds2() {$/;" f module:tests +test_self_cpu_time vendor/nix/src/sys/resource.rs /^ pub fn test_self_cpu_time() {$/;" f module:test +test_self_in_macro vendor/async-trait/tests/test.rs /^pub async fn test_self_in_macro() {$/;" f +test_sendfile vendor/nix/test/test.rs /^mod test_sendfile;$/;" n +test_sendfile64_linux vendor/nix/test/test_sendfile.rs /^fn test_sendfile64_linux() {$/;" f +test_sendfile_darwin vendor/nix/test/test_sendfile.rs /^fn test_sendfile_darwin() {$/;" f +test_sendfile_dragonfly vendor/nix/test/test_sendfile.rs /^fn test_sendfile_dragonfly() {$/;" f +test_sendfile_freebsd vendor/nix/test/test_sendfile.rs /^fn test_sendfile_freebsd() {$/;" f +test_sendfile_linux vendor/nix/test/test_sendfile.rs /^fn test_sendfile_linux() {$/;" f +test_sendmsg_empty_cmsgs vendor/nix/test/sys/test_socket.rs /^pub fn test_sendmsg_empty_cmsgs() {$/;" f +test_sendmsg_ipv4packetinfo vendor/nix/test/sys/test_socket.rs /^pub fn test_sendmsg_ipv4packetinfo() {$/;" f +test_sendmsg_ipv4sendsrcaddr vendor/nix/test/sys/test_socket.rs /^pub fn test_sendmsg_ipv4sendsrcaddr() {$/;" f +test_sendmsg_ipv6packetinfo vendor/nix/test/sys/test_socket.rs /^pub fn test_sendmsg_ipv6packetinfo() {$/;" f +test_serde vendor/slab/tests/serde.rs /^fn test_serde() {$/;" f +test_serde vendor/smallvec/src/tests.rs /^fn test_serde() {$/;" f +test_serde_bitflags_deserialize vendor/bitflags/src/lib.rs /^ fn test_serde_bitflags_deserialize() {$/;" f module:tests +test_serde_bitflags_roundtrip vendor/bitflags/src/lib.rs /^ fn test_serde_bitflags_roundtrip() {$/;" f module:tests +test_serde_bitflags_serialize vendor/bitflags/src/lib.rs /^ fn test_serde_bitflags_serialize() {$/;" f module:tests +test_serde_empty vendor/slab/tests/serde.rs /^fn test_serde_empty() {$/;" f +test_set vendor/bitflags/src/lib.rs /^ fn test_set() {$/;" f module:tests +test_set_ops_basic vendor/bitflags/src/lib.rs /^ fn test_set_ops_basic() {$/;" f module:tests +test_set_ops_const vendor/bitflags/src/lib.rs /^ fn test_set_ops_const() {$/;" f module:tests +test_set_ops_exhaustive vendor/bitflags/src/lib.rs /^ fn test_set_ops_exhaustive() {$/;" f module:tests +test_set_ops_unchecked vendor/bitflags/src/lib.rs /^ fn test_set_ops_unchecked() {$/;" f module:tests +test_setfsuid vendor/nix/test/test_unistd.rs /^fn test_setfsuid() {$/;" f +test_setgroups vendor/nix/test/test_unistd.rs /^fn test_setgroups() {$/;" f +test_short_reads vendor/futures/tests/io_buf_reader.rs /^fn test_short_reads() {$/;" f +test_sigaction vendor/nix/src/sys/signal.rs /^ fn test_sigaction() {$/;" f module:tests +test_sigaction_action vendor/nix/src/sys/signal.rs /^ extern "C" fn test_sigaction_action($/;" f function:tests::test_sigaction +test_sigaction_action vendor/nix/test/sys/test_signal.rs /^extern "C" fn test_sigaction_action($/;" f +test_sigaction_handler vendor/nix/src/sys/signal.rs /^ extern "C" fn test_sigaction_handler(_: libc::c_int) {}$/;" f function:tests::test_sigaction +test_sigaction_handler vendor/nix/test/sys/test_signal.rs /^extern "C" fn test_sigaction_handler(signal: libc::c_int) {$/;" f +test_signal vendor/nix/test/sys/mod.rs /^mod test_signal;$/;" n +test_signal vendor/nix/test/sys/test_signal.rs /^fn test_signal() {$/;" f +test_signal_sigaction vendor/nix/test/sys/test_signal.rs /^fn test_signal_sigaction() {$/;" f +test_signalfd vendor/nix/test/sys/mod.rs /^mod test_signalfd;$/;" n +test_signalfd vendor/nix/test/sys/test_signalfd.rs /^fn test_signalfd() {$/;" f +test_sigprocmask vendor/nix/test/sys/test_signal.rs /^fn test_sigprocmask() {$/;" f +test_sigprocmask_noop vendor/nix/test/sys/test_signal.rs /^fn test_sigprocmask_noop() {$/;" f +test_sigwait vendor/nix/src/sys/signal.rs /^ fn test_sigwait() {$/;" f module:tests +test_simple_precedence vendor/syn/tests/test_precedence.rs /^fn test_simple_precedence() {$/;" f +test_size vendor/once_cell/src/imp_pl.rs /^fn test_size() {$/;" f +test_size vendor/once_cell/src/imp_std.rs /^ fn test_size() {$/;" f module:tests +test_size vendor/unicode-ident/tests/static_size.rs /^fn test_size() {$/;" f +test_so_buf vendor/nix/test/sys/test_sockopt.rs /^fn test_so_buf() {$/;" f +test_so_tcp_keepalive vendor/nix/test/sys/test_sockopt.rs /^fn test_so_tcp_keepalive() {$/;" f +test_so_tcp_maxseg vendor/nix/test/sys/test_sockopt.rs /^fn test_so_tcp_maxseg() {$/;" f +test_socket vendor/nix/test/sys/mod.rs /^mod test_socket;$/;" n +test_socketpair vendor/nix/test/sys/test_socket.rs /^pub fn test_socketpair() {$/;" f +test_sockopt vendor/nix/test/sys/mod.rs /^mod test_sockopt;$/;" n +test_spill vendor/smallvec/src/tests.rs /^pub fn test_spill() {$/;" f +test_splice vendor/nix/test/test_fcntl.rs /^ fn test_splice() {$/;" f module:linux_android +test_split vendor/futures/tests/stream_split.rs /^fn test_split() {$/;" f +test_split_for_impl vendor/syn/tests/test_generics.rs /^fn test_split_for_impl() {$/;" f +test_star_after_repetition vendor/quote/tests/test.rs /^fn test_star_after_repetition() {$/;" f +test_stat vendor/nix/test/sys/mod.rs /^mod test_stat;$/;" n +test_stat vendor/nix/test/test.rs /^mod test_stat;$/;" n +test_stat_and_fstat vendor/nix/test/test_stat.rs /^fn test_stat_and_fstat() {$/;" f +test_stat_fstat_lstat vendor/nix/test/test_stat.rs /^fn test_stat_fstat_lstat() {$/;" f +test_static_ptr vendor/libloading/tests/functions.rs /^fn test_static_ptr() {$/;" f +test_static_u32 vendor/libloading/tests/functions.rs /^fn test_static_u32() {$/;" f +test_std_conversions vendor/nix/test/sys/test_socket.rs /^pub fn test_std_conversions() {$/;" f +test_str vendor/quote/tests/test.rs /^fn test_str() {$/;" f +test_strategy vendor/fluent-langneg/src/negotiate/mod.rs /^ macro_rules! test_strategy {$/;" M function:filter_matches +test_string vendor/quote/tests/test.rs /^fn test_string() {$/;" f +test_string vendor/syn/tests/test_lit.rs /^ fn test_string(s: &str, value: &str) {$/;" f function:strings +test_struct vendor/syn/tests/test_derive_input.rs /^fn test_struct() {$/;" f +test_struct vendor/syn/tests/test_token_trees.rs /^fn test_struct() {$/;" f +test_struct_kevent vendor/nix/src/sys/event.rs /^fn test_struct_kevent() {$/;" f +test_substitution vendor/quote/tests/test.rs /^fn test_substitution() {$/;" f +test_success vendor/nix/test/test_fcntl.rs /^ fn test_success() {$/;" f module:test_posix_fadvise +test_supertraits vendor/syn/tests/test_item.rs /^fn test_supertraits() {$/;" f +test_symlinkat vendor/nix/test/test_unistd.rs /^fn test_symlinkat() {$/;" f +test_syntax_error test.c /^test_syntax_error (format, arg)$/;" f file: +test_sysconf_limited vendor/nix/test/test_unistd.rs /^fn test_sysconf_limited() {$/;" f +test_sysconf_unsupported vendor/nix/test/test_unistd.rs /^fn test_sysconf_unsupported() {$/;" f +test_syscontrol vendor/nix/test/sys/test_socket.rs /^pub fn test_syscontrol() {$/;" f +test_sysinfo vendor/nix/test/sys/mod.rs /^mod test_sysinfo;$/;" n +test_tcgetattr_ebadf vendor/nix/test/sys/test_termios.rs /^fn test_tcgetattr_ebadf() {$/;" f +test_tcgetattr_enotty vendor/nix/test/sys/test_termios.rs /^fn test_tcgetattr_enotty() {$/;" f +test_tcgetattr_pty vendor/nix/test/sys/test_termios.rs /^fn test_tcgetattr_pty() {$/;" f +test_tcp_congestion vendor/nix/test/sys/test_sockopt.rs /^fn test_tcp_congestion() {$/;" f +test_tee vendor/nix/test/test_fcntl.rs /^ fn test_tee() {$/;" f module:linux_android +test_termios vendor/nix/test/sys/mod.rs /^mod test_termios;$/;" n +test_thread_signal_block vendor/nix/src/sys/signal.rs /^ fn test_thread_signal_block() {$/;" f module:tests +test_thread_signal_set_mask vendor/nix/src/sys/signal.rs /^ fn test_thread_signal_set_mask() {$/;" f module:tests +test_thread_signal_swap vendor/nix/src/sys/signal.rs /^ fn test_thread_signal_swap() {$/;" f module:tests +test_thread_signal_unblock vendor/nix/src/sys/signal.rs /^ fn test_thread_signal_unblock() {$/;" f module:tests +test_time vendor/nix/test/test.rs /^mod test_time;$/;" n +test_timer vendor/nix/test/test.rs /^mod test_timer;$/;" n +test_timerfd vendor/nix/test/sys/mod.rs /^mod test_timerfd;$/;" n +test_timerfd_interval vendor/nix/test/sys/test_timerfd.rs /^pub fn test_timerfd_interval() {$/;" f +test_timerfd_oneshot vendor/nix/test/sys/test_timerfd.rs /^pub fn test_timerfd_oneshot() {$/;" f +test_timerfd_unset vendor/nix/test/sys/test_timerfd.rs /^pub fn test_timerfd_unset() {$/;" f +test_timespec vendor/nix/src/sys/time.rs /^ pub fn test_timespec() {$/;" f module:test +test_timespec_fmt vendor/nix/src/sys/time.rs /^ pub fn test_timespec_fmt() {$/;" f module:test +test_timespec_from vendor/nix/src/sys/time.rs /^ pub fn test_timespec_from() {$/;" f module:test +test_timespec_neg vendor/nix/src/sys/time.rs /^ pub fn test_timespec_neg() {$/;" f module:test +test_timespec_ord vendor/nix/src/sys/time.rs /^ pub fn test_timespec_ord() {$/;" f module:test +test_timestamping vendor/nix/test/sys/test_socket.rs /^pub fn test_timestamping() {$/;" f +test_timeval vendor/nix/src/sys/time.rs /^ pub fn test_timeval() {$/;" f module:test +test_timeval_fmt vendor/nix/src/sys/time.rs /^ pub fn test_timeval_fmt() {$/;" f module:test +test_timeval_neg vendor/nix/src/sys/time.rs /^ pub fn test_timeval_neg() {$/;" f module:test +test_timeval_ord vendor/nix/src/sys/time.rs /^ pub fn test_timeval_ord() {$/;" f module:test +test_too_large_cmsgspace vendor/nix/test/sys/test_socket.rs /^fn test_too_large_cmsgspace() {$/;" f +test_trailing_comma vendor/thiserror/tests/test_display.rs /^fn test_trailing_comma() {$/;" f +test_trailing_plus vendor/syn/tests/test_ty.rs /^fn test_trailing_plus() {$/;" f +test_trait_object vendor/syn/tests/test_ty.rs /^fn test_trait_object() {$/;" f +test_transparent_enum vendor/thiserror/tests/test_transparent.rs /^fn test_transparent_enum() {$/;" f +test_transparent_struct vendor/thiserror/tests/test_transparent.rs /^fn test_transparent_struct() {$/;" f +test_trieset_size vendor/unicode-ident/tests/static_size.rs /^fn test_trieset_size() {$/;" f +test_truncate vendor/nix/test/test_unistd.rs /^fn test_truncate() {$/;" f +test_truncate vendor/smallvec/src/tests.rs /^fn test_truncate() {$/;" f +test_ttl_opts vendor/nix/test/sys/test_sockopt.rs /^fn test_ttl_opts() {$/;" f +test_ttyname vendor/nix/test/test_unistd.rs /^fn test_ttyname() {$/;" f +test_ttyname_invalid_fd vendor/nix/test/test_unistd.rs /^fn test_ttyname_invalid_fd() {$/;" f +test_ttyname_not_pty vendor/nix/test/test_unistd.rs /^fn test_ttyname_not_pty() {$/;" f +test_tuple vendor/thiserror/tests/test_display.rs /^fn test_tuple() {$/;" f +test_tuple_multi_index vendor/syn/tests/test_expr.rs /^fn test_tuple_multi_index() {$/;" f +test_tuple_offset vendor/memoffset/src/offset_of.rs /^ fn test_tuple_offset() {$/;" f module:tests +test_two_empties_do_not_intersect vendor/bitflags/src/lib.rs /^ fn test_two_empties_do_not_intersect() {$/;" f module:tests +test_txtime vendor/nix/test/sys/test_socket.rs /^pub fn test_txtime() {$/;" f +test_ty_param_bound vendor/syn/tests/test_generics.rs /^fn test_ty_param_bound() {$/;" f +test_type_empty_bounds vendor/syn/tests/test_item.rs /^fn test_type_empty_bounds() {$/;" f +test_type_map vendor/type-map/src/lib.rs /^fn test_type_map() {$/;" f +test_type_size vendor/syn/tests/test_size.rs /^fn test_type_size() {$/;" f +test_u128_bitflags vendor/bitflags/src/lib.rs /^ fn test_u128_bitflags() {$/;" f module:tests +test_uio vendor/nix/test/sys/mod.rs /^mod test_uio;$/;" n +test_uname_darwin vendor/nix/src/sys/utsname.rs /^ pub fn test_uname_darwin() {$/;" f module:test +test_uname_freebsd vendor/nix/src/sys/utsname.rs /^ pub fn test_uname_freebsd() {$/;" f module:test +test_uname_linux vendor/nix/src/sys/utsname.rs /^ pub fn test_uname_linux() {$/;" f module:test +test_underscore vendor/quote/tests/test.rs /^fn test_underscore() {$/;" f +test_unimplemented vendor/async-trait/tests/test.rs /^pub async fn test_unimplemented() {$/;" f +test_union vendor/syn/tests/test_derive_input.rs /^fn test_union() {$/;" f +test_unistd vendor/nix/test/test.rs /^mod test_unistd;$/;" n +test_unit vendor/syn/tests/test_derive_input.rs /^fn test_unit() {$/;" f +test_unit vendor/thiserror/tests/test_display.rs /^fn test_unit() {$/;" f +test_unixdomain vendor/nix/test/sys/test_socket.rs /^pub fn test_unixdomain() {$/;" f +test_unlinkat_dir_noremovedir vendor/nix/test/test_unistd.rs /^fn test_unlinkat_dir_noremovedir() {$/;" f +test_unlinkat_dir_removedir vendor/nix/test/test_unistd.rs /^fn test_unlinkat_dir_removedir() {$/;" f +test_unlinkat_file vendor/nix/test/test_unistd.rs /^fn test_unlinkat_file() {$/;" f +test_unop r_bash/src/lib.rs /^ pub fn test_unop(arg1: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +test_unop test.c /^test_unop (op)$/;" f +test_unused_qualifications vendor/thiserror/tests/test_lints.rs /^fn test_unused_qualifications() {$/;" f +test_upperhex vendor/bitflags/src/lib.rs /^ fn test_upperhex() {$/;" f module:tests +test_usage_within_a_function vendor/cfg-if/src/lib.rs /^ fn test_usage_within_a_function() {$/;" f module:tests +test_user_into_passwd vendor/nix/test/test_unistd.rs /^fn test_user_into_passwd() {$/;" f +test_utimensat vendor/nix/test/test_stat.rs /^fn test_utimensat() {$/;" f +test_utimes vendor/nix/test/test_stat.rs /^fn test_utimes() {$/;" f +test_v6dontfrag_opts vendor/nix/test/sys/test_sockopt.rs /^fn test_v6dontfrag_opts() {$/;" f +test_value_shorthand vendor/syn/tests/test_receiver.rs /^fn test_value_shorthand() {$/;" f +test_variable_name_conflict vendor/quote/tests/test.rs /^fn test_variable_name_conflict() {$/;" f +test_vis_crate vendor/syn/tests/test_derive_input.rs /^fn test_vis_crate() {$/;" f +test_visibility vendor/lazy_static/tests/test.rs /^fn test_visibility() {$/;" f +test_vmsplice vendor/nix/test/test_fcntl.rs /^ fn test_vmsplice() {$/;" f module:linux_android +test_void vendor/thiserror/tests/test_display.rs /^fn test_void() {$/;" f +test_vsock vendor/nix/test/sys/test_socket.rs /^pub fn test_vsock() {$/;" f +test_wait vendor/nix/test/sys/mod.rs /^mod test_wait;$/;" n +test_wait vendor/nix/test/test_unistd.rs /^fn test_wait() {$/;" f +test_wait_exit vendor/nix/test/sys/test_wait.rs /^fn test_wait_exit() {$/;" f +test_wait_ptrace vendor/nix/test/sys/test_wait.rs /^ fn test_wait_ptrace() {$/;" f module:ptrace +test_wait_signal vendor/nix/test/sys/test_wait.rs /^fn test_wait_signal() {$/;" f +test_waitid_exit vendor/nix/test/sys/test_wait.rs /^fn test_waitid_exit() {$/;" f +test_waitid_pid vendor/nix/test/sys/test_wait.rs /^fn test_waitid_pid() {$/;" f +test_waitid_ptrace vendor/nix/test/sys/test_wait.rs /^ fn test_waitid_ptrace() {$/;" f module:ptrace +test_waitid_signal vendor/nix/test/sys/test_wait.rs /^fn test_waitid_signal() {$/;" f +test_waitstatus_from_raw vendor/nix/test/sys/test_wait.rs /^fn test_waitstatus_from_raw() {$/;" f +test_waitstatus_pid vendor/nix/test/sys/test_wait.rs /^fn test_waitstatus_pid() {$/;" f +test_where_clause_at_end_of_input vendor/syn/tests/test_generics.rs /^fn test_where_clause_at_end_of_input() {$/;" f +test_with_capacity vendor/smallvec/src/tests.rs /^fn test_with_capacity() {$/;" f +test_with_sysroot vendor/autocfg/tests/rustflags.rs /^fn test_with_sysroot() {$/;" f +test_write vendor/smallvec/src/tests.rs /^fn test_write() {$/;" f +test_write_all_vectored vendor/futures-util/src/io/write_all_vectored.rs /^ fn test_write_all_vectored() {$/;" f module:tests +test_write_ptty_pair vendor/nix/test/test_pty.rs /^fn test_write_ptty_pair() {$/;" f +test_writer vendor/futures-util/src/io/write_all_vectored.rs /^ fn test_writer(n_bufs: usize, per_call: usize) -> TestWriter {$/;" f module:tests +test_writer_read_from_multiple_bufs vendor/futures-util/src/io/write_all_vectored.rs /^ fn test_writer_read_from_multiple_bufs() {$/;" f module:tests +test_writer_read_from_one_buf vendor/futures-util/src/io/write_all_vectored.rs /^ fn test_writer_read_from_one_buf() {$/;" f module:tests +test_writev vendor/nix/test/sys/test_uio.rs /^fn test_writev() {$/;" f +test_xid_size vendor/unicode-ident/tests/static_size.rs /^fn test_xid_size() {$/;" f +test_zero vendor/smallvec/src/tests.rs /^pub fn test_zero() {$/;" f +test_zero_value_flags vendor/bitflags/src/lib.rs /^ fn test_zero_value_flags() {$/;" f module:tests +testcases vendor/syn/benches/rust.rs /^ macro_rules! testcases {$/;" M function:main +testdata vendor/memchr/src/tests/memchr/mod.rs /^mod testdata;$/;" n +tests Makefile.in /^test tests check: force $(Program) $(TESTS_SUPPORT)$/;" t +tests builtins_rust/colon/src/lib.rs /^mod tests {$/;" n +tests builtins_rust/echo/src/lib.rs /^mod tests {$/;" n +tests builtins_rust/eval/src/lib.rs /^mod tests {$/;" n +tests builtins_rust/umask/src/lib.rs /^mod tests {$/;" n +tests builtins_rust/wait/src/lib.rs /^mod tests {$/;" n +tests vendor/autocfg/src/lib.rs /^mod tests;$/;" n +tests vendor/bitflags/src/lib.rs /^mod tests {$/;" n +tests vendor/cfg-if/src/lib.rs /^mod tests {$/;" n +tests vendor/chunky-vec/src/lib.rs /^mod tests {$/;" n +tests vendor/fluent-bundle/src/types/number.rs /^mod tests {$/;" n +tests vendor/futures-channel/src/lock.rs /^mod tests {$/;" n +tests vendor/futures-executor/src/thread_pool.rs /^mod tests {$/;" n +tests vendor/futures-task/src/noop_waker.rs /^mod tests {$/;" n +tests vendor/futures-util/src/io/write_all_vectored.rs /^mod tests {$/;" n +tests vendor/intl-memoizer/src/lib.rs /^mod tests {$/;" n +tests vendor/intl_pluralrules/src/lib.rs /^mod tests {$/;" n +tests vendor/memchr/src/lib.rs /^mod tests;$/;" n +tests vendor/memchr/src/memmem/prefilter/fallback.rs /^mod tests {$/;" n +tests vendor/memchr/src/memmem/prefilter/mod.rs /^pub(crate) mod tests {$/;" n +tests vendor/memchr/src/memmem/prefilter/wasm.rs /^mod tests {$/;" n +tests vendor/memchr/src/memmem/prefilter/x86/avx.rs /^mod tests {$/;" n +tests vendor/memchr/src/memmem/prefilter/x86/sse.rs /^mod tests {$/;" n +tests vendor/memchr/src/memmem/twoway.rs /^mod tests {$/;" n +tests vendor/memchr/src/memmem/wasm.rs /^mod tests {$/;" n +tests vendor/memchr/src/memmem/x86/avx.rs /^mod tests {$/;" n +tests vendor/memchr/src/memmem/x86/sse.rs /^mod tests {$/;" n +tests vendor/memoffset/src/offset_of.rs /^mod tests {$/;" n +tests vendor/memoffset/src/span_of.rs /^mod tests {$/;" n +tests vendor/nix/src/ifaddrs.rs /^mod tests {$/;" n +tests vendor/nix/src/sys/select.rs /^mod tests {$/;" n +tests vendor/nix/src/sys/signal.rs /^mod tests {$/;" n +tests vendor/nix/src/sys/signalfd.rs /^mod tests {$/;" n +tests vendor/nix/src/sys/socket/addr.rs /^mod tests {$/;" n +tests vendor/nix/src/sys/socket/mod.rs /^mod tests {$/;" n +tests vendor/once_cell/src/imp_std.rs /^mod tests {$/;" n +tests vendor/smallvec/src/lib.rs /^mod tests;$/;" n +tests vendor/stdext/src/duration.rs /^mod tests {$/;" n +tests vendor/stdext/src/num/integer.rs /^mod tests {$/;" n +tests vendor/stdext/src/option.rs /^mod tests {$/;" n +tests vendor/stdext/src/result.rs /^mod tests {$/;" n +tests/README.md vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/_require_features.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/async_await_macros.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/auto_traits.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/auxiliary/mod.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/basic.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/channel.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +tests/comments.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +tests/common/eq.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/common/mod.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/common/parse.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/compare.rs vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +tests/compat.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/compile-fail/impls/copy.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/impls/copy.stderr.beta vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/impls/eq.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/impls/eq.stderr.beta vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/non_integer_base/all_defined.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/non_integer_base/all_defined.stderr.beta vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/non_integer_base/all_missing.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/non_integer_base/all_missing.stderr.beta vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/visibility/private_field.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/visibility/private_field.stderr.beta vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/visibility/private_flags.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/visibility/private_flags.stderr.beta vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/visibility/pub_const.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-fail/visibility/pub_const.stderr.beta vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-pass/impls/convert.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-pass/impls/default.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-pass/impls/inherent_methods.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-pass/redefinition/core.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-pass/redefinition/stringify.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-pass/repr/c.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-pass/repr/transparent.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-pass/visibility/bits_field.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile-pass/visibility/pub_in.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compile.rs vendor/bitflags/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"d362fc1fccaaf4d421bcf0fe8b80ddb4f625dade0c1ee52d08bd0b95509a49d1","COD/;" s object:files +tests/compiletest.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/compiletest.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/compiletest.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/compiletest.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/const_fn.rs vendor/libc/.cargo-checksum.json /^{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","/;" s object:files +tests/constants.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +tests/debug/gen.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/debug/mod.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/debugger_visualizer.rs vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +tests/drop_order.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/eager_drop.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/eventual.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/executor/mod.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/expand/default/enum.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/default/enum.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/default/struct.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/default/struct.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/multifields/enum.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/multifields/enum.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/multifields/struct.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/multifields/struct.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/enum-all.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/enum-all.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/enum-mut.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/enum-mut.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/enum-none.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/enum-none.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/enum-ref.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/enum-ref.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/struct-all.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/struct-all.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/struct-mut.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/struct-mut.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/struct-none.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/struct-none.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/struct-ref.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/naming/struct-ref.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/pinned_drop/enum.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/pinned_drop/enum.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/pinned_drop/struct.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/pinned_drop/struct.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/pub/enum.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/pub/enum.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/pub/struct.expanded.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expand/pub/struct.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/expandtest.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/features.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +tests/fst/mod.rs vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +tests/fst/xid_continue.fst vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +tests/fst/xid_start.fst vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +tests/functions.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +tests/future_abortable.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/future_basic_combinators.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/future_fuse.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/future_inspect.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/future_join_all.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/future_obj.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/future_select_all.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/future_select_ok.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/future_shared.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/future_try_flatten_stream.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/future_try_join_all.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/include/basic.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/io_buf_reader.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/io_buf_writer.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/io_cursor.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/io_line_writer.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/io_lines.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/io_read.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/io_read_exact.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/io_read_line.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/io_read_to_end.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/io_read_to_string.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/io_read_until.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/io_window.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/io_write.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/it.rs vendor/once_cell/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Car/;" s object:files +tests/library_filename.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +tests/lint.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/local_pool.rs vendor/futures-executor/.cargo-checksum.json /^{"files":{"Cargo.toml":"ca633f9f6ab98f45ca78fe6324ea459fc8bddaa6ebbb4b73974c1d8f963c3011","LICEN/;" s object:files +tests/localization_test.rs vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +tests/localization_test.rs vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +tests/lock_mutex.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/macro.rs vendor/smallvec/.cargo-checksum.json /^{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICEN/;" s object:files +tests/macro_comma_support.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/macros/mod.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/main.rs vendor/tinystr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cb378d2a5c7efd2259cdb7513e1a6bc8bc05b2c5f89b69b69f1f16037495760b","Car/;" s object:files +tests/marker.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +tests/markers.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +tests/mpsc-close.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +tests/mpsc.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +tests/nagisa32.dll vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +tests/nagisa64.dll vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +tests/no_std.rs vendor/lazy_static/.cargo-checksum.json /^{"files":{"Cargo.toml":"05e37a4e63dc4a495998bb5133252a51d671c4e99061a6342089ed6eab43978a","LICEN/;" s object:files +tests/object_safety.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/oneshot.rs vendor/futures-channel/.cargo-checksum.json /^{"files":{"Cargo.toml":"d45c22b81c8f46772c7b85fee53635c059e98bc42a37abb95d04fcd078971bd2","LICEN/;" s object:files +tests/oneshot.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/projection.rs vendor/pin-utils/.cargo-checksum.json /^{"files":{"Cargo.toml":"0f8296bda5b928d57bb84443422f21db3aa35d6873ce651297634d80c183dc6b","LICEN/;" s object:files +tests/proper_unpin.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ready_queue.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/recurse.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/regression.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/regression/issue1108.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/repo/mod.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/repo/progress.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/resources/en-US/test.ftl vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +tests/resources/en-US/test.ftl vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +tests/resources/en-US/test2.ftl vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +tests/resources/pl/test.ftl vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +tests/resources/pl/test.ftl vendor/fluent-resmgr/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"cc1558f40cd30dc75527044274f2276eecc42d4e561a29df8ad20e61282a3859","Car/;" s object:files +tests/resources/pl/test2.ftl vendor/fluent-fallback/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"57f63f6160b61446bbe83b611ebd8f5faf1a706c8a9ebc3058b56716da05a57e","Car/;" s object:files +tests/roaring/mod.rs vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +tests/rustflags.rs vendor/autocfg/.cargo-checksum.json /^{"files":{"Cargo.lock":"3d91565ed13de572a9ebde408a0c98e33f931d6ab52f212b0830a60b4ab26b77","Cargo/;" s object:files +tests/serde.rs vendor/slab/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"ae4c54789e1055543317a6812ac11644d0586883dee8f790119e4cef244b1b8e","Car/;" s object:files +tests/sink.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/sink_fanout.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/slab.rs vendor/slab/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"ae4c54789e1055543317a6812ac11644d0586883dee8f790119e4cef244b1b8e","Car/;" s object:files +tests/stack_pin.rs vendor/pin-utils/.cargo-checksum.json /^{"files":{"Cargo.toml":"0f8296bda5b928d57bb84443422f21db3aa35d6873ce651297634d80c183dc6b","LICEN/;" s object:files +tests/static_size.rs vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +tests/stream.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/stream_abortable.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/stream_buffer_unordered.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/stream_catch_unwind.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/stream_futures_ordered.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/stream_futures_unordered.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/stream_into_async_read.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/stream_peekable.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/stream_select_all.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/stream_select_next_some.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/stream_split.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/stream_try_stream.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/stream_unfold.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/task_arc_wake.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/task_atomic_waker.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/test.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/test.rs vendor/lazy_static/.cargo-checksum.json /^{"files":{"Cargo.toml":"05e37a4e63dc4a495998bb5133252a51d671c4e99061a6342089ed6eab43978a","LICEN/;" s object:files +tests/test.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/test.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +tests/test.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/test_asyncness.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_attribute.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_backtrace.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/test_deprecated.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/test_derive_input.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_display.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/test_error.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/test_expr.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_expr.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/test_fmt.rs vendor/proc-macro2/.cargo-checksum.json /^{"files":{"Cargo.toml":"9505cf076f910ef2f0b0ceb4a90c02bb42bcb9447996c4938a02f5fc3c4afe7a","LICEN/;" s object:files +tests/test_from.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/test_generics.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_generics.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/test_grouping.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_ident.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_item.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_iterators.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_lints.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/test_lit.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_macro.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/test_meta.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_option.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/test_parse_buffer.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_parse_stream.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_pat.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_path.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_path.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/test_precedence.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_receiver.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_round_trip.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_shebang.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_should_parse.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_size.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_source.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/test_stmt.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_token_trees.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_transparent.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/test_ty.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/test_visibility.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests/trie/mod.rs vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +tests/trie/trie.rs vendor/unicode-ident/.cargo-checksum.json /^{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICEN/;" s object:files +tests/try_join.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests/ui/arg-implementation-detail.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/arg-implementation-detail.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/bad-field-attr.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/bad-field-attr.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/bare-trait-object.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/bare-trait-object.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/concat-display.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/concat-display.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/consider-restricting.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/consider-restricting.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/delimiter-span.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/delimiter-span.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/does-not-have-iter-interpolated-dup.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/does-not-have-iter-interpolated-dup.stderr vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/does-not-have-iter-interpolated.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/does-not-have-iter-interpolated.stderr vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/does-not-have-iter-separated.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/does-not-have-iter-separated.stderr vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/does-not-have-iter.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/does-not-have-iter.stderr vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/duplicate-enum-source.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/duplicate-enum-source.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/duplicate-fmt.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/duplicate-fmt.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/duplicate-struct-source.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/duplicate-struct-source.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/duplicate-transparent.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/duplicate-transparent.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/from-backtrace-backtrace.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/from-backtrace-backtrace.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/from-not-source.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/from-not-source.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/lifetime-span.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/lifetime-span.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/lifetime.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/lifetime.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/missing-async-in-impl.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/missing-async-in-impl.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/missing-async-in-trait.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/missing-async-in-trait.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/missing-body.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/missing-body.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/missing-fmt.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/missing-fmt.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/must-use.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/must-use.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/no-display.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/no-display.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/not-quotable.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/not-quotable.stderr vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/not-repeatable.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/not-repeatable.stderr vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/pin_project/conflict-drop.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/conflict-drop.stderr vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/conflict-unpin.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/conflict-unpin.stderr vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/invalid-bounds.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/invalid-bounds.stderr vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/invalid.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/invalid.stderr vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/overlapping_lifetime_names.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/overlapping_lifetime_names.stderr vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/overlapping_unpin_struct.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/overlapping_unpin_struct.stderr vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/packed.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/packed.stderr vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/unpin_sneaky.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/unpin_sneaky.stderr vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/unsupported.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pin_project/unsupported.stderr vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pinned_drop/call-drop-inner.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pinned_drop/call-drop-inner.stderr vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pinned_drop/conditional-drop-impl.rs vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/pinned_drop/conditional-drop-impl.stderr vendor/pin-project-lite/.cargo-checksum.json /^{"files":{"CHANGELOG.md":"0da6eac8d8957a8aea735942d2e6e226b5cb178a363fe77b87c23272f2e63b1c","Car/;" s object:files +tests/ui/self-span.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/self-span.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/send-not-implemented.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/send-not-implemented.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/source-enum-not-error.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/source-enum-not-error.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/source-struct-not-error.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/source-struct-not-error.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/transparent-display.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/transparent-display.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/transparent-enum-many.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/transparent-enum-many.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/transparent-enum-source.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/transparent-enum-source.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/transparent-struct-many.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/transparent-struct-many.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/transparent-struct-source.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/transparent-struct-source.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/unexpected-field-fmt.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/unexpected-field-fmt.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/unexpected-struct-source.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/unexpected-struct-source.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/union.rs vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/union.stderr vendor/thiserror/.cargo-checksum.json /^{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICEN/;" s object:files +tests/ui/unreachable.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/unreachable.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/unsupported-self.rs vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/unsupported-self.stderr vendor/async-trait/.cargo-checksum.json /^{"files":{"Cargo.toml":"2a0b36ca9a6fbc3bcb04921988211ec8af462a221554582664e278df5bd32b18","LICEN/;" s object:files +tests/ui/wrong-type-span.rs vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/ui/wrong-type-span.stderr vendor/quote/.cargo-checksum.json /^{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICEN/;" s object:files +tests/windows.rs vendor/libloading/.cargo-checksum.json /^{"files":{"Cargo.toml":"e46195f62deca2f1fa63c19e754fb9eca0e0469d624e2ff5ac33f9d2bb0c67bf","LICEN/;" s object:files +tests/xcrate.rs vendor/cfg-if/.cargo-checksum.json /^{"files":{"Cargo.toml":"5b2a8f6e5256957c029cf3a8912d51438e7faa5891c5c102c312f6d4599c1f00","LICEN/;" s object:files +tests/zzz_stable.rs vendor/syn/.cargo-checksum.json /^{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICEN/;" s object:files +tests_disabled/all.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests_disabled/bilock.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +tests_disabled/stream.rs vendor/futures/.cargo-checksum.json /^{"files":{"Cargo.toml":"8ed57c49092b04187590372dcc6a6c47921977b63095787d558d56d0be7c1277","LICEN/;" s object:files +testsimples vendor/memchr/src/memmem/mod.rs /^mod testsimples {$/;" n +text lib/readline/readline.h /^ char *text; \/* The text to insert, if undoing a delete. *\/$/;" m struct:undo_list typeref:typename:char * +text r_readline/src/lib.rs /^ pub text: *mut ::std::os::raw::c_char,$/;" m struct:undo_list +text.o lib/readline/Makefile.in /^text.o: history.h rlstdc.h ansi_stdlib.h$/;" t +text.o lib/readline/Makefile.in /^text.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h$/;" t +text.o lib/readline/Makefile.in /^text.o: rldefs.h ${BUILD_DIR}\/config.h rlconf.h$/;" t +text.o lib/readline/Makefile.in /^text.o: rlmbutil.h$/;" t +text.o lib/readline/Makefile.in /^text.o: rlprivate.h$/;" t +text.o lib/readline/Makefile.in /^text.o: text.c$/;" t +text.o lib/readline/Makefile.in /^text.o: xmalloc.h$/;" t +textdomain include/gettext.h /^# define textdomain(/;" d +textdomain lib/intl/intl-compat.c /^textdomain (domainname)$/;" f +textdomain lib/intl/libgnuintl.h.in /^# define textdomain /;" d file: +textdomain lib/intl/libgnuintl.h.in /^static inline char *textdomain (const char *__domainname)$/;" f typeref:typename:char * file: +textdomain r_bash/src/lib.rs /^ pub fn textdomain(__domainname: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_cha/;" f +textdomain.$lo lib/intl/Makefile.in /^bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomai/;" t +textdomain.lo lib/intl/Makefile.in /^textdomain.lo: $(srcdir)\/textdomain.c$/;" t +textstor vendor/winapi/src/um/mod.rs /^#[cfg(feature = "textstor")] pub mod textstor;$/;" n +tfind lib/intl/dcigettext.c /^# define tfind /;" d file: +tgetent lib/termcap/termcap.c /^tgetent (bp, name)$/;" f +tgetent r_readline/src/lib.rs /^ pub fn tgetent($/;" f +tgetflag lib/termcap/termcap.c /^tgetflag (cap)$/;" f +tgetflag r_readline/src/lib.rs /^ pub fn tgetflag(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +tgetnum lib/termcap/termcap.c /^tgetnum (cap)$/;" f +tgetnum r_readline/src/lib.rs /^ pub fn tgetnum(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;$/;" f +tgetst1 lib/termcap/termcap.c /^tgetst1 (ptr, area)$/;" f file: +tgetstr lib/termcap/termcap.c /^tgetstr (cap, area)$/;" f +tgetstr r_readline/src/lib.rs /^ pub fn tgetstr($/;" f +tgoto lib/termcap/tparam.c /^tgoto (cm, hpos, vpos)$/;" f +tgoto r_readline/src/lib.rs /^ pub fn tgoto($/;" f +tgoto_buf lib/termcap/tparam.c /^static char tgoto_buf[50];$/;" v typeref:typename:char[50] file: +th_datestr support/man2html.c /^static char th_datestr[128] = { '\\0' };$/;" v typeref:typename:char[128] file: +th_page_and_sec support/man2html.c /^static char th_page_and_sec[128] = { '\\0' };$/;" v typeref:typename:char[128] file: +th_version support/man2html.c /^static char th_version[128] = { '\\0' };$/;" v typeref:typename:char[128] file: +the_current_maintainer error.c /^const char * const the_current_maintainer = MAINTAINER;$/;" v typeref:typename:const char * const +the_current_working_directory builtins/common.c /^char *the_current_working_directory = (char *)NULL;$/;" v typeref:typename:char * +the_current_working_directory builtins_rust/cd/src/lib.rs /^ static mut the_current_working_directory: *mut c_char;$/;" v +the_current_working_directory builtins_rust/common/src/lib.rs /^pub static mut the_current_working_directory: *mut c_char = std::ptr::null_mut();$/;" v +the_current_working_directory r_bash/src/lib.rs /^ pub static mut the_current_working_directory: *mut ::std::os::raw::c_char;$/;" v +the_history lib/readline/history.c /^static HIST_ENTRY **the_history = (HIST_ENTRY **)NULL;$/;" v typeref:typename:HIST_ENTRY ** file: +the_line lib/readline/readline.c /^static char *the_line;$/;" v typeref:typename:char * file: +the_pipeline jobs.c /^PROCESS *the_pipeline = (PROCESS *)NULL;$/;" v typeref:typename:PROCESS * +the_pipeline r_jobs/src/lib.rs /^pub static mut the_pipeline:*mut PROCESS = 0 as *const c_void as *mut c_void as *mut PROCESS;$/;" v +the_printed_command print_cmd.c /^char *the_printed_command = (char *)NULL;$/;" v typeref:typename:char * +the_printed_command r_print_cmd/src/lib.rs /^ static mut the_printed_command:*mut c_char;$/;" v +the_printed_command_except_trap execute_cmd.c /^char *the_printed_command_except_trap;$/;" v typeref:typename:char * +the_printed_command_except_trap r_bash/src/lib.rs /^ pub static mut the_printed_command_except_trap: *mut ::std::os::raw::c_char;$/;" v +the_printed_command_resize print_cmd.c /^the_printed_command_resize (length)$/;" f file: +the_printed_command_resize r_print_cmd/src/lib.rs /^unsafe extern "C" fn the_printed_command_resize(length:c_int)$/;" f +the_printed_command_size print_cmd.c /^int the_printed_command_size = 0;$/;" v typeref:typename:int +the_printed_command_size r_print_cmd/src/lib.rs /^ static mut the_printed_command_size:c_int;$/;" v +then vendor/futures-util/src/future/future/mod.rs /^ fn then(self, f: F) -> Then$/;" P interface:FutureExt +then vendor/futures-util/src/stream/stream/mod.rs /^ fn then(self, f: F) -> Then$/;" P interface:StreamExt +then vendor/futures-util/src/stream/stream/mod.rs /^mod then;$/;" n +then vendor/futures/tests_disabled/stream.rs /^fn then() {$/;" f +then_drops_eagerly vendor/futures/tests/eager_drop.rs /^fn then_drops_eagerly() {$/;" f +things vendor/elsa/examples/arena.rs /^ things: FrozenVec>>,$/;" m struct:Arena +this vendor/libloading/src/os/unix/mod.rs /^ pub fn this() -> Library {$/;" P implementation:Library +this vendor/libloading/src/os/windows/mod.rs /^ pub fn this() -> Result {$/;" P implementation:Library +this_address lib/malloc/alloca.c /^ long this_address; \/* Address of this block. *\/$/;" m struct:stk_trailer typeref:typename:long file: +this_command_name builtins_rust/builtin/src/intercdep.rs /^ static mut this_command_name: *mut libc::c_char;$/;" v +this_command_name builtins_rust/common/src/lib.rs /^ static this_command_name: *mut c_char;$/;" v +this_command_name builtins_rust/hash/src/lib.rs /^ static this_command_name: *mut c_char;$/;" v +this_command_name builtins_rust/help/src/lib.rs /^ static this_command_name: *mut libc::c_char;$/;" v +this_command_name builtins_rust/setattr/src/intercdep.rs /^ pub static mut this_command_name: *mut c_char;$/;" v +this_command_name builtins_rust/test/src/intercdep.rs /^ pub static mut this_command_name: *mut c_char;$/;" v +this_command_name execute_cmd.c /^char *this_command_name;$/;" v typeref:typename:char * +this_command_name r_bash/src/lib.rs /^ pub static mut this_command_name: *mut ::std::os::raw::c_char;$/;" v +this_command_name r_jobs/src/lib.rs /^ static mut this_command_name: *mut c_char;$/;" v +this_shell_builtin builtins/common.c /^sh_builtin_func_t *this_shell_builtin = (sh_builtin_func_t *)NULL;$/;" v typeref:typename:sh_builtin_func_t * +this_shell_builtin builtins_rust/builtin/src/intercdep.rs /^ static mut this_shell_builtin: Option::;$/;" v +this_shell_builtin builtins_rust/common/src/lib.rs /^pub static mut this_shell_builtin: *mut sh_builtin_func_t = std::ptr::null_mut();$/;" v +this_shell_builtin builtins_rust/exit/src/lib.rs /^ static mut this_shell_builtin: extern "C" fn(v: *mut WordList) -> i32;$/;" v +this_shell_builtin builtins_rust/setattr/src/intercdep.rs /^ pub static mut this_shell_builtin: sh_builtin_func_t;$/;" v +this_shell_builtin r_bash/src/lib.rs /^ pub static mut this_shell_builtin: sh_builtin_func_t;$/;" v +this_shell_builtin r_bash/src/lib.rs /^ pub this_shell_builtin: sh_builtin_func_t,$/;" m struct:_sh_parser_state_t +this_shell_builtin r_jobs/src/lib.rs /^ static mut this_shell_builtin:sh_builtin_func_t;$/;" v +this_shell_builtin shell.h /^ sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;$/;" m struct:_sh_parser_state_t typeref:typename:sh_builtin_func_t * +this_shell_function execute_cmd.c /^SHELL_VAR *this_shell_function;$/;" v typeref:typename:SHELL_VAR * +this_shell_function r_bash/src/lib.rs /^ pub static mut this_shell_function: *mut SHELL_VAR;$/;" v +this_size lib/malloc/alloca.c /^ long this_size; \/* Size of this block (does not include$/;" m struct:stk_trailer typeref:typename:long file: +thiserror_provide vendor/thiserror/src/provide.rs /^ fn thiserror_provide<'a>(&'a self, demand: &mut Demand<'a>) {$/;" P implementation:T +thiserror_provide vendor/thiserror/src/provide.rs /^ fn thiserror_provide<'a>(&'a self, demand: &mut Demand<'a>);$/;" P interface:ThiserrorProvide +thousands_sep r_bash/src/lib.rs /^ pub thousands_sep: *mut ::std::os::raw::c_char,$/;" m struct:lconv +thoussep lib/sh/snprintf.c /^static int thoussep;$/;" v typeref:typename:int file: +thr_kill vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn thr_kill(id: ::c_long, sig: ::c_int) -> ::c_int;$/;" f +thr_kill2 vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn thr_kill2(pid: ::pid_t, id: ::c_long, sig: ::c_int) -> ::c_int;$/;" f +thr_self vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn thr_self(tid: *mut ::c_long) -> ::c_int;$/;" f +thr_self vendor/libc/src/unix/solarish/mod.rs /^ pub fn thr_self() -> ::thread_t;$/;" f +thread vendor/futures-executor/src/local_pool.rs /^ thread: Thread,$/;" m struct:ThreadNotify +thread vendor/once_cell/src/imp_std.rs /^ thread: Cell>,$/;" m struct:Waiter +thread vendor/syn/src/lib.rs /^mod thread;$/;" n +thread vendor/thiserror/tests/ui/no-display.rs /^ thread: NoDisplay,$/;" m struct:Error +thread_act_array_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_act_array_t = *mut ::thread_act_t;$/;" t +thread_act_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_act_t = ::mach_port_t;$/;" t +thread_affinity_policy_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_affinity_policy_data_t = thread_affinity_policy;$/;" t +thread_affinity_policy_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_affinity_policy_t = *mut thread_affinity_policy;$/;" t +thread_background_policy_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_background_policy_data_t = thread_background_policy;$/;" t +thread_background_policy_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_background_policy_t = *mut thread_background_policy;$/;" t +thread_basic_info_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_basic_info_data_t = thread_basic_info;$/;" t +thread_basic_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_basic_info_t = *mut thread_basic_info;$/;" t +thread_extended_info_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_extended_info_data_t = thread_extended_info;$/;" t +thread_extended_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_extended_info_t = *mut thread_extended_info;$/;" t +thread_extended_policy_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_extended_policy_data_t = thread_extended_policy;$/;" t +thread_extended_policy_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_extended_policy_t = *mut thread_extended_policy;$/;" t +thread_flavor_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_flavor_t = natural_t;$/;" t +thread_func vendor/libc/src/unix/haiku/native.rs /^pub type thread_func = extern "C" fn(*mut ::c_void) -> status_t;$/;" t +thread_id vendor/libc/src/unix/haiku/native.rs /^pub type thread_id = i32;$/;" t +thread_id vendor/syn/src/thread.rs /^ thread_id: ThreadId,$/;" m struct:ThreadBound +thread_identifier_info_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_identifier_info_data_t = thread_identifier_info;$/;" t +thread_identifier_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_identifier_info_t = *mut thread_identifier_info;$/;" t +thread_info vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn thread_info($/;" f +thread_info_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_info_t = *mut integer_t;$/;" t +thread_inspect_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_inspect_t = ::mach_port_t;$/;" t +thread_latency_qos_policy_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_latency_qos_policy_data_t = thread_latency_qos_policy;$/;" t +thread_latency_qos_policy_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_latency_qos_policy_t = *mut thread_latency_qos_policy;$/;" t +thread_latency_qos_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_latency_qos_t = integer_t;$/;" t +thread_lazy_static vendor/once_cell/examples/bench_vs_lazy_static.rs /^fn thread_lazy_static() {$/;" f +thread_main vendor/once_cell/examples/bench.rs /^fn thread_main(i: usize) {$/;" f +thread_main vendor/once_cell/examples/bench_acquire.rs /^fn thread_main(i: usize) {$/;" f +thread_main vendor/once_cell/examples/test_synchronization.rs /^fn thread_main(i: usize) {$/;" f +thread_once_cell vendor/once_cell/examples/bench_vs_lazy_static.rs /^fn thread_once_cell() {$/;" f +thread_policy_flavor_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_policy_flavor_t = natural_t;$/;" t +thread_policy_get vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn thread_policy_get($/;" f +thread_policy_set vendor/libc/src/unix/bsd/apple/mod.rs /^ pub fn thread_policy_set($/;" f +thread_policy_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_policy_t = *mut integer_t;$/;" t +thread_pool vendor/futures-executor/src/lib.rs /^mod thread_pool;$/;" n +thread_precedence_policy_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_precedence_policy_data_t = thread_precedence_policy;$/;" t +thread_precedence_policy_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_precedence_policy_t = *mut thread_precedence_policy;$/;" t +thread_standard_policy_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_standard_policy_data_t = thread_standard_policy;$/;" t +thread_standard_policy_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_standard_policy_t = *mut thread_standard_policy;$/;" t +thread_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_t = ::mach_port_t;$/;" t +thread_t vendor/libc/src/unix/solarish/mod.rs /^pub type thread_t = ::c_uint;$/;" t +thread_throughput_qos_policy_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_throughput_qos_policy_data_t = thread_throughput_qos_policy;$/;" t +thread_throughput_qos_policy_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_throughput_qos_policy_t = *mut thread_throughput_qos_policy;$/;" t +thread_throughput_qos_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_throughput_qos_t = integer_t;$/;" t +thread_time_constraint_policy_data_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_time_constraint_policy_data_t = thread_time_constraint_policy;$/;" t +thread_time_constraint_policy_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type thread_time_constraint_policy_t = *mut thread_time_constraint_policy;$/;" t +thread_yield_multi_thread vendor/futures-executor/benches/thread_notify.rs /^fn thread_yield_multi_thread(b: &mut Bencher) {$/;" f +thread_yield_single_thread_many_wait vendor/futures-executor/benches/thread_notify.rs /^fn thread_yield_single_thread_many_wait(b: &mut Bencher) {$/;" f +thread_yield_single_thread_one_wait vendor/futures-executor/benches/thread_notify.rs /^fn thread_yield_single_thread_one_wait(b: &mut Bencher) {$/;" f +threadpoolapiset vendor/winapi/src/um/mod.rs /^#[cfg(feature = "threadpoolapiset")] pub mod threadpoolapiset;$/;" n +threadpoollegacyapiset vendor/winapi/src/um/mod.rs /^#[cfg(feature = "threadpoollegacyapiset")] pub mod threadpoollegacyapiset;$/;" n +three vendor/memchr/src/tests/memchr/testdata.rs /^ pub fn three Option>($/;" P implementation:MemchrTest +three_arguments test.c /^three_arguments ()$/;" f typeref:typename:int file: +throw_to_top_level builtins_rust/common/src/lib.rs /^ fn throw_to_top_level();$/;" f +throw_to_top_level builtins_rust/echo/src/lib.rs /^ fn throw_to_top_level();$/;" f +throw_to_top_level builtins_rust/fc/src/lib.rs /^ fn throw_to_top_level();$/;" f +throw_to_top_level builtins_rust/help/src/lib.rs /^ fn throw_to_top_level();$/;" f +throw_to_top_level builtins_rust/history/src/intercdep.rs /^ pub fn throw_to_top_level() -> c_void;$/;" f +throw_to_top_level builtins_rust/printf/src/intercdep.rs /^ pub fn throw_to_top_level() -> c_void;$/;" f +throw_to_top_level builtins_rust/read/src/intercdep.rs /^ pub fn throw_to_top_level() -> c_void;$/;" f +throw_to_top_level r_bash/src/lib.rs /^ pub fn throw_to_top_level();$/;" f +throw_to_top_level sig.c /^throw_to_top_level ()$/;" f typeref:typename:void +tiaa vendor/tinystr/benches/tinystr.rs /^ macro_rules! tiaa {$/;" M function:test_is_ascii_alphanumeric +tick r_bash/src/lib.rs /^ pub tick: __syscall_slong_t,$/;" m struct:timex +tick r_readline/src/lib.rs /^ pub tick: __syscall_slong_t,$/;" m struct:timex +tick vendor/syn/tests/repo/progress.rs /^ tick: Instant,$/;" m struct:Progress +tilde.o lib/readline/Makefile.in /^tilde.o: tilde.c$/;" t +tilde.o lib/readline/Makefile.in /^tilde.o: ${BUILD_DIR}\/config.h$/;" t +tilde.o lib/readline/Makefile.in /^tilde.o: ansi_stdlib.h$/;" t +tilde.o lib/readline/Makefile.in /^tilde.o: tilde.c$/;" t +tilde.o lib/readline/Makefile.in /^tilde.o: tilde.h$/;" t +tilde.o lib/readline/Makefile.in /^tilde.o: xmalloc.h $/;" t +tilde.o lib/tilde/Makefile.in /^tilde.o: $(BUILD_DIR)\/config.h$/;" t +tilde.o lib/tilde/Makefile.in /^tilde.o: tilde.c$/;" t +tilde.o lib/tilde/Makefile.in /^tilde.o: tilde.h $(BASHINCDIR)\/ansi_stdlib.h$/;" t +tilde_additional_prefixes lib/readline/tilde.c /^char **tilde_additional_prefixes = (char **)default_prefixes;$/;" v typeref:typename:char ** +tilde_additional_prefixes lib/tilde/tilde.c /^char **tilde_additional_prefixes = (char **)default_prefixes;$/;" v typeref:typename:char ** +tilde_additional_prefixes r_bash/src/lib.rs /^ pub static mut tilde_additional_prefixes: *mut *mut ::std::os::raw::c_char;$/;" v +tilde_additional_prefixes r_readline/src/lib.rs /^ pub static mut tilde_additional_prefixes: *mut *mut ::std::os::raw::c_char;$/;" v +tilde_additional_suffixes lib/readline/tilde.c /^char **tilde_additional_suffixes = (char **)default_suffixes;$/;" v typeref:typename:char ** +tilde_additional_suffixes lib/tilde/tilde.c /^char **tilde_additional_suffixes = (char **)default_suffixes;$/;" v typeref:typename:char ** +tilde_additional_suffixes r_bash/src/lib.rs /^ pub static mut tilde_additional_suffixes: *mut *mut ::std::os::raw::c_char;$/;" v +tilde_additional_suffixes r_readline/src/lib.rs /^ pub static mut tilde_additional_suffixes: *mut *mut ::std::os::raw::c_char;$/;" v +tilde_expand lib/readline/tilde.c /^tilde_expand (const char *string)$/;" f typeref:typename:char * +tilde_expand lib/tilde/tilde.c /^tilde_expand (const char *string)$/;" f typeref:typename:char * +tilde_expand r_bash/src/lib.rs /^ pub fn tilde_expand(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +tilde_expand r_readline/src/lib.rs /^ pub fn tilde_expand(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +tilde_expand_word lib/readline/tilde.c /^tilde_expand_word (const char *filename)$/;" f typeref:typename:char * +tilde_expand_word lib/tilde/tilde.c /^tilde_expand_word (const char *filename)$/;" f typeref:typename:char * +tilde_expand_word r_bash/src/lib.rs /^ pub fn tilde_expand_word(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char/;" f +tilde_expand_word r_readline/src/lib.rs /^ pub fn tilde_expand_word(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char/;" f +tilde_expansion_failure_hook lib/readline/tilde.c /^tilde_hook_func_t *tilde_expansion_failure_hook = (tilde_hook_func_t *)NULL;$/;" v typeref:typename:tilde_hook_func_t * +tilde_expansion_failure_hook lib/tilde/tilde.c /^tilde_hook_func_t *tilde_expansion_failure_hook = (tilde_hook_func_t *)NULL;$/;" v typeref:typename:tilde_hook_func_t * +tilde_expansion_failure_hook r_bash/src/lib.rs /^ pub static mut tilde_expansion_failure_hook: tilde_hook_func_t;$/;" v +tilde_expansion_failure_hook r_readline/src/lib.rs /^ pub static mut tilde_expansion_failure_hook: tilde_hook_func_t;$/;" v +tilde_expansion_preexpansion_hook lib/readline/tilde.c /^tilde_hook_func_t *tilde_expansion_preexpansion_hook = (tilde_hook_func_t *)NULL;$/;" v typeref:typename:tilde_hook_func_t * +tilde_expansion_preexpansion_hook lib/tilde/tilde.c /^tilde_hook_func_t *tilde_expansion_preexpansion_hook = (tilde_hook_func_t *)NULL;$/;" v typeref:typename:tilde_hook_func_t * +tilde_expansion_preexpansion_hook r_bash/src/lib.rs /^ pub static mut tilde_expansion_preexpansion_hook: tilde_hook_func_t;$/;" v +tilde_expansion_preexpansion_hook r_readline/src/lib.rs /^ pub static mut tilde_expansion_preexpansion_hook: tilde_hook_func_t;$/;" v +tilde_find_prefix lib/readline/tilde.c /^tilde_find_prefix (const char *string, int *len)$/;" f typeref:typename:int file: +tilde_find_prefix lib/tilde/tilde.c /^tilde_find_prefix (const char *string, int *len)$/;" f typeref:typename:int file: +tilde_find_suffix lib/readline/tilde.c /^tilde_find_suffix (const char *string)$/;" f typeref:typename:int file: +tilde_find_suffix lib/tilde/tilde.c /^tilde_find_suffix (const char *string)$/;" f typeref:typename:int file: +tilde_find_word r_bash/src/lib.rs /^ pub fn tilde_find_word($/;" f +tilde_find_word r_readline/src/lib.rs /^ pub fn tilde_find_word($/;" f +tilde_hook_func_t r_bash/src/lib.rs /^pub type tilde_hook_func_t = ::core::option::Option<$/;" t +tilde_hook_func_t r_readline/src/lib.rs /^pub type tilde_hook_func_t = ::core::option::Option<$/;" t +tilde_initialize general.c /^tilde_initialize ()$/;" f typeref:typename:void +tilde_initialize r_bash/src/lib.rs /^ pub fn tilde_initialize();$/;" f +tilde_initialize r_glob/src/lib.rs /^ pub fn tilde_initialize();$/;" f +tilde_initialize r_readline/src/lib.rs /^ pub fn tilde_initialize();$/;" f +time r_bash/src/lib.rs /^ pub fn time(__timer: *mut time_t) -> time_t;$/;" f +time r_bash/src/lib.rs /^ pub time: timeval,$/;" m struct:timex +time r_readline/src/lib.rs /^ pub fn time(__timer: *mut time_t) -> time_t;$/;" f +time r_readline/src/lib.rs /^ pub time: timeval,$/;" m struct:timex +time vendor/libc/src/fuchsia/mod.rs /^ pub fn time(time: *mut time_t) -> time_t;$/;" f +time vendor/libc/src/solid/mod.rs /^ pub fn time(arg1: *mut time_t) -> time_t;$/;" f +time vendor/libc/src/unix/mod.rs /^ pub fn time(time: *mut time_t) -> time_t;$/;" f +time vendor/libc/src/vxworks/mod.rs /^ pub fn time(time: *mut time_t) -> time_t;$/;" f +time vendor/libc/src/wasi.rs /^ pub fn time(a: *mut time_t) -> time_t;$/;" f +time vendor/libc/src/windows/mod.rs /^ pub fn time(destTime: *mut time_t) -> time_t;$/;" f +time vendor/nix/src/sys/mod.rs /^pub mod time;$/;" n +time64_t vendor/libc/src/unix/linux_like/android/b32/mod.rs /^pub type time64_t = i64;$/;" t +time64_t vendor/libc/src/windows/mod.rs /^pub type time64_t = i64;$/;" t +timeBeginPeriod vendor/winapi/src/um/timeapi.rs /^ pub fn timeBeginPeriod($/;" f +timeEndPeriod vendor/winapi/src/um/timeapi.rs /^ pub fn timeEndPeriod($/;" f +timeGetDevCaps vendor/winapi/src/um/timeapi.rs /^ pub fn timeGetDevCaps($/;" f +timeGetTime vendor/winapi/src/um/timeapi.rs /^ pub fn timeGetTime() -> DWORD;$/;" f +time_command execute_cmd.c /^time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close)$/;" f file: +time_t r_bash/src/lib.rs /^pub type time_t = __time_t;$/;" t +time_t r_glob/src/lib.rs /^pub type time_t = __time_t;$/;" t +time_t r_readline/src/lib.rs /^pub type time_t = __time_t;$/;" t +time_t vendor/libc/src/fuchsia/mod.rs /^pub type time_t = c_long;$/;" t +time_t vendor/libc/src/solid/mod.rs /^pub type time_t = i64;$/;" t +time_t vendor/libc/src/unix/bsd/apple/mod.rs /^pub type time_t = c_long;$/;" t +time_t vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs /^pub type time_t = i64;$/;" t +time_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/aarch64.rs /^pub type time_t = i64;$/;" t +time_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/arm.rs /^pub type time_t = i64;$/;" t +time_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc.rs /^pub type time_t = i64;$/;" t +time_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs /^pub type time_t = i64;$/;" t +time_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/riscv64.rs /^pub type time_t = i64;$/;" t +time_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86.rs /^pub type time_t = i32;$/;" t +time_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs /^pub type time_t = i64;$/;" t +time_t vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub type time_t = i64;$/;" t +time_t vendor/libc/src/unix/haiku/b32.rs /^pub type time_t = i32;$/;" t +time_t vendor/libc/src/unix/haiku/b64.rs /^pub type time_t = i64;$/;" t +time_t vendor/libc/src/unix/hermit/mod.rs /^pub type time_t = c_long;$/;" t +time_t vendor/libc/src/unix/linux_like/android/mod.rs /^pub type time_t = ::c_long;$/;" t +time_t vendor/libc/src/unix/linux_like/emscripten/mod.rs /^pub type time_t = c_long;$/;" t +time_t vendor/libc/src/unix/linux_like/linux/musl/mod.rs /^pub type time_t = c_long;$/;" t +time_t vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs /^pub type time_t = ::c_long;$/;" t +time_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs /^pub type time_t = i32;$/;" t +time_t vendor/libc/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs /^pub type time_t = i64;$/;" t +time_t vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs /^pub type time_t = ::c_int;$/;" t +time_t vendor/libc/src/unix/redox/mod.rs /^pub type time_t = ::c_long;$/;" t +time_t vendor/libc/src/unix/solarish/mod.rs /^pub type time_t = ::c_long;$/;" t +time_t vendor/libc/src/vxworks/mod.rs /^pub type time_t = ::c_long;$/;" t +time_t vendor/libc/src/wasi.rs /^pub type time_t = c_longlong;$/;" t +time_t vendor/winapi/src/ucrt/corecrt.rs /^pub type time_t = __time64_t;$/;" t +time_to_check_mail mailcheck.c /^time_to_check_mail ()$/;" f typeref:typename:int +time_to_check_mail r_bash/src/lib.rs /^ pub fn time_to_check_mail() -> ::std::os::raw::c_int;$/;" f +timeapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "timeapi")] pub mod timeapi;$/;" n +timegm r_bash/src/lib.rs /^ pub fn timegm(__tp: *mut tm) -> time_t;$/;" f +timegm r_readline/src/lib.rs /^ pub fn timegm(__tp: *mut tm) -> time_t;$/;" f +timegm vendor/libc/src/fuchsia/mod.rs /^ pub fn timegm(tm: *mut ::tm) -> time_t;$/;" f +timegm vendor/libc/src/unix/mod.rs /^ pub fn timegm(tm: *mut ::tm) -> time_t;$/;" f +timegm vendor/libc/src/vxworks/mod.rs /^ pub fn timegm(tm: *mut tm) -> time_t;$/;" f +timegm vendor/libc/src/wasi.rs /^ pub fn timegm(tm: *mut ::tm) -> time_t;$/;" f +timegm64 vendor/libc/src/unix/linux_like/android/b32/mod.rs /^ pub fn timegm64(tm: *const ::tm) -> ::time64_t;$/;" f +timelocal r_bash/src/lib.rs /^ pub fn timelocal(__tp: *mut tm) -> time_t;$/;" f +timelocal r_readline/src/lib.rs /^ pub fn timelocal(__tp: *mut tm) -> time_t;$/;" f +timer vendor/nix/src/sys/time.rs /^pub(crate) mod timer {$/;" n +timer_create r_bash/src/lib.rs /^ pub fn timer_create($/;" f +timer_create r_readline/src/lib.rs /^ pub fn timer_create($/;" f +timer_create vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn timer_create(clock_id: clockid_t, evp: *mut sigevent, timerid: *mut timer_t) -> ::c_i/;" f +timer_create vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn timer_create($/;" f +timer_create vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn timer_create($/;" f +timer_create vendor/libc/src/unix/solarish/mod.rs /^ pub fn timer_create(clock_id: clockid_t, evp: *mut sigevent, timerid: *mut timer_t) -> ::c_i/;" f +timer_delete r_bash/src/lib.rs /^ pub fn timer_delete(__timerid: timer_t) -> ::std::os::raw::c_int;$/;" f +timer_delete r_readline/src/lib.rs /^ pub fn timer_delete(__timerid: timer_t) -> ::std::os::raw::c_int;$/;" f +timer_delete vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn timer_delete(timerid: timer_t) -> ::c_int;$/;" f +timer_delete vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn timer_delete(timerid: ::timer_t) -> ::c_int;$/;" f +timer_delete vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn timer_delete(timerid: ::timer_t) -> ::c_int;$/;" f +timer_delete vendor/libc/src/unix/solarish/mod.rs /^ pub fn timer_delete(timerid: timer_t) -> ::c_int;$/;" f +timer_getoverrun r_bash/src/lib.rs /^ pub fn timer_getoverrun(__timerid: timer_t) -> ::std::os::raw::c_int;$/;" f +timer_getoverrun r_readline/src/lib.rs /^ pub fn timer_getoverrun(__timerid: timer_t) -> ::std::os::raw::c_int;$/;" f +timer_getoverrun vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn timer_getoverrun(timerid: timer_t) -> ::c_int;$/;" f +timer_getoverrun vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn timer_getoverrun(timerid: ::timer_t) -> ::c_int;$/;" f +timer_getoverrun vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn timer_getoverrun(timerid: ::timer_t) -> ::c_int;$/;" f +timer_getoverrun vendor/libc/src/unix/solarish/mod.rs /^ pub fn timer_getoverrun(timerid: timer_t) -> ::c_int;$/;" f +timer_gettime r_bash/src/lib.rs /^ pub fn timer_gettime(__timerid: timer_t, __value: *mut itimerspec) -> ::std::os::raw::c_int;$/;" f +timer_gettime r_readline/src/lib.rs /^ pub fn timer_gettime(__timerid: timer_t, __value: *mut itimerspec) -> ::std::os::raw::c_int;$/;" f +timer_gettime vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn timer_gettime(timerid: timer_t, value: *mut itimerspec) -> ::c_int;$/;" f +timer_gettime vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn timer_gettime(timerid: ::timer_t, curr_value: *mut ::itimerspec) -> ::c_int;$/;" f +timer_gettime vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn timer_gettime(timerid: ::timer_t, curr_value: *mut ::itimerspec) -> ::c_int;$/;" f +timer_gettime vendor/libc/src/unix/solarish/mod.rs /^ pub fn timer_gettime(timerid: timer_t, value: *mut itimerspec) -> ::c_int;$/;" f +timer_settime r_bash/src/lib.rs /^ pub fn timer_settime($/;" f +timer_settime r_readline/src/lib.rs /^ pub fn timer_settime($/;" f +timer_settime vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^ pub fn timer_settime($/;" f +timer_settime vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^ pub fn timer_settime($/;" f +timer_settime vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn timer_settime($/;" f +timer_settime vendor/libc/src/unix/solarish/mod.rs /^ pub fn timer_settime($/;" f +timer_t r_bash/src/lib.rs /^pub type timer_t = __timer_t;$/;" t +timer_t r_glob/src/lib.rs /^pub type timer_t = __timer_t;$/;" t +timer_t r_readline/src/lib.rs /^pub type timer_t = __timer_t;$/;" t +timer_t vendor/libc/src/solid/mod.rs /^pub type timer_t = c_int;$/;" t +timer_t vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs /^pub type timer_t = *mut __c_anonymous__timer;$/;" t +timer_t vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs /^pub type timer_t = ::c_int;$/;" t +timer_t vendor/libc/src/unix/linux_like/mod.rs /^pub type timer_t = *mut ::c_void;$/;" t +timer_t vendor/libc/src/unix/solarish/mod.rs /^pub type timer_t = ::c_int;$/;" t +timerfd_create vendor/libc/src/fuchsia/mod.rs /^ pub fn timerfd_create(clockid: ::c_int, flags: ::c_int) -> ::c_int;$/;" f +timerfd_create vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn timerfd_create(clock: ::clockid_t, flags: ::c_int) -> ::c_int;$/;" f +timerfd_create vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn timerfd_create(clockid: ::clockid_t, flags: ::c_int) -> ::c_int;$/;" f +timerfd_gettime vendor/libc/src/fuchsia/mod.rs /^ pub fn timerfd_gettime(fd: ::c_int, curr_value: *mut itimerspec) -> ::c_int;$/;" f +timerfd_gettime vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn timerfd_gettime(fd: ::c_int, current_value: *mut itimerspec) -> ::c_int;$/;" f +timerfd_gettime vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn timerfd_gettime(fd: ::c_int, curr_value: *mut itimerspec) -> ::c_int;$/;" f +timerfd_settime vendor/libc/src/fuchsia/mod.rs /^ pub fn timerfd_settime($/;" f +timerfd_settime vendor/libc/src/unix/linux_like/android/mod.rs /^ pub fn timerfd_settime($/;" f +timerfd_settime vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn timerfd_settime($/;" f +times lib/sh/times.c /^times(tms)$/;" f +times r_bash/src/lib.rs /^ pub fn times(__buffer: *mut tms) -> clock_t;$/;" f +times vendor/libc/src/fuchsia/mod.rs /^ pub fn times(buf: *mut ::tms) -> ::clock_t;$/;" f +times vendor/libc/src/unix/mod.rs /^ pub fn times(buf: *mut ::tms) -> ::clock_t;$/;" f +times vendor/libc/src/wasi.rs /^ pub fn times(buf: *mut ::tms) -> ::clock_t;$/;" f +times.o builtins/Makefile.in /^times.o: $(BASHINCDIR)\/posixtime.h ..\/pathnames.h$/;" t +times.o builtins/Makefile.in /^times.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +times.o builtins/Makefile.in /^times.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +times.o builtins/Makefile.in /^times.o: $(topdir)\/quit.h $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/sig.h$/;" t +times.o builtins/Makefile.in /^times.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h /;" t +times.o builtins/Makefile.in /^times.o: $(topdir)\/subst.h $(topdir)\/externs.h $(BASHINCDIR)\/maxpath.h$/;" t +times.o builtins/Makefile.in /^times.o: times.def$/;" t +times.o lib/sh/Makefile.in /^times.o: ${BASHINCDIR}\/posixtime.h$/;" t +times.o lib/sh/Makefile.in /^times.o: ${BASHINCDIR}\/systimes.h$/;" t +times.o lib/sh/Makefile.in /^times.o: ${BUILD_DIR}\/config.h$/;" t +times.o lib/sh/Makefile.in /^times.o: times.c$/;" t +times_found builtins_rust/alias/src/lib.rs /^ pub times_found: libc::c_int,$/;" m struct:bucket_contents +times_found builtins_rust/complete/src/lib.rs /^ times_found: i32, \/* Number of times this item has been found. *\/$/;" m struct:BUCKET_CONTENTS +times_found builtins_rust/declare/src/lib.rs /^ times_found: i32, \/* Number of times this item has been found. *\/$/;" m struct:BUCKET_CONTENTS +times_found builtins_rust/hash/src/lib.rs /^ pub times_found: i32,$/;" m struct:bucket_contents +times_found builtins_rust/setattr/src/intercdep.rs /^ times_found:i32 \/* Number of times this item has been found. *\/$/;" m struct:BUCKET_CONTENTS +times_found hashlib.h /^ int times_found; \/* Number of times this item has been found. *\/$/;" m struct:bucket_contents typeref:typename:int +times_found r_bash/src/lib.rs /^ pub times_found: ::std::os::raw::c_int,$/;" m struct:bucket_contents +times_found r_jobs/src/lib.rs /^ pub times_found: c_int,$/;" m struct:bucket_contents +times_polled vendor/futures/tests/stream.rs /^ times_polled: Rc>,$/;" m struct:SlowStream +times_should_poll vendor/futures/tests/stream.rs /^ times_should_poll: usize,$/;" m struct:SlowStream +times_two vendor/lazy_static/tests/no_std.rs /^fn times_two(n: u32) -> u32 {$/;" f +times_two vendor/lazy_static/tests/test.rs /^fn times_two(n: u32) -> u32 {$/;" f +timespec builtins_rust/wait/src/signal.rs /^pub struct timespec {$/;" s +timespec include/stat-time.h /^struct timespec$/;" s +timespec parse.y /^timespec: TIME$/;" l +timespec r_bash/src/lib.rs /^pub struct timespec {$/;" s +timespec r_glob/src/lib.rs /^pub struct timespec {$/;" s +timespec r_readline/src/lib.rs /^pub struct timespec {$/;" s +timespec_cmp include/stat-time.h /^timespec_cmp (struct timespec a, struct timespec b)$/;" f typeref:typename:int +timespec_get r_bash/src/lib.rs /^ pub fn timespec_get($/;" f +timespec_get r_readline/src/lib.rs /^ pub fn timespec_get($/;" f +timespec_tv_nsec_t vendor/nix/src/sys/time.rs /^type timespec_tv_nsec_t = i64;$/;" t +timespec_tv_nsec_t vendor/nix/src/sys/time.rs /^type timespec_tv_nsec_t = libc::c_long;$/;" t +timestamp builtins_rust/fc/src/lib.rs /^ timestamp: *mut c_char,$/;" m struct:HIST_ENTRY +timestamp builtins_rust/history/src/intercdep.rs /^ pub timestamp: *mut c_char,$/;" m struct:_hist_entry +timestamp builtins_rust/rlet/src/intercdep.rs /^ pub timestamp: *mut c_char,$/;" m struct:_hist_entry +timestamp lib/readline/history.h /^ char *timestamp; \/* char * rather than time_t for read\/write *\/$/;" m struct:_hist_entry typeref:typename:char * +timestamp r_bashhist/src/lib.rs /^ pub timestamp: *mut c_char,$/;" m struct:_hist_entry +timestamp r_readline/src/lib.rs /^ pub timestamp: *mut ::std::os::raw::c_char,$/;" m struct:_hist_entry +timestr builtins_rust/history/src/lib.rs /^ static mut timestr: [c_char; 128] = [0; 128];$/;" v function:histtime +timeval include/posixtime.h /^struct timeval$/;" s +timeval r_bash/src/lib.rs /^pub struct timeval {$/;" s +timeval r_glob/src/lib.rs /^pub struct timeval {$/;" s +timeval r_readline/src/lib.rs /^pub struct timeval {$/;" s +timeval.o lib/sh/Makefile.in /^timeval.o: ${BASHINCDIR}\/posixtime.h$/;" t +timeval.o lib/sh/Makefile.in /^timeval.o: ${BUILD_DIR}\/config.h$/;" t +timeval.o lib/sh/Makefile.in /^timeval.o: timeval.c$/;" t +timeval_to_cpu lib/sh/timeval.c /^timeval_to_cpu (rt, ut, st)$/;" f +timeval_to_secs lib/sh/timeval.c /^timeval_to_secs (tvp, sp, sfp)$/;" f +timeval_to_secs r_bash/src/lib.rs /^ pub fn timeval_to_secs();$/;" f +timex r_bash/src/lib.rs /^pub struct timex {$/;" s +timex r_readline/src/lib.rs /^pub struct timex {$/;" s +timezone r_bash/src/lib.rs /^ pub static mut timezone: ::std::os::raw::c_long;$/;" v +timezone r_bash/src/lib.rs /^pub struct timezone {$/;" s +timezone r_glob/src/lib.rs /^pub struct timezone {$/;" s +timezone r_readline/src/lib.rs /^ pub static mut timezone: ::std::os::raw::c_long;$/;" v +timezone r_readline/src/lib.rs /^pub struct timezone {$/;" s +timezone vendor/libc/src/fuchsia/mod.rs /^impl ::Clone for timezone {$/;" c +timezone vendor/libc/src/fuchsia/mod.rs /^impl ::Copy for timezone {}$/;" c +timezone vendor/libc/src/fuchsia/mod.rs /^pub enum timezone {}$/;" g +timezone vendor/libc/src/unix/bsd/apple/mod.rs /^impl ::Clone for timezone {$/;" c +timezone vendor/libc/src/unix/bsd/apple/mod.rs /^impl ::Copy for timezone {}$/;" c +timezone vendor/libc/src/unix/bsd/apple/mod.rs /^pub enum timezone {}$/;" g +timezone vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^impl ::Clone for timezone {$/;" c +timezone vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^impl ::Copy for timezone {}$/;" c +timezone vendor/libc/src/unix/bsd/freebsdlike/mod.rs /^pub enum timezone {}$/;" g +timezone vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^impl ::Clone for timezone {$/;" c +timezone vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^impl ::Copy for timezone {}$/;" c +timezone vendor/libc/src/unix/bsd/netbsdlike/mod.rs /^pub enum timezone {}$/;" g +timezone vendor/libc/src/unix/haiku/mod.rs /^impl ::Clone for timezone {$/;" c +timezone vendor/libc/src/unix/haiku/mod.rs /^impl ::Copy for timezone {}$/;" c +timezone vendor/libc/src/unix/haiku/mod.rs /^pub enum timezone {}$/;" g +timezone vendor/libc/src/unix/linux_like/mod.rs /^impl ::Clone for timezone {$/;" c +timezone vendor/libc/src/unix/linux_like/mod.rs /^impl ::Copy for timezone {}$/;" c +timezone vendor/libc/src/unix/linux_like/mod.rs /^pub enum timezone {}$/;" g +timezone vendor/libc/src/unix/redox/mod.rs /^impl ::Clone for timezone {$/;" c +timezone vendor/libc/src/unix/redox/mod.rs /^impl ::Copy for timezone {}$/;" c +timezone vendor/libc/src/unix/redox/mod.rs /^pub enum timezone {}$/;" g +timezone vendor/libc/src/unix/solarish/mod.rs /^impl ::Clone for timezone {$/;" c +timezone vendor/libc/src/unix/solarish/mod.rs /^impl ::Copy for timezone {}$/;" c +timezone vendor/libc/src/unix/solarish/mod.rs /^pub enum timezone {}$/;" g +timezone vendor/libc/src/windows/mod.rs /^impl ::Clone for timezone {$/;" c +timezone vendor/libc/src/windows/mod.rs /^impl ::Copy for timezone {}$/;" c +timezone vendor/libc/src/windows/mod.rs /^pub enum timezone {}$/;" g +timezoneapi vendor/winapi/src/um/mod.rs /^#[cfg(feature = "timezoneapi")] pub mod timezoneapi;$/;" n +timingsafe_bcmp vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^ pub fn timingsafe_bcmp(a: *const ::c_void, b: *const ::c_void, len: ::size_t) -> ::c_int;$/;" f +timingsafe_bcmp vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn timingsafe_bcmp(a: *const ::c_void, b: *const ::c_void, len: ::size_t) -> ::c_int;$/;" f +timingsafe_bcmp vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn timingsafe_bcmp(a: *const ::c_void, b: *const ::c_void, len: ::size_t) -> ::c_int;$/;" f +timingsafe_memcmp vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs /^ pub fn timingsafe_memcmp(a: *const ::c_void, b: *const ::c_void, len: ::size_t) -> ::c_int;$/;" f +timingsafe_memcmp vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs /^ pub fn timingsafe_memcmp(a: *const ::c_void, b: *const ::c_void, len: ::size_t) -> ::c_int;$/;" f +timingsafe_memcmp vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs /^ pub fn timingsafe_memcmp(a: *const ::c_void, b: *const ::c_void, len: ::size_t) -> ::c_int;$/;" f +tiny16_alpha vendor/tinystr/tests/main.rs /^fn tiny16_alpha() {$/;" f +tiny16_debug vendor/tinystr/tests/main.rs /^fn tiny16_debug() {$/;" f +tiny16_display vendor/tinystr/tests/main.rs /^fn tiny16_display() {$/;" f +tiny16_eq vendor/tinystr/tests/main.rs /^fn tiny16_eq() {$/;" f +tiny16_from_bytes vendor/tinystr/tests/main.rs /^fn tiny16_from_bytes() {$/;" f +tiny16_new_unchecked vendor/tinystr/tests/main.rs /^fn tiny16_new_unchecked() {$/;" f +tiny16_nonascii vendor/tinystr/tests/main.rs /^fn tiny16_nonascii() {$/;" f +tiny16_null vendor/tinystr/tests/main.rs /^fn tiny16_null() {$/;" f +tiny16_numeric vendor/tinystr/tests/main.rs /^fn tiny16_numeric() {$/;" f +tiny16_ord vendor/tinystr/tests/main.rs /^fn tiny16_ord() {$/;" f +tiny16_size vendor/tinystr/tests/main.rs /^fn tiny16_size() {$/;" f +tiny16_titlecase vendor/tinystr/tests/main.rs /^fn tiny16_titlecase() {$/;" f +tiny4_alpha vendor/tinystr/tests/main.rs /^fn tiny4_alpha() {$/;" f +tiny4_basic vendor/tinystr/tests/main.rs /^fn tiny4_basic() {$/;" f +tiny4_debug vendor/tinystr/tests/main.rs /^fn tiny4_debug() {$/;" f +tiny4_display vendor/tinystr/tests/main.rs /^fn tiny4_display() {$/;" f +tiny4_eq vendor/tinystr/tests/main.rs /^fn tiny4_eq() {$/;" f +tiny4_from_bytes vendor/tinystr/tests/main.rs /^fn tiny4_from_bytes() {$/;" f +tiny4_new_unchecked vendor/tinystr/tests/main.rs /^fn tiny4_new_unchecked() {$/;" f +tiny4_nonascii vendor/tinystr/tests/main.rs /^fn tiny4_nonascii() {$/;" f +tiny4_null vendor/tinystr/tests/main.rs /^fn tiny4_null() {$/;" f +tiny4_numeric vendor/tinystr/tests/main.rs /^fn tiny4_numeric() {$/;" f +tiny4_ord vendor/tinystr/tests/main.rs /^fn tiny4_ord() {$/;" f +tiny4_size vendor/tinystr/tests/main.rs /^fn tiny4_size() {$/;" f +tiny4_titlecase vendor/tinystr/tests/main.rs /^fn tiny4_titlecase() {$/;" f +tiny8_alpha vendor/tinystr/tests/main.rs /^fn tiny8_alpha() {$/;" f +tiny8_basic vendor/tinystr/tests/main.rs /^fn tiny8_basic() {$/;" f +tiny8_debug vendor/tinystr/tests/main.rs /^fn tiny8_debug() {$/;" f +tiny8_display vendor/tinystr/tests/main.rs /^fn tiny8_display() {$/;" f +tiny8_eq vendor/tinystr/tests/main.rs /^fn tiny8_eq() {$/;" f +tiny8_from_bytes vendor/tinystr/tests/main.rs /^fn tiny8_from_bytes() {$/;" f +tiny8_new_unchecked vendor/tinystr/tests/main.rs /^fn tiny8_new_unchecked() {$/;" f +tiny8_nonascii vendor/tinystr/tests/main.rs /^fn tiny8_nonascii() {$/;" f +tiny8_null vendor/tinystr/tests/main.rs /^fn tiny8_null() {$/;" f +tiny8_numeric vendor/tinystr/tests/main.rs /^fn tiny8_numeric() {$/;" f +tiny8_ord vendor/tinystr/tests/main.rs /^fn tiny8_ord() {$/;" f +tiny8_size vendor/tinystr/tests/main.rs /^fn tiny8_size() {$/;" f +tiny8_titlecase vendor/tinystr/tests/main.rs /^fn tiny8_titlecase() {$/;" f +tiny_sizes vendor/tinystr/tests/main.rs /^fn tiny_sizes() {$/;" f +tinyauto_basic vendor/tinystr/tests/main.rs /^fn tinyauto_basic() {$/;" f +tinyauto_nonascii vendor/tinystr/tests/main.rs /^fn tinyauto_nonascii() {$/;" f +tinystr 0.2.0 (August 16, 2019) vendor/tinystr/CHANGELOG.md /^## tinystr 0.2.0 (August 16, 2019)$/;" s chapter:Changelog +tinystr 0.3.0 (August 23, 2019) vendor/tinystr/CHANGELOG.md /^## tinystr 0.3.0 (August 23, 2019)$/;" s chapter:Changelog +tinystr 0.3.1 (October 1, 2019) vendor/tinystr/CHANGELOG.md /^## tinystr 0.3.1 (October 1, 2019)$/;" s chapter:Changelog +tinystr 0.3.2 (October 28, 2019) vendor/tinystr/CHANGELOG.md /^## tinystr 0.3.2 (October 28, 2019)$/;" s chapter:Changelog +tinystr 0.3.3 (July 26, 2020) vendor/tinystr/CHANGELOG.md /^## tinystr 0.3.3 (July 26, 2020)$/;" s chapter:Changelog +tinystr 0.3.4 (August 21, 2020) vendor/tinystr/CHANGELOG.md /^## tinystr 0.3.4 (August 21, 2020)$/;" s chapter:Changelog +tinystr [![crates.io](http://meritbadge.herokuapp.com/tinystr)](https://crates.io/crates/tinystr) [![Build Status](https://travis-ci.org/zbraniecki/tinystr.svg?branch=master)](https://travis-ci.org/zbraniecki/tinystr) [![Coverage Status](https://coveralls.io/repos/github/zbraniecki/tinystr/badge.svg?branch=master)](https://coveralls.io/github/zbraniecki/tinystr?branch=master) vendor/tinystr/README.md /^# tinystr [![crates.io](http:\/\/meritbadge.herokuapp.com\/tinystr)](https:\/\/crates.io\/crates/;" c +tinystr16 vendor/tinystr/src/lib.rs /^mod tinystr16;$/;" n +tinystr4 vendor/tinystr/src/lib.rs /^mod tinystr4;$/;" n +tinystr8 vendor/tinystr/src/lib.rs /^mod tinystr8;$/;" n +tinystr_macros vendor/tinystr/tests/main.rs /^fn tinystr_macros() {$/;" f +tinystrauto vendor/tinystr/src/lib.rs /^mod tinystrauto;$/;" n +tlhelp32 vendor/winapi/src/um/mod.rs /^#[cfg(feature = "tlhelp32")] pub mod tlhelp32;$/;" n +tm r_bash/src/lib.rs /^pub struct tm {$/;" s +tm r_glob/src/lib.rs /^pub struct tm {$/;" s +tm r_readline/src/lib.rs /^pub struct tm {$/;" s +tm_gmtoff r_bash/src/lib.rs /^ pub tm_gmtoff: ::std::os::raw::c_long,$/;" m struct:tm +tm_gmtoff r_readline/src/lib.rs /^ pub tm_gmtoff: ::std::os::raw::c_long,$/;" m struct:tm +tm_hour r_bash/src/lib.rs /^ pub tm_hour: ::std::os::raw::c_int,$/;" m struct:tm +tm_hour r_readline/src/lib.rs /^ pub tm_hour: ::std::os::raw::c_int,$/;" m struct:tm +tm_isdst r_bash/src/lib.rs /^ pub tm_isdst: ::std::os::raw::c_int,$/;" m struct:tm +tm_isdst r_readline/src/lib.rs /^ pub tm_isdst: ::std::os::raw::c_int,$/;" m struct:tm +tm_mday r_bash/src/lib.rs /^ pub tm_mday: ::std::os::raw::c_int,$/;" m struct:tm +tm_mday r_readline/src/lib.rs /^ pub tm_mday: ::std::os::raw::c_int,$/;" m struct:tm +tm_min r_bash/src/lib.rs /^ pub tm_min: ::std::os::raw::c_int,$/;" m struct:tm +tm_min r_readline/src/lib.rs /^ pub tm_min: ::std::os::raw::c_int,$/;" m struct:tm +tm_mon r_bash/src/lib.rs /^ pub tm_mon: ::std::os::raw::c_int,$/;" m struct:tm +tm_mon r_readline/src/lib.rs /^ pub tm_mon: ::std::os::raw::c_int,$/;" m struct:tm +tm_sec r_bash/src/lib.rs /^ pub tm_sec: ::std::os::raw::c_int,$/;" m struct:tm +tm_sec r_readline/src/lib.rs /^ pub tm_sec: ::std::os::raw::c_int,$/;" m struct:tm +tm_wday r_bash/src/lib.rs /^ pub tm_wday: ::std::os::raw::c_int,$/;" m struct:tm +tm_wday r_readline/src/lib.rs /^ pub tm_wday: ::std::os::raw::c_int,$/;" m struct:tm +tm_yday r_bash/src/lib.rs /^ pub tm_yday: ::std::os::raw::c_int,$/;" m struct:tm +tm_yday r_readline/src/lib.rs /^ pub tm_yday: ::std::os::raw::c_int,$/;" m struct:tm +tm_year r_bash/src/lib.rs /^ pub tm_year: ::std::os::raw::c_int,$/;" m struct:tm +tm_year r_readline/src/lib.rs /^ pub tm_year: ::std::os::raw::c_int,$/;" m struct:tm +tm_zone r_bash/src/lib.rs /^ pub tm_zone: *const ::std::os::raw::c_char,$/;" m struct:tm +tm_zone r_readline/src/lib.rs /^ pub tm_zone: *const ::std::os::raw::c_char,$/;" m struct:tm +tmalloc lib/malloc/mstats.h /^ int tmalloc[NBUCKETS];$/;" m struct:_malstats typeref:typename:int[] +tmmap lib/malloc/mstats.h /^ bits32_t tmmap;$/;" m struct:_malstats typeref:typename:bits32_t +tmpbuiltins.c builtins/Makefile.in /^tmpbuiltins.c: $(MKBUILTINS) $(DEFSRC)$/;" t +tmpbuiltins.h builtins/Makefile.in /^tmpbuiltins.h: tmpbuiltins.c$/;" t +tmpbuiltins.o builtins/Makefile.in /^tmpbuiltins.o: tmpbuiltins.c$/;" t +tmpfile r_bash/src/lib.rs /^ pub fn tmpfile() -> *mut FILE;$/;" f +tmpfile r_readline/src/lib.rs /^ pub fn tmpfile() -> *mut FILE;$/;" f +tmpfile vendor/libc/src/fuchsia/mod.rs /^ pub fn tmpfile() -> *mut FILE;$/;" f +tmpfile vendor/libc/src/solid/mod.rs /^ pub fn tmpfile() -> *mut FILE;$/;" f +tmpfile vendor/libc/src/unix/mod.rs /^ pub fn tmpfile() -> *mut FILE;$/;" f +tmpfile vendor/libc/src/vxworks/mod.rs /^ pub fn tmpfile() -> *mut FILE;$/;" f +tmpfile vendor/libc/src/windows/mod.rs /^ pub fn tmpfile() -> *mut FILE;$/;" f +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: ${BASHINCDIR}\/chartypes.h$/;" t +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: ${BASHINCDIR}\/filecntl.h$/;" t +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: ${BASHINCDIR}\/posixstat.h$/;" t +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: ${BUILD_DIR}\/config.h ${topdir}\/config-top.h $/;" t +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: ${BUILD_DIR}\/pathnames.h ${topdir}\/externs.h$/;" t +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: ${topdir}\/array.h ${topdir}\/hashlib.h ${topdir}\/quit.h$/;" t +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: ${topdir}\/bashtypes.h$/;" t +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: ${topdir}\/command.h ${BASHINCDIR}\/stdc.h ${topdir}\/error.h$/;" t +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: ${topdir}\/general.h ${topdir}\/bashtypes.h ${topdir}\/variables.h ${topdir}\/conftyp/;" t +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: ${topdir}\/make_cmd.h ${topdir}\/subst.h ${topdir}\/sig.h$/;" t +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: ${topdir}\/shell.h ${topdir}\/syntax.h ${topdir}\/bashjmp.h ${BASHINCDIR}\/posixjmp.h$/;" t +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: ${topdir}\/unwind_prot.h ${topdir}\/dispose_cmd.h$/;" t +tmpfile.o lib/sh/Makefile.in /^tmpfile.o: tmpfile.c$/;" t +tmpfile64 r_bash/src/lib.rs /^ pub fn tmpfile64() -> *mut FILE;$/;" f +tmpfile64 r_readline/src/lib.rs /^ pub fn tmpfile64() -> *mut FILE;$/;" f +tmpfile64 vendor/libc/src/unix/linux_like/emscripten/mod.rs /^ pub fn tmpfile64() -> *mut ::FILE;$/;" f +tmpfile64 vendor/libc/src/unix/linux_like/linux/mod.rs /^ pub fn tmpfile64() -> *mut ::FILE;$/;" f +tmpnam r_bash/src/lib.rs /^ pub fn tmpnam(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +tmpnam r_readline/src/lib.rs /^ pub fn tmpnam(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +tmpnam vendor/libc/src/fuchsia/mod.rs /^ pub fn tmpnam(ptr: *mut ::c_char) -> *mut ::c_char;$/;" f +tmpnam vendor/libc/src/solid/mod.rs /^ pub fn tmpnam(arg1: *const c_char) -> *mut c_char;$/;" f +tmpnam vendor/libc/src/unix/mod.rs /^ pub fn tmpnam(ptr: *mut ::c_char) -> *mut ::c_char;$/;" f +tmpnam vendor/libc/src/vxworks/mod.rs /^ pub fn tmpnam(ptr: *mut ::c_char) -> *mut ::c_char;$/;" f +tmpnam_r r_bash/src/lib.rs /^ pub fn tmpnam_r(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +tmpnam_r r_readline/src/lib.rs /^ pub fn tmpnam_r(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;$/;" f +tmpnamelen lib/sh/tmpfile.c /^static int tmpnamelen = -1;$/;" v typeref:typename:int file: +tms include/systimes.h /^struct tms$/;" s +tms r_bash/src/lib.rs /^pub struct tms {$/;" s +tms_cstime include/systimes.h /^ clock_t tms_cstime; \/* System CPU time of dead children. *\/$/;" m struct:tms typeref:typename:clock_t +tms_cstime r_bash/src/lib.rs /^ pub tms_cstime: clock_t,$/;" m struct:tms +tms_cutime include/systimes.h /^ clock_t tms_cutime; \/* User CPU time of dead children. *\/$/;" m struct:tms typeref:typename:clock_t +tms_cutime r_bash/src/lib.rs /^ pub tms_cutime: clock_t,$/;" m struct:tms +tms_stime include/systimes.h /^ clock_t tms_stime; \/* System CPU time. *\/$/;" m struct:tms typeref:typename:clock_t +tms_stime r_bash/src/lib.rs /^ pub tms_stime: clock_t,$/;" m struct:tms +tms_utime include/systimes.h /^ clock_t tms_utime; \/* User CPU time. *\/$/;" m struct:tms typeref:typename:clock_t +tms_utime r_bash/src/lib.rs /^ pub tms_utime: clock_t,$/;" m struct:tms +to_ascii_lowercase vendor/tinystr/src/tinystr16.rs /^ pub fn to_ascii_lowercase(self) -> Self {$/;" P implementation:TinyStr16 +to_ascii_lowercase vendor/tinystr/src/tinystr4.rs /^ pub fn to_ascii_lowercase(self) -> Self {$/;" P implementation:TinyStr4 +to_ascii_lowercase vendor/tinystr/src/tinystr8.rs /^ pub fn to_ascii_lowercase(self) -> Self {$/;" P implementation:TinyStr8 +to_ascii_titlecase vendor/tinystr/benches/tinystr.rs /^ fn to_ascii_titlecase(&self) -> String {$/;" P implementation:str +to_ascii_titlecase vendor/tinystr/benches/tinystr.rs /^ fn to_ascii_titlecase(&self) -> String;$/;" P interface:ExtToAsciiTitlecase +to_ascii_titlecase vendor/tinystr/src/tinystr16.rs /^ pub fn to_ascii_titlecase(self) -> Self {$/;" P implementation:TinyStr16 +to_ascii_titlecase vendor/tinystr/src/tinystr4.rs /^ pub fn to_ascii_titlecase(self) -> Self {$/;" P implementation:TinyStr4 +to_ascii_titlecase vendor/tinystr/src/tinystr8.rs /^ pub fn to_ascii_titlecase(self) -> Self {$/;" P implementation:TinyStr8 +to_ascii_uppercase vendor/tinystr/src/tinystr16.rs /^ pub fn to_ascii_uppercase(self) -> Self {$/;" P implementation:TinyStr16 +to_ascii_uppercase vendor/tinystr/src/tinystr4.rs /^ pub fn to_ascii_uppercase(self) -> Self {$/;" P implementation:TinyStr4 +to_ascii_uppercase vendor/tinystr/src/tinystr8.rs /^ pub fn to_ascii_uppercase(self) -> Self {$/;" P implementation:TinyStr8 +to_be vendor/stdext/src/num/integer.rs /^ fn to_be(self) -> Self;$/;" P interface:Integer +to_compile_error vendor/syn/src/error.rs /^ fn to_compile_error(&self) -> TokenStream {$/;" P implementation:ErrorMessage +to_compile_error vendor/syn/src/error.rs /^ pub fn to_compile_error(&self) -> TokenStream {$/;" P implementation:Error +to_le vendor/stdext/src/num/integer.rs /^ fn to_le(self) -> Self;$/;" P interface:Integer +to_literal vendor/syn/src/lit.rs /^ pub fn to_literal(repr: &str, digits: &str, suffix: &str) -> Option {$/;" f module:value +to_resource_id vendor/fluent-fallback/src/types.rs /^ fn to_resource_id(self, resource_type: ResourceType) -> ResourceId {$/;" P implementation:S +to_resource_id vendor/fluent-fallback/src/types.rs /^ fn to_resource_id(self, resource_type: ResourceType) -> ResourceId;$/;" P interface:ToResourceId +to_slice vendor/nix/src/net/if_.rs /^ pub fn to_slice(&self) -> &[Interface] {$/;" P implementation:if_nameindex::Interfaces +to_smallvec vendor/smallvec/src/lib.rs /^ fn to_smallvec(&self) -> SmallVec {$/;" f +to_smallvec vendor/smallvec/src/lib.rs /^ fn to_smallvec(&self) -> SmallVec;$/;" P interface:ToSmallVec +to_str vendor/nix/src/sys/socket/addr.rs /^ pub fn to_str(&self) -> String {$/;" P implementation:SockAddr +to_string vendor/syn/src/bigint.rs /^ pub fn to_string(&self) -> String {$/;" P implementation:BigInt +to_token_stream vendor/quote/src/to_tokens.rs /^ fn to_token_stream(&self) -> TokenStream {$/;" P interface:ToTokens +to_tokens vendor/async-trait/src/expand.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:Item +to_tokens vendor/quote/src/lib.rs /^mod to_tokens;$/;" n +to_tokens vendor/quote/src/runtime.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:RepInterp +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, dst: &mut TokenStream) {$/;" P implementation:TokenStream +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, dst: &mut TokenStream) {$/;" P implementation:TokenTree +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:Box +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:Cow +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:Group +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:Ident +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:Literal +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:Option +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:Punct +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:Rc +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:String +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:T +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:bool +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:char +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:str +to_tokens vendor/quote/src/to_tokens.rs /^ fn to_tokens(&self, tokens: &mut TokenStream);$/;" P interface:ToTokens +to_tokens vendor/quote/tests/test.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:X +to_tokens vendor/syn/src/attr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Attribute +to_tokens vendor/syn/src/attr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::MetaList +to_tokens vendor/syn/src/attr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::MetaNameValue +to_tokens vendor/syn/src/data.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Field +to_tokens vendor/syn/src/data.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::FieldsNamed +to_tokens vendor/syn/src/data.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::FieldsUnnamed +to_tokens vendor/syn/src/data.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Variant +to_tokens vendor/syn/src/data.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::VisCrate +to_tokens vendor/syn/src/data.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::VisPublic +to_tokens vendor/syn/src/data.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::VisRestricted +to_tokens vendor/syn/src/derive.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::DeriveInput +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Arm +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprArray +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprAssign +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprAssignOp +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprAsync +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprAwait +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprBinary +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprBlock +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprBox +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprBreak +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprCall +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprCast +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprClosure +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprContinue +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprField +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprForLoop +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprGroup +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprIf +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprIndex +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprLet +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprLit +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprLoop +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprMacro +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprMatch +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprMethodCall +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprParen +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprPath +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprRange +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprReference +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprRepeat +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprReturn +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprStruct +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprTry +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprTryBlock +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprTuple +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprType +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprUnary +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprUnsafe +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprWhile +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ExprYield +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::FieldValue +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::GenericMethodArgument +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Index +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Label +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Member +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::MethodTurbofish +to_tokens vendor/syn/src/expr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::RangeLimits +to_tokens vendor/syn/src/file.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::File +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::BoundLifetimes +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ConstParam +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Generics +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ImplGenerics +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::LifetimeDef +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PredicateEq +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PredicateLifetime +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PredicateType +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TraitBound +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TraitBoundModifier +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Turbofish +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeGenerics +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeParam +to_tokens vendor/syn/src/generics.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::WhereClause +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ForeignItemFn +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ForeignItemMacro +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ForeignItemStatic +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ForeignItemType +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ImplItemConst +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ImplItemMacro +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ImplItemMethod +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ImplItemType +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemConst +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemEnum +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemExternCrate +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemFn +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemForeignMod +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemImpl +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemMacro +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemMacro2 +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemMod +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemStatic +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemStruct +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemTrait +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemTraitAlias +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemType +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemUnion +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ItemUse +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Receiver +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Signature +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TraitItemConst +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TraitItemMacro +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TraitItemMethod +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TraitItemType +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::UseGlob +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::UseGroup +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::UseName +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::UsePath +to_tokens vendor/syn/src/item.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::UseRename +to_tokens vendor/syn/src/lifetime.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Lifetime +to_tokens vendor/syn/src/lit.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::LitBool +to_tokens vendor/syn/src/lit.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::LitByte +to_tokens vendor/syn/src/lit.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::LitByteStr +to_tokens vendor/syn/src/lit.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::LitChar +to_tokens vendor/syn/src/lit.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::LitFloat +to_tokens vendor/syn/src/lit.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::LitInt +to_tokens vendor/syn/src/lit.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::LitStr +to_tokens vendor/syn/src/mac.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Macro +to_tokens vendor/syn/src/op.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::BinOp +to_tokens vendor/syn/src/op.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::UnOp +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::FieldPat +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatBox +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatIdent +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatLit +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatMacro +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatOr +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatPath +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatRange +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatReference +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatRest +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatSlice +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatStruct +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatTuple +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatTupleStruct +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatType +to_tokens vendor/syn/src/pat.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PatWild +to_tokens vendor/syn/src/path.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::AngleBracketedGenericArguments +to_tokens vendor/syn/src/path.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Binding +to_tokens vendor/syn/src/path.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Constraint +to_tokens vendor/syn/src/path.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::GenericArgument +to_tokens vendor/syn/src/path.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ParenthesizedGenericArguments +to_tokens vendor/syn/src/path.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Path +to_tokens vendor/syn/src/path.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PathArguments +to_tokens vendor/syn/src/path.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::PathSegment +to_tokens vendor/syn/src/print.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" f +to_tokens vendor/syn/src/punctuated.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" f module:printing +to_tokens vendor/syn/src/stmt.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Block +to_tokens vendor/syn/src/stmt.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Local +to_tokens vendor/syn/src/stmt.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Stmt +to_tokens vendor/syn/src/token.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:Underscore +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Abi +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::BareFnArg +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::ReturnType +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeArray +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeBareFn +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeGroup +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeImplTrait +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeInfer +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeMacro +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeNever +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeParen +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypePath +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypePtr +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeReference +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeSlice +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeTraitObject +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::TypeTuple +to_tokens vendor/syn/src/ty.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:printing::Variadic +to_tokens vendor/thiserror-impl/src/attr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:Display +to_tokens vendor/thiserror-impl/src/attr.rs /^ fn to_tokens(&self, tokens: &mut TokenStream) {$/;" P implementation:Trait +to_usize vendor/once_cell/src/race.rs /^ fn to_usize(value: bool) -> NonZeroUsize {$/;" P implementation:OnceBool +toascii r_bash/src/lib.rs /^ pub fn toascii(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +toascii r_glob/src/lib.rs /^ pub fn toascii(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +toascii r_readline/src/lib.rs /^ pub fn toascii(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +toggle vendor/futures-util/src/stream/select_with_strategy.rs /^ pub fn toggle(&mut self) -> Self {$/;" P implementation:PollNext +toggle_shopts builtins_rust/shopt/src/lib.rs /^unsafe extern "C" fn toggle_shopts(mode: i32, list: *mut WordList, _quiet: i32) -> i32 {$/;" f +token general.h /^ int token;$/;" m struct:__anon0d8c0d390108 typeref:typename:int +token r_bash/src/lib.rs /^ pub token: *mut ::std::os::raw::c_char,$/;" m struct:_sh_parser_state_t +token r_bash/src/lib.rs /^ pub token: ::std::os::raw::c_int,$/;" m struct:STRING_INT_ALIST +token r_glob/src/lib.rs /^ pub token: ::std::os::raw::c_int,$/;" m struct:STRING_INT_ALIST +token r_readline/src/lib.rs /^ pub token: ::std::os::raw::c_int,$/;" m struct:STRING_INT_ALIST +token shell.h /^ char *token;$/;" m struct:_sh_parser_state_t typeref:typename:char * +token vendor/syn/src/group.rs /^ pub token: token::Brace,$/;" m struct:Braces +token vendor/syn/src/group.rs /^ pub token: token::Bracket,$/;" m struct:Brackets +token vendor/syn/src/group.rs /^ pub token: token::Group,$/;" m struct:Group +token vendor/syn/src/group.rs /^ pub token: token::Paren,$/;" m struct:Parens +token vendor/syn/src/lib.rs /^pub mod token;$/;" n +token vendor/syn/src/lit.rs /^ pub fn token(&self) -> Ident {$/;" P implementation:LitBool +token vendor/syn/src/lit.rs /^ pub fn token(&self) -> Literal {$/;" P implementation:LitByte +token vendor/syn/src/lit.rs /^ pub fn token(&self) -> Literal {$/;" P implementation:LitByteStr +token vendor/syn/src/lit.rs /^ pub fn token(&self) -> Literal {$/;" P implementation:LitChar +token vendor/syn/src/lit.rs /^ pub fn token(&self) -> Literal {$/;" P implementation:LitFloat +token vendor/syn/src/lit.rs /^ pub fn token(&self) -> Literal {$/;" P implementation:LitInt +token vendor/syn/src/lit.rs /^ pub fn token(&self) -> Literal {$/;" P implementation:LitStr +token vendor/syn/src/lit.rs /^ token: Literal,$/;" m struct:LitFloatRepr +token vendor/syn/src/lit.rs /^ token: Literal,$/;" m struct:LitIntRepr +token vendor/syn/src/lit.rs /^ token: Literal,$/;" m struct:LitRepr +token_buffer_size r_bash/src/lib.rs /^ pub token_buffer_size: ::std::os::raw::c_int,$/;" m struct:_sh_parser_state_t +token_buffer_size shell.h /^ int token_buffer_size;$/;" m struct:_sh_parser_state_t typeref:typename:int +token_char alias.c /^#define token_char(/;" d file: +token_count vendor/proc-macro2/tests/test.rs /^ fn token_count(p: &str) -> usize {$/;" f function:literal_suffix +token_state r_bash/src/lib.rs /^ pub token_state: *mut ::std::os::raw::c_int,$/;" m struct:_sh_parser_state_t +token_state shell.h /^ int *token_state;$/;" m struct:_sh_parser_state_t typeref:typename:int * +token_stream vendor/proc-macro2/src/lib.rs /^pub mod token_stream {$/;" n +token_stream vendor/proc-macro2/src/parse.rs /^pub(crate) fn token_stream(mut input: Cursor) -> Result {$/;" f +token_stream vendor/syn/src/buffer.rs /^ pub fn token_stream(self) -> TokenStream {$/;" P implementation:Cursor +token_tree vendor/syn/src/buffer.rs /^ pub fn token_tree(self) -> Option<(TokenTree, Cursor<'a>)> {$/;" P implementation:Cursor +tokens_helper vendor/syn/src/gen_helper.rs /^ pub fn tokens_helper<'ast, V: Visit<'ast> + ?Sized, S: Spans>(visitor: &mut V, spans: &S) {$/;" f module:visit +tokens_helper vendor/syn/src/gen_helper.rs /^ pub fn tokens_helper(folder: &mut F, spans: &S) -> S {$/;" f module:fold +tokens_helper vendor/syn/src/gen_helper.rs /^ pub fn tokens_helper(visitor: &mut V, spans: &mut S) {$/;" f module:visit_mut +tokens_to_parse_buffer vendor/syn/src/parse.rs /^fn tokens_to_parse_buffer(tokens: &TokenBuffer) -> ParseBuffer {$/;" f +tokenstream_parse vendor/syn/benches/rust.rs /^mod tokenstream_parse {$/;" n +tokenstream_size_hint vendor/proc-macro2/tests/test.rs /^fn tokenstream_size_hint() {$/;" f +tokstr expr.c /^ char *tokstr; \/* possibly-rewritten lvalue if not NULL *\/$/;" m struct:lvalue typeref:typename:char * file: +tokstr expr.c /^ char *tokstr;$/;" m struct:__anonfc32de750108 typeref:typename:char * file: +tokstr expr.c /^static char *tokstr; \/* current token string *\/$/;" v typeref:typename:char * file: +tokval expr.c /^ intmax_t tokval; \/* expression evaluated value *\/$/;" m struct:lvalue typeref:typename:intmax_t file: +tokval expr.c /^ intmax_t tokval;$/;" m struct:__anonfc32de750108 typeref:typename:intmax_t file: +tokval expr.c /^static intmax_t tokval; \/* current token value *\/$/;" v typeref:typename:intmax_t file: +tokvar expr.c /^ SHELL_VAR *tokvar; \/* variable described by array or var reference *\/$/;" m struct:lvalue typeref:typename:SHELL_VAR * file: +tolerance r_bash/src/lib.rs /^ pub tolerance: __syscall_slong_t,$/;" m struct:timex +tolerance r_readline/src/lib.rs /^ pub tolerance: __syscall_slong_t,$/;" m struct:timex +tolower r_bash/src/lib.rs /^ pub fn tolower(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +tolower r_glob/src/lib.rs /^ pub fn tolower(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +tolower r_readline/src/lib.rs /^ pub fn tolower(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +tolower vendor/libc/src/fuchsia/mod.rs /^ pub fn tolower(c: c_int) -> c_int;$/;" f +tolower vendor/libc/src/solid/mod.rs /^ pub fn tolower(c: c_int) -> c_int;$/;" f +tolower vendor/libc/src/unix/mod.rs /^ pub fn tolower(c: c_int) -> c_int;$/;" f +tolower vendor/libc/src/vxworks/mod.rs /^ pub fn tolower(c: c_int) -> c_int;$/;" f +tolower vendor/libc/src/wasi.rs /^ pub fn tolower(c: c_int) -> c_int;$/;" f +tolower vendor/libc/src/windows/mod.rs /^ pub fn tolower(c: c_int) -> c_int;$/;" f +tolower_l r_bash/src/lib.rs /^ pub fn tolower_l(__c: ::std::os::raw::c_int, __l: locale_t) -> ::std::os::raw::c_int;$/;" f +tolower_l r_glob/src/lib.rs /^ pub fn tolower_l(__c: ::std::os::raw::c_int, __l: locale_t) -> ::std::os::raw::c_int;$/;" f +tolower_l r_readline/src/lib.rs /^ pub fn tolower_l(__c: ::std::os::raw::c_int, __l: locale_t) -> ::std::os::raw::c_int;$/;" f +too_dangerous lib/readline/examples/fileman.c /^too_dangerous (caller)$/;" f +top_builddir Makefile.in /^top_builddir = @BUILD_DIR@$/;" m +top_builddir lib/intl/Makefile.in /^top_builddir = @BUILD_DIR@$/;" m +top_level expr.c /^procenv_t top_level;$/;" v typeref:typename:procenv_t +top_level r_bash/src/lib.rs /^ pub static mut top_level: sigjmp_buf;$/;" v +top_level sig.c /^procenv_t top_level;$/;" v typeref:typename:procenv_t +top_level_cleanup builtins_rust/common/src/lib.rs /^ fn top_level_cleanup();$/;" f +top_level_cleanup r_bash/src/lib.rs /^ pub fn top_level_cleanup();$/;" f +top_level_cleanup sig.c /^top_level_cleanup ()$/;" f typeref:typename:void +top_level_mask sig.c /^sigset_t top_level_mask;$/;" v typeref:typename:sigset_t +top_srcdir lib/intl/Makefile.in /^top_srcdir = @top_srcdir@$/;" m +topdir Makefile.in /^topdir = @top_srcdir@$/;" m +topdir builtins/Makefile.in /^topdir = @top_srcdir@$/;" m +topdir lib/glob/Makefile.in /^topdir = @top_srcdir@$/;" m +topdir lib/malloc/Makefile.in /^topdir = @top_srcdir@$/;" m +topdir lib/readline/Makefile.in /^topdir = @top_srcdir@$/;" m +topdir lib/sh/Makefile.in /^topdir = @top_srcdir@$/;" m +topdir lib/termcap/Makefile.in /^topdir = @top_srcdir@$/;" m +topdir lib/tilde/Makefile.in /^topdir = @top_srcdir@$/;" m +topdir support/Makefile.in /^topdir = @top_srcdir@$/;" m +total vendor/once_cell/tests/it.rs /^ fn total(&self) -> usize {$/;" P implementation:race_once_box::Heap +total vendor/once_cell/tests/it.rs /^ total: Arc,$/;" m struct:race_once_box::Heap +total vendor/once_cell/tests/it.rs /^ total: Arc,$/;" m struct:race_once_box::Pebble +totfds subst.c /^static int totfds; \/* The highest possible number of open files. *\/$/;" v typeref:typename:int file: +toupper r_bash/src/lib.rs /^ pub fn toupper(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +toupper r_glob/src/lib.rs /^ pub fn toupper(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +toupper r_readline/src/lib.rs /^ pub fn toupper(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;$/;" f +toupper vendor/libc/src/fuchsia/mod.rs /^ pub fn toupper(c: c_int) -> c_int;$/;" f +toupper vendor/libc/src/solid/mod.rs /^ pub fn toupper(c: c_int) -> c_int;$/;" f +toupper vendor/libc/src/unix/mod.rs /^ pub fn toupper(c: c_int) -> c_int;$/;" f +toupper vendor/libc/src/vxworks/mod.rs /^ pub fn toupper(c: c_int) -> c_int;$/;" f +toupper vendor/libc/src/wasi.rs /^ pub fn toupper(c: c_int) -> c_int;$/;" f +toupper vendor/libc/src/windows/mod.rs /^ pub fn toupper(c: c_int) -> c_int;$/;" f +toupper_l r_bash/src/lib.rs /^ pub fn toupper_l(__c: ::std::os::raw::c_int, __l: locale_t) -> ::std::os::raw::c_int;$/;" f +toupper_l r_glob/src/lib.rs /^ pub fn toupper_l(__c: ::std::os::raw::c_int, __l: locale_t) -> ::std::os::raw::c_int;$/;" f +toupper_l r_readline/src/lib.rs /^ pub fn toupper_l(__c: ::std::os::raw::c_int, __l: locale_t) -> ::std::os::raw::c_int;$/;" f +towctrans r_bash/src/lib.rs /^ pub fn towctrans(__wc: wint_t, __desc: wctrans_t) -> wint_t;$/;" f +towctrans r_glob/src/lib.rs /^ pub fn towctrans(__wc: wint_t, __desc: wctrans_t) -> wint_t;$/;" f +towctrans r_readline/src/lib.rs /^ pub fn towctrans(__wc: wint_t, __desc: wctrans_t) -> wint_t;$/;" f +towctrans_l r_bash/src/lib.rs /^ pub fn towctrans_l(__wc: wint_t, __desc: wctrans_t, __locale: locale_t) -> wint_t;$/;" f +towctrans_l r_glob/src/lib.rs /^ pub fn towctrans_l(__wc: wint_t, __desc: wctrans_t, __locale: locale_t) -> wint_t;$/;" f +towctrans_l r_readline/src/lib.rs /^ pub fn towctrans_l(__wc: wint_t, __desc: wctrans_t, __locale: locale_t) -> wint_t;$/;" f +towlower r_bash/src/lib.rs /^ pub fn towlower(__wc: wint_t) -> wint_t;$/;" f +towlower r_glob/src/lib.rs /^ pub fn towlower(__wc: wint_t) -> wint_t;$/;" f +towlower r_readline/src/lib.rs /^ pub fn towlower(__wc: wint_t) -> wint_t;$/;" f +towlower_l r_bash/src/lib.rs /^ pub fn towlower_l(__wc: wint_t, __locale: locale_t) -> wint_t;$/;" f +towlower_l r_glob/src/lib.rs /^ pub fn towlower_l(__wc: wint_t, __locale: locale_t) -> wint_t;$/;" f +towlower_l r_readline/src/lib.rs /^ pub fn towlower_l(__wc: wint_t, __locale: locale_t) -> wint_t;$/;" f +towupper r_bash/src/lib.rs /^ pub fn towupper(__wc: wint_t) -> wint_t;$/;" f +towupper r_glob/src/lib.rs /^ pub fn towupper(__wc: wint_t) -> wint_t;$/;" f +towupper r_readline/src/lib.rs /^ pub fn towupper(__wc: wint_t) -> wint_t;$/;" f +towupper_l r_bash/src/lib.rs /^ pub fn towupper_l(__wc: wint_t, __locale: locale_t) -> wint_t;$/;" f +towupper_l r_glob/src/lib.rs /^ pub fn towupper_l(__wc: wint_t, __locale: locale_t) -> wint_t;$/;" f +towupper_l r_readline/src/lib.rs /^ pub fn towupper_l(__wc: wint_t, __locale: locale_t) -> wint_t;$/;" f +tp builtins_rust/read/src/intercdep.rs /^ pub tp: c_char,$/;" m struct:_keymap_entry +tp expr.c /^ char *expression, *tp, *lasttp;$/;" m struct:__anonfc32de750108 typeref:typename:char * file: +tp expr.c /^static char *tp; \/* token lexical position *\/$/;" v typeref:typename:char * file: +tparam lib/termcap/tparam.c /^tparam (string, outstring, len, arg0, arg1, arg2, arg3)$/;" f +tparam.o lib/termcap/Makefile.in /^tparam.o: $(BUILD_DIR)\/config.h$/;" t +tparam1 lib/termcap/tparam.c /^tparam1 (string, outstring, len, up, left, argp)$/;" f file: +tprint lib/termcap/termcap.c /^tprint (cap)$/;" f +tputs lib/termcap/termcap.c /^tputs (str, nlines, outfun)$/;" f +tputs r_readline/src/lib.rs /^ pub fn tputs($/;" f +tputs_baud_rate lib/termcap/termcap.c /^int tputs_baud_rate;$/;" v typeref:typename:int +trace error.c /^trace (const char *format, ...)$/;" f typeref:typename:void +trace r_bash/src/lib.rs /^ pub fn trace(arg1: *const ::std::os::raw::c_char, ...);$/;" f +trace.o lib/malloc/Makefile.in /^trace.o: ${BUILD_DIR}\/config.h$/;" t +trace.o lib/malloc/Makefile.in /^trace.o: ${srcdir}\/imalloc.h$/;" t +trace.o lib/malloc/Makefile.in /^trace.o: ${topdir}\/bashintl.h ${LIBINTL_H} ${BASHINCDIR}\/gettext.h$/;" t +trace.o lib/malloc/Makefile.in /^trace.o: trace.c$/;" t +trace_malloc_stats lib/malloc/stats.c /^trace_malloc_stats (s, fn)$/;" f +trace_p variables.h /^#define trace_p(/;" d +traceme vendor/nix/src/sys/ptrace/bsd.rs /^pub fn traceme() -> Result<()> {$/;" f +traceme vendor/nix/src/sys/ptrace/linux.rs /^pub fn traceme() -> Result<()> {$/;" f +tracing vendor/async-trait/tests/test.rs /^ fn tracing() {$/;" f module:issue45 +track vendor/fluent-bundle/src/resolver/scope.rs /^ pub fn track($/;" P implementation:Scope +trailer_expr vendor/syn/src/expr.rs /^ fn trailer_expr($/;" f module:parsing +trailer_expr vendor/syn/src/expr.rs /^ fn trailer_expr(input: ParseStream, allow_struct: AllowStruct) -> Result {$/;" f module:parsing +trailer_helper vendor/syn/src/expr.rs /^ fn trailer_helper(input: ParseStream, mut e: Expr) -> Result {$/;" f module:parsing +trailing_comma vendor/pin-project-lite/tests/test.rs /^fn trailing_comma() {$/;" f +trailing_empty_none_group vendor/syn/tests/test_parse_buffer.rs /^fn trailing_empty_none_group() {$/;" f +trailing_ones vendor/stdext/src/num/integer.rs /^ fn trailing_ones(self) -> u32;$/;" P interface:Integer +trailing_punct vendor/syn/src/punctuated.rs /^ pub fn trailing_punct(&self) -> bool {$/;" P implementation:Punctuated +trailing_zeros vendor/stdext/src/num/integer.rs /^ fn trailing_zeros(self) -> u32;$/;" P interface:Integer +trait_bounds_on_type_generics vendor/pin-project-lite/tests/test.rs /^fn trait_bounds_on_type_generics() {$/;" f +trans_char support/man2html.c /^trans_char(char *c, char s, char t)$/;" f typeref:typename:void file: +trans_sysdep_tab lib/intl/gettextP.h /^ const struct sysdep_string_desc *trans_sysdep_tab;$/;" m struct:loaded_domain typeref:typename:const struct sysdep_string_desc * +trans_sysdep_tab_offset lib/intl/gmo.h /^ nls_uint32 trans_sysdep_tab_offset;$/;" m struct:mo_file_header typeref:typename:nls_uint32 +trans_tab lib/intl/gettextP.h /^ const struct string_desc *trans_tab;$/;" m struct:loaded_domain typeref:typename:const struct string_desc * +trans_tab_offset lib/intl/gmo.h /^ nls_uint32 trans_tab_offset;$/;" m struct:mo_file_header typeref:typename:nls_uint32 +transcmp lib/intl/dcigettext.c /^transcmp (p1, p2)$/;" f file: +transform lib/intl/Makefile.in /^transform = @program_transform_name@$/;" m +transform vendor/fluent-bundle/src/bundle.rs /^ pub(crate) transform: Option Cow>,$/;" m struct:FluentBundle +transform_block vendor/async-trait/src/expand.rs /^fn transform_block(context: Context, sig: &mut Signature, block: &mut Block) {$/;" f +transform_sig vendor/async-trait/src/expand.rs /^fn transform_sig($/;" f +translate_fn builtins_rust/common/src/lib.rs /^pub unsafe fn translate_fn(command: &String, args1: *mut libc::c_char) {$/;" f +translate_message vendor/syn/tests/test_round_trip.rs /^fn translate_message(diagnostic: &Diagnostic) -> String {$/;" f +translation lib/intl/dcigettext.c /^ const char *translation;$/;" m struct:known_translation_t typeref:typename:const char * file: +translation_fn builtins_rust/type/src/lib.rs /^unsafe fn translation_fn(command: &String, args1: *mut libc::c_char, args2: *mut libc::c_char) {$/;" f +translation_length lib/intl/dcigettext.c /^ size_t translation_length;$/;" m struct:known_translation_t typeref:typename:size_t file: +transmem_block_t lib/intl/dcigettext.c /^typedef unsigned char transmem_block_t;$/;" t typeref:typename:unsigned char file: +transmem_block_t lib/intl/dcigettext.c /^} transmem_block_t;$/;" t typeref:struct:transmem_list file: +transmem_list lib/intl/dcigettext.c /^static struct transmem_list *transmem_list;$/;" v typeref:struct:transmem_list * file: +transmem_list lib/intl/dcigettext.c /^typedef struct transmem_list$/;" s file: +transmute vendor/lazy_static/tests/test.rs /^fn transmute() -> X { X }$/;" f +transparent vendor/thiserror-impl/src/attr.rs /^ pub transparent: Option>,$/;" m struct:Attrs +transportsettingcommon vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "transportsettingcommon")] pub mod transportsettingcommon;$/;" n +trap.o Makefile.in /^trap.o: ${DEFDIR}\/builtext.h jobs.h$/;" t +trap.o Makefile.in /^trap.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +trap.o Makefile.in /^trap.o: config.h bashtypes.h trap.h bashansi.h ${BASHINCDIR}\/ansi_stdlib.h$/;" t +trap.o Makefile.in /^trap.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h$/;" t +trap.o Makefile.in /^trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h$/;" t +trap.o Makefile.in /^trap.o: quit.h ${BASHINCDIR}\/maxpath.h unwind_prot.h dispose_cmd.h parser.h$/;" t +trap.o Makefile.in /^trap.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}\/posixjmp.h command.h ${BASHINCDIR}\/s/;" t +trap.o Makefile.in /^trap.o: signames.h $(DEFSRC)\/common.h$/;" t +trap.o builtins/Makefile.in /^trap.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +trap.o builtins/Makefile.in /^trap.o: $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/subst.h$/;" t +trap.o builtins/Makefile.in /^trap.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h $(topdir)\/externs.h$/;" t +trap.o builtins/Makefile.in /^trap.o: $(topdir)\/findcmd.h ..\/pathnames.h$/;" t +trap.o builtins/Makefile.in /^trap.o: $(topdir)\/quit.h $(srcdir)\/common.h $(BASHINCDIR)\/maxpath.h $(topdir)\/sig.h$/;" t +trap.o builtins/Makefile.in /^trap.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $/;" t +trap.o builtins/Makefile.in /^trap.o: trap.def$/;" t +trap_handler r_bash/src/lib.rs /^ pub fn trap_handler(arg1: ::std::os::raw::c_int);$/;" f +trap_handler trap.c /^trap_handler (sig)$/;" f +trap_handler_string trap.c /^trap_handler_string (sig)$/;" f file: +trap_if_untrapped trap.c /^trap_if_untrapped (sig, command)$/;" f file: +trap_list builtins_rust/source/src/lib.rs /^ static trap_list: [*mut c_char; 68];$/;" v +trap_list builtins_rust/trap/src/intercdep.rs /^ pub static trap_list: [*mut c_char; BASH_NSIG as usize];$/;" v +trap_list r_bash/src/lib.rs /^ pub static mut trap_list: [*mut ::std::os::raw::c_char; 0usize];$/;" v +trap_list r_glob/src/lib.rs /^ pub static mut trap_list: [*mut ::std::os::raw::c_char; 0usize];$/;" v +trap_list r_jobs/src/lib.rs /^ static mut trap_list: [*mut c_char; 0];$/;" v +trap_list r_readline/src/lib.rs /^ pub static mut trap_list: [*mut ::std::os::raw::c_char; 0usize];$/;" v +trap_list trap.c /^char *trap_list[BASH_NSIG];$/;" v typeref:typename:char * [] +trap_saved_exit_value builtins_rust/common/src/lib.rs /^ static trap_saved_exit_value: i32;$/;" v +trap_saved_exit_value builtins_rust/exit/src/lib.rs /^ static mut trap_saved_exit_value: i32;$/;" v +trap_saved_exit_value r_bash/src/lib.rs /^ pub static mut trap_saved_exit_value: ::std::os::raw::c_int;$/;" v +trap_saved_exit_value r_glob/src/lib.rs /^ pub static mut trap_saved_exit_value: ::std::os::raw::c_int;$/;" v +trap_saved_exit_value r_readline/src/lib.rs /^ pub static mut trap_saved_exit_value: ::std::os::raw::c_int;$/;" v +trap_saved_exit_value trap.c /^int trap_saved_exit_value;$/;" v typeref:typename:int +trap_to_sighandler r_bash/src/lib.rs /^ pub fn trap_to_sighandler(arg1: ::std::os::raw::c_int) -> SigHandler;$/;" f +trap_to_sighandler trap.c /^trap_to_sighandler (sig)$/;" f +trapno builtins_rust/wait/src/signal.rs /^ pub trapno: __uint64_t,$/;" m struct:sigcontext +trapno r_bash/src/lib.rs /^ pub trapno: __uint64_t,$/;" m struct:sigcontext +trapno r_glob/src/lib.rs /^ pub trapno: __uint64_t,$/;" m struct:sigcontext +trapno r_readline/src/lib.rs /^ pub trapno: __uint64_t,$/;" m struct:sigcontext +trapno vendor/libc/src/unix/solarish/mod.rs /^ trapno: ::c_int,$/;" m struct:siginfo_fault +trapped_signal_received builtins_rust/read/src/intercdep.rs /^ pub static trapped_signal_received : c_int;$/;" v +trapped_signal_received r_bash/src/lib.rs /^ pub static mut trapped_signal_received: ::std::os::raw::c_int;$/;" v +trapped_signal_received r_glob/src/lib.rs /^ pub static mut trapped_signal_received: ::std::os::raw::c_int;$/;" v +trapped_signal_received r_readline/src/lib.rs /^ pub static mut trapped_signal_received: ::std::os::raw::c_int;$/;" v +trapped_signal_received trap.c /^int trapped_signal_received;$/;" v typeref:typename:int +travelled vendor/fluent-bundle/src/resolver/scope.rs /^ travelled: smallvec::SmallVec<[&'scope ast::Pattern<&'scope str>; 2]>,$/;" m struct:Scope +trie vendor/unicode-ident/benches/xid.rs /^mod trie;$/;" n +trie vendor/unicode-ident/tests/compare.rs /^mod trie;$/;" n +trie vendor/unicode-ident/tests/static_size.rs /^ mod trie;$/;" n function:test_trieset_size +trie vendor/unicode-ident/tests/trie/mod.rs /^mod trie;$/;" n +trim vendor/fluent-syntax/src/parser/slice.rs /^ fn trim(&mut self) {$/;" P implementation:String +trim vendor/fluent-syntax/src/parser/slice.rs /^ fn trim(&mut self) {$/;" P implementation:str +trim vendor/fluent-syntax/src/parser/slice.rs /^ fn trim(&mut self);$/;" P interface:Slice +trim_pathname general.c /^trim_pathname (name, maxlen)$/;" f +trim_pathname r_bash/src/lib.rs /^ pub fn trim_pathname($/;" f +trim_pathname r_glob/src/lib.rs /^ pub fn trim_pathname($/;" f +trim_pathname r_readline/src/lib.rs /^ pub fn trim_pathname($/;" f +triple vendor/smallvec/src/lib.rs /^ fn triple(&self) -> (*const A::Item, usize, usize) {$/;" P implementation:SmallVec +triple_mut vendor/smallvec/src/lib.rs /^ fn triple_mut(&mut self) -> (*mut A::Item, &mut usize, usize) {$/;" P implementation:SmallVec +trivial_bounds vendor/pin-project-lite/tests/test.rs /^fn trivial_bounds() {$/;" f +trivial_fn_impls vendor/futures-util/src/fns.rs /^macro_rules! trivial_fn_impls {$/;" M +true lib/intl/relocatable.c /^#define true /;" d file: +true lib/readline/colors.h /^# define true /;" d +true_case builtins_rust/cd/src/lib.rs /^ true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/command/src/lib.rs /^ pub true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/common/src/lib.rs /^ true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/complete/src/lib.rs /^ true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/declare/src/lib.rs /^ true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/fc/src/lib.rs /^ true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/fg_bg/src/lib.rs /^ true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/getopts/src/lib.rs /^ true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/jobs/src/lib.rs /^ true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/kill/src/intercdep.rs /^ pub true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/pushd/src/lib.rs /^ true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/setattr/src/intercdep.rs /^ pub true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/source/src/lib.rs /^ true_case: *mut COMMAND,$/;" m struct:if_com +true_case builtins_rust/type/src/lib.rs /^ true_case: *mut COMMAND,$/;" m struct:if_com +true_case command.h /^ COMMAND *true_case; \/* What to do if the test returned non-zero. *\/$/;" m struct:if_com typeref:typename:COMMAND * +true_case r_bash/src/lib.rs /^ pub true_case: *mut COMMAND,$/;" m struct:if_com +true_case r_glob/src/lib.rs /^ pub true_case: *mut COMMAND,$/;" m struct:if_com +true_case r_readline/src/lib.rs /^ pub true_case: *mut COMMAND,$/;" m struct:if_com +truncate r_bash/src/lib.rs /^ pub fn truncate($/;" f +truncate r_glob/src/lib.rs /^ pub fn truncate($/;" f +truncate r_readline/src/lib.rs /^ pub fn truncate($/;" f +truncate vendor/libc/src/vxworks/mod.rs /^ pub fn truncate(path: *const c_char, length: off_t) -> ::c_int;$/;" f +truncate vendor/libc/src/wasi.rs /^ pub fn truncate(path: *const c_char, length: off_t) -> ::c_int;$/;" f +truncate vendor/smallvec/src/lib.rs /^ pub fn truncate(&mut self, len: usize) {$/;" P implementation:SmallVec +truncate64 r_bash/src/lib.rs /^ pub fn truncate64($/;" f +truncate64 r_glob/src/lib.rs /^ pub fn truncate64($/;" f +truncate64 r_readline/src/lib.rs /^ pub fn truncate64($/;" f +truncate64 vendor/libc/src/unix/linux_like/mod.rs /^ pub fn truncate64(path: *const c_char, length: off64_t) -> ::c_int;$/;" f +try vendor/autocfg/src/lib.rs /^macro_rules! try {$/;" M +try_borrow_mut vendor/fluent-fallback/src/pin_cell/mod.rs /^ pub fn try_borrow_mut<'a>(self: Pin<&'a Self>) -> Result, BorrowMutError> {$/;" P implementation:PinCell +try_buffer_unordered vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_buffer_unordered(self, n: usize) -> TryBufferUnordered$/;" P interface:TryStreamExt +try_buffer_unordered vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_buffer_unordered;$/;" n +try_buffered vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_buffered(self, n: usize) -> TryBuffered$/;" P interface:TryStreamExt +try_buffered vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_buffered;$/;" n +try_chunks vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_chunks(self, capacity: usize) -> TryChunks$/;" P interface:TryStreamExt +try_chunks vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_chunks;$/;" n +try_collect vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_collect>(self) -> TryCollect$/;" P interface:TryStreamExt +try_collect vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_collect;$/;" n +try_concat vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_concat(self) -> TryConcat$/;" P interface:TryStreamExt +try_concat vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_concat;$/;" n +try_empty_buffer vendor/futures-util/src/sink/buffer.rs /^ fn try_empty_buffer(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll(self, f: F) -> TryFilter$/;" P interface:TryStreamExt +try_filter vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_filter;$/;" n +try_filter_map vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_filter_map(self, f: F) -> TryFilterMap$/;" P interface:TryStreamExt +try_filter_map vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_filter_map;$/;" n +try_filter_map_after_err vendor/futures/tests/stream_try_stream.rs /^fn try_filter_map_after_err() {$/;" f +try_flatten vendor/futures-util/src/future/try_future/mod.rs /^ fn try_flatten(self) -> TryFlatten$/;" P interface:TryFutureExt +try_flatten vendor/futures-util/src/future/try_future/mod.rs /^mod try_flatten;$/;" n +try_flatten vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_flatten(self) -> TryFlatten$/;" P interface:TryStreamExt +try_flatten vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_flatten;$/;" n +try_flatten_err vendor/futures-util/src/future/try_future/mod.rs /^mod try_flatten_err;$/;" n +try_flatten_stream vendor/futures-util/src/future/try_future/mod.rs /^ fn try_flatten_stream(self) -> TryFlattenStream$/;" P interface:TryFutureExt +try_fold vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_fold(self, init: T, f: F) -> TryFold$/;" P interface:TryStreamExt +try_fold vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_fold;$/;" n +try_for_each vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_for_each(self, f: F) -> TryForEach$/;" P interface:TryStreamExt +try_for_each vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_for_each;$/;" n +try_for_each_concurrent vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_for_each_concurrent($/;" P interface:TryStreamExt +try_for_each_concurrent vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_for_each_concurrent;$/;" n +try_from vendor/intl_pluralrules/src/operands.rs /^ fn try_from(input: &'a str) -> Result {$/;" P implementation:PluralOperands +try_from vendor/nix/src/errno.rs /^ fn try_from(ioerror: io::Error) -> std::result::Result {$/;" P implementation:Errno +try_from vendor/nix/src/sys/termios.rs /^ fn try_from() {$/;" f module:test +try_from vendor/unic-langid-impl/src/subtags/language.rs /^ fn try_from(v: Option) -> Result {$/;" f +try_from_iter vendor/unic-langid-impl/src/lib.rs /^ pub fn try_from_iter<'a>($/;" P implementation:LanguageIdentifier +try_future vendor/futures-util/src/future/mod.rs /^mod try_future;$/;" n +try_grow vendor/smallvec/src/lib.rs /^ pub fn try_grow(&mut self, new_cap: usize) -> Result<(), CollectionAllocErr> {$/;" P implementation:SmallVec +try_insert vendor/once_cell/src/lib.rs /^ pub fn try_insert(&self, value: T) -> Result<&T, (&T, T)> {$/;" P implementation:sync::OnceCell +try_insert vendor/once_cell/src/lib.rs /^ pub fn try_insert(&self, value: T) -> Result<&T, (&T, T)> {$/;" P implementation:unsync::OnceCell +try_join vendor/futures-macro/src/join.rs /^pub(crate) fn try_join(input: TokenStream) -> TokenStream {$/;" f +try_join vendor/futures-util/src/future/mod.rs /^mod try_join;$/;" n +try_join vendor/futures-util/src/future/try_join.rs /^pub fn try_join(future1: Fut1, future2: Fut2) -> TryJoin$/;" f +try_join vendor/futures/tests/macro_comma_support.rs /^fn try_join() {$/;" f +try_join3 vendor/futures-util/src/future/try_join.rs /^pub fn try_join3($/;" f +try_join4 vendor/futures-util/src/future/try_join.rs /^pub fn try_join4($/;" f +try_join5 vendor/futures-util/src/future/try_join.rs /^pub fn try_join5($/;" f +try_join_all vendor/futures-util/src/future/mod.rs /^mod try_join_all;$/;" n +try_join_all vendor/futures-util/src/future/try_join_all.rs /^pub fn try_join_all(iter: I) -> TryJoinAll$/;" f +try_join_all_from_iter vendor/futures/tests/future_try_join_all.rs /^fn try_join_all_from_iter() {$/;" f +try_join_all_iter_lifetime vendor/futures/tests/future_try_join_all.rs /^fn try_join_all_iter_lifetime() {$/;" f +try_join_doesnt_require_unpin vendor/futures/tests/async_await_macros.rs /^fn try_join_doesnt_require_unpin() {$/;" f +try_join_internal vendor/futures-macro/src/lib.rs /^pub fn try_join_internal(input: TokenStream) -> TokenStream {$/;" f +try_join_never_error vendor/futures/tests/try_join.rs /^fn try_join_never_error() {$/;" f +try_join_never_ok vendor/futures/tests/try_join.rs /^fn try_join_never_ok() {$/;" f +try_join_size vendor/futures/tests/async_await_macros.rs /^fn try_join_size() {$/;" f +try_lock vendor/futures-channel/src/lock.rs /^ pub(crate) fn try_lock(&self) -> Option> {$/;" P implementation:Lock +try_lock vendor/futures-util/src/lock/mutex.rs /^ pub fn try_lock(&self) -> Option> {$/;" P implementation:Mutex +try_lock_owned vendor/futures-util/src/lock/mutex.rs /^ pub fn try_lock_owned(self: &Arc) -> Option> {$/;" P implementation:Mutex +try_maybe_done vendor/futures-util/src/future/mod.rs /^mod try_maybe_done;$/;" n +try_maybe_done vendor/futures-util/src/future/try_maybe_done.rs /^pub fn try_maybe_done(future: Fut) -> TryMaybeDone {$/;" f +try_new vendor/fluent-bundle/src/resource.rs /^ pub fn try_new(source: String) -> Result)> {$/;" P implementation:FluentResource +try_next vendor/futures-channel/src/mpsc/mod.rs /^ pub fn try_next(&mut self) -> Result, TryRecvError> {$/;" P implementation:Receiver +try_next vendor/futures-channel/src/mpsc/mod.rs /^ pub fn try_next(&mut self) -> Result, TryRecvError> {$/;" P implementation:UnboundedReceiver +try_next vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_next(&mut self) -> TryNext<'_, Self>$/;" P interface:TryStreamExt +try_next vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_next;$/;" n +try_number vendor/fluent-bundle/src/types/mod.rs /^ pub fn try_number(v: S) -> Self {$/;" P implementation:FluentValue +try_parse vendor/async-trait/src/args.rs /^fn try_parse(input: ParseStream) -> Result {$/;" f +try_poll vendor/futures-core/src/future.rs /^ fn try_poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll, cx: &mut Context<'_>) -> Poll {$/;" f +try_poll vendor/futures-util/src/abortable.rs /^ fn try_poll($/;" P implementation:Abortable +try_poll_next vendor/futures-core/src/stream.rs /^ fn try_poll_next($/;" P interface:TryStream +try_poll_next vendor/futures-core/src/stream.rs /^ fn try_poll_next($/;" f +try_poll_next_unpin vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_poll_next_unpin($/;" P interface:TryStreamExt +try_poll_unpin vendor/futures-util/src/future/try_future/mod.rs /^ fn try_poll_unpin(&mut self, cx: &mut Context<'_>) -> Poll>$/;" P interface:TryFutureExt +try_recv vendor/futures-channel/src/oneshot.rs /^ fn try_recv(&self) -> Result, Canceled> {$/;" P implementation:Inner +try_recv vendor/futures-channel/src/oneshot.rs /^ pub fn try_recv(&mut self) -> Result, Canceled> {$/;" P implementation:Receiver +try_remove vendor/slab/src/lib.rs /^ pub fn try_remove(&mut self, key: usize) -> Option {$/;" P implementation:Slab +try_remove vendor/slab/tests/slab.rs /^fn try_remove() {$/;" f +try_reserve vendor/smallvec/src/lib.rs /^ pub fn try_reserve(&mut self, additional: usize) -> Result<(), CollectionAllocErr> {$/;" P implementation:SmallVec +try_reserve_exact vendor/smallvec/src/lib.rs /^ pub fn try_reserve_exact(&mut self, additional: usize) -> Result<(), CollectionAllocErr> {$/;" P implementation:SmallVec +try_run_one vendor/futures-executor/src/local_pool.rs /^ pub fn try_run_one(&mut self) -> bool {$/;" P implementation:LocalPool +try_run_one_executes_one_ready vendor/futures-executor/tests/local_pool.rs /^fn try_run_one_executes_one_ready() {$/;" f +try_run_one_returns_if_empty vendor/futures-executor/tests/local_pool.rs /^fn try_run_one_returns_if_empty() {$/;" f +try_run_one_returns_on_no_progress vendor/futures-executor/tests/local_pool.rs /^fn try_run_one_returns_on_no_progress() {$/;" f +try_run_one_runs_sub_futures vendor/futures-executor/tests/local_pool.rs /^fn try_run_one_runs_sub_futures() {$/;" f +try_select vendor/futures-util/src/future/mod.rs /^mod try_select;$/;" n +try_select vendor/futures-util/src/future/try_select.rs /^pub fn try_select(future1: A, future2: B) -> TrySelect$/;" f +try_send vendor/futures-channel/src/mpsc/mod.rs /^ fn try_send(&mut self, msg: T) -> Result<(), TrySendError> {$/;" P implementation:BoundedSenderInner +try_send vendor/futures-channel/src/mpsc/mod.rs /^ pub fn try_send(&mut self, msg: T) -> Result<(), TrySendError> {$/;" P implementation:Sender +try_send_1 vendor/futures-channel/tests/mpsc.rs /^fn try_send_1() {$/;" f +try_send_2 vendor/futures-channel/tests/mpsc.rs /^fn try_send_2() {$/;" f +try_send_fail vendor/futures-channel/tests/mpsc.rs /^fn try_send_fail() {$/;" f +try_send_recv vendor/futures-channel/tests/mpsc.rs /^fn try_send_recv() {$/;" f +try_skip_while vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_skip_while(self, f: F) -> TrySkipWhile$/;" P interface:TryStreamExt +try_skip_while vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_skip_while;$/;" n +try_skip_while_after_err vendor/futures/tests/stream_try_stream.rs /^fn try_skip_while_after_err() {$/;" f +try_start_send vendor/futures-util/src/sink/send_all.rs /^ fn try_start_send($/;" f +try_stream vendor/futures-util/src/stream/mod.rs /^mod try_stream;$/;" n +try_take_while vendor/futures-util/src/stream/try_stream/mod.rs /^ fn try_take_while(self, f: F) -> TryTakeWhile$/;" P interface:TryStreamExt +try_take_while vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_take_while;$/;" n +try_take_while_after_err vendor/futures/tests/stream_try_stream.rs /^fn try_take_while_after_err() {$/;" f +try_unfold vendor/futures-util/src/stream/try_stream/mod.rs /^mod try_unfold;$/;" n +try_unfold vendor/futures-util/src/stream/try_stream/try_unfold.rs /^pub fn try_unfold(init: T, f: F) -> TryUnfold$/;" f +try_with_interrupt vendor/futures-util/src/io/allow_std.rs /^macro_rules! try_with_interrupt {$/;" M +tsbrk lib/malloc/mstats.h /^ bits32_t tsbrk;$/;" m struct:_malstats typeref:typename:bits32_t +tsearch lib/intl/dcigettext.c /^# define tsearch /;" d file: +tt vendor/syn/src/lib.rs /^mod tt;$/;" n +tt_setcbreak lib/sh/shtty.c /^tt_setcbreak(ttp)$/;" f +tt_setcbreak r_bash/src/lib.rs /^ pub fn tt_setcbreak(arg1: *mut termios) -> ::std::os::raw::c_int;$/;" f +tt_seteightbit lib/sh/shtty.c /^tt_seteightbit (ttp)$/;" f +tt_seteightbit r_bash/src/lib.rs /^ pub fn tt_seteightbit(arg1: *mut termios) -> ::std::os::raw::c_int;$/;" f +tt_setnocanon lib/sh/shtty.c /^tt_setnocanon (ttp)$/;" f +tt_setnocanon r_bash/src/lib.rs /^ pub fn tt_setnocanon(arg1: *mut termios) -> ::std::os::raw::c_int;$/;" f +tt_setnoecho lib/sh/shtty.c /^tt_setnoecho(ttp)$/;" f +tt_setnoecho r_bash/src/lib.rs /^ pub fn tt_setnoecho(arg1: *mut termios) -> ::std::os::raw::c_int;$/;" f +tt_setonechar lib/sh/shtty.c /^tt_setonechar(ttp)$/;" f +tt_setonechar r_bash/src/lib.rs /^ pub fn tt_setonechar(arg1: *mut termios) -> ::std::os::raw::c_int;$/;" f +ttattr lib/sh/shtty.c /^ttattr (fd)$/;" f +ttattr r_bash/src/lib.rs /^ pub fn ttattr(arg1: ::std::os::raw::c_int) -> *mut termios;$/;" f +ttcbreak lib/sh/shtty.c /^ttcbreak ()$/;" f typeref:typename:int +ttcbreak r_bash/src/lib.rs /^ pub fn ttcbreak() -> ::std::os::raw::c_int;$/;" f +tteightbit lib/sh/shtty.c /^tteightbit ()$/;" f typeref:typename:int +tteightbit r_bash/src/lib.rs /^ pub fn tteightbit() -> ::std::os::raw::c_int;$/;" f +ttfd_cbreak builtins_rust/read/src/intercdep.rs /^ pub fn ttfd_cbreak(fd: c_int, ttp: *mut libc::termios) -> c_int;$/;" f +ttfd_cbreak lib/sh/shtty.c /^ttfd_cbreak (fd, ttp)$/;" f +ttfd_cbreak r_bash/src/lib.rs /^ pub fn ttfd_cbreak(arg1: ::std::os::raw::c_int, arg2: *mut termios) -> ::std::os::raw::c_int/;" f +ttfd_eightbit lib/sh/shtty.c /^ttfd_eightbit (fd, ttp)$/;" f +ttfd_eightbit r_bash/src/lib.rs /^ pub fn ttfd_eightbit(arg1: ::std::os::raw::c_int, arg2: *mut termios) -> ::std::os::raw::c_i/;" f +ttfd_nocanon lib/sh/shtty.c /^ttfd_nocanon (fd, ttp)$/;" f +ttfd_nocanon r_bash/src/lib.rs /^ pub fn ttfd_nocanon(arg1: ::std::os::raw::c_int, arg2: *mut termios) -> ::std::os::raw::c_in/;" f +ttfd_noecho builtins_rust/read/src/intercdep.rs /^ pub fn ttfd_noecho($/;" f +ttfd_noecho lib/sh/shtty.c /^ttfd_noecho (fd, ttp)$/;" f +ttfd_noecho r_bash/src/lib.rs /^ pub fn ttfd_noecho(arg1: ::std::os::raw::c_int, arg2: *mut termios) -> ::std::os::raw::c_int/;" f +ttfd_onechar builtins_rust/read/src/intercdep.rs /^ pub fn ttfd_onechar(fd: c_int, ttp: *mut libc::termios) -> c_int;$/;" f +ttfd_onechar lib/sh/shtty.c /^ttfd_onechar (fd, ttp)$/;" f +ttfd_onechar r_bash/src/lib.rs /^ pub fn ttfd_onechar(arg1: ::std::os::raw::c_int, arg2: *mut termios) -> ::std::os::raw::c_in/;" f +ttgetattr builtins_rust/read/src/intercdep.rs /^ pub fn ttgetattr(arg1: c_int, arg2: *mut libc::termios) -> c_int;$/;" f +ttgetattr lib/sh/shtty.c /^ttgetattr(fd, ttp)$/;" f +ttgetattr r_bash/src/lib.rs /^ pub fn ttgetattr(arg1: ::std::os::raw::c_int, arg2: *mut termios) -> ::std::os::raw::c_int;$/;" f +ttin lib/sh/shtty.c /^static TTYSTRUCT ttin, ttout;$/;" v typeref:typename:TTYSTRUCT file: +ttnocanon lib/sh/shtty.c /^ttnocanon ()$/;" f typeref:typename:int +ttnocanon r_bash/src/lib.rs /^ pub fn ttnocanon() -> ::std::os::raw::c_int;$/;" f +ttnoecho lib/sh/shtty.c /^ttnoecho ()$/;" f typeref:typename:int +ttnoecho r_bash/src/lib.rs /^ pub fn ttnoecho() -> ::std::os::raw::c_int;$/;" f +ttonechar lib/sh/shtty.c /^ttonechar ()$/;" f typeref:typename:int +ttonechar r_bash/src/lib.rs /^ pub fn ttonechar() -> ::std::os::raw::c_int;$/;" f +ttout lib/sh/shtty.c /^static TTYSTRUCT ttin, ttout;$/;" v typeref:typename:TTYSTRUCT file: +ttrestore lib/sh/shtty.c /^ttrestore()$/;" f typeref:typename:void +ttrestore r_bash/src/lib.rs /^ pub fn ttrestore();$/;" f +ttsave lib/sh/shtty.c /^ttsave()$/;" f typeref:typename:void +ttsave r_bash/src/lib.rs /^ pub fn ttsave();$/;" f +ttsaved lib/sh/shtty.c /^static int ttsaved = 0;$/;" v typeref:typename:int file: +ttsetattr builtins_rust/read/src/intercdep.rs /^ pub fn ttsetattr(arg1: c_int, arg2: *mut libc::termios) -> c_int;$/;" f +ttsetattr lib/sh/shtty.c /^ttsetattr(fd, ttp)$/;" f +ttsetattr r_bash/src/lib.rs /^ pub fn ttsetattr(arg1: ::std::os::raw::c_int, arg2: *mut termios) -> ::std::os::raw::c_int;$/;" f +ttspeeds jobs.c /^static int ttspeeds[] =$/;" v typeref:typename:int[] file: +tty_modified builtins_rust/read/src/lib.rs /^static mut tty_modified: c_int = 0;$/;" v +tty_save builtins_rust/read/src/lib.rs /^pub struct tty_save {$/;" s +tty_sigs_disabled lib/readline/rltty.c /^static int tty_sigs_disabled = 0;$/;" v typeref:typename:int file: +ttyname r_bash/src/lib.rs /^ pub fn ttyname(__fd: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +ttyname r_glob/src/lib.rs /^ pub fn ttyname(__fd: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +ttyname r_readline/src/lib.rs /^ pub fn ttyname(__fd: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char;$/;" f +ttyname vendor/libc/src/fuchsia/mod.rs /^ pub fn ttyname(fd: ::c_int) -> *mut c_char;$/;" f +ttyname vendor/libc/src/unix/mod.rs /^ pub fn ttyname(fd: ::c_int) -> *mut c_char;$/;" f +ttyname vendor/libc/src/vxworks/mod.rs /^ pub fn ttyname(fd: ::c_int) -> *mut c_char;$/;" f +ttyname_r r_bash/src/lib.rs /^ pub fn ttyname_r($/;" f +ttyname_r r_glob/src/lib.rs /^ pub fn ttyname_r($/;" f +ttyname_r r_readline/src/lib.rs /^ pub fn ttyname_r($/;" f +ttyname_r vendor/libc/src/unix/mod.rs /^ pub fn ttyname_r(fd: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;$/;" f +ttyrestore builtins_rust/read/src/lib.rs /^unsafe extern "C" fn ttyrestore(ttp: *mut tty_save) {$/;" f +ttyslot r_bash/src/lib.rs /^ pub fn ttyslot() -> ::std::os::raw::c_int;$/;" f +ttyslot r_glob/src/lib.rs /^ pub fn ttyslot() -> ::std::os::raw::c_int;$/;" f +ttyslot r_readline/src/lib.rs /^ pub fn ttyslot() -> ::std::os::raw::c_int;$/;" f +tuple_indexing vendor/proc-macro2/tests/test.rs /^fn tuple_indexing() {$/;" f +tuple_struct vendor/memoffset/src/offset_of.rs /^ fn tuple_struct() {$/;" f module:tests +tv_nsec builtins_rust/wait/src/signal.rs /^ pub tv_nsec: __syscall_slong_t,$/;" m struct:timespec +tv_nsec include/stat-time.h /^ long int tv_nsec;$/;" m struct:timespec typeref:typename:long int +tv_nsec r_bash/src/lib.rs /^ pub tv_nsec: __syscall_slong_t,$/;" m struct:timespec +tv_nsec r_bash/src/lib.rs /^ pub tv_nsec: __uint32_t,$/;" m struct:statx_timestamp +tv_nsec r_glob/src/lib.rs /^ pub tv_nsec: __syscall_slong_t,$/;" m struct:timespec +tv_nsec r_readline/src/lib.rs /^ pub tv_nsec: __syscall_slong_t,$/;" m struct:timespec +tv_nsec r_readline/src/lib.rs /^ pub tv_nsec: __uint32_t,$/;" m struct:statx_timestamp +tv_nsec vendor/nix/src/sys/time.rs /^ pub const fn tv_nsec(&self) -> timespec_tv_nsec_t {$/;" P implementation:TimeSpec +tv_sec builtins_rust/wait/src/signal.rs /^ pub tv_sec: __time_t,$/;" m struct:timespec +tv_sec include/posixtime.h /^ time_t tv_sec;$/;" m struct:timeval typeref:typename:time_t +tv_sec include/stat-time.h /^ time_t tv_sec;$/;" m struct:timespec typeref:typename:time_t +tv_sec r_bash/src/lib.rs /^ pub tv_sec: __int64_t,$/;" m struct:statx_timestamp +tv_sec r_bash/src/lib.rs /^ pub tv_sec: __time_t,$/;" m struct:timespec +tv_sec r_bash/src/lib.rs /^ pub tv_sec: __time_t,$/;" m struct:timeval +tv_sec r_glob/src/lib.rs /^ pub tv_sec: __time_t,$/;" m struct:timespec +tv_sec r_glob/src/lib.rs /^ pub tv_sec: __time_t,$/;" m struct:timeval +tv_sec r_readline/src/lib.rs /^ pub tv_sec: __int64_t,$/;" m struct:statx_timestamp +tv_sec r_readline/src/lib.rs /^ pub tv_sec: __time_t,$/;" m struct:timespec +tv_sec r_readline/src/lib.rs /^ pub tv_sec: __time_t,$/;" m struct:timeval +tv_sec vendor/nix/src/sys/time.rs /^ pub const fn tv_sec(&self) -> time_t {$/;" P implementation:TimeSpec +tv_sec vendor/nix/src/sys/time.rs /^ pub const fn tv_sec(&self) -> time_t {$/;" P implementation:TimeVal +tv_usec include/posixtime.h /^ long int tv_usec;$/;" m struct:timeval typeref:typename:long int +tv_usec r_bash/src/lib.rs /^ pub tv_usec: __suseconds_t,$/;" m struct:timeval +tv_usec r_glob/src/lib.rs /^ pub tv_usec: __suseconds_t,$/;" m struct:timeval +tv_usec r_readline/src/lib.rs /^ pub tv_usec: __suseconds_t,$/;" m struct:timeval +tv_usec vendor/nix/src/sys/time.rs /^ pub const fn tv_usec(&self) -> suseconds_t {$/;" P implementation:TimeVal +tvlist_ind variables.c /^int tvlist_ind;$/;" v typeref:typename:int +tvout vendor/winapi/src/shared/mod.rs /^#[cfg(feature = "tvout")] pub mod tvout;$/;" n +tw builtins_rust/printf/src/lib.rs /^static mut tw: c_long = 0;$/;" v +two vendor/memchr/src/tests/memchr/testdata.rs /^ pub fn two Option>($/;" P implementation:MemchrTest +two_arguments test.c /^two_arguments ()$/;" f typeref:typename:int file: +two_threads vendor/futures/tests/future_shared.rs /^fn two_threads() {$/;" f +twoway vendor/memchr/src/memmem/mod.rs /^mod twoway;$/;" n +twoway_find vendor/memchr/src/memmem/twoway.rs /^ pub(crate) fn twoway_find($/;" f module:simpletests +twoway_rfind vendor/memchr/src/memmem/twoway.rs /^ pub(crate) fn twoway_rfind($/;" f module:simpletests +tx vendor/futures-channel/benches/sync_mpsc.rs /^ tx: Sender,$/;" m struct:TestSender +tx vendor/futures-executor/benches/thread_notify.rs /^ tx: mpsc::SyncSender,$/;" m struct:thread_yield_multi_thread::Yield +tx vendor/futures-executor/src/thread_pool.rs /^ tx: Mutex>,$/;" m struct:PoolState +tx_buf vendor/nix/test/sys/test_ioctl.rs /^ tx_buf: u64,$/;" m struct:linux_ioctls::spi_ioc_transfer +tx_close_gets_none vendor/futures-channel/tests/mpsc.rs /^fn tx_close_gets_none() {$/;" f +tx_nbits vendor/nix/test/sys/test_ioctl.rs /^ tx_nbits: u8,$/;" m struct:linux_ioctls::spi_ioc_transfer +tx_task vendor/futures-channel/src/oneshot.rs /^ tx_task: Lock>,$/;" m struct:Inner +ty vendor/syn/src/item.rs /^ ty: Option<(Token![=], Type)>,$/;" m struct:parsing::FlexibleItemType +ty vendor/syn/src/lib.rs /^mod ty;$/;" n +ty vendor/thiserror-impl/src/ast.rs /^ pub ty: &'a Type,$/;" m struct:Field +type array.h /^ enum atype type;$/;" m struct:array typeref:enum:atype +type command.h /^ enum command_type type; \/* FOR CASE WHILE IF CONNECTION or SIMPLE. *\/$/;" m struct:command typeref:enum:command_type +type command.h /^ int type;$/;" m struct:cond_com typeref:typename:int +type input.h /^ enum stream_type type;$/;" m struct:__anon9f26d24b0208 typeref:enum:stream_type +type lib/readline/keymaps.h /^ char type;$/;" m struct:_keymap_entry typeref:typename:char +type lib/readline/rlprivate.h /^ int type;$/;" m struct:__rl_search_context typeref:typename:int +type shell.c /^ int type;$/;" m struct:__anon92221f0e0108 typeref:typename:int file: +type-map vendor/type-map/README.md /^# type-map$/;" c +type.o builtins/Makefile.in /^type.o: $(topdir)\/command.h ..\/config.h $(BASHINCDIR)\/memalloc.h$/;" t +type.o builtins/Makefile.in /^type.o: $(topdir)\/dispose_cmd.h $(topdir)\/make_cmd.h $(topdir)\/subst.h$/;" t +type.o builtins/Makefile.in /^type.o: $(topdir)\/error.h $(topdir)\/general.h $(topdir)\/xmalloc.h$/;" t +type.o builtins/Makefile.in /^type.o: $(topdir)\/execute_cmd.h $(topdir)\/parser.h$/;" t +type.o builtins/Makefile.in /^type.o: $(topdir)\/externs.h $(topdir)\/hashcmd.h ..\/pathnames.h$/;" t +type.o builtins/Makefile.in /^type.o: $(topdir)\/quit.h $(srcdir)\/common.h $(BASHINCDIR)\/maxpath.h $(topdir)\/sig.h$/;" t +type.o builtins/Makefile.in /^type.o: $(topdir)\/shell.h $(topdir)\/syntax.h $(topdir)\/unwind_prot.h $(topdir)\/variables.h $/;" t +type.o builtins/Makefile.in /^type.o: ${topdir}\/bashintl.h ${LIBINTL_H} $(BASHINCDIR)\/gettext.h$/;" t +type.o builtins/Makefile.in /^type.o: type.def$/;" t +type_ builtins_rust/kill/src/intercdep.rs /^ pub type_: c_int,$/;" m struct:cond_com +type_ builtins_rust/kill/src/intercdep.rs /^ pub type_: command_type,$/;" m struct:command +type_ builtins_rust/mapfile/src/intercdep.rs /^ pub type_: atype,$/;" m struct:array +type_ builtins_rust/read/src/intercdep.rs /^ pub type_: atype,$/;" m struct:array +type_ builtins_rust/setattr/src/intercdep.rs /^ pub type_: c_int,$/;" m struct:cond_com +type_ builtins_rust/setattr/src/intercdep.rs /^ pub type_: command_type,$/;" m struct:command +type_ r_bash/src/lib.rs /^ pub type_: ::std::os::raw::c_int,$/;" m struct:cond_com +type_ r_bash/src/lib.rs /^ pub type_: __pid_type,$/;" m struct:f_owner_ex +type_ r_bash/src/lib.rs /^ pub type_: atype,$/;" m struct:array +type_ r_bash/src/lib.rs /^ pub type_: command_type,$/;" m struct:command +type_ r_bash/src/lib.rs /^ pub type_: stream_type,$/;" m struct:BASH_INPUT +type_ r_glob/src/lib.rs /^ pub type_: ::std::os::raw::c_int,$/;" m struct:cond_com +type_ r_glob/src/lib.rs /^ pub type_: atype,$/;" m struct:array +type_ r_glob/src/lib.rs /^ pub type_: command_type,$/;" m struct:command +type_ r_readline/src/lib.rs /^ pub type_: ::std::os::raw::c_char,$/;" m struct:_keymap_entry +type_ r_readline/src/lib.rs /^ pub type_: ::std::os::raw::c_int,$/;" m struct:__rl_search_context +type_ r_readline/src/lib.rs /^ pub type_: ::std::os::raw::c_int,$/;" m struct:cond_com +type_ r_readline/src/lib.rs /^ pub type_: atype,$/;" m struct:array +type_ r_readline/src/lib.rs /^ pub type_: command_type,$/;" m struct:command +type_0 builtins_rust/command/src/lib.rs /^ pub type_0: command_type,$/;" m struct:command +type_0 builtins_rust/command/src/lib.rs /^ pub type_0: libc::c_int,$/;" m struct:cond_com +type_c builtins_rust/cd/src/lib.rs /^ type_c: command_type,$/;" m struct:COMMAND +type_c builtins_rust/cd/src/lib.rs /^ type_c: libc::c_int,$/;" m struct:cond_com +type_c builtins_rust/common/src/lib.rs /^ type_c: command_type,$/;" m struct:COMMAND +type_c builtins_rust/common/src/lib.rs /^ type_c: libc::c_int,$/;" m struct:cond_com +type_c builtins_rust/complete/src/lib.rs /^ type_c: c_int,$/;" m struct:cond_com +type_c builtins_rust/complete/src/lib.rs /^ type_c: command_type,$/;" m struct:COMMAND +type_c builtins_rust/declare/src/lib.rs /^ type_c: command_type,$/;" m struct:COMMAND +type_c builtins_rust/declare/src/lib.rs /^ type_c: libc::c_int,$/;" m struct:cond_com +type_c builtins_rust/fc/src/lib.rs /^ type_c: command_type,$/;" m struct:COMMAND +type_c builtins_rust/fc/src/lib.rs /^ type_c: libc::c_int,$/;" m struct:cond_com +type_c builtins_rust/fg_bg/src/lib.rs /^ type_c: command_type,$/;" m struct:COMMAND +type_c builtins_rust/fg_bg/src/lib.rs /^ type_c: libc::c_int,$/;" m struct:cond_com +type_c builtins_rust/getopts/src/lib.rs /^ type_c: command_type,$/;" m struct:COMMAND +type_c builtins_rust/getopts/src/lib.rs /^ type_c: libc::c_int,$/;" m struct:cond_com +type_c builtins_rust/jobs/src/lib.rs /^ type_c: command_type,$/;" m struct:COMMAND +type_c builtins_rust/jobs/src/lib.rs /^ type_c: libc::c_int,$/;" m struct:cond_com +type_c builtins_rust/pushd/src/lib.rs /^ type_c: command_type,$/;" m struct:COMMAND +type_c builtins_rust/pushd/src/lib.rs /^ type_c: libc::c_int,$/;" m struct:cond_com +type_c builtins_rust/source/src/lib.rs /^ type_c: command_type,$/;" m struct:COMMAND +type_c builtins_rust/source/src/lib.rs /^ type_c: libc::c_int,$/;" m struct:cond_com +type_c builtins_rust/type/src/lib.rs /^ type_c: command_type,$/;" m struct:COMMAND +type_c builtins_rust/type/src/lib.rs /^ type_c: i32,$/;" m struct:cond_com +type_code vendor/libc/src/unix/haiku/native.rs /^pub type type_code = u32;$/;" t +type_is_backtrace vendor/thiserror-impl/src/prop.rs /^fn type_is_backtrace(ty: &Type) -> bool {$/;" f +type_is_option vendor/thiserror-impl/src/expand.rs /^fn type_is_option(ty: &Type) -> bool {$/;" f +type_of_event_filter vendor/nix/src/sys/event.rs /^type type_of_event_filter = i16;$/;" t +type_of_event_filter vendor/nix/src/sys/event.rs /^type type_of_event_filter = u32;$/;" t +type_of_event_flag vendor/nix/src/sys/event.rs /^pub type type_of_event_flag = u16;$/;" t +type_of_event_flag vendor/nix/src/sys/event.rs /^pub type type_of_event_flag = u32;$/;" t +type_of_file_flag vendor/nix/src/sys/stat.rs /^pub type type_of_file_flag = c_uint;$/;" t +type_of_file_flag vendor/nix/src/sys/stat.rs /^pub type type_of_file_flag = c_ulong;$/;" t +type_of_nchanges vendor/nix/src/sys/event.rs /^type type_of_nchanges = c_int;$/;" t +type_of_nchanges vendor/nix/src/sys/event.rs /^type type_of_nchanges = size_t;$/;" t +type_of_udata vendor/nix/src/sys/event.rs /^type type_of_udata = *mut libc::c_void;$/;" t +type_of_udata vendor/nix/src/sys/event.rs /^type type_of_udata = intptr_t;$/;" t +type_parameter_of_option vendor/thiserror-impl/src/expand.rs /^fn type_parameter_of_option(ty: &Type) -> Option<&Type> {$/;" f +type_params vendor/syn/src/generics.rs /^ pub fn type_params(&self) -> TypeParams {$/;" P implementation:Generics +type_params_mut vendor/syn/src/generics.rs /^ pub fn type_params_mut(&mut self) -> TypeParamsMut {$/;" P implementation:Generics +type_token vendor/syn/src/item.rs /^ type_token: Token![type],$/;" m struct:parsing::FlexibleItemType +types vendor/fluent-bundle/src/lib.rs /^pub mod types;$/;" n +types vendor/fluent-fallback/src/lib.rs /^pub mod types;$/;" n +types vendor/nix/src/sys/socket/addr.rs /^ mod types {$/;" n module:tests +tz_dsttime r_bash/src/lib.rs /^ pub tz_dsttime: ::std::os::raw::c_int,$/;" m struct:timezone +tz_dsttime r_glob/src/lib.rs /^ pub tz_dsttime: ::std::os::raw::c_int,$/;" m struct:timezone +tz_dsttime r_readline/src/lib.rs /^ pub tz_dsttime: ::std::os::raw::c_int,$/;" m struct:timezone +tz_minuteswest r_bash/src/lib.rs /^ pub tz_minuteswest: ::std::os::raw::c_int,$/;" m struct:timezone +tz_minuteswest r_glob/src/lib.rs /^ pub tz_minuteswest: ::std::os::raw::c_int,$/;" m struct:timezone +tz_minuteswest r_readline/src/lib.rs /^ pub tz_minuteswest: ::std::os::raw::c_int,$/;" m struct:timezone +tzname r_bash/src/lib.rs /^ pub static mut tzname: [*mut ::std::os::raw::c_char; 2usize];$/;" v +tzname r_readline/src/lib.rs /^ pub static mut tzname: [*mut ::std::os::raw::c_char; 2usize];$/;" v +tzset r_bash/src/lib.rs /^ pub fn tzset();$/;" f +tzset r_readline/src/lib.rs /^ pub fn tzset();$/;" f +u32 vendor/nix/src/sys/termios.rs /^impl From for u32 {$/;" c +u32 vendor/unic-langid-impl/src/subtags/region.rs /^impl From for u32 {$/;" c +u32 vendor/unic-langid-impl/src/subtags/script.rs /^impl From
    ' . + &t2h_anchor('', $href, $entry) . + '  ' . + $descr . + "
    ' . + $entry . + '' . $descr . + "
  • JfLAWC5P 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�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